pax_global_header00006660000000000000000000000064141157532700014517gustar00rootroot0000000000000052 comment=88410ec7a35e07fcd1bf62ad2527431735168f4a gambas-3.16.3/000077500000000000000000000000001411575327000130435ustar00rootroot00000000000000gambas-3.16.3/.gitignore000066400000000000000000000007711411575327000150400ustar00rootroot00000000000000Makefile 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 .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/*/ *~ gambas-3.16.3/.gitlab-ci.yml000066400000000000000000000424621411575327000155070ustar00rootroot00000000000000build:archlinux: image: archlinux:base before_script: - > pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime 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-webkit 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 - 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 gmime 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-webkit 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 - 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 postgresql-server-dev-11 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 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 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 - 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 postgresql-server-dev-13 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 postgresql-server-dev-13 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 postgresql-server-dev-13 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 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 - make -j$(nproc) - make install build:ubuntu-latest: image: ubuntu:latest 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 postgresql-server-dev-12 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-hirsute: image: ubuntu:hirsute 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 postgresql-server-dev-13 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 postgresql-server-dev-12 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 postgresql-server-dev-10 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 git 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 postgresql-server-dev-9.5 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 git 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 postgresql-server-dev-9.3 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 libgnome-keyring-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-qtwebkit-dev qt5-qtx11extras-dev qt5-qtwebengine-dev sdl2-dev sdl2_image-dev sdl2_mixer-dev sdl2_ttf-dev sdl_mixer-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-sqlite2 --disable-v4l --disable-gtkopengl --disable-zstd - 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 postgresql-server-devel webkit2gtk3-devel ncurses-devel script: - ./reconf-all - GAMBAS_CONFIG_FAILURE=1 ./configure -C - 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 libQt5WebKit5-devel libqt5-qtx11extras-devel libQt5WebKit5 libQt5WebKitWidgets-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 postgresql-server-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 - make -j$(nproc) - make install gambas-3.16.3/AUTHORS000066400000000000000000000176001411575327000141170ustar00rootroot00000000000000# # 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. gambas-3.16.3/CONTRIBUTING.md000066400000000000000000000177471411575327000153140ustar00rootroot00000000000000# 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. gambas-3.16.3/COPYING000066400000000000000000000432541411575327000141060ustar00rootroot00000000000000 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. gambas-3.16.3/ChangeLog000066400000000000000000000000001411575327000146030ustar00rootroot00000000000000gambas-3.16.3/INSTALL000066400000000000000000000000521411575327000140710ustar00rootroot00000000000000Visit https://gambaswiki.org/wiki/install gambas-3.16.3/Makefile.am000066400000000000000000000022341411575327000151000ustar00rootroot00000000000000SUBDIRS = \ 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 \ 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"`;) gambas-3.16.3/NEWS000066400000000000000000000000001411575327000135300ustar00rootroot00000000000000gambas-3.16.3/README000066400000000000000000000025131411575327000137240ustar00rootroot00000000000000WELCOME 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. If I forget some borrowed code in the list above, just tell me. Enjoy Gambas! -- Benoît gambas-3.16.3/README.commit000066400000000000000000000027361411575327000152220ustar00rootroot00000000000000STANDARD 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. gambas-3.16.3/README.md000066400000000000000000000040011411575327000143150ustar00rootroot00000000000000 # 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. If I forget some borrowed code in the list above, just tell me. Enjoy Gambas! -- Benoît gambas-3.16.3/TEMPLATE/000077500000000000000000000000001411575327000142565ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/README000066400000000000000000000022201411575327000151320ustar00rootroot00000000000000COMPONENT 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. gambas-3.16.3/TEMPLATE/TEMPLATE.c000066400000000000000000000017721411575327000156440ustar00rootroot00000000000000$/$*************************************************************************** ## __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$:$ gambas-3.16.3/TEMPLATE/TEMPLATE.conf000066400000000000000000000037141411575327000163450ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/TEMPLATE.cpp000066400000000000000000000017731411575327000162050ustar00rootroot00000000000000$/$*************************************************************************** ## __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##$:$ gambas-3.16.3/TEMPLATE/TEMPLATE.h000066400000000000000000000022001411575327000156340ustar00rootroot00000000000000$/$*************************************************************************** ## __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 */ gambas-3.16.3/TEMPLATE/conf/000077500000000000000000000000001411575327000152035ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/conf/gb.cairo.conf000066400000000000000000000035561411575327000175470ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.dbus.conf000066400000000000000000000032011411575327000173720ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.desktop.conf000066400000000000000000000031771411575327000201220ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.gmp.conf000066400000000000000000000033701411575327000172270ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.gsl.conf000066400000000000000000000035061411575327000172320ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.image.io.conf000066400000000000000000000032421411575327000201320ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.media.conf000066400000000000000000000032011411575327000175140ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.mime.conf000066400000000000000000000034001411575327000173650ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.net.pop3.conf000066400000000000000000000032011411575327000201030ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.net.smtp.conf000066400000000000000000000031721411575327000202140ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.openal.conf000066400000000000000000000035641411575327000177270ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/conf/gb.poppler.conf000066400000000000000000000037571411575327000201360ustar00rootroot00000000000000/* 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 gambas-3.16.3/TEMPLATE/make-component000077500000000000000000000040311411575327000171170ustar00rootroot00000000000000#!/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 gambas-3.16.3/TEMPLATE/template/000077500000000000000000000000001411575327000160715ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/template/AUTHORS000066400000000000000000000000001411575327000171270ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/template/ChangeLog000066400000000000000000000000001411575327000176310ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/template/Makefile.am000066400000000000000000000001371411575327000201260ustar00rootroot00000000000000ACLOCAL_AMFLAGS = -I m4 --install SUBDIRS = @__UNAME##_DIR@ EXTRA_DIST = reconf gambas.h gb*.h gambas-3.16.3/TEMPLATE/template/NEWS000066400000000000000000000000001411575327000165560ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/template/README000066400000000000000000000000001411575327000167370ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/template/SOURCES000066400000000000000000000000141411575327000171320ustar00rootroot00000000000000__SOURCES gambas-3.16.3/TEMPLATE/template/configure.ac000066400000000000000000000022331411575327000203570ustar00rootroot00000000000000dnl ---- 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 gambas-3.16.3/TEMPLATE/template/make-component000077500000000000000000000000671411575327000207370ustar00rootroot00000000000000$#$!/bin/sh cd src mv .component __COMPONENT.component gambas-3.16.3/TEMPLATE/template/src/000077500000000000000000000000001411575327000166605ustar00rootroot00000000000000gambas-3.16.3/TEMPLATE/template/src/.component000066400000000000000000000000341411575327000206600ustar00rootroot00000000000000[Component] Author= Alpha=1 gambas-3.16.3/TEMPLATE/template/src/Makefile.am000066400000000000000000000005221411575327000207130ustar00rootroot00000000000000COMPONENT = __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 gambas-3.16.3/TODO000066400000000000000000000050011411575327000135270ustar00rootroot00000000000000TODO 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. gambas-3.16.3/VERSION000066400000000000000000000000071411575327000141100ustar00rootroot000000000000003.16.3 gambas-3.16.3/acinclude.m4000066400000000000000000001250331411575327000152400ustar00rootroot00000000000000####################################################################################### ## ## 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 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_HEADER([config.h]) AC_PREFIX_DEFAULT(/usr) 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], [ AC_LIBTOOL_DLOPEN ##AC_LIBLTDL_CONVENIENCE 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) ]) 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_STDC 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_HEADER_TIME dnl AC_STRUCT_TM dnl AC_C_LONG_DOUBLE dnl ---- Checks for library functions. dnl AC_FUNC_ALLOCA dnl AC_PROG_GCC_TRADITIONAL dnl AC_TYPE_SIGNAL 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 ---- 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 AC_PROG_CPP AC_PROG_CXX AC_PROG_CC AC_PROG_MAKE_SET 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) 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_TRY_COMPILE( [ #define _ISOC9X_SOURCE 1 #define _ISOC99_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_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" ]) 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(no) 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_WARNING([$3 is disabled]) else GB_WARNING([$6]) fi fi fi AC_SUBST($2_INC) AC_SUBST($2_LIB) AC_SUBST($2_LDFLAGS) AC_SUBST($2_DIR) ]) ## --------------------------------------------------------------------------- ## 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_TRY_COMPILE([ #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_TRY_LINK([#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_TRY_COMPILE([],[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_TRY_COMPILE([],[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_TRY_COMPILE([],[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_TRY_COMPILE([],[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($@)])]) gambas-3.16.3/app/000077500000000000000000000000001411575327000136235ustar00rootroot00000000000000gambas-3.16.3/app/AUTHORS000066400000000000000000000000001411575327000146610ustar00rootroot00000000000000gambas-3.16.3/app/COPYING000077700000000000000000000000001411575327000161172../COPYINGustar00rootroot00000000000000gambas-3.16.3/app/ChangeLog000066400000000000000000000000001411575327000153630ustar00rootroot00000000000000gambas-3.16.3/app/INSTALL000066400000000000000000000216201411575327000146550ustar00rootroot00000000000000 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... gambas-3.16.3/app/Makefile.am000066400000000000000000000100001411575327000156460ustar00rootroot00000000000000EXTRA_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; \ 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-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-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"`;) gambas-3.16.3/app/NEWS000066400000000000000000000000001411575327000143100ustar00rootroot00000000000000gambas-3.16.3/app/README000066400000000000000000000000001411575327000144710ustar00rootroot00000000000000gambas-3.16.3/app/TODO000066400000000000000000000000001411575327000143010ustar00rootroot00000000000000gambas-3.16.3/app/acinclude.m4000077700000000000000000000000001411575327000204132../acinclude.m4ustar00rootroot00000000000000gambas-3.16.3/app/configure.ac000066400000000000000000000005621411575327000161140ustar00rootroot00000000000000dnl ---- 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_OUTPUT( \ Makefile \ man/Makefile \ ) GB_PRINT_MESSAGES gambas-3.16.3/app/desktop/000077500000000000000000000000001411575327000152745ustar00rootroot00000000000000gambas-3.16.3/app/desktop/gambas3.appdata.xml000066400000000000000000000026731411575327000207540ustar00rootroot00000000000000 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
gambas-3.16.3/app/desktop/gambas3.desktop000066400000000000000000000013561411575327000202110ustar00rootroot00000000000000[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 gambas-3.16.3/app/desktop/gambas3.png000066400000000000000000000152621411575327000173250ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBPLTELiq~"~"~"~"~!~"~"}"}!}!~"~""}!~""~""~"~"~"}"~!~!~"~"~"~!p*u}"~"~"~!}!~!t|!}"~"~"#~"}!~"~#!r/~"~"~"~!| ""!|'!!~"~"#))}#")())/()))2|!)()'~n(~L)~"+*1.~"5~#9oTBLkN~uE2Pg뉹؝;>*zx/G,-~,L\ذS8a4~OԣX~&iJW)Uֹ{ԡYę~Ibv|~:wD5b>E,JĊ:̧;~?x\d$~/7fㄶג2~,LƐxwd~ _Uz̿'qg~H͑,@$v%`ƢtkM-\F"H3!7O6kPsK0Ԝ@3(/{xpBu1.psRׁT#ˀ(a@Dڗ.Hkt }'HH d>,AL& r,_տ} ?_V~,ĥ8& 7IO?upg+ mW$H9@ͮ}_`.eǸE"U8l@[FP 0< ࣛ~B9ы^c-dU@5?:`uƱ*~Qzv`dob[b0`c@K2Y(Wm)R`s|̣Ϙ9ѹ7< \Ù(pL f3yw:QE@sȂ=q< ԯ1:[08n@2K`<0%r ƥSa a@6|K]x`Ox*w%@d :'<* | wjI%0. >uiJzڢ具*:Z&N>ZfSd0IKL-T`+q08b ]_#^&)PeQ g!ܲg^ziWV:+īV@ϚPNk-Ϸ0E+@ܿ,Bl ~g\C)ƒ@^6WB^X«\Y%3x6>/ ~OlW+1S8>g9?6mJ.gT\Xhtt <0Ig=ˑ_ƭ`_tM3z>> \b1Y;{S_)hW3~RB8_w6óke\_5ӂkq@h0hL)Ph"7@(dV3ϼnV(*1[򌖴j Vm8W( W2ZR22lVBU%:ԏ,Gɡǖ%?˱q`\?6&͓" -)6k{H{Ps1-rsy]FBQU?+IF Ͻ[723ӱ vў{AV̯%b"~=@'6D'=Wȑg+fˏ O8=v[j bM"`R2CJ LxW͞$6#^{Qj@GݏJ@&ĭPs:ń~D1HXZAhBvPN$ߋEY* bbD;'NVEcSJ @]oF;mj9u>M.l!ÔAM?Ѡu@\-̞?0Lrh KYozq@'h )|ˢyDx`<2RL3,r9 [5f Mä:;r ˜Ow.ZSjeMk]k8.%D|r\Gp{nN#Kb"4hApf8 oI#S)BL3P w㈳1h)j몊OMɸĦ{Ze`lXi@d(\(tZ] JcJXkSI2 -~=y88a}!i-'ǩh <zEDoP{ec"!|)1X}X&yiEFo^p&EzV /iK{vF贄rӸCcaʟ"iC"~iWQ$+qfjba/!\)aE‘ 9_EFѓ\^ G'8.yefZR7藙 2 p?zP"OIkaim7LICc11YLMfRĿ:EQlؒ?o5!k#P*7r 8 P,@ћo`Il J7'(+VrƸYu*>M>Eǿr'NM ΀z)Y_RFI;Bgߕt9AG"9S jY!}˨b>6H|U)/q! mXm @fS`%J_%AMey1{M-vz e䦢?ԩm)ii)mj`bNt^{ khSgFV'Ҍ |$cށc%qhcpBE`d0tI' ((|;`*uF"β BEQ)R'_7Z)pӘ@AxL"KE"0rIءBiӗN".+A(6;e' (9+ܥwc q97RRǨI'}Eh[״?SC"N!@~.o0o)*,!P<f(( X!*I|(8dftdL,|MMM3ޅ~}3{~>^\iKSxhY& FO8 \͜K*DZY24LyN 2 ;+8diz `m4$F@׍x,msp:a=Nafp'La_L ꒲vռW߷ݶ3Onnp &^I)y' c7ZE+@AEH?-S n-ǐt.!~>!e] {8j9@(>8JRU nX#0 h}n8=1B%O\d~Z0r7@=o~|ѺѦfuc2D$~OH>MBюUpF2/b.X\v"_6bR]wOؔe^숫sGvyPeiUTߺrKMYcmI=y}\0  åUF1\*_¿OO:NvbѼz_9*_hzob!'\*eZ0ˍ#`Wƿlſ". dh({?N-8E"%P*P:kmGmM Rd`N|-`f#u؊d$P:3 ncEs0.Z pgXڋS:vcs4@l=cG>n[m)9MD**sj( >9tҲ@y`wW6?YKu\F-qǘ6"%ڕ3I򧠍GF\ NUlwμoǞӶKa b@`/0%>EL\2މJˈ214s7 o @oF J2+e vLaR&_L" 0]4cuJJ_[U}"GvPLUl()d?ށscM(eNi49 ?kmۉ 53tŒx5!Kk ;2`Oka1cmYx[V(GkD̉*s@AkǎN j #-,ßQL?ԷҏW-4bº4-?=,}&s>&G OOS}Ȏ=lS@&Qz]ZGN;.ѧiDBb)-3/;?6HB1#ܳ*w|HgrB~O?aOÉd.?t);}Fd@->oS" 0.n*D&d#2y~$ ƔE?O㈌0rjbo|(zF-"3fW[=EّHW-iPQ{C_?&`b*o,>" a B;ϋOu!D1$w)yW}@6bzu\,@'2(liE#Ч3{[n)դ`cc̩ץѧDYmKcOg0l~w>oJOb2p'~qD]̷zܳYʗpŒS]Q)G]ojݛ>z {{导{ʂyEF ٛ} }ʄ 1-Vy٣]N«lM7&ż>%[j\^ҵ݇.BeƬTz먋 'p+臦i@;U<>YO ɪ@3#&Q~T-qK$T}`|q_̍Uc!|R샞܈?D&g)!0."Eo7%bH<)9;Df?E<bD~gB7 ybf) ẢīJfƤϤg"9kBTpdh46=#28jBoiLܥIENDB`gambas-3.16.3/app/desktop/gambas3.svg000066400000000000000000000145521411575327000173410ustar00rootroot00000000000000 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 gambas-3.16.3/app/examples/000077500000000000000000000000001411575327000154415ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/000077500000000000000000000000001411575327000164625ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Blights/000077500000000000000000000000001411575327000200565ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Blights/.directory000066400000000000000000000000411411575327000220560ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Basic/Blights/.icon.png000066400000000000000000000101611411575327000215710ustar00rootroot00000000000000PNG  IHDR@@iq8IDATxݛyp\ŝ?薬:lKȷ `b BC&$ldsmTH6aj $$)H1@ 6 >uX}H7fC%![&{u_"/5PGg՞|ޱA7km﷨sOqJ>9om-d7¸@aq"ǟ R@gA;em>UmxxJ bEw'gnJqcxph( qx WWTfܭPJۊmo~o @!7wo/bL^l_fÀ%eqEUF{o =A! @ٗ^GkHMyMT_aHاh)RR |vuWg{Z{ *zY#|@H70?{ C#>fN@;-r"|M(r<ĥwK۶p֌7ޭB?DkZsTRR=l=w&5{~ oݶuZ Np޶z>)ĮA ]h* |#,+ J6XmC͉njC,C>K8 I^7# *u8>Bf7p oF;$߹%-Sy= Ĉ1kkPu ~igY[C{׹}hp\Oޯѣ/˙1݂x{ae<z@iϱOv[;1={$.%igkv.W!o$"p+& `ݼ=19DļbgH‘ xᇒ \TL\Z!u#G;5(& 7^ O[Mö)s`5)p)qI:*jL1Gf +XPqg5z\҉ʐSA86oGT,&^6!PV2^B 5gbzJ 4 "A?4TInnaa7"10&4JT@nLXQ:qָo&V˕.עs.@J/&PʎRISM (5$V!%g؁&.g3?T JV݈.SB@*iJ sjtO|s[eo~~ !}OcUC ͇r&xJ 04|9. {xϲ(*?EG8B$#ɺ?z'u(nøITo34 )0gH7=ZB!drVlJ8VtzZ)IOSJR &quȋTRq#@ ;.{'lsNJǟmE`֜): LCIVR8=h9H'8-p x!~ʹn&OD(Xgy嫮Bͦ6)C#^%Va`"ʐ]Kn%B8S:/oZO(MGXF`8jj-F-Ǔ[5^E+hm\n,??,kɿb=̕(o F8Ft.nC:F4)c™p_8Ы] 7!yU 1DAޕ7oêzS ӣUwbYts_cn!X D VK -@:r+7=v%O SjT@)BH9&TWBZ_یI{B$\^lva[&]mW44zkkw&M ,؈D$G$z эa#3M;b\ƶ]wG1Z GBŠL,Zyw u!A[z5v4'nqW"[la^QŬ<@Fi=Ngt 5ԘRxXۮwE C SH l!"8N))ĺ[ fyXErF07q/6/,_snBƎ9m;v?SVqbS1@ hl)AnsE|poEta(Hcc6 qU7IBw$YR"w= qpJ M0;Wr2C^'fEB-!Cq΂|!rUGx9<~u^7%̉ #κ6PZIM :K#R(XPNi1t|5|0y,Y/[5gHWl (/4>Inm=EN3Qtqd@0%Gi3rg @A0w 5/ݎēއWϟ/$eW?6!`̱5OS $5H,&<vwmȲ5^I6Уn'pC-=*f32?TJ邥37hii]QZZʰ{g~%cg8oMdok# ֜"M8n?_Z, 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" gambas-3.16.3/app/examples/Basic/Blights/.lang/cs.po000066400000000000000000000010041411575327000220150ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Blights/.lang/de.po000066400000000000000000000010041411575327000220000ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Blights/.lang/es.po000066400000000000000000000010011411575327000220140ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Blights/.lang/fr.po000066400000000000000000000000611411575327000220210ustar00rootroot00000000000000#: win1.class:54 msgid "Blinkenlights" msgstr "" gambas-3.16.3/app/examples/Basic/Blights/.lang/nl.po000066400000000000000000000010011411575327000220160ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Blights/.lang/ru.po000066400000000000000000000024011411575327000220400ustar00rootroot00000000000000# 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 "Мигающие огни" gambas-3.16.3/app/examples/Basic/Blights/.lang/sv.po000066400000000000000000000006341411575327000220500ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Blights/.project000066400000000000000000000004401411575327000215230ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Basic/Blights/.src/000077500000000000000000000000001411575327000207235ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Blights/.src/win1.class000066400000000000000000000011751411575327000226340ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Basic/Blights/.src/win1.form000066400000000000000000000021411411575327000224640ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Basic/Blights/ampoule.png000066400000000000000000000030071411575327000222260ustar00rootroot00000000000000PNG  IHDR szzIDATXŖ]lWwfvvgn:%NR%EHQ>x DEJ[ HHD@U*>"/QMIE8u NJ͇n6nf3nv혂8\{usνu]B7u\]&` xw s+2LK[\`P϶avӱ~J(n/!xK|OD6WjwC_C rX:x]󯓚8To}>D`ȧe`0k- ӫeyѺe/_/G\ %>X* W@5N@Sԍฮt J`^uHe:!jn YZ.{neB)@u0HOwJP+*,x9ݼ%g^:78Iz&?fuk"#uRK3c+: =" LYfxl@ ȳ,>?Nϕްmn0Ŷ˔ uaI=ut0 HSx[sɸH4x r'RvZg'd;)\2 0!) E=@n%$cg_Aجi>^'>~0vzY RF?Xw2,0j_˃D6T{G# Bh{ ݷI}jr| |~M_Poe đqF~sw>EP4 |IChER^!{yzfE.ݖl olYi&M>uꔥiiR(rA6EUU"|ߌoZJP3,"ǹr t;w~.\٫*{7kq,Jr>˲4'&Pn6j˲h.m[3gBfI͡:h'NH$̚2NMM͆B!dYFJ8fvvNNNB9BpMbLLLpI._a|&PD9Mr ( ׇan o(<#xk˖-H8|VW;p-f={ȏ,4MrL&I>}M7w%P7e+mJNIENDB`gambas-3.16.3/app/examples/Basic/Blights/bloff.xpm000066400000000000000000000605461411575327000217070ustar00rootroot00000000000000/* XPM */ static char * bloff_xpm[] = { "60 48 1183 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 #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>"}; gambas-3.16.3/app/examples/Basic/Blights/blon.xpm000066400000000000000000000710651411575327000215470ustar00rootroot00000000000000/* 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)"}; gambas-3.16.3/app/examples/Basic/Collection/000077500000000000000000000000001411575327000205555ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Collection/.directory000066400000000000000000000000411411575327000225550ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Basic/Collection/.icon.png000066400000000000000000000103261411575327000222730ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛy]E?Uu{zN-Yo`IDLPqFQOxpfsfA5QAFĄmNkz}.UG/nC0Sz_խ'̐u֠ Ng5S{&t>ȿ{iI& ܦa:~fZ |yy,DStc,m@a}-@B0V\#-ŷ<[I%Zċl!oFoN *r71Ba4)KUL*Nf5xl>WOb}{9+7w;KG{Yx~oJߌ>@~zUY~~DNG*`q]?ͤ0?SϺ $B*t^R8HPߕ]u>'ݷD lx!F=Poph h/U'=P!20BWr-m_q[on0ptB҃maF=m7SX$x&haJ0Fbk/ל7旐p6*0(}YeI;3l}jzf%Y+} 5$'@(0>_ &6b׶/ybڍцdogtv3!Dc}I>?MҎBA01 hz}umfjޅ 0(VXq\ug}efy*N/Wᴉp^}T]MWoā/"<*F![yM&H^ ޴gb㻟JMadr7։xkfqڐaw ̞>z<ڻJ\~o,F\ Gm]Q%enRF_KRԨFYR:b~ Q!śQS]5hCiFT@Jlb( I}T>\h nߌ:f)KF%Eٽe-b:t zSI)PcnB`FEweQ*cO'39k&_ٺN+! )/#yZBE,dl`6zNb0t5LE P6{ Ii9)R~̒JFը`.Pv|޼],b;8pnEKtQ. ZJh0^_Zg~ ~K~M8Q Id+<Vn<2BXJ^)wtZQF 6c. | =K xE#D8IDO.i5,%D2 ~_ejWB2gz9sd{Cx[9/yJATZJE( 4ؾיŋIrrhhn|7!^?߉aꎑYeg^F񴔊ZJn%Sb@t.zn. ܷ$ivDT~]18|18MuL/NnK7ʒ-R AIPe7POgz3sb)chO|FIsts:z\}@oc|̣a!uW$~y֥fb,rkLFV4 <_CNJI㓘BrK)Ő m#ڱ'7ƜA%xNdÔaJw :vAڴli75atlHOڏq(vBrǂW\ƒV 3aVfj+%P@ xJy* `I S@iHIKenTj's$,ZOd'LC]gTޅ'f n|DvAIp\Hkn%~wm^6$ BGlFM|T7)JL1CSŬ +N GUb'LvO%.u'QyHf %Um̩K/nmϑ:.=dAR6MKA6zc=ԩRhm$9%DED'Nhqxp 0 Y+B%甴tfܳڵ,u0ٌ1cІjRoÞv=}m |j_!@G!οwGѝx+0 *(-A^7J7K K!K&Oc%la/G3e@"ǎ Bt%K`̀[I>U'ŸGLsNnM9^! d tMSB;. gĈ_r ȁHx"e3pC#Bh!C>z'RSی1}qV2+65"\pi6*^]<o_2<_q(\h ඃb%iҙ_?>K>mXx~3H`v!r/ʭ|C{hQ &p>CL-.c|Tj%`  IרN(%}Cd0Tt55ߤ ˵6Y%#ڪ۶dpt_=2@SW:<ψM_F&_Xq7r 6Vm!tqyFCr, |CR[k o?EaeoV=m\=0 zW8@ Κ>=NA\AAj8ݼ.رl.8Z3~\67-C\g˲X3O Ii"0qCѸ܎Z_fV %`~||FE]1FDbFsŝ QFH!0Ii+QHܓ1\ ! &-d=v[̉<,u qpn,hX@ӿv  @>VwhI(PćQ[ /C, 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 = " gambas-3.16.3/app/examples/Basic/Collection/.lang/cs.po000066400000000000000000000014101411575327000225150ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Basic/Collection/.lang/de.po000066400000000000000000000014061411575327000225050ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Basic/Collection/.lang/es.po000066400000000000000000000014341411575327000225250ustar00rootroot00000000000000#, 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 =" gambas-3.16.3/app/examples/Basic/Collection/.lang/nl.po000066400000000000000000000014651411575327000225330ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Collection/.lang/ru.po000066400000000000000000000033661411575327000225520ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Basic/Collection/.project000066400000000000000000000004661411575327000222320ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Basic/Collection/.src/000077500000000000000000000000001411575327000214225ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Collection/.src/CThing.class000066400000000000000000000001501411575327000236210ustar00rootroot00000000000000' Gambas class file Public Name As String Public X As Integer Public Y As Integer Public ID As Integer gambas-3.16.3/app/examples/Basic/Collection/.src/FStart.class000066400000000000000000000020061411575327000236520ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Basic/Collection/.src/FStart.form000066400000000000000000000005751411575327000235210ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Basic/Collection/collection.png000066400000000000000000000040161411575327000234170ustar00rootroot00000000000000PNG  IHDR szzIDATXýkpUsy$7$7 $!J)((NKmAm3UkN;1 ZqX MB}(K5s|kZ¥ئu$i}.Gg=];3R~|bmO"?߳Y#Ԉ'aIۗ)>KqqRԻذz*:;l眓hNoГ6©\~Y0 HdLx}޹ܫ3-ڮu{25*y0-](9P,?%r&@MwcmN?g̀1 R8B XrXnmKGޛ 0' -pf |zn ~]'⠵{ ^qaЇfQpEu90(`>GUX"["R.,9oFY.#ƪhZ_VX[bmڢ0Ŏk<P d-XAА9ͪ5soy D.K:x-* ?SןhxyeS[Y?w1RWO` \Dڛ[n#Bi0 ,pUr1U7k2qڣ|gUD,R3~ȲRWLB޺Omr9`F>(TdY}RMSl&Bu G>z wxHI@ ]( :["IkE3)\0(@T= CPY Ai&Ps|0g̵͍;HX% q:Zi'vc1aLԤi!f' )&,G:Z(` 38uݡed<Ѻ0Z1fM1&83}hy-.u  3008U6 o*YF]4OE7,LcE(L8e_mn`UM+^x)mՆq^iW Mcު ϻHZ m=UVGJ&=SF۪+pr)'0OsxS寧H Yo4K&A9AӋmضgҊwK'FKbW*nt!Ky+)ig{h/RY_0(YH p5J-iZ^JWEp9:CCz嬪UJ6+b ^Y}t Gt-$۴uQt]7q@*u{&<; ސ-:&jV'!uɂI:< |;}h6t*6T`6+hJVLǐ"kqׂ`ل fho&.x e4?+`9ӟ&׻:.j+v<Ī :oVϴ&RPcIENDB`gambas-3.16.3/app/examples/Basic/DragNDrop/000077500000000000000000000000001411575327000203025ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/DragNDrop/.directory000066400000000000000000000000411411575327000223020ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Basic/DragNDrop/.icon.png000066400000000000000000000100771411575327000220230ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛy]E?Uu{zIwzKw'馳'D4DĀŅQgFq΁3aefsf0*jQfCbޗjӄt6Ls{޺o79QK{Ϫ=^ r @JI`YiפNywDkݐ76n @-a8?%R[O6`4Ld`[5%l$޹M/bqu&_)F񓷡p/‘p!|ZÏ~6\P!e0BܷoMyJc5SHI \rh+ml`߸un B @i?H|9"~ 4BR4O%B?h(岬8Lqσ#];0ܷ c@+h A? \^`EIyI<=}a!#7oթ [B!4AV?|W#;骩C01 h"3/;eg&ǺgbEZ8O?|W'{g g.@q?!ox#w)Af, fw׆w i' e5_#D`lSM`]ǝ1}i@X3w}$AUQ2Mpi@3}L|  jkC{)=/Pe3)qI Z{Ɗ{"B̮r`,#VR&Kjw)mK)QJM;^w|$)wz-KI[g,C@d˝Ǔ|FAI_})"Dҳ/@ўHу-]ӭRҶ>Q"]p77_+D!Y7lEDGXw+EY‰T -!,ii)cBOvpFH^r} 9.sXJ"`ޕدzzaP|hq/Ί8(`<,>k',`\mҵ:,J R1j0Vŗ;Ѓ7ԏ Rq} Gmk#9Nc1|F =̘ozvL&C#H)5ڈx@t_M`eNޮ,ZY+h̘D_ˤa &R_Y6@[negL8+b1gdN? 1X?#1S>Ku !< _gXRBШ A,!BbzRuT$ec$G`%-|0IK FSC3>1  B<|8|W& Jb I@.{GR*܁^.Y$ 1; ~EaR1eW|l4ʲI B0ʂ޾^/8x ѸI^[D()uvDw3E%cPR|~r%'3MbN!"^ex{ V2 \`ҫωWѨ@Bul-l۶ ;3+;FןlD' @DLW(/AX+!}mtvv}o\k‰n b2\@*[25ƌeK:.^[jT v}~9H6Ttl%O?$W{i9)BXny)))h=R 䌵oNF1[1fBTĶ_073 Gy[w+d uP]߆ Ozo)t+?-|e3Kg%@,ϳøJ)1l޼N:;;2ig⏘l=nBL7.,g%hmdzүڈkDo:F`xG*53|Jnb~v6ZsYي N upx<7N77wbS뺈=fi1 :VkI26JrSRq9,/[FCS}v(a@{_$ a8|p%ńge QC#Xp}'bºdJc'3ӥgq͵;Tog1 ]GަS /`a0:L\yEXeZ FOG =eKAZEzN-@ IyRN5Yh )$͡FH=0ʖ&77xg-!@RңX3&>0@NaɬҌ'#)YjSͪl~_'$s57rʫ;D7iњy1MJѼQAGlcӧ"d,z7,[a;0ƈHSh.20)&a{j]_?se4ꨑhz) P&XD. 㧯5OS♱RJ3[_t lJ0 ;<  G? r@Vw hF^p8Is@(# y!̨a.3T pH+%t;<&TCeݯ>;q|rf˟RV^K 2B=' Zρ&vu[(~uވ0/N,*,ti#SzGpM~ [ gGZ G;1\}vJAss 6s_^03!+#lslN22՗<hb'FIENDB`gambas-3.16.3/app/examples/Basic/DragNDrop/.lang/000077500000000000000000000000001411575327000213015ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/DragNDrop/.lang/ru.po000066400000000000000000000024121411575327000222660ustar00rootroot00000000000000# 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/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 "Тест" gambas-3.16.3/app/examples/Basic/DragNDrop/.project000066400000000000000000000004711411575327000217530ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Basic/DragNDrop/.src/000077500000000000000000000000001411575327000211475ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/DragNDrop/.src/FDragNDrop.class000066400000000000000000000045521411575327000241320ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Basic/DragNDrop/.src/FDragNDrop.form000066400000000000000000000047421411575327000237710ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Basic/DragNDrop/drop.png000066400000000000000000000027371411575327000217650ustar00rootroot00000000000000PNG  IHDR DPLTEטѷΦ񟤜ſþaaaƬ۰YZY󓔒GGGqqq(((fffţ򧧧¿젠 wȶOtRNS6O/A <$MXY ,12(J@BEDC>  1"ZIDAT8c```d@L ? 00((88SA(WXxDdTtLlw</ĤԴ̬윰\> yE%eU,h kjSu MB [ [KRRK3;:LN--+"?(;!--^gϗ)P/+59 S3 `0ٳe`,޼Ea(| |4ɛ6}9o6v*h V G'g4&n`m||U@|}0~<PE'IENDB`gambas-3.16.3/app/examples/Basic/Object/000077500000000000000000000000001411575327000176705ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Object/.directory000066400000000000000000000000411411575327000216700ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Basic/Object/.icon.png000066400000000000000000000101351411575327000214040ustar00rootroot00000000000000PNG  IHDR@@iq$IDATxݛyT՝?zhf_1ḧlf0IfLs8dfgɘ%:ILh`doh荦;Tw6s9U޻}ݵWֽ:AcOۄ.n +`zY2`uZ6 AG@ o+*8u&/`.m@᝿a}ؑ-@_A0.+`G+ OWAENE| n.m-^Wߎ a 6W ~uσ5p|WRER|rp$>l9}%ى>@qvۖ)O=7jI( x4G92xe 0c dF[joQilI&f yTF6) *HDpUxhSz#C2%4ѻ .;AH{eO)3ѷNxCeb1u$}T@ Lt-tҴ=N7lj_躼7cÊ9|CdeRGCԍ{>35',<}m> @m .5%}Jx>f.6F0_` Dx4y!oh+Ǐ40,X!>#8ZCzZ KK€ʞwiho.^`azNM5BhC~̓wvI6oCRp}U Ϸ?>e3sx|>wmB̜[}nC_A&i!j_ ̈,?nYBۂ~Ɠ{MGxu`؃T'փA)pP1K)AIp6O\S`5_ @)?aI%jDr0(9s|oR2ѮC87ĉ]GA5w9vŷ t! [J0O#Olşo|JTZ;j܏]VD$'emrGvqR2#"S@~*ȳy3ғq'F,U\:ve]NHYJ-)-V8 ~+hIs*Yx:tx(㣝DJY!H5RYH(~YS R*.`X.lotIjF\I&),G1ܴt\GNb0|'8˲{q/#xZJ-%MB\9tzlNr;f Jyfo#6O=߼(vq;g1L=sJ0t{;@(iz,e)bHnj^zyDySߞ@x'm{Ij^H611Qz8ZMnthOD0,bʴ*)BH[^ wߺ_Ut}p Dw=硦/{?]<1u t"oɘ!47YC 㳬,[Cd\Ї}WUs p lt%,--``P!Ϸ{T%hA2^O>#7$B&^w+OqRXߺ>&V}sc{5u- o'k^kx5e_?)=2AѬb01NUW1 iƳqYmBh,Jz+g?6gb,&VLv{X4 & t8vaq4_H).nP4[nmM81BK$˦;p["=k2YPvMLX};ko܉sɝK2|d$mR|D{j UB&+%L:`BlXe',K"|!H&cVB{V)FK=q tQ 1i. |fM ۨp!HD&hn"crH-Yؐ 18 (I\HB?gkh ɨ\Aϱ71ڣH_'v^B̿}F|nd"5@Z";8]iY'%b a(F()PvLvN҉! X\AQiY4>EdMD>Ǒ;3op"=ӎ~\C(=5uL'Q\$JS2N~Ra(VɔȜ7U 2# m_+HPBqhh0CS^`܊G0N a,?zD T`ILFe%楷#̳)gR]M% dO,><Cc{<Nz7ƒv8VPT y'X_a3~frj1F`P X} mسC/>ejvQ[CK^+Ϝ _ĈX0U),ʋzIk~e:0,11=!'MKiV?V$5@ZD(}D/cJ:̡g"bpf̅ +3 &[HrXtPR$)I倔$*Qʦd%YȴujƐ wbF e x4U9'Hc05ǎ$tG9gmT 1<]v^!+n^C@A)=->30t-ZT KMDɑ3f3bPSS<2C/Z0_<4@3Wsuu| s(!mk%oB zUW%Wm1tzx{/C!O 1Zfϛ;D ڪ?u,P =YܹFtQB2yZY:u8Z31 Ʋ,,א,Ńܤ4k^8I/m`) m3c6:wKJUCFF!Dl$y³' GcB( -u_W_ NfO%u؍e+A5@%}Cŕp(p݀A9@+ou&5@2DrBZ+_Q".ٹ,Ͼ8nG~ZkM+E16U`ұalfV7/Rw0DV7@ټf:, 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" gambas-3.16.3/app/examples/Basic/Object/.lang/cs.po000066400000000000000000000015671411575327000216450ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Basic/Object/.lang/de.po000066400000000000000000000015671411575327000216300ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Basic/Object/.lang/es.po000066400000000000000000000014621411575327000216410ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Object/.lang/nl.po000066400000000000000000000016561411575327000216500ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Object/.lang/ru.po000066400000000000000000000040041411575327000216530ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Basic/Object/.project000066400000000000000000000005011411575327000213330ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Basic/Object/.src/000077500000000000000000000000001411575327000205355ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Object/.src/CThing.class000066400000000000000000000001501411575327000227340ustar00rootroot00000000000000' Gambas class file Public Name As String Public X As Integer Public Y As Integer Public ID As Integer gambas-3.16.3/app/examples/Basic/Object/.src/FStart.class000066400000000000000000000012411411575327000227650ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Basic/Object/.src/FStart.form000066400000000000000000000010721411575327000226250ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Basic/Object/object.png000066400000000000000000000027331411575327000216510ustar00rootroot00000000000000PNG  IHDR szzIDATXŗoW3M @0Ǘxwy`Dgǹ1D%yL$H%Eh@[-TF1t2Ppڳ ye>3fd%3 CNf}^8_8EP6HB[hkU*w<;{ iޢP[ >(OM`[ H„ByBi)|]CȫkV^ӻSDA# XI`[ ,}Rhᖰц>)ã{7܄{KHvZ$:vt!amRC ufJ滭3kKgҹ dLAmhCXY kuaɇ:ύƚ_3!9-cNl1I@ va!l%`w!UKI`X8ز|ӒFo?$ْ"_qU]53~\aY 5h_KU| :>x/3 q]~u.*v(!x|0+:'k)d{ڍ:B?}OhFOZ>^xѢĺvn+5d&{ ܛJP0&%(JZpU`2r׽R/Sė);ĖsGwa1q 5Ow@8zhLoK\ΓOd[y!+ H5y|nM.U=ݷw';VO^o-  /ĔlԻR&?S?| ~|كq18~'<7-_;MD]@i1wqpzM'W?.vA0p}o)>4qtG=X4 8haJ{1F7:՜A~6a7HFH>הV;w]>Mͱxf5ϗ~ [AkHP`\@ai @P) . 6 M&?m: }F2<|\n_¾xBΈAcjkdU ONSyf;Z9<F 0``A2~=fN΅X-/z/5f|t3{pw%DkSpGj0L90"=oMgJi2#|' 1 V>Ͷ?lIAB+z$~񿋕Ox&)`s+b;Bfm .(WC^}/$>siصީm'+.ϧ%s\txmGNşkG0u`Y뒗IvZJ-%̀BL9z/!X{ wDgbe+?G^C{Ft1`w43`3/_OBI3`)KvIF?fjE e.$ pdmocw|D3mj Ãel"/Px9"Pw=Iڛʰ$!/0,eyVR!,9)}a-l фcqP3O|O4rKБ0ߓ8!֮G^`{i"DRҰtuwYL+_CƢ $Osd-Nii)cB{6Mqxn>L 1d;DA޲5<'+_^Xd] -MNw;@~v/Ģ.ܧY?ge;_&N$ ӦSAJ':D(%PJ R 4VQ\hvm+kQIܡ 'Mb\;LW[3: MPGw{]"wg-fvl-[#9=\w]]0gHWObS%N٩$Dxzkm4X1t(GU^ʦ4Cea'WK8}E>vExU  L8\Ov nyʟ?n/WXRK)N㘓q5Gy?(E?4.ֆ˳,)B hl A4FRN& zn%%l If[MIXX<_j6]x߹mT8koZNmuЖ&Qs(98֚U|-o.%Kv0^@IB !%:ZXg0!+>=^z!ޫ(X 3]cC-\Z )**q8 QXZ¶7| n]>vDz+.)cLDd%%1+ORC{vC!喐EZ1[=iex~g\pph&ė 6x`!QKwM ),\ ~N]AeDO 2#Ra((BJ:D޵7ԅ'j۴Dm &œ衽/ D"ZZ(,*FJ{,1!ch0555qי wz@Kf!19#G~Z$ܲt o5cd32TbeäQub?PL+Ta< xI9(% \AiQC:.476=񌿭TS!3.%Sc̩A5 g֭ZmTK zAXJ ZzX4W_yb4V?DRzyH+^@ݱM%ilh`yHW"9hg1]QANn.ǎבyÇ'L5:#T#^|X߼7)d5KVNcN-z-KhCǎx}TRӳH+wc $@0;iok.pzUےzdxl.JTt)Y|Z Vf CWw;̚G鑽AT™ K *%+f%dՇP:9 gsx(Jr&33q,̬<vf^z"X_x s>X湗%2og|Hg0ުZ@||9e ޡ~>J ^wFH%o|9u^yh?a }58aݫ7♻ gLXFARJ:|;ז({朗[k3)i-"_?(l҄`^;6hQ'qmd)^Dm6z8ScD(*m4WReB0}':21B_g`o(񓷚MHRW%L}›S@{Cŕ.qc|@>0R?W"hj :n5LjHΰ `00{sr .|)i,/2͓h⏕' OO wg9R=MS]ܲK 2S}C^J Z&{=vwһ9=3|L4tvayS%dcd8uF|m LCZpk%o<ƏiŃ*jd߭=ulZklN|V׍GXdd\z?ۘjIENDB`gambas-3.16.3/app/examples/Basic/Timer/.lang/000077500000000000000000000000001411575327000205415ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Timer/.lang/ca.po000066400000000000000000000044071411575327000214710ustar00rootroot00000000000000# Catalan translation of Timer # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Timer package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Basic/Timer/.lang/cs.po000066400000000000000000000034411411575327000215100ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Timer/.lang/de.po000066400000000000000000000034531411575327000214760ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Timer/.lang/es.po000066400000000000000000000035631411575327000215170ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Timer/.lang/nl.po000066400000000000000000000035111411575327000215120ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Basic/Timer/.lang/ru.po000066400000000000000000000072041411575327000215320ustar00rootroot00000000000000# 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 "Или запустить и остановить таймер" gambas-3.16.3/app/examples/Basic/Timer/.project000066400000000000000000000005351411575327000212140ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Basic/Timer/.src/000077500000000000000000000000001411575327000204075ustar00rootroot00000000000000gambas-3.16.3/app/examples/Basic/Timer/.src/FOtherTimer.class000066400000000000000000000027601411575327000236330ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Basic/Timer/.src/FOtherTimer.form000066400000000000000000000015301411575327000234630ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Basic/Timer/.src/FTimer.class000066400000000000000000000015001411575327000226200ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Basic/Timer/.src/FTimer.form000066400000000000000000000036341411575327000224700ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Basic/Timer/timer.png000066400000000000000000000053321411575327000213730ustar00rootroot00000000000000PNG  IHDR szz IDATXå{py|+j!Ү$"$%)"'v1 NR7?:ig:I:Rg;vj'I\MH I]}9ixzf|g}}lٲ 4@nڴϳ%?V}sժUuUUU,KxSS(r=:11SNag|Ǹy]C˪ ޼)Νth$C`̆g(,,a͚|+WK.v`YJzsrv4x,< [ςt&'Y\Qn֭n ߦ馦.++z-޽{wKΟLQa9_@yy)x$xxesW%Gu6ghk?FhjokkxH~ /;sgh 0摊rXO~~~:tR\뗩cjjMSU~ﯸ~ۀ,Rv|ɓKbY4!wi=ێ2KxXB Hia\:va߾_믽_­[WMMM@EEׯ{ah۟~T}uU`AC0$p+!;'?HQIKJCK~xbۺSyyyOBUT<ٳg/5")5dg`h0p瞅xk),NWXT@KD (-/+=wJ<׫[Zp$ƍټy?le?V 1V RhQJB12#*Y;±Gh082&&#D"oWUU@kkԵ2|o/^{|%4F9GTpGiR3j)xIA~Occ eee1%`Uߘ7#vgA~Ci!@ hcRqc֣ǩm s(-+#D#Qx`۷oyJJڵk h֮]KGG˖-c(0!:ƙfMfdff6 σ51KM2 5ߝ]^g23HL!1_c FkP4 Ȋ!yW`>>2>zb,qPZ1(F Pm1xXYFk m4Z͡F){p4H)`ddݻwuuuzttTh M\\hbYB;bpƱU qtSEkSoxb0wR[[^~6m .RnNξŋ3q{py<(m8 |( h,z^B9ã˗㉋7߼յ׶m`Yz`0HiY4ۅs@ifgg1 y0QJ.VjFɇ?/H__0#W^y>w555C===U[?z[;sC, )'[ D"(˅Gpgx8F+'JEIayks| O,Yz޼7Ӎl,ۘߪ.{f]3\`_"Fkz}V4}.NErMtPh-PBś 2Vӏxn3 ʼn__|alL( !ޱu[0!7݇(…*@]/chXRʆ;˘UʟG Gy9]A(m%|R=rw%@?nhc wo/9XONlo,9J9^wͤ;Ϊ K_yc -nΗo, ~ Bǘ!xRQ6AP~"H\\{6B)9-@9g7w]2فw1A&- &ww p}29'|q>18V?ɋ*8t HcPZȺ=f&j[XVc]^;1yaг: Tջ[Rg~3Vbj'P 'l:b))%eT/ߥt,TD)5}&XR:bɤ; ŹKP 䆯R}@0rRJDzZ,@#رqJfU^A{} ]-Xtg>fQKYQrck'3M#T(g3!+s,Kzӟ}|Y)iD3[UH%p#X0RO1󴄊XJD ]LQڎc1D_a.˲q9J(W=O?bJyQK* \@*XJ g3Oק_>~+ T L "۟jލ]O83yM <%cYJ:J?"]p:l~qJfVrO!Gh^:eעkYJ:8g3 ^--6/]ܾ>Rd ܴxh7TVb]͔ W&GZJ9R 5qfʹtիIyy4w_6d|vwGzl#,ՇiHLJb{}V,đLEbfwm`3`OE΢v l)M+E%yc3ܔ#& JI@ A[Q:}Ԋe${?6F'+,!< G AKAzt]">vp(EtG{dr۫t{&L^\18F()PԼB4vI̍ _PFӃ,.Ϩnc•DVϥX~y)/*D2/b&"90T L*2)%yR FѬ ʗ\Nڢ-5 SHՆҜB^F`Z!1ץ` F Ϊ)~AO?U`=\Ā-\w%brvǝK"Fx*"#`I"@iHMOc߾~j9*-ަVHXVWЂP: ,50ch<1CHŌHuf> 1M`nХ? g*2Z8V0R%QJDC1f$U,ZHn|kvݹ ;0w1݇؊G6PRPŒʥc-@9`.(Y]M]do(+|3q9;+rDޑ4apLc-R"G,@XcI53ˊZ1X8zL0³I[I5u_O̭\rH|C6;c" Y'F()F$c$0xƶJ,X/0=.\TXJlvֈ}l=XTP ZqŁ};quZ lB&i1SL3{ܹ RIgX`O"&ۧUk(_/ |Сgc0DtL)Y9gR_e,g֡Of_=)$*+OnB-qsԨS-fY@zkDs0Y krr ˨y-=Kl|S3o G8qZ [y3ˈCd2ȝZf$YDQJS<z-?lV]KTzv\K5kS|lOiI&$?u8DVӧKXoOn#уN\amiHaR!Lփ0}=Gv/KhU.FC~K?2 իRfzfeO%L9٫:G֐\@~BGrcm8eXH. @ $^/ ؘ5 jHNz! 5_,OGsG/b L:\]&ҴW 1˗ fPYV-R ^U:sӴ V?nfӶ.z:zOoćQZTL]{/J:~\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" gambas-3.16.3/app/examples/Control/ArrayOfControls/.lang/cs.po000066400000000000000000000016531411575327000241210ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/ArrayOfControls/.lang/de.po000066400000000000000000000017031411575327000241000ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/ArrayOfControls/.lang/nl.po000066400000000000000000000016231411575327000241220ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/ArrayOfControls/.lang/ru.po000066400000000000000000000041501411575327000241350ustar00rootroot00000000000000# 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 "Набрать" gambas-3.16.3/app/examples/Control/ArrayOfControls/.project000066400000000000000000000005711411575327000236220ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Control/ArrayOfControls/.src/000077500000000000000000000000001411575327000230155ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/ArrayOfControls/.src/FMain.class000066400000000000000000000034161411575327000250420ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Control/ArrayOfControls/.src/FMain.form000066400000000000000000000007621411575327000247010ustar00rootroot00000000000000# 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"] } } gambas-3.16.3/app/examples/Control/ArrayOfControls/green.png000066400000000000000000000015511411575327000237600ustar00rootroot00000000000000PNG  IHDR D/PLTE1\ndtRNS#x@B"RV[6HKtд>O7]4y b BSF暯j^IrJ%=: IDAT8˅V@'`E 7bŊ&f;S, .G)?? r8(ѨD2 8&z l$T߳BJC2f3Π2.s"ehh/!r)FFǜD  4>1D 15=O$dAhvn # y!*KW@^k0Tޡ HQ2*}k{8D%]TkVA`O#O8e3{ Duڸdw_Q6&S写]ǒ&/xKr<6!OffzymLj?`~vcwcבsZw_s_^w=Qk IIENDB`gambas-3.16.3/app/examples/Control/ArrayOfControls/green1.png000066400000000000000000000030141411575327000240350ustar00rootroot00000000000000PNG  IHDR szzIDATXíe=^.^H3(XԒZ 2~{a@aȥ5mVC676\"jH lfLEra!_B泝x}  y;vbf>ށǺ6\yE-t6<'M1wo@,mQ'٧h`(>4VhƈK*ةQhig"GW0G>r؆Q H|4[!H※pRbmnvL񤈢gXc|=jo M ()ѷK3Y0)c[4} pHLU*\0.or]Ш./!HE/u*VY?3@}qLo b'j`A"*EM G9]*ꧥjElAN\> NAjya;Ŀ;~^m34+&\!g`PY 8TKQ)ePm1j*xVT/ {rP3bFK[t9DoC@2(9 温Il}(%ڇE{ RDgEMJb38B"WiNYM jA+I$xuR3 >%hPB28>#q,Y)΋"X~dUk\R$7AIf!84/*aHIDATxͽyeYIJ* `ɒ{~a"`0'?Og{P۶ЁL_7 ?~w5WO1+|h4JgRJi0"J k5)d̘hcH rA AkșAf5 gfymu P `',F!66 01;; f.76X[]C4((s94:\ fΌkkk9 Mٺe˖hTJ!ky_O?yɵ7*za/.uΟZ^Y>{v\ `*_mzWQ!.SM9/@ yA C2k' [DK?!0Dy }P!HKBkm"FFf*myo??CkϗuÁ+GuywyxG22rf0`-g\qMz /sks'wi䈀,H>mstv1X3*gC\!?^[/Xy;haDpN8?Ho~{Kx;w,hm`9X':9%623u H%GX2x^ .sFNV &oM29Z%[-RQ$ BArnVYݴ{oe}/$ܶ K΅|<~?|uGWIf(Ґ.(FZz޽q6N-EmI5Ԁ!Kqѿ k`؉@jsC 2ϢY\<=3;ma[ O=v`izW?wpz n7s'$+ 珇C[~~[5+gӰơUONhe` ҟc% I\Q8P?Q6ia4T;wq&*q( 1xqkMl* _w'n &Z(TJ ,c # Q wF d.51zn(Q~|A=UAB"98[dZjՁQ>WQ`6U̕9@mnۋ/hK'w];v;oHܾՕU~[t緽f9Z }Lk R(^|bA,&$ԀT2n3rMۢl\Vz@ bgdɵ0^zwPs( 0̥ JAW{QHj *sK3'O}~O8@@UdiʔnV!U\_欎bK~_lA賙+ŪMg'0e,fAd(r X .YZ:WcpFtjP>-gBIno{ 5xJ4|6T ?u|;}Wʉ`PEȌ\?Q [pbpr+=̗33͠T*"Ua#9kFcBFI `ɇq*!MY9g3$< X"%g!d'-kICB5I\F0EÙ;#ʜkg9#Ip(VKC\f#+*: P87W-W6;Е!s*n-2<pIh2s1vNszrQ!di})yؿdF=sF|,( Z 8xXDtV(7 UvAE"i % Bjh' q#:sO}0 s kc c?@9Kଢ/OFK G Ds/-0`AIfɬ@J ]*D3|,bII-H9֒(3rE´ 1-7A$+`EFr5ǡ_e+htxFZrF@Ԛ`h"/(\2sp?=&8~1J`iٙ*)7jlɮ" w7YY.EFK0 ⺕*1U1% peWi~ csl xID ǴI *ދuBELHb?jdqQj$*` h*@2BMFnA$ e=IC:O)k@gl;&BPcn7TT@ &˚]b/$L#H7oUOB{&d.@9J(>FKN1XvBYsaDZ_G$PƄbZν,Ŷ1Yjg`gAo88܃߉-ĺAb)K&!ur\TՈ4$f΄M݀ DEXd>k*ԴmbUcE!Eo,ĩ\U^&Fm@B$ `P&@-TodͱSkVIdkWu"ҌOtT\%>>2QyK}@@unEEud1sd:gmv=;"D6>QiP{&b-Ԥ!ߑd^'gcn>Z*GgXA9ZLRg%ڕ11p)IVXHDRXAb ؙ XlPkq!5bM q22qDB/+$@Okd 7RYi}x% 7ܳNV2h)|B8QӹP{4 /3RrK$B?Pub%#bcPCTD*L'Z!c)FF-Dvgv҆=?JD@$U)dϾ*ĽnbQ(.aw?5衩B:v.9Yd,r,.T8ZE_>D 'JR7?@hH&Q w#4/4vqh&XbS9ᆣ1ߊl[;1ac#f0D E5HA-g0cBF(Rݧ! , e"p ME&K#ҹFQUKUEY+y2Lbqu=!6RsYϖŭYww*͹*}Dfmp5ˆG6=7a`D )%;O`=1p L$Y m#uU\jյL&Woj TƀK"\&)9W4汃:%z x-EOg9ҁLd\e*ɸ+OqԈ}ୗ 7_z3޹-ܶ+?z R#Dq6bA^Da\mT ܎6{ԈuJP(x~Ce1.sqڡz +/Vr+k.y fff/{N} cKgXwqf2ts)eϔ֒^,EX=Cv9ccٷ sy")mWх@P%*Y)'(URb˾Yּv-pոuK_8j\6wyS͌P6kvN4>+ k<#9{ *aBǂBYe~LX&*`{AςrG(ҤIto "K}# 7}|"SyU"ZWdgٴ!yHQBe2g*d q?zV BM `!u;LI)g֧ylZk[y"Snyׅ|=nu=. Ϭ>)ƠY57\Oemca[pm0fLAijtQ`law!ی\1Zx0Yɒ!x +^u'NHʪZfȡ6s%1#\>{(075z9~!^BK2!@YRfM#Q&C7)̢BlA+b|AdF-e0Zrč@RRcZoHwk2H]+˚GplXټm'1f^7<[.`eggF1L!`ԪqbD bMT淋f9,/֪(uNYIw0(0\`Cncb٘ TpܚUd58c`c!m/q>yO 4TJ!C2'暌Ni[x@+5y65h^'tuüm0TJڥ-tNmZǡ1*T4Y2$L\8`Ԏp(ѣ\ALb,!Pt8ot}mQK7S1W[1#nqNVU$ʮY(P] ye*ZY5H9g߿ [} bXZfANŜ1iJ-{1% Ns#QgirY^`aL?.'w!a,ݕH='W6#+c5uXֽzbYNM$t;Y$Ez{=l1דD}/ '1tU) yxIA-!sWr3!}jjH0_ b"HSk .-4oYԁFAUIliT `|/elCb-)\piEаw# }^Mh0*fI8QmֲVckQQ)aksf)DCȱP(YK(Bb+gayxBGFpl@"u3&+ZXse)X 9.릢} |c;Ũa׽ͤfU,1c32\V%|c]d hD"@4 A򢗿?ObG4RK(a ^)G[jEb5rFnk5ɞd"ac3 ~#0v=\]i`pr%JDEPA0/co͔.-2GFM.uU"*|m ⿍D_su11hfJAD>C6I}V?)1[e%T±QDY<6F2A 8 $(6E= K,6p!PGp]4 < 5m1%jDZIu)x0B+ _{px L钋l"d`CW#|X}iqjx et BI? $j'QZ=ftseU%%$0e sY:r 鞨m4ޤazpu[slM Ӕ -q:fe+rpKpdܗ^3x.ݏA.c%{W/!V-&]l*=W ]R+,"{ ~;JBچV2gU+ԏU-r8 2gl0aB&mN(8B4`!JXčAcs4,N !Q85 8Z_<^wkYx}#{0̂Ju+*I{)u/HBYr%7E*$msu"uhAVX5+J5SFvcaȌ3pCb Xtyн`b/&@ksP?<-,jA83zHg`Fc@5 ΅w c3Hwz1\ "*[y cS1L5֔E lun%:V~1!& +QLegZ` \ we'W]ܘk3#j2!iqC-՞N uM1aH"^Ac̱ڝV+^ֱsz;nv =U+b2cB<-pQA>+ׅ)`py bdUn0b`C0(b} cx]qC}akoDnKYTTYMeƽZ%6y-`$tYTf,Ef) 'S5 ȱE, VԹXe+L1{7[~ ^w#7>p7-bg3%EkA(l:A[b>3ܓRD\RPJgɐv 1a!̎L 2NE'%ԨTC~^nwP!S8'֥`ܸ  JG~#_˶]}?qc1..Nw2N1ᴜ;eV!"z0SNOqriZ ߑq~ wd=@|a { GsRnwB[a1_?pp &7^jߋ`W2zuW%]93:H.(}HU/PUlyA%f.QG+"ٴzM0T`XST_Y;=хQ%۱ڮNƕ⪫{7fZ kk<,]O4fWR7;1Г9Uh^m?yhb\pPƣ8X!  aA:\{:Mz VJf̧Ƌxp;~7^*QH 0$KRcCkF8=I@) JG06n}dm$Zx@jT:G% %s$@ɼ%rݮ%#$j$h%R4si.=? &ؿr?]*̝HR7Nqg^sI\G!Jgh[ˌ Y"T͐nH>ȿ+i[]5-|7v؄:8\x Gū^xi'0f~S#5÷,^z,kBRn*P/}/G?#xߕ?[f.27XCcsxyU5xOo\jz ނwo,bWP s*[+NJ.fDrds10dqÙ_4'N~#^h!i]M6]{u"x1LRā٫ԙ,r>킉 }s7xd9̤8iaPjhu2[食xjO߲՘_8l>uc|%oop/b= PPOJXگεui5Y"PmPҮw#A6"Th0]T:P@Љ5=Z}k3/`זxۥߊY<,sMOoJGx_o^؞F.ڶoxXo7,iuv#Pa"}*aj 9)?;Q@$Ѹٹc"7~g}Km;aPd 6Jv\\ou7<4/>Wy"@y5wp`/7ph0VN},80zOb܅\mr-qZ;A3e03Ёa@3&,3 Z5HƟ@$6cܶ]HD 4p6y/5X3(4TDAg80^|D zau΋^ۦoxvI\9؁_xɞ +Z}>w}yn?>un,!!B# 78 (yUDU^J/lRqIk =w^`Wdڮ;:jೋ_ime[/uv|_gy"pނmxzxM*3n@e_?U-؆N`"KX™:z K?¡Rd8ҤTdݍ@j"eE֨aCRoz&|Ǹ~LgBWE&cB>؇޻ߋ'dj̈_TJYV~spQ73*Mn<[6KF(bIVHzh c'pױ{?&58/7ظ23&o#xIu\6[]x+[J!?*X*xND2ZeSM/ xTWJIé#rXa- WUv:ܣ /0^XZ ~힐;2IQvSU?p4fݎ?S8s^enjk]_GG/g#W'zaeC^rH֐QUmSBA.wy~B,6']l+Cg߆_7s7(R3S# H K(tZQ@ѐTk#ښY8>ᑀ@pϡ C˹J4Sh93g;֕w߀]KwuyKx+ߊ[vߊ3oЯqL<*; J6(Rnvd` =cd[ R )\FԜl^g\u$%Gq#\⽅;z)͌`IPBfI5:òhNVC,TmɁ \Mo]ŇޙCK}ڂUTnM}N '~|.sL8׫UD?·| @58gbMXVyI V8U?Gz}Y[oi'(Re}jd) ﻱz8TO@(WQاLof=jLG{Ȉf"ұ.t,"| >Ƅ N*"ι0T` O-n 7d0g1:9e꯼{~f~jAި,L8>`:E˕Oq}I:!V*CWUI?\LEx~j Ѿ >²> gXl<Fq 2̢za@>mK;zOh3VslKa}Bs/x)^ǙMmL3RJ)W7r@/̩cVN\:iKaqg{{٦ue*Po^}Kz./Q v'6(KJw."A=4,Ǜ=4>ӨjwEVE4 |U?]%Q_9Ա^wF5gU\GZvVT]p  8zxq*/uK UL1@DcGlC>'{aT< p-I1z=3XwXd(韐լ6Զȭx|BbGN7qw$ Ot$P26xP14)M#%dLW}OdI DC d^7{VGbtTmB*5 M]xmQDᱭ*F7}TYɹ0uPYjvmlӿGC%ѣDDz`G?t8 e@]XZh`1cmj~jS'G3f'${ }E*Gu2/X(>c§Mۨsz0AK5fJN(USmO?QѣR2&W0;5 =qf-Qd;4[N|;nًg䑸DD{ԯlm"ɳPQDhbFw!ׯ 2~KIz, hKëzi DXaE =,,)qiҠgOqkg/\́cq_wpNW&sp'qmէ^9' z#0s*DMZ ?fdmؗy.=[u_5ގ[DznI_#U^Ytvqrh}}#N~Z4~X"n(NJhL'䃗V7/y:$GMc:RI7_dEkuµtѺӹcjFHFo|ھɯAYZiqaxwjIQ~bZ!AElN;OiLmzs?;<8nEg.^yħO3 `3ƕfuvKv^v߽gWڜ1g+;Tg^E\2h(>Ew1vBRjޝ9rC!a6NKkl'4AFv^/~=7/{Mo+̼Ƃ ~UkF"#U!fB+ 00 `VlaA:ZOStuv̎عkpmnkeh<.L`*'NĈFinh~dj2Xjl0L!QÔC65k~G?Z48 tJL u^K c@ӹO}C͐7҈{Àm)'K)L 3@# (f&7 [,}u#ǦD|9J&E 4Jc<_XC=J-^&T9P&CO"#%6Cn@N%yNO_TUbBo 2uІȃ" `6.S\;fNrMf&ѕ \qmjH{.cO =,wf0 n2Kyo(!߯+AXp$wtN;Jg3"\OnZc\&\?6Qtߞ, ` N?H_#C + x3}x>~ixEgO 3 ydS{L_h '̀JIENDB`gambas-3.16.3/app/examples/Control/ArrayOfControls/red.png000066400000000000000000000026541411575327000234370ustar00rootroot00000000000000PNG  IHDR szzsIDATXåmlVg}RCoAdjNlȔD|HcbtQ7%mɔ-&Ksq2-sNy:^ >t-;\ޯ^ޔ# EZJ}um"w>6x9>f$Co`J  ZqYyToKq9;WEs9~e# <2 F`3|evu&EĔx"kdy|)h/ld'Bي4az6͑ DƧ:ȝU~;wDnxr`3>Yeg' R,W"RF/-suiGXXCZypg0%PϚg]/3^by5=c };g /gK6P#fΞ|]s?KƜS56:,/X#t_@yZUg1I(rūݬ=.<@J;|E~ZV9֕ENT" i] #ߪb\Fo]NtDZ#ca& #7H" [xb4 4g-g=}R oxwO* |*2#cv=̈ſ"o-c~̝5HB큾IENDB`gambas-3.16.3/app/examples/Control/ArrayOfControls/red1.png000066400000000000000000000030431411575327000235110ustar00rootroot00000000000000PNG  IHDR szzIDATXí[]e߷紝L[ӡ)-4+PHi% ^^1M4-H# J4,%kj˥s33ҹ_|i)Ӵڕ}ַE,*k|"r6aSHBdʑ!=(` lFc4Ƃ 60"2-U,ix`_ Oל|,]RSj3TevM W.0+k|u6V`Gnj=/.T`MVc#Zsj)+"G1 EO3y q#<7sOov=(;)U ?}ԙ)cВKX,ǩ>[u1Ky_ډ֐Eqp3}Owt$قi K3ly3*@XUxxsZ KyɄ4~{ vH\Sw2?:mas@qx}_O| (/-.\-+L<@G6낅_֠E|de GzƩk:>Agi6X7^@ O@!Z*SG3qBՒGbXT~hɌ0,Iߋx23d79+lW9v4lRGdIyXwyOo}`k5>iZ W=ՆDP q~_. )KJJSI>W+j򱔦J(&o}$VKr&b2:xHa%_MUjZyo_O' i*9IxˁݛՋ9 2I *P=@OpM*rwPn:±mʹ{_x :X(FZ)/yB% dr/.:VӃ-Ak|7N8h{=J(׽Lg^:bJIC*iIA_^}p58+Vg[rI=_îGXt10'{¿%_F>g_mǚ1s׋&P<%iJJMCzF4<)E@፻ݯmޛ?OՓx51!7$B[ӿ| k wWGe1X8<7nc>^.0&1 ]J FSֈܸ9eoI|Lhn,KX+W'w_9Udӭ f4r۽ VsAvI2D`_6+1)Ř O ; &; q +EO WZ" 1 }UDzDy]tN־BM$7PnEr0zFl裦lxhh۷c!QTQ~#"<{µ>Cu !\|}]Z`Ha )#+T݃UҗUo Ӂ='cJNԓ?׎w纹f37{zjR"S#!-Hh7J~СYV-"BJ>O57jB%4Qf,SJ 2z9մy+.J,-8r$a!,Ǐ 1Mp*CaI̝PSLאS@yICCƧ9SXnY?5aBY8zxFkM۠Ivq9 ~%(8L&]'mg1A?]s+i(pђz,U\d;pشfhS/փtsҋ`BF|`_{/˪ sO˾=!3=ż%Qk?0wl=؞U˦ezy83F>v =;5_I!F I[$(f %Yȴ mAGow=1RʇuJXN8Ұ+hƲ,\l&h^"zE7kϐ㲀T] 1U.;o@ A)Q9G} ,7[,FYP2NYPCqU4BjZSpc;ؖX;FMn!9y:  $<εX`1Yu;H3ri?~m+))n[7*țM4#Zs NΙ wR0 ǒ,@BxcOCsܵN3jÉR`B2\| MMۿ֞.,ϣ86 ?-?-47)uFǼY!3:7֗ %S߿}|7mZ$CFZi!B}^F\ ?pe)G&N=WBEO?sztԕ'ڶb'>sc@Ϙ`!r @8 ~TP esc8 @;D0lwM~B`4p=Bx:Om%Ҫl~yD,E+G}|'ߧ1O[nY9AaΔn%Rjo/t."Z(攖Ս&^gRƻ4Y?Ch\0;rGRC;Qo3B%Jm8u3__2S0?ul~ lv/W<BG;IENDB`gambas-3.16.3/app/examples/Control/Embedder/.lang/000077500000000000000000000000001411575327000215675ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/Embedder/.lang/ca.po000066400000000000000000000036441411575327000225210ustar00rootroot00000000000000# Catalan translation of Embedder # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Embedder package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Control/Embedder/.lang/cs.po000066400000000000000000000030731411575327000225370ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/Embedder/.lang/de.po000066400000000000000000000032121411575327000225150ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/Embedder/.lang/es.po000066400000000000000000000032411411575327000225360ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/Embedder/.lang/nl.po000066400000000000000000000030441411575327000225410ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/Embedder/.lang/ru.po000066400000000000000000000062001411575327000225530ustar00rootroot00000000000000# 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 "Отказаться" gambas-3.16.3/app/examples/Control/Embedder/.project000066400000000000000000000006021411575327000222350ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Control/Embedder/.src/000077500000000000000000000000001411575327000214355ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/Embedder/.src/FMain.class000066400000000000000000000027211411575327000234600ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Control/Embedder/.src/FMain.form000066400000000000000000000026021411575327000233140ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Control/Embedder/embedder.png000066400000000000000000000050771411575327000230560ustar00rootroot00000000000000PNG  IHDR00W IDAThՙ]h3!,VH$-AIL !%4$!~SKH ĥ&}Hk--})FX%nBp,?(Jqky?~aFkɖd%.swg{]sse׻100IΝ;d>>zݭ;v|!FѣG/|GZ=|?0<<|hp{ 7:::]q J9{B硔b׮]E28Cgg7xgRIlNj===7=CJIH)BI__7o͛d2>9xAԶ0Rt3}fH)"B0d1??CjuSDZqm[o;|pO8LOO>B)%QTT*KX+t3DB`]\tr%aEjn"{y177s'Nطo_g!y\plp !PJ%1NXlyLKځcccWڞ|Z0ARjURNWWZk Q,/koR= VTbff!ZkRC>g׮]X<{wyZk-ժ_~ ߿!633ɓ'Y\\DJ0Ƭ"R(p]l6K6#GZneov_|E2̦ h?fqqc ƘL|>O&6|w}i""pſ z-O ÐIN:|dMAk5.Bc ;w$S,'?Gaj=vzq͗6X:lF*J QT08N 8@Ra||B@.cii>}cQ>}O[oea1~^uu]\%C@kб!g;&:8oە} H&)`jjRfvv|>Oj׮]3ؿkc@iPڠu4ʠ HRPFW R>+ԠF)Dktq'rĻh4(ˌ2??RBٳG?Y`! ZOH D `( ~4 Fc/pi EB CPPHP!/:;;fd2$ =#2*= T$; M$eRk+Jb X`BXZZP(Z$I={|EeLDІHcZ1 8q@i梔~zNdΝi V|Ib/` d4A(C 4B#Ug)$ƹl2MVJdʔ@ <a츑ݝ_i:+P(*Αwi!BEoVg@Zg}? Y(ȿCuǹ~7>ޛzOH!宭 KْZ.Ԫ۔Yu}=C!d7v=QO_ywvuL:G3vkcթ5Q l.%͌XW7_»W5BecR`spk3:3Mx:.[n^o兖pRqy | vDoHB_K[+}ԍ:yg&AY(4^R-+f#Օhe !- pWVSwI;/_Hk}ٛ"'s;-YYD{;yO\)+esNVkk۾~ _z>$󀬓l8ۜ<ɣy\^xted62OM"`*K.tU۶ H; nHe/@Ŗ#ٵM,3YYIw-P-~;'r`#W @E$s6.5;Ѓ=ϧ1KGDq/m$5O*p9̕d!PVb }I_\pp76_p3Yvg2 _/7fXk, EKG4冣}\hiO"zθu{-ZOzzJz !x­ʹ;slfrCXCSGKyh"ý6QiCy2ؒ+7GRP)Ac V4t $ =Y4 .my(苹_y`[1SN@9~ݝNHVklpqT0<\BBB`įnBwZ\}zMZw2XxDpl68`o!e%f䟾&#Rzu~2{T5o? C,ҩn?"6ʒ @zR*9cmB 74JZYQB% C1A>iI9[Xc~{ k 5,d7<~JKh(ICn* ,XkQ+@V V>i禑 +ُ@e災|O(TSUhle=O [p`f DAAAR)/% KPaXHqRf幢Q\-Ӿҹ5#:kٕF Q ǶQr˿F

NoiP Am.()[m\ٷ3uBʺI|B> ex G\}̻} JlBeN@ .$wxUx QO&>OD@%<堨of+EdBRB)P{,SX Y(BAdS{V%vo` R.7~WR-'$6Ι<$S*PU2716Vs?#aH;3~' a"DZm\Y=w+EԧPQ$+ݻypMՃSC`"3,$ j&a/2=h~=@ُ [x .k|Nm~ЈzM{0/DkvS@w߹LivQM ηqRoh؃s*^5SCP8q,%LM B;L'۳h_(ise`l:UGƲtëQ<)bf ǿv]ƕqK'񘃥WFPQ;w?ԭ[735P ϼMbg&i)/yػ9yηI[@Õȹ@3.6jI}l瑚t ܹG>!6d#n} ?#,+\]lP3HJ+e>9if")sioGi =6yvna-ʜ;$ipv)[e%3-̝\Όv~8˽HM E儫sN:y :';AorLSCi{km'D>6xmqqEm&59|B 7=[W'RSzJ.8h d{{l,|A͢^Xm)|; 仾~}N6QoV/.R/qdľAn}5Pqc?9Ƚ6%!h5slk1ޔUgһ-oEO3Ǚ}?L;>1|gr(a?/AϺJ}mxmW7k8X: =cL׍?yv]F6Ø _;hUZ|P։(Qů~)/@ĘyN{?#X(5qǨ&dfê4rmB}`:6^J=V_ғx)u6xmW~#-/a GоSvdV7ǿ}c"ߧWkRdCoFWc~i{'0Н1S)ĬrG0jKM>օubW`Ҟwpa-W.҈1ѿKush4bDꔘskZ=RO{3DƋkY|+zϘ-H̺Ű#xvW\ȇ奰,95ݢ6 y K%/6|^J^ө`KK k|jhg`MĩH̄1Qz8HL[͆* Cb*Uac /4p20O[X}V^FW!Y p7`kI[J%" |w\EF>MܛlPo1,:6BɋUO;z폳+amas!LyN^mO.㷏4p e\֋gD/+梗,<6<[d 쾾ԜB_Q댽ABe3Y7  Cތ]7Qj|D9ly>N[#Aq{Ӥ2$f%fwQMܢ+?FPP)O/)~51~\[KH|sKsp#YraNZʊI<+RQMiͦr$O,–BA/i_)ku^yք4"@d2`>zӁ=Tip:SKWעP(8xq7 I P-Jܩml ή`-R|qDF s5mYB_KhT%K,?1/4vKn5G K<bo}LЃďdCV>ch=vij @hcoe/@7Br=6uBV>v~,b23 tC+iɺăHH8Z:Uk+Lk5h۞&nƓ )縑qͬ6uO#nw5* Oo4EكS, uiTlqIGtD&b9%WSa=ϐ˛_S{\7 IBĝ8=MsC>j1 ?feX߂cM{t7ҝ\iղ)8~1q+ 'wKO[^oMܣxmV]f̷Z5vr%{6{G7iבchn,&!ZG,Tf~!Ο?#111e?@^Qg Z.װ'^g"X(-Ш, u '-7[7KUWf ;Vⰱ#-iW9xt+5nبp|N݉Fj~W6\\CF^:}͗$k?ꮿqlft4RsRY6]g7.q7]or1};s ϟݻ={T>5_ p!EI X>־zlJҪ]rzrfZB{ot]$dBzX֢lʁyz  ?Crfjxmd7KІ晶? ߟǡk֜[AJ]6ڪuDF^:N@o;_㚨)~ /G/Y:\p,<9ɤaƶO\e}PZ݌8Z[ckK'-/w(8|W+wrp ڮ Qt#[Gn_A㈭E Mf~KN|EEZ LNcVmEf~&i~оj,\z#GL-عs' RS.*9$־ՠUڄrPzha >]Amɿ7H܇zzpOQy@:++OF^8jz(.Vn(J$٪Sw_;$ JKn;Y[zg8i]VY'χ P9+7eӥuHHVxS(ϗG oG3㺭twkl,lIJRC=d'q+&^6F堶.-=p64sª[P/b4tnL-ڥN/9Y1ϖt AC=g;̢nT1A yPH]PjT^GEN\. QSw'~',fn>^8RR2KB8X:dgUHKG4rHw?ڜ{dc'kwfיľ}Eh4Zh޽{qʁDV>MV0rhOAd߳`߽Thp ʗ- *%dIXFc7z3,ĔQDS)ɩLu|cnĭ)?Pݢ؃ǽ[kW  %**iA |́Ƨlot– +S^o6y|6Jv_/Зp]WR/cKK?T;h)ʒ0B\w礪O[l}HL =pd`ᱹ4v"#IK#+?+uRNcOsmRCB^c}"ܣYw~U;{sgXzb ;)y+r<.g+W22رA}+ kT/~qt6M=]业J/>_+eRג>UJB/1H$IBP1HT6;Ze˖h4hiiI˖-ٺu+ǏU+ߚ)*. a9%=fЯuWOϳu 8[&x'*DqEDG { Ά[e GXW 5- \HQp&nOk @.5ɠ*k k%~ %̛&*5j y< KmrwO-RiU£siI{StRܛ҈DRѪp,b sP/~i{?̝wzRrRhJRDWcw'Ks)o $k}8[gCu9m2=['!)+g+ZG$%G?F5 HѤu,9X}v9@{tͥOA|o2.VY'[UQjGiDY™;'tA\fF+ϨXrBřhb UB"F÷ǕO[XsVIz:T<#O ,U4: OXd볹r?m3ί΋{fX~8Mu`uA6^39s9ɬ<= _;?l}Lʗk$f%JO.#oEV|{Kfև5gWzW$)p[ӇRXw'xxRϩۯVQ;JmMs|yt..Vn9Y€C*n.'+?Hhv_At46|qtf{tN39x734qoJ f?|#q+#Q>PQGW(ieSYxl.fLgNqu3Z'$DTFGybynfNm<&#ћں5:z4v9M׍e{=.|Gk=+jб+8~( أV7ٱm}PYV,CB^&عWgt o`燅䱱)~骤 ;[ɕ+W߁Xѩ ]$hdRN6/(|IĐP} OZ.9⧳PІz Ċ.y|(Uޔ%(87#10&2)=S k_IDO#׈r=Bz%'/ᥰ-7 BPn偻a.M8xK',t<=_B?"ޡg~*l麅F|@l,l8x x넻=zM쾱]8jh/"1Ǩ+8=+ ,Gu_!>܏:&eaX݊erx&5ЇJJ u|z` εӷb)j|d5"*@P7Clk1ɛJ ^9ng'14U:w.uf94 !d,#]k+DիWS9$dޤgi[GLW6@=Զ$ګy5ڊ7C+'J[3)FBaL!EO*szeT(2 j>/W|<>ׯP((* I1Wyr ?@BBZ;;;իZ]m=//ϓFbb"T;QW\T@ T+999 ֭[b`aaA`` 0Pވ@P,,LAҜ<ʁ@ B@ A!!Uu @U.(D9HJOOgA?-bqu:HM;wr AMZ|A- AʕL}||@ J|8~\^Npp @ (*Sz8vLV ě @ \D90 .ZS,$- ˃HO)`m]@0HpЬYuw_ TrP@M@ "b+@ (P@ B(@  !@ ʁ@ B@ A!r Abv]mbIU?۩(&)PLR0b2V,a-@P-9y2K;u҅I  EuwW?J(/޽s'KRv| >q{˦'{tgUHN֮忡.c~&)eNHbgbaӦeNil7a{[bySL̤$VgLR(8tilxfzz2Ɔw'#!MWQL.z&Hm6Avr2 ]O(j5Ԯ @^Os7oԧ[G2Ɔ*2]cNPWv|p }|Pwm2I`V VI  `Nn]|ǰ$~`_sr,sGVʃ$Ƴ[h0 vswk Xwv^ '&ar ύaе.0*seZj䶱gcӹM}PZp3&]v%5Ww3*zqkj'z,svYj;fٍ"_X~expv Ť6u EBb޹FK:տBcc5ޏ`BBaΝdsT I '+F$ _5+>Gg.elb"[[6 K:tvJY9ZmVwt4#Ɓx7mZtS$I>ssof&qivl-[g&Lx$_իXw`!ŋ97ZޫVq𫯊m?' &͖ϐJ1jAuH?O?a!Cx쭷4湲kJv§Y361mkL$,llxn6&H?8y)^}MNep ydy$vvFTU JeLgmǾ6é$^A JB6ܸgʿ=cvwC^_uk껀F{BEK/lfM4nƳ %1'K}l46hlh٘PPI5O;򊢍|}ҋ.?_JaaDyGe,7/^df-d\mJ^sJ!޿FyEqi%֜ZêxwsmWv2r"lОm&״a3T7.E/rz:F:UtHR\!Ej5* R._ιsx7mR.W)L+''poԈl~=i`YA`ٳi9zx䤦3;/ I7G>}N7Bia} )C@T=* փ x6 0 mFZGTW]aJ;V'{2v¡C[3H,[sX(@ zI5yqxn#\1rvֱcxFD)([ǎqTL֜7([=@U5o Tr+4!%`av&gLKf᧓ N%f`7,"R!L`Eh.V`ea3v^!x)%F˙_bSR$#SIzq+[b傕ɲ_YwiK%\:upveKRU}iTLϬ_Oܲeһ#}SYZIIТE ذHL{7mʡ (jvH+,ݔ%ϸu{z]bIҩSlC?72?'Oƥ^=J%;>^{/ȯFQ'uw'ɳOzbo> ȊMʕ+<|VNN>}[AҩSD:[[rʮ]7R>!zvoDI8r_n%*KKxFDp|J? ظȿd? Jլ_BTùsp(B:FcXQ^q'`%ư,μ5[XytюxΓ 5=[/n?r'N)ڟՔ ^36߶a剕feY:/댣֑!Cx9 fup'o2Ɔ91|8͜ɂ(,8kmXkٲL>Hcݴ) zyMQRyyl1oZ> O;LH-Yұ#cbG]>l Ÿ=zOP(F PؿW^)/7ƍqcNsUZXpm[x}L1-ozIedi3q 3gr9=1h?c891M+UY=566|^3KF;8qG?Hݺu+_~-@P$Z gOU겆|3}:EqSs_e0޼zUcigG/nъ'䐟ϑ#GP( r &@ 5*Q] i@PTrWBPPuwU 9Tzl4̈́{%I£N!@PJW!*pMuw_ TrR@-bB @P_H@P*v֭@ CX@ m2OVV @  ¸={ěVVϟGP˖p }ҒL9bWJVKvvP@ _DPT*Q(J㾒er 0 o\j(*tK&ʁ@ ` *%)A8$ @ (rz]W{!t>|u{.Ae' 10pt @ x*9pw[YUw@ E)`k[9u3a8F4 mv?024WmP* <FI0`5l6 z#gu;%A5Qe>7oΝw/\^$ 6Bye{9}%w֝|aH8l a>X}JNOʄ>!So8 ,8[/onw0ې+Ey˿_} omSI`#@ T?Ub9pv,,]8J,}]9 | ?A`y; f,.[ fz4 tXK| .܅|15 IVDy/6#^Vd @ 5*M?mo_6`< a& <M?XRQXixج?Lh#"®е.rFV ~X`G븛 փ x6 0w@ TrZmʺZÔv0-O@eS пak9OJ_p9z4uF'e_{Pw.}xlYDA*@ JWz8w\\dq-_J&onv$Rr9ns+  wBc G<\J_<\^q *DA㒼1-/a@ *JW iYQj!(<<*Ƿ||_rtrZP+aYOxe&Zւ# Xɯ>6t[r&&?JWJhذ{`G[Qt _56j$AU?[A Aʁ@ B@ A!r B9@P@ (P@ B(@b{eov]UݢT+wM'rA$,nQA8&]ӧWZSmmP0I ԩ*_MWr*a PL۫(&)}b 4to 1^ɉ~ڵ74vc~&)*/GylLQ*+oư&YXشi0Ui}'P%n߆St:ϗ,stӹ;{61ӦU(*rp Ԫ~~r /QgP{6@u>o 3j ̓4; j\AңU'|N)r WoYY2d-3k,r8wI FkI >bѥ&Z,j=AМ XSon=OFnY%=㶎y3VS -' tzdK<>So=xԤRjϮܽsO(&)PLR0'в‘[G? mGv~69XN_^z 3֭beL//~cZ^f&^|Lgsϑ`İ'fo7-[s瘤P0g\کdNg1KTg0I$%cC~>rrjh^&MN,T*fhO4{ @f^&C~T4YЄeǖ9aI})VԞ]sL#孿URV! UhNJ ˻ucM[_5kƧ>>\89}{ yy2nݪ_V\UlJW HK-@llEϯ$Ƴrpm.ru!v_Qѐ nTV!ixi>X} @Lh-}nI'~ ͗;b-Ywf;$)iľa?iĹ6d}bҵ^WνqPP-cf6uTV_!l oO7I;&^FEbfǙ칶3'iu*Ƚtz3Z'WK:տBcc5ޅHH`I5lvm&qivl-[g&L('nrs&&h9u*NAAL$w|$ _59u*g֯ʕ ۷NǪ*0U޹n]"#[X֭ҥMLDckѣKտ9$d$$ f?9V1}ҎIl>aM Wlݘ'z,svYj;fٍf`)Os-/ow%ER\wޡۢEXۗzΚEȑ(Յ .$OIvJJxիt]u3ƒxbcK5twUIInTB^|#zAg=Bj,<([2r!~Nπ=w5P790c7ףO^d끝e2Qя]ȽBzѽ~wn䫃_^qOWocKE-h{-]uE,~%=3vϠh^~?^8p4=-1c6008K!]롇-ۼ9?M#GOy{5$Dݳ'G,1o^3i~-ZܹLHӳ\Warh"Z.q?HpϞ,={zoeK^Y+qvep`^|A-[ppRSyu?H@((އ^!oY9HyڗHr0glIaPi44+R%o p%Y",8(oI΂3_auȸgŲ,ݲV8Y9NV^9иٸu 1|C>w=V`qÄVװ/΂ XppC$e&aoi\~4S5譣sWJVVͅ{ǥ ixn-<Û@+21O`B^Z._,*/_rFV$: %JŃ AyKz |Ã5 鞐s{-#ϐ ʏn6 m&`oYع$5'q}㊇l@v|w/\ oG[ǎ'8RFS!3E[,JGg+gf%!#/;/ⰳA뀕Ymw:G̥+bC栤׳f`"_z FA[Ss(vlvc@@TWZXhMLJWjVI7or9rƤ4TQ]w!=._zI J^à LL`<,NKe'SIp02e kpťdKt+Œ9P+՜J:dg7N?z(?'WΖw$= U*n6_{fXNK; Ww|srsu4l±[LjKjU=sy쿱=%U^vvO3{d q FccW^!e6A<Ȗc鍇 ɓg}D!_RUef*~ͣGsjZ? Xѳg_Q? iׯE@ά_Oܲe$;OHި*x%3Yrx _rAxbŬ;}Hg$=Fq9Hyꯈ9^161;whG ɓ͞C9))Z|Ǹs\TΡEHqeω%bb\Lp9"/+X.v{Ed:Vjl8Om||ӿ>.ɯ*͇eq°'!)2hY끥p:IOviQ ƲefՊCSRrR6Nu{m|*lⵍo7Nm&ɬg1zh4R`}ըWwgqXԂzT=H?>I PLR0zhEZ-PZ` Y(6nn ڲ8DDO"X6LH-Yұ#cbG >_|66D Ʀ#̦7(_+5yтRkLDEaioOY*pqA#)$ -F\BѬ*qe,c׫ bqL ͛?-jт=i6jTu(HP~Vt:]>}$IѣؠP(يB$ APzjDl@Pd''sjZ.AW84:4_,+Ud@aqL wΞ㧟ٙLחV|PbĿm[F9SbTB9<®6Xо Yfb{eov]\ǿSIhE#TjÌ35}:cbܿ^4n*{ PAn.IYMkOԆe/ 2?ĩkoh c~&{RFOiyǷ*s*:#F7.[Κ!ŽaC:v,uҖ/|ۘ1l1d&)d&P TITƇzJ"T:ב7ȅXPP<<* I'vlbM+u:;Ss2mN'd*rPݽw0W8ptNC~>rrjڗz?LX3Ǜ%}rRRXޭSmleBM_RWYY2d-3kϬBǿ<'fq I v_ңKiUSZWʲ‰U W>ܦM仴me~8, [ #ΝRX>˷[3ʊ^^;fϜtS,>V/ **9o=rvގKl<+?j0 vcol`&v-:OuhgGBmW7qqXx9Ja}u7,~f1dh㡸X0uTV_!l oO;aIv^^hll,0hf^;~oA/G|t b$1l>&H$ sݺxEF|[bϧO;NZaX5`Y,\HH> ٹvNjv%}J_s~i;,k k֝Y+;+d>w  ȾaV)HYDi MqL={2Ahg9~=lɩ  ,i ?}׮-n1rrRV-碼!=Whf9E!Mps- Aj,<BF.D=Ci*(/h/+B`>O/gyyGkQ`[hЃ ^3c nc HIҮ:͍o: Kt <2ժU~ ȡEh#={4YV=c6mSs2M#=>[OOS4&C/֦qs3پ94ȽBzѽ~wn䫃_^鱦Ο\/PRݴ)7X-Zd0dP;:TcgL|C22j7q穹s 3-Ǎ3UJ~7a~قh'GmU ۾NqNܹMT_1A+hJPT@wϪ`5݅n`g ?u]NLzn: .`ҒII)lSTRPal Ӈ e&nۖz]Rukڷ/IN5kfYe/_&7=o|2f\ 1L_xzl%眬HM'+[M?駄':_~ OHQ99ubcq +1)J> Ǐۼy_y[& aʟ򲫭:A)RM;UVB||y[ &ʿt&}S(myRQ°($; .ڿtmXTUn6 m&`oi:IM#LkОm&ܷyuxEEŋݰsw76hY2ظо=q˖֖ZZ]îs94Y/.l*P*(nEݬkHx1W"#IrQը,,H|;z5Ғogy6ԁ~j//Wn6,:([27ÆG@X W_ʕ/5LiŠ8 2v¡Cp ,`mQt]Cw- 塖C-l5\OΕ+FBiy& s¦rr"l  R̆ .*bF iuGqBE,ĩhPZX+]jΝ->)ToՅ8*jΞM.]ꨱåAbgϦv۶4̚S` ZG)v_ψ^ݺQ[7._| }mE-$Dv$Ŭ_Y/?֜7DAi9H]!;[7 X(a@ 'R(d<[/O.V`eQrt SOaոB#_y=~ʦ#z5򳳉[3fտ_;.AFLi -fL9y *,y*j;k_Ap|ϭ76oV'?-K['ߐ`%,u4hռ迪? cm&F=2gbigGiۅh'Է/;ط3pu<P=:ϛǚ;ox@z6IFBQ*JTub,,\Kn+}1P(P(pF[>O6}cCo^#u5y!!:~h)j7lao "K{BOWkhyT/~A֭[?3nrۼ9m?ET|3}:5T/($IѣؠP(يB$ APzjDlA#;9SkryŸT!4:GjU!@8&;gOuob[7_Pʁ1|A 6IJ@ B@ A!r B9@P@lbX|L rL4Laa!+0#6 )3R5}:cb fq Wfו]ΩS4TLaBwvM΢{RSmmP0I kHEP%An.8w>AѤ5tV͇*d*W "#9OZ رZh|ԝSiu|Wy7Q)5t?s?,߸tgo~ө~L>S>V5WϞ5BOÙ3PC:ב7Aܙ:;W5 w/P۱6nxyTJ^OLV=~/|}א*;!=<}w0W8ptNgO&HyHH`I5lvm&qivl-[g&L('nrs&&h9uj3헶fݙu켲B#Mf`@ GL>>Bƿ<5#?x|7i+4N'rfzoقսJi?,97o246/,2٥K֖ͣGJ/i~4Ƿ(&H ' M87R׹.^\IB\rŭs\:N94z,]uu eY26 PkHիt]u3ƒxbcLJ٨Qt mJl7csTά_O+oZU8*YV vrrÍXȅht;MŵmeeWYk6axlA@=@^3c nc HIβ}Ci|B(:[gءC?><5wqw5Cm~Ȧ#'<=z"ٓ#Kj<4roD^tߝ7Wħ~rHc@KwӦط8Β@C?xa̙;'63G~v6~~Gx8 ֮%@Gs){58~E-[…Bq=a`@K\B-Zc܏DDZ)ߖ"=#i/[/>>ZV[:\5ү!5lOt4i8׭kp0)WKGɟSu $3f0`&9>5w.t:QU;yyBzU#07x>hA(d{V; BVރswx"ۀ-ؕ!vS5ɗIMg,8PZrV2)9)%ޜyꐐIS)U(+ؕp0iid&%ްq[h(d߽Q5kȾ{rg+gHM'+\M=~J!h|9p) IF ̮֑#\=,ˢ3>7U NߎHv {O]ԫWKڗ~{'v5+aa&<1|C>wr?&A䦧M!/_Qzq5NG[XTI?k }B!> <ϭ`xh_:)<|h0, ~: NC /]Vj+,UEkfB [NRy1r"gb4m^:+F2T4JAE]j'_uЫ^\Bŋ(jT\̝s YoLY޽;M+u0`w9X󳼸ٸ>=ҮoѪsG-Z!{2ws(t~jN%`A݂TZRx3%\%+⑛[GO*Jg$hZs!%aё۶6p qqX87MJEfѨZ6$)}  0Zme4*9 ~hAcX:CU0x v ap#?N~﹵f3ئSuQƓo_t:{46><5X '0r]` u=Wbネlao "K{{ 2o3q"II,$*\U_YX+bd+VcPP*)h=LYΩSi&˛>c7O<LϏAX{Æ4yEkL1|8͜IB\[q,˚p:IOdVXIS [Od`@-y3~w4ˮUV?ꓫwgT(:T/iBVs26[{{__{3?Igȑd$$`Kp 1rIYʃ~uVh?L~*a@!?9LNh T|.iׯ7Zʢ-ٓfFHJCl5 5o:_ވ~f> Ji9ʙ3HѣGAP<$IB` HС|bc9i<%Kӧ^KNfl aRs ʦJ{_R9&_^FEyy|vR]Q,xq z}lɫPcp䘕@ *1®Ela%zr#V75B,+@ (P@ B(@  !@ A9 "JTPL!){R:ڴi' 'Ƣ.Eb[}D9ʂc%-|N^|Dmt,]q5ro AR~},"f?k׮?aggG˖-Y~}uU߿؏-۷o/6ՕJ r!IJJ*sb寄.<`? *yl8q4hD|wH:ב_+ԩSi׮7n~n*˗޽;?#>lu"00(73gdРA{z fBZЬAj5@ (/n9ͅtkk9ܼY];z+=%kQ I;促>bCtI0`Na;˛B/<@>>,\'''ڷoO^ރW\YfhZbbb7~yN2|pܰiӦ:tTǬVZmۖ3g2|p&L`L_{{{{922 Ghۻw/[ ///ycZLL ӧO7tR bzƏ':gyO`ooO˖-ΝCP`tAPA۶mQ(h iIJJ2[ܲ'|7ZmrYcɓi߾=Æ ё vYWQ\~+Wo9~FU' G/G) q3"t~ŕJ̬ސ͒Bo<2xc> M}|Z E, d)aH8l .է sᵍf9rh֭[*III5uV?θqW^e…ԭ[>XN8All1_ͨQؿ?9991,X͛9~8oz}Rwԉ8ܹIؾ};7nd˖-ٳ򐐐@iذ!gڵjL:׳rJۇNcX|99h4N*ϟ $Ib߾}橄$Ifkא$ mۆ$Idgg]\\$={ٿM6駟rAt:#VmFv}6W_-+9111F ŝ>͊~@0"eKK9kP|yy*I͑?\{@ bYB/rףO^K?O/nFA%9j8SN?4jԈ^zP#Gdʔ)ƿhذ!Sn]Z "Y.]{/ihݺ5)))t:_t 7n V7prrbѢE|4o?#G(ϟ?s5ѴiS+i|z=3f`ӦMhs鈏=z@Ϟ=YR7Ʒ,Z>}޷Ν/GQFԩSxɓES'tFF ,`Ŋ*&Pk@Z~rR% @r2 {Sux?d`Al&?$gAʽi{¤6p}4N=pnii aؾ};zѣt''' ,do,;++˘'88A \bV}aϞ=4i҄z;vk :DÆ BCCINN]yp?nTBIseiٲtooo$I\|Xo;;;l`j|˅  : .+?P>̙3ZZLr~7ShiO@Zo͹p0M FD9hx1h\[ pPB6=z +e) ]yl\vz6 C#ak׮]SOF$-[5EqܿI?**/orMڵkW'燹yρSyyy-so/5k R,)z*/m D\\qqq-\ g.sb|Cm|t̢׀0\@- maE|,`Wx!7WШIޔTy ,` ,r[ \O+)V;@@!T k+K7o˼{pĉRɓ' VTԪU4h Bӱa Tc믿3;vpppQ~,$$UV!IR tBOSLQV-lmmٹs^ 9 i4K֮]cǎv)))?h<eaݺuӿG=g>}5@ rp6$&Bj*\n_vB Kwp2 .~:P+姏R<*T'$zBV|r~ ;RAi%ȃ)mD烋&M>`Μ99rĸ&P(pqqёm۶s_~8ƍGϞ=3/+VpE:ği\7˗/}vƌ 4i1mȐ!L<={G1dc+˗1b'N;֘ޤI6l@ff&7odf˥Rx=z4k׮lذ={~~~jVZEffM@~RSSKuȐ!㏜.ɯ$͇eqrZ:{[@lTLћeg(S33\MkͷVcц3WrA~DvF8xݟW^y9s(>fΜIXXje˖1yd|}}>|8oF_O?%22Vk|UҜ2e !!!tԉ-Zo}ҥKbccYzuoL8-[ұcGbbb棏>2e∈',dWqwwLJݻӻwR6~x ȑ# 7 00Tu888'obccO?mgƌo899_~e =ztR:wĉy7 ݻ,[s8pW^1y>K~R/AyQRn yuI jή_7@٫ls5AFNN$qQlllJ~($I"== W( i !!!zxO7Ю#@(B9J%Ǘ/(=Ly{"lDpeIDATTF@ ʁ@ B@ A!r B9@Prz]W{!t>|u{.i*D9K.(q׮]+n0x뭷prrёQFZ 0@ JBTË}>㫯gŊ,^3gVI`%ҫo @ x@|CtЁ`F͓O> رcYpa`79tV AڪFcQSwφæէL?p ʑ -`Bkٷ!=WN,Ge*@@`&䤤$@5۫W/ 1nbb"vv +#| r,{@ {(z_W-hPؚz@p3]vO3vCPx=Zip,rैu~ >Bv>F$+" \j7a~Xp;"+0F`@ F6w|TULI=! AR@@) eb+e]SkW: (EQX hB%Z!= CB2!y/frν7s9{h޼9z%x;nmX#p[ 'mk7[k RsjVNdnոNPZd/TWi^pgP5 Ӷ_TS h"Btۃ.^X q˖-i 1$O} 51{ ^S9p7D70Zb4L.8п ;[Y\ǥ~U{Y1 RBafρ=wuvlΝy$GU??Uw%\(T}[wi6Ư~:rk+\/~F|ҪK;$dЕ|??= A!jB!9栠cǎqQ"44Nѣy뭷ڵ+|꫷M+-Top( N>M7E L>Zp./~uPwڨTd]ylHʄJO=ax$5˅Bqۙ$8طo={z߷o_NMr/2<-`Y M VHI1)6Wwi`YOxūksx.JmߦяBQQkA՜rsX~ΰd|?\5\9&OCn S6u%= K 2\Jp5LfO 9|7!Yq=Dk]*@B!̩~VT*(;|XO} 51{ QƸh5j0Lޭ #]ҿZ_K o c:5,B!nF *+!) ll 8i3=ay ^: = \q&_pUm9P0$e.6j JR18ĥW= ol\`Lܑ onU ^з9h(Bne,.V~eeFV@ͣՂ-ԷˆH5vTJLV}:AQTEZ.L :B_U 0$\ ;ҡSSp]#mawe\>e0' TBє$8χ.]Ð.^T_Akk$SK~ֽ VR/A*mzUk>W:(.VL]-,ήzr-XD! es~>$$TOLTw66.B!$ 7 ! B!0 B! Hp B!€B!0 B! Hp Bp,;G.YשoYYOsg赨xi;Ly{q8EwYhѐuMg,ŹiwwIbo6,:w&yJ-/ ᄏ37`oxxx{CfmmoN\>{wK'N9bvΊ ׏~̝:+*ziwwIWW5x++pp=HɆ9;W7Ö*t*l`z raAP/| ZՐ]8UƒA={zMt^zh9_xËwȳڑUV1}tR.h c=2 ѣ'r.[fMx{1F xs,_@QY\Z1xFD֣Ezqr{[ww^ ǓjJBX]3 ' kk~WV_Ϗ^~WW221m?*~:1bzVV~wK|y\?`3h֚1y" ˋyWv?>>v:EeEvHߵK'N,:G/U8_,C+Z7$:Ë_dXٯ3w}-#7on9xh*v.8|!k."7iy :W M;N_YyI}s};OzX1_@|%l ih f 莰q)Om k:\E1lpsп yy&tR?yn՛)tilO@VQC†J}%qrR ѿM<5W&t@Aig`Y,?QGa"#w>fޞyhfhj,8'ܼiz=]㏙W4ofsCf^7,"zS[y [LھC=Εߧh&)|?XF4]5+XYǏV _W^ ,R >A3n=.saYӺz>Qp`SS_tQ((zS3 {~ق4`މLdOS9q-[@[^TPANI ΋]^ss:ugdיyq!9akV}޺O> @ԩl?>g07Ϝ ;.-[rpm uBٳigh(UJne뮝w; {mr~g ퟦO{.v?[tgY2E cd6&9~ }'YnuB,ml=~9NO8hѠ+ǯB_Q>1vɸd|O0o<2ڼ+˒ѥY"#Ԫξ??^~֕{үM?}ַ2Nc /W+UwHCIfR#6lhrW߿'0jޛ(wk''(-go.8X~л5hs@~)dj ua/Qe) jCg ZPPfd68)(-LuJ~n`V,+#/#oz_!,Z;ҲgOߟ4jjNj>̃vkMsMahP^e/$s& B#;z{jV(,R%fl7d 7:݂8ȏ'sz^._Px;XΥQظLc}-4kЦ_?^y /(…[vH8͇Էp_sKck.?++^8BϺ^_]L1 'kfޞy0{ӹ7^vrjVhj :; nwI_eyyF_(bO$9q#_>|9O>ySfw|U^^n՛ l,m.ZTנT+ԫv}}57ca_spIya+<=IZ&M~\+I]kT?u+q~QUvuثYB,5|I.xx[{7^Qp2d#$ejFn\9RsS2~ٓ|!ꋦ>884½ oq2Zfuwv@fR6..uSU*jêWR4s֝K/YII8Z;bB{0VZ+JT| '.hwZZԬF?[77"|'ٙoXr[¥Qǧ.a^a,JXDZ^zƅҘD 2r3߅`$#/̢L/$cƙPP}^eLiAAZ-t:VV7mc|s9rSSU/$'7xoqmժAm8GnTG< X\&"(+S7VV±c™3ЦͭmJ #"9xwʂSu:&\tU}WWNT)-2jLw2#ll>l o<8vaF◷㮻h~(sZ?ͱZr80'+k5FuW]rӘT:vol,m>$vSy'%-A~9xy;,+<;a?;~ `TsrH‡ 1Xsh--9jmW,nN Qǧ.:cή9,}16mX}h5}ޭzu|icKzn::ո'OdeJ,4>ξiK}vHt2<-$VOgt}ulm .~zotYYaɟ~"'LJ">.H]+>c3w\0Ip ]N9 ,l{ZOَYj-Y2x G1ظЭE7n7zotr> lLUm[)bq߾Gk61ƅۿ͊5ne,}0|B=Cy ܾsj׎ڑ7i;9sLJ"0&_V񳲳c̙\LIёrqq{X9tIoeދOnō/1Np}'66ogc2{_~anfxua?+jo|9= nIkۖGT{v—qZKK/Y†X:NDƲg/\G۶4ڏEiq?o믿05k0lذF+|ֵ+=akQ/tFVv]?Js]bn&e9r>jݚ^gΕILLFSc^04 WO=BZV\mtiI{Βhg=5CBQZԋPC ڨ97͝&O!0a"T3}dGOBa@!B@!$8B! Ba$w+AZz4ry9DG<lmn !z&[\\/*0cօBq$8puUS~~iiТ4on !>!H*hx5ZjV0HB!0! zHOWPXGB!mz/xxl .Z!B4-=8ֶw2B!m,,._DәB!ne,.V@Qk`o @F88TĠG0 !MI|HH~E4od+B!IqFn] 2wqBQB! Ba@!B@!$8B! Ba@!B@!L>.B!bࠢ X/*Rﯽ]1'._V BtV|HH~llsW$B$ =O۶.B!!c+!€B!0 B! Hp B!€B!0 B! =1|;s,J,Yhfh*2.jEzcFޞy4:B;I֍WT7lgg>AUXxrp]77> לEYYxƆΝt[?'`0iﺺ2ٙz˵(xu !ĝQAvagB)̇_R9Kx64(cp(;zyC gȃgߧ- ~-0^{AÇ~ȊVbtٲ6dT+ǖ[c㱍4v0 ½ѣ7}ޞyU,8'y_!C};ss>kVUY8wO;OFFd\q kvk~=TN\ROHH2Cיq!9akV}޺O?ÇgIZP?aͻvyxٙgqXu?_fe-cuxGF5kjYUelYvxap>ާjL(lF!̧Q2T뮆kQL 7C֠悝en ^p/\`ACYWlx̃vkMsMneSU!W2K֛n뎳sU-õ,hLroӦ국/] '5҂>֭298r>1'O޽U9}NeYaaUyWƬ*(njm@q98ޛ;Bqۃ 8sڵЪ$$!p6S}aLGהF,r`m Av-8BϺ^.Q~QpoêUUvebjiWg0n՛=soQkix\U32p9`Iya+<=IZ&M-j9IZUNN7} .]ڃBuW˘N&I!n{pPYYUf>{$xo<B=oaPXiUåbK%h``[Us Q~ F(ƢE奡aJ*ʪ>?WpT _p?u$_HRoX7[7 tx IdΧ]6+,-98};CH/8wT:v\HNJw @keEɓ8tHo*% V5O}[ø(hƞBg[PTÙ<h4굽=X[60"RMwwBU ;ҡӕ> +ax >58khцՇVHGݪ7Z>9u-'vڸr:4rNhd'Ă\*DGߎX[XV݃7NmvXXpl8K#":|>WWWNOoo SS@`%le@tl,{ϯZܹ|3r$©Y3‡L|QUvTB4_~Ë֚5k6l&BZILLFSc^04 W[A!Ɠ@!$8B! Ba@!B@!$8B! 0o 7|jLY~a de{5Ȣ^1{vmoϼy|1{6z2U~!Iii mhb52cn.h [.kn`J/c;ܻ:wkdsIIR@kQ qg3 |dcG5}|~j6ܯvB;I\]e!UZ vvjf9sZJ6w0a#ğ"ᨎ+A3CM>2lVH8Vo-p\}Woup:߸<9D{K;NxG]uhG` v3ZŲeVcRQuq?FBIn.K `=wFu+*e3Ky ЪU,nf98ky҂3C q;hV?ƏIxՕU+0CQ^lxE~qrQR֍ÿ»o~SF%UNNρ^eClIU#7̐ͦB/͜Mp<^ b`GV/;8p3d+;}np'9ԟLz- >!+[Age*bHV>#S$n[Nn .>62v3 Gy{Uw~곸;w+;;k1~B† a\eYUigw؊޻ggVQ^E ݿl!ALR饗(d=7y2 l_lּxx9ZXLywn8Oҥ<ʅ Xt叏֭Γ#y}xD4/S9q!;(( +}hP:uv}}t`ڵUӧƼ=Dt|Y.ԯ_OFl@]xhUetmEA`sۿU[C};XXf|#MmQL 7C֠悝en ^p/\`ACYWֆlx̃vkMuH lj2!BIOb7*8OɆ77UZ0. ne,.VΆeeF.^T!;ΟJ #"9xw-T I#:]eP^ #Taq1g^C6>G>BVjil91 /R%:vš'gvj‚{'OfĉXAx6Ʋq  :6=W-w\9yyԬCr&>ި¼mxHWj~^JOǩYzc̙\LIёrFvَjBik5k0l0sM!())Aד=T^OAAaaah4V^Mm1 B!€B!0 B! Hp B!€B!0 B! $8xwΎ-[[oQYY,J^~epuue„ T\3>B!<>y͚5;sQƏ|~)K.Ғ!C+b !:& vYk׮ٳ*8cĉ<+,\P! -}rrrpww#G]ͱc7wBq\ȑ#[=̘1 .(c !MIk8p 111ieee4o???Mͫ҅B?CѣG|ͪ=<<x"s`˖-ibڴifMB!lLRspe @V7oA=wuvlΝd !:&9xǸp.t:BCC=z4o]vҒ>W_}eB!D-n98(// **s222x饗8s Æ CO/B!-:j̙3ρB!.[A!$8B! Ba@!B@!$8B! Ba@F0o 7|7?Р/Ue] zbٍ=5Cn_k !Lþ}};jIIPRbb7 pKhڸ-R@.~:w&yJ-/<ӑ+IV__ppbHI7W`o..pt VBєCggooήNwu-UQJ6w0a#ğ"TTVϿ243#f`Lgy%`6]Ӟ{O4t8_Ϗ4jUVq6o`7ӎQ,KZFiE)^7.XmMӛ?kT)tfyn^o__f;;G Z»fﺹg(-(J/=66u̥' ]V?ƏIxՕ]ܴ4>mՠ%Uc!ĝ9(/KI4]z=O/ d> ^dzᵮ0-vAAiCA? yl Z8CF>>l.Os?oZ >|CV<˖UŐ!||%GR_I8@\|mdL1=f}̫pgqv=Vvv8c… ¨۹YҶϚ+w/6ά1*(+ ?OmBl2*}K/Q={od,0v}*i2,y1hcC ٷֿ7f7ڿQ\}~=xy΂GOB٘^T/BDv{n(,.` :kY } hʀC = }!C5}iȑ<A}Nc Og"SʉKS8IQQו>4|(:SXZXc>>:0lڪ[Sc"bp:>,IKW'#6ly׮<4o8;Sp,tkX.̙_LҲe _H##9fMU1ۛ->m~Cxw"&\o }-O !Lv{,JI?}fw\m^} 5(Tp(Kې?yn p2&O$vc,{O殺L]ĝ!.>W7ʗ _ҷu_&%tw[w}je@kde{6Umܸ|9yn5IMח8y2Z)@t* Z+<*80fWEEq# 5׏W^_Z:$}e%iixEDԙkյ8k6 JbࠢPAA.3$Âxx[9T V ~ni Wh8e쿤?,쿐m:b7V ũ 7J^ū_eW.vJ;vuoO knVc:[o׵[]?lČ kiXҿ?m~G ;OO.In~ +kWY;90>Us0}ۯϥ~U{YId !LTV[ml Of>{$xo<B=oaPXiUåbK%h``[Us Q~ F(ƢE奡aJ*ʪ>?WpT _p?u$_HRoX7[7 tx IdΧ]6+,-98}{U Ν#75n'ҝZYs$>>[q#¡C5hQooUJ69jqQ,=x&  ZZS+*-Wn/*R׆YiaD~;P󳅪v!)vC+}t [!0pW|k\q5ſ/Fƣ 摶лUo-}s80[Nn!&0[<ިJgaܹKHEN Lg ~.9b8dPS ΃[0e \.W啀0v7.O{N!?y??ѨeWZEؼmL;F,iV2zh\f`5Oor6QjQ^=}W_1m۪ugAǎvq᫿ [w [q8 !irNy95H\}w6w_ӡj͜Mp<^ne~szyC gȃ!O7[[fa&"3V.X{te*bHA?L8lx0Axl#c:8y{=zu3׺ޭz3t G??th,,poIyfN܃Y9l&NdU7Z?HÿvB60aBan&DQ#"n..vCa)tiA pԩ_˒`XlAnkGC`WoCG_0n}'##G285zc;5x?Li*'.T)||$?((J>~),-]G:iݧOSxp|֭]+Èh!n+/ksx. ;<0B4}&*/U_ %x;n k.yPV e> Rp8!E!-0 ZpSeL{$xo<B=oaPXiUåbK%h``[Us Q~i|wW^u\p+TRVQVs2(da'B2zٺLgx3L7Y.ΔTKO1^_HNFkiSf;% V5?}[ø(h@a 9ʠU+Ղqw"+-Tob~P.$eŽtta4.Jc<9hxa<z VO{gf-a끇6?ͩSh5Z>A ~/ѷ#l=``<oUsϑ/m "9b<ƌa9d&%C7jvTBik_k֬aذaΛfY׮L ΊBԪ^Obb"h4Smz=hXz52B! Hp B8!;̝!0+9B! Ba@!B@!$8z-+gGx80>i?,e?n`,ի?oLw@85`0?9gey(.|| W:y.\oo 4n`!Dfm3S zW;WܙҒ;%%pρ%KgO֢|C+"!Zk4)w'3IpuoF,eK˗1h u Z$+G۲ }E?^e#_.o $n#;I:tpvVސ]^^*=7EBIɆ&l3D| 6oLZ*0~ż+ؼmC}KҟX!-;̴aಁğB_-Sp;3m '>Zע^hfh5WJ?YvY!y*>s9aCNTg%\ QU?2GFR|K_oQ [qUd2ן+A3CM>2lV(?w< FP.toAW2>o\~J+Jn4.]~ۚx79j!=htopzljx'u9r}Ŏٳ'~ڶzY׮ytl_(p}RzbË/wFc[ ロ'OF9(/W).VSSz=O/ԗ/͜eH|֏J=-'_St dEYٱZm7_ɹâG~,v>3(6@wgl4=]D)Er+3 MS}ؙG??tXr~}._ w&> t`<`/mӧsغ|]Rx~=xy}΁<n650O5&tQی?yr^AaO\|mdL1=fR,̤^hx1ȍgGW.\@M|ҥ<ʅ Xtl5*퇗_9ݽnξ mS0(9@.leX>ح4eO8^{l'e&SN;v<\9>)g b A @g( ?>Hst;<@~I>7zhP:uF΁ [}Ժ;LJb5ロ3{grv~tiб5g _~ɨ_~ۻA֕X7L]?ާjL(h>m=^b ClKƗT)||$?(Z <<9q7/|;ȍg Uɓ[7p!66&Y>t <ªMX˗9 [iߞo%ȑV48(/U_4//U[PTǏӪ)Bƴ(&ݡwk^16@xGFkmm0(.pOs>:KԂ\ux؁?1~C‡ǫ_˄/ۺ/Ch0_m̃vkMs@;-rkݺkVT[PIw >6:GG._R>ө(-+<*34@s [dAE8kTڐp kc:B@ 8xQ,oGѢTElkiuOȴpnXa|i[fzpo9y#kuLnZ9'OʊT265Ooҁ;t.gUAf!tN`cY9pp)/SNoXW7ʮ]L>v>;QQ_YYc%PaoL#0IpPY II`cFE+x`zOX킇_vkZAj. Qu|A;h -\Zstir o6+gqms#!!CZ쉅NǮǭukl\ϣm[|;uqq,0 ;2$0% VqW,\:GotpH%N*lzlx3<9.$bHW^7)ȍ`LiAA?pd85kf0OUwSƹys,t:8_.$8HN2h o젴T=]=NR0+-Top(K?|8?e hR &;V Fvq6_7{=<fwVro-8Y9%B708T \*DGߎX[XV݃4jq1g^C6>G>BVH}ؑ+6e %yy$,ZT;G%K gNcikk0zZa򵱰&bL?9Y6mj̫hEcm]m-%"T!:,,Tñc*Pm!Q4|`KøU/v6^~|'.ڙ>pi'/\G۶4֭f]ppr44Z-ͮh6m[.^>:ʗKr3?,f3uj޳ןmVM/ECtY_}`*]^D7SYF6Y1w\nBGgڏ̋_$vc,:K|;1 17ϑs s5㮻{qXa0O1c9gIIne>|(#"3Nzooo2337@Y0k֬aذa B?r>jݚ^g.&fw ;7#g]:x0&em~5Of;JJJTy++t9995 Zggg\iYz5&QUp,}1vgPV _$@ u]S?Gz{7/]=p /<@G5 u~@Q) 9p),i?AzzvBLjh'kϑ?cqrRSqIhu.c B-Ds!nvڈ|F~df!.==3gjVFFOn$8B!f͚ŨQH <쳼 ZB!?˗8q"999dgg3qD._رc> B?pOӧ4iyyyL pwC@{^/mZW;Ҡz<n׍Z8CF2)f wyBVj]ϯ{/oY # !$&BbQڌ R4噻œJ`~`7! >A1ڙΫ ڄ, Eڀ 7vJ jcGC`Wj8ݎ9n+A\<|T`a`fB 0p͚5<裷b^_5ETMB!\Wt̙3$8BOѠh4XYY7Zm~@Ƀ^ϙ3g@IAhthZ Fee% |[#-Aff&ӦM,-ޯ R!hXXX䃃⧟~ ,,,"88J"kk߻7$sgM]ٻw uZ\y 'jaeee)QjqXZZV]#ĉ<̘1=z; 9Bbb"t ;M'B߹~~~|L8)Sː!C̚G^oqwwk׮sY.8 !pB&M|3g5] Fo… ?~@ڰBvtqqaΜ9,_-F_y)))1[B?l&N#vFftphh߾=۷';;[RPPP|B!믕=Ç3i$^x>([{-[ԸQ!`ر\xٳg3h sgnel֬Bz4wVe@ŋ&HѠjTVV;;BqGjxxxbhZqwwO$OFBƧh06* ϐB!Dzի͝7!BA̝/!BtWB! Ba@!BXf!B&wc趒IENDB`gambas-3.16.3/app/examples/Control/HighlightEditor/.icon.png000066400000000000000000000431371411575327000236630ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxK$ۖ==8ު{i*$R`T#H ]0)?̘1bGL`0A H jT[u=y2##=0-<"#22d_df枾^6d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&\:X,M,S>8_#p5XC>>^ 8/]0~y>wg~Lח_^|4!,KBC>ZikCzO d{Cy>*@ qBttp׏Gd2pJOO·Ή8]9!oK뎏#zg \O/>*ya^^(^NwG}=K|rppQ8𞓤MG[/ }ǯ?}p߶yWqe2>yyB~P8[/$?LJpEbz9&Uǣ#zpkT_O_?q<7Q,{<~z#Xo$8N2nߟ%@"or’x*;~i>Z/6 8Ao׋rm aq[Z}y_ r|- H,gq_ |Ĉj_|ȜZi~Q|ORBu}2x' ."N?z XN|_c?cd| @>x;[i.4BCDDȒ3ʩ;^c>~a! @"$9Ϟ3ra{/>vHdR>{ `mj=Z Gc?lH+"p1/ ^ #{Fr}ϱHd"_$dSkV}!ƺ/WkWΏE;|}҃<  H!:/xɰ,8ܾH7[ʿ."K_]m]j6<-S<"L&>wt?‹B0Zϱ"8ʇxmyHk!ϗ.``&8S{$u% "дs-9'4{S/aZZ~1uBx?qJW[_ڙ'+S9aUhDp4'8:?~z53F{c8Iq|0CbEL2YO*0. V#~ )BbGE>Q2a(dGe"<BHbq?0c ?)TS*YT>vk7x˱H8~8Q3R嵷˄Fi&tUcgExʔLsUY(Bp48 }ɓdk.$?!CA#Ŕ&DG~& ŧJ&uYP<'3:)xwHe 9L7oDe#:L'X A"ZxQ?@hώo()P2qQYR 튕 J0t|Y)ġ~sNy,-\!7|'~.9ye2Ƕ?5tl-ߟ-x,@,}?|2H0u񙟃:'s?D'LiO8O;8fG;Cغv&Yy6Tpw287skwofz9jGm;Rg`{}f2_g,xfs?"?JC~n0<; {{l?#~_庡7ApC[G̷>D~OYH8Vx]X!M;p͗L擐-BX&xh\)9OOd|  ?о%c~2Чfy7HV_/f|{<o4_[%[OEx|O}GO$BeQDr/-h ~d2?V9|.@& y<> 3zǭcpA4fo1֬V&sV؜ld2Ϛg_W^^гbk6XRJR?mfcŊ4=+zy1%M򊝭ف.XkB`AgU}S!B`m[T+P0xcy)e&hc#*⢙!sXkq!T5 F}_5'ӟg)G `eYc(cLv1s p$$5^i?f&c+.⼛M,cO|?/Bx-,K.-w~<@ xf Z $['+fc(5fCQ̧9G望>^)K?8>B@K{B;/PglY4F_U͆s)d0 sE!~J*wUbG!Rȿ{OZ3'篪zu1>%]!{OxRے>; ->SŸ]N%N7 ]ױ\xT"J9-]n$ZMp}}}d,J|  fa֒1¡ ~vWa8 ncS !Ѥ q*|T=QA0g? ܥel!nAڶeruuś7om{꺞yY0 6>%H;|i1I6Hc\p\+]*I qD7%Ӻ%P|}5͆mo^+...mw^ >s>,GspPi0> ži#tċA㏊%*\*M)TQ MG $ ^i6!*fׯgE-zj,[g>S94FD7 Z Qx`>_(dqtO]S@zQQs !_LUD ?c'R7#x-MUA$񧤅?i o$ T#y?E:D20(}gJKi/s*՘+=19@a<er|nȲQc1H2i,xK2HU"+LZiZtf^6/i /*8& ^SZQ?+8UIu/@|ܘLV.:JZ/s˨wZhӆ ! ]3/si?ñH}9 =W|yS8͒9'+/DjZ'`,C80vQV+꺦T65PkLiPZ[hG+j[`dF~!1 rKбD8NB̕}O3 qBP?/5cp{/ Rk$)EX,/7OH=St;"*(1GJ,Yj}jDJϧ{ 4oCe850;}X<<湒-(qS_Nї>s<6i,>ڧc@Zgk#Nَ,prG/L*\"8ec&]iޛ^cǤ,}T T hai!gY)Xx.mVY~}x;1Ϙ|[|ZE,{$~hi(Y|ǏQQuj3"1Ǒ)1jJy>M>#syRN%p*-fmXy9x[])JJE:y*= EInK$[p/H9*)6Z<.B{m2'+;om`A*qH b{8֏{>b+1'x?=P*5WI|HR }O8*:]?nBlZ`ꩉFkf< qڀZuZQhI$f@9htq:pC x ZP냚7Bz rm: Vft]sVQ?qZؗWV+>1.>\̇Ab,\mh{K}VfUjVf]ygh { ô=7]`{z"ExK<࢔Wx Z;VQH@* N>=Z^V#@%Xnn;o˥ƪ~*1pS}{\gD @xc4A.8἖\ZA%S_;U}ni{=H߳֞+wkƈk/q!\{.\ʐ s};]#gӒd|X;.4 5_quuWt꽛a9{t9 ~ pYvpwݮivv[$@PR J/]`;﷖QE[z)Fe U=iuOA ۝m3vg)ВJi!oꜣZv-ﹹfݲ7jD6.`q(>\ hneؽ߼гa {J e.<my{㶥R34J=Ľ&tav;޽{˛7i`cpyy f8J)犽>t< !t~ǰ{!80 ౝ+qu{ڶcٰ^ol6Ey4,+63ʲ:Zcs>9@|wo 7Cp 4Xbthy -X)MP2 \[ "[ "z`иG ܴmgQ_k :PmՠonxsuZy^몢Tte@)yw ݻw= /..d9[d UUO ?MNCCrs- -(G=ZXk`{cFI*R i ޏ`=J9 %(5Fs }OCtFBEKMA ۆ펛L`BIA\9`J}G۶4nu-BMYVGc1qKY e #[vU)Ŧ8A~oA /j-1ZQEYP5gay-8ߜq~v9\Q[0-cލ :DĎCqCGp?0<ı8Gߏفiּx&8?Y!OfnCJB! @F xtiɠ\Yv)c2 !ttj? aV_ a NMq@}n3=g (΍J^A %ll$@>>:0AzX.2 ӈUU .rNAGn9G#0%Q㼂:3ߥ҅VZ sLVh)YgyĩJ@ᢀ K? 蝦k6|?Qtc`ZLy>-H@}-_C_fMVq[=@:6z~Ed[ /A͆qo4} ^i^?R@%TRbfpk5EJ$rc<{55"&BcP݉a_.9%ӿ>PbAyG#|@#(c) e7PIKZx\ pWA0C>|I+[Ag I cO J6j꼩Xu0`s.>Bv~BEl)F!pwZ)O}V71:9[+ mA[k{@h[I:轢64 *HpO ` @QHV0EŪ{ fG2#Q6h]`L1%ޏvopqunGSOLхɥ8?UBSʻcc+Tp{~$x4StC3zx4r~@%VJg dmh:m04INOJ"08?'aA(!0jVfYڜڜSw{ojtEf+࡟thj8-+vh?֞#Qc Mzp!Qc%(2#Y<h(U`=+g9="^| mf] Lso-bCh^K]Ͼm.0Ro`eFRUUYl6kuE缒APQa?,=FkMUU...tjNI9l6X,䉊$ ƦV(^rX~+|Qgp'Y<%\/*zvm˖oGE Km*VXWg Jp76{ʁ+cZnd [] ^֒RSmRPM/*/g/jɦ Hq}~Yּx>OX߿#p;De"|k eYߪ",4-@{o CX Zchu2JK*#9[k^W>_^ Ay)xYIb=uQMeXR~Rk6)8lE)}u\ysͪ.'Oi;kn]WbLV` e1W\y !0JRW| B݀PUfff(JB#ǽ8GT}3]ЊuU UAQH 8)0j[MYVhB%ez56,KC]c(5 9YaѴSOJ Gb̹S߈@% Y;RPhMUTUA5AH FE9JbuQ R"B 9$G?VimJTe'k q*r?c"4I>OVD %%ԅ.yN0vl!j _h6ƞI|=Rcr^jl.KzIe. 4Bےw_>ANJD$sc'~~Agq?=.E!R9:OA~KrK{8.&{*q7 S?_ pSb婌 ȟ݅/K x?[O#~_ H/YP*(>v~y~c7c6( mEe_yc?Z[jǾuOa켢}kڎm;5]c[I^YЀPˁW5\~uYP/q07="[$Ώo~x?n񺥒RX*iktу҂0ۖve^Z+8OTtTFq3Hv$[z߳k~G C]ׁ 7寻!$k]K GҠiOttMC\w\.дK{BpRZЖVBaXݑ/2 s'Y<7tv]A۲ZI^V+I]*(u0 o}7`=t7jR(4Hĩtui]6X $.8:fǚ~v۞ZKvV# NR: **8 XY J{ @Z)l8tr\hMi.ǦuU} ˒=cPEvR={To݀Gh(mX)(Xj6$f̸₠v;+_ pYY+ݎ2w;},B4]S-'Z77 8 A{*(L6E2.Cvf+hPR8W@pBxQH֕⼒myނcy4F_뱵xQQƵd?|= -bmo1EhI$FKSc(jd%KJ#j\˗h^џPb\xdSk.7ƶv|S@,`dx9y8Yx} ^Ӝ Rigc_Pl*Ū`Si*#1Aj-ahƖ`xix2TFՊB>Xct?nG]GA3.//gRɳHTR`' ]t__]`RF~ kC8ޝa~ڸhq&=}3shRd%K:vn~@d-QR_ ~B #|( ~d# 8pȿeXЌ y3BރϢf@ /rSOjCAIIDATc4}P /ҩ?EN=tyxt:q>ivncR5eYR5p[B#YkyN4 LS33(}ξr\S;CV< 1#F0) ;:.a a^??P0Zj M{,eW6>ٵWeY;o'sT@ \BRd8kmjpgW:]q`+V?w_"?-!P5i躎fs=R_W׻_WLCH2&, v|ldPU%vn&4 Y0y2+b(EkM;柝ʴmEUN7{wYJk+A9v&G m5fxEo[v3.#uU]+vɍ1e~N.R?DQx@c))'L47ofYyF;M-iLd ˝|9 K6b64~MŐ{u|EPT@ڕϗ9?]RTW'Vى6^UC?ݖO}['S\$w]Q&yR)X`!*Pwxli0|񶜟;ޡf/]C_#kU_ih؎&6xŇPn1⭵[}( z:Lvrp<_,aћ Fx >7aFC6dy +9ޮ|4Mp 8z_\6].Z}>6/|D;KYgߙ&TD?k⛠0A %mrme*yC2\؆tOс`/♎59&7H۶NGir|~3|ԯY|f|f߯}*' b "+I@5S@dDVL@dŔLd4 (b (fY1{_ @B"+!Ȋ)NrUjLIENDB`gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/000077500000000000000000000000001411575327000231365ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/ca.po000066400000000000000000000020721411575327000240620ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/cs.po000066400000000000000000000017421411575327000241070ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/de.po000066400000000000000000000020021411575327000240600ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/es.po000066400000000000000000000014361411575327000241110ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/nl.po000066400000000000000000000016511411575327000241120ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/HighlightEditor/.lang/ru.po000066400000000000000000000045271411575327000241340ustar00rootroot00000000000000# 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 "Выход" gambas-3.16.3/app/examples/Control/HighlightEditor/.project000066400000000000000000000010101411575327000235760ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Control/HighlightEditor/.src/000077500000000000000000000000001411575327000230045ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/HighlightEditor/.src/FEditor.class000066400000000000000000000101451411575327000253700ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Control/TreeView/000077500000000000000000000000001411575327000206135ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/TreeView/.directory000066400000000000000000000000411411575327000226130ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Control/TreeView/.icon.png000066400000000000000000000077751411575327000223470ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛypTǝ?fFct7>11qM&ٍ7ɖ˕r[T&N 8 6WH@B t ]HsC! [Uoeu`mw՞ ] 1dLEi}ޤyv@ 7u4X:q@Xh;%u(hFkbl UPGbE`5=dہ N|>E(f\(|=P %bf$F w a]Wd B)w-{d{zJim$?5Kx 麁/(q|a*O>4'CZt]^LG8'*[MU7< z lz$ ^y-l(qMH'/[{6B'?lzoǾf7?m"`AAv1& 9ݸʧ֥~iSƀ1$/瑘b{tCHQVYwc?w,Vonq@N8o#t @Ikk.K I :,?ߓiq|Bp̈6vqy<|['` 4orha\|I'W>%B٣0ڐ౻Y$}ݰxÄ"hk9bϾVĵ<^_v,1X6m@;OmfgMNGZ ڼ遴vqO1G:]ݘX{$Ä`_|pvO%eܹ*^)PR,W)ug(VJ{-9lnH1u@a0 W~msڇR,T~+ ͞03KQzUt0~>xR-eIQL@k{"J;HLf0C['ݕe,K(:/~zS)p@SffU+J`!cśA_;:re]IWYJ,)](.;hsJXf=aABnؓ;6 S |R'`\g/{WCYJ+ӗ/edSPL< Q~Ls=)yXRg)iN'ŀ !:@͉NV>>,|Q06qߏ1`{3s搙7  4d1fc&UKATbHyӳ8pҏ6ʝwsTi@3 Vl<)t4S:yTm"lP 0,i9RRBGV-ZEF nah|0:F\?"~D¬E mܰa8lc]߾}H)룢́2ҍA8]V&cmi:.NCx^@/0),%Bs*{Ir\XO_- Y]'XLj$vڅAAYYYal=܃G]IF)Ve\C D$E PC]r?8ၓ؃1ibLn!=mW ~U]bX J[ n: ˗GRR9ׇeYR$`w% @ L{k=]|Ja>[@`/NzNASQb)HLaշM  ~sQ/d n 44BIr8I0#A/B\dzEGHcۏĢL wxl9M466" %&&B0vF&CFP FTrJ$oF ^g2< n}dB P 9di9E 4qcD .D+,,ĶmMMMF۶mdR1SK04$$z8thɢXnYjgDfxCs',E"m|\.G,PTTiú*ƾVaF| H%-Sch?o)fݲ95Hr1e4}RNOo'u?,A %U-,,]kաrIb}L`p0n'8iFVJ$f ڿ46lO*rJX}#F^< _)G#a;HO?ȓk/'u|fl|rc9cq(-[nYnpg䴒SdW[VMOW=2PgF<¼|::I3С>ғ B@:+yB\ج"VFtgN>elEDN77-Hfn!q9jo~㒑igsdݖ]x?TYIENDB`gambas-3.16.3/app/examples/Control/TreeView/.lang/000077500000000000000000000000001411575327000216125ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/TreeView/.lang/ca.po000066400000000000000000000035761411575327000225500ustar00rootroot00000000000000# 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." gambas-3.16.3/app/examples/Control/TreeView/.lang/cs.po000066400000000000000000000031611411575327000225600ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/TreeView/.lang/de.po000066400000000000000000000031431411575327000225430ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Control/TreeView/.lang/es.po000066400000000000000000000027641411575327000225720ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Control/TreeView/.lang/nl.po000066400000000000000000000030301411575327000225570ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Control/TreeView/.lang/ru.po000066400000000000000000000116551411575327000226100ustar00rootroot00000000000000# 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 "
Прямоугольник элемента (" gambas-3.16.3/app/examples/Control/TreeView/.project000066400000000000000000000004771411575327000222720ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Control/TreeView/.src/000077500000000000000000000000001411575327000214605ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/TreeView/.src/TreeViewExample.class000066400000000000000000000101251411575327000255540ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Control/TreeView/.src/TreeViewExample.form000066400000000000000000000021151411575327000254120ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Control/TreeView/Female.png000066400000000000000000000004451411575327000225150ustar00rootroot00000000000000PNG  IHDRY *PLTE. tRNS Y5 6p.IDATc``(`q A0PRIĦ:+A%DS{c޻탂2{; ^s|A+`NDG*Ѻa(+c6dhJ:`KƤס>b;?}e  @6WkBIENDB`gambas-3.16.3/app/examples/Control/TreeView/Male.png000066400000000000000000000005031411575327000221750ustar00rootroot00000000000000PNG  IHDRY -PLTEdvtRNS Y5 6ZT:IDATc``w0008 Jv @)&ye! v@ 2ry7e9~oA&{Mq42L[p=s689e`e 8A0)` (,U=(\k G(G GIIld6N>ノIENDB`gambas-3.16.3/app/examples/Control/TreeView/treeview.png000066400000000000000000000007271411575327000231610ustar00rootroot00000000000000PNG  IHDR sIDATHǥjPOBXp1"yY8UWݸP/2+r^Z*X&Nb2I%;s#FzѳE|daF6d23&>xт:5HbXT(Z( K B\17s,/6y8W}wds;gPh Zk,L{w呔cg;F]fZLu<ʪ 6> ].zZɾX.nrXQH:l"} =h,)O-aƼqǁ:=mʳp\ hPG 43`;wĮo^ ",AIO۲yE2vMÏ>7O=bz^@`p@\—+&wt+f&:3e9韜xmjpg.@q_`xO&0P]NI 9OkT]{x!%|!18>?}+$y|,1` 3)+b=scC} ؐw5~1jtwj́zkxe)@ѡh#戰P qn _*17l()M%e*^.Pϥ4 TX)5‡&xRnؐC0.M}[c/:6R}H0rRJH1&x@þs3gմWr%?H7b(CJN\ UO0H_:g=wWcPa?apsm B7P2t%rXF\)PʉRISM 86Nh")2 VPu7"t ! 4 %91 S| 7_lcׯ~kv)*.  |O~)~ %/jʝ8SR+9vPϮd>_Bai\GU'GEtM6CIӐ|ނ|]˖qE_ Bta)K7mFi׊ )+Ѯf3.yJ) L)㊘hǦZjfAj3%kגgf#?}X\15ph9VXCvj9.xP4!%3>'F؍reftE3[OQco$ڲW\p ,Hnu+ LCPX$v!,%Ifd^mAȡ)BϞo6{mc!ບoˑ"  uНpl͘M5KW_}!}u#Bw`"|n_مWWB0KZ?M /K])iro+َ%hHaw%1?BJش5,]!t]k[@@//=U- I9, 3~!%,OQ/ttՎL'%nJFb|{jӎ5@H.C*y3s$&2mV!"asqYFRt=@9~ ()8]?Dꢘq -UT҇I}D@x`H%T,R}(BJw>Gk :@z.5fYD-x2]T[|z5A RPN_?* KLn{F!dʅ`R"GzPY6maHnTwp ֚&9T<-!>ƚSJ S @?9KvR<38 Qus+ű:NWrÝ,O =uZ_NCϟF[ )Rrͼ]A}a8zY%g) <sd{tQg͞?CScO>oV_Dy[-—E(1Axϴxs#MX4Dig΅ԣ`\ ,QS+}m  d)KougPZS@3D 1)v_"Xl&~ pwKN9k%tY<XMi?]o>=eˏ9Z&`xx/[)~n_]8٭d6!Z4 (뢧 F|yԵw`x%dNƔMdF WčGpͽqU^"U,.[ȃvlZ+_hd'Cfz>#D}l~v$Y"IENDB`gambas-3.16.3/app/examples/Control/Wizard/.lang/000077500000000000000000000000001411575327000213205ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/Wizard/.lang/ca.po000066400000000000000000000107741411575327000222540ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: Wizard\n" "POT-Creation-Date: 2002-11-01 04:27+0100\n" "PO-Revision-Date: 2011-03-21 00:21+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: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í." gambas-3.16.3/app/examples/Control/Wizard/.lang/cs.po000066400000000000000000000105671411575327000222760ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Control/Wizard/.lang/de.po000066400000000000000000000107531411575327000222560ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Control/Wizard/.lang/nl.po000066400000000000000000000066221411575327000222770ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Control/Wizard/.lang/ru.po000066400000000000000000000155431411575327000223160ustar00rootroot00000000000000# 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 "Ваш заказ готов к отправке. Пожалуйста, проверьте, всё ли правильно." gambas-3.16.3/app/examples/Control/Wizard/.project000066400000000000000000000004541411575327000217730ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Control/Wizard/.src/000077500000000000000000000000001411575327000211665ustar00rootroot00000000000000gambas-3.16.3/app/examples/Control/Wizard/.src/FMain.class000066400000000000000000000025761411575327000232210ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Control/Wizard/.src/FMain.form000066400000000000000000000070701411575327000230510ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Control/Wizard/wizard.png000066400000000000000000000027461411575327000223400ustar00rootroot00000000000000PNG  IHDR szzIDATXŗ{LSWǿ'-DBĈFb44N2ͦL7t\hNb1n1mF 4S_C AR,]h{{?QAT%sfa(8<))iHv;8yAARVTT@2Ħ}bc33T<)[shue1/lm[V\6&wĦxlSpog"jQBH :,b19[vZJe*Q &H&i35;@ɶS*7JM\2Ra4ˣyIƞibl+VZ?bvf/^sfBXI̘ҠG\w.\kgOv1m *d Gev]`>rsXe,zx֭[Jp8Ox555VG0g(nwVzzAPJC҈fbA\]Ӓ\Y=,+@)< B8p8`0V8!,!w$.}>Wo`rVLiɃHHVV,HC{L?/e&F5Tt:dJ%/ 0fH$ᶶ6=˲C"OQ;Bd2Y>!D=d ZT@ 0Y_ )ũ-!Fr8n:_EE8^?,ԣF IENDB`gambas-3.16.3/app/examples/Database/000077500000000000000000000000001411575327000171455ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/Database/000077500000000000000000000000001411575327000206515ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/Database/.component000066400000000000000000000000501411575327000226470ustar00rootroot00000000000000[Component] Key=Database Version=3.0.0 gambas-3.16.3/app/examples/Database/Database/.directory000066400000000000000000000000411411575327000226510ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Database/Database/.icon.png000066400000000000000000000103601411575327000223650ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛyp\G?ތfF#}86!8 ,f]X,l%UIe)]nn(IB@6% bۑ۱-[谤ѭ\C%[U__2CmA'nB|̟)6Թ#ZSU即iHإkpvPzׯAXh!y$ty Pߡ  ?:L. Zd7t|Vg( HNt-\̼UP +}W/ëuag\SaKB_B)gw:c[Qa D |jn[a[HeN>q4YI Rɺ=D %|}UހsC_#o4|3]QI>!Pڏ#s/U3ϙ<@6sWzM=oϠ=ަ}9Y)eʲJ[S,@\$U f"-:솏=dlӖdJ)\@k6!-?,$QON@3%+KYPIu_xָ\Ŵ4_x5O{JMb儐R1%TRJZA76ڏqmMӬw؞BK_L@)/mI%SjJp0`֧8πj %X!}|/oQR}5;0{{%b H%S"54Ba>楟ol;Y Q9!JlH;_jۏ=PaKK:NM)R2;CE|L,.%|=%G{"QGᳬKtM6Kɔ% /#?g_}VdBbBVܶ=.xlzDY!t1;@0 0TJJ"\F{W# QSuBuvʝ J%U<zzQ8FC%UK( 4d1!1;^:o_19drf>|{Y1m}  V0ox,21*. W]f7Pkt4H䩑LPleJʉ,cu%8m_n77B)#8ZkA)ps'bRh#oMX땸 C,X9M[kiH ѷ5kj?;ӹ4־L$n:eՋE~Lr%#/cp]c f4wvũ3MTi9%EJHlC)fX ‘ ] "~ %梨h4J6EJm㤍1~8XT*JfJǔ@>J+IA&D?:T/Ҳt4}y+ Z Z, ѣ(Xx1MMMD"#nŨ2 pQd 9`D%T`U2tnyo"3#4)$Қɢ`(?DI {$@B,1>h)(( H0MNo 9.%I1A!/ϡC?ߨrZOŒp[}aZp"5##iOQPQM}B1kUH5c ;Noo/˖-#SRRB"! "??LJMqOJǶL1Vl,ksjQKo_zT TQ9ҶkCIA]k7+ޏ_=oaZE$!Nǣ~4p8c`` [" {DPɑ@19/\U<̏m0A /^ތ_\} 32m,žnw2GvckꢿJ D"JKKFFI$tuua#f `) u5l$m̳6}A\b'_>)VG]S'-Iƛpf8db1R]] Db\eĶm&4ec_r4>)eƜElj>'@e@;Y]PYGNֈ}ljYdGqnÃΙ[x7D*x,$ J(++<:xeWҎ'ےfdjl-I KY{[ZT1( ]gaA!0c>f Ca 5T^Lsy?0j *PZ[ZY{ #a2=>Hv&Y)ƢŅOd/?3v,O>=KQB{O~/e 5"8*F/ py1xNDgJgxcD32?ubШz|4>S?{Z~J|~'bn^{;W7ٳox'Y(. g]9X fL&I[GAT-r=}nG/3XJf~ g}N9 cH=;!#@ BaB 8wܵ |Ɍ+I.<~KD~rzfԕ'&zk`!|zr80p͘~DB e@3NǀV 3a %g$g8M~Œ-)4"#<#[|^?\YI!ٺ=;os~˗ h6|j,%() p 3O[VJ":,66vwϓ [F| 3fم+[v))49>"|mO,t0:3mB0>_,r&ֻ݆h:_%#{:Fr[n'?W_ed:sIENDB`gambas-3.16.3/app/examples/Database/Database/.lang/000077500000000000000000000000001411575327000216505ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/Database/.lang/ca.po000066400000000000000000000051301411575327000225720ustar00rootroot00000000000000# Catalan translation of Database # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Database package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Database/Database/.lang/cs.po000066400000000000000000000045001411575327000226140ustar00rootroot00000000000000#, 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ář" gambas-3.16.3/app/examples/Database/Database/.lang/de.po000066400000000000000000000045101411575327000226000ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/Database/.lang/es.po000066400000000000000000000045331411575327000226240ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/Database/.lang/nl.po000066400000000000000000000042701411575327000226240ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/Database/.lang/ru.po000066400000000000000000000125241411575327000226420ustar00rootroot00000000000000# 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 "Комментарий" gambas-3.16.3/app/examples/Database/Database/.project000066400000000000000000000005551411575327000223250ustar00rootroot00000000000000# Gambas Project File 3.0 # Compiled with Gambas 3.8.90 Title=Database example Startup=FMain Icon=database.png Version=3.8.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 gambas-3.16.3/app/examples/Database/Database/.src/000077500000000000000000000000001411575327000215165ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/Database/.src/FMain.class000066400000000000000000000060211411575327000235360ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/Database/.src/FMain.form000066400000000000000000000045661411575327000234100ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Database/Database/.src/FRequest.class000066400000000000000000000043341411575327000243070ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/Database/.src/FRequest.form000066400000000000000000000003431411575327000241410ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Database/Database/.src/FTest.class000066400000000000000000000005741411575327000236000ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/Database/.src/FTest.form000066400000000000000000000056551411575327000234430ustar00rootroot00000000000000# 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" } } } } } } gambas-3.16.3/app/examples/Database/Database/.src/Form1.class000066400000000000000000000040411411575327000235300ustar00rootroot00000000000000' 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 '-------------------------------------------------gambas-3.16.3/app/examples/Database/Database/.src/Form1.form000066400000000000000000000001631411575327000233670ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { GridView1 GridView MoveScaled(6,5,44,45) } } gambas-3.16.3/app/examples/Database/Database/database.png000066400000000000000000000021661411575327000231300ustar00rootroot00000000000000PNG  IHDR s=IDATH}o\W߹wƓc׉8(jP$AJ!,a_ V ""$ VYBPںm{<_8H9O?fQ Y/=;\l0ڌg)~On,汈e|wb?18{kmݼ5t$܏AjTTNU>'Tj-f$jJA@dI%c;_Nx9!DPSER.Fv˻$dscc-I4 rPC8 8eH{D^@C4P_*nUQH䂤(ReU8 \5]L!=fL)h@7]'(% Yu $Lv?Rd%xzДGF`(%5?vdFRNkU3m T2pyφY 4SS,joJ m{+5(S/dœMVlTx Gjn6tDMW0n3V=4`5F;@& WE_гf |ѩyˆOny(8Ĝ95m=HX]b68uYPj%Kvm9}; >#Wʔ.k7yJ)z2ƻoN߾~{,5ZFGYw3ؿ_Wv؟8K yg;IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/000077500000000000000000000000001411575327000214265ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/.directory000066400000000000000000000000411411575327000234260ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Database/MySQLExample/.icon.png000066400000000000000000000104711411575327000231450ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛypW?9uYuے8Cl8,f]X*@BvvEVذ G ؎-vK-hfgÒb[voի~oW6nG{xg_R}&t1(~`as3KxI]>(!䝥|ic%͝k,\I{/H]T|U< ڃ 7#grZAb=m܆v5>,K*^ W3z-ڃUlz4i糵/3Ufo'/^QT5ܹ2Ý`%ϞLy :`~)kC8ӗ⶯T `֧w5d}%·^8ݳvvt%9ieaL;[',TpvBɍ5xrX;<_Z 0Zc= s[z 0*T\vpx0ʿ/3|'=:pnw-AhΙ[4%:/ ioGe2B:eBՒGbXTCdEHXVI5z2+dSEik \=pNE-~YTV㻼 Ӎ}; q9wOY-΄|T j#DP qq_-)/a()-%eNV&2R ԤtS&LrR^p@7xn׈eOizaDaJe .w׳95̮:zOc-ygҳ eHKI\\݌Y@ "r,A 2 MS f  9ס_ߏT'J1!TPJړq0t`VT֘IIn5iy#J(N%g^9bJ!Ԥࠧ(myr?dgB؍JAuw9{#K:Ĥ. %5)C|oljT L 1f1:aP<%eJZJM<]dHD{?#%Ō ;׿璈ǎ KrA¦C1;731CQ."nex&%b4 (aYC()PR̬,bvt!WRd# xo2gV~*ͱ],XH&?9A2s !?Cv`N;詑d@ q=M0O*th:eꇈDHI)V2]M(&+J`z)Iǡ=9|á0^4R:k% Bb*TL$;`RRGk`oO*B~'&)9$0$PdfgqH U@H;n[yh>"΄ITS ֚A N$-3">|>r,iƧ$A?i%95#v 5٦JK. GLcIE+#i6Z; ̧.9EΠrhJ {YZ_xS~?zJS);" 9iNx@uq\d%b S9lY#2Ffjx3sXX\sV /~7+b+]h-Z- ^7_Gt/T,$ǜv!;I] s}61XDA(f/X1.)7CsDs3g!l#Nwz<_D0HI9K@!(\ꚻ8YTD1ff D{=Ff %Di/W'V.]aQRѠ(GbY@M*U5__*Hiv2K9dwL{ОYycKYiDJq>xM9_)ͬ6ֳ(;n2e0NgƑ*1z⬻ 9nJZsAW"εNWSv+(#*4=g}`OӭdȎ3MJV͝OIN:p!sn[ӂ{ˌs^{Yv+Yj B[vEm#>e4wucrg)>2Z~*4VG-߄zɏbՃT6>_U9L/[]j]/}⊑= 3I\fӟdw`$kIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/.lang/000077500000000000000000000000001411575327000224255ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/.lang/ca.po000066400000000000000000000221101411575327000233440ustar00rootroot00000000000000msgid "" 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í" gambas-3.16.3/app/examples/Database/MySQLExample/.lang/cs.po000066400000000000000000000222541411575327000233770ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/MySQLExample/.lang/de.po000066400000000000000000000223671411575327000233670ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/MySQLExample/.lang/es.po000066400000000000000000000215221411575327000233760ustar00rootroot00000000000000#, 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í" gambas-3.16.3/app/examples/Database/MySQLExample/.lang/fr.po000066400000000000000000001010231411575327000233710ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Database/MySQLExample/.lang/nl.po000066400000000000000000000215011411575327000233750ustar00rootroot00000000000000#, 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:" gambas-3.16.3/app/examples/Database/MySQLExample/.lang/ru.po000066400000000000000000000536261411575327000234270ustar00rootroot00000000000000# 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 "Создать вид" gambas-3.16.3/app/examples/Database/MySQLExample/.project000066400000000000000000000011231411575327000230720ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/000077500000000000000000000000001411575327000222735ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/000077500000000000000000000000001411575327000250105ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.class000066400000000000000000000011051411575327000303200ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form000066400000000000000000000021231411575327000301570ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.class000066400000000000000000000017011411575327000276770ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form000066400000000000000000000021421411575327000275350ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.class000066400000000000000000000027751411575327000276550ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form000066400000000000000000000027501411575327000275040ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.class000066400000000000000000000030651411575327000276720ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form000066400000000000000000000024671411575327000275350ustar00rootroot00000000000000# 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" } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.class000066400000000000000000000030641411575327000302470ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form000066400000000000000000000026451411575327000301110ustar00rootroot00000000000000# 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" } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.class000066400000000000000000000023551411575327000276530ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form000066400000000000000000000020651411575327000275070ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.class000066400000000000000000000024571411575327000302320ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form000066400000000000000000000023661411575327000300670ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.class000066400000000000000000000012671411575327000275370ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form000066400000000000000000000016071411575327000273730ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/FConnect.class000066400000000000000000000016221411575327000250220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/FConnect.form000066400000000000000000000030701411575327000246570ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/FMessage.class000066400000000000000000000005231411575327000250140ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/FMessage.form000066400000000000000000000003251411575327000246520ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/FTables.class000066400000000000000000001160361411575327000246510ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/.src/FTables.form000066400000000000000000000120371411575327000245030ustar00rootroot00000000000000# 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" } } gambas-3.16.3/app/examples/Database/MySQLExample/.src/modMain.module000066400000000000000000000035311411575327000250700ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Database/MySQLExample/icons/000077500000000000000000000000001411575327000225415ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/000077500000000000000000000000001411575327000227675ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Admin.png000066400000000000000000000021131411575327000245220ustar00rootroot00000000000000PNG  IHDR(-SPLTEjkoh kqW?GQTB>^m?@4?m5D_A7LKuno ;P2DUrJb`}Qj)d~Me*Oc7I"*A0=bu"FZ U'03=")Xsu[.#pIDATc```ddfaeE<}|D؀A!a RQ1q I)Ҭ 2iY9yr E%eU5 Ju M-m] *=}&N]V:|'N7``54:}.^|؄7n޺}܂$jiems+Dc/OIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Blob.png000066400000000000000000000012061411575327000243520ustar00rootroot00000000000000PNG  IHDR(-S\PLTE)++jss+//drr2::Voo"--*JJ+XX(QQ 990aa&NN ::&MM քތ΄s!J91cƌ1BBk{νksJJBBs{sZ{cc ajp}ZZRJc)ucx!{!9BBcc_`c|ys ``xBI5g\gn!s!)s!){!H0O|D:qkbtteΌƊbm8ilZj[Hf6tRNS,*%,FO^L[HIDATc`  @FF" +++PyE%eyUUkhBut Aʚ ,`ckgopswce A!a 2  tfvvNn^~Aa/GB"b0#jU%SMIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Column_FK.png000066400000000000000000000010211411575327000253040ustar00rootroot00000000000000PNG  IHDR(-SPLTEleeg\\2**d^^xooq\\5&&h``xnnqHH4pcczkkp''+u[[Ah==yDDNBt))K1h%%/Jθڣ˰ccYYTT==mm``UUPPCCGGNN@@66i:tRNS!)('.:j \^+$smF (s܌G)Rb#0brIDATc`@h&&Š"nɅ汶 ;8: qA]\=~RY9@yE%ez6TZ.cS0.3s #dsXzKqIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Database.png000066400000000000000000000014451411575327000252050ustar00rootroot00000000000000PNG  IHDR(-SPLTEЭ'ӯ&ͩ"ȥğo ߺ,ݼ?4p ߿H8E!DɚEɚCș۷3)ٵ3޻@Ɨݻ?Ėԯ.ܴ'ӯ0*sѫ$ѩ!ΦȟȠɡğ _Nwݒؓsߎcj؎ޖqүGӸeެҐҹZϲIۿPIj~epѯ5~vRӳB&ב{иe<1Ʀ7ʩ3ܾM{vRбCƝDEtRNS }ڧ  ' ( % &j0O,+.@IDATc``dddbfaecy\=<}xA~A!B@0?HxDP8P@"*:&? .>!QRJ( -+O/(,*V (JeU5*R@Ʀֶvu M m ] @XШ'lk[;{S8?@{IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Datetime.png000066400000000000000000000021641411575327000252340ustar00rootroot00000000000000PNG  IHDR(-SPLTEݱ½ꜬŬĞҥֳؠ`yaddb]]]ivwXqq"--*JJ+XX^jo6hh(QQ 990aa&NN ::&MM ڙ厥e|싙E{)jfhKOOiﰙ{6Y+tNy޳ĵߋ𴧭۲κ}է}{עyt}~nwzooq}}شƼlbgn㬸?rsbtteΩZj[θH>PDJtRNSzq{ (7u2_z@rO,FO֛[&^Lp7 [HLPIDAT JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF:GHI?@l-IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Field.png000066400000000000000000000012151411575327000245170ustar00rootroot00000000000000PNG  IHDR(-SMPLTE4884445550// 333 222 377,--'))+**`bb;BB///XYY$;; -..ZZZ66 366abb;;NVV $**Nhh## +\\&MM )TT3hh"" 됭QdBfg]1dd}bdcALbfb=||H\=}}=5HtRNS5z$)ơ)¡'Ÿ00| EVXt/ au7]q _w5 6PIDATc` 021 spBDD=Ĺ<^RҼP>Y_?9yNb`_pHh X@5<"2*:&6.^M,K704 晙[[89ml,prr;8:9p"8]ݜ9,]] -BA|IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Function.png000066400000000000000000000003651411575327000252660ustar00rootroot00000000000000PNG  IHDR(-S3PLTE?tRNSf"DU3wʼaIDATӕ0CWwaC_+ی1& Ph,,GI" d+[ hTj@H$x 2t`҆K_eM"SIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Index.png000066400000000000000000000021421411575327000245430ustar00rootroot00000000000000PNG  IHDR(-SPLTE͙ҥ!թ#թ ۪5(1#rS-")mN355СҤҤ٦oqr2;;ʕݺUaXS]CV9|^jkk88ҧ){ģE}vc05V4=$ I)Bu$BbL=,/& @x_4,& 'pX+ž2r{$rZaL%  Ы:pu]QA+" -"0&1(ʿC橈ylR}`zhxqӹϹĿż̬F}koieèYՋѠ͠Ͽ\fЀяЌ‰ӞTwԋfdxԇ~G~{sfPִFnUKΩ=#->?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ts)IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/New.png000066400000000000000000000014611411575327000242300ustar00rootroot00000000000000PNG  IHDR(-SPLTE媹lּ*Wǒ׊ԌΌ̶˯΋{|vήsvCtRNSt:IDATc`````dA!!aQ1q I)&*3H@M]CSK[GWO$`dlbjfnaiemc 7uptrvqus x*xyACB#"c q I)i̬ܼ"@qIiYJyEeUuM-X1"?a$)SM1s9s/X,]WD8:IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Numeric.png000066400000000000000000000017751411575327000251110ustar00rootroot00000000000000PNG  IHDR(-SmPLTEعٿߺ㪷⥲ߤSXX_ee)++ڄoxxjss+//drr2::Voo"--*JJ+XX8jj(QQ ŗVji0aa&NN r}ux}rrr::&MM ʶrh늯}QV[`ct𗞲~ּ㗣ꫀԨݓ景ʍr|Р؟ܚ猥ly|صᗰ뎪ӑꀘc~ײ튤՞瘰Ugnܖ戢d:otbtteΰ~܎v{hyQbwZj[ᄚvu{H(%BtRNS7FPUpb&,*%,FO鹇Li{a8[HQELIDATc`bfaecf^'gW7wO@`P0T/$4,<"2*:* HK̓ 3 1pEeUuMm]}H@CBSJ( ?aS12O>csΛ`"EK.[bk֮[AAe[n۾c]1ݷCh=v\SKASϜ78ghdl`jfnaiemckghlTvcIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Primarykey.png000066400000000000000000000011111411575327000256230ustar00rootroot00000000000000PNG  IHDR(-S#PLTE???8882<2!I0= s_/Ѹ#@үO߷DҬWw $M&yīq)"f$YrKkZ?ˬ!5t"s kYc:uXO(pXh0&iRB5+#L;.&!K6~0)0YBxT(5ua њZH|]=FdXCd>Q i9ENZIENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Refresh.png000066400000000000000000000005351411575327000250760ustar00rootroot00000000000000PNG  IHDR(-SlPLTE777ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$ؒ$l#tRNSd47WCFL r:1gB}IDATu0 {'(Ⱦ;vFF?~[c(.@PQ0Plwjgk\,k4j/pz4x=q0}; [x/IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/Routine.png000066400000000000000000000014731411575327000251270ustar00rootroot00000000000000PNG  IHDR(-SPLTE5=ZlP߁gށgkfmxykbTX߾eg^aײRWܓPONّՏҌϊ}̃փՂԁӁҀр}wutvz|V9tRNS?O<; TIDATc`C 쨀_@PHXDAL\$ed%TT$T54utAF*&fL  -V6vNL .n^>~L A!aQ1qL I)iY9L yiE KJ˘+ +kjAu L M-խm ::{z'O4yig01̜5{y,\xe˙Y+E^=}>IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/16/String.png000066400000000000000000000020001411575327000247330ustar00rootroot00000000000000PNG  IHDR(-SdPLTEᇘ}ƀz煛w|õӶ瘧ѲޗԳەгkt~)++jss+//drr2::Voo"--*JJ+XX(QQ ďÎËÈw\n4ce&NN ::&MM xꇚmWᢴտԼԳժڿۤסٷٮ٧؝іٯ٦ڟ֐tԽշծ֥՞ѕn}ۿ۶ܪݥܔdϯϫϧϟRgnr;rubtte䄳g8lnZj[H%}ȧHtRNS,*%,FOL[HÌ VIDATc`faece`>0  CB#"ED1q IR`Դ̬\l^~AaQqIiY0WTVU74*(ZZ;:U=}&NtdhotMvǏԡ cKOCױUF͚͙`P=3,)ڪף-n31crИ k- Ꮕѧ0f=JϼkηIDATc`F&fV6v?  ED#"c%q I)iR`̬ܼ_VN^\Q $VQYU]S[]ߠh`hd`ajfn`i`ockqÄ&O:mY̝7E K.[bN5k׭߰qfW=~0W@ L\QScc3ss ccK1q +-b`Cd|G'FY$ T=ͳ2ݍ=|O/%} *`>j`k9[hjiC= R \*IENDB`gambas-3.16.3/app/examples/Database/MySQLExample/icons/24/000077500000000000000000000000001411575327000227665ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/MySQLExample/icons/24/Null.png000066400000000000000000000001711411575327000244050ustar00rootroot00000000000000PNG  IHDR =@IDATcdh` 0?Dg!h$o2#Qnf$B1 *b#iH4T1#:It/ 6:IENDB`gambas-3.16.3/app/examples/Database/PictureDatabase/000077500000000000000000000000001411575327000222055ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/PictureDatabase/.directory000066400000000000000000000000411411575327000242050ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Database/PictureDatabase/.icon.png000066400000000000000000000102041411575327000237160ustar00rootroot00000000000000PNG  IHDR@@iqKIDATxݛypW?~>[|H8ĉ !!lLWe.,⪤R.dj7@QHp@pbRdǷ9xoF)~w߼\f( Fkd#C=&t6(k~#S{LR:~rZ |uQ6~m_z޽[s}HO/o?Ga5l<<+u0/;̐E|3N^ xL?Ѩ) aUe:ǂt^8 5ž&jI/ TQeR|rrG_A^l8`1P[ws<^i ԹqGsҖJظ*O׀Í:FӉQK_|c #?RRD]?| כ:c'(<˩*M;c oqL,bS/?tg~_p)󵏔r(~=Cӌ+#w[{. r!_SqRẽ'ԫ۶lzhk[邪0ưaiX)Y^j$u.Gv;b0A(8]8{%欱}ӉP{A0GKXQʟ:`'=qσc}4mgyYG_|'p? \Ϝ2vx;6}oK;ц4߼-kx? wP#k'$=\S#01 h"W7 M }sZc=|wg;s2v`vq  ;O kéBڻxw4__ Dl#y@L#6Mv0fvbCYwMdr3CS{;^^]^R/;׼:YoִWgx"4B `KIUR+j澔QK)QJ8po= VJG,9nHq2\Z rU\D}9])eIfX@hw,:;}4t|R,eɨ35nGT/ũ?HXf3AJP:fFtW,"]NepljZFrik\jؑaTbLi 9<1O+/cp+<P4ԼHMf\.oyBRXJ^Ԕ;SRD-KɨRӏ ~у_R3|z|g- fM܉D?߲.j5,%D)x>8+vyyjä ɪUu+5.xh;6;Q@0vQS R**`&Neh4z%9߸ ^qRp\E۱IR,wϺ RQKI30O:k9Dt]ܶ(_S{{Qj"|1OkD8Sҥ)]x 4ÖdTYbuR>L؟XJB|~!bh%erzFx՟q-yb(ꡅMP$]p-7E_Ih:~/Z6ߋ< ƚs"Z9DS& 0e |>KjGZZJA (t}ew0X!2]KN(KI_} Ag9!,]{7Ma_7KgMB5d"mh^& kX& z@$R1j×;<7x+}El㿳CY#`GFbNK=_h5(ei1fHasJsY)Ť m=ֶbى1BKp8iEob^Ƚn Cd={ em4ɜMg5vPnG9[S^}N!U, Q{t9eq5aaR>4Yf_ )'xӇ֕ d"^Cᕆ^2bǰҳ }_0Dz2sl ?;*`dgctv \O:x2D,*I8dRpSRL(L|/$Q! N.MSHZ;<1ڥ!F|~G կX 2YqΛIK lo@10$LCFKH4J~09.r±8BJz^zu7By%4EISBܶi()H%?OWS-%ל@x`wq\ⶃ4]M uLMʦ\N)9 D&$QP338|xQP{6Ÿ܂P&/57ɶQ˩;W(V.Cso|؎ß:8C,%=cvPÝr &D3*V,_l~)鰩߷_ZP/'th[*CIA]{?Wܳp3HK>nЧ-:+1Pʚ\W1,ycc).̣ N'rKM@R)=3eExɟ1'?켹 x;(]C݉NLJ%`&>P-vz߿CEJP i>K1Ơ$\n)떕7&(0"DXJDzJIKZJYe5sN %Y юMNo +W|rP>샻YQ ?;V1`Z &@oU MƃX BV` )V. &'r pfJ6 Co_h)kwU)b0g$6F\h Re3ucpq碍h1!C O?8r$X'5tY:RLzBr䉇얻^yԽן'4oBӳ9b T?M:#O>|> *5KA3aBSڅ4bZ "`rr~m<-w$c# #+7laij:B7i֚|oƟy҄cIx-g2d<.[豨0ƈHSh20)&է`ƒC/2ո?]y ! l=?r{&X@ أ~oR`3P?^Pq` 8.!@(E@62YiO{C@9 jtq b5e3!=EYR p'_"Y , 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" gambas-3.16.3/app/examples/Database/PictureDatabase/.lang/cs.po000066400000000000000000000032031411575327000241470ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/PictureDatabase/.lang/de.po000066400000000000000000000032461411575327000241410ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/PictureDatabase/.lang/es.po000066400000000000000000000017331411575327000241570ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/PictureDatabase/.lang/nl.po000066400000000000000000000031551411575327000241610ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Database/PictureDatabase/.lang/ru.po000066400000000000000000000170641411575327000242020ustar00rootroot00000000000000# 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 "Описание" gambas-3.16.3/app/examples/Database/PictureDatabase/.project000066400000000000000000000011411411575327000236510ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Database/PictureDatabase/.src/000077500000000000000000000000001411575327000230525ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class000066400000000000000000000142241411575327000277700ustar00rootroot00000000000000' 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 ''' gambas-3.16.3/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form000066400000000000000000000033701411575327000276260ustar00rootroot00000000000000# 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 } } } } } gambas-3.16.3/app/examples/Database/PictureDatabase/.src/ModuleDatabase.module000066400000000000000000000157031411575327000271410ustar00rootroot00000000000000' 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 ''' gambas-3.16.3/app/examples/Database/PictureDatabase/Images/000077500000000000000000000000001411575327000234125ustar00rootroot00000000000000gambas-3.16.3/app/examples/Database/PictureDatabase/Images/document-save-as.png000066400000000000000000000015151411575327000272750ustar00rootroot00000000000000PNG  IHDRj PLTElwMyAlWx}nTqBpbtSyInjZQygDx?r?jlW^|ym[~zdx\BnG}J?ltMMrplwlTw`}n[zr|mnpkxenpknpknpknpknpknpknpkgidfhdUWSUWS8guc;lG}tkJ^[SX`npkuylhTr{ruk`ʃPc؛b;PաyW(L]?7'&IENDB`gambas-3.16.3/app/examples/Database/PictureDatabase/Images/image-x-generic.png000066400000000000000000000021761411575327000270670ustar00rootroot00000000000000PNG  IHDRj PLTE꟡WYWzFWsGWsEVsEVrDTqCTpCSpBRo@Rn@Qn?Pm>Pl=Olfs?Qoachq_~[{WxTuPrLoHkDh@eQoѯ뾁xurolheb_~CTrĶŲܱ}nycjtnjHWsʝdz·ѱØɖȕǓƑt}kuQQQn}JZuIYsѨҧѦѥФϢΌRSSupyO^wETn_afWXZpvUVWKYp7Gb=Nm=Om;Lk/Bb#6Y 4W'8T1!1)9%%5-=#3+;dNn^~AaQqIIiYyEeUXdfo_߄&O2u3gUg/Xp%K-_$j5׮[aMlݶaڪvٻ8x@acǑN9 >w \pe0p PaecPy떕۷5 ;'F`sq00  KHJIȲMVNOFF^F^Ʀ l@@bM]=yIENDB`gambas-3.16.3/app/examples/Database/PictureDatabase/Images/list-add.png000066400000000000000000000005561411575327000256270ustar00rootroot00000000000000PNG  IHDRj PLTE4e4e敷۔ےڐڍينك}ןqҥoҵn*ZtRNS  $IjxIDATc``g"/ Oa!4am@ ( 򋈊 KHJI" +(*)kfDVbfb70gaeCd7/r6>&&>6ju3EjIENDB`gambas-3.16.3/app/examples/Database/PictureDatabase/Images/list-remove.png000066400000000000000000000004321411575327000263650ustar00rootroot00000000000000PNG  IHDRj lPLTE4e4e啷۔ےڐڍينك}ןJtRNS  $ |[MIDATc`~Q 0…E@TL\!,!)%-#+',@j&f`eCd^&| )[񑭴IENDB`gambas-3.16.3/app/examples/Drawing/000077500000000000000000000000001411575327000170345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/AnalogWatch/000077500000000000000000000000001411575327000212245ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/AnalogWatch/.directory000066400000000000000000000000411411575327000232240ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/AnalogWatch/.hidden/000077500000000000000000000000001411575327000225355ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/AnalogWatch/.hidden/screenshots/000077500000000000000000000000001411575327000250755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/AnalogWatch/.hidden/screenshots/2014-12-14.png000066400000000000000000000600671411575327000266440ustar00rootroot00000000000000PNG  IHDR4_IDATxwi%Ʋ,,b06,ccN.$K%Kr%1\mMM1e{JZՙ!lmŋhgF>ϧ _,&334^ؼ>PeYfĉ棏>l6#nC87x# ƒAL$ 100U c``ЫBW1Abgwy[nK vy~\y!kӤwr-pWvX{esߦ^/;3{%tɕd?/qi:rK\5Mw'3/c<|wmad` i/BTC$}cqoO0_y?~mGi~ ~x}̯u ' '2߿V/|H՟x,XCC(PiM~#~_}w7{-ۇn{~y<eǭYfÙݜuD˿A';:[> 7ζ"9aɌ(?/"( !.1JP WXN#)d%'aKNBL){u7Z>.SR2 {!N%\s"4T6a+LBLJ* R Yy+H#4+Id 9IpMuEƐZmY );H@s 9*GT,OOsGYCe3mE5oE%[捿|s+ ErKIq_QJ%nƖj&Pۄ*ES{6i"-ώ`5'+7dKGd\V!`lz_y`S &6-t8jaJZN.cb?lБ\%XSI>!N 6+Q&mi0qeY 26q=1ɕ;{VG@e~Á0+;7_VHsC!kDV@0Yp\$!PMJ+ Aot ^ւ$N'v(kHpDCBo<:}_g}G Xsc?)zX42֯_?= js -dx?cN$8}.s>mvPA4cs?-}C (Did9=1~ zC*100U c``ЫiH^~}e``0h+]kDנP1 r@oQ5?P?~b$B?U@" (JDը)8qz|#b1UR1`,%I&i yDӘ-QĖ}9;>x~A ,V2@Bg*2vDb,׺Ep弒IFZjXDB($ 4AYga)VJU!ߡou;d2m $S1*)I*6|G0%ߡfU, OaVH6XMjI6=% [6|_H (K!t(6STk'IW]UUK&APQyWe$Iu!sG% f,D_?P$! *s M)N0$EeQ8YYYTWWk>墱w544r4W^^N^^^D%&S":3= `$\9vp6Voqq1N|tzZHOO|ӧ)..xJI]LS(HqY$#H*JAvd @aa!/^,72"&94І&$Ȱ)8DEχn4hCvv6]U"pTaJɴYѝ|a! EQDUZjkk|^ٌ#ن ;(P 6݈!tY)gfǎ}ݚʢ츏'0Prr U $ufsQB.whvpb@>J3%AIjI$)YtoXq=mcΝbˢLi $² .cŨf㲴M}}.[Ɣ)Sػw/ .tM%'@H F p9q2҆@qd!@pdRFwaI3A`1ѥ8p[oUqpӦf%QDhD" ChDH*q8M޽{5khueD`LJ=&H/LDETP'Ϧ1(`3quE>{̘yT*S HhbD#\:y2iq QFqv:huyDN78 Q`Nə$θMio_"33STU̙31"AUe3BgpoXt:AUU?Ħ+`ȑ#51n8?رc57ydς PTGڀ7$ JfD˱4Q G]μ?x SN<#G?~N8WsI C$ aZ4U\RRRR5?3+yDN5葨^+d\Hn0Q)kvӦ`T*|Ҁ B$5`!C'|„ :7$CeDS@_~>xg&_~ƗYܟxj䢑cWͳn+ϱᥧTz.=+'X~Ńťs46;^^{GuGK-lP_W8ݯ">Ɛ@]sarrrfb#yM}G;pB'IR)H5D;w.+WdذamIQ:Hm//^mm[m?w8?/u?_xUWWɹSO=QU*/"TK~V׬o-2P}n<wpKaUȰ]AÇkfaN2Dp9%бa . ,[^z'|R"{Hk3y(~[KgY _a4gK+72$K=ɡ%71|<_* ;6ƃO=G cg|՘W, GPQvQͥ}e;q8WԊB_Rs(-W>i49JH5F$)xIII5ng̙lٲ P f% gNbOq׾Ϩ1vm1`]sσ`XhΝ:iL};]B)jToQ?ڿI2!~Xp#G>lgG(> _3M"'o$ȱp96 QQv뮟׾ vWW4j~aţ:wOiJM={v :mdkkcy@\ˢPx衇x7J=z4@gq#Q<41wf;wHlʫj⽉Sf>Ѿ[6̽GrS_c{'ye}cYc;ROo3mÑV,v /=.J_O}׍tNqv&2ĉgeYs^x|A\iN5ptRVZ>9]q/BD"qCqk6_]2-:$hA%_%RUQ-'3;&OZ.q&~op`.?C ྇Y챘&d;oh~2OpTUeu3c] t lCupcȲ̪UZvEE[WB' ^|Ekijh$hl}ˣ%UQعi}=lNӛ xc izyFoXB%λlqٓӯ?]sls-ۘ:z=_[|#g}HH)o*W;$=={ P Vd0yd^{5/^xE+HviN+ ӟ>Js}j6\[ ZTE-pfY@zfNl[%$Xt9F'F4e`YpSoWwXwu7?ݑ½?EZF¡wܟ[/"hQ"> Z-( eLq*(*ӦMcȐ+ddKG: +3֭[?xD?ْӏϾeB '}cQhRՖi\_6`c{ydk/WZ:c?-(q<ՖD.fݶ1R],\(}ޝYDi o4輐͛>|8Fp~gcFwY9-#}fL9>*}Y6O?Z}3m2m@_7BeQb^*{シv QTT^*gHYY09f/^{!_Ɍ= UW+ZKO,yKc d{`|'ɜٳ#F_uT"2p4b~zGN[Qػks~m"aY ?EA@ܹs9r|Px9vr}B'%I!׮"> +W䮅Ztvoو!NjJ6lJmo}ȲТbvlz-&(fݶ2ϾD_. K*.Q4r4N'O DPW=ENP>>oQW ^YK!=w=;7owe`xث\Y[8?'qxg @l.4ٹs'+VRBm]FVa}a"I:1[/zá{Ix8Qфw'~^Osy|;++1EwyonΎ֡(2_~>7N`{w{Eċ jZ\[svmi¤LǾ->pJ]u%O׿8Ɩlv m57æ5kmSX%I*Ψzj.]JFp9*`[{C,#~g ̉~r9Nr L]0lDl |G7ϜǦ^Ohy%)qs?;?݈oZ֍pgMgp7S]RXzz}ظ~z\#g$tb& Xx0gjDg'1H" qDi<.\`۶m,_<oL|{%[[@eey O<]8~xc5Jim`(dJ%S;ƻˊ+b)}{:v.IxG9vt,_8ᨽi`5}8q#tbTԩS5j/b,1 K*BDeիW3fLi< #2$EA!'ƍ̙3yg\4YR ?ʕ+={6cƌKe`Ur_JֲuJLBb=Z :C\t|M:kʦ-n`ސ@uGvl޼XF~J=z LURl,_/L8{0`C}P[ P(K/,]wn}+#ъ& ҧ/^dӦM{dggx/ê 뚎@b[͓O>|;Z]!ZD50 <"vL3}v8O>J;{]d%6$%Kʕ+|-W2 ZDQkz<3pw,[{AդEN0aÆK/1sLFwj]d_y1}.]y=&t'$W5dmYN'|gϲa ñA3"SZZO<2+סЛެ^tҭh pwr9.IZ`s6ȄndaJ*V^A'8ILT̙$*V$vTɰEYa矱_^J%ԥﺀ`),8dX⏑ =.t.|!?޷ؿ.DjYCDP$2|M.8Q#zYosJK`10O~;jjjشYdg5Tʫ=~͛DzeHI'Q_60"4kǫF֬Y*R玑[|CͱDŽ$z Yr%O@Qn޽{Yd ~{LA9*t Qq$+2[laڵ9+VP4b$gXn $D/?1{^s=Ƕmxǘ8qbXh``EJHAJˢ]fʕTTT؞#<Œ3.zWɰ)TzGGYE ̚5ɓ'qFx "hK._n{\A&\n|awPeQ)++cժU>Hl6YhsV{:@\="t2lm'tl6|A̙իٿ??_yzbZjĖ/qd3uT~6A!jΰT1*Nʏfggo|#Gs6TEyOX dDYucn:py@Q`ǩn/P[-Vdٳ;`@! f*v 9wytQ)Ȳ3|رzMƨQ:=ȯ20=js$Yf1sL?ΪUbΜ9l~u]tf``z3M]vQ]]7O{/w^IOO,F<>'9*TWqAHOOgɝJ6oMBGl.\@mm-$;E$Vă;A:u*qkOROk$tI.$## P{t 7&ߡ=Fkp܆ LvKpHes :ސ+,)q4ni0jyCGEEۉ[$ d~GUB'J߾q I_FiX1 '@D3+ `Ӂћke, z[7Ns򡞹)=G[vNa}-*70ouPCɉNu m[6D#GAQQQ V"s+U0./pyN>Muu5L]ScH,^j=՜:u}( (RXXȑ#Ύ5UU(ɣsi.]OD0G%R32J5۬͠_y*:uREA$ ʊ}e^o'fNNHCA&;;3fVϟO>Ƙ9HΆ7c(k>.ՕHȢdf[MSodr#Y^byG"Cqq1ӧOpcTtIx$I1#FĶ555Q1h Oc,o[M]ueƪkx{3sܽl hMa…-ڀC<JaKNF~ǚgȆߤau5Uoyᾇ}[`chm`Cthhr#{wn+祧#9/=l.{wmIt d%ItH,v<>R Wy_&?.?n u5U;_?SoAu\nt(:;HT'gˆ:7۟_BUyYoA;u,Cc֩V}?_Xӟ%z*;uo=uAK:.i:+h83nkHHgFIaDV1"Ue\NTcTW\JT V5ODVuh?eXɠg[O9 Zk"'z*XtT$$=n6OQY=u?GA3:V-&cyB$(:m"a+ݹ-^J44eK|DO2z𩪊Uƞ^2K\.餥Fzzz\ C|Vk~)3ڒ=AϵH$B]]nrٮf#ئ( ^pz"&ƑU{5Y{=𯻨*g/~#S\Pw^L‘Ø1cp\ {EJN9fBGl($%Fp`B46g=.n_'Hq&z*B&yDq:ttʆM'=K|sƠGљC)vP]Ѣs  EQd\:zu5b ^%B#tD-Ud#00^ɉr>>7 5IR0Vfז Bζ7=A%啞z @nAUU>nѭܻSWAg%CYTCI(et4TW\(HdAMG19 я= z̎ԏnt =™ FVgr !W)p6S*.&z }˫%H HX΄ݜN>S $阎 ?h\ɴY,\ޞ@-tqn`./|޽ fBޘi Z'O ux+t Eu\Zp_1h둃֮Vp ?"HeHS1ty =neE G.QA4g4 !C%=n!+7 &z "z tw1=naluA zqyՕItP(~"&9Sv .O4=zʹLZeXϺ:n7JFGUU˥-,VcħKt/Hq%zK(Z_i/ڢ8t\/]SQYɎZ6$T`ԨQ8'j$V . -'˦{Y,~ PX8EOYq1Ӹndeqhwv3=~ `md,{ӟO?llNby%!Ū-Ǡgy$)ysnR6A06^loEgf'zXd9SfM4 .c?ς ї)`NzF-jKNtb |[?L4 y(w5!tzH$®-:( 5UHј}ۛ/$%Y=ftJrCm!(2vl}j#a,5Խ" gj:?sdd&z*0K=Ýt蛬E2:=rܩQU>d4\~(4W9,`HW4AC ϜCt_C}-PV[2#nj3613bѩ.NW&k>u5UkK\VW\j$ #njOWkk%UƢ>dԡxF4ITDhcȑ?Fw=@DQ`4JzZrYt:@ 5ZQ5(;[__kqpDuUylw//}y-NB񠆒FD;ۨ,k_1ntQ5f̽3'r46|.yKT9phkkR:_t*t@JŹ0ΝF{N;FO >>G_ I&m]3)T^*_<ϫPvJaEL4(OMlݺ/Iqq1Æ ܁4IS|}*>}RTUd2QTTDII ԉƠ@y53\*=Gލ{ ocC; 5Vr{HmM%bpz#$ #WZyC :|Ѩi<(dC0jj8}4$ {q>u*t|AW6B0uQ\\̌3Z7f2zilcMꊲEaq{)Nr qG\Aa@VVYYYL6 fr1oY,nбf۩Qwu7UӤR43`& kˆ6l# ᤠXSd2sga;*$"b<>?/㊨QɀHAY2N;nt\ܾV$"C7LNm1H:=WM{q ,Q=QI6\9|=.?XUU9Bb).'ŕƴ[8=4_Xe%[]́)M#7?rgP#Z). !J]khNa0`dNL2̸iT(t)//466ԩSIKT})JvR1یAsoS[[墤܎ ЉVڸ*=TUŋ:tK^^z+.W2*&oxp{M>v_1(qFގM6뮿c}k L222;hhhl۶ ɓ2dH ϨJ E_8jl:{,~!@nko8- '&YuԪIZ2sF\ǖ /wۜ2s32$55x8tv"99naÆQ5\RYp!6[|.-Y^88 /C G0XmTW\R[͜mDV礤0{l8t{alY4Oq G5LiQq9zNt9qݸضO?o|nhgIHNNf֬Y̚5S &d񄚅 4E]T;  g9cr eڭw`wĶ5P^z[4qL# FU4 !t4ˢ/Jh]BGV'ԓLR:-BUFw 3&iҥm!b4CZŃ7$莻݋sI^@6(ػKJfeO !c-uxGJ1t{=u oX ."'}ɣw fts.LxQ&H[ZEhYW~F6om| 9qއ0yZ' q']SfN-֔ x<5f钺 dYݻwc6;w.6g&گ;,%'Lbbt$)~aM]!b1EF;VOQL6oL8fׯ K+ +p1;駟rAYx1VV6} ٵy@Ng/ԄN#|釺$n[^IfRedl2~?wfʔ);]/,ַ*eÊ;:f'gΞ=_ϊ+,0nU)o*{GފɤV9qIn(AND>H56 ( gaԨQL>UCͮe Efǎx^MhE/V9eδڞlOa+ЖQAvヺT0o[cIvC]DQdʔ)L2ӧO /r;w."tK1np! x`Ƙ&##~lfJ sVۇs4ulӟ)TY[cGJVʛ,..6mD$a{Pͮn[HǑrYV3NmubՖͳnKcթa5E=h!33e˖9I-BG2'$bApPMR?vM>vmiYk<6]4s, t숛@Ȱi&oNPcJ2(ɰHRD]d9®-4HX(1ۂ|t@qp#Р&UwO+hlNwmB' _Al2=}?]oǺj -bڭw[]r+Mfd2yl l܍AH\Z3I\ @ 4lĕ[hOɜĤi0r̄n[mKc9T0w[NXh ivdYW_%+$IG&isϾ{7jNC}m2 EDXzXlv[؛hvHKg]$\31=.E|>>ٳo] |m&M͘79h97L'wHaoAwߠ2Zge۶m<?cUۅNXa Ċ y>ed"I *7YO}<3gzC8W-ҥKۏoIT2 5=x& q5iqU<6$`f̘+Q./Ϝ9Ï~#7_ yyTGS&L K6OH5w䱏.eăqtxHII'd\Gu -kQ#If\MkatM ys(2,eă @][pСC~Yjw-г߳^8&gqZi+I%;Yi`-Μ8# ^t4F^?J;(zI dN*$hcWQU:s?k j0HIRY`}ҤI1W׭c]'zCBͱ$nq&)񩛉XE 3&#Рcl&\U̻q" ʙpPcHMPIkM"sO|Ϟd;=E>Ki %~EpP$u|Źsز-F'#+J{E@x00&ol… D*HtBGDֱ\Oٷo?8vHj)3瑖)a$Aehjs{սт \*}&yXL0A1<'}L(غHWn\gЇ(p^-U!"?0N>{h\\9y#$7oL8fѢEm&T Ja̹AG EzMmA{ijjb֭qU1n:u~O.UUyW[omw?IeC_c}ی@hoܹsIMMeݺuf{BbkLE*|Rђ,3qDnN蚸Zr)FAg\p)XWRR¸qXzuU@=LBQ"1430oKM!ϡ9 8q"7n5^I:jg֭3f̘erFcCEۀgf\BuqaǎƬniH`m=uEطo(2eʔvI:eLB״FAD=TrN,8_#B_͘t$]رc3o޼NdzTH4c9wbOq&!*Eϧ>j?}9k7߶6q>C޸ǻK5"]oJТD>DMahn9p/9$ݾL9Pom\f۶m̹wrG=X-C${1֮]$7q[+ Nxy/_NRǎ#99ÇQ"~]H$©>wd&6$A)1̉'tgXxGx)k[#%n[Ve󁨋3ͪ0%i(Иcnf*iV"ݬPϸK} nV*fU-r馛صkn'oa YF ͹x"n*K^tn O E<{׭[ǽޫ^VV e}n/~gNQ/٠h< L&3g 777%I{^h {>WD'Ns|a߿aÆjժXmZqiXPɠa5ElVÇc|Av;vJK&aER)HQJw8,[,CO4;sL;FCCm{#T=͠:T$ʽ"oKjCeV\{]XXȜ9sZ쓒M D_$|0RvmL=\:cɒ%曔{%*|~J\1$2c((-[PQQ{bŊXw\>yYWmjRw(9eR6%I.++]sTS2z8A)t"ȅhn4]6zԩ;c5N_NcЋxkJ)t sʤ$)6g?~<'O^v-^o| P$r+xB'JqG+y͚5~f3<򈦳y*)?qh1D=̈, Eet1_+1!9jS Ե r8:zΟ?ߢEVt}Ν̙3$I%׮P!'0:VJ]85B]"E[j-]w{m6JKK[. rC\FQYmPʕ+c3iii $5o# rEzjQ H(㔔pLTEiB "pQnckќꦫmYc<#X,zYڵٳg_ᑩ8^>PPqZ.irJٳٽ{sl6zGr`NB/ M+ &Ubۯz;FbƌFejrrr:?JCfd̹vD Qz }i2y;1?? nF{j* M = aEŸݏ|h\ss7k>Muw(J"nU e,52#";d:KJJbJ+/H?pt5 ܫ|1FDK[UU9vO<#4 'd&κT'O2zh]HKKk=Ⲩ."?,p њ`A/BL)<++m.pj-#GwB}P/7D߮~҈Dg+3u.uuuǽIPIIR8z`Ne_NH*J\_YY!æD]K8 +\XnO޽{;G% Duܟ%{04DJ@_$æl# ])"5^6 PI IX(@X+QUX J/DQ%"ݘ|hAnK(,JԮ߶M|yeuus5p\Ԑyͻ AZحg0b.V'RȰ)wڹs'-5nMM&5&Ip6L2R^xy~ӱɈB&$]4F{]Zl۶M}3g7oe@c0Yo`n"T$jTl*f9<0^nwۧ2.|<mwK?vnc+233p8z8MǥDE; ACn*QI}<̹[ׯ))^ԩSqAŜ>}Zq'OǔpޓD C,LN4\j W^^N^^sRXXH$K^iDQ\fذa?^ n/.y%κ%"f$mc,zO$Ll1jψxH 15H91ut\K!ZNS֤ +=Qc%PPk%Ubk\L֏Y!! *TIGN쐐g 4gg ssB4 HKJ˄j"bs`5~DT3\K(PBM[ ~B;RťbΖ: m?F[aC*CYHyȰ4s<J``+NUX3DYSplq/|#Yy%IR& -?^B9޸߂r5y930iHAɦ:>Fqu~G8ܕp ` H\y~?O;?xp,B(v`Xx ά2h%Q1B$*&;ENo?}G*+_gjbɗ9/,!|k"# IJh)mbRT~ȎTGd ɊE}PǸI0 u%#ٗ&MHG MYcd']-4|%̿r:{z??N:M1aD Mbۛ)/'~뢷Iz:R%6r`a9i&š\X)ɳul=ϟz~g{h&S[kqS3ҙ .,>ndecQWH+8V U6U91BFBE ɲe8X϶F/Qw H6BiR=mT$=\Fk!W b Qd|f!`A8JPbl,ZNo?ǽka@H <ԂU|brs1"ga-KNO7nzƲ|os׳|@2;-PaMH^ PBQV%RfbC`[۹|'#]îGA$$B*l| eZ(ǵDR͆;~Vug׶N<Xz! ͷyqx7sΐžIψe{D()PR RfjmM̞y=`/v8yHzpwv/װXk{^)m=;2&w-1O|+̦r~%o%˪5o&W'~LPk虲8/+#~fk`՞{n;i Ur{%㞪 ٴ| !N0Ji <@s߅D/_Q1kJIR.yWoif@t ~Yk':zn UhGcTpcq2o&T_'9V1tRj%7yO89/O `wavZ6SZZU dƆ),|1쯯k=ȋ/l|B]JB$`t_@ @pҀxg3}aE+bĎ|5%Ud 0bvE++oc\:f͞MUU!c0`Y֛;Xnl]yd KORAߎ#@3G)PNJ\"B,KY5=iߴsM-ysaaʕǡ;Ynd`a7]u2s!~Ff|rz5 ԄԵ"yibl,3 )e5d !%=oHQ%͉JRKGEIPnőt7Q9p=d2IG0f#FDXuDAnc {-N{6~EԿ$( 9y448ԏQe tt%ܼz3{4tGl&T"c3*?O([TVN63=e`^UF0{>b,V qC@XTvju5rtN>I@/-&JUPtjIJ ;Nbq-۾Dna(C#1 }`!Z۹rn&q49joАDJ%3icN gC"vB䪍ڰ{V`=UO h8Kn`D'|/oCk?VX6AK|x 4i=o~8M&Y+=@k73J EKvvr n"47"D `9X;JQO9ee6+ e$eeeDQwu!2R^JJˈ?NoQm2ei$Ȭ5͚-KWH̛ 1iV~?w27Xcu܏vrmy%<ޅH+5sWͮ=ĢQ" Fٵ.:;zvQu g2| 5Z2៥N7n̏x@Lbͦ  kװ^"󗢴9Z j@YczdcG,=kÝ<8K)I](nu47̾h5boALs9f5SQ)F+c1@v~k(T368uRBA n_,V# Oa\q'dH!R!lvhlxʗDj4wA0T&z24vWE?uۯ9}++0PӗW","@<[=@Acœ4L;t@#@xxWY;J; ^) !WqWqWߌ$'TBIENDB`gambas-3.16.3/app/examples/Drawing/AnalogWatch/.lang/000077500000000000000000000000001411575327000222235ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/AnalogWatch/.lang/ru.po000066400000000000000000000050511411575327000232120ustar00rootroot00000000000000# 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" "Правая кнопка мыши для меню" gambas-3.16.3/app/examples/Drawing/AnalogWatch/.project000066400000000000000000000006711411575327000226770ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/AnalogWatch/.src/000077500000000000000000000000001411575327000220715ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/AnalogWatch/.src/FrmClock.class000066400000000000000000000065021411575327000246230ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/AnalogWatch/.src/FrmClock.form000066400000000000000000000011321411575327000244530ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Drawing/AnalogWatch/timer.png000066400000000000000000000053321411575327000230550ustar00rootroot00000000000000PNG  IHDR szz IDATXå{py|+j!Ү$"$%)"'v1 NR7?:ig:I:Rg;vj'I\MH I]}9ixzf|g}}lٲ 4@nڴϳ%?V}sժUuUUU,KxSS(r=:11SNag|Ǹy]C˪ ޼)Νth$C`̆g(,,a͚|+WK.v`YJzsrv4x,< [ςt&'Y\Qn֭n ߦ馦.++z-޽{wKΟLQa9_@yy)x$xxesW%Gu6ghk?FhjokkxH~ /;sgh 0摊rXO~~~:tR\뗩cjjMSU~ﯸ~ۀ,Rv|ɓKbY4!wi=ێ2KxXB Hia\:va߾_믽_­[WMMM@EEׯ{ah۟~T}uU`AC0$p+!;'?HQIKJCK~xbۺSyyyOBUT<ٳg/5")5dg`h0p瞅xk),NWXT@KD (-/+=wJ<׫[Zp$ƍټy?le?V 1V RhQJB12#*Y;±Gh082&&#D"oWUU@kkԵ2|o/^{|%4F9GTpGiR3j)xIA~Occ eee1%`Uߘ7#vgA~Ci!@ hcRqc֣ǩm s(-+#D#Qx`۷oyJJڵk h֮]KGG˖-c(0!:ƙfMfdff6 σ51KM2 5ߝ]^g23HL!1_c FkP4 Ȋ!yW`>>2>zb,qPZ1(F Pm1xXYFk m4Z͡F){p4H)`ddݻwuuuzttTh M\\hbYB;bpƱU qtSEkSoxb0wR[[^~6m .RnNξŋ3q{py<(m8 |( h,z^B9ã˗㉋7߼յ׶m`Yz`0HiY4ۅs@ifgg1 y0QJ.VjFɇ?/H__0#W^y>w555C===U[?z[;sC, )'[ D"(˅Gpgx8F+'JEIayks| OtBxJ[[rC^l[ȿT%w aQY728+UN5$Λfr׼R]_/;bC1= `1'7s0o³o?V6q$p+i9ಟP/Hߙ`w?LWMoʧ~tA=V05U%x_S^Ϟhd_@H~?~qL?uHS!d q) sѵ1_ =>#Q}RKޯq&磿vC?n0p,~BBY>6CU'$t ];]M4׵},6W[|z;]haJ{1F27O՜V+8aNQ~e ']`U# e<鱿 |u~1̰aV<[$2{gW tJ8ߋ|43`3DEl t;3H4^+M=UjkC/3GuΰG@5s]c%\[jB\gxBG-%L?QEj乔*F\_3VJG-.Hqz&,h7T:N@Ji[b.[7?9/*\~3G꘥,i+9)hs:$GfӛI_pݕږ%TT}*'> n:TIiX3\GۑJD#XiHy:a *j)%c#=3~0h=Rs4d$G QJCOb8ܘ%Ո` `'h=@r2B,t!0)L->-/?̡}. RARIRR###w_?-&i娴tr=+|%xHc)yZܑ<%mYJJ O2D#<p_Tvx)GHk$J4g2W<0&^:f)i[R`Oh#Ǽx1!$斳5lJvbd Did `R`KK)[JC0nM4f[̙+'Oi$.E;sIX:;-lKIQR8/4Nē T4zV.:+kw cTVϡRK>eJ{PD,ev)"ecFVMq0B709B2z;}r=߼櫤]z+h@\;Pzƒ/5_A2(r PR<^ dfһCN!R.eіи;3VIOT#:S!# :XLO+&0uAO, 1K@;BڔCcAItrTP0}L`jQ߻ DXJC0ɞ= 5z|F 1FDcFOtœ)2B !I>''e,(c g#!r1=]G 35͘45>JU}EC@9|zCř.H}>σ|@0?gN M F 2D $~Qd 8 $w9uݲ_$Nza|A}m5+`y3,fe-Rl?]T2꽧dݸV^lbN:fڶv,ori^)t)W?A oRM?? o^V!^?0aJA ka ;e^sL@8cfͳ'^C~IENDB`gambas-3.16.3/app/examples/Drawing/Barcode/.lang/000077500000000000000000000000001411575327000213725ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Barcode/.lang/ca.po000066400000000000000000000036021411575327000223160ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: Barcode\n" "POT-Creation-Date: 2002-11-01 04:27+0100\n" "PO-Revision-Date: 2011-03-20 17:11+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: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" gambas-3.16.3/app/examples/Drawing/Barcode/.lang/cs.po000066400000000000000000000035241411575327000223430ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Barcode/.lang/de.po000066400000000000000000000034521411575327000223260ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Barcode/.lang/ru.po000066400000000000000000000064321411575327000223650ustar00rootroot00000000000000# 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 "Выход" gambas-3.16.3/app/examples/Drawing/Barcode/.project000066400000000000000000000011461411575327000220440ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Drawing/Barcode/.src/000077500000000000000000000000001411575327000212405ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Barcode/.src/FMain.class000066400000000000000000000073451411575327000232720ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Barcode/.src/FMain.form000066400000000000000000000033351411575327000231230ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Drawing/Barcode/.src/modCrBcode.module000066400000000000000000000100571411575327000244530ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Barcode/barcode.png000066400000000000000000000013751411575327000225060ustar00rootroot00000000000000PNG  IHDR@@`UIDAThOhen6 ,ASkTZ9yCCk/B K(!VRLO(V-Rz^ qR Uvi!V7N7yy>}yf'gE9]Py^:Wؕ( ѯ{)/vq£Fhej/}ƚK/UBk!"&BPD!BLD4JD9&"ұ+ rYtIV.+2 2 2 2 2sI'q!ǰa-W0`ԿK_/JF\)+Y 6\ln4a z[e<'R~0o5U(,pɯHT; /xEe[=.@÷}o} ob>Sp9=;`t,(4|6>3qvUq5"㹈X1kQc!VW=幯蠏74&\3C}ͻl<;Tq̨^\pkFK "Bݢ:~3G朶:e^ov.N HS}`QՌZg:|:>75zJ; P@X0f;{ZzE>IkhKKw(^iwLIr^8 IENDB`gambas-3.16.3/app/examples/Drawing/Chart/000077500000000000000000000000001411575327000200755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Chart/.directory000066400000000000000000000000411411575327000220750ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/Chart/.icon.png000066400000000000000000000077631411575327000216260ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛ{p\G}gF3dIöW,ۉ &1l؅WJA`[<7PppK~۲e[43۽ai";8깷>e9^h  ҷ z| M9w d~uϴkRO@k/l㛛ih!٫w ca8g ;ۮb󧋱-Ot/i ;2gvmJs(97*{^PQc+jx S,d[O9^F)ŗ(w?<¶S]+JiF9߾2y~*Dϴk1;3uxRNĹ'麼(қ~%%; L {-l(^&3-!;cT(+ߙu`:ݻD Y|燡 sp Dw0>}a; BLFW=o)[z?i[ԡ_+11ܸ8w>OZŶ&n$#5iM6߼ck-6< 6 40#q|N_%u6V%m_x\"^E<* ؄m9ũxx0֐؀l0Kg&6* L&w$IEhCfoݞm+'A81Bh m-<ЂGE\Wc;ne|S]npT`&Vn@kb1;nzd^X yT7+ 0eb0 .Ḧ?>qp xHM`]O8re@Y@luC=֝ (.\ n3L<Nl^5^)PpӐmUlMJ\mYkXq[ݖDX=rL밥()jx@%2b)JKHltؒ#0ov7o8w]R*b)iBJ g&ŀJB8a=Ln_癪V=z{qp!Ok?g1X{33;-@(iBRYS # %^:*J 2[bD{j+'NEH3gC 5'cۀ`hS~ʮ_`^62eNˡLr !tR꯸ᄢ/bE 0H4xH"D2\9h؛·`96܋QI}tct%!--`lP ܵQ=PQKV3c0 R!yX Lw1476û Ů6*Y/R<** vWX_}]`\m2auX%:@)f blj0V`pd ;p; mk񳣻Y!`?Nc1w7#-]ûhs(/䡇F?@N عP/C2Ы'2RqKڈKtX?>=khZB"6/հ`ٲ}7NzEc(hoO^I\w+׼XH>6fψ8*fusx巓ڙ, fG)ܣ-a..'-{V}N|e+=/s6=Kz?%gekqP{hs]f;k^x`Ez0HՍO C AD& ! (IDHz [rt+[A"K~NWw:s1,i\u͇.WN@cvxqEE^| /cqL@ihp3McarEZq]{=o9iEe wbn/0Ȝ K@̣."evñ-1 dy9]WE^ ".<:H"4~- &gge 0h&XP|i~ QOQ9D KMnaWC5K-8I#aFFH 1`@n!N$!E%Kjfe+pNגMlM j$U H%cc*ZI5F;8Rtx7}~"ͧQsǸ))8MEr^x9x`r-,'9ީ_R5(0Gd cu_Z%9<n#=3-/u+rzV| ;0F`PuZ-8}Vv߿sn/u'Tj­S}b )5,1,%zFΝ dwk#03kC]]#J)\Cx/cF8Dasc9sw5ך5+rrN\3pOTR(GcH o[Da q7yid#~G`F vd7W 6D\Q}ly/xۖya眱9GOnXw͸n>|8y8LJ]0Qq4av^)w$Q]ʝg?j=+֎v9Ta!)xC;'5\KH|hV>ƗAQ>w]/YI^A1`/)^kBtCmCe' w7EWE2Օ;U!dd&B॓{q- %9gR}ǢkIdM)(F6>CASyM:iM,n]y hD/KSdO7.?1q@d8`)9vY>Q @=+1"6+)2B !:N} GNh41\ !qy\ ֎2ռәQjRWJxl3k n6ep;l  '? @#k*7ȴN-5 j l ~!6Z"@)~R p dl^|TnG·I ukl>rϏ9Vrb9=8ʋᦛVb)AV0wʾRe7Bhŏoenz:|߼k07N,gWj6:$+ 8h7>gNRDZhfN~ ߽p:aiIys/WxTLe cQ<6b+L+']IENDB`gambas-3.16.3/app/examples/Drawing/Chart/.lang/000077500000000000000000000000001411575327000210745ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Chart/.lang/ca.po000066400000000000000000000030621411575327000220200ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Drawing/Chart/.lang/cs.po000066400000000000000000000025171411575327000220460ustar00rootroot00000000000000#, 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ě" gambas-3.16.3/app/examples/Drawing/Chart/.lang/de.po000066400000000000000000000024771411575327000220360ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Chart/.lang/es.po000066400000000000000000000025211411575327000220430ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Chart/.lang/ru.po000066400000000000000000000064411411575327000220670ustar00rootroot00000000000000# 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 "Случайно" gambas-3.16.3/app/examples/Drawing/Chart/.project000066400000000000000000000005121411575327000215420ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/Chart/.src/000077500000000000000000000000001411575327000207425ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Chart/.src/FormChart.class000066400000000000000000000046001411575327000236560ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Chart/.src/FormChart.form000066400000000000000000000012031411575327000235100ustar00rootroot00000000000000# 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 = ("(%)") } } gambas-3.16.3/app/examples/Drawing/Chart/.src/FormData.class000066400000000000000000000015151411575327000234700ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Chart/.src/FormData.form000066400000000000000000000032561411575327000233320ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Drawing/Chart/graph.png000066400000000000000000000003411411575327000217020ustar00rootroot00000000000000PNG  IHDR TgPLTEļ3[tRNSv8sIDAT(c`P4D 2 *DBCCPpqqDIKK"hEhh0Њd-"%(Zp tt`R^^ Z-J(@(" 3w8XIENDB`gambas-3.16.3/app/examples/Drawing/Clock/000077500000000000000000000000001411575327000200675ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Clock/.directory000066400000000000000000000000411411575327000220670ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/Clock/.icon.png000066400000000000000000000104171411575327000216060ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛyp\ŝ?}H[d]ed_`Ci08Hp$Y6n6UPT*nn.[, Id!6$`oˇnɺ5HͼC%&lLoUW{_wue۰ƀ}?|Ad[B\p&u.(v(!]%|}Lcjp]{%Y7|o' HJ˘51wmD_@AeJ *^Lk42 D67Tn[y =H%ptZ:R^J1&BER2>SnFr离?y 3C ʼn=/3kҳ /1QJԤ`(~bԲd1I`n>jnvGwe;b H%cZIv !8_:>g_mǝQJKA⭝/[@+yISOIZɘR H7c>տ{Q~?D})Nk-n{3 J0t{ghe1go}P~_Ci ɢEc,0oˌNtbGS"u]233<1(Xr%7,Eϟ/1SI'ָ;jZa$ ˼qN}`WɪZKY{3N2[c\&GܳbO_*3PGw?ZkcB"LH$H$c_k$-bرsns@KRF|O(d̢'{DW+ɰPrjʟƶdƏC9׼X?g_|6* F6 q|>RʱyX ^Bfʕ<`ތ 1`T 1y/$1! )[tU.#%rIQXRN`G +:W_{EHFuMcq3sT7TL/..}`B%%b4 (3 PRLwE"_rrrH&XkRBQ>abN BӧVWO"`zqPJ!!V*X1dǹT">dj+^I~~r|*7I'܆-B:}()͒Ky6KOW|^N.a r!\ۭ$-Fk0㦱psadHpCY,,so39!+2װ;ksO+tT}Vfo.0deeecp8L4% AMM  Q[[KF }IaǸi1Q3fB7W̭bhmdz_kD2o:hڱ'(coC_#3v54/9' $5j<B(0 R@4f=ڔb4(ʑ Gb@J&YYpdldZtlƀCDzC; FrpV~Tލ;9>gkK *xL |>T q|$ 0֏[qY@* zquBne-Gus3R" 08zNFl.j!rdռ*ϼQZzgzʩhku]:::Hw#B938$6=OԻMf[H֞׉bC#?yϬ{ SR6={d!8s!""XKmCsΉx`8HM?N8qCe [qrڇv,i&dŒ= )_=STdEAfvܼk{ESW1L+ x<tdN"cܤѱk^>f6oܔgmed"׽!]X3K*"+n)B !Mw@o6d]5<B(??2rg{vtԕ'6~Ʋ1@%|r$!(Q@ 0(rڀ@ 7D3ls,H)J!|.\S0/b)Rr=6g,[.o5a.98MC;j1v'A^E9h2-],=m'MmH3a-=p$Mp(6ON;b2?i257h2T7Iv! 7B?Syh;>o6XK4b20E96K13-~/s'n2lqsgko,&g0~3)u9Cy3{$b&]23*xv(q TxOq"\$e50#_/Gl-J-StB2"[@b0F"BBSjQl1,*aEZ?T3KIUpYv0|29b5[9P,HEfdv*{0+gD`YyDe =nQtbOq,H%g2!Nq%Y Bj21#Qw1-M%V{)j2232 YtRNSs&qISw Ruu-ٱrԱ[)}?7Z~Ȩh!aQDLTTl\|$'% ! gPP͋RRfPQUc`P/(,*.)**f`Љ7``0Jihljnimk7b46a`0K1kn?aSNni1s9sͷ+wXp%K',w 099,_riԪծ Pf<<`">` !a  9DrIENDB`gambas-3.16.3/app/examples/Drawing/Clock/.icon/32.png000066400000000000000000000050471411575327000220350ustar00rootroot00000000000000PNG  IHDR szz IDATXÝktTǼ'df2 ! $2K h6*ϮZpt-(" C@!AI 2yL2IT={;ϹD$H7>Ť>@wG- %V 䵵3233ݻ׉SdĻBm ^|ip}KL;>/\chj^Nd4HtBŶTyeV'0ݮ⒒I+꾍b(.]TFa $oM۶|jT{cշ-=CE-fPt-NVw댏d׷,fyزf¦MnYʺ=՟Ok,%jQ/Z \vCRPݞ6l؀nW/"|*N}ɗ}$Xokz\>9cA@AT: d}9؈/ϜR0 `Ȱ EWq)FxN$0,@)Mn%|DS<)2&F'+TJ0 #**;'`k7ܫj@ȴà0#3a+\ ձʊ) Lnjmw#hx[{OwC_%BF4+BPfr(k,+lٮ؂K2N\vt3`fMQ"e\ ~ R/Dt~ ۷>IU#I}-_Xb>~jIcX?hgG Jgwvr?'ZҬPfNo:7F !DJ;Bz0ڠU rHUϽjN~ZH6?I~)ڄM Cp4p%[:O! <'`beq&58: ,j{mkS`]C[A F IRBVȨ4P匃"=#GOy*~d&\(`uC"Z ?}-^[u- Fctǟ<'!x\DW7] x!#bLTHiYFH>|{`(Fd%N/Kw_3ug"G@>vdoF!kOv7E bs 0p˂(`C .  CSX.jh +{}Nj:Վv/)0}6ad hsN*X T@J7BtX!@dL{5!3[I1?Ēs\0[Rh=SX ' <aAd20Lb,hDq($"#;RC  MP@6:\ ^tlv!Y倂q]fWqƍ- L){)dꔯЃ_w.,8Ą(Dey `K!bD!Aқ?aեFRוVC@e4BpzCZ c^pDCݢEt9;vͶb0qZ8,?)tɰW4d*0'!*pJ`P0l~,eG;oU)[/DR4 OE9fF U*WA:e=AF>㦶zZHctжЇž/d@ e`St$H^?`h Uu$39vYk<[*Yc±Px; "i> nĖviS+BQv;z@\@rSeJYk<3[)wyG[T*PApF mPc1Zr::Jtӱw<6`,CiV> /n+HY~0iZ'7&QZ`gfT:g>b6(9‹瞥Dd%P ۑ.@$cj:.{ |0."$(œGM|ՂTBb`%_xe3 FiQ5'+>/h$JlG+{VYqhqOzmЎP>AO'޾Qvڠ\"jTB[6ukp wO;,),E#ZG13lq-ܶRypmZ.`8:R &8LzmX:wsGGOԎ>N/c ^'ŕMUsiZtO= !p]xh^#H]r|b-އ&);:g$g.x LQ$ᑤq)biECGnhnZQ!{wU mյiiWd8ooQ!Bt\@0葺d?zTa0 J{hC #PH,ȡ=C(xJ0Φ͕sޕ+WXvsC/>;;ZۻȋKqPBA2IS@\5cb};ݻ -RҘ&M# A0.#*(N3(pzԜ"ǡ6/&g#| ngDg j, "IVbQ7pv0!ۅhg"6ԁ !3-% bA.nctn®ΡKN%Ӕm7u)#aw^XV0Ѫxٵ {N<B0 ESUPB(^L!tz+eЖ7B9<03%x"b#@bQ wLHG1?ܽ\@cφ&}a1 z+KOC;6;ovի6<1| MFgi63^bR Y@5ܸ<ЁvD@xۿ',pqXZs,@FRJ'wL+=ݨ8KO*-W=  Ww,3%i(5ILhX ΓP'Jz# iVB3hXDC^l z ,FxX&W\9 .OtپЎP@>prw5uLWo9__kB+C3nN DžXĠ B$b(BPz$`SS̞g6(`Tzƕy¼qk5~rٵ#s r#20j~{E\Kz>\MjU -nO*đ.;A}iTU8a'N>/;;#pݗ?+|_>s3_вF%O_ζA:uӳH\e&D'a'3@\%= Cdè"QguL0snWk1P\3u؏؞WLCIEЂ\3*ǁ̘ 5eiR5ৗõ$|^Ku9^gΞ5PCD۹Ġ_8\ Z hHO4`0H80˖dPh8=jv )A.$•~f*Űa#u[v"}@3jˌ!+5Ձc8>-l .?jo?>7Hj XdiK5 hsEy!v. -:yU9ه~ޑ Ι H>aބA&9 aЧ꼢@hK5H+zD@S=k# Dc.(0{ppk/[vg=$G߬dTU8#Tp,Ճ/Eㆶj( IhDh8^ (o]1ȕRd]CS^W]9󇻌!g|"'"t6$ݲb=[·'&%TOX*6yk?[UEBRT2⩻Knn?҅Pz]璑<<0O&́yܤ%[EOo*hR{ ..-F~g7U͞x }ŏ7B ۺ`i_0u 5QC8払@⹹k8M\/X}+bKθV=$G\0&OIv^YU!o=[ڠzAnHޘlN3NG}!Y{ [n.b|Ln"ju' uwShwk]jtvFZtl\Y39ajii˹Peyw7/>-[Wn<~Lп5rZ5E;uN|^[WW8t[v=LXQI^ͭ?Y{:;z:7,`t}]mw{ؽy}I%zaIfGO/`ULuxh4w+,g7=m=5=|WwdBi_yؙZ;cuo=, 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" gambas-3.16.3/app/examples/Drawing/Clock/.lang/cs.po000066400000000000000000000017561411575327000220440ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Clock/.lang/de.po000066400000000000000000000017541411575327000220250ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Clock/.lang/es.po000066400000000000000000000017471411575327000220460ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Drawing/Clock/.lang/ru.po000066400000000000000000000052461411575327000220630ustar00rootroot00000000000000# 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 "Выход" gambas-3.16.3/app/examples/Drawing/Clock/.project000066400000000000000000000006401411575327000215360ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/Clock/.src/000077500000000000000000000000001411575327000207345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Clock/.src/FClock.class000066400000000000000000000073641411575327000231360ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Clock/.src/FClock.form000066400000000000000000000016711411575327000227670ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Drawing/Clock/img/000077500000000000000000000000001411575327000206435ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Clock/img/arrow_hour.png000066400000000000000000000006141411575327000235410ustar00rootroot00000000000000PNG  IHDR=[eSIDATxսIPO#v R8B Y!s8UP8D.y&8%;w$￳~!r!OgFRF2 e)#HARF2 e)#HARF2 e)#HARF2 e)#HARF2 e)#HARF2 e)#HARF2 kmfr.ga l~rO~r=c5~)INgFK>\fa |'Ξ?$asIENDB`gambas-3.16.3/app/examples/Drawing/Clock/img/arrow_min.png000066400000000000000000000006441411575327000233520ustar00rootroot00000000000000PNG  IHDR=[ekIDATxݡM1"{7b$(fa&=@9gyTv\pyKjr~$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$FAb$f43׳?{ܐyX={yӜq#}kW8oG#yfz=3zv~H02} IENDB`gambas-3.16.3/app/examples/Drawing/Clock/img/arrow_sec.png000066400000000000000000000023451411575327000233410ustar00rootroot00000000000000PNG  IHDRbPLTEddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddtRNS !&+05:@EJORTVX Z\^`beg i#km)o,q/s2uw8y;{>~BHKNQW]cflrx¦Ƭʲ͵ѻ98IDATxBF\*4Hy@!e4I i&EET:[z`wGDH$I$I$I$!:u@Pt(:Fq:u@E:KT<JPt*)~It*. Hit)#N u. est)<]@y"]@*D Rq ]@* } ]@*+ Ht. ] ;Z ]@ _ HutMTLRS]@jn H!N:nytN']@* Hwt]@zXAU^8Lz]@z. l Hti]@ H#ti. H=t$]@zOt]@8CfGҧt]@J4]@Z\ H˳tie. } HB6~_tik. m H_o. }@$I$I$I$I$I$I$I$I$I$I$I$I$I$I?;#5#IENDB`gambas-3.16.3/app/examples/Drawing/Clock/img/clock_bg_big1.png000066400000000000000000000462721411575327000240310ustar00rootroot00000000000000PNG  IHDRXLIDATxyxT?gL&d_f!\bVuAm{.o?j֪߯V* ,HȄO>crf2ə,|+יs99|s߄ B"JKDD SD ۂD4cKDzvNh%"mMM}j-vtQ6\D!\9D@JD r=f_۹s;fp"L8kbѕ AD~~~,UQYYy)"GD5j>~Wyyyz BژCF;'[oXRb$33SLDOd_){>ژv't:111b0}|}Mm۶0\KD!|C  >>ɈP(~x"RRRZ JB-8c8{,Z-TKP9Aa||sṯw}[G[lb㿮H >M{D"6@ Sa4… DOOoQ\\ |rj`0ȑ#lfF#'Zw =o#FE;*`vDòe؜\. 3S`HLLFa޹*s!/X,fDooa(..m0Ñ#G4tbll mς06?A47HDB`v:99 ̫WFUUR}B}}==ޖREjj*|d*f3:#55W[555l6FFFxgs=pDӆMZnɧ---BP\\u >s8q`Ŋ`ײZhmmE}}=ZtCee%fa8{,'r?Kɏ},A4opE^^Sx 6mڄ"׵hhhY92c_dzEcc#뙙pWTTg;.ne0?yÏ,*Aj^ِC&aLjJKK~zoՊǏСC:==k׮FYDzhā%%%~%d¾}PWW$l7"3B (.\o~W|n2ug;DtEY(QaD@lȑ|7x7ٳgk.qTVVΨ,UL ƢjzYV|8~8ה`0xM-}5Dt~K]dX(9d2Z6% z{ACCWPP*TK}W$QSS'O}EEEظq_O}CCvezvkpO?}IIrI 29111Xfǔ;p8p1ݻT*TWW#--RUV]vL 6`ʕZc&u(v}6Ҥo/tdR!9f6iJuy8<WXɺuph ?v;>𓄄r-HHH_S.^?pw|$%-pW$==eee,ȭފuM;Џ=L1{ccc^G}}=BBB|:B!ӧOtB"t2I98R:R%!Ȥ{#//%%% "H$}y Ʉ~~)N'J%NTVV^qd2#99Z& OF?222|ơ#%%p8,<+YQQQ8tО'Ȥ@ɱb pi zzzm6tww222yf& QQQ(**B__FFF000f DFF`Z!AD3z}+0Aܔkbbt-PPP.F"bY yJ"Znݺ9dwDDDs3>UB͛7𣣣زe I¦MSDe˖pAԩS* Bl#ȑOj"߿y%d?!5())pQ!5Ė-[022"Buu5A,u혘@kk+؂6"999hmmdP(XsܷoߜR ͉ Y!$Gzz:WTu5ضm@DWV]EDLL ZZZ011V/?I||W9r\򪪪qא`WxZZWW'nF zϞ=֫C83}O旙9!CLwL&曰 \ p#44vo&#w}$@/;x' Z\yW-))P(nwe!$܃ bi{1FFFz#qm`@c )QvOGdXz5VXѣG駟6l !Yˆ@ V PF6 M6yϞ=F} T)yt" vB{5vy|+}FF*++ Aee%222~!L׳V X<Pr"Xcq66m 'p8xwaۡT*=DgKT\Tnw*$ɰi&Q-b BDɧ#JyjOձc[o 4XW7 nVYƱcǼ)**bO#p /dff/KKJJI[^{]qdyyyl%aApdϽ{|M71kԵ3lw\P|%7(9)n>CX믿~1 .c\0LG掸8^KjqqDM>} b"!ZrgϲD֭ 1{`ֆJVXtQ}?|gf,6#A"Rp1sʼ֕vڵ +^ؿA9Z׮]^uR)Hi4;$++K@:wܜ+<uuu,wuuu0t3B(8~ySZZ^\Bm~z|hᩥV+ZPP,AopAFr9]W iu_{b&qqV1D`02 (++caL%};-A-[FDimU* __rOn!W`e JbkE:䥋( \kKn; an6u%@l5_\fW[ ^G0$ق;ccc%8Y2|X SCP0_NJ+V :{dgg1k!;;KT*Y@f $eiOdggkM=ӈ/UKK k׮]gn }?|6sf=>>yQ[[ b4X<"))eƖ;bccU.Cf_כ >@TT[+ %J XCWWqn,rCW|?^ hЫz@tt44b? h4sƘ; uB֟g_N>VFF2Y2W 1l7xg9:^! 34"B||<kzػ|~A\eX|9fmmm^ǹ1t:q\oڎA3!'=$ 󃸃}iii ,\4+''f3^N—^z)ڽdj:rf)T266U nlutt0G4X̂g93: Y|7ܡhظ i Dϧ.0111+[``b> e2wQ/<ތ DTŇb]ND̓V Ay Xƞ;RRRX媩!֟"32#HJJ188%A\2pcmpp+X,f/![l & 2IR7>KA,RRR!XlUfdW/!#Υ}t׹$ bf={r˞o;@ FLHIIRh4A$re #**bVH$HJJBww7:;;Ycb $$T+ >s3D_ʹFFH@D1h^FXX00PHHOO{5CѠgX oV0)A(X2\p`hhXJ BCCu(Uw`p [w bo{ CC= AR-pcnhh) rF!vP\+d\,;t:$ZN}-Wѣ-I" zRgQnvt:ܘQN$B"3'5|^K}}>ks| 2|Zm8{<4$'xuGZ²e2WFGGqʍũ0W_ ( t&rD"VKBpӫ%#gD{9wM{>hh *qD:u uHNNFBB’3D"EwKgir9IÁ/V ر&vt"AFq՝D9#;; n |!v" l'zXR|cm .9sHOwA_EEDmmzΜ9={ ?cZpx3 Nωsqq$$ 99+'R7|I1 l8If2A Ӊ!VbR VʇD"FSS;FH8DHLN製HM@vv6bccb>$HTTN3KV@(r\ARE@$.6'HP(DOp8|I' z(rdg1<$nnvL$LZ=g2rgkp (dd$7?)٭ CuQ(w[| QQa((bV+'F088($%%_Jp{S%pqrV,,q" (~ywBvۗ(HR} ?I>Xb2xRb8`;aaPSs &(%>&w8| DD$H  CBv Z8I礅lhvZ9` с~WҴ USN*q"#/gBpIyos140:1oEw` `8Q:|I8vVjaٲT$$AeGAx?_S,wW)%A)$HPz\`Ĺs}p:E; 4tE>gN++>fGG9 ҃#+K |1$$ ;[($K Fq)* 2/ܹs8vDžXGyXdd$~~n a;<+a;VC {"Z_ (.CA e @ejv툉DAA&:@SSVt(.NGaaUd2Պ~/݅ 022XL3Z<%?B{{pK%}``zDd(rA*uYVhR 0\DE(1Uv-ӈI]8~ѐJZp8Z T*X,BaaF3nٳ]JX,jOl6V|y9p0P bz(r!66 &Rؕ@y`i G^l`a9p—>zOjll6p`25jkC\.D"N7sE4BDDz"=υGFFzI)'8DFF.$Z};X(\0䣀<NRv8B)Bjj ш|+^y3YӸjBn?R *! 0>>8q$tpȒaܥ;af9`d6@D*uP?E6`6["BH)Krj̍A@$ȌzG3V|!4T,h4)0 R`dd .KV('fj5r (+QcEHM"]Rc\Ydwm%L#A;T  P(deen_IJXbt*A,'#)v8@B.#$L0 g I{]gr}"A}#n8 ,E;B!r9*+KPSs7^ ~ v u@ a4՞d:mVYG f.#q3EwAO2X($&`X`ۗ@ގH'AY06R 6. "11CE__!P$'fX$At"QBZ:cCQ0ʿ qhη&r9!4TXTQATBP\>>Es`ЋD.1 Cp$nDbb::z01aFA;pfWRHDic *(pCXs{SӐ߀S #77jKZzuJ] sFH$lͺK}}C0m(*Bjj/`||q)&N }y98g3<8F=hc,[!˾:XY#@dd&pq셆zIQ2NC"׸k0<:R^E%CCC^Fggg L(2gX,B0N qHJ*EH 6(pحȣQ&&4::{* p8p8P*ذZH%O7e"y!DD:__6L>/_FT n8| 1dF466!"z}z`4N $X, kdatԄ;dX &IOOYNCZEDddviNbD"Kf- ppV>X" HHHnG{{z!IAJ"'I #P\MF~6@xQ^B$l6/H$H$C3iE555ן&iNC$_ =[j:9ΟźuFAXXd2N'bcc1s5"NTX|9T*KHpmXvg?r%nCCCL'Ad2_ j;W @Lbd2!<<'A"""  a188 Dyir'pDEEy:r`b4[801aaP*_P@*K_*(P^ՋBgUnrωk XaϜCF# D  ::p+Ug*c044Ʉݐ%HL2b14Gn^tt`00#T @ \QG+.:qALDLIÉsP*e~u 9.stXɂv HV'x}ibb]ٳ^J,@LFؿ 2 ˂ t/R^*V0KmOp  }|q.3wawp5zH Xƞ;T s-1qw'H _y,%%837 fO =ew)^rC|լ"DWW_ 9[y*pg裏4iVoo$lmm]UnyE3L&&]|M͛6mLLm&t:}  V.9wtvv2u`g|soË SAZ[[Wǖ/_"lJ  0 ",_876J}a|OO'!K̽---^R",, \Ib!t6`Zݓ:t'xdC!\hb)EvZ,0::,TS3(.EspisyX6nCǙ}999Jp:hl.sDsAcc#N'R)rrrscR$!""ywv|SAN29s)b1 Nopc*??߫p^Ǚ3gkyf|cu{&|YNMMM^7g=yCgg'[kzĬW11 BDhQYY.\@W[\M.$9 fƖ;{+x'9c > sN"壬[cLR$CQQQ:>ݧW3Ե6lui֩ je)O8PV ԩS[g>:u PQQᵴv||'NZ>Hap:5e7AD%v~WCEEȆS[[9+ CQQO?NNNK#|u.رcIWr`r  *//f0Xy0}\~t}5>™ݬV+9VII  N'jjjyqN %%%^Ǐ9B82nwݙ H|Dwmy뭷DԆ*/_RvA1v;vEii9uuuljJJ ^'ϧѫDtEF#[@u%B\sÇ|Kf:kuua6ٔ>44|q^3dǎVO( ?1>u Z,F1-FGG+j뜚6{0yjݺu3UĎ lbbu>ظq#d2V+>#>]5t: @gg':;;㱎elldV9ng&<Lח劏>V2 7n:ׇ> 1NOxonn hba+b $ $ N>$''3o|'@tt4D"~twwZoQTTX صkֆDDEESϟ,ko@_/ӡ* A{{;>M|ٱct:yyy|}[n?~.AD/ ENsQjbll 8{,;+Wĉ'pyܹ=Ђc=g}o6n܈*t:#Μ95k֠:U*}߳gΝ;V7>7 DEEyw_S3l;w$$$`ʕ^444~SN729y7A^YBP@$?Fvv6K BPn/8~m{z ,3""sϱ?[^x+VP(/\عs'~a;zj_~gB-Z~<̴}Ć fP*B& gΜދ{:ߵZ}ƙ3g0<<z Byp5p:x1>>P[n+d2?%ٵk׎Oth5 طoWc ]-TO?_Wx衇n!_ ذa{=g2<ηbhҟk ѣ<:t[WW~,wZEe۷oA"EEE(**O}<'|_Swz $$|\oJ–-[yfg?w|no~}/ՅM6yuwLt< ZHj*s.\|l5ڵkS{WDD AD!66ַ<& 122PdN m9 N8SRR"!:>5VW}ix ~Xlh4g ,;l6=wttt7߄X,= X?xu>< ǎsZGB~W @PQtuu!77Kb:Bff&$|N^YHZZ^\Ʉ^{-~#IA=;6jժ&" unC(B `ttOf!PPP! @ӡ A_"Cb۶m̹;k||[ne#** ~ r[vwXYѣGKKKѭ|ZD@@VdeeyY!ɠja6@Vqt:Q[[;wb@(_3yhh 9bccgCVyy{8;,Aѣ'V^mTS܉-%mnnFZZkrr2233ja4jqܹ`07s=>rc֭Zļ\{[P@]]ݡ2rS-"b%B!V+s b c``###hjjBlleK …vlh^^޴9;sh4sSX[pg}LMD+fiNMn&lڴiUx7Y٘roR%!\{XND9$NmmmCzzl^>s$%%֥.ώ;XRu]^+E9XVڵ curwh_y5NK~ߗN-g;6pرcػw/* >13Z-vrd2lذ+W300;v0X,F^^K 9j5k֘.=_rS~0"gr"UWW6AcϞ=Ux PUURUa%W܍7MЀ]vԯfq[fͼXŢB~0" *qJJJp7ͮqYΓk'??>もp徭Ess33ƢoQՊ>Yb@s![/59E"^'|H~jll,n6 <ݎ:c/%D@s <|y9"g?6"RA铻D(++Cii)B3VmmmGGG[V  11iiiHIIs|bZxDt#''t9r "$&&"555,뾎 \^^n|qy$"z@,E4&6c`HRw1466gI9KhJŪZpϳ&fqV2npM |rb 9QMp%xtjU^^/.Ks!=WU+l۽"rJYgt0 vVe^eKT*?BXq tX,X,,ǟNpPTHKKFF 8>S;ṿ>chh( 81'ʌ ~ã>z=m3_ kj WEɽ{ 0]]] P(D"'XDl||jc=.=JHX  ruyyyɁFӺNFQQQ^dBgg' 9HRT*@.IRO99VTT-ȍ-p^㏗C~MDs9f7bA}}=I3==wy8Zс^/I!(9Ie[ ***pyM" 83͍c*nt\ZZj5R-&8+ٳgj5522* %}<['m%UTT/CHpO'x/'¹c>LƦT3.VH-@GGG#**jޤj0< CCCuߧBP ,, aaaP*>IxMDʃb,$%}&<""7$"%07rM8 =D\Δmg*333q7kp7=!!BCC-0}%g&{!z* ѿQ$ oHc6Zl6[@>@̼S! J 37BD@_駟V@Bc&Icy0u8g^yJb[f/Ri@1PL>#֮];ؿB%w2r!N@SiFL\||^{,=֭[~ W=A8<3br. e9.ŵS W׭[w18*ƒ!?}Dt+y~h'mQUU˘ A?1ˏRI#"H8v_g\ ^xA`3mDqj6lйؿ A|$ DTRr8r%\wu_ndKDz"ZOD%@F3}D7^Le /r,UrE.Sr8'-Oj6mtE-#l2I\re%" D0i"j=u 7L,3$W_Q\Ɇkp(2& ! B\ Xr3{;53pLq0#qX )S$! !9!ٱ}pDbiƍ c݆&2 cEB 1t〃0oذyx8R T|#"HN\|ѱ1DEEh$.竫0@ cҤI81AgGtHOOh\_?_}ՖC, iԦ:9IM 2:Z#>r!#ZZFjJJJhhh@$(.*js Vbk6;$ԣƆzhHg;v !+XǺOgA !BV@rhZsre!xy(_vGhӇǰ0zP6[qQ$$rkܮgY1F:;;h줳>b:*&$iooƆzd 9\~/9}cЌuF!߄7"PL^ԢgfVB>ZT*%&&>`w?"#Hk顣ƆFijjf# 22Hsl46S]UI]miB/n馗}O[rT !,Isrr)u9  tDFFKlL,Qh֠~cݺ=r\fŠ!2t^ڬ456Q__G]]---HvI&ԟVqmB< /v:ӎ s%LHLbs4[ 5mHQ<,,؄DsU*&MApHȐp^OpHpDQLJ|s G; y\wuvl6yf0ͲB:;rԡFpHLL$11~:X'osV"e3;i/ ٶgyf\N%A C*b _wI˫VIKK#== cZ:::BE\l,',Ly~͚59r |!{m6´R_@ss28*DGEa$+30GOpA,Dh&~隀tb`0,C޴#Gpp οTCǡhIOO'-- V+lSS]MSStIr"%..hUJboyC&$19?~C`/jD]]uu477c$Q.99l\a69x | fs=zՊph SO}Gwu+ [gj^C:\.R466f΢XN֝jZj4SINJ"&:FwoyÇ$1y! ⏴ dnCC#c$j4!11q2,^vɚ5k0LDGG3)5 Z}xy9gn{'Wxg BKnV[@Pp0AAA{fQXPBxHvػw/eeXƑIIJ%E*u@PSSbAדDNNyHVAzZDFEbb444s1*** "**RiPՔJEvv6AAAĢn TB>lۿN? 4b0p|//BA rssh[/YB^~[NmM e'ƹӅ1)5TBCC=*PΏ@K>Nw/+*<"ӧ#\`4v/BmJ\_۩;yOy#Ɣ j!s!GdTǤpٴIidggS ?FnQ]]͉2zzz8r@~j:r*uu'[סDiW _~Hx1ܱo!0vvRUYmdk/!n}L5fS!ᐣ`4nby3IIIq%&%rA$ FII uu%$$$P4lt:r ɓanI!r_i6) vz{-TWWqaPa2uk!I0 FKOO`0pSw7AAADEEӃuS! `瞻~۶mcb>?&#HFFFb=x8k8g"GM3=Īrzؿ?!,h@"<<£!Fׯ?+WI{zL}ݜ8Q$IBCK.3JJJ(+;(&KKKikk#33:j/9x,^$hjj6 !.GOwS>8 0_rDFEqi j‚B2+^F#j!77ŤŤdq?͛S԰}~;kٺu+wꫯ(dEgff&Y{8vuuuHYga J!3pl2珢Aqܹsغuه N)AӪw9 ßظx$@ƌ3^d=%%tncNBPPP-rv=lx={63fPEEEtRRDGEl2G !33 >cǎFpp0B(#>.Ljkk1LhZ"""1`MRΝ;-[)#cAX/9fu6+n`RRR>}:!!^`Ϟ=TWcQxbb伽hr IR:u*7o / 33뽫_]۾oVJSD򒓓9󉎎Ko/TTTE3?441uw؈z{{= B[e׺ 3%pסRPOJ㰜MJLd̙'$~B@\\[nef11~՗<,XwGg8i*ORJ^n.FV8|KH,""©@$am6z{{ՕLB}W|aġ_r|8 @VSTTDBB2lV D fFq1Y&'9/yrqÆ p-7+#G=w6L1pEPp099$%&R]]lҼǓlvt0$$z{{e+1#?o:A%NJn⬹ eƌ^`l4k.Z@嬳fWr ن^5""¹Kmh{AR?H U+"##ϣZZZ(--%)) ^5}Fz:eeDZX,*fLu%ϟo/GU>qVrT*n АfΜE`߾}P 2e/? Pf^\iӦs*vuwqwP@aaN#CՐWM7XV%?/JPSSlhZ<҇dgeQVv`4̀~G/.\pa͛x>c}*Jŭ|0f͜{n~*S f̘AjjDe(r7ӡW6ueeXhl#}{!I'Od߾}߿ٳgsMDDD hmBeefs2X3Kee%]ݲɠ zL&[.\p͛K|Qi;QnySŝEEj<6= && vHz@9 7x<J6l`Æ <~5XU oeI //W]lܸj&Mĥ^BP1{P]]DD{{ҭ&!D>$A;r0KSf(b ] =-i0r9z~Ly湥;|׿زu+Y,Xg|bȱc~_3e.rjϧD}}=TVV&0D%??::;htK'8kѢE/}m?~x>[V(*lĎeS ';BJ޴号֭ k|ntAW#߇4.8//3yT*/>>hhg͛kKr.TNw@񀟏>$:8,<#w=ǒ.AB^Ϛ9 ϭ]ܹn(,(铨b<9)mƢEHOOw'%9BlyGFag92339{۰kҤItc2(=VJfP4 99=vsڠ vm4>~Vs@lqy?1㬳YzH@VKboߎԃJHKO|p9\*yyyTVV"Iytr̘1C: w:}z|T*44{٢ZNFg%? AN^<SbtNصkjf͚ERRDv΋! 55}TBm F%qҜ\JZ-n֭3RBtt W_uC9*P+[}R$ !^2; AgnQQ\Razz 9vک㬳fmfRVp=_UUMbbzee%IIiU8ra@zAZZ:+Vuk`OJJ+@V! 4$1Dĭ~:1b8|{nP] ;(p;a{.eZ5s "< fHs^y@8Sc2QQQA^~^@HJJ+[}s-&SGڌ .IJ|ײ3: /O ?|^rդe蔒9]٬޽cW>}z@G*J6] %ѣGYt-:=-K.44vZz{=yL:EeGjWJԃ>8>>DffτOJͷ05C+m޽$ vd:2FvU#8ᣏ> ==]eZxillnXz= nqy[2HcdT73AAUjfΜApBeVDNN>5Fz%Dp#$%%Jiimard4*tߏnCw\'|5g6AbbbB3Ds?' (lS^^DZzGc g9mښz$ԴurDFvPfܼc|snBBCv-o$|$MM.UtDDsQ@Odw "#&c(ɱ+R<$HMI!3:ۻIoӕ8Y{DG!qT*6oBZZgM'??!9Z- rx! 擙Iuu mmTVVI}D:;;s+ǩVх^\qD} ɑ $#w_ V}{b |d׎5ԴJp &!{u$jtt,RL;;;ikkFײ%G0TBe]JX1{<-]x@ra%~acrM!Z9\jԩ\Ηx (^MTcXcr믷q:t䖟.hd۶}M/$88G޾4c5i^aaz.l9B@[[6lHhY|c|^ }/E8>Un֜s HMr6/1lBnn8WӑJWTWƒpp%~Nܑk~V-8%{g.22Rs apÉ ,X$ɚݻwyILLb8Â9>y#<CU;RCE\HhAdgg55;::d1 ;PЀdw]x|ٽk "h  A$z}c4Z=>Xus̔⣏>R>Xhr 9>>$;;;9D2[nV\WEJ|n'88}s =mv M"55y:Bq\Y ׁejUIL2Pg 9g,_> {.G .Pvq .A?}HJ$&eAUU% v_~UUUr&IbԩnhXdX֮łFXZs=Q5kp \əL ġC'غe3>LJ>Nƥ^$Aɓ9՚>ȡ@tDz܇k]|"HNNNk_Yz5בFfuVּ1$Mӟ!EŅ@I܍$]FA%6nv#0=P$YYL.$M\:1|;Ν;o6֯}$&&'Bk}!Gٜ5w -SN%11:8z( tvvՅJfYP/4'db=s,zKDh !z2 h4H"Lj#44^;UUH0#o]5:&RSٽ{7tuu1y8moSt:dBmܸqPu 999Z!B s;^sMj̘9IOWW---Q[[ngi$$&",LJJ dddR >|̧\|O~0$AbccoB`B0eZϝs ";'Ԕd+XzQ,Yī+Cï>(O(!D|P2XArssUBS⇅_h4j \XVRSRch:nGסvXKb@3ݎbG mCZ[c!<^M^ J`0x%G^n4K 9bcٶk4-!!:$ l ؤb,V*V I:IJIbOA7Q6ǦϾn7Ǖ`4!Iǎ3g9E:uӦMiӦ_­2g6oh4~󁋀*{()MC!Hj22<TWUa5#"$$>x}׿`qy?V^RO]+2%!l46Xj=XavlՆbk&@pČѰ\l.]•W\Jdd'/âH@ld2c6cSCDt u!jjh7IFcM<pJo޽%y_BB"SL૯R:0Ag+CsO<1PDA/DTB(^\SHbr;9֭[dB$e;,ƍ*mF^ngH,<(1 Fӱd"vޏ=v6FlJaȑ |={>SJh4$OJPWHuU5Mg|h9N_rKr y(-;::ػwGs* t:$׽b5M#>!tٱrjj*!!%#<_׮XdWUuwwg )}cM4V>L4ĦꃂАNG. ،Fz56]x9kjkcB.!G<?^ƪU/ ^'Gȑ#|ʔˉpf̘Ν;Znk9 s𼷲 !.̜s|Z;Y0eXͥJv*ᰱKO!L!bI/`GY^ ubyw1RJrl5r ?55,ǎ͛7{\OHHPbJ!nVS,gȑCxD$){Bgg99>k++Hrq\8-a޼yju>~; Ei ^}/*U(ZcW7]V\}Ԟ/wf'\k*N%9***k eݺʔۣNTj…Q__Oeeέ:v;VU1?bFt#C]PPp.[_.%!1iӦ-rUZztLq 39z{ͼ0{Y~=~V+'#9mHIKqq>3g4660yr>-"ӐJkk=_@NN6z555,^棏>F$ ]Xb>8_8dggSZZL伇[] b(vWAAH\UV: Hvv6/Zq~Ŋ\yl6Z;>2BBBkyё>\IPPw` 9Dc "8(Hk3z^xa/jzQӧ駟*MvRy'foKگ/m|.,,G SGD/UHKhHh@쪴iMʛ1*LCYn3ʟ S'OV̸FuӞ{97GEҫȡhH${zL456"IÑ1Ty:ӧ1}4~z* WW\\LYYeeetttGZ-(Ti(F!y>dBVN2MJLxMM $hHNg"9|#$mq˖PPP@pp0$o> V}yyK&} ?HNIAV܆Sx%Hj{\7 JCi SLIBL%4$o5+蓽Dh(HRuWz??UyNT#~b}}=]]CBB* SV\L!BPb8yp}f圷8n q.NG+`u p]Pyyub9/vFAnPy!Ў777$;Tj=c$9,i*%{G oq :d5yw َX*ZN FVQsʼn'<)M!*iӦdXj+::OxxsOFGz9o9ohjjأu b(rGD5<|ssc r a'1zyNRiiiCZ|b27KgPaWbCMcϷ 8c{#HFFۏuH }.B|}ʝ`Ź?zy #1ԑ :3tj })cb$ V6!Iv;]F#8vZ&9|V R*/Pv>Ʃ&ljnn'FhZ&…(Ǻ",st[^?-MGIOGhh9oly\wJUk'" j!D`78GDF$E5r]D:aUs-: Cl]zZ%"GpH2Ly#S Ub50TU69HF\ uqJZ烅*|`)$$Hgg'zOGg]9\4*$`#x_8!*!D WlYަX]F@"<|~6설j XY6)ꕟaHJCBŬ]azw\FHl r^^8`#HLLҟdū mV ˳Zz$;X a?>F7g 8Π X׫aGV !w⬌GӰVX)\&P&.•dUMv}!K^h4]Lc Xc\ຽ(NR,$YCBZ-$xnuF069F/i$DՂA\aZ W}*_-I8p۶m _ ⺳9!<2HrnƣO*Rj4vGHK%惿/g9 kWZť^VVVl^XkżGo7kZ@rշHX%烾K))">.U^<(r&qj0q|syHwry j477SVv$FQUs/m_MZZ]]Ȟ{Z-v_^9N 9XBUYYJ"99JKKX,444xlګVfzul1L)sdpڐ$I!HTT46.23 rXV|s؀c8utĥNR~#}]뮻Z|Mw5uf%In< V5(.fΝ׿3|~Agby!B AѢ NHFZQ5$%%(,LrwnZ*+bLc1^;3M6xbϟ9JLLt壘רBt1CT*Itdddpĉر -W\q{;z|,[e8ȋ'1:J9Ixx8*Mu c2+(..vzZթ&:$UCa >칶{WUVpg?Lc1_۷+W?]H5W dubIRڰyanRyj7lxn˖_ r139@W~!;w.O9g29 Qp]HT Ɇ$$z{l,F8))sc09Fg:9o^A,ʛwU@/Z6y}`9="<I+A&r@AEhiiQ܃}]7G|*;oDAk;5ttUl<#/k-6mk!ZG4BCx (!dٴDG{2at8v6ÉFW8G!T !yX,zL&ZgDG$Dzmp.ueXV'IFFf! զMl1_d L\pÃ.@:J87#HHHc\r FGB0} r |[}#ZV|Ia pȗ9Ygg a6bPTD$vmo39@6eyzP;եx A_þ ;vQrzGeavr@_tkH`\AI܄Sc8WD$Z,8 lBRSSbsEEE[o!~ &1:JO%⌟BPP/䐄GA?$CCꑐ ߲744TfI'ONrRHLNŹY=QUUȒVYlY7 !>eP_j%}\!q:cPCCB$**0:Q46СC, }G]M.]|4*Cg C$u$ÛO_vU4+5N`X8pӦM^^^_ҿ?sà oaSc=ңbYk1 1n:J#:tٌӧ{\?|0 Yv $>[$)HEEWFrJ2ǎa'ѯNR %%%deeyX,EKE˟ 0᷍W&??o۷IN<޽{yGTTO kg4PuH@mm &S[h4dfʋcGz}Hom# ~rea00LpBmP__ϑ#G?=T>22P_Ż/ T_@Pԉ2gBط?}[FܹȞ={ h@Xjǎ7^G$:,ӟwbb"<#>ݿyf@66-۲eb1i$_aB9PXooa{!zzLJ>BȞ&t6/kK.n}?~u$`}puuu444hjjR͛nbΝLH_u;(kӬ#'t,߿ߣ3L&44IؾcgYD~ǦMغu ;ww>8A w8 =>ߴi$̙3=o۶M<='K;owo-8pC3h)...}GR=p#7|y_1h2yxxcO8lA n:Thue%$۫ N456/8r0&7x6ldϞ=h4lviiig?#1!6N֝$??k<909Fv6nHLL *JKKywPTL<>LRv gѢEۆO ʅL2injUW]ŢE*.V~Lvv6_|qhhGVM˞V!>>FvvvYSk46zKFAKKwBB:nmm#+ob͚5.]Jff&,_^ϡChkkv/^8#E>>rOw !(\hHYYtTT?٭CO2C'|_OhηВMM=E?>m;ya I,_~W+ w++Wbٸ[oذa^$I<vm;$%%ÓO>Jo磏>btww?AY`\},^X{ժUl6lꫯ?={'P\\O<Ǚ;w.%%%n?fn㣏>'Np_s-5s-\Я?X~=̞=[jHMM'ɓDEE).}| G/ ku~{|HoY%-_m!ӐPT,Y5khb˕<S{G}`%Q>;u]DG(xg(..FVrJ={6_7}_N{1X|9Sz'NrR^^Β%K;w.oڵ5k֠V|w(^Œ3l6.?NKK ~;VBV{s\$I[tvvVY|IIOO[n%?? fϞ+9Bk…)+)"$Qph2z'pŮ`+}O_}r"..Vm1eVUU*ӫZf36iӦqwʟ'ZZZXd [8dw?(ӫtEzM7ꫯեx,y{r\_w]BJJ ˜\c6l޼Yl2=|gJbɕ\'OA^}!}>TH}hlth=mtrr$ضmG?*$  SLe֬Ylc~O뮻}GOnn?r/#p-7{o6mڄNg޽t:BCCK g/r7rwӟ'W?яs7s7z'`Qbxve `Z$Y,e$IT*? Yk9at)F#< Fh~򓟸β{9B0k,>cb rB,%`^d2MVV[d:lɓxu1Xgs'$$ :s>NKhp8444VJ{=HFFi7D]`r6۷o_eqqq&PfV|666A\TL=&2|)B ݓ&ML Ӥ.F{*ӯ(< ,Xp6qB0UUX>ύS3f$7/ %{ٲuhaaB;xlڴIL2EنF{=@Nv.|#Gí߰ǽ{vw !.sLDD6j QܫEmm-TWU )1G>ANW֐KRL&BddT@_RORWWG}H4TVVRWW'(((`e8qB`~f2%%%9UϯI]=({VTgVQT\qd{ttvګ!\{Wpa{\qŕ>Ѩرc^CzpXVV_Hn"##=ҕzjl6ZYf) _ ϟH?V ! &99! -+V )s̫ԍV媫"==0qGQ]~;q:p*E5?qt:n<ֲj*z{{Bm4_!̛76:lq뭷!Jx_:N^ Ѕ~W1pE}}=k\Ze^J~d+LnMFHHvxݻ5kz+W_}5K, 5Ǻult:nFfV\ߪߵF!Dyj瞫nC[wf2dq]ݬ]3TBbb"7|{GD`X~={f_|[I@E<,[TSHc|Ml62FN^~eCB(rk׮gB,aB8H`1S^QNAdFh|N0h2ڽ{?я$, ټ̙3G1ˇMQn\\?j{zzx饗my=6 oW 9_#B"""AIRf ^vLݬY'O"I0s .\`hY3gmmm:thB@cc#IIIz3g=\TUU+zj>SOoC$6oEVsEqEyrnnnfժUʚ#!!pyè~_xשFHH:](^{-IIޕ5۴YYY\qn{JzjkkkYp!---Z˗I=֜wuu[o);kHMMYW^HRSSVݼy61j#۷os 3rh4Z8x))^]GPT4hmmo!>>Cb2a9󩬬?dɒ%cVNRV^l-,,p?W^yEqMk097oG=F _GsNbvfah46QTwXt逻*KJJXv(yT<)!.0]1yN$v;jI8z(defzʃ,NͥN#MڵJEjjj_~9FLRSSygꫯyfyf֮],\3Y,{=>3CaaOr^~S}!b_ZΣZ&((qN">>cgdgΝ|Mee%wqWWcYl>$L\\|XW ~)O>$ BBBXd gțokZ r7 !.;wAGS9?j!e ⬳"JKKGaڵ49\5~e뎓'OH#x@SSk׮W_JΜ9s$޽{' Ϛ5k)TNˉ[Ν\g#)&Bl6;,)Dgg'Y.Ύ;hjj"6661؇{&t:oT>@qNKK f(.}JT>fdd?s~aH2uM2D#p'OqҔ\l6n9˨vɓ'QJDDD 7dݺuX,^x9)jjjx;… )//gƌۡXz}D2uTzWΝ;kzTV <'yFQB℀9spy)k׮' $$W^y8, w櫯R:>… SFF )ՠ/mTDDc̙b۶mdggsϡR>c(&O8v3UB[Νp_1.&ist7,,Kb00r-tMnl6˗_~n 66bOuۙvGII[`ϟOQQ^oʯ~+233şt=ޝza{# A !wGK/41nl޼Y]:̤mqYgo~Q+bp!JJJ8q%11 8< ,y'Xv-̞=[i(rrrx8&r_1n" f3iiihZf3'N`ԩdee+כm[& A򗿬kqih!dNA{{;=ss4ЌsjpsaJJJ(++l6{nvލJ"%%@ff&iiiRUUʼn'(//mBEqq1'OittFݶm& c Q(# GphYf{'U6]#B܌Jr3fΜ9s9J<}ؿ `0D\\~D{/9>Vf)'SiӦ1}tv]]]l۶-,^fK{rm3~a\{U !@j%%o͆ju0Zٳg3w\}]]]S^^Ή'T8 !msQDPP 6^z{{X,tuumኸ82331  ? زe ;wTBGyҤIGCr{GcS 0n }weyKq9gZX,nDqFQ3g ~h4*mgPMhسgIJJbƌWll, !mhh`ٳǭp <صF!;XwO!=A?8\ KsίrΗDQQӦMvnFSS2qylqb566V z^ƹmi4ٿ?{UDDD&M"::zXB}dpZW !~/Pt4(fY1VE)**y z{{1Lb61g}n`V~L `X8|0{ӴH&MDdd?Fف !SWRp}ـ{x!ft4h4hZl6^v;$QZZJii)AAA2ydłup;uQLLLc:Cyy9]&..'>tD#uk͟?<(!{|pvB@'Qt:VUKDoo/%%% %%,E;@b(޲2jkk=F FCLL 񄇇hTrlgϟo4iG{r!!Egĉ\\$Iq9:AAϙ//^|2FoA\OD!V QG M_Byyro"j駟6 f,YR>d<` ^ !! %T:m?0A!s ! !BLSK3! /se2LO\2AX L>FqCrH>BlBlZtik5 /$)!d!D.|aBB,[{tAF WV !2 eX/d;1B8!@(d&zct8$8q%N74k,&IENDB`gambas-3.16.3/app/examples/Drawing/Clock/img/clock_bg_big3.png000066400000000000000000001432311411575327000240240ustar00rootroot00000000000000PNG  IHDRlIDATxy%U">PԠQZRk1=__OBY,_ýX`ld$c@0 hz:>{9#rŎ̝{8SW:;wfdddXoJ{ٶeY r|>?](&]fey@^Ӵim۶eYaza:A@1V4Z*FcRommjVk\}/^J]cztPxu\gbb⮉;2  tty|V as4 9Gu]F1&s]0 ˲`t]ih4~Rr~uuŭ3ZF߼J^!ۨ/Kwut]16y&6|߇y1"eAu/&$~rH~h#qöm8۶}ƙ3gZ[[;yƍ'_ n ~5ޅ.J;tnC4M!.q^؉Ub4Mc,FJ t0 !&&&d86VVV.]t׮]{R|[=߮ ۿ7fo]\\6M4Mt:a( >eI&'&NKiP$|]%s9pA A 7R%\E6E&i8׿tҥZ__;$WG>7yo;tMlllHaI6MiBu_"VjicD*!J @ӫE''v{N9 y_A @>,pܹ'.\я~[޾+D~W-okÜcfZ KeY+DiZLWjnLj;)AУSS*'9j0jnQnRnyl8r:666.|K_\ӏ|#_[B~?G{nn]\ t۶NJ18S3MS=w۶=Ս1NSoaMtEaRgd$$mbw}7__|ܥKxeeS`+Drwuih4$mKnYՉsOA8GAv-j^VjaccGV!*Q*dP(d.\ׅeYmz6j@R*t9GӉIzLr`{{Ν{^å?ڭ~/ }cxڶvڒ( 3$'V9aLmZ-4Muaii X\Aݖn<"h2i=jiz)8fff011l6+wi3qO'`ݖ V F#ftccc0 Z|77q˭B;h'{oY$|>L&ӉǁeY1@ @wT*V8‹:*8偸%$ NЪ1NF=*ff111w ϣT*u5@4ITCDJ'Z [[[1|*^xᅯ:uя~?ri~}ӛ􏧧J]l6avNbaJ=1h9h48Μ9S׾'>v^!D_?T*VZ 5% :@W\&q*Z-lnnx"^-t:]rǸ92/c{R$wj*AؖUA~zR{;v?EKNZ v8uDA 1 I7ڏO`t_$y`Zw# }|G.4ȯb* Z\8<ӧ?qĿ{^}[C=nooj0Gf@mh6xOe4 ~WG Z,hZg3 PT%"%qWm^m\q-ws\QZa8=(=u<cK "  #@EhlD># x߈JAFZjVl6R]/~-//>nz|۷v_?VVV;bFlի~:<(6A>]'x0 a4l.Շ-z*fc64 'M1?JA`{PI/BҘH7#߆|#7Ln>ZB,J(8r N#7kBZ }?~/N:k7n>`Vϗ}/~icccVEĎY`8gjqΟ?s͛|_p&Gᬈ#nE*Eu *!I]9;RP7%}ѧڤ1wAYPP"4ߏ_Éu<~B.بu躉Çƿl6f- xKÇ9lj'>}g~7~B'x_ VVV9NW۶F7n̙38s ylWIe]b~v]CE枼/&[݀+9 ]өŢ,O۱>/wA\rPvƒі:UI4h4͑Br}GSЕ>H:-t:ض#G=>qdAcl4VBP"666Ν{VۃlDT*ڥK aJd"8x".]^x!~Z#Fו&tMl&17SqO,=4SK%jq-!X|#{#FL&[QzRlľ'A:# ^DGzL&DZ M׵'W9ڟW7{J VNǏT#bt$F.tqܖޕ(Q'<ϓ7͸;MdRm4X[[CA68_?c-#??GYrFEcccAR_SO=/ƠKٙ8L#0u8LA&uiu[/e͛7&2\ DhݥftNVjDO|;߻ 0P(bI!T7覆˗/駟Ƌ/a&$n2ض va"D~rF.mW(z몋LM%bZƈ)s'I!$9[MT˗qUZ- | (U۱R7d@% $O+5P1KՎ\rMin>vVvChZ0;;x7ȑ#hԚODy 0* 4:x≯9s[[/צk[>O{jj fZ&󭩮7ݝSO=g_DZd`ێ$l6L& ˲0" "c\\ljJ2\N}Fudo}Mr=n aDFA ouǢz_5H|$_:$c l 9MӊBl;h4mt i5i! CiXh4qc 7o`mm cAFsl6ZUdY;v찮?5??'xV5ɟɿXղͦ$Rx|^ZpX\~'N͛7jvi4e2Y8XpnsDc1 BP(8qS7䑄2 ,-h&?CW4&spa LKWO{U |ha,6%a_,Dm#ͥAs<`L y, 0ǵ8 0X|/Dv]a 0f\nPt:6+X__MlW*(J>VIb ;;f|_ҭ^m/KG?if祅=HiSO=G}ΝCրcy>LB.f2mX&Uno:FylL(TbOp$Sati~?:Nؒq]Ej@ y&*4MeY(Kے?Ё.>y ɍLU?n-"H Dg0"W&T%t]lҚhڵy ;L&?lll CLMMaaaW/,,|ɓկ~j: F_'x?8Oa`L 2,t],Z00 9LLcrrb;cqlSIGD3͸BfnEYwiRǍkޮ@74X\#!J5W&w`,i4q? (k[ |u<3 xAeaȣ5.^VR\.'7P,Kfd2T*B\]wzǎOb,7-oqj*fĈЅФ<ǂd{^uExy0d( L&zsayym\.#ĘG, }A4s=eSO<[M O/--e|GT9*Lܾh`{{?8obmmMVi :2nŢ+0aɸff/0 ] ܲ,&Ր lە 6"ʦi" Im dUNz %Bϟ?MB{&_A(FDت-"'i`WtW/L< %h4ADZf8͹i,Lp 8cuA\|arrLFCQ*R=uBf2{.?裧n5^D;Mض\.'I Ò |n7n9"< 9GCq .aueia||,}0rv&4fX,DF\~o|n5 j5o8ӄS۶%'յ5> N>eh:ȝG&LbQ V V3t9i#ѝ{mYL Ӳ Ӕ˶.,džatL׺iO,1h+C9^8s9㺸{{{#.UwW@-y~rCAG b')OhlpNI;6B\CRA(K(KtF?!Fr뮻&/ŭ~%_m?m[QݗU:u N=e!둕6d,A\>;NC>O}ߋB=Et5f2ҍn$"whjZ< "Uf|ڬdK^xb{\.m&:t^j[ n#=A7mgRgLeғbdks,E.J@cT'87nE O6Ij0\ξ _W?(ݖD} TDf fڵxs/h2Fpȸ9 ?R ,InK@څ/%JO:eYy ,iV޴x5 ",͐瓛Em?4 nd! … r ZpwKkuF=&Ǥi B~sV͜l jB0E4)Y s 2 t]hE?2J5Lc!c0tv::6'"LC(].Q0999rW?lٟ4'Z\*wC+W' /Eрdeek|@TE%cbG( d2N \UA _ȢPG" x~qnrK뫶Èz0F LHZ$1U'Du4!߸7p]wdh0 a4V&?ݏP-.70=5&>Lh nH׳8V"ԥ/|qؖMD&UJf݊kVN,t֖@woj"bjjEcb0Q*;_|Oo5]"Oӟ0M'jO(jAY?2H`1dܜȷ %̒*rOٶmJ`slmmX,<6VSՉǹW>҈)MM TBE󘛛ÝwމPՉOdaOJ11I&:"GJ a²L97ԇ s˗/ce&>=@tv4&0 iɀI0YY.dh4DuXB Q{<D}ݱcf36!Oӿh4b>iz)&VVQ4Qv>u+£` p]K-Ѫv2 V 'O&p7H!bYi[xgϣRO߳ELDb! b-ۀ.~;#2mX( PT \~]F5O{Ad[ >1 5M_;QktKmfd * {9TD,@%mRtC*LPd G]a.Plc{{l0 aw]N[JOsjj L\y'gr2g2Hz#n48w;v(eY==yzs=.WKS5(&%1rDQv@h/ߏ2ɟ]6,XyɐjNLL Ͽmvv?~K7J?gլ+dut|=+Unll M@]kiغ ׍ t,,ےl.)d0w0D.'t|.l.˗/bcsmc3*pk_ Ӷr*,BW[b1;N>Oi}${'Z(T7_ɓ'(A`br?fff~.B Ha (J4FV}MӱUr"ZDE2W6kkkcǎOÇ16ЮK0p%^?:ǧNzIKhD,7^k6|Dž p)ܸ$6/"D:D*4YP)al\&ߝn5B6a Z e3|<f\LMM3~WTRx@aX7.٤xϺ7dw0OTv_v~ZpӛؔyDܣ =t~ ` ԱrvBm\zZ\Z²,˿O;&=~7r܏SX)qxbjp5xl' ͛KBw]q(: \8w! gfG>I"V_l0ϵ/NN~T}d3YT*|ĵW>\f=z4(̚`*tAc݄ 2a"~^h ̇fBc6@:*(2<$X,ȑ#__zX(djˈ/<@ڑ Y2۫  l6re/2}cG'Bww(.1Cm0lK蕎NŮ.kxyE d,RwRO.~ o;!Qt|wW?ni8{,N8#z>|ozwF(psNS;DAr*uL("Dy|tڞ0(Nf2i +7{!$SrU8\}ӡCV}їĢ>=cccQӎ666G=<ZF8L,0fGЀ\!ɩqJ۵Q(qr.螢 #crLh2++䡛nZ uqed&Ջ,,,ԩSW?ffffK5Ɛb677ٳa2md9y躉0[BSS ϔLE&ETR4`X&t0FoV8ꭻȓJ%ywqG̓6bϱ7._ӧOcssSFQ,pE( ;4rТYdT,3g4SOtEGZrne.>!DG0r9È=d埧B&!cމT_" |BSvvë#Ƥt(UKjGF[!h2f;J2f½_}GmFkI5خ_ӧOڵkb@(ݔ"5X,`zz S3QNHϺclnƅX[_DžU"ֻP5K0q,uNGt 5}}rcޯ!(;o-ӫ c>?A~v-_ȸ(|!UlA6 eVۂ@eIJ,TUaqa'N$iF?9?> ]ŋ#!) w Dĕe( $s&AbEB7XT%Pl1\.!0^ɅGjɼkڝU=U{rc zam?8G\^J]jCjnQBTEaS ENo x21 B`rrrvlFCz677i͛~'1?o ZЀ"IZc?wtePx׸va/cvv"nZp]dsNk(5LZl.RqdrY@rtw8ע :2MvvP$q2z1*L/)3$Qy3(-]%x\C&ؔͩ^4MR-@؝(_#wu'GLiNw=z?5MSf亮ڵkxgd H(JpVq033Yy-ึSVZڛsn)Q?}0nD|ݪ:TG CfHr}([%NŧKP%%t`_9oO ' emAT5h6Q|Z0 3DO077'fҳQjÇɓa۾{'=_$4K]s7o'EevǃTF6;Zp,a-8rxsf3\|Y׀3ױ:f ez7EA/18t p3 FF"Y==#*Za֞UY0j͇!ę><Zl'C3mZ5wƺcD._}?1T&N9u̔@Sn9qE|Ƒa:*mU8u~؁PoajrrY2B_]#Gb{zϗO'+?'A-J$&.^h:!iZ,zjdYLNpĂdcE;Mgln&Ӳ`;,F3uZ ~8ugQ cg)bF>"zj* Wt#jtVtn?ePIgT &/ylAC mt3.['HTTǏo}xxW گ]&aN˗/̙37h2t쥓㘟 LG`En>: Q3鴣esmw;pp3JSxO?(~ p>A6'穫$i=;B 'ek[NJO y䑲i@FqA# B<@aks R jO(^XXO>}#=W&.H͛pVVVT7\`LQl&&0==i9maLZ W^,0?W^z7@(;M7 Q<^ʙ (xRTD$e"!ˋJkQ@V_~BFr,RG^9Dv7YYY{G?򑏼\.Ltmooܹs~: @ȔęLFkX*!!ALy#¿3M8x\z7Wnir@S XiN};96%|Fz.>Ow:B sgwھ{Ϙ9AP[K p.\ sܵ>,,k:fff0;;+XNT2# f"(|HHe\FXD'r`9bӚ):ooEibzTI;:qQ[t>|隐T)qeHΏ 'O h4PiLGpt Dmd2 mQu]TU躎qTҗ#?xg?bGU#ABWWWqFE%}蚃B|>LD4f-" ˱c43Ja&0e/`Z@q:}"N?̵)B-,`RwMg8T:F.D,DJ@ H" Rѝwm"RJ}VQM=SkP+߫)Ĝ(ϾRYj!8ry 0&PNccc( Kr%7 cbaa!xMwODjN9iQ[իWqEl6Qlˉ 111 LLL@3lc wL&ȺjFTOD 3F7yg"C_j? og5!"M#PG'mX<y[xc.4 Yv\!Z&NYct2QH^G&\וkJ~MD_v7T-aCF;w'M7f\Eyl ss3 M̨a@g95yq.Z9cyJgί>o~鲆-~J.Ak^O_f鞅~n1Q Ow5Y(նf㇨Y7GQbLMHEl}4`kV%ka3M YloW6f禠i"pIg, }kk+#ZήWW_;66;2i:^x!HKȺbcceLLcrrټHxEe(8Z$^T]b,rdWm{Q79Fw.Szɾ"nrڠsL`mˎvH>ȱtQ64-|c I`ȍ0;;'O.hb3Ii?4HOX[[ppeb)LOO8V8z5ZTu]L0tS- n$sAH@}{\d CC朋l1l1%7|ѿb~FOgƤj/eY R B)JŨ ~ƅ pytھZ"P.f+N_jv7+&bQhJ"rJceQ(`"}ai~u,--(KI.0Lfn;<o$:>םށHSv cQoVlPTpE:u*GǤ H^e;?N?L's@sZ[D`سz e*Zzy4j&fff099Ƹ(?4ajΝ f& v(J?91Ї>ݓg-sT*[^9@]7LF\4<,džaDa `"-+ԸӓgoXzl?t_[S?CX٭4#b? NZ=wROHԘ.K;MnOYt;m RV"%F8t0??/s5)2Dպgqq/O8#nod'n MUY822\Wϕ2(Kf0,a'l% `GKd0v" >m%7_F߽a("{Oԯb2hG5<']i;sT5$濏!h`̊R58fggl6Ѩ4"- ^B=w,ޢ NX[['v#N~SSS i4temo]177 (XQ/X,"qG) \^H7ehV=ɗ4<3^9%vNZX4 FrXKNA&Sc~7SG:&DZC)ۆ)BmEczzrYz HȠ[=t9uҨs#-zIkjnkkktkSSD cSc3 J",ۊG,Â04SCX(I2ITQ= YNП I>Of46Ѻ88%|iG3=Y_.s pr#Omfz?*byQ\inhr&btQ2b\vK8678t:^A؁h6ZfcL# ܙL?Qkd.GWC h4m"ضmLOOc|b\Q(019۶ .DAD;]g,A=89uq`{vk e1?7W#nոƤv[]"4rQkv7n0i4_юΚvŗz< 0&+ fF6-..S*6C7n,BdιFqB@\?k܉ j-s&`P8{hҭv:}. e-Âd׮^ӧO㙧iZ( E)5i^VE(C !y^˲033um6K5mss裏(O62ѿ=i4ܘ1z5wRE>'/ͺrs1]6 uQ/7qy\t 4M zz]SusQt^?aתߋ.?ܝ84]VB Cߩu]1ĥ eR ]^^Ɖ'OX]]E.'hbm$*rz Z UĪvKf6==B \U4x|K_Qa$?Lq@AF,gQ+#u/r: qZ O>$n\]>_˗. 4Q*/e bAvB;`0B_{!Z?ܴ*؀TN m;!vjBwŀP~۰]c>3/Jjl,,,`bb\"x#NnlvUZ-R r_J:AСCמ|ɓc$;.Rh!C\Z"bafr\tQzn%Q:nsj˗/cii Z NF-rKчڳ5*g;DvڟƴNe'zNƴST`od4E*i+Wc'Lxi2xxHtDnՊthjwV$Q;IU݆a^k_Ds(/қA4I7 lnnZV ɺrf3Тa*ض[vpe"]j7nsDw |H &3S xh!.* AI(5 : %+W׾U\zU&wߍwޅj Е>;a1 ff !b|>/wن;Y(Dę}j0īmg;2mEk@)-$q0V*ᮻ"* j)Bi/&eҗȻcvbOvPPеn*5h\]Uc:{,q>)(6ފ [HҎ| B}L{/pw' uqqy>e"< 7T+2*BS#}bLDYfẊ=G|ϐ-GDu](Dw~wJZ1.3E8?`bb" ƩsA&A"7pJՃX=x|`rzz!@pec;* KGh dcGѣ{pwKT@{h~ q >@لm;!CɧK,ϐޤ?9֘Hy>ڭ\Ez1)6)OLr-!{FFCcp'碔uTxJnY݋~ԩi֗ӗJwM$lmmI!FjT@|955vUɭ~"RI>@T~ʎ |0]f 6vaG>MOI;i(an$ng;JYsߤ>Ozy7U9jCz И4 LP(x }߇8( RH@ul6bFZ Z("c6677l6Q(]* `Y2y8߮DDDM4%(K?\.BiUq&&y[>hAYpGˇNq4]zKpGMiTws6ƴC}Z|T xJs'fkܲ 1lmmȺF]$ ClmmZ"+3IQ:ѧ?{X;mUC^i8~MC8T>C&Μ9ׅkQEԞ]\h3 ‚ןGs ?|"bx lR7L !Bph2#:a6ػ r?S捍 ,//hQJ4!܃a@dPEF Gv9J"Œd%m:#⧮l6IAU$}=σ8WX@#=zBAun4ՊII/G9oTn`{m*-=ẄIx~"En]yyJn\$LLZM#G"4\a64LmQ ÐycV܌}ǐHNc+R唉QUF!-ɚ[V!s;~bNƕ&ڠQ-/,,`zzZN*yꤊCXa7/ƠR4u O.pPS,A{j<Qȁ>TAkƓ0}O"qk5&M uAЕ.s+XFU~w"8.ȗGIh,ZҴ-1'c (!f \lֆ뚨et2f .ckkKfU$1|ɷi?DߩF<51( 2p%avS5B̈́ԟ9Bܫ|wo$ CV\`(02mBr cV\z+j>iQ"O@6~M1$i%y΢h! Lj<9GBVXU y, `zF}Or "T\jɒ5 S$7j|KJ89 v7CIJb OI#ܘ7׌'@(MG^aJ>S0ENվյ3[ObP7D,!=!BdyZWxId #*'CfMIn6պ`O.G~T[?Qϵiy={X;~ J:4R6 @#?:/)R }yi6P wm*_QU V d[]]cLalh}F3fՠUq__6MuQs٩.2ZzBN[4CnF^5Vآvw+ ӧ,rWD{,NBN2ksB{J>C'9wFOXW,ò,d#?]e\ Kr,AmrOĴ:1*߯ԁ_ $@n j ]CWU eIű~iFG~!iгwJ1%ﴆrT}<]:4ji2BR$ac{{V+D4l6=%]}h}ιp9ܱ&]1JUt:E9'(mt|7}z-#\X,ztrl&\~blwwRronqvU|$ꫪm-lɘosB&APJр"j,fov f1ܬn#_.:^GZEiŋq!>|\NL\|!/^`Gz]6(sxŹiXY03i`LG}0BbCh888E[>֢hLtMz4ad1Mp>{\WРɈ~-B0ڭ-d2eQ'A~LBՂalX60g]nzM)ahZQe[ԱI_3 4)]KC)(ѣ8v&''% hz~3A H~h#@+@w‚KuMG 0`!GpL lkwpOQ9qQr-= Ð24%7KxKTѡZWs>7GcP(IuQ$ԑ`C2TÛ25ԝ3V~b{\Aj  y/ PY}W-̻UQAU~2y6;Q 躮TuU[*IqyT"Od6+@nll1&ͨy>Sl47KNq%=@ҟOWBmK(/}T*B2 :oz9M@FŹ8ݫ [I0Jn|<{0X%BQO= z5: zUWVrdRoɔq'Z!ίz٧{:q LI#u@7UsQhpU1h pCЀUV[%fzY(6nι=HU0lc֓\a?-K=]*TQuab~OU"cwZ4$#kIE&[s}TW->40 m `݆:k(Ko#(-\YχT(ba8` C| cGGMa/){zaHI3 x Zw HBi!cFQ].h#0p0x bsAN |ߨ~R&VUCK)s2 ͹ K g]N<$ÄlJS;1ollHɒ]׻ٟF8V:4{Ia DD_vy=|?T?{Z~oVAM,//cii GA3wgA1KsOZſ*pw58ijԒaR UKhmnWUj!c||\T9,g! i1y;m>Nae\ح}M4@!ulT$6tv}Vmx{)l:"B[/T"ߟ <74Z%GP%W@R2!~/v*M0sQ%( _w]WSƠМFѭǁu]?F;ꋧ *It:bu];*4ekG%Q]vv2~56nL{Dq&rQ1ID]`ޚĤ>YmD4S9InH]V-95H&IVC]85Utգ (fAot10~~sQCx޴PKfaъ"h,z%$܏ Qߠ6XH9{8ɣP:?$ G '6]ߠ+:h:C v)#WmK"t艈>e%u& T2{fBVQM>MTz inWtx"-/y!Ltϩss?n,w|r-v߆gBuѯ^BLoìɔ#VWo *-H~().z uF E^7VI)oA5&xXzQN7\ׇJBg-1.R0(~NzOH}hE($DFXvz=F&]vI~vW*b{&ArMӔ)h37uN91N4t@`D8җ[9HR}h"l*>Qd ƍ(˘뺩~Es.;MZY_B VO 1ᫍ{;u@8՝ dd 2ٶl6+; ƆTꤴG 01CӴbҽAF۶U_'cI}_ @^Gٔ ܃]?F2=4F ,Uw]Fp0=Vgܫ5jrQmBU[Өubi]ƒ,|<a <&S"/8{)::YtÉ YWL |;*Ks{zy{}8HUzKaDFiN {m5r *8*S"!$=  XV}AifY,@N]v ,{!_TeȌ ykF?Yk\~OdRx*Q5Mp&U(UU;K4Mj>hU'=QqΡkx"00 -4k5+rzGx\&#|"Kr%kw[\i1)>'%jp|H,667~QK]pMX1 hʳsA ak"P$1;Ƥac6/# h8”z"}1TiS8ucLA^ow>V%j8t:?L;?;|[ͭG^)F6hm'%dN3=I*q[Cb*9jTL ylۆ ies3@LK{011i`;lӒǂЇ]MlhR FnmJ;Ȗ"ƒMx9FF C6=Xdp{yOfK IJxmQδn&2V_i阃X3 zѫ>?dj=zƘ)h mZ4$ިI{A;럮{)e6@ÐC5$D>o `pɑ%#ڭ 6ji߉SZBR)R:q4 0 CM(szH P'u\zk׮!8#GUt][{F&sT4ߕ%l섬~sLI\-!M獲ommǹsKMIG/k۲ѣGLTu*CۖV D4ةSg5j-\|jUP$C*D^yquz˥ioeUK+CT+2ٶXwRgis!^KE٩-iУ4MjZ6<ι6pU!Ǟ :p,--rbZ.p]wڽ&ڏ"9[/&9[w'i`{{[n$O!?a1>>۶{'udE䳤;0Mz1&3l ˁ{I~ͩ"'udr9;ށet: mZ4@˲P.B)-Mma{7Dx3; ޠvO4̷=@B"evKݺx]CƽO;(A[ JCg@ﯛ&xqw˲uєiKIS0Bi GI h&2%]ϫeqIO!ݲ,LjۏD+k[=/ ɱw{ݭ x`I܈;C%H%hwA__*ĮYPNvi nl^@{i* z%%f)V9-rusB<@GPIfj4 rjDݎaU("=fCoci~Q#o6պd{C$5p[fj`2EiZ2JS7"6sW ]oA^ \dTs]"DٔZ jvCIj .&XTQHK|gQ~4L=|eڐ )_ɐvصm]A=!gp,9FmFXI >%iSE0B.G A^ylR\(s&FA~ LtdPM# iu HܾhȀz~i&q9sF&)FY퇿]`|2I s "T:x5ڋF]gT~ssJA ʜ̸}Ơ2I7$ }t'btC%uՈ!-9t]G.C\뺩ewFQlIس\x7sPty>4qFrE}N`2~#acjQaiICƯTԒM&s$N([wcn9%}URT184YŨ!\ ګk"`Y ent0 QT07'Jgmc"[G>J͉Ud<}&8<͘Z$\5>DW. =x4Fe>"ӍD]zqi@AI2}0!t؀861:{>~xdK9I/}ڐ)+ͥ 5MCc 0!]k1bii ={.M/a_D^FjwOD!ӳ_~|}1h?/ՠ7)nKàJh4l6"NS?S??>iڝ>* R$ur,gYͦ0"qss7n܈e wI;`׍r΄Ϻ*0㱦E4|N6%!׷Z-B䙪PX@&%, h"S}gDDuN 9GVCB6 raZ+֫|2u?\TC6 7 p9΢dF0=O08 voFIsr9II;MVC:N~D;c3F[[[rPK^BxUP3u 8#aMl4B5GV4P'i.()*#KwFo8;6"zNnHagYrSY&]yP5hL m 0 B❐VDZF5ʛaymUuhL*H?5@CGܾ[wxzerb4N7ڗ퇔`M.m[K}=σeYd22 ED B^!0 K9hގe7Qdik?-/`ވ:;7:ȑ޾Z?zdK;\ .ʎේ^j=F}J׻U+ O uw  NCӠ<LsJy C2*a5 HN8q><3?%>,2pCs?``]Zzĕ@j$F&t@}λiF^yDWu]5ya(JX]]"Cꁺ.uS> دG$ _$:dzNT2<unoٌYՠUU-jL=%ǠuIÐw)S?-l~]{ҷ:VWWtYlmm{ЃR@6EX<&$~b~\7V? =t4)W^sUF.2 ٬f9"&z$UDv6jZOaWTh4-Foo:s2t3LNN}looG] 2\}4Md2Ihor1vDkK;F=b#hȹ7 ՘HЋOƳmi3jj1Z d[[['zXh#9X۶0Q luuJccc\$r`Qi_J(CեtPդsUF%=to/mXf}}/TĘ8)nDA ,M4'Ew@pm1fzK.Ou^G#/>T*~zT*TU{PY+yx|at]ZGvm{ r}ȳK 4JJ3y.>MZU fs-˒pݎjbXT666ȏZiP4M\vM8(u.]An)ӣ ^~wQ?AvK0~0$= 3̾Gx;w\I6BݸqhZ\D @ef>:<,ӒJ Gе+++4 O"h-Jj?<Hk9 $|||*ܼydP.199$ wI <EdY_2E 1PsG7MlooK#9}8.CB^G6y8y$y<=I1vKu .?~\~zUg`2\.X__GZn?thZ|/(A\sCCZ?퐞q{"vro$ HXYY˗o~ҫĠ范A/̽N8I:ޗb{_H/___(׼wqj ||^rf5,i˒\>PކyDh4pUT*))NQױÞm('t: t4 \pwyƓ0 ׮]ý+n}^G_h1n M~i>}.\@Ւ!+++h۱L"j~9^K,nFngZz*VWWh4 _zȰ 5M'o˲Z'eF(0Ɔ \~v[JDmcii__~tس %z(J[վ[-9Ǖ+WE<\Çws[6\E- I{5]O?'x/^DRl6)rXTA;QgKZ}߮D955%}hҥKxk_[ƕU 26eGj+E\t:s>\"aI|X__Qm23ԧN_vF%FBE۶ömtVT#Yϛj 1M7o?~W^EՒ0 qq o_jdY |^^{`G_jryi~n75EIѻUo4LKp6a[Jlב9۶|>/T=T*&%gMӰ'N`mm-3 Jj?GykK-%C-|>0 8j]yi˴~%hZ8<y9sL4MśfuCP:ՉzO=;-<ُMcffj<ùsp5uX-Z`TUr(JBCJr9s=\&@s.^Qk$>ci[ZZi,‘#GSOLa"szGZ#<"uvr麎(A5IOzbѥۥqe1Z1bvv8u666: /} -|~/cy, !6wYeIo6qㆌ vG}9'?{Z::v2 & Μ= A@t8nFw!z)ܸq#39rq=`zzZ&BڕIOJQ<;j|]BJ{EV2^FyS~(*I Kce>z `W( փ 54 bS84>]rbQ2ógRda`qq/^SۑCP(|~jQ7o… C;&,/4LH D\jp̌wwo~37d21ءZ;wH^.\V95Eh:lrkPwjG[Vp#͢Uzt]$l6+;rmnnJ@v^իWԫCw2E?/OKt@6t]Ǒ#Gd|>˸~:q.ݴWoF:&6l6q,..baa2,*JD;9V/9x>â8f?ILDT&''q!y睸{Q($zlZR SSSr7 ܼy|rY".\'xjU;͛l'cY?RߙD]z"%;0tThG~{5uNUЎAزXjIa"lбAv_;;Ca_mcFQ &RD͠ςyǢPf{c'I$ %PUs, J4۝6ŢK.C5 rs?sxyBauc) ˗eC7q}\|@P"r\`A %Nf QuTd" nג91h5cS8R8.{cZK ݯ0DȪqQ7Se)oV::h4x $Dy*Lč7>gѿoT*} zdjxge;Qpqޮ%xGXRpj0iԍΧdۭn'ۑh)%S/ 7ao6#+e! jb 1NT,1fVEV)x"^ $sXYY$zDŋv0i|w}7j.]ndQ.ܙĤf sFbUk>J^]$+0bx$a#'s΀ $K1==|>/sQ DI:uf199 ]PVe |a .:k׮nǾk;qu!u]Z裏bcm @0u^\8wjtpvzǁnuo Hj c?HrP)=s8BjM{:f+N#u^wS`Zjx~IZȺ.1LtV"|Lõ/<<Ξ= aY(Tu͛|nƞAp ~sW>rpVvs͑1o{{ׯ_ǹsd>qUaIHo=[8{@>hqv毣΍ 8q?8\7hp]1#X[[eY( rVVV/hmF\ҿ˳OlX}׻}@Q077R$˺̙3f(J5,ےE1CVh42H5Ԥj~RG$V/wQUq!kƘΓNs@T,bnnPVQ.dC3D}7Q8zZ ZadP6MrY-Iҝ7y6P*dP c 7nO>e鍢p{wK^ɱ,K{9dz> 6 p8B=uQ,Q.eVQzꂔ]u]{wvoE{9=ZN*똛ѣG1>>H<ibbbBZT`F̫lҒG n޼slB?c?)۶?s )կ~5.^()rc! 'T}b:j8I Q&M-_ QǠ^)dy* ^T$Vc( c;Fv5k?F!̰l~Q>ۯ+;(t&ŋx'R?z(Wnʕ+0 S˴066&5=w5('W ďo?lQjv$Q;|F4+Q-|ȸ]]Bٔک7n੧dLò,!rʿگg۷??~uݟ SO=/67MX[[Í7$88\Ǖ<82ȵUt#u}o$$ r2\ו Euݑ&T*\.:^!z@8={ϟ4I|ٙz=ykd0M[[[hZ24<):yLc2?ipj9,˄y7A c$i<5Slvajiy ~W"`@4@0>{@ҌIpnn Vog۶>}#x0uxh'7h40>>.m駟?.˽Sl9fffd~;+677*G.f)ٓt.._,t8m6DQ12f9%3D.ҹ ^0*1A޿*Y@SaDF #)!Qpe'՚/`ĀLMMusGtJ _,e7nԩSz,BQ|~/\gw?ky{C:|b㘜Dp]Wz*$xN y8ߓIW-@,Ktȴ{iԵA U2}_WUQ+ɘʦUlR1'mGӧh4T333h??ϾD򶷽o8 2=69w&fggci @'J(#*Tt"1IQ ^ ja\S+Ă-J$N$|Ls󘘘!* |ߗjst+Z*ijvxǨDӑGDKVʧ~ZH, ` V ^(0Y&&O-QP zӄ>:"1Q %x|zj *Z'OX,P(qWp"ujr*fx@Պըk_^ 4e+"q_ns3wkQ]el69h$_|mT*ɾlGLQv .Kē{&iKC\^7dF=ʈ0QPWCأByh͐>=5%ҽݬjd2kokk 7px'(4M_~́=|s{~@Xհy)͛X]]Ą a0L]+jR4WV7zIf顖@FIr(V0o9[_=L;e)`YV, ui4MLNNbnvN%GvpcccJӧOţ0~Gt|i˻L|޶miu7nelmms0_zpqY42X!a[6&&&Oj /""=%(P}4A,9Fh/S񔙙KMy^l}1J077ٞ5MCVCaAի8}̔CNuE?8g?-3?OmnnVnll<=zT&,+f+˰L30^.^i- !}0a G/ )W^ 5qE'z0 e!˝?ԎYF,0D0 E)4溮0HwJz ]__SvcPı#GdF45lmmȑ#Ru.]—ef@i4wO~7/Gg?{~VAٔ/dkk s:tH8L&^xAb)M/pєNHEi/zz.-jj-3O-e2Yݔ6VWͽDiuAF]LTa*2N !ȵg̙3pGC"?]K!aYMklnnN^irQ2M0770;Ͼ%!z?'~Gt74 CllllT*arrR*w%00>>.h3ȸBMfыD+JJ`ۢX1*m$Wm0*Ν;%үS :1Yv4,_2̙3Т*2o\x5Aw>{,ɓXYY<jH:K J¬9 _?99)s a&4i Urrb @777cz{ ?8ժLJP(СC_cߢFmsss?ZvEZ-⋰m\Gbj^|EYP@ͷ^˗o6WsHNQ¡J8 $Ck^VPt>y9o*!Ba7n… FZ<]߅\.S7bLΚ!ɵ\6KQ,@6661J%86~iH$-lMh۷/(u?uT*z~iqضMxeM՞H$ `hگy:"XP<:&&&pq9r9zo|CtZư৵^B5 " ԼG:mxF45 k 9^ d%J"fggJD ZO[oQ#mFEQގwBX_~$N]E[X,b~~^L4* L$ܲp4*^&9>sg6NyhNi4qifܺu+n݊X,&Z=+)F&jGC&]S>' aaXΌnVC"@wwwHĘXe"VyٰaBnGXMٞ,bmYRz{{z?upz8x{@ p;ʲܜ5;; qfDP6 udR,X,# DuA{( <{,<M7݄l6ۢNc`qOk¡gr'p!}$Ñmc#afv^("zNt>\D?Մ:MjP"G>CwW%)JGղy:u o@DYzmmm;qzx4[ @=2*xXy>2 $IJE$?DUyuOA^a0UbVĉ;2Kd xRKՌ&'>4'yWJR|a|3og:Pd;#8eG()+$ +e[bRXD\O>}_;rzxW_ܽ{un fffjKhκWsssh4FC+~lh b nut]?333 qwL' 0V+])e 隩v\kfO~5==/I' 8B(fggQT I6mڄl6La0LDd;jK ,5UK v] we-q:\_m߾.˾D<ݻwV;H̀Br ]ىH$"^2  'XP՞|s }u,d݀6l޼-"?Y M2 zsz' 333EIbYp$(zxG;=#$CLHp 2 F}"Ek}-߱G,Agg'˲P,*R@ 0~TL.7">wEG ϧQ,a[60nVD\ '7:n?eyÿΟb1zSh EinA xJߏl6 F@SX,¶m$ qѽ!#GpQΊHL&xΝ~r)v;=:thG9h4vX{MӰED"p9:dBPx|y, ! S9.+ѩWE݁WiI;B mh4^o^zN)|8<-vm!B g\Lxs(uHZ9 a||FC`Z1ѭD |>d" Yj^FZZ F,#L,SSS8|0>IF;b}bpzxߞ={4lێ bBFX,d2MRu] T)G¢F|U*#|䪪 MDmy >˧!QzA\ O'c7On aĝBp9ftɔsЖiIG<""W:Ɔ VaԬ;nѷ^#"zm'O;#>H Cl6[|hc}bqzկ~uz߾}K覅pUlQס( @mmmPJ/M6 CG‚A h)*WZu3:^.OGoG9}$tz.ܡy7AyhD6E6E8/wIPt:vQQ *MDPśKUtY 9麎>GǡiPr( nѱk_߮_\]SN/c=a-˺됫ELLL>A!Ǜ)AMӚBnFHrHA=4@UiS 44My޺l e ~]8>UN O2( @VCZE^?o(ݻeYAyB.lsÅρE# =11SE?Ja˖- `ۧ'.ծ9_||RLӼepeaqqh4b'5 W(%'`;͓'"Ӛ "%9wjI(^0NI`jy;2 Δ.%00;;! [0&d$~b1d2tuu h ·×+eNRH=WUU1>>F\$,JGEA:FOOϿ۵kw^xs}ᷱk<={NJͶ퀪],133rp8,P{@s$Iau6sXyKldžO! rHoV/fqRaGNH- ROt|>EC}ybs 9=ܒ$,(t]l7.GMi§R)!pAzTSzbЉ+jND(a VHH&⽐0|M 5[g2l6={q[x%9eYTUEWW)TzS|BP >hEqE'݉ٳ-Lcm/~ *7M( iTyq[ Oxt*ܲ,![qK^֣ i}F"͡V͟-)bJxwp14 S18˽d{OzvMd/o~w}q0~ R5hxoffO8"$I]a&\ZzhV^64 RKKK(VCx1 ,`hhjU䪷v(P-hLnh4]$b1z{1GHɽ~=Hl=== 4 yCZ SSSD"!d>:N:%(b=??kυӓ:t۷;锤%SSSBgx\|*PDٶP8,]P!qʮw{LCO'Rri 177'N] e[[n&1&LΜ9#pt$BaI/&fauzcii jUchKVհ7xC< R9M|>={,spСWr͖e\.cll E4(Q*5i(bEr]$EW_ ޛS$(܅<4MLMMaff,7G %%$cnnׇoe񼦧1== qE^ȷ)!?S`6s$FJ@vs9s9te#Pdt]k:s7Zr,sҲMiT‡~~ǏGRJ$B{>!=s#k?k\ٳ>DTzfii) K6G g馛uVEbt]]]+ _Z]ס:j4MP rٽ[}V<ĂϦ0Μ9UUY pMDQPdZ^ 1#Vb&UMIHRM$J.Uh.jR$f0MQ addBAltđhoo?ܻw_\vz8p@~iiG:C)6mߎ͛7#N'M0\Nh~Bb^GwZ \iBl\}hq^F.ūDZTbđs~'nb"Y+A|8oaaAhH 隦p1=z"]"Y6z.Nwz?7 h l@,Ö-[|7oz|k6fff0550ֆt:X,rSTUf+ S0KmIXt9TU4S>Wdʏ3lv xm5 î' 1%,#$="ͨT*j"_2udq1џ?6@ X,v.~:qzOZXXiHn:4MmDoo/. qq wrJwF]ȈǝtV'Y!9ޜG}r˲PV@ 'r`02ؑNmG^a9: MT"E% dI岸+y3]cP$>iEH$TL:~_Z+e_('{T*6  jK?Ncƍغu+6n(P}ܨ0H~Z plV :2hTPUU҆e<׶m`\p^D !}zyϖq>ɅopHDK{0Mj,)S13(?uN8sΉ"gPݲ,]]]桇:Jh\7kJ1"nغu+$? i K^ɾ^qMGBir ]TV9JuZOAV'|7Z-NjzhrjϯӦBV:VJ199œe(K2,wS\/:Ѳ,ueF"!cjj gϞɓ'199)T,3̟}xzZۺӻsE?u >D6ŗ%lذUi.J$I0L" Ӝ*4Mƙj; 9iy ˛F͉ܼ*0>>8N 6,Pf޽ju؏ZGF{a"Fqcƍ4AC۩FJ^gXfS4Q7n.6?{ ,۱s&Er)qt:s Ν;Bj*H1F9XLbN޽{Z֝~{g3=h4iI*Iy;1a<5n0 !E-D~RD,@B'6 kObwVUF5R*/ g-2oAn5똜(Ν;IT*P@6ݯr4}.x?X֝$5M$I)~_ J7,TT6(FDQUtޢW8a+7+"{Uo:7]3O3A$y5AmHl{. ,硪THF F?<Í^7W;%؏~kt]^ j+kO$h /t9r"NM\w{Yh ]oz^j޶\_KZχD0 &&&066&PGOό6?p7H$O>z}\+?eΨHRfZ&qRܥ[kĜ# tr,E\KUUp\~~H(ҫ5~o + %iH @ Mt~cZus?4=J5FQD"yd2r9tvv ^ޒ{8H?rAOxu{M+ji>77'ԋIW칓&n&H$׿Zul_뿯^471EqGDn[:-$ɢ=uW\ .[}+V<66J"溗J%T*,--A> CЩp8{Ǐ{<غ_xiu]PWS#wtt H45ܡBb'm^g\'a~\P*OT_{r&pwO3pob؋O?owv],N 97T;g3R`)Bk^ HUUqz$XuBUU!gMuȈCs|FnG"+ho}[{<ۺ_A;p@oѸ0oߵ,{h(ߥj=tb:s9)Wp/-@ۥ6%# M7诣'xb|֝~ m_un0~ϲN{mwxΩZxXvzZ)Nu7 |z|l";p@iiW øpЯ$yg\68{ihM|P`0EI~غ_3d øٲ-bY e]/F۶~{vdvWن8iSQEQN|7(~wZ?u[֝gy4^˲rn} kYVmiߟt'8N@q 8>IdЕ$ɐ$IА$8NYEY,ɲ\|Ӳ,Oʲ<}oFߌBIENDB`gambas-3.16.3/app/examples/Drawing/Clock/img/clock_bg_big4.png000066400000000000000000000516611411575327000240320ustar00rootroot00000000000000PNG  IHDRXSxIDATxy|Uf߀$-vE(V*(^i֥׏Ok駮j-ZōE=5@,@=#9sOz~<̙39s_Q$I?O;(]-^$q>l|.$IR#71LvZYZ^{-YQ===tNW'4~;8!D O>ep!tRfz3/YW.@4׿젮9sPUUĢ""`jknI$KU@qDESO=%иq?~f@ވ或 5xl+\p]V >}K/<#nկ _.qtd_ ?eh|>ʨa˖-4Ir|$''ws͚5Y]vMlllFD^a,JbQwލ$994n73f̠=d2dPnj};5DR"Ν|%9 z)}Bkjjx%77]vw4f. ׾jsssCvyxLj;+ReܹB(@$IOJ % !$h &SaUŲ˳~ 4ǓLrrrH/^Lnn.L0 &hv0ZKѻF |7L*..rѷo_Mi#쳕Jۑ8pIq]vJ ~#8+i;^ڵ \uU[%##=%%%d[ J(ro; nȳ>l5Qaf;s=+((`iPpTWWwR+r^tsL ,<"nȳ>kHLLVA wŴWRR\P{NcZUzp 8sa֬YZQ-]M]>s='y)l zƪ1fgǕ.d 80$.??Kc0~xjjj cYm/5͙3IXf= , .矗}3%+b`k#^[WW[o;s$%%Q[[)((رc=z*f̘P872fGm7f}w%H,>]111ո~,k].lVwh$Ɏ{[;ed޽$^e2c͡ti#kfJFvU꫃jVFٻw.WWdE$aWD Gt1i+%Z%uKYp$HSկhi =<ފoE]/}t5 usfӋWEdW((x4CT.9,TM*@׿u,Al] 0"Up@.O/^H8*V~#_kJ>ӟFk-rX>4Z5⋖ |T7"|h\zy[zQӸ&H*A~Z -5+pg&0pv-#ғVevOX~Jpo Kjmm2Efs# v~0Ɍ̮*AĄLvȭ)1@^z饰T+i(V5\qƫZ##H:?2n~"IT$]JPH/)b3뼞_]J>f׆K^|8TU6ƶk{z+%'\OC&e YᴡHmth?BLV:/l[lt+ۨ#ѐ f<;f~^kPݸʰ QdEˬ\HI$pzE}.!4;U.y+<9ƴ2;KtQQYe6MU'-@Iaov"u:+j `+y)?WIp? cvgm꫒Ԁ1z lZw8:6x#ҩu=kU >p\Poږ""IR]C柕viV;S˯U+鴤2) |+^Y=$IJŋk76sw;Ij`ε#axv~|VW?35,3cԳtZ|^"o…5 $|#+.͛5;BhK|hVg5Όg'^]þF>KWOyԋ3*5 vkQ *WGH-ŋKVIx駃Ι3'4Duzáy¸Q'X}9PVεvЬ4Ԉ쪐VԯR^z%gY/oIHG>ڱ?Am+V`tOpPVU;R"R;"ךU*jfmfUmR&+y[=S'IMMM^p3<RR1PdIܪ˖-۷/פI=zi#[%ͬѐіV9*;AyMdd;Y+m۶j*|>~)Sp饗sϙ%7} \$o$Y? JY)S0ydVZپ};۷o碋.bСj6 [-XFũCgV@ 8뵡Q Y}(qqz-~?~ǑʥO$2oѬl 3J3g?5>^񔝦YZu 88:|P)VBoi^VGZZ75 Iw_K\ZEͻ뮻1ѢLSWR^y `3k ;eph;ij@RNFOi$U+==N^<3"C#H?une|of8V q+y4fqz‰3km(=ͮ׊׺^Fqh"M\w]w̲6ҭ5VHkzdl efjYH-_km#"Dl+߲{I ʮJ'P/7RF{Ngg'^/ # b&F/){,E:kg] [o35{[욽b60zU#YąVj7Tkk+e7YGZ3Vƌ^0:ƺ b~ SeqU4%%ӓN˯EDk=!=촁{J_˪%QUp"`uM[_B,URicFV78;jWSS` 7V[XټuFV:k&uwkf +кaV R"pDÞ詴m<>̤UYky#jre*eee:H9Rp9hSu xaZTZe6;3pw}e`聥@~m*8*$;V+eQֵjJ{ٱS±IHd$Ed=)cVFzWWWgک$?ĩ[Qz#Y^:+`Gu 7n|ߍHhNZݖ6i*7ʡwrsm$$-WVyVa-`$o5*QC$ާ̦y*ާOTb+HƼµ;ϊ V+ԟr ȁn/Vgvkkk-P}h0Riv@]j=5aU.Z(?O*.V-I2?V;ϨSXV5 pr:p{6^v.IѾ^H5, T1ьG+܆T>I=GV>Iٱ4ֵPDC}c .!x=d ǀtR#98x 0'QmRwۉT1JF3Bjѣ*$#Vb֊͡-`j[ZhiiONxO9{d I?g8qv? _VAiRS?e8cfpr;%Ʋeطo\pSTTĉ$&&WNu0Yi+?/i` ARңGHYYֵze WTTUVJzF_&MaYk`w!ܶr)]5h8LC#q$'pQAo>8@bC0xB_*k9^R B@K/޳l2?S[[˦M8u1112uT͛^-;JZpaHJgmyעN^!⌞\}^#4e`GT' !8x]Ƅ9prx;Yvb㉿zLőVEÁHJ3u"bdJ[OqG'ܩ]z ljc`z\.,XUW];̙3Yb1>,h̢Egf:IF )-U|oXr]_2w~^<8[T-o\3 L>O]e3;K)6?#9vQhzZ}F؉ͼG|B0em>Filldƍ0qDw[oR]]Mnn.O= .d3ƼTVb"V%UG5+ѠדV))&NwR%b5rsP_Ɋ m>ol`gHJęN28ԅ P}FKp%$jN2rHO<=w~!YYY$$$m6.\y2dӧOg&#IKf9>r()) M3Aod0jz~<.'Sgg\<DE?\1|~_X]%xyW?U#+ڍoQu;Rm=.ļ୭~n fݶm>Ym:D}}=o61"]\ ZVC@C uc !B^3VAIQ~wPQ8pe]ďM8s Ѻ-Sq$[?$\kI=brtuH~~>@kEBBW\qÇNܿ㩭%666dw.Z*c4 =MFLJgNحUL"fcٵs/-G3lVN}  p%&0zy#qgdxqmEۅk`P6dӫ>$&s.4Ԅ(\|눏O>/62Hû첋=pf&Mdv|`A&!!."H#Kz-,ƨìc$>>Ĥjj6AC_q!:@ _Z##|GȺ=HJH%뢫ٳgz}~)T,oeC47稩aڴi`6n?^Y̙_; =DVR'w3ywPZ+Fj|~(޸ gl;|4ތNCi>VL̠2HJ$R/NLY-z~;y)//ǑB) )}[c|*~k! aԾF4d\.۶>+be+ɡ5g(4šnc^6GQ2~ _P8f"eoFݶHFjlXt5)"n(zj!K qS`_\ɚA ?DKKƵ7N 'g"Cm;I@N˴pNuҳG$IJw^xV.KK;e*|S7 ޵Wr ΘX&BZ)mĤ_T'o8lܽ#-T} ).y_ʉ*ڙ$W3q$mW;;xG֮uJ(:m}|㚯G:~#"+N  ??ZbOVa4;FFʴr 85\zA.9xg)MG# ^t)7|STl|{ʠvS<-N5yw<֬-.5;Sy>)S/t=+A"hH~ua~GVDax݌5[n@m'+([ e{@<܍o_*Xd}YH\vW}$h?↍$m9~`0 Qy)^zq)OU9dɿWOjL; y(#H3hVl;.oȡ*,\H1zj›1wJ qGV[EmWu@Kso y6wMS3`PH.d$`J3jN7k OL2ǭFaI(+=>d?T~W')o;`0ڑ[2%W{do Zcyw>5`f߰V+)H.3OX IďO14;Lպq'3`0Ɠ8&vRv=;ݾ۵½4>Dk |^N'Aky)mI;QQЙӏI1!sueK AaT+ Pb{|~)e}i]r%Iʗ/!.gqCG0z'wPw4')Ϸ<ւ Z4њUVMT 5qed)2wzN/83d(d'Oʴ|>|5մUW:M[m54)$@s'Wr*>AbZ+gqS'6I3g]u~K.xةSUlٜ;k$.g o}ZZnD7#\9bbH~)W$66Hf*2e 6HaU/H''N!ƌ|i3|>jwmjggl|^}&thm? J~_iN^y6ҳAC$|f7(((l{ڨb$!6} jm\`H@`$@˰~ NBjiF%CF?<ŵ8}HhؙOӑ"&M#vpy }]Lu8p<2qϚ6Lgߕ7prd\w '" Ijmv&f2[;nf6<|/R8OL&ZNF #9%-.f^`~e)I3 k%IO?%===H?XPP){Q 8öQF!9#QN݀OjV.HCtd#"mɅTJ5jJp ~!b_+RcM f`6 cr:ɓIEq8d M']ļ1\ڛ(6__7;mէ/&hҥKY`A'R32SFwEE@4H vwYQqAu= BU?ŸkdDb);w8_|se8G |=IɃ@"Fֱ>~?4/?IR)BRH8cRPb4`M ߏ߾q݆e8..?p'9qY;"u\2hlٲGy4y^Rʷ?>> 6lA!GV@aQ&;r3Qy;1}zKߴ##1|(ZZh[ ڎ #$7#X4 rC`&\ 5[ ¯0n"i0@>_É!/o,ϾZHdrL8 GhСC2e _~9?<[neҥA$0!3g4M఺j rϧ~;#ڥw_5O崙Vk1nNJYyS2*id-#&>Gq1z88 Ԍov\cG@\>:v5#vC|PPG| c\q1ǩOCWh(7#WJ*}.ÊWsTa?ڍJ J 呢29<,[k׮ԃ_+~C䬺K,aFI+vүt=n/Ko%-΁wUn]_h|=DƷ5i*7[o!|:m:3q ·~ )3w,4ᣈ6“x/~0(SZ|;򡮑>3 aTE5@(_'=7>dznyvțoi)]fEWSx'ۄ z_-K$i5/d%'h۞z?tKA8]sF!ZpUӋxN7킔D\O8ReFшg~NHmEɱ+|rg&yٜ}NXkVD!Hd((8ҾZ~pOʕ+2emphI02O>*\plذ ._}_ūyf~;zR6Zsi^۠i5ImmmEe8 'a0d-X/22m,÷vHbZY@[ Ra@'L ^p x/b;6(p:q{4 P֫#Otr{i0 We:tUUUjYyw8vZ 1r:DZZZp=d۶m 6aÆY՟Yf~MLj}xѲ~+C p hm#p4{iY_q M&39 _~$z$p"!ǰAHU8ҡ 6HNW-~}#s7PW>}f#5u!ϔ q82h=p 1˥LN޾_̌>de:j˖- PZZJss3^{mX9Ncl;vڐ8=>ha„ !]q}voi'w4[>Jƙkx6cp$άķmEӺM4OCۆ8\nÇ8TJ1H6n)Bm8} mcG0)# 1? M@LZ:nCx<*c՚ĖGrZzzYdbF`k7iٯV~키K<|xpK CDiY=ۍk)}7h7 $ ?m19rGm8*p{bTBBb`q̾ALDi2AgMmzrvmoߟ[fyle˖RWN^-W/#0kF1IZ8f^glBxqO n7EX3q:}17Bs3M}ob."57nz8RU߇t4^<1m^ZE<-L܊ݴ4 4Ϗ nO RqMG $8MLZg|IyϘz}6:f:=`d[AkȿA#2cN-WxӃYoVsOU83?Qp;rxOS{b0_m{8H$MǁHiSp&'!5/Hr1[*FC <ѯ/?}cdgJ5N6iNÙ/b5vwD]|iʊzKvU,_Ub݇#k+FW\kd_ 6S}z>"".}`~m ڛp&$_1(8bcNH**ˠ-@e3Kߑp |h!p厡峵o'qNuœ8n+?\ŴiBS R'QBSxrhmm=`[h#'eq$n9sE@ @Ƶ8GÙq~?ƣ4^o1laS>';T[O̐a]}3LE:<8B8蟎g&|Ӻ-wr6?$9CbJ)y۹m;l ;pYGhHNWm{qѾVGr4ozݧ}VhpGq>E5j("!r|As3$G#aܤWpeRݠg|;H^7@G-d;o< ch߇c\G+i0Ǝ$'[F悅;N΄D_7ilo< d4\v.+e8e-\|]/B?!8R5ժ㈔d3!U(M-G o@ v0v۝}bu-1:ա8h4ĝ7aߊs^|q8Fivj6%e%h>z'ISS3,f8_x~beN}6nZ~t;6v e5ތp&>.w(9#Rq$$RQ$ Gב|LB1h޷!kp;YIqI Vۍ{`\ò啸G +-"aX!C⌍dG0uڄsbCI3_:%?b111477G4kl:Z/lwm̼&!2yLǑG\,"6IƬkh,O[C k 8\A+!ߩ {x)>_M-Fէ>λ \ h-L媕$N<$-kp%'wIg[/SRRʐ!Ll!W}VHQah+I$Fϛ~8n v@}Q|1 p=$xb8 Ɲ1/n!;)gYY$T%h}MBCSSS2ٱCa iwd C>jTy%dۺm4C%?[qjX S]Rk dNB]9,SN̘a#2ꍫfX9Өxo)YCrr9"2NS4FF0/MgT&z/JJr/?2iygkE`jEI [7X .Rg_#&@}_[GLN6}u#3u^{xtκ*5ܟ292becmg%i"Tƫy5εȈnTh䌁/\RZ9Fw/S$iܾUR/ޡÑ~j_)bǍ$eRU 픿GҤi.?$HI M5lZKɬ^𠃳N8&La5F$`eԶ*\YzI%+.@ƠTnΥ\vx𗟤qK_|$Q~5Ups͍M J+h9z A$ϙ|AGJ`T4HMI;Qc$NWױooQ7ꗿeA*ve &sNQ+ԝ6Y؊Mb%N lN`ܴlre}RH#'q4Ұg,ҮWtL'~/9G[:7~W^OٲWhkiAϸ1c _lXELA]G?=I,FŋMղK /Z)/Z 1KŋM2<Λ5J8S'+8P|@Δ$U܎bHH>ΤD3q ‘|]/<1 ${3;Љ@O]}-%֓uF rzV89wO5 ^`(v7>93F0eHm͡q 8_{xOŕ3Ds^/f FS/p&<GZ D~5u;bs9Ngz Y])NaK%I 6'FfY5ÕZr'MǤip:Lp<[>æVҚ)8! oᣜ3b|y~FP)Q]YKKK+ o3{匚8;DS1fp uγ ጭ+ $l߾0~SҢ늆ŋWg'VxN5t0!=8EG/I7_2U돸.GJj,{r'x"![5:l\ViX)Qh!ZH]?o"sn:/e';ٿSZp{vB?@[>2!oaVꥤ~i̘9>[#'JdbƷDih ! \u˅̼j {fÔn܊#)GTMtMM\ː1Vꥌsl޴Ҳvhoػwb!ĭ U o>Mcpzs8 EQ$fqDc]+G) 9-c KR}t 22{?ЩEߖ|Kƌs"wI%eUw6Ns>i;:.fHZ7>"?U+MwLE ~3u\H@:AL}; v+e6` ט &R޹HOdffOb-BKB(H+YY\\qz/#)\1\V.6 ;ΐOmize5w 7hwo$dsz$e9rp0ڴi͵Vet5 9_J?φ !tx((628 R__͛ѰM"uQԴ|r^~ھ0PX lذ!6zD e=ihGSSS͛70`]i_~"jDne]̰۹ ݥSVի'NР M61zh6o=v$?p@^^^dSj߱c9>`۾+8Ki? G1W\`߿_׼477lFuZzlg}M6m)9׿u6o̴iBZ~#VΝ;)**"''ٳgΝ;YbEY2-_lK7вe˸!'|JoztcN8Ѭ_+FYY߂Ӊ8~3ϭS^; 111$˙7oF ^sq8pdgʕ\q!"//B&M{Kqq1gZu1^|Ey )ӟ43B7>}zO{[Va$0v| YYYAp'N5ǏįӔ${ 7z_b$&&v1cÇ׼ѣw !)555!S\\  rXjjjؿ0rzGyg8'里)>ӽ^gܴ2JKK˭>9evŊ4SNeΜ9pOm5ٿ?YYYObbbp cƌAc9~8?ςi裏رcn[vxk׮ ѣ,^zjV^ͬY5kW7?BjժDvvvH/..&%%vbȐ!!k_wIJJ ))) :sv­/s璝c,Xfǎ!{ꩧ3f Gfyg!==]w h#IIIQ[[49v ⣏>bA)-++ JC֬YCnn.AΝ;8q"f yyy! Uh_yyyAi!K'y@_\Ry[@zzzX@Z @RRi ',ed gO5&/u(y#F`Ĉ!HHH`ȑ4 2$>r@P9r`xΝ.K ǎAi!)..F--i3dw}TWWsϱ|r;C(z ǒ~d;'OKZ,SXRE۷o_~yAA)s1JJJ3gN_PP@]]]0/uTR4p Wf„ AQSS2]+_#ei`J ?<,1Fų>̷'iʕvZ;@~Ʋ_0̜9ӒbRӊ+aϞ=nPֆdֲaÆ ]^KNNlLB@PXXHYYYmR[ޏvbլYhWy^}URRRO2OyJرb.\T֯_ҥK3[RjUkk+)))̛7/qZza=e7~:Uh+^<- O={\K Y;v,$&&2x` ?ӹ D-ɾb |MFѩ\YYYJsf͚Ő!CXz5yyy̚5^y啠 ( Y|9;v`ܹAp@䁜ϼyHNNJ ~_[nsW^INSGrCeeү~jZJ2p}}}u$&&f8w^/f7PMMMȠWkjj3f !k"Mk׮5G긇z(6@$'M>s|'j  z~5_dL2>iڵxf'?IX*%;ѰrvV*ѿMpXɗ3'Ge\$L555@"e)ғoQRVVFBBXJu/4z?qDe{KMvf\z饶gTF-g_XXȶm8x pfNoVP~n:K3ѤVWW'YT駟v'M;$\IU=]ޗ>l(я~qELvO>֓eh]Hׯ3K4ZdUz~$;WZpV[؉ gHy|QYFLV^jp+i^uAe'A J2:Ƌz/477wR"D}=⮶Aus8_fڸqcH?x]---AC.Vź1 $_v;P&->xWMgwi^;SVxE[5oK,]+mmmRD ʰrA^5Kv:OJpO?蒆|Up(zZ@1&t1@~\1ܷah̀ZWL[n,-xKJj'C +zŋ$Fe˖4'''Jʯ%dE|%FFP򬜵NjnD<,ZL]cm6KF:n $y~])"I۶m^^jQee%qq;:BXJ#,   hq:ireͤ&Mr`UZtӖD J<\ve}pH|_^̻Ӻ ЍdʐFPK &۱oa(FzB1SN%--;#,?#<Aa}f! JW ;D 2ki[j7n_Ep+W@$^g=ڹs'6l ! KDžFzlQJ3Dw^J)?OiEsvҥlٲ/CQUUEQQ>>2fƺ_>Z%\rYN^ l|JVxѢEbA@BBGՒl||<7pC FQQQPd˖-up {Þ={aY?{キWzHףO$JKKYhO?t ~+TYY /TrrrΊ)_8c z~e{Uի #޽{gff 1?d:6C 2rIkAӢT$IψV Bַuր2dddRD477ң =N^}_ v :ԿqĉD$^/Ihhh0L."e ;<+g1@c:p@|΁EWM9H7yC 2 8Ph j[2`z|"!;8!9 $$IJ:zh̋ ^9xo=a 9Oeߞ,l~9$/..>@b>HD}}=Ӻ u.*QVV*5n,!D-N:"vw-\&%% $pt:9yd:uj)'aW2Vw-d!*nm3I=tPs8;" 7EՋ曻؝/ @t@FqvFF6JKt`yEސ::@D-)DbP8xk)_<ۥ$eʎscS]Q\K-<]T" >T`ʣ-RO_2fۀx:;f2uRШc<7f@f`_Y TSc&-?GG$_j ң݆?c=1]Iutt(QвnѹPOHW⿏Pt _RL˔O'KI5,>&Oe'/-)Ix/2&m\?፻|%1gȊzI cxݲS | o0&nD>j5+_Bo-ҡ|'%9Mfyך*/qtR(P ou:jХ !,dUt8(,$FĂ'JPG2Ph OE$e4a@ؿfOR@9?k%XH$e(x0 A䖵L?Κ9?ϮDPPl8KԊnlWJ1< ѩd'_$?*dî$+,+­TL!O/ƬC"JBF U4x'9n gV2ѩh FK4 -=::Ct2i|0pgxyq*_>i65kMnI6 'iԧۃ#rp"?5~+Sypj f͚% T3-TNlIL3S= K @f]ljlR.^$=o54uUғ/iE`J_̊ĚąlɗjAT`DLj$]WCGG:j<Ƽy'xttttttttU͛/s ]\GGGGGGGG<:::::::=ѹuO3-ϛ7˥sE4`KK y.Ne' o*p{VKqkP)KtSrts50( C<:%C;:eEE kκ8)S/xz˪STtt)|+9];]%(GxbG0taS1)]]\BHG@tsyt΍.lOt!s .pnl]\GptsQ5 ].vtSV ]G;.ѹHD<::2ѩ H@<:֝ʏ.rt*;ר.~t* E;]\J.xt4tSEnѩ TY/6ovۦA}BCyW/TZu.q\ep*|/oD ei)N?Yxڥ,=pۿ>}Ӈ <KJ-rO_& W-cOҦv T_̧s;1g"*uE?:Wr=t(f gɺuD<Ȏѣ[__=0&EɷXxfgSu$N5Q+aރ< /qn{^T**-jaOFT}s'ǿ@MeTˋ}:@ߧoϛv2sOŇ*^R.WEuKy~N4{S^WG)ӽ^=7aзQ#:pی|mu˷O(0*^)n bSؤ袗Zw;oېRUZy{ѧq(BKx6렜p4rQ5KM?T>2OgaknŏN9pbxd'%0{n̙#x1Ο'9vwcb;}lZfո31iML$GU gt&fOP}n(#J•sGGXs&X WDfz6GNjIJlF^ x гI}RGFuiS&SWl$R 흝b8Wef9Hѷ;[5,gzqwtޝ{^E~׶9荗I{T?=k{Y9DfjԈpͦR_]WMp~~N˖j׮4 `ɓ1BC:7m_CD7vĴ1* ŋn-[|9}7]%5;7m"8ԭRt(lƌ!b`ѣgl틷̸8p!YV+rK?Afѣ^=fsEa ,:p-]qK}7s&b@yf/g]ŏ߆FPӓObqǷ3cAŁsx/_{oj;{c2Z~޶uj2(#.Ok֘Udbc<=/|fFڡc )0jT]ܿu,H__o„|q7]ۯ'{{د9*(~Fx<׻{#ǐmqy`NL|;51mL^W-%1ѕ)l=@O4hXSW?SbWYVPX{w~6᷄=}m?owExw@/kۂ\;>}Rh]0} W3׿ba`릗m_6?.$ n-oly Z b]ΞgӸ4Obj:]'O#9^*>xgf/$xbgS7o)_?ԟA,}FwG26*)"xlRbUUl6v=˳m2H6ځ PV}^ //2/K˻bCPbIɣm<@3ᏽn]ZvA){y1<, ˻bxXU=/o Hq@W,f3^M??~^ v{{)>^P3}vʌ{q}{ݴ .ddA|fjمX:xm+Z)5-ۉONaQ4V _3a2((B>Cfnҿ?<'޻-$vԩ⇟[Y~F)߱6?3<ڱ-ɱ?s6+gpE){{1]%=w1v]y xدO|=%_gڬfl.xh?{|V\/ǻyK_qAԯE:5|v>bLl?lV?P׿ li2qj&^iP㡛[zx |c So`#\qα٘ݛone*pM@G#mC6/wsM͙5_NcXOtkUueS%)YYn.XoΧi=奌,$qBfKĕ*|hiT];K o|4c GNr=vu Zv4)to\m?/6k{:Ť\Q.+Ej8]YywH 9+?sK]ʢ^*>ׯ续[|9<ڮ{l00IV |922hP*wgT۶òÝupwQ?> Ƕ䬬OrV> K^mln;Ui OWops!#Em6cdm;Usg' Wk՜C"։Rh7m-!>9Te/Z4aQL]˹AUз;:|]?rnp/oy} LuTajx8S9Č8&^A羷֮ͭߏ*% |~='! Yu\QQV{lŋ^ӷoRV Ao).o5|}ul [kXp.oF=A}?NuyA{i-ЅYM.ef=4jc*[< |nmY[[گ |l='!U-BX܈R+ƎpԹ{SQjûp+VI际^~./epdd4BLy{kn6-x/SK.xyz)Sg.u9TNdFE!6!rOdϞt]4;sFA0LS^gu]'NsU#Q@N\ĉdUeK^V+k/Z58Ǝ3tG>ZDtSy]ԭZލrGeZ{{8xyG~R_3IMYq@uyqzo:svqn?$s[U/O.bON|aĝt0} `Q*^lRSZz4_ỹt9-ghV3i\~> ֪V V?J-7N0;B@,fV8_jV6['pإ%x2rEOfs-FJ="nN jp)g-W1-kI}oH|g.*н;6w.[9r"?Io%KM, 5/7ofJJblMH6cc4kǡ$$&ΪUH9vʃjv {bk|nLNf=w3nRV;ݻ0!9oObs|<#թ8ե9|b ɩ?v;ɠ-6&#;`xF͞ڣǝ'.^b<Ƣ}\ е~]%c]IMc=3~s4"ǒ.aU|P;͛m'/${2ԯ9|ซۛ2(W[nF6j^ kLשnm=Tr}m5 zǡ$$$΢UH jו#dNqt=ҡ^[59y'%{<_s\q0ٍs<V<ΊG9cRXFo='6 xۭeR^ q.;Nxfeh˻4˼l>ɋ|8MH qNs.UʼnK9tǻ/;؅KL[K3SuU"Ѕ O[KS,1ȕ+dZ4Z;u.ڐ:uBJW[%~ժգ/tシl,^T|L&Z֨Cн^Rp5kF:uxvbB;f cUk$pS̺~,|¾V5j[D/۴i7sSreګkLSl[h޴'k|^"Z`忖/#U ?: ɧ;wdšGFo÷(MRFth;q$)1mѥ~]Epb2?EW|5{ho/Y圼DČIh5b6XÌ[7YAjV6֫Twq]{g/ҸؤS|Z6v]=r/gf/tr*>f-kǓCH5sh#V2LJDyq$׫I}~ȿVrg3xڨ.?v _3[W-dshb^I3 KCl]D*}x@ɂ<z}:o{6科UfZmkOtS~dD6;[>ļ0qIʦn*|{gQjEb,e)иaf͒ r8o<[U/ Z27F՘ʿP>b,.|JoWt Yk*GGBЅNe ZA]\֝ˣ Z7WZkEF<+)]z㩊9*rJR.ts] ].tt6M|HJepm,~ts] ]\M*)OA[] G>Э;BGjqw]\zB;BGjPENae+ŏ.|Its} 򦲈()?W#Qf]]\/]7I@b'PTgl"‡ +@<7хNyRD~[` 80JوiqԵe.tSt }!@µ'vȯHʛGYI>UJt ϵ΍h$:Ee<OsxyՃwѥaR oEU/2/sjV6U__oF;f3LHLmK;aae=WZB>Wr<ӘuFm3fm->9"&-Zi֭Lݛ>?6:M)5ʒT)1(%ІeH`EWR ^&#֡LҾeyST{Lu- (]X @mV݂+RPѢ4e/O\W6JK]:ݻ2gG`; K&1ލ!iRiě=zpWǤ5k71U%ߟ:7 ֮et @ у \q=իK <ƊO-jǐg7ul,/\`}HoA =^z >=(FEa_yB6?``HM|zxLde3/ ɩ{yһQ&C}|i+YS;׬1zyg/fvnx GǜMM#O۽%t_/ꢥ;v)mqd#%|/c6s(5|ܾ%oɈq;TɚCzu,YvjSԨ6_>r k__ˌ$V*)lYѢQ&z@>U</\֑:E/[ƫ],uTzILD"ܥ Ee7f !ΪUj}-ZÛ+Vp̙1[=vqRVѨ<?_KhP* 鿲Y-uksBc-WS7mCGڮ5KUV9UUKoĎl&nєMHȤ44O?$gfN^|d-\āi(Ξgq")_GQw׶9N|=9MY#xL:p _3k)iOӠ>_Jj V2[ ً߬0 Dn8r>Sgp[P_+7qW3C,j~egYFsK9ĘO3FgR z5<1Ua@OᅮdwQ8{MhbF۱BR2/־4*_;5͑wǺmMD;:S{f2E!ȢdҐ>=:Dω"NY¬<m~!B"J-ŵT&S^MtkOQ.>$XUæSxt|M&iqnЀZmM-U!ChL@.Z^L ؤѶmi@j{-{Q׫S0ėwŲ#y:XUө|y3ӶmV.p?/+_,PVޭMWm͚̎dbʆ Y[hXݟ .=^l޺'Z=:Z͟5G V:ʤ}xm+VOP񋗘UhU+ud!F)aӉS$$L"l0̻wMHM,fˉz~lאF1gGڞKדCM%kyc+^ @"9Vxy zybT,>ľ$Ӈ]` niW'^ %3wEp E0UԨz+h#>o i^3OᅮE[k^ ep _>p-yoqL;|2iP ,K޺[+ݛFCڷoa;>f&EA^x(vڮN0v A[ $R ꃯ* kFx zԯ^.gl[xs[b/{9<=0Kn݆Ғ;[5hPh\5eTJӲڑPZ?ݷr&8C+{>!BXx|?߶,z|uw ;q;6t XzԯO7w kGXkrsÖi kݚ< nuYPzz7=$&cFԬIl||:4oM4@PG{5-\`qMtϓ斺0(S-ΡuҌƈNald& gIJDJɥ,u?"놸m |Zj뻥֌v(  7ЧY(߬-tGQs~n;At^Ac32K۪V |60sy{eWgS_ڨ.KQ\hrK`Rz6dWhItQx:,˕Э=eJF9qb@rV/aqE*U} &_w[2~r==y];&``@&560~r.ddРjU&tΨmuH__L /q{\\ ~Gyxp+MQL]˹AjUp[wFݜ[AqUZg+et/QQ2HԄQߦhZ_ġIuBը2,;x Rųy:K9KOYs0_JW wgWr_8BZ0(oy&-Vct4zz|)!93?~6~fdQ+.eqnL4wJJJ/hWx~ƽȬGw%9/EQ`YDrF[zpOmng>]G$⌻)v22 }TsreuxYq(=FEgh}g9V<3]n)o/j|TpI3K;߯F=KMWrt9nBzyңq=& *(BR+snsDLzv[,qūY'!l̗n㑓zYkV||361רlyh~qiIOwx?&pq8b!wUv_ L#/Νt^YІ5/7ofJJblMH6cc4kǡ$$&ΪUHW C@rVYȴռ7{w v]x DDE!o| >?$I䝥z5,~=nW>Crb2?/ykk۴1K&dsQQ֠VUZc}/o.\cDmËC?oռ|O&R*]eߙsڲ3iٶwScȱ j aX{7w)~з;%1l\i'&}+s~nBkӧY(/cHJ/ h^3o7,g9K׳|.D%: {g{BU9x#%>/֞;wLcV>-C[r|2<<$n.յB)J;cf$0E"PPnݺ)ѷf߬˃nyM۝ϗ;q6L9fKh]dR2E6+vNxX1XCmH7;yWOvvq.fD^S~$3J<߻ѥs^gf/Lr}&|06 &{'/!d`lN!OȊG=GFtjûzQc6Ue~Ϙ:ePX3:ً w 8; e<3å4zN*٩qX&n۞Ox5%oq9±+SW(?WSiGS`ӄ!h"TԄvr\r44Ln)=ERFi\C\bG*SYG”!v.VŽ/]:E݅mqx M}4W*MV9"4]ȣi ݡzU6xVgsDeP:eAe4JKe]VMrEF8@wZAZEâmn619j&-*rX-=U6tW>t Oe2> BJ,:I!+lE{H~IK>|b-|8RٟZ֟n8:eAeʒˢ xhi5j$ = nO:4C#"8EsmNi,!7tkSo/A;Gܣmgb& TrTg*lF AK5LY@},Tʒ|}p£S ET掠,Ŏ) ]-9fHDA|d[J[>`>hӜ+R;6< rNIfh.jtXeOҢ 2[wtSbl(vtMYDp-#eM{ -q#h^eWR袧tCuS0)-7ЩhWKqB.)Eӈ8,h8,;&)=7G<IebGhb;p:<æm;FrML::∅kATvn0ѣ-븣ҢmhՇJvz+{W*虯 2ި7ЅSN\ jWj)C}+;WÝ,uZ'ng.xt4n ^'b-/qGg J{IEO2/ٝXjO[u.S.dd0{7cK5! ˗q B,(ʐV=gf!!%UJjWc`fم'D%_>_PnzKv'qulOTQwbBk%o. QZ]g6}.O(Zi;?ɒ]thR`ꗤdf* e lהy?peq`|VOqG8=ΒE<q #MTT(>ǾDDC8 [B(V)te,kʦ2eCRcz*{3\1=e*xnRmmnۺ~_AbzNF`~^-&?dPe^]rg<(Fde [ܓxV~b֛ -*ezuG|N<2lbI 36e%%||=\NӠmeެZlOM阍R3χ%s~WUɝDM{-5*YveQ|e&lg/`NFMѠ0o)8@T, Qd$~rHhINauSzaeTvmeNhߞZ).]s:1Y3|Yi>^@С=g'brOu+ ?O4 *̱DB3rGz,}Ѹo1q%7GvUXhZ>'2. LlZ˜;iBڰ3G[~Z02ZTj[ܶ_1avZ<~(}sam)I}وTr]E`dl6"|WU#/kTVs-.=ʘC4^npז.eѣdeQϏ7޽2jŒg7ul,/\`}HoAHLOww4EzNc=ۮ]|aSSiU @ -nٳ+Ջ ݻj}U  MwfN`TT#3Z.ma "fө̍;\?7Y˚CǑRr[P>ҏ:~δ1N&5+Vx_)rc%rJܹ/=a͙8Z ] 0M<3{1_I׆e#ξ^˗1wF#jFoęfgY_ƣI/iā{M,,`PfR-3]L%QyuZ:# r.v% Œ)wWїFTfk.z*r Z~bN1CHLOiJJb3Ȟ=&6ݙUxyU+vͪ#5cLb7lf/&[!:?r()>댷qMipEWeи{Kl;u.podltrQ;p)3+<1;vӳbB\d^ ߯Hp$}(D?3ͯ>A:կ,{ؙb&^әo<{,gg3YWe+s(lVnJu2i_6?.6X(: o~c)m]gUJ?LO=޷0%"Yx.*[!慑|?n&+*#:aζ=d溅Ӳsmn :$:\h䛇8wSc\FTz *yc8st'mn.Ve؟|4_x,~edDaXv%l0k63Y3oF$ U0+ Z,)/5;f&ϗWzv)C8_W/eOQkңi=kۂۚ6puŇFuh_7 sfǩ3VOqƒ|]=tЧY(bLV;Tv6+gL_Meƈ{M>|7- .onjLJIjVvy whCZA8}/c6Cɤd/0o7n6^5QĠ,f@qZ[3n~c]߷AJID̏떾80e} _B]*ڲcS˙׌\ s*7,g"x箩Wmc`4#˝ b4 @c1v8͡!ǦJ oKڋpkԪ/ϟcv3Aw>y> )77_SAUi^[`=m[o ahD~!&wo}uvsEhx1 "5Alp=J C]T|G'bpEYuZz+\7r<[x.:1;ѢE7:EŒOuu$geMzV/65kﶽUn߫yym2a6ܶelc2.Y699 ({ ONa/yM 'N1֞8OvUz7m'=*;r>A;|;[4t 4 5;|,!`xz6sG^]Bp\wx,Po''s99&ΧPߏN j3nR@fto\A\9&~SL_ڶ#5W{n畹K;ӫI1V2M l״t]⅟fpVעcZ[|6skWSڌ JhZ+5U Ǻ'x߉݂b13=~w! lUdIfI*Id% Add *>)qQbN?{:Lc5Џhc%4 3Y=:=e.x.eeE &qGi23otlKRf۶剛qu (׮+{ԫG)YS0|}Yc*Cy:խM.dX蟵DY{wmS/vPRz&RBrflgsKgS%VURF2s hsY Ngql"8_o1owFP!̊,;Wnbvn؀``@&LK{Fږ_ʾ34Yy(ǎ(0mq`d綌s9 R *V1O-40ynр۔k{U;?24['Y3]zU &_wK2zmpo稲">BU%{0EFśv7Sگ0ѾԪf)煩,4>[qƼߢ} ` i4;~:6Y |v724+m1Q!4B;3Qgy\`nWxz|"'U<=ݶMWճ# k؆+9S͏n؀܇KKGRke2]=vm,[Ȓ3ܾ_Lڽ։VGzLԧcx\$ zUzkmi腋~PU߭}mZN^m.M … ǫr7J}~oWe8&WJKU~ޞ4 ?c]ލtu;9v"GNQ?*&dŞ(B`w)5פq;ֆylj3l>#H6VQpn@>G9|&+8g5E0iv?Rwsto.pGYywOӅ ߴWg.徏~c\Syc',YwVܸf` i .Ysbm5 >%2R+2ѣx`sR=__0{^s5:hEUL{_ܽ{;d V-4]ڵs>\sR65||ͬ:v'ڷwIfkB^!T)Vpra\'noʬwəY` ]e؇Qp?^¥TN'rGnۗ;BO7ƣ'#{43hTݭ.\FEK<6DܦJ&^pZ dHJv˱,{\&j%=uh#K>x;jW5/Fچx?z5 A _Na `|f Fp_OOn- WhZdYGn;vϣmfE,߭ʦ%Y;chB)OgyLxL^. rѮ|&y+IJuQڭ(;v4!U,ĝ:͹tS\6;[P˓璘^MsUnZ0-iX@ݕ2s[>Y!`KU*5s>Otm5yWO^MЦvM8yB;ȓ9xFs%K,d5Gg]vX ӤrSAʚeذY9VޙFAXk9?-c;U(Fº}'z8/_!`s1dV>u.bd6TpJWsiPӟG,tF3o-mXd䟅,#tPYjfㅪB}Hd|Չ)h7 $v5L+Z5)zL;Fs1ǎ.&fH-YB&5;Urn#w놯lեK2\1#G }R}^@tɺu|n |mx2VkLz(#[rΤ!whȸ;ҠzU{߭SBUyxz0wHqY6vה̱ *+w䊧ُE_+rN&%aGļ8K*=6yA_q37୅+y>xe._?ԟ'~^@Om6qo4^[ Wrg3ړ, YÏc%njtխV'g8n/?VAMөAmL%y*i}X6xWnд߉}ILF:@5ٴmЯp;DbWey[ILOW#ÑRU^q B@5/*xe7^^o+3ߑw`Lc ?aYƼH;rѦiXP~ق&ڄF"׹q\p jCa~'(Dڭ5ʋ,!>@.E/ʾhykqiW]\!טf͒ r8o<[]ks&ٶoη}kaq"uPqKc0Sy ?  #z/  -C F: !hQa)B{.(?~#i/Nu= {^RbkIvE>EAF_-z: J*r%]Mb/S:'>$hL?>Bp({ER| @CʱO(SrBB((p!!XP84_9ӧPFrr?-)>EKyOTxeWt.xʋ}bGJNS6vY {N hS bCa IsΘo< DMd5GH wEt1nݒE(  PC '!Lq9V*s9pX&qCb11 ?WH{\m}y ]\p/Y7"C,LVpfəH8r"I~ x$`a]F84~p+{^ FhW D8b ( Š0KI؎YT(CANKOQ~-#%iE8pۮW]J.ztS\E蔔WG-ipxhdѰZ`7e:Fҝe RH ih):R"%~w$Е-"򖜉^A u02\R!42GgVKѕEC/f 2r-p82~|/3hC|*9Zc]A[2KdH_8 Q[*,t8-,}ۡ6v.-m֨|Z7.vtJʍ.v*)vOs7|7}Et'2*ȖaēF+XjgkX49#ia?w_J>˦$oZ̫GO?[JJR".'mo7/<zopk0]ɨeikmz%Fb|({8/-`:9|]>, !R"هE3,h+E6LFA8S ײ#9<>wd*t04§Bd0pscCF D?G;VuEX{ZytSȵ,K,m4ysu2A䑝H$Ѝȗa1D{| hK>iG"G ]ŏ6sX?G9Wm*)/ h.ġ -4h,"}M0 Z'y-*:Z]\kbGe))SJz;F/, 0;_}Nt4H IíkLt8;$niwQ$-Y(B j-y&hD ]"Mf?aD@І7htsޣ+%oƯVJ$ztSV\ _;:Z}8e^±$ebERH,!rj7d *sL)pb͏%r#x kQG]&'etNjd8_$2'DO'2w DXx+k=WK\u%=z.vt˵P,+R%eqDk“#'Bl@mUOF"@(θ±)gs0(}EC 8 @~Sh2m-h#Fuuu"{+Ӛ\`|HەkJE`9_IԱ5@~(<ڰ8pA ,`z@' $<#_EN+QQ00#&f!Yؤh6( &O*ݺHPFQsi*BQ1h Xc*Q!r'}'VL6&= xc/GH_q3%]),ztVeG;:E;#%vJX]`4D'Fi/*&2Ǔ_(OY 4 UU&$4 !'z̰7c= (YGx6{_+~4ݥs=p-?KCY !aѴA<߳@8ڢr*K'$}d"T0 Hr5MH)Q -)HmUuf!@JzV|cY9ρE11dvH[ztJn)-uNqN ,:,8r #@FA8&A9-3A(\CEueXvaA;B(]턮) {6ަ?)>Z+o-<]\kWJ+ttfX40Mi&O4`>r%rj/~P)r Fa pcjDQ5"H"-q^lw_9KB wVx*(Z|v %x '?¥{dXH[{*ϣ[xJCy)w]\]씌_ ~$i&XL,uGkhx.A׿&ؿc`P8-5-{p18b{$|U l^$0YMWw\2/sV=e͵}nlbGr\+4Bjq „ @v/n O**REmhq7B l *)H1aM.s( f'$Ad@91c7sr~x!c:HoX ^K㚨:.KkOE[JUk ]kAU@tk,J0>qJ`egAHEsAl*TM)QZ.r}7= s-<kDߜ7L)L I7Z_s+Sޣt D8(I,@kx(^OyG!~ʲ֟ WOeA;:Eq?Jµ$tJs׺cg*Fa|/}84 1]VA ŀ`d0:GS9bq "7Xcc@` i>he2L0xE#`9xR ){be|NJCWW閞\B +/R]FEZ^Mn(sQP)e?|0f*1PXZ=ˆQ1*&b4jF 2`D 52I2`@S mUN_x?]aӘ"f@ efyOYq5Pe!jS}\bG0XqtJR8fW [r79,$<0 .ZX}+;Bmߎ@Q.86P:czku9uLLM&U:J>%Rm‚zp\^.`f|GG2r.talgYcNA#Tb8WR ȱ)iӖ~!UUM X]b/*U^9\!ђ[62 %\ۺ"8#s؂r=o))eҭ;:q#6yո +wamQHVx`aAB~"*~DHq)Rb4QU5!\fGM(RMk AZ xKQJQY|J GW&SX\)EO7]T)]씗ЩS[ux˩XcC@ }8Aj+ɌZfPvR U}ɠ UUq;6T4ǒz{Ӏ,Az3;MqDW z;p咠G'׳)BM0e@\^z(fJ&\1,ݤ0: TVjUu~>Aq!R[{y/ /ӈ% wqWk8Е z[x*vT,é!f#7\0%v]+ړ:QTotKO[ytsŎ+׫)% ?Ҿ-^(!"~<+yCɊ*&]R.--.Ǡ hKDHQUu:_\HReT$VU単l@0Zɹ_i\WZخuH(F!|邧\;:\b .ⷒ˞bv](Pu'!ϮgX%\ͭdT TREV6TE&;VWh> eh,ŠYxȍف%%Tkdnӗ=3Qԩ9]](Q֞,tQMMV skA"F@]Tכ)i HNNlM$c $i"4}.(s- Pb j-L.Jؒ01Oɫrҵyr*QFXUh}  PPv tx"xg( ,%ChjP K咈ίW ˱'R3 QEkGw0SYr'y+)3Ndn)2j~NyV,,f>K4 }j iƲth&"Ӱ ,"CkƳ0\tZx"ĕhdѓ^R=$By-eq3+^iPC6GNF$r@H-6mFQX#$h1>!baծUIp) H!niBYDқ~cWPܡeA+hKE`qJ\OVR}Xz;Z^ =@We ӌ !0R pŚ=!LQ .Svq^LD;B@XZo IBf*LdXr?.w~agѾz! 8Gwct,$*^ mAQф"HUQGq~T4n?vἑ5% i&G[:6 DK χ(%}`}}i/K9[cQxone̋>=[x.Gi/.ݺs|m`}ƏLc6о{L_չkEۉ 쥹d.;^qp〳R0{?Qt r80pr yEO0Dy ̞WA/E= 0 &E8T$شyyPQQoGV .Ri_0oyV!00C$E\' 3X8vh.8B"Z.LqEZü ě4$8/,А@뱬׼[ d5;DS{nG`BAфME&05NKUf1 .W t''1&#'0`A1>2@ gtK[+~@I! f!2fFr(K"l F,*`6'hpq.4cxݺscQمNe<(%D6$=\%z5?ݐhs#q Ֆc``1] $9U0'P j1;wF$L>yff5k&fRelRsTڰIj+TT)ɒ*(H6v38YfXvXlfCU $ ¾ b(!Q *MX !ɱ;TR ՠhb4Cv?VEpA*)@4f$&teLִG1㍸ÀbFhDE|N3pyD;bYtEQvNJ)FKS̹yt OA\Ig(v*5ǕQq޸i>'hib6GpWAD{oA̞&`$1Jj Pn!r*b|<0 1$0mt^縰d׷ȗEUj"Q &T)x@8YdE l{;I74Kr`3 YC i2H3VlBQ!V!4i#$ d{{"}} äfddgOOl9Bh VO3Yf#&Loϋ,oO=Ld{{E'>dU"ϓ4/#>f*7Q1U<4&];y>,$X (L623gb &Dq$L$B+y- , ΒƢd4-$s믫P60`MA׿n k"]=UYJ.xttJBetaU&dHH&<6:ĵ9}"  @8$Za3Do'/8&s=~|138+Pȑ*Y6+"CȰ^წ9 lT l@62%$V&f9fl Jb#YXd䢰rlΉ.xȨA7Y/2ȴxAi&2Mdxe&Cf3yH2 d{HR3I5dyP-^Xͤ%!I!t H/=2'V/6O3V&܄>(Fmm>EFZ:)ȆtFF-CbNٍOETl9VՆA(l6'>"'n׏S|\n94ЂoV؇'&§gkp^KYB#J7_TXi)F.@TDe8c;uϖ vRp̵{T Z$t Јqb~<=F͍3>\!k&ab&܎w(13~/>%KJFժMاZ{?*(`rIP rAXU+.K$R UAb5Ll)Z"6J1zT%դ m*VUQ1hHL(F9F F`Bme @vN996dP*}C.6s"@FF/EZ NJ5;T)w wW澍X=PfaPP `A`8b #Ιc v乎)XpOk8p9$a ],9^)1^[0x>6G_wW{Ǘ8z-]2w$:Ge;µYe΀jnN@!Y 4%{D؇0}ZEa7 ߄``1 1/dfz]g"O> B~´8~0<*kr `fU"7#DEŊ* kt jіPlIDAT a!( FdDeUUIF2T`Ts0x0Α[Fg_@jUBXT"l6r3UQW" lFGuIՈьbĖCVFllRf_TJOa݈Rގ6[`È9yĻ%I5Ak!Zf!g H 셐06O̗#p(爳[xes Ң[wotS|JVωܭI Ys*RK!h4t({0Lxzza3[D0s);Y)<4 {Y \vj4? I&mXl.s8PUؐV6M(`4b-¨͏#  hd2 iA 06V+IVh!0i2a6bÌQ1:Zm-lHOGjU% V+9dfANN9aBA!m6T$VMΡCФYd2iO*V$R(d*UhmY()a˫g&Xw,N*|\pt\%i`VnGIVOs__,w Bۉ_@HLbS+ E>KtS)vjU"Z834l`fg#S47A4cll*RI1鉷7fo/^\A %OkE\ Tϳ|=`A0ESF?8"] Edžb2Vm@UTUHlaw+`4!jwIF@*ɱecSBhEU%R %d0 elˈ6c01(`PsHU`41KO6 >jL94MdcfCbTx٤J59a"%`6RjC&(vc"ǚU4(,6Dk(M;c'BLAFS{#WFs'2u8i1 "5\5C4!!|j<ОD IK)Z /G`X"ן @tJI;ݺsRQbZ:P9`..7˾Pt1 3*LF၊ų}ʽB-kП&0J}#QX >d3/bT-:TD5cPH ZFQ@Q@1P@X'cUs&a%fR0 f-ck,999deeIjz:P1۲10*<bS,g琭%'f-N(@VVV d( $ۚCfv&f3>F3AAT*9ȶڴ9TUXm*;z:;`Z)04Ĕ݀(9ZdxD3 sZ9ʢrC@D'K8la: 1rRH&Ax;˴y]kq¸[0Θq|:jhC[&w/p ChBz7چGkoHVЧ%MBM3${:8ZkH>;^k;~?F̏#iHG ~ wȋM?+">`;,qa_$vDSZW<*go1%]x;si7,ж-F#B!oz$5 j49:U<{FqQUo# U-G֨MtMR c,^q׹YCL}Y )g"d34%c28keAf>a ٪l@# 9%z %QnWѯ.O-x>Xn{'j@ I`5%Ќ`e* ,\[Ψ!ږpT-* 4!bQX1>#}O@q@E<;  Aih|6B֌ȼolTq|ܽCLڐPAVb4fD3bB4lܘ3y<~a;x(˓k_%_'οy;WϢi4%4m( ɔcw؟ OpOGzGXY3Y=e\$b2Ok*dX8KLєH̼U'[!I1$, 歭0nˊ9ÄՉ8F=d8A7QRBxQ€u,+'4ԡ9r~,$U@J{Fl* chBT%/^%8gqg sn87juJ[LlGCCټE*9F ?;Mh`\8Q8Q\{%H _Eoc.&/WeO}"~Zf=?)_TG xC| x}U->Yogx7uv]@(J-O"nep\}W=}3Ha^ @3`d49GAF Gi{CtS Km% ( T-6+GfjJBV[̝`٤sZVeEÒ(%ʿ(4Itl&+""&9uLFlXcCc=)w#iOAȹwK&F,6!b9#j4Q(~=Um5ԙ( x(6l1[ QAPģ-'L}#>]{{\~͗.+0@9 ·f–']vN:kΛκYu^oz6z#\;GDLDZ.oג3etoB|3k Mc_QE>'~QJ>P쭞`ZX0;9"q@pm1)F-.bKƀh +D9豬(1ViBWiiB7I!#*$<&&*˫-mldOtB3KlEKJ2쬘5iƪtde Df'ใp!9k۟5kU`Sιo|ZŦXb>-}ڿ`U=_yH(/xRd2o*3 lAl3[ vgS|V(&"fyz]t>zt_^+9%f{]:\s"Ƴ SRӐд# d>F ѭ2\CR-fED褤XM77#D > ؑxFϜI8n<tU -"`]!1 X<imT"'H uĮ:RC Jj}rVRY]wB uMdhFtI'J&9sDR>Ќ<`U34A hc$}};@#1re4;T ڠNGa­O<46 ԭbDYcH#s? ?S;jt8$.Rq+'pl6uvUzնq}_LԳO8OX&IN!'ԻH2LDQXYFgwn΃Li4OqQl6e8Lph%fziG֋fͅEbfx`DJ):!HΤOV-)؉" KH2Lsݒ>.+j~ԣTVs6HpEU!}²zy0Oo)Z+!X xKgt^΂}e3߲o>x7Ŀ!7#R@;2AV~㩸Xd rU]TBdf hx*M`:rB{! 5[3UgA흍h̰ +e)KUt}掬jHOi&]HXDwQz;{] ubKrXiT ơah :e(B]\јČH_[6%k(smWs?e4hx: Ol<97 V!e1.*~S xRr~ls 9mWwNv۹g>,<7F4XQ1t%N=3m% ҂R3x0j[$MSD4Lsb'F< ®h65٬S#ĀC>+i ^:jC R8`Bfr hӂZiwfFp$#D12M`6sl_d3H3F9*iZFM˦ ,4#F+rCAfRJ [*Ʒ^ǽx0$AJ+s  ۑcơ;a>W휚Zzu0odϫ:s:9wFs,jeFQu5Wh'X>IѽWHS2*ގh 9+iJ2!.vQညOZ6zZ%48mIː kuf=֩,jXi[}?C(F4'hqRJU%۪ldcd T@ %CLJB5tsHhƌ0?0cq4F#m\+uO"gWdZeMhYiiԞ/W#3WW%ٵ95WóoGSPzk:9u\ f.>c0%ưF1br)#Z?SK^B3&(3chUcD&")oEcE}BS*LMP5`*՛(O}kROhYd IZ]KOn21 ssl0'- -q Qd՜ !2nF!v=r;4T3GTЩ軕`4"e[Ɠ5VaxӰ;otOi[pn6ՙB;C㚻bzq)9kİzaqx_~?**tһ8+%teB^ȓf|yM1+<mۦtNe[<~B*=mf/7Ԛ{黎nenu +'O|$+'Y]9I?OV}GNI?19+}VGԳkWF{hfz5ayV;\1Vaa. D61 e#BB| BB59fZ}uC]_}99U#/7A` ;~ocڟfa-y%W2џ aۗy ouaԹi'W;tQ;;ꞽ1 {A㋾2} |l{?H;:q %iKTH:о#4ɂYUFMȤhBK™a"޺6i\${0`JTvI#RF֗?(~8Lϵ#z-ޟO|+s ʄHIjQ8WVu+& %Dm[&}]',ePkFXRq;;7^J9F'kOJή,c1}bgФ8Y.MQV24Ԍet}&LNfGo`ϵm<_旟%^oj}z]صtޘ:_`+t[{xȄ{ي#vwW{ey;~gi%U|Ͽw܎.1@4 CZ074!E`fTI*3-@.L͔ gwQ{{4 Z7`haUa4Y!Bnza2IϹiZOPϊj 0<"[@ҡ.4H<3CA'ƄH Ju,0n,晏-ysMрtzo1 MCZ44$IJS@c BC>j48gYlUg³p?pDZ)13r^=ƃWЎ=zi:];U lu=S-# +AwBiO?d8?Anv^dھ:2s=[pMΌҝ~d1 QF!0qbdƱEYce:كbϜa`HaM3M֮U}{B1ͫFϾ-ihgfkZ\JD.urk44Y[]VIOChgWm`A!q Pϱ*VMŇCS^aI3iAf:3!LRf9 60_H6E+H';B }FL#CH ){;I}\b c43T' I3Wyf_O[(o?-,qx -_7>ySQ4UoOJFo:@b:qiᥫ^dӃp up!xnq؄`G9 e ^c=1v ӛ-ކ+#Ei#F־ OL @ esi(߶(9X]]e5eVUT"*f =3]4i ~JjL8 A,>sv.&ZoO^,zLy+ 9fKޞ8Ǹa}佰8>`/GQ|Ef^@l{W--~;{qC-mݻlk9 pSZx̊'6CL^৷*  n`/Y'?] B I۬B3ZZ&YIlHv<1"hV[{mLӳ gvkS6gV|j>l%gךTj&d<^WvDz)U #m1)a]BDuQ\q%19Z ,3xz;$y;(BusR%1gy(@zzҼ QoU'YCO|0,`|5GeTO-Y=RϺ7r>:]'7SY褎\ [֤Q{ c'a ~W3I%ܽY᷿O p7f7>p('mW&E @(>-h(+~[Hh؀dRDf:LaUҴ4D$XQll Td;O 1]RshJ:`A) ̶f$K.aY|RΌ'}iCd!q8n`D`KO{7sꄹ'䎨0 QBhɉVqEMg[K&&%/D XLGcPYѤ@ l ! ["NlB÷/`=߂c􇿂>U\f:dgY -5#3!uo_= ?~l?On,< pq~zk:Y_ofJ)-nN>DqYpWI8E &=l",=G.|k{_PQnW/ w_Ɇ(!*ư6lR}Í($M|l0V]#C; KֲQ0> e\]~r%5Z&k.)91UP.-8?Pfo qoduMaaPϐ3'+`\;wϹl ?y)0I8 srJ;RΞt.J`*VLI}lۏn*K1-F `.⧂z>833EN\g^[ـZG׿ot[%9{ q8,-p7P箎ˎ= c=^#~p"0&u*q؎!fc$qli ۑHtJl6t]UI)zjBgshѤ'u%(2^ 4&Ĉ<˦< \E\s" hBrei,SNJ!<Ǹ}lk'?'ov"cHGTo/.X>:O8,\?oxQ~·ͪ7ĿU6ajdLdAFOY9oM#oȥP4sR` ftUOc35hĢ:Z7PE9>@Xw1f|pHYmd`cT|Zv2VixيN~elP<;Ƨ>3Vk?Ouao`T0 ,yE6]J>,4 s&dcCh){2Z7R-{0M\sU&-cR}Eم+; lYemlr'?gXTg}5_࿄۞b~vfz<kYW19.=+IxJX珲&|8.46g˿||5] E ?޿Bhi 29i9$DdeȦǴ:& ]<}PL ℍ8i獪 Lceԏ߳)1LCa0x@1p!sB$DVWiSfh>kZĔguAؠQ-*%#}{Όxtjq~sVnC;҅{;K(p(C4CLQh%`<^b =ڌu c,=1\m lg\T5g-ݎҖ88ľAdx:9G/r^-ZB@:Bsͺ|CWҢ>~ש޷9xToZK8H;ˮCI~bC2Tde_ʿhBK_փV@JT*V4\O>'rJ`>RG O&xֆOfGufGkEbZU:8]A4CZkiJ+8-R5o.[]6l#BЯ,cIЌiV&ll[R5WI:2.͏w.H7} svLxiQkǩ`eM^0uvGba/w%8ֵWr_>q ,pп]xގuANv^n̿8<ڐ}po&oo,=4{K\ǭOQ:d_o*%xszqǿcMm-0bEDLi/gfzM4٤ 0EQWBaKibC-sm:j.FV&L[r5!gX%o9u}M,Aic djj`M[]Z"$J ae"sAi2l{d7Ow,,^:B )AҊrA'O)f~@61J6Zy2wDۉX X"dB0'IJ@uG"X{(,Vꢲ1D/oj)ȵd"$nx;*`{+BpP=*.t ֌Tc;A`ҳ!xwKbJlOjk0uHvIa,]`ٌ>'VĤ0=)giPZP8hQiO_".ƆcLX4<51>6 ɔF + J'`v Wq;v\~r;,]za9-u3W/๘Y*ȩ krwv'7bؿfȷn6/zcro&y g+]Z=oc;sQ\o4so-%lBۨ P1|!](IdIiMOw-K;hBQFmD-7btuՙhۖӄvyPں NBhcI:OI) >"Մ:KfUĶYwaRj[(uUWFV[s"IꙤ.;c>6P^%q#-Xt> J(fA$r0(J=; EZVe(}ƃֶSK=w|7,ݦS\]~θ}S[޾^:ȁFpXf+Gҏr7q#57NsߧOWfxS>f9Ē2gîyP\NIWLpЪൃzF szER^c/0춯("|0cy~6n;*Ƌ3_f?^?/og]S@z~;N;5CnW:p6 7\ /\# w.[˘8W{_p%<W`<f'Evbwp(/bt LsrW6\DLdx 22 -}9r%9 L\ E̚L&>#NmE)9+3-ЕGM>(kĀOv%T91Y!#/gF ]$QW;O,ldp!gP2}䆉ɪZD,>3LV'S2i$bILz23=Fs #u=Rr e ',dZROD HK';ʦK6"Ҳ! `GHH(!go_zU?>)=NʈȜ̟I+ަLLԨ7%J"7J(J@ m1k?׌0 ѯشt#9ӫKjȳ"Ca jJw`y"ނ_?i!c6<6| ?QwTgϭz> [ PZ,Ɉw,\bc5 6LH&bxChqS2X#u~r^'!>ŦYʂ꺉@SWa!u.-81wθ顕UE~~?^>i-`aXO/F.-ϛs}rv;Tr^`\8y!|υRoU٩us-JJ>s:W=lq@?g36lQg:3n8lYwm4n+Q P?+g"B6kF~E$g~7Q3Bgu](bBtewnƹ1s=vkh04!ē-*W@<3+j%#@KyN1Xjؤw]VB0$Cd1[WFR+ħ4 1CC3Dd^7̦lS u =+.n[=p=z_.HFo!q>x.~[v`|XrPslvr`P@ѡd~ee~8n p / ||-ZoZοcz,(J Lxm|O\ O|G~*|>uRaFHM+Tvř (uՒY&hBJvV賒-0.R"O&4%0?o#L8՞>1hMжs%V6>u®VW')6WRGc ԈsZٝ!20UBɥ<%ֵIhaL3l،h=!;1AѦCL-"AފoU?]7 Z#j4VH ,%B3$*uC"svHĖFy򸒬.芑dq"+Uo}4)ե[ݢo7cfvs|J8p0:cυR@Z ɭ:yxK\YEtjxo[lN2-OwUYʿO,ֹ@gs]v;Fogam~Թ?5ͷAL`yj0?ed PZ 6շg60Shz׳̏ͬ/e=$M2c[b)ѥR|uVNvdduLb?完Ҕ )S3b,bQXVRPRT[bVH謎K 3ؔ@6ֲ靼cDb5IdD Hv'Swg)@cٗH/J?".,FLsx.>Wڞ- ƆqlIt'MH6FHF2%zWJ;Agg_vgZ_gsJs#GdY6W}6QC{f3/BoT+pË7q#p]!ߜix SfwEv1 &Tͤb3驪Vж-BC.LJt\>?E#2!cG? /%L2բq6geuMXޠ T=0E31tn8hpo@Qijד eH=}'t`3LuT툎fM͘w/l3/}'ݱO0Jܴ0H,ՄТlm#H*m1f&>< u) bU 2 (T3;VJ;Na@BWVVYO0I|"(mjK`YV$Ne }Vx,EZIɨ\07MX.?u;g\042iY?Xr2QY2CzaڡBK}撍͛YlưMٟOɐ\jC8sk&iF`}2.(OyzTrri[ 5leYv9MzHDOv{4wȤJa.lhFbCcf*P[u @O]aKgw/̬3+}2 nyíYtvg58p/7}x[Nx60[9a.4oSF_ ֽꉞ(_rvv}G.()r( >)A[y߀RLib,c SG|G3㺑G406Fo}IQXDReu{nw5k1yĈdex.}'c-wN=[q$Yɖɚ12r ¸Er2.@AB ˔s@ZE`d3ZqTV.SK h1!`,  8g\GA&4)C+Fʃh%eKt2;oϛU`٬)->vrp{qx7\>r %pǀ)RZ{KLv![0ٍVf?v-TUIr'SO>׻3 v;09-l?/q/ܷױ?/bwcH^DBq&Zrr){ 'gʌ^#IEZO@"ҎyXhS M$Fay}VjX Qu9@BrSWr z7.̱qaA41jIVf!6-l`c;.Ε43&n T웾QӺZ48P3ZYm45rlX P2 B14 8)&&}ĉ ݄CC K6҈Dvd ﳋ99ȣtNb ϪϧRЁ y:äPayj-Cc 珣96]pf98/쀗e?<>{_q+ \Gռ_weqxadK`kS L==#{l.qWaO7Yv&s5s_vs=v'Ÿ/cnIUS̫]>!9_nRWY[1g #uSA%ڼ- F`%̏ Ad,n^"Yҳn5Sgɥ+)}pkClܸ hRDwl0 ш2ǥie泡O|YiTKSچqQIS* TbR%i&$1Tl`\zi[r|#YóP<ᤳ]J3X L&u=Iw+nsp FM(D (FzsvPbS_u]ڋ=|;wtC4󧶺^Kᳰ,qϼ,|N;BqlrE`*_C޲|N7͔=aXq=a S@jnz)eچ66XtYd8,NJrb4j׬E&eoDOK`Ƶ)7EC)FuhV<y'qfi$6(¨8BTP&\p)R,e60bjM$K)SPX$Inz6#4$?N \tTq )*M+057+ȐU- jh֏Y>MR7tT0״W&I-sX*Ɓ 9׵v}] kZ[QAaJ2<č|\kCa\gf|F0 Orl/SJ5Bb Qv]~Izopމ<p莕:!xZUlg*$ XO`pN,=<w|_sV7<(W LKyRo*D)cֲ1`/dg7_Qop2jI 2 2>9!mF"1TBq/ct=fB+`PsvᰖP2e&% 3UtD!fO1j0'fxrTFKF𶕩[ {<æ l\a5c 4N$#̙H8qPP4DZD5BHxJkQO.ƔJByzˤGV4Yڣ;UFtm2!G#UI(5ږvg|(E%(s^k dS>uԹd^UlGwa v/}c>ѯpbŠux'`?A@TwrGgDڶ&zQiG}?B#¨FȄ "!-15>""]בq0Y"J#Ջ2 T\;@]ŲOG6QTτQmDdĤ!H =̠m ҸP5Fo609ʘQ |qNNV᪊$%hf,-!IJ*NtJԽfMc9M肷%sp,$'z@s"F؏3IˆE#'g$ԑjBsjH F)'RA6+4n0XMmK y6m!JvsuG68ػgW8r>*|w6us 8u1`0w߃&tݛ"ٷvr`jVXb_gaˋdGgT?=cYzVY'S=)N ޒBM~Aڋ'хbbC~GCUAB^2s.:a}+d-=+}bprұ{VrϪ&&d~ s0:!i9u7%WVe 1BS/(hוĊi1qPA7Qel5#5$fV%BI:N?Z=MNn*+.e?"]Du2&d=Ϲ0LӴCw};;8XŸrln:_S|A21 mpgӯ|9D3b;ubpd; {*;GDV>-cϋH\`p<"Gv0!JAg{f-8G+J8Mu*3U|䕕`K(fVҮ2- ظlTuZ#̸FOظv$:yQāW$1lksj@hIbH!QAW29g7Lc\\V"װϫxH=33Orrl. M,j)A-R!OeIy0U),`LM_U@M! /67ଖinKc(l&L] =>G@k- 2 uPDXV4oQW<:a(κxϹus~Sg3//'My+3cqpA(6|ۿx??_~^'Gd@uK(]?5{~ Do*N+|g JˏiLնm<y߾~?x-|m11b#ؗߌ%( 0LUϞS^ jb{>៻NU nZ|xB'e؊2 u-[S }j5:2Z͆"b5xύt8y$w(@Pt H=M@ȵ$1 ^7cC}̃Dm3pӒ%;`ad*_jB6_~X~c` %A$Pǭ8#cN|0Ȝ(JC,`mpY%;=VIPt[8 Ŝ9,jX{*䕅L3po C+ Bw, $%Z ggȯǮsitu+pJ mu [ZT`֛ڋTp3Q1ʺzEX! hCKGi;W}y9Yoyj1nǧ9E<ԥBy/Ϧ,ԧ3|b?s,NuG{y{ozϒe:9;gz~1r0p3t7dwCτL%0j[MK+Fc<5/eC} 39,@r_x YM=Z= j d:]^NuEf{oeeɄ~F,va wbs[Y*rҝN5z Hcl2V[0RO 4Q0eYXh5SwisA_jtP&|rK kZ(#34z1$e&gB@hi&=Ɍ'FTi4 LB*~1<1ze${d<MxL:'bF-Bl.-ƃiYB:u1Z˴&aړ7)!6muV2Ӭ<,(i# 5'dl6եZI],@iiiυ9BnOHAT L"P ;p>{ |1ndq3JB t>Q+ûObDžA𺋣96[ >Wίw!DbASa~aoOڹsz`^盢P '~BI`|T= QP|p{`ԌhFdFUM&,FEADyh-M3b~m $|ܴ0M%(AHWǷ&\NSAJY`LJ k,ѐh fdra^&H ,BS0Y6\H 4ܧXؕܕD'bkY_yΓ܃+*6%=6hWu 38"4Dh<)BN"q&K0wqӟhv7lCTRM|y:^gU7yv ^3p {nv,w.)V"- ܕW~ ,ZcN)R"QTQ8ѭpal4-#i=L&+5 f4'JF#MɧJ4AW!d`u'چd,gZb|Q 1 g35XtSs^4mS@t_M[Ċ@uR'1!VWW޵5!ң̍a_D|d-bhf =%RX3L;yn-٠ŅE:t+g!fpnG҆/?@r낕*_?=t#y]xSTfs1*+m=mLׯQ񩏌ٴ-7d ]@"H(iQ e/+49Dzr M?2<2@Mb!< :2ct(˒ ŝؙ2g0k\o.{TeZU-:t\gz41AiLώH T1v.j9x;&wQaz6e^_XܡCw>%zOXRẛ^-Nm9GE x.Mͮ u59k>qOצycGJ=0[oEPAD'z" >m"(PVrbE9x\8jqK|5+z2KBQo{ *q1s:?{ox؝K\&ƶr=2AnFy{W=K{c*p+lmYT% 3ő4f|7S`(bIWeLd vk-d[RL#}وM źҌo+g2FEkЊe{mCeT^bCӌ0t˃ ^H$Q,vCkB*O /RRcbFw#.ƪ6PQ}@9: Q%c\b1Lc^ζڶ <Z]e rr9 y+ĵNAX˺oMEE2s4&Y-9|ukϩ' ]<.Fvv}%9f5<[:wø2cb.mX2~K}n캝ܱ{&N91dT2J>eꤍ]\R&z|wy`]=<|>{xgf &;y?]@Lج|cn∬ S&DlO! bb7”~Q}`*hNQ"D^H$֍L |H Bᤤ[>q&d`21ej@h|e,aӟN\UQSK(bWAɂJ{2cGAnSy k95nc-FOa#BaB9,5b__Cȹ^, 34e'5YQ Z)i֪P\ d:}afgMz>OAHHoOv ~Yh^RZ-IDAT_dnB(¬`J?/ a@7ESddz'~na塜ppC?uvu xޮu; ~63U,_7>Sorחly G9À23gBH(ura`ʷ(x4B$+UNNV8٭'t!̩k۶UG2Z*_U}Y&[70|n4+mlG(6b3 S!OȡtgXY߽\=+}-j˨LIpmM*ϴ#`F\ZkX(BX`*2A22P֬nB( v|ݏa}K̃딐ҪIMc<`˄`L15*6(Cf:@!۞wCz 0,:0 C+3Fܴ{3HIr鱉+ Qv`1E3'aN} 8cIlX͢l3)`NB17G%zĤP^W),\e(,Z1.{`@V:4՘ ]Zo_s1;"TΫS^qضneԻNwNľKy ,m- g*UPY,E]+- иS#J⸺JeVPb9Ƶ:k#2h 9)-%'i&4F#ۦ"ԗpr[Vb1c.9}L=.|[R-pV%ł)bdUOGPX4D߈lCh>8%-X# 5% m候U Dh[!jfwrAbIO7r$^_]}f  P_Tc-i8,ý)ь86R˪l]Ek42]M3neL[r,'s@Y uT%rIj 6;>P}rVvrR9 'SG" xΛSg v^8k8n}xjǬ{6AQ61`+<\qƿ\6 d+>HL7 5VwӉihW@bڢÇ Vꜽ>8`;JZ  pC֞,9.B3I+xK<_z WޫM[WCvNz=rY ߁;9sŸy/"7OrG8}{쥑"B"<ۥ#Kd(=ʦrJvX8_9[h6r)l/(HmwmK^".<1[I®U(:q0؊C†_%8{(iC}v2FiJO^g[`1Z{뢃!2ZuV̜%9@b$7Z^۷f3wqݗW9pGG߳*3\rAvuU~ ϕ+JX?|Ƅ>)x?`E>`|&NlN.mDA2wff':Kmn99c`q&ϊo,SW -\?/RZ.K%'F\fAI+@Vw`& ;8MKe<ȷ|?G5?`)U1#+ժKu1PUk+M JfTipAiu][k\3 ")2_굟g x I7纛H-e fnZ &GB#l^vXb"Qgp&E,݀lXsU?z͜ D^P5wZii)!$ZU){[3꥜|K8%bH: X z\CwC(\B#=&H:yǍׇxFW}_(1(Jܩ_39ayjXW&s9U[ckNWo|9vMzf.{Q@n4=Ggrzo{nN;Y$F^*lį 6w6֮$/پs|Ka`(N̮#:z9 ̌{)~O?9:l=9<7wtaf5<c֫ۺ0UtQ ˯vjq׀Т)9XQAST;w~_'2U:'e\I: [}ΝAz5.za\g{&tob]_ CZd!\f^6 v8}eŀŦOL9+GA[EU"kh*o}OrѸ?^gwyϕR`ėyc];"֏zįRt=ptc= f>f#cِ'&T(3ɬ%:xrh-ġ([\ya:CDcg,I_%%r8y`4F g}R%{Yc/۵dԢL5҄ChkI\\ ="Q%F 쿏GgoӟUpxvvެ}* |cͿu97@->'!HTb~1DC9a8/ėvж\jI/ 6ͅi5ڨUDyp9@/sG:COrUWqh]t4J}0mdŻ lD-~f|>~>rsaV''W#q6Q0x:8̡#=ͷ[(}$)I^AIt DAsK=9N|G%t<` Yκh< XG)}_EM#,^gN4g yڴ4A A=Fjtf<6!$1RUgrLN)aaT/&VǟΠ_!ԋVy>GB"l>S/msr<Cod!6rE sCI>p^mb⭺~z+a`^͌N >9>1[iNGo$cԨuXB$ }rp%aC2Ռ Cȅ㧦mXT3ɔ 8ϴѶ)QL)90F~RrEwNe 6l1NNUf]G#'~80MW받|܆۲S`j8ZE%8];h2d,A QAm,dUcwynʋq`7P2UXi]B#jjmOk<Փc$U4 ?G`X$"4rJPdš\<-f셦D !S#MJ G&*M+Vw30Y*̙%%Ȟs.dƒ0ٸFJ',0XJb&oem C>2ajX^.̝s) ə~Wgt}[@]L5];L#6@|?96crYx>?;7e]J`w^/r?:yϞtg<]UeT^ypan{}ZmK9qJ-*7#Z;1tⅺK!_v\ɛS<4Y2 M>*4 ,]cH~g%n&-UmBsrDׇ{GXfA'x8N<ƳNg5Z$EVu#ӥsb{;Ӕpm Z#g% z)Rqm9Ɓ* P2 @:.eq/W2f\P}篓rk{C!*Hk~,k#Wm-yoRʸ0(@'IRT 4ZgΘ0V̻ެ5 %;O<:. o0Y7/ ZkD+r)F[Osg17AbuyTNoq{||<_㬷z-`+ހkp$܎Yxp܉]s<8׷?78M\JGn?}A]Rpp? >O+4lnǗC~j{/MC1~mqA&fgR$a !Sk8C F6Hz1oZ=^kvP6$; bMIfv .n/㷭^:;3؃WEJFR0gth^i%\`HQ[,WRӜ %1у ǽqg/-#Aؖm.r\iDSfJpND3<5v;+!n;uM>JBSVd,B1cTeP%7:ߖd1g PPH)E5Ds+VصDUbOg&eָ- c&)1MVqE:2FKBE4cMȹ1v:[¢ߵpu`hne܈ԫ,B|qC_8^zʄ?O +\IWv ݿ©xs?’rca[x^|huZinG;c|gx>#b&ErP 9)Ax3;!u*yN/y+Da6fft7+n 1(S]i:$#(il1(*l,ᔌ!55eBR#WcwaUH"=;ԃ[oОfIl\#k(!gΔz^T&I$̬ +E>:e})=@wJ3.POET-.l?[X<[ 9&~w-Es庳7<^_W;oesFX_n1=.<%@ju`cp{6zal<+#_7r0w2RaV 2DD/c$w\;^qmHuS(TRrGK$㪧΁)* $7kId>;rwJ;80aQZ =bпD"󕖫gA~òC<+~L>ɯ͙x砸B'5 ff {F%ӗ;og~;v3ɏ{r,NBN* (Seϑ|iĭdK ƓqL4#0)Q,9c9ĄMD&riqrAs#!2i,>+ nV[䲋+iÐ`-%؈W=`3c*'f慭[^"j>.w!Œo+,5 ,I16G8fKE;ຫ$|5f^aS ;"*yו xVٝRpt.N%yM܊ǟ<%Ss?G/x90ҋy'x샼Лvz/A@WCtf2Muax"//@eZK XuA, !HŰĜWDr@ncM=^5mڂ6 olZ svVvW>:CSf9}l,RQ_Q>K^]X\6:#7k/ )FR9 drR(g}k vf/yDh|*/L\[.ċm8ԊDi!p:J, - wf^И-OU1Urc1XBo$hT/A:KPJvAsN4Z8rr~EǹO*ݥ;> |nph`2++ۨ+$-5&Cqfܸ{I7Qw0uq YtTsEz S05?㚍p5~JJ 4]i@5׍in&vDE"GnaU$kҼ(2\ɩpCm[e)6mG4|ܗ#4dU{ccGRtfSFe|Sk; 9'F3̲fsDPEIPmdKꁙ <yW}])e~l1&XE]ja$"V!. caoC>>ˇ=GWٝ7}]}<}C\29<<ɓܿp_6a w;_py.pl$ZFMvOM8xp.LVkƦƳu\(dDjԤ1Zi;1Ja?Hpp-n l<qBي2r*ݦ-~ũUGgN0jy HY>z#Q@=&i~BE%IPFÁLO4F`!N9yPa^ʌy`̨55mP_[RdMjQilp`p$‹繘{׾5אEZ eܰkNʐ{0l6'ښv\i$ᦰE9mxx@ {'NPRbݲ7xqn F#Ҕ4doa & m\mN% R[ʄLi(e3VISS-c,/^׆G-vB;稄NTqcixEk<ǩj/4]kcE20S5D ncW{gqUe^WWsqٝIg> S<4oҝ< yS3Xr i{;p+W|6Qo:OPrף8\̥)V4v jr,%f#NJ% 5! z¯$\9/4RaWPsBЫH"žg:h=>y$&.5Y"! ,adI.-'.[. b'W|"YV}SHUHɢHrZĘs"Nςf>Yk.©RHKmRbV4{ {"# e elvϡ(Z6+bKk4UfZNGGKl*M<3zH"bLL 8Ex-S[> G%wTީ6Anf V(mZrvhB H ͽoc)U5Lg̬׵8p;qQ[ zi]֛IF ~}GZ^Чx⁛"Ovn>yjsg>̍yxpc0 縎3 I~7Xh1KvN֝kVywKOe{Qq0171Jp5 +BbSֹَps~YyLAD,,!lNAMst80hi3a6 v@oܙ0)-D֫|c[]/\OZ.s2$& SB<ka _r>e?jq(\x%$gƔ kThJM "iaaD)ׄ=K !16mrӼ﫵8:5,פ\dqPZ'ZThjK4kCi4R$R\Wp`:O8ӹmg;,'!1קz,i޶pC$,GC'TKZ02 wSccj4E`9bB0~w~'ܷz7Wחu<_˭5(x9z|<')x"3|Ü>y>q'QxN!qk|a/~uM1$I0eO*8;o;~ "IXw?QL/,QJ9>p{6l$#(&g6䮭Zy6VaWϯAUw0wJfFdmZzp9'y7C#R06[X& 81Jh vA7;󶸠6;jRZvL>Sw4 M=\¡ vڱҦކRJA&3՟T-%6 nɟpaqrxVn-6Udڱ'n]%M o_fHU*;5w2&\0ч'yCF2&EɔH0UgC.l'& ŵ6Q}1;Ȗ%3Ri"[a+U$B2gU{Dco.ЬY= r[T~${s1,~GŸ#?|_ݹ Zrpof~xX5D:G.2Dvx:w3? 米wmf<ٟFPջSݽjӎ490}nnm"ԭŶ} Q$ D^ $6R(,+)1ޗƶUauT#8ȉ@ZUy?=]3yТڜo$$MSPlIq^3ͯ\1 @_bso{_Rw1$LNTLEfXcASƊcFm- KΙ;$LɨCJ)@ Kk@3<(lN[eڹ=dH UؓĨž {Y");^fȪ #1%BQ![ӈMwMߪYe:amvkdƘܑDPBe#ΚJX#:`IBocנOLt]{ap:an_?Wr'Bغξ}Աx>{mj<د>j) :'}|:b_{_̷__Ctn~v-UN!FzSy_7uݓU#(U"%0uݖahI.du) , '1D=@I5$"&IQٚۙ$v(5;u3;rUPĮUnŽ{Y}YX2w3|Ҝ \YRQ#Y@Ǽ}LٝFt pUIP4y>E(T%KD֋_Sia k.oEJ'WvA~~_6ĮEM7 t$FFHw|"KZ s`#)pUX"ԅ%A2*C6jKvM(N'~Jhtu'& Ã@mQRK0B}=gH*&䐈BO#,)4-Y<\\ܵG6,3”n̞L:ěkGPZ<:[רmmE$ wUyҮɻg'L`m?7}]獬7+@سoϾty'p8E*'*N?gys6Kxg}(*Og~^rd9{Ag8ʮpf%D=LMgwPbuAkC~4GoI+>SN'A3TQgtah -`[ U3/Xx-h1PEHH^CW1GD[\ccTeFAF_U/ 1$ty _׭K\`JBER"G] EEZ.uSfПb-ʶً1ٞKQ=r؉P׬4ܷ\|O{O Rqt% xs=D|~Z]< ̔66gzxHZ x`3>^ے+kfd8E͝v/rFP*pS4g-5 z ]/;oLh;Yi.$E_RAN^{be⣯L4H<~[T=3' Z8eWDXaؿmly>2$ nN[c,e: ) aV0Tt_fXLk3D Ҫ7Lj̏Ԛ6%w/:71Ù>"'毿iP<Җe8z[ADViiT=L]s%](Z5X\-wvWrX'iGWxIHcN^=VNM+Jrla}v93ɻrw Vgr&P?vzyVgvDuMK^fg9i}dv'#w9GW"y_{{ $?ӝ mrqt$'̺,U 7~^_m*m8ԔVźc&Tf*Jv+:ˑ%7f4S+q@bHdM(Z9E*ӎj]B2獬Tt)rSw|:G"9Ncr?YZ h8Ff9`W;֑ܚJʉMN Ck8$bOrUk\"ًa`xA6'/._WY6WxWnef?Yϼcƣ}gez5 ?Ss;?s}\ґhNOa07}8Rd~=Uѧ#!{L|Lw4'bJ&bZ])H¨zfMk Ζ8cSJ!4ƚAC1RP"7\͙byn&#\?}מ5OW>yq'ܶBX:8p@,< &eD4ؗ BIB4-@S2ɳr/ Jvҭ "ߓYm#dkq}nyHevy5?Z$l=/<XQ1u)xKjJ0Ag ,w aCY )PE+%tN9|cb/Ʈ/b>imȉ u;8>}-J3sKb-wQw[4vu1C9VB@ZC[]XgRkN[>2 Ҵ1`DCZ@Y-U[t5)K01Nh\#yDԵNGIMͼkJmn|{w|M҉J4/b܉3&) yMtp/:~QΧw\4yσƏg!Gw># {n ߻]AKSM?;I=5rJlRao8_aY|PT)Q w\&NcWS[4q0mٵicƦlHH-ŕCkCgۼ]/N\-'N`otxB.ڶ}ke`6:x%^)HSuBR) 1!#{eT]ehɽ m7v6kPiZSeTKGGiUJPicdv,`U&a,LEY1U$AJd U$(l-H.j40 2֊X%0$x ^EPT]vbƔmic!T&j޼fVQ$UD3c !d>=W5?_]R:?;yeq-Ew"I+ߔMW6/_ɋ/r7_o:QLy׊B}LY'|:JB_*%e_.JZ?5ECS 麗y/ɚM$lA 5Z|!<['ږ^)#nݹC4e&1h\-/lqpz~8'ٝWu{\D6ҡy/ӦF?}2JT^۬[$);{y&9 i4̹E9ؿϯ"9*Qĉqboϙ' f!ZVjL1'f`q(q ~B.x2$)fF"mܔiEj)&^ SgM1,U`%x̬͉ !;V Fp}K^@;5ϡVђe>Wس9@5_lt![1n,ת8ӹ3sf!'%O0)NIFVD;meLScR]]kS~Ubkt]Y SiMC=f}~]B:}lGYo?${&LYf(){­S<wpwr? 6??7:l dtK!͒f$fv։m$seSvs#%ON^,K{6ɮos ݋kszb6I?l--떭Vl+:,g XrP\Z RZ#N.#1չh/"F#6$I1!Bh U ){@fс4eGfLKDej[r-$ThaָpE.8kavU[+FWθytmJi2cFʉdKDzNDoHa&BTa8ة`u/!tZ:ҺK(mj`f}ODs6gJK~A!kUn% 0:",j y›:Ga?ֲ%<"BK1H37_?cU.']zC<#8{Oq=]u{>2[ŞQgO rߓKn`^sڟCG[YP7NqXYDB >Y[S-'iބ'?<(r>O 9yU=.F::8u[d0w~5[ߩ8#cA9pU~"Vl^ 0Is0YJC?#e(4mږΎ.P%9#xVl$Yh }Gż1H]'O"2hJg iH "Lbf/`xKWAI-ĴsV\ s[H-AP3v 6pxxH5-vzH΂^')[ZXśtQ83{Æa7l0iNxΚ>ּd&o}(ˌ`=k:k˒`4;8SftszB#2g$^ł+@d6Ҷ!U22n2X8[2-T{KP0dA$l4/᭨לX^1yβW&RU5Η}|5xغOϱYWK̼}`ZΜ[o$|hl֍ӗnXw?-ͼ;>|l9r!܄|Fs ~U!EӴD9uImv^F^K@\ەH42 #pW znBj,TG+Q`"kxpi3y%jWUzj$:g"Bm; {ի3z'*=@BBz݌4I7m/-xrIUZicGeGcbN-6r׮2yYS÷7ď06񨑫Nںjw j)G`埧Bdé氾דy Vi;=_^c A,fKo6oΓ| )Cp:'O$@XY+qmU(\mVA[osnNRFw؃ F5W3@H2qRN”<%Pxaw#,&O~%l\~.yg3wN;k`5JS"GP"Sh#A$u'Fi"śR[Gl"c鸰X%%tfg$MsW 7P;.\Uqiyq[Ih.P43):U5&2-_*xP+5kt,s35=\5xOpw S;'#Spa7`SXʗZ?z2ٹ"Msb]?!22)xYƔT}n٢;sN4%@NT؊qOَ c3R9ߤ`rJIR"|"+U A5Ann'v'|̷=EyXr{;ڠ'ES7~ظ&G_>9JIHSGbXMU UnӒn-6$YtKl66y`Li1Մ2>%:%! !$$nJ 2pboU,,Z`7D2ɼK> ػH*P*Xk`|Nm`fG9C¦Um> h΃%V?k&SD pi89TU%}I'I'i>"*,@\F04J0lM7r!8O#H8,O &\<zj<]Ug}@kmЫ<_ -,|r/m^=:)x؄%:wx_e̙8!N\mǮv/=*S'"c)˜2䣛Mr^Bʑd`pA\e>B6g,jpY qۋж%ʤm߅C}Ħ)] =ʀ4H?N)ېۀhu Owt=M.B5jkQg^[#^- c[pHP0wfƷ/徺:+ Y66훍p7AǷ?sx]z?Z>guo/pzH,#$;<_Ax>I)78`K5*:ͼ+K[aapKD7$gW}ɵ:-%^VtB9WyZrط+D%Ҝ7XXLEfk2%"C\ٲкw˱Du{;cX ;Czɶ Gkl@G\;/zC^{qe#;D"+Cl~=z{n [y?ݶZ wVO@讝9;g 2C3=)M&tC`7Z!Y"W,I^A"GJ{NH$- #- hʼMcfGR5lƸKşG?Ƽe *c^BKԂ!,= \1/M ݰ裾~;62|D8QFrmĞexKJx]gjcřZp:l'mox/w3 *UYW.y#,O__&g{3s}{^%r޿n>'3< \#'F~?1D{Atѵay<Ο/~߱yHb$_2{dIT,OX:$Fa񺨒\j"Y|,lՏC}N?|NAϥXY/F]Cwn'cnyq:b֋>0F'&%Ea/ {\w͸˨:'ILB502JX[N[% >r[p/:OB9ǚކӪH'ۿDi]QE<8 Ÿ+GycbcrmBIyB4Z:g TਣOį]烏0ZmKֺ" 0KOEJ2HbG>$%BBg!Ҝͣ%+&,u`3T $f vI`Č]0wGU;1)}Ovܙ`߇X #lQIe/!p&; nvL ˆhh@&'Xj}fM)1Z =j@ zTi~vúUt3(e_37?<GȽG[W_uM} b{^ f|nO v=iN8O'=sp넇;箓9zI<~_޹*)0. Ft׎>ilw^]ЉC.Ք6='*}C70e1'7zO>T|2vDJB7'k%Pc$Z gw$ChS~j/@JɯY?n+ @50ネHiNQS1CCx`)-^Nq桀dOI"\M,5?SE!2Kt Ր#|Es~Ѣ$DiM1u1vb-U Nm\Cs'a˙aKBncA)\{5ḱtTgvd.+ V|5Uݶw+KvgvG2hU`)W۽3jKp;S(nTIH*#b6.L|'[R{ .IurA.LZ5erx, +:xІu225*I-%t"{<_ר9Qb14$ gWI$>2\t06{u!:f3)z2u,FF1.m }R׹E_; j6.?VJĻ,IAL yR4o %3(ݼr]FZ|%H}R`4_+r|w^UV5+1?V>o?W&Nvr?aÜuǯy)p=<vޕU̻p-/3|'M'R 8(R qDJa a8JKpX'vZ{Չmy1j|'qt0mj(xxddjĐ {e>{i`^g +{ 'M("Ia⏽;\E(1G9(%B,űӄ*L2LIXw 誓DM?>N9GP% %}$kFSכVuG8vtT1dluG۝g';l#?71;Y'޻sb<_+|(蹔`U2hg>|fnȨ>.sx!Ywy>t}۸p#}]hS7U:#QY;јźMTuV7wc:x wwMܛ*Wq{.9ؤ<0@0PHP,TY@.#ZAhrpAH!~{.Mon1j@{k{D?j|1wuN6%E+l4~7RP`Jvgֶ4lܚD *hJc\3+a[F:[Y,Pyֺ ^T;}ٵ>}ti1%)5qC vÔC /-'icst{{IOˤ]ҥD̒9>`j)5= E_kPc֤Sj|#Mȗ*XhܕUǰA%l\I~퇾m<Y![%Fq}tb:)[@>u+<)Gxs).}~u筰. Z4_Z[}}e]+'9sZ)3\I;_ao%Z?gٌT-p8MLS`zcYp8s qtaz{J)suNIa?w u qi5¦xEW_})^*c°Du:{K#M DgK#\RЊp7}iWJb0t}e^&4RBjxA Eƶ5jzXQ 9(LM)k pQ20'TKHyDLl͚y':]OnΙa{MU߮Ǣjr9pn3:;8vk؁lo;Aih\'l)e\~&Čim,9(FnɏV#S7{LblSw<"of=KFebjЯrqJcyB*y (,x?0\!/y "7 4~ϭ GV iƋ-un5m9hʒo"i1X_Kˬ1Ia\B\^"$w>JWɳ4C\dPHɌQ`qR =Lu-Gm,)ҟ䐋5 Mjљ Heґ @5h<.!Skh30ui 72FvGUIeĴ 98s Zx݃Xkwr ]ɾ-Ql+L@,6O{kf-D]i"^J^+5OqQ=s=jaK_; x~`yH!O(玱2!U%=<2v#[A05yɔ1L^)Bxm!^{ K`cUŪwRҗ x{s%fWכ\v@u9F|,ϩ7 w[}fN?}]1@/)+=>=(<#ʰ!Tvl-_M즉 ?Nk{GmR<~UPpHF̋G}ߋ9(s Nre3"Pv^ *P G$l37n1BYRpQq,w>]%⿃ >NP ZHot#LR Ę6~=vKU7T,T<.\qP9t:svY D\ZsrBZ⪟(Kk'y7ž?B׊L&REq2Mx/bcQY--[Sn(U#& I^LV׬[ wK"Y_/IH̀${Dh!F8F)H+l Awb#ㆃ61|:wy/r-9Ӂenx(q6S|f֕ xi_Zqvn>i=x| w q7ϷY0z?s|ϯbd/cg/rxءv#$䎫5=Q0mLc’sޒKr Q2`x]( {h)Ȇ *SY+y b9RBL1 'n;Tf\kū{O~GC*^iMyqgz8]*hZ!rvGSB_KP%Į; vucRz -~ lsCpɁE+/D+A[V)4I?ůSݘ YJgKyq'PYN& s ؑ`8m9:s{YR'OHꀦD ńLɮ (%rQ^+Y@qeڽӎ*6v:Jp- iܜ CA'>>.<_ukWg+_ s<3%_"$!+Sdhah ߁]9:(QPU1ͥ)x@niMNu=OD*C)5*(,%᪇e6m1c+qagu$0d|KDhZc&^AĶ2ЂCZwfWcc1g$5;=N@i-+RY%Xy(IDJ.F㎛~-=Eϣ;q:< 'bgZ@O_W3ii>ϟy7g4Rҏc5y.hJ@<74= c|8[:AsAB X}R u-5*'TfɓjŚ;ZFR rj9T.rE+ucq3U/m5{@-4NGRRes#I clqxpZ4 ^Q9'ԭyMdfl~? %`:Uj'oEt2$Vٟ=epK,6bRR&I$S2jJxzFVC80F[>ZsLhIGuTPR^Җ$/UCI[zzwT茏-]%@ԮVkIxyQ-CZE%[EEgT\H^>|{S w5qټ(]ׄ2Ҍigm7륺{Cg~o籧 ܇amy׵|s7rBf̵v+W: ?o?}? dl\jXG\XlxRr:uTLвԛbE:IӒs.hNiLA^?\0c"_fQvd!P*M< LVwT!88nH49^t77ɇ[ z1+0 nu۠ $8˰Uek%U32 LuIShce )tp@9hV]T6sXrһ0֚҂9},> \#:%7n|ttt@ʮUӖmZD ԨZT1+wgJP>ΤHu9b]CU8v33zR`7"Hn3=swh0KG>RQpo)b |͌T\@-g\ c4~ʈHO^aYbM`C c@u71E.dBN2O_:0$' r򱖆 4EX̅cǝ8h, " 0Dm3fӚu7XԚ&A@qZ$V Ygr2{{R<5x6"e;rݖm[I4sźUϫZ?=ϕ\RRoWA/'̝/㵯W%zG.rNp೟{Ϻvú` :I.'~7pz 4uY,hlb,AKMx)U\7i00y)9"IMS|d,2s9S;pHecg Z=F~ BksGx Hv=0ҬE&`DK6H$vD ug [зNєqFM;%e&ki ukc3dmf7C%Gg>3,b4)hgLkʁU/UXgIKʶjލes$ͰBk@2uKK{ly)=Ws أ'ó/ZkؕxRXRzDVc',Q=Fr>˼^<+ yn;D[6?~?֟ڱ%!b^/i[riHدs$],J]#5{Ns+QP, rMX-mxndBƮUYlq& `?yiݵCgMfʮV(rq }H,Dx伬ۻm7d,IsNw4ЕoH֠6E!I9;(2X%Z/7ɼ{m 8 ~^/bh>4^gI4VjۙY?;1J&H);p^}ZӼSb}XNS0{U. D}ƌ4&Dq9y9>Z1YT*-D#|"Jbȩom25L#; 9eȅ*0y Mgi:\IƻC/ň/c^,.& T+ vYKH*$14WSi=~z8xxyݿ?X!8%B)Ȧ'ԓmg9-y;^}d>.h:y'5`zl䳋N]p4[klrpA\iQlp>(Il9WHQN:">igin:r/>5i;ɚH'M| p-Q]5u!̣m,dD e3%PQ`2!du0nj`%ޥU *U^P=Y d͌8̠W|FeG~<%vu5q\j8Q 8B\bUc6D<0\7XIg2M c3S:$(Vc*M-l- $Uoh1r\.,F8"UVgRw3(-aaYxL5לpY)~0yqHc3'MG5|½rc,k^W&yu|yzu߿{\|KQx/Du'@> ?zE6{ ?L.[0~B^қՃѦ5HJ4P Fq0`~+0sw1K%9&jPQzPh5TПmOi__AՖSs+X|}>@%h9j*vN}s\^k1w̹$$\!/Y{]\k~?.FP'hVذ[ +iBKK JΎiL49͖.>8hb U9Ï7гհ y v{?ۿΡফ-W^sDԮVqɸK;k]b6qt/m2/P<\r*!U cυXSW ~^۳g{9Ƚg/[X࣢ 1۸#;dG9•p/2x]HjvNo=&%R>rdxQR̦iRȪ6Dh5Ӧ4E)Ǫ())g\ԻŌͦlfm_e<";va8Ƚ.pr-ogv=ȕWJQ~u3TGI]xé3Q $-EܜFȲ$RIOmJ1E.%j5ȠBPO*b"6K91u`{/ Ń̺NU7MRgcQQX˸t4C;ujPr$Wm 15ԶO$3ȔLRIJu;: HRQؒ@|jIuS삺DjwKśJ-ܦTԕZ !7Fwp}҃X5PCEHDv❜d}.{@yGJKڨToOsuy=v[JuӼ[vw:gZQr1e~c>\BUٜ:.s Lo_TI$o{!\&]!"?/c15ܐ6dy`)Ѩz;lcDG)OYytolCl^O51^saN{*|$^xe,Z FqD̅L[N`PReE9ZHv{T{$CG*c|=EMz\e˟┫؀UpnFH. ˗XKe\FBO4yrVa7evbpz#9}IGΒ-\srβ.c<92.ԲJ"iH)8#Ebv‘u:pu.ǵ:ZR.]nbUL"ZQcRF4 XmJW>]nΒ"UAAU8^%uؘ-gr38lk~<ʍ=mi˳1z x`unܿSn=uryMYwdH鶠D9\ajdB [,vEsgswyC2;๞( u8)d0>:霜1wi MYiEzT5cRsDRīRA܀}_?+YS~NAW6Og m}c6QgD妋pʈtIIQp2s7V[pHFHI,IhL5!ZFMi8Vf#ʬ#T`Xd 15ʬCens/v4&$+g!ƝɝMǢ\T}xh"n~33M_, unc!F'9O#X%1ɑSMVhL4XU3 bŽ!+t7R:bYgA<8|D^zP.tĸpޓs"jxOrRRLKT/>S9B]y H"f7(e?x<>b۞ɖz|n(Zk[복W0t޾B ?{^`?Y4".[w#?Ȗ[7 5#-# _FS 8b ̬X(秸B|I.A۶).> z*$xfBncydC¶vCyfT]G_2&-2 hLkyQxD7%S<{cFS0T,A2ݑX^\cۭ]P+.'*9c_KV~~b1j ֎y4CZ.[{pAU'L 0n ƅus:=} Y'2%%XE!E|*'>0  bj+Us)1%-?eԍf]RG.P:uf$ Ef%Bwv 5Xh6 8.TMB$8""L ӶHwҕPltoW;yP dܴǢw,c_ɳkkuYL/.\{,(pu- hCE`7w |g>M-XI1x'h:ɲzms{iof(Q"ƽXb<3@ӝSYp) iA&+ӆ?Ʉp!Q5`g=f^6;~FP2F$SWnu<3>KwQU@׌COȰyajD:d#mJ3=yPSbF<IWumYvlFb"M=UVUBm.mM pX4MV4Z:ocW: *HJgw\DmytNFnz_x ՂF4EGjMSntJvMl$)u$ękTaC1tĻ}J9d;WL?ee;LSGs`6Eړ^ B`l9CmAџxop'p, _f7ͻ-揾UWP{A̼W`1Yl!Cx8z&Sw<Q W:;W|'N͑̈́iӀ*òiIMk@>`-k@9r^R\ *j* 4md>9ɤwF_ʹ룔drlR{קtys.?.Y˂EY+S/Vm{P _4}%*xOj*Wv"E_w^H`+?x.InRho>yx=oz@,]2?J >G|dKw{ΕW=0=YeZHӶ1AbbU1tŌ||rL8)F|?#ȃrc}DlmSy߆UsOjvDzV- dnH3PK7D1Y++t ki0bjBR- +9!6SfʳR:D=! AŘb=_*^D!^G59n h\TCj:IiC\m32TZ9 q%g͹V]WU#z:W.[6/}"hU+]!jb*E_Q^;ږ*9;zU8`"w9^hv$P^vμ_V3&ͪfR*%&"Ƣ67@=pTENNV-$5%2D!n24Nڍ3g`W|[zva;/Q6@+ ݍ7p.<fz*V)zΖ1kFBB)%ӷr.az`4sG\dتA&-fn⌤uRߜC-US,/,⪚P 4WH^li#i;* DoF=ܤu]w{zC=}Jt)W {jh)ဠV)C=))iTduTV+c@QfyRZ(1s EŬ "5jGA[։#)٘_j!ٔIm,G Lz^QUFE1gfDS+Ȑ)R{B*O5^fy'OfT܍m J̞#Q>0G,/1}b%ƌ,5[TPU5.hߦ\tJaiuxB/h^pb Pu\<-.Y*wup$U|ϕ.nȘvU)V35Rt|~wΝ<@:!X4N"Mw(nKa#LoWY&B1w[fo ?M u=7p-UKp{9۩nԫ 3_ͯz^7=<~~~zPx( Wp%Lg|y93+`9;@ONNޮC]L "$H@$8n)y&(Sm'>fwo%Zn}<=gXby8kw~߉e]'Qz-^fp@dr8s phu נAҜh iڦk5hbbu̧ QRlm9u| }Шs2m/@SP)Ɠdڜ bfmYmZV 6rTU\ 6 '&өUԢ)Ό0;QYG&kgI֒%3|>ƙGb\\\&]:VcIjCZwJTa#UFU]98S*{SBJVGVR$6Yǩ+ۣp ]1s+?4xPuYؑ(]1I+9㽿w'?soO/{Dsp=BKwGYـ|ll $hi >1ۀ§z??ryBTQn.nh?,vz̤/#3k;-t0!0@;*UlZ\Q c#W1UTPrȚHHuRK O9]J!E$fW^2Qm)>3Rt)✵Yĺh99plc/i[q&^t1X91YYǜ2 E YF,\&-fxu~B˘2\h~uŃ\0MED"( PJLcj1ǺK/W] 6c(h2v3xH Z)gdi;9"Al X7Vdw:ya_/rr>OneߡS؆p95pQ =o~N|Wb 7p]x3 *7p އ^s_fGw?)M<Ƀ<9_nnweAQTL&k.eUck*:bw>^W8 Qaϓ|gȊ|-wDhK=r&6x< s=oLyL;9]i_˓{CD!qmώ"ng\ Ϲ'@sQKj;)}83nx/W ,-{ރlc/p-=8 }wOx?-v^gGݟ%kL~?Wd=r[y;H/c;CeM/"Ŕ%oʮta l;W`Q9ú pׯ@.w-ܾvZusea-88'`KJ@&w&%Sk [Ȏbhh-CGwt9W&6tvEeT|m TU+3:gcRЇicI-zG"'+󌪚̭X LN˶bZʹkIH,KAӏ:FW~r*%Ӂg*'|Ӷ!wά|WR"ظҹYunL,@OJ=Pb=B {b@K> I\ aZl<ј:G&- 9 ?}|pɬ;8:7/sw\k6@ϛ[{\` x<(G]M QKCG0󾈟6`;p;! p?vmoKPW Y/!WU~5~z_V!+wز%]J주8xٳAf US襲A$%Qwv&vF]2J|}+39WrqS:PP^])Ι9wb 5O5N#+̈́n F#;r'N'-4*a9b]&KD9 xhOt±Ǹ3?Oݲ"%sMg=79bdHŽ:A#\܍mt!NJJ(&| &1Ƙ)v@(1 vN=Wks-WFq% 4Iy\aW1pj*%OL2+)qքuYLnwo}sodvs N ;#5Յ xօJ=-];>Ȟݏʷ Gܹ]?*Jqnt8^wMl;[ݍvî2+dc w?px}س8="<e]ä{oۀW xWvoSV={5[Wo_]#x08@](k]2CU GjZ4&F\<*MɘϦ*uĜV}"Lʮ eJEvZO:oНOlZs%;Vu0'_*OVѓ 5MKıd;XBmd**98;>my+[/]`i| QS^ǙLVA'dGUe ZҥkG.1[Z" ^n"ا{Λw +0I@{2=4@,S=v:@󶜥㹛u۸ݢ6 U]C<>SoV뺼U%MX?l}#M B6%p2 nX3ZZ&:'NVe ӧqg![@٨ׅ x^:UhP yzF[ r9 KQ]Oo/rw"aKm5[Iuԃs.D %3lҌR;6)UkS ώPI`26_̔“Hq~a#ubW^(yXƄ0bqb&ӖdjYzj/RTN^X3{S)䦅]s TM'bXAw{{6Sօ9@ϫz}*+ϰ{ Rګ |8p8.i>-;ኣ|v<{ћA ~3gI \pxz7CAϧ yyS^=}}u:sSyOo׿k_GH M'! j {q,iQL3o~qQ .E*혓~T+c݅ԓsYRᦔMY'I?$rѧm˥Uh=OR@]tRtd.<[)B=u^<]ud~;5Mcj;'39єm|m<'su^"+u+:W|Tۡerޢ, d)1u<ŗ+degy`*麁NcjRⷼ]}j k[x<$rD/Nא] Q8^׻ 88ʻ>{} )򠜚/p6 |փ{ev`;Ȟs];#ڃ0U|G]4v03vq̺30L">;fEI#N:_FzpXL|mz)Τ+-<%O~헼OgE 0`8kc"ev%)cM )gp)љqF w +9S &a{E5+\>]):MfhI&K*5%g,b0Xh3 l2.gly+%m3TBF -yBmØws-Fs rxHdzǗANa4 ŽGʆ:6r%kz;csOpw`~r09O;[_Rx8r܀7Ry%~ӝrdZ.oJ2Fn⻾?BUk~@1W87a ~EIB/ U{rw- h i: mD[U9|B'J\ּhp/TGKe=ZAMEV ! Nf0 ulmJd^"?e2S>m.YZb l%,8;ؙ *f(tu`.b~܍:޼ڋ'etQ C_p&%ELz*DgK; UۣVeSrjr2:K}iq 1zjP{lNXV^xM8{{sU" zδG0u6p  [^l}'[mQGouG=en`ؙ5G9^ d p>ep6gy@/{߃ ǡRzjduـ̹8l[gxb ׭/`\etl= u_k`Ǚr( 6"[׺3Nvr\:~N:8#GX8SN|ť|x Imzme~IƓh 9J@4pȔm%C5[4.Kw[WHڲ0%TY甞ӌm0llg|),B 4t(dg$apx<rz~FQD)eGZaяov?o)8xx+p3(a}Ml >8M 9|;LOf~ۇ0GsFdX- |?|O*jh*J9.c.m/.U9blP Ɯ8#)Yi4L-E&i[Ow:\(;_K. 5'ӑJvjp 5W TK`$ 3)GZ26%pUiWLp>21.Dn[T:*9'Qؼ-b!c~iٶ]0tv: I~΅E}5͹$ψ+{u 1%&xT{{ɴqZ1ZnU"s&8p,-"M7CGqsX,!(]_r z.;,nQqü%Zzg]G9&ؙ_QQ 3]~3۸9akz=ż{6 oy \NKN ^bI+;rwuWy8hh+? I{x1)zsv($Trq.rꎗ1]kȝBhՄuudv𯻮-Qg:Fq|_[W#_Dj]EW> ily1>Op ]`\ NnwP9 SVYd>ɱ"/L_81=J^eX s:MW1Cm1FTaaBmKLFWsY(ZDx\Cv]9Ty.Fby]:rmӆv:6ɱ!ZFJzGJ}֊ҫ2DWՅS:apoH$Xc~տ8𝢌yŽQ/s-P67 ^H_Jj˜: vu`?~Zy'YG3h%Amq1Z[mIML1]tsw{fVNWNWI D9Zʼ %ֲ +RR&6J9.,V)ӆ-k˷ZHUw/EyTN1ӇkyxtB*A1:uq{G^+%0sܵSHu1q-0>5={ḅO1hGz jɆcnȇ9ʑk^vsJضd8x}GxrS}0o>[`X2?߄瞇w,7b?))YA7SWucQ6?[ԻE*#.4\$Ѓs]ur5pfv-} UMFBmDIIP d/!8GΎD %Lv}Ka5e^$V ;e 0`4igRb8gFs,*0YlvN\!BT L F M{#ۣƱҜRSް@oa8zLB6Gp=tRʝ{/,:I#d$96, ]s!5?x/"ɏ*?=(2ּr|:}osY=6\vsL{9mnpsv*wm\ǭ\ ?UF}ȎMAvrz xTxG3x=؏۰ (xGm Wvb:uU1ӹTL:3DcK$[e-/8]v#7.$ntFkӀ=62|gA7U άrGx8.r%;\~=O 7umO9WZf-Y߁ص4w:oK%:⬭O7pwn[7-x93σR#ru# pK'ĵʬNF˸*NuS*恝qv8E_x)رNS1'OGv%ɞ3 8'#0wW@*ߏv2;㲳.^cCQos܆~X \7Ⱥ׻ԁu~Q: yn8ǹhƹ :Y]23C\Kw9 !\XQ)h1+ >zI2:ГK *PGNxZuW9>4w(u2|ϮzX+O.#պYzˁJh?ݨD9nr{g_QYoLous>:SfVWk2ެ[>R85fT4wqxغ쬻i8gp)gvLyhkpn!<*r>GoliW?oL9c!KbI],Cu x.m"LLExpǔ qdEA[\{MWxw آh $XyΙ6ePH N|pUm2&A"$$L PR۝jlRvRFC5(DNsJrr䕤f{GpxLljI&Isb&%$6{ Qq̀CwQHY}m$IbdqL5ӊ(:ŅɡB܄π%b@ۙ3tv&;/9yzQja戅dپLj9+S:S"(ǟ}߄Vq)SuŶ&l! r> 7vwݼϗ<[&כJydgnvv^ րVZ9^P$l^+= ar3@|BGI>,Cr[UK. `F~3 la'kם3w\D7Ô!wvI-2%RMMP" :oNC7uk* -EX!75P#>XzA5VbbNTFk,CE禀ɿ́>Ģ֜r"H2ⴖusW)Yɥ DFNɎ3/%#u}d~<]/픒yx{=kP0:BIƖ:΁1#J+2_ Z\{An 8/k{~觑K ^7swBq;{¯bh xL+bMA`|1KdΙę/{rXڮJ]T\S|޹~p~+ xߵpw ]~}?a7}1]S.\nmG?D7Z|y֎J٥,*eRZյ"hDĤ8K(orp>6ߖlDj&mɼm[2eP5p3dn"0f0ʱ$ %KTR39hsKMZ<\dܝ˘YQPKsc %|] 'uL0;ᢊ{gOŚWW~߲9'?w,|gu/ŕ̇P~/~;ra[~r rg#p/#W[oŵ{. p׽3L?-żnXSYKj˼y3l+8ys?wozk9'Db?T:-yv6Nq&k9rz9l3mߑr.]+2$RG$KѶ>@έ=\!.K(%&g#.;ERc ls*<)T6P6IΤqIpr4G4ErkVWN49p8pQ4vmI$D"trXFS7uT(aOyv i Y;&W ukO=~_3U}t~A)jdF8oA^/ gp >v?*E]:}\]lfcgoT_o?[*$׃<{s[=\g!|)lΫgQgoc?;4g:qq$b/7rۇy;[Ƣ5W5s*޼W`Hԇ`EKҵ &tgm-G-ꄬBg2wHU9XI.(]bt'Ie' 1gVStw$#]U>\iʋӓzն%gS} nBpz3Qa$ {$Bx8ͼSh .vu 5 O*u:M*S,NgD9_/Y,ɳP EWv.WRoG<<6]wkߨ VSz3HsysG#O$^l9\G?rFW<{^_j;<W]3&Qw+;3'Gֹ'ݔy蘆 ߩ$qց.E?y˜:Lu{WL[8-EݤȤI%DzLЖ5%8TaTj< "&v1nark#S[s6u^ˈ՚-I99_{GY rFqyT n[0Ǹe`W9;y{yWW$K2=-d`T]5P-.j,OI u:P"w1=Ouluːi5AKw`E9GRLG`NWTxJMqҺL_K>:x+2uήPl6/Eر9_:>/aeI8l[8|γzSq^H]S~^M,[}78)K}.4flD1!}_ʢM6(ڏ&Sb.U^y4ιC?[ ޢ1`$֌7K#:U`Nj2ɑm/ߪrĦm[|4Sx6-2ĉ(6ƸX%x(خ$NNWXN2 MeaS&m4^Z!ړ`MPbȇK@W`Ttt^BN1PuĜNz`eSr93uԘSF{,t\ZN%«B`#H,t;ۗ.DSqyq|;.e}۽'s=벴Ϊެ1ћux<`nwCwyyn .> F^#vƁ)v\^V5ѹnҸ2 P?mM['!%w"xox>wH}ŰR0zO,@c 1>I#mrǒ&" J0QLRa zoKmvr6 *e5+1Z-|G`Yj]SͻcwNi'k]jzU8:eg++p8MzwNmvm7`#y Qy{~^It#z.,E%8_lAtyNwinD=s\5߉ W~bJj]'o\)J*4{sluE N'7颲P FSEL]g.XI_/LbKѲBA? ?ub2 Ӕ !!UT,H M8LU{ڶNW&aH*䒡1h4BJJ qJK&"!6f*TB$ < w3 T]GԌ:G^:ELEK\f1""](jFfY2{|;ٮ}omeM*{Z<|RDgDQeD݋ΑuBK{9r?* tRDq{ε;\>I/xC]oax6jVo&y W5N9 \ 33oo%3_gP:cq3n|5t#xfkKȣ/4m m.Q_Q4MYD);RF,RdpQ%> t)cəqҌrJs^.%˯~^&wH8m0>[l姻wvU c3 ~|S̴GGOqooZ_k<nn@yI88w{j߶EUvU o')8S;ﲙN(ݾJd{qWEUbjFQÇ+i[tJLfjhi,'g v2ӿnRD"*aX/0NDJl&025SIzTFe4,R''XMO2&TMN94mDt3Ot3Ǚ|J'|_Nytn_[hcr_UybC=O[_G>lAD`;jDzWQNtx~%"{x{Yz7kȺks>E.S"xT p-G)-J?k~xor`38;hQd[|!vN%C>U!@,xFٳ(5nl!mL>wg>˶n3.y.-6yx8b0 WV30MiqUSb! 'F˧rfahp`ĸ1jFa8svBG9fybP*ۦ䁍G:=K1 1uUYMD)<,}dGwEG~AuM4|߫#දWŻKzFt~^uÞ'Gכ v^ˁSos|vGt/lWDc".G?Y_;AlrBP nĭ;IRRRkC7g&JG("`2 ڤBpk|xu6S7:g=,,,iq7C@,>;'U u1Id6D*eUM$ mrʂ!aģN1rl$')52ZyI2d^deA5$6D](yquA2|0EKRp>ӖdKT'cTՌF#V*;i~J*#K/|ʹ%\ yʚ)SB)Y ƞ\ yҥڌrr0(T:C#t| 7Ƒo@ءέWa<nzx6Z59{ޫϗ}tnQM "]r#7[. p#_cy+Or ǀ[=|ӿyիhK[hhl# 7: ;BP'CV,C.4y%K,/.#j&R6QR3,>BI ;r'h'G&)N9YUnlQ*T j )2sUԨ&%ӜiXd*H~5BD8*ޡ=.xW:E^zkJIAnuB0%3HFz~] gbq Ι=8Սml {.) pgu@Jj ɯV*ehR~=:r^qF:,ϛ~{#+>g=7e6݀< |p1y(R˰?8/}u{|ϟ:ЯSVqd9gb4PĽcc_\<\P) 1ťјG,CEF ffJj33.)>C@ ȀTV"õqI"1zbl1Br2Cªdp5P Z"fjmےHZbԤ,}㜽 efLԈb_2UShmuDKzkoҊЊZLE!иKWNHQe.#k\:=b.8qG1 d ``;lXg6<*?ӄS:{:?(rpt ?c'z}{9Ey}0;}#O| ۀ*n?|qOo4&2ZLK egt\^uwP*cY,˗\ <1c*#ƑH6#[h#t&W9bőq F$BUERT$xA怜y8%PWMe|H.s;Nc9;lOS8/aZNX2@LœɴQMH.1:f I JΗΥի ,]pP@*C`Ȱf`Vږ uX=A AO|g7 QoLl=sUPo;[3zԎ#}aq˓x"]+ȝ.mY~ ]ơבR{Y/3$]t&+wђ d"[4b3ByȥM,#:T cP,ut_JEH@eN`kqr$fED"d-HR&rO :!^`jzHΙ&EZ,DUDѤI9B\@!y-*0 ǖֵF6ιYFRoeKD6'>;%gEPE` *oK=RUHZRάƆMֵf%k͕Xvg,1sv|S׼?ىe5w~٨7^LuPY_+\?7_λU{a oCt'8TGٮr}׼/~'@ΥN@+E-MV^ҶWM՘Ǜز̖f!Q5`T8x`CUM %@QSNI15lRg3n2%G`h:"~]Ϡ z%ֲsxlQ mC$bFd6 C F43%Ց$[ 5T (ì<75U,u屮N(< fa8fh`"^wޑ%QDm{{-H:s-XKf<(7w?ua뙾fv.cX덫׻s1ȗF}g֍.ӏ+A (T`ˈ~x#f ;k>r-F;yl4vcAk/ W#l'v[BW* WldaOYKGKlYDC-i=JNcKB썇2 hQ)u k P$ɈN*+2da VȠ";A<-ˋPp RF]&dEws'ţ!x)yQjé'WܲԒY205z!$%9lX }FQRTbI"u"ñu~ukZ%#LmC" .u3@+JUI̗}y]aÇgΗz=}b7ཛྷOGaG@_ p”+7Nn Oڝ5..!+'~-%NB~ރswQ?kday8f`EE./ةG:AKRG]! TBm2SML"K UU rέIA{o=TeܰZ&BRSU1F3Z.NYԆ %.WfOM`A aPf(1Hm;ɸ:Bq: ՀM.Yĥ˛dqٺ;8j\aa"M'%$U5U3SvT :_| L==Swr:9U÷smsSoY@!EGFY Ww[,bD+B9r?8Qɸ`%;%0x*X[ƛԋ.i0fY5c_4Z;1 Lۆ+oӐddjb5MI^͸N3Ux1PFY:n4d;q|0+ӶR/iSñc/K32x\|ʙ wmS*uBNq2hFBTR12w89B# 8ޔN<*f(S"H$l/nS.EBMb:1RcALiN[*dUUx u83~l"sv5埇yzQ>zvlDxMvM!68#1-i5Q"6Şlzjg9?|6xes>mhn.O=*<[na 7fy?6"k6REeEXL| X \0V8Q/ kHℶ| G^$ǧLbkB M%kJ5ś^9c +Gx7w}So#gR YJ``%,,s`j@Òl"HaEvʱ8t?yǎp'HXWB4&HSblHZ-!T_RSS*BD/c='/4TQ "y%DsŌQ!˴_pR =YW gm#΀ ]P4bVtN4'l FytYG\4ZeCF3𡗨{990y戚&B.#`Ό0%YGpN⼜4S_ylqН<ƕl6 oXmzky\)iO8;:ngא!0G B )J‚<\`f6#|M-_r4:R krSMo'|||E|4ST慓9 k lۆmSKʑFrJpfnS\ZLS<MYɟ$Wuc0n rx15SyȽb&<1;T$&S/"CNŏGc8 8Ԍ8 w~79RFRBqozkL<\䒅xaf(RBz_N朘Q'/FS0Pż|rLFl*Gy&I\?_"`ŕ/t~L۟ ^T~U/TXw#[6F]_ܙ[5Τ*5O]]#a_ OUͣ.Y\f 7$ ׄj@*hȋ=q?/t,[SJh4 1YN3SM T%2@f * #Ūbs5%>uEl.B=m x8琢CS^XG?_u>춑9gψIKvf1*3V"Q}/ wnf3Q3a}%' 9׵9Smzfs9:NOWAZ1C9ZȪ>IH:pCKr@/"\IIDYIS^\='N?N*1'jpYpNށwYG=9yDJb)Vdi JFvM1Kz̖ck U.0K, fTbJH0)/U^lN$;Gd X0xu*_WUozs&p6MCWYiO0mNҶZ7#fs#_1j^ǎyOws#Ň(㭮Kf;)@Otl*+dVӪqYDJL=iEX&RȤ$xeJϩ)%)fi)MS;4 KJ,?+AG%=_l&݅~;uk=hJ8687G! u@AU8€Z @c0P Xl|BMr^^{ -H𮀦J꘥wc#0IIp2:k\k1-+UV)?E_ ebM;!=n$nL'Fyۧh~X~;Qq9cx9[. Jemz{ԹZO3| /M T)bfR)ƖvڒsDAm2fB,`#AUEhp% wT2V"b)ОU+s/^2 P,!gy YĔM 4J␅ј K,-.<Ȯ;³rh4Y1jוrfc­M\CW)۞>5]lɄ* Xlt)ur٥ʶl C*h&ދXTrm3i@SKLdA4*ژOn EQTTDjrd6~4[ȕr-쥈:|v fi`ܝ͋K >rȨxI{^xˏ ?Ur+ZeR>>/q9)%TɑN6W_A AUʄ<✙mkU)Mi'e\2\6]g^t)~ѥl_KNj,*fdK bKќ̍Z̯%݋ t_=jKU89I3/Ўv*nCB/™N&%̷Ceq?Ŷ,}҂>`2$puqi`hP1}[T72rgMJ]|Y}Jn%z}!.ez'eQF\6"qPH->Q.}}F'60(yeR"xYSxJA <,G[<IR,..Nq]$TJ d(JIq ^V }*,"("EZdlKGrTg_fz\˲d2KC[.l6KڥA8zDcx;zkjyfN!l/`̢lC((l6 .nV @\OGO#%@e}Q`E,EȈw1@?pr! 3)9[K%ߺ wcw-(-L%S[BIj]pW`f0VE[Ol'y%(94LOQAOԉPN555xO?`f%|9E8L`#2Oü7ĂfHeO-J͓JXH/Ďy7hlnFre $ ,%a[Xq Ӟ[>%~9{DtT^EDvΒlt:{bH;W[ĢQEkƩR%f8b4ǒ|Hyߎ-*g5B5E96N4:|I?KKA$#EN1:C PsiɯvyN[׹s:tNCQO~/=z_fpnX@P8N'% 8ȯwm0Ɣ㴼YcrwCW927(.p.%woJ2(jc5R>TAfI^XPs_B9ƅK.NsuJP{dDm yYlsYՙ=W^BP0p&vY:^Y\#+zV KYβ )]\W'AǶ,ƈFD(fXΒt]%>)0Bt^"`g(|qF~oe ] nwfUF83g1 ׀&܏"O|ۊKpt k~pI!gVVFq6.L)Xe,g KnkOnl՞dWF0Syx> ~<͟O8uuu JI3serw|/2IfF} qwQکgRy?<+?+ j[BV_/-4lZqT~hh ?a2h4,i O\-j|W\8邖aCWI.5_k|^DE@OH# LO*J<bǶDll[J~6\/,HI0HyhBS~'W J ]G&An>>j'; k>vrwb1-vjjtHO ldjdj"4lfI *;pЯAۄs8# 0'Iձ[Q  kZ>jfE%t3v&.pg9^:.0;\Qc?j@7VY(F +A5 he@EOug9WUg=7#])q4_2/ξy9HQJPPAǼiD ē7~{~'ϛ|⷟]\ )E ⻺q켾䝀  MdCpe )zi9#SV>=GN|,^*\nbt[[Ax`"#\j"i% wĖX=,-y 4N{\wOR tUpve@; 1NrQڂ߷ێ3̽ UݖXyCI0g+f ViZsj$2ҢM2B(tpb&J鏝ŗf8۸?W`Z܄NjD?🙽 0HIN폀s,'>2"͕"Pp@<MhM CtI0<'P-xNʹH ;jx~*FBg߾}y89kUab6\j_n-lGGRyq/IP? *n%׮ t& BhR;>/Q;pStzh#gO>u*cqZ^z.[ٜNw[`? \`A 0~>l3CJ-M DHbuv.~A"Sk)Sec8#pNwYzi=2'޹JR'a=bڸ!DF2y$XyE)+\%V?J{" O袜ᅾ@^K bW'㉗+obq/ l!D#N2HP]R**vw(-Q:#X 5!ЮS(%AV]!zP:R`""z#NͷN,2B;08׸DB;3 t2 Դ^$Pu,9݃nEaH=ZP':I!ON]m)$ qq ۟9T3$@1v?c[}ZQ(]`5G" |H'|,_]2nxRv]\Y "Ҥ36Ѩ"m2O&zd55TM͒=PK:,$)YXLnzt %87owVL.c+6666"6-iXY^1)<%ЏZs.\$G8Mk^v<M l* \nXq1KZ,m *ak9ܵ6ZgjNz+s9<$\n9:?~- N0ƞ&颇8ڋm.ᒗ 'ܾfx'c~ql)FMʣJ)u͒Ԏ3MsgN1<%pq_Aif Ρkt4@֊!8āAdFf]e S={&}OL:AE'۳:b~rP?XAȹA_td|>:-4ҕQ>BF<'fq3:|!Sʼn-d#6 E^gfyd]tZF_؊wzN- @44POpZ "k O+GAe)ݴm!㷡# S *}2/>^Z~_SJgoQ'RO9h $C;ZhK44\= w/3y  ^љ˴34b'o{~oezokx?#l-N\/2wJv}/{'pN sw:U Oi"ϓsr}"&f;D[ >iXPYME昽_{y{̃=[ lggDmWQCSDe.:I0Sh6@}A@?~n߱%x䷵#$pY8$?DZS֢3~|ٿWxvcYg >eCu<V%B*S )RCc'gQwPt-BqE?B Nigfj*e ) ]nKjzY8tUqo?0C0'^N[~-o 2?/uFPqKGfiGeE:r %xEUJW4V Dz&&#~",¼q/;ϋsK3|uk{Tz_姿iJ؊Wݞ(tf[-l[q5FdN&|VJ$_{t P癦qNt… ܊ksTW]qNڀem96g* 0g%6{+ޤEON O>W[pI=pp љuraRj}P3 0ĭa54Q;,yKw@izuޫjYrotR|?S_bTNwpO?!+:"{:?ޅgK=AE0NG/iyh#gUDlb55ģ\I Ɣ;e:_5)aEf_y\qQBoo"f9 ~:Q $?4mY%axy0tL1$*\юSC%@J31V~sKg'#v)F((8PW5?q;({ *^1G0EYI=9g㢖R>[| Ss\MxoMrAAhPJElw^RO: (z]ƞ6tu+Fg]U-9ſn9Ij,Љ(%-؝3'@]8B7=/ѥv,P\+]jUgEIO> 4Ъ B9[ "JgVƂ *rlITSzܠ㈚a|3% _x(W>wG^脣G$nNjpiPhq^sLn 7"puFi 9x#j sMCI;ͺAY$!4VKAҲa;>k}pۂu0pх2zQtr+\zYܰhbgc)L /18q&Can4+3h%^7a>sd} +qű6P0 A2,M U Hu#82O/dȸY"zk:X؁ЉD#Xq/C,0­ȤCEFF.ȱtP7;? j&PWaH7@[.3@WG(lD ( Ѣy봅mڽgȳ62`(f fڦZLOj%jYagZ &LD \~ ֝M B#xʉU@jmS$`?\`RWBaBgsO`Ps^ݢGCn {#,;$GbNPhW^nC̒daSM/k2l :6D{ß>&x~W<o|ϸ"Gꩍ%ZGER"~W|m{@g?iˁ 9|Xp Ne vYimsHc%iSZ$J-$d;}{ֱe-`Zl=j=P^ہ Lr\E ph:AЙѓ8pF9霅%Un M&P (9MQD{u-f`Z+54ZL,8 j4 0"jXVRDxGF"DkbXi<_O9f}nyo8E&s>J@ͲsXn qn&m J"V5pzNWxe?f }&,`*=_z(gNbmQEx!0'XI\7[ J^lNpeٱv{ٺE&cYc(n )էXۄ\ 6:ǀ"yU M袣nQ=5QpƣwVA,HP {]4EO.YMVjoc.Q@A1RK+p][5vF^U(55xxd.sܛ鹯357odzlEpz:@@?bb`-zs]-jE`*vM#t;nb\OiQp|&WN?h#x #z !E@jgYKs"]#j90VI/ EN߱vkmO.=8?~_A __) srXT|GEx:!ѐ}uX( R7?{̤^7R,YRb/b3p9nPGeMooZ&+t6k9X-]An,}njeaJf `=urk0 hr[xlSz$QcH[RA[s :% w5ze'XDp&"z_C$b|fd:;//$w,*ײtvщ -ΉsdZFffN!kb@u_UHMNgngJtgluY ǰd )g%KOt.VȉI休Frib邟)qJ=¡JD!N㦳-G7Wo'b+[HJjtI2 $ERQHz U~ Eb ?C/mN-Uz(f n@lOcvn1EFH)< :f<uw=BGm<8-B,X P_ϫ#2/(, ۶qlr6Q>:#t[`LjZצ]wb߿[DI(53>< d7~[)1`v՞WkuOנa9Dϭ\4V,=`Bvx$^#XXXx%9G2@*f͒\\(!+>J)lPT}IJq,e?1`H]n;ŎTBoXxv c1c.qlVvPo10L(t)>߹D1x u:n:CuYxda1E:Q.Y4"ecFM/J9(xN@^D'I=Kz=k˜[7"n7x̒Pfglvig;h3+Jǻ³σ"<% G\QuYR-831[ RX6eaY P}/600q|ti``cM^ָRR΄FrfIR0K[ ze.lpy,pS\+\Cg~RdY)GYd1Cm4F]M-јy%>Y#DbBA)`QLD' ґXmYAtxCBCI=,pRX `&t1ؒ_eb,;ya4gF5ǰ{I@u r ~-vFjE]gy7"  Mf>њ}İ%Ɋ\ ˲(jzϏ5N$pW8 t]FX:l )Rc6}F Dla+\^lӑԢLn Cs#0ȯ L 6:5o?¾H  Zغj32g=O_,"ε( %>dAt8L3r8O+sf`:\bg'D ְ=Jb/l%_v;6&b\Qd&f?SĬ'nGFEQijc)|QgG=@劇'-˲r -raeq )8w=8Us7N>4CTC6l V(J7K[Anl5vo64D=wKE!<+mqbXt8;||-tGPx> Q ,,&bGũq"8cY:Nu -ŐjɩLkxr/ISmT1N;IT2rYJD'yX0 ҙӾ: wu  ,]mT)eY:׎Xwl]=l"he ev.k˅ַ!/ WU/EΥ\ ,a=qFlrFN;E9sr)BaƂ?kFQl\7!yD.xӢW uY̸]l#vbN;Ж"[juq*Z<˃Yy}+ܶmF jJ)Ӗ\E'KX @,mDnp|l:KAŮ.><:"X,X`ى*G/pt m 3=}W!)YF. 'ܷ*ZT);}n[ar)(u"BaEg搭%975S Wt!m>\ՉEGey:rY=usE"Dj""-;Jp礿-_$$kJq"Df2i1`*cҖa`Ӕb)ŧL}xrS`¶mR~sc"6Y;JD<="%Ẻh 6:DDɛEzRK_S߭- J[bgq+\fO`DaTX J} 4t J`2 t9g+|\WINxAK9ؖb'Jdz=A>@D0O}QF%Q`Q?)%\c]D84Aek'1թ9R7{0*"SvR;=7҇Xk|h`rdP/xzϲeYtCr\ayZYmDƈGc,'zX (9 \  ]Lr@dC: ~"rS 1I;Zlv:|N Oa|z a/@J>n|g.?\ ]fGn2rgGF7OokpE$bau/XXJ(ݟ>|q衕D ^ KOڂG+L) ^+LRvaΖ1y#z ˭ b}:-;bK=K濾 zzyBzxA͐z9 :~l}_gd&ݱbCTVVM,vhF-n:Ʌϐ_ҕhbblLDM0KZKH ZKEԵ>-dT.F8 ,DQ/Èz$:9xMd%#..FZ8ji>;~gjSAQfP H\||"x#gS|Ba;4ة[I,XxJvYy -=PYJڂe)8ChS \gr !4zQ8!A5.h+c`YHQ#/►CuWӨ1b/)!1;Y SrK\θ\+n?8 u,-7s 8S+OS\L3}Q϶6䂞mFS+51N<9_/'fˢrOVIf 'YꑽR[:u0ǰy@YO;&򖆆 'U79B+<l|"?ƹ `BΦXA;o;1V QdoKwm@F-*AT+U v,i@Ur*j|,5Vpc &fXTh t! uG(eYXDmYJO"{~MYzS8;uk.J;eݩ$Sm}#xv#Ut*^O˶-<قm&̩gL!'$As3ͧ989MTEq"ؖc_8Kg }y9v:)\^ͮZ+ Tcr!p1dP!T[j*QYjΪ|iu~G᪒Nr<$pU-W?w80p 3zH&Bajb=ZJ:H-iyc e;3oWFڹpIh^kI<)`r!Fm 0:qN$Q4]fxvqQ<4x׹ E1?rSb0T쀱l;50{ݯg-=+9v3STO1=&ZmYzy.F5g>};h , pq}]v;ҖvB%FF504(J=˅hNcMPN3WJ$4 `N^m04&nuznJ::b!Flv kAip.5*zZ.>Q%@ G{h99ٜu=;L]|s,0.;vR ԍOa+eJY%. 7u# |p@>!ݧ%saي0yXrM*v]"vXx&6{ٯң.W.s6'udUX84 CW9$Zfg꯳nv\avS)pȆZR"z @oKXx2pV3yh:A߷b {cQ+Q fdUY;66^^*7+msNgm( [E|^r:#v.:!³TZ7aAV>ʳlxR6`F}ǎ:kWʱTC?s<. ef/T?/(\ٯ;[gFA o(30JYϵXGͳseKձt٭pm"R+q,-1,e2R |) t^sӔb|#xvJ{^[*w_5.q)8 *,YyyTsiXo 1\R`jQ[[hq0}Q=hF 9AG㇮+Zz{L NSwv C T씕O >[u 8#CA=sa,,L>fVt#x k;D%JW!U#䗪F^z!a%%s~NryRupA-zB6ˍb(Fk0LI;pٜ&]E?Ї8Z0~bT8YތƇb¢ka JAauJs)|W萃ΠC+W$S2q`kfџIiO߇sKCLAApܨtѲY*Y;cƊaI)7#h'ehB)f;bg-SoSh1&/3DmPb5ZJc3^/Xx*jk(ϫU;1DЩ"-x tG/ ^㍊#v6:aac(yT"V=t`;hg&ha8V0.L5X~5v*~;UòpPL.Y~> E/nl*J;F謊<`=R=J=0NS ^nW I.SSJ;jg(:lJ Pu ܭ-:_AtS=az&^+-jd*Xػ.T*a &*P**=F>=,~:i  q.X2t\s] >?IZmWa9UffIPT&ߞ癆&h6F顁{>M|חH;x6:mVےwn^q(v*Q:Xx*JtHCM֞R덴E5'2 g_J|y8x3;[Xu6ʋ2ԼeRupP׎t1N.ݨPltMڈcΖ0J`:Tdv_$\y8g[;g _mx1tS T‰)PJ}kPu0G$Gi ɠkKYaV˵4f0ǰk(%8Im=ͷAښ5?oaUֺ60W+KKf;=fU57ێ`ݼUe(հԵ>Oؓ}0؂eeAP ba0PCt@}Rw$t/dpzpR ;&t jfXyB1J>kV@Ю 6˱M_Rjg0P>*Ubjsٕ .w#t Cb{ 墈5"X3 I8ۀ+k=S؋Vc1Jd 3Q ֞|Ѫca[ˢ1j>F#t#x #| Җ ڄN0B0g7׭<c*Ilⳑ1;}l`0 %y׻޵e0 P2L--`0 #x `0z1 qh`0 l.8(.ΓIENDB`gambas-3.16.3/app/examples/Drawing/Fractal/.icon.png000066400000000000000000000066331411575327000221340ustar00rootroot00000000000000PNG  IHDR@@iq bIDATxyl\}?\HHQuѺ)r۲˶XnNM60I(bbF5Z(PW:v봖c[>*[iJn)"%ݥv) %EU~1o~7oLa Srt!Oԣ6i@4lS#?qi&um2X.䣆=T1UL(+(<&'9sVv.0-b=m̌:,Z=A\6NrTb(l|qd<}zvDƢ1&v9_<xb#w`5_+[A|.^4s۶>tx"E~.i@.OV`HsO1j-"1H.X?Cg#/]hhazv>V3og}v+~ۦĻ/ WU@)03) !L%ߙGEKl8 >-A\rO:=-c<-89kFWQ;gh#/װv#/{-=,^Y x- p󻻨#@qmVL b(ybj>v\^ô9Eu̓=3-@+$.;6JiP˗ؿ4҃K[>/&2VK6Wѣ!N=4:.pl,-YfAWvIZ0mf 'fNRćn(e.;o?ٿȡb 6 iDB2}Hn!X -TĸfQ,_pڭKx^{9 iBO/C|tJhgeM-"7hm8{I~QA a#1r('HH|i4`AR`*1}Lci\^xXvSX\'kڅ_Z՛s=#c~Ks/2ws 'Rmz gzJwÓ Tm\o/G:3xZ`Yij)v2 ۊϦ 2H`t+O+4. -=} 攕k!yTrVpD(\F0l;ņоB}]H]|wCaK%5>oPz\U]֥ǃTLCe6|fU~#0$}؟eyyk>5Ǐ ]&Do΄G| i>$-Q $yV\Dxq/V4;6lX=ho_RIH }]ܵ`'>Wg!x-Q օ9&ZO}^ r&}C\BވkПXp)u-M(==@T̚K]Çkd]JP^!njE'q=$W*gώt.bMPZS\%=ovyY|o  mclcfQ U"~z{uゔd<{q& ,%o lw4h$sg 72JD{J\:{1WE#dt*ځ@v@{CgCM콶yFn`cMoL`+&m>[>@Ąy, sD:H"Nl:XJT)ß$+c"'x S0>PSЏIENDB`gambas-3.16.3/app/examples/Drawing/Fractal/.lang/000077500000000000000000000000001411575327000214075ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Fractal/.lang/cs.po000066400000000000000000000025511411575327000223570ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Fractal/.lang/fr.po000066400000000000000000000026151411575327000223620ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Fractal/.lang/ru.po000066400000000000000000000061441411575327000224020ustar00rootroot00000000000000# 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 "Задачи" gambas-3.16.3/app/examples/Drawing/Fractal/.project000066400000000000000000000007741411575327000220670ustar00rootroot00000000000000# Gambas Project File 3.0 # Compiled with Gambas 3.6.90 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" TabSize=2 Translate=1 Language=en Vendor=Example Packager=1 Tags=JustInTime Screenshot=2014-12-14.png gambas-3.16.3/app/examples/Drawing/Fractal/.src/000077500000000000000000000000001411575327000212555ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Fractal/.src/FFractal.class000066400000000000000000000121211411575327000237630ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Fractal/.src/FFractal.form000066400000000000000000000005111411575327000236210ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Drawing/Fractal/.src/FractalTask.class000066400000000000000000000141671411575327000245140ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Fractal/icon.png000066400000000000000000000112011411575327000220410ustar00rootroot00000000000000PNG  IHDR@@iqHIDATxyp\ŝ?H3itktX%[p: P-تdk lZpR,G ˚Io-˒,KFɒf4̛yތF-W55ѿ߯ @Lg=Ϛ\ՠ($vӀZZu@l`}(ͳ4(1@dJR]Ґl&`b( @E9 " #Z }$a~5I݉=|bv Ŵ -ي5Q-!=@Za`HoEd@̭@>̥@٘ż T: k5 !O !Ui֠I洡M<)~X Ze(UZҩ56IŘ *&,`C>Mwznp<kFk^CL'Pjnm.Z&ЄbT (TQ/ {yxw\ll }Z@e Ln\%׷_kqsz2X H 'LVR՜wx^{LRP&b5eѮHK+%o3?T6%({w;e  `Ap[dt!~f'ּF. ! L%s¹ĕżT}JZp@RTuo~E]=gJvudg$ڨy'̜(4 < ZNJWz.pipEwC6\9\^ @xilX #y @P7E' dfDi1ige*AT RX!0z-7[ m59MI `ORߘ0t38 n@!ek#,^fPR2c RI<l&x/Uo7j͖9˿L֑Zx)4 wS_")c< hl)I#Q24sNTK]K!o\eBE(O\|0^x{zr룴3ū}7&?'g8?XN$vE@rTp͜ƅN5+~m;;` ;ɏQ!H;L (D9 w> WkLSDH Hp "ȫCINvOL;:)S0LalwQձ={ݿWRQrHԌ#;D%yIƼ*֘ӔUJ KߗV)Mx|62:[Xv?061Gg1?;$B#|p uneer9S~Ҏivi 'w LDJ/v(*(GSˀ pi׿ s8* D,1,qE*lH5Б *1q6/pQ^u#qTD0ݺ!}T?amƒ$|y0k)P!Po4m3('31ʔK1H * ~}*B%Ʉ {6wEY3ݗfؗŇMaZXA ,*1qbw==1H<[GW[Y. /]5S\Ӈit]NJvj9D)H7/F_K?['+@_'>J\ISvZ,g+8 - AM RO F$ar3dٿW~xN;w1={^Z%\}mM>gۻ9+ &d)xP-B< XrB/:G}Xbp!^-!,)BX˙}zq%'#(MQbZT`;B)$f/hy=e/~A0](I) 'I:+Mt6T*+ ;MD 5a;%<ӏorwy:ʃ*?^Z-;oGk< bf@dxD]wEyQ;f?TӪτ-V=Yӱa3>wW}9zcmtW2Kqd8RA \CqXh:FJz^Nnpy;ͣ(eT4szF9hm[GEKʼM#|!gfD0=^gK!dJr$X .+{~5ZiwU*,-h+?/3hf/Rsɓ5&JԨV(>LOS 6v#}= a(S=Q~|↿qpK~e23~E)-V<[#YRF`趏h<AQ69Ji&4ãt 48U\(^HЕt}9^ yDnV7+Kǐ=Ly>[}Գ@ US< e0Zd4Q6r@Pݺ͔.kGk(''{+>Y?T#Ɓ&4zv Qdžcw .xzHB^'95҅syK$&z,Q*K*OsX&O3~ݩs59rĐyLhةyݶCﰰrh&- 0M+8A|3z:[ge3w 8̬ss(gT"tTP5HJi8u5g/q4ݬjkp8yY y&Y cLӘV1TMm{+ܠ5|I NjDTTp]YE(_qkyi`+ɾ$I|F VQXGo[j[/g!i53saddkkQ ZubzÓ(z@+OѪ>kaU>~FZJS+XpO5>,7 W)7LGgV#J#G؏smp*jtdwXEz5 5Kq+A” Z.1-Y}3?>SG]^ N$R",&ajԠ"Stѹ@9V%ނw_mB3{| & |ykd*c $YA."@Fm/4JMǘcl<3}IQҫEamN3HkS^Ϛulm"ATJo\gz{j ;h-:5A:VK^COpHM2 M|Sy^yJ)ef iG]vL2Y)`{ά<=CE,N&]) H,D>w3}^νgܜJ܅rt=h~6Рdd $JZ8 v~)ͺnJ)IX4.>7]NJ*PvmӠn/Li`>[ֹitYN.:tglCdHR>#UGݨn1=yCBMٶݏμLɅZw2ko9 6ML5]擶c 6.nn">A)jB bT1҄b jIN.F {Y(;iU7d@E&eV s|6 QKٲX6tcOf `.R2 b%m0ʧ,DmJqϹf֋$k NƔf2(jƍ3~b  {{'3,@*CQ[pY9$J(EZܤ_GS:&A)gf iq_{n=*t~"#5{ĹSdn c;WDSbvi5_ψNpM=$kJiIENDB`gambas-3.16.3/app/examples/Drawing/Fractal/rose.jpg000066400000000000000000000644721411575327000220770ustar00rootroot00000000000000JFIF``ExifMM*,JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?id1yoƴGsXK%rqh|s[w;BOsk4O-Q$z8*QN(.Z\qT.Nj1~#&I$^SZ"$ZűJ ]gnYx v4ˠ&zfHuXGm;]a"b<Oƥ+^RN;zܐ-OA [l>z'SI&fffE S֫@ z?0_[OX϶?&ȞQ\8F/_sBf5zIml@aZWww F[i"u8ӣKN~^ELϵ,c =V ]"ju7 cH)g~JH| DC^-p' 9,,yA%"|44*6>Oz)xkR9D>f$QNPP8zQ~2<:֣i灹Ii͏Qf֊Fy5i;Ȫ= &"-0 Fj- g=61j[qUsIV̒w3O|Sjh8':Sy 5Dy5r eusMQ'htenF>'&+^mA亸;A t_J+j'C8ZE5mn$XW?4 ]Ծ\gu8(ǝ2K?j+jYҾwpNʒ~?iXjv3jdg pT4 NsQE,嗜z{08nʗi :PGcNҁ4-;A=j` 6Sۻ'ܳuM?x?QRĂ(G\sPC6;Irw#,'~}V>hYM<&oSVܢAĬ|OS6W! n $lq [7B(<]j|WF 5= ug%iLp@jPI46zR0nu2HIՃp98>f9mT/g?xF(FEgv㊱}#2/52?niT[1'df=iFϬƼlϊ.׳wJ,02})]P|ӽ[Mn ҋ9i(,gɬٮɴTs+ҳaDA%%^`6+2Bi vE1K63>ji\y1f]0^\=̋' Bk\lq,2j'=N#$bdgY{|Q#*9:S/cܟZ.|ǏVkZٞ"RN իOU3u1[`X SFIp(pDhUa&d@}'id)Ú !/d+aq4N>X\xԶ<.՚ijV?n>YT=jrry닆,.]4iTrXZ ( 2 J\݉LNPe_a\ZB;Zо<ֳ01C{Rܜ\y&\{}6=>k?v5w0i51.#=lt)Js ]: DF0< s }w,oj[wx5spI8oSҝE-5FxMr6Iw|;cC5MxZ~UzhNUҋ[ۀd?}jH1T4rXIVMg#MwfOOBvotTme%EbLY$kZhhNZouIv׵]['\9pšS!EX{Wv$B{QJ̻ջcMu\ZhBNYϹB9#V XrOsJY Lf}h v2J9=:wOP@4P̥^;2!xvUd@6;{bf&Kʞk3P1Jw9RrW[Og3}p:z~ R$1å4SQy55+kxl09ctfI+bH60A LKMcz(ɸiJk[N/-[}QCXuO גgVK% Mw0jf̲\O%ĥݷջLt_8֕iyB ڌqU(7^XQn"X_,*GqM?jp;Ҝ=hc[2v$f 1v,eFkF/Ftӆˬ&9ycYrKN9嘃*eM2=N[/tQsp3G[ًqEU,]5<'Yʄ6KUp+cjaAZ)3D J@cT$U;y#@rGjx"EsRML?2Q1)US{ma=(RW= l-λ: C1!GZt6c"JRyU@ ڦH$ *J[jӏ+ݒt)rj࣎ssdӓop`b=Z8K5uu8)&6q[MlnGGeol d퓐~ޠ)qV0RJ~#EBJH8h\ ǽdZ<+7ySK0ryʩԗcHI:+zTs2|V0ZBX}:uQpjd0"GDMt5ҹ~GR4WiYo`2Fd#6?f=EmE"4x!Ff`:tH/0wD9-vFܬUAKƣrE>tyKƁ9/Z\_ijֲ1qBMY3&Rw-*cbO"6 V43J;(3QMA-ڱZ}jHjcOoҚvI8' +SO̰.~Ru 8.͈#QIk u*jcϧw:"MOyEpU;S!gқFj/h|9i(R3RO7h2cBZ^>UԷ Cjк+'>ɕ jXp:6aJ.[XAqq* ȫg$wkxvjg3b[ ⊜iUQYl[h*iuL@MTcUQJYBhhMpZhPPo($4m Ãҫ'%vLjCk*fF"xɬnqT+(<_ёyhE t$$o+ar~Q)l83&99Ym% QGdRq-ACR`sR T˜Tw*VwLfPʽzzTwppXVU(AcBNV5RÀl8 NB==*#U4yv&iy9p*XvV6cҔsKc-o~Pz<&ⲥ֡/6互nR:ǟҬXB7-~\\@j5f̑|j[SN:淔'+#+׮;Ҋ#Ҏ66:PAkݭ'(~t"XZyr)ԖoxGm1lt̖A `t~o*bpǚ I*$BlǽEOZhݟ+7`ROV~h%% z^xՀ$2=jSW1Rufo*)A'p EenrgN R{9Aq+,d~:"*3ֳlHǚ}zSHc⻻]6DDAQXPJwVn<_j#΅}9" 6Cگj"uw$;&*2x8.YQyn : + LrȢZ&eigX;J44{9 j 'OIIc.R(3OҦHwg#˜Pjڪi5?aiKC?U9\$>5Sn}K&~$jƝ cװ73|p͢;v1Mtl3 8V fͺ7@G9Y=Y%]j嘓kvsna\XzVon(jމ\in TyVeglYcҴ%ăqXٻPاFWзި{Ԥp:U#ۤl%{U@L=GLFصxhIka_\ƽɮ@ۯچ7Em#~6<7?c%R_+E8XRPWuww6FV+xQ\DcUNi6Ŗ92~q0@v҄UUV(. sEI:N#'IzJrS8:-t,EpW3q; V<IRǵLff,"z(h IJrX5Jw'(gΜrtUTPcSxE]Mq2WQE)|GBCrO<(>a6^(0¨G![G;YOCEN|N/-QA`3]Ωwlшe)Ec·i/25NGfMPtzƊ(C   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((ww"9!1AQ"a2q#B$Rbr3Cc+!1A"Qa2#BqCR ?\&).s$4nvEMvp:n;,yv 3 8ܦr8Ad@F50WY'5G*g8{zc痞XOA̽?l%Zϴ?e{p6*53xhl3Ect4GF""Cbo]&7C^3@-`) yRZFc" ]FjiƯd![[ Zn1ZF,3Nd R+_/њ'l[UR9v KzDRHNxL&rHu|9C'9sAiF3< e O;qL˜ JW/H}4|V+٠r<0uPv*08U4vx6C AIlO{Lٜ1t͋rBj{Tdn{Qsv;n0=nn4&~,FX07U~B-Ϸ$KzGW(܈"`{ Y{u'[G e a%۶ Xvxe t>;E7]$UL WJrWL3/6?Rd""p rW% 1ts縟ʮ/Vgh8ē%{l(rocV~<"X=8cl|Sʖ6f]IUlK>ETayyn(y5`.Sfth!JS4 OkMB{m}#縒JdP81EUSdqyLX8 F,iNJF0q iuۉ*$ϳ"!^U 4Ri 5Ồ$}Ae:em.|F6Y4QDM n ꫺=rY#]l4< ʝȝ"%2|LF[[Wmd&v3Ĺ[􇆖,`-:Gs豦 ,[y ߈l#$_)|Q8䗝q.6vQ4m \O+Et54HнoH ckrVM;E0 ly\ͣ$.ŔF R/ϱC]<^JVҊ4FD}@(qW|/ZDሆ"#)mF B%حl9Gbct?*dMJe&/tgp}a٠ZK=8ɹVt#mjZֶM5 6!cuhW.=.Q@=cvSu!q߸n$۞Ѩp4P+UnȈѤƲ:{Yd|li8{9#ۄ=Q ;4SM5ދQTSz̥lYo6vBtcy)nHdTUuŪI%7V˳6`Q[83m ]@Tc OS77Jo |N!#ƒw'eȋ}k䅐9)~GSĄVo;e^]@nn6#? h/tO3Yǔn#G*f̬d0Eup$%CcG[-'LmvΗXL1<&;x8nXkNi837mLs{ kH,R eI`ndlٻ@:܉Du.̓W1%FUDזHUנ6. *Sm f{ &xا3?yk TyCqٛ!kLBs:E!c|?VBh?5k8J< 1'# %N" `p^?!SL+k pRc(wI` % 0Z&x :*Sg5!vJmCeڵ$ {Xe sIwbçL$B3w\x4lƕ?gyG1XVvjjhB+Y]䐶5AWp~g.l| sEr^Ct?O*'zT\p, o&i:&u?o(Y j!e;3`@W-tE|iLi6do.ܿ'7#6Jn#MFM~@h9D 3 Vcoh4KZ,%^>0s|.Cס @5+dwM@44qӢdgI$tGtyTL(/"_HTrKMxNVkyu&@bQGU1IT -2]'N 7hE Ț84t1G' e4dw_![NN֍, h,NF:9_&{@RńDn(&lFB΍\4\4kPR%FL(j"Z3H",6`PظO{x%n O![z{ɷ`ݩ¾}fb\nP7q0m5w##7 9--ױ=]=0^G9:Hޠӳ?nSlH['´UО 1^;x[u 8iSW!fBI{9c:p 6 \Mxfr {6,!l+nf#Co!!}-Ü7DΌMyS/s¤8nUD/шNܞBL S s~T7(3fPyGI链ǐa?m+5c #=h.?)n%9NzLEn)a8FkQW/ȸ4 }E#0ՊvG<_ȼ# *͆Ksy %΢@([P+O[9%EFiel[ n;Ixvn1Kp `/LjVuȢ%u!^h m5 bvNH^#nח[+qtzhQuMVU_ʩ%LW*0t"k=CfWi Tkz_w6Y;HXGB4(۰FjUK܏\QA"*H:8hvPNlм2ٽٺ E`1&[h\ISG:;KGG ߕ'Cb>Kv<&}2BOܒ|Ff-*?%ܡ1]>a6[]7건rvK`l\{cdjO61&#E} c˓EsճJ/\x:g &íc/`PǑFljiBuΞ2g7r`JID;I Sm{uښyӚeMQ@:C+Z1Cl(Iy Ahd'{SBf<RUAI$cJG%Qu&<1$]^P,#,и @$ǔ9 WW=wqAFwSqS]⌾T6w;?MZŚC%MNuT{U㓛=?.D*k ۄ ݗlm٩w6@Xע@orH:˅ `׮a|D4m`NW&&_m%0 fHxBf4Ae!"+'p$Òa?%lzGRC?f} gc';Xlz$sYYp1Graк ^׷h^7%(lt6Et|`،l? hr2yCvFM DewIg%#ڂ#.Fw-C-"c@#dCNݶ^K3a*Q6{IQ4( nIlu--hnŸ&F(Ot2o4Lp264#K;7q8zF+c6s<5.,MsG}ꌌlN!t~{!6T0]70}5NԂi^suZ5f7_ R.hCSHSF֭xl”c ֱ?M6i)xUJ|_Zj땆aR#4OLϡ!p*sKGL6K C6H# icl"  ؚrUD̨ jSplPrg[;<1=ݎlu´RgJpOMv/=!{%'+*sRtǒ;9#%B "l_`+~3 h㒚?RgHE{rq,[衏F1wJqY ɍ e\);9p|yzf;]iPA.M[Y(\ OvLΓ!'J߅3 wI{ -x?D߽y& t@sf3ⅇX ]KBhHo>PyB7,Pu MZ%d𩝬Ӫ7v)Gֺ쎠o4='g51L&TMW:oLhe1ӲDMƎ&x&xq}q@6x ϑgz( Izf6Ii.vsV#&fԏXun*X\oSE\LnGDY$F)3zMs} -]nɤogq)\t|sN6hJ:Ԙ'A{5(Ĺ2GpJdvܯZA[z_䈞x9Fuic >Jt8i6 .m !/FXo-!DuK~ /ڧ-k>+=G9usI3ɖO6m/M~3c; a0͔\wW6f4oFDzCJ1iXޏ%la c#Mo00u2r4n$쒼萹\y’ً>{Ѻ,J6nml'C=nqD?51/Qct.qiK&(.1ǸTYfןp?eH\^M+Řюtg8]9 M\I^7?r;TsIz9fq ԝ, lKHM٭"7?0nn̤JykC< ]wl*-ar>Ji #%Aa5_+FcwzS4j7Pa7S [#X:h' N-1"s84L5G\%nx-qC7b⯯Jj$4DUN;XCRaz]ZHg7\Č mzMv.OF'xQ>SM6,)28A{%stqFFrqlc%gzΡ7` c^n=I!S]n\ʄtrZsؤSKN4Tݕ+Iq66H$n[6 !xDv݆ӲnYs13${~9)\đRO ? 1NW6l*BwzoJrFS w U/'k;(<@<(a@>"p7FN'<{PQ;IP8HMZ<uB2cobqroBEeRtʲO~Pqd$%h'{DDQ47v8fNK +[K!Α 8 :_\OD\4Yi%;@gqfj>&X<,x;VJ xxdl%Wi3$mtC$Ϭa}CҰ1b\+7:2%i=qhYqV9,/cGLC'BO0q4U/`{7P$.O%wbxAJJ1eƀW᰻'FGV<+1uwKX11 oxY%vvnC5H_sL ΅roL2ͭV"ր$8 lZ@'rmZX5PYE LJDB}CL1bu8+ \I"6e^묳7!H]ʦ3ʖx]@x)qaƝ>=N߲h ;0:;#CüȆ46'.6G4UxDG :lsIJoPߎ1\2`]4TA {fjue'·ہ򎑡{ &)a#sYd$rΟVB7#NKud蟤;ip$ъm}͞qg@"h\>^$n?4cygvRr٠Qb#$9W`aeN|RxPr!CboЇ P\ލ;-9X`qc#)\<#0% dL 2V%>,-oY!$?* YfAYሂe]pYÝטdp17^s.ciwbQ w8C:2\>$qlhw'C~AB{5BWos@p^[@J&VxL|DVigcj|q5,cƒZv +(?ORddj$4ڑ T95E\jAp'{DihwnЗ0l :Ip$^0*9<t- 594j)n#w$!smO'QR P5ȭZIAq;d46;[-^QI2"sI~B{ uKsvUfDdۺvj\ Ԡ ?[gS5~R܇/D,:P߫wx176Sk;mo>u %lӥ2@{~amFwx6TiH\tPD.۰M]M "7ZX(ʖVOS#eNL``SӎETV *6E;k77F>Ж>:0|vUE>TQ J؄NP?d!xϴ|%SFndvV嗲^Dl%alMIfDV5fҮcd&SWmP3'+ݞ CpN1LjQ'd[X`j9,1v(pְ4m55I=6pjX.U++c@rk&Ƹ|,qڗG@K3$3Nhd;[@Q;ld2@oN 6\'+~]3v4GKuN,5@w%?ƅ0Kjo0c?& mՓTmigkO2p_^ta#pʙM s?颋iADe>#֓v\tn"l>7쪖k5hwsk:;TKb X~ʿT+s-K:fM _)lѢĘz5|H;ݪjqx8[]#JbǶFST`ŕ?kH&U0 cy##C'>%: =Ӥ-ltNI5.C4'Mv3b|' ;tv h[вC@uKuTH(_pDuQAh\w}N տuY=vVuKS&|"INև/ /hG+4|X53o#厯eƕxQe41ykp/p.<Ʉ_,$?u0&Qy %EFG_2|傷Xkfcnh4vS֖|MT~6+䊤VS]Hd83`L /h ReK y,%ڈ\8WfM;&ؘmR=S;^Mَ{ mpy :2kA~1b<]N8l['*lq#*w*0]k'ԳLƚixM_4G?usqy'uhq U;5!{^H(6Ɗ7|yqNnm)-,DŽibb}ŕyڼc_Ut>øNnD%w4XHtII7i*yuH[笭7YcL|9 i>/uۿ*-.EEf=רKRDQq }GbevIo^+}CviX޿>ia*e2hUt Uh>ײS 'F !VFkq(o+v\b_f1Q9t V\(= hB\fG d|%[(}@K`Lr؛'bs+,풌0ƆB`cG$+M]0V[!顺AZ,Y4QMڮT24s_Ήy¿+h%0t<:L;mv(6g]%_`C 1⪒C@6Lw?9BΌ,X=k^ebH=xA^J}6wR7Y5{Ȥs9ܖ x{Ud `\rX* lRx+>jn1||Y6 q#"7.ԛGdžؔ!57 #+K%nυ '6s̜ nߋC(,@q3=0j&r#QTY'd̝8̦Lf{ Ozs'n8S3C-;g+LFv"if O:OҠvibK!{!Ѱ“HF6Bkdc$ `EˊZ֖Ś)ufS_#~ߕ1B!cZ'l~<˄&A`])u~'e>pr  neC(Xe?uaCthpos]`i솔e6VpRi$iCDKEͿX6,Y d&\*ck%7 "cfԧ{^WS,39F2:FAf͜}2!'tM荤X#W S"!#x1YJ<,c\Ve +bxqJP#u<fU(,c^O鐇GmRf[ʇLsGbadFfQGۆtp~kd<%dV"WtT;k*ƥitFNrIKl|yIkN;/.8rvcoR6^ؽOZ/gxc\۴rF@u)fAވ; Pcb!oh,8_``ukĘǒ)\FՀ _6@Id c7"V[ :9\ `Nn%{)h#nq?jEd0ecvv6 y>P锶뺴wUHg*797OFIǩj<">'b d!v1n`lcTDHje\AR9XfYc~Ӹ? b78.A[?좂GmOz‘Lr򴭘Q7Y0sR^ 6&Az]3C(gN;IRHviwSkuN8lH7ӿ±_l]4vG3~6U7ڸRzŠ!4u/ ӵnkC[C@ѢDpmZm$\_rV iZ5Q1WQ5prvsj q5ADfި3B윶Z=ĔêHZC껟c7"ϔާ#fAb\KeemJ%5\L֕ %•uZ:66-Fʙ`u.4IWVQE2{kt"r Z.qO- l}{.I(7>W#&B|L_@ F9OT/qx:ՌY->O )>l;1Hñ&H\}BX U9cfj6C3>g10saro~ҧ?oO}/r[Cǽ?^ڇ69O%8iR]~j~>#Mzh֙Ξb{$`r X.CjQAң.@|>LR7زQR<)=yLqk4&>>&WnFֻw+c41E9 ~/rv^g+?@l p¿QMf;VEFf'9Ҡl49.f̦ûl1z|rquZZ7F\8R4{t92 ort|9Aj*|a}YBܠ;+#mPvJ"iqڷTXijBWt"rHRp ! ,eQk6юy}_ L).fU\` X٤ߴ+lk(˶8Λc&EmUE漣|gU7a%/{؊(5șq0@ذ4. /N''+ᨅ7$Z]1Wt8Uc՛Qݣ~S3xG!uތL>J&k<-;mP6^>.`/9@hu CK̔XJ䓛'v< `JMFGoU7PkI'` oEyhώ@/`\gx#}lN=&pOU)Is>;en+y m\ 6v)`{0oS}^ qfkLkc;f0G4Z,'khm Q'4Bu]AZ,XuTEe'>䏦lKw!qQ|v/JJ^Qj9g-9\Q>T w+TΊFcC$Ah)4UĊ[d@g195b^ؤ,;b;RjKE* " OC%VKK>񹢖bH\.0A4VҚFDR?OCA!5ƣAԃoqws^ޡs~G*ǩ N[)N]3K %;`1Yu sYqu<0ه5jwe W/cSFO?PQhɗsAhybx'd H ?Mn7M\,ҥy6Gv)t~ WCpπ{`IrhSkѨIAs$ةQq 1_Hb鲝wrG X)zuxiu*9GxYi'v67l+{/elb|!iWw{)V3'3dH;/qjd9<Įsmo+Azd9lԣh*MVfdHA!!pxMkP?.s pOq ;^>7muyReʝξ?d# P.2)#eDf#9ny[^eѹy39AvG:u+d$h.DPœMdKn)`[f<=ȔdW%򼓺0rw4Lr샸>ޱey28K(ؾSp=ck:s7e˕N V2?-k8I~ aNȲ7WN,VSĝBj+%1m6jpo cr%ЭhhFr$u8Dm^;s\S)2‘uh|bWO~m}迩[~dw,^)r3wG##Kn &͵QC% lq;r0.\mv$]27 ]wȔEe#Υ˒S:tvHI;G4=ߒ{rr{>Ʀ8@?{Y!o%Q3n.P[Ѱf85`W.TOQz=;^Z@'ʘob&2|*zc㸭.@Mq%'{vIqLI\O6h\TI:}g]^P[ R{4uld_&VSKfu,k\y{ Py"rfKd +rS?gambas-3.16.3/app/examples/Drawing/GSLSpline/000077500000000000000000000000001411575327000206345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/GSLSpline/.directory000066400000000000000000000000411411575327000226340ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/GSLSpline/.icon.png000066400000000000000000000077151411575327000223620ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛypǝ?=='=!`.؆ qMedˮ˛rv7nծϵĐ9|D HB-=IC, ߪ7o~#ĔqFkІpO5;7S{b4eݻX'ȘsnӺFMFDkoߒÏ6R{2|8җi @aW   Ib[.^*¤X<Dq;6%8 p(x}P <~_!] WC4 {j઒TvqJ)wg>?36WM꿾PfFY.~|O>,OeG- SuCMOXNa|p&-V(5'A.-3c >߮eQO ]O=IM /Bsc l(MDc6!əabI+6!"n˥(~uz}X=~%ѻKYzBv@is--1pj;>1哿tB0ưr~"?+D[롲"z@#5\w7;PZmﰉA(#&"-M:LY HW+  ҁP'_ኢX>lO?;nph;U,cW`,7*@kqP`l@ai @P 6 L§bO7w}zGb!5gaY"v 4hX͍}(o#m~\37gw›ec9.01 h•WLtyg``Ul|Hka7/㏝(J=YcL I0ab01 9zM>'d( |AxObac~){.PG:lǺcI+">D|o7.̏UC^b/ŞIm''c%m|km+b Rc bj _*&C%e*^.RKR~ԸRϓyRoAs@cz뎰xwv.<K@JRq 6{K_̞ˬZWNGs%W\c !uR (94Zܻ1w>+O'ƭPBsg#3wW,sAipӉ20|+1G*AÊE cP~K)s '{p18n*NvP;PTEkMHpT2u,'c.]N7 IN%X]Ƒ}_ɞ~ɉ.2R^C dRRG9.? lvQ%"=ob5đIlK :OR2#z]+$dڃd/?s.='}~)x!jЕHԱ8-&]R2`IA\og_=̶%KK,_[6+26:$+& q{.(vJA@ZJ)Q;hn;AMJz5@lz:Mm<#с~t88v8i!+9r񿦽R*`)i|J sD->' eMlhwE} "ũCds瓑;=@(i|d1*1wLa &!Y83Ag_nPv 4X8>֓RZ4u L"{ dP]I9zz\guog>h- M EG'ő51sBt0@xYmmS|aG-Wo =C@I $F5(q& vKjUZZJ$Уo-{L]t /_7(ɞx,%B}:IeopBXO_{0-{Sîߡ}*{!z !֌K#Q$#Aʨ*K*PJ@J!. &V5\N^Jv:ښϤY,[i3uY{&۝J\upǎDFt껜PQQɎ҃#v*0.*l#1V$jE!3gI'&5+Kw.Jl|{q(}5o!?(;nDF)tJ2'NGkv~ڄ6ֆd[!{8l!#h]DgB.0&"N諮6GIV~[WRYt#*LFWͣ8f坾%%WRNB (I@HC!AM5;c;/%wSOl7}']}TX R⪛*w3`9]LL~nAJpnP"8LFhpMO݄~ t!-ֈƮ>ŘXh?Y*JeE)8?}$<]F}`穡dRa<* z!n}+ok<9|d i QRK2rf.vpȗB~[ % 0MaǟoT|&ݍ- cIX|VЂOQ3j*a0 1;c ŌH5i.J"psFnS)H+ʢt/)g ' YCOCc&$ _ ց$`ǧ eٚuӊ1cHJ;p\@G?|)K]!۟"d R24Uf6KK !F?7.a%)mc'Hv=顦Ꭳ @?1C %Qؔ׶r?1#3{-7w9{@P)%XGw3GwVV~B ~ɡ>`$S.yEsY`)ΈDd V nŭ7x/=C9PŸrEV˝:ٌ(*#<|I5GQbp觵C3HdNӆےFd`8%byĔtVZO2~Ѐ3-05_9):?=D7UIRbN م;RS9YMWg~G&1#ƌ=?|J`%608I`xyԨ3=͘Lx9.$G^|on W[x JM1TR| _Z֝u KH32Y =BS3v:]ܱv 8J&!" # >1U+7paԷ֚4o\hňmR? [#P49j-d)r.9 @=(16n)2B !u ޮ#Ee0V.GBec\{z W>l<6Ë.?JHV#@1|~Ať.Q\@07gugfpZ* 5dAf5%(3!ra9=8݉-Ua)AZ;/iYh,ET[Ml)x>, 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 "Закрыть" gambas-3.16.3/app/examples/Drawing/GSLSpline/.project000066400000000000000000000005321411575327000223030ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/GSLSpline/.src/000077500000000000000000000000001411575327000215015ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/GSLSpline/.src/FMain.class000066400000000000000000000061211411575327000235220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/GSLSpline/.src/FMain.form000066400000000000000000000017501411575327000233630ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Drawing/GSLSpline/spline.png000066400000000000000000000031401411575327000226320ustar00rootroot00000000000000PNG  IHDR00W'IDATh{lUwfgv!D|KP*%XM?T$ iJ|Fc|!j0 Xl7`}td9;wqt!#]/'<Ѐ(3=ߧnԬo&@8R  !I'ذz $D|p˺%ޚ#\r@loeNfK(q`-V= 0 T _BôD5b֗ւ5z/tX{!4[si`ٚ"Sdxfm%n$Sz`_#4xës=^'U.m%8 ho9 Rm$]ɮ!==^QNФav@|G 3U{D0o=h7 0ail󄇣W:wmLIzb>1k9#\c&4uϒ.IZGKSh39K6^CcIVˌ?;60G^$'?Ɂf(V[f+N|y_~L*!Jm}) a&Z"#%%0#84KT}@Ҿ۫@b?y$X_[6GTk]JqKOxakB\Q^+F ~@ ܯ8~> 2ʵ7& Fy[*ݗ]=sF ! )rFŕ}_FyNWSD FķgvX٤GJh'tlR&k{2#,G, R"d$λQɏE6^aI h0&{f  \cYAj|M-~RsZas!Lu^Ey<`4Bi#ڹ vg1kpvP<.W Z?2˚BI_UJR> x3M>[t; y>x9U`nR(gT$['[l]UQQAsK/ej`K&BE(6zxF*1[ @ 8X8&H$ lF(A{)/4~(NɾmP룝X "[ǬxLȺq-Hy]GYVjϚIbOO&K^'DIENDB`gambas-3.16.3/app/examples/Drawing/Gravity/000077500000000000000000000000001411575327000204615ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Gravity/.directory000066400000000000000000000000411411575327000224610ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/Gravity/.icon.png000066400000000000000000000105251411575327000222000ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛy]U?{^}KN; Y 22X Nc)3L n͐CgIzw9G/twN&ߪ[޻g~w'Ȑ|Fk0] ϹM&u&(w=Z =/_RQ7(?Cgߔe =4?߹ Xw^xnG*`L}g?GjA/.ʿc ՛'7S?x:>(}LJ_gQY{׳D L\GVv>hxR ?qؖ?qgv&)஫ 6gvB]Ϡ+Gq<">. ('!&.%gL I>VʎX*TS5ƀ1E3g IM8kne59| 6X{haJ0FbDg/Ӝ5Xs:y3HazQ~e!iw3{ơ}* #1V@kHNP`<@ai @Pi&&6z5[qƉ0mJy|-Hvx~DABhc{M=A/reU:OW- ,6m?CW[nMLa &bEq<^}Ɡ; Pun3|Zm'qrA 'M N.-o i' c2DF( >gmWs g'"K!,5|@['tRRFT2j)"Jq7>G0βKZR@{.Gϱ̽+hEiFU@Jlb8 I=6ofjSX }}3V[꘥,Ur!c效$Gӟ&)PBsݕE-K:= nF_F2u0uG9^ZyfK5R H/VR)/cyZBE,dl`mtǰkx+2l^CկS6FB9+R^̒JFո`&(|π;!)iC0#mzڏm7!K:8JF-%Et Ws2}yW|86 ^j؁]G(=r'xJe)Uj}! /8LȚ*+4FdsWDgY4omQK H-k[7i==$ ]Ne<TV L&_P󔂨J)sS_sh#1=ŋ ZZy⿟"L~?ωaꎐQe٧_xZJE-%MBb@jzg_S=Ud /{m|Q>:f p{'鵔%[@Qُ9I X&)2H"SHf籣#6OW[HZyqGq V0o,-ǙsjC(kBV)gZXBFf ` BYղiSR!,Vky߯zh&pѮ}aRDѱ(?R1!k<W]M3CW`(R()0|׶6PP5}tc6͒jR0(׭kalvy];.0!t<8^VXd?&n&ځ-)-H7B, GO˧0'+DO|$#hbhQ1Gg| 5k/9FKC9m, f\CkCCS;;6HJaeL%%b81(1 PRl)90[7w"!O&/ډ,ZvyVbB~n?e ̘u9 J27O+O'@w-Ǽ%cH$4-Qn ،詡db 2\L0O*L0)uBO,/2kI D{I- 8Cdi:$PCI)̩=koס,{ CfVx?/)LOwߘU0%?"#X(PRRΣ \Ku o杣eAS0 J1uGITĹBQZ6&a`4mzҟd 7Oznf =h0[#ɐR1fd=k! I9s]uM~;ȡSb(޲]ز7NzF6`6TN3 !PZ' ;7ydSKѹy5r}-63`' mp#Lsߊ?RYFٔYg,15/NoG7waTI>3?q s:$H>}겔$n-W =bB7LKS%%h_#G!?9`@$ -y/i;JBkU=C s 7R -1OxS&O?3+n JӒB E9$%)98YԸ%3K(HMC& c|2Sw0?B|&ֈul]_B ž=[qzOTWaq.PGNf2YTPQMl&gSQMvz2Rhn|f/XxB;R %92:<$dti9,n {ۺ:|م Ck[7Aٞj'*@T H+3i4܅YV̜FzFj 'm 0uhlpX~"g;a ":ثÅ /$)w g_|،h&3NkcmfgC6|T:\3&~BLКtG1C-R2((ϖ~[ n&"B(&i}>?pϽ<+p{I$2n2.w5GzFhͤl]0+)'|"GIi"#>G<EKxoȕVȧ,m@40ƈHSh.20)&d =]];2s1KQ!0=݇tAY|m_rFgK]z(aNh6"T\0<,(@:"[iwM!H)N_0C"8CWp9>BL9]?-9Sx_iqx7˶"[i ܁ͭ={|X @U`)Avzۯ)9irZ)Zœ4jC;m-tV?K>2(),hK+/ r:Mv_XOVֹEqttIENDB`gambas-3.16.3/app/examples/Drawing/Gravity/.lang/000077500000000000000000000000001411575327000214605ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Gravity/.lang/ca.po000066400000000000000000000051401411575327000224030ustar00rootroot00000000000000# Catalan translation of Gravity # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Gravity package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Drawing/Gravity/.lang/cs.po000066400000000000000000000044541411575327000224340ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Gravity/.lang/de.po000066400000000000000000000044671411575327000224230ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Gravity/.lang/es.po000066400000000000000000000045571411575327000224420ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Drawing/Gravity/.lang/ru.po000066400000000000000000000122051411575327000224460ustar00rootroot00000000000000# 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 "Небо" gambas-3.16.3/app/examples/Drawing/Gravity/.project000066400000000000000000000005341411575327000221320ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/Gravity/.src/000077500000000000000000000000001411575327000213265ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Gravity/.src/FAbout.class000066400000000000000000000001071411575327000235330ustar00rootroot00000000000000' Gambas class file Public Sub Button1_Click() FAbout.Hide End gambas-3.16.3/app/examples/Drawing/Gravity/.src/FAbout.form000066400000000000000000000015371411575327000234010ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Drawing/Gravity/.src/FMain.class000066400000000000000000000134001411575327000233450ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Gravity/.src/FMain.form000066400000000000000000000056321411575327000232130ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Drawing/Gravity/.src/cBall.class000066400000000000000000000003171411575327000233730ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Gravity/gravity.png000066400000000000000000000156541411575327000226670ustar00rootroot00000000000000PNG  IHDR@@iqsIDATx͛y\}?ޛ{v]`XDS%KŪ()']pU*"ES?'NTTQ"%QL+ZI.RMq ggvwtwxo@u͛O Ey пB8u7i0hc;m-Fc;-)PR ){[xl ϯ5VQo=>=IA$?r?k{"mC6^UZ&~4bEkCs=\Zi|X`%#rY5^=| UBX>:3u9[qa}F3Z۴((\G upD)Ki aX>E0>Ȼṉs˃K=#?3z~h-dB$N[`5Ĵi} HMxt6jm|>*@!ץJ|vOM6iӥ/iCiKVTVkTkui5EG\&8 vL{Zh |ŵi<;6|5pޭdsVzyngHO]Y4>_\dT^oE: "(g47\[ Ҥk1kỞah3-% oݶݵw<k:Q"ӗ/ZAƚ` Z[HIGS\6imBKhZa׀dMv-fY\3>W%򣵨toԮώ {ٽc=#{0aY\*4KQIN =Rs0".:0ezD$:O ۹XRI$. y ߷.P:n깨:>q_S]\/=7S0>ֆZgܠ\ЬJJ:Âak~:)7PdRInTEJu҈{ gu+e3\Q|] {?>$oݷ 4*~:QiLň,zhġO1A:@,M^=vg.2D&&D)%6LL!-ʶawnJZ#du5$"&;ejY]9y`- Eۈ!Je|rZ 㱄"T56lڥBJ6m Cfqge24}f(tnY ļ!N]g!kP;?}# >LϖX,ձɻ%B*.D oy-CܴgBc,ۺ#mS0,AQY]dxh7ߍybW : XOB@1f϶Jӛ~͙ǾtMb;^7lRL.-1~퐄[DlRiވ%vy0{FPKuk5\+ lȦ ˆL:ݮ(Mtr --w4}s92k.Mdvaw`pDܸk3yy2A0*x751FGc):q#ER+Ӯ *&鲱|@J J&B&\a\#ۘ8BSM{m`n‘ӓ>n`jf7%i|_5gӏ#M7;w3ؗUX%c3hk;!$FXlV蘀$9H % R Ɔף|H1+m+2WdJOF˦&7B;s-di&1Sϼ͛q\"vpnrYVBR.c7ٌG5BH2)Rѳ0IQb8rr=,fHTR)ڢH X0vbWA눱#>{Rժ˯^b|cBjg@/G&"3C@Q8Oܲ]X,J Jv [,p`(o%%#EVu4 5Z¥n5#-Xm97eS\צ`5ddx(^C$ؿgz@:}y8_{0sK> BpnrrR_~, g]'NZ I b>1CߤG8jKM?:t:4~#} q lwE+ ZYtP501́}x{?晗O]\N\s=Үz@t wU=p GJ.21 חM7lMAʉ @"Hl;u!]ZꍈH̀/|9mbpzJeYwKh0 u5pT ټi#??xл~+Ď0Fک5!%vt(# |/W)fN[;u`i֡>~9V>T #҂+v[& =nǟ/3=~(%;X^ kՓ3L_^dd.,)y[%nSP45H!h_ tHS;WVZ#p=/8 g#+;,ƙLun! Mnd"Y Z'S3\g~if* JDQ Fٿc^=σR(U+@EDj}j:g-򲝕uq9O]H'SqG\)2Ӌd&>>7wvm$Җ^UE!8l67&2{n.=lQcE7''ZlC3Q8:5ĈG:" C"$(byKȬۋSy}zq$.!KӔ* ?[wq,g/-&]B9{X1|6`_rպ JK@0\~_m锓Q17/bv~<aAfBJ*fӖuoNk u|rsS'Q5)L)];$.,Yp kTK.,.,,T"ng #ݮj:_Ʒ8y/pnrrk\\չ V>+s  VX\.׎4&1)D0 _ZV W:~qHǍa48?~g_$rI7x$xRċu0A_Q>1z?QoSRDQ=wɎ}<R6N0=WbLs8P׿rqsCrۦ>06r8HO$"=ZXhR,#fFȡ|W(U()Ja5b-C}LΖq#HqzeRhm t *4`Oz@# ͑Sh$6 2k ZX'>yJ xsdjXK5B&2uyM!4?|,Bn5Mzz3%&•c/٫umS=y}B "S `-kY8pr]'MQX,U!cGv:'n=Us' sپVJ]cRtB9yWRcjnG)T[j-ьhB9ų>!@C!b7#ٱy=,1Z#G*C) 3.UHKxGJk@̖65-h=Q-u?iTب7{Ȇ'n}ݜULޕvl̯(tdr2^de k]%d_Po ,;'StȄ3Kz Y)펴161VH矎JGr~uw K5gf }}m pAsgSNU{]dKdH8B>M!5D)W}t*g7yqÛjnaKoVcfLE^J1}zSnz[CDAȖW .p=!('=T,t:x^Wc5z3kEzsQȕǔݰC>7m+:xm{vJ8]0Ey>En;o,MP: ȯ43nL}x.V45|u =#}YlXH\Rj8}sR^ٌK."qd\i\#SdjM>Ab dPCGO}xpo[\Ԗ{Gn*HiV`u$锋8qKw՞rzCtݖ)vvֈ~FTkZ(WgK |Y`P 4sޡ}7{".Z ϋCRםɏ‘1"k\=NgIjjfP)X]8yqė s/*(NοQͨbƝBTb&nrE_1*:Y`9W%?!iCCCtRr0w^>׭KoV @-͞8V]6ә8!I{._ 5d)85ABk@?5.MOs=GO;;VYo0 l}{o]}}tGZRX!3Yk~1_8\09y._zdOSAEY``-#;n;u}7 }lW$1-m$Te[./W^_?vqӫyf6@0zwlؼk{u놆 ={3ނRJD&4JRYXYZ\,-L]kD_!0@/q_^/PLyt5jwN{M~ epP)M_g4q3joaIENDB`gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/000077500000000000000000000000001411575327000220765ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.directory000066400000000000000000000000411411575327000240760ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.icon.png000066400000000000000000000101321411575327000236070ustar00rootroot00000000000000PNG  IHDR@@iq!IDATxݛytTǕU[}%X$l/Ybر0qf;Ɍ3If9v<9$3;NH 8K,aV}i!~ݯjBKwNuիW޺UZp!w6֠ N ?tQ+mЅ $xR˺6+mh-PBS-6ދ'{>d# F~_]Ma,}\%o.^Nm7k*0!+ŋm+"yJo`hSĺK\' ]5陼YFޚ(]| |yy=o؅.@^oS̊l;|ሦǑ3 X<''N3m>B>I_ډ1eyTuކ~g4vRs$e&e |6''్]!)8qdU]B"ܻ0 }=A8E[*u((?>"2n!~y 7>^_sk2q/ƀ1[gO:8î彃4ն|8a)pA('cD_p1o){N"v`4L/;,`Vio5qׅcG9~E<,竿F PXZ+T D]s sLʻubw7v.(? ug+n<{p}U K~n" xz;lY,1X.m@{LCoGEq\6?u潣]zf^ޣα.M;a`l05-&`8%B7Fx};]&זtI~O:9޺g%ז D\}曉108Aź6$\~wwN}{kGkkzck+⊠R# Z Gm#:h))m%e¹*^+PKi[JRjԅ+ Zr@#.HqfF=6Kh7TWhFd@Ji[B(KD.wȱd}YJn<0\۲ 9ŧ'+9:Sk݀yg/R `/V\R^N2Fi  \<uB).cܲ@qnLpjP }# P YRI[ fx{q DOJR*:ID%#vcNv#K:(Jږf!4_JٳlͯoL,C%>eX咐RN<%mYJJ/0{;xOXA>~?Gr%Zz3{"QGᵬ˚tVmI}1ou\$ ɜeY]QqNhY!w4R?>0N)-`Dg/ƍHSIj1=I $dgƓD"QmаNS_C^z!9.yem)izLgMa77p,tV!W6Pu3xf=xQ; E-x"tSA{ٵ>&#HV_INqB49C<{}%~uK'r]^ ?k}_ۄyKAO+1^KhG >!..~< ~HamD,%zXBĮ'LrKV;IMxjjjDu0e63H$ Sg&l?EDk9הYſM]0bV p(} %XqY7CAQ22`yBi;TzCz[-g]t8]o@X.Byp`VhiBX>äRH@KiʊI=jb;ind-Rjcu%b}Ԍlnm9UzY C[{3_I:C{8ES0|s:O,:i;yq",q*v0@GQHP0̛? P=Qx q>HaF It|~}dp:ުM|u2r}=9ܾ4|4fjGc%$y}>:=8Ϭ&TA+ %wo3F=dy}D"BS3֕0w!55wN[q&?#[s_z>So̿FB &  ^9qhzw*dﳺG+ʧ,mtQcD0*m4 ReB0]'To01\ !,91 |7\3tX#@ qN|Eˁ2 W;\ G?  )@~Vwh6@f8cրA} (@rW! `(cV >B.E/5ٓSyIM$ذ7$Yj8t˛OnmdYh˜^JvZLuȦtҵw=/^> 8چMŗ6j<\Bx܉HKa7V:tn޿Rz:R {x9dZ_e3v,dg&¸n<Ț_n'3\}OIENDB`gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.lang/000077500000000000000000000000001411575327000230755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.lang/ca.po000066400000000000000000000014321411575327000240200ustar00rootroot00000000000000# 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?" gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.lang/cs.po000066400000000000000000000010131411575327000240350ustar00rootroot00000000000000#, 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 ?" gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.lang/de.po000066400000000000000000000010331411575327000240220ustar00rootroot00000000000000#, 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?" gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.lang/es.po000066400000000000000000000006531411575327000240500ustar00rootroot00000000000000#, 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?" gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.lang/ru.po000066400000000000000000000024621411575327000240670ustar00rootroot00000000000000# 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 "Сколько времени?" gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.project000066400000000000000000000005011411575327000235410ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.src/000077500000000000000000000000001411575327000227435ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.class000066400000000000000000000022621411575327000271440ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.form000066400000000000000000000002671411575327000270050ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Drawing/OnScreenDisplay/icon.png000066400000000000000000000024241411575327000235360ustar00rootroot00000000000000PNG  IHDR szzIDATXMLTWsAa$Ԇ$));4,MJNK$i]š.ąl5شQISM BY!]5SiO 3 w=_?h]s=y{ sG\R2ry#-='`p]D[$8w&#\΃HDRPJZ!"cd@)Ҥe&qĹ~+5|?Ah%4%I5R H?}~LBI02le"*bh#IWǯgdؖ뺼$S^ k:4btla\y rH$(e "dLP 0x^e =aw| dϝR TsPJ{nطo===(//… JOOLNN""߿Grevڕ9UCDe*8q|S % ""eTDD<(ʕ+Ç ΔxΝ"" l"},sV`۶mpUFFFؾ};X .jjjسgϬ9igg#1g{zD2spvAGG՜?~***|||\,F hLӘ@( dQWWGqq1'O9 ]4҄TUUPRRBAAOرcAhjj LIǏ?NDfP)۩Sa޽TVVRUUšChnngKYYΝM6e;peQYYI]]]]]ؖFkęKIcݑ&nMjuk!7]!X'T'4M+mÒl 0B󋃞8s EpX $(FIENDB`gambas-3.16.3/app/examples/Drawing/Painting/000077500000000000000000000000001411575327000206055ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Painting/.directory000066400000000000000000000000411411575327000226050ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/Painting/.hidden/000077500000000000000000000000001411575327000221165ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Painting/.hidden/screenshots/000077500000000000000000000000001411575327000244565ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Painting/.hidden/screenshots/2014-12-14.png000066400000000000000000002577251411575327000262360ustar00rootroot00000000000000PNG  IHDR"IDATx}yxIڤE@Pvq*\QQ*WUDẠrED\qEMQ E)Ptoڦme~Kn:̒dytsfys^p5srPVV X"++ h믌E]zQPPPPPPPPPBBS۷/KZDYYX,X,X,X,$m8p8ضm[i&$I$yV R) mqm]m?҃U"Z4 Οn4^v׽{#Ͽq~-+qazDv{/UW ֋ԮJvEY8p`pƛ򧠠/b|Z,|r[XtI=G%pw2p{C6Y;oWbԴ˰mɛ5nH7/C#7틯 ~ ǕA+Q9 zٕ"a%+'r T*T)(|zy.~oG\`-Nn= /7{v?| n[^9OP1pm ԇ0ܽwV4W9}Ta cᢶ*Zu3>>`j)sinD\؟o^:vD^8 ꗅ+:Ccn\]J iΗ ǽ `݃|#$6UÔ/c5&oD`PV@163⛷7pWi@eտ=;/ŝ_?wGR錙Xw<ϝ3~.W-`}/ ~x6 Y,2gn  _. H38pw²f_| \. =w]{;{섧 :uO!řa<Y  4 ?/ōmPXLOkpkǏMǂbP>)!P]FvQPPgVTRP)t5,OAwim7UPڷIeL?Zy΢^FN[F&Ҍ\_cЖ0sLt-|_@:[ǡOp[3-ڠ10Pӕh4eVo@fϿbqw|K^kz6:y3Ǻ/V||[ 63n##T0C΍:xLmqؾlm/Cʼn` T>rul> ;ŀ;oEm8VAFqfj%1_oD{`Oon])/saaUWx B"^3@g5񾇂`" B0-ah!x s0~4PN<8`Io,Ck4J3Òb(澸{+|rYc\݉EL7q@3E\\ C;=,VVutLR=l0m=;FAA! p$ޒ$VKTSP+_{.gPNS֡:zRs1 ~ހҝXӿ;;oة ?{cד`k w0Bb9x{&?ld< hZ\u؏j?-o= ?ўUҽ|-M3. )Ha~Yhcz2. 0yu+ҮS. ~ӆb`+3R,@ 5Qb'"BS%)( Y˯0,aG݁ T %& 3cKp?~;t~tz=z=Xvd<祤 %=Ti0eh߾ Z{5Ɵ/?IJ)ӱ>pm۠m{{b, о:\> {Ƶ 3_9o=nA/mŰyCЫmRhj=$N[k;߁ywX֘wٕ'f0 9=܆pSK., f-.{ZBN0mWC;ゾc~$ naGu۶mZnʕѣE&f(+ Bieͼס Kf&2T1h~Tύ[fªU t\pѲ@pΒT#+A2u(1#3+zOJFUU-= #RRй+Q3Ù逾@@SJi)0xQ]o8dK3@4֠Uo@Ňچdeٛ7SQpN9Tsv5+ 6ùv7TW^َFTU6@gkL wJk20Je4VJ=jMk(u[ Cu5ըۆ|Ym׷GnPR.cdbBp .37p1^U9!LAAAgX~WWQPPPPhצ[hW?׀)oZX`6PJAA* ?%x[|EU  Lu=((((ߦ,X,X,X,8Z~}EAAAAAAAAdzQJD0t$qI 'p'UR|7>|8g_Ձ}b k~- ֤n$qORâ9ĺrﺖrpk$cb{%aUl\:&;$IQ41;)̿l{R}9osWW J\qN.ɶp]\Р"5 B!|IW` `Be?7bj' eل/v |aBiTJ<ʅ\ٙZS}=M֤B5rU7~$BE1=q]B6'_R^5@?m*d8(T@d'H$2]XJ*NK M8bv:&|w쉑O<lH2貅wp&)W? Zvw岧P?MZX.vxI h&H'ߍk;_6# nl׿|WlLef]!;㋅ 7NUJ *Vc 9UНD؈'F7Ô.|;+ #rJ>O&p1+dk>.;-W9\7~\LL 0v'͛&$HO: 0pWQv MjOBחkUURWSrF򬋉KyF& c؂n A&bKW$R,_|%X1-CrBliL/Dž 7SO#qGN2x|&IՏ0RO2Rl#jM|B:n\v\u 7$uJ)]/.1\udӄC8<>d'?_[dU֑BH6PϪ:1Bp$H .#̮kIVBKc$L%!H9ϸأy؀+~]`kc #_jێ%_0./*ݸ_RH~/MrpZC9ĸȠU [Hl4I+$LJ:v|dPFW7פB1RϮRH}\Wn2؜B/rrP5olPҷb7bm5[M҄(XQ:!g{9V(,7BX"l\dK W6%88q1.fc)$\= r&RKJ\B"V"\gPr]i_Up!&w"\l."iWvOm @P}\1!#jH.xx#kgZ BߒPY|ɄI~[Z*ۑDDnY0Qhy&v&v@Vj Mm㸮O1tR<(jW\bԆt X H=•no]G{g#pA-l,-+Gzz:Zh t&M©S$ՕD _~%5kBP?G.]бcGk&Mӧye7B:ސɁL! re_4vHʑ@jڢb bj7&PeT) rbI!&N8z4FEE*++{n L0Y<]ȓ^͛7cȐ!mgwwC!6M8{n Չ (!C at:tR]6gׯ.b|I .7n ^t)FN3fG0ydt:lݺW\q:u~aƍZ ]vK/_}U2qk$Egx\al)vwJPZ?RoLc%Fј_M|T,QDjAAv;_AAA>(v;~XW&p1 [;Y@*v+eʋ}Pؼ@U;-I% 0 0سgǏCaHIIݻo>駟ƠA`۱iӦP~WƄ `2͗ ̄ য়~W\[~06MԞB6f'NC={;wDcc#l6ڵkؾ};f͚?{;#iӦa޽L&>3{Xr%p뭷'D~~>.]I&۶mÌ3{a޽x1e ^SR~!6mڄ{ 駟6 믿bHOODŽ 0{l^p bb'/g2c>[qcO|z-z뭂yӶm[Mо}fгgOt 6m§~<В{x? :< F# 0̹l6[h﬘jsII 6oތLJ?|R˕kK8r 0qI '4y,)KjC>{u̶1W[l*˸O?PY=|0z8N8}4@ ˗l6>M{C˩#FСCq]w<$3Э[7̘1YYY]'N;p饗bܸqp7bժUhhhuBΝ#i8P|O{P&M'|m۶`x>iii:t(-Z/_ a\y8t6n܈Aa 8ǰa8'99s&DfMM ^x8 cƌ p1t:b5jt:ڵka૯jy ?򗿠1/+555_ //PVV;Hן*WS[ȳm$1(xL"n҈yj^q6O o+${ <Rsv\5)E:`M=cǎq¾+(** 8>34@6m>ADNNs'bff&B[ .hѢE\ߏBt)6=!J6IxQ#-H`Bm˛7+.|M<ݻ7t:?|⋡Ǐܹs1rHhѢǁG^ЩS' t0Lꪫ?O>tk;`֬Y]B6gZ?߸袋ш+| pW_Ą {]v@NNZnŋcĉhhh^]w݅;szGL|^GxƧmxkNVjZ 켢y 'WzS՜(ĪQx?#ر{ƺu0yd 2+x \QQQzB /e(..lh\zXlYRkBd*+ΤlE*bكK;cǎmRln$}B#hUV5[o5U!B.><ի>cxL<3|`ٳ/nf_C.l {H X>JK`*d }~%:I-5N\+hRodxjW.rXO\yEb K,i:?0`[W^y%;w y;kkkq!HMMEQQQ=RK/!;;AUUƎƠA}vڵ mڴ󑙙>(}1t$$Pv /THK\y-q-!<]'1Ni!$R<|X M.ĕ'$Brȵ/-3DJ'fHS![Ebsigddw߅ǫzRnߏO?&L_|'w?;wnh_*̝;ǎõ^{g{ sA}}=.̝;K U*`!EDrIGKI~\⅓*j(o.s%'H+a)VpB"<=ۃ'-FĚ,E|Ձ$?)}ֵ-Er_,D|r G2nʕѣׯ2}Qذa PHН3ǗJp_$=H=rH MXiOJ]zXń$F3..5O*i;"'?O( T)u( G6Sט%!S*NjJ=FBU @mqʗXkXML1JKOFTh G7< ׹(bULlOGW%R„ -!BI\qJ>|jw=("5v-Ze]lP$'>cNYkD]('SKR.~HY^^o[nEԳJ4R$>4S.z^_ʩE8uz^zhR%A=IMNPxUIȵǞ={gHnPJAArjpc&ۍ-[`Æ (++ErU &x*K KJJ_`۶mErnHHhADGCX9//۷/z RPP$4b=(^?ERo׋;wbڵ8y$({VA %:z>BAAhAP DVaP]]M6M6+ĄjݎhjEjj*V+ C(Ll PXjӲ vZl߾ HQ_WWWFQQ(ĪN'(VϜ9;vns=X~=CqL&Ə(--q}Aӡe˖cb\ ȃ7: GbڵP[[ CV>OVo:uBNNzۍ?0'+++t\^^M^ p8d{)((ZAmi#G`Ŋdk@X ~vJ_[[+UFغu+Ξ=y&UVWPPZ"*(^')`C5O|>/Xb9 mBX5LM䥠&W~hѢӄ4hʰm۶fi2220h ,]>%%%/DӦQ&hp$x(>Z`ƍXz5upiĪl]l˖- E `qos{wqoĔ)SpM7EӦQV&xG9eXj rJlڴ uuu}nd2fwVh:"==]p/xرc>)((b LrQ8 n8r.r\|Ų&P2 Z8q\._UU'OnnΧ*xWm6,_ǏEȳ :Nt:N0|pݨOSPP]榜G_'_UU?:tA BX ]MOOlF]]***P\\ aBbYVfh4U A 30 t韂B60i*D9rNDSց@wƁpW㢋.^hG%TAhГIP ZiAP.vZ[Ⅻ={C@9Dv@5P-MTiGqZO}УGFAOsTbvF{odž={0dLݻĉغu+x |5Xz5|Ilڴ #<p\1b&M?[nŊ+~zwߍѣGѣXd ^6sŗ_~ÇLχ|?^{-TÁ#Gb͚5!>C=лwo<ꫯe8p#Fɓ=((4G_WUsw+;v6'+U'z>O:s v؁n p=`1L?~t:l>|8g B۶mzBYYYjFwu ++ 'NիQZZ}t7|s(K.8Æ Cmm-1i$[.dO?4$H׮]{iӦ!//{HHha2nrsZԺ&|wxpћd~ HۨANB\}}=>CL>9!Dyy9Dpkɇ`~?***P]]nݺѳgO5+î]/"lNjX{ ׋;vcǎعs'>Pϟŋl6{JBdBNifhpZ?)W^^+W .aвeKPl*|Ucc#}lݺ} ?}ѐX OߪU+@qq1N'& uk۶-ڴi4 zHkjj`Xy_~ p8PXX .@Lcڵh߾= -Z`ҤIr".IN'\iRDqرc߿? $٠Dm:F.K˚aTWW ~?G-U}YYm,MFF K󡤤_=~IkvvZ?999ܹ3VXo״;w@cc#,YpnBee%g&M_u;r -[;oHXhaRJd VdH@ ;v`ɒ%عsgܼ(RP$Vf3|>'AMM |>f3X]lYh/j8 ƍ~3ݻヒ3gΠ}8p LnIRRSS7@^p%rkNÛo?{ƬYp]w?D߾}1|ptM:t(ƎB7K,СC{EnԩS2dH9s&`ӧO*gVIr\<.&S'WWW/?dnʕѣׯǘ1cD~Ԡ۷}f s 'ODZZZ @ zǮ]"7`رFR"'RbrP-q^^2q=zC 14 l6XV8q.UrB[n? 95k`E܃z(G?uw,Y6mBcc#`2p8PXXR88zԠ ^7Q5Lnl,X3f@.]`00bw}E\"փNSk^jS}%}BX ]u:0LGEE0 t:L&V+N'l6UΝ;ϤRP M)hڬ%.^;vȑ#Ѿ}{$*U!A i4a4a0v韂B}haJ.^'\ʩIB}wi۷/nY:TA(<{R)((" -L6K,Sr)rssw^/5\-J%b'y8*xS'zw~ȑ#ѫWd@AAA!TPN*G_W5RySWYY+V7hxba~xП H>ģࡓprZC2_K/a͚5EB= su `6a2Bz(((A pBk`-s _~={0tP\}q*@ F 555UaBJMMEJJ QSrsJZkmG._/0 ,)lFmm-|>{{=sٳ>,+x<7&~Y ǃbu t:Ri)((d@+pqt59>ZKo3<;wz# bUAvJ_SS^@T߾}e˖5 ;z(O.*ÅGUUUKAAYha7,nqZs\X|9^|E8q"j4r$maP]]-5+ł .QVV:|w1bZl)~ Ǐ^& ]vYmLAArʸd:Ŋ8Z bp\&d?`2Umm-n7CK à~?+>L8YYYxxb0 ]⩧ĉE5jq۷l6[T LAHth{UQrsb}믿"77Ç_/ R=& 6 EEE8xoٳgt:8tP :7_<ɹ"W.vRKB5O`ؾ};ƍ}F=2 lHII'rx p\8qV+l62>E|CK&ar\_kvG?mqx7K/̙3yVsU N"pp@#UUU|h)((- Z)99z' G?C_ѣG>{b5w5==fDqq1 [Vf >X[((( - 79Շrc޲e v܉QFaРA+9j2 χ@ ^@)(Z4)'K Wk\8O\"\uuuOyfE^ bk?ҞT ؂.Q}L_=[ICퟜVٳx饗ЧOEV  0H^h}V])>l:$)Nػw/ QFjB*nB ))bSk^jS<؟rq@~-{1lٲQ|P]+zC@@"2pS>s˗/ǼypaB50L*ݎ4vP QSrsb/zܩSsW_Eyy9ĠʞUa00z*EAk!bqv܉={n#Ş@ 8fB Ʉ4444Hޯ@AA=7y8:F On.ׯٳbn{Jz=v;<Q7bСFff&%Ki0k֬fR 7E2.QN*G_W5RyS''mz`fYR:ٌx^Ϯ{xb͚50Lؾ};fΜGbҥM/X@(((gZ(G%Jkli [2̹/ V+<W0w\̛7<@yd`Ϟ=ؿ?n7~iAAha:G'HZkN^ɱhϪ^// N^VVł 6lڵk;wM7`P]te]ӧOf̘V:CE^^`۶mh׮ 馛BRlݺ=F#L&xZJIwPPDZВ^VO+\_]a0${@vv6<eO6333t鐖JtKwƆ"<8t \.W]eeejo N1cƄ<)(VSPDtM,NWPYtpݲB>Էo_dffbٲeŽ=ӧD#C~UUUMRvm֭[m6̙3'& m۶8|0><={ U:P}L_4jáhh"Vr\eX,xpB̟?eeew}#Fe˖ݟ~ Ǐ^& ]v&7Aee%zш|\y8rvذa<vذaXhQv˗/s=Z((F<±?qZPb| @bnikkk`X_5qDdee^ŋ0 v튧z 'N-gԨQxDZo>x<{lr cҥС,Xo7p6n܈^x&Mnu]Çڻl2<#ٳ't::uEV7 HA ))^k^jsZ?lV\Ɍ= ~z;bFuu5ڷo4 8y$N'0mڴb@ Ф}#G1cƌՉ7n$:јB(B}B(ל1b4"aِ|TUU*caPYY|XVl U-CXv-رc QPȆ&źd}.`2t:PXX8NEee%|>o6̙<o߾$hi\NS/G p(:f0ͨGEEC& V0 믿I0l0 6,ՠ :&'G'W,?99͡XhDZZl6^/|>_H_|o0z韂"QA)).Q?Ujz>I /4^T rT52.Uj8@H haTKfXqKnA)((A Z|z[)( Z^VO\ՠ@ef)))|x%[C@ 8fB Ʉ4444 (-"Bp2sZC2۟r|P,V=v;Tn߸q#ldff_~XdIˆ݊ ^:L6 f͊us)4 - J8- %DZ?él(^ snfx^x&MѣGѣ8s {9x%7RWI[nX XqZ:P._k:GDl0 |>VV>r ;w.͛xVƺu0h )ScHMM={Vo&ڵkGnRٳ1~x@nn.޽{{x8wzxCiCl۶ _~9:vK/_5~go͛qN<#G[nܹ3nիq7nF >hUVSN֭O{O=TՕ"*9:&$3G¡Hz<X,YSRRxx+J~ºwoY _^4~dž uVzyYt:|>2X,ddd("`„ 0 ڵ+??b`41e@VV&MUV k֬=ipl:u ۶mCvBn ]v嬷P])tMnd'\j qDWW`}x<(..FV1\N4 k֬wߍUVa„ 0(//Guuu؈={[^^c!feeeD7ߵk/^bF:u C ;& ~?ʐ$}eյ{lM_Ҁ,p"rc[j-Vu:z=n7o۷/233l2<MŽ=Eaҥ0 MkǏǜ9sPPPummڴ] Ϸm۶1c&M,BIIIȑ#hӦM7t}]70}t ==555MѣY\R$'48%KP \?m0p\ąWr b… 1|}F-[`0]v!0 >3331x`<ر#zkvvZ缪=6l@Ԧ[oo&s;yd~/A}}=>c+0ͨ0px<w?zJW^y%9]v6l+J<` .^kZܜ~ "ϪbAmm-nw |buĉ /ŋatO=&N0i$\uU¸q 6|ҤI0a-ZRSS~z̚5 O>$k ̙3rpW{ꩧ`0p8_`ƌxG+V ''ƒ%KбcGܹ?0,\uUxW0yd88лJ)ԁbo9s۷oFQDcR7RSN S(:f0ͨGEEC& V0 {U)aذa6lXAa〛ppZPXhDZZl6^/|>_HFL& OAha Ui}\l NK\b? z}ȓ^8RPZţׁr%9z%7GڇA*VA*6*9:&ǃ444^^|DaBt:0 N`0h4V F#, L&f3, RRR`6-K  G*vrt PWWzgx]]QWWCdg>Q'%%)))lZlHMMbь]㝣ן6j8T Àa&_C >PEˬM:TWWr&nv{sV;*Bi0 P__&}0 F#RSS zlքןU5 l6#%%z@>: "F zQ.:\<]]*++QYY ˙d>bBS Nߏ&;g)))p:ȀDzzz-Z8(G'*ba466nhl^llE]]f3Q"uX a\.49GSp˃{+\={l(Mjj*Zh dffn/8Bאbx.zљL&rbXQPD Z ia\d9aPSSR>I<)Oh|RHraTWvz2ܣ{I>*-["++ )))dNIAXx<ă^njqF,^{矏ɓ'c̙19Jj*fuxuHf(++k9%N) *LD񠠠gΜ0p8hٲ%l U ax_ٌx^Ϯ{xb͚50Lؾ};fΜGbҥ ~@ _»K*桥A)9:Jn7Ξ=gφaㆋ/z#jTWWѣ0FNNl9#O"[1 GjdCCΝyjn: 40eDi)(‰%שyyyغu+6oތC 4##5>WH#O(ߠ#<;[/8}t聵X3G.۳0 <N)))b#Eee%nfaݻwGEzmO<'OѣPQQ-Z `͚5Xd p7b2e p5נ{+g?F>}}v<#ؾ};t邽{bѣ#@ŲPXXBԄxNCT.wZ`+<}\ZZzlmڴAV`04q.#/uh瓽mGYY, 222T0a t}?3^/h4bʔ),L4 Vj&V1j(tлwo 4_51p)MNJ_|>̙3 FrIrR+I}k@8{,F#ڴiv!##Ccq8J W`.E\ΆAqq}-[ O4 k֬wߍUVa„ 0(//Guu5v؈={Ynݺ עE (5/$haTeqi>% .}$x)qj YqybD8 |>N:'Of}88IH؎R{b5vpHN_[[Å}"33˖-O<$ѣXh.] D\.κ1~x̙3Xn;@۶mѦM|ZBТEP|p:P.~8~KφGF#\.䋐aνępX,X%؉aaǎغu+N:/9qUłZ$}*'"++ //^ aеkW}:}Y,Zv^/RRR|rtMy)(dCK09qCa$ByK:).My9>&t@MM ݋CCǎaX4q&/k+W2֯_cB @ >#%%E4MCCN< AbElܸ""uTޔ>G&MA*ɝ,Xղ[$K'/4:m۶EN|UBݦ[n\TVz6 G֭t:9AUUΞ= F* ^Ekߏ3g ???U)I{*۩*[V|\^Nc2cOӧѪU+\pp88%K o0L!ZXX8N`0|p8p8_- D\\$)ԩS8q($.N/p^|PU T ȁzu\8|pC+~e|ܫ*wlxBKl#UJwiSNرcDS*tU ȃ.sSNyyy8{,;l^U9"5!E*r)I\ߏ#Gҥ rrr3 Bu_z*փE"@ Q ^i'jVaPQQh߾=:wZEcSG>"VAcc#v{Fl6l6fY!֡AN\CCP\\Ltܖܥz!/!I>$mŨhoRwy<ӦMC׮]q`8|psAѽ{w\z/Cy|>L2;wF.]zj栠 ("]/)<!\*$"-񅇷+lHo%ʰ}vNVI6(o$U"+}JJ <SbӦM^{ vž={Ν;c֬Y[O>Ν;qACe~?cǎaܹ.dp+)) yShy+*Kh-;< 'Jio>hll5)N oįm>OCR:>OVڬ~3fᅦjNСChٲ%\.>_~OC'AлwoP^^zu ֠0]fS8t<zojX,_HWe%bZMaMZOx0:_PQQk28%cZ~? t@@v/X駟ơC`0rBy֭Ûo'x۷ܹsqM7222gʭPPZK&[SS!4N_ʙN'A&eȅImÈ+LO )u[NB{<8ѩS':PNb5xvp8$mr'J χ7x#Fvm꫱uVF|'xꩧBZ\{Xv-nv;vLn)(b- JŃ׷ǎ r,K%Ð'Un=∥ jCnzU J EcJpj|PY5p\HKK|rBx'PSS{ B'hDII >>Clٲ , .0 #LAm$׏r95op,--tb8j-z\yE“*&(AZR*_8(ٕUUU_ѳgOh"_./8m)zV- jkkv}W|X,'=܃Sadeeaȑx7 K.E`|͸駟b˖-իL&RRR;NP "Q~ WWW}5YWUM/*I9$Omo*S-Oi#O)ERmzgt :t+K77EU͆BoߞSЀB8NL&'Ooܸq7n\ȑ#z3ŋС}Bs@nr8tPTA'l%U8рHv\/*0D-X$;رcp\ѣ犫qʛWZV466"??[=/OMM ="^Rm.N&@&7iH6/++î]ЧOXV]jpUTxdNCAAJJJt:ߏZTVVļ- rZUKڛ*JiݧxUK@ʭ+J#ճʮ!560ۍ~ {%(x_j2`0dD"kD9\9hll?UDrR @xSRܲxT+Wrq|9rpH%3 _1L'0G9u~l X=UmP"^VI~|d*i^\a$^QRGU _8;̙3hhh@a0+H/X H"IY8Z)jyjIEܲ|P-TVVV={O>/\7z1JAA!ZHxp;uN>DJJ,I Rݫ*%/zeG 9iIŧTܽBmJDMM vލ>}4y5ƇXnsU9E@ :aUV +.jr(**\Wc޳*EFzjDjp~V\e**?_H\)\bV>!77{n-#99j,ba~0  ^@ NG@A- ^ŻeǎCiie 5N4$j-K'ג>2{UhRl Ii҉)`Ϟ=ݻ7O.Xe^v=#^׋:L& | iC塢H* baJ UBy)J I>Tl%bVZbPXJχ?{M.6p(@HOOHL&r`6k(9'_Å*-D>\%u @,}**IE(.Rj+_yr cO ^z!==3NrѾgCZx<^n۱cGlfӧOGAAl6\.q$qal6|>Irsso*?_vQD\@ #G2 Oŕ_jC,Z>|9rbg 7 ;P\¸  ػw/***feyA(ll6a|fX|9nf| @~~>jkk4#Xb:u7k4'0!x} UUUTc0\$̓$-W<ӠO|8rI=Ra ֝$~8/ǣJI PgϞHW "Y:bsTVV^W]TT?i<Onݺ /Đ!CpachٰftMKqM7PYY /W_\\{ѣt{Xd VX_|ӧOǪU0tPL:;wnC>}pc()),QWWyݻ7v{7Tw B+bIMNV9aERӻCJ'$'4r*7Ž'[<# U,N$ ֪*M#chĪb>%%'"{kaΝő#Gйsg̚5 B}/Ν;QRR?0|زe v[ٳq-ؿ?N'n݊|?^{ & {!C{ѲeKٳvhfeغu+֭[͆;)))ž}vOGͶ€u.JyرfBUT"bUT؊7?"8قOJbuSCJW>AN!JniEh^tD=f{V_z%YeΘ1?V+t: G63qsѳgO:u ?[odh=[NNN6mڄ_:-7d2a˅͛7;z= x|74|V\/غu+z!FL&L>Wٳрd&xO8z_M؋U$yME*6j`ĹJ+]|OMa*NO,?Nߏ}qnG˜ӒhU6 9]ߞՂea޼y8t \.Wz8б`pk-ZlْW^yK.Ń>'N`̘1X`A ={עE 466N8G}={ƌo+M>G9nN-ӧQVV9ba|^*Q)*IA^ξOt*_~R7U(|HO7U,W`|v~?݋.ɗ/<^\Y ޽nYkkkܕF&L@-elݺ?8q-Z4ٛ\p8;w.~޽Ǐdz>k Zn (-- qeeeHIIAFF 55{œO> h۶-ǡCp!9rEEETj\丢"={6b@{R͕D 7$t+WdF݄\~=ƌ1TWW:tܫFCCN8 A-J|7;vlD38-A.W__CsNxAHHԄD%ur;w8vIxbWq8'_JX8Re!ϕ.e˖ҥ.\swK*ZlzG֭t:97aPUU"fQJ]js^/$yl9V$ V|H¥e P:)a\qpr}I!t(--EJJ ڷoYW-rZO7L&8t:NiiikkkQYY  3LJ+hi\o ѣGz% R1J*PxZxp!HR%;~ʟ+\*E,V\a*$ҲcQ1J/ӧAZ8-AXt0HOOdB}}=Q\\hjn`];E,^?EVNN!&bRSX<*+m-HKCΎ#OjzK\:t]tf(-A;*d"HthaPW m:rPTT$QUó._*'Б\*$DH;h+@*S(9K|y(RqIs<|>:={vZ'؋N@Hfh׺ZpIP,V T9^HS 9\)ݫJ.O6%X6r&mN*Oj#Bq.s[Jrmmm-? .@s㯖N>DI- ZheaJP]2 zn]j?JA+hOf.Vhhhh",#)RI\q[^JZ5˥)e;U"P `I$e_ȾByOIʛN''NnnLm~.&VAl6l6C#>Q  ^𔋎-//=P%EϪҽRnbT^U5%xx,lȷA@?i8 KO*I>|8rH|6~."V|>l6[;bb󡮮F"ܔPPP THr' : ABt]p!ڢXh*'I^gpxR%=ISxpqt%Hd^ b}IaF#RSSQ]]RP$ 7r\ ' %R򀕚WxqB )DĄ"ݫ*G!X˗#): -B< >OmEEcU+c'dž"0 <l6q'?xD+رcGlfӧOGAAl6\.~7}t̚5K(Z!xiWXXbrv<jW5V&\й!%++?.P8IZk k+$?WXm.EUU)0ͨog˗[omu8U +ЩS'_q^-]ZIVWWBPx(O&+'610"ܓ&H#YpxbH. $u$99' @yyyFcg49. jJ#ӫEEE QTTD&77=JKK0p@,YVXT8pȑ#<FjvZ|>wyXd u&׬q-]Ń̙33U,\L|) rU$^N["b)X.&jȉ?R}HS9@}}=Μ9  Aq^A իb! &fϞ[nt:uV<߿?~ak;Gb׮]0aBy|Wزe 8#F`Qk6r9s&D)+3Xn/^ ;&=W؜o I}W(-ߍI\Jj RQTTf|$VnIH|>Iz|>yKM믿BaѢEŻ[pڵ n: <8:k{EFF`ڴi嚕"Πe"+x+++QSSCJLU+^R)FpeG^vRҋa;~8~Tn'z"[|9=C|WpDvps>[n~!scZ^^[n֭z ͆bf3hiD(הz(**yQ3~xc>R롨X寖i(/9XX0$aMv(͟:ݹY>}:bZD[L![/x-+}MMMԿjp80w\/ؽ{7?g}3)Sn:r/ q\8 Rl#FkZq¸z 8BuNȆAjr,񠰰ڵcC{VM&V+ Ѿ}{X,ѓ񠨨N['Nmuuuyȑ#1rHΰ;wqG2.R'ĽkMO駟VbF8.db-..-U)a8bKRĪ܉KhGJZb&r매bSMJGLCj Y%_. rgϞE-TVB\Ī`fʼn'@ j!556Mr̛7d'ODnTNӪUwp@ӡp8!PSS*x^8NzUc7ĽC -{(Y!|P.T#)V8rDk Wxy$J(2DqL ok'Ol˶#IbQˣJzZ"++^RԞ¡XQQQPg 8Nl>X%s9sb] #I*++@X]+R#wU*"NNZ9 H%:\TrASz!?˓Jj[>Tk[Zqh  96U!A χ@ ^ !hBMFPZZ75ZUʁ!K?WjoAͥ~RǕ/Nxұ5OP]I .FZJA҅Los())i&&Riq #=-Ƌ|U/>*;Ge%r P1a*$xRA\'5t`6CjllDcc#((¡ q ?Tml^(=+'ē@(Ȑ㡕EK+++) /x]eL5\ZkAY |0eX,X,|p0*psqTF-2Q"UXUUUc򗻤DzԝdXX$kx]! Iˏ$<%"ct(**BFFx¡X=4HKK y^)( -]Z$Ayy9iUm/EJ q$aRa-Mh"U@*X /5-'5<>WAZdv$xF¾}űZzǜ9shD=> }_D+^}Uݺu%\ 6^jz}{ ͞=< b޼y袋гgO >^C 1b=_Ɗ+h"<rML#hG ު* &I#5Tjw%9? چ4p#)Oȕ"|H9WJKKCD{V[ӛ@sAqq1sg}dbbݻwv[0pn/MsN?O޽>>#}(((@EE~_!C{Yp!6l؀͛7###/2&O~ Fy̙3%%%ҥ .o m_1c\SZQ.0$ abBIB :FSH$>;PMIݓ .xgpa7?.]iӦa\y;v,f̘˅8}'l{øq?3[f!tR.r^ߺ:466r =R[\ab$iʟ},&ƫ҉?RT RC__8;X\ҴjJ>+G*XbB\RQZZtM:prJfM׃q555h߾4X1ǃ'Op --HQPD~mWzGj rshhhDʇX?1o>N)oN1},%XZ%XJH;`Y\\ˇ:FRԩv;mNi>w4 l6^/Ѻuk8ϨTWWv6 U Cb$ʩ566F\*\8pDcVȃwa?VB ۆԣd;Iy ΗR_,BmԶ,//nx~\LоBpDk @MM zCUɤh @ <GREJ#I/ Ch&/)bD W+Dr/^O(_J#ɞT9Mz"$VՂ૫\.CJKc.ŪNwndB}}=***(9CL&j!@h4h4`0Х MCKmjb˞j !A>.Ba||Ӛ'O@˔‰yiZn;E \z t5 TAPaJЂ׏rzD* ؿU)XzX~)E>Q咄I'&ż\ql HyRńO^Sv] \r+++t:~Ջ x)p R@r p q$a csH!EK%\@S,T*'ו+>Gړ*&.xJ<7t!Տk[`X`4Czhlluuu!!KAuhպv RR~I9gU,L)ĄBs#)nKrG)xWIՀ{* ʃ+_-s\P,V<N5bBEopGLxJܸcpBH8!^o*·%lbڣlA *I:[H.T:g򭪪 Uvx¡H2 ǃTbi0`v"x <7p~a%դ-]̩uݡ0RNjD*"q|q WPzL&ovZ!*Ճ&&G1&דTsK}֕{Jr>(mO𸦦@st!Ī0?j6QSSlE,ܔD HI'4UR8lA}%N Um#նZ VMOPb)BS\剝{$"--ZYl\RcIa@tohDee%?Zkx7pITWWcʕҥ W_o>#FVZ9sl6/ Ѷm[֭[χ;K,A׮]嚊"MIy5667 'TPǶo!E'q [mR*R?ɲ2hzRIӨ !oMn*[+%o#l\.ͪX{do nU l6whW_}Ea˖-ѣƏ?qWW_?/?>%%%;6l֭[:.\ 6`ؿ?nFL KpqCEEEضmڵkkpM75YsOiӦ!//k*8.ZР@«!TI(|ӓP|ȱ_!qKZGv|%K%N!4 ֟j+5`aP[[,\ cX|>YNz>x/b֭t@ rdee5 WTT?^zgP\\nݺ)1E@KVx|"A >j G$,|XSD+'В/_RJႼH!ݛYr,+m\f^9yKgMMMķDcCX źn8Nkkk#Uy_ņ B\xtTWW7_XX=zڶmx'NT^-]E[B":īA˗N跔c!~>-؈kB\q{59.M rKٛI[ؓWh9uWs?U{/+np!Zeot0̈́)#5Jt iiihll/ ܓW\qk._r-Xljjj;9̠H|h颥|q( W*&R~.uK^J'ILU|)>BՇ|7(jE"o_ HɎVR?L0LhVW["c+n7v;qj|>戈|wuL<38|0ƍ~ .ɓapuaz̘1.  '7"ܔ~?^/DHPKCBqc#+vBKoj%ZtRӆ1X7!pyIG&Kf5ZAZ?>ڪ+WdF݄\~=~?QSS;VU4M]]N: |`ԨQ6lf̘Ph?<̉"=d`䒛KDKE9PTuUt=EWvUpcU@AaEqwEtDQP92g&G_7Gsgԛ*\08׫jHx%*BuUR?VJe%SzQ;Ҽ= ZI)^3GK?1 $,0(łǏԩSzè@II B|>|>Yr_}݇. -BaaaR@7h4 TWP% K*xZ]cլz$J*ݜI8islju#wRuɗͤ GiiMC޼KGee%Nb<4qR0,V-ڹ 4Dee%o ~N'v㶰Æ ðaÒ>ݠӦG B€Oj!JJ&_Nti^#%i!X/.).^HS5qT?FDZfG@c$Ojܵi9 U^/$v;l6[Đ2f g7֪f5%J 6R)ǫ:jm:&WԄȑ>Rqire5˒*-jfgR)%^6c7ӂ8*++ۋ&NUu8[%10 ^s3N竪*V˫k}8iZٖU;Q$T5QfѓʿzŒ*jLfL z /u'>qޒGYYYuUqE10:2ug:p! PjXr_-jJԿұ\Jf;zEJ $5qLjIMEՈXS+I}I4UllJ[/5.b!Z9~^^x5Sj\=I#:Tk\ZMEU͊VgzMj=՚HRϴ' [UU IO U*C@CG&շ>ǪjUKG*l 'Wg$n4@MKeQqc*RU|jMZ6n89&V9C8P=njE4Ww``PM./*\jGU+oT\-^C=sUM*#ɶ;7^S DaEQAa dZfXF¶TZp\p\è,Ӧ:,/,Vz*vSST: =DUUI˦$JeIR Vj}}/ɎCkpu[MbW~_Uvx<\.&XMqB6v ab]S'.uŪ*UGr7'bD 5J"H[4ZR$ji z1zjʫ&ġ,Ru~IVWWQ1~k-!q[x^b5 frȐ!Xd,R"YF8_~=N:l1 u^s3NŪj"RW&psWjrOOdbgjq*!)Uft}ɻR~HS{Ԓ3b]]]RӼbaHF"pөNhHH)O?k׮{1]b5&(iTz8y.k"DQzj,/'unZ4dz6*، GYq)ްZW  @4/9q{n]n7aوa޼y(..Ƒ#GP^^˖-?@ իWC{˖-裏+۸t:q饗x wA8F˖-Ϣcǎ4sL\._ř3gSO |X`(M{}nvTUU_~ر#<ɓ';oc„~F+ٳg~B ѣGqIO„ 6oƃ~NVVQ*WZI,sjJǤX}^U#sSI^F*(i=t q{`0XMje2$V |>Np\DnǮ]аaC\0avڅf͚aΜ9x/<{M6XjOǏf1p@{6m͛Xx16mڄ;vaÆXt)z|yZf ك-Z>ԩS?tbʔ)Xd Z>|}ť^/g޽{[o}]Z ݻwΝ;1gl߾ؽ{7FiӦ{nx^̟?k֬oܹsX54uZzi( GF%HUDJYT9qq$BUUy#<17U,X iTzœ8>3+D[5C|jM3555ud~j,tO8H6MWx"L# E]$lj۾}{͚5t gϞ8rڴi6lqIܹ-ZW]uUڵkqM7 ̞=ơC$t嗣E1ٳNi?j9׭[aÆЧO 6l\uUzA֭Μ9*͛Ѡ,x-"F"`Ij*OJ>$eR+Zsk@*.*8n mW^$XOYHђZ8%.v熉"-m6[fZkJ0Ē%K駟bs4(Ξ=ƍ׉e˖qQQx 8ۍSNSN򔛛+[,|>yDMM , ~9EEEضm:w,p8{p..C9fN\X!* _-hJaԎ,5+xZR,RVS)k:k5zVCł/ VfR[p?Pn?WTTk_^^Z-\v¦M'N}   t[o&M"Jq$AII 7n><>Swyݻř˖-SASe>.ֲRJ~I0*(U61'_-㑖^FWrV:*K̘ @""_)4C.o9`X` ?R}ͪm۶ENNjjjtR~سg`oƍK/2}p7Z)?c9r@ݎ޽{hժΜ9 7go$ӉbرcqF>|pL:G5s=ӁD"-<&5˪J /ª[Sډ$I#+qRǤesZFF|+1gMr-zxꩧ^uV 6,nOs4(qΞ=B&'1"ᵤW]+K'=:Wy&iŮ-^08o=3ߏ P1f;RGQeeeѣu^kK 8%%%vx"T ڴiu[|%!i1]8o29~ QE"Oj%yMby%F_]ZP~HRfriMơ5z-Z+x֏z%c8f̖08~X,?~NnG8FEEJJJ 4,\.˸praѢE(,,LJ~M6x=mA<@Np_F+JI&\ikw1χ#T\rǤ擴b"$im-eHX=eדf"_˵-BVtsגdCnĢ{ŒjuTyq'+Í;_ɟTDQ XM{wC00;hȤU%( ES77#~毦X.4 c#3|ɿ\hISְZi}35fYiǥ`e7qteXiUASK+~gx#'XͰN`5úL赤T#Os14id73S}ib8anjE4E(BMMMmI 4uTaW[i:YX=qifMH6nFHO #"8M+xai}կ6ֲJ=B h4p8,lK ˅p8JA20:-㴉`=Ucy3a5tr`^Ky KOOUo:zʤ7zL0bFG`x  -c`7R7!^RiiWk\FRҌDXĥ5TLen̿Փ޹*Ҿց!q TI-'ZͥM6Xf[AA6nh$+!C/p<|̛7/)yf M㑯tji{:A:BJefېH=h:F(l>/aEbp!DqO:NDQ_Ŏ;L U<.**… GH=f"KL5V*M3Pj?BLk*["-zNl=MtU vuwW`РA׿(,,?cРA۷//}ѧOt{_/ 6DUU૯+ڵ+vQ'o_|1v#Fয়~TUUK.AYYz@ ӧ}ԩ`9...Ƶ^Ν;SN>|8>ytNKLJ!xT A 㝎FˤΚY~㈦R"Z `0٪tM nƍrJرĢE;wĜ9s|r /iӦԩSuhժZj]v^xعs'য়~™3gп:fΜ#FXr /bϞ=ѣqaw};=8tƏu}fU[obMdi4Q?ђ2kɟzћO-hMY:SxH6Mwqrݺuñc֭ðaPPPӧz 6ԋcذaO1n6|ǎKt:gΜ?L4 ШQ#3F1 Bn]tΞ=*4k | lقr̘1Mf Wj]K"`%ɬt2Mh]+td&2-~Si*VުZ! 6M[TTm۶soٳg1tPܹ555#F رc^?Gnn5nX1 4"n&s=v᪫Mrҫo)sFʹ%N?URa9yԒ2O=eM,?/Vi bb*UEE U~~>j|Ƃ ⋱~ر>v;.|'O-jذ!D~7y7>?N:aڴiqř+d DN'HY4O|L%Ybh Uݎ@ +| H׬Ǝ7 Μ9Sѣfggo߾Xh K+I&ϯ?//;v믿V_^p򋶔pm V^/tn6I㝯tDO<qi^o)"όWL:В\bN555@pNSaO'4ջwo<3Q,&4(⑯Dhk@kx=u@=@|WF]ܰaĜ"вeKdggıct/b`0ť^Q\PQQh4*|{e_lto1"k(?QA6QOd$"ZϏja~ے}HiRC Qeeeѣ(--Uǡ?3n7< T'T)8-JH|2D)siD!VfVhNvpb8u~?^/v;0***PRRP($׻?+C`6h%bIcdt6%ŒNP!5Uq\.* # he%͠2\LGؼ]Jh3t93&rh Sj4E(?qZp:p:D"@R57rh1ۊ(lA7^'vюtĩ ?9Vh`999Rl6x^Ah 4܌K9RSNQ_,of:ÐH|piL:ݻwGN0c !h4x-Z矏_|裏xg1n8ꫯƮ]0vXW]uTYf W\qw?oɓ|zeߎmۢC>}:***1.]SNup̙;w.&Ok׮شip=ڵ+v޽{{yQ:-MV_lDʅB,2I99ajKv]';LbWi 5j0t" fꫯ?~ oӜyЧO̟?=_8tƏun\.ݻ| *++}Z w޽{qQEa۱sNسgߏ~o&vڅ_~EJv|ի6mڄm۶aٲe8t^ul6Z ӧOWEؿ?ߏb,\5552e nv)Xv;֬YEO>_L>عs'z-ڵ e˰jժ i괙t"fįײ'%n0pdFFo:Cr!3i`HF"ݫV+"j&}>*>;vD6mf͚57|-[3fGعs'nvv8̞=k֬|G1b7oł555u+`ZaѦM\~ ڵï4jÇ!//hzq 7vtbժUXp!N'8ڷo6m~^~hѢp {A&MPZZz NB޽3e'xxL%XЪS]҈D+Rak:^SVNaxH$ \8RL6M:Nj4۪馛p8 ӦM\'|R(5\#\]`gϞ#}>_9^W8lx0h [/|Alwꪸ乞%j*IK\$i㦩(WzGI ͷҹq[TꑌR\"R-V/SUTTZTQQAUraؽ{7VZg -7x#nFGiӰ}v~-[ QVV&KΉUC~~b:FӧO %%%(..ơCO?y޽{"JJJиqc0`D"[7p>&MD$\O#g,qw~5)/vZ* VdsXIMӴT T@[qyWoA- l6JKK5_(!fӦM 0n8deeqkڴ)<v}It:Q\\m&[zҥ , ^/ gyF(o!,D⋱yf!'|R׼^tԠT1c^Cii)jjj0k,<(..Fnn.Zjv!ۙ3gW@#G֮] ݎ޽{cժU9s& l6z tYݓ WD0me"H_ơł_+*{4NwPf T=d!Hbr! R[VVp8 E,V'OSNo疝7|3FKbԨQ3K.z[oŦMбcGt+Wċ/xQTT`ڵ3f `ر:t(ChР.R:j8q"ƍ|ѿt ;wC=ѣG}޽;."B!̟?>(l5j~O^{5nuѭ[7L8/ri:m* dxX̰jDuPy*- 7=<?5[Viԓeѣ6lB$A @YYZl*>9#ǎK9 brFaǎ^nx^K#-K!'BcTX%.Ա-7b2. 厅@O*?wfp EEE?NYYYxzu6^D13m':ְ614力UM<ȫMipFVͺ$Jj_IWJrR9k-%WZ(R'Z6ˢ0fE`M5*'f g%SVCac%]P%W-Zr"T|&`c9ֺ #T,$W-UK_,R5"k5S`כx!v V9v/~/Ve`4uZiNA,at?VuU\Re9*ul6P8+6(Ylxdճ!U4٢4q08vY.l]ͺ}'G~KGS5a+%H%ɣ^NJMɪ*#un2>ZĪܱUS*JZrc tk@M5UMdc?Zd`XFBxS{ԩf̘!S\\'Cʖq7Pk!6lz聮] ~h۶-:tӧK.Ŋ+O[oDk"ˆ%%'o8HDkkՊH$[n͛7G͑ٳg05`曑>}:ƍ֭;裏0x`4m?A;wonٳf1a8vtMyp80a`۶m:u*qƘ4i֮]+nĪUpzqGA6mÆ Cyy9NClR2ll:qq9yyy8}p^RR:.\]vaӦM'о}{<~ 󚪠_5c-̓ f@TJ+cy*%5d5JOuj,̰&i6 +8l6Mb5++ -Ÿg?~@uW_7hڴ)?|4mPԾ}ҺKKxm]bذaxgœ`ըAMM ^}U20XnZK yf1ck5555ky󀋋.j۶-rrrPSSK*++UpcB\O>d:h괩(x)IK%J =sqkiI/X^* ҟRX*JuLzhrVR{"@"-%R!xiC\j0$V].B*++8eeep\?wW_~?>nÀp%6mš5kt:7|3FKbԨQB\s57nݻfs/(((ڵk1f<˅:ࢋ.ˆ#wV 8p `߿?uΝ;ࡇP+d.]Çn7|B1W^y% 1cĉy;v,}С4hP򚊠Ӧ#H+ebnW;%)u,Uϵ/U /-eW*\{E/uU̙~FҎ7ڌ)xi#UwիѣG!7l1'H$@ 2lRU|r\G;ϧk+C;84j;v@ݓa֭ 20C`1./,.7%w-'vW:‹ݥIb (kg=jը#3(?xקiyS(a~!I }fv#++ GEYYY/NU+vC, DXc\|8`Gj-Wm#rzMENkrJ'HC})Px"6/ZM\H8c%AJOMJD*4Q赖%jb+ IUʯjXh`~_bjzr`e4uT4I,$;HRxeTz@jM%`$b?cD!\I+ Tɒ)'SJ(-Ƀ_^/K6'Cj8TWWڷZx.]u ~~mݻwG޽.]+V駟ƭު{<`޼y1k, 6 xUӓΝ;ѯ_?m{|[йsgtÆ xꫯ/Gn0em* `0NN.'H*S0$BDG" IRNZO᪇[ɏ_kQ5PJf_:2R[V˫W38)螳q0WUN'JKK%;`ҤI;?K/Eaa!< ^w܉9s`(((ݻ1rH߿֭[1b̙38_vk֬oܹs1a6mZ'?˗/ȑ#W^y%[^{޽{ٳgƆ +-[  aXt)>Šj,iz3'bTӾJ|,?%^ zxe$b^O)qjbNOG\ΟRxɉ[%jaH⒋TjrqYqvݘXm>#\"0dYD"IYVD" >Sxbʔ)ĉ7֭['X?O>ի6lؠXA!??Э[79sUUU裏РA9пhҤ nVl۶ ٰX,:t(~:g̘vѣ*hUL&s%t.wRjTjZ|J~̅%ɯVA%^!-$K-ך>aFy?”$=9jpb ԩ-H0j(5 poСCqAa۶mܹ࿲gϞ5T&'eD";{,4hPkذ!ɓXp!;l6 䑛+~*6ii}MuΨVI;5c*{*4Z %HΕĖ`RcC%WIե1`z"b!hwr|͛7ǤIпرvo~zoԨZ۸qㄔ.h4p.xŢп)Rqjnz+R0*3AҞz?RkV+C)UdAn,"B)Fyi.ri礠{bz.@ eX̝;>( K,Cn0vXlܸ9sSNѣG΋-..[zPK/]vovڅ /(..Fn`qi~j-k֬M+2hș!x`-bAʟs5D"IĂZ?-͓R[Sk?s0jWVOZ)IyIA}\=$ㄑU0(V].B*+++8!rɊռ'x}-܂E!;;[ :tE];}1:-#儂QQ^JzLj# Jk$b▫-u%-TnKWq+5a(^G$ $bZE:& NիWsGCnذbN H@eeehٲ3V]]cǎ8~8:t'NiAn݊={όxgOA}]f\WG _S:VHb$h8#}豚 F>(78͊??2$k|^^ZG<9-a?CJZ`ev pQJFpIx^n&TYOfuxŇӺJm*ɜTqxit ,)ˮ6wU_ΏwsD*oDJ)A)ȹK D~$ Riܤֶzt<˥qW5rax7 łǏnf!%%%|Ɂ44C\@CԛiⴊR9rSί.ҳ\I*-萂@Vk;cs1O"JܵT$G$LIii-P{!ᴸ'X.V1 .*?wfp EEE?NYYYx<į2 Hv6@W]V&N,88-nbg1ZߌiE =&\r;(Uj$)fiPVj[Na `999´p8h4 ^3P :m*q*xR9[""ZnUr,5DzEfWBU9)叔WsCW.VAUjSD#ͧ\z"T.zt&Uu8ܘ%!@S EG:&·7jU=ZZHW\+rǤVhr,&.r"XUk[i$m(Wzı<& |>1 b -qs"*Vc_1UͯMR H,zJm*>'rz8c=Jb_\WZ\~o}bj?˪iUZho9%Q*>'ur̃D$ jmDw䎥U*L*UpU+jS/@NDN;jrVU9k 0Qrp8 r`ۅ0 , !%@CG&ԛ.o]FQiL*)kr+]r"U_ W* W5DʹR FIĤ@ryiqO$iUM6F x8VNNHp8`` 4uTIw-b9Urr,|nr zfx<(--U[PP7>qi_oq"ԿN͏RU;v55}}0[1^N܆u5֏46˝*Z)+˝+Z>(TJջQ֖J׃LBGY<(qb趬rP(l]ᳳ 3y! 2tR[NoO>޽;ztRXO?4nVż{xGwߍYfaذa(((o'OD۶mve]B=B`РA׿(,,?cРA۷/߯ "Y<0N;DWǫ&XU*t i>#Χ!זf*uI+]Jֈ%c mCKoHԎi?- sUtYYYVI&;?K/xƄ  6_M6I7n\.c Ah4`d&;wUMS,9znJqkJziSJC=5ɵ *'!&eJ'H} cY DlW% FQF9o:t(<"l۶ ;wWVVٳ;ϔ/[$ѝީSиq:\nn.N>M>i]1MV Kr6RRnj7-sTZI|*>ޔ$rk0HV)CrqI >=T:#`I^Mki& fU UTDĨPӧc m۶O<_~=qWcٲez zk֬~:ܙ3gмyA;h괙 x9?. XX5UHj$UTJBU.Jӑ Wʻx*^f L4 tx`X`PZZ8@6Mqܹs裏 ʰd|>t cǎƍqapԩ8z(yzXjaƚ5kgϞŊ+0fi_:Z_ϱ VFŝ$ uƭ'޺0vkoEɿܹTjI)Rj~M =R][ ,. 娬&8!Ɇöm㏣G@~ex^< &OjXVL:mڴ3g}[-n:,X?8, :p `>S 8.M*1~Dϗޜ8)G]IIR^?9/>Wz( /UrJV>I,'53D!c"MXXV^͍=a9)D"e˖p\~Dرc|滦?:ĉwL`H,n*,ivd!c&O bIIcU9jԹ9) Vs#EϿJz NM)??FK/LO_)O1)@*q-&5fv# ѣχ! "ɓzpi+T)VU> E<\p4= '}ªw֏HAz@o)]DB5RKO),IJ~Fİ8@%^Ly t ?+d///GII?''Nhb֭>}:n.g&NKLZ.vb`UH*%AaW$Nε\jB,WPU˻Kʿw|˵V&IR:J$u*4,V6 UUU(**o&q:ʂn74a8~x4uTjpXĨ`CMQ]Iv %Q)P-zXNPͻ_$$ʕG)"T.=*i۩铈xIZ٢UݨP-3y57(*$bRKzF:sr0M9qp\Up`%w`Hmii`#B:x @  ?BWjSkOHGɺ_΍\)3X&$V,J ZA*jq)h4P(Sg?qZp:p:D"p-Ӧ#,k4hT{U,HaaYڨ`&JrzD&@\/VFĩjw"DhC*q4߉xh`~_f"r1@=h괌3.nH[e+37O*>b?r! ckFί?5jD!T^Iy5UV!&@IjĬV-_FƿTR09Cuu5^/+" ǃjL>}fBǎѺukhSL/J4o~pP[ի {CƍѴiSK,A$L7D~TC"ϿIR( ZZ~riICsD_)-֎0BU\rjeU˕S-mq+`Ҕ G_h GLΌ{]<0$V0nfu88N/I&b`޽駟pA\.?nSLZ/ƍD0f3<N8~ /ʕ+qmI}WcF!A |e*˛QHHD"qDZbNN-bӒHK+GZ&!)#i=GZG|}ixw~$nIQ%mgxMcgr-V9C(BvvuR8t |Xt)֭[曱}v;vN˗n@VV>sYk֬at:bx%^~=F Xf |ÇGN⡇_]bB{ԩzM6 nG>}о}{5 O?4 "pB]v_No1@wx&]^Dd! S,Q[/Zi`n|>֌v*|PI v!VQقqF! t:uw:4i,Z_|jjjxС.bkBGO?Ō3;v@׮]ѭ[znc9r$n݊c߿?lقz .|x{СC;1}t|M7᪫Ç^P,^6mŽ;p9_&b04uZD0meR7qD߈r#WPUCUUIT|Rk7#jתA*xIjD|L :@S3C&J3n~:k)GZ1Iӧzc&LM8 ,Y`¼h4g7n,mѢp\TT'x;wFΝѽ{wn:uh31M6S8o" <85|iBToXc5wD*!-R#F*`!V.-#fSMbpReK%NLUQQA*] ůZ>};v m۶x'/G~`1}tưaÄ0C??\˪*ŗ… k.lڴ 9998qڷo2\.'[1i$@t2KtEQrȷCV G\YI=iio%7cQ@׏$'#t?R^FjBNڵG>B?F.#ٜ|imYX,l(--<0s@ ͦ8͝;>(Zd|:sPM;wbٲe馛LMѣnf\wuX~= WW3P\\m"''555Xt)͚5CvrJkb0n8K(++۷7xn5qzd.og&V,:$ƒDh-?ǺhHrP*\?P/ E|JDh]g$8R;dx\.ni8!Ɇöm㏣G@~e˖:5k#F?zq=(((_|ͰX,h۶-j^999zn6L:hԨy|w3f oߎe˖aܹX|9:v숩S⣏>̙3N=x|!3ɹdzCV+<~3XqTxc%kҾJ@I8)%W.5ΈPUJ,(O"FEuUj:B,WF]ܰaĜ"вeK\.Eq8v~?|>_F h4*/^={୷Jv2[nEΝ&hhhC uXb;'u#=:'CfH_9?z+-T]h5K* 1~I݁c$^#bf^w=ӐҤ>jv pQJZ(N< ۝Buhٲ%,Y@ kbʔ) O)%C~rT9j0b5JVp5[ Y#BURr~UOWK RNґNHè-vR3ÐXjK_?~v~^WX%_^^NNYSO>$̙;f+Y-h괩%Z&̑HPCp#{4,J PIū^+&)ryRj"R|N"\x|i G.%$\{4eg<ƿtxUÁ*~8Ndeenh׮>dg4uLHwZ `X`Qh+ ' mO--z+5ѩO/iX#BUJrQaUZ-o."X *P;907npfeBtLhOMM|@V%>em5rCW;'R0S&F8-aU-&'HI, /.ru#xIEp8Lv S*^ƾ⑩TB:vLh]P@YP)Zel'i9r-Ts1O*^RVJT-?)^I]Z/%rb?M,vrf`X)C#;|&`ī9C0>r0jE8Kxx>~!T%PpUr'JQ(#`cE"sRq :.S/ yW$AMMR5њUr"VV>HI)V85Ak05"Tרp"BDTˣR\ZJB(U8).V9c?˪6wii՗/r8eji*ҏS 7%5$bJp*d!ZܵU CO)N9# +W&WIs0MOrn [WaAau, :m:rf ^B*B͘JZ_?r+ԿJ-^"U *N_PU;')w iEJ]s@އ%-_qr0ExPaLgd!*n K ֭,X#G୷2]c=W_}M65Cz/ %3f`*5% ޛkݻ56f9 )׵ZPj;73IwUsqFy|H IXR+.94Aejedgg -9ðaУGt-TVVoÇƍ7ވbX|ޢ31h괩 UK(Y3yw9Aē qJ3~$qJ+ՙ/ֿ2QZӍf\B 6;Iĭ?-QakFCe8a8N"++Kzii)F{ SNř3g0h t G1f\~ظq#***ppwŪUн{wEgiSK७Fh4Z+WM|f.R\ZxIMJ,N10"J$Raa+W%?~#H-9eÐXD"IYVD"]m`1uT@ƍ1i$]GFϞ=q-`ƌ8pl";݀A 4uLrh&DPUU%2"0NN< =%R*w/*7SfDHؔIsk[5C/SD DlW%^!sWSS.]h"9۷7ZL BtthˏQVaiV7PJ>Ij9XHĎO*^p7"b+! GʓįZR~"_ڸT-V/SUTTi_QQV8spY? ,^۷cǎ4hޢ2dұç V^p5H㵈UEH%'BUMprr"l‘kQҕK+ /j8C  @EEc@MM ,X͛76oތ;wb3g@\bfSI]ofCcG"TVVn!Ň!qSKGm+8I֚hGʹ|*%G*TIh'WV)70$~0jjjS#W0$V].B*+++q(++C8%V^/}](((@^PZZ̙33gyn 2Ƽy'Nĸq-:CM"ѐD$݇UpDRj3BW*Nr#{|imSBSX$jAĿuFΝ U-sR04gpvĉhٲͰO< O'ǝ׿Ux<8rH^{9rrrt:&`:h괌/?(*++^ԺJ4.30I=rz_Uʏ?T;"v*BW-.ކRX93o*`1 U~f@UUo ~N'x`oKOu`Q9oIRfRw-T|.SzIEFܔε[pfb76fǂxp ^*P;x90(V+v;l6{@=S/0Pp\p:eU$~yw-7=JnU݈PU$~ΕVIrh`PE+S*^J-bTTC Iki-r[XedYVUJ$ufD kxAj)V+V./ h4cqNUL2*h4 DHgv=0w7:ƓޤVb5TJq$nz)d زkR~!=m5ĈXe`Huii)xi(\8FEEnp'='DiUW3q3Vc9wܤIoTkq09v+K4驝+ F6&-޲P\ɏR9Ih4*?ƙIe5Fbqړ֭['/XG[oe${ *6m+|q|>C1l0a04uZY"I/^9deej慆$W.i_I0Fjl}R~pb>k?Ʃ5-WՃ ;;[v ۇaÆGڵ+-Z+/x7|>?0nF+V v|r<8}4/_ xaٰj*L>^-~߿Xpl>x-[`߾}8q.]*Y-'|/>} fc/ЫW/lڴ ۶mòep!M7݄ Ƴ>^x'i3-?EQ ӮHŝxHfTXRV铦)Ok{H:6"Tיutmʕi16? "X 8֬wjmݎS7nI&aڵ=z4z[n3feX~=nvnU`XPTTnƌj7=>>_-ZgϞzq4jÇ!//ǎCF~;vaرq0ts|:pըVȧXry #9$a19 `?)'FrLW_s.6l0dp(xy [yJN/йsgA.]?XhF{Y4h@8Erssc_GƺY,|>I+Q{YG-X#So8fuHDPVV,\.U"VɟPjs5a{lTjbވx5="VϹ M5҅K+b2UEEFjs9`\{ؾ};v؁AƛӧO %%%(..Vpi4j@E"q8qQY~?Le0T yBMMM-XUcq›%PID~%TcN'ɹRT9qBU͆R̓q'bv  yf͛sN,^1sL+[\\,1ck5555ky*++f͚:>c9rvZvM[o5k ڵʕ+GS)չTZUU%I~Ji!qM/Q( JIʢV)p$(Mͦ1NÐXu\B$ǡ p.KXzxw/zBii)3g`Μ9xv1d <L8ƍÃ>X/֭:w ǃzH5?:tE];}3g6j(((('k z^lVXݻ{ԩS8NKgO[hu 6BRnZTD4@ZJ$Z1i~9o*E?Ʃs<,WF]ܰaĜ"вeKUq8v~?|>СN8!-׋zpZhTX̶xbٳǔ}g[nEVB8$5msيfzHV) /浜=V_~8#~U5QM B 7v<-[ R+ۍP(G"??^WrF8y$^/nwJ Dbhٲ%,Y@ kbʔ)VڂtՁN. ! r!++KcI 8S1o*řՏjbTJTޤ It4r0baz())A8CNNY3O>$̙;f+YD 4 >:0ڷ_`Jy胒7#UJ)y3E&<&L~ch4*\f^ka]lp8BQQ~7DVV~?<v{Z̹ϯX,"Av$x+Y\*´a"h4 ftc-5zfTFW-c-nb+0,VZp8#L nR^ǿ63 )w0b7tFKz1qUUJKKQVV&UZK%._:p< U~Rݮ@Oj5֭CEE***0o<5J8߳gӧOc娨ߏ_6 VŻxblڴ ;v0rH\gy}v8p/2^y\r%={6 ?p 7ra޽oPYY~@z͚5x =n{p:tǏǺu62eHĀjVO/. C`+++ FD_LqS;VH&B8ւ /*͙b SO98p@ς pbرc DﭷފI&I[AϞ=OOde˖zWo7x##`ڴiصkxѺuk/Бpi+3M7 >•VqDji?RqjֿV?pXpXr?DBU͆R"8S@6MX0`***555X`6o ؼy3v܉ŋ;fΜse%7n^z%]u7"_Žދ^z +t z1l0<3B05nz^t҅}+Caa!5k&NSGi%̱n4UUU(**Bii)*++QSSSkH]EXNof èFYYQZZ B:sP4p%^Xu\B$N8!k(Żヒ_|իJKK1p@9ss?ۍ!C`7o`ĉ7n|zΙ3 _=z`Μ94iV+fΜٳgK.hڴ)|ItM(//ǐ!Cwߡm۶8}4^|EXv-ƌCTzشi:v숮]bʕx6!l6ZjݻATud98o܄9?x-))Ayy9nJ~NV&~ee%ʄ#Ctҩśòzjnu 6@I!  -[TWcǎlݺ\sM=?3*++.^N*r7cX`aIx3+v#+Db48.yxW!I -lpB8z(z%wF8y$^/n7 ) A8ydԛr2CfsF۟jƺSجVkآUɫQʋP SmXcV.Y/û8N|>X,?~v~^6 H())A8CNNYłs9M4co nhC&?㴷?N/SXVAoXܢѨD"ux u.pqҜva]WiVUUt"++ ~GXjp8h׮5k#GTp}ǀO`,gquR /^Ig2V uJ[űޜ*a眜aZ*jnpԙ/x<(((3gpak"ǬNɩfg*58x"VybT#̒ʐhܸ1rss믿رcA8vM0dpRнub_"a`HUXV{ӧ4=A88fuJ~?8up\ԩ?|xz4 f 8k+RfsXe`0>={DN)14 $;43?IhkS3KDaUZX,4k M4?,gM^M9qC82S̲Gl6m\p4i"r :e6Ur9҇ @vv6 гg:Yi 4'S8vMo0dpr`b!hذ![g>+@`v#eprDVӋcOhesV ł-ZiӦ8r~Ɂ :0Nc~5Vɥs`U$pcǎׯ5jTǍ"1Cfs4!qXe`H2^/z?n<vLnYNqጴu,4JФI4j?3~GB!-YOjdu`\?m壝c/81e"XVi @-$&nіLX*p:(((E] `7WIsZXU)V?SѵkW,Xqmܸ6m"דmÅ^?/PـkބY3Nc_6osAlڴ K.EEE.]>oqWoqW_En݌d!мysȑ#Df1#6g&?g\* Mhܸ1n6vm{ov)dW_EAA4hvᮻBee%N:χ~ :~!&M} Xf z 馛0vX_QFiӦhժ.\R6 ۷ǠA/ɴ$KAqա.qb555?СCx=z˘7ouwycƌ /5+5j>C:u 'NDee%n݊ .O<6mڄC[oOSO=gbĈqF}xꩧHFvv6?|\tE|8vl.OChXlNI}wݻW^_aÆᩧKj^vex'ѨQ#XV;v4j=z@NN>slٲ={5\zڠAԺukk7oFii)&N}bΜ9h֬^u#b`H b(,,x#~,hRcVXJ._p0$V[j+Wbʕҥ , x/l<6 ͚5Cuu5$3d\phРn&d,Ξ= Xt)rssSNѣF2X,8s1dwyX,hhnіƱG3'Cbk5\ŋ#b޼yD"-[ gΜa8q^%^ʕ+1sLaٲeP|c޽ؼyb10v;v. ͚53 1Sr_ml~j> •W^J3g̝;;vwމb|ͰX,pݻw_JJJgΜ_|!i=|0{6oތ={`Ȑ!hԨ>/ꫯ0e]֬b10^/뇋.999fu`V|)?tn~'#<'Oo3<=z46mڄx=C+?`ٸѯ_?7oq :6m›o+:u{g%KAxвeKL4 wu ?b10peGp8?!tl5T#hj)g5??_r6mԛ:sL*j}:ׯs_9/,,Ė-[!aZѮ];lđ#GF0hͱnfs4pidqe6gc>p:(,,ŏ솠8۟| _qb0!0`.Bx)g\?fYe`` D^pUWEqRiC#\*?ҫ;u90>]v  }\vN].OCiXlh[R^rҕ_㪫B>}t:1hͱnfsRJ[әc/QFaCJYDE1Z,X-pZS^30V+t邶mb߾}j") 1Spq2p8d(!* A$EQiť#fߋ\6.Ks…^;b׮]8y$:tM8yunV]O]qnChJ8Ip8>傟>/.yMr+C#Fয়~_|2 c^pJfsM4<5XkBLG,?zmj"ĩ3xtXg~thfsr1 +CѺukl| znMAqiu!ZN8r.*!%j0XXC<ǹк%8bqlh</- ,{s]}9Nh,3``8l6}ؽ{7>\:0N+űٜYcڴi b5"/'-x9hߪ"lQ# w7#C_([t$x< 4]t>}TpM8u9=JCӅc/9fԫP$\X睛p8h4* øf%y=_PT@HA200$yyy=z4 MŠi6nіƱĉq%ZV0N<2a~QkBtvއoHD _s'_+"B~^.3@v;rrrмysԿ4XX,tmڴ}_K)mpM$ǬNtqj?8eeeᩧzG?q8jCPVY&  UłZ棬CVVټմF4Eii)V+8:u_=z49v5Vof?39=܃s=Z`XݤM9QXԲt؅xN'*KJbH |> >Ǐǿo={qku!\KoѢhibbq(++f3Er  I-BlWi łF D01n8G Id9i%KT?Sx< S[nn., ̳`rñc6p?s'9RX,xgu2M3ӂiZ}rAOEj{Byeڷj\6YVR ꪫO?O?EiiiwaRYRc^O^zA/iZaZѾuK\w ,TW`~Պ7> \w oR?_/@MMMwDr*iVͱWrrrcr:Ѩ=vqXy;6~_? <U_ ];!_!uaгgOaC:%73KЬY3AJ8r9ѢY\N7lkGiyu‚N\ths.6Dɶb`H#n <Opz~h3K.muhKg\zvpm(RBs\.5En?ڞ>]P nχƹ~5ʅnagB!MΝ;pq:Pft1.Or(RFgaFoY4갳9 :m۶سgvލP( 5K'ծ19ҟ:t(J,,  bÔ)SЦM~hSLѣG g{ a```0ƍ 7܀F <&O+Xf̘?ɀi>|8***pwuؽ{7y?#YeY=~8~ws&Lŋ? nڴ ]tPPPK q=z47o|L:@@2fB֭nI4l6wy'.I?4܈KC5q\*C=<$ ,ZB-ƍ_>}`رg݋'gϞ?+WbhРnL2~-y|ӟf͚'u]]v_G pu{Ųe˒Vq x<=z4?c=?44p4YhDp4?ҫ;t9s eYu:زe &OݻwnCѮ];,_rJp{_W֭7}0x`\^Z?W^3f .29ovj 4y1cL Rqss!1qxt:L޺M6x饗Gm裏b޼y۷/~6+>^ys|سgۇd.v\ve뮻гgOݨRJrvO?tRCe`ʕXv-M-[_ʕ+}"//˗/ǢEz;^ó> V:tK.ɓ'?I+// ¿oٳsq4jVJv1000ǵ^ /6l/n:9Dmu8r-7gt4@egϞxp`_]tlقf͚_~Xb0&N?>(f̘. ]wߏ &`РA;q {0fw}8q"l6~a1CUV;w.Z|:nѐLƥW7n> h9\r .E?cƌ1c6 J={z)ᘷ20003, znݺaOOp<̺Id9i%KT?hذ!h3M2000P˅#G{AAAA=wnF8Nv.խ~3Ʃkq7&0@)5jS[nƂ_9&V(y睇 ǏNM.A1orcK/m=g!qZ߿? uV|n8i Ofs9˅ŋF0*C vkGt)o©(xҩ3K;ѦM&VRM6̚5 M4L:%:=Emeb9GC7o ,`R]vEN'>@UUԼj 2hǸ?'Z, )͆. > .:GFjҖtM .ɓA3Xe```H=܃;m7Hma:REPs-[ߎӧ#77-7H<p @;؜U4ւ|غu+BNMG\&Ow}7Zj Nz¤:GS3.ڿu֘?>RL2000dڵk o@M8yLg 8Ò%KTaX,߿?z͛7?D8FіL7uK/\s R ̲˜1cpB N,C$ I`t:xXXH7DQ޽{Յy?5\a-\CuT-=!)) zIJLbzz">>@QY+<>s{""AGGrrr~^0?c 6wغfggٳ+ex<~Gԉ--- .\@CC 3^d}}}ez[W~|n۰cK UU;Hw %Ip8ǚh |all ϟ?ۅ gF6+//Ǿ}gzE ~ Yu*~(j!rWǏEiii>"Ñ$ ؽ{7>}W^da1w_<$ n݂ޭjYf$IE@Qx`\JYUU @eC>.Z( DQZ||>Q|=lSUgF*w ło߾njFԉ&;;ׯ_G}}=ǜ sg\Ϫg 2X8NO>arr28a p#?˧tDQDqq1pEj73GEEFÝW`fyI055_~vNe9XRA=ZLL jkkQRR͛7cZ/53Ka6onnFFF-j$InGTT^oݯ3ZVHd]V"55---x-FFF1-pdf1 [0"տ0SL%I #K*n݊-[`ll O< nhP1c5w* # )W Mg6'"Y,?@YYٜZ(f8oVXXG¨XV(bN:`1ZЃ2U"" ŋHNN3R:l߾FƲJDD v܉ ** KP(΋Yx2nGgg'e4EeTVVbpp\ `S?sg\V]FDzJDDrЀndees-pd,[׍7fJDD7o \ B 1^l6*i (..ݻwQUUYǴR̔q٬YnDEECCC(,,d1X»xfXpmCoU_,DD;)))t:;;~zNڨl޼f²JDD~;wC%(,<rfòJDD6ѭÇaX4Qnˌ>coooٰ!vchhQP‘?ӧaF,DDd(vۑ@{C Ïe GرC}}=bbbhx)c0+U""2,Ip ~VFqPfZ3cY%""s:hjjmRx͟aϟ?L*Fff&z{{qU$%%9Ωf\\rfDzJDD"0<<ǏjιQJg fDzJDDdP[[hvƩ~;v IJJDD&˗/c``6m\ibΝ;E4e! !!A3Ũ g(,,JDD? `x!˲ 3cO}q -QϞ=hO4pĉ> 2ׯ_G4e޲ZQQ"""""HXVHXVH$o"""""m,uAȽ0IENDB`gambas-3.16.3/app/examples/Drawing/Painting/.icon.png000066400000000000000000000064031411575327000223240ustar00rootroot00000000000000PNG  IHDR@@iq IDATx{p]uksCҕ%˖LxļqB)4iI4ӆRd&Ӹi I1)!8B,ٲ$zqϽsvd f{9߷^{7as2Gy(-K1LfKO7rhvg_#?{ģ){MjZ~`I3ppG^r(of܂"Jɮo~LDrn\..7 ivR逸d.Qlq& аFZ$+k t*hc e+=V•5Ҿl0遄Sr[|q ٗe?  |V >hǓ5-| d+R @GXdf?.Pj|z鄥D9JքD9*񌵺B]@+=DטMC\ ĴҎe)5;S`47RG\u]T0^2IK[J@.^ 3H&ILk3e ,C5mO[i1Zù9OjNR>=+ Lm;<ͳO :ZYagV;k7I 7(V~h@,^{{눦 %*E<]y ]YpRVn@0:Nqև&-Kgɡ8_~zWGi-"Þ~eD:B)}bC`;r'փ䮽>]\,\'Ov9.Eawn]\Ү?L{W,A̹Z鰼hG$1SZDcYٹx=q<;'YUi %=WÃ(3Nc1-?Q=yuU׾8?tdѵNH(-ᇈ @8LW(3hڈK1GIyك} !z ;Yu4->5k!dA8{pVȔ 1ɠo`2JvXI9vn.%&eK)uzQEG:oObyK0a eݬYwӬ 0/gԅ"?ςu1lya EF}F$yNeUBJcpEz!L!Js,v31ߐUTNOd~9)ץ-墕0MqV7k)_LS'X[o%=Ky8'm KCC?O :X nt':qu3TSKHYy *;O4KE /|FD`G"F"4DQָИ!%9R-1 Wx|5Ҹo7vd5'?Mo_'ǃ8NitA)ʶ%i%Եusu^z9KR{"e3 8΋MگhoOC-CCx7mj̛&,p,V& McyX[g1/*"-D]kv``',n72:u{hi`\J:> v<QwOkX$F҉@.\VKVSxVP-H4cɮ\ !Z;AsÒR]'H,*+᝚zJGkq v,%2"qI%ՒbqhY5[n$R7]:[dTO6sc d/=SHZsaP7V=( Z@σ>_w?0-;21@I(=\ OFp˭[Yx*^H:N;~ VaYC >:BtQ%Cx&C+M+W`*Z-=z`OyEIl}(+ra!K?ɺ%Y0&GF|ڒkɫydBLFQzj_v?k|Rj_&kZ…9d M'NPu۶?}_,, X?Âe fL PZ%F|%=  Ob,š0鴋;[oƵn5dWn[l?!fzdb(x@t M,`)IEv/@U ?xcqR%DDLN mBDWI'5o] AiEϾup`o} mzps-@רV Bi2="d@D9i!2op8LG Rʘa搩ds>.p Y#IENDB`gambas-3.16.3/app/examples/Drawing/Painting/.lang/000077500000000000000000000000001411575327000216045ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Painting/.lang/ca.po000066400000000000000000000041171411575327000225320ustar00rootroot00000000000000msgid "" 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" gambas-3.16.3/app/examples/Drawing/Painting/.lang/cs.po000066400000000000000000000041541411575327000225550ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Drawing/Painting/.lang/de.po000066400000000000000000000041551411575327000225410ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Drawing/Painting/.lang/ru.po000066400000000000000000000106501411575327000225740ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Drawing/Painting/.project000066400000000000000000000006211411575327000222530ustar00rootroot00000000000000# 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.gtk3" TabSize=2 Translate=1 Language=en Vendor=Example Packager=1 gambas-3.16.3/app/examples/Drawing/Painting/.src/000077500000000000000000000000001411575327000214525ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Painting/.src/FMain.class000066400000000000000000000273031411575327000235000ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Painting/.src/FMain.form000066400000000000000000000115601411575327000233340ustar00rootroot00000000000000# 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 } } } } gambas-3.16.3/app/examples/Drawing/Painting/.src/MMakeSourceFile.module000066400000000000000000000013221411575327000256320ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Painting/Example1000066400000000000000000000011551411575327000222060ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example10000066400000000000000000000005071411575327000222660ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example11000066400000000000000000000007461411575327000222740ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example12000066400000000000000000000006651411575327000222750ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example13000066400000000000000000000004061411575327000222670ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example14000066400000000000000000000011501411575327000222650ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example15000066400000000000000000000007711411575327000222760ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example16000066400000000000000000000010151411575327000222670ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example17000066400000000000000000000013051411575327000222720ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example18000066400000000000000000000006351411575327000223000ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example2000066400000000000000000000011601411575327000222030ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example20000066400000000000000000000004611411575327000222660ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example21000066400000000000000000000005171411575327000222710ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example22000066400000000000000000000003371411575327000222720ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example3000066400000000000000000000004621411575327000222100ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example4000066400000000000000000000004221411575327000222050ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example5000066400000000000000000000036451411575327000222200ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example6000066400000000000000000000010371411575327000222120ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example7000066400000000000000000000006411411575327000222130ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example8000066400000000000000000000007451411575327000222210ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/Example9000066400000000000000000000011311411575327000222100ustar00rootroot00000000000000Public 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 gambas-3.16.3/app/examples/Drawing/Painting/clovis.jpg000066400000000000000000000367361411575327000226250ustar00rootroot00000000000000JFIFC   %# , #&')*)-0-(0%()(C   ((((((((((((((((((((((((((((((((((((((((((((((((((("@!1AQa"q2#BR3b$C%4r%!1AQ"a2B#q ?Aq7 E)*]BSf7C]ԠA\0N>|/K1Pi_XD0pyVt7щ}ܬ5ySZɨ359'* dPSSfR?!DG2pĐ9rT&^智y|8n$(Fivsn>Wذw5NoTͫ{Ю-rVOP3GzQ|$Vɱ[^@Di؍;w 8"2sVEVpmUSmK\V"[H *)ڽKyI6X؆.R)V2gέ_*U% K/kɏ݇s+)pVw[+r>T ɹ̓1|񜳟T2x"w"N:ʏ$;:ѭt&;pB,ܟjy*0#viRʝEE ]iwrEmpzҾVWg x4c ѥaeSƙ> ȿ=@Iu)>v Vo-+'*#W-lS 1.ޮ]9`|)߃$[wM$/Pmg ktn%랢u:`&tӢvE~zx+5y دre%ۍgvV{Jj|'*_13٨69Ef[X ڌ*M| z4pJ1FzA{ЬlGz+l="FvPn^A#Lof8%*1bPmtϼ_OǒħʾjvzfU2TG=Rtզ$+X\wܒz:jƴ8b=pݜCaJZ2ŦTq.;7q'h7k4dd85ji]Hy67kU8g#|򆓷Gdn;tY\9x6q:z 5kQco L/rH#5_W'i|ZF6sJm^ 0"F*/` ~#MZڂ?kx ģYAmsTr7\HJɒc+? W%0WTi=*Ecf(F4nj=}AY(i5KdKp |RΈ4=U{wQ%$|3?3_*(?0jA93Nb g?³i 1QT (n$Drk7F@/^~`79`2~ƺFq|< 7ىO%f'.O"k1\GhC?M Z9Q5{Pؕ,4頷n7MPK-,-#Ҍl}}K/ x+;K>o u+β8њ&9) )~uld0V5&g* Xq)iW2;S:t62yUlQmXvH,Ɣ-򅦈c%oχ6Y@Ak. #և;Ox94s'1Duӯl`ܙ8H*=GQdZ' yس-us3iTXLDFuN01IF7S@ZI*P 6&wci5f#2U4S1W99iu:YM%R @43 WuA]z]?:B s+qK]/+IGEZA4n>B7DZFq4H>~65-8lNJݒ|םԭ䁊7n"rmO41To~O[j <}Cr ΊjMthmB՘8G 9#{;ȖHB>Y~**i?b-,dvx$)$gC:DmW00=F8fGb_bmNMo$sYOl{R֍{vH$ H>5WS}vfU[mi NzB(Q0TXnƲ$Pѱ'#Rq] 7 B6#8ǥ>z)YCq<nd.jHNܨ<:3mA2=ڊ.3MR.P:#Q+hIj 1[^6G[GX$P>g !%St(mDcӊҺ\]A Kde'9"u KC嵽hA# 1MeJ3{س\ch-gc_Xt9Dh#Wlh<uƹmv4˩ޘQ9_O zʂ6/.e9xV>^%(<߅Qimkǝ-}F4I$V`)z~[Enm.!L$p~t+zB?U9fhF0@^jU]$$HpMlV&$x&:E2;c ݭnNHbGdP.nOx71BqTs3αd.Fh|[Nl M *$̽|ƣq5;7E;+*xVz-|+,1Cn0hZbv2z[k) -73-dJ)ŤH5O Z-ow,doe|4ۄU?efrۮTn\|zؾ)Hb ciw%?G|Y#c8CeWdQӞ] ZR'?Jo s}cQ-2H@ jpF;ntB## a9 ԥ-X֗mSqRAwK;9(9:PrǹzT=$4@=3)@;QŢYFC͹In$~ AQi0'E f%onBJF_rT>],#k8o:s/f y\` q# SIDNg]T N' ~U~YmWoOpʽ_O}WF_ ?o xJϺ>ut$,ƾauyqS km*y dgϚ`ǴԥLg469uEZJYF#Ic~uZ+8/}:UF$*7($(|n-+UUa h^#5>KF%GwXug.2ڧfiaӸxP& ԛ0y|8R*ME{(f|<^6騬H/ZVb}+dːK`"P]$NM.%x{+\bWXBBNF{ .mn`sJkֶ6wʱgO:;nn8&'Guxgv-yC+nn-+l ;`F|mX'$<,SLW=M=%,W|HYIbprЏf 㕣T2D~FA@SvaMZl6%w'i(^Em pqZ䭙 d\}X=P-7 (֐//{eā6k-N/C0i;jUKv;Ěm'] O,q g᥮ SpcL MkrVd' 88ʍ0y#pjٞ@̞Ŝ題LW(~*΃f1ȏZym\gqeI}HkgޣliO5wVm>6KoPʤJPJEGՕرhUԿzMʑ/v:a—c`L4wWmF3kc#Ҿi,,?37#4 wmhR%4y?Eдy.Gvj07-.Gr&PxQؚzLTi‡'Oz 9#k&,`gSj5x{VQ^.OgV,0 r~un.U'⌒vD:qo -7B4y{%n.t+؞Yir 瑐khfZ\ZW0!' (^龂y$SdC zfTmw%h^!A*l nKkh-JȪC&6 2qFzd-mVW\c{փakgf-#QךI<85Hao\4<7pr5pqKT%UU>N瘦*sHWEH=gPR]E(&S?ֲ^Ehq1c޶޷M:K4*np{_."VB1S`fɍI׊tu#;Bf,(xQna;Hw~;%H}y`8QOq4֋##x9*KY|)OG6^9_?qN2."a^bެhHlWE(J;09kwf%q 7 $n.PW>8HK" [zՖ++o`;cT#L';{^Ҥcqޯp"mn.aW㼍 EXgΑ>յzkK[ 5rqު?%*8Pc0qNZR(IKx'Kq1h^>-DDUT=W.|0Ap9>$f$@v+r; %DǖE o|I䌟{Y? M=}EKg = EɣV qH"~kA> 7<?2a[fv*o*rikta,l t (^{gq₣g:L\J9=ΊǨ"ąTzOup[U}3\^8$7 ?SGtdXv4{3RUr=/jJ,cfMHRk4 <W[d H1VA,ڴhHܒyJQp$0+.Wc0{wwiiZT~_Zر̮y<\Y$@Twb;ThozEbr\۬*AIuc[.Wjg^Ux-nkY3moJnQcV:4s?NdF>hՎ9eui1v<fV[CE#,5F:!?w3H݁<Jg[ JI]c@i#P8 Y[ZFT"_d!H9"@~TQ**A|S.6vD̓Ä#ݼ]#kp[YQm\)>ֱ{=?FIךTyvdD;YF7 ;'Yxx񣉂/rG֑^Oj.dҗ$q=?ZB h9Pv]Y2Fic,Oyؤ!i2G.O 6E{m7R;Z\w#no^3%ȍCD.Jg #LW}X$̋Hl#kacy'>8$ӞVU[cE,h@aKueqG:U-XL) mp`H;>t|Ty:2ϸr5'O8ai:% ;f;ZexpJ>Ug֏t坕ە KM#F Ӫ B3.&0ͲI@on\]gܸsV+٣^@/ HeG2iԨGQYE̦C,ۂ'=j5껂cҾ]OMe$l\>x4!S( q^[F餒鋑oz^}F]F9Sj 9׵EjwfT>mUc;g=#R{ޱE%팛##To{Ǧ2o?y`}{S**j,w=Z^4HbcsJjy.aZش!ȒD>Pyo 2k}٭)991,v>xl,s}IJ,6uh%??ݼ< 4"̱˽'w=6wÅJc jH/l>/٢Z>FCL,\bqh| IOة~ 5cI OO%ݔn``̾ڈZmp.OEkL @ePq|:%6owm<~}YϣCo^DJktdП*压>`b722EEfcnN=EN :Idܬ؎V+ v0Jj>*sJV 4@pwx3d>7`U`3ɦþc-$gOZ4Ω\kvI@d ̛yϥTH±qV52KGH8 9ahp2@j_zb|<#(WP_B5G3UGէ".=QΖmv=A!a#mۚV]JMF3 *y=b*PqF iqD]A=9s`̀8b|]:U=?Jz:SSL*rTr>G&?3U2|‘HrZ5XE 9?1~P6?|Z%d#a~ln&\|izbtU劉\k_u#ÌU~޳ޘM-T(n9iKu#zχ?Ҡ?[[1ClQ7㍾d|r=y5 RbQFSO4+Hf(p?_,@ڞ;T9l/q$JpG"5k$ƭtږ mrh%ꋫT2[sGFܭ#RMQ`\W-Y|9o/F2j[Y"`w 5`@B Z E"\MԆeXoR5?]5_[CG֬WWzxp震/'֪tmJ5 =FGγjǑMU*[,Wi..$ס~ȡt80r0qc+Kr)D1<^4A_o]GIvbo $=XګX5F/&?֭Yi>{<T]~TS1.JPu #<Jzf;kup?JP|LGLN&pk,1A(>t%W {dA2>G,v_yу1,W O#Z=N4vҼd*'K[1H=I3Ӥ3 #矟C_Khw4v}{v[q@KRQ*Znrǥ]6 mV;FU*8;M8#H91A㻞QdQ4pU|#ΐO[ZI gޱ]k7!(vH N7Ԇm,{cɆ.yUTe*Иj-t]#Um5%'k7oք\2iҾ늛su7%ydzc_V?&f+B^VI%>^۲lU2PGqO9XR,um(q72i)& 6q"9t C Nֳ6̱(a0da{z/=rɵ+=iؒJ&'{@v\jޚ?,)ȃɤmjM'K($s>#~WEhHw|CUe2.y Ut.G+FHVITDMHl/=VL7a)O7]684K=GiOqbIP{hP@$Ϸ,ǒOvt8SV4 Q2<;  ISh5ޛ>{}.3KDo$OV'8SM@oN2!?+WǢu) m?7+OW$h@p?/J7Xy֖E{@,גR+|ھKXva;n>w,]ZBy>>C^GUEsql)R6MÍ?J|]FVy"ѭ鸍׏zr\ ꬙=`oiAL}`Cр v*I[xwjryl~7E*A(翮H"L:~`:ӿ:!'c>2$2]c} 6\?Ny#Hy7z:Ai$/%A&5pi@ht|%?֗MM}Q2 $Ӆ*b|%Րv,sNw [_ݱ}{q.1K?Q@o#cɉ'L,$O1hvb^|cᐫ4Sa5͑g*$c~FLH[?ӹ $7C]PPYIȦ]V-1̉9`dA'pkϺ\bBוIq[Fy*̰Ȯ˕ ʌXLªH vbEӴ2܇UP I٧H1󮫐 -ErQ5%8=\:I~5̒)Qr8ˍ 7uTm8%qܜWoњkmΟF܀Ftkح P_#{05wPbӟ֫]ګRpvnVj^g%Bi٢$کu"ĮIX 5*"̖q P¶c}Y'o\㷌 2I8M%Ko`)WԢn.w'g>/hu zU-H[O U1C:ݼ+xLg\q<Æy@>/(<1^ܷr~R8nqa$YDF#'oMzmt-F QnLө4\G3*ۄzR3]Iru~<bv&yc(;>TwZ-줁TfU<{ ֧kUݸQLiȖ]Z2uH^v Zn\zP]N*Ͽ?ڑ`Y걻11=*>`aA530Q>KN9Ug="n "^Ǝ/-Pm2"#+4jŢN2f)}Ie{ggx@U㺑W: o,c}qQFyBX/הTȞߑP=9Ϟ k6vKO6>G1T  mc]&YXvfqݰN+Y%HPNK{Ѿ#rOK$sOBmpq $ ]ӵ,MֶM%8#\^y,qҮ 1jn\XTlmY&dUhbW)nٮ-<8*m$Em<PWڡZ|gA&Y]DfhG5Ԓ QdN~}*w-V8`$v<)c }y 4EW*v(Q?:k.j@͞:Yti(Y%fb}3QA},>qUze $dσ޿[Eu" ??*D׬Nqi 2}+O#egqQR奂&tpF [ 9 zS:B'r0KB8H58ECc,OibxԐ.{D&0ڼvE-`Ǜzb(dl 㺹E 5[TD@D'xC>5F(G$>G*(q$[Hc?:"$үcŨIV-?8XH֏H kHKԃ|inO8WrvgƥǞ(.4X`l|`V` GB6 &z@e2o_lwneY`k\f z0<~Hէ vWVEݱ|ϑS~Ͻ>]gB8b?iZ ?PUߥ}vq۶G+Oi %F;QBKHe6!U8WsSލ^["BlasCuGk}(r5vFssIM݊2F}5Zk6Xa(I9yPl)З&NT =z%h%Du1O#ȊXĿx\Q.u]E,a +?(FCI!PPu*7ˏT 2g|7r1%OPNx14t".jv/bAŕܖg?Q18֛ƗY_k! I=M;)BH|L:֪[7C 'PJ4f`'ך^kDաi0Z0'sA?=l޴e%庆#H=F|=,;| T:6@L0*~_-m-ylYaHښGgambas-3.16.3/app/examples/Drawing/Painting/gambas.svg000066400000000000000000001124521411575327000225650ustar00rootroot00000000000000 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 gambas-3.16.3/app/examples/Drawing/Painting/icon.png000066400000000000000000000040361411575327000222460ustar00rootroot00000000000000PNG  IHDR00WIDATh՘TSǿ7 N$8V֝9+QĮ *LNWPi;wy?]N-uNRx̤QQQLw@fN)/ 6c_FʲwNٽ:& ]]]q+ӳ˲'g̘AkkkaX@ ta}؂quuuy&(q@NϏҁjc˫i@jڃ d2px)J}* Z^M+gssskjj[n3^ &3PV%,(Uti2NG FSO_!3 i̋˲'z=ESSwbxo%\^?~[\%Khnn.:t5006eHW ^HLL& v;L8lY$`Vk6nEg[ZZJgϞMe2 okO;z6n+t&%% _ceolݺUHOO#]> dҥKi^^WA_v1kwX4LHKKWy I:}^}DQrC_bovb0^xqXMM o2I'72 3_.W^(~1I6#Ξ@OCDisVekkGjf)^d<Bd@>|R9&=P__MmyT_;p`TᇒhBo\.* 2Av;6A-g '}NbP(!Hx:;iłJkw=yB)aaJeDX 0U4$B:;(R*Arl6Zbt:∄cIӊU98In7UݸX7},}Q!;vlfcZ"-Ze9q MAPv/yx1 x/Ĭ8iZ-7R1c3g`0`Mbgy'|Ұ%glS`0ď=;wVx`@G2lT“l9TBh42o͟ ԟ7NF*$T(dԏKiOL I*!+u8'NEf}hfu/)ZͤH.ʷ){>f@[Wểyoۙ k?^a0nIENDB`gambas-3.16.3/app/examples/Drawing/Painting/image.jpg000066400000000000000000000460501411575327000223760ustar00rootroot00000000000000JFIFHHCreated with GIMPC  !"$"$C"B!1A"Qaq#2BRb3$%r&C'!1A"Qa2Bq ?鋹0c[ma1Ͱ1 8 <0= ఝ`7s!ʣÌ 8B0J9'Q}C+_|{/`?m,(,*yA !bzme@zc'`ǀzap DžŽv[cl(`b7"l,aA |(ߌ'  'npCHt-@X`w-G`al$6`}yñB`qq`azzG"/bXLB0[pV-9l \aG‹w8\z ( _п<[6#C pcc퀐xl7` 7`X!8s|;mb0kb `@ `^޸%|l }olA.q qbo8;c|{/v: !G) C -(!)0  n8jG$pY8%C{`/  pK`^a= {4`A_a`78VU)aw\=>L/{7PwaC ǁT87Ǯ Haؓ7RA` _ r_*ObD^#9%kY:ktlGӶ |EK\ Bĕ[(Gemb$e#~ b~= 0&ŖWRsolDK. (GLIca~LR;ypzui-)akbI  DgaosH*E%TF%F`/_&EI ŸK a$΢  9%*eeԭюn1a͛f^ɣRïo/}k `X dQ_!Ywj\R2άa P}"GP#$.U)3:FG;b6q-u"5mfߣeԚu^6_~.vi82I/eCJ8%FhQa~n1*}"P Hav{<]ҠI*|E/p_Ay&n5z~;х #;z=;eRb~GՆ]^䚭zDp52)^"/3Rz16f 0ߏLL$_lu?AhZ =%3cozu4򫾆"U $ߝ}pP}H|Wgk _N3(jhCߕ[e}SYQ$/>< oseveUQ*YUC,O]4߃G )OoW zi tfG^ϧB߾ğ.aS (nW7ƲX/i۔?++)TCRA)!ߋxԕK =)I`ٯs,MtwH'VK+"h!CS һ)ZSPhЋm?~Be u $tYQyCH|)~.s}<oRf̯N}ؒr WKX:E֛;%Jq#.F-EB1k8 ?`>'N{K.|0ۜ8>fj:GfMV1l-545*wq%:!NCZ$Rxf/HUfR#Λ[UR^]x&y,eo>(hU*R7>?q{;")挄u(??7x(eVLE;8Ut-kjFیWUGRiceH2ma(68`n?e,*䆱­l?Z*ꗀQ2*]O'va}#4]r:5.6B6_̷ca `F1s,u"C23  sm$u1x,UI P~90! 8#jj\^ֿ´5Y@j4{2# r6;[~d{.o +?-}qХK̻ƙ('ql1_-7QHc4*Pb>zqAdWUJC 'F^tj*4 ,pF^kX -kmŚf%=3 (VeF7!E|QeWZ2ڀcZ9]YLl/<)TgT,X!X^hRuK6nw!VRדI,K~tm1j^bu-;opy' F lR3,9ʚ̰'MZ6'o[[NvPT?̤1zpRF6NonnǎпUXhXH{4yM,5]) dtzq9G1(k-ftꓯ4v%߷oDN'X/7?d7Q&ʦNn0.GiX-_킪']#(P#m'*D,g[}=f.S/.U -IE]PB5m z( 6,&B؀I8TkX6#kgR8mr|,PH'`y^ѸY޺BoٴLA7ϥ{.d7 c bghGZ}a|BHjNn0 &4[3S^2 fsJ4v?@-c*/PoG^k2vmoٲUF5%Hm|C%y edl}i{Hݎ3¡TܕY!,~0D󼌺33+޴h2X$5 Kp-QO'N[J*Sp}9r*: dB ToŴ*{XS%S,uL@v6~yDR .T^@kbw{4Յr ̴>'t$y#ג}@[-|A%HC2lPd$}V#0S!.!ȷ5+3ܨ_j)tҡ,A6tajE4qtd a{B񱷮Zii"/,%j묣H-,K%Tzo"-! *\i\Qc+ҲݜFpcKC+"gBP90˥J!b {QFkPK'J[srG-UlNc[]@IH;s|XV(QwI6eB6=lVet#*ѿMXqZ 4Sqsbo{ ,1*v,p8ō4-9mufvm?,PfUQH)RX$ad})&X.@]8,Oa|6UI<Ț 6y Jl1%Щ(b\RfyP[$хfوĺhZ%0s4R`7+ak5Gv cpȜ8^Tr> 4 La)Wer؛ǥ96Oe&^|ecxB2*7q1J䉛A4 IB5?k.Om5$TS'zhr:֪^ǀ|,Y#5e!ue??oLkfV-%I'P-mnfKyluKT?7nTtTЙbB:Q/㏶+ sghꨢxJS-ǖʆ9HYH+ Qu> [%:TJA#[?åKx'tNX척 [r@> Ux ;Yir21Y]i#k9L֟+Kn m%QP=iRS)`;w`Y΢1IzQA!tH#K)*" g3lP_nG;1iu jo^qYUӼ@Ϧ28TȺOrzbK"Ā쑳bG {+$z?O;ۜ V_veP(cBE"2{-0_3CSѣm ]VHmf PV!k_ZIj:@L%b ,yH7ki鲊&TyR `@dW_s& :Tz5CD~b0hَIٗMZRpMYrfǓRU DdI EH;ce$XYSHl,m N:$I~}JbM?-}7<%gx$32n8:6v&ZiIDhM_6ʱ ťs꤂7Loz!82w:"#n*IacǾI.!-v" *ʓ5bXre>gz N@nCRkzs/jES=Qr ѠRUqd:Y!G'G 'IYc&hzC?)nn5|FͤlXZy25jRA G|#t~GICWTa0eb6ŢD)`w-~F%S" nJy7vzb% Q F[hg~STbYQ=zؘ*z::T۶z1dGE`J~Z4ht1u*[q|O^lreu:˚KP^Mr75P:ie4܆QƯ5U4@_L|o7~(?$ԬI;;^a)QPΔK[[ociC.f GKi,q o *Z*N9#PkH,߶;GnOU%S(I'.+tH|r)mdT\ \ȧRkFֽ̩i2V4 h-܏n$J-9YV%Q n袯Hޞ]`ƆPۛ> 2z:V^ݯ 瓬"K6f;p-Ǿ,(klF;/͈߾yƢ2i7`\?Mv17fUzd&Hn YX\sN+suNUQbuըHP6ô4kK<ҬrIkSci :&wpV3V8*4jBĺ)#֚I;9m +Te!T1_ŧ/f@pt 5ŹĩtM"2n b#QFch姒i&:-فbƬbuCBh-ﱸnYW#6 vlo3Ng$Z"m{oq{**2̽:\qCsD 'VWCݑH٦g%"TmyHGvrn9 etԘɪj L؃mQL1(I@/ {6)#49juD5INH _f [++K"5aAuQ%Vs8e1TPk.t۵o鋬,(|B(V+RK҉KNI}b7&˨+7@"h+^˰|ĥ-VfU5tHeX0] {b9:"5 k$6\Z µ^!cJ+aYu2"%xӌu55MW#Vf0,Q|O7a"郈V=RP@z ;N6z&JGplI6\zLHV5So`FGa]ni(>|AJ<2hhު*AԊ*MM8^COG=޻Y<2Um qbl~~`oUW5DYR^XO=sK-<,0'ev;\m1g?^o%jĆ 5PZĒF$vZޒ5ɡgrd5Cu {\Yӽѧɥ*)ij#rlqaSAZ8CsG$)סhA M~2L޺Xiҡ  Ibjm7 Fna%tMi"#J=ʐ-oQp1hM ,!\xXG爊eE7M3,@#l-[n/Ϯ'ѦlPA ,{kJ>1-e.WGBENf;#Ym7$qYBn2;Nÿ5Fc5-v]GLO`5js'Ji+==bo$T}5K7ea$YwFJv~ 7I*fͮZF6vK^WY.AlL_-.:zJmqHd&\U1 `v%{zjO$[Zr ~I=ĊǕER51'}pZ5;Sp~Г 0I~ 5uMM@g;{AئL34u ,i2Ԃ2'nw8V#4ߨcm duU=_,ڶR }78++203[߰;LR6AT G8dQ9`K m,)ҙj(%( ݬwUhCI2FOJEe8$ʋ|/RsմuFRu I߾MeJd>F* /r}Hr洰DnYw]@ſ;Y~&yjeYzq.Ŷ;NB˔/ m}4 rv+qk_m=LԵr[CeskQADja72W+%>` 9=%@j>uXo7C[_[P$z:G댽st𚪙 Jߗ}_UJG="Nl-.e>6ꕽ;8j5RWȄcÏg5Uӥ< :1iz²h]mbvIO5DK^3..- } 4D(:`t\{ZeY&镥vձabϠ8(ZtOH';_߶=- R<L:b#؂aܛ|bF<1[Qn]G[T3*B<4=7Ŀ^pY Q$rӵaQUD1dۏl1=)4e- j<~N&Ppqq w/kzx24nC\nApyc %2IZfزݴI͇d|9]URL%X֜I\ןk#,:]lRj&mZsEJm*.KkKD>γƜVf<"9Cw!٬E/fFϔ7•a`ֱZ%-))f]V"p~i@i^0.GL/R s@ܿ(|9rʑS} ݎ[˽l`O?2U)/<,PK[Qqqh<96Y(i %;k̮Ίx6ߓ`7o/o QQI(Qn nw _9 |ADZ(XÞ{ngfY7r)A&]K8\a5UgW584]SU ^"*PNdM:H6Qm"E~ObggHXuXY|Ërl%x̄1*&5Pd66nb4Е.R^mGZ*Nm(&dV!Qn ܋m߿cy))i5G+;c}ߏ|@,}nOi(:0Epqrv{`at?GL*R`ɹZ ߌLgX%iEuY^YSW:wFi&HRZCXyNg1O$eM-k8IZQ-SMQ6[QmL jZgu W ̪$ t/@p.m8&gJ+ڢ9f`V>nOY`InOL'z*XJ)jSԏE&yP~ze,uWЎ`<2w4IdtaVK4c(Иi $ jvjQR$%TJj2]SŮnoRE` î@ !26{.M*+jifj- J!ņvjy]"DUH*%=A(Z#{op14GB$jXepJ_n1[Q._Ugg-$۶9Oh-ZSu<`-,Lj)nH eo:mRF02RBLElZreek5"FpNܒ~8brhQ˫&Ʀ'U`1Q^6_@ 7vʤ ,SԳ*aYIb5ZcTdP,HInƐ=寕Ol44mn]4f4z%D{-X3Hy& N"]Qߣ {c/e*BjjFOY;{`r *aja cVfR캎 =L7cK&PΥװ7N$m~`F#~ma5j[4g,*(>\CWJSob$~Xj4`Sp n7C'RK¾'7bm{{zls/ow)h!f1#F67xĚJ]TF+SR1Uqseoo[E[LNaQ 2Kk6حNj;x'Y$>/IHs9uҊ aWK 4R$9Rҫ$rX[|fYiEGNYhe ڬ@lcWASW]C CR-}%R%?2rLNVi۷Fz^*aeR򶺀6?60|7j ;< Dߜnf2zMY 4,lE[07a,,|4Iqr,m6lI8DžγWXi# GpGo@΢!Z:途7SSƀMZ~dQDˣi3Hd[eeKo򁤚iX"8ư<%AⱰoycImɰZZ4mKK!d]k큮Ϙ4Ώ9KA.,BÎqWBaA,t+Oe|`THpIw w v//e/I"G#O5 {T5SQYL*DK-څ?`UC[4adC }o&PՔ+_XSf $M]m]12lcu}ETVB]$[Q}"lA˒ٍm9I5i7dz_fUBii҆Yp;l[JHɹ"zii ńN`>|T3 uOWec"ư ď-\ Bf3i i`P,F\zIR  pvP&q 'Tz*%2u 1YBU̠I6 `_c_Z YSjMΈ*,HcpGƫ*U :r8a`-`4;CQO;ZHH߱&᦮-5?">2HĹLu}`x@X-Z(2<ʯ )  n,misLv.(k }.yb+>Xj՝XPO:jwp1 `Q6>69_ Ҷ 6y][m oQlXQ-CV], ^k.MݏجRf,h&QoN&WUȲSxo{a.[K_)?9\“}~DgtAP,H^ؗҴ9e56QL$QXڶ۝+擈#+l/뉁C91鞙m/I}E&۽Î~2Ȓ~1eT5*HiAUfr(k[NMTTj3$_m'Q þ6͎mUhʟBrةEZ<1G|<'hIC Eэ0[wcrOE5Ѽ)!ͩcD6#3kk)U:EDƥtU˱_ nAu"j #cAچʬ/Ĥ4ct߷5_#B%>eFLRDXoX Ypxꨒ4 N+] %-mMGڊi#$KL̆kki2aoLI̙'QקbQIJFǍlL K]M63s Mؓ "ᦛt}NFϧ[C\>-陣ùٍIPð5>b+f"QK)uk~-da5ZtR5L"{`x-j*Lq_?/`)ڪY RX Aaʽr CA]$1);v'6<]l:hʪѨ1ޟl;G2U$jU3B4[#[bF\80jroM6qFgZ'jU5 \l)I42AQd,xe+ WU̲eY(nsلDiWNkErqJ{$Ƥ(逈P_@ߓLTLCOU3D܎7;mE%T٬RVJfZj[3*!\(;v^i+J$ c .l-{np9KAH,<zbIXl 6. ҦN\idsOOC{<=F9KOsjTEtu:Ďȓ"Y$$j_78՗ I$dSibye1EF,,Oߟ\P9_ ҳ3hҒƣrlZq`7^{Z9 D*E-"`+3\nC.W73(yzEP#{w,72cH#,6W걀LbB0_R0uȔ!/{4^ṲY2W,ŭ]jzxBFQq}<-I3Df4rGϥm=ߓOe$-|Oʜ+(7t7ѹ ]_#mq%LIHlGǏzGT,:1~ +/02 e&Tu/9'|1MS5]<$W.T6mq}tF*iX{oô䢲LbZ&ӱ O5sx )(,LHF;n6ۋ=\LaEIY44Iym^~دWguQIY5C =~|wA))*!TB&w^YB\$F]xZ5;)kn㨕2l.qm-ޮ|4sUI^##Q> 5iieJ~KSntvvƋ s(UEERFu wǢ ,򒺢L$* J2b੸7Ml7USA XbFvw+鳙st$9e*RvU$io̒LJڝM`7X^|\<'B;+i:Xccg% Bo&^IJ>,(0)j@%6A`.~v❗U RX,%;rq&0̥E(dxwslH"!MVS~bIu+|JX4O*T XZ@4)r+\f42(/8L; YZX4>pbe"pe"@{e$KMS+OΖu>}ݰQNOJJpY$AcuT TUS$vmr?lCNcK*s5` y;ܛrjDwf),EU֨I!vન)2ƉDy㕤kicjmV8e8pdK<&~v9f"s*kdF! Y0[7|WK2(& b/&\lP7}/!reaeepu m~}m^SY[ѢDSM fo!6=9-鳨33Y9w!67 I?w],1W e=47kڠ+ ~mlgtgi&զa7߽-뢯x?1qذcd착Pd,鷹'qRO"h*:Ot -8UE,Y bc[bF+.-LHvZױ:,(zQQH/q9Դf2Tf=l{_jf y}?4wH"FEsbom˪:i&2IxZ,t-YwņGfYbBojeQmE+23 9E,P$R:9mLeezV)9B$ [|WSzT%Du^CI*,rt(R;-[7,$̲Zq㊘ u_߿|m':7նCs*Uӛ.nno|icͲ7U˳:I|h[;ej|TPnLn6,?|B/z3rZ`#I"ǂK 3OCtPRW%F&vffﵰ4 *)XH#pBm۵".+9QaGQ@}Olhjz[=- n~N)i7.qC,j% m ņz:mEI>6iCY! HzbmǚXTgSP ^fhcc"?2k{eGXk#Ob?2 ,UO搩 ; YO2U|a%6O*KKM GPy]B7;F JIe,Uq:v$ [|ed r8w-CN_BH*U#I罱'²@iz~1roJJӻ 206s(s0RH d1v\1Ji(SuWc:9֓6Y}v2|gambas-3.16.3/app/examples/Drawing/QuasiRegular/000077500000000000000000000000001411575327000214405ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/QuasiRegular/.directory000066400000000000000000000000411411575327000234400ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/QuasiRegular/.hidden/000077500000000000000000000000001411575327000227515ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/QuasiRegular/.hidden/screenshots/000077500000000000000000000000001411575327000253115ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/QuasiRegular/.hidden/screenshots/2014-12-14.png000066400000000000000000001271731411575327000270620ustar00rootroot00000000000000PNG  IHDR'IDATx{^Uu7f2ȀMQ Gb03V&֊ֻoT%*Z`ֶ&y(Up!" bIee>7|2e=yfj6h:paQOO=62eܹ^WM}Fm[M6є)Ө'މ6h6'x:۟h6؟ؼy3uNMFmC;FmN>mFmwOmFFm~G_T6hD9V' Tu5Z]ʹK/;mONmݏ?P tn>xULlzCo{w+Fn/?Y?w7:ko;&]?NvҴWMgAw/"̃D>1N[n{]OzgԷnmÏ:+!,L@m"[;w4mO|Fƪg?')>?O}i5v>k:ҷ?c)?x*<ϥ/,}^MO6x}aP;ܖ+_ק n:hzsM_ASpw?A_T"W>D{F讫H_ӓDni[ Cvu_j=8͠O}@e{*]}4ׁ9-k?F?z 미hGW'M>~iԱtӊ_8fhWѶsL}eӉh7=z_Ғ_K^yA|^y]/j,z;S4eT,:YSJݼk.}Ciz[~tnGfuC&Ӵ&}~=h}Kߢ:1Bmt7Ϲ -v|xZ{iϢOIOG1Y=9W#;a7mylF]r h^7_~9loG/=4K{y4Q'"q} >#~0<}ڹ)z럢p4Ks!ҕt8=qt͇?;@[z:ݴ{fzrCzWSyoЯ#~~E>y'uox-kz4cz'mr7x{8-my>FML44!eQ'չvwҔo~uU\I|>tcY'k_v5RcO8bw0.:94s|:>IOMꦞô;7S~Qwc亮׿^Ӆׇ1_ ?F/SPϣ3N@ zPK O#~t$GX>8M:f4@:è{.k3m)SӔN>a=x/| vҎD]Sk2M0NΝig41ϷюGg7u$mxw&ڼuHǼ.jր Ѿ!L3)ۇidW'uSE#S׌4ٍg{nk~EOQ'uB?y.?O~:? }Gsmp2=ԯz{ɧB{AGinz૟:;:h9^6:J[줩ϛL]SIDçO 3=ND!ӦiݩJB̘L]S:~w鶡OuwlӧN;]ǯ?9ڵm;OyM:N+GЩ}WБQ:z˿!/#?$:COzJ3즎ajlI4ڥF;~i Cm4}*͜Enf;<::h|7wnDD;45tgӳ'_}zvBz^A<:Bt-#H8vWU'gI7ΙD :t}_~7"Gn).ڱu_ԓ4<6N:v߼m7t_y&uO%8A&um}gϤvO#I4k7M~ 'Jw_NzǨߥC:iDyAG&\#9&u9GnSnwF!lGyOgX'Ujq\z۟M?kBOtDF,;'LSMgH~KGD#ǷQ׳iRwo~kmhǃWG趑tG1/9^p`>B#;vV\E:GѩJ]{=|t'nM8?MtOz ݷȍ;tAW?{v{ڷ,+~KgA=m?S?G#ztT׽k|H3?>᫨chAo2=?V.uDCxAD; 1^wܳ/X>s֋o=r)}i'_H N:xv{uV12z?NS:{5q"5&(E/:ftM[O!<5,u@ǕW^-ZzoJ[}cߠ|"c𛞗h[)D:;i.z:'lI&uѴ'h)t96B#v8uQM61&i`>$>09:.ڶu]Pi3&櫓-xj:vM_> >9ϥCtS[-hsuNL&æSa)taѤ]yT]l.0_mv#A4ׇܮ1Ҡm;lj:hځNͱlFxvCO>NӎƓ4i݇t9W1}Gaݓji?k׮%6~ 18}z^|`kulO?|~'=y+v.z=OՉݛ;0>4cIˆϢhz6Pbڵg,:sO[hW~BOM=?v2]o7A7KBSg}a^p?6nq Ӗ WewL:` :xh1|p[h.{fv4Ж4NDCh So-71e?A3zi"6Xv-o:&MFOISz~DuNrtT8m1hh6h'6h6;ɧ6hvi6hc#z`ڵ}_mFm z+t۷o+tCCCa_ 6lpCCCɜK,)υ?noo3y~.L?!Euϟ[>ٴP}oo/%s@ai?<{G6mnn:wUW>ڍFFR9&|sZ꿗o{ݳ#U@9>ƿh"GDOChc|hiCM⩮$ [%V'CI̳J>˖-sW\q^IM8#5 I@߳a` ի% hK|*cs@Oȇ1H>\?$z/r|"H>_⃃X|4#1c l t_!X5ɇÇ&ĮP>NZ]oÇ$|hhѢ⇚^/I@A۷8s L>+WsW\ax5|s y^6lP7ҚMI'ym.RNZAÇ4-AuϹq%CM]%pJsO>W^y^4UA zxSxT3h5smr$OM⩮G95jOzȁGJ.U|{YLOjcnjSx׿g.5c|X켐QB)9@PiCx빁 nCꇚēhS|Ç5(o4k[)x_k_-t(Q(х$yI9pJbEγć&חnUB!;i)CR#ꇚOx=xK~x7&+|~~{~.t(Fy!,t(QjÇ95/}7v$sn9v&Ts|HyH<@P$z$qϽկo|nddW~/t(5y]"H<4 76#5a&+y$b~ !5/4qk^>|h?VZ֮]FFFؘ۲e[f[j{衇_:f_-йEggjl5|Iͫ4ÙڝgjX h͋ˇŗp~ yR|hq)?l|k^Q>b7o޼}_wַoq..aeK,1!?+th D/g-LА3H!!ʵUkU#|q7<<M0?>ISeRVnHۤU;8mZCj*9ԡh"4MK?"CSЂR9~(}f -h+% ¥ ܊p*HJ|8'oR͏&-RR{T#76SZ%pl"'ƇKm<Jυ2'bR߬|9>|#&T}@ENH|b|XyXh|pC m|H:0c&T[y#1%Ohy4;RT"̗Çkw^%>4_fy.h㕊RmҁM*͛Ç3m<5ǿ^]uֱOp[nu###ٿ[z'i%'<$+/"l=/$xq<%Ç!Km!K=<|vKܘ7o޼ў122wu׹|;^_֭[mz1|%`D>"HipCEPY#|H\}^'z+/6y"~y! >/n|Hοg>/>s&Op?O=744֯_﮿u]=o@#,T^T^G-K;/"kSz~.sQϋxB>4'v=u?iT%6ҘW?I̙M>###nr7|뮻Ν;ϴcww[or-nddD|"ʋS[hH.iER;/Wֆ>4>gwIJ|a{&O7oI"΍3Gm'%ǍK'lٲxnr;v(>;}w--[蒏HlEb -H8E$rҝUga!/;DR?Zڔ!A[s&ϒKv7{d$Xˋ m-/JX$pE|㴖ƶ) ϟR^ķ;~\KmC'hΟqf͚5Gxr_GX9_*T m\iͫ4Dֆ6Mai$Q>.yp}\]R=kq?ړO'%Muݸq#]ztuי]4<noo/S__؃488R|H-\ut|ԲuQW\"ϦKkw/>Yk[C/1r!e揍#Ӑ>&%YK?;DJsCkRY>?[YK|hN9_).ilsD\$ 1̏6Ɩ4 >fR4,=96/! c%8 K!A쳕DGjwZp|\j$ /9hPi:雵&FԸ> ΋+ky~^i߼K|hO?'܁͛TGjw=kqq.Qk.L$qdӐ>6I 5xQp4$;/NTՖ$ 7ɧ_nD͛{@D"90#M@3!}Ki2s###SکZ@%QΏi FkS"&d煜Aw^Qmg$ }$JQ>$!"h!& 6&/<*TY Ig%@%s$ׇ&TsO$G>p߼%}$J>$ǿg$M\?D.Cx1OrT'n|V\mY MFnCT$bNii DT̹򛷦OC"$ ^=]Cj{9m<%14Mj*裏V-Ep̡dN<4d&&$;ONj9~jcO9|X4|\c%?=ɗ4i/jѧFќɇ,E6}g o"1 -bj)/RC{b ^VZq?B*kSˇ4UTW\_:E$6jC^L4G"!/C}-Mcc[ J>Υ}\\?"fVC{Ň|H -^X;>S>+>=\kDKdOk׮m>֯__M-Sux]~HTM>%C1o>U&갭62KZ>>_LDplJ|hj^RH8j!Cyh|kM-|Ҷ}6Q>.쳄UJD9p$z+y)TAJn"|y~5B$z y)6uI};j[Ykw^zv:j)M@rUIHZaO.^}p;0,8%~(EVCx5R9/a&RJjҝP/yZJsRm+NK}^RaOM]/}p90#Es_pH=Q>4'^_n]k%i 4"M 91"(4y=

4'-&6}^h {rcZv@P>8>h4ܚ5kZ#} $G%rqjOxDnnCl h66$GQ>9I~ X#SW=-;x&UV5wiO4jZ*/ qjOzy̏f( {J Q>$7şI\==B%5M\>8VXќG! 0"@`!ZhI<>j"@ 6؝D4GnliAM?"ŇI\s Y|ys%p1$\÷ϡćkMKy$p0hMKv'}CyXlv'?Ƈј_⃃۲e˚#XjaM3ZhKmZJp b}|H*ƶsVL(B>y(9>8H .]tbW0#?[d(\0%K=?ʇCjwr|h]i~J߷qcT8㌉}6vp&_@36!|hߗ>C!;J|HyY!;)!V<ϲe&w9~:6 ;ߟ?,!mRC~Zڤ3(B>,Vx1J>Cx-P?D"1se9 XN mp ^>HжBl-W ^)KU|FR|HռR;ON~FI̓nb|H8?$7BF۪$/I@Tؓˇφ(_,.~6,|6,yi=>~GPꇚS]/M@ӶRy)3g6/Jnxm+G-ѝ QKgCDR){ l=y&;nf% %vÇ$| IN8mI-D QK  QK`>/kh'bwhR3EsF Cjw>/nCDNŐ6yrjRyKEJ;/'H<95iTR)y!Myq=}^GCyy| <*̔|NJn[ mg桕V^$ʋ3gZyZy.j&Ϝi s|hOuF'J.6D@+;hfr~i[ +y"[ɋJ^$yYɋH8E±E8|H<4¦>bvgmCxs>jlGbbe+tZ^w(kyE*>E|>E|㴖ƶ)F&7owچ1>r~MK"-|ZTd-TRÇJ4D__3_" 0V¦!꒗E0C [_-/i|HQaB?IJR?i###422b>. [quיOC===nܸ.Җcƍtww7uww['ux]~HTM"u7p'mRZ-sHޤiJ|Xj[$sϏ!Ex`J^*R^*Ƈ_i#1Ok=kB'G|R&bGbi,=S}žO&5.V9#s6Ň3ǿg 8>jl/JЂ<hB[2Yk ?wTY &kv^oZmR/Fҁ6^n}!ǥɇ㇚ē^ w`FW[O1Ra>N^iHv^bTsT[Jd\>ۧ!ysHI\CM'y 7MM@&qNCWrT-bGP[bE$&ϜjEJ[MwnlHMg)xiErΪ/D&‡φ>/ɳ5}^9?4WmynSSUgl1,ERa!/J^$%k>MI͏l-EPYGnlcžM)j:KS_qsbDa&vm͑|EŰ R^D*ANre)/ky-EYZlZR>1iǵsa|±¦)>_RGg͚5Gڙ[:EŨC^D"EJDkUC^dhhH,+pem$"fӖWCk{V¦90.YڟD4_r}>~ɧS֦ׯ_OvZKd…400@/66[֦:e 䣮DTMVZE^xa-cAE?KK܅,~Z QBJF1>[J_J*&/I@PYZl"p$z y[$T\H>%GdwyXQ8.tisNx*hrõ;7k+uTc>ך䓓{JdmRϏACxž)K$skwT|V\I>->P[ M⩮Nt)Jw^\ նiHT&‡t_:0#}F$RaR^*/90ļIO(,T'ЩCN5> th$ƮGN5OAx=$Tף#["I<њZ@ĥ~(y9?\%z.:'9ͭy܀+$}\GjskynCҧ \sk@y}hO.dnC$.CRIFᮽ}5e-tIQCxbחCӧQyi4J<>V=J5In?!'j^9޼5z%GM$m/<4MJb^zr|oLS&pcN*5k;S&QAMV!e'-19p$j mM?\)R5&q%1/^ļI>BǜTciē?\ +ml*|Hχ1&aMI<>P-8|hFC }kO8?7g۶mn֭uVm۶zO1'0j-Ű&&! dCYj|Xkg*Xj9Z%lKmZp|\?WRMZHb^%0#?\%K-YC>,t-$|pauX/f珍m!{?kK/JUG䃐圬öD^ϡ>ܟƃ ƇUv>ݥРyZK!|HZZ^*LJ8>.G9aQ"j~@;ls_i,p85^rcs"ŇE ?Xi[qd~k^VR(߳)*񡱽e%/!i[ y-|R-v^bp8g_oIi?LJ6jZm+̏'ʇ4\h; a^+/!i[Tj슏L>BfU:j] Sx5;RW*Tj[!2?(J}^aTx4 H*kñ?ēO*/%C.8meϟ?G-њ=j)yqO;/$pEК*%ypO5/K'4rOJ~RC mQ>1o޼y|PyѣܚzyG->ܝ*/\T^[y}}^H=^έy,Cg.h7}^OjH/#| v7wN>RyBKEJ5"K<|HPyIE8W*/RyhZybhERm')R;/ʇ$[4ydQIM~"j6t.㥚&IG a>$v\J^$V"bXɋĂH $r>$ׇDnZٴ%~(AB9C q/!ٳg7GZ^$DH>P"9> Z^ˇdNȍm%>,O##;چ(hBjw9>47k֬M>;p59VǹJؔˇD2Y>Vl-O+K^ բmS|hϟS< ӻC&BۤѢE&MjZTmZ >$sEnlB4ȍmCk1>?[Yj|'C q/񡱽;5+agW]1ſYKJCX>4^rcs LJRf,~(A쳕6^-R|h!;>w6ǁM*-R/ihP5Ҥ5 Jǣy|h4QBMCEF#}~Wҁ͛7]|uZ8 \AiHOCZ򁢤MS<<}>(4p\n!΁690#I@_y#|w%4Oi r ^QK$x!G-φQK$x!6y" ^H.>$~HzDNJPjwQ>8>^Z~הd] QKNV*/Y QKgCk`+|66yrϋSyq.Wᣂ5'? 8ž\>|HP y|h׼5jY Hn祕-ɳP#/Z+/C#/W Zy\V )tM>?J|Ā @P*|3LS&bXȋJ^$MHk+yZ>4A7^9W*lâɳ|hJyqGP񩮷RƼI>ŰǶR^$yXʋ|H R^"~J*G@68Zp|\?5l 1uȋ y:E>$_H__i>g,0j>=Ƶ6a%l#ǥsPCc$.Rb…400@/|\"a6smAD###422R=6vOOus>^'ut~Otu׵ bh|LjmM៿ypֶB@ޟ%$}9|Xk[4M Gk)/m-/C K $1kn+UOJ3 b%=S|h,J*BAJ"|y~ bf,?$z y)$LI};j[4;&jkrΫ$"E5ةkV3a\}@+;0I@o>K~I<7ϟ?Oh%5zNt)rԸ|j[q ҝOC#'58|H8f$ž"RaO΁/r|Hs`F"/%CM y|hyNព@.ҧS:h̓{T9!> > r㣔8!'5њKhF߼>OH8")CM]& W:smvsO>zT Kҧ1|I!9)%$-ܚ䗀Q>4&qƓ?Qmn6Wwsi#.\MFiUD ܸ>P4}ds?I/6)J56Y'^$^J@&Rl|4Mܸā|6mڴצiC8`,:SƩI<4^M3|6Y؈FÇ+ChOExJIjwmHO}p&n͞=yUp¡qZhZD~Pd1>b|hO8$"fCl|뭴R>/hC/%bgݺun֬Y|A+G^e@uȋ H- ϟCZmJ|X/){,7KZ9s%%K-Y+ ;O-7l= _u :+mZ B؝χK9G4? 0⇟%,b V'| š5Gֆ%>?@m9>'C𳕕s̏*>yI޼'Qy)EnP 'QL>bg,zT[@@.*/yIrw^QmkKR@jsF?D[R&OnCj#e w'Ӵɇ> NCڧ1|H!iFMTR)yOC"# 륽zG+KiKIfJvwI'EL:C+/yhErI<"IHOi祕!A!IĹK'\>45v^"l, K>Zn|4¦H_ M<)>Z:!}Lw(in;AŇijeD@*™+$ >Zp|\k9?_̦ύyZ$1?lCТr:ɪyxXC̹}eKs4wZh%br!C [_-O㇒gaW!O>U&60-ZnRmRșߗ[>?‡ՁRF \&ɜ>Zp|R~MK,:OL*!+y'mR+! Q>?Xjc[j"<0# 1 RMǵCf,|HaÖM>o|oV|4;6^쳄6^꛵+56 Rf$|p.LJ45WCM]o"v`B/M|r(5Zjr5M*\GٰTR&xqi/d.O4Om9z*DpwMِ)1|nDCxRK>Je~8yIKِ(m%5Sn̓{rNJF͛75z QKT y@v^QKmD B (ēl(y! B>"|HR3E#ži[nsm#QKَ`"\>c|hOx=}^='pM% HɩJP>$7ʇǩJP)K0|̙ӜG+/ &RC[+/Cb:u+PaS$i$7uv_MquēskS$+ybX4yB^$6Hч[ɋ |<,EbF*lI@VMZܸ>$jR?j)>4y\9|p;6{H>"bXʋa)/m-/je-/C-E6\i8jlq<¦"8<ZϚ5kb3>kgi1SICkCCCf¦1v)>ʵi8ll +=+aS?nCAϯ=tR###Tzzz|S?]|쑑㣻k6{cxx[jc 봻:˦cttqBEP>Bjgam4Mj(Rޫ{V\>$V4w>9g+/>f,P?DCc{HC/ASNw9t`mZi[>KX {$z+m+Vžh{"7|hHa|Иsꩧ:&8p]YkRRVڝM]նB@=g>Cg rf4ž^/I@RC/LJVS8s L> ,s}$BS,4@p},AI<)xBT{<)LKꒈAI<%x4qHNkJ>b8EkܣhB:ѝ 1t&{~I⩮G.rTCNj5ICjwhBđU9RIh\C8GI'J45Qm &pͭyH4@rT'i&zI8W [rT$M✲9>h4k^}5e,OTvCMÇO#4}%>4=B#&C> \4z>?/!Joޚ&qI̋]i/g M>eY[b<Υ B^$,EbiCJB^ÇeJmC5Kal6D@Pa$Zʋe%/.HXIM>-EJ|H~6a-8> B >$Ra&hٶm[OyʡEŨC^yZEb|X$:Er|hU6-쯯L4BxJs*|馛77661ww[or-hԛ|-Y0u ba_ooK\KE̦c9}>mذAjQ_bwK|HQa|b|p註݆ -nfw-ѿ;pz76ɧ[QZ`#1FX` @2jwmrEРj򴖗 ЂZZ-奈R9|HX&rO;p6mr6mr?w뮻܏~#wmOL*c[i[i,£ ,\>Ha|&\M!Ex`J^*ƇTJnEk/B^Cjw|r.H;]wݵ'?vw}>sM>ož)yU>`m:jyYsZaO.h±9 Hxž%& )>vAF^9C$I{q{o{//Ֆ/'ҁTllN$z/r|\|8fW:0yFs`FZv([+pO-I.6Z<}()=- \yTOCRCk%>Jɭh&7onC/|pn޼y|> $G5 ̏T^p"> O>=BRr+Ta/J9o^Ϛ&7gΜL>E.C8\AM/6M!1(h])\)GQJn%>PjR?qmx..i9>.?TJ>dih?,b|Xh|Ɩ?:_xdkMVCkZRr+!AX&pk^5~XBIIٳ#XjyR̹RR̿! =k d9>,/i|HQaMVCFrRMg͚5G+[hgsO;TdDi-D9|HxA+!gh4?RC?o>&իMj1T; mZlEfmR[ۤɜ>ZA mZ(Rl|>¸ǵj',~SgUӒGGxbף|p >TBAA楕B$z aϔkR|XK!R^]sꩧ:"jSZj<aQKM44 2?ēk)>(ɋh=%69>(yi>"|hOxFسt@0LJfS:m+*ٝaY`y*:aOQKI h[!2?ēb1>8ʋHT֦IyI~RCxbKjS~`-m'N;m.:xH7R@Z" 9j<У"H9IE85g1$G-95i'"ϋSʋ 2?(ߜϋp}^TG*kCNC%CIK]/U)xpykմ'\蘓J _ MI][ HmV^$LJ87V^+#9GG{6LDRux&Ke~$B۰(1 ~(yV 3ܘRɧZ蘓j "LxJa)/߳ʇ$|h:HI Q>P~¦\>J8 Jb^%6:ETc%l꣺gKǶxZe%lJ4 >$P: 9>.6EcN>]dj/twwSwwDD4< UIIýJ0EZ=>?‡C$M- g!le%"iReuǿo)r}Zmh~I4^8}Rm!/gCI!yފ+UW]&g5'\| Щ5]޹i,EH`A&ך>"W䙫jJWC_Xsill[|^gll̍% y؂XȋB^D## "‡$[4y<>4Jl/R? V3j:qʇRCj{˖-kc)//H"CYʋi)/:Ia)/yr_̦/C)s:C q/񡱽KN|C^dhhyj136:E!ӿg-rc[8 mZj T*͏!IV¦R? LJfΜ9qr>|oo90#dž T}%K;5jls[ݳs|>?lذ5.|!ZH?Ň.袉}4KT; iGjP2G)>}9T!mk.9{"7Ц5Ϗg+MMXi[|Xj[M!>Ƿ rcK\>iKPg+/@$R;c4d\js߬V)>,R"ڝʇ&T[h[ZaKK!~"w`F+qTIGq!?ZKgsAOC8}ҚGUI^D5RF۪T {rV'ǟT^ C3RaR^*/90A3gd4] Cҧ<|H+/SKh̓ۧ!I@b'@k?9 {rO5IE/K޼>;ܦM; !> nipk(Hw%9.˭y}(>>u$bI]/C$G|G5I87桿y|pcމ'H>tv^>bh4J5I\6MT?ҁ6YRijuJh9|HT49%M%?<餓ܣ>Z'Zih$\h&'? R>4dP>$ׇ&T|\|8|h.vExCܛI<㕪u%bXvk%b mMCxcB,LJ68o&!ExB‡$ǵr#y/!bo}-|Ű&R_ Kmg*XjH>&Xjq eCp{ւCkωKIB96G&1)%)_@#khhHيˇXZ69|HPs\[_5]R>բmqW4vCuh[U_dm_QբE}(ZTTAC Uˢ5·;|\\>N\zZP>>VkgIFcaRR*Ň~`yPCx5M@AVRJ|hּ䥜s$M<>Hb^$_ mQK΋#k#5TB*B*LJa\>rI<ž(\P|J>nݺJ>/=jY4pE$5ΉI̓+/"1|nI<%ž"h̓)I@>/I=B=m+<8f$~F֬Y=j\%wDjry"Rʇ&C|˹5I@hR@ %`DS"kBU^jUs''HEJ;/KE| \njSx%2?\pjNyq}!mD>/O aOi kI>/gŊ͙|"H3Zy<"uzH.p$ Hۧ[! %aS.&OIύKM˗/oc%/[ +y)1z+yDEa!/ 0>¦!6%|H8v]"\ DR¦8|HykēχV4yAJ^gҥ|4'}}}ܟ/ӡEV;O.Z26i+節&{+ap~4gZ$\>PliܘKfΜY{FFFPOOO}}}c]=SӦcxx||ppk.3.qr4Mj1CMZؚ&5)=;<ଵB >ݡ6^-b6?)g+RǵW!&դ=~$!7SN9ek>30_]1%Mj1$z y0Ж@le,aCԁ m<._/C[h㥤,ssꩧ:&8pz0s0_雵&FbI<50@AF/Wjt`FI<Uz 4P|$1?7.q& ~BU$Vܣő/.(8G- %2?Ҡ^8 9|Hem8IN!DؓsVɚ%lCK.ipzR"'pgC̏&ĮG@xFXr)?!!z"my! >D7/JQKɓ ynVrR#׆y!| ~6D@6yrjD/!jw!^ύy>/gCI wrmIA3gyRV#/ yqj?vj&OZ*Ӵ'"YB^$U yqZ4yFp%"9>|H1k&ZmCkֶg"VvPaɴOl1,E|HB':tׯ~Zvv}_`-uHu… i``/^RcG]6]Ocu!Q}6Wզbh|L* Izurw˚&Zp\=*͙?6Q>4XK!2?|!Zp|\k9?ڟTֆ3? B 1?7U _ib߬bi$Mj%>$75쳄UR*56@C*#M<}kqPc{3(؁ y)~ز'-UmfնK;V3Wj[Y[h[Fhc|H:0hOuVسCMI]D@;0r.-|JE* (G\$jO?'3ҲCϟZɇ{z HZ@N̡;/6$!}h̓ۧ! ܣhOy(G\КG1/xܘ&qyFA4A@ҧy)Mh|<> $G5ɍy6q|Hj| >RijF-D$,A!\dCxKFڧQCӧQ:CpM⥚I\ꇜ9JxϚ&q.(siN6Yi1,:Sckɸ|Hyhɜ\γć&F,LJV,A@I_%iGnիW<|X'rc[_)j?fw'ッTYl+k4h4証 Զ _i-&W߬-|>,B>4M[;+y)\vlq$z+y)"a|И_⃃X5G,tiS߬-RR-Rõ;/B*ƇUB3y!;mII-~XѶ*ɋhP0-yq$mmRFؓ#!}~U,EFCxR%sN./U#76IKC9O^T] t$5QmI ʋ;/M'ypNIj>/ILDkSK=-D$"&}^Y|}j,z<yGʋpw^(RYH9*H{8>y~I~yyHQ>$1/uI7xc6C+/yh;sI"M>4"q"\>$jInhpN$\#~y[k>$|hMS>ÖH>e:,hhl[ km2K044dMC ߡ&+_+ 0I}.\/%_C{ŇDH>ƍK/뮻N;>nqixx|܊>ippZ.>z{{kVNZ[^%.yIh3班iReMZ؜Z/ƇD{!=<0c"Cr>>8>.ˇ5H u+&/bbVEBdmPMayl"NCTEB-5!Ƈb5/ y)TPV՚30ɋhr5VaOT1sKmES*/Ç&TkS;S|p|<I̓&\K#/U-[$rEV£!d%?G^D8}^φM.~6yIe~8{rPyI>"Jh᜶$ !5kִFAZ"A/zC*kAj[|p6y"?CRpLQ?&z); m>PUV5w6yrZ"/­yHZrZ*/•AyHE8WŭyHz6!9^έyHP>PKI<Wőyp%WKX9S"AGGRC#/! 5"Y]?M\CY >jN6 /_\Ǫ3"ŰH ߢ3UAz y9>4JlRa,6%-8>.V 3˖-kc-//H"CYˋ$@4R^ˇ$pCk1>ki¦>P>PC>Jc[t&kgny>3auȋTy9{"6) mZ($s!IҚWi~91͜9E %k_ .Zx؃I%~z淋k׶ usݲ6u]MGOOO-6]'u%|N:qBI"Қ&I- ib9 -5Mj1p߳)|X_hO,2W,.iq4w18&8p M@,J*YJ*%b|V‡4\h;O,Zٴ9~;0#>$ǿg-8>.?T=8pI@.-oZ}pIxB>Hj|hOu;gwZmKj!|j|\WCK+$?Zkw^BT!, > Nx|>$(Ֆjq RmR I9ēOs`FW*K8f s`FRv@P9sfs6Jw^ 1Fҧ<ꒈq~Zi @kQm4rɸ|' 䗀њZ@ĥ~Rv@;[^ ܚ! > nCҧ5|6!<> I45Qmn @8|H_M<$M>~w'xb QK*/RrVH鳡ɳRy>Ryq ^>Ry>J7xi<9|HPlBPbkfJ~x7&iBLY蘓J>gZybXȋ>Z4yJV$CTʋy9v&TkPp}>H}6DCI PAb^$cN14i.HR^Cp}>9HOI<>_jl)‡ḒD%m0Íy-|9W m-/R-F"=!/! uȋTe-/;6>چ(B>?)-8>.R+-$1咏s .%KL,Yb>Jck:_xZc :I?ˍÇ=[ʵUkJ5krEc^%*Zu_$K 으#_: |E5N;y;ȍ<EȇepIǥsPjwMR'|vk8-7kKm+|h VV9C?Gnl-1>TI<1>4?[YK-4 HZ&ZR"Za7| m7k mZkJv<I͏Eďs2Y.%>HKKH}QZ"VWI^D*Y*kJ}mRaZ*TӐj[q%>$7u}P/*$ H奜Pxe["h̓{jIRiHjb΋+/" > ;ɛ7=!<,Cǿo&qOjHPxbף|p|h5kִFA;G;5,R@4MPy$}ܚz\=<n%`"\sCjs.$5'u=F=nժU͝|œvj> "K48Dw^hij> !;OIoG d_O$^Ei8'5z T4Ww+Vh-C8\jc}n&+\6YtdND@*RC܁mxǵM9>M)rc$'M6˗7W-UpLNCTjUtYyYh|&s.nw'-1q9~( 7@kćC~y?JbEYn[t&glɪ?_CС|yKJsgvg,E̦-ڍ&"$~(yV窫r3gά=tQ42tttDիWSOOOW@޸q#|444D .,_?ŋixx'WAz_z/{hƍpBZ~Cpۻ瞵KBaaMk?D5/^aeM#~ș?LJN>d,~ZYpNpiχUX4 5#Zٴ%~(_adZlJ^Ç;?-RxR\>wNhKnjs5;QKM4V9>4Vʇ&kr5wM'BE,՞5ž%?tV*/!/xOͧi$q8g,$pZJ8|H {R{r<% s@Cp,I p$žWQ>$1Ͽ$?Q%\ׁJ>bp >e.h %BN!5I>H_Fj?B@O"5-&O'5ꔘ9tY QKK*/•/M⩮\g%/̏$Ʈ!>/.݅|hOx='I<ϋV\=jݔɇyK+/‘)/MHHn\m'7oMDGp56GCj{*lʍy&OZ/Z*Ӵ'"1)ڤCx%|pC=KO޼%876IaYq=i)I3ab!/RQАa|ems|hPrͧV¦1>M9>na)>,O#Sq/!̵ }>&:$uX~=ڵkC탑1zzzǭ4[.>.\XM0 [G]6]g\z_2|}2I-D;444q>?;J|hP}A]Ň_q|\?7.I?1>&G|WZiZlBHb}:4&5>KXiq"le!㜃ڝp|\c%>4;0cH5$ )oihw^oZaQm6^>4|h%br" 1>$HѾyZm܁6^ǥɇÇ&hRMrf~X!֭kS*Iӧ!yq%QRƇ! 4I-N9}Rm<37o69>.I>\>4'ǟDO"T֬Y|'YhBN+/C?""Rayl"A+G H'}^gCtÆEjݡ >/tܹsoFQKnVrԒk~6ȋHd~8l%چx9f*iD>/Jß =̙3yT^p5"צRy.чƩIRy""l#M'‡$yIe~8i,%iV^$`,ERiZh᧎J[ȋ 2?R[ yT HKN"l#&O.^x%2?\h<. vm͓|EŰIhZh+yo)/•A޳H`bwaRY>$5i͏r68_9T" |>,jw¦Y%>4v眬UE%k}p~$>?W0#?[d(\0%K=jrMa|P>vgm/LJ{ݕ y.6IDATbÆ Vܘ'?8%>zb|:lw0W>85j7$% &;OŇȚ-O)R(VKy)lkyR\ |-[6R&1𳄥ULD\>1OJ A~ VR9 g~S]o%/q|l!/J^8%.5Ɂ؃ƟXh[Y[rckÇ&Įj[2?RG-=Sh`:0c!CxR9? {d~4GsaYr&0Ѷ*ihP0-yp$Rm+aRa:LJ$,EFCxR%Q4hܸā|BIJ>bp8_/1|QmI<9К*$QmIBdrϏ& > ICxbKjܓ'K/rjK\>\WꫯgK>b}H@ =ͭy| <$e;/65?OCbw<УYh䗀1=$|h4ܵ^L>Őipj> 9>|H&+$ _Tiv!JH| ~CRKK>~7&iOn1¹Fd4dT4d}Ɩ8?ʇTCMjIƀ!yMR?l[ "[hZY`V,ed5ɇˇaM؝b|h?ǑG@cw|Hb^xFM|PgZ^wVkykykC,xYˋ %?IЂZ? g~|Xm*eFI^?CҢ}9!km+irA$U͏ELF%Ϗ!EX󲒗rgw/ǵCc{i[M+a)/É~'ԷT6!bi,=SG--=c%,R߬-rcϟ )>$HV^ ;s*J|hOz aOӶR9?lS*i ?Zmhv^a\}@mő{r@Q:0#B\>$ǥɇÇ&{| K||ݺu|G$sRm)Kv^ܣaONaZmm$ nDAJ4'5P=?‡$|p I .ēO"H*ɇs`F'׬YA.<s A@#5 QmD僋i!;.Qm$}^H h'"FHVZGڧ > nCrT`"\>Ppj> H)'iiqF@./J<9>=BRI!|bŊL>Zy\ijFZyjZy\ʋ=5" "|h4JoRmCI\hm<\>$|J>V±ŰI-Epll+yRjV"k%/)i5'7? b5&q>C ICj{˖-k#y.e?6ZBV4䣂V4`;iiȅ4!_ @M!ZHb-]tb6dbXdkӚG@#Ct-$1?LJfΜY{  .Zx-rσ݊|POOut|Աua|euq2^}v4Q$;8MZ BӤ iP>4YkRcW9*򡕈w>BI6-}ÇMrb|h!y%>4wy9&8p M@Y +c%$Mj@C7k+mh⩮Ƌ}Ƌ}JƋٴs6LJ3x?$-$1?]xdyն}[/Zm\Kr5 mayi>,6%/Cr|h %1?Bm 칾~T*)<@p},A*CxRI?rφ>/I. {re~$(yI?|hOz 9}^9m+BO>v^s5UA9\ND>$7JН*"M<9φ)?!{~I⩮G. }FN5S䗀>C?"}^hBN"5Ss3_%d1$G-[T^p%G-;/QK̏$Ks$}^܂ɓ>/=7K~ Çɓ>/n̓yqR?,h׼5jY Mg!)-F^ȋ6Gyyq&Ry޼5}^>?4M CbkfJ~xg&iOn1,^æN>Ű H"R^+kCCYʋ؝Fش`, QIR4jMC>|Xi"|H8Ra&q6}y*XˋTQHG"Y 1>y aT6t7v'/Aihkr^Eǹ~9ɒ%&K,1uK篰av/C , iƶx=[w^uXjk/!јr'%baؚ&;oRmR CjjwPC}u`Z^ EŇs2b|hq)>ow\>>$@-iR+-pn1$44 "kC +Xi[q$z+y)!VR9jw!>4B^*fw>:ZRG|j1P4;Zd4Cx-=Q>Ha]q9v!ET‡&K}dw%>6VW騶Q*sԸ| 2~NTZ(T=}ĀI<5xBQ:0I@>?bwhP>4'^Zv(ݺuZ+pOKH {TypOIj> ZՖ6YI<)$5 1&sNMhͣqÍyhiG]pk֬ii ЀjU(<4}$!*<$d~( )$~ &q6Wdw&qT+'pC^Y"ʋS+/‘""(Ҥ_o!/")G' 3nݺucr{bXɋa%/ V"% B#|HKy9>iKPf@@x5W>{H>"bXˋTa-/;HND*Zˋp߳-M9|X_hӚGP ahЂZ@i5k&Mv!{J>=PV¦_JB " g~y{xؖ'Ň%/UC ꒗B@ ЂC?o>Vի_bYHJc;Q8y>XRRVFhc|HD$z7o9>4:0BEgNB}~.Z R^>j奈]xqj畫hv^%yM}h[qe~$({|h["kõēO"({ [:0);嚲_\G;/N^ʋHOCR@d~PpjKj"OC‡Tֆc>$Cps~SR<8f$ KCf\r7;/BEi 5,bQmty#5OI@h"F@LR_SyF =<&q"\sp_6mɇ$=BC> NCڧ1|!<} 'm/$~(I<=jw!^/C?tV\I>%tv^bh4r5i>ѝ'‡TתBMQC?Gnlr#/CiHÇr5M8\A:ͪUhTIEpl\bXtjd)×<|H߷ i);Mȍ-?I&ֶg$"Vvl}|meVdŰ& R,[M>PVd%?D Cp{Bjw9>q \>$$1>Z>To\_ km2-?5H>=Pd9|HY ݡK!E%d>B>&:tixxb022B###POOOKs+Mݵs]vWحGvW'ッt]|vwha[; y~y߳2W-bm;ȍ}Eȇ*H3G-8>.ˇ{@%b%,=cG-=cH(뭴bVž)>}JҶ)>rcs >d~Gbw\K|hyYK!|hOu%1eO{&Zjw^%9 Zjrߖ;܊V۪dw(%J&I?)r5/ʇ&Kϟzɇ+"M<œ8\G Rm+NWȋhd~rj[qem8_⣔Jp~GR!紭D^J⇚^/-;|hyNAEGZ;/ R@Z 9]y$ "h9yry!R)?v i[D^Jꇚis6ȋpZrԒ䌟%"ܝD^D"!Rr+Ar[0ꇚOzI7J8R6OjH~ 9s7hE$r+;/Mw.hsiB& +7M|,Eb b!/Z yOk!/yYȋ | H<,85Ξ=yЖ"bXʋR^$4NKyС,E|ZlZ1>¦)?$((!ܾ6AJ`֬Y|E^Z:Ejyj:E8|H߳ΓÇ1j6>k|?JbUꪫ?qg``+lذAK%K:hRa``ScqgsK,1y~ZlJ~K$Y&>zb|4Mj;KjgmR wC&&_6- {N>QinE̦W|Xà| aeR?XWZMw?ӁId1~JER/6>ٴE&T[ä|"H>Yj |.2G$ ڝW[vf4ŐmRN B/Uоy u`F&[y|\W$Yhq L>+Ws}$|BtUӐ>OCZ(mR+1zNXZ(ihJiɍ+I>jOxͻTjqHPF~ í\}#}h̓ˇ9d*$n$qOo\>JɭGhC⇚^=!<&q,CJ>W_}>sMhA5%7xG-YkQKntysrmy/ ^R?B6rn<1mD>|p>[gK)l"\Yr$zNʋȋƖ6y"|(}6yIV$7^kqq9Xbw)$M9>rcsI'4?-J>Űihv^MφZy\ʋ&'? RoޒDÇ$h,$8V%>4'5?"{ P0\OS'bXʋc[ɋdmrƇI<c%/C|p!E-}̍Cp{ւҁG#lZyaQS>_:EEr6ZZ^0"1>,s wTck>=! =kqAyqPxJs>چ>-|(*ceRJSI#|X%0YdZ%/C2g]R?bhhH\*_)*>,BG'_N:TFmr _BlիW

AAZ^ Ccw'hѢZ8>.N>1>Z:VnJس$k1>R*ŇKdm"le%/!-8>?KyThw9>$Jx&ԷT mTvőꨶ4 9m#Cԁ7o5;u`B3'M>3R9oS*i ԧ!yqem$_:-I@%/g %>4_ft`F-$zr|\|r|h޼Kf4ž"CF^/&Qq7K>#@w^Mx>$7sBLRiH ۧ!y | [*I<=-ypir%žܓ1o޼y366&N>cccvF.ڧyezT9<> > E7o$ ?FjݡM∰'"(͝;C}O`;OIBbO+y~.F 6?v鹤}%m<67J95I8Mm?۸q뮻{qwy{GǪC8V19 v^ҝ'ʇ6Y6YM6YXj-M<|Hyhɜ!sɗhCjwg{ݏ~=ߪv/$q&+m [j y"|hkMaMCL+m ~&mZּ|8gMhy%>47k֬}϶m~%gqJ%K䅕TƩl ^CCCCȇʵ.yZ۳8̜9sKNJ`dd@OOKg>HMݵs?5ixx|:mn>X:pppk.38qBg-:l}_$@A)=;<Ǖ [pJRRY>5/Ky)d~4Ϗ<|N9=?s={'? M>܅,~3UӁgll+a^om}}@/g>@R<5ž^!%?$I僃0,X`smW3t?~͛7~ɧйh[qZJ #/"yq$Rm+>/I?S"I<%R"7o΁i>8i\3::oO>ٽ-oq<;묳ܜ9sܵ^)7.gsI<НphC*\4Tkd~J@=hB@N&oH'>/A|N?}K%1e/{ٞ}k#J>F#n:gy&cXnݞyR椓NJޛ;w79r|h]5gj*6!W#v uؿCb9>rcs!\?<IKǍym/KwgD_r2|3e/{[lY6OǕW^-ZD>֮]K~)o/^+Ww$5k蕯|%=翝x__qbWcpw駟~Gÿx}߄x_hr-#>͛Gk׮Mo|׾g\>Rs(=+WB|#vWz~.>hrl֬YS99| Wsbb1>둘^_o;߾/һwu%/쿻k(c/yv[o:}/8 :`*ZjO8kc_jr){o?u{^sGu>ka7~sΥG_җ{7)96>$__4p~qW_￿(_Q?͏_qǼ9}>'Ao%\BKDO7i0gۉh̙>7+hΜ9DDt=Пٟo6m߳ǦMsϥ}{׻Μ9bŊ=wuϒO-y%>WsuoK|{「8K]i~.xǼ?'?IЇ<6m>.:_Wnn>FGG+_ |}i˗ӓo}W|,Xz@@˗gƖ>?‡z{{iӦMشCyW!򡵿>[dw9|Hxы^zp~/G> ӕh>//Of_AѠ=466f:n>}zv~ *>/?D]|lڴ>eVsƖ>&*uQ#;e˖}vcP'}st뭷_OK.5;3;<""Zt)͚5lc9o.B,~K. /P|>`m|wyWN>=lT%n>-[fn>-ZgǭZSO͝BRXh.b[b\ipGq$ ncSi>>OwWE3g=>?|1?я`>8s%/y 5Y8|HQ3Ѿ6?I/Gnlkć.bݕ"CRKp$k>gyj`ܞg*:::Fm<|4ؽ{7=#l{N>mF uttɓ9yq٩F'=#_L2e uvvPmQ;vE?099yDN$͛7ӤICEU VScΝt}QѠSRWWW;Fb4i$zǛ>6oLׯѽ3i$:㟑ht3FmL4NO~Fg}6u]}{ ?0~ILɓ:t~i6FWWמ\aҤIӟ>?qZpD&|>;iƌ`6m>dvi67XsQG??ч>!G?Js#;8?!?C=^W]sLG;F:>EzGsΙSqY7oL?O]h6ژxb3 _;yvsODD_~_h6htћf={ җz{{ixxDRm#={w> mDfc=^WҶmhhhhFm1c?L}{~x /i9GGu-\gekfl۶mo6h:::h̙te'< |st!Ђ h|||ISN;v<@{l8o;mF<uvvi6ڨ9:u^s\K]%?& v=cm6;&' U"nv6h9ڵkvaT(Ԣ}CDOh,;Nr5·F}C=>এ zt衇E@aAmLr-[h6'k{k6himFmX} 6hvi6hc|h6""ZvDGmF 2-Z˂QIENDB`gambas-3.16.3/app/examples/Drawing/QuasiRegular/.icon.png000066400000000000000000000072221411575327000231570ustar00rootroot00000000000000PNG  IHDR@@iqYIDATx{pU~?kOB+< #bP…Ө6mʴt&SrGq0ћF?PTnm%*f% `@@^ȃ$'{$ëP)ߙ{'kw~[k/۸۸ qz2WrCiDCo3NnSwlR,9.|?\ _+t}OҶlb yJ鎫Z;^'-Ws]Wl& iwzU7j8&pܛM/Vݗgƥ 01:s|b..sB@ @$Jp.AB{N.]#|වdBBMMI]V $/y%!s@%Gn;F{vX^s׌qno@@oo)&cl?hCޒX=u]mخGB\Y?H9ߐB 9tĥv005)dPJ1 ([ %U`k\Oct e֣He\{W=*`RM9􅄼>S:|MidM] ݡʐ%Pĵ {z1m:#%PB]sW )|ͳgsgWB2kTfIvt(ZAp]PI&$"&6 0ۤiJR0ĥM;6gOr(G~JvI&=0@ܨQli_L8:|Vї+>q1)}]wӔ*`@hoKʩvm!n)iiye{O_cGdɺ "XgN0=c:3&߸Ay-mhR 9Hl۵̄n<#Ne̘e WհtB*`s Fl&%6CI1^X;k9* Rzi,my{ţR\\Lmm-͔PUUE0|iooTjjj!^]bq1-4E }qw|q$1h<ΝMb<&^:NjD5jMӥW> %%%Y,VZEEE? *++5k/"mSRRa9HΗ-q1-"R]WZ( "!^3e|d+VW+Rb:wn!){._qf80ѧy VHљӮ$>,˩tH5t  Wu(C¨tD| Y~D7Ё4 Z.ݸYI?Ecٿw+gKl2!o)!H dL&ScMBHp)N Ndc4ٍA) 2ϗqF,X@QQ-"::Fϟς zlڴ"6`@ T %%b挹cw [19V::[9v8qE&{IJ v53klޭ}{4j$sţa.]Jee%lٲ۶Yd >gyJrss)--||_y!`@`qSGBR29c&͍NgDx{WW?CNSZu:z":x vߗĬW$a$''C~~>999Ց%++ RQQ?Oyy9eee}qFndW2 bilc#& ?u/rH{}]{xO_!}[jDX +/߶.e .m۶f Ƞkz)**{RXXҥKC 0`HRDVKRfwLƢ9x1'%#cpIMQbɂ1'1/Ѯj1@ԙSb SUUŲe|Q^^NCC6lXbV=2pP?/~a3hD IlIVo;;xL_'GLE}ttc&$2a)̝(S0=Q guo֭[̙3Yd ٴ|r;v,ׯ';;\/_֭[Yz5F"e꼁< %R_XnS vp⵷h%$9:vOv}EFzSn/z?p\E{TҼlUnH%G4ҋu''yy3^sy-$&$~#Gemokr]ƎL#s"_o*X1RKg{”CQW( r4Z"r5 RJ):ޣ{:{IC B}-(bup]2Ҽ@ 78g2SXCy DJ6 cd` 0p @_AdcU>> 6U_ qq?߷zfxIENDB`gambas-3.16.3/app/examples/Drawing/QuasiRegular/.project000066400000000000000000000006561411575327000231160ustar00rootroot00000000000000# Gambas Project File 3.0 # Compiled with Gambas 3.6.90 Title=QuasiRegular Startup=FMain Icon=icon.png Version=1.0.0 Component=gb.image Component=gb.gui Component=gb.form Description="An example of a quasi-regular pattern.\n\nThe drawing is the result of an exclusive-or between a black & white chess pattern and the same pattern rotated by 90°." TabSize=2 Vendor=Example Packager=1 Screenshot=.hidden/screenshots/2014-12-14.png gambas-3.16.3/app/examples/Drawing/QuasiRegular/.src/000077500000000000000000000000001411575327000223055ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/QuasiRegular/.src/FMain.class000066400000000000000000000027261411575327000243350ustar00rootroot00000000000000' Gambas class file Private $hImage As Image Private Const GRID_SIZE As Integer = 64 Fast Private Sub Compute() Dim hImage As New Image(3840, 2160, Color.White) Dim I, J As Integer Dim X, Y, XR, YR As Float Dim CA, SA As Float Dim bBlack As Boolean Dim D As Float D = Sqr(2) / 2 CA = D 'Cos(Rad(30)) SA = D 'Sin(Rad(30)) For J = 0 To hImage.H - 1 For I = 0 To hImage.W - 1 bBlack = False X = Frac(I / GRID_SIZE) Y = Frac(J / GRID_SIZE) GoSub ADD_COLOR XR = CA * I + SA * J YR = CA * J - SA * I X = Frac((XR + 1024) / GRID_SIZE) Y = Frac((YR + 1024) / GRID_SIZE) GoSub ADD_COLOR ' XR = CA * I - SA * J ' YR = CA * J + SA * I ' ' X = Frac((XR + 1024) / GRID_SIZE) ' Y = Frac((YR + 1024) / GRID_SIZE) ' ' GoSub ADD_COLOR If bBlack Then hImage[I, J] = Color.Black Next Next $hImage = hImage Return ADD_COLOR: If X < 0.5 Then bBlack = Not bBlack If Y < 0.5 Then bBlack = Not bBlack Return End Public Sub Form_Open() UpdateTitle Compute imvImage.Image = $hImage End Private Sub UpdateTitle() Me.Title = "QuasiRegular (" & Format(imvImage.Zoom, "0%") & ")" End Public Sub imvImage_MouseWheel() If Mouse.Forward Then imvImage.Zoom = Min(32, imvImage.Zoom * Sqr(2)) Else imvImage.Zoom = Max(0.25, imvImage.Zoom / Sqr(2)) Endif UpdateTitle End gambas-3.16.3/app/examples/Drawing/QuasiRegular/.src/FMain.form000066400000000000000000000002451411575327000241650ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,119,100) Arrangement = Arrange.Fill { imvImage ImageView MoveScaled(8,5,36,36) Border = False } } gambas-3.16.3/app/examples/Drawing/QuasiRegular/icon.png000066400000000000000000000013011411575327000230710ustar00rootroot00000000000000PNG  IHDRE\fIDATHǭU1n0FՙyA'L_RB~.ȕK+p# 'KJ S[Aa$RK3, eN8XzGRx&>V eR:E\ySe*Đbh 8N D9iA׳9 H01aL&q]g'96KIk*=mLcOĄG%v.L+ Ɂ>Y X>G2u 0` If'LFWoh Ҡk2T1"jXf.͖q3+uج틵*b{s5fy1z$2`D̋ CfETdpwp!]K\_kY tSvX[}8ZK2@ 3 uu: 2FgнΠ'AԀ[ޮتv Wkc:AΠIgЬ3( ʇ :ΠAgШ3h~ ذl`n!}B}Ò_A u ,u0Gjk<|IENDB`gambas-3.16.3/app/examples/Drawing/RandomColorSort/000077500000000000000000000000001411575327000221235ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/RandomColorSort/.directory000066400000000000000000000000411411575327000241230ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Drawing/RandomColorSort/.hidden/000077500000000000000000000000001411575327000234345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/RandomColorSort/.hidden/screenshots/000077500000000000000000000000001411575327000257745ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/RandomColorSort/.hidden/screenshots/2014-12-14.png000066400000000000000000007442631411575327000275520ustar00rootroot00000000000000PNG  IHDRCKjIDATxwxSwVt-P: R(.rE\,2PADb'he#CݤiQ˃#mu]&9wғ9R=zHNN!B!u!$$ĢPmذAtܹK!B!%nt:999TB!B ]t!;;tB!BQdddB!B!ʒ*B!ޑ*B!ޑ*B!ޑ*B!q*ϵ~B!BjVT^H!D|v@qsL،݅ vh>>&3"r)d~v3^agl採OHl aky`dkAM`CjΑ!;쿟@ bR1p(5 nԈ:B2>g9u]w^s' x~Ǿ}ػ/>n?qy^K&yn6c,{*nMWi^lI孻|1:ދՙ8dfcs@5.BΚ0on;k=y ~rz!PqP/3W?A!#XkgGWΠSd[iBeU! J64Q-G+V017QP5 ˠLI^ٛMo+#?P1ct oD]Yl9VGnudͣ򻘲.;`;0+\ǔ0畴hµ+ec y6/8f;4S+ \Ӓ hܼ˪s{xYvҗd4iMtte_.':X?~lITtMZ^ÐYu-hx=ԟTZ>Y]5qX"zwfUmdFWsm@|BhI_?2Z-Gu7 >ͫtQx>x6^x-q9siw",2fq9ipMJv\k 9Ѭ!Q(p밻aߚ 8r6|ZL;^ȱ7pF ._n_!G퀒e8QQDuɆq!Tf뮻FZ݀+*U!#řl^_綢W8i5߶mes {Oj0Yʟ^f >}߳aO mj>7YmQ5@ؓOc<6TͬʏK%{.>\-kV>E>ؖWկk8N5עV*#o[ۃM _3޴!㟢s[{;_=}i^,;u٠գ)g9!زu3[V0o-}Ҽ#">.?:Obl9-"!zKu`ٽk[vOfw)Nΐm߿@Ђxh?Ŗ->U ^?~d۱؉o0k?Zʉ9̛?HwYDz%_dq̓P嘩Qfl٧:q䓑Y@ֺD<׳Iw#VZB'}՞ l0*dnlN6\?Nh#C~}~6ۯ5 6@נb|pxӠy7:sNC`CoZP_|yCo@`=8XW4{F›o=q؍J cGNfcO몝gƠU) ]|;wwWOHlYƺC焩Bk; D]?G:gf_dpz4m"}e2ðy+y z|`l Rƍ:+kPÊLu@7>! RhTh}XO;xo8 BgشٷO4&轃hVmGЯu(>aFv| #gΥ,nhhMXp ƪg/e*6Ҽcz^-"5Z8+ PJ"PM]ҢZ[qr񣁷Fo/Ԁ/?W2s (>o>aƻ7Z/ï7!& (AG#?/jMcZ7Y0Z=b䲁cy=a~ cX~F*4c=4nn>-_S*@5WQAg'̧枫W*V)2N咯`a4Pa7cF`Ex>幑q<,  >ec^%}fP9)Kӂ?yAa\Fla2k}h 87 mJOwuH_doٸi6mb=X>&'@A.YSie֌ηaM-cfFXaKVq۽m{S^VEHZDNtlNFu*gAQ^ѿ0e6lȦ˶m. !].1^8!;I&) Ni IzW2?-|NcyTvMtƷ|g&vd>R}KeOٚk?Kg lZr)CDr㙥9_57F42 EQ@QVZIw5@sN=^+QP߼YBos eu>~DX<3ie9baX@rz2^zEѿ:;dzAAf>vT\y?}?AC37;,rv(>=s>?٘mͧUMPm()/kwG{*jٟЭT̡OP (y[t>((x8?CB6Ɯqun tUEn!5Tvj׷LT7&S.BqQRs ~y?oJr$s_} F#Yt}sI`x(l:5ڰxf\hE4?W4/GˇQ06-} Ǣը b8 fB#񜰪"4>}f4ٖhQs[Boߴ1ې0=ը5 ?Ȭ7[qgyd\ٳ-}T\?;Ӂ'OQT|»,?M*zꮫ+>`43r^׾3306pV7D2yϊ(VT_>aSaW5䪇^BW+FtQm8U/VN+۠3BQ;- > B>78,dgdc !GEQn6f;*~+YTA8#(įdRL3bCqA6E8T4^FJ!!:T snEiG{!C=63r WJlԦ #yZKƵjt*iSs0; Z_/z58,g8Ep/Z\r %/4|3jQ=Ns}*L R(#+njCAao1\r Kۏ_}gBQ/2\ҹ*B\z~6' "Q,z3c  ( !#+WlB!ĥAo،:?~>_/z B!ꘄU!*c]>NM%EK΅B\$ !W B0BƩB!BzGªB!BzGªB!BzGªB!Bz V\Y%B!ѿ~ΓX)J:_gv}n+zιϭ9۪RyNyjعR^yJ]>*Wc+>CEx+{[UsW=(܊ϲSuW|Y|F99=ުצnkUqFUwgΣ=OWߕ}^gg_mGe)qU !.$55B_}SٗK/{w/.L*c肨8sq=ke0]w]^UAU+gy7L~n+s8Oyw]UXej*xUWgZ~NG啷>ss,eֺn9{#2TvN+z+ US˖l9+:zmԅ^kΙZcu,sleu]v*jsOy [Y;?wg]iywg彯Qտ+hw|e_[wԪͱ疱¥3ި(XeU=VB,jrq9eXUW̊_Ys_:< !WUUZ\z~E]AP[\@:[ޅeEiP},H>^gzTԔ.|+/[oSect8dp+{Z;׺Xz)\U-k-GU>;sw+*Kemjzξ5Uk !.%Ҳ*D%\T6SEΙTRSET8;gߝ۵䂪.Ue]iͬMk@e9+o]y3Lxy۹e9l+XٿZm1g×뮢(峢kEukQ{鮺+ h쯲s39U [WuaV^]WTO]֙{y*l˘-UWEiyTMY]Ⱥn:޲IgeqMSU湟Gm۪nxUUVԛsPE9wu[O+_v;WXEu_wleϯ\DŽΫQXoB!޽{! T[Vo>v!B!D=bŊ>q1B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B! B!B!mET>6!B!Nr)iYB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQHXB!BQh'LJJ NVV&hbbb%..Pׇ,B! B$))f9}!^h|KSuΰCߚͰ&FEbb"& B!,p EQX`mڵdÙ)<[6@!J] ͻCGYzUZm… Q#B!꘴ !jjW٩zޅC3yj}[YfhB!TVU*U]`Z8p Gg/cͷդ < w te˖I`B!.p+DMI7`!D)BBBG./3fL]Q!B BKNNf_ 15ۮZ ׿cѢEu]L"f˗3rHbbbFVV [n5+V`XpBQ$ !j$33ckZTa]F\2330aa3nlFaO6^aQ3s]DD1qDyBKU!D$%%q@V'SA[26mZ]W@ ڵ$4}cgRF UCIZ j5vԇ_8~(2CBqɒ*6y{$7{EEEu]lQ V!Cbq1^3$M|Ȳxe$$$P\\\B!IXBT[JJ i}5h ڝ!55-T:Ck:4Ɨ3h B!%DªRSSsV^]N(!aExc4~oo|CQ72CBq *4_5dKNN&폅|4ۈƅ3Dk`7?@fB!.VՖN_.Bff&ǏeFb7k/EakӒSX/y[ SVZ*bZu/^+fm۴d…(RB!Fªbbbؿs۷cT {_X\^JKK[Wυ1 rhʐ!Cxㅡ,PHR& iCGX:>'OBBtBqђ*X6m:RӴ}drz(==fJR_p3D[Vȩ=j^_YC>bРAXB\$ !-..SMdpNc;}֧ԼwMs"0T$ȤZE!!!{a6)/,GB!.JVf00tznF$ iuO#.-c>ƅ߼Z |?xn! BILL﯂9}HOmBng8;d2~d)uı~Tղ01/'㹅B\\$ !jd21-is@Q_5xU:h;<}NIJJj5F*#㹅B\T$ !j,>> {asv6u^MA矦6W]p\bbbs ?U#FLLL]JfysgϔZf'㹅B\<$ !jLR1k,[w(f:)9AHwz&66<VWoO>u]*!"ZTT#mBe<BU!Dt:T*Ln`D4.pV\\;vq?`zUŮRjj*c4ߐzhd<BU!DL&NpKah8Oୁ Ψ<႙\Ra0HHŴw5ifFAuFVZ-㹅B\4?FqыԾ\yN|:hB+aP6O}a7%4\ϟL<):DڶEtč|.uqNPϭ?,Ts !xHXBZLL Dtwށpsװcm)LtBav}L%F]jP]G6(:DR ?k۵!@a#L>.S5xlA~*-!aUQkL9^cVے ?Υ(>>u|Z}lp_B!7ǎ`u]L!BxYBZ\\vq@qNWtALs)*!Zݗ -(/3gά"Vd"+)2[!ECª #F4F_ \t:˖-I!7-5vO6Yt):݅5Ettt4'<VB!.V._8})]0c^\t:stG4s73p0zC"f͚uU()nBqѐ*p Ĵ{NQ_T3c[:d Νl<=ePo.bC v;p:Cavz ߋOs zjll,ߦռeN>2[!Aªe{C~:l0^<.*ɓ9rO>Cr;EHT>!Q\Ssx>|I&]7&XO+ {Nd<B,pu :ۃW1rOYTPT[&ׯC@ˆQXGϋ5Zs !xH˪¥J'׹"r/`暷(ҵ6k1\G(ϽzK[7vu^kvxn! B+\g?潁,xtC 3n_Z|N#tN:3~1xn9r$111VQӭ[7FŊ+X,u}B!\@ !&>>}2m4޼i!myw w93pj¾ [Rdb19LJJ NVVPT!MO|GOBq;mvx0JxL7g6Lĵ0=T d wfoas>,#Gd"!! B*\g%55իW4>((}S}ի5w6Yڇ{hHo0Yyv=;>gי~[ZjAZRTn(s+Brr2m>-M?/{V=B͘+63m7i3G]} !< B'!q/hZ~7 38^LҢ,A&j^#fΜ9&oZIHH -cVѱQ[u4tkY mS\Ξ&F;~<ݚѫ~hh_EB ;xh+c0 URX|kƌܹs]ZoB!GªBQ!*Gs|Jcx&4Js?==vkNK\|#2 A>*.ofu:)\76499Y;LZJYt ǻBU! ɤfG$jT|b(׏w}ף*G,_O0jI7~L?1t[?co߾2KB\dU!rNlT1`b(O{l'vk>5.|~ĠA(..6YҤKc5}#s6m!u$ !HJJjOT]Z۽c![5=0`pC^ ̼9{;|FfQTT} ! B!Df3f=2oblτdH\ۭY 3XhӯKII)_ IE[lRSSݾ/!#aU!@JJ Y+\GՕhav{d|X%-ey{ybcNwkNMM%ƭ>W\K WBԌU!]]D\ZQJp57G;?64--n$&--cBQ3VB ѽrn QݚG{x9=64==A\y{lB!jFªBQtG?ؕjskJII]pMU q[sVVυ oGg^BQ3VB dee빱ATz\ynn'cCBԜU!Fצ 1Mj22+;3 AAA۟B*BTd2giQ!j5GGG3 ۟B*89r$111VQӭ[7FŊ+X,u}RKXtt4{l{X0z.ßG; GxlB!jFªc2330a0~̭VfSv4d xm{Cn~_ĉ/P-@Z֋YLL M ;,d=kNcO>u]l!U*p;EQX`mڵ"-k./o3)Qy$ݍkPA -0h0CX=ڴm… QuMY۶k?Oae ݀1>iQA`-0xLC s/^ bcc/(Dv>WYN cGNl(.0ѫW/ՃB*p+ʐ!Cx.i$O|cbۍi@Dy1lV W@qe֤/2~z$x9^Lx+Cx8s߇}Guۭ!*:: υ Sݚ  #G1ۏ_5z zc f$ !j2p@g.ghPmEu1oul) w!OG?eGcպֵfOeY/%HZo~|Qbbbxsm8?6411Ʈuwǂ;v@!DIXB($$$pu,/cO7z5Er#cƌ"Wϼz%dWe%&&[)r>e!u!*66vx.~&i3xh7ܟ)°V|@ՁB*pd~k),@qGE/,Zy}+\^W-D }׷>k?ˬ\X6ܻwdn/Bא*pLǏcpQ3z~xg4KZT2z4)gr`[o Y@||<|?xuAfW8=oy#![;?Xݾk?6TR1k,८ia-Kv3gB!\Gª咒r;ZfpiӦyYM]1Uiśnb|ksPf !AOx%-f>oxoDv7kuL5֬Xl7-l>^똃kYh+K9?B'aURf/1m|͞EQ:S6rKZ "ཕ5CΆplS_,\p?U:6EHE֬;w.N_WŤg9SfQ_ZK^zg1f͒* BJII!ZTf^4j_DjjjE'A e6S;W\鿉+7ѫVa7?~ְE.v_:2k/ )ҏ9_3rI|¤Y~CcC>."vtkg47-&.~ v .PXmYPD%>4m";w1Bq!..t]׏իWӯ_?/NXKr#DzW2RA©#oiټCCFjkKj7twF |֖1c0w\å(>>}2m4nxd"]4Pޞɱ ;,^ތ8;iK5t} x;$p >."kdžL&&O̳>Kjj*W拴4vvPPԣ}ի* BJKK}_+|yG˨( |d!Wߪa|#7PCt 7ϋcRdqgL{5>wrrWFbu"-xևf3)))Fzzٰa2ΆX07 Q+TO_![1c;޾GOu|#KZTgΜb^O~ƔB!aUR6o6b۟j%!!?4ٲz!aj`n;s?̦_?=1hxV8}d2yNIRRsΦUs 7\c`H=F|upan˔W3|#FXR(M`/ּc=hf)f!P !p)*p,|L p.V9}?vP=WC7[qՓiͶUx|mϐ\JQ,X@۶ؿ32wfc{/ԨՠVC`Nn? س-ڴiyQxɄ ͉#"gl~mԌ̅>a0[tlh^OoAYv2; #_v[[,ߛqϰs BzҲ*NPfި]pOoT1&ɛw xsa&ݤdg-пYSi§ZS&v2[ѵc' ,&_5&_5鸯7G3t̛i3Gl([Tܭ[BU!KL& Lj~o |L%AZ y,V/wy9c'Ti;vvRSSll_i t~M+/߈'[ĠAXlXZGTo / x,P!tBTtt4'a k%::ڭ$ɱ<4Ɉ Hz&1y wh_ͪxC V^:Hi t~fRZhT13c̘1uR* 6-ᓧLᶑZ>yĞɲDBKU!KφBoBbbbܺ$:\_P1UiFCk,~TپV.WK%''/y`@k4`~~>-94#;1yVUzo ${ & !%aURl:cM>}qf3sΦ\ qx?/s6q67ztR<8^}!%-e*^}>qؤZ5o/a jH_}TB V.ljmzNpWiW^nGJJ ZW+5Wb=vdvYg` IKJJ무n1m[{qݕz3qY<8wIjYFg؅BW*p)|#biFHSSS|tߝV?z$G᥯՛D&ߟٳgQTTT>ORR=YZT"^Zݯ :>Eѧ61S0"LK&zU9c+}^v_sLVn2ls+ c52fiM Y2xke%~~v!U$ !\d215i:>p˷ow0̘>@%==;U6Ts./?o6/й x`3$ T=S\fOj({ջ.BU![T*f͚E& :VK݋3gu\㙩k%]ΐ\t"khu5ɌǕIKKS'*)adMR{:4KtᇤY?-BU!t:-[FL`z?j>u_WXt):f=d u-U)QSuḣi ۠ƬY8K˓R4n6t4o`EI6zj_G5iEH۶mb !nBKl&%%Z%ڏáRICf^D_nc/Cg8?g)3HsEGGsN|=3Cy+Z]Ky0w=Q9)'&&۶{lF} a|~OUp{gH.d"7A`gZWsX`|%-eyۜ=N߾}1Lu]d!¥$ !\FQI|r-U i дrp1?iE>x>իN[ cccy^ߘRWuv?P͡ L=]L6ɓ'm?OB!˰a9jTFGGs>Lj>º^ 3xg+syޜٴ1#B3jZ y;ؼqo"F}B9VfZ8p E?ȪrǞ:+G`O4˖-j01b) o{/޿_Fw>y]4NgHe+n?_ͼR3mOKV9>ZCà}GEnN5Sh3oS >>ʹsLL [wѩ[¯ZTT6mү_?̦[{Ȟ 5;8tf?[w3>̧އ' =uD}ɠdpY C8_eo}BxFJJJ]}]*EQHHH G vzyyP[Ø1c;wn111ymph&3vvvoiœ~|>=d̙uKZ=f#<̽_-8xķK[צ&ZUX}Gsy&~֭[ǬYX^!淝VzwkZ+7ioO]` GKTd^zm=7¢} ,?xz V)BǽWzs4·Na}^|tAջ)敫}G,oᒶbŊ> BINN&u'<*%AZYxܰ:d21m zڋB^0tRK>-ga=UaJ[?--qEE ?n?,e1y%kRhvpMw(]RT7$=ë#:\EXo&t I`hIͷVuz&+zNQ<{oLt@ߒIV~1',''"<#G裏SO["޽3֍@ Ϯ6&R\lٲzcy]ytzѓC!IXBXff&O㾅j"^j7cl[gL˂'>Op.WѴ朱q`-X2j>+H6sصJV`<̧Y] ۋF|}J>[y N:ؽƆM @8 hQ`xZ=Up89b(v:G3D7YqE%?fC"tI#OGLK?FSf|!ͦ4A5le zJ{rXfVv*00oEO!Oªƒh^ɔ#9u>۩JUrРS kZT0{t2?#Wf4w6u?CrEL&S`CY~#NԏUkBO~*4io='O$ڴÀYLZռXNz;ѡj\ud.UK=\̭>baÆq9϶~Vզٲg;СO^ߴ -+zJoG[:1TcK0/?f. 4jxF=n۞B!jJ˕+WVG<%%E qf0F~P4yy8zXbƌC4iS&3QM]kߋzJXaYlf!qfMjVI]HX_[>+?v1U6nauZKD'@ w ٳg6A6^ΐ黱0ZVs=u233iۺ%]SD ̽#FvN,%ąfŊ5GFݫ{W}I=z^d„ G8>/KK ` 9N/d猛v/aL8lMII!A fRSSt̝;7&'3;@Nu8S̟l>eQ*-Ё!x f+{&'LAyS _ŮQ3e ۰%6Ku Ȥbܕhʳ9zEݏZQqbZUoEOLJWέ:ϸ=xRRR Taeڴi/BIX( ,uV|w=M ޥtHxWFTj~+rgCҺm+.\Hjj*m{z{ի ϊgx"iT!j'/KnB+o,`H==/]{HXl=Ns?+ Lz= ƳzUAѩ!JꔏlQz5D:JAg'-1-{|x4iV⣱~Jۜ?mB9̼9I;#;,};!_6q˛ Лq?iW;z] EUd21yd9ƛ/,AP~۞Wڽ־߁F: >ʤIHP=iGz'>>}2m49ȰL[̔g|\ҢZA"q7'sy;/|?4)LwipJ?u[h}{q]Rɔs3_nǘjNIC_.N333IJJbޜٴ-(/Ghr}rǖx^Èg{NMMG.YzDjYzM !DU!.rg')>UP-Vc)\jM:''jȑc4ou7\ժ4peW/V|j^_ecܝiQ=4lٗ>ZSOXpGDY]nhw[~Ѓ[r,ٛNtԨU% j:긿7 dɭjN-IMMs]tmw=9R$aU\rr2),aƨ<-8g-[f+ڹVcT+⥅njf|~}W6|+\GՕh̏YkN*\ЃW^*яpOB& ,U_]o{r!ĥDªL?o7rI까 k0j f 륤Фq~먺RhC5QMl]~Cz;s_ۯհ /9?nʡ\į{kVi* sCwhRzn@gwȲ#5PBQHX"DTF]ߒTGƁb%#hO^jj*ݻxna.Z6*?AtZTQŐ>6- ꤕ;6[]a+zP;A[:6T7b,Bq*El63gl㞅:9Ka8F 111۟p4ڴ\XmB?im/623V"C5r4 5r$˽="ELƅ4j;?3VDՕ]HO!$ qJII!ZTG}A7䤿/O>۟ptykq#5'3{+t_j) FݦHF.95F|\sf: s Wu.v}KañE9M^ܾ/>YYY? Uo.g{X4?XO-HΖ}. sIIIR1Ui@Khp߹g)"p8Z(VGQV+fz@%aUQ 2330aa<4N[i[>c^5K[H ĉ/3}3j*ȏﺿ.x;ѣƠ׻Yqi(0)@<\_W5:䓭] Մ'h jے ^'t pFؖZ"gرn-p?D^rܟ%>>=^خ~s=>0aXݟRRRh[Xij*_C`?sՃ'1łW^.zuMª7!D-)Z wfheEy|? {UÓ0 !|ISTN2c[,9vsݧtШ>F3{.8ɓ9r˟{ߎ*|2hР6zB;nd8l;q;l <؇44%K[o~"aU\J~C킡oh7_/3fL]L&l.Q Ca.ia-*p3f̙- l买f]۔SE݇=ʻ됃q8>)w)y\ټauDZb~?[nKOO{sIC{ ғC! ₐ̲?i3WB d|`66Zu?޺ͷXj"?~]ӥJLZGMdn[pt[ǰR[У,]s-5½8rҏtp.?vz.AB__{ ?0 $Ɍ/8̝݌xpB3sQA_ˊ@"״0fB{ILL<7oO믿VZ/| Ҷm[{b#aU{?:ߢZp\VUDu^\t=]zc (C'hf FMplSwy'S_EC,{S,f᭗0k, +MUUE]AWm8dTgp}@Æ 1b+VG!en;Y)V\KCewz\+ [c&mғCQ/dggӫW/~Æ 裏X|9EEE :ŋ~ǼQ>Ŋu^xNڷoW^M{(,r}X|{7]ũb[-NB#dѰ-9DNZ-T̚sk_i[BTBB!!!IMMu굩hZ @ Yd :ٵk!!!|4mڴ[[0̙7VW)A^^W7CScģnݺ u/..a zĽe8^L^ﳳvϒի4:((hbbb1z7/&Sg0/k:5[)Gw o,qE{j-gV7i3J1 awijD!U5 p^ʱbC 2 EOE[îe LE :tMٗ`wy2}DZbYK]Ù9sfheDE7glzrQGs>`ֶb~ dLm=N633jҡCj5?SNO>vF3UtZ?ԠS,[  XfC׷0zM^O~ׯ_Ճl&%%THOO?M&K\\ fgݺuLyw>=惓Wn)Morg'3iXMv*Di~*08Vϊ:JūX0bdP0@͈X=;947wxkW1;LEanyiy=f33v>ߏ2㝏 s]ve]tЌOӧO&O̴i,rk5M[E rl<#65:ycdJB """?;Cpϐ <<-Z{%c[oڵk^v9,Tb*%-mn9ž)8118}cmpl-Ʉ  ik:}>{=콞I߷3vr|ĤG1qċfr}R5ke,.$lQ4KZyVO4ɀ+lyVxBxc {0+"\ƹ-B1a [j1u|nzz3z[>O gXu.g l>\̂ yh~C?Qtۓ\|ƍ1JE?NnfFG~oB3me7S3;w0eҤITu&22;v%^,Zc7t|@9611UVcZN< @6m ([UAZVE=N~j'o_zUkનzEE7_Qm&iI7!JDS_<|w/7}L/ZQ __;4Ӈ-|Gn3iSўNcٲe3/~@oGx~;S甴>_w^KN ]۩ڮϿӓyejjUfh=֫x7?.֗v3AT#綳i+i]Nb [VH:ڶmKLL /]Uğ6-Wu͘\G^bܝ:p ?GLZ4!+<\H+jOAtoGP#A~%{3lOϥo{:{U\Nye]kv[`>GpB;Lɯ3&ɥÝ4i[#+VЧOj]yCQϧQFh1fqIoh/2z-++ ]Y Gg9:N;5n Thzf3m4&O\URm]. :ŧC0pNh[X ?Nf9j芗elޗ{)ȑHLLMKem||<}eڴima sEKZ7R[p줃]cZMғ^xW>4TE*϶ңk rrN:봟AE Ғx/j6j6o5:effc~/z{;ky;i=N[ԳB J`0`69r&ɩOLVVFpBª(%~_FQn1Zìxg/krAJ5+DZx$w>T젞Rz|;n35<:=o؁]GhV$1M.™$%%1wl6)C7#=A/޾9}(vg‹60Jeg0a+WM %רa}VӡWVמ QUZUL]lMDFM&j3yfc 9sC'zw1sͪD7pes Gi徯;z{?%%%q}3-|Rh7.4aԹoXr>kaz xyyJU=^\<#UQL&.MAZ*GΖ {lRSS/P:srâ{DޜՏ05u.lI/׷plw/WK=$''f2Kj)VŨҀm#ҋxl[S߻m7 ,|54kdm]mKl6?#.䡫qK 3WU~TT;'>l:Qosxo`Bew)9P?B ^'((ooolj ju'aUkXҷSb@Z8͞Sի/ذZ.: VfZ!r#f:M%',;gҭIwf^Z!33'6[imyM4몥a3 7` mDu7% ٶ/VMyX`-m[ υ̿ZHsx ( >xg[%ߟkji&MmnmYTիIJJb9tҷs(1Ѽ| 觃|yAcݩWy&jZXxJ!ąMRjEQB|1*굘R6s| ;=Gsv­ awyJ\lիWr?rteg7;'%%%ѱdJVmkϰ3ؖf sJzhiiY'?_gӍAUܦ|֧:Ճ *aS?ߒFTt 9|k̛7iۍt?0~jct^5\GF{1~ZA:#Fb3l{΍]h,~j^U|w\s_7!6[e.e@G~{*!ޘv~bldUhEQ`>nK)7Yo] ǰn;USSqMYQI$z-66砨KZT]zX幓ř/TRf0Vgz}r-hu/7?DP_ǜg+GvXzn:'{3<Oj Np@5w7}maؼ&;HD{#We"x1,<37\ٿ\m@vb%:d:>x+4BDАHANѿ[ 6vIP-֨xh|C7E:SyQ/.R>)殞+N*o$`o:6B=׺jRs"J>#Xa&,ՑZf@DsiH/o7sקgh(/h!l>QEʹqGKKE  C!DREQp8>ǪjT*zUQVal+'qիWcɷjV:$ڢzݔMu{)bKٵ>_nh;f_φU{bT>T|*4_ UߊxT]"uUC;ڹZR^5_ SsF9y~WFjBj9G[1Yk`+vP7˩uu^=g߲~+Li%n8Rb3jȷxܓgVsaK]̨% !|;Gt¹?&ojU䣣kS]I U߲rrPkt:,K]!aU[#IE&^0SRof/_ȑ#!88ZZ&88/>}лwovzݺucԨQX'dVA/|砗{}&q}X 5\v-7tP-Aa}_( 'OLJƩLOf(F҇VnZM|ou7 Rq4-dz?,0c5,yђ ӯ 20eP+BDW桪8BZ+mUuoyZ-ũnDI7`Qo\ŭ ׫Ȝ !ʙA}Z\ff&III̙;mD.1Lw kžrضv# "Jt \ٴs7+_a>AZvOc]ҢZA5擧馠*g .J,2YCnF ;dqwy'V(tiX0-Tڒs7މB;7??i沶jZ6Uun Nd(9oO8IõNT#Kib`q ?ۆ U>NTh=e(s~6p@xoJN6.dI=32mAk/xG >{=uϙ^Ҟa p{rI C!D7p@ZjΝ;!''~nMj5IXVVVQjri>Ž3j zR}fZIHH`d>E@p`{Pz0A{?B5\?{y![SߓJZZdeeR)<]7FG*i2:^H@򛏌~* ~n&4s'~g,n% +6 PG@`:00)'d7~k1cзo:omqL ׽bRE %iʶ޼© ۜx"v.[s9ŪG۹$ҪU̺-}Eis\;m C!ącΝ<# `h2m4l6zOfxٳ'yJxx9$ Z ,&> >sE;gl]NXVHou=2 </DS-tN0߾1 , 54Tũ8uT]#΢K`mʥQs4낎ͦ;<IsӼ_^nd7(W'QؽQǭIII\-j3f|Ý`>WQ(4<]]*t|C<8^: `ņ|Fĺ7ȡ,Cjyɳ(|#/Uߊx{iyO[k"^Φ:>jf.B }ǘ1cڵ+>>>g~g{1hݺ5[n{tЁ޽{vZz_E۶mYn׮Y%KuqJ&Xd–]s4>QÞGWUYx13E```]WǕL; ݟ:/zt|TZJkPs4RѺj*Nlj_>l[wo^s.esV5zȻ_Yzm Z#ҦM+.\$f3s=ֶ/9w<fXSٸǟѼ0 +f\o oළ7|ߙ׬oүK(1ܗޝx;Ɵ9{i0B\xf̘|;;1L 0-[?кuk:uD=Xj}aڵ@I0ׯvSNw^ +꺸n%aU[,hU]bsŨ#ә_/C#ggv{b/ƒS̯0DVbUxk 3fÉ8S-ث6v7F`L&,mjw]}^)3/B WO8|0[n%<<믿<ĉ4h? ɓٓM6a6馛Yv-k֬wި],B=tqN\bbb(E "_aiaΡŴ)3guUԉLHKiQy ;>qӵ[A OyV wRA^:TҴC<Q7q0rfO/%<:/F4n_$?`Jܱ!pxl!K&rFswbL* ʵ1w?g4ddaWv~b`ֳ]?%8e7  ]qޞ'z10K QT̚5ƝrJZXPijIl8χ~̣= C!ąɓ,^?k޼9SN%//ݻwƍs;}4aaa?ۉod͚5uqNªbcc޹+@gk4o- [nbEjj*:Q}L.ȼwf=Ru#)(<\1@Cay$ k@~F ~j[z?yC^o؇%/:سA)iWæ**9X9? /wtIjY /w7v`+v1cF|heqopM Ū0e.sLӱl2aܲBvU~a=us`~9lv O|Kh[/B ȑ#y 77)S@ǎ܁rJ _O?Āӧ*ݺuCќ }\3KXV\\=X;wB)>}چ ${Mr<Yf̝MQ~gi{\ 8jK01xb#|e"~IDATǿ#lv_Íj5F*-s d>4KXhY*==Њ}{[8: q ?3הQͱyweL:+yd%h穏 ]3B3KwL1w\^};Wy{甃M(kSRZٝY^gx`U]nVn=!DmT*,K^k6+]QFl߾֭[@tt47nk~;m2|p/^L۶moѣGBCCQT4i҄J*-ȄQUuAԴ[C6+.\;y9(PPء8C!79vU̦>V4 Q34x 'HIIAwOƧ6 ipUWk!(Zmv|T]0Y;j5F/5Q\h9%I{[>]OT + Yv  d8 8#5<]Zjɵ3|Ŕ ! JYYYջldeeUi`ܹ3˗/ĉ䐑_~I.]{>֭[ٹs'7n<۪ ХKEuΝ;Y~}]WG5^KLLdn9Kh ,QCG5 w_)R@7Q`kamv>fRRR[{JfO&&&XjFfjj*1SD^鹩o#s|߆*#V^*z?Xm*>of'nWET.cMsG+\GՕGjÆNq퍡nU0mڴ:_ۭu ش#_>g۸E,^ämylf6k>zt{kDŽDaBMj%<,{Ig9ѣ`رNwL&'Og%55իWYZD5[Ŧ>^Яrpm uD zNC*3jS|\zBRT f3Gd29ud6h4b0* u$zd21=i6_PyAjn.qGFK4&;ΐoL3o~{j?ݛBXr!j*&;δTaU1Fkdap>c3sLh4p&0}l3^ w[@4u*ԅQ|ܯxI~YγDZm65`EEE]WXP.ccY8zS 7+)]$Kѕ[0I-E h=fͨ"ͷ$LA.R>~?q/Z-`$0Ķ VUqߺcv V8r⧫:?ӡ{4x,|U4 qc"r&KzRZi"H={R+sai|yJ[:,Xȯ*٥&NH2[ 2 , 9Ųh$rCPӶf9~FWyz  ?ȖTo{#[|֠+5q_<ϩF/.Qk#[;֎k[oj}2 : ;Wv*S?rXA&N̛>^z%tX u'r}U +^]EHwμ`BW4L 3q2ֈ a'$5ĿJjX;v,)?L\-U9\H$H$ҥ &Lᆪ FcpЕϥғIZUP3tnƿ; 6j:=a<9rdz^*N*=k'7Tmceݺu1ޟٴtA!Τm111dHɭ@JZ9m;EKnjC^^FHnn.wf 8k0hsJ!^:gl#׊Տ囇"ZdVe5DDDDD{ Gll,'RN2ً{L^ .1@y ̜xHʝfT3|5wgoj$$$u 8F>=G`!Y~/o˄C2[f܇ DTRqG@iNZȘvė򍎡sùsZnM7*m]q|FFWA5ݛs}o;9ѴiSŘ_]CvPZ^؀3ww]3c*qƳ:ߛs=YmMp'"&&" g O>dk9]Je`m|W8 R X;#і_uLDDDD俍Y!mCɤ_ڶ!<<~QQp,((`|&ˑ_Ҋ@<8{)p$VO?ՌJV>'hZ~ RF֯llb2%. Fl9F k^a;6s5,|r! Zw4}?o 09s ]5aJ|d8_}wǘ,e$0qj#"b *:H "!JXU*cǍg/ЖvG[p_MfxbxrWh顤g ww"Uz_y-O`Nɸ s493"745m.\/dzx*Q .װsZ_ׄzkuoG gg~[B޷B 0I|1#&VgLޞ5x6՚Ya[_D5낉V˳r! pP1m.=7|,fϞ˫N5,_'.. .>-c<ǽKk0cKF_TN€,H mpWJ C)dqtuh) WU Z˗ter0{g`䵊2[J'~WZ-ZNY`I3Y!(,ss'^2RŲѧ9q^6օٹk-ƬY?98voϣ[OKvtvwll,wfb2~M:(-wyXIh4ϙ3P}_31Lꂋsxd#ֶq= 3gE!gh(2a6 E&ֲkm!=}ϟ)ePdvh4T޴jhL ՘4 ~8GӿUM֝2b!R/-il‘SkrdCu[Q;O$Z31#EE<>>/9 @N2 Re3gYniʨ c"Ega1XōW}C=c<Z.n k5,nK]G*eЛ!Hd(,?Sy)>UѕY_u#txx8[xب\\\2c=G_zYg*ׯƫ1yֻˈ w"Bٵ;9E mEMc0p#4ϖqϼ}lK-|9<գ9O)Jyw 6Txw{>`7ьOq;_OZDDDDȿ <_\GE.0,BkK-^R[XbWIԜK_Kzi( |d5BA,'+VnEEEs~[/'(Z-~-Ǐ'**>5Ԙa"j+M3>K+d„Ÿ,66OжƾWp&Grr_̺lԡ _O'8S`eke*>Krݡ SETͼkoIFrdϬ.]Xj̆ۑ7 :T XEDDDn`U*:"kᤑ-dNeϻ+3'`6բVB*v/e׼RowuyƹՁ[aLbg9q?+pAA8k$y6cކnЍ4װ*rMy^ϋ_azU͇dҥ^Zʑbq5Y9*,n gOןaI7Ո%%M>]s,ۖErf)Lf &re< ,"פx,_ByRdRH\='# RqdV]w&{,HV6<{mϟd9sIeC Xok9gT_'2g6YZ[5G60VYc>X[111Dq_;-2Χ9l|_{g7nF> .,XƜseѢE +Sڣr6&^ j)3^^Ǽ˭W{R{JQlSz H$(ƁL%ciR#66A1V'"N^ɮj8i+͕%<#b3hD2W"$n`-w>T t\#PAyu?Æ *&kB" N[6-adSdUKcٶm-bݺuL4eƛmi0sޙy.|2-2߁d)z)~q|:Nڃrk6fsnM[MSW\%ezΜ+@jm'Ի ےW+cB!zN6j;OS4@W9a )殰+Mr)`g0`p*"r݉U+;U&UM<$!r,c'.NrǕވSQ`8MgX2W_o' Gh%tV'w)r )Re?\pQo!m8$׈ }":y ݺjLܜ|7 ˺uXlkfҥGFdV{>>_m$ӝl۶>Aݤv^=o $з MMIV 7 ,[wr0X,jILL$))d222.k4É"::T+ ݺ/ Bj#d3¶m}+eΜ9̚5a%""""b;`Uz=C aq.IJhߏ$%OŀDEEc*%s dgi&NC7]*%t L>O5 sfcʌ<reI[ffem7V|oꆋ[u[V2R/gYQ:wpjo 13[j}޲eˈe̙3#j^޴nA`K dءbvotF%_ar^=gqMCsynt$NJ)wVrOgEVk?υ7&ucXL!_|,2-]MD{]Z^}> 'Hu&ƏTQPPiT/[Hڛ䶎 V8a;E̜9W D.RSٸ gF5jP'(ؤQ4h7:lI[ϩ=P(X~=U^9tv@U,PUv0iӦ5x8-X O: ޚ|pP"HFE>dkf%!Hy{A5TH#o?f͚5CYz3N aژ}<2`;wwoQbܓ7lڏ1O$P:S[30cq{{ S!QӢ%xyGxaQ:9_P@8u a+WѪ|5”\E g T(=e\ԞuslZlqi||<}m:gj){w*III;."<U$$$`˪M8P'"WCEgh)J5$$$ݯk<w,e ã\~|A>ݵG 9V` >Y>/a2Z*Tւ)SX mٲ r܋xzzұj0rbKnT*PTB|'gI+5B&a4Q)Lx  2N* _Ҝv_1Ďfb;:㥶,[IO2rH/[l~ŕ:\m 5qW͛7;DlCAA3f 8 >LW2P*GʍT(ܨPqȜi3>APP2} NmQA NL6Y|\JkY9g:6B=LBI.uz4qhϩ#ݛ3fk*0 yh>{;rAT9Ox$&;wGlgp]̓u hx*'ĠS; X9j}^m\lk/7+y⁽en#mx3Ξ_!̈́ +sSY73hCnkWD޷V5+Nk3MfNů"\,@Z^Í !R^Ư߯C'z;\zө+0Du~0]&6ɝyJD z%*Tf3W^<-$5"SqOi͔ꃴbű 8!S(Jm qkZ1Wk`#?rkn/7'v WO-:2`l;rϔ\9"Ylf+]_"<=/i5*'/. {:{0_[V/7#Z)e <9n.J\h‹9BJqO;WOf!2XAH]qRT_: Fe3 ^Z Э]]y'y)..795{[x )e!12j%zJdWu&ʘzD>3&=s$矦E_[sBwrLyc@Ts!n$OT}&*<$%%ݴոh>l)-Q1ף .F ?He&096 }TB"hzVmL ?<o&_@73E9,xkBٻ)=QlIR9ɘߓWz6y5%H; ͒7Ak鍻 <ܔkM,x:sӉ_=P'uWZQ3w$"7ɑ7Ȼ3gt )ZZUXPP@ܴ)܆ &6o]tp.ۮCyZ֯OȕS:[ /?VC%i*\Ul䥔~1 6bM?\ݨ@g;cqh("r#"$%%!v),Zbted e%jUl'E.P#xz(IqUdz>J_7KO;U6<~ CvWPabGqvV10*ifT iAN^LI;Ld-l4L$euTˈ,Ԕwpx4uѬY>|We̮8V^ F3qn|םk_3&3|='-79~JM4*y i;v5]i^(ը[pO]mؑUnmƎiZwʈ~7*zZ kN}憳3ڵc٘fo{;b*Brr2Ύ)"df:zQ,\(k :F:Ç;5Ԙtk:@O//cM5`.H ~*MSɝZ:Y U\DywڶW&ewmV˲Km۶DDDСCK/{޼yu]?ɓ'3bzEYv-Æ ȑ# :e˖]ḮEEE V`tqBw$;׉Ct&ֆ%5fi|}!."R* XL,& rwA_{/Tw6J /7Ƚ̛;b. ^h7ʅJ 3N$úgu.m(j]]?K&9IIIt۸1]&eoo'!!]z G6LO2uZн'uxz.k'%%Ѿ`mScǹ*R /X~T2UߚYHv<75JD6T`ZAֆjZ/Y4 *Yh:}kDn.Kaa!Ç֭[Cc&O7|YjFuC&_0k,o|ɓ/J[ZF VEn Xk>94 u֨2ׇ~C]DWgqv^Zʣ& o>Y9,z~mǐo#?ƯO'?՟^ho fc;gذaږD QS0 |>'a>TɁo wRF5tG/Y|qLqT[|8sҺRқ[WPPsqxsʨ.IUnUio%IFrT )`g/YKNN&܊k(RL˵= {V^qJwJ0ܔuSfIi:99H$$$g*>R+l ]ාWKHr Z:Q'??RYoUVoߞ}?X}tyyyh3U4 b Y,6L0)xiN>o8plG߹֘=E`wQY+H\?+([@}Ub>mZDm`QcpBC^^FHnn.YYYp~r&Nr# CvvϟT_/OB%R0ƅΖ)ɱ̺8KOd|Zp>ķ~-'97jm7u#u[O.VkTkM|IhoZzo(j]4ps}FF.+l'gv>nݾ)3`Ib߲ɽ-k09 '9Uڿ2NrdT/G-\'EIII 8?.p|}}tujFϟ?ϥ^^^\pJ&S5o&`Up VN1)oF.RY*Wk ,Ƽ$# ~2_' 3ƘW  >笽E,w6̗_~yG]xx81 t*V9Ϥ|rTRYdb`1[,2s|t:gH ~`05mqXK~!'9EEEٯgz(і[<~Z-˖-mٝ{su\=M ?OxK&OO dۯX`c!wue/6ɰVLٚRk¬r)Sv7]Q(j]J[Vb6499n?.8:uꄷ7/ⵓ'O2fL&^ZG@@P9: U0w 6LkZ,[G(`g\51J+m~a=5WXe`Qc4|ytŒ WV7>z}9-zTTE'm)wxHM%"~}ObSwqi' f/:믿ΡChѹ#iwCLrYti=`h^4 SEar@P%y?=)2 x װ˯3iqeQVȬWL<$sîz#P `8A!ZA3L'ERdΜ9;QYY͛ׯHR 9uPuݾ};?=zr֯_o1( P\w`Uh?9.X5$m6NLLDע^i,HmkXl#> 6%Lؒjc^XqNv?ř݅0,MtN=\Ɗ+X`XΗ_Jq]h4JgQVCZ$3\o^}^RR6GO׺]?rFx^k4* tnbݞS|F$!]N 8CY})֙8[Pg9]籶uG+̔::11M;.E}e_;eR6o̠A4י`y'y'k}wޤ\3g`K:˗|=1XAR1a翇jZ&:vdVRE1+L ɨ^g&Òh31fAR1~֬C13z{-'N_QQQ0Gs iq>s0WAuz)㤰n1Dc"HO? T_[黎k<7z/2mV֌f3~ #.]%cjp=lO/`"k)2bƂNt p.MnU얓=Iϟ|Nrr2/Qz9޳B6h(*7jŶ"""G, ..ן<0_9i_=mjvM'EEEH\zJ̨:^(XcvE_ssFط :c} ˘?Kxx83JvK(Fő?s!˺ާR2S Ž& s!D}޵psVPikĐgr!js|nuoF>9|t_ZZlKǢYwNAA,|G53/>ʷO-yj WԟOQd`X(H>WƲ9<&&񤤦PTTVjCcߢoZt1XHll,#{B;Z|vA;Rϸ~o"DzŪqbb"UAjOPd~P٤67#HWņ-,&H[ɽ1'sQ:\S;0Yzzaz C&v2D7yҲ{6q%Ժ I)PVif ƋY{JŸ|MS(HQJI+'#6it'IFn#=,Nz~ٟIKj%A@"x95ؗaӨ~k|Z,7d~Ғ5ͪv nVhv\liEDnV`U" h"8 M2 3>L5 ReKL+Vp츕kUg67^RdXU_J{^ٛtaoiz?Npj79 gOI?f?[q9Yϭ\f&<<usOY7)tS``-yyyH$HLLs[NVa0Ydy=}BQMdMA n}[~??a\J0-JT.~:Bz-FFwDZdf>{#0i^qe>a 1b޽ ph(8YYl64&&#d:8buKYUK[a:iti5npgw11#ge=7}?k{bJ2B^fd }UKLL W{aK}8QwۉENLNJsv0xtS6;WXEEEq(5A.+-#RΔro`~zFu`D'Od%|TK >I d/e]E+U?  %W>~s+ uh4j9Zxk0t&9'K;tb{UE.%<{hݠ@~@aYS@9{R׃rХ VnM.,ŋWƆf ,SNswN~;$[ʃ iK.FF#޽Eyf^3xiq/nNI;q7޵Y!D~D2~xB"\̐w҅ &wQUUu]5**6G>jmh\\?zrzHHtcUɔLo:Eg*ף_dKL ,L/4Rq=.h'RN}2Mv]ۍ8P?mbո};\ԕUsXN?űu]otf,fAWj0@ڏZ~oJxtRzpR>myMʤ+^6T=dX* 9v+w;)ySN7: d;kbbbH֓}V ![롺{#)|-g.TҹW7pفmxoxWU*hh̡3ZhWR-sU,5]3舍x u'xt~Vy;Iͯ"aHmB+HX\5k֬vCAA3f ( w7k!7a{3VK{> źռ;^zvώgvLVkC5 1PIEc # ж"""A VEFa֬Yd3XڼeOW* TPr0*oXOYMcbbpJsØmcY3 3Tkzwp?b6=^ĦNjæ?g}ۨK`ү*P[a`_g|$*ڳR@˝q$h3r'3^t:%,Ql|}#I=o!׊L*Э~{/~=ˠ.!ټ t wcɞzEF“HtyiJ.⓽9|`odT/Y!z3m+Wٲ]ʼPZ%]*AB]*Jj> ` ѲW@(T?+Osf ziCccc>j$*mȣJ??W""r`߮"7 JA1hР}(R0n}^3UvWz<vBPN4 "$9wSf$Ett4111T률x.[rϢlg2;gBZѡ5+ ~-~Iݔ!$غR^|#0oqRu ∈X""5i#;ѧ{x^w+#6J*%'+O&*ׇ«_<ɹ䖛HLy=P\65]vXFiTcB=3gfͲ~j;kFsenr)}]93l۶͡zmy[e}.0~þ<&V8Ӹ|95T|ߠ[͊YቋCgW-:j*rLr2;٩ snz*zyg1syρs %q[R͖~1+[vf/j"Z~D (,.%$dX* OuzNhm: `=1JML}^zl3|r))l`6Y()"eo.߭8Kvy)=j ~7}}^;ڪzq{0VZJMɕe13mByTm_>՛xL.*׍vL*'HΌRG-ә9U`$dKyR\%f^즪W a`Z˖2W{nϒŋoZ3d}` ͕ _o"Hñ 7c;G]=h2óAþQ#/g#4i6n-]c08}4Gܹs̈UFü9pVk.PROٷ-enW~ YkeY>]"YM ..FCTTi':Xw\",>ݥݥF*Ny#]e̝=X65ٍ~>χkwN g׊3;&-v Gځ<Nn ~c"ߓ-#9'~T-x{{ӬY3˯ү_ly %9UURT\BqIOa)׹dZ[J ]{϶{ 3l[myBS|<+,(,^}ʹ&֤pKSoh_ϫRS>MN* ZcuyZ.q'PJv RlpLIS#11NjOP<]i ))nUcRw D&u3&Mbٲev+['XBmAh]pmhaߚ޽d).90OyϤ#ӝ..\Ν;Gii)NNNcXއu#"7$%%uB6` ӡc?% w62\Va:gf9,Xʼׯׁ U_uUͦxSqJǸ^vfkj޷#).$RrjG! 羧;ͪ(ٛ=#, \Bd7_"^aެOVRjILL$))d222.fۯgb!!!iӦeh?'\jTN*2:QQRff43m\ꑝI%ĿГ[_qQ4mri%0V0:ʋDR4N՛xkM J1 N 7l73z\#))`ϵfv=%$$sklZ& ?wF5{񊍍e۶m<٧,S+l6 4z7&bll, `Μ9\ť &h&Hk)#Fkܙ0i )SfJ"LBQm`WVh73b*rS 1G%e!|Sՙa`Vcf!o^_tg 'xI YsKkSxLR;;^J- Y;4upkMvp WwrȏЩ_-h憋:+/\z 'sٷ4S 60+z^LDt了hӱ '&/jcqai$IcG/2fhƍZ^d7nX=][{O]%Dp}+#cqysD6^#i@aIm¼x(䵇"R۱bc*,#h@ 뉬284fbL$Ffjgl`c&R M)5SPeA>Nro'`W ^R"!fḤ:.5ėoN! R$1 0 i# ΰVXUATZc5sLؼy3&'~qU*"A.ίd2fËM\.?C=v7U("kςX lA𧵼 }e R,xov ![J ?vClEBB?q@q?هJٷ;]EJ"OI}5瑙jBZ{}&wr8<Ж $Oo:w g38χm"2r9sU:nmo߾|g{ݑգr;LK/ fĐ65v0i{,7:)T`ܽ8tH/uY-_zRpwֆƉ6!>WӝT~9cdw ݜfy\}EUdWZγ(oSRA:"z5<ȠYLMy.ێfJRF2EI&q+뤠a&3SQ?]B5jlܸ_WE"ALA.`41XP(:tnݺq`>q@:j6Kz&6c׻Ǖ݂>ڂ">?R'-_cͤ^㸲RPPy>ߺB:cjA:G9$P p&=]]sVLD+ &~ wO %2ȃoq6~>}nFёKt;D+{}_r)bE]jC/ZDbI$*RB>&LIJ XE2e*+(-*U3YCAK\y7͊ܔrV\Ih&Oy جG҈ϊƕ^ I=W &?njt7&țmw4iӹiTajYl)ѳlv7#5^ŧ_ODjHd7O1|Ȃ+Ju:wu{w` lw \]4oAL0*YC+ˢW5l# va8RSO2h f̘"~h4 pLй7[^btq#dR +q&} TA΄Mj`E6OXPP3 ` ܧ~ UyOM=SEaǧ?huDԁ&\}7iT:˨,u\6ԀsD;fBBʲ5cm IX8Ț5kj͛sAx;#l{@6||Ԍَ_S~Kgs̩.\{]7Whj1lg1ر%ZlnTZZ)g3Pu(&Mj6I+,9S%|ɴU9.pil'(kц.\={hh4ݻY`!C(\U7N܂Ͼrx[UU㴓i(ʝpO9?qBWǿu0矷Oot AnPϾc ҒmX,V\Iˈ,6zBǪ))DT-T@,n*q*|XlՂիWcXjGRRͭ/~ r*R]XIn]+A'f}џY_gz@Y6^C```A}AAӧDZhF^ +G1mΟ?Odd$~f֝!ֵЦnzdjw6Rf*/^Ć /5P?׋}T퉟Ɖ`_g}_D&{پۋ !**?9x%** Pn KIOoă&B^uA/ Ûx\ACgA·P~k"U UY!#Վ} pa< -a#| m@M757ongz=#F`x>^E` Ǧ#q;vl+_[ٔb㟜9VLǞ> ]ծ [xp=az+#hϖ?W*Ux<жfJ-Mɭފ);hdQRgp`69VwW)jE}Q8Y@VLNT]QZi@l8Rq6uJl:~ƮO6nQQv׆Tb-.]0b B?>!|G]U+.ZGk]#࣪<e9,F NMU ZfU?CRRARus-hu[{芓2==VvL.1TYA\@s70A}bb"m:6jU[4̇[p޽m'l ax4=SvWvWڋۇ\?OaΨ IǾ 4F4B):$io~t=6VBݹk{ѽSu7 FKqZ'.NrJF.Igsvgg^NiIA-QnENwC}c^egТUnNL%̙3noXn6ZyvRqI3 Ei5;`kM|A DU6J)>݁)S%==f^}kKn}}Մin}JW~7ޚ JzsEPor&38Ba~ 0Μ/捯\~#Q};ٯbVT["&ԗfJ_+F[Y=Feذav;h~mBg(GRs e zHXv(!"r>74ܰ[ EDDl$ԬfaCnPH;h09.b.14>c,kamTeOjYl wؿ=`=X XzʙGfuGld^[=0[_pϙMּ^`1 s'EEEkO4^TT~pKGFGOb:tcϭz+Ѹ9_[,tC* z#6~®I3ҲJ>x Ԝ3.v=0_Uv|5umDn(2c8e wﰞ Vo<\., Rrʘ~ٗ(eޒ ߦ2cL/|J|R_%PVz;KTyüw}5u.Nuj xnTfviOD`VVzz-ݛO͗_~yk=PT0UEPTInh}dAAMʇr?dT/G ?^1RlE^"Z<}z6(ž""`& !!{",Ŷ˙"_Mw,** ֠?bƷھ̯pwegIIIF:Μ5R͛ꜜ\KueFZЗ$z9 !/veWf`h4N r RdT6IF1E?gJYI`2ÆeRF⧩$߉{ZViē|[q_|8}$kc_oNxuI~o@(""b`)MEcL ㎎wiv(Olh\qYZ:Ve8[]vUuS ɨT*Ə?\mFiT"A\qk9}wH j J2rv~pq_ԜZ˖ˑYd<ػ ku5J-])cڢ? fQMtsF"H/wgD6e^l`x92KRkTD5u1Ukj۵Z-˖.VNV눩}Oygr+d`2[+0w/DTV_GwjƒKFay~Jv3rZK0AfsxJ3S1z+~-M9%[/[S߈j]UPpg w,&&LHNc2a0Qd{aKE8jub&MbuYFF~:IY-XedTv Qo&uk>w1z4%p=!j9s=O+㶘P۫fJuN4:;8ywa%GO˳02ƯζB2-]~ih&3K7W??Mi6d޳2r}w5rx?:JEzo~+Ul9ίG2ٟqyWVVA&{z$&&.7ĊrdWmBğ3 SV7g4ᵎ%k`^tKll,۶m㕵 [;,0| kW(GHRUڒANKA .d,c̭^)πPDD~ Ve%?(L`7v1Usn_S-CA\5h[?vYTW1eegEEE89N+U 3{.OD"S^}!k)-՞h `}DDDu';2<'և.~$xq\!ٺm9ʁ̧;a>tZsgv(UM26{}݇ -&iu'W7r[kE@]|5^~1Qo<_Laě |YFvfK-#ؼ^*,Q_!.*4<[" /"ep^zIII_I\"'95l޼a ,Zu3oHlaFQ )){>%ufٺ`5JīVOuV &11H]4-*ocqqqpp~$}F܆TM_l?GWV^Aё;;LZ3'e,66ct0:TJlk n'66ݻw`qpbNٵg2uE7t}C#ߟE_cїx)?wnIw^Mx.W##-#2iۮt|=k vF6T wvoR+z95^~~mD*k^I@P0_ﭻM ?ΰbڝGu fmyO + nJ9-\27e]mI"Z^ك;99֞u ]Zr9֭ͣUDj#4):# e(E9d:I@YٺRpAA?L7E[1XIJJBqFay^Ek{ Ekr4S-8 x˾Sׯ%DZi4Kd!\8egS*-`d7n ͖0jۘVApǕn dr fė L8Eܛw1Њ^8*ApqUқ;`ʫw2m֝MN嶶/nK2ugr}'N]dPj>څ.aG05@9Jӗ@*xȤ>FɧZā zIo⽯c׹/9Ռ;q 6i袺..re˖'V2r&`R^,ZTw.랥Aڠ5 7|[1XINN[XYySɻFPJ9ز gsKPoWp|}do`6L tw;.X盯(nH!?L`Yv@K&F[fˋɻ˄{Ș.xX_B[׃Y3f M'gy^9ߟKXPߌ=UW[)CʰUXs:^IFr*Kek{(+s{z'|OZF@GK5μ߯=7}swQQaGஐ]WX8Ig1SŬ-p"3`LfUx:?;'N)**]pFZվ2HP}oEDn`&##B2T~SE{2dX-Z Kh֞sƒ|?1VcއcQq:M摨 .;B{Ɂ|#mW+92#+HyZrQzĄUs͵`d7gsi.=6 #N.M8+.8Sp}k.h4Ң7/s7Ao+8L izxŀ\Ǥ+wP3j ,i@1"%^~Xzf,K&u?:Ð>mT:>5}I2*'x{ i*="Nq/Yf_|Ђ'ˠOF}2 Q.Y`Kxx8o|-gyo(@ńg=wu7|[ 1X)**w~XMvUrG`HmIb$wd 'E^+ !i*/6{-|bw=֭[Y'd#mNUUe87|~B΢)=V*-\ؤ'JvhU4͙\ {˕h4p|V%61Y0PvtXR`m6~?\hwh+8{1W܅Dh|fC1azosy5fF [Kg itPZB@${ҙY+tq.\`旽p_Ŕawb(S6-T~O#:δZ!*HZ58;;Sw\5AqiU* 4 g0Frss/jxS>Ʈ)2M XiO6UCvU$+wTNǕQ^,EoS81^xNjZS5~zj0bnll,'`Ld>[iUMX`1Dّ*r*NOdSH=Eno3p-:-LRd R$j@2D[wMF xJMU|_K>#j7*&w^dR2Ֆ/8GGG1}O9 1S#i;?HFO?䮮onAbb"GVyn瓖^Lrr:a4Y8gˮ Vo(aBfRO X[`Tʈa.NaRϖPRl`6[:Eg`)ߋ?W^:#*6`4]YQX/n-mQLʳZ`8QRa!JtiNR[a1*X&DYT\n13\{3"""570bx:H+RtX,$$$0m4B P5^~^BޘRaRT(ʑI?{m.1cgez~&wIFrJ#yol-Ke칼|JmYUedђ(akyf:uh}ᖶ4 ݵzx/hh?J.~ҨEƅ^|q".eD}XGTTs#^sOrW>#fwțNS,"r#70q\iWz=cǎ廽6}{Pu1NHh* 9F̥VY EXWT]+ Sy,c(Yҹ+g`q2di&:GEIjrVqfU!. Xgh\c n吱9sR7n<[_ct_ ߞOSm{fҨEH'n 䣏>b֬YƲm6>\FYUk &hTcdގqOIUzpj҇9,gwޢ]XۨlܝL2Zf%nc~9]"CYnKekҽ seҤI}=ҡUz#+;w!A<ٌF:=3Ԣ UTQjH$&L@tt4111Tk"r%^2gSgXKvmӽruSˀo``Íw^ w&p+w }$__$+*z|΋&9h+!488/zHݥ .lg7XRSRu+cKfsjTzq;a2 |kYZkThRw8l|Rw\#P%9+5|?yw[ߚŋ.tcμdtkԪ|0/ҵxYhjmx֋vٳˑqw9^ƅtU}gQ'^~$_4{:ła|!o:DIF~÷cK/4~ 7"1118RLS=}uW 50^ᅒ?Mt8An""7bzeG-[+oȾc5Wp_A8ZdF٬KdBBkZ#N6[}DEy}F,f8JȡPrH9k )ϱ\h4̙=?:hYt$e5uW{WIIIdQ]c;,iҋy坜;:gSliw+$u/+`LlWȃ_CY7֞nj+Slvڋ%x*=1D/~9Q:u^љl. ~c~90?Ydd"JGJ*&R OhMފle70111hƪ(>k`;ҜoȾc |w==͹ grTf̥&$ `M%&|||ؽ{:)((`j|;j1@ #ړFYf Efw8 =%(%[pj%Ce)(|(vjIDATVqS-EnwoKjp>YW`Й8/}TߤI߅VwiBˮM_#mu 'LU[[S2 <\g$ ,XGpsD"ؿ'v՗vؼyLޚ5:YڶQsfZѽp7w_!w@-+eڠT`Yhƭ 3Ǫq6A41Iggj6mgK+/7dq-Ȗꍬ=IhV1I \tXtWUMp$P`1qʬS% x(0)RLW.T*& ?Bx׾i%L0决͖߯T[4][[S2;th.?Ͱ)h)YdcO;ǐ'7>lې|ccc0`saۋ[:Ң&~θmy+8qs1O3d ?|MIZT*᣷9QN:4FʘЯYV)Vn6@ai% jɨ_Sם9F*''fuewC%Z?eL:(hKVoE*E*!\).7g&6WTj:#q"M n:1`u ysyQ Bm½ <[r?ܯѶƈlJ}|8%RLr?o<҇ #:mx,[B_2R$\Փp}c8~/.mO ..aZ%˖>ZA>t(#%x#=K(Q H p&Tlr9x PQYw+P h!\UNfANϧr4t:2i/ObܒP.Y,pL6/9wK54ISVP;DTH~_2aݯ:5%&MbP;)<:nt >] s ='ajZv^.uF3 dSiQЯ_."wU)G#Ck0[`_ALcn\.G+w>T 3By_4i˖-s]Q2ӵ|h ۘ0N^R5Hݮ ̌gvo4YTDA Vop4 3#~-PalMJez=FYkj/QTNњ svg%ߨ[[bgJ۔xNګs\.RRw)`,]ys HLLD),#ˑoRׁ2Q QCUsdHݮ:I@/Ź3J̔> =wGZU9$ϟ[tfkypM3g'sj9:=[e9m'V +^Ajj*aaa۷nv?u3<.C=jKXKK˴]0U ή:kRmX|OT4u6"QN9NW_I?%"ժmjHN9M9u,O' E<5%ɫ?ct7j,ZkwmJ&`TTbzދIB΋^,-l^JL_޽>GŊ\Fmb_3?3Rޖ_w uE7`& 66ѽc FK-X&2!zΥZ8~^5Ppc],Yu~z=#F`K#OԣU!*zLEո*Oرc1ҸyfL&<(S!2zZRw~24dOwHU\Bp&qa֏h٪d'έ|K;W1̬}e9>>ށ?qW}|(f7 0SMǞ-kYv"*Jf %zNi1!Ocb cw}_LW/+e޶yg8갱ڼfn?+{MA}y$_2Yk(D.tRU2äW4*J*iTZRAk44BQI$<g%3fȻGn]m-l);~&i1EQ@ E:Gw,X1k=}}~_bFY̎7<^C[<øx{{P(D(JN:u* z^ہGc>; X 3j2)6#Oy7]iWc{fq ϰVXMefwJ], A II\15moW%̾EoU1}#Ѐ\ajW9MNnlwKhP%J~0!MnC EWp a{ 1 FEs"RUlh).*}~aN$qWe@pKCrr1bʬ|ky¦MH\Hr+jZMII j+Vp]Gr#)](3R{+QPPܹs!N4%ו`iW}@Z\nEULubN!^M{Y;w=`S2}+^O'mKr^ /<5 PFf&(rݕ^EK QΓ[O"k 0Cۙl/*ʘʞ7߬\UU,OϞM/xKlbbG"͋,إձcOPl2\^Ɓ݇XoLx6z7'WDfҿb >KTDi",$ٌ$Zuls^`.d,f￟VفFd cOvԀmxS[=c-*4{ۡxcv (o*RhoL߈bAjtp+%%kyϷFo¸8JD8k` 3#Hq+#N22Yf.&Ѫ'fX|V=KŌ3d2ʡ jBO"|17y;y<=陙;v{f_ж!{ǒ ]:P`j2}Rv9-WVg8eNbEEh܉Mg%<޼7..2ڨiOv2cù;nJRKXzVZy0k,Tkxފ1Ɋ9ˊ؆MWM  zp1yq:,ǭbCB<ؾNJzz::)'"|ERIJt5ڙ5 q䎻VTӱlRZtsf9C½H>OpXVT|.f~j2 : o_x==]xc"NЦ=t6HdDe2rv Xv0iB&1w&>>_wYtpYL.H%XW}^7yJ%x$$$O]UR}DE0Bx9<.w |@#wB&M?gSۉ$''W#Ëv^;v\=XrEG:MvŴ ykA(@ h.g,jljqMR2},f-w̛7քjR^}/ Xl=ġ7-((`Y(5NFz2l!!89$s+y._ V n CV"\K+5>HTb&6?硂Fɨ< kĊk'qŮ*t[ю:H(`N3 h{`KFeKQ]Bb^b1%@RX7~& id(v{ <|4Thѫ'-z{Jr@-8͚/Xj ThQU\le1_̙)MZJ!MLy9ed{q eXr%"9v$[F#89)h4ᬪR}Q茖$׭mGGފl6ڽ-Vzs%-TKDБ/Pnl:NӺu$2DZ:(8RZT\jc.#q  c?hU ht~HOaX̷aӧ75u:?3SL!&&WWWؓ;v2JVoe[w7\ȄȆzZ˶ tCp$swӣGZ||<0 >uA =? #ُfb<[V)gp[VyJ7tc1=y(%i4ىh55b_*;h קع'".-z Yk%#.#qpژ8HpVPQ;VX@;9)HLLDrWdakz Њ#BQ9:ƋMjg$}c[1遤f]hګsyšL{?cU2T-l z yzD:KŌt&Z}+ty3 J+Q9ݙN!>=Cʅrdq )))x$+CYqq`[&%9gU * P+-x~M7/!_uˎPUԋ}}tuB_NDEx r&Ϸf;vع]"J6EÃR9Nbf=c?ՏZBB> WZx@rgRN>g%& wj՛OgYi]Dk.iX pYWu9f_KXdOS_DD.Pr^w߳ip$y pG[(]+?>)))(Tc& (*,gאp~ܗFzJ}>S/pp6F! 4WNΜ#8eJ9%u BqqR$rS|;ߥUBr&U"{SM 8z>xl}/@30wP-؎-٘x`½f)**B)qBOH3)Ȥ\ݦ7oBMW(t9,Ŝ:,o~cOX; aF@$q $r8{D@$: aw?)dǎ/qqqJm@,9=waq#* o/_β,pەD/(Q sCKMQ\69Qt@-C'A\P`)`N7a8n@S gᙹ0&$$ n|Eq1)Rh15=Cq:3nt}[,_:X<+guhZUN>&ʘ}gxz-} BQ(H?TPc|Yd1EEE%(Oo=E c.S>(/>sB&kAoˏ08(+32GeY_ӼF3R8|"/\ҥ+*3r mIvAxx:Fl-֚~vlMNJݜ9]D)l,jGzPd0/^ٞm0QKC"R-|e+Պ#AwO>m ojW;jnis5Fɓ's𧵬KU쓂*>mՃIe<<'dǎ'`_BAAڶQRm)Ag!x#SZxfmڿq5:qd_{JYL2Lz,ڐqvD_}Gu6N""gK /I-A9 SԂԁoe PtI+ڐkY-Q~8QUBs݋URcdN"̲k& Hk^kAVJ g l,wK~]Ѹس{3߿ ?tU'B5QPPb_bH}tP&Һwۥ1cc;)Fԯm3aގ:DIbptjD.N )Z28p*{Oq|;[Wb<z7To6oUWVKYJ%EF3F &( HX}Mr'xݺu0YdOS_|2%2\bwdzãd /-owGulreWLuRɎ;.꿄yStI9KV(wdK"z-|l?jokSF,yo;#uǺWvn9CvN19<1'utүhQOL`|lG+Z (RURQf 7s?Ʌ3y k"T'#1  ծ⛼& *oP@d &ZTcm0#*.}wD7q)6nO'׸}޼yv𨳘R]hre̅~>ǎ;vj=X^u]OY ߥU}asO⑷i`UuWܳ _ '8{CIY636iː ^G@g_DYj1ùW#+AERiX/YqWWwq$ "d%K-IPz+0*\2,& :A7Nͣ|Lk`SnhUPJ[K]qjht:V,[ƞֱM~O%j|"##y衇nk;v9:gϢhѵ'%JHy5X0ɋ.asKܻߢyz+a)NTI+$X@㢡ߺ;qmSl*HM%ChxD\.}mQ7k pgU_b%$$K9*ȿTv~?NLGzք@GFs s?C36Zψ^r ~Ntaxdx;JaKذ׷X*2mroγkЛwV\ײL>oIed5@IٜaՕ39;\[ɷ;O)`XfcqE?[|I9RU@´,&mT:V*'2j(F=Aʛ Wu'!!anv#M7رcmfcʕl{_SU6ηT0lNr9SBM~2@֯ 'DZ _+% i,>Amɕ5׊0WKUT2ئkKIb"-V$lu' c;=WJ^/\111#S4”\!F[q*a_\$2F?!'d\NqЖ2$*kTrF ,^7L#n^&5_vFr9~g23XwtÑ2wV*OgY/yIOgo OuOMLC\H͡HLD[ _]\2@TcZWUXl6OGC2o^|Ж^z}K ^:11ͧWEBVaa;vn mhGfPm(w_͐Zh[nST`ܹH[1i|rJ"|T}o]Z4JJMB~; |gL7Ny!"oz5}9!=C ` /)nJI3x_olEn'=M]ӆL1/j2koks1=g~B v@j]<#R7,CӱXlذ_~ƈ#Oٷoyyyff3˖-I޴tsյ[:tK&ӫ. -(צ^͝aWlx\՜QD%Q] y%Q9RY[_JAbYhtr[تo;˚OvWi1|o\bbbݖB VP2!q}ٱnicǎ{mhdر7E>@9$-Bo\[INN'4 >\cOh]j-\z! gp|r+)ߟ5(j֙IߘDfSZHT% 6bQbG͒jApZ@KAnߛ X_}~L&u߅"%>S GӔrlRx;cd5(K{䌚ӟ_?Jǔ D}_XVE@7DҺ?Ԃh4t&͓](oY?q8VMd۾/|A}QAE6AVW$Wǡlqg҈aȥu J"w@PW &+e %$0L:3fgHLL$%%Bb[m|B}ymۤswo}I)DaszuV6d2MC+,-fƺ HH_zeq磏h"$IeqA0m!h!è'd);gZ"4p)6WVZ8Ĭhٛq3gvvoaVol6'O T?,-NU6Eu,Zt[zM0m۶k^hNFB=Ɨ6Q8:??0%`5RɔXOYJ rܜLYul6 ~>-$ ʳ#X8JhxG>; Fl&(7|;%j ڒǎCp0'qF5۬6}f1}ڳd2BBB()7[Z\ͣ2 gsL{G܏B!!v@8 \ "қ+7c(+W^yuWߕv7PI(0$=Hr^-ܕ%2U2"}((7t<=zudH2~9 |Uux}) "yBn1f0wT[ox*:E(tHфT£>,L"&{5Pe`4j^KJgwIR~{ʾEEE J"GuF6,k&ި奜^K;GW4;v[ˀo¥Q7 v?\f/^Luo:Ugm9Z Y3΢*Um]KPjf9n?pL#G   (pEĤva #x005*쬠_ǧkVK.=S3 H O{ٗ)\k5Lkk@Kz!a0^\$~Ai3#(rb֬Y@SNzi#͹VJ`ȵD6vWDYTkӔLN_';xM|t/\PVOcE<>:ɣ:2Ga TEۊ)E?.|DZ>E1t YEj%\a#ƒDojy˓4b)f#IysGеe nӖ*D3|py;A=U'|XWU*׌8s5jM<Ձ2隮]䴮rFtgi5k4 M/XEIF|kK0>رcjf=3)A?WOEt$-Ɠe|bK 45k0}tV ^o"kU`BK/$UfT\`;ǧ>5a5Z65Y(4D`4flB{F~+aOfkQTP,p֥:&~/=њ}o)-pq36Sett #AB75lbӴ烳OwK2u1mЕ$#Gd1ٸW9_.Z TZ0}~zzwu7+vz>)aγ(YI5mG26:.%A^8] ))-'5=#.ڿxDp˵l;f^ "= W\ Ke9HTBBH/wW|T-6Ҳc7-5s@@gwk ]r_x9 h jŴ X-ަsmVܷw˲X>a-O.lO Ļ8ymoǎ`$>>9JɣGpY[(}UWnOh4曼K$$$qF?I$99H@ )@!ESh"i˳Ԣ >N,Q-nb!=a){^ߨ@^ QL:$* - Gw<uhIyٍk.Cg3R!b5cb01ۊ>Ɋ1ۆK^+t5[_$gN=ɜޝL 2.+qpVƿ?f5<3*{'_Q,sbrqnĒW=rݛRuG:rG WHv"e%zO[>5Rdb%zI䲺x{77|k T{}tZV0G_FΈ~PDN)n-|پ?lI oă_Ő!CT]A -oIRNsFvرS`$!!@Z/eO1%F}[SlCc EjTm`X2#FT[J2p֊{ߎjPoM$t8?Lׯ{"u2ǁ,5QB#H|8}?XްE1!K ޛKOYL;քO"ܸ<DǬ7QfIfqhK(յR}Z٧Lm}:EN|䛛fT4 /93vHWa䥗3ll\F~n96fu+O?k~>Ϯ6O&-z=8r>g1%*,v?BAdfT`(/'BݔXSE{/zRQ.jz cn.;Gڵps9˚\*(,~Iqt UZ㊏jufyV\Sz~Kq+M~$ٌʚ&z~0" $B!w^<TmմeW.bmoǎ`$11Fa\w1N:Nqk B0bBbzPmK>uz 6t:EEE> ?Y !-,T\=F VU.FJ}߫lQ־QBNn$K}kg_ !TQD:p+...7&S3p@d26l /y e4ފJy&,$2N}AU% ?̐Z#lՎbcw,` .o#c&t`Y!$b-˃ΠL@'dd<) 7?vU/LGxYcto`Z.Qf4Nj}!l~JXwt烿v3y3HH7?/y57`]Xէg$;]֮ȯhMS<3gvT?vQ1w3/O3 K&?gQTb&ݨ然]ŤLhvbCXʭ}'STQ$4P708:iA|z]AT1ש :Ҟc O<]֢%$wD5=ɑ~GQuB"F뤽}Bll,ϾO |Nm@ϻ::;2n^,dsOm6/^\c9%kbp}V{%=CU ΞȡSL=(cZ샳se?]qq)))YL<ͦ=/Z|Mo_V_+X&߷+fhDò:?y-OJkB&DNe7S chRγż 'Տ0}t/_~~bccի-J+ppvU lי).q){2qtIڅ1p"ۄʩ20)+)'#']`Cc/<+O Z!(0O?Gddݲ+^̛7δi)x1u3_ Ku;K~U`Ùݯ<xS10[m*|l]kwp >Sf.YD@W?OZRtl`$Sy͸DMw,kmJ{ xLڹ{gḛފ Ɠ$~|՗aM,ۈxձ=bbg#'˪c"k>}ܴ};v{¡UH!Xs@ ӥu TW`{&uHyuI-81/2bTA+M-Ay*H.KWZ\[ {^tCt]ojp;=7I[VfPt}Ij@ >m}}!}Z?ƏmWJ\$''s"bg.yClNl=9"æ~ϪI`ut:IHHXJAn9VS3і1c$# 1h-}۷^=g gȶWƳpp4лg7/ѡl ' tެ:ѭCHLϣK/!o?waҎijt4ws酂rZژx:* 9p eI>pƲܮ}:67Z6PȊx>/{PKLܱP'\]]wD頶&I[{GYs TGyXx)l_cǎpПбy&`$@T-'BilKq-_Kසg *Hbɳ{-'q{{轤,HԹ&w2sǙLd oQp Y,FxlՇkK BT+F􋳘HAj Z#߼:!shTfX<ޓYg2tP43wU`W,ed b;3s{D>|eNBqAUUn8?Jhx@d2ke|A&tѽ_~zd AW+_^w^Tc{uk[6K+`WLsWZ 16ʧN :6tRVTeMJJ A15nܟS0 fvtGU+N.-ؔ~;wlٟ|%=%Q07=U8"\)49-e_I.8^R/U]Q 6 ұ/q7m_cǎƲl&5G>KN rP_̊-pQG*UkS3ۯԫ0癹8߫ńM>|m؎뱝0@[,P'H4js-qK)kJ8!:JTnBQbқy%y$ JKimЩS'bbbeȐ!7O Wc6B`X_nFxCrūKJo^{;3q s]53,5_HjOΥ4>oZLf^c !W0˗(jb+^bРa'#q}z7L4'6(Y׹핿f]%bNUyQFukvmOq5݅u(QTTs-H\,m>ڌ`˵ޫr/AaTuBH"C|-ܾ`ǎ;=XL Mz-TfLΘ1c3cXb9}=t}1 fk:bm¯@M¹E^Jʒ|n}Q8)K)i`,O> |y,0GL' |f/~}u84^_Gf=Uc&>8?IvA9ޮMe敒{^;k{zںg tuYF!ARhM uFt& +TɤXVh4j]+ !ַ" yMnMK)YЮQ*;D2رc0seY(CU;b;R6 ىGNM&p\$چmD7UC*hcdmOírp0ڒSDݭ/TΔ-A.}(!B”F V-& 3x̫n%<6{ U$VaYe#pSn,ӋnNl=O :Bq~W~}O W?;HGSWj] PR\O@e/ eBfyc3chҜ8A+&ꈴ*7h_7g Ύf{*%ZԎwAQLޏ='ϳ9S3ˢT[)DT"wZ.S.RѽLv};v {hX8o̘hC 84rQhڕ Z=@'~<azOUtu<Ǟ؄@љ<"&kg#Qu^`a lY{q0~ O@VZ6CHo 8)֬&w܍&L`С̟?ŏ,A$w(Am|qwA]9K+$X&_ % F5XLVx{7f-b 'W[/:uء=k-Tw_G(@v@ytڮF$0Л!s}:ꘑC{)~F(l @*U0~}>9XB*ӧm+YQSoPn4j2 6111nͳ0CL\]AgՏ|Ң_KL^^zmȎ;_bL0:m ?af'п^ͷ$&&ֵ)k1L[:Aj" Ū(&޲b }S;6r(t1>58pi9JnUB|3ޥףhx79~8:],o [̜N1{=vk\Jt~<" i`r '?iz͓ީ;gГH[Bɉ"EFlV6 cE}¡'qɓy/bkѵlt@ۇ:#7>x3ίQB>XkV9l6V\IthRM<1]?6-SLSkg-8rm]̌LVm~iGo3mc+Oܛ+H@$30;B1g^j`;"xgS[#MxmB2s+A#<3o<͸wG1t Ե\6v%s>wuBP֌ ӾWq 3!8اٞ;8ؗ:''܇aY8KQup(/pW#bm=wmv.[.d瑙tdaj_kf~fΜX*8|]Ϸhf7[OO`i`࣓:mWUX8-z ČsB## HW{h`4_FVa|7lSUuq-r&Ɏ;ۈR>ԃ3) E8#k)ú(m>Zy0oMhhė-ZL:ش7>pD>>[ۍSw1(bJu/ov w#vh\OsO$l+#F`Ĉ[V*&/cw?<ن JDVVޱCYH,"{n-uS ro9E̟?_~cr,uj41%F\\tl!& ~VUW_gvFRų ̛Hsh0ꐹUiљY"nvŮbx|1q lf+;&o`B=Z13nJ/ ŗc9cEVDО.AS9޽b ?OI'!CmқI&k}L}q%IMM|Yzslo5ŗJQqZW7$(»V=SZ7bHٙyx6\#QZm x1PC~A ;~YضNyPGшBEt{A$Hրf?C,=O0>->$bkͯ'2k/2mڴ(Nٳ6x)JeZT:gֳb:=.A]~*&fلOh0."*o]eo;qRTTʹv;vn/e)Ub0YJM3,3pk_ ^F TJ'} Fit(wf1ydL&So BBB(Kt/s#jQmLN{R]ζGǬmX+Ll}h]ݛ@`P`N1=yO "s B'EHLZk]w: &iz漴WfMʼn:sh =zoTubry~]*tj#>0c59|>97٘'qLˬYN+ߥ&MIY&}XC-y%}b;l2izf݈U8$,o'{W+gǎ;emL&cĈ|۷:xy{sJtf&nwfυB.hX+b!5ğHghTYS=Y;7co2ճX] Ǝŋx fslXhѿʬww;/:w;Nde1i[fn]KdqRH,IalF(,رs{aV܀fc#q`㢔xvXN5qll,q{AbǓ@? /eeo-npSJJ w!Hu|ίS$ONJ+>}cdev#WPS.!eSWdwxRJ~*'%jr8|g>X7+?詋]ZO~il{?*,[Ɲg9}!g*c;G0}xof#!w7X?ɅLVBܕ"Oc@+_Z( "3]Bjv. >>k `䉏£e$-b„  H;2rJ+ߥ?0ãRAç/2'=ZSPոߑK AQу3sEEE4 !âm:,9 $;v^؃U;7Ǐ nt۸ê]4h. 2RS)O-!*fHtR!q?sz!Yl,6:dsz!6#70!|gOmfQXXGDQ7?QDKcլ5/#qiz*.RO%8=~?dw)Og%\d]q>~)aO=lNKV*⳷y{7WzM$FNxȶݹtҕj|@jj vdT6 K\*A R ^'څ1{[ đ3ۓŃ"_C][r1:Ox3_[V89>z? }c:̯cg>kwdXf3mEpZ+8v S#֩0=.&sk3kf9-ӓAJ:)Յ('ɽ>|8,4-xSК]i2>yVyͺb K򟰔Y ٱc.d Zn()%a:thrL~O˒qEz'2"Q˱%URoϣtS$ҺUk]pqq!$$n11 ~Yh%qqqxGЪE_x_Z iօ|6K\ ..(4e"EEtH!FWV wwb!_VWKK}Ԝ$:ȑ#Yh3gofhT=[x-ؓԂ2֬R-&ߧãC^HZn=Y̦O?|=;좮8'p?-jT+梠g[xdTG&1-9SRd.X L6%f!ɘ1mE7L Ġ]qZ8Tr(p(dt%|֕'jqEvyɎ;'`5̛7ؠ e/Dw1||&s粼 ƥw_VTW'bFmq)((`3sy$~v3Q2qľ0sz16<@ΩL$Bج6>s!o5^Bh[Urb'~{mz րLQ/ԃ][qu,vM†?qέI Gf޼׳h<>ndk{O~ޱбiyL:_rMeU=ի,;;rWl\ fì3A w'Z-Ȧ7YHLW:8>m[ѦEZ.p4"ۏbA)SMkVn2[էg$ZbTT8)+g9Ue*͛GI,}DKy|"F\0?JOb| g:{-1X"qOI"˪Gش-V΢;vno+Tm};.ᥗ^jrFÂyl왌XXc.1 4՘+|2#bՍσQ,~ye޼ynW"IށQxHY~ CB!HQpDm,:32'9獥, l_ul~w䪛H=OqS6RibkpɎG۷]{E$Rb2V m?|Ntt=\kÑgٲ%^a[p """ޯdulk,HİΑ߷ӧ|+VbK,j>d($"zxו9E|Vl6 W#bbbxu:UG\meڒ%xt&/#~HNi9 8CƴiyVYt:/]NM^aK?IHH{fwaKA2nu{>Lʜ<Ѥ>3Hvw`V\!>>k{ui>/F],]k711l>_c J.jSR8[_jdǎv%;WHHHeXӯ^W֒76˵DK:#:;}1@M})>wrzOIuO&xԞl6Ifܗ QȝW|Zjh{oWF-~VM-)=Vhº !n7CE=L,[V`ݼ 7} j?7}m=|ywhJ 6ܶGKܸsStܽ #zݍۜ4wɓު0-L|M]j.]ڹ-7=WAAs&CDJkB"ۡfμSVbU'HHH]-Ka jSRRtP7}9+ױb9ǫړlBgZI~@c)lXVf3FٌbֈU+$&&շٮ{ icR%Z2ԷݖSx8-3!TFGMɾ^ݛ|\־g1nr6 NpVx'5w>>?a0Akv"V塚NH*ђO_X?,ѥ7Կb bgp%{|\ 8Ytw-"/5_N­eŹý$4 w~hPj,4b)}LL9)ٰp-=0qw77;8hKج6lVR=YsIp3}=Pll,45hZ+s>b}&%vXwb%+ 7ǠA38v~%P٣;p:~~|$Qd3___֭[GЦW<2%Kc0~!N㑒y4<Ċf]j 8:yXdXu6 s*5Ɏfj1 8::RDD"* R`@zbYs"$4 vuvBڔt:ٱc^>^uȎqHrN8Wn}2DBP&ƽS=P8˚|\RRRӢ6~LF la\ڐ׈)8',5"ɭ_CHHү|聑7c69/dSSLTK|Y @#BJ/2|kO>y{MRRX[~i TkfsңC4éiA\`mz;RTTR|v;"q߿bi*VQl,V> S8RCSeY"'P7}\LxN"Yh8;uzZI>пɎƤ*P58::b\T*)++CШ ̛7e+#oh|DDH/ J/䑿/s-EФHZr,t7WY/!mlp4;I}_Nj@ HȠ+(=VS~3uR]c21=eiٵ`]ݫq#!R#SV/zJ.s>C)h+4isν\.gS%[zlXYP$d=Q& 3A~n g'3Njaa1..UU;} -#ӵAU=]ٸq=XEmqE&=oNi҂AQ*8+JLzRE.泴91-}2`]y'}ƓVŃ@|kika>.^keL&h4fMZ(J]]IDATH$H /aV\A`*!qk@ W&MEUFf3sqӚ;1Iw7Gܻ~pMz=2f؛`њ81k3EX|\r>-N@Pah~%ʖV dIz ʮK>~x7G7g- 7ɽ9JB+ԋvCSWֲ"b?τ j\I;w.+V,'?:VP$:^e?q>~7=N,kÊ~@456"{̣,(:`;- g`lwf< _|J/􅤋\P-`;/!&)6:!xiTU$$$HJJʕ,Fbː!C˛h4*&͓+ӴW7W 9o0l~4*H%3^ ^\݆>!x{{3yJ-r_YP9%6i-',4,bi|/@c1SduQH$ $=Z+Pl|!!M[WY{h3=7NFsp v{;½~ۛ`3[9:-;ۦv^ڤ@ma9J5=Aԣz+# MΞ4yrFoAPfȶ$cjht'w'؟k,V$&|F X^@c1lFd2VVfC,c4l`؃U;Wa$Tͤ\'11MrQAC=yεTU Q#,8$,g~ ̋F-\7RV*6ZjW`taB|a s^e5Fk mF9' 6Dx|tBSZCF T^=]#׳x aR>M`{:Vco4ng!ɰ4ɸ\Mnxd33IjzqrUcRt~GK-F3G2>AAR>Exc\/'dC]0jCYՇ &ܰOYl5森ElpH6ߠo^YExPF̥<~ZmwB#b >Ajr 3xOp+ZWfX5g>3nd .3qWJ ޚFt@o26O`7o>ʑ#'y{8kyg8lt?Ő!Cg.n\d})*7>l?89y0 #(ZG,wS(67JZX ;uk~9(VM:vvBz=rVP(h4" o*{jJ)٬`05vAbҒ,9>O)a7F|x?{Twvt${Qh@K)K@A*q -SeBQY"dGA[G4G-2ڒi7o_Asnrs3-=U.V HR2331H$gggkXgV˨Qxn C0=<XT 6\}wmXfcƔ)S,>ٳge9xhJ1 F4E&槅R8 ջ lK?ׯWϤ߳[, T1i,>7EH'%::=1}wBtȀ?vz0m4t\Y⊳X~T lDBB޾{,Kc#Ŕ̡ҍ Xp͆+uB!2 \Nvv6P۷o#ɐdVcLa*BɶG]gB4X.du~&x B-WGly_[\_Ѱt2[c=$O̲-u`{X?wyydȶgVȸxՆ&];( ^t/O^R.~g?Αs# _B_# :Nƙd$OIQ\)@W|HR,3gVAW*ܼyCcykF@Tnjӂ7>l@\ƌ[HO@ߞwgw[/f+tz?3Eqq1 VaMY|u)u7Iyg摛BVVӦNv**db /{W'W'P̝?ן;UPjԳe>h먊BĠ+% /|OC6\!uRX<&&ykuT-]3ޤfuY'IyMk32wT\ū}vrZL̚y~Xld'1TK 4ZD&ʑK8:SG?8ʗƑh׊I_=KX}'V_y/fg oI|7Z'̧r7bcc+=hiԨk1)NRUԈH"@c+G&כihѝZHĴ^B&{Y!㩡XZXT^Diʂ #am[4#DG~q\yEJ:#7ٳga98LP}EYy '1`daEZ0۴b`#Ex>N?n'DVeUK+W S>XR9BRJB Jnn.:Zp^^D"T*JU%::U6!XPHGIkP'~Ms,XP'cŻo;xmJo^i94n#ٕ5:L.l^'..C rf0sQZIiCA$9F8|?R^=yO-hֹ9 Z"\wqE־oޥ>4kP@(NmOPx#z>ח7-Qvj.DUkyNVV3f˓g>K u#qk[;#o`^6WOQJ)7@-2&5\tC qI:tSkGsڝB4dS r7ؘ2*yIt=ʾ:OqR.%^緥\skfcq2=ەggF=Ơ0۽qqq@yêUhب! [8@ $wH$( 59Ёs3rHlT6or5 ֟+KR)F2ZjhXl)o[y_0<{3 W& Ud\KdNJeHи <6uK"I3iDXCfzOb/קh)rbpf~am\AT&0Bz > w=00tU@1l?zka-鉉@DNGn [$OZj5fb̙w6J~#! qB@A;h( @.XLګ7\+VcB밃{jEȜ )YEH6J5Ld"B9~;_= 00JU1i#M⡋l=R;9eJle":@}~Vgq$$$PZPF7:;tnعT^jň"&~VU!1a+|2=)e4"-bA}>BCԭE mȆ53&2iZoh4bbbL JS*ts!?šҶE3wE"fMocthCzCɂ U9F999JoN&x*(?~<˶AP"RW/O&dy(Z&rr#WѱjŊ+jZ[qqq$&&WwBwN^/nL,A3'Nr`` 2q'c5jX1;Э[9WGdd$_\BAx/'+h:0ɸJTqϼJ"VJ;{AU/)*S_'c uG8Zph!l\$+ԡ/cЕ DrbJT%5+DX `ОoZM˶=\axxQRzyć={6K.V.%ۋέQ"+ϧD%/[ox>[;3)&>n$Mz:<նl苃´_^cWoUb`_+5'..#4豗c(Tqg]HRIN%9XXbRXZRZ|)E-TH4D\sDAQ\V|*cF3axMVE]u$!|t#É8u &pF7 K$Px6kXt?{Q !C"MFj'a&RFmJ8(mm{~r z|\k߂ \PeTNk>x+'/!wT fJb4r [~a k}v*mv>VD(rh4ԩStVDWl#a"ʼnqG[Ƕw6QwlKf/c+愻_%ZEŤt+L"S{GVS-NV?UAiH_vyDFFrl%ҵMl-n䑧+AphnNG?UȄ5_,H%QVXoj֐֔S)ͱ(U+pV vV n|rk l'K/gDEE[vNNz ms[(Y4~k,.!+VNe]SO<45,d9ﳮ^z3´U:N#V||w<2m4rs%ݤ=Z~zDŽ"!-u`#bsɼVʸʏ#q)-[URMpm 7HLPxݕЕX0 2yk{fwȏ߼Oàr/(S8qLǑ| DĹ) 2WᒕŌ3b҄q> ]GE}:w0PHf8oe|K[9vbr(|Ii)8ͪД0~\ WY-_.[MRMwXBڅpW JIڱj4j؈5k`4}c^H++&0UGAEiǯP@_{)3yJքs4ƒi!NHd76F*Ga58~>Z?LHpx*R#N?Fvzo0ż;8@hHV-Z5 eߦMx%EhF\F 4ѝ?cw3i$-[VOZ>`rC2,0"3) WOQE\LDe~;sGxP(O4nRZDWW~eyO\^ő؉e q ג&M jo,b%|ЗDub%BhVXol%˗bZ'y-YLii}ߍWq[7VjðQab2&JV1D|?|CbL#Ka{>QǮl4 yj=GYe˖{c;G>Iajntŭ/as0 СCILLMFHmG#2Jh O~:';^@ @ `Ľ-3lJK`ĥ_z-i7y>AFͧq܄lcqx,-{F}~/%% tlk|R'˕!gFGGoQ!z+W'uuTfϡc4aݢŵ2T+P*_ȶ{U iռ,tCvVYxEZ;oÀE}#ڟvnļG^ݾI+ ݿQ_xr9&c"rv"2/h ^pk0+x!oR~gVdXjЬXb忂X5ZVQGՒ4%66Ѭۉ몧B5-b!O!Tqĉ.|LcCtt4~%|j9>nMŸ?ɮ^_rhZ L_\V[߅=ۚ׻YP{)*}֦(;O0M6QRRR$**+.3y?L^Zy6|SfwPfKuWWROw? ''L̡e\=ˠO奁ػ,mc /#(HBv(e8׾ /tŘ8~i_}59AUQ$.ͫ|/Y35M ?Z|Rޟ̬,N}vZT[AZF&P,eՂ/m\"_~k q?v6 nlڍɯLJpENoᰉx;'Q/OؙxeG7T+?ж+OܴiHpT4AD|qF˜yMT}%z?8s|ϻaͭLø[ۅx4+VXVcbcciXLDҧ!;w|YYY:}.+Zģz?sS 0Ǘu_5ލK&_] /ZnMȶ֟u>F d`0 dq0s~cWylk%ba럯Uju;4YQvbqϕ2 F՜^r)ѷ21xzyYZf֬Y$ikhLwW;ja}9#rO4}yflOLOĠ}r;ysZģz?JsX`?;)Ey԰Ȑi̝;b}TE7;m4`0*9@|VovĩjΟ$R,zŧ#2&"_o]"DjVy-Sd䱦\|g܊+V*&?EΛ>{ltS2iObj18ʄϚ9{llhlRu|Fu yar^H?&t3m<.s7X-BaW$<3"gl]3O5 iļcGB@ Y&09sahd2… 9rt:t:9rϳӯ0{?8E9p/dx B\AwF"@D.{#.؇//2XT{6 )+|q]%us+єspvvY39faE`7xh{EŨE>qÞ|l1%smAQ[v F#".dr.;2=iNƾ[䕕0/Mz.ޞ})-ʹB&gW;3u:˜z⢢71-Ppa@{Q :y5}67Cuh>؊+V*d:[ 5 zԨQ݈rT Oʵ(4,%^޽{mE޽;w.Y 2ZvCnԮK-((-+]GQĉqqơu׌gX䋐^o=/- T{ER1vYr^pIdLի }ɃB}2Z55b:u۳f"LMY,es0sP*mS-C&ZLs1> \M? ;ʬe=7 r)Uh8OjODp(~^8[PdN^>ς>g℉?iӦUٳYt)6*|ۣ9nQJ˿;2 rHa5L_gn*X(b7x)מ;Qi]gߛ9b-*n! zi׋Yr ܺPJse#B%LJ6Xb忎X5jˇUI@HgLL UTu޿8@G2t4ы{!{qL, ,0PA_'{k0 oG=H uYl;IsD^MiϪU[\e4*9s&ܹqH8xsH`` ]"#[t֭R᭫Wݪ exTG"l|c HlW4։# x};uuPIhsQJ1O<ˤ@ZJ:? 5;Uaa? OwWҚ?)iۻ*Ǘ-#ɎOYn3J+. axzTz'p3=?qH!** @h$::iSş7VUivrvr \ښ̂\e1 hݹF* [3[yZGI! gBֈp7~ 5*iMEٜIfOUgsk4QGt$fs"##ILLUIի:bŊjGE+SUx\85ޡŵg:KES6xpN:B Ր}%1+yׯ_1b=Z*GayѰCs8OP疊b#SJe:JnryJC_^WHj-.ʱCx2'Osw0ͳ,~q>$C~7IJZlPzOݵ+__hj0+uyO7f޽̟?I&{K <:G.v*{7׳nzMD,2缩oG% N:1diuNPv"{Y9y_&4}0H̎`+UMDPX+^\FaNCt16>MS7owE/puN1I%Y3F4qWbŊVcj5l gE3CV1!Qoc8>Nl2޲ OGG[%ё,f7-gwVXo*dYAufxo>]bb"-D.Q"gjE)wL߯Cbb"0DDĚ(9T4*'QIg]r#Ql"Qa2e4O?f)Nyu-k:5e(VFFr֞[dFȽ_CID8OWb+Oĸ<61Zt#}FZzf8Uܺ]bt~a! hFKs2i<%3>ZB.gٛZ^:,f[\6| r\G*RRxq+|CpݍXF2ę睤8MQU#sAc)EeŊ+Vƪ DFF;Royrrr֓@hCYYYJ믿o߾ۉA[ϵ@"Wh8̵wvRr3slzPx*Rp6Oݔ6y;Pdc2u hӤ hۄWL^8!qTrj lDk6sא؊1\مΦ{*-tBj5ƪ 7()բ8T ի;WȂ"_b_TMYMP΃{._Q7k]id2fϞMgA !Fe7 ˌzB/DQP[DOGȩ~fٚfZMYNRz1qvv͛+Ώ#%>lJSy֭fW3P XdO"7Qr2bEҴ\w,琵A%ŋIA\6GFA\LәQpmߥ;껅JJ˜s k@xneQw\=wTBdVFVZL/os?~Wy\$sҶ2)9yy8ՓKvn.bay7R[LD[Q^4?;J;|=i£-Z9mz6hD]u0#:[d\~NzML{Ywx\wOXo?Veø\Iѵ{^$5F϶s\fKӗ ,Y(~kbmƁ+Vw& ˙0vۉrI:䓃>aᵁgכZv-끼YSh4K\\I2'd֛ZI``` o+Vm'pF:G= "!ch^Ʃ}nEZ" `\EMl?62$ܹ_oFdvnc@њuўIl<{Gi MXӟ1l_'7'?I K% 5Z!y6`{4mF-IIf^KJF\\Fni ?p89y,۴wmƞ~Dz5{6%hMY)9E$I׼^)Q=0v;W+c g(XTUwӷ#|s5/TlA7)&+ՍeҕMplpxLSN)ce3 0o//RJn3Wa^^o2"Q,ʨSݻU%؊+*ƪL6w Q kX*1iL8cl8u"(=zهQQ~e5q®[cOr#D[LvbO\gHnjf¸4k֌GP I*7m4,r`:-nbk(ZwQF zUf*4/w~=@'/mrS!RҺA3r 1~ص/ȀN+U[u$4ggd.vjlpǛ؜y/YFDܕR5e-{J ed_/}| #%R*ƲlR\ha?ٔ'+Q+muK怽ח\Džt]'Ee⤉Ro4y}{=tzꞣӏǩyrTFS 'Yb必5gDj5gϥ_0Y^XhfReݻSr8yFUVѨIc46Ԋ,B"G%8Hcq>%7vɈ9[oyj͙waXY답\{w;6OPYl2fz7@WB\'p (!~7d"b$6uSC,%,¥Gjl\$l:rsrJ~^U'ߟO_Owvm9=s(ߓ=9HrN&)Etjٖi_~g-fpjޡJC2T ;zuɈ.|X9:}yjGEoOOC?n5E}Tۃ5"u `sZ)Ua#"?/V wnӲ0v,XCpFY]b,! gk]Д-i/Gɝ8a`a(o:Ӽȍ#IqyϮ8 vVh@[JrZQFq.^RqK :6>u>GdC+;XU3b#(3,@gpό:CVzJ^GTeHQ^*| o2*~?'O"1}]pY3C h'xS2^Ωv|QQQ ҟ+onܳ6 \-eP(|Bir 3@!WPJ?QFPz Hnml ;/+.Ebcad,yk zIטAg̯P5Q ;=|F}Vp[i ›پg?eةS$ݼi99z$}#2moMh(7go ʴ:.pspq_μIΜf§3+5X#BB)i>c1zsUIH} ژ )"U"T'j̔Q)cycԋ 1j>1B \"lLQg& lP0j(RRR*Uj 4(^q71lh6EșVSt\nqvj#JlޏP.rO4[.a,.X\V5_~$>_o%s#/ɽs) qn3p\TM/FSdvy1'>=HP@4j_C-9}3gyv+ϋOLN*1)BACe{q*; Kyqp2lle >{NZDoOAN\=\%R*ÑbStv.S@)۷lE*" qrrUVF"+[~|RNfC~A6 HDHGDXν# $%>Kn?k'_ـGCl^éCHrT+mR7}fQ7xʮrSoSynhZV|!D|bl5aN#ߗgD,뿤}1y888y66nxѽ+UM ՋLUA<oו ^j?q`Ŋj-Q̚53gΝ;GBBs=BnZyp~ JPQxf==mU7[ٳWZV3@5j+uNf:>FÒeKLo[}b!0DaϹB:k*o /ϾgW n~4{D"6ܾL1M&?-ɸ=` MP}ڜ" N>`8ݑ/Fh#3'O'lRh)- +-TteDbj,d4ٴ>}ShцGo'x1xyVVQՄ5gijϑ7,e-7 ߷"_FVN>2'ObC螏9 S_"=F!Lnl#߁BDrƸ=s9Zvf]&ECH8"r,gk(Eћ\Ay)5țŮ[談O,ƎlM@$eYvEI$c9shbcck-5"dݏ%yj,O! 9q 4`{gka-Ӕh4ń duF&)r FnRSe}dQeS#96rSosln'OYyɷ9Ծ.4 O~Z6FlјkLECxys,o`٧;^_y6=9r ΝD/YP@$1g6 ;;. ¯!"@=NWn%r~ʐKoI![XX13x;KY4%e0Gşa*'&&QҔ,XIz^fL$f2y ۷o-J7tذ/=="{y#y6AdɺߐD'uŔ!ƍ6vAp(c5vv|l|duKTE$?q`Ŋ ƪӡdEFiR<#PH 9h(WYh#F l@@&x4rXM~1)u1#I=#=i8C楛4z<¤_MN!^ r2=Њ2eEnلEF?al€ni4.ݺ"~y:teee+UoU'_0lS5 kx,h shbK Eaksq~q!J2-Kmf1(6d䒘ʉK>{4&L?Vܳnwc#PTc@[wfKXs(axku>]JjsmĄ@R',LçuXun&L8bƪCI_p4FWp9 s&eǚb()M˭7c$5Fî5߿| ~NFP.$ Q(“Q<3q߱q9 G{$XYq)Y$MJp@$r2 ^N8"M)مTsQ:hYbJO`7+ͮ\e˖'֖Ç3੧8{qGOdSTXxXLpp\]ug6iʀQۨUFM=s&~B:nfgJl5/q#KДZbm R.aNμP\=?[Zīꪹ}ǵ*VtgF-/*IxP>s.2Pؤs3 VzUYGՒxHUɝ9Z@{;~߆;!2ukKnJz.>MZx̊+VjXbj}n1"ǚ)sx/9kl{<<M]N%œ#oӦMC*ZH2=_Hǐ]UR.J~jDnCFOMѕzS.F֭/Kh!668xj|@^˫70L~$kΑ92))(NFD>?&%bte:⏟ڱsM V&"F#BBA&wꨚH։$ƌxή5%ZjEV8jyh۶=:gN,zo1q :1ώE*"\>^~ݎ(J|dH^LmV (ތ<ܽ+=vUM7iYgZ75*R!dPb(FhrQU1a+)ߴۗz4fk!O1rN.|nhclf5]>IA'`Z.嘝H$|6{ Q^0bŊK`5VE`` ىY(5VFr7ևq׊fA\b'[ll c|7J;Xx9fϭ"򁁁(X5j^A?&:4vrogv -]~1%ɷ)=!Pܻw ~>w,V/}Նe˰"@/wv埵Broq5v|6njfnbL6!iDe%bۆ6:=?ZDZ,TFI="66z9qgWT\|*OSS}jԈCrfX̌W$F"ϝSLhYtAwA_&_ s&p`뤈|$BFs8w c@dDb[ۦ~Hij6ipXă#n{GRԝhmYiZ.e޽=̚^w7 橯Mû} /}{KN8a`GhCZE^ZlayHs̩tCV3w\^:cz憎H,bZ;c/ok>u1#a qqq2Ξ:EPPyxbb<={<ܩ cʘΫ\9_"2dY\u _gtaw]Z3;{IWON_ v*=iHsdA1520Z-cǎeDuƉMI%UHkPz ¥8HK&Tp1_Iu8[ckrxJK! $Lcr0<{/ztt0ͳ'o˫X(" WWҤN6̬XbXU+fѽ{wVϝdeznF,4-lK_g K<~ɢݻ͍;7@8t-GӬvdĿLQ-@$ѣؽWƭR\TD*51\ 4Ց_lTvs;&7e0zFQndƹY=:qK<ot,/nqxA+Nϧd^W6IL~{FQQQݻ>Z&!GT$o2"VRp-VoV֩'#117]c.ܺJX:  'f6|#sh!)()Ff[CcUijRҲaS ٰw;AGCZ1`<)7 HN܍Kt%{7"x2cFB6Z- "a9&5z_FvK=N+ۚ*˵ hƲ[>N0{O*WȄfOc[QnܞFǍtȘk+֙P< { E;v1J֞,d y|{*ޅoFW,J氞.:0bŊK`5VE^F6R߇(bF&:l@%=E-161:ŅE!\Ew/s5,>lB[ hD]8l"nB{,YXµӬ|c 6K0~<^^^{4ߙq W:P:k݌oj}!}J}r]d3:MNTv_!̝=zs17e"|õ?Q?d; \&@ `ѢE <[ .S")6y6]푩;BK2=RJs)V(c2eIFm999(mm[fz:juw;77__6jilJ;>C&U2DB!Ay궖+'1>ڞ&.dҞP`nߟԜtV߭YffDFƎKs<`;_~#W_JTs*SkР7 TzTYG6z^J6{}HGsG&lp^7E7yѳo+O{6O0o6[{0ӧOQF<DŽLꂯemJ:e77_+VVB.3~8|eSU4i[1T+4Z15>ڵDEX2 oO/U>aRm͇!J מD:e Iv0rhJHj#+v]QKˆ_4` /~HʉϦ) ;y2dޛkc>@jǀZd%r?s*ĐH$OL4/}_#PIĦVT'Y`XvI\\ wTYAϞ=С;oFgv8{,+V@Tߟ0R޳gٰu+FZ[RRT* e/pU{7Jt=j d}D7TGjn&׳pRs)5 3S&q%5wivJDtt4oeR'2 Eqn̡xz6$ςxFr>;VW+|zGԶ*aMs&1olb6X7dyE w3'u{s&8-ջwoΝˀEiS1-m;o8I*ιH$ & 3+VXVfڴi,k?) k" Fx(N#w>!hZVP!#hh&B޽-M|m,|"T/in~G8{;31oH|@-42T G]Ø|$uIr]a:-,ھXxu+j[˻/XΊ3xO:5^Nf*:\I.XyB|+cdjf͚̙3l}wJ6:GV2FVXr?ub-*$)[yexo 'z3~Jr_bJl{cΝ[붲xi?VU!0t?A> _ͅO`()u2?LTr#/?1P5lxCzv ^X;shjeӴsgta/# IKI1{J%%%r yyy}FՑZ2E\LU^80 hcޝOެZTgϾiL4Ϟ= 6NU)ǫ[ORf[l*ul9s!=Qdhrj*{OeQ1T+ E,ņuRݫzM͢%)--U;gFhCŔAS0v.kkxqugԸ\RӨ}g?5K`mȈo?0"F~ W{(6MĨH/pn|g"Ip?h(u㫏搜orVeĈLmMLGr|0Kn$n kj##P*nzwwrrPܸyݢϧ:_=zNUSPK$N%(VG4C-#uVWûJDHDR>:6DBM;Yvmi4-]J'nH7dbjȦhL{P4J,[PaUү|ZVB,gYB}I9Rp"/tWr4/<{%ņalWvի,6 #r0˼?d2^^[UnYb jd*T$J=ϖȚTBXjId~.肝q˖l:_](]@Ҍj*K܆riHʈs7Fi鞬Ҵ\YPv@=&{TYE<#U.ZCIAEnL!ׯ .ȑ#dffZ#Fhh(G/^YWM~o%/'^k*Hh٫.5ڀ HI)9SS9u$?"gDgGP(СQKFXwn׸LVDoy9TxTF*!SyuJ1118 g֨cC1ո|Sg[.gSʟ<l1%shHπv|XOyzIDATXISQF*g<*ab$>Yb6^`C؃|j79AY3mŊ+Xb*{JՈi]Bݴ@#;wANUQ$2/'lB}Pդ1HOI{s3Wgn }q.+h0b4Sx1_s \|ʤ2g>@jjHoŔ*c~4a-da!4ە[]OW>nĨ F+W!S^F,@9 /޽YʮC Ң{w}&_,[Oet_~h=iJ9F^ݳ1˳$ӕjI<|cgH@^Zfh䩧YfUw$uc׭͍A/M|P_׮<#H{q|-a& kْK``vn#9%o-ֆ7s5 z=)QPj(%?}h(Pdr;셫#/\J<*ZiBZ9*֖]GJvWӯs#Fo^hǩ+U#: ȅضZOϑ#Gh4X yWِr lgA䶺zjY~P<Е_Gj|6#oy%UZf"4_~h4;7W_ma29~5oϠthw `qڶ?Z> {T^^lzD"k>|=<,oY{Ϊ{X| C²KqS<\YoԓSK>';U puF!Sp>,g.(tdr(:0gs)&'='BF#2w6BOZq&F{quT-;C*<S(g8_p'Bˣ] :.j~2ɚLrJmD2ex)\hdM/- eoI$HTX7Ac(#[WD6k%$0AC){LÚ+Y?3֜djr27}#|+x'&ϒ%iBP|[zP۶RH @; &bŊjZy(gF3ivbm$~WLqr&+nȬjkP*@d cuW~;Dh6'=:tiƪٷh->غTp*4ݕŒyB3o\jz["sBGFV:f:vòBlgwLEoѦ#|B2ƍ;wif~xm,|\hMˀܸĞKqx]i6%E\H'K GӡyFVdHK"CZ9/=;)ݻ~24 hmiHOڗJ3FٙvK4 k뮄{腽M=OSN߼~Z;k=Z=\ɿEgJVٱkv1$5ODc@kx«m~ ]\t sL:Wo4\i+ 򼃺$sX`E D+߮amNMnŊ+XR-%˗?}+SLL őMM/vP/Fd#gc%UԆ\=m=}yolƨjXzm UoU^SW,W܊+VjA4!rAcYubƌxz{1l47& n`}?䝚TYf%..CuY870mvR*΁uW#~\KtLǖȥχmލ}>z3xdee1W6@__p*OٜޏkVĴ<(M[/hܸ)66 N{R8ա2eZgrX/Ooʌ>#FRKnKhj b)bA8~2;Nc~8p=/w_^0eo,bOUkVҒ MvNju%x;}(}ގe٣3i y* JS{~z~>q l 5h%J8y*=w@&լ?߬}"s-ZfGM/Ư¡Tʋ.Yr(;Ki0ה MnŊ+XR-(53%5j.%VZe4Yj 쯈gGh8{!A_\o+FB8`t*ˬ$&&"vq_M)6*=w|5(U՗1唕2u"iEB2]MR)B''JTbHD6inri kQє$-xn8Ԭ\k8y^FS{b&8@߸P4԰L/^E)$ P{Im92P\cDlg+طڂ*k eԟ堰CSV>wzckdń7q=aN*&ZZfq./7Q/߿]x/X~a皱-qj*/eÆ fx.QQQH-S*k[l/ӭ[b)~o\VGTKE*oε>ṷ]jŖP!#?P(ծgd!w*0*gd0kG OHִzk4oۣ^۶m{~}1Ȋ=Mx)#UFD.Gɧ^MbLƢ9sػ{7woBhh4΢9sJoḸTC(Һujư`l̞Cll τc8fN ЪYkvǡt]:MBZXQ5PLl}3 %΀NLE 9,87wDB+~HP̻wXy{^6|#.FRP @(R8Ix^5;*1Ko4+̸$<*s;N"[OKy{kLgCMV %iRU!{-$R~olذa2 ,x.8[VϮC8}OACdW@n:]ty#փiwPҽ1Fdq U~u#/R6!rbתT*yWTqػ*-j(ەq(K͍74Pj'I9AxϮ۹`Kd'2~8H'Ĥ#:슠Pѩ[u;7{'q1p7;"#l<6lب6cՆ$8ڒ{ ^1RJX;ƍGj˖-l?ßkH^ 3y/$UF<`GLC5rRwb^%i]6EDX֮DB\s {긡PGk$^IrS)+2dv8xwp|Fdo/Pㅎ9z~[i;k."##:8Uۡ+(@*/gk):ObQӊї"Os>:vWjحL&qv4hК lBNNQ ` dd/{wzt.Y9yaG:-5ͼJH*p'iQԯՀ~mRFqt(29%reN;BWM=_5kAtx՜$FR'ު2EkdRnQ-Z^V. 7B1_#kvik#|u߆ƝcdQ1?Imk;L9xU2ooBmذa*6JŲr՘v\H[v{1 w'L>!'.woH#y tdu3wȻOAbu ~87NkyR222;v,DEEdBpORw5}C 1/R^ӗ{W-ZS-8{ڍ]yt*v<%Tq>|{#[g' 1sHLM'_m܆: /=J UY'yTJQopff&L@TTb1\,E ?;ʌռ,T.e+`DⲟHafDD}Yv ɱщoM烏^*@(n_G,}S=JtRtRQF}^=ĔxqF`/s@.Qpޕ>dL&F a FB[gԪoy?6sn?BF~U8Qjْp;EQY,Is9~]f*5wc E8r(v{rM8 {IPmr6lبJlƪLrtƪY/romu C^}ƕPre˖mS/,v/5'}x>fg瓴(iEcZxvl cQdPS͍qN]V.ћ ~q7nug_L?䪢:m$½ߎ [ıS2﫼;NKyٵ;', =&׀-AI7{b]Q]0 g ^97)eH<ܰSCN./Α4}m @)BFuIyDc@ d_La dR2SR6VJN2Eଔ|8:u 5pqyyȦ62qѹ'_mۀiCh2rY$Z5-ۻ/3ϣY9Q4@(KfcP͓+whZ{*J+ )x*s$5{Ɉ<3GF'>_e<oqې@>zlWE?]J=}8שV I̺YC9;r(廔SL>b|y;RNat3pN ās\Kq( G +ԧ@Fɼ@mҘU܆ 67`3Vm<]wZ /|&nu3p{j:8zbGXysս7k&CƵIgHzO=qRO.xOQ:-K@Ð\ /u~.^ޣ$\m4 7qQ4.8\vE\' {/+֗h:y0̾~>bL_REJ'\h|B#?;U)VR=ݽu _BQ/o?T| 19*%z )2i&r_KHH(#q;bVdғԬ +zngEs*"6efƍu;h@E :5ZV"4Mlf"{n2ցM8uڢ1" vZ;xiҲ]21Ůsr>??PA8#f._DFV\5DbF!XF$dlvk="HR;C+vn%>!yT*QT,_y?,CSh}JSe q 0+bG֑-DOzMJ̼X|k32FC;#KcL'0N!;z&հZ{  vO>6lذ jrƍCڃC `w栕<^表Sn'7x#UާP.rpr!Woj|dE0k4;-y+ 7oۛ[?hd!DS vQتxNxp*N-w7s0lBDn}ٍP?|h=Cvj*Y l۩kb:cÇW`;Z[C ܈ɋQ}\IKo^}{:#z|l DGEӥKbC S V4 FQDmP4z N wl&J3ZCalY2Az6Gepnf2Ϗaivh!wQΟ"W9fF7v}8]h~ AE9{Pbmr6l߈XQ&ӦMCz.+ԏc^J軄u9{C5&3HZ}c9B;rb9gBs_ %"]$m?Ff E c# 3ۇNrKN)/9xϼڲTހ@^C 7oL^z5dS ^Z>L / 'G HPԭ Q$BپU<%ܾg7yHfQ3 CfS^\>Eܾp I1tV_ACuef\ulNN%4d2{fڵ9s4\\\(r'=:PjY Ev=QS[ek;COw(F n:jx1cBxX5ZoY@~v>bdx e h2Ns=i(((@R ׯr9ޣǯp6:a~9Q Elo>cq~6"T'nH6fW=yD1$gM6lذjLT*+ - +ԗi= <ȺĽqTy!{,m0Oze$RWYIR1MpkW;/xTpeh3_Ԥgq|j>%_'3%oZ@C_W4޸/jOYzfo#srMB y'$\2/U$3ۥ8x[$n D4|gQɆh{W(G,$n*D^ոvT\S@T}E|e oq N(V"3?Xh5H+sYrO;\]] Bj59DE1>aGa4K6 F˾]IfݶOv?(D"a׮]nۀp; _3 FȰdpA!V1H(Yl .Tq2:6rGk7,!_Wy&_ʄxk\#Cǻc^>2zr C/`gZtDוUX}k56i1bˆ I]C {uWY2aj?gء9M@`{E:Q'6l(/56bȐ!;voQHw]Z$%Faݺu| 2 <;4DխirTB,: `2qmۯ} hvrOJ8;T+]&=$I^ͰSpw#5tMqp\I \;cn㳞h<& r8qp&=J!nQziC'Q\i jq#DL[H"&Y17n! x|\BfT ?~LDXAo{AXa_Q79o v-Q :'[Thަ#^>~20 LsNsʖȹX&_hC@z>.Agp} ſs,0۴(,*OS^DHrp֭n_kG;s@}+V Har 8wv~8kM٩\>tXc`M dsFNzڼr??棐3tĒoH=vB>d>mͧkދбY'>=T@acȐ!у+V0wU&񯉯7vETv~q\ũ[gE+fB\U%Ru|qgoQ 0D!~c'G?OafNמ:(cD@/u\-`׭#$j8Q.(x$_5i-LDv[V,9""EWh^/PZ#fV;\`(I2sWl5U+2dHmذa،Uf(m„ lj_GV|˱LڂeTS2zLN<\$sAbUU(RҵlQy"rEƎnK%4^7a4b7}N](|qɽs>OnNM" :! 8ԣw{ro>hv @?!hFب7Jyx&rb?߇7PxG0J G!daDE;~ ^Aݻ|Pɐ[{P 2{n|BC n;'2aIu+W1 $"1Lh6[㧔jVgVVg*݋XB}uk4ԫр\yp?,1IN*233GR`fϞ́?Xvp=Od;W go`@)$ruj*9r/P%蝿h+qYIf Ŭ!ZM'(;Lڿ3턵K וŴtCK:VY(ƌÚ5k̺>**F^ݎ2qux2 YvyM+]_Va|cǎU7؆ 6XaZm̘c.HE yGo6U4g|;sk׮rXFDDp)?A(ͫKؼYO"$˨;\)ԒU*bupkVZ;C|D }HUγH~.W~GP-J߾}ٴk'!* H~ ߪ-B+W"d$S#uR05wG@JOO읝ȋ \VKvj*Q.B ;"\^N<}+N4kݞP>Uu\e)TbEGg%?ud|{ )[qϥD).]Y%1cg+a՘t,ۃĉwUKԏm^2c Ho 6lXjbL&GAԴ:"W,GV N7BHUiC|4yQx7:xSO phԧL0חkn]ve)mj&aףM[ZbuZdsSxJ"i5* ʩoJL!75NZ67!E!~=尊\}KOJfr bң"1v^(<ЩU ZLZ@Hν6U\=J6Nqpr&zm:~)IVV ^&CBks~jױSwHO%>)jșKGpj5h4P9bI( 2t:E*1?!KK0r9cǍЖ v~D&C3l8-z[l)_F;f%zz-Oxg5ccNH @:5W8(EFMTV"or$1nxRVepItmm ,J"65zwmLAZOfi^Z] D)RVza/qttnݺDDDеkעz^aÆ'6,f˖-|w0"KQMKkh]%c0d՟){ rt/m g'v<̣ 2uQ#1d!Z )YH}*܏H}&[H.Q\ :a:y +߫˯P2 5D {]$3:vOm+ҐrXb_o$^$g)ŧz B.O{aM&rcȈIs ,tҭ{/׫s:HDXa99Y8:*+ՙh8Iq\|?n}UfM: :U$!Z.Epppƞ6mo ^yk3jJ,%#eY\MŁX|cy|Tp;2Lh:'#̷l+qhЈfXN\.g1lxi;wq=8?z[?J* NO|&& ]zv1%A8A w^ +b,XPP^~CoH䥥CXJ֭#[CtF`@.}/ػרŸZ!T\&3Y;sΑ&5Z9OZZ">tB&LQg}dOW%Vgrd=Ee˖8( Q0܂{s#;v,SNc|{#F(xg-iۘ rH:;?d+ Y4h`Ҏ0hswp;2J%&.; 6'JoTN& jL\@&\!*+W0gt?ƾ%h ,UWUI"""bKC?7X7Q0 C~QxX\DY#AxmP*A%/1̛wI9}{QiH~TjASeƪ^dKRzddd`,HёSYP}P$b,zw$ZC߾}4i}_|s4cG0oj1g$F7",UW\n =K gqh$ݧsl޼iS+?ݱdcGr'ªՠGޤSؽG7dRSSV@֎-Ytr-d@pw#ʁVÚ_aҎ8[x.'8{/4UD!,ScԒ$.:巾b`͈&/,w,6秷3ne!O.?mdahD˟378y۹$ik0aB&|r;fQNg׮]YC1cO#Jhڀftŕ2ܹ+'.adžo /x& 6 ϳo> ½V~M;(W!C0d垇SIAsHK0> Wkk\C#ܙzPmK/N/QE.y/cί98nH*ۇYfY{4%I)׺=Ӱa-܉^_ItBZ50dex,|M'iմwc_ikD\R,1qhݰEܹ̱KG,r#=ErXvJtw]\|'&#"CzBY0w22͞GlF~Y̨(/Y4lh{(o(ǹ *y?*3/*C_X+4Lۻ{#ѳ:[2R=z&H= akYS{&S1gB8R1Wl_fl۶ S)vrcǰrHEUU›Ŏpo۷W|lذ'6cՆDFF"kReY^V6@'[܇Q0׫l9oҴnm빵x##qx<@ Pnl˫ck:EkrkaRbɭ$u ԁËwbaȹx.[myrc)Tg5GHaF*Z[/(((xtցݿl$#Fڵ̧˾E,7+ԺSbJ%!uqCӮ/uk|"; G"*+<&#F|"둡[;)4m24vÌcN⥵xc$6qH`4b0IB56Mn4٩xݩf |~mjƹ|xK<:dxktˬg}~7w$jGL>XSk3Kf~܃CFg2sǼѣJ6m5~`z.QWd{cdAǖxN!2uL\Gن 6*-gՆDEEXzoA?#8e2FlSiV{+&g ,Ds(LxHaL*z=箥 T HM $ Vx2|8s.ڦi%HԚK7qjӤMz'K(O("rr@ ѿᦹo QG0~O4ݗ-EO\/(mYիW=/ѣGۑS }; X4l3{ #I: kruԟ49HDY8LOûULܑS3K]|%K/jFܡHE&+>׸$ ' }Թ% #Ң=?m4}5"=իٲe YQ}^ gw4)=?WI]+KV'??0<<|prR!=?Zm>ju&ޥ@k2|;8=a;4OUљc?dl^ܲregΪN1de含ej_xTE&VILo9^xcmO^KQ~W{M:UD,Q%.`}`)Χ]EĄ+o8ƹfCB V媱]%m<˗if_%5XeA!TX΄ X~}kuƲes8iO{d^89jwk(RjJ=jS#)0bݚr!ڰaÆ9،UPB27XަV;_d^OV1T!  1֒I|:~|N$p[y j#4ގ!/صXMR͝("PK7\g^GڵiRENNBgg[1#_-:#-A_iܲ$=:'߼l2_Hdr,-D<+w.3yDb+`iPn]QS@':a0bԹb' PoieRF -x4m_ϻshZ5!ja%ƧU2n%)T]ڂPhD},z!C>P:m KLDÃ^ E"̝qiۨ!Heٲed樖xOnkGP@Wls}~Ǝ:^{1^?O,@ `OH~<5_{K&(˼>&1?|20Vo5cd 6ϼgȯ~E>5T!h">s(R+؉q`Ojw[.s%!]F 娖Ayݛ_\Fa߾}8pHGT*ٌlѢ&Oeu B$c^xL*3zh(gR.Т|ep;6:XԶdp6ÓFZX4 6lX jlII2cUBppU2yXo"Ygd0;3rgg<:6=k!|G7չ7jԹA}9LB_nyx@@ჹ+2ǹC /G\3꼶+~`вYIOJrzΜ;93KU, F_| */vtŠQu"L=vU;:[~)[4F|B4~> ňV2j*:oܽʜU3HHq6HFzt*2ԙD%Fq=7Ш+ GNngr fPikiDKQ.]իW?#/q'F. jX}>²E* 6f0v]Q>|a=\:5qPz#v.2tYj1pG0j$ƌeڴiwӇSs77gh=FM7('XPHo x;n^Շ W5yx&,W9D44kvݯ7iƋ ?F`pf\$^HANR2ªդE"#3i@ &A5Jo%**˾ՙ89_Ib s.C?21mҁaGSͼ׸X6C'ڎa/͏_d@{jyТfFvXK4 w%4lB :ZqbȁC;1"dӑy<%Կyn_qr_S'-*OS^\DJQg'}ȱcXn]yBkߝ:^^KDppZ1ԧ=o3hU ܸ}(W +E+%.{WVa1D6l( jlvepQ5b//mr}3etdݚgrߒ%.H\ql~hٸnkrF~-.G +}o0rOs;O%I}=&=Df~*2OӔ /w_ZO֬1iWnX"UU#ML2?oCBmH J6{u"{ W(id߾C@uvzN"1y9988UmQ}ff&NN7,=;Mlæ&?6MSF|Q#蔕E\b Wn_Ĺܼ{0zi6 u ׭ds|kSiID'ݧKkro+Bu2q NT~ g=ԱD $OwQS^uejBxo`S0deBF͹NVӬƞ LoQy#<~n*drj_ԡ p\sפeڗQѨ-WaElƪ ޽;ѣť!y]t vҥ/^`v9N,XIɽ~1gqt:]b~sK>I4/o/S[KWE/J$٧1˘CTl2aŦe71㞎juWSؘ x##78{.(}a26cՆrƍÚuJ+soL7b)G/0Sj7C3~ SяS+֎k7qsZľn86]@>n)cPSFhrN@EIFXr% ,(*dݧaf:Ah\O8`~9T츽w5S"~?Dx)YB5ݽ;w͑·4oiHTT(7GWwF%$ {xpz)?uͬGB T*|MDJ]iע䨏K2uSQOBzѤfS Iظw5S;>!kpAG#hM-8Ǥ ՛ l5F#Ee*VV:]*b E빜^ zZ>[H`YkiwE(0W%.oq6*gDIluCiԀ΍ ɗ % r¦v}Ru~(Z#5#7:˘8qXi(`"Jv:"u:zO?eMZnvrexO݈E )yMfTmQORY:l/`3VmXĴiX^1jW0E(0={WA:_εNN9CXL[hD?C'ێGAgpo\ӹC?<*2sL\F_AT#ڤ4$RWSwrDg7P#SqKϿِl3pCڵYdffk k\}]~6dp):~S,6 EL}պsyjlvpF$N4\ne$F;(xɊ~ &=|n]H~NF]֬/5m \!­SbJ&L|=Fޯ!ߕBZI 'OGٳs;,6TbyVlK_R,򥙬.\:-r\'5ǘG!(u vϾkϾtO{)5/O:7^K>?z'>bWjh!wu̿.,3xGe&-T<Wcj,WuQsfʕţur%3'l֊0*'aC[ lƪ PT\gv 4iI%[VT-[u8wZ/@,Y\6WdR{vĿgR0h?) yx*9Qlzk#XiKۡ+lE._ǫfRZgoo܂,$*r_휸s SpV!5)?JO+d |6/A=լ[7WZUr+}@']'QM"J~>D vgpUOQ_gr!^rep65!CNOrvRYHR\#B^W:NOCíyß$ Qj64F Jy MFy݋bJUΤg \ϸB[K,ű8\烀1Kvm˹Hc=`ogXqN%&U&U\YIC$F%D ,z' /5\gOy=Xreh# nu#c]aKgG}1߲0iIT^˖-C֭bJP'eǦ\[M&nuGlO >UHUBB!RU:9V߮0v9wc=_C9o˃!/c𵼄d%ngG{;(T`21sȼGkbU\M:_~Η__ ɋ>`}?q'0:䧦s}zccV_Pݓ1DDDP(D(J&M7n?3ZHG>Si_}d/^D*"儆2zh~g>}:NȫդqnܼL|Bcdr>X5Y\"eҗ|W8LFYU?&qd% u7WhyaaGCqgf.j][j^)0kRm!(&Ǯ0%{B7۰Oĉ?v{G0hT[J%*է_e-Nj8Zjwxv*RR_4xoWx-]͓_DHv/!5gq~ ?L#GC(׫3sWȬ\@a4j9z a,M|q[-ܹ{Xrs1LtSau[1[v]JaڧfXۗȌH!2@Kh|9zԯzQM֤!^@^4C[gq2o&Oh\?q$=!0z>7DWR먚Kdo\<„E7虫mj@.cc3?p\k TŴ (8]o Q#s:L .fodӛ)2uXҰY2&NGλdFBK$oӷajH$֯_OۙQ|5ii D_cOX^yy#Mƹ:N*fN[&gZkhKc>B?I=v-R)x8UOrvVڝ+V`-[F?u#Ŕ, ^Y*u6l6*̐!CѣGQ ~ uǮsBz RU\tQ)h/#e?dLrbJOr\:/RQ\:7'~ƪqs(,O"$8=j:yYj2SHҶa:jya3g&1_}DfҠӱ{܍8}Ao! 2qֿctk꿿'[˧Y| HyW9bιQ*]ۢ6KQ*#_BCWIwYQY|Ss6# xEYq|f3{lKڕFa[QcEZRa[Ϊ RX` 옹A.|rܮEt(^XC rYKIg޼y2T"##ql^ekul׊R^!VW#nv!¼|5C \2W㗄%7 pL ? H Y jS>΍hhOQA @\y^8p}۷j_EU A5jeyV:lbڰ*2޽{ӻwpDEEQ=jrD=u =s-U+Sx|}""r(;dR ږ?ZJ'ػ+'n' 4[ ]Y#GGBmZ*|v0g.COV| gescW3d2{d`I48K;"-- rO]f%S2{@܍ɻW9wgI?=CzDTR 1= .O!XTYhO%7 z#?~qz &qÆ*6cy233;WYJ' 2]]5/XL[{27ȽpK7܋FC^>ef+ǠFǣq5Z..^C%%!wƈQFGbNWݺ$޸Wu6?_˰_[Qow#|{ig6 7'z9FlRӷ(G8 t'lLzaZ=Z,!1!Oә {&=XNk"0DE?\&LW_d_~76Szb犋+~ l0/dDžhՈn}iِeE'YdEs1"K(ҡ12RKN]b'# WyŕT2'>j.so~dq왬+4UuI4Db 4veQy!Ώ=?Snv!^l+q@ub0H4>ds~Z<0۵X,HŃ"DYJY UlƪT*tYj$.+}c?S0|+/>(kw:>7)w!1\ڈէA4g*`s6iNKɧG??#{4Zw~Ӿfw_Xύy - TkE hBvq/ܤ^/F|-;!;'B `B"l'>.ԲStu2JAJi;3i{W^%f['ReUrdԗ4ED)G$ZSW pKwW}2|Ŷ#X}< ؋J~ &R~"OeϨߩY̹L&v\y-_=S.r.*z6ozKVïo e/nq.V}Af=W8h>B$S֍_.xŌ)/0{n4 뀯[H\m6RuK<)Bdg:R)f~CA1C ˘֤;w1'שO׶004kH/HMC]zcL6'nͻ6P-4X{l5[{o J5TKɏEӀ:>sKlMem?YŴ[~D6 oQy[z| :\ʃ6ņMGt^ #2{mÆ `3Vm ­*/M"UT ~.>y AmFH|`v,Z6|ޤ7.8wOh|s?H?zL^PD2u&NI[mٳhծ\'sVjUkP ;3RP1wLps U3@n炝(AGst`188$[wM6،U޽;;qh+},mt"qt7 S ՈJg0Fx<=%v2@s?CN.`4bP環n+a.$+J'ܫypgf1r4IIb­8Vx] D(Ȟr/z9 Oy.̊'Ձ~/Ud,'ܺeޖԤԮ]uk".F B:|\Ϳye9^b0 J/"EE hn׋hmߏv=ihO,c J^/CV$wfZY|`+a$7_.ߐϾ|>K<;.}ϥ |gyX(f "}ټKZ7gՅ VIVWWW.˸ ؞;WrS?g؉S*PdB$UphA*ut]Z<[ţ, dc8s6e,۳Yp#""V4ΘT:lbX\cظnOԱ~G1"nLEXkiNH;pLi1iD"p m"YT(Xݪ)NRU2(yLF/3g{$"Y±|xjYmmearڃGDD0ߴ#Mhxd'Tu^:}bb)Z ckڏ( QNP5 IDATk|*B1Tc _LCGݾ9mroΑV$ft4 0+G #?y粵xTNb.+(±{&ԶSuSǥ9=`g/Ϋs8};d"Y4YR;$dԸIVsyU(G,jOkc]^yϡk׮|~.ozV:d<ӻ-l/`3Vm'6mk{+G&/u§TNHU*YkaV6;+Տժֿ!;w3u;6o+Xţ,R{{^ݴuݺڠY*n#P h4mHz̞Kꖗym$vv%@FEEP>ؒQg"ZfVuns+܏k֚[p~@SUc曲q)^o*DRgֈ4C $b1a^\'3>J?j{ץEpZC&.,@s)ӼRwΩϱjgt Vղ^5zp((}tsFΟvb'S.f0#h$ҭݱr0JOrSE\cnj [kJ7F.fG铸B.]>~h)4#6f$P>w!tprRF$k+~EvO!KO# ќIߵ/xLX(fnυL1,c6A/=CwR-ܢ4ɟڞu]ΐ}Us3x8.$_P_|qoId곹o'P耲HԧmH$X][1y0oZSO]*L<Ɵ6m*pdty4cˍJ] Elƪ u>ՐƈhoE`jviEUΔçҦEiʋkP0~ qJJC?ViM~^$,,k嫽K~fy3JTTTdgǒ "7DzR9ꪻy`2󁥜Ate 7-y{p1EDOwtmgӍwXf.ZJ_G! /qpR3 I<1b<ɢ^C'qqw%zzƊ}Y,%YEM% JI.Z>uذ_fO!HصkCs^Wr/RxFc^ٗ_ & mɽs8kx2ETzbsZ=FhVϞd\dֵN3DV'kl:d%TZJT &!~9z,u#|hх4>8B޴hݺ;)wؾg.Dx;Qgعw!9tokܜId{ܜ߆΍GӹԦJ[Ƥ&Ϙyc.TB7.FagϫApܛWҽL9DDN%4.%\gJȳ1"^uyQ ::IG3ٱ,:~#>@›ge5|)2sg r_grG[xL]$PhWX`UǍ$Ko>S:tՇW B[+cr:[%a㿆XC"~z7qUhcͯN$ _W_fև3ˉH.|k͈Z4qihڼf-yt9(BB!vJ>um%3Ц-I{֚vݺu+v<""W+I.$[VTKLt݋kԬބ#k>u+OPNj],NΥp$M0˨rYb#]#XZuQ"Nw?W dB +^&D"o(I,Ah(J͌!94]z&.= uuD Θ͹}SC [ VuH {ɇN}N'MCҶe7SF&n!}4)e^INFS\F,Ѡ+cWomF;|(?DȮ]ן MC(fivP]pNѸ!<x{J> HH Mǣr,1ȫ!~޵])10o3Io XgY(U]WwW,mβQXPʕ/ WT̟?nݻ۫{gLB:w}4VZLLFnu6^B=X}og ,$珏;PsjOs=e~n T6-Y5.JZ3yL ]\*Gהޜ;v Xki<јVqTFjiDѢp!cZT:lX=`4qt:26cJł HO`̏!Fw:a8֋/bzdI6k! q̛7ļG%D:}G 0=?Đo}?Dһ;k>IE:eZ;Wyye^}^%7m7O!2yTF~/J_gԩ_ d݉wx{Her ͝ xx 6Ot\|v,a7^7&Ol䉭^7/{?,ʕctyœGzK<TSvSN]QMAU69ʕ((˅W9Ps +đD-S33Ŵ̭q">0M̺/_/};o}?{$74RO y"i?j2O@.PݸDVRŕʸ{f 绥_mA 4bE"1>՚{W;{NN[Y̴3v7{>1dz _O~hܴ?Fٹ;> ۶.%7qvKǁH$2+>^ x[yp]sILk`+'HAB3bZrOdX}Ǯ{:xjA@z~啉JKJtWԳ{1|pBy G 0D?хOsU̪3eSۦgr 2bfNƓ|εrİ^&YoA -K;/@º3 e<9V's7I&GGx?"3,,W/1ZL#2) c ŘA%A;ֶ?f*H8;;#XU DaK3' ` .WƝAҴQC!'7|iK"7-SQOBs/ f}NTbЛ,PxҠsnZhX,߉o[zYƵWIX^gںz's >w%ӣ,2VaR#7ԭߕݧYܾs>GܱE͋\t]8HcVpdP Z gP6c.wt繥=6դ ,:D.A M[Թ CPJ]:fr>$ߨxD*tZnK/DuMT)^OƉFqeFZ.m4 +{3>'.<Øyk`wu)Defz2|^# dc _%1REIa,ɣTUxps3hbT!bg$0} luo~"4ʭvsnݹ[ 3aՂ3RJ@-Dƹe+Ev{z]9ZN*OSV쥎 /hP']iPZN$̻11r#F@q]`;H()$?Ha7N]f9q.6lZ7S#:s~&tC?8Ɯ_:s:)Jo#Qs.J:>abz~jӽFbйi;>J.)f.s.;˂ cV-X03.ܠ8 999.Ȣ>fӷѴ| ͣL[7֯N_Ճ_ej/ E|6|m ^ˑJmhc( ^QhO 6-~ yeE 0zkV﫟ja5ݻ[kzouvޟsV^`4i2/|TV=xrTo˙5m)m;!Ez;Jx+ݟ6UP˩q5yF jC6WsIsN/P%Ժ,rt{Moāaj9t*7֎_*>7vS[^$jnouwww[uw(;z/KIE-MƄ&'ډl&bW_2PoaX'tMzI1'+3;g~Vň/Qǯ="a~lDJzNTB!S'y[]õӜ܋B`;# bA03jP4ژ]m^F",\8T )Is̍*|XFF}\fwSbk؟Gq+v%>_nd$r!oVĽ|c>+SO8~"oŢwH/|/Gs $Am\Zc>crI}@œ 7@BkkZ9ϽʡShe*%̨9Gl>vQ|XAbG1p":}DZʪOw20$#GX,,X(jBR2ebccٱcq_|xT,&8NSfJiet:qǮo>Bxz<=L,&ob>miuaB^iX&Sū7ׯ_'(²Ǩ@]MVwϙ!F y389?Ab(dB)ͭ'B? ޽{sMA$0OOQOčuoM*]+lmT'n\=RQL}k<+|#V2w\K2" ,EX`Lt2~ Ǧvmdm M벲ȿs I?x [MK | mDک+j58p͇ ųA Yۭ8l_~zfu..Z@`vRxKKȑ#&1 8xփ>"/;NsVrTh  8T'ŞA(6r(5Q/Bĸ4z'399Y*~7aZ_6vvx`7#=;8lc6xP;N/+F$]Y~Y[}'M2[+'2.R(l]K3PYFRv"0 :V|<)t۝G~oE7kuQFsXIJ1Rhsk4QJdeBjQn È4e'\tL=B8|N?pu&N~v6 xja[D?y!ci(|7Cdd$~ PzĢy4 ?l֡m۶ ꏻbZ*y}G:p"gʩCڲw,809JZ]21bE<:#(!hБrNfS4hܓm?oO4<5OY%w Cאb-3h9.PJ[>|I>ȼPsWU-3/b2vq63xZl$6 *6nQj? m\^|^a#G1|3 E@F)Q8΍Y $;]I mY' .UM>Y{̛7gl,h4 03f> |F-VP- >c587 O;jאb HCje~tL[Acu#sr_8t̘N@z ݰ*CQ,]?SWxӗ~BP}DFV]4n7;`.|8 wBJn% 97p^4e ;N}:ѕ~) Iפ/U~2ۀ6i @đtMj ]N :$'di;=]l?/E">\mn疣el݈]{ihԒ=?T23ŧ_Y4C,3R?aƭI2vs.g 4kBUϮ-ՋJLlTY504q' S ~s,XPaՂ^z-^U@2eU:AKc-Hpys#sB z$J @ڵWnhr_3?;=syW,I%i&BBmxihV$111H`RJZ銃g5.:P~ؾvйdKd$ӸXoc'O#_wZ4s*wrt&9 N<Ñ۩k Hu'Y_Z&Rˣs5n0n^ uu 鱼;c~EF{#*<龡RΕy^m}7oˉrI4bSpT^r*g3s J%߿0.]D&4A&r.K`4`0Hӥs*71 LHKX99aZ魲p, ?7IWYK"kS6Ia&|ಒYeѢEAՂ &aq`h$<3+ < r+pGP-ZZ2wHE1}ٺtTyIR@/3n2ogAOy*q%(ZUE|%zWصw0yX>aj:]K'_aH9T|2۰9z؛5{2pڙVFF" 7q/$237^iXcE柊Sg \Ee_n!LYx~͑V?amufrj,`q9sIm,/C4'ZQ+gM9G<9-4,ɔ,XP*,ª YoAEP-D  .B 331&aBK M b1z ȉDHI懴'k7'?_c糸syLխ&n%,بbK=wu,{_A,,1gbgoyyw'~b߽<ִD?E; o'%]ٔd`o՗z1hZiP dF_ b}z[Ug-dhҰVltM*/Ʒ"vE[n*WBɅ ZwȺ;XYN.!@sb0g5(XߓN5hێFuA^t8t7vs-o~}=a9'7eS;M/fWwF=?5YLYuF=Iqu cʔ)&9-J_W|)$ +gϞ^zO߿extL4u֑MPP#8ߣaՂ7Y_ t\ߤH ŪqSf$&+47v+#5DT=qq#7V.4ks ܴT\ƍ#}/2bpF_F=88kNYlrI hr q6ܿP|56_Rl*mr- veҕc8ye.wR.ҩӰRd,]  %1+n$-d"@{;/Wy,*#)ѺF{??ƥoݜ Vb PUFk԰\̙ϐd~cnf&_uA@U;ghldvrrS吋Ğ!ԤD%&&@ms1$zʺmaL2OU%66BuyKYR͢86mČ3hݺ5'Nxާ~Jll,G͍>޽{sƍg,aՂZ,WjIXը޹Yˇץ>~TɋZd%j^F*;1T >L5%8Q ag47R݌>ŤgU*ENafrN>꿇q;Td妢eYP*̞ɸ 0m/ YBDVn&'^ס%oEpW}KRbI\L{UDeL#HMΝQ*@CƼ˾!B\xA|NS)x)MňAGew)/- $!w(Gбh(X 3b&ay-'A'`FڽLq u`yGRIHH^^^4i҄7>_n]-w1/͛7Ӽys,ª Ϙ~*OSVdU`ܙ' D"\x_U`3^_7/[ĵ v*mx}8z͚YԹr з+|V.dpӭ!J8:,^xGJdddܫufݭlF8^/ *gM[dn[(?i#c^%37hwj6pzwrQ FZ:Vwof׎ŋOHHވ5GkgZs>^!8q9Vx|.ur4;uvŁǝ mhk5w6!8Л{Cya߫تoVJJUڂ:UV[n,Z7o2uT|bSMc\Y/EX`}6CϞzQ#u7Euu0c;%FjWy1j$""vsr:]8C}NN_as;٩Iy:zNI1`Docx塃,XW_QZ5B!ݺuSNl޼٤FI&1k,G͚o7cVèj6mİa PP(ɉ&M0|p~'taSlqHev4 fHY0;I{08?ݻSVRIhR b\LͼsJ%vSiTR9FVH\6wVk$8^iLGKFCiT+Rq8*p֟/ԕr+Y9WۏP H$)ԷYsx魇h*E-v؁\.'|X8N~U!12$g$,wa05?=}a.?~,ZJv6Xnj` ǒcvB/Alx0$qD("q8}0F?s^r9sSV ,իWrqEo~~~b44hNMQ_"IMMeĉTOX"wH۹㥝/$m2&gWA/O&OlѾV <=+m<'GF#.%7#B_ Kй/[N_bȑO}4,,[Ӥw1g*MK-prܻr/t4yVâf @`rcmL5fd$}ژFwޠc~;f/b޼y0.]HxcV[ޞՙ;sR3Sr%S>\S%~L\ɮИn9LפF~ ?:H<*TP"}]pάcT ޟ_n!7#Bh>3E-΂װxŰ\;xH$fn4RI֨eܽY#*Lc aIv4uLLl>,X-[Э[71l۶W_-9˹p7oƦ?XFUVQ=(Y7ϓ|X9 yDqƟz`ILGR!-G&"G % 3~%б7ڵk}0 #ªeww,p>3UIO^3,:_ {c2ky>b\rOΓKAH$Yy9LՏ3gPR3o<֎~BfvIє HλmR?l](X{}n,x>&h4`4es772_T`CwK+l,v~T*_G-؈vmKrn3J8Bo/VX#6x |i!h GE?x,my_ťt5˃?74 3ᦻo[}6Ǒ{1Τ-kP[`FE=hѢ|lذzйsgr9.GE.#,ZǏcgg\.zYX,k#h4YuX1f"5;{hѢJ4[ Y:aߑHWy_%.|ؿ#G2# ]8ÖysG͛WhA|3 6 %#;)ы21bG쭦J|Y:bbZդ 82idh+Q,ݻ7Cv `aXIJC(Lb0 e"bh +ưA·KXg!S?.&U6$$+Ƣ*8\wYB1ꮤvlI>N3*tM,XPV,nrF#'Òlɼ_b<'i mĮn5~ ZV[hqA KtSb~YgѠhГqY5Cahz4 f)JD&Dž4%ϻ4ymZ;#6!rVF*?i҇ݼ둓^vND7 =vF$4 /%=#A'=# i>ڍ.5,tsW͡UQ Em2~ Iy_۷>}?BP?Çr:}_u*}/ lZ)O;zJʏK9krF|{wo&ppBHySXogB?/#B؟O>Ub8sЬY3n]{) a [JȊ:K4+]&^q_Yڂ ,9u"̟WGk {K}n fۅXת!G}$Gҕ)+vJ>Yɔ)Seǎ-.̨SСuTMХq47<AϑWh5v^ wzN{})L$22շme/qL-ZmvF&qqV}W <~%E>ODDD|rR$+%$Rp3 Ri]ԶDEE=V~<2o>{")͝s]ŋAQs2Ohh(Dݫ߹MNB:O^K\@H8:a8ao&WXĜȧf,<5Wkf5vm; KХ$}%ֳw$~ob+?^˨cZ/դifw/쫹tؑ ¯FHӨg2kxSj~J9bmlX?>qs;ryA,2q? 7HKF=:q\K-Gx$Qrov^C,OAhұVǏ ]Ψ%>7.E.~EV 9,, $UW5\HTlU rs.FΝL;5]GwM&;5[Ww$dvÄ?gG2q;|2cFؾ &a4sZ)w/rvT0[pYe8{Jn_؀F HOK: {*{Ҽ5A$*=RݶrGK5mX6.q.c kJ~O7yXileQr8;g!U8(qC!*x٤is;:sr+*/lFnnn111(3\P +^3J3{لVhٕqqqc߻Mag "Kv/Tހm_hg KE(/{6Fۺu ޱ=ԏRdل!AKk̢0$|17Fhe]˂NhdذaőPxU*ӠAIKKɓE>LHHͼOPd/"Ktz"&o3%q_lD$Xհt?ɨ0{b'lKR< h _ֹV^˽k䕞{9K-GZߚѣFY/a+1M6S{IeIWeO`$k*-ɥȹ8J-f Ĺ'DXlW)?53\uHccc T\B(þOtl%wav%mBBVR ϧNj X)qqq0aq{.7~ku] _EVVv5yY$ M'el^i"u1A^&/NDx/s &>Pi%^޳'\Gp*B.n\b݄faDDDT^\73(ߛEF0{B&TAnv:M} "^8VpxwBfm/[}Vִyܱׯd']&j5111x 1kHvT;rQC^M6[̹:#T*Ũ6 I1nzXRIUeTJ\:{Aф6UP''$*2#ٕ* ءI{X`ߍEX>U*o@Oltt4?=FpLلEXLe]Ŗ)^{f|4VZiq =i(iD0ZEF[VJgx5xoBu;>WukHXag&rz-dNT:ϊGA'l f"tZ!çCXR9BƭRe?Fnc&Hd&楓z.Э4k/:Uۨs<ۘJdd$˖-å. jwK޸\) \q)e! 6)(*q*TӔN+Okhz:| ިo V@k 2x};x@'nI̭O\?vq5! 䗸+m,X_"KQT`W+p{?Z߯7.XXk-\̨7ѹs"ۏ /k o҇X([yKIc$q -'?6=%#N 7|TPXG.;%Vz= n=~ˏn3w(?{g{$G\eNT=\gY?muWpv5pBlS 03Q'&9R#k7`jgHeOQ!aT_.| ޙ `@ش곧ԩA >g~d$JX,FPܿu[Q%'9>ZR v(]Q ܼJ'uV%E'guHU}\|wVAQYYZ ڱywhJLL M4)6/,,v{ˠw ġy kAȾgdw6ϑq 9 ص@<5^C+bTXHB]x !w):Kvչ/yw*FϣK]#B3RK[ߏ/Gm:[\Tcw,\Htꁵb=xr8Jp% X)%ޭd@"dm=tݵ"N0VF=7gfT eF j UQ Dyظ*je˖3.@k5zWΠzΕ2{'xOo_iL1׀99*p۷p+jAwdR+yÞ[EeRȩk׮>B)/U3j?'`UA #'G5nCK&)Zg/r^@.:#I{ueLH޴@+yk2d]I‚sUux`'>,XxFF#YOR EEXLܩ r=z6G%M*KN.(ItUrA{IſyN:?O;| r X3 M Z-b%zZ-|ς{%$$;LNL\\+OضFX3L/?7`Zɂ* g̡ʟ%ebO"m]4bgg7jL*kR'S* rw.Γ<8+c񪆤Z#*l&66zMC/iy0O\stb3jH[^%8sb c '1r-Ԋ2f>[Eƣ:D)qVZPBBBh>Ijգ͆X D$ϝQ}fW/ I>"i">k7Oj 2j |L!*|^ ^>WF,·<Xۿ΢ŋϯj6mİa PP(ɉ&M0|p~' 3)8=uWG| nTZTQ;ۇع ?NA$1y>glZdJ׻>wzςXjX5jX7`ǎ&=JC**R6# ߣqdחByE"HBɬ3fﻐc'f6 ϒNUY껊V4_C#f4vs:t@vv65?US\lUsǵF]J QXgz6}k?.k#wrǠ$66,e@\qK.%SoM U!/l]s9n^<Ç=Q'4!!*OƁ׆|oҮ'%yݽeKӱcGXx$V6h5j\1brjۿ{*5xFق&+Zk9g>ݼTEV(ŮT`UV J[^&=+:|(>Ea_(*i*=5kc@dOyYR.ݴ*[ٙ&_,A$7Ze˨['+"^Ek 6ޅ](>c [FOqqqfW0` ۽3bdv&LkG"<<Vkz{puHt9y7ocY; \DRz ҠvrTX! FJ7fN8Vq!Z#Bhğ/^s*?8u#z"R rJQl0B\oMrŨD5y ~.Xhrz#Owyʩ(^{n T,꿜0}\P\LwZvq|?ꄄJO;[7ӹgbTK¡V}lt|@ՊZSǪH؀Z{p{&.UJe) FC^X~$Ao r)s_+W$AobzR$'˴CH,aؤԐ=?N&=[UuvoD.-UI=J(7OWy˪558B% =G. ;Dδ{n{ь'+ΰe+5E1A^s_!s|םa%/Hظq#Uzh;Nd.s_2OH[^Qg݂ X9W`4XXs!=Φ2qDx{`>rO>qTU!n1?zƼ9Tb4gpp0+ ͞^Ws(/y@SVf_®(Pgy;;Tah$<B%˾uxib2"NHOe}W% j}vfò2YX/h]:CWOK$-[Ƥ 8x _ˍgЅF}3Ϻ  pwwG*"ˑXYYQF f͚9|3`?@vvȑ,9j5e᝺2o޼?zFhƌ.݅}բԄNNȜ5 n0t̏Ҡ FFVA!!!5a2ރ]; KUX{"|,P\\vV&~TY'gtt4! zڵB DЅ3ˉ|jެm_6ĮPظ'ػ#&;IWx̴DխEKźVߤ4őʡTm4<\ŹKp$)R8_ lGTxNa)Sˎ;!*if} &tۂ2" i֬m۶ѣ 8VY~=:Uxbq~~~,YuqM5jʕ+584 [f…0o<+Z-̚5W^yٳgrJlmm9<˗/[SXjg6/h4 Op3YLz&ܸ'/oqJ#.f :<"P=I~]<~ڷܻ77n4U.3,v6&)( lZguz- ~S_ߌT\8L뻙GҲeK4h'HHHx(l 111X_BD4LegJB"b?Sݺ> \9E#qHA& UD4v CmYt9Qs6?xT P?((WM)${ƻTn-/U$^f/ LFn*ԒkC_Yp!~)[l8::믿Ι3g ĪK.ojiݺ5gfڴi___.^ho߾Llp0>Hln׵ eWVV~]bȑ,[%""eAAd?mݺ2F橓߹ȥwj"6U8_A*ۀ n>WqOu{_@*;̩j,]ȫW.H( vwTP1`Ĉ%Z[pq 0עqq#9%XaUװQ\]\T;yҵ4R^cӶ8z'*Tݹa۞*|1q n%Ss|9Nf.^.rvCV t|韮e[ -[sN߿$\lu%S>PՒpTWVC;hg$M{;.Йyn2 O6,""(LNLs.X`| 4a Brss?Q?0rȇw}'r >% *?3Çܹs{>}0|w~CCCݻTZbd,jg.{b">D,e7|ۦh<(JDF2l0wBdeB.!1d#sx>R.;mXlۣ*e-W~F~'rpDɧSN'&&L-R)+bϖk^<+dWsL,[_,Yǧn#Ɍ::G>>ظs,ZmBOe u灳q S_\.AՈ7h@7 "WcG)lZeKkҼ ї6 G*(ZIj]nd@rQ[wbCgXבb4<2 mrBEk' e=-.w=jLZhQۂ N曇G}Ė-[0`̘1/5kkk NN)hHKK#55Ν;?"1 hZ1|o gXyJ"2fx-*oqp^CG^IϿaaa{E΅¨3_!vNǹ!Dڢu̽Nm΅nW|k$_=%_͊ں@Z/sܓuOF#+:GkKP-D"Qz9a~(|fUm&C;)Nql;ivjQJ\xc/ٽxVi^'^XGm U$JU؋\pyr=kw㹜uAv1a%Vn9qU7de_&H2zZ˹7}JR$SYk/$Snx ,PT̟?5///KnܸoZZڵ{8;;Uo߾n޼JB&1eǯʑ#Gؼy^?Ѳ/ai5wG}Hڙ=1fœvz7qSXʫ#YٗHtAZdJAZ:c8~ q~רȚ5kB9qY7/wx/:: l߆99FfC^X۠ͨM؁*88̫ҷP"ţ}/h;x'7= ++r'ChS/ 4@~YoaЛOYbXYލQڙ$(JrrS#7^ %58zuD 0cg=]{Dn_$|YBpR'Sz^˂møu;~pݕICidXwq&zckV,q- C?_ˊp<[u޶N1S=(mOvߟ[;[!>ނ ,r9saԩܾ]Yh Ǐӷo_Jyn:BBB%44/uŊ|QZ5h4̞=T*%--Yo3"0Z굂z[`Z94G%iC =}?i Ux{j%˗c7 ~(t?MA=ҏfh o4pZm OZ+k1.ۀdn$~9+QBКss沿~?]Fzg:ɱdXr}-d'?v !>M{NV=սi{[רUOBBYՏEhDKbbaWg^C|6mDߟdkD"u܇ײsXy*=;2E1GyLIOMTFkxh#ꁊ^!H˽6PFzw.c4  /ge5|J|F敼r oC^:+![냬N-BTANpp0 Gʽ!8yv; ,o1{oR'S* .v}:O?RXt9_aRR:p&.h9ӜNS3$Dԧ rEM{sj%0=ȇ6!s"#+ge pq%q${_-XIJJz4c!;vx+HOr W\tx~qqͥK8p/"۷oƍxzz2`rrrػwަJ">C Rzp݌-|};L[iŪSH퓢SG8x(ȾZȶR9*LABnr{ac1~ gQ'%q7-DW8ұ*-F.-6FU\~iqw/6=ڱY8T<0x nlcꄸju6kv7{ ƭҧ ^5BBLnj$)I[^gܡ̛֓mFQzݿSNVXY)sFoVѢQVox0gN_`Z*w%쥾_I1œ?>MfPF*_Z<]62y= К\}6zg[DHQI2^~Ȯ54vf2䢐PnIIҚG4jnqWq,X`h,ـY)aRdӵڐ -W+mdMX"s>^U ~? E -LWKH={ !Uv'@ 5b I+rn'bS}Ҥquׯ䅨F#D- vtC@|jgQ4hI=u#d_$/.ڜ,|?'}C(_2Mn6?"WݺNKf9<*Juy V/S0jE4i3F j+VTCjGv19iܿ{KG8st;DaoֈRt'\n}2eJ ΃7w칝\+7O %tPX3b0XY9쏏O#jz:u:Ҭi_\/S`uT͉ O:r#i/3mBZ,{V4(WjI8};iNc*(.s{!"[$:{:wױt&66Lr9Ceݢo1B}JFWr)( ,XP6,3"::UqG ,f.,cd Y_atBi,./29 | "{Ls3HHuʲ41s0Iyg> #8KcZ"E]IhTh̩ߣxTڬ nm]_7#pF upC دYֻƣva(Q4?>[P,)́_0byIGPIª!^ͰsTeѼH]lEnVJDb+dV8`ڄ^CN%3m]v$7G6+w!X@.ӿ[,Z:7#WC$@vI<4uWjUH*ؼe6VKc:|"B+e/d!Jcۥ͡l $.~O7+|} Z{!ِm3TK"* Q4eǎe.A@]b\//pJru+ ,@@^^ E~CASjR9+aPe_o~ρOʊJr6 9*1f> V-2^jCTT3g,hW`Q5p"c? ߐjkrSY^$_8*}NVGsd& t/[tE M:puWd^>K!j0Ic;VGm!؄C}L}x1|JoӒ%^㏥quv:$_sH,W\G9"lH"Drӹ~n76.ʥؾ$r%ju"?7ppm^DPW@ V"Htt4+W"'r+"DEHM0IHnJ_e`-7G9{wĞ*OSVl%.Kp-8%4r{O4a5]wybdDT4$ݐB\\xJ%fwryjC.ߝUsqC ,@ @*RJ%?/ 춶ϵjVw*_jI4CjvOmH aQX"SSS1[,29'xM@"Ew3'_rcNAl;b5Bm݈͆Ǚ6)I(?Ic(~Jh"S''VN˕er 6=#v)Q_.+Z5vasVCPPRJjUn<ĕ߷|<{3té)fˇY0w!!!,[f.-ƼT<|>q]ײkd./8+ҹʬ\7܌5Gh <|wqjFCxx8WoGT^:!D t@&ŠDQKl956o}'f+ѡ*YIkM,-nMJ[cU\U{LXbSJ|O|6/Ȼ5 S憅w^>Y7" s`|| \d2 ,<[rZ۷Q*`VQT( rEX`:e_ؿ=I++JJЩ TK>h /ҭ122-T<4mI{ mˈ\՟V,)w&\FɅ|⭚b4rѤ$";zx ^2 e1?Aq^U#IKM't+%} j5ǿ葴ut츌!~k770evWD%';/[ERUJ['R7;3ۚ-X`^R)RRRʜyE&akkRU&a!~PӔժV$d$_GeZOa'j5K-C ܊I"cc_ };~ i|sVhaMy(ӥY(B(ҖNԌ:k,\l*(S" ҀFHRd<: i=yp1=h5pª&7MQG\aØ|+b=h4"S<"0tG!(?P$Z\;6C)qU/ ZXU/n?{2 y*MzeVS2oaVikص&lCvuGN' +u&4Vr#Hظq##G跙PeeߝJA7oI1,Xxvd2B3_X\.W@[J&66B^Ԅ\$EcqȚTNqk1YQ{hqwD&=+Z1F(PW|1^8^v?]EVa]81u9n< zR'S*<6fcyx\M^DMp̟@~V: ߊďkwQݺC67 fMgѢEfP*̝.! PؠEyP*f-k8\!k0@=z,2+TS AN^y_BZz"6 wq:~9Y R7+l1\ՠLlGbs͓W)2u:,,KW.u6qؘ 30']yi6!"q(Ci^C.]T&NWoW޻6U:^eՉXv׿ī'O~(Z_D LBBVހOo%44+|/\BԼI A+vV1&^-[cĹh|kz~! WW.$Qr"UHZR됾ԝ%KkbR2"v:Y7*~8¯0 zrR}Weuxҽ//]cXXz ul4 o߾sظ4*u2`eg+OvBQX"wD>msl}׿Ɨ_do 2~gӾHVWbTϿ\"%󖉣?r{-+ylb'+6tΌo5c-C$| i\*w zV*̜9;wo3s4Ľ|纔0\iA+-&ܖ#s-OLFVZEP ͽ*O,[M?`/P"@I]qCސdZVKQ Vd͚59  o,nJJ ٵȑӼ ~Fįr'$$ p7=1>H*{BS8hV|%NNNر9S9yb먚u6J4:MTX8c3DOPb?Cptt|6jx:t`֤a%şZ{u]@XNKA/toampp0nĥJ g %BWN; K*mK떨 Q)v(pM@ՖTiXdkKo9qn2Vuqv [k!OBN^-k؟N͆%X"Ѧl;wZ&S\a[ve%S{J\ۑy2*G"4~ڀKh‹U?.[1L/zsHL&[nf 1Һ B90mu* x l uo01ݻBQ,X`XU e"""AAhEZn9q6ƌtKSTm* v[NˊL"OKTÆ cͼJY)$^5jfDܸ}t7>-;Vȑ#VSx4QkCZVcN XmHHCV^Oj."UE x%@H셷[7\ %lʵel=ຯѢ29}i #qԥsrqI$B$2le~TkG.cgw4~t;5Ƥ/6% &׵pUT\G{ OE7˺3٪ZHC8AӗR! ,K .<ژwNjj*,[ Ӓ^㉍@Žz3,"qJCY9W(H$@"ֺU\CSm2ڍ,XӍO,Z~u ]Hr8}TB.v8fg|3Lr{^o7;F5;ϋ$f}&@LߠqVzC$#R?!Ȼ1/A$,Z+h$'57 )t ĉ/qR>̥թ-"@-Ԡ6]1U0uKr (VD.#mG#G|[c %bV+^Pa[XXoz9St5c&:Ug)V*U~EV&XPб/~X,!!c0܉GQyBJuR.@nNҩS'z3 i5]ހqw1rh.c]Iqh/G|mp"cmr9Æxe?6Ds<-^!=>cٹ+~GI^ˆQJLe/f#^9Âړ_ۀ2 A>߆Yr[n-6IDDyȬ*g5)SJ@(t$_\s _3O>}Awa #]c'=vO?C(3P,ԃ'SinMҎWzglJ͉]^Gmˆ#Ԇ,iq"'"ٜE],c1OI.^ӞzyCЫW/G_32|1]EkieQi31G+-X`ZɄd~$oP NK/ʣq|߶H+S_'y0d8MM ҽ=7oq:\<ߩڋGx/&@k(dU6 tv"ƢQ<"Ży5U+?ͬ?G]b B?okt=1j+Fb]K/KNcðqύsⷽINN,銆j)Ŭ?cfHn5=ʓ.>a1<=ӦMk-!o+&BJ=$₯'ZTJ:'(e_N>W(bcc0`̿呭pu(}.Z dd`3 1u#ٰFbJvދ{HJs!W/WOf"DOGkR)6N1V I%8l24\7jAV1ڕ~ca?KjXe(T_{ Q4 . @(5325-qt yU![x)KЬ7_>/GNtjz͛t+woEy%{}'"shlVQUMV=kCh|bE)S!"SZ>& TQi4eOnrˣU\$9k&9^G[o{d""Ms/VG((}>vu VҜz)#!+r=Oes$3_w)祃]4 .i4Aj0G(?t~Ik~?ȩs(>m4RSS/}u)-- !8Yv-=TGrL/NaYUmh4=wUz ;z~<+s_ kQ gl Rx)ul>$''?ybV );bkߋUVNcUR$%%]Hۃ-y;nSՏͻ>W'v7\/$ ٻؗ'1ɴk׎۷>'N= o-޽͇;h|=f-d@ؚho&6r8;>;gߩ鯜L#eh zO^ʧ fN[dA&EK]wiTHFpy3U h*\Ƕ5w9mw(流T Ga29~*_vEo43u6|""IƪD(2zpsoe:7gީeǎpZ1MdtUVϢ֭)<1x0QhǿY`3,g;M|!](>auә)iBBJ>".n ;_qs"w9g9XfQ4Bb Q4B%4%wa2]Trs #IgJ EZ\{ٳX,dd78FZ+OOg7cp&ʍAW>3ZI>;Z»BN_GAyTG}@g/1XmX#UIeEifmGhƸ?HPhS<"(rFiX5;xZ-zI%\weUz]1E,΢ ޯ5pBo41uԐNQCx'iG2ic \O2֞0d˾;PǍ>F̙3窗jZfϜu 0?A뜷?< \,+bT늬q(S6g%h$:3uT6mRзAxrH "0(_~ē\"doQ>Ӎ(9kSѱVjRdHw}\ѣ`ǒ3(ӆm& pâg/0OήLtQ#Mgܲ)1R$ү0ml #,;P﷉VJ&=->| 9Ĩ&P@sm"ɕD_f.w*ߑ-pdiIK7Mx)|?//mݢxZǢT->C떑\ӈ,G!(yI9*@xc"Dv]ֵ-E%lOLj;C}Pjd}*w<tu/B@wmOlᑇW۲MaL K=ye[L6ruMdq)w PF [-O9q [A8q\€}Y|}t6t&n>c{cΜ9׭%P|G/#G"WOYmNnal}{ f.|m'wqYګ )9ƨ^a݀g0Ծ-+EN4 cƌf upڟ?(@qh_fo4iԷNjn-ȼCDK^:? 6⢸(LT_) 姸=trU1|5:7)ɞ7鯜lQj _K$Pw/GAK,̫!o*k\գ*!!al6[e/gkPzm AjfdK[}rrpc7@N:!"xy !^D89P;OĆbccyCmVg=8e-@4??5jLZWl:=\HoP@b l.Z>]IKKY2kL2.f,2.m_è_} ~CQ&(c!md0˧8e߱ޞs{khtoBe(h,l ʞ5#Zam䖝\ rt'9UrRS!6цMQj*D>dd1˓d=GS6j+p|W=,xYe3INN5;y3b o6[q0E\C'Fik-뺪k-!!!O$uDe_ֽ[eI(Oy}6BVv0l06<Dv@u BAPQ#O!QQ'bƏwgϐ损&\=ɀq,TJWk;1f?Uft\&=Vdn;m,KUΡ-?h˯)K$663fCwCӦZdKȾhHia gOȾѸ>2mL#-uo X:\M:;xVy7DtЌjusqS*kDKgvěy5/ewW{^׸ xБAdׯ]~t:SGSzKNVf9╯бӧOPNEh)-q?,tXW#++~҆_^8mN/މ~/DZ&Wج'>f=_lstA v 8Wj̤$>'$$crE1kᯈٟ.{m;0(/PNC#9^2V$z-&6Y5$9NIjTUv+ĠɶvO[Oa9LčLzz:7t( &L~SN4mڔ0z-6oތ7& 6l&''{-ZСC)--)_WHƪ GEYj^9/ ׽:܄uɻv.~1[N3m^^E9}gl{ܹ??joz=%Ѥ[+xS,'c0 9),,͗;{ۢ_$slN_ko吵/{?yۗ!VdXѐR66[!FF,u}f!OP(Žbu)e_O׳ha5EE` Yם}\amה 6{?Drt#U^BcLII]Ԗ@u=sA& dz8]0D=%XeK3nqv(Lll,1< \k޼9r'33͛73}t~wz6ml>'@T裏hHOOt:^~u,qÑm;J\SKA}k3GXR8F=@ U󜶡ʜg~0OFP,ӵhZvu|:r Q@;6}ÜMI6/<qqI MQ{ԹkDʙ!!}f^Se;8t.x7Uj*à;OY1sb6оۓte!jg7vd͑Ƀ|DQV͚|A(IOpHna\{930XPT^^X)3b逋u3tkg vW塕7%Lу$x7/Or?%l< ̳H]E^]z=)))FfffVR!JMīi7ބLax7~rs"JVQ_UMw=O9Ƿ Ņ0.j\Ԇؑ]^ $\FLJHXmѐZ5nl4#x{Sի͘4>it&O\,??-G]%ħ3(/2((;ɩ>JGZ{ߋJvQ7Vޔx-nx<Emg۹֩{m|'09azC iiiqwX?iEmusǓ哘V6du=)yl/C:?Rޞ<6|8rvZ`aҥ ]t.=xo۷/_|+Vd2!'Om:tPnz=ׯUVtЁt  zfTdJP$$$רB۳oغ7wC0BbYĔ5ٳRH0vh~n %7i})\7瞫Za,JZ=9t؎C)JN#o27}{ ( =-y.{ߝL'XoKuhJ@>9¥nrNvg"JdՆݶ ;>y1drbCUa˜Z333 Ն`M3<]X,IȱO8+/fEObTz\LHIJJrIH\f֮]Ktt43駟sNF#/'-Z/@vh޼9)))|>]e8SQ\_(|rZd,#t5D#!P*`<+6 'Ny _VO **w;ߪ8zjhERZB.t,<(6*?w*9rdbذa8]뺂uEC*n!<\E{KKJs.R QF8l|uN"_8wh}TbAWbR9Z0ӶhsIV&77i+Ey,,,CZtN,E@`b*fIЋu/\.\\pE׷u nKYjNBz@T2{l ɓ/{rSPP,Y .*:t(Vb֭mϜ7ްKgMjNIMW4Mz &\SѸ `o"|'N99m5_ b7ʐhlvHUu\\[V4&shGa>&Ѭx*cq$o "6/bpb`Qb274}q-G;r?]3@#^cx^lXC#Hux7b}'u_`Ҷ%>lmSeիQ$իWWΩVӧm^|Og 79l9XYD}"Hp_㶀I'K*7}///|}}ILL$99ozVZѢE vlfʔ)lܸӯ_J-eϧy4oޜիW3x?,qÐ{/%(U $\]ZEu=˶mX]=JJo3)W;NgȔ'v39j2ǿ~ ~rOVT~LL #GQRx OcÄ 8* 2 jM(6.G`kz{Lyad%2bEʑ9`iFEOH]H+5qZVߪXH쭋a.*+Cn[̊_F/+ 3xɂ6Q"n>+|pSBf#/?͖cLZ :%'öc,;lHFGE|~"˺?pJ_pR·Ubkaw(xF1_wCz'X?_M?k^Hy(&11ӧ;e$$|}}?wssᄏSVƍc6/q|g=ɳ*qÐUGlɩk ̟?V\t]oRnR2ٜ)O*3țIwl ȫM jǤɏw).C$Ù욥h4ƌn2gqNU`%ײֺ.q,S0G9b<δIܔߚE{k.콟./\Q&hZҊ:%!!!Q8 ;SXX{JwQ*$%%ѳ*&M, w vYKYJ5{?+>q~~>⟧Q7r yKGqsTK/XB]2f#j]-V%11&0hԷ(U-ca6C"6J"'/EFƏ==gqB& Uu (.JpШ519__w}hx;rbrqi: r1%Rc&lDQSђíu&A(C<8xn)^:^&ڶx֜/Oܕ7-a#(w`ݵ.3EPvF2NPsofƪYJfwq13q:{U=^м l4{܍b 6DцRB(ٹrtOCWW<yk_%k3ky,Md>3DNp .ؔ4q.gh >l&2 Rc =Y_<5aOu!_ɚ5޵Z-gٴ34cKELL YtO39Xw$aVM9j;HD:*FZ/n؆_7ܸ!eX=7wlC#m#+ ɳ*qàjK?(n˻ e.tu ~$cGSٵ=dqqiJ\ZɔC>gpU%7Un5rr"Ou_, {ȻjY*w\@ׯg[AaQB|F3f'>#wuoi1 gڴi~.9Y}Tcת\ ~0-10gΜZVY 2j K"7"o.ަ̱^6 ??5|j:J& a-2xW覼ݦ#J7W [5Ǜf+MFB!_ʉUh>{cOuKZZ7;?ϰNFXMz26`ټs}xx܇ƣ/p4.{xgr.,oKO#&=@n \F`#4 |Lr"Cz (D drJ~+fa JRy+dh:%l'T>RFZڟ\׫wiLwgvVըr3;vh=w YN̤=+s-\|C1o^e#w_7Su~lw/_O#x1[{KԚ <;<Beq퍯/rsȄ{D#t{ APz*y(A/[D)O僗3yt}몡d-E8c9?6am>vSmpdh w"@/1' Q$'v,L ?o.t5!li=ziO.*Ü !LՌ"!84dZ@abgSm;GdPFf^l"h1VOZ3hpS\$ndJ@̝I0h4ƎEI=Cү^ 8JTMaa!JRza5VZIo^NA[W]PV;ˌB)5\8!F/jݟ!#,GpŔ Žw^&~HK"!!4$cU">>E[c E3Xo}+Q tqs{z.'%Y5M@hKgTnz=%qKSn*Mi;s DU[3\7 x@uT3I>74ُ^V}o{att4-sjn3k:/ Ϊ Ve̙͜h;PN)̝= yjˋ֟UNa3G糜(Blhrey9;sHz p#lkǞer똔"!!4$Ϫ GF{qxLRHZ)}g"8^ODDD`?9NGmX P}c۱A3}mߍЁ(]0Rvdd 1ɘ1u-2Fu+n)< Weˣ5nǥw۹>N*D׫1;7O.œ5 ǎb9ڱ"!!<$cU↣BX#w 65f!hVN4SD m rH=P*9 YL(p#S{l @Ph}sT-vEoX7Z.$$8Y "4p={őP)A+[ :7ᳩrCƧQyQn.M%rZbs||<En>@1cZGͫJHH@Ha7$OvjA񤇱dU,PCގիW95!:::m4;Б)L!OQz6uP ժp #j<`ԨQkv0ȄF;v wUJdECJ.PA.IF@2svSucЋ'Y.Z>s "7,~Ō1>|oRNQ6%T>fZbbbe`(8(=w MPD oR7n ށjݶ6}~N3h `ܼ 1㪬jmpUv£M}-}CɂN[̂ݒj Dll,wxpX֮ uO3"!!t$cU'66c߭%dPaI߃(lVYck7>!ȧBv=\ FØѣ8u:cw#ȕHϳa++PrOI;ndNXڡꫯ3f QQQ:L@J0vhLu+UaCv[;8x_9?пgOWHqqaBxXEϔw"!!Q/Hƪ8}/gL)u))؁P=@/0EWJӼRHTrbegG陃\k@wge2;kL-O~ Yj׮&3uTyr;lج:&-iO'Z.2J>uRGisUVth25Ldo8e^-rDŽ ,hpjpP=5W6Ί9;-tʓó_"ťS>({yO'|aY7My'!66së&#ڬvkWYI_ܯ-zP-Swijy[BZL& Ƙo(=OZ*M[ģ y_ipRڋ@ e]<&qg{}d~&..a}ؓg3|pEC*Ta Mdbyq[ Yu>N"ӥ0?)/`Ê +XcdhڹFijo8rmkRSSR."FE@~&)kk6[yǓT{#""8{$)7[shպ'Й㦪7y OTlB~[,g>G8ell,۶m qD CC'!!E p) #T֝ aBTJƲRJeìOzƌC|||B+ճ-E,G&YۆY/kJHԖ } 24MM<N“2- jhYP+4YIȳؽǾ|Fem84,[GJCpfmض?6mr$''zvB[nCA VLDDDiQQQNђA3f4s?Kk2%[#9uae|lh̘ il?a{Hk4"Mn,c]qNm.jrAM݊;3 #"AGٓ*!D*< )&'*TO%Xu]6;xzә5g0=ř?^e6+͊=y=`sŕ9Ĕw߰nNoXwҜvLfn^EI"w4nܡ{gpW~![UUsG4qQ/2.|헐Q€%$Hrr2+REl2SM&GĻ,;=W5qc0w^bWa84wRr(}pgU?AC( O\(nQzl:&5xOB||< i Ov3>=Cs Б)L!xtUCf,C9]}9z-J/qID32lS/^Mh4;"wW~#Ǐ,'鈢E+;䉧ﱋZjll,G{HGIdQf0 dׇYA=uyqs1cw|媆Y_!ߘ&8,5`q0ߘ&#mS"{=Yć^'ibi>+q_X0$$${<Po\N:U|໥BєGޚC`p}IHHE:^ YPk#n)uE2;q&?hi*v"%%Q4E ͳCWpܴoIQcrؘ,4^/)RڭWc~zϒŦi'NB5; O%g>;0;/ol1gW4#W!]≠&$''>yw)"\a[`KH,srUЫQ:o<X,X,rss裏{*=u!??qK<"Ǭ?y ~>wn^ahw/ Cdx&b&rͼw.h1Q1(((.>vWgz;19tޤ]޽{֭%%%k׎={[$cUQ!2]{laվ_$b^)))@:|} '+ַSyêlB吖eٴ4\=kW6yш(>D]V/qwɓ71xkL a-Bfq-`ĨW d{ ^cיDts̘ (~OoeMBB%.VmXْHrn~.nϥ)#.I0}l6Fs(ͱ{CBi۶-o#GDE&L?Nt\\\HNNÃҹsudJ4(*D@>;~P4k_-:ge˖taT䑷;mw'< ^'ug1]ݟN?rކ<33&i\E E A@hZ}a̙;i2n>1}dM4S6VHnll,G]#9fLha!6DцRAak$vMf39r]rTz=&Ak-uaM;P~=;;L|A233 P7u<YEIp` NtYcXr.yCD~pA~"!!,YF_xxx&L͍Gy{,*`I-Ş3Vs65{e~ۆzIԫN{w+{% ze&Al! a]Sda^6QTxŖ}6oPl,%YJΒm&s9{(i>{{w^]BJw'Wx!k^':yFFxlh7Kg`uFKgKԈk[z6Nⷜ1;úC1Kg>PǟL^oRVEy_,skO\uUݘ+QPPitkb$Vn gj+F2-dV<*^43]VBBfĈ KeeeU/'O/`ܸqh4/u h0$''j{^ ~+x=1w`ۻm<|<|1#(={籨u$g&\Vjdff"ⴵՓp=ˀpj P47n3Kq6t'Z|&QO0`:{Š?okCمG۷o}/u\X" |'SR&̯Zm7:NrZ{:+rC^z#55PY^?f݂6҂?(+# Z.֪+q/#.٤$ 5XBc^i.R),I"$;+QQ{I-jfgXVBBK/Ѿ}{|Mf3O?47nJ`@b * HHH@~됣z--;,P ~ۡ~[>3AflzWlGv/ĂlD})"DDDEtt4111 >Eb5ikto-#=?fGTQpj7?upXKm0_c6eQZ9s|/Q䊫gksJ,m={dL6T6mDZN8QyCDp שe233\~N9עk rN3Vj/vV~bBdӬƕ E8ǓuIII,Y'NȽ˧~xҥ ӳvѦM4i˹{Z%*qsb\owx_.Oh(NUs>^s5j5'Օݻwt{$%랔tM;Ԩ-YzƏout1cF:#4{7⧅s}مx}Isެ2ɬ];QsXjDDv0E(/=Lqoh4إ+6mrTz[OxO 5F .*_ѹXi=w+ҪeÛ[`YkSf;Gsk DZI Yv8'pX#qqq57%%4F_[P;FBF@T*XNaX(,,DR5hUX),,iɼ|u5Gq RSSh4֣)?}k<&뮍(ΟKv1+43sU'iqkt-Mk?8RRD؆ 뎻_j׋%/ep!Oƍ%..^K3i]>>DDDp[TGpݔPIHH@]k&?AlJs% ef^, l\DQ !5FhR cO.ĉvsgV#:~xIY?Z1EQ$99ɓ1}ePjZ4.Z]:IJMgjAZ8k&5d$''~vq[TmC>1|3`-U0<0o 洵h.֟J wÅ٫j<<pa%ݐ<;RڌK[(޾]0Tvdچ^&=MH)>(>xzv!$xz)NpqJuk GrmN]sxeYEm omt Y6<ͭ !![\;Gx)pz8]ʊ _@kTOa~X֗9s)7/`$$WA@P Ku ןNrO5OpVHIIԷ%O_ 'jÿֱFij/ CV JCTvZj);wmϾ%htzU]|9-Z&a> >y^dr@'%6>wa6FDuV-޾Z.PZ|?q:<|||6|&OBIu J+:."KUUxsl+oȇu2T+P\2?TKM׳haTת?_Y+n5GvR$))œ Tꗵ1ftr !qz;>_B2V%{13c/?ړ+Pܡز_^quPeVGPM:ߌƗ1V$6 cѭ(3(U1ztdOQ]ݽV-J,'%$$~oŔjWG\Urr2VD;{sXjUMII4iFsuغ=y߿ϱ>έcx\?:v?OJ,VlƜyu>>?sHzsTVE'Lh.Ev= =111<\fg` Y;j|XVXf#-- YXK_+P=&c0-y[ (ϻM(Ҝ֟=ÌМq0q_BݘuQbSrz;s0qV?˜pĎݚR>ta MuhA漼:0LoqMjhjj*'Hq3E{g:|rʏ'Ko߾j>}:gު<)^xj OsI&ry>oaWUr,CzDDD8? *qݣh;z}K}i⹪7Wƫr/ȞX}'"Gށ,=BĂl3\?A|TltMFjj*6m"-N8QɯP#*ջoEh\TAShաT:/NFfZ E.UTZRRRa^КT~7;)5&3 )5h-@-SB#vJȅ=s4m-uU4#k='9*Z*3'eܸWS{V%**{h&sNBuQQ;h(HƪD >>E#EI.;G5skUfb++'x?e1Xv F,/AVMnMHNNf[Q%p宴s=UI4_{kCS]5k@4('f1o4Jo B'8[Ƒ/~Z^g$>ֺ 9{6撂x;& .ZԺ|Raa!CofbE|ҷ]qԾZ- n>y꼆4IIPb fy!sL-Ns~Ώrh}I"[NDfxJ]q݋~mJ6- ۴|kSV&q·Xl*[T]y**%*"he22]iBfIE2xyMx8jVK$0Rndc;$ZBBB>$u5{ZIR}.OFXPJkv`=!: ̝}Ftt45n^VtAw3?cРH&IDATaSIMMEޭNmݺP3Ci4!^wDּSMJZ^OJJ ƹ)hxՙFwyʤ} j%džss@Sm?Z=Ksz B /ɮ3I@at yͿ~e{#r]/@s+ iWAb𓷵g!CA0of9AK/rʏw9l%ߪe۶m,X,ԋid<8 EBBBYHƪD%66 (Dum#jbkq,[ ̿jZ)``=1G_uQ LSv_I[OӜk1II!s&UP!8á=}tM"\&sE῍JCMVcPy=A]PmͅgWO.ᇃh2*T`*`W8]w^sU](} SXJ 'I˞Ͳ16PS]/=D{W7ߢa~&ʾ+nPj^<۝t޷ w2s>ˏsh{6'Kgܸ|`='r1whƪ?Dk4R<8`B%$$$ XhTYW3yeu57mJ^^Y'mPr0٣?B{FE\j5GFq` C㡵WIgPkH\$33IQh 'kSZ?ss_bShaVc ]]ax~&p.MCɸT}QQݝRbH;NKkvb6. os@ۯhV\UOMw5E^0?:ſҷLdCbw_F*1X(s$eslAg:Ovj%(**_8OkۋJ$LV\L~Lq ݏ9s4h BYOPQWs޼yaXX,pFeu_}_ο+c+Tza1M%Op^x)$ʞ୤?dJHHHTXalxUz:Ő{"WaYX%yihKvٯUޛS"hzNXy%.XST}yة4C3>&bvQ"cÊ +%b>lil2/]ã0>:Cˬ\Q^}] ) X\7q d] k! ] XVx.۱]v6/na*:C=lվW^L'vrnpY ϯhpn(#nǥ@|N&㡌?$ 7(Zrk)B-r/G@x,g!ryꬖrwG4'0cM4sH,z mD&#'&A͕P ~0?w+>:K1z]!p{|sp;w^vߩ+[`쓯pk ?1zb 6L&FOw/yf1=Yc~ lOe>("h!tTEsiKÆm6*!q ֭[WCgO?TKO̿?8p`}]B约]ATTKlfРAl we~Hs{fw63*_vtk-d.P2/a;blѿH{o8 ?/|YgC@#:S?(!!!q"N"w6yWOWf#j<9v?r0睬vL/C_fV3f$&:V3uTC6e)[MD# aw'T\yŨ Xv:mgOT+s}q_BIn|Dъ(Z1))řc;QOȑrL111# 7z\񌷈h4_9_Lꔣz-|=;3]jt X˖Oؗ1VF[%Pyc1m(Gk= |[>Fvd~`s6-U'%!!!ѐrV%$Krgߔdsb 誸^ʡ.\<`,3p Wϑ;xZm}/ӑU 뀊cƌA&gABӶXkDi&%6#SsڤmF5O;hP-gQRkʌ'#` Q$.nmj̚m ~E٪<Ϳ)YIUdjN"wZM<=+]aI>|FŃիsZ{ܪ<K?8)*O\CFדp1o-\_Ddky2%/p| ,k=FxR~w&kbzQ$3g7 {! 4TO[40㑭NZp 72F>}5$B5(s%d*7??p(j=k&C&,PlLf1wyˌT^Zn,.E磠`.w\r_{9>_짜-;Pro T)9{3c!h7E*EVL,vן|ɥv褤kx۰&&ði.)j9/ gfL}rhD#33o:cP-Od4~m{`6!Sb[L{M2ǮbFɬٴfWP@)h6x%+A2|h?Lg?jE+1f}v5PV7Z^J㮾hӭx6# lѡyD.% 4 @ "=H L j?Ug"=&o4_vn&-[fʕ贱([DT;nP'Mexu?9ˠA0<NA2V%$_H}6 ơ2nCyxFm}6>r"Yr%*1Ϥ)D NWBr#⡏yJԄ #ށJ 0P}vCiفZgV\}3E Tf nV,噧dԨQcghV,( ]@EݿԂS\w܍ dJH@V'ۺ86 p=4_t >><7U9 dߤSM:mdzGxxePDja+%٭TA zv;vz e\^Y&]p:k=-=E}ת3BFcۃ #p{yվ_4t~.rh:OسaNYDqI&Z&wrBvı"1 'Fg|||*ؐ'pWԮLBpFI\*yHaa!+I.yg]ţoԂj3i9"!!!QW$cUB‰$}1J '?GQK׼^G{0`Fu 綾huHmٳ W.??SII=siazL2c揥cj5ds5ra^|;E/a<2#Z`Ccӧc)X˸L剷raìP>{S\6_#B.b Yed7@b\SQR^{sM)'"JQQQ/ lM8W' ȹC|U3ߔ&:^yg: "G$$$$dJH400U{Vc9}ObF˱<:m}4iRڦZ B (A7ZZ* E *ʼwt:TMAQ["̠p/[-%M4{,nŦm.9gy}Y!L݉jY:5mg(bÆ p`[ڇ t> ˕byU&čx C 탇7 !"|(CcAX<8NODtaw a5JJx6ٰիq!TTTrr{Ǐ< Er:ZTT =WN(mм =[umQK1yFAY8D+>_C2~},+wG DLbb"lK%j>|]''_B6韰|D[wUU;8Ǔ]}Fp`阓=ʈ>蛸=wbܗMKB`{`_yl΀]يtߓQ/53~_VSqtWsE vWTڲZ-.N7똣]q/H &;G3Uv&99*sܕmjSI6תwTcTCƣ޸$2DL_kSDEAۦ|A|pC~uס-> ~A#%#11U[PQjE~|$ǑpϔJ%fNd7[azHoHV{]SWuaÿşYko02o#?mpyY|i#d-w\#d9BD03JiRQ$ˡM#y1#Lh"D"V)^SnCƙ_羄Ȁ]p}!ӻ}~Mvӏ#IrzG)a1!‘^h4X|) *G6谱 ˩>{MQ? ;;ߦćyzTXn >ț&}`tKŭ>05vB h8tm2=:uJ DT/щCazF+ʳ_4yt_B&߱;{i$jڵs~=G-D+) ^_nzG=Z> ]`;#%CSR=y  }Amߤ`Dbdgg{TJ<0~%ð:+ nVgђη*_Q%,sߪwTqAFJD)R97+Bt8>k;9BDQ1uzN!pM!ȔpBᮯlq%WV)W0h4KHhek/L/*cqmbǧ7ÉhʪIXtT9)\;0iF#󐐐֏oXY%~~`?Eֵ9YlvX͐fQO`GfȔ)! Hjҥ[_LիQl}΍đ3#U=ȯqM\& -Ľ:+Y<7ߋnOL /Ц{$&&mO+i`0`zljlжz?Qbytޯ[P/Lpx?u9i>(0u`(` $6Bk=.:ԶtYz5<,DFD#T38P[EߘPʻC$]z\ #z~7֗cAؼy3DQl5Srr2P:j]g+ih4"pmFVߞB[;O=߱: =_mn#܅~DD~ŰJԁ%''Ci"4q!!#PѪk8pjkȯGh48m)r8L>Hu;q}UP)oGU)1j >椾T8΀ރRT|[k}SBD7+Z޷] C. oz Ÿ沉ux6 +V9BDQ1u`JiRQ;kV;B>AҢn;#{fL$Z~ S)> vg Bh#T0zЧL81533=t|5.:F+nfH??Q^#[6q7 Kmp,vQJeffBQXvAKm"(Pޏ$WpG*.^HN-HE0nJo;w"===h|Rr\bq4+Yqks nzo}Rau~IQsbX%4 /BoI8,:ҰXrUa9 2㘕 ԝ= R8lsI)Z7nĎ@ A켂 Ⱦ[ulٲ%дyEb:OKMѠJgݷ71X;\F,=msbX%z=܊- z|ג&z\(4QpvEg}/ѥ|?222~[Vf"E{]Zހc/ (pGۯo%x&+Iɐ}[UۖU=GJdy 0k>Tƈ>am7m O}S}Rau[17&Gjar9;D}øl|KCS6eGm&V'`+wuT D@/(PaO*e=S K  [aӂU+޶xMK\.qADFTbTHs_Bh,K'զDnZeNO5Tܒβ t|s]t|/܋{kM=pmgmaM yrpjb9?exn,Vކ۞'*uJ DDMM Ph8Jl玠t孰c!Mz OqYH}$1`effu}X[ގה _) Vk׮G~_x%{ v{@ﱡq5W>ZYug `M{-11y{>yu6yi|(C2GPLWcJτÇ-@̳뿟Fqw#DD/#++ ݓ ExN@ n<"YwMT;jvAzg?^1>ƵPߺT? Etwg} O=\u84ܴFNNdORjE0 HII z;˖-+!쇞wkptx*ԸP8b^ 0g~22俵d ~ ϝDdH&zLp3N|0xa<]lk%؈q[/&rrss~Zq[qJL^G2(7Jbs,}pܾ(7RYi~_k>KDD+D@NNC?TD@2iHtOyv?| V?*#!zg@6v9Bx/xh?}`9 ]cm-8\V'w H _0ЄM zQQ0i[ff&֯RS v#ddQ`X% 4B}|r'Hp`7­`N22ִyl7ز&a1[t _G#waʕܩ 1W߀VC^AA[vh4X< gLGz[eO`F% Dh}>` :鐔,aѣ`nxH稅PFx7.Vu6wDfr&`H:=ؿ?|c*}7FxDMęwKDDt*Q'PXX'D#22l[oO7~wpxed?B. V)Ԗ`'d>' yy{ك*;p] !2 T>T@{1/hhX>v?1[]aux갥l f= *Q'`6!UDnA]U6Yh rssa4Vu:$ef]8YV`0h4h4j2djjj @kNB(Z~6,@0Ʊ46b3 pW"**Q6n#^En[eO`̻FODD°JDnpX:|0>7|Z:HNNR^cL&vzC6aS몾\ . E8vJ0^O&F4aʑHyUKۡ_pudBb;ֻomsG|84ލ29W+ XmDD8UN@Ѡ^(T=m!\Y렌f"dGB޻9pXG18.뚵B}>y%3a/  ]e!qY9!:UcKy}^{] 4"#ԪcN艈1uZǪ &@UR2/=|<ԺR5^ݓDC Fu4`+v X^Ah^u#q8HMM[[ON79Qtt#=A"xMb(؏SeIwׁ#$%=֏jFu:Ғ°J t:(ؖgi.QtRAxĐf/UFpVO9ؿ?7~e{>A}FQt~$"? zmD[q$|}) 1{>ߍnꬂ}N,?"DXIIIm}^iW[w#=53~ I*++ zG)򈡰lٲfОE+0-QA}vE|+ wr$(4Kѐ+uPĔ&n] Xb0W-Vk׬Gl&/n!_q/)P]:<=ܥʕ+[qv"""7UNDc5|wb ٘=)]TV+֬]u\dvc6n܈M[B}͇ H}N'BBGAڌ(Fxer+_F:poEP^cpNm۶ef"""UNDdgg#z5MiTrrrP/R{Ru<ꄁ0 ^}d2!cY曊/IT]ZӟT5p:D8sycq^oAF)GT)" ֿocȷV:\۷cfC˿q=nPT (cl=Ez٬,Ժ[jS$!F}+-:^ v[шPY\{%\:wx|No8.*DDDt *Q'$˱n:lZ<"NgB5g>^.g|D}2od_TF5u#FcZXf=Y~&f6կC-; CD̿چĉP0 4@& xv.5a8u"N"b}pxc 7֋"_sl-;BdX@lBHՁI}PPPrrrPج4-%{AP~_!Q!+ @5Q"k hd,Z0_BcJj琐.^lF<2`IB`b|`T}WK}=P[-W\.qr%zt]eRܣ]EDDDŰJDBtZFs[O:[}u\$ g!%B6gVm|h :FJxU !x1Wyo]gZ}7!PmgU#Pg?{NwVjp[ RUul6CFi$<*Kْ{ERR0Q"`9+w\vEA;؝6,\u mxVILLwsO}^˫Fu*H|4FF*8$]53PZWj;f`DDD*u:P{=]pҫV, sE}r.T-űQ0+ݛ~r7222*u:JiSa9k՝\9Ut:AtipCsWPsȆly _,zi=fT8k~ AlFt:dggc]r.dUc+!=mhX_x}- öm ȿV3J !O*Ip:A=ip[ IY{qu?`6oތ#Bw~okx,:ri\.+M+rث&7c)i(Ok_@vv6*QJDZCz0 P: ;\ iz@h:4 ! : WǞ?,\KDžy6yr՟!H"|rJ]T.x,˱n:s(gρY爎!گ ooG^XZZ!87 |J&r28q2u0"Fނ>uBxu'zcH{,T3 ^5𯷞Dyy9z6l=77*a?r4aͿ+_x1vX,[ ٷi.KU SDDJju=l6jqNHHHU""a? W$ZED$!•Q ð킣8$!) mERL|2 O<$`]sO*/UnStȄ0_Ϟ~ aʽX5 ,YE`0 77F;лu:$%=JDDDV~p'p GJȮ^yGAAg=^2}11 ŐcyP(G_ ^'{CXPSMgP(<'"""V[d2{B赾_\j̛ǩy=#<5w&\3Wg\ #RA^/PUwE/Q3eeeZ2?AzD,[ zN5a/؎Bt!MXi^[djƳsB$郪 BM=ƍ RZsXx1vzic}<*Kkrڏn̘6LȯLD 999v] Y~_KPq v䖾'&ȹ{{uYy9”{ir߱JD Ā'H@nnw810އl8mq_DCK}N!W^x:Nr)+DD`4!|7)z$>=g;?Ov;NjB>yx} TJDzNٴ ש gC|.?-)φ(EqDQ%""" Y[_QGhd,Z0fV ]II !!sTJDc )))HIIiK!"""jLDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAGwNDDDDDDT1cc0U"""""" : DDDDDDtV(0QaX%"""""ðJDDDDDDAa*ٕ~{Q'hXc0U"""""" : DDDDDDtd7S""""""ZN1[ {IENDB`gambas-3.16.3/app/examples/Drawing/RandomColorSort/.icon.png000066400000000000000000000071171411575327000236450ustar00rootroot00000000000000PNG  IHDR@@iqIDATxyp\UvwyIwY[fC0OR05RTd,Ԅ"KT$$ ۤ f H1` 1ƀedWmfY-_lI)Wu>~=sϻ0yc[]CB~G+Ss1F dD|E&uDφG~ wI-oc],.*xa.Í ]}akM s}:`<+v'DN?9hVVK6hx77NǿX 8qZ8ߍ ]>_Y^L +'9d_!{FA\I5$٭guqc~:Ek YJswdƚ:@@RSӿotHO :n.3G\9@ kRH[+%Jdubʕigƕ{.m<ʺH/%"*cə,ާ1KWd-w63x7|KD 'MF+-m%L {bH"b %eۿڳ%UZ7 8hq>u0'YFMH%p)t()f3Ui̜OR:Bh@3ȫo>ǃ aa9uQK7GXUk V5gl}Etzh)>st`O[F$Fu"ƹc|foc ~brx}!7J"} OÛs0dXw&S H $Bo(΁Ҡonuzʁ>6ɢQȐNI c ÄGd([m1>slh0gk}EtZ"()J)'j]m,\yZQnjo,k{Hnpsl⧺%>'K7SvzvFW`AFU04H 1*" 32 ַϵZ"ܼpkSS5z^d8²xt'ӄJyQޤq n&Q!ң)96Ǒ|G[q#1sx%~)UTZh'<`vDe@u 㺅u6ͷ odi¹|C#dz%Dod0 hGGH+!p5 ~kf`~x>ep"GOj:[3 3J(OYFS֫ y H) 06J'<!}mg .߀&uR^SGXQ+( ZAAi57te }2~zPVc'}F"^>m6 z!]mαi:>%3<BMK=3M-3S—e`bGI# X@=Ԛvz c1˱{Y?hP(F((&NIt=#KnCJByy,8}⯄8S3Bd MZLD*]EÐdRT߸gnUԐuzJ FcyEk?@ %@ 8)ѾC2RyxTRUwVBJG; *"hq0(3 D b9B*I%ܱi8y5"f"TbHMau' EHui)5 mJh-TJvJKeŜ r\rCd1RMJd%3g k6n[+-bp/É8~U\,jIJ {Yb=/,7lώ{LjN,~`Q\%;H$[LC*]eUHvR)#=Lf;==L7h-'"icU Fҵ`̤KI'9ϩ$=prźK ~AxєA Q@$\AV劉)iX^?(EgVH&Yd-IjV[hWo SSP sN>V|_cC,JGLp> U5l @)DNq~9ϹP[kdtD"DbcdH34CzO^;BN)&8&@Axs۩=zvw(%% >l4K1͌S$%-ka%-C=P@m+ $9mG21hF!ݙ!-Ťxqe)hC-EH>8_aVH͂=/iXMTv$OW?<@8 J%4O7ĉ}1jsӎ(շI'o+3-H%SG =u s[v Ob5ތ,$sB+,~}Kʨۼck*a lgB T 3mL6W&8Gӟh)5 V5޸*o RK)&?`ar $F@,z2cg'sPP.#A'RmSWP F{FZױ(粣m_\w;0pF`;ڼrL:0qX TE@ &g"M}@+dLxxR$嬌l6f62yc_ɑDIENDB`gambas-3.16.3/app/examples/Drawing/RandomColorSort/.lang/000077500000000000000000000000001411575327000231225ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/RandomColorSort/.lang/ru.po000066400000000000000000000075271411575327000241230ustar00rootroot00000000000000# 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 "Изменить количество цветов" gambas-3.16.3/app/examples/Drawing/RandomColorSort/.project000066400000000000000000000010641411575327000235730ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/RandomColorSort/.src/000077500000000000000000000000001411575327000227705ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/RandomColorSort/.src/FMain.class000066400000000000000000000242561411575327000250220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/RandomColorSort/.src/FMain.form000066400000000000000000000024241411575327000246510ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Drawing/RandomColorSort/RandomColorSort.png000066400000000000000000000244451411575327000257310ustar00rootroot00000000000000PNG  IHDR@@iq(IDATxͻwegyyϩsZV+`1f|}Yfƾ\6cdl`H-ZT]Օ9U'e`3ky_z_Mv&ycMO .g_-QLaW[KhWl?w ,;{O?{C^Wμ҇>'Gv5 veQZYr~!uOɒh_ɾ ͿC{?vov stq?dRt7Og͖H.;$z?*E2! ˮ^8==L['~=0vgx_3[||}͛\{ω}7 }G+=95#c#҆o%ߤ7SSw{^w ,Q8 hTuܶ!7mba݆!&{,9l_5ŋ>@JD2@!cu.,]Zo[n/3W ~Tx~x~lJ@ThLu%5޽)'"TwF#GSlBX )p[#ߙQ=_I{Z$e[i!؛z (IT}T &2݂[5="0BM!HЪl,(r} ht6#IpL ]  d32請O\93QkR,#/i= ֪8U\ɗ G=KfX$#yΣ?2L:-x>+A]FS\7A E/f+>`pPj8$,f BbMQ duv}qB u7v6+QwPmirpTq!5.#X+.DQy]-'&C"m +wZ(xT7 E ?X/fyK ;q]0^ F;Wǰ[>=Lʲhta`/O5@iߕCs7Iݥ#*bDpmrXH.H8!Gl||e&ve{4K)ah(F2/SK#J)2m*M,2TYt룘cˁ\])$ߟ}'O?5!+ɤ u{CkTMR> W\mpFmȲJiN'6ی-Aiza4)E@ ג O޲OD,U^qdh";x1BCtFԢh rR3B7-~~&*{NjxTń< [,6(=B &46@I4uVǞc@U$#Ѵg;eDd@g7Ksr:QMѧ=5N(7pyZ%T-ݺ&J 8*i) P"[N}Kntn/+ 'ĤH @ưk,.!6w8\VajڕјA)Diw,n?G0Ms#Z/Hƒ!uNMӛ0R"{4Jǥj.+iI }2[[Ի_=пZu 9r<{Q BUD-$K7@*+ ,S;1rn)[D{UzTM\+ՙxqߒڬ'6b c#UGkXÅg$YIHB$UGjZ2,[`*-8Vpx]` /8 wgͧPmaPXDBvh?_e>h$ xC.7@P&(oԫ>}\:gg}~rm.aMa" -Akc ױ9WQQ e@_4$H27ˆ^}DCɷiAakM`L4]b-@"]s篢 a,YEtF%*.^gRuSoh}(3ňX4Q[h1fj.`o9 ؍ڨ. D[GkLfjWΑ_.Y^C $CփLiX4[z6M F=j:2/$%@>7BH[ $p(J?2AxO7">0с8H %$3 )/}~B H$IdY&YAP>瘻f>ҩ4ac*E֣?-h("%7C=Ǒ9ڿS a>}s<ÈHYAufi_HeRt*0 Vצt#o>Ao%VyzSY9,<}/vӗ\-S_m34ӪQXoqyr<_G4M\(EqJ"j);u]M'ԅuۦyth(Fc51=S 9d^(Q;-ߴ{^;ㅻO UW$ |LxM̍$*Mz4&!Eyf8j@eRb}q4;[].><јKW홢7"1E:"++qi[$Lvd/%~T5vcB FÆ*PJ]016|BxjБmoزOa۶1,Lb?R#>rJi7sq҇Ah c3]@IR=V \>_jyضJ^CI-'z4#D#D ӗ8$nDO^lIv7X蠤#H;mY܎M| X-0p`ܡUm^A<\cH0&Fiyr*#@9rTɓE_*w.:XWT MV*T{ fצt+4A* +nNβf4]OdC~R~u( =!$GEb^ إT85ŔHQvN]'b4F˙Kp]vO% ™YΞAuG}@0٩Q*UimB Q)qt]Ͻ/]ipx`?kVgQi*Z6Vp6;*} r9 R!p5MD#VaZNuaèi:se&& @"qqNO=Oaim)6(i؄eEԩ;6-W2LgNxf]K5 Lr5\X%Fhp5WK$0A9Fď2 hW&E@(9& ]ڑ>_y5:]aZNijZ]CH} DW `J!T+8F .?rRů="Jc[t%0Hu:N">hpbZ|]%gw=ɦuYܳ (՚ C^cB&COX(u[(P,(yY"#c̛;uj`"b &wzbJ{ɨa\eˈ0]˦"_!5yOqN1Y)i#S ve ezƖK3Amqכ&NšT\o}mz,zADFU#=8ˤ펁 8>68z0~sWZqKhHTѹxeZ6Z]Rķ|rTA^EDİH qpv"mTM!ŕE–F٬3c.8BVl  )&<;,(ևߺ7ݖsϽ痑N B"q'bc<,WX[ ;pT4dC.7*z&_ݤmm4I&z1p`8[>=PP)7[$,XK5BVbHb2cr/%yAvq'̰&-ƚݰCR*VPaݓ8RDEd%8ҳLD:;fFI]kpHq3} (~exl/l?y[M7*==^Sp|OC8r-GOӌqYD?vl|fl!Tֶ;|KIrJsz4˙Ǿ*;x'ss,nIP%-a03D\9Μ!+ ; /4N."ŭ:D02cJ/ M㍑hD0>IiuuKT~1ɦzrnʍuT̞cmc(KWim_ňUa#UFW:ö]ĥ,UD1'ӫ3gY9KEۇh٘ky:Z }8]2"20Yt ;}7`:#CXp: nW2m$W5<D2/7yjAZFLO -Ncsf PLc3K C@KhlyEz[ws~|]o(ficu:++G5 sil΁c—S Gh[YgVDc="qb Ҷ: v %QuAiㄤ,6і 7P1z)Ov\R*+m!/j~O/?<?&?y%+XX=Wk"-#hUB*t(}1hX|ct6LY'pLVE2q6`6[(JBC2^Wmvfvdm*::arC#'g%f0F !/Ȅp*+,FWm7|cƏÿu&PO bzw!':-[F9MBmB`=1@>$%@dwd~ϩDhv%wQ.#8ݺ֐"m_ +uh(b:{"/bݜx؂Eׯ0cə"j?_/$ຟeoKy[^UHвD!9U?|1ZfGT ?I* 7p A Itv?-.#%`5U֛ P{iE?G/'NmtE޾<ػk~L gy[ʗȾC4]+9}i, 8"~y]T 2]u ?2 hzZ㤱YZ;v<'1`VX@B !i"$mf[<5IGlҐE d2 0`/oe[8HxH%כ^Hg羏lk*yUua466R[[  w&##/JlݺUlL2%AAzݻwQD  B?bԩ444w  B]'!          7m޼t  ? h2,.ˤA50$7`-||S#c9"&&z@y <{ ͛W;o͛;)̎7P 534ZP [t1MXS0(n0Sh&1-n8Sۂ5/Ryj :/Vzѕ(kt$d咛;DN撛ˇl 撓;%?@ٶٌEzlAڻ^Bm2b# ׏a:x{o)VAAO_(Bus7!Qw_ŏ?rqc;㣇ry{]<؄zn>>Whߗ%ƻ"%c9b%2m~'!þ9KގL p/YUe|*( c[t |[Y9=r2_qncfKsKRz*0~IAz᣼}{o 6%9w3ig2423>S ½vA"Z&]7P^z%+jaYDQ4pƚJN٤ Z-IH!DQ%>#Zu$iڰzSIMУQKVv2EDSOGLb iqPSdFI&+SAA !k[ AAAo[oIEAAAAA~AAA~AAA~AAA~AAA~AAA~"oV%  Wuݶ[bE+ D1mmmkm( vzxn㺮w=yqn]]uc׮\[oqOǺ{zz'Rpgװ @@]w|vǓ$B܉{'ӽs'=׎ku7ϓh % x3OswL@OABBG?,}v3LJun,O:OГsg$}=φ/khC tSފcx9::?;]w{|O3O= Sos!( D = ="|oܴם[qyOqt{X>oiloR R\ 7NUUvCc==᭫񮄟+nW+dOϻ:H_孕mX}#UU/C :&n8w={e>cvCڗc] :w~;>j5$F'n )[ݽw'޽y&/c|AA莻r8x cǎ HW{{1\z>#BPA)ɓ')**"++yyfHLL$//8]z>Q7ۚv]u=ͱyzs6o;/1,wyABB+RRR7o111̛7doN]]}.؁/%n)Ofru7_o]BHƕ[ BH `0`ۉaz7܍q7=e&wLte ?O su]COպ{}믈kXA ]?g͚(>YhVWx-zt75; q*u7_WIutkWaf۽vOl#BPA ]?У`$\X;+D繺N4OOσ! =]':ltq !ǝ֝`s%<Z {tw5<&w:Ɲӓuaדϓկ<Ӻ}u #BPA $yu.yÕhUt"غ>x=O5Ob[??\{{iABBW!g=s8\:8= Dw=W;*h\⯛ם7]5$K_m!( LJj*V˒-c  bt:"'"K"5w|,1譨  `}EQuNdu{s|<.\AG8ʜKJJ?~ǏGQJJJ2eө6{׿uy}]ƍȑ#|$&&r-† z?77{{7M~kqw=))) [oAA!*3bծẁ`|嗴P[[Krr2@[[9۶msh4u;VZh=v[UUUdggwږIuuucq㏳j*fϞo[&L@]]oӟ<>11* |^ BPAzj/MoD]OǸ>TS欧r8}))) 6Rjjj4iR봶h/!!ONaaΝK\\k׮eKMMMsjkk4hz:;iʕ\~_j*nq B?GUUZZZbǎ|G۬[w}pOSBf2FDZvuv_uߔ)S8pbĉ}{jRRR¨QPdz{nf3PUU]S_UO~µ^KBBB]tk(B]]/\s 0tP+sW^w8q^{-O?4(ݻYr v~޺C,Jkk+mmmo466ЀfCc0hkkvf3b6Zjfa:eoN#66E2f̙C\\v@RRCPB7I]txds;vX>9枕s=GSSÇgƌVd2s^y衇A#|7?(X[o;3o .,jyTU{󟝽~iļyHNN桇r&#BPzh4b:mX,466L}}= Flf, f0L.vPNfN>ͧ~8HJJVV+:8;v,SL?}`Y\%qZOO( GիHJJbʔ)M0iӦuN / /{رcYYY4448_B0Tu(0άbвV+uuuL&gW:ZZZl;(fsǂ3j* ^ҧ`8%66!@иr68p`XSRR0֢*455QWWЭtBB8ҎVb:iچBSSS{AQB\\qqq];/ :4(Tgtఆ֏ב,h1WSSө\bb"6pMLL$..zgx-[9:7A3<_ީ%]QQ7oob駟Ç-~3Eĉ|{/$66 ? ~ӟOtbeaW_}7TUU1dEZKo|gt:/^G/ Fɓ'׿#GXD APMй"~!l6Bh4:lRR45598:ȴ`41LȈ .<#?1(Xt)V"99>#D`uu5\sSh9r/ѣGb n,XXb???9sp5tNII wׯg||<`ƍ7ȯ~+~a{9֭['|Bvv6[زeKߚE @||iii!n{{;455*&guNGll,---vfs Oсb2xG(٧Baܸq8q 6puױ~zOΰanOr0j(fϞ́lw}\~˗+;3fL}k֬K/e,ZI&vZnx n<z+?0{u{G(..f~k"Ozzzȯ(t)>Liiӥc}O,Ba…  ͛𘹹\{& 7o_| 馛>|^xo|ٶm9O=w5>n88#Gl;P[[Kmm-8%$$0|p!( $$$ɓ'Ob4ioo5*F~߳zjiS' z=&M?dA\s5_9s8FZr-{/~O~N1\IIIB\\\fiDFc QAA\… mcƍ9rSHl6#HF/>K./#G wa466rVZESS3]^^OSj~md۶mknONNӶHIId29NGHt`4;:#BPtaÆ ӧyלq"^O~q6V+{EQNIضm2a LK, RY~=555~Jڵkq"(B1x`V^ͷ. &nbA36:藈n㡇bʔ)a/lX"+Wj !(BX+Oʼyh fg BA71a+RSJ< _|1?ϙ>}z}v)<+BBз0gGaxmxxpL.~a?_aAB_෿ǻ;|Z=K 222~̙3{V<"B@7x5 47㏋"-[Ə~# ЫmooG1(BG|1ݱMMe%ܳ$>>{wuM&_½|A"BPn׷s=sGя~ԫ㛚$X>A!zW;45"^^;v젽=KA "O!p@NkqiӦp/[!$R]]X½ Oz={/f\;6s |A5h{sJKKýdA}׿?wUUG^yi+HMM%##OSO1qD y7^W_c̞=?йn#F0j(nx N>q7S]N> )**_WG2w\np-A!x5->0Pjký!$%%ӟԣTQZ;?w0SPV\Zhaɒ%>|#GgX`Ac_+dddtWWW_!Cx/qV|]͜H5'O52`y&LaB~/./?jNCZ[[򗿤/X͛7w'99ٙᠥ$RRR0L8D^rr2ɝߛ%6 l+ւ1!)/\Pko'½*!@,RZ;fc n&P]]-VA!j%|;oL&z=111|G|q hll,K,gƍƚ8q"yݿ?&MbRK%++Nnf?N^~H A?wJ'";<9sO|qW%Jo9RsQ%jEK.[n?l6_NLL {[/iӦ{n@+Ci&>cv;k֬+8nz!F#uuu d+Wsqf3> fbر=K A} :O{^/ܳBPQ~N^{!MqXigSW^:1Ssz=GaQQQ.acdddo? -[F||.nӽ 6T;xzb7#ϧsbHd S:JKOeA"#9vh l_9|Jz:TKFjJ66Bj =B%|EE0u./ϧtGWƒ {!{BPgZ5CөpF 8\+Z[Cs f#`%.'n$HRB&gKˆ Ll.S+OTp0xcI|ohT!L.YuYJKKE +yg5j#Ffn:fϞСC:t(gСC_}{Yr%߻w/ Au]ի9y$ .dܸq,]4ܷP𓾗,:4 lox=sxuqq9V|Va6F-i@G )1 f"$aD,Y_;wc|Ӷm۶QTTė_~ɻ6oތd{A1|pV\ɋ/['@ߴƧCl]D#رLZ6 |c&#hY$Ǐ+pYfqF̙3quOAAk׮ moZUG6%| G{SaW$П;AT@=L.&s3qJr#9󨪪bذa$'Gϫh$!!ӶD[ t AV'?lw:?j^ Yӵb?5Tz 9}4%=Eiwh4FX|oRrԗZaĀEv/Tq6',6 9$ (- afy( |ư|v K6mDJJ s%//kגGj8-,,7 :0SZf@0JOЈAUa&XN{BHK:۷-$d|Ol=Pcv8 aG9>&i269Qʺ :1yXhQЯY褤2g#(,,dݺuǢtNΝKzz:=6"yVRU8V`vh:xBXez c\+.J.r_~ ݢY{f@F)S#]@AAaӘOp 6m/B`444|r,X@{{;}Y@m6=^g͚5 2o|  w]àeXG>^wj-h^L:\=6/ !&|N4*QٸGc`c3Flho0Ob[בPdJ-A!Pӻ0 |}̘1.]>fH5'*Dp>i T QK];>i$>=3?=)SR1z}`;|ط$sXehŞ'68TcB3~8s$<  0%_|5\!AV` (6 }f}b|׾^JJW|:Ũr D 8Pqt dcXNj$Au1TIsF_Y}aVzp0Ú5=:Tù9$ֈ=ҰaT/ݿ Le,ٽ{w'v4Cxܭn y Pz Pޢ%2$f!C^6mvڡMn P 3Z-Z,]f+KPhS (Cu8nZk^ ښkZi5olhTE8ÊNJǢMꨍ&RZ@|e"AOB`sB>,S8RM&MU- LT8+24!TmԴK^YvU{˞JHՄͮy6/q{*= FAq:TJ\LiE**vU_*n'tZiO.Stk B4ҿ`@ m`6BlMYlPe-'ַs:nv'fjjl|N**SĄ&ƅ~d 0&+ LC h M6$q[6Z ]Kd1477@ƶh$bAlnkB* ύwAĠA= PVswy1rMP60t0E"Kxgڡngeرc!_h}'6äQYw8A(D{|R8sc:sV'ݺ :ςJObAB%zba$Tɼyxw1ߟ/ .Nٳ8tׯ{^qV\IlllKzzz@BjruױzjnN<… 7nK. -Kc5znC[+V8K8< NDV*{Bttfm&tF{J mƿz5k3dnF|AxO-NА'6C΄p*9}}> A'kԩ7[Z`qE >[%g//Ld,ˈ!!A2f}.O<ɓ'<6n#+A2p&im|9گ :7'=q0eBBtȡ1,ׯ B? AsK& czlTz-CsB|Z`wfxUF *^~6F5ǙE!\Hy"{ԜZO!p\{tZJO ko gdVѡmpOTIdZ35ke? kRH&fzEpK5A!`\ {7xf oIj+:>ܧse0XaBxD$3La E= !B0uh׵%"A tW/pX2Mej`W^e%dfVhaF^h q$rBlA"IZˆݪ F\YG\}_LWUC^ZM1V:'1%62rD`32lȾ@\\&Sp{$sXh'8X; & ?/^͚QULʓ, t& CicCq Ǐ9,B!B`ί=`k"]ƴi0eJh~=y oeB }\ unwUsxlܡ afĒi))%xIff&wy'v'N믓رc;jB5u]ի9y$ .dܸq, @"N='A u!h'm65ɓ7;,+ L߇L_&{c#/##K2b1ꗶa2x'l6(M7ĶmXf viӦ1w\kٵk| ̛7|u[la֭m111F`rr2]bɍF#T-ħ>\դK lk-Ç*Ŭ]o(ڡ^X,tt٦2c v o~)e߾}AHtI8EDSUO?Ywݫ"֨MIgEbޙrt|f~K1o`W :<(HM /&&QF /8-kǏ'??ĉ'xꩧt .2>|8cƌg%%%#G<ʬY0L<쳀!?z֬Yw{1xY`Ao"6\+h;kr?vno\Z˸^2k|v~?N=dҁmg1{X;5r]ƪ 6h_R%;m;v,vX_׿ ʴiӘ6mc/^m[nn.7tΝ,ӑ8/_EQ:m={Nt:]t]tQPGAARcD'CC(8a3CIHyϱcZѠ[4E ;lܽ[K\xȰ42”T;B2>&RB6H!D'j'豍`@*lڤ}K.$$Bp"AxD"s9!pjk;~.ɓ{e:Fx:zގ,Rap.]+`Wư8BЁ m 1$E>Xzah_pYB0!!\뭪;,#YdWdLXz>ȳɁ;hÛ."{\@w6+z}*^{8ᝄTT̴PN>x'tgzG 'zܱc!!芄tVCñp=s[Mf[;ᷛK5ą ߟ CBDg9mIPQ)g;`5ZSzoA> ޺A|D;ទk'*nr{%X_ZOUX\ @Vw4( 7N9ՑۅVj_W~a ,.<СCC2޽{vA"ݑ7r;\/>.=]{fݕ]vpH@S8\:rzs?BMD36 kZ|ӶbŊLEUU~޿ ^ B#С-ruuZ;W׾. (V-3xV1c7d÷gz= JA3Fvg(oL q-I#`Ϟ=ҏUD;tzöcpQQԺ$'í…B:';l4~ S4+7 !96a{zGce//S̛_ O;e?n XØXQ>>ήĽw:ZX`ŠX}fVbP%12?NS;D=*.دSC4`~'bPB'\- \Ԃf5fJ]UAc3U2;Cj\cM&v`m* 2beb/K B7Dz"&s;o9+xeX[zb'wF;m(U|;a/73Đ/Wѡg.0KرQ̛)i31BU҈&y'5A|@:YPÚ{ UU ޲lnTBEIV$WSޱzqLnWބ,c$ 9Fj8/>B%[ X-퉜gB$$$0}t꫐Ms,\x/! [oEII  3 xVVVb9Υcǎ1~x"~JKKIMM宻\ B' l95p^fނ{]6MkG _QU4Lٙ H"QM@<㸜q\v2pСAZԷ2GW a.2JKKiC/r-ug 2e,Y|z<޽{%O8?~<|; Z\wu^ロ'OpBƍҥK2'!pDDLd,}Z!?k+pvVt\gzw;--`_b iJ;y`v`m-'*71%55hC}淿mȦzQVkJGZZ'NdmO棏> EQgر"bcceҥ;v>ɄL:srI}V+׿:Y]C{a00L444̅^Ȅ ^͛1Ls=(Yr%/(FyCBZ@bVuNu2WmW៻ee~u Q\'s]{@`1xbS6, a.0+PRP©!(_H|{ݝ)K}dR\\̤Iz!{2l0L&*/f„ /ĬY8rGf̙l6֮]%\ĉ'#F`С̘1 t3f8pV"%%2{``qq1ƍC𷹠k׆-@7d]WZ,'Z=Wqvqqoȑd f/>zԽTsZ|N)e~/;'6UV/TV--lA{p, ax(-[2!PRR"B0 ٻw/g&l6 SNe޼y?~芏gҤI:t]:=znⴒSWWu5N߉Z[[BF:mKLLbQAoHvjo}w<6@1"99v <4zp$?:T.iJ8t(\udd 1, ˸M+!nNE<:FY:ɜl6ԄC7pKių=99.-MF#~t") :ħu_<\'Wᥗ܋8^fe"s)&Qvtٰj@/q#p)PVU(-[=ǵmV*n)| LGW 6ѣGqF6Wͥ`:t| ˗/gʕz^ +_, )))$RҎT+{M]X5 KOkؿߧ]NjI\hXQvNIA ;=$णL(POpB;FY֛{ذaXV" ζ>tkǓC[[ucu:&5{F(;w.: 5^|nE=7){ѹm;^]g_8C)fn'4!{-vP .[Rz% Vh2RRR ظq##F ..뮻M6lB&O h 7nĉ\8pzLٳKZZFb<\ktPYf wxd~ !-]ܖm`N {L5Wb/NކAZlU7 ;?b |Z+&Z;^khВAZV3Z&LrKX;zj~b2x``t B\q.yyynDN<`(̙3;cѵovZZZs!bAoQ]|V^ºuZbHWt:7+XA_Su絕hrR;;3He !YxkobAkf$ɭ%9Dc"1 9yf yxG6fAx+pCH "6C}_J+x^[JQ%/Ġ߯e@bfÃ+mŊgy I$L-[Z8ug8i( S3(e!r:4[J{B wuY>_ 0{vҁ^ BG" Z=ŤV82+3fe"wWº?ÆJe`&Zq#hqXF0H. Ӝyb"W:U=j%^}Nj/ȑ#Gz8ZʀjCx*uHAE7Ⰻ4kVJ=7׳Fi-ok=]|73Tl\)v%xٰ®).(䐓ggE[nw}Y3*Pԓǒ%?>]O!aԗ?XN|Vӕ5XZӊ][{nay'Z ޫN UɨOg]Vg-Zyy=")$ Bɓ0aŔpiQHI91L`lhޭ*cC Δ?{ZD/];/axW0;Ar'_,EB~7S<@9[ϧlA*Q{z?!1ѧbLjz{^t``ҤILtomЩw>Zy&"B "*KHit{An<avE`,6RwSbJȅc'~_&%De}aL]iMle쭘c:0Z;% gy"AD"@с~!hk;tp5|~ϓUU%č%M"sڴ[l4MMk>u{D\(bE Y-l[g5cvJbkbJ`p2D C<$fiu;Py)o-@/B̠hbbH!X,~O^|!h))PXqgchۃhѺL<0̠{w+c(B"B_s; r(? sԄ`|zϓVرçTL,wUT\PN =IuvNGN:soB Oe|: A:jϫVvl+ KfjXuO1&; $E}Ft?8'ۺ ZH@ll}^( jQ&r= 糧rXCg|{ApV隫j3Bn߶iͮ]>4NRs_|1̛+T ^vtG-$iX,gFs nކNt6 ͏Aƒ@hN"!dm+{:PWV%Et 8t* uZ\+-OkV|V&`5mc32ٮ E0=PK1Y3Cb/]*0 _K!!/EET0U^ 4cnw) qӌN!.lt ~Y|q8z><u\-ނ- =ZJ9ãd3,#6"M] B/!B>H+K<(ϊ 0`#v#c'Xt#4FDǂh--Z+d #aɔQǡQໆRQ\29$Q&;w= A_ٹR,Q=w56TJv3s:h-6(B_A`OZdfM7ڥ o)xߋ+hh:i:nMEDe& L|'>L|#+&ZZN=>HC|T>`6[%DAOK/i#Ç7Y#.D=nmJJ|k 0a~syyg;Æio0O8RB>XaaI1a䑇X\@r AK B۶iE|OMst Q+?݊OJc]q@WTVW_i(ZK. mgm-lb5̘9!cd,bE G!ؕظ{< pERߪ ͕[g*B$APT*B)}Ez( KII!z#!99imt>Ƴ)-(r`cmԬPbG%jS#d0,&o!BЁ٬m &M~/V3lCy\^QN8cuoQU߮]WAN\~9 ;+.IA5?a?vb Nf#I ēM#YH)sABAUݻa&-bb4WĉO΅֌&-9;\,*ꑄﲕX%d .,xyt4…0gN]Yϒu&_`ݘc|pyцV@8 Vکd7@(C0bAz-KK᭷\HI 5;΅7\;F]q v;<4*LUI=@LKӒ+6f5 ءtctbk"3;0ŚzSQ*P{M@pg +&*I%a\^b ^%K'SVWçP +Tg0"лͪ OPݿ4k /=êU!hs >K=x(+x%c-1:ӿ˜h`oWFW73ȈREe2 _q__B͵Iޏ2tיª a /"P9zi{2FMXB&7"Aj/Y5zgrh!N9C @*Z[87dCx*죚}1BV !?BaxhMQ:7ʷ`KM%tVv{wtSR`<8@/®sx Ït\)gt#F9 3~X".cA"/۵ '\Th4 .P:<Ƚ4B)H휙-Y=G^ pQxC bb4v$@^].CB929g q ߕ[{"KY"IA""DTW /t^L8wV;TOVH$-ƍ d#z&2'ԩlY@>ogBfvqT9ZiW_tι((ĐDu,BXO a2 P pu\J~qi`jtPZ1+ ހz=n‘Ѩe:}nd?.81-쎴4|y.L9Egf-1+`=mTT̴PN*I*CRP^AU/b\ZQkCa^%i]A`C'cƄfj_v.8h$xg%`g˽Ei4V^GQ!T+ĺxI$r(Z9;p}(Ŏ*vSujCٌk ~B+vB?? \ A!- ysp5}֭}+(\oXbeS-knN,C" =ُ7W:,D0U"Ah]6ߥao)A@N,qݝ3aРqE cFHL`fCkj!2W hC<\I>QW` f}VjߓLYDիᥗ9bb@сYԂMCx`rj ><4X`3 D@|!8!X^ܸS{>V-n$rA ߄ W98~B\uޏ9` Ѳ}C @{\ Vj?1 nßDSMfAQg> w𖐒} #h/oZⲈ g` H2*P1| A5: pc#lX–=`/sXAp`<n :4<+r`BZ!냻/m 8r0993=UHk-7WTπC 1 >U䳜|cl}Jhx &W'_EUӀ ~ބ;6)PFxvhzȐNJ*Pf8|L`˂p& l,X:&s8GT+1>T @ B0$pjyT5 B7`Μ^IPY ￯Tt:ќ9~($lEoL82LnZ}kVB3-}jVlc 0m AUDKp!cPS/CYYh?{v/$im5_{[g[> qFVy/3cߠAakK2;WPT',**8(C#B0PCn^ve\UP^SC3( @:(pxqg ǀ<՞O%b!h%W2%e ~]ޠ"A bIX vUz?Ί=/ts|b"@( h}KT8Nn,hhp=r&R)WMiJ;yjF˸< aH--DCHG߀C=Q |_-]*4_8 ԭ817#}e,BE`*sX{-͆5md\XZiVwm.'C8޼eѕ@Q` XoaQ`-ǹ:޷G90':3bƈJ vt 4{6[;ZPEΝN8FC5&D)#yyϹU4F  u {Qw5"qz D" ;xm^q`t#O,f h-B~>p W\IQ>ec CQ(¾б1Q(B!}[u$4}ֆUqJ)!)@E; V @F~{i gF=&q#.񤵵>QXr( ŕ,B/#BOZpg_slvŀNliq^`TRH5eJ0 76lխp$TWv3|[|./(t CvB;'m Agvg'kmxn꼡HR,\]q#]Ç榨&w>h0h.%K،V.q2h@'S[X-=1z A?h@R:x,ZYndohSχ P_CEJ ̛睧x88c@w<Հ 6}- <20)ApO4{֓[1w;c%3`ܐӧg#HGbb}Bn¿qh> P[+eR0E^ F4Z/u9ө,N…|ytbҒAESaٲ(o'); ---?>cF8Z$ @4= 0z0(jc:u\Nv`2PEmh,:`20  (\G0y'='r])B"B0(sBCp48^ ApM/D :sB`A[xԨ~a&N'p/U\Ohd.H'usHQ f\V`46©SZ&ѣ#lΠz)C fh OM?.&{BXd\OH^z *4+{-xb&NkܚزE+lm4FseF/Z.6-?  =vtᣏ?fNίaPu(.RAPDē̲83^1zo"fc!طOK6E"`ؿJ7`k+r,+h~FBn Lg$ju F :T5޽ZٗPԀ- dIǕ ؉@V> ct0/ۨ_D> co UӧcF u$pe`"wkm5_4z] @-@k 5bb\t-l 4~?#[0G x$>EoIs *z؈X~~sϣ1÷'"6(KH &e(JK;ei·^DE$m@ư8K!‰O>e9.ze.?T?Mk[h~/Jw!0^qzT-N#y[G* BA<"L^zтv <\~e G'Ѳ&@"0. =ǩSJS T=dB#%heAˈE vn7a`eG J%zƳOk7 Zk@.ID 죴RBU\/s@AF$@>b;'ln+1VDY$A Xf}`7BϡCᚔ^]QQ9׮fpO.B)QE~p/!kٺg: a Y{4p3ہ{ǂPY'Lʂ 3;x6z qG UUQU@!} ~DQҵ{8V} ʠ<7՝d*m=L _A&` @0H B}hZ EV M),xQF*2U U$Uѻ?QPۆǙLYpo=6ȱ@2/À Ζ J6lMzaaYQNq1e^ QA?Y:Cm/g{f듺XIF|D<)ܥu80MM Sh"0mC#ZF#\Nfm@W0]_y׉EϘFlQ&wfbW$hPQ`0ZSQ~+/BCׇ8sfeO;la0% D1}9/:gǏf@׻/TvT?4y ܫnG'eV~ r4wpY+Ll_ ެ 莡BN! ugC+R.\'x(J. ߯!G˷"-$`ʁS; X'N(K@otG2pߎ(JLIlw5G}Tl sw;qWf z|{miQs9{A~ Aк<,fZIXK̄hB2&}_Jؽ;4cϝE8j#L[FΉ9_?$]ctjlg{__υ%u\wk~;( 7뜛Cl(] w1ҹ;I$a6[\  | G?u DGA=L4Qy Fʺ_wlmzz=fGl&~3P.DZy/Xd(( {k%KCY=/ ܫp슎&s3 -!B0u ꧲hIDAT`I`YԒj>)A WذaZ!!Caa77,@BFvxЌcƄ{>ڀ]%E,% 1D.i0;Znu-+B,W%)NKӊ Cjb>Fsl/ڲ~=fI½: wm$t%A %D(—lu:ݢ%R5G SpAFFocNA3 Bim=!>DG+;xV>X(( |F8ܷD>P)0g|q n`v)Yܮ"UCWQ4wy/l^+@2$t#CS.a&3*vwڨ|H!BA% qD G98|Uǘv!M_|R&+a3h5%-wffDX/T_a: p9}8 K$&i7S``8vTK&R!`y(eI?K$1s]XKWhu?"8\R[y\{m SƊ -f(% N!08E1 u;@ ?l6RRRH0 $''F;"#Ow=N{6g@ϱ1_香+8T\JFVe :)0$ ;;V>Q6`l6$"h$>>€PlVv+K8E}>bhJGب 6>dp(deg&h=1v|#0&zFj/v;mmm{*B1 VA$!վR3`G0jD zR_\⚫+`9r$c&%\HU GGRΉ:F`&+E.vL[~7 d[& CdTGgڴ-0+FO&tڀBdaѶg'~dlM7@.-؉SHp1 ]("x %~X?y);> {%V~.[؉5RBLϧhE{$hl}OFqp+İ jj0~,I!5]b6M͘\]MM$[P?V$1[vev^{j<\>.15d$x疴,Yrߣ"ciecB7BƇPI-Pz@F(Lg"PU5 O6R/I5[oFRv[k56gNI6 Ѵu3uk^`$E^  5Z96ϥ. :@*ýH)~ck[LJ{}U[> ڴGsK6^[X :8. Yv;U}> {RɉNބbУuWͪMEAPSI~T7"B,"C,iqpt(ue`da834}u{}3g` Mjb){bwhI#TiY0A6r/]bŠC1QQckBCtz I ՎRZU.c Kr-1F>>PcC[۵ɹ02 "sx}lCH̶ .E'XHHlqJVT?z| ~mh5]Ko9?b./g٘KQۚQb(Z4zH\f:Yĥ&ZN@W[O|%O% !B`Qs0QJ>?rc L*jpOa6&[xӷfla?PPe2jR{\ȮSc{g{BPчy]]8-(:f'+{w)nk5fN(I@k2ϛF$NB^;gG*̯- ?@J9(&(TL (>"/`裐;@% ^Rƨ}MȜ2Xb#&399G.hȼd M7Rq ͎SdM¡9<"P*uux,χg_;Zvho1kْ&2Bc;l$&VG`WG3-ޫr,h'G˵xU(cImBU&+[F-_&lJcV?0xa T wRKGD8=ZUpٸp!RQv1t,L'N`QTڍeG22PQt}_=v̬Er0կLvZ]tÆs_ ֕(jP3x<5<)=SQ-N7A^X {>,l\A'-咒 EB3 ȎsbOC8Dp!iؽ]R:U:v[rc>~wqre?U'>?y~Gii)z+ʎ;aÆ RZZjK$LDݵ=hut2na͹k'0;U*R߽1`S#27\1|+GD3.rcG kai/w@'> %n  pOkk)پmsW~;')w34I%e*kV[oGl߾^կ~>m~ ;MPe:f%["|V>ALjmV78;~JMTU汹׿FGiۚFRƺb(ux*jJA,2wdj'4|kE'h! C^~xW4(*YY/B i>T龵KT~drr_ڵ W?}*og˖-~>̆ 9{,΁x{˺ud$ SAM`՟AT *npol ʣrxUv~ƕ@.;T@K9\S 7mB(H2j L}NEUQ a`@Y8rӶ|Ʀ"co?nJU]5ϽqVW/Bv 'x-\=Eߛ=ٳ??яxG8tNŋO G醴7Ueo Kjuѣ2\ZxGaŊN+͕pCܺv@ulN†az$RH V@!֮h,)aAƌ' |B7.K|};wXC E\att%kWO`?Cx{ÿϒ(}tt\It:yn#cT3qp V F!@0{nt48v̴]~:[3|}Xz# ym:xF˥_}qYVPqVEIV@3{q)Y/:*z8Mә_Dcqk3{e^h*qT|ݽsEgc13}C렅5;x|(IVUUqҥ1::$ lnTOO8{,6 oe&%BT%0w1znt0v ' l s" s%b-7 0Hak$Dcؙ(;ani PLK-׋=aWao,«ekniNPC>^T')nkeo|-^y5k_AEO3mF[[ihh˞g v}n~%BS#yvX*c<^h}%t:!ov&jh*5FSPPfElC3b2[gb%e{cz v1jp]Oo}Eۙ7>裏066Ʈ] |O2( S$LǭA ~Jl;V7:s1oo-ʒJuڌɞ|>Jo@Y/Ae k -Gdɨ_C;BaF/=욿9!ǯ;Q&i.,'po-(c0sv3pwQ\\套^b3@<|_gӦMر 8>ϳ{n>/\v:ӉS}VZZW,{cc#ٮ={3,طo] T=MTqA0Ρ왵wfgc|Fg+G8 au%ee` q# @8ų&@ u2(Tv|t~Ҙ_Lxlf8wBI[ ^z=?M~wbNR S\Vκ. a4%tφd"1XU6gIކNH˗attŻ5Ucva&K&є(Z[8 C8 _M8l ʚ@]{'2q н^TE.k>u{\Am5ӸULR4݆OWP6vVwW$\vREC!hLi 0 t"I~;d qvYF+F((w%ABVףdߕ( m0?!as9y_wdC^M`U=ɿWNOh|^ye#`//}t>-Z]#[~asIbl$` k 8ƚm2$\h@Ϻn4%u1$5C0 cF225t`wFFYZ>@˯?ΙVP!;8 <ȫU^i;ņ6;3~Mx3o"IR*0veIb8q#ԕ~I_]?zӿQY;w|!85ۊ2&glmOLu~?@y7'qYn-eRE'88Bh`MW(TTQQ:v|@fG;(۵)N'.Ke,Ju0t2uͨ2R;&}qH#Lс'ÅV?Pe%8W E(@u^$(p{wCeAb)M@ g_1GWt͍k `,QEBcمXc k>.|~]Gu\.*3:BT)3a}/߷#g T84Y܇Ktzc1I´nD;U2)FY'ROQUv|mȱQpvc]\͹Rs#{(5i%LȮ?}(e= SU?1<,GᣛE0;t1&u87 3]5?{LZ.F)`JvQ#SU͆n-ᅱ39c(3ԮiC {+,tp8}#T=_[ ˮ\ 8byv=9E˂41 ^VmiifplJx3>۫k$ Lvq݄B!PȸS{w4]L p)4kp:nN{!?TZkb uIEYqεxK ۞]|LΣŲS33?immB/(#2#5/X/퀂-"&sA]4 ]שeݷ/0?pDqDn@0㗰4V 2|%{St2{Dြ LEfPJi T o!S")f hXvRE<@p0|NInsvxbl`II퍬4EAA cSjOQe";e-h!Ju)xHtvv3(6:xLPUl47*N{Pd&ܦ;[)"Fz˓,6;;5?_ SɌaPݤFi;1/A~v~ Ǣ/@PRN^k`^D6}3ddd:I̿):`1"(`wCȗyfl|r$n8OO1@O'h9@]C&5.>RvW}뵺qz8يzp̧tZALFk536_: ,#1ImTAicl8(]ougȦTs( y^:;;Q]3MnS\\4| ~ivSPP@QQQlɎ^dA-ھsF@P& v\.|l TM(y&$I^񙑟Q hreAN6r ^Kg ) \S =dtv}~=Z`Se>f]alX2To'p*kސgLrټNMЂ+k;]ߥ&axLfl|K/sܿW 禅E6"1̸0t}WK {x̦3k2 fm26 (g #Nd+2M_ A!DjI jI{^2{$?sMyct8=46)lJ}o.m;ᎏsp4ޕ)_!Wayzw>1y9`BEa;=lenoq!! "̚l?!HV_HBW.i .ߜ"[c%*o[ kB!҇VؼB \~?hu*F[aB\Y.<ɩ|*f'ju#u~fR'_.>Y(iAB>R%vcs8P/C0$N=>(=ӎaV@JEK|@ ֭Q Z $M/ScxcnL \^(htw3\ό?aU5R$l *կ(կ(vD>)ʕک ~wp?/Љh gQZRʯ~2-1WB ԭt(6~z_`7Xә!Vf2T?CkW09 %%<1v gI9c,Mt'ӃS};wa TBd=VS?$^t@C䩧f׭[A|OЧ>}QJKw0::H]}r&&, ;W #77p4kfqi (0RLG%rLAW&W&# asÃL"U"}|`^ĺ%P@![J!~10)?Tjp[#KUWC~2w(4`xB[ ~g*S"˅Ah#htx_%+_ C}+/0ó$W!>*KkqWC0L8y|Sӧ8]nǩ(HO9?,)aN?9ʝ|>NӘPKx|>H (%oUU=E(. hh0B=0fycN-4ӌGj6%NtfSwE91zZQ1rˌ!⡧Y -v`F@0e~p 0BF; Asq Ļ:i`=p>sgYmWZy:0e~ a u@# A$LWY6SP33QmMC^ tUTPvıbn x`&In@0>Ĩ ;@xlZ=L1"hN[s9H `L εi9Z~ +SNCh:oȓ;1@ЮBMl,6\CzcJ9`8F%LI8k\֘: BMb~Erihn>PM5揥ax±$#tikj ?)KNu7rM{J$8i+A=;Z݀ '`ҝY!j0cͅA4訨Ë_FMαac}x_`b? m@ZScqW ca D[E$ʊLpj8͚ JØ f0AlOݏ8LӜfє=g9q6*L<+#+L Ƕ0\ـrlfo~"fʈ`Γ@0  )ؽ;,;Z&?::H~v0 Rbb\-+Fm`}80!Y^\i [Ђq Ժ'!yTT(R(pɚT0u=ryp:q/5,3́wU#, k[^:@0k'UӆʹeW'}!-kFm(F)Mt8 d}s40E+ˬ=-<| g#70R4"_k0Ge| gAiίU-e/pyGR=Vu3#. 唳Qdiැ [ifie̘^&P|XcXdu#E*d| %kn@@Y݄%1,αگDSiٌ V&3[X@)c6FQW*Q&~:FEvϕʫ[ epvʐ`" Lq[݌eU?76_gWC@3VQNzx/@"\d- Ryp%lBYu,2o8q Fn:bqC<UVOa|*kЀ'C_G$7cصS[8ȱvQP#iAE>lj<ktEnՕ9)+3de 89< 9L7Pۻʱ긦@ 5hjPN QP T("3Sh:|񫾭{v#F౒00 LDn%`#h9nB1܉$BKRB2 (RK|\\cÉE%KF4x&, 'E… e`7N QFZ7|=4KdH9aΗ+D1:9tʺݴ)?vKPɌh4!HE߿UttR](ظƃl@y䶜I|GC3̍bd(ab%و`\}OB2tR0_#8V~i`/SD;N J. B{\ Wsp?scC 'NʈZFotF`8CD6Rk8em 袐oe4s2KTl`ਹ 0[5h`U؍P~mJaX! FnCoP5/wm"Ysu/cA80D<4Bt}7Pu.AXv`uơY  ykCҵ#ކ1> xåBF]B*9P]4s::3 cncزA>q/e ȑM#~ ߔgwXP.ܛɻSR߱)@EsP N S\Dx4Qcb3{w`.)Nxk\!t'3%tKcs~ n\•z"^6Š ׯ~?iBVT`[onSZ\AnrmVwJvnt|SW`"N[έ*v*J3\cuat8^7I7ɣ܆UmcVƸ)FϛA{"uU]\?A~yO2"n `bUwa!ݵ..WQ(TՑ.Y}(+"ԨPWYBa*f͏[\঺9y=%vn&yg:Z3 rP6Z 77";Nt BoQ\`M"L\`8Q#ӧnHRUhak^6{ࡪ*E%֬M%Ey 3jqjƨLy~$ѥ4S54st) tb'MH >|A fiH:(@F90a/0ˈx)t(ʚ3ҝ(9#dOBEq-ctxT)g4q~PJ)MS:BEHL9XpE7`Ӧ!QEnsf1|MWcTwB" T6*yW:FGgLpyD VY(0F̔'}S5ƐINBdzXA5ԁ0vQ !r&P7[1FhG&j/Üac ;l͔œgdL2ϯ/&75Zc8׿6uuP9ײJk _aTDZ; $46|Lœ v0!9 (R(ptrkЙ$N &(u7duRan["#(H FeKM%{**(_,:a*2F([;냄BzFGZO>$.]ԸTUzw󝖶%f 7\=f4tGd0~(RLqGl\2au28/W) 2>Gc^ fsꣴcMP>֯omf)^pkbQ4v壁|t'((2訑":aލ M%ȆaP$<(n㢊tظ~K C(aelȬ)u1c_O6DZ1&RF$$Gej8- ɶ᥿M4N `e0E~}n^>C#8]&z;&ӟD{&p81;lksF"Ɉ|f{a[׍Qo^ 젒- %KXԗ&hYYI`rRku[0Il S7"Og1- uWIN7ݯuL-p3&(ߡ-4s'T$'M$uGOnx c͟0ӯhJȭ#Y)H,jv ϭpQ1 ?S\yx}I29 gG963'瑵~ĨIe\ #XkXnӛ`$I "dȋbڸFS sz:=L/Pύrд}֛ N!{hV7F L 4n!`9f{$LW6dyNcE2\;)5&Xy+*D# 08 v|~RM\-GA!`NhlIƧpo>M 븎04xb3 r&bRc;処 P1 zdすꀽH'֦ˈ`Rē'}Fҩ-ђ@0̥=f ITl-t8bEaT> %E.6Cp#oE C4Bؖ/߇@KyI*PlD-DbD0Aj{d^3tTlq-~sg*[7iF8C{h6F}"h71^H@}; e4pY1mM$]O gGtMDK$dX$lqs= }^r&LK>^ePYyl{5<撚?rcp?\WUVWD9aS_̦`s $ED6@0$3 cz8#+qRH>.4C,.yh \y*l,SN4..n$nE^׭ ٙ6c87**`؜` t?"nJH kNFO' yIƹ~9;)se%K8m%^w:(F0XR_Sa<:gu%V7J-o_:%ZdOC/zITD=}褋'a`t0J즉q.aXUj媫ad1'w:ظ2\gn'opF'*!Hd_oƑՔLWi4<fx!ֳFE (qCXPߠUs1r/*)\KQtjK$UN'p{ppb w*FtхgA 覛~YzhPR]0< #?A˸2\_u.}Ba% sU*L^QApURI 0E._'+D.衇lZTj cTc#ܭjE a5fcb|`w2:>!zjcllzBWn>~QclXZZju3M@0C ɝ"%l} 'a uQM5r˄R#@v馛f2yAqbki$e6 m\Ws/-m]n K+WkWpK==/Yc?Npյbv-s=gi8pm۶ q8b);e s]۽0 `/O@(#mXz2mABNr'Nrʒ:dBZ!,lU3zϝx֢\7w1FSFͧh UգQqfQ^^p7O?[а vPXr~?x8lbyRZY;f|S]PLIy5"(LJyyyy6ZۇbJK+B1UV]]uu$vm.'V|WA0LoK*Moxǀzd'cιEJ„%cl'%ڄWXԜjđTUU J/F,_D$G987ܰ`.ʩ&nbib|f As~~q5(YuDfm2+D<EYssFS%";O^\>=KmI:`:Rii"vq颋i>|r2k^yY) RE͍͍.MABc#YeQu\0\^$ܞa2i"-H'b9Tclgi lnBR!j-a0߷`::rx!a,0˫J-cD+:s#}ۑB!!X@Hƍmhzw WI%YO1&>̹# !0O с L=]y'mQG=eYUJF"PzSNyUu.BLM)x7<Ęn8ctAjmu3S7 i>#Gc=fuXf xs j $>O N}D5좜V Aȣf/'ba w/D:@0kISUV@r#`7p6 l԰s< _]lM1V'ISW?[a:ɿBa$x^QtꞲ٨ 7^ذ <7TnHrZpgEtt4 pYŻqgu3733|VV@!Ҋi-ð$/c-@ lkA wQNN}0MMlu3gBH Lȣ `r˜51[ Fxܗ F>J`ch31F̝g;7A0z!DZIw 8juCֶg:dKQʭu~x3ڬu)l>s+g\$$^Uk_?oTHo%EV@!JYA ]nј*ƯϊA~WF#ܔ?;Q" soqIr0ox 3TmBVdD0X݈( p#jb~kk^{ O9-2FO29fܔ  rCBi#dhRT6B~ozAʍgvnYZ!x^`V6pkbO0WwLnh;'!D,$L'16pRgQ6`ɩTlF7#SDAN+?ӄ rVNTKeZX!!`8kux+xHQbk=l]x-g2s,#|rZi,nʻYFc4P!U$L\586WR YWڀAx7bLaq1_0v>w6؜wj-B%`ڰ pZS-FC6E}4vZ3l \ٙ?h"0J`34vNS3 ?_@5Ɔ"U.qBJ%$TW/Ycۋ_ *A]Y9JXD=;y'S?5mSlRF 6I!ꮃ;B5I 6) ysC?laaq[JQQ "SŅ{eFϱ-&&83 aR(~>/ahBq$LX:?ci%]741næ7./qp\Qn1E/^F1y襌f ?rAvcB8 9l>KҊ{(-[^5n˱L6#M_ǝ/r(ctg^9Ŕӊ 9f~Ba" vIRiIR@0 YxFŊL_ٙX 㢘:ea"?Ss|*)e#N49wixB$@0m؁R|%'HIi? ɨkN=[*`>&F#xN.qQ"bQ%wB !DI VvW=a)472s3L# *4RH-\d:0^f\8cT6Y׼+~"'H vt mfbdQ&p*v*hFx%4~ ܡ@^hM!q#h9K|`7p' OK0.츱fE ifd X!,%`ځp#-p80rE\0O29*`~F!e$Lkv-%5"PEF"H (v/l^Ed>EG!Tn;%B1 pgխrjB &H ntz_5b%#\>"ɕ\{`85b\y7B"H?v7a 8z4;ypnj{!YGAn&&AajIg! ̰\P8x4IJmEx,}"GH (2UA0pteI,9OAn|qk[ݪ%%݄B, 34v9* 8b4NBq"ݰm9!L^ɡToY34Z[$"I (r ׾vgȡ Uۍ2'"47rW~ƿӁB!L$+Y;9f6*ҥ|B!L'ffQ!H B!֐@P!"GI (B$B!Q !B( B$(+B!FA!қB!9JA!I( ]Ž\..DN@P!DNuu5P(`PuBV7] %B$딕099ik[( 4(B!BB!N4 XB!Q !Hn^(DΑ@P!DJ|_݋e>/}& s$BG||3abb1z!~??qYL!Du]رctuuQQQ-r'ƅ\KA!S}}=ַx衇׾F?ew,ޑV e}BdEEE|_>'NBDVUUo[~mBbccc|S]z;wIB4{nxg12'a<C|Dp1kFKK 7t^gy1 !DvXx=`tt/| o@Bd?N}}=veee~> znbyf~ quRnV4M[t\.,bF9^NTU/1'\EkhhBd~, TVV244VQdHkN(V !2WR꿕2(( 뺼a!EQDB䀤bхD.*b%RQD!ӿB䎤]DM^F|BZ1O~buۄB!D-B!I&[4B!rB!9JA!Be"BxIENDB`gambas-3.16.3/app/examples/Drawing/Tablet/.icon.png000066400000000000000000000067201411575327000217700ustar00rootroot00000000000000PNG  IHDR@@iq IDATxytT}?wy3FB+ @,aY`ǘ`B:ۦ{uxk=ފKl'^s4ƮIqb-,vH B#13z318,*Ds~̼77{߅a c0`!vWZ! TCY~Ij?s4ڍ gZ$tew2xJ)):H-]Հφ;dq϶~xg$J,syҔR_@R–.O7UV|Z cuˆH qb*r`&-j9ǥJJD~xr kaO9dF`.by mh7q6\%Z y7p_.y/;߸KP):%n3QfJ`͡jUT  nߞ{ /Haq)?4#DNG]i}Z.18 R:Y{fx5q;g`rGiB2}J ӿy=em 0n !n(=@0 08ڤQHR0ız [oKն97+$HˣG~4 ¸1DOYcrӑ*a%R'by`?᥍u,v_%~Q8>aoG )#omeʘ)3u}oDza($$Bd( JimyCv~!5 %?x/o3n4Zc JJ/>عH858 pn~5 DX ,`%Y0*Q#\"1D L"4ziGabQ!t Pc=]eb/ֱ{M3%~D~|1ZxBD1fmhT)e2 ?>}K):Fԋ9nMLG+ ?:{&ǯXvw]F5`ޢ,?31=̲/ɭwϓ9oxU ='F4DjQK%R !erOqc5TZ?H"܊AIaݮN>ύT_/2'2u_ @;MV3z7-چז1iD? iiide@-䍛v*SKD"5(|/V߻` Mݴ5oxe:j;"SCosnmB?bi]y'F]Eɷ-edaG+4cːRǹq|>?3c6%}VMxrU)Q"*iAww@c&К1Ѷ:>B%F(g$i"=Veұ @и3GCF~ʇ)ʈ'R.C|~?O<?{|97oϦp蛐BD罀6d A*})DB%3IkN㣭R}q #'/jȈ|P*x[w~wMk͓ƵKn$;PcB+=O-ca@9>By8t}n7"FEېZ7x0g1'bJs:w鐐'Xy}Q^Ձ W?nA  3# {;_>+D z(i#sI|Ra#3 /"KIv?D˸/"edݮN*`M%t9P)8%{>ӳOc{'#::<}$10dοb/-k9,"*HJRH9Vxf^uFTD/}z!Ekc Y#,:Fw̟HzG3{4T!FG:ɽd]wYkGWQT0`!8nKCCS+] ;ٶc>ǡ  E %^9\hQ}9ZF)y_Y){ATK2,e`"^zq%zӻd`Vg#ggּpkھDVl߂s%j;oS (IΛ{;Z$&Ïeއ]x"wh]cXSry|A\ LЍI~NU#|mc'g."FKG:i!΃UWQ9;]' 7Vliy}tq w}i{ط]2dHbE \3u&xȔ&T?Zf޶k g_(w:]q G}<ٳf1gd0qS]IR$9En 7&#Ku6X*Vks -$|c޷صBJ!0vHmk =v`Ʌ/L,OJ06nd玭d]ļ%W;#ZCJk;4DEϻϢl6d}L,w 6n!S|oJ΢`le埰7 Mş=p(Ro%6k^Ld!-r2PX{x*BH*=d¢?|>?ߚ>s$]2{ƥTUlzjq!?;¹eX#! w; g%)~ R;M(5")co% PFJ!i>{z@Gʄ/d,,TTA2ޫՇ5CYŞY,Jxwg[-h(2,I~+$@&ɿ0$Kvt HxG _嬌(`g d0񿕁f-bIENDB`gambas-3.16.3/app/examples/Drawing/Tablet/.lang/000077500000000000000000000000001411575327000212465ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Tablet/.lang/ru.po000066400000000000000000000062601411575327000222400ustar00rootroot00000000000000# 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 "зелёный" gambas-3.16.3/app/examples/Drawing/Tablet/.project000066400000000000000000000007441411575327000217230ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Drawing/Tablet/.src/000077500000000000000000000000001411575327000211145ustar00rootroot00000000000000gambas-3.16.3/app/examples/Drawing/Tablet/.src/FMain.class000066400000000000000000000071211411575327000231360ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Drawing/Tablet/.src/FMain.form000066400000000000000000000101571411575327000227770ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Drawing/Tablet/Icon.png000066400000000000000000000072511411575327000216520ustar00rootroot00000000000000PNG  IHDR@@iqpIDATxytTu?/kÒp.Q![+8ض:.Ό]hmqA@qo*@E[>m%sH0%TUUR !U$`ܺ߻W{S5?NR՜R53 ^՜sT),g @-hS7߀W )1ucl{Dc,`^Au> _s&9gV"X-JUs>=_3wl T0 p{uLEDxZ՜n)9'+CnS7^>]Lg-M&֮^90x㍷$!!B. 8 nߑΊ6+ 7l"5%%x( ̼̓f\.W@?S7NGp>'Qغ\ )-*GQZ!"x~t8hmm>ԍmgȲRQRFrrrQŒ3?׉V`Jbpc2l[ٶ>}.MBBv"**ʺ?ԍO"Kf[? ݻi"dMlllS7Ek|4pl+ )142idcZuXdQIqvxG|<#?ɓZ[Zà\՜#ϩ; >..$F}LΟڢ+BXka9<'{Uy퓒†ɿ1ds133ٸnCps ;3&:26;?;np5|l*"5%ŵirÔI@sNZ1ggvxEQ(-|V^7PUM?@sO8$u6x~"TVT;8u,Uv["ៅN'BD&oh&.׬_˜{ivYWӷ6p V! 8tȈnn6YGzzz؂.o>P F [ mP\1t-~WDk)p3ի lPX 7z'~|CC+ˈ#F=QItt4}w'dbxG]m{+xrS-Ƽۯu^?ˆ Ç9!k(ܷH_C@ wI}.7NvVvdjY,qcE 51ah/fO <;E~)hjjqv\|~ ]u֭]C\\z2u3v2{8=en,1D`ɟߡiL슫Fp in󑓕18²j6}kB^e6iDV|W h^zőç,YyyV]]z(<"B:R]͉aG}7Y_U>6ZZEt+#Nnp#Dj={>+;v~#a[09R9_;ihh_M}}=G1JzZK^HL /y`r+cǠGV3uf̺ZdYAnHu7sr<7\z ݻwr'`kƍ7ѳ'ӦmATT"_5yƅ2ub\.,d<4aV]CLL $%%_[N#G/JI ?d[1Y$&+!,_3C꩚UsJpA 45C[?'UsJLU{EhjټYdp(EZlؐP;: 9T)NX^KUA 45C ӟ OYLd`8#E**χ!瓺:2|{9!!U5\=Z#)R4 Ԃ|3:(ͷ"攔~iҿ\Dd#D@$/OھǏW^ HDI$ >Us ؾMDDMMr䉒3v455瓪輸CA՜rIzo9uLJÈ܂?v jx(|X)VOQѣ\7:jkdsPWWǸZd{;wj-?YYk<ÀYžDǏ3*7'Z<7ucbb'~R.1 ֢b%ZFɶ*nM||ioxUCGh"±ɓ'^1up׵Xp[n|/fu],{{)ŒY7w^+bHNb';rsaǎZQFfUo?s|9W5 2H?MV`O~ikcٺUdS`cJ2kc~e ֈ-'}>u`EHQ`>HNNڟ8hd Hjj@z:̚S@tNjk& l0u#LZ%1S7f=9m3Dܜ\<;͚uk,&_|ƅ.KLݘ|ݾ] nLſs <4a((P8O4u`cYc;c̟*lamiRZVC(xp8xiyt}#im{v n+r`:j&BP( K/~u@Y|YPFz'%D L9C"_XhaFVgf![ըv5s9s\9Mʣ6o+\C߾}[@^`+CwqmgOuaWl"y"CjyWC _\ 'p=NIVEf{(yKQ莰=n\|f!dN>`Cp'%MhUOH&[VDD&NTCgg[7[OXXn7szw g믱mk9]t ʤxEATTԍk#!bK3Xǯ ˫-aGv?0v.8JЭ[wu5|m8I՜9XUM̔K3ZFf'咦fHC﮴N-Ϋ`aPyc9&Ӧp$dMM gjk:aȳSԍEؘ%**E=M[;Vǘm,;EP53x^zr'ݻwp5Bo+2uc]@X[nѣGYڂ_. 1b&z^zu5]S7n9WپKPDbc]S7Ou!D^Us Lubع3<3JIENDB`gambas-3.16.3/app/examples/Games/000077500000000000000000000000001411575327000164755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/BeastScroll/000077500000000000000000000000001411575327000207125ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/BeastScroll/.dir_icon.png000066400000000000000000000030431411575327000232640ustar00rootroot00000000000000PNG  IHDR szzIDATXý[h\s.{hZڕdR-;nN[ih1@/~( ؁47ִPoDPUm Ȳǖ"ّˮ]a/Vr `̙7 x\1ѣG{SԼQ*8|<c``P \\|{)WhȤ|!<P \VUv%T@|YLER/RDU,)KxdR* 6έA " AJf-+PJ*Z_@)؅~LL_v#M: Y,}[JYS!@2#~υwhCYLjo^T|mIdm`z6x \3d3Xv7ffSxe<7 =Vѻ[Wo ]+h( l 7[ iښ^Ӭu=Y::XA~q;]RJa| ;x_LO/0<$~`_ך !}`Rci"ddddlZw^+uݲ0222q Z&AksJuuq8yę3gj &@ ׋idYΞ=;qܹk è{=@L&9~~,զ %9+ڔ[/8CL)IENDB`gambas-3.16.3/app/examples/Games/BeastScroll/.directory000066400000000000000000000000411411575327000227120ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/BeastScroll/.icon.png000066400000000000000000000064531411575327000224360ustar00rootroot00000000000000PNG  IHDR@@iq IDATx{py{9GGB Bf ;ظ&ĉ۴Ltd\iivdr_buZqڎFoBݑ9;߷?tA1ٙs>Ͼ~0iLcӘ[]K=!-$XH%\""7N5I [dG`,>I,'E%Mo,S Wm+ؤ0<^v1ƲpQ-g{ŕ ǻjzCu3<&ӗ"+r޿퐛.vS O.Ct.'d:c%C*!OXf1؅\,sc$חp- c۟hX^ QU\_.mo'-[ĖVfaXLug08[Jy4q@@R31V{F$GX˫)Ih)dR#.e0I!Z)PzCܸ1Tz_bJR9CB^%w[]5t67r07|)@dMieRI5^1yKd'&(!+PBM+vJH=֦m9rCu H%pqtV)v3S L]`vr):5㔗8k&vNUF Sl=ܢk'])BrƒWڷY:[Vɸg:=),_mߦ}y W1!*ZX~!+e;VԠ":0 ac]7*X,Y`#?V!73a+MB335su)n{tJ@ =듞ڋ:2i1f :9NN$/ރ?sy4 B m-S|`'ṳjǯ:^uDsZ޳`!$2Mp<E„$q2fUzޝuIu>X:u"SkiٖҎ.F$w*hd?w-I oFkxԂ1-8p#8!XZv,uq1ݼN4DRB҂1t:A(Ӎ1F$J/@&O :7w:;!N(LtyᲵ8Ф_'dNA~!|׈7Eι*)1i\+6,-(Dwy肄" J$J,! <:ZO"9Ë?!x bnE+ȝY +?;)#0GvS:=Js__}3e~RTRBe/uc +qo} jL01hQ# -*a`.n!Y(I"3cO_NnE 6$ 0Ky>Ko JiKSgbĂ9 \hjea+U M;&c,@H †=^)|EJW%[38U\Fu9vQRП0| UMJ|YمK"<ЃJO}\Kl$/3yG`M@}J8ǞTN }gsn[u':uùxv(TbKsIfxt/PTT.A+K|?Y0 %,l !V//J=n?4HdKoG'{?u9QvcA rpYe @ Q>w0~A;[tne=/ gI52_$O7[oC @lXʃ{#T9X,EO '%,XD鼅4ۏ/1$وoQYXwHF9&${G7>H풛(36,(!㐵8uXkJ|J=S1T21Iŗc ݱg^~gxsd2.BrfpۭYNaC#/FHˀj`tPiahǁ3@zDЈ ^"% xHz!I41iEdѠIENDB`gambas-3.16.3/app/examples/Games/BeastScroll/.lang/000077500000000000000000000000001411575327000217115ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/BeastScroll/.lang/ru.po000066400000000000000000000040431411575327000227000ustar00rootroot00000000000000# 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 "Выход" gambas-3.16.3/app/examples/Games/BeastScroll/.project000066400000000000000000000007331411575327000223640ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/BeastScroll/.src/000077500000000000000000000000001411575327000215575ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/BeastScroll/.src/MMain.module000066400000000000000000000124071411575327000237730ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/BeastScroll/b-title.mod000066400000000000000000001570061411575327000227640ustar00rootroot00000000000000beast-titleby jogeir liljedahl'5(original: d.whittaker@  @ M.K.: :? 3 0 3 , 0 ' , # & #?  ?       h }  ? ? 3 0 3 , 0 ( , % ' # $?  ?            :?:h ? 3 3 0 0 , , ' ' # $ ? h ?       h }  ? ? 3 0 0 , , ( & % # # ? ?             ?: ? 3 0 3 , 0 ' , # & #?  ?          ?  ? 3 0 3 , 0 ( , % ' # $?  ?            ? :h ? 3 3 0 0 , , ' ' # $ ? h ?          ? ? 3 0 0 , , ( & % # # ? ?             ?X :? 3 0 3 , 0 ' , # & #?  ?            ?X :? 3 0 3? , 0? ( , % ' # $? ?      ?  ?     ?h :? 5 0 0? %? 0  ? ? 5 5 0 0? % %?     ?hh ? 5 0 0? %? 0  ? ? 5 5 0 0? % %?     ? ? 5 0 0}? %? 0 h ?h ? 5 0? % 5? 0  %  ? ? 5 0 0}? %? 0 h ?h  ? 5 0? % 5? 0  %  ? ? 5 0 0? %? 0  ?h ? 5 0? % 5? 0  %  ? ? 5 0 0? %? 0  ? ? 5 5 0 0? % ,? '  $  ? ?  5  0 ? % ?     ?h ? 5 5 0 0? % ,? '  $  ?h ?  5  0 ? % ?     ? h ? 5 0? %?   ?: :? 3 0 3? , 0? ' , # & #?  ?      ? h? }  ? ? 3 0 3? , 0? ( , % ' # $?  ?      ?  ?    :?:h ? 3 3 0 0? , ,? ' ' # $ ? h ?      ? h? }  ? ? 3 0 0? , ,? ( & % # # ? ?      ?  ?     ?: ? 3 0 3? , 0? ' , # & #?  ?      ? ?   ?  ? 3 0 3? , 0? ( , % ' # $?  ?      ?  ?    ? :h ? 3 3 0 0? , ,? ' ' # $ ? h ?      ? ?   ? ? 3 0 0? , ,? ( & % # # ? ?      ?  ?     ?X :? 3 0 3? , 0? ' , # & #?  ?      ?  ?    ?X :? 3 0 3? , 0? ( , % ' # $? ?      ?  ?     ? !.)##1A!4*í$.'9U"L1 ٵ!'."7I!<0 ( ƿ@)2AJX -Γ=.(R.? ,#)̴ܶ 2/&KG 7!&'Ƶ˦>- 4)H!/07 Ȼ6-8`R+*;/׷02UF$6#$,1ɸ&C.49*6+ 86'7I#*+#*= AR0 02( 57˷;9#.,24, (! UHD%+",$ &O7@" H+(#˻+09 23! $QF )  ",*!=& &2P= ! )<B8$;F7@+L'C2,G7Ҿ ,2"( @*6? #A1&''*.=10/<1 $>!FN$" )M/ J0-3 (-2 /3& 0H+  !(82:=* $*,#"* *.&F  ;C&(-/;Կ-6'2J #&)%%3 7"#EE$-9%/ /0$>3 "D(+)!/C47"8U'޶ /-A@5,O Ǹ+AK51(A<ո2mF)%8&0ZֲbY B4'9΢2h2-(f(Š (5^IL/G˻#,K%%6ON5լ ۬ @0 @ .Sd/$(멷۹  H" 1 $7`B60% =#=r'#- ǚ:% $(I\C#!.D.  %1=WN 2׸ެ@;-*)C!I_F߶  12( : -Od8 %++*;1./HOܷ#6'W!F7C ϵ-0 .NE8.һ˿'-- 1,0GN #(&>"0AH Ӿ!2 #9" %A-X: ,01#+@D B+3ij <"//"C7 /&D('= 9\6" S=467%>5  ͻ"F!E*%"(984 01.:/I/ <,3 Ѽ /534K) B1 4 3DDI9LC "S-ɳ! !^A-TmG>1.澝$ϯ<'R6 #_\B4=(ȬѤ$ܬ FBC. :<*RA!Cƺ͙ ͏K#?3.311P#+Gͼ䜷&503R<,*,DTյ+“*.Q+ZM+ 18Dѳ/¾ % 8I4.JK#9-<ø !!:$:EM(8; #2)ب3 6N3@?9% '#0 ƿ A1L<882C !ر# -5*N+=1&:0& !14E7)-0)$ F60(E%>  #P:(6#4 ٽ*+SH0- " ë/(NK+,%*ķ9#28!:- $$?@78<"+麳T20*'($ % " *N/6* %# )'! ȿ)#<<2# 9') ̾ 09.DH  Գ 5#$$'$CAOX[&(8۾* ײ /*+N<_b"8>ڵ*/,'+-CuM3'޽* 6($(NbH)µ&@&N+M]>+޿-9 %6(*e:<#ؼE%J.!E4P «&$" &D24#@g 5 !AB)"T87!罵ȭ+3/4bIC3  =0.5PH@# )6 7/) 2J&'%92 +2C6 ѽݵ 0%;G*-9,Q'#ȴʾ A >K".7,4@((޺ ͳ !0O,3; ,B905ش JG+KQD&)ָʲI> F$d'  ё %G%  C Q\!  F3!G`#0+6 !Y+>+ثߵ%H/A_5,-И# .I #%>A6?Ƿ */$3]4 */3.! ?$ -8$=E) "+ ++!;#MX663H/#eG?" 75* &3D/Խ"״%F%-382*K'³& ͼH75 Z4 K!Ŵ! ٲ<.=C=#5$@޼! :4" .*-&, ݻ2>4&8'! 'κ2/G!.*$1% ׼34I4 J' 3$ #*dW%!2!'6 $˼$KDE.   ÷ !589"/$ 4 ᾿̶D2!\, +- !ƹߨ3?:&L,4  ש*3,4D0: '::>*G %  зм -L*2 <: % ֲ*)4#*;9$  Ȭ(554$4!  Ǹ)61 #/#  !խ?(=80  -ڿῦ, 1';A$'  񶲽1&$(9?*% " ط +820'9%@!%ޡ .'4,3%* #8;!"  %϶ 7K(7&  м$H3& .:9"Ϸe;& G7B#)ѕٿ*E@<, A08@:&6+ )+88+ 4&  , E>%/'+ +$& "#D/-F6% ͯ4' +7N* L #ˬ;5F0M#?FѵȮ5* 8%A!H?᷹Р1C8$%5U# %ַ2K%./N&%=<,7 L2 ֻ׽67304  " -ξ2D07= +(.,ȿ*5:89<5  .+ޯ5?>9W9  !:ܹ*,S=IL56Įż9HA0cB% = 2)략۝ͼ4@X:JD 'ި½' 4ACS\/ -# ƹި)A7!J=OJ0ļɵ,E5_IT6=!! κ%YE]H$ 33Ό<&5AV3)'!6Fԯ2>PQ&$/ >. ø5eZ+8% #(9 KK?,?3#2 Ti#%5* +#(˺Ӽ #VY"18-= 4"NC,$L7H"' ˿ ';C:$5!.B . ɹ>)NK!>.+.1*· 7Q+A:+2 4b ݿ 9@<5/1 EB ˲C$-(  $;RK="!  #կ̿@;7d/  $)/ ̣"3+AA83! 02 ȫ&?(#I*(3 9#խ2,A="7&Y(ʨ>+4;( 42"H(.>3 'H .& &ܺ NY 3=)#",=ȑ4\5&7/>7!U\"2*.PD Ώ$ !PB/NL50 4.: 2."0PN( ̶ͭ$̳4=$ .IhG ຜ! :)A ,Sa0!Ͼɴ- /C(aU : پ׵3/< 2gQ/ ' #- 0* ! Q2*),;5ʿ-2359D%?0 бĻ -H3 "$U- ظ"2A4#"&!O&ν ˾Ϯ,&!BJ1,"29.! ¬ (+0?>A,6B, ⸸ B@B/:$#+  /./IJھ 6%Q:%> ͢ )/*;1=@Ѷ>0?G@ʾ3--4B'*$6#!-·).+- )&+= A%˨&&0 8.8J(˶18 " #8&*950 %# '-=6P ɴм 1"9D*(5./6 0a #@&%/ȧ $5> Cd-71&ڴ *. QOA#($ '=3WW+1-ʹ < =l@2 6# & &E2OU11+-3;D'O9B   D1H1O,>*  5\I8 I3J ޽Ӵ#  ))]< 5(K69ӿ-2 '4/V=D=ղ/'8 )6,(-3>8 亾ԫ=5*%&4,MD# : C# /('8d"ٹ%'+1ڻ&8U+ F6-, 5* KQ'# H#9A&I(鹸 5LT/8/23Aݶ740;H +&4 #Ǻ(82VC( ((. 7ǭ$3F[4)'5 R ɢ--!*FV/7;(?߷+E>?.-3# ޴-W=.:().- ַҿ 'UJ2#.* ó'YD#,!2,"Ը;546* \2  88D+& $:>=- Щ32Q,1K!Q* ߶׷ Ϣ2 K 3 #8,LE$ :..A>% Dz $)E):,!=@< ',;A 2+$ID'*Ю޶ ?)E7/.9>>!Ʒ",8A %6!LA8+((ُŹ 'K.>)ET5!.!"/I .VH2+ /'E94,b.3<ʽۿ  @G  (\4&?δ #3&C"! =8!J!#ҿ:%$9<#L<,46ݞ(!"&GF !="/>5 ʸ=< "%:-  KC&5׾,A' +K< 2%"NE75"($5W Ḩ&O$0+L'51`䩳D$1 B*>((*2 V#07FA!4:>50 կɼ>F&-: %!!Ƹ5<0P %! %   ߹&2R.$71  . ƪ"ID8*'-#- دL8D5* "&! ʶķ8D2:($ ! 4& ɡ ))B8! <( Ƕ6 Jþʳ'9)'1-/%׽ ;# )3  * .U 3Ļ̹/,;+$> $%$8%Ȼ (-C.;D Ļ1< /]6H13" A:.;/ծ)# :R$7"̾  8F>D'!03 K?%5G&.3Ji6+2V8R^ '&DF($Dl4" $3:IERd#8=*:>hH& E=C4[D, ú ݵ  UL2Z6!- %5OF.>//  (H>?H;0 7)+M6I/<0DZ +2 0GX8;: ο  #- 4KEB*&"* 0/-2e57+ &02*$I8-28&Ǿ 090D<:':ȸʹ!Q+ :@/.?'5 Ϳ B.\$ C(-1.'Iԭ 28 4C1.2(>/ŵ#' +)2?.(/(I-$&B01+9G̶32B:7%%:+K ư -2)-B8#()5";)F +#60-'$'.ߤԿ$6B' #4H"#@$ż #:@"3K/D  *(81%L5.+ͥ CI8# /@;-#е Ӿ"-[->.W=  6#3(8!@<$#1N9"M9$+& .<2 =("U (<("E2()1+%!8:% ?=4 '6@ 4>0  %"/+ '2!+B ,C+ ,-:0 " 0"&=E "(&%JҾ * 9(5#/&-D+" :; (0 2+ ˿ݻ %3% 40#?E ҽ*54!68 6N %?!PE ":'ɿ׷c-/PK+? HK 23B4:1 .Ѷ4s/ 5?5a  ŏ 9b(YD"4 Լ$G.!-=GA5̵>)3?  /WR ļ¼J#@ @R@׬ͻ , !> $;j躰,%$.7 !Hd! ε+7! 9./CH+5 8; O;4(;J ĸ7:"H-*>C$ʺ>(. 'L',@5++'4 @h *%& B /2SK =0 6'%09/7'/:;㮶3,+%9?$!53ٺ=7 *-6=''F+ ؾݡ'B0!"2GD 8 *!"C3!!%F5 !# ճ-% `2AP&/ ո%R&;-0 /5H.ӫ8E:'*%&I?# 򯷿 %@.4(- 7:1 ٠,B$(92( B"# ܬO,!: >>!#*5&@% /'E*'%8!E2&,B'#&!O&#:'-A$  ='N޾&")$ #"?*% ѷѿ!5*)6#־#   W1 غ)7! 1 ,:&߹ %!$?3'C  ǔ F %M7 ,"ɞ"  ' ;@$ * @+?3--*л!.K* !;#) 4<0+#1@!(7F  2* *K  Ǿ **%%-8/37A +Ǜն&D'!(K(1:*Ἠٽ6VH%-D!ǢļLK+& 48' ɖʩ 7.0V  7U&խ͞FM1G# 2 O45 ڧ EBQ8>'< 㺠9F$ 4  尫'CL8;2R 8=/J,AVBK1M@5"> +`@E<46678 󾵣9O%d:"1/;8Sǻb>R',58#F8"ٹ﫶'_FF #I-9?/ "!SK*&'F$J6Ư+60:C  !1@(57 ʳѿ ,F2, $/A"/$ %ذ>E +KQ*!) ޽  *77" !:BY5&#˶ڵ1#-O -/./n-Խ  4.&(:++8F<ت .=%4":EBD3ֱ +E%69=)=F԰ ;AI1K6/)%' ;<94B6(ݻ"42E(+)K:;= +2.)/@G!) &7 ѿ*C5NJ"7 6JJT&8 ܾ۽$@Z43-($ B  ŴcU3&;8 **d: 2A0ݽ9O5& **:* _2# -:%&"/D0%2%9 $ ò!+Z3<10Д  $6_ ""! 33 %2: $F %+$/W&$ 7A& 264# [DޱԹ55EA'`, ߠ!38;80 /2&15 4=E. %?!ʹ !@)2 5b,9 ˺ '1; VB).*.7"-(5'  ʺ #=,#.)4 ) ߿%(%C'07$#" ͽ.(7.?,.(Ǿ<[= "&$-< '>83 %$ ! &+") )2 خ37C 4 տI3*(-3/+%Ծ !6.2 &=)$'..)&# =')0 ŵ "6&<  !0?,) Ž5('# &1!*C5 // -'F:  .1-",#P"-< ڻ (&. @@,($++ 8 ?C48 (* " L[N9 ̹#%4FB5B)λ+ 23-4)>8=㯪*&L7!,6%/3޸˶ 5X'![#   ?&b@ T ɍ#0  6R+*4 #&!  ƾ %-48<>@?=:61,&! +6@IPUYZ[[YXWVWX[`dimrvy{{{zwrkd]ULB:1)"  $(*,----,*('%$###%&(*,----,,*(%"  ļ$,4:>@@><82+%  &2=GPVZ]^][YXVVWXZ^bfkpuy{||zupibZQG=3*$ $(+.01220.,)%"  !#%'*,--,+'#    ż )2:?BCA?92*# %17/&Ľ#.8AKSY^acca_^\\\]^`behloqssrokf`YOE;2)#!$(+/2466531-)&#!!#%&%$"    !""#$%&&&%#   !(/48:::61*# ",5>FNTY]`bdeddccbbcegijjjkkjhfb]WOF=5/)$! !""#$&(+,.02220.,)'$"  !$%'(*+,--..,)&" þ &+035653/+%  !+4;BHMRVY\_cfgijjjjjkjjjhfdb_\YVRLE>83/+'$!!#%&&''())))+,--,,,,+*('$"   $'*,-/011110-)%  ¾ $+/356530-(!  &.6=CINRUWZ\_bfjmoqssrpolhea\XTOJFA<730.+)'&$"  "$&'()++,+*)))(''''())('&$"    $'*-/112221/.+'#  #+267640+%  )19AGMQTVXZ[]`cfjoswxyyvsnic]XQIC=71.-+*)))((('%#! "#%'())))(&$""!"#$$%&&%$"   #'+.0234321/-*'$   #*04653/(  !,7@HOSUVWWXYZ\_bfjnswz{zwrle]VNG?70+(%%%')*++++*)(%#! !#%&'((('&%#"!!!!"#$%%%$#"""    %)+-////.-+)'%#  ÿ $(,-.,(" '3=FNSWXWWVUUWY\_bfkptwyywsmf^ULD;4-(%$$%&(*,--,,+*)(&&%$#"!  !##$$$##$%$$#""!!!""""#$$$$#    #%(*,+***)&%#! Ŀ "## !.9CKQTUTSRRRSTWZ^afjnprssqnjd]TJ@71,(&%$$%&)+,.///.-,+*(&%#"  "##$$$$#"  "#%&&$"   !"#%&&'''&&%#!    +6?EJMNOOOOPRSTVZ^begiklllkie_WPG?82.+(&%%&')+,.///.-,+*)(&$#!  !!"#$$#""!!"$&'('%!   !!!   '07CGKOSVYZZZZYXVUTRPNMKIGFC@=9642222222234554420.,*&#! !"#%(*-/00/.,*'$    Ŀÿ $*17>EKPTWXXXXVUSQNJHECBCDDEEEDB?=;864211233455420-+'$! !$&),/23431.,)&"     %,4;864333320.,)&#  #&*.36888640,'#    ÿ  ##  ")08AIOTWYYXWTQMHC>:8768:=@CFJLMMLJGD@=:752/,(%" !%*.369::862.)$     #%$" %,5DIMQTTROJE@<:877779;>BFIMPSUTROJD=6.("!$'(())(()**+-/13455431/-)$    ľ "%)-15;@DGKMLKHEB?=:987778;?CGJMOQRRPLHA:3,%"&),.0012344444444320.,*&"   ž !"$&'()+-.0369<>@AAAAA?>=<;:;=>?ADFGHJJJJIGD@;5/)##'*-1368:<>>>=<:8530-*&!   ý  $'),-.///.///..../147:=??@@@@BCDDDDDDDCB@?<:741-(# !%(+.159<@CEFFFEC@<83/*%    þ $(+-0220/-+*('%%%%'+/27<@CDFGGGGFEC@><:975320.,)'%$#""!!"$%(*.1369<@CFHJKKIGD@;60*$     "%),-./.,*'%"$).4:@DHJJHGEB?<8520.-,+*)('''())**+,-/257:=?ACEHJKKKKIGDA<60*#    !$%&&&&%%$#!$+29>BEFDB?<840,)'%#"! !#&),.0123579BGJMPRTUVWWXZ[\\\ZXVSOJFB>962/+'#    !"#$#"   "$'()('%#! "$(-27BGKORVY\_begijihea]YUQMIFCA?><:86421/-*&!  !&),037:=@CEFFEC@;6/'   #')***(&$#"  "%(-16:>BFILPSVX[]^`abbba_][YVSPNKGDA>;86420.+'$!   "&(*-/259BFJNQTVXYYZZYYXWVTTSSRRQOMKHDA>:62/+($     #'+,-..037:<>ADFHHHE@92*" Ĺ #'+-...-,+)'%"! !#&+.269<@DHLPTVWWWWVUSRQPPONNNNMMLLKJHEB>94.)%    $),-./02479;>@BDEEC@<6/)"   $),--,*(&%$###$%%'*-059>BGKNQTVWWWVTSRQPONMLKJIIHHIIIHGFDA=72,&     $(+-/1358:<=?ACDDB?93-'      %)++*(%!"'+037;?DINRVXYYWUSRPNMLKKKJJJJIHGFDDCBA@?=:73.'   #'),.035678:=?ABA=94/)"   ȼ !$%%#!"'-39?EJOSVZ\]]ZVSOLJIHHHHIJJJIIGEDBA@??><:751-(!   !!   "%'*,/1357:<>@@>:60*$    %+17>DKQW[_aba_\XTOJFDCDEFGGHGFDCBA@?>=<:740-)$  !"$$$##"   "$&(*,.024689:;973.)$ !"""! ƻ   %*06>FNU[_bdcb_\XTOKHEEEEEEEDBA?>==<<;:9630-)&"   !"###$#"!  "#%(*,/24688752.)$ #&())(&#  Ⱦ "'-4;CJQW\_aba_]ZVSPMLKJIHGFDB@?>=<;;;:973/,($!   "#$#""!!!!  !""#$%&(*,.0110.+'#  #'*-03442.("¸  $+29@FLQUXZ\^^\ZXVTSQPONKHEB?=<;;::::9752.*&"   $'('&$"!   !##"""##$&')**+*(%"!$')-03578751+#ƾ  $+18?EJNQUWXXYXWVUTTTTTTROLHD@=;:99988641-*&!  #'**)'%"   !!! !""#$%$$" !$&(,/123431/*#Ǿ  $+3;AFILNPQQPOONNNOPQSTVUTPMHD@=:75421/-*&#   !$(*+*'%!    #&*,.0121/+'" Ž  &-5;AEILMNNNNMLLLLNPRUVWWVTQMIEA=840-+)&$"   !$%%$"    !#%(*,-...,)&#  ")06;?CFIKMNNNNMLLLLMOPQRSRPONMKHEA<83.)$!  !#$$"   "$#! !#%&''()(&$"  !)07>BEGIKLLLMMLKJJIJKMNOPPPNMLJIHFC?;61+%!  """"   "$%$   !"##"!!  ÿ $*18?DIMOPONMLKJIHGGFFGHIJKKKJJJIGECA?=950+%      "$$#!  !  ¿ &.5GNTXZ[\[ZXWUROLIGEDCCBA@@@??@ABCCBA?=:741.,)%!    "&)+*(%!    !!"$#$#$$#"! Ŀ ")0794.)$ ȿ  $&)/247;>ADHILOPRTTTUVWWWWVVVVTRQQQOMKJIHFEB><973/,&! &+18=CHMSW]cgkosxz}}}}}}}}}}}}}}{uqmhb[TKC;4,# ¹"'*.13467999:;;<=>??>=;;98631/+($  ƿ(1:AHNRX[^bfjnty}}}}}}}}}}}}}}}}}~~~~~zmaRD4#ǹ&1:DOYbksz}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~}wqic]UNHA<4.("  "%)+-0479>@BBBCEGHIIJLNPOOOPONNMKKIGFEDCBA?>=<<:877666777879::=?@ABDFFDEFGHIJKKKIHGC@;71,'! ľ (4>GPYblu{}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~}xqibYNG>3) Ż (09@GNT\chosx|}}}}}}}}}}}~~~~~~~|ytokfa]XUQOKGEB@<9631-*'&"!  $%%&)+,/012245689<=?ABDGHKMPQSUVWVTUTSRQPPNMKIHGD@>=;853-($! ¿ "&*.0246889:;:75310.+)&#"  ""#&%%&&&(((+,-.0011244357764220/.,))'%$"   "$%&')*+,,,--,+**''%#"!    !#(+/58<@CFILPRRTVXZ[\]^__`aaa``___^\ZXSPKHC<70*%  !&(-0379;>>?@A@AA@><;;:865520/..--,+*)*()'%#!   "#$%''&''''''(&&%%$$%$$$$#%&%%$$'''&&%$$""#    $&%')+....//..-,+)'&#    ¿  #'*,/2488::::<<;==>>???A@@>?>;9731/,($!  #',/36;?CGJKNPQQRQOMLIGDA?;82-("   !"$%''&'&&&%%#!   "#%')*,,-/123332220/0/..,)'&$!  "'-159=?CFHIKLLLLJJGECA?>:40+&!    "&*,.02335231/,*'$!   """#"         ##$$&''((''&%#       !#$%'((('&%$!   "$$%''&'(&'''('''&'(($##"   !"##$$%%$$!  #&),023589::;:9976540.-*(&$       !##&'(**+-../12110..,*%!        !#(*-02579<<>AABDFEFGFFEFGEECA?=;952/-+%"   "!"#$$&%%'('()()*)*++*+)('$"!                   gambas-3.16.3/app/examples/Games/BeastScroll/bgd1_ciel.png000066400000000000000000000152151411575327000232350ustar00rootroot00000000000000PNG  IHDRxYP TIDATxr:51w;Dz~ A)q$ X'됪@7\FE `0@C `0@C `0@C `0@C `0@C `0ӽs:3##I!vm?;p?@V;7 gGk' Ovнz}?{p@A=Vx|Co?\KFzVY A6|CkKnmy q`AvsG+ry\=].ڶvӮ>)ʔM1(\&]~A2B{\Yٽ`f eImh`JI>(S.qo뾛&RsypIn86JJ5 5y_$~- wІ?LRq*z6ЙJ)Zڬ_.q"p}Z[oZޚ3syeOV~#AԂK^oȩ$v 朥Q1tY@VȤ_|^ Z#~$۶skE= {|;v7o ݽR4Iw{C/k #LV_Wɤyvr;#j a?ׯ޶~;؄I$7SCZq 1>ݰo,]!yy]1Fe/ԟ䱅1*mk$GCuOaed̯‚h-%tRf-GX 搳RJW/p^GZկ\yKkǜc4{:۰c4Q]|'0.aAgѾܿ'}ia'}HkŠe V>|9,`"ng 9o6{]Mߋr/ᑂGZ^͑nZ\a.?-x leD^Gjk-k+P?YJ'i;GXg˜W]GxJFQof>pX>{F3ׯuZsm ?'xyOvT眷i! PNʟt["y. kYW6tCt6 g;^e\+`As({^~c4z攏cT8p4: v6{,W!/qc9LYzyQJIw#k| ]/81*2ѱ/#d rkV} ؟rtgfN qXk_|ߨ)?iܰ'{:{G:Յv_?Cn𝵟nNcS폈  ]!9VÃb9u0TDb8xH]2~ۍKLȜrm3.ןF*,n;C&.€]F?&>x^# d mGe#gw(@m+&>F ,}Cш'Eׇ%b<>_ ٠B@LۆZY:+,YsVJI1>uhlj}w. 8Pb$FĴ=@@ڢP[ e @ԥ^jnC˾1.,|﯆@nX=rD  {8pV aZ:.=A@fIY!wrsVӺD\ؘzmN`~^vi>:}(h}fK8^WGGFa~?IkoQH4ezy. `ѱ tAG~K{y{< @(ϺH@w@l:( @F\_~i6%6=Prgx;g@%}Fmd Q_-h@PMA)%65twʾ-{I .rJ) cj45,W^IC5CZiR15/{~)1].MqR/\$pe2|UγRJ2eX B7nsV.i y^"N6=H@J V]", 蚦r^?+I$-@ڪL %eڔbۉ i>-PKGi][,߻aFA0yލv⽟.lψ! Ꞿe kp;A,ŞZ;Ugog]?jT+DY9׽?GK!p"y.!0{Z;ás k!0~ݱo!0 Xq"[۟ 2Gw9!~ό=kGQ)%]?Br]9+.{cr.8-lixסhy޾ӣFxo hs5Ͽew{budL.% |;"8bY._WC)]wPQ_>QD9ѣ,^Wc4ݒn ,EITApduY.M!KU%*Q/K@Nv).Afa=&ݤ$ãpmo<0.e\5$]E1n缍)A׽_f'|07_sJWӼ,N1# J>.&y41=ßG ,-˷M@1IsNsrQ,^^]zN2@z c*]:T\PYWse J9)e\1*ưO\eb6r 2ٷDLgKF`Qڿwu7k LnZ/OL?1.T%r A>+,%7mîֳ-Qk岔=zh|kgCei)'PDi*{\~?f#^ [}^mIS|B\ dfzyyd.ɕRi?fMJn1icIXLT޷\'5ϳtT֜PDO$3<\Yv6U-|vmK 9g%/[|B u\m /NS+r=vStU`>{qӺ߯,%nnIz~{DrKT)!!LK%v {X.˻w3==-x8ك{81_H9gY{R9˖lҴ̟K/q9veZn}k- g)o 5ܹ,^fsu<* @ uO?c%%ۅ?>76}K}s,rlz\{V> |R[eYYI)-,/0I 2ɣ$_Babq'{m}< Ϗ^Ju^_9 y. .F].A1J`n:6Ԅ5ԯ !|$_>'դQsL/SPl.*WGo;%w=?G]q}_rrev{wU@>a=b b5XY~?O֋^]8k69k(˛湄R95r4M!G83y#؎)Ak{Xk({+h5F ~Ry9o _.rf4Ͽcn l\Rڽ{!Ά3zlJE+W Ie2zr7lK9acWqt Bhtϳ\F^G,;-/#|~z]ݕRzrQJi'>fsw]. ֎k҄+Wo~ng=%笟;<:븿G UrvLKK~]i4m AkmmڟۥkjIeI9u\s V%|%  `?nlf[5GG̵947yg<[J*o$RCvKuL?Gع~=>d>:kAΏ:;ge6`W۶'vS*|[~پ}%hY;]?: }mYvtFm ⷯ2⽫w? 0 `! 0 `! 0 `! 0 `! 0 `! 0 `! 0 `! 0 `! 0 `! 0vIENDB`gambas-3.16.3/app/examples/Games/BeastScroll/bgd2_montagnes.png000066400000000000000000005323631411575327000243250ustar00rootroot00000000000000PNG  IHDRIDATxْ$G}jf>Edf ^&B ߏW| >ᑳgn|23党{ Y BSE,ppuWʋI.3'Qﳔ3DN3y'IIqB(ɂsIDOȋ?HٟO۠˾ۊɈb?N"ȋ|O |bʘi~sLp$8MƒPLVEIXýȋȋܠLTM>(~w-~# s}R箎E O3S1Bqs Ǚ7O ԎϽ~r__*i~oD[9S\Z8)%D</{F>?wWʵy.#d#qѺכWln;~ab^Xr oE^E^E(h&,DPIPy> ȋ|/)S\[-"潋88:")0LS/=JErwK/?~ ڼw8xM#!"TNhꚦ'a?xRTMs.L}Keو.=t'njψ#={n[/?9ٰeTudyyFV];Б u[ܶ5>v()f9!dTWˋȷ'_*-l,\ /DKGDxhfTs )G'[s_[?bfK/?dy+C]-, t@roכg{n"fC60&!OYzH""3<Mæm[;+T~ip ̋ȋȋ|<)AgxF*ɚwBS 7]#cSߡn8H)"ߝ|A,'l?msëWH㇛U%}a84Mwvrd= ~*{Kߺ_ڿi ۯ|~E.Բvdgߡӎ%8 qןwPyg ,h{4.}Ӑ_W_ьUɩg~!ܣDukg8ZA*4zsמ?fnDD'@x #BEei/3Hǻ=H%L{ȋ?\RyY-$' 92;@ y͖i#N= ȋ|@OKsAO{*XQ8q2#:2aGT8_uRG";yJ}n''#T Tx܉to|K_%0Fa|B\DPv=8<'Pm >@U/ Ȑ#A%{8}iڇSSIؕDҺ?Ղ|d-$f:g]#̎fy&g"ВQPEHW~pd3AQD /ݗG/_ڿal@aMV/+HUI^ uESw! &=QTxNAɠK}{i>lENԱ\O^PQN7 p(R0">$9GS*'DwxqljA%҆ۏh61TJF"k^<_ڿi/>>S²m;i8c,t=)%8pssGU5)] #*9Cĭr)rq/K}zOpȒ-dH_RY|,R \<0B2;DE`sb>uMpBX@$j/msi+91Z0)%Sm=t?geq H.'hΈem}ge~?ui۴u)RSr8 z>(s='kw'uOۧC4MG]2Bc`*`u/Uwxbw'xDU 1Ec{Y3ܳ}Dd3?\d:p^Hifș EG2Aе8*!Nm˶ ꨜI"9yel:V~W綏8wJfhre?ߴ/_|#g=:\?]珷~^ڿ#Χx8>><[r&";L~xпC sT ı6u@gqUH N3eXྼe^e]˷^^x=z6f@^!hSXJ'ݪZگsO/hDH0>#eŋNj)N K2#9C۶_KVْx=g% ]9wy:!iRV}6㪽>s8!-?|~\DK,=(dUO,aR*OGæg 3)]Zk8_]3S>ȋȗ)Oǯr }5ԡk -b!_ "g.|xz}Y>?vN|{ZCO%n$ M-;-78yffb<z@ސR"M#R=%8lc,QH]l[ahǑH [W(SyO߫ʧ;(ޗ޺+藞H~_j1],iJDɢ a1lTYƯkʗ< SR7%s(ie3ǿxZ22:E01R<%ﺪ*BS!ޓRb'eHi"qPU' 8 z=W¼!xD5DN*p|)| 6E^E>&Ιa|vozDw͢2JNB۶5-'gV쵒>wMTJ1cӗ"/ɋUqL$ݓK6*"KvQc-NcDI#ΉV믨j^e✣km41SF- P'*J~w"/O'B423#=Qg)d[{c*bL@<1} :OO\/HTX>G~~,^G"2=A┿UU!#Ǟ?P-qg9e`X 4O[nEt`^;㏵!gW=YpoKgNp^z%Zx 2/JOZBPW1>N=<!gG0c_EWyT19q Dpj{Yɪ%-!vVG]EsD6~X8@lrE( UUrL4 Cٴ|" o3 :ԵR7Q|PL2ylǕܭ%ȚN\^AwrYgQ|1̋3:S5¦sm6>cdggXڊȋY#$gw|KRO¿dQx [#*HQi*-(1b繅K~c#E_Z-~Q?)F>ewB8).s-|sv䜩niKq\Tp6* 癔tM 'e2Yp|sz}n(y y3lQFSdv6Y@iT&XsAgҌ/}nӬ#xu߽ȋ|;YHG\zsa ^T5w7е7P BoNՔr:0W_k?|[,Ѯ4tO@_HƉc J]W_̉y-#+MpA3 À`0fqJRYöx/4u[#9[5]Ґui_ }#_0kJN砮Av!厂 8QG|EٷJ-H %4BCamJZ6ƁYc&{=+/S>A![].@ iJy Ɯ#Is+r8_'M(%/Ex~߹~}1^OsY7#H@D&sbYguՑ"Yf *4j @ADv˖-!̳P,N.y/ᓍ)[P$|ƅL*!dŢ,*q)}de DʳQH"RGΊ:[< yum/8u"ϟ]sE\87uS9g'EHHqB{)1 .Xӝ/G~ I}b+<^܉HڝLa!N>zB*hMUyɘ>ʓO׾ *'dbGjZSLּ*lѼ'A 2ԴUkA'R>&tQz%9c{)/" s_p( 0 "G+K8{OU5l-]q83ˣ_qzYJis 1c&HLU;6kN8 (cf.@5D RϾlTPV59KIs˾{"a5+N0K~M)oRE ;: s9&R@4RU >!ckYɵy) $ge-'VkkϜ*4hNp LJ|\ylHI[,S|ٳwc^G~_?g}'$FT&,n!NKj!;W~ZjԧeR̳YUU] a{i:wpaZ"f~Ұ(Rtf}N{UA8G3=׼ _QZ6mA4#5R~@ą쑉9*s}B3Øi774m2 GnWΑN$? 3㓸aӋE(BF=Xax/ )rHYSq\֏˔ȍ+O״gߔ*u dYq*6PѴ-uUx^}"s]QrM߳R%c ZdUd­׻>n]yg>YdΝB?U%R^6}ߓ wU)_mss0f*BLif&v[i-3u\6%Kݢ+0ϑ0m]`y94mYZ'`SL<\ [+,1a߷\/RΕaR?"~$}1uRziܮ cȮY{|s n-'rc&fCn>rٓsA^NJe/ZQsN\XB\OZJo~ۀl"re^. m"p{bqu~d&|moEH95 /$_܀ƂAMӠrkYƀ=feI#h#MUSW{\T".x|C!?rD緖Oy>S l>9RRBpGl?UR$~m7Ն*k%n<ݰl[y䧟~A2sԁ8c圡$z[n0ցՆ59OdMH茸\p=-m"B*Ʊppd& \OI )khx;2n_l:vakx +SM:c*3RRJW4$AmksU0/**="JeMIFdy8l?H@.dJcP뚮UsOD\$F]7EXxKy~QotD\"Z"iId=‫<Fn6Եn:)ޙ':KIX9~F BqqOt +Kgg&]XH/%>w||rXg/q~]C]S( =_=ϯ-Qs"f2Mc\B7T#(=URc[sv1iW[&0'iTUwwʂ}E8i!>ЧRx_v7rm*o.0MwzO۶y!x߯Eq88?3{W$XvΕmn-ܒg UHS4ʭWPwL/ yٹ8ĥ2ws>(UhqŻv [_ @GyP5#H~l}~YK^m7MCCdqYln,Ted^i뮄=Khi,k-/%9DigC!UB8/5 xZ=~lx{޽_{E5oF^ L+l;.F=e_e?(aqPW֡P\ -wW` YGJb_?8K.(.ii*nMBSn͍PW5_wkps.3T(:AOeyB2Nj:g?Α'w=v)G ER"XA;gm/߿abe@ۖ9ő9g48 :d], KS|eDy:>n;\ZBQ8S@p]~F/]/%\ѤK0&R)٦Ž/N,}aq8 04 M־Y9Q;P5r>)WpXpS'* /8!a*CDk=΅ e&Qz=9x<5Ώ?>~tOۋ7}vt@5R<-8@MG۶8 P[$4Ծ$$h@FB=={_~r6UēI8I){w]N.5qbi¢O<3On@.3bĖw$q1ln'cEM -4Z/g/5 y 8 4 ݭ~8WDݷ[//.:QOC0 GWٰ͖lH(ݓ8 +TƒxH䨄kXPﮟ/sR/E},!#1;9g_8?)GR>dqM#cLӼzȄL3 e[7xp31i"J&%]_Vlt*R2\hgeʭ0nu]70VbQE3^YV&ôl$UMmU%|ClCEh]ϯ'ۙ<~<,D90[l;EAom;4Yf-!*e'g oNfu~}=ST%P#ð-nSq7oꎜqfsKӴ? ;JVåJY7n/ݿv"d*!=ۛ 59HprNcMqXW]-r]KZ>[X-%%f(J+3&"_/gxp#ge/j6r=?8vq!PU=%A9ˋ1bksmdfx_L-Т!Yʳ,uպ)j&Df‹X.u~Pʼ N!NV!&nXG2=1Mp4MGHɚW<@ֈͭyZS|H5rI(E%Y$"`X75$o^0>TQ~~?oQrfd%= !D[gUUl_!'v= ,8K+BAbǑnO<7Zcr?Lg}zVC3)G41癎=MhGbA,8)#T9DO#B98tY_Z|}-!nNH[aqǯʆ@6(KYI#=maZXȍQ3j3ČvkgZSlZ SeI"jʽXq=;wI9 7p^8 qFVRyܢ.~ D '>1|li{n}'APg)IW?ExJp${2ÎiN64㼐m&FsV.pzqUl6l gX9U=O! Wp.M[A9c]Q-!r=̈́[B1HNrQێIKTFm$8 fmK۶ʥ@g ?"?%bKƩCy1̚S4Y@d QH1S2.Xx'H1y ljG%%1ۗJ4iza䤴aoKB]̙:TĬ3I#Y.|Mnln}ZxIZsuUZ#hÆ(+s=e=& ~W.uG8GԉwӁ੨}۟yr8~?_8?XW/5KьGUy3ft:-<>W,})u’p(TՒ>=wzui_鞞<`]d=noiN<"`@fag0c$ϫţ 0FlێlonRkRDj:n98s<GSPIJ: )f<A'E'kHמkc$OЬlJ_RاMr  4)08tcS|Z;e;%}j>ݢ^ޯ£ zN]^"qcOU>oϑ'<ِua .'Gm*hC)^ZJJ<ݹB{q]M< ca* x+MD̆J_GLKu֚*s\>N|ZGt|׵?>Zoڟz k/bqaGz˞2x`7aG%g3EbGU5l7͆NJifH %d4d@[D- fh j$:u?h|j>#hU$R[gFkIBw]1j@m!HEB- SKՏDpBީ=MkS"8h\{Sb'<U1#d܄Oz?߳$ lœ~r_L׉:0j QeDQ&OhñGy&5epZ6'%-߼F\E2 ՑjwK2KV d0BM[ITM#G9bl>_ޓ,ݒ@C-T:R#R9nﶌ23cKeW+@ρү /b09g8ON‹waY fqYP5=BbWD VR$OU-IZO\,#d8TJ˽;Ajehdp,D#怚|_wx`V"e.NH>0|`*iYWqǻ[F=)J5iRvΡ8X/r2DݺW ]Iˮx5J׋qc %p59'# *@B5R&2dU4-1BL~;[ !\?HQ38U5cϰX"9_(@y蒧6S#eʟ \5B>UVP3Q'śf.e>J`|f;9VZ.JiDL^놦i9q<g Gt]GSwDQM8BR1F@PQw6-mWS׵ x\3#~ؕ"~eW"b8AI?M]׸2c$Gۨ4{,/4 ԟX*~$MV $g c/s#yKJk~OԮۿP6R] 2;# ۗ[C<WQgޤYnV6[&< F9GDL$k$b#,4=qvrTq*>Sk~3ekPhӞ gBIGh Ue얫J#9q- B1⫖iM(܉PE tx%/Ww}\G~zzg=7qs,ړ1p0CUTTLί%cMq ʄHesOH\D5 G@!r$ HhLDq$ƉTsx_?_˕?CS\>?(W>(Α%rw<J՘H懻-Ce*ڇ+: ZX'wT5U? lj3ܺ'(JEn*B3X<%=kdqP,JbÅF$*lpxd:0#1oi.x 4= 6ް43H}?0=wo88vq<̣UEq|̿pΒ7U]BvjG9xd{O#P4'vZ-, N%Xjfe )~؜`U4BnXpB]{~_ Kul'J=á`JB" D//Vۍ^ nIdk}g<΋39dzd#P v8@άsUo=~}󿤽/?o1Ra=m[iUUQ׭TPָg Q|7f 6Qw^}n<`N<Ic^>WE+9\dha}u _ BLf.s{]Ş7_*g|z?u|_:~_;0Xz~n]٥D;'n[n7kE3Q*w$8_ pAٲ$٘{fv4u@Dj[74 8 VQ$x s 1C #n^1Bu@~m>u@9iisD-0tpoԎd`29JĨ" W{aBh<%8jFO!HpԵag1Ց2ϵunOi@~(YP%(1G\Gx/y`#*G['];ág2Vh), KVn, L2HBH0bC% J]פ\}`megÑ,PUcWogfs h+/vd~XUq.pMrbgOvV$j^au.IZ.IQnD'&/r6͆uDj!wj m끕˴3%N\W0!8/]pvJsiWUu;pzkxW̌ʽsn X K&:%||ޞOzˆƌ5_gÞHfuEQ18{ȎZꢴy}r^7C$'9J% iYiB5H)Li2%9LȜF2%ePWj+ʆnkh/ʶN*q޶7wa]0~n='j޿iEz]xVN >ufNГێʷ=W ~ݧqpo΄6!%u[[r/fCyr)p8`QL#^4F|̔-"bΐUzm=Kgo>oOz//  9]!%lʲUn^6E2K*FSu$]dJ /w>V|+bYt`;TF p9's-Ŀ^łs"$9<1~j~xS3ÁiشG jԝ2H ,b4"BU@7θ]brwjb6|&u6Ep̀^^paAp.bS.tě1'jBͩ!.HSUvt90-4F1-dKJLz4ZۆjHe BҬ (5KJ#RE$T/KRbi?#y_j>'NP¾zQ%daxrɾ2Ć)s!"!YhW*xv3ϐ.gޡbO0Feъf3+b}>EM2őP!+%Iʲe444 k&[99+7 5_ B^_CXX9svQ3?ܾd4Ͱ\m%2D<uƹ4BK3^'͂sUSt-PJb靖pȮ`+TԟR%#si̝Mw ^Ӝ'Ovq<]_jXvs>T3S:2|:-HvǤ3zTŠ( [oT<1Z%/m[xcyoзt[$. Rt`gJ*$ y"x4iBveRG1[ks*1̳< (JY4EDGhɣpdd#˄/xHUل9<_n+RLQʏ?<<qx֍cd_0PK놶Ηꋛ7rϱO?qwfxS YPD&NdQjv;:~?0rIs i9MKԍ l|Cqi}s[9gr!Wf{>2rfЫkpnw`g#m!'p 'ڮۢq" < kȚ1(Omi^ڮz\RU J`ew)HTʬ=I#mwK5x>]({N.*MnC55S?H)s{#47|j|e!nuXMkv"#1#)L-lDH{G2VuӪ8,7C!FN-pO2# {d_~ΑμH29l^HWi/󧲟Krƻ\/K4|o%nrR6ΐL p8[-3iGiBb$#dKY3y۶Ơ$RئM[B[cQb K3ffH EKu=0^_ugys쵷˕HkH:⽰jWcdvQ{fJ=up\ C 7]gFCq af¦A7ឿon Ў#g4Q*~{JЗu0Iz󷌉3nR0etK(XrʸdJDHd_ըƻ˭.'E>qy=lj359!h6]@NZ=`/Uk*o dilqK2RT#upe*=?u]xg4 'ԞiiC8OhZj9'߯.i:Ě$#BZy랢~_[:+:QGƼc4sgȜK.uxw͖~Ps#cx< 4w-f^d/o߾a:m[*'qovsǻwpW_׿S4+QD /%<\쟶쵖H eZHy(/H,_cq0l qNZ \KbTZ7<|Yxnj6-yF|zd]U.s\'ϑgw ʿ Ua Nɬ%ag?Po=o< )Hk~1qd6*Kb w*ׯn739 @a:cĥW9tU}t̞~~}{G>{?S$8= 㦻rǟy¨=ϻ:gFuTtU`SWSf!%5аi63e'hپS2:Ws|牊M}C<'_"'VWdƸL >,%b< =k%,uuJx-x uƏ#; z&_ Jƍ !.֔@\]=cC.aEw/tqA7*~a7sB嘦TuKvg7Rf?pT& 餘£\;Q[N;ȔƼcLdo@N<%S"z޼F!bؓMJjy[4Z8{KѬc'HSռy ]+s8{ﴛ-n^Sזi d]մLuv cMQ》JLԶt͆8Zu_~&M3O8wGd:CvRJtHW;@'Č `8NZ.Y _B\,QAr K3` ox!Z /qLў L 2|*:/#;JdmվAjTY=~g̯H?6* }K T?̼fm $Zh`9[[UeCssn^xp6?H{5z;2|IѺKb\#;ބnkY.0@T*,]z_{g'b#ցmSSy5Ea?/:ڪ&cpD.>(x$ Va)d&;%c@H5khV:txgYsR /$xIdD@˕yԈ eHd:Bɨ]{RCs1g%b{R9s29A(p gh-UXHB٘.HAx17 >ZGx 6=`ˋG(u¶oarL6C`V، HO>P@7A;4 >xuh-aKƕ.}l 91>pHDJ%4'Wq69}m-W4Ԓ8rX,_8_HُGn_ ۷oy_ifr Sc&L7rJ'vַѣR-Uo)!imrL6a \HP"S{||  oٛ*;8y.ʀR$ +VdoLۑgl:R>=y}I%?[j%tUagX놛kjm؍ܗJG,a D]s~ܤ4s_ƿ~xO3I&=yE\ɛ?l\t,9+cS&s5FtEyؽo/'>'̶bQTBu"ˋgW TTUWl;65BfM@O>umʙ)߆ FSοʊx UeS ~> G|Qq ƈmQ h ři}xOl 77?A݋T<$vm鶷$㇙bʚ賔;us} ~\S-ٌ=uBM"- \bH=ooo #5R7|*-5TZ8 sJU6͆2ˇR f.x4 ]{s 7MR_iX m}c#?6L1h_?+Vf=)'w~_Ӟ- +ٴH6Çϱ^SWݖĤ\r#ܶ-M1 ъJTD:RpeMsPWlp1q[$SR2/e@Q k> *$x91RR8M=ρRK~ 0!?Qglqp-lj]*XƘ]TF\-8%_+tP9eNSd=R*7~wdw+%?:w~k 5`T*I˹jSƲ5(e  J%A@a?O df iݿ5M)Jl92̤6t8Όi\5û>y}R tVysN3*qq*6Qؽd D"[gJ9E9_B  '›TYmøg?PIMC4\/fyn]{HΕn|O\2=ySR;SukՃ緱$>;a`gd$Sia_JNϜq CC@3AUnsG/^ ːT́K߱G" Dn͆xx}i!7㰰{lHf6]Cȇђ8?+\a838-_[]YQ2WEyx/x+궲 )7.lT AӌA7M\6YYPG;[(FsNL)2^e9+2`xJ(YЏGJ:n[u4Fif>|xg=1M@i&l_WFx% H (]ί? x$ƹEZ[9[4U_VRq«qz=upv_=r;Cɒe^z| R$ su협/;*>1_dݽLJ{x{*agSZ{yE1?h6*uh)yjf $N%ϰTg.Cd&"ku4v \#2]E=l9d _/PovtgO31F)0Mc4 *fSpr9BckoGߤ!VY57nc),;qNgv/oQPc }Ӳ:JiJxZ0Bp ա\Aӵz>3\TbY ߒ_/~^f YG0%G&hycf #akZvlXr̿o}n5jX.eLU-46[?swwGRfmE~_3VB P>{ZLN(A6s %bBQ!#K^-5k.$VLӼ3xkDAPP޺ Ekk;AYAڮ}QIsqLfC}+7Elc,iUbS8z|I1Y6O02PQ`ShkꟖJ7F5-~)q>_b ,SJٸu \:g"2cBCB._wKa!d1XQ(t3 @C[gpޒQ8OE:t4X?p˯9Wk%@R|ͪy[x/^uedbCU폯emHr3UW(4Kn^@v}?a\*[&:Fj]R jPL\1L"(BQOo)D45ų1F;Z9^μ"p]UjL-,Jg u e)ZR*qf!^y ]U$+CXR iҳjJ&{o$g/)[+XD8@FTN+*_yZ]v8 $k+p#_sGW4UYˬ*ک( ½.EFÙO^x#OA3H#E|oZ"rXBvMH&JLF(t91'<:Эx?MA6-] >¯vuERզ@}<}}x;jkP P[ _2VO #ӓ+c"_ٯwI<*IDAT@R>BTQ,BFaNu]s)YW0bLjhWy1RB6ݫo=O}YUH]CV,cd~Yd7nkoWV/_4OcZ7+i Y|lU%|7w36_OtȕӲpf t_hk_*3]ADY%gL:4W׌6NE'ܖEԽ,#dWh;;YeXMªZmN~n@7H0/Pt$x$H_oj-R\.+۶,1pFt5\X&sw3y6e>e]TUn)Z&56d|똛vUC-?"կݠi=?=y|>mT|"0mvV*֬< }T,1p\8_F7umxkJz?p !44h"k)vch2}۱XBby qZ{rOxU*)||[;r#rU"Z,˂q:0(LkqEwN_%(v|lum"0|9? !-נ%e"Ns"ϕ9WTJ;Vd4}*2h!' )ƫW\U;VےjSPVo7MQ?ql}\3B 2"w ϓ.US4]|P*R-b_{=n0dsͬ'%u&.(@!G(,bb2 \@.H9uŌфxy Okܽ9}Npbj9o{^_x5gn[]EZۡG%b^0d2+I^&g\o~uap'jk=r!nq-򯼷(ށŒ*DȗdÚJ%kKۈ pgq"dE[-k|920y*JhY_U5~Etcm 9֥F,ηS疔@P~lZi_5xrcE=B*']R;yq"fHZlXYb`[ snk(}TUɬ[_Q nط<÷*kj\ґ!eߗH=8N:ycC,y!2ux/ P,$ɤvɵ*2j֙e]b9i"~GJpa+Lj10UiI?;< lf`" ˫PtUS+hb]\ 1Kъl41FQ䂢s^¥^nWDD9MJ7M33¥\2*'Yʛ{5ur NZˀ.ճ#_NOL\rVBN霧۪PMnBs׾6W_3 xaZ1u1#1.lﰽ0}wO4,eE6;әI/U]Z~åzˡ^CkM 0gGNIr'Plor>HY_Z5"!R[0J%v`mn]"`k[mG]ھҏaM#Yܗ5AED`3橶/clhY~ImNss2ÿ![ | %dQ9 y!eg5~^Qt}'x4ʙm?Mc !HPCRhj0=#qJauh+ʸy~bK%4MQO|Zˮxe)J[֯6$VۘUeZ[I֠B9!]NPPӴnZZQ ŠzF6SZHQ_fߘxU" ZQIm33'>>3牶ik!\:Ychǡa4_+~"tm7˟i`'Ϯ?е=֊HRH$HuOa Z^ZiS(*H̯.к'xW߇jᴜVx/kRZ]7bҚS\wek-dR;g'HsC׵`+Db|ƫr.+Mpʔ 'UH4 \XE*qM*B&7/Q%B"5SyxĘG7$]H*RQ4z|nɪO[?[楾HrFqE6(Eh1nϥr^ GDf*Hu)&1uQEcBw c~GheiigfBrr!Z ]$vT'a8i_c5o y)tQJaXaCitm? JR"5ƅs"6(!U7*HF$7[Aˁ\p*ίH=y}[# x5)b)8kr|zE+ j^!פ$y j쿽Ǿ>_k+q$n 1“̠h}3Ӊ N,IafXaȔ%Cxm+Z*cMJH@o:z9B)QbUk_y[lڂVo]3ykvzop< _Ώ|}Afw?ȿ=?~fG~pSM|^GnϦn4'y;|vĭ-y7uhyVkU N+*x4xIEZ4sxu҈YX Yc}KkZv]G 2W2Dm 3.XY,0leU0Z, $Cr(Y[eYF Y]h(}Yߪm(/rB1x41 )vme6{ptAvٮ|~B)0/<<Z|dpm=#3<ۙj V]MWƏ+x|A;u=2bEd%鵝|m_}fʊ ?i=5EEew-ԜQ:(to{gߵxeP1>M_8Xr+GLX(#| w Ǒŷ11r&^O0;}GIE6mT8<s¨B{aY^&%̥[jI a:sZt tÕ [?R oEW􆣈KR`\*%VDKwLE%UfoGZls' m,)r'qusׯE7m^Y߆wwB*Afd蕡@5-hEЉLh/tV,UYB_QAU5cY>7<{Zo`=̼\j"6\]V_>:0 vMz\[ a0PT+KH#4{GΉa¦U5P&3)JLZRBNuPSz&(#,_Q3y4N %k'iVݷ %B0Z_ymT,2}O煗]yG /Z8-AjJk/iHlw{)C@+wϴ F}'>9,VjoEp<0Cdt+)]I+QE֢ŬJ%Jv=Dh) |8}/?sf@{#Bh]ϾpGY2sL̹zHبQ4oEEV j?tRk|E9ę\$+w 1(, )hq x^ݮVYkp2:g#)LҊ\Ȱ(+l#Rq Q +6[+ɼBIJH 5T>k\#W[YŮkh}8M̒"9|C,PAiIs䔤ԶUp-"ZJ>ʴ~p^Ywww<<|O2b\>.ci~ CJ˱FSD !lj=k92J~WΙh-]!!eFD|1 {6m) 5L[J.5;Rw;8B\3horiZ.)I(fL9Tn66Vk m!h݆[#ev^ yq|8ւn Alп z?]j}m ^3+@)[Ywh'-3MR_y\`M[ yCW֍1)Jk)<}\qB+M.}irY4\P~%[}WymMF]EM,&`Z'4kI5QJ߮E@ 4?xӇ#&kݬd߷> (0Th hE;O+XvEMQuשwVFNh3Jյ7^xgYInTִ9}OTQu *(byYϹ( xFrJ?Gʙqy>_Rw4MӅݞz&x9czL"9rNKWVv޷x[/F+O(鉁]ۣ\- PoAEikqFQ9]Ʒ I)2LkZt*0P%p_8$v?TP2 šIr'j!&54RMe0JZi&lP0yc}w'FQLp:y!2z2;yTYFo[;D- FrU433>kj!Fy3&溋NRD]Hh0^U)qzk)1U;*HYm3 y|Nchb.i:XkqƊX(gZHqV {1<,c@eAhwUe.v4(KRRgbފ)P S+߹p" lte9agaޮ'[NBxMZka,QXqk8YpzP XaPQD淶, 㴐CF9e V ļT5soQ9H.Q֬*PYy:)<}x;IJ+kh{-"ɢ\WEn՗yf|(Q)a!Ÿ<z\ҙEeFpD H/k7R5=.[|6{h02Ǘ|<~dXw<>=IxEw ;5HCߗ̓]W?pMuٵǯ5g}"LâK>);`tUhE.DQl|x$…K8:gEdF(1p'\0lpxU攷v Bн'yp25uҹDk4 oa6Ύ#e1²y>{wޑ)矹\N\.ݞr(9Ku!k/e񉦛黃 "LW8dyw1TU+FE^fböf^] ^ k!LIZTZ-WO3<[ gLb3՗R6WU d%y1Ѷ-Mۡ"LN2I=Viv=ip"oF=ALX^Ybgs4}GdrM7ܿsnQnK_Qdnvȫj}&H UeCրQ QgLjHRr}2WDi])%e4XL.c9/1ql:qJ| ֫RQfE)|bT K i"Bߵayw1*m j158*jp{?7;$(:q?_~/jLG3}㙴!HȕJo"ȼoj\VpwψvvS77-6Ę71DXus&$,*XH8'KE򌾻{`i"zo^(>xq-"9-ίiR d /?DЁX7hm'DVb!@&tּ߽eoZI0b3L#wݞO|lag#,oϼ1`o\9zNWn)+W-B $[xkn kw8:AkXi<9a žL%I:[n=Q7#4Ƴ7-vǤgLO8FvoyPw{ۙx<8|;~|oya8YƁB2h+hnj]yVNorׇ1چ`@_nESƴbUO߁];(3ao\/)(#!*ɔ*rK*ٰ5(s[KJ%Uռ~8k~c q8-m4Q\wtIV!Wи7UU!ὠD΋ sXG>|8* 'ә~য়~b1 (e)%,SU lǘfqRAll,zcu];vGRw %c->pUսk6gu8# T2k <(1 -CxyO/ʰk;]-q)F㜈 U2ߡ"Ǫ"TnE&[nk%`=FqwU.Si$cLB)i)&4+'KeL%ΑN ȱR!vM߿ Qs LDSЍ Rk .,eKQ2W@(" 0r\hw-י%\{ h8s΂g?|OzN'bдf”~Y&V(dWQHQk:Q@əݎlax??44}<߽7Bc:k TYë$<ٯ%t\/y'tK1pqߎukrIqqhݼgY6+ir!څݮK;mO))(p<?s>?5qLi&E['3߽ 2l5efs^p#(u[[G^Z6CS䑠o d͜?D`/jz.![5 S49g=nO{WCDy~#ow%J, KH~îuGвi#$"jZ|&E)#?RV4aZ!yť#{DȒ0 5q7Lc:/Ԓ *B4j- 1Q׿kB%Ͽ0 Q5of:iw}-ڐcܒt]|% YkBcOR&d#杫6 R[rX0f/d1:o}]XRsB/gBΑ~ }H]dE$2 Y?֡ ,DBOɂWR ̈́vC_9M#T29 //L92Ѝ$7vDQ 8u b4 7mۺPo!Ry մ^Zmu\ƙ0/4^x|^׉"t:kF[=k{ZWYk]s}X͂-\o@9gqXT˚hjbȹ8Sb DR I%w1z\亾ņL-EsS-Tf5QGWna&Pfr?RhjQUky#ٗ۹C[pKp#Ē eWv&ld's&EI`L#KX!ƀw]ߒbO߷}m$%tDB S 8]|:?qwX/gK-%ވZnZ{mǿXz_o!U9K*| θ]=I)1H3YvJ-oLi&D4`t"_ɥo a dm=c˟x9>/Pⰻg;'s|ϣTdY tPg YEf'Rk7ZmDUgu*P^Cq8ς8Ŵ ^RKXdW2x9-ѵ;Wd7eW#ӒݑM|o?^"Ivkvl_yr2LKb&*\Dڦa6(\TJ/Hp|SEwB.gR;CzB*W4si:kE1M !U?* hf qzu@bmLMJ L״6 7-X ֦ad1S0/8oӣL;)rODU"mI-LH*M,mi;_ ,Eaz\Z5P'p#:2 ۔R1o+^((18hms.`fZHջ*-&֣ռ10Xi[YvT[Zh~dHEq<0M6:sg4nylwn!Ar/gNe$W8Lڞʱ2 Ǡ(& LTt{4!i)5ZJef}׷)dGRhgiʑzj^'TQ/M7뼹,>?˧$`wM3R,k1ho˘z:?zGݞr5 NnO*f UfP^-@E1)>00 =GI.rJDZm 9Ow6oߔ$HB9z^r1FA~з;30rIAe$0rs\8OO#YMոv5$r,Y27n\9o!_o7I_T%uy1Vvɟ}}m v e|:~揗__ړt"鈩.W c-H59e8lq8iyxxGY,c=DR.4(r\SmQKN>t&2!.Hu?x7hm_]5[| 1F@k]#T"t!̮Wt~'^v.0 BՖ,4ۍ64?3>J ַ-9QW:8VD1D*=p:YIPY1چm(}յSǁy)nnrX"T̍D:m8/poNLmh;i@H xcf8oNpK|r`b,!膴.]y1Js8W/:J5naz1lӌ1PQG!4=82L5E:OLl軆NdCa i W>͕Dܠ|ç^;,R*lȎ h(OCٵ]v=Aw;֋CTLy>G*3ZJ-JaD.mM^9uXf>>?30[#Hc)ab!'.iێ2)L4hqjC6wb\eT d-du=~'iڞ~/ϕx%HR+|\SJuEix`0o&iY'Bz"oZ;Z"a7+#\ϟ8>ONM:@vG)^,tEmuZ]xV /r9f-[Ǫ"pDr+SHj!F 0@\ oKmbB}Ku޼l//O8˜ {Ն6vMӱ@و[jk︿x]#)\F2M&挩V;5\ڹz{5obTFQy?_VKs-V~ߵ9*XgGyKK')Bq U4zК&kl83x{⛌*kbҕ!L (Hqܹ=??G~~oBQ!)+ ]@z,6#TDv+427CƙeHv2aA)S4rND֒V /[ʬʿYqaY"a%i`M.ir{{N Ǔb(l*w#i4r1;QJQ&F\˙R {3BLV:<3M4qELP'1aM!nfZ"fZfvn XVkI%^boEIA#! d+j.\RPF;ܮcL, $,k~X[ߞyO]p(b*5*ƨ2Owo%<\Xƕyn+(\B}*3gΙAD)Yj> NOOO/78N92oٷ6s_sy]u (n#T7F`I, :6fl[RĦ@W7z&||}#ܾ_Q .o^_B\ѯR jqacJ3yZ8Nu۠ j&?Qc5>/»]Ϸ<2{1N?0y|LZ{a)J'_۶;T^e"1Ej|V[< DgݞVd!D!d1²iq^>hz+4K15I5_ں4E#.aX\ " ukE:~gWUǗ3892u%McPFȢ^B5 -ʶTZ`G4dR}ڞ#_DZ||b /#]Q̯m8tblFѷM'.a<{~Mޭ{bY&Qd-Ӳ=6eExe}dM2dQ5/KӀ8 c!uJIMGS CvfTnb'x] 9D8*F[i̸,,1✥m;ӌQriv1GeJ",Rע$x2iXRb̓F +zNNoD V0Uw녩el_{o~zݕ-WX`[l-V*β^6%FT 2f4|GKI<#zvW97N*IԼkH9dEYGiFPJ` 9,.([JݰSjW4g+OLr aIidJI4^1WB+Aetv,1Jr6Mif%K־:%A3eF"Ż%{$X+h;Ͼp Bo%kZ%#(+|nHNiF)qE ה޷[/O+Zx>oܕ'Y-%֢GԻ8q|<'><J2S߸^Jjf")s'I{/\XKrL,)* ⪍r-0<۩^Oq()mqt: :tCX"-2xz$dip2HU'UޫN34zW9snjY7V7h- eS_%Ԙ}ף[OZ4kkH%8TN'LZuk~mO.ĥ>E mZyxtU⇐DS "țڼgUT\a)lݠ6F [Qc.r4"t`[;EPݦՄzs(9k3UfD& YW$Wa,ˌ)Mxc_A;|t{spZY NP٪)PJmORtv FHsJT=JQ\.'r1t5Bk\1kh=|/0F2u/Y'*Uq5VܶH|wB\87컞K2ÅZN;b41\dPjt>3m0uA 7~rƘ`$!<J㝗4^tlߢ*||iraTDLV,ŏkp=M&G>_S K*ܯSk5Xk%Zoȭ&fכ'!~z),-p9T^QME_hӬ|4&Ě) ]z}ݶ߈X7 xa ֵtP#H.?$AjK44mJDߋc?Ʊ;<wڐr FP4oΑLqRg-N0'Ӏs5°Z*pa FiKQZ"4lNcN/k$qYLd\,R LKEy8q>9^OGteO΋tJmR*{E8y"f߃R|~|ܮin1ZBd*t2;Hs۶(EsPC!.?Zէr2ta_{b#Ս 8\˃+uSApm _o#!fҵOd|pı4]4EoYԺRHe12OpZZCN++_Mؐ"RV"WDwwXS>²XtҦd S$@^jwȜCT=Wzزy1kEVԎ嚚p9:aw;!Af{v2b5@kLuۢz+ran2RH75U̩Y+ Ю6jRܲ[hDSm[Db7RPRb#nw`;`&ElY"1\_0\*JXH92MgڶW{ |j|( ='H2_=`Y4t-(ioP/B yYhǝyBCtRd tENFhkI2^ .atm0lwx, QѕEDR ?̟?Ĕ o&֬ՆgZ`y$ll&!.+9WTk[ϒ"sJ0Gi*JնTb}N;A]7MԸx7Hϟ||f^|#csYYi"-3}?*B-I:ĈKѾP"W]EuFThՠkf[/3LP"2dn]߶Ujzwe˾go-mۃVLTt)Q gv;^.4/]׋ѫv\u^oy'>i׍a)vǷ.FɪҋBljE腪{UB)yF)[noj_ʟpz&J"&K'^@ ;Yq")9+|-4"Wh),]㌐*Ke,=jGkY61|Yb [aסOJyȹ)C7i8rYglu,Dg7n2Vq5_݆xj#GR :v%xthf|ŗk:*⼰[ҰO2k$tY$U#%,2EmŬs.ZNKm +0kRLd-(,:bPWەDY̤W87/jc*wWREĢeaJԫqUI"_p֣j֒̑y[T+_"R #{St#!)I>oV jr!;J6xbp $̕+%G5_nR4^ |%uxkK'Ă239yHX',(A1Î~Ovbm57mpіiQK)6DPt\:9gg*HL wwCp{<-Gxć H:Ck 벪꼥Q2Ό"i_U_7ѫn%)9ܥRI Lb&goVMbdĂJkqpaoUvҙQ!. ?}5I _DZgl4k@'>wOu{q8fjLu͖&CMVXb= ,:c|fSt#huw{G{81//ᅁIR vʵ:~wJ1m.@c۶e/LùrVs4)GV0oU앇 rqxEʔPBCn=nH{prTi>iKNmTH|6 5E_[P6Z6MJaJڶg|u"[r@Zu$oƘ]=KmI(JyJ p:ka*o;r!|ٔdQwaC9ڂ=`v/A$*&.i\(5reR IFސsRO"HF2I kDe9/Z]NGb˓R{~wr|˗_8^(%V2îTHܛҢdC1bgVd &^ǎeK)lfuܼ!a^&^o-7}G ˉ/u( q&'}9&Jb3 | iZXd wL\7/HWu2UjlemNVAV6#]Icnٚq>$/w5O~N>}—(Z+ܰ9ꉪ11u6nD!$ْ^й\/$Ǚq>mJē Fu;k6tHәrGsg| @T&iP ߴ)b 'r?><{w_lX ~UɷMCxy`K!Bo▰9Jݡ_b nO9S^];DVn8˻O I B6^bRhJkMZ3s\܌*\9nzdB.N7}v㛆*V]Ut9_FXt]q?ˮeYT릾iU{qf|^4:)`2Q N ;ېtہ6\x\^h|ӰҙKfp!,c%Cˉ@%<(#1#7+^ %nJC6OKAPOKO>L eh'׎߿@`+>V\r|y~!%iM (/JK{8n ".(*JEޡܥ"oK*Wp @K) /](6=iMlZG9)iūrnwr9B{ڶvQ\-+\ARb,By~y4ww4ը9E5E öD^"1gS⇦59PR`Xnc"nqH…켣oT7EYe&3F[:/mI*x1Bcn\1BcĊhAREby5컎(lQ$nrݽpNǭ`/EQ6\Ee^8_Z "R)ow=Iub[T8[NkbE[63M4Ԓ6>"VwƨƄn[@8XGܵ(_o"?_lsmLGuaLkA?S\%-vhr~zŪAFȝnپ:ˇ(qܥc51VV-\6{[whrǴ0/30RkC&i=ZGb*hQ(H*qb /gN,12r+S\I"ߔ(bNɸ24!YBZ#iwŹJlؕ{^ϧ.]QF1!ikqq=nmlr4k:M;R/~q_$99*נ<2.G`@.C<0 }!;#> iL .3lEaCWy 2݁w VcIy/iĴ5 .0~/IHn)_'q[k+h'k-kp1dq&wеlz d1;w̗X"J1eyf'&Q e^d1*AQ%O٠㖯F|b=w@زʉN5uGR=nHW>VQm: ;/lCEt&ěR'V,J|,&_L_}~}lZ2hUݻuYG1m60VmOJR\+亮o"pAV1B0Q&*{jeH>p|~w]a>%N/6ܣ],_ u‡*+2kly?qy~9f3Ao- zMDq1zljœ]pN_s Q}C9gqL$\a4RJ945=}jDA(^351h*S֒$n'n_ǑmrW./lk9gs@魓V.TJIFnڵ a8 L6wi+ 7YTx)֬L(VH*MԸ:V,󜳺C4 ).c$(&^l;0wǗGNWt8\DGD 8H9yCH]Um#W=K)$6"83Ulj6<਱FƤ<2bs<]x=1br`,6&"з-M]K6lr Wztp/ +Vh/}\gN0VXC:2opy"q ũbb >\i'P;K23_OqxO?1 +j2N2hV'Qeq0eQo*9p9 6 [88(nr|>s>1$i|HQJ%BXIFvjYPyǵb8 ~O߶t /RDVÅ݁n/B$Ā.$8}]"LL>$8Zg"a <]UEufIs&Hy죇:Jw5# *&BR6(!bL^)ޮO4{%1Q_KM_[As?_LUPf`:%^X (%\Md":S͉ -r/r[D(1$Ae2Z4ׁakܙ;v0-4nꆾ9!i Tnk D pw4UH)1Or0PJZ9PJHYdaEIyo9HҵGoGى|Ngw=}1N.OWuO W Su\BfᑵU+L.QԶ-}>qnܸe3H%靖OO,*8w{2*U~aU-dRDaO].et%vk=1yqcƇg~59U^W ucWDFNAv5^_[m_XLVIkR߯Fqm-.Ri4Mϯ^x}}Ӡ [kyy+$TmpvRHpS >ԶlW|#$Ȑ޸LI2'].cmn6e&SW-Yb$Q0YÀp `9m|akH)dsm''u~h#2vjkIѓL+ ^-X @Z*2+jhbo{)xs#g^^^\N{ͨa6(II$J[hl[Fp>McIDATKuU1L3,0M6mGo12X+nqZJjUƢj:CYљUCzs;puŮѶ/pS2V/#y㔛(%$WBa@=fKpsu!Hƭ?mo xsZ 4s0\1Կun~_>{׊]%fvLaO_?~g`;$N]nxs:ݩLlYYMX|_oUgI~(jIq7CBu뚪U v8 gk~niN*(kv{4fCE`m[Xj3v+t P-BcYx˅jP{vizyr*CW+t{>|rӗτ N=~USY>3WgOY_[A7!%M^Ix_af6RTE"< {G/ˌnhr$[I\XRp>Dˌ⢶-a MA)wގԦ\ROaװNW.,e# 2杇 ၇{TiIܲdR$Y5&!V ܁S11E.'2KCJឰSxP=cHv=UT1E9bcg|"o9#ǻ&bhTY")ԠoMQ!aK/ˉ˴23:}v5GQ~Z-2S t8&w JKQO4]Ϯ@%䴑{*[4w͞>|̖։i<@4&)D{&0C͵UUˑ:??9yVO_?r|xk a/5c+i0^άt]3Ӵж;lPu]YC=LQRE̴ꎶK8I*$/\hJRJX":Dgޣ8L)|o]9Gri*65}DVҨH 0QaJsSkW^W%ϙ_mk?{H9hzB REXr5VNXh| WPiM H.n]*eH2 r]2 [܇;Ÿϧx'9 ص:s:ޣ?|$ OOO&j JgiuY?yZ=UUq8VkT^[|xooh*˟cech) fQMW22QE~9̋Hpx|<Ѥ*"J-n:XcOz;])yŜI7"Ee^ᤔG޶m :") ֤e|6BDSE%e:V^/9O5tV[m t5,dњ @( nV/T@vƽv>>-K>ӳiqBO *^Μg|#e ej6T?kcPI &YC-/:eSY{k2 pؤ ara/_gѹc*fK:Pw=͵y"`*!)¼,Wva<bHEA-ʊta{ ~kjuԯ^/=_@++բiޣ항y]t]垖Kc kθ)-jAddFqk~T>1?}bX)iĔGFfĝ6@%lckKM|o;˅qz*̭F&AI Ib*F.k*.VhkӼbpb[!p/ LCXsklVƷ]RU ^ak ̞ PHt(KJκ[S4eB{a!$ ©MP=>IvV"WFM!8@?S)G!4;wx>9gڶůŅHćO_00rwE= /g skP-A9Vp:|1u 둗әB@583Gϗ%>|D΅RR[8 'x^UF8VZNƒ|"-%Y ¡ZJ\O2N٤c;uq|ytF>K*&$?xYrfHekLMݲ4̪LYiji 1 _z]-&&gx9?3wiFhGi!r}ʇU-vyDO7)'5Ѭѳtf`tQ|4M^L-`>a+__<K VD{MS_Ftҩl+V2>n*32i@Ֆ +iҹ ʊ^3,,#s^ i>ERhEje xTvKIPpwn~BTvt{qex}~$uJ{c*뺎r4mK1TIg`2rHMgkLexESӤU/hg~z4Q޽û@ݶr tK33*:Ka,k#׏LMLIg\$ڸ]Aplf6(+)^NGr+><άk"04KKaʫXUX+Ӯ\~er=,i(mv>quu/} r4I:J:J) KdaRv)yqiEǽn/׎_ߴyRW_D1?\YW>|?p/&Uzu&%M6UoKn)c鼗HԮnt%k'JXm[^ (aEp|dXGVJKg;O}.hu^'o].ʅR"rrbuܛYqߺty[TF)7E˕ Mb;tLscX9&']mOOOru.B{|_h=$ oFo)Rej4pV?SYGe]n^x|zaFڶ_Ov]K}yיuط/&VXdP:H|‡2N:!mrr q+&R6hښ)\;ˉqNSW8 ///ŠjtrTj;Y>r>_xzy& RErEfWU\ 1>v-? l(kLyXZHjs5\\, ()TRd__nt"nEBR|y +mަjC,:5MqIpmհ륣u:]_@Ɖi y]ha#TUEeDd2Ϝ2N*Nv]ݠc`({QdK9`U5$xœQƷUXtd ~+K|} ň587R چscb0$:sN cYCmK]R}o"Ѱ->4NU|:_x;t;=Me9׭ktM0]8P՘f&o:!QPY2:wkwup9qvǮ`EN[7Y/ŸfѰ/#fj*~6bBgk8dHu]Q!X瘣:/Rf@۶|򅧗g|\i:!͎tKྐྵ#g7tw{ڮB`;TTyYxe۷A6,,{~|| l[Z=MFs {R6mɷR{&;Eenit~݂ ںnߋA7ÖnOe]>xZReb^ۗC[%zj^aI񙰝tyROS2ga6ȭٓs ǧO^c\M2(kq ć|?~a o+yͤPJb+%/kƯu,~2ۂ48 ~Z#$tb^FKz8xZTc vF7Z@Y>w?QU]p><ߊێ6We G쀬\LUlνFE6Z8Z%MZr='giq'to!yie/Qtjʠd;nA cpn0/IIb%]gkvIE9Tum$#)gE糙T!?1t2">w]sZ}|ü:hƢ¼i+_q:2O,^pa>w$rRk\UV03ZkE\W1q_HhzZ~4JG1#5~*ᣗߘmy^$J gXE#]0,,O-5xr~ϦYÂDX'e j }YAhK1?NR0*dLUbCe-:b | bk<ZDBo.bVysJH#V5mZPf|g~*^^^,c8g$QYo~эM&Ȯ뮸LK`뺑b!h+'ឦi>}<߿y'z&W4,96Ikɉ?A)*JRS1r( -a߷W)+MS(k-$Uk07*( t-FJ2DCuUqwx@߿r:IS4r񳫬pꊶG F躎0Mr.͋æ |z |$鉄?e 2ԵxZPQ:e[kށ0Joa:VSI0˲lF)+@˪J&E(:Y+ W4:gz*z:- te8 NcF.@IJq\x|yaY{+ݜJtJp:FD[h ja /Ӊ;dYuc4r T]S5~ KqmIa[0-?1L3˺=?~5)rek[;^yXps}*+#+.``#&Wv;E#Ǔ*w\LSh["toꚵQ8LR2(fSkѶrK):g!6_bTĐer~uEɛB"$aU)Qȯǭ{-T9J Aɏ026WlTlM_6B4~PiW˿ν5K-~Yeڰbe]p>&"Ms>\ [2S,Yau(sMPFc΢R`YmWAI`Z])eJRvs%$\PIS9TB5dc`9;_Gg >9cMtvF7mNcТʮ.^:}s,E^<2΂Wq=kdtd뚦q8R΍|bOtjۚ6s@ي*iZXZkVpO?7kTys'qc)-&ڦ bJhcX@4xAkͻBtHI G\9c~ 95]So\Rרm[~+i1ŬʴLw"eYƇ?d1:7Jlf$o\fY!!1_%w;R _.'`vMr[3DJ Wa)n͝[M޵@u[H98\{@ټrF~M _(-i'J _:i(n$nV)Eյ*?Ŀ|"ADxs文MV5ϛB0 Ϳ2IY?+g^b{H =DOe[P *[ (\k3$!-&o}~k`y W&>OUUqmDkRQ-9M[}1@amh w;Zmnݜ%+oB"b ˶"2 Lľ?aybas6ͭ%KfrUI$\lQlp먝t峄ŷ aǼk>{θ]|XSFe[R>_n :~_4 uжV2Dk25+tka~p3a옗 J%|Htll%彙1uk[k^,5p٠ڶ\ÅɦGgXÆʉ1bs"15N;Qz–ĴEU( ښ"23NP w)mnilѺ(r͐3>-m\vXm[RWaua̐t-]/Mm:YMX=ee˄.ܺ eSQ),1(gVفh qA@eL]V3Qm6PI%yy}%)]dɣg-͆ y0 l]/5c]~槙 NJӒQiM4K{u2OU(OJy ae>5]$vi^C2`nKriJ;kUWuNBw<[hmUo>na $WkRdˮ"""IRZ:X$zJ *ɺ% /㼶C@NiC/%k43M2fE &EBTMWZD޻SFCGYk< Dd!P%9[|Y5,ar\fwBZ%rrvoey|MI%i8SQ s8菨Nn4Q<IJ"&ĈO0.3nJ-Zymm%[PH. >,|}z4EX'GV~ U%2NUldr;G?Qf$B󣢀 +sHI30w SnLѪ颅:)Pi*A)B@͚cAg^)E`eॲ[uV??O5L*ce*Mr8+O+nA\ܫ\'FIkC?dl֛F]K@IR׷8k5hKy-q$27 *ŧbɔnbu͚z˲3U%#!_ :,oY`ǭqg߈ܷg~NvWV.qt|Bf\&n:u jm3,Q@r4,1g`:+ ɲUO_ii;K(|6ئnez]וWs,t|xz"k4gߵ9/kBϼJ]=hmZؼƫQ?u=]0 < |xSkABl%~8ig R<4]s5e`y).#`%\_V*}.+/+FRqs'ԵP+u%EyVa*aRDq$֠3RtN$Wf"YbX'˧?GtP똁.L7ػ]ʚVhH!D_;f,Z_DXAa86Me)&{|b"4h\)Qk庶mb5M#IDI cvLy /BV:m8-M}SEEkάO{޿u$$|/әHp8<䱚 Ȩk6\p^W?eR`5RH ?GgoL$պT)Fе(9ǗWuhGSweqI9l(aTr;Sur.kqbVaJYm//O$CF>~}<*.E.fFcq,bHݖU.2HlE}m'ш&oт&^4_u]g[}qcGIy9ڪZ? *Pr#*C4}v]6=W[RZT+ѺH.W_ 칌rw{e|>If!\7ׂєmdK uL\1'ҵ }Xl¶@iYsTXi Nk$|?$k@NrWS8F)yӴcgBޘAF u25-m۠MT=}S)3[bQyM(rwDSɁZƶjYbKgK'CctobʰG e<|gjP5 AS@+RtN&I4m23<|BeIS'z)0,[Uw?`NO|3s5ØNT!((R3])_.Qܿ\hz{Hy }Diº'>\!f/3ΑT2Ό!2Ŝ5UUak) bL]k 0]y|y&~yQ[!DkjzFaT)|=PV$#se%WJ4!b@.~L @&"C)3 ex/+Y i=mp_'}wtQc PYLPe )촕T$.͝yܤ|IuUtfnFXEY䰀Jk*c[^d @ȋJђ`=$ ȵ;IN"n-23kk7-F[m E|mg.uݎm78-uͮxL][AVrZZӊ&ov9)@R"y2"heӋJmJ)ڱDΞO|y~bZfl%΍ۇTEk0FF5ZWϰ.\ !Ǜ)asg>?~%{TfiϷt!1Fy⵫S4r1134ūڊ9%u+4$rǗyQ &1J]BbqO9Sr#) nYɂ0>gW|6=u2]]eܕP:O@6m`UU[# ח w|=|}|p9Ȓ!RȘ c0%QÊӆm( m 9$ty[tyI)PJSY$Y%X+u Ke,HΪf[`TYõZ*kו1JՆ2Gg^U]7_s30o.yukg^'Yƙ z?zL6hbH tnФ.ĸֱ;XבŠgTE5Lň F;r̓l ~Y$uhm )”#0 wK+YSak9Q A080 Xי!'.8=|T}ѦBi+HYbb\fy>#bd&~c-/ w#ؑ2:)Ev煗ՆZX&Z< (;hJwM'-Rs qe1(o0AoƐ'-N}z3xBWIMkR3Ƹ2y#U/#֖wg?PB/ K{hAᜃ膗8kjL oQ6{itֵ/E-H[B۶ݴv׽͛ˇ(%trmU@0Vanښ|Y.v|CHI!\.|^6XuIuDOgu"nv^qtbOP(%̨@!5G1YxxHKx{wT@ҋ7pt<Ȑ ꬿ+Sv=Wָ,;;tLm'y+_9 $1U:wЂNFJ0#"o@rpyR|0הN{HM/9v˸X^_1'<5@:OH²DBjJњ=85yԎ*fgBQ$7ҥ:$~]uQUrq)Fhr|>26X`[iV\bbc~azrQFB>Kh;麷MѲQʲ.<6V6/ʱoFLʂ PgѰܗ&ANҴ5#a8].I6s}> h֌y%ĴiLJ1Lݞ^QI~wưj- ^Qo$m_\p"B$5`k"%ug-U$,'M!T2kkYK )Sm@ŏ,F;{u/( <3/~rb1жf49wy=>ǟ0 1 uբc6')p*\*k(} OO+b?O1$d$l26HQrJu;vνſh6%(ieJ2]؊YI+ڦKX7oe-4JR@gB\XkYCMmS1@8%;qsN<)\tfN+40Mp2cS~%V8u;dm7 u[ 9x ]Cw#mU}\8/ǁepuEv P%A2r;dad2/W}bVB>=´YlWmwww||Y2M _ݦ(rdQf*rÌRWMîmx ǟKviRкe[Jx8hլBUUh 0Z];$iPnPGRVE`t(2D] J`([Kdtb T2O1)HN>GZ9ƬT(Te*C\x8:9xsħ/O?2-3s[RLJc@ n)8p~NhkXU:Sh;ֲuM$4c $/F(n~B;x#D\+\4q۸]ҷ Ǚae!HQ9euUǯGQ<<<ae^;?XζDR.LypDrQu#cv=m)2?{*A*)FLJ9.nY;ם'7zMu{K̍0a+;ھBU*Bm7,!QӐ"?~| ,ʵhRx͚ߌ~7Ln,\'2(8 ki,\'K̒V;t29'L'm5 x;* M"ڿ HW:R:QlmE][ka8#VCXGkjM]aZSG(KBZsNa/-sJ'j py\F~˟rZľ7>FXrΡԎw ȏ~<>,/v5 0 Vxay/k*KeͦJϞ%-tVi3i.$jӱzty]OXWDB`n$Tj]/kkQHr-z'cܔ3+ -%|{ e9s{|on$ړ"FI1#Rn'X(יvԭF9D-"GyȣNbRDVXjeuTR{lcqkwR`0z~xغVUn|6Jaֺ:or[eh-Rx*<¡89ء+#$_X%-Gz e#Mc8%I)%9݊lcp]*\/[B!Md>5&CyaN]}K U#4̼s0r:]c[F˅]S9 c+hvnN3>JpQet#IFs|<2Ư34j˲Gui/Go=FjJˡ,謴itvoZl c VY~or\ڮFBƮ1}:}Նe YcUKW*ٷ Ma%,3ɯtu~g0O,i}Re$Β.WH`YW#1GT6fZ{aYa7~2 #_~e5+]/2ҍQ0uDlӊy]D(cPVaR ,O<뾛LE2Ƕl_FϿu͓l>lPHB$0ith$\$dHБĿr`0U4O~啮cYXȤqu]v^וRPq1+1[CǾpJIќGP8:YX$#^I8`P4#ӎ&gbA!., {}̹--[Τwu1M4aeWt݁ o)exe)(U|7o39vm]s\NQ׉vo6[]ŶU2ӏ?r ʮi,]1#_:'V?g h8[ 8ӵׯ_ $ }4VNJTc3{,^Tr shzMM5+yϟp;ua ,ǟSZ]nZK;fI'qf9Yh*RJXǨDvMwcN ys^o: ^>F(>T@48Zsbh2 %آV@ca*W9+\֐# tn:99HHrOvM M.BEitbItɜ5b?1E M[V)vᴭYϒnrXVGx>q h-CMUw).[-s\c*,;_̺Z/G>0-3mfF I:ޮߪ8N4mE[7md"S8ɁeαO) $-%D. 10*;^/:Ew?$am_u#u-d~N)E ׹{wyv밖Z[WyoЮadc~53׷:a8K6w$pg<8O5IW|͕Cyk9(VV J qe"*)CXqu$*3<t.vvkL#fxYI/LH}1QX#$9'y$'ς DԮ{l[4`M79 <^:yex{ݗBVw ~3m(Û=ZSnOP'SrZM,MLJ=s㇏ߡe^z8 &n) ~DLut?GÅe]PtRx bo#޽ӃcAyf򲐭~ͨɔ,҇wcEH*h* 2Y6r網h&$ |BbTt~]^|yr6^EƐtSEQE랶D%:E^ ?N0 )ɈmL+f%q`3f?Ӹe]U:u] B$cUȷV4M0&<_PĔ]eܶ㪼idn/QVӒ>׈1ivR e&>Gw} 30ζl\6#&ʉ\ыȡ@6i Ho v7jT ӬjeRaXy!9V tZO#yy"U;n󢋵frIDwfZN5[ ̼d}m]Tqf\L3/ҵj\aGbF;bu./zrR Mc +? #r=ݎ/*Gyȗim[>{wM;=}/~fˉ]it%p2ލyboY_`UJgطVp+Qd>qGjuCt}XSր_e <#5 0m[@آ^n+9^.#10Ę4u69pU,3Fݾgu]Iݻ{y=a&NǗV;X\MBanܥ*TTq`T2MFaQ%Ng<nG!x Sn UojDC,f5, Vn"9K'0&j+&dRuo5/9GgVz3}.-E!RL5a+U7GǭI%\`TkfA͋gms*LӲE< Augia C)`k}kB̳IDe -JL^(_Z8^QAi:,$Hh@״}GRqq1-˒\|=݇ny"~$7#xs. \yb (CJt[[9X.˜M-$u&I.5bsq:QKW K* ǣ}k ?1neorzFJ]Lg :Ht8].+uص$ºR7 DM۵-]Ss:Ǒiz=in0 m`Dd.>b~ϻw3?鏈/_i81Ѥuhr:1eqٟ~t"b]Φ@[y3el ْ;|ޠA A^L ټʿhkrzsj4(?⣈ARڱos6 &z'F0z|ǟki& Ki+H;VcB 'qɘ i<Z>2/kv/) ؎J|\o:ȨVm%g86@Rh %KlA*ϰ.V%uW&1<ݦtD?59]-X Ҹx|XFOL~Ӡ(պbn^G9FyH\uo[j'xasEqXQ _r!EMcl9jʡjzQ$*Ms5Hpqd\=a`b*6o+Ώ1̼.}.2"]h +4dVd)NpN`Ę/>L* 5hcir[:SfcUr3P!dƧ2~ 3ϟF~i\صۊyX6]-cf^Ng>=>1 ]['`Mg,a]*wVb#i¹J47Yo~&SB#Ēr _ MvL(߽ rza MjWv۴J 畨.|Xו!'btsmWRq Ā W%fw+㼰 3>ٔ!9q/!Iͮ25^/| 4^ k-qت"_uǦG|kP.~X>M@E 9t5Qg-*1JLE`a* /GjVR3X$U dX' ~YkWLu-蔢Ry ?1#/f&iuQ{+M&ˉaz+Kr>%\=Đ-%$'U'Ɗ762BA#u%䶼1FANfhrʋ,§ϟHʠb߱۷|Nv}Ã>@Lux?q:8yz2ݮ&a<oKɪ$ ;EŞFV27iEO/<U4V*M)a$JP̕*mBJac 6-LJK.ĥkbESY55}2.Nra-y1#.|.Bmn4M*IuRΰMysm'VV}".:9@Ed _%=d7ô,\32qy?o23]@Fh2kKl< i^!z,vE{%-?hD:}P8eY|Ĭloٵ(y3B:5dg{/ qyʠ,Ӻ2-22ת[Z>M⚚LB[mnm4r< {rm0LKqzX+Я/];>ߑ֕Ⱥ\/O/suxwpVi1VhuU߳KVt>B.wzsn@dж5~g`Q̦cb@粛Q2!0_M]敨4<]7 $mpc .YC ֪rgrANK\ X\•H&Fs:X0^>REGV {޿;}֑_0m0@R/o2-4 6S3bT9i꘾5JH*MX|p wrpo#$QuOk됰hw T Y 3u޷(-4 FQ\'7ezvrNM)i.j~LHM8r=Jz\mKݴ #0е5A\'tVN؋2V 6DRu4cY4&o20*Gℸ5HMf敌~G @ܕu|,tfNg(VZ[( y˅2Vyw/ *ºmR*e~9"bڬ[V>E\4l|)rzӛ Y c5tF⊵y.gΗ~9*v/_y=Xk軖n畗xa. .O=N(A"c{c8-毩<:r'e<͒HBDE 8}'8eYXq떖x(xoe8].?$()kEÞ!rR0^4˽gc*t2M_<ѫIE+pل.HkWɒもWij`+Cm4Hmkv-=-)Fed[>$2/#xbuWbq&! Y,} YP,"w-p:4"t 0Hnswϩ?ğ~?#Z]KڀQ//b/uc"n cTᎇ{ar:_b^fʅ$"P,,o[mwB )z*kh͝uV)aJ+9_,./$E );/E s8MӰf\K9M2f\&-ya ."^݀#De5ytPcbh&Ǯ)CP6m&(]p6v+"6Yʒo*c6ͅZjqVUNsx~~9n@ERQ\nW^A[VDc)@a;.(5/5$O@j慶zLJϱ{2:Z逜N'|9d􁊊K59'5Xp%)ȩsc/B/'em\Gg dZ-]Grp EH&v^tΈsw$I2-inѺW<sVVX{7"1ȸq VJ5Kf]<˼+kR%($} Iho;||@eZlRJ.LqY#zқ}bYWLUNٔV̄E?WId[ftlƺ74doCnW7Bid` `8z&DT"/vg,~JZ1FQFIEQxz}|ж-wuBŲaswW>?=/_9_.D&oft (@a8y%PyR96ruᎻ.;mEP c41s QmYeA!USS OӦtF.ڂoIˈOa8S-M-[[I0Z[ǘ}-,.t'ZHadS/[~\7x]8[giB 0p9Q9 mni'$Ak/vTsu΄~)m 3\,.+ы0\#Yu7d( D=ĕa[ *\] P[)bO?q.\.'b1gݜFJW9=MU5-J DX445m*Q5a\) QVVO߷Ŵ)Eٿ1D&&)I!\RA GX!E差+>H<IhYzb ;bt|ZeV5UvKTmN bHVwTs4bMUS; IǑq G-cpFpH)' 1>tRy%r5nXe8ej/F>(I:S>, Pf—l"3u^ܳu6#.&g*²L{9hUļ /컖td]~KB$,nAi˴.BH%&/5;5RIV+"M+iI_I${,b״JB0$8侌I" '9 T7 ,R%oxom~ґD< Y_?]2"9 LHpTV&QIq9@^&k}w;)P}I1BRםcZÇw#G>}o^q\fR5Z0`)^w2IvgKSA&A =ֱ|/Wci `1z0{7FJ$#U%.6p4Z)8r# Nq!٫{O\=m~ݟן22ALb96h“BH+q7Mnk2_Qe~q^FWSN d]֟ɸ}r@cmCJAiEIZ;稫W;$l+oa tѪr*l)/X+$ hRc獓WYGd1aRb3??~($ӆWUFh C~DlTH7+i8Кj+{^_9>>]Rě!˼N+Ze~SEu孍><^DĬk=1rZ:\)mк\G8}\I\EZW ZU@g84mΧ'qÕq߲L[Lt%F6͸ /a&GN)n1Ĕ4M19n]eUhJwyruJxu"{sf7ak4UCB8qFa!PN:3M#=Tn;IZ[Ѵ;ŕ třԶVg3EL(ƣ`F4%y]rjGS,{y@yO:9(A !V[kV lHY#J2K=fmT]⠴ִuO-ylc,D[ _R#ù"ϯ/g|{5B!H8T.Q}ՈZ#41陾npnnr9]I98gf v2X-i8{QupW8(؎TkFp%ӿ0Q0T*88^̣3BkJ8gj; (,\.eݵy-J.kaWވi!Od6Ey̕[ƐIXD75F#/7M[ewG.Åi`So'IpyY 2Q9Ǯ­8뺭H\:|,u",Lj ԶĒz!ظbm L5ܯY˲LR$y.[h몕ϸn#Mף6$;ςЩzF(xCkۼ(xmf2=?GMH1;KT:S<*̋g2AKEr⿞Kv$;|}NGȴꬔlt֋QBIRbHW{ (-י6^8ݮo5) kn% qY(< yQ܌J}n-W(c8/YG,/cv w"}_2R,d(yU׎uI!PYEOIhXWmڗ(L>Fz뵠y} H6+ޟHQZ֮o$)4\6c8734f tYR@F¥#u\;Dk[ yͨZ]6=k-}=wyyYY1y E.Gwґ9 Yq%ͣk70^QV4iZ>e=a\Ƒ=DXw RhZp^Ebb\Ue$qpVMJe.4HGb1ւ !q)K!E 4)Vȗ~/3x噾6 :-AO_/{'-Q˅ѾIJ"nym1T>J'9'Y2rV8_o:ofAYK5tM|rSxK WqdRUԎ`ן-I%YỈ{DR]45"< 1 ,4C4*3"Te 0_Qn%eG]4rAZfXyŒ{ynGsi#_v6WG7ńmc8QR|+ //7,L~4gΔYqJ+XcCoI"RXnPPR'V@S⚅*))AB'$ak>u[(:jm? NgT er ^?!&b}|q^ LZmC 1o𽂜Hynwf)!F68 \O~.ѥRˈ@TPVـ(DQ;3m1M,J^qǺ+}LQ*Z tnGL `Zfzݫ-Ѵ.N8@1G+ ~LJqh)n1^iFe+n˅EdXE1GHsTND#X!֡LLԮ6`9/mAL j +}jЫ;y8vQR6*Kmh+D %DoVF:9A0KXiΜV)ZDtvt4#.>*$k^F_eߐs"`r!eFszh ӄyZ ;8v&@*uo`HJsFM x+AC:x" Ze{_ZǢ7kt(~Z^oo???kCLU-6bEK,: fP' GS6cSz 56Nb(qmQJK(cd`k,`[iv37ČZ_o;ᱭ,7p}zϲm8^aߵ! Ckp}bź݊u\)\FhJAL.W)ըK%xzi>Rk0{҄еVLi킗edsƻYhθ^a ZXk^UqY^_\_p7|ܮh]9Y\7|zg>%3z)콚wgܮ^__~8Vm )FS !rv>qa8zFZ5)2}D~lЁ9_`qooG4-^_LITmh?g&,33]!B Z.yJ!#-'+d{bD.} ûsKIc >bqpc$E>y<c-`|P ssVPP;u۔st_hqVL:΃̓G^I<4~@_^轷;oc]^ 6~/=Ʊ˕V5~,,Ngҟ|-?w{(r4bcDBw*!\!nk24վ߭cNϱmXOU+"ܜx*~۶ H ]K/W1!mxV &`7sढD *912O:֏@vZ~vO+O#>]/H@n\r0͙B&DCB$Kv3>!$;z;q8Z5UwVh Ѫv@P\/i];V^b"(4LS-R鋭)MNN*c-(~kw8RbgZ+6*h !bH8Z0΋ԆiBР'D! F5| ql;Z+Cv%#& *G@~jnF@z}!Na67Gg bEegT-hXbB͐Em`clwus{>]^^!Xm}ys,H4'w^&aXRN'<؁48eAS&1(6ƿybœ'K \2U B;<] < Qq.BA79˲? +wDϔE36r#?p\q.8ʆĉg--1w"u50XB 1ZxcwLӂ|~zsnc8Jq?f]S1}Da{BQApZr27FrB"^~۷o6T97c:qRD1No7,\,$sB0ru yB^G-@ 1;9|Lūڙ?;a`_j4TGUIG}8D\U+Dsٶdž'$w[;7BP[_^;>g&ߺth 1.1K%!琺 . ^_nlRj nj*}}. WcL35J=nz)zDF<_xܱfjC0/sbs!"x؋eByi6 /U4 c T͙Y?DFhxAn?|,nc2ϸ 2Jü3M$wTD;ьDό,:SU9 ! >FB7˿8qy^n Zs:պ0߹z؎tsB"GR!4O/7^_O7\zſowlYCFe:g-(yn3tNXqOA-:?CՎכj#M}GZ&hC꒠!dYkjCǁ ]R6?~ Ҫ/T6C/v,ZkEيՋ Z5PD%nŅЅz=v--~m⧟>>wª/T_>\ |b X˂k4M( fF VJTtB7sG^G<'Q9: o5p; z%K"qšY#^=%d؎Ŝ"n+>]/X .aw8ٹbEivuYpPռdW|eYnox/;} B>89g69#8jIA2_r@/av19ŶmhR:C3u=r~^^>\@JU{iNƥ\3D% a2#+Ja2ANҹ] CGhК3?|:Զ>v߄OŌ@A8Wpe143y¼P(L!` :sgXxwSJ7$,ֻvH@HQ3m]:!OhX:|QPCeEa%lrYx:W%U2O.0=ճqEmCAWhP\.T_.ܷ owo (SM) +1aQklfWݼqg\̉JkÕ`Vl_+{F'>3gR "]ynwhI8}/xl!LC5~/(_p]oS3M !up 8* 1]/ۑD\My6Kmħ/x3YC;6AzsV=y߱Dnf|3Mu)m8;H7 EnE#n15RO9O!J*1iе~w;;ǺREPKA)$H |~n8c@b6W0!r)X= q>qijo]w|;qw\^b\oX T%KdcF3;TOpB9>?HmԚJ4<ڪE BsirqpsVob#lAo<Kqd)8ø شxDk `+TfT0o(PP-C±o̦nG!BCpW;i23Z5ƨe\扖AH,xܠ0cgBt@1O. ; /|3Dl띹jlhy:!hgNe9f(dg 1%fG;v2zt3!"Eӫ?z/˿;./S.+J_yzA wۆi Yc_Ѫ߻kn;v:ݸ@BtM\ u,3yGe06uESθZA#12A K>@u3Q*d{8.ox.˂r3Wk_Gy@Վ<-?8 ?ӧO\b]#Xbbv1FL ]{' މzlm(BdOB 'ĐGc* !0\0Yy؁͖B( $? 7Tc}1/ >|#8yHWn0-^-R8c }(zyA,߲4-HSog ~ 5?充CiLMѪjlEV;dZ {80_%E i ݚ/rfȴLr#uy,*"!󧟐rM^Qʁw^LR?wrB`K8xlwf.r *Art$iNNpJ %'r.vD'Y 20b*fy1%g+%ϣy@9b 8jPTbU;c@k?~DF&y9|{V+1,p<^)=`"_ϟ>? q5k*y-k=M ^_>Q]xuFtzyW9ݓ\O+bnxqC_^4I#l=>yGhw,ӌNt9*`[gz7mja.^5:/8/}s""XQn)Ni ?. )!I/_e<*֊(e}o5~W\oo+cz!D~,6)72 Rz72((\fm;[!M,[9<bjG;zaQ _*mo7eƋL{S'{EgAw 4G^?)M3 ÿ ޿Av,2SǤ~-_~/h`5hŃ7& G6UMMəٶcs 傣Uq~TMJn:J]h*3#ǜՊ;^Iq5Qz;Py4C hGTn.U;4\NݻW,a OmR .4m~DT$yxdxQ8#bt¦*Krnis37~+bğF.Nҗb_;߿O?ȆnnB0u(ן>}>qǾZ+pWL+n\]oT9dža>q4>1=?dKfQnL.BۺW/?}i2^ c#Ϩ]PXh@+2UI{6Df2|FGiݐyǻ$oFzMX?ޱ\_?ی@ u=E]2aYwը@ ~)Nhi2swg=2;|DxZJmb`ӎ^S `V<PDw5gk#.+<~0*CGlMH!YDz&3I@Ο*4ZgLWmS I+ṃgKZxK5Jt9.|y1UȜrm(T (DO;3Z [ NG6ncﯸx[ /0\ <5k3A6y‰qwh'&q.Knc9~r sG%;:hvm G9Z b3!$NmX.300 qgcp7] g<Ѝ8/3.ycۀpG` KNIӜ9g'~>z؎߿QX{h>.dL . R"ytnjFCUWGx~iO+ƱISʈb!F߉k8,fK 3̜oQpЇN%i瑑eCQzA# :-以'ؽ84 SiWX3cj;KFr3$Hziް|Ac/<+ )A۷ߘ>}鶯:l i{J !% hD­VDpJćd)aqi ;ȪZ;DӬPq6X *] tzM~+F6FV n7"pz4*)jeA /^ ϩÄyưyQUr:r1F[}Gt]{?_/7>}m{;J +^^^ e^+py. ŢDԝEw!PIkE+X=O.WNֱ?:GD!r2Y-ˌ9-`r*$UT5I@1niψSoOl0-58<0@Y)hrۊ\Wf>е8=?jo) r5u;g-Ft`7`R&*$f P^]G%պSTiAyuƶ5Iňi&j}'' Y5ĞAJ SrB"Pa*h\ϟB7| Z#^VN1%KP\q&TŽ% \R|24)TD:= / W<;P@́#6I͸livdž~@m\t6(+~.y ws < 0Dxq|lx|Q1n :ۍN z^h<pMGU4M8)B4nɜǎ9;Tb{g?v$WUqfra3!>ԭ=O#bJax+.3Udž ƍ Q ˲zA7v4C*!ep{߾nT"ug]"^^Ln,FNǾS.3|<%z Yαz7 cA/vG`n|I뾚h|2/6t{Cfbperqۅ@`SBm )RY4G-a; ~Q*/_͝E _U?~20OWsub?zP? wOWh-r1(Y6ED[, 2#537@ i>KR]BϾ^JQ;Щ2Bs|RA2FE>MP+9D/f3ec;/4u`N$"J+qFLcoWԲA1Ahó5b0S˸8O:(n,SZ{1>(< . m zǺѴ"9cSpҨq?Vr.7m}`/!aߐ71QMo}S4_=UdEZ, e%BxBNIE@j8X˧ mo~$"C`r,M(@=X LQ=^_|FǸo}7OqcC',/Ƣunۆ*h0\{"tѢW?s,y 2=λ~5@4$ya]w"Lhc@~ym!eNcݰKF _^7ˮID= 6;9pRU:7弼x.x]lTj*MsZ!52!%zB=s~笼9UB:/#yC;/iLkoXL>^q܆JfBqCnɑMĭY֪!ZhJrb'1 "®#ʮ#&&bÔ&KFw#.Rzzl|jw||~?LNjT_> DWK]mL)/^fH Jixl ]lI>.~`X rEPr)L1mTrHҰaԃ"R Q5EOmpZoPiXoʡkFs]W?p^Hͱޱ={}2 .Y A2R Ap ٥ij]0 (zCLyB-VqQh+Vjv얟'Bm|ri徢60zӱׂv4{q-%a;!GԀ$AOb@'LyxGnL X !n. 9>>q8ë6S ye^6:&6H;M? YlMɠ$2 x(ef*¡V:6FK 9;ǁ ͰU[X*Pxӎ^,ޔ@9'i—/ }m/XˎU0N'xNK ۆ)D;uS>R^ eA5MgUT}(x:7m1@{ 4|7H߳'/ eazFQ(2c,>R@ģؿxw~ƺ> o~BibG*QDhR=;x^ zL ]QbQbj|z}v4_pY6^.SFv4e#uԂ[-#[NJ*b9XX-\pѴ37D,rmZYLĐxw*@$ϹÊIz(9ƈvHy^brU vn;HX.Ofk^qw@yp&qK]:cqyA5<ȉA/b5ńח+"6N l;縦qrysڇ(u?6?pg*#0Ru,QrO1qч>ՂVJ+'UIs^0_/XBqhLӌWFhJϟ_!/2/+T"nW70h+M!BqBZ.}e@3Z2ur|86uA\?_58nZ2OTm ʤC 0_RT"6> u¸}!)DN|;>Qݚn/Z~>Ѵ^+$19!¢.h;̇|؍/Thd.s(CSMQL8#(d73>}yzYvi@한lafq'o1MHyF!_<*Ψ.^0߻Ƹy6}3u =v(ShbyPy :/HOH/x_>oW|_>~Bho_yZ0//L»~FBdxAЛێیeZ+ V/mʸkpՈV|l$ω \4z}̋ ЭP1_0kYQ+YsJ1 F,1mML!UФ#`j QV|lj'3cIbDgwsQ%ckH0A3_5-7O\pt 8@^ m}/b*~(^~n>zT\bN 4 @+r 7'lyqXCFY`#]#SF\./܅*bv\|]t $*h]  t`bS<l `^ vUι'g9=-D<*-%UBzVSUpoY1r9F~ϝ&)"jmZ;M uzuUH,\i'2Gh!uEn$#Ԋ,J)!iCVE|4l>8RhǼ(f\U1Xv #REA"T'UGsFCn F>J(ĹLkõ: U;8a+86Gȹc*8ְE>0 9NM*wf}qk]}@Lf:YYH@/{@3YHj@o G+tXebȈ; <)(z8@tT2rld^NMx`4=JGsРP iWEuCW,U_KB3#vxB``7;7L[C0(ylAd~tpʱN IAuxIsմ; v(7= J[LRu/؋k@DܣqT) (8*G*V0U9ѐr(J[ہ\!h_LFt8j3NqSSGv,Ek-̀~ǔ{A)s,XdQMКb*JQLpNZ]ۊhRwr ߾cXw4Y#" bk՚ݬn]!#|OVF ->xEzj!Q*=hn\"&xiQ5c҄5L}F/H({X2'S?L8Hh;h^M~g*۠A|L^JMi?PKǶVF1AXv 1 Dрe=4Uʎrlطu;~ =Ul5D*:O8;e'-c 'okdl# އvXޗR;jgJU聯Kрi-6њ bB!kh@g]I6RCO )dA+ocFN!!h(eGfN?";2GHRqIINFO<+jڇbˍJcQdJa@Jۆ>:ul b}l6/qp+i$&!aDa&La1ÏjEXQئ:1$H *h~Ѻ+! ; ХUXɴc(h`/n!"vǎV=ClLIҰ/)BcB$)"DHI3dL.!(Vԃc,OT) 0!Hfj)<ӕ{Ѐ񁶯@ϛ BQ[QY^@EOۇnF![qR?z4"ՉbYg4Qwc&[ʎY*F# ya(ab bŮĀ=*sˎ;JOkx܁0&U'uCO^eV?ct~;>il@ )&8D|1 =rċ$knk2F|"xc=vz^vH&scNsv<yݳ_4d}XKFv~yќt+Թ4<)^*J@F<"m1fiBҋ~x`4_75)tx]rЇ_Yl"<DpN^&#\ZESi0궢o\(k7 buE}X$t& {7TB̅: dǠnBYP!y<2+C͹¹;" yڥB&!d=ZTh!(scPt /O e v[P;w ڡjV5 p/CKC葏E-9 w Ɖpjݽ] ˺4 d1Xok/ !dC7""2 @ڪD;V&V鍨vDUHc#E$<.?s,>!cPzRa##+v%*Y 8RYp! Qv)#ՌcM(@b2APTpuj4u[FVea7Leд H1gt""#=IEqȮ0Q:QHB @lܢpDQ,5|%u@,9!#Upq *=t,OQ^sy)G q!+qZb MCCQB[\~m{>dl<ӡLj tX YdpQjTeRPZ 8#6P YndύfյQs_7f&/*0C7|N߻UP sfVn \i zG 0ھ1$qf" ɸuVz}cy K RȐq`ܭGoFGJ'Ff'#6AJ@jl[i+UhnEp>&,M"z䄴fgp1anٜӖ|yn;Ͱ L Dr( ~W5 LᜧYcL )DdLHaHJPfV*Ĉ ׈|XaFqNTG ^ vZxxL ҆5m^rq$f/ьHPѲALn H,UG\h$0%AD,dB+DI u?tspE.$pE4 3%agC :zZdŇ`z4itV hIDⴱ8PTR0g}L~PX%xܱ^"4$h`)O"zPd$&YDZB`{/Te`@ ,ze -%Bh1B#$1GÓϣxC"R@|ԋtڀ^!GVj&*`Qk-Q~nFt5 *jИٸi6J-{6F+y!ցЭp"+ 6P 1hQiЀeU3MQa3';?RLD[5$;#ҌPAw t 7k> ^{L$Nh&&9;2$2x'ü{Wh=4)"&&+eLp% @!MeX"t#)&8 BxMz=!t4@b,MFy;\c!!Ca FƑA0TfԣpbA*J0!jG]|/hpz 8L# 1y 7On6%XZQnFD73DV13ȹz31f)Zӈ2X5fYk\!&K$mhTbzvrT!!_ZvZ='Z7~vFL|yd/'8閶j !'b4\uf] |?HD}Z*ǯkwEX 3`9"4M@gq!dcn^9ڠw][G!r6T V\wπC"[ϑKl%Z)&2ݳ__ H"V RQ7F> 3N]h6jV4u#hh&V>|B@nVpI"mjpぼFU+TyFh0FCA%25a(=ch q/zWhG`#m}jgRˢP=Gu`sZ*Fq#32m.."^CT% S@8"ņT8BluG꾡+ƌxORkJ"ʗ`2L(,k2i1G^$łn:ݛK(1%Vq"-7~8v 4r9`S|d ԓ{XXtD69z4|iq(Z'1@H10zYA6}t8nڃ!3 f8 &t3Y?e}3R>B{S45HWk\y1j`# ȓ#Sd:`I/}+PUZEV$KZV@\G &?[kcvkĸC j4uh /7G(y`w46a$ s)R[~z<;bjT;5uQV`1 'pp?H qMo="H<s NZT C]Xl!+Tw {&X3AF*ͩ{^-腅_wQ>>S$+AB%m柇Hdԣ6]b^ӭ|(#y1lB̴ zqSR]´)AmbH;τcA"ŘtEo5xw}@3Gt6BDɦLNhCĝh p$P;DOFlN :Ǟ$ݘ0bkKl="-X`Rr8a>M&kT.J>MP Z c@f'{. ܺɾX+ĢCdBܶ@CEf׉qlD`HTǺ;07k\{?]K`$U#QMy̪X@ձve~oh)xa%n@3Uҍ X+a(a#XUmhDњ3Fp.. !qܩ1ѯq?]Dx*8J1 =ڻ>bZ zFfN-T^XH07j!9E@5Da7elşj "(ݞe9=$Xa,@6➁#+3_(3!}sැ`[mfB& A+BoV5NbH+Ps3DG}1^ܛ2A4>>R" oF7+"X9؜#D=`(@UZAl_~h ^jh:Z+Bg& 1Yֻъ!P˞(Y<̓STڐ>mG#k^b"8(!OHsϒUq[*r|a##㚅`2sXꀀ c?z4訧k+‰ēn =r(uA Abf4Q:JUt=Puϳ4+n[<-VŁ nvZ3b@m.1/"ϳ@_C9.1Q8\UFp h6IV  j^M )x =xq, 6jhJNt\󇘆X[ wo_Q߾?>x4cw Byr4:UOa,cvۏ0CK&xEMLY#} V{61$zw`\mgLhj=-9Y}iSDaS$*_$.d8 U}dQdcEcS%##زc;xIȨ 4ys"/2/{q[o! *a=vhۋ`JWwl4 .f{y'{\lV'ǻ}3Ղ^q0#BNH9)fPujU+8XdR#>>ީ̯5qH#BK_;!rkYFP6I). $l"=VK6 cAڌ8-,a!h1wQ* mlB8/.*~2sZG;9"t0|@x@pm .|؁hhIs@G_xt+F sM#DjzSF@J)Up\hDCP6iACupB %:Q?4tF|۸5!莍*8+;11Q0ıcwl;lcd@~sgdh?Ǟș_jcg ndhCr]crG5RFȌ$"fy@*G8 -j9vzc'F38m)6 5p ADy_:Bޡ)"Tg{8~s7+ WpDi1 bGP3BHց=|1^!se|@#Ls\?XvGV$z sNZ0NpN@،ɜ,:@g!6-a܋P2"1B!vިsYOQM^0gf#Sa J"&s~a֌(( +'q"z14C}`c>سTC/E}>mXl6!b#  RFyFvJysBǑk@ 4.|x."a)elX?c5ӄ0-v8qyG6FNM#E"ޫ) v%\+"&`TH~"T:b6. h %PfEd]^H^Q\61t H譑y!X^(F8Jd=kl8@؏9iKCਊ(r? :e]%* @/;zyQ!Ay reup'aԳ)hAZ/T 2,ha1;M/bc߷⸛zU~se;jUBּI}aUv ysÔA~ 4Zxx!KD§,H7W?i 3i87v L8/d/Ƥx! 1ZgGq=" ?;NP(P;zۡE^P(Ti #+qA +'ˆ6-FDbq xN5:D8e!%s6Oņzkԣ*'ݬ^zp9t+;!'+<)өG %'Ɇ& $`zo8Qc#k Z+*e >/)@20!#Gb!z6C6/j?W(ui G Vo7j]/F 0'SbQoI&٘#fiAԺ`༰\MD!'fB2 D QH `ls~ T4#FX5-t5/ y :4;JA{j.T2ڽ (T%).|D!:}8jc qb?c]:&2,>4iF3$9Xht M6!.'=PUjS :'fF'hY|:@ l ͛CxJOmm:&+gl!] D7FJh^&{lDԚmhb=EEY8@aYQu+2p-O T#j;ˮq TZ"UO^qfb#p܋;cX T5VfƥԄ䨢Xq@I4چ(f41(c8Mm%A~ :C-x̜IJVsn,_8gg@'۸d&l{4HhpYX|ZA[?+b`" otP|cT&Mhk=Yf! Ў}mvJ.r !ȵ/fBMBc0pni6_. 0YX!kg;@`MbT܅{ h ;:[AhDңj Lg2*j"j7QQA}(}]TagnabضIk"4&!]Yзn+7QvPh<:`9ޟTA(ܔfji'=7! Y1"L3$N@JJ .O· )*Dtt'1X uq{ q\~: bE:Mc` G uDf8 w0˙f*?ysTiaPd|xQ)"bN?sd# Vtb;mFƇ*&dTkE_ڡ`1[ˠD7b7 ;Ռkxpj.[4ՙd1rL 'C_ihB0GX8}xb0uϙv+Clk8L^՛އOTOЫQMZ$@gU ,(r3z:Y~佇ZO֒櫼VƜx,6;d,,X86v|Mx!q dƹ!e +,<-!8 ʱ͋! 4Vy.-A9#2ƣ~r3Z@F瞑-{Ѷ~uilU|iDq v;mلQyhʴ֩n?d|^Xi/ Th|X ġDU>2Z HNr_^OQnۄC1QgS"MƸrޫ8Q̴8 npfD7w#ͅ Ś~^Z8vv z̿r@M.ʱw.6-DŢR e! 'pQXZ@1a?2=L⑘O';gJ nDx27LCuRYš o\VW€ݓ-* zTm2q%vؙ8 *SJ/"t\X,R{ ձF: n/%8zdȡc- EuvY&z=a9Lr}bݣMmbK%$&۔f;wqL0љmzi"PY) Cf*h:DiTb:F^*iEq㌐HxY $ tqm{)gZC,`X85҆m>kxKkD#d$RGq +ZfgCk_閒XٚYW=[҅`3+aP{pG:0hb#mz6" ۄ'9v^ĹlDDM+$Lu=΍g$v/aW5X"$m38g=^9>w1G0Mz7StBx.~v0;&2fBO _Fq%yBse~(9Y̙>α I6 Ii"-s 0,Hbiy=ghaW+hdžv@wG1٨;5 ?Dx izDz8f{R Zq)0 ZlW9Sl$xR|$2$K貟͚UOKEh tH J-`|@}KL mZTy 8r:OlX(붾8TV`''=dҝfu|2,j* 7{rm!i,3Vϡx3(HoorYV&Tk}[tp`S!ɭ BCرXau\:SH\Z 9;1Z̝46A5[{{qyhv.]џOy6WK;tq:9|bJɍvv)QP@/'?Dh`ys0Qy1sZ99ǧc1^ghx6@a9'6 &vF%xyjEhR1I<[1tm'((譍q $6bG̨5ӂ/8X/"IXJO<,h> 0uD7#Qo3 4L著Uk,[^!Ah+dܾ9Ov;9G̭%MORsd23ЄR *}uQyMltD;#v /F\ӫbqFA>h"njX {ߚ?ŢK}$I4ߩjQǝ m8;Q9-;Z6 F  `*ƠPqх{xބ6H,4fdO% 9' \83, ТJǘ m;ڱQ$Q@?6|`(a|X*u|O7z%4nZ 3'@a# p#! dˤBـ'Z89 80 sJ{ <4FfT#ߗ8/-N8.2H>6 rH0Fte4 @]ZnOXl11Dw*e/RV)#!1F:piES8ףm2f𔍔O6H~NDCتu!# ZsȐ.#0:yP -sN'q^Ɖ3ղCqSt?lr#+>@?2Qy"=$8^ sly=Y%Nr6IDC͚#Zp(x: (|c]Qc1&PI*hⓨ<ǵoi|jyVP[H#s9SaH;}@kN 0HHv8W۟p3gKRhBWӝETD!w{?+d-A"叏Oqϱp60%b0{蘎Χvr5ݹpJT4ZFhgч: >l_>1TYb ,I⥑#CJVZ{)Qj^03asRi)ϋ.T|t93$49ƨ rtѽhl !x j@ɾs` LLRhY!愘f0#kfat SAN: VwXe4O_FɅvguZsWùTAH`!FꯏTs3s"XXSȕεNc,6Oba7v0N(FjP$+ gWT{}  D<Mӆf<< TmLjԠd]vWH0fXu.jiV$^_?xșKzCănҡ>z3^ ' h =s%¸wwYgHYF?9D usN#vJb#/̰eYJ[/32VUPay;:הd=(!~m )&ċ!@sftX7G̍9r8meIc击bOߚ_-lySqR#LY5cO h|Hfqm$Z<Mjh\>`05o5x1&cR%" `V.0`DŽgz/Dd[:XqaxrӋy;rIjF=ͰYySz!s 0}tn<`" FC@oQ*4BHћ3 l4٘;ajsZ)ƽ$/GVߺb30CH#L+Q!+d$8ƥ4~.(hj@(m_kBFNeNLJ:G!ڟ>vٴ+D\ #ZGX\g#'& LC}8$y0梨Zr@ 8DD{m|4qWF~p@d6QEH "3BL fLxX G۵Ð&ݸ?ڃQ R|_B|ABYMƑ>mH݈h](IAbH~O-*ymG-;걢F 8G: -O3zBƧB 9g$KNv\? Fkhq3)7qpe Ѝ SPVHiEA낈 0tladq=#hAƧ9xD,e})V'-si1ma iDGeN$^Bs!jU]4;=ހk׹z]OG1\X8+0Tf!N*2a Xխ~ԯ|p]0|ud+Eٓ.>Wֽ%UmM*Ʒ\);DxPK4:01m2%jj-Pw}lD.k9Z̨@DYΡw9]bXYUs]U=cVV4 EfBx[8X 9[V"h(_ 5U3"hXRY=c`3V3#$rS~{s^:6=ϫ;kadb$㘰 ?$|`M9g(uq57vumyUj.RPljpOJG@ASWYqokm@awW[q|Bi*u5y Fey txqbRm_B>ڷ(;E1l0˦m|ګ&J#tFqJ1!T );5 /Aq2x&L -8 ;{Gy[fg ʷ4E{_6&rSL0~(7'y3UDHa,2x.ъ?UXfIDATP&:#*~RζhjUb`[ZgN%&fTJ(qL)pU4]0EPϔc2YJBiyZuT*`Ccm%1ŔE!oqN|\ "S"RN:*=]lTaup&?@T(.Y@$vx|Y )! (;=[^Lϵn1+`/؜|P0Ȉ ,39[#?X??7 N"'nOԘ` 9knœ\o2F"Qϣ.?m5KU PCq\dO[lz*jdMn+ @ʇ\*nAf7=6"u4/s3"CkRǤduaݷ5j~O( bB%)n.O\ ܪFug[lCo#yw fo$ݱvF,M~B:7 ,bNR۩!K% r8dN/&WAgb$;ʍ!TP˚ajjSZφ݁i}Y &Ф -( ʅaߛHeMC$faԧ<7rO9\B +Pz6Y;EROgjNF@ 4qgU4MY Z94H)6qP7fG_)ʋz0Cq@[J=hq%Q E)2\~ס!ժ І:<\Cfys0?_}}aCusBZPdP˼dom-HA ڂxv`(I l% vM[0Sn^&}(̮|~^K%ahGA[='GYHY@\%ԑ;y{.TK1('z.?b xygUË$&%LI`jA༣wyMkƖ!auh;7@{!Uɠ:9=1rD;0r k.7NO |6L^5[> !#|A6 93vFVٲj-U4eOq{9LCQt]eÆx6#A,c ⾤R ]P;iFяZE{锩F!>YA[cKEk*P}#'\*b+9$ִw {G!UE$yoGǹY:z.T:WM `Ӣfcyh'7\y'fl)nZivT3F%8js) B]ds"Kٙr>4qӡqnjrт⛵ê"|KGg<#nC)B78SX s{Pf񯴀ˁaضQ3}o4Ȫّfh1L>hɼǺAHch>/3_9a/Lw|_/._cbl/,]HtX/,$u|{a}4ƚ"ƃjdf^> k0QhEЉ ua^4Q{xvpm_>aF)o\H[)3[\,5Ҫs6qY>LhM $&խԢYamS6.T!$Zvԕn YOhT1d,yqP)AϦ'\Z5¢iRD4doC>[>]1Z2f̒$94?FAC5ƒ 1BPv(es`xIV h{ Qs[,ț45_htR2)8̃( !1d! $C1l-96e pjoN3MA}nl|p ;؝VûBu l"yEhǾ b!6fS}c+c< vk} [Y{.7 .(q5;r %=]Dl;Fe?mă㄃>4z<!ʟߴB t8M(Gqo|SYS5"E(s[*OliI|Y\ sCI0ؓS'~V_UwL8.̢v{Dػ.tSҤ e_,lo<ѩFcʢ,X\kME3h{R|DF+LS4I %n0;nOGY&M}|p;g)o<];gR$_J:9iㅊyqyic\,_7EB1@9i9wDsry%B6T݆c׼SQ8wdL_!6}m:TՂ)DB'?|/d߳qN ܝNv/P iwWS%xhSXK B&bFE(XHs_zK0m cncS$Fs%ɔߥ9s5jPT6l 5\ur#WҀYboވ?JXn~(hK<;TFv*k0epޗ 1JxLIqMM";6!/OkRlDNuCTk@"6h*}$ 0Ac=[ہhZ L04pTTTX]v {YC̀˜<Ƈ LhZLyYRmTi0֘Hle0] jYV<:E ⷞF`:0m,kd ra "_`|v7Qq +/ع۷5V c,BhW/d{`qWſT=QP*Wj{K£2w3:gJ۽Ϣ2fʆ=-[dѷ]aRn)^iYSc<5d`G˯pěTn -y'tX8_ J [.5G@QIP1le,CS˨Iـ7H")^[G5Y_*>WA_?-5CL#@0-.6QУzBi6")!V~#$Bkɶv]6L` őѥ Bz/o$?7?'r^_H֟c`0ȥ4ϛIqe7СZA~e,KǟQc5F*"5ǔ^ &\x+eDu1Y8Gy¯7@Y4]F -E]u8TU zYp7l?!Wra=4vVmj,ŷɑHر5r'SF|^I4% }: 98z ]VI8Wrٮ.<(&o>ozFj]Tw^:5=B,T5,f'NG\4(ge.' H̊k 6љINAxVڢLh bFX/2/]qC(|JtA LNP`*({`⥋ x+h=Y*|SF\Σ&SUg]~Yd6&6S48^jK # WK\:KmEmE0p"f1!_KO!Dkt=q_ׇTV/4;w 9{6\9œlW rL H~9.?e4x>;kV03ל fm]@G}5qh)V ݉VoSδ+}{hf yfRI $u`y}hsݬ r0Pn(\2@6q!|2!"NbRFF毿>?_Xow#Y ׯ L%PV4 J%VE`fpeZ} }+6u*+'=>ȳ4Is˄BDJ! '/Kş͵1bLUq8 (E+XpX=u`I$,FUU*J^ܰV6e9/$5⥖5"F?,E+ v'*QP7S<X n}yџrqz G:}z^ F-X͉ 3B87,^fa R B"~K,2Hٛ/zo\?yr) z f3p5|ڿ˕])0Z to^{J"?k ZI(5R\-}f8<޴X y3Z qN1~Rlrx qd*̍UxSY'(:v/a {X ܛv'ݫY $tnH̽ř\sXEbwX@4O؆гr"L&p.Kϊ;Hpe'Ml+vKlb=fmIBWŗȖ5&l 7W!V`1"U{!*@/s2z:a60Q/?𵐱qĽd$?x͍~ 3oTzܾ {#ʔ5ḥ35J/˲+FY$Ko~Q&įbL6HƷ:1լw{m 3"lF9dY2iU9;mX7_Ԣ⊇7g& ^D@/ _?X?He9׋OP4j[@Iu4 ʹu1K&[Oܛ\;9`,Q&kC#8RIкk^cdVӛLNWQ8U.-^w* #pFTXk 4xGsjLPbWq{!]yeͩݓ[Yܐ}(p_Kvpt6)ڑ/'+ E&Z(+*E*{~#7b m;Pݐ0 R'7gq|K%)?®y"f¼F:cɽ o"*'Uj> [t#xյft Z-;IMDQg؞@zY;qXgYj“QDғӱu { *U&#å]X[ENNӑDg\v"qI/s9Ѩ!ޕK3 oyӨ3nM#oUt-)P*|I>Q%jP!ulsg޽.'&#pdž߲)&n~ ?0($=مJ}IJJ+ J)= #ĸ4\Ek5Y+5IzTġ*0p, ۰| r`0QI[PƵfԏtO\a? }Ǜ ؁+Pw^ã3]QD ]D/d. rҤJ,LV<P0Nj#]0EK$E/7yN gEꤹ95z,7ogQbn? 5h0[ٝ+7&0ɺ,3:12" ɆꏢD ȸ&h,Kܲ8A)~-詂m?4(F8 y9ơzpj`2V#S3XlMۼhDHc/)aVau!h7" 2# Wޒ7$Q{&إhCvT>h {~S97: +Wȫ!\Rl?Q =Cnט~,t.1j{ AUf詑n~nJus8H\Y|H6UHD$$+%&DO0Y7<[Ԥ7  n E'ֹh;Z9zE?8XKނ>P(.nH{pJ %U`C@ҵ.˻3PiZp5m+T;DLM'.1een5.'8Ɋst'wq܀D`b/\2>y+Gu dGT!zٓ˛樑;C@|5!b*&kݮI SpX+!M?cҙi6#)aV(R1ޫsNy w  U;S?PS>H;In$Y1|8yaFC%EVJ^  }' ']ǨMe{; 4}}M.ɠQ]rK5VM%bw8ZgL --#Ks^ ||ص)PN.~^v#8\R#Bc/Bc/;KP 9v.EgdC*BlŽdjbx!+CG˪T "ɵ͝D.Y°؟&_D]mgDMxc/Nhu,oo ,zL>[MBPD7YgJ"e0\Κyfe4#;bӹKbI9˦7[ c: Oz n8aJC󆭍x/熿 ciq3E*YHPXu+"# E MEYcG,!MͶXSOؼCIș 7 8.80/|~7vYeS;+UZ]h4g4\%O)KC-FȢ2D·*Z"Ng~ 3-8&[m!Ueox-a_肑$<ɱbon?;n0E֨E`/TwhZ,܁e="7޿XYshnR zl[͵2 1#nX9a^qS51cFe :&7;fCZo٪Ē*i FxQ~tjn%.Auf9) ЁW<%ϴ],4_ 'ؖ~kc2E_L46L#1q䩒*+.n8~x>%Г^D>lbqxXi]<4`BY5K匐[K4]uV9rD bʯTu'шՈy7k?$rJp| U$nU5+!gID*^bkNܻo%O/YIhxLaBrP rUR D%i+0Rwx%XHD19o*K%id8wq<:넘5ڐ B:c?Yʾ/W/.sV`!oViB%v*R8b,K ubc%|?Cv(|d)#GMk8ͫA47#%bNjrp7=|7 ;>}&ԙ:{ 2&1?^sAvsIGYH/!+->ͤqJ%W ðl^YeO<9BP Ĵ}#?SkC g O)}S9xxQۘ\uxiV[>5^"d!TG7,U|w~)<[^gU(eMM#7,dX:h:AxE|R^F2,ڨcp׋w(h/+o;&u($%B@|(F2Pu$LyF|ڂzY$|WË%AUٮ'hJ'SPrD ":7ƥ~#e$b0FWD(ߊ|M0@ؠQB".J dWϹ]`ha.!AԨcPĝ$6]]cyrG|0:>E"Mar2MHDFiU`4ݒ0 ʣ< dǟ+=%T- SS1F!5UG!`I.ߝ tU65nr$-%(k$Iz [sk(Fd]POnZa zL*'݋}w*ը?:Յ3"lNjDea+FN!b#$AM##ǂa!Ou״!ҘqyqX|xqqí` ɫsc(ǣH64哷sI[!HmAEA!7%*tTcZ%֩l k-N.ySYs%8EbMIAHT[/w"i(:B9M3gsi]1#tDqW!B:YRM/Q#ƗBNebb+ucܺq p a[Mߛ!5 7@$csm`ʻ)[:O;- kB bÝ@p7p٘jngW,E'xf,1C;i1~˨*ɂ6EwKRS-T DS38Ta(m HS#^Ķkg*^8_4ެ1pMJ-H?ƾXfZ@2I#aɿg`.|٪g&A9u0#Ij~m~_uR_f$Z~ВDz~¸~a|R.ȼmf:8 @L THC 0n\TN[ȐUNې`WRm]HD5M6 އM?OSH{-ŵ9)֣8gI)ut2!*W1@*dRzĥօ`[lK *#iͱipZ|=)0@[=!Ho\~^(XCT4-*U 7aԚùW7y=:4W롻X-ZمD^*D{35BPԤRjhjw .;{ 8K h}VjY1be/%{d$rݸ|B3tz7o*PՀ+,+ gy~zDr).R;Hյ .RgshrҏE$&סƔbh=o_0>LYJ iٳ)q/!Ԟ>5x2GN6L!`);MT(n>k3|kJ}Iؘ'bgykBQhjkc&-E&Jv)0mEjIcyV8ܱB|q)^`8/1ډBJAo￑c&eǰ:{E$L{bY..vJ" ma Urٿ.,A7{%2D 65<ƾq؋*z+vOH OO^ -:[v&iy7UvMو1vHNfJJeǬCH`"d*PGlށE۽nS* *^#ca6hoo ~30EMXܟº~5j$D2Q((:)v@ydмgzk.Br4ׇccDՔ(ELؼ>{iu7:õVLnZ> 2&4ey"BsqFɏ9^?r^=ّذ\=,xB{Dtu"T5`Vȝ~/rJ~28*7Դm*sTM%o|LUT|T\HżtQ爳4xaTkF7 Y5$'#NI_4r|r bGiCUFT:lM{l*`1.O%(}xz2?mLNPnMҷSE iMcٶ dbQKc$E75}TF-jB?:V_ewB(0Um(sA]rw8 pq9p@ YYdG= xsn&^e9k3L JHя uŝ![HD#MD(9u DQ@범񉋻ya\ܑi*(0+b0;i?ʻNPl[|,lY̍9'T'*'l|9h ?|c}|*PE"̒%;1e'}y9wj fowbeʣD@[cBi$$hk/m%2˼`J]ǟ8tl*J`T"(QQ34F^2GF&.[\I Zb<+yіT,3 fzh^9RTQt؜p,}eb/R w8qfi5faiZkx:_358oanE2k ) ֖Og5'NUPpW<$\}l H.xhkId yIѺ,P0 d=V-JHvf ߈%&yd@<<ȸ*[@ LnqSUGhR";XL;E@8/mX)#tcA셵$q';o$pG])\~6xă0aTUYס 1"5`q(|1$X7/\:dE Bg Rg\lsyLTa>;: ~c?y7r}x(bZY 6-,ďBA: }a)ݪ,~,wXX~eԒQ9ںF[u &kY?WP̞M9GuW(b˰AZFEs N W# SeJ9̃2\XmBYbLPy_pa-6"q~~(\7<3_nZ4{d‰$Ut`<;gRN?\&$:B?;pFe7D5A ?!%"dLkx!q!l҇րO:1NQ4 FXz!%2ȑ#kBntS?%?!kA.ligh<_21ǖg nWSM,dAb&G"}:E爹!%Va݉ZzL(;;a g"XD!v0熁rj- U&&]JE{]mLAA|?Kreµg;v?E>Oupy#Kc:!ݲsjs޳sYsw…glEU5>DBHpBHgVaA X2iQ[Pƨ6 ʇRExPK/"0gYQ*ļ[#0 ԥnؼ0v 'k!D_d}d{CDE :it6;W~Yx2Z7RZ EQC찼 *`Ox{~83zZ *S%Frh%po#S6Rê.* !A^+oRAAah*V8(UISgJűnQWk&) К%zxy^;8S X,CTezIRk]J8rI7oo뛦5"Œu2@"EH殬< 1 @`!.%ykvaI hw`-V*`c!|煩K wӂv9+8te8g6z1Qg*l8yq,G[>3D?dWwd} g%dRaU {&O(qgO<%-̄|c#>?MHA (4%Tf2x*uPo*F8xvw5t\ aYltե"n[1=/HmBݴu@Ae B^nz+K0t!ݰ)+ޠWb$|鴏%&4,^h)8n\!ARϭ1XF~%JVF)cDnüVb `1H|>X u.8]󚏶JZ$mfl+{ٝ^ mIVFԪ GllF:s>G ^}T~CZŎs(+Aa`}%\{aA /$ $<.إKDԨRC1' r*X3JUV2+9;ա,z_5n]+~],\uX5O.EKL]0u8%~40S -aYr6 o71VQn•*-1apef-k7xEjq4g0? _x].mH֑|#.d8ՠ,tP N%-3Hg`\1A̍9D"ը߽S0aamebFgcl yrПQT S,[ìG I5Jp#ڠœ۹ҥP΄&eAk*C;(ylk& > ]P7#܊.Cy=o5 i+fBߕB %!P p*r2SoB,BٯsDrغt|BpEUjuyOϢ A>$<\=qߪRhqh㏽(Nᾆ)XNDR\4{<pMwVY߲M+{٫hVSssq-3/B/<%4F%ԁ?8,Xv8%N$L?1K`R٤$ۓZwR (mib&''b%y,Yn +p6*k?0ǔɰ1*qz0QV&m5>ᛏViτAp0#>!*:SթӅDTpطs6XEHXWNWUb3cK [eaa\ a;; Ao:LKQ)"-P/SFs&ȋ܏N|P%Qm)%SqCP2&z#q!."B*b4uG\ч ,uGF\~C/2i5fMH<$V58;qB/*WSt$Lc@%n cs^};vG_ ʣ]M- 걏9E &"wگ6#K`!qͨ+5~C^|=NERa-H;?fs+7.ӐڏψIhER'Ob!c湢Kxl<$oew{\ܹ0:/ظTd/k%{!̛͘%dd^A\#-M3Ρ!$2X _#Md H!6EdyVjğKLD+Dx9ͣ"\0$tqKLY#Q_a$ΧHDzmVKf0l{? T YUaQŹʹ,;$ff7]־jlBb1J\Q9 siI3PC?n볈E5un/ >064$['"%zuM(H7b5[{΅<J30p g`pT=q¤E4rm"c]ZQ/ kB&/DrM#HM `J 9r\ ӼG+t~_|QH`ec2>0p>fh,GV+bc]$ڃ(**+_NuS} Z5Y? ,@8uh`B"cdT$I,rFS>F^ 9NicsH1i#uXcqm 1Մ␿ y?R& `݈և$#f.e^LTW1PeaAPyLeŷ!'(JJ{Y  Cq-G w*,57|V#B6Q%,Kmh%Nn.z^:4ˎx5!ANGu_H*Efygt9Qx=LS\VwSH3!\D<~ƝQT}4(QtOM!?6!!}#cchMqzpLc$?y/٠ f#E8(=A*y%^/ESX|BnJ8ڡ 9f7]g";ROE,0$p zO89}[p/mNnoVJ4,h⌀B5=}BEVqIQ$9R\TQїj}Zx˔ Pׅ1˜o\G&`tf_ !5Mglhq~5ޙWa]RWcJk oN! ̽6HW,5R#*䐊@ Vht3huA,FO{Jl.>-e9-NSOQ$G;ׂlV2 i. ':,1 3>跈܏aRh*p|2h۰?o!K7?84؃)hF<_ИsaN*LYȖf89da TAfq rO o _.zLGkQ LDd8&FIl*̱K  LYt6]G7D_vǼ2;IpM3ɬB׳>L\PXEJq4E.+leR"7r%WH_"7)M}/u]T(N`VS3To_}n\Fk'4`%z L` ;ƔZV1!E(NPDyXfMSѻe~4,ufԇ ġj%u}NOiͨ١ / ݄'J0߿Z!Li6xҘVg]p(TPx;7*.`qUޓp ˛7QC uIvZ&v/M12rfaQg8J$bpߎ* VYt(.(ؕz$l ovH76> #UڅG!0#Dh. g.0 AB\uYbeZ~w&d\7*hKXcG'Nވd KG=II$s [Q3u.9(Qƶffc=朰11G#>&W<07`a[X I!,U;zwRFu2B8SUy޿mA ֐gTYBlTjD@Yvl]dh(1ɵ2$bժШ,/aU, //`f>X3ove}TS-CEm%;ϵJaȐ@4ݫ􉎵A:l҇:kV0u> ^ _-ay{"YK]ZK^;?o!l;R3ҧjOz +0SP@2 5Hә 6OrA]_FFfvgb"i"fB C<'/ˆf8= 1L+2lL#=Wj)DpP] kO _^ +^/BkqMR,R,*ҳnQ^#ոd[)ilbō}$l* ~fZK`ᕠ#DLQ<UsRPOMI}Ix$S]:Kp5Ɖ@{95$e\s؆u_|QIMDˇJZno5x~Zݰ _엲 S)G%Ԙ\T"_]*Fm\-B@L# 0/JHtB,ܺȣF~ƙ-\)7 BWkop>|Jle^cOqbql>EפN֤"O/*-.Fj7+`p6A)Twi:Kчͱyoga]7l| ~ЭpȆr2McM;T+)=e]PA>P]fPTJujpB+=aqBwrw$zPBo 7oA%/~N: NX'xVpuy -B)?UVqDMM5Yױ1`"sD&w# ׼dd0n=IuDjL"'V[nWs"7`#g87sjjPw{ΤDGǏNtXcVݑ.P}!75FxbmJ㵀"h'cbK2OM`s09'x3DPgǠА te6#H6eEu:\a3 p K5OdץIӂ|܊;:2֨i:| $1e@JPL)嚈譯+~l/ O^5w/Zh *ns轛Af< @ $>2 ܖ(gKa}lR|1g355T4o%,Zc"[gv4jï3Q10 ?.)N4L0~n`(A7|pK#a (A&/,&0RQ`=bg0 ?7y~^R@|0S{5˻zEdϼ˛{˚ 05v]KZ.ف˲,i6o>$zr=y׸7i.chh}ɯ0DB:x 8~gx)gD1kOkƤܰ,75">_A%]˂< ˿~-⃼.5FQN3GTQ+*F &u2?\\ө7ie ը6fu!ʰhݘ5J"/UÚM_n/PqېJke|$\!1@u13{1{Dz0L!ʓfk,(47O# \oG!o@ٲtXk4dB"tca\kR@pMIW9+OX`Qo,>)ACOΫ-寤*Mr0B$nwO#BT}R]{27MϽ_"Cd67$u_?/ݜ+ u/k?‡/hk/?Ň zg%¸%34hc-GhJ?B^Mv evx\|F8J0`p$jdaB*Z>5W /H ˸Ĥ/KEݤeU2^ڕ×5dL>rcD~[,#fXgm VL-uϸ8٣9аd͖9f~/Eߢ;llW}L´U$ȾݣEo9*V4އc3;IqaWRUt}yUX3/fD3( u3FpqR (^?@,d0~&aquJh UyeInZ଍X>?c|kLHN"&L+_izv&9GݮvyjU .>&2J!%L /sBWu%L VӐM(XPtJ$S Im9gkcrB],ԛiQ4{^BZ Q4aMqf)ȧwoYhUȫ"z`1'#v˔U&_9ʰ{Q(4}pOrTgODt9.DU=Cm,@X}X(;s3uQJf;k-!QX@+3?YI?*;'_ьOϛt5($L|p82٫!6x|622j7C|Rӎ2$8@@Pt j<+c>% ^qnN" gU > Bҩ>\e?LM |,lNYW59;&kLĘ_:gHCSVoyդ/q$¸^rMQˢwRC ׅ0mL7bm; h49ŗ9rD} p(߀}L][PߕD oH` 46 #T O$e )}gݒKU!n|Z fU'hE,9kJq{ q7f*GF:Ljc34Lx 8eRB12G'/!s慆yBr>쾱c,9&5V6J)^#ژ㰌EAÇm±,fje'u%΋>--2 hJjéF!L*J ?NA82E x)*ǚXڒyq 7bVB:4.SSb/q}ݕ"K(۰|&T;J*%A>Yv2BL GՈgcRIԈYNy$%+p鏉ytSm룢*=V** ]gcmio:2frO`N4 lMƞm~g۾#q4DUѠ%;#TBwR& Olz\yjLJ]e'Ͽ-!J A*t$rRYH>jNur^zffMǩ5{!/.5ФZDHK\jtWZh lSH Gsb!.AqRD#o_\Ȫ*3^y1u5tɺ35"bF&,vIfNo]/9#7Ճ'WWtAS˺B`` 6KI Z'!q3|77 Q :Β~ƸRQEB@z߸?? Fqt`"G&hּddn&d1z|ê?!@ٍmA28sT!{!ӣCkQPDRM_RQh A>(GY;Ï2rjZJQG# `#C#žb5ؔĘ|()M-ZE2'͟_Tw k"02(.,)x1n>0V3RUrdJ}s du#d2.>h0^fÐQA"u9 gR:',gLxՀ4<. V`? Ƕx-6cbz e"UAnːjB,O ? [*Q(HILOq*ƥD?I;G~lDĭ"8؛BߜVn=jtJtqh;,%/ܽPz)Z\*XYZ/ _+I}Q!j ZCTI`9eie /\ {ŀSI3_l0M0XOzRR(1 ŹkY(oHٻ ^pwހ zT\D.D|ooDԖR#+rs)2MW kx_M\ty`A~v$%[tf`Gq'^v*,Aθc\/B_%]]w0zHF'BoqRcH`ܪX&-Xk#yuN~(!9M#c%ÉOmxfHCaU|~p~24}lcLe xBrOiZE[Z,62Ohv3CK4w(q)񁂺1Hrl-9ʝe)ҫvIO8#Y56Y:ŠH#'%y\d- fTw<"*%u*;1JE fw-dC=]b S[SyͤP ƔE5BbFn= G"Lk*OScEIL _Xo?._EZ8`%p"JVh<)*5u\%Od//nk _|׍@s2&Eߐ#Fl9y FHO XR*\`Gl%'O1v(\"IB;KoM:CzM'#ܨ!fOuٓ])dEf"R67QZN#X6ݕ*)} QWeDq=:])FBo Ď%1 /&X&@ C(%p"$גF,Ʒ7~e%Xḩ=aۑ䡨~vԩ EVܥ*gQQHÈdvq4jFP-Gp|? j@4R28L*8mہEϹE 7S4aEQ=Qc/ҹ%}DY@.˲(P4@˖C@?.FU)s8?'JUћf ` 7/)Pb&â^e*c< y9Mh#s | ?U%g&0}#3!Ŕ޷Ɖ=XrM}r% 3$TXce@&*DE:sgS!LF'eۜ9,)Omx5՗/ua᠚n {Xo;ZG3Us0ƌϑ8DM4Ar3?e24 f7G[5UVPOxB_,;f*ftcG›^Uth FWYaτzL6+ |tO;2~vNXv.v]4/W:c>t_/bdAѶ,vgC?&f-c/CSaqj,䎭zbeF}+ p[]γLMƼql0voknr!KhB!I-zn$&N @# sicUSIk[qSw,@ca uQ,`(E[<$RO@4hR^g$-9})}J@Vɓ]7ADp!zr /G.vI`ohwsԻ}` L6R`[BG Y2xxxaז3.G 1V :cqcďrE(\3L9wq1Y`#?h΢$o֘Xb7KByfوSc6ԑwy(qPk2 ~ +uq,H0M`#:Rh4'9ڷMԯ. #zt',c/xa‚1Z-7yim0LШKQdF3}5g3SҬficc^*xG\]h&6@m)Rf*$W 3-BL 2Aty9 V6`(Mg+3R\p$Xa>k腏Tf";4:tSy.!dQxǷFg\޲m;,:hr FVB$7#(8%LJeŹo>OwvBN-T`O(> '~7o;* !&-&lHJiJ!f* pjT.)^/EcF%o'>ag"b$D1x cXߺqew]V<Ī΍<# a11(HaCH"ZS Ga !fw*@M /Sg[Q +'QY(N(4g9F"E-I}{,% aRl |, FO!7:*I>dB?Fa!}Li\t"NGcڔ^lQr>BȤjϑX}%-e-b$f㥸1ϩ^Fu4-KW1+%04 i(:AU}<@%Ud'z+d60 Ƙr3i+S>Dyo:*hC$}_,J=6*\<mp[2m!;'ںOq٪K-;'Keo2K柼'3cgߦ |Ąp.T> Ęͦ`}`F3CYa-3980'o*c@Rak x/{>F+O;SCZq50a}kE MC(u3I}&N= wx~]u%,*S tQҎ,SwMR G}2w{YI_.& >^O:"W brxHf8wu=;Ow{/TC9bkqEQ0C*z/ ן$j)ubm[3j0ve*LI'_0sSg Hz2ɺ`HͲ{eq8,%X3]!7ӽ9Z #9,^*.z4G8Q,] UxwYOpQ? y9Ψ}=(/{Ρc1.&V|`&y~~ "9$"_:wԢơt,?o?|s#2n#]iv ^Sڮ U~2TuFx%+?^i5~ZVeʝ'Iwi[?##)7 pj-S%QBc8599 yh*XyT5(Ypݰ'.VCD0 <* *_ޜpUsB+gRq!.U8<^š'~Nr #VU庠}'-2z4Y 8x6oڄ2f=U-nTkM̫@Bb /En~a0,_>s.]>YMކן>;K^6/=@GJ'QLa{2'Be'GFœ C>ʳ u6뵩7Ν[y3.iwl&77n7H t1{`EfAċsAaka޸(?{K FmY[aeCԸ@Ⱦ׳}rk!D(ygE n܏Dhf׶#Eޑd.KkOHzfDv0j]s$鲕%A3kr#>W:SlԦ|>5b K'eϻSR#0Z"`6diwL|a`1yq庱 ^jȬaD|I拓yhЯp!]{d .@c{l^ѝY-t!h,,xNA˔#9 r*S= L"OeM F!tX,_#Oq'x]/#Vzd4 STr04@`A.D)xNO!F@]9f >筜~]WUfdE+=}c ?׻2<`8fm*:Sk &g+aLFTmdS10w%#_/;/ {qZ c^ށai;SC'" UV S`V[<' c2B7n,:K#`ar tμ $Oľ[35$YĄ⩴?cq-!34~IDATϺu蜪ѱxf!H7q;i)?"93UqvR.nc᫘Inn(bm q/`,9q5ڀ7K:e2 pV.+jraju`A|~ImK,~H> "77_00 437r-YLX#6LeH$,n+ >i/nt$nʱ]?ye/@["_S@,h'H|>o?7U{QlNxT1jB MhSe].D1`؀sh9vn} f+2BIܞZiG_+A`^T!LkAO"h4Aa[ |ě(SXp|󂣉ˇj̏mt~Qj5ͭsV*^=G5C0M>%((0tPlPq!:şQ3Zc8i{ Cx*Ҍ{B\C- 0w/x&.v\HP)؅JRc-!^2x`, LV&+a}?`&%e72F"B\IO֞gH$ˍmLqQtrK:6*!P2,t"%;4ܘeZ+`:lOd8S"f3#4>x)+mH҇XDZ+٣<[ !:gJ؟v-إp -Ո*v4K!EF'bƳf-o?~~SFV+E6מ ԡ8mbW̵>7𾑟[/ ޶xNQč#a9* N+.XQ|"Ls"]6OC#XϪ EGULyB~6K񈲅,~)qٖFe.#LZhlCm=x-D~ I Ebv&O°zF[Ls~ DLVECf!9 \2lr:X'&.6W||G@8;{F~2;2iCpAgRO1bP2ɱd/ ET.cq}8P}To[MPcd<@PBto{ÕZwhlgȧM>!_o&׵ep90xߢ(ۡZ 8cށ77R6SF M"/Z=>ԣ}!Xsb*w?W33P6R.7*p?/Srzt@j !0ɷ[FᾑCzO ^w"WjJeg׋d%n=X| ( ߞT>K;7%88dHD}Y}tI-k۱m!ч uA73Oqg+PVo*HcLظ F|??؟7?FaM e`.̦s"baE;`/pqDߛ BU{?Aco&Ƭ2ݱ($/V"|N-Ŋ\2&#l= S..olT("#&^Kq7Xb nJ6\1v`&nS3P}́Bǫ)6K"{ۿ˘ 6c !:CA?T$U4{Kb)QJ!/B{rkDP5q+ėnE~BG1)t I1=V'ˣ }LI;JKrkKjS8R0k*q,lX؁]SEΎ\(O^\Lr-_7B`1z v]<^_wt 6FkywoZ0EoցbBC͗,qǪNGRG $ΪJ>4r m,Rhc5E2ȠDB'ܩHG%7m;]g]s9NMdy2~u 4"6!= tpfKTrGsˏ6>Ɗpo-&ƜBkqWj産ԤJ*zNs^\sxrQ2/Ƈ>mi yQAsYA"= EE5BʏP\[2yw4inuf _+7Q3pmXYgo{sNK3 %PE;Y¶  ˊE) /xa 98=vsQTwkr]+?k !w>>߿aQcd?vbס#:T 2ߴMڲ',^>`onBs )j:n.tip;@F]/3sG˰p"8VOphK.eѪa.^T}oFhDА M5FctKu髻d:38{C=nY4;.=ݟѣ.7"ba,4*L55ھ_s| {2#ʫ#c^ #O-b'ϋm4/5?U &sM 91sh UlN3F7Lp=$S%H0R=)8dxQP5}8x@4 _D"QΓ  ^Jl|sQb5qa] x{lbN}YVЊ\hR _Dne `WӀKKxJT){"bh*RVƕ2~G4Q+ 8*C)(ep+8aJKCkԡԩǣSϼLt(JbE9 QYI!Ftƾ1xH;/Z)oǸrų2v`XA4{L=8++^.`~i s("ϣ昹 )?E}!8ȯyjˍ2Vc7kg6]Kt Y(za< &gp\ېLP. Զ;kt.6l'0[8T(l(L DNB8Sorw*ílJdO.#pB:0*ahLX*bi\3#US+ 7Ȕ|,!q*fڹ} %EP!O;HoƸ;NC/Q.TB# VLIcXwj &w;"0/n8z/N;5m{c93{$MٓՕqwSAub$]Vfe H@0s,lj훈V,NNϔչkD!QJ Bv5iўkk)+y)硳8R=uLrFFw9L<(܈"k& "@Q:XZ'dC>68V\T0-|pJ`YaR#||8d*o$?g- rZpY[M;3x˫rx?9>(0Ǎ7F&vc~%?n 96If%P l,|"H*0 b|`/f B}t D{ мNLP.6a\P͑e p,z8a m%{8EG# ۅʢ tڂׁ"1rԅlH0(-9ޕ*Jea8 ;ƸbÉX#8y!αx2"4`ddG6Z#(_ 7~/zm4*4)´."g]%KbC4ؠoFi{6T w, ?(l&?>w+Nr-K51ه, Sof ||̺vQRʾ&C~"R~KVԷx﷐dV]FϾ$~$gM .U&SR5bf$/i܎UHGz;;Sj\IT^HBJvy,({]"`1M;6-ۋ,'}0-H̝ûpE`~j~`3&"5Jy(?:n, (?? GPc, d.эr ߈Mv׺U@i]m5nU2RkOR<:֚gyDK$'78i()@o5Fx9r dDkxMxq=e,#6vF}Yf):l~Tr(^93+ǔC3ׯDM"K+R\,u-aEj#̈́rFM/9BDG w\l ^eE3+'೅/xӓ H}x߸o.+8 /z$ÏG:E 9ўi\hn EWH ,wm "I{kc/ XwSR?͌u~Ayucuٔ w$bSɲ!߭ ;*TVViGkB0Wn2z\Y ?;\3qαS$fE_fBYh{q?uB9SU&fi!6#) Bvm" )&S/kJN~_ޗUvd`'_hPr!6;Z5x!յ,FH> ^!1a|9~-دň"k򠘮i#2575U%5x^X?|R#i>uYz4h(' U55n^R}A&g 8vGU٠Gw ܐ<&-ZxO39kģh81M+%pk)elwQu(pX\a5)1td4|K#{x2ݵ6puJZr 'j:&]B -&rjxrh?A_  .5Jp uESpEM/~o&lm 7^Uͫ ( 0Ouva>k>L鉽jl>$i7E++!W@ O^ې>eəX͌d愙H' -ETK7vZΔY5Y6mvb ICo0,HqO~G;ƪF[bnW;]yWSLza|V~2x8r2Qx-=Laj5=Mj=H:"G;M>*k9gy*i^viyVĞ^dP[q\MŒ5 ^pd` Ŭ嫍q?!UNB46JMY+9 G'ݣsKX ռЌ()~WC69>v?GZkpRԍ.MӤ^?oz92Ѣͺ/q^MSͺTB>PU7D[HRZ Ʊꙸ-y醓vV7^~a'gw$׺]*.THNFAϟ!ejRHktrB_䆭M3' ?l~TYT3W:b/"l*aQY,oeZ4Ac2Mb09p[&~1ֿo6@, 4)] xD3W_W/GAo.QΊs8 &pS×*sHBz*ukk0hmAGkKįG|7i 㬯u\~ީ)}.xM?:-`q!//ki]&Tjhؘ- Mc6[Y0fQx]dDj셊_I_sYLԴ9A(*a"ЄH 6yѬ:ȡĎ%׍SCaN1S~l_8X ̇kX8~]h9YK3?O8io k:.Hݔԉ,jT` `ע^73'.G{Vba!{NN@5=+a_/(-Kr_r_ zT&/직FMzz uێ) #+7(~iC9qr+H=- ZR v(xoRxމu)w<߻; 9b0L9Yws&:ȭ7h>,䢛R瓈3@Qg V2;xsRO$_Q}VE=O#:C(I^FnϖE!5у%CM&彭bM+h  cat2?VP6q7sU]e= _Xўvvh.Qo;c`M5`"¶gGҐ"AAM,vV̓OÁu:9|]o^_uVk8\FRd"L;3hרG('n[+k;UwTjSߖNږI; \FmHzߦ0 L~!r}P.8*g6?_ JQv6XQ$s>X^55i;VB&`\;kVxDYG󨅷7/xFGl 5Fħ1%xcFvy '~}q V9!iYO%{6])MjHhጋP`1ĉƲh؆KPCS,3ݻ"bq]B }P oY3x ₜa^[!UOq"3}4/0 SdtGdRJ|><"T;;#7{0&4!db+"cB"`)^"jW<[xgV\0,]fcҝ4uQq\M̔Vo݈n{EwP"'A Սo0k;VCWyo++t)S]PӮK&s'MjkصK*lvHM auKIP# w-Ma2нi+t+p¸p,x XkV[k5go7gߴb-OaU[YKjqݠࣚAIzlNs0%-C4sدb 9M,k*`t>nvٓrVZ ?Ek+eJ sL)rfNFk'G=?$ΓcccBm,oN;M ?nE^b+ޖM51ƹcE}Gq*dYѹ4'M9ֱ\k +dz˦>tV]-qD ~\ }ኗ%gdAʨphHAQ!A1}r} skw /:WJw Fُo40/!/>pjF[ Č^@|Aq,L(Gi?D!f]$TwbĮoFlάcTQϔ#Ⱦo`;rv|1CFbՠW1oEޜ@c;Yk\I |lf?Bou'&ߪUXz=ƀrtMh#*Cso [ 5* ہW-Ae!,O)YM0X})B1b ˈx'7aW×wXmXHU f/Ca%y{lXy|cBX

.~ < q QZ~x|ߐw*+ԭgkP!ǁb[HLWIK cӺ?Fx" 6Vo[.rt:j_$\1hڲ䇿ܠDndʇw8?{)!^x7/.7o{$):BZ1wATvM̙HxJyi`)ݼo;7Wyl?|d{@llE||,pϪY\WסtN+46yk*gxG~h_H7]*?G4LrYr~^c-G#;<@Qkʰ}r\o4^_@/FC)F@)f{@[uLvF ˋu>x&Q nK roNB`f.S[51q̜-+ &) x)P;K5;_ˀ?Ip-`WjW 8Zm:Xfj፩br}9L,lCٴe|>E?zc9@)ڴE$ ]C{?=kxD|bF(x|i-'9ydE)`m6`E{&ʃpy]acqr Y_o۳+QQp\S1mT*.L/f/^ /1LYJ]ZuG2\59Յ؉b.,8&ZX˱48>\gox`sNXJ,K |\T!i7VȄrH]l51&"* ٬D`nbmDayUB<0vXfؽy-X*DoqϨ۱.69 u""ˉA8a ިa_"rڛD,{ZAC@. rX,prY^`S[;(Vp]ȅsͫ+).ni ׋Z_f똹G܌g1DH|3i=$yS䢥C~n6%s1 >*iho+.g2ʠHHLPS)!)[6hRj\4Ye]Jx{c 06U\#d} yMJ>C8z{:bEr8r0j]*MCYvG=- Xt`DsCt</jxc-!cbu/rU(I@@a #BszH!xύI;yropm l4i9#lR>K֖c,zgS9.  셻(.-r72\B\ݍ%ҴA&-\ Y(W[9IENDB`gambas-3.16.3/app/examples/Games/BeastScroll/bgd3_sol1.png000066400000000000000000000234121411575327000231770ustar00rootroot00000000000000PNG  IHDR $y&IDATx}K$KjսN ppƻnvUe0ssyDR2n0(hU cM~a. b d])WPa,XwuʶNӆәs2!"4"_pC JSv Hq?ݱDZa sX E A K0[@ < ϹEU>XT@Z6tx<>mGkaΉjϴ@=R. qvu2m0DD _Z8O0UT7VJR(,13t֜9x}cU 1/Ť y;cYlթ*1eki( 94 ʜK-{g[J֊^.z髆=u2(M \<ɹ S,8wUrCUpu<TK~?xoYL?뉉;HPPؚRz?xcu\p zえ BXkY of|Q-%˔ 0L[{ ZC[`NYΦ<IC @ܘ>o `0$$3LpJŹ-Ub!-lR_TIWj)xDWA=$i_"E`Yk1ǻp_(v.D$>w]x>V98h ]@#ۦTU9_)R h¯D$J&&f[VO1/),@Z(Eҟg>W@QW&]ي8' RZ }WI\o< T gھqSWa!RpTOw/ԌeHB,jq6C)9Ku,jj '.\ LH" heXN`X[eNUekBUaq. AX#D2s lŧhgEaΎyE>'Ue=E6L"ޫ֍Z+RJڃn4mle1E7f;2|0_ɣl`'l9%)|$$&u 㥽Pz;_uAɠ63L-m"bdߔ<\,`*`iH :d"-Ɔ|:1Iq[0l-NHE"Fm9a)]` ϐMO$ I 0"o>E;8 RrJQkcZ? "F*EQ?H%԰+" ]gap:2  7sR`K2Px nngU2z U#Ofا!(kE_~m|nyo\&TU YND.{ɄI|eиdD-W) RXK;3M+~}h~?+xCޅAثPx#Y`a:&h& Q/Lь nQfX=Quւ*ίl|m$D"Z31En?ԍ>1FכZM4%*CFI>)L[D>o+ogD\Z80[1']|q"GvR/>?*5 yU*qވpJ2߿(wA d u-bV9?>i i_=# }"BR(`6GTkVc ضɜUl6RJJI?'45mњP[f8H|tdll ZγӏIkVAEJ'SXlAJ&ɣ+kuX̹2Z+l59ϨT@BTc cGul;q)+sZc(f{yJx0f Q#`\31jUV85J% 3+{HlQB*{M)BƾlƜ;MJq~sZ_AjUV2Z*V:<wOAjW}0ΉqWa^x'zp1R { aF m .7*σ9'l_ǃmbޓu̾xc7\K9cmmk1XӨREn<~ 9(m c`3}P$gI?&~W`tz+}M*}M9JߟlR\)̹(B`Vb#(9q2AEm;e{GZl,")I98/j/pĥ9D`kR+Zl[e6J k/|S'!~bDqck̥XT\?gӨ{e?UhUE )|753(E؛R[Z'E`-ߧa'@!GښrIU{C4:4LF59[c6z\m%LT45#QJV])EQy%ZdޱL4X1؋,u[':Az(JVWŹڨZ/;Vef7MyfͅʶY'OZh7f84ض j߸mkZcR TUj:A)Dž+z_DUO.Z-#î53%FsI?WB;dEi'bPZOvT9N|d.bBMh.kY`Kp@E`"t9Xt)589`m Ut5۳d-`f^ÌgToXE/ŏ5;A-":'X؊JNl8os]EvYgIj0MX?s4?8C :'ЄZ*Nؙe+ `Li`(*50ڂ+Z9|kfud K?XKYuNT֖(v@<̴E]ac1dCJvj|aW<lIhxe'yY8&ބʆu'p5cD/FgM#S]5/VBu@L1Gke,x|\?}r<'mgaNA#ØÙ3hxKP6(jOX72ݰLP9O6N)ʲAj ?O[c"Uax-̱dn:0#&1'(j1`Me f^6k< ;XY ~2{Kda>cV+X1ER](EZ?1oY-ڒ;,7 {fWre5m3csѓ Ff#Z4tEJ("lIܜNJ B9* x2&.\U@zxh,E||Xː3U G+O=K}:kF+%٘ͩݡAպXzsG4h ?g'|~ zf sg"PҚ8TBJm,Z=<8` __9 vԚ#*t/V 9cD@жvY&VU\@@6q߿.i<45`ߕ_;g4г^"Phc z`ɑߪP619R~ Ӷn7vX~7FZӛs7~!;?H$%y5dj c_Qd녟}˄~K`z~{%dh>y^WBryYZ k}g[@Y#=gϼgwZ`KįKj5̝~\;) 2~-m 0}a?k9S+wA<|QZ_5 ȅÖk+^3svg Bb<$?iD}p>iABld}DGsaiG!S-س@/B0#51zV3aآ1'}xdVǰ횑@x 1F ۂ1bbT=ׂoD͈&lr~ŀ91ֺcuu v)3/ZRTXs17NjP 0v%t-ƬizJ`^y?ض_%sڽHsᧈ:ɺ.~_jnP˜<]e9Szd/,§(@E5ڠ}m9~chW[i }?'>oV*dWClm&9Ž@?ֲ/!بyf,` _+.k5jm,3b|[d̼DɫRr]˱os}.pSv?BZïL֡ZA JꁔQ-q?떿PX=z竭?6JmQѝ{m>sEw]xSYdul.,sOv~kMFm<`]#S f~oq]OUyowzzMg[ϟ_Ck-ZF_*3Q¬=q2@l ?oZSVsl/5;xWϥm FA< +vKP[Np_ϡ9v ݦHj l[$ y79qv^P;_7"=Rr;wub/osE֚_<[PH^ղ< \p%)כ^P*,SW-̤a?/=ӣ7U}.*vmAㅭ!ytGXM-|~lV^[wא]#*~_w|ψm+^ƽ|m1?ϟIvu7Q){b7 y+qwڌʳkbwAUz_#ZWZ CHTTz7GVi3Q9xfQZۢ Jq]pc7\}%WiW,Ըől3E5Y8'U^ eHJAW\b܊Ssc5ΥHA?29 kg֒g?sk?-HA +s1o9wi9hl. qd_a'~3ئ]ɜXцX:yy``gY@3+_sX5 KcTM]`2V@94ԛY|ԖSLbkղk^qr%-qHRݘ6l ~H261gv˂wן`f]\)}qj_ϙL`E_\llKwYۇc Fg$[^aN711+h 1C^]y4h-|e)!j3 Q@4x5#\ ?m+rE2wݏbhUkl]~Dcƺ9 vfwar1:Er߳9֊%c!ۦ[+_rOΜhgOgF#l-GJjG-i7S:Cc4 _}SD`qj\'.^GdT-=3bt'm03Fq(%u݌&KTWK#8V3(D_;Fo@ņnEќ=NO6 =?3f%[{m7~z=W3=lcN`5e-*g,{sw)\Nj9E/YIu=՜Q%&$=o1Y?_pWS7녟Q~{zۋՖ뾽27k Jڟ3%D Ǣ-EV/btob炭Z?Pkn%ǵKϣ FcHL=);6JIENDB`gambas-3.16.3/app/examples/Games/BeastScroll/bgd4_sol2.png000066400000000000000000000227041411575327000232040ustar00rootroot00000000000000PNG  IHDR_%IDATx}[亲 2{_Oa\=1AL>T ՙҊE2$?yprbLfzekˇ|8( "XNO1B @$O J)1'`^BpșWs9dÀe!rn{czI^Y=p~!89KIH+CD@̋1F, rX9كHP/gN~FJ %<{ Ǐ`]{rEp>;8u ?dfφ4CiB) @񇀔 rtgK7cs!0a2\!B?GWz`(?Ν=~fsh|(~{o&N rF? LiwS~yzUOcoscn:u]VIy?^ qwůgaxOniF? '+no{ڟ5˜v"s ~k4πwar ~r"ǤwP{W aINg lsU?,pbr"x#cb_4UӴ<^v??1OXrfSm1N~ ֏5C8 qºO}!FsD!T"9AcF\'})fL"?7Rb̳@@B 3R4MA(H *@C+֕5=@3<_7kpŘ`| -~xKI#@ܢD)$i2q-I|R܆`ThFtDD뚰cj 𗄒"4).@N@ t:c,(A =!3_1ʿa/ޛӿߊ3p:͘ 9CS3Sw;㜑VA|F1?78O? ~qrĨ?x!7/Ǜ~3M~ЏM?owp'Oÿ+Zo#[^?gk|;4jL`fts? ݴ_v|O?: y8 8"7/ ԿGt3?5?m}GX^sowociQ?\pe"M{Yy7M%3=<먈׌` ȅꄜC.)%XW΄ZXY\W6M 1= F 2O1&e*Ҁ wy?{N3Jɸ ,sI(y42 \5~Lʿ⚐(V(`ǔ^3291U7?N38+[9UYgf1#傔1iͨ42[_׫ֹO~F/Kʹ>_X0 3$@ 3D_OGWE/eEj'' '{}5~w˿Rr_884+lQWhO<?CKV>J\rHY6Y[) hoO?w_kD⿍_-cY KO~SisAJnh'v6_6k;1\N?yο<f[N̂56s"kvsW4|şdk"OJq~?y?yGL"?\c_ڟ]f8(|^\T#B?fdW_^.[7Y4f ?.4,Ř 8Ȧ " gPZFp'̳Nd#*礔֛zˤ[9kOP^鄸&|\:re +Tu冷F)?:Q?@֣W?,ˤk;q8ᴜc?̋_sz48D5r0߻^JKCR|\ D1^.+/˄ykkE+IV?g.]PO,C)ǭ~>>7ȸ^,K @hQשYutG??~LK?))%|\R 9ߦltR^8^?\ՏGKDhãg?-S^kFHE[̭>.~:h'v/}rDH1hKOߎ:i1_kee M?:Kšt*%opilM_y,~/~fϧoQ?23^Ijg\/_MϠRnw|ƺ>'f=~Yl6WgY׵$w֗YIQ#YZ_ئ3MwL5E*X uY;,v!dIDJQU)_6buO)h|3,z:JR`(2~Y+ȉwcYRXF◁Kex/KDID>鿥#nTvAha$|yfC3<oRПͫ&'ܦu6,:cgelWMdΡ=#kf~O:Bf?iNgI9kJ>t[qrHh>2꿾*A?Sf|zYQm&l?aJT~FOfejۑ˰WR6=s?}_bs7/Ygߊa}y#ϼLZ;Yej4=Sf J{w&lۯut+~v}b^\dQ? i"Z37 <@Vht_ S4i>So1eB_̮ko_o &L2q΁>cuQϿxF7$(@4Cd0MXtK?# Cc8- RJR@HܺPw?u Xv冟3?3עӢE?k~hڱ @98fN'tT=g8ME2 m94A{psC=S.A>F52[[\o57Z+LbO~_ e.~C_?F?w?Ns=ufj>s>oqz?+c5{g?G״НA̛}?GWk{*7gϿAX??9{hf#_ԗXk<N@B#iChPEb], Al"'n#Sd>;kt:^5 4Yk7G9`?zL2?C7z<ԏ`٥cH1+##{"?π__~v4g[$V?hV^wڬYZ'V4!~^Vب?LƎU??fr;ww=t??^WCN"r#w3{~~x@7)wp$ەa۴$-VV'?M%&*A3'ƔM,.[aWT 9 ء./j6&R_M5in>fUiUDYq`c( BC6¨ M׎;]ncL*{ls]9Zoŵhy;)61^9֏oSV ?>cumv~1 l_68S݃&Ix5~o_^;T}sHy__ ¤u N4TstW?f25@\Yu]KC~<ѿp c-=̐={O\38Wc:jمi ƿh6U?cg?yGvJ >g߳p3oۯy)~|Rb_?|H?5/~=Q?8L~CZ3Q=t%p&*ؖC̺a!UY |3qHyOAw0^{GȱAU jǁkv/")Q"1v,XQC/eI;ryk{g5qRXlE<%D)Uy?;hȓ\Soe mۋu`hkIDAVᏺr;̿;4ƠG7^,L/?C1}V__7_6Ŀ !WywĿmb6yeyQ?CLTß",x\S.~! ݧ08{w]KfIPP ꗬv@ZJԗַ87Y P;%Ϛlh;]7Ŕӵ(|+;e/6;ךƊ? x'E\O{unRaG|G$~Pi˾# ⱦh#uwޫ6xMK?j??^M{ϘZ+wn|6nw/iI$t#חϘٷu93ς׿l ?m3U]tw?+v} ?'[Ll?#e/Ovh3&j3')8RoY\Zotvc$-UBѽ=>D63@N` p1Si6b3^Z4/Np:I SDfrX7GͳdECg[r+DX&aBM!]ytX0b̥*o89MRkSӤnbYGSOCG!m}9'&4/D^sz*"/~SY±\>~Dj_ߺ8mǭ;q?3s^??~ivT?sT)?=linNLA?y3aYNԧS蹎==<õ@"֫m'o1d'@@qsAf.c'ApFWF=!>/&d gζG3e@1~e.< cp̈]P#cد[Uaf\5-B;x+<٦M)-7mm˿/GX}E.+ Oտd:O+ ] 9?߲:?l=?~( % <-z ??˯o`?9iM?_jO}ɮ_R ܏?,(8Wf '%(Q~0]7M}{a@M]@-Jv_+:2) Hed ZAږE#Yk-陓tºFïkiMe9?hZpgkAK'/![D -[,N ֊u&/ojHxg+^cs(YkY=cĿ,'Ob\fYGo;5ߏ!7445qUy^,SՊ<+ͮdG3yS eA^@g}1I33{`]n\GLCEyVᗅb]'K=T!D0d"JXofuUlTT k6V4q췛M~g `T ̖MhUtE3 ~J(+-" > Šp릠#d=o{Qiwo7?=f<ƿfP\tz[+_oxGt?Boc#<y#/!b^oיϷ3xN+9%1# $^tCK"uͭ:VuتG7 )%Q{ʞ踃 Ӥg1:C$9mzu?]U@]c}Ω뼹&[WO""޹#;؄PG+bjjx<ƭ<)51=~]|2F\ mO!$o,M_~51򏿀gz/A4+1wBp$z? o韆1~1'? :6$pUu Q? JIm!=jY{ 7uM.A -BF۩ցt5YGHxc&hU7Pgc6$%AZ%#քѣQѳCPThqqY7u߯7k:#g)Ք9;xllŨ;+ho74[UN9ZԻq@v."(%by?Et#y !13tauL"u[bJL}^kآˆ)yGt9ۑӤ+USl41ozFg{̘5ښ:׍x 9kIDATxr$9n?,ifc꿫׏`~3{ۭ$ 2J*ukZn0[LE L  5JW` B˥b 3N{.:$$@a )s Hiaf3PdKv,pZqu]Xsƹv6q$?k)u, *:K2ѭcdj87 ?q4B.pZbSfI:O@Y>)p~j/ 4.&(Kt@cA:0fs!㦩-"`L$DeY3Ҧ-}ߑq͕ЯjNJ.Tke3׵^eYAu78+ 7X?k$c=iw( uTסU+Ĥ 3E5kHJtR*`|p~2R9y"6BwWD$TnVe> eqO$0bǸedW-AX?d__۹1Wo5Zצ[֦"N?_A!"!&PxlpNhK9pZӪ&$8=@a] rUК[)~Ɲf6+V7L]ܵCHId@|23ۮv+Z1Ed,duc`j/b`sGr[W;?581{ 9Eh.Y K &ſLVYJDhUTݐBZi:PUHvmV/I/c|!N@"vg|eXgn! 2,a1ZMitJe^m[ɷ;|7"),dOBBߌ[ yffΘA3ߝA$!*bN3Xv7 RcӰ?`aҹL 7O`DIu!q.:v 2&r".<7Qa&n@RF.VV(`=eRCI7<7C=sw8߯?9YFiCdvZum)J^ 9Aoŭ<%QJfRԮ<} ~yF=+2βM1` ݖnlzfM;VU?7_!/֔6rJzWj=~DBk6\-J7eI,RuSꁞ~>nzGgBtjv/ ,E\1HdֆG*uh%QLeWH?09ˈ<(%SFmY#غ<.g%v`&~X"&zﻢx.H ]m3ZuJz Σ(R2b* 9?3n8~W$eL:j#÷BJetsuXɠ,bOg,#/0ܨoIY0A"{@q;$$j̜GRhцb͝HO8f]3Mbw 5e Kl F\TSFrt5= 5+:?ʶ [u[m%b]߲B]6\`j1-A# ΩpZ魺%ၥ@A9 p>R S&DJ\yugF0+jݳxI32v==2TrYyx(\hop KIZ|}aieY3>mɕA_+ z_,ţ: Qk8}eg. w5N8?b]$9ًL/͏e4V4c8/)PO նXJlͰMSjmL'lMѹ[< v=/m\nslHdڻWDFյgskp~jl~>;}zP!g_@3Y2ݔ66лql\6w_?A,B.#VwH"Qu\yn8eNA??nu]q˥һyٿZS>wJcC; bG`.܍Zu_;?nオ]nџ$aXbӝsy#N xJP鴰. U.7Asz,l-=:oCĭBBOyftC;'BCrdPºh7R#)1o?]׶']%(hWjG67N?^ql,u͈D⨓}$).qP,Yx`j&du;ԇT2) TDM٪FTmnkL%1qMY)u1JVWGVLFmU1N$KL37YwnwQ<P?. ÿIɏħ| =~}c ۽|atZqn8yjdeVUߵ$,4k| e!pyRCymg(K?J.I3~ЃO_?fHy7{ [w.[}6GaLQFEv)5ln#(t=Pk7%D^MK~Oc"ui%1q{ڇl[%WθwWvW[+?Aޔ3y){kʑObqX[#do;t~ZGvp7/x==|w/{ÄgmiiR1{8?Y{ 8KƫVfEuN3:_Ƽguf=o*wy!vi?wW`z>?+}cf; (oҞ5->e,$u1P<|Zi<.=Tr^#q? aW3vȪIصЋ1z}Rd챽bKr"im!k3]~&?ߛ Ws|va3kf/*"/~6?07iw{WIoRr\2x˜k.@ ZGЂ;:-5d}YIENDB`gambas-3.16.3/app/examples/Games/BeastScroll/fireworks.png000066400000000000000000001331661411575327000234450ustar00rootroot00000000000000PNG  IHDR -!gAMA asRGB pHYs+PLTELiqXC8S9-OC64LGGLGF#"#SC@MFF\=3_TJI2m#112OGD,9MFFX '{! =>BKFF&](! NEDLFF(y Z xE1 KIJ*u LFF'.t^[XTbB» LFF2911)-/(|ww%5(7 :*&23 ,A ! :"0).7,b]^'+,) $\>FfPSktpWVvY`XQR%; U<: zdj65&eLG E')plkq `DS&4P-3@-&mBH37sSJ=^15!a`Awsng<o%6uYke@5O5DkQdrHV,$qicj2 >5*B";!A%6!-STc #Q(v|HA M 80AE.wdXwfyUFH82v5#/;1;5[I?M-V#;\mDFQ/`ZCAjnA-;d,e_M(s^YQc7)\IN-VTU;yL9xh9(SXoO{MBVo&,q6=^@X3|}lv|OF>}tJ!hok}aC_cvyr˓V:̓cȨ ޿穇ɍ7E4tRNS1Dú({:|kdcPQfԙޱ沛syY8o4 IDATxke*Llh8}EB C+bYK/>"ᢗ*5[C04/W*[h^,3?}GcM<99sWSǟ(ǀ?    x(kM|7Փۯ"w66R`QG .JT՗e-{YgtFo﹭#wؓhh9}~!̒p܃{cRPg(2Ӎ>0$Ba6KR!Di)u584PAA(U~$I- 8㲢 Y}0D}wԵM!FT"*HpTk|fzVi/J.jeѾFC ѣ@,H6ڬ -?$&F7Ӝ5'yţibh$n}!Ԍ ϕU-;? 9 W{P9s=r͹kzF;TErj\E._, ΈDjt\V>ps-r|c}\rdpӋp(ĝNgh#f} ˸h6̘j{wU]~7̙gĂ`5"R~41ań ^7%;  eDn*`œ//mwr-eR[R%M@D|T7C7ئeI{P¹vx) rejj _ޓZI+\PvYt=d,Lq^G[$aEjh:c8u1_l}]Ēz̎$MW3,%7Mְp 3CO z$ҍ'[=wU㚜_IN‘m ;fc0"J%?<~Ҡ'tv0]?*@ Bv;E`q8(rPB"rbK*y6qno0f???.V|g,#ƖU*I_]\lmW%IVm[RZ-^Lg~&PMrR T2R0T2ǒQ7Gȴrމd,5Dz7W쒅n,YO8۸3|tI{k7pIō۷cNOb])i1愋ka31sNI{M%PnqGp5lf1VG=e$&y,//ƌ 9nn:z)}G"a5K~o$vh+YLKFZ8Xy"N&c6UwٳOwlˎ K0 rz\ps1E);[MȔen2abik@x@G&mtOTd̀\f֧/~v>ɏ%Wxeew$è݆)Ep#ORd.кoa RLfvx-)q}k;r_l6_#"CgO^u]La]O4C4LQYӴ2H'RoTE̊yT.@R|qah4#6DhCoP;`i{ʳ,wT2fdG-ӬvO0]P[:: qc*Գ@[2<3wDc0z$֓,mF?~pF/_,lܱf=0`s@C ~ÓVcL;FcײQ* {p3[m]X!Qq'ZP17ߟ<'B6NۥZOl^d#)\&\=ȃs٨Qƍ0!$,%`bV2^dvh2ƽCEtwC1Uⷯ~>!˹i*R?9_f2뢪 XVEST$j /8B* FS;k-˸e~x#F 6TD`x3yV 9(#$)g$66PŝuZQ2/9ΗIc @(j C0Y%fWF̬/ 7w-?L5Th>lszzgY0Pv;[B(Wڕr>ܼw`P!q\͢\*sZ $$3fH1ٌfTebb 9Sy V:wAGfP# `>d;dɗr{)wMU"Owd3-K8|8}_dqqXD,JkĻ&jw\G$)Yr73MU  lX(ahΎ=2[wm9ځP6ƻp\P¥_'>TX&'DLEy50 EmoNv #JaLpJ4K dg{B5}Kϻ0R׷j20,z Y$'eS ~YQQΌwkࣲܘZ˼sv0Tn!DD@Aܻ29ЭLjB,Ȇ|>\._әZ<tEa{k5c7κ:eƐUc//iS˜TzPvCXד%;t}fVH0?8}"f.BHrMc7c"GwS]4AoeZ=_=zmk6;oDZ@b ٻ}]Pn9QDmM489W< @O fRnN1R.Hɦ-? g4AN3E^iRőM8d VR(1ts[SId7 T}ELgB8NgfRdai:,7?M77F< FP(iЗR:vupe$$3P*F:Kw_nCco~{tvTc\IHmR /& (7cjtn}%m@ :0{ )IcJ6`*w4Cof"H}vCMfa+ԦRbݔq"\it(gK 2TwOXtS+$mkUьMyb'ؿq!"d Yǥlޚ*HD6w|5N_SкQ(QrШ"kyrd|h,&*MtʭR *_muuXm_v툸_E ~q.!J,~խm.63s5OZ'J23+`/C\4nA_0$GA#ֽ:Yjc A… jr t:-·tH:MK(K|ټ+GRr\GiIUn9)u7$}dd8,&H, `y``  oeNHrVQ %V|,6`l7DmX5';Z- ܶ #0va 1UA%r;mW|@ ,wb:Bt $Er3bh]-Ϣ nژ MU7(q<'Oj\ꌖ{yaPVBQ+xwg\ joX~) DjnX7%mniOc NԻ]v wxGHOG!̲<::z DLjHC ev\,z"X,`Ea6Vc:o@nL_ׅER1>;m1ybafǰ)~hfx-`azT7)}~ed(˺Yò>9{蒴}Uc#n9e'5c}/{qqpW9ًkLO_FlQJ U&TuuKZ[NUc7͖&wN/UOv;p:.CA0 a 7&ˬFĬ>?3qDR68Q?kä [6ѷQW.5zRfZxuMgU%*WZmq"Z/8B\m RP-vP#`  nX #!C:at67i͢Ýv`æePI/O{d#ч'59{YS&D}NZPl4?{/kr [~5,[)RܪE8`[s N7L.҆*W g+y`i.qu(gPJO;zc(n7_˓IfsUsx\&k鯶2#2df%[ɓdɓ×w2o^)ʽPEejřggtޫDX lN3P [t0x8?w.Xp7߿PqP+wz|;حA `?ߚ>[ .|xE(^F$~%S^oOo;61>=ޞ-91k^9;0f@o/`Zsn?88z Gh`f)9Dy 0;˿)σk > / }g7ݻM_76mjjxkvM`Z>)k\.8(H0<f?qڻdR)JVf4BPRVy_U*/!"D"av;}/]JEA*8G\dz BF +t#S7Ǵs 0Hqg>Mӆ≆Y>)♘蛺zءX茠iROQ>Jx 0B4 *6Ƙz;e #F!C$RHix9H"I=IFKBB$  !I>w.5baSey}H )>w-|g"`+ @4K$qJp-\r/sI&d2IFd cDHP7!]%-,Mdu)pc;jiNBP9r̗39g!7m nxAZʵ,n^Ql*I$iUAV5U5mҫD+w\ 0I@A5ݓHbd\K__AHFZ2VVRR0>,W Ajz/[XUn'qJ.^aB8_ZXѲYPRrZ$XB߫׍O0lZ,a谑-}cNDwKOBñW ֝(mooڠ+371DzuJI k[[O=ytţGupիZ.x'''@W8O8=hyOW.]4aLvNQ޸l$M 3ɬWJRPjl XC G{HptwVk4v;5h6?8'ZZ7_v(o7vFQnwMn'  ƿK4! /JQ(P0A@E;Ur2SN) CfO06腉1ꢓ`Kƚ IDATNR:p/ĻW/pD4iZ$T6A@]W™U(?s3ʽ񔽸γ$wLn 5LgZGgA%WLHV$`ܩrHaL JTzuVx&mꮻ.٭$S|m(˦BZi&e:~S[yxfҖQBV> ,DArؼ%L dWL~CHAޗ&q)u, a%m1PZEEBsq󉑐T?8kf._dFwJM_.}Q]s0&&{2~PP4K:kvʇXFFO WL6KwTnM;A`&cJ]p:e|_ 8BGJX;*p7L{vf|=>S'_ Yzo5cx^sw)]p0Gw}U׮^>o,I;'`M(qs}pzN&Bz2-7Δh&a혽w>ٜn9lj#fX*``ϰ02ZԸ˒4j ?(V-T*[Fcc7iRϳ2 )$zzN V d2t #:ld̈RIU]{N(+wƍ߽?͛wUia'LQUAoX*mՖdv6Ԝ:'gF$0x:0:pǣ@4rrpPW$ͭ0W^7!n@%6 ũ^W9l?TU/ Ӏm`t m1JsC75Ҏm?p7q#! ߛCѰ LL&~u{j '@rGl$[bZ# U]WZ5T,"W5V_+t^-735^ 6To.$5ZJss ZIN-Iyՠ"daA)# ӆ]E!,MzBVx^mmɟk)/ . ifX+[Zxn"8MpvA8`8Nc^b,@!@%{C<^ Fh7 ><ր]X )0,~gZdpKG0IVI"DL|k xXdvr&'c[Ad & $C|%\N5QP2T?uWH'o=ݡ<6%Bu+OH ~=c@u2҄}U]ƆgFЗ&;sqhJ\[|JzEu ,϶A~ok2¦!9.\~!e YADpg9vOԩ%G( ? '&0Eijl%NYWa0[)%jY.LrQnF rf}?0q@9 P#$XvJu C` =yX}1!^qjvt1S5yI)zjKf(#鴜XpHd'+Ať)*J Ti~GGMWR=KGd`dm&ƦʲxHSC*1azo9z O3c)xC_ e(q•`d;1Ɗ$$E)˲LcavF8YD n(t"߲T:p>Sn(TnOw;!+龌x9cfBn\,]Ŷ1Pֈz&o^<3eJ6B4>e ]jdRoZSQlX[Ǫ +$ {Vyi:0eYγ 5Uźv;?hl:ca&DL }Ifu"˃[9uQ#̋npsaFF;t9TrNkjmܽܽÇ0lo77NZ:6mT VU5"|}gu"`&C \AS368 CFvzU"2v z792X*Yiy7St9}|kTFPIo%X>揄YE СcTeբZmhhZj@'!/g5޿I&vy6D$2q,@ѭ_Z?mNd ^~X]⋿<o;;T,vމ bښp{OlqqqD8{2WN$޼=Iu-wىIj1m-+եk%ȪN|u6z"{q&RyąB#9hP/qz^3)[y(BոjF^ (ry<9>1#qô]?א(&Geꢁ~LS5 ~F~ւ_X1oSK1K#k+ղH̎C Y-l7-`;Z)8*ID~W;m^Ś~<#=}Рخ J0=G.1h`t,D7{9岙 ̨*M}r\G;1;`\Mp@&y }~4l%{kS ۮ$xu>;#ލ=09Er\73jID}拃}_`s݂kЏdhP^۶J ff v´O8v󬗒eyϕ$oB㍖KIrYpVv>!E !%A)dƏI.\lgj]th-a17lSξ΃ (@E;DDݻ[O^_wo}6芭4~JW3X,\k'02 @EѦ?#~gMi;$$yB}wr./&qC6rV?[I&@#BV%-F$ Ptl8[L(YXff>4M0pA _oLoLP Ϫ,\?9-fPW%ëvLʤ?T.RdE7bQbq lͶ%anNa_{5'|}R(Nb 8듓ߊIF!K];_- ilGS7}VSsrNEV8U<"/l^iq̶D%<`@-mCօ_YGsp= >Q%:Lk1Sja%@YI`j3].bN8H&W%A__FgTO6=K n>td8ON?-y6*^aeP%ɠ ws,=ߔ}YѧZmw,|^ v ~؃gq7fݱ^4;;BgGsh|Bm3pw)ݟݜzЩj =)]8ـtnvF0ㅀqXr.XX?O$$ Iy8L=k-l>ȱpo[ÑH$NP^XROu-|$Z1TUizah,V x˛*BqN;m~䬝ٶӠgSzSVa2wRy3̭ g^>EYxp,ߊy 0'aH>| 9Í­r"2[*%ERa%ȲzVtڐ^ǣЮTuWՁW1ƺ\./z8@GuL0PZ58'NCbo :Å<^KS,6Rb{[ Snw z l4i·=p h#zMJ'g?&j>rj(w/xA3{FM"C34 &6^Jq{>קF֣Y˅B8_{{C`B+1oO5_L!,zW~wf"02G,Z]zkOc0NkZo\F>r@VC]^{ ]U+K--//omS066TǏ}ݛZn^H,(f'r IFޠ}UQC|i[Zm)1~$;Bs6K,<32 /42%?t޿N LpHJj̿:e1kهۃ%g`#$f2&2 rwvk>oGX>!XT^a(QmHCfJg3F#NZTA'#3"Z vz2txifJ@ȕ9[8'8- 9P0G:`)[ +s"II D5󔊥%%\MrQfl Q )dn̩q۝٠B}P ٳƓ'yH_~y>v 6ͻcLwp<`}$r0ST'NAQDKKK6%Q\WHSc: ΍bàqn;?7=ݹfzW@0{_-ybaNiiC{D0 !%akj'-OO\mI. #zC.4v`R}8afH2C2cDMM% fϘ Aqm̜H76$uwr B܉x{oK? D]1g}{_7=.D$9=JOX0 {7fan_SJ4 ~\1gaMa'E;fѯ.@`[㛠NDzeۦ՚j ZW\N@0PAnGDz3wx] 3n9w!$HIW #(k\oy>&FЛYɕyQ`PRI3RC׀%dOAkt .P+۾d NzQ[keG]{M."SF$)'™sA}-d ewg/2zFG/%OP;Nl$IuezGF6"y>θm.? Bm72Q&Wr!1={Z(kH`(Xn"p( ˪$T{b; 1 Irbke>Jg}]u"lj3֨LXp bF_FX_F#0*);ϭVBk\l9{<Bex睞kBao:}7nuw~ŋS ,1e;)KBh<\?KeUQq1 ~@] @L]Էto>i6u" Qy^/˨##Ն\t*2,WgvRcAo"QAzd#}arq8P`*y'SeeKetM f LJl?Q]M>ڻ(#uǴҝv־iaoNQN*rk:jtp[(<߯a`?d74 "؛G]c>p R.&4r e4FXz%XT<e*f9Gh7d6֞Lf&QxiʃTb0m&ѹ90Bf L?soTFe3^;=p{ˆ*˰ h*!fy 1+Ф{$E A g"IHd0tzR{E  Ee,;sv{#i+,Je.,*+ߣ;uam$H kB[Yz p3߾z;:m#&H =/ a:Hv2zeIe "V!n4^J*"\X k5ԭ-$Kb; ˋ @]za \ 4[ ~ʓ}5IT2ab@laٜ PFIC Us솗 _=HˍxKc1=8,Yϣ!n$}vzL.znRmY*0+oWD$ԓ8NFч >߀wbG-vBotc"I}^@ >f=vWVtb4JP h0VMaI:I?=«\5׷ᵀ.yAKlT*"}hL7A8SQ%yԉ9YKz.}f0A2|!KEq; u8Q%wp LnTXI'ĦT(A're@?]ogmjӮXRH٧6}ۇҀad0 `lcb{PǬASO<$X㡲e 8"kKtppH㍄e9"Jஔ(~Է_*_`{νqPȈHB/H ts2jEVyVm%QI"_-1$n?vXgY[v$_J=AGb/gQPp4VNT\(ӢEKSw* [,_\JhE ,ӝ^1Iwa@:J]ݻέ+g~>xb1]QɲR7 00.uW[BOm*#[v *Y )e/ wc*َ]ÿ$ຂsf;92u۔!|V:kpNCxGQNs?IUgڮW|& p%Jk:u:s##FeۆV&'҇QXboQ "˶ZJ?{f@Sz!b7ɴYAy 2t"[LO ݮnLHU-O-{E* `4exff<գ!VxO?snGWSXؐH$Ŀ%@5Y UnP lQ`@ V?PSs;G~fj њ}ks;+,ϖJ 377G%4v8zZ 58 d dr nv>~GxEk`<*Ħ(vܨth)Mg֩øcf720 f5tBѮSD:"gb'O&ԮPKeͰE ub8J &\i^\тe~M }naR! #+3G~72b])N)RGd0 Lo!bY>;HѨ/+"Amf6#*WFjŨ.r\,fn.NO]=04dz!b@`e7ᙬIТ܎:ܠ$& 9_'#IƨAͷB7sox`O"sc䭭,1ts|x[ƚjGG2O3[58P| 6h/"_(ij4;عQb]*BQM:>4B Ц9ɯ}'Jc9̠OPWG~s䧧?- L@p4nғstRP.|377GL7s,#@BQf흽l%L5=1ji}8ژ^Z[+y 8yިZ^&xC 13Y^fJUiRaX^D>0xgҥqb,Zho,[Ք=f7}P  ̨ʰ ^(JŶ5 9oXH0섃$LZձLc9AXn+=qi5ZCkvynh̤B$o1.鶁wi1jԤN+881w؍pB\:W&O8r6$FLskf˄ȔhkXKԊ?U*C3Gs!QPh SgʳNN4J{3~6h z3DY'B#,@+ۛ-ߘMڱ~dpU@X_uf]jG r3n0nz#ޱS%1ʶ^OqM%p EI\ɞ[ӁP0澩jgC ,KWC҉)xX.7qMȳ2jldةBQ;[ݶ17P=gxu|O4O^Q0zN.&,b`$o/dERHʒ1Vӷn_G=mۃ*Oų.-‰yp /C3).W._yihr1ԘY)JcNn=*,:c2H'oÍ1$Nn}?N{3=ɝU!tvk?qڱkҕʿɻ6+\lԪjU}V?`Ɍf<ۃ-1x I "3"Zm.$[lACW<[%+!/oG[d];9sWW}'_ Myئثx,Ů6;C#==ͮ ZZ< MXhl7*I(TV%h$%_ Anǽ 2L,&$'#w͘^eqv ܾ?YIZ1EP}q 0z_ --=?t2fY4fno/ʏ~X#_!?O4[3!i.rib|ܹhZ%3`:0BQc3֎a!Sy8fP]MT^`_~ո{C]i~s5G Pc#ԵY׃d}uarO6|Ad̳rp('竲HCYՈBF8MzljUY>UI 2.{6O!?_ Y/FN,ϳǏI@jm~pVJMmJO@V4 &x/_ncifÅ[llsKG}*V=$I6L;d=0~(1Z/Qe]$bUKegm ;07v.KKy.|?8 &Ȯ_Q2:[-_͗xI$RJ_W{$!7fA/odpe&l;VZ?;4<3&d:5X֠Dm޳;I'nUΟ{Å?^x/vHPj *תVhI_tH:r (-PNNҷO]Ļ g揹t*W[ ^=37ޞ#'{G35#[ab̷`̽n^Dۭ~&jG$o8&t\>ӓ1:&7_$Ȝ@EP!Ζa7R1m&2nvH'sɇ2C;7)J&MֲEaVXJwb^5te"#BU^M8qԶ)C̵ZmmөZ%T-F B$F!h -6{z{r Zr׍0ja{en={h|שOWjp!o΍/%{,=78;[\x!؍密 g=Ճf!h%̱x7X-b0o۬ն9Q6 ͜?:?K(LݗI6p!o~76X%-ipjE|'.+ǿWWD*EN1˄wBt ܋eʫ HrmtCRg2_Da0}{fݦPd*%ƭrv(<1:8{^sipfoMSO2u9:-A`^Cc#R0 - qeKTLc @DMHݽgf'sQXjTn: =.o}+nh@WK%^ Kʭ $nYUJ!]0Ěbk;o=}u`ՔeEo6 W%'g艐c["̈-Saw-TF**rYV yr:K(ҽ U.VkWs`S+m<ؼsd;Nos=k_?͔xb%]" 9d1q@SC$M!!Tn839@HwT]C]Px}}ZHdM#7Wp}Sv"x k2jM{Ck}W8ZRU4og_~D%lw ª1eUz<vUs%`ɯWL]?$=ՓB:z'.@$u_;O_~wL~ر3_*ݰU)d'o<%qfv63Vk^.]719~oNnlӷ eqdn :J UBAbBo6)5%(b* .U}L|^0p 7,vw^\ϧADAޗEAʖirmTW"ڸ!W% [#i*@tRC6 AMuA\Rq,-!C{Oϥ*1re6O9It ̀P]X-D|լEi]Z63E<722x+U dm1 έ#f}zyq8=\v0G/~>ߗ/>874=_Cs™Lƍ襡3Aʊ )-X'>G: V9R(f-Sqzay1x뼆u }a͢ Hk:A@mՔj%ϼ?m㓺GۃSB=;M۞,@B %jifl7Z-,ήZ'ԓ=0h %]&STHD&}l#5quxӿҰ,߱,"鐻8XD̀ (Z eX NCLqyt\8.@Z~.PLVŷt ip΢ Bx2%Whu&hgg=GhSa߆&1I6 :u6wnvOgЎHpe gZnQOg7{쁩H7r{c_Tww7ֳ/)Dr) J ȋ-F,p4M̳glnyt wcH/9 dnY:Pd!teY$*l~0էǭ^ݻ5C98@șɈQ2e8 gMhŢY)fلhAuYfQC O(ҲX8]ӎtEGXo}4xO$ eU6eN$MIy$<|hSimxr^וpyބ?8}詁y]lJIfqy(*p57w!ẋo3KwBMQE|ӳGB6ώ{l60**[We@|T8^heX :V;:<2X 5dzfıe'n7t7රqc]~#QXa yLRRju$ ZQ׬ҫю`\&Cp)F)P% 1,@SbFl 'f,mr5xj9?:m8`b&FDY*[ '^ ng>2\3BHv^ks~{]ۥz" AOtc^lr!-|<0ZI7èGGJ *J`+DNbGP8/@Ms4RN(9L4< FY @k9(`:qȳ?n}{ymql, "nT IDATŁhp@p50^dZ|‰`*|zJ;/seI[T;:גSRr .u!VI&Rqi9~iR{kt_?9UG=Rb.}v[^(g>MίQEM=ŦF}}vODW@/|SL$̼}S==.>776o\t9}WvsA)@+ M)yYy9O0)q$:m6DVv>N4I~H 8) 7B#빑.ӆ=? Ec]/rcsNG'DOu'mPod'9Yca(n-Cdѫ{#V:3h ƙ Oe\㎤iM>wi4,S)\}qMƬO cg[$hi;c}Ǐ~ti|:nęWn{ȷ?)džnϯZ~v­x 7r7.mmHhB: q\$bMAB6g^u%I*u?ljOr24>'Sjo.6 OMժ~>d Of `0)ljc xQ%vi%燬 ݵ뵛`Y?R9!R_z/Q&y3wý9&QPPd2rtt~Pӯd,z'~_ǵxju"@aAY=$B߯P$Qg+$biUK44,Md+J66n2(dЮDNg u+,T3g' ]kĥ_P%_ ꎒ#_j4@suo~~N͑NㅍңX?u{Yy#>Xٚ39عRH&Oi~Z]3Q& ,[7cfa ,ѕ@ _a0xY80> O:^\E5[D&Ƹ4ek+0ocվgZJڤ333|wg',4 76IP!;z cXz=\0%y3,ksJf] ~wOf:@ܑm06ϕNOiW >;iWW{qh>,:]O5 GpkQ#gL%r'Ns)g"Z7>_ףgc*n#^nDw,{JZW}Z-)\g"-WJS3VinuS'\bֶ~/MnJ#KK{ J*Z-f;dgG \Z9$n 8lݫbIQ\j8f>LiH)\ߒ3E<*FY,~֍U"g_B8o\Vs:0jRLrrZGow,@8g7Жcm\ \/k\0k /@c@~w"Q ~WDJymft0Q.31E_O$]HJ1IWVVW&uXN=J[a(iE/yr8M|7oS_=A^T/쾟M`!}ǸU @B{nYZZN w|ze8|ǚ Fc?3|) m?VᔡuOf7V}D+ D( ju s;d2$I5כwbh'T\ 0ǧk^pxKd>:4H^o2 &u# 0$lNĴ6=]4+6)4|OЅK:;aLJL,Vr”ymM74u낺h٣Ǐ;`PsqAf* &$,#@2Gv'1TG Wl  ,ThfX.N&MHs $IPԠ7Vi=o~3#2\(RT(aoU EFkbqZ9lLȗ3C3 9\gΡQh@7R6 ^EEP j DbUk7l6u&TQ^@ݳa$J ITh4F) P?7㿻N&j5tz kRi%x2.-/)W'Q\#@. G0RLQG~hSzDTwo1/~}~Xn*G{quN%H\xNo>Hj AplϹK&s:1G-9@ƪ}^0~߽%* %qa4¬!1Z5MS N...d8* `F^E: %QtcTAQ.QJ|#xRlqC$!%\Sw1mw\G+iwRnu^&M'cvy! I BBZP M?\KYUҍ[5XŸkUN:>N+F9@Y;y?? ^٩tL ӟH HA@BBD(,DhL(l6 L#Y ITU°BئY]T 1sg 7vP4: >=;ފHS'Aj8J{{wj2jlƱB@^;H**/?X U$tlO `cPR 휸PZ5P4爯ͽ6YԘD1T e"JH1L Hs,x KHBLUC:[`_ިnelf120m559Q<qEA"8rRG (lxEo/MݐɆۧ[ZS >;#̶ڑWSn (8791Cav7 SRQìDp- *X_zŘgfQqawbbo7t5JԷ0Ӱ*5yV3soBӭqUKbXph=9^SMݴ 30A@(ֿm]IS=l,5bҪz BȕQ{xWݶ4A=};kR2Li4Œ\뙌=%9RtJ "jr gg0z&CBm$wi+BD$z^` >I͙X(aK$bM8J+J!?7R! #xRKx6RPbbvt6/QGYҒaŽX̜~E:>ݏ`@f]^k{2 tH%~ڭ9/T|A^tw[ />U?f JRzbRc]}0U=b܎΃KPg(G)o3`_" [UR˳rE>1-j6n1iw5{.4'w(mPY'2 cxXKAJJi RHdqG&]c~V`~X0?$4XF 9kg'/їkiP#zaRjlbgA5c'Jt۠&e[=Y !חgiUNoss_20"YKGԀ،~`=3peBWaw xzðSea+_'0ztTP A 9{6]S1;y56~ 7nCxWΔ A0Ҙ󆊙V `|N=Rn@~W~;ae?n4D CdD# ٤ aK*mCd uחy0$yuEr;zY8lCX Z>-.DE$VF2n)"dJs. =1IFc:pb>cֻMD$/M.p2- _{~緗C0))YMpqmVlu"IV>p$0Y?D%-9( teF$19թ0 6+; ap #}ܱ]:pP xWNN|6=ᨍpulMV>@zvQ;Yt*H8w_#D %b'YsΔ`Phr۝w[݃oU(3ɻ.ac]Uő|+bˌB!r?:eAkKؘ/.d /@F|ͨS =g*1_n^o4 & bPc"murbJ'֓cv>6f6*V)CU"ׅUa?69K ¦þXכr/ 4EYQD1MWXpyݜy<ޭ#Mn7uɖn\Fe[Qku&|i~%7L* Gwۯ$eܑSj9&>v|@2h9NUjK]F"od|75h-0m.O_[.cٟh Z֓)LH fk,?v9JDFB O[.n Apf,ERA= A|ܘjX· 6fJ#2ۯkXW_f>Kz"2)[uߜn\L]ɐi_h

2r`\23WQj9Z7ӱKw&IE3j!yPGY-L$TPk\ϚsϺ$ @ -G;렐EZ(A.(8axi- @*."_4fnLM7oy0IUL Kn%ZgZmJchuc'}HEua|X̀#sdﺔpB+a\X{BOBJ9/P/]A@ٻ&5 (xA KF3L'_,,NA),Dֆ.q#hQ.FEXLi8G.MNĴV6'Jzlyn{}<}=?wF@0:NlĴQc,VVV)^jIwjà8M3v?0|fh9p[wIyImns;뼊F ;\W HsN ohlHcUJ~" wG,s wF4ޞ;:eqޠeP꜕K>= 84Irm6+L`,K7^?y1=xIȮc`R1}zG- ̈́O8 &XE+UЛ)z%a}xKzB`Y 7KV=P`ZpQ[U %#7![]ԒnQP6+Zbӓ$c#50b}R`2]۸Pn$ sZK]+BXyt߿*5Q X#p F##.r# FD3k7kVe2@_x1oTߥyIJ^4Di!C65"M11u#}O Tvd4\)& X!IJ0M?mIg0s;M/F[$0-(G'? oK J:] R#e{߾T$QX 聯ʛk( GjuvNKh?z(ULjhN '/+@Rr-ӠUFf)e}mqS7 ?]]LH֪&HuS*ӆQ[ 33̽1a`l~,A0Nђ(A+hP(D6iWDH X5R*}9~=|s.$vwruj]W ;v V!;c 'a$ ̊1 :L@;qxg%%T="0S+יkF?]o荮߉DX%{92DžEQ-Q`v(oc"wyDϺhIcV;FDۼ,EQp*J=6nr!ڇe(0;*H2Z1=`N.*κ1(}U ߔz>24 NZċi>f8XUЪbQ*>ݦ!/=An"v^qz(L2=+iB=7DmEbʊQ20AbVL[^Sc8\~horƴؠSl#Tbb+5Q{8 {=RCnZ"חlwjtHC6L^xs{\RrqZt`uk8> t8 l46jw6TNQ̟r'$ ̆jMue0Fh30Qb,@KHvq#ұx<}^S@}DDTGj\6/^(悹&GƯ}ޯkX靽 ͭ.}ESوj|+DBC#FЦ ’<_,}ز])+bp./<9ܜгEVYyv죵JUPl˷/x9eBPQuWfPlL[h7*])8 -<|}sdz!b-9&DiTv7odաT-d+y@A'Ðb@Z?)b&L^<3AHˮ\bTDj`#<RSI`<)Y5TMzWEFT[Z+Y,gdR3N1P#q)QZ~zTH\(+Bfp$|/E"ƕb"BZ34[ǵ@JfJE? ry=q^`a)bzA튼#>҈ %cz8wN[^-D Rք"G&qݞ;)P*B `]O4vTQ׬6ONFv-U:9Y:5jq,)d QI O '=](Z$n{?sh_8ҭJmml{TYF7r{1ğ#гe1:qXw ˊ|$ XVk/vxa_HȘ醴߾Sxe?qHRdd>ӎI:hu,wD|KABV$g.=R"&sCX'SIX7~.,%T$Se;B[WlkB ABJcUfUaX:sVȉihLDAK_fgaȾ_dO'2+APnJu4{#Xg6=_5!MT~ItwPq㑰 x}m@fG:V\?̎z@p;>ڗ´W%҂yE@+t6q[oZ lAm?\R&P|Av8o^|3FD`B.J%wibO[WXnk]nM 1J_EY1(tdi0 ec8xCPl Dlo+i8Ay}9NWIjf jR@DHP%&)2%šBYRm_;;h6$q##c[+=|n/\깎R]Frt޳ յ;AN%9Zٵ1V( @gg+vAllf:=`8AS(+1R+/Un `G0RBH̷jL+XG lR \pz~|5uip>^LBh꒲P@:=u>3,]o]n8p]5w @ח-0QSN\ ,a]FN )iAp6 JYC7 @_$8C ʲE533`~X' <,1W "plS30$ڥ.IlJΒi#K3l_\qLVox Uk[8mhtT"pwPaf_KsSB}Z=*k?YƓXa~w6;>Rocvm|$5ɇ0`m3_utO|9$H\2{NAhEBL%9<Ɇ<ӿ>D"M< ML,PB./W76fQ)4MxɦEp[+ ym|go R,SjG`~ޟIC A^gUT^fŚLfc߆ü*G;`25GѺA:Hzd!8"vaaOSv=q+ṙ9L^Cˠd1 }^ceoY:PnȰ:%rI~EUvgҭgç,^mS{yZ*"mku}k:<[^(aòzK3&s,W &( v G^oΦ7% CפFlq+NFe*?/vƢ4, 52tƟQ<:Pxl}}j/ݟ/p~E/x"wЌ[:؋A/nP;wephHO,6<<4 d{a)VE"R q+Kg\Iq'ݑ<C*Ff[XxIJ_;z@j֭[zkT8ix3H+:}jko)Kæ?=FǻE|$CEul9Q-~-4_"^*Չ",ڹs>akkŋNիW/_>H$žI( ?੷'iNOE:T Ҙ" XZݼt0𔊖!DڧF*5v\o.qxةH[t ըTh4.t8w_ 7 `=BfiVI&iD_?L&K<>qH__B&h4VBf$cN`!(f'tIb8’WT:PGtz{_rїq}y7?W>͒j `^h4*V8qMCOWRҠ|Ma BIIl!*\g,pK/n (Ȩ=FQ˓˿`-toxl{Jagj_}==QޤQ (_֞w~wy23LZv؎Rv N&a@Cש}F"=,tnj5h`a1* lȣ!%(`sꞏUH3VWmիWՇ7n8wj{{K/mn:uν{+ƖnӷϘ/@ۗ\yط3yMwޤスO]ۡ~*qpNn|t屟xwtΞxt˝_˟oi"Jd8I? ɷՆp"ġ2ʢZ90:q #]"~vy/d$CJ2[k> O=2drv!2Ɩ 8B x[)z(uBmV/G]+:rAS>b ^.8+.)NtIPWzW&M豅0X9Ex;Q}tq8 ^f$D>= ] zwq,|zs ]ٷl#t!d) i b!(h05bJW*/Bz@'iEHܳ xBVER`a|N|:0NHӮ/4Vm+}]/7 l̗a+w"a_aV39V#Mad)"ⵔQIO#:$sϼwLⶶVo̎W62NƖȁK n[f|;K*mi# U~ޜ >n+(e 0tC, 7gr$(GV-AbV81'@B]\KUs-vcu G޻kc&R42X񑡓ZVJJ{fl9% F12LkɱggFe‹Jv(Q|c>ΤJ[?#1d*s!)NA*1.(M;(j27?-Qo +VҚ`YGݑKf]?U$% w^l rԣ =7#Ӗ-HDO{8DJChmC 7xz[$='"cIDATb-f<שeU ӬPGkbqCT.Q<_ٛE"VVW).{g"i] Qr|"ۘ:;"6U0Ȱj·7Pq@7tjeJtllU>j!9ٸȥkBXǝ] RŜ `..wC'GQ|{ rRHOkZ&bve!TPPڡHRcTI3= `Z.\CKlC$#iu `^pdz[70#-! U~҅}b=ȏ9?"B%cPA&xB"Wt.xYgQfNN2沚r>=4o0ߡyh}&cQ"œB-L!æ\U 0KtHUB{K`|)Bn\[hy"-@hNO53Djm_yoY?*H@ԧR}IKaP{宪}]W9!ˮe{n2Mq- 1A7L) 0C ?4(PY"CbYk2-K$2Y֚ 9z2v=kEn@C#'3fBQ.u aL<=@ ND"xhFm: @RFKu%;\0(fZ(-5 KIj)6"[>x̥M@^`Ь8qa䰋.^TU0EtGg/O [.BMx *vLyhgc3/ ε2 ^@(f*7C0R?0܂g .<4+i6 _A2mMr(q"+"DhU=u 򒁇|.P$`iWhr86|~ G0juyRoNT%.W}j7.m޴o\&a|iMܡtnf`koji*hos ?1oZA>_|qL8=LV Pstg^3e#js;\Tς}b2z1WWgy\Kߋ`<$I0[ЉbZ/Nĵmpݥts;Q! (3|BU,L?s\[5)56uqK2NlXC +Zpbb=#)4D2?1ʙA‡zeKΘ(2Y2*iRϋCXTZB$ť`ᙝxVj~e^O<g4'J8ⒹXSt=Ieux*1H07:?fYФerJUIDDw$/O,NkMD,%e@L U()#u`L)1HX%<2Je*AD6v)_BgftuԺ,K@NJm  % -Q, (JhIjx MdČ.SKuE$ N(~o 7je=N}u#op>tsL$N&-3Jo%kv1ɎKi|Oڿ?"Đ2_z.L?js[eѰ ]"{(JS->b\8 S%?d# T}\uRV?"0ҨMulRt+>`ҕX?WQpwxu&>SY -`SqUa:LbGw̪24m o)YVB<4o,$GsK]^56R\OKEzIVПE.HtwN% $90? $KvBM2mhcC@#Y{MgMC̈́va5PHңry<;[60:潣*eմiO-375ߩ2} SaEP vłx՘b\$h1jb׫Ƙ\k%1 0̜311osw߻Z{=```}P@Fqh*lF FJlh)%v#hx#ƧʮcZy~(fJBG@ڟ]J/;on Ԋ*ƞuB3Nv{V|uޤ.&ROz&2/"Գx5}ъnRZ!J>C:[1?m&0R pL Ch͍8c"/}6>r7eKɋ0~?K0(GIA|$g@m#A[3R"Wȶ:՘ᅥ^QE(gq'=$2hYd;DOBzjclHW2|t.}I+f:f;>x.=I+= Q:t[5BMϹPͰOQCRLw1tuMWS~井/!qb%"qj`KP:V-c>3XeC0ѿ Ϝ[S0TJ1O֧"ؒw::.Z1?hDp2-[w~7Q})8lBkL;VvzLE"ZV  ihEPhAOW B.K`ĺW9+Ջ|X%ъJ V=鳈O !x(9@(Dp\&NDuPGՑ4"nbi$ (+!AxH=*%1fBJOq=hwkr&bzHNy3@Km)XvnZ=A{:bBxU^FH@hHE5/]٢k*B|-MC"QQ@ $"RAÂ|uS?[aj`~X}Foo^"b~Ը!<+xqWTU|H.v .KQ ~⛍P+AJ@Lu곋mbNS1ͧ _C"w >=KStmDWRds)l9BnAHElW@+O;#oh(*5J5{4ZЮLWlz\T2X6׻SRBPPPY<1N;sC+QW*5n. T0t 1"@Y3eH2)BxaeDua>/-j2 CU g{dcLeXXI&PTXYп)J Kmω3ҾD Q+XZvJRΌ|KZRsuꟆy&Urp)k,4&F\VeɌhM~QQ}k_]yw;g6>򞳛ԛӮ ա, g;Gָ j?c{HXWJ8aBر"{drtU AI^8~0(xgrwU'YH&%b^t Crs~C䞍7'UKUTy B:#X]PTB^ g”A}239ln՟/3O7P]VNCWRg%׊qgIzyB& 0A''LJw4N(BuY~1߬@!yLƩ6טm7Cw=bkE mϞ6sOo[{kGl#I?<$z]b.t}BQ%Ȑ*I<˶vI]y55vRTޜ3ܷ i+x}fP˭ӫcd4u}[Pl!ki 0:n{ҏxtYE~ Ub2]c6Ĵ9 #2\h4әWլIF6o KXi7tH)5va>P-e4;^ĩ1N3C(e'z:OM3#8TWhRGȷA1dՄMtXP6(b 'TV)I0S6RiM7` )FݩܶZ2(G"fR^VJ%׽9(T+, |WP8})jW71sRs5>|.J;RSCbH lMiHen2ٟl&M" |BA֔GQ>)`G.Y:v6O)~w v467U=m>+ M#Z3>|z_ب&||E =ESY/Zb7yX1깛T}!Hi *4& k?VNR[ꝧMӎ\ۺi{Mɮj+Wk1aaO&쇪.LDޟy3KU7!ԭ_I/mȆŖ {"+xak{:gD:S޽yk}֚]lp>#uQ"I ʡ .E7kM)_G;yTenYb_&gO՛Va]WJwW2"#=q!n 4IG՟{7nK{_k|/E1kwP%S[?ݘ >;z5: 9H!뿛NJkꡤng?Zb])k'cJҪ9C2`o?;Z]׬%;Z?u!.X3o[7uVKqV1N>Wںj{qRJMw[Gim,=47|7]U`c6d,ֆݩ_1!{A34 W$v$1XY Uy1/܊}Ux!\%Voab4|e6VsLLH["-ASфC $z%},^yVo Ue0Qd•9$8yyyb~ (X#(/wy_2G(Oz{y%$Ufpcԙg`Vo)f}y$p=8 U0k}T cZCgתqR6lڗnPhlV+G}yuW.Vg~xSU׭2" 2Ċz{y)+3,|uX {ӧo)n-EtҥU6RmnƊIV&425˹M>@RVд@JغIyb.$jͭ? eXZ $w4`1u7uͤ^ec+n%j$šPK1 cWcc) g.@`6IpµrBmZ4U**@@V>~/ EGe6egf=>NokEòf}m)M|%s Jpiolx^b諄V<- ؄B1ѱ)?Dz|;-ĘFàUEF~{y3X,+{рZU7= fɆ(l)<ȬڎiIJ2g`aUkbs.eQ|^ɉJ[071Y_Y&#p6F:*,fOVij/H>~//sH)18XLC­;Lz_%,)wK庶CڮӸfcU |{yLlLz5tRv+J$ }B)#e86_K+,[ԋ_L>H>F5^(5s$'sIɽEVCC1N`KCы+C$G. ڪ(n}I-RʎXΐ=3Wc eL?~䏺b/_ 'j0 V5CʲZNXT*dMEJ]Bj0/MRoD/97EP"S noɭڟ Ws "):`3Y+ިE AK'xe:SQTit+S|2SUa1b&J6l|ʓrܩ]iFJCNW!Z kN]X 0$SÏ:X rYٚKKLe;ñyUkky4ѱyJ೏KaɎ%PqYL%JKr `$+]Kÿ%3ZdLS _"~RE`PX3?P'f?TA}^^RGIy^Dr9ǨF#ok~0`n`P %HX ouT$35(4ޭle#w S-r0W;s]v @CWSo7MX4o Y/v'ڬ)gW DaH*ENh?~IȺ6dfXgO!8kW2~׎Bϖ0U;yJxh"&5S):ŀ Z6gajz1C[?vax]7ІEQ:`(8\QjbyMG~TAW*mš eDbN\V䂹R)5s82m+"U%H8הe8;Y߭TV8eW(nJħᢩ>BqIp_j&?M7dTH**r:wk Š^ 斐=:]֒{  XlCA_/:%r[{sA|mݮ-0\o#~M{x]G]pW c?z&i^~,#>W f9`&^ 4M2e(k)cI2֌"m\g/ ³+[ʥ״ʜD w ㍄ʒv?n[Q}-rQ%4]&g,ξrixl).18s i 6ف0AͦIH6r`x$pHf|._Z(NTsis5I<?FϜzj4Rt;h<rFvDKT2ߘNVMUc-)ZLoo!-4ަ @&[(~[ [/>B5\sey.b#[N5Zk@Vy5 p1"c:|r'ao܄RoN;6X/3!K6P:{Vv~f$%gIZoBz~caޓi[h;Dgh( o6_WBmI +{ -/&"2wr?G&ӯB-D&>y _ t#0f [Z_]?A VdBFiږ3@:"qU'B-gEb6خ)4E*7ht͝h_ꐬY-M6@GV6@Dg} @25L7ݳKCn^Km|Fm 8o8W7.#×!R7ζ7ݧ՗iY `<L2 aqxKCd,Ǜd(|G8=ZTLBo D qfsf2 3C#'saX1[3v|3h-P-Tm<0r\Mֲ| p=IO*SI#0@*TrWq\ˋ66Yh lsY_J>jdrbdM[PM#fWۊ(bԌM(o:Oo5'O7)kqXhQPwJMW,d+ϔA+7-3 kniLx,KdәF( |^86)&Nra;UȆglv,?8t1"^BN ,@g~ Sbe&eۂ^??XY/T%^g ugns0`*0-s1vO3MߌeY7˦)3.@4S5e(O򒣚NpUM஡ ZyF] 4&~}ڴFjk9bvD<𷙶ߴFjL6Deu?;>H+i `'5QQݥY.T|gv]A#ҷ1C@]q7 }̀)f檛<]5;Wxt9 Bh }^𣵐 5'̵:8#p8*e]F]!:¿Mv7NjNPevscni)w9'^3-Nɵ(fH]W7bۼj m7)'f/ޱO;A1*;?uA<ѽ ͂?CoC(i ϐ~ߖ_+2C\&$_C&7!mӑ? &_T@:ІJ9ߚ};:*usn# y6: ?!l7%ɦ4N4L>{qé0B~ḧ>=: _?(᭣6i!ӄ_5v1t1dMZNYaRPkPfnX'CzrlCvΌ4RFK-Aڥ*#(m_$ޮ^o ho7 ImHvᖙ 3Z^y> &i(y0ѣgeB{3~#o2'k5*YiGp@%.|՚I/b* ?< A5ܶoLyF)f"_MlLǛc8 @Z4eFX׎ 9%K}^^/j?p 7  "N=7@CG[q:ZYw WSfM~ęo48&.(d?i,h F8A REEa>Z6;&Gu@Gӏº!nyz1ShP^q VBoBkAeI-e@ ܸN0,A-?2Xq‏'@lctIGBv巘=bLm2gW2t@h]mN{29W7)#6DݤX(gݩgM?_ƭ!OR,gTأwi_ )jjD/N/ }9{DWLpkiFK߯;7wsl-e_;;MF>@?}s644EijR҂1y}'9Df /dZCuwcQZ-1`hbըiFU,FmZI9c;3=i:u+1-Ry%)s@Ź!FCZw8X:/ܙr]h 1JwA08ߛ+2`J\2Jt5X{u]?޷f@ߘ;#{%o`VM$ԙW& R:`tgh*¬ßS723&K>$U;ѐNl_x\I: "%kmQ4np; tc/,d:[͛!XCMSۦfF!ZqJ"'7[;hSom/hSfǠ< &km<&[C0o`' u];z >42of*NH lE㚰n).lhF__4 E̊+E( 4F}u^>xk.sU72G!`lPP \)^l>KD?9`(Kt.3+j);N`:|{y#*< v{p;v (޳zF|񿂇G%h^i'][T?^shVv8mD?ppÔRl{X73oi>݌M0BM:+HƂuvEd@y*~ .SpNbP}j­YTd=ߢAE؟|* {`tD0kW麬Mrmer$S6]hh.;K=`4?leRU#RHm`鋟G߻їu:gߌrF%ix H3?C5`ffe.ຘgWꂆ&~T|%m% C_a;o;R wGveS"Ʌk0M>g=y|=>u ~wefu`@^,IvτI`.262 |[JETCXѵG!ԟc@ :7$`y u;a}^^<R >NvҚ:foCI^ٔEwGۉ*R}Lm߁Ptrq` RN6e-'Z *Mr\[°w,C*^` C4?_H Bn)Axn9dƀ=z*gUTz?[:Eo!=oi,n FQd.1O\njGBuODi Ӫs(-m-<(_~G߯dG[.!hqiKhb$7u_`CF) s_͓`T4iw<PC}۔/" ` ?z%YQ>1u#jƁ_ ┿58oͫ8$ p81#Sc(]ɟsg) J i/n~+7$!e"%Q#x/KT2X#7r<0rq"gOZOajn9o[ Sd0'D"d4XzJjGt@Pt yLY>~//ލX< xq]ed7vsqF xnݜ9!o52s6'"p` 9/)VۺW[/]LiU{XkQ)7ɐr]qa] lWñN8Y}^^tt>s4ֲdo3ca#ԣ18`x@_F Ȉ-x;('8oYW Li}5yK[ ִ?*jcIFftv&>?w,EPe06o7~6ϤN9y{yeɀC2 _ՉIt$T+OMݍ+6NuG\T Ogx2tmY{u fc3WR% KY}E}P`쵨d>X23~//P{M{Zdì;g!w`or뾬Ev;2beNh YnL +&ls|"w6ʳ o. p7L腿n9}@x݇N&EHN+JKsls2=A>60d)2"`ci@l:+ i `|C܎G;yp$~eDʓ3ϴtb kAd:;$>Bib*1뜿eU擌O |!1Y/ā"ܺ?cJg6X8.ul jL[ &uAk,S~ c8'Sb 0io"\@K ?{cWGߊ6R>8-1G>e:84śc͵{l;gx{y%[:3G 뱭qWv|4v_0J'́b̲wGo)^#@oRWEZ?IDk©h,$OflizssxOs1́=bNRwfS}<k!}V(v6`}^^ɂğz9u3ֺ)j>]E 1!>hQN=pq8 <6}Ez8-Y/yd5[8}cK }^^oo-7z۸=K?/KY-Rp85p,n;Id_HFׇkq"o*ma[ݥ- 3g,7_(0/kFKu%etO%ᶅawƝ[ ; =Qgj[ifhi° q?S@_>c0o9hp˶IC@9~|V Ь*H0p @QCd݂uaG ʋC3't8X.l tt Yx׬z(dų6Qz`IRց,[!@A_.Տ?$ M.p yOB;mKjkD w>~/Z\!='| 4hz `9<® We?Q| iR nm>HiʃWfio "ܥÊ$iK~l-W'ͺa(|ri,0E @saH=}5-KA> rSfp޽Wb8b-8؃!`.S}9*07xcYt^Tx) P/#0?#]Iփ 4q\8ԙ_InhmyڸrWt@m ?@Y }eiʢ|c-p{} ٦SΟEO?^fy9PJC䳖,k8){p+>tJ¹D uI@ %;y26%rP ,I,8aP%1F뛍|ܦBK/#g{3D_>r2X>!vgS&-aeA88s"ip`*kF 5bQ! YT9r!pÖQ`So&;㖢p66٩`lKRRr_[kjf y7##3#3=P#AqVrE!GҴv}~l8״$L_]*;w+%<J5G &-)P`,#2I˒pU:_=L{U?(!zXOHÃg+|0( H Φ)eq@{';NH/œM;8MS#oyW:*dnOWw%)R'c5 k>pIi&L n[Sn@\v u ~}eΆ C EjjC։7BD8V1-$xz/64&A2}^]U p?`==Y;8wk>_PO0W3O @V q #;nd{RMЬINP+NZl0m"aUOl%[88XjuCQxD(tÆ0~[eA|:`0h4cl]6 _S5|f$k.Y3Zk'i =w@z,в7'`0 /)`4uf#*Z9ug(d9Ae?xֹl _IJf* 'P`R@_ކ )&35_نMįV+9%?^*[jdz˫?I z5@8, VavZ\0{Q3BI^WxCC.5cxB;93yŐEfJ&8}8ť;՝d4 M0TxB6x™6~B}D/Ao=Fto:\\նuK%`HY#("Sxq#gL |t t‹uc2@ S0 {j"0 uG(P;}q9ZͅJauMBn,}vT_Xveg>ye!6__3ef| 4‰6]D.*@&q H{Qw{>]0=f1 h1@O)HВW7 g @To_`m<rr?~:l۾ !™qM(⧣HGVFu")%5uh WOz_׋ xYAI }ثO֐@dwW{:aW_BH5H<#]!jqZ) CM%⿐)*ʀbr %>5`=0`=<H.mI]_6̺SEi&pA, `Ve*&:,&4TTxn 4=̰4 t2 5@|NՅ2w)|D[QkGK#|{{ K4 =n 'ZZO1(kqxF4@I>iM'^p|lk2z] @8Fu${S`@DZ6SūP^T/5d=3 : ATk%:pcGI1eT8k |Dz#zca}+c06D3jHKkaN<H/qd;ay v AZ4)VR ()+E7I( М, E5 _!g6]C.QWA(J^1 m*nYssl@)꾵AU_$Hb_/'A?́n?{ ғ6?$qcU|>/95pyB#M&@p 5ؠ%a&~Ti⯢  d!Qh>~/ Z%?*_=]w>Kϗ*1xE0? 530$ۤB*W_/as @:\CEo]j0nnĆRH\.W;^|ThI<Pl%9&ndž =oD>aYRl!󗾙08:Iԋw֕ΏbrʍOD +`Iz=5hP);ཚNUK `MUrdCX@aV. \F.q fS=6_1\fc spF]3@'* < bmX`.‡ \.IG[ؚWpb5p!C<-ݕ:^-Ur@寖>%@x'z*;|{ysԺ 7 }O -LR`0/񂜸zO|(ryFX T6FW(k@en0v@KZLejY 9IS=+0wh` x ]sB'dzفӞJ>`UUs@2? kT4d5Je,RQ7 *AgJEyO8+EB %: Ҷ9 Z^q|Pd~WB!PaP U3wCjb\ |Y#n''VحJׄa)W$p/c'a-bc_iRl\['9ՀB9Fp~^}:5^-n[Ҹ6B?8p<D.0^t/h^ssH]c}ad q8@63bνeӕ {_Ԗ̱@uY_.C)mqJ ‹WՕ._O)L ~ 4Ax,϶( y{yec@1kyIW 54]} Y^.k ZM=,x͎53 {Iw2(~/{N)AJR҄ڱarʟ/>BBryI׫CM}{`4  19pZDH!x?C|ƒ@ FR *1d3/M ٿwF_?<+0r55 <Ì3[. u Ck| 3!i0@N)]>5S4"pp9CߎV&qNy@CCZχ fg t/w@ xҳ̝b|2xc!an B@-gY{_o pbLNY+1#}I_'}?rMPNʰCKskb^ xEv191}\4I5^G9\\WF!UjZoׄ'WӜ4g9"+Z rAM"0ZY)^k$}.=/*]/;IŠ ?O>~/$}Vu G}& gӂ`=/ 5YZ2S8 *uiN[) }^ nsA 5A#4 ]sN "庎_u^@FdՉ|'0̱dKo4̳sY pm r≠!3eyzD0@,HǏsJ32`^׋L9/F8t6z?ZKTI?M7GMLKȻ;a:Fow6.1BN!aẌ́Kastj4[P3 4n}n}LrU ha] DkYAv ǁp!ĪyyB;.o_=ND?e6`x'" -˼@6@G%;HGox g].YlY˳R ײMNn ޯ[I[U_/u/&bx4vA6g/'F!<\S N'cm{mrńZe|)s ;"\Rz^j|o`Oe3uadRUpskhE]&PN @<2 0xE B&cMRzTC_ w/~ x9t؃Aһ4m=i$/ ʜq,gg *3ɡHo4dz30M5:ORFyxOG^w\!DΟ̉t^}#0'Sk]QdndzFsII{ʀw -oH_emᏏ̧9 T#\ti ?b>]u;v|ܟ/VW(\4[3Gb!%9}%}Z)O}^^z=d O3GA!Hg2Åywݝ|ś18R/HQB0&yZj[['skօ":bL7Q೏+wipGc3Ec+J mg1^:#"~|| .P/T: /`M+e}Hc,xH2)*~oي 5"Bx;"b=!8#=F`x.@W )bR_yۣ0iq>צ m6=&yW0ğ ω@ yPf=`}_ z[c`T˕ 4@%aچcv" HL7,oV?k.N'o<++><j׈B~{xG|B\ 8|_ϩ(3EOǴ`?^ɲ?mj_ VF : LEV EBv8-m1W #y'zo*Є0#ͭt_ˁ_ ߗF|} 7;eLdoogP6;d t*x/<3}BqC&Cd.& ϴv|}x.:rjryCe/ID1?JJ@r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\.r\S?`4VIENDB`gambas-3.16.3/app/examples/Games/BeastScroll/sprite_arbre.png000066400000000000000000002167751411575327000241230ustar00rootroot00000000000000PNG  IHDR(IDATxmYV~\ksm^% I$'d$#[nE۾n ??~bwYݯnK_"oU`~io7f; gz|"kh 8]O*g oW^`܏G<V#H102 #[W7?=6Ű|'vQd_|3U(S6F|{;^3 ADaO~h#3?c8B:םQw?aor::(Z 3as#?ÿk}x^ٜBupPQ)XWڤL׆L#7^*ӾqyqI/:o׹neO][|wJ_Kc}RRF ֍fzLܐ>SE:_o7O7L6Q6VJ(`|}kqm8QAU͸<0]O|[_9/'۟__-K%L,~(2s$g;*?W{3y~v ZpSk8(I.ݍ :s9 |0NFtv`sVJEl&Y_5޻ӏxןzَq6DÖ'sMfwG=orӉv=+Zol iB?UPD$z z7D-  #+?[ N: HQ\:Gy{x3/xx*c_~aO{{}>^p}g:fHTN8\< wR(2 ^ӾqVn˯į׼ sݽ-;ĸԆ[Omކ3Dl:RwXwT7D$ cne&^~?<>q Q[Ml*Hf .#b E"Nd?_错e=2Qu ฃKG{˟{CABEDqw;E_8݆jg)nuJq%ܜiLQq/[!.Ϲ0T;O_}_}~g8|ԡaf-r"lNv+ Pg( n+HaS[p2RF77C_: ^ǂ"2 6_}okSS1/ ; GLq#|0Ek632@U;/ i\GZ∀b -Nw48ɣq 3CTl/̗n8]bhd`ZA2f[[ƓB 5ڡbHz?W?[7Wt Uc`,9ުF놨+xMq(xG?Ogƭ#j ;cP;NЬR>&ܿ#~K-6tp\it;lq Aie3);qEƭRVpiޱf`N|yx>Eכs|(m20C2*ų{)gwN9< -UMAEНŞ;T[_*JFgPFh___!8ۓ6#ZOh{" &}.Q|[fޘDk3f-}S=­lѽssLd ['*ХB ${c'йg 9aT??gE\3O`a*ۓrqW)8~hhiSO`'4tA x 3FJD :(C 7`{Wx :1$#*T5E7w]\0֗y®ƭ %B E .N Zo ek~XdItp@/R99-5[©*'3l (&Lyu,SfZ+U1 rVNewhq8ۭ3Zt)!"ZQ8[Ža|°q{a(nW|*\<{VG Z n"ZhfpTŚХ1qsp|'1o#u d{}gia8A;4;Чv\0fi`W!OZ CF@0 N@ AyjL^!3 {]G; 3w.@)hggߔɆ[/\:Hi?a(PO R:v'g:tCL|gc_̏a{^6\3pk8jɝRR&{򹆛SV t)!Z@A(V* Xύweܔ4p{.PQ^aw CKlKƲ`ϴ\ݛ zΓuxѳTΟ: m4MYi:Pn8 {d֘Xw&(θF`r$o}ge{l 6;@cg$NN:׍Go] K^7NnpV<1zSTIW(Rvq(* rVJQ@:FǼttpuC\PQT=Y|`2@c#_3fp{._3n;vw*ӁmFk*ً.B"0E+0&Ʊ2;>/z>z}S6d=O9֝%|wH{7æ.Tս kAjeGBrt#O8΄N<Ӛ#6PR7A=?J|2`wW{pqO^Ox!DT`+ 2tZq-@bk42(e`V㫿=z>\s A2nQ>e~](qW n-N:Dͫ4k|) џ9Yu3cE_LePʰ=l D>W3eP'NnL0ðOF0ai/}G h֙Z*%6uQg6bfOt>8qOq00n {NXGXE;JE %A8ax{A"OHS4(/ @dn'G*|xk ݝHC_;)!E}Tf\sݹ@7NnoONυݭ?z2XޙD)Jdl3]L\>{bw_3'ϸqS8;99߰m:i Y_8|} npQ0v'$Upp0ђbMa8;Ei >k %tmp'%%$^-d}m?A{Zާ{ミntS++f5ӧ僙C3Orzw Q.\ өЧ-\6!isx杗k0|hnϟs}k2(ep~SqzШ%8WWfڡx@ Yɹbɨj~٘;&WNp/ذE5YvT vdo;i@-Ԋ`pw nA*DR m\I)tzWNlNa{{dwW)uCg~ԑ^fD'Dk25>tPCja 'w7vwc{kS'>̯.g{asZbǩԍx۶SƂ͝!v`{ryyt깙+\Y}ޞipv{Ge>t#]V{j+J`ChP$5z7;;-Lepp5[[;ӾqxbDwݛxz~ꌓMf=(؜gBb-Z2nl6 Uq_3WǑn˸ #} f03'>sŃg{RwsQgTڜ ÆzGb< ÙwLgs:;lRbOgw7(7/=]廮>f6$W0qbA.*N*<2RE8ݍi?q`>rrmFIRB v7Rt_\?ia+9eD4fzqpcO\^x5w]ȓz84+ÎT@8"4<8A=uvZQ`IPlUkΣg8pzw\ޛOAXnAy,֖}nlFN-^!)e^z'YbY9#jw̦CXRJ>Wln\?lu@-l(:"񽼇JS*;~o3YuՁ״v@ΓL)?E&@bP`*6T\:2ZO5E]MWoS- Ew Ħ  @jD?z⿃bYw(39 DVXdAZ_OTw;ʰw橳P,[_=Nj9. @ڙZ|ǚmBU7_y^x=7aѣl+' Ш9l:e–qW[ϕSV-P*ZJ-M#ea9^ԝbz {{)!y1a0:bYCS`]mX1Q7BK-r4JpT؞WDNsvd.G:*ag-R];u7srZ/]龁7ў߫?>?O`=7<NAQTlRx¸-HS08V|9@-%]\)ulǰj2C#Kh6"d@U @KN ]5؊ :*IA]kf FKoMYmD&ŗ@c&RsJ7ѹCɬw6}v.? և<9Z2*R҅ڨn-刻[ޥ(U /2zVI@=_v'ocJ;1h+f Ơ:f3mb܃9w Z(ƶF&[B*e(Z)w?ԭ;et:<9G7W~:Y/.2LwTOW~}l0_L\kTzbǰ-Y{0,~26pk)(̽1{KPU:P jÛ=&K)y-%H7T $!mm SQMB{Ғ\E2P@Mgo=,0#I4d"Xd bѪ22a:ƸlOOlNhdtG63Wk?'c ~CQW:1]ͼ}0H#SJD+P _v+6VZR5&?G-G Ӽ3 PDKuAZ{D5@ZnŒ#W輻`< T Ej Psb ,%88tl 㠔&OOSp5|w[x] xwxA!2HLM Q<0Zٝ ?OW79P{M՟3هGF:]ztqp7Z /YۻT-GfT g/!h#˪8Zk%v#0;T)T"(-7|2s0Aϊba Q~,MѲFuEosu|F#4 +4KToδ}z!67)??:_SaoXԻ't2իjz14\B1NCwھOR(Rw!hƼz<- cXũJIk^z$ލ aYR,_PԠ.5jԿ$v a n2,J9nlAk?Zkv:a8JM$<?`*HƲo;^_Əهt}V[m/ e۾_^=GD1S*%Xy(xvOTvOBR#xz;yx\j6gۇEqTK>>MS`jA5PAoKq7Ȧ}|7}V~o5.wwprz/o4k^/ܗ{^{æ`RpQw"#e3DMi :T:u gO·o(mOҋ/ VvgBQzsy ,F4إ#sTCd/BT܀6bHrOY %t:] dʞƳ{[/~9CljHd-'(d[sSE}E5 Zi-y+0|̟O4Fo|ΝW.?ܻ/Q8pyK_MkTEϱq+95+v"wu"Rywbcx巨;Ekg9\5Bi{Rl4Y*'#5(8GhppR?oD/_Dך]@ڼrp-qEV@;@;5܌Q!(Nh!PKEp(BJ Z[ein Gƃ'ɳ喇DP Dtl 7WU؜TR:w>c [1.F{My7rDZ9ߠp3x#w>䦫C՚csO@Je0Dhx,輖t' Fևt8\wۓ@.f.LUF6cEjx HH_<R)^cV֠SH;@ ٌHYh4& B$n|l_~wS{Yŝ_7;N6l2w*°-t zZ12罟'f}|OuS^gٜ::t ~Ԙy)N쨃ҧ<_0ޗQ]}/9c{"CZXh"+HxFڞlQI[u xxxiUEF}֖-Nvtht HӖ-F=6lM:M=Bj҈ei84kf3%,9:DwD4Nxu'( tk=XrCD6aS3ߜ b|zaq!ǰ zmOt0('OS?Á/> ? }s|w|;G3rEZ𦈇7?c:mjCv|+}{kð| ~GD8KSp&XcMawZ0ѨCh*X#ASn̈́ .1DT}Ħd3^}vܢa}}uqϵt843$+1h-Fwq˰@ 1pǚѱ0sGW"iٜ*OlDp53{.FƓ.p»1 fWC]v) ?Oix^3wo^7|ܯ.ӗs R[_\.7SFyϾ 7蠜/>8[PZ\NCh":Ņy3]:ԨEC.L $t==޷5 Vqt9PaxCQ:cpi'fJn뛫9܌sYKtVBt!]"q]]£:BceH#_2+an$,F_Z&XPw]6Xs-˦2 R`FP "a8e{m)5o%_J"NɍrCЎ1GQ8p#G1E/{ p Jbc c~*"bxm8sRaHsL3>+ɓ#*uS؜;?p`3L(uQ 127Hv¦*ZcPFe{: HQ/]lv7(v=RZ ZaZB\U4K -QM/S~k"h Jʸ_KR/t#ʨ (慊Q4f >^e ldw f G eNo2H I8'?+OgOAw/(c YԭRqr:sEM[WaϨ FZH[:?:Ng!x}֊hA5Vx2*[v H-1MFvKOm03n;1GP e }!zo>@Xnt5mm/` Ɯ`דLv E{ qYcHn PAFsNd$*fU(Nqs7e:СG2prEγ@|幏'[Jv23܃58Aҁo7/wٰ9kۿGo5^;/k+K|Cehl-PVI76 U ?==)GQ ON=QN-f~ZER"ii SJ X93Ʀٵb(KY=P؜ƭR+PnK1ndQJX}-.4 oo7=lqԚz $Aanҙ3D"(Z^#l =dI5bk ɯx~m:B'kRZ< a;ij-a-0n=G5(lN7:\]\afwA8*) r1mx0|?sn? _#[3/ЎAٞ)>K̯$<~Kk%^G BXJpk8=qAMnܕzF=>"nJNαtwɝGAV1c$Ki!i}'7zu"8=q_=mbJȂk:{Ft&TƉlS;yM< JRHa̡FPCcthu>xQ)pݭʰ"{l g>t7#@Tcpe; 3]o{Łwو+~^~|;_[+: c9'oOO?u[n1<\Bk<eT*}|/W{9\'ӗ2-fk.]q:pr>pDas*n\>{qǸ؃tN* )ɶ tjFKhbփ2]7 f@2zz GV,=V6u5~<4}=}9ʂEn6 cb]7ZoF jIiɅ(1~拶G?7mZy[g :?WK>P ϶Wsgљ2Q=a֙ u,譁iVJZSDd|sLËvON3㻬i}5MC#@}w?@ACFuyrD®۱qS8o{F}k} a%@ {*O_y*{?*1.Ma1'#e,!L:{z嵎ja#TzherLak]zN]=$=TS\j`M\==%-{Q{,eiO/@YKhT7pt @o#R뮥 EDK׺ژ( UVEKzʉ%=M,O%HPH s 3%Hm6ˎPOGvw´Ov؞kfLWfӸ|pMxZ0Sg@/!S Oln|q]>pkЯnk߸'w>'ը >AMEj_N}NηQ0q`ϼo+z?w>SM?u_oZbSti!tq|6׉ t[x >`̙O:g4Yc=o9Humϒ!~Dc]֍›!yKYDŽu5_^l{Xl/(+te/*b*X($D[UZd:` J]P_@P; :EagA1gW ":mAlQ24Ne=ږR͙q߷g W=.'-0]e p>r {%E#g0tn+wN8 :ܣ?JWſy|JMZ>X׸Vf]ݖESa9Pb!>Wy6tƁ1AC-LBOK͘JJZ!2[Bxvj2;K*Xc+`,$>jv= =NQ-%xL +H7 #$K`,"JZD50X'YzOd]ch[/w8*ROp91H; l33EI9m@aLEq;@'5^Y_Rjz^D ж[awglttg_{U' 0 Q1lĚ mE|h۾o}c>'OTxJũ'Uu6'#-/lTہy>; H0Md{5G<~@7?v}v|5]M\xsڡ3]mHQ~Si)q7g?pTDޛZsxeUZ(H/x-G])>Ts]I/6<[f9&-hBYW*5x 3ΰ\8 DRA"2zH*- If G^"`-UeS Z1ج%ix3\P*w lxo / i!,;5N B< aC$<[>=i{g8uN9,75&k1Оw<:TNzvo gfn obĭx{P=*{zn(¿@ ]EKN1hMe'GǪ sb wM𮫚SAeȓpG@J׏}_?[Aɓ15N#`|v洒x D\tm,aa`96I,AR`;^4\eQ&㏨{hArp)5Ģ}t0t6f(0dH2zgB`7J 9h5J%\\~2:*x9;'=) 3--`z;4D->yx"ӌ:ޜ3+y+3g' %U~ұhMw&Ա"y1=SMY7Һœ^ TMB Tjru$źC,P-}^XA¡p o+uWPe8zG?X~{=[**A<{t9=dר%dȩyCpY""W6wEa jyBGr8t7hO"|r ښs3TYD*e{^M:@B~l u,ɅZ)%x 4Ԍ;d.8b\*0 sDYA7T /2쫅ֲ\{.vyE..iVxoDZ669|IIV HH e-,̨-`gʍܖ.vqXm%0Ȏ^y`Ff+_S $mYaĪesZ%;} zGv|DKe,53xh+P snAv4t baU.öu [Y .'N9 gsDY93"aw x+3nƣC ^xm?w=8)酺αsGtbO @1 v,˳3@aҤc(qa(S&080d9aLkZa`HsCKxܚNs@hPn׾؊:ӂF-io)T%%˂_Ӽ<(ÆR >dL %{m5K5, )KGb0ٜX;Z[ps.EQ 0 LWGƜ8O еA<1k[Eԏ90Ves& @j oprg<\;Ž+\&N2" ww]{m֑a7`zܢu1Te`l~?5䞝 }υuTS:sIKqpϢ귆c!HjSnh(x`{ uyf58KpqU$>'SNZËH*Esꏮa9)%mbrBe5ӚZREX4Q\-hE0:NEǁqܤ_li8Se=ǦdA5sKCsAo5ȩ pOƚ@UY`h$R4Pjɇ0.[.Uؗ=G!AI#nnLSr0 ]?G)̎ OqREcq j^Ot)H@ua-,ƑmO !v# \?chꈊ9UpHzjtrޚQr8E&2l`}v5 7_TZ_E$Rdu$*1Ýf:2h UXĖgrY`TPlU%))S^ dtE\{?h1c4KV1ͫmyԡ1hI%I;(%J\|6W)): sllFFYroOa1t\-E uhWx̋QwtHglцs1Vd1zU@%8"lvt8\vCP .\K8Ȳ(ʰ+q{$ "ۚЮRa{"mdVW͏>+|/W$n`sz6PO "^a-n;1@ћ"ʙUdKCq.9jR5qY$]kYN" cֆjƱAXkL47D,JbK{FɻE{xDcݗeS"D 3 82 C>D13Cd5{:ʠk~aФ'ˌܣϯ.k=ve+3&4[- o3-i(i5˰Hڲk_9$6f#%Ԓ- ȸja R[:TiiIPG;2{JI^;ݣmRM"#d-3I~-b×@5:"Al[:&VA *u<[7zU~u<\<$͜h%z_ؓ`gs43*d3ĶԝЖ;m c/jx?ϻLh|ŷyƏSMƁ7/wBxisбp`h{rfz+E҉j9Ȩu{$YVZk}Ǿ#*A7裇 aH䨩 `NW:3X~Ĭ!-γGاn`[Kx⒓zx5]*H)EǸ[ԭ4a&fRzVʬhr< Ԋ&~q ZD<<pP#xfvT_2xX؉wc2qM:S/ÐzfH:/ ݸR~cғeS>B)0Vי#c*e ٞ8-)XӒ^2Az*lyhEbdto|W{>;7v{F4@z߿/އcqW:c2##r,6s[|܅ebN#]9Rhu$u'\g}(GDmIY-K<20v n I<|ܘaD҇3'B/5N"`˃Bx.T^l^=keYeb,24187Kzk2 鵶P==S!xI;2O@\}}9$^aIǚ]XM.amcfeގ 1BA)l LCf ln u\?28W{Dj'/`dUVG.Mc|7J`OOx۾|\o/䥯~߳܃{(SFf {2#Vq[}NZho_(nyku=2acd,'ǭE_hhq0H:j:nx`i ĬE_66^M*X| ZoXN4I]pIHRM^4 g-/ wŕ7Nga8R5K;)f:^)˶c~)HXI T: rחR2 Ih%T)/ce8-ˁvh01jݒ >Fa|_nas& ^ErwLI7+?= ?oYiUo]尟=_/>r gG f(1mg-o|o |XRw ErXJd1=%g{3=gK?{ (}X&Mj+ j60&1o)Gڰ-cǤP-(JIynL#YS_Sv@zG;,hв-:fN%skd'J=3ZkLbQ-eXnj|{.vy\t+E){K"NP:9c1:@V:>6@Ba܍J82mx4wȀRV_L{%݁u˰ ç/Q<9On_'(1㾞 Ѹzy_({/%z)ywGy1*OeѾm32#>O$;B%c zjoMpAO.Ȏ̉U螇Mf)RT3Wt6zRNsX+m?)q[B]\=~<@e51B8V6wci `lh]n3k=<İ3d}'$DOKwM@-SoL3CV`k  ƴ&4uT-%9VdKkŬ26e'5M, Lu< Je<,-"!aiiFXS~/U6 c)Q|EPx=a!}R1zDj1D`.y\ 8s-y,mi:, ygYx /ڼTٙ)ZZXfsrZX} {"ʍav K(.eQ!x2l#xnq{2 8k*G?[B'" c?HO+:J:w W 䄜e[{"=9iE32;,^l|vy~N ۭa79nqUPBOiF*H/Ȧ\2rAtNX -&>$i$rVa׫,~lf; c~]vw?v᭣86N~;4_y|7ӟzׇ?bs' 1}OPw,*@gd 1!I'/a"e\fG͕ߛٳ t%kHoBY旴0H #G 3f4́a-fwAINCo313p5@UOpfK[R_VRQ-Aj'9Zp2(7Zf-f&p 6&Qoߴkɾ $ur,/f2G+$wdPMzO5i GZL@񗬍[AGD4)ݖgJPR0JfCA zΰ+d>A!}JWΟܠ-AZ<0=.0l*Wz e}3> po>[Ƹ~nK{,麫oqKō䏥gO2 W=Y J#wd-`꿽[cPody?a7O-s2ON*ײ? : EAZ-s7% _ZhMdKu$ٙ!&iރ@R R;Ͳ<ə$AtWG7#O6Y232%~thɩPxZДVF]$u;Lre#[yTG5>3XtL+a`yH(Mt8A(q1?j08|ūv_v:pi)EHsE"3<6v5 ?33ǫ # e d-6c)[ẋZNYRԎKE;$ n-25kX23gy>tpʷH[5hHiMĐA%V$DF&A]LsC(ϐ;ehI'1(*SRܐ1EwsԖ96| 2XLRSҽhADE:_%FiGЛ^ǃmI.{Ϯ$fPR(3Kd=Z/BHK.Wb:'뜁:,kЅ@g(%iwhe&WNGXS)lbi %Ggۡ{zT\m_)([\fA+ S -iǕZkkݣٌ⺋ɍSqk8@ɛ'o MH\YGAL`VnK!,qå(,d ^К9:\K)dI>)VSl)?պ,v =QdNގgNMdK]?_Ėuo:@fxBp*!%4Rdeaf]I CI9KڟW үp~Od,4HB"Y0#!_QV"#kl?D[Ql'0gEF7:bRFF#0@^mɯq-W5QMxXZ3k,B4^GGZ5%~k<>!b%}S2wE -13?')Dlo+HB1^O^!]޳>C"7]N1,X~i (玵Am* X?7ƍ.5z&T5-ګ)c-mc\,=v o,[ xE*Dg-m# s W;3M5jI8[|` QA黑e8rcP5ƱF'Ѣ% PcTe8Hi@P!ٷ,H9< \ߟ(*=a3T cb/ʣCK?qmzY(I䞙c-ƳyBa-z-u9j>aduC )̓%X^t2$/S} $Z $/uc.*.M!k]imbѻ11{o1Y` Inm5-Dq(Ko<-Ce %ݫ2dJTAR #YlWfz@hkv*-s74 77evlUZ!LFa,ftZ Re=;sJaC psyx??,?ދnM Oj)Ghlɢ KƩݞ۟ˏΛï" Ghفr:3|m ~fNt<- ^leQ.#c03O!2uLk0-M2U`T:]#N2$?䔬c,^q_^ˍ]~kqȍ6OA,ط9z}9k/R!=ĭEHn@/wQZ .ђ $ Is.u#,\B^ǐ5UiX x෴ZPJz({r"۰t57Z9%QGiqL,[v2Td(FwX]9oO:-q,tg9'w6N6l<`<Gc|X1jazcc>'9 (z.e(Jd5I"]NZA5\t,6@B!_-b4¢5'gXaGVñmvLgn2j ao7=-̒_H_d50p~3t)|DdA@%,s#"X]q&',x)IxY3u$X:$$DVy~ f-iQ&Kƀ[LTh0&#YuK"/bW+$AG,_z1zӚF)qaӑSE7JѺ:*[9jD5BC(ܒR,dgq :[1Z5I.G^/[ȯ#tT6 #2:ؑiԓjL8_ұ.0:P`RA̱dݓ{`Z,F-]gsYR{_89u=7gՒu3[SNɄ aPd^0Y!lض^ϛD%_ be^5- 9 Zh4DJei/ =z~ZE#W!OO.PHYPK`Y66 ԳV=&/~)/u7ݾfaX-C?z9!i}d:=@z3s좸ܼcCv0r[T@yN 8< HV6gY)¸(R:4&yJt=6~.A!$S hR"xF'} kL409\`2Ʌ{5Pm=>d={F.NRq( 0`ҩx.iz1Hݣ EpIe.Yvka=Xv p'TG Qn(|%DZ]n]:Ԣ3Ұ$OJ>rKANCYysۂ<@yU(Mokݣh9}lČrT 95 }w/Xqω"u |:>'jD;d%T?)|T\c{K)C*,+4R娚=%IVPu 0wdtwnN݂;UGn%wg[7g<ٰ mAaqm6Q,֌~軫x;֨^ I%0Fe۬-=H7c:t}?2e|BBYr{`߻݃FD# N Y -D'[㱴)Ix'Fw @PM#tL5}Kߝ)˰23\~֭˞ϬIO d9oު%EaKDClQXhm>rQN=kZai &>Ғ|d ҋDFԦְqu@wl*܃+;Ξ܁4h&tZµ|ՙ+l.rL=3YjP@eC.騥jiD]rd ;976% @#RC4ːFύӻ 1G])Ul*Q,>1f5&,e39lgw#zZf(eK-0-z2- [Jj~Xm[OqG:07Rni$frtdTlkxu%$c?PJRQrjl lo gֶ.<|M&y˦ A.@‘ig,[A%藭L5Bޒ"yMZ8UI I Bj4ԝMqIcc"h}&=3He'S Oߖ7Ͼi&`fz(l6U&@+vbҼ[Ǻ%$-'RI665^|0 Z&i!f61g`=8N2-% )W^GPɵR& 5~b̡)n+mZAry3!rL 9}枬\bp&6cJEeEpe9LBiLm8i8"JmJ ZXet!:TƍC1`['jf^MUx#rnnWdȸF:*s#9 Ndu<X7qQ{/+!:%EUC&g$4W6ܱ(M-M&Wr(oaglM¡Бt;~5tْ1%ZCZ,0 efe`VpтI<&};pxZ]mZ25j,f46g $Bh`f6T"ՄB Wweq_HhkJge`4J,-)d,;&vm\c6qiԀ:w'B6T5EGs TYjٛz^Mqь"\R|ΐ0klI̹܅GCa?#Lքe0 5Q$7Ͽ~z$(y,+8y%_\}*?f}`>,5>P{{htdl'Bvuj;tN;6(Mԣ-ni:P_jIDAT!9!.(6X l}%ޗb#I uƠ&bHLL)@uJ%%SR؎m~yu1᾽oh_!8Mr5QHvLrf"4FYqeք!YܶǛvNS >:|x8Ӭw1 .%C # T)fuZ:?(3Q\zvAV K4Y(uS7q{Tg͉'Z<#HIa8G-9%*F@I+QTs/jߒsځ죝֮#7C}lMPݎ:b,fʧӿǩnfΰ:5&fy|rrL=GQ]DqPP#`J!.`#ԁ vt1JrrE!05dIT˹2oDhA4/ᩖEI-?G\Uw5hR(Eb)^ܴapb3u"ktb9GT 96L!9nq7V\*B!Xmu}6Wݞ4.z("lN*Z3~q`MjكT9H _mgRΤ2}YmXRħ6If[0獏dyr1;S9$mY@q t.j՚¥?B@ZFLV;MC25'~ ZƁnkݻ*9CTgml!'k3yKV浰;3qSҝ]  T4 u~mH{n]WoSB ;ӉZQ=rxĂ2՗1IL}wΜc hcABp˘ȩOBBh !.Z;27A~=.Z~ZIAl]4"on#YL=0զaFO-vhh54%̚cy'S̩ ʩSn܂3Z,`9dfN{kjiLgo*h(JUЏV56dRpgQ&lA~oaOmAy0z;v!N۴cD&% e(!-[<IZ06Ϸy-lR_Les6Tt SV-j TumMI I\8E\>tARsWR`=< @<:̺,:5/ #S2ox QMg0L(9P H \au;P1{XS2JI+\hhnQ,Z)\{zH$jd =gS-x@M^ g/~j!OKZ:NyMY!`ДuUWBTrd=-E5r6k[`jZ&ZrCi+au&b|MϿ6ɡ$e$yrÌch5@mZ7\3ډJ i@&&YZ cRHGc7Y0eNsmf-)՚x >+5X60fwޚm$7Lԍ5P{lQI]36N}Ʊ&hFLR)8dMArӸ"d,+6Z !`ѱ>(XEDKOؿo{Zӯʸo~J燹)l|~)7p+uK]xcE WG=5Mc0cy|ӝkj!mZ55n4s-TO6DRZC M- k: @#?iC4s)j' dh|`7-BUD*18\:Ii7) !4Ci<k'qiu$O'k&՝64XvgOk[q-BN[2)e5oJFW`Bյ1l|ӏXSRߵam ,}L@J<#=X:0!.^AZgŤ$WE xa jӍR$CM?_9hrՓ>g=#,P m3,29ƌb*= RФtg{@f~SfBr;m:]gD#mN8=C)GNZPF!4}fJ@I.e1yo6|}`&xo2ӌC޴?ј:aB5`6y0qN^mLT*eѦ 2CpoZkӎ/Gi ZH3hSkEeMyͪK-P^zthP椤 C$m_- 3 Ĕ_-oyj6>7]GKPIk+\L&ZLy*_J)EeqVJ2ЈO{'3vPUƴJ\.B 3kWu+`ȹ[4'˄S.Z,gj Ռ-u2%W̰ ~: s,bTQgFsv'aK-Y~6 0=7oi]XMޟ0*ܤ7l*J$2Ce<Ȥ,NzӠ?x/xfZ-+y:ux6 LihTBj֪Tk&3 |5&[)mRLs=i8&B¤$Mg#I)7-WAaU ȑRYxۨ^k3~{Yf,~QGⅱę!| S-$ $jaM|ǜ-N ܌<_ ] =yh.{UNcZgq|&1M"BgT+mMPkyatO}0I6~uL:()OL%WyRR1Zw*1e3ξ4WbWg,}M՘QqLއqy w.IN< /:Tzr3Gh{E(SlrR6!*Λ-r>-IT:D1z&4;2Exo Sf )4TKj)4Y 4f"s3u7pξ[IӦ$4GkD6&þ ئEuadIk,Nϯc ^lr"ht*:sEdqG't%-TLp.綾z@+Gba7L#ӭÐji mU,ȃuF%b sC$6'X3KƷnt`M.4hI%6kCGb$ vBf% =yoHRz Τ'@B%v֤C5L\ngjjn;(Fy "ToJ0`#&-6.k)Mh}!ɓ2'z 3N@mhLHeޭ!jY4ӑD KF0^_29=s53!Z&"$&6]0kEf\Eܐ 6ä`$sɂ(mEŞZV.0iLjz8LO}8ZLlcO&d4M: L 24;ami,䃄J\:v#Mყ_] >:Ք`-ͶlnO;K [,_x;ٜGN81oQq6+j1 ;U(yN[Sm3aQj2 @˜t&qg~^!Es@Qk6Y9㽶fBmօ6sɆXR'0 iBN&J5{k͜au/tl-5`&g٥ޅĘaw>mt@dMKh4KC>&$knCU(2nF OB0ص8;W8:j ȥVsayHMfJ㗴 :D;]?S 0N5];56jA`((ft fWzߌWU@Moj5u'WpőŦ J1Piy '_ZNϖڹz;yOeJA{iYK\^mN6$5-r8tN 1[vo- &dd9 !R y@]5IkorM:h&/MP_\dc> ͠rZ\mf.JqX:dҬٚ(kltȦnz੥M̳N}JRk@ xVL#Yӵ;֗_ -)qb)ȷKa.6a|`VIcS7RŌ@?MvV9O@ $;-[$/ټ0BLX(fBBE/]K{4@ )5l#Q(>p5@ƀseuV;mjqhZG7ijKj( GvY뽳ЌӴզ1.<5{+ߒFoj=XMF jVXM#A6Gd`Y)I.*lQ6)sK#zrz}NHujKMp`MIEӎ:z3oَ8{=01 V]{R!@ly7:Gj] Z98 $T;8nNS5Q! >;i쳕3{NvH>۾rY@`8f~jLʻdP[-Am^1Dj2N0`M-f%uNk5Q W%$(֥NaoMQU#V 5LM ˆRJSݱN>z ̜al碍5.@i / F).Jx" p +fFBMR hfY%ʘg1̿4vJMN>|qM VkIGKh͔iS8Ihjli;`kcpRI06ec@&7JP/v6>xbZ][fWdi هkFDbcFnci p#{PDŽ',ڴ`F1YWll{qILE[c% `- Zm, WVb 5me;W$ꆙv) e`L=pVI 47І4MxlwBʺ%*Y|nVk\(sjښXJK'\IPqɻ@u/s1X S2>Xkws\DK F497h^SW}gߜ OV6L6-䉃sv02צ,J3 4% *mc{.<Fla8# ZψUN.ZN g?ì8J$hl.Ϣ2>XA!r=s;Qg' @XDHYHM0Ң(iy[3nqZտV &@XoqG@BdJIOh\ $Մ6YX> Pk*jƋA;Bm\PkAߚmL1wt ^FɊS,[ P-;Ivw_fdդo Tڔ3 ^<:]%yvg 60 JtT@99L8T!Ofӵ?yEjM(%$]Td´H¸#Ay:T yu &1B%p摇.f :zEaŋMشSX6:!i{! &5uԭÏuiM |saAO=֬, 2@ b`:{Hݎߵyh+%ujBgd;e majȭnrMWԖ{N簊R $հ]k" "#d:j׵S&7_FU4uN2S"؄$T ';i"c{$xJDۓI&Gi4(lfv 8mAGuƽ.0X`_:g3ay\d5զ0`V#tǡ[y[}G-n?:#+./ N qDd|w~̓_?W^c=3LV:o"n'BVD-__4 8" d@ @AvsI- cr iGeF x'bc~~%+Dk`^Bj#86Vٹ2Dʱ/[)dlVX{j4ydڍ1I^M4Rj0E&ʶBN bh%Y[S5(gl%*;eJ8<LqH z6[O)SiY{MfI ddkJJ)G|6+6Y2#u}>t"8׵ay5OMV{mv_ɯ]L(DP'$^mm94Ujziꨤ0fEj19K{vnHGKsi9k)Va=9rQ#9ы{=c& Z#Yq ՗]G[ެE=wV\gx/ό(yj~=U >@g' 6 ~9iȬe@7؉'`d2:;W%Prb&0CB6ч'8(BG/ a4v֐[Qm&l_I=e-*j/a {>P7l>x0QO:Һ&G849V[_s^ve{¸  X?ZX2B%__&sx{}XX69}$熇ٰ8[?M%@gq,dq9yO5JGnF?y)͊7iUrm}NV,=]GuoH)QFO+@l~Oz@(hV?M(@@iFqäG!baD(t6>I%{S\IYɭ8J3hڌ:'[eZMj;:LxGm M&RM쳽w\MBˍaY-G<6ؘv:+Ϫngn.ފclOe~66"ZGe8ӯU᤹IYdq~H̩, ؆ÓK"=H8 XcuJm.)\ўi5獻R1s]y_}:uXso{g2%,2#,:ׁ 4TM"h[96η.D[PCȚPy8]C#7', :};{rc8r8* (lDa2rc+h0c,\D0P/'`?Tg۩ )oRJY+! (Q՜՝8u\?q wq('Zwߑz _KRnk/1. WFo[Y c%W %~ƴx; Ÿ,M\tDJ*& #:Yn*IUK}&>G{xJjHäi% O|T3fym%V;Q8RNd|D%:mkLΘZ Bm)JLmȴq]!7V.@Pxj3,xJӉqo]蚍ZmIdrF&FRqMzm:*Jr`20M}s<[ΣX1<&Ȏgycq܄3Tq.c::OQׂסl;7Tu1 ,C.=}n57MV{[G6CFHiM <%/'_lTB-j:z 5¸0|^l4|e/9)~J!;KDϱwT8(vκ~dMQG5L#ghBdd+8{ &JɩƺONi%4*Lڐ 6u[ k$AgJSFmq !g(,@z9lB8Z=~XP7b%J~J!f\S&R4j5mMqHkd 5Si#Jil?т瑳gy^?-A`3n}낯῜=A/ \wuw滜XmZmί(EY&pI6cSD(0%l:}lX~ʼn'[#ߵn$baC#5y2갿Op5lk#ٚ_Z>y;7}t!P 0 xP|0R bN2e0PS}yًwTRܷ'puy'ȹli2AO/h)<w jF "%ðIbfkL[Z76ϯsX;%fdیOњ_ Q|,A)NktuVlBfĐU+'.`di6776//!.*sziλd}ߙIw!|&KvM`sppv`ܷ{+_v8uE0 L6}A&:䊓ײZ좵8POqonwxqKK%,l\w#g}N+.ST;ՆdNb%4}Qu<;/gI 2P€[b (0tX#HĈ26SS :Hp̯ՖA"*Y2mzRTR3jࢉa%xSA[jt099$욌Y"DBz ;'dYM5ٴ,N̏PW[~ٔ$7 aϾ4}JݠTM{;6vcSQUE\/7/RDVuSVơdcъ6D(N؟YokO녧Ο;SOT/ZU׾[Ǐ}z u)x ?eWF. _^ѱYS:! PU v͝џe5=NbS-jTaÑbp /MېeG&kv58VG.ByM`b)'cfA\dX ( $*,9dO|g/ nA[@L2fB zѸxm6hgnZ[T&MX}$tBl{3Y1hG~VOj'@')qi kDɠ R*űJ\*]2 <5Y] ˟|ڲB(0I/~|?7<tL,^|~οۭc}ۚ׾A] ߷N7`.#Bi4is`ؖj|ڟzͯBb}w.ǏϠIS>>)NvyյW++{STD b&t_I"QS%%%e5(Ud4T藑N[ .4瘲N&fb']SD7lk6Tyպy͕bb0RGg}jK*?]Y]Qg'^ZpjqݰF Vȣ:?2ueI:4vJ tZY7[XDEAMU)-;MY]5IՊ}D meT2<?}^ || \C"FT}K3U'ݫ=;Wy'L8械“{c:TOok)%Oe_-);?U;vvO±#^fPDfc "3ovE1}qޚ|R#a=b間'D(Gb8g`m"%]̖iV,Yv"Չ_fx\ ;c?CYj9?ɔ4YUb뀣O_-͞|B II Fvѯ6Q39&LK%Kmd-ѷ_JVm9bx稃#YМpBp] æ25χ پ#rʥ>r ǒg*@-UTMMX8tǾ0oPHIYgyۮ9]pWc#w~m>{Hel9 _VMo,/7u'GJ F>1ᎀp`Tgb=xmRj!ـjM;o 7W{ OUgTWGr^[W޴RX0_; p`iZ#SpTM(W@JqBR y47WBhlL_ζVzt} BH4lzʘ 񦑆^lK ՙmw` (V5MW"1buBp<"LFHJ$m 4}W'Mqi44ћ<`Js "?f}Yv_K~_> <]DF{d8O_tL*袕#]khJAwFji50uVdD;PydH ΂CQ\;RN8ʣS554=Al*{/ Z`0:DIuEFw4q!ۨ;(uHuv;m^nJJ@c2Jsğ1 F^7j^|>82bGp6uRJ3|̺)'ށqCV:x_9V'BK13DigªeMr0.i;,¸1,=}o@2VoՏO=t?7ӽT7m~kƸQ4NWm4#FM̅:j 0]uQ*s*٠ MyǙHigp)d;Ke]r]47bt*hF8t<_`SqmCm@e<]qգ|Dz^82x9 $6ƎMNޣ82.J5OQ4])P8İ _#FLb,60<[-h'bڳXzJ\s =O|S&fXBjTa" WZ9xHY?\(jqB}{]p#|Rg tUs! ΑMcmCa@WO% ;7L2MFhFḁy&0Cӏ/FB*,bKXK! GRDg:0r5JNMT)1ҷf<R=iO6=uݮZ9e^>jX-&n4(9mI A5QLzvJj1Z2:r]=g~:J6B4-)JR#yPABi4t&:mfͲYp85#;!x0(D.yBx4gƽj),'Z5Ԉ$aE1׊;\Eg(1I)QմkM0ZñI{3,d,}.f}lں5*cq` dW:|6*reSuVBNWG=85?ZĂ@&$gU+Wi rVP#ztSs}j@#N\ |ic?wEw=qSy93g~.VT]r&<[nea]ɤjb/&~hl7Z2R5r1RўtPٜf vX!T񾙛O5|3&:Y"A<7@uH 5>NFoBF&Էf\3f9#FD]Eձ=C7fL2ha䰝gw6SU%`W4*9Bbˈ6|@ 䊗JPDbRߓЉK"%gϸ < |7a H$809ţQ [z`h)c̩|&ab:`r5 i BFەu-FUEf;s%Nr(:V G߷6? W(7z?w۟zp9So~&X.;  i y-p;0ݖJz/!,̩(8kMt˛|eFeGcu&7^s|r8>g9(Y3=2Q^ǂ$MUj!do Q%-9yk P0qM!&hٱEK{f>_ºiS4TЃnLv,0Qw.i)!t>\E¡x| F3IekqwZƘ8s~k[ɸSW/u;ޙ|zP4'd󇂚y4YB4WIb#mr(**̃pfGXM,N St4 Dh6G[S笧T=iSxn He;'~sON^T_qu2^Xx-ݿoQRSfHnlI+a^!#5V'{ψdO A-ҙy)&I7W#0=Դ e¸imt[qqvRYCRj3lw}MnxK4K>'hCW^v:L epS7Aឯ&)7 N}&6P USHFZ J8 bd356xjd;H0(']v,+[i1]BEg$?}!kGYV'wrA@<|F{ dzϜi4Zo5eCodDj@B0#eï"q] )=Ni`QR9bQ ,uRη䖛ߪ.4QЩTすE.tNBTA<ͳ l?>&Ee"ݮ#j :IŴ' S&US}q ƬdJm%P&׵!Z|G\ef|+U0㞰*ևޱ騩0,e8h hA|2?Z9H)EA}!_ jthr50R,!AɏU0yߨ;ԩح&-zv~<0td80%*dU69ʰ_쐝M Da5rL3"'T} ZF|-=+N< rplzG =}o·|-z8H LQƱZ5#ZSY:\ RG(C TpEܲjbj: Bf&)V +б2嗫HPN\о[$ޗ퓝y0=^f.qX US#mH\(@g,N3oJ2'34VVQ$Y!"a'P䡲eujI Hv|ꮯP?7}?wcoɗG;{by+^'>dozVuPj")R2㹊TD@TQƢx"z:z&9X'L}N˟|7 ^Οx.?q gzߢMJ48JqH&16$Аh( 1ǎ;kbl¹F/,v>QXPs֮ o EgξHkR.;x *s,1jzGQ=e#|+?=建8%H@c6!?;T^ݱ: :kwz9Y zS^Y5fC/ v.[[nx҂׭m5ת+PZQ)FјNW蝑{X"8u,${6 :dkmdg?Ss$Nl<_z+ _мH~.{VܲHS"NzYp7GP_""z3 0fcVy8)[,f{qTo*ɥpˁO~=[}~~(z2^g7ٷsC-=:+e^SW2,gx4ۉW&b!c]}R9-й{=uԔs+Fx5J)5(@z2=^w}5-E[6&  T^}Im8r.lAy( ͦj!tt Z1ڮI)$M zԴ㋟jqa -qǗ/xEFSqevo 5d0̒ O~_wGyƬ+uѴ[2;8ҝOϕuG?+7x=qv2E|V b)50wѸ 6h}P^˵sBG\Ԡ()΂mo e#!zBLLd͔]WxOن:WV[ӲT-37yeo< ǐ,,%i<0[vɀ`JBYѳ#"E&-DxM?=~<ɓ.^;੮ghʧ>ox꣢>o|PQ6̢[q[8~ t\W49[K؋<[o{&epfDC&OYXo cdލ}:+E;ͪ3qPrn)G Iƹ~Qq C@BT4<}yOv] qxOA;M&^=WX˝>x[TE&T!~DsM1~J VseY,YQk>G_eZ7f=wt΀:jc-q`~)@F`)۠#,|$^+e=w'4ND$N/M)G*{dM`/עagrA@jtlfC-d!f\W"pEGY Aϒ/E7E#?XGe1 W{ >DO*+5-M`LcTwLHzG#oUzi~ߕ{IPNq,뎏ZƷ\㸞=U| (BeI5hɬ6oN:4 [hxU`tNόT<٪/䱰ʛf@TF7K&e ۵H5/q4b>goЇ>H;G^`?D(,vn'a)Gd<ۛcEҴ/ Zdއ+oB="(r:jqӧ.ʹA65:|n e}7pÚ*XL683`,&ݛcn{H:_X:檓 XroZIiL_qK} h.kBĴ]r)$Lʠ#9%rVTM@(feqпS9sT0eD)|;|ws$U\qDߚ|~y/͸JV>z\q4dԒ xf 6Wk; gc=5ܻ-L QH>)'IwuαB+ۦ}Uڅ`JcA}1kp]ա%[/ МY',.N~'dR) nL%H̝Zq/eWΛVٍh!Û푕b;*RxO^=:e}#Y oՓV7>Ӆ}eʀn_9\#wc9} mZ?Ӻ㣟nA>C3x#;1 &lDwzG+\}`JE%gHˁ="3mxOߐ 9g¢|Tz%T!\I7IvTozRQǝ'7=g#NxqN SWrǯ|V #_㚇JY=Oc׳p+G8?Opxw=\v =n|>hYG6?&G:v|*MBRбJDґA %M>01xڳ`A:|gPF\o^U cYo6qLlnWP)W}%0r*$Z萵GŒ|^=$jvt_= Y/#2G\/NsǯXћZ0T|AnVngoGfGCHQaUedH5W^sZSRu.JTRŹ .y3%TSޜwJ.S*Q{K]Rř%|\y$e/ċ)}WUS_>/A{6P<]y-#%k⁳_Wճ5lIӵƽ?UOߒ/;x/ZxMyNEdcWR/{jPl҆!PnNPPc=ǖ=ffdGJ* xc)-Km8:YŎ;;ae04|g]0?I˟f9t/_vWyyoz'}Y;?#NHJyHTH܂sNx;O2H ={6\DtNPL:J%qO8x2T] X?Bv(^bPj`u^SǹH{O=/ˣw/;*=__>ѯIWVßyc=kS:w~م~{N|QOC׽Jt];֍4p)2j6F[ ɖn)Ft5kīKe ;Ѽdj2Zu朎z=R5סV+4 ԛ3|@q,.WWW?ۄ{^Nvzv/RuNs~gا*3Ssip׏ %ݸKG=f9Vt0~~vDFg'wz1)Aٰ)JNd]6{ )jlU#3|d#7S >/Q\&@'K>v۶7/?o|>C'nM_n?=@z_HP֛sR[PR#ѤpLѩ7*D548G TqD8*CDX}~!:+ߑ6<$R),0N̕Gꠜ޽~ڌzqT?o?wLSQ) |{^ F YV%Ղ*zfa-H0l֌yPWsA͘%t\#9>q.x/ޗ))Crco!B<ٹ"sg/([nzJp0)/Y2 {b6_/UɨCIj&!(6"s3dkF0B%k6դ:Y;_mԓQՆ >ߔ(dN;t" Z/Ӹ|-_(,c [I\,0)`jN:Sw=] V\;yɵOdĴg~oO{3%//wB nlԺ\`}c,z_e~sr`BՐ J-1aMt_5"==%&'>Եr_E΂+N_n?:eBM=?<: DMp|q9 ۥB>ޞum }:u ^;9u:a 0H\Iuk16\vJ GG_59u$/l~Yv=YFr>yOgj]oŪ:A""*1 eȍʧL4IyZf z_{F7%Baw|Wqy~Rpiq٩kP5m n9de$feJ&?%]Ǿ%$.ms] nك#P:)G×!QLiOdRޙb;{uO.Xw|w}??:T 0֑r^gHeVDǔQ+d'V7`]Z^E;?;<[ԩX.F A7FXi\qAbp. [^)֥ y>ӵIRz:_2Qvl qBo.60 -<1z> p-?v)#xK"s trg$|MnzMojiU׼1mfbI*I u*I{ LhhEZ.Іֳ.X7^}.6|۴ONίwL q[~#?:"d33 yG"]`) b hbJG6~srs$z?S?? e=K_z!5\o}7-~` idԨz U\0:: MNj-MAk[_?:z!h=^Z]2*c(>t4'>EkS?^W%!Vgkfo5SXfy~?՛5nA^dºY#X?7L +Ɲ|[#G8XT*EGeKs .uԆ*c7~퉧n</u)`_!zno˩W,n%hQT 8Tn, ^*>fena<IT x_x֥6Oi`e]AĻ?q *DQggY;<"d2b!ϘV6R\|9;RץcHt$BJNP@Q$~E8yzXȥ0'[Ozw񾴞|] σU>6z訌\6鯒<>)h' @ $8 lddpĸ?q{P*1ejU#YMn#xC~eUI@T+EpMZՀB>⪣hmH‹Xɻ~EBc 8j !T6iD 퇱.e/彍c>>||r<ϐ3˾ԉ{frrG$ 5kg~ho{j,oZ4TP@@:бoc)OTwqs7rXz]u}_5Af-˭˺֐ !=Uַ8#/ 1Xpח:o\!Qȟǵ M@\xj6uk|AGtӗHuX Y9bw=5zFg^!;`C1%jԭ_u)0r>_)\ǖ w>{ÚD"D:tTʺ2jځnqAAb!Nc¡N zÌ?$7o^ ZZM@2i(N|T֘+EYc˞ynrųY3hF#H'pd,Pg&"Uɚ[Dph5p's?2#)Ԓf%\I[9+]?KY d+JO:]]_ł+is/ӟ;֏|ZvɈ-RI  65øả$a&BQOeߋcʌi`L9eJW!yt}y|_..brRO8_#0`B ?AU'ziHԡBRJƁaɹPd-&-&gēk+ר˂ 2~BZ T68ѭ%SPץXˮjN_yDv* eg Qh܂#+aI4#O%?^QRpi]?9Q!iF)(Պ";_۲s>6* ܕ;0qS1@B""DQ HD" B1`\͹g֜so_zMes q}a('s|4̭ЙBh;Q+ CȩoJ'H PK"\妶?~P3?/wr? pSz\8l|n"*BƮ5Z74&'&h#RIi@}WO|tvL>=k|K#0 M xx{|69 eJGLwPuU&KP0h)@TTo|w2N;ɵ"o/~y\t lԅC8o;^ H8 %D['ƚI_ 40#Go{ -\ƞ׽qrQڮ"]il$⨯C81)OUzENcqT.)*Xt7>77'?t5 $)zb+'Eΰn9tMcbF 2*qD "n'^kEiC &x͈@&?}/ݣք $vUx30`[ۉ\!ppoy+;pKx%cW(]]Kiæ ~S1 h0* bT@GE\EHa g2~FPp2Pq67@m} RFQQ[BhF7&i8'{._r5֙HC.`g KB !? qH2n>T.yA4%,?P3Ml_jZj#d"vF %h=L_?@ ^pn{/Zp}+]9g.d&h ԄkBO.}r׽ #eY31S,) $x ΃fSřSwp4EHzf%}))` B3iS!3\H!zN)qp 蚀![#rAƷ`j cDNI׮gvG gHI)^و_j!p 54%o֘ z\Z0˴싰o0k, vԸpOg;d7[$ݗ~ 7tK}9vS"q!@V d뚀ͽkXLY ֜V_[4x_!9xPv4ZaEkNw48Iw_ [\w 63GEwG2COEGQO7%J02e/lO v~/~-?#ׇqz}P=(J<+}D*fP?$5 AUv'LD=!;">P˝۬]!p 83}x ܈ٗ @R)RR"Y03p8֘߬{Y *s߿5IDATrdɖnƅ=/~Pb>>1̥ n 5*aoYNBaH9 yϴx_<{=\$x83JiLtЊTM01FUVFȟwŏO^pqhb D0ֺ(ZiQm`BthEH%Jcvl۞Z6ވT W^hB$\8[y&"H2&_wwO؁^ݿ!"WDWĕLjRBhD8JkDcY&c[1*IQF[aCF GVJR]~lQx{xfnO{Û<]j-_cN}uLo~/73/y}TPA#a\1#<4 C&rR+>5(M財)UW ŵ h6C)2a膣=<'w~^cxqh9Z)U6J QPԈg,\ﹼ>g=&Њİdؘ! τ+0d5*6ͺdpJL"\f 3A#">/;r6*?4,EՙK8sHz!- " `CBM*N{[<mqm>eS0蕿?ۇDU >4])9A=%Cݺq _<ּ h.&D!ibXm7FN??8ww%w_FjvN)A=F-+.>( WYK\/(.0Z9wo]qsF6B IwI #X⃳=;Qp޿WCI2HȢ ㄹX$~ 9'+έ7+W/yy 5Ҝ 8g`8LSn%% b&"B ɱ:?23e?#:'`h$iF  0fXs֬tž&Gi*@T U9=)v3tL_zԲ0(\,猵5*72*ʄq- ``?+~! @#" X33ՁK4%KXJ 0 AF(Th;,SS8J+RʴZҥsxTI1;;] ~󗆎Tvۙ   9J^eV]ZhPU?o{n?t =X.o"tPj7L!eR`AȒtp@U$بcb0 %f#pzY3];] B4Ƀv'/y#і4P5J&Z!  XZ6ݱWqFV2~s[ ~H;,җu\^<8PUWL4SȘ(!m;j$K+Հyyca^s_j%\|HZaGb` F`o,:3bEL_e*Gi %̕hW>[?,iBvxYt3(@R#D#I72n xV:*ٟ'r O?;-CA]#jb}11Qb3hhj0J$.b1[d&pV PST-+)jd bd3|b2IkX5&l3tx7("LR5꾠C^uFRh )Ȗٲ4:]ty2I*cX$b.̧fھ:6ʰNTqj8T8?^| |GY}@,J/R}j#ₗjb%# 0[xcA: RÎ[w^T,f#oLiMW}twnPq0$Ԅ2N8-IAk7Y:o\w{EL-3U]4g;/@0{\ȬjїW#|r=:FI2bI$ 74 >m$LDXL65~k>mxݛ,#>ƹH`~lҚcct9=Z)M*ˬAmяL}k$tj.8Dݝ>e2.x3- ^[@R!ĸZ1:IGZ Z(e&p 7R3R(CKdR댿:P[_? {wGi{|/89QdN[,J96Ԡg!,P3QVk4"f[#I:ޏk˯4(24?FkT^q}+RH?xYRI2bbd˘vbg+)Oz/<-K?ǷjL=wtҔe{0C$]0A׏(CO#| N>o|ӋJW觴/M 4)ÐSB| 3'4P3Fc#PfL*N K8P\4˜򭯈v(24Ԡ%"V'YhoeC.5i%麚*B^ gJaE R:$pjuɌa~Twud 27^瑃ⓗ? ћs.Y@蛛kU\H:u*Թ ҃(XvAv#EFjt F)#x -|Jx׽8>ezPi$q#!/M֜hJ,ZLH"sZ#l ߋ.5<p>9:u͹WkZ)}!hLh[Ɨ91'8AYZ0ȍƫ^Zv<4)mGѷBFUQ͝)oZtqSz;w=W',N Ǐ_ C].k0M*$C"2SWj-pe[sycb!8a!7g:mˍ]R.>k`6/Bnibx]5DA]t9JadMUZk iF I DL_Jd=xg,LKQ(eli)^s)dUq ZԷX{N) 7 % %sӾw Oȧ~J.Q&l;x[>Z-`/0d>z8ZFG.Zp*5|:g3C8`}l.&Dvn =e.ʍK`Cf\ ؐVt zfdKd> hR&Zh$HFGUUm/?D'Wb%e|<2u7~9kSa?O特(}I(ڐxK$'AL囿M|J mK~YIyj+^͐ԣ-垇Kz]n)tً"p,nDftC. BELjԢ13}?]?-'>?ey`˫dMAiB0f'Tkꠉ$ z4RBsWu&lO`r_HfkuK&%kf OB%|g?7]a/{^+r-;;x1%bzu0 ܀ĻDׅM XD',aT^uDT6طʩV6xl u-G1nqkP3N4/K-zG1'LsR% F=҃ 8SSNٞ6Vi(1LV!YR0kׂ%\+ <Ⴝ)6ؗB N<䱿j=E#SZAsTg`UFLAjmRk,wNWs@<GST5)Ђ!K)luFR䍲e>:<$+t!i[9o{b,3FtL׀!X_4+sIgȰAh㽬JR#˜k~|iO<$GҐٻ;!i5l6B7N.%g}W9R&GCcEo?zner;񻤐Yߠ5Z$3eZT93Gƃ-;rJ(Aac(1txUuqs J B/S3z9  !>Xh .v tѯ0 0(F)c+#\reFALQF @ Zȝ ))2Og~ G IENDB`gambas-3.16.3/app/examples/Games/BeastScroll/sprite_barriere.png000066400000000000000000000144671411575327000246150ustar00rootroot00000000000000PNG  IHDR$(pnPLTE!!)!!)!!!!!!)!!!)!!!!!!!)991BJJRZRJZRRZJRRRRRJZZRJJB1919B9JJJJRJJRR9991999B19BBBRJBJBBBBBJ9JRB99)B91JJ911))1)BB911!91!JB)RJ9BB1111)1!19))))99!B9!JB!BB)))!91B1!)!))19JB119)919)B9)1)1ZZZB11)!!))!)11))1))1)J9!1)B9JJ)1!1B9J9RJ)RRB)!BB!ZcR91)))B1!J9)!))RB)99ZcZJJ11!B99)JB1RJ1111)RB!JB9!))91B)J9KݹStRNS֤஍.  g `IDATx\ c֚E6YY*hlh"lepjٞ SJھ4e)Û?rBhiaqswEpS׮-]e弿Χ16Uk y8}M*%, ,Ue=әE\Vw_|jnQɬ&rM1 a4mzV(YqywǧvY%I8,U^^Z.y/ajt-ǘʘOky9덿y]aUZm17L$HtU,kA4[Oah9.a[QRpFP!0IhSӗYDJ> P2 ulOL`¬Ғ9w0LP^?&۽wלMliab6t0#I|ϾI*IبLBz1X>o TbՏ<0fA܌ld8Sq̊C3*nB^>MI*Q,3X%X;m~vF:[. !JRa$dT͵dlλsN)HL8:8+9KB6Zwm#(4(P(#kdٞe`t&qol6݇40DIƑЯӊ"¡ZyopSƇvU$$=(i@wp.9F3m>I1@5YtJAOm?nLcp D S8*4[ ΋u_:h7w Uⵢ^Xj'Et`͝uZ}%Mfœ!I낰(tg+0<ߟ EqqqQ8C'-[ݤۋkb{#Ie[V[u] , P$Svu7 ΚIVnZA7V3Md&۩~&, -(eN{grSbFz1QI/jqDfC&y :r$1>Pdak*P|8ЬF㟻P L4[Ow15ǭq#h|złm:aQ; kAE]@ !U2a%C[_\,fk*\ F`[ k.fM)±=N EZ}aZb%"ހR D#kJg<GG~Zc>x47{h61I$@Dt=?=s?)"n0`@LmHu K$whsQF=oQl%w7pI $ o.3Ԝu[=ϩ0R.q2ըA&H0$!n- Oxۤ%CYrf@txT 1sɑQ vbKF >cx6x3{9SՐFT%# NիW3D|k2y KSw7/fɹ򤒄TBjG ٲ`J7XCy,2\ؠ['8^䴺[E(Y3(ԅAAnb7wkd19'ېmJ R,c*oˢ(\^|}hEJxE5 ŹACNf/%VAIp 3Uُ)i8~.8op&瀉%J0R8d?Im)~Koq N,ƖϩB7N"SnFY!48/o [/Qn7 h|$xEߙ@➋<ůi8`*DJ {.IlR:pa&pb?iXp(I<qb<ؚ+\bŨ8Y[*3DJg?Hz1GYLr-r(Lr@ #n PxHejo1:$*-*zÁM|dB/ <[aQ(M'EџRPx.\pI1ӣHj"b?,7!H.ȧ?Bb%RN %d"iDuRnXj!Յ"^B$q~(,ț;WSqyã(2fDr(<O/ȋV(R7y#$bSۜPVi͑¹p/qY2ϑ8;WOJP4O0CbtPU$CrӘ(`+#h+OMzZ )ihuW2)=5FJ÷&-lf8׈9s|2$sְ/mC\ss`*xʜ 'AmE/@aHpS,bHp1fvZ>wO&Mc=E CU&ͧF'dTw(L{~xq(P5{c$DHCoJY(W ]OJ<ǟQexN_ C& ~HD(;<)1ӽr/ *9.Q"W[ْ CX_ RbAV2yTx0PiL24PVbtT(L kSo:AHq( S$m@;?ƯAZ%)iIMmx<4+:ʆ&znՋe] 6yxy}{u\>UAR'T?u#rv_?PRbvI>9_8D Tl!Uk[Bģ9,䷦zCkRMl oxEE?j@[;~5 `:7n ^TTFe%mTFLӒvZ3C%1Uт[8~ t\J Ө.] {"u&ɥBm۷jћ>,*OR _ %>=zwsA!-hDf÷u}2E)^`ҪeQB)J^HN5,Ho?Eg:op7//&ZXQA&Qd4ho1J % }1A/nݪV߸:* qsNDD>m6wvuVuj=ӂiU8z# U|0_|Gc*q2.;if/f2aT+F򛟰=Xuj!{RJ\O_wcM\k9C0 BS.W}*ɖ f*˫WLp*v+Cw~\tu~{46v:N'Oq\bᤏt,H irJTԓ>#M/Ӧie\OpNǏjlQf{r"FΘ]TL˪Uqѵ>u8FM4KEIJ)ag5qZm.byB,MD5禎>ްIrVʄ蛆%|TK1>zj=cn\pf)54)XRT]-Zce0.6YNN|YPGi@I_jN0'©}TW" m îR8i{.zxrC]#7oXFtR}9&O(UcEsyzVOzrQ00cy`I?dSէ%h^_ljY8Ɍ'i%IbpT(-=[tt4ƈbǙcjcu,2-ggm!]N/i|C> 4l_mq]{YSKT6 .KԄiq⺪-)m۟/П Nm=8Q6>*Aғ%]>~tSu쪲*_[Q҃ђNzWoxU hU>'d>, ("uʩ;#= l&'č2 s#''ln3-c׫E ~u>BiJ}E>}^-ŕEuw$=AU&vGp) %Q2r0Pਟ?r#L_iOGRGUaz]W=oɀMp@A m2uUdTEIdw[.7( u8CA*`r+rB38um]O;/I&K4gD:Nؿ6+" e<[U]0K >Νx |Jr.c)~wC6$;aM(cTR$<=S/. R*GfDP}DUĒ^R,di8NǠO~+$+b((Kʮ.YߟGIa2 z9cyX;gc CTQ23 6,vZCzTV^X_]RQO^`?T75h2嚂iӞmӞ&w '1zNtNezx鯍R_t'byce>aEGu+r uYXb8Jm:o,GX%r'|mA9QÁcrIalp'-??qBm+y@ ڌ|]RL5Zm1e W4P9/bA`ApV 끬5xb+FlJn f:H]aQ•8vXNg5G/r8R<2%-视}tYZ:wR_^\?ؙT%㙫SWgUJ p<9qGG ZB7ҫ`ZE`y| H1J8Y9 ٜO%4I(I[E!9m2]hRDLC>|+<#N@WU R:UPu^kS L/##0([†|f<"ުV~vvwt]faXʠXee8.{s707RuTȠN `Bi\Ͳ?۠ON~oYDžrOei4$tbroÇrPr\\U,4$ pKb?9Wrhj`Ռ%BH9Z!Jl8رu{l?ws 8 ʍU&s NmbxeٽM#|ܰi"u?=-wb W̞8nD+ ^:#<#_)|$N[|;N`-TURauZZUi?*Ɇ4HOyVe-.e\dO"ZH7u{l& r`}iJUݬI.ղYqђfwb.qּXdòfc+DZkC`90hNQ&K?=A{xKyIl+&HGIq"f}߈>_.LU-Oir_r ꒩n"]W;XwX7e:1B9G?ժL#)&E !jF/Y8ForElXJŹN0C˜RQ{Oca7Z仭jX?TG;5Eh;%RLXʧIwj_\/Ϭ @Kδز]cg:W3%lD͌g+VcQQJt/(!P[iY 1]%]͙EN*; K^\ko3ZAzM卅+1;EN~pǘ< ]8**|/U5&)e[b,ĐHR>җy!xhD0$JF;9cEyZ D+Z7Q7ͺTjp,yAN_Z/4ÜNNrcz̽Ag ǑrE}#fˊ؋;DĊ*RLeq/UъR瀟;xݲ cLKؗjbbe(͎RT'1|\Z]Q5=^StM-_Qe]u3ƊM5ؙvi*B\4ɯ+ix^5n.i+E &f[5SiakƦOLǰXl-^wlސA B#! 9EdžyENtxNEIæ40o35 fy7=Ye"/ M9cg,W>Mb2eLie {si$|Gy#G?KMT iT^\;33+Q -3a^`a qp:tfxG_K5jabEU]Жp%2k1VAGIjvmRS)_ kh_W-&o8NQUzme[NlsjKTi݄E*-ᑓ9RZ͊y;D8e ԎHdYoY.!T~ZֆiA6)s/˶m`}MFoނ^RB>_5Y<52r\tɆL "a,44uf/絒O_,.,\҇ax/aZp lWI4bHg(t͠Z ji(#@!C})/:=2@ Y( B2n^g.>,Ԣ^58IKൻwjotD Rv+EWixyW;0~V,\Q+/g[l пBm),"[l+)L(H&X~auNT* F0#t DHR:ԧvs7c^QѲ vR1ݾeBk>1 Bx+\&i| p 1uʚxf%qOmv7o S&J|mbzWHf*Ec.IyThI4swBƚGnt{Y$ػЩ%leE~O i׿; 6~{bޖ̢8cڟ<{uv ú5+wx||Q'ð }mnvf6I %wWXd^:%w~WeH c)3#ztDԀАNE_ g˻ viOu Yo՛G{oFyz941wGf[H2έoм=:w<#7Ak޽R;-591Ӻ/qg*/L}^>@/5.={ؘ, cܤ$il j>o+tŔ0#s;ٰjS)FxTiR]R>k Dh/O,4>cۖCŹۤL+:AxU*@+uFAuYxH8oAv5ٽ.S$Gyb e{XzroCbˡ`}5.+qdY٪d7j3qkl>lLQ=:^<0ܢ7H"`l3ˎ[ʛmW$=ٚG8o2cb$e+iF6xfDeۭV%sn\قB>@z]&+vbw^NX'\H6fLq5$P_lJ4|'81yw_X\+2+膈4{v glJ Aq ?wHUYn˔*:ЋVD++1gjgXiHt )Pu:1%E){sχeּ.giv JIa&vJ@Ljj%ˀ{gd[TSP1n};=Lj6=ٻc7 a[@c4QM q5Wެ'K 0f1q4}[QsՍc7yҢȅY9fy_fCUj@<CI TA\͟C/3`GqswG4884w֋>2[I Qij.]B}azKQx u|XЦ9u7h?,fa2aFVx`]|9ɛxq֥:m ́iOmxF@8-z5Adž`MF?LKBx ̺ )߽?Bzחy=GXJ0nku .GĬ)ք(Je# t+mXbٵiT+]Wy囉TH&P$*͠I8.X dqǠR+4 [ >ZPɌb5fXSS`צ 4[,[㫝.M[oQ]ލe r1rkF7## InD 6/P6۔XpV0ѓU7`O?&[PSf徹9/!ǣB@v$lfpv#A`8a-}mwvꮒ׳4[TEPh#WPkbw-3,ų9]Gu2'K7QY6^]m)jsbB g%{XZf۴$*?͞-5V׉azY3̆=D{Ʊ5-eGhs~o e$TlP䒵# S][ 6CĚxs ±y1kywp;V7GHN z j%$|17p N2=捌m\mϝkN[A?i }Pnm&đ ֝[_U~XdK].ěwެ{]jn7 y#[n0@geڢz^B+s,Q^ L|TS˴wCWb>xەyQ-G2U^[a|x1^jFŝ {#mW[TF;fu9?m<8>8eGQ'(E@;ZrDI}TѼEuTBʔ&;ڳ ޶yM<nGK(bpռ Z&_{  ~ ]‚ܿzUeuG=R=#E8 }x!^N=-Q j#"b\&Y8 ͯMWMVFU¼.IPX?+`"uy))hqf½t _5Яeuy1zrXj=z5C~a6˜qm&yz+xmjr8B7K)PB7&hf0PU!O-6]o7A/M A~ݛgB\":F͊` i4{V Ѹ>`?.L 3]xs/2r܍cf4 7D4զ2펠o=}F[_8t#QQʺF*jy`I'.W:4I RAI%!Qo85ؓxuw?k|>?LG>!e3+HtS*@+qV\8W9 |CJ>g-XV1s@ﴧUB6kiڵ2fyiQfLx!P .X2hlq6/D\NUh[U{_UZxXƹnjZxLkR7F')e&ϵ ֜{T9uESnM"ox+X\U~ 誻̈́3ɨu{qa{-Z@*hYQW6,¡ʿwd}V,)4ȻL4mjRx`0$S[y`p`{!t^ț +qB" _&4LE[`\}E;;6:Ht+ж ©]&gk=ޱFNw$}A UQϊQр;V򚏘K(]= ZêWߠ1@ uXKgdT(.yx w2zN,:@te(=ϢFdZ:E.UF'=snők?Ȕ2-޹G_27v^2yZ w罝`w;U!2~;H:x_l⬭޿J3ϾW6WSDuQ ~3ހjsRN\2 ƌΚZLǬQLU-4 vuFrP΁fyh @IG̷UanRf^(%՛!̻^s sjA=1U*]5u窋+muՔb!}pxa o1Vnևw v[ްROែ{HoMoZatAiiZϨsM<;q>F7ý^)ztAk<9Y nIFHuۑVz? _{Ș6sj̰.kV y2Х'{,5w!7=`RWx!6 BC&:ͷkjkM*}֩{oﺛ6; o_p+^.{0|mզ"۪raӿ{ j}]1kbxlg"!պhOVicOv ,t.^{I_Z;'45}OޅZV@Jx![ #xME~$.p9/ntp^8o4䪶;ړ!7?N5j?ЁAr ?ïqH Kzf#uh磝vZ}8Vv7>kqSV fĢI'0}yͽ{dEY_!&, oa ) -9k^ _ADKޱ`O= 7JUmRnG[)7 ڤnL:)J5Hu^!Fq׍k2Cuwȣ<8zFȉc:v>}ę!TYgq>Tx8`cs<|o&ޥvov߯s+*ZH˼&"F7%S)'Hgkn0scz/j#@Ai罗b(FH+ -(Tvd{*}X{;{~4sx'uoS2Q,b ТUǓ+Ƚ_]ESށ.G<Θ\XL<0/y߹ WԶe|[}O1mM rW]!5ۭ"nN8"6]1&9^ vƌB}r7)GDx *(`:xp0- ߖQ{vpiaBOJܪ;'cT5+?xkCBdDwzaV :Ϸʻ k9;QdkX1}zx{Q(9 \;P\=;{޽? |hpN8tG&IENDB`gambas-3.16.3/app/examples/Games/BeastScroll/sprite_nuages2.png000066400000000000000000000117271411575327000243620ustar00rootroot00000000000000PNG  IHDR&c>PLTEcckZZcss{ƌ{{νƭ޽ƽֵƽƌƭƜƵcccνƵƽΌƽΔބ΄޵ƽޜ{֭{s{sss{{{skskkssskkkkkss{{{ks{s{{sss{ksks{s tRNS@fGIDATx\_ƖFH3#-(/1,Hi %Ky6eٗ&k #im5)c˒<9sh.Yvd-Y}oK]rmZt;Av,>@ [tSE:v;Rg='^n;Al7l_k0ݜE% [K0SnU0a~=W;X~\4Fyu;M:۴(n \xƩQͲ /Y/C}V8m q}+{yWø>X6($2_nXS9m'ᙔ 8۵cYW\ml33?L/ |lk^a>๚0YN:msVVi:8puݲM#7dgy=]_YUuU K#$T_'p`{Zh?mO+׏{xqez~QCAqͭM]_N6 4,>ZtD\${T*\spU+Ilե@m:7ݭRR5`~ԁeٮlOZY}!$wH /W՘Zg=]\xcm?P`_nwmݽ*Xav~ :i1M  i^YխZuɻ7CnXsyTYꠢB`V3W #NcIg_Wߵ8ă0mzeZ0_Vs6e*\}(e=3%Վ%<⋙5ⳤ0ŘsMq<(Y_tGp݄W=)DgKI84'r[eaI77nT)`F? _h?rm=aya8܋?ĸZɮ߷mnYw2dWkЁ̴jC 7%cҒ"]^ 8A֐{6lFU}#O =ÃIDܸfOo7Hr(NNEŀσj\43Ի}=F mR.j1sn~RYC&qV]ExNg%Q]!$4 ma+>G:qA|ۀ`dTyY ?~ i87MtA͎ۙtF=/ we-O?vs/Cޚ/B !?{]"鎊N|ޢx,Rwf9$(.X>) *lzB5/ٔ!zJ&[}?y4ƍ3LeF k |f6I!«Q_׻Z뉑s:= ʅ,K;ἝL#n0aYq TC  ,`MAuD~Lx50a,ۘdP W7D|l5>A#\AJu 8t!hc@&G;b{rA 0TЦrYMh:S}C58*zt-hΉ8qS^"`nF5U~{o"GJ4+q"v3CέϻNW%-L`@}]?]~?{~L9q.#9qtEmP5Zf6dp|˅ʛ#z>bBk5-G!c ڄm&ۨ5UB ~Ksm?w s-?Fdg5 ]+z JA7 H՘7"2 oQ\%xp@j.{g#$uGw"lFcq7䪊8սD$91<.w)Ctm(2\-#!fkdм oH4-fs3* 31!>ƨrjD`7cw2(U3s̫vBpp=e:8ys5%Հ-86k4ڶn&x|g|w/G=.y,i)`MQsnP^j_[)o& CFV5i 'l9頾@76L9bn:x\ru0X PTv] iJPU6b;#Mw>bq361MƲ3d܈U]}j{EJ$hvJ% et#^x^H_Is%~o;lz1Cq:~}8ߖ8-BxRDo[˛Pfk-lmlJqUU<5q _=-VMrr!f!W+3| Sܪxe!MU|Sᙶ51ⲉvQ\GP`8jN9cEŪ;u}^]zTSo5ـa\0,51 [=(ʇC_8zV6ogx`̿ ? | Pdj(ў.xιVw4H0ZBE5d)XOn]%_6T%4XZW\YH`K$ >;;ܦ`TU!G DJnE߻5&,|>×s¢Fok53i@Ϩtє!esu*rgH0lBBǮ$ _B0|?}::[5{DyЀ*y#@hk3n_mz`Gw9 tyz 3(AS sW/h?*~dl-ᵻESTS`;Jn>XKYU]jX U73B֜ =b*3' KN3iA Q˜Dє2"ֹ[4`-tM7 Ce*=)TD3<WD7] AW|~&J{FtHc\/2q)x}y2e. Hq.SEzIjxs);ɁBrp[VJ5UBlPF8Y"iΡh?4e|O[G4l>i᱾7D|8fًg'N:%p`ۃn;;QkSer7LJҲ $o-¸Y$ߔXUʟGjQzXM6I`@cܩov>f8;y~rPbSqB-U*Q-#U7/IIuMVuϫg0/'OaF ߟ|b``ۓ0ON?/\.zDƾXz^.\?ɋj> DIENDB`gambas-3.16.3/app/examples/Games/BeastScroll/sprite_nuages3.png000066400000000000000000000045251411575327000243610ustar00rootroot00000000000000PNG  IHDR"pPLTEƽƥƭcckkksƵƔΥεΜsss֥ΥkkkkssPtRNS@f1IDAThY w8FFF򎌊,j,9]bpjfv7~2q=)41>]$$ݾK밳:Ju,穈}Q6dV-9uE=VP<{;-|w/R i0 AɏA<1eϱb)! YkU%9k~,foךߞuEXUMYmiəaG'푂x+Cy2:P'Yㆅ;1_ȕJ,a8b,7`Cz:Md4K4Ͳ##bTFSVT3NfQ4wvXbX8 &’)5m%c>Fޠ7ힹsDcWdg;UG,A$;fX bSWf%3M'h͢}v(9c*']"1PUnϳC6'Qk&;+`SSU*uЛ 2#fʨ7mv֭0O`sPU'Dћ9Dݨ;=nQ\/SIǜ5]fE"hu&(zs3PlLGFC!斪t=H-0$092DYrH9@c;sTF)? W#M6jvGn9)C!Q팒l[;(͓" U BH$c;4_5%wP.s ݗ>BCk3҄7:>%R 9aFãfLrQV)\X>x0 mڤRy8ؼB=ci)Nha\xd03*j%}1wPghu#/Bo. ˸}FJ ȿ Xeki8 >>fix XCDK܅Ep'|ps%Ik/n.%E2^ ACM~LG˪WEL| -Ɯ4sS-0)cc(_`y/+mC;ZKH:Q)-ted\oqP\qxcp |`;[c;<><6%t+0oZ6H5Cmbg=ǐ iԕt|#/h4clyHaTe5Xz/zǭ;磳CTڇ಺emQf<}oVŖscZ1/~48Ѿ_}y;c6ꘟXxo=Op>G (:એ]NceyoIUD[E+-k#ώ}GB3YKDof}mb*En iStMOJX;WWRm4 /=4YG~-vAk ) NջbQJkQ==!F^[dD1Y CPH} g(`'-se:ڀ}_|*^_}aw~DPKcݡ9bDrͷ6L:7}= +x~-*J4Y%WD,}5v[G|nn;oj7'ߖ|4wP*E[vmN|qӺc®U9?ON ^XRQ~Zn/ۣHa_$k uP;#eU}\ݻ>k*ʿ N7=d K~I{LhYK[K_EI/nDŕ^IENDB`gambas-3.16.3/app/examples/Games/BeastScroll/sprite_nuages4.png000066400000000000000000000020141411575327000243510ustar00rootroot00000000000000PNG  IHDR iPLTEkkksss{{{{{{{{ksk{{kssRtRNS@fQIDATXXV0 QԢ$-J[Nnyt{@c(GɺJ|>j9y7wiܵ×Fk_\V>|YwGEϣ *>7g19΅^4a,QH 'UC!6kt1!\~l2]L.ܿ=$hԠ:.vS): ҀwyPreUKW*`dX3ˌ-k4!*8y3MzĀ 11^ߔPL~G^mU~4vn)SBop~ń$=⹃xA C9y)juzSiL!!;>*;*W@6k~x P+'TȤcdYe~yϰe t 5iʙq'olT+l+s\bc!|{l;qAXh7J  so  }$?;\I'o_Ly'Y7b\CFPH͞W| #FôDw cy ub1Q O oKʲQ|GYPq^v`1;wdvM-7t:_ yBECTV^]>c )?./ʦ~ {!枺ʃUL<)Uu}x#|/ck1BD ~G.F}PuоcB=|yl~ A 7BxuᦝUjkn}ryB?00oR \SՃ x= Ս,l%G-?=.140=#o!z|Å q5HuLy.u'Hab+lm3]j`S#- p.<$u7{@%Sז D]qꛉvckV5%?^ vym_̾^z*ԳJ\D]=֮,59l0AKIRRƟkjw)CR*v~,[)I rA7h7FmtUϴ[F1aP!˖*l qegs#Me6d~8PlÖdHa\@k; O"zd?]2$| %%10âܐe T9UHK@L1j5Eų0F*ƊG+)PPAK)nKcNj|0%t5TpCͱA E7(VG\9bJaK*RÂHn\Ecn\INLAGiGKyW Oj=ĘG+ta. YJp0go_v3bT\<6wU;/TWt))BdHW`w+/ #p<_vA#_}o"Q౬+t 6Kɐ%K7~ƿ&oN΄.dڤb-Yʸh'|RY!3&i>`8O)IK!E7FG[= UTobbZ= ďA}S3OSD\tu˜Jr,ϺeOKVR85-4M%#<^q\/g)} D~0R >Z&N"3u-@(i-ef)bPcm!?.O:q҅dJa{hj-ͻõ4%'@(HS #1g܈R`g B FNsPlleZG[^Ey퐢#䢅O$P4PE3(ot8$ŏ /n㕧AKa_2Hb̘i$ESn FXR[MR ~;7垛 flzkI|#81IXJ"` X87Krw|Hgyζf8Ωr(Z[,`@m2f5Y+@ ;ؑ2FYl;Z~Iĺp{qaBc쥽%6)@Ȭ>­KAr`$S咉Kk0UxGhxihHi iInD_J !qDvR=q!f!+Ԏ,$.{zV10iʜ yf+y~^ʪZYK>W\CԷGy_&<Mv:ԬO dƒ ? N $wl1 ijFκDP&.3PqPRp") ++K)qIHc%`"=6kV>CFZ23sq"/?~u;pSQ Qu7M~Nx,IA ( I8͑O;1Kًz S,8O&fNJ1vHO=ĄbtdiR}2~.*JD^F2h%;H $~Q?R*@2dT"ܿdj*N_|$^w8;n"5JhhJw=JB6m()(ke鼲n5G۩.OORzKʤi(OQ;?n)a;KMNa6s$Ӧs>o*y2PNLNar%=I BꆵIș2s"l1f`Ac)ԵbOz7(Iu>?RtQ6mޭIIϘELP'!ED5M5쭬;)7K K!ϛGMd%)f/GHq1㧲KooEׁ1}Bl%Qk?3:+`1Z3aɳّK#L:soEI@{qk*e'KhN+)D/OjX+3D}$ |Crs5)ne3h[_f{؀*؅}sV3y`ZG^$lذ27nDG;fHV\ͮ"nYiHqʺ-yO^';Qt8~)śn8 ݼsh*_^Hio$)KDŽF@d&ΟpAw)yI6 gO#3'@qڡ-G;_ N=c}mKHeߏCDYwQgW9`4JHb{!=3].ƲLƛm1xz:)v{.pTKgK% r'5p eV',XyX(@P;.eoWaOXw'/ѨtϻYPY>l GkFgb%n?M}57)M\'(@(KZ_eV;@d8 E J5wBFF!ۺ1;d8(c עBb~;/l}ۓVRמJ~Zŀp.zC9@ >՝8PAs@Ti/'-@rW!LN_ 1ΰ~>A.MI㺱)BZM .m#Xַ$􁱹pH7'Ka?&ds3ֽ,Bu%gmI+-M~?0DZf,O ބh'! c<\F\ h՗ҸqtNs]Vx<>aJCf(sֻl՚#{&$"n5+b .<~0IENDB`gambas-3.16.3/app/examples/Games/Concent/.icon/000077500000000000000000000000001411575327000210745ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Concent/.icon/16.png000066400000000000000000000016651411575327000220400ustar00rootroot00000000000000PNG  IHDR(-SPLTE74I`^nvd:=m0P7BrNF`TTUBBBCCC(Wy/B\82M07i&\{{{.n!Hh&NujijwuSQb)Ie7GY;9M 5_]m'?a+kyxYWh&Ge 3O3e'3M47N#Ed,n4d"Ii(6P!;*a2P06MPOa=>S0/b)Rr=6g,[.o5a.98MC;j1v'A^E9h2-],=m'MmH3a-=p$Mp(6ON;b2?i257h2T7Iv! 7B?Syh;>o6XK4b20E96K13-~/s'n2lqsgko,&g0~3)u9Cy3{$b&]23*xv(q TxOq"\$e50#_/Gl-J-StB2"[@b0F"BBSjQl1,*aEZ?T3KIUpYv0|29b5[9P,HEfdv*{0+gD`YyDe =nQtbOq,H%g2!Nq%Y Bj21#Qw1-M%V{)j2232 YtRNSs&qISw Ruu-ٱrԱ[)}?7Z~Ȩh!aQDLTTl\|$'% ! gPP͋RRfPQUc`P/(,*.)**f`Љ7``0Jihljnimk7b46a`0K1kn?aSNni1s9sͷ+wXp%K',w 099,_riԪծ Pf<<`">` !a  9DrIENDB`gambas-3.16.3/app/examples/Games/Concent/.icon/32.png000066400000000000000000000050471411575327000220340ustar00rootroot00000000000000PNG  IHDR szz IDATXÝktTǼ'df2 ! $2K h6*ϮZpt-(" C@!AI 2yL2IT={;ϹD$H7>Ť>@wG- %V 䵵3233ݻ׉SdĻBm ^|ip}KL;>/\chj^Nd4HtBŶTyeV'0ݮ⒒I+꾍b(.]TFa $oM۶|jT{cշ-=CE-fPt-NVw댏d׷,fyزf¦MnYʺ=՟Ok,%jQ/Z \vCRPݞ6l؀nW/"|*N}ɗ}$Xokz\>9cA@AT: d}9؈/ϜR0 `Ȱ EWq)FxN$0,@)Mn%|DS<)2&F'+TJ0 #**;'`k7ܫj@ȴà0#3a+\ ձʊ) Lnjmw#hx[{OwC_%BF4+BPfr(k,+lٮ؂K2N\vt3`fMQ"e\ ~ R/Dt~ ۷>IU#I}-_Xb>~jIcX?hgG Jgwvr?'ZҬPfNo:7F !DJ;Bz0ڠU rHUϽjN~ZH6?I~)ڄM Cp4p%[:O! <'`beq&58: ,j{mkS`]C[A F IRBVȨ4P匃"=#GOy*~d&\(`uC"Z ?}-^[u- Fctǟ<'!x\DW7] x!#bLTHiYFH>|{`(Fd%N/Kw_3ug"G@>vdoF!kOv7E bs 0p˂(`C .  CSX.jh +{}Nj:Վv/)0}6ad hsN*X T@J7BtX!@dL{5!3[I1?Ēs\0[Rh=SX ' <aAd20Lb,hDq($"#;RC  MP@6:\ ^tlv!Y倂q]fWqƍ- L){)dꔯЃ_w.,8Ą(Dey `K!bD!Aқ?aեFRוVC@e4BpzCZ c^pDCݢEt9;vͶb0qZ8,?)tɰW4d*0'!*pJ`P0l~,eG;oU)[/DR4 OE9fF U*WA:e=AF>㦶zZHctжЇž/d@ e`St$H^?`h Uu$39vYk<[*Yc±Px; "i> nĖviS+BQv;z@\@rSeJYk<3[)wyG[T*PApF mPc1Zr::Jtӱw<6`,CiV> /n+HY~0iZ'7&QZ`gfT:g>b6(9‹瞥Dd%P ۑ.@$cj:.{ |0."$(œGM|ՂTBb`%_xe3 FiQ5'+>/h$JlG+{VYqhqOzmЎP>AO'޾Qvڠ\"jTB[6ukp wO;,),E#ZG13lq-ܶRypmZ.`8:R &8LzmX:wsGGOԎ>N/c ^'ŕMUsiZtO= !p]xh^#H]r|b-އ&);:g$g.x LQ$ᑤq)biECGnhnZQ!{wU mյiiWd8ooQ!Bt\@0葺d?zTa0 J{hC #PH,ȡ=C(xJ0Φ͕sޕ+WXvsC/>;;ZۻȋKqPBA2IS@\5cb};ݻ -RҘ&M# A0.#*(N3(pzԜ"ǡ6/&g#| ngDg j, "IVbQ7pv0!ۅhg"6ԁ !3-% bA.nctn®ΡKN%Ӕm7u)#aw^XV0Ѫxٵ {N<B0 ESUPB(^L!tz+eЖ7B9<03%x"b#@bQ wLHG1?ܽ\@cφ&}a1 z+KOC;6;ovի6<1| MFgi63^bR Y@5ܸ<ЁvD@xۿ',pqXZs,@FRJ'wL+=ݨ8KO*-W=  Ww,3%i(5ILhX ΓP'Jz# iVB3hXDC^l z ,FxX&W\9 .OtپЎP@>prw5uLWo9__kB+C3nN DžXĠ B$b(BPz$`SS̞g6(`Tzƕy¼qk5~rٵ#s r#20j~{E\Kz>\MjU -nO*đ.;A}iTU8a'N>/;;#pݗ?+|_>s3_вF%O_ζA:uӳH\e&D'a'3@\%= Cdè"QguL0snWk1P\3u؏؞WLCIEЂ\3*ǁ̘ 5eiR5ৗõ$|^Ku9^gΞ5PCD۹Ġ_8\ Z hHO4`0H80˖dPh8=jv )A.$•~f*Űa#u[v"}@3jˌ!+5Ձc8>-l .?jo?>7Hj XdiK5 hsEy!v. -:yU9ه~ޑ Ι H>aބA&9 aЧ꼢@hK5H+zD@S=k# Dc.(0{ppk/[vg=$G߬dTU8#Tp,Ճ/Eㆶj( IhDh8^ (o]1ȕRd]CS^W]9󇻌!g|"'"t6$ݲb=[·'&%TOX*6yk?[UEBRT2⩻Knn?҅Pz]璑<<0O&́yܤ%[EOo*hR{ ..-F~g7U͞x }ŏ7B ۺ`i_0u 5QC8払@⹹k8M\/X}+bKθV=$G\0&OIv^YU!o=[ڠzAnHޘlN3NG}!Y{ [n.b|Ln"ju' uwShwk]jtvFZtl\Y39ajii˹Peyw7/>-[Wn<~Lп5rZ5E;uN|^[WW8t[v=LXQI^ͭ?Y{:;z:7,`t}]mw{ؽy}I%zaIfGO/`ULuxh4w+,g7=m=5=|WwdBi_yؙZ;cuo=, 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 "-" gambas-3.16.3/app/examples/Games/Concent/.lang/cs.po000066400000000000000000000164371411575327000220450ustar00rootroot00000000000000# #-#-#-#-# 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" gambas-3.16.3/app/examples/Games/Concent/.lang/de.po000066400000000000000000000115611411575327000220210ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Games/Concent/.lang/en.po000066400000000000000000000163211411575327000220320ustar00rootroot00000000000000# #-#-#-#-# 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" gambas-3.16.3/app/examples/Games/Concent/.lang/es.po000066400000000000000000000163251411575327000220430ustar00rootroot00000000000000#, 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: " gambas-3.16.3/app/examples/Games/Concent/.lang/fr.po000066400000000000000000000113631411575327000220400ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/Concent/.lang/ru.po000066400000000000000000000256351411575327000220660ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Games/Concent/.project000066400000000000000000000012771411575327000215440ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/Concent/.src/000077500000000000000000000000001411575327000207335ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Concent/.src/fotos.class000066400000000000000000000000631411575327000231130ustar00rootroot00000000000000' Gambas class file PUBLIC SUB Form_Open() END gambas-3.16.3/app/examples/Games/Concent/.src/fotos.form000066400000000000000000000130061411575327000227520ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Games/Concent/.src/frmAcerca.class000066400000000000000000000001371411575327000236460ustar00rootroot00000000000000' Gambas class file PUBLIC SUB Button1_Click() ME.Close END PUBLIC SUB Form_Open() END gambas-3.16.3/app/examples/Games/Concent/.src/frmAcerca.form000066400000000000000000000011471411575327000235060ustar00rootroot00000000000000# 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"] } } gambas-3.16.3/app/examples/Games/Concent/.src/frmInstrucciones.class000066400000000000000000000001411411575327000253130ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() End Public Sub Button1_Click() Me.Close End gambas-3.16.3/app/examples/Games/Concent/.src/frmInstrucciones.form000066400000000000000000000040211411575327000251520ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Games/Concent/.src/funciones.module000066400000000000000000000170241411575327000241370ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Concent/.src/principal.class000066400000000000000000000350471411575327000237540ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Concent/.src/principal.form000066400000000000000000000121731411575327000236050ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/Concent/Blockhit.wav000066400000000000000000000021741411575327000223500ustar00rootroot00000000000000RIFFtWAVEfmt ++fact data qp~xy~xvz~n{|sy{n}pwwqpyz~~wv~kxyrvym{osuonvx|vpyonz}p{||o~~{oxsn~vpws}{up{nmsx~o~mynn~kdnyy}mjxlmzo|y}|wfvnkoq|w{{s}}vwvuvnz|nyqyysn}yzwxsuzorsrvz|pwsrv~~}xnwopq{o{xoy|~xxrspon~q~o~ovw}wllrl}pp{qr{pry}vo~yry}ovsqrrxx~qywz{nm}rnqnxvuqqs~qromqpswz~lmoxsuxswvx{q{s||qqq|ssvvusvxuswsp{o~onooqszwsqrsxwurrnonoppqsx}ssu|zuv}|wq{uuyq}nnopwqqqqrrruwqrw~pq|pmnoquzppq|orqolmoopuqszqsvyrsuuwqpwppmnoppy|rwwqssssuvvwvwv}vxuvwxxq}puysooms}oprxqsqrzqrssu~so|ru~wooprqpqrsuwuvxrrpps~pwmonvppoqywqpqsu{us{{spLIST0INFOISFT$Cool Edit v.1.29a by David Johnstongambas-3.16.3/app/examples/Games/Concent/CHANGELOG000066400000000000000000000002671411575327000213050ustar00rootroot00000000000000* Thu Jun 30 2005 jbadbe 0.0-3 - Correccion de bugs, se añade temporizador * Wed Jun 29 2005 Jairo Alonso Badillo Bedoya 0.0-3 -Versión Inicial gambas-3.16.3/app/examples/Games/Concent/Missed.wav000066400000000000000000000363741411575327000220460ustar00rootroot00000000000000RIFF<WAVEfmt ++data<~~~~~~~~~~~~~~~}}}||||||||||||}}}~žO  Up3Qp]59ڎ/4\]3!k/CaR':?7XW8V#7R>\$4\R Z74YV&PٵN%N^;=ݿg9^K$ɨ'+TR$ _صEBV9k§s7^Osw#=]L$.kӆ((IF!F̱[,DU68Ŷc&?V>&wºҐ:0PL(SƧثL%JX<(WȪh 3M<4Ƽӄ'*LD)k٪E BN.JǬi$:R?,w֗7,PN(^ţQ)HV6>ų؏,2RIUɮ_&DW6.¯24TLNзg)GZ>+î58XO!j˲h/IW;2±86TV)edzj-DS=6F+BP0!eш71DE".޾o14B6B׶n0.A:DղX%2F=1qַ_.I<8~\*G</}|.";="mψ,!X]XhlG6P\Sdi}a3KZQHguKOO3#Ef~ş^?MSD(<`rɡdALM@'-Vlл[OLC:#5JjѧqY\G1#DUrȗ_PP>*'EkΨaVB2' 3O}Ñl_eS6!>\ڹglyZ,B_}ҲolmI'1Zר}cbmJ* 6fբo^ey_3&?b԰|]asA#6[ؽg[}T)",Hq̘lSuc7%*=FORVXZ]`hqppuzvskda^G0;FUeq}}nWABDKRUXY[ZY\`bd]VQLU^I5( %)-/12469IQZcmu}wi\ZX\aab_]YVROLIEBAA;51.,+)(&$###$%&(*.38=DLT]fp{÷~iTTTaoL*%!)12468;>AEJPW^fnw}vp~Ľn\L<8579AIIJJKKKKLLLMNPSX][ZXVROE;AGR]fpyýraQX`jtwz{|{{zzyxwwvvutttvxwwpjmpuz~зY4/+6A><:9BKRZ`fmu~Ҿvl`U3#5DT]gnv}ǰ}tlWC+ )38=?ACEFHKOMLmnOOO[gkptyvľv^I4@LU^`bbbaa``_______`dikmllgbp~кtX=GQIB?=M]iu~Ķ~yN$0 +>R^kt}ǬyM!+5J`o~ѹpaH0 "09BIQX`jtwzȷoopxİzslE"&3@JU^hkojf\SZalw|qZD3#*1WpɶrW<&+3;?DFIKMPS\fc`cfuijuojJ*$1EUfoxna}ὙX(5BWlzͯxkE%+8FR_m|gKT^foům`S+ '=L[iwvv|na\Wot[̾x]B#.9DJPPQZdtmWG7HYer|̵~jjkxĴgO0+DXmszż\7N_u̼cF*7EVg}˸}U@+:JZkíqJ=1AQf|ͿuS15:L_{a>95GYpɺeK1:CUgëh>94GZw£[357I[uƬc421EZpιuF8+>Qiɰc025H\w^-04I^q̷q?5,BXkɴg/4:L^}ǶiF$9N_pнwE9-BXlǴk544H\sǾY&5EZoͻvC:2EYtƻuN'9Lbx§\,7BTfmL+=Pe{`1;F[pĮj;<>Pc}˿gL1CUkyU2BRkſyT/=L`tŲl99:M`yżF?8RmŰe09CXmɸo8;>O`ϻm4:AZtŢT);MbwŦX)9JayŤW,5J_гa,Mv؜`K7Ut}4=Gfѯ`4MfيlxwwvS҆:zy8vy}thebԐLo-}͑UzvM]mȊLq*׍Dxs:c`vgCLyh)dvvwcPޝ\{c,ducWLՕUl#ojqI[n\p1ԔT{m8\\}l;L|i'cwutdTSk uʍPzr@bd~k>4vr,qzzjge͈Dso=۞bi1bpu{gTܔMzl1zēb{mFhrv{dMΑU{m8|j}iBgqv|hTΓXo8xjnIjlt|kZҕY|k6tnxmWmjqyfTЕ[|j8wtrUgzhwiKЌHu4zZxqLhe|qP؏Gvn7ГW{k7muein[wmH׎Ew4}ǎV{p@lzzzqiVyoBٌ@yt6~Ƒ]p>jwutni͎Pym9ދ9wr0}ʒZ|k8hupkgcؒLxl5:xo'uÒa{lBdfynP8wr/ޓHyk-nt~r\k{]wmI5yv0ԒP{q=lz{}rhƋPtoF@{t1ψBvvBwt|iMjfunX׎Fyq5ڋ=ur6yg~sQi[yuSی=qp;ߏ@sm4}ƕd|lDhgr~kYߐBwq5?tl.uizpUm^iubOA|v5ҌGri5m|xtkb̋Jxq<܋:ur5{^ylDe`{nFߊ5zx2|ƏYwlDgdvmRۏDxq6ێAuq8{oqIhgws`ӓTwmA֎Gvq>~k{iFjlmohbϙd|i?ʍQxm:|oh:h~shnu“eviJ̌LupCӛdf/nzpRkttth]ǏWvlDəjpmty\mzwteViu>tvoFcrbe}nFyl}Dr}Ztu[rxi^SvojwSY`p}b`8d~JjoOU\uxYsxkFouHe`cgzkU~h=ctKYgdGa|TnvL`ty~sgw|cFkWrq~nQhv__`tY>gqDYnbYPppCe{M`suxao~k\MqoMosFXk|le_zjMtiGa|]bgya[UszSewnX`h~yl_t~jVuoOe|yc`^}kN_p~kpvxghjziXnvhunY_e{wdsr`n|ttt{nidvov}wou|tjlnqaqqiamylbXl|l\qe`\qwlazs`hpymmmyne\uq`fluplufc`{}eN^ns^I_u{|smV[a|mVhz|reY`g}wfy~oagm~|wxzxlalwzxw}{tuvy|qh_go|w{uqm{zsmrwzoidt|ocipw~yjc\ozlcZair`ur_adylqw|ulmnsxpnlrywu{vrpoqsycktyzoelt{ty}|o]]^r~lc[wlYdorZixunhlpv|xfT[cktvyp`_^rz}y|tgeduvfWet~teozpbjr|nrvwyytpu{xu~~w~{nhbrmnp{{e^Xktkb{kTfxtkco|xdmwyndgj|{pein|xsoru~rfkp}simqzk\afm\`e~}jhfwp^lz{rjt|y{tnu}~osw|wtry|jmqv{twz~}umnpwsfq}}t{~{}v}xqlhzvbjr}g^Vn~_chyph`rlrxs_bfs~xromvzuqy|bbco|}xqj}wuszmsymbr~}tvywuwzlw~y{r`bdzsYfssbo}zpfz}gil|{pmk{rweT_j{ft}wqlnq{krz|~|zziovvw{rju|ynds}mps|wfffwpahosbfjx{tx}sqpx{orvx{ywso~jean{|yz|vikm|q^`ct{|psvpjuwitvnfjnsx|wutuvz~|zwr{~vlu~xry{vxljiytgr~wy{{qgszwutsuks||rhs{x|{skhey}{zz~ywuvifdo{xlamyyqh_u}ttt}q`Pdy~sx|palxzl{zou|tgt{tuwrmzwaL]o~~tkq_MWatWj~pXXXs{]iugNaupz}v~vfp{xryqcq~}ptyiZk}yl~ztj`n}nXlxphgg{dhlw~tj{qrsywgu|n~y~rst|zqy|xutsst|uet|{m~xz|yhovoizurp}|{odsviwnoqscp~{up~yipxudruiz|nop~zvaxpmjv~y~h}~si_s}z||osxqjzmmntw`uq^ozu}x|q]ht|^u||qfy~pycsoXk~{y|yv~n_jv}jyx}}zx|jy|vjuxqxubt~v{tz}ntzyy{~u~yk{yxxmbz|rw}xvtpl~{tmnoti_hqyds{~vk~wrn{~suw{hqzyy}}rxjotveozvguvvvuhu|qftxow~rtwxyz|vzpmjwy|}~thuxkw~xnprx~qx{xvlxvspx~{ftxgyu~zmt{scp}}l}||}wqlh{sssx~~}insy{gpzp^qjklzz]kzsctyndq~~~vwy{~~jqxtqtw{|~sgkow~uuuwypz~rfrpooxqx~yofvzqiv}mmmynsx}rdp|~qdq~olis}puz~tgtxndtpmj}~flsywer}rhv{iij|}ahozx`n}~vgtvngtsqotylptwz~jqxy{sfrtrpuz|ryrdo{yjqxy{{u}tplrytsrymoqv{~nsxz|zrywrmw{zz~~xls{rvz{|~ujuzpw}{~osxvdhlzlnpw~zlu~~sityrly|llmzlorz|kotx}|nx}obmy~rfr~si`juxtqxwcjqzzir|~qdnyyoty~}umqu}}umsyxurzxilpznprvz{uz}wqtx}ztyxqjqy}yuzwkotvgmt~wlsz|uoxwrmwytpx{oqs}}nopywkrzvjpv{yt{|tmfr~xrlvrpozxjmp|xlpt~vlsz}umt|}umszxrx|tsr|}qqq{}qsv|pru}~sx~~|vqy}tlt||tlyvqlz|qrt~{sux~tkqwwmu~~shpyulv|sjv~xqkyxrmy}wrmy~vqmz~solyynop|ppq}xnquylqvxnrwwjqy~rgq|tis}~xrmy|xvt~yurrs~ywv~|xwv}zz{|z{|~}zwy{~yyz|}{{~~vwx|~~~wqw~wkot}{uy}}xttu~}y{~}umqu~|qtxxmszxpv|~zrkuysz~yurx~{vry}|xt|{vspz|www}~|zwtz}||zx~yusqz|wvu|{wvu{~}}{z~z{|zx~xrw|yty~}yv{{ywtqy~xrw|~|xuwzztvy}|yvy|~{ywxz|zyy||zxyz~}zxvuz~}{y{~~}|{|}}||{z}~|ywy{}{y|~}{z|~~~}}|{{zz}zvvw}||}}{yyz|zy{}|zxyz}||zy}{y}~||||}{zzzz}}~~}z|}|~|}~|~|x|z}~}}~|}}~~|~yz{~yyy}}xz|~}zx{}|zxz||z{|~}zx||yw|}{y}~}}zw|}z~~|||yvz~y|{vy|~}~z~~{{||}~{|~~~|x||zy~{vz~~~~}{~}{|}~z{|~y{}~~}||~~|}~}~{{|}{y}}}}}~~}z{}}z{}}~~~}}}}~}{|~~|{z}~|~~~}~}{}~z{}}~~~}}~~~}||y}}}}~~zwz}}}~{x|~zw||x{}|}~~}|||~z{||gambas-3.16.3/app/examples/Games/Concent/Paddle.wav000066400000000000000000000033321411575327000217770ustar00rootroot00000000000000RIFFWAVEfmt ++factdata}}}~{~{}}{|~xxn{~~wwuvx~yzrxvx}nl}yvvs{vps~wv|wynpz~}}rojf`jlr}sjbeffcmiejtphbhioyóqggr{wxz~}xub`a__\[VVXYWagq֩vL3:V|zU>9HdsXKM_zn[T\o}g[\jqd`hxykdgqrgdiv|nedlzyldfpvjfkw}qiksvmkq}ypns|{rps{|trt{|vsv||vuw||wvx|}yxy}}zyz}~{{|~~|{|~}|}~}}~~~~~~~~~~}~|{|~|~}zz}~{z|~~{zz}|zxwwwxy|}zwutuvwxyyy{{ywwy|vqrx}zz|~}zuqprssrqppqruy~wbVYh~{gZXaqxiabm}tiejv}pijrvnlq{{sopwxqosz~upou}|tpqwzsps{~wrsxztsw~{vtw}|wuw|}xvx}}yxy}}zyz}}zy{}~{{{~~|||~~}|}}}}~~~~~~~~~gambas-3.16.3/app/examples/Games/Concent/Setup.wav000066400000000000000000000014001411575327000217000ustar00rootroot00000000000000RIFF8WAVEfmt ++factdata۷Ȥմšұžΰˮ}ο~ɭxɼ{}ƫuƺxxërùwuªowqn{unlwukktuiiouf~ikkbZYWWWYYYZZZ]]]__``bbcceeeefhhhikkkkllnnnooqqqqrrrtttuuuwwwwxxxxzzzzRIFF$WAVEfmt ++fact$data${{{{{{{{{{{{{{{{wwwwwrrrrrrrrwww{wiirwi\\nniinrrrnnrriir{rw`SW`ee``eiiiin{wnieeiiie``ee`er{{\JN`e`\`eeen{rw{iWW`ie\\ei`\i{{wn`\`ee``eiiigambas-3.16.3/app/examples/Games/Concent/Wallhit.wav000066400000000000000000000014001411575327000222040ustar00rootroot00000000000000RIFFWAVEfmt ++factdata̱tȥ~n̿wlʶolyojgentlifeu}pkhei}xllfbīulef\nȿ¿øyncc_Zof_^Z\onea]\\\Zg~wic`]\]\axĿzlc_^Z\\V¼|kb\ZXXZQqºnb\YWWVVWWVbxpe_\ZYYXYYXcxoe^ZYXXXW\ScĻkaZWUTTTTUTWj~ue^ZXWWVWWWWRIFFWAVEfmt ++factdata|||||xxp|pXhthp|tpl@,\txllx|xxdx\tlldpp|l\dpTP|tplPLptl|tttth`dp`|xlltx|lthP\|||xttpxh|d\gambas-3.16.3/app/examples/Games/Concent/applause.wav000066400000000000000000001015661411575327000224300ustar00rootroot00000000000000RIFFnWAVEfmt ++data||}~}~~}|~}||~~}}}~}}}}}|{|~~~~~~~~~||~~~~}}}}~~~~~}||~~~~}||}}~~||zz|}}|||{||~}{|~||}~~}~}~~~}~~|{|~}|~~}}~||}~~}~~~|~}~~}}||~~~|||~~}~~~|zz~~~~~~~~~}|}~}|}|{}}|{}~{z{}}}~~}||}~~~}zxz~~}{}}}~~}~~}~~}}}~||{{||~~}}zy}~~~z{~~|}~~}}|}~|{|~{w{~~~~{|~~~||}|yuw{}zxy~|{|}}}|zz|~~~~|{}}{~~~~~~||~}|{|~~}}}}|zvvz}{|~{yyy|~|}~~|~}}~}{|zz{zz|~}}~{}}}~}~~}~|zy~~}|uvw{~{|}ww|~}zy|~}y|}zx{~xux~~~~~~|}}z}|~{uty}}}}xtw}yw|~zpoz|}}|{|yssz~}|~xtx}x{}xy~}|z}zwy}~}|}yvvwx~||{z~}~{xxzzxzz}}|zx{}yz~~}{yz|{utx||z}xuwy}~|{||~~||zxyyxzz|~}~}z|~}}|~}xtx}}~~}}~}}zvutuwx|wporvxxz~z|~xrqot~~~~|||}{utz~{yxy|z{{yvz{okt~~{|vtwtqwyzyqmpvz{~yty~vqswurptx~}{{{||sjlxur|xmls~}vu{xoonv}uqnggmt||xxwwtqru{{ujbet~vlbcp||{vqtzywysjlxgW\q{y}|u{xqnehtvsuyvyxjgy{jehr}vnw}yz|zwx~xklzypjz{{{tsplhn|xnYKPhwsx}}~yrqlpwma_p|zpkmov{v~vlnzwi^\dv|xw~~xh_l}mihluz~umlr~yz`PNS^vwwusulemww|~ulgqsh_cs}ropttqsutryzumdht]EFVnzpfenxzxaW]peTQ[s}miue^anzyy{~mojYW`ruoys`Wdvrcq{aRPX_r}}xndfp~}vnq~md^`aofVdzysx{yw{yxxnsrqwjx}qenxmozdNW~whchpvvs{vakqrq_\aaqe[h}{yv{{}~zzve^w|kipnimqqt|ny{dPQ^nphpzo_bo}jQdzfZq{}xhg|lq{calcg~dVf}qhu}r}x{~W65Jkr~oPGVx~ʭuncUKPTRUlmVSYovg\[PInz}ltyrlj^IJazêicgkgVW]gvuoɼ]:4;Jfʸo`QXbiqw~nSB?MhƮwcSFFHWudH)&A_sؤyT83=DRfº^<3E\qͻnM2'4YyI!Il~`B9G\˼yG;EJHUkl[[iqrcilwm[usXdYYu`gq:5moK[vwz|fl}zo`lufvkbjwVivrkuiskSF`Ƽyogfoluyji^dHizVPkzoejry]Y[fh}oalIPUH_qxОpAEf~j_a{xoRPtxbg|tzzJKityvysbnysaL_znp_{[L]{e=U~fV|ulz_Yax\@RÜxciyj\kqbVfn~riy{~~|zx~}|^Srv}yPJmhnznxwmcj~uykvzmfMI˟zzg[uN+Dsoxpdfpfa`bk|nqpqtfggpgpzz|tOBpͭq_stqwQ?ayxogolV`h\iucrYN[yus}|qljiL]dqryU;TyfSLH}~YX4V]se|gSp{iPWǼisyrgbwbNrr~ycsvzmbj|tclwho{vff87lx~yYJ]xxw}puk[y{tlI^p_LLlu]|u~jcdm~LQks{xp{gy|xnF]rc[apbawwdj{pMiog^n‚^jgKr]y|M`omwNa}h^Rl{ymcat|sZii{bqQl}J={jJkΗhPo~s]infog|qrv||tn}siiu|ru|tvu_^`lnvrIY}^\latYYz}mftwqbj|{{opvvp}rl}oa{bhdh|zim}eem{rqenji|hfcrtxpms~hgpls}`qqmX^_giizqQX|i_vVGdp|ylo{}ocytdny~shvyvej{aerm^D]~}dlitzhidq}ycyudqvqqxsft[Qeiovnxgky||}~}~l~ena<3Uysv~tiq~s[fslTU|nJR}^ZppfT`hxx~aEMQ_ȩt\^muzolңwEAEj|e[_mʯtRGaYVmk}d]d}g]l|tudZpqhmrgruv{{}sks{rNW[c\SxYS|wY@]xkcbwenof{ztpvviqwrn^]uײlMU^ƦoHJMEzmQd}nne=ƘF/\z~zmmudTlκ`+1nײFEvaHW}k{xz~hn\apvpzd>StXHJZɽy^ptbxnaxzky}hIUvz}h`zhj_Svbgppdqnjyg_o}wquΞ`EWzjmt{wolzYRs~vgIYy^h{vfeoZoձ`T]p{paTmq`tǸyb]y~{`Zz~mY`qgmj~|rmkpwRJfg~z{y~|sxxs`vr`Rk~^auX^sjnrpxwos|uzub[xn]hfqya`tP~kkvyynqrXSYn|u_U{`@\znnwL#5|юF;zYh˫tUTbwpBVoqyfk{}qmxa@Xhuv~Yu{juѫq9#FȞ[.l{p[X\mb}w|~yphzljvzosxsj^lux|vsh]jx|yel{~tyx~{uin~tgxzwo_w~cMXxs{|z}rw~|oxtsum\i{dvbfryqy}zgipvz]Yqvk_rz|wmo}w{xo~|kar}w{tdhyqh{d~vpi]b~q{}uwypxdXeo|s~urosbfv~yuh[|sgv~mdg_eynxnbOMpfHZx{z|vvri^|\Pnpl|gfxyefwf_{xW~~ic`izxu^OhgYnlm}{txo^vpqsyǣT9QlPhofmyzbkmoufYnfqjxcqse~spywyyvy}nrytlveLUu|hVcºk>Gwothfy{ysw}odpomy~vny}pddjs~|xj~u`q^AEpwy~znkcgeyzxSDd~~~nrs|yye}sjg^]zMA_|b]tzpr}n\{|xwszv_[jxxZYvuiyznn|vdnnywwquq\[im~vxginwofbgwq{wfeq{YZzx~nwo|vi~{XVjuywzvdv{uejiXVi|etpyzkp~vvueQkmsmjjk~pt~nefHw{VEYus}hVll]y`[uwrmgkŤmowurpywyxp~mYSsqltzvYESti[_cwut~ensou`pt{njl}zp\tjtz|wr}qjq|oc8I}~sgy}gjyt|}livyv}z|~fj}lknaQCbsżii{yaW]lyj~cKPVvm!gmuf\cdOvmUhosch}zY]s}Pdv~ro~|qr{~karx}sb}xuirxfp|wovhc\l|\V\~oi`qysfk}qwuvzyesrozpqwfitpu\po[O`zqzt~uqt}kUPpvZM\yvznp~g>\zg\_wpvhTThrn}{nq}qilyqwlXsamum{umrv~xt}pR9@]xuvxVu}NJ~ƃ:@ukztkxxwuvlpnnxy|mfgcxrmcTZqU7jI:͋XTnnueju{_dqgnY`fL?wq~vWXp~]yvankwrXM?bno~gfyjrz{dCSyoluwfptoORzjiuv|fFXuyppt}dZ[ucN\yot|tmj|to|}stjpoj`_i\dץa& 7Ɯf[ftzR`trsls|m|ci[Txwq~ZPbz}x_\w{yWQnwdxsMNwp[VUokr`Vjtm{qjpus}}kshRjw|xb\wœoiiliektgf`foe~idl|ysuy{}oo[Yr~zdmx\m~mpx[Ugh]skV{l}^]yVWqVH{vlvogtkgdl~xurzvthtvdx^Li{bmxq|xziRH[puy|x|w|z||weW]um~m\exrnrnj[mdxn\voa}vn{qkw}r|xppnd^my}tlsd\nlxkO^qzjqcmzxz|{ra^kpaoyx˴j@XdMMsunwvuh`xyy~a9:ݯE^{KhYqstwrfu{}}tou}b_hw~v{ykswajmpjÂ7Mbmuffixicp}uzsmoxzvqyztus}xsycRnqTWs{lY^ngmosq^j{v}vlluww~fa~vv{nryxunrwcqiZhxtxv~|{}\_~o~y^M*(i8wɾ}HPȵVIg{~tjzuD[dŧjeό:H}FnwwqomapwuUf{}{}os~zvvv~|xs}x}|tyxxy}x`kprpppzytqy|l_b|}r|}ullytxywrv{hjry|ndg~ioŪrUXtrVTɒnm}Y]xqoxz\ex^a{|o^]kvoguzsgmrdgqu~fjzrwz}ukqzsixjw}rsw|vtoi}zxwtvx}wklqx{|}|vjkj`o}qt~uvw~qnlps{|{qxxhdsc~~{zznpuoy~Sbnb^[wykovga}dlpky}z}}daty~milshgbfx|oq~zzjlrx~ys|fe]wngvu}jsywzupeqoh}~rk^trgp`@Hzy}}~|qocaXc~tyv|kwozz}mfuy~{wmf{tyvptu||jn}envpyjqrlkXyss]]zPJhxVcg`~fxsYd||r_|mi}\`vz}ofjxwluzb[x|v~~symn]aǦhsft_[_yci}zny~}kcZntWe^hm}fzq\bi`Ñlxrqtkkodio^TkqQDphly^{UMa|sjqmyabfrt|}ogp}zxtpf\qmfULmalzrzxx{vv~tqxuyq[luy{vrhqwjmzugQCbԟ8F|QCRxpg}pmmx}t`kqouqw~h[[wSLn|lz{m[dksxrQPf$9mµa_v}lBV݋j^+^Z7>nmt|oLlhcivmfpibvscpzxq{z|yt{pcl|{|v^\b}~snsvonr_oyUTrwrps{w}wi[rkT_t~{z{qvyyw}tvvsrcn~|}{rw{~~yxliyyolczmia]gcyvtxixc=nz}xrn}{[Zx\}d^IXM}ۊ1 0wtQYydiozuYSl{svtzommkmowsu{p`kyW+CѓE-ƭ}U@d%0cxioqpwikvgr|vuyUK^wwq~{|hct}~xijw}zuw}_QrrptmdTw{j`]it~}puhlvusfhytnb[^_svps}yyrmvsskspczzxjp|eU]ǭb]khvdm{fbΫu3?wfpusuOMiqt}{t|~upt|y{ty}swtXYq{tjg_j{jWYamw]h^P^m\y~WU}tsfm~ry_Fs~f`Zg~hAQyft~~|zpnam|rh^courwk~njkn~gdr{{fOVr~}fZeswv~^Iewmr|xgZjzqvq`\rsjir|tz}qzzsco}cVesvwf`ęsRPmĮt/K\Gbg}rXkimvh~suwbgeUZwjhlnr\`oszk\qo{plf\_utlmwyjsoy|tyzsv}}bXk\"B˸zfwcQkj\iv}yxafxkkuhn}{qx{kh||yy{uytf[fzi11j_Xnoo~oU^vfSZwppof_Wc^|fqen]Uw~ceeztfv~VbνI>Faz1-ʉBF7,jʙgqzf(brbJh~oeRm|bMjsy|y{c`~vf`pxzydegeZdflwrjpvUT^hR5,JgOQubcIJt,1֜T:b|u0.tkgzhPprjZrwsnxmi|xso~ylxzy|zw~zxuh}zvR`u}}tgz|tr}nixpe}h`hq{|powsjo~{zqwjw}zfcnVVloubkjqlxq~zsoWbv]dnunbbqqjvsty|pp}}pjtqnq{xlz{{{~|vgt~twr]zqhuWH^cV|xvrq~}y}vgYpyjZpɩK=mǪsMevĠk?XmyirQcxDjŊmfoo\4+ƖMDyifxyRZxtzjokd|UMozfkqu[C``=Qzvn|hx}cZwzwzfbshWhx~tpx}xF9^jmxluz}{lp|y}xlz~znb[k}w}~}~xw||y~yxifs}zy~}}uos|upxxsqryxn`j{zwvoruywrkfw~fe|y|geosv~zmj{qjqwyy{{xsvsdpx~}w~{p}icxǥ{W62Oojpqlmyo_jll|rbYoym|y^cobnn{x_|?8huQe{~d^reuoA-Xɪ`@^}OV~ln_PckHY|rpicfuy|zuw|zgmseqxgkozmnv}}vmpu|}uz|{{}|xyurcgqY~vs]uenvvlcc||{mjs}zygr}}{stz~{~xz]v}iwx}|mmjqxpnr}}~w|}klw|bf^Tmoydfqqs~{xmtztyr{mb_w{XkyYWa[i~yx}ylpss}yz}`\svkmx}xsqxyhdgo~~y|trx|z{zl^`r|}{ruzuxr{|y|vdpz<,bИQPtyvvtvY)tK(#Nt]mntvnmpWwz[j}yggw~z~y|vuq}zgt~u~zqxtry}{uw}}{py}ocqzuen|v}~x}zmcvpp~{tuz{cnyuy~}}xi`k}yu~~z{qzzu]i~eMSlq~rgzy~iyoYhwvkhamVHm}fv~yhetun}{{wv{r{zzj_hhvsov}|~jmp{~~phlvghxytowysy|snx~YXrvlyom}|~~zwjx~rv{ornqu{}z|~{xviq|vx~wv{~r_l~xyvpm|sw~y{~|{qrns|vwq[jzw|ygy}msq\Z}tnzo^b~~\mo\jtzfvXsnx{jamvqs|zru~{z{ldal}og&x{Q}SM_^z[bqzskxufs}{y{{w{vw|umrxqyuoz}ttt|tjzjl}eawzzzuqzx^;Giz?]7Fpsvinxrwwutwqnq|}{zzonrkxsih}rtid|SSviXa~cqylm|ostv}sQUuq]^t~{xjm}y{v}|hjy|zxx}wnr~~sr|ysw{}oik{vslY]x}szopz\Qztorf\wqsncavRUwwywomd~{{rgYl©|SOc}zrtr~{k]n}ts{yvwry{squ|yw}{xouw}tdjt}}zrt{owwsryyhoy{b]xm\yqtnk}}vx~fPVv}G?WvI4|қS8QkyeîJZptprsxl}rYKZ~zsdt}~yxyppv|ohcons|{}~kZiymprrs}{w|iX\tdXZv|ox~hdxp]gN{rUcyPAY{ovIJGagZe^iy}lgdG^y||zqkjctzuZRn|ru}jlivuqmpvvxrt{{xxroqmw}xy{ro~rl~{y{{}zpwzxxtjoy]PxZ`hyodewVCXS"ohF^qb~vvic}d]wuvzajt}slnvupzvp~|sltzvqlqtqfwn|xrrolnh^nwu}x`]~n#s5[belhq|QYȢ~r`nxsiSp|pxx|uycjkkmyr~~pdu{~{}}zkeqynw||wsotpvrigvwl{|lhvwrgz|}vzzpufv_byhm}xvv}prz{uvwz}~|rovzciqmscRmqbay|mi_hyr~zls~ui[kncowyaosfztK@Vrvgoio~wey{olrzrs|eQgvnv\e}|{shu}o~favxv}pctupyvy~unmslj{twxuu{yv}xpzy}xpxysky~qctrtxvx{wx}t|}sady•M"*cma{xs{P7؞wcs{noyodpqs~rw~u|l^nb]^n\Frstlp|iwvu|{l^v\@bZZw~txxxuz~vu~|pggmtv{weyun{zpwzswvku|xpxvqlo~{ks~|lfioxxmyogpn{sn[dnqmeV[{vkoz~?5k\Nmwb]|fQgrktddx}jsyfrV]3/I1Pjdy|s|z\Xl{yQ/)Miditt~}|zyyfgvg^f|tmh~yxttojfpe]klhkr}cqwzrwussvnp|~zruxw{xxrwmgusvsww|yfqpzyomlyy|wq|~|{ea|~|squywuy}}z{z{~xwz||}wstnt~{z|wxxvxwzsx|uvz}aUq~~jlxs~qu}wp~quzuownpywz{if}rjux|p@6^\WdFfs\}sxqvyhl|z^[lxvRSuq|vk~uoz}{ww~}||zsts}sw~yrwsmko}ywsiq|xzyt{u}xkplp|uq}uq{o^YptxmXxaSGIuwTH^tvmT|iQ:9M؉.Dhi1W|ehyuakzsznpjgTtwhhvvz}}sgloyuq|}j`puww{}n`gq{|yujiibkqqA6VvnB.Lp}cpj-ӎ;9rzNVӡQ!=kbnPhkq||}yjw~|nTS`pskB"aBrwidrx~vrqG*,[ʵjmtv}jTa|vstzuuyfamzv{ruvrnnpy~rlu}}||z~}yw~|uqpt~{v~~rh[ambWf{}u{}sr|yutxowpdqz{{zztc|tqitoPT{ dbkymujX_{ab}igqztnrx|qriahxjw~|tioxvts|yw{xzxqs}yr}``xzjft|{u|q`bu}pen}ojq^Sl,@Trfiwv}~zvwsj}|z~}rv{~~}}rnx|wx~x||~~{~|}}yy~x}ms}_Whj|zriyy_h{f`{mVf{hvwvurz}su}yy{{}{youzyq|tzRIsV^kuv{ohuy~|~{{tlz|zz}~{rswt~rzvz|z}{qhps}~xzs|{}qcz}skd|sxulkx{ur|rryxr{}~uhux\No}P]{qpupsz{~{~{slt~yluygowy~}pmz~rit~uyy{wqr~~~~|z}|y{|~|uv{y}ylhsy~zxy}zs{{}uvtx~zvzlvspsnz~{zyxyu{~}zy~|xx|~vpsvww}|z~}nv}ro}s|vlu}|vyxt~|xknqwvq|aVoignhkz}r~wk~|ibh.LYiph|pb~xfj~ozy}~~x~~{}utx~~uxywz{zwwx{|}zt~xx}}mbh}|}vtt}y~~|||wy~x~}tls|ss{pmp|ywRWpvywuv{}|ppumvwgj{~w|{ijywvy|}oar~eLPkwlo~x|xiv{lfrugeuyvxgo`]zӷ\OTuwzxgYN^ns|}ywf]h}q|}xpt{{y{}{usy{xt|~{}dVuwx{msw{z~|~|ys|~}~w~{ype`se|L\‹XOLksz|sufb|yuta\yw{yz~u|vu|z}x~tu|yu|~sg~e6:hzo~oJc}zox{duXQpt~hSuzg@o[Cvӹ|2!Jgb}eXigt{{~}urz~}yqn~|w~upwsgsyx|y|~o~ypxyryv~}pt|utz~|~qjgm|~xxy{z}{}}srxu~}vzqs||{py{{~|}utrz~~wuy|{}{z~~}vy~uw{xop}~}~~z~}{tsow}ys{vknw}xzvz~|{z||zy|vuuidkh^zvz|yxzuqnq~hSos~yzqxpvugwq|Ji˾hYhpxwz{m~kcwvnssptu~yxuww~~~x|{z{}vwy~oxe\c||~lw|xwkjgrz~{{|~}~ump|}~z~yw}sooz{{}}||}}}|yz~{w|~~}xtvvjusnloa`w{yvtu}~|~|~}|~|vyz{yw{wuwe=4IruTDS~}rrqwxwx||~|xstr~ky{krg`fl}vytwyvxz}{{z{rt|}zyvxyz|~yzw|yy{z|zx|}|yx|zyvy~yswupov~}}tkpzzpnv}vnlzwq~umtys[Xp}noxoz|vqxzij]mхB:Lp{Nf˳wMOe~rstyyriq}utv}}|xy{uqxvpl_k{rkw{z{wxtqozhprq|yx|xw}}pzztux|{~~}}~vu{~~xyx|vv{~zqq}zz}~}{}~ywvxzy||zz|}umvzqkry|aXesxsv|uqnq~~{zs{|rsx~zkzmiPZ^QWuyxtunszOKuu`zvex|wx~|u{ppy{vy{}~}vw~~}{yTNtẅ́FMbjm¨[Fnnttn~}uzhYkЯt9+WyZfvr_sgNY~pa_gztfev||~}||}tx}}~~|tmo}|}}~~}|z}}|zms{v~}x{}{z|zzz{~~~qowwceu}zy|urt{}~|}zqy~~~{~~wty~~}}~{||~~}|}|v~xsz}yvz~||}yw}tsx|~}~~zqlqufeutq||uu|zz~~~~}{zy|~}~|}}|z{~~{z|{||{}~}}|~~~~}~wz{vzqmxnkw|y}}|~~{yx{~}~~~~wsu||||{}|~}}z||}}{~njqzoTGXzg[bwzop{royzqxsryzxqvx{xvyztvwz~tuzqss_ovx{r{|smv}~|tx}}~{vz~w||||}wx~~~}}~~}~~{{~~}}~~zttwheio|z}x}~|y|~wpr}}}wty|yz}~~~|}x{u~}}vxy}~{}z||t|~tllststzr|zqr~~~~}{s{h`rqw}qr~~}wv{}{vru{qrw~|~|y{{zz~}|~~~|~}ys}uwz{y{}~}zv{z{|oo[Npuww~ynkvucbm~}xw~xoywuv~~}}|wx}}}xz~~~}~|}~~~|}yv}~~z~uo|PA^wWfklxqzw}z}|z~}wy~}~}}|{[]tsNk}`^XWZtdy{si{{pgxy~}xwzyz~z~~pltzvjt~zw{{|~}|~{}}|}}}}}|~}|zyw{sljz~xy~kiq}sgygg}}zmxuv}xsu||{{yz~}}xvz|{~~}|yv~~}|z{z||yxy{~yu|wtw|~}y~zqqjf|ss~}}{~~~~z}~~}~~~}{|{~z{~yz~~||y}prv~~|xz}{{~{yy}|{}}~{|~|~}}~}~|~}}ddxy}mo{|xx~~~~tu|{~}}zwy|||{{}~~uryxw~~|}}~~}z{}~lcnxjpsqt{{|~qrz}v~sjy~v^hiSY{g^i|xuyytqw}vx{z|~|x|}oszv~~ty{}~~~~}~~}~|}}~~|{~}x{}{}}~}}}~~}zw~~ypygTaeawuxuq}y~yy~z{zz{{u{|}~{{~}}~~}~}~|{}~~~~{{~~}}~|~ujpzyz~}{|~}|~wln}ymvtthduyt|~~|}~~~~~}~}}}~~}}~~}|{|~vw|{xyzy|}~}~~~~~~~~}}~}|zz}nr{~vt||uv}~mgxvozyyx}zx|zz|x}~|~~~~}~~}|{o~yes}{~~z~~}uw|{w|~y{~|}~~}|z{~}~~}~vzusz~x}~{}~}~~}~~~~~~~~~|mo|~~}~~~~|}~~~~~}~}ytxwkrxz~{|~yy||~~~}}}~{}|vy~~}~~|}~~~~~}~~~~~~~zx|}~}~|{}~~~~~~~~~}~}{LIST,INFOISFTGoldWave v2.11 (C) Chris Craiggambas-3.16.3/app/examples/Games/Concent/imagenes/000077500000000000000000000000001411575327000216565ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Concent/imagenes/an1.gif000066400000000000000000000031011411575327000230170ustar00rootroot00000000000000GIF89a--L 4  L $D $ $$D4 L 4$ D $,,t ,,$4,D,T$L,L,$D,L|D<4\4@K2bWE  .,6jccM=#VŊ3gD*۰GLZ<~]/%pડ'TMkui M `. BȒ#1qv)-p&Xsp F&2EA& 0yLI7,;9ZmUKՀi`K;վ11d= q_9qv lfz*1l35 ]6D|p3N-iop^x1xcfx lЂi!E.a&8BgD$& N@|0qP@1-gɋԻ b"P"oPB<h{.Jp@F xpc2MlGg&q/RS.m$:әY * B#5 ݄ye[qLgrr"HL;gambas-3.16.3/app/examples/Games/Concent/imagenes/an10.gif000066400000000000000000000042411411575327000231050ustar00rootroot00000000000000GIF89a--   %!!"&0$&$(++-<$.9231&5D564.8937967?18J0:@5BE8CY>EL;FQ0Fw,ICHJGIFZxHȓh\Bt T'(rR8 +VfDe2 =CHt1F (@Ƞ00d8L/1 1$d8AC_1 \J$DA7ӄ1<8 ,u԰W h@02(81B`5{@: c<".dQ`0PY@5{2'.tq!b `=яl`$1 ][.t9 x7q}@ F'#b\(C0慈/fX@i_"#d<61 s2O t 0=_~ dmx0JAT 8LA R bXg6p7hBO +~P>xPMMYJ x'x BlB.~Q# ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an11.gif000066400000000000000000000025251411575327000231110ustar00rootroot00000000000000GIF89a--T 4  LD $ $$$$4$ $,,t ,,$4,D, 44,|<<4T<L<,d<TD4LLT\LDlL|LdTDT\T|\$ddltdL|d"L :TP-3žKTT1 @(.88TRL FkӺ>Qx` JZ2 Tb`$0Ь"A< &<@D/"p < @!=P.p  Rp3LETMuDq?Q͂$h3[AMmA06PP 5VD3VK! 8tp ,B:܍@y@2QśKW1qS ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an12.gif000066400000000000000000000024641411575327000231140ustar00rootroot00000000000000GIF89a--@   $ $$$$$$4$ $,,$,4,,$4,,,44,<4,D44,D,L,<<<<4D<4T<L<,Db@N@¹DB62K/ 0 T31z 4X/lkfr\2L  @SX. )5@2!809Kbd 6Œzށ%Jq:d P"S׀5޽ A"afkdibIqqΜ5r@A{,Z8bmnD"F 6&8pE5B€lݻ :C ޵X5HGBS $$НwvH`-8K 8vѼ@ /0O -()Đz &hu'B fG 0  IOA(%J0) pK = PC.T8tPp p  @)p?(q=p D G͖◁o0ݙw 2O `.@ 1HB AMO vt bij'p `HFn8{@[UBP E~"Ԩ4F>APCX1%@x B! +W2.%02AP$ @ aL=zC#p9 | P,Z"; 1p`F aN:0@lC'c C4(zB# |0c!p`j Hf(Av\0>6tP , bH%@00)  `舖 i0AĀ`+SIH) Npm챣0 Q(JRm6`Aः -JŴ 'Ib3@D5X G`?8#LjZJnR AP@8X#MzbA}! V `@l&P?=@;gambas-3.16.3/app/examples/Games/Concent/imagenes/an14.gif000066400000000000000000000036041411575327000231130ustar00rootroot00000000000000GIF89a--K     $$ $$$$4$ $,,,,$4,4,T$44,L,$,<<<<4$<|D<4L<,\4! %(P8$D0HxAX R "!(5~':"2p&(Sh`xa' TD %@ЀD K0 K `EA 1& #Bm13.E`h2s:F@A # @K`0H" tMY&cP$_ 20ևMmrS![OAT@pgA ]w;Zr=ܝ"HT2h-45QP@Pq) @BgY3C }nlV% O@D:0@@œVp2h NC AVv'@@#Nc "lYL)Ӏ &Vga%:3%X1Um&!;:6cO ` p%$Q T @c;X.> PQc)o&Ht!N&`*dkr(coı{AA~ERŐBy {mC qA i@zZ9R l2鮳(bmRDF#hKo1) kj`#yЦ 3D;gambas-3.16.3/app/examples/Games/Concent/imagenes/an16.gif000066400000000000000000000024461411575327000231200ustar00rootroot00000000000000GIF89a--G 4  $$ $D4 4$ T ,,$4,D,T$L,L,$T<L<,T<,l4$d<d<,TD4t<5#5!!$*08?@ ?< 33-G13>?8 9T8`zl#(q5h!܉*A @ƌM"\ D AE5fA ?|P5`L+TH`@T^Nx9]5_8A*+HLP1j0T"삾$HHi"]*tA@_H@3PW U$1JCv8@@(bOgp0H. r ́,S:9P$mG$x:z@Q)7 P4$txHP$/ ` :0th 7B 0gc@:`WR FP! Z4EC 7=\NeBZING(9ФCGD]4( hz& d I,egx1 ID$é=h :< T H:Iʤ\F^B,PC {I@k2 dKAlAE[A8ż[l2,HapEĄȚ.UYldA J$0VLD BT!J@0N 1N[T`A[ B,ZD1E(.PY|\Tl7܉oF S K@aCL68]D̅d|bQǞ! 6ZS`:*!D%Y\nT 4/ @a2pF<0NrIܘ[8!gDKplIp@AsQa _!|PA 6p`-\ =c""\ @ApW),@!YfatRȬk j'X@FE U¸(46WnG Xkw`6P<@ v(Ttt>kT J A ضmjx0@' 1 .5 ઎R09D0Td 9#`8IBvPÔY[Wx1&ћ``E,uE/`A !d`R:J)HL<`RǠ"x9S ƹԉ@.NV&E)@ (c;;gambas-3.16.3/app/examples/Games/Concent/imagenes/an18.gif000066400000000000000000000030431411575327000231140ustar00rootroot00000000000000GIF89a--Z     $$ $$$$$$,$4$ $,,$,44,4,4,1EJ5`*SHBg$j٩+Ht2 @I+ U!A@J $;a.3X3ܽb)SNpHcE)itpuU"XȞU߉&4 @4B"5`O=NqpƇ xฝj %6*Q| AE]4Ȁ>8qp@^yElC PBPoiF o5]w`D @.pLCP]S8A@%\Z@@Đ4R ;4@ĄW8C@ G "hڌ#n8@ , <2 k4AE5P+CdqP$( :@E4C`qY,E5D 7Lc@A|pJHĚ$`Є/<ȀMdk(H;T^@ƒ) XpЁG D )El0`gHqX+4LP.R< G`C'|@XP8@`qfqC(" <7*4AAtSXHq6P&")x*` F% |Z`v)D Y*< C!kE2s1c#fdF8;<FR:ᣣ49F~ ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an2.gif000066400000000000000000000025351411575327000230320ustar00rootroot00000000000000GIF89a--U 4   $D $ $$D4 $$4$ $,,t ,,$4,4,T$L,44,L,$,<<|<<4D<4L<,T<,l4$l4A3 ,Ε AE>ߏױ32,24Wtp#kÇjA 4GF}#ɪAX|$JN2 HH:t䷝>X CT~CO$,`?p+Z a}4Q29`K&%U4zۚD CwF@֭.RpA >h:DX tT XxL#J&((J ~&#DaNzY!cQ `jX@C0 ,@L!;[#X@?AL$jHPL ) 8!dU8 ZaF(Q=dkMVh ] 9zTB1# a{t9 ITF* HQ&n id؄Q0`cztYHJ$D;@u^l @:*RX0pAÕSp#QZ'DPܔP v05|P ]I% X*XBB 9ЕC1@B)p굕<@E4U0&?BK,0D# 2pTA3P@ @K , Qc('I4DPdxrH:4!@H 47ǫs hյo`:H?Rɔmy-XQL@.4B*4BBD_9'` " \`e(;gambas-3.16.3/app/examples/Games/Concent/imagenes/an20.gif000066400000000000000000000030041411575327000231020ustar00rootroot00000000000000GIF89a--J 4   $$ $$D4 $$4$ $,,T ,,$4,4,D,T$L,44,$<4,<<<<4D<4T<L<,l4$d<TD4LLTlL|LT\TL |\$L|d*db 0]o>H(F"\Q8X`(7T\<iq8Up.b⡻| BC0YTlSB V[xmb $4Y` $`y*4,\\M &7D`B )qD BD1A 5pb@xUDP-67@9 }@;4I`@3L D@(h,kZai,SlTA\pA@'W8** %uL1DU`*kϹ$~jQYJZ`H &) ܚ @e L@kb @ 8n6.RYi5'p+6B[M t0%^ @&` 0PjPETӔ0 r j-'%, ^X5+ 0T ` dȐNF3. ]t Q%,4 d3P@ u)$m (x-v|6\tB0-Hۡ='}`"W -#MxҔ'B38HQ !À (ȝA@U3gx6nT%LD 3fEIlMC(L HTL@ڣ;@-}JXP @ 0A ,s D ! {h 0fP nߏ ܜǐ9ȡ5ʮoƯDTиܼḤԤԼ!Created with The GIMP,--!+747,4BB>+>+77JB+ %;BJJB+&>7?0!%%?;;J&&4%;*+>>;+4+4ˢݨeVk-@ >'LPmvӮL&o *8Xg (Dta2Fa `]pZ*}AEX=/!+"({bZaaD&7>\X kׄhB>XB 8b,EwJ15犹72\McE@AOYSn8gi1xQ72'V7c'@#Ņ(xHA'إh!"1ŕePтuءȗ#.(. `hB&-X`C U|Q4`BbE\A  ]QHa(J( p0cL0cThL/rYdBB *pp L@n `e~0h7lûtC !81"P ,%x%6@@=@/Z\%$ @$ qw h%[EC1 hW4ڐCw#L *h@IGvh0 C`iAv[IZ"p .`{X tGDYh !1DvKw Dp !vx; tWW=(AtFODv!BQ7=(BN(@zd "Xɾr r.SOhP:_ FŠQ T6`M&BbXJ71I'}_$ 9{FT^ǁ]刐Bqtܜ(}Q H'@a檓&4X =+@X r4!`dӕ@FBtʕtn Z'F \%OD6x 0fG ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an22.gif000066400000000000000000000024641411575327000231150ustar00rootroot00000000000000GIF89a--B    # $$# 8 5) ),&=3<4$L<FA-_F JL0^GaR^O =$ 17ǂ."*)  0T>}!Ph@3BҏExF54F<T4`&!$t@ p͠T !áGFĠDBzAX K~,#E*4 ` 4p᠄!X͡ P+ CE  D!@TɅ  C_ E34Bƻ%EZZt#A ^̠S""|;$    <#H  Ҋp@(E0C(jM)_&فABt6T@+#@PA ,PaSE%{P(:\xAӫ;V=yE1X֠C , WG0CeتЀBP-Ꚅ/{XpaU\?D* u4q}{$1eZW.8<T 0 czD00%V̤g &VPRSH(8 ` Pe^Pwk& GQC8,ΐ@@$<`ࢋaWi9Sg֕ .MmNPpaQ 0P :=A,O)VvYg8@H%}gɈ,ly#i P !@aPPBq ƀaX8n̐#@h?]O?f Ai[%⦼$0P9X.  _RY.]E+Hf9s0( \`><@1#02 &I޷00j\G~K 5.V֢+)m;gambas-3.16.3/app/examples/Games/Concent/imagenes/an24.gif000066400000000000000000000031331411575327000231110ustar00rootroot00000000000000GIF89a--M $$5 # : 8 O 5) P2=3S)tDY4KL<]5"__F 1$$T^Gi7_ioE*WaR,doRoL8J1V V-TKV:}gOnX-JTsi=sln{,pq|ǃCȎiŐ>О <ܜ9ȡ5Ᏽݳ ܯ3մf Tܼ*̜ѤԤ!Created with The GIMP,--FG ,F-G.& $2?KFG G+@GK :L4>''=GH=FK,-D+'2+'>CCˬ! 8! "z@*1f@4'% > `D$4`ƑZc-4nŏ 2H0be";d$m'Z1ca:u 6PU Pj5g49 tp=a2|)d9b >`Q:*u/[sgLcF$BP%aT:yn{!Q\C"+0 }P8|^|G?4+PvA"RY[H@:pAւ>A4hbJ ZG`$bC>tA#2Hc"J@_!ʅXÐQdR HJBOU%sUG ED ]Xv\sF #`H0(y O 4D0[EI$Z  |@A0^NyH\vyP!|`+8$6ba(ArA ]^E2`wy,QY$gPXP6K"ƨ (5De⵭#30T"2Ӟ*j0\@p D@F`е2qƺŎ.QX7Q.eq#dՈ`12ȇ5"gJ=2!3pB#L]Cmk;u"h+.YA^;pYD #ۆ`2sj+pڀJ10 V `؅ی>.0A:`83t>ȒW*;U3AKֵ>+ mrxMz#+D:?! K,q͎3P"5T_dD6<וҬB蠹ꄨϕB8`fC!aA,P-U+)hq>jh0C8 u\,йHL0Zp U@R Y@PZ')@H;gambas-3.16.3/app/examples/Games/Concent/imagenes/an25.gif000066400000000000000000000032361411575327000231160ustar00rootroot00000000000000GIF89a--A    # $$# ,$$$$ +&),&3((4,$<4444<4$:5)<<e9&4p?<0@a%xA:S15hɊ4`iOatHG` #VXRKT5U`Fcg(cݸ`d-pKg5qJFj#;gambas-3.16.3/app/examples/Games/Concent/imagenes/an26.gif000066400000000000000000000036131411575327000231160ustar00rootroot00000000000000GIF89a--k   $$5 #  6$# : $Q$$$>K8 +&O ),&3((4,$0F=3S)444:5)g$86FY4<<RPãP-=k ŠĒ8p@ e!#d7 <0rf))n~>:vaYEGtPD+ú~CX 5yHp`䉣,$D82g4H@ /!qY (vl8EȑqrH0o410YƳgjz6d/iFZ (q қ-e_᭩F B(qk2)HAawN@H` p#H~bD(bT-#<4 ʊH \oz8^  LO-@JzH` P >&6rgAfm *J Tty 6C^WTxȆ 0ӆohTc @8U`G,Z 8'z9`Qmv<d( T#b0%l b| &֦03W  /.O a,> 3f ,ᚇ&FE `e"$ p&AF|!GoE =Ai` yT 6G4og% S(U!D :mN TB ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an27.gif000066400000000000000000000041141411575327000231140ustar00rootroot00000000000000GIF89a--{   # B# $ 6$# ,$$$$ +&.S5) ),&3((4,$0F0=34449<4$:5)&D6$<|<<<FjL<FA-S^F_F @MACIOJL0"R  &>-7@2 > 8<<<**:DL_mf[* 8> 2ӿ&ٵ@p1FH 8fHLDhc j܄ E0@ &Ndb&M+1̉m|*&!C[|)% $:~s3B<H B$(:Z>4TiҌʼn/ic'N yCj! $B[|<;3m &f'DBHBV#TБ$f1qԩsh:_d扢A Dv <["A7Wwh`baq ǃw7gI2cF-˽RAh݁*%|4S7lB;l!YvO810aF!GFk2ApmH?QLdq{-8AQB1; Rtхhwu`uUTc"T Ǝi$%h;FmE PГX@׎m}]l!T4B"(Z 1ĠCycpODm~3 kC%)`` NUQ Mߏ О AnT&tVƗj<[1W1p aW aJ p@d.tuDqT,&qp`B =@!ܑf!9`Tn)n$uw~s.3Sk wLuI9 bԱsd8 VaF=<fXh?^69DrOn08fQEWҮqF|sS78[R#@!um ˧3.n`!zjPRf&J:|⢎F79`vGGxb2B:@ RҔ,@C`>O];gambas-3.16.3/app/examples/Games/Concent/imagenes/an29.gif000066400000000000000000000026061411575327000231220ustar00rootroot00000000000000GIF89a--:   # $# ),&3((<4$:5)<<FrTE/ t);\6f$)L#AQMT89 vn"@XJ6S"ޢn,q N6bX" h7*4Yh<$**`j!ohKZ1p!*(@[H1M&,FPD-og@B [6\XL8ɇ!i,Z4rLD=mVl@CLhA/B`Bhby^&iB7y!@P@Z|2$A&| HdQ-@B&adD СQYYQpA} $Had(:m2tpƇ+B y$ BThf Y6\xpBԂR9A A(O8 N/\p"9pp\IAU,BDiEcA"P K@} ps4 mp7, a" hJg yE]Ba@ilXq nUtD: "8 ZAB C 8`[ERt!)%C  9,$7eS:&P?3SR'LZԶ!`8Dp@Bā!&hЌ;1)ܹVV0 lPإ obl pAGUH4R`@_֎ %tt '– +J4=ypW4LdF(B;/yvah`G\eC n*!H& Q̝%!P"%|`, 4!"=OHЂ 2EHhD7K.(`@ c YX!;gambas-3.16.3/app/examples/Games/Concent/imagenes/an3.gif000066400000000000000000000023771411575327000230370ustar00rootroot00000000000000GIF89a--@  4 L $D $$$$$,,,,$,,44,<4,DT$ L,$D,L|T,T\4L 0pѦ=S ,r&p2nh/]yN ^RHA`k}wߐ}-s~X}O!X;jێ)K,2~\ӁjF;lu t9 7aW4I b @A+mӌjAP tXC<6`y:ԧ2#8#;̵HC薚;&3>,ʉ8bU ܴ3Tk:*X'<u:`0(' r yФPLI1 :o R p5"p*6P 뮮W kh-M]گ&HB); (,",)-P̥f;_V!{.NcChtni00 Np@ "D 鰲<) +3@#bpnY;A@HAbEx x0@9\(2!Fp r19(3HArsRXHA8Ab 3RH1#.D#H8!2$ &X1"D2aDͷ=$#>:Dr9|qõ L}0jד=7FH|87>ңr'9cͣL yGB HƍË(dHj(D3r)Gtv=ЃWDdA6/3 B [6L:,dyJ A`[Gt9 uyнuB* 5,vXlEX+>О\i1 BTE/[ŨiBY qG>.bȔ 7؀Z- ,:G  = 6 8>pAZ#DŽӳ`BYl?فF9攃LyBL@BN p"~ GwYNe mfF6Z~zN ̀/sA lE n(n\ٺxX3z>RpCr#e |@D+ Թ!- t@s#Ax$F |\"[`:P2[Ⓝ "f0t/h"^-0?؁ :`a&z"6`h|K'> $4S3(0^}z S[A(@;gambas-3.16.3/app/examples/Games/Concent/imagenes/an31.gif000066400000000000000000000035661411575327000231210ustar00rootroot00000000000000GIF89a--q   $$5 # $# : $$$8 +&O 5) ),&3((P24,=3S)444<4$:5)g$&D6Y4<<IIRYYI>*RR#>(>RW##YR>(# *.++.*IŽ* ʨ 3GG9934Մ 60chi|CC`btP`IR)G\ %Ka| BR M$H ><4G !Bh1)h5Uq0 (zk8)%rjWd 7p¶$8's94A Va(  $B !/8Coh `S<0A*P(p+VQ?\+@d4 B96v<&ڻ{,D@*oY  ,T0˃1@Bl!@d33t} 6 P[13W o|! YV4CQ016v۾ٞ@B>f7` JPAJt].,@}ocrTexEWQs34ba]xӇ^z@`C,AȟJX0 #2&Z3䐂h`'h" 9tU@ޤQfͅ) "rr&kv` `@nB]8$tgh@᫃ @© K !$p* npf8)੊*.,@AtU(PZ?`$pg Qi,vE]rMK.@qTdJ̕}$`FJ&*n70wl|!t,x` DRoq[DA 34#Io@+j M{߲L~+AjZm_Yjl!,jЁՀeY(`qu;ൾxXKh<Nh5@ BasD#J5p$&BmrV=$4@_kL}Y< 96r /{#l5@) ~F@<@À #\ lGH D f ' $Z& l_S;gambas-3.16.3/app/examples/Games/Concent/imagenes/an33.gif000066400000000000000000000026441411575327000231170ustar00rootroot00000000000000GIF89a--@   # $ 6$,$$$$ +&.S),&3((4,$0F$<4444:5)&D6$<|<<<@MACIOVKnTTT\\\fZXddd`gYwwqm|{qv|~ȣ٢ٽ!Created with The GIMP,--   ')  0$.00.0  / Π V& <thGㆎ7hf0䃖++eK7b=\I…ѐ؍F@dc>ACn< f6ov)hP#ꏫ0@UP3 01Ccsdv:)eN(ePCoBF $4^4eACNlF *d \N5-4pс gh%ĔMƈ8 BP [O^O#/; -)  1(./tp @#pCPAA f/;gambas-3.16.3/app/examples/Games/Concent/imagenes/an34.gif000066400000000000000000000033541411575327000231170ustar00rootroot00000000000000GIF89a--z   # $B5 # $ 6$# ,$$$$8 +&.SO 5) ),&S)$<44449<4$:5)g$$<|<<<FjL<]5"FA-S^F@MACIOJL0^G#ZaR^OEM2Ofhf=EM̏ݝfzzxcj\ ,`;O=^\U $rPPi|NFဠ8@v,A*Vƒ1*H"CF`AS4p :W*YbF`$ *D^IcDdJ  J:Cs!ZD,@` - : z%Q8< D<1PK3ݴv `Dx7Atri  =쀡GQ n t B,. 6a~X$0<zN;Z-f' -ҋPy, UV@c/~A ( aUi6/zԂD 68v? mw]uׁ4px& aE8CrJv&(@2 < iX%;t저<@CD;P 0 X ECd\P*7CIՐ+'p!}݋6R>ڀF2.dz6 @$-CFяd$  DC@;gambas-3.16.3/app/examples/Games/Concent/imagenes/an36.gif000066400000000000000000000032261411575327000231170ustar00rootroot00000000000000GIF89a--lS)g$Y4]5"n4_F 4CIOoE$A^ODE>Al@I +BZI Q$zO(VnA؀ټ'6 *Zъ#t @ Vph`l56 A0 G:qB}F'1 ~ 0HF;gambas-3.16.3/app/examples/Games/Concent/imagenes/an37.gif000066400000000000000000000037231411575327000231220ustar00rootroot00000000000000GIF89a--j   $5 #  6$# : ,$$$$8 +&O 5) ),&3((4,=3S)$<4444<4$:5)g$&D6<<c\T0H`Wb"1T@QltЉ@wQB ` pD` ]l1P (̰E]0DxThNaa{԰C 5P [Xa1 p'`DaDAFsf;x0"ítU1d\LƖL$ŏ @'p  7@oJXApĂ Sw3~\/x7kEQ5@`I?tMF+4 vL#` A Q1u] ^[A^ciB =@EP` NEZ?7[0SwLt;[@agTX!-OD0LO0';~307 8qm3AJ({o H Ǡ7=zR` AGI;>7H`@ֲ|lSPA "50@/$  `KҠ=Ё6(v@ PDCl .pdE\C 3P!\ x\= 7Y/xa|`A^5Q+x$xź rA8 `{ d(` 8* `@`o -ܓT/dԺ_L,>\4A DN(l)@G5Rp-Cljf12N .(`y e/Hۨ8::`kJ "H$4<@A4([PJp=Q>@:F7%$*(Ґ2B jȓ!` _# ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an38.gif000066400000000000000000000033661411575327000231260ustar00rootroot00000000000000GIF89a--W  #$B$5  6: $Q$$$ +&.SO ),&3((P2$0F0S)4449g$86F$<|<<<Fj]5"FS5e@MACIO1$"RLң H J8` ġÔMh@2p~1!HA=QiX`@$B \֮_@i PL'wFC\,+)à LرȂ.0Q\7xds̘zz~!Οo͜Y<Eu#, \|ɳr͛:(qhEd>W3yT ɥWL (8u+HZ (Q B vI 05H@ְC DL,iD]oQa{m4,@:&:B" C@UL6`j4 @R}p!X"`0'j;s^\A!Pq@Ʌ`;PʭJ(y!, é&= H7IJQ8R! Tֈ%8tڀ?K0 yp6<'qxIJ,0 4NDlW؂ 8 `8~0g/`:c@ IANE30 A 6&@쨃  A `B$2pHPszWPC'=PAS0oYTFrP L0_A@5#?"0@! :C ’`Gn !! X$d9@@9i Ȁ b0,1BFn@BB68  (lFilQIVh(=#4//8 L>p9J5@)l1P lG1wHL)$A0@=`:Ӕd*7 lp"O""06" 0GFpB0(mI&;gambas-3.16.3/app/examples/Games/Concent/imagenes/an39.gif000066400000000000000000000046131411575327000231230ustar00rootroot00000000000000GIF89a--  # $B$5 #  6# : $Q$$$>K8 .SO 3((09$aS)4449<4$:5)g$86FY4$<|<<<Fj^&X]5"86n4FS5e_4CIO1$i7_"RM𠌽ߏ $<- DXբ6YI& Qؠ%%\n `)s2 P" hP \nkSpS$ d ,H\T2`gP&1 EF0.(@ӇDt-j W&( )2DĈB@% 5ȿ$IHb%*U6I#ER/ mkjR Bf&.ё06`Sﰈm bIܕMJ B`p:]L"ܵ r&2 W]CH;iwSЪֻpj'$!Ha`B:+zF*j5rH2 +!!:E ڮ ϒj% ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an4.gif000066400000000000000000000023131411575327000230260ustar00rootroot00000000000000GIF89a--/    $ $$$$$,$$,,$,44,,,44,<4,D44,$<4,<<<<4$<|D<4D`|&4XBʼn|Y׾E\܇B U@GvM@t`~,Bf 2a #P}aHOe}%dh 2@x5(Esp ,0'T Y-s 7be6O'-`&@$ h%T)Q 'D`<B|g >YP8tteQ &Ё@W alit`2ah p)|P&u l|QF$fXBv |P>+XH(0N@-0*v((.ڂG$$]x,H5kA0>K#J B iL Zj h`/ Y4y #+F3.0!7`q;j :r7{ cfA5P$A}_ -fr@*|c+lz4Gn$ݙ"M.f@F %~'Ѯu&t-7L%H7Ϡ:m;gambas-3.16.3/app/examples/Games/Concent/imagenes/an40.gif000066400000000000000000000050261411575327000231120ustar00rootroot00000000000000GIF89a--   # $B5 # $ 6$# : 8 +&.SO 5) ),&3(($0F=3S)444<4$:5)g$Y4$<|<<<FjL<]5"FA-n4F_F 4@MACIOJL01$^G"Rߏ I2 x݋IL _0h f]`aA Ād%XbRXUL LhD@(Ò p` $-$$e@ brA aHuM&x6zjv0 #PR;aA P@HxD`ʦ ` 3)C  X0.@B/ #nXd5 Ӄ p: 5BpU! `R hd 'h]"bXoUinNn2`+Ӆi:x'`9 l`H00-a&' Wt j\8HN@AA nтG;8 Y1&9D Uh{@L bX a2qF,biC*@ |S Px ;gambas-3.16.3/app/examples/Games/Concent/imagenes/an5.gif000066400000000000000000000031341411575327000230310ustar00rootroot00000000000000GIF89a--^ 4   $$ $4 4$ $,,,,$4,D,T$L,44,<<4D<4T<L<,l4$d<TD4dD4t<5+0 2D80+05>BB8 +$"DĘ+$#$5BՂ 8BD"@ ݈  @;Q0]x >„ƆH Xځj\YK0E1d&K܀Ac@"0yu8ᨕFPXbȑ}5pVd%b"D|b%˖.],qT?!ZCD'PdVdAKRvMdEƥy"LPY.[@,0%R k]Wy-@)2=Y p.f]-1‘V]6Ha aKfɲCōF`5T DV*sY;S,q T]w A=0`P"`0C-1E[pBQPD"v(A&U1qHJp# \7+`!Y&NЃG91PTPpda8ن>Et]jхS @J NDXC EgS5vGۢ.ayc΄!(Jc`PwM{daPM/G>LI6`5P,Kp]JH9!} Dp0G#k1`#;gambas-3.16.3/app/examples/Games/Concent/imagenes/an6.gif000066400000000000000000000047171411575327000230420ustar00rootroot00000000000000GIF89a-- 4  LD $ $$$$D4 $$L 4$ $,,t ,,$4,4,,,44,G yr qz! ] "baau v$ `/X@qS{Ŋ,G#$H 4rF ;0'GeAvX0@! I h 0@ ,4O\Rc#<p7  5"U! %q@w<`|a(^QuDr_u#$!O:BɦJ:x G=4dživG'izq``#|px @SxzSDĞ!A}zP!F)% q'3ЀE$\H} Fa LZA0Q !R^(7Al$l^#,\_ÊHg p%;CSGB%mPT'X$yqS $P 0rFt)!)641LMP 1%o@Vܼi$x+?Bb,D 1 L@ t"q $<"F P @ RTSp 0@BHYh* $0w"p $@,S|S矯:||`" #D k#[G1`c=G" `$`#HPV?@uCΗ3({hD xN- b))\GHZ';" 0  ux.@ $0SX"Cy$ PA# lgC1F.}JdH (  < D@!AX+ȾX2EH q(B. E9@.3,liHKYFI%L*u9x3 yx`V<0 ^fn*,L(Fx/ ` 4GQS8`(G \" + _x@ЯP& h]Hp;P 2j2ld <|p#.AI#bJ34GO/J?GO-=AA& CLMMB*±>KL1B DJMLD>Ѵ-*;2*- ;Zʡk׮%=qKAHIJ(Ifc ܨ6D髅* ,Yd16LPm"*8ՒeղB|$Ae;Xc+ɴWݚ,a ݀vZ(a$"7U䉓&< Q+IK \ZУ%&I!Gk]L Q$Ih) IMP >[JxF2ƂJbtPBƎ&HV1`Z$Qٞ!CamEhĹZ%J(aPY Bn"٤!궞`j%>3n1Q IM4( 4 !z,H5 q`0 M>! D0TW93 N҄IX ӭR98`@ H8X).>RBB H]#%Nr)QgMN*PD ܰ4s:"]N,)접@ 8:f +ig@@lpC ld9Bh   @,!BB>s \髯 h> &@9Tq?I]{&5 9XME[?;@)` ;CB L$[ChMI  +`0 1p/@gQ t4\/h#%\6`R1 pai]]@tcicB 1N1!jC > ÊP@ 8W>6PzN%T: /9є54Ch&`i(gJ%,ā5܄|/y =%Ny 0vY`Q8(@e:/\3$oG&t:d^( vpqWOLًfN?M8#K*N>I(u! 6 03x: 2T*Š9MG@WPtU3S*>m9A7U@jͫ_3ߕ? ;ԁ{'爃9A$z@Hi8v-pE8I?(Pt,Ȁ  $ Ѿ&D Uh= 8e9;J@;gambas-3.16.3/app/examples/Games/Concent/imagenes/an9.gif000066400000000000000000000046661411575327000230500ustar00rootroot00000000000000GIF89a-- 4  L $$ $$D4 $$L 4$ $,,t T ,,$4,D,T$L,44,L,$|<<4D<4T<L<,T<,l4$d<d<,TD4$,dD4t<<\LDlL|L|L,dTDT\TL l\L|\$LLLddltdL|d!tT?@6 NZ&CJ5" Rf ) wV D4@ [A` a`06āw m`%/80}"H@GaȤ I2Q0 @ё+IYNpSp1z҅T. htbP P)`z$@#؀~i$T뛫@X "p B4@`Z) 5 $7)!) :Flz`rSIKHr 4(@R(ڌ$ 4G800ҒppZ NRV`:e@U( 3s0 `pa iо0,Imx(yo+pH,rltY`ЬzE0";gambas-3.16.3/app/examples/Games/Concent/imagenes/inter.gif000066400000000000000000000002031411575327000234610ustar00rootroot00000000000000GIF89a--! d,--Tڋ޼xI*ƚ"߃̈́H<"iT>Lhveb ̏ ;qщT(+gPs4jIH5b,K<~p` ;xv:C隖i?h)?D0Ì&k9$܇J- L9Ia}ke\;W_8Jx4LL\RBN&0{qS@Td4zr^uxM$\*2@1c]{VJ'Fۭ g?uGnGZ4+`ԤM_chx',ӘQϯ⠎B@&~$Ztv$7 8Q҂Nkd?>slܛi%r)TW9֌ ŏJa,HKJ0*Jg%tvZ/1}6c*d]\0{TүBXԱKbEh9g eWݹqȭ("űv;#k!W qcgambas-3.16.3/app/examples/Games/Concent/imagenes/logo.gif000066400000000000000000000137721411575327000233170ustar00rootroot00000000000000GIF89aH  (0(8@ H L LT\X<$\dlp`$x||  $ $,h<$((0(,(p(l,,,,h,x,h,d,\D00p0\0T0<0L0X0d0p0P0|0\0H4TH<4|4@4L4x4pp\4\4H4t4`4@4l4X4<8T8l8h8H8`8P@8XP8DͣAh !dO& A^DDxNvNAF8a\+J0 A$Q?)A b4^:lhČv?y#旉J#Xfe<1_X:h#o` P4)gy#s"pmhYeK8* 蠄O?bf(xH:(fA,&C规6ؑ:N Rj,*k)YÆ.(F)^Ja6&亀( )J$NN dO?g_N_L@dO=Ы+> 0S?2< _f܅50H҅A<* q-I8,,R]0A Zf> ,y#c̀-e XӚm5yqZs0+9X~4O55K k!tԧ9+1LЄΓ4D%MLԙD9xDtܨDWщe(DOj/g<^jφX" A?^!H?S.E)%AR8թlSK8,0 $Sr$ xxbu-We՚jj Xa4jDAW }R?Rְ$ 񒱬b+TԂ%)fJhfG cn]H?BA&Gk[{ UAF4pˋ||b"_|rpAۆzWwQ˃CM/$a~W=Ho6nxi׿GKy$bGYa 7"ְG=p"Ae Õ(؅G_:<4`d FƏIP =Hp!NpdczBvr(7C'AFLf{#^?5xӓcm}:Ԟ4 ׾G;zk(P4(40^#ژvymRC,Qr$ڿNRPmXKۈ70z;7l`b)]oK >/`ۘrK :8G wUpSf*&Vr-_A;f\B:+p6W`i#>gvny|),889sRǃ:8w=ב a7 R^9 uϫEXۑpHhjΉa@yʃ,,uAÞzoy}.|H0=U/u>"/9zK:GL։8 2>t]@\?Ol\Ow*ՓPc}ެ=qgao?Aч+z^|8P~` X}`n۷ާ9°80~ ~ z@G!1G(pa` Â!a6x67X@jF@0NfA;hL8Fg3z ϰFr< ]nhp# z j jGH &h'ƀ ؈ Y ؈̐؉I@ P@ -P30QP-0hn ` \x0 Iɰ }8 j˜¨ pqx)8`aȈ LH xL -P -8GBj@ cL T 29 9Gh)f|ٗ 5@O阣@IXX  T^@PP/9ٛ$ I 氚ЉPx=ʐY j)`X@ 7X B0:! ƐЈij@`` Ra6@Y *Y @` h @j0 !Y@9/2* ؀ 0"B:ڗؤE1 Hy03Ȉ@ AIB*ZOʦ Pʠ O?`E ~pnf`? `O[ ` h?@j0x[@zB~h Чꪲ怔kp*D@΀}`@p@ ZkFP٪d'qJ ;`W ;` Ɛ WP;P;$ F`; fZW  ۂjZbpK ǰvB MZ"yΠ*z@ ` U z` KBBMP>^pʈcK`5 `k =cVkX۶Wpa ˤK ^P>+; аo` z;|` k@kV{ 0` ;j{&Q HiP \0 ǘ enPK ˫iۈ`P[ZW 0eeˈ` R۸D 7+ K;[PkỾ`p[K,v"n,{ڈ8JJ pp +gp` S6 pԠ4lZ,=|Z`>ʈؠ =lz7 Xp `/{,Y` ;5lJlJC 㰚` iE|Z0ĤдZL=&v `8 l` ʻSPuÌ i rSɶq@ʃ0  1 Lʺ,LʯS*\pʚ˻lSp uĔ,ʺS` ˿L˻,&! f (#d|0t) s{0ip =jsMйPp{`۬ȫ00}s`ϗ`d+*(S̾!-M|(+񴔘wPL- L=ź yL] 9pX]y0tu KՃŨ ka-@Bx-h -jˠpbyw0c} ~pX؅M׹πZt Q yvkP|N͈P|HڲPX ܫP=ۮ<ͧ]yڎ0DM͎P͈;ܰ-܁ Tv 0]y@

fxP `` Gο ፰; ` )& ϐ#+ A ( ` P t~ u~  !vN@rwN `狮 }Ǹ;y}  Z 螮 pMw^盠 0W` 0 @* ~2 0p+ڀ>p(ވɠ Ͱ0>߮ P  ^`| pO=Pzݠ _.G9ީPf "-S[~aN˼:#@| n 搸n20S `^@پ Lt=t_N#xo{ [O`/q`_HI1_?_;gambas-3.16.3/app/examples/Games/Concent/imagenes/logo.png000066400000000000000000000030671411575327000233320ustar00rootroot00000000000000PNG  IHDR00` ;PLTE$,,$$$,44,D,<<$ LLTDsw=$?DQYj%duu5˭{%F/YξKMks"<8Քt[aJ懬~-#kOLv#8#bu~ Qml<>r|iyPFt۳QD\J Nx BaޜعJUU5Mu5@]疁(TUE7MSQ-y{gW&Ag饑ŊmTEil7AD`ii#լ$Ijۦ)çiN,(ƸZݲ[5S%8_:Q5e駋Zꚦzg.,㺼 J8V<]./u]uG8:(GnyzKr=qbu%$/"[ =g&盈^DWAx#(#5,hw4u ?;;_1-\R\yxl :ة/UfZ?`.]ƠRX,u 9[o IENDB`gambas-3.16.3/app/examples/Games/Concent/imagenes/ok.gif000066400000000000000000000025131411575327000227570ustar00rootroot00000000000000GIF89a $$8,@ `dhptp$\,xx l0|h0| |p,p(x l0| | x( (t8$|,$(|D4|@XTDPP@HXptPTXHppX\THȨt`ĐtĄԈĐ̜иļĴи|tȰĴ؄Ĵ̠̤ȴĴĜМȸĴ̠ȴĸĸļ̨ĸȴȰĴجȼĴԼ̼ļ̘ĸȤĸ̴ĬȰиȨؔĸ̴ȸԼļȸĸ̴̬ȸĸ̸дĸİļļ̴̨ȸдȸĴȼļȸ̸ĸļļԼĴȼļдȼļ̨ȼȰР̼ȼ̨иĸȼШؔĨ԰мĸ̰ԸЌĸ̼ؼȴдԘ茼мĸ԰Լи! ,c2(M!Xڶ+4=b$K6$sn8:NLdBQj?MeEUoLbQ9F[Q8EZ8DX6BV3>Q5AU0;L1Q-7G*3B1x˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCM!B$a;TEC4 d'Sqaxy'Ϟ6v0(RNRj\z5+ٲ(@[޽Ͽ(h@=4DELh9PC@ [o4 (4q""Lx45S DTQG=#vm7Uw W^)bwZj[u^!\v`)difb(E 9EOaCB>0$D| A>hayȂn$p'xp.iz "8B7jBXQIBFUV߉7WLpYf IYK3ؤ=]g&6F+Z&G ɉg =PB>dCD "j%p(p ii;~)Q#u=X@vOjU9ޒH7VZ˯؜3lG(,0CvkF1=QZX=~BH%d/ 4T@\0),CY0@*TZ1x^I`;9Vkr:c^&,n'aWAQv%aCѧ5 D.+ /@[kvzm*¼uuB,qV]ѝ* Ȕ|3w/ffB=!lDv[= ] @FPpVį5`_X@Q¶1 U>J "&xZ9jUe=jYǀeX gH8TVnMrПns.*, d.BC]?dm`#K &p`t@2v@`Â1uPH 43:Pc'd Af{-/1̡ IB< 4NA\lBDa["Ĥydߊ8Lu8`keeuv(֝)V#6v]Po ]f:Ќ4_M=Vi!̈>hd`(FsQ̩$ p*(ZڳdI2l@@b0mڸC|Gs[7>G]2͎z Hsj nze#8tgDss4NөNd򝗺*g(Ц>}AsPVjbUzMnQǢ>z Fֶp^'D.BY%D@]"2$(ϵs]+ZWUNQ+K ScR3B+XβLJ"4LDwx]2n3Ix8%@4Y6ಔe@FR{F" پXEZ @wcY?m벨GMR/[VC..J#>EK4((pjڕqe]IAXy|6??i[J˯s8Kh(y07zow{) w5_mo;6gv)(\q]3"Es(miSR]]%zz&+Ǫw])Ծ8_v{wVR7'W!Nn!DC!S?Nb] ` @d^X6Vu~ՆKPhPmW'vLBvhGGeJL8'|ĀV|RW\&ZXAgaMI/?-"On]TplJ5FcTc03u{XJq`d7iWLfiUAXQ,{ׄXGxw_w[wWpNI@,E!ZX!WlF?L.DbgGggvl/t^%qxx;Z@Sh9_z'n`'`Rt!؍ȉZ R\X\r"{B!kNE(.9S*tAU50Ӌ2d6E赐c#$_'v>d`+iS6,jH&y(nVV_֒OjƇ}b.f~tEb.bX!}(#@yc@Ty=Z7_i_sÑّֈSv%Q)lٖ &w7aaWV0atw9|nk.R/8i.^xxfDÖIEF|pȔOs;X~gňH>buKsChQ7薶yLrd wP_F|4sBEX\}.PdpS7J9qhZJQSIUyP%[i_iJ1EL@jٟIHrjOj |j٤GPRf=|ief9wGYJɝ$Ix詞>"=e$KzxVA,SDZFJ8n`IZdpwgwq(v92Zj~ⅶfA7⡮8g}M%jO9`T66q=&#zjɧ;V6{b`{1Gڨвdfȉv[@f6~ 1a.bIȘ:!"E{& ;q m6V uG!2j:ʣUb`B :,pIʩM:OXw ڠ&|rEPk^'8?.!PtN6|v5Ǧů&j`sZ>ryL=Z۱%席Rʩک Z|)xX1dF"9%pg/[@[Ӕ8V^뙠Y y [KBU=`rdZ`wn  xk3kG]<+T+TX5dqjPT[  kifʚv\vbۺ!znpPJ[MjZJ\zkb\{&3k/,8uW~cTց2j{iVkisL> j൮{ykiٺIw}(˜A.>P.Q sp˯\yYhM[{䛹 z;v6!Ye]F|HKyjR:w |x9' Nf(ckT˳L7WcZX)Yc^Vu> +PfS{:VA@0015.M`Rb^o0iv߄@NQ.MN4Ms\[1ζ L' x{ϫ(ة/5Q X ? csŞ4~=pV-tͪldv.t .k;γ |6-۲Ixzq?o>ُy.@")uQ_#"v35;N]$PLrx7m~*)mf4ϭȀ V^XM~@.$d^OȡEB)Ys32r."PO*-Ǯl/TO@ DPB >QD-^ĘQF.#GBL*JtR>vD|#M9f|M2n| E˖-W@)RQ(O<Ɲ[n޽}\pōG\r͝3 OIOFNnٳO2[z(QBH#EU?X\˖Xh-K"+K  "k0 > >[ p @Ely}92H!$H#D2I%dH9 CLJɺi)'d.o;|<¨p 6ʈ#* p2N -溫"DNPNб6qSFl3PLTFhlhIYgV[o5W]wW! åRj*U:>BI^2/D) "=s/p{欏*ï;?^"Tз|C|u&0RHLlHEVLQ4`1IUm5eWfe_9fy5ɏ9ҰCE)g#%-͉'2̰v5b +b*>'3""?*?75t`B0OXaVP 9b$ cDR]T UUU0" ʯ3۪ʲ]-BV[ |?xR'2&!pϕ "odT >dc?0җf09Bh$D0A $"7VsYr\K21L;17+V)'O}*yYuKNo> MnP)XD)|E JqN"ZS%1E:RԤ'#!T,;l$ٳH8"t'D5MZt"A>ejD9+ҝl}r$nrËO*S: P)ҕnUghiKcqXDi^Wկ*IIђj.CMUS8o4KƳ[Lei6EMp]DD^g B/֐Zv0 ϺTշhpEqkBW6׹υnt/BE8Bv("q4N`lxӜ ,jQй R ֊p9ՓvWjyŀu^ b[Fo[UBa`{݋LjV@PҮūtE4ሞIK3I#(!MI,:ɩݒ7\s/q Kx2w cP# NS.]Ëb6ffަߪ5r3E&t=mjW[HD%و+%iiDӘ;cM9!1nAu &ʶɝ9hjX?2寀\+&p OoB!aRm$ \da A|4nֆye>sSD7E%j7e :tcvF;[v t4V=§cg"M~mD>{ p /CW WK?upᗴALqe{GvFA! űV/|?~)*$zb,M+Q醬\:5۱,UA{26@6@KB;dAi+6þX:)2XDTEdD1܅Uh<<+阎<4Գ&,7 @".|,1d/4t=|8<1#_sR(C6 ATY9FjkTdHc0WйK:Y4Lt=*,aw̿K# *D/؁=T@BS $ؚ0;A l69c84> 9ċ)Zl$ɒ4ɓ$dPt̃?l)s 7dqB+YNtGR:7 S O+ :ݛJÃlC@dÆdH8[ST+T-L⒢ġfA˻˼lT]Ns\r?rI6;/1T U,-x # 5I2| &D"Ht\lHCͳ4L˵4Kk$λeF넠¶lΘIILvdɝ?HjBOV4r̂*{2DMJdMȻ<5L>MHp#ܨh(+ UxU@JgOxNHhp1m$@ PӖ(`uҲ  LdM4d0ڬ0H.2 㪑f N 5e6 4W@?[TI.O Ql#錩>]ӕJLAQD* g13/L|SEl$;"T%<$40AҊЋ.m`t#Bs˺t_`.UW(U:m;::782IgG` JBçǩԭQRO'EMdH(CyM+>\XЊLY]зoz%hօe؆EWUN;KX4E?uNB87jۦ,L}D21DrA!DNPҝyRRUmUWڌUY[U]0sةڪUZU$G1Il.,S DQ(| n‰Lm麤79hJ'ԛTE\ m5դUZM Xg^(RS5EݙY PUSOඊ،4E.E ?Uېe[$ ?N>)C֘ nz4pbY/C&M%½U"m5_aJ_ܣՋ I\J}]Wӛ]E&]Q]j`ETP,vQAlڒ4[ n%!GT/+5?"]-\%8\R%RZmՊף/UZ\Ձ_e Ne&vY]Q&OX4  mL6LE@BH(Y, ɴL=}<}` e?N d% Ba-_ϡJaa/e] Xlp$'&R6eZM*^#4S]bA2^)BX n:n E$?j.,dDUdFa5_ gLdp8uS{gZRQ@QPF=X,#Z31eI:8"Tᝣp,Ԃ|Ze{VL/c敦lv (dF>_p&_.gdu_*d6ƈŅ)b%Q<}ӖjMFPh X +#,*m@ k 1_BAq&8q^ nwqdžlj(S??]c=VS<*^NNLjB0&嫖갮v)ϣ FfzL@Fip-su3oi&%HZ_6 9l2mf4gU)^Sd}6DoVgoUmHJW I=t @9>Z桄7~OOn.*x* [u\&hs^_! gL~qwiQby4koCbQQ\toնIĬsy‰5^ܒxǖwᣧ|K~wg./uZWxwsx8na7vc<7o wjj k =|k!Ĉ'Rh"ƌ7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&ΊlZJF5JѣFuSSJRJ$jU5UQ#Eb#yݺȑخaRt5\aU$]D~/`n)l0b3d!e-[„E˗̙\g\F.ͅ jM4iIֱQǏ!7t؍{‡Wjs9ҧSn:ڷs^~ ITQ"5t*|U:U[:-Xh![4BUjEW"u|6ᄅYhbdP5d]Egvi)F&[-n5֨[n 10\7ܣC)$M:$QJ9%UZYx(T2)׉(1ISOIU|Yw_)'Wl"|W$]%I2XŇA`n1_:bu8vY()[1č pC3w\AESB\+ ;,{,ɦ&z?%WfR,Pb(l&U۾ '~ore~yUg${(t_z&bA.Xd[die"j1d0ŸI,iʚ/m78! 8$-21<35[(bʳ]VSSIyUbU}_m_#쎫U$U"ʇ}!v`&酇9) ?,7\09[~92gB-C7BI8'GqkTJU_]nYW5 {rk/a*#ۙbvw{gx=*+7ǵ1C|Orɸsg>>˯%8Y&%lu&ړ4/>\>ݟxuk˽~l1R'Bqnt .4TX24 w+d9 Q(!F$ B]yEr %&r\f s_jAìˡ}k#(/|6QMn~6Md"Suj SikyCų AE-η|9 (T*թR%#EJdS%eBsSr6%pd|S[3V~H(:5`x`Rl!ws6g ni:uJ0槭#fC*=4O=-jpt-VZ3~QdZZ3' ?Tq:4J@?',b^=Qu¢޼wX.](Nы^t53OiYH|(HCSV2t@l`* ֤K,'ˬG(̺8ĆR1sey&AhHáߐXeq9pv :)S4$㞚Uծ~uH- s5O^Zg`_yP73S kCir=\V4 H]1^\ $` x[]-q}B`h ̖LQ B*ޭAQXYZA/M!L҅ ! \P΁u-EͭA]Z ~]fP  My`!՟Q؉LؚքuKo-Ր"0`2X"1Mf`b͹x͉७С` !ǘLRa9C3>#4FG`"""##_*#Jl%%끕Tn<)b)cНM-.zXۏaΙۥc J^ m4n$Gv36"^d*dI$IVlBFBS(ET[G"=2cu]bAbyhBlڧQ]r~yZ%[+`H66$#B]GuI^N"9!ŵ`ڵ$~O֙$"*^Q^,=%gҢgN%x ]/B[ 0vX[Y*YJ˴%m֦m,,\zofc]%Jo^ڥp]֭Q"aR NEO>c>ZdU&\ $]f:g>U%a|bj]jfEQ%9&,n%rp%.$ 'J'z#8*&%&]K},$,`P.]$^¨Ag.8TC|R}) Ǽg1҉߀6>i'f++LH"'qg+4(J6z]>p~c:'s*T_]TU,f*r'cc)BBh]$T~>85$H|} )1[ iI Bn*.H[榨&]&hbΥr!&XEBAP˜>irE]gh.^{F_-aeW'PBg+k§ڂ§~*f]‚jI,ȫ*]'qe)$:'BدQ'"> v>w=+|fQ_,E]&6Cd,Ƭk+‚,|j6ګϲ*ެO|+r]]B7^jl-,Ö W\H,A +(/BlvVk|*^W)EaRhi-nll+~+l+ .&n6h-qʖqnԚi`zhoGS\H Ey*4@-۳­ݪ *h >/jx,hB.6n6J.lrn.h>mIe:.!zFZ\G%oS6{AA!ށe~)]^0g0MLoRo0ςJj*kڮ%t KE XhE r S#Ю BS$f,x/#/A@܁ޚ2Si1.L/w0boW.]ٱK]/TVѰ|̩0Xm*62.Bq'0oBH~2i)xr*1+0B7ֲn Ӱ/01W17?1FqTs57g1t21m)9s/31+3.Bs<'.&r;2 #꾕$B32+# -A%[F'gbsss'8C_)Jt:3;w0=4<+=Ӭ.<ӳ3Ӫj>c))*q lư/.0_ "WM" qCSDToFc3GsYk1'IA1Kǵ\K/sL;G/qO4`ϳ`,3Ҧ-3ðՒ$\-l%1_CoAbu5wX_1G[lHs3I3ku:gJ5mvm"C/1n۵^*_tNu7͒/sfn>d*@- gʤ> pYe1CC4y{JDs6i5+0ZosZv!x('DSٶ~ﷀ6n#o6*5Nx_OtN{0vouzP3fh.5uRdF)y7U]Ոxs 3?sB FxAj662=5hI4"1w/]79?9.B_W9_NsqтoN8p3^Z(K"*ܙ쥉DmU k6f5ysVAgo5zjǷIPO "_ xyw:n7yoG52P.dNg9Mvf/jf?aCaί|32s5r:AvxY>;2X_z#ywz/XN+{`)+;P3crC8RǯO/vG%HBė7B#)g z{<_;Iӷl3;˷<;2||gzv|k/{O`7+yr7(R8 QSwo8r/;NE%E7BC3؇=r| @oµ4l߽|<=}=2{*=s{_VS&RLXd'&GB% B3B==#$0$Cڻx(S~~-~=W##:j?:=?C>@ [& 2&T^qA .]ZbEA9 cVNjJ*WZj&MTP9 g9(GGuԉ)NBDRFW2jĈ֮uei,YHO@o޹Hnr:$ G5=|%VqcǏ!G"IsUy3g O7/Zi'QMOլ[J:+ <+C˭CZKz1@ QI,QLQYla1pFB(|Nk(Bƣ"rpn#eIQ.L:ܥjvꯒxE^j Raz.uN[nm㦑`xb +"Ic B|㌗̸I,ecp˕fV1o^&FimIohf*ׅ/7k xFLJo硏^Q7s⁠Codo袖[Qr|d?r"ġЧU=KѢOu 4ZhG<ٮ*Z6UDueQX+a")Xjz-t aCΐ6!u{aWd\Dr]ls67k, 2cp#.Ő%*,3yI'mH4v`-G Z!$1BNk; a~C5t#!IIN.ɻec!j=_j% N/G~:LI!AA*! H""zr8zԭȠas8p#59N:9C=S^::*oҷNԸnSg=/ F 6LS>>4S?o"D<`HgTztnJTJe 12#p#/t/?_JC4MtpHD;a0tɬp HZ n~b'WFFF)A¡>{4aQSa00jŸdms2L"r7\J[UTLJM.3..9KA9$%rMX¶!:NӬ0PF'P/zSDP)sQ5R3P5:FUsR1. UY-YV!UI`I.1W/W{C70X16c56pxR|KYyZI['n)[S'S745\& UQa>S*32~ 0>TU\-_5JTKmUarW;b=WU6.vcmS5z.L rz.7urJ_s.J7VUUU3\`vK76pl1Rb0n7xwylcnVdIINpCPz7,F1G!>4!>Pnd\9"Cr"RstN7WAWWuu_7vVWKpvsQRĆmvx!T鶘u=7p15iz=pNW{cg!guo4זkB'$wA?varl!vUv7q5s& 3_~7xSn?41w11x]wlnn\d3 7*A!H!X8`:>ZL7S:<8BwXWWvEyv1RF0]a66UN1rsvq閐1P*AR!R7hYqmT?i!"jjע(.*Q.y@U]qMTk0by_cgnvY멠qYwx]Cz PeTFb.UR]gq HS*ӳrhe9sr76*j`]a,ybꒉҔ8yC:5xn Ռc%+wZ wLXnU 7R{x4)Au'VJ iKw}*-u-Uus<YvWZY)ѩ3;9[:58:pqvdv=i| y.Q;P<쮳 _unsl#_EkZ ;ZuUwcu]cYoW0Ʋ+o 5y71Wy=qaTfکW[/)Fϫ+-OI~jj ]![c+| 87W(;E綳zNz!!:<:<]xa;eԄLr43g^_WjLgz`ؒ͹uc±,| -v!xǻ)x;=;x׸KPQ{d7Zs¯q <= ’[m=Y_W+/\IrC@U}1]xܖUܠ9qzѽ1;:ye483ȡ VGɵ7gcXwSөµӣ;sÁڔ[XYyYݽ0_=+8g]η!a;1/dzӫ'Foҥja ?1~5}rabasۿ³A}aWOݨa05 Zo3جlrDA2 ^ya-%GH*"2YOþ½=˟cWT^L]c>~%K_]\!]=[ANgߝ:Ꭱ&b'c 3U<6j(!ݜ3?ވ5C?M>aWw_Xyi1~;_>PAa/k'ؽcңC2z9P66?nޯҷ=)mG^_>sО˫;Q=m?f9uB9sڴ <8PɛP8m gn *Lȑ"ř4im&msڶ1ef`Η$G.X/eA W/[Z˖]vY \[cmݚ+lXa╋U,drmR°aK^= 8 >8Ō;~ 9ɔ+[9͜;{ :ѤK>z4լ[o|iQ#r T7b ٱgA3I.xep] ׹l^ٍ 4|SVmkan&֬Y^hղmm\YšmG>|F`` .`>aNHa ZB7q$E 3< QC#uڄ#FHSA2?1N.lRyQS흸:n6Нg@jνym/(B~ZGpn?qx̹ʝwwVU{#WuVql2(`?ONy_y|%hN+Oԍ΃:nMzNM&Җh7nO͛4HMEx;]E67|mz#jrV&X`hl;+ߏ5yC\yJ:!C@P;!lR'.m Wg3uck16/IQzkrxqFDQvg {վ} ,jq\dPrnX\ 4`n"4!d`ҔFA9àEBxQ^(T5"\s!o2B#tG`4.c")n^ hNl;pHTO3_V3tl@^/d6UEuGjfSߤf]k[ |/bvW"_/uөOE% 9|y4dO1v 0jT3kcրͳig碽UOQLd3o^z鯾Ћ~s7|:53ž쿢Ew m۹u`30&%nRSY#Z>5lhͯ\t_Օ_t~oEf/{fG!vڇh6{a45@zL0'<hw.BL=CfN ݰ}Ud UFjSyo*y8F~79gƖboe' z׃pugfv9m\7]ou`$R;" )a6oGh|]Dn9'C2 ܰ}Q '7tjgowtLJy;(HDq,zWgu6gq8b\Xwa$\aKs '!#f0:vhY;0fYpYnGh"ܷT񶋗7~Do.hooԇE E|`HNh]M(\Ј0r6bXK8luWFwkDS3T|0qm={/):%$ d;ٰoo2 y(Q \؈q"hlхXtlgLkFxK|#GBh!L;06BdcY#x T>wHQYd(̀`5Ȍ_ p Ǎh=(bhl!ƒWFz(%5xT6'~KAi5;Ꮖq}J)HqxTiWW x 9kTpH{(IgFgu W\_{|Ds(2;;&hY#Ԙ&hEYOF'XPXɇTVɝfu! (>8G#ƒb0ϵXa Gôbxě}y(q-5?"!}GpH悗'ʐYPp,ɡ8kdumƞev$q+ uW;nWY)fX7r XdG jٹʥ]SIaJbUq5b'geuEɖuh'{9 " l݋)k\fٽpwj%%&a39';;B mA<I쵥/Qr呞ۃ! f~呿֕~wWgchƉ; ۆK'(B,[J,ȃ 0* TlU暦Yscu:u>a0LAb4;rAG{H*{L`˻|f  W* GHG8滮$\M+p[60AD[=L\˓z,fj:6#i;kZLˬamlalcL8:|w9zUNEH8,}|Q;Ķ|L%Gǚf\TL{* /+p5<%<̾){{ALF,У̞֊Amw|̐Gl[Յ9.pSҐښX|lvl%&[ӱK$'fGxhCqOm|x,xB|W;E#Ց-:mf].fFZW;=2 uK-qW!Ck]=V͉#4]΋}Pܓ ȍZ=ܠȖo ֚MŐl-i*̫W|b}5']}CHA) PmMnG#ieҝYr=g[WL6KuF޵AߌÆ l~=(Kӛ,;f lK 'pUK;4:ڬhTC+ 90.03.4S4?ye >~]۝l\ninĄkrv%q.,4c<׷M|2JY d~rʱBf~ጎ1V$p}vba.d>BN^n^4~v!PF8NiRO.#z}|E >]kND_ڎ_㯾"/SK&oWn,?l[\|5_5OdƶpqavB'.voHN_;.T/9'lN\Lr5>a8A,~fcSsC}OO=3"~+p N LcI2M)jc>~> /3և넞N̜ff.?z$XAϝCG=|XE5nG!E$YI)UdK1eΤYM9ug~*t(ѠE+iҧNBeZիiڵV`ΫGlYΒ'[q۲Vݯ[۷:,:T,qB.|xOğ5ogСE&]iԩUc7UR&%TQʕ)޼xѮ;\\o.*&" 7hA" *C׀3@F8Qs#fNup$bT; JLX4Q-yILfxc=I)я} 8HrAD\HiRe/aIm)G-SHlN CDF.yBd$86Vҗf7I-bTގi̋)9Z\!Wq&-M|Sܔ0OTN)?-)\**B({ShGUDf+ KxЦRYC+RuhMmzSzx{JQ4)m҈ThNTF%HɒOc&ꇸw.ULzVU#)OzU}D(zcrVVjUZ<~$vq},:XfV7E"V=iPG'yedI٥ummZ6AuBidaԦVe.7ۚ[}Mi7(edqc 6W%[N1BOFnE[^WFFX`a{ t_WPpRg: /]bM[r*6 ^^Z}c|d$'u5"aF)R2!_(VLS%Yc~ EĴk|b,*2|g<9ZfFOק(# QY|G=gHGZ{FOI[o>zz'f"zdٯhtaIZֳ^+V(St8ivr8fYՏrYOŴv͢f O덵Ϋ=aN[vi/n}o|{>=Pocלr7#knt{z ujޖw-~q&M#>pO5uǹώ]db\3ymaPji5s-!_9Vnv͝t:;-pu%?ɇ魣Vz]k ]7~_'xg~i>_ @@,@<@L@\@l@|@@ @ @ @ @ @@@ AA,AC?C@ DADB,DCS?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}W~WW XX-X=XMX]XmX}XXXXXXXXX YY-Y=YMY]YmY}YYYYYYYYY ZZ-Z=ZMZ]ZmZ}ZZZZZZZZZ [[-[=[M[][m[}[[[[[[[[[ \\-\=\M\]\m\}\ȍ\ɝ\ʭ\˽\\\\\ ]]-]=]M]]]m]}]؍]ٝ]ڭ]۽]]]]] ^^-^=^M^]^m^}^^^^^^^^^ __-_=_M_]_m_}_________``.`>`N`^`n`~`` ` ` ` ` ```aa.a>aNa^ana~aaaaaaaaa b!b".b#>b$Nb%^b&nb'~b(b)b*b+b,b-b.b/b0c1c2.c3>c4Nc5^c6nc7~c8c9c:c;cc?c@dAdB.dC>dDNdE^dFndG~dHdIdJdKdLdMdNdOdPeQeR.eS>eTNeU^eVneW~eXeYeZe[e\e]e^e_e`fafb.fc>fdNfe^ffnfg~fhfifjfkflfmfnfofpgqgr.gs>gtNgu^gvngw~gxgygzg{g|g}g~gghh.h>hNh^hnh~hhhhhhhhhii.i>iNi^ini~iiiiiiiiijj.j>jNj^jnj~jjjjjjjjjkk.k>kNk^knk~kkkkkkkkkll>.l>lNl^lnl~lȎlɞlʮl˾lllllmm.m>mNm;gambas-3.16.3/app/examples/Games/Concent/imagenes/tierra3.jpg000066400000000000000000000550361411575327000237420ustar00rootroot00000000000000JFIF,,C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?*(.)\(c ( (QE(E-QEQE-! 'Z^hRRR1?:9 IKI@Š)h-%R@ ERPEG')(hPEPf撖nQF)(Q@–@-QL(ESQ@ LR{ˈyHR ݵd8"cݎO+ټ1M X/<_r֧.8}^ϥxs@k`ܨݟ?SVmeY^>`WKoOGܕb]?|_(Ң=ծ!dϒq;/4=jHdv89*UF)άxaOLq¥ <_ @w[0>.N+i8nk O {֚I…Ny=NO\m pgRkkCMWMRy'`. v(Ĕ,8[VԤJ*A?F:CW}cwi6] k-.4(k $=y='YTbo2XkI2ܜ MSR-aaql\: yZ8A~믨#Ө5z [C;IKEQEQ(ZJZJZ( ( ?((E8 )i)QGz(i qMpz6}JFf)PzJg;K&󎣭Sern% ^gW"NKmc>#x@kжv3-5H>a}[ #^ȺMg<_1xA񶩦*)[7̜•Ds\<Vs4RYBQEQERPE-((((QE2B(0񥢀Z(((aE-!@ZQ֊Qր=/+Pdtb6׻KzUxbH=0x/IɎ4?]"ЯkKk~FWWe8{n"WiXCynT2y[Q܃ zdc-R6/ܳ39.8b;\ֲtBXo4 ̘ba:b/o/,d!<&il`ycrw6U?nh`܄/YVimGbI탞Ezc{ ( W=vO#(r)&24K3 J"p!fFr0;籭 LƝ d#ϊBNS֬ A0qASyY#jw7Mn*Pzq]*kKBb=Vg[vHuRU*23ny>\x1O`h-[fGdxv%YIrVҵCLYSKb@PX:sֹ'Ic[)[;.i$#dh`݇}{~*I>B6}|xqiwQ6H܅5ʢj$=!(())h((((aE(( (ڊ((aEPRPE4Y:[".d(R356sqsogK{Fr> ~6/k:ʄvcs*K1]&,q֤̏fMI9\>c ,N=3Ҹ ml.%YNI $>X񼢲=(ǖ!°k\!$c;sm]]-װ ]1#  =TGׯx:K 5a 0'$^#%' }Qсgv^ y%l1gV7Cg<~/LbcfRHFH$!XG_ՇE2I,&& d\v$[]CG~o72$J [`]8[zGLn4٬5d~dGXqМ}+Ҽg}>u-a`Bl`Pv85w{4S 3Eo$ҟJ2U 殤ԃdIí#ܑs &c1{ҵ} O/-ddY[rUz>EiBWޛd8Ɍ2t>4Ө6Hm@5`x sSl[ji*JHsdGH#>⺽O.%[YeHR,\C&vwςxמ8BZGH\6}1֜%jݿ|H^73]KM`erAR?V<@yG$orEqwr^\\d4(nfW(;ZJ(PEPEP0((J(B(aES)t(((QRG+FREGGz $eN*J9y`J8-t=.T2IHYѸ屁kkm|`L2큟W2(cR%R (jv`8rQLFqa޲%&05Eܱ''cZ)XFƛ2Aַ!zmuYl gq䞿>; IA]5a-rA} IU%B$c#o۷9Ma& \М5\7$qn{mNM )Kw=jӡ ̌IVRķjPi+ަQKE J^޴RQEQE(aE-RPGEQKA (E J( ( ((#6 ((#E9.i(AZLR0E!Q))hhihh JZ(據Z? ('=EQKE2 JZJ^Q@'JZͶ+Y,lix?w4kxO.-p}d*&i8˦˘5+9*+}|KYst6Opgn,*+r/ jR9z,5ݨ,Cg;K];&p>ŸH%]!Er e710oARVGM&I<ڗ>I]&cj΃c`>%O8+&ZK%T R-QЭO9O#H@`<22? {f〣ʛp7糚\x}]{?ٶy?e(:=14z/ /DF@G@-܂mU?)'ZM@ZFm"b=]ts<t7}7'}Xq(A0|dYFt7#T_V_SAfpCqM5,bۗՎmZd+3wx9 ~& %6?dg/EuR{`Y\- 8+_kjƕN3W'0RAƻdowv}Qb/AOI򳁣1廸oGZú6ѥ@H+h(?6A3k tP {X+nMBX\q&}ȭ4Ku- ~'5n aaw$h\U@lݗjMz7MރKQRvvΣحҝoȄH TYN2 O?=1qOh Y#cԖ=FȁvSWV۟S ]3*)/ yj{v4MCrFֳ.nc`Yx9y^wWi/M Dks5XHcS⧉m%~fPM 2=A {3'Is92sHҢɃ/#@\w i*%qMSj_-s501;d$"\28&U9sOKA_L&$W c. Hg ďsn%9v %XcӜiXdś1N p}Q-3qTQ8D=K#OG  uP 5 ?v?ad WȨM<2O!lu8|«%L*.GS!?ΰ^_xK }j?9d}=J&;$ހDsHGvI#^M2þOZbnk ƪ87$H.rs~D6,lvi ͂Rt?0ϻ9X}#t@7ΑV. dZ ÆfFO]*xˢ,ʹi2?'?Y>^) n;ZoH +0,y>bϮ޴h@cVa-!i&\&'Ps9ɉqJά?yK"Q qBǾ1 9M8BNkXeO֘' ۉ }@4}F2=G?FIv##Ҭ# ? ӑg 5y ,֠ww9Sg&);*WO  qc' 1ϡCbXDdKceFJ'_S4䴱Q %/(|qӥD֖Cs{.*搭QG^#&f'd rjF݈[0C'4p0KE#ֺ {}.P|TMhʙgh.c<-;|A)R*dk|ne*cB_F۰Z~\r?2tsE w%٪#KX׊ј@KGT1P xkQט( g0Ÿl5\^ю{AAin])Ǡ)!S,Hwf|=%UF1L:- 0 ?֬g y*ixITufhs栓@b0!O?l SFW|SkX;]w Np=dB5?m`pHҶ{2΀{9?ҭ- 4N9Q)ä ?һ"&+e<5Q̓90ە碱jeHLNxx@o8$WFX]lp6j9g2gi]좏e9vH}V#X?^,|j6%O(pz拌pd#9!ǚ&5fDܰP <i,6*vxd1\;|U?|6C=K47ɍjM1rFj؝0\ŨM*'/V*0rYj<=cw/*hQ:v3Ld}AC*Ij~0|Ɂ(( ^6nM grp">)l;w,i%yiJǯE>ta Ly\` >jkVXضS0v .z`/˓V+ >5hcnJ9>QbyI%eOJ etY@!~g?Ҩa&O 1]13ߊ&NbThC=5y>Ӱ9YX$IlaM/dAQِ7l3ҫPqJqpL} ?:,2T16SO<|ʨ\y1͎xV{~ t)7 ,"jLe"x,a*.hʷPE-=/_ƚzf))0 $ >(~BP;PM1C {&WC5hЗAsíU\|{dC bzF>fB"^9K3Hmlc=& ;UsYJlxqN v?K5 c;Q$S Fk=Niq?8Nk3Od'e=[rB \/}q, P)Y}}DJv7I?ߕW~SƧ, `s3gҴzcX9zF6qIhIm99 T~|{ ="&< Ij6ryQ`-ǝ:|Pbs}@5Srvؤ ;N &!0VU:U,ߺX1Lrh ?ApY {P)ğeǟyx,&2gvPJ?GN=yPz(@?#ڐx&aQ`I'wci!Sg*YcO8< q+?b=zREeAi~&$@>Ɨhڛ ֤XPX>i~hTb;b޸=-jHԕxp? Ҝǯ͚ lSӑH3PĂA.SQO7,F hr4{b-6/>W4  ~63NH dfNqqqIsK' byldWu(G?ʟ4 Ӹa 6Io2-?JpO֕C7؏ƈ5oa诶,.v~0m)yvd*DHھFQTҶצ)shTöGⷾj1ձ^ElϨ`0v#rC6Plw|[H֦ϝSyR'kGaqZvs,}\99O~=ITw'Famw1$tO⋱s~w<ہS9 5 n-1y 4gN'sBO"9>h$fu]Z( @.2~3wⓓTpfXm?'>ƋB7v42ԛy!J ʨl9?ITFمJ3gjy(e'd3gڤO'N14zd%sU0Ae.㜧)0z0<hP8952[F|TaH=Wޥ@Aq@ mČ0d'PNj:Y3sKq jM\ıHqUͳ)?JIR!8ND^_ԏNiMS&= =wGҩ!cҸ22Z\zqR6YwzdbˎF#9Q<G)s?h =0*OD2rJFs1\ xQ> ;bp3r)~*4.wLy3_,,Ay #w&88!m~tO.„AQ(aOM,G4 q8FXz2֍cX hw*3 ٪!bUH>֕s!<ߢԞ|[H+-7M3+@(m*}3Mdh# [Abp3F~T$BC#+cE;cOLœ2FScT,f|wEFW1غ*e긩V *ӵg2}v9qKfZ4ܿ(z(5 +׃Ks;d(L\ QpY8pW²˓i$z9@ qQItsJ#*H)̬da# g>2a),3>M?Νc Gi`hrN3Q eA8D?(r aqThyko@pQ8xr) JzȟƮ>)Ltm &Z@J$Ld>~=;`ǵ<,s2yx9R H@Ґ;20Q)AG\Ȧ g[qC%Hc$'^ÜSAUr<)UIę &xG'&sQDKep*͛QC*#R7 7yxI(5f+[`z*ISc? :`U"Rd@Z)$P `aX=64'F{E :`'#<~hYiMKWG8doJVp0GК':́ fZ7:'Jch#nϨ<ҹ,=o5L_AApC1QPyWvsSY;GH%Q&Nx47it+qؤLP1D?J,c,?]̤z*83w0|Og n B1;iT4 J" qiFN2HSPrI;PRNy<`''!U%97<{M9;fo.DFG#d \u"'oIvH[o /p{qX<~9zҰ\G]׮YqPyh›rnuU'9'xxTd \qL 3m\q"9=nH@rq=!f)%%N0(mO3)2$׊n3^ <ͧ{US'`ڀ._0$E8@Ϧ*"Gi'lqMojTFc iSPoҟOivn&EGZpFސOV$BY7^*SdXQ1.N:`{Q9 Nd"e?Egі?0(•229E;I8K hH4I9 p@{L@JILN٤ےr)!=GJ`7+|~~4nN[nM/A .A2s5BOa a&M ʕ{ ">K3Λs6fU0AV$'RSg0?ZQ 3*r)ǯҋ1s $ǧoY?\b{z/N"U=;j z6zmB!`yUܒhz =&Ǘ/Tm`yPg#%۫sۭ!R/94OMTU 1_ŀ(}`i HN !MZ@= L f`5c!7QțN7+zQpwbҜxJNFL3*>TƁ&J@w|@Gbu_)so:RrF)v./.Kqjașk8I `F.Ӎ FrO3A\dP0q@98r= 4z9ڕSwΗcqIq#4NFgu|@9egL>Iy&: ;pgnG֓ن ܜ w$K*;/z F'*&clvFYSc*Hxt'9F)ʮz~3֞@e*I#tqR@@6}F1QBF*sEH*6iK>]I ژǷ˃hc?E*@) :Sҿ@֣(R*ų`I)&;3MgFǷZ8RJbLSK ցHc'F#dQh {O׏Sb2vڜ2T0z"s@bNX3G+[ԙ\cJQHP \ڟn$⛞z Gޗ, ) ΤE8D!S0ƴZcܷђGҩL\Dgi< n8KBRsErϮjY$K);q@Ɨ$=@N1ܧH[1nrM`L*޹$f4ݶgcC>SMZF ܽ:#$Sar1ր 6;ڂ2>7d?Hd'ڝr;S*\s.H1@Ǭl u&ҼcHgGw,?4rm>Ab@gNpI 3GN%ӱ.rO(V~6z rP<ͧ+"_^*x2IcVl~RA=s 4e2= K%TT; ҁKd]{P܌gKb6%M ?Z6xlP$M)،N: R ;R9>P' )X*ڝX6:[.4 ˂H5}#ԞYcҬwTISi=:{S'rqWƛDEL,!7`ǭ=aF^:SOnab !)B~Ӛc#ڣ'4 v1SݰƒM3q@hHjnp}<#}i6?ҁsIN+g4!㌑A ~3(-@;@P=q<|Dž?VIaRNGC}:Hm u<HIN(@ m*f*v]Ƞ>ydK8^Q9@i-˖$=*Olpi g= ?br0րBYx Q$$#Mc֑U<`s@ݧ!=R=i6̐xR):)Y }@y})ܫDrFJU<rh=q&!Ԗ֔);ǭ+1rM0?J\ *[i9A*#֏b}1@ HaQebI#zN9Nr9݊Ԓ19=N;J ӊ2Rm.s1GߘrINU␖=;@! G` n힕$Q#Gj )L$"ԀyېAZWa2y3qYA9֘\h^atW)l{qTĎb)yZVKSߞjP[0̌G5'vo?*\0 =1E͑e!flOEQY?iS(u.m`4_P#zRy={Us. Ҡ hN#i_L7f_?JB~oΤIL/0Cm<2ƣn@1p>jF;~P㑚iz y`1؎M,qJU v$TNL)aH`9lF{c0$g=)?uJ>R+ ҡ ?^(7ȿe /M}*h3dӚ9<$|۹#>4+S(PޭEcɼj{qh)Dlb1zz5|{;cR#$HcyC ?Z2Ӻ#!0A>&=] )d{YO?&@86)&ā@X Rڟ&)<~GP q cRz$'v♀&[:w`#FO|? `ST+h {G`jb9˚B. 8H=O+kc#(  1{po(W>bH)ҧ61Q\2?9crv" NutlIi:u 81E\@#cx43I8+#r}F1H*Xg7$=HxltȦs@ ,GjXlX,T˅*Lh1nI椋 U9 HʆHj']?aNs Fܑ֝Ri6e3=QNf< 8 (v ? f3Њq$nҔI =6⁑In}wt?!TG I>n6r)x9sޜHܒ=<(m|Hwx?*9C~>}~4eBB؊{EJs;NݑۊEst㹥Bw3 P')#>ԀҀ y):ڔ1rHO7<4"ّ4aǦsM%sY)AǿJr1Ns3Jf^d,\di _'a GGߝFeN1isK)_\t Dzi'muN6#qQ<N=1R/7˰8UK7(r Z `cr6Hje_96,*-sf!I"RwqqOLF"ȤXL GHFpc<ݍa\rW8;qǦ)A,1YKrA=.Z.֋1<$<858:X pl5LQp}qRiq9>JO=΀"9$犰ʤE U>)؀ h=gRlŖ2iz_cN^i\d@u  z@?Z|k13VrA8 7r3VJ'#@8=JӼV l.|.+p? ӑp=)@pwgJ!![`Ĉ̅xc#` Ǿ)ppsP zb#4Av4dߊpCug=3Nd,s^8 "OK2.F*jR @ vrOsM@98 -̑損 0=qF#b,M$'?=' ={ZzgJ2 =9xdBQ9b5u8{ bPtQONjdjL&wQS UBOkM}0j} Cg_Rq!,,;xVHlŋ+PT?)tH3T*HGˑC♶O1CJ/Vd~SLXX\4?eVT3lWqc9j\2aO@?@3!ǥE` ͟F; b+4\>i<3du杆h1d9vfv%M??տ*V+%ݗ1jQ߮?…b??֕۝O$V6$Hs([]  UF@>vᏗ4C}>BTrtA\Ib>` J7uc P ~͞ ;Y9JB76hMHRON[*s8$fy},9ZR\OPQ VPTa|>5 L#Zd xjv]+`pSǭJzrJ{;w` 1y2.䍌{%Ly- hބaO?!;TI\ XH#P`` L[y dmفmǽ+X|rIcc0qÏj 1~iaPB}տp2V`W6VMsp2q*њ8 P78fG98椎'n#bJ"$*\Ra۸RjlBMg#c['YI LJgQQ+Lф)sDp{7sV<6H@ ؃K/VӚgyn3;Rͽ?1|=>%8֤V V8wnA \5LosLJRS 7xRdfL.FVZv;P̸ysul{Ӊ9}[ ;)֤Q?ip8?_δma;cmߠ0X3ڕA Vh 012'ץAʚrN[=i#4L2f To^DdR PSqǾZ#^cu%+JWi(޲7L릜M^R8Uy<@bc=GJ؜ʹmW pr?Z) B7n㡥v3c8dcJŕFG˔ЫiĨ֠.e 6F${W$r:Tw~\.P64`7|qQ>@A*{wWG! rixI"s4`}?):?tsczQPI(EP=邓3cR6/<~ ¥C]"YCl%nyeifgҪ=[V!Pr*[i@*Gܠ_#qOl(71>TR*3iN7.2²rbm`)KW4cH⑥8sܟJvW7>f󽷐?c UYef/ڔ6>J^ }21AI>?6!r1n~F9Hu= (c!{wa3/S;f~fC^&,sduŲpHPI>~&lEڮZ3N>s?f/ץ!Wc ssNfϖ56|lt̬3??48.cwX O\`ԯGKƝof/lZEԼgԍEA#wmC}?'9XeZQ_Z(Nls^z5]@tտƏ]C'˱L*s"5 %y^m}>k(յ7.ǧn$mQ8ά8Vהlj?4_S=u mi{1:!眪=zԑH' jjr>7ӛ[jW;^) `uwRq^bu}DBٿƓWPGd*; 9RņaOjѫjJNΨ:jWƏf=t;F{:7qq^=B7ԣ^jG=x#G:fO(B6'~/rxէciLGj{~q;9~t0wz:Φz7۷ӎ0;@n֏fbCЯ Ri,GG5If0BjP.3k-kُڣ׊2zP)Uu8kNo_Q#P#f=Dzɖݻ36jz$;9[iڏ.=zՀl@㩤O?y?_ƏmG= 8 B89ҼjٿƁku Əf?j$NE :7WP=o~v=5x rzW#tsq^goWPGUy)!eI#ܕy6@5_ں\?4{1eԫeu4UbVLu^`ޫMNT ;oϯGl@W-Qm<͎I$sj_oه]tQA֧8QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEgambas-3.16.3/app/examples/Games/Concent/move.wav000066400000000000000000000320061411575327000215540ustar00rootroot00000000000000RIFF3WAVEfmt "VDdata344f44g3433g4443gf443fff4f4444f44f33f4fff444ffff444444f44444444ff4gf44444fffff44f4f44ff4ffffffffff4f34f4ff44444f4ff444fff44g334gf3g4ff4f34f444f4f4fffffff4f3f4f44fgg4fff4ff4f4444fff4fff444fffg4ff34333444444f44g3g344f4fgff4443g4gf4f44f4gf333gg4ggfggg43fgf3 ff 4fgf 4g3 3fggf43#f4gf,2fgЙ31"43g34g3'4ff 4 gf gff 43 g3fg g fgff 44fgfff 4443f ff f f 33g433g33gggf fgg44343 f34gff44g3 gg3gf33f3fg4g43f434g433334g4433ff44fgg43f444334g4f44g3gg4ff3fg3f33ggg4f3f4g443f3f33gg444gf4gg4444fff4g444g44g443f3344f4ff3f4fg4fg4f3f44f3f3333ffgg444444gg4444g4444444gg4444444fffffffffffffff44gg44ffffffffff4ffffffffffff44444444444fffffffff44444444444444444444444444444444444444444444444444444444f4f4ffff444f3ffffff444444444444f44f4ffffff4ff4ffgff4fff44ggff344ff4ff4f44ff443g4f3fgfgg3g44fg4ff4g44ff343443344g344fffgf3ff4ggfff44f4444434f44f4ffffg4343f3gfff443g4ffg3g344f43gf43f3fgfffg3f433f4444fff4f4g33f4f3fg3f4333f34ff3g4f343gf3f4f4ffgf4g43f3g3gf44ff4fggfg4gfffffffg3f4gfgff444g434gff44ff34gffgg4f4fgfg3fgff43gfff3f44g3ff3fggf43gf4f43f4fff3gf4g3ff433ffg44fg3f3443f3g3gf44gfg4f4f3443f34g4443g44fg4344f34fgfg34f33g43gg3f4ff44fgg4g34334344f44ffgff343f43gg3g4f4f34343gfgfg3g4fffg3fgfg34334gfgf33g4fg3gg3g4344fgggfg33gf3gf33444fff4gfggf4f4g4g34f34ggg3g44f4ff434f4ggff43ff4g4gff44443334fggg34f43433f4f34f34fg44gf43g3ggf44f4gg4g34f4f4fgf3f43343f3g4fg3ff344f4fg4g43ggf44f4f3fgggfgf4ffff4g43343f4gf4ff3fgf34f344gfffffg34g3f4f43444443g4ggff3ff44ffff3444f4ff334gg4443f44f443fff44fgf343fgff3f43g4f4f4g4fgf44ggffg4f34g4fg4f443f344ggffg4f4fg4ggf4f344344f44ffgf4f3fg4gf3g43g3f4gg3f4g4f444434f34444g44344g4ffg4ffg4gg44g4f3f44f34f4ffg4ggffgg4fgfff34443f3444g3344fgg4gf334f4g44gf444ff4f33f3344f3f44ffgf3f4g4f3f3f43ffgff3344fffg44f3ff44ff4ffff34444f4fffg34f44344g34g4444f4fg33ff4444f4fg333ggg3f4g433f4g44gff44344f3344gf4ff4fff33g4fg3g44f4f44f44f434fgg3ff4ffgg4ff34ff3ff43433g4g3f43gf44g4f3g33gfgffggfg3f4g3f344ffff3f34g34g4ff43fg43444343434344444fgf33gf44fffg3f43ff34g44f4443f3f34f44444gf343gffggfg34gfff44g44ff34ggfff4444fffffff43f44g433434gg333g3ffff3fg4ff43344g3ff3f44f3f4ff344fg4fff44ffffg44g3ffggg3fffg4ff3434f34f3g44f43g3ff3f4ggg3f334433gggff3333gg44fg43f333fg4f43ff4g4gf34434fgg4fg3ff4ggg34fff444g4f333ggff34f4f33fg4gf3343 f4f43434f3g34gff3f344gf343ggf444434344gg34434g4fggfg4g34gffg443f444fffffggg444g344344fff4g4ff44f4ff44ff4g43 g3 ffgf ggg gf4ff43 gf3fgfg4ff 4f 3g43ff344gg44433f43f443f4334g333g433g4f3f4f33444ggff4gg433f44433fgg433f44f33f44ff4444fff44fff44fff44ff4444ff4444f444444444444444444444444444444gambas-3.16.3/app/examples/Games/Concent/shuffle.wav000066400000000000000000000155271411575327000222530ustar00rootroot00000000000000RIFFOWAVEfmt "V"Vdata+~~~}~}~~}~Ujs`dfXv}hmomvo{epv}mxolxsuxXrq}wggW|}ixx{tqr~rj~l{esv{w{y}|{q~||tn}|s|}~~{~{z~~}|{{|||}|}y|}y~wz}~z~~~~~~|}~|~{~~~{~~|~~{{}~~~}}~~~||~}|~}}~~~~~~~|}~~~~}}}~}sjjuL`Hzdhoxt{o_{nn`sgqsyun]z|ljng}_~o|yzg{lkWaqdguq|zuqW~fhNYtv}qwvxrrtoq{qr~{zv}y~}{~{~zxu}|~zzy||}}~|{~|~}}~~}~|~~~}|~~~~{~~~~~}~|}|~~}|~~~~~~wsnoszwhx{kvYerspsu{r~|pxuz{zpwtkykthlt|y~bvsu}z~u|sn|xymq{w|u{{~sz}xz~|szyu|y{}~~x~}{{{v~}}~}}{}|{~{~~~~|}{~~}~~|~|~~~}~~~~~}~vvs|z~t~z|tv~|m}oix}{uv}qynuvyyuvs{kuux~|srs{iru~}x}|tr|}kr{xx{zv{z{|z}~{~|~~{}}|~~}~~~}~~~~~}|~~~}}~~~}}~~~~~~~~~~~~~~}}}||{}~y}|`r{ktuz|{jkijz{ovj}nv{knks|~k}rpourrouztk{l}w}|~zu|{~t}fvy~ux~|myvtvysuzz}~}z{ynz|~y~|z~zzy~}}~}~{}z~}~~|}}~}~}~~}|~}~}~~}||}}}~z~~~~{~~}}~~~~~}~~~~~}~~~}~}~~~~~~~}|}}|||~brr}uz~{|xvz|myxtqvyx}}u}mvx~~z~}wwur}zyx|{vmd|tu}{vy}{vyly|rww||r}zqy~w{wzu~yvzzu}{x{}yv{{ywy~}u}yv~y{||{~||}}}}~~|~}{y}||}y}~}||}}|~{}~~~~~~|}}}~~|~~}~}~~|~~~~~~~}~~~~~~~~}xqb^rxsdw|cuqyyq{t{|uy}urq||{z{~~qxu~}~ugovtl|vzzqpux{ytbx}zuowtw|z~yyw|zy~wz|}zmx{w}yz||{~xy|}}~}|}}|y}~~~~|z{{x~}~~|~}~|}}x}y}{~}~~}~|~}|}}|}~~}~}}}}~}}}}||}|~~|qajipovfz|mvlrytzwr~w}zz}p{xx}w|yz~|zx{uqqciqaqr~lpm~ojutvrsz{yzzvu~{w~|~v}z|}~}u|v}ox}|~~z}|}x|~~zz~z}}{}z}~}~~~{zy|{z~yz}{}~}~}}z|z~|}~~}{~~{}}~~~}~~~~}~~~~~~~~~~~~~}~~~~~~~|nvcfyPk}{hr}~pq~sx~qxyvhqcteiypyyyrrszQipm|p~}p}os}pz{tnv~y}s{y~{u~|~|}||~y|x}~}|}{{vz~y~~~|~{{~x}~}|}{||~|~{z{xyz|{z|~{~|}}~|~~~~~}~~~}~~~~~~~~~~~}~~~~~~~~~~~~~~~~}~~|~~{ZIt|[d~v~{~ztsvp}yyvy~o{K@^|yy{|{sttstq}gjyyn}}lvx}{ntxuv{xv~s~vvpytxz}|rrrxzwwvt}~yyy}||}z{}}z~~ywzz}z~}~{{~}}~}}||{|~z}~}}~}}~}}~|}}~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~|~~|jiBjxMUzti~}xmq~xwuyz}yusQokYk|y~|szyz|qvuu~xnquszvz{dtw~}o}ep{h{~k~zqxuy~}xy|j{wwz{{|y}}{|~|}y~}}~}z|~|~~~~~~~{~~{~{~z{~|{}~|~}~|{{|~~~~~}~~}~|~~~~~~}~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~gambas-3.16.3/app/examples/Games/DeepSpace/000077500000000000000000000000001411575327000203265ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/DeepSpace/.directory000066400000000000000000000000411411575327000223260ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/DeepSpace/.icon.png000066400000000000000000000103561411575327000220470ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛy]U?{ݯ}I'tg l 1 JdPg\ftg (KgFj %jB $dkޝ[tw:LUw=~߹ 2jS5m{ƓW mʊ ӸҤluJo/=ocf"ѹ {~uDDWş{Wvx8CiZP ^D.roE;hTȻ VJz-څeyR'v 6쬅d[PJ{ڽ%|Z=`DZC^W̝2y^~ } SğYe<z ^]h )A6Yn9ݷu ^Ŕ lzoP GJLcJr}YχGvH%o|SZC6QpP=vto>Ǐ~Sk$ؠ  xlEɴ\ͻ[oAkm S' zǻ!S7jsp `6ߺwk = .zZb}D/nrXYBhOr.*aH‚DKfS+; ָ'8Pu,. cKІ GZu!@;p%8A.H5-OaѮ&3wqTuÆ y H|n7V6xrb? Z 0Zc8] fS}/ܙ 0*`u`&Vt)XkO?nya_dxNvȻ:1ΰ]K)'S ƹ@ KBڙ<'\ѿHXZ@l?l )a"k%yߋO|&%`SE4 G>҉Io[‹j˻K)CC.:00&H8:H8"7BW xJʨ2x c)R*tJ%$Vʍr&eױiAc#ZRF S1Euvm]V܊hOwq|W()ݘ UrawmDT,$QuLc0+_g=)+ÉPu_4$mi,v)+{/R H?/S< "R26m+Fb; VsCIQBQuf/`(PʉRɨ 8u{q4+VJNMX3TrlO#Yױ7?+>o!&T2j()=@ o׾p|۰f|AL6| fQ.4?5N))dTg n^i.CGk…]G?%uTp%A3oT aéL2Y<=1\ <Q|=ȾD6??@$;ȏٔW4oLI\psqQ0=8R !; S.% !Ib[?㾵 E_~D6mV_O|3obRy('yrV> ߊReF=##fV4w ecz,ഥk0q p. wzs:1/=d)nbA&=$BoXsxUAWٲjcǿ2cMDzYj##٤%NU"=UDz\"IGG3'3!*ɘFJ0Wt(MZ#F/OI ` MO621 GBL:ANCw;VY8'~_I3g``;~_! IUbhE+:[cFvl+NoQ-ƭi Gec|ЂUtb/;cIm5 #D{>93&P*N m yJQv c3q(,,'/0' 1 )p\W5|"*X.\w6=BDQ]-$<$də9YIJFr0KMKoNo¹b@\aPL~۶95=T\>Bx Bs,Йc& ! #$*$R.Ir ^OC60=@У([ B,L|'D(ڎDbzL6։]as*`IzJF.BI2=$g`0}V!޼RrHà#ЬrtЋ$O?oh"h<H,jjlruv9'cxCL 6N" E0G*t ¹p,ͯݭ$;@f~|9-清 Ynj+)⢉P#9vN߱/?l-M&?#N2 9[!2&!2NBr(GzQ)5maH}ZTBzxFkMө(?y[(f^TXQw92H=}o}hB)Ю{(p%SXXxbŢjvLm:7L 4MFPReyW>K=I;oun{K(cx ).(4M!7'C'"xNXqF5"c"Tr8P~N(_Ɓͤef o؄\y+׬Sh-Z-z Łn73GЄ)t y{x>f)J)**~MSy|>LCM1ngw_7-`!\#»UudܴO"Xwh`RzD$ }%UOu_lq=rt]|RJhǙn`YCfU9kQ3%]#1@Āظ"hvSJE Pg+>{YLaY:%y򀷽P?kzcGح_xn0貂PR313 qE!edtv$buԌln}*USB[{y!:Qw*bCI-_:(CMk=t 9]KC ފM܋.h6>Ür  i0%yEX5o*D'S%$Ǟu?VRPT;o.›KrǴкmڗʁIrgs%KF= )zrϚy0܀,DBAJjv-c=>]XK~FŷCg<$LsAqRG`$o~%tq*d5z=wΓOv ZDbr5CFZi!BMwF\ WcHܖ\ !=U3 |OMx8ztԵ':a <ۀ1u@9\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" gambas-3.16.3/app/examples/Games/DeepSpace/.lang/cs.po000066400000000000000000000015211411575327000222710ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/DeepSpace/.lang/de.po000066400000000000000000000015021411575327000222530ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/DeepSpace/.lang/es.po000066400000000000000000000015701411575327000222770ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/DeepSpace/.lang/ru.po000066400000000000000000000057211411575327000223200ustar00rootroot00000000000000# 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 "кадр/с" gambas-3.16.3/app/examples/Games/DeepSpace/.project000066400000000000000000000005021411575327000217720ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/DeepSpace/.src/000077500000000000000000000000001411575327000211735ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/DeepSpace/.src/CBullet.class000066400000000000000000000004551411575327000235600ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/DeepSpace/.src/CObject.class000066400000000000000000000036631411575327000235430ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/DeepSpace/.src/FAbout.class000066400000000000000000000007631411575327000234100ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/DeepSpace/.src/FAbout.form000066400000000000000000000005451411575327000232440ustar00rootroot00000000000000# 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"] } } gambas-3.16.3/app/examples/Games/DeepSpace/.src/FMain.class000066400000000000000000000027611411575327000232220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/DeepSpace/.src/FMain.form000066400000000000000000000012611411575327000230520ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/DeepSpace/.src/MMain.module000066400000000000000000000175501411575327000234130ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/DeepSpace/.src/MMath.module000066400000000000000000000031551411575327000234140ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/DeepSpace/doc/000077500000000000000000000000001411575327000210735ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/DeepSpace/doc/.html_files/000077500000000000000000000000001411575327000232775ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/DeepSpace/doc/.html_files/eg3.gif000066400000000000000000000053361411575327000244530ustar00rootroot00000000000000GIF89awDBD"$BDbd<><24LRTrt $  *,JL:<jlZ\z| &,FL6Dnt^d &$FDflD>D64\VTvt <.,NL><nl^\~|C:\BMK.ڻ. -`u*ixƋ=2ᥖ'L乂#fǣ1{Z4k̜vidiffˮQlģ4>9ݏ{#~ سw^r靝 >iۨ+ ƈ,|x= M qE&F F 2dE @l VH kP!dDDp I8!:x axA&47^Cn(gP DFH`x k4!!x7AeGWy eZ@lXf M (ayb-OUA,q#%ڂ !`!F(\a#Učbp#A@SHE7A 4d2א NƍWÍhÍLP$*xa`^CHqcYqqqc k+ -q lka (F @f.HU@Cэȑlkq#kC=!)qc"*b(F7ʳ _nAiMkJ#Hh+7F )]%2DnA+b\ƍ.AA_d|\UYHt7p[HdYƍ1H4RTŀh'D 0{F$#+Ď,bp b@^C.pѓWĖ |!g u $Ar@@A Cʰ 98Ȱ$ =(a 1J (79K2^/rYxUI@5Z65f:T) tb`©7@Hy~D%),s#%"E"m$0@)'2*6$! '(4΋t1P_d0%oқt1w"t6G;b0 hLna̤&rMvr1!uGX4bA`T:6_hAMb"gRbL#yB_~,19E1Ж<( LD86N207 9iR̬!ؘ':v0өD0ѕg+o* RC2]jQq At`-/FXt0Rwz[`77ч.񤭔eFIҔ1>X=5Ĝ.'( ub8UfQ%ѧ?mL SQVET 1TZҁ$  N˺Րթ+E9V5}i-zʺ* @*uMATrګ4V8Ma)VĞV5-L#+Yv6UtE4eL*?VF *Y=[ @CP BN=ʖkbZQa5KVaH.ӕsZ,w.M,j˖T,o] Ž-o|Λ7t nxJQ^ڄe7*&L(&߳8ʤpJ @ 0u{jj"L&[ .1Sb3!U3'-7ί}c$r,b"7AH1t.qe׻`-^6O!H+fexO_( V\"rVQգ 肼`B@L:h]:& qyJsM' <}4D!DnNӕ'.e=jv񢏌J`Z؟^?з mgKVhS[Bkg'۳6rMk#;׌>IMiuK;gambas-3.16.3/app/examples/Games/DeepSpace/doc/.html_files/eg3b.gif000066400000000000000000000107561411575327000246170ustar00rootroot00000000000000GIF89aDBDDB"$BDdb$"bd<><z|LJ  ̄&,FLdf$&t6D|~\^ nt^d L<flD>D\LF4.TN&$FD64VTvt .,NL>lf,&|v\V<6 tn~d^ľ$7<VtRMF~p5ĖRt-XtDħt-\$M`TMtp7RnX~t7ph`Nf50qFg(ğt~ğtX!,= H'D!Æ B\8 b̸blj!($ QF49PBY9S&̓4IlIsƞ6}d)(МUjE:r"UWK5j3CU6VV.Uڷcr 7ܩmSYoSq&'a=x)bK.3Wzlbʕ=_y81mΓ="l3~cSũm[wa}GwqɉGsU"_.ti]Y[׻Gξ˟O|sTYW UmށG]k`x\NrH 28(U'.hъV٨{Vˊmܚ+$n*뮺j-K^ooKdrJ/ W﮻=/|0{qK;7̱!c/^*l1 ⦌Ζ-L06?@-Щ\zl37gw,=OLH^0_c5^\rd-v 57gwolnawTօӃM~8s oQ[-9xě#x5^oؐ;uz+ֳyխ9-ڎs;|򦏮:kzWAW;_ +F ܇ϣn r +-n+| +8&0 ܀)%29fAx"@ >@aX@8$ }5IB%D>4 CD dOT+!" !+bP"88A$'(J1(9T-B$HRI8 40DU0~+0t H(HHN\c A"aSy 6b+DVPe<, 5IVB(? L2KX  c\ݛV}+A 21W$+"V0ȕ+UVQ+؃ B@cE@o nrFЁ!}-JXev "/{&2hKH t~sD K!Vh$Tnc³Mr{.U@m4@~玷1-b±IJa;M֢K|"[I,Ȯ ).\& 75ݞ@5o=ez!x" $4 p 4/&Y,fUW:U^j~6 {W+l]S]mV5~8E:籋D\#|v ӓ'`<_3~;rý~EQ~k 6;%!gɓA7p\{]<~=y*okz\uٿiQ9 ?T HG /烾Nc78/1=z#@! Ƨ}S1LZp'q fhyI}0s1'~K  Ё}0G(aq i@w~~0(WfjUwf +b@%z Pvfu qEpÅ 6@`@tZ` Dju,qzd+ 2hRi+;7h'+ >vEHVm6 qr"7pX:Aisc8v<2h g {0Ѐ{ƈ*wqX ы}ƀxkC ч Ah7&EBXh1H՘1R4!EF8Fȇ8hp"H A p Wa 9/\c OWv$Y) 1shE#c2i a D~q wؐ8r \`A-ٓ&J0 DB0|(NlUR4`\} j9NA qI:[yzn9I hW`jǔ/v|0A$!֧pv@ittl Iי1x?{ˈ1 EktG%1v~@,MGR$v0 /tY3~D%R${1@,GEW]9aim@,u`ɖ0`4Qc #pz 0K Qq+)jeR+q {3id+⩝mYw& 30°:rL %q +"ʝ$~rK5@K\PQ+0 +Xԗ8 a8+0 ~i@IT:5yi}X c@$Rhf%Zf;A yFQzL̹]45 a +Y Gdqdц4fQ`=@Ṃ6ɦ)Yo15@ð3: #Iie) E d\1@I5UHE Ag` V=Y myA٣mJ)3tWGUL"ˬwsjڜ.[994 y&;6 a,kL([ k%˳;=b;۴KRJX{Q>ʱ]˴ p]; {h+<[{d[FmYEgOk[spD σoyqV;NxS[xQ[sKkKG[b۲n{>Pyq+?k[۷Ӻ۹iO5;gambas-3.16.3/app/examples/Games/DeepSpace/doc/coordinates.html000066400000000000000000000132141411575327000242740ustar00rootroot00000000000000 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


gambas-3.16.3/app/examples/Games/DeepSpace/doc/howto.txt000066400000000000000000000010051411575327000227700ustar00rootroot00000000000000 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. gambas-3.16.3/app/examples/Games/DeepSpace/doc/todo.txt000066400000000000000000000011401411575327000225750ustar00rootroot00000000000000 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 gambas-3.16.3/app/examples/Games/DeepSpace/images/000077500000000000000000000000001411575327000215735ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/DeepSpace/images/deepspace.png000066400000000000000000000335631411575327000242440ustar00rootroot00000000000000PNG  IHDR``w87:IDATxwdWu97ʡsL͌4A4DaD c#陟~lA$P I $F4{BOr|Tꙑg¹>{޻t0 YCt ;X+Wǃ/:&^0l#w !$D/$eV$)rߥr8GMZV $ɣ^yoa,urz&,ZY%oM0g" *&^O&6PVWAO?;&Ba*&{HD z삟 `Iأ}:VIܚѺ+arUDD؃YN)e"r޽벹\r}=Ç sss -]"$O ^mM2$Bo~Ws< C5g|wJٺmOQ۾}L&5M])'''7611^K @`q o|׼E}Ww(仺nwbUw}Ād6zӛ޴]W_}U,I"ɴ(LL3q˛޴>YV]tJ ]0s5#o喷eD:6aIu xx-Zj~/|ЯMo$ q}_xG,Rۛ,!eyg&& ~@3̯^ͩ'a008;w'?ǀb>+ ȣ:Aٍ7ںu7Oe2 q .mSXZZ"`h:Wy2}E X3 #oYqw,2"qdUUY?OVEA5s7D&X䭷m[޸q[,S0mJ=eQT7EVEJe~iJZSК===}7|;χAF ݍeYo|wځK;w[8o۶m!BUUER <\}iRjea&Y33=Z ؚT?7/|M==={&'1 Cx,仺BQܹsַ8{v~%!S/VD'7ܰk-[^}Mo0ct:6EA$!2B&؞8ض$I"( xqPU˲j~=@YbuS 7ھ}]{oq/N#bX<4F@.'Ja;㳷~c-#xSw!B.@/ٳޞ\>$ UU$mPu]nJ!,c$iDY@T._߷oߦcΟK&Ki!JI$A|ӟ~kM$ZeE;Owݯ0<|Վ;a(`pqkH,h($I4MCRo~D#.! }??w[<7 8B<#LH$4 ۶|@-w\ne жm:248 Ko*NTPQU $!@5AЖ~U 0 YY^^9u9Vc\O(hK@ ݿۻ6L3fYX0 Ðl6K2DQ* *-Th.hi. h-kzo<~nĉ/+;񲝻vI%"Nz;f `iiIӃxyqfgf(hQ( e8dYƎ'Ͳm6-o}wC>X^7[jMsM~t*yM7h2Lnaa)/yGR:IVO$H$m h*$aY6m4MD$ TUm|}qG=z%LZy<"#, {ܜ嶫 R Mشy+ЍKE&&&8t]]];{l6Ȉr 7]M}s+Jubb8%˲MϿu; p](ˊzΦ͛5 uq]۶, Yٰq#TR%D[r9,/IRHDA{&qteIORAŇ>D"d*c t`hv6̐J``2y,'b1 @uTUe~~t:M__e/RV%/SV=o8f R$yf4]Gu|'FZ|իuݶq 4M6nHXX,Ibb> z]ZE7 h>r~ȑúWm \b1zh|~@?BH IM6n1r3y S&SmM\C(,--a&t}tZÐbhj5JsS*$-[E.' öjF^Dz,2[lkݲ,8rt:mȲE!qppTe hnZ.:+ˋOgrK4.Wzmo{,Bw Jp`94 &|x,?ڦGFMF4רr0ΦMH$tww718$B,ˢX,H]ץR IjjTJnV<8Lm+l!Ͷ%u]Eu]+n_\\gm+OZ?oؓ{Ч? I> qd*3rtiֲUu5AWw7!e, ˲L;aj#XpT'$DH2(jShPfyZr4?'ss''ϳyrX|B_2igUcI$%k=Ii1L+fܤ%rLV[ E@$aT*d֔ejRsW(,3,&xӻ0GOh 5J~8>Fk5яXKtF=/'=}]<GH&sY=(u Gz{ypdc!˪B2 1 C,:Xd,F׬"o0Ѳ3QĴR.EOqd:#]\(J{F\xMZ%$36Q!: ;ZaBŹY `qvx_2H܂>zI5Y\~A4Ee֯_m,,,^iTeƎmo5 I` X I,I\.9x_gVVV4T;dt]*"@| |MQ8ă=dj0 @B|6a*ŖiZgLVٶ,AUIh\2& p]R\0=z}{"hɑ~!OrBVZ5@eFFƽCqNz Ҕzœ^ ) aapU~!.]]]^A`6shJ}i~*ַNjT c#x#v"O 4M& uk i>ϟ}<DMk tf[kS d"C/0ZD+hR)\\XXWiSN& h뇋++?,+eUUZ'"! Cjl斿V.Z-Sk^|xA䯧v4|[%`-HI Zh7ڶy4 qpsgSWbKapWt)"#o4ch{I~4Z?;`a@&! kj"0%0-`ZL-RGdG( FjB\?vnfTO9W>oL۶X,). 4}d2a(JEVVJo'2v9I @;@5lꌣ6Uu%vN`Y$R1۶QURsM'Ny衇Ny;??1tcbb"m{ztttG6D!]]dI,SWC-EjL=^ $ ȯp!JiJ$pDSoy~#9v<0VA\j4X.8|PնmiW8(կw~wD2Iu#tm[uMLAw AMS7 )E\Ooej&AS.yGnfIqy4t B7$ 5*ޯ\'||`/&^]FT$Q5jMRxKP@Q~x[40<-K;w]7.w~#VraYYՄ$6 su6P d b`8 2FZ/pZp =EgWVؤ8tJ4<v\4)JJ\="$\1/s_3KKK;vtdfj!Mlic&P<t-/.`B<:2EAQ?~IJ%.N}ůrwԚ4ǩ3=5ekbvQ \B§WDLOMeitMeέjUnKJ歐#L,AC z@9Ƭέ9VcTjǮL?e^畸X\tN'wbثfffٱcb4s6c M;x@WX%e\.8!U9sBRTX 82ptc"2`KzeCVG%/*5v$I.mAmvop%Z45|0%`jJГHR9$if565 ښ~|XCW Xe[?`jJեR8_8:m3>0W@1 k FeAWĐE!"Η["xN$,..V~O{L"%ZL#K6 rI")֕It]TrmIjAԨOt7}iެ!T+،ĂŲW1ޱ}dS1Y]"!I`Y.Ь K&C, MT;ǭ!9 mIK<.Hvuu%y>ET,.slgng˺CP4R-,.,;.T-23M;Y~L ZuшUUYh4?"˩vs?ogoTSP2t5N<d,7_|߆]ɓw ݓEUul;ČN\aǮy)UFZaqer &$cY^}f|Ei4@`F;9 CgnvlX# CJbɓU6YA~!]k{=ud12$tiZ/+gsw Jdy=l޼biQɳ!=1u LI17X ~а$n VjJwf-A|04T5Ls-azD2I__A,-,\\Dΐ xM 5 j:`joxò1{KfsvvwE1 ˚RfgzҒ@ui4BB9 32 s+&nvwnu^'L*j!$ C_~p˲H%d٨>@닟;>jZ\~+zaQxT%g\J& D6BI $tsܵe[*"E@0<JE\)`2BMk IET'tYLWe4]%k1Ru wY|gx3gqq5Hӗ΋T*E*_>}vQlf!&tak'Pe:ȥP.riPVaLn|* DR} 3lF`^zz{eylF%LpdgN1  :;5L6EO@HDBRTLL&T*ٳLMM'2bPTW~#VCwVI`ffh7d2>cg^24Ù۶Zy($<" ĺCz={u0䞻W +'fE]:FL'3%7bO%Zvr6-GW3GiE=ʱcǘ@Qț6mf&18ˏa>hf9$&l={] s.h%( [fjV~"u}+vp][}oٲest4O|ꩰ6T |l$UC b8ݪFӕHcHjG )/?-)Tb]S333Cww7lٲ!TU\.SױlrB4SW4Mm;dL[nDU3js(4eD^2} ~@,aWG]wr-)[ ڿkv^rnq(d2J}Sbay-|g!Jh29M'c6r<i!z dɰldbbrOfqqx< ۷og$I*ssskuBök I$M1L6Fr:!M$VWI]jEǙ}ٷo_կ~cVΜ=u5;+r:UUcϟS[QΞ93}||ͮ)Q%OH^ԯ -٨BR 4Y%OLDK r)Vo 6SY_`qqIeavȦMdYeqq3gdceZ7B2ej}=Vh7uv2=T9%fTכ{gPVٴir/KP㦙~׻}ooIu<77'mY|< v bYM+ zp1=*tL3F:`}"ζDMnI9R6%&fנ/1;샀d2Aww7TxLC=s;|`YӸ,y~"H{^o{z{yOW!Ir9T2RU8 Q钾7e5J‰'r9eH>J+&+r" ICw+4:{=n(qW=7#+})AP2Mzu.YtT)H^7jB dY4 ,ˢѰ4X,P\.ɩ3N=Do}r!M:#Gf>qBd{sv׮]?JnX,hWQF9GQNUyeh4hڕm%ϓJf4Z]YZDž8  q̙oWӬ-$o@9л?n5uztUtYj/#!'e.$dbSNX֏=ȵy>,Ba >YTVN|c_y% z0~a[nʿ|-~UOOoJ-*ΕjM;mm6nȖ-[82BWWPVj|˲LMM|翲ڊ D@NCJ$P:&Qz ]R$It?HGhrLk@hc>:C mN+Q穔YZxlou'ozu5}?&o7~뷎~\&uCC*rͽR^H^h0446f˄jN4;555R=Oi% HJPRL^I( U"."|E)B'P@ʹsC B |:`鰱Pǎ[ vzb go}k=nJO*@ette lٺ:S}o6m:z.֯__$Jmq'S|bmAz.٨GeD9%2 )KTAZ]r$B\C[&{Tυrʜl?KfA cSsӧ7̏n"J(~166}]V]dbQہ׶Zmjfæ 7nB833..<I\V\Y9ןZoԏ%[SdlvZdÆ.{=rd*EOO5/m?9rLKPREnU eHpRg[LeXWȪ ]BU !d2g ~< S_Bs<۪Pb8qgfsҡ;f4+T/}i2=* p㺲eYd2nW\YXћ سJW,jg9|0m6+)]E$ƹ?~{n}o޹zRkcףbMݟ0L46LR1%$Ja:A>A}N^j)[)sra;u+z w<׾{+cjVTEa]Jy#N 3v(VA.gpp y˷z};9ӂCE511r)m:MPH+E A8`: (N{AiV=VFJ k/1Q3l2LL l}_zc`pp_җv_sMh4 u,G} ~w5'NO6.6l{キ3ݧ7`!C$,r Tv$u*UAAB M JHZ$ P0Pw]׳mdz\.%H*Q.3Y-sX\ReGS)pE3O7)? eE{ #LYb.L _l^Ї>sc>)Rmw 2Q:1]%+ a($CHaqI< 0!qdy!5.;5JNZj+e&WY+ RšOd<i_ulۖ~??kK%rni;ɪ j;._os=i {E<&C1$qC!J$ "aJE lza@xA#R`;rpn@ٲY-:ӥ*+5,rNmv`7pz+%I OHo b&P\Y |#oz"r\' ;0C TIyU&)K:A"!! ' NHͅbfrX}+5&+ufKKUVM&!@! B?vOrYv^JcX] uVT ^(gN{~koJ n27* Z>:q|϶}!Sva̜NW`gB:U]fDU . }7|*ucXB.ǒR/7X)VVNvLxg|}r',OjG}ydE|E f%#n фγ̠$H!"𼀚Q c!Xj.ףXvX^RXg'g V~fDB8E7R17~<-s;uA*`@U"$F5lTs(XO! (l=RZ\Ke73C _|f8Cu]Dƚ-lD,#ِV`A(OQ,-Pl %{q TS;| g·4?ш,..vb MqɿEI1e"rBHPw4(*u({ JX+U%|=0 S5$,򼆖%VuIN#viXRƞZ5]<)ZG?_?$ &!,Z 2 *>b( ߫U%|k 8DcMpI/ cHUn**dk guߏg4o|W]<-ܖl4G?IRe~Ow(ɘ~#wK0?R~o' (׾a\-~[nç<%~SM/Kt6"jMN.6 !:4P)?|۹۸+{yUhG v,S?9iW/plo<#1-qNft9$L4V'8_2<jc᱖??wC/~>s[t qVr7al0,IJ ko}lz_$ß*{R/axӍ=NVnd֙c%O%/yf\Ȁ']qsS^/?/Isьo/52er =gCJ~\ v>w4/~7@M^}~xv5[ ;T^OǹɱOW^ξ=p99_itE{Z{"Os[%Ou/Wn {7?ߦT >nn|^ e R_o  \pxe<[m>s_K/c~)?o|w~΁Whwi9M>⺥-B풇pn٥(Hݒ9o,Qxpqt).oI'Y@lF{7Y , p6"E*O*Azy>&''_ݱ*Y\/o' S{:.O_p1e˄[\kgT!>W߽y|cx/qP-Mf͜W=`(11Sρ\%c2rspysW۲뵉ȏ '5ոp8`,s//_<->/;{X/GYei]ʌ#g+|^áG}B u9{q/\=c9aL?JIqyiTl6"x}JF\F7Z ;ێZ<__/||؞XqW7n⦛no}[>:E7_u5-ם934sIF_bT@@?sNN@@u[y 5~F6K^*VTP*ӯy;W&~3u᧝t^7[$?|~BUǭ|As)&s/>?eV|=9TV/=oz8_WE2c~].>< m17y_}>T'b\7g>|Le gb n o#o7yA#BT¨ΰKL4ƕy%*QuI}}i^s^o/߿/~,ea溓Ҷ|1~/x;ˣ%Fהy xcǻMWq02=e'/Ͽy)gLi\]?ѓVF=?˧/$kFu?/?m^s8>w/`'avp*x7eW;헼GLئv׍@v{l)s+It)ןu-/5GWޟ w͋f8eaoggNT W_]\qݎ8q~}~HdhXh2Pt;HI&QVSUizxaB )CdEA\ Y12%KE,.,k6Q=e]r DBOcOfԘL>EE{nuz`aIt+t)Ii)q{Te#e!v IV1mN1wIYY#Lh',,$32p*N4zM).,t&&]4|FXy7I:Uǔ G=+?8qӮ]wxY@@@@@@@@@lu]U2&, `B0 l![@f-;yu8?[( $IZgcܵGw8k ۘ/oΏQ3Vaq:Ĩ4]z ?nunrl;yn~N; ;8eh'yUwRFq|ۮܟJlNvNۄq;`}vtުlㄝT޿c8Þϸt #FڭUܓ\5>ǭ ]F5[0N:6{sݪݪ;laKZ}~@x+lNjGA۱aut<.l$d8GtG 18/q<3kP햗}*\9֡تC isVq~l~90'ۀ:h'O=3ϭv/݊> +Fm䲱^ln3<=[+OwލJQaü0<{*6kuT(۪Mgfk'm8Nut'sd[96B3<ha^Ɠ nx~X9U'd<ϛ;ι<_ouariT#|/q➪ap$iC8T98,M[ut6I9[LOGlOF̌z*mw<q*vNvO{1{k6/|!|+$[VGpn3K/Cln<7_aq˨خۘa.|sG<=[yV fQe`co% {ާ<[ Fy7{qw7_{[aszvJ^ )?kad;tueXN^{o' yYj 6ճ*vownqF<{9t8,NI0Qzz/}K4 /pE=n1To(A|2qqDVܷV/8l%G|w8#F1YTg«2:9|}(Aq8#'ð]ۮ>[qlosvk6%iiG]|s9H #;/pfqJwwy[e{|_ "^sݏ>< O?8sWpEkiO{]v{nn Ox_~9\r o|Xf---/})~^_Z-*wH׾i~ғ-2f7 Ä8H$Zse=ژOOxC`,[0;w'c3a%9,l+O q+>LX &,Vǣi<8sYrO},..txSַ?y_`7w5T*ԧ>q?яrse''?3Ǔdes\( /W=|;o;/~Y\\RUU>O|oG?گںq*GyQGV5DEVydoFt+0ѱ08/omމwg'RSޣڤ<6cXɖaV&;ϭDtﰶgeDZsNF60s9lwxQ$1?)8iyq333~K_{ߚ(_Uz,B$t>\x{<ȯ*񲗽l}G>^Z*>񒗼Z^2nVnJvBc۷}7a=އ?a'p饗<=A\wu'T䵆󪫮4M$IYz7pqodzovys÷<>Y>q=GT8q}Þ=<?DV|zSNay\.ʛ7qdvTћv8ONo,*{F[㼃Gw&|[I.eq?|+Mopq^r-( NG/J%EYdY&2&n~aqsl6xӟ^<'I(q{I/}z??o}lfqq5pW׽x~g>믿|}F1!_W*211#/aVqO%|1܇'PZq;N2Qv˸9v v͏ɩbip8[7wT6?q=,l}OF@o'˟q:ɛLyoAu0kmf'> vOǻa+7sX9UF\FI fYٟYg<]=Ζe8PUk׼5;gw3jϞ=|ӟf߾}C<#O|"z}__?r??r6{YOڹJr+w#ﷱYZZZ?h4ey~^|Ϗ~nq'~8FÞVy]Y0SOv'=lw~яWW;t:Oife]e]Ƈ>u:_8u]<_?WG? _~9x+8x3[qߟ=q<?rMQiQJ >캭׽Sy{V 0 |u׉6M> խaˣ)1Fשoλak nԳ]w*?,l4FǓUz7ww\Axy͓ӣ'vJF}^;aç[8vG> $7J(vbv"Զk6o; ?;y[[NnיsX* ,p:! (|8FlmL˫[gsuq5ḂeU]~ívg=ϩ^Ӵo%Nll>7L{0;Iߜ_<ģgDo}x3Nnwymw2+fG?N o<gDְvn^nվ !Ntod<!N>|?(ax9GJ zXy6uD6Ű0a;~okkvO>;fD{JJ Q,p*9%?|? |,ö^󙚚Fd"geerJ{Tku|C440 fJNE(J4+juTU#Ce;Ot:MTM'2Ew},__"s $RHӔFseME^e9 zaDenm v}E0M .rB^,AjIƐ,,,#V,h:XVV++udYbbj v,q{QT㈂4\2;3nK/ / g RYߙ`nۥR )2F- "*rEUi.70,^dYHx}U=$d~v(I}YV!/qPU,IdE"+ q3=5iBö\TUC44E ݤ 8 $Y!8A =DԪIzi$J"iwZ8/ / /E ؙ`^8 CLˡ 4M#IL%0(LMNQN}++v˲1MӴ ^GeE[*)~'3TU C4Mf1I1355SP|(c$;誎,.-* S3'&~e膾:F0L!KS8u__[v&X0M;B8KB0 BQ juimȃ9@VI%I"#@U54%fff}jediJRuˤi$QdY R_8FTk0bffz ݠnQTHj$8(KUj-cY6vMӐXi.h5V L& .$qlyTQ%1^\@G (T2aBeÐc+k, c"sV:m[+xqB CrY&ʡUٰ>+Nj+dtdL*+t|TVU/n h8$*r,zitrӄ&Go* (ܕOR%#*0(/VniGW_]\q'\wu?#I ci&q1J $ YR0LnnȒLA%4UGUtCw2gii*EQdy1`}n8| 0 $|Lu(bN U}D Ia +R9~#N,BE9v(I* E (k/RvnkMR>wbWp]TEF Q_ߕ/xtHZa&r8ڄaHT5.fW4#c:jC7Q5,KiwMfg BR"+IRAvI^fg`&$e),SdekUzO^dqf4W\˰4KI.3L$Zn =ǎ [.AZЊ|EW> ײ$,ːe (bH( $I@e<@_jI$ YXW"$_eɋz({Ų]4M[_#R$Aչ%$S*UXYY"STEC$I($SL" L"24!M_X:C׆$84-#2Sr+ KtZmEEUTVKKN PY{Nק^ 2dIb>i9qd |?2M_w)BX:{s)\t]C5 CGkf4õkיcq4~^k6Mל`c‡Ou4mycw/96ܶr!Qv\Q_ߕ+5sgs]{q1 UQH?/ 3dExfiyhJ,--"+2e8aYbDZ]( Ӳ)e$Ebyy˲ @`g{_b6 +ێ3$QDQ\rqaZ6i`rnRMp-ƵtàR1??Ofh$Q9z.TUGUh*ie6Q:Y:XX{c1t(A`3crR @5z JT*IQ, n̡fuփc@A>)5&eQ_ߕMn\' = $N3LB TM砪*aI059CDQBECEU]sTkuz6KKؖ 뷑$8N(4ˤI^nWfgX^^B KSZVc.q119M%߇DQ,' .}>OG`Y潭@\R3 &eQ_ߕM[ڙ`RecA$6v 0Iӌn:NqKYʑwa&Pթ&jeYxnJB`Y^ c r vigaSd9m aG!$1;3OZ!+?$dY;~z. .%)'?m-(0$O~rӳ +OMWv&=/w~УVhwDqhCiVrYYY±]9#+ ~v, nyaR*U$QU0IƲ]dII"DUE0 $R`YA 2":^0 WO%&~£Qq>KEU EW <>ii:R$KYYZ>1IA= 㐥JTU\ v M7h$8CaElP*UB( 4~GP]"InɥP9q(*ES*_ߥϱvg^pOsk_Zv(֦d;3Ȣ +1rk^-޲:{Q 8Ņw*JaDZ%Nb`Z ޶`[iuV{J]3h4ҁneԪ(i!K{}l!rܒCFUt"СC.nq!Inx}**Y^t0MvZ?zλP]#_G|l\r-w~>|^G\~OyS_z4MW`yy^I~癿{< Q_ߕ/ w5vHئ$K,,C7t&'&1 ,KPC(W4[ |?|$ABFQ6iOȊ2X/ Qd]3TETIV9z0 J,u$IhwidyFȒB<aaNY*("Tu$Io{,ig\u9y_WX\\$ C<'>̿ۿ_ٿ?y׿۶:i(/J-lJ01t ]7mEQN $4]7dv,Srlˢ\"+*?HT*U:iզBף:YNūg.aH2 s8"c mBO]ʿ4[<7E1hlyӟcfgg9|`ޝя~rsE$Igf3˘(UDW5Yո{1Y.r!ZEuYF%I34\.G1iz$+DQ@DB/DQdtM^鐥 qSy} $R$E| yySYi,f05=?~ hZ,,{<33PHE]AQ,j/b~Lju,--oo#wq}chXxK_ʁ0 9^pw //o>!??e7p 7p:~./rgE/X.>A2=5i6W4 UQ-IȲC30,]7p>Itݠu1 (v8&ja,'.k_T4@MTE%ϡu8KL̢ il6z0t]JNnKDq@ȊJsY]ʿ,Op%M;qh۶yS׿u*Jݻy#ɍ7HAezyST_% <<~+drrC|K/׿qE_)#4$O~}S,ʿ/ ;0O'>²ތ")\xEKFYNAUT$& E;rL1in66xx3sTU?g@畯|%?y >=AT*3wqs>i'DWlig}[-FR%3"\]we(r^jIB樊FdEiZ" <}%s,TeE,FU( 34]' #|$nhXEQqxGG ynXhJ` UՈUUXX:e9z-/R^eϳ 74M^s%w/G=j(NN?)JJ~g~f=8u@UU^W' /7Mg,6"Ig)+2f/ )^rEQwHUљK$qiZ\p}pjFZ#Bʥ* aj7v[B\#Ib$a(LQȲLEiXhN- K Ȓvumu!k]eFs8ɲn$decYi;L֧U啥e3{8r_w1,qfVxXCTZ?^XX8-\ZZZ?~k^,z߾~\uUwy,'LX;kIקD9"$gys{  8v8G (D5U# CTU%8-M[-(p vGfzj߁"帔Jej 4Vv[JjeQ,8%&Ȳ #Ij255C!"UeLQ\xł/raxO>-ܲe܍Bxk!y7rп>?Ckׅa ʿ/ (#q D4Sn Yn\i`X&zQVIӌY2\:^Ӱh4ضHixA( TkLO͠:^GƨW.Q +%ʥ2Y$~'O L˦$a,--g~2Y[(JIJK;G^|^cۿm }ٻw//| ?Wo֖i?jx}E͏`cwY%Q_ߕ= a4I=(5z.** yt0 )rؿEK)0 p33s=tM$%s,æ^ °ϡw@#˃*RNR* |?S.U4-z.} uɱ#p\0)\"J*Jj _w1Ӵ3a>x Z Lxы^y'YXXO:v~|_rs>kspqn`0'y ;ӟ^?N`(/Z9f)l.S.U0(+;-fWlk++K4+8n( 8"c DSuL"MziAO>s{ק /Vk(F(vƸn(€4,bmm\iSURJRMC*dl%ISzrv841MS]ʿ9'=:sκ'.~ַ 7__vmTUZjȏ.v[,s9ÇsA^񶷽g=Y}l]4ONNG<n__B$(""SV;?y}k#VɘԨ9%Q_ߕ5{gd~AJ)I{}9|LC0L(DUEsk)K,// qy}(*iy=$IRy}ڝ&R!!ffI:~01M4aj6>eST-e:6ˋK(qeԪu8b&y. n gxV~-|o8ǸKѫd(@>1_=oy[x;ѣGxӛ3G{^믿ln]!4O~(/Js@AV蚆eڴMdE|$i(M"At\$+aD-c[=,^^! ׃Bu8`~[*!K2~Q]odEFLNN!ih`)˦iPr\*:aP*("cY$PֈN?/ ? ǜq >8CaH$e~~W-5[wJ:F (y.ܳW_w%GzX&/98aiJդR"2Y!aF TE#Y0L8-T4+m;cwaSLOuHrJK%,aeeyokA1| +OLw&+QbmcYI*:,e9z}$YhJ$,,EVdlu\"' @4@U ]#6iĠLNLPr$iDZ'c( lˡVmZf`++Pdvj۫C I,m;hN&Tk5/ .ߏB  8O} &Q_ߕMk敥6k:?fLD leee2)U IhNF%,AUlEd\%"Tmp/UUvK*QJ>IDۡTe9i>Y5*`^UQ)W*cZn^VieٴZ-4 8j'=FIʵ 3%,DW֭ 0e.Oa.K+ (BTFu(byi U՘F :4/*mw;NYNT4s\TEcjzYuȊJyNREeTUg[]4#3J2$+KXKe\ǡ($*:%DgXni4j& .;Ǣ c(S傹=LWk +;\ܤRJtml4-dYiib& a$)i"Kij:I}Ev\q#K =n:HP9i:n2 ܗAxrp]_$->X\a2E (/J4t㒑(Bw=cYHL&iWm۲$$<**P>c[A!Vj"kN!Ay+0cQ֑ I}GTEd,"4%bz.259,+QHTzJ.NrJd/5Y^,'#dIfaaYwC(i>GiAufRAN +UL4 Q_ߕ/xs ibY6*#"9zrJ$juEe@fLML")N kuGHHh@Ad޽YFαcGY^^s  & ib&,~X~ݏ0ÐNm;(mȊD$IeZiJ# .}?i&1*[$I{LMM&)i!! .e99Y*:y>8(q"IomM<Dz,dIyc;HL׫ȲLĤiH((OR!s,Ez.Y%TM\xGZ( 4M!NR8&2TMەuU6LHS$BdQ_ߵgfmx$K d`X.c,ۦIu,O04jx>#Iah㸘Ey$i(diBy1X<:I1 JJE,-/eTMq.Yq `0PnMIQLNLDaL$AUu,Uo(2NYV_ M24UŐd M% BXn=qES`:ˍEӸ 1z4K(h[WT,juJi6La%LɫV]7u˴mRi 2i 불"UUR>yQ\A |C$JZ|'a0?)uI((*EAX]wžɋb+n}{)/ / gl?z9]$efvf9^GVb(EȲUS9v(i>33s4+&m;XM}YV(q$kj`8u*dyTV'>y^`ۃ-$c%dY&""_6J@A|o-s$iW"QH 08\nH@z ($ ҆+ iI_tO=ej#sӢ`~>|cyeӰ0 ?}S^Aq9f)P [*!K2G'p InB% BJ2{2!I~@dJdlY&=tݤ`=am;}u4M˜rѻgbbvtZsXt$ #t$^|zfIFAB!QcEɩ)z>( w4ppu0^**wbiDĤqF¾/ ¾/Yg ? #[*'1zdqi vI-r2$Eu8( IRRYh۷vEAFUbUQ}r{PKTU`++KLLLjd4h5k8vS0MUU MәFU5a( 1==ţIiX( C=wl,ֿ.]UU!N$^Zm}a_}a_?vs!ao=>^Z5}nUUlve& i2=5C:G2/(Vkj6 Z¾/ ¾/ v?CHw }4R!QT{}8MFq0Ӷr҆ڽN<ڋJXJo6$! ¾/ `l?g;Q)8Z`vnq R. z~k`qdLâi&Y"8n#}Ilwƹ.@ 4AVT:^i,!<4%"t@-,70tJFZ'+r{cqa (9,azj Y\<ˋNT%M3z^4N(Wx^F{ZWP!UlM۴ :ẢH5hE!!6¾/ ¾/yg9x0R0O'2s{ ˴$r>011 HGfym[TUdYAU>{EN2V A0[nvg)qaRT;~4a2{b[&QhPӜ}+(J\?2334W'ժLNjw/c-t|ɜ1~XP _ߩ8n" ¾/ 럳i0 #sf}iZ؎CXE&4KU8! }I`VEV%gXX8N(Dbiy.Y^>ECQ4 ǭZV,˙$*Z+ ~POt4˨SPTV缄V-),tQdXێss\sj%VkswrOႰ/ ¾/ gٮv;/$V{I dY%|&'0t$}EFtz.iE3OբRQRa,-ɳӴHUW1dťdY$q3>1tR!:eZ&:Q.y6ɩdI&S4l1Ls^YNLLϮNNiCƬuB%XZ Ae_pp킄D!IH¾/ ¾/ vYͿӏ4GU9XN8 H2Yi6%vy,,KhIBVG :Ԣj&vUvE,a~s0L\8Lug=ch:0V)e# =Cd $ dE2]gY0 RFf:-&ꓸ9󈢈Ņc';ņʛUʼbwG֪7 ¾/ ¾/qg)kg5YfڭE1;;Ǟ=ؖat-$]?mc6m#+2^84 Ӱusϻ0 X^^ sOQd(iD\dECx}$0M,KzDAeYHL'dbbNGȲB$,-$鐦1aX$K s lk{*6N/ ¾/ gٮYFN= I,bzfIXX8JcBJVHM֘۾GDH2*5LOͰxÎ]I0 h`Jc>2{j*RI191Mߥkf`I [ }4eLק($? Rau:yӣj*'ض>Ak:n$/ft<;d6& i0 'K$❇ EIȪEP98P{w?)q( %":]`$qx)fb͆DK\ry-~-~`` rӸ5`eofgc<k=RQ8#"pzz!A UE֒nw@dY8D%Bi%/G?wFb1E Y3$v}f)q\C7 Uv)( )U0 gi (ʂE0ܿ]09J^6MTϚ~׶[ W/0[o[o{fV7[Ats^(\zT^aXhNP rY.b1gooôϦ)%G>Qi:\Jv!|ﳿ8,ng>rpp$ˈV+ziS˒ U 1=m$zb6`8qv~JFhGrM(ɋU^,Wvڽ.lf-~?KmF\|k\sR y^!UYɳ] "z%)(p,n ۻe:^( ^뽋(0L0D"v,W+B (D.y$ WEA$i&f I~={BY(@ \-)j#19S9eQ\R3Tw#may͕=Ͼo[o[=?ilc4n uM 00,:yYr>9c0Q9m&3N;` Y.zBz~(PP?@U|: uUc.ysrzt},%N"4ƱI㘓 wL UXnH V E7l>2Epv~[29;+,CU5r%˼XU^X1nN\jI^e₴ [o[ l|y]@eY:,t<ӓS|Dz,ϧ+OvɳUb6 $b<ÏeX, .s?Cvw>wyUS1{"`,RE+jY.ш&ܖM^y]sJ,PTczau>RWeѐurM24׮ɛ7pW@-~?[m]ƭ8<;yeZ>+VaDeTeA=4MUIӔ`L}p Cǥ<*eo=xC7N'ic{cxO- =zĽ{oa&NȰugTdXb:xvr/(Uz:㛔}Λpهo[o[=?qk\Kpxz]F11S%eqݡ05]YHiu:rAmahhB86W9Mf[Rz z ՌSSEuuo[ol[|>BΧS ä)Yb}OG2eix^٦PthJYUEYpvzy0tYZHe( tM#/2z~$K?D,ˡ,+iC !A@YEq:\)ȋB_Sk' 7-~-In|zNH QO>t>#r8ZۚB UQ a!49=oK ?kIDATQU"Q9EaZa÷8NP.qr||x<ωpm9u:egXMt=eb>@HAQEdoA hH"\EݐA7ZS>Go[oxzO=z(Jk4Kw- GGOv0 %/rTuF L2 I"vƻE* p.I te|fyC M\ 2ǔ:AUU)lBYVGuY6M vwR2M FEb9g43P v54vAH!čżƹKn'C 'ħ],bh[o[g϶*7[`DZ0?Yp(G>EQ!,]ȩDU> =,)-eY0%1L0t0ZQi''#`uXu{'c&"TP[!M"~ܽs>}vvqDU՜?9Y?H))|n|*+HjyfQ\u.~E_q9' o[o[ω/ѭ_SMր9p&~C7=`-,a6'kUt,}$AJ ͠Khu]Z2NplO~pLo0` i(*iE!{ܲ$%*xvo rM'c!/b:^ q|M{}޽OPU|?؎U/ *_ G\/(^(/eCK^d͗Nj8kp-~ e=vo~~ do,K99ypKYH:?eggN&u EgHQc61zvE(ܹ석jr$iDY娊$qBhX 0 eYi:kYKN]3 XgM _ KjZo[/gm0MĬ€磩wH"O]yueZVNt;=3!c4U:8N0Z"Ν%R(BD8eTuMRSƣ=(,mc%N" "3lE>'4M0L8"/`9.P93vwPU4@!,+jY&1ᐪ)(Ek˴&AqltD%!*YMpEhjP!C4M#enKUTe@ViH]J,a>9C(`ggEPbj ۶}7Igs:a}ByQPzZg(]mo[o[ϋ?BQZhoICʪMeZj R˚p)uHM5wYf 0I Lt| )VU t89=±]4ѓG( ktalzwp  Ղhmxn,xᐲvhlvMGUAG]:oE_@,ޠZDzWyquz,/-~-mZHi0M*aLY1OykBTueZMNҌûyyQ yԕّ%MBrxpN2}$%c($M-樊a~۵8?;'3NM9ױGBAe0!BSӫT^{2S-h$꬗oҢ^l4tWh[o[?eoi0FziXDIH#|vmLO wTtP<]8Dely&EZ _Sʗ_.DX*^;\{uf\-~-~N'˲֟[,րY0۲54ɋUYghe zcʲ""1Eba,5Ƕ Ō8vzN|> !IcDrfowcQU,@,n;~pfv8 ƶ=Hfcłk4jITLIl84Z{G֙qQ-~-~NZNMր9 W8eԲUU,C7I]xiE*Xbw.MnggOt|*飪.A0#s8e0cQ0=;(*`4; zc6Z_cHsF] 4MN''eel1CEcgr9 #(0L'IREifr(z8k= SI˯hq(+6ؽθȋo[oK=vo̶mSպ/`<ޥK$ɓO{Ryh:I3TU{~,K:)u-\i*[rtNp! ^iY?Ŷ,2b'Hwk:').d i^'Vdi`0Z\db9hCUJXe kcGlIY7 D-~_eTU6n UMʩ뒧O"dgwC7ɳMW(˂B!MSΧ$IfSفŶD a XK4C*w<NOOBF5>QD& QgǏ)eowh>(ӰtzDqHU((xܚeڜ]064͹].l<Û/^//__ -~-~o{6n &^ 44{.PSc24l(%`dYc qi\.By:if1UU9.iyh縘EY8˃oX.e*( 23hH) i u-kxPTݽggtA5 /W q}JlcL[o[/gm0;xotvxӴY.ʢ vww/$IJt> C Ղ0\lJYVzCle̐,A7 2^gZPcf)i3CU44pl8),)˂pb8S9jI]K4MX. `x.gFܽ{H!/x\vG4?^*W@pׇr -~-~y_&϶۸5`0ke9 4\={B-{q<B ;EJZrCTEpr򔺮Q0\!i$Ydr EYel qȋ8@Jƣ]dUrzrԬ|T4 Ķl!u]E1qrz" X.0 N'M< Y 4 A{2^~7>K)|rgWMv,?%'.-~-?ۮm$IXKT]u<:]EU=+{3O999FUuץkP$'jx<ab>Ŷtv39?yĽ{ؖa3t4LV%gIʜhF]$I(J4O'- h.U]R\wc\~j}לÅ~hܼs$o[o[3L~mLnqrec{uI&{#`5DzM尿@QUٺ1/4 !%55EQr[ ƴ,E(PnB)Q Y(,=f{B [L k+7pBYE`{m o8o[o?7=99>j!qk<pl0\*n iZH Zsx.ggܿ8Iv aY.w('OsxxUUp.e)jӸq\"0 Y1L CȲUu]340]5MIҘ#!kؖFALvufbByEQU#HyU+7-~-~qo{Ϲ|2a0, V큔dy R`:;p|1j`xESM,H>s[L52 b?ɗyNYG &ȴl\rWo[o?~o{s>9jqkleU1#z>]dz#\f7ͥ=S%7Q**eUw}8$#F"g:`&UUV؎`nǧ(JZ-qPx,d<ޥ%,N'F&|nʢoj^$䚤i~1]C7o^-~-?n9,ȳ)kBM{E͝w1MrAg\&1au#W%Y3:>Qb̹! ӴvX3,cKY{~N=E!#uAy29?ƶ\gm%#whaBH\)Oy[ @lƶ$i=~HYXE됯{U`"T:.eQ0].GR9m3`[9hEu$ \x]d]#PUj|N7 StMc<"Ӽ RwM6q^4UPWLE|!||B-~-gm?d6րTUMjjCy=eA<=z~rLNuQUYW|,ao"{=,Ʋl դ+Oj*iv9< V±m (MTEGUTݬt,M9??0k ]EFz}"EJju97eAQ׈BiZqL0f]`e[M%3(+,%CMA  yp0l<,K\`8a4a 4vy,`^oj(shE%%ݎ4KS޹GQꪠ eEAQM&zzlWy)zf˺2h6|bG [o[/OQ[?4na Y*\R%{}TUk劽CpE]y*iySV^gGG8u]NϞ5}a8.)pt:]AP B,~zqL)EQur(2Pl|LUz$MdeC9&vb /6]9`-~-~vo{cVvoo mBJItF+(f`̐um{y|M3Ȳ)+>#~[?5w{q|B.*0-vzAnPQ4SbryzM U3Yp2)n۬ߘ6įگ}{~'Z*pIC44%P@֒EAQ3 Bٔq;.nbY6yZ.) M5٥8RA4"'ctDQbIU0 |c9ԤENE Wt;h>TB\u9o?ö,iK2nm^,9%yYOIj6sڋL,K8,5uov l1vfE`wg˶(rh4"Nf)S(:O]7u'ʪ)1Keaӧ:W={H^Ix<&"LA(p ˱- 0$IPU EUX!')qc6E^1a2 PU՘/fl۹֚O\1yn%EQREsIZ%տkoקh&**qo?|Z-ɒN;o  2tTuP4jVVf$Iǥ* Ҝn1{ #l%òH ôȳ#^e$i߹ndiiZ(“'?e4 C CGUU~ dz>-;eCec? FeS%-vOտkoǭ9 qzŜ L ϛ={Iw{ZRUŊ`ݻ؎*\{-T4.1n8@YYt;>,LpeEPV˶Ϟ=4 |e9hF%hMY.LBUU@yb6oru2FUȋBkVmVVmu-_'oI,x]8&\-^C7s4ATlu<E!fbg˪7.*y@ %⺆6PWjP2 d0PN"hVceNc|x4u;,S$!S7Q~!iȔ\ ,wsG{q#g_/ 6%@D5U-kv?꿵n70UYr|rzeYEIUVM;U`Yi&)eѴ,U)|tV`dir9hRk:f6;)fGRtw/WjO= d8,ɳNK̃R5ggMD M8:zj{"Nb>(y[t7Hw~JҴR$-fo(%[,VmVVmֿۍ6^ szt]"g:9s] tAYh`6.E!u(1mrP`(MȒjj/vsLjW44id,vLW(˂R@SQ`K±\>}fh"DSTW5.ސ|{{n:KnnT].}~/ϝClf5-kvտkoק?7߭s.Ih!F!QP ,(eICtPIwmhNZEPUQ>EDM]ȋ"1M,M{x^E@tE%/2EŲ,%XN>qvvBhNab8PUN<ʲ$ϋp5s}4t/HAP4bmeum'U3H?E[/(\\ph~4U(iUz(()ʂ2/-<(˒)JV-kww2%?C?;zD} x??9nJ_v&o|Ene%*89>wޡj(D;J(,"/}gĿq0STw0ovOTAƭI5_+`''TePTEP'sѺtF O>7-E1,4yvq.;e ސ`>`.B&SzfWiZ (0-E8)gZg)X.r>e5S;R^`O`/ܨFԋ7炞;+ 9o3R=ZoLNH)O?* %o~z۟?-6N,È$I(۲=@(OOUKYd~px{w5'yÎq(4mϱMٳ'q Rj(p0\\-kXMQ(:diLQO'ITUI]W,S?)pNajrWK5eyB4eXMs^MO|{ֳׂ't~oxe{maG?@)vmo7.9IӲ !2m DUpE]iXEUWEx鲁P)Ӳ W+~ǨmYV+ &g8x4X Puc:P%wX]&3,/)m <vÃFe(B3tMGh~@׵*UUO mfύEYRuUuq(j_#o~iw~_!҄ݣO~ۜΦ/^?1fDYcVUMֿۍ*7Yql#F;;yS40lV%A0g8Sp1 !s=fogUSƸ|> ]v$i|1!4I0L~o>Y^'<|U(J$FV5( q(ܻ|J(vN'X-+k={)f/gWsz!,Ѻ7m_'!ߡoe~b7q7vC[3?_Bmomݛ}mN+A[o"w{M~o>KElr  Ⱥs;C3PTYKae9\ٗ =~`1E(L'dip8 $MȺq= $ TEc8ڥ, 4HKTU4LNOYJ7( p~t(+iz5J4Wo2rێ)%_ >E-k} x=?oOٿw6{_,\Z?͒۟mPWn !!Xz}pQUz>a:=@-+le>Ŝ= b>wFYY븞r +ILS~o(Ʋt|,#ZIL-K&g'T5hJm1p)Ix*(/ x}!(Jj~~ !@^}Ml_o!~f2ϑzi?oݟs>('h*&Oz=vvoc5`^VaqH) wъm<99=M>Y'jRBQqÃXfS\?L0J@fo|e:( ServF]WYjuOQyQ.zZW|ژ8-մniUtÿ_F/uMw~ehA_#(Y>u6^ suIedYc<#XضCyJ%bT26Ȳ$v`dg=Ǐ?fݝ=<>wGT̞H)X z>DъZ8p4 eEӚ.9ZrppHg(1ް:Y\ C&k_kpUEuq4!.@_8-xR "^@/*K}ۭ?-o{m0ógXiqbFdYFUHjNx MST]4M t' WhVq\znY!Yփ1ttBf8ǃMm{>w9XK8K86`ԲѣGܻatɋ [{}VAHUKAe,3~gG,REQ:I?I6I+{z_ׇ _gXyj0&Hj_>|wO4{rӸ5``gG^f<=z.)2PiZ;qZ"reQ:bh|#zFƴDI19?F5qk9xu4X>Ui8*Bu=P{!ë&m3-m>~H*>^85UTW7j_'Wao!O㿏̐@o1^Wbonm[|>BΧS ä)Yb}OG2eix^٦PthJYUEYpvzy0tYZHe( tM#/2z~$K?D,ˡ,+iC !Ap:\)ybHpvr-? gOG-dmH!H~O( fY2[Jmo_OM0sįگ}{~ߧ]Χ躁͎.eYp)~קQUɳ)pvvmhiXAGYNQY}:eYa,BC4" L"\f/+=UEf3$pm9A^>{p$%TUF?Wj'xfoR7Xw97<}%F˭W??jñzc_il]%g C4$O~kwf ϱm*DT<~mt6E?!E=';CjNN :KU%u]Q5U]SW5Ⱥ$U]!d]S꒺Յ|E]WuU!Fjk#{TՅ|IK5FUȪ^I++L'^}`A~?İymoum7ŷ~<9qqb:i38FS4F;{TE+OPf^WƂ2)R6BV*\ˌźO:f^o-c~ocbGa~e_V۟t[t#}^Ct|G]Wc6iaXt=V]ɋT,deXdr@E(M՛콪ZVĶ4NdIn48D0L$u۲R9YP0mtU#J4ii:Yi*'gϰmGuv 0u ]7 ]כMo !(ʢi2y@utMG3t4MЛ1ֲZ#]bj-|fx_Pse@~%?jUoSoMqaKI* x>jp$(坷A]XEj$qLc:;ñ&WU< %BJy@Z"e(Ic;XMUt.e]0??e<#":"a6aaY]$-,a:;ö\4MÏ~[ihqD0_0r\,ۡs&g*iC>ye+ضs ߴTwEIQK/ e ?ӹL7dOH}ۭ/ov?yF35`β VENx^;YFɳcL4m,0tTM'KS,'ϛyLFQðy0u4B8KYx)K:^2L&'TUxͷ]'Fu;VUEexYǻceNݷXDpE)+(2/7W|ys |?-_Y{j6oTerUMӿۄmop󎤷v(pb1EQU0;bzeE-+$f0R5eU"Ht`Z`6]7v{8@u$@%R^tM*Dqit},8t꒪Ȋ8 Ke;'gLÃ"^QU ap&l.WO / "i}fg.6W_+EJPw)8|oWjBQRmov&tր9]S@pHY㺬VKTMi eM\E:Yܻ,KIjiYuL>:~:$ QU t89=±]4ѓG(JS]iX=*ǣjł``4c[6%2=}D8j.1ifQUnN[o)˱7m_&//`s>Ur_ڢJuȵneZ5o&o w̿x*&7o{FsklR6YbS1YRd~l> iS5iq69!K39;{E*M{CzoIbM-{U??3X~W8r?#2,E>/oPl/_T[5moo5̪e9mQ1T~a4y>/8;;ulf)EQp0yR%i X.9n0L9ecyf /aĠ?@7 >#|vmLO wTtP<]8De[XQu"_SɄ/)K/"\tb\ Fr)֙qY_eUkGyQ ٿ D7,V/+<{k7 \}Ke[W?7Yߛ?XЭaek'hZ#%u ˰ƔeEEc* <˨,=xi]GjXsr8<m[ߛmրٶmZ%ǻTuI$] sMGU4t Icƣ1j boe)]\c29%}4MuKtw9d!>qv1-ؖeXfSO:Ir>tMg9$b:=e4EQ,!Kъ,M Fٟ u"%WCJXe kcGlIY7 De_&*ڴHAqy'?ǎab_)hP~w}U_UVUMֿ_ov&oDi]V9u]S1`&y eYPB(i$1tlJ'em9e8r i"Tye96Uk|8M8==(*ώS >ѐ)}d]Qa␪QPjY7͹5˴9;;`U&y:)yVL.._^^~S_@"[/Waq^4eNؿB\=|m =\?y>v׍3doUUWzܽs)vx1ec6QSՒE0u,1`8xn4X.!<Mp4H䘪h4m4]s\Lˢ, , ʲbFevNϙP4 UUYS4IHӄdi5c{(Aó3K5kCt/t7x|\/MwMv=&N 3Eo|ͺۆn_n[5do/sUX7vFLg kƻԯUU.iw ;Gee8CEϦsFU)v&gTUEt;>rI8Mp2(rʢd01Yr:9"I"F1Tu\Eʊ~j5)kj)vkN&<٤@ @~fWSWG\,h_mwǮ_k7?=x7my'u/eoo{mk#IUL&wx**NhZL4 $t`\Q)AKiEN]t:>e)3GQEHYBQ4]3U,+k$gضjt;]Mp!PPUnQx}nhhajHȦq-AX8[GqI5Gr@ D%_&L[[V[y016;g15aD p (ʜbXcNsz4%u-1MǏ?qm+EPxO\+a=,! ,g.\hf)UQPNct{=nz! q<|.Yub74ۼ⊗K.v;7O yZ/bmVVmֿ_w]ps;[f!n~Pxz)9]3)9gcdeYa&E4K() ]7PbƝ;wx;Y<{vDzq2LicL$E7 ʢ #LjVE=$bE[ j`8DqDQؖMY ]'@6mm4Xy,yJY{y֝-67~[[|iYضCUWIpU$yD&dY :ng]L"ϖI]<;~.a8.I0Sii* aa&E^QU4I8Ns>尿@4=K4MCHIMt6AQT|ܿł1- q yFPJTE#H( %wnK=f`ݫ樸y| '66F}Q%㺸$%N_&r|꿵/2ñv %2Ov:wr~v( l`r.y1wQURV9ώ2j6{8K^!9iaYAk;;*hkgtUò+"qMIҘ#!kؖFALvJ$/ʫFWy^H$\/voof[5ǧ-o|E aI pm$Sbµmy=@]ר0f7JE*OqhCQLg,Ӥ q @REIV%9gϸs> as])AEhz|DɊ!Qq 7*ht;?U%EqٷG"|I~]4>,|Y1mtqzM-6?~[ߦrӸ5`6M$I,Ӧ,rf EN6t` Re)nPހs~2 p,A5z~0; CL2m<t0L4ɚڕbg|jDlc:(Q)%g)h>qPx,d<ޥ%,N'F&|n-4/镸H~5IYb\*Z/2mv[[V[E ,#r E4ENS5w4-arIĄaHS׍\QdYhDɊE0H*L""laȳ.ecMʪf:=P<0 r.Bq@wn'IbLdoo˶)$)UzA(dy >/;oRzmozKF0t 0xMv6q }=G ~pb2)a"W ecc4惏~y@?, ,ۢu׽rF0@*n(. #O)˶ w-ZJ4U"VNg.q. jl>M)1pi^Yͻ&JLf|*+Xl 5'i?˞߶'oz6րTUMjjCy=eA<=z~rLNuQUYW|,ao"{=,Ʋl դ+Oj*iv9< V±m (MTEGUTݬt,M9??0k ]EFz}"EJju97eAQ7yA;q9tY6yq952 !)ES%/ i(mn۬-oҿ۽Pnˢ!p=E*:a1M*h8?G ]G(Mk8 UQٿḴl Ӱdeea)$<XMe ;;,Wc.O|B% XeNRf "8:z;(B]Uc((|]kuzlWy)zf˺2h6|bG [/_E7~[H(i__O U,JvvQUը&p4WPɲ Mxvteq>ySX&ضCat:];fz>#rꍯ.mi3 jxq͆^nV_>(۲p];)}o[9o+x9ɔûQ˴1M8pdYJ]WyAU֔JlE"8==tPB)(P5 UQ1-Ur.X1M Xp DǬV EEwfȺƶ=_pppdY?=8bz>! Tgbeɲ4=6O>7"#3+͙n95"HJ$hH7= H@dhhj8U5duVPQw<6m=~ω1dp7 w7mkiؖ@`;\ U, Z˪Z)E#Z:+Z~O$IPOxeS) LTԚ j{@š*\^j"pQ|ⵏ\܌,8Ig &u$?Vv\!\ihF~ \2\(}P@d<"sܖXM籘IM58:<"?X!iIL躉f9v QU ӰOp,US(]YVX.hZDQR>TB0Oukz Ŷ,)^kel*ZYB9Cpa*}/4MiߡwO>ۿyJvT ViD=(7HfY끼KYf+ϩ-BJ@l\c}.P7qr?~tBmEl m$1p#tC0X["!S8FUABu<Y.3 DW ^x*(= N ji:^=`96ea~ Uc6Ia2Qt\+`ZJŽ;z񛎭OI$MST_"/?DT@]3T`X =&V_^U^I݀C/X;ܼ~ة霗m;omoɭ,Y-W;xŜ(iv/:C??XYQR&{Jv]l Ik}fꭚM$k667a3~XɻO?y{vZIѷv"d:!'C0&{7$Vt]d.ɲtl:؎b9/sMT4i.>v_3h:hl>4l/ XPi1l i LӠaYDnp8n(*?#,*Yj.Ԭh/nz*D(j1U{w*r`,Qյ:h“[&7\eQ_`:r}fx˙_gnw(*K){|okpF[ylYrv0L ˲,͈EXaAHd8e9JD'tݤX@H!7\JtMG̢LkHx)RJZGJK:.n2^iu,G>v3M,͹( Mx)qxx_&~Ơfxm(f!E*qSYȒ$!M2d\w+4M1T;͆ʫX`ٜB^W&~¥&ϼˋ: E-cJHdCw>=@$iRiݖ߶}v(]].P M4MM0u\)"BiSǧ€(8,GQǘUPF<|0,҃LgSGX)iB* 0Ug6S4CBIys0<0mm3Tz!BD]cVin@-k ^ur~tO%ժ|a5, rQS0e!B :Ւjz(BA7 4!)-E3`:1M }a63[,XV@RTE$1HWkqD1i!Rfk3M5EQEQ,#Zn]Ӹ\J7R^uF{<' bes0f9g C@+4#%cvQMSy)n[˜bm\ -`>ym3,%uLƵ=:1MMQ8wǶvG?`2F4>?Op]c|ztI;2<8fYE LB9AX俛L&z]03$FUل˫srIeYl6a60[LY3 Z)5- L'3zWgYFI)c^BL:Z$i(fsTE6V:вmIT;[*zqJ߭]Y R/O] ()3Y2\:x% ƫƩ UU~qRnkթE]wmVEQ@$6I#P8P 0 $Y-,s$%\dBC!VrQ9yVG(B!S.9<<2ݻ+,dnYhrEHmDv5S>ݤЕ2oդn Al\4*a{w**NhXՠ*J\KY׍$7b͖~4C7E5E-opQdX;]g]]۟u4GU4^xxn8 H۶Px̧S˜0\G?[`F=,M#M3& x~(8EҪjf\! [n*b7RP=0ߩ]Wcӹ%FdDe1 QFjnN/om7,tTqf[]8Y; I3tÉuߵ0[o;9e888@7,dZ.g>ul)s\_]#eIeZ0]^Yc@UUPdJpptBF|iXEEu,-W)i)Inu AGaL#*-MIҘbI\Q08>>|QQFUq]wt]э0*hE mmI%)IŊ*z$IL$d2˿C/ <.{)+r*(r*oEET ]GUխ jvl/s,'{I<#϶s4hv[6ߞVf>)*8?ɓ'YZ"gi,ǏZ\^ab6_9Hx^Q|/9v &1YYZ|A2-C4 Ӳ4%<\c5$ql%a*-aΟiwH ʘjczt5u(;Њ2Ŋf3L(g#:?}m:u[$/2o}}fg80VT_a/)6pTBO6>_jbxM}N3汵te8Nbnޠudo{uܴ0QA+`縎diPTEa@:i_I/}2"%a@ \f 'BpuuAGQJ`#I0-E8INb1'B\c:g9zؖS;Rna_` Ŧn plܺ^"c.Z]W ?}sS]>@]0}׿M no_gÆv8KU3 Dak~_<$Y(!DC,:k_f7omA$ esxtP/#tD5TMCI1\Ι/M,&IEy-'ISGW%%/$Rfŋz?yߵ /߶0%IjwVhJLr0-۶鴻$ix7j yspxH%MRz}V\FAd:B.q.a<#MR?C>Yz-9 yb2Bfz}r18:8f\+4M/[:ՔT[W Q_U˿S_3ɈOS>7-.7/1'Ty0HOgƿvZ8`H7 kxD4kc*EF6+ʅ -=XIԾ,..T7k_f7Vql "u[ha,sf AQ9e9`^EǼxTM=u:L&Wض ] i{d:u'WAa'}NNN?XXI$Y Kb>BQ d2BEuvbNIt] z}HUYJӚlPsۘmBn(ty[BmP/yogteߊ!n`욛6#Ɨ>3OONw[.[Rɂz_]|Dv7yA; IDATMYzW˚j`~aJ6t <˲q㶋" ty/k鵊l]|g/n;xpmdy|6wa:iw:#cz>f+ Wg(\\srrgxnr(%vrI؎j1G:E]4OxzC:>3P(  h;G#d6c&(AU4#$a.IU0 Wt}(퓤 >|PiJ\UQ4II1Uu_˿3_Nk/|&'??t?GioM,T[.\`6 ugŖZʾWyUwswB| *v7jk2p7d;.n+:i1Nh{=Vn,\^0 Mv2ö\ Nt1i1tH)~IC44!4]<2m=zh|{+i:L&#NODłnO2,MUCnmt<`0ry}A\EjEZ+,UM$]'B/?b]`cV)ڵ̽E!ȿ;Llt4Y'.|8Rr38mߘՕ[(Py5z#\;ڛϺ΢Έ9S% ֳk>!Rnա +Ʈ^ug۾9VyX/}2a$K3>~:>q\X$RV㑥)`x#Ap||,3$Il>Z޻H XrD"i{ 4C )2GrA$DA@Hik& X4 *1X.YkĖGҸXU,(XzeJJz]2EBoUJ^":~9Ƌy&x?._|eol_- 7nio6&?Uh8=cS.А95Ao!4,(1\{ۤuyŭf uߵ˿[?`p}a5,OX-gE5$NS.$I%^jwu n|>"W((*p=iXYmQK ݤE!~B }AJHҘ9:,B4 )!(j'WX./1u#./8PU<ϩϾF%IB)%\O;ۭEVO uS"i{7Mq7geeKW)z}fu:5_^?6`'Ekϸ)8]÷r̫ϕcpSh)L֣j Z%6!8e]۟ڿ]m'03< H(""4]gxp@G3lۡ<./t:XVmGUE( #>O | Rr8C9~k5o?~ Xf]7Èli0_QUUQk{|w6Yb5nYAk$PR zܓӵ9޽;[ȿa?&o2/ߩY)^f6%k,cG g\$ j!ve*YhXgunumaL5Ne;%ףa!QbN_j: _0 ke uVYgO99t:qLH3)(ap$A9?G i;$i!PX.tZm"qg8<0LZ^8IS e3`qXp6AiwEI4! g$i)u\HX9iq0<ӴH=rttxD?D( UѰm] #_a.I&$ILſ1NU!ޱR|4j^m3G*q3?΂n_+qAٷ/;%x֕QN446C"aUpDDs3b!νἊ_I YyQ񭱕^W ߮mϭ x,9{$/^|kx1F1Lm,KɥDT?{mh/iXC$r/^u<E?ȳK|ɥDy& YӓdyJȬjN>2d^ϲ)vu$gK$LJjNul,/I/c̏?T,?WY öi{;_\**֟J+ʚq֪}Zъj%\2ˊn1MrdqB4vʦfe&k9dy/rxo4-u[aNm8Wt:= ݤ2Oͧe:#`ee<|>HyJZy-j!Iɿ0t] M1⻮饌Vj^ #ΟSdhnlB<ۿяwZfKhhJ\}jZ.o4ױˍcMq#:k^c1%<'+d6\Uw{Y߮U>+~Xhy4>",'GXEhOe4ıVx^ \Rrc9R(pl˴&& YV\lmۘenE%i 'IﯘMb9.1Wח*Y,08>>xvs,Iʅ5us{q 4T2*oj)oa=gvG9 T/{$q5'[o D%9Ex\Y&aY9nbLy b͞:-MwzOn٭sBR $6y' $1,WggiDQa訚NXq\T1 EUX.ELf# ]' C@ 㸤Y1ONzҔf1:\]e'|[$hn(eQz |˼*л|{cMt7 MFx{ ȧ=ƿ237XGzÿO ǿ/_W: [;(,YM'vY*75sQ9򍐍n\l^zowI/߮"D-$etuF0`:(,w_0m C!iˌ0dyNEA(]3/Xh|]FM:`IJt:j c4GhFCʄ%V,OҌNg2IJ&WL{(dy?۶|Sl6 IBwTTH_df*?W?']J?o9 KɘK7W17yfVyW7s/o;bq[ *{KIJ.ʛ"O߮܈[/ib&X̋J.sހ4I]0 TE!aX,0 0 nKZ^tm:_ı]pOywQ"^E5vzWQHEg>1Oq,(1tlFhzjaSZ^ Q; RU(؜TڗoіU9"#Y8le3 /Kߴ6O-a^~ C~fWBַQMvD׋*8k5\٭}8 jA, ,,(ԇʁ{W\2ۿ]mۭmdyV%)aهN7sZEUkYDa@?bz,ǖzRy[oA1=0z?7"liC$9HoU /!Aɏ8ƷUϲtMVL׆ Kӹ-E#gEf/7n+[M]i0dIQ,c!v{ՖaomŪ"Ityʋ/RrxtC7MWHӄ$B! CG#8 MSl!IStq0P,"/ 1M忡ů|&5Կocuw~/#mor뿬VY5,XŲ>n"o:.W7?w_ſ$!NŴtlʓ[7vG7 ԥ:?xcAk lvm:Y+ u=$qm;x41 '%C׉/1qma!aa,ˉ㘃iN[A<Ŵ,4q\?zn|>%M3imFkFKMCUURJf)ay.‚wlEU8:>]BƐ$duL}@>78y/sC/-{ܴտ#տ bWI3M7υ] y^UOV+>J.8IAڟNqunǓ8IkuR,+6\ʉ(|~lvmddYj'?e9tC.// zEaFE.BH\$r\#C 2mt-#V,>yX, G\]_+\#2ڭ=Gh8̧E5!8Gt;A,u{,%`&mLƣƂɆ}gŊ57njaoɅI b/[/fϰ5N} K =w]ipӺE{NQx+ʘּ`]6r6jL7k6ȘQ^[6^XW& *_<7Rz;мaq+~&/^=s[ hF\]^x!qp}}L#t]cbj\Lmne:Lc4`6a:'d6cTEa0j,ƴ,f)(hw]C(t޽ؖ$q}re:E ϟN1@nϱRiǚϛ7MRliL Ks3{OܴP翧M F4t k$TA_`TV~BR!%7A%rKʢ6V7#EJvk7u確J9qʹr>v{Ֆiovü$@`Y/LUhx˫W{ jdEi2r5`Γ9/0MUQY.eAX-t{4&UM\a\qr||1'R `xD\\^qrtaؖW â2L%LmbY6P{LgS4,]R+j(XԾNںRvR??W:? ~aaYh똧Gب :}:g2C'k2cQMn_sͶ{VW®o_ߛhzekU[+K/zonu `>*jwPTi<|d.y"8?3mY,jX.,K4MG-kpvC$Oyx!`6]30 bt{=ln14&$)ADUUM%^hʳO'Le%4-jijۜqq ݘZq( H35^ojK/5dĿm9D_CQӱ 8xi ⴙ:N( YV-.&F,k7lNWNOaR<_"-+ao&7m;SZe2ұ=<% z!٘bex^ SldcZôRb62_rl6q\z>VrOg4%S bZ-{l6:!y0Ml(vzC4MqZ@AU^FZ<{1i SCBS#iڢ85uÐT$!?7u?Tb~a[SB O%,J}۱Fl8na7ڐU,FQ4Ω:-oV QUrqN! ZZ.I3NtD ,]tM'CƓ nU)IK<ɳg6󅁢j(g/hI%aX\!"B$0h<n,ˋ\% ~iP8?Y&0u 5kRFol/7G Hn^lc[{G'uzE44quF э*LVN؀EUaӗ^glq塛 "vW]oNy,MTUjB"^|EyđMGL|!Seian!T( %%3t@Q1wG!nK(kvWKx1icwM D7 $a0 Uhwl!qQ5 pV$I-4M T:,Vfܾy"V_Qem.#^g]mYIZ:k&yZgHcZ MY&_6fJ)Lc߲0O'cL¶<+$!L"CTīra Zn ^Gst$s^0qd6 ii*WWi$qBCUU zt0-Sf MR3_(*NUUy-&)YcZ"HT7!,(0ypA3\jC$eƭU-yS 'e!8Ͷi J^g󳳝2L Ƹ-))d$I7lguh<6-xM2-o]{ `_m{i<̎\QTdD4--չwחC34,>i3{*^4yAm\QբIac:0- "bT5c69*hsW誆e9(Ba.ڎK!!sؖSTi'L9|B{A]N^~ʍPbY^\1~$e4eDe+1&6צc\:R D#(؅S3ik(UV1eJn|oo)]_]3\)0 #!P)>9b !(iP4,'bIhDQDc>puuNdt{=i[V>8Mi-lEf n`&y.XKTEöNN>QM5,)4T3Y(L댪Qoo1iYԠ d=IY*'AS^Mv-p,J\ҍ_NQhvzjpJNnAXggM7)%_{ݝR!V0 ,{;]^ĵmq &1N;F$Bܴ0IH i&1'<c\]kG QbYI|໼7ypvvhFS$^.e/~i:ADEJqxpb>Glc4'HQ)%G!Ղ %XY.ehtp8,:V M7W|Rq>k/S]ǿc;6/_5o=0W.& [Q Gv"k\xMxQA.I7sEQ9y"gI0M|Joc>>vC4%b\*X0Mxm$iZmlLE&1awNF״;]E!We@ynsu} Amxn\!hym KV 1M,&MIe<~l R+JYX+~lMivGί~}~Q9Ixm8Mf1 .}v9xd+/o,1vM0 Ϟ}?Y,蚁vB.HAcXpus<_ؖm>Nfz$-Z^̭cz>PiۤIh>r}}AXppm\ɥDS50-,8^TUcM!q0z-^nw ^_a[&Q`Zf?1-P8v0<,v{ %0 pKz>Em9(*r[yiz{")VBNgE1y-"Ox)MU9K/{UG̐R1E -leU:Z緌(fzHr;_Gk)寯)_o۽Oη_&חu4Ŵb g/hZ8_˶AJ%:(K~=+lAT~?iil_ϲU3_7,>3^:ct=&b5Xc j^&o׻܍0EؖjÐpWQ}Epu}adYdAtV''5ZY4F=MS$˿S*o oR?Hjd S eiơSY.z+ϡr$ηX )},&9~}Qoooo %Vyb8h:L&#%VCiw8@Uuf)g/pc9 0U/ kӄ8888`ZaBWXmYAi\*:~|l&^=0LC>j3klYV7q'>~ӱ)IIq^^u}>?4P 4ػMV{׊4{#E픯3Mn^^t6o|{{n[f?XZxwZ9Qjy׀~htLZv(XY986adYaXiBƴ6/_>`f2EŰ,00-(G'ȥFAX; (1M EQx X,{$i 7m.umbܦ4Itc>r//~?)?ɳlms!VL.H ț]$ڵO3X&VG{3567i3~XɻOqwvZIѷv"d:!'C0&{7$Vt]d.ɲtl:؎b9/sMT4i.>v_3h:hl>4l/ T"Hhe[xNW^`Nr4 u!30M UU1g/˴QU RZ{E4*{B$ILWoߙ]}[\FH> N"_٘]|4$I!K۹sۿ]mۭG($MZ^Y.z}\u=b;.( ,*XG,^8m\_hu:YAAJ Z\5L@mcy&Y,i #aK>ib5fQa98}.8-A\t㏰Ld1JcY^ܨT`E PԶ+5ߥ];}dy\]kT \5鿛'7\eQ_`4yՑ8-gz˳~ݡ/o}oɍeiK<0-,"NR4# CU`Yi!i8.堺*I1Luvb1szQ ,4r)5M3J2q ˧H)iZ+5.dzIŲ Cmd66]4xt;V 4]˧1OFif|mQR7MC$ i![ŰP:˿C+4M1T;͆veX`ٜB_Wf~J&hC\Wm^2֮D6tG$I6.%ϱ֝^hDIuQiih2_LQ]7X-}Lf>"8=>eD_ĉd9RLUU8ƴW4DŽad:r0<2DO!MRN,X頨:ٜ,p,/'GOʳd%GǸnkhl" lx:VJsӴTm\)T/wwKTRe% ^Ͳ/+֮ύl')6`+zܮ)NIY^kEpv>sۿC~#nu9"\-YV"t KRZt: mi:łjT-EUT:IP@4$&bL& Csf:k:'bYv; GqyyN jژ_PUVyiJ'[ft{+T~ӭ1h4OAHm5mL3;\v8[bF8]䏵?S!yM2ׯ(&5ț>9k߹lR@ʕۄ/ϰw\w]v][v(x1/JO inu|et}tՠ퐤W AM4U44)ꃇ!I' ð0 /f8C#B^ؖj5gr8<Ʋ=}<˲q6Ӵ1tjmj1u(E"̙fܻspE`;. N4 Z.iXIvjs=Yu lRu}+ ISG c]DչA٣vqMp RKX"Ξ[]Or6 $IEt!Q!]m 0C8ft}=<_خm Y.,st]EET?ֻ2gb[.s (j#ϧx^9PBEIB0L=0LHtٜ\ DŽᒏ> zӴ6x ey.[gLlF:]<ŵEeZ!iXA l?Q4mZi1MxǣDQ+HVU[Ō4 yrSAlNa//۽?6ҕ,WlԎo $o1fFaycBW_Nkm%5G7ֿۿ-t2Bʌ{@DZLb6 鳟OqPTbIE躎e:[o?! ?X"eFFt=~; ^<j"I3,"RQby#T?d820[.V2 ۶1 8 fiL\.҄jţGH/ q||Y3jjUS넨莵n&7lRzzs//.z(:Y:^Vatn ]GcZ[7ܯZF+7ghgn@qϵzֿۿim >Ï~DDzÃ#>xXğEf)aXMMvǫW}½Ӈhi<##C9Ŕ<e$I<@$ibAH,%3ϞrB],\y}aXMlD{{w _:T(F̨FaTaFQ_͐ W600p z-׬x!^hzd.v+쯖$IHeZ)*VC3el6ƶJTVRjIJ c^QrK+)mEW2H;$֡ [jU*Mٸfo8TU㵛IU\_:o_Mۭs7qZ̦^rA%$t= BSu>̰-|Ba:p||aZL#:>RJ._i54MMq=|$vGf4>DztڭɈQj>L<'ASUЧc63O \^_,Whj/w0"W((*p=iXYmQK ݤE!~B }AJHҘ9:,B4 )!(j'WX./1u#./8PU<ϩn4NJemZ݆noX"\O;ۭER(ЀPÓ<7`'Ekϸ)R÷r̫ϕctSh)L֣j ^%6!sۿ[w k(M vu< :eq}=脕v8Q6iDQ@8~eXLS'&<{3NNqtxL|ᇼ}TMZ8lJ#jA.se0y۲$8>}tz##UnwPun@ʺNWlMc4Ҽ'j;Ww]wkUn`kl+&9ŽvEHێq/q`㒛&o:`D`Ek%\eu۶[fqxu ˴{h/X,WDQD&Hr^OPO54MES5T0d?kECjq\nXuDQ[MF+0±=?.b[Eo~l"!nuplueӧOy-Läj'X&{\2Ͱ,hL˧Ccz(I:)"n*JsSi ý>Ww]~ݝ,l[ Q97`{kܕ@]k"k|{_N5ܸ F.ۿݶrvÜK8xG 8x|Mq gECakE"b,)V!3OYK\ö\ 044U!pnXDA :dA&׼-lc1Jbt #1G|1GUtTUE!ƒGodQոe-tCI/k/7+j//.zS;Rc:t^oPLIA$$I\2[JB+7X*]Q1rKP:;,Eqө-: ܻAyl̾}9Y'i[9k˭[W[f]M޽ݥ{%>a~ B>x/3b&-M$I 2mA8IX,gN X;],˦0O IpAƘRZ93_#=~a:00Q v50킐$iѯ؎(ƱZK&=8 ^U-b˿+ \,ϑY^ʓ|/'WUQ4TTSTTMEUUj)  *ں]ґn.*m访mߕ.Ȝ_]SW}srooo>:&V:>0_0tNl>a6b0*:eN %f)jhm\2].1~0CEQLjbY,U3?zB%:{{GO75LC29;ht=$Gsppj|[vֹejW1s b4DT=IOl_5"ߌE'1(^?7wۿu؂hNjW F>6f:L2Xyn)q4dTUשR ۿ߶0ӟ;O0tS(i"iyOCkZEfJ3[q9iiWW紼.i-8F <)<]5ypEŨ~hXfc\HMO&囥ɯ$[z͓wM9L5tBwKJDh-HBh! ZvܴЀ*t5Ed|bqGm6;ZF{@TwgǾѾ 7BLpCG蚎DQEۛMNF,rYéYHxQ.(I,HPh-;5R~m]Ͽ& )+iywh] X엽Ht7>yKborsuk;G]V5b.v,7  l̿? 7@S =! 6Iegߡ(2," 2 @SU<7+9r\,!+nn8=}Nի5 -ضRu+Kӌ4K[ޖҢc_w>D^Odc-y Zecɵ1];oWyL ׾?5:w}% 8Y*L$?zBǤqaĴLL&# CGt( H3i(^ay1_N1t(P'g|K2z^j @p{{E*k=wWF?u{e<'c2nzC'/2,g08D>E&l B4"'XQUrm[@Wt6;tտII;i$2Wo]'b̕PciU-;j]{yx;]^a r{ wA}wzνe?zLg㺬+TMASU Y F4v8BS =}AGDqz4L8z cnoozЭpu}cD//P0L]eEU9=>q<`X\/8::ƶlW9!j\3roDD-xٜH#3ҮJ8??D]NϿ&cLnڷ[6E-ݷ=}RٱpW6!M7Qj9ls7;ȿB4M@-A1T)1q1|'0 / ,8y)IpzrFfs$q\\2NHE!y9'gz#$f8Al(dh4!Bf9a&۵#c^MycQPO7> w87۷ӽ?hT4%KJUj-u˚Meɽmq~ewza 5u)&koۭW6kKmC\ѩlnml=ϳuR-in҈nBBA{ m̪ ^6 M/^|epGU$Ym #ĨvtlJb1 zATd+eQ@{QYJjd{WoіF@B,E;ui6!޷Qm/ochWX01-['Ecw TeK M;ѸwBPA}ۃmE^%QW<}vI$Ip4U]0 8>:FS ~=S\x`0BT\7%^䄓,3pD }L `Y.Y~KGF<}/3tMg<:szSU!C j߬hϋV[Q֭)oAdݳ=h0yAPez<}(HvxY`6M@^H1X,g80Ljt L(p{{I$I)i`'/>C<Ŵ,,q\^ *)%( QwlEU8={sϋ!["T1m\q.w>CNxVW(?Ӥ\J/$*%[O>7MiBf$5]:%mw$t2dmDAz Ch0'G$I[}޼}8::F58x³H;eSPU=1XȲ~iDqxb]SHӸB(`Y6e\.PDYD{0rl7WWk?ŶL($M2NO0,% P ^~:_c.ڝχo![ =5w>٢cڮmsUq4ء5fhR@G -W=)zQ)-?_owAٱ]F!ސ3`1tnno0M,r$R CZ/Pu84, Q1_FXCdYx!(99>#39BUqlE,PTZ39:./XMqm;LFGn'lv3 5wm Ql3?4,Z ZXZ@77]ϿQYۙ[bKRrbǾI!:=ܷ{T<ǍܘWU{nkp +a>~Pr`/sy5f8?{L̗s$F($+=U\]( TEazxB(YJlȲp<78Cg\_]aؖx<( 6󸺾@\-0 ^oP>$"KRX.p-wIYfԶQJX>4)Zz/w>\юl>z)m׹=k/3eq;///kZ;YڟT2 0:߳D­g2wJڹnr lz0d\*PTk<{|%.EQ"d0s4>a^/8>>Wb>Ŷtv./_q||B&%?ö f6ka^PhܼEM$a%D5"# }TUETuz{DiʢDee"ˊez]qW,-=0~G8]tBky=&???4oINȱ%&I.'([DVfYlvs\}j}׋-Trm~a9pzpusdF:GQdDQhxj9cc&C(r9g>O0-0-ʆGrFc4 ^,$YFd^٬Gr#8)cfAR \::??4N:==dSS*7Cۄa썯OmQht{<2 kZvC0ʉeHuwr~Aaj9$(LFG,WK' Yb`0M7Lv5$ CT,&-V+Bb&^}ڬ  ?X 1 `H(NX+<yPX.zpHe@GQ! }> $F WWUs)٬}J4ixUv<$rb;VsuE&ZnJ0K5BYb&cqM_]x[C6#V q `^y`B`&1u!@ o.^"eq15ss{)2,0L\*QQ9n( Ō'OgnIqzz[?eC ,MLBU5!Aaq~vjDQrq\TM4M!M3l&2avN ˲6Uz%VsZdV\57]߶,4 ڭ'ysVIE;1v{`jh};;J)Lo?A{`{`^gm;E^(LNPJlEeWVIQ|)a8.r>'RLBTnn1 4IhDa'OcZX.稪VnL24MCHIAtv CTUO/YiY8P Mb2݄L*pr%۴xͰRrpeh͘/p$4wӴ2k8w./;=^e:_4"[vM!ZMӬMm_Mͻ®cq<sk{`Fy Aos:̎+Ue60M )At?y ϟ?'C6e,WK4Cò\?!+2^~OQU o/0z;%I c; -8AUsEQp|rix鈢nvjX"h]v4M'/PT Yx4M޳8TڮߎyxA)^} _2...`|)ٲr$hr+Rg=5_qe 2'y{R|߷ 7ȹo{`6L,9>9# B"I|>c8Ta劝9 G4a:2M<_!0 $ހ4X8vzyzNOω2GS4Ve9sA?뺍DV&;kt}ћw>dg<Ֆ1t4)Ί`gW$Em(U>l}ƕw1t-Ⱥ_K_sw͘#6P-#3TuwͿ7to{`6M0 ,&Kf[?&IcpqǰB ONA 8 ,g81՜?{M^>%/$̘No9::*:2mΛ񻙸ߖ*ܭso Cv~ާ\b MwaRۯXߓ{Ɗ{w7%z[+!8;Ai0qL'HYP9(ˋ\\H <}iZV FՊ( }~@Q,#&΀Mf٧HrLb`$9>9%K _|,/N(Bl0r>,B)ހ0 0Ms,&KS's^<bo5K՝jgf:`WHo}v1 N[C-øAn4wF~o3|Rw1t 0x%9= €k;@ |wk۲c(g?1g,KF Yb=GR˳E}4eZ0qwwM$X2QHj`Z5&1+, ^ʇ c$B4N4kFʪ֫N+e=F;Q;Bw_߮_/>AQ5~&iWE}VunMZ.mvܾqݿ9RY]w{gw$ϟJlel_|jAGxyYr7z>GUUds~+)OLGI`8$,PM"-~۷<~Gf[>m%if*:X̰2;ұl4U,0t7 Ic8b8RJ֫5aۻDɲ4MwmmĒje,,߹7a?]<FQWh"jel%6Mﺋ+wqW?}="w>jyF<%S,[iRyGZ^FW`uVٔI}uNr~iߚ'o7%TFFUBV{[W> +Kh~WQI-sީ!{u 5O?{a5"K3NNGFQlVkNEF1k:Y2x{q|~K۲_4 Ŷ$bQ^bD( nl|HMsv8PfS5(Xi ۶0(L`@!a8FQ,4+m+bێNu$d͈4^5J3;?&?0oa?!śoYt{)nvQnѵHQ_G^&:6G,ضd<'<_/)  =w̶m!$ z^q7kM B(^ !aa8l$BL,'f%:G?0 <# H_E!.^0YClAQ-ۣ( Lk?~lA_ y-Hy%#4U!VAP^P2GJI$o3.I=! *ގ zO(_!aNeY& qyuxr1Q<+l蚆8 >;fؖY?ϳ ;V }zXE2ŗ?śLfqBr4ϲ{}N a8gk]swEؖ<|,߶G?0ݰ(RBQLAI,?_:-Qmi,H??f>͘Ny)f_`6EQg<9&  Oސ8u,OE`6a0N($Mb4E4 v,0Dqb1G+'a^/0MqQ`!H8Nx1y^!R?7~X.VضhT"6LnI0 Ӵ?O؎CeeźXn3eDY¶%z:+vgIB?/^?Ir~ESתbE)xaZP^[Zny>yJ:>ww]$.~`ެ iQ!( |~"T=AQw7`4#)EQ\ IJl4!7z"c4\Jp Q&"X.V 8@U5Lf6űTM)cRtMgp~i\Sj5G5nolu'aeX;B{هyk!]f@Pϲ ؐGMWݟ e(U_hU Pn9dZcd$W/o׊Bc|-J'U1hyJ;Dtw];.g}or}@ ,! 7\\y=TMEʂjdg~^È^|ȘALˤ9BQMY9_86q\<0ʸ8Jm..^qvqY.U aYDQaZ$qNNJYK/c¨w&q`/9:>f|wH-nu],EUu@l_Rض>{ׇ\ YG~L]ϏsʶDKYb7`0²4M#CtMY 42-M ifr}U!IS4iؽ z=nS'h0>0VI,Y]>Ǽ~[? }ppa0?#Qe)=Oa1ωMSP -) k C7B0_.(\A5tM PXCKB@VXb&xLz̲$0,Ƕy 7w=)aoV cLDQT~՗XUy1i$%w ,n1ϖ?[.&Yn;c>2SD^V뺾3`7sNvيggLYzbV(5?3~ri迻c?n{euu<˸s= ²,4#*, 4ˆ,-Xꪤil>GM1x̣'O)dQHY&ifI&5$x^)ino|qà7IJ o@}M|96]|tl6k4]%qrra[B-fz*)Vf=A)YZZhJd]|-oVKm iۙ,.:ڧ m7ACh`lU2EuNH4k]Jp7[a;?sz}4az{(BA,M4 4v7pY(@lӶY=baPƉR.uW$5hQ/F2> N ',3n8;=u{I5يieX%kͲrr+O+,E 7޵v}6ÏGKBTB_6 ^܎ o{U!E[ )X [(A/N?N@ݦ>6뿮?(% f_ fu=yɌc0XNYLUggmMYl6j2HӄpS+5$MHӴ)sBX.5EQIEQ,G,WSz]ӸhfK^ p=,˚lͭJktk&m1h))e&nJlZf~V#ƈ,3moY;%*Z7+ذ*ݞnms-5 \ qoc럏 ?to{`(›W_ak`&^]7Y]5Y5HuMU1,KQD$in0,8""V%0㈷WW>٬Xa^c"˲q>-Ӵ1tfmjt(ITE8)[j-ܖbOȗoQ o.-K~aB rnBGI{l kZ=yjhIӔ4xvuc:>0f>q\yNA$DS59IT=BP$Ec͆7`Y0pUQ(`&np7(2ESYVLMI"T ' ww7dYae,&l P-ϟ':MmGCGZߍmvϦhU_TʺBdYV-uUiF%IF^g4EEUϲ|eWMQP)SS>wu[ Vݫ _..-BQEADV( \)NZtz6__埢e_d|D$Ln9 6a[6GGdy%A.  ySDZ (~C7/(dj\fWDaXGZ->%E$:i$ "N0MMQx m "+8;{|vic~gAph4rQvo@c;1ub,?w[]#:e{ Q֛vPvmV)cۥfт݄5hch-$UKl㖌$Rc:>A9r4Ugrt,u۲ ~oHDQ@tӰzQv 9ѐ0J9994MPUr9~}BEA~U\ X.,s6yͣ ::EtMk%n>vxBFYG;d5ꖯ\HtwyZRĶ'Eٶmlw]N$My|]Zn4M(MP0 8::4L,a+4#C\pX#"z!pss)re٤ifh%y29:"Ō'ǘ s3Ɠ1q9E^>S7a?-uz@7 `:%NNO*Z|.ytCؼ%v!v.פ]>2-/F-TERF[e;1{G͓5ڶ=;U d꭬U2T@h+w*Jn?~uIYV*o޼um>F7,d}lի0tvZzwwa6a27k[\׫z {OIˋ LB(*Yپ20L"TmhN%k)s,WBŜٴT/G ۄtTkdoKB(znȋ MB0iaY6QbY6y^N$K KqYPݞ$lo.QwcTZkL_GB(7M7 3tE?h0b<9gO'Ia9dyF=;lӦ?k 34]C4d&1G|j($nb6i(Giq7\0@H<(r)^?' .WvP;WZ[ .f:cGn6NV{[}r+fۺn^е]Io :,=/FUԨJe|6ϩ.%ޝ`㓦f z# ͤ) mAH%/> $fY#DY(q=f ,=\_]p=Ϟi$IDqh8,x?_0 Z<P縞, )29>>c48}4MGbw8-yK)m\+&GuocضAuݶP'/U5HtMo꾶Հc@nf $iI\iδD$[7u?c럏 ?ȿ(;=w?ȿ=̶9IJ]V%=oPvmTUc>E( ,0t<6MbۤIp8׷(qD**^Y ;ʷ`|՗0MPU ){/SNP4  r9q9Q8XD z}$!^&>R4){Wi֟u* OS漦}Z_fʢNNzR:I&)jT^*1JkgRQ*cZuܧ`_i;(cm:I6IL&8ly۟2NNOIa8:²$Y78Gel5Ǔ௖ IӔjh8p/@ 0 H<偍9'G$|iJDQ&f2O Mӹx,KQT^yS9!#YRklXX8QzaDM|Mh!7[Y T?69+Q 񈉽V_U {7!rVjmy;vdsN΋l`HNwٶ: mc:.pk:yEwDe0 p^<}HY. V%!MAAwifYS WI?"#p8f Qpu{GO8UL02-E7l~e:(S899憢IU-ߚw2[DY&p;ϒ&xj_hr;Jkbew\r}&v:Q<:yw}6?Au^-GhFY8&R$W|稏44MES5NU(h|LMAmepB|3 d:%b j~7r" pr (d˗/yLä들13X/GBZ.,t`4˭bh-iJR-2B͒˖m-DŽĞ"BO1 5^{;@SJ+oy؊mc"o W^~O?>;.Lg0z}k{FQg6Cu4Uñ"S71m0A! &㣲,fe:Ij\0"/$ !@\&aEfzu<4 UQɲl)ժ|X+znzEIH( QvJ[fISqgY >~d[1w]2T 9iٿMi͒TiyV2C[+j1 Z9S6 JB Yz5*m}ڭ'I>=4fMmu_3$CW<`5ф0 ɛ7_=xiDqh,sl!3 )4ׯ^c&e3MRbe]4K I8Ktl1QwFjiZEky~yc[.( 3<˟p̛_iG "q{_;WyٷR"cd[EQ z|^y4E#+( ௖ ,cB~3>zbd\d!tܕ1|ֱuxhk*jk )vl`5*-a?؉, Vs:~S{FBCWOwN@ݦ{ɣg0/1=ocwnLI,BE )AAQmc.y]QBAA$zjı,? m3'2g6c<>ƶ,8,Rb&a^x3U# Cƣ11A`DS($Gc._ce'S?qQ%Ttj3 erkkX]1t<^տiK6aSw!vE+k:i:^~/k L:?֒t9Ӛge(TK{uLg6Z;qXMwpϰh_;-9M[[T +Cxi˿m?n뿮˿1쟒)aASI`39:f4C (uz`^1e:QS4('iXP TuzVKtUeaS9E˟~P2a8aZeQ0+ߜ"P@(^oȫ7?gϚ7^vBeT߾Ykǵ緇g~ZzД`PZ12Rp*J+QIjybGc TfVC oLwJj5Uq]zn/I6A|?.6.)3$e٪0MHSp Q e21M80 UӉk0 Img+yZL2H_}ؿo ]ǿ\m\].R'Y7CBnKf%4XuYwJ{h$DV4cD,&wo ;=w^J{`H\GfLo/O&,SE)maHpH2' Ɠ yQq.P$fZ/L]78@u6OJG #NO1L&45@ |4M!e~֑g9Ȝ )2e;oo 5=E9bj,3lnKVm"6IS4A݉*IECh| lljw'g\WhѪP 7Ď PqHvM*-vz6_u{A9 Bt$n.ѩ_&di:Dq<{8ziDq 0tGU5lv"_g_(eki2ޡ*'8G, GGؖ㘷o^2L~jf7h*\OUNZo;ވMg/[\'3R{D ?t]roX4W|l巽}pt0ԞV.h`H*[CM*C>GCMu??a̦i e*8Hl( ȋ˴"b=~J$(Ip"$fq<(BGϙ89>%1 fC!sF a2[Q 0 خzh'/px|YOq=.޾پ-Ź*ީX ,So1;\֔o =p e#pe *~} ~޵/[:NRBowO4K#BJ m?nŧ4UU#t]gZ`' ^u*epuĬ6sb$ulf)i־[8"2Lb8Z-Y8K$bٜ,Om$ fZ.y?X31 ~s|vm]q49ESu[9=?%|d.n<%di(^l 1U;,rOdJ7:wŻFܶj^!wܹ}wٹ:"=piI˳܁v~qwz6_u:ك%a)ekWhZ9$I3TUg1*a3e9f40u1_.<>mkF:Y2Oq&e0 ȋ YHl-cT2 r /r}xm9~O_zx# }BZLiiB% j$)q_mY o)_;G*/N̦h. ݳ9vmm]e5Bʭ~j Otz6[7.z!m lFQ\۫] e`&y dyNB来򗌆l6E77S @U5&S$Le8l6K~/8Ge0E!A4lF1Ap},1 4"ll"3$q `&"a(씻v}4d˚%/WKI}-rlƶlvOb8`;n?0 Zo ^Fojt'[4[L*-=@"6\u Bzrj"m_?=am79)8>>%/20xf)Ih:ap|t2ػq|rx^S Fhf\\3prb@0€aiY\^,2`ׯ~ÈO/~GGxN7EU(7k(d<>󢴕VmTu+@=*_C;۽E =:ӱKb+wJ},꧍e3/n*oNSVZ6 HQ,tyuz6_y`㒛%=`͛7ض }of㣨pʲ]7Yr$ML|P r45 bp4II$Hӌ$JS$k~7iJ&$iFR_#+Oq_dU{Vi5w[>(z]n9&rFm0)$ le>BZN5S51qeƶ@ݚl{%uB wm]{1Bnj1(RC*&2M]/s3Ecj]Ң>6g5 T)V{buw}6`H&yr{sqUUK;ξ)d}^e\/-K4)ZU.5k<ЬܶJپ +uoUKR[VIU7wYeMk:ֳ?~gi=b?3R_n;mJjjPuw}:0ajBU\ǣJ;x9KTUq]Er}u`8h|°?f^p||L?_}Mu|m;蚁8\^$MxK=~VʳI0YW(p4v\nnޢ&Y\E~$MSy%ҔEՉ&DUr[~ՇZHv#jҮeA.w[Tq' Y ]:Kl0'8,+be[~vDq|t]6>0o{`6>9\4QQ2ZXX~\ΙLb1L )%i*jѣd8.M+9I%aWl6ka\."OY,XMD #Ɠ#4Mqz@AU,+z=^ t]X!!+Kgڢ͵GnvI;a?4"TU-;\_jx4KX, C@i.$pŤjEQHLիp\@Q5;`Zk!a2 _ kz=8"O3 ^c\!"k>~q|F֧4W/wʎD^lg*o㻎EvDzLU} -bks*~)vٱ:r={lۊ=au~H(m_Ə樂 f!n^]7%R]3Ɋ97Op-lWh}P␌uEQX,fזh͕wp|4<./;=w v2Oe:<ϟ!Dz]%aY.Ο_㧨oOxnBU㒤 a1iaq9傢(8>94F#-aYPuYXq40 `<>BQ5drn4-V{PjB;=Mǫ{)w$|IJ]O͖#M6FP-[[!^<>KQ鴑엲sU^OJCn÷:]/Zhp)*lNFxQZ9;5>wV"g$Q~??ȹo{`6L,9>9# B"I|>c8Ta劝9 G4a:2M<_!0 $ހ4X8vzyzNOω2GS4Ve90(A?뺍DV&;kt}ћwɈ>yʫ+v$n4)n ovB+2:=[Yk-^˘z\ r8DkL6v%x Um@]Au]or`k$UKBiXHY ל5/bj,Z}B#MS às\C5$g_-gH ]Ӹ%S,u{qLhZ97_(*A8JPJENeq ,s?IiZl6la1'diaX|EQH FP޳@X`[.ۧBz^? =evwirvvediJdy΋/X,C4^ $zmb}Uoο#d?/oEZY> o[ c۲7 ϛw]6>=̯_]:5gNUHUu@((el6>o޼i:%3>yh #M3VEU˶ȳ|J7`:%؎C0ل'dcZNFelGEQqt]u<~y3r*Zٶk^"IӼz;N)r7ڇam6?49}i_\:tnxZ!y^=WXk{?xk혼Yzxmo]^V'o]^;:>ww]iqAٱ'IŌFC1,54Mx}۶40b:&N2OYn]7q,I]$0 Ӱ@[@!pu}I)qjOq)5rziڬVK )~HH 4:QLm3坢;aj VuNe͵Pu 'Y3~3tˋf9 (ݼ^.ηĕBo{\.'[C$ߞYNΛE?es'w{|O{?迃G޽?#;Ŵ @%*gS E:Y"2s:K3a ˶0 ܠ**i>k $IdI!Eat\y#$lBpBEBQEj PmFd0PH5Dz/_4h'@]WLS*]C:NJ3?0/ƿmC~x-+CD[l ?oqP u֗[:je7rBl`2?@~w]ON{ lBJIoPpWC`p4&6ؖIYOJ*t~axG #&B\9\`4Zؖ[F1=GQۋ<~  c8N#P(ׯ_29:BS`(Bze@ySr.MZPo$P-aIA)??z;l!AO%\_rAŗ?śLfqRW[sTӯ7nC_wnSLQe6ϟ=;?'og7 ߒw=pkGl6]c6i6xr\E$)yV,ϰ C 0&xހ4)KzSLec'; z (m$wL=ܸD78=?g {DQD8(BEp{wgay|6EUT4]CQ&c4!7GM5xހred&XrBQՊAHDQiؤiSug ؎r5Gt6 bb )AA0Z4K>-.^fl3ZZt eZX ;R',04cWCD}M<7mJc(bz9ԊRc|-J'kl)W?=OG߁sTUtzq<[}<ԲX.8=9Dz-4arttDfStC0O7>ޠC($I@UuWoEgja7/z hOH$ 9>>f`B˷&XmYAaHZ>&m$+ hrp8FsYÐBm;[ު>ٻwl{JZe#?C-Muom82q6k{|Dc7l&w$j̟ ~AN% f >3ހzEFz}>@D d:EX&^ VhaXKfI8KEQBosqGL&G؎r9bXT "b "#przP@t8&~aGi( _c־a訪g~4˘f=\2[ -}vdiBd~L>?۟*ۖq/M`rGRf#WQho*z#=暭syHMX 4O??ȿ;(;= f#I $99BA=ه#p?D}xRJ֫Z. ؀3hr4lnLʥE9˶o߾4 ia'G'hj4-TU''g\^_i [^i=/aهXgYoT;7?E< C/m'*Jnguioio/]Gh{HGdYJzh4zQs(DTlu<E!|4Ų,NOY'\^^8}\%Xo YAAJJ^_,fXe:d^ dE%aB!dY۫7l,KHrplGpsw1c!f`0ME_}eZ^,K`9vʑ[Ff) ĄvRO/ol#@Un5uM9SY4=kLX}>1gYzXRo|џDžw珞vzϹo{o_e\^]iaYIg9q˲0L(q,UIӘ|c%GOG!RA]4]7ޟ˲]w+#NfDX{/^kZn߹ZrVC7 hԚX5#Z?ئK3Hl6A5ܹjloO>/vY<5[S"ʢqYXYW䋊Cr>K7iKWl ,KȢQ Xn)WloAjbIcJ%Ī I(I?XWo:/ap]zNO\E(]& &.E!uǴm!B Qq"YK-,j'qiYk\B+EzhVwt-4MH4-)r;>''G⺵Sީ1F}.^N]+i \r50HWo6{y*YJ>.\xmJg(yKry~"j=t\_&)JX. cyVeK*7ߟn4;`NDŽOFt6e6P ,MHeJͫhtz {*|݋ض&fPUQi4Z$IL0 @]ӈ$1M( 2#vw:]Q8P˲Qhܣ65:׮>ffSV4ljj \#MS8u(Dl9]iI@Eh(߂0䴘_ߺ1r.H w-قyEÕ\soQoyɲ\ge;ϛD;ӯƿ M:lMs z(ܾyuh6GE/]C4h<2m6jl6HҌC&b i`YH8I \Eax2±ArWǶ\f1ɐ.p拴[]\ףa#,uǴ[LMf ҁ%@)+Zz8s!b|PVGՒ_O+8@`!dV=ur/K//e?&IeWɥgk8l8N*7M\9C{.N,s4MEETnݺٔe}ϻ; 2U袀}yȆR c{dyX~¬@W_&*F_{4GU4n߾xn8 H۶8PxCM"M3vZ(8<2=B3V., |JK9aWo6 lMɂ"dci^!D:& U^^]XfX^;Ng[>o*{ڜ~]IyX*rE_6 g A)3vwx2Vv0Mp7_d2b;㠨 ɔ8ut0 ~0 8>> s`qѨx_ nߺl:#I3,"RƓ Qby#TAݥl1Nf2 ۶1 8 FiL҄lիWIwn {HgU pwCyfb{+7ҩF.O2^yYkqk::-6:hןgh:Ϙ; >/_X]¬_Wt;O+W3pE裏f9l{ma[.isC)Y5˧k׹t`0ꓥ i% ^ݣ ,Ӣ&N1-M8y5\u=&fB8t2""4U0 6-Ib,vj 8Ʌr^\ؑ[n&, ٦/(֞3'-OX]yտE ꧴rk+%6qο5vry{M~5U_ouk0] ծm:n BQP BGhFuzijI)! wo:.Wgg{88:<0 w!LJ4mEq=O4i1M0ӲQm 6iӨLQy c,Dz^ 2Ҏ/f{ׄs.埲R+<赥DVS(kӵOf J^/` :൸=' ,Ir;f:" C,K͛/1"ðKL[B+Z\ sZ_mQ5 }їU(g8u,n. n!"˜b/rH6n`a"\X},ϲSE\yŋ?^>DY#o*M*7M\?$!zl4j- $ QmFI}=q1MB!sףcX? [4M$uWsxp^0r {H%\%"Z6GIʥKWgNM^x繀`0aנQij#S`ƣ?d:&IRGf9(,i EQrA?Q׭f F1y&u;wo$^@HvIuAe_zĢf!rxB!˧%Яl G̪lL,-_hB5}yҧ:;kȳ,|]I}YQ_3n0N*7 {6f2gY1xG4MV4-Ɗ>B((B ]D[c4bh"sIf:E10*NQ<n|VK4|P81Yz~f d%FC$)IarxxFMm4a8:ڕk\r.$J\ i$iI/\^򔬗vS#yy~Aүla Pq@]ʾ+E(c;7^zK-)Eە+y޿ꔥ\~ӯƿ M?2:5ۭSc4PZ̦&Y&9::lalem] bhRrxrFiiBhy#d&\0^~<]ŸXN`0q%(b6l \堩*~lm@t:]N 340H(v!q.Ӿέ!VVDWo6kT/$,%-f.`Ec5:3~-0&(pB?jn6,?ah?XWwͿ[?;\yw(g[^Kzo2N*746-:uk0N'̦# âV)'G;]$'qwKWpDa<l5Bl3v.*pѨ&YmQ ݤ^oE!~0C }AJHҘ98>Xi`ꆉj Rc,AQG'GGGyFEF,Ϯ4NZֺ%EݞIJZv٭X܊x+7`-%KvbFVRV,Բ 8 |y-e-XXk5)X\u]3 NxC؎d4bAF G}v0Ld訪"^CW__qNy^N@ׄT;]y۲+7ׅ93,k:u#R^u˚1.UK/vP/,bŜ'Y>6 _q<kf v'SNz= ä"C$0 Z?Ctƣa&W/ZMSI[7owp8ב2gsx)ape$A9^EGzJ~EXWų+WI;m:5\I$\#MnݾAޠ^oM,&gߚB^UQ&PTBhl4yLjUQhyiFf2"Wk$1IaZوG~1[[(?e[[]r lJvk54],f='xxpЧlV@HA$$I<|-v߂/{:{KI)n›tSWo6Eq٨{[og3+ÙqNry,}tX^=[~i ~[fUK>_ѯƿjP{d1oݽMkh*<7+?Ν[tIͫ'1Ib:ݭ. LxD!N&S'&1F˲i4B@҄0.n1q"eNbǤiVw"O"xRJvvvt[}TEötM'|re $IZB/]sWTA-4]^(JĽ$ xUtEPsb~l$r|1jn&No* N?_ѯƿj@o:r֡~w} }:]khF(p0,%MSumbZ6~)%]KҘFIXx4B `FEk{#L"s4]4 \֭di8dK%#ϳe<ːy>r\+#<ˊgd٢}/idy9=ɛ*7FUT4M]UTRTTMEUU9UESTEEU5TUAUUEUU[U]sCoa. Q:)ˆCF-/ޅɖ9MeEӯƿj?Gy|β0~@6zcnҨ7C 2~0Cye\>HyJ:y5jyǹ/<#<^ Bn&gpKloo4]V+҄Լ:YJI "#ȱLM8>>51L׭1PtH[k3,FU4TM%|G4lb45~@hN0,d.j-td̈]Q0q:2Ϲ{tngg)ȖeϽ\ a>BuiZ,#nڋbAy e_ dL qIywX.G/n^'N/C^>܅+ SjqkU' 7~5U_o:oxd:5T I`Y;h!lUw.{III~]#Ѣ|k7k_/EyV.}C.\zqһG) czXbE\Y9`5/My7g5(dQ0IϫwaD1erw21M( 1 UӉ zW]2▍hijcO߳bޕz0_-R6ˋƶX'ňӯƿj?zךM:5 `69R8¦%Re__Ųlӓ:2WWOU[䛾g')N\7s ,; u=._ $qm;ܾ}41 '%QC׉;wn2qϭa!aa4x,ˉ㘭iFCA<Ŵ,4q\]}fx<$M3&iuzz#MCUURJF!ay. {a,/,ܲSM./,JgWE>+7Vwus齑/%/\wO(&qZ)qdi/M$&NR3u:[,-O;|\(хŎӿOj"W,yǹ!Y#|OsCXCNQ+iP$"L,u<00-,F2hd QRI!?u=,^k0A wh؎x8q]\2NѸGѡaaҌVd2`:baKIضˠ+m+a^Sbvg”fbCy+7J # n[SB-bsX:^{殂#th齬(x~.70._y& 7~5U_o:V̟s%C%o{'skt[hFnwr qprr =t]c4bj2 mfe: }4^o`6a:{d4cB%4 XiYFCQ$n4lۄQ;{ŋ-? H┝K[t@(9nu@8BR׮MKKZ t44`0!$a[Yh4@*(*'t[rn8˲ À( mN .׮>i'SNt 1Qv߯}v\ g5bb&߯}f_Q.#X=R?T [2/ cY9!s^*S3J}.[N/v7~5U_o:0)S'%ppptDxݻx^݋`4 #"td̕+*yL|aj hB($iBHӢcb:8q32K9-=޷k_.ft5{m+sa{.M~Yeidm#`Ju.b`9NhsX7N|7s ᠏iYضCgŏIBDt:ۨB%g!*5,˞&ysw6;H$$M0M MS9>94,L$Z'c.]i9]`4ZQ1N4 !%991h4QUWb09e8.B$HuRh!/bSJ!S,炶l22,776?+^y׾\zaq,-I7!}MtmX(ӦoԽX:e9g3hF/ nypM_W>?DulfvN(JУ^`R\t#^̦S,e4rairM.^*^4{6Nϭ1Q"qIa\ػppaZEŨjh4$s1 UU4U rP4M B;]UCnu-FSYں_yeųe"ߥbٮ?\|ߧ}feܑ,F30(,,i q1~ye 㹂ExĚHmڝ{V,HQU.b&"u/tT_5UM'Ǵ;)@J8)0Lt>;v`8rvxܸ[\ף0 B]0ՇQ4MFY0([Hf9zGtA:5,A $3hض%'}\ۡ?衩&&L )gˌkao1_W_5UFğif[ۻ~@ޢhrwm3c@0i6E~=UbzbYFng$L,KN&؎`zAd2׮>x:UpMh6 Sy[_4 "v%޺d}v{HS=F*?8?KƨOB5 <ٲtxn!$4[- /OK N@lƶB^,;; #Zi`5F<ϭ}Z6PIBoHG7{,^]`ڝ6WWmޜ/^{bՓ'y+ӯƿj?o4is W&rf"6Ǟ`4**nE!dwgȉg9LZQUg^%,awIh6"˲1T,89~H^g./^$Vt+6ш$5QUQXv;ұl4U1t N"(l'!RJ& fBDKӄ$I.7-%wY,,Vs9w絯_η?y|%_<oybIwJ/ae1֚ tYu5>vqϿ˧\ZG_6s|9MRFaX = q5NNgF;}ߧh3QˌF,4l2Aa.t)KH$qi,(I1贷鶷OFhmܺu0 wfd2&IcلLJRJ(Vw+$i@!,]L>@ȢosX˵sߧ2r& 8sMɋ;;¿¿K輻G~w}簸sd\ɥwå=+%\ػ%ϯ,U[*ɒy^!}U‚CW/7Il4E{dd:&MRvvwh[Fvw.2N$Ίj.AyN%-޹`p"_84 Ŷ8d2(*ZhP M2%c+++N{:oe< }a@:i% 2]ղ][YrW*,Lsm۠nq%^@2sstWoF65mBJIԼ2Mg>[[z5P7 Vߟa[&Q`Zf?1-~Q71 ҜfR2Nqjwޡn3ؖ]Z65F瘦;x bg+4m&Qc;W/fy­[7th~jE@y )%IsBY%/x+?5R/o$g>O~ 7,_ʜ{7t4M1-0ڝ.VĄ'#4Dzmli ܹ{z~r4OSK505eK''3ꮇհL4Mev_y뛟Ϟ h7}foۭ3 >G;[di`CSvY1q"H҄aA7 t@_@ t]C7⟦KQ\__ܫ6W_1bJѧ6 UWWWo$&op]|Wc2y5g9G1Ȳ0t)e-4M/R ˲ 0*vL'dIeِ$I3,a<Ө7IҸ^(˴Qenq9ٌnwVu\t R4!b`;.Y*GG]^uvJB(uMG3t4MЋυPW׊v530(Ǟƿ(Y___yW̿a`><k3"epn2,sD"le9(`6mwoiQ5Gˈ|M׉0HH\]k*^ ,{C4]G4nߺnL,BQT8`/h\o3չ0󙮡օg 꺁`+2M\>PF'YF_Jm22Y&m;ci*ѐ4KPT!0*fCEk ( Ca.(,ZEn?M w{iaEhb&iR? SL$I똦eZiL\tk %PjǤi2ipSA/?:mքsgEҤ%<&({Wn4mWWWWo$&︯`"$Ʊ]|'C\%`[a2 LF$ITX喃eZpQ~p{Q0M \+Ҁ3,'s0,hEa8#RtS'rEEDZRR72# Crey5!vq #,hAe[/S[ rvjX}j vZ?/6't]V$-7M1\cohmǭ}a_6ݽ+3H%MSz¢jGKd.ɲ I"Ȳlֱ}TUDzlf Q7a^Rw2HMS4ӰHrPûa@u\,acXs;5h6mE)(B#c|Fxn8)zݝ= g>VQ|Z- c,7V]0,y%Er$%4Eft/RLUWaO~o+/{&1{tkg?̧џGZ 7*&_`\ǣh T~ ^Ui{d2F4, M7M'Iȅ DIB(${5VW"BxW3c! MⵙBxd>~w{F~\x?/4->g_"WqcDZW{C/R/W&,t*++W_ߴK1n#h0Mf+](A&2h4: G=B"HM&fE෪J"IbY F$QiDay.蚎IX]|BF5iPչva4Cg6OGx:!g3TUVkzi.wk s>Ers{]fb'nS$h_K_?UWoh&_o[ }C|O?G쇱-'|kWbw[k}^Gw;woGw.<`4i6M?~6z9.>`ך(ױ]fM?u ! Ӥ^&˴iA I3NAhi$iRC8!NtC'yax2±ArWǶ\f1ɐ.p拴[]\ףa#,uǴ[LMf *I(^UU W*MYIT$oqrȕ{N',żвуWW?(坼 oĴ,>̧y*G˱ZQmߵO}ս@ptmlЇǣ>oy_-σo:dS<( (TQ7ɲ ?u84h4 'Ŷ\<'ct("ɳ vffaZIjFCFq\TE)bf0L L4EESt]Q(r Eprr@icAQ&qys5>/7,7-o0PUUQ(*(hE)i:_JWK@8,I,(G^ÊPx O>W=W}{?=[?7~÷imjK k [ʯoͭL呯6>4*WW0G&tB8mt-TU??!eNEL`FE<]q IJLܹ".\"GS,ӡ?<"<4m&1AE EEC V?a<5@bznEUO 4Nh}Pf^zEQ贻 =^mɘƂRTE]/b<'KӴXJnHc&RyI ƿYoVW?pbg"ySjb^yѯh]zrS_?4TNw(c.ac[6ApQ50ɲ&nz^T V L`$QUh4'{Y. C)sxY\h4`45,Rjn?1OnuFI6z1y 1Mk׫)0Q ,Ҕ+ 9_1wҹR[d!__f#jloݗwo[˯G}쁪 F& &#< y'0Mkɿ" 4M?/,\x>0M8- $Ib}p?zS/{#w\?l4+7JUoj+ cEp]W-8 I˲À<+*&S$.ՙ?%͊Z.4]'M2$.f/AqL"M"E4 \Fաh5 y1JGlwu 2a` u4IPUE@ Y"ޕ d[Wf0߾qe4- g̦SlzQݶmrsr|i&flBWXA80B(d25#I#4,8IH4}P5tڨAGa =*-M-J-N'SH҄tewww~x(z* BY-凳<$٪f'kҴJLf}y?>.7<{oNo#m_"߹{|S,c{zn/ߧ<.?ỿ.?wLx4Z_Jm2+3㰨 wx wEQLF Z#o)/]>F{ x0; ~'⅋i7JUw\̣QBEH)yF#$²\E"8ܰh:|O9.iҨ7M]ӹp BR4Zmܹ(FњǀkiODqdixnDBa:19)a:I{05((_GBi Ub[n= Gf\XSš8on[ ')uW]M'#_7|ƥ??9u{z rP-<?|[5_JU/,8$2% gEf ic&΃A4,"3$a()e3LPtxQ5uݣj39:>±v0Lt*q.QӨ7I {xXŬ`A0t@p||E`c4a6f񈣈Nw,Kx2EPϗX}QKW%\iJf%$I2{zF$ǽC̟>nM7ſW0 ~?Ovx>Ftx߆ț!m39BPH'}2yW ˿Wf0gZ$}4&$Im;XpiZix,})D^Z~H)ID~~ۛ Y7JUn2y6K G\| Q G}80Lt4Mr3F!Hm{:y"sb,@(dima@l:!I8ӴQu[^BAB4Ɠ!A{&& |j8W)bTR75 >Rb&ASR2ny5.gZI`5@3 4Xd4%+fiPqWZҿl4IWWǓJ O(5)%BWd3ge]d%i A6NS_G?ȭ=7G`As=|ޅ 8 ϮXU>Q'?㭨_? 7G1u iЬPJ8߅xuTU#K3-\r;4M"MgR24mz#ߧFuDzEUL8PBQH0fQH "(F4 'ex(BqPhi$ID]0@QUiɈ0 x<n \U JS8.CՂmBduJE,(ߴ+Z_@ܳ>aov!|3O=z~wqbRxf?\~縨if!Η:4!/kJUooWf0穎OI]7ך$YN+q>ZMӨyp8@7L>e"뺄QHF]DU~ZAΈ]7N'Lg#d.qI0L@# fSnq\,4m("bdy+h`CBLgS1yNGsJXy u!YhU4MIŲP^|(EBh&L>P=V}g>Ϳ9z?B~ .'L;xGWᛮ𞷾@{ '?zY ݢ?_6f~es7qS_O5yhTd0,Z=鷼78' }..?z~WH2sQxnܲ! ?~»zY__JUZdLh,KqɄ$h4awg˲q{<" #:ۻK]uf)aRj؎t:A \?0L äl3@l4hLgc$FQ5/M\fXnhܼuPxk&ɘVfLt]g5j߽EsFqXE+%fRRe3v7ϳJ~F㿳[_g>Ϳs/ >GՋ΢bI'|=?POqM~gos@Pw}JwE( M?Ƿ5.TWW^a p,bN4ɲU0uzI'I eӰ8 PT蚆 t@(*;woUS(BYc&I0Hu,QJx… 4['B''Gaa@K*h\d +AM)]͌ׯ%iS$<7cBO6?__}mq;?}J%~3ja[/r׺OB4Qʡ%%( 0Yqm[zo{7-]7+7JUo'yFޠVoa"38 ve̦S(@ʼ(iaX8jܼ[#|]70 >{n qlzj %>YFIƲl6U& 5%r(;Ϙc(@ .+ȼ󸮋* w8QԲL,lb@YPI2P2Pvj߸F/ׯ?/і>Kx;Y(ZSO>ο>L^{o g>1~s'w=qߢMߋs[ |} 3}tڝ d_q s" ;Н!8[9rc_#c}qzy_z >D_Jm2+-}jA![)IH\pl,ML??#|:.a2L(Ƹ Zag9q0k5t0,4U#a:3q$EUT4ﱽx<.f0B阚[c<g9ibQqSY%YLd^~qbo 7-v.ۥ{ܰ %H=PՍ\_y2ÿ[=?E\8~߾ Bo}?ĝz|Vg?!M.-y&}.g?{F><蓼ozxⱧt*++W?q_aHxL1G[$o_ǵk\v(p0,%MSumbZ6~)%S4h!0еbEk{ju@NH'SOOTo0& g]b%BF C7F*/~̨ju4MDzL |G1R jhJKzc:.쳟٢hk:ap zq,w]ӱ,lJlme wc n ÈѨ.Y nsuvQU4Mxalǡ@̕ڼ0✐ӈEk/%XmH(HxUw~h428:? ~ǿi=vk&/Ud^ҿGϿ<7?dQt/}j7=7YzY7y'>1nݾQxe"et:;iBF}w_Jm2YvO|x5Mi4"9t7n^0u,DUt]Ӊ,T)ecYLJTRT_,˩Iwm9hjA;Lt #|`:A&e#$cTUcψ%iq*i:Qi*GwmcN<0UtC[U!osB:yiϗmoSh:iEItv@׊vڒL6s}7p{Ȃ\GoOua'7}o}?1~##oBuKOtg|k~,aq^?~0 ȲG{_w񖷽wo /GxDZ7*␌f}$I_H8gS:-Z654 \FpƓ1IaY> &1B@ ki#E(NNp]U 4Lj:Yb6y1 P)<³B ?;>ql ±靜5R,G EP5yן Y {]xϩm/ɼP/^[ko,?k׵WO~F㯫oo[=>xkyJ-?=&ys_u?1/.oumsOwA(0/~xC>=|3|۾.W>*++W2_<Hci.$It,,Q4crcVNx4q$]+v!aXH$aUQȲbQ"1M )%5[/a&f)%z00 r N㈭=lۡ^l3 Ȳ ˲ H\Qi3"v& AuNzG8.\LO \'v&|>joh0$w~ûgͱ/=Ýw|=i6#oDQ5,W1n,;{S>m'i=A{w^3o:_Jm2i0ksH$[#IRz;"rIӶ0N$M3r>N,I(xY˴uzI:`JJ4-v0LtBhPaO[Hp;>udiFSTb#iptt (dy?Q۶YN-bض]?@e7%+~os?^-o:BQ++?o<s!B8bk)%fgä/_Gݸ;sO?^o:_Jm2N9vwFrѿ+,,j,Ȗo^L%n,[|oG ϛ~uSmo;/Y,4@4qlnOݢ:ŌFVXENAZmAH&4M˰?f8i:I)`zEhB#͒.y:lx̩ 4T rQHg0ag4MCUEr[u5MM7+YU5m|hӴArzȺ زg u].__ﺞү_o ?;# l5>d[ߠ(E~C~|?]cmó0)_3c~O@ϛ~uSm s/&k,uxW.24Ӧ\L/1 }_+_wG|w{G)O~T M?yoWӯBm^~9*5Z]OgDQMhdKX,&/2FncE!Qg6 MStMC4"qGC:ipq1!Vrv~mXhCx|1 vMúb&˶ ie.t otl-kMziUU^UT?Um]uY}$'7Tv}U}?OǻΟwy7MEʧ'q+ ݢ?7Ĉe5_36 瓦 e^\O1t^mt5]e^0Ϩ]q\,Mq]|񷿼gj<2*֍OW?;cn4-/gRnwGU74UZ__ׅү3=ɜO/k7DZV?霗39h vlkBZ m]ќ?!ǫ?GSџoCWO??t_aҦi+&>C?_k:aô,`r~abY6ӲXAyӴ=lK6-a8C7=@M7ٶ>BӘ.0 繬uд ac8#\n { AH6e[u ipnv>qM\%=N~^U:dgf)6e#_?߽?(J?3}N?c'_#GaCMRȹO 䧟-~+iӴ1 s.plqM0-$Mct]V%eY 뢐8Yc[.ѥEӺ43՜izaW ukڍZ1j&ھKj#_??2_X?Y~loo%k}dKgx{~OI~77?}^K?uտ4__L/$IP_W?u sO3\jT) YK|ñh!ziLgM\,t,-4ɋ)[l4q]0F}]5ɚ0a6IS-k \6ab6q& < uS0.a9l-Mׯ*=vضCw븺\]}sG0p>E?V|+~ښ4ɖ'o>-'kz>w4>a?ENoC?Ci44l~\|~uSmY2 -$SR\L'ME&xb9G #aZc[ iu pd6bZ{21m,M)6ytFrI5 C7"S5%Ef)[OGja,stӤ[ȳ AG!{Lf*9gv5:"9ETUUC_mHVUȺHw+ݽ=kDW,dCG)|_ҟ9ݻO_[:p6hfhM_W_2ǝ߿m??(OYe0@K%:~#4,8ƶ "N ulպKJm&b&eY45RJ4!`X0eszzlv8x~@늋 A1a.[)ewA:me);EY,J,n{G>Fѕ{w_˜/OEh:aa}"9=_x!(~m ^a>;!4}OKS =$MR,ˢi+lӦ)IcB ۱1M p\,Iꪋ,7`,ƶ-OYOi>qiZ)) M]pj slAʖh8)9գ74U@5{;|Utj08ô0,K|^^Z˴7M~hð,]EM7%@k꺡ڔĽ|GVb2Q{w?AfMa^~n{g/[>}a_7l=ٯM<~3#r>bڪ@5OOҿA67f]G,EJ.0nmMhr>` $qv_[aѓ'~LF'O0葥ՎYuie&hr9mt#iж-4 vql4MbF4n=I]bmu<$۶<`vHG_sr~5siؗWW4mF"ڀ ZUo"njHO"_=_I~/iWh![,a*?+~qW[,Mv.o|7ï}@֯w,KtS9m0M4MhҾOF<~>>e1EQ:yxmK]7Qа-M)jS%frqJ$XEz!EMܤAфF# 0iNYUca*)Dzd7 oz8v4Udz])jBjEuM]7SuՆ躢*k ?E?ed+7/W_o?*w`os|]~o?3m?o۬v9iҠ:ip,pjh0 ϻt#ionHP9i00 u¶,uՠFWGi[I0 r븮!ag^rzaW'(s!I#XUN5,K9)J]>G?Y^͏?g^r sMIBmuAl>:9;6,VE"4aPUe6 `E򝷾h8f1 dBTTuEAUUFn{hN/Qe6 a&1eUv .UA4zˤ4mMZPVMbYOOM7486G2ei3M9vl Do9'R~,=b ëHrkXEaW@IivY.0-4MB!iHn`ow4K9W.Wz]Uum~mUnV% # iw;6pHhhFQA&ȶv8 r3Bi:߽/4񽀷ן$ ׆~!_Ntk@6Cs~8܏QoV_Wԯms=wiٔy`Ч?^6LaXtA/?a]ejyeeeY]kggǀ$O3<0 AJ|/``Zr=|Wۂr9Cuc.躆tʓuW1 je[L9{VW^"ݥm:z}PSQ/z_hݻ~_WR6:/ſ(O_ӮڎDL4]c>"t040qq1A&A`uY!tPW51_hhr:],A׺$iakIYC$(3\_!4?~8<+DCHI/RR#ݽO+%H@X-w>UU7W\ðL@vӥ@\fQj l># R 7Dz4/@H$ؽ捶y:^A ?E˭>UU)Jүo~uSmj0k8Y#[X+fooA۶$5`HR)b60 p4M;`:s}<ö,Y Iױ) ۱B"*^eYA@Su&3|#= prz`8$CڶŶms}$]BmhzCAFV<~>CHq /4(6 %UYn"A rcmWƫgWQr#tq7$՞c{~_WCvqVVy3L9s4I\.mf I3tQAӶ eY-hWN Mh$ieR膁؎:{X̱mr;w,MYh=d! (˜| â(2lx睷g>Kt#D>q0 &l\G p=oc)nAl"T4JqU|3ԅ7YqW_&qW|W|W|W϶:n:̖iwpr5 {!yprMEsyC,˦i)c1PV%iY n} b\ dcJf^ijE)yb[.UU9 4p=ji$I!& ]՚z! wX !:EWx6jGvigSwnT|W|W|W][jnug9##4f\{:TUl5e<f28QѶ5eY"[ njNN{;;je٘œ'W}wDYWYI`B #ul"2,C׻ct$r$u]e37sٕA ]p6|yǮRmv#Q|W|W|Wj~VYG'b8W_##E=^Mf$i1NMؚF'X|\I H<.PE^=bh,qv(7wZW?iq\--sFq7U a>r|۶aYa] dZb}NΎ(vu6S=ב-ߋL6SrSs3ayW|W|W|lڭG"*=)z`0B,꾺 q= 44 qcqrr]tFi#֬!%fW~.6zPX J3ǧOt1뺤,r,s]r~1ag,S,#NVD۴4w{ vuPp:8r2G^36)76nlJw;++++vVڇnkꚓ#?ǡjs4]8mg9uy>:UU01M^ozd8rxE!DaؘEQ昆0 ٻکy19'L(8^Q)aG̗3\ۧ[ϺҏH5ipt>n' i%O7V"FwmҢ{榱^$U!?ѵ+++lm]mCa^GQL'&4) 0&Sg^i!i)Z-EvDMZZzq5,O!yޥY,pu8(RIDATl1ШZ@?д Ian\hy} `BtڦegǠ?b1qqq>^G϶!_mDܒ.^9X&i 6-6?~R___m4j>ay2" "$&I|?@e (XNYL])wp]0Y$ItFth@UdIAYTEmy m+8#z, LDtʪ@t.r)aa$IL/ %H]7?뚲6ѧ[gbW0P%.yibsaճf4P|W|W|W8nڭs/iO{!9ibBhXM/a6vEQ 3`6c[u]8݇QeUaZ&l,zz"0:>Ib^;q==z`Dm\8.c:0m˴I5ԁu%mg8kӮ-1MNܰM+~pEU\FK_N% ___vgnu2?CYem."H˴$h8r9<'$/j=~#Y]踮l6ݷx똖M]Whr>%^wq],K,+l#4Lϱ-7Ȗrɝ;8;=%B?|vw򔳳'0aaاɊE}$r1]O~f3{sy^i>䦍'em0pӤ̀?k:̣ᘢ,^L88C6IxLݴ)3A%4uCJ<%4y},Wޠ-񹘝gYW[j zV'MMYضDQ:^9.mchwEQ2^Ћu= tà;IӔ9xgrqiA\a|O6 dR'Ϲ"vڭs]7hC8ydytJ/Sy4} ¶ْ]|`'+vw8==Jt]\9i%y"e R\D,s94-ј"/4KX֌w,KaE5/9 񃐪4re9g nXOq`c7{6低rzf+++m]Ko+8^wߣJ;fe)eS%Ii^Cf9Q~Ǡs°x'1m#q*1,[8;?i*F1`8 Vq1_UEMwЄFL&we=_`Zm2O(ʒ)Es j.7ZqA B }okV_v_]'.RVUY)qbA۶hB#S4M`V˲y|N]5 ôX-We<'cz<|5l!zq />.4l1?cWA|zF|4(+++vl;| ܹs`zضr1GaZz:, Lı=,W_'3&Sڶ%bl ]7(남7?E4]$qBU78CԬk,u=ڦEpxO___?^?ۮv{Z^rh_iI!`8<|p/upv4[4M fy|;匦0m'z0Rl0 .A~z (s1yQ`:bY.i1Q/*Fyeq?eO0˟W o88$ˋv \ 0M 5lp0$.,x}^0 ʒ4Nidh|'zPg #9B04 \uUiv5VUa;.xuRW%Qoz,r `Z6-\4ۍ ~.edqn r禡^>*}HoOɊ[v뒌UeUU:.{Mpz)R@ԋ15Cר 0uS]MvE)H;1L0mCUGzAJ,Ʊ]BAP)U]s1cdiB45m۰XLy]H,ӴnsUUĺߟ-nJ2Ӧ-n1v[4I%*ExX.g1D>- oi "IIJYx~l:r z[,WsPW57>I$^sC'֔eIYTG^AjN]4MV+]0IӘ,9~4d.H߿`gog`D&v3]lt{\vuHnN^ڬyқQ˫%Zʖ`W|W|W|nk:M۰Z.yX,gD>dbhJ8 &qvvd!xeXhl%ސ8)H+%ۊ`0& b&4&Sd4ڡi+׋Mȶ,&.*t`4ޣ*]$qLza|>.YQC,5S ]'Su̔lh4,N0t4N+S{NPU5eU_'B!&Blk]ﳳILW|W|W|8ۭ=j&S'McjY1ǔeE4u{&{{eE$cGR75IyM]dkvF{]D`.WK=bZ0 ?x dIeqD X4uiZI =^M)" )mLf0e 09:~L]Wh"^F)H]UurE7".\u7OrM ".++++vDzֿÈ[f0iڊ$^bYa8k.& Gc䓟9G4wM[\,GVK>Bр$M;8Db:% 5m>eQrzvez"'=4Mp~qm:19?mʢ@ ڶj+jc厁iR^O;V\mg}ook ((4PD# (p){$隓'z="E{8cQY3wc9,V /SWuM;#cc7%׿zfP|W|W|W϶뿭01AY EQӓ#^}uC1t=<w}!" 8| X #a6GQIUUEz6gi î?W_}cڭs+}ʺ#vwv삪˒NOrl4,Ld^!u,W 4\2,, syGC0 Nݥ-$ Ȳ  hiH Ӱ/x+^z$JL" ;{XjBLt]G ƽ?"ۚjc)m>~@2RzƩ[EuBqv[|iXD둮c.S,f0ء,s*Dz,р4M rI*l&z]B {N4<~>wX,xm;xf)[wy݇Xwܣ*d򭷾hx^/+FDaպ[yyTUiUA?oQ 3 !A@]WTUuiNWsi)ܮ+䦆,?:b37I!k:>bzAUH ~POԋ"Oٔi4zN-irUҏEi cNN€n ! OUTe8ɒ^} 鄝}4Mggw4999bggL+a1$1CʺqI^曟aZ`0B RPUUUv[Bl IuQω`aҗ)nrjW|W|W|WO{[]a~|(:Im-"W&=f<Ųl GYTUwƀ]V%YGYU%#3DlH]K|2-Ė&~:RTNl6v{Aiip0~ ؖIgqrC3ѓG ~s?z׹ocↅ#~˒>Y_Ye|5(tkwS+++Em]mVkeR9O+IX]vww B4.MH􈓚XCYH.a0},CDw=)8??ewgSy5Zِg)шmiMbv&E\LFid1:EWIxMz!Ic à e^أik! <%1#4m3CѴ b,3\.4: (*7:.CmC+++,Mj^=zaҮj HP75i> 0tVī5`D]UG^{)XؖM^dAH?d29' #,[Эqzvy@MLӠv g 4]gog hbr`WhYJӶ8"/8s,ݧj9yYy>m#Ge<*9BH>`6`wg0Ph@iJ$a0]3,(nAɝ={ p8YL.'ѩ|:H*ꪛnt.Wg 6i=_Hvss~IW|W|W|Y :yVY 4߶d1y@ ct[\]dN? nGsͦTU;wY1gǔEN]ضC?dZZ-,LrI۴Xt6nJ\7,240,V%sth0f8bZ6A3].Sƣ= d: t sp4ms,[l 4MܘZ _/rKxyr3Rl"R|W|W|WOQ[[[f0 pӰ8;;0.eUӶ& q,anȒUcA2_.-9xZkib ^W~q>|)M[#[e[ǢENF`\д 07>E^2pfdrJ zYFHdi7}5qecO OLi_7%{9l"㪮___%/oE[?y^a5X.l9;=A52m,&AUU^p\1Y.ܽZo?& #匸-IӜhH%Ӌ&ZλdU]Q%ako); bwh@Q{m+ (`:_st>ac4ew H~8I4-A/mqlK : ݱ*EWa<|˟WO>T|W|W|WlڭsӴaZu=iYRaq=0q]tdo.bt Å&Z#eE[t nҥ]ixayOOC/r4++++lڭWǶ]V%u`{{S,(JzCu 0zAzt63_ΐô,AZ/sȋ
iSWu]SjhCUm+/4'ɫŦet{]aCr~OqՋ?c䊯]_m6k;i!aqz~~3sڶ&31zAr9g>/:Ʋضh%M+Y.gx`00܋圲r+dM`YЈ1mSXq\G1ay!i u^ob[0aZia p,OȝiV{kn2P|W|W|WdӋ[a;$St]*R)-`r0"bAaZ8IYs>%Vn}m`74y5 (+++??ۮ?ys,2mt { 'G#eWq^0 1 s>9ag4(,{55m`X̸{.:ecGE~IdƒqlofyPHru^'{A, eӶ-'Oòlҿ+ uUSU{cO 4+++4E9=9jPv<\8^:^6s'GˢK3Ѱ˯K,Qj:u"4&Mƣ]d:6MS׸`Y^QU5 YWA@F%gܽ4Hӌ8Y> I !>`&IqLe4$ö,Ʈ .+2o?؛wk{oN]R϶>k:̶meRcUl1eU'xӰ)(Ǵh~HU,Ws~+_ⓟ *^k''xEaM8lò-֮4 ;W+tCVu)eUP]ӑRx>eNfm+q݀ǏqlvvhZI+k :i+ozf71R6f~ٞz]|Yrvs/0EAYHҶ ҋ>Z޻m;V Պu___evg](;uUAbDL,a>"t04rq1!M2 0 zQк0iҏ̗3tMcu-FP78OhiXE")˒peI]hxj0L\ȋÃ;CU]&k)RJ"GGOw>U]!h\/#RPUUUv]]yL>c//:t^zN͍WL#ݿjCY2,8Y#[X+fopmKZw$^Ӷ5U NAiMŠ?|Bq/_c[yhNX,M2-$Fʚ, ˧$YO>෾-3ab]^mX̻u"ꊶ BP7?0 4OpӲ7 5]!ISvw>2XV#vvL,KuӲG9Ey1v ä,sڶ歷˴ C0$3i45e]%Hp=i0M9xSQW~_W~_ݾ|v4,#O Бe34K|/ M8膁eTUEv<,Ϙ/.0Mx(.틮? {!A]D>ycZsz|D/p<Dt]mZ à+]3$rU{dYc;AXEdy+Jү+Jүo^dÜ,kd>r~#MM都;xCEIm ð.zSLfZ8&tq]d i$Nq]xm;ajZo&eQbZuUv1ngg^4<70M 0-uq4Mgg ðj~_W~_W-z9̲A\cZ!4 Y.MEQEQ #X%+<|r(nbw0$ Lgfu{``I ǶmӲ9M[c6O4mv("Ϲ>JX-0'uR"Jү+Jү+Jt˂*\4Mi%e, %UUt^i_ fb[6:&"|?Ҁd MҶ-iY8r90(лY0Ok::-ӴLؖaZ8C%|fY&P~_W~_WEK2fy>]z}!RLӢ,.n\iqm)$Iڦu=$ ;],ۡJ4`\ ^֭˲Lلz]YVcf)E r Mpqqh9u]bYYQE&Iӄ&eSmUxI1 R1uS6m>Ӌ Ӥʪ Ӣrʲ୷X #Q5m۰Z.Y,瘆NQw0M,2yu`,IuM7@q pLL/&+Jү+JүoN'86LA]*$q=G2M\u]Zr1@v1-'NL B5 bg.89:¶w˶iꚪݰ˂2/1Llb]x#eCUW ]:f) t+Jү+Jү+ۤqy9̻*,B=9Ν^iW)<ڍMq6kKÈsM c"*k%3ǥi:!u=zD AU8 aa&X躁\L7I?$It]Gqƶ-up0n4! G8eMNi8Jү+Jү+J9́7lu*'2Ӵn4]i:h h$AY>mm4)mp\0!tdrzdI>0M1MMht68nH]7 M]/1t`HgY㹔UMY8:ήү+Jү+JҿE=_9y()%a>y18 |L[o~eDӶ1 C m B)RD!GG0 M3G0M1 kwiYy B#WuyIKMez6ȋ(ү+Jү+JҿM_zI"&lǡv,70 ۡibg"S5h&;~jò-!tʲ}$&U]7.*X &s/,SzeQ04wEQ 4M~_W~_W-xֻDOl8YSUŦ6iZYb1ǶaZb&e!uS:`LQd$ HQ/(s\g&12]0Bϧ(2Fꦡm$y"sh v(!{CxXC؛Mb'G C_W~_W~F/0'IrdyB/X,gee٘m۴e> /r 8ڶF)M݀h,˱$^S:vMǏEA70 VAݔ̦MTSg)a/"IbdR% {}L"+S8Eu  ˶ɲ0hd>;%BT~_W~_WHed>0۾gnfж-`Y&Qo@/$I(uʒ~&'蚎i]e$q̻(&q{.]7Fb1egf$qLF{wr`ȱ&N}dȐ[j1`k![ƽUE0 x%Yd"#m1#M[)IhEYYxĘYvm۱l/~_IMcx&Ndz@i]_ֆqff-59T(<3Eubk-M]e}L5D'ro ' eYҴ Yi[CSL \)RCסF[s}"_E uSVr>i_/~Wu4X`[ ɳ%8}|dbf_t ߿e 1iy~>`Ca$i{V;lAݔM8SGi&3Lwff. >'8Ѵ-m^vJ34m Yf)ӑy 4e/~_ߐ^70vqbmHhm8QLV%Oh`i.G6+Z1(~c?nHtCϷj6?~r"сx:)u]be\b(0:4\a1χYU/~_߆K2qH k-uux|>w-咇/ݾ8^4MfXKY#K38(X2M3ww︽yGU# 嚪*r`(O }G uU]>kIS%'qs2%˗:Χ3ZEƷ܉_/~ m^707" *P<<|%t!W+scg-bj{Z5À =u]5֗3hBƠšh_ hqCG<w @Č8MJûX64uE׵4Mv CBR758`F[ /~_ߐ? ߶LH/]Ҵ J剣[|舣>, f˕M -a ~4ɨ ڐ0@|$ɀ8%60ßQ,K5G<}|ٵ9di0Nmrȹ:Ѵ5ZhA?$ p.uS_/~ _9Oid>{>2"Kǁ*"< 5xy04 iс k }?)m׀(沈* pqx>E A1}b1P;xȗDqBy. q$KR ]r>6DW/~_K~ګ??D)nn(~ q8N8peIdTUI]WlW(Oxv $M`fE4LD 0m&($N;t~-Ir*NdI|b's6j&ІI/~_o'\a:;Նϟ"2~\οkk|8E1803h?E#v<㣄*臎bI58t=Zm@i0$Mq|_Y-|r﹏ilj_8H O?w/~_C,]aKdQfsM7 RkBU](pΓ q0N 3LL]GIֆ$y>~|\Y/7~e&򞦭/:|<㘯_xwww=Y׬Wk֛kbEV;fŒXWok/~_Q^704K1ƲX\֜<>~]Iϟ~"t9q.NXcq02 <}(4*ܾ2N8 qvOD>nښq'aHӴTUR:K]WX|#l.WOMQf0ֲ=)7w4M-~_/7n|\q2ϰ{z$2#<:~C^Pj.KV Ap8I F@OmC:V8aڐp>…8IhꚺnQ f5]^OOrx>aڎ8pn+%t~0aWA͔EJu A:G-I6 77DQBߵ]skBsqyOucf}CT=5L3 -m1 Б9f ynj\]]v CףL3dIbij<#rB~ǘ8- 劮m9D/_/~m+7f?a~?I$I$Izko>(I$I$Io$I$I,I$I$I'%I$I$d@6I$I$IGIENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/.icon.png000066400000000000000000000072121411575327000223250ustar00rootroot00000000000000PNG  IHDR@@iqQIDATxyl\u;3f(R(ZlGq*][q$pi m0Am)jۅ[Ԑ7IѾse8␜7wp(\mjUp{;r=5\5\5\[.~Cmg R_sI]=ٷa/ A!J;_]*h˅ k-Zlyկő4K GXښ򩬼g}^_o/z‰4<9zW3"/@keFIun]|J?@ خ&s v [=a~m+\A?`&FQF/gxR:#;w3QYx.急7a?څ҂NaJQcth2gx4 'Oujnk m<'2DWgТ9맴ONyAƈLjŋ{)N؅op#9j29M|= Ws8ƈ8c{_߹)^^/ܖRjB0)2zJ+1Z`aDv`/ҩQ; <[gy 艗8JdVjn*6B;DؘOI0ЎQ: .d#GOxmm\?>N(֯ZϮ1m}7A"dGY`)eRQJ3D?Ýt|,6b@im-C<+*#$Af+bLc벏yko?WlߏjO .bQ89K7-ȒuD 2?# s:c[qb1Hold\Ee%ZkrK]<~⍍SS[K2$;ZȴyQ1VdH+R',ao&B†=HlfRI&]ʒF+D{wKt:ͿNR?2{~vDP-;a1y+5KXcG.uA^R^iQVV"J{={XdxO#%x8^z(MP:Vwp_W#I8wy/d4nFJb,zgDUfhn5qJVi~u"Eiku|ZfxxC72@`|sbY[+/4E (oSFRkAoP~);iv=Q׼-_@?=H8rUuL&|hc| J uhgg =,?8"( A dis#A+!#a72~huo&9V0~K.ZMoB(R|!u8}<h"IsS%^_Қ>֯[Moo/% @mm$9=-3 JāZ *d#"Rcx66S:d"flJÚE.FCyuko024UX8tqH%2,|fjo'8gѳALAG%Phm#Xɝuӈb11 ׵Q޲[؛$=57_XJ&=U.$^_Kb,IsK]u8SdeULRs{Zdɜ@ٴ*a%u,n9c0"J1s4lBԷT7(k$e]&bԔ2ر%.IAk >!ä\R<ŏ`ŦO qf@[8t(''7Qpw]GXc`KM-"44^<ѴFk|'\pb&7nF G&;TjQ[SA&~:d2TYefL[b};(֮wUr|BE+ٿ08N  Q%i%e6^~9nȍѽg'  P@]{8R_Oz\pZ[76='oRZZ  S6m"1::dT{sQdC glTZWwXTQ1AΥru+֒$DVlBL(m^J, 'ȡ,ij, 0B0:8sor#Z6oaj*Ł\uwt02+VND 9?Ur6݄͹ʫH53<2 Vq׶X"+od„Jq|yifќw揺x-#:ISS4.0DMX)d;X0ֹrK-q\ȗjVL-6k-VS]25 Jӏ`46-fמxW(YHU=h8$"L9##xG2 8LRB(alt/#1:Ju9L2511$ViJtHW1_z/O7NQ˹Uzlj>=#CA@CU [!@j^?(󮝳.d^ds^`#\0JE@4ܽB7V)Xu`-W %DDlYNt'N{X8UNNW=Dt0H P<\[@KN[mrW/>#P( X ā s&" _&Ad yO&"<'x>Aٝ(IENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/.lang/000077500000000000000000000000001411575327000216065ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/GNUBoxWorld/.lang/ca.po000066400000000000000000000107731411575327000225410ustar00rootroot00000000000000# 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í" gambas-3.16.3/app/examples/Games/GNUBoxWorld/.lang/cs.po000066400000000000000000000054711411575327000225620ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/GNUBoxWorld/.lang/de.po000066400000000000000000000101131411575327000225320ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/GNUBoxWorld/.lang/es_AR.po000066400000000000000000000051141411575327000231400ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/GNUBoxWorld/.lang/ru.po000066400000000000000000000160301411575327000225740ustar00rootroot00000000000000# 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 "Закрыть" gambas-3.16.3/app/examples/Games/GNUBoxWorld/.project000066400000000000000000000010561411575327000222600ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/000077500000000000000000000000001411575327000214545ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/Cell.class000066400000000000000000000041761411575327000233720ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/FMain.class000066400000000000000000000171111411575327000234760ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/FMain.form000066400000000000000000000012771411575327000233420ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/FrmAbout.class000066400000000000000000000014361411575327000242260ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/FrmAbout.form000066400000000000000000000037141411575327000240650ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/GNUBoxWorld/.src/GameBoard.class000066400000000000000000000460071411575327000243330ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/GNUBoxWorld/License000066400000000000000000000764421411575327000221310ustar00rootroot00000000000000GNU 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 CONDITIONSgambas-3.16.3/app/examples/Games/GNUBoxWorld/abajo.png000066400000000000000000000121251411575327000223720ustar00rootroot00000000000000PNG  IHDR@@iqIDATxyՙoMt;BąLdL8I͙̓$8$IF10[D6Evݫ(0q{N9{}NE\E\E\E\E\E\_/ݡ׶aP/ yfSZC0Ҵ6{g~/c[O)9S1|R :[سimi&uk$hkGzأʟ#JyWT`bA@q|@v}e˦X" 90qC EP>KQT,#CzW$:Z6"z`'-fQrGHR~%-ݬrx/pmP({l _௛yy&2z;Rv-};]V54i.V:5XV*^+BS.#3ԏM_dQcw=v!ƭ](N+=~Dǡ}Pfb$bqL,8q2d8sk%c9Oy.TZlH5T;ޙKnۗ..J}H(!xj8.C~9z^|c-Jx+ 3VeC9уZ$S38_P(om|=o<v3:tPi.p̤H0*DBssl&R(.J&*߄i,VO\.lndY@Bu8X%6?{:Ys2?TǷ[Qҿw\z-Z<Bi"Gh>|D@yNR |ފbwqUFjPtDBJ !;QuFu{ȑf1k}*0a&]GV,OOM&][L +9VauĀ,^&?n}a9`l+M3XS6!jHHf!0SI|5Sp߱g(3KGb~uސ3C0#XfbjH3,,CqLOw$ eW N)Ei!-l91ŒG$DPS =ܼH嬫;Gl%s OE=0P=~h:Ckp;3P]5)xjY܉R(R2!_.LX|ү۲qbUMDVOD#A:KxZT_!qL[gOk9(LIs/ѽ oELJ4 t_9˿MGd3r`iFQg1I(`NRexk9FT Ӷ}ӏS9G] |-{W;`xf<1޹_|Hv̻ߐ% I*$qT;Eg(4BI]GQT* rc!_}|tLD+>q΂2pH/-~tl|!NmZXdqM uˬj+oCc^պm1rDSs"V&Z0x^&&=&-ki,t_'}#kEALXLi !NM-e^9;K?Y OAP..iĥ0s<_Z-epvӹw[n~ <7 EեefмU}H&8qD﫫 ?D'+dIu-1B42bBp$ESoǿ @1yL%le< qr#/y0Q'^*t{߈0b'OֱVɇ>;XF<ޔhtgt)ԬIu#-jghؙձw㋩bR%B"ڵE N ,òp Sit Hd7}[giu7ILi0lу9N6#M##=^`t j}irXѻ @q"٣nzP#.Eʄ" 4Rv#-h%6/t=Kv`G/ 6#Q08 B)[ MwVTA!0%˯P|vKٿ3g3N&OY柶2Gɴ 0iB`()Iη@{ >DtxuC_E@ `HŃ[LtϺ=4ɴ*tۘ 3xtt3Q0W};yC>D^~]La_~)˃b%b躃a70䱣<_rv>pfFgTv=ƶU7,^jm٧_}%^^{*kعuRdaJ9Ҭ?:@r\ny޹"|Lƿ#c\4!u({ϙKZVі4]>7)!YGbhB!퀡1& if$b#gSZ_b |5P٨er٧Cb65Y=9K-LX*œky;s&?zInq7wuW [̜ @oT 2 nL~o;WGy,I&m(ᑯ}3CvJJxytq(;ğ f>xXlv;nF(E1MSJjn*Xt)UUH`4)ТE"ix90q |{u牛c+^T߃3JQ@_b3'Of\6g_ַEctRt)e{, +!#0x9w`%?IdLqVÉ m>y?I^5 :07[m;p] (`Zм$tSQWSuv6?07-;vVwc-~;] akB [=%@ `ٳ].@q8F"H-mXoZq~>{'yHDt[ i1}-Oא?3\Jf74 fH>x>p M3xt4mip-.%4e>d6V&5}`7p *Րwzӝ੓`7+42B(em?m,* F B ;]eހ;|l8- ڹ^îvV4Ik:o PHkOuN)i,->4EEJirNX9haB`ag(ӱ#>Զ8]n`_Ni 2Aތe3y)Z5~46ފ ׹KjB{BתDŽ1hK+1Ź0 oQv3\"vNJ +i}0pUvA i;DG˱/W,9U-s 2jJ6ҲFRbG&n7v9oO,Nu-:Sx7#13>Bxsk#&64D]q99.ETo2MG(w!s^ yڍ f*YԭiN#2Hz}݆e.[]BXbdf4^WnQ40q3_e}9)Ü/N(1:Rb:dXFfPOGLtXk\'3z̑Jr]~8ttcDCNkՔ08F ..2w%!9B=eF˯H{<~Ѧ]} u>>wqdw{s'ԇ-@f9jN7!{ڂo}_?'.:rGh =FZIENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/arriba.png000066400000000000000000000122531411575327000225600ustar00rootroot00000000000000PNG  IHDR@@iqrIDATxyT՝?zoK@4"@;!q&hL&q211c8b4Q1bM 44/յW $֙9{N޽~-Ampe/n6{ͻON7 ZӁO  y~Vv_x/eތ+x׳W޻ĸ- ϼPr_ިz{":#@H@{X8͞D06z64\vzO2e a{3/{BC3 #I4dnz:?#H0afIxW7gJ/?Wf36%f<ڰǒ•H=X0Y+d ?ߖ9q.0\r.) ˋD;{e6u 1w~{~$4wX-(6M"SB"vs9"~?`w``/.Du{qjgxoo-w>cw{LGQ^tO(6S"M$izsW8͸(pX E Ju̵ MU3W CW۾8hbw =y;fR4 )@u{r_wP= zb<0 B\,PDN#,4݂g_Y,Ђ26UF˦@豪,s^[lDPvz׿@|8! ,oQ-0;e~8ЂE";m7CB,pNYt-NSz:i+!T=Ŕ&F:x%7u#Pswб3XNC s?}ʸN,9dbt#\q'I @SoJtM'P;[W=~ićN* ·^2e<e*΂iĦOz3Y'+6H)HDө)ӞĊ> K[Dz%<<'ܾfǏ1{yr1S v١Ӭ#Xqyt!9s+Dp* q5  1Qz7tDgLC}F|hiK`0 V e00]XQ"29rG F*1/֢y Vg16gQZּoa̻&Ogj lwV`pPTB(Ә)A336xᕇͫ`S+[˖] - #Z w ,Mh¡"&F2Pޭx—Mc󦂰n7JKX_[o + ,ӳ{SEX*V }- M#U!}=;5eJ%skJDo<xl y ?,V_f~XwbD=Eqz8(N niS/<-[x]wSOZ:-+k \aVw?!wدl#ߣuw1QbJm]Yؾggk+VVQAW^BTz<᜷ո-w#_<<ί<Z[LϘɄ*,\GPmCIZ;+V+U;gV:r,?>#(^|Åz+eO KH$} jqvs3ۍpui]۷ߵy۶ߐ3A1P N؆Cy` 𭡖F]Bߞ\Z=%6Hjv<t!_^ٺjkyO0C`,2;sNK iV-k^`J諛.oi.Jf&" Fh>^5xOyy7vBqpy zd0c Sllp~Jgg<nj'Q6ēW@,΀2:)̩OG[qf*! {9\р\p6i5z/靻ħo|]!)-Oz:A7eZYPL ضySq盿z6}y8:{AIecvbWQy4Q}}SOd :|wJn)lG^C'; QnT3;U)7`? NV[ k6þM{~q;vʶUգfw.jP 㥞kM 4H mۏ\40@QR1$!|t }mٵ$m?כ8VUXڥXJaMHݹ:̤mvUT&Q3ǔeזm16or.U@)"tt' hѦ7Kk. (B  #< &iKQ_x<%ZVX X\c*4ƙL oiufْ;ת6m~wkd[ʫËn̎bwe5)ԼI3-ޮ#X~EߩUAl<$M(6*L4 |sa)6lMK/g,ѽi% _QJ` q?NFhz|7iDo{\1/j xk-p5@h:Kuؐ&WRb}<UtIEd3\ߵߝ'Pu3w./25έ?ׄLO;K+@1 fN} UwD,s".8O|WDu7@vtiTaQuҺo!PGi'B&>Fw?oUWpF 5 _j=)kWTΕ8((FYZ/d*x'nJTE\9U+Ȥd4U "Lֆl,w6P26# r°HmFn!ּ=:ِ4PHSiz6J]PY*}.MF*NdMر{~ tzyYSxKc3\)vp IDQ5 Zm#&B{wGxw0kohV۪vC{73*2]`fWQüRi_Qeϯσ WdӍY)EUlW~aiPɁcq櫁௛n1p:\ 1Teذflkߛ8G=Dz-f"}S؀n$)jBU%B8fU@u+vId*1uhSb> Tl=յhB*Sww*Iol=y: ?7} w`&\CN0E)%%Fe10E¥خq|KœtNW\Ǡ?]w^^^{h[B_)%Bը8B1Noe)ٵi\C@_yy"CcPRK!mC6+ff̽3qu%67.p-t6!` BUR^9Ь޾~0 E]Mk➞<( @ʹ \BqfyKK))--EJIzz:e sǐRoƪ#6uw)INƴ٣K}2cٖD  Ur /F*Z"{sǤ_\@{>.,Q\}};rϟdsr8Ӿ=΢"J++~~ %V~JۇMpLI֠-[gp$si/R"NJ8oMKbL9w zv phdƸ_ ~d~B ft{{SP۲ {2ye(.MCOLb^P…25׽!yeفoD .uK %c?b0[N)ȡU|<*ؙYګbEFY8[,̼Y5N @"GYuZ5'z 7*>}#'b3)/WUQGÍ[Rp吷j6[#ߣ' VOڤH1[+͛6Xy7ҚnO="-x鋃hYSI3q`7i(\Zz܄DiDoMvI%~`b S],ΥjfZL?GyY}8_^Dʷن)֤n 6"&n:AY:տnC0nݻ}V).$^&1b4 e=eܝs4YB]e=9GՙC쇯,BJ0h^1_m!=@ sAnJ9Twe1pu-rydC˂[@B = /w \&.Ñ{^l[)xU4"/?>jRڝg^ +uE Wi!ьj!@^*j M Và*H)qv.a-p"H]JHsaO x؎,v6Tos?.\~vh\Ź}Hn"nW=9tm+& y鋉HI%vWXi5m4Yg<;Q``) >w_ w 3x < 9Yk iWǫ9;w*͇XgչBSd@Ų|0{Ϯ;J=h@,-Jm"͎U#oӵA~ A@//).'w<uTa BV_<]tX[Q|Ҫ 9*)Ed=<;eE‘sv/a|C{bq ueZԽO.2Vxrٸ_:"Yw^l/%ҽY^)X{X.g5 \e"揼kpt)eӒI&8OfoE,kD f Gu;ߴ77O]{li|doE}#վ Ĩ*x fN~W-n> >8n\+]OfaTٙ2n-񨊠nf RUUؚϪB@ G1Yk|gƛ+.wc'B8&JQ7rjtʕ{BwTQg q#_ ao-&!@S̚Ba\\.S{=i*ٵx @o{ű_ 7zd]aSj"bv8.-C{jq;G~g^ق~ޢdnb;]]WW1[=\/kt."D(*b2iwwW]K5)0"ͪ [|{imjLɮMKOU(Er18BJ+ !|J [vM̑hi7̡,|K/b}%&rږb1{ʌ#🥭@ShC=E Ub4 SQ".~Nn+hl$91(L(&ǧ=-P~y:s08uШ)}JjIybu|afWIW|٣QM4Խ^Q3mwL* U0K=V1YոJ3Kl' 7/T;oka50?97---?}=ZIENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/destino.png000066400000000000000000000224671411575327000227750ustar00rootroot00000000000000PNG  IHDR@@iq$IDATxڭivykiO{9'"M=Ď}74!-% h(|F+T$ R@%R Z7F'gﰧg\iDžekku׽o,,"/899E8l6wጲșEit]e[ CDs}r4IҘƑ,0s])xAv5ł ĴL>q(\f1u.}! CzfZdې9eu-أ_e6)v1L %%]!zl&/ NO$IrӰ(i1ɞ*PJSU%|MS1 o]/.0 l|rF@+m8e a0CkMUUE ad sH)Xo|@ -0aaMPd9& m_8R9bhچ)0 )!! #z 2v5ZPH)0A\\#R [Bj8D$l>||&R9w7~Ҋq8${(i)q-%5JkLӠm[0U0 SiZ\]=f{lsnf30mV\=% "l|C?Z4<1Mx]ʲl|?L$3ԟ{/۾ar}4,n6q."/8$ˣ, ^DmaG)9iR_K$Wxb51I5}<цI4mŽ{mKUHaڤڶvlHhچӓ3lFkEawBX(F2-TeI۴ӧ Ӱ)X.WDьq8{<Ŷ]t%TEbuQyO+$iw-Qo9l%(8qS!TCIEiۆ2ګ5M PW3 {g~!>`h)M[#¶"N^5ww7Aȃ?6 QV-g\Ӷ J xW_y~q` x~D=:7^DQ$Ida3_,Y]= F(:֌ rR JjAuIӶ~D$ idDJMYV'XE5YRS+Kd=ucrwwMg ۶AK]-ՊfWX`$B傺m]rur~X8==Ƕ\߿}J?`&C?ݯs/|W/T^c hڊm*v\4cdQ]2ymtmO6t]6L겢ipNּwq='K۶朜`6gkѻ80l-ô_~~ ڮS,FH5i[ô,[ b\I4U6 -B A Zgi8]K%(93`>R){8?C6dE88|4l4m:dijuBUht(򔫛DaD苋{U0 H crs{Eߵ)QR(醚=HjfCW蟠iP0?Do(Y4 !g4] ْx!Xo9?7ƛF1lA%l_K²yϡkpN&4umȟ1^.zvBk)5h~/`k]DU^`&$nva*i:{ ?n<{Î(\EsyğHu D-WW#Zk:"Q!$xzԿv<8& 3{Ji-J) Àm٘Aɲ9=v~Մ i-WdY0{#}^XR%9R ,Blb#c6B!uP 2ISqPƖ 'Hc(˜DJAWG4#apnbWy%_me CdYm]GUNɋaR [`?.o 0 H91i65lS.iѝXX۶|9MSC8/`~8w?|8/I0LͣǏp]%5e10bA8#OI=2-$0 =~p}+[! 2Y-WXE߷S55 hn(Jm[U]viS|GDio>a6HgH6ܻl*UUaX:C+PROsAє5U]!uh۴pbHeTu88KYXiڸG҇y o !4M |hvH%$Jgw>`[mQ90"8M$(kà ,ñW? ~(x)~SkѶ Q0"Ҕ~6&4 g8GfQDlk40Lض'?{9>JO@YUOh7zZi\EHAXXENY,+L",/$],w}o8WӶ g(躆nI`6B<'/ IAȲ&nJD*\-Vu'8.uS#oPʫOt@|jaD)ɻ ؎y8>yR9.}N_$ujIH!yzhy{QLY MWB( mm))`Y6z;,0@4x@ ￀\<4eY/X,OE!Q4 v- #A4CŜ0\ps˚ꕗ&&f C5P5ޣw1-۱Pjj/i`hm&H?vض#*w/]uIb tR 8}M^M B2#`(MwhJATH&j mR9ZC3` Q5Iv=קy[+O ABͷGFhm`]q]ӲqQ l7Sf )B f'qڎrEJA?6[, f]3=UYX.aR"ۊ=}!#wC/|0野뉢=E1t{_!$X-=@=aRxبܗ. F0:V4Kb4MI2}#:֎?zlodG-2~$qf0 6m#Ybm;md#h,q躖S;*ں4&|0* F+vãG='bn~뽿LZa|Dьs=os8Y/Iqi:Y32 W~7/۶C+Mʠ[<_¶L,˦+s0W >? g8EY{o>x0aHcS±]T܋s,F%c7~C*l6n@*ᰣ[LCT4UgXaڿNϐ~н2vuw$mpCق* € 'uys&m=m[#ضG45q#l<Dzl[ضiX}|sq *KWpٟɃWPmy;Ig?7ՅqY7ߢ8SC7;h{OPI3SR"Ǚn4''g ?~i%.EuÃeS~u_mN.~P#)GɋE>or]ݯlnA|7z(M**FYRU_ ِ y :9eɾ` "ڶE%1qk͓_-Va!`ah=y~\w8#%RMC:_a'q]q&,ڀaĴ,;fpaܥ`n+lu'm'[ae34RRm[h24x>?y*iLeTUb<%o$> Z!{?ur@(Mt;m۠DE=iq*V$8c;3_s# me3E"b*޽s,+&{i ysL$c@E+Egk:`HKp!>u~w1L6L #Bk/_U lk%/r\.aM>$2m`\,zFTj-BeQuUcZ=1"n;a2,%Nv( uUR%ݚqa8CI״C$G}7L6DHY4g6[`.sss֥rj}s|]ah,˰,M"&\ƴuXLTYS8"D0أ01Lkv mz>Q4.3QJF!0&=oljJaZe9q/Mֺ,v񃀲,) 0ٟ֨R`Y60w4&VtCCI?X*+<0 !n}e[92i0RV0N`,(5w[|?D&e }3#M";²lq`u5v ]NGJEPJr#'3ڦm{vQ0sϓg2d;e]22QR.!xMs!ms}m(?q]!%ir>麖S0d;|ϣ{󜶭`YOdMNu$ϓcS HIҘ,OeQ?}`wXs>Mہ7OPBܐ$1ڰZ3-D׾U/`߱oHôdxi9<~6]aZ1ip4ulw[ TzKU;,y]e[Xv@]4u8PXӛG s?e$ɁrN$TeAeGwmQ )xϋ/|˲ɏxxGSלѵW^뇣}Zhio'dr=|/dU=6wxAD lǡk["{C|@}\ǜ]J+>ntNBJL(ɓGVdyFϬI QZ{nCCj4!MKcw ny6u$?bXRiHܯɊqlƑo'PeH!r+=y=Gˆ=_y8 4}{oR7% 'y#Qsqip}d+,{tMK4QJ+\C*fsK5EAuѷ)qv 9JN2DIȤ- Ŷ)nxUeTMEHIR"sz|ob̘͖UR"`386eU1YED l7MIENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/ganador.png000066400000000000000000007633061411575327000227470ustar00rootroot00000000000000PNG  IHDR0IDATxIm[ f]Zy[WD Z ARRJ!hh]עBA h Ч̀x{J+vjҘkfzlm{l*Z1s1?v!U]2-PJ:<)$J{EF? i\^Gnn^3I">!a֚oߏmW=7׷(R`{vFW\\^b3>mSKxꚮl+?"3.//ff2-RIMA@YDA5#?#ů?tnn֊f2BRBBK "e <~m1#MS|?@k4ߒ;0v}ߣ!B6uE׵Xk)f|g<'V f9mbt6ERk-ZFGW_n(4K!ڦAkwR*v$톛[Rӵ=X0Sھ&r<ϣ|3/,M1C ARdM kc<ڦ=f9uUqw$GǤ鎮譥 #?#?e?27+# clߓ{aDDX,},K^ݾ",c21-(kq1RwWlk^ݾYn Q0L|x8N1>R >}|OL)E Cz#`>[ݮ)5y=#?#?e?g-hmB2α]Ԇ@(ꦤmZ?d245U]x>e]uF(-(nic md6)#7W$I$ٮ)|N6x I2eِL&G%)mwnMUhmGG/_T4RJDkMgؾ"k4MB "Vc/wc /޼"&(% Ƒ$R*0$R޿k,%MnG:? I2k[$iww[a@׶֏L&3ɳED'3.K"gGG,~mnWHH&qv[$ bڮ!N4m|;޾eb1gXoC'0@ky2/_>1LZ(ay`;(r`#?#?eWo :kNfXk0 yzkZn˻4-MӀpM[A*zPf2p$IF B iˆnE״\\\ݮ U,2tEw4EjJJ,X.Iiۖ8J@v- !$'ʪ`GG,~__RDQG{v %|0(K-~l6`ni Ð4c{ا;ڦf.}O3[,=`]jۂkF'snn^z c<(& #ʺ$O3TL&SDHfUBVT[aGG~,̦K閪rUE {../Jz`Ϙ Q2!ڶ p?f،6ĩ'ǸV/O.j֞z. ?t[_#?#%y^P9]E1i'rBbm"Ϙ/yg m>}!|%Zkܓ.| \Ycg^т++Z`Xͭ`tq`|kϣɇOFZ}-=Owo@4l;#Ӱ?#?4v#߼#2!YrFUIwuCZBc|dtGxI2]ʸ%:0 mȲW^oG$n֒/_>?բ35ș9SgjОx"p(W!Δ-cyvO"1R7?#?H~xܼzvb:3N(˒"/OA ūoRppht]zĉH%X^Q75y' E^PZytyEAQ(Nڧ)J$r0>~󹼸f>_fu4`SO d28F8Ԝ="Tǣ99Lr7ﶝwW<m]ӑGY͚I<%gyy~E4Mj%yQZ=b~|?,Ž "U1חhm~0|)ӗMI(98`8ΛqL1>g>O9iS94:.tԫ|T$ig72#?/?Lo0}fMOPk-%E0α7{ ޽#k-\IF%ڶJ " C^~=WW摢(H߸/߻X׊ W1L;Q Dr﹡ν&9+EgnٯM>YvG_$Yǥ <'oX,x.d, VQL%H)i >}@MØ|1v@g9A%3*g2g9Џڞ/ gdm4>R[wK^qԣ@ N|jh6W#S'2t[_y:מk<_T>ð?#?,~xtm˧Hiڎ,JS%mҭ BŊX3.,K^}GUXa- + [#r!|d1>݆O1hڎ/`ж AR%MP7 3nKQfLas}uKQ|򞫫W=&9m۱vut6'R=cp=hy>άi\"_sּx_91=S dG_ UgܾzC}C&L'n$/3<45 vMDi8u0Xw?b1Adwz#}`³q--::ůImG>l9S1R=#?/m;2\\^f)A1e!Et22h{?^Y,e ?ijlk?5(,esyuox _|$ٯ7ϣzTuQD'h\홓+p0J=/v8y2u*Nጓ8uG_UM${v Iu]SWL7m #jk2g(n+fz}$I&IB'a#IݔDQHO*RL g{>~tFSwNjzR<>3p:sϜ#N;=8s0f U aoÓS8U] DI VY..]PU1M(_d:e,K&Os:b-e|@7MC$,Te6>(>E^t]Kwl6;6 ^*f9m{v!FgM!$Xp,۱α賾 xRc(WCkgEi: iՠiʔlQJ{>_|d6_RV%mlt>^ 8ߏFuHUypWBQ| >2N؞h>uйӎ>GG6霻OTubhlNJ?!D H|̫Wo}GOئE//bJGv{:(';J=񬃒O?X0x;?\}>u3g<_3잏{{GGƿӜ(6\ėuCtmǟ>[f% uݐf%A`i,͈mɊ=W7n[`Aє]e1ڠƊekᎪJʢ`[vCA̎G] wn.>سws=_]ɮ ~O:=k+GGm,ݢb9n[X./QZWО W}zHU7v[zag F"}\LnOH=:zkɲ=˜KwEiihlН7TuTϟ/# b^Opn1mlЮx4Cq֠} Zq-oIG"Q}>#?/ߒ$SRUUUꊪabv$I ٌ xxxYLS*G)b<(2.o-(dݐ$3zO?7{>ɔa6_߮Y..zn%|6+f9?al\5-NqgX{<ͨm|~ZB+퍢,K.WL=diJI2c߲_8F{< vKQv~GӖ(e6dyJ%A=}  z=s{`A9I-f*,g;[EAl`CeO?IQ;ƹv_#*T q׵Gzϻñ KD-#?# chꚮi]'R$w4mGvCKM۶ RQUo~[xư\\nw!؎njH]77H eQ邲m4m{f$g7'eTGGZNgVl;t_;Pۓ'<\윑GA||g6TUI]E7ᄃ:>||e q<ٞh0`sq(p}"O'gsC[u\6~p8{;B;wA{6\x7#?/ryI^'0K(oG$4mEl7[MM[OzgYJ&dٞm$vx=QD'Erq?7/4ux7r}/ 4InXgg'pX2 jOxÛC.љڲ{: ՝]c4wGGƟɒ7y\ɜ(#6mGGWEFh˜I2oEiioɲ=QsyqEy$NWyAYhmXdYJQV%,O$u (i(˜8b~fR̞~˙d≵c"}Etvw-AsBj0ܣ}޼?r4%8掋3ۊ3K[!1L'٧wj<\7ǪBg.+Q y@aC0C*?#?4 k-tKS7h[]ʏ'$q|`>_PW%ɜYohM4MM4}JIRR{?-ϗSU9E!$'\^]uY"耫閺PZxo8D RanG;T: N`{5q vÜڟ)t<>XZy?,O<̱?#?04ݻ 0>$|{>ق*!￸ql@k",/\BI54 ^H<%$d:+&Ɍ~NcNvfGl|KC";(_)YO (ʂO?pu}Ev, 5i[KazX7'՛8PqN1A5m{Sx3)J{vЈ &_<*{wӳhN81ّGi]Wcm|W|A|~..\PU%JkBHKaOQBQx~@QU}NwDAEѵ۞|ΕMY}+xaMrsbn !BOq Ǩg8+čn nZ2~U}iӢ;b٢XǾ#N+VqpSOڡWH?9\ ׷GD1#?/yqI]|?./FSU%ww,|(l1FouRt! %٬hۆt趩hnMS (a!eYPUaq)YxeRvQou͙N =<~Rⴕ q<\wpԧC#gę'u:#?/? c9ɜkn麞ft:377m1Z(m,7( 톲*,YoW&  TeIs>}b(J!ixJj^zfm{f`a(q087=3=;Qa3۝>3gjϨV;8F3ٳ_]jpS3#?/?SG ϟ?}$W(eȲI ~o~+|%հ!cQTZJI[ۚhHQJ!heӰ*mK6(%N`9?s,4más`pA/6<7vx8|bGG_eq Je)|ͷ֏| Qqi5~t#MS6(0C~f&Cd>[pPQ43D)t8$ ?'Ø:"鍥=d`=;NlgCu`ݛ_5#?/3nn^3I">30[ʲ`1d]ݯ B$ |ݮYk `OR],3^~C[: #xBYtM BnLv-BR)RA^ͦo )$?ph1.Nq2j|POzìA۳:+>;cG_k2G)*L].lw[#̘L4mfa6m<# c6ujf>+kv;>:3|/@)t6'/26noJS%(QZ{uDg4MKm|9wڙeřAW{ʯ\l>mvگԡ'':#?/_g|&Sֺ%FO\]\En-oSPUAKKw!dY[tO)~=͆(5>%5bx`{9 qzOJk?g+#?W=dTog>fO:wGGɿY0TeSqqqΆx2$s}}DQŲ]iZqpN yXc&""6eΗ/X./Jc{X..nr98<ï~sqϝ(k6UnV#?#DaLJZ?2LkA7opwǷ~K^diJlw[ ׯ-3o޼C)ILi޳Xt$&0]6{& #^zKQTuNF֏h qP^_@ V<__?=^9׶5O#?# gyѲoKhѓX^\ެIyr$~\] k[3o@JI۶$y\?""K{s巟^p@m=.[LtS#?#=ߣ:o)tt6aȦzb>[=JY<ϸ,-htFy5MS'}! !@?V(֒D1uUܼ"/  'ʶAvkcu%uS=n'B>c XAUƣk;%MSݭ/-}vXJ>}LThZxJo{L)i!}x2(r|A6 Ev}K vGYgNb>O>rǥ" bg>uų9ણB ;&{G_UUU=}!Kgw~naq`Q9i2{w^ӶTU+hFVl|X:|? 20B[,hH=tGL}fa>_R%Fk.X` Gq)l}x< _%EÜυḡ|%~w!8S#?#7m4?57W!yOSHBX8+/=G=AEzbqA4h% J*6A貏 D+$Q7uU2/k-ݞ|9XA' O9a}f /l78ppAQ+Lq4ɹL q9cqC+Oz(=#?/oz$cۢ*ygno^!av=wwLSdR w}˗l֏zyMSWs*'BϿׯ0/w4mMe:a B)=~3 黆k˜W|Ko7ms4g`0s%y&yiNp֞:ly z{vkW 7#?/mZ8Il(i@Kͷ~=yV$ hB[ޮPRr VvaLWoRe[@g4BH%a6dݒf3z ْ, sX`T!`{{:I8C>Vqhmh0u_/qhC<;?L֞U1T?#?4~H=}mZnnoX,(l Y[CEYT$IцkX|<ω/w]ryDQ}M-UUFI2E _~K4TS2AJI]UNk;MSҶ5RY,%"ڦ&#F+EHe+6-Q#B)MY΢kҐ;.ʜ34Ç;=Jk| HeLHYU4M1{<#𼞲ʈ)Ef z <mOƴmK7mta(- !$#, /ѪGkEdJJVU_` $1 `ٰ\\f)Z|(tl.1eӶ-~cnPjwL{$oZz3̨)ʂN>ݖpㄪ*Ju3sH2"hCgtm{RZI? n޸?O?dJD(ў W7o@OOȋnmYo֮Jlw$C03]bmzϿCbQL Qf{,!$q2Lsݣ۶K _Ak*o)I2A l`6醮K=01I?͛ Fw˅ۃZ| c$Ʉ$N(ʒvMc ly)ˋ+0Jm˗$;<.HM]4 JkTh(d[;ez;?@UU$n֒/_>?բ35x8SχֆUα*ę},ώpޱc:U+noayqA(뚪LJ;,/Rn@O1ڍfRHV)$3ڮ.K0jD+CA>KH Z|PB@QDQL!<3nQHPRSUłccE6eyÍ)e#dpuuD0ɋ0ܽ ][gv3)y"$Co-UD@ ]ԍ+U] -eVc|=ahk݃ڮu+q#!5xV4 Ic0o[v_0J,g6# L0 t`v*7A<%5mg)rJ ]65 _TAe xʪ$ #AICe+UUMS1ѯ^BJ!j\DduB3/7kxz@X^ v[' ]/Nf.(%Jj(&#,+k|CVdCˉ)i c|ڶ%{oQpqywy+&YGijo_{+ɜtBYy@%| R(^~;EK<ϧ:֫G'NF*򊺩ӌ8I(COs|ϩ(PʝOS4EIaHS7|3syq|tûJެvyy'3 s5Z8g3y#W=` :O_A[gﳔ(,Hhۖ]e:R5mQKB,lO۶^ :WAlt5c J8I)M ٔ<lVı 1hMUuR E> 뺥mfV G R Tdyp p(T0P`ȋI Ya"ai01J!mS7vV _zt1>I<+rRob8 H4iI[L tOi[$BJ%4m Zki[A)6m4Fk "!sÀ/%}m;z=7a8yJ]Uؤf]c<蚆IPZ{l7k0Fc4 nH>TTuC]VѴ-#Ji&!$Yb^GTUIğk;)US{ǵc҉Ch9b;=2-(| aE DS91ViY=ܑLx r}IJ'@IMYTe;sc قd%t/Y3$n~E4Mj%yQZ=bi<,u}o ncLJ{  w,7M>R!@+mm MSl\3L)-!7׷t]OLR-MY]suui J(%@ p)hm UUōpk] &ۻ'{d2! c|ߣK4h%Cwh=*(> 뱕PZԭ1~!c4R+%yٳXkuAEӴt]C4\\"+ڶ%|f 8"mS5he8 ENX5RB6Iuxa'8FkA ӶmQڸja2]U-0еoPJZ='D)"n麎Mq^gl,"ʲj0c"UUwڡ%Z{CKSߍumE1w,f3tqn"U/_ȋ,!wThɔRR\Zo}8ڶ*kق ZSTx\_^aJ)@p}}˧/QJs9O0L=haO3L \@>uadѮ'}f3F܅zUcyԁ.`m?EMbzB<ϐ)!koq`{K׷ijŚy  ߐ+BA)EQdxg2L}{]/qhC_XM()c Rxtf[v'ڮ#c(iF P-TeFݔ\hϧ(*hMS! r=~Ҵ A[ݒ 1,)G.<="o]ܨ1>l vx! "1F'coThmX(ȳy(%X,.x\Ӵ5( t~7}\-F vC(yu⒢M5R*߻X*&M;Q:x欯۞mxzW_g6Mg_5}n(R&Ʉ0rX*~?fAp+˂=|HJVADTEEGD>ːB CeXhMmzѵAXdJ6Rk[Ax,=ɔ i\]ХFjv]!EPQZk4+I1.C qX; |0~RvV{!5JIʲܨkz+dyy.zN DJsbk\joI8N?ft]MnjHHNQyޠ a%5iLdƐ75-,+l~ RK B=ة=mJ$}."%( *Th|.MI8QAcQ_ɻ#B꺢,2$!Y/ ϮmŜ<*X (01 ]̗DjV,y>c{(!]B3dpYN't]!Zv6}./Yos0bߺ"#IýH>~|y/˪m&ɔ"Is&5eY )%yW7|(1>c2!D&s#JfUd:%rӵ=ww_@@Ȳ=h>| 4׷q13~NmگFNX|`k~=v>Os >UOG8k`^ hYq0,r1UUs6t=} Rz꺦=AyN w]~!7pqq>dYg4n\3L5(=<<܁( Lx{aG1Fk5AHUy1>wiAGuR)ɌW זn. ik%IiPPW-Z}}GQhÈSW-qýeȬH)hn'LӘd}EAT,WGUTue, {>mӠbhZ.i-[9a`=ilg)V!Y}꺥*R.^)lF׺iv"Dd۵hlo1GLPJSWiNPŞ8 <t]'k{,$Ճyc黎v.v?T0PWDzYIg[mPMiQ|16ImG g˜q"*K߸)z(tJ+?#bo,{q>8 톿OYMGAMSZ1g:]oY.~,bxz-$ + "b>[ .w}ٞtC ?#7e禜}n!gDO()<6KJtJѴMN`KoўDJ3,2QE ˪r!织uSU# E*E6uوEJ,3#N Q!]2|ϸx>Bv4m5Lt}@aKRӶMIiL&4mC߶)ݐp"m;ھ7#1|>_ }S%qGImq]g;t#D})%pLQetM]0ڰ |Zt#1 ɋCIw\\ .Kʦ*7zHV-tmG۶.xYôj_ۑf)L&N I۞i,:?3J+.W0ķ}|dvl7+ 0zϿ_Vq0@8v ZIf17#Ks0d $}MVTEl;0=IfUv$a3ɔ,%O.HY"'3$*Nhivsm^Rq_un9Mw_8QUtRMcʲ(K tu[Z:TSH> uUX\|7]PRήjhhGS"X 44m B6 eF+vaquu.Π. Dh'ԤR麒蚆( qkUuE颴=Mo& bڶܥxf3hhڭf;|MrXB;)QouU D̥e9] h !Z$yh( c<ɔ8Ka6 ;ҍ).n:I2e[SZ&Ƹ#5TLOOʐ$1m׳ۮimSy4+u-Jk iȋmx\ocr9<<~aL %}O}0٧{8Tx.ȳZPPAXЉz],ԍ*$!P%}oܢdZ1Hm) '0$wUz˪Pu}Q ژA\tdeg<Уc]!DamF((rpL \tszuA]eb(0ԄGהMCJ,E6KE*<|l JR#lۮ mu>h~g<Ӷ%Y^0$xvG"e{!iwʵP\TvH)G!X=>Q ]7# ]8躞nC׀ ԘgxmѶhzvQfO$Tuj" #[>w_>13=nt2ʆ#IHif`/:#"#%;,w!|ا 2.1c>Ѵ_R^C6mꆺqYzRxF\_R9__}dNvm0ɲlㆿdn;|"3kC/8W9W5/:fNs ġpI)ˋKڶ-GڶlJ1QWh-c>>0-۞wW(N8N%sX/X,\^ݲn!8ů k::vԩ1ηE/u }9/|t~al!RgB?]KxCf啛_/k{>soF7+ʪ"  oqMQ7÷H~M]BAn=m]l ㈲*ht:Wk;}㦷|*L&3!R(&"&yY mבgٜC] 0Z+zkɲ=M]oCZX DIt(|I U= ݐ%suPDhcy<>ִ]RFJA%Bɞʕ򏢄0}tֆ[@k=|?7%;ڶ"NBE=f[ 4R3|@ta{t$KSRao<&)uUe{0&"gxtg6_=]{=&ɄlnT]A>!p`o-!%wm}Mo{W+l+&c #h[1GEFU֎ٸؤ+|ߣ[ Q2o{k R*hǏ?ŒRlkɌ4a>[K//Tu=^;$ r@% eFsTh嗟޺ a'..٬,}:X3WnJ|?$If%N&4PR Adwz#}`³q-q\`5gu?7'֭YK%;+x/zTLgs|^U..2m۹zW7]{$b`Zu R65o߼ijuk ek]DdeFt%'AG6rEǦ Ev-$mAF.,\uX!))[(IfX(:Զ=Yl ڶBvXҗ0zm7mRU3\@ή=>gϧj! 4ͦhѴ5J4%Ì֢ =_FWlXuV I`{(cmB 1vEtdZ.n*ߣ;$fOQ}X,܂m۸PWť(eA0X۹@:n*!= 0bu=aɀj BR)$\$w\h\qqEH7rs$>9 j횷E[,# {l::-aSVyV0MIdfHuL(IA[. #i /۶C+ť[P%tER (NAuakz՟[,sϟ? _\횻À$J;KY\^ {q}}KGy/_>w={|OȜW{d +̃xaa!SqB8Ý}2UEխ=)'|pKWu5 2'R0ķ3Tut6mRnAݨ Ln 1^vrkK+-R~;)m 5+yY!C|CdX)JJɲ= _y,s-Ď;RcLTޞ *!$q# v.RQV9`Qe13Nyn.v.˱\Ew+9 !HQA,^I[ԐX X@+{(ĴsSC܇wm\h]c RvtuE4ucixFc$iZIQv4u;q_a[ dJS8Ը+N~OuqDUu$ϸ`[0ϋ\7sVAw{&}sn脲QJamOiۖ۴6b 73uٰpdKpD|n¥KbriQeu-s6hϥ2ѦS}t6hEVL#l1wlk% b~d߳ob/ aH=݆$/UH./_^^{>M[n#mRUqzl@Ted2">U痋 Yr(T oɋE!邶Xo\,/Io?PU_><Ȟ8 Vu',=sDg͞ẇ82T+NoήݡS~]/M͉w[;Z䐞*  wiwvX91YAOtnJ>-x.K- ?(ʂV+>b")rgmҺN;s97"PEM(($jbBˮX~iA 6A)ALa(*޺W91^{sovLca-(!\u*, cؚhʚu^KK4H}O?M%].JG0F{!vXzA= VJiR96c:N*I=P"mJH>Yӵcֶģ[L/wm08;%sJu u$]߰\0MBoۦ9 B8 ښNIC?psB va(v:7eݾvCv,AcG]hΞ:ϐH ,rmWHGxZsx ߐ9PZSɝ;ۿyDA vo8($ Պ"ϩ4IMO84u\s6o=/N{֙:mr|txW}yY$r~mm9`BNbq] axSNNOڞYx> c [TU./99:$JclڴE^":[!UX,yyn\47xDžy8KI(dwIs=}0̸A%!gFS&εq<㹋 [5&..+>l5Χ&7{p!B0p LZ@:ӄ78­kRZPP @80"FF uP-OhIGiwFxo72oK_t6e28Ʋ~KOx;TuzR*CwSz;ۻHڹϿ>1ٌk^^P rqt>>DqL:l91(@>,'*鱓}0g1i:"IS$e^ 4O':c{{J1JF~D}y& moJWŢa=/yElra'b&:- Y(W.eȗp`%í=$N(>rǧܸqX*[-樜źSUa\> U]az7g]RB-pozHX(tqBO{rV,wTkʁbCSU^7=QhU:sTDc8\`v8AEu<,3tJ۵xOYÆN5BNVO|۝p\Qn7~_%?浟g|W lNJ0%[(-M (J=RJr!( d{k ڙ+CH8wc%:$FC^7O.'.yg|񇣕өѣn6}eiO*{{;T\.N|s7n5au3: z#V}ކ)u:N9.ϯE~J:g0(o0sl0 d$c+GH3Ww?Y-ITwO"_N#<2hŌ8wpAC=J^d^y.eE&AHc8)q_چxz+4eZazCLQy漜 yp6ž즏 /fC7< 0bާ@7 `3kXq0x ?QHyq}ϚW{[[[ԍJ ~qrz2 U)q~p 4Zkn8vdf4Q%|x,MCZgo2mi: uUC @؁qгXX.vU]3N] C&lΆdrm ɲ5m[^9R󉓔CtҚ|o¾I1E#pR;fH]9a/=@R9MvΆ7]3T){eUgG_j{& I+'x9'n5M}^7|!ܺŏ?O{w7?ּ#^}WDa%PQ XcRRwȳŌTa5 ,RYxd__l}_&lջ |ի6>u7y~;V>y9e]&(e< K{ѐ(z~HYU*|)9d*DfXi2R5M8v~PQBD)teFﹶQ'rpk8%ݦDJ1 t{Wܽ{x}Orzrv89wmOMK8]~ӑb B@2(r kz9tL&yOeIUUwuW}EѶUb2c[0%"&)mLS|Cizp/Uqrr|jt2k;f礣1BgWo9E#R$c躎;+I6~gٗǿo?G U[W,‚Vm~0]ҿ:U@Bʞ\bߏ8t ͙DvOkމr6tΨMG1驪5[9[R%eF;]ǘKJlj+NBlr`6`X9JME2Fe5-Te " =zq.i2&Gh]eN`:m: tNJ NXVءiPB1軎)IꪎtLw%w?{ӳZ.yY,Oޡnf9NfBH޽\vkzd2[kF;2!c @QwӚ(d^mQfCcNr @=!@9\s0a_d/\g g|xBX7dafǣ G+%IS,NOHQR,(5I ي8p:!GμhZT0((#2nzo0đ$3f9v8IikEi[(%c:׀8Jɲ5`dy(QT-` J+)I#C+:ӾGN6[ W%X gk1JRʶeYgq/|"yxxGl ŝ;#=ܽ4޳ܹyÃ{V)nooCs' #?k׉#dH1yM}/xmt2A%.]ch-Z3~/sH{1`qzCa1F` ߟR%˓c&zZ'!!DG3$ΗŐƂDX5[mD].f,V'6AU8q0IAb4pBg/mScFcP]ӷ!^$ʽUw=B Ԯ$ct-Q`L=aжӷHiYN$N o=<)sJbL7Ut@ONP s@t^@}@Dh!R$%[ٽ|2Q Il]xXTXk)å#5]f@kV/OaBxv-KOy 5B(罎;=xr-,s‹{N`PJ3Hxd2ZA߸q]WGNVtK^Q6뺢zL6s0N$3f:\bm?|(`CU+!\RjDO:u[WXc9:K'`<8Ӻ&N^7Cw=US2J,'+NA1 ]5/2dDE7@]xGYC.%/JLIrxJeAuuMX<u(MQ[;s@)MYtϿ>zMi┲mVMӴYF%/ƾ>x~ˉ/Vc;a鄮7, ƣ RI|Q,W4M]ɲmS9:g"f[H yv ʲ(ڦ梪K2G+GMOSlfnfF+׶1̙T|ba^Ӵ=I2iЙrPX#*PJ$A*KF1/U/%zCXadGJt `tG5Jg(D.Qӊ@;pi5,uͻwC+F#NV*B9'Jb .QSR` |EτxǪg! G @e`o{7|?b<C=e_)> Ru::0n6T~Z.nA,B^䮺Px47-]RZI<4M3mHR xjޚ` dGQA.LFZtaDYeUNN|Lo)~O{%ϖ(OimVe/GG(\<1-MjtpX'5H$nɈ,_8kd2N&hږٿ W\~q,wNIb".y_7YyL"JNh/C V+ksp!% ?/[۶l5鄶kɋ c8$I}j|6 NNㄺ2ь;O^`22o9{w߿ / AY}BSWX,)Zҩv}i Ɍ*0F1M\%EZ`EY!RILƗ>4& YI;먛 0C!5*p~G]E'3VG 1hD}G4$A7au~x}۾;PUSFb)h3tJ u3nhPZڽ׆7?woc ϑAtaVYF_w~(C/Y(LfsLopf!e"n{$qJQ֬+0!dN(v"Cc,eQk]x<2̦3XKztֺtawÏAqt dD,NDQUdzIK]u&/e/|`8?IdKK3?vvn$weڮ'F%]g#M#{|/`{{YN7Bvsby'G.6aқ1MS8uҞVn$1;ۻ, <r*uEvd,OOc:u$)$sM1>(! bM۲jmZ?doE$#׎1MCQJd骵=weo#k &#lv:'#[HG)Gw摒?cn߽MN_kb:s\}b1ܽs{u)b{#ȳ8N&3tzd6uF]%9>=G%S%y ݝ=g^R )8EɃ?ybxv]g{ &\\$g?inYo,4/*;>JW׻%{~:~k]rxtufsN'@ңVN( ) NQpaX&Zux} |#(\߉G9#¶iXN4pؑuv )F,Ij0tRE>JF999]2 v]V- yJU @ $}bqܶ0E J|C*$Bh[>Pڱ4K|_B뾞_qR(!B0H̉)MJ 'P AT 'Qց@3?ks'7k7a~֊^5"Ow>BGZiYRjn7%yچʱc-]!PEd2c{ۧKg(QBhA[;`<-ƣ1шXgk:ێdbS+@JQ]rkR U=wX#(aƧd<a`fH\"O?ʵF*Eܓ$tXGZGBJG}& 5+>`>{⩷|##)if_ ~}ڶk|}FORM'$cQBS7MB@T4MMGx&YG۷515]HҔXe 3ί(cھmԿ0Y$U5!NCf[BrLt}O:$$ZgNY\vzd2G d:wx#& :,~@4Nбz"XWFc&Wwst|4HS@t]7e28EsJ74E܍cPRk*rd?I]W`;wnRÏ<:dZw k-''Nq)OOPx=Q $ 2;gಸKAL{zg6M &d$.{yW{LJ$QP,֣iv28*~<#>Ay>wj]gh!n=.0J4mD%6|V%eGӶ%I|azg]Bz(P+w/[sɗiJH!}g c<ϧiZn||(xJU;{wH:y[ J Vp86ӻ n\{Sx7[]|mK^dHX. U<40r(<_u-[dj9<1YF]} 9}ճK=+k_B,^.΂y)gYY*kxD׋#M"#/r<{!PZG14MLWƸ/0"V c,zEDa7$Դ]C6)V5U]꺣m*w1ưXO' =0Idr(g>!j ި]O1;b ]WSNXkl]B!Oᵯ4~7~׹u{yǟP>5|K>ڴd`lU{]X.@ ;$\ƿmCྟw|Osng;~a|wOϝʟ?ZmP%EQ!??CXkF PXRU͆eMG׵f3=Yf>azk5qHU#L1cqzL(]{j %}@JNLQe1(NJ!Z*|O;i|W.щcʭW+ Cn~hL:ՔiU =ZeR^5 u8>>*x70br!z{gt2qi.OyhRK}]ׂp,J9(LО7]]rd%G=F6,$[t9::d<>RJ(* 2Oo1xG)j b瀾m#z.Xryd2C)ݽk4mEoSr%}%XɌvVZiX?ZKʧKڶ0" A]xvW}<^uݛlmѵQsOK:rky4rQ:&;Lo@}.t"iBOGy=|?(r vvw 0L{{QJ>߻3ϽӞJ0V |٣Jfw/Xb7_!6^\6~g`&UsNt:;ܹ],XgKF|]i0_1aR5ߟ8ɋi:"gd a-<z)%EG1z2$/Gq|tՌ#4O{}OUפICvvXgK|Rcg{'Pj1L̡.&YJXY 3&.b,..VRb*|^tcgqveNvƮ=;AH۵] ̷iږ|<ߕ۶Ji&#I[KyM <۞<_)qFsʵxqn]UB00Mixal0=ao$I 5Ji<#MGg;2+hcq\/DW&;OrUTq,i:CXKd-҄Ru#h#PVcXq"R.߶#rSU 77Z^p̷$ VH? VE%[)}gM~s-vx}|_7[y|~?/*t:!0YrTtMN*zm1X!E?@`%]ghO#Tkd5ډy^@; 9mѵӜ.NhvpVt]KEBPZ{.I_y!Cg:qpp8 ˆ˜8JX,N0w$) CG{눓0] 74MIFh3ΆҿF+d<Ͽ\u X(qݦ!M׮?@U״uܾs 2p2iZ,%+f:NGUUMGL&`{*t09=<@H{ܸ IozAZ.u3^&ŋ7Cm@V\EW0xWYxx~祳<}g;]JS-0zj`s?wwvvx衇Zspp>KnuJl@s- m!n޺|k?׾~/2nd1cc`)o?ރDQRl)z@mVF!؞.]gЪ"&ϝ"KVFkU%{=`/QzdY4*]bi[[CozaFRy>leRZ[v]K$L'nWeIt(Y#$ԃL8c4`mOݔק,NOr-[c yFJE\5?-$ѶLJwomX;V99:&B|]clOU̷UJ߹/-YAHx<d Èrŝ( J= }Y4Bƣ1ׯczG(/Ӂ9+o{C.p/ν=)覵v6A;?_oN4ąd/r\B0JUTgپWxu]=`F*5H;[}XKh! ZCJI۶jmFQt:J'by G/ /m[qtrjnmYL'SW/+Vs8 c<%\( #&.A 0inj$9%Iw}OK);AS׆hԒ,W 9;0F|kq*< ߇(D.`z8mׂtmju ҵ[UUvPIJbXZc1Zq02/8>9jk0 <aD#(akkt.h-IhrW}eQҵ`vJk|/`<^PZ: 5 983;%kdߏ٭cL89eq*BagklZsX+(!s,[oYoWm4s.Ԣ6&}୻xd;L r_\,g;_s>/{L򬣅lIMC׶DaLQaD'4MM۵(XV ;әc8A7YkIbҒk麆Ni  !,"X RVcCzRuki=$[V, CCkPǒ4xN  ~s/}Kyx_>뿞% oxo}[otSw~ k~Ğbjox7CVf}R tx _qz6._R}WL |IεZZq;Zv-H)y^g5ua$Ifk GH! +,bN\sf}aߋCIM9>:CwL&S&JJrK_Ѵ ][=`:C!b<$#Pm8ƇTU$qL^eM,:wNLFc a :ã+k@wQSWm]#V%$e4PuS=4]4 {k;Y5f>>|)QQqxt"%I7=HQdX;sbKsvq.vAо`ކy]r>=[lÅt/m;֎2B]0ߑҞU[.O l{(┾m@$Sv5Qcz|?ZֹUt:%/ &IR1N #|Ӆ8hYB |?$ }CʱYFJM3XN&M[X荥3-5AA֢="Ʋ4f3b2Q`,/iruI̋_|?}kkx!5 :7W|g|wq3_{^iSyZNr^N}.[2Џ?7l?K_kiC-1} ˜jm{<(C vE%H`C mzSQҭJfMW5[[ NkPxZ;:'H`Zyu[-ʪd8k[Lߡ_9E$ہE9Ƹjvf~H6uJ4E^J`N۷:#cnr(u:OXޕ]+sEUQ#Ole45|p ''Ǵm7`eܽw6tjDoͶY.g<ēB^2ψB9pxxdx<(ˡnJ)z}^:΄n^yV&!KA|p|?뜒ik1leYɊ4i;4 1G!ZN"&{|OU%5::<$ג33pgla_E_I^)øedLsA1:y {#TZ/ cX7)~rb3#7tƒ@,On=\Z$bb=Bhm) QdESׄQVδ03?$_R6h^lӶ-U]wFRZ-7z~.3-Qi{{i <'h_*󜝭ھ"|tr5pDjf85uS; !a` uVI5vb~j`N(^ +/U &X6t}AY eqNe7J<燊Ke7㱗0/ gwTw MړQ!sY./о m=$tyD'6A*(Rit4>u]e9בBR枻mk|CK|,4y Ӭzx3PUWU~ihNIUJ=P @I)m B+k9sFmܨO]=FH𜄿U>Lx؏w~7ofc8[y| |?+> %UAsxw?.F/yۯs<;0/V[|_StuA`CAYjeCSA@&/ PʶDX*gOקw]עXz0RڱG($}Qץ=EQ̦sc^ #(#"M)5ujڵH!) әm6kX*% x MY+$t"hBYhQ!UЏ0pS򽀲G(iۆ`fZ5qyF fkryBf?M:J)ˊ|}xc>&Ge=JR%UQm*QYJm6 qH-Xċds痲 b،1vw\1/ײ &/Vf ªC/nNيAmj|zV0065۰4%P}aSe:xGtmXX$A)E1dZ=e6Q,^;I X]18<>tqJ]CYeV1R $t.Gq< x|E}IU${k ԐbiZM6-t7 3̕XN}O^|9(X_ x16=#׽OìO_0߾'~.F?>1w?e]X>u!p:" ԬWֶirzz2]mۊsvݯF88NܺpFHG#q=ӓcf-tMT@Ӵ5t.{ж Yc $I tF2"i:cr|x9w( 놝nݾVN1 r5 )ۚjeATG+[H?3<#D3mX{(*A+bɌ#Sa%MSO{I'ppxkٷa$/28E"I#v՗@.Ԝ^f4agYEL|nDkϑ I Jn׹9刿`sWzeQ2O>C1ٌt٪#ީ媐iYWO^>0{PJR}"\]:iѱ}_qpxow8N$k.bBrgXb$\uo@G>ݐpt]Pm"E<- CW‰ aBnPҵuz! T*0UA7l$~o?V?)yo=#Ӹq]L[eKuN5V9* VJx<o5=ǔ8-! #"ڮFe Мł$OdQ2kmQZ|)zcaLoIʪ띈R]ڶa\ƃ{6q^Mu2JGY`ǂtql~MGk;1VűfRցOO摒^3o5JJn޼|>w's'u0L#D␮$SέEmص1tqL&, p%$NܬۿP\{Md]}?xe2K{~:S"z>0.h{c~xP%]Gx& #C|֚qIx:% njya1+iۚ"H1]tcgWaB |pkw#E ]y>AeBBBPV8$(JyXۢR>mF)eYcLPZ#UJu0= i9P"!QJHa@juHLR;#ߺ=S|W~%ǝ_Qcw OΛ;Coy>N4@JKi_;,_(M؊‰#vcyO%"u_ZyuBLT=j}o}cgE1$:V˅ßSnjҵf03=a[y&IǴmx4ujI6Ϛ)񃐽k)X,NmWk0Y.N@xεΖ^HgyڧiA-849{\U׶1aRkڦ%bn| t b4 Q5w%cTV+ш4Mi$N)j qخ=҂CE";PZb@IRZEbdNߖ|?_!_{'͛3_qMBte~7EF_Tw?1[Pжc=ںtʉ @i5,##W"꺤mz%Z7z%יz"IbF1]"Ę!\2ZCҞ:ֿ1= $e4rFyuX`7쮚\YY(bA׶$3LڵtG'LfL3JRbMYCʵB""֫%Ww ֆ*y'<(a3nspp;IBiG BX`zCUNKuz]`LOX}g&);.U]qp.{ύE`>YfK FH$~Iv7iY] gEw X#Ώ |!Eypۦv?O躆c^ Q3L6bh4fgۡWAkRe,r?"SP{.>x,T38G]w8Gn>?{>+ͽ^,]~j`211ƒQf:\-\7qSm)%AQ9MiWzlati=0"/28u1W^`, rȑE0IҔ0q*`>ItyN:$B$ cF#7Mk֍ZCB7QqTH1P7f#W/a( BrV%>.a+,xȱ  R s .}>H3~g|{^~䄭Spq[83>eeAo u1vP75yϻnچ$߬QR5}48 X̧3< Tkxhfp4c%/2 FigZPJ 6wB*ly]zSi,ψOt}N7,MSiZ&}9-)z^{ e^0L^KD̩U75M T' V N߿V+㏣d1gܚﲻO)糷Au=E)T)dr RC-tyd4CK( sEUUEt6Ν[lϷQ0Ȳߣb 0a$e(q6 `7)8e\,/o/ Ywbf/ܽ K:#pbo''G,ar||H:1;:\UUTME:hr* ?HSS?JBj%yK_+0tJYUAeX2nQ9JkP kOsf> 5y}6o_*$yA!m}e 1,~k&~[q_J+h c޽<Фi3A)eA'A.+eŊwo1JF#EYh)%]ӰLoўS - R+u֊y˨ږŠuAP|2/yg3gpk9Q>+:+un/E.LمR󲛋Ltadݰ@/خ( VAФ*=يStIpqzBSxDYfL&8*Kw7 |r8b ,]Njm__\ͳ+7Vf.'o?0]ۢzʪtZ?Z;®EkG5o"sbrJ =m?oQZ"4=Jj`gk)µ~i p"AJf-Hd%}ow:Ͽ>,Y-W(O.@*Ig^CsrzݻwP#NG{w0ٞ2Y0+,sx/d1XxGAbyJEMt2cPq<4'56t4g5ɋ>t6trBY38`^x]O>/v(~ư.]tf jl8 9Y=ܞuXSTAEs;C<#WxOU:-í8X Ez)$NPi]Qt=Z;əҚ(]"XSӛ(dHBBV8cDAFC5 pRZ&!u]$)A@hL3v #lR2c@A/1K@*pjgJoV~a2#_{Է5 $<@y2?>V%7qttDUUc?/>OiN o};,]騏2WSHiQRbQicՊўN0,r"g49gyl5iE,g=-ߪUj:MOiQ "ldc-l|161  BD$" PiFOڹru?>=A{KϨgU]L-[KHJ<=M>Ĥ3DWuI) #GXӱZ#~p8vd)?φx){W.X uԮzXs9y彽(Mr騪xrJD@s!%"dE ,Vs/X#$Ii|>g0Y cޠGZi(%ѐn{e<٫ftukōժade(E5G ^q6uSG̦SƢF[qMsz#=,AYtIKNʑ*=XUUGKpxGG E)uYRI9ߔk7(Nh[PM]')8r]נ]aL1bۯOI:8.TCeEFL]Wnȳ]ׁUg3|D4, B?XӌC%DwՅXu]麆zEfx(KU(`0)++RV&uYRօaji[ʲ )M`<.Jb&3XAݔyƹs7v u?]9ʪ@k-W.dbNᘶkfFc!q:nMc'Vb+X1Z Gcrl~3Oa>mVQJYkڶ#?XY7Į8'MׇAux{̷:9hk\3z=¦%rr#d|`pD XC$q*&rmU=  ,͙gLGr.$IL4ur$wЭ;cz!GzJŒ\áhsHrt@+c$K첕b-$ec8EJm;WEΰNHs Z |򎷽,g仹}4;?Z3 k\_E1#9&RfX 41=`Z0s' )by6QK9sΝ萮m'$iBgTu|6'9u(ë{}Q7.YKv鴩kVq *D9|8}Rb}F!Ax"&-!){!M*"ˆ(%;4~6;>'Q57t+ٌ3Dq,6MMDY3/gx nFwxfg Hlz|G q%q|rx߫=k.{yui=|{ >~UOH?Z~7m7qUϽѹ2ij#Ὤ>^1RǘЛ[|:K|Z4e됾@j:. {^[Gcui*q-gG&bmzk8<<`{{G8(Iӣ#AN%Uʃ8ML(˥L:;5ԫe0⅂F!_ktt]KU,H i<4 E& ~"HCJe$ܬkwwy}$Z)Ӏ7!~w3C~'qrZ 9sx!P+MuBf{t1eшU4KuW\/sV(cYK<QQV9d|yʓ\bAT`AJmp!u]^1Z+|gMj`{{(󈣄(ڢ7=ӣ&m 7܈֞8 ]y6{ـ$Ͱ}A1"ҞΞ=dYr4=q^EWy=G<_Q;џT{6FoS3o?A_k(E]߀U@anŊ@SW 9QwhB jR2vM˩Sz7rGSA⤛ef^L%IbڮA[֤DQ 4X_OM h$-iv\keu/@n`QHd׈е(K#Du4-UYOnF˟?t߽3enk{C|J|}eim:^ q9sbJdprZ=*x|F1N\KKSWmKG,Ws' w>[,Z#(ijwΦbisszc\NB2n6fOeGJs#~.nt9޻mLq(gaOޑ0;EpQ<@{!1*]JRyPV% j C9˲ u G΍&p6izsUqa<5 ' ٌ4 ( \$qRVTZ_(Ct]EU !}'R>ԥx#y>Cgt]OYC1MFlMhږS}MUՔUA̗ XҮ\g".+N>CYTUA kc{)ܵrQH:CU1]H$YLGԠ% kǯ(5;TzxOij\xtHtC{ӌX>}{<}q䢲hp6qXnf]{MY]U=nL|f>֭$Uރ}ͤ[˟_}?Ns­`-ELSb¯8?}ϥ^[LoHæH@bIqj,,k1%K"{=B? ;f41% ! CuY1Wk % C@ XKFuzkr^ܦxc;sS)5q8:E锥t=tppߏ$% і4iF łkUyXkI6i(d1F {{ Àx1R3Fu?]E\n-QB69wV|/_ .!N;"?oѶ5Ŕx-7b5'<.]LZo%φkPJ1EP=s#G{d 3g' ]R+疛oa6O8yjw\oDza|y$z~c冢&e.PkyNYUMs8NO۶aQT%Պ3a{;k j\pLv~9./uu4X B `1V\5dluHAttmx̺^?5d}Gz1=t-qq=U|÷~;gp;_|penݛ)/I0kOzS/ƟbЯ4/|OT _f@g#2t:y"}UH~o 4 zODӴmgWۖqs9<KXKf)7t(Yגagy" a ͇XcPh\ uS>;p";D4'ଫB>yN? |%RnZĀ?<~;qQ ʼnjA Z+x&-f]8!+HҜ*;wa%#C&<6= Ä=ӯrQcaBS e9ŒtH zYZ˺j<SWk=& 3uVJMQ5~Q׌&(|iaTBUF4Y)xk۹|,x1-+~a^=]fOm^n'I _nfO#c໹~U3xsHnMdDr'7~59xkK}|SNswp 9wz;i1hێzͥ˗8<<{~-|Cgo6}궅rMt샤Ľb45&wl~h8;݄,XV|%2djd^NV%E!q'$.eU{>gML&ۂZj/@{8Q':`02hښ'4mbh<`.ǣdzRrs;<ısĝxqc~`Od4| LRY1ͮzo7K,|1ȋ +.\|3G Iý=!Y>(sy]f6=QʙhxL]qX.]C^[p0rI).^or o48{6⽊Mv۵qO)ge|8ucR6kjɓYwNɥgqɢݩc(w8fZ)Ab˅ySXTJn&$$6[+.i\/P -VKzĻÊJ*+cg,]q^5PA2'bUt Jm*Qڣs<,Yo~ QW#9HA2 "1eY!,݅fkk[-FK%ԵHQR ۬w 0E ܷv<' Bqr#\ 4md<HGRUZ0 쳻s ;'~k;P,ϙh/ cG( sͷppO.?Fl(ΏОǩ72O(Lm ]OdZ{#~/J piH笖sF rc t"|݌qU#c7s'5%8~7^ԉ~漏O4wFndsy?盾WYJd2Ay3qt&Te)WPJ;d%$5#PՒ(hږEaD۵4uR8I{)$(5(ʰV M[9]'At*Y 5W \nNıt}!A@BھEYHsqs׎8erbRFmS_yB?yyD} D%}7~x'g˼? _!N4L%XsG+|7HցsoU;{|]r;`m]G3gM?+^<1W%x9ǘkz r?4u COZ%E "E1q}oz?/~9u-(dUQ{UEf_4xM+nV2>uU3MXA6MP}(".hs驄U-)p)Y&g$I nXŊ<0VBϯz?o|;k`ZеϜv1Ό&[WKw7uM|x8(ӧrxt@dUIfE` X8PP=b(Ք6Ώ8ᚪ͘>Ɋ'`G~*vvCȮ5Փm׸}ykeUSW%XzUY2l;a6;"U`0JgIDp;/ibE p*p&C{4I: { D\ѶQ)vf3Z{,s"$X[kknj$JURWD&8aztHf4MC+ d2rX8!rgc%r7 Wo8Φu]Z+9Y19Dٔdc$nJĩ ̹*10JAt#鰦!S 8A$4֠zcO| 7MK~]ogc=6W=߾ؗFku_@0WCXӳ?m*~.W׿|>y#e uFItgFLʪ&Mm8vA].˔CnIDAT=O&LOSW$IJU[` An}_ƀ5=$Mxū^ӟb~~]|?gdYFvXck?"Mn,A3= MӐ:4uXk[0=IL<}-egHR(Z7DaHGK" "P!Y> "`M2 (uEI!r{ZSV5 M=_E_ @lJUE>^;1t*Vq,%w'cPnf>?@q=w3 ɒL0`eN>>F%M:dvN'c:^diFNmil]$Ų,4c^R vwOG|"ᘲX3lQk8JRY4_KzGZ%>_WU%O%c:.Μ=5'L[U NrD|+?i/]D<&W;Nq FӾsdu{9mz3vw;{羛1oӜ{ҳ8:묵v}~xjÎe-1GumT@W_ۄ0MIsp ̥/<O絯}-??ԧ>0fa2xqyQh_{(y"[ P!WBvThP MIxcݱ^A VpxxHd睤1yK)O{+\f1_$2Ѯ+R}zB)(%赵r~E1#ɕOxJ$"f8' ku 0mh_=+FP˶_}AUdA> IRn$Ӛ(h |alrmaO\6>KӣC$!}աt=QId,\.6ʿpwd`j+<ϧ+7o׶5-nv~̓7>W؆G-`;7pSΟA)Ŭjxkǿ 7|!y|iQu~k1Xr~y/"}kyɽzDaA)/+EyNl m'I Ii-"|{ڮi;L78nN~gd Ø8Jda ")bNv0X%s( #xQ߻P5Jy !aWWg/zM} C;ʢ "vf<%.`fƟh,_/zWjSY[?">u [-=~;xZ_sǯxC?!{s5˻M_G.N>'x ˅Å{q]da$с5F)5REyw{JPm:7bI)O}oOq4 Ŝ("Rk)-fw Z)!x%dnXhg0ћޡ7) 7@4vxcz(\ H}+i08[n\k{X?K ۇ{diN蜺Z(\r!Bi1ARO!q$+{&bUP%mא9EZKŎS:J1³Zʪd:; wN-~UDUAI׃ \5xڮ`eq$ū4Wqfdڰʢ^{W0bI5͇$J=sNůao\=<>lw&EֽFSeQrI$( Yq =gST:WO$w$"JLe"v}cDm:,f2ۻc8aZE1QDӴaD׊'ֶ?/7Yop38xi}g'N}<;~dz[]?vٴ<+6v>SnOڒXxy|2,3|gСg(b|>' CΞ;Ϲ7qwpw;ʙ3]nvVH"i|<' mӠAzD*^0&d<_*xѵ uU-`U6-qslO~Zh#h(UQ+n! C^Pɮh?8NOPʧj,Jn4c^5iqM@Po>#tdQX␢Z-Yw]ƣS@.yrOe6vd/au VB<._dźyx^!I$ ay)՚o|0b\P;nV(9V]{~p~DZޟ~_K_ٳgy3ӟͿz`=%Tk{wvS-cE{`cҟ{}S?/;~MoDQt]OQ`u#.>,}z~ΟhBY%IR.*hF^)Zd׾u9()$Ew^qqޅHc1dp3K *˜*t]j5G)5Y6*xZ09M|VN&+5l濦?*7iuQR2ybztHy]EDaBQ<%YZ1p Q eU5v= O ʐ#b֚+W" #?]^%H׵ !,Œ0bNUEkE6OXV,3t{{ FCBGh?z!i> !ź`DeYylzn+fShO:CJb~ =fSU.'GGiIiW_yu_`Tk:ms_TUEQHӌ օ#):b{!Mu|)bў$_wzh4¢PPa1:@]6-Zkf)LKP|8 C$qFĩ{YF]U+0qP$*Kھa\idM//e).A(,eLQO4.hN[(EY X 7Z0B>I,p7sY<?oW?,E?z*jS>;>V^?㦯 |^w{~^ٟ?VG~pW}?gù/;$n[͙7Q^{S‹_b^nmQ, =]khێ7)7]qhv !AoB>^3xo_yƛnkxLQVib]׺B4m>ٕ9Qk$I'qΑ}EyS[Y<%77hU&sUHUZx%Lj}wwh/̘xTWkY>HC(ڊ$MZe9'qFU4=dBpJdIB u!@oZs7u_ake;OD(%ꢦiV|)Z4%Ks0 V>iFI6%iSb39c]$,4]rӚ +~u}{W| eY\-ȳ0G,rIؖ4X\u-\.lmma;Iz& 5WZ.K(I }Ξ*OvwN3o3qpǙgȲ;jQ?YG9dVG1bonk$m۞])yv-y%@u֠}9i.xi@8f^vv) Ҟ5σ(Ta̙s4u-Ւx0 T&c<^1!/֮EjI&Z2Oٚl)u]G ivX*e_"$K(զ@JqFk[mk` hܴd!Qh. Nz]0uH(NgP, k,Q}p0rQ ♓Rk|@E$ZIXD:F/r3 y˯3KnڜzogAp?}[=|-9;=^&|)g>NC\ݚv_8{w',^@Œ?~3k{[y7}/{x^cta+2Z$1Ern{#׸8­Gg,uk%\qn)Bm("F+㭿[CԧM %MX '2IJQ)y6 "nEͱZНbvZZ,,Pn!O]5a@YQdƱTGnG{ɟ(N;ۀe*F-|Se)7w'21Ռtl"* gKߣu]K])|]!ҾXcFEVK|G)u5QɍYI5#4sϟrMf*H8N軞-)5MU3H$NHSY/ಅ&mhͺ(ZT9${ں2ִ}'k *&QSDDMx!+]GYI_{2nommh8Q?1!Jklߑd t]1=a(>ڵP+8P)O;˩,v:zsOS+Q)[};Ǹ?ЛF 9 9w;ͭO>/au)zZTER_|k5U O4|`+ x| 0G# 4fH=S`}<^ @kQ7 /y٫xѧ}o/;xs^ )m#+i_ "IcH$]Q+|iJ,0B=Y9Jdᡵ'LeU:DB9Z}S;NW=Mީ[_vcDF$3#2Qg6ADXX`$eB4'j0L(Rђ!rw#MRlr5g9_%r8I;'g׵T RiV Tl(NlK4j)hB4v=iXgqkȳΝGRLVŒ4帕IӜ$_j* vNb4ZXdY.-0Z:9mfCfSVE37l<˥,fw:dB6JGã}&DQBDod|q&s∩kLN@ӑ,įyd{<ީ ⦯w{^w~#mεiچ%c>_đS׆W=W|+?/ү&5M[8Đ$e$q$bInBJ;)"C-JB˲eۚnX 0l]EdSݍ]x_0QAdC%p]YQ;j_»Ȏ'!łl)_h_ diNd`dC: m8k|75r3UMYWXlOvK.0Nij&hD,c0&CK8բ1qHhã=+06bF%[:d<v=W;(l麖8Ni%N& /xK^W7%<BiI_F,sܒ$Ey0;Ϝpvھ*~Xbm|1̩3+$_  {i.Ⱥb1y 8c7h|[/=2|\$s ^(*,/qyNvUG(OQ+L< reߵV'0Uex4л0"tq' M01o/z!OyAC:\ \$w`K}Z_E;gIIaO#{;I߁ b>tɷ}K{&p]^\oU~>a@BnjeSt͵F8UQY:{xOcu]am/D0Eaz]4'k:,/߹)O{uvM-hLր(Wl95tQ ]/Sɹɜ1wQVyԬVKX0t\ *bPXDL՚Wb큒>e7Dz5M|9wO)zM}9=x;O1os 'Nc=g|Pxu0u3=@ܓ#$DOgS ?㙜9w+'ul?[_oW? ƏxCڨn<{/䝿s,[آ]-*[@_%Uʇ>(mKru`( MwlqZCuhߣk'I! ]JhړqhQaJ۴=g_p45g:~$2o?ӳ{9_g?˿+,u}[ZHqeU$ Cr! $ؚ5gw_uUY98cz"~ݷ3?oz/yދtzzXjRx^<-Ċ3,s$rk)tmGʵ^n^' NR8.KZ/ajj.q;)VK`8M#AY-f.)r1ft1ӣ#rꜘhN0ek;>(Kb-7¡3j6l \ yxM'_N]wlmm/`ZrgC$kZ4ib1%KrYЭ׌'%ј}zcadEui.ʮ4 -y};bf\KℲj98eo2w>W~n{Jdjة.<ϙN1~p0 yy"d5?Jl=\~O[鍭JRP+ n;y=}ߒrek{( X&3:39,'MsșOqb!s#/g̗͊rr,YhG ^F6gZ)mOMCfQq&}qcS'3ȲԹNC(˂$M0֐.vt$qJb0P\"z*RbV$Zp\Wd(O&Ay8qFs /dgo}~4/| ?/' tt3b{:C[Q.'}L'-X=N$Z{byqNX)xo{*zx6;?3 u]r$M%iQ (4jd^:s?MZÀ}RL"Y7a\i$Ӫ,X#E%!Λc4\bv`0b<qR#9i1ٚ#VUU`puKR\Ōiښ-ʚE }/m4h0%f{]"Zw_, pnƃ5<`{>xw WGmN=0,uǏ=wM* 7}Giz= 94cܿ;9=7>Ir{QB5tm#u1Vu!U9;W$j$Gږ,w->x?I"3ȘA$2Hj ڟ'iQoㄺ躎0|!ɵqP tܷ] %HT.70dǛIBtnR`˕˗hv}8J6^g |O|[fvSb">qFУm}|t<ǟE>o7p$|CGs>+?<5?B8B-ᄡqX6!Ϲaċn⥷l G,o{{ocF 7 t"Z#m IH5 T]_4M%}G{sKiўO~&n9Bĉ@ݫ)ߥ=M[+HZP2oLX,t-ƴd~gSK>D)jdZpYQA)QB5M !UU.WB,%bVpZ,%A~1_ ̧GuZ8c" {+.Me`,WnScpZXCYnMAekzq6{G 1zv'p`0 N̘rrBo=5u]cin tvDƤih4&K3f#߹?\r $qFV(8ௗ+V)Ŋo1!2,@mO6!uY4 ᄮџ:?$R+'% hrrV QU5gΜ( )Re9{ߟ^%+VzWwhw}W{zH};"$`<Ilʊ(sz1aa, 8 hsjg DОd'u|o:# .kHw $q Ͷwd~9uʵUvy>m ܩz^>I)AўEkaSU+# }J-“vhs4g7lMXn'=3L<{KXO_2G?v}`?LS~Qsn[Q3b$ӷW)?"FAckh!!ZKcu;Kx.KڨEAڮo"O0qITBP!bernZPgQ+-.^}׳\ "s45n @Yki=%KrnIz=]8D&s!} $BRR1Ga!oiLB"Z-I _F,Sg " (Y/W2B o%\k^!sQrʥ //i6.WH`@Q,6_IF)Ҍ//'wob=ӜhOQ+b'b]`|QJvvw(|iMw\MqxB?:QgŒ( Y-WlM$,N2%<EQr8e_ҮBV'AS;NT$ls60 ַNĊ?PջՀug6U<޻$NxY.ahW8u4q9s+0}EaD>P#KA=p,\Vdu-70v1K0ѵKpxtkjCϥx I"+ }u`(J*(}C]XTFl=?]_{=?ʇ>F}AP]⁏hfWsqOE++_f6-k_4\P1|kQF>r>vȃs޲ppsw7 HkKл)Em`0WВX0WsvȀn%#řS]/LrLoĭ!fjҜoE! @-繨gk zĚ}<KklH$Wuh2_c"Dip4 Ⱦ2\|gMOHaoH8g'翶v1+1uSo;(JHUD ˜},SKzLG(6 ,}IQk p1]or 9)KU<z]n{sY.2{.r I|C@c)ֹG1<{2Z vꊶJ u" +@eMdIFdJ4i;&S< wump9>q]mzs'y'1K-VWc Zx?{Go2XWTn`gs%b>6WI_&OITxJg!~GGxZ 2 vsRKhzwb$Eitz(-b<& "sP<%R # cv'8&QB&hO3iFu[7Ax(g:%2Kې$]6"UVc]jc>b]K+Eyr&ֺa8;td%EChVJ83X}7mtQADFxJVWmѶA݊P? 0 ?P@=S9)gUo;jP{GLdCw>O2XC.ig>rǩ1y_뿚[C{)/G0erۡ\鏿?i/Q  aL[hd)%uE]WDxMC9g馨߳_JRkMV(3:i%Hst4%R A {{WGdXsTD\9/{8XNT , €rΕ++F#!}rM? u$7R:8(__S5@OT~\ {'`[<nz7 oV?y֒&)aP75mlTIJvH2ޏJ]gwwlq.WGGy{p(&S:ȇ@k'9EJ8%NguVeYHX'8%/ӣ#P$NmniF"/^gtFx0"^7p^84w[[t2l O;M^յ8f۵~9]b/7i ̳g%AMG`m/VqY~'=[/bQ3Ӏ?ypƪ) ":Czqw}gu';Pv=if/btsrx}G0J;O?=2.>狾$qYPׂ4=R"u~@򨫎KKXcg$ɸj^~O.MBJP+E,,.lS9D]'RB|!1Mג$\/^,MJPUr8<=2O$ÓB9)&[/(8a1ӛOI&us͉t=Ίrt UD߯W t>$"i(+A$ʢd0DH]Y 籘X$6?8ﻛ$N@78N.'^"p% rijj|ڊT(8Mc]H[,uUE )`0D_vA'U]rxGӊFB cƓm>|_;h8""?ܹsʼ կ`e_[-4IRq12n2"Isv-7Q}Jskx> _~A8ѷ{8 }>sv*T;^]Zy&+۹'<)3Da@Xxf0wd[Gw\ .X2vvv %XhzH%lM€uB)A|b9:vwN6VA(:jz%+A>$Je8cLG떝go5W^ {*'J%Jh 2q}GKn74Džllh16'l N-dYUR:a/T95{9콿o5;y~y!ExUԍ;ڮh[["0uGl:ţFBJŭ4\Ƕ-3*DqBg6+uU⅛vH -'txGHrh\c_g{[u6"=&Q}:K^L}V^`a@[GM8v>T){9oLzބ:8Ḻ́](K6ki5]Gp4AW1t2%iJr~D1M[K yY^/$SH:Bu]3=P%C7}'q<9K Y7+dLJdž\Yuzh1X{;!]s||],m1dBB6) ^G6fA)ʈ.tC&b-u=!&o+B_[k!' Br uOJ h"6Dal6)Z:)eS-EQ˃ȼ7{_nr,io?$k?\0 /r7;_"ݥ{3cʧc0~Zη'(Z}''/g?tRv="х[Dw|;RPxi}&iŃh[ `h_ӉS5dgqȨbж5#}ؖm-7iۖ ǶEk[2zR 8y]Eئp@g1$su{2lچf%WnRplM\tC4;֛Pږd`X0Dqсt-8LImwFٴHt^0jȖȳ )8"r׎&SNNNpXd@kֿ*,Z045<Ų-ɔdFS o "ޮY,[S¡ZL&3(Cb6{U }45JydJQM~;rR>s˟~^/xk<ae"B|?=X.XE.Qv-\~ %blGU̦s`0`y8DUU5I&3~s4;ptɉ=bqqW?[c mlUy gl: ?̯zi?,sBVuvnZȆӋ۹ߩznאnR.\HU z$qѶ3v֛وB RYa`YJ45]W>#{ J)(gME7qEtD??}70W?C/{Զyⳟ&P+3{70_=ΰqx?>oe2*(>mImkX9 }eH"6,꺣;'cMKY#3'M3A, eN(K#Q` 1 4$癜zij!-+c3Ao;2u]4[vEpɎ$ Ա.%TQ( ]u6E^0ω E\-qI6~ߧnD,iێ=ѭmsp ӑ٤+#1;n Zu:YFDמ< TMiH{~@]UptӱZ.DuUADAeˌTnX %&~XU5O~4J`>-=rpJTZ Qu7~?\9cu9^'`ȯi ]g0ycZ_)aS^ >~̶hxBaHQLS\ߧk:YT2"k|'NgI&3Mb>esؼ=Y4e:#\a^Rd)$(2FI/YYALUxeiZL˖h9qeF!IN͘\6l`{RDaDYL&DQ"`WEʼڲLjI 3qeI}qd)MUb_G;nV&E.'apD,02>Si.0 {_}x=wB^{^x~yX,~哟E8#-`@:1y9>=ǿkߍMOY :@[ K Ԇ4PUfٌ6Gke^KϑY84IE-HrQZouD[h,OSE}iGeG>\,|[U8diӎdˁQ;tӲ(4a㚜07 D&? S_tYoV$ P`]>=%QbgGO RA+NץiEd!Xf2DwG|#VѶ-I<x]ԸٖeN׿$Nȋ+fggdmi|% #6Y4y`g?t5uݘ*l[,VimG1u#cz{"֫I<} mؼ&m>0I%qe;;;2kf]@xؾE/_N]FEa R9\wpI7kZCXYo(ԙ7W`J)!1_y拞e)T{l/ҍqAOQ(vvwiZ$'*2/dj;*c>dqR R0m[lCtsp툖.#C3жyv-MUwp%%{2 XGG#?<3c_4mʂ?y(d6Ӷ Oq݁$? 軎.NfB1I#\FK$GK97N+Cah $u$G]ҵ5rZEm[}ڶlV":y1ZA.eY =y74MOY.m[Q`?cT>MA7(- F]L0M-=Vsttwq?y­A\vl6^ q=/e~ԏǟx{nK~G?8zPe! 0PnK`R.U5`8\jp5$1F2fL(cZ h'm5 jpmp!UUIdYQX&B"egg=sΝ?'~zi0B[0P xrl0n'/0SkQ4Ye: 6HжCYXNhV 0bZmj%dC׵uN[˘u*ŔdZqE.]DUDA$_w=W2wv̘I?ϓ(Jmw-e3Xgֿ<uߔ0 nM Ϣ4(k{P9ٙu8$,Mw.録,e_dڲ74'#<v=!OS+0J 4˘AiFtmKVl8{ë(/ J\Q8amcRs[0(ԝ,R9>_`}ٶmP8j|_Ͼqgߔ gz4o>~332pgp/C+chtN6y罜,9>< \xo%h:I,!{,X.WđDNjQ$JYXuE&*KN';wq%w(MĀ̽;c@z#-i˲X8e>ߑ{uf C5ŐQqSpɔm;Y,N֜ۻ@?diN<Qa+-]cEw,yP0 14uò9AAӶ U]a5#:]3jeUրRBu.XRj6Cߍ)m_P hڞ< ]꺤,3qmvw=~#g*OWBv|o?~3(Nz Oboy53 n%ozm:Nlܷ' Lzsߡ?<|Q4?oO]W{naw.xiαױ[\g@kȲ l6 ZXCt2HqQf)Q6γw(f)eFgҖ' U]ѵq1~FGTe!~`^qh#L<ÐC)l:'3,,.\ ۂcd=Y(20p }#V*s5=;{ CcdƓ_)PXEgvBUUiz}PΈFn @gcC?0lM'_}\fm 2`2I8Y~b|,Ģ9Q7(mmZ Ya>ʵNb 4]+QL&gf66(Hed eQVۖ qh;!f;&)|vq ڑӾJvsoJ+z?g~_=o|[|p4s˟ ȯOWYp?ףMrh\ͥˊ஗LKA|?جW]ׄC,PrHӌ\Rrݔ@5R, AV)z;f9ZFM]Ѵ5mᛈT\6aS,[lY ,Sg^!"⺮z3ZX" W6'CC~`teq<-%DqdXeDaf*& mFQ#cYe2:8NPkDP^rAD]7MxM^0.f¶$BiCTR8njݰMW_u-'pGDQ,kxvюqK.p<׿d25!-]K] S&/2{9xdQcwb?q4Va6GG?wHy3g !MS,9wǟ*]b·"#WO$lz=Lfd9jcAdA>`>1~VUNe2j z|늨u\ɑi8a6Ӷk6UY <af9\\F(E8зضp\siIuD`6lAA@]AmkRy^xՊ0l8M{,y4BBУ4/~+ٿ⭬{'Wyrs-BG/1{9oBG3?eu|>>DwKǣm~cW+KDw菼x8++d]B<]{mi=׌up NH0\'\ܻ G.ވ(uf&VF vzIYVf.o(˂Pt Zx;ض±]Q3pxx U--D\+f)uq2ʱja { Dl˄x츎\iZ= w7隲PUq0Դ]/vjeQVZh1tIË:T֘ݴiG^}Gydo)HOgaD4t]k`dh-1%ey rMj0GOdOTUKY4ܻv WӊW<7MU%G<.{{'{9dS%]o;&~+{{U%Z^x-s/ޗS_ M' ~55]ךӒ)ڬYFWryM๒fޙ]CȞxDft2KI" 1]ȘNf\:ݕa,KqәFR#8&-Jl[1)B:dOfzJ|f& cb6jW`|YfEYu-tk뺢5,i ˲)eZƅ^W-R.]۲,% 6,9wN *PTUrq"P}72,x2O}yke)])=a2q8& 14͸UIcb#"n$&eB +}o68z6y|MYJZ[霁* :Ua+qݵ׳EGԞ9Wm[jgZiPQ!w(J>RA M[9.)B,$UWft:ѷ-WHZ8R5{;?xQm < QX,ShA@)!\y)K),OW^6]*y Sa 0iX*=?@kMӊs=@UYӄތb*\ksxp@`Jam36={8hļoO>eYLmWlvLokg,u8z'8_!>}Q~_ {,>k|')xno}x]G/]ԋ[aju'>'9}f#')e'ty䓿,,E̶xpG۸ec)ŭӀu}Njy܋+gEw$)dJ]])0LL{z6=YRV!EQoF||}n\~eyx:MH7c#KɌ 6)锶H|lV8F~#l-^mFi&wQ2^\63=Kt<֙`΄nXeֶaulUoF}7y"?f iT&<43p"s0=e1호yxahKRPf.eQ0OͦZx>]װ\.EIP}(ʼ #~ dB6y&"DQMgV*)ã7"X^-R] MEQbbYɌMFkaA@w=)Dڦ^Qd,<ϥZ65a3ʊ<τaSQuKmR+##e{`r]UYoVt݀t=uv4}_Z5+A>cGu|z^YW=ȷ}wqogs7_$}l Ä/O0y(ǣl{Ӛ=JГ'|#fg`u#>ׇ6ɻrVU˅#r5/0ᶛ.C<_ oP)Eo֊G?(ڈu! Q,Ń` 贲]2ΰ,y읲,Gփk1]ק(KXZ]k,PG][ 6Ri񽘪ɲ0Xtϳ=Ϸmxk_~۟#zCd;uu_|=So6ܝ ,>TOGI}YL4@&TI^y} ?ÇR/}sGV\}?Gk|Sl]3x$-Abq<%5uX`a<)߿̹s4mE^[n`\adʀE߷8MTƶl `^m@(U} O}|飿%_æ ۋy +KV{kOr{KS/ǝ/8] g/by۰x\T^ǎV4[ Co2h9 Dlжa`@rM kƞՒж3 }r||D |6 =J Sŕ+ONl8vHxԒ0b NN~w}g #JG2DzlX%"{2fm:ִ5 ˸$sFO%DByӍDJ>]۲\-2ڄ a"#, @X0uCj۸|:#/2x!.];<k׉*`IDAT=cֿpt ڦ>m4oߣ锆a+t'`f>٣z)&ɄkϬÀ!DAe<Y>kB?aQ39f U]! ^Mk|ș9YC?LgX|gdõOyB;w׵vb=:;}%E_~.*um{Aٙt1T=wF _MP6lNج&Uh[zZx?&$Oyd"z֫%LrjiK̥j,ܹ!{XmlSqbbY0H& Q4b[6M#90ެFd2m4iJ,Kӗ;ч$|? dPosm\OR81TazCӊMs:( jZ0LNQMDQ"N_FsY&!" tuHVvm4%vdfS?%}fIw̺?<~ ƷǾO/{ʩֲYpC/hOlmҶ*)94MIOЎf2ZA@'Bܦ&D!^gLwMu$_75I2*t3nrvdmZnBꪒdŵ2b| Nb퓎V/`Yrhpe.<t2`+qmkf#gvR t-]t:?TSl%q4a:Hz25di& MJ5>3o$ӱ^.Nƾ^$Ҕe;;܍Zm,ymc^UX58BD<񹏝 21lmKlLʹxmʺ3vzum TIJK w]Wlc]w-n$ ['0z q=yDqBgrk[V0]/9͸,(Q8E-W q y/՟!x f}'r`rsQ?sDw[O ˲MK>T}gh!3q˜*VBڶ֞)\Tҙx:[p@!3!}ITyсܗ (Q wac:#kbN,eͶBYֵ*80дU4m3Z{#{XM-k>̦̓f׭łތ0ҍq|!@KciM]h3&@M80*Yd D^/kYُvȲt<_VW5k~ &zd1o{n u(p= m''k׮n@ di K/~ҨգuZ>p;[|V  LLU(:S ;Z e1*exǃ%C''ri~6硰@YL&r\Wau|yXX)| 4Uu=UYc+6ź,Җ >"bڶn6!8X< ЛWk8uYh4]œr,%`ʨe)錘MnĉPUh\a_՘gZ/ю6 Q·mhۦjk9M tD Veŀ]g@mVMerlGIr{EU3˪aCQ%m:^bOgmS(>{{=w&;݋zO}'? ow\dL)?[<:`2((ܰ*z/7y]p|x@$w=cm:]E1bYBB H58>9J9Rx~ o?zPCPb2,ݝ]|?`8D)3W`[8?!> dIEB[_Fm]Ҙ{\3p;NvZzOS _n8DZ| 3 4qu1h?p)6cqyqEdYFslw+L'(LMʂ(8>'e|0Lq]F0zy{mKqI7`;isF""yEܠAQ )ܼqLfdܼ2AfYm j$ن9ƞ-Bu fo]WĊ al8 Kf2'!Y&z,FDځOUX6(e3( ]n- 0yVh"q\:Aos o$Yk6eÇ򶷿p]dpW7}o=ϝJy1od]LqIn=z?%㛿9g\_Y;^?H ]_'WOr_ ! bWEQ Gg^<p($Ry)]=-kv\P"#v [f /Y^um܅.}ߛ"C OpE26o6dk"io7ңKdn}tda "\0TGklVMl3)'ӹIE[]#눆m0vdl*M@,"vP"R@E"c8{Uqَ87Wgf[z\A)m2LPwX%/ pJZ6VŸm0LH _/2]`e tRlKhq'ڙ*YoVbqE wrAx-~@е d&5`F1M۲IWL'sQqt|ȕ/nT]o+OE*Ueg Rl+?%zuwF=G Favq˾Vd "c{8NؤkvwvPESfu]SWg:m+`WtY4mrWMA[Kh=vdXj MS1 t[i(H 9(Ybm Ύ@9yH<ףk[b#bXf)k/ڪMӒjX/"6p(JH(5Q$^"'7k `H&ݖR$Y:T*M[%BW=(BFf)uخ,dMKUUĉny2$"khtnj4 S-j(JEU@O5^wQ0=`;7cp\k?yÛB2 ;MYiRʌu-|˸ y,ϣo*l7"*[<Ӓ '|~voF)Y]? Q}=/x ox]{Cr00†a0$[VE4-U]( )ʤ8m|ϣ l֣)SHtˆkdbbBEЄ1j`1A pS,"l:MhZ&Ifdi* d^HG}&Ib-e:x8etC$HI_RaLJDI b:vdb͚8l6t}GY\tqSu4-aֿY_ƹs-*%"oP&~D 1U]um l6#/rB,Iwt`~5J KL-c\d:vpG>kiѶ$};C5Yߍ7=Y&'$-H,K馛mmzL~xZD1eYL-:.GGh-%4ٜXV\g%YZ?Ygbȟ3 f} sx:@i`C:Sކ[ *<(E=Mmj%dbN lVtCkf1ʲi(pFL9˲{Fm CiU=aV2ΩZbȵ0}'M7 AHO0 HǗ'f!ضm@)<'Nbe/=76b80,iGާ0 Cx7$( 4$Il%iC|ֶ,DABɦnk^ צm˖ϕa` ${ikPf1rɕA32J<ϕ86煦 4 \xCYtmk.&A60l)VCYEfO>JtB"Ŭ_޿+^p0"$n:,q\Pbk?}_6[1tqa>l/ ~l?$^>#7 e{~Cc߾lB;/y3jSF5xCCR]R9ÀHmh[n&]Bt- _dYqv~nihz$&SPIֶf^.hdytMMӶsә븴mCwrm*vw$3^I5.#td]6RHG2 cHք*gP:)qI7ґ]-q]msr|<0 oc+e qyUX--ܝXW0"-π:R o{ڮ𐽽87^0a˒r@%C'۾((J _Nxe֮AF=Znipb^#\M]JSq)9f>E.M]cIhh#$D36c0"bи^`o5֑|*88> KoH8 rbTU%#&GƲm) FR Xm3{?/o?nqmw{躁ah pK+vwvy;>'ݏ_ui%Cb9TGƝw.O.~8y+QJhMQlss@8.mאn6Dqb1O.9m9y>!ґw=e]^Bne0׿@ۚG`]L3vneUa[3글H<@JǶTլWj,GzZ3R,Kl#FێqQI64q=,/3L)ʂ*${tdONlc:WFs3$65ekQI<@.d3θ4O@)醹>LJÀ2 )I ;d=y.Q|"g^|?`^wYz"gOݲ&%7f'1O~#op]wK!g^Oh 8'r^Gz$udW:DJt=阙1|dKԄQhֿ PkXd#ֿh\MYkʊγx]f2E+ʼ1bL~y1X,NNgF,K|`wgW:&$|$N'G&oaw'IB,'̦;b%Hځ^2`ڮ% V6!_ Nj2F?thsDkK\4sawfD $a[ m웿E&,^DvcCw}xթ? u/# /Qj0q]֛%QP9-$$ϳ{ eAv`2?;Z{* miq5Wm%q~'_*Q8[,K:9V?xg4ޅ[.Ц ^<\Oa">_ [Y5'#,OMeA/P|m@uQ e@N|M&蚦Vm߳٬myjeۦ,dUEJ =ϵǾēWb{щQWҝL.@h b:VQ Bvx>||(v/,諜me۝Q&%̾]|~gyÛޅ-YmPUt+,3n C麉e:Z)>FƏmijA!6Tu%"S,K"Vls%7sp%yWґ6 e{>u-YnLqЎikԆl}7+R y@zrrh).9Ed%EA뛰nۑD:yv8:>*:"IbzfM׶ؖF*bݮkT\x~`ZqAPm<_F,ARrO_姧Sˢm:dz3 ᮡn˲R6Z X\ZD}Yf6m'́ 2`ɋ뺴MKzpg襶?ؗgy85blֆk'\i8a UU^FYizG ᦩ _/Mܝ =|~oq-sm P:w8Uy=oyX'̿gtM{i[mC_tيf}BWu Q (2{>ї?/~JY(m 5ϩ$KKkFXe;L!׈:[*GAж- _9Yu q],3'rLʲ5]myZd2%6~dێdm]ێ4MO;}+E#`b bF"u4װr%L0XAt2# %(o 0 r귵i~ I{/: X;vRYt&ɷ,EGh-,(Ǩ!kjMQ`jSW-;'Ʉ= $$(bP0 tGrŗ?+Cw{wZ+RtI5%C']eiV_m2șs.G >bPWŘBz0Sjǡ*>Hק Ҟ/Aào]-%]q-m;2eYX],tI_0HW!֋C}8]w}]Omr,ͅu1GJ /}ky/G>Si~ZrYBc)j*}5-˫os-wXX嵥QV؏ڃ'vƀt ( A\BJAYhR2^JmKRz`6; IyfiJ׋+Oۚ.kXB #!i ́L݈HB:HVU5:^#7 ,F㙍[<[ "ɲ[p6!ӑmNIuMGvH*K<]۰wak59ha)%ڥ?ǥY:vl۸'&/1(aAadSmRq+mnm߳0Ю._zod:' M,Kһ'،HM+;h[iz<̆Q,nR9Y Ж%v|իٕ K5a[KnfZҶ=.P^x=x aem]:jKog?0 ch֘uKgW1ILf(sGGhWc)M^c20Ƣ*}Og;,yƭIY>P5q5E3hAS%{{{r;04'c]dYbMsS%$tJɩ<''Gخ-d3̰lʪM XyƥnrNp\OE!HS5%e^'1Uy~QZM2]2)lk0b^0Ҍ[LY`1%ȴJKHH뺬V K1j<Fy%{ijibL]Zc/-^y νOt]?,?!5?맘v MhkmNF}eYa"4M,^xTuzuI}wxS+'T|a%dk.^+/rX;)$벬𼐮kPU5$-r4d&ɹZh"꺡k ,OH"-lI>XE2f9}/ezIv]D(傻zdĜ{۶hJ:{{{mz2lp,)uBnlA8>[g^A`nPGQ&v$.>c=sNsMVKm?82S||NOȳLh-6ж^eCӶ\;¥ǑK8'^@OOQXͅXoa٢I9]H ɜ8g)0PdFk!o>dk\KF0ZK5#z˲L'AYD-UciжիW;ږji|SGQWklǖCde4v;'c]m;YX׮2sdfɹs䐰Y"p !{H& \Gq88Ix'p\-gs}l`5@9>S5MsJ<[)rCÙ/<Njy0H]Oɲ5YBUJ B.y^`-dL4 h] v>d6Õ8Fϻ{!') N!"C+\'l|CU?wHӕ8I2Ak}v2"٤"I]+ϧnE5ETD8ZXMmJض=aq3hGc;N_g\pIr@8FAH, =֫V~lঈjbQʞ0 ed٬eqM7 :BCZ-j"Ib֫LEMa:p]/v4fޜ^g No.:V7öw|U6?}/yz7BL٘Ml F1Qv ͆ؤsiMԬk$4YЋڵ+OBsE1ER9Q8.qP7ER5 | $@YiJdiJ$``oʂʉ㈛oUrݝsT$'c@1IdYJ74 /^-!@fIeix  8KQ2˪)dHHdCYfTMKYR9ŝ4MCoE>EQE¹`,RTU9{^br4` Rߵ.yat}GQf+?v;|mW}gǎ]$Nũ*8!R)E  \ .@t@A*!BB )rl]ıOվw9}׷m:\]:gks>c9ij<םM<'e4 5ccuc`** ]!IN++"-,U-d R5 *1-CHZ UY8!\y4,*VMI` AMqtNx/&HtXu[ ıⁱo|$ifiD"8LӘ忡YRsxb,4Mq˴IXh9؎KĴfp]`{JM$=ٜh:Ŷ,ln+{eSl6nXӲT!mR18lUbZA@Qm[lRɛB计B4X`GSK'Y8;mUB@i~41$I&Jl6땊&N_Y45N5EԕB*qR thێBm-ؖ-uP+iHn6\G%mmuSIU+ r J,6-['4uK۪j0$dyNCOIPyR­M'rL FԒӘaRy2L,dCYejǦMQ֔*XJZ7N۵5zYꆊse" v7Q<~dۑ&:qmhy_%ֿqJUTڎkպVξb4=,K,Ӥi[,T :AVL#5_6MmG^H]$Y=[oY A,iRVȖb$f*2NQrO7MrEa6\Pv*AED*FP *qq>,7-M[w,g-M,vTw4"TιĒB{tGLܸzt:UPs*&V \_݆K^V[ewkPil'_+}2=@5ˆ7oЭf%zXCnO6<_;2͑7 g3_vC}8)qkj׆|o4冫k;8h )y rL3ߏ۳ W?}="{Bh^|C16͠=(eEf/kKyNwQ99zw\"˨Zɯ,e<ʻd^mĺԬ*ʢT HfY΢@BmT=R"Z t]S" #L9funR9u⪍EٯFqba'w|/0,T:_,I8nKVqh V,iq}FxOQ Ӥ+_9f6m`a9SZ:O0S,U$:C>"v.5cuhm^7=bEMf2&a`Z*Bz렘 CVuٳ ]`hQZJU:ssݎs,S_4M}"Ӽdtq[Pp߷| Wj1MP 5/_ QqUەdJW=ǓmWQxߓzktl* G0RLTUI2F?_:qjϳShFU!0)'u THqRFNm,Hrw0->kRַ؎ChJ\LӶ4u03w}T7낳𗒺Qj* &R/S]ە$5(KP~! &]kAoYCZ蚭 n6kuk u˲hȋau;wlY/L@eYX,q?W7թYCTҼF1;Zr_UHO~eb A6PUVS7z֧k h)wÄ,00zM+{ܦiJ\jKN-ݫIJENWժNUDQ*0U Kmui:2,V,Ɏ-P u&M+s2[mkdhFU6Ut\ڹ4ɳDU9HA/4 eZVE M*.ZU6]5Hѷ-kCHokF8m;Ӵ5_΁F=@ӎuj"%<ݬ=+/qv-ebPtk;nh%BuG ?ſzLMxgK8f>U历l[%&< !(,T#&#!̾o g*56M9? &i5R%Ɍ,WIc&BRP9*d7m)ed+; m۪1]1ΰBq5)@PW$j1Qk&NaM>m٦K&tX,,K8; LCE%&QzKȶM!v/KV.Ưk&ޞAl[2Rahҡ"_*00'5ME]/ӕ8 <Շ*WLmY*=*g>B)ThV=a^gt[1LMaZuRhǠ @4RiY>\'IZmBGij*I WʙB\)Z~U nL9y|\Vj_) Pj dRmji!iT&_k屷7z> NnF^1p-)~rQtv= zžK[kk/ ʢ: -["lqVM=';M9aQ٪-<2Ͽ)" f^4jT=O7hުpQiB?Rz$kaж5E\S闦8ж.Sz}aUqu muS3iy\?b6Iԍ&u/ul͛WL'S3uimh[%O (K5s !m+Un*m늘N%ٟZm)Tu(6T:r6۵n6JAb(z~mZڮ}AӶuݾE3mPfG*W4TخKU*jW u-"/J]9 @m$T}v Mb.HVږc[ԍ1ʃ)B7Ulxeel>MD6]AT<>!A8Uq![8u<}OOV*sUtA-W_鿮5MQ4MTT*T,ꁶm@mɖfDzuɮ."dA6/Y޿T !w*y\WQDrTۧȪTJ6Ay\"U_ȲӴT-Suy_DipqqEeU0L KDEd nI)//htiڮRc*Un}캋łiۆtF6Jâse֪*L:_9N ""?!C aPZ Cu^YXhJȦa6?S"Eә>03^o?g?OYzb$ Upd\7j'` +u>?g61#W/p=(iگ] à(s,"NMxı Oi#0}ă^XChL]LyOZ!Z{suܿݵCd瑎aOPh/VoՃ 1,SOX.UKK޾eXfO7TV`womvG>6 )u.04}[%Y?=ުjS0> 'tv! #6J= b>Siy+e4T_X*ZhRQ2ؖwg ?$ >/zAL0-Kt\Ot|$y /8V r=WʴL^۱Y=o϶lەNd3jmAjy!uSLsZTK]QrR_;u^ўa)B TFhOsg6wJ씭k{}æWV/k%U^TfyUb[*yMOe6[(d2UE&ݮW>SW*ٵWH$e^{z糍7$I<@%w[NP[q麞"^KJ5GKzPIDYq릪UI0Hv{0`2ƉE|dߑr M[=C]㸪Tִ ^P+_,8??aSoHR1YowUΩYptO, Rj!jYH<Ն"RlZEP%oCߟk݂*"3O"]TUdF7Ilt^=V_$ADQd:"vԼB7>T%a"hJhKQ舙=U5D$QD6EdvB&&mbU~{P%pz[UD<}Xѱuu|{(So!\^PIis;[ ]X)t^WFFQX$qڬV+^?y_q)b|xJ|9)BA&t|qmY#FA@]aHY抓;yIRBcId2ysLի/~I* dC]?_zO҂T S$O z.6x:G1!6u uCE@".&Dw}uJKjJ|ՑJ'6٩SUDE" 0 ֛5g=lӞ0v<۵ڞ4-l|"w:ek!tDR9Kypt:#>"ikZ?bY?UDVG$!M10 è"V7+ݐg+ B:"+ KoauYB*""R92l&Ks~d:{*G6-˳%xOY4Еsr˲" Bv$-[ja?F?|6b*Z:="2 J ES+RM~2)g~yb;g Qi(*lK!fM{WjxC$\\\y^_VT[bq ^U~DduD"Ipj5M˱ɓ| :i^5s5ղoٲX%m;*KpziF~X4$ZZG>_'Sf۲t$Z+rds~~rt<]talkE1LnZ>*t>Re?xm[嗟sv~e8UYA4ÑlІSSǭ;/xZG>]CO]C 7n&:3Pщg)y&?x5yAW[?t =z?gQ]/ƿ?ܯ:N3M7i \=?Kua%4$iPTeE!I ?/J,Sl?,[2Δ ͖ho)imZ8zF-E!MӴQ5V K[9vl<׌ES%(!٭0dKۮ7ua,$|LˠUQ Z ,#NODwIKP<;7o_4aX\KdBHd-AJ R M!"e>_=G'Y9EQjȐ?ϳ}B TuG8?tZ%Mx't.\jts^:B./>1ҧnOZw<2#K=[b\c9jol./ɳ8S|0BJgxuh|8<*bi xLH 7_% um;IÒg4u{E6+"cے&_(:~=Lӡ36-ggl7;,&*~~?Bַ_,Z P(dپ߅<߯3%_!Ht[c/S$al\G[厏hT^;"Kchʏ~#~7~C3p񌑍y睱@Dz.1ד_:9uzA5+/,vˋh՛e_ͯj~A4$8n_pmW_6ˋ+61af9i/pK,0-֛U/)T ʣ<elHcoN;#u8n=)5ġ! <;<$A]*~GG??x3%AM=vs8e ݵNlOw AJrS:LtK-1w%.m[ݟ.iOElo[sg~w AY`.oy _Ef38IX;V5pJHX5y|YKVGI۱Nf׏IT M3ڶBUJ7kxYz؎K=ŗ_ q'}ӟk k乡ɑYšhFۑBGV5x>,q$d _w3Eyy&&y'~hµw_ٻtkϺ9}mų> :0I$Nڧ_#wYd2OԜ Af<>#4#>N9R ޻^xuk=lhdoAz3\w=џUUYJ~w_Q#<4CCԱ12.kt;XFDѐ˯L/juݮT[J ~n?IDAT_%&Qt og_ȩJcHSbIMplGתue!aam]Uxo߾&~HOfBnXse2NIv4u-IDz-^Ӵi!JyOJ<6Ԡ\S> #C 1:*eW ?c8/@tcճ m#llIǸ}J qF:Hb$\i?[ۡk޼& #S,&IbxK4:BQɌ0뚲FV8@!~Kl:wit|ܱ'Ui}՞GC|j2@q  wyh ?D۝#zk_~r gyy\#LA\_+~O$jLd6[PU%Ya[0b.iچ;2>g8Sd=JCM\`äiHb0UضW =?:r|:Rl{x |wC;4>]fvx>ި#P:=|7z$͆{;4OOOO%3M's ?%;$Ŷ-0p\dmlwn>]bnxfNE]WMLSeUa;6n%& ?&Sno_qq[\a2S dG]V/Rlyxo~ނF gޓNIwf9cʄyrP)<^}#qRUVFfg# w]R>o?x㒶2:nڰ3:lp[:Nw2n ~ԑfƫL?GW9/ޣ2ڶ"#1Iv0\vMY{ބ(0e)L|?`z'?䓏?v\0-O{EقnӲN' #IӔ;39׬˾=N.!%؎}`cBsr,NE(+ |&L]+Ljw ) $W#mXVB @A4x.-ygΖe=/^G6IF9ur{4M Ðs@f MHl>0L,/?DZ]>봲e{!ۛ_YoY,ϸ{K4,Lgr\'f$&Tual;Lw}$^G@m;rtȈGq_BKwQkLF;rQ$WN@ d@co-;} 0z=7`ĻM}c5ճibtII?WW isv~AxOydy#ɜ󔦙c!,WsbNW\^^qs*1Mvo|[Xm#+ aд5w\^^oK 6-{PɃ\Tğ`9 $= ƅc'I!GߋCP'!1p =*:6v_<{1T ߁d2=sSSw"cl_3~_v<!74HHlhK$Fߝ?OWeU1fnCNae)KU$qiض~j"# _ZYyd2'1rq>Iu<,0qyyMB>邺nXoל-ωR7ox=aJ-Y˱G8rGN7z0R:.<({B 80@yk{V Nñ]x86J eZ:O сI`HfKNOOO+ދyn1 W>' }pBYeTe{<1D6ڶYFUrq\|j֛ R*VvG+[Ϯ+K2lap*'M2!iۖ}s=棏>bL=po8<ű!'k\u`]FVWIMo]۱G,›]oèVA|l`?;,c8dį‡, {9V7v6?3|m֏ _0N(x!͚r_/s)˒x+2]?u<,O?c]^~IL)e"Z.MX#Q4!"0bGe>>(LI8q|dϛ/MgTeCcs$۲zE n{{E2Xp*GNx1G#7ugxbdB;'uλyq`NVOVtcD s0\8O4u zldy) 1L[>3%Mb/iZU0k wo| \?$i MSH\k:qǩ*\q^Ul`Q9ah E |Ŷ[у<2(TOHzd۲F҆_;ejQ KƱ3ZtS:(Ea hzqǎGA`1+~ygEݠGrȲ\dei;iGB2y^xIjkw! "lۥ+a`H-]\b`2_tX,TeI4FJlUUEP)xi9K $MSӶ ͎zË/ȋ|+eN} so+GXۂvAFNOBkc_^UFNG?N{_ɧeczWO;`riw\C~oO=ғLICt' s8* `>ryWx|~l:i[65p}^|:,.yF&Iz"h+&v;( 5a!ۖ4\\\X, )~{} eU&gB“#`9H{a*F{RnaGy?}E2:plb|~ 5EOdG=w}?I8zX0Fזߝ?Sy$r&9$2LfʊvEl:K4},H=BmKFW8'\\^2ͩ%dk8! AS,K40 >|cG,0 pJ$L3m#mo^,kH'T$g ؽ6iyꦾ8u%U*6t)80'+Cݿ[3 "!`p{{Ë!ۆ(78aV2.㘢(dC`~H+knhZL4OϖOflVkι{%,ƶm.ί']zӐ ysXH`ZCbO'"=R')B#58.%~]K!{דYC &_K4;i$ww7 2m%lnl6cYs}}zWfK>f6]`[u]mFV#+.ϯ(5q*,#3t-,KXX7_fJxnmo,({[ʑ:ORI`???oߓ)A18 )ˊ4iꆟ>ꊲϓMM'ADS$ٞ+Ap}>w[`]$ b[6e!E RZS%mrpG\^^Q9yۭ1MKH  J20*|8FC Ox(w?0F:# s$?#u;8MՍ>q|?m4mEo1Myc<ǴLb96d:?m+Gbd>[P%/4UNnN=V4R${Z!gmHi<ʂ<`5&/_GQ[3-kEJ֠oy{rT7@! H9>tGB{gɠ},7ݛog9LLy t~sOwd%OOOO/gDEAQXEYmIq{sl6<zAy{tJY/"#.ί᏿xXAnOpdJYl`]\ѴvlWs޼-}=CtOd12kg :8~dcS=+#S;9qN;0Kd#ӂG]"gsvg/8IJ''''3A7xh-4ݳ+$-7o_駟a,˴2_R -I!pA,gAJ rx\?ǟ햤*mjxx| EU`قD,c[e PBH&yK(~Vɡ-Ɗ./(Gv8x=uO짏!8ъ9iɏ~ǘ_QQuӲlL*i[i?Z<_%'IG$ɞ8;?'Nv8=ƛWA@FYrq//q}}@ۛ/pl?˗ݾ( L)SqT:'"cA0TǢ.NK8TZ?ā') Kmh}Rn%}3a1g|jCL?ǽ0︟;Zc?7ɒW/y\ɜ-L`P ^=f icY2|G RXu[${0 !%Qa\_ycY6$򂶕DLP3a)a0E-o~IiGkp$X<8 ?"do tx}*Ug_90b>]0/(dj@7vk,d6]PU%MUcRAl|e"% '_\4 I#<..[ʢ,R}@!BCЧtXx tV1bC@wiC# A)ZAOXHmWD>?AdK@rxA i sEQ)~KH^|(HV›oIq)DZUocYeYQcڪߢxaٮAJke M[ 9Ȇ4ik-A6i]`<&|yvzƠ-8 v>Z} l8yH%1)VWf ^N5|e"0fLu-wqt~:RA/g9$0PU5oY7]#L(ދH6ac; }`ߍX  $ǟ=NytN祎IR S;<^8@2HKm #O!M_!L}o ɡZ* 89?Ӵ(V\#b4?(1 q)˂]HBpwwCVTU>}CYuzKv-vC6L'>[7fK)i&|~|uD7VRVgЂ>dօ2Hw^gQe䎾߯y(iOȋFj =OA?W =%h 0P+wXgxF~g8Vpx''''3Y @Vm9`YeUӶ`6 1nȒ &ǵhzAދ}~f"M,9F]78ߐ& ֒fEU\^(r ly8nm$Ya^aSVt1z#>\ `1#ttHN=W=0ڡMyڐc: mTzPH?l`0u8iOI]iȜ????/ُt4<vi![(" &e![-Z=b 7iiZ-ʂ8^c}O&YR `B%<>r~~adEFG'{=fl}Ho{CF^;9z徭CN?;;1?>Ÿɧd<o,NOOO#}m ⊦ɳ/)|1ReYX6aaYrq~e:=2-(+ V2>Ja6U#&ItBYLY"\ 1'~ f Ou^8^=c 2^8Z:G/5&92N`<4.Jlh9rQktv'+cKzx}ف>GZzh aA|Տm/@b- ȹ{{.iQ5WW\l- 0Zs0Ntrwlk&CoAYՇ~AVu'CQw ƺ퓳v Ɔԟ)Z (zˣv9[6TtQyn#w`1;`_99eWxspmQ9ww,g|eA8<_/Ɔ|<\ ?S!ٜdꎳ%4Mfb:WWu0@JLlsv m y:yޮMXa.b,M<'MS9o߾|yIi\<'wNiXx톺nϴ~Xr$;Ԇҹr$p呀㏼ZV\獊#џL?T! pXtrJnjϷ`*AR?v;P}!28cIq,ԣ HĢ 3IS.ܼrmLaE!o|bӴI$Ku9;xk}4qs 0 SqȊ0 d_IJ-ڶ&bLİL}e||$*6)k4G[1uyӃaWuu`BÇRr`h(|Hyatqhҽ+ъcb0t,ƥp=x߱"8CrZ?;[!"-~hr 6)3EwCm d46z*> qۏ 93~ԞWa4`:IqlӿÞ%Ybb,RZgs-AMfLsd0e;xCؖMYk9unGJ\J0MlN%l+^\_aynӲp2 I|f+]Im]rm$Y1HyY|}̣'.)]s@_Ȧlq4.#F_vp9Gw=Hj=vtd;G0gy8iZ&SlA0ן#j'>X,-]sws@EaT{#0"I^dԴmm;fjiy\c&4OXo64uyA0* jۅZblav><.]]=Q(Hc>򑼟|7n$CS4V`6Yo LplpI(8'{7>=罹v0yPa8gݝ?KMg۬W4mvU%0DW4`NtqОa;.m+./p H5U]erpe#ږ=iy0" ,&Sno_\c vJ(} Ѐ;9|WtYy|?ZO?O.0I>c~oﰐA51G>P%G|r!O*B@dX?Ko˳s?$wjt2u=yx㣏>"28C-cy!/_O|AM7_<[iX$!lvi[UedYJQ~jex^0@ԞSwxF4wH :~yǧBp}uٵKԞaǰ1aQ #;{.]B?-dAO$7 nOOOO%,j-eRef @&,K aqvv~FW=>S àk( y\?"ɒiql$G1I# e˰8 *)+ʯk_q*~x wP8~F}^EOU;??k~ۛ{ ߧ!: y,]?znhyftg?h6p\?uk4c>]0y5)K@^ϖmiJVUZI4̦34&M.=4~ꑲ*EiH)'{^fm+/)VْV<>s~~P/UFSWfc: ;<8xyR99Fɶor{{;2F^KӬ?St$MtTO1&Ntck_tgKv4%~>u]?[.Y!%xO]6|eU7l (r<ۡ%UUݭ|}]%4 ޾!(2,’RSZ"`M'3,u]_>uU1uGnK\Z"zGaՁ;2kݮ$HAVT{G/ }!*K|?A 's%Fi:n<1X}0<4}ɹ^G$5/`.<_kILӴ''''sEAYHҶ PԯoZ\c۰8[ȳ8Ng:ka0#lk>S$ $ `I$XGm, DSd" 0M~eK2Ƕ,./ήz)뱀:{#9 8 .[&є>iTM߁{r?w\?ϧ_4|ŏOOOO%~xvl-/>W>icl! g! `X>q'M dy~/f޲XQWiؘfUQX6hFYE|rw{f) H'uU?O'T#^+n>d*\uatSu*ñB_|iI_DFoR>@qIoއAF]ʽ =&wcAVCrkf~O?$N&!ᅬ>iI{0䳯niضCQzW/\ ǻ;&)a44Md}nnجy}<7%UY0)Ǽ|~GUɞFJRJ"7_?} ڦn*? Q0 O)I%1UO/^5vokhc#DEGU'5uB}|>w~wx큩./F;0댏ץƺv1s_KO>_2LmCxug 3U BFӰqaeX|<<ܓ&Qa a-4Mϖ+Llk4!S&_WNmC#k,RNB ?.lKfYk$-eս"S5~*-);SLq:*E_ᇪ. }LyB\0(\?cAQ9MC(Og3 a iLJ*M]w0-e -N1m qy5|5_`.#NAJ~B%dY$)7 G쿖 1Ml6&zf A@ H<??};5=m翏>%R2;V_<%Nbڦf6+7s,}w? ˶(۲gie)M!q'MR...@ʖ;9Y0_,IǶsU0oo^a-I^g<>nԶ5?pv,KɄ< XG^ii_0LLPW=|f`XaXLQq>T}ok>3 U0$eQ!jUZ$Uͼ(ʊȱq=0qȳRϟfj2D3VbZBq`ZI\,1,˲I2[d-qce'L-ׯ_qqqA~l6c:"v[d&BMEIryAUCP y&$Np=jq|pzN,ϙDS m Ӡ(+\ץ(K..!L,$rb[Y9iw$I(b$͘M5m޾}YV!ٜD $i;Dф,Y]PW-4iI^`ieIY5UeGd2Cϣ*UYeet2g2#0ò(ZCU5A0L,$ `Y.i9i%͔,+͗XKJ "B9 $IHô@=0%MbX&m eY" 3NH qa{wgweyvAS77XÛaVy65PB$(¶<lv^Zb;e#eK$_M&Am;4MMYWZ5AH4ض9?_4M20:a QZ#uߛJXHpC56Vg ,,ài[? IA2L1A(ײl֫{ʲb1_݆}%g ksL(P5iz.ES9a-p$iu MCqT}y[0$RضCY [,c1?#Cڴiۆ) |ڶL֫ ?I=A0z UU |gؖn#a8nj4U/(3 d>zI(GqLݴmMWM+L,ű] !iee[T*|Ae9MMԔUߣm[,d^11 ?HSJ bby*+f9o@mA(J4 Èmq) _̦3\'7MC6$IBDmM۶Ik eS%<˘A[4MCU\W4 65?D%LbYi { Q7Pe+J۴8 C뿩0R/[ ۮPZL^MWYU*jmLjt |Ҥ?EB_EG۶¿mE f&Kץ(tZM8n}w.@᷵ƿX|f LWA?äm~V* 2?5mG9 p=˲jDQyyN^f8}mk}d2jJe"͒_r1e#c[&g ѳ~/ a4aEECl(9; CVG& #EJrfxeL'3"xOeEiX~o1[`,ˢҤ;aS75I8.uUOɲTnq_^ٖy l1",cb WAs;F26wzŎ=eXyYgmʖ~۴UEG 4UloH!OT![1۶BL$EQۭlbITU. lp=_Pɔ,-2y% "\M4Zݙ&uSðhچ,˰mn}C^dɖzXMemZ82=Ɏln*|? 38ma; aP˲4MM]Գ>`&Ŵ IxwFS㯹{K^d8Kxغƀ(2֛`f:!wm_1)7H)5~7lmk !apʉ\"ʲIJL`@D8GL at M[#y qU#˴q#[tl:=W=~SEQ5~))ʂ~efj M)yx-{W%LJ; @Y⾻{CQ8m[-y\?^9uSkOAۿam0vRۿچRCǓoʊh2,Kl[0hL'oE ؤz[#X=,i'jC@!Y"q1!aXz/g_c[MSQowwoie{\L(/P2-v4*Ri;4u+5 U|G?&,(`Zj֜-HZJTuIDiRme86UUѶjეdyzmۜ_4ڿ(he۔EeXū/=a&Az-KM ?@2{ |iBMc$Lhkdu#S똆Npۮ7ʕ OW,kڦ2 Ƕu^-iOkGj?rc uAJv<ʲP#~tm|LcEY@\߶w(BJiszz,Uܱ( ^L dW}叁y>j{- ꦒy!ϧ(dbG2jow.kWq=*;datmnܧ2W&\ף(ruѶal"(˲ǸrM9 ?\]F=:0Tk0 ,3UMڦC?iTc B<#NmMY4MG0Li yԵbyN][rJfm98CDc3x%m vj ~Ob\%a8_90>]7p,,ImGvh]a^*'5E׶v_[So$eFSFwɳ>>|#U% iR9v2\.XTUax븤iL+?$B3 ]u} DuylZ/A^k':viB^dA,h9;=kzG؎?}inRPℍKΦD{ڹychMj.Ep7ft1Esnn'e^٦gKHOc4ub9vl%|h]G48=(R@S(ui,K \ Ikд6g['\@VKU/f~HQ] G°@eEԪs6;nj°xeؖC, u$q\,e2츞49nخ p?Mti-~rv߂Lgr he[b5'B( {0Fx%A`UQ\x^w,fS! Cƣ=,Q+v}q6jU(KߙaR"# t],K}_e:IPu5jmA4Mc:;WE9.M[^l ðX^H ?N |/JZZ#ƣ1eK@So9l!=Nٿm0TZaDВflvUoٲ; ]ә(˶>w[MKe ~ Á\kWRe>Q7 A2Z-- .eiNtݔ^,KmjLْ j7߬^z4mR pwk_'Ya]Q9Im2wBInhd$q=:Z,G7dYBao3{Z2 Ȁ*b9_HsE=?Y]SeNmw̦gMMMl?7qG&+ph6MCGaj"JS u=dMDkt /we&R ,*+l޽[TMp0ƶ\<[=]ۊ}5F[;)D1&B⥚6۹xfhuzkx㢉If~_̸"im%uִZv\}͛M/$[,ǵHDqmF>\ʺr4݀ڶ.âm;vmd]mcq຾8J5Q"=QVe·RյJާn+zQtȋiFD s\5},K|_Ӆ q/DLP]#2 Q%D]fԒiZ4m+ub8 ~CFJ]_i𗕐6:EQesvRaѵ=iuV%˝rj۱HkYTߓ>P)]2 "[WxxE[ł~O`Oݴ5c(NRMՔF{ aH_Jɜ?>Lwj<}>z?*Cg66S) fgSO*gF'M)+W(A|CK(r2/8q?>_z=ܗݿWUE Cd^ dGc(R4۲[ESDѐzjB34,corWILut¨O]YAeTUI]Vm5'{~jR^^6hʂ8^a0!W\PY!eg|_RuPU)i:0 Id#kԻKV˕p[{{L8MɲL4A.+@0ꊺ՘qI׭h[Is^o5q]vI,08!GGHJx~nipTAHZȷ#}`X&y9~g2y42 fb` YJK`' xI9q 8M2] T4&1' 44}[m!ɫʒ8V7 NgSB?U3 eҶ 6S42z!ZF,i< ֋549Nvֿ@?~jU2WUk rE4%Kc DmU[#NS邿b)ށ7M։O5n]jrkQg?P:UY^eOkWn` C=E'|eq"OSF{hF'Nb$ҏc6M]Qw5QY,,s4Cë[z-daA?J$w+tLgXM7d:?Wc6+ ˲4MXD(R hW#Xc[]ٖ҈eۍJuOǼ~v;U֝mmYm[7q8;9i+`Y L0dv] ]4uFUKl3S%EY1EZyEX͉rrr_2=ZEPeYAГReKyv(J>'SK$nQ˘4FjҐkZL&z!Y&´$uvݣ¯"m[ȠJ߶eM`^4L.  zw\::5n&.QUm;bSV 4Ia,<$I~ބ? 5LI˝Z}_nS,imp#>c;6Ҳ\.L f[MYhֿت씶kp]9I۶er~Z`Z&>4Ӿ?]z.KֿJS\]_f.2hmֿo?jq/ֿmۜ('?m!mӒ2"YV\FܖiVx-!BYrvzh8RSBaWyF .˴/gmMp0H`bؒj|~`0f>4Rbʋ),hۚrΕ ]5cˠ-8v-Kt| ˖G]7X# m'ؖecՌmf0oK*GtC|4]c92Y,f EQTMmX󜮭YNb|/i]ej*T'7 wG۵}Y`ttmz2' ~sJUrdZ6iXiۆ 0HjdRr1\ʤiTZ9:8"Nxn(0pkeBjlU_F~Mf%KSO5n$1E RجG"Ioyz_C=_( )ސB&.wV,s5l[K}1ՖiХou\,pe94uqaD¹$mlb`8`\\i9hgK[;׻Ta]zEG)g?`_Mw׊je-eGaOm+7)]1\~|vp6eY_ +oWk ׄKNT]Y ma\i܀mH 5l?Ix.}lǥJ)kϟdo0eq t` /Y1a!%`ٴUC^Aӈ>F5xEF#°O&vZ, !E^zeErW V% (4ĴmtMcoovaSŖ5Mba%Wе@4G^$p2l!Ke(WkDak:@/ p e4&1y9UIdҤߓiHj;Lؖ +ݖHlS߶T:KMtMɕ= eV5QokK?`8F$!T|&50X, / oY48Ft&gضr5SЬ :^ꍑj|/K0mthݻ/iPjd'v[7 ˥|.~_B__<RdL\6mGMk_R_ހL"F|іpp047^Ib^{_Pӳ3L0;0Θͧt]+J$2ʢIJLFt\u'؛챘/Ҹ4DM7(>U]E/)z񔖔5mr))˲^^Tvav=,Fsj[1OTR*Dllڅ׎z4j|0Iח;vɋ|AheIC%wi\-zEx)U`xtvΣ*R#uwc8RV5՜=8IVkMҧ#" lCAt8F \U%J Eb z[^m1LlԴXVzEY19SW>+fsMQv6^ W`0Vj(+2$e0b쌦m6VumIߏqF=i&ێ_. PF|61MtLa[5-jEԋ(ʚptzWW_MyS x)c#NVx4R*a~|:3Miږ2X%ߧng4I0 OJp/3&T 6Rb %Ñ~4o%+H#ߧV'$g>;+.=3m Nٿ'p8CSD`0R$u;wb\n4m$3;)h,\=nh+9|T\l]oWۙNOeZhζMa$RUc.=5CM ֵ0mJC{~wm͗~ADTYJb\ȋxU]awEvC@2f.a4@u0(.Г .{u` q"2IzdytJ/P24LKJՒe3dydX.眞t<iQݛk:M[svv!sUNNo۴Lge%| \^\K&1⚶uqDx;Zsb=elEtmG;Ab˂mEn#.2kB?"MbUR py&S"%)!ZIޒV>ՒG7( c;.*Io@]U[OhښpH2zIЧ+|:h]hچlxmp~~i |5jƣ= ]jӁh"S A Cl5wxބjE?a&eQ2M)Y[f1 jY-$ͤƓ~GUגi,rñ5hrg:;ɩZ5c,sʪb9Qf?²fsߵݖx0 ,d6?mEZ]Ư[(J^t H&'=fsl{D^ L۲\ p$NU54fP9dFMbM*=50E![z+Yi^=Fp$emm9O="ٵ]~8^{p8$]ZE!eY2e)mÅ-K;vY v nlזǦ,fj6өb5R_nv*I,o}AIߓc\jX.;=le:=%MӇkOOipH?ijA8kGcu5LgSp$˕4-匲*O^_QdUE ]%IcR\WBZWdf9IDhߝ>5ϾY)YrQL&}e% ݚJ6.-;Mm{gSZ`]63IlK%8.yAF4m/9_(=Fֿ(B/zWt%f]L2~q-׾ 4Ki\Ej_Y-۽!QO6/^el)p$"_tʸDSo?:ΧB |}]yM,s**23FxuUME۴A@LEjsiYNYzC0-K MACu,u%쓺f)ٔ %?ߺhVahmbf~.w!}Qӻ>B,AE yC߼MVT͋ \n2i\ ǵz}F@ۂYŶ,\S,4b˲z#|A50h0c,Au,ܪUjքAİ?0-**Ld16WuWMIdt蛤IEdL,W {9cE=FeKCeyܓCuq]GDstEA-SoQ/fxӶEsMSM!ф)9;=E_m*ئj$[X+~ȠG7,ʺ*da\˜j(i4MSf1S%EZ-azlm[QGGM@eخ,EZ8-m |EdYr].e/q)9}jx/$ dI$_%YX,@x}~E \a02LlN;c<X[4 5A2'g:MW 䏼0BRkx3U[c<zerr]4͸_>)̈́4[:-BhEƎN%e3461^~d}6BaKl]rN{ȈTog۴<$NTZOC\/2ͭt@C8#VM'B泩0l28(*!s؝JEԘ]|*Įp>=U4J`* E?GE}eAlvlD5NON888Ucº&YNW[a/3aXՅRVuEQ8mRM]cB "K~$B5ZFub&<Y֊XJơS- a]~48==aG]+CӅPԱLh̺Vunx!vP*lDxlvF!Za>J>ƂئMSDGDE0M4]_`GQҌ:TuC]؎މ"2? Vkl d>)y-Kld\lm@\J|e3 R8]4ej&ZD =} àQEXCU ‚l CCߔL[w6@oY-W 4.z6ؖC^x"Uon5!aQm֢@IDAT}_8}VFn(۶E-wM:|og7Π밷fs#JsFJBֿDOs|ۿp!k)^(͓K4exJ7I7 F W7r%A|tz.=W;jm#yLgt_.*qml7xA_9Ez.U%ĭwt}峾?qWisL$Q 0qՐXIY2yiORMU{㑦UUp#yi9O0LqNi4,+GWȋ`VWMv{UcSoR AݶIMhb,vLk wttѵtyw&UU~+=x .tE]ciIFwuzQxr1J]:hڎzIL&0M+A6Mp8f|7EQB"F'Ȇi-f+τC4$^8';Gyk?y+֋BF}?[Ѹ~W-[ ­Lx̀xV1!{ߣa&CqҶa0mSYC `hkmވz>b1ƍduP)3WF/XVL'e%&N3/x~ ai&{{6$1}$Д<+[ u%~+Sz~OӶ,^\= !Kl3<ж ˆjE|>'CѹO隆pKCq,z6ՒM]\nE،qm`ڶtMsq;6hj^֨>J^\U,nK|",K =,Ӧ*%;2n|P#iU#6uF1HxF~2=;|,&,QUR%h쌦9<AL? c4VVTk\е ф^놤ɚ89zCMpppȳ/|~>wϷ2wj{mD I>xzW~89~R~g+y+ʢwx~?-~ ? o|[)ô8<8 UI/3 < bK)/mK^B2zn@ƌ":IҔ<0 ,϶,'$q nj<Ƶdgv yhD4uCo"dY)pD~c^O&CSoV${K`iyO# h8&M-~Q`.PW߰hu#AMEeܼ8UUfd4:.K,ZQ)}'L7 h/u]JCY2-r%Y-蚆pO5k%ow]eYi;/F4+̖cpžpT;??a>cYW[8OUU;X{Χu~# {ڦ ?a.7GzM&hhB&+KʉzVI!v ~o@UPzn d6a&>q& fxeDIniAhH8,{^{xԔVu;lk;ʵ7eɗ/:y'uN{ck;ngz {c4t",>>3rxLE4 'aXiuB\Yr9 L&UMVdܼ(ISW5u)CSWL:ʡZ%o=܏c#?ܸ$HX 1LrIҘgk<`o<0 Q Y8x<]â?EZ/(\%KtcYdjȋW!CL}Ύٟa՘AG70ecYՂ^gooM4ꦐFsںq䅃kxO$BDM씽=TCi&W<]+v4! DJ 9==f<G>?mGǘya"g^ z!r=??6s:>^뺮86'' F#06CDHEyJO0MMs\>="c(X e,Vs}ʲ&Snx$gtDm]2rW"udiFF: O? r{{eifiضzb3OuK/XQ%wp4 &~ 9<<}1;ؖC\TxH**v89O0"/r.x#ܼᥑfT害^](_{sc֋S(׮=c?]L6m=] ;/`ZYR M9>K=Jf |yNY ڶ(j)lc6Fh]7-KD>eYE¡qtxDQ$+WNVA|~Nk "4s4MWe윽}5Jk~'^~g-Kf{:dI7Mxp|^4M^3_N)ˊ~HVw=``8kb]\= cUU=LC&t=f6?MG@{7}:] a'KSUb ЃwA۲Y|qNYoZ:JكBLpLSUdEJUe L%zգ\=J9׮_ްtv^JHyZ-s:3&~LUZp]4Y5m)WX6R)- V-&-+ `_oes~~BP9ހZvW\iV%>8~o!LAJ9={'']Sxm2vz#8(J<'Y }/jN4KY,f FٔzMS7LX' " ӶqQt] lmsq7;KW{NK~-!DvyCuva7LgQ:LgdyE}fk(dZ{۴eӣ1eٖ(s $ yJX+ש8i?9{шu,,A(|!tz0Lo[~I!9=?yox[? $q,,#E8 IG/kow~'۴8t/}*a#E Q5?ǃwt3 C0È,M OknW ƪOEl ãu͋/I=!EihL;3M0y4ԕ1,d^o@ Ȓs=ڮav~Fd0Lza?._NY-S7FRF˲c^C4?zǤi,[bE{{$ɒ~b1'B&8`0FC4MdוjZ*({5q*,Se: Gc,n ;[Zo xnк&Bd`Q[?T63{s6Mo%e3+#uVˇ`/: E}!j"HUzB[7;yA=Vc#nk$D>F=S44&{i:X+z~p=)24. {,"KSФ] iK}Qe |7}/_fAE|gq ı]d_ȳRU5Y6-O_$I֟h<ȓ|g mӐ !hiC(Zuw9d-$iڭVU%Q B8Mק(2zQ49=;+]DJf?Fcቨ7۷q~z씟bZnEClGT&!+R~au|(5".],2m<贖pDU755U^fga6=Q:[=i0m|c0egQomK6ghhwE} ~ŏit-|<[̨ /+aD}ի^}iЇ~,+Gyb0NYu5ՂUoACG}n_9IL+Mggy~a,!NV.eU`ZYm릡5UUEu3JMU%EQ$©+&߶{рnDܰGuyU+@_UMt]h4>9O׵ Or8i:UYJȱ-iZITdis4{I_u,mgB7+Z$^+r5k?}2gѵvwd]W1 PU7_T3Qy8MIӲd0To[(˂2ωӰh,j~oHgS~ҍx]Qbdo+!UYqv.bǬc0 )ݿEY&I/S=XNw>R%D_R4L)?H%a0Q5gF{_LL^vϧejm:!U]sxtÐ\?5v$ɚ\"zD UFU\r^Oo0?TAvPKv7"Wok7ލ2.zxؘ:my(m-6$ՀuB\OÊD-[:^QWh#Uцlp0(RNlۦñ#qŌhYVA m)`x s6ab7MѝhHӄrNuO7/ +8uY@F0n|?4p4n*DtNibuu]Btضp8*s9wo~]#~I'ϋ-0su,~(9gB` g&DрΩ>a׾g-2(+4 /7uU2_,E ]ے1_k?o%'w+OsTi[?kc|; Evt ˴YkEZՒe@T 0S9UY7we $1:M+\!1zk(sM86-7n<~~r9g8zn~MCL=4]H޽;.~gg`)\F̛&MDd2'CG%w=_RGK{<"emmQoOwoa&\v˲YWlο,Y.eF#|/ 3<&4Q9uYpppHgi,o!MP7P%Ւe]Q%p ʲ '^MQddYB6rkA犠bG~OԻ_K/U_ Y/xADFX"NXI'sEn7~_{я~4Qc8HN$WveQeK_F"#$_9>9& EeIT"69ؿzf)q¶lLӠRBҴض}ƔEɠ7կ~]~uYL~ ,#h+׸y1Ze8r0y'(a{=d^K׵oc<^G3 \͛uHsE/y'KefuBTްmޕK=51_/TqEj ~@F<(J!yiC7e(IyWuի!zSmjK|?"}? sn..i ^ӓtvfnc!3O(J^i*'2Kk7y'u}^IYyND<ī),F&4Mie4MDdY.A4F z@8NQ=NNϿ99{ Hd9RaǕ+W~!y7O~I"2ސ q3 32,f:?G咤*b9crHj薰iaOh|gvm\N{i-m.6۽ +w귆wSlrQS6ywRybBi{TBcVkboqvi'1'1uS&xEZe #h˽{>Ad 9M)Lu<ߣ!+rLbS ?~F_V駱h蚆2r|$}U#`cT/-ɟ6>3>_>?ϸqQh@rs˰(-aD6{pr|%yrHh|.Y,{}'cb/ X¯ \~gYm;3 "NZnU1^[w^G4Me_W~姶_Ux~DP-2/ζi3:VZzy|~ݻ/3?1Ղ,D?'EDQum$ItM44M }M]`S%'gnjc*#eMSU{i4y7 4S"!z&) ~SɍX)lֿ爞|qhrpѐ9wxW>,v/q[5{i/|{I u}4t4ųm7/97-|~ Z'M("/ ܾdr@c}S ;gGeX>GW<$aX`Y6*Oyn/S BV9?_ٛ^/q]W!"px0u}n<'w #PԦ饲U,KtMENzEEYpm&{4pw4M2;bOWLk>a=x/}۟oo4ڶe^.咃}!UUu-<ϰ?>?o=1^҇Z-xُ?|}5?{ʂwo7~뻾W0ɣ+Ib@_|7i|Wwim~0/W<O\ZV qm>O=;1 G@o6>ܳc=隺—߱]>owoe/MK^W7|aDZ,i ,}?? __d/D)Dz8ñ/_v<iF1ј029^cۺ!q,: (8YQaPB9n!aorΒW7a6Pz1)0N(˜-aH&j$S\(aup-X}qLh;X$Ihe4kODaG0,q]oÿ%{-7SDG7Rk$YIиr71g4C F#!A}ܿwD vNDRCIjeYuM]s|0 ˋzK3R2{oцQ+Wah&ހS[zQ$M4C_UU8dqd^nhc4珼3ɊySIƼ}oT bA]tk4M}Cڶ9XdYehNYd o|[9??UKR>;Q,_D|W~-G?4X, Gc4]<{^׮=eUS3={yOOᗔ\׵F> o!f?C$?7dkKڻwX,g<ث/J0"SobhhxfيrIWe/8+Oeo?> ?/OU__cO)w 0w_E/^>u߮u]V㐦+n\u]M &L ! ''8+rAc=IY-M >n\\οP&ܽEקʦLUqzzZ4tM"nILkue3OR(VUE] Qp<4Kyx[KS]N E咪)5cY2qbۦ]R;ŌikLOJGOdr>A}r G_n*<7q} ~Ce5'P) Gud>󿜟o.::uB,(b\Ij)nuӲ\ͨkh<߿͛?m2}~MMX'žX-ar0%ZU9' #ѥ߹s_^ ^~W=?[v `0 Y.Wʫ{eMՙsۿyˋsih:`p80,O?Kl~Ioz¿DEv3 w3 }hA&/*/V2}W9ؿJK#r" G<.}~|ɗeU]C?= I|;՜/?Cȝrݴ{\G}rA? /SK7׵0 zf]h<ثȳynܳc^oi6Qc8cEn ,\^zզ{{cȋ QN=;B>v~ӶU=.; UmBmF˳֝{s~~՛_M|w|3y^aMoB^7scPW( c<3!OSrǥmZ~~џG2=-"&{y tܹhč7w~5M/O22u>&Q>c6i|㗽v?t[/Pir F M;n~u/⭟vhĕj°c:=g|#g?JUFm= wݻxo`0$b,_o~.a4W|g|(~ ]Ƕr9CGy _*o=xoB_㻿nƍ1M[ٖ'{E+,\cZݻrrvP4/S,!ڪ2|?v諹8fܿ۲qMG(_x+GWu9{F 0 G<,>ΌW7c^0?^pI=1}x)Ict`X{Uv"/0 p=i\ I5u]1#NVx~<ēEc>>Ƕ ,3Mb*nܸeyܻ"!aIox3ߐ[nSu^KvѸDQvȗvb‡gGŴˆ~ v7Fvےv[k/mjMȳ(Z.ŌFͰ:^Wئc{,s<pIguXEYMaH  /<`002M*(ޱ-2#%ID;ı=2r]I<8om1A_`c;fY4~ܻw{n&kob9# {XMDxe:409cst y_g׼=g}a](yDC$M/IZ,)5Wn~6{{|S5؈8^qv~Q9:<4NO7?dl$wO.pFQ:zuxGU,shc_Z]׎۷5y#a8GWl뺱 s)C?߿o~__Ch4$0q,~b1^Sɳ~SOb?Η_iۆ~g~WG?H7[kQyrB qly͍b>u=|/A.Obs\ \*yR;C^2z Nc&vOSU\zt9>x$m~~OϿ4G#̴16S8vjmny.&l6Wv.x/p\S R3ɲMׅtITeESu؊8Ŏ4 iT е3&)u{eUR%GGפzF]Xk7ȋ$Ouv(ˊrN48z:Ղ88?s$%w ^vc bqvvLYԕ8T7 uӐf׿E1_<{1eYz0F%WՆb<rmk! K9)Պ,K !o(聮Q2~n&E/p9kMu UU%eö>S?)(5y_}z E\c6;W w.][U=$k+]0 Ӿtd1UU:nR㏿fo+]נ0=?jocAeA؁M`hqlW=Kjp:ln& )}m{E)Ky\(YR%m ~# 'g^ ^&Cۯ&| ܹ"Y?A4ϏJflLGD"w^xi4+~)x4/zW\'/RE`9M5S"OT}0EQҵRw}%A~sv~Bvko ܾ~^2eZHmءka$oV?f HTl`\u}s4._%xl/4M0ɲ\?Mm;O/=-=8:&wC{usOk4] q||۲u,&|z>Qo:^+6DJ+_kq0 9;;&V×eIT<ǩ0\4M8~pq@j*=DZAÃܽgfL\jڶuѶWvg^.׵@^Ey^5%i}w*^Ħ M'_-AA^ѴU8.7o<>=% =9E\-i}ꪢkaJ6m;n+ΧiYJ[U c[?3a&vk<~wC[ҶT87?ri oDt3Vko~ޥݿ_BtE4xay^7 ,At Ӽmcl-ۺEJI2dr؎Í7<_ޝuw૿OLnxE}k{>3>}fg;٥@n<|G@7t,Au)UUҴhWն!~qUO\0fg17٧mJ~/<{{ "QVO!u]W].kS қo%baK̚7emF5, dz}tCǶ\;b9 0씶m_)޲^7ǧwy =kof!7۲z=2'" _U4uu麾rl٬)skdi*Su;`46mͭ[+y)ڦ|F1}dwW׽AJ񒪔`5*EU?I zC!eӋSV9isUT׮=zBآCoxÛ'Ku ؛LA5[dr:^ir>=Ek0;m3+.OJc" @sCѸ^8ord/:R)S:F'(pޟG͖}ocxn-B$Ea6Ā83G?cE\Ը6C!q$R}dW,Ku 4MMhiH]DEN]ГO>8@qDS CSg||wxZXe$  $Ib{}, j~ٶ˟OE>ހzH] #BLa4'+ʢ0 feg7KOY^xs|Ϳ?ӽsuξ, ӤȋQXSO~kBs|=x;޻9=G&zͷo?*~p%iq\?"FGI5Yܚ엛WxdϽ5p= 1菺OKi<>yWS)Y&6kӐ$9L{D񊢐8vV_-!Xw|Y1M ONv ۶0L<0MV0,۶3hXOӘj%Α=za$ibLYܻ"S75LݦD|sbvg5שUhz.J:ڤضRqxڿ5]5bȯ٬5mM:@<0X(rFY4m|*: ~Ӱhښe:nj<<G."'2(&=8ceU%M,! {=f.c? X7Mt=_~/?;=׏Ac i(F* z˲5MC[!6%? ~sV=/&?_ɂY)U4',3zvmKy5Y_h eX$7۞WJ x_~4V߀~p'DQDfzcB? cs3,YRVoR<9qܺX<׿ a&+lf>,3azyE˴iښ,MV8kߴ͢]^Q5e뢻jI**a @؎KmSI+UfXA7P:0B~Nҍs߲kX۱E|{*nsqk}zr+m:6d ڭo]ZO5q;#I6p@M]Z2-p=OK}|]7ȋ9mP~w@XcI bӴb5C1NB۠Ze0,0豿XEtb؎}|òl `|J6uoӪX̧vi6.˶)Au(^׼W;ܻ"U%>>\ͩB@ni PxߠgP],%0xcWv}+@Uжb킭:nдR۴H.-t] KFZ}?xdUUO|7ۿݪPNi&=l%b..ð;(5Mݠ=&(*S}[N۾1E+LDk5!/ľJ{6g? #o/Mp[U;Wgq(&{1u(Bx~:=!y oI'mMހam ]( l{j۶}1Oߍ~DiJ'lb)IbNNe؎|w=k:ƣ=z?(K!{{%y}Ww>qrr} zh7wy^7nO?f0Td_"?aY6|,KFdKr80L>qrvvmo,sP~Ӽղ,L|6TMCQzGij˩)yWC$y`0²IҴ-^}XvGw&Cxi`8C 4씇8_Id<'2<' {,W zAH? S1iWWRU żaX4uh8kfKLD/ii߹|q4̦y_"es꺤mj `2۪`^i;>׶T v;NtR;߱MڵcQ$iM2h +ǢDt%d1q֭G!{}"eNhY6J{k|jb1c6( 3KI.s尺"Kp6_+,ۦmTCV~(ŦfN~R)wOQ%!h0Oxb1C7!8j 1cƿ\ǟo1/տY,Tr~'+,ۢi˫i2>,s"}R䗫9C7w=nR*Zm_qt|0 &Dll? CgtzE, {{{ VN{ެX-L#ꦢm`0Rk_{E;~Cߴu(] %m\OC}S|Sz+Ȳ M3/ɊG{z? kܫ_FVȸwrOj}h~ FRiwt|};7K0t(YJs5ijN6^7T?J&RIBG׊ț`k(t6MB}1=c8m/o:?mή{h4T濽}./$o )CNf5~[ <2!k-mRfUq~6˛Љ"MRW0imnֻIc䷚iTMHgP',]7Em00tam;EzMlˢ?X-)Ã2)˜4>{5{k\ǧnj0t"#.yORAx4f6( ~~~#q@_1eTeh8ƴ TU|w1.6~~RuSaE=xٝc+%6ק[_aATHeA]֌ ހjEUKēB!/5ibΪ,MpOoZ&4?6J(y |Yʢ$CtM'"u|o01 _Ç?˕(q@ I">S?ܗTgĿc{Mś^\P}cOP׵h(o8t8:C,K jJ_?}z<עmaYuY3{{<_4m#Iף[˅lgl~toF]Xw+xmf߾mLvh$?´l˅^p+{id+i;g;b '2aض8_y>M×|Wr||Gi`h #l+uץ$ lz7WwQ7s*#mX,04%3^зwu൯ܻ"Mmeh-<݌,%MRlǥUWexO?{ X-]vu#/JK+&4+Ӷw׏'xyx|.;KFܽ"as})UENvbKsj,%+.iߎj߲b2rGHO%o5^a&g/L34E7 =ʲ S ınlKc.=Olۖp4u}b(Z&{2]>Ď:0;x+RM[S%u0dTwސx 4V_c}_Ŀ;={?Ν9{O^K/!k_>^zy\CI]ϻ1Ԧexh8ٔȤ7d2|~V'2ULY.[h<I҈ˋK'WL i~Jݝĉ$[VrKD>4~)x_۶ #"cdl%y.'𘽽 g3ЪbBD/!/+^84 \VΩUMn}3cD˲T*]WU~J^ʛWEIYU[WX.NTۍ6.Qc+ m2g:($ZUiyt>%Rlb>QU]:U- +$`;.䙴!ʠIJg\^]5U_9'^`862Ds/ݿWw4\;4ox[nt4LMSszz1_b?J3<2(3Qδ]ZP;ζ?yO0Ҕ4ϸ UUc~WEr8??~_v#-=8tzNl9;=m$_e]?>¿М?eE|?Z$"/ 4#H_/;\/!3]¯sΣM|nw}=G=,ƿ44~Oey6ם;|m۲w;kc??e,Q$-y^aptx"RŴL^zdIB\]^ tTeh˕(2W &mMUVi+V%?WOwa;kѿ7vj^7]|w] ZK]UUߞEw_YWXyDj_9:xjK4xϋLqyyA?B h>8{#..( eYb[.agtt0m[ i ˫ӇZpTPU4Mݻwiۖ#.N-G,]^?dJf:"/RJ4ʪ2m|gZdYYUv >gh:L&l~, g]WضKe~͊#[hS{.\-(ҵdOvfl7lj_Q"T{Z ¥mƭTZ6u#wi;ͭ[i$A>cy XR#z. Ɠ y>iJe>e]>e e` Xœ%z=la-=OɔWxiQWq#0|9Ї~S=>OސA|i3g6]6GGGYBƯ5=*ݻOO+f0Gs~'3N^sEY0y[ⳟ=oӸzܺ3^NN7ӷo?7|aqlhN]XCxI?<_U8 ?#?e~F __lz2c<2 ^o3ϼV)͊^ 7zYsϽcOyh05J?ԫyWu ӻ_0-X?=&le\a#bEY0\? (V˂PKG#J0 GYEKTwD")2],&4M5yGQ} ހg~5Kɸo}WOH/JA#ISL2-.'x??񃀪=4ȋr`8,J=t]tw QtC^o@J5ryP9⿉W:qs|\;$+ʢ|}Ǖ|iSl"s.O?} I˥ ),,1@,VWI0߲>Ñyj5g6*IO9G1tS]!yS7JuMnu:VJNzl-M[ uд"iU V]{mz(6?Z$0MqWQDB4 \7@4|'/ L2-Là2YasY$Z!u#i&8iR,z>Jdi<ڶnW?Ҷ-gdwϾ 3O :zϵ z})ow~5~ ȋ 0)?r1 S/ƽ~}`0R{?^$lgeYh$WWΛ^x7s"KE"{XRU/<-=c>AMôL~Fg?qq7?s}8,~7y͛:䪨Rm׼_u,S~~i"Ju]\Ї>ȏ%gHUqxrT:㒥R<7jwӯ]OM ~5دv4M+F|\9BYh~ot-oG߱\mQFG, >9޲,L& {z=\1cOo)\puuAEi̦1?:gAƿƿa Oᘷ\Z}e+'̶Cq-&Nbt< ݐzӻ|RGd_/'諭sO>J~7>ҍo:xoM/%E9~뗻޾>5ia5$  GfWђ ![MIJUj5l4K)U$ݕkUUq~~`0o%JSſ둥X,P_^ mc[6'VȖ DNu]sLB4M' B<ǴLӤ(S 3 4( _{\y>a @e41Gx WU er򩏡nQ!DVD5y.UI4{|z͚ hfȺ35qkN|~]֓UDgoِն MvdMso~MSquy+_Z1ϔqD] ׿|g:|ŀ㸼}w7J!mS|sy浼ĕT)BLK2GCx/+^(´,Lt%#L"BlˢJ "+x{Mz=t]@SW[Mm_M&gndr#|7}'uetʳϼ /uWT;m冷J;av5M.dA_t]$mp[>?3|Ss͜Q wf>U+=eQ?s?ͯ>k|7Q1_`:Atz/UU:̂)8G7w|y囿ǟxMIT!aC4)7 }kST;|7aZ`~uzIegy5+zjۆw77?AտY^x3;fGGw?{DaW_ԗ |ſ``z׾6xo'bVhAmCGfIte:f nAHy~{ 3ǭ[-=|7a٥0MNNDW`w}[-z'+YX=lV[ aqv0Lc"}4DID]4mM cZ`zy?x~3sN˖?;;DzL=׿g67!痧8N[,瘦X,lreixO-,~cT\zb|WiKbp8+Y阶"ò, ؜m1t4t!H7tz&}nz7/vt]ꐄ;$IiY蚁m*)h?R/w i*L]_o1_u,f\`.Q9/|_uvB_ "]muɾgw>a1)׼(;_^@Vؖ%Hk|S#?ڎx4Ǟ♧_|/ʛL[lΣ +O'{8vi,Vkx$qdl[|SŽ{/7} XҌޠሬȻOӶ045J"M??qO?cxb6Ǟ$M#+5]X_-38?I(O??Riw6rpxrF?ul1Tq9??ewaH} ]K?}v:W#b:#&iFGiB׶+|9dl>q|ڶ%S?z:4l绬VɄl{\]Myϑ%iSjhO]Rma([sXjoɴNRYmNhCzN)v׶&Ĕ{rZWWŦ**ʊ7*+tSܜmF7tN1LleIal"9^HTuMD!#80-S IDAT8ig>2L(˒utx6׶Dz€(:ôl\ںŰL9Dz].V|>ǟ*iQW*tH,1L/Ɩa`;.|}#ctKg5_A@]W$Ix<0,NL.[9ŔXxiI~ے,bOQV\]c21a`8d\Jd'*9#lKgTe~e놅yW|I?J2HdcI*fx%SC )rxOONaЧ(J V7-iZ.p\ÿx*Y-IUת8Z.5~딦4wϦIaKހ 𩪚4GU}>_>h㗲\.;F۴dzue8; _Z1 1 sȲ/bW HXߒDqwhk9[hږTY@ضĿmK{jo0Mrk,Kᄢ\+L"3$}s$uV44c p\8l{9`8&Mb<=N?{s}&!x%d4FUmYfDjdY" ,5EQ˲D-d,!ݗ:_aO~ۖZF۶񔦇l2`8"I"]E"OmdvEA։R'Tu]?d+k-av0hUAϬ@k]dyUSWTY-=&ZE2"*u۱BO5t|U{yQ`&ߗfPTMb.Y\}3XLUc^Gtr\I:4iM3iL_ I9 ˋ3&{MIe2Z"Fa Q߶m^p?ldYFKNQɀm4Y ]z/D[evEa(~6~Cg\ *D򜽽ſ_W$jMSGR\miV,۶BjtCoiOQJ,ۖCDR5ÿX aGHs]VXCo&4/'mL&>4*OjS i-uӪǑbiꀡ&˪-ðOՔH=4]ſm`;.29P`6KXFBy GMoTu)j*}?PSIJMEӥ+i6WC70 ^O]6_=za n7LS5JӘ~@ 8gr^@/45Qchp}3t4M']{~kiKg1u,)4izuw-$?qe{⌓O~}WfIwK$w-{yOjv{,4]*N0M? {pM,v,ʯ lή}|K +t {=ٿ2l˦klŏ˪4i}lC˜I@|)wN5}lMZckKFZ͓+]z]xReZĉ陆EHul(hÔ=wS݅6uE۶].V,Sz>u%]1PCհ|/[Դ,3;ѵj! |O":gYzvUCǶa(s_7{^ _7:K4mdZ j},Ϸט!ŤsSz']';/j∦i0ԖiejjpoZ6 _鉶LZFm&4]ñ%,S5i2YieNЉw:W$Iwl4(kjp8`K5{>U]1 I 1M0`Ig-ƿ~5l;fǿ W W`3o$W%`aB SjĮh7LT˽j eIcC}{uoA${.Ȗ]rE5m(nM(YEK|v\%"Dij&UWٜxw9Y&m+wQgECMS,#Ysԯc70 ȫwVZnڗϭU浚blV鹭{ūEΡEVδ:w=Qiʅ-~ >,qeڠiLrl|q]$%-W۶H;oUa;ȧWK|iOD]{\YT*ҥ2?slۡmEȹ<%On$ =fOʇSw\J_ |zA)_8rG$I6g8^dUIe?òp,ůi!|<קEDeGǸKǼ;{TKbȫ@N2D<(}z2|gm?'$nA5wWQl>|lFes4\.9?#s<%-AУ}SŝA#OEP^,rGYmjӶDiH&2-rNS7G4$ikRḢ0T)_Kj^~8 SԘϺ pj`_v-0iږzl4]\8KӶЩ~6mYJ4D릉mW ں.&Mt2^ɖ{aH7 υ&i GD%{qNXE ,K l4-tC <(M(]ZĻpж|)6*:Jz¿I?:E]OlGz> -%B4tC]01o@۪QuVhx~Y(>6GfO<ׄ_.ֶ͍O{D+kĵqXXP0 UФ V5 @TMurAjF ŭh:4|pϕtv!.7(LR鄽mSi@3ʢP̖8E^jh6kzQu%Eu]ᩢ{Xl<]s&}GYUݠk6~U>Y3ˮX4uu!4~So{A-¶ *m2dd6b7ojkB ;릡J<BNNm(?KDC7doZV-r/J%Yaق)-b0L%8_wJǶ˜l_~I!o϶ozzrp]cP?ñUk5ӄJſ` À(¯gM7_ud8Dt߲_L¿unjR؍(cC_u\jmeX%_I0iӰu0ւ_- 2W f6zhj Oſ:y__f+k-G_u=YM3V]]4^_lj5r32V?꡾05fz8qReKGuCz^z٪ C'Mp0 ,'[;?'zwc[nSfY )JuSsKG4[o\un9h¹nN*qkضkU­bC̭﫻4Z{#ȶW*\s4oA7 z!u#?N`tLX;I â&EQf)ӴͲ(ѕF%hDRUp0TMQ´L4Mg1+Ã!Dܰnj ]Eҷq"ֺ:nTzp*F7_7L>"ee2i MC4)nV 뱿@DGGPCHihb6C55`h,KLYNir]9y,҂6m_&=k"՞)ôHR@U]=Z+m+JI;޾ EtwQaYx,Mt~_a0Ǒ/Pa$(˜lXoR(n(\ _m?'ų-T[-kPMhE }qtluM5MZ V(7o2Ƅ\W_hZHaZ-^$Zqtt[^p0t5n )4M[z}5 }[_00LanW_ӴjX,{>{>qa1H3Q CWu]__M ȫވn G΄w2g\2Ȳ ]7TĿib' ]h89[n*u40@QJŲ-aHÃcB%h`>pU)3}Udբ:h8f0 锺! (ʂR']4UV% 6uu+z ^P75Y7W pzz{=tݠ۱qK-mHx_s,&T[JSMS;/O2qtxuIY޻|/P{$Mh#Z4zј;MÃ4Smdi֫I_*뭓%q:m)oEHu'\7 m] Qfw'oHU|ۭn-T mҽ(KaWKUd8 ZXjPz} yb1go|AF,WK,%e7ٗזK Dt,U[ E B!]WPi Dl,M4 v# EdOk1q t~IO&~@T IѶ};m (Ga,/Mi񖫅/'e7BV%~`("^f)5)轰OeVej>ǴDqïekd2teQRwm)͘߶ DZBMYX,mK T̲l&=X~}rh>Y4 b&3*~ ڹbIZmS(M`0R_ߪ^o?a3cVW=Vт%Mc4fq4rEnJ,UFgzy%Feb;6gg +2u}r'xzz_: Ҙ$Yu"pYL|!- TeMGı/A6h8 M3tC cq65B u#jIo ez5P {{x^įtvmDu@⠭Kk?=iY, |?nSD6N"ZŔ,Mp[RKPIAJڶR˔EM ~_+.I7~B6UUukdlǡ+[^uM_w_4t]W^Emն9;;aooeY*]J8*xzz:biXZӳ{j~e4ulǿbxZ윽=)O҄8v?99i[7ǿ'꽫("VҥR+uS'?Ƞh8"ىx,C}%C,Ko{ca(R \##}u[kt/{/(H$T{Xb10tzA ]!h`bU%jE?rV%#=fP=z8_WyZ bwҶNlzcRmϨ7+=;!m&S[7XwΛ}ú#V_^L˦eos]+{h ؖ b6'#QR}9j)扦RLeCZ4.hiɳ 8;|gE+nI[aSVs͢,VW+_ME" V-R7XLWƴmʬ`0l7Hj,gs^@0c=9qB,S="W~""xyyZK*Am,3xѱ_װ  |[i; aqa)G:~@O( ˲t|!la;MhX"e)-k<2\ Z-Vݢ*ʪ௶/fh:I nuUY邿j\e-J1VK?Mbɞ?6aCtNO9ci  aӼ2u\NbM_5-tCgw^l6< Ӥ*ʎq;Y[qnꘆUep0 ISUV~7J]OOS~M縮w28>-QW+nߦ,+~6_jM_oCڝ|f)uY1Xp=='C$~0ta]u- Ղ`@Ӣ7MC?,SG9?kVss*ۙl׵ U3O۸mdցiM03e'ⅲeҖ$J]٩hiTZ#G^+z[,Gt9^>MSdb\4-uGR9ArVIa"Tpۢ&C_SlMCC$Ru7uayJ=ju=y%ba!E_κ_DU-:GV+8 U-u_΄bץ%czIŸJ1|!)RV LK/|/<R6-eJ,D?/A;Wjq'iHfu;5_?cz!iEP$~O´LoۤYd|1ۉm7_!>D4GyzIW_?Y^Hˠ3DIQ4CUh'eo֏4<(pֶ*5um5ٝpCoՊ;;UֿBvag(j*mU|6jd>spxDLWo%$I`8j7)JȨKեIoێM&aY9[DъÃC{YF/vmVB.,/qppiXeNּK<^O/d)ٔ8YHeb8988"MSKjwRu)ZukM~/bGXjDF,M%i ~/S("j-0=a?_̸GH☋3\q)L"Ɠ}"iG-R15&rh!f{i>=8KaGK?E C;wEGy޵X)sppkfS4-M|֖9~I'[F n ~r~@U8 Kew'c6ZOQb?Օ nesx|b9Ȳ4I/kǷ-9clۡkf+YXb0SI!if1acC2IS4U:(-4#<ϣ,Jm;M2&;!쟣vNPEV:^͵=tntfC֊v uDitk<HR/X/ /Tq1h䠓^DsFJr1cZh,IB3%mSvu]s~q{$q*ZaY6nqvz? >}wHYUyXSڶ)sq۲HȞkId(:t_`Y~oص/ ZDzYjR jp4"3k&rN>+Q]xaqzz?;K,g4)u-<% n9Y"E>e3N8/>?}`@Db|p빔etyIm ͮ~oFF0,h+NN!GD3s,C ,s]祗goj4 'x zA%[$i잚5Bfm Yڵl !LOP|m{9,7+/yB<ȣa8( y@C,ͧ͘8Mkdye9!N%3\ϧk+%~4aV G,&s,ۡ,u<ٗ $/ qѶ-qE$,E=9KSP$iki2OG8kM3cp~~m[>bZ&4Ug WgUc;躹 mj MY}hD0-Vq](`ex_\E=! z\f+o;b|x)mLhtR"lF7?x naGQcs<_4ۦ(DCj8>`P_]r5_yGjt۶sLCDzAiO!վUUH'{nBЂiK1r|ZTU';3\7W8%Djt !~+e⸀K[ Qn )2m sqVuIYXq52rNe$y٦ܽ+Gʪ! KSxoYVS瘆 8e8L{;}'n7 Sx]vi~4JklEc;?ZnE!Ա>ƟUUGFcmRj2e)i/ƺIQCV ''>D~\1!k<  3 ı8߻arppsϾ$MVfK{eLmUYv7uLm,7_z v[[ UR?-Ӣk..<vpi" qlewyB4G{C=1a ђ)l[gU}ua9zG2R{n&:~eOHӶ;|Ì?N",c0 C$&IS|GtLˢKVZzjr@344ePLUumYch:ހ,t0 ܔEcpikF`߯XVe؎+.rhNar K$d%}}ꪦ,qR1\/ƌ 磣auU/ȳC񋺎ߨuѣohZ8gjeh7E*xR;t5$ Bz6TgfC7U OU =EK$awj e!cҀP`0ab~5C34$6aՊ8ì0t`DYqZ-3nj..q] s5`<8ǫ-g]W4[gLi7oΚ"|-I2 k%ݏ뵤6+׿{UY^#-uwq}~o|1%MdW4,"CcU±ӰBʺa6mlk*±)KR۶"ωɊ q<4b/q\/1%kbh vbʰ?Ķ,"MbCuPCסmqz 9/XXlDۊMVԵyNUG qEH;i" /1m4 T9wXM8˂Q%.| n"s>9I`Ym;^rX,縎ǰ?2leUsyq-X#vIUbeEIQX\.$GY]?^o((+aچ˫9ztAmG[wrZ4N:: WJl}K 7^WTnЬs /eN7di >eUJi@DZV9yQRV1yah:-ܻwa #&yaMS*m[(i,I(k9q\O ?|Ô}TMGulfz!m;64]' 'o\]]9/g&)n+S7,8 ARǼ_)Ǵ?`Oqm_\ y.9aUe>|vrVe^,8S7 ͚⚾( q,xL)qǀBQ{/*_1tA{-JB!M<']/]KԘcA@'TE5$ʾ.k{Dg6!mP5ߏWe6Q%(E!Ɍm0TMffeQc&)^Z=SHeNPIɯ B[]yRiz>4?K(ˊX&5-a=_K~]G|we6SGD?~ɌY,;|a>v=OyyL3@!/d*Fk|a 9hڱ=^֏O3ɔm1AF3^ݔXGF N93=qq '۟'q-0b/9{\eG޿)>(@J;v=eEe؎KUrQհnܺJNVҘ{J;0)˗%M۠rj~UUe4 xIf;\ۧzƣ12ߣ(s4c<)Q4b^v#~*u[aB$I ۴h]e"Dz,lǑM,nl~@ӴTu9L( $tryŸX'jB$;J$Y]3 fL&c8!ƬWϴ}/EUi Ӵq>m ӾSTU67o߶f0Ivp=qllxYu _ZF膉e(efx<(+hMS6ymTϟ|/n ql^+TEq}pe*Md,:ۆfCtl[y&.=5eYa_88BݔY 'Icl˦lZ>|vOݾCtOwI%d+3 :Pu6?bPq$~ԉX{sqb sW^kes1Ԁ.o?Q|>='b*E%w/_?-ms=ɲ\6S dfܿ@lvgCUPzA~?㿐1_ͯe?ˤ:,CvEq4&B&3C7 v kq(4b*}O%Ev' O\-QUlA1 mGT($IL|y|r$so.!˧Oglϯt/dߢo5Q4b]˶ɟXEն 3_ymfh<0 4R**do[9C̶4Ie3]2mtf[Y(s={1f<|$fM:Il6*tM#L!>~" #;k4&o٬;M>u_ ސF ʎjlsa89MO$8N'G/_mSl6[y!Xy%mais{9]'Q94E|+]tӢoZ\yXx4XWkydʡe)i u[86I3O]S\ð)#4m($|@aʞ( \cz3-tm{z)uװZ1^mc[$\Z]ð)6߅maHz-?LY-} fm>~8 x~zvl[>x6Ҕp]8M;{#[zOFae\6xyY8.nw GQT|xxmgX"/70dlٌ&Os:"e(7M8~2G7,^VK4]2)A׵}vl*mqȒ)F.ؗcV1l vTn'p䠇ToBk'OӟiO==y9]7͟Otv6ް|y 1n:!o iy!`&'\ݖ*جVt}mAh\-n^+ \pC71M<ϰm@Ȋ0)+4͔3 ^dd3_, iԆ4餅t`oY.l0>}/N;WkL$r#lM& O'6nGUəFMK?|&׋[v6wCҔ8قض%q¿٬Qu_N LTy:T lebX7&)aж-Q8VG^[tAoK4KU73]q}}˿I^6 Lun x]d2'|dFEo/o?R$GYjDSEnƱ}! G4mMg?Qײ}/9֘_?/m2!O_4Ft= ]S3L UUyfE^YFF쒘Η9)'$) `/߃5ʷMvHTgP^.;5 LJ')MSrl9M%$Ix4:,% 8v<>}e6itV]¶l9Ik:ߏ(8y?eavk0b1S7eYݏdy"AVUoj(,sTE8P: $YJ t]b#t۠8>n)Ic]~y|z`¶a}ntSuR9HMG?YO*{ݖrwrXO 9mX|bA]˜Y utHnt:XV&~P5Mטxnf#ovtv.o4,ҪASu+ڦ!+SEt,+h"8&4mv|xƷP{-Ce@IC}~Pi|+GQ9*ár09dĹNvp;ūe [4I8!3uZ?**/%5< M^#<,ǦR7L 1Qq,˶כ%uHohm^.n 1蚖hU0 A0+ӶɊ{no#8ᏂnZ/QUQ$ $14ES="MQ_7iE˗ci$Uh<[ZoeZ7MMftMCQ4Y` M85wzn?v& G]cw}hx$qEYF`Zi&ǶdG$|aZv[ Bߏ04kMׇ ͖\ |_#mY,)"UUЋjI׃iClh۔zA0MXo^(] xFZtMx2¶=dYIAua? ",4 811MnCB(yNc3pIQf%Phcr lFSEAL(9ҷy2XQPeMې1ay.8gG$Sz?:7$۠ `g m׿ym8IV4Luݐ)]%&((,4gضZ4u}%++AHP=7$NS,0- @u"g, }~y*++, x2$NxrNrH 3~>5Y:sc9G'T Ph7oh:h(Uc&Fc4Mn/e*7B߲m4ME'#NͯT6؎GVddL|mꑪ,1 dC;]5ɳ/_n*Lĵ}< tDuw5M=͊LguM]MQ]Em,OxxLUɶܤ "c>/WlFw]nG~L  0Fc݆xJ ۶خD_v-zr}MVG=8l,z7zz}XTg`%P N{bKv]ii뚫x,M Nb`.IӴ%fdp;4Mk;8& B$ \GS5tKV$NTi_hmM3HLC{WgnԾr3%)h<| z͆ǯdyiY\/n`Y?ݬ+i8ӇP8{VNbs*܄FNPeP<8xGc|m}-|wN4tr_6h隮'RڶCK۵yiX(F]lv[>AIkh(E.{=EYj:UUg]u2 Ļ3yb& eeg/(($M] Q8N:6 ].uWHmɋ0;?뇴]OQhFUNoִ}h?m9 :X&*ouݠpu}Cj, % eyeд퉐X3=_=;ŝ)DOJ?Pٚq냂 _Il0~?Lss_0t礮+,KnoiE"|,ˢMOƸG4MEQ)f {Qץ$(B6TUCR9 ж -˴,npwX tix"Kwf\a69f2v.Ikyxz0,TM*$u<>= ʁ_J~s}:( M7 IIJ, Uw-E񻮇myXmk^^M?oNdElv[:w~4l4ݠJ&/ ޿ym^t`6VnEc& YaB(vFj[TEFU7t]Ļ <ڞ/_gyA3 F ?m`'"?ԹBU$oׯ(sIL9mc&}BL ݞjomꅶi5TUN^ȉ{vMw~l^ዘOC M.J~[ _,OPT[TU3ua'/R% #pD&CKFtM c[6\>myU]F8,C||Jߵخl2G/CGòLP_%ACiK9PCQtܣvZXG`{WWQ yd&R /BnU5}W42op]W "Cv UY]S mۖ{4UAUU)D/gK7d~GQo**튦Ͽ~m[6EQ\>0&:ג_= O/!HM-Lu5M-V~=Q8f4SW%a03֊vEou(iE _Qu&˿/T 骪{EQ0t$Q^VK?)DKE řr>vCLippCW ߻f G{7r Mm4mC%aquCUEN3I٠ahA]UúpKԘy;a(*q!]uM׷8t:'TlǕᘮ4 s " FO.UUpdBCbYL&3<n6k|R=AߗMVua꨺>]/˙` rN`Y E4Y^Z_tǐ$+7zMv);t''v˂h<{CQUE`ho٭uCV/ 9m#ˮ%4ȯ)I N2xo/_kFl% ơiY-Ll+TU]/+,шvxEd:=<UEQn{rXIp]g2m;$/r {!moxiلA vmFDCqRP"]=,tZcO^+'t8jSNI\(ʉ2 J@q c<ߧ,J2#$,Oe\Ǵ,x6)w+}ӷ04 UQ5- _]#&uWujD􂪮\l!꒿mZ6W^k)iXE,?=~qz~](ym"/hM1 0$rYX4z"ϥJD}DSX)!ML2mE{Afްl)Mӹ|:g: d!ue1f/_?N~b8՚rRN>5?ht` r)7>sb3MD~y4LMmꪢk<#M<jj4`gijf9P7 j :A軎]F5Jwɜ?򏨪x4! "ڮ' $F6Q}/;^9TTXg:2FdyaMQ5Hq斂ǁ_(mUV]G̦3f/+D'h%WWw$?O'!m+(򜪪±>K]"5{ hLg!M#S=?>?ym~˒ϿϿf%˩˒8x>AQ9U]k wy5WknTUV:j}']f"̯/L3& ixl/8j8ES݀wy;<4L̃vְӨԙ?;R(۰rk+x%' ؿRGC+y[+{81 49 $1 ̩ʂ@y uM˦mJZ6݆i&2/4uE۵EHӄ$q,z]' 1 vG7ضGSe$I]#+2јQ80L> s6ؖzd<4P9=bagTECuɯIS$ QBjl[ڶ,Y< ݁?Id !gwd&mLXA$\]-;2caq}V:͒hlkUs|{~qJ?߲_6TUaEi)e@')j Ձq&)cGd] o>,*|شOjO(~>`&<$& !}eڷz?4Tw#o- ]3xyYʩ@ӶTU7b6#gBEt4+Ls=9ܬmq5|/ı=NvurQYt}r{2-dQ 'Kw}{|yEriZ(R.vu),K}eZ5 z|G{~z9eIQf雷 uc8Kvs&(Rw=`oi C&X*ry4Md'4M=$E(}<7=.F6òYWh44䊦H O|ݻ{$ ȋIk*EUP!f UY08d)Hxsg^A ?}ߟl.91Omz>}bud;fHmۦ=JۀPNft}KU<<|vhچip4Uq*N&rs&CtxW/B9.A Lg (ʒ0r-rLqyw)ˊ~Wt]gql_gm]Rϊ*dv(] Ba2_>s{se{~@S5tנdp]Kl9GSӫb;'3khd2CTW&o/oq]R>ʻwqO>W7T3)ʜl$ieZDј*/\I6|hk?Ѝzf9IDAT P|j~]CӀe:(Jdӏ(rx~1$T 4^#p<~n C@K}Ed$ spoO9NNpY2M4TGшljd:9u-m`Y.UUެlf]ḡ첫hF%Xm##=u]BO!n m(ck< \}K۴E^34PeZ=a6hG%"u la`;m zƯ77T4MFK7y ℿ4lU"q?0*ck1M,\ۃ׮r&qZzp_%Yk}RN,qY5!U %Qq1 w]S`mr{}CQd4Mm9<<~Ŵ \%4C'N.KWK&).eYs]ŵ=tCs"Mh%) 0M$l*1.*W/~DTC~EEvUrHU â*ñ=$'I$& Uⴋ!$[#ޛ]kLcVFlFU.MWBvUfw\*V>ԵIӂ^8@o慪a^@ eݠ:m˪AtфEYbZe$vht@EO41}|C7{c[eAS\]3W墨 ox 뇬gΔ{Е8S!Z71,qrC2d(v뾁re •
\8Tb6c.aP9yF#ڮIk:yb R &uU\Y\[ ²Ll]ax4!ÔcNhbqErP8&/C@4:)B][&,K'2e|4TU(H~0<1M⪊C},%l ĶLԑJYUEyƟ$1ia[{4Uc1"Nb'Go/o?SBA][_~b<34Ym9aY4?1,MՆ1a&EJ[$mM tC["E4T]Njt]O3eӰ:嵭4(̓08;aM۰o,6y{+&@'xg Os.}(G6"= ]*YIkr$P;; 38. ^hFHӘtGY*3u]d6A l+!ro-[Fv[tMvUqYuښ]P5 Uh]SioiUUo3hJȲd*(e)y}qx~d:i>}r0_70 ɯ zyF7Lڦ&mkD/uȯjJ4Ɨ/OTMKж&muw<QĻ\9.@T,Et޿zM3p=Oфd($[9A8&Mb4E yO# D%lǡKFјTBni(hJ?_1L01QgEKŔ{v}|b.t0 T7{&ķ[]YgWxrmZ,Ʊ=bUcdG,PT%Ivv9`00,K63mTU#b`quM dDMq:FV YJQd~ak6*A0ZdeMEDƲq| ]CAAT|?:D<˗F@]3]UD)Í 5ef9)-FSUs5';kdPyFGN$B}+l;.?:gym"ϸ%]˰_ ƣn.m|?@Q[nfSc6IbZ-MՈeq{{G v5x^@Y dnGĻhD(Jl5㏿PE <];riw_箜u<>ˠWJ{Y~Gg?2Uýo,Nfoj Ϯ(UUegח%Nmӣ0$IBtx^4mMA4ݐ l]inG( HSٹ4M~$)#(xN .R|/0L K<,s=&)Q]ہ' & ~2^U9E>}_?5mض-T7')_~ql@դ{OuL\9#W Eg㛷 濺(s4Mx.~#fE#@r)u U]Ux? e̿Z_7  M9AI8.c6m˦ui~EQR/߆b0O0t|`>2 #Yx^hUAKKwlk{zV%0l[Dzm\CQ` Z- 8ݻA<O@Q>7{+~#W泓dT^p4qөR w;Lơ=LښxhuNUr!9StDi8.AѴ ik* ӴLnUUeW5w|a$;TM=mݢiz9OIi߽cm?$;oj ݤCI( 7׷,CɩʒڶQzHೇ~, i=OOf3 qo5]c^ai6-QI,y8_, djt\ZuEzz6cTfZR7@z{}\2v\;eS1.ΆUS`(JôY,0M v M`Y6|Y/)=/%c.l4AQ<=}a2j:xcq,+|p?Yb;xnض=mݽCTtJUzM?H@`0ânjF x(@YF#l˗OL&a0IĪt]h}O52kKic^Ҷ=a! <@ FAE3t<Ƕ[tÐӳ{ekc eYP-{9Z1$Y2CUWA;DOf4;@wOeHy41r俻/tu=]?&I $MN!axm8#z؎{xl⚪,)vd*Kߺ_6rdڲKvx/u BaM]WL36 3& ot:%I6(:t.GTU|cY Ct4Mc4 "ÇiJŸ\6uNtN0MPUYlc/Pkl?8Rd}sxc(;=ZuT]A:^ԅ-K'c:S%!OϏ-_nKUS0 ]V)]eSєmlWXE׷di(<'|/m!_#t=?`6[P5 'nn0t(ɋ u6(ÐE MخNߑg9y82Šj it}dm45&0MCIUi(̙fG~S[tm{dY~mPu2,)T%)`r9Pdua\oZ&m1_\SpLql֌7jۑrp6]45۲躆4Ip\E}^Q7ҢB|ףJ,ꆼ({|+m hYf34CY8kA ?`{Vx҉Z!h z/gϹ5Ci~4)!2-ڦaZ\S7(|1,V%n0@(uehtm'F5I/? \GyShNȋ0ciP5~ɥWmvCtm:P{0,+^`۲l:5;X.mڦfY,8j &táB!IN> z¯̑i7 ڑ?I=vn*ԓ4uE:ey2eg߁Y3L޼_6eYE`[mS.;<<~5/|qBJläkH]??3?DTGܪ@7tt!ҋEQ4PP~/(˲vڦSڮ㇏lw['.ZQ  zҔ}3cwrèC؉O(zګࡊ GS-׵!DOwi<.7=7ID4Mʂ, J]7G ; /3d{2CLv4ut*#aǟifJQÒ~,K) ۲m*0͉w Q4mlw=!nK4(*ӵ-4f٬_h۶gؖjɵ&˺R?FpDTdiڑ$m_U,Tezx^q}}(WY;ۖMMT]Fߔ45MUagiF0um~z$<~Obپ0L߹ۥzV=OϏl7+nn-["\߸c4$1M[g Z(GU3sT\~v6ap" *C+sIĺx0rOOGΏyj'|~j\s;_y>vmӂq*:anP4w+u=tCd;m!xL7$˶0M[Nj;,ۡrT]E 7M0dv-1L)i >S%5a8hL C%*<==rs}{w ]`[suϯ߳^)ϓ U( `.٢* I26]w) U_7OVVsfLF3,fH9|*D\jVi۳c,曷 ?$ |G7t(:<<MUYܼc`;6Љ UUɲL%P'N4M ccHQ E?2l6=g?`!p/q{,GI9"~цcNR6Xaqc⤋u_.idy!Sڦe6dI|vMid)tUxt]KF<==ۭ)uyyy}V 2pv4KQU EQ1t"P3) *gIJaЋ4MhEQ ma~,M€^@(+92A'O2+<;DӃRk:mHGvEQJ 8ϲ UU8IPTQy1_\SW(9K5{ ޼_6iY!Icڦd}O'\_ݑ }WSC7hh/_lyy<=}f4@˲^YKwTU3*}çO15]ϩGx8"O~6 O=|gft4ӓ}}NX.o:o-m;X2)ue;<˙C^^pDg<ñ--  i>]3A4Aoۖ.lޡ&UU DW**Q4& GyeIn:˴plyOͤdžpOɃ,A#=[e?|G2 vb#Y8'Ѵ_/o۰Z{Ge,_-˲ȋ,ML8KY}G]7tmOt]zrH#SLsG4uE4hjСxdY-?'lFiTU.TƓ9qAUᇟޢRg 'ij<_~W$Gs0?\ijߖWg-;j!_/7o&W775a0"ʲ \'TEUUX<;4-c^IQ5dNiyAQf蚉#,$/ @NIyQg9 _~4-fMD6A BC)uG Qpyak >97O/;5Ϭ| Zu^/ {vjq.xl6#/ ͊4K +}ʞZ Z?>5iUEQyiQ9e*>|Ni?д-%^yɓ(tC\4'+?<$,7+&àlѿ O+^'< _ F^diO?D$ILUA? h* y^Z-Ql EU)LV.mvC(efuM6Te;ضUa,f t wXibqĶ}$n8)c| ԁ`*h`!_/7o&]11(uҵUYj mcZe!'mhFT7 " '$Ɏd;@(]2u9D\T`7tSE[}3]1Mnּð5 lhF )Kn @Ex뱘_S9OOoX., ѶI a$!z^V[!9Hv:@i'{+8O#Oo99r\~|gn΍fo{T#_/ Wu(r}sG}eiX4M ؖnnm\;jC$s4Eq\O ?|ôhUoqY^1}s}M ۿy>WWyhx`“VNe^'F=uYo 9(f@N_/om;t`:f)zeEZ#꺡,snnX0zRl6#a񁦩4n?c>}'(˜ UQr+ l1LYmTuΣ؏*8QAi$9@'+ =NB\q#Ox>UԻGy _UMCGiBo񽐦QPϦNQfs,Ӣik4ET $Ibڦ Ha(!mqxxuӔ\]ⰷ)dYI/%[#_rgN~E8. "K;܃檗 .s9'_k~׫ɄkEYd`^1N_s}u8CQ].ҲoXoKnHbJUh8A6 p@AHm= 2=vюs_k~oH2l raeP59+vP3 H`02q\&)eQjUdYx4AeyYsLi8iPuEԬ[֫57dyh54 󹺺f`IRunǶvyiHfgTeI( Ӕ8,ϘUz3{N|{ٛ~J0Uێa|b(ȇvfԩ@}S=_k~ͯ_l7Xocȋx%mƣ [q ! !{_0٭aF1NvyaFUI%GS<#OiZX%QK+M'zcT_?y<;T/nJaz [WX%wך_k~ͯ5 Nfz0"F1ux|g<`.Ҵ4sшzZ.(xxe4`IIUdy,0D֪bXEeIdYRtLgid*LgCm1z j߼~GӔV dШbI qpme8X҃_k~ͯ5 Fp(<'seqv~N^l+%@˥{*Q{5_@uv)Ih9uUht_y#DK,83fRZ q0! GDцx$MbC͆,,,Yo\_b;6hiX!0D7of$jaIx N?INS<8fԳ)e'j<'`/4_k(슢x#򉲬˫k?plKX6ڢ-ea8!`KۖuUn lY!aݭKJ2l?|OUTMEt@$>V}DNܮ/~NOU^I m;9_k~ͯ5_$ y=uYXPU591h YٮH˲)! pnWͲ4!ƧOE`ZqGD؎ 7 zs `2bEA{1P'z}k8:CbE:M/wTBE'H\upd|~.[_k~ͯ_,(˪,%>jiF[ʪޥ*vqc$S%~-i`[͆*1޽ @lkEQ"\^]wXbZ)3NfEYU ai':]NBQы*^W\]ĉg_k~ͯ_ؖ)-<( 4훯$p4J!M30d4S9ht2%N"ibِ)10B 0W_a~H)vBISW w?\=aZь o:f Q.}syrhA=wX~TmgNXu©}_] /A.ܟ_k~ͯ_$xO^dWkLa?' C*6 ҔeA(L෿ zmAp8x9sdit2suuɷ "v\lw\\pG瘦;ȣۏwpL-Q(:.a2߳TuE ȋ,1K/)ӔxO+\?lz!Ǯqlpuwh>qHq;.zH+!5LЩSG;6֟շ尪P}E8x_s"LtS4_k"m(i\߼ ʢ[gG E1Y҄zvBJpBYe1M Mh4a<yBA 8;?kxK_6y)%O9J);DtRnnuC.5 |0~o?:jo'}DWN1ͯ5%y(ߒ;C Cn_\>4maXd0u JЛ#ߏ:^: zZh/zxeС!^6"DO}=u?MZͯ5IJUVؖp8!@&jnXP/ 71 5_H~DZQJўgeцA2҄ȑbď?)ˋ+./o0 (0MVL3f~BZ\?11LlW ?s62G?djj l̝c$<~pJ,nm`OoߤwM3Q:&^=\-K'ͯ5E$ ,ݻȱ]tG$ Pvm;E6n=\.(˒ׯ^v?QUU8.vMlMp0o]a2>23M$i5 y6$MR(`+~/K֊8J]WJ݇ABgM1%>?/`awI]~f:ߢk^k~ͯ5yRZTMX)%EY4`it|NUդq윲p,0ڬQ ~lzIK1FUض8a#ͯ5vQ; Lulˡ jÐШhE5 ۵6LXrO vIiJfK"g[!?| $M3޼y[,n4fx4H,D:D}y8>r;>Ԝ[8U]$h~ͯ5/?"3Ii|t=+8FZUURU%eO'TsNަXU>URuYu"(螯Bk~ͯ5E?>@ 8;;GZ<Ϙ?>2x-EQ ,K84Mv zJ!2\ SF)ˢ-CV5e)yy>;޿ X.:KuO oTEA/B{:q]8eG@#D9zb?y8=1[Tk~ͯ5I0,̦\_Q pm\^^8qlf8R)-22͚,OqlxFe6KF 0$$2$a<-gY(zv[,4$ׯXoTUh<`~T/ `O_:ʃTp37;\ۻQL3N-^s0_k~ͯ5⏓e -ұ0$ >0N8cq#NB?qf vі} dG4n l4aPQU iI"Mw!M@J?deɺ[)*41b;gw*/ yߝw!zDncYVC lVVE;lǥc4L YssQl6K,Ϩ fa0n6 cAl0!I#F!_-yc f;!q<.GW,=q_*5{cջ[?_k~ͯ5 㿼!LlW߯ #1eU^ƀBZ6c{(jx<4uvK(AIcd81͒K)ɲfR>ޅOĔezTUx:nR֋<~^+_0eQЌ#E%<<2at2s}m}^y>3]u}`[S5vJk~ͯ5ym1Ljp0q\YYzG޽{GĻnun_S5>ȫWo0M RwΦY iY iؖCӴӣLCy>ׯIӄHg:D/ȋ vl(r3V`i3N~ gAl6#VayI}aTU j@t,ILd4Ƕ,4ݻwv;xAliQiH۶qSæ,u?X]Eo^pxÁ}GYyl;vW]v3Ki~ͯ5/vl,I' Gc>xՒhJ4¶vaR5$ّ$1g ʲ`:u]"VokP0 %eaq~/bعnͯ5۶.P D-UYqyud:4%Mo#._",j0Ҝ0 EULnoY$IB<<޵dmqa46yAӔ|3i$[vI5 àsUI u]8"/@G1i3LI۲ u $oKڶ6PW RWr9s}4LS)ml^Ei_Ձ>'Q0RU%8_k~ͯ_絛/i |?s,qR2m0 xJ",KY, dRT|/F5`[6xJ8e)Y٭ޛf1LgUj@2uS^u6+LiS%Bu}{0Ē6I>`v I]ոK$\_2YWضd28ƶ44M,a<ٮȳӔh~ͯ5o?5m"C89;  ˲늢*x~@]X[w@ 0h6=E^0ՂrPJcf\EJ`DYҔ,1 lzDq]PUM]l7[FMSc8pͯ5_w4i)%eiXTuEm-i:.a8s=lfHKڸO<<LiTzb6IJY~H(p}))m,iv6Jf)e1;K]4$wwhT F1Ya.4e8>a5_k/VHˢ3e!b.u] Y@J )6eMY ^ݼ"$IL-:s} sFXEp)muWYe9l\k\C5Mxy>wwq FlCwT`6UY4 iXCYh~ͯ5oww̰, p*ȳ߂d; ՜*ixBy0dYS%i"A|<`8RE6޲^WضK^-aes˥Ʋl\qlx!$8.m+±4_k~7wB)1JYFw=pzf6YPW i4uiJ~de$IBYd~@s}laYE24Mz`X!LA$\]¶nMm!)ML}ʲ S0i۔yx,slǢi7WEzƒa'[\u= Dk~ͯ5?-~G;m7VjP,OXp8az±e.icY6BʲE^ 4|HT~j.p\ipl0h `e0msvR J5xOUEY"(,ˈvqG.,0Lf&Mb`F;`[6O9MS1+ $n\,_k~ͯ5Oi\>aUQ2Y/3~0 f3VpMe<SV%aIxǬi\-Pa6=ÒIi;gݒm95 $:>#Yj8QC6%]rؐ`2'͖0 ے #4_k~7}'-bd<2DH) )<+'ضvS0y>ip~~, ,eXAh~ͯ5o붻TY`RUfMEVPivۑdyhEI;M #Ez>`YN[c'3/`;q Ҕr,$Fx|G MdHichҍeI$ l5yaIji_k~ͯJnEضGXlV \]C?qa#_(`$6yZ? I~s>qN4sy8rX>u o>%~wgV KK(!p=-,\.'k @ffj`}v\[CVÉz=aBjnX]ER|„Ԝ(!)%},:$R@ť%48sم+ͷGhZ Dt iQu:]ssӘI1 `)IlBA3!% 2hlnܷ~.ٹ9wn <Y!8Lc^(BZ6=cNPR!FkZEPa{k Ztƕe+SӢ;NXDmzielRjs%R8` sZ3vp@J鸃FQ4+92cz(ab5 Dh0qk))ѹ}>$Ӈ#R`q84AƓ%%cB3fw9H E Dqe94c QT.cv~m@PJaogGۀB%xEJjhNW_AE}B[wfMn$@ϟD %)(!"joZxz(P vA`$\)cna!s |3TN<"Z4k#5bQK2mU2F*xgÁx@ExVԞ|ۏ~M0NZIH_R(\~f=w~/RJڴBf `3o0 o:>O u\{|OBhC2RI!Te Ѽ16E*H5NDB\C79G,c0i}DC,cH*L{ .@,\RffPJ*&^qltjFڵkh(2abJJ V#rBh0x\fZmZS֞@=Rwg) ZuRnoSJ8;^Q JxsMfcI<># g>/óϿf1TŹjm y_ݽ ZqRoqMj/EDC""xBlm'M(%{Ne_XPq,i6zb)94D H 9xs;onG#:6g9QXq,Cy]&,-áL 킌1H PJanv;zmu:Q¹38R nnXڼB!xݎL`bŝLlM//|a ,/BI-!sE:aQ[_u8'1_Bx hRS4H2N-c3WrS~? 0 T`grm\)*:q,3OuFh[_`q; |%̠D77\eIB{ѿ6JoEOR "e19s>.W*[,&Ʒ+hRw  '>@c0fAn5' 3@ƒTCy{]VB;jS./raEuH.;1>;h&Gj\Q6Us|Cx`Ӵ^? $VE5s~x`c1{.?yllnjlO 2RQ*cye;|危z<[ƃJJ4 lqu;zc"]=;R RܔøJUZ7ư0?lp_CxT }41?W"«_L3AZT RilBԎn/ٙ`akoRL"bRRKolXY>:J)l5vʕ1%"> Y5ir)z9f'f^! y ` }?U`qq.I9ؔE,tZFx[H T.V wځ1'\ d%p1R)nz/c(8xaIJb0G>s G7bTFB$5G8U3JrkHk7] &i/EӔlq]fǏ"Rl ybtr![9fLYNYSwGsqhv=$=R=2jws84RDhE5TBTUG o:W൛}7F'e/׿h>T~+/ꚅTC4Xڲ9cl*K/.`cB{ ]@IpiMO5FZw_/=p?*U,1בh=Qw `*DhD0@=Kh)ѾH}Kȗ2&tq|TiU5,2ĤX7[3əc~%xb4 DŽ^]Ɩ@-ʨ2ӆBtb6L9fa`AK-|DH^agɺGxT.O~S*W&QآT.O>nRHz.ri?' ר1iiF䰘Q41b[ $nFz{vh5z]+Ϗݎb1$.M958r豁Ki&$Tec3%j$.S$zZ$OLv:_υ1O Tz-Rxj3N@sj51jnf0s9L̸GŎl&-/nnQr^kE_cS)̋4Xy++[҉(̒k瞳cvzagϭG4d>J5Lyn3mlL~Zhh=.}q I$K2ibиe3nҹmH?^c}t\ c L.hCtnMMIRt?s+d߷~В@}A")K8XMrpGd !F4[~ɖ_(J pr|q' I-yzFlڴ )%f)%}id+&Bڟ4:~ڣ!BӃb=sX&*PNw/F5P]8$CgQR2jѥe CkI !txW@+XA@M)} :[a CN/DGc_.xk^->nanA 9Rl\pӧ3hw`;.qYת͑`yϖ\J)咕Hrй}< .UUU4ff]YAW>YuL1dJYw8KUxGϢYnPBe贛妬Eƀxw=Zx3km'czWET(8AGh4ƔpMJqchzп롄c#n}!4Imu :;Sz`b{ф"UNk#Ov+]++*hZx34 ʏl2Rjh#lŧp`Cz牡S9q4 ;Ԗ%c@e߽Pvɼ>5^.5MhN;j_B܌/,eglJd/,fC"0l$Ez9Ns3bj.MscK 7לv\ ݢXvR:O{L޺G :r/*FrC}!>yX\Ɠl;mhԨ鮂Ocx[RR1E4ܫ-VOW~)j6+*@ 0>Wg?9HDcᱯkQ|HZ>j2,!H٩p&ۥyBґp߀Q%uַԭGxoOμ#8 E#حԞCnw=ans@0V|*1j?@}h? EUAx6 Z`=u#;k6q"{:Z'uqqqq?e_IENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/logo.png000066400000000000000000003232121411575327000222600ustar00rootroot00000000000000PNG  IHDR5%sIDATxYmyƜc󲹢Ddr)eRNC^5 8Ĉ8FN,%TEg7_ksavcI)7k.ܽlo475  Q}.DCP]@Pm93e%煠Sו;])SPm,=?6eWT/  P V%B)TհB 6R#VHxʿM[ [C+Q,J6Q#5X'*7͒!~YE[ZeC:h]JqkBȯ$ ~xG-tBk?׿:4z=e[[(VXDy-s_lv;w.ú4= *{B{DŽ_6ykQ5uzϼSsxŝqKiv^wlݳ"r/- Eմ6| WZ%TThƅ+K3p;eєU{=%V%:UJNj\,D/kRăQQ>nަi4uCBO9hf4(Mm9|i*J/,9>-j7Z><ۧK)j%(=?>U%;褨Z&m2Rx@%%9!ZߑVu [G_;4I(ժ|z=^N-&Nթb[q(yXB6ԁJ56ܿ*0)uH,>z{=(zrCίoUZpKN8t3]6P %QECn/eiSi{=(PP4kZQe Ѐ%N4ۯ51JK|@Y>^sSuFT?ѭ*kDOV4mVw^Wߊ *ƼU+)]JInz= jw5יuE,6NPy+ s'Q)*PMJ!nz-jiJUV"KєE[f1YB[2#uvb;bĝ; @jQREuT[^`[N/չ^տ{(ZJ+u(%ڈz;DSZ6F$hh{=o{CזUq,}j0J4@n&$тäF/v6Ku%{=茹*NT{YvY^:%4.4[@"E+Bx}醊v`{LJߠ0jVro9hvꠁwԖw]sp.:E5pz,G{=7ں(j:nP_\-²{XtQY zz=\e0:\C>UQQ%RljcS5C=/jB@H;= jKF5D=?.FBk3WA=u%-רV jq}].h zCptAj-g{=t h=UUQBHS}se^XUd͢SҾ6YiC4ªnB+P{P餫у# W)Z6{G_*uB瞢yADwiեV|^]IC'|*9$:7K:4{=/脧i`U2TQI5J}-ZAgy(*hAUڋ}]b LT[s%hS|UX=?:M(ƉPT\5#,Ijhߩ:׿[)@Wc D@v+j}tsPzbj~Qm#EXbTÌ'Kpxm׉8ui5RҀ8ilըJ {=l}Ty584KFњ37ְ&qtVup^XԲVh}"PUw=?6{>;j 4EV h[~8|~ڗUQ>j׷T݁e۔T:.CCC\V8hp%it8=K%jq-(;!=?:UK{2};pJﵒ@̾[Tͷ.AZR{=|eY|yN/_Kz! ÿ".6N#{Vn#.jJSK:Q=?NAeI6U/Ԝp{kntDiʺ{M)갶{Lj_6(Wf{DZ'|?HM]?5*D*{= ڧB{4M^eUX8~ JPwh T["T?-lq:XF{=&7URATSX@T n@<)v"hudKU6rR44B{=(KOB:ߪ\4yW5E )\ j ՒghD붧ZCm$TPvxU%#~Y}/JJ˸E[Kk+iмQrAjzXRK\E;G &{=*кTY T暑mP9E8u#OUUZ׫R:C{=Kԩ#,m C+ E-a-eOknmqZy"0BwhSm˛\Q+{=VPm{yM|uC.Y5mRU;g gӆKj\5z.QwTգ޹._ ({=/4hLojYjk5W%-tCYzev~?CpO~vasvvJ\1M;&۲Ȳ u(NNRb6͊<+p=bbII`y/1_>R_}l0"ؼxǏB(hf"<'3Er}})4߰qɲB土={GǏiY6ibabfW)aV5,-Ĕ)1\z(ߗFy00 YY=o.+mf4 h5 i>`Ya&yz. -YלN8;m94lxj $BnooNgHi$E?CTe3LNf C($v۔Oz=/c^|ʲm,i79/g?kݮ@y{J^rB,r=f;RP${_Pݮ 'H)pP,770 Nfa(I65i#Mȕb@JI&Dr0 jf<wl1Q&!nGlF!q4Q z$77@o~7kNkI Ӕ760l:Ǖ6 SVhh Qqۖ֒a0[IAR.T׫f+%h(x﹌c,b86R(E^p]~65 p]{<ŋ cUc}%-$Nl,M(pL,!MS8&Ul,<{)mnp]09;=,|i!]4{G Ǽka j$Ӳ R|8`4RIzf\;b.qq`eqiP9e:.cm18.m, "ñ^xFFXxK%Q[o65RZ(`8r&RJ_z=1毼-neU5wm+4k% 0Y5Z5זpP{M F:0mNV1:EyOVe煢P9E^Py_'M|/`ߓ&P(\vXl6+44MwQYoQ(Jآ@p\/?`ayQ. 7kP0XͣGݮKS-UYdi@)R!p$vz_!/H k&'D\˲.npliٸK,!i$NJ% \{G_#yo@k+ѭw=0f5{𽶾r[4D(TQ^ߥ5~A0  F#^M9tuJw˵u`Ӓ%ȼ[U-p]dvQ :0-2֟ ' Fqc0  WIϟ.(<#IS$v,#SF1''3Li%1I -a =|ܶMtO0$:_˒dY%/1)ӈB%e= 0ndY6 20,ӣlVzuH8b<.$Gc,=iJ@`9!%JS F7K$’6yV:*;2J>@qe|0ߚWjZ6Kۮ@hzmtIOіP7c6-o^p8}_!v8Ka2hR:.y)gP@x._9?#?_9?{lK0I?v[{,ج(Ybyjq땑%<@M2Ǐ4˨0w?3~Ie8v?Ɣfbxd:c^ru}Gndiƣo𣏾Rk]m[?c^k`*wv,s4l%uPK6)-t=mKe[5'W%@^L_;@E󭥄\[TmH+Z>ܱ\.p,YWXm!Ə  |_'2QTJ,8G'[$_58BŃGL&3 i`nQ˒xl3gϟٱl:c2=%C&)@?1fF!!'3<QGg)B?ǼwTdơccyL !@3瞁0èRmԜ\u]Z^l^zPooZxͷjN$ض%mǡP QRxހҢ 'I'y{LSw1'!H)q? QyO Kڄɞvi #n_a;ag8S(bq94K~fE =y0ȳ 0p\vCaZAf~;(3G'kc^X]_F#X URN,6kFÏP^'$@%xZnz4AWr^qjp0.c)Yo+L(p۶lKݎ#k̗~btO)6+Wv_ɷ'L ,s8^a v-u_] ;8N899f3\#M&@eel'Pp8fݐD=On|釜3P[+c.cHvp8F (Y-qBP}yϾӆB;GlFkm@hBzJ( *!2܇CyVy7N^C8B>Ym0ܑ)CD矖&YEavr8A^ +'\/@HȲj+ &ߦ|$$%4-!Mcƣ1Fa% lVDqa?;~̉8.(vf2q;"999Dz,p+iٮaqa%)pLǤq( )8?=BX}9? y7?x'fFEmTwJ ۬TYKB8LB|%fޚާΛCvdi\NH󌛫+f'(ED\zp8FJh4(Rp[?K'KpB)+W~_)(~.A2e bu[ @z* $4%(G?u 8"b.>4-0GnVBC4eߖwNCQ<{p8KK_}y yAhqh&u_n-QV,f?$t @M`ye*頨UQpe))<$MXWLg0r}sp˓'0yK"o&c'AQz{U' bz_8XKZl\&2p)Ғrqp8iT'?'S$ƲxOƬ7KNӌW^1<~&I3F S|ч>@V8ƣ!YWՙb]R[13ںIoat@wA!@3q wR4eU>ns栴hR9_˫yF ,paZlHds.Vqiؖ%%XF&/S,W !Ȋ<+()-Y>yˌ?/ɷ!ǼW+t09m@ Bzߡh@hUyZ'ugWhynoGQ Gc1IB~)&ik;(\c!Jehc[ض_ O>"X{_<[ fa84Nx9(1E#L|ɇAa8ao'} {˲ma9/.!P{ф2z~b<0p]WWe6)4W@|!uq a9< `RZ0U~Q [>!n@S O:i @y.4RElxGbO3 A&\__1Ql7[U&x~nr  I٬ʄRggc'If0LNOTg$i1 YFF ݖӳSa\ya }Gu:&ѷZڋzk,j렚Y(*aiR4` +',(>_24r4%IP 4Oyqn 6D<_W `O]v`8b ¶m `^L<fuvP?<ت~~"º~Q_*Պ5m! /?a4# X\#QJPLC0',8XoVI^89Qa&}eY@gO?d:++q'Hb^'te!Ǽ =CVA:4spCO+ fmk՟>w./3X_U& Q>ɬnn|&/G#y7?xj~wuF>$Q4^ >]oIšB5AL'D*NUp,J+(xk (ra[볘1LdJdYa,srb[6a$Q̛Q߲YK*6pHk U`Ҍ3$"KRLKyZ-) /}^c^j¹Amh&!҅F =<}*!bE+}p$Y~H/Hn|۶\40 {@g)=Ҵ!/XRFǧ`\L~"sy>) G %@)xWWIހȈjj2(`ZX$8fŮR8i+hǣG j5RJfSI%ݬ6GSlfZ)E\-p=8NNRClK"(%hr$ !O>˖HƲƄ7=H_4mm{֬yBu U(cݰZϛ 4O}r;Fxh4A,I]z&Ӳȳ! 0DmL&3\'\^G=H_}W߆B"KlCuk|ؚuNKW ϵmsCO[:[Fix~ /^>!2,inq)mst-ӒxX"IbVk:#s\dvzd:%Jr*LaJ4MLB 08wL''Hiٮq< Ks SVY@ȃ`HQ(5RڬV L|..1OlVیe8Mg[ ˖e[L Y[, + JOsHՠPܺ p|;5.|LΦ-K:^j}44`Gڨ}G~Q]WQ(:!7D .pIf)/_6͒, k6E,K'{~8riaI5yf A0$c4E2b&8J,yp0fے1yƍe[C"cyp$Mvy3YIavD+ի"ڇ嫗 CP0_ް^xM/UX`8z*[m6F,F)ج؎oV?R?Ǽ?ו,,i(/E UnAmrZou=iʫs@{O[o(7,I;dYiXb~0Ax5 HK%)e4|9yqrrj2C4Jv! ,ic E$flw;$!2tzb4#ӧ!>&l6k,@+h8F)ExǓ'Ox((oV0{G??/P%vZ{ૈ!jm%M(J!+մW^-t\]ZUjZ w.QwT;k762XA( v vC$cy^}9[F!|/ B<'J"Fw,I"a`lAP_ v802!(fmM&s jvb<S(]N41(Cpu[Yj낁jٴFzp'ª mg镕ҋNag8݆n9B!/3M;&uuBR۶ YdRFl7DQH >_@F=OLmy+˶U6Íݑƚ~W_`@PF 1r=f;tl=IN`]3NRE>TX,n0Go`+0-EQ lu=4a lk!,M}em&X-׌Gcx_%/]SY&Qv;>|fa4,Fq!MB^/, >PtOQ=tM:Ju:mI=aƄ8,zDv\!:etjB7y`79bVJJh+\Թji+ OCRe{[~"Dyf//#LSE2HC M[ 0D˖bqc*BCQdٴiJ+0ݮ1 m;ag IJI$ |n)-^`:==<űmaH n0 0`yilu1 ~K'(T[W?jZCc}@Ꝭu>8byգGq0@wI~=8?9_@Z`8j Bm 8hp>iB$= K!n=ԡ4m$}e`8fY2q"}5uGaF;leXPQe\A%R(a4x qrr痉53uqI؄"2_DŽQJ`q/x O?vm[iq{sM 0Mh|>Y[ZAKZwŮiuipԓPH#6tJ,~8|w{=c_ewW4CEZv7 qfWg]b]=UwkmYQ#/E$;C|'Mzyo0 86傂a &IRRLhR:z) 7|ٮQJY/fd; )F(prp\&\pl+NNNq]aElYbm;P(fY,8v}|ѣ7 \!ݚxc?C\7ַK^f;d,j{3kvmw"bm?[kkR_y?TͲ(UD6β%NKUݍͰ.,ٻ}V% Kfff[6y9`KfYNEu]l! #4\ L4fX`Yьfl6oG!JJJaI )ęqaI<{J)!ggp}tm9,W\I=шnb5scv Ғ<)9?+_*pO iYmx}Whtppv"uW#:,[Ke~ *6nk<?r>tC1j KԝTy!\w|W;7:+iG*-eDqH Fi UFe R0e0Xoevf!,vyK.Bp_( MS$qRaHh[oCՒdYJ&`290v| bZg9gH[c(7 Ŝ+.\C?jHRV=w6}3 ƸYMjU'Rpj^!R%G=}jCi-W34z״E ~\/uDE5~nn#m,%Sa x͆nLa&4Mwy%%I GQ$[$4DQ?b͎z/VeMk}i'|:VGuXwoVV-Bh80 =/gίHDq GXj]:NF3,f2f97ׯ@e9HıS,u&)Ib*tqDE7+|g2/./FxnnfYr~z';cYbf9;,# clA%׷W8x4e2 01 x~aիg=c3NȲnMv-%e*&CV`:伟x>=L-VKLǢq$i?? URTꐺUjzO`8x_5!ç3JBG;Xv}T%xߎEp2;%Nnoy1yEx8;=% ^]d''`ȳ J1L0 )M> rx/R2P/° `^2X_RIb87`<ٮ84 =~sJ9 ..d1h +f gWKj#vj')!)ڶd' RWeVK}S#6VZݍ٬gmrMPYR=v*R=#Y2R-Ј}Ju `:C5էOƗ}h,9֒cgT ,;9DL*P@HnzA@\0Je4$)Q''H륬0*o0J9?K44ՂK EpSjjj` ӓSabq0wNNY.VLg'\_$sf(Fquf8P!iaUsTNT0>:JRTUIGhh%?뿬9hf= G::99MBiE^ߢV̕XO2zTAf qH cM)#4A`pvzaHpf 4,LTfqHWW/u=4AǰyuV;wǧa4wz'΍JF=, ?Z>q5!7Ū{j%e'V\3MɪR 9^6/=h/Zhz2 Sp>Y^m^<ȳ҂ p]wyr%[oɳ2~g0(cn[T76՜c81u\iURE!/IWL'' =|!ׯLf yUFqn8!a?҄hf&#zMx0s,5mhZJl5iFXv"AhAL6L+7,DŽ6u]V-zNjT:oB"T4BHl QE hhYͦCf ﶫZ!C/[ogV0G?x|q3\c29a<x_xMf:ye"̳3^x`0gEeLxʳ2!-Ǐ"Is9',Ws2Ѧn4un H<m51 UC!H(Y fڦԹvs=qWI^5iaXw=-;Ct*NӌVPQh=mIӈhzC&[:*e-m֛$IJDqt2K47sN&3<# Y `X,TQYܢ򜳳 ?bYqq<8`ݲ&e_-֬6qs+R]"5bIUqwml1=^e3V u!ڶ-v;Pv~g\YRizOy%Jhj'c{ó9=?'IJy Ƕ=65Ղ2vx4ƶ2X.bJX\y>YVXhJY, cƣk0vl>$N224H=*/il6cao-00 `~c8ڬ)reIx]窑eXWߨZj.=9(}I% }pVRu`佭3Ux?Ptx8YT$Z`&xq0A"zi'J{^zt Ww^W+XG_' KLSֆK00 ^Ǩ"g Ym0MTfl[8}v5„/ fEgO>b:=e<{[ ap}{I%)a3ޢ*iӶqiHNN)hKeı^zx2##i\][[pЍTu"@,8uh׎A6;_/Ioj~zuGUw0u=|g'U5V\w+[q誏ݥn~Uן*2GYX4(`6= F)dB+.Lض4-&܀zxA*BܿK FHtp͕殂f~egr$)<g$)ݎUdynY.pv\\(Fijd:1 _Dnm;l[hz!r,fۢDQv!IS0r9Xa:;! wL'SxiW`aݬJ4h4ik]Ovm+RY]һD{ժa7܈> [9c_,2YBT-۫Չۉ#wj+<ضwKFؒyۮ0M$˸b6;Ŕ&_ʯ!mW^7ަ(R[$e^Qb2f cNlw65B$qDȳnj,,ia6k>}q8?b-sY%-L)Q-8_\$ EQpusEŜ?(ӯ!Ӕ*;M]ں$gQZ6pL i$aTTEBt[f-GZ!:WwU cjuՊ@K:ftw lk7?:[WQT3M͊`(8&ceqzvFĬ+a8uCv //1H=9u<38 g.bɓy1/G|`JgJ %ɔB)v *𽀓SLI&1dA&=&Nb %I+ ubCDiC6CF4UJ(;:΍NwT+jo*rՒcmR?faD#2v7 =/k@3!#E >oJ{z;ۉ:R&( \e<"d߰zvG$igY'S6 yXVvx:ϴN KЇ˝xaixl'Ns~p0Wi8iOڨȩz=ٌsmhJJe"L Ceh-VEk}'YAqJKYʲ3- %8? b=NO i% .ry o$,icY_"Lb^o `KۖHSǧ}dW89^[)Ph-`?Z>tACoϽ;Ia̶hGkKmVw][C )Qbq>|4,˙NϘLiLS|e8!0aY6I#b8UX>._Re(c&?”b\Ƶmx&~0?_rssyc4M$Yo֤YN啾?!2 " 8/be1^ȳ$NNglv[pB!)/F7dya?/_>u- łl<%p]]g|_E X.$qaL'@k"%HOvM: {kuY76ikO*σ5U5sRԚf?;GVKGTT:j:">^}LX6mn[!:O_<ö\LiICz]<[ #\ץP iZ G$.ӧ̦3v RJZOLEIaE@X!;u|<7`>իM~]\^/9==C oIC-]̉DjAee`FhI|R⤝Ju׿;IV{jygƶq!ǹ;F^L =_PUՅC}GQWySo~*Pi}tv>gxOD⣏)L/3 H,/X-WHS E0MO?(p@}yv YVfy؞5! ݉. j(y^SGH)^-@(~# x|qiYL'~[-髕μ\va+n]!JUT#ɝNj:.Wg5Ϩק-Eu&fur60괵)B`s|uFcU_`y+ݱVmڭV~Qg}x8уGίqp2XdY,)%0x1JaK6ACR ~C"c2bH<#0L|CJvEĘ$S7sy}\0d6=k_M../}(xy4۲x뭷9?իqiJkV lFd][6}O׆9-#IDAT@ڜ%xLeQEЖB^=^VMHk_+t]Dm+:1uѯ#։{Dkk"[=p{m^uX; V~0 ..ag$IJ*l' >јhf;4Ƕ\BD /nwdyF (ywWWie:Ӑ8K'7y绬Vss(bXmfpd4ے]rZy|QݭV$$P c|66.%96&c2 ,! B9KJOyTqjj{tjs1T?=ϭ!WH -DE5|BQdp)YhB2I ՁZ!w$I3RY!=#./@(ىCPx/^TVB!kU/zYEuax(],sC!m( w>. G} DL7Na/t B֤h3jnokkM0 CN<*!iRԈx<&Cz4h6[hi:~g 㐇,ai:2ڼNGخRkUWۙk4,VOpcPB AQ`r"UYyqQ&RT+A͏=+\XbHy?_eU$EcEd r; Eu1TNifEwc"+^^+̣€O 7N2}&1뛛# gnfNe:hFo4mEfm *+k\WZlJd2fyizI⮻'Lyړ*Kqxo#7 )X^>$T[߳p@ߔ_2,C{@/&B])K|<#=DU5?44Ҿ݊s,oމb&gPzWEB{6A&F|3Eb>*aINS qrlLah4D̦Z6qC7 {ؖ~g0aX(b!?hVǣ!,@&( Z!BwUkIDK b&I$ e͉S(I̤;8]2[.9+~TerWd.8 rیrms# rYT>*nQ c޺d [ZH6eGT'4N&Oa.!753z8bY\TTrw!
dL' 25%$υdIH,g$Z@B)_*KM:uˇn|)z U%oa_Ӕ8H_xl%LolfQKӐ}u( qlC7B H4^njئCLLc˄ 0Tt=D'8&^dS6 Qs&IH68[k3FZGqSVp팆}&bY6[-j45ǩptdp8,8X"^Ƃo$5]/ $$ E"dePu e(BHpLx;#.UiOU€^ 1ЛdXNrO]6t()G/XFqd<v,N2A<Ɠ1z˲T\dBM6Z?a[6WcwgEv{UQql~hqi[u*!k-Pd} @h/0m1 T;Q N"}Y ̺=Bі:\z*yHӡdVl^#H$l%teY0d:$-/k9rPuuaG>15|={vi4٦nt0QTx(-8s+Lg3LNC1?f8$1"Ј#*{L'czeLd:ue(h2vF8eZ$B0Lpng,gDD & ?oS3!D#f,K~/cv1.h;O{b \%L H2?f̓m(ys_0BIc@*ls;d]y{J[%`uysz23vwvhڜ>u 0M7`6c0W1XMf6wWؖKDQTu}^̟1,~EpNgU(Q5`H{i0 MzBöf)&l7@Uٺ3,Ngo>-"BZ#,"0,Qdg;xCHZ\,ޗUq@eDȎ|׳ëyWYEBHՈc\|, (iiŤ_Fn53m`1~fi;Hs `<F u 2J+4[MhxyJqRXzO8J&3YCtL-12'ڜsN 4CspG2bӧMKae&hMobMes2+a勗8}CM,b8fٹaXDA0 Hbn$It:B4T]#+ۘ!y(MC+ *! )l>A$.IxCf-Qާ 9#J̝u?_+g QTR(+l!X([K!?_vX/{A̐iɘ u*$Ik,1w؎EREQ ~K`6Ӳ1F4Uc038AltcDQzl!Z4JD]lf4MZԕuj\T\t è6Q90ʛ"qQ!">9((QJxa,6$;C$cVAEJ᭔"֔Ea( B~Hv,Y\d,b{{n.qݘJ5F^ztĶL\ `FۥhT`0 IeqE\a04Q5Wg<0 ,3hg G*^<̟(*~j ߧh 2P5L5Ο?Qk.=$5L9^Z9P*sfٛJrrD>iWI õ?:\+r<#>)-?_=( W~-4bƁ >̢N 4UYE4,4M^a&r%H!Oh6[EtdZ`j(̟$1a*^'Or  0~?cuuRh0̙ؖӰLgI'c,Ftj^*F{X2 vFcaT6r)0 Lly# ]S.قn%l$ִu?_Olr$(:gws<X.t@'{To(}Ƥ4,h6(,q\$N5IЧ^AS4xQ5C^u<$E$\߼*iA%B,F5vvL˲fi̦Sw9y A&0uE;F@4Μ>G#,NM>aA$TB0ԉST^>G9P/'f8UX[҆쁝g1f<Q:v*}Ɗʾg7b'Oboā hHh4@4:}je#̙3LSƣMX?ID\r'Ni*^F\vVEū2д4zailôlL4-$ ++XfMSu%Ibh:**0=t6a{me0p):I °nL2d*iubٝb--L7EnN c*tUgyu<#^PIH7[[ҥX^Z*m.8i3gΣ*Q:q`>ZQh6"V2O0tuQP Wq=D&a$MqL`t蚅m,je/gt'*L";''<#xiS\%QON^Z~WVBnwN\W![oNgxGxGK=բ47 e:Uhxrÿ"#l+HQ 9Юd}ULA,1LiԚ o^szA(tIi4R 1Zdd2fBwv-8 8ij:atq*JBZguuY}`:ɔxH̃hFgo0O9shxO Fx2b4ac^(bZ&㘕 B8;ODh3!LSD8\m[T/DDﲴn<׮o-ixQ+?@FzI=+eH HQz?M6̴wz!jv-]4./o3sQ)y4i֕(%pڨ"}?@$Qe0SX`Уn2 M'F#j:I Xju!~3#,xgye( 0M[o(NߣVo*d9`:5vv`F"EZ1QPX_;EgoZg:`Ykk؎CL'#8왳=|2 ~m<ɄڢC^'\1@-CW[ ,Nop<y?_yͳ- @u @7͂ĐoI s%2t| //w [gete0 ( WQ5 ۶rz;Bd:M$AQDΗУ.\xd2^o1Mauu^O&#"ahQ3 fhJ=Z% ca6E1 ^ch B0qlpy~0u@~ #V%i> DBY~Q=!Gb6;o <?Go9?5fAѾB*cSBv\%ˋtd@-E`br ^_y;)SA@3g aj[p}4U0L|kY[]OnPm*54MC$1k'٢g}$岶A |m;Em]G5fZ8qm:]gNu>adu˵t`ooJ0 jNFIB0 7jgCR}0INQc. qUV);xe.p :Ǹc~3[.e0x5~ 0 0kJ$ g9d/ h#ʟo'D)? đ!~7ib QJT5vJnDAqQ:.A8hW؎e:Lc4Uô,&U ڭ?ϭ$ ԪuEʕ)'t<Tb!U!)peNԹR.PAү3Y2d<ò;/F!"h@F*$vXoE}J@Gkװmd:t}62M\q\fhjT5`J10u ՉEx:hfhJ}E!Ia(*JDZf}F>zD&Љqn8hC\ Fc&dZ(/jvHvzJB-eiMr"Ij! 3(K<1i9}3gN <o'N1zؖC$x4^f6' qP6g3 C'CTKu]laOh6$B>a:ǵNeLȽ)UtE2{P0-Zv9Ҥ%:2-]8s'7_8W1gevwA0 )W(9J hӕPnӆr}ARIC9 3Y|+jezXI%!F,$B4KLc"q~oHԩS8nh0?sC ,ˢyd2Vk0AԪut]?c{{;Kض*DqLw۱U_eMlEu0YYZA >ei5pm9hNZewO}Q4MVQV$730ͭkT ecϳQ?K`ڶiY̦30u=lE4ЧbZOb)f躕Ff yjAZeyy˲LPo60 nozm:?Z1O;8G%lx]ցΥaI+M)yfϫPÀ=*(Fj/ut>`CUE0Lƣ 0PTX`@9r Rs(!2|Bh rlɠȝ(_Y~%p~1d3gHWlnSU?Qe|WNws<½x|;>KD0J÷>\U~~%ſԪM&q H2u ِ*Mg7F6ntE9佃 =^NmsFݙx40Lh-zhaN۟SjgΣɨOZ2&1S*("B\ݜ MAJ#kJLpenG9I\!7`L .;}St/({|Ƿm~4]|wnVU^/竾s7ʫ{iB} .桏>< G]빺$hY岝W̗2 絔0Xޗ߹їeP&C AX􌰹9mf4mOS$s*Ԫ61 0 rkWaUjCfMpNg ENh8diiNDQtcZzUgw4ך4-b09q[[Lgc^XY^c:}uvw,j\Zx<۞t:C"Ü^`9P.=\wdZsaI8VEP?RObwǝwS"a4U\PTeU/N}+fk rp^?_mi: G]+'+5!Yr~ZNByTZ zw(6A:l̐ #p;m%hKZvY8AL3c;,/- ;L&<ϣ^&1qσ: TUC5\iX;w3H:^gtDa0Q 6I 0,ϩPL'3V, ]U8qױ`@I%Cuj> WauudFf~/n\@VTZi0HeYFl'UFnF0m)R۹˳"|iQ,=ǂ O_׼e_ͩSJgSK^?]\Z'4 j ڐA}L0P忞~S@ Q^,iPp,Kd6)Iw3))KFAPÔrDQGضyfa: ߧVm!ل8n&i#,=vi6Lg!++lmmw֛o'NdnJwRv8U8a_vzu&14f&QBP{3,ˡRR%"TUOQ8#(Q@5BQ0t]zHV^4Nf1 -Hzp('fъ3T6O"]xg{{jGk[Y_?W>/V:h:/7#TtӭX_Uc?#. }e+NL4Fj_KN@7l\)O`DZ^rrTE+}!j?%C:0ȼaFUu KKXEG#4-0iT|mv7h'tٌjel2Hbm;anX&q^Z"X`4F Fסn!BI++kؖˉ'޾m00L$N+k&,Ô2l8Y0ei"+ KJ4_m)(?DJj^W?c~3?c }!z.W~pٜN|g>oo㱋sD~C(x Fs5uvmo}+s=蚖=( fIKS1nRm-)f%m@#ۇٰaa`0Qܹɕς4(JTW/yJN DZڲ[a$ 2M@aH4-._v˜niTA@"kf#~AΞ ˲)L ضMy4eh0Φ4 $s\TUc8(*i3NQ5Ǯd:AU,ˡZkE1~vkJ™y|g{z.daQAdڠ+sI"hBHaAr 2eGۂ%g($,?i._Da˼-oO韽5gR喛}l,M?{!ܯxмŴrƏ~[JoӣU8}L#>_/i %XMHd P{HB#yk_hBYx[=f2z}&kkjU0f41ST.VKe}mul  GaT2mtFuJPx:WP ך7ϢhZY [L1t?/t:ү;gxßzLG\&KJT!eM(Y*?l2]͒.Dy ('(ay0^l7j /' 3?5m8&[[xnðEUTJlmwi5R}Ic}聟g S`yFͫxGRcue ޢhvX?(nMxhTYhwt* `n8Da@d83J`@'ضKı- #b/(j(H%xJǪOnʽ f@-Af8e,3+ESԎ%{dпZ2LrZelhB,"lW>Ao囿[9?훿 4[l~۶zGR\äyK7py?{LG\빭_@+kPXI"ܐ NQT(mrK>,o؂ +nx* r%&i0!ҨXYݠgk*hIBŶ\6'?ʉSXIcCB/ɾ~ £_'cˡVorEZetiOǜDqZ7b]\~=Ik{heYL'3Pq$1ހ^:3ߧhD!i+S!/ɓaBUyw{yEO&Djɰz`xR߬4q42ׯ&0Pp.n,'O|ן͞s󀗿et|=TM'ML.~$szbQ1<mϡG6͵ 2W6L2 1H{_2,NJ0$B%x"Qt23]ըWE"B]qa0xXҚRWC" e|Kt]zK++Aj3*b~KFV ꘦IZE:Wv87x73JzMl:ŴL% R^Cg0QU'3PUϫ1X`:׮_iW\}n̒ tU? o,+0H5ES" 웻 (]O ˬ2[q\A{iZt6!;=ٔ?? |w|uϛ 7¯v:w嫼JJt?|^cy?dJb T xebK|?l*!U$E'1~s7Dߡ^k4- ݤQo2PUvv7QUQ-O֛*h9|@5.]~fszeN0F> JD-Jg#YXu3F"Bz]Ξ>˙gE! (,,4 񡐇M*CZZ.?cL2Q^qN&
OESG=LDUb42P44dG`oo? i;Wy7v_4^ 8OqwRHՕ,l(?Cg7' +-RUy"("VIJdBvvvLF$@ jU>z^{HnymŜ9s0 yb-нîRel{LznШ6T=?^ݥg8q1ɴtp91܏eKɭwqw!ͦA[4[m1Il%B$< ò)I٠| G KLCQpV&/E 9BC^\TH 悻diVd?#ƣ1[!"Uz}v8F]O}~~o> >|Y|}srco\7K㏓3>;{|AgdyiO"5 \5E\7!e Tq_yrC5*sBGr EJ>G \lq24Vc ݡZB5n.t`woܮ~$Bv}{'`%I>Qo ޟc@'T :uӟhP؂.A$ ;{;34t`E)9PB4R%%?,]rX"P|NfYJH`.^R AT|ɢ`'1A$TTOi鞌UGfӺ6;\Տ◾C7~j?uCo?>'{΍]^cEG\YC)^U[ c#tٺ8 &r#2rd`֟MX(((鹓9)`اR{>L}0Yos-d2B}ef1[W:}0?'(Qw9?@l];A %&/N0_5>=V}?SKx;.ry{؝Ъ$@QT>n~_}L#h=˰"4qRzK<~ Ty)LH]d Qsp-l+-Ey{y;k<UV[Mle2iZ4 ?a&zd }&beZT*5F!SuaUV4Jm]BQ>y\y`bE1шz`8"b\l:a0!>z?Gb}Zb.Qӓ{4+Y4~YI  OҾZFfRvɅZd݁˂|?c\~gwn_}7r4~]0IiOݴNgԬbo@D!/x5'8Am[l&#DgG?&%WYGy˿Ovz"倢:1Hh[&XBiedKEyi/Tx^pʲ\{Ȟ -ye{tQ(p 0«Tu+W/iA (&bjE˴QTmIm݌OUPUf})ӗƅ[5l vںx2Ĵ,V6X]`鄊qOCA>lsL/HSGNZ!`.az^' <*O{ѴU"ra#K˶xG>fj/A [\}9mӟgNiITfS~P `O[G~_Qm2ݼO۸~ =Nl/{_oW|1H]F [V*qd@0KBfb.d KWnUrb5 [<u.h+ T]c<$&3SrV0MjFa,-/ 0NǬ,!Qϫy+€>WC> !Ο9{$S!tiPTյuz.Ke4b3B2Iݸ ay&s 2MP.dwb#^扫嗤e@IPq`0߅sC -7[|)Wl|B$C[c5vJ_3$y6 ވuݿx'_W~:Qo_T忚Yt:`tx*!/{5>܋|xS /LTrBΥĕp?G qͷRT#(NN$@T.^| HtC}<8!3E_Y?TyK( 罔7}'e|QQ!Ps/ȣ:<.dL%\~Nw0hx^h1s e^NIX%Vw|:J֓9sᅡDJ+,(Y⃫QbJ7??_ B)`zj L7-19 aooyy+_Qp3SF?ۜ??z[y ~$co/{ #pU0 uhWF±1":_}ďijhh:j?EeHP5MPB{,9/b);9IL$$&NId,}.+8&wXoUT+A Ibvv6,ԧ\|2 M3 G C(A׌T(O>:zt:0,AAhx2|PTD"0-C ]K]ufhu?h6/*+9Nx.YANKz$ I,$IL;齄8N1KHxړN'?wN)$QDr{^ESyO7?Srh^-]%1Ao5#t?vf)qsysg/K<﹜?3gNąnq]c?׋(X%G޳ԳJ:."}1ej^~gѶ{ʦkơEuVͲŋ6;vORGL7N2 )ʅn!I"lffL'j\e._T*? ^@ Lb2X^Yv=l%JvvX]@4,VOpCF䩿?h>(%q΍Pϔ9aild^0DMq@]ܨV7_Vx;.G jVEd8@"by-/Kˊ6UgQ^C;,qt;Tj$ od~i[\IJ-,gvNwS+={#QD+u4M^CZUNqx fyyᨏi6Kk|stp$O{sL/4w,cB7\2`6͎ vP%p1}OQx&v9yH gW% #w7izBtS(IDl:n' Q*j8oz't AsuV'qS/F$v\;(*X6'6N'1^862br?Y{4>0@2fʵ ҙ 0t WPCf6g{^OUCzuWnT$Yy7"`O@<cװ7m>]:;C%" |=w1N%gSvD忞BlrSCm=c#K}hG =/!+4Ja.k(}[2L1to #L<kH ԛm0\f ]K3;X{;Oy'`&Q\{^Eף?챴c;Ts%6QP5Ng]ҐEըV+9SsBł\AL"MNbŌӲ壔lU! Ì2\"dOMrto&.kXB\ \8m!ۼ{yo2xfrn^}=$ H7St1Bb.T!%4\lS!d%J}=2iRgKZAVfnf) PSZgQPM'Imn|6Nb~/e{9;y=D!Ο`ylvJn8yϵ ˆhFh?;|MNЫmG{[3H8}韛/=@cs;&'o~:$1m~[,{&_s*oşy~/ˎ+uˈT)ahA*5?(}y"B$j(@B|Gz{Mr0HhF2mɄg/qo4BS 4MB`_mBQyW1L_IO+ {0M.>G8m^E wQ4[4}yaOAQf1Jd!#J5Z+rkLaI_$K-d2J1Ra>s r'?^%Z M՘LGfS©NtbsڋP.GE曲9C"^Ri,(Ky32]?KȽOYKaXIr*ozpܾF'$ մAgR{ڳ^W<58;Wd^QHx˶;?_@QUδ'hݓ>^nX'O"Ζ%ba=.2(Th)~yv$tz beeߟj*ba$ybbFrj᯲ApI񛇫I+i⒠#'I">83w}%_Jd+ɠ`ԧXưl:}og<j{{[?K|<kO uVva{0AQǧc:Go9_忞(* oԺzm",fW8T2$:ܡUl_%ՔbH NA9CĄQBayy8M\rS8an:g2MX^Z~BM,_c9vjv{z/|+=!R}q7 ݠ\VLoL),׮G!lJ$)ƙf_%  S@ .?2єkZޠWb|ǿo^j~c-1 xHy"rT/o^~+?_g>T7H'r=uhX3f9n?NzBYo> X|av#J 攼Yx,NY9 '+. CZ%t]g<*W^j51E!Qbٌ={K#!Ps+^Cx}8309y2ަh 7sס}=c4{OEQI0tP*׭RU jԟX;;@/%Hȋ\j%c2ꑓoqp,"OoBT젟aUYhCܓA' 6Qwx~K^o3|EtxobV>3 {QDk F,]߽"/nُe]ooK^w0 mwq[4*}'ia3LOL,ϵdL^Ǻ.%j!ꃟ*1L`Z\CQ^FUT}ۣ*qa6lVp dچ4G /Y$f _ۗxHI`;iCBĢ/Y9c';[,-.1N*u_Cymk[oF 9QQ✻>?- oCxՙ|ďX}ky7~wg}9ǫjqL(==Pj[+p٠0\"@c2? fTesJv8@Sg?ٳmFcm&˫ M #E<"9u7w1/_=eTpF Vf:y8V @(8%~~c 5VgUXZ^4M)[X^Y&b&ahXE"v#gjX UY6\|s !21-eAXzO.istI:rZ[?N Ӳ-Cy ^̥;{şQ~л=D7?:J!|"oL"W%Z:ÔYQM- >Toy<7v9V׎5m~䏩 U:*Z9fPuy$V;>Kd4NB`'"N눓4X6-_1M挑A?" ;+"!wbD"/ NBvwvyv4as-]7X]Ms} d8a:CE8 y%җ\50 :m3t`yeUUzl6C$ zEU\ZGu@%bg0q\4MVQeC^oQT0-(0t`Rc= nE0,K<q8 @+K4hm<T,6>q"Ҡ"7rH8{ y8!+MNz g>)OG誎㺌F} äV\Q|3/{z3/Zj+5 r/_Ӻ7_Grӹ6f|k{o澵*1?b(<ZaPrSyZS*W= FP&0%RlXV*웖0M7`6+hq7N0+i4f3jr T( uJN"k53f3X6AϢR=7 {C_3i׫anһ0M)n.ugaY^mHn"2?*: du}y"i}s JXx_Ws@ϲ||}z2? ׫S,w~?;-NM(ij1I{5TIec/9] 9ŨEA$.IOP/ {D{2@3%^X44ߟkK4Q/{ ϸ XEe2C5ߏ8^QU?.\w]^wS_p~7y~xL/j4' lQ$dv`lk/ ~=)@?q `LNƬnPl_S!I"f)~XT*UUtm30-{cAS5>٘ĉf ]iQD[xH4M>R/!~qzV;uv*&3՚WV|"&Q?l %-sHa3 :7{-/7EBeWE}rPP \)=Y.m&CI﹏SN3E_?- rNno{ ɛЪB"IX~a/W=G* 7~=y;)\GIK D9r윇RJT4 /!-MJ[%V˟(z`RLgyH-BBDuc*:Z0 z @&e:^!:vi4hjz8U(0 HeY\|s MTMGE&CjiQ7SF>3?`8P*,/yUf8@QT>F8NPhd:^qlm]C27+ܕ(I9AaZR)3ޜkvr BUp-a|ͼmo$"5k&Q˾;_%_?.>Fu*2Ͼ.tNo~#0E / ^zL*bN#(}b@~_ UI}XE0@iH ai:j 0So;T*5tO!?,uTZ/aOD?+k>da7W{6hKN 6UtUksp8yΜ9d:e<a;AԱmDIĕ+9qUjDqkWi[T*MKG z=L4l|?@bIeV3Z$uv14vQlu]t`:}Vk U me0p):~4 Y?Je0,f@hlJu, <;\k[el☕ B8;ODh3!LSD8\m[T/DDﲴn<׮o-ixQ+?@FzI=+eH \;1,W^g ]7gCҼRi榄ԩ Yt~U+./o3sQ)y4i֕(i( (y櫿ӌޖhN# N: znj7LhDV0L8B ٔJt:a:gNG38}WVӴL(NߣVo<Ϩ aY6Hg3لu:{;x:J7mI=#8ZLz}>0aba% r/i˘?Un D\ȡ+- @! Bn,OBi?QGea:affQO0 KVK%f e ])ty]i?{?0‹^ED7tlKzC7IEV8_BCvwwpVFɐzc;ht6aoo5z>f$DDQp4 "G6aqӰpl=LF4("1ap,MO DBY~Q=!Gb6npG,76~LS<"xy=ẠgۓXĝr[jN,XrMr'r;h8A!EOq2/u}"gnq݋R$ôf>fFp8 " \躁i(FoCVlcU:}W0,\% #feڠu@0Lq]M*V 8q u~% C7;lIDATJ, hc{Dqx8VkF>Bp0Lvwv8yt>[o 4|Z>q6yvQ'.܎e8w=r${Dx)d"{v,I !۸¹?jz~W^g 00 3ל5e9D/q_MA|S@<}&JIf@&b~?Y 0 TUSvQ4Uj.bPT =]>kg\FKw!#.ccM0-hAnA@Exn%'`اV(*W\dOX?a AZGLq˗/siygAoӄazx-4~׶%Wfʐc8εk)[i(>Rr|F9t(VbM ۽doܥ9MlK);sZ{B?1 k?Qs^l&"rsr]i^s=Nm%]+`^ۖ,sϹ]f,ie$e?E 2,@ ؖ% *VQʪvfʫ7p{9#bhbĈQ 9W/NܹvYg YqzvԹ*e4Աm!T8<AuB ްCщ3ju,)k0Ij-c}'ضl:{yD?v7! Zlުڬ5mSN{?]d6vx0cZfu;k* Tv ^o-p|| 7k1a3L 22˸vVzYu ȳxRmq߼f2نؖ7LS(0M7_{HU( lwkD!Hy9#4U!6E(8EQHBU8Ҵ$g~!a焽}9zEdnH,z8Nۖ<}韋C!?w'uh=7+{} .:t6DU:u#ejH-PT#]O.7-[>k'?wo\,=L4-"C?}Xcugìwg]o^X&A|<H_'ln^A 5W25_뉠F94 g{XpVլ} ݆``a,(B1"F!\)wbe!$Mv>lHM58=9% RA44!Jt|\6#8@U5LfTM)kq E)}np0 S8BTB,uۛ[#OE/эEJB{',_T  'b:9GSv҄NzY]gRZE_-O'?NMpZ:5v:]M{ 2t*YvU7J?A {OE42~__3pF%H9EQ ՜hLBi \#E%N""#Ip"ef&wd:c۠*a"«WUD7H$ Q5՛7L&3,ƶ,L C0D4vP @ضMy09`Z;8A"O[Yk+]&wR{x{3xo_{!]X4]ʹ7!hz}+r7!)"Z~wCvCdix$**A|x8 |7A|~Lay8(aX,kfI8KEQph /͎*aYDQaZ$qNN hNDŽQW&qx/na訪ʇ|4˘f\2]TU' Bpǟ3~%LSDvJ'߻i4oITuժtG> bϱL?zUkM]҈mܔ6+=yg1GSmWp;۲_"P~NYZ63 %q1MjIAPa$)RJƓ#`4# IW[֫OH0s`7kL˲ s9m9޼yUR`Y!nprtl6kLBUU@prr۫$ieڨ7p3'?UYa]>t9W=;_5OSFCx@n_,{C*P7(a݂yDNe48#,KxC `]1Lqn( 4qqEQYbY'ǧl3޾} qm`30h^!PTEA5tMgZ`6Pv)2 d:e)o._!(Ͳ,!# m..s}{1;`!;h4ME/?2-/M5fs۾w;V~~m.Lj/w?Zkͽڲ!@^ދ=ڻ(w<MR^`e~R@d E' ,k<0-JvQ ,0M0"KsŲTW%Mc%n2NnLS.?!BgQHhZY8%2@RU O1M f4c&52pI0 zmYE5^~jo~ /_Al3^tӉh\*RN%΀DGQ׊kMeL@Y Gnlg@M(;4.];.i+-%{8u=!q0s] tQUT@,nx#vUVg]7wm٬ \]G!qq@Qm YJ*UE#{(*әWGX(dYJ&`<9~b^oȳry9q~!"/8>:e2Z. a%Q#H2VƳoP4͒TƲF %ϛdZ:_tB#kE<{9'pp_kC3r:Cs0]?c0ȳLf ьzjD08;{mhz}jeɒhB&~^kI iGRZ5EQIEQ,;Xo q}}p0 x!!|U FGe$IWo+cR jwIҫalū3MdKЋu{Ek9aPv/Z"D'_I4z-Q=?rQ.go}nyįy{.U}kͪ4 :!`8( ^|:GS CB0M!nޔe)j0Hۛ+&b)YbYpIJN! "#(b]0xsyb[.a]qrte;x912E5eCic&Ŷ]T (Vj@nVs:eDÙw~_${ViN M+/ҵZoɪsCCZ.u\nW"pW Vz2>󮕚;{D҆n `6$pQ)7nUضb1OyGI(z9grttmOeaah5a0N`../ #;v\NWsssi 䊿!KR1Yp;_o}04EcQ;I@V_2?g^l54:r,RG1I>/wuODJpH=:4Q'jb{_6JwezFTtV ʫݻRo{lzD$oo8xD^~zؖY^pu p]O(hE yqss#`Y'l+tà $:BV˔ 6\Ϭ]kuJih/7{ҎWf̯geLvA}/7Rƻy5HoCٙ2չ xۣ^;5V9ɄsIۮzd<真]`;e$ jG ggQ@j*PHpo_e[s,eZK];*nT>fA)Kq_kӄvnej຦TO;'P}М#tQWiKq3 pfq3Up>,/BETeY<{+4-ma[.i{;,)Wbr Rt"OS7ׯGX$Kl4Mv} p=n7BF8n(T;0l˛˗#$oGNI4ޗ5SggI4ፎߞI[vʎuiI_ڤ|H_4U?dmC(u)vůjR=W@g*_3YliQ\6m˫K\CM,E( TȊ˫%Qu!5f0!/_=g021-&)ir!%DQx4W 9=9'b.gK.Ο x(8UZ1a;"mc\dih8aݐl(rylD׋uGk@j/'tx4&ѱF{J-WojQe~5v5b.n5M輁DʩhFXRjℨi1 }u)[VNF~=%di(GCNN/X,\^²mሼ(XX?L`M1o޼8, ˋ۴&z%1=4.i.r$QoP54 $3"gڰZ88'cF1"KO[^&xٙ=rw~{Q#ыGtU:j0 kemn"I*kG66e̵'ϵwj:4=:{h'zٟ^Wi㿴7GGF c6 ͤ)mpL%}$-B(Ez, KO ј,͘\LC._s5=y9tIux[4Sf)yz6  Ev9G9gL&Sgn8=>c~ \JugD3 q@ (N_/zCj1z݈XdwkܵV!o@AmXu.: ;lKkt+@I_D=ﹲ2y)Zhȥm*c؀ɫ9:9!Iʘ4ðn7KfYaa4aFYO,Ixg'稚t|X.oms53;:c8FՂ7b4X!iX2O9??'N2v!M30@(vCKt]W ZƣoY@cIEG%'e#{ }vW]%k`&'{b@]p_Yd%uAQU]Ş˽{)E̦?;ZVfٗw^lkCV뛷Idc29b4bE(/옼H Øpb>GVަUј)~#2TU4L0OxJ7<{O{!eu"@!h`n/ _+&u̿}_t;=y@'nг^'e%\_%{_[#ԯv'{JYX,^_Bg`$0pՒ7mxaXhx49,FVK0Lbh4EJkF e)Q:٬d0sO7-3X.\\<&cxJ2MU hmۄzj`6;p磩:s|tҬwqdWV:&E"5Y]{'0ߍݪE]iEs{Ѷ,-T^M !HEtlDU{8}ſqGh}Tߟd5Ty̹쌹Vf%8[Vx)3$I v;,7?c4"$);g<9²$Y|#2p=$ !iެx10vH$vKA"dmIҔ8 Zb&f2Cx~<DW y)غOޖDW_eI3V}ܵ +}9q?h]+M[m vMz[owr{Xn] {nĝ{_u;۶iE[*Iq{stz|[E3tnnO)rNl6k #G,AAZw߲nB!.^ag[zDut(a|qa&3d+k醉騚%byC$E5qsrrZ_ C6%U{2/x;Rth.K"StxL4 gX4Z;rs`ldnhEY;n`Hw"-X==۫&wRi657$q1st|LĬ7kla21<.FX휳s`W C8@UX~l!as|tʧ ˰XmV %'G_rŋ9?q?b-EJjb&[/F7dS^9)2AwF_[qon;kpϽ Y:1h۱^wbɞ qxs˴ 'hFl|8&R$o_^hhjDQo`Zv8؝y#58yه|~C8dzgـL#_g^ea #f^y# s{}Ld013OخL'3BY,|h2=R%/k}#-7ްZq=]g<'i=Tn,nF;)*/^,{lVD]6gR:kkN=R,}YSm B Nfg$Y̫/899hvx,iF$sy7`&f: XSfެa[.f`8͗?c< x>]]7z)inPUUQz uw?oz _ZGjtu=tAj{z5ʢw K+TtsN`ok!RVɿ3ۍt;OSe]kΝ O{FdYdrxdu ^WT?p-[kU6:)HK# *_0ҕFI=:_z~ܛ=oViu!Pu[{KS+ Bt8"I0'9_$v)xC,ˢM9:>ilV#,s$E 8=;g5rAضh8!6%iȞӝIN^JvSQY42`{۬c3=ɸ0=?͐ôJΞtnEHh; k;e'",MIw WͪAG#xWϱm8gU|7<4jj$iBQHTU/ ,mww/?l_m L+{cm݆E05zK`Y߫C-1[NݳnyF[Q! Lb8G ͊,˱LbNMpl7佧OQ5 "8˲ !%?(2)=~ES3Eűl4Me[$1)Ϟ~o._:!Ɍ_씏-K$0- ]rrr8FU5~ݕ lX#,>kkkK܇8xh!wtFq91/^._i:^;㩾XD+zw1_ϭjy%6Ɓt.kl%|-BQ8;@QH,_;p8b0mOEQH(L 󸹹d ' Q34MU>$|vU0M8NX,n ۱XH G'AHEhbwU]370N@UH⮪DQ E/)׼1Vqﯭ.;ᯎpӲNnڗO:Q掐vJܝ>:#B];Mmc= gJ]Z|EVC[b8/9_wRݭIM58xL'IoxBG c[0`,4pB&iPU) E! ,K)Woij vd2ET FQTk$!S>짤ijؖC\}CgXE^W4@#^1BujtqB]>m4>eGTf+Eյgq˽-Fgw@A_TW}ykhE֗;h Cft&`?jIbߦq Hl%I5E.) 8xLO!۷0(B4$%NbLFK=ðBa^DQT^3Epr|Ƌ_ ]`d<#ވfI3M|M_=pt|L!fq||ZTUӸ ݄e,q1*LV=8u͓0FR!{{o&}`y]ދwTCZ30){ՠik9& Bg{lg v힎{ML7-)DGdHӌ[YYDvi[Rg<e9̉€lF^dyP"5ve7p8qltDP)*q1OKnK%hjP RίEFFG shGI,aysP4 xtB^p^`V/lѤWsy׍ﲳ7w}Ž6dDtAv?,ZɨzcjN?h^);P4Khs] g|`?t?tlhӴ؃c˅S(HX&~^^CiHYe)ݶ("cŋ/$I8=9UQHU)rdoCUt $Ib6~yULחb1'MS?zv Iei1Oll6+%N d^Sa2_,H]i %`lrt2E7 3rqm^r4;*x΀GOq]C7'qרJ>2{^^^Phr4N$fg:ʵ'_i{浕CCZҍwƾ\#6Xך&ZA#{ߋV=`GmNCӋ(Ǫi:Yb[fpuuǣIQ:P , }1ia7`^! xt6lV _c8:YVsf.HȐĶ2ƟU+"g8ǟۮL'ؖiZ\2MaXJdm{Y3Z+'m:u|([I՗M=c]#;̾DVҾhMӴnsc٬mZ=ڳ-sO9WmEnLGhlQW^1N99=f~ t,Kɲrm9ce9#wLe蚁lk4tgqL> c CgX0H7o_0̰5>2!<%M4l@v87$1oDu%mByJt2ij#la޵ݧ펠h7AUG?l523= l]4ZS>ScZE'47=h_nW1@N9:#:n wm:XɓO-ib^ \cZC׉㘛KOpu €f7@yxJVs&c$g4aq,Kqgއ(8L rs}P`6;F rYW(B%3 ""\ñ=bEg8ߋ>=AvҤ^zcpdPё}Gî,jK@V)WLLeyz 햴.+"Zc?{aVG˫纋"@w];)- '?c={rb6p|zJGFE.BH\ͤ \#" *8n"DZ$*y&9::0q],F7ߢ)Y-q\ИN$qz3g堒4{ȎTJ>D5/Pf[Ey H!Lԇu%FUOgG$I۷os#3%BUqlE,PTnevtL&!\,( lr Ϟi,մfz.vXi}ǎ:Ϲ盎Wy]]U1tu$"w 5,t˫\VVtfdiRvR6y#dEx #HΟuَ`GpyQ繼ytU~9.i2p3bG"6\^4TE`t,E7 OfYB(ns~vf)c)qru}{Vs ĶLJEAx2Mgե^˲6Fh?b^e^hw:,Q߻Isu/oƫ=*o5;c]%lz[vdv6Uv pW#!R,,QmG땹<^ q&L6w]U:ԎmO)EŴRafAU\;RTߡr[TUq2W\]e4r4=a<ݮ8>>f0nvh[*%]3o_p||B&9=zcX.50n7(x2v\ߠ&Y\E;TUETmxO-4eU!UdYFj8d%]C%;Ʀ =ɺ]YV:^j>sZKhsψr׏*ڕCC4J!FzC1{w=Ek.vusyUڃ uEX|#66B.2,iU6٭"Gd^8.M+W%I%en `^ EZ/l8&Lge* 0t * ^<t]7QV9:0݄o7Ѣ 5We}rP"zsNQYW:=sHs Bl;! W󥠿3~ܤ7K*Ϋw&}0 b&WW$q@`69bY89ޠf Պh H42 Et$b\2Qrl( ix%k(sG `[2Dqn& q|t<@(kzp<& Pv;ph4>&NbpyEK]D&do׾h=I&A4ǹ;c_Tõ E<x_k:h/_Yr^͟j}NSd={g' MU #n]7s,-]3Ɋ%7o98X!T8$#(rt@QV??"#4͛$q97`8;nnnxicM0B7 4|LBU51AZ/8?;ESKz㸨i8'~ee۲HҬ m4,ɫ4MڐW݃_ĴUw~4()L\U?`]keu촋$TO wv{3Ƚn㤈z_+iLfEϞgSN`\`ZyIJҘU_eTE(`-IA7LWb&"K,4-4MӰ0M4IL&Jox)p~~z]̋44 !% 2QUr" L*M+&1nB&QuBQ`rQw~[lr4WM݀/OUo[G7 ?`]k*vY^_?{ں@!dyȱ]v Xe:?O!ne7k4Cò\./_ѣ' 7_1MU-%I -iaq9(8>94aXW!24mg4ѻzAWz^iEQV^Eڶ]6*!w[V{<(' Gc޼}k۬, ƣ)EQ9 >G4a2M}n78tr)Й&|^s2\It:b/#-O˥t`r7:EzWҼG˯EU [@%I<:CNn.^bywtQ;v DAݷ;4g/,W I4M0DJL,MXn8D +k' qay3OIӘf7ó٭qo/qMfnYa|9`Q |xrOW5<ޟKվBVA!8;X(cuh(V#j jn.n;no;UԿ3NΤӍ=GtnN8I) "Ge:i'O0Mfd6aݎpDQYF'q~e^䘦ضj cONðǟ-EQH:`Cnn!,-R!o.Ϟ49;;Dzm4% vdyγXWqiƯɧFm?![v '}gNi|廼8|;Ru4MCu4hYҟ#sмQ^%D o!?ngL^EYJ$diG_g4esO0@ @YzzrssG}#FSlFUU(3V5Ɍ"ddYv!2&)PQTnp]BЉ]_6K'udҐ4әÆ^ByNO{z!mحj[|{?C[EIۿ-7&jowQe5+| NN ZG.\W8v,A;!eO~@2dY**n^c9v}`<,rsu}j91pvzAČc8l $/rn/ߠj*Q1y{Gdbuv{643QUQYXvX6s{{a1I1OH)%͖xm<~w EccZsw%hu{MnHuGoGl?CC c#u&ILj#voE>{jC7%mj 4KPEUX.4Ec0r{{*t)^_uet1+SۍS^Lv<.G-KR{1f#6)͵oBO_C}_H!BZ{Y (zx%8E+mt&Xw=?Ӊ;w.0̰ܿvYv!K3NNQU(;MmI1k,$NOϙ/n˃(4 Ŷ$"(`0$I"1B74$sGE;q EQBP C7BضEEkv5шB!M ۶InϾ7lv>AuB ްCщ3ju,)k0㡶 ɾl`6<}|?3s_ۭBGz{܎$l'v:qDcCˬngv~ŶK0 xeo Ppo_3 dJؖIYƵr#fxGnK7px56Ķ^a22pEiyGCRfBh8e[ yC EsfGGhBlA*{S۞|%7owCdYieo/_7aٮɳ˶AJv]px5 lATO~ЯiiEq/y54?Dɣ뺁eqGEEU_MEQTTM)W3,Q} j*uJLT^hJ*ZgZ^Q:mT ~4)Wrwb:;&r9Zޫɋղ!"P5 \__zfD>&juVQU,Dz- `j046 s $ }TUE7Lƣ ͒8 PU( o+D(2># 0txd< (VG@(w9d/'u@ JwW^:+ָԗhe;)94NLĂx(ڒ4O!a0ѴL6 BP@E_B*hF&DI(`0RMfTM)kq E蚎_mqZbj*R!l-P<@J.U[/}E`蚁e:%7@T,Xm̦S0I)%ih)EQ",W±-FﶘH$eE٬,Z[,(j m7o^i1lMf$qR?Iʋ&i1y.g#.ϫ_:˲Pc\k:f?@>lO.^AE58M7U:+ډvVxQOX;ubj3Zǁ+Ce|ZL؋ 5yN^ENQ|-.хi*,O˱ (Kv`U߰ZxEDdiF`ЍnYB,4 |"4nnLӴ )`Xn+4BuL2-,!"{n7hހ,KL:۶lo?~vnWvt;-U֔z*ϡ{5u;PmmwZoDywZvSE!)oF i:.r0 zv&McTUŶ,"vD51ߠ*:aow F#\CQ'KC ˲Y @%"|ynyB86B%BJ1RQDlinhy/h&V7D%6& VǙ͛^^,Ȳh&)Y6am\ôGl;,20M0BU5$1Y&Bvf:"Q)F!%#R"M$Ij* 4 Brh2M9,F$q`8$VRN-qZ6ON0 -?P?ojVi]/F-TU+ČoΊ_=TnUikRl;Ϸߩ}AzlȢ(ylBr:*,sn MI(,?P_?Zgn+pfGx'stKܝWnuf Ye6ɇs8"@< ]7HL;V5%I%,J9>o߾ôEXWp8q\TR`&np(2FAT #9q(Ep{{lv5YV Ð$˴n%|"c{XmV?@?8d߹֋vW`;C6vtQe6}6KϡSY(Z'լ eY^k_&R77fE! B6mf 1_ܰXΑ`6=B( ;;8 /Pc $A2k >Q݋[ԀΤ(jsCv.;R"r/v O=TEô,(.j$IdYoDdYxZ)YYy²L4΀dx4uv["g^Z/5899:F (BTFQa@j ˲<0A׭@O8d~-wj`g 3ҍ˶%'ژn^wV.\{0[Y~fUSg{Xx<ݰEY'/ulm Yp{si&">9o B!Co9ikLB(sg$iJdIeyp0b6jQD WUe%nCʜ4K6J tvvJ,s\CQU\/x2^hF9x?_7:n-g7GuD8ilt泶TVw/7ʊx7 WP~WHE^^zͣGzRJ8EŪbB( #noQ<?)֗by) c,-3\e]AQ I˲~[ jN{OO _}In ;W]ֻNfdy" v1t( Ķ"CSuLGDqDdXpe*:O~! rêAm=[p9>I4b_CqClͿ ȫWfW9aA"躁,$YEQAY,XCQ ؿqEw%M5MЮޠ^Q\5M\Y%P nn.m8>>4-9]?ŝ_cda"FSTMGQ\hd2- `!cI(ضiM$NBQu]L$ i?3nuXee҂]C'.ߍjݭjw%oRa;(XMA7zNJo۬vw3a+:2&"6[6@VIHò]8d~{MU.]7rb<q1L?A*ݠma7v+dmy}q~ME ic&VѠii9ir|t8ɏU?" 9}%Obc;b !T$q]$a.^ e(5䈷oe,Ws9]"K؎GM1GOPu^ AGdYi[sTMmBLgg'S7׿p|qCf\?)Uzu?T+?q_Q "Xi/3Z]͕&;%+8sg{j2ש9r/T1K;^ǿ?)/za-ic%Xj4-,gY:az ?jD3\,p~{D Jֶ]6%ôl_(6($9@|$q )E0 ,RQ]x5MgzL'SƓ#8d<`62/L'3!1YS( yXYiZ?_W|@{K{{?n[IE!J_EP| *Q䲗>Xuܷ*do՚O#|ވzA$I! [8)m2j~ $Jί7P^!M0<'|1b0kaTUe 0M0`(dsrt HMQd$ r ya.QeﶤYya6ޡ]!(K,N€pEzXM'BK@Ke4^^PhZ'& x4|u) W~(Ry~BptB8k(C,vqnFJP`H$ql6s?Nl4IgmHTEe0mIv;SNNNLfJj v #jI'yJu?j<~U4wi{@Sǁ+ODu>ڛ͋YjM[`$ [ن`qa=I@(y)JwPT(8C 4@U5l&I֛5`[.阛kTrr|Jx | ~ M+(^c]I3@17W,Oz_hLN hfUhP~N'@tf:Oߩ$l -Dv*x]ξsw4XId^Ȼ~^LPP?{`p{ eY"d! ڿ򯓦)a裩z%C$"w̎躆t8 qeYdݐ1eqLW~3ޠ~\6%P4O?M1 86iRoKV(U>/( P)YTki#E( TxP*`0$/2 æ(ׅ?ɣGWMMުꮢp":EUEEt+V-DĂEg!Pt]LsĴh†M̟@w?M- Tð4e6;"R0B4nnn(daZQq( PVs&?gڗ y9>>Ƕ! <ϱ,0ˋEAGF:߂M׹_8'gDQJDkeYD\-BB{ӴBC^4H) 'DaaXryKĿ?_'C+`=uWk:L\? ֿdžŎA @2gC-BH @Q 7@9P_Ze2"Ds7fvqnhe9 o_`8!te,7Uxވhr ?#659irttjq`&+*Ye%J"la23Lâ(䟛ktM%I|#TUc>&R|hX)C74I:eQ`YY :sł;mh+Aug?]ƀ6G|SDQy}&eN\sWD"Ӽ"eSʢ%UPE_$0trX.(xy^01NPߖuɼ!io0@ AWwu l!9YqttLDdIkضc;+ KO!Cܽقe4Qdtq ׏U(j^ŃKU췋޹ RiΒg0 lAUU/Q۶!F;TEA4L&3B?Dt FܲYopL$Yț7{gd[v>g6y3_J*[*ɖ[*dEa4 BA#fL4gʘ 0dB&@`a5^}s`ܛUC.ʪ|y^߻kwkp|IQG)4C[XoנLgnHD8NZ/G [,_Z@YZhUCA<G=%ѸSq>"l6kA$V$6 7HByQmCR~/j?Ð?yã2Ww#H](TnF"{%WNR۸@羧έOn(4:\4]zE-P#$iq{{ Aq̿mb{GҼ I\ܻcZ`ΗZW, qe4CUXop~~O%=[ @6(  a2!$šc4c:=- PY6iY^ ڦA(c@1Amx ^z+?Ɛ?ՅrC{ XR&-IDATW]>ւݭAv/iluUEMK;7gopW_4䧝{q!6^:6IȲ ? ڻBuKDQz.H^=/xw!=ad !nnoI >@F\Deo}r5ZRqX&$A(1ZjK4 UU!MR@@]7ƨMNKmIO}@#KL3PKx%}!}cy ΦR~/jO0(׎w?:ޙ[=mFmP7|Nv]aU 4z ؿꢿKnͷqư i!sdY:@187o@XAvHJTU2kxWpO_EG8;,s$i~مFe{(.x˷Woh01_\C "JnAu]l6f_~ g9F-mw:|۪?x4AUp~v}YDȳ<5(vCH WWR~/j~]܇`1]#S@zR698XMQ!莼RvSdK㲍ӵ˿8G1~4M |KY Qcdi))BSv#gXD(Cp}TeO3lw[uvVB#جGPN|7}zþW/q6S9 4j5 Dv-,-K `T? #%KJaXb V@" sa 5d(1N_g??Cru=uւܴ.e} {u:ePd4s,Z 7jPoţ_M4N eKTmi ^zP8;!Msl,+u,:XXx_GSz0Hbuܸm$i8N?l1A uY ' gX,hb:C(,3}!~}ıJܻn1N yE1vQG eY#/8ab2J\^ÇOq8PrKM}N(i{ݴDJ:jlln6rbu\xY5^c4Jm@xtpjm jIPB=l6klku(@m@ \_{sL3Kܻw zFH-!"|"QV?tx۷ Y#Fh{X.nX"FnI%4jFxI ab^`ɓhZbq#DbD+g~(?}7 uym6֋w2 Q2;AZ; {|#tΘ5v-\]_m*li(Ƙh Iڶ,è77א2PFcDIv8OA*nUZBgخWX,o av%ZLgL DV% ""4u !w;lV8pvv4Q#~>a~gşbȟ..n_ cck+xf|jWۢ eo@@}Rdy(0*FxuHXHRXoXȳqbRAZ P4M "R7_ | LfQWBȋ3u+f3uk:"ᬳ"a8Imqs{ bŭ4h˵]MXPiזQf5@ IR-Hb-l1B%8;ab^#b|$ME1b4˰lP0DSWT0jU#IbLo0M EQ`^M" A b~onq>֛5Q@rTT r=G/xx./?C?xUgvR0}87w>)Y{kt>-MgV+}I'$ Dm\ܻ-?z Yfj$N"-/?GQ DQ x9Qhv{YZBl:bqUǣ ڶb1vh%.f3x(ѣ3B(%d" # Ha^"~@]5BoQ7#1ږ,!ea"riWl\NADHb٭#UK$2r5G]OJ1ڦAQErpq~>AԈ%BU(1* !BLi0MݬQV45!NR:8(0Ѵ5->x4-8mjLSW/ 4c~gɏ0?$)#!8b; !l@O,ٷO߲8 y(zWW5EO" #\lj/v]VCDDD8/h.JX.HQ(Ba4`b_*k|齯`c rs8q"#M+Lg qpc:=[-@halv~p@1-Jc4PW65x4|1G?P?7C?x6QnjKQ䞹?.(G^~NkM ?EP#DQ$I3F(%ʲDHmNG!LeixܻB=KR Lj77&h 0*ƨBkZYqs{xKl7ku"m496-PB +ս_6H BT*vF  DQ((B+g~(/~ZpԚomn njpF7QO1{㒜Jm@_-.Pl-kmFiMFǒhpu:H; gsVKzcdY )#q _`4lv(mqC^c(ƈy.KdE#cD+7o^ ;yo^a<D(nWX.x]yj["aA0. $Ir_ d7Y0 V%$۷xc _"DQIcЩhTnvkݐWKc{L>y?dw̽!P%~S@IvUA"d 1NpuuPDFD]VP7DW5,MU[Y2<6],qq~fCYkvrd<=O?EQZ-Q%4D ",'|wy-@|GsV?P//~ERVaO*g1ɬ31j:HӲjIK`v:Ht֞fjj<|sն-6sl+m!BF#@Ө/_@,>nCYc_]o{rDnr˨Pgg8CurBm[,WsQlS0eY~bjtHqU#2g~(WC?C}j=v (Ƚi5SO2:oL^:g~g~TZ4AyvA=onu1'="*wF 0Zhn DϳkYjts-ѰQ=xҸXFJ7<OkT}ZU[f~g~g!Kע[תT${nR|WgRs?O1_/"Yl+_%=!cE}]Gu< 8Q*Mǚ?H~54őGU-5OGvm amnjt;ma延 73?3?_*'MVD6 :/L^y/{Ra%LgSCƼIU]Z8K \0 zxxPC8rj= 򞋮GgрoiGdDnb\Es`Go #}x֭#NE bG,ސ5ek*+LjM];a~g~gAK_#&uU/H0MȢX;¥LRπkYfamF- ?H~i=?){ZHN8y1]G eTa %'J/ʼn2^eI^?H~6-$u[f~g~g!jIUxSJ85 xjі\3U'"H=ꉲ҉)%t LZK8t>y̶VϓTYE eU8j8(m! 3?3??dAU+>"Av=vG-v lӁt.S_ۋ:6mpI?n>p|;FvN6 ;$6c~g~gfnZ*eycdwU<@X0!>%Lg/7֣g~g~1kqBυi ܺIt*+ Ex>tԿ0?3?3_SyPS z מgS3\;l`N/)9t3C\^5K[5W׮gXyτR9#\gimN)\#J_t8 YxѬ "<<56zyx:]M=":0mzuPC^Zq;b8KV>֕,87 DhM3g~g~t֞Nu;fOpaR6NZ m^Xk,r:Gmϰ8g֭xҶibB?'xV1aE |]Crȫoj잻oZɏAa~g~gAwT &6}jc~g~gaKQǛ {|Q/R-6pu^hcCy=Ð (DLj?,PsU@M(Oc*KM}bZx=` klpתY&'ʌLYg~g~Hzɧn1kwWڊ0u dMG6]@mk> g~g~Nh x?>xN;<ӠkaՅ6U+-lSPaO#+X=cfIǵ`ĢW7"%kB`&$Dol)sl  _g~g~=ɘ-|]:p{QuY#l$*<.Q>vmPg~g~;W8Ms{G8cycm⪎ |a ۓG^ VtHQ3?3?_9#iIQQz}MUUV]^]H/nuǒx`]93?3?_tw5D^vE\pgX@~Tmj.5 g-7f~g~gAKگ𽧰U "X U] Aݑox ;&c6dΛշ{GjF?<~ ؍NzgJ3Rj;“i7:ճnТvZ W1H =5'wŇ3Eg~g~MfI#>{ȅ@]Zpuq\ݍ{&GpѦ] v+z}1/!<%4Re/<1dqޔTzxo _9)hF#wHр1:ңa C㗧 ړPL4Q㙭 Sy#z 3V[4m`A;Sdg~g~ĉ/NANHG9jsUS`s_:̑\eT<ߧStҍ3?3? Zmgڱn=ϥ9ܨit< };Z f،M+wT(?8~ ҳAu=4W򤜪 w]QoC5蘊\3?3?34˛Q/GwpO{ؑ=}yr EtJ#og~g~&>ITř/˻wݮQ>Hެe~g~g!K[p"Y1= /e?hNg4L?4~ {TxPU^Yc'wy|%;<uP92~~8lQ3Y)C67 +N"nhЮO6c ;^&@\GNյ4xd~g~gAKO_W!Ԛ+Ҷ7R v{Tqwyg>ՠTkiŒ|RV,[VAT߀o[üwA = K];ߔӆ?|-3?3?_-ҵ/)eQOcŅ׶67*c8xEԯ7_3kt bR0?3?3%` ' ZSt%Y,Yݍ7]q߈<#siU8BZ?g~g~: i;|&A7DZ?W)\::HӲ솫gz QGuE@zxbeIENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/movible.png000066400000000000000000000073671411575327000227670ustar00rootroot00000000000000PNG  IHDR@@iqIDATxڝ[n=]"u#˲MˑIe!<&O ? _O'b+8ZDNqgCwWFȝ˩S=M;;>[&vw0,x^X (u>ήƪͺ3 /K8| :>%޸vt }RWSk $fQƘ ԩO~(:5@Q\z+t)1?d< O_?&igoVY'ʂ-hNl>p;_V1)N04"o_} O#?K.#}K't9|q)4-J9szpIS='y9v8 Pxj q~3n17*氳/>zd @œCpiPfQgcȤ6'}y rHǏ㻗/ݯ17(&qCF?zNYϐG&Ɂg?]|'pIW{wp9x<;HkĄ,=A(LG}TטU|mw]ݝ=|)RgK*$*A 1--MdXRC4!W"GJzTX_5aF8`%Wb&ն5]*J=1oTQzޫ%w( RYiŽfqqҲiYcJC7ᅾW%/¤ A08CeQW4S]χX.Bie*yᮙa`}k8!|ocN|%Xyq5;&\d}X86v`\-ϵ)"G3 C EPmկjq+GE(} 2D?Jf& ȓq rLUUx+یVQ؃G!j uЌŠ˪@0葞syjNaH{fLAq5':2@^pb n*a;դ PzTR] Yo\XNߥkOoXehͰ_o9LhgĈPu+<̍Ԕ\7d⽔f"6l*14ak%P7(fk}x16''5; =\=ՊǡJ5}LQ Y:pfҀN}٬ P!A$HQ2L{RG‹H_)Qptl4VUMgB!Òa)L̶B!@y2ZO.!踖|0u͢Ҍ[uk N5X7}v,;+oauuݒZIu2RXԿGrZ3S\"~@n=4 Q;sܙъ-c_֎'' ߆ ڿ1@39Y?yoQ+HgϞO/O+O7)Vo֛.E}=}ZgzTAk.=c`O.H~]-,//oƁMhRڬR L:Ƈ prcNYa+>uW/uhv`4iZEƣQutG "Uɉ %N@Ur&1+ztAXewVbb4^AWxLC~1 :;2r2yqף5RMgvg7d=01$aWсYH'՛z^Ӷr GOL]6IyǣA?Jm'3g{//S:_>کl2W+loMgU ֋!s);HCHwTd+X0X͋ LN[8q%2( 0c<aROh\te߱ DgYA 2@c,yUc[ЉқDdek+&]Ϙ+a"kN5- f4Z ȗ(O[Po_ùs_m*Ĺ hgĵBQL&D @Y0h I1E1:{fc\IMA} $Ѐ鮌t=z[FaDI"5<L^ 6xgwɋQ=00]z5{Px@xLv0&p-rZ)u=Six';jj ^CF\BK-qp.D鬢2pzP1nԬ Ku5>=#ޔ`_ْZފ|u. Yha5:9cA:_ׅb;c d(DJ)ȐZ&"u`C2Trɶ3W/;27Ɓ~5z׮{޻DohP`/ĉU Y@(f!ICɥbvD΃1u>Ě"ćA&{ÐM k5u|\W<"x&53EU咍(LO䔬6cVD /N~aS"HadhdO 'Ip,2Z^(7q)>UW5e9ϊQJjN  ~ g sF}Y{,B"+Zw՛vP mݽ8r×:Ӆ@/p5^KIMR33gm2&C)SʎS@X^aba$N#+$\Nִz$@Ye Y\1(}FC߁[)>uIB S?D@iq 4-}ιGdsigY8_Ҩi˵o)# tT7eD -l`]QJP'w%Mg&߅5z>S 9Z)DGN痔c8$Ldz^q@C!,Ey*oO~FmD) 㞪+RA [W^;6v]`@agZˤՁ@d2R^M'EgԉָoκP+ړ{NQ)Y&#l_iC|Icgqֻٕԙó`WZGT24I{炰ba(PHAvq@Xl(l"B<A$m擐#@wΝ;+>Tmqt $uB,+νٕj3d*Z)g$RA&^ fl aP*pk&sxŎc a|wׯeP4EݢJee܍d~Wq8k^|M3`۷퐶Z ò{܂XJ,r_8# y?ӌBp%Dxw ~H-G)wxO^ݮBn! j`ܺy ]&ͭ W?c_ Wǚ=;x;x Xhyh]{GGz/%SMh\Y4}J '^]sl, xA/";7qÃC%lnm҅ Xp O_஽_G(/Gp%ܹs˓1pxthh>vvqxp o]_? vwx)vvZөT:6$)ś.Xsixɓ|9Y0zdΞ+pEݝ-q70pxpyquw>+IENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/obstaculo-l.png000066400000000000000000000031411411575327000235400ustar00rootroot00000000000000PNG  IHDR@@PLTES76S77T78T77S88S87T87]AA]BB]AB\AB]BA\AAY<;WQGx<ǑݡozHf"qd{[Q  @t~0-m+`VqHg㙼Eh|ٸuV2dyDpz7]H_,vuHdzͷ=q4X3AgrֹVqwA׽#+xǑM29c^?$9yp 6Z 89,1._o!N[oo!1Ck:`xhz0eB?ё)J%;ar 34m|1<O$ni'f{vZ 8y"A~ho&yINrX4plG199&+pTN&d4)>^M=v0Y:A98:y:xpʣr%-yٜaiWVjˏx1TWV?ᰑXp Ur1GKZ\]'˚LC1?/Gv+Wt=3LF?ȧp#\[ j*ƼI n\~06V,WRj )gƗVU[7۷[T{dL~х5RzhWwI,7=Ae|]}ׇy9uyUVw3A9 \rw]sd 14&{I}K?9Z r4sVY s\ Sۛ?˜Ck:`  =9:Z56ZC?ّ%J%'ѡZtaAVh >&s0/O$ sӃ2ooIa^N>_ifn/1/G,^o6?~a񘼮p99y!.Ҩp2) 'Ijqy9 >(7G'OO@{TDڡ:/G6+r|\nGpY) b2Y$<$3hn#'"H*JB1/GN~l [MjˑԽ݉B =VB_v0/E/vjqujolg`؏uQ`~ ,O@X˟1`y>D}S?~ ,O@X<Q`y>D}S?~ ,O@X<Q`y>D}˿A`y>D}˟1`y>D}[t7IENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/obstaculo-r.png000066400000000000000000000031331411575327000235470ustar00rootroot00000000000000PNG  IHDR@@PLTES76S77T78T77S88S87T87]AA]BB]AB\AB]BA\AAY<<$A"r˹B\P\YM˜ǑP Ą^0uqf Vku|"_6[Wnlnn%SNIL~х5RzhWw<$M&I[|{o~iaG.59d{f8('aku!x,/Oz{ݮ?B xd/!3uC2Wa0ⴅA8:&)CVIlVh 8YF+ļ"?T"<, 2CFη1FFvb7[`074_ifn/IǑ$E 7fGo>|8, ;aB\. GQdRNFh8s\''ON<*W"bǑiVy\n˭V.k<BJ%Y%iU*Ϡk3HE"T$JY9y kcQσvshSyIO;ѝ(;уhn(d}S=y&q۩Ʊڢׁþnx ?,9?8pcTq$=D}q>@9QxO@^S?ʙD}r>@9QP@(g~ 3?ʙD}r>@9QP@(g~ 3?ʙD}r>8QP@(g~ /D}r?W{d IENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/obstaculo.png000066400000000000000000000030471411575327000233140ustar00rootroot00000000000000PNG  IHDR@@PLTES76S77T78T77S88S87T87]AA]BB]AB\AB]BA\AAY<sN9w5(uz+ݩo zʴ*U]|k8Vwiz/~(!<vO ~2&/]bÜ[.%4-iڥD2]it(8݊\֮\LF~gY]Dׯ"9 JXU!_,Vҡq ԋa\~06VުTӡZxσ_$fsy֭T8-l6{U.^A=t㫷9fw]?qp* k;X웃Ѱ}7x[2z 1:B6oldAY"ʵ&⬇֏a8Yq+{إoǫ8BNxnbΎ.0WQ'a5<>}6J5 /5xl.벴+''JrRi+'}8=/RjjjT^`l9w!Fh:J OÑ˫>t^:P'%֡V 8H=0>Xn8l}R;Kxq׭'G"^d?#Gd>@r >$0x} ,Q`9AX>rD} ,Q`9AX>rD} ,Q`9AX>rD} ,Q`9AX>r_DTIENDB`gambas-3.16.3/app/examples/Games/GNUBoxWorld/piso.png000066400000000000000000000234761411575327000223030ustar00rootroot00000000000000PNG  IHDR@@iq'IDATxEYfoz{5ﴇH;t;IMd'Q >E}$K9#XUjkvqTg}]/R MS3MARVuUssse9IM]Zo q\yBfCk8E4xBY $<_ihW_l[^XI Eu=~0M#<{ZIyQA80/g?~f{4N/G(`iDiB0N# x~~$"v 0qJ1Q57wh0qCO]VQD SVwwLBTEfzھ)%'MRް{/@i0R`*^xIQ$qL t]Ԋe!3h_~C^MSH(XK~fٰha XPRq 00ϠeiΗ[iԼy0AƮ']hx(x|@xA@F5J)iFk0, (ipqyx\(=u(?|:+(+^ܽ"=4CU Ӷ s) e,3x^)y w=qymƸ @uLrm Zk޽q0H$(W$JkN#P9ZkiUYCUCt@[Ha^( aga=H臞ۛ;|x4Yv+$%B²1ӞyI;I(nxP8B G[gƱq<;փi}-]sx~WLD~Ɉ%$kuMl[@P781_+)Z+޾Ǹ7[eZ|/pzV5q,s(a`*mZ׵iJQf4unwK6xa躞@?9Lfo0kfe^eUqB+vwCYxOm4x$W@L m[L6p>YW4Yvyo跘慶Y,Jdٙ814@MEnv\͖ibBך>Q a3#RJ,GIk臁8J)˂< #Hiqƞ,Qʶ5KN3jzږ8^z(y0hGJLv?ul7&/+"„f b!dGgno܀W^ϻ8_0<{R*>`Be;<ϣn{~@U,,di& C0x8a&g'q蚖I5WEhm 8AzeØ,<˸dgVt}cE\ڶmaHԌÀR4,|,Q숢ayy.՚UYo|c >2s0s}㒮VU' #q-dZF(R^?؏84 @lvhp>J{>ZѺ,Jeb2GI;Q75ӑ0J^Ewz ~aA]{|8)둦 BH8pxfG2!lv]ЏWy>d/ll xW R43B\# cR ʫX+z8MH!nx~c4OHuݠ~롕bZA 0ayB* tsy]RI? C\ץ0x?VQPh{\t:Z@H1O{Ӵ5oAJIQVzc |a:J'*8k8CqX q]$Ÿ.F^|x@+ k !E zvRJhq B׷0#a]OU][e8Zӷ=3#mXy\d<==⸚kI uVG?N>?(eUg?-0{v}V0y(rڦaaGUץ{޽{ VV)Ms>ﹽJ֪@(E*鼷x1RA׏ }a c2$iljR^8$)%qӂ1:d|g4mE\]8.F;˼̜ڮe#g bGf'imhʂa(x[$5yqA`%x*Y zP .kRQa4MM|vwkGrir& c@4-Yjq<ڶaYfeBl~a9eYx|~ M:("3i!Nex<7<˗tUaML4u4V  hr:s|x)+v7čÈ?"+UF E{ߡf'vyp<ϘUf{$PʾASVE#zLLQd~Sڱcwݛu qlQZ-N=}o3]q{{gwӐB~_cjW+[_?˭Vfq?iJ޼fGwpbFODaīWҏ޿#I JK+nvw& Jj<֤i jц,ai=U+ğ|ok!낢躎i/yz~CFkVmiێjE?e Ϸ/Bgg":#MSrK\Ca$]<|Ə|>R uS3 Rʎx4MM?4Hk+pF;< (\ox'qqlpɎHL4H8]|zK۶pxul\ eJj;O^DIJt] 1؉q aHU д5cpϺg;KEQQ8 ]+Ev JH;\'o0 J> /g?xsb'qxx4II w-˂-:JlPcp>zVq ޾Ç8b'a^F6z~<<øan Ø G(%|Na 1N#B(v8Mq]0 B ,033=aJik;\ZoجLx`<ڮ_IJ\9"y3 /J4 Ukt>¼+$ެI 1\innP?:m+y6Qp\(eEcqF+KL5Ay_7ai*2L*nXچ099`=Dk$1=B@RZ9<0Jqqiqz)ZKI cs~O8G,bx'[H!qͻQ|\q?>anw @״H6q=sŌq<,#A`Қq儒iBՈIx[|%YY1&kڦq\77/$Ino)34y֗t]yiױ'6ʪ1A=za! cafr9"`N#,j8NDl[yuBJ76>;$+1XТ)P6Y?#UYе=ZU]&I,Lr=8;X&d{}?#$^~@2,;Y[/^ If™,bqyN,ӌ2iB]kM"CI Xnwr&"\ǥm[ >i1wlB.qBCgv% 퐕g6x^B *EHeP|_iE(JI_+4ަ@]G4$I%;swsǸϜ(k[nol|zXg2[dsKּ|jRǑa쉢ㄔ t7 qb ˆa)ʌ4Yx< 9hc Q5%m]?&1e}G^Yk>ӑa'e{~Zm<xs%,OgƩ#+vȳ/_r)zf8}5QlsAmp<J1^|J],D@FkXц^tB*jA8#r91-q!}G1q (fcY# XQZk"'cMeyebFvh|?$¼@F+kIL'6]><6: IWk#2dYWOfJI<1.#(y)\ϐ +y~r-1ey6xN@Ue|W$qJGLȲXmu| u]p]#uU!pۗTfwʋ |4vğ2/3ZXg~A?t @]UAh4mJ% y^~h0<<|O'l[4\.' uSJiÇwBGjͻ7J:|'|`aan*"gC*I۵y{H,{rH, c1.E3 }\0Q3NhAQW:L!IR'עwHPFs8I5˼qqv{CArbneq.4^OeO~`Z<'l: k5 )CDHI][y>FbQ1/3M\՗aP1).^@6l[ n%c=, ^o5.)s8iڊ0QRqɎhmOцam_l8k4,\~W/ Xvu] A@YWv. d5*XG0F'x]%R6`QU%UY2A3R {;cWtMYv;xm񵎰`@C7EǤ}y!s}^*% chmPBZrF4a |Ͽ@(MYdaZ%q~@гm֫yv"+x_dٙ<ĹJ\QRm[+a3a %;ӏcȩ4Y8Y41Ot}*]\ e/I58Dq̛8mIQF0{i+/䒝Y0Iryx4[K; c\hTj-BE1uiꚮp\7o@,V\ #˼:>uY姏Nmiϲ̤$Y!5K|<2i-4 UUJ׬VFߧW/^Z*YI{Q4ma&O~k!-p3hXq0=uU8<KuMUXfXzia SM۲̋FuHS+ODQ6aR941/ }7 @Hȳ m^]ւ]k]!JꓕyyA)%pwslwPh7*PƠ'R%c2!Mװ`-/>!x }e((g,qqx*煮麎GGaDD$qr8iH!iڊo8Jq=gYo's퟼VZJX="8cǁL8OCOq۷iJnm=gɲqB2q@u`U:LHM_/I-׶-#ӀJXTvF<'-6kKu{$kn^2M3uap8he?MR{'(%Vt]2L@Y h%XH!慢8N~nj'~-i0/#Q2MZb:!8,LUPw*ނц)5yQV9u]e)8]|~A;Py6g6NV41'< u@^\:8Q%`aF׹iyI\ }7ӑh%˲!QЍÛy,۷Q\u}fǽcMNuyx|<|駸G_XoyNԔeI̳a麞aR5 xDuq<~G8W.qO(LkQr]0Ni~u./>KvAu]߽ bnWH}ÅW*y -eURG6 "V{NQ0#RK9E.1x4G8xSWHQvjjR^u+yXiCUY"%]^12ß$eg0? <#LȷE73(/Rexq E;Vw/tjV^Tq-5<JZrF+=n-0_k-4v}OLӣ]Crt-5qp8QEh~@(aa$inoɲ3 ,%eҦGR`3fCYUt 5z>̷o^xEE~b r]}7o'1/]dg|g È/eUvuF]33UQ7Te,v눢igU Ss o y^.'c_(XjJV-]ۢg[`q}mɲHӔyZfF3#Z7pIENDB`gambas-3.16.3/app/examples/Games/GameOfLife/000077500000000000000000000000001411575327000204335ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/GameOfLife/.debug000066400000000000000000000000761411575327000215250ustar00rootroot00000000000000[Breakpoints] Count=0 [Watches] Count=0 [YWindows] Count=0 gambas-3.16.3/app/examples/Games/GameOfLife/.directory000066400000000000000000000000411411575327000224330ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/GameOfLife/.icon.png000066400000000000000000000066561411575327000221640ustar00rootroot00000000000000PNG  IHDR@@iq uIDATxiluwpwqERHQ+eYcWYa8 m- F[AEи5Eײk;pF8lYL(&z\̛73(Z,*ޛ̜=s\X2e,-b#/E'r,U$xC 7[k&vo[4g8F,j{ͼ#7[B.vPɠ W21l/3qW˃lŮ+A`- 2'?#$,y`Ȭ_iZh`eP7[)q=ӗS k:#t|`w^:L[ eԹd@? qxHy]J 33Fܾ|`hB©_j{\DSaͲdroFg~Lr<{;iu ԛL>vgӝ% p`l h=Oa!LgRO|]/RH[3.@/kRH[+%JX[|'ZIe/4{tO4[!!vW@1%T%翐g =fmw60{wM!@ HJhOv×H6 & U(Y о-R?q=<itup4j;H=R :7 @3Sqt.sm/tb1XDeC EKϨزG]B [ «+z-m;L_AtIi=+׿OPGG,hJZ a_u??yp˪PT,~ ӈj%YQsh!lՂ`cCˏ"^oq(]S͟=*sIry;SBΞ" M ([KiyWRAhz~Qֲ>#MHnb뗾F2>@$z('vC XhmR[ZRR qa|zi;65=^2|zx$I# :6 Kg]@OK*[ aƔ@.6ef1+I{oQ2O4DEGU>r$7ŘOWt1GG!:A!E˜&Ũ0HGyǿ 2Ě- !,7t%3ڔEM`ԡ1@ !-=Rѯ$Rʩ' b |޵Nac1uw096ʄ둝V!E;=*BVMrGWl(d*tkCIAF*l7>=M+Mcza.~F#ɄDB ^y8Xxc1<+¡X_i YL'YkClp #)lfÏ]ꐅ1>/RqצtW  ^<PUFZJ‹1@]L%F8~|MǝY"c j᥷J}{̚|8lXu +葷(?EnJ]&$_ٱR ޝSHqGOCDEh R!X1]G8R(4D"N49HT0Y9Ebho=Izno 4ӳ+Bꍄ -ѫV~Ľ{.4scAart^bv9'z - v89 R (alNYB 8`(=a^ olaRR'FBCjH:d/\CDsH.c!D2 $&Vh"eH/`$8B…嬴GZӟ [% &MP<Μ<ĆMw~*G! c +:w)QEy块t>#si3TJVQ11'_@]b1"$\TRk;Fmם2 lPb˶O`_$@a^%AHԩ1'TJFsޱ_uaL<3j*1S͊RHu}';87R`$e4>1Rϫ渀Lf6Pl޴ڝxǥ!H >>A iY4t^}ۓ#t6/~B{/KZVfRTY.P 텙7'J3W yid16(5;m]? H`?BZq{Lu9UPvӒTq75U5E!8exDMe6IOًgX"L^=]]YCd^s;9wRhkDDӈk!<9Aj0Sn ROCG?^OV$>A2X_uI$.Tvn5l*=A[H  x(ɪKdi)L8LoGjI.RDn6B(ř+(A%s_*~ _e[F:1ABY'!E$gNŝ[RSQEq< N;;=Ń#IiM[grQYBN)t@AV:JN㕮.By% `n憐P*15;w&ɒ;PT(~7PPSSr1WM$Be}edQ-`N"^2}blF2+g,$}o{ꍷQyI)H8g%cY6֎6rOK+x]˷a9zR.u*߼ aS91@*dáPO VN $.B2Vp}lsA@QNRu[BH13$8d}栥HD@Oj#IS;m" PBaBf] 6| e _:vb:A8%XQsӳFZ0($#U% ܜO| F&?fm@%PdQ.3gZn 1C`jƣdUʘia`*x(Be,c:~cQڤIENDB`gambas-3.16.3/app/examples/Games/GameOfLife/.lang/000077500000000000000000000000001411575327000214325ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/GameOfLife/.lang/ca.po000066400000000000000000000051731411575327000223630ustar00rootroot00000000000000msgid "" 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!" gambas-3.16.3/app/examples/Games/GameOfLife/.lang/cs.po000066400000000000000000000050371411575327000224040ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/GameOfLife/.lang/de.po000066400000000000000000000047601411575327000223710ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/GameOfLife/.lang/ru.po000066400000000000000000000120541411575327000224220ustar00rootroot00000000000000# 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 "Горизонт. симметрия" gambas-3.16.3/app/examples/Games/GameOfLife/.project000066400000000000000000000006521411575327000221050ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/GameOfLife/.src/000077500000000000000000000000001411575327000213005ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/GameOfLife/.src/CGameField.class000066400000000000000000000117251411575327000242550ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/GameOfLife/.src/FMain.class000066400000000000000000000035111411575327000233210ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/GameOfLife/.src/FMain.form000066400000000000000000000072361411575327000231670ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/GameOfLife/glob2-icon-48x48.png000066400000000000000000000064761411575327000237060ustar00rootroot00000000000000PNG  IHDR00W IDATh՚{pe~?~\I D \\Zp"];ݭ궵cnglj^w]m]RPD H@ $9!9ɹ_[xN p3}~Nmnڅ^,_|zȹZnPl=޾lУHKnyOZ5X.rs_/[? 3Eu@JOa\~}K_6x8τVX1Y3E,85Pdu0-*@+ΝtÇ? 8aO} p9CbNKf}{G>BeG~ju*RF#H[3{oZ-6n9s4R7ԗ-Ɉ&;uW~ZׯDz[Wtv 4d/࿾tý{.ApIJ4EJiĔk׬YӼiӦ7yޞm76jϔeI3ж`z=K+h)+!52W@ܨ\5@ .}[CV[+5 Zѐ4Jbo_(7ӧƓmi7P Gaܼ2JͬgF!P2MQ\A*f|lC,YGe%Y/ؼד"D;(2`!-;Cm sx~6lQ ~)8*?ttSU3 MfNgYrӽo[hT5aqfTPe,CYڠ8 h㟧OR]p ũ,$ҐHA*A Cb2 I<ɇtVΕɹ5k 2 DvC .0d! t >K2eH$ SGRʃ-#G,|!eO1w}yc7 %窾%J!yv"P>%W]Qt]&h.xg!˖irw c(tr܈Ck_ }DzE,%s'wbI{רΧP'eMUgvq-4vnuoշJõ L‰QE79Фa HnƀSa H7- ^UA <:`:mۘ0<&`\a֭ݫW^pD DLDDJ=r9}dU[3kBwD~p;j KxB!H:]L{7>ifNP59~99X61s@4#E2F>VJZ#9`K>L OX#9 Rݐs6uƨTnl~.2dzSri1@̐DSUs-пҧ[;K9>c(RLCmr[?ƶ-Ο!\Kz a!0!<^P4Q.Ų!G*mƪ)4_ UXx!Abs])`e!烹CL O8#T{b0\5Ui)P5l 6beH&I`(F B;/UgsJA#灓?B #LIVs᷏!am ;أv,X#DlD-&W ,_}ç2Vt̞)MQτ =L4m7~a-[P2Zؓ::_ E5x\]/FfFt ¦sڨvT"}BKW?_7>{) . ?y_uHWӘWNszֿ voۃ}M9؃fSH!"שM>I|e͝?~iƌ;v,[ 1VON=bP u<jEK.Ѯm3Ԗ1@9^nɼtΝ=b._u-!PqnK1ȋ 9, cqK%ZVmXIZTr(+ĩ>HOvR_\qsY2VY,"ieTo[̓ӑFhj|p94YzNxﰬuj_~hRt#Z#7W uwvnAze{H#5!8gJjVBl6.j#qG; Pb|XMMM~<-(NR:ȋ~4 !H M@TЫ/lmmm-ʄJ̎'j 0QT; 7*i ^9Cocxx߮Fe7eB[7nW8q,rQgJBDжwKXn|1ذ!uQU ֹM̠)J0/PBdƱXQxBƉ%L}ycNj&>՝(_h J۶Nm!յDXXa\t[gϞ}b}&̅n=Qu%R*7zs E{6a6G^K=z%(~<ڹP=@"LFrKu_?{Zәy{O5T)7ȴ`1}!dɒ8SÄ$a[a!4SokkU̜_(mݺu7y5g5%K?>y侎=3UG{,IENDB`gambas-3.16.3/app/examples/Games/Invaders/000077500000000000000000000000001411575327000202505ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Invaders/.directory000066400000000000000000000000411411575327000222500ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/Invaders/.icon.png000066400000000000000000000060241411575327000217660ustar00rootroot00000000000000PNG  IHDR@@iq IDATx{l}?;K/J$8dˊ(QZ$q4}@a)P ,( ۢMW:VⴱbWJ]E%FD!J[|#'EZY~o~0iLcӘ[h_@׌Uw҉x̥@Y'7 7z_pg3,m7wk 1,0 04wN4#⁰QSR AX3fauQR#_Kƌ5Jߏ LδD9Fkf$c HbF+d|+?kwxwCL+tYKXRt^?" F T6nQVz2qW$/O*eFpw< )SfW/+D<HsuڍwO0y(uİ9BU6ύsVjЖO{2hZ4OEkvPP2 kčhqn#tyo&Jf$]*_f*7rt7y?+$\-1"d}K<[S+2qӄϦ4 }c#ms;Nuת.^zu_f_XLl)YӠKr'@;F)Ag#:xuXK(֮enm}7A"$:[YXu۶D2~"mZJ}b!p}ŜG![Pj3}= e>8^׸*6\7?V[ӿƨg!F;S^ m+h%h%(-T*'|$ ~~c[Б|.^P/6'[%jls tf5]bg"xʨؖ.cGx@V2(+H?kE+Eeᕷ?HɊM̿B(YHϻo1kǓ"qP@H$bD"J!gIt ST+g(ۗ)_{-XEtf HtIϵX_Ђq ^@uMy MHD(XM !Bs/ٳu4 ׭'CaRPذ(JR9e:vZO8d*/Jt)ioעO?/."q(6t_t<0Maܼ$5>"/Q9@I(G(m;wGX;nV {HR J>p8wܫZ^-*IxF9۶b㺇ih8ljSGhh WRe'2߭w_ % xf7ۯ'*@<, (IEBE!~W $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 gambas-3.16.3/app/examples/Games/Invaders/.src/Enemy.class000066400000000000000000000066531411575327000232330ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Invaders/.src/MMain.module000066400000000000000000000066421411575327000233350ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Invaders/.src/Missile.class000066400000000000000000000030301411575327000235450ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Invaders/.src/Missiles.class000066400000000000000000000025171411575327000237410ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Invaders/invaders.png000066400000000000000000000001751411575327000225740ustar00rootroot00000000000000PNG  IHDR g PLTE}2x/IDATc` `AF԰cRQ2D#gIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/000077500000000000000000000000001411575327000207205ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/MineSweeper/.directory000066400000000000000000000000411411575327000227200ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/MineSweeper/.hidden/000077500000000000000000000000001411575327000222315ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/MineSweeper/.hidden/screenshots/000077500000000000000000000000001411575327000245715ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/MineSweeper/.hidden/screenshots/2014-12-14.png000066400000000000000000001357711411575327000263450ustar00rootroot00000000000000PNG  IHDR JIDATxy|\Wyoh_lٲ/J8vbg7Y !4!o)Ҵ,/pStJ@j oC-[JBp'vx,֮fh|g\hf.{yιyys/}5=+ " `VȿWHwVeYK/]t ľ}XP^U7299E  TFGG,t"B T%J& Psѳ> ֭[˺F@@@@BS<,7y;_̞ͷn=̟tgX13?R#?gz>>/?^lNx0S u'`"d 션(2~ 9'8RH9?EBwLup=oaކ..v9x?g''x?&?w{<ڸ`Gud~!h;ܷflubyh>,Ǧb .q|ջo?8~{<;Tv% _r[i>Kvao{e܈⥹zCG)ZCQs`W7+?|AOsXp8nlXZ_KUx&gzKm!׍|:䘺>9gp]W~pL@VOg ;s6 s6`_mQ2јS zNx#H6m>\n6 O3^LL͓`Lku.X"p2-L;$=l(z|=y<8L/\9!wFcW#۾ij OUU(*ދO~{.xǷKw7rx٭k\ =[?Ռ'{G~5#}*a=UMX5&(q_^uX:V!zÈZ|ӛWRPUx;Kws)UaûoyEK[+O_S oc5W\E~dtiWM/ȥo vu%~IM5c?`]7׾'[}6$|1Mɠknᒆ:.͓Vu$`r譵wpI A{wc!Q䇟c>OI Yjw6FQG{?b% \w{+qNnO0fӅҿ!_x\MR~_di"{kg*Hn.{Sm3&м>|˝.nsop#P|W#cΝ)0"'fؿ_- 0عspvNF/ aЅN@ @(0#!٩om_T@UB(0P`U N;w\t ^VBUUmΧI4|{)ǀYKczy2/_%n4rby.gfzˑ|)H\ʪH(9W6h[F䡘g*Rށgz,;_SrUFP;oDEF i33^ѻVuf,e#W|/ױB6J{p-|i( iYgWv:B#|+|È\UG7*RUJɴ`=ƟK2PYu>3z/r+-BSjsQ\\rR# ::Wfߣ?YYzy+T&z T ]1cZLJQjFPP=bgx>ERR/_ ݟ}m.e\yu\Wd4 u. )fv91\LD7xS:U_ZlYs.+W*&M,\{_sS2ϕ3Xlڊ-h1o8ԴzUS,W+X1UU>]<+a=E0W]̋0XrSZ Sjh.beOYK졷l%ULyI_Hnz upRB~SNŜ䲼s #`ՕyS`F 28|3d.%gw^Yz'*2_Xiǝ\/1.%f^ꫯ+WȪUx;ɁrSHPC{j2?咝G= Ps)Q7EX{&EMb_|zi˻,=ؿbU(MzWF[VzS^:zy/EW:=}d緐w0y<i1\*؁ijjcll_׬[7M=z4g:O#5yP/(|=\s +:)U{FBc^jy14%mF=?3ٲɔYlc%+|bm!SL! )R\CY(K=l۶/}K,YBWW۷o^ . ~ /kr7szۿwq===|ӟ?~;\r 'Ӆ/s7s饗rww@ \O^ % =++ey*Q Mb^D,T:)-Ylr#>dqXP[($gsO>rY3:2W,du~ˣRBc Le~p=_bE:?0/"{^cժU|fӦFGGyٹs'_xWy'??qYo}[y׻yg^;B1/SiBXw1C\(ShXiYba4%^ۻ7JC2,\;tk[-ֺko (k\gBS-B œX("~n{+WRJCO>$nIضmyËo}[$5kpd^/O'fUUiii|'=09rUJ*FcD3P8)CszKYqW _#rӟrζSf\yȥ :"J 7WXr\n7\qlٲ'pz!^{5V+@<+՚Ob 2LMMqq.Y]WR%PLT+/߅Y^:Jd$׋M/eQU)ȥ<,TS.K(L lU^CW~-|y#>3PJ#3TsV`7|;o;#mnx;5\O?f__̊tR,Ys^Ey|(BaB:"w_&w?Y8z2ȖEdK:8#_ Ѡ YZv-[Oe[\zJIVR+\_!e<2RRw}162\T.kL(ˉ㳟,/CQΞ=Woi&&&&X~=6azFf o  UU_?Ot!F#zAZ{JkKo(P<{1=L޹ Rlz含^y.ѨIGf^B:'(be]w>WnoҨ\ P}rm[wkve*5kIijjka׮]3)mQȲ-> lg])br]S̨Y0_.?bF!J`6j+(k=K}/ x棢v*"+w1|g[s7+,dU%RYґ+ze:tJTgP;Svy˾F(X(4w}M19&9r=е\&NCV@m>ʱB/;VJ T\$`v/^} RND>ɟW(R]\zs=VL-lRV)2k.uQJ/ڠObҖK1 Urs顐SzOAͥҗU O)r}J,o=gD/R񖒯_ZSeQLQr-y/asQh(*#+=sy /=\@Rl%\X,/Qi6_1C)/b_NsA)z [1Z\zQMr)}Ŕugr*~Ix1V!;U\U5OK#@>% XyB*W^^Pb_JF̷P#,eg鬡g撎b۫PNP` (L:ћ*ѓz g.2Ӛo&\m)N3q0yrHV*QRQP`&Jkiȧ < YaRbyRrze"-Ś5b[kbJ1Û2/45(W TBUQZLg*v0)=饫\zJ9R\+Q\*\.RጨӅ ثBU*K.Ƚ֭1{sͣ׻&\:GUX\,g!Ocꭡʥ )=L|VŘKVc.gb\-YU3sO1CZ7sXTP}uu#KUZ< l¨FT}~2k.+b-4R03."- ,4J=W]бBvsd*`<12PUH{,_ "/؊-\PHi*̍^^r*w# @I(ꚋBSrIx"D)hI·oɗ/\47Ԁfn$\^J8N JBs (|ǡ;Hʄ#Q~g8:ҋXӽU]x=._ @ L`^P\ܨM$;5Ȯ}#ذŴ;щ=*R,bDp8n{:|y $" .sAs1&xg֦4Gu6n}OΫ̪ (}bbb%EkJ4% bTL`XZX,v;N3zqݸ\Ex M˽|? 䗅w~ Yӽ% G($bY$GDc1PUUXb&¢Q` +Ǒe9mJYInG,ˬ?YIZ8N<PhUP$6ҶND:)XՆf#LLǰN$|Hu>TNvMXJI% exxi<mmm-(ӉݮggFskR|Xp8L(bxx"uuui4j]ȁb@*R F\MP(X>kK$ierXf +Wdll>Xl]]]ՉaECUU&ljA!~:N[ M^hoEQP% 6luxW.rJgw1D "G}ۛirs`j*xA&''Q%mm~vyr)Lk H+nioosYAUUx r-t PRe8z(2"Y,]'!yc x㵸m0e@ @__twwr\,^J!K+SSSA&''l(B,#bxUᩒ$6z>}˕" PY$ cDpP - XFRuOyM +ڟ" eKI򫯣9_ĩA:˺9s"e,3s4MMM\2myez™+F0*Z)Pl6+V_gbbSNl2G@Fdx<5Up܈v&́Xcj0fG֎!k̢hsc$akojmH'O!aK+6oѽ ۽EdZ,bƍH/2Nm}RVh /[ ξ}[8JEH$Y^zə#?YWaڸ`е@q LluGX ԆUQs ,ŤșÇrZH92ba[ .8:8{ĵWߴG{:X0*Ofhhn~?D"1+$T7g"Rq=kl~B$V\(w" rHk1]#]`rr#tu C39t ?46hVRqޘd5kpFqBSu33- w|ڽ ^agG=P_|J%X\Z X&r:(o"`ڵ\t]ED/u,144u/ !p---x^Xe\qQKf[8ujO檫-t%dY&&255bɴꀶhC"$Xa3TzPJ+VP/KZ%͋) g 9yo_Db+.%P^8PÝQ`X~8~&u^ [1w,w9SOqF.҂N$v9{,HVXG h7i F-e35>~֭-C E4&0> rd҅c:BKPY qM1㸡f8h濔CeR30I5'Т,-2) *R ~}HGOni%f%j[+thaR}ffW&W` 蠳30FX(ȲѣGyWK*h4ʒ%Kɓ#b8p>›t0ŕzO_-/`h0=9 64;,c] ` O{"+YJ,clRS1SJj$˚UT9vGIVr |rjMٯO#:Q֬BYòj HduqpK(XH Pq6==χ7_ =e+\X6o1ϖecǎ1<7&3C:0M.$)Rb򌥦hlFJ? OFH('H7$|eKaj,PhCNVG &(8ɡQ,Kq^jtSU 蠾P55!sSSSڣJ8DBSXmv"ipKk6O&g%@'4 (DI>?5>1{"3H$eR" $R{H"%gE5%YPVT 65V!D H$Q}XdC=x|Nt )0YBQtB/|%u<3R/sʩ)ܜ=#R=tnX8<ʿnSr\<<峐PU0VT֨]:,D 1<ҊܟԮI)Of(dK gX2ͻ%2>g3H"'I%1Q2zIEQAU(*eK:[-DfX=*R cccȲLss󬹯jB$ȑ#zK [*fdYfxxxVڵNJN޽g TJ<'`eԎ:@X0`zpFa3x<=Vh-J)d9C) nFA(26&4dYR1 *F+!]EfT 9qh1Fxp8fuƫ0vuKo_,ˌrqǹë[)P%.lhhp2kf4{|\P c>tv;q/*D` h$ 4a jlVM'6JYYEi^3se) )98ߺJ$2drfP!%ssarfaɲ gz6fAZZU5q:\.v{Uݜ+B4errӉ*DŽD"oq\{8yȲtFbl+3ʊ=ݰm9ZUXnN[zKbȹ$S'؄SAZ M;AJ 3f;pP<7bK)*Ig^7,&SEIάE;ʟiuBHny%8nn7Nk!λbdb2r/䁘},˜9s^^/]]]Nj}Vݎ$Iqb|J ǎʪUo2_A0O? Lk)x9LyG̎IDQb1(-IzP/XJop8h!1 ,H$|Xֲ7BL}SNqElٲZ|#/})%zW]a8^ϳj k}FF;\#=G,aѢoP<)o´|%>SgL/D2q#uLNK)2IN"%SCYLt⚱V'hNAKqyq) UՅƼ+p8,h2&2wfbbkV܇G GeB?яxE<EDH&HP\TOA ,&&&x5͛+1?5U*%<n7dht@6?LLL UTI^ 8+WyxdqJ ?я 穄r2dY FYj "S6ժI EG^*0NJ2JRԌ*iD--)B5r  *Md2rz,ӱlsrpE0 BȲ8'd#Gj*޷-t*掫!DI&bX qVՅJNT@q9.^ף)4e0ÁBpO\ӮJ:2jz5ť)3-Pa{JiB8_YSdy/v«t1%x\UTᗿe/\}ո\.w͋<]EQ$.\n#pmp7;~8.R lll0g?ktSO^V+uf4Pzr] wm1X LMMTǣ # #'bHVFpDbXqPuZ[WH].M $ݮk2+iKKmւ(Tdy)a~RZy|J)-<*%܄zN'n ׫9ṇ硢(x~,_|^SD"(E! CcMMMx<zWaCz<St:`ddE]"T\A頽=Ҽ^ozQ@QD29y$gß韦#;:sDe75K[n}f;r 011QHs飯h1$O׬01-3 㝘2DD@niBmlЬ,UYִskFY 3Ç9:Rۺ`UT-L]Ekq\كp`_Wٳg_~9Ї^ͻL&ey,LNN(J:j@I!CaA{LU`Ylj'p:tvvr^:tyJԘ$IXn.+l6[zآ(O0<]tQSCġC<n{FȨ~s2frJ<gx/VȲآ9o8ۈ0f$?MÁW~)X jBH,SWzk R\$2-=|ڜEQ 61m+ Wcե7͝ώɓ'y衇l<wک4B*d1:::Ҋb6ruSVexoFjYE8ldll͛7s~'{J/YIcxxxZȲ\v/oxךھ]US8?jnjا_dљ"362D,4Dl8 qX--,WJmj`k cg`~b%&8]Hn/X`j/5t8I_&YZX,$|n&x Wcz,ǍbO|p8>.y+Ԛ2ˊH`JuübYݞrߝN .4RÃ5gpx$Ir*'ry衇||(9•W^y׿u>jl/ l $O'aXtK`ANʌf$`vIH$$ZdR&Q_O erYb93 bt`q84Aj 11IВ,rY]V+^@Xz|)g}~>Oλ\]Y($t:j%I"]қjll;md+ߠED"($4I3sPwءԹi*ovYwX/~XRX([nc7npK/ٳ|+tvv''sN`|áYWn׆`5.,ux<^NfDL`D8}W}w۶mq7:wuOsw_ۿoģeǨkoo=RvcqOD"/Q(XMO|ROcH&PmIZ$ J?Tiy)1PJg*|ji8=nfWpvo~n7+"yW`2ER` XF/$ ݎfIrD9Km}EIm8n7JlV999O<vfK+7Sxyf+ǃ}."Fs`Y㍍ L >YC"s,2 zL$X,r1tc?~lO?,9CO8)&ɅNJYx9p-"$bQ&Gp6S߈fNR#v s: BvM DW$o}TV4KJYdŠ,ǡs(:e\q[;,7[nnWPh)U3oʨ:=nPٶDQ"Hz}#K9g|3I|\.|A>C|ZZZ r-e,(`;:@<'0>H+ ۓ/BX,v3~~M{.@&~+͗mTxymAtX?kLa#xO]N;a\w8x<~hlhw,^DM[ˍLlދCV*;r==[ye[_zקSO")SSS9ufavlBG].r{2)eKu&j҉#r/NϹҔ'al6[RF(=VZŪUXr%k֬GA$/￿io444l+I_xES W_ _^{dY,rbl?vHpp:m*m6NχF5ԵX՗3u5x5c yIlefAs <̾GQ!G[+*^/v'T yZ/tr v.;v;3%K066F  .}/vSBռb7ص :;7|ka&״ߗ_=kOw ZDBpyFBۗcwرm 1ӉєXc#M3bVl!x ݼ/cg&.'UN?"ygXSD8J޹S[W=5Nnfvf*{(7@} ]|@2   r:PԎb7+jF;Á+!du8^ԟucx'8aH Eso ]q`+0tRP/D˅$IiԂRMM,=S@;qM`QΚ0=d2I<GUUNqSדL~Pk45w}~ki~׹R~$;no[x{{~_ld@$bzb5A۱ypq8yYZcZJrᜉl|^/f8}f惯v4XI֢˲Ƭ̀Y,%+zzn_1 TUv,Ƴl){ڄH()Á?ϝތP[ ! EZ >%B$-tM4Jccc:@eq啿 /|o<[=|+ZӬ[o+^Pem _e#@)s;wv|t436tZ<"m8\\RdigB0QIe`2N"Ʊ 9:5V%qa%P,͆$X!,!$YM,|%X/\eC{{;SSSM|6 U̺klCǰ?ڲ$皰l~ߙJSb{kV X3:vZZJ1x{᪫)5Oo.M9_̞6L߂ ,YfLblVH(Hkqx ,`6 Pzע"FD"$ b8IeD@<$e2JP--ʽ( %H8j842s`DZ? ';7/)V VB)s`S>W8>T)xT X (Hh4ʚ5k*(poxxwrNﺞ8|O_׬OW^}K,;h4rT$ڗa5뫂|\ԝ1˕j 60H ;(\XbPQeV,C4AkP&>S8.\1a*N'C!{},\AHT D Cu+ò,DQ$jU5SOছ^)^G{Av-|cw\ۿ ? L&@QӇQ0||!2c,:NdY&HhX,<3ٱ=6KPUmLQUdUAV x>X L`ł(0łn5XkkidUoJw uIB $ښhO`Y>| ^Ǜޤ> =[o<{~ ゚!721# aXH$8KpyJFF"l-Yq3+K2I:6k>Kxi YQ-о ͦMhd*eFָdYFem]łdy6]rե^yzN`V $D.>/`X,n/۩`4d^xa5 % c:p7̨!XY SYz[aBEhIhjj#(f+P:sEJRT -og1$I$IEW$Ib[9~yY.i͊+&F 'H .\n>?bn[ގaI)ł礮v$IJF@s)krWT$Gm6n"]oQQbjlD4doH.3R`VO[[de>*)}P(yJJKQBgΜ.=t(zՉ5k.f͚az/ط7A~km<ǏQ6mn`ŊM"p16fsmj6cO0,D6UUٽ{7~Á֍X)%E/DdbbuֱtRѸغ66E!~L&f]M7] "PG]'Vu90,m( 6000@,cŊ519}4H 6"!,KZ1ܵYH&L"*as52\ܱ L$^/˖-#055cQQpzKku8s zq 0$9 ϯϸ ,.,Dm6 twwS__aLrY/֥>R=L  LMM155E"yO)Ʌxd"ICC ކt$ 18Cp\b  {3Rdp8L&=yO8Lei ׳b Z[[יH&LM* 2zܾ:1a ,J{{;N tuu׍6yF)=w|>>EQ!D|s!38 qF/_NCCBBH$ r9QNo=NTۧ)\. q L{Rd Z bR\ 8{,8.Rۅ% `0(cgp{MOb֕)XV^/$IFGGӎ;xrpP__O$!Z59+U1\$q8477сb,  M3Zp(0͆EDX0K9l8.]磿\.K, 9kcbkƽ̙3D"$Inp8އ+SqɲL<ghhӧOFdٲe466g% P>ScL } d׏b6آ)XJ1,R믿N[[]]]Rɲ-om6:::P%BRJ K$I`ttFSS+WvH} % ` QJ2korp,jT`,( vϗvlLOO8y$~~?>/:M(IdQX,4cI}}=^f~?.+=jHb2Y@8DAcC8nSjÇ3SøaJR\nwZB!FGGӻ;ijj̚T$WLeXL B!ǙdzzziiiRkPR@% >DQn7ixp\[j06,b*F AFGG t:ill5k֤R-KZqn墻3ìXڱ1 Oyb1&25܇WG"S߈sfC(*08g@=fp8p\i†"xD",8bVSEan|>,vaŕ?xZX4O~^UU #ۏ_$qC2tc7iÇbWM f;tìV+dÁ,9(כdY& DY6EzF9C.+m喺6;='טM [ Νoz5n ᇿ|κ+hmjX$EU|Է <5A}J\:v>&`z԰bKgQEܜVRXM_o[l”bVVBa+*_?W[d-(ښ|Z.^+t' zÙװz[pgD{\*L)8S1e*g7FSb.cQlx=.֯]EKU+ E" f;*Z/*.8\uZI$ڨՊE8KZ)LLE>Q꼞E&E>3̻ζdY^$-(V+6͊ uj%p{ؓI\3s T=%$P۰H }QWEJO%xny7D+J<=F!P`U B T%J& P L@@@@*!@UB(0P`U B T%J& P L@@@@*!@UB(0P`U B T%J& P L@@@@*!@UB(0P`U r FFF:ycH07 M]we(avj|f\hmm-j5$3, 3/ רfg3>ˣ+'ڛʁ! L!QBt Hv-}fGWO7s񕃚P`v]xOYNpR$D/v.V۸QYO!AM@>ˣRMfz{;}ނ|FWbavrP f;?Äx' u4}syN>YS#ՠNQxK r~Yka|/fof+(0XgFz\cjݖ\mY~v/+sm-&]>92-A%!*gvyTDc~v^N{{ ٵ R WbavrP8Xt/W8hޡ˗LhXE(5 ǹ{NQ رI::ʮ]]H{m63|&,0yޱnU$a@͝kPBMsW.Jfp{%geh >s]_>Wj˅Apa׿/T213<*-ˣM =f|/fof+5 c ӏ2%Gپv6W>`ʉs>ˣ-uNh >s]_>WjB 2%G̊wWKa2^ΘFht.!+_g.>1h.rPNO#$ ŧR|0|N+5a ]& =%͗L}邤0|C+5kݽa~22?yybc}.߹5%s>ˣݷCw{Ѣl(}{Dh >s]_>Wj 3?;tFfvqygvyTBg}|rRJw퍖3|&,0;3,ϥW9gvyTB۶A$-tQ+gt}1{0;_9 VL@⡢(_/ڒ3hof+(Ce4??w=ngt.Z3ho+(ڃ=#Ec=f(]we3q0{{[0DE, csLcjfgs}j4_9ȩTX*\PF:?+5=v) NJHj7*+)2DPΰyY48ʕmmso 'O6A8Lk.JM+gt}1{{3;_9 6;LyY_Ng p?eyFK_Ӊu<Ț⹏~חa>z)BB^ȣ]\|F7󕃚]WbfvrPX.p{} OנJݑ`w@^X&zgv >s]_Wj+fS:=>^Ά9KUSm66Ș+Ε>﫯 ~7rd N+gt}1{{3;_9 VLp }z;n{O2#M*#tGu#|sojH1Jˣ]\|F7󕃚P`ƝEGl_z;+^LxIĹ{s/u+c`/~AD /p?ES~zL]\|F7󕃚P`.SrϬxzeAD&nE i^ոϜ?Ǚx ?Q!D3WbfvrPNO#$ ŧRrAYʕr0|/foof+5ay $CϻwuE%E_:9~koxr {Q .(ɭ7 =Q!D3WbfvrPL '#/󓑗g߾.6w[S21y^^|_*O|w64 MNw&'I\=;A߾}Vz @ Us]`F#|G93|/foof+5aoLӟό:|P 2GXs7˧?_>w>FO$oHsg}|rRJwu+!rgv >s]_Wj 9)I#6;ǡ>'cկ& mޠǷmD"Bw!|``l.PiLC3<._g.>׿Zko&)KWt~lWX7}^_[p _3Z\|Ԅ5"S& 6nTVSd$a %cőw6_.Фɓv;*Qj.?+'[y3Ԅss&ăތkoF𕃚Bt|I]j~xz|Y[q{{372Dzqhj_RHl>1'X};38bǎ'+vu?Q%QN.?+'ڛqrP^njU$439WMyV*j#;}-$m]+q46 8pLNBC|vC[Dp0L$],.jt.?+'ڛ1(rPX.p{} Oנv=ֻu=i]HvWkp XYy4󵝊Qg|D{+/}F󕃚0)zl[D\eh:fnc ߑT khep^y&&`Gxo +ʬ<}Ҩ3Z\|>AM(bzg[]nq3&?\.}]dۦM4sV^b:q<{|@2/wv\S֛Ka˙;"op01`m[64h-'&jp,VT~SXF| ' 陱y $CϻwuE!֘8cVZ:;iqzy3_Z03hoo !Vv/Hi{ddvbc}.߹5%sl#}d I;Ԥ ol|~ފ}Vz @ =;ܣEٸQfn+!rgt-_g.>K|&,0p&pC*aPf?ڻH6'F^Kw0hgfǴ/]Jȣ]~FWOg4_9 L/dĢ$DZ=^Űz<۶A$-tJȣ]~FWOg4_Yy3 ؀*R>K&ncQitMs3Z\| M|l(U׿S03ho+Y"M~c 0XHg_0I>!'|񕃚3w59/=omjG]j> >/&XIǓ' vr{K=#3l kni<"S& 6nTVT4$Z3US}6KQ_AM(0=a>z)B¼ZyY~ӛ39r{Vdٹ$!Ⳏ ~.X~IgtlQ3]<6g崷ذa]fvͼġ|[ > V+l //E~x}:??}jݖ\mY~v/+sm-䷚Qk|F׿&j>#K9 L/IOO;#5pFX68/Ͼ>m-[#G`l Ax l u|I]j~xzo5ɣR>j9}FԗrP^@Ie9`-$m]+q46j;:pͺAhvk1Dp0L$tU$43>WZoȣT>j5}F՗rPجBvzw2-X[$v;hºjw]&о>mcnbk&½]>Cm]>g|k/&,ܰv&Am ѡmOo&nŠ29n'KS8PbyZ|FwϨRjB)1eωC{f0>0^XJ3=8qBl4 gMC{g[]6tħ|^| ^}UmlN!@c#8Cw(2ȇN?ʔe_QV}b/@ !27ġ\o=ǡKtthۓ_g]& =%-X~AgtlQ3Cn}{Vo(}{Dec%[H'4szRde0 v?y̎-}]lH~.Z3Uc}6S]_AMX`zTA+<3䤔>iIC[J$#&Kd"|fWb9_ˣX>j-}FחrP^0m S=^@sM_GL_ˣX>j-}FחrP {?J<5gvy+Fחr =#w1Ν;> ccc [tP>!tΝ;Nh]^_|(0ey^|>!|`*.Z3{}1;+51fT>ˣ^_Wŷw6U5 M66m/\P"rP Lsxǣ^JoonE5B<ȓ:t>K|aq}O}7Y ˤZX#GjNΞ[L$߲j\<6g崷ذa]fv 5;Qk|/jݖ\mY~v/+sm-[y>{^nNavu@?Bnϟ>ɷԄJ'ĎOfVv*k3]Wҥ6En';w=aZFw,b)ߑ> k~KO۞d`x5۷slfo9 L/x 24$8.ZD}F>ꁄ6쓋|>ϗ|[\IںVhlvˣ*]_2?88S-<_=ֻu=A2YZv;hꫵuuB6,v{;d-5aUF]WžH/OhgCr-<_=~h/7ݢ)Axm_6mW;x]w7aE˷Ԅ+ HA5J3|j .-=[ly>9qh// r5 U!DN[4 gMC-o9 V gvy_ˡ :(SrKog[}ZSڏ>/y56Bg'Hk-FqB%o[jB}ȯֆ\j74'˔3+^i*{ls2&'6mI烞vݼ㚲g4\[="op01`i774h'&jp,VT"rPهjmȥ*Q_LHwqJ|{^Yuv եY`y3_˷Ԭorh;ܣ>߸QfHU]Wr/Hi{ddvbc}-lt~]6>V_zhj҆7o>?-EL-5a3 <㓓R%Y|fGUL&g<%3O%s}6:G{ֵĈ@Lfo9 L/mD Y|fGUD|ͷ=ֻ-+oFP|fG񙽾{۽%kvGQYwI\[׿rPs`oqՠ5>׿r zB'O6A8V=Qk|f/f@(0W|zn>}Rz{;ן-5|fG񙽾X,7^sli0t;IDAToa0vu,,lv>ˣ^_^ʁ_酶 cǓttٿ]oL|fG񙽾a tBs 8 k&>ˣ^_^ʁ_}{Z^^_^ʁ_}Z^_^ʁP` SC$5>׿r z>o0Zk<_9 LU=ه\>#ʃ_9N>mItW^_^ʁ_}C8<a 5g塇Z;p=4q푪3>9)iasUgvy_9z>۶A$-tgU]gbW|UWLgvy_YiyG;c;w},:5{lPQmKZ塹tΝ;BA! ̨-eY|d>g_0 >Cȷ<>hr _ՠnf3G#rݻ<}fG5׌|f|UWhfz{;}ޒzH [aa& >ˣkF>C(0' GB!m!guwEf@Uf#GjNΞx.j.E̾P-n>ؘݻbÆavYYإ8ro3p4X?  ..!u& 3zrzzB$aoe׮942Dzqhj_RHl>1'X};38NQM5#!,0' ^Re9-$m]+q46FzLNBC|vC[Dp0L$-}fG׬|f3ı] IҲadDSVW_Z_  7`g=Yۋ.&o6<~h/7ݢ)Ax,za>MuwVY1f3B _զpJ8n9 㚅ªU'Nh-3g`&PIX31CB>ʋ.cr2m&N<}>zxiemHqb, 1T>'pNcRh^T,[򫮂={4 O[Р-n:±ؼNO:qh/Wm{Ǭ:;iq,ؼ֯GIb*f]8 LU=^v>+= ܁v eol#}d I:Ԥ 'n|~Z*>5;!,0' ^x`3>>9)ia}|G{ֵĈlNav|B/@mD ݩ{XVRTՅHavXt H-nb(X0^gvy]f3<̤GyD;fܹs'ralll P[/n.n477uNڹsg`A`3$1`*B\ȯ(?s]~f3<|+(02T-|F=g9jl׾|\.{0! $ɓv;UWIί(?sTM=#3l nM//X.EH} k~KOg`x5۷s~oB! L/@ 24$8*Lg.>E-$m]+q46j;n;p옶@Cۭmގ3]5az+\|fQW|b]eLj##jw]Ko^ҎBC73sfϯ(?sG]-=~h/7ݢ)Axm_6mW;x]w7aE!߅CE, ]Μ+\|f!U|~?'Afayj6bFش`(T&;9L,qfpg.>A/js^ ~?$bDnмXt C.f7͞_Q~3 {ls2&'6mI烞vnkӆ, !߅p_LRO_y|f}p8Řz[X~Ugi`PWG8]ΉC.f7͞_Q~3{{^Yuv եY`y3_!߅üY`Yy!7sO7lJJ0͔_Q~3{u$FX}/㉦&m8qR]  Zy''1-J***Lg.>.ߣ{hZdsb^B y mD"9=|Vj3{f=^ >ˣ&,W"(`{۽%+py;upΝd˅;v,t*P{lTQ+F!仸\uz:iΝX`B7jM C3$1`*B\ȯ+bv>|f|fTnf3G#rݻ<}FZ >k98q@> O"> i,"7 llioa0vu,+ry͉C{ڷB8}Vؿ^_  u?~|Wj I>(>-ڲ/v)_WZVIM 'KE0ozzB$aoe׮942Dzq-/}il٢}9cc OfvدU"Tb.Z3{s ]j#_v|ҹs׳x&^e{ǂR[0_e9-$m]+q46j;:p-AvkDp0L$-}V˯nHhz+'Ke`Tb]eVޑ02lZ]Wn^Ҏ A_\-p{|LC{a:8m=1Y ^/<i/nŠ29fpʯ\{"}?E uM'"Xʄ.es^_0k ViC`8Q8s6m" dA>XkWk|fTC}.3|j .-=e` --)_W_l~H$s$ww 5}հa˯"|LQ/e`!c{cE19i 'Ojt>@}=@>BohN~)9gVmT|sɯ|L}p8Řz[X~UgtisŹ`PWG8Uä˯>^ YO#$ ה>_w9qǐC{j;f]? N{0ǏCWfAtth_V~gp5l]& =%ו>ɯ[ؾ}Vz @ e;ܣf߸Qf.&12KT/&m8lRUǺ˯6{}{ߗ $4=de~22;uw{D} -T0hgfǴ*I]{hZdsb^Fws{fz|pC?O T >Q_*y mD"9=XVRT˅H_%.5>^"w>bh2v*{?J<5UzRa5>@^k5y;upΝd˅;v,t* [/n]_QC՗梮I;w4 0jM (0gHb`U,U_W/h_90Dj3z &[ѯ}\|{O/Ղ|kTĉfz{;}ުB線zH [Ú[}v;l_~ |ZKOYNpR$D/v.V۸QY1'>0k~'_#7@hZoys裗A(-[lQf竄۱[M|G{_dMod&Zyg+/x' u4}syI|M'Np˃:y kz>Qή___-ȷY`cc~v^N{{ ٵkf^aSUb᧙[M|'k giZa~fkW\x!\|1( C(ֱyK_U5OvnF,Nj]J?;ǹŶURS|h6M Y\oӯ|EȷF cǓttٿ]L|cV`ǵPYקmeyA0O<9\`Z/]j#_v|ҹs׳x&^e{G|739$-UO>whjAW- 24$x*LW8N8vLРEwcQ8|q&j/W=ІrqLL'|Ԛ|kv;3UX.\ɤadD{]}N{iypkdbp++pew+_90톖f 3C{a58s֦mj¾}ڋz/)zl[^2W~w~w|)5_9274{~s^_0k=pV҆<8qB{Ep lD0*^kp }z;n+z*h=9Bñc/0/_-ɷʁi743_5n,)_W_D~H$_$ww 5}^_EGl_z;+ۺW^10K_8ӟ"%_9Cs!wls2&'6mIC烞vnkӆ, Q_Ρ74'˔3+^YvXիq9C~@39jIW}R~1}p8Řz[X~Ug6i_ů`PWG8Uk}y%x&d_p7ƐeBY;庯[k|@ !΁ڇ#߉C{j;f]? N{0ǏCWC͛azdy $Cϻwue_fK @ݣ ]pA^ZoyCn-عmƍ2۷G=j3|.`/BR=qM45iM3 igr/Hi{ddvbc}w|~'>A;P&'q~H$ Sk5r0oA+<3䤔>iIV%_%B)f;ڻH6'F+ L&g<%3̒qoOkh ?|`ނnHtN7;_%)f;ֻx;14}?N_;vMܤ[k|"۩,6Jo!{?J<5Wԗybw5_YiyG;c;w},vرy(B\l!5477uNڹs1a f 0 (0gHb,˂>?W Q`Feh>\k|f/f[ѯ}\|{nS_#`fvrP'' vr{+gv_.H'IB$bbUWi'r[] akXsnM/_&|ì}iN`|JpۛxK _(WX.Zӕ/!IBgA:M%\^|)?Y~ӛLe:r{VdK nyY:dSOG?+V~foof+fٽ{9!6lf׮ŀ]X3BZӕ';xe#W[. b[***R~ro3p4X?  ..!uxERpGqMo"ގwhu?Ϊ'o}~++?7y %bǎ'+vu?Q9|f̺Fsg5}?LA=DFX68f/Ͼ>m{-[#G`l Ax lm͗L΄rex}cՓO*y2~Y8r0o|Nhn!E3{d֍ڰO`fDZ\IںVhlvI5rmx<ْdInb+LM âsپ]#GE5޼T׿ӟ(cJϟכ<-J@RSC%M*,l)NZ^$leZљ ի"VAHQ-ut@[JJLOx)y{/zEj_i!3){`Zx0xZh78I)cνFԉ}Vrvz;[yy] DpegÆ boQ(P]7cқMY9rptwشɰ'&;OR"L5R6 GBԯ^ԼdHh>9.}.^=<(*a8wNtD _R;/&v}*[^@G5~")6-f3Gg<<IK%XVƼdTW;m6\8sFd<.(K;v0xTY_58HN2z!OMvM+iB6K] y%&UbX`|mf#;aQ0p;/VM"\BS\<-RK+iS4] va<Ԫ%bog+vϋBzz3&jjHăMY/&ݹ% ~xYIh9_o(n36Ǐg _b!*B}}#TEwNppj2ʫ/?@UnIR8Ž4<=VitZՃsb/Z}m}q8H~igj_iQBI|&Ξ{|l,1e#TEX8pH缿' #;ψn +z*֛3>1_o~h(վӢݽЊ~^o#TEoU3i>-U6͋ƙ~uBN'|}gX*Yj_i!T͓݀Ɠ_d?˷kLNt[k/jl;~p6LCCt`&ؼ~S^N{OOTެFfB"^Lb{z1Xh!rOٌlH[|?gă##vΟ/ϖ-C47z8s-ņ4PdoV(/,$)C6>|?OOJjxCwE?HP[+^`d|>8yG빶DL[{2<^JG0fg>1"PE8٥)?<-57;VSW,@o6>MǜOMO[ScXVѧ:+KO5zb W уjg@X,3,xS^VϏV]+b_#OK}ѾdmE3J͔WlA0axX8}Np`G$۵t9 R,ߓ} 6ݯXk%:FQ׿ӟ4S[&leZ"Ua9"xv6tt@[psŔh z4y K![r#dHxh$oVhKtC}:%{%C/Hf <(^ nj wň*;6lKk@opP߿׵ o|q\S&ǜ{ԛ]br$ob&M~x+Q&}ti) ;-=(Qm mϙ^Tuu|.q9"xe%/D[2e?;;y'$Yih_˿w;^/9'NË>֠3B,!f1׸b## `ho&žF&}_믓'_{Jn3Jx#19)ph,ҋ3+ htK53>{￱fJ5{(^8o߾9汅А:,TK!$JIoSզTkdW~~~L'5553SRR2FCT]V{Kft) OH$)x#x_/G ɰ$$}6~OOv"}3PX-S3+7vXnhhm 0eN ύW_~ܒ}bĈYxFW9tHDP_ʓݾzWo^œH솻z2;5ZxpّyMO,VE|>g=>6vK3'}޼Tœ'i.XژKT(s+>1"8 fԣWK5Q"4"4LPUD+B}xxDzZ##ɓ"4"XLPUDnw e1]i5JSߔē2:]jnœ=!ݸvi*Kcc̾}ljjRCCC밨dKoZT6c\>I L5 rICII)U^)#))^\y6MKI"]:0׼OOfWlOpϿg~O{`S*?89/Ɠe"Ha8b2"nݹcx}W]&xx6#s|1~lüKoAʛ aXx1dcy>g36!m풼V~'?o04N 6m͛az?ĭAfG\xxZOCiҔ5Öߞ Ϥґ>Lٹ$oxCwE(?HR[+^`d|>8yG빶D~1-U30S9.}.^=<(*a8wNtl _Rk}Uxx Kn-x$țy'bu~G26%G_؁hAE™3"sAXZܱHd^y))ެqw;䭇ɘw}Z, Cm"6mlfC<<: &qġxx KWpǻx]q#>vm9ϋBzz30jjH%%$KOoVfmm& +f2"cl{Ty /sjxnTDef1gKwLY7{=;9' tBk=iVȥw} LO/Ahkw`07ck\q-UX7]u30VOoVM$oטջ|2u`i3so[H###RL]ցth}RSSXPRRRJ~_$J:JqJJJJJJːRSRRRRJJLIIII)):0%%%%R nojjJtٔT,և%RRRJu`JJJJJI P6O4H IENDB`gambas-3.16.3/app/examples/Games/MineSweeper/.icon.png000066400000000000000000000065521411575327000224440ustar00rootroot00000000000000PNG  IHDR@@iq 1IDATx{p\}?类Zve=ֶ,[~a[2 0gP `iJ %Md0B;S`捻`Cچ@ 6 eK$Kڻ{{JM-˱̙{Ͻ=0iLcӘ[SU{=!R_8#.Ki?J[ǒeW`>މT;>.!L`sT\+%'Y8v'ZUU1 WΟh:B3ϟwJXZ 7BhϻrN\Κ:3R6$b_CѪ+9{k<3:?:?=;/<b/X*pض t|f* D]C ai&3IOmsx鷿;/'^6U0u 5,-&ALf!cp5Nm-R$$W,cW6AN${;XI 0ڤ4IeI)+Ÿ}te{,/`7B3g8"Rg DvBE\}y'0CJ s^lɐ/EKFsyaWgf?CT]s mL c1Y1w.9],3}JiTmSb_hA9eBrl% <~mMvlsO;Ita0BimI8,[s CwLme@0 |JrcB(1_]ŀ 0H<8%* "P/aao7Kkݝ\WIҳ 6m3wUJ^CHƴ[Ii' "wxo w_݉}h^"50:4PZA+9W3/o:Ggw_eֺMl6lH[Ϭs>٪HlCkIAd.؛o S 4yd2N0W<D2AjOx K|!80|BkW]/2Db/JׅBPQ>/.F(m9)16!! _@ cD0mxG 1ֈ58C 9̬"42O0A|])Ϣ-x0}~}z*FFy$]J% vF *'tMZ&x.“Y/aaI;@Bf[HNyw]RKeP3Brؿw++V^{Noiq hiI?c448빳cFd(iJ eZ%TY̽dV_Mk å=JY$mcLЦeR0jU5kEyGKP[_i&ƃܶ@dy*iƟe \ig@Ef3p -ƺ[YǤCM%;EOX̘SE8B`Q RM%񱄍c=G)XVXr<}y로!D"-1sC6^;l+XNۧ[7ޅ*撔4euu-oWiml`m$RV1iBl>B5xBZZZ"!dBSKn^̞M)=% u 'F)k.gKim դJ)J X#p\A4:Ϝr!-D߈kPX[ńKi}=ηMuT[Əx7)\XCl6CGYvp7=)F뀺<.HLJƳ[ peϼ,W J!(sEcmź=9eQGLO>IMIw !E&)H$Sg~ZdAj01!#@ <)(d`߉Î?']"T€gkPm¥]#}(ᥒؘ@= ( Ho:{VHo#@ 4ɿH@p8$=̈ϐXʘvX/g"41iL('9+0IENDB`gambas-3.16.3/app/examples/Games/MineSweeper/.lang/000077500000000000000000000000001411575327000217175ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/MineSweeper/.lang/cs.po000066400000000000000000000016241411575327000226670ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/MineSweeper/.lang/ja.po000066400000000000000000000017271411575327000226600ustar00rootroot00000000000000#, 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 "横の長さ" gambas-3.16.3/app/examples/Games/MineSweeper/.lang/ru.po000066400000000000000000000046551411575327000227170ustar00rootroot00000000000000# 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 "Индекс вне границ" gambas-3.16.3/app/examples/Games/MineSweeper/.lang/zh.po000066400000000000000000000016371411575327000227070ustar00rootroot00000000000000#, 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 "宽度" gambas-3.16.3/app/examples/Games/MineSweeper/.lang/zh_TW.po000066400000000000000000000016561411575327000233220ustar00rootroot00000000000000#, 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 "取消" gambas-3.16.3/app/examples/Games/MineSweeper/.project000066400000000000000000000006561411575327000223760ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/MineSweeper/.src/000077500000000000000000000000001411575327000215655ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/MineSweeper/.src/FMain.class000066400000000000000000000160021411575327000236050ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/MineSweeper/.src/FMain.form000066400000000000000000000030031411575327000234400ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Games/MineSweeper/.src/FSettings.class000066400000000000000000000021771411575327000245310ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/MineSweeper/.src/FSettings.form000066400000000000000000000025361411575327000243660ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Games/MineSweeper/.src/MineSweeperGame.class000066400000000000000000000115001411575327000256260ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/MineSweeper/image/000077500000000000000000000000001411575327000220025ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/MineSweeper/image/bigflag.png000066400000000000000000000136621411575327000241130ustar00rootroot00000000000000PNG  IHDRPPyIDATxiduݥgzzVPP(J!!)dǁ #+ $HcFI(6A,2-LS 9* g!ggzz_Vɏ{onNLS9=߽$"8<>awVVZ;sjח~k_=K ;*%hǁ6aT+\vx L AE1f -[M?P/ DZ#rlQ90PBD @b H(51S{3?W}01W0|BDuo{0 '=ēOV  #väűU2R u{ގW.ݸrq]0௬o>;+ǝ5QY#2:l2 |8bƅx Ç?xz Rk4'4VWq sb8P}Iw/~ɣc?_*` O @pL0ЎPkǀ땔%h eL_þeI^3/_COۂY{D3 Wf1rOXd c&=?#/Ç>|2$c<QA Wǁ(^Z:66BKKb]Frxwwà[$MD@PQX90F!;.W!aX f C8M`'ۨa__xמ??yT3fޟ.}H(h9[ 8Y(>XX@LH $6`m`cHc "m{?ѥs_z[XH Pboy-l8q N4]5^0^)Ծ4At__9w]8O];B;Wq ZY¤_5PB駮6dd0 0GZE߭0F={G~keȲ әwV`KOFP #=&w"D(8*YS`Q<&aم?9rW~ozOUQmۈ,u) \6bnuG2?O&% f6W^:rb4uu{J A.]X3~ioefYHE[!m p8z8/NRo[@3Ƥ@O_^۵D`5:2> Sȍ\|uuCn2B;khmQ`r2}_^ ` HPM&i5 ԨM45gbv?N,N )(,@7T'ʶXV;H5v=F Ǐ&SRr+isnk'[S&5&vC <00\ky.VיԂd,i<JsvYՎ$DpuboLJljbͰ$p P'(!:I Le5 L1FJ(8>#DZ]٘k gZ#"aPj :_?\v#VGq[ Kc q5 aSi #yfJ*3+1$!3N`v].Rte(wH N ւj"06k@&Vi SZR~ 'N )7g)KRJRpUE@"$mV9D``jlۑkM @w AP[ǘ'p8zpiudlcyg JKKc 2JWZp,pjAJ t(I^p~Yb@Lhd8yO#1 fHbdm6#/ˡ/w 0cRam T~ hD}Wo-LI(k [{^R5J N9! 4S)I݂㝟~XR@}Y6vc8< Lql#y#Ymbe&`YRZ(yYھNfFFHR:puW|mQ :Hߎ$a|\430:E750duQl&Sʩ-Q$49MS0-i.۷Y0[+_!A"6hR*zBE+˘p,`9U`UMf[RG̖'MBriJYaqΘռDq0nH+54z_<-Ӯ6HN{B`j@@ Ԁj5b[2k^y;#yťK~q4؀c$ l 3z\62?WI[Mӷ/ֻHXhyE4z L4;(I_o"i@Sf6_x}MRl Rő*dIHZu։!wbR4߂H/7 AtͧˍA,^Ovݤ{6MJJpܤ!>eY. LHrNmzM"xsr{^r Im|cJ!Xj 'Z@i;k0 \WLiCR6™UfQ CˎP.Uvg -8'/g6`6ԾW`+Fa^RMݸhS !@+B؈FwX'5כi[~SHƭzAlak5lEe Ivx0 Jූ0_惇^u[N>z6f7aD3saF ÃEKglzXK5r0)7ft4}/姍j 'mp6i;LP+HTXUmܡUjvJK]_| ۑ(Fwzj hbHr21MIK7 n}T*|o T}]Ru>8F3\j !lHEC])7_No}tItUrVXV?-KKJ*(TǠ\vdl#_0(xBtp u+ؤqܽ`ީ{4MC9ˀ!1L e[PL:W'G~{cǮ=3>u1gΌw!(Λ8Cr Z5o/YÕC趖B@-sA$*\F.Wk_~:a8̰Y :X{OL/T̷@8v+:+tMaEpcCd Qe@b،O{kyW bl\(s%n ]uoklja/Ѭ.m[#)YiXG-L}s/ވ5+46D@J%LjDRVJRhz??[mDh ၲs]&.1AL7l30jLWKi= ]ƈcSL][u:8mi7֥B7I`Xp93X{h㛮m$ ɍ[_,cD CVN#K8}  2D\<ܘu -am;R*֊XEPW+Cq[*-9mnG 6Կ{Y}O4Hi ( [? ZAtm~b]ٷgV _oS *n .@_Jy)g_v*3︊Xm@@@H4*!bvzp-Wf/,چFQpzUv[YBH)( 1wk_4& HNqrn*r:Kbc*iP09y,3R 3W/sD 9Z BAĕɲ[1)[- {Xpgfx&ڗqPHjySmun@RсJmG-K}<7df<ƭֱӏrl@"X`9dUZ]Rr/V?)@b2-כ,"WHY>@;\Sy) ǷM&:'j.Ÿ\>q@JFCu[ۢ`z+ ./@۵wr'}<}luyD:Ot||<H ;szzƺ Ny">䡏|HlJw_^^9~}džc"wme_UFb_>NM⦃J¦ƖBe0;q"7^D2| pe Iu'NIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/cover.png000066400000000000000000000005131411575327000236250ustar00rootroot00000000000000PNG  IHDRW?PLTELLLLJJGGD@@==9uu94^0I,77,''#~~zzvt+-IDATm E+ΒR .n#B)!<%B\o-bc*}-눔cR'sۈt8DqB4ƚ5A|f.G .2; _ЩIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/coveron.png000066400000000000000000000003561411575327000241670ustar00rootroot00000000000000PNG  IHDRW?QPLTE~~|yvrokfb{^iYUQNJHFXIDATm@ D(! y5mg˳Tk-U2Z(=H 0Qg*B%Q+0T𔀗%#_ I?n]~IENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/empty.png000066400000000000000000000001411411575327000236420ustar00rootroot00000000000000PNG  IHDRB(IDATc|Ā X100bSI TR(H7c|)S-onIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/expr_lose.png000066400000000000000000000036251411575327000245160ustar00rootroot00000000000000PNG  IHDR@@iq\IDATxmpTl6I]Ch&$%A5Ҧ h#ƗNi;T!m Z8ӱN)AO 5b^$DXBlH]FB^I6!q%`6{<r><{ιHױzޚwz`vp8.+JiL53! X  }}_$'$1?t…K`4FF@cNkGRRxutMM?ŲbLN"7/"66A@CC">>>r3L57ײ>HF_nJ3Yy?h _mfZPe}8,-}.MlpuXCCCZ[=].e[v|vpzp?90WAxR9s(La+#X`^љ{{{uoP~ *+aeA|5x(W^$w;;O>) Uww7tϞW~>~\' ~'OƩbh{|uݻwt68$SYnd9R_wo/|>k7lIF#ʺoA{1l33Fj嗧ҢbY Ekրn7x=qxg3e ee$شOZ~DŽXP]=_YywĀ79miϋ<- LqcO?/N\EiL.5L?~\A hmu[KO1pvGF6M=XP'FAtޡ z5 ǔke0w>Q 0 ~waipHL)RRR.r~p8/tv99Blt:YW%$|",/E-) ~p^.:okjjJAH$&&ZJs+\45qq@j*PXx}jl֭yD,eMpg0O{ Awqdz.sE ϛn&>`q:kŖzPWٳ`QQQ' I4UN.-] vE97٣f ;;;wIڄAo E.(]_fy8qzO&ӟ!!?LUe2]]]Z?d`8m.5Zyf͚I)[tCs2>~ŭOGuuiqqoTkk;>deM25 7RSgU6yFFʾ.s8N8v,Ism壣cGzK75'@9AYYEפ(I՚j &M:s ?(WJ/s߰;@}}}CZÇwE$yR,06:U`|OĞs8r#-*Djjjp\f;}X"'HNVW_mm |PcdJX+@Up!0}\ ^]&Wf+ ##?T {/T*^ #H$fz DDEtt4 : 2M^<Xz^ޣohmZ[}  PSƜ;,_ܻ8!"FXri,zr6nN===*B}7oىfdZZ%_] 3g0dݽ Tb&m2v`'9$O-0 nC|HLlׯOAWgX ČV[ ot E!AT>CC DAA 议eQQ2スJNNtttxx 丸||v[Z-))Ͳ$׿6\s׮\vԮy´x>j,IDATXc`02133;'ɺyx`_@PHXb|h@BRJX2r|X"#1jU554-muut }oGqA-,q`BX? ._~G'9`5ՍX=Spŋ=?k:O 08h42'[o*+,f*+._OÁ~> &L|.  >=Je-纬ј_ tB/ZZppȦTU!9]ݝ}=x܅JBB#&0߇ba]ǭE|hcc)k'1qDOpvOD8RRO>q_/ӐUˎ;rVONT2*--%^Oz )77IǙ]СCLvͤz=JIlɄ6zg&zvhs 9kg=ą P(P(J(JHRr&p&=B#GPT2#23?PnֱUna0!5hhp"''___{uuv^&x1ũVKFCï0hከ(P*˰^"!%e- `TyRS믗s"?z(-`@MM FFp"s?Nd2̝1nߖqj୷W-GzFܸqcJa#11p:Voq>Xc{p2PE22@J(//V\I!!!; ;occ$=zk 8t8h!&."@\;LGD-qAssʰb#i$&?Dze9;)v@]5 x ƮP F1>,`2. {<o PU^joItZUW#ǀseX{]hhGa(_Bg) Ct4?oYX~[ L&`h@Јzݥ0"1,R`z,]ݛ`2Ojjfs]FF*V;?`B|/`$/ /^sNIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/false.png000066400000000000000000000017751411575327000236140ustar00rootroot00000000000000PNG  IHDR IDAT8˝MO[G;0` `BBBHE B."!uUU_E ,)6$|Ć}.Fʑ4:Wsw4MMM|jaT !%Ra/t&R!8=9rtnׅj}$ijO딥bfLPv]cwY!Å `|>vU4nnVVFFoo//Ծ}fssAA99YYƇjMǐrrEE00TTPPf@녁``::hhLL33ZZ;;jjJJDDllxx᫖uu{{·iKv\IDATc` 1P \<0PPYYYEUM]CSK[GWJO@(hhhdlbjfnaέ+hiemcsptrvqUts zzzyYy#"cc\cÁ)i Yi9y@|¢b7`)_YiidyELVPui)PFBL,`Js * ][; vtvXt:IENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/mine.png000066400000000000000000000013631411575327000234430ustar00rootroot00000000000000PNG  IHDRW?PLTEļ­}ɷů[5fDdAb@dBW1qjmCnEmDvO(b?þͼİƹ]8lLmMoNlJiGhEhF|V0ƹwN'oEj?f<h=j@kAlDi?uO*ջ³ɶį˹ʸŰۣmormEtN)wP+wQ+wP*vP*uN(rK%kClEȸhAX-[2^5 `7a8]3 \2b9oJ%w[Ƽʭv{anQgIn̿O,NIDATc` 1P  A;'n^>~A0 (("bRB`Y9y9E%e(o ML-,m m vvvN.n^vv@A_?аH(`ttLl\|BbBR\rrJjZt4P0=#33;'';7/8=(XRZV^QYU]US[WXRRljjnimkhi`/ a`?MTԎ>IENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/number_1.png000066400000000000000000000006041411575327000242200ustar00rootroot00000000000000PNG  IHDRW?PLTEVVLLԦ77 ,,竫}}99..鱱//길11쾾33Ƒ55̖66ӛ88ۡ::ᥥ<<說>>??00ooAA:IDATm0CPPBf:c9wy TcØ|ZrcdPo9jtc'} 2Xq"S$Z3cŸZbŸZ'9xn0iƗ?e#?JCIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/number_2.png000066400000000000000000000006271411575327000242260ustar00rootroot00000000000000PNG  IHDRW?PLTEV|6l+ga WQBs}]grS~^b3nƑ(ḥijYөʹZۯпZƤ[ɧʋά[?{cpIDATmG@DQLh1G`eѴL| bA)^ w* :Mj4[mcHbCq XTf,D\lDZՂl 7}pS"ٓA͏!)AO/ț'?֩&R?ޮIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/number_3.png000066400000000000000000000006541411575327000242270ustar00rootroot00000000000000PNG  IHDRW?PLTELL++ zz}}PPDD LLeeў55 jjږDD֣ٷqqXXuuxx?? ooqq(-IDATmGP EQ Q{{+"p%( Hr'@&*K@ E4U w++@YjFr 6"M"H:2e"4-kc1ק3%ּ nb[@ly ؑ?3]x"^ssGǽ[D?o? ? $# IENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/number_4.png000066400000000000000000000006031411575327000242220ustar00rootroot00000000000000PNG  IHDRW?PLTEVwY [# S^b{˘Le(ʹjmږܩbqIi<|IDATm@-CDNEll57w1{v,Q60v4d_`ld:\6ş WVFO|3b!BJz"9c:7ALԮotO Yr2_ZB&[+Qd;6 PsIENDB`gambas-3.16.3/app/examples/Games/MineSweeper/image/number_5.png000066400000000000000000000005751411575327000242330ustar00rootroot00000000000000PNG  IHDRW?PLTEq_`9oP1vY=w[?sT5ƂhO̚vt]gCvV8oN-ۢ~ᜇsŽiE!iE"kµjE"ĺ, IDATmI@DQJEDpTT3+ۀ7e4 v{7$7d4V܈6Į :$S nToIDATm0ac 7' wM*y UkԀjEE\aƘؗ1M1/Y`)q嬱Uv{YuIY\d]1c"R>S~!FxL|BwRfѠ܊؅; Ԡ?^?S8ηFyW %ضRNIENDB`gambas-3.16.3/app/examples/Games/Pong/000077500000000000000000000000001411575327000174005ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Pong/.directory000066400000000000000000000000411411575327000214000ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/Pong/.icon.png000066400000000000000000000113611411575327000211160ustar00rootroot00000000000000PNG  IHDR\rfIDATx͏Gz_5)HfF6; DvO~alؗ9a[rHN{!/%],( 8GY͕,GfU]|g$4Qw=O=]MJઘu_޴#%&h 3OlzI$y#~`{>V~}`~?#Y;~]Wڶ^`{]?++?k(kxʿa?7"ɺ ~NC֭2&_g?m Z+f*o~pmڼMOʒ,xMמ-֙Jb]{rᛱƿ{ ^˿6'M>tC1XƝo5dEcGL[>b˔i2#O2vaOm>繕`^4bdA3+Oیߣ{n[p絃Do6|'|6kTښ6N ìoӇy #FA/v)xA4)v}Srs#J9'e4;?_Krt;|6&8hW()ׄ|D7Ѿ,Ll:YN6u!kd".|OVdXO/g0ǥfΝۉڇIo'hr~J0-O/(>kJ-M)X/z8S#iϨ`Krxk [u8#`(UҤ;T*SOD~2 |Fֺ?\}FToڻyD=]IݹmfcV5P/|_h_]]("yUE~'KI`ҕeE&НV2uj8f{`&#jPgpEu^Yx_6 ۚeqw tspÃdj?R~UO _/7u)3* O^ןCOdX`+rp[_۠%Y>N_4PKAi?vn~f gePu Yz}VRM漕<䖫zuQbo(;l t73^oom^/5_w~J=WghjLi[mK{[pL^2k5q.G9o5'_% |՗?[Q+Tn4tp3?s/[rvߖn}5#T5v` Ee̟_qh7*>=+h4~zjrk7uf rW) #sa>ψwF[%"?vFgk HwT&cwU@A{>*?$fw`_N;5OUibc"?vVd~g@8&sQ>

I? 3$ W D~쒭kM|M50O(s'_+#c7lUwa$%zf~;S5[8͆Q"1ï_:0sQ"?vVf~#Hbd'gMp;G&#U2i?6~"LGvVgNbFJ^V g?ȏl}L`4i%dsF$68Fok3B~W,0MeL6X?*KlE;7d60W$@3"HGZ΁>[uS`h2VOLTYc\k6ɧ/O k?+F~+gifFF';w,% sB"HC|mu:g~wR/fz6J}}@}qcGRF! ` VVFFt?t'|,WD_g#Y:7C02w~IY"d#y6;}ݷyM}`%kwOF~x@}m#g-`%d/ZO?\A>7]!6X{ᆳN:V+_hDی"(al `ս.@`w0"FDl;6?{P_ӻuB"3+쒸苀\3h4fs*MS CF|206 :>>K՚`0PEoX`ܻwOSݞ}> a\?;;{PljndsZz6H$, ~<31: bȏg2 bt@"U-  }<n@D-" 1: b|x݆{P!I3{P: t5;J+PI2:Tv[GGGz>8HWӡ&QIuj}J?>HGGG:99`0&2"?jR7M=x@gggz:99$jX @M5v/lc8D :Db? DOB> peJD~QD"?"FDWȏg2 bt@q7 LqxfD1: bȏg> xfD%2KT@^O ???W`0PuƢVv:==$z=j8ֽ" $j~0."?\uvvfsá_0h4Ņ...ޕ݀Z3*LD,_uP2 bt@(#"FD D" 1"F ?y 1"F\_V,IENDB`gambas-3.16.3/app/examples/Games/Pong/.project000066400000000000000000000003651411575327000210530ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Pong Startup=MMain Icon=pong.png Version=3.6.8 Component=gb.ncurses Description="The Pong game as a gb.ncurses example." Authors="(C) 2013 Tobias Boege " TabSize=2 Language=en_GB Packager=1 gambas-3.16.3/app/examples/Games/Pong/.src/000077500000000000000000000000001411575327000202455ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Pong/.src/Ball.class000066400000000000000000000045271411575327000221560ustar00rootroot00000000000000' Gambas class file Property HDir As Integer Property VDir As Integer Property X As Integer Property Y As Integer Property Read HitPaddle As Boolean Private $hWindow As Window ' Used in a simulation (of NPC)? Private $bSimulate As Boolean Private $iX As Integer Private $iY As Integer ' Horizontal and vertical movement deltas on screen Private $iHD As Integer Private $iVD As Integer ' Whether the last move hit a paddle Private $bHitPaddle As Boolean Public Sub _new(hWnd As Window, Optional bSim As Boolean = False) $hWindow = hWnd $bSimulate = bSim End Public Sub Reset() Undraw() $iX = $hWindow.Width / 2 + 1 $iY = Rnd(0, $hWindow.Height) $iHD = IIf(CInt(Rnd(0, 2)), 1, -1) $iVD = IIf(CInt(Rnd(0, 2)), 1, -1) End '' Returns the .Dir of the paddle that made the point Public Sub Move(hP1 As Paddle, hP2 As Paddle) As Integer Undraw() $bHitPaddle = False $iX += $iHD $iY += $iVD Return EvaluateCollisions(hP1, hP2) End Private Function EvaluateCollisions(hP1 As Paddle, hP2 As Paddle) As Integer ' On left/right paddle? If $iX = hP1.X And If $iY >= 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 gambas-3.16.3/app/examples/Games/Pong/.src/MMain.module000066400000000000000000000073671411575327000224720ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Pong/.src/NPC.class000066400000000000000000000045231411575327000217200ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Pong/.src/Paddle.class000066400000000000000000000025561411575327000224750ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Pong/SPEED000066400000000000000000000036201411575327000201640ustar00rootroot00000000000000Different 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' ;-) gambas-3.16.3/app/examples/Games/Pong/pong.png000066400000000000000000000001311411575327000210440ustar00rootroot00000000000000PNG  IHDR [GY IDATc` D@"d@b2 Y 0 `IENDB`gambas-3.16.3/app/examples/Games/Puzzle1To8/000077500000000000000000000000001411575327000204425ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Puzzle1To8/.directory000066400000000000000000000000411411575327000224420ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/Puzzle1To8/.icon.png000066400000000000000000000103171411575327000221600ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛytV?wKf ,uAVkGLNkmsx:33ʴ mՎVI  ;>$e=瞓.}"̐m֠ ZztZ蟷c1㑻 X(@8z|l49fK,OHW9@]H%ԯlH/OfS O݃mdϦ$/Goa_Ab*p $RK3xSy3_|ͽC>c=!|Ԁ{BÏ>b![0aɎz]7?&탿uB7+01\?3|&dbza{Z9x5wNyʧa1>@#Pڋ1O bG:sԹ挱p2I;ĦSP = eqӹ)Ǽqׅnav~<6cao+h ~/ <ל|a Bû1ڐ{gza2v ~vU']~)\[3[K+N:͌`DC mW7Nn(J?3':pb! ', N,- ' ie4 8yB78bXloyhL%|s@w-_,r3q] <("\ 暞L/ljkC~ )75 ၊F{\=Q 暾vsE(`q8 _.&1a%e^)PKR!ԄQ/&XR:d! w@X>wWЮThFW@JixXʒa%'pj]vX(If2Dꜯ60ܰe Rss/[+OM@86MqU*J`Hy1*d)%#-snyб#=ֈs*zT SE š7({3I.1^܈% 7?CH &c6qDj+ٿϨ<@[b H%Ö"<YW||ϳmRǓmXgR܉"lYJDau?c9xٴ гp/D(mqso"㚸'ZE-&Zdؒ7~gFo/ B2of VAmGhg+%\T&򔂰 K)oujp{=u{ߦ,˗ODk[;O @ۑQs<,s{mOKSR8OTQp tF*[ypg| D ~R>̛If^{'鳔%ۥ@1Տ9A V>zi ISAxm}Tlf~5q(Yu :αPl!ve+D?z~\Ų,)$`p]c m4RJ\qbq~?)tct%&--`dP1Ϸ sTvE|t{IlԸD,%Bsͭ<ؕP/,}Kmq>3~kpqbcBڥcxcf jՒIRR"3fFdTmұ,mJ FR1PS|k[CO|"N_@/O&f{x= >L{Y `Cb:"yqbb6zLnvg\QLHСC8'';e˖e)iB6k-ӛ#@c;J00}\ێTiKVSIee?ڌ'@ɼn_I~wvHX̂ҳ" DJ[CG"l߾sfHJJʐ0|fT8ڛ< ", _WXZѕGX`BkLC$F`SO YR2NoIq Xc }]mmm<lWY8`[Vl'b$a$0BJ8m'зЎM0!sIcb"c 42L0W*L\&yJ(H!%m_$\}3s6-Q%durܩ I5˖,&3'Ʌ<!-#st1muhp`hf< F$a(4ٷEOpl, 7,m$3Tj*a0|,LrNUwŔYHuvâE(.-c!dmBE3)Sc5^V,65;hvu/#,5Tt2t>"WǺi퟼Ĵ3C4㸉Q]]12zq*~Z`]G@9R0)Yم{df$>DN]mT3|CRjS^groEfhC쪪d㦷m*~?!dgf crX5. JaHLc-R"G-@}2VZFY!ԓx%G]]#"@o!|cF+6(\L"@Lkf;=Fk%//oty7GH?,9%Ũr8HKQrYԄ-MJFMR{#(n[q' Dnhʃ9ٹ,aDLQo'`sM .͝3ԵCOW'%ܲ&[gv~~_}k YC]8<]r$a%y+}s3ތ<i>}G+?b _"#HeΠfR5z).׋8KGrJ B WR.qq'!GY'5TڔHJ$#LFHiJg-$7ټ5 gKˢ/~cmhnn\yiǀ$v'b,!h2 =,@r!̰NJ!|:?ۈ/9ӒySy&ެ"Բο<3vvOWӇM $SZ7ܰK 2Rܱl =/-M?y tw],}{_`G09/v,o2I12RZs:)y8&yⲦ -EoEG/8,w=Z% R"ɬSw֫E#{"LJOgEqk~s+5`gOIENDB`gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/000077500000000000000000000000001411575327000214415ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/ca.po000066400000000000000000000103231411575327000223630ustar00rootroot00000000000000# 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." gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/cs.po000066400000000000000000000064141411575327000224130ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/de.po000066400000000000000000000077601411575327000224030ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/es_AR.po000066400000000000000000000066001411575327000227740ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/fr.po000066400000000000000000000102321411575327000224060ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Games/Puzzle1To8/.lang/ru.po000066400000000000000000000152541411575327000224360ustar00rootroot00000000000000# 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 "Неверный путь:

не существует корреляции между числами относительно их соседних блоков, поэтому это разрешено." gambas-3.16.3/app/examples/Games/Puzzle1To8/.project000066400000000000000000000007301411575327000221110ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/000077500000000000000000000000001411575327000213075ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/Casillero.class000066400000000000000000000042321411575327000242540ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/Esquema.class000066400000000000000000000111431411575327000237360ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/FMain.class000066400000000000000000000057251411575327000233410ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/FMain.form000066400000000000000000000040771411575327000231760ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/FrmAbout.class000066400000000000000000000014121411575327000240530ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/FrmAbout.form000066400000000000000000000031301411575327000237100ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/FrmAyuda.class000066400000000000000000000014121411575327000240440ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Puzzle1To8/.src/FrmAyuda.form000066400000000000000000000022651411575327000237110ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/Puzzle1To8/Licence000066400000000000000000000764421411575327000217440ustar00rootroot00000000000000GNU 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 CONDITIONSgambas-3.16.3/app/examples/Games/Puzzle1To8/ejemplo1.png000066400000000000000000000127321411575327000226710ustar00rootroot00000000000000PNG  IHDR>؍IDATxy`fpa #Zz Z*UQcGmh}<Ԋ7jR)BP 7b nvf?+Ccw߳pT_ z@L"P$0@L"P$0@L"P$0@L"P$0@L"P$0@L"P$0@L"P$0@L"P҂ st]y/zqE AB^,\Z ® %_^_ڪ'j_4W.}lx1s}0KS_zP(I-~E+TW%"O7o{E3wHHzJ@'ҙG=MzK5~$/gֽޱס0q`$o6MZW;@o8#{J3/Ւ ШcwyZ{ J?@"y&^u.ucpc_&}EJgEk7I~Urަ f$$I~KvpZE%iֱۿ˹ziW סPkn9fbMj켘;ۅsO۹=5,-riZ-I +yj[:{l5g쪓 3 J=<j2zJXj&)ҷwΑ:޹(jo*K+jvU-=y']-<"/>?^|V 'ʣCHZ5ێɫ K(|r44g7 ﲑ!54eu㽤9MԊh|eAnSP}M)W⋅|0=c*S'ws:d@Pm҄_*]ߣn^LGC.5/泾 ҵ/K[t 4=՜WOSFn抶Ӑ v}ۢ4g:c{Mmn]ZI?*3&jo/.ۃhizbI0ͶQ+K`JۼJ4‹uc3gC6< 5yIiM՛Ou z( -yGVSuݳUd.Wᓷ>mw?Ј_S^'1?SDH/~[d\eY=%K[Oo<]8Vs3?&͓޽]o՛=+=|&JhZ|9CI:E+ |a==B'^VqGITBthU'7J\)W%I*z@CxYSOEM/}0Z:?!rqy%LR~{~D=/֪~ܚ{ۦܨL8\:gۼzO)~cG$WytR\e/J/X݃5-&I]5nQ=4~5?3Ӵoi#Gu8wg/N;$IJҥ[K]/^wtLۃ}rDGRl9|NT;^{5n)J+]#'HƤ)Iqٍ8DҗZ?Չ4y;? s'/rgׂ_md[pٲFKS}t͉-ӥV[/L[$]3RUȓT#.QTsem{|Hj3SKy/ց \fY޳y40l,IO-GI I7͓> zhZ:J;T]t(/ҟn}Q_Hӟ'>6gLJ?^~=|êSX'qNoƎ 6j4Qi(i$uUw,i܏5qZy`}:nnCw*T ݇ xd~ޝ7vB}NZyzN\W7t6^t'6Q&N4٠Jq!4VOmK/ u{s۳:]+Vը&l&=Gd3_g\{Уyz4'%$0@L"P$0@L"P$0@L"P$0@L"P ʑznЃ,Mquz֯m@eVuAr\7y &;GD#ֳ~N~C4V*xn{AR'VYoUUbgk$R@5h4DTJ&UQ^x<.+ֳ~_\b*+/G(V(z Y^O/ՀS㤤4g4Ex>~ )ė{rp8CH `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `D&(I `DB9NH=Hrݤ=RT q2+[ˋɠI9ԼYjD"8A9ӧA uZQ<_J7GJ)Rl7P*"҂8TpXhT} V$ zTL8!%(xf$0IDATxy|% ĢRZĪETxx0d×}Lfwg= \$=( 0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0!@cx|I~qE#aB᠇9穦Z/Q H8NHY+@x#{`d2e9JhsX.a#UA`9rSnAcRΚ?w`] _qdp8©TC&,  `@&,  `@&,  `@&,  `@&,q},Mb9NN9詀}F$˼z6mMYewj,} kK~g\u3p [ᄂy,w?ݎP#z"6Q5zf]4V8GC~pzSi.&,  `@&,  `@&,  `@&,  hR\q@TԭՌԿ7_n3YŸ^r]Z4K#ԀI HEzI|_#m[1| h$u|kJsiaL X0`L X0`L X0`L X r8! fnRp9h-+)&S ӌ&h^tQ"z`9EsfA4 |-/yK+G2qBjC+^WG`8 sb7Jh4qLK&U]UI` j!*<_ qE#aBaIRmm**YFzrLW̓`TSUu˗zSqBj^ʈŴLٴv]D<H,ɤW)7r f/A\ղbWXTUe%ֳi*7nPn~:u8&usg+MlZ;'_皂p8é*3Ugy=\0`L X0`L X0`L X0`L XxL$7-¹֢i}G:nX?um=-ul泍2wq:O2XδD_ ow߬wtr{TfC܊zt_bw7nѠݻy;C6}Mݣ+"3pJ%= G߬w'#3:.BUNP.HU't=J|~=V=ޫnS/Og~>t.P/@Kw$Ֆ=kׄ'*hQaAW;N6=!Uz*\#IGy֡vN@FZ$7:O}-v#7V.Gg8Y=ut=afotΗWukѥg?ϔa~;(+ |>NFLje˟N\nVxJ7&~ɺJ选zɋ;PVR+^SƩG#q]}¡{. pߘ ]]!_Ϙ9똧1Ä|ǚ?4u\`!XiNk6QܱT -/ޫ좦&Vy]_gӖeIzq'; +Y/[5Y,N.o>j˴C҆7ڨ[ϡ)ݎ)U^LE^3v~Oܡ P Ȟ _Qu<)7Wܭfkcl:k +4\~2fK=5 )IhCgB}|*Y:C/kCԩ :ꌩZ3'#K3 3ԦSO > 񵥚qA;4漿7IRV:-ƞ'KNtErY_k~Ijs_xppW.|*%M\D!nVLg\=xmp'4iNiu[ȇ  m^:wyߵ^cz~W+-<}5Vzj׭}i}C_US^gj4'(!zOspL h>)Y:7\5~_D弟P91emBӖ:qVsU.k:mhl[/lh/_Nhm?-`+4x[_m)՟yLKQ>=_[ Ue뮟ޥ n9J hw4?QwI&9J7>3KZTʵTbcx1۟ztYVK5szq^V$Irб)tı:-"'0vG1/^}^$, Gܣg~d(K~{,$ U\%0`L X0`L X0`L X"9NHW)Mq]YTMkDsa[8/;GJɠ1uZ4Hs(H)b=͙֮=ľu]C^#8!Q!Smm-ֳiDŔF(uɤ*%b=֮8UVU|I#4#q %a=W̓`TSUu˗zS\qBj^ʈŴLӫQW(R`58JfW␾1%8j6$I,Sn^(^Xe%ztJ3[슕:_rf=w]?Z[Xa X͆`Uqr ԩK1CNg͟;[HlgfrQ(#h8ru ()9qY{G)#;c=Sz:ϑU pS-`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L XVp8! fnRzjGz6'1yHh-+)V Ypݤ+R.J$gvl?wp8M]WrH$g͙=ľu]C^#8!Q!Smm-뙂ݭg눣VkJVmޒ Z͈`X,6FAbR]2JqIgXϦzyp.qMFU<_\ qE#aB[Oq xj[D՛*8%@RVl/PF, $I,Sn^("p=WJ^b 6R F,*7nPn~:u8&usg+)v:,=RG8 s0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0`L X0` GAb&8xH=HWt#dڔ4H$}7GZTyewNr$hҶpȄKN;7MB_eٶٹK QQ!jŋ$Eë!$!0O'_fM;:p8d|ڰ 1A4 ˽OIJ$ eio(H;B'T]!h3n3}gTrL}G~<"M!fb4Nx1L?j3Um6!D PPe*Rx%T^[|S&F^Q>W[LGH|Q7!:Cv< (^$$ eE|(b TgUڠ=D 8;mۖuMP Ȯ|!L $-T-L {7!bx:S ۿKUt#MG@W&mPgɎ)чtXALekZj&382iS%GYE#aN'UQEMF)n, U;TBQEB <wG%^+$˲`RTja %8mò,fID"ާB!C'(+aTWO=i9$Vxأ$q%hDl[S~o{U$>a6/>5Zk(,Q%fڹ.%O:Ȕg$o"FDM?]ԓ$$EMMl㈻ Io_n9G K~mj22[\1ZT2#^"R9W. )JT56 SשKbg mQ \2XJqE,vhU,Ҕo^gJ^=;mm!\$wSSѨIyఘhԵB] ljv%/Hޯf6 Ң?bh:Q>R%pp)!q8vqWz4 }0s]Kj)}^%E7/@#MG!1rT&=iv0aOB,TU/Ɲw`P#<>ڌw:S'i,AIGJt!WzGZCĊ bZxBv]Q$YiTԴ m1ѠNso} WQв" Z֞U"L`i׀0;I1$x݂BK:RhC"sU8: #E`-|f۞ްTWkrA # ˒7CvʒۻŅ`۞5 U4x$ЌmLWs2v-B~Hu۳MTZu$(jWDd]D"Hy7.AR6_Er:nNn-4>"lG:@2˦M/5g9J"*!)J`ާe2Ck MӶ+S`3 ̲3٤%F&M4T5߆MN#AoLݑ\ G3 ;=c6ќs}T$ \w6!$R$_eI"dIW\Qu/!Hi1{o aέhظ)t%ȪW-+#Xn'55 j R.MyҏZp][7auhݱie$׸z;J Sy!^LTDoJVmD,x\$Si.ID{" j,@ V ,HH6"V<qr#868%ahFsnS C00pi@g`Lfǽ 0}"F4PfѮ1AH ђF-/ >5;׎cg tX ]/!}O٩BZ卲t"ܱ&v Xr%ڵm=7$Tx IZ/>]zm '**eE",=b's8j`|>%eR4mlmKbXx# "Ksf1EEOPJĩ4 -xjG^8Um-x`KJrA6cfUj hHQnK둦9ŽC:T8㰸Kvw!sX %]el%ظiŗ_k0 &q:Imjmb 19we50=~I*I˶5'Wgm7¶mG]DZ%Rg`TygSDyqo:iqd8ԛy?*j7R"$9K۹/Щ@ħ2R&Ս1tܦ31ƕ$X+AIz0QiWϞ=[lA-L ;D[ޤW^T 皓bvh_%EpqW4H Sw3&%<;E՞%ڶfyvUD:s3.%JϦ*]`GU)oḄ)FFx䢎ZLM$ЦH̹Sin9Q{2 *pa`3 ǔPRR04T=57(7VC:uCQQLf.BD6&@:<eBVڢ&dnSN{6m+W5E@A@U 9:+=1TqbT+KƑJ['x>zoՑ2 q_p$mhzCJx9zb;q[ڨ*+)Iɶz<^5k׬978qP}r\ Lο$ʉ = Pd^CԾ}Aa.QaHH WC?0n%H`\1_Q4N˶v`&,mF ir}ik=QspZ\.GwUesD\ɐ:xP "$Ų YJI`nAj6#JS>9D%6 8~1bY`s 6DFpp)֥ ڷo瓊>hfRMƂ0$L-Krwy)"PYmڶ"w_ekfrk*t/XԀLo32d0:`L&{6r[I&{y ],[+VDV-:Ȩ:sw0~ۮĤ$5dMt%)QhYL:t)_)Uh}"QL_7=@+1j#mc 1uq#77)l6̙.;C :X_ei-Ky}T`"͌YL5Ǒ0=L &?B `!,Lb:8D:h{T .Y_ۦuWޝ~5&o]|/Y|wyi+kwR-oiA։oK  Bs[z )f,'KF)RҖ4IКavh}cɒؾ}Gw:} SmM)rU8r%R)'1J {/A_չ"BT'RݺvAӦMU=w.9-}-rjgr'<#wɑ™e"h NX*"TꆄCecN7n߳gMX,WQZD&/偠$0wOyNٍ|7L+@ $D1x˷=c59k6\L {E~~>,faڵعsZnX:uD5P^.z=)Sd0J<`(ᑧpj@s@>իż |/)?pK,ڵ?c޽X~=V^x<5jh8޽;zE͚5+d̲-x]7#}RԵbߦ vQ}pyIs b hۦMeXf)S~`rNŐӪh٢.| :H4(g$߼ytELJd ׌h]%"DG~c*6o'÷&":UWg pi{nxh~DtKh!H89Q-pS}7{lٺRMBslذ/%rx}eAQQ zLaZ=|VHgBH`)/>Q@! o= e*!m=ƻ(@[ZG~~>=]p9g!'yRETk|)9FRT'SUc`oIE,q)HgH6oƢEKЪeKԪUTTTO}u'<^Ա# @ d?XP͛`ҥXt;w=r=/Я__n*'DҬ?1v:̆,V37)Ô[å~3nkk+=TCTw 2M6Ů]y9ڵ zYaeÇsFDOڵѵKgt_x֭_e˖Iz>|w-[ou^S1+ZP7smK:rewҺٻ9wc '>k겾^oqw[YԳ+ rUG CTG003i*,\zD,ocO8x\uh׶mZm׶-ڵmCcç>c6~^%RRHjI攗ƳI\L'n̲)4D?Zk+ޟC8SQ;@=...ƢKjr/ǡC 6 /@֭K}\ضmN]PgO4gsG h>ݼCpvOj1?-QxymCihٲwȼ~LVa+s Zl?!tҹLR܊Wbف9SN?+@'mH(mp; _.,PCz7R\dymuҴ;Ü $CTw6TԫW׸/??sǞ={8to_VV=l4jذT/ {Aڽx\NN?r{TA]IQ :Y=J !Ɯ\!JJrj_!;t(-n޲ôi*vmbǗ?4ɷp@Zp1dҵj8m`>J[JP2H!8!Oe%.䢌W!s >ᄁh֬i޳g>d>QU1h F4.sTs}1D$鼕xDYdȖ! ;X,]Hsl߾Ӧ'd잌1lڼ c%[}4F8"qαk.L1 V'vh.L0BqqfM<0ӧZ}tǦM'G%%FᜳĈ2\w=4,K b3XQ3HXO!蕘|x|2nLRSV->W^~4irYc\6xs:AYS<Ꭹci~2R)W7v&ң!Xַ ѤIc8be`ͷhժ%4n\ݻ70 GS ߴy3~6^XڷkGĈ"-[`%S6ZgҠS-+A")12,12O#3N*Vb+, DTB#0X_ ,BN0h̘9x,wLŋF^^={@^/_MǂR 4p.BdXf yZ7BNѼyR?HFTcee,0ۂee1DKha r!*Fcr!/R`t̍T"C8 ?/ļh4}09mf$DN=dk^O}?LK:Fwl_޹/} /ii [>G ZԍOR46,oYv$GYG<.bc,P)rrѶm[ 8 B֥|ńԩ]LuBR,]QZug 1kD(PM}kX1'w!~!8ܳӘu˖-Xp8irsk`.f͚Eص{7L'Ok˯`a!83Э[R?m(.F ֲ;Y~=|&DuNF+:(DzAkR#c8+81t`İꫯ|ŏƶbŏ`! R[5rr|cX'<񷧱zܹ n`ԪU N.<͛5+Ol߾]֤qcԨQW QT7\]>Wp͞#eH'_Yf#NH ض}ё}|?ejIͰifv9 0i)I-Z0|t1#a36lWeqk6C5LZ}D:2ZئHXt}ۇq}./)bh3O(jԨMK2ճ̎+V3иQ#fЦpkK!9\qx*QJє2'D<].ݫw-7:mrjܨ8D"ID"hެ 8'Qi}?u*v۞&.w9-d~wDHͦὉd)22a66mr2aƌXjwڵkOD׮]3e2#)rp嗥u]1d kۦ s:Ftb'ݰa#k^={dt=}n M2OрiX*AB/M&P+w,"CT&݋ bѢEXlf͚+W[:u\sMݻWXt/&|ѧ,aÆc5, f}PNۗj=ztG廪!0Q\ˉ}76*"Ha IJe'/ŋQTTUVGqqe 7cN$]va5ĴBVZlVZ-sαf^Mǒ%KjԨN<\&(t ! ;}suMD_zg ۶m_׌#`a ӊ}$lݺ-k'g͞4M&w>KҧpᨣJ?9hFbXxEd(,\ōVĢ0:rbƊ+p7ꫯƊ+k?{Dp9g_|9._?':k޽o2:'ܶM~ک+ yOePv*eIQ,%(lho !ׯc=~;iB3^F͛ s9sa i]3'''420?(/P\\?6GQ1 36hC2xv(#>пTAȇ!׿aÆCaGy_~%>,;6eW.05k4_XpQ=ѪUK]wW*<f͞O9ӫgyƘ2-j]O@ڿ\MVJԩ$8uR_~!* ~)}Ylڴɸ?k׮{r {xݻ!M-t҉hL`yyyXh1m۞5۶i|=ƛ[fcO`߾}cZh_t1c< QI$2IJ֧De ;@!+VW^J٘лwo~\S׉=g.e`xnn.Ɯ>mZx%#E5ė(V:REty6p}Ǟ={ /`ܸq͛/u몋w޾nZn\?p}cvi_t!hǕx3c'B<Dz+G? lڼ9?4DsY]%)A`8M pSdyBL &0CL /ߏe˖wI'nèQiԨ1 zǥEN1Pv۶ua', m۴W\'`nsݤɘ3g.>j< ]tAfMJ@ٻ[lŏ+Wb޼Xc4N=7xrrg@ nۆkNScpUH4gEKujDFPJ!D! ''Ǎ8YYY]RömL<_?#!gTkwލ~X#ŒX cνű pp1j׮ 6GJ?7KJJдIoÉ#}v4|> [vs@ڵ0q)У{E2:eP0mDжmŖ(-+e9Wܿ?z4$.D"p6OX K k0m*v؅x<]vW _ 9sz쎾}z5o?ÇW_OĤSR  gAϞr(:u6;ۉC;D%|kdY9(u2UDs?p۽S0 ȶm:XkjU4P^Ct;99(*,,,: sD#l޶` EvV5s˶r[EaE ͸M{$X ׭@מ}еD24RXtV._~F`~~gaa!VZk`ǚ5XxMx8F8h؜#nt;M@ѨI3kdERXp!&Mӧc…8D[''nm _~1;[g9{};r\|IzKK. ׬}V 3f\ :vcS2ދB+JQ'B$k&g'2HRKuӰ8IBJoNJw JG$%jr?Ƌ/sdYp!yRb޽}SÆ qW⬳*ڵ sMѿg'd6UtI9s0m4̘1CntQsj,ZDR?uTap97bQ*q>]Y)zK*%YVOc/%%%>}:yL<9MKgϞi۫W/kuqի2-m6̛7o6̙͛cȐ:hؠAf+Eƍqꩧ/5k|W^w}HK3N.hf/W곔9e&~[A4UgO<3fo}R{ 7oQRR&a,[ 3f7|p޴@룛G-Iǥ^G}Է/??_}6mڄVZk9 pBS=;wrKQI B?AeiLUib۶mx衇0b|Wo@vp]w7[r ;;M6-!rαn:|xqM7gҥKH$aÆᣏ>mWaCVHmܸ1@)xx˽G8ZmC$D=.IQYb\A,Kϐ{>(((K/_9(zzo&~o3W&I,裏pꫯƇ~RnݺF]ee}9?SHipJ.tQefRԧ҈T^b[laB$yAb 9MN; cq1z꩸qmahܸ1ڶmk\F)2+Vg /3g;K.;v,ƌl@y;DǀDvG}T)媊`BP(x[%+2M"&_9sOSBck?]t(Q~~>;g޽(..N;qjiQTT_|1mP5p7K.R m]v5kf[oUj$('=)ccjhNH!pHx ??`c7n /ѫW/1jՂeYSsW~cǎM;IlnpeX,#/2l߾o_FP\\\n m9))$QCr[':SO=Hٸkq뭷uu7"H`YfU:tȘ^A:t({5kn aOtRl-ZE]Tgԩ^L2+Wm۶UW]'DŶ-LvH%S7b'.\BM*{ M6/ SN<`ЧOM"//ϷFJyଳѣk.l޼_Apz•W^}&Mgy'ND,CNNäezmw1uTtկ !dŽ˼Y;U蹁 I%E#IᲧEIIIFX,~|A1Ç~@3aݺuQ/K5*'`hٲ%j׮ Y_7 }%l+`>̜s?̤w;8׿H$9rubNxLbB18tAFQ ۷oo˗[n81`@-lٲ{mw}7~S)mƔT7n:Qar!;c[jtȮݻ1wJ|{Xhv, 8qcƌ%1ҬVzbSE<C=cǢX {,Ǝ[j/L0/''_=.⴯ŤTrKcΝ:t@~pK.ŧ~fǞ}yH .ݻw lwt=KKHRTXxHw,W'g:3PfMضYfСChѢѽ{wDQԪU+Ue|xO OW_Mz*~a {.UYhBJqq1>3VZiV!ŰrJc0na+mjsI#DmSwjJ{>S~(cٲk._]vMZ 'P ֋-ɓ7Nzސ!C>#k 9nMoINڵrqeo^صz!ԩSQZШ(^b/XZF.-,eJ",\|-/Y K%8+Wݾ}{4mt 8q9DŽ K[ ++ \s nvѣBN`ƍigi۶u:uuذq=vH /OĜhȈPrmRcE `NZAAfΜo'} 6(0s*,tGF?9ݻ1~ ݋}믿, K.ÇSnem~-rLy'+l޳ uMI, ZѣqbxϿrF``mmHWU <~&hsvaƍXt)-ZLI͚5qMv>|8}N:С.\C駟̙31f%%%(\qŕ&4 Bƍq7G}w؁͛7M?cǎx*dСCm߾wơCeM<̞=۸15koԨQe ;w. ѧO2KzBZ!++ 'p.ruY~:/YZ$J"Eӷ)2խq&ZYO%DJ8czF`̙gQF| <ظϲeeYz5z)##P8իH$h?~9:v숣: (**mܹ3.{xw)ԨQ]vY3VZQRR"G_8餓< bƍ1b뇾}s΁}BT0/4tf=;#s u'amF09GݺupSѪ3ƜFd1XnqߡCqF 80թSǘ?oɒ%xODpAzPr?7-͛qꩧ}D"Xp!{={LJJJ0n8<6m񘧞z̤xgOF͚5{n4l0#kxWjD ~1-JXs߾ػwGMdؠ~}5w."V̘KdCoR{ 0p@,ZH^RR/ս{!%{ܹs1jԨrǎKnIeᤓNB^s۶m/{aفI>yeFDشiruBGtHQNB2_<7mR3 ȱW8i߿jժEK?;uȢb SFѬY3xmسg&NXAxj2)e 8wLN.iFgaĉXn]Y9s nJMN:Y({4'S풧\EIn`(..yy{7' E֭Ze|mXxq pΑjh999h֬5k˯WXX\Iq߾}|&͛g̻X^سg1ȑ#ѰaC9w曁 LƓO>c=ž+DD`V+J-쌞BZXr9D`ra<c 'ku5reZ_aa!>䓄i[ zjl۶ GuTƟtp^17RW^?~2[}_*^xᅔ;ߎAU3n QbT3)ң>AR7I\CD"?JE^8bΜ9X:x>VΝK2Z߾}qQGtݺu1cF=ƍѠA߿'f&X Sb;s8ƍ+nH5k'xo^!ó'< QdV/(s%I̪rAG 1?c{ 0ؘ1c0ecΜ98eK^^^ 47oF7noadի/㣏>͛^m۶8p׆>H s$@OS&>CǏ^ʜXbRmu砖9jX4KȢ",^˖-+jҤIJǭ]W)2P,_hѢ}?!wy'㎐C ̾LG+L/K׶Ĩ:hsn2$ٓ4SNiy)ZlAc-[ɓ'gϞ  '''W{{bŊ>u0j(,\0%{qƍq-nC2ƦA(:0b_dMSR> 4˃X̱'QPqlڴ ;^ZKڵkcժU Uضmۖ)IhК"[lSNǟrssS2;qؽTLbߢE`تU+r-/?)$)CnU:Xo#Ue"ȉB .nʸퟄY6n, 3AnݺPZ\xᅁs/^I&eJJJf͚lȿ ,_Hҩѣnv}8˭!l(2mv4Z˕(i2kaw.J4cm.=6ic1s]jj,H)`֭ %/8LO 㾍7b},l޼96&ү@hРx|~gl!L gLSR`U4H۩Oq,r Fhժ%zt.MeW`ڵʸԬYcƌ~q{aa!ΝXҠ)S~UJun"ԨQ#0k m۶ŝwމɓ' ф4Hp~$sIQNhVuc HuE׮]жMXΝ;J76nYKm۶wށmF w{޽{CeӦMxw3\ 6Ll݊is$XSJORt99hӺ5Zj6[Y&6zb'.s[o%F3vn͸ϰg֬Y"AEؽ=wcÁ i 4i={=׿F֭+,Sy_ $oa\r7X8kC{WI ZjVZ΅mgntƍѠA}_D\f-f̘]Sۇ?ˀ_%5 #)qαn:?} ~z /^ziBcs7j(0e>}K/aݺu{CU9DF{=.ͽ(ܓMmZ 8_9ǁ0{\ݛ|DxwP˖-qg\R_l/f>SN sq_xݻ/bΜ9{n mڴgq{9կ~P eU/vcp%3_ yr)߅ʕB97ӧWslذMv|W_}5~4Ps9:th[n%qO?o-=֭[g ƮY&,UΝ;Z <@zJ]t{=L8ƍ?믿} Q$fC!IMȅK#EWs$$EJt{HYݫg|iWԖ-[>|8ᄡ3⤊~>[t^6m :x1Ƞ5jGI8oŋ/2?eY4hN>d 2ݻw}lNA:HIRrQ&›#:tq>Qm۷cSR)nڴ ?8zwy'gM6x^*]WBzK̚5Tq}6̚5̽{F-d3zkuQ%fAz\ELK8'%EE>.nb۶ҧvmdA˙~ɧfXyƋ/_~9t_|1 VsEn݌b>.6rl\ ++KUJ.z۶mã>H!BTH'0! m,ܶWwLAOi J)KAصur)Ǖ?a(:;'|2)ԫW_OTH u3)3aL>=:tȘxBL ۗS m߾>lœ!BT5H9* "%-QI#E:빹hȜѼy32m7n܈W_}wRPeeeW_] 8ѿ;v/ ˱dCE۶mմa:| VhQVA톞+#a1#G QH98jEwArݮ(aL[o{ O<&M4V$#0n8<,@t邓O>90;?O?4k:/  0hԭmN\m6̛7/#N!* 2FexscX܆H/wqhqQ>Bűy.qoqwW_ڵkSr{o. FO>ٸo֭x.SJz׮]K 4h EF SSnpIj = -'TI؍; QA>ێ1S2+m tF5OVk׮SO=52;⪫2mO2x`7`F1O7Th4N8uԩ "UWiPb-quEHEVQ!3vmzEk׮Lȑ#^x'-^nrrrpg ,_7:,D"t O?4ʮ!҆ϮNiWr-I#.pDgWhߡ=B:B߾}qusΩط1i$kbرKQn]~۶`ŊmgqFZeɑyyyhذa(!8Ex HD€K2+IAY!92PRL΁q[#={tC6K]͛7<>7xcVv'b̘1QqkS^?-(h"xYT [BvhРڴibHT!҇Ze'™uNBH$E%c%+1j.)z[CV O>۶m?-[fr7x#zaܷpBk>5u][۷/n{1̛7ib0Pa^xfgfgWᰓ>[߃qmqۆ#!sJJQRRgX x9޶SfÆw#?`BbNvF {w /(.)1~cN1AIJPXt #7:k` 9WⰌY۰ %%(,,DXt>RJ34ĨdіKX,.X>߳F͊0;rIˊkiѪUK4r$>Y ^xZ;\ZwB>1w,L,Pz߿hdջX Q\\H$7 s$"̂g&!4Uyd9YR[I"'nۈcq")XJs%EX=}ضmq5sN 'ò`ex菏88aÆ C׫#`nY,cqqضg*,"sTX,# zYITRTW!M*)҅ϽL4ioEUԼy3 8x̞3'PB:?>Y=}+uHHY(WbU ŘZSAQa!,ֵPp`o>3 >SX<+'eܛsmr1i<׷8}f`mcˎ=:T 8ǟr?>L3ƌLq^+/Daq0?׭@מ}еDJ9:Rgf4IQ}@[oSU'R)2ʢ2zk)벪En]1sEEEx1欳K>*C7Eôؾ}{& 6u]/LhԤf}5Q؜#nt;MH!MPaYZh^xNz| p%ছnJ Ή %#Bϲz6L&EMKOtRobT]P"^ +ǫm;<{,>7FFкuk|͘6m^z%tС"D@PqgIGy=A Ic2Wι\DtC~zwl_̛?۶g~뭷pWcǎX:v{ 7p.\Zja֭h۶-FLG*4T%Y+XvJ3 FvO> [ܲe K4k8o }h߾;T!*D*^`G }|I$Yr|s7?7jN6>Z_$$!J жpөIfim\LRDW͌+P1pL%m̙1cg,)D ,O,A҇DHW@f!v% Ac6&L dCqDAOFruQ,u*H&wDb@G5iaC&T+M7xk9DU:\ j%NńvӍ. 8 ĿCqdKhMY$V^.(+rs"5YZgFf"9t{Bq$d(bS3$3L)"?(dFqySN KW_>CQQQ!BTY^!Ԉ/oð9OM3<#GSNIRcǎŬYʱCQ/JE֥"K#^L!9)b+4JV֩Yf8Ѯ]͛7|Ay}!̚8%?AO_BmC\*}+"ae믿… KS!BPEϞHe&պLn Iњׯn999 ۼy3~?DUҢXIcW4@R_DCVp&<. g @A}; zo>pmۨ]6vYG"DIo3 X-@; >wiEEf:4RIйsgs9hРA1VB&Mҩ!B[R&EI o> SKH"(c^r%8[@*#=п: $^N]}9w,"- [틋.(Ҷm[] U"D#Rh]y?斦4)vC !svQ&K;`4ѣqgڵ -Z qD( eVnL@ʱ$E)R7g2 a&H6mx/+++EBQ-&$RRAaڍ H6d2U@>}pf͚s=7CłyEAL#($nL}S3-L#H~,Kٜ-wuN>dz'#Goۊ!Bȅ.1E,]}wJ#!sZJdq]!BV h ̲\ɐyhԋpBW38(X-f &"D p=3̙vosv:EQTx"Yz "D@-oQƉlⓩĴc %E2;u !"DejDL btR4D\ܛ:õo$m9Te7oƬYo߾.Jn1ìw&:478eҙ8Le2t>RMmoкuk 4͚5/\ WLx^:0o)*$Sz+np!\iQLf]!ij>^zI6b8a̎M> PHN$H% 9h6MuJ1$7|ӷmΝ(**종C9ǔ zR'EE1I;F:DWUk֬1n߾}{e-/9{t~BJB,z I\$B R"Uj)퐂8CTq;wVvB3pd eS<gRU:T'rsswUE  xQM*:HHduضmB_rQj5k4n߽{we-D҅%xy)>.pq]Fu֭kܾgϞ.Z~HӞ oA0i@TiD:IPp7eee) F3$9bfa^dah2g:0cӠ1V/]x< a޴PIs;ٰIuG)VT}RgYGVkAѥQDW¨9,c k,(=3saq_,X,篸%%ňbb(ۈ8l[ bXkG]D Pa4KJPXXX.aǾ \QՐ1TT}RgifV ,XVHhhh"(QDYFF1",#+ HQ|WH1GG,VXI Jb%()v>c%%`|h[BZj#++aDI,8|0K}nٲ~o{nn.ΚQUQTD}g0 4fYE.1f!uOA$J rW MV a"e(34å~B|vrqߨsB+3 rB6{CR P9¢\,bi.[Luˌ?[͉ }6 v"`s}ѵ4m"c-,, /1s\l߾]ڵ {A^^vK.}݇H$3d]hԤf}5eS =@QlB(T6E/U>ndv ,smLYB1) Q`۶m~:t˗/ǃ>B D$ 'H=/D -j"A=z Ǖ]*㥗^Ǝ:.Bdde>Fc6(%Wb)'yʴ=&c:b۶ӣj7駍wQŪ0`Xp!.]yaѢEIfK 6`Ĉxp'!`DfuRc&Ϙ޽{;oGVAŃ RnBRt1B[}* 00ί"|۶Hj%K3˲QF;v`֬Y7oV\͛7c֭GQQ>yhӦ k6`'0x?Șвx؟F޽ʵY0#uIQ}^Z=(R(DX9eqo6KUFY /?RWhڴ)?WݺuѵkWt 6ċ/tB믿>gNھ QXX{bŊ/|9'/ 4g(p3᫯'&b ,VJ4kNZ &i2q x&ݻ7ڴi#W_MJsg$u!???8^z%8p;x >3L;1Al|+!!v w.ӡ=w.,]-^;СCxG+DNNv<M_(,F2Ӱ)znmJt5#x8cfq0fE*-V Gy8tP,\0chٲ%֮]"w}7nݚk?=|C ̘9 q_fMqۭ`Iӫg<1}L<‹أܺu\}eRΑ$MgCfRn1}=w /*PD'cYT܉4}7nJz\QQQTuLԺukٳB˴w^K˅8xoOc}|X,_q_FODO2z *|%wy KxR\Ӣ9Uז>[޼C1Mh|:3L~JUjy$3fLgʔ)ի>_,*,|P UALn5O흷I)#֭׷}߾}سYكȀ2ێ3픓<m!D[]ڶmFsB3GDO+r{nXbo{aaa$ H^wߍX,%6lMyhٲ%ڴivڡQFطo-Z7N_,b;u숁/uoߎ'zƷ=''u">5lNؑ:tבp7V0۞Nk%p֜/bSў͛ࡇ1vSNG }<J5kbȑ^Ç׿5z뭤\r F.]nݺIy0n8\g;+:bR :T[J|0m i";;uG 3i, [fWΖ$ÔknGgayJv o ., $"œN: 5j(s~&Mǥ^=c8s1ic.[~đbEӺ֭oMyfXbjʣyr'șGJI$Eu=%⌄TlnCޏ;wթS<rrQ+@E%駟^.,,ĩӧ' MujckIյNB@W՜1ӓ٫+y9Y)ZNVk9[^{-ٲ,<}8('!A9I1)h6.Ҥxmaĉe&DvmqpWlZ|IW[ln{I oOڵML#͜e6_$t䤨+тmE8nk?K`ҥ0Wn s37o`X_øq[g}/BF3zi2G4ڽg]w6'(7n|9%e> Qֺ^@Z0E"!)zWX*~\"m_|_*-5)1; O=E*]!:ʸHqΜ9xG7ĝwޙ{d={ʟ~Rmڼ.w놗_;9CK,sisL.qgɉdNg!9sw}gˢClLܿ9JiO8|I!):r)q*c o&r53#1z)A<ǟennnv91\tx'аa󒽸@ CYtR 1" 76%FwJ-ׁVg5\*7k8|8ːUV9ӟb#o`ݙ/L%D7-+2OZ2Ѝ AGLӸ!)J$@gʮdL>,غu+ IDATyN;[.vFxmX 1\sՕeiСCx` |]:3\$ROL$ra1˽TV[ aJ[ex\](V1Sv.]4iҤ@'LYq뭷"/ [.*ƥ|GSN> w99m ˠY!/ OQTk$T :)βRJ3z⡤($ 0/ysKW^y~q_֭0gU¤G1b0z?sJ<"UH.eK=L*HU6/YJ``HM2WT#pgDS2%)uYqd_~9sc;Mgu&0ȷ}֜9VfIu.)CäVV}60ez#~ UO^2Gܪ`0IB~h` Lbvpg3db834pHoꈓGd>c,̜5;k\q-[FZ_3tf cTpp̼O"5ߔcFYݯ!!) $Z%O|x5ի=cSqע8_%K^97B,;76pMO*52pI-[p[H^m26իSNxO>zJQ' GSQfM<Q?Pa!|$7N2nIc}gԴI/PV/w$"Eybgǎ8q '?4zP)fϞѣG.A7 8Ç +Zzhݪ{䏁zY?c׮]>9>3?''''s|_~&&RՓ ]3bktرrf)-ZnK KB4 \;eƍ8̫9`aر2d. VfΜ3g"++ {,ƍaÆ(..'CpCʩJF??!-p0sl0h :wꈃ0mtl H1hiND gϙXE30$Iy?)?oXdP8۶UH1hQ_*jժȤ8q&L?'<g٩9((yvmx[ʯ8zꉿ=<ȣػwoII LS:1\t,YMͼd P?\ӛemZNP٪{-6{VZґD蠴_eA˖-ߣO><;wƔ)Spmuwtֵ׸ҋѹsy,bM yLr, ͨ\fZV`2 pS֭+HU -{Θ1wuWjӦ y,Y'pBQFx鿕j.<^suU2Ŭ'|l(3%};uİCpUWTvz$X<}v\<3XlRI=z4Ǝ5koO<%#o1N:5jzAtVfKIgGYՏ-2MS1R9b~VeG YT1|p}A3Ν;W_ /oӦMâE~zܹ, CѡC)b" 6o*L~ ̝5kF~~>ԩc!O)N*:И':H`:\Ӿ)S+:3_HMhf18W"EmĠYalf!1ъeWթe}.Ad--,<[&,JX3z:@PY@/~Ս+X*W)SVu\6l5!^eYyyPIxS݉`̒SMX_6& (o[Iik0wQP\RncMu[4"e<2AjH0dh Lk{" R)esG].n%jYlǫcŤT`{}܇r>\3sSyNCO2vIe~4(קou`Y, 7 |ǥ(qTkZ荴'I'ęC[J {Լ:DNc_T *0Z'xr ^+N>R2 K'=YY>\{p!es1 t{WJQ#AktFSIJYv䮢Ef1կ,gN('4݄W5u!%R|I vh&Ֆ^Sh"w;0-nMdQYOni Tlv+(YM+Oвu*I;^?/%yDAD=%6Tg%ԊK[T,-D5)s7O!.eN{mNS-')Œ(*:$R,e0}- VCZ mlדR ]eJ_TK $4 [.EetmT2Zస孧cs0nkȴgqT""#;M%HxS+J/pզ, rk&1dYH{~:q+ n2%^,AK b}PA{&3is8ګ^~G>`ހ!$F\30" Ľ29Q(RV䴙).``ٰl ܢlJG~;AzzP& WB#aV4~K%dGs8OQ>,V}ONa QTZZA+tB !U֍#\*IT/MG&"*Qs/3"Q \YZΧJ=ڑaq%G?141=}ԏ`-aNb6ͳᒹ2YWp~˼^N8"2h` :9m)*#253Ǖ|T*ÓT2QLe29 Șm`%iyڻb$eP g.Iv?Ϥ8&( >&xv2͉Ɍv s%LNHZ밁v79RxǤpHblY.Q{%C*eH^֫i,eP=۱s:K;Hfg6ׇ:(nXXnPMHA!ՃRTh~zmxMυeQUM؏9ƫ8K1-Y,˩@}V2PETnĆ T x6EW- ۍ#.wcY:y%^6ґG~ aTfE~'vMzT.֊A>nЈř B䎄y>UOqTsvq.GGp Jj LiFR&J("&Nہs0Ҍhtj&}f)j褪{UgǼsۮC0#;Li7׭^CmSIS42qNwh!FƘar\ٴS&ʼʮ'Q#V3R6Ca!G)AbȴqC k[Tց8IƊ*(,oQmYjNGOI0:^7Th)djM}wWFJ xJ_UOS3N//"k1 .tԝb&lop_wI3|* O ~9 7S~1}@GN򺮑Jt |^v~AD:BL65MbZc톾GF}M-e; H= F+:PhݻÃR*gmgrw7*D0< (ijI/Ձ>' w j %v'oK=ԝ!3jJn!IzQm&|wSdJ0v;nK@+!k ^u;]V3BS2y֎"}*28,5-ϘڜjGV9jgUe]*)Bmz{0>&(6KOGL6zV`|dxFG]?tϼ/ ޫQF_ &ESiF ( *p |CUD'߹R<,WW:Gjw8bU sNPϾ5j&;HRP$ $'DjhWsA,pp]S͙N @qm@,z2)!&|h DZ!#)zTm!ԇV&N3e2Ȓ$/ʯkd(@0T=R D{*,Q%FÙtn Q\G+AiKCVϟ^f^IiRzE 0󚷗mVG\DXҥ  ,[LZQ9k%O@JIW\8RlҸRrQz${Ln}jOqtʫ/e9uHDsD#UE!Ш=%LqCGY{Zա}Uue'ʪ<3'' "D*ձ`QIENDB`gambas-3.16.3/app/examples/Games/RobotFindsKitten/000077500000000000000000000000001411575327000217255ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/RobotFindsKitten/.directory000066400000000000000000000000411411575327000237250ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/RobotFindsKitten/.icon.png000066400000000000000000000100551411575327000234420ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛ{tU՝?{sMr$+EA'-th봝V;]\.23kk h"$wI !{o=g#Z{|~Dp!yهABKi޼rX Mh(H{3QngӺФNnFkeٔ 0Gf@ҭa0Wz [L䱯gX^*(b#-:3A0!1M \ Y} aݓ͸Loǥ`۰ .{rHY ߻=oۿ{%+vv0Rl쭡(ˮI'O bhot vcĕr=#]%u2fe\l:?҅01#GnKc(>Bw8T@IQ5S2"yѩ_}55DGA(0G )g&6`;f 3Lb[&> .^MEm*&R:27g6Ûs{=` c F.'KW 74˒LKgbEZ 9构 ;3`LڟeɥU .a`p08ô7,}QaMKā!q#y\#OkEEL }lO~&&Һ W% |ʄ[)QkCԅ~s)7{*;ÁP|%)@1}vvk~Z ΰ[Jʀ2T7^*P XJ)Rj@Ņ~s[UHqFT~JK/ڱ H)K5Y@ky/a2.** i-b_0M\R-eɀ8 9wGN"|h/-2" %԰?]YN/8F!LU99_|T+" )ϧyZB-dp`7ڡ GWcp]BKm WpQ>JPØi M:ErT2s`GKq 3gCCDH XZ$f~5ɞyRC pdRRz9ƿ/oĽϯc^7"f7jvH&*ދyr&xJe)Pb6ʳx4-M6cs78?2i H"M$~ܖu^f) 0x#c6͘e--D I9L_&et(إt6֐72 0T@JA"N^c|Ô#j;>1@TR5u<kGDt  bHeN^ XJV%b@|Z]a#,NLV;Ad^Ƌ;+9DCh'1*}[PҴZʒR D ~DH:")$S&Xm7v]E+2 ,:*I ̼ uf}0,YoiPR!,ܵho+Z DhF?0шdBo _]-W/^xz4̼yr˃1u{7dVŁӱ#}- `ImIKK)YpwˮcEG>b&_EGk3!1XJ" EU రH(C! {>_GFnaFsTkx_Z-H{e㮏)yz2D$hU'G)PJ@J!Z,-$+vT<حp[]$2܆ ?1;h8LUqߡ?P -- XQ-ȠL Y[o'zy*0Q'|#1VvP'M 0c ?ȣODB*V悏8c ܙa{0y`V (Fr-+{~;aQ4KWUmm 'XvnvY^hmT " vtvz bMl!Ɨ3}FaI=1b,_<-EF˚'~ߞ6* $ݪ8#7% vн/$!v6GkhpGhw˙D1&)-f\n ʭ&2E՗߀zЏ(E-)=@`2B#(_Rwn3G'%@Ҳ k]q3IQ6E4eΰ>+_J}5+0yw!#v[(_ɮqRu 9q9~%1S3jnAFӆ4H&bTMm^HYR00-w|%;wu~})Z% :z7d’0o">)/bG"cMWCq܅-LF3_ޓ/=rƌ+VXϔK\@vUy@W*L2W-ǔ$"9WS'"l'Pm9JJ I̝[&x #=n̯^fv2KbO^x5ƕ~8VPuf⋍crJ6/{]?'f$rBf-X0F`]Pu[]Ս&~~пPX=q.xz,ZngÖ]~3C }_ӓwޜ5~"-I^M,?[fUH*hZ*Kt5~-$ :]F''o('5N+Ș8x}vsmDJIm|_nX'(Jb*P2xLa/iq/:"k1>:mh^EhoSSҘZDXQ'/11=.=0P{Sk2z9@$]*f @P GRxEoukk%@5g&$_rt.f}KrgL8PɻWqu=CXh,w$no0o,,%HrY=+y5}z y45є}, 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" gambas-3.16.3/app/examples/Games/RobotFindsKitten/.lang/cs.po000066400000000000000000000023601411575327000236720ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/RobotFindsKitten/.lang/de.po000066400000000000000000000024741411575327000236630ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/RobotFindsKitten/.lang/es.po000066400000000000000000000022421411575327000236730ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/RobotFindsKitten/.lang/ru.po000066400000000000000000000051211411575327000237110ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Games/RobotFindsKitten/.project000066400000000000000000000006671411575327000234050ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/RobotFindsKitten/.src/000077500000000000000000000000001411575327000225725ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/RobotFindsKitten/.src/Frfk.class000066400000000000000000000115751411575327000245220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/RobotFindsKitten/.src/Frfk.form000066400000000000000000000016351411575327000243540ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Games/RobotFindsKitten/COPYING000066400000000000000000000431101411575327000227570ustar00rootroot00000000000000 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. gambas-3.16.3/app/examples/Games/RobotFindsKitten/heart.png000066400000000000000000000216751411575327000235510ustar00rootroot00000000000000PNG  IHDRK#IDATxyu?U]LLϖH,bv@LA9Dpģ( >(\Cv$BX,Q$$kwWoWzٷ>O?Tw?M)ɁH Mcq8ItyTtua$}>:~Jz{1q:KJ6  kn7~2DZ2 #D3!]O4$ N>D z@gz .U3 JqJ:;GB!/)ቶ6Z{z;pSqIa“HД:s#4ϵR@0zbwX˸xz`GEkZZGE#J嵵jAw7x_?B:q@&JJCÄ$ne0.zyVi(* TE$V^]gKe%oĈZ ao!L_U2p fZc!jko/~DcA#+wNM~H"|_G!z<쪨T J+*+UMgg'CPc MZO{HY[ko]PY'r(AH&Mܡޘ"Q-x>DkP@y:TTP B-/WѶ>mNiVS@%\i)-Hl mM DO:H/*sוW tw;.008Mlس=iv!}^Av |DԊ@@)xN(AJD3O'E3%J΁7#TЕ(C׹'S 7 m'J, m qSI1$~֖yzIMDpZr@SB܃8ILtBl麠VޞGRdv bwF@Y;w@QY9,ArUR_hyaR1$Y m@HlRX%~(g̓{P,NB4hD롭m%h}$b8)atl=jG41:+p![`סߗA(zt]}7$Օ;"0Ѣyu`LXOÎÅ$C4lf+C8Fގ?T)'#H9_~ qp@QDV$*r4N O ks%j3PZ*I]~ ش  zͺeq_?F{Y55frM& x3;o~8)۝N':nKh 8X駓g0*+t kZoF۾}Dׁ't纪JDH ǻ-:$e`;(>6rK]ou3Ia#~E ;Q0ۖű |bᑏVUYN MڦL$=!if47eZ^GZ_uBl2E"/9@ii[Uy饘gH6ӴniCRёuU76$Be^AlCS2tBA*/&_E /Mg 5>؋i vDzT#Lli !UsfMMEZN)/W3Hd$R5}:g>^[;cGKvqߙ0qEX =)Lv*$LJ"g65u(RVM/)QUWpN5|:7ǑҐV#^/&O`nhlv1D¢~ҙ*E_rқ:2G(^0 0WUj..I"ZrNT Mp}Rgm 񷴌=`9WFFq,w&BWQ  4c}.&4?ʪ/QN]G\h 8RBOtvy# SDfA Ѩ:MvIf>Y I.߅Ž8eN7:h> tԙVyyABh.8 TcSj;SkKK <(qRh>bd̥ 8 |G2UƍhaXs-(T2ù#|:v"?<mm$gp_bM##rǤ.@1d(Xظ@Gt"`)=?oj:Iudҳes]Nj9T@J f֕)w`@CϬ((.t]꒿ 8{V64dUI4"B!f2;(Mh,뎧&6c76j"*S3fW/Zc1Jtjji.-;y$\L]BpUpc=xy:!PRALIsKK}QծfuPP\逸㜇mOi"n+'Q7bZkN@G{C 'îm~]%c%7!+E7gO0|x 27tكn)Hr@#\} t.M U~?I'}襥 ;mmx~ o#L?V>g z܌$a,s.__ ?j'e9[׬A7oGTDBp7b!m0lDԔWj}HȪ}xb$p!\}5ڊx2<|mZ|?QA K'5R_h(/]aeFmC ׶Ym ׈DH|pEYmU2쳨{}x+RA03wŴxn+u^3n |[ 6a\{-z>w|?Pm7XpAvĹ׹7QK`]}5楗feT< h];v8jR >_!{}(ۆIu[s!U@%8e_r<xL ]w/;i)BzNCy9 yʅWTVsRv=8u] 8n/s-u+~= HT!Z͚`\{b1d$4ġڍdv1(:èeHr zj6I- | 7?#IAcJT˪՜XϡG%YGX.p2; gI.ɇ&xM={8K/!u"McO4*{;Ɯ+jkX,N28XZs¥Geam؀><S|u+23N 0E4エW*ZL` `5ӧ<_Z&bpҐxBZ^C'eeCg<>qCThZއGTw4(-Ŝ?u[ O6(ӃvA7HՁM3< J͊Ų6kX |('s+:ĬRHՑv -=' HpJ 8$*꘦<|`1R"8n$9Z1/ZgZ==wcwBwCIiq{$*Z`-'#&=zh+W⩨ wgEBY#1^΂C!(aKe%o Y-?D5cۣ$/ʮ^zpijѤN~ cqMT55ĆId:)fY28J璴I_O[dx ѢC!vvK *GԹֳڕW#6\4(/оM GA<<_RЫbD*ZHۣ%%qKPKgs Qf]$Ѭ|iYNىЀׯGۻ`)tnCCîhtń!*J.Gja$κfֵVkܽ}${I>4뮃n:،G1xGd(PDqIMPPDc"&Jj ,|f]Ը[hTUaI{>8< -$}A[^hDxT)mm$ NTyѨlo/!B9H$:-]W`^y%_ G H"Nҟ٤M[ &ABBOvF"drR&Q)/Wtv2c:| jj[h?)Gڰ܌%=*!lףQ53zR:Z Qi9ϣutE ݂إ&:=~?7wuM:ژD̫ߙ&FYG" #M3׋v-;H K$g?IlBD/*EY.Ȟ `vi^rW(-t\9fu"A$֤6&=Qm|FhZ9PDjDAE3Ka;1e Z63S#sh~( =Hy[i [q9HaJwKKUilEPhѷAAti1% pvMX{;N3[:WqZNFuҋ:29UUqt LYL/)Q_ ~Eb 7Zo $x z:G?\DĪ*5űÖPѬfxwfDc .Q3PelFap3R<my)+ޡ .QZs sSjaGݯA]"8Ѣݗ';\Ӫ8vBtT!#2XB&dG@B0Q^΃S4.:PD ./Wmmd>uH~ <-+S<.:PD$VԨc;$ 9a UO?7--$L%u0{h̀^Equ0/U&m[:s0D'؜ È֪bhIgCY/ZtX0m kԖ9.IFfx|8F\IENDB`gambas-3.16.3/app/examples/Games/RobotFindsKitten/nkis.txt000066400000000000000000000627561411575327000234520ustar00rootroot00000000000000"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. gambas-3.16.3/app/examples/Games/RobotFindsKitten/nkis_ru.txt000066400000000000000000001321251411575327000241440ustar00rootroot00000000000000«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/робот Вы попали в предмет не из котят. Не котёнок не может выкрикнуть. Вы действительно не хотите знать, что это такое. Ваш приятель Флойд здесь и хочет сыграть Хака-Бука-Бобовое дерево. Ваш страховщик! Вы видите снежинку, которая медленно тает. Вы наткнулись на постоянный акт Билла Гейтса. Вы вдруг жаждете своей далёкой родины. Вы нашли Харви, чудо-хомяка! Вы нашли... Ой, подождите, это просто кот. Вы нашли легендарное дисковое кладбище! Вы нашли рыбу! Не то, чтобы это принесло вам много пользы в этой игре. Вы нашли снег прошлых лет! Так вот, куда они все пошли.gambas-3.16.3/app/examples/Games/RobotFindsKitten/readme.txt000066400000000000000000000020751411575327000237270ustar00rootroot00000000000000gambrfk 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 gambas-3.16.3/app/examples/Games/Snake/000077500000000000000000000000001411575327000175365ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Snake/.directory000066400000000000000000000000411411575327000215360ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/Snake/.icon.png000066400000000000000000000070001411575327000212470ustar00rootroot00000000000000PNG  IHDR@@iq IDATxyp\Uvכ.Ye[^,c ` 0-[djL$a2**0JH? fR``oB2}_ݭV/{7dKX_խ~}~=sϻpWpWpWr?y~~O6c@2nS-?{ks.5Y F:;? i&?|OGBV^f21of%gq͌ꪽlDl4 \Rvxo|mgֹ8ޅ PS<_dpu//./v9=3xAJ{DG"!nC2ؙ41MY=YWRE kF&^Lz4lG^Ia ROJ'm1%fO,/:yr<-k a@WjFv05%*aiښXdQqK+:ESV]u>Z_Qsd~~Lk%-ђDMmp֬#/*,&yOSR=/?Jsȴ%aY"qo)_fS⃘8V|s.ai5%zZ03txtxg;li./xhxQ)YWo京PM-s-dztR$Ad#ȯx:E"bZV^;hI<!5łRBY9ӽM)P>J S{ad`ya o\ ~c9/óxr$*,u4>jA }l?Q_pO'w/)+.?/|W_C}D(yc vo+V0j+>)22Q˧~QF$ .(cbDjax6N7t 偕;6hT_;I5ѳH%Fڊ|n'2]SLVX4 Lݛ>W#'6!1(<iqЋ_G# &P/?!}ܸ33`VT$Z֪>,35Tm0^sn/!J T&A&۸oBC\XtP"Buw=]"-bQߧӶ)a]z GqQ>}-v׭`s1 ާ5==pV tO9)';g)D+A+Ai2= ̛kD{wY8!Xdvң>\;Aw\@bN1n~&^8y7p"w7sx&67sGٽ ݎS<-8١>xdD3r\ıS 4IG$N+;H-_Gth{Iв-J7K|4zov#(r̩^z+?zZGK"!Tl:5+g'7U6ŎgۂOKB2yB*'jʫBH ta~rGD/ExJs7 fEZ>;9 )AJ*,"GAY"4u7q8=o %ZL- DGv Ntя1Cie5ٱF}~G!ۯ4Wpյ͊R]'I%c<(M_w#Ab,η8nvx1~K9o v% {ik 3|ZS[v#AHVv^&u0fCBX ugL&{eI"/g"+Z(ZϟEss!~XW1B>и4/+#>JXty{AY"1'hۅ]Eڕlm{ݥX Ŋfw5y ;Bo ~I%1f)WQ 6ymlX&uhh\U^:?zp>YcE|s,/!+7Z~9‰b[vϘ6Der SJ.g,}Rne3U%UD?×6.,YAM~>< :Hhb u&(P KS`m-=~`m|]hiT7lɫb^qKJo ?9fd !xWcT͵Oi'9xhQ8-Q40vv^$PT|hcNRkG͈t#I; Ce9$Qmx O 2 n|)|˯É r-@soM@QQTBͿq 5!&d>i~L ffKI* }Ӗ`K8c/#\\/1l<~IENDB`gambas-3.16.3/app/examples/Games/Snake/.lang/000077500000000000000000000000001411575327000205355ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Snake/.lang/ca.po000066400000000000000000000040711411575327000214620ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: Snake\n" "POT-Creation-Date: 2002-11-01 04:27+0100\n" "PO-Revision-Date: 2011-03-20 22: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" #: 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" gambas-3.16.3/app/examples/Games/Snake/.lang/cs.po000066400000000000000000000037761411575327000215170ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/Snake/.lang/de.po000066400000000000000000000040061411575327000214650ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/Snake/.lang/ru.po000066400000000000000000000115141411575327000215250ustar00rootroot00000000000000# 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 "О программе" gambas-3.16.3/app/examples/Games/Snake/.project000066400000000000000000000005231411575327000212050ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/Snake/.src/000077500000000000000000000000001411575327000204035ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Snake/.src/FrmMain.class000066400000000000000000000247221411575327000227720ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Snake/.src/FrmMain.form000066400000000000000000000031501411575327000226200ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Games/Snake/apple.png000066400000000000000000000021651411575327000213510ustar00rootroot00000000000000PNG  IHDR =H7@YYnHۈ'U >\r0QGJб"6y# 9b#kkS%.plH:P* Dw[\vGq:ٻ] VF;޽GĬbY2Yڦ_c]]>ajL0qi3B]7b˓~ok#fHj=dZL"(_5.m?VAAMS&̍ A+0Ij!)B\$ڈϒL^ti9q{| \}򪌵[cZu\ǕV48AoN!#xH *L2XfNրjhNɴU叕$HBCR.Hl z5@ha JH2럠$T(GAB @,H:SV2G8Dh%2u/aҷfGǔ  `BPeQ :; BĪC,*KB"S\*B(j?pƫ6Pe4\>R i X :}/2O\!h eEPxe<%8&]؜i(Bd< * 3i6vښ7]QJ K2( 2 RnmmK2͎X9$WFYSePc@v?ݸ幱c], =z+/*9; jUP YuTף=E;n$wT=TN`h3`9x! OMƧo "MO?K;XFJ{R9)+;k%o}v?w<IENDB`gambas-3.16.3/app/examples/Games/Snake/body.png000066400000000000000000000021621411575327000212020ustar00rootroot00000000000000PNG  IHDRW?PLTEif }kkf fffffffffff~~fffhiifffff  //>>::** ::\\}}qqDD--QQ³BB33[[ָjj''k00UUмzz55jz&&CCiimm22 fp ,,EE``{{xxnnPP%% i{ %%66GG??..gr ##""s htnw~[pAtRNS8}pW2fXR ӗ3r/AAd'!ݿ|2 u9qA0@WUJ:IDATc` Y98y]\ybn^>~BP1fаHQ1xTtLl\|BbRrJj$HE*=#3+;'7/D$(SZV^QYU]S[W,+oimkM0qPPqӦϘ9k/XH (vzM]ol[bzzAexRDt}fskvkvWkea{g}`_`sbs/p}UWffvskjyCso`Do[È`Pqt__uygIsL•fG[`M_`uyaIvk[xlduup˅Kquie[sonXu~HRet[LaZuazyzelqy}UdS{Zbntnpu~ZiUi\UUsZvf}fkii\SzVjX{olk`u~xq[s\iUlqjQq}s}}izdesj=ue`Z{~j{bzkxnQp`ngs}s[oxZ`adSfbyRvyolfso`jnyZkup[vzypxns}lQ_~kMykznkixGvvkxLlxuUuk~tX{pv}VuuVskogzuvqzGzofpfxbzyts\{tq[~`yxX~ybzlgb{WyWnn]bjvq}lakugtfn_bnz~o{kzb[}}{b=nvuufn_sg{izfoo]ZxzU}~]iatzjyd{iSRxoop{~dkxWxNqaodjupZn~]}_nqtNqxv`}WsfietzIu~p{pfoz~xzU}xsnZp}ntd\}jQxydv]v}yosWx]d]uztool}f~Zu}_a_{tqu~ezgab]uoitaqnyeintviibfsfab~p_sis}XX}}ySfyllglZezGvdsu\\_zXZpjIsauvuI~qkyxUvxiulokK~q_ieP{uikoykpPu[ubxjipxto]l{\kll\z]z3pXizIs`u}8LSe~bkqk\HusQHpt}UPlIutu~n][}dUtz~>V{}~dvd}{{epiCPyqGzt{op\~]uZNvXDjei{Poo{e}vn_}fS\`nzBnxt}qksMifWuKgvqobd{yiquWVaipLup]uxy_`g[}v>`vgUdgyB{vopX~a{QpqU_~}Xunov?tzZofUnbzuFz[dnbyyxktd}sXbpiziksoUzspvkZzjexvHzxlllUvvzsnb~~Niv{n_\oziz\vljftxbdbl~lx}aK`zk}\v{jI{n`gxQvldR]oSdRs::bfGdP}ptFlRx?uɅf[Pxl_}VPotfzDpe{kL~Qp}gzaBGZ]l0gnXnyAtz_sBqšiiu`osifoCxjbgU~G_qZ}iaSje`WplPxvX]sZu[Dzq}P~d{Ks[knlPxkbz\ZfI`pjb}XqXzgsIjiXsZjzsq`iLbpVL}Xxioa\snej[pgnW?kipK`enZxealRD]ei=x_`j`i_tx8v{DžSqDx[~xFossBxboMpyx2zxvkXtQks}x&y~ySLgUgvunyd{dvWiڋNnpZBI~qjzWWaZy_{gMv=ƒ_Sok{Vvxkjt[=i~\[AQUq\bL\nb5qUuRNs]~qn?z̔fyL[veBgyt}[ZsQo~un9Qoqqtn`oZ}tXyb{zQWo}bv{nzllpe{pnxivs]}yovyoxynn~izzsWqlf{vy{kx]_s`oqiqqzj{j[zfjqqjoq{~ey}{u}sbqgs~ntva\uoRxvfuly~jgtksyx\{nuuyxn{vZ{}tptynxvly`t~bsiqxvsydqkuv~so}z[{q]i]]nUnWzp[y]{}5UiaPxWZUvx_Z]jnFdyЃsHtznv~}V]j`l/UXH[k{yzfUU[vj5{qĂoj]RilqglbFuZgzUjjtlS{pbgSfgPo9ql{_e]xnbuSk{odpibf{RdokpWyUu_x{vpodz}ei~Noajffkgn~ynRWyleSua]~vlzb{zjq_\eqstUqyk{~gqlj}~LiupRzkpyqKpnfgXyVlyZi}vjz]kvSou_l}Pss~dfyWsaV{intuzXvyu}vSq{un`yXfezjqoUi~WxtniavZzeVfXybvAxxR{}?ftZtnu>V[aRXPtxR~i\y}MtyyWyV]qtak_t`s}]kXdtppGn[{z}{DqpZ}{}p~skpXzz\[npXs`bqoKuso}ZqqgkNe}uz[tsuy``dtgPxdf`usigzoibyo[gtk{]~svf{}VnpboW{vpvi~]zxif]stejalgquzp`zglx\i]_}qo}lqvugpiQv}ioviqpvqRidxksa~}ey[ys`osyU~~{aefty~{as{v[yy{fXk~sylttf{uVnqn{isskppSqttgy\ps]oiV{pzi_u}[~ietWt}}lbq_~lloZ~jv~pitygW~~yu]zo{izvbauyyWzxodj~\kn~v}Rtje~pUtx\klbytIy}uje~gljx~M{zaplfszu{tUnv{Vsuyb{tggsy_yn`uu{Zutx}da~gntzQyoqibttqvqSv{ggexkjxx~o{_ubiep{ev{v{vgyenebgvnt~eitqnvZsxkj~bggxeaxvsitjl]y\}npuspky[~Xjkoluzuzda}dalxjkxtaxn}ut`j~pdzox]fu{gfou{}j{ezk[p]zgqsvft_kfn`}ouvugil{qlVqksl]l}yytWtqdfsflvsi{x{z\tp~]jlbul~~f~syx\}tkVp~syqf}vi~~vuN}}~jgsgslzxsX{}sdpqoa{de~o}jbyvV}u\okotsfzvd{qfdilxvytjqntd_lnsk~`uvzo{n`yyso[eg{o_{lqvzX}{nygb}vbnyblu`k}oUoxlxt`}pyuP{bgz]xuvqs[~{n]tq~sbngxtnbi~~}_}}yadztssqj{jxn~nUt~bvqep{yl{t]o{lj~gvkj~yanpo~p}X}tbzyZzqsx\xxkufbjig~}oujzfuo[nspl\}u~xlxZx{}k]fo{v}_~yptx}S}otd_sjkza{le~{pqXqzix\qjz~S~[jv_zsvjilazuzj]ltkklaxztoeye{y~Xlqzj}_p{ote]asyX}xtjf`u{fb`tslz_vsvbyivvtXkguQ}uuxR~pijSsujvbsfz~ezatlvtZfzb{\sixy[{]gbvqkduj}qi[vsxbn{_~_yoiqbdxob{qoXequ`zkgy{b~l[Rzbl]{te~lXjkxanqq~W}lqulSkfpzMuxnj[txlb]buyV~vpk[{nye]tnj_spu\~astzlPdff}Pyynx}RudeZqspybti{oz_vs{p[iy_s[{qdlSu}yVWdng~n[vpto~qQxxaf_dtvnu`lqubxoxfVvy[zz\s{XyNtyMgxgvl_lqisje\dbl~p_puiX{pegiZb}ta}bgxlUj\ttV~~x~q}oW{xjp_ank]dtxs{b~et{zoNvjdqW~yosPu{`\dsplxfsly{ov[}p{pWo\le{~keo\lv\Rupd{v_zusevR}s\j{kjuovtg}juqetbf]zXxqgtvQvZipSjutyl]s}oo`eftdeuuy{egv{txStlaeZp~ojXn_Rngko}]tyvxuzRvxg`g}bjnzulpl{bqoeRxuZ}~`x}`xUtzUezoxgzjonixgf_ue`exzZuq~u~XvbilSg}tdbqyk_fbsn~[xt~v~e_xns[dq`iaozysfgtgRqiaxVx}}k{~V{]eeuelvi~jnpos`zkybZsxWy~e}}yby}[txU`otakluszif`{n~]i}t[~ptzvo\lijlVfq_lnqZj_pq~Pyxuvj]~}upgasjgaqsyu`izuznVln]zVy}gtzZ{~{]baqfxqfnqpvpfozedovX{{ezvyay}dvvUeqn`jgtzxek]~p{Wpnz_iyyvseeopn[j~sXnp}~xXkfnyPuxni_yxxoe_opoz\yquqbi~quq`kqavWv{fj`{{bbeoj}p_qz~osydp{igez\zxgxsteszkxqz_btp\s`v`x`}uUojud~gpkui{kj{g_ksyVpovzz]ulqsWjyq`jlv~y`lfyp[v{vzbizysybksog]o}v\otz{[uloqWt~~zse`x}x}saespjaxqyxaj{o~~yZpxbj\sy~ndiu{o[vqoq\u~ul_t{pdi}gfivlutalyjtWy}`t`}yio~dxxj`xtylo~ek{spdjqez{sbjlxnvjekuepZ~~`x~dvgs}dzplgoulo{nivonl~avexx}bo~nzq}dinueoatez}{ises{i}f{pnzjxjsys~ivgkuv[vfxu_z{k{t[p~puekpokpqnftu~_tvtp{d}vvunans]to}uavkysZx{yygk}{nnmw{iiuw_w|uz~dwynrbrth~rxx{ivszrgv}~opxuot~slqyu{lxx}|i|{qxl|{}ytzq}}wr}v}vuus}vww}q|otu|w~vu~v}xwo~tztx{|}szyuz{vv}v{}y{t{r~r{}y|v}~w}zvvzy}~|x~z~xu{{|{v|z}x|}|uzx}v}~|~w{~zyy{zz~y}~u}~{~x~~v{yz}|~z~~y~~z||}|{|z|z~~{}}x|}~|~z~~}|~|{}}~{||~|~}~}}~~~~|~}~~}~|~}|~~~}~}|~~~|~~~~~~~~~~~~~~{y{gambas-3.16.3/app/examples/Games/Snake/eat.wav000066400000000000000000000022501411575327000210250ustar00rootroot00000000000000RIFFWAVEfmt 2"V'W @0factdata(7o=vNd p7xP/"qNM4 " B.!/ P$ o'0?_ P31^@4>э #20Ӽ\`!0s.CA/B#~G/O3Q51r MD30q'ޮ "a7 @E0d12C s/c6bOU4!/!2|7# #Ү0_52=4 /T "p?1.sQp@4p1T" asP1C3q0f0$A " ^EBD& `0_$1C2P@V$P&/P$NU a  @d ?0r5 ` p72r&22 !B2Qf!@F_5"Q5BE#CvV # !#!B% /DS%1uELISTFINFOICRD 1996-02-07IENG Bill WolfordISFTSound Forge 4.0gambas-3.16.3/app/examples/Games/Snake/head.png000066400000000000000000000022551411575327000211510ustar00rootroot00000000000000PNG  IHDRW?PLTEif 1}lkf ff-fffffffffffKKhjiffffffIG˃O. ]"<<__x ;;,,++#c4mO{{||YYHH--PP||«ii22XX׳SS,,k//RR||88j{%%AAed|´΢tƫrZG1gq 6#t$  88ooUf "V6n  Xhr/2/$ t  iu o%p7< VVuh7qY**DD:ea'^bCtRNS=so1W>~pO(ѥ3 p@`]i:)Ǘ?Z~\=(YrnRZtFIDATc` X98yx]\=b^>~BL1fаȨXQX\|BbRrJjZzFfHE2+;'7/\ $(]QYU]S[W\*# kk0q)S偂 ӦϘ9k/Xh񒥊@AemW\zu7lܴY(lmwڹkP -[v#G?q3 5-;{.._z:˖Uܸy?ՃxIٲ?y㹁!4@M^|ʹoMagnaiV6(lkg'!~%`0?IENDB`gambas-3.16.3/app/examples/Games/Snake/start.wav000066400000000000000000000761021411575327000214200ustar00rootroot00000000000000RIFF:|WAVEfmt "V"Vfact|data|x~~~~~~~~~}~}~~~~~~~}~~~~~~~~~~~~~~~~~~~~x~~~~~}}~x}xv~x~~~~~}~}x}}~~~~~~~~~~~~}}~~~~~~~~~}~~~~~~}~~~}~}~~~~~~~x~}x}~~}~~}~~v}x}~}~~}~x}}t}tv}v}vx~~}}~}}~}}}x}}~~~}}xtvxq~t~~x}~}}}}~}~~~~~~}~qvvv}}}}t}x~~}vtxq~v~vvxnq~~~~x}~}}~~}}}}}}x~~}v}~x}~}}}}vvtqvvx}~~vvqxlqx~}}x~~~xv}}x~x}~~~~}~~}x}~~~~~~~x}~}}~~~x~~}n~tx}~}x}~~~}x}l~}}vx}}}~vnnjjxj}qvqtggtgjxttg}~~e}tv~~~}t~q}}vjggxxnqttx~l}vtx~tq~x~~t}lq~}vlevtv}xa~jnxl}}t~x`~gjq}nxqv}x}taxvxjZ}`ag~lnq}~txgx~x}xx}tvvZgnjt~q~l~x}~~}~q~v}~~ve}tqn`vt~l}qn}}`}_}ljjj`e`aeg~jtlvvq~`n~qeqxjxvqtt}}tt}qlxv~tvtgqvvv~xvnq}vvqx}jlx}v}}v~xqx}lxa~xt}}}t}~vqvx~}x~v}}tq}vx}}q}qtq~vxxxv~n~vv}qqxt}~xxv~}}xvvn~j}}vqxtqxqvxqx~}t}vxq}v}lq}lxvq}~}vtv}jxtgtn}tt}~t}}vxxqxtvxjxv}n~}xxxq~tt}~}~xt~x~xxv~x~x~}~}x}~}~v~v~v~~~~~~~~x~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}~~}}}x}}}}}}}}xxxxx}xxxxxxxxx}xxxxxxxxxxxxxxxxxxxxxxxxxxx}}}}}}}}}xx}}}x}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}x~}~}}x{}xvxxx}}~yy~tx~sxxxx~xx~tyzy~tt~}y}xvvsvv{vvq{lq{{{v{{{{~~~~y~~~~~~~puzz{lxzvppll{lqvqvggugl{vvgfuuupvlgg{{qqvv{lvvzupy~~~~s}}in}}s}jets}s}y`~~j~o~zkuzagkpq{pv{vb{v{l_bdinsqv{g{{{{xvv]gqlvpl{qvvixssdvxnssddnnnndiddiinxnxxsdssis}n}xsxvxvqn{xvvugqvvvzuqqvvq}ll{vv{pzl{b{vvvquz{uvquzqttzqs~y~~y~zlys}vqzqtyp}yx}synqlytoxxvj{uiyqut~~vv{{~q{xx}k{uq}{{sxzv{~}z}}yvz}x}}}}}~}{}}ttnv~~~~~~~}}~~xxvv{}xvv}}x~vxx}}xv~~xv}}}x}}vvvtx~~xtqnntxv}vqnqqsnnqttqqtvvnjnxxxvqntqnq~xqqqqqqljltnqx~}vvtnlqv}vnjjglnlnnljegnntqqtvx}tqnlnntvqngejnljnttvvxvx~vtv~~qqqqnnqnv~xjjnnnx}~xxvtttqqv~~~}~}vx}~vx~}v}}~}}~}x}}x}~~x}~x}vttv~}}x~~~~xqx~xx}~}xtv~}}~vt}tqv}}~~~~}~xt}vlv}x}xx}xnjxv}~xv}}}}~vqxxvxx~~x~q}~v}x}}~v~~x{~{{~~{{}xs}~y}{}}}~}zqs{}{{~}~~}vx~}x}~~~}~}x}}~qq~~xqqx~xvvx~~~vx~}~~vv}qt}vx}tq~xjjx~}}}xtlttjq}~xtv}~~xtx~tjjq~~}qlq}}tv}xx~~xqxvv}~~xx~}qv}}}x}}tv~~vlx~na`qxlelx~xqx~}xntvx~}~}xxtnjq~}xxt~}~x}v}}x}~}~}~v}~~~vv~}qtqgn~ytlln~}}qq~xv}~~~~x~~}}y~~}~}tjv~v}vx}tn~yyqt}vqx}}}~x}}~}x}txtt}tnnxvnv}xv}}x}x~}~xx}qq}}z~xpqx}}xv}}~qvvpsqv~}tv~tq}}qnv~vqv}~v}{}lj}vnnqvnt~sqq}txtyuvynq}}~}}}vlg}~t}~}xt{x~~}~}}x~z{zx}qjtxvxv}tqqx~}~}~}x}~xqt~vt~~}}~~~~~}x}v~~x~vvv}}}x~~}}}~~}~}x~qtxzxnq~~vvx~~~vt~~vvxxvz~~tnv~}~~v}}x~z~~y}~v}{yy}~{~~y{{{xy~}px}~~x~~}~~xv~yzz}}~}v~uuyvlvqknv}}zqqvvx~zpv~ptx}{{utigs~}kvxqo{{o}{v}vu{vqnptt~qqxvpy~tzvvvy~~~z~}uzq}}x}}v}~z{s}~uzv{vs~v~~}~xxxvt}vv}}xu~xusp}v~}vuxzyljolzlXn~{x{t{ukyzz~l\X`n}}oz~{y{}vpqnlffjx}}}{y}tqljx}{vu~vv~}~xqt}upxx~}}us~xx~~~{~~yy}xx~xnkxtsu~{}~xtt~}}x~~}x}}~~}~xtx~~~~t}~~}}}}}vvxxz}x~~}~~~~}vx~x~}~~}vx}x}~xt~xxx}~~xyx}quxyvxx~xvv}~}}vtt{y}x}~}~~}zzuuxxxxvxyvuxxsyzz~z}zxlvx}}xunjgo{xsqosxtztsqppnpzuqvulgioz{ztnisoon~}ttsqsuokkytt~uvtpnuzvsppjnskotpngfigtqqyxy}sgppuuysenfgpzniinlsuzv}nnsx~ppnosqqtxxxkksspz~x}}yzunvvx}~~ttppuxx~vnt~vt}}}v}x~yxt}xt~}vyq~~}}~yuu}v~}}}tqv}}txx~xt~}qqv~v}~~qnxzssoqllq}{xuxtqt}yxutyxx~~}vtqq}~t}~}yxsjv}}z~{}{pox~~~~~}vx}~~~qq}}ttnqvx}xnoyx}ytxx}~~xxnvvn~~}x~}~}x}~}lv}}s}}~xv~~~}~}~~~qn}~x}}~~~}x}}~~xx~~~~~x~}qt~vqqt}~~vnqv}ttv}o}~~}_[qx}xx~zoq}~}vxxy~}~~qtx}~~ust~}}uyv{tuvxxtxxyq~}kiy~}}}}zpyus}vt~x~{v~xovu~}~ijp~xxtsx~~v}~{~~vtxxn~tqqvv~xtvvtyz}sx~y~y~~x}tl~}}v~sffs{lio{~~~t}{y}~{}uqlt}u~}yx~~~tvx}vt}yz~~txnep~xtiio~}~ni~}ql}xxzv}~~~tdtuzzzzuz~zu~~~}~}~{~~}{~~x}vx}v{vv{xzuvyqq{ztuy}~}}nn~}}~~}~x}{onsvtt~}odnlv}~vtnv}nntxxplejx}sgt~~snxoij}totxxukkysusvsy~tpqv~uy~}x}v~ts}xv~~x~yvk~}z~y~{zolzsnzzxsoy~~~z}otxx}x~~xx~t~~}}~yy~~~yzx~~x}{~}v~}~~t}u{}y~yzvv}y}xsy}u}}y~~}}}vx}xx}x~u~}}xx~n~~}x~}~~}}{y~xtv~}x~}}y~z}}vx}~~~x~~}x}~~~x}~}ux~~}~~vx~~xyoz~}}}vov}v}uqsns}un}xv{~}x~sfju~~~vuups}~~}s}~~}~}xsuz}}~tjnv~~xuvxolstkq}~~}~~x~~~}}~~}~~~zpzy~yyxzzy}~yvuxxy{~xnquvn`ozyvznb_dt~}}xsvpjjjjz~}}}~sidp~}tv~}vxx{~stx}~~x}xxsis~}}yv{z~}y~vzy}~}xuxysv~}}~~}x{~~yy{otxjv}v}xt}}yy~vxv}yyx~~v{xz}}y~~yx~zz{}~xvxxx}}}y~~~~}ttz}~ytnqs}~xtx}vsuy~ttv}~~}~{~}~~}xx}z~~z{y{~}{quz~}~unfp{tqz}}}zsoyy{}tz{povx{}{svqspqv~}upss{}yv}{uv~{}{xt~~{tyyv{}vx}ysputt~~}}{~u}~~~{pzyy{}ytut}~~vv}zyy{~~~}}z}xy}{{}xvx}}}}~~vz~yyy~~x~ztysystqv}vy}~z~}~}vx~}}~{{~~~{{{z}xtqps~u~sszxqkls~yqt~}~{{yzsqy}~}}z}z}}}~~~~}}~~}~}xx~~~{pq~tvqsuzx}~~~z{z{yvu}~~yvxx}~v~~oj}x~~vz}~}nn~}xsx}}}xt}}tvx~xxxxynt}}~~}}x~}{z~}~~~~~~{~pt}~upou~tonn{qlvy}}jx}qtfdp{}}}vqqx}~~~zttvvz~}ns~~}}}~inz~zuv~~x{yx}{}}~~}{{~zv~}~}~}~~~{~~ty}~{{{z~t}yx~{zsuyv}x{{x~~xy{}xxsxzt}{}vy~~{{z~~{}x~}ln}}~}njv{~uxxz{}~}usx}}~zxoov~}~xvpjx~~~}nk}yx{~u~zsy~}}~~~~}~zy}z~yxzz~}}{~~{~~}~~~~~~~xv}}}~~}xyzyyyuntovxxsx{ut}~uqq{}nx~yzzus~{zz{~xy{{~{}}}~~~x~{}xz~z}}x~~x{~v}}x{~v~}{~{zyxx~}}~~}~~~~~~}~~~xvuu~y~}}~{z}~~~~~~~~~~~~}xzz~zyv~~}~}}~~~{u~~~}~}z{~}{~}~~~~~~}}}vy~{z~v{{{y~~yvvzx{~~~~y~}~uy~}~z~~~~}{}x}}~x~x}~~}}}~{~}}~y{zvz}v~~~{zxy{~~~}}yy~{z{{{zz~~~~{x{}z{}~~z~~~~}~~}{{~{{~}{{}}~zztx}x}{{y~}}xx{}~}xxytsu{~~~~~~~~}yxvy~ysq{{{{v{{~uv{~~~~~{zzxu{z~x}zyz}~}~yx}~~~{zp~y~}~}~zsx}~~~tsvx~ynty~~}xu~xvvx~}ut~}x~}~~~~~}~z}~~~}}~~}}~}~~~}zx~}~}}y~}vxz{x~xx~{{~~~~~~}~}~{yx}~~}}}~}}xx~~~yu{~}~}xqz~}}~zx}~~~~}~usuv~}xv~xs{}~v}zvtxyutu{}{ux}~z~~v}}}{x{ty}}}~}}~~{}{~~}~~x~}~}~~}~}~}z{y~~~{y~~}}z~~}{}}z}~}}{yy}~}{}~~{{~~~~z~}{{}}~}~~}~vsp{}~xy~{x{z}u{vu{{{zzxqv{{{~zy}zyxuzps}~szpuyxz{uuv{zuv{}uusu~~}}~~z~~{}~}{y{{tvvqvx{{~~~~vv~{vyu{vv~}~~{~~~~~~}~}~}~{}}{~{{{{{~~~{{{{~~~~~~~~~~~~~~~{{{{}x{{{{{{~}~~~~}~{{}xv{~vv{{z{vv{zy{~{{z~z}~{vv{}~y~~{~{~~{}{{{y}}}y~~~}x~~~~~~xxxvux}}~~~}}~~~}}~~}~~~~}}}}}}~~~}~~~{{{~~~}{x}}~~}~~~~~}}~~~~~}~~~~~~~}~~~~~~}}~~~~~xtx~~}~~}vv}~}}~~}x}}}}~~~~~~}x}~~~}x}~~~~~~~~~~}~~~}~~~~~~z}~~{}~~~~~~~~~~~~~{{~~~~~}z{{~~}}~~}}~~~~~~~~~~~~}~~~~~~~~~~}}}}}xxx}xxxxvvvvvvvvvvvvvvvvxxxxxxvxx}}xx}}}}}}}}}}}}}}}}}}}}}}xxxxxxxxxxxxxxxx}}}}}~~}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}~~~~~~~~~~~~~~}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}xxxxxxxxxxxxxxxxxxxxxxxxx}}xxxxxxxxxxxxvvvvvvvvvvvvvvvvxxxxxxxxxxxx}}}}}}}}}~~~~~~~~~~~~~~~}}}}}}}}x}xxxxvxvxvvvvvvvxzzxxxx}}}}}}~~}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}xxvv}xvvvxvtvvxxvx}}xx}~~~~~~~~~}{{{vv{}{v{vv{{{zzzzzzzuuuuuuuuuuuuuuuuzzzzzzuzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{vvvvvvvvvvvvvvvv{{{{{{{{{{{{zz{{{v{v{vvvvvvv{{{{{{{}}xx}xxx}xxxx}}x}}}~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~x~~x}~~}~~~~~}~~~~~~}~}}~~~~~~~xx}x}}~~xv~~~~~}}x~}}~~~~~{{}}}{}}}}~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~gambas-3.16.3/app/examples/Games/Solitaire/000077500000000000000000000000001411575327000204305ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Solitaire/.directory000066400000000000000000000000411411575327000224300ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Games/Solitaire/.icon.png000066400000000000000000000101611411575327000221430ustar00rootroot00000000000000PNG  IHDR@@iq8IDATxݛy]U?go}MIg,$dFb EuaQG)BKgF@5Q!,ڐξtҝޒrs^$oթz{Ͻ~g}LEk_8L&U@VZYHԗڨQ6a@ o)k+9rlwgCgk_B) wN3͆^Uf | nY+G'B"uܔg8JXǣXM_?@]}?`gZL Ktwބon=%قgyUei|fiT4SкieKq| jl!>/V]3:#~vW9oT(Ɠ`xhԳ6 b,R^}x]/]P۰8?oUFVv <3ng6g{ ꝳ>Y8w6 aʄVߌws) 笥SzDt&s50<7>Tiq 7P{CYP㉇bu1 P`@@ ,X{E6F7u8܉5t^̭Ky qРamcGM31OL99< ^>P4 V XkXc8p_|^1я-:? Nj `]:*o$,v &%t)T<"S'WHqxJc `œM!xʊ~ {^Ӏ;wⱝOd *J}zziYPF]}'$>q Ookp%H^`{G7& D<8/q)ĵ2L;ӉWR&R*wR?;qk9cHqZ4~},ZYL#%c H)ڑ*y@ R vfιֆ:g{>~ic8$28`L-sG_I$PBMݕZ W-MG.YU` nICʋ cZVJ&{vr&9~Źz\#ӮC šm/2Ue^Q_| xbՄ+1[#cb֣gI衧NSXLF^ 9hO`ڵ4Uj#`xPQϷs v$tZ=d^u=>L!(v5OQS/4awfץ+?In}}o|^qkk28MRIFn6,Z@ 7"_БkmV3U<8iw#2F$qҐ*5Ύ.\קhj)>)ň cɣ'XAjY8tZ_%k2z;pEt_pZ}S&8>92` :*Hisdb%H\ -8G6!D`++#%@KRD<@R8QcәUK;DFR!# j#3yCq12^E8g mT8R}|RbBHc\cBq! F\@B$!$Q3-u"$2v{m), >'DWS.ZAV~ u V}F>Ra > kRqR&E_qrKGJp~c(&# BIrBddfҿ-Rn!J]Hi ɚVM )V>T3 ? ]x.D@/ X|q:[QP>c u 9 O0H)$66ULd !%,RDr]S.J 2(upn;3LR&^LC*S` JL#$(@FV&{R2n>pӲռqd? 4ek-M'dTPspPL~RG*jwU B*@`O%R#MAao)b3dGT"9mqZGjۨ7=$rpJ j;X4g1/<h̼s0mr^{fHg!] , K2 ) CsDzhD`Uŕ<;6_ 3tKWX+֎LbGsμw3—'jP϶dNau+cMƻI t&9p?هR0mV̬SŽئ(J͈1z}kZBȋRD1KV[*nNdfڳk b(9 faq)B>~)݊;{}T(7\C8 O %'/EWE OX'[QT21< $b"zyxmWMM c`|ƟMEb [F_r)Y>{%siݍCǼko~fj bLw i'+)x 3)/t=sasyA 5>y=M)m5of ʫ!e-To=dRȑaG n+Œ )ΰ< c<˧q]{PsBM75SWm;ޢJ a -?ۤqADsv[/3i%SѰ2[>5 Oad5\q;dHaR!lc`( tuP, 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" gambas-3.16.3/app/examples/Games/Solitaire/.lang/cs.po000066400000000000000000000032031411575327000223720ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/Solitaire/.lang/de.po000066400000000000000000000032351411575327000223620ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/Solitaire/.lang/es.po000066400000000000000000000025401411575327000223770ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Games/Solitaire/.lang/ru.po000066400000000000000000000065431411575327000224250ustar00rootroot00000000000000# 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 "Плюс" gambas-3.16.3/app/examples/Games/Solitaire/.project000066400000000000000000000006471411575327000221060ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Games/Solitaire/.src/000077500000000000000000000000001411575327000212755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/Solitaire/.src/CBoardDesign.class000066400000000000000000000006311411575327000246100ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Solitaire/.src/CMove.class000066400000000000000000000002051411575327000233320ustar00rootroot00000000000000' Gambas class file Public Source As Byte ' Start cell Public Target As Byte ' Finish cell Public Captured As Byte ' Ball taken gambas-3.16.3/app/examples/Games/Solitaire/.src/FBoardSelect.class000066400000000000000000000010611411575327000246170ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Solitaire/.src/FBoardSelect.form000066400000000000000000000006241411575327000244610ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Games/Solitaire/.src/FGameArea.class000066400000000000000000000226061411575327000241020ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Solitaire/.src/FGameArea.form000066400000000000000000000023671411575327000237420ustar00rootroot00000000000000# 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"] } } } gambas-3.16.3/app/examples/Games/Solitaire/.src/Global.class000066400000000000000000000011201411575327000235160ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Solitaire/.src/MBoards.module000066400000000000000000000021541411575327000240350ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Games/Solitaire/ball.png000066400000000000000000000063771411575327000220650ustar00rootroot00000000000000PNG  IHDR00W IDAThYk]u;Oxmܦ$1CRJ jJ>J"}HG6HQDQ+~)m~) 9ĂL'̮G<}eXCԐh4d} YCCkICl%Ѱ(s:l#S;nz>vO O+aiu_if~iXc>B61!ӘjȺ4f Y!S 4DUhE,2pnkj'ß&q_ÿܿAo!ߤ1 1懲 YB5䙆 3HBf!B4DtED `LL}+/#w_yp7N"||0|@cbޭ! YՠCyԘ !fԐQCt5SP]`@4ܹOlM7zɧmw>ͥ?•^*UtH("*" iu j4<\cޥ!ѐk%aѸ'\iz8z79|dױl8x c! .@"DT(EDQHs5"!LD Ia0Q/=ʋON?wù.3Ӟ{ϜVB[C|KC{ECV TD5-\uGF4Bj*ARHݗW ofk?h7O+J5k1$D0V>PT]V.[vH/ <SNjZ;@JNkŎqu*)$ DN`EioMk;.pNlH`~q0H`d 'jm)Y6}uZ[[ K,pKB3ӽ}$O--/,tѫA$3N]n+@t^lbեP5@&,-[^%7/ڷ]1}S @YEeUY;FԖo[ x*V[)ISpn]>݈wo[I.$ #J.os wP;wn(\JhԱ[qO=Ewk%MΎMe8|zIzzFz$]UkAjܤm PBETw>;Cbep "I*!v5r}mھu#Uw*5"^mn6c鞮 СK/qni-5E=Y喉%[-xk*V[f(,ZʦYVΎ m:~7$}v߳{FMlnM\g6 ;zT}TnUp+݊b. l-Ã8G}-cO\{5;'&G H.Aj.u[v~sVuZ}FzrY-m@O4ܽk/}uO%Ƕ Mӌ[9^.Ҳ[jɭ4JvZ]Y|KeG۪6RahY*=9K;op{*q=:=/< 74$tD^CA:ն0xtHG>+PBqT5j"LryAeG>'nz8U` }iҽrK^Ւ[Z1K[̞Fg#>V{ڲ5A[ ݦibߞ]'nO߆_z^:?662::nVW; 3[IZe5Ls5ɠ?p͇_sdž/@[;&'&ͦAZMQep{ ze>G ݦ49<40~ߺe~7?tۯ7ϻ߸ĉ[e9E€h }GDkO"BBCDlј{\RHJ"eJ/˒eRٱ8i8MӴEh M]hQ7@įuZ˩iٮ㺲d,[E%%w3\$Cd1V޻;wo9s܁`3 B.v;>dE}hWw98e~e΁&u .| $hc_;.buuL9ظЕg;w6ĮJ ܔ|8/;c"E]/vswj";FYB^|k_|\@h\5F9un\\h|m!| l7KйPGQe%qkl<b px4o,Rp_;t ޘ*ZU7 "_plCRڎ3 Ggm 56Q7Ah3[k dL ,2?.PjbQ|&θRSc3))QZeXd:TY'ƵoSo1|[6 Q\}W7V7F霧&HԵYx{Ӹ+X:~?"((3(_+=Qz8sȊNπ`DRE_uW ,D*3Ƶ V"ak9zq{QZL"RO 7Z.wu9}ЌW_m,'_AdhXTy`Q~xe>ɹD (OJ*ȝϑ}gȞGS1m4:82hźw}|d3,\N`HBvyv惡*Әsh}=))@6?Q]W˳ v>4W?zs,5J%S3&]29Z?)b*( ~ʫ-v_ʁJEqh .9DdIu`)|)+%Lhr梐6ڻ8}5VU)R55uv=N!QJ!6!( r̫1އ>뚷I<=}#2ZĬh$oC!+yjYr(as\ fo3>F2ӦK5NBvxtlUs9؛:S;>Cίx [[0%DÃ6;R Y4l7ƻ2quh)qn~Oc~?J@R _a^z+W7o!xy9`^l`[z"2:"JGƉtjRj$Cƻۯ-y7y l g B*K0Z!"~/O_I Uqs;ߟEAZ t0L2n 9q7:Re^B/gY#+C .g|m><> *RN+b :g(<}݇Y^E@DU-&딯D/ٓ+i+l}`>P|1~ts3K ?'Qk<-IZ!ϒ,tcm(H/SHWᵓ]a }/YBzs-xt %{-GK:DYBε;H/@#s '5ϠoR1͂dP^UͷYx ٶCZ =/ ]"o^#%'Q26B#]SWVо,"B|"}(c,XSb|r\*N2b9zhnj.az!2' (BLew%7xYb}T5';/rY)ՈĔƕa4@.(Eϟvґ~Ĝ:A@k>@+a,EuISx)5A3tA"22~N'S҅&by pcR8|8É']669Z%n$2rRY8.h6A++|d +!Q %u{_(m;Ē8В+VK\y&$ͫy-ľ]xU}o}]4t\Q%i%hygG}S6{ޔ(G0ZCT697~DX"02.`K~,RLX3o<TRQp^AZ[urhK!f4=¿2 hXv FyT6G''(gH֎Ξ"㫧 bQjkf&f߱+f$YٓćH-]n DO+4trbܹdP+n2Y:")A!))-)=԰k6+$+J$f~5=_dCY=8kѺh]`j7ޣK'H޴#ja*bU.ZIF_z0.2/F"ek(o|\|\8|YVnZDぷx͗(YdqSgΰA>J| ݸ9"a5O⭺0ձ8BP6k6wyo#4ݝR;-/+b4 x1Gݷ < *CW_b%DH{}+q$CsV|sp'dJҘQT+eєTt񒸶SūToӕ#W\hoHb SN{L`;(bFJ(# %N aIFf<9*FlrVƍ67Br f0&iv8iIENDB`gambas-3.16.3/app/examples/Games/StarField/.project000066400000000000000000000004131411575327000220170ustar00rootroot00000000000000# Gambas Project File 3.0 # Compiled with Gambas 3.6.90 Title=Star Field Startup=MMain Icon=enterprise.png Version=1.0.0 Component=gb.image Component=gb.image.io Component=gb.sdl Component=gb.sdl.sound Authors="Laurent Carlier\nBenoît Minisini" TabSize=2 Packager=1 gambas-3.16.3/app/examples/Games/StarField/.src/000077500000000000000000000000001411575327000212175ustar00rootroot00000000000000gambas-3.16.3/app/examples/Games/StarField/.src/MMain.module000066400000000000000000000033731411575327000234350ustar00rootroot00000000000000' Gambas module file Public screen As New Window As "screen" ' structure pour stocker les coordonnées d'une étoile ' ainsi que sa vitesse Public Struct Star x As Integer y As Integer speed As Integer End Struct ' notre champ étoilé Private Starfield As New Star[] ' le logo Private img As Image Private rotation As Integer = 0 Public Sub Main() Dim i As Integer Dim stars As Star Randomize ' Ouverture de notre fenêtre, on limite ' a 60 images par secondes maximum With screen .Framerate = 100 .Resizable = False .Show() End With img = Image.Load("logo.png") ' Remplissons notre champ étoilé For i = 0 To 100 Stars = New Star Stars.x = Int(Rnd(Screen.Width)) Stars.y = Int(Rnd(screen.Height)) Stars.speed = Int(Rnd(1, 4)) Starfield.Push(stars) Next End Public Sub Screen_Draw() Dim Stars As Star screen.Clear() For Each Stars In Starfield ' Plus une étoile est rapide (proche), plus elle est lumineuse Draw.ForeColor = &h444444& * Stars.speed ' Plus elle est proche plus sa trace est longue Draw.Line(Stars.x, Stars.y, Stars.x + (Stars.speed * 2), stars.y) Stars.x += Stars.speed ' Notre étoile est hors de l'écran If Stars.x > 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 gambas-3.16.3/app/examples/Games/StarField/enterprise.png000066400000000000000000000110171411575327000232400ustar00rootroot00000000000000PNG  IHDR@@iqIDATxڍ[iu7oEe8 J *.W؀*ET\qT.H䇑!8NN\.JQN+q1[+bKX*EH#ix{}sswN߾!vDCHl' "~W5Я{3ݲ3_8 ul%`} t/ݾa@JE By~`nU~EQ:B^S$Cp -l9H#M5?&rْtDrKW_PI45/e(u^4V ."*͐k%J䎵1]T4-ʭVha3m(ŕ)PuQVH)KV)*^V<45gdl:^U9%2}JGgBe/MLþ=&#!av')i #mZ[6SlQ]Ն2&d^/!E(ed&anM}5]cGZ+rD X&a-4Ur6v C-QY#RU's^I*ÊP1XPll~,ϐSXBfMzYPyYiu^/y0}BXMKJ~)9p:4PtZFؼfPݨ[uD[T2Z_.WK36Ǔ~Y 5HcrJ( ^fHqt!Ȭgijp]q[z(jPTV Hڪl(5YDAh-2Y@fX㌬窺 u d&+?UP P с-]-d(UP *9/]AynZ0!R$ޔ(*Tk7&R~1P@!^d z㑀l\CkfCuKC6ZG(2Ne! {45|RJו X&r;s Ќ\qkmTuj 3Z5P]_aҙuTP%%Π)VhgPUiXwhdSUNfsZ*5WΜ?{.!jl0ˆ`W׿rϽ}7G-[^ZQx*8@\$,3ʳ:0"yPe~ݷoau_|f<=7 P\DĖ=qGBV&ZxWw}3j BUJugUja``ҁ ΀MH@zb Llڋ`Ivv|aV<}nvܽw, :R&љ[b#Wp$ ,]q0{4>>^_]^1SS'{Ό ?>zmxoq'D_wDqQ~Kmækvkq'{0/-'CDC0l=.-ɵN00S"w}K(wniM_ܦ8 M\Rbaq *cN`qב$ jH8\as۷n{СC_~v7ᩧ:6uvNxEriCQ ": A "^͇Ð$XB2 Ϝ<9s_|5Cqޫo/Fqőэ( <n aOq]$"pw1sQ #CT2Ib=jkW_BmD&\$ \A>@zA/ _~=OȎasu{w '=D: q>\!z>uoҭq;ԾE a@Fӳ3)/gܞqa~y{ ^_ \ x!hB2L& )̈!$HQ"bH\ok\}w~w$wsϽ|ŞI96>Z穷}El̉gX 4aGH8AȤZCAhZx>8 9 cDaa Z+Kh" #@q)[cמ/=zI}OmZA##?3Ơ ӫ>H-83cM^>i^5$q|x! z8o|.߲e&Aqݎ.KL16˅/luWΏlӋ6Qx Kyyp Krz'%/+ʫ0y$6oNc|vfKذq3_ 4??3ggq~0|0۽vN/}q]Tgf,gϞzAI`-4cc!rDuܦ:~lwR0L""@$pA$\)M{qoF\wur4'ާ$j4!0Ԩ H﹢~an=\|8nvAЏN~#Ev&AVń{]u1,N22HGd2 M;oH* ,>C -t`ѱq|cWZ\^:l[j[ ,T/ &Y<  q Z={!{iIFtsΛ'z>q>unP02> ߁t<7y33wpk\;!@,(mJ|\Igǎ\u=᳎򱹹 q_#@ Y[41eLf#e93w:űfY B #(갔 Ñ/ 7PTzT\M;3\DՅyˍb&swdfJK$dQW$zR0Uuow(\ &lEbX>_TtKV\^VuKJ1}Uv+tCQ,P(ikISI|c%LyEV1d^2vxa"QZ^U8KF:UQ,0T,oMGv}5 %@qF(P1OY*hwl ]ˎS2es]֊3t-MJZʡgM6=ɵ11D2`K@XJ, 3B"%`laZLUb#*a V3Թ$2Ѵby. rU @fn'Hs+7&s]>_ΪǍgQ"뜖#|sqivS z 0Ll3H'<aAbIu+9:XrPaӽëFUWV"rK^MӷvƔdV,-fe5:r]1WMUW_dӣ"D H)7CE%)FQAR+B{  ED9 -lV _T1ob&sPVk1 =|+"UqƘL+[7dHƴla1IDATxwtg^IB wHD}+Sw^v(Hd@ >s?&IBx+fe;3w3{>DM4DM4DM4DM4DM4DM4Du/$D7E>0WB7aHƾ3@/p=p0x A F6րr_@wVͤ=/"&Bmԭ +~t9U%īԻ{oF5uw9(mp :S0l9@a qb&whqH! eӟ:;ZϏ׊-O^!v}#/lTs0ٞJ`luAV$8Ǎ-& !j$wLiG|S`}'ùog7`ncȆr)hҚP@+ @ѹAmI@Pmv6/s?Yi`!9y(=pp+@]5IBnj~SR a2'‘} f^x҂;+ 4cP, x  L={x-&IJ͇-R/%&`}'^*L(f I~ƾẃ͙cxNy[A= tWC"QH))Y9G.o: ڵ Oy`t Ok\};Fg`eˁ|_>P, %BUӔ}&b>kؐV^"oR@O|@ʽo~YCC@ Tpƻr 7t2!yɶDkT3nU(&\yY[t-o{#u sUxVWc,Tˀ000|* E$F p~k#5MfH]F@jf u(#>FGE1t݂k=;F1 Uk(cׁ0?cR1gİV-pC:!a {=19-<%'`O㾾-(vxl±c X}$`1#8n`d64cD!?UqZ_\`<@_ɳˍ@MFXl$xd|-S"{"O-/ę}fQ>_Kh pDO 0|Cbb"V,VZ|{Զhޱ[%n!"RզbJ!/|-p񅯑Rx+Jp}᧦y!dٲe|W̜9 P]]ƍ袋9^*jIt)IcQzWm0)+ܖwNI Lpag_>/jBV].va$y?P1tpCvb.kر#saݺuX,vN_u.|y~6+{w烧reJ7xoE jԧ1!%MwcaB#03B s 1W@[ j 7n(:uB= Ǩ Ըz]tf͚9ER&|G=]1asp^kT^W 5 6.[VDuf03u؎8gh;'RL*Ζ-[(ߴwq#׌B5!Lʷ gڝ :/٭Χsǀndt'Ԁq ߘZUR3uX5dȐQcƌR-+n|p`Ƿv_~ؗԩ<>º _u9}8wQm=. z-r{r}A=#vno+;{ټ{dAo9})_~p>&>>=D"_KuvLAآF7#uWti r$8v.z[3uYf772_>/^:m.Es984@CzOI>BLc߼C9@%EJ7MLN0{L@ 'w rTҔ f]Y%fDRJu|h uYO|%EJ+$2%- a6mۗN7>!y'.A,\ ?8@(Mze:9QXDTT BJkӼGzn]8',<a=IN,CsU9)[W)T/g+$u'CԸeuup{}T)F}dٌ͎0oLrr2v"[ʿYyըJmˉ#)E1Yu''3i.*F!Nz˨4Im߭e``m:sz`Ǯ]MJBpG90 4( ϣ:stdn_6 >=.Dĵt.-;ȀE%t:_NjE*yJd,0GJMcGJp/㔒CBmP9Yx+JNT HKno>5 >sp8Ǎ@_BYUbEF ƚؖK0<|)={~ NyF\vI 5Jn_1,'Aկ)C(,XU ;1BQ2#]8=j{[Ggqc7W]XM5o-)9JXrE -!H زe ~k0;KI8+ݼv/1:j Cم|xUKF/ׁ1E8{˜l/¤ jg}RPUUMT7$^jHKBF)o`+wɂ_-,\^ A(r3+9nnIy+KV"UOeNѽ=@t4G]Ɩn%;0mRύAˆWx|l-|t+ͱo'TvL vC2R☓ๅk!~Li3>]b3=#Dβ5,pikƢ{yqx;ZڙϮp;Po3 lvh5.UO׍<|Fҹlg("Qv@USmbH;(|;/팔ǚmQ$N3 YlEͱ$mňv(8I(M~~h( ,ۺGJE[F!Ymm9(OI>&z&d`h+zMj>Zw!̝ǘ1cp:ܹeXZԪTH}^؈ͬiF@j!׍ssBZ[L;r"1'mث1faTSSz0_ AND~ j۳Ǫis[I]u b'n"hO __T۶9%$2܅Nwfڶk}؃i(x>n*%8NegcZ O6̻_s9qEVGzK܃1@ƨQie`n#5[mѕ-vS$~$K-b].&YSK3w|Ul{Fz=RJ*$6w#.>MϤ0~< %{|w.6G5qaL$)!`6}̎#1o?S۷)eQA!iEE8 vU[Ux?B5Sgl$^j`F!'] ƨbW+ F/ʏlz ~~I)qzsWʦX¢Y*(r2eǼڌu $T0 &Bᙲj^D3dd`^o/$|Ũ~,Jt$Fk?Nt/PO{TtvOG*<~]|5#L 댬`'QQT,6!D%]cG Z4~> 7\(rԒԂB]]ؽuNҶD^r; q[Q@߂aQkbut .:qthΨE}?~y>يՏ ӱF5s_)%囖Z; )Y QQ2?y^CV;CFG]VP Xc:u6tσTyUox>;t> .Pퟍa1eP+fUdfe(- {|z@y hޖ&fUiuF`OjÎ^ hZDŽhdTqAђ '.;Z _I)A1)^+z=OzC1cQA>(giw,FBju-"qt{1R?&TySp8ZS^wTl_Cηo~[:IW;RUW1tg1R?O.8GS hx &NGX%R'󓗄+7=z~R_ၜH0L9hm_pĶ d*-{;Wn =î^Vx4YB(*U;7S(`"A@3r_|;pl ~WBWF 4_aW#}?5+0|}G_FMsF/#PZ)0GNn;v5a(@~~znxgRÍIA̬<= cZR6=r [LR];",6?8]^7l(%_.rg?9sӁ^)2{| "F//"mm]sVe?ctzġtmCͿOvQA*r90"AoY0^U Q~A{-[m˧cQ`w +\?c+AE &]JI`o֪?z9s}@xy1î&mϩ(~)"$}/"k*v6,"~ 1B1^Ex }< q~(%L|:RJ2Jl+<8* !FđFI!0:O7Sv!C !9Wx&7^3QIW^LBWj*}=-:.RxtZ0{1b Xh1'|0}u5A<_b^F ~J/fЪ#-n}ܿn Cj@0]#Iu"J (۲/^%82Pׁ-/_#Gj:&SW] 9ߕ&!p,h3c 1:+xXs;]9ɷxi`+Ģ .fS^'"v ]xZMjѐRZȟ5Y_F;^$0tW^7/#iŽb-SPRno.(H]Gz=HiXUdBj [hvcJ$a#0u&Ft [[[Ouf:7~:5G iBtҵ?iSn|,]@ɳМl*%*n_L|Ev9*ٵV(*% E5>U0&a<ѱp\Ak̯Yt\fo;fjȜ"U[:"rJVF+0y AL{8Jm&6Fh9֢99xˊ0c 031Ķo];a43-8| z9V$v|V/_ɷ)t;D-DAxTo`ۏPq1BQ1c !PLfrEIO }sη.{L3UOkϥt_"/LLXD; {r[L 7.a.Fz2mԽN QvL8Szetwޝt9{v8a:%ծ\XT@麅.EKqU;7&_蔈c=n,\%Anߝ)_\o8oD$ Iv+./{Ti`d/d&>uqcK4`mnre9 \xʘyw5<y1ܷ>Gb\z /̌TZqΜݗ ɥJDD|׾AIIrнn hΘ6ьk˥bI Jb O`Rj|F0eG7ЀR^Ab^{)_ hspڱP-t_"0)׃t};vd:c)ZHŷ jb fmcqV U ]cEh -BޢÝ9c13Q)"8\a(ɱwp^]%q!H)Q%+Q,~dEf{\X¢F!_( B12Cܙ8r2(Y1?)*YKHd'KB sKŒ|fߕ+Lhɏ $Tp}>VW{5T-o#K,vьm[%Xo/hlIBcdյñk`۞ƌD[0 f߲tɂPMݎC>3St. ģ=Q*(o>n?Gnt=+k$Or$|&{ܯmG;ZLLL`eƒ2˅ϚŞaCբ%,)r;$ 'GbBU;vUmʚXy ӹ{oGMOgDJ$HbWI5En4Nx+K/CoOHN/]1 J:ѐɠS].%Lk0 @MF5QQU"gW7n1p\r$Z}IIawSm'jR~NB#:v/ B\trYO=F I ͜3 .7]b )v٠XQҦ܆|.pfBfOjso-%;{Na> /PBJ^/gl:1,++B9u@kÙk3'C s[: +w ~)"/$BB'FuCŸJ|Ǟeex]Nn`vͤNm-C;Xss/woSjd%p6+d". ftjay2[ *>^͐ML"'Y,a?kΪsD3ũ@(?쉭'ٿ!e't k>zŝjZ,D4]Hc@M,,aѸ 6lI˧Klw]4i^QRixm~wu0eXDjTAJiTIw;_/Iŷi=#gRV9]DEY-+ wa*IT0 ×g;3(9\,bsWF_ C@WI]NΜ(ȧLqy%>p:H'TJbcϣu3{N!t) :cIU)])ɗtzZ,)xn,Aïz&˿ jw6KXtmI'nn厵wG{b{2@+"\PqHHz!兴 tOz֭ }qݔzi*>s{j"ՙC;S`ImRKvUjwCI}^t]Ə^Ix׺D?9 :?9R71=f, EQ(\OtS`>j$$:%UnN~3ogH=U4)qtPT~:sL<b1)j7_m+F活0]'=JB\l)- ] f]sBi>}G0NLbB(d~2w791|`ru>ΜݭBǿYk8f=CCqoJopH]CF"L&bE(jY~B|L{\X#0> |2D}4J$&YU,s[PMikaT"XO̰q݊bJ=pj|Rr~L>Bɷ[< ?S@H-6 [l2~-'ȀE6>4."klщ@8f-#+tk(+[ 3I!!LfrО_\ P,6>{-}'|AS]-3 v`n&+J/l:<=߭ly \YCA;f C"Zte'yOƎNu5"vK }FzixߑD-x.jeo7>"绷Č6!a],7ct=#9]R`4\9`҅k,&Eh>5:/FD_ࢨ~b9!@X0|^ܤXlCuk!FxyLmQ] %<ޔly_™+(:z^?XW-9.9]_x_ܹ߀1kDa(Lfp{~1,XB6H5BRp":oTjS'buqćpsPYDɢ%?]{\'fb+ܡU izُDj/jn&LIpgbIf`U򁗝Y{lmQ4qGd[l~y(7p0ݕ+Y9o_V#|xˋ@P,6ڰ[߲>OxgZic5qh?h Rk WHlr@ӮfImzƍQC#&X2aBu" xB!3~cG/Ŝ7>9$ IRs'(ߴt-0r`3JT )5_tbXBmczNh=RgϺAWY*T?crk킈#o1l_'5/Ȱ.U^Aiˁ oY!h:"CrQ )%JV!#(?oV0)C/EEhՕU8ӰǷIx1Ϫ<%KK-L-߲<)E'X) lj_E1"tW5FXX7JU03k01Of{SF6NVwMP!u98%i+V;%ko}0N(`0/ed`"b Ɨ:0kXaN/_nU)Σ*c3˱cL\8^_ EFDB-/*c3ܾ w/0Yu+ lM4DM4DM4DM4DM4DM4DM4}6gbƊIENDB`gambas-3.16.3/app/examples/Image/000077500000000000000000000000001411575327000164635ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/ImageViewer/000077500000000000000000000000001411575327000206675ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/ImageViewer/.directory000066400000000000000000000000411411575327000226670ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Image/ImageViewer/.icon.png000066400000000000000000000105031411575327000224020ustar00rootroot00000000000000PNG  IHDR@@iq IDATxݛytTǕU[ݭnZXbK;dM,d$sdI398v'dxb'l'0Z,hGuIH2@s~ޫu^ Ä51Z6}unY7{MBPx2nN ݦ^:|l Z |fU1)˾ƕdN| vDkN/lJ?:ڀѰ<x9(H$ٱ k^8 7"YT #Fü-gJij:H`G=\[˦J ׼R/Uʗ*?8c)*nF;uw)b+M$5}ě[̲y9GmӔGΫS!Yn/(MS>( Od FI8)P^=$e `xpAyHӆ<>Gn.!#æF키n,Zhm8ɚyilXDRhaJ1F*d+.\0x\"LN.>bTy{D;=ɱffOs0/֐802g_@10o(^Ά[?FohCnoQꅙ邧A4uZ[ӌO:~zoG_z,6]O_}_q̘pq xSp1Vn@kl3/^>.8SřpNa8cbpf08㴀5-S&qK 2p4Q -٥~5^)Xdw=*p)qU tLx֎z-59f0QKISRu5Xʘ*Tׯ.ae+-CWCLwr :IIGZ1ӒjR0(۹y#.޸nb Y70%bDAu+XG㸰(Zm m,v43/R<G~ksͪ2i lWkbKI)SV4Ѯ$B)R)Ԛ@c] e-ެka&G*܍ rH#d?^ ǎO0D#9QOg[/Ƣ(޾v/(i}ɞz2yT4iSO =@@/KWUF)3#y*0.{5:4FcdK z:1m~^FS(JZn?@oV2#v9!FR;a$w޾y(ozvP.'M#HObMHYm,!p6|}yZ`IRx}G(d'ZWНQ9Dd@B-`X,B{py}f*sFs!/ @ƍTihŎ9DCJ2ЛyӨ0$`𻀒Ą;BJ8RO;XErp#{0:E~q)H/.7=w+ʼ6"\{˸(|%^o5e #J=m 2 q%T@Ӊ>ݖnF D|HJ M W0Hdvv!r&zE{REOOƤJ߃7P=[́Z: -)/Gez ?!9SG@t2)Ra|LBBJ7=K5K8_n10i$l愍<_mO^0.h0K1)F{!NuuFV/I׉f>7^ 1;[Iֈ]S=ha,I ( 9Q 6Aƒpq2HSc M}12J9PLTa FQ1߂{v<˒zoq;O~-&%%|TdȌpD|h3͙?bmҪhܿ6TPJ j7}>?,&{h  )% d<Kgd]DQDzgt244D׈:5^߁Lfӿڻ\8[Y|c3{pU~' j|5=m.ژHIH4$übg}(7O{9K+QRjK 3#,R"-@沩U$ZbEܰQ_߀jA|b0%$q{)(?7yf'Yxr& \.1#}Ta޿ '>v"9= dF%#͐ZQ{Cs|v=ܹ)\Uב L!fp\31o{v;۱('%+'wֺ2 5b& ~[| He}~[0XJ& 6?\5M>fhbI1FDFs QFH!0~ K2DJ2p5* PX:W7 Mӳ';fh'&iGz>qĥ@Jn޹J$0!<@10(/Wͩ/Ĉ9 jS 9n+fP{Āg~>A.ۄ'3S2W'y׍h.^@ȡa,w:ۇۛrXJx%٭kކP8hϵq[=~߼kćPV2XL, 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" gambas-3.16.3/app/examples/Image/ImageViewer/.lang/cs.po000066400000000000000000000022331411575327000226330ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Image/ImageViewer/.lang/de.po000066400000000000000000000021771411575327000226250ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Image/ImageViewer/.lang/es.po000066400000000000000000000014531411575327000226400ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Image/ImageViewer/.lang/nl.po000066400000000000000000000020711411575327000226370ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Image/ImageViewer/.lang/ru.po000066400000000000000000000052721411575327000226620ustar00rootroot00000000000000# 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 "О программе..." gambas-3.16.3/app/examples/Image/ImageViewer/.project000066400000000000000000000006551411575327000223440ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Image/ImageViewer/.src/000077500000000000000000000000001411575327000215345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/ImageViewer/.src/FViewer.class000066400000000000000000000032571411575327000241410ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/ImageViewer/.src/FViewer.form000066400000000000000000000016611411575327000237740ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Image/ImageViewer/image.png000066400000000000000000000203541411575327000224630ustar00rootroot00000000000000PNG  IHDR@@iq IDATxśy\WyܽzoI-e-&6`YpHȄIYLp&$ÒdH$@ lƋw[vk[Vw-]{,ǭ6!穧sCyNo- ^0^_*Y y_H ՠ44Sk/CsI1Zp3n%CBH`67)O-36HUCcħȲݸKď:c6wwʻڋ5 /*q<p<kYI x~M$q^c*1;]ь,_S_>՗@~TYLXG:z ‘DAb /<h+ O,Y|T&mVȴFgfA!}Fہ kEo $(G?R.z"m4z>R *.Z `bBoT< 4P$,yKsǿN3URzyO5 +&76*nX;anKF 4MX}켓K/|2v/fwӟ^z1A{O4ꋏU3e182-ǹ/B#UeAר-6'͋ ,܈N^ as uhH뺄a͞ D+(=E'J/MozFrfyD!DjW5ZV qkA|CVj X)"G7,|#>xRBPiWa:t@1P.bT*00X &g5Pt4oxï"uc 8O4N|] N+ʗ[^ȆBexd *J88N:h rk9%B)1F'a*dj"C`-FY)`ըU!Q4]0,# M@CZo5bی MFb S F\K7pW;͋:vDi%׽(_Wh) Wި~ ,uB`]4Is %H)={)Nػ?*8bpi:w7\r Z EE)͵d*?{~?_J҆RA5R=%{) hJ,DU)<[H uG]B%WxVBhZJmƑ00LP,ay'颴A``,A18>YL "ZŐ`tBqύk I!hcjQ`4@Z8:Çp<.-_{_EB,~ZojQ5 Qߋ@1=DeWvbzLҚ0 Z)uU!AJo5k4kp!tҥ1?t$i/k{3BKB<~Zg IFF(  I*ex^m4X1as𥱕d**aXMR&KSedd:rZ s1^/ɿG`[q^)#qZPYVgq?ܯ1ז竿)COF\D4MΟ!M 6mk7\}wAP,20)sWj5R !##C4: Ce9JцqAH`a̿ИM_{t9++sz͕]#yZ 8q62ẒA0!-Y7ogfgٸq#3589J#v4X)iB8!DIN}j!蓒^/XȻ ,VӮ݁';8J?PƘ+X*AZRn~?) 7n.ԛ;N@DT+ RNbU !-N̦M@fʕLN+#1na ݞG%09Jy0*ta2pBk5Q-yfY6oeݺQFj @B1/_"CBzP )1  !nB!‘/z Ѹ|=dqk֪J "kI2,k D VWs=Q'*kgl Xc)  },q~}2=_MֻDňB!/bvm ڛQfO/.f۶)Fկ W?J6( Yl E'+1y ~Snŕ9p!GidPE tq z[RB(׋X1fqu81/,D g! ͟`mpXGw75y5ۺ!^r *=xYFJ X|!KT $blEk-RHq ZC,z~'Ne& `,6Z:0LLW>ӹ/'BZu8Kap"% qz$gv_371Liw m>Ή:#p/{a~I"ݻ)̫odvW,}u:Hh1# 5X ignyP =.`aET\bfC\~fY .9iqåq`jnbrAI6O.)]ŽCh5\8OދRJ8WҨ2G䅒DCXkn^o4Jii6ssPnpoxfV*yX!A7NS‡.ϴO܃u@c FG"Bu=¡E ȺtuQtF:0s`,F2I2!"VTlsPJѨ5@[\5(ͱ C!?u&FX1Zb260 N֦5Px"g>w;h&OB"Ez ,yUtjt 0/t,a-B[*(swgˋ^xH,y#ه՛DesAJ4Έ^R:i=z4Z]:A#iճ 6l{=f3<(-Qϧ04HmuVIhcp! }UrǠziR;7_cMLtN??+n_g8Iq%e@&7B0=_fE08X8 sene wyOv8|NNq:]lqc!\`W Z/et{]ngCd%),V֊! /[ָǁ}upN^,~,)=М[Ϯ[l#~pzf?h<qXaW^ }0ZMv<˭q4˖G{7%~󂭛Ⱥt竟'zZ$p_LvZo\=D8l%֋H%Պ2(^?Wi(EC5t=mի |o¾wqv 5_sser-:1Ç?7fYGTc3u{*ub]3 H==Am[ y[ J$2Ie~̩ <-dނpJbwn-jG;wm~ۯ8Sy p&IӔ$INN:Eeh7GOV덆II^ŽvX2{O,n:@79<*SIbnHBnku:(PZcT3ByoBʈ X6R/~yI' IRrq;[{N7?؉YthuiR ~V݇;^;A8m4GN=PO}_ԇ ;qH qznӇqz7>AT 0ż-;:Kz\e%BJ0dqB$N)߼sgt\8'[ktG%O|ig6Ne^7! RJΜe=i_:E%s\/:[K6ʞiZ^P]QqrjFň"8t>2׻_!/ړ2"˧዇`nF޸︜+qbRBc0u Va꼻F+MZY=͝<8pr(;-t/O3]Jq7dvi}l-=7XY'еOwKOzx ]cȬ䛨b)|8efvstJ5b)5rOo"Z`5FG_V֟]s\&-fn1'R76_)|vzCl1?[ML-$,Բ0 iDH]s}9YJ{ta`` j)^ҍ?SكbiWzi˜KL\eӵ+~Ⴧ^StOv˳Osi%]b" а^Əw \3HrWK?8ߠ}IENDB`gambas-3.16.3/app/examples/Image/ImageViewer/test.png000066400000000000000000000001561411575327000223560ustar00rootroot00000000000000PNG  IHDRPLTEA4#IDATHc` G?FFFFFFFF*jVvIENDB`gambas-3.16.3/app/examples/Image/Lighttable/000077500000000000000000000000001411575327000205425ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/Lighttable/.directory000066400000000000000000000000411411575327000225420ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Image/Lighttable/.icon.png000066400000000000000000000105221411575327000222560ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛyUŝ?Uu{_;@7K*( $$F'd$3DI9&L&d$$BIP-(H4Ko?zo9w֭[-U .3d~5hYC/=q:d @byȘ nI r?J"VrdƓ1h2n# F V`/o?ڀѰtSkx H/'ڼ[0!=K(f/U0(w2!?p~WRܖn+?g)~;FI>}g>+1 ׍D5ğ♩P>℟mlLY?QWݙ^y.'ܿD k~:d.F=Porp1P/ߺ=o?D\@iQs!]pbGk7-]:vC?c cX85ܞKb͵P Q=BݐÁ 4?2xIlX88haJ{1Fɾ]%u9g) q1D( = SbΧr^ۍ^Gqׅ-,/'|W@ KKp€J*;?503$~P+^ƶaʃ1ڐU٬~?~BhaWe=ϵ<^],1X.m@{_qj&gn}vy{_ "{I:ՅS ߕa8`p/pa~XF߈_$ma#yX"6JO ]CWJ#uLREdQt hw$󥆮85!G)=}Poq{x)@5#ϵvuEoQ8/1 ZJʐ2LR,TP)5Տc,[)d u8^.]0sѮT:2dy [c,@\$vٱR&Σx%UL-G갥,Rra SVK&ӛ@_fLtW,CN;FmfbUˑJ`bR1%TRJZc9yO~>g sMcE W(ČK_@)7lI%CjLp0)-9y׀3{.IMlJ %=*G[R8ft1!KI_m_#/`5ƓE\KKr!R2+C@_dž>ǫ>C~q)xyNv f;c DkYt5,%C.-8{7yu,&wuSKb5ʸh;ܯDZ(L)!i)R0?@cQ{)) /^LACS3~8јQEzvx\;;BvJ.9.1TRt+) 'ŀr=Q:BՉzVMJGlE;=/ȟ/vr+}S̝x^-@(i-ef)bǜ"WtySI#UHʊFx'n!fTqw Vl,"M ;̞:?=fFI $], J@xR*axAIePl<ʴ()Gfo;⥃6~ahBQ8s'{Ѥb0E|AǪ+)ȳx%tvxbv=}7 t6f ؔF<^53W▷hO].e3ٶMX$ӿMX2Eg_qb҅6"Mڛ=Ƿ%8vaҬٸevW3RY^7H2mux:Bһ~-\&:w%G~D Y Hh=![_b&#@ 14CYv'lXR H$?ڂE%"ii %d=5O$b'U,%g n頵fw`Q1/,%pu)/?cm# 3!$RHJo)Ap-BKft}v'* 6ĴqL ">Bömb|1eq89rr4B1.fJLC#(< |D/P;Ҳhjܚ] H_wzVU1lE'~M7s<__"Tv=Op_+_Zl$Gc詁G@p_%TLr'P]BJ6o`U w i9 uCĶ()I#=G*)} Ƹo9z & qIy$1JfOɉo}DFWr8 `IBP@iOL`n~EG pl, .cUYp"650c 4.Cpb|4:υ!wh1NXc81fU' |ThFT"<80 esyrMmxbPg]NRm()oef,^x~WG9^UKBj9k0uԡ^c 'O.z1 B`Ym]s % 3R|bӲ yߐ 9m<}a^|mn Y<9<ڈ)^Kϔk xe (Pþnl 2\dž dA,ƿU.U{X{,\dTˆ FZDPY#ܒlk8+;GIȑz8cgGI.ǚؿό"rL.y xKit(yɡʷYp<N0x}}6\C11 <8֚MTJYʮ=$&GGmR3t:ћnf/mWzvʃw'G$͞IOO/iir3g̜0o4&NyrüɔNa4)[tdhp.JĩR3Xh9*}]\7/LJrrp*D ߔH0p2ǫ,uVROMqЮKff&ʦ.Cjj*\yz b<n]ϔkp;IF I,Zfȑzږ&lN圩h>C[̘!@؟7)MrH"Nj}R2Y^6/UcD0*m4WReB}0]5'82U B(Yf@˷R]3Y@ {k!o!2$(b/Pq@pӠ[s@6 Vwh^p8 s@i 9nf@{J!|6\szb#-EEGz>rFJC"̜3w5KFTH "nOտJZڅ2wqZ|wIENDB`gambas-3.16.3/app/examples/Image/Lighttable/.lang/000077500000000000000000000000001411575327000215415ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/Lighttable/.lang/ca.po000066400000000000000000000206171411575327000224720ustar00rootroot00000000000000# 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." gambas-3.16.3/app/examples/Image/Lighttable/.lang/cs.po000066400000000000000000000176051411575327000225170ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Image/Lighttable/.lang/de.po000066400000000000000000000176651411575327000225100ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Image/Lighttable/.lang/en.po000066400000000000000000000113751411575327000225120ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Image/Lighttable/.lang/nl.po000066400000000000000000000175561411575327000225300ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Image/Lighttable/.lang/ru.po000066400000000000000000000346031411575327000225350ustar00rootroot00000000000000# 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." gambas-3.16.3/app/examples/Image/Lighttable/.project000066400000000000000000000011141411575327000222060ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Image/Lighttable/.src/000077500000000000000000000000001411575327000214075ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/Lighttable/.src/FHelp.class000066400000000000000000000007431411575327000234400ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FHelp.form000066400000000000000000000007401411575327000232730ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FInfo.class000066400000000000000000000012271411575327000234410ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FInfo.form000066400000000000000000000007151411575327000233000ustar00rootroot00000000000000# 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& } } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FMain.class000066400000000000000000000534361411575327000234430ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FMain.form000066400000000000000000000072521411575327000232740ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FRename.class000066400000000000000000000020151411575327000237510ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FRename.form000066400000000000000000000006571411575327000236210ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FRenameAll.class000066400000000000000000000032741411575327000244120ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FRenameAll.form000066400000000000000000000033321411575327000242430ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FRenameAllWarning.class000066400000000000000000000002601411575327000257300ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FRenameAllWarning.form000066400000000000000000000014041411575327000255670ustar00rootroot00000000000000# 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"] } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FSlideshow.class000066400000000000000000000021121411575327000245010ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FSlideshow.form000066400000000000000000000016451411575327000243510ustar00rootroot00000000000000# 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) } } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FStart.class000066400000000000000000000051521411575327000236440ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FStart.form000066400000000000000000000014751411575327000235060ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Image/Lighttable/.src/FTime.class000066400000000000000000000006601411575327000234440ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/.src/FTime.form000066400000000000000000000025301411575327000233000ustar00rootroot00000000000000# 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)") } } gambas-3.16.3/app/examples/Image/Lighttable/.src/MMain.module000066400000000000000000000016231411575327000236210ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/CHANGELOG000066400000000000000000000001041411575327000217470ustar00rootroot00000000000000* Sun Feb 28 2010 mathias 0.1 - Initial release gambas-3.16.3/app/examples/Image/Lighttable/FStart.class000066400000000000000000000037171411575327000230040ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/Lighttable/FStart.form000066400000000000000000000012321411575327000226300ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Image/Lighttable/Help_ca.html000066400000000000000000000124701411575327000227670ustar00rootroot00000000000000 AjudaCrrega 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 cronolgicament, no estan disponibles fins que s'han carregat totes les imatges.
La crrega es pot cancellar via el men del programa (Fi).
 
s
Totes les funcions es poden cridar des dels mens 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 mens de context:
Ctrl+A Ordena les imatges alfabticament
Ctrl+C Ordena les imatges cronolgicament
Ctrl+S Projecci amb diapositives, comenant 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 segent
Esquerra Mou a la imatge anterior
I Informacions de la imatge
N Reanomena la imatge
Del Suprimeix la imatge
ESC ho cancella 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 desplaar-vos per la taula.

Ordena les imatges
Si teniu imatges de ms d'una cmera, s til primer ordenar-les cronolgicament (Men de programa). Aquesta funci llegeix la Exif-metadata de les fotografies.
Per ordenar-les manualment, noms 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 geogrficament les fotografies o quan compareu fotos de dues cmeres, observeu que una cmera 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.


gambas-3.16.3/app/examples/Image/Lighttable/Help_de.html000066400000000000000000000122541411575327000227740ustar00rootroot00000000000000 HilfeLaden der Bilder
Das Laden der Bilder luft im Hintergrund.
Whrenddessen kann man schon mit den bereits angezeigten Bildern arbeiten.
Allerdings sind einige Funktionen wie chronologisches Sortieren erst verfgbar, wenn alle Bilder geladen sind.
Das Laden der Bilder lsst sich im Programm-Men abbrechen (Ende).
 
Bedienung
Alle Funktionen lassen sich ber Kontextmens aufrufen:
Rechtsklick auf den Hintergrund des Leuchttischs: Programm-Men
Rechtsklick auf einen Rahmen oder ein Bild: Bild-Men

Kurzbefehle
Fr alle Funktionen gibt es Kurzbefehle, wie in den Kontextmens 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 lsst sich beliebig verschieben
Enter oder Mausklick auf ein Bild: vergrerte Ansicht
Alt+Enter oder auf das Grobild klicken: Vollbildansicht
Rechts gehe zum nchsten Bild
Links    gehe zum vorherigen Bild
I Bildinformationen
N Bild umbenennen
Entf: Bild lschen
ESC schliet alle Ansichten und bricht alle Vorgnge ab

Bilder ansehen und vergleichen
Bei geffneter Grobild- oder Vollbildansicht einfach mit den Tasten die Bilder durchgehen (bei groen 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 ntzlich, die Bilder zunchst 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 gewnschte Reihenfolge verschoben, lassen sich die Dateien in genau dieser Reihenfolge mit Nummern versehen und umbenennen. Die alten Dateinamen werden hierbei nach Wunsch entweder angehngt 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 zugehrigen Vorschaubilder nicht aktualisiert. Leuchttisch zeigt daher weiterhin die alten Miniaturansichten an. Abhilfe:
a) in Gwenview, Dolphin, Konqueror o.. die Vorschauansicht whlen und die Thumbnails aktualisieren lassen,
b) die Thumbnails (im Verzeichnis /home/user/.thumbnails/normal) lschen, so dass sie danach neu erstellt werden.


gambas-3.16.3/app/examples/Image/Lighttable/Help_en.html000066400000000000000000000117221411575327000230050ustar00rootroot00000000000000 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.


gambas-3.16.3/app/examples/Image/Lighttable/Help_ru.html000066400000000000000000000167771411575327000230500ustar00rootroot00000000000000 Справка Загрузка изображений
Изображения загружаются в фоновом режиме.
Пока идёт загрузка, вы уже можете работать с изображениями, которые отображаются.
Исключение: некоторые функции, такие как сортировка в хронологическом порядке, недоступны до загрузки всех изображений.
Загрузка может быть прервана через меню программы (Конец).

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

Горячие клавиши
Для всех задач есть горячие клавиши, как показано в контекстных меню:
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), чтобы впоследствии они были созданы заново.


gambas-3.16.3/app/examples/Image/Lighttable/LTicon.png000066400000000000000000000004501411575327000224370ustar00rootroot00000000000000PNG  IHDR Tg*PLTE???C184IDAT(c`RBXaP@%YɀY,--$ 0fV2/ Hf6',::̙ ctCq;L\\&=l޽ {YzØ@ -iǒ(Yo 09  s&%J 3P7)YF4tA4h0IENDB`gambas-3.16.3/app/examples/Image/Lighttable/Liesmich.txt000066400000000000000000000027211411575327000230420ustar00rootroot00000000000000Leuchttisch Dieses Tool wurde geschrieben, um Fotos anzusehen, zu sortieren und umzubenennen. Zum Sortieren können die Bilder wie Dias beliebig auf dem "Tisch" herumgeschoben werden - daher der Name. Voraussetzungen: exiftool, convert und md5sum müssen installiert sein (sind sie wohl normalerweise). Einschränkungen: Das Programm ist momentan nur für .jp(e)g-Dateien geschrieben. Das Programm wurde unter KDE geschrieben. Keine Ahnung, ob es sich unter GTK nutzen lässt. Empfehlungen: 1. Vor dem Start sollte man mit Gwenview, Konqueror, Dolphin, Nautilus, Digikam oder einem ähnlichen Programm Vorschaubilder des Bilderordners erzeugen lassen. Die können das 10x schneller als ich. Wenn dieses Programm erst Thumbnails erstellen muss, dauert es fast 1 Sekunde/Bild. 2. Zum Testen sollte man keinen Bilderordner nehmen, der hunderte Bilder enthält. Das Laden dauert (lässt sich aber auch abbrechen). 3. Während die Bilder geladen werden, kann man aber schon arbeiten: rechte Maustaste auf Hintergrund oder Bilderrahmen zeigt die Kontextmenüs. Fragen: 1. Wie lässt sich der Thumbnail-Generator von KDE (oder ein ähnlich schnelles Programm) über einen SHELL-Befehl benutzen? 2. Wenn eine Datei umbenannt wird, benennt das Programm auch das Thumbnail um (im Verzeichnis /home/user/.thumbnails/normal). Korrekterweise müsste ich auch noch die Meta-Info im Thumbnail ändern. Keine Ahnung, wie das geht. Viel Spaß (hoffentlich)! Matti math.eber@t-online.de gambas-3.16.3/app/examples/Image/Lighttable/Readme.txt000066400000000000000000000025061411575327000225030ustar00rootroot00000000000000Lighttable This tool is written to view, sort and rename photographs. For sorting, you can move the pictures freely around on the "table" like slides, that's where the name comes from. Requirements: exiftool, convert and md5sum must be installed (I think, they usually are). Restrictions: Right now, the program is written for .jp(e)g files only. The program is written under KDE - no idea, if it is useable with GTK. Recommendations: 1. Before starting, use Konqueror's preview (or Gwenview, Dolphin, Nautilus, Digikam or any similar program) to create thumbnails of your picture folder. They do that 10x times faster than I can. If this program has to create thumbnails, it takes almost 1 sec / picture. 2. For testing, don't choose a folder that contains hundreds of pictures. Loading takes time (but may be cancelled). 3. But while the pictures are loaded, you can already work. Just right-click on the background and on the frames to get context menus. Questions: 1. How to use KDE's Thumbnail Generator (or any other of those fast programs) with a SHELL command? 2. When a file is renamed, the program also renames the thumbnail (in the folder /home/user/.thumbnails/normal). Now it would be correct to also re-write the meta-info of the thumbnail. But no idea how to do that. Have fun (I hope)! Matti math.eber@t-online.de gambas-3.16.3/app/examples/Image/Lighttable/close.png000066400000000000000000000011241411575327000223530ustar00rootroot00000000000000PNG  IHDR(-SPLTE`b^ad__a^UUUZ\X_b\`a^`a^_b^_`\~^`]`b]ab^`b]_a\`a[_b]_a\^_\^a]_`\^a]^`\^a\^_\~\^[_`\}_`Z]`[{\a[^`]}z]`Z\_[~{_a\^_[]_[`b]`b]^a[@@@^a[^_[`b]ƽļƾǿûWNtRNS裾SIDATc` 021hV6v7Pן,/ (*,(* g¢3EM=,\Cg`eE" "&Ѧf1Vk[;{XGNv@X\\c^`}|*`Sr IENDB`gambas-3.16.3/app/examples/Image/Lighttable/hand1.png000066400000000000000000000002601411575327000222410ustar00rootroot00000000000000PNG  IHDR3tRNSiIDATӅ 0CM_R T^,cZѪFXGIe%QG|$ @MM-p$=&C~Cg{\DW6IENDB`gambas-3.16.3/app/examples/Image/Lighttable/help-contents.png000066400000000000000000000013461411575327000240370ustar00rootroot00000000000000PNG  IHDR(-SPLTE,>*XSKPUY#^(d.j4p9u>{AB8w6FZ]^q/49%%&":X,i'f!b'f^?HR!2 Ai5xr٤砿V,r.#CkE}3w˙6y+&Fn:}9|I{ **HpJ֩WN@Ԍ] )-KrFMSH)1OuP߮Q+8T{\h_^]!0Hegiig$4Qmqtrq(8Slz~{{!,;Kd~!-=C]w3:B".0KrPJ` 8tRNStİ݀`yIDATc``&f)i8a +(*)))+)U54ut9F&f`K+k[;{G'{.'7X? 0(?,Q`ظ$>@rJjjjZzFfV*?X ;'777/?H,P\RZZZV^ZZQ)ih 465750P@ Ew;̻IENDB`gambas-3.16.3/app/examples/Image/Lighttable/lighttable.png000066400000000000000000000146101411575327000233710ustar00rootroot00000000000000PNG  IHDR@@iqOIDATx՛yle}?g۹/pHήhX4Fl+bu;v:im4.h"-Pi\ E(p]/JȲY4jf8.Co9>OP{~#K" 88N k}$ eqa(1Y})B \ARE)Wr뫬s`YD` "QR*hE#RBH4C)B$)$Bif6_!ƂH) AǸ eok-VXBk*Ãôz]X!#\]dy"v=|aJyEf%9OjԩG[ZmKCr:90!Oȭ &&ѬU78{{}{lTWP "liaqy +I |vXkRaw]v&\QB) *Ѵ┟+Z(ǥT)!o/qTiZH@ &NFr&I5 l٨W bIO.\rYZ34҄BB=AXI"wlVĀj8IBH:Y{xƕ:*% r鍫4TKk%' ˉwX__cyi/=Ғ{'B'mGqU_w>oYs 5|"*m`4֚(^:*bcd,O QB"M^JJE/'yshMlSONE!7f06ycL;<+B46Qqir ǂxQ$G* :uY[^''k oS)x4"mq70ՀM=ˀ$Hӌ"ΐ/ 3ꆦR()%\][ll4{YQ~~I>׏>H<~&5)+7Q'?K)Q^o)a Y"Vp$*'+2#~y/C&BFĉ?8K$RJ2FF<0$$U?a}-{ȲlsM'Oz| 5n`i7q'QJ!PxC೿~@Q IMCV2acc|>kìKe^;u8s/GO1 tuy:FcI c 7o1snQBbQo4;_; i#LOIsF )hNzK{(Va/I"{\8bmNR1\B)p,pt< H)>XY[`)CJ|R3>2@?eH IrGgtdZ4?xcLOɩ#xAB1dB18!'0/?{ M7@ig4 Cf|/_BN( iBfg ǡYp~qgV]irgb j5i4[Daȵko_>ҚDdI̝ /?5pycy} )nqXr f<нBfHٱxpaI_/ gږe,4F$++ՎهdL[kB7R)1qL47<LܬЀ;޷({e0TosR޺̗cyEPbi<^IyZEJ6E͟QjXMD"Glh81y quˌI;wȲK%!- ߛS|c_q/35 %(qi5OVʣӼhF 4A;E/ҭfkXCUge_ll(V,^#bLfBa{El@fqJ2ϯ,~_0I?bA,l2g1k3~P0D;e WP^oҎv3XRc8w9^|Y(D JƤ76Hc:٨tKyAQG՜8^bF̅ܺ?䑴.\Js#+NTx9.ԚBf1Hg#dddpÇ'?(X=i1ч;tb4M[3<[1/ƦOW!fΒfli{w:xwI/Gk;!2|'BlG[orAmϘl;D{l+aӋ+Ҕ[fE A!i1ȒKH-q!P ),v |!30lcAk֚*eZ$1&MIsDaAj1X*Q184O'IA)`h%qB`ܬS*tJ{=I\/dk!X[[4ZF c#4ːRaSc0֒1IUyޞ{ Q'KӫcAiڑ,+[ߪڎmxڮ>A \鉧μ:u7"!5?prxCv<軀֖NU!W^픦{.I+)ŁngzGlvu:Z?b)%A纎kDIַs’e6H%:=^jn}YkvZK%X b}._̋/ ZԪKW8B~a|}t.hfrdSzqlJIGu6- Qrt_do0e ՕpXUV{4gx׮կ?ϙ<Օk*U.Bsz'>?vkEJ+aЊ I锓 d &YN2u=k˝ E- ܞɭYe,sp+vym3 W=\:hSTFY]\$wj!#har5Rcyfwfm7_*##"SS8.X!(yj1N)/5q+DƑ#i,-|gf*+Gٗ]r`+3T7ț^}[a-CZ+uauQ>0y 3A2fqT긛FZĢ0h ͵eoG6*?4y[|S?(K U>soc1Aʃ#8Z ] 3yY챾n*c}axph}l$iF ¤o3UYMT@dDilB-}={Zs>+O25=o< 又6%ctvXBtB:e,۔:9MJE㺒0qx*Z+ k!ji sԩHlQ]]r mwCNP6#o|/# wflkQ֝]ep6C\ T(v|⍽)ݓ7ưh%h4I% J3ب:L̸iʍo/1&X^"**8 82AF&5Ǐ/ C\y!ڔF\hG*qر=XRJ)d|{S{LP+S5ɕWAϕ(UJڡTQyhWHRa sw T<ͰGxNcnԳYܲ;O}ZeGFF=ޏTJ[_;28s>22@g6 OZԦCtDkott(è9hehhw#^ܼyDWxXro^ssK{}uѕ:v!c*]e;[?/ ssJ\e-(G1IoûΎc!M 뵎K!jve<]U18bjM1Nm  MfhkG~T@hn6) ƿyjci)G^7-:Rl@@?G(Vy#9 P-&h41٤&5h_Wo*z ҎMt sX- C ~f+ IkAq=ފ4VO[nyVEQEVƝ/?n9BGe+S+O?T@('е?fso=&]9@u (J)knEm֣'P?Z`abHNȬD@sӐhMǧyTh6.>do㡪RKE CKA< DRA$*yg'M7kҢAcu&!p:WKc#pAXbc ׌ dOy7&A#pjZ I2)f' N[PXZE,1}WKh~ۧ+h# s,9֊RRъJZ|Q<,qgcn&ccRx tM0ܦl4F[&H'%Sb$ (tvcay=yܠQkݍiEt+`Y6 ߆(S1b *kki.Y{VM"?q4EtOh~L.sl&Kkt2h 8 FIHbO:?L-d,: \jD~buGkHyCL1&+nD;F}1+P195# WG6_k I~?Ƥҭ/,`0:7=jJOCjJ{H) %&i{hUqմ{`> ~ɴK *NW+Ki)Wk ZJ*d ͎V4ayzuL.s4U^l/8 T) c4 HԜtQ?@01{xsV%QF(1@Q@’zs7;V5Va)ب s1\)kKQѮ,Iq{8>@!EZQI/.GE +Ҭ{8H`so4 @ ifnݞ*. {kAC@Si|w<+mcGF*j04'i~րEokIZߵh -tJ-20*heV[i# 8"XϬ[c oT}gfϬkRkngwlgw]d|3-"qo{Gk6b:Y)r\kMŜdgUm@UI\gSu!5I}1hRŭuk .> f-9kY=k[{\iYP7vsKn'gs}Tld0=LGEAua ‹ԸBlԚ[GXIЪ׉]w ^3@ ]:WҢH935[HF{m.}?M60ΙSo)A#<M A47F*j:֡=Ngd!C458D7{SV[Qφy[|iQji`d)i-CoC9ƪ]-VXGkq %YO\yҿk\SVoXRBĜt@tcszs$6X5Sʐ6<kỐ:3fS) m$:Sַ4X-lUbs΀gkho3'֬_yyYmAkQ2p{(V N`$tN&)*>1oyPB׉@çsZ Dž17 @kY:\h>tVZUW NV[1f/3Ն\~u:tGcAc+`@dķn8_VDzW]B̮3!oVcP6W%vh|~Y哔ϭb4]NJv9&Pw)p?\lUԧ*}qY5ۘ7a|0{WC,xhѿby٫ҴKkf!J ?*ŏOXi1ڙ,՗I |¸gXq\9kyzgz; hzyԆ?a[?i9\ʁr2]'V>pynO ;vzV%6ݛHheXϜ?K<KI1_7jG?oX?k5̅r$4ЕoKOVwqs4z4CO~rqz 5]^8;G,`$r7+@&uQK;?Eլw t=vé!ںm]֓gxG@*Z4ANLM (?x`%Ƅx`O֭q{l x1($soyShr󚩤jepQ{yN1Qyo<[^]WWL"_31S4Y ֦{m\EeT=͢0ɯ[G"׭|#[]GI[KY5}YmC 9u=O^Ɓ@M;+7> ٵ&UnRg,PcI##AOIE<-4l`.:ลLMV_+G;!aO!oZ;yOo4ׇTr HTaD% J~-Cq4PpAE%- :iБ:4lKC)]gw5Xkw6G׭[ѢI @?.1]YB,H,Ӯt+$#1SKGxt1frweۈ>e#\nl-oY|Q uVhgˍ0y5U ;h&Z T?2EtZQ V1(ջF}>]з~:+/I[(pkN;%I oSЊ:}^Y#F jiZw0sy@R@$-.wv⢻H/-k*K*lfi"#^QC{"O6wN9yO]^Qtq\ϢR4M$367)'1Qӵk<_"rQhvwZ29G44lm쬣f'ZcTu&iax &Xg@omѼrrc og1=`[4,]]l[|ā{XUks/%Ҁ%=H7Q}=?Jڷ89YIu\|ڲ1#چXGh2+jk"ݏ(Qu:FI]Eck1cs}p pQ旵"8֮6#uZsIiA>>wOV\Ir -TECe{q[}$iemd8^zt0KSY hXmaqV%l) A4>oae>| 8R_F[ hăqE\zVC-f"NVMnPf>@Y5)jh]f߼:f$M-U$gaG[vWpP+pVr%{\͸xu{z0+Jk3mu~M45QPQ$.lŔr^պ9Aw. (.[TtQ _ZӵeKpPץ_*(s}OVL?+x<)NzHGt7 v^F[yc.@=#S>C/5GP!ʹmiķRi))UܓgARP'^܊8/Q?ҜIom c Z:~O#qld׿jwq{b2[e,͙'LM,{nub:ʫ\DdxʎipʓI*2+c4&W_ NH[Y_\:Jbi;*é4K6CW.ǥa2ŮCżM?򧦵=+YAozd1A 1|'osPCy䑚5p׏_A`ȵLyQNY.TIҨ2]ƬдLž`n);bn\tzԪ&2~i}9rgZj)K98Zwi@3Tlj?r9j_*]@$N{1Z:fKt TdP!Ix$\r<3Px@Qmnbnu8;_9j2?#6zsꯧ;)]?SP2pcWT 2ǰd8v-Yz m^KB^Ē1hޕ̥&Ub]ngg¹)Kq,9oeĎ4Uʗ/n"uK,E`VjRjsE @-- |2$Mzܷ 0n9 (oYd1˹/ny:@;JhMQ@ *kkm&DyB*K@ΞQG^)P&T- i:7fO~a++I#eSNaQjl6:b'f2#ҵn@[8LR˹&(xuhI ^3Y`ʵG?YTPfw.Ė'$Jv(6h),eAx[{mnDhX1}kHǏjRti{B!OZRNkNe9r%(Ht3qQJ\9dK#RCGj]sPEʃT1F)ܛ?ڏ_R pY׸*fQpЯoU j h|P:ƳaI) I"uVa2eB*FK?d2`֨LjɂxgU[&B[6ym(m"?.|ECt͹WcXFm4[ RgHOe8//%s*6M5Ԏ; \ ʷCSJEtgl?HX_eP+VzĐ epi1L,t#\T+"IjqK.˿hK&LOk#VNȨ!N@=I1@7"s}*$m)SXb6׉_طI> olQ@XWfw.,NI4Z(> ' i#+ ƍֻypCNBY]o`ީ?bbS ::B6YdRJb隤s!GbX%وTU]n ǝϘ$?:gbac ]A5j_e@=Fy5CbU7P}:QaU\QH,oSErYy?"'@k5E&)K@bW/"ӿƹzLP:F, >?*Z!j.8uAqtP+ۭ?*!]GP=1M:Ƴnu{{@A\-%b[ҭ}pAS#G PbE Q@ bQLbJJ)i (`%bJ(4R((i( rүZ4ӻSiQ@Q@ KKAM ) iI旨HQE-( ZN" QRn0aAԚnH)$0 )2G'ZR2)yjSQ0dMQR 3&2( E-%JJZJCHiM%)hJTI=?UCZ__ԛ$o/r3 D~5v?W?ֹaO5 r{1*=@(,OZN vhSs&49EnYkOhVUA$Y bZF_5Lij~mp)9*sqɢb40,2GȿtH3dgak3oKs ?#|mQel:+4 ]V`A4\۝`Zx\E9c&e(Bvʧޚh85yI|h}#t>1WўuD,9IzaW1洦1&zR8GRJpbO=)-%-!AڒER@) (4 zM4Hc()qEQK@ )h,QK@P(h( JQKp T\[d[yh0=>^ZXpiLj9N*\湎|PN9QS7J8UUy8"e" Ԯ*3[#6R$JCN2R)QJ(!RDaLXaI 5ySjm>?V^|vzPVFLɪzքVtW&fLTkJd⨲]0g5HE.Mw3#47bF(bVJi;ҁ@QZbU1c\V@ZmyΥft8 SI$kVrٛ6ӥe_ ZE8\3z2O~)ģSE)AER9Jv)(bF)إ11LCqF)ԝ1F)qE b`%Rъ@%%-S( E-&)أ6v)1@ J%b P))h@Ģ%%;PhQE (&)hE-%0KI@ EP!( JZ((b (Š(zPi)ǥ6aK(A(aE )hP4:Z1H'RdZ)iHp*F(*1nCA-9Wn*[Sև,ӉE4H:$j`ӳ4hTl؂iLɍQERR@())i( %: ZJZ(T"JLJLZxl \id^OU49VQڄOZqYmQ‘ɦS[ X1yvri oRiTn>— =Wq6 @^2h<)\vNivsOE%ASr @$!hvzSRli'qKI޽79SVj hz:WgKD9kEݮ`j=HfzQAQ]G--?6'j(@ƚ(4QKJ% NI04WvQ/Z/N*TKQҊ&))@RF)h(4@y4њvisM)i٠cR"d☼ջx0n]V [#TƸg.fw6CL1Q-R094sR?Z@+Ka80sV\Ur95곊"=ke254sKq1E-%hb )@1N)a61Sp[f~DzUM(f iʜt2[v1LU*14fLFHR[BV2nQHEZLdjdW"V"E]hf)buSNAKr-aFrj&k)H(ҳM)S#jx{W#z)hsǃQ8 DD3p譢b[U_vv5bQ5A3͒E$n(8JLQZ\P )R7S(R@ LSBQKIE))hEPF)qK֐Qqm-0LSBKE-LS1N4CHIbHiؤ(BR@ĢZQE!Jv(K 1 E-%RZJ))i((QE0 (`PQKIHi@"cҚ)Ǖl)@RLQKE (QF3K Q@K@Dl)S!E(i_1ir)}RK>ڒ_KJd/ZFjriMqH4IҚh%XL d=Є ,11O"9ncaSqRH T ]6y4)qE1KE \PSn)1O!,7R&(-bLRF)qHiJn)QuP!P!R@Q@ !SH4MHE4bi ?@K@1%;!P (1F)Ԕb EhP RS4QKHiJCNQL(BbRR(J)i(Q@ OQmH"CSiqIEZZA@ ZJ)hH)ؤP ~8@ȤI*: {- b RGzCPhPP%:9楈qLK@ #@q"}s}TJmHGޥnc⑺S F-dbӅ%liS!QE%R@ )i)M% Z(cJ*R.$)Ҝ*MG(ɩi5@ S>x(iy8%3ϥ/n(KӏJ0wb i `22i9{fjrA)20Z,xSNAQ֤ x]8\SX8Ou\N34fBdwlWo* 5h5o-Q ۓU;|uG5i1åҊbQJ:)ؤ bSRU_Uj|y )5rg_9]%*ԣU7&Zu1i;iƒ Z)EC@ jm8hQE(0TւnrknۅUZ+;h+"7iMey4Zw4WaOґ5&?w@]ǵV~jӏZj) a7J*LS@jyBku-QTHQES ) !E+ 1N#FTSPĖK?xveEpZ,;wу^muixN*'5"qU^:VF:jJS* Ҩ,Ux8:WMdtJ/N2RZÌXpix5ԙS҅N 5w2$QԄRa*x&W&,8#"!Wce+ #+Vd>N0kRE@zhedt7KV6ٮnڛV'L@GrQ1+&k(Q #dی54y&i%HlIE;Pej*/UsM1J$xqLK0T6$@h.(2l4B)Rbhn((h Z)Ԯ1(bP1)1E&))PъZ(:a--, S1S VdSNVaBchb)aN&);RHvI~)VE!RLC 4ybE%1&)h-%PQKE6 4Rъ%;P?oM%9%QLBRu%%RPRE1 KEbmHE2N0D6zRb Z\RPE-R@RH`)€)){RR(:i66(`-QVNWB>- >SLEFb>\SdGqH)R㊓AIO_@ qPU@G5H!{R+H:Pj&(4Ji F)qF)n(4ii! &)ƒ QIJ(¦JTIec\Df%ɨfW$E8=x+3{X:ix3OQm? $0 .{4Acڔq֛)þh@ HzR!V1qYK $ <<(2ܱ;SlY#G4.zI0AOE p8HiM%z\_mP& 7tZerbg~`#F"48{M֬ͭi8kQVVR Z n)ÊZ(P3INQ\qM4"TkRDuTUWTRȆii!))hANS) S i)M%-&)h&("j1SF3C4m+:׌V k}%M8) IqZiSRZ~Q?Za{"&uNZK[3.7WRc\殻Tz؊Co7 Wf1q4^kb,Dk11u媒kMZA܉d@ɦ1,ʼnjA}MFEhd5BE%RQEabSF)4bLSbS%,&(QLch8 1H,&*hPTjaVhN"3KUF*vHK~)6Ӹ7SADFyw$i"HE2HIy&8RP!bR.(Sb1?iRԎ-+6M=Mf2qQEJ(PQKI@ )hQ(b (XX榌PƷ%=)8 ){QHbQKE&(QQ@ 8R QH.)qE ZiNz!(E Jp(<)i h2 =FivhL>jv3p)DVN堊pT$0JCk aPš% 94Flv3M?-&($i8ZJbJiiiSiiJ1J(PL.%[AҪjlcdi7w*n{T^Jflte%mɻ)e0ަ8Tdـ< I$TAsV0g' R' %P3Py5 `1ǽb>2rJΞ"bT˲4*0OWL@$ŽZjMV󂒪xy]#yW=% 0,F|{2ju9kk \HN+9j믭;&\letzuo.kx3r֕ܵ%D[m-Uo:U9 1)EnIV _qZ+ϡ#b L|U#>HHZ{TqWV*^LWGuXGLV'x5 7sX2~ucj:8O'%Ze S"^"]AvßZʈecVmqpIN³&_dSlp*j+zS)sMt#JLSKa)@E-a1F88 CQCE.(" "u%2XZ\QAa)zь‰R▌PT#j\VaVXT )&9"* f*D⩒&DL!Ƶc1LT-'4փ=K hWJTQ!-*2VD8S2"RM"Hjb-DšB B)4HiqF(AEaIKF((Rb R*fvxL .qPθR7pLjG1[CIKF)n(b JZJPbR@ )i(cHh{t R(QK@IN 8QQH-!4W 23D~N[v4'3RN Rj$M=!,jm< n.EzQgkVTŃ#Biu(Y\dO=+l)ڭ8 J6R&h⛲cH-7jyx$ZjMX|) V⫙#*D!QVsUwG4ՇvPSsTd< u'4)sRަ AS=(2/3'M³$Mтqœ$f̻BAkJE Tf\Vf2FmSPUW5F9M \RKEXLS@QRbJ: E0SȤrjxN*Eg"zW.sQ]i)R@&))ԔRbIK(-C@ E-&(,u,cLhst5(Q@Q)L )q^­+4p׫X?c7;KT^mjHjW**ڸ(+ϝKf̝>pC,\}kZy*D('o)qRka1F)SEb, ԻEi\9HFԘ(͔S1Hv R@R@+(+SaXZeK%)JQґJi,BOCRk(.${y4bz¨4 rRFj (Q!aQZdI MC2b Ks) R9jQ")M #ӚLqPwL8ǠI)SbR@bRb 1J2(S-I W4*Pfm45:`gcW#d㠪OJL# Va@z&sV!5EFQRԲBz&*eM5yS`=3Leɩ إSZ2HA}͚֫0y㱝;do{ [bRqRyQu-%-jHfJ)fRIސi(SbZ  -2@ J)*{QJhaVZ*8}:͔gѸTd!UU |T2Hn(m+EiM4#j3i.(-&)hSZ6mk4U6 4#tNmuAZpipaZԭ lWݧc֊NM`U&TrdQ\eOw1qbja⳧S.pm%{Ut(;qZI3d#k{W0űrDϭdަZU2䚖'ћ[H\GvBGs㚺r3W&a0+,h*QS*,s[&b֢K(.)(ހ f- %H=EKe!@bSKeسfq(zf6l^gl12נ~ΣڸJ:h=N>aW#5Z ]dW^;[fcF+s8E]M[lJ*I]זVf`m!SUbRB aZe52*ڹҞb54XdE\j4&0qMP XE5U*9hDg賊%MSi1⤝>j6esPk\'Eg& Lڔ0ٺ\ܣQzljaWDEqH4V QIKژM2)Yxa*PCD3O6!S恐mvHWѷBH-I@ I֏UUyHy#TUDN;TNx?JbMϭYLFEU,0jL֘S&ԛ2x 媖]?$cN`CSV3};Ճ`Xy!@PK(FpJ{#9ƕRǴNDSi1MvEʰࠦGZk8,Y y5` =)sXv+[wH_$ ue]G4mO?0(5?M;s@ީdesL(+>ٴ^uN@;ǕvM1+W=z9˸ C zo fyxlE\}2Ea IilMn 穤kUvOHq+vHd \TXNc|3]-i2FfW)a^hڠqک0j,?ےGj&Ȓ8;#P&OZӿd1ި]zjUz;jD#jRԸ:fj-( W(+N)Re$*EF4kZ$aA9W 9nx|?tޖOl h*+W^ZE#ri~joFwFW64ߙHQ+Ҳ4V4֖<;8 ӗ1` ֫ЊKS+RlHj=+ғLjxbCZLQZ(QNT8ƐrkС{\.\z%8\奎nےfnLwSpNVh^E@ZҩEi܉xӚo9#R⛐F:]sQy5h:8EB  b|eP9=k IMjEemRS+c %)!LRRъ=z)ց}iOASI Z)qHhJ(QE.((.)q@pSRNMi)8ROKUЅԣ'jPxRpj@*."zZ|ԇ&ixKeF:暽j@(lb ~*i (=)qMICqEb6V4ݵIƁR|٫N*\UWWdӀ攭nq)Sӈ( p0®#8KS( jEj Fzz4O+S!5s~Y `b0݄vc;b< j@\T\qRm!4Tqp"Cآǵ]ȀTlL&Y.9&pw#NԏCV`\,s=jKBIP=C*&4QZ zf,c銿,"< ";8L/^ >7*%>aUe;5vdܠr)gސ 9 }2c֠AhI({ 6*{Kp}xqC(_=jpX4MuSK@OSҀ qXK8)!O=Iqp pi⓽;JB)H8@^f1@ ")I" h QS6ִZ{UJQF( iqhFiU%:h8RihVa\¬[6ަ[͍]-]?u\xgaɬF3Z3T%Ú*fJV̇mL+w2~JK:@i b( /Zҷ31Z0'AJb%^+nطgcDN95,cCZw!Չy&cXE4m^s岃kCP(x{旼O)o"(eKa]i}$VU%;5@œWY 9a5-\ 8q޻-%qv hi{;mP V\Z`*|jh[:s*[|/"4pTpoZuycN],dmW[iS>Չm]lTu_,,e^Ǹ1KrR\&xi >qmz?1JA`\هsDAV&7ַzG G8j?x5`85{M\ [tE "TԡǗ52S& srmEaYjW"ȦqbP ^ ZWD{jTN)ʙ1vZdP=k?.sZU$t5HE+J"M9y^pxTxibܣ&+1WZncTN+גqQKclhfrx1]=չ xic5dc(R*sI,X|̕zUX7;ӄY=+J.6KA:ZVu}QLZnGH5IN!)i(I@\Q@iAHriN EaSEE UqH)ؤ4Jn)-+e8nRukc.(Z1H BFML LqܝM>OҒ!t3XЗ@(^j]P)f\P٢@)1MHlN3Mnsҍ4 xI"bb)rHL1UWUsO3@5"k#dS81H ÚDz0Ozi^i6QiVT85lt_xSD2KuNRY.c>#F7PrEKqYkJDU~?,g6jrzTW-T mkb~!tb6`9q5W4Y*w_QTr#zuA4U&2jy.oSY th‘|⣉6r۽dޥpU 39Sհ jϥ4yC(E/P}hI4oltpH,́1ɫ7lʑ12ԙޡNs|ӡT9JCp搊ZqNs")HԛiQsRVt٨\-]?txa)&ڈRy8 x\-+cy/ m&9LE14mLJ繬d֟xo݁f0oHM=FRKBb0 HEFHDMIJڣ1i)ES)h 2C*:)1ΓKq,`M5Sz4 r 5ᶸVm';k 7Fi2+7Li%*~B:uEXԖӆ·Q֕8W)H]qjhɫ3pՕ@'A暳]7Ú#J޵T^aUqVG4T`(ETҦNY] Exsx\va\ʤt9- !JWn9AP,X5ޞ#F;*cږ<6O>" t7vr1ҳ$]1QSE)CүrFM)OfU@ITS&40f2޻-սpT |6OžgE-΂8͒U ҴlSi_;w)\Te.*bdU;pW(F-]dv (#ֺ;^PW^XajVhmC(Tr e;|^)2+"2w_3(T啎n #)(9h,#cQf(;S1YEݜ+*_r VZ⛺MqO'LJǹioȹwhR^{Xֲɮta iXg}ڴHʟL~CT&犬'* IիW=yB'*P4Ɏ I V<%F銶GJc6UsUhMTqVzMjB*qIu!&FeӰH[t` <&1YVZwv/"hB氡먷O&CMkrԇR+?vb$k'\1+:z;Okd|5fOAr"*4,`'Һ_r3[xظF+L+jkUiu<7сٱ+W$r"m-:VUhmڴw:ӼYܻ4!TP1KJk+ImN.:U87bҹe6olcAbkoN84Irq3LˑYr٫{mx+Hr]U=b3E K0A8o[^HkK{KaY@sW21>Sױ -͝$kSāYZ_Д+o.RˈMuE`G+W2XsLY0M@EusRbIL:ՈpXѧ51* ]ErNGL"&i׺8,mU{;Ȯ{GBV>]7qXں UQgE8b{Sž1ڵDJ|dcQE򣊹"6W=qo"p+;Ѫ9@xkqJ`WG1)\ U-Jk1X!QhOR\^> dUP J:#̚)T1i搊6I@)Hhݥ4rw{PzRHb Z1@RP xORҊ1AEY[[5uRHZC1HIjM#9ojmAHšAI:1NO_樹hf(]\oz'4┮+杳~S拁]SIqee.TM=ngQ{0MEMt9aҠzV^i ӱ06Fπ*2shMU>[TeQ<|82SXbDj:YJZ<OZ2u)%Rm(n9OpB"#TG4&qTSZC,hF;Sv)ю)  TWveEE~?fEŷS(,LMh hD5mOj[$Tɗsb8NH*UFf9!=,o):S#h "y* UW pj9W)EÐm`Ư*Lܙ,Z}]`94K*vPAC!b6S)Uq$2b2i`8p5(\@*dbHn9\c F9ZHNI!$5$Vd\FMW?+Ml&v9 P)\~nTL< P15bhr)jrδ&"Ú&j5JZqzƻ]WbAy5DTNj^rR`q^g#F|RZj{VjqVބ[RD1RA*dV!XDȞ !Mma!@#2%.9@.S5+hC'J>)*痑L1S%ĩڏ/ڬ짬tU TB @Yu%tiٝ%铎pUTv2[_W9{;c"GJStc5r5̓Rr8;]:[ZHvɌwkScL5~u]*;(Ƶns\~ҖxY d: VDU\kHs$sSCqJlRC~q\rhBݬFGnH661Ro$Ӟ+3O *ŸtuJMF,sR[)H^umq 2)dEs֡SEMZVY_]DZ䧏k {WRєfZ>tb;+C`R6(_G,k]sX E(diDb%Z"`T$sMȤO"LsVb* sV&PZ6IQ]紻]+?rWcn  vi>=뮒cbBg޹iU[=  Ot7лjXHVQ5G5n*h#ޞGS+rvPX*BRjܣYҾT5fU6"P@U@UKvc{h7 rՒȤl`R3etKcsUnF$0jBKRT|8J{>X$$dե]郌;_Z/Ir 63t4IiБ dSb*̘&SH- l["vJ2®cc#GA+aK̵'ҙÓSN7BJ#"7)/@t>]YxƌkV/8hVcjXr=+6RС.b8<8xGE$MP.rE#bt!;YJ{zN¹&DQ͂0nm E!Wm ׊ÊIN-lXu"R7 4tF]LcƸpjzUtO:TMQ< COv+=["#1Na*77CS#s&%s1ƹV`icXK`1Μu⺥+)jj#Lerp 390TdVɪ5ގfE~Jt  HU} H҅rFW"fh3 >Յ48suG1ڰm;qS ka'9q5TjEJc9j.E1p $c>mEbP 8( QaE^\J*ZвOGAWn*:֝^l߾wG)Ոu*{5n[3!ɖ<" =5 !FE:3V1қ-`+C6"8 Dp\b0k*T%dXajEPA_.dކ։+W578=t iB16+JS(\xpj1)HT"VQ28x.2.yhu l+5gWy$㯥|-*{Dkխ|N3^$||En7ȹթ*ic@O#npJwy+"dOy5sSX%iя$Y51Q&YA4R-Zy&yYv9ZM*sb[)/9؊`i#V%Ź\]u$c\k9*B8PsT[wESϚM4M5FbRRQNi)c#fopKB⤤%(NKP)a1J;R*O*E-i@4qQrgݏ{u\\Hake/t/1GJt)$☊ |!Q50A5W&PqU.zդܟؽ}ǥN` `؈ԥCSRJjY6~~N4C/ >5皐6~cҞ+*9{qR1`&#&yGP8FN6s@"(m>U"zqR[&5x<3iL8=enT,A=)= oSMRLpJ WrySfFRƴ5JD̙2.jY\T2ǃ@ Żl۔=zWBERnEzHrǽCk smP8zԤQ#!J|ށޟ$OqT+PN R)VIZ1{p=(ނ0);!KSN4.6^:♞i\,*!*2@m1-˕=+ ǡtC*쓥=FqRʛ|;IJIqJ:5M423MC*@8`0zO^cR{B2*7\Rc&^&`jVێV?uSZx0Hztj^6faXc-9\آjijy9PEE$[Щڵ*1Pl{W/SˍmN?S#qWy`RB@ש]n"CN ^ҧ5QCd}<]$6a[ 8/t ܃oJUv/ڙ꾂<8Qt0]Kp0kLk Cڳ+wgaWCA\~q] |^5 iN3.)ҝ_kI{M8QV}D(KH:R`B)ԆHsP2բ*&ZU%tiȨa-3ԃ6LQR⣩dWvri&&(Qq TdiTqNa *#K*&5y&9Vbו%Fvafs7 N\RN9vR\#PgR˴Ms\0%OPXBqZFK*6L+ѹхbEFsVpMSd$Ohz A~Jl%352 b ,jGb]%xY#ĵsJ#2-.A_j@e,qȱI8j4գk#2wG%e zؽUX+խ<պ EfۿATޫKbS6PT >EU'P֓ƪqNt*ص,yyUH1PWJa4 Ѕ~JfJD[ahYخQ\kc5G:RWAhylJ)HU!)p !?d8ej n8Tb`W3)Nki6{ngW%8]αk<ųkdx㱭MSڱd֎;$Ӗ;aaHX a\9vZCN0J2RzVn =+Z0)OAJJG?G),50RSޢHHcM& Gx$ǭ; 2vS=Z5LR%=⣷RWkhrոb- $pM(kմi *:լFW JùfՀүPxYH3V 05-˥H'UpA -^bNJH"sV<#"هQc5+'+N-lʅUڞ"H 6#4ċaj8/ zʹpUrSu60\*["^ZZjTKёQ%hƛT-EʱRFA]j,Yf;i۸ Lri8riǭ&p)4F3U{Dyj444?igiFX8V42¶XU|kC@,H7\5L2ھM\ˆLkRTBi/96:`Մ8+EY؃R=kXX/ AA iM"V[qTi)@G4J)i)h)O4SK@:AJh@ᖴ-ٓm&j뒦P:}obA^_b`M>%b2FS#5aۚc;#28TevEL0o2XSZF N+a #'4SZq&4RS54Cvki(EP2tSR3EmQE0 (B)+)j"5hXT5RGqH}D7$"O)뾤lB P8(W#uܦc&Ȫڼʅ4iJVg':|=O/foF,ɬ=N?j_Ey4δx &ȭ#t۔J2Fqԏ ^xC0>ms;`:Ţ\b\`TTzLV@ݘ5"6H˞,1Xm]=D?AYW|۱ZӑGib[UDUs{¶;$c't0Kҟ $vo,\ж S3z<DcLEOIsFOҦTdb=*ճج ֭E6bEmڶ,GFkQ5v.J9H"qYO[Q˚<|Dv*n;U)m+h"xCFt4`ʻEDѻ=@ &21I]ѨZba]T 7E%WIlr2RˍwES_eQVL~k Ϊl4e$W-v3]ɜW;a|ux{:3Ug#s5OqנImt湭zrEDU˄5T,e%T4Φ"LԟZM?)+NPv更ċ*JdԆ,}*6^q@|>*uZHjʩ؄=_s&"ePq&sHg8>s d9Ori¸6ZpC2wS92ڒ9M 2S43S\ 7gE7̕r0v.1N䁇䪞AiO}+q Z[s"Lɬ6+"h ) ΂U'("|đE-ۍ=H _'^ޒd0*¯QJE$*BqV"PV"!5V%U55Sk`խfGHb.[qVV=OV;WLV|X*(5 ,:U[8`O64Ji"&>QsS~]T$2[yR40K6|OZLБNu!N)>#BabjͅE`ҷEb]E l=*@zLl6 s(MXEC>h !7i_4V>GtNbUTBT4Ò6OCfi5+a)(9(YFe4V Ԓ@]wU&E^'xWa-h2zuijvKBXAU.WOeR)S}8UT)‚)G˚0HS؇?aĿjڲ!8p4$oƤSګUlǞ-&ʁX>jڽ3Y ֝=j0P:R(a8HjV0X S֒9-( C QF)E"RF*TԲy{x#R&e}Așn$ĕˉt3h͞7J#e*hXW"Oք(zTM(S1fL18!pz$cL 5j7GzkuAr+I(ݙ;|A#V.!MOnF.k>Z`m\m+|vt@1۱ZXm'E7MbZ)ۍ*H5ӄdm2Х (R\f@$EC"dWEnkNvg!q W#nۇJm-R)hk¦&=5oi2* hb#BjQחSМu\f \(@-i'/SWYz|`1ib+%hT퐃VQ0EZ1\tM(CWtsؖҮ1Uc\u })Wid׵pq»[`W:#}k9k 魿ԯҼi-3д]H*6l"iŅ6j=AEVOJJ˸5/k*nZCrsYs&0DR=J1! K5^GN+:.E#cI{H "ҝ+d21wSc_4$`朣S}PL T- vl8H!cjt`j`8TЉ؀;S}j9J%s@"HuN9&A!{U$&!^*7=E`"\gqkI k_C7ihr ]OT:HeAN*̘X O;R}ij@qJݍuXP*֤I- \&)=IL`TaF/J.;0jNh&[4&"7!b*fs-FV?z:TTB&.qV@/W_sZ&WͳUQS=kF`PMeI!Tɪoާ'AXcH=E>QjS `⦛Q@J=+BD#iiUpjێjµIJzVR:R)“ҁH(H)R)N*EC-r2*KYsIFջu 8TĮ]Ta++vgU86=1Zdek+M&Ke'ټzv9dyqQT&e66Ud\KsY3>otWrޛ5uΥɢ4rЯiWc|V_hpk<ke= RN'ImZ8!LVQ6VӅ4J T,1W"(\((( %)(uŢ*QB;dk+*ѼܪE2A"a1it&`JɘrkN `J͸L~vɓ]<%W~W햪lYWR RMԎƟ5k[5Bܠֽ+"NMSNqsщ MA<<+jIcȩSi܆1 [[>^?zZ0jkDqAEPoMkZEEEw 5}X1ZP5_gkJt*JQBⲯS Mm85v9 bm=Sް%I [F*I+|Gn0i[5ɴK%ճͿ+cܯB SjHukWK +6R@U.{BZ&{D7 2M@ rƺ{mEfg撒G |$sݚ~$f:Ƴd fL&sU.ct:H+;ԊȾ t.:UKȂ]4riZ$W7s5c.@\+ۧ-Jen\CVtW\&s&,P㚿4]j\]qgfGr.)U G9l,F8B-)7[ O<-&ƐF)@bD⍧b)\M8-9E)ZW*iUJWHNvTh ?T*,|٧g b^P bErE@)vdRj{|6A *E4_x׊U@ՊLvɓڮ!*,jų|%2.ַT=x޶#TJs!AY2I)TP2)d%f9K,tT 1R(4JOV-s٫ mdR8EjZ]|TqޝZL|2&~P VjF@ hx9ojFT69=;j`F0*H@XN 75!OE泓4/#3SڸZ2V"_ U*Qm)995#U~^*F؅\2N<5d ȹ둊/檠Z&VHzNJxf(Ɵj㚹6sYɖT4gݪv!(z*cfZnp1ڟ C$-jJF}Es oj+_SzobzpM4Ҷ CM4M?JVYz k)%= qi@-I =4)pjYH>33IE*1S p>8㩽=zbnuz\]zi7[F}Ey8:['N i کFj `Twwf&eENr⫲޳c} qG4<ЄZ:m ))cNjgN^3E$v\GR֥7GT9#=~CUp欯JHd3CzV, FwRpZv.nWfGpHUElҷV>)u2T4bQa4G4#5GYѕqE<+ \@jb)1XJӱ-$Y`'֬)UqVj77 TPVl:lkKH:Rѣ)QEQESi֢@T04`&M}x}%qŶ-7swLG5'gf8hwC9+vz-s]=#\֌0rТ+ SLEeżVVUMfLMFpIw"փ#l0+q.1H8Us^q-2SܔZ%8JZdP`kQs"uTPCئܦE:5$]­JҹmebTqEkӷEjԻIV+x}{+ԴܣÖ<1E:uUH40L-CiүR&rp<[1VV'^y(窌 -QeaN%d9(xSRȒN_2*d2Jֵ m4^ǃVhu<` ִc>JԊpkI'r$L:R/JZ(EPM4mL8mԴ\(N̫a#"[B+b+`ňϥy|D#l.yV}G=l$fob[fG;WqLg޽j'eڼf$k[~]"Iyu!y$c횢\HM75)-2soq=d yi©T:Mzd'zI3ff<=Kjdڼ^5ct;boOckY׋$\x#70 uaAZfOP@Yk4*Njn%^^BAM'[l8J?n+ x0$û[ ׺;\S/qǞ;Wi{iwhI8BNJ-z@aHyB8kn6:Tyf(p52 ՈTKcHX3GjAPnH)S=k6ZN*KHB)@❊1HR x)( @❎ dj S^1֋ KUMG(9)h5v-qW$ i X SI$TҦmG?AMebBP pB66zw%8In`MZZR[̨jgکw1InK)8F IEy{@s*.ܚCR>Zw3h =N+QǑS]|"2`ӱ`zU8d*c %'->Q&V#zE-U Ṋ極3Үht1ޜLfjh㎦Ǡ4 5\\I?n%Rtw5ʀD ]ڍab|RRtd3* n3M VpI}wTK&=)sҢ YAۚH0MԲsJ88 zԱsLV RgqƊ㊳ Ȭȥjk9D.03D',)d?.*8XozW7tԺڹ3좋icM ajI"+Df*,bHHF2Z4H)iK@HJrѴ\`R>8= NSU߱YIc#ж<#"aYKSXm[д^wkQ]^q&qGU'fvQ7Ƴ*9wZgK͏#m_jX޹w8zpz>R)$p]ne9")BMNEXEUv"PCU<xg'rьG2Wz^Ҏm#V#GZEva)^\ȉ;+FEDvpͻ#!#ՅQ"Rv`i8LƺQNE0i_#ۚF ׮9J 9&*@8JTMg Klٗ vǯֹ'Je`i/JZb}}}9sE3( ( ( CKHzT`-ST'qb 9;"|BĞq^exlݣ$^›K+Wp?ym#ē^M 3/kWQ0vkj>'yo%͓voza5”bJ{WDF{[xT[D @u(sSV*+I 5Z>ѼGi@w^+~9^tbLYdp{zU.|˞WΎNj+stFk}%Y +3P5{<4ezL&E^t%\%gsڄYT\bLܚ?Y2GץJwA$$ m3أkBqYWQZPՔqWc +& FZpŔ޺jrϚ[ V D})ճ1c<&Fjwڕ#nj:y +_2q]LQ@U 6"=kQkFG+v",eHnNek+QH}gCsPٔX<|R~>jW WnS6sZEzPWd/әr(h,i} [9vkqdF+BWm73JJ1"UY"m *;EF % 8jWM4YC>RM3QE(@Rp_OlWaU„KLuyG#V9 Ēp8ỳ3וQiZ)o`2ꐮ!֛-LrMw1W&-Tg6^{ے]?ZEq-lj߸(޳#""\QqHhN_t¹.o P;d?ZJ/DNY"Y3rܘb Jr#^MzdcW-`FZ{~_0g5ɚse{+ӟr(g~MYS#s^8}GZiN+FDPlU QTr4MڔRVfqRLQS(f@< mH*M)qNF*n0 APzP1Ԍ9EN4*o,>5OW$U "B2i͚O4\v( `D`US9bQ@,caJHLc SZN!hel *"Cn><;\4p1@yF*_Z'U3$H9:QJ>%t"RzyTEY*|PkBՃS8pcc'&f*hфˑ]4Z Ó$Di҅$ivԋ\(jH_Ta0֚EfɼiJCVЎvq4,l"^b9Ȫq޴k=-6OJAԽk@MZmLw𝉊~x'9|o'={S!JCf;RFOZ|ʠ!sàэا65m\P"%HO4MTd4l r đHSf,lfʨ&o'RX3N 4I/?;|{wz&* {R͌ @"RtuX<-R*~K'̘59J-5ʮj!ȧG6[S.pcQ"Ȥb椅DyQH97JS PIޒ7qzӀTIU0@F075#)eP1\9+Þ*"sFiؔN$ɨҧܼό})7U}`tUI9@!vWG*5j)HlYRM:' sPM|>EJH{sPՐQwi㨮Nbf[|8#[RL\qݞFD榮s֦::V/rcҘPq)B.;\c/isPT%g*y@kTdИoJuɰRm-!i R(Q֞ Z8|*Zh,n1 RxN} -"z4:isZvgAk'JkBOCv[S-[4L NOp%vZjY͑v?JĂ_5m(uҵ*qwD6E!@"N䃥 Z#" SSHP:R!*tPT++Nb~)ƒ_A8FHEKW(L(U!)3RW-DxSqRN6B⣉6Ն^)+xf$}*Z`ҾqF,Z(QEQERO`!!5xٶ,^z=Fa IŚuI_q¼ zxkY5{9Vf9$[+) g8SVa4<Dmsa25[J? kjQeis*^d VC\[qRh5l`LUҵ戆lО9g=Un>-F*AҾ InQEt(("(1P&5=5Es))q]+ls.9&YwSX:5|-xyr>N)χm>eں20Zt!^* \vrRb'PLb|qhjG I*ҞJ0[{799OUROQ'5w3fb ]8sڦe^>Jo$$˽a@H.sft5vc֩?S]᩹IKJR֡Mޤ6C5u-<XFkMSJ HGR {?HqbOyvi*]|KK:h{{Ls@AWgE!5l]j{W=9X'-Lֲu& h}kXⳡeh4%{ڹiq{"X-_QA%y]yIƊ)hcx V" q^/jUtZ͛@*EH+6hfJ :Բ6)1NN%j\R7qjVid3i&8)TqTqA} کv @ N)JR*iIJ)1a:maUKA Ѱid+<To 易5Vmɩ_ݞj{R1e`ڈ5 +[VQg40d fz}(n *rTX.Y^c4,'=jۆhBcP~Rc֒$̙G3tS<ǫUwS=*Ű{\"lJTeBT62ջ`Tu"!l~4\Mj07pJO5 $楱 qNU#:>`,*8 SBBd J~WYҫړE"l#5lTȤ1=1CM79lQ!q>;e)b =ڜFh=iF)sOK2S!'b O:) qMs0<)>LG)Jx)iҘ>ϓ4_!1O4*V9\U!F5پ\V,~{cA Pߥ]F9+8 ^j"zPuV2H\g>G8bv1VQj 9sKM# FkC2D=QZL3څlRvMQ@3Rq :3LޫFlUwfɧ2nqV,¯Q thw]nc;QEj?qW; kΦzdĕ2+RDDV`Zk:n )qB)i75-MښšE)FT5zaTXռYSF83Mv"斐 \R(i׈$VM [qd܍^$&ӤZ AMgDzV+W%e؞&':ֽڂ?f`AbAjymX}*hPp*kzUӛ%$W/25"'ʊ5Zke.iiDwdSvWϺ5)Q錤")M )\A=ig1VqpLҍKbJ%R"WbH1^-2V-, 8YRxc\,#ZUϽn͹M`\LzW$4n9DDTE¸Ow&nqJH҉JXS_Og$֣H ( ( CҖUf%M+n:k_[5xG5UJ=Y(Ա {JY px5U{}Ni!jhhT2ӃFؑWujp85b)(ip$ϖ旙9Y׭|wJ?eBF}k $Sps6sǙO5xvJV.X+̩1UXf#lf+C-M ԑ0ڵ8LڰRN:ܴGJοjټAg 'G柤I0XW:nGPQT{tkmƧl TQt]Zb3޵{Ŷa эyr#VIkR\.<^)zx\Ms}^ yVF~L=k)☴ n1򊨼\N 8ҭ#RGCdJ)GJZ$}j*>EҐJ(pš)GzT6qV*jcf?v|) ^ 0uڥM(jk):5]*ucVvnWf3bCMgGB_^E$;Vث@W92mkƸ[?Ja@ @s5 qPd*>M5FYoQ7'fhM3>WXLjA6{}M]o38lyzbQp#kB#nZJԈ|ZEfRB)7qR8\(i$NJCbr枣g5*%q*Ic|1bdJN߭ /֕>)u!X j1w.7 E)9>A(4D!Hp84 mڴĎ*y0{@*5B i"l ğ9.8TsjہRD\S+'>>G49*d@׭Q Iۊp ǃNƇpMFTwJI<9ƘJjiYGL2`Vf TXw 9_nI4&Ft湑ֺMbuHQpzW=}159ř kϧc5xnNg`dX^BtPRK\qL T[hNU=DD:ӱ C$  ( pœ)C(j/EoC*uiѴ $Q~ut"÷)Lx=+kSFWFȫ *g8 m)\zELFlCRnmiYxOҹDYmڳ8q46E?ljaҽ7*CvH)ZT9ЮEZ\b+fҸ0JE%a%fQ2tj&Y1VJE+MPJ.mg0U Ch{iȭ9Mk-{9Mk7MO#5U+تWiv+, T9B(6$R^HLTՊc14UJm.urw4erjw |ׄo({TTQoS]2n @7ĝ'-ԕetwJ$&AָM"ʀOZ"l\pgL()k[AES(( )u4QJ2jgp*xمHr#X+j"*X4*Vx:IzU;+Ʃ]Mrq*zH\c+kMkŘ:e;yTi$zԦԹVDžjlv>p9-U~ l!RBƺI44f,\枝j1N^0/@BzV*1n900MH2i_y4=w«z?MS:0M\hӟdʬ٬HNfO_)_v^@UR@Z'޺HXz/q;L-lsXݫwZp@7jmgQ[ay:Y#QXw2eI{Tdy%qPMV"u %zU(*>Pj&˧֕iT3eN$gJtg)!8TPEfh>S(NC)WHBEtUH$Քn*XҘR dx:(=}铏S&E!0.U]GT3S-WEAjqM[z;֩5>՝zOicZrEY|nx PA\1>+Q7LS%AR@>| HُJt_,'kjY9Ȥ.iXc5eH|Ȕfj*IjKleAl AMZY6QiIiiT ЄdTpdSU8k`#*js8y WN$m1ڀ' LvG<ګ!"U"¾sNAZI$T|*5x%AӊqDC(OJ0$$RSNJƥ`d+$ש=# sL'4IS%FMWaJ"@8M"FiZ@'"sHcސZݤ,>rUtSڢʣ#'=t|ū_mX ৱH*k"Qkju3X3)--4tꡇj^  C 5BQkA0Z@ʡXSMi0BQAE ShԌ8Rb9N*T5 vV5&w5+{D6' kMJ'M)rYdo^k2<m%Ysc_=V#z{ȅpzz s:(Q@Q@SԤۗ1ҮV_!ڔ )+/35včMsMnj[>Mҡj1MZ!~jN1@ )ܡ:U<~>BxHDүɧI#t0m(a]n_7g6e^ZV9ݻR.Itj6*:NXʝ #` 5$:h|}*( 9'.y'RHP6F0) gIr#i\1+uE欤(5s0^՛k,yni^i]Y/SE.xpH+P*Qԯ!-%NKk^P03\QX k*sR芸g4v Zus2+VWs9+Tў}L-Ht4 'YCoSEAJWXuJ85HqҨA}%֚zp\VE25wQofyӥ(;4KHiA5) T//ˊB?{p9 F̛\Y31ѽAQI~ѝ}e5K18v) SXdTWrg$:({#(`QHM&IhDcJA,ZϽԄCX#r1pzԊw H#&mC3^}.EIڣ^+Ny&SUdl}ŭf3r`V_u/ 5J$OqBgNոckoYB/a8𣖦-֡5+wtCM6iFl3NQ@UU|Upi`5_Ң7F,~k1shMx)3߰+B zl_f-`~OPdrq?UBW;#L5/i79"dyZe3kʒ{=)cԊ[ӥ.3D|cDF)G.()1phON F8_zLb*XSޓ%2LDNju%/JqScȦHf]X8Pۃ׾nk(pMR2kQ蘩1Q& kuH1x5a 2{S{u&uYɃFbA! 3b*&9$^^,D84=iJr 2ٳmYuQWwvy܆3e "joMJǗӺPTUecuP𹬑l4#4$Z$C"T@QQK؊z4 03@/֜~uǥ*U7nӌUP᪬HSjYWZP7*f$1xUU0}M;dҀJR4\ixOB)9Hz5>#n"1݊ w@T;41\OvN)ɗ#.\v)!PV*\Ӡ'-`f$T*hYxOL*%$R41QT`r(AcO#qMD=kVRcr^ǭWx~)nE9 gMY_z lE qNjj֦s&6]WU4GRƟ6}9Ƌ &qVc;)w֌+qs]$usYU%{s*v l=륻-sO:lRbEt0$OCCL^ycFNjVZLޝHF .ksSARE:MHc.iԔ:N 64 vX⧊bڳM@е#ftOޠgv77VS=+4MMnH8a^N.S=.Qp7Ilx°9V^ t 7~,D]9] i H;G 9)60TyucDrҞ+L@j6i3Ex]dy):X2SSs\ "*%njA^q3hu%W@(C 7͋56Tw 50Txptr`:6+գ1QEvQEQEⓏ]}Jp\Xoa95%oaMָ{u7*=BjVtDōaLө+BMPH x9p4jկU@ɫvLи}}cWh\8]Ujr+XҌ7jJG 4>n[|=&[˩Vֹ9|饀^ϨŜOֳÝ [v\lo!VN>f1+͐N+RB3OiANT-Z;45{tuj8e"`Sf ַ8ZoƺVZׄV|HPHdZ<Ӵ؄d5w`oS̩WV9"$yjWtpuFu{pxj7pl ϼ{ן:JҜ9dTM2ži9dx5*/yV+37PXlVhbު">XrtWU:1nzj*{8k[ybj d?ZV# )a({gx殗0|*G t1+(WE8ypӴ ߨRs7'ݩppjƲ)'+Z7iȚs0sYKc$VkLO5SPY`8nkl%knv skMaCJNEs5@{ 3`I}>H] FkM-yE&=jFB)1hJ)@H|04T{]>j.#XT jfƕ\jWq#}!!P ̍j|!eX"b0v"1 #W{UN<ݙ.^a-i-V`W]r-2G,7u9oGbrjr3^ʝyY5P!4k)JL&i*Zm($()ԲKHi Xh/*+:/Z~ZRZZu(fC$DG"OTii6?)QN  Z8~ rsLHC^&բVxw 92jCHbYjSƑW/OZ9G#J MCxfq޴5d"Xj ⡏jHX=*ǫngHhz.)FpASI T'ڃ94g)z1i iOZ@NvZd6.kfr lx%jҷ99ǹޥc&.1.: ^8lՔ8J BXOSzŷvOMrŢ_%,9?Y=H HYDMh6"9-d T, (,*j`}i# T)L{W="bHj&SW4gŜxX7 nV%ޮ{QTc[ ztC#z ⬷J $HԌ*3[%("p-'8'n ;2ƸkUB3.-1尤{9!s#QlT4eZJ'z`yvV,zI]Xƥs dgڥ i cEŤϲX[lnrͽZ㺑kp·tx>H&TejHo?20O0V3n]q'4'fR3^;Fnz|⾛Q?j3${*iɚ.w$2. ˴ +8!ӃF&R9ILmu'cZcqD+jQ 0=k#.aVb*5xN:Nb {ps=b-mZr2OA^_tClц?e5Ma.il:%($\AI\SN1Q}M,6BhaQɜn⥉&HU0H+c\RTE5XFRsUnQjM WvsVbNV#8L``PfN)'e)\H1Hei85b#g>%50<ޢTar'na_z5vr+A`6**^Op4~41 ~)~HlVz#[# GzZ)))0C; C)i:P0fNy1RPjZ-3.6\*[E!vS'W?A„c#>O9V2]}D qeT*:3yR)Xuo_RJF*Q^ Z6"BJZ1]!)Z:\FOҵ2ZjF OCQҭE*`WoIڑnT٪⥌י5;2&R׵{. G84ם*,OJ)xi4S+t!h-Zw)QEZ,dbŞN8ToxlmB^ڟncMKMhv"0k-OsaG"~:E4@ 8KSz)+SjW\Tf1cisH9BHc5ZB͟j7[ZS4g˷{X鱅A\9ƚ&XR9O,%҇rw}tܞgZ;2 s5C3\,#\j#,NM`S]]_5ag \j'c^#U?/+b,9#wY:i]ϊV1Nf' O̷?J(" Ɋ)Tq9Yp*ͱVuzvt:Q;ԣtkZDD@Tm V/Jq文PqM2*DSdW<:CW9F Tqo^ź3gA|qgJS۝uk}zf>jv׆ϡh75y~Y!Mb޺;[j}kԢyEvF,ŚTɋ恛'Ձzn]=~+Fov=뺔}v2ه9`Ϙk`o67/[n?URhkC 'cҥ$m'}*;ҍ YbXdpCrkz261&aq5X՜dtsXԽl`V&ƺu^w\..텘n_+({sM9\L@I^EJki=fC ㌚ƚ$PĨ8~5a+n^ \f'95]GN=&5I#ifDm!mE )9EE-(Jv.4S✩z&H"J9T`TYH s aRSR DI1EMfٴM?(5)۫3RAN#jEc"pMHaG :@*7@vib5$oD752 EHU4ozq+pNs?8B\C杅r( W.I s՘ۡᗊũP3b 2sI b՘N~a&8̤U)"ϭY߂) @5D i8a6YY'Jpc5nʼnpOz-IFP@Úf8ܼ%j*2MD.]֬\3s(^EDWj9b2ķ"jߕޣ(I4($+TLnhP9U=Vv_] nSVK=CN[u_urؑ?ZRь`*799<A/1][0:9!H'>|T֏N2e$cv!qU q:?)? s@ɳ֘8hY֜m*u=$$B !z)yWE~ۭ/J#vv͞}p__c|7(Mjݞ[DJޚ&n~AS;U=;4i P0&jRiZCd2 PH( ELS3H4gu-4Q@O)E"27q . MXYTlkY]>:)uzMF?JO k|bft`kTNw[5 B~sMaP/O5"5*nx.V0TVk\ EWqoZsSrUbǨHq 5CiASiH{**v[qd4DFXzSEu:l5^xIILQ>CL^^ξ-ץ-"c>X\\}K])\Ty:QNI() .i-H"RIRhd\wH!$r059Sg;WVN;9kblod 3YMֻbY+pƽz2g|LsZ5E P1Y+ifp/ÏK>Jm"-L5 77[b`BjWbK@4d!Tތ=A*WcKRe`ƾY1xZqYPqZ!WȮ9kˡ]evvڃX~^ˠzs[DҲ8q6|)2lap4&s]SXg_l+.L[B-xXɽo}_S]ܙV湫Z+R;=_6 8?CPT/?1n+ֱMeŲ]㌊kUYCWS[ҹ)xnN'F!fM a@ips[4b3ڱ8lVb-J#I0j OӜnLdt*qQ[ς9\5oxٻ֒GE}!ໂi[#en[qkXm]gޱJcRv=_> ogf7;7 _w3]N1Xqk2J9DL[~՛H-V8_g%fgN$>om28h־r4,^uXM{0`&H#ھk)lѧ;T|BwܛunךJrIz_峖5@o OHʫRhRWMyQPW/4ݼԧ67hBFP b` uXiU8hVLBF[u婤#$3 QZZtyA֩jKck[OJO^֪_&jēPXS Sƙ\S|xzf`/$ndVBtT[RrA‚**گ8w4L➇/AU=S CbSSOW㰬 łriP⣁8Ž" Y'Qj~ >J W9v 0NMY3Yq\$ۣz#Oq)73 ʀ)5|i;?,1ml,YppZ-@ >!+#PkBM[{L'VЛ,i"܌Z6 y`;͕9ȩNo]L&E$6-;IޘF'UjĦNTihqwr0*fkZcolH֭z+<}O(!\YFVX76pkBWA(@r2Q ˧Z~.5\;H+srzxCZ]ȃcMC/7Jp@Ib($`hAHYVC\~=O8Z=*x- NjL gHTU$34As@IZ=i*XHh'j aE-(4ޝih)A0ZEOSM=M&Fܖ09UC|ÆpkcH尺I#nW&NV{y9%F5I#һ*r'^- Vg:FӯzTR tW.ˈR5N92+!B׬>VW%ٓ^9+D vTgBnvUn&V+u愵 = 枍QM*i$ѹc)aD5a>n+#d$5Yj&#$b9ORfp_5jvUZ!sKfyD\o R59VgA\m_[$6"asՂNUVg3bOzi3E!!)(I@M4ҚaK 3M4ZM4vyJ)؛REKF,'JF&p)qۡzԨXiሧkœ6H+,٬ڱ]˱6 1F,Jxs@8+b@ǁIh <ސ@ Q#\v3 p4$^IL4\@0MLƙS&N +75E5ڦ{"⬫cB7NޓE,˹󊀹 VE]LہnَCb>^ & jk1~V-8ژvn3:v4$ҧ 3]( u 6WwQXJ6.8V";+;~闚i9*}Jb%U{`5jԏ(Td4HX w)DnHR d6@I&Иùl^+\I ڳ8"*޳ %1ޕ4Dub|ȩYLUElIYªtccG1`1ƤDcBhI !1Pq=* jUX.IۥgZL:~faN(WnJjUx8T۰oըtу$f70皰[xUjC]kUVFk(PƟ;lBe%ěYJQj%Qi4:][6-I[jԴu79 w u9] gcUO  U^:V܍Гlo>Ŧb1Z;G#8'$JpxAc=\5kXх}*q@捪dV)rз;Vh\#pkNVn 2H3V5}.-.FYWǽYҲ4 +7ti6ܒF1n~/i^ifLI+?=Exl*~AT#=\-NA cL&ajibM&zp-M&O2[hRbԔ@)8 PƇf4RRRqKILRR C<e8R(T6 WZzE%²1:V%D=+ɶL޽G1*<:1[p["ui:<%-gj|Aӑ0R1HiVUqF*h2trmoLȪ.rjGrU݃C,DВYcqҭځZ.V/ i)ł[Ҩ$!>rXZ QwKnjll׻cT6VJ~=(!Z7u-DYSfnjI.pŕnȪQ:>Etk:mǣ0H˟zٷF*i/WB&'ҙTaү])"`x05 9TjPSђTdL}5NZ5DV0᠉r*'W(͘>$ՎvpĠ5ϓ|٧99;E5b& UO5*)OC𯉼KitҽoD5󅛑*k_:ܯ9AxQQMw*:EFRWJSGcѺǐ}*s^n3 KcS c_7N[ c#>e#87xY,"Vq^-WjaMZU^L|b1*J<.Zi3OQ1J(11F JE75i^JHi-th 4PATݚΊOTGl 5Za VN6հ9rVT:u6s`Ju"*,*k_#Vs5mk&\q^0kZoQ-y :0UWb9j'\jktUʟj-^.-VXz(\S }돗<+EpRJxҽYЊnf U=JL[ ~ DX׷dasҼjB+#ϒ5_li&Kw)ș%WV]l r@xAV@vu?FAsZT*TU[64mDMf7WKy-J8ӦLe dջ㖪Y|'_A4zr[[nx/ֻXِⰮuP[MBq[f,>ϹzW:c?0) V䶿.WT`Hj TehrahDi)LD0u0%8Sií1"@jhV"k 5؁Ӛcuګܲ&2EZEa)p%3J*  QE(C4xjq X&/UJ&[""CK֐@!(֞a=W } i1ɩ`B{ jM"['+e[ӷF:wiqJ[G`E07ث0m"5l1-+%} 5['UʊGe+"u-' ˜`03-{طOnl~ޓlPo/Mnp|Lar#~52-iн)[HGZ HǮj^+zUOXn &PaU讎mdh>.(webm8JXȐ[p"sN TPD󲻩#*%$*EF"&"$mƓ(A;scZjM qtWb]§ZfJ@PiQf~6tT'TYtXeh\@sY>$E!Hyg:O\ :Fbn< c.EAV,vh.yʫ\n˰7U?ש^8~BHO.i5 džjm8ɥdU^?8%XPSpVv=4=隐>})"H}93R3'"TLpHc$ZC*[j;!9`$cP$ԶR-ڦsֺI+\*}+|*ys?oSjZAMjD5L9)y㊶JCMHSJИRJ4 \6P)iLbT.;hS(wR)qRRm\,E1RIu+jSSMRތS<-"H)HcPTjyB%k9;D!, e߆PVX+R!9ZIXGuܘR&:.CuVS4 ׇ,+UawۆinDg_qښo~<iB+HRf91a;fD/ Xn \ SՆ. [ WҪ$Ħ* oc9Fܵ9G5 ~iOX1AB76$PaȪTJdi$Bj*LGjx7&ڳIp= ]$Ѡ]“y%ՙ~99543&zbˊRl;Cb Cc'a=n SN1PYj _TYnZRR0.fVܹU bZV!++jQ GC_=ͭi~} vq \z8K6uĄT$UħFk؎%OSgzp<vD} &s1_=85~)xy*KGث r+>7 fyu#bZu4Q^ꖆ"IEUmU݊"P^f3_4w5GGtx,6 ٻJW)’Wm Ţ+` m:h)i:EU È_~~؈ׁ-loGY"e=chxf'"oƺkv܋ N|Պ+L j }}>O=@AN4Ji8oh^Sk v%1eҶ''p Ҫo*.UGsźT%#+ՅJ>βg:wC=*7l'4J/|ޝzԺTHw9\$)]KX ڲMCJioȷ*Mp$ d"|qYwY wQ4HURʛYC$3Fy#M˄WRwH ֦ȩoMV򵴦t"0w2?*C+dLF+nbdp+8TJ6'+ׄPG֫mp6Es| TљbHaQn' YX*;k}cn]1p[+c\R p}+Lۀ!G8r4XSWޮ0)8q4A0ا 4)T;]>خ>cVw0fݞ@YYkЎǛ7UI⻛eFA\4')lzW.'due]^qDa!#⫈eڄ`Rk"kt 6;TZy\ebZ̲Qlڀ>QdCtI6+DkTbSHjRJZJg#hqP1RJjno-aQ# kV3UZ{3NsJ) Pi?-0SMApp=T=)-ɓr@ٱ=N:ֆB)Eq@=4SE:E(q]9jDz}\AlW "9 a#niA#pimn*Ɂ7"bsJI)~sRU-Ոp~QU 1;MgwSqH49()~N@!Zw* %cE51fq5a7ˑPIn)B~\P"~ejsV!۹S!&HQ{Fs1b;$rWD6hqޡW #zU|ҴQ劮.KRe$gi:e8cY$zl1mVdS6Rbc'͚FW 843&1*UAb:UL|# x\􉵱ZzXHHS"Í4_)bTH曺 &ǖ[ajnKMF[\Ļx7ӕh;R&6!4<p4 F4?;9A;f F)ₓ ON*<Lt]Ue;) #lImcJBKnzR۔ [rtE6n vV&9&6uFFudk.kD eQZe:Y"WҞh8'Zj7WT]]/10Zc +1kIj{4]$F15"M\u <9ֶsnk"OZnvl:@yeWHOZUٞw旿*<kцƓ3(QVI,G +|7Hg;X׌~a^M}pctS;)rխ;|։1^nuU7} E-aIKEP)pSQRLtVA@)hV)L'؊VR8"}8I]MiIIIVUG 3WM2RocIvlSW3Vq_ABYzѺMP-°\ճ t5˹ӊFwЗK"zrM4W{$(Orl$氤% yDU i@v{W+܆5ԙ&Pq'r9( G~ E}65< UeEC^= yli1s(&9;ff+"kEN)p[5qxHk&(=*ID>2 , cS`qQp!94m3 S<̂) bcO= Fy4G($m/"eh'5p1[j 1Mtصa\ W%9oDۿUPjz*|BRSU>/ZA2ī{W6!h7Sf"c7Uhqs0\v;.XKQRo ! F@=HMV.-CsD*h[Д'Ҫ RI (r+S4x 8SiC:T ֬%g#X/Jzn+bi *V歷ݫW4;QMN$(M RsM;"ubܞxɛmuE:|Ʀ3vfqب8&rj O"ڐ n*"jGT?ZKz):ڙ#M-Gji&ǓIM!Ҝ Yl8n$C45Aܼ>ly模EhJneFnqWύ)p.kb@62^PjC)B)θr&ۥǽGtTzK7`)=fA[uhOO)Od892&xP0p=,cWFi@TZĊ<>AsLUxzsN,qi@Lթtr)j;"[柒87 Pzlw*SeOJc S!*5> "ćrvƯ/0fݐ5I2f0I-|Uk`9ҝrI^E FqڅCV$ (֨).*`T:GZ&&9JL *'M5oxhU2C*b{Ojö"P:pfB(8.q@yȉ*BM">B0\T`E 3@(\=)J*Ns ϵ8ze*+B Nsx05?H 5nj\ǹVx"Fzm/ 9U5-Q:N㩄dQY1v*sw+YZB`7xDՑ6XTkO 9쎔88=ܛ-=*(B fsƿPGaތ >]rWWmv^caW9'EWPʀ$)xGU:"֞5Z}A".k%!K/{$uyX2RnP=^Ws5Dѥ r'H u&G of/%tҊcȁ<[g~~"\HGI+<.k_iKnzP6!9ּեVnm饩 TN{%P 'ƳIw՝<qJ2x{טݙ%XU3؏BkxS+WJLr;C~Qxʕ\qM3H8 s\iN:\04՗QsK*~iv5SuF)l$(u*a~U 98 WN9F|(&t$ݹcajA C3Ҝ!xAe &*zACZsK}jV1Sv=Vԫ (ZPE Y'8l"[CA wqUbIQ%Q0y5]85jHr4#\ϜMre;*Y @0UsVʚHxL)6m*22jLVqTPy4TI)y] cZz`G64fHXz0}j#Ϡ^F;⍹7v ;ڤri R:(8cMT1UJĚt6860 }*|EU\v2ǭB#&Oj yAr @Zޠn3Sۿ{Rb-ơa/i*k6xwIЀj(T QSێid͆\ {qL!)_pCkZ+<泮cqc ROqSeG4ˁh BBڜ(hJU@\ǥL999MY*Ŏ)Āxk)ި4̧ڐܜw,O)FrP94\v.qHG(9h@8zPp8i basVmG9U w<'jW 6+brcB7[j=x[Ipm1 !I=}KF*yYcε Kjk˂zˈUbii+ۂ;mW4ydkʥ6?{F{ih*RfR(VޓۂخJψ$tHjj:Tå}FK3RWKEMr_,]N+ȗ|d=!^\pkV~u>n+&9YI>XOsmH#ÎtrrB{VӃ>Vqfh(qNY.楎enzN,uRv,CqT3ʄ0E'vGv*t1T^lUdR7 j鳗C4mYL|¹"zN{ !䚎mGӓkI#x5 [kkc 9tlr#lfOxN:^<?%O2F%F)mpVLmVe1. JpxzB=c$@\ T5%F볱^{Bi)0@ I?z \JU7P9Vjk4kߧuM(Ҋ䂻1\(<⻟>B1zRgNkk ^ԲCgV TFM|˩spW`^ OmEc6/gЙe۞),yjW,z!{n2Cdӆ[i+$TSc*ԌA lQuka&xq>gMA%{ZnF'9\-748oO1lHGzk'8Q5j˾o=hk/92:ժal,֧IXR9^{Li:KхrNWL2`#]Y5sHpAMƪ!ɣoY5$w@M`-bjdӖ-YU ^ 3ު P$a\dTN٨|zkK`dLjKFj1/Ul$K&P%d\lo_.݅sRWe]S M5r6JFEW ["&BGh6DdžMƶ]XVwë+54;Hۏ i|~444Vo˞M#2nzb[OZ]Gf; oZzzA>)~zesF%8f&Ŧ'#. ⫎zpx]/CKRHӭCLbZ^V%Hv(t=dԊ8Z[E]a#kfڑBR!wi4u&y"1 QxW-U|#˚TEHs։+bEKiɤcU3nKcx*$co[e\nGhLM8{v\8-թXM\aH*تh2E`sCh-SU!o/8塼ٚ_zʐ M! )LzR:fD;9=+tpj{gT+i5eܚwcckijjfR{ӂg$rl1xF %>ri9*S0ȤAi@VNF\ۮn^hQ8,~=Ȑ9 D#Skr(8λ}3't$M?9>hn9A,M${k?wCҊ!KTVxlrnjǼ`TNP|ʷR3t+[tDZZG'bGxTl mgf y@ICEl.TgipeO\ai'HK+u[{<(@ӂfu݇1@@;oQ+76O1zQ0VGSre1BMɱQo'g5Z.M h4oB\L,RH%Iv+7!wvwTbƙzM֟(:wy^`C\cPqwZ~5-2=BĠp}k(溝;P)5V*OS:G+4rR@CҥBíu^b X`h֍X̘9T'5t/Z>RkE#cSȵ. hdݸf$u 4,P杒j3 bnHDdZaJr|/@9/84M栵U3M.bO3UHMF9\1U>3Hg1k4OZ!E15-< X7#ֲ;¥m4GZz:h~{Qj31i7eKQOfM7M2O^՚3#֩yu^їGOS&|9pͻ5njAQw%Z:H8RvA,vEe}NPF0G(RdB:T8;btiGJJ\P1P)sO i ;0CǃU%jѪ R3<ITA(E9ɦ(CbUն "RDj4Qc"*i8TϜ`Q , FN%.vȩ<<ЮE38WpB fO)@! ҭ3F(nrjpƙmϗ(95J՝ՎP9,n|غ. hvYaT~Bm>Vfa_zDaM`Sj؃ Pl❮"emT gҥE)Ycz~@6qZ[@ZU*ɴdձT7*M4&EOeSPqX)>8dt`TN*Gޟ0rj >Wj8&1Q@ecYW*>3ޘ-@2,qT*R 57*ńP8hAL72e3SXHc\նڨ.yp29qW],٩\Pւ: MsWd`ftǓɪdI9#$##`i\v9Rcn@> } 1MA+",|*r9S qNۏʖ!4H4\DL9zF?.{fB9)1٥F1LP[jPLD^) K4qx)ڜiP"J@'ާq +)>Zx(N?p4MjK:D˸ZӊՁwjƣ-ZU 56/SMؤO5u4֘ƺӚ %CLjȘ)LFlBiM4Ji!J 6PxSi‘hQNR(ZiܦPQT!A0SJE!sR-F*THӢ?+tvo*XzaM*O5UuGwFD~>_Gc~5z ›zm,Ҵ .l鏽{chp=ဧBЮybЧv)k<*+B5ojyoFׂy.Yn0 ].٭6;ry}IcZ%8xX=M?mO]BXJ*IwI!v<zW7:48(In:9Tlpi\iLP@j4إ9Sy8)@_0ɸB[RMnwѾ!\w{.4TKFz͞&4CfKU[&MKpje/pi3QN /*gpʔe")\sQ7Z7b)(fi0 њJ(sNK@;4 ni) ZE1EH6&Zz7EȹZ{T0r+'*uSJ:T6\PҝH -I`)E&(N 46) W"H xpAU[Sa8ASR޴4FݪJORr-Wy3JP4crtQ6I!Lݞg%'4܏;QqJK¹1 yI!j7b6f&SD̀z isj5hɹc}*cUxZ/Qu."“ڮJVrJ+ApzwUp5$s٨ Ub)gdXsՈ[*PINsړ l*6p`:hɽ{t1E9ǂ@Lپ~kb1X.Ek'v sg+~jаզE]<+$犲1 RdY &3TޞXX P UY9O0 BOyfrެ"hhG)uMTj(u LQQzI!8kM N= !#RLTdqR20k3`` Cȫ!rJNyT⑺})ȢYCYHMB$4ڒFs8`'5iHr=HcʁWы/=+ QiZ8#"@94BGmj)yVHGBvJX>S`Mq['5@e]>oI[Q_$j_w}s:M#eZFs:ڜ:U 1֦ț0ԍQ7Jg!iӚjѓ4Jd\ZZL҃@NN,J)iӅ#BTiN]4QKLBz?yةr5"vxz*qx4#V8 eU">FJ2:Ϳ F/]:VmW5ex8^-;xQE+3Z̰qZuZ7Ⱦˍ5 #JRgcUF}kFVt΃jk1nU$shzS) RXY1"w/7zBO\T/ L,+XmjRDPsv@=PĞOzd\u3𦨡;o~Jt4֘UZ޳cYM7A!]w֚`us4*4;Ur[8J*S1I۹kxָYy'p+9ttAÚփhΪG a GkGci4RS{7qֺ5,2ORA]%B,Llv:%T`qKG5w8$vBVDZu2<=70 `Tq3Icnw/j9Hvh+ ң;>5`'J214A'sp3ހi0أ)zk#bLa9$'1l I_'ҧ=OUcVwqҒ75`w5, Q$ xsjW]m=L58m$&_,{T>p<I8"KpAI} >>[U2984F}J# f\ ^UʃL caVUF֨hmR BrgLܜW?ŵ[!5&cȥOG2j# 8҃THi)x5g"64iY51lJJ %2J )B*JD*1R)4DҚÚrtSNqE-(P )Ԋ)O=(MHa=k4ˡ%p)ɍwWGC|YdW&2F\To^k,tfBR1)ֱv6 y w;:bOjF9ZzO]NVxO6|wy2ȥq (e)ҳh45庻U7kbjʍ\W˪Pu>|E*#sLCHRؾf?Ȧ8CiD@UhƙyjLfNM=;Ṛh>H׋JϢ lqHW{S\MPE5To?1ݰ ; e^SZleV7O\ƋܢU*%@Q'3M zM+[Sw]~u溛o$Vf.cpHTx5_f\iȜՎ>B8^5\ToɪCGSn1RE15fc2Eo{P0]fҰ >) rS**G647\I'U73nktb~lsUUR+Q{Xus7jeW[G=) sřxOX q^<8B\WP 51ƼU=\9⨸洮x܃*HH4)N{CN4L!u6 IKHh$JJZC@QK@@`zSH/4PI=[L+=@E#BxE=8#V=KW N=GɨӘL~idƱQԝ*fK?[Ŕ ''`t7¦GM}겂ZӖ<'5AQ1ȪDL3z`)$  5NOf( zR`2D g߷&v|}M+dT~hHj~k>VұGz~ի y!4i2+C;L!|Q`W剨ީ#9I4M0m-RRxNHTj jUf&CJ{S9Am9i1J( FyǭITiRiZ z hU54GS.9Dy_SCq\:k@ +%jq.* zv'ե5n\,7{I*=;Ju6_W(Hv θX-3\l(5ԸAqZէPjWnHkĤUȘ) ]3y;TosPAɦ-AvPbkj άOCU΍'SEEbIeͨ)ޭSlQ#k*'xX;Rj"]S:ڪ˪.5Ө!P=Ž T.&.:Dqysj Cj˨HRK<β$UZmLF8DoOPyɭN5yiWhsS ~LfI^3䚯sMDMtEhsJWeޤnFj> ZWȢLB(# I )\1+gzKd-L 6JpjC'JM\`ªg+PPL0)@84T*%V#⥗rŴ[Vݽ@刮ĕ\ugJݷxIij+lBkFv(5!^iBaѭNK y5e"$m$1EtMf^*wWsUN+Us;՝XqmA=*vNĞx1.o4bRK6vqVmsҷlV029[ʣ8dAicrEhaGHQB[RJjVrzJ]Eue{BY;84(יWQ;XuG?A5E'*5:b')X "ojuc^oK+(S+?ݣlT1ڶ6pi%g=kTeMvsj&Ue9gM5!f,i4FCKI@AEQE9iM )ZB)2*XNJb:aQb(ayyJ'Uʄnb1ȥm;j5M^=;V>՛{4rooZW1mg50*eAoCmJNG9^&S;hɲM"Nh)fMjL  )}xJC{ [NQ8QrhS,/Jp4:gJM&iTTScM%8j枦 ֑ 41'!!4HE!aڗviy9)F){T,P2Q699jv  k-J@ǵ4D 13 AT"ZbXb &MCt,JJcjM/ԛOvP֢.tv5YYu~MHdO\֫˚͘dV+ҝhU.9rҭ[ͽJStD N&iHZUAJ+cA(F })H)HnLV ڑZqɬIw84u44!pXU- qRA Ym9YbAsb|=jȈ$ÑVXp C *"W7@} @ݎh6*8~*3I7l#Ǩ-i]&:[ckpsSnFS Q)A%Aӳ*=#rsCO;9 V5bo-R'>[ $ٙxP3 ǧqJhaZ3!@f'ވC, J+]Ilr*q֤mHوD.iNY *?75*)h" Zj ֜WnM5y4xlIy5 S&Vz*A526PgATA;X8/0@NsA֜/G\)ȟiBEcNqRH|ިFp=ĹST*Q7 mzU+w3)],k>m>ՊOC.TXۮ5 *=E4)L֩X4Z`em>\)ҕ)>5j TGd":T(sS 5^xxXZ(Sn3^kkW<7X0#+qTLSr{9|Rr][fɫ1<Y:3Z*q;]Fi6)Pܧ@;~5 C/46rƢAk9<-A2 4rޱ~lSZW=MRgMijjqǹ|dVe5i+*}C< % LcZ*q3s%ۖsL LcN5hBlSPRH 4+DsX8 AҔR- j7yaV`UYPܲ)›(gJO^j:x4Hq8Ě)X.HLZpeI@R4hlv% iy M".?5^\犗<U- eUOBO4♞is+qB˞(<f%Wn3P)>M$lsrU4jLqKڂ⡐@qQB)cԃAnkl@W1 õtv|B{{*Sj2jщyp)S#ɊXmsV#)M)3HMTTCQGZj枒d5^0XS79) 4MRð>F G+ =i_PH]5qB>wzٚdM"(!V]ꄤUKv wM5ߧ2rpSCdsVy(*Sh+Es*pxTn7t#iS֓jY^(mN+7Yʸ1^U1بϸ է<:S"A=1LV"+qڣF'ҮŴ S=*SZGq֤Y*OA$Cv /CScml恲p\ zޚ {ʝKc4,3`>)d*Yb 9Ns?e#[t5B&\U*RbZ  ښI p#1ӶLzdvLM+@'CA8E14"L|^x?!EsN`jeS>f4ʹS5iزIS#@`R bJ}0}+}O!ϥs|\;V}+YqЗSgJ1]922TDғL5G+bisLbLsEq٣4@;94ZJ)h-%-)iqNZ:x57L^Ԕ)qJX@*ER(R 8m(hT"@j@j%IFt\)##Q+4O⼦ɶ>>LFq mǶB:+×hң9F+lV}׏,G)-zc4h_~*񻻖=|Ijh q3ȯo#/pk*z9ލB19ɪnj" ؼT~g $t4>Tn٧bn^p1Alj$lpU$&~jCZGb[,549ݪ|eM-LW͚ a6i*w(Bb&*9838*<ԩL1MO4JqX1Pc) N74֛@ - @ 9S' \TG!m+qJi)($4 2EJ#Ehq?J$cN1Dr+̓ TaOZ70]kTN4giXmV,Qv5D*L_?gRҽHvFv9q755cNNRTq)`R)֝Ɠ21pZ ɪ6v1&#;ϭksqX v73jˑV LeTt0QW*\VɜҍqE8t 1F)h.(bbRZn)Qu bSRHCҜ +ENCFQN"$j0iChV:TjjNթͳQue7*JoSq{f <''|O zUQ+UqEQ^Csk,ARYKgOF uKBR@q⣴ ;Pɨ[`ktȈin)4+Dn) L٪&3sH9iEU+=DilOblRi3E%;e:)ibRPj}*aPM҄'i($ :DWLbhUf*%DAbKtWq#4 ֻ/i~YC{W;d^k a"FnsO,}zc ֥;mW=yH@bL.jD'`eNiOƓM!RK^w2 B@I*Ƥ+Ui$޸Xt=٭:R\zm(.wHygvS^\:(ޞSvGF.Uh#5d+Ԓ).o!ѷڝ |U\$Jf#>p>°?Z۝X6oݧ'i i;reCfl\&,٬}O] @ƹAvIyҧW>z.ǩƇ-YnSi$ǚǼ·9vAH\!M%6IyppFiȨI6Uݍ03Vt•d'&=j]ޜ"KH!,~0TUabSܛF0ipiK;S4||$ZNcTcڹ9t ftzy@= [Zİdt k5N*bXv5iyø 5u&g>!isZOԄ bkأ kFr.0ƻ;Ѻ\tڙQ#ҚJءM61qL&GfޠNJhjL_R`hniXHFO5n$U1֮=@s+\Oo-kV}lZ[&sQE2E4- 4RwAhj)[U#98TbMu!3bcSB2jExE74Hw)&yErzSSn?4SHb)ؠ(ˊшJqHLE2g J Tz:Rb@XS 84Fr4r*6H'lfNqHT,M1Jk$SȠLTxƅT46)*)4#Rȁ9Z⋁ hLĕB@@**I 2(@ɦ܏ҤFېp*SLNzTSF1v#QN=)ETtzB=-?j6wGvτljuEFCZܴJF4c:Nsɩ(g'J܌ޠ8, NMX^*i3jf( *us"MP+t܌ k#tF if[ZB.YqM'橰(~ZrA9^Tr6h͚co9SD昉3"T5.v"r+JȥqpVU@5uiEd˨=.u5^}9]jz̪? sB[4#fdբE-LfE0LCXJa&M6!IKLAH-g4iE?^(#ړo!^)Bf ⠔\kv=*&Bi I$f7z* @H5j)zU\RB5#td  BjKS}Qӧpº?%q@yDt{-:/\V@+ʫ5OGsa^7qZO YJP:}R0 qݫ)5 󩬙(EǚH.Wz@^ic?TgzliX]3(hWkfYPשH!'y" sU*zȽdv뜚cwbĩl^kZrZr2:1uVWO"5uE$Mr{W7&guU{3kT)^LTL+2Qڽq\MaɪG;`JGKT[!5+C))5.: +<)56z[[\g51+̟iMu/4GZu-JDr}oij\]c`Vk{H /z~}kWPCfB[F洡xq8oԦtա v=F,V}޿gl<,qOsu=XkUr%鹔04ֲw;i./4*CcZ;#e-s[j";cnT; PZq_˞fL>(F:">:^ij{\>&gUz~>CMI#YW3!c#5V%TJҍDdեfpƲΠÅ'4MiVw"U.h-dj{vvaQhfuD))Ћ4GY A\QqyU9S qbT$(9S!J:ќSAzSFm`9$ITiH-0F[p 9Z#)eoJ v>}qN6E&SёtOMiq`O5 N3W]ɦ!1|Vn$a]-m^] 8E.\s>bfe fpե-EE)kQk6; 99Vja5i iJM72Y 4ҘҙKav?v[OsҼ 9#7?Ďok赡l)naWiG4A{`ers8?K~ӣ1`ye_*A? j7oAl }_I a>GMݦfcTܳhߞ:NZY0wQ_-vH݌LT DT?w4/ROiqDxv>)(=7e[O~ <jLjFp<NJ@sj5®l&>T4x`1Z.L=x*;8e=TKu!ev'{T/+/o␃@MZ:K q̑$t\c#5KH=!+mEk~WVbUzƟfq+E-*˙U9'ckW sKo!B}3RJhIm-a]A,k} 49rݗ5xkh7B}E|ӝ zӉXAV4^0ff;Y84Էr$.0PEz2<%agjrk@>Ʈ_SoީR),CM-MN SY~n)|sӒ6ݞph \F:)BzԻ1Zk(F4&f}) SQ+ 3QOV5Wn֭# =i  &T䚳 jvҚqQB*㊏qj]u"m?*8t9*>^]*t`qHct#-׊ sT(a4y|pkT6X~l[us6oisYUZOVm{Vs]3j5O;"RINAv9VJ\IAliZa)L".(X5"814Tu*LQR)-; vqJJtiH%.E3o5iS `RNS(R";SKFE:CZ`RDjQҢZOp¶,_ ޱOZѳCGiwӃ^&"lnX4d W>Kk$$ {VIVc5+:(s nh&k %;zF9^ | w$Wz,/ta^ })WqǨ7G!qS=WsuĆ5j&4j653cOZJ "n)g4XEu8Ah8}(K 1Su80)\V x\hvi?=jM\dh=) ϭE#.RhvۮR[1HVHV!*k57Ic8aҹ*H%1H532*L RT902׏+4 tK&>xx=G"{j5ge(Los$#iʌtXNﴣ/ا"G ~HXܼ%0AKArj+_]<~8~ Fc[ȱ(©Ul@H$UUQ&dO-44;jq<4e$e&H:>mdьepjΪ-GL JSЊbih|8T~cG ky5rF~\ug ZpI~LH:ZC(ܨD4g=]bq=hky }j[+0ΛszV[}7yI{tn?w1Ku}>"^޵PwSM<j@P=o(iMI3^?1 V-lbq&*Vjmiq@Zx-4j@9qM JW(IQIjlUQSEI4u-ϔ UXپY>^|au67f A͈MrT#4ꡥ]S֯קS]OqqLa搎kp+:rfN0V \Wt",Rf*epkW{x[B(6wN9o]՝XW!ɯ.x^rzա)BV=,b58N,BSZ𔀑Zb<;Q]ysiTS@њr@Ի0i‹ 2@}ۮj0isJLLriDPf)X&LefBKJ F X=CԬ;i3Nrm4xIӃPXJ_5\S`9TdFpEri&M+džj yILInxEqŹgC֒Aњ`!4TfZC7|=٪jX6 ʙUYTb1yrHW)=*Q04(j, & Y3'9W,I&*d4=j E01Vwg5hVRֶO4㹡PtکZX\zW6:0ЧanFwWIF@Cph,>)L i8+(@iIa+9b F*wN3QbaVB1QV.$qQMԢ͞")@c64SJzTQsI@KP0'zSL'2@sOD .VM֪SF)4;otQK[ ݵr[X;k2۳gk<zaWܠs_qjs.)*MKY: XyI5gPfS"BG5sr͒y5r|:v. t^yq ףfSR1\幯¶'f3JhWLTҘjS8JQofh'T"XMNt XV \X8*yTgN*(J6&x*qSsN.G.ʓEpx'MpU/\{UQL7=iGF6r,b)b=7njJъ\\Fi+$, *M!Af!qO,eǭ0HMc4Ri&i2(1 Fi3FhsFiPQ5D5\Q43NEù8l҆Rb% I*<ù <ѺF,ġiX"mԻԻX|}CCsJX-L߆i7Q`/JMY)OW&Ҝ CpjMr=&WoǓGң8VSsJzPM6iƚnpiTfLT(,皞*~^4m!Ԫxn2CE]X\ƺ\kkz;Tܒ>zW9"3a 54P%AȮN?ץrOۀ+ CjF7"ުj¾#r2VF+LH=k/UZ݆{SĄ2Cfx^3a\IN Lƶ)@޴qNJ6ԥh;F?E?|Fgֻ3+\GUERKSZGTQc=MG;^4,ႁpix LFvqKs= { ?APx9{Bx|C:o5(cY,@ߩ;>+Р^mnqNL@Hv`sjMV1֡zHڄKl$"9FaCL仙BX#&N zT |PM @ih@RRIZ-QLӻPfqL#(ŰjHE $aA\y̿Z+b |И44 Lw"qt_tlHSLs@ӃI 4fNy@ )_F:z RF) s-CsMi j曻,P3eHmwZV`:rjo4Ycɩp1J{τljoܶy;F18/=<ЍL"a9OZȥJ<ӐSТUJiʂqBb*8jtN)֔sO,r[nV8?t6:JRji"W"DO ̓VFvjg*Z94&ߒM1هzif+jIUVn) &J>_4 $QE=y4#aɜch! qJN)yɤFr+oKNFt t"{ hN`Kf_Zh駪g& i 9$Sd?1k'-CiWi%RjS♚QL=hE8S)A4-/ZE(4 dQb4i8QQb撚̓J, n<Ӕh|ĄKPOɡ l84 fi4Fi vCqR#T4qR_֥aXH# H5Y>yײyQs xlۘ{'KGsR]_.6+VmЮ-ׯRqg%h6_pLP'a_I"qYH!B TzUбȒֱ$PI2UtX䜮JT{0yTdsZ&bƅࢁNW @4s;(& )iTqڙ)iu((L)sA44QBTv֎Tk#"e3 #WQN\CN!49Qc[&iIZ!8iK њJ)(II`?4f$fC3M ;54hfi)F)3Ihh*<ӃPRcOS% AHcJiZviz)TDW,=<9h"`iNihigyCR並M?4;0i@;А&&cQI1]n)< W(qR泖a2(EsE[5"6+=.V,l=?xG&r+=MiIYrpjՈVL(KBCֺ:uHsWmڼUUmKsv̌fWDtXf]OXTC$ŎjOP+Hql&#(1FvE%`h &M4KqMS$$3+\oUEuOHVUE2/Vo@{;e$1s\Vj^r\P ձ/,t_G_Oki^#bo_cށ3`V ii\N1ˣ(dc^%#%`e_0EÎ*=VG-X,x&>w pޣ6˚ J[I!pGppŠf\Ӱ\J8wBjٷd=i3g߷4}ƱI{_ ߷5C@B _pư@{_ ߷5IHfЂƞ ߷5) &ƚ-scwL߷4g_QҊEg_-okt "Ɯ-ok4 LWomkZ*jYkAV?ƺ_cC{fB8\Im0&*™,P>+|O;vᕠ죞}TyFc0Ny9q+K6lB75ŵ]ƳAAZC.-Ɩ|^/+)q0k{O[`Yr*04/߷5]-'y#b\tbh;?c}O5NN0Z~/ӖƱcK{e~/Z 3ցqEjF Aiok-G4\,t?f#iOe?/Zc= f O[CmkXaNhX{{B>_y`rڟXfiC.&Ʋ8sj6M)RaIs,OR$Oj?[kKg?F5rcU2 *9~|T`i~^ЮSLHj)TLXs@5d*HHݞ U@I8q*[=|桚d^zPQ+s@9=jC/[tت?ϊh&*)985<=+zb6~F~j[FqT*z{cJxZ"BF*?'@ HpzD(0#"G4'h=i \dQT17䈭eHS֤-$R4IC=*c#M7^\GfqSI/&oֺK,(l*E-f^YfiU"OZwjCANZAJ()™N%i)h ;SN@4gq&8҃LP~i R5RERRRюhW4)86*xP~ؤpL4ۿ.N Į)85Tu9 X1\]'>F#$]W',nz5B wx _k}R"0UbH+ox~uIɯ=|KQ@{՗T9FlL5!fgvihPj,CSTdʗ=( 3K  Gw/,1H.hȤMH[fh\yjc7*6~ 4djMT?0f^*A|'4ޥ?TYxh"(TRi4RcɦLhĦv3A74ӱF)m%;1S҅QOiqNcy;,4RҁK@XAN@ĢBh4LiwT! Vd  4X9iwUsNӰ]iR9i54rhhfxoz2zqjޕL)CSh3Q;4E!JϑP*MVd#2| I?Q_zPiDOJZ\:hheG5xWdt"Q:n*DkDg-=c)8(A$x `PTv栟zJCQcnp-L)杉s4)v4<Aat85ɢR4 Z 5?5HE0 h-8+Ec>ok赮 ZG20ګ \%ʠ]1wrjv6.- zDZ>zޑ3=7GSJ\ d,ft4m62j@۔iQi?F5s_2$yE_,91='Hhpg5nҬy?7JdN)v I${NE"_B"W,`,SD.M!WL ; CQ摍0rhY qH[+)6&Rd?z@d҃QҒN-'z~2iAa`<5(+cJ&Vb\@dTδXO(";id0M7.Ǡx Ďok赮[AZo#kZ-ynsD.TdƱ%QTHmoe{<] #w+\MVd.&q$j涷BIU|R2Ch 1VSkOQ^8PpqLBf 3Pi1I3Hw Q3Nxi1A6) 04Si€HhPQEN wjC)E! 6{%m;ՓU\QH 84%IsFJjI"\D#.k>֣31+s2DUԫ)r('H`PNVv@Nk:NԲt58W|~K@ *oiwI#IZb+v)YvR4 pC)P54C"sKq@J~SfCS}^yXFŜnV'xy#jlHF;=EfuRzuf֫_Seیwr+xLPFAAO#E"Zf Z'Z^?dS椤9EF:5ӚW*J)P\ #.EM\m\S$[AZo#}kZc{hxy:=9DqҦQ xbLX,E h=z5$Hcg *s6Xi?:ʭ@bȮzMb7Jb,Y-18К=b@"ƔCkX4O>kX҃HfoiƲiF?oh߷5J`m{_ ߷5(4Z~/{_Ţ7/?ok){_QbR@F _i?~/1 존u_Bհ8b:~'` d&RsL |3Xث"W,f׮]s{% `=kH䞤piMZc@[L 緵9fmj$?=OQ= 1okoioj?/BSdLf$|Ʈ}_j1*bNiҵOoj/8LЄl6 7;{]~'bN&ћ `Ӛ4ojG߷5'" `jkR~_X-T}_JÚx-HƣZ~!PkJZ}ưWN9=XFw&x=)v k)2Q)&{OQ9153FdxBƮ+YB52*&v㷽:{EAV"*8% 1HqS~d~Q=f;F{T[UqN(9EB1c)⨂Li$P]';eڛ0sRʀ$ U.MYUox4._6=+4_#aT}d*i;sT$p"%L☬ةLNJK\2I7|N7Z,;^lo; P=i4$5`c^hbb1*}ې V- 6hAz{&sTAzorzeܠ5!VMrc5hoFZ1bv:x^+kVVjqS%\x\Z21T+ +Qɫf)& ;Qrl=:R74E4h4ў \pibM0i4њ}أ4q&ihsFig)4L&S>(=) i4DUԒjZ;7*m4b#L"uѓb"#;m8!6`Tj$;hۚ-;m.ʙl!\'.ʶqGa|j_.T]"axԮT{I4i"#MњԹ")% E05!j|y _ZS7sG(sJBaw v'afڐS$jO4qH 1L'c@jXzԁ2z7QfhW%-HZ.hqQTdS PئW'+4N9bI$ъbE)@RPM!PE0J iG4Ȥ4 JC֝ILBQF)1@\f\RQE$jZ]Kjfph'M4@9*rN_ RbCV =*$\JYe46)$J=""p*aEG50$\.*@jI p)۰dSXh6sSj$1R+S1@4 PҸ朇1m#^$Ѝw>"V?F5sW?#S!nqr@QD\C5"ؚ.&V[\ qa_H'֕ƌ>X*4٤`6Ujgn=j6lTGZq,Xuj6ESE> I}ۑPYN3@sCVm~az%ޕHԪ3Ir5;8i^j999L0ғ<"D$ʃT V1wXU"9z6L>zw;&SJz#jGezV!pOU\;DM!9ɭ%]nCSS?43E.qHI4fKLN0S`ϭ! J\R@ ~9ivSq؋oݵ9Qq؇e”ԉq)ȕ[گ4yҥk\qYVϵ}l›YOFmOTWJ殘yAZϘӔcZ~B9BsMHv)5YX\cDҖR RrKުyXqU ILN:Ul_JΞA\#veRVCYc6 qP)j̮4R\a4L1 cL4=M?ihjozse:҃CH(M٣4@0gҜ,83NS4+c"ْ/&aG-\楴حҞ014☚iٖcښ*E}g57#8PQ+,A I+lzW5:2aPP\͖&I5.U,3֪9-RBª@3$t=ꡐ3Wߘ8ɥB˵Kw1P(jĵ(3hN  σ%FMZ' Y4lN H8(GTO8_.M3'4-FqWc>kMnCl3OvqTb`2sSmKsМ'|EHEOi猟ɣ?@F*FB B)MKB)FE4dHih⒟I6\RPK1IL.x) }%&isL4qLQZCE&h[6g1 ŭK04ԙ⑟"-ԁU5Hdk1@ǩ欲hF~^6L會o(]p3IjrҸ( YW1&q:mcg8S@qS'N1s=Wȶ`+A E yQ4J܎*1Ҟ5)"i,qHM&.$4nprE4 7TdxJƮgPjގhG1s}>$ЍLʊ%.T-/9'sL9gr?4jH❀zqؙ%ɦ>@GJ@pi֢a*DL!sSOWcHc"zEM`)z2"&_ˊgˊlFh,"">au}7F*Ĺ:Zb( 5 v gws )KT$ZPB)J+ _f}c d;SR3.WFikb"G5FlIŠ} )A%(]V"57xզjՀU1ՀV4r*0w\M'ٲLs*;Y5^w"RPԤ *彚#|wk5Ejΐ2N󚧂NM4{ۅMمң}kx+7WJT1\+j+Rѥi^'\ V!z{Gj-Wx SSP! ׉IAY8H[+:ԴVT A ĒookEw, }kZc nsZ-=Tc˭*}C,@R]qP\OqĬwBW "u?*k|YOnsweFu{Sk) ]i{(QWQYNiSE4 D=mSmKi""mM"j]lbmsAL . "`)bLAJH J)깢ʳ*zD r. &bҌx:UkiR6W8U^XVWE'u;:CF̎YN#h1M34M9V1!%T`bFMRNݑQTnq@\J-Բ>5@mQD\ӥ'2.tR_zsO`H\s 9)riҹIlɧp@*y ٞ$յA֤X֗0rtc`Jx\9S9V.*}zRM;ʫT3H TA&j݂yjS29"n]5yXo$ _.Fz a=@ 7ȌLh=QƄBDd5g+TM6U hI 懊g9vc*Ojc&(TT1TM{USS2ߞ)A_hqYO0>j+C ŠMA?V$JǚjR(1Lү=9FPӈqHB:T4h sQ`ӈ9w"{N:vsSn),FE)RsJ^i*L P(Xf*LfӶTyF)'zaZ="*sM\D) i(Tl*vZ;X9B)1LMHE2rxbsHS*]q) 柶8h^iqH1֍X.8iԛQr) 4XDeOziE-]Y] \,R1iցzS Y=(>Y) #ook赮[AZkNjZ- <֚& @I55FPzS~c I9#6 Rןw܏?NןGh\АFv}E1%eœER֟Gir?ƞ?:<绖`tF(37RL#v3M-0iҚm fE)b)8S3Ku4fӈ⁉K@ SE3SI'4fi HZ51N&) zB٠c06N)Q<hG"Ih4Sqq<҂=(b(4cx^(JG@O"vh)iA 4PhH)M4g4ZP)H`8 RiE{?P1f=>'kG1OMO A6)6 g^{U-/3ңʊ6O_)zn񊉚znjBب.`";'~ЎǗ?e (1Z:CmCjQQ^,ғ֫qFdf%yǨNZZF?v)␵D4$'CfMqOZMsLDTl(qFLDl( aT8AL8;x3p9XZ\^N ۗ>*2mƖ)HqKڂYRsR0ջuMX>j5 k&WVCGyvQ(g @₄T(S<=j_/{Rl%y N+3R˫;8eR)L)W S UWe!J/ڋPѷcV+4U9bKS򽨸XA4U'֊5/M1%BjFMNًԛ+zR L<Ґqқ12ͺj. -Z\s;?/F)jx^\i^UeO*,SHKRm(K)6)A8曾 FM&8&~lH`R5#4zqKRZvƅ+N:R%qO=)!ސM2a\c(bKZ,bZSN2dLi0h\6FqQuL5V˛(Uya\fZ6ztt#C)yձ[=MGm˧)RRR)!KSSHh질P5("/W|Ҙ;HW!F6W j>,Iv)GaR#=*AKb!*E\SpޑH^6ӃR&(T+J@#mNzRd%x|բ͔\N+RH*/ک2Z)y{xnx['iV!튳֐!bԶZ!|n3)(sP 0ASj V2*-V**+A fUlI)l s%Rj c EjCf~( n2JR9fX;f\uXبhѾAGJvxR& RA֗(JFE0J9BRn4X.FB1I).)jaj\S vF)4?v)4H^4xbI {nM! Oz7q\S'b藊w1TX,aY,>Ʈ 4sҭrةcI[E-USN )T)Q!YsOFO4X6)֋dž:T@ZPNqAQo ;%4X.L͜b٨|t/Errj7z{TnIr_2c@sMa\|RT4 v^g=hޫRVs50ˎiN%hMB)/iiJZ!'Ri1Ef 4)&p))4U84=#[AZo#k] ;]h/ Hy5li4- ׹li4Y%gi+܎NN׸ kJ_ gK_hAs%gh!+?Hv<2gK_:ƗA+?@ ^JҍcK_,^JӆC<,4{t1O@tޟƋF^u-4 B/_fqgi,xVMKFƣB/+GkZo0v_V<m.^5-3Ɣzg-? Ӷ]/ƗWL_a .Wki44Z.<{AON][L=5OEJ {omFԃWq! ORxhZ0+ƯB/B/p<71^B/k4<.uyG-!մ1 OEcM5m_ΫF/L,x=85{մ1OMĬ;lpY_Uu`ӹ A"e@T0إCY٨)F=#M(:N*EP#6NA鹈ȁejևZ%L昊lH UȘ`UbJ<0C'40& jӊC1`VUxu_Z,6JfZ 43]V қ歈Hb@+@Lj&(\UjdJU#Ja˦IhSh"ǹ)kSN9ȩW*v4hvnq:?/Ny5W=H+yS"dS1V(l=`T b P2=is* ch JQWԫEdF:N 2Bi&*v)29&gҗ9qs aSg3Jb1n H ҃@TuL$P&$8j"lÅ8#hHRp1R+( A_zL`$)N:Ta@XxJ`j\@Xx#cy@FW&TfF)q0zS8%(ѻ;v;4)@v11ANZ:UdS<Ӹ9)TEaWV'RoO`U(,pjC-sL%POSOTiCO7  nRۍ<UQެ0;LH9= +(ubɡo4x94ғ tnE)MG1M/0&GZySH]$mU'H I%bI98Fi )QqN z?]KG<]ڭ:p+Rw<k+ڳA'zuˋt]6mF$$' V4%k2lE0L 9=)W<[z0#{›Ӵ-zok=\s:wDΔS&D>uNUj+mS^E?&1-*R_j?xZt5(.gBqO\XRH⻝?|7Qі+Vws>>|NOκ}^ s94;d Q`^q]M޽o NmRB;`a*T G(|ݰ g˚7|q Cg<2nAqv[j6uQ.H d:/$3TԻ@|W|'ִ-gHt}V]%+cd߯nG tz:\k{'Ibk`p7KSmA+=ЕBzIn>m3M_|mn϶4{F϶EM/j~>d|A2@`?ǮI9ǮHx&֐:Wx?yj6{a]M/+$pT OAMA-OE%ݱ%Bw*{dzj/mƓ{9cmic VG&k; e\e|Nxm#(j;M;4LW t;S(ʸ|ԩ5d<.|w(Rʛ1U*l|Sa\ֺK,SF?_sL֖YaBʷH:27Iɤs 2sL4{)09rǽDkfKntj;>/6x"gmfkF; Hf)ŚNPrOIUƦB<,|Zu֝zJ[Me =kE#[jI^x\lHz#Kϧs %,zZ:75gUfmn$.U1՟Egmrj?o`-07dy#>J5SvC ʽ*{YMVIg0\-|#5|QaԫyIB)iX8o|8յMTG.\BEƨ)۱<|c֥{"kkgpN1r3uQ|?_h FMKncȔ 3׌Id|h1I ΰDieH&oxWMxB%Pgm;Tֹ͡4H3xh^wݼq$h\?ttiHSKc6$|p"Hks]b%I/+xӠ9yki 5K+,:mrxd@Q( c̋u+gvx+?n..j#V 'ޫE<xXMA$x ܮ@8O\'pZkS,{ 'G1:ezV,q/@YI=zRQ9"\+5 c⵽.,j˪EƨE)۵pFs׭s}Cѱ%nw^hhyjMq<-_Xi Ydo4,Ȅq-1 (jG$Mƥ%(,.m߆)瑑G s0GQ[2.lm{7 =g9WV|sEĹ{,޴ߌvH8ȢM.H\EP4퀎)J(7/H#ܸ;c .QPdQ*3(ܕd%šҌ7>oJh"dS\RyN= 4w`>p) ZzPH?85G4,d{Ӻ I4ʁP\bXcOlkF f8HM.nsNP)Y{pVQ _£4&Gj)\,&)sGQQpҚB84S)7S, EQRELMDzJ&]4 Ks@oz$R:T| &sf)ꥅ M!jyBsM1 hp&=iELҗuV+ڬyPhU@SVvh*)V M;8Tv+G(OppubfJ(4y"\v4sSȢM-f2Ui)|wEXV^iG֠/J$4 \1i>ԡTҰM5hhɼ̊qޔb%/LfMOL"qM'M!҆bӃ ) XSUПZ) x;54@ G~QHގRҁҀ 1@ZQ֗&E E! j ⁋KLRRGF B 9(SHC$# Nq,S\ q޼g+aldkV㘷JcRE.ь,#YFG=)2O2,{ qN1P੦ PTijy= N+Ar)*pj}fǃN#z'*|Ij\ FIKGQ!b}?DW{XRsYX$ՆpilZ+[s!1 gϽ.`=KW:]@akrRGSx:ukx`G\ąr(*< u{Z.n'v,caA8t5GL Fw-y+Ii8.X؎CI^~Yv˳QR!Y5kYi!6ܒFYO#hwif R?^_:64Ι\c|C5+l&d31nKOmejV靑Cw""'\xZ HF5p;á]ZQwY8_[kZ`縶D/CFޫv+s-Okht\4D6^r7WW'umBo{\¼wQ)|%{/Q4wZtIFT⋋9 L-WMG㴽Bk{k bhdS,_-g*h{оkx_]qXfPԂqԌӼ3ῈҴTs9>c>  ȫZ̐yÌymrqJ}:_K[[ y㙠˱ĸ"SaUbERT#ڲls[#Xw<-.'i 3'*}A騥Zg;=H)? =tݟ"r Ehnft1 ysJ\;f9%I>jQ.'Hl+,ctSg_cYpHW4SqYKޯ_ pW ֧SKlcY&=6KxpA"=ow[)<-/ ?}Kyw1>xw ?ºneueKgV2Uy֣?{u=O!v2yGOFKF[X'dW^w;*Vw}>KX FlB,#ӊ#W5[\ Ȯdwu--f3[ ʱ$z-7O'jLSǵIKl݁==kkQ(!2]zcGB Xo[}HI}oq\B3'\;O-Vq+I&rQ fK䵆K^Lq3O'ϵ5S[Ú- Xΰ6>Zd߻wLZX[ߵzE.I1Qq\ jړ[%jW))03j7z}rrVsO+Sд?bL[Pm$P3mP Q ex^ɼU᫏ uiuչn0IGʮ^v.vB+wK47ڄzݹ#Xwb7)&vܭR=WķSAk tڸ?;Z Ȗvљd 0Q*V=F*Ů6V`ݎb#{5XƱ}n 墷;#csүg= psJ5 |j_ g\#e\ԤVG#"FWdϊ u4w9-$>OSs8܅ X" so Uw3mgz=86#ol"2UM1,1]nxVhP]]^McL%E`vZEife8?eV+y >h>qx^Σwg{sGusq`<5p[X-&y0{[h2y8WuWNcZܘtSTw3Ik1.H=jfp2qU5];N5X6ry~=kPm|)Y09xͬ|Uka8]νDIuM+TjL&ÅHn{+ |(F:ż6L$d<\T7 [I OS_^Sscd򴍏9[uqM,ҸDE,ײ\$w~j 0UrQG\g5ʲ^e+Ȏ06y+.-.%>9F_,o|D&MpW`p2Hgt[C-c~WX w"5k$vxE>Vl4XD'&)8A2㡩8zӭ1(J a.IKz.=}ihX3f)5+ Gzjz4 1Ipi\i:ӎ)pj5 ibʱTN 1B(rژQZ)+Qj}SQ u9XQ֌L(4֘+)ɠiz( d8/i\QE04!d7R"( 4Q@s(C(9+9y@9.hh=;yM(D(fJ&$`E&13U<(@D\*H_4E!$&0(J_0E_3_0EqDiR  `4hh|MP1RE;yE&HsE_3ڏ0QE4yQHBy+E㄄ RKJ vVƛj#S v"(\wh30,! 4QEqR3QEȌiI8U$; JcQElFqOR(A$V^~QBZ^3ER 3cy9.*NI@8JQ9J(C JQ.QEMGJYڊ(?gambas-3.16.3/app/examples/Image/PhotoTouch/.icon.png000066400000000000000000000066401411575327000223010ustar00rootroot00000000000000PNG  IHDR@@iq gIDATxyl\uwypIV+v%۲b+Ju8Mh #-.P \([MuRˆ©k[⸲$K,E[+ER5\5Cr̛$%.jUp{own&n&n&B\_x[ZK1b r|zjzPF~-$–.zT ]Tү|4c L,娷rM J?6oD _7J x77N嵧\{b\XXtuߟeN_ƅwg.cۍ"tf 2IGxr'dBlGWX}c@Ԁ3:s7Vd=34`)w띉U r?1 Dwg0:YJmG9S򁀖7''Ѯ/R! Z q)-:R^O iM ikdJ驌A]@LU@2TtטMcT _4bJ*[kҖ!!g>YRM>;~ dIk*z|ߣKd>&!0R%V(`h֖T)ޘjg :ӴW,Y!8$:Ak'rUJ+%3<\N3g۰*+͟#}nC ũC?g-ۈ^;ߕZ(ak!=xe r!< 9E9vuzg#%lgw}_᳼o_~j)*؂okFDJcΡVsJ?ɷ*yk_rQ-W9L*K-[)ޘ3>u(i%Oƞq9 a/'^a}XH+$kV,eȡAe<|' B::pN5`IiliIeK)ś\m/X^Ţ& DΥ+˓4P.Y÷G4b|4yhm}ozӒBȨt7"ieItrM1~<^#=Sx`;4Rp1L+歠dޒk7#>)ƺeRWH#$.T װʼ$@!" dբR.m ';n F(M&NyeMܘt*O%&bр0fjS8=|u]Vo eigWSX^ D 7"H8fĤWĹ|Ǥ"QH d;˖XQ;9+ZDє5g<@"~e/]9q(u=y: JHGq.;ig">|c:r 5uw8^~fC{-3X\>Mɶ}.*HذY'ڸP!H{{0W 8;iw3B0hRn#?on= R!ukN1[TN% *Z!LP:l 1>'H v tB8"K(/b'e'wi%1@H.gZ G,MBMygx_$nv^FTU3LތҞ5#DҤ&b909%[HgREm&3Ub' Tq:3J sibګu=bA}wI ҂1ɡB\םQaRP瞒 Ţ=AEKAKsýqViɉᚱTS"gm+i8yW(D++|8͌yX7UCNwg`UU("A&jDUx/޾7 - ';zPHb5uꋬp ²3d8%E<ϛoI{{;9,%E37&4=>ޠ%Jy|VU?E~9EEB;[q{lcƘsĀVZF|ĄKi3ҙ nmlƒ>Hyy9&\Ȗ'{"叏\=]d9۵doWuZ)ܴ?CKK"K"KncƅXJh8EUi)d}ek.2vjJ( !v\r橧bŔstffR|bby[-IjZ+Ȇ#CaC+>o6G~#BY8euY<Ӎ*=3;jj7`\\Kk5Vm:2~HHX~V 0Sl 96H1H%m5^ »@.p.[μcAxIa[5+Xx}#zU% N2GJnYNy2ښ>FiuIʥk(s0X;?{ C"1yqWl$SbRl17'-֪jV;>ysOPV*Wsv:9+ ̛1ch>}'k#OW*ff5uwhmu4a W,B`H=SIsT25q$I Á@3/?|#n,Ł ٬h~!wnii9ơh>Tnގg-ʪ_B  8n9qt&[&xi?]RdBAk vԊ5ި*o 7 RK)&7`Fa<g@4x2mgPP.sO $' 'ﵿ+Xi 6-@9R g 2vP0vXs{(e|R!8t c##0NF9+cEpƛ NF!|)MMFڴ@IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/.lang/000077500000000000000000000000001411575327000215565ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/PhotoTouch/.lang/fr.po000066400000000000000000000060161411575327000225300ustar00rootroot00000000000000#, 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 "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" gambas-3.16.3/app/examples/Image/PhotoTouch/.lang/nl.po000066400000000000000000000060261411575327000225330ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Image/PhotoTouch/.lang/ru.po000066400000000000000000000147421411575327000225540ustar00rootroot00000000000000# 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 "Вырезать" gambas-3.16.3/app/examples/Image/PhotoTouch/.project000066400000000000000000000013171411575327000222300ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/000077500000000000000000000000001411575327000214245ustar00rootroot00000000000000gambas-3.16.3/app/examples/Image/PhotoTouch/.src/CAnimation.class000066400000000000000000000033521411575327000245000ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/CButton.class000066400000000000000000000061131411575327000240320ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FBrightness.class000066400000000000000000000057251411575327000247020ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FBrightness.form000066400000000000000000000014001411575327000245220ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FMain.class000066400000000000000000000560031411575327000234510ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FMain.form000066400000000000000000000025621411575327000233100ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FResize.class000066400000000000000000000017631411575327000240310ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FResize.form000066400000000000000000000015171411575327000236640ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FScissors.class000066400000000000000000000143471411575327000244020ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Image/PhotoTouch/.src/FScissors.form000066400000000000000000000013171411575327000242310ustar00rootroot00000000000000# 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" } } gambas-3.16.3/app/examples/Image/PhotoTouch/balance.png000066400000000000000000000021451411575327000226540ustar00rootroot00000000000000PNG  IHDR@@`U,IDATh]lUST0u#& im1%JjW-IGА> h}!n4*n/Zӆ5Eٗsw;ܽU@TU*PjNC> kM=Uasrdj=n*=q%5-/ PAZf'}FI˷R[NKuQ_9mBDmde_*@+I'uqdSv:ywqzIqKE ;QR T-y<I2E ]즃fyHo]̓tp{H)%J;yO$ٲH;sv# XFmao$0Ȋ遨nos6$lRuƗ/h5ȴϚ֢t0HMY˱<ZMAÁ/Ju^PV[.א^jP)g5*9g_bIvZӚsz"=%OI{]Z -Z.갺UEU]z_jw0andMHMpyR1K@m#; E>[PWl;ͦd _1bz \>,03^~ؑ"ɜD-xi&|So7Gq3/(In^^"CIkʯ)Ќ"z@!4a@\oAs)teadjPLiΨQ~kCvtItL g 3(2<PRS:?*mcb耇ɼ^6( &ScrX}tXmc nFng50aЪ\`T?0?ƻLWIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/blur.png000066400000000000000000000024351411575327000222350ustar00rootroot00000000000000PNG  IHDR@@`UIDATh޵klTE!*T[j GA06@5`Ę& &MƐH }(TM>(tz{ܹsnw|ss~;;g6mX"B ?mW+ױR|&6Qn(u2xf P1!Ʋag`xljv>9>lBPZqΫ;ð<QkTL4 Bz_1xRؕI9rטĘ)^cE<,6iLxK>i V=vyZi<)`ep[Za'PFmsX+> WH;ZS0IᣩDOzKw[^> gƒhUe)^`)}Ex|;  Ъ2<ý^ܥojXfSw.NMPCzP4k6eNU<߆ P4Ã=*`dK~u[e*UV3@$@?#TkVy(G:Tq z2N} ]14e!)ΗN7Fs|)* |nꁹn76Z5Reg}R-1Lw+N):4rgH"6R8)| ?&!ʤzWg6\ee~_&<5ѽ`XZU"8wy.Prxp}@9nC1U1ʼrN?9{n# m~p;/g :,@qgݚ< lv6_1+FVk\Ǹ &IsLzħτ l⣆YÙa{W뿌g޴f?2#ཪH`wioKNM[R%?O (wpv~s%nOJH`cAFQ QEXJ =%uZҥ(9l k\4~ǰ4>} [.m@b^?U_ul61g $W#! b B 2ǣIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/brightness.png000066400000000000000000000027761411575327000234510ustar00rootroot00000000000000PNG  IHDR@@`UIDAThYkLe>N> S<%][ԏ[[:YFfӖf$@~Vkقִ֏1J0 ( } *|<7s?u=~NOa&3ͯxtrT¯USvZI+ӧ@=䓩7rVpB@+#}P L* nLa%$K4rúvX%﵍,mU~"&ۉW,;$ne#R~?`h9y yQeN ^;X6x$GtxV,uOf;67}L6"]sM oiQYȯyԐ5*N_q3gȑ{35VxKw,|1f͐TvQpܥ0lqnWܠ䥊It&P 4@y^Gf1IapQdN&_OTc8уEk"p6jT)}9ciu-rL 8xe󾬲ŝ@ohm Lgk̕:y=Q8,st'B.{*{'! Dm133y3clژqIyl&\i1aɑOҰ(Ycvn;.0Cd|P#i&w+GJj VX.&pZGL,&#BePڅi ؜zd@Zt)*b~7A Cۖ/@ 2* \R3H/4vGNu|s`^e*.gZ2#Y'8UQKje:=Z.F8t*0v_R@DBuu}"ѰVv)("X`-F4qAa3?VF"NZ0` E\ثRsV[C h9V(}aY>2{¬W'Z(uYQW*oP13 f:eފ5 LW0z^LV(X+UZ)=0 UΩ2i&*/wDLit' 65V"0lJo`8R )!3$: ftfHᲙ#^}e~=?ӟFvNΣ_۬YLVhþ% z$SS?p4oq1YL= / *%//HP3ǭf?w(cB_5'm#! ksr=He 1~%!A*fL pt$7'7;\@rۅA䖈W69l/Q0YuhJN.Elo\ $$ې1i| B2uy ;WE}C Y`Å] adIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/delete.png000066400000000000000000000015251411575327000225320ustar00rootroot00000000000000PNG  IHDR@@`UIDATh홻nALJq{(yhy,;M" Hhk3{fv]Wx\|^fgh&-a ` \ 7ƹ5(Ҝu/Wf:salHeŧP@^U%'T(t5 ]SzRIɭi 3S a\@!|a ("NVz]L9iR>DO,3* 0sj]=wu].ȅWk^CpIVeU;f\T)rވ2$+pTNǂLqXq`7y]cKziI9DVwc^Z)_r$6eI?^62.IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/despeckle.png000066400000000000000000000027721411575327000232340ustar00rootroot00000000000000PNG  IHDR@@`UIDAThřilUB)H-XEq'%n1A&.c0Q6IcԦP(. B0@XJ).oޙw7m޳.{^))ӤHT6 z:04"}41S0#xfb -b `NQ0/v2|8!~18VQ^9F:Ź.KH }c$i!, {/442ILaoG";sL?_Ycs37RK18AJ{iM,y0MIR"TP߇tɔxi/dԵ4Qw~F#hGa BwJVs)aQwܨd)S%CT iJF#ʋNp_GJ;ixm/H?4(F^)\2  @_i0([҃dNPwgԘ@9 8vЕ~VՃZY~):>/x?P_3/@** / ۤ|,\z_ΓYL> H$*v.1 )'` Q\h~qO`[&t+`n0r1]kqJ7L^Zgy2Hvz3uc[ s N(4tdGNJś8fSᰙq>c Q8*2|@O-I{fJjrS##Hir)y :Qœ[&H-K7r)r(e?#\ BT-89dYv <\ō|l5Eqs7-v&`H:ZoeC]*-Uΐp4 (Ճ q?SWeugI:\K|mԁ7*dy'Q:K@{U p&^õ:֥X{mdV)F]Y>n>TPpb3=4\[f;[㞻 ZTgE Lm$+3 ާ>t: @얚1{B1γǰ%X딫q$[4G!6=Q%rH$ ^c!ze7yGZ s,ğb-`:2?ZE(?|Au+h_>}r*S0 P5r-\e l=t3""QdTgWcXw1'̣ZX DmGY92((&׉3pP "C\bה'7(_]Sr?sdxm.W>PԵ}^BF`xJp">`/cyoLBQ2ubrZ'ń6Pk< |5xc<6|)lrH8>dQ~~~qJƆB#j`2dRR@;ʉݮ8^0|hr8Cz/z z^Hs!O%$AiFT3CBq`2&oM ^J7cjcW\[&g1yn2 Ȧfŝq&^,DH&eQvzѭ>j7!yKIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/gamma.png000066400000000000000000000012651411575327000223530ustar00rootroot00000000000000PNG  IHDR@@`U|IDAThMHa)`%(=hRu ʂ>)($@- -([H]lv^uY흡\wgٝ}TE3Hv$&oϤtBr:iZ3wDk]g8$GxC0>yK5XI-&fيNy@J2sЍ^JiQ?,~ 6X# ya"3F`r@#K t{mg CqF.}|J+C1I'I<1lkgbcze)#޹l;WLPZHXϞ2.B?:N=h " " 0va\5~F覍n3e|e< q$eAZX81K^0,iY @Eտww%k-[,X5]r[0cTn@fQۼӑ@:&4uL;k`w^5'hք`g8(mLn.T@{/}P[]uX?4FQ IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/hflip.png000066400000000000000000000016711411575327000223740ustar00rootroot00000000000000PNG  IHDR@@`UIDAThMl Qo*AH%E΢D$$%,х ]X I%*V/$CuckQ,J,GQh|Du!mټ׹w>&ym̜{sϹGX*VHlȲW#Y>0D/]Nz^ۜ^1^\u `(B^ x PW<'lC~^ϙ[| Oqېg 5Wqیv;/\o#ܢ*|8-Q{Z8a#t'BӌrLd glN']x(2:3G`* rFh#f @஍U?9qzMQ7ElbX;/6M&\?RoK d^aWC4ZFli J 6ip/1sOCaf;Uy2MpV]p@.PciL_glAL^hmxdsCzȬt;IE^6B!Or<ۑ6%Il0Ϝ#*@6B]gJBL ->Py\v}*VK^ IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/icon.png000066400000000000000000000114501411575327000222160ustar00rootroot00000000000000PNG  IHDR@@iqIDATxil\umf]$EIv [ԩ&m6p/Ak-$ @C8N)ҠAk;8ز-٢6.)&̼yIb P{ @>wXĽV!!Ǥ=(ʤy?zǯ}q)g9)%\N}?g?;r7kLFwwrfK/:ѻ}^SO%PSS-=*mmm"[:S{G),//ߺҚ}Hl6K.w|GӟzT{^0 )%HˣhG,gEQnmspQX{ec=fds+M62|x`|t+w= l.ۏ\{ Fݷo[[E9 } @&9\CwwlX_Q__}X=@ӵX4tOOYdexN'9qaqaBJVUG(d!DQi ,۶y7>0 ===}iye1:z*(k+kEQBTHk&wSEag'}_1)::CGV~󟳜YAUTEEQҵ&n( ];PʀH$hhhw^uZUU끆 B*!DI)k4M'>ZX^Yahxˣc} JBӟ4( ~|ŋSw]v5 !v !n`GQT&(pTUt:I(xIX\\dmhk0 |MP(x=Bׁomw^DJa!5#Cf5ku"&LňF#z4>뱚RX J)Ep( @\rHr248  ~xx߯B|IJ٠ݻvFcSDǶ)Eqlq"'^}s,OQ!kro26:$H8tC'"OP,8paP4<<Զ=yދ"}G;y||>U,bElۮdwJO OXbAOpu G<={( %EDY|W*wiuuiNz78 @E y+P`iqvA%EQ00X])淾I. kB|\%|R$}>GhUTZv47TO2Fhx.h4mMT%J.'_XX`cMy aYEFXXX2[%A@~ *RJA"Q]dom&dk{n:]c tN_`rjj0L%456Hg[+/115ű ʊ6oRR, /aՑJU:瘞fffuJI,oN֠!†Ƕ7DQjUA,EJ\LvHu:;=65rƮLTȭnro BJ6?8LNNyyo읏V䮥$ "a ?<лƆz ]'_(ɮR\tM6erzWk'|5F6Lה7אi ȭmqB]p9Zٳs'q8eaӤf9saKcY^Yx)Ư]~vQ!; -Iзٽ6._cH~uuAhN(FJ蕫ONg7x Kp8wd_R-`VIX,NS*3~sYN.)S`!J|0 |Ft2~ X\ZƜUjkR mVIP ]孷O¯NAȯfD-ڤaR)L3TRQ36 23;RZ 3[.TjN<`Y%e`Y%ګ: D"b1 399 Rbe#LRU~gr++w&BH6Mbk,.mEf&Ay9r.Lqz D$6xBX$[…`!ۊ+DkfQUbC=ēO>>9BTz^bXDQLdzz3"ljw~qo={rP` ;@ ģ1n- s,&:;;yGxᇉq1/g8hR4McyyTrӪR&Μ&H Gw}* P,QuCUUyLdΝ|#AuLLL011B-MWWW4Mb+Y87M[|q7uRh8 ;v 0* ht:M__hH$B8\TqNW#ذ- |yÄqKExfTUx\e lQml6iL& ØixG$~E V~έ $=`$mk( +++iht3g0 bp24MB(  a;EGIpku7ib @_׍riE.,bppBB WF[ߞrRJ04J^` ! Ip  X h4J6sssH$BahV^*L&>}U8#\7s[ RJ|ܑIcC#A D))Bv]XH4#DmmmŨ5q]a:D(*X:&T H$p&]RN(*xCJRO(455 ҲRH8L4KA$\.Gɓ'imm%|uԩSOkk+㰒nEQ cW82*mZP˞/`m|F-=F Rk.Ν;nūL&&&*!  :K>/*Dz?WU]+]]]_u;ڹ~BU<|qmu$B%zfHn5'#]^A푒%J"\ `qSKKK|҅qlNhmj$]Uvt è. _d%VWV}es]._w_,ڬSBA0ʀq7V @ݷ!2 T2I4RRm홪c;|W(ֻpkuz6)X6~ w<޾O#R߫H)e=}iwRmlwDk߾Cb{4~ƲOl[:;xiJVݒ{ӳ׾:nk*r1m19!B<,$M-dp\M6(tpF6t;7j _IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/invert.png000066400000000000000000000036261411575327000226030ustar00rootroot00000000000000PNG  IHDR@@`U]IDAThř}Uǿ]vYy$Ԅ%bQtљ+ [Z)u!EL1(T,L%gMJLh]}=ssʌǽ{=N9Ou*Q^c1j-r) vA+]oD!}h$6rZo\'NQtodi^M QL._<ռN>Z3+f(:cZoῳ{FΡ9=}1t*M\j;9:l!CZ\00BYQG!<澔-Ak97Q ЇF;79Mć d~Ut]VlM;ϑL*sW',t[9#/c9ӯ vAz$X P0Fځv5 c˥..DpOtL.OVa`#`1'/Τ -O׭JXZʹ |N bҎ=Xb|B]F~fpeݗT3:`? Z28>Wٌw2 i:ý(yC8Bvo2h8}"|]Qv_eeFpGC$XNQKIIW(>d~Y`Pbjՙ4(^=&I*R]zfm ʼ+r[ % ^Y:I#˳=BSuڢd隷_j0Vj;$SsN@ u2Xm3 ^0~&s9n5ۨDE*ڮ~o$ƺ`$ʫtCOr(d)0-s$-a,M=1*C6 f[)av ngm{mQc\#՟*YC\do&U`땾ګMڣG4]%^ FJ ̿Z2i: "5Rlӹ]o76PacDot3P$鄦q#Zj~WIfV=a{C%coՋ̎ Ⱥt 9*I1:2;97VYc}%@>Cs=+xI)W`:'FlDfm~M+ދI~NY^Er/uqw䕴x`A p$*N]֣bBDbud}gv\qi `d{s&J@otTM}ւ=0ʆ_T'bs ??Y ROS6PelNsZggkO}P'{p/ܓA.cFZXLrgJnJ_sx7y4$ ?%bL }ӐRwZH=u~I Nj_NW:(7vt"a2ts:xyz?.ܐsfv05GYV6˝ZzK83¹y ~hfV<ӟjќL $feιm\# eKӲ̋^ɾegud"eZ1l^ [\g\g!f?ss;xQ[ՠp!T$Tr UAcGK4뇡 IƧv س .Ihjev1zމII1KIeхإڦڐhkHTP#= DB@kIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/magic.png000066400000000000000000000021051411575327000223430ustar00rootroot00000000000000PNG  IHDR@@`U IDATh[lU3iK+Ah!jM1Ň k\Bx0<M䁔 i P 14QR(T)RƄ%UK\zx(;sNL5ss]aEyY"诗#֕ DI$, n/М'qI)Gs@cNC9;(=I.!g@KX".1JvK9u$t$˽27p2OVbYzC8mMCq[/] &]e>6[a噚=uJ mjwP*#o0w [fa )e x8ǛwTN1S2clDz8G).*h#:\g2O:ְn-m~< #LcJbO"['s2(#8qISvqn7u&ǘ$q?O)ӎ3 p\c9cFmH,uR@gGPVhvnl['|@CK9Jc {Bq&ye^Ꮐ?⺑zz,;(/i&/ş X$`iy(~FLf# J9 FThtj"U]YAY?\]TJ })'5O.fp Nٗ_4p.'_ ~b5`ˡr%2ZꇥIf{V?ە3'2cC]gqMݜQEpIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/next.png000066400000000000000000000013551411575327000222470ustar00rootroot00000000000000PNG  IHDR@@`UIDATh=hAI%ŝhg!DKZ4`Jksvcb@+QQALD,RH@I@ Ma0&!!AB63s{܈oٟ}gw%#C|Or}ogo[&^'i/_UPq9^]"DhL(FMB9@@p#/8 jbS=uTrA|LGh \&n"Tvy]huW$܇-2;$ 룎  Ú]morLó?#čHd5cGh@p愦 z@M0t'0^45E5=م.8ōmwFlPh7Qh|0 y@&hq{/oYk¥{mײ{4>qΩp/1 Xd,rKi)iaj>jȓ C8@~a5 ؁N59j4amϙ鞏*;Hg@ ZPģ?hўnW,G`GWy`7 =]_ba':1jk:rNP IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/normalize.png000066400000000000000000000016161411575327000232710ustar00rootroot00000000000000PNG  IHDR@@`UUIDAThAHW;K#ZEL 6ֶE=(DmM%D{ꡅۆlOŃ$z4Ph9E1bB.&)u;&{}f~|T&PW߹;O^ˊҒ>?>V~ $^t1^ Njϭ$IqFG:ݼdu\qs[&FZUE\ScA+8 F,X;m`X Y;qDr.-Xak%7u|W)H"9S ZMJ-vE&X46|>̾s7Ju0+aܘFY_gt"dV@-nr-@}tD@a\݁4c]dQ~Ǚ~{4D SV `_tgó.?: ;c]b@iNI !;@`Bf 5P{4QGa?ͯT ++7"ܽnSEJyL7=V^ɻQ~ӺUiݿߴcʾwPxf HUMG]k`-KҘm7q̡[G({L&h`KmR;P'?8 Y )2$9Whe=!8Ag V-fVWuRҬZ`ٮESyh!{ڦx}H =ujD3H2ш:tV?~Bm-HVtKj3ſ>@haIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/oil.png000066400000000000000000000022451411575327000220530ustar00rootroot00000000000000PNG  IHDR@@`UlIDAThŘ]lTEEXY[*шMD7B#jMꅐjȦbbjb"**7(U!FZHSB*mi/ۙsvg{vgZs3gw}o99"*~~b T_YTpt#l#7RTN>;䏿X9c9/^LD7wNtusT7p*;|#JIPz 4Z0 5AR*Ve"%9WCk:鰙U"Cjx1ߤ6[6K=ReaL{wm l֕Cou1pH)PxDW2-D=PCf%of>ԓ Ž|=x!_ob?ib13. ~ս4$Ǚ$v;|*.&y1^z9>N2X \O押OA!EU w?zGS?nլ0 u3 lJdU.}^êpj@nLة\56p1";W0^Ok~ >p[jvwA|+@%v2U{ jm6^nnel=R ZNSla&jͧ3en \4O$tR(Jgy,-rF"r) Z{n[/BaucQ7R-,g$$5쉹`c`%}Ή\ IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/ok.png000066400000000000000000000012171411575327000216770ustar00rootroot00000000000000PNG  IHDR@@`UVIDATh홽kSaRA\T6K,P?*8? .vnE G;X?Rj*qi{~!'w~:VzC|QXed]b+N􋈳pLdoS0@I~Ƿ1& 38ւF4;ϯ|x%O-4 +xI/I q)$hz* v..$} S)_?Jiw|( RɄKsu{43(Tz] [|]HRS7}6.-^ 8'Mfޭ{p V_;{i󋝂iX;S/I ~ְ5xdrIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/photo.png000066400000000000000000000020541411575327000224170ustar00rootroot00000000000000PNG  IHDR@@`UIDATh]hW3h i\<~Y"Զ~ Qa QJ)H >BKK51APFC̽;圽gs=pL$E'nLBsK\ >[ӏ[-㢽= b>D`A;{dJK$6~5 OR\ NjM'Ŕq>5g^uN: g`;5N&Wș 7&$?Lh~bLDP$tXd<=hR l߈E`S\}$#)6oZTxdZh/t0F/wzQk`I_G(#AOaJ A,ɱ?O _$6_/!7ex:#kg0MhgQhh& R#ɁO¿PGK" PKA#4z Khd`7d6Kc/!y;[|? 4圈!NQkc;yROF[V3` ^ruFuJrvC?+ZڋT&*@#VhL״[v {xi%v%!O]2$ЮJn#Ტ敼V.^{E.壼6[Yhm!AhZ[FXTM/7+x:rB+Y^*GKe_NMÞPhC$0cڜe5׽=w[rH^ &8z؆@ 6q8rnVmR,ZͰL*;I59}B4dW.ޡ9\2Ifq>_bn@7#;Pr64{5陬,r/[9TG*[rY-::BO_Ϝ)5o|~,#-eʑb>/=rvd0+a=S-9IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/previous.png000066400000000000000000000013241411575327000231410ustar00rootroot00000000000000PNG  IHDR@@`UIDAThkAƿI Uhx/=Ԁ$UCMmN{ă^,VBQ{(xТbެBJbIz'\dΞ3{za޳}[%X K@( j([qkYiJTt%-5,y - X5~n8#SjJ7UA, {m=X+%\dd<.>:R6Ġ$HPB$)!A$̑CqYv!e]~*I A) SؐML[S53Sҭ@9x$O}!Чh;R9@Z?/3uS,ŀf}$ hρHꙭ[j+g怌Z\O Ô)o1-}xDZ,p79R-9Ӓ@nqU2N3QZ.G‸s` c:Y sq{+ >'P _#jtz@n@`>vUA@_N`/ Kn<bOdR07844 ?&ѣP>W\XPBhi >3ST<; ))`A tCyXFd.j\ U1kXG7/ib'p9sb|.G@}/Zzy1pْܣW>Ed4aR^+)0lg}cn%Wd:m\<-_Bej]*pln(ԭ>ym:}thύIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/redo.png000066400000000000000000000020221411575327000222120ustar00rootroot00000000000000PNG  IHDR@@`UIDAThŘIhALcL &" *"[AQA(((DDx!= 夸 w1=HOUTOW/5ޫWgyqLHq׬ٹi[D-sM򓩳\޶G#ߗP6F0S蕳M*¦,j 8U-|"aW`RD aXFfCQbB'/ܱڐ^qc p?x\§0$]eN@,a,srql4|vCkrվ6D3l[ +ŕVY՗{ p){~򉚅f9|"e`o>RNx X/OS^O1;Ny0y,u-0z۫]C{򾊰 `Y< z#/ aDqMF s4r}5d$? wCGM W5 WWOUQh@[b\0cA7ƗʟB2$_e khT25i\Γ!.%ŰP|ٸ醾y_S(20ldtdds/zn*@o<FS!E7Τ'-`; {:} QT5Sjj9{˸?b84^+j1_Qb|Cw#8dVxw, `j$_a!F8KOţc.%[->: c4PUIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/resize.png000066400000000000000000000015241411575327000225700ustar00rootroot00000000000000PNG  IHDR@@`UIDAThKQ?3H%B( v]>h!I( jE^_ۨdv.47ADe-D{,̍5׹3zg檝sݜ33;sϱHDN=do1`}B铸HWDf;AN8y+Tkp>XR9oAMiA9\A/Wp y$G|axadyDl:Fc6ZHAe  ɴmu,b}c$!EQC c>]t(HT3Α(\yݴ)8̈Gץ A{(l? ; agD|3BRCނU. 0Z M U.IIVp¢{ҢonEwʋ>}20iO ƸC۲PJz git+HoD"Fh'$иPhI#`}1dΤ6 @( *C4,x \QRI3)sLSd.]ĸȖ s_1#2P!@gʉdhb3кkY &hd-<%Bw WB<HאPyFo#}5-NBE2d=6fAG{fiGxd!\ZRwܾU'塰>7[ |o 95!uqQԆ{fT8_ U?K faur zW}f`5  _&BY04KY'̤a섌aZ1=P-J~)Uq] AIM*G9?w]%xͿZۢ«>#iuJѢtK~9`G}>V\t:~L:剸]Gu!0EC~H٧n[uѱį_Os){+r WPܵ_90eQj#|&e( Z)bp6\m638 \o.d7[=K v{g_mr2q|(Dn#fB@ 9/*=/ }"'{߱,B<0!rA{8%b<pEN/zSqN O+.azYQ,`]xdVc)ww&yMjr-$j\K D/v)RB-OSF]:4;XIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/rotate-right.png000066400000000000000000000022501411575327000236750ustar00rootroot00000000000000PNG  IHDR@@`UoIDAThř]lU*֊5HZ0FF%DSH1Ԛ DO"45JQQ|&*GR`kBZ-Lβ;{gvy9wr;su0LhJ]1Me! Fl%VYpb#r]PxEiu<m]^-<$^w6E$.ztR2J**) 5zPϫ]d~NLUIGp:t' bє 0{ LZZ`Z&B{6%}S^agGs*lgkNS~T,3Ƶ.|BaJX 1c b<&oHR)lhw =tt1cZgێ;<Ve ض(G;7KhR$9mtK󘗢{8&i= 7 @9Xa m>q.-~yZh;EL5&+X^R<޲by(g-cLțpX=f%i" Xd>~QUH`2.&4ǔKnAfd$P@&.uj 좋]!V@K sB)D}̦Qy j5VӎyTmMZ/8QC RւM3P8,ۮ~f2JMEDzd9/x;ɛJ!2fCL!褖V3aOF|&P;{Sh(a#r>],$dVz.sAbѤ[ D }ʢbL~/gc4eA hIg qyj|#!8!ɘX `RpKDh  NǸe]\&c>7{[DE ~7"}K@ [`,+o^ux*ǭ\_[2: (nK|-{Cu!M)hS'*۱۬q@8@] [| ^kR8ea' _Ue#,k,X<*E(}%Y至˷ ?O|uF v}z|̋RpBD0s?_A'y꿈ľB,(zIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/scissors.png000066400000000000000000000030151411575327000231340ustar00rootroot00000000000000PNG  IHDR@@`UIDAThY[lUݷ- }<F1 F$J1"A!V|PcH#"?D ECŢ-@hwљ9g̭{>fZ}%#@9-AT-)@~;`#8!߉U9gcGa,ևǻ-L)Ҙɚs%ċ x5cR, ? M|-+.-Q1!dL':Ѩ6/"2P*_"G?^Ud{} n񞣶:^_!vKnW 0C} xO}a˾"/dԾVAVx}wv @}D֩Y BV nb:iaR>.[<0F(Bv^ ?V.-GPQ_}@qwЌ?E㯁iBεFk_~p3z}kVΟJw/."JE)n~lzOzeOH٨ ~lYk#=I6j.~û \Gh56#~zu.6#iѲ@`b|ER^kkTk+!J,d$/l#~^\>dV!g0+}NMH|5Ioo#bZMQ}t z[LI朠"*t7epL.V5!x?x UhkEU.J ݡdx߼L `$ͧTA7UNҗ3'j=[;IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/sharpen.png000066400000000000000000000024251411575327000227300ustar00rootroot00000000000000PNG  IHDR@@`UIDAThY]lTE=]V Yj6-Zh4Hb#j&MDc()ML0>Ԑ11mhX%$fa;s{~g9w;sCļ1~3a$p7Zs>G%4q##WWi1ϳߦHq@ G#ɆbIrm5`ثrF[_c)qH QeCq,Rm +Cc3< 0;_@t1KGB[p̪}ri863puG/A VVonaW.rBs3X3 $+Q$N$.i$5*蕭T!nu{qFv[PŔ*{.)XI$Dg18g0pf@SIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/undo.png000066400000000000000000000020571411575327000222360ustar00rootroot00000000000000PNG  IHDR@@`UIDAThřMlMAE>36D Q$UME]I,Db%QD4QBaAi+Bͽ޼fvzs̹sY3hF՞rטZ|[7:|>;kgS_TY2IO>~ JA /%T ť9"uf Ҵ+Q/kGh75#5""`AV m&<VbiRժiC~=1x_~#{ew6+HE[J2J3 71 `/j=f>w3 9i~>xxFc ) VBq |ZX%$RTBx<| lo3#K)Y4H<؀Y©Z= OeB!aYjb>Tx;bQa#xo[K_j5 f?|H­&.6M}N3Z,aOkّ|,3dxVcR|7c' NԞIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/usb.png000066400000000000000000000013431411575327000220570ustar00rootroot00000000000000PNG  IHDR@@`UIDAThkAƟ]j-DK/z)'i+JG1B'ςTԋxIFTB@,(>ل$w>vd'+VX]VP#;Ћ*ϭ!*ZpZvːRo#yiαj )>9J%`׺#^Uy^d~E_$dpVc~mmJHkɐ"\}#~3a @Ne9-{0/,3:a+$Σ cB,yYEWV顃`Wٍ~r5"C/:@u @" ʆ~{AxƋFxQb?ʖ9Q+ `ˉG䠀nit`g^4 m|^ !lh"܂=wã^%8 icY~GNN6*-\p }:!+"AzÍMJ?eʹ]ګ9`Q309&eYWf|d8%rwJ 8~&k<ȟ2xI׵fhأn!Z|m{P\2v3zѣ&QmXb+lIIENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/vflip.png000066400000000000000000000017721411575327000224140ustar00rootroot00000000000000PNG  IHDR@@`UIDAThOhWǿ.!bAA+ BHkAD= E@Z(=5@9GㅨmhW*+4Giw?/?Ŵ!Gu0䩧CZfkDDgO5FVj V13|Q_EKO3?^`g@ޠ:tL]ҘzNwֹ170o`@qf1~a 9CwehͲa3@Ԙl7$m_a-/I u(GCgْ]7[q[E] ykmz}%\Y5RoJs R!R}ӶWJsb|3& Kᗚ%fR8\ũܤ-6~xI"Ϡp ܳ񃉚,'S!wZz|eL֗OkP_sx6]^U_*~/M+-yEė[5Kf5ZϭuZ#p7:~\c$&e+g&٘^X-tF9go&#YN 0|섓؂/QIN olL;9D}F1^ IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/zoom-fit.png000066400000000000000000000030431411575327000230310ustar00rootroot00000000000000PNG  IHDR@@`UIDATh޵YilUfxtGA'hQR&B  hD@*&*YL@5KKjPh! lRҾ.?=w̼yg{@t.j `v $$ZQRÇ}AQ%3K+x-9(l{'|jiꋘVg!2s7|-ËxLl_"h1;}k%N`] Չyo5 k9P6+'E8 4Pկ~~Eǰ5Xh@w3aO2+*VaO }5[s-s Q^id|hr [|NlPNɛ&sB\*co41R)% ପ\sіz6$j>邗F l'l$$04|MdY8$)xY4s'iͶ1ɉ]'+iOZ1ې$M]Úh}!IMn&.YO*]\etM@̝@ H,De>eD X$lmHkܽMթ ;@GaѳsvwDe&\yM?K@٩,6Uա8 4vZ,ȷa643.~/'p ,Sc x/}gx/Z&8"JYG [>H-ӂkJdr-D;6~? /)N>4.~#n0OߜC`8Tm/ՈwAV5e/wdq$v+œ<)juإa(Wa jD-;+EG}]iG"jd꩚Ym=ʠ|(&KG{ 9@nPMS<+W,t$dšiEwӫAi9G)խ` 2)F0,5geLDB۬|+i<g!ύf5)l.I˷1Qfotue f޽/ u"BdFVdUkst~検&4<!xL(3崈Ia踪9j/ 3xE(S6)9jmE|"w$U6&;qZ79p,+͑8 xخ cdw1SF&!9{ה ̉e"zskν@Y,.c6|*&婡;co<7G0aY +1 Vo\CoasAiV(0*l}3C=+@~/>݆ꁰbYn;<[p{Z8,F<ۧiL6x(Qfde40׋@ HKfpIװ•;6a/ oHNΰqY0hJwot9 WL5,rɡxq+*Q TtM-ځyn}* 6]j..t1Q$,o X`S˪g;1xk1;بSXMÍhnF>\:,u*G<-r6V{=K8y 1`9l\k^H:v1fyم莯z w|^!p:Ww+bzXn8\8+!O1@ޏu\<LjDKK^pğ?4rߵ+ (_?G.3<IENDB`gambas-3.16.3/app/examples/Image/PhotoTouch/zoom-original.png000066400000000000000000000031171411575327000240550ustar00rootroot00000000000000PNG  IHDR@@`UIDATh޵YklUf)t@mã(-TDD(AFD $Fba@@1>(ʫElX[󇝹vs=}wܹ5I܋:qKD.b [NNp-G@ɫ&,z7L\ܔF;ocEhO$*qMCv`S֟}PWsO8,eUs8Ϭzd#jv yO}yH#j{5L>_L Pp#!A~Dfq&gr&9ȑsli*~8[42i6Na\{ms*-(,?NӽX"N0Y59o(lG+|ͪt3Kl~n|gM(Th%ۇesI$"M<'Is,7Y ћ)?>Qx5b,y"@Vq&#X=-hY K++/Lz1t^D| F `g,c:zD@m怓ɦz2 ^7Hs_gIhXc9bI1Pޗc$ⵧtኩ# x8.*M5]xVDTNiL G-}25Z PdX]1 Zz2s;bX q- b!6*SS!<$G1QxEyq[Gt)LyE̶~aօLT0 ԡQv}.a/HOgos-Ėo;5yGޟ[I@0~/p0פMna.Θ)S(F!^Yio|K{p&v둝XZuee8y< ѱ}E.ƈU$R,*>B6MBy* s\_@xM\L#6s d"a_a![Y]|)~Yr$ NቁP$7+ڸiF:4~sȒM-̕ZǥJܤ6ǎJ!O~0B}.!*+d*nS}żر(&qqC2>v$w Dtwѣ^n; ~ X+f}4L2~/=_Ip(c`D*98HIv45L ?SFdЖ8/p qӰy.ҽ6{O)S~Z1mRm /֫#LFZ^|4 [łM ae QvڳR/Fa]Ԝ B] ƛeg%/) 3=Xhs0N]Pe[b>,|43ed9wA,9w: #!'K9"!xQ:H3-2 U'-mf1R#1iJR6H$Vov YTW P5ɱ^AøY \k*-ʉ.1lzSރQGU''Zq˪P.ưT/qnEٰ2<ʘ>5}qxGxYFXOoP+>MP waH)EуBG6vjEDȋnUvGQ\K4_y?-$ҥdZ2 7M:4nHfʳ #ny_n(QKyHwo;c}ɑ1p GmBP.,3vOdzL]~s{7~N>ol-`_Na*HNne.繞ESDÍB}wpgKZmtzWvfuxon.gCL%PNbnϣ.Dk{+$qIS.Ʋ^w|6ںp+%.n(Y£>pU-iDʕ\lQ6t.;[x\nb}.ǸN3H3'Po O F \B3N6rwC|`;"58nU%-qH r?P\"kCpKaIfѽ$Ʋ`ͼݯGpf3Fk<|AڠsA-fS(:ڨɠ[Zw*۬Z@r;wxXOl*?'aMETz$7b\۽MPĶnp070Ba4,]oG`{0')y _?/|/;OYUc ܽ`'N]p5'I xY;rǷttd"`a dwwR {O]{M2-O_Q]wmg[àBd0 ?{L$9e(Ogy?廿܂3IQǶ`u&PQBf~K˚rxJ ۲FcE{yǏh4^z購y*gkOhXA1HK$>uY]j-)/X뼶d %$TjJSfO`֊ttu>h{w☶&JcY>뢗4;-lKIUR8:k\b:c3]Tκn8>4u}Qy l@)Nc 6/`j+@(id21ĀmSe XpF!BhV Oznȇɸjsw V$ x,]L{T/5}{sYA8+ܰ;cʒV@%ej:-Xl|gej#г;" Q<4le[/%ZkޭeZSSS =PR:S#!#@l2ATTgW3 tm|iFodGɘZFqhO8()ɤ(˱:f- Fey yɽ'`J bcXrJo?%w,X$$}MdoɛVI]xB1cB:13g7R!ƂIqD|kcXvrģáqViݳnc)%@`Էx^y%nph=49UMsigT? #kDȌP%=cai֮܀S\ew'0FdbW{/0WvҴg,=MH avm8DD"8u 3f%R`)c "u<}|VY-̶bxWZ,Z"su2 (§}/%%zqy'Rfӆ73}\AQĀ$S,J+3jRnt}0w3=t s0B3&_Jn;iUҸeIN|uI ʹgV\ GR6Y1w!o/*dOQH?$]y QVQEmlzD*(!~c8L|`՚Il2!X2 =ƔL_=ME0;_>K`xѓC}5/FkOL+(UK 1f&#yC냎xNxS<_OnKD8dd+ö0ƈXWh20)&3ax`,xQǀBP$d遾GFxA/O)|3Y#@ :C}G>ہ1U@5J0p(! @+oug&caHQ#FH*@rW  H ރ_-Ogp'7ʛuWg3[C b;x]̚MQL/+G(힤( d3QS~H ;8ǵ%7~>r odLeYzEۯ.0Լ sŰC:IENDB`gambas-3.16.3/app/examples/Misc/Console/.lang/000077500000000000000000000000001411575327000207355ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Console/.lang/fr.po000066400000000000000000000010101411575327000216740ustar00rootroot00000000000000# /home/benoit/gambas/examples/Console/FConsole.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" #: FConsole.class:122 msgid "Console" msgstr "" gambas-3.16.3/app/examples/Misc/Console/.lang/ru.po000066400000000000000000000026761411575327000217360ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Misc/Console/.project000066400000000000000000000004551411575327000214110ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/Console/.src/000077500000000000000000000000001411575327000206035ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Console/.src/FConsole.class000066400000000000000000000043041411575327000233430ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/Console/.src/FConsole.form000066400000000000000000000013641411575327000232040ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Misc/Console/terminal.png000066400000000000000000000044101411575327000222560ustar00rootroot00000000000000PNG  IHDR@@iqIDATxoa, iil:2ݷHк@VV7 $"nhBڞ뵉Vlx+_hàiƛ G8vFE&UAj;M&:n(mOs9RmÇᇿŧ?o#Rn܄N  fr=0Q@IZwp<>:7q`@ll:Z^ry@yO?Ν;w9y$ǏG٣ϸ2t/>dJ!dV925@E*CC`q*2J z' 6$'u!4ͨ$V<ř =GlGT_?\.ȵa|_d#_P{Vӟs; liUKԤlH&Q Sa4a~a^GJJ12FcFCo[7, ~~@!qLB?wF#Z[6_Jj._ห\CJkk&1hX4nk4W:FB#2 hɝdB1t7iNeEB_&m t̀Μ=?nk4m_7P 'lrS(MkvBd>F77H%<ѤM|@ eSL`;B_O QfO6nG!LiE!T-EzL FU~q'%nCPo ȉۅZ b~W :nk^ۼg:iv߹Tn`Y:F>ᕘ@mW&*>}Pƅ J)'h.&dKeLZWQWюd<Z'Nll\^^!2T*e|Bx%.KKK[rX" gsRW(,ܼy7n0::_a D/_`ppK.!گ\U]BFGGBDxH`bb[n3>|8,% l<2Q*}?]ޗJ ST*:IM~"#ۤeE $ax;&9NqܐրUXp$Ԅ7 _PBu>WTK!i5S)44G`=n!ЂeBQ@6;K% s'OgC&$SyļnS??jY;IENDB`gambas-3.16.3/app/examples/Misc/DBusExplorer/000077500000000000000000000000001411575327000207125ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/DBusExplorer/.directory000066400000000000000000000000411411575327000227120ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Misc/DBusExplorer/.hidden/000077500000000000000000000000001411575327000222235ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/DBusExplorer/.hidden/screenshots/000077500000000000000000000000001411575327000245635ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/DBusExplorer/.hidden/screenshots/2014-12-14.png000066400000000000000000004004641411575327000263310ustar00rootroot00000000000000PNG  IHDRo&IDATxwx׀n )$$@*-=" H/itXP (7iҋ l2e$}'Ovsϝ9̙{s~^/5/G||4KR$%T9贕0?3[D/P@r}j'?((HKaMfLՐsQA\f$s}͛Q$=Ҿ%L0I\BmUBt'*^XT>ضUl% 8o38e9xciִpHsA593N) λyP9o{٩DG%2lIIH +^h  ]7GVs'/f{ţY?/ޔ(^ uhB9ʼ6$dAV4ǿDMow=q/߈M@%&U!t y:(smC_'s<6D\Rŝqٝ/$!v$,G^xy{]DmJ=Xcǚnq)7wJ$Wt}5]aK37ON:>兇{)jwc=PR[Փ 7r愓$aTO̘FAP2z2vk6JoiveƱ(/WBQgS o6jNeooʖ+CFYq= ւ?˞q/W}  %, |@P`Ǟ۔l?\9bg?o ըU"JOOYy\|}c0>T#)Xf._4>Z">|lTH3\μp&ådh;Yw3z< 'TW1+JEt*q}nAM , wyjةsj"y4HDO#f/\|Kg1(+vk /S$"~ʬ!,KZr6J8Mbڽ;t\dr\J4S97Fo²g9u6MdNAl}FE|M#+wb|sgNV7c~KP(Ik7qđ^QL5DPc',^]Gנ@ D"-逍m@^+N9oNr8K7W/j@' l@?4G*\ \3 !a$ )һXa_ŸvC:PN=Hƶv2}U[9 nU1gOW&4֧)1 fdjN M)7'y#.5͠z)bm<< X/WÀ;ޕ =V:.O1΄xH D3#=gѢq*lOGҼգnw AF)눟.%|w$~gөȜ 7;`倛s {ܧڰ]Ԏ%pXɔʹ.]ݰsdI^`t@ x 1b_ì|MNrƒT΍YyEwj<$2*tTO VXeEq3-Q `-6v(Bee-*;;TtV $$$5ccE=p"dl'۩ /bW?0D"JsƷ+hFGC1(ЎɗPGph0tzgRX]JOK_ aj3|[Emǥdf@A=o-"3 璎Cl{7H#61MV"O8>gҦ,}IN;`kgUz<39?9rHKy| i*P9چ"J/BӃN:G  XN[QY9 [yBT.J )3c69WvJel$@#2\i *~@RB2粗d%MU2u.~7~Jʢ>l.fgB꺡Re7'&J 5?dh2Q unhOviWὙ~~}NQ1?&^ Q:3JS4lsߢ?pRNx;gF:')x:ΖARZ)@Bbvԛus/p.\̍?Ù.^!b1g  ˱Vr7CeeCd/yo*)aIܣ$l<|pc gvfIYcS՛ٱ-"`_ТH%޵_,F)[7?5ίQáWL.sޖЮҒ}dn?(E _6#>홶cx>w6ao[&KPg{UYddEz}Y8>,O3ub0{Rg3W]@QMP֌u2E5y Py0qgbKT݆PsfdH2!R;S# H  M; FU/ڵkP:&vIjRɩ%@"8`H%!YTst@KgW'Աd: "%:"sBQ&-9I6n9H$FŒeo"-̬,lqrq^0ގ[QRHH  g';:ꬔh'djQ`v)1:(PZP {k+ ̤8RP(RaLŝTd&F 6E(섭YIDTTyg7bQQ&(S#ը=7deyuD܊;BMjB};_Lٜ rՇ<\ Aa9/`7W_c?J݋싾 i0%s2G]u؅MCONL&筡evv^~AJ3V֔ j4*;W?﷤hwjz{0dkkʙ_=-`_ޜ0u6t]4t ҽә)9 iIZ~& 9ӑNG30=!0{q.H髩~iD3c͙n;kP2{7CS!}\C'cӽ)_}46ΦnTLnw>{/jWR ݤr YWտn21+9}1tИ2B4'tCds&YScFf_aܺuӌoablo􍫦>3v 2j1g@Ad7vG}cI)ܜ<4c^uSiѿ@`&1s12a(G=fJFK d*\@.LyaigjoQUA1k}7dCax@ k릛œ'x cɘOl3sd4VEy2]y]/E_L3W^}2~-S5z`u 5uZ_]+c_ jS9OAS)cʸׇn;3GFc4C@tύH_>]{m 'cXrkO e@_qB1xK3h-lC74P>z/X(eocms3vM6i9/K8Jt[yϱx9$q]'5E77iB7]157ï+9njy7 MX!=q0'oA=<B!{b}PP,1dlr{̒\S?? cy srjStsYw< 2_/WƮAhHzCHAsX ҽ{ƮM>#_>M^ɀXnؖ>7uҧSұ%7ݱy]V~:ɣo< k"`1MM7H0W΂R3 `chegݾ;7 O? הT1ؙnԽ\ݙ;nOiםg7oNTd3 Ǝ8rw'wРW-KC)z\Mc39>̽1ұ>ijuo&oݐNllIMC {2li7eܱwXbZ;'~1cL>77QX))%2˨Ϗon%tH cW6^4%RXWe7}A[OnFHkoэ'|#?>O>[jaƌhK& _nSgH4s7~ $sx~\CgCz3CX2Z ]L3s&º2Z_x͹~cW(>gq4*WֶXaEL̜HPVQy-[r/oеJ\W-K@/ޖ+W\]]quuxԬYo:;|||TȏOԩæM^Z ///7oΉ'^ T^_~ŬE]։)cLRytsI#T"[x<=L'fa]j1_:^]gҥógXl=+W4ڵk/XdzE_w^v۷>:tC<}U/fΜɔ)SL=¦^y~.KĔQoW__ޤ b*aA'&2c޸-Y4Cf]:0Cc K_A0O&煾$?ƽg/^?~=oFϨ˯_vϟ7ZƘIN" '+'|Mޤ;yw %mwNr(Wy6ijktt47oF$qppӧf/ y簰0M%n8fӷ"W TVJ)lE ¬CQبBZsRy+M'l2eݻ77<||5Tl]@MK^Ov]:={ƠATe˖LJ޽{֯_o:?7ҢE }d%ۗ5jπHJJ 66ݻSreiѢÇi޼9e˖7ի[nQn]PT :ӧOSD 23aYfEJ*=zȹ8x{{3j(]_NPPeʔ!$$?~ j?@$&MDժUZ*uazmbŊ4lؐbbb޽;UTߟ-[ʲh^Hu3׃n%^W>[YYu3&%N 7Զsse޼y++W͍>}%7|K./]="e#LFJ2 j Ep+#uc 777>3.^Ǐ:U?~L=來3Ȱaի5jժ޽[… 4o\̙3aÆ1vX6lHϞ= "11:utRdAST)222%fLz[&L '3`y&M6Eviݺ5cL<jժŒ%K^:&226oLhh(u!44TvX3tP*WLŊi޼-(6'2d>sye7oN[.رCo}t_9q#F@Ramm͐!C8w\¾}HJJb|r]=zzK~Rr$Ib_dؾ};>NNN{$&&ry5k&Gudees"""HNNnݺz BA~QFRD ٰaԩSu֙>|.]`mmJ@軉jGn!_>-MM3֟xM'?,ofYK3_A1GK1}OBLMLg9g4lιjO:wرc5k| ꫯشiڵc޼y,]ȹWBNiܹ3G!%%ݻGV|r$Ib„ ܿhzEbb"+Wq{]rzyyQn];Hj AJȊ"%>'O5q#4$5j");tǏQ(ddd~zCP(M6ՋK.q1VZiذ!C QFusIn޼ɝ;wXv-;~x\JJ < p% M!{O&;5$2IxDZp:$@FZ:Dk SNPD .\ٳgQ* >\.i&fΜɱcoxHJJ">>mҳgO-}Cl۶+V~z.]#gϞ8;;7ok׮ؘݷAS`4n_]+@Yosi |%ZԢgϞ93gri222ppp#84ٵkk̙֬3?;wC *UWcN>ͳgslѢE={s-|}} l/\'OƎ=}cbb8x +WnܸAtt/UcǎrIzz:gܸq̛7Ӿ}{_.wqq?T*,xLc̙3gruF߾}9|I"##jee3Ϟ=#$$K.Ç aÆ?~GҴiS9C +&c*W̖-[8rk7`Νy^quuoQ(Zc56BJ ŖF͝ YSns15=n7Զ1o9!\C__>cƖ9O #ѭےx͕ŔaiWEa iΌ~7Ԧ9由swM||<ݻw^z 6 ~g$I6mʤIʯ]B!<۷os >QX1NJ-xwƍ>|TzA֭ׯo=zѣkάɐ $ I{Ƴgϸt߲G߹mR3SESO-Jhh}QR%|}}弇BRP((Q={dy~˹c2x`T*CrH{GBB.\~DH```17tXY)@RNGGgv(\p5Z8)RBAf5κGf͚5,\aÆMXxΖ8@RywywIJJbڴi׏V233ٶmM6 <7r97nl?."66OOO]6ǎԮ]wrqbbbhӦz5댎FTRԚfee"&88,lBXX+Vx±BSj9gKpK8 ӐϏᯉsԗ>/1ޔo,G_~Suoa憦[X}/`7<ͰҰK^K'U=c綱6s^} ##RBٳgPD $I\$I_^ܹC͚5o|nŊȽ_h: lʗ(Šlll2$H ^Z&%;uJPX_T}O'%Gtt4 T\Y.A*U-*V\J_MZ³gψNtJ [c䫬I"HKM%.&#V*R3HOJ|-_^ŅFƴZ|WWW222khѢr̿)}E0k>}ʵk ~dp,QNl\s&VJѻa,J;+ZTo۶mi۶-of޼y4kLˡ 9rߋ-JѢEh~W*ɓ'L:[nT*/$ 5&Ύ3gQBlTT}Ν;&stty̙3G\R>|H*U^ʍښ 0h y&Vپ};/_A&ر#?dݩU͚5믿&00RIpp0ǎ?Yf]nZ`J%>>>ܻwO6ׯ_/Yf $==RIڵ$I}vZ222tǦjժF<^>,gʨƌ:7y76wXKOF}ey! ~^}R\ cSa2A|Y^3=3s)N:ٻw/ceddB޽{ZR9uO… \.7ЪTޕ``4GK%NwGT6U 27h[[[v3g///nܸ͛7qof׮]ydּ{cٲC.ѥzu.4d$CfLiϟ!w#xQw&=Zc./޾}+V c!^'2iYYYQxqe}EDDh-m\QFlݺ[ZpX -W8 1fQ<{7j嫯")))ggg=$jgϞqQ;Ƅ ,! h׮oL:u3gzF4mڔ1,YBLL իWzl޼N:98vMJZ*W.e m6iѢ񒺏;1|p " ݻwi&9Yf:uF9BARpss[Z&44PT7hԨZaÆk׎ϟSLjW5VݺucҥZv}L<[[[*V[oEVجZJklym*>OF>gAjQf~'u(ݐ)Mz{K90zyu2vLWSFPM1KFwS s~QQQ|w̝;sw߱e5k{\x޽{i&$IY=z4ȥ{j֬YCTT3fߗ={HHvvv_-[0|Μ9wݺu4jH4e+ &'l'x cGYd$^&{jTwT|Q|_~|t;;;kPPlٲI?_&>>>P}ȘCA<~X^ u+&zJc''Hңȇ?y˚}[JѢE a޼yHZfZ#G7oFRQNe}C„ W!==]%}~zvM4 VQ93_{1 6ӧzbb"~-EZjZy6lȞ={`ƌfSKjPT<{+WjEZ|ڵkW9Kͥ6;vHǎK,)IKŊ Dݛ޽{ ܹs1&-_|_|޲5jspnܸ#YYYl2c~jxmۦ0ݼ<<___[2[^sUS)w~ͺ{M+gHwS2CScz쉭-͚5c( &MDDD;vܹs5]{ԨQdffvZ/^/'N;YWŋgٲe5AѶm[Xt)iii( ?~̙3gBA]KK"LfVfG?NX[Y8d1Eԫ:{]ݻ7SL5uȶm?~}:&Mb޼y)S3gҹsgZn-h_k׮BCCرc]!sgs˚kl$N,t[%3&挣%cXS=+O?sݙ3&挥IwA?Ktfٳg8::boo˗y7yw.0G^c ƒ L;C.*ޮ6> kn¢|odsbm ^CQto)CёYf2ԫWӧ\"X x{&p3e痬,9Y$9F/m}v; [00_[ח?S~cF:铥Ԃԧ4n=0W}wSƼcm_NP4unH̚)Ͻ>n UCuz ɭ ]}y[>Sz={6.|ayͩoVZl~7$Qd8 24-6] 28ĔTn?y ;ED/^RbeLZ,x;ws |}}YjzWz#_ 2? e{\c!oHw"3ZLM=/9 ?a33?~O<&r˓mTSO /9˰ax[la֭*Uo:8$ɐa/ɹ3c*,:fڴi$I(Q5kPȫpczCƸ1/4CNT}cyT! <ݦ<`)pK(H ͜'撟0c|ק}m$M߸F؞@_A:Ƿ|<<,~a[P:CK ѬS_;jַ[\c2UsUͫ 1;43oH]1FN/)S1lX7%i7<pKx1ۖDVK= tS7sދ]7@ؿ01$s~cN>cyyÒrƿsܲ/{MGcsWK+g(lPݦ1ԍٜ& E׸WXxF~c̛kț3b_'#ߔ[f9sd`oI] 3wmI-ݛ;2t2G?²M˯/0#~ "77M_^,1~%<5U^`Ƞ2y5FakkeN>}.SS1/KڶKmTȚ훛nRsFK5vX(YAƾX E ȋA#_s@ @߲eK$IdggٿXYYaee%<BA_,$]N@` F~ZZ666 ?I&-- {{{DC5j.@ Z Zr$VvirhX[[Evvuܧ5-9fI|/߬5Mk1U 3t=0:,Yg"""rڶ>:uD^x[+W$--X֯_ݻw]6=w]҈端bС>}ѣ1^fڳ4geeO1],yᳰ AvBc 1VE~P(tRT7|_m:y$ 4RJTR' @J1ce˖eܹdgg3~xܨ\2 ,ϏhՙH hӦ ?# bԩS]p9X"|rу *PLHLLr qQT)W̙37VܹsRtiCRRRx{{uVwիWܹ3?3 ٳ@!P(Xd !!!/_.]mC;;;ٺu+KO?՛OTҮ];<==?ݻ7cƌ\x*'W$ƍ/TV;vӧ( 6l@˖-V-[$11Ǐ3tP>L@@O}JzɘL*3gݻ7III&ϛ?+WADD111L4)9sqƱ~ݻի;{[ne߾}DFFRJGG_~%;wԩSܾ}ӭ[7Z 0ױFh(u^&M/ }naEX1115 ^zQzu9=={Օ}jy4;uꄓm۶xyyP(2e fU~}*UQT 0%JyGe̘1T*裏Амys<<<0Uӓ}qI ͣ]vlْѣGӧOزe C hѢ 8K 5:u}%JuRJg}&%K$..5k֭[>€w>Uƽ{ ݻ›1=u֔*U ynm6oW_}G:u|}}hժIII<~X{Bĉyذa aÆq-_nx ('_V3}t(W4kL¼֭[G_@?ZRސ s{.}ƍ3ÇY]>}J%)L쌳ٲi&>>eK,!..h Mӧ%UcHa?@ :t(ŋ#..NkԨQ_)S`?tfee...y vS<|OOOcn"..4\¦Mɜ1Vʮ]8x UT! m۶-+J+iŘLɤ?BAѢE1z@9ZX1=E#gzz:3gΤ^zԯ__HhG5'Pnnndggk+sM6MB 888A`r[S|۷ݻwZ~ 44ׯ%;ҢE,c7^Zͷ~ˎ;HHH ==ʕ+˱!66Gm%/H]<(<_~1c BBB驵 + $}v|'Nty]]]TѲL2)S#zɔ)S;v,+W&,, .dcz"&&FKo/^1c~74iJ Ws̑7n&L`СjՊ`Ξ=СCi۶-5. ϟOZٙ]v1o<*WLpp0}ӛ[nlْ5jPvm*UDbd#y˖-f`Ȟ={?>~~~TR87n Udž Uy:wLnݨ]6*T@TRL4TVR1i$Hٲe)_IP˗C\777233y믿,>Zh͛7yҍɘLs;v,~~~|ǬY{{{iذ!~~~-[GGGyr9GҥKBǎiժmڴѣGj:uD-(W׮]_Hdȑ4i҄:uPbEHXXy^P((֮]+jܱcڵ#** OOO/^䧟~ĉԮ]QFʖ-[1b<\~5kЧO}RXx1nݺ|grrێ!!!A+n333SrRJ~*/uӤI$Idɒl޼Y%@ (rZ[[3|(ʫjo˗y뭷&99-[9/L0={V ̙3@rSeʔAPp 4i"{+VKCڵK ]p o}ҿj֬ɥKP(ݛ_~rZhBʊ^zuV\B :t u ooo<==9wwe6nܘ't_{/ >ƍݻwwgΜaÆZ>>>H$Bu eD@@!x}vE|||Ylol߾ŋSZ5j׮M||<5BR1~x>Z*L8ʕ+ӼysBBB\2#44mjߠA[wNZ:t(?/M,Y>H^KVk.^*_vmJ,رcԩ߸qXt)T\Y6IHH@$z-RRR䗖333ؿK@ OwuuCj QV-87m۶y \Əѣ=z΂Νn,)yׯ_W_}Ehh? ,7ߔՋɓ'' 8?ET*GPиqc/^L9z(֭O>/୷"((Hߐ^x@ ^o l r(Vf2ˋZjQZ5X p&]V*] 9jnҠcǎ>h  U%@ x# ᫯b›.@ xa#rfbٲeۗۿ@ ^cIʒ#Wdddq;@VIvvG ܽ/,yjx}MG}D5^u@P+++|||ZJR^:'T*ٻW[YY/iܸ+CN8~8_~%|myxxzj6m:oСC-[[oQr:ZnͤI(Y$7oޤr9O˖-G}Tz޽;7o|RF K -@`aAxRJ"99[[[vfٲe9c2zhzY(dgg[v7˗/P]>3VZUF>ʕ+޽;iii\viӦQvmݽ{سg;v$ z< `pBZn͛7)(@ xm۷U* ZlY:rw&--ͬ' ___.]ʘ1coxG6hL};;;~wʖ-͛9w#Gӧj{=&O @dd$#FٳdddШQ#,X|Ǭ[z'ceϝ;|gP4jԈEUMF7o7nիtܙq2i$v䬚6gԩݻw)W/fܿڵkbŊRIv?^z.^H:uPHټy3t/ 449UHFw}ѣGիQfff2uT6n܈Zt,Zʕ+X`SLa݅>A^+֮]+%''k]VJLLܹ#I)))֭[%@ Xn*_ZZ)))IںuYlٳgRZZjIϟכ/..Nruu֬Y#I$EGGK+W;I$jժRFoңGliȑt,yyyI$IRxxԱcG);;;Oݺu 縗~zϤիKђ$Iҷ~+U^];vVE ?lyK ^c$IèQ W7ߑ#GCz\]]۷^:u жm[P(L2ŢE ׯOJؿ?*90֯_ϳg8z(cƌARammG}e9rwie*ɾ}8y$ yѮ];YxZlѣ ne BѢE 8{g@ή:u{%:VR%\\\pppw>3+|dɒűf>}JzغuY/u0sLRSSiܸInذA aøuׯ_ݻeDL@ d޽˰ax cƌk׮~)%J:Fdd]3=**J+gggeӬ+::xʖ-+ȠZjDGGкuk&33tY[[r*?0gʝ;wԩgQFF2e CWoVVV)MNwqqcÇZ}uH۷߿?̞=h]UVe׮],\ &PtiLBǎ_l?BTV-~WJ(77::iӦ_988SEbsN G@ ׏4f̘AHHQ'Ϟ=:s^IIIǛ-f]>>>x{{s<8qKΓJ\\=55UL2)S#zɔ)S+WLXX.\лZ޲[dd$ŋr&GAV3|' z,_}:666r3gػwYrƍ/1c_prrUV̚5KeǏ3gXYZMzrejҧOv*bcc#s,Y$,Xr=?~z7ox/_W'YYY\v;(Ozjjժ,|5 [fo߾T*S$T*bٲeZOoajlu… s޽;YYYf/a /oqBLJSV-&tvvf׮]̛7ʕ+L>}x֭-[FԮ]J*QX1H޲e ~Y:::gϟUT!..N^ŊDGG營6lk׮@ݭ[7j׮M P*)SF6: UTL4RlYʗ/Ojj*~ifΜIVV b^h׮&L`̘1Pn]ٹs';wԚHҥX"#Gիyֶ {{{ZhAR/[,vvv@2eXz5C%99:uЪU+ׯOVV$a9*T|tЁ+WFff&>癱9r$M4N:TX&b|Xv ֎;h׮;} 6).8pݻ{ޅE ;ضm%4/._,Y&~~~FS(<}ŋsv-GVVlID"E8uL>TRq@`u֡ϖOx򳳳9zH@F/&y!/_͍P\]]t=zբ͙3g(Q@GE^1G Gcǎ'ժU7HOOg-[RJ͛7֑͸q(UիWg̙ZΝ#88+Y?wo.]>}ē'OP(,\%JtRÇ z֭[*U",,t9nwwwʕ+W_}%c4iB2eXh7oH"Z4@ xȷK>}:O͍7>~~~1Bo=;wdʕ9s+W`cc#AGf ?$<<+VuV gnݺqm"""pqqȑ#X[[9K=}A1l07nŋI~XlnbذaZ/Ջ*USÙ?>۷o'>>mr-~7o΢EPT_ӧsqk'NѣU̵kPTRlP*ƍݻwwgΜaÆZ>>>H$BuAɷA\\\%6lȣG(Y$#Fĉ)RBA˖-?clScMI0,Y~6խ[ĉ|( J,iӦY4nX^2F<ԗ=_Lzhڴi=M6N:ZD@ :QQQ+VLXu?fܸqRI\\۔f'MIr1wÌ(Yvݲ5+9hn;K K0"B]@|{lr-xwpssԩS]^,Sx{{s]߿E2e.\k׈`ʔ)r]n+'O~ZÇ4k#@ eo#iӦkӦM㣏>FZ@ 0fX@oC$>}Ǐ%3uT*_$=zDddd=VVVDDD0p@>lV322hݺ5dddpiZn7ŋۛѣGܼyBANRAV#;;ϟcgg*UW%33y9%K4k`]Yl#Gdر=Z^"233ҥ lڴ bcciڴ)_5vʊ;wСCj5}...8qHyPinfn}YGAƫ0B\$I_Ŋ pe~~= ___.]J*Uo .ZG9%&&ҡC.W>o矵iݺݜ233ve/;wr)n߾M֭rwD:t(۷Oncݺuݛd[[[yf֬Y͛_ AF@ aԨQՋի?ydN:ųglR8~8C aǎ4hwwwLTTVަMǁ/~~^86 60h yaÆq-_.ד#zbÆ $''sNkruSRW=d@FB/n*%y-Hykݽ{}r ƌÍ t҅?GGGz'H" :{î]y&:t#wYl[~iT}L6eRlY*TO>ܭ<,,;wΝ;T5ju=oɒ%Z'@ lċ@ ׏4f̘AHHY/֮][]y75jsիjr~~~lݺqƱsNZnͪU?>-Z uBSȑ#iҤ uԡbŊ 80={sNZh]zb*=q*رIJJoߞϟ{M޽ͮښ//"OZ.1.?$00P~XL@|@ 5CÇ(  SNP(Py|||q3ի /Xl㱱ѣZ;tou,w[;w-En_"##ׯK777t<[l덴]= @ J_x ίZtܙC9M<w^Xw!::Z>w^VJr8uZz]wAPp "##}6vvvZ}Y|@ 2;F@@TV]vΘ1cߟ Ξ= o* ~'ZlIҥ0ak֬E1~xm.Xroͭ[6 @ٲe)UܼyԩSiڴ)*T7zx:ubŊT\nݺ >|8#88???ǏI||I}0￧}ԨQ˗/yf4iBjj*u%!!jժѿ<'|Bvk׎={7ʗ/[oC}o<10&[LL :tTRԩS_U'OҠA*UD*U8q"OfϞ{}HIIƍh gxbylwիWܹ3?ɱ24ƺ3 RRR m@ fڵRrrڵk$ݻRZZ*mݺU$&&F*ZsNI$ĉSiڴiR``/I$-ZHRSSϟK4k,I$ڵk M8Q$IzP('OH:tH*^tmI$iR@@$I4k,zRJJ-OjѢ$Ii&IRIw$I>}*Y[[K׮]$I7n, 4HʒjԳgOcǎ$I| ,YRz$IuVD$I҃$@5ci֡ɓ'%@̓-[N$IZ"I$I}ԥKI$iժUR͚5e%IKRTǏ:+V(m޼Y[3F?~4obN8A"EP(lْ?S.[xqZn 䬢ν{Ì;+++J%Çg򮍍75js#LÔlAnݰew~~~4lؐUVpEx˗/Oʕeo}hٲ%͛7_%;;G'NߔlGX[[R4h\ȑ#Uҷo_v܉'dffry ‘#G8tLfujum322|֕ئ/ 0/qƱqFz쉍M|ڵc޽nݚw[oamm#gΜ_u6$[TT#1=r%7e˖=z[[[hҤ\Ç2e\.44P"""={6ܾ}[^;cceln߾͈#^?= @ ?任3cn")) OOO,bbb*9իW$wy777N:Exx8~YuN4}9vvvZ\A_ruu?;._̦Mׯ|ڵѣ믄h7oޜ#G?.$?t7I8|0TPH֮]UGoILLՉ26Ɛ3qy&L0@c#@Pm7mڔTV^ $YV-ܹ3K, A``ܹ/ХKõk3gzBPC5PTDFFb ^ztvviӦ̞=IP̙3G^0alG|ܸqZիWٳ'[X666ɡFvvvՋqaooOZoT*Y`-[hт[rm7onؾ۬Z 222XdVZZZLhTT+VK.[ܸq]vɻO6jԈSʡ:~*3pvvz^bbb1'lذ_~b3`x@ {ɷ_hQ_M߿?6lӓ1cBݺugΝܹSo()Ky [Zl;{aÆ ̜9iӦQzu ٳ)RM41?̳gϨ\2ժUH"|Kd/ehҤ mڴɉPׯϺu,TV*UɎ;_Uˋ+Ru\p-ZǛ4i… ï,aԩRT)i۶-$̮]7o+W&88>}{9Z 6$""B?~\݋'NpU*U3?#G2Ջv1acel5)[,˗/o߾ܽ{b +++"""8p 6zw}뭷b1"yCCCQT_M9#.Ѳ0VsQ]VʍWeǎoߞ(9 b޽F;ϏwO/m۶ѪU+j5/_FPoUHDժU㉌x߿\$n߾ȑ#yG_~7vvv̞=N:o޼IӦMyy+%!!BaԪUΝ;7|S(0`̝;beVZٳg[C[} ?Lff&#G( |}}Yt)UTo믿6P@֭Ylֱ1^$ rQL>s9mԨQ|'5rYx1={dĈϤi}eРAtܙΝ;{. %KBҥ^LSNOR}v6mĩS ѺNedd|r>C*WL@@7n*~z̙Cxx8={&))I~pM9͛7y~>Ջ*USÙ?>۷o7گ` Fƍsm۶|ܺu~۷h">L>Ǐ_3|W}zҬY3?֭[/yW^z/ٙN:|rvEʕA=X"˗7g?6oL͚5}V ŋʷnݚRJЦM9tԉ߳g8q|< ~:mڴ_ $shC{|@ ~ܽ{aÆƌC׮]MӇO>ɳi&yE-B{ c\xXbb"/_FZ! Eʫh馻h O|+S{`(@x#--3f16l[l!<<͛7%ڵsi*T K.54i/f…ZrVV/^\>22,ѫ\&wbC9sLej/@ (("\G 2+Vd4nl?0zhu놝VZLL -[Y8**dXp!]tt{^Z~СCDDD~z_~ %%Օƍ3gj54lؐ?dlllC$:M"E@ r6?>jûӧO;TT *Hff&ƍO?ef՟5k.YzuJ.͚5k5ǎ1k֬^O`` KbŊ9h۫W,YzӱcGjѢ7oSɆ@uī\'uAs{]>|HRՊ+b|@ ?0@  @ ^+tw'K@:o޼|0`#FR֬YCzXbTZ%Kj $1j5~)xzzRX19vXez@ _egf;pC2|Ǝ˶m8zن%ygk.<ȓ'Ox9;we˖j(>ˠAܹ3Wk[qMn޼o|,$$WҪU+?СC9|>x +W2e#`ܹ4msoKҥӧ7_J⣏>ʕ+,YY]GTP2eFbb" bԩS][o1sLw߱yf4i@FFCӓRJѻwoymhc @ ^,6ccci߾=ӧOɓ',^.]ɬY8z(O͛ՋPeݞ?ξ}طo3f;vOm۔(Q~7Ν˵k׀_~a׮]\tƍ3h PT_9sO޽eZmI۶mٸq#=t̰ahܸ1/^$##]2fܹÁ>}:NʓF[nܾ}\\\8rzb|߿lw헟IDAT7n&99I&`mm͛Yf 7oO>lذAn?իKK?+WADD111r@ XmNnee NNNQίT*ۮn*J+I32 E7SNeԩ~>CPM6mĪU@Pp=q3gCΝ;tԉٳg˛Ԯ]ڵk9/[=zk.9u( '>33t*Vm۶eÆ L}:O]v1~x/_Nxx8N2R5?-Z)Sp]FDDSL!33u-uss?$003gF'{.ww1K>}ظq#Ν#>>VZ]Kwܾ}۬?!} I$}tMI$ȑ#tEI$ԩSI$ߖ+effJRNaÆI$I6mT*{nI$ӧt5LOO+&ZJ$Iudcc# 2o,[U-J0pAdd$gϞ߲h"nݺg OV h;{ J.mQ̑3&&si*T }WƎÇټy4ooon߾m}COAE"u@ u1k駟K&$$0c ^:]taϞ=as̡W^z nݺ}vyϟӣGn߾]ULij5ŋӼysƎKr^:!!!$''qF g3f~W=?0@S!:~ ^JJpvvחs oe˖g6lؠz1|:wL hذ!k];] c5WsttdϞ=̟????TB\\7~C((֮]+(cڷoOTTH޽{@bضmZBVse oYesZ/^k@ F[} @ @ ^3/@ f#_ @ xF@ @Z~~~l߾=wNWٖ-[2y<Ǘ-[e[`+@ ke(~1wa~ @  Fcǎ'ժUc׮]3f'(ػ(㯃QDPE)1EbcM,h~DM,1F` 5bX"~bņةJr{DxCΞkcHJJBRb |||?gڵtggg/BÆ u晙qAe:66Faii;C||<gz'NPƑ 6ョ'>>>dgg3{l/_̙32d/^DR?.eŊ;|xyyakkԩSk֬GGG>}:yyy4jԈ,<==믿(((`888`kkrnBRO?QjU>S$I$I^߹s{iӦq-~gzErr2f"**ׯݺu#??_ SSSٽ{7wfƌ9s~?og͛ٽ{7xxx0lذns/ONbݜ:udV^͸qhڴ),Y䅜Z͑#Ghٲ%ȑ#̝;?>C֭[GBB111ĐªU011!66~~Ξ=իWqvvO>D_qI$I$I3{̌]мysnܸ%aaa|TT CCI7+hmm1׮]{|}ᇘR2d艶 ,)==<==rʋ,{ժUSʤFhт{b``V">> ñ/'|(_<* Ο?Ni%Iқիܸqe׮]/=OXXXxիwJQžQ8p vvvTV ssszիW_x="&OVVVT\///W5Iz ?--ʕ+̫R *$V;̌de pVXQYV}|U^]ܜb222h[SSӿ%:WCFaaNmnň۷o[[[kҼy&#GaÆ4i҄/bu?/$I  믿~=Ν;wزe GaСϕ?ԩS_HߣGT*gϞ%99x*]SNeǎݻ[nJϞ=֭[/t/%A~jHIIљw9rrrYj}65jx'js~קrʥ|<O5gΜ)5ɓԬY|˻PRpBٺu+/G͑#G}Q>|f͚ꊇ'ND%ozg̘ͣ`qwwg8;;fvv6͚5s,]>1cаaCz 0EZN$''ӧO\\\'00l-ua̙:ԶǏiӦ8::bggG@@N{.^57oߟXzŋ-11JŢEhժNNNի}={:`ll TvJ;xx-SF_|,ٳ_-Zmرcu٤IlllfGXZZ*޾}{j֬ }!77(,,T۾};h4GQ-9o۶-yyyY(PdggӳgO-Z\T,X@iРS'<<'N`kkKbb"wP}իW+iժk>q }6P@I+>>Ǐ+^~e˖)#Gg…䐕Œ%KXj'NTֻs7n… ߿G͕ nnnR044$??<n߾MݺuQ$''|rw\$Iϣ^zL:ׯ''|­[6moVm233ҥ #Gܹs}CCCҔ?j۱cGBB.]̌H'%%Ì3eСC[||h 166VG{2Kxx8$$${4jԈ{rA~G_~,[#GgJ{o#FΝ;Gll,ϧM6{nCBB߿?<_$[N|֭['rrrDbbyyybAu] !&LnnnUiF !HMMu떒 Ξ=LÇ !hҤ6mBV+h׮5kpvvBaoo/f͚%}] 5k&.\ ƍw 4:tDqqqyĸqB,[LTPAxyy !hժ2d߿]8:: (>sQ\\,rsso-LMM֭[ƍ]t'Ovvvue%Iҫyf'šCğ9rDDGGl|ENNؼysV+WoYvjeeacc3o̙M6B!j׮-{e, Lgdd@DDDJkވ#Dݕ6lUVfԩW^"99Y}K!.eBOOODDD|=xOX^<M6ɓ+WYf1k֬R,,,J'p6㮧ǪUt֝0awbbbyԨQCgMA=4O+VP8p TGѣ,Rm7oȲB<&M*ܯB ә׫W/;?x$Iӣ_~ܼy7ҷo_+_2mjjӗqO+==Lyxzz@Nh4 HKKJ@]x1se\|___̙PRӟ_ +;y0ݺu[n\t9sEBBC=m[W_*ˍկ_+iЧOvAv툉o%99Z͕+WСP2;C^^ḺRn]׃(I&K$I;v,[^z[P2ocff4yUecc5 ֻٕZ^Jʨ뺿۷2ɉٳgpBΝ;wOU3F~j h }Ë9#Gdݺu=zիʮ!C(;<==qvvf׮][r=oooY~=P._{ؾ}R+=m4}=z]v=Q[jEnndz}vLLLر#fRހ.[LDͮ]y&sU?jۢ"7n̑#G`A'tss[nлwo%HՓ{7lݻwY~=۷J6l'OV1cԩSL駟Ǐؑ 7oTNƉ'hѢ(ep1"""t dڵDEE)6;גo&+%I^ks?SSSvqwwˋ>2LJuR~}\]]\$=*VΝ;qvvà Zn ܐ3lذA]gϞQ~}\\\^ ZfҤI :+s$3gj J:vڕ?ӪU+5jᄇ<𸹹ѠAU~)PV 66WWWLMMqttPR%vŷ~ bÆ :͕L?SڴiCÆ UC%00~eΝвeKLMM177gΜ9Z-Z`ggGpp0^^^ԫW+Vh""""2e }%<<:4gzԹ3պuĽxl۶{4W]v)?X%I$[lcǎq)T*mڵk+5M7𯾖kZ%(BP|yWޫ?ױΝ;J;I^o!!!˚|I$_ѣTZK.%5fff/K$IGv$I5jg}F6mB`iiIhh(˗Y$IǑA$ISJ)5\$Io&\G$I$I^32ȗ$I$I׌ %I$I$5#K$I3g73.uq54@QIu?#!SLfpuuÃ'hpuueƌ8880o< www,X3O/777>So/BÆ u133:舣#l۶MYB:upqq) ""rd;,x"*e}6>4lؐ~MY/446m(˖-777z-֮],sqq!::u_I۱0|&uΝ} ih{a߾:$I/3t҅#Gr9<֭[Yp!޽ӧO3vXmʕ+9}4gΜҥK\v J,**'ڵk9u ,[+W" **!Cf.\ҥK۷/III?FBV3l0W_}Enn. DGGsС2;pcƌ!,,xV^͠A8y$uYO$Ikڶrf@ɿyNLXd#y_{x{{SR%SgVގj )T^{lH癃H*T@_3RJ @xx/&&&@Ix.]Q*)SPXXDBp͛GϞ=*dddvZhܸ17oFRqF:v[o@&M׮]СCCe233hj5}Q녅+?^n]Zn$IHAZe{^rYXDۙbč?osW}h<3**J kԨ[055}_ի\~4fϞ͂ >|.nI9OJJjժ:INNV_3mjj؋FFF/_]ҽ{w˧gڵٱc{ÃzeeϞ=888(8ʢFBNN+W|}QJ2iR$Iz8L;;#80п˭=5t '|Űaƣg,X5kbmm7Νc >}Q^=n޼̜9S' o.Opp0_5GRJ/_۳cZnV9s&NNNTV+i߾=5kƆ>} a3f  gggBBBmCBBf͚ 2>I&L>}pqqޞ@>xAAARNR/IA))):RSSQ2}S333霜ֈҥK|ӡW*jՊM6Jpp0~~~`ccC=HLLT>)))L+-R?*U輲u3$IpqSgҪk-zw t[35n?r G5ܷoSNe߾}ܸqmFu֜8qB'6lؠL?XǏ|A޽鄄VʥK8x #..#F@BBΝ#66%ׯgڴi߿o1c%AXz5/_SNlܸQcddٳgx"@xx8Vѣ>}CCCL뙃|oooWiii,_^z۷oL6M =ʮ]x$&&*CjYV\ɀ(((@__ "@__???n灒O>$$$F*UJ sٺuk?^:5>>Ǐի),,Py8xP=ضm/^߿9O$Iқ!5r~_/ǁPUgqu'XǗgѩS'j֬ @pp0QQQ̓gΜ… [Ν;caaiii+WNMØ%4T^Wi&͛Jؘ-Z(;(%DSSS?Vycн{wHII!**ǣV100`J,A^:#GDFz255eǎ7?T*̓ؿ?uҒ#GRref ,,cǎѱc'֭ҥ 6ƆvࠌsO݉Xj昛?ҳgOc8::( O^iٲ%}Lnݔj*y&LP+V<4}8pߣGfegiiΝ;u{߿Rc0` Pf:!I$2usY%e0~1 dC~O>aTVMTaa!ϟvڏW@@_~%;v$33SȺ\tٲe)((‚ Ggم 5kc;ի7C )UVܸqOOOJm?L)Iyix{Q 133SF$Ir jȆU0a1͂>4yf^عsM6!$44˿2$I^kw*4ØF_fȐ!~zl̐fϞ)j;t9sb:iϏ?ӧ7~hsQ(yPjUf̘~wwwMF@@cΎ`y,Z???Lmݻ7ƴmۖΝ;+s/_'|3* '''CoϞ=9tĄcoo/K+Zn֭m۶{FBk.w+IZ۲e ;vSNRxwhۘԮ][499 Z^5os<'&r(|>" yl/={߾}{:u'|&IBBB(+iu$I$EI۵WɌMh2FT^7ǡCzY$)Ȇr$Iҿʊ.ᔩMzrʱrJ&L (WsΥ~:k$=K$IzvאߣcǎO<$IL$I$I$fd/I$I$IK$I$IkF$I$Io%IբJ_;^u$I^mMcǨ]6M6-I&VK###*WՇ-I$=DTj{5y_OoUoRV"W=Ikz7oflٲ.zzzT\QV-͛lْ]h^FI$IOaŴiK6#c#O}#`UgS$y 4k WWW<<<8q2c 7ocnn; ,ٙ2qvvÕe...DGGSn2]`ӦMC___g~f͘9sμ-Z0{Gg0`YYY$''`ccÎ;u͛G۶m}6ݻw{{{Zlɹs^Y$Iz|UiQ13G>82Ө^:ׯ[֭[_uHz ?33.]0rHΝ;ٺu+ .ݻwsiƎ˶mXr%O̙3\tk׮RJ}QسgW\!88~QTT@:u022zh7n\ArJeƍпGknn. .Yf Ђ4z+,GX` .ԧ>^xә+IRTl&[C&TRuHCc:ןj7nחZjVJ׬Ykkk|s{Eټy.2I'%%QjUy:LbjjZf̜9ƍӤI:w <+oܸ dddPPPƍׯz裏4isʊ:\y$IJKHK@ %fhy[[A$C2Qq%ƢVطoSNe߾}ܸqmﯳ}RR>>>̘1__W]d$!9ȷ"%%Eg^jj*5jPocffFVV2Cfffi8p{rȑMٴi\x]>v}}}yڵkGhh2ER1h ǭ[pww_~1H$I%TzP w8|RRRω`A"H &L3_bԩ5k 88(eL|||7n$Iz}```V_~y SNo -qqq@˶m۔u?c]~Ŋ,$I|-K} pS$iȺE$''.#9IJ(w辙677;w3[cr_uQIy Ԕ;v0|" ?nݺԯ_WWW*WaaaJ0?n8N<Z{tؑΝ;s :uꄑF"&&F^*ɼ{GˠA8p !Cp=N eĈ;UVEUF3f Ȋ+X|>ג$IscsZ-BqR1q9d\ Z3co[YY輹NMMȈ*UPZ5 BbccB0a֭[G`` ׮]{%I~iӦ:teA700`…ʰB93fP֭]6'OپE;w|h5kF~~#mccCFWFFF`ذa 6ilْg/pss$I7ݿ),*L@ PӢBy JԔm2g,XVeܹJE^ҥ qqqԮ]sn:Fn݈w߿W]d$Z/PguQVʥKX|9fffNKK/`ĉ/u$IOl5︎S5rh_M \ ,s^FʍN~PʧbŊ\|֊ժUcΝlذT3gDK7s?FgѦMXZZJ_~W,X>W$Iz7{uw&Ofϙ=AԴh]mn}YjԨ P3xR/^mhh ,I2  ((bL<ɓ'K$I/N:W2fp! f^u$I^K$IҋfVF^u6$I^g]G$I$I&K$I$IkF$I$IA$I$I$fd/I$I$I9$IZZt8PPy`ݫΒ$IK'|I$Ťۓ6F]EM9U9mf SUgQ$y?~藺ׯRx‚ŋc$Iz^LۘDk126Zߚԧ=1ˆ f K^u6%I^`Ŋ/=YܹÖ-[8rC}ّ$Izi]>}ѪԘ#Ѝn|w@i$''3p@VՋWfիٙ[>vt֯_DiFGGR(***yݺuCVs…' 'sZl=L8VZHXX4k Ν;tҗ$Iz&mVhAz=bqE,S/pÍL/3=zR8{,$$$`dd{@Ϟ=_1FEE#+^4h-z4Qn̙3iӦF^u։\ϺuDvv|w7oUTk׮B./vڢe˖"++K!͛Ejč7DqqOҥKB!VX!*V(4pP͛j@T\Y^Z!Ĺs無8|B6mڈs !c1b׮]S_jA׮]8p(**nݺbʔ)B!:u$ "ENN|BM6 Z-:$bPB!֮]+܄B @ܺuKHyfq]%:$'ȑ#"::Zdeeww⚸V**UQWoB>Lxyy ;;;i& oooQfM*bɒ%A:隚!prr[lBqeѮ]; 񇰴&&&Jpvvvvv" @>|XeޓEHHrLnnnf͚f͚bڴizǎ-Z...ժUK|7^̞=[矋#G3g Q8885j-[xw cccQzu1x`yѬY31c 4ׯ/͛' $ƌSl>s㣳_|!tJ"=,H*T@߾}R  ЩtB5PTL22nذ!n;͛7qvvy^'NN׮]144ҥKZjKImݺ5666ԭ[T;v,TT>} M7o* cccZhKKK:uL{,I&JHK@ %fhy[[A$C2QQ)I@@#F`DGGSXXrZȑ#tڕ?`G͉d|O},#FΝ;Gll,ˋQFѺukN8?FFF={/ˤIx_|ᇬ[bbbʕ+dddЮ];9Z+Ku)==zEÆ iڴ)[lICҽ)$ISA1܁bSIII!>'$C"4yiK͛ҥKW^T\'OQJ{RRRbj =zS5Y100‚UV۳gj5J偁:_[o+FVѩS'j֬ @pp0QQQ̣gΜQ[Ν;caamU(IogBʊyԨQCVTfffdee)999dff_|޽{T7nЩMѣFԩSlڴI-رcYiWt'==V^M^2dүA$Iz4gKgTzk6א%'< [|EWu/3nݺѭ[7.]Ĝ9s"!!Ժ/&&&odj5W\CֻWIԩS'>[\\F="j|aa!~fϞZaÆ1qDAg;OOOeJ p ̔yٜ:uu뒖+WL.]ذa_|!!!|w-R&y|ooo'4/_bܾ}iӦ;z(v8;;SR% ={6!Ȉ~D xT\~Ҕ ?nGy\?{hܽ{ 6жm[rss)((A;v'ʃ$IrmZ Hb474]#rɸA޵ رcDGGӥK2ӼWtILLիܹsr)mgΜ͛*,\Dnٺu+666X[[+i'&&rM٣u%ɓ'9LUVMMaa!!Y~lܸǏYjу[n)|'If䛚cϟ;^^^>>>ԭ[Jʕ EXX,7'OFV޽;;vsܸq(yRtWWW\\\hР &O̯J^={6-[|캏,0_r|'cŊ,ZL$I tCaIL MU +f26l'OV0gee1c LMMS3֖D޽ YU:vȬY yٲeqFj1bgϞXKNhРqqq4o\ 033CRѪU+rss䅅?۷~^zzkϚ5kɡW^ܹ8ΝK~PT:pԩnᆪ`+%<"bQ\9_=SZIIIbŊ"--Uwj$IucP!sE0a0@>۟8qBt]TVMTTI]*GٴipuuUժUS/Q\9!ZVwwwѮ];1k,,']'88XX[[zK1B޽[ɓ''Njժjժ$etGGG$ڷo/Ν;!77WL4IԬYS GGG$233uO.ptt(..B:NNNI 4H!JFϻ7BOff066VF zPڵ?,(iFXZZ ///qY!˖-*T^^^:3rHӧO+s_6ʈz:{X,Znm۶ѵkW ]qq1w{0qQ:tѣGqrrbٲeL8˗/S|JK`iiɼy^s$If˖-PTTӧQT;OmLL B<<<OJERR<ϵL̞3{(*.y6Pƣ _w ^u$99ggg177ّ*$$bgx5jg}F6mB`iiIhhSۗ-Zx$Ifk`߀_GJ .bYW5%h4| 4HAAA=Wڵ#55ef[$I1`F#F:+ +% _$I$EytI$I$Id/I$I$IK$I$IkF$I$Io%IբJ_;^u$I^:K$I(&ݞDY4*jʩʡo6S7ޯ:$I/l#I$->1mFcdl5O{clJ$4  /^Uzu\i8;;u2Bmhh˗Ņ1cƐJ###*VK)WIC 7JZO 8?w|<4;wҺukLMM)_< >'˂ J믿ӣOu\5x`>W]Ԓ$ ֿs[lȑ# :':u VZE~~>wa$&&R~}nܸ^bb"dff70|pbbb^uH$=I'ZЀFrX\ ,p /pc:e %Kݻ7=zիdgg΍7HOO/(53'~`x09s0mڴW]Ԓ$}₽=dgg% AAARNfΜGm{q6m#vvvS\.^57oߟXzŋ)((`񸹹F-8vPT*-ZDVprrW^eAFFF4hЀ͛7cggɓ\O__]bee߿?ǏW9qjuIw !AAA8::舧'۶m$I.9+C>Tl&[C&TRuHCc:uc„ ̜9#F`jjZӓM6sN K{D^^5"++ OOO/222 #((N:|r}_vN:QZ5j֬7|SfZcǎ/$""333۷ciiFy=L73t҅#Gr9<֭[Yp!޽ӧO3vXmʕ+9}4gΜҥK\v J NbРAڵk %##v9r˗/gcddٳgx"L4 pVZѣG9}4)ԶcǎϏ.]:OJJLJ3f'44C2k,!>>~ѭ[7:>>Hqg~󢯯ϰa\^TTĦMϧm۶M/**kr)Xl+WDw|$IKBZH@6,6C̻"8"$I". :i;vLW*}CCClmm#ʗ/ϪU011!66~+VбcG5j-ҹ~8r?#[iicccvޭ <&Iқ噃H*T@߾}R  <<\Y"""ҥ 5j@R1eʔ'zyO&Mpuu`Ϟ=j @ժU dQ0zh֯_}T^#G*mkeeݻ9|0*ӵkW%0n8<0>c*UСCRj <(>uUrmyall|ԩS2xKKK222Xv-III4nܘ͛7z8$IzTzP w8|RRRω`A"H J={r%:v+,,d…kNIr'/;Gxx8ԭ[g>2ʕ{էK虃|+++Q\RSSQ2}mYYYtNNOӲښRk{xJJ*UPiGn[\9L”)Sq}eʔ)|L0www믿t^>ܴZ-o)d,,,{?"~G7 dҤI̙3}}}VZѪU+Z-7nϏׯcii$Iz̍iڊ,@)FSA *0h²ATZ%K0qD*VHŊG<觟~'++ kkkn޼IjՀkʢׯc``t===qvvf׮][.$Y9755eǎ̟?www?,s}???|||[.Օʕ++ArXXw0X";w222hݺ5˗/'==gggٰa2*OϞ=~rA|ضjI&1tPprr"//QlfΜV%(((XյkW>sƏOVhԨnnnF VZ|ƖR400###*T@ȑ#jի=k֬`ҰaC:vH&Mj!f9...899j*&E$IR#F, \h)ѿ \`peh\qik."##qttؘN:h8uM4}+++ƍG-ԧO~Z-k֬ڵkXZZҸqc Bu*kD}NtǏʟ$IoպuDntfn۶]*׋ٽ{sjJ Mz^u9#\~[[[ܹL7ǖ-[񡨨ӧORxwhۘxxx(o(U*IIIXXX(C}j_99"jx_sA$'$$bgn=J8z(NNN,_333eI$Iz _ɸa2],]0`&Iҽ QF|gi!R|W]$IkĬlH$R/- RکK$I$I3w$I$I$I$I$IA$I$I$fd/I$I$IV$I^EW# vؽ,I$t E"I!{~UMGF1$͢QWQSNU=x~Y$IzidsI$_oŴiK6#c#O}#`UgS$饑A$Iv!VEDGywǟnt;Ν;iݺ5/_GGGNzze_ѿ:|7 >W]$I/DrV2/|PMMr뤑 ?u뤑DŽ 9s&#FZ'6mbΝ/9>}₽=dggGFӓ  SN,_\g׮]SNTV5k7ߔرc/LcXZZh'J6mX~=͛7?e˖ĉiժ)ۆPN\\\d۶m!Io >LfpuuÃ'hpuueƌ8880o< www,X3:ifggӬY3:wҥK裏3f 6w?~///jժ#ӧ_̣.rakkK:u9siڴ)@NNNrx"l޼bccٳ'/憛-Zرc@IRXhZɉ^zקk׮XYYqy~6lDAPP8::ʋ$I i "  -w3rKs8?$bH&" .q1233ׯ_ U122ٳ\x\&MDYj&&&ob :v숕FbѢE:뇇III9r~̴ڴi1wV慄п V9r]v? 88~Ѽys"##>}!**!Cf.\ҥK۷Kܒ$lgffҥKFɹs8x [ne…{nN>رcٶm+WӜ9sK.q5e{LLL8pdTT P֮]Khh(k׎@Ο?ϑ#GX|97oxE.<!iiiرc#!!K.affFddNaƌ~z eС̚5(bbb_~t֍|㉌$>>7n0{>?EEElڴ|ڶmXv-N"!!e˖r7bDITzP w8|RRRω`A"H ]vU򘙙ƍ#  ?RJ :,6`ذa@ɃSpuu ccc>NXZZڵkIJJR.>I$8[:6IҐu%IO:O\FsΓBQz*w4,--)(( 55U7bN8'&//OiOߩS'ppp FCAAAݻK.ѱcG033#>>^ ^ʕmLMM100x1N^^ḺRnݧܻC+LkZ8٣8 4I^g1$V3ܜdeiii899)Ӧ>O+==Lyxzz\E.-- +++e;%v̝;Çse|}}3gR3vX󱷷řdx͕fffܾ}ܹsT^! 4K.1gΜGnWvmvO?SL{OoI؜V=wb4EyZ C-^j/,[ѠAVʒ%K8q"+VT{oYmll8pvv~NgT,y&ժUJ޻\~A'ڵu1`gƆ=zlٲOIk򭬬HIIљJ5kRsrr|ݟ $&&*7ogܽeW^Ν;+W*UL?nJ*1e/tSLQҚ0a֭#00k׮=QiZn߾Sn?(aaaGRٸq#PRreVKnn2ݪU+6mDjj*:ǒ$I4tCaIL MU +fR?0m4f̘۷j3zhΜ9;&&&tؑYf)o-[ 344$??<_Ν;WJh߾=K,J*nݚsRTTDrr2͛7?I,](uVWjj*}!!!}$I*홃|ooo,iii,_^z۷oWjMVpQvDnժJZXXپ}c/rڵ7o0w\QѸqc9:nnnt֍ztB644TgϞ,ZHL`WN t {y]֯_O큒)IJJb͚5J-[[[{.k֬Q]r% }}}e5}}gH$4p)F&pH.9/qeϮ]ccc:uFԩS4i˗3lذA7n-Z(d>}_jYk׮aiiIƍ2dݻwIAKxx8:ty(7gϞмysׯK8$=37155eǎ7?T*\ϏSn],--9r$+WV䰰0;Fǎ+sN>Sժ7[J.r| J СCԯ_?l[ZͤI:t(T*5jܹsKo̙4oޜ ΝK~ڵ+GfԩdffҨQ#F r [O? 66C>&LffftEۺuktBÆ ]v888h޽;```VҹyH$SoL̞3{(*(Pgiц~MLooGSZ5BBB\VB=6Ƥ _iu֭T>U$=iXb*_xl-^z+}U(HϠZnxm6tBzz:VVVhZ~nja!˗'::Zwulmms($9lB(**"66J;D ]yCGRRJ'׽M . bYW%I&$$bGjժ\t (1733SF̑$IY394C#Kz:OQF|gi!R|W]$I$IZyiA>@PPAAAlllOI$I$I5ב$I$I$A$I$I$fd/I$I$I&_$I^EW# vؽ,I$t2ȗ$I^ QQL=hhUԔSC=m0o_u%I^\G$I[|z1mck}kS#3%,yٔ$Izid/I$|UiQ13G>8sNZn)˗ёÇyY`wQQ'O +++*W +ׯRxtPTDGG<>>JEQQk֬y_PT֭[_XHқD$Iҿڤ -h@OGrT,B}n1edzM=z*لs ),,|l>/Sc˭[HMMgϞp֭R5j֭[ǏG۷cjjL ! ::;Jkbaaŋ_W޽{+G>B]N4#Gg=QژO+_L$I$g%~U -dkJ*׹Nih`1\NyyyL03g2bLMMQxzzi&v܉aӧ...Hvv6yyy4jԈ,<==믿8{,M4Zѣ9}4L4mGGG ''(^舣#ӧ<ܼy+++2338|0͚5&N3xhڴ)uԩSe۷yaÆo='!!!ԩS<==ٶmϦMk.%}]v͍;ratB:uСyyy-GIzS ֿs[lȑ# :':u rssoٓ(}̙ôiӞ+QQQ:A$y%% dh3ͼ-- Hb!d(₸Ʊc̤_~744VȈgrErss4i˗gժUoM~Xl#GdϞ=dee%L`رK033#22>C֭[GBB111pgffҥKFɹs8x [ne…@C֭[ٴiѴjJyXxW_}Enn. DGGsС2׋bȐ!Y .tRL@ZmۈԩSL4-[pI^JxxcQT?Օ3fy(..&88sssY`DDD褙Mfܹ3K.壏>b̘14lؐ޽{%5^^^ԪUKD_\\LPPԩS3gYkUwEټy3ҳgO/^LAAǏ 777ZhcHLLDRh"Zjz*s̜99sp̙l2<==qss㭷bڵJ6m<cǎ/Çcee-'77{R^=j֬r^ٷoG} Ƙ1c8p ^^^8;; 6ik$IwSA1܁bSIII!>'$C"4yiuo}oߦ\r)fΜIՕφ HII!**ǣV100`:!;v,;l޼YYY{n>Jbt,,,XjXXX###P}J* 0@ (Wu-pODD}ZG}Tz7ncǎ[4i҄ƍ+{=P8::ҩS' ٙW>y73!000`ݜ>}cDzm6V\ӧ9s .]ڵkT*tMLL8pcTTT P֮]Khh(k׎@Ο?ϑ#GX|ry}xx8Vѣ>}CCCҔ?Kaƌ~z eС̚5(bbb_~t֍|M㉌$>>7n0{쇞GGG>իW3h N}:OҥK\t۷o3i$ ݻ7ǏDDD0m4bԨQnݚ'N}UNNN?K[Vڵ֭[T򰴴$##kג=(I؜V@ dPT憆+yd\ r:W2ȻGX[ѠAVʒ%7fŊZ{0A 11D^ʝ;w{4 !!!:#󘛛3rH4hѣG^J2e qqq\t)S%M~.\Hbb"[ne8YYY3/555jUMOO'33S`ѢEddd<%ZrرcpBW*7===t\̌۷o?lj5 _~%W^}Ҩ\2]Bʗ/MI&4mڔ+W<ų6hZj׮^Azزe3$I>tCaIL MU +fR?0m4f̘۷j3zhΜ9;&&&tؑYf)C˖-S%O^^̛7*M` ĉhѸqc9T*h޼rtss̬T冷7JEUZZ˗/W^O]ެ^B YhQuVr'55>}΋$9/8fffJ#?-uj n޼ɞ={D`mD^^2<*&L`ݺurڵ'*7V۷u6-- ǖOÆ {:OOZj:ys ر`-[Ƒ#G~RbÆ B! ĸqDxxB;#Fb!K.ӦMB~zaii)nܸ!믿J>F5B!Z cƌB$l"O>M6B!ʗ//~w!ӧO 6B!{( ĵk F-"77W[bB!]&.]CjѣG霜 \\\DppB+ .!8v(_8sL^Z[eA)W_ ;wѭ[71zhrJ%KB̜9SlR){e҃bŊ>B!Ο?/jHKKoyf+233šCğ9rDDGGLz'._,͛K]_'N?tajPCjaAqW=Ia3?m >>>ԭ[JʕGv0_Ŋٹs'?#xxxA֭G????ׯ +R3gj _~tڕ?ӪU+5jᄇ+c0Cɫ `ggGZO-5Yh.p͛7gΐ!CXni޼9888PbEON=puuŅ h btЁxJ5yڦݻₓ>Vi$Iv]xo uԯN%b>!uV*女mW=IJn:+m۶ѥKӱBo)ճjJ{j!˗'::~MpulmmsPn$9lBjƢR066Y򠼼<.]D^^xxx(Z===077W:?\$I X^2pQ:tѣGqrrb嘙)H$IGRR(WwɓʼaddD~~]J$IzyA~FhӦ B,-- }h͔$IқLR)?t3{ _$IziA>@PPN]*F$I:T*2N ^R$IxA$ItK$IytI$I$IdM$IZZt8PPy`ݫΒ$IK'|I$Ťۓ6F]EM9U9mf SUgQ$饑u$Iŧ6-hַ>iO{0b0Y’WMIF$Iҿڡˇo8Z=q>э(3dժUܜ^zq'lj.5[nj_"t֯_HJ"##U$I22ȗ$I&mVhAz=bqE,S/pÍL/3=zR8{,$$$`dd{DyXbE ի(%ȯQnU$I22ȗ$Ia?*Oh5hrH%\'萆IDAT44h0Ƙ?sT:gϞC`jj?̎;uBBBS...xzzm6fϞ˙9s&C Q۷/| +W@g ,f͚X[[͹sؿ?Çg߾}ԫW7obeeEff&.3gIA|̟$Iol닅/~^:{}4ٺukHJJz!644###,--իW\ye0T*|}}K-̤B 4od: ( "Kr7.4#?H"!d) tәFӉccclll!Cf.\ҥK۷/III7M̒%% Yl#GݝzqFecԩ۷7nжm[bԨQnݚ'N K~?IL/%/..~ܹÖ-[8rC} N.V"??|Μ9~pܘquPrWtW ISA1܁bSIII!>'$C"4yiK͛ҥKW^T\'OqF:v[o@&Mhܸ17o.3_[0j(~geyXX:uf͚c̙3Juѹsg,,,:$+?|0͚5&NFՕ3fy(..&88sssY`DDD褙Mfܹ3K.壏>b̘14lؐ޽{%UL,ӧ...Hvv6PakkK:uJ|ԶǏiӦ8::bggG@@999ŋX[[yfgϞ,^ƏnnnhтcǎJbѢEj '''zU>baa_qƍG_*۾{ԩSG^j-ZxlYunoߞ+WoҥtIg޽{W5k^'m777~{=6mJݺu9uꔲ{{{<<<W:u:u`ccCv9s&./B9oooΞ= @RR*+Vポ9k׮C8;;Qe3l0ƌٙhԨYYYxzz_=CIz9[:6IҐu%IO:O\FsΓBQz*2֭!!!\vSNamm餧gO\\iiie`<fff\t*= rtE aO?I֭:u։,qe/rss͛222D*UڵkB www !]hٲByfQZ5q Q\\,>Sahh("""ăRSS nݺ%bĈF">>^!ĝ;wDʕŒ%KBGGG&[ 0@h4QXX(|}}ŨQBlٲETVMI{Μ9B___ǣsBQXX(F)ÅB899-[[n '''j*x_%⫯ 4B!.\(jԨ!ĵk >e:u(KjDHHμs @$%%=͛ !(**vvvS! [g cccgQV-%_'ObժUwBQPP *W,V^P>|XjJ !=zիBahh(.]$bŊbŊB![/B\pAX[[+:uSHOOB1{lQNެYB @L8Q!ׅJnz׮]STZU!ām޼Y抜q+ę3gٳgE||8w\xq1\˗EVVؼysk͜6! ljJo :V-T*2e퓒Jcǎ|xڴsBq aaa\8q㏅B5J+ ӧEqq6m֭B(;w!غuS8v온VObgɏB *U0`T___LLLK.ԨQJŔ)S(,,|5iDygj5jժ~zRRRbj =z2RADD۷z9!cb>|JڵL|||7neGXX1*U`Сdee)PR %5;O_ %%I&ѼysUsԾ}{?N^^Gݝ͛+w:uȲ.Ӷm[ ٿ?PR?p@T*!.]O>ԪU '''Ο?Gr[ߠaÆܺu GGG:vHNN7o$%%SN)M 6l࣏>J*@ksqe@9ݻ`mm1׮]{iݺҦnݺ{I`6,i $)ТAsECѕ"ԗ̲UfÆ cdffŌ3055N:uVJ>}HHHJgoয়~W^պ7Ϛ5kɡW^ܹ8?<r/(")+iVDKiRZjRVj` ^? \/3s,s̙]QFP(#==]TZ߾}{._|GQYAvD4h񙩩8˓qpp׭[+VJJ ɟNJJ PCYTTDAAyyy$''caa!oWieۮ^K2uTnܸK,3fmMGG򘚚MLL?cر@\///Siկ_~wΜ9:u Zh^a]6% Ǐgڵtؑ;vpy~gÖ-[GPpM.J#JZ @^^ .ԩS( y"t|.yXxАDSR Q|h;+? A];MoR.L }e}׾ 6?ٙtuuԩNؘ۳|r BNN:::L0A0tPMɓ'?9zh4omɓ/&??yN޽Yd|a4]]]˹|ye៧ڝ| ݻiܸU[233YYY(^(?illl,_FP}׊Uȑ# /{quuϏ .`mm]ijRSS5-)) 333uy6oëFބ믿h";ޕuymSڸqpuuw޴iӦL}>|ٳgeΝΉ'S rteffgJ_tgjUFctѸ6rʏB2Up6m*ܾE>:rHƍ'&""B~=aNy)=YãW-[Ʋe+ T{Nn͕&$''aZ:tH*=|gϞȑ#Uڷtd̚5CallL>}Xhqݺuȑ#ܹs(EZrS۶oߞ0mgguqqa3aÆ!;dVZ%?Lb 5jD6S2mÇٹs'z#_7ǎ#22֭[Cv%? +ciiI׮]裏?~|婩ԯ__vZή4TS|dggcaa#7n 66Vc9___V\)t?Ç?'===rssAxضsN_tSj U_n]>̲epuuӓ1co/xxxкukWI޻wQ?˗/777޽;6l %%GGGٵk<&{Ȑ!ҺukP*ʝUT̙3I&agg999|epBj552k,h׮...qB6miӦ{@G}6j߾=111+P]r^}*ue&NÇˍ쌓mڴ>c{Μ9/ₗO>kܹs 6qFxw0a|{уmҴiS&M\U$u"` >kkk!'BS|g^a2AxQ߿޽{#IP(G$pqq!11SSS!']. 8vAy}ٳ4hЀIYYi0`$ή]ڵkMgKAṨ]v|I077'((ohɒ%L4 J% ߮l FbzMgAAxƞ[' @.eeeUsttɓ5 AA܆  |<+ %#[- iXYAxD'_A[3O>X+(*tQ '2, <7/ b齥Ss̩G=E,b$#GΪ s! /,c)EQb0 ьto:ә]Mcڴil߾}eddЭ[79/^9r$k?~\#kAWAښPDAQ@P]R+EZ",~fy:ujJڵ+:t 33u։ e ~gvʕ+dر̙3''VApAu'Z eKeKja*7E.r DEiQ/kMSTrIƏ7|[oŲe4։d͚5޽;w?/ŋٿ?vvv|kժG}7n|AベW~jԨ'Nx49p@Kbb3ɷcnnСCy3DGGP(),##ڵkӹsߋdŊ.;w.UJݝ;wl֭lٲGǣP(HOO1+OB$ xRD~Z>iiʹťK\Dp;STVZѠA~˓<R>ܻwtK:uP(׏˗/VkAx.Z?--ƤI('|:L7o&77\\R,< O&))Ic;W^Eܹs~ O?Tz7ݻԭ[xǬ }}}~:̙3`6oٳg|2zzz$''׶3%66LLL8uFfsNJ%AAAL4EBxx8ь5JUttt4N"::2c8),,@Rim#oooBBBP\xO?ѷoJѶ)رcYnK.Y~~>Æ c֬YܸqǏ3|BCC28p={܉>{,ܼyٳg3j(cƌa߲l2X&44X ϒz8z(Ge\rcǎ?xb+JΝ;?<.6oތ1jJkҥK=zK.Ė-[u8IJJÃ痛֕+WhҤ 7oԩS,^X>J_Ows̡s4lPkՋϓٳgquusrk={$??_~(?n8:===bbb1bM6K^חZj!?oжm[޽=}!++;wp=.]$wP vbmӧsU\"3h \%SYZZbhh۷T7ݻwJɩq_P8f̘Qf&M`gg[MW ՞B311Q~(8˓qpp׭[W[JII!##;;;|IIIv*PQPP@^^XXXlիWtRNʍ7aɒ%Wsssr`bbBRR\w* cP^=سgOmT~}<<<9s ^^^r)<<<hѢ{u]^۔P(?kұcGv5۳g[l!??B͛75ƶ>FJZ^^ .ԩS( y"L|.yXse9J[maE]EuQ%T*U0778255{Ax*mYzƝE]P>Tڶ5;My / `ﯱQF2w>/޵kP|L~_}W_}}}}֬YSU(L;ef>7ߗL)"##+ƖYdӧ)pUDrrr%W\+ڶVZHBB#G$00(ꊟ.\ںzSդj[RRfff@Ql޼? Ui!;+-ښ?꺼)mܸqһwoڴiS>>ٳ qsĉԩSJN233~3 %eVzVeR7/Gd6mZҴaS, +7i2L07z”A^>ӭ[7rss lذC'Jϟ?===yٳg9rHEvv6wΚ5CallL>}Xh< gXnݺqܹҥK1ڶ-,,}h;;; d̘1 6L~YOOO.!CXj0+hԨmڴ)yÇܹ^z_7ǎ#22֭[Cv%? +ciiI׮]裏4·HMM~kגLvvviH:uϗ[GGG6n@ll|E \R><<Ç+OR7zzzCwm+%%EoLL ={,7 ‹HF.4r|Aɯ[.fٲeɘ1cx7]ooo<<|Ȁ,{qvvɉ6mPPP@@@1tgΜŋqqqˋӧO^{5ܹÆ 2.&L{=zжm[6mʤI렪nqss‚>vVGaa!:tܹsӽ{w̙#:TZcVAb5>.Z-w$I cmmMZZ  ‹bIBQ<$|ū) <%P^_cٳgݻ7gϞ 6`bbRfVAx  ˖-###]v( ?]F&5A) o׮|=z@$ FZd &MRɀxk:[  sԅg'ɓ'k:  5vAYUxH"Q()ܰAxɈN r?9s5 EU_E-E-tС$nt, <7՞BSA^/gxOBաc5E/gX*+? /nԓSQ+ԨtTc= @_p妡/O1Zѣ2eJѹsg,XPz( ]>a}]ݺu+Vx.‹N A^jsA-t t_ #=#tp‰ZsOc,kdɒ c!6dG;wEL/ 2/ ddqO2P!_}M2ƍ'ر8qׯ̘1zksss^y GЮ];233qww… 5, D'_Axi&"JL u[pH"9) '$ )tZRTܹ/xb3g?y&111lݺܴѣGIJJͭ!6oތ1jժE# t:PdiPdPD~.OZ4u!;! xj޽;VVVxxxp}rrr XѺ%MJBRѦMnݺU>|MLMM8q"׿(,,^̌իW?}5jԨ[VOo===קv4mڴJ~(Q(rhӦ _|OvyΝYftرJѨQ#lmm)**z}>>Z">#hР={$66A^4ŝ QX@Lo$W_DGW_˼GaJ! 2qGT֭+.\V֭WZRUNFצ^U/ t cҤIO֋O>y&|͛7Knn.YYYlٲ%K~V&qqq撐ټy3}^UU׾}0a]v6{EԫW~q˳n:ϙ3g{.;wC^x9{CQb !F:)7RHN:gt\i^&KKK\$I\t&Mhݻ'NNNFTj  :gΜSN8;;G}$_}uvvfW_QTTٳ155Օ+V5|:u^cݺuL<ڶm˰a8<4m{{{>S9$FC5͛7g…׶ر#0fױd߾} > իc֬YB.]8wPU(Z ///:th(1utС^^^˟ر͛䄻;`oo2m=ھSNĄ|yC077@k>nݺۗG}v풙aaarqE:vȑ#G}6}aÆ4i҄?\FDhh(Un\I&1e;eVVV>|X~W_ѳg*ˣyfy,,,PT̞=K.?GOWlƍW۲e lذ/// zzzj ៭ڝ ǴiӸz*+o@WWGref̘ٴi/_ʕ+p2ӄst}}}~:̙3`6oٳg|2zzz$''׶3%66LLL8uFfsNJ%AAAL4EBxx8ь5JU[pԣGI$Yf_-/{뭷%@:~Kt]I$ߖ,/ߵkԠAm>iСRRRH򲐐ySJcƌK:::+WիKwpp6n(hBZr2R)]pA$IjѢvZyZӧOKoߖ)::Z^xbsRy6l(ծ][[Tn]IWWWjڴfz2dvݺuVX!EDDHkז;]yK#G$I$CCCŋiTTF[ ӧ4{J***$Iv*AڿFll1x*o:t Ufĉg}&>H~oii):tH~tR{,]ʾzzzRXXVZI6l4Bڷo-eeeIaaaRDD)]rEW-;wNʒH7nܐ233}]wr.jJbTo+zKn <=Nbb" 4Ԕ$}888֭PReJBFFvvvg@߾}EEEGrr2vr>*v,]Sr |||Xd &&&@\lmm\o:::$U#RSS+Loݺu >(qk9%%Q>|͚5ì\?`ӦM|7{r^  Zݻ%>>mwww9r۷ogرUӊqmV4Fݻo߾en7lPےxtuuOkƍٳ 8׿ؿ?Æ CTj<\{,_͉m=xz@^V&Mhg׮!P=&[nsN3aZ:tH*=|gϞ(޽(:k,:1}aѢEH)uƑ#GsK.k۶xZXX`gguqqa3aÆA2dV]b5M6r:%ӆ>|;wҫW/SӭҥK㏉/ˁ믿#eӦM;\Gkmm-?,Yt)qqqұcG6mZiAAxU_n]>̲epuuӓ1co/xxxкukWI޻wo0522~`8::Fzz:ݻwgHIIGGGv%3d|}}iݺ5NNN(JlmmcE۪T*̙äI>2[p!j2k,h׮...qB6miӦU2S>jРA_bڴioߞ˗3dܹ3[ޞų8880h 6oތ*2rHݻƕtmQ}}}իo{hժFFFܼyooruVn߾9۷gĉ =z4cƌk׮XZZr vQ  /?ۥj|xAGJJ j;&w KV~Ilٲ5iiiAYO޽$H Q(e~#IYYY萘TI /;vP^_E={, 4 &&(2kbbsM׍   Tծ];>z$IAMׁ   @@@t6AǺẟk: kt^>'vR1Y_ ]袱}~MYfРA޽KF8ϟ;SH_QFlݺ/?U/ ZRCP+FEFaN5x R6Ç$ I9s&GDD~~r}n3( 5+$tGBV7 (YꆊE拞y~^u<ׁ)3 /ʕ+̔>|A<ѕ|:ڵt)$Lq$fiktp~ǻ=m-LTjf߯q-Wk*y_+/ncݠ"l!-+m?]̘~0R_&P|_ǦQp#1_#@BiaoNn~!k>ն1;9bW|n:~F~/\:Lz%gĜ ݍ_.kIj1ٹ|C|ہ9&FI~W!_I xYn~!~A5kF&#=p o0_MN: z} ٹޜnFFu11'V ߇`nR3.PT${dWoS@=#}wnY]: n$f_6n|wE6řwnU^Aig׎u~xsӛ R1:~?tܙe˖CAAl߾WaBCeڴiό5;ЬY39{ ڶm 1GTt v'__Os5GZ*&kŃ|~L@]TDSz|yjٚک!_;˃>n^UQXE& XEgݭ+_۶upR}~G8Xu+E@qsl,qD%ēm'p7%lˊWKcƼae40͚.Q0鵖tq 7˴I Y\FB rߠ7z+$[)5>,Hz:W[S ytvbDw7w$aӠ!oӅz{/7 V2eW&%3G.NNg%tUJhEf|E4/s {s.\OB]$imG(qm)+*|ZƼ|F__O8_A w;3B~J̌u¢˥.KѲ^ia^6#83cz6âQq7GN^Ǹ >q/{Uޜ;<+Aژ.^?o7g䓕O=#}"Y G\m'#9z /Ts#1:HCO֔+mG([6|?{y 0st*uAN}%@`d1֥j\/$7+P[_}=};ȟ)utHL˦vc{5( : TJjUIr>*v߯WnŠNN3'2.a1upDWCZVnM '#=yy[_(,i`bPF6[WU aEG9w(ܛ4"JMp->M>yyW+ t0̘,n|>>)'eCS7_UjG( OQ:wQ)uqj$wu#1WSjGK[AJ8[կҾcRKp1%@TmnP9yejt"?d.\Obdw7y8H}9>],nyOB9toa0u kѶi#yAjʫ䓥ZJ!/l'ҡcCA'BUSX̘^nT2mH_ͬQn S#n$eJ#ׁ1NSzboZA៪Ws c};У-9/ޣI%+JnN^IvkWS+w~?^_zmDI 藫a$)*q#ۆu> yj^KzV &Fί4gM9W"Y9:'=Z2sH;tUJEELd1]fүY98yEcRU|j#l|tuQMׁ 7rDP*pSaMMgI{n|_.Kk/<>\sMgCr?9s5 EU_E-E-tС$nt, <7m  <+/gxOBաc5E/gXÚ'ߑ KBtAo7~cɩjT:*uǞWx ` /8rחL.mL2<ׯ $''P(HLL|*e><{ioݺ-[@K"y:ZA[ۿMg3Ԓ @@Z03L 'E- 0:O9ƱÇ˯g͚9pYrrr***BGG57@ǎOزe 5.AWAVRf\rA@z Q𠀬,sxI& 0Đ?x⫵)Sϸqё;vhBGٷohAj/ QPTPP[DL)ܜ\2L3PVR*aC L::::4R׭[W~]Zr~ի'VT6h@~ԔǪ~G>|3kA^ / L Mr Ё"((,@&/3j'FFeұʕ+x{{˟IĥK0as)B_[XXp=ߧqƏ:ׯ.e̬܇F;upttԘIS=-Mצ̈́ qҊ+ӦM4tUqttt=z3/ӬÇP(|r̙BxP>9z*a;@"Hw$ j nPp›nXd4},XO?D~~>wadgg3nܸ^nݺΝ;y6lСC#55U^%|}}9pP|0bbcc{AxK'OKKc1iҤ'JE'g߸q?Ν;رGGGyvvvH/533C$7_6@ǎ߈ʕ+̝;W?ܸqdgg?f=z4ȑ#t׮]ի5\ <L5m4^ʯʁoѣ\|3fpA6m˗r 111ܾ}[c "1OG$ ab۶m#((t^}U믿 cÆ lÇG__(_Nvv6s 88͛7sY._FmΘ1___bccĄSNi?11ooo,X;wDTĤIXh!!!ͨQ8p TŏHDGGs)IHH([m(>#88Pbcc0`o!<<(nݺ#.l޼ccc"""hժ$ x>}:ǏgӦMr/w8ƍӧL>UV!IP|h̟?ww1tP8y$| 'O$!!={2|pmRJŁسgxyy駟VXw^9u'C[ݖ344vq ~W/_Ε+Wx#66We6{X hضsN_tSƺMMgOṪv'*{`ll ׯ7FPH~~~WzjJ%? ՠAعs'#$$YfRwޑ?~^zWSM&w*‚Gr ˖-r322f̙3rݻz:uŷ333+ǀWFmyw9}4( q޽;xzzLNNܾ}pC޽iذ$'׿066s LLL6ܹ3 w^K&M={6!!!Unm|}}UP<͛7?a֮]+?\xeukffF߾}hذ! 6g+ tEVPD LjήaRۤ#P#=NU*<99}ݺu5"LRRRИ,??wwwyv߾}EEEGrr2vr>*v,]Sr |||Xd &&&@\lmm\o:::$OrҦrM6Ѿ}{vͬYl bbbӧF$''kO^6Gԫl:aÆ{PcNxbPTܼy޽{PPģyAA^LWezCqLLL̔geeἫtZVVVXZZ;;@ɸӧOcccSfyIOOKTmZ $00FI`` _5P<;+~~~\pkkJMVQoIIIŝUUY9]??2_s΄Rضm[Cb„ ߟׯk!)rJ 233Ν;4lذ1yU,--iذF=??f͚imLεZǷW!Çg֭۷[)))x{{ey'hj^xtx  /jשlzGyzzr!*ӓ={#GTi^^^dgg{n6k,:1}aѢE0v֍#Gp.]*_Uֶmaa!۷',, (itz\\\8p cƌaذarǪfC aժUë+VQFi%sNzw2qeuP/+W;~ϟgW+Ojj*T*ذa>˜[H:tQFL2#FQx~y}:uЫW/֬YCϞ=ɑC9sVZ?@ddFBPhmkkkr_mu0qD֯_ZCek[m˓sqqDPJAK;M(___u8;;S^=w*?`jdd?qtt͍tw HIIGGGv%y2dn'''J%rgmU*saҤI@NNq-\ZM@@9٬Y]vLpp mڴƆM{QfJъh{=zA۶miڴ)&MO#cEYp!ͣyL0%K```@=pww -WHH'Nd֭\vu1rH>|8DEEqux*;w2|~/^o'**[n(3f<0_EDDFҚW]]]HLL}5}8 ? OUjj*3f4o޼N:Eڵ9r$P|ر`ll ׯ7FPH~~ּlذ-[p1ԩ#StOR1ydyJń hР~~~rIOOg۶mrv߾}( K߾}iҤ g&$$r޽>}ТE 88`IZ#$$YfRwOHܿ{w9}4( 믿6W\ڵkl߾^{ 333y-1zhX+ A8ƎKTTf_*D4h񙩩)III˓5׭[uVX}]LLL4KNN~#%% UV^&f͚qaN8-[d>ի'G?j322dRRR۷l̘1'CεZ֚;w0m4ڶmK-WرCR-MܦAn߾͸qexyyikaa{4>>7ߗcbbBff>++ 766ܹs 4?ŋw Jw޽+Ғ* ///j5wחx6lq_Efʔʊ_חIdӧy6(:;w&44JŶm!@P}Tג~eçAx>ĕ|Aiڴ)+V{֭Гd6lСC]ӓC ӓ={#G4hvbݺu:tH-['??UVxyyݻYmKcӦM;7oO>j,Yiq^,gϞAWMLLpvv p,Czw}%*J-⭷ޒgPT,\6lȬY4իM4ʊ#F Ν;ҥ ٳ'NNN4( vڅ7x{{u[.}ѣr3f[qWL: =z\/nӓ ҪU+.]$/q]v|[[[[000 pVAL9}4PcĶm 4X!l޼gre4Ҷ3%66LLL8uFfsNJ%AAAL4EBxx8ь5+?ͩS&!!1V>3 %66 Pi~* b``͛166&""VZpA'00ӧ0~x6m$)!!pF-V9y$oF2[osNW~W+᷷~;;;bccz*,[L.ohh(ڵĉ,_+Wuq%=ʥKHJJb˖-cU4nܘAneO?˗/CLL ˁؿ?IIIxxxwD`y  ..7orY:w\YAx!U<֡C`%9~8zQFL6Mm-,,8z(gΜAPl2/1##ooofΜɘ1c-޽{y뭷,&M"33S*)S%N8XmS)%vɓ9OիWrJL<ݻw(%#99|}}}6ٳ޽{ӰaCy۬,򰰰{NNN4jԈ[niW( ҥF۷/ 6aÆܼyS^ce4h RZeh{oRvm ?3SSS.KI}8 b< b ,ɣ* VR"??www!%w !J*v,]Sr |||Xd &&&@\lmm\o:::$3BӦrM6Ѿ}{vޭ1;ܼyW^yEkKd_%cYx1IIIT*n޼I޽u=&JK/J=V&>>ܓO} SvmmW%qJ<|///# _? &z4p%qqqϝ;wާOݺu4jժU&JNNmԩC`` .\ 22}oߎo߮RjRSS5Rrr2fff6u/^QtqcjjJhh(aaa|Ǐ&L={WdgϞ|we7ߔ.W$%%oooƎ˹s {RUGm8p@rwO} ܓVyK.{4% WNb`%֭GΝ;@qڶ-,,}ŝu;;; d̘1 6L~YOOO.!CXjp+hԨmڴYz5P|EtΝ ([^G=N___V\)?Çk\(?ڂ鑛KNNNڴC4jԈ)S0btuu˔w\paÆK~~>'}%&&FDCf͚ڵŅ`5Nx\\\hӦ 6664mڔ{2SVS{=zA۶miڴ)&MOc uEL777,,,V*3~x;Ƹq-СuaСt҅cǎ'kaxzzҲeK6nȪU8~ƕJ=fgg>Ϗ{]:q9{l:w#vvvU)# /&ۥGu5BOO}}} prr_ٱh cdd3ÇR}խ[.]Sk״ _hQ( ‹uE"ͣYf :AtvA&KKK֮]<""?՛7o&774vI\\[&!!AcH|L:y0a撘ȠA۷ok˒lܸQ7nܘw>L<=N> &BfLRRͫ"T^E Y777 /^#&"8iӦ ƦJ%B~~SsR$=+c``̙3W!!!P<;...hтm۶U>E+߱c]v7Ғ/ 6pB&Nȝ;wg v?{%::-[0~x.^Xi}hV7we̙tؑٳgfi;Jy޾};hQATf̘Լyr_EvvvCCCx >177'==m۶(GŮJ pBrrr4⎔>.ˠA{:t,Z#F4ڎ']]]ؼy3ј5p < / <5qqq;(f͚V'rzO+rzϪUHOO׈^l̘1K:Pq]z5:ubԩoj<9c ]VDu"ի˗ٳg|2Mf8|0'N͍-[ _vmƍ9z(ǎ(sU9*h%m$G+R񤣣/Bnn.X[[dBu< AA۷o3n8rssY`^^^Ɗ#rzyJϟ>}2˫9mkժE`` $$$0rHs>q+"tP7rzaa!˗//7wI=:880n8̙Ò%KP*^<.^^^xyyVٽ{7cnn^& &ݼ8rss>ϯ>[3' C;<nnnl:[Aq%_Ax6mʊ+޽>/ZtZMdd$̝;KLLd֭j kkk"##mK|شicǎ%//RI۶m$ RZfڵW믿~:P܉_4fk>7ZyvIΝ2`bbRA.A +++/_NVѩϋbDNC__ڵkӻwo +s$R>-[֖[0uTi۶-}Cj$IV;99Aؼy30qD]Vs,[ \]]8q"۷oյxhC/k׮U>5kF>}ԩM42i{oA^户σ-C񈷂 $DtA{a;"v+B]&Lw})ϊ+ӦM0{W\sssc餥GJ~$RRR1iԨ|Ȩ¶6mZtRtttXvQ^"r B=NGÑ>|I$3g2p@}DDDMmUŋi߾=… deeq^J׮]̗=d~'oHHN~i :]]]كYYYr۴iӆK/_^}:*)S߻R8tŋtޝɓ'eøCDGGJ⭷ޢGrQy;v`j=ۏ  OO;"rVYHomyw9}4( +޽;@|۷ ݛ feeW&cU޽>}ТE x* ^חZjao޼YΝKhh(ݫp~To߾o&M4 >-cǢqܑHOOɓT*۵k3v*U / v#wpp?p%qww)^rH#ybEv,]Sr |||Xd֭[YlY^Y=޽{_~wNrr2?sl۶l֭[GrIDATˍXn]zɒ%K$B.]믿.~~~l۶yǭ[0a.] U/‘+JJHpB͛G͙0aK,=zh3~x;Ƹq-|աCԩСCҥ ǎOӾ}{/_ΐ!Cprrsδn{{Jջwo ))cё}Je*[rܑ.MT2tP;WR޽{ciiNùi&ݻ+7GIpp0{TcP!&&I&qɚΎR|顯NNNkܽFP>FFF?z;w.UZ&/iCmu# l߾]پ})ݸqC͕}IOP~]TT$ժUKpwqm j:+5 ]v5]ise988Hb طo-eeeIaaaRDD)]rEW-;wNʒH7nܐ233}=)**_._jݺm۶Z~SSS%@~U 6?Dihn? 6v!I$HΝ  YZZJ$IRTTHwޕ$oyppT*9sH{ҺAAA],I=Nj;Ə/tqHE}V#INNfܹ|G5AIP`ooϚ5kpss/`ZV^x+iӆ}accS3KJcaa!=zƄ |wU$޾L$&&P(صk޸̓0{. +WҠAΝ;iرLILL}ZI[T*;wdҥ70zh*=n>S._LLL 1112gΜ2mxYy&gfԨQ߷oG%)) 777yZҴź2/Z畟?$͛WEO+KdJxRSSFE]O[yq4hР4Θ`hho'|"ׁ6椧m6o߾*ϰ?5ѣgʴSey۷/@ 0M>|Mj׮AAA|eٶm[޽+?֧OIA|MLMMQ(L8ӧOk@b\ϵ/ 1vX5k>_x+?x+%?V"==]#Hɲ1ch[)TAVvtԉSbffƛo13vZ㭔Չ_&իWIOO'77˗/gϞ*MܬY3>̉'psse˖߿yy&E[=UP(SZ(>FKDŽ]v#Xp!۷CDmOLMM)**8VnJ$ǺjAn߾͸qexyy;5k!Jy薌?}4666eW5Jy֪U@IHH`ȑ_V\]]… dmVQo˗WR7nsaɒ%(J兗jݻwK||vJ{rr2JR7n & OMӦMYbEJV^x+jH̃;wn֭[iժDFFn۶M^wӦM;ƍOJajj*ԩS|%[loذܓĺD'_Ax*X|9ZBG?/"ʋo}}}j׮M޽&,,;;;y-[bkk֭[:u*ٴmۖ>}СCj5$1x`ppp`РAl޼SSS 8q"׮]{t Y `8::m6j׮]q3{l:w#vvv'p̙\x>kkk^I^6&LȈ"Ucˋ+ KA[A: R(oE$EA N ǩ eoڵ5Ax*^:>>>3䓧?|0$!I3gd.2)))Z_.[[[֬YZf˖-CBCCӧOdϟx"۷^z\p,8իWڵcE,znժU?/~:A{N3gԩθGs:;;`ꫯ(**b٘ʊ+ptti>xN:š׭[ɓm۶fϟӓMboo/OQA,FMښ͛pBkt{{{lll3f#88Pbcc0`o!<<(nݺ#.l޼ccc"""`)$ x>}:ǏgӦMrgekoo {?[n~~~C7dNxx87o$$$m۶q%bccY~=6m*NUҥK=zK.Ė-[P՜kgfϞ={.jOOOV @XXԭ[FٳUM64i?#zzzPV-|||ؾ};qqq3m4gҤIjqXX=zPvL0A J;‚PN8FaٲeZ~'''ԩS>|x{Gj3f ?V[ﺾ>/PucƎK58q"ׯ_'22|DDD`ddFݝ_~r \@ZZ^^^ܽ{ӧOk.ܨ]v8zj4}}}j֬ƍf͚S~}IJJb˖-кukSgYY:::899qRRR¢U乳3񤥥_JY׷o_Å 8wqqqTB7U ?&&Zjim333Z&&&|MLL$99o$%%u7|p !!A h!//GiǮY3~xj֬ɻKRRה)Sq/s`jjUo+`Uit/BMרQ#W &вeKڴiç~Zb?իoɡJ*x{{;wdĈ3h ~gnݺƍظȴ:::;vtݱ櫯BQ^uǡCpttTT|jZ*FFFܹsU]Q U?aԨQPV-+<ȓ'O,~7|}}t.BU8ȷ ..Nk[||#n݊w-SCz+%$$ZZ4]i,XU>T.<̌'Orԩ"f/+___vEtt47oix{{yf6mڤS[[[V\Itt4,[LQk׮ڵxf̘W,(:::tޝUVڗߍ~+{< Wʚwzz:G.*֭[3Ç,me,ѨQ#&OFQgݪR NNNJz{{ĄN:xeW K.]@gEwqq!$$Dm3g3gΨ%KӵkWRSSٹs'L6VJϞ=? g`.]p~w/^*tlvv6[ԩS@^dccPӧOΠAu0իWWWXA:uhѢO'Oؾ};=z+_~}SZw}~;wZŕÇ8;;Gll,jv)yZ6mSƍcxGfЦMbz*;vTcjjFaÆ 1B f[l(jKy̝ܳ;3h n߾Mff&.\W^ܺuuTPi\Xp!999}J/???FEfi{۸q# ˋ͛ӨQ#tuu_ wfb̘1аaCҊl7o999-Cf̙L6]ҪU+ &88X =-Z^z4nܘ?+WϪ8%AA~!ݺue˖4nܘ1cWy_ФI|}}YhFFFt '''Pg)ͨQ8x #G,z[hF*1_={Ҿ}{^{5O>FѰaCƍ'egqttTiӆjժ1p@:u+{깬y~Y&M4ꅴWFA]GGG[,XPb0%ufi344Eٳz묮.o68aÆ1m45ͅ f2+SNzꄇZ%4 }jW%+i֭Jjj֭[Ǐ+*{QUvv\RJ9Wݻw@y.K)ݻVZڳg(NR\\zUT]DEE)ׯ_//**J9{~)ceϞ=峼4J\\o(o?.))IQeEQ%11QqppP((ҹsgjԮ][|ᇊV(xPԭ[W?EQSN)Srss K;vluUo^j~gJ&MDEQe…J&M>H+﮸Xx{jժŭ[fSSSuϖ/>䓗]!3z!SL~lҤId,mj*4郝;gi-BXdV'O0ocu놢({n^v/`Ŋ;}!Att4'NL6MXְaC-_ff&NNNZ3ZYڊ:v͚5,^믿ɢEԅLBzzzgi˿g޽{~:uAQn߾ͨQu-*1̾;fΜIz={ei~~~|@^7xRV-Mq?c\պg377/*{aA>~0++"tzfB5ܽ{#Gܹsڵk-Yn߾](]~իWhYgi+J*1{lfϞ2dg?7K>>>?kkR뭸YgB+,m,_Y4 6dȑ̚5E5ҵkWvJNN;wˋ{wAEJVbE񑿸_Y~AUº!x5nܘ+VZj5K[NNW^_~_*bbbؼy5W^nٲEM[Lf999vGQJ7e1N B<VVV,_7x{Y`hhHʕqssښSNjQo֬g?TZlIϞ=iӦ 999(RLfYYY=7n9+ޔe8!)4[nU飵1(( ''N!w^PWbllF)WEQHII^MCLL fff˿gyNN)'OYf/h ښGm۶QT,/-B!d6!(:V!(M!N|!2K[j !^#B!+F|!B!^1 ӓ5ksԩS%fkkK```ӯeXb.B!x W=b޽:u|>eKB!/3'N}'|gggܹsaɒ%2c ppp`ŊAx뭷XncǎeɴlR]ܹsиqc4hvyy}:4i҄yicϝ;G۶miРcꊃݼyKKKك7W\aY M=tԉgFatڕ 2p"ϡ( ӧOA4h'''۶mI&4jԨоwҫW/j׮k7|ӹsgy,--K4ZjǏqrrl޼LB!xq*''' ~:Ǐ'00+WOhh(/_fʔ)a._Ldd$nݻuZ*3j(ٽ{7[la$%%o/©SgϞ=x{{chhȵk׸y&̚5 `6nș3g|2$$$/)S۷u9rD1113w\<==پ};޽1c0|9}4QQQ :>}.ő#GEΖ-[toflذEQgl޼7nn: 0tPԩS,_@qww%և7njժ\rGGG}]n۷9}4OΝ;/Bo/.]zEB*9rʕ+3djԨ#VxzzRjUnݺh4fϞMfffצMu===|}}U>>>l߾8Ù6mzzz3i$o߮GԩS &Ӎv8qFòex2&''ԩS>|x{Gj3f ?V[ƍ}Q,r9IIIlٲZn͞={h4ܹ={ҴiSᅬFܜHz- bBLGG[n1f>#T8ȏVZZ̈U_ܟ2౉$''ccc^$իodeeABB5jPWQڱk֬}?5k5enܸQb`t`jjUofffMMMya|^uǡCpttYfݻWQ~^JBBzիW׺ԬYSKIGcǎ;|W2_#annG}֭[[TBwV ‚8mԭ[W}]+)?V_\ KKKտ+++"""}=RJԨQC+0OKKS_vlj՘={6ϟիܺuٳgyݻwTo999<|P  ZwA]ve׮]3c ʊkO\\]vsܻwO}t=TOeʕDGGȲeˊqHףhhРk׮ёo cB< ]t!==]?,2 !!!j9s000P9s]v%55;wɴi jժٓ竭ׯWv҅xb/|IfggӺukN:666ZA=}a 4H@zju0+S-ZPɟ6ɓ'l߾=zyذa#F ##]]]Zl(E`` kܾ}5jŋ&66;O?tҸz*;vT,cjjZh̅-ߢE/^,256K!ijpobb¾}Xl0|p}"{yy3͛7ΎիE0-J*UX|98::+$&&bkk-;vPg0`^^^4oޜFK c5kcƌƆ ƿB7o999Cf̙L6]ҪU+ &88X =-Z^z4nܘ?+WSFѰaCƍ133u,_ШQ#:vHiР7oݻӺukF GGG,,,y&={}k8;;I>}#+=|)Sy_M4)2݋%4[nUĂ 11 rrr8x``Y䠫 Middɓ'i֬ˮ{ammͣG055}B{ EQz*h4BEQ4:::`ff/<::'L6reժUYYݶn:,Y˗qrrb֬Y`AѰaCu^ʹ{nw^!mFQ [̙3ԪU[ny-Ħ9B!^w2rH;w.^^^f !(jՊ?nݺQ~}V\ݻ122zu kܸ1+VU8{lBGٳ(ӧEaVVV2⥱bi0lجS矣hJu1177g„ ZcB5ݒ%K޽;=ڵ?kk (B=ذauѫW/mint֍cǎ1~x>߿OOO7n^^^m۶ѹsgy,--B!x%T8ONNà &pu?N`` +W/ L2 6l˗֭[ܽ{FS(Ȯ]8y$]v/ ""ɓ'@TT6mbԨQ\x=e %44s9z( , &&chhȵk׸y&̚5\s-n޼Ixx8Gfܸqu1d|Ogcc۷~:W\aٲe%gϞԫWOm /Ns;vSNxb=ZdlFum.]"!!u[I_ڽĉquu… `nnNTTW\AOOO򤯯?;<#-Bʨp*W̐!CQ#F 88XMIժU Ãuh={6E]^^^TT gggܹ@@@}UIwvvՕؾ}i%ܽ{8Ù6mzzz3iҤrw!U>dΝٓMЦMZn]d_]vd4 tԉ_~L{aVvm.֭KN8tPwNff&ǎZGE,_ܽ+NRR棏>BGG]]]&O9 <\F!UUocbb6Vhذ".KڂuuuQUn˕CWW*U+11^zAlnn.YYYdddAjiݻبŅxΜ9Ϝ9:--mIOPP7oܹs;vLRVUVgϞ̟?EQݻWb~=fΜɆ XbM%00Pv}ֱdddТE Ξ=KXXXo=z?cǎ嫯N:X[[sU RAܹ7np1z@pp KKK:w'|¨Q700 )) EQ011{,ZEQf_{!B"T8711a߾},[ \\\>|8n齼pwwٙ͛cggG - )mI:vȲeѣGuV}$&&bkk-;v`РA\r1chSwvv&**t֭[|r @Fر#͛7AZԫW3fBfYz5aaa̞=_~E ???֭[ԩS|+6n܈ Æ S'''Ξ=m۶e̙jYky =z4O}:ӧOiWNBB =a6l˾t!B'xauB!/B!Bb$B!#AB! B!xH/B!+F|!B!^1 !B 9ۛ:uPR%,,,߿?.\J#>C^{5*UDڵ8p W\y.o133cȑ/JB!KBܗ} .ЦM8wiii>}:vȍ7HIIC={ }:XKKKttt/wߑLhh(R^=/^ҥKxzzҸqc"66q1ydF l۶ pu>3ƍ/!BT8ONNà &pu?N`` +W@__P._̔)S bÆ \|Hnݺݻwh4.-ڵ'OҵkWK""">PBCC;w.WWWBBBc ׯs]gڴi顯ϤIؾ}{򦤤I:umԩSG(n8|0}:::2yd߯v}ruuJxҞ!B!*z`LL jfffv)'$$аaC &&&E]_꒓nݺ%+.UT)Wbb"zR[sss"##Cwޥm۶iFpW_ }ѣGE^?ցB!gpKqqqZ]qLMMy:%%E |V)WY䷒GDDMtt4= tttѣ~~~6rv777vڥ~(h>|Xm/xRF2!BQ K.WgEwqq!$$0g gΜeJ[Rs9;v)UҳgOϟ(@ހcjsNtt4,rssYheE!B=S} ڷo|'dee`ggܹsaɒ%2c ppp`ŊV(۳tRzM۶mqvvҥKׯ {{{6mʖ-[ANz9s&[l [[[f̘iԨLJ?zy&ٳsBƍiР_~%| ={:O?h4;jժٳg2e ~iuPB! xxx0a_ dʕ˗2e AAAlذ˗/ɭ[{n-ӥ#00]vqIvL<شiFŋpOhh(̝;H<ѣGY`111x{{chhȵk׸y&̚5zݝsIRRo&>>>/:u ûˡCxzΝ;1bDGGC֭SRB!īA#G\2C F1`5'UV ,, ֭FadffwYzyyQR%s;;;u+!!!}PKKK{.qqq3m4gҤIl߾:INNݝS2|p~GVZ}vlmmر#6m… $&&oy6 ]]"W\B!ī}cbbU6333bcc'$$аaC &&&E]_꒓nݺ%+G~\JBy%&&ЫW/<77,222ຠ)SNm$''cccn L_3}tvɐ!C000(V\B!īAqqqZCLMMy:%%".Oڲѱ\geeuW^裏pppLJcmmܾ}cĉtvbΝZ+YO!BUN.]HOOW$$$LBHH>`Μ9Z-gΜeJ[͛7AǎSUժUٳ'GQ o@o~{~zcӧÇgРAdeeѵkWRSS=33iӦ݇ :t(ӧOrʼtCB!_|DzepppŅÇ wwwi޼9vvvT^]m`…eJ[;l2<==qpp`lݺr_?bkkˎ;4hW\a̘1E7o}:UT~`HRRjz___<ȑ#M}B![*}XXXW###Nx&&&}g0lذB9%7.TTŷ.].yf5kLP^QQQh4<== KNNrtSڞǽB!x^H\ |}}IOO'==K^~^hsy򆇇?sb &OLpp0Zquu_~):}WgϞcܹذdrss1cfff888b lmm +oIi.\?cх ҲĀ7SNzꄇY)S駟)!!!Ett4=z^ʊʱc?~<V[ccc}:z ͛͛ٿ?-Zѣ4k طok֬AQ'OeƏOFFӦM{{{:uٳg Ϗ-[jm355ocooOϞ=9q4i777TУG6lؠuuѫW/mׯ {{{6mʖ-[},]޽{Ӷm[tw[nEޫIƍqppK±m6:w;#eHB!Yd<<<0aׯ_rJ L2 6l˗֭[ܽ{FS(N:m2c ֮]uѣGy -rrr+u놱1m۶1l0y\~+Wl2\\\8q"\p6dhhȵk׸y&̚5} &Nի@}ƌ >>ŕ+WSwww|>tuu>>k׎4ӧO`bccΝ;#?}^ 577,222 4ߡCu={TeffrJ|"5jP=~x6mJll,?^ :::_$RJ999E>FèQm۶l۶sqQ5MLLL{X/CIbbb =fffdff#j֬YB!U8ȷ ..Nk[||VUԔǏSRRHNN.2ͷ{nv܉GU<חUVWQ]lݺUmOLLݝM61p@FO( ^R^Ro՚XZZ lk׮]\~KKKT=:t`ƍaԨQߟ n޼ Mz1[2W&&&tޝE( ,^Kp/B &&&۷e˖ Çw-28;;Ӽys^,p28p .sZgǎ>nj\+lȐ!榶׫W3fBfYz5aaa̞=777 66֖;v0h =z47n`tԉ:u*+Zj8p PfMFŎ;Vi}OڵiӦ}ڴitڕVZaooOpp0Z_\]]e˖у8lll4%F͓'Oݻw};vdٲexzzѣٺu+*jÆ FFF,]>SB!ϛf֭J>}6Abb"pAL'AWWPjddɓ'\dӧ?B!Bº!B!^ B!xH/B!+F|!B!^1 !B _!BWB!Bb$B! ϝ;ɓ'wRFOOCCC 111SNDDD{/|3711۷WHS*U‚s5MTTF6CCClll6mO<`„ 7OlONzQ:tٳ|Eׯ_?}󶵵%00uYuԡN:deeסC4 t bbb^u !BKzz:зo_z,E3g37<;vƍZ飣 _z:/5|㏜:uuƀ?~<7n$==]o>Əe3-**;w<֭˃011>PkB!{z ĉo;;;ON;;;Ν K,!773f`ff+V֖Bv…3o|Ooߞ?@ޯGfܸqu1d{b >\>>>ŕ+WS˴}v̙ñcX`'O.T۷ݻ3f '<<ӧOСCӧyкurՓB!^M9Bʕ2d5j`Ĉi<==Z*aaaxxxPn]4 gj/#ttte߿_Fꊕzm񤥥x{TV 1ccVaÆ[:B!īA~LL jfffvM'$$h611Q?}9sļ 填Eg8VVV_m/Nǎ144$ SN{n/ũ(TuÇ} !BT%K.LWѧÇ3g3gp2500P峷g޼ydgg3c oZa˖-URSSȠE={0RSS&%%( UVgϞ̟?EQA_~%̙3 >hrssyK,aժU9Ui5vڵDFFXdk׮j͛7R;F߾} ammvIII)4X TW3x`n߾](/SN CCC}&&&tޝE( ,^;/0իW+SsB!xT%Ą}1uT>s4 Ç/vs///;3L0իO@@gϞgϞ8p &LѣZ3c7o *Ub̘1ν^C a333իnj3pqqf͚tؑիWٳdѢEXXXpEEаaC-[ =z4Ԯ]ƍsY>3ڵkGbb"ffftЁ\\\uv?ܴ}W^U[>|۫Ǐwؑe˖IVVFFFlݺBeꫯ7nFxzz9[SiZn0`iii>;'|RN 60i$m۶eѢE.СCy4i}ɴj EQ"88X닯wޗ]!2֭[>}hm ÃD,,,NCV###N0sL4i#zZ8qƍO:uDǎYbşv7͛WϠ>;IBQ6ϲqEp{Ϗ?kRJeNkrBۣٱc */jբ~ϥO׿߿\ᘚҶmB<==Sу0s sN]ƹs000ԩSZ7䤮R^>Sf͚1p@ZlɥKTE>͚5㣏>ݝۓSb=;-ZЮ];ƏOZZ7nܠk׮k׎֭[si9sЬY3x .]ZQ޽{dBBBx뭷X~=:ah޼9mڴѣ1۷ogذax{{^{]{2߾}ݻckk(>C[E$-B!Jdmm… پ};˗/gժU@|.\gggL5xxx`mm](_pi߾==zĄ3gҧOƏ~ҥ9r˗P(Ǐj)ٳ'GFGG;v0{l8tуڵkGzz:}|,[O>z)̛7oĉАk׮`ddƍ]6YYYmۖ={bkk155eZmݺUVq}u Ɔ!C~z5@IMMeƍܿ=z0x `ffFpp0VVVmݺ5_}tؑ:pi044А.]p)5/3N:ń hڴ)FFFܹsG#WWWj׮]/˽yݺuC__GGGbbbʔz$B/5Wlj֬ˢUo}/%ճt-E__ 5 PCo>^u"""ϋ,NNy],rrr^2u̺u눉~@OOwwwS{VsuK*s5hF_AVY\vf͚Kll,TTǏO??7pE5/!nnn;vlVs_GGgtnn.=]]2rWϑ,^GbbbW_}Evv6m۶9rɓ'3~B]JΊ˪_2*>/%9u{h4$%%z7zzz7U:uDDDDO!JQWNZh4檁hQ`ffIz:DVV<͛SZ5goo͛7999dddаaC o|@AΝ'3305@~`ZS5HHH ++Lؽ{w6lؠuIII4n===}Sĸq{.={SNdggSre~GKWR#GҪU+իGpppe6ltF+seȑ1ׯchh9_~2d?|GDDDW_ᅮ3g;v,c 0EQh޼yZd˫2eڴi̜96mڐ%;v(6}TT)))j `8@f&-->R[{SRR;v,[رc9s&cѣؼJ{6osaڴi#vvvjlii~]vXYY1p@qF 055N:vA7nx^&Mĸqhժ[Ne3g燹9&L`Ŭ\7|S+b^tٳgSjU<<<={6O_9rƍk퍩i#oaСI*Ux뭷8p qqq¨Q>g̘1ܸq,:uꄟΝcѠA.\@ll,|gϞ%33Ν;b VZy{{SF vݿ?~-cʕt]= ɒ%jLJJ*vZV^͂ q>yuuV6mĉr 8;;tRj׮͛op~~~ZgϪ155e߾}baa?۷o'22Cƍug޼y%תU8pΝcϞ=jÇiԨnnn4hЀ/׳h"TӧOgС`aa޽{XYYk.V/UTӳ~u2vX w~orw^ܞ[~:::`ffơCk/[ll, ѣ~.novv6u%..e_xEaddDJJ [VX[[3z]L X͊xxx0a_ T'44˗/3eذa/_&22[nq"[KJ;uTڶmˌ3n&=Ohhh$0*wnݺallLhhm۶m 6 }}}}lllԟ\²epqqaĉr /pϟq͛2k֬bנAcZn>>>gl F||ִb;v www|||077'**+WWtS%?W||<2w\"##9x Geꀘ+''wyGmCT\Yɓ  **M61j(.^ҥKr%bccٴiVً%Չ>wf˖- ']6SL)rv !^޽{ӵkW<<<;wVK_|!x!*]ȑ#T\!Cy}GAppmSm C>1{l/^\dIŋ 6{Dk^liii˝OGGCczMjj*yS5 tIVP\\j0y?_ 8~|}}cȐ!qQ6mW_}U[HVVG!00` owyիW]qc>̚5kɓ'өS ۷/vvv/Es]tttT_Fy,^ccc֭[Dzeظq& }svvՕƍɩU4J6mڨ"޽n%=🤬?wڕ]ڮh/RP m722bС#VZ)>dڴidddD !*'K.S &$$Osqq!$$y'Q}8P|̛7lf̘Ö-[W*A-8{,aaajPk``@RRPjUzׯWW%Gf)S[4~xlΝ;LLL޽;-R^x1/Z[[͓'Of(ꫠ~qu;Sh R;wǎS UY:ϸ>3f̘1̙ܺZL6ZjLtܙ&MЬY3(+;w,wC}.] vGBBUVoys_rFannN:uhԨQ`gv!?K|DzepppŅÇ;8;;Ӽys^p28p .sZgǎĕ+W3fs!C:]z1c...4k֌իWٳqss#** bcc'11[[[lmmٱc ɏ=7n:w-033+y۷/Ԯ][ ņ '''Kꊇ-[GaccSy * TZp'=[;@z~Nx;wf\z^zq5LBۼ?#:tѣϔψ#믹|2ǏzEGG8bq>ҸѴiStR9x =zP*ɉ7n0l0>CnܸQ !*♦,(q"P*OZ!xU4F?;wdȐ!eBڵk7QFq9p ƌCzz:999,_ĕLEFDEE4igϞ޽{4i҄ڵk޿z7|˗/c"""wǏի]Vr~?yDEENp9ƍ!7&%%E닅?e 'O&<<\̙fy9sZjcjjZ#I+0i$V^{\WpuuUk5kпN8ADDDk4&L@֭7n,ҥKꫯhժ/ԝ͛ٓP>.gtСйܹ_Mhh({.s%""șZjűcT/YYY;v:ХK/ɓVxQ|֬[ɓ'|r fpp0߿cnnNRR~!vO]kܹlْӧOC%/==pر2T'kzaA~V֭gʕ޽##gJ+4sq\]]HҺuk7ogϞԴԼ̙_5k_|Qh☛W8NNNj˹5;)))DGGӭ[7 oѧծ]Le:~8]vL>+Vѣb'|(_HիWjN>Mbb"Ӈ;v3z>i۶-GaɌ?رW叡ӧmڴa?CUY=TOy[ PQfdd9v͚5#77Xu%KpE9›oɾ}x+| ^Oij4 *v_1B֒/qE.\ ۷ociiE.@ .VşJ*ԯ__S=/R`۷ .p%Ձ7oޤiӦ|4i҄?њe˖\t˗/ySM?m۲B_1BWB?_$..`ZlI۶m9t&L(5H&MXp!+VP5k֌5kҩS2Meb ݉`֬Y㵊rJ>#w^VÇQ깣HIIIֽ{wu?-ZвeKԩC=J/ ͛7x2O ХKwNll,իWgƍΝ;s5>cN8ANzz%#xuBu*J1\GGy]u:w̡CV~dff.'N믿&$$eK')nvk4ҨTBl!!!,Ycccj׮ytt4_|+CެCÇJ*dɒ]$!KPl ԩSoBW($&&bll\WՠA\0QF,Qwʼnqi@kH]HQ@(Iۍvalq\exߤvI}ޛs)ِDU~v1o7e,cX2~o!wώ< -LŅTb p8-J6E ƺwT^m#MB!wQI S12y GsC^mb7z梋Gɔ7l֗K7pzHW<8iK #.@u޿wv///\C+CT'f8eB2Esh(:b$guq# / 5iό6x'bwlse-%ɉ'c>rI ~|v}:WRfN|7RH[@/֤VJ&d5reB+셦q9KG:?\ҋ`SRZKdfyU@Ij@,^8޳[LR(] О-Rg޸~`ۉyN"F+'YrUB+%XYNX(3zOs}řOtTo켒+'B [ K[~ O7pw\G^d~!\PD tRɻ/~ᓬ)8bAQZr翳;ߟ`=?=k:TV6Lw}sku!8BZiecHHć<̷*y_aD$ Ko]!Q h}E']b +[Ki .f!%yk`m{huQw  \QZƖT">elvڎΆjn\ AGIgv=|{I" IbXY e/ xZRZWaKޖFVD_7w+/^ŏ>~9ˈzn_.p(h-E`>a0n9Z}הrs3듮/Jļ1:Djۭ=%ZY4d}E(`1d_5C"}𒉗!yD4)ÉAgi#ΌY=c全8:)TsSAЀޙov=uR5n{5Ͼ@W,AVQ9:;7p!y7C{ëz87:6'|sPdzkf{]4J{gOf<0mEɾ\{ daOXDvG㻔TDɞc 0:EeA++*g˵-l)Lq n0wdj8;F*12?@KϦY 97<L({_  RRāwH9 WEj@k=v;yUu !wı6na|V@ _ɔˉ1  <&fh>#s.M!sH3", &\ʪuTB,BH+OSs7.͎UZAqN9()ͦ8Ý#MmOԖ]U|pY0$3-#nC믘y8EJsϫ">dW( UV N}$$n߻_T|Q"T:&R<Ɍ-n UQ_(K06--,-wjEŸn=-i`NVK;´u B9:O v+)7B`)£O2CgH>] 9R* rVYH}I6!8kCh:#4s@i) (%sc$is*ٓ_ȡ#T O; v~ ۾HQ{`N‰p6%ZKnbDjVWBy4vpbvM)ca`u6@4a >4`. H%m5 ;OnEa 7޴U.ū P`FߓGTYVb07\xr|)a׬(JڲC睊",v̛i-Fb{8[p=n,Ł 鴃t~mmi<C8Oya1{WkY)33cxxt%wZTVX˝Q `7i c|a<Ò;!#@ |)$L@ll $RLکT pPxU7Hk ~:5>'7C{:  4K f*gF:FZ+| G+>NZ}iH дiK嬌.6f!BBY2eIENDB`gambas-3.16.3/app/examples/Misc/DBusExplorer/.lang/000077500000000000000000000000001411575327000217115ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/DBusExplorer/.lang/ru.po000066400000000000000000000054351411575327000227060ustar00rootroot00000000000000# 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 "Система" gambas-3.16.3/app/examples/Misc/DBusExplorer/.project000066400000000000000000000010761411575327000223650ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Gambas DBus Explorer Startup=FVersiongbXML Icon=dbus64.png Version=1.0.0 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." Authors="Fabien Bodard\nBenoît Minisini" TabSize=2 Translate=1 Vendor=Example Packager=1 Tags=Example,Utility CreateMenu=1 gambas-3.16.3/app/examples/Misc/DBusExplorer/.src/000077500000000000000000000000001411575327000215575ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.class000066400000000000000000000133131411575327000252340ustar00rootroot00000000000000' 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 Break Next Try tvDbus.Add(sFullDbusPath & "|" & hattr.Value, hattr.Value, Picture[hNode2.Name & ".png"], sFullDbusPath) If Error Then Continue 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 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 iArg As Integer Dim aOut As New String[] ars = Split(skey, "|") If Not $cArgs.Exist(skey) Then If ars.Max = 4 Then Return ars[ars.Max] & "()" Else Return Endif Endif For Each s In Split($cArgs[sKey], "|") Inc iArg sName = "Arg" & CStr(iArg) For Each t In Split(s) aArg = Scan(t, "*=*") Select Case aArg[0] Case "type" sType = GetType(aArg[1]) Case "name" sName = aArg[1] End Select Next If InStr(s, "=out") Then aOut.Add(sName & " As " & sType) Else aIn.Add(sName & " As " & sType) Endif Next s = ars[ars.Max] & "(" & aIn.Join(", ") & ")" If aOut.Count Then s &= " As " If aOut.Count = 1 Then s &= Scan(aOut[0], "* As *")[1] Else s &= "[" & aOut.Join(", ") & "]" 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 gambas-3.16.3/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form000066400000000000000000000055061411575327000250770ustar00rootroot00000000000000# 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(46,0,44,4) Spacing = True Margin = True { Label4 Label MoveScaled(0,0,9,4) Font = Font["Bold"] AutoResize = True Text = ("Legend:") } { PictureBox1 PictureBox MoveScaled(8,0,3,4) Picture = Picture["method.png"] AutoResize = True Alignment = Align.Center } { Label1 Label MoveScaled(11,0,8,4) AutoResize = True Text = ("Method") } { PictureBox2 PictureBox MoveScaled(20,0,3,4) Picture = Picture["property.png"] AutoResize = True Alignment = Align.Center } { Label2 Label MoveScaled(25,0,8,4) AutoResize = True Text = ("Property") } { PictureBox3 PictureBox MoveScaled(34,0,3,4) Picture = Picture["signal.png"] AutoResize = True 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 } } } } } gambas-3.16.3/app/examples/Misc/DBusExplorer/dbus22.png000066400000000000000000000015761411575327000225320ustar00rootroot00000000000000PNG  IHDRhPLTEǽƺٺƺ޺ꚽh?;Rk@nB>Q]MJ~O^|ȲVV~ M-m~HP\BR e6v0!{G'g9yW{7wO/Q"dQP_HhXxD$#Ġk$$&%2ee3Ĕ.[Ơ^YUmdTcadT[q2d ]PX a6I20(@́~a`VK3eddg#+ # Q?TJRB(b' tED!(?yT >^n.N`gceafbDN2ҩIENDB`gambas-3.16.3/app/examples/Misc/DBusExplorer/dbus64.png000066400000000000000000000101761411575327000225340ustar00rootroot00000000000000PNG  IHDRL@UPEIDATxݜilcu|\DJ)j-3fZFRv<'3~qƮݠvҢNڢEP)~H?ԟ E(P @HkǞگ{"i43x6fBqHq_OImHޏ{ιIm$I  pQ  xNűGY&IRp<{^Eqz$ܯthuł餮ZA Ř% ek([L$#yA@nS[[Tz}>ܺuH$%39`$i{`r)Fl .0??_)QSL./6:á2e$R ,MMKM^o֗|2ׯ_/|(T$]Ф^vjhJLgp=<#^nȖ{4A5zv@8&O $IU\Qn#BɾgB OtfGxŝ?9â(o 0I<@/Pd"uuuEZӕoj!,svrHb Lri2 (#$I2wbAG"ga4Ԕo~)ƈ< xURF<'͢NHT/BE`$^L6ޒi?]먫x*Az]L&L&XL?WY`$5zD__Aidxo+3O>7%^ldn1F:և{}ُËeITlYz~V6WxqˉO7$ `fPV7IggQ?`)`kο> >%vrų<60贤3/v_~7}땀TCN;7., FVJԾX@ss3v}۰Z _A.t~9R`9]cG: :l^,r~ϑ fP/;$Ivd ix7 KhdcMMo{_vMyqdrۼrE($WVJ#yty`jjjjp8lU.w勺0!{E%}*]Mhsq[L±UV"Uc:ñIIi΄&eZͅ^+l;t+c=n^=_lWfB),F9h4rfIEB;_ZWfKw<|dϖa<junV`5hײFW< -W3J l.I g6UW WfC%OF5q36%AFO1~oc* o",Rx}<Ӷvc>RO m ^[fR^8uZ߿Gws# juBX+$G0}&LJ |u`,SF>w߶u:0S|8f#DH5XD^2RJ$6hRTa[_5 -e;U؝m)+߼M8FF&oaD q)pT$(I&NRp8j`QWCD='nFCUJgخFQrkX{cJIv6l.ǥ[A{ /o3E:AV~۸JH‹R~ ?6XrM-;:[j`R%F>rȿ I,`gX&1B!u4j]I~s[Ï;I]Ĥoi $Z%E:su ;DGł^'Jc:Q$`0n^>;Uÿwy IR*8vG mNNMKnf47uFu3LGpFݧ@rN?<{[z1dՐ SrvpsssPEc*z#:l oAw8f,..,--`~,b%}u^q[vRPIFfbA="ֹp@ @   *=d"0B!ewu_]f:*EF~*q.h8lCXR!U|HZZZ מ~mG[ xoث.% łJ!Q@d=`/jZ=쬾𽟿L(T٨z*"@˫s)(U{`=`:,pgcc#===wH?se :-mN;d@u(RY85_cł(mvy;f޽x<H"?z/_Wm;nsbਗ B VĎC mmm8p?yU;ę\e1d9ib)#HL ZD.]],444]@~_obE#(\о 35ڵ%\W;htdAްV(6̷$Iee ɄV%FY^^Vu }Q7?{|塵#?еæT^Eqv@7 $!= \F?{Q7[ ?/A}<IENDB`gambas-3.16.3/app/examples/Misc/DBusExplorer/method.png000066400000000000000000000013241411575327000227000ustar00rootroot00000000000000PNG  IHDR(-SPLTE  o##mfkffffffffffffilmf  !!??UUHHCCxxrrOOٰNNCCwwūYYhz**LLuuBBfn$$;;CC:: iv  xugmy*2tRNSIH@Afh;>9A7?56\\33ȓIDATc`YlF\0>7%//`emckg((vrvqusE||CB%aQ1q R@ĤԴ̬\n^~AaQqIiİʪZ%-*u> Vjk$65ijoCeeC('I"IENDB`gambas-3.16.3/app/examples/Misc/DBusExplorer/property.png000066400000000000000000000013301411575327000233010ustar00rootroot00000000000000PNG  IHDR(-SPLTE!#$| 51+f{I0O_g{L,M^5IXL\:%IX$IX!IXIX!IXIXIX|IXIXezf{IXIXKZM]N]IXIXIX(2*Dd|q"7ef{#9A7?55[\334ϣIDATc`Yl&\0>7//`mckg$(vvqusE|CB%aQ1q R@Դ̬\\^~AaZQqIiŤʪZ%-*Iu M-jk$hjCC#*(精zIENDB`gambas-3.16.3/app/examples/Misc/DBusExplorer/signal.png000066400000000000000000000014141411575327000226750ustar00rootroot00000000000000PNG  IHDR(-SPLTElqla6kLgGgFmNoE' {WxWb(p Du?ӈJ5G!_=I x Uzi6q+8 ?W*f`C#Ya\ _/_ ``!Up2~|굈lU}׈څuޠZo|{sd2FPIJHJ8~MOPOtRNS*ksw_eh<|*(yk8eg\bCjlxPIDATc````b&aQxhXxxX$3D@J:2*:&VFV"  PIIMKVUkhhA`),*.)ӇWTVUCLLj-,!lV֍MM6P3[ZaN.pWnwR! 6 0:4 MtHIHCƁoիݿO.1MZ&Fkx6OP/114;|ܼ뚡6 =O퇏C`)z&haJ1F+07ӜN&w[xLf<aVY|+*#;3{`m+s<+W~{@k A(0O @p=sye&wGxaf= Y>ug/cGIϠ`VxzZ3t?(F 0`y`CzH?ۚ9 <-8/z?5Sj=@? ?u;G02/.' È`.4ZJ;tFNxtǍq1İ!>͛ IڗW D{$}O~:'lwWd l*N ,`Zh.L H%p `)/&vZB%-dj`.N#+/cx\3GSŵ(8}-WJ$wų_ yؽ9܎g]TC 5SP~[^1#HybXH%mKIas)4_|~~PΖWv+Dd\KɋZre)i+5t>LDy'OhI1/^yʫfg^H"IrDWB5+}-{mI}!wKvÁ߲33'KHͮfm+sQC;>B1%g"pE0N)-`H7;F{!ɬmT-]J8.ȸA;9)LK#EK,5mRI()*$|:MmG+wN/@BM}߯Egۚ9O!ũc9Nx~dJ,%B r;;7R @o0 B2j>}G 9jZhBZ=PfS. CG4A垄yH)R/F0,eVRBK6{wl-B i ǿQu%)蔍Ȟ>!?$ lq48lgLVfpz'sFsÆ5@A)"ڵ-nvz]TP4;BNpO=T gS[1~?~0ؤ[G|ϒ}Kwϖߴ|{`yԨ3M*!w_HbS/$_^fYHIFx&~chhjn77/s$C}c*l!PC8+4'Ő*@RQ 1dp-wo7q 2.M`Ms46gwhњ ߸34Yk8~ [JX[qiw[j}R2 X1lmS6(1"6n)2B !t/@7p=b;>@xǯVEw_5󧚣$[󓸽5w#'YX0P3% `\n\IENDB`gambas-3.16.3/app/examples/Misc/Evaluator/.lang/000077500000000000000000000000001411575327000212755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Evaluator/.lang/ca.po000066400000000000000000000027671411575327000222340ustar00rootroot00000000000000# Catalan translation of Evaluator # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Evaluator package. # Jordi Sayol , 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 "-" gambas-3.16.3/app/examples/Misc/Evaluator/.lang/cs.po000066400000000000000000000023261411575327000222450ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Misc/Evaluator/.lang/de.po000066400000000000000000000023361411575327000222310ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Misc/Evaluator/.lang/es.po000066400000000000000000000023361411575327000222500ustar00rootroot00000000000000#, 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." gambas-3.16.3/app/examples/Misc/Evaluator/.lang/ru.po000066400000000000000000000050141411575327000222630ustar00rootroot00000000000000# 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." gambas-3.16.3/app/examples/Misc/Evaluator/.project000066400000000000000000000006551411575327000217530ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/Evaluator/.src/000077500000000000000000000000001411575327000211435ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Evaluator/.src/FEval.class000066400000000000000000000014211411575327000231650ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/Evaluator/.src/FEval.form000066400000000000000000000032541411575327000230310ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Misc/Evaluator/calculator.png000066400000000000000000000070341411575327000231410ustar00rootroot00000000000000PNG  IHDR@@iq IDATx]lǖ=cKI P"E"K7owߡHM(Si3u2hjj:qV!֬_uM=# hDH4p+\%b)N!uuuA$?x#mtwBx(9lۮZӿ%VA Z!a8gH\5gB2 X$RHXum0͏4QM~+‚1UfoVC*[mM:X:H8[DHgFccx,F4%ؘ  hh~ r!fff0B:DCBU ZZ%P߀pRRW[!FbhhhFcqu1t2^{{uuDa&XJ4a|lH8̺uMZʖ@"DzrbYTC]4`ܠygg'׮]'$56͚5hhh !r{ ~wXV_~pK߹F*k8,#[)T)d{QHf@^5J;9tر .xY2>>NGG366F{{;äR):;;1M)9|ps="~sV)ꫯؽ{7tt:ͼ۷oG4.^~'6oLss3gΝsE4̀ +ZǗc``k_JbHX <%P^tuuqE/S3.===;BftBzzzRr ###Zlĉm۶J&F8@ͼ *W:uu)X###ٳgeAôc9R y_@] rqg奔=z p][nL&yw8z(t5kְn:_N2СCPj @))+uV$}:߮]8s ӤiJnyΟ?yRZ\ʻ˖-[hnnu]oBM믿駟ۛ 8깭[}Ժj@^,?… X===֭[G}uennq|E ;wo0˥~O<īDC QH(~/Q1A&add^{*/l9E_1}wY&''I&R)mF&all6cH d L288ɓܾ}; dž سgϲ_ ,-[pʕ3gؽ{wY.@6gxx8ETpu2Yn޼ɫ;C,;ZigڵܺukQ~"/UZ-jՠ淋!݁uٵkw߰aqF2LYf^U,?8+Kjf7ިhԶڵk B؀KbyZ:;wdǎB!YP)755!dvv6 G}D* ?~ߟ+(R 8}4aj}y4TB_^ !SO %J^@-L&xW-5e?%&i,wl@)u]oFMӤP(x`+*WTZ׻tuuywuuy|>_߰airYΞ=K.͛7@@ V|#Gشi?_ovXPB*Pg<\r_}e+BbQW>WhU&UMӌ{TF׵Lbb`۶w bR%В4Mbmi2??ضembr9r6 LifJ)j*H,D"s;x_m&ϓdd2׀v v̙;d'''w777'BP`=ҽ"%ˉ?$\4#<# VǺ?tB ˲r4pb@cAc Kj:#0P$!sIENDB`gambas-3.16.3/app/examples/Misc/Explorer/000077500000000000000000000000001411575327000201345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Explorer/.directory000066400000000000000000000000411411575327000221340ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Misc/Explorer/.icon.png000066400000000000000000000063151411575327000216550ustar00rootroot00000000000000PNG  IHDR@@iq IDATxyl\u;;7-$EIFm%r]%i8N4mQ0mS(a-$?Nc9:mNʛh(H͐{3dK"*?oޛw{ι`,f1sfkN2 )_sIM[6tj#?cb>L\6q%9ǦŮ&W|3MlZX~ஸYjkF_|DD jr~!3M:_jkR|;uwUFYu.\\`B rP lKйPGQ%%qૄ<J طFjRdח (Sxv;7$4V ;\a8oot*nQe 1/رRk$0ύtty@بRϷZg|+1E L|=1JT֨WL kJTh2T2:5T@*cɦq5[s= |6x pi( uu@k4ny;ok'p~sFPRr9j+ `mwCP8>)UHc5јFvS` )Q U!>VpueҘhn3Fk,r=E#SNᖺ' Z4G:~L{H̽vLߵ9#ZFԤ?Nm!'9{q359؂GN8Ic&y8Ȓ@]G&<-YcDWc_~>OOʿ -^&h ΋݄'QhÈd6:'wIy57oWy֥w_l:C~.wxK4 }haci%YNʃp釃?*lT*Qܸf%7~:} ^=,K,^uMlmJ )UJhrs=;αwI5;>)D(6;rH)^}u-g]6gHqi-c.1*w<Μ᡽gߥ#xjIr(asl7kZ0e/k i'ʉ*bwAk2M*\hzQ[:rX~j_OtnL`tц|Ir>+7ފF 86}&~-c@|}>f(`#&%[𱾏^~Nhbdz" `sY di> X)-=Ai-"Q:7NW+R')ww_ƃ[+ 1ڽ굷2bWcBDh^x/p\ G0E~$CfF\Ƿܻ 3Ft^(>釘>eeE7)Ru犄sXkqXKo0D5$61Z!+cmjZ}{( I{I6#}TbP,NrZ"[Eb"0YRvx<~yW"?kY2ڙ"Bi_@ˢ%VDY|?%;"r#~zV#C C"Y0j滧M *@Sqt)_- RѪCMpaڏd0peSUIm&T]Ȏ{DȂ%` .@╸D?s`v֬m9c8R]:0ɑ,Ke >'@VG˲ B*G'Ҵi ohX6Mt^3yTC+a:Ac|3:i^qZ&(ⓈˮT&+Sі9 U'.3!&;/A}~[ :Qp{XgLSM-E>eNS+;ⶵ(=G2nh4hqZbA|qCcXXnmM|m /xޱPt5'lgp6E n>*b7o ];wp'Lu+@Nađek)fఢJNNxc1Y3 g^c Ixm4}iE/;EWTFտ)?G/̢Tm]"p J';,"H'fL[fHƖZzhj. o>N[8ǎu!*R'!|}1Aq!'zx|2'(X˪/KE@"g*M`|I\**NFAFK7*ႅ¶vֳkO5sHGc؂G]_opg9w}v}H&ĄӉ὿ZSӈp`.l#VU OJ9@drz %x`VY]Yͩwle'?&BZ}g]+ж=>%p9Gdfs*m+VӴd]G}Y9TUϹ,k0TZ@Y"dFkx\c .YaQqr߃K%k'es=qv^BW qʔxjWVO#|y' ?}pBCDSǦ q~:v^:\a\P[C~a䣑 @2.'h8g%u %R""*Fsp&\6_ʝC@GMK;+@~vgdu,Zl!?&^_ ,f1TrPMIENDB`gambas-3.16.3/app/examples/Misc/Explorer/.lang/000077500000000000000000000000001411575327000211335ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Explorer/.lang/ca.po000066400000000000000000000024201411575327000220540ustar00rootroot00000000000000# Catalan translation of Explorer # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Explorer package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Misc/Explorer/.lang/cs.po000066400000000000000000000020211411575327000220730ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Misc/Explorer/.lang/de.po000066400000000000000000000020221411575327000220570ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Misc/Explorer/.lang/es.po000066400000000000000000000013251411575327000221030ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Misc/Explorer/.lang/ru.po000066400000000000000000000043001411575327000221160ustar00rootroot00000000000000# 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 "Выход" gambas-3.16.3/app/examples/Misc/Explorer/.project000066400000000000000000000006111411575327000216010ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/Explorer/.src/000077500000000000000000000000001411575327000210015ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Explorer/.src/FExplorer.class000066400000000000000000000051451411575327000237430ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/Explorer/.src/FExplorer.form000066400000000000000000000015161411575327000235770ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Misc/Explorer/folder.png000066400000000000000000000046221411575327000221210ustar00rootroot00000000000000PNG  IHDR@@iq YIDATxZ͋%Wsn2du!Bą.nu\ " ,bF]tQI It9.nUz^{3;LSn{{kd%+YPU~;&3k!^=^jݾhO?Am *;WEVWߎco?Oxm*-f|7 Oo럽a~cn+E\al bho4~4W~ cx5ĺ</8> qvH*0|XS .:^m3wz5hmV 5`j)[XRy+%mf?~oЇX[ < q<UWU皍7+ap{M1AJLT|{:9 &2#{FkD`th6xM|F UNv{,-T`D )8irY<3>{xb*ւ1@ 1M&)nݺ7n@u`Xv0"P Ƀ@U2>F+vyv1UWԇU;>>a)lGC] (N!UR#JOi,ȷ! ~6F5 ,PWZ}f]FD!Uc m)g,)8o5bGS*Y 0BȤԥ.@p3vkpstv{![Mc@YQ%/NaiP.Tb`K\,טd"Du]K9 F `0@dBs2~F] 60-/а?iuP@.A'co= >up[ D4L0ZM)2NFx\~r@|.]J?@Yа8" e[ tH,rh ӵ0?#)Ā4̄HB]1ɷeZ$Bd+a$ MC'  љ+:.p&ɕ1Li H"0p` !e,BX܄ly5K0uKR3O0<0b z;'\pWVAޥc@%~tvA\F!g sn/9 d?׉֞ =`Fc6:sV7N6S`)INo/9@&fFa+Dp ^ f6)8/NDq;+/ȭE;.h*yu$=;pW">ϛ+YJVC+.@oqIENDB`gambas-3.16.3/app/examples/Misc/Notepad/000077500000000000000000000000001411575327000177265ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Notepad/.directory000066400000000000000000000000411411575327000217260ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Misc/Notepad/.icon.png000066400000000000000000000103001411575327000214340ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛyp\ŝ?fFь$KCObL8@ B.6nͱ&c n¦vT9IT9Kȇlٲ֭Is׽X%[U3~~}% [0Z6$z9'/Ag;s3؏L s6LT٭h-PB 4a\9+Iv ֿNHoP><woCEGa6@#Pڍ1WHy( YkE)黚ī0_wta4/N,dq;}u9\ƢT1BM;h i)n (,-*chcΞؤ"^޵L0=mNsq-ܴ"z4AvW*~|xn&m&z,6]O>8ُ˛QSBZH8]ٟ|,ܮ?rꔷ8r0t`prs7*e< EN<)4&Xx7[^*!"+z$Լiy,j5FELIfሽIןCJ|j|kb?!)-Înct91aB2`B uOEfRvW,"ꄠ?ap{cvDKfvw+JR|Hy!aL*b)%c=snqtWI  ui.%+_lZ|9~1RN̒JFդ``Orp%{Jdi8`xg4d#tI! ZJ0SHgƗn⳿|W?VQ)>.6x}<|^,%/h;yZQ&g"~󋇸g">%3ǟh8B$+%k^:$uh?n˺f) z.Dyë˖1/"MH.(gQA'b Aid; *-R &qbv:ii\ɡQ)i$mB'bc$baY뼗IvZJE-%MXI!xQWIؕ$i9Atڹ~qdBc(Ǔ1V- hk{P҄-e.)bǜ$S%0!w)d ɢy鍡 1Jn0*B8BJ:7?Cw م4DäO$h'PR0LHC3 &Z_OOWg3o#ce̜36l*Ke`0uO*GX_jYdtlslC@e jj I|&7Rl^_YCdXvIc^y!ܴie&ސ 162B@*]25ƌud6Y_2wѨCD[!].FPRPҹxgP]r d5f\lƓBv 8 mIMY^:ϾY?#zF#52#TXO`a ~X7_ۄBXˊ5`cƘUփk {ꆝ47e3-I]54v4~|i^ 2VL!XPrz0cYbXJD1~\:{>-IE{3ɺj=ڝJCC3›F0!|1# .%Q8T7uWG̛=@dXZCQ^0(%meWsWO_r$ȑ;N ԤR\6 Nz)L@x]|īc<'^5bd_(},/dt8ݖ H%sAG"NNêSt?#||'aW{R)xgc0xd06L\3g>3\e)JiŘv h)98.Itt{ԨM֦YHz6b"uBrWśdϠz;o{ dgrꛚ(?sJ(ҌuFz"By=v{u-<'qͿ;<@!L nepIBk \q^?1ۤ4c &ĽѸ=vmd)z>9Q @=M*1"s6n)2B !0@ve#q[b er$ PƓto~ ۭoӦtf&GWc@9 9qCť.HAQ KouXm@|5bc 9nKPfBbD\ > nƓ1%2x[3%x^%Ҷ.Nrf0w\ ,%fzғ^{^v+E*j55-|;*zq5}`.,wtr`AHq[4Σ$yӑ"^@?pGu]* :%-,Y~Ηt=rXq''̆n%;\} dzIENDB`gambas-3.16.3/app/examples/Misc/Notepad/.lang/000077500000000000000000000000001411575327000207255ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Notepad/.lang/ca.po000066400000000000000000000051441411575327000216540ustar00rootroot00000000000000# Catalan translation of Notepad # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the Notepad package. # Jordi Sayol , 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í" gambas-3.16.3/app/examples/Misc/Notepad/.lang/cs.po000066400000000000000000000046071411575327000217010ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Misc/Notepad/.lang/de.po000066400000000000000000000045711411575327000216640ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Misc/Notepad/.lang/es.po000066400000000000000000000031541411575327000216770ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Misc/Notepad/.lang/ru.po000066400000000000000000000106021411575327000217120ustar00rootroot00000000000000# 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 "Текстовый блокнот" gambas-3.16.3/app/examples/Misc/Notepad/.project000066400000000000000000000006421411575327000213770ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/Notepad/.src/000077500000000000000000000000001411575327000205735ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/Notepad/.src/FAbout.class000066400000000000000000000003201411575327000227750ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/Notepad/.src/FAbout.form000066400000000000000000000006461411575327000226460ustar00rootroot00000000000000# 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.") } } gambas-3.16.3/app/examples/Misc/Notepad/.src/FNotepad.class000066400000000000000000000054051411575327000233260ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/Notepad/.src/FNotepad.form000066400000000000000000000041301411575327000231560ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Misc/Notepad/notepad.png000066400000000000000000000076571411575327000221050ustar00rootroot00000000000000PNG  IHDR00WvIDAThyp]u?w'ɒ- [cv0`LtHI'LgRRYi:@@JؒB11lӂ `lcy7nK^Z=n=ɒ-h~?i~9^37O`0Too8;4䑝܊QA? NKIN%[W9zn6kOŭ{/;4׽sx!wu }FaPbIOްk)^i\c㸻z&KJpNJ9_ s$֬zq>z=sMZWX2`46!A2m."ϩPoϔX_xJk{f'G66Z߬o{yݝC|k tta el^\WFv`FD 4U`ɜzycZzڡ~U^~ `7`g2lߗ|Ֆp*˒Bc9qD"aX\:7v;tE^#>!/,~A|_w8vm[_?iDYH$pM@'<pf BbUQl^"Fko pV}uďӤmx#"[ptUE\?EƎuOU->VuS=/\RFY{Cڵ;LIE(5 I2͸&4u[t^,:̻;^ZNgoB8\ 0Me/]iX{aNIm 2Qm ǏR%,^X ^Fd G9qd1?3htHa]+LӞ œV47`>Dp|g`M^cY&i:%w~ Ӈe hDqUG)hjf`0t{#,+G:ZO)f'2yƪdr{1-4Ew?i]6qCg03+̋cY9iXUUsr@&k:̑݃5d|ݏf(p]箬-q|R)۶?yoNs16Jtbuu0v)dXϐSJV,4.@UsN`n2?PuKJedZ'wb'pԞD8\ؘ& Cg2(y)&sҔ3 fM ɤ NY0/֏,im>zpK=NԞ lUᐟmHRN=5O57!Y`# ibcč, WI,~t[l6Lo4|b˚_KOLӼSūYlVGU~z)fͼml[`mxCd0-^LbhhQP8;tQRm$IBETUxp8T"wpԙ>~׋`U>ǟ>`o̾5 xil8(ZSzp1؄b٨z˂m6taćVzX>1LKT}^CYq̛7E<5;^>t`M֯_WۻKQe+s V4MqbY R*`iD@ ҦA\rfeÇQWwg[z&H5B0vPR2YJ?6wL-h-u ?y7{g/wgy[ӝ[MgI!^aj 'S'0 3O$IFQnP U.t:)* h &ylOo!Iݟ*@\K"n0!Zpa.M[oy_5|qq6mccĶmEtp8|0hGAA=:T^ρǣɚ՛l}@+cd&S5O,RK+˼ͭ1 $IIJ&Z ApD7vh$IhqA|>/NQK18"r5BYiP=GGڀn yxwVɊR]9r: G-Vl6XL&$IȲ,8*(2,3O3O1O1:0H85 E}GarM\0 #'pX] \O8]F4@lz(N<x#iziF)Yơ84pMIaQ&šȇ( l`׾/xoF||4.$E $Dk d|Lk!Q/*7wooznUoOkK>'g&U694)V&ݶ ᰏ>Y޾!::'b&U%2Hȇʅ0n\.L+Wv79 iϷr@@(x߾S~1RPPU%|^'St`Y\Xt3\.PM&kꛧٶ kpC>ۀq.6'\=s{_y]Eeaݐ x=.5_AE$İ6VE&ۄm[ٻ5i''}DXSc}o=vf?N$9[%\NYeEԦiM#$RPAؾTc? i? 'bx__O-ol|ekHq, b}h*mqkh,8 #26SPȍ,4+㉑Vrq?Gd+I`tym[==h#,*ۥ"I9""a6a9ѴlztrXu>f{ ֖wڸd͊Ls:nE\DnEdM{[6{|&lZx wx׼ƆRAS[<6^$7ر}kW}Uμ3>}Ye@@n[tm_'ZTvSeETd=i| !i? &*<0wۿ;ݞ` |XwK=HII ssF0SDx #)_/1Ŏ*IENDB`gambas-3.16.3/app/examples/Misc/PDFViewer/000077500000000000000000000000001411575327000201275ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/PDFViewer/.directory000066400000000000000000000000411411575327000221270ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Misc/PDFViewer/.icon.png000066400000000000000000000102351411575327000216440ustar00rootroot00000000000000PNG  IHDR@@iqdIDATxݛyp\ŝ?fF3Ka˗/|`m0 !rAnB ِs WTnn.P) v8$vMBml!d-Y׼u:,ec`jf^w}u\`]&FkX;GmhwFҒL) #ϺO6tPh-PBp_gx3I YĊ6o#wgNc 7ZP [0L b&~xqZ gQJۊmʣӺNJ=?Kx vxݘ9HY,CwOHEnHM%%yO߁^{6ַQp%:TdU3'5!?G#eI#gm!2(Qj7v}:"]E.+>b^T@L:s$i'QVi[w?Aɿ0pt~!q_FV^MesǠ#n!Fc$q:zfԘ?UbHm } CS̞ߏ{3{:u* 1Vo>{AkHIP`<@ai @PΌm 3)4iՈ?^Ӷ $L.6d-y,{^ Ѻnv~qWLZz`@`ahڇd}xH?VsI0@À8kݕuGⵓ+@9ή9`e #aqb02T ' i'zNcXm$0ÆFQIľ|Gž,XȮSC |(!\Lo׊c}笢d5!)5gG3l>S$LZ{r= ZjB 2a0ꈥɧx@%~ҶRT…zXO.Hq2TWCg>,*ڋ#G#3 -TQ+AǶ`Lc4Uzt?GcNOꨥ,i+@9hkĴާSfГJRP:&!+˳-K:~\1)H32̻;JD|1NK&*svy0Di!%dSEI9 bݦ}\x@a{hvx5e>& &]J qԹ ᦣ\>(?a0ZkL<сۋORou],刔M N ҍA-VM@oۛkIh3>zk:s!]8qƄRD˗KᔽaPt]9- ܰ2|Rh1chܴq7ı-[ ->rcBdm2n5IMJ"(%R)j*_hNE=ע!]mx=}Il>XC&96Gk̬3U4tl,VbwE)%>)i\1 څ1h,,R$1hM֪|6DUcwbS S^Ϛ q:"(DR k)t`d[k)rl tcѓT!%Rr,iz m\EJd Yu/jXRB`o A,!趠D {v ̧bᬱyp ?@Xr5wP. \&^MO3rsYv4ԗ`C{%$BJiş#\2xW;]89E$t ~ -kxֆU@"ruZk_új6)b1}B?b a(dX#(pN>Tzo!DB+&nGZMƫ؉< %xy*=1sBk"p!G%sX RS!#!@UAK~0L.ab;tFc)iZ.geSiw46PsPRНLv2';{+?HB˗tt2*@0T_xP@dKb3!޽]zPt5@p]^Y4҈>S/IWDąbęHuJ1|}x#tmm￟ HxKj2C\@*25 Nf*m⬼r;ھ_tjvo#5&1ЇVLk/7jc>[YIᇉVW{³gcƍň',Bտ"T}C |33gyk:2BKD_&c7Tbg]+韠Wnr7n~7_yu`"2^|мyF"Prʉ3h%(R" u)YjI6W3ي#d.\FS9L)BLLOIUM}/L%R5Ls %@/;￟eGԶ1 x@7єR`2@`1Oq@%‰X:s~7H~Z:2)vҚ:X~mK ۳5_(OGb8]'Tl|W]E%A{qŎX'K⸺-9$ H%(IHt9\{R rm-nLĽ;ǁ4$S0K!%WNθK>>RVz:x(iŰ,@DA8~[o~4:F?:!HMkq+ǎ[iiњq]S? 96'`p*,Mw=;`) v1 @k cD=;!#@ Ba}]"KGbq:/^| ! l?V z󧌙䙁RJiՅ-K p^@>02 NM_@DO&aIp =br .:ctr:/?N~W_ڈmomЬY~{ ˟3n>dg#='=5?{[ioi}ǓtyC3| jjHA0I~9؛&;i)2 ЍwA4 D1kS;g՚y3v$dbx^5O7uM{%ޢIENDB`gambas-3.16.3/app/examples/Misc/PDFViewer/.lang/000077500000000000000000000000001411575327000211265ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/PDFViewer/.lang/ca.po000066400000000000000000000033571411575327000220610ustar00rootroot00000000000000# Catalan translation of PDFViewer # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the PDFViewer package. # Jordi Sayol , 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 " gambas-3.16.3/app/examples/Misc/PDFViewer/.lang/cs.po000066400000000000000000000032111411575327000220700ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Misc/PDFViewer/.lang/de.po000066400000000000000000000032041411575327000220550ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Misc/PDFViewer/.lang/es.po000066400000000000000000000025231411575327000220770ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Misc/PDFViewer/.lang/ru.po000066400000000000000000000077171411575327000221300ustar00rootroot00000000000000# 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 Даниэля Кампоса Фернандеса и Бернда Бринкмана" gambas-3.16.3/app/examples/Misc/PDFViewer/.project000066400000000000000000000007201411575327000215750ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/PDFViewer/.src/000077500000000000000000000000001411575327000207745ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/PDFViewer/.src/FMain.class000066400000000000000000000353001411575327000230160ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/PDFViewer/.src/FMain.form000066400000000000000000000056231411575327000226610ustar00rootroot00000000000000# 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 } } } } gambas-3.16.3/app/examples/Misc/PDFViewer/.src/Fabout.class000066400000000000000000000024171411575327000232470ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/PDFViewer/.src/Fabout.form000066400000000000000000000012361411575327000231030ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Misc/PDFViewer/pdf.png000066400000000000000000000107541411575327000214150ustar00rootroot00000000000000PNG  IHDR@@iqIDATx{]U?kytZjQ -+}CJn \  B# Dj@Dm4A5%/K*F h-Ui X:Ӗә9{k>3L{\Ws~ցMxokP@|NY.j`jr\jGXZ79(RXT / LDHυ@6vVi6AZSAN@zIj1esAT1mtHK)FX#h!R I!K9a0~*6q-0w*(""OT&_ *\3JcmƧ5bcx<I +0BZdȎ%K8;PB` lX>l"@ijguxaL4.F$  Mز6D*<8lNJz#xQDhC?ϡMLCAjazne.ae!)gyyRZ"ښ{c…D5aɅ=_︃޾6|# kɠdҿ(@$$dsVDRN+9 BPپ !b5Ja7lP*%xG`qJ!-+e48wa%_H;e 9`wǃO`LF)ř x|Hu۴{:D(5eoaH„t"52{6>fBSB0e8_aIIPQ{VPo4FkŔPޘVyx7L t0FJ `=` q2R4&]|1́T2mǀ%})(QI td͎N h b7mYh㥋.¶R:l$P{Ք=˄ZN+Rftp;U$f* >_k5ZҢEV/)0LƉ%DQBe"b2!Љ]ړZJR̸ ν^Z9sBXV:Ҝ9bϞ\*ntлhDQS3d 5mߓ+GY{`Ou&GL_hMPX(Z&z=t:$du E;!=4>R8˶K_ 82ѡC=u]rRTo0ipzɋRʙ:0瘾lnO֮kAJb&Q4K؉X`yzH6R(`8drq0dOsM,ץy3?QϦ! CrT4KZNLg:WW&& !szsyY{5޾fgLP2!T^y`(-˞ƂM- ; 3_e"K"`؎ ]*) Yh1VjJ՚0')e9om?# ĖKJ,_ޏ} 54m"AXeLu]zzzpAsnVic@FifaJGj].l޳΢z}q:qw 8U(`ܸb"Zwމ IJ*QB>"G'z/L@1gұލdI;Rq_'Rm#x(W<z}oz_#k) lA6y硓@ nRCf 矇^D. *oxٳ:jxmjp!vvB@m%k) 6oFG#}?eTT~=GMZo(}}hk5Jk_>Zp, u&|b`Rd%7*s;ؼj.^y[-Do/SO1o8 B rNW(Aj4R\ͤQ" gi*;̆1y39 ]( m_t.\Z w zWFJj|RJ\׍E@ĊLf&U%3A8+U$10ؾG㸿mCeJ,!###̚5|>mٷo%,8qJ8 ,׿Nx,Z)t/_J˲XupA>JzNJ6m|>O__͛_|Ip<fJW\A80H68zSxQ(ö,Rگ:"0RhѢc9rM7ʫW`P4mZX' z'ж=Z'8]ՐQDXLYonγ41L7 A@h6ٳʫIlMN$ui ]w]<#q^!2>[=&]> ZOtɒۀG&"InW娭]]wq= A@nrt֚|.?l;}f/^! OT`2vt?mяwf _s'j6瑿xeHJ\=s_"6֬i)Ё ?BWև wUVb1mw\]ں'?IhhߧX*;Qj+?Aϫ(Y+GsBlZMVIÜ|o\y饔~3](0V}q'ՠԦ;ϓg:cBUk=|"Éƈ𭷰Qr]D:gRG ]]: ==o~ nr<0 -['$w']wBN\3]&V]m@D|0 =K.,q0  yoiic#?/} yY1«̵H)(jŗ\r;I @(BS?i}E B! wRrW,dkzPLg8F駟Ά_?]v7ͫk JRSf{E;>׭5['j[CH@j?< m۶׮8ɶi74 !z= , 4[-TN1K=Xl2VIȋ2ioEZk}̙uO}~`7rL'G; C7LUfSı= d8gO+GJ/`IENDB`gambas-3.16.3/app/examples/Misc/SystemTray/000077500000000000000000000000001411575327000204605ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/SystemTray/.directory000066400000000000000000000000411411575327000224600ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Misc/SystemTray/.icon.png000066400000000000000000000422731411575327000222040ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aǣ,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Br6G pHYs+ IDATxɳdYz;ѧ7ƔUYTR)m20k3V`;vXf 5eԠ*r7p38_"<|?}9@ @ @ @ @ @ @ @ @ @ @ @ '"wϏ|YQ6b{+\l>g%yzM)Z{_BC߿s=@ _ݍ?py^փ=|^Vޛ/qvX>WAny~ngBȺ:.U>swm9pٿ9[W5o?{ `6YXlje+|月%阥k Ts۵_/wU_s x5ƹz!;2U kŜbw(wYn]ւ͏`fy;my;|M,ti5뭳6}~CXݿ9:g^!/B< p7{Msk_. .osj`k4ŹJe[a50߿0.gF/ɋ~yy6p@,|]t_ֺ6XYXcXj߯XeѴ8۽1)XQpKc >/k-]fw|0FF܊в5P hvs߻mn{6Z~rܓpe[8{bh8,m60BxYыx@`=t=\J,Y뵹r8 8h߷Z;uu+giurD_.ۜ:hVo޽__ :nheO6ooؕ &6V⭍'4]L@u Xvn6`%$:&>u܀.$[}9oFe]m@8߻5miX.ЍxhΕ&r\9g5}^컼gV3x@`_^P6z!įkKN&*.<1ͭ5ulxBzH!qN6x@z/8[swxW l @[y=..[vf7ځ˵U%Z2v|jgXX1M-wqh~Ф]Njh m4c[;;<7AxcAud9a1h [*i?JsºfoXsp%Ey˿[~'6AJXJI%2 dr¿?7{{=&O}LQ$ȧRtkϖ ¿d'Zv3 +ϛ g(h\/:щt n{9ô@ ־䝛hS} /:| Lu{h҄H_qZOخ/В% mFw -wڙVRx+V++=ѱ~\E/NWa8h5]UW^z-I셮}tHlwB,F3cX,mXwh/?hIcRn,#:Hn^sh{$^@7OͷQNݶb~vm8,XC,Ih-s`oo3UHbI[b6a ݜןcM&a[DUiӶݼȧy^EAJP*w/l+=V#ok ϼ긁™6{'Э x y/B/㭩(J CX^޿W/3_*Bkiʀ y`yB?eKH! 6,~+h:sn~;6_^ӟe?ںމs/eߴRKH>~leq8*\\d-}׌3_uW[Mi  }qCw_:ױ,`>,EmM3[ ƍuo;U2`H>\:_Mms9 {2@a\=گ͒H?=Cɵ3 z 4oYƟ Wr{+w|OVn(V< 6 >,|!x;J{9Yw˼d@m+lBsՇn?m7BVv/o[ `jʛW!xW Q??Y*rl/}gfOҥ6.[<}wǥ_IW'o+.bWo.+ o)&!x`^mG x\Z` !40A_a.m{șO/F6t ?|s~uܺcoAlU :ӣ2$k{:Q/L[YbYbU8:ao>;g:_e6p[g-/@?zN&A#5^B;6g; .Ep A{KG]WB @w&Dg5ob.l+v!4]83*A[BޱbB,M[ #/R% 1߯s ]<4¯l NwAWY4fŠAVxB-^FXbФT.'#PXs"⬷ŗN#B-FX$" ize`M 5&({IPnnU\sGcEBa3Uɼ" AG! E!Dhd#JibEE"*jƃd(E FlWI(z"){APo~<|+bjRdT&EʥLqs^}&6G`HDb/"Pȹ'3tڿlMDM,J`”(lA RQʂHHWyE`@aPo|c49A+>!_CGA'sL2AREHB* T>P8gXcbMe,3U( )Hݔي&`*5yFshaP7A xtKHEݣ$gb{WՐc3`FZ(,H"E+H)I(%H) r:cZqhc em(*Mm5ƖDfJOL8##3fTҗSRfL,":^s 7@h)b%׸m@~'SL>?b/mn9FdR\E i1i$"K"b兽xYz`:jkc)*CQjk1:=^-^bR 픡0:Iz{CvS”'ix!6ppg, kX͙EŇ]>/wxYPQ&1Կ$[X-ޣF8 tH[f(YHJH$#IRֆY5Ӣpu]1'D~ң/&ĄLΈE[!oM%(;aU!#P {4L݀9ycyv/e%4PRb-ҖY1`;d[uKHJBI(fKku洨8gikŁI8 h^t{+^NrDh[#kA 6!xۈ6P~Dg:g\xYoI]O}&/w9u[ ЪGz; { Ummwuh-@o3 6K Ђq@v.vpo]\'rzYcSb`cVʺ7(bݔs iT)|!Oagག49NE"H.fbb1bE_LI`J 6x}vN7|QoS>*1ywwv?#П iIH}k8r:QJIAKI0KxZpd9uOf;C~=}>5d 2F4q@]Y&3ʹ2Xȁu! ^cy"I"0m$Q$4eZ)J4SlGcr v@[18w7DP7J'/ۮp"eGG!82X3mn B*2hkҾ0^8z0RH X;r^'''50cʔor3%AXgu7M$^Ģ0Luj'!plɐQǻv}yF)*혖io}hCWOWLň8鱿7#Q K58k[MU[H%,N]!/ 8N*gӔrC.RD!pc!nn>#Bq3>m}~|}t4"ox7`w#KbeZjfF/Ϗ80%@ۈ~d1;Ov}#L0* HGDIgF x&x7AKIf6w듇[5`y;[=^+{נqQSiì4d# <;p 瓄%W0x7B xm)NuG!?=G{|T'F!wF<5ȉTĸk_ ihv8' ^Γ]C`XG35dk[A U&KCD#y>?Ǐ|6D$=v2fhRJ!}ppb6AI'o^8u9,goϻ{#9BSwֹ#R)ɨx;cw"wTӒϏ 5U3BmcL˚-T#RӢ+NN MKCJm]M/|2%(+##(J;{DyG;CzY HfeMQv7DR"v 27*^L+^+&F[ۑUQi ~ސ6L ;(WOIdVTv\9q!uώwl6D$){o<ΐZì ksX Dh;㷞xcE:Ma3Hx`/>9᳃Q7|Yex~X'{#%9|R"\v<:GĩFm} Akd#>f`8T9#H☓f ?F<<*1EDƅ֖ϴ#֎SSa]D?Kg7j>ٴGvQf;ˊ\9biC38В糔__m&.aw`$'Q5ceq{|рQ/AIy&q|AIɨG82)egvRG;dtZEϏjg d%u^OPW'Uߞ ߜ8}} 03m"ݷ/IIG/QF&(yxr2S~V`_˭*ڠ)v)$wZmFQ zf˄Gv8,S<Oyh(Ֆ]+D~1Ȣ %yFBцL+)ɏK8G(y;e?%B,*p*+9">dxM.a/Ky3doByO#z??@KGJ4Q"%X;J[ƅ&%[}Z!3> I|<01Jj2eξ< %qƕѐ=4 EmikFʑF4H6'/5>xs^yQ0SWIT F' qKqq}uaJl7zçXg*|8G(xtRQQɈ`/(B02p ^ ?9'[W1 morqg5Y^72UgUs1/KB {hqOG Twy7C(1.F x #yU|xf}L2FFyk&p?mdZ2-/*9ELQC|6c,Y"<*9IƳק?(+xЫ ( /h3?-wgk#Hiהjk(ʊqdRD^,u IDATeROJOKNQT1a  f[>epv\F'd,zˆ@9?6Q7#~q4UTph@K3o/ wlV&]=!g5ы1ӊX\M Yb RHn%Gゃ2G#Ғ geS4! pky:XK+ziD,Q? ~ Ģ-'V$<Q՚r2!/0fn]+T+ʘO'ϋMD 9^)e %<ҖAJ/:jm5G<;o>;Ӄ!U{׎!Œa?e{#ODegeT+~R ^1_RŨ8!KcrR8k՚_NU |œ>~BHHQ'Lͳc>}5IIQ;3oDJ%1QS֖:4EIK,C] 2:I³iʩD Ҍ^!Z q0)'j m9z iP'ӊS>|~8h:FXlcc-8[AWG*4IVRя59V|;_B3Pg#TEeqB-{Ӯ*L+jx35Y(>|a~ӷz AspLk'&93-I?ȳ>WAH;XAeŤZ[g!RJ/r-xSW' AάNJ|6t1zsi˷:T+><Ʒ$!Mp#9>|J*MNo Ws|i R4I%%F,4cR+ CKP`VpREV "Mc8V5뭬?צfɈ@E8AIIAqP(3NIUr[/IPp*#8.#^1ʘ: EiGʿvȯ) ]0|uH|˷Sb'cqP&*NʘXVDݻ{/?2UbrZN iB+~4VF/}G7ƅ拣ʠyW/cBHyJ/-',,a;kpMZoZK>|6I);^#ߛ:\Sr?x<\ŋOߧ||[q?ĩIOYTUEMRM2%[É\G X*bʘ QL8K*4_߹fdauC WB?2#))䠌yUFFbBhl!iɬhR5 k\{w|y'6%w!|0PJqt{Ɖ!3h'dB}[uuJ+BA$J(iln  tD}/B 5\w]kb[d3.!GJTI #33! @Rh97Q!׎~>* awoX%BVh#pVy\/pS 6{|'ޭP[-&A#6s$q4B Ah'( RRZ4r4~v2qIY|Nb1憘 4=M˷}9Ԋ(t;x`-aHx_ZT]ͭZڠܳ_}_/g[W\|ߓXltے+k=c@` t#*XD35^rbscVB0 ~>A0Y( ֶ39Nѕbh:p l o.3+%0Ώ쬿Bi|6YYXw}}&_y;Cd]4&$vq΁g  \#WX D(>-ZkMYEPIi$JmhP,)>k}DY˯sM[xn DJl\h'B!qWkG;:SP3UK+7.~6Uf Sm(qA5:4>k\u5X`N.+@6dyz5V9ջWtpݺ\:.M,WTb)kM}\ֆgOKƅ !%H^o&(5#DX&ߎ9rPK,] lMydg`_T%H"?pILo ̴Ţ-=O,VݤE6+/'74J8ReI"͏ZWׯj;S+\ Z+ʤ?1QԆJ{+VH/OfO+fF7+%: /#DxK-Xjuޙښ}/tb̀0/n>/ ZPocII&g޵1hm(kL3)jEMYkXcRiMm.:z$x F ؀hڐX(ض+5]gY׭z>i1'@)?܂WBZxIkjmUtZs2(+?b1^ޅY*H/%6SAđJK,J:*ƠYiͿ!N 9|1xUZk+A+l17i45iXfZԌ ͬ+v|عwsTBHt˔on6PDDYd3HYL $lkeZ9oFGE3_+D o։լM3~R97z-9nUem[iYSk0-Yϟm@9H!Q憲5_^8% Tye:(ݔFg hhE vVR:T;\*Jcj7*VOՊ%qt8x*v+d\cXu&:3%o^yB.h) YO`R:ȑ4k A5 ލ̤Akmj.+F[. $ZעYnFMtm5G&-D8D3|_րՀ%Qf;HAFX#{$/yWdkz "Hz #sfY:?`#.5}t+}r6u 7ii%BixgN۞bF#u u֒)IY n"(5LYd5~c)Qw%reZ}n_z!#7=ߑ&~yW؏-Oz%O~Q)q&{IՌqw/IO`oꗿNx+ۥS"4'2.HCkrexU< cMcu?ʵC\#X_+ޤh辰KQuvq ټ}y,G305{%Ҋ\E.+,x R@"4^!AfwsEc `/BpAŲi5,ou FI*diVb|`_KP@I_Լ/x6+(O< @ƀ^ײjWj_*Z_='gjpoՙ yUS}YN)~{TF6 5&,c^ 'ESl4 ^hۿkf^eUye=aԲPϐjo'|0~! pH9v'|{^ZP#u4ywY .^s)޻2W f7.ΘLIjE A :NAތ/@dܸm80(:vSLVxF{{JS`@,Ģ֢MIB^R_~8_e M "thd%M9(fF1'.\XEYc1oT>z(^B]5J/|3+Hc”PwKzo <*!_.A3gٚpX< ]O* 9%v3zjFq~tV~?V󃧣=LAI5:{]ۿ j&Db'hwȕ%Z*%x%i=帎q/TVʦMs@5]m/xo7Gz[y{{٥{{=xs?d̟s~y/}*CH>֢ -ɄaV ݙDO8A\!@ A?<+>e祤6%T|V@5_[S!)(^<O}+ϻՋ^|{,)yL̯( PMGi{ o҄ PBҚmO8#Ư"NfGD 0v:Qg u\^o.ZE0;߭.Y5?6/O xXYvo&Ye q4Cj=~clޭ!XiQSzL.+f|wk̷GSӊXYrW@ ?bV`4cjϦ 3-d U= <`f`%= [o+z@9%S;1MN5Q_0"ȱ|C`{BED] Tjn=s&Y\Z$Ϗi~!e:!fƃ෶`{735r7^p T9pWSB/}^ Q+p97eY] !L^A9&v;I7S){5YPZ 5@,XAA%Ϧ U^ ]HP-0`m> ?t+;7$׭_ݬɧSgAΜS9J_*4}GelG35c5wM2&B@,H?z Icj3[F0M kÚ?W/n:2=w+VZY<|tXsqE M AJ<%̎6)JD;y??{<~vf $fo3gӔBK>9N;; H w׮xR]Нg:^$W?3ogp3|(?ӣ0Ẅf!23g|o4᷷|{knZ7}AmP*)B2FP:5>ہyS1p'R.wpx"XRvmuzobx4X}3v'(3cW~o v2ݴA tQ^) K_WcYueG%M{][y%o @a$h{{G UaSۿxekAq !JO0eWS~omMyW%pNo%{GSEQw`p14 c%p 7 jnrwtn5uzϽ/|?IG ߙN`Bv_ qH,DX>iվI "?hk8- .a9 ؚ< ~͜ %<"6[IopLx_kbE- pD1B#zX8q^/h-{.*t#+n ڡjJ ^\H|? x cz"Ap(iUI?6dRI,{ eYQAJ3>8(Xmwsyk/=Z>W C$.OH]^\`oo ޚis?m-A `J*-Gi~yjt {!j߮J ,]QϡKSRQ8ј?;c>,j2eCo! "=‘)CCN q]R3l=IϗheܽJ&O*d˗j-=IDHSR0jg &`?ab""B4MeAI*Oxܫxd^PVO% |`oDQSDk<&??_l-\{Bu@^|#ߕlE"j҂Ӧc)ӫ؊5rwH$AƎ]Q)C/2ͬC[i΋"DLz@uqc@F,&Vrg5~]k߾t?KDqgD'JFYiowG3)2cc9g2ey+ wG~=qXYque7 >d#$=?P;iFWP emSm +zq3zaJ"4qzS9јSeyvBM@I%52l'5Oz%ajvO+e‰.))Jpe+^в/"jS todguy S5nU~9+Q  ⚝杞oMxWЏ -DI!%QXNĆ3>I͸ώ|8L8]i$(0A&^{h86ڮs/A\+[wktM_O:]-F5Y `QVU FE A7t(ሄ,IŻyôb,{Y糔We̤VLtEuq -"pQC,hj@ ]o `)Bϐ&r% 0䱦a/x|0 _l%^d70$ؽ HȑE*hIDAT,Yγ"Y*T+fP B-}׿aӒwwSf;f'O+F& }GH_J8"f;(zixY<|2+t2ᤎ8.`b"f6F;1{;ExQg$C|(w)Ka6ًX0-yx<ɧ'5 Jy^?p Җ$Ғ+G?즚3N cU"Y9f6p*j'Q;i:Y vAyW>pDKK.2O)OGYNuob0%ϱtȦ//AcZifKNPAa%'u糔eg:aj#fVRZIe m:Lw_ R)Gwq1?iMJ/<@-"}n Mh)!?0HCs|hɇm=]7͙-4Y@p'eg0M#wӢ?|ե´k.e'ϙ!2_ [׹-:O9w7H%Q玐6oR~ R cv2}'Z{w&EXBcdЇowNo3fGdRϋ:Wprg)\M EaevK zOwjkozm__݅} (QX (Y020P(F( (F cK00@a F Z  #WΤ :QlIENDB`gambas-3.16.3/app/examples/Misc/SystemTray/.lang/000077500000000000000000000000001411575327000214575ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/SystemTray/.lang/ru.po000066400000000000000000000031501411575327000224440ustar00rootroot00000000000000# 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/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 "Системный лоток" gambas-3.16.3/app/examples/Misc/SystemTray/.project000066400000000000000000000005611411575327000221310ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/SystemTray/.src/000077500000000000000000000000001411575327000213255ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/SystemTray/.src/FMain.class000066400000000000000000000014041411575327000233450ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/SystemTray/.src/FMain.form000066400000000000000000000004071411575327000232050ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Misc/SystemTray/bg.png000066400000000000000000000002431411575327000215550ustar00rootroot00000000000000PNG  IHDR xjIDATx A c; 2# O.soh"jIENDB`gambas-3.16.3/app/examples/Misc/SystemTray/icon.png000066400000000000000000000104131411575327000221150ustar00rootroot00000000000000PNG  IHDR@@iqIDATx՛yeU}?{[= 2ÌaXA1(:A,M*DJ&H\*1*F $–bQ\0:l=Ktow9'{{_/3U꼾s{~߽-1fV\khM˵"i4YLH X'ڤIy ҊԎJj! ԏKh]I1TkNݯ`@ըmDEd,r"Y iѫ@!WSRfM*`2ecW_+7"-'qeXFW=myǞߩ\:;MYdma)1~@ =ubեTu'ҎswbDFLDlKTd걩w=R}oLVwdS}4}]))VNaI%U~OɗMUrRB>5؝z_rq` DD֠fL~ͽ@OW/'k.o5B%%J l%qX3AkxkcSW,)gQMXâ\b$M> ~NE.^7Гaݪ~s*0Qr񃥹)gQc?gbFVM놿\T,2@.YTջmK{op-B(v-界`m/g^> &UӛRw?߽öBB  ?-C}Yw&{xPJ?[+mqY,Vyǯ2^u;o:oxٖlh;]G}3c+7^y;ov3;kv }>J/u\{:^8XXr;Ub)o/~W\w\xWsz>#-[M\+KNz6\]ޒo_o>_>z7_w"bG폿n} {VK@o̡,\w='!ݷ$oz/pU5B+X<v_dK]G2iW‰/m}Ooߟ;,+̎)Gim7{K5]'oMq4K|#vFoG Y6|ԜVgqhzIc>pr~4<1`NتZFid^ KRWqu%srH7g7bON?bk-gtka}uu!G',Y'J 8xb*,cM[6 x|{zE6GkFe3Z,C=6I8<^bh!rMMgag3 &Fɏ\}/6rT'×c;kbz'+0=Vb˛7nuVEHV!VHȢI8~ߺg<>/ʢǶg ,f`r!n3&0KbG,,nkPXbr2' 4ͧv\8C*cSwst-o?3~G P;eA"ߐBrR*!:/!h'6 Dwd0=nO[a6\P1&.B "$#Èb v:o ˦( (I7hbJj|4߾eQ\FjuʬHʥ韽 pNnL]8rR2|dfbΖKfq[\9{50@=΁{gUcg`T 0ڇAthEbZAGbo1Y$"Z8G'1#]@Ia'nZɠ N=p\i0AryIJWx=1|=0A (C(L4aȏXtkgmTِ(myjΧBt) +5 }jz}j \*L^JL~[>zG:iաu`&ݵИÿ;J#x+s_;&1?oB fsoC˕ya/vl_~^ ڷq+pxGhv%O z$N4/mC*F*{|K1r~)I=GvJ1%B2EDk3^8z'%SZ:a:p%t9AV1V_ ~-+jP D23sKabG*-p20K{/{ΘjtĶ7EȇX=ѻξ,,^ N^hUKL$Gƴ+w%`2c}Zx:qB \|#gt&BekCЬ@*Uρa |w WJ'.Ң,@!~_#+6TٗCjOM|ē+eC Au#g_t%0}yץ:.j *-B?t ch2r/h_'26JY(p A8#<>pu_W3泧o~t$8 _:HlBIENDB`gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/000077500000000000000000000000001411575327000224025ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.directory000066400000000000000000000000411411575327000244020ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.icon.png000066400000000000000000000065211411575327000241220ustar00rootroot00000000000000PNG  IHDR@@iq IDATx{p]}?{[W%JlKX2l0qblP-!iәvMH;}$C&әL)i2  I1C*cl%KzX+{=g\Idȶ{w~; XotQ-7,eJb@2p "7\oRW-?\_67>ja$>PMl;.r1[MNQo~[7@p=sMkC]L猧ěSw +6 4 <}ei]^}_}κW_ yYN\\z)ZNP~qĬmYBۿ_}|{;y'?[//Ny*cÏ^:o"!,%Q1簄-e)[͊2 ()ů|7_xXe5W8O/"v 'BN6ᷬktAP+ےس .g!%Oyƛuu42BbݽS?袌v5Aj"Bk*lo'-`Fns:Ew_+-Gau^wM6)*'i,ҮN1<'hai^)g{'m aJ }/MB8 хpGgρsiI"S18g;)aqk7#>mdeҧ>!Jf\DIP¶]b1k*+8t.6vq&x8.':MkpAKU>c>0+H8 ) (_%&a`ƻ?!C 0H4vE.jrDZK+Iß]U^,/h7ŭgwn >ǰrRB O!o!zDJ} O#+iL8g|w%v!p6!(m;8^UXt?[mG[)/q!b{Q_c 9_듮ҍz-PR@*!O7Pb.>n@¸sxc# {NN5wgyL =CmzLڝ9:IEQ-[FcGnJL$zSo%'kBI1Ī:F "QKP,G,ZEіIƑ"؜@8V3>LMy8ҍm`T@x6UqOh!F}~G!W,9|=JZk?g?}cq6mYf ;W~/`6 zfLN*=-*I9 VDZiw*L$@cr9~t5kn-.+c=?z)%޽uΞt}Y*!&!&2~0Ŕb $S)}EoL3 Jhr:SJ F#i9@I&WSW;w"`pp)%hm۶7%++mYaPSWIP94593% u`Ikv~q8k, LDfHǰ͢ 'q|y-R]Ycٶ}GaE lj㔔4ڒ֌д)DrZb<3(n^ݸ<|{ w9ڿ_p508GA-A|L֒4tW_y[Ӄ5K/Kd ]6MԐL&1Ɛ[T:ok2=MN7X`[L<GsQ1V൷ve#7leÖ0܋1cT=o);5˯ik9<#%emiJ֮]Kmm-eeec 49Nvnl iM =1zZ 1zZr5;,ɞ6VX vj%?LKK"H{31"+ׂ1B|Jh8KӋC%$ϐ֚n ee"PNMǚXv=nܦ%3PHIRjI^dly5;jO(Y i6~={~QRG?hH@KKnDZqi?x|Nw>H($yݼAas^( Rd8OyTVU mEt;O;:mmXUz>8q>$l%C`FFJVS\qm,5z`Q mCyj J,xY 0-=$jɩM㔐{i|#TndY {y{k+j /!1>s̹ӓ8k9;AArJ/.&x*3-H%[ Rnyg_މoma i!ًvZZQ!8ZS_Hlĕ~~V>D2r]BH1QkiL\mW_mXR @?W-mWavSL/  PZJ!0Y~3S`iןOp?=x@FO m%J`) n 4wN 5) 3 1o2fBgـ osd XeFՋ5IENDB`gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.lang/000077500000000000000000000000001411575327000234015ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.lang/ru.po000066400000000000000000000063771411575327000244040ustar00rootroot00000000000000# 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/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 "прервано (нормально)" gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.project000066400000000000000000000010211411575327000240430ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.src/000077500000000000000000000000001411575327000232475ustar00rootroot00000000000000gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/.src/MMain.module000066400000000000000000000034121411575327000254570ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Misc/WatchGambasDirectory/watch.svg000066400000000000000000001516101411575327000242350ustar00rootroot00000000000000 image/svg+xml gambas-3.16.3/app/examples/Multimedia/000077500000000000000000000000001411575327000175335ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/CDPlayer/000077500000000000000000000000001411575327000211765ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/CDPlayer/.directory000066400000000000000000000000411411575327000231760ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Multimedia/CDPlayer/.icon.png000066400000000000000000000103271411575327000227150ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛy]U?gmzNo餳lD01 JDua),uFaaTTZC I5I/NowsN;ML:!|N{s~o9w\`X0zuVɷЙu\fOM#eg=~Ij>cJ>sC5_]SG_)_Aб [~Bc [Oce:"z+JQjWtlbRVyPvKXHsu̪MC/噣s\,J)>k-_u9W%ۈ5BeaoV +Jy~"x1_(fs&\=4 X ).+=at#mGi}Bc5)H+k<*FJ$TbD]VէyָٌpmegB|]AH\UƗoUuh2ɰFBoh*w_\J(# `{ٴ&7wn:^牣ݿտa?nZr͂B c< 0Bơ#yw9_uhV?]@X2.J~PTG3ilnϞJy 50jo~Kg!xmx=ʢIRN60.6H‚*\490gd-xY<'^q"v9|Jn\^k].ȄCFpm$ew?9w+uֱ繉X@cEG` b~D?.{Ip`2VV|?(conf(=vyD&  2`bDgimxv+s+qsk%1N^:єKƻ|k@Η4]I}*J .."s 2Zi]TR]XRo;Qyy0ү4cAdF7&:D&B `.0Sx@.RԸoEgJC0.(+6>Bz0rRJO;Re8 Hc"6;{]I{S=]vs>cpj8훞@[@o| ǟ ti-TFg? n;Rfj/c=-{RIRIO+)`'O~|ES90 B6l| ݶgjZrOJzJ=b0dU<~xG9/?$G2dJI.^E;p>֦xgL'WxvR.%OH,˒ְ;Dg\Wu$yU[4~Y8|GZXP)5ߣO+-;@Q;A P">z㥔ɢl?XxGkOOuo 3yDɵ7S Jƚx*XPZvhGN% !̸`̋?=/H ^b5{9uq*#f.&VYz~GzRt!޵.Y8lbn~"\'Ek=Lt&;ҭE8N-nH)) 36ۯɶlae' d?8V!UW\ÿҘ;WASyU7}~ĭ Գ:be?C Ǔ̚Zż ;vm`:MOd0)C.mL+PJ@J! 4gT+شK%%tL2':DGǡh pc{谚)Mw2eu2Џr7`&Kg8A088O%6&gHk¨,stwb73!UQu#=0Daf-`\l*F"R޹:'$C̍ciQ 4tpl ; N6d  3b(!\)̚ˌnRT]v5Ȓ,#>ӚQRП,ᆭT\vH1b1@h\ mRt}ЦH"EigLL!qc@ ]+i= pSni8, CSM%,ZZyVRwPL&_͊!\H$EeCkfVfpS}Y'Cv H%#Z{|RtLȚ6}z{:8hzZ+J [X2o)O=84o3\I+Rx8aL/=]$bD 8aɡZWYʗbsu<۞#~n-Q~ ru,_u=kZxAՊm]8`W_?S߰t[.5{p]w)+/ra1>a[T487-FYV"c[fgokb򾃔\&ihhB$mOlp`GIzL H` [r1Sߙ)`0#pIL%ʅ(Oq8J 1R1@ǀ @kSgceABd< | :xwBʲ4 B9;sie5+\9wm;:jNA صw1B Dy(7M(Zzq.p )NXTY F1Qk]MK nY }y Y][PqSgc毠?;H\5g>UuдoJ3FQQͫ{_fJ"cO >a^j *vR pq7=Oԩk,`djb ?zOx;.zj[_Mn! Ea-w;Y}Q*:ɥt沴e=pqbqұPS$BH3& x)Nzucܲf#8 ;F#|p57rҫhhx-6َo U%e^1Ji88'38MJ^~_| ˅adNod.i~9 `Vd2p UVH!) ° vB7 e6+k-Bacɘ6 J?y3#;Y@ >Vs$r #Āj`6P  .՝@n5L:ƐHRn2{rO3 Y<_|i&>?l=Ju3]p-c;Ϯ}}h7&q̫k]Vkڄ}n%u=Bdg{Ov}ݝtoyxˈ`ZT;n!rLp"wshSnxdtVxm[9=\[N~WF c )ӸV9ۯىP^GL爢,O<dgxӘiotIENDB`gambas-3.16.3/app/examples/Multimedia/CDPlayer/.lang/000077500000000000000000000000001411575327000221755ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/CDPlayer/.lang/ca.po000066400000000000000000000024401411575327000231200ustar00rootroot00000000000000# 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." gambas-3.16.3/app/examples/Multimedia/CDPlayer/.lang/cs.po000066400000000000000000000020011411575327000231330ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Multimedia/CDPlayer/.lang/es.po000066400000000000000000000015011411575327000231410ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Multimedia/CDPlayer/.lang/ru.po000066400000000000000000000062031411575327000231640ustar00rootroot00000000000000# 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 "Громкость" gambas-3.16.3/app/examples/Multimedia/CDPlayer/.project000066400000000000000000000005361411575327000226510ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Multimedia/CDPlayer/.src/000077500000000000000000000000001411575327000220435ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class000066400000000000000000000051671411575327000250140ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form000066400000000000000000000015211411575327000246400ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Multimedia/CDPlayer/cdrom.png000066400000000000000000000076231411575327000230200ustar00rootroot00000000000000PNG  IHDR00WZIDAThY[]u̜c%6`Ш1!!R5EHj.j*łJmTRP9}hiTN߷kRU~5׃"[cVM"XD6Ǚ^KŅuDUk#Z;TZWGZCRA( <ϐ)CG"":Tŋ4 3?Lvmk*-BQH"޳165Z$I$`|bG8Px?gQO>2_ m*,lAD3"ZFq MSk#G?޹s?}&3_ 4~ _|Vqi  hֵD(' &'/NOOm B`Eoٲe?-s'0==5 b" &f>Kj FV! 6@%{ĉۧ>ݻw8q㦥޶<,|8*w2Ơ,J[F'?r?et5W{5EQ|w,vd]i"RBET ^xE!/ Ѕ{^.|Ns 4ŧu{w.޿w^+8zO\񩍛6PX쩂 T!^B|g P@ YOu]r;vlχ&l6?ʙ3@D.rUv^d8+L(D,&%^`EW8}Ffk&gϞ߼jO c̅Р=ȞE`))-@/ݠ(WA$[֬{ٓ\G׭Wi<MdXQxE,`zz33]dYQZ)SZ@TgD*hfo`PmjjK^fZ{+_Fۆ9z/pCDJa6 Z("t;`A4 j5f C`".(^<Z8 3sKh";6FQdمmz0ljEs( W`,B6sV,s]Jfbh:贻U(SeaLU!r;)(*azf3vpG IADU8W`ڡjE\@\-Z'"!d<+ @((F$h Fc /Y^`rjyHTey` #0<ͤ&&( ٱ";v!y5Px'@(q= ơRBDnsZ$ "^" kUTu199)ιU^Ϝ9xp7 b/ y@DBz$1.KT`(1vdɒcW#dɒcI_݀Cy+aIQ8_6>5`LƆ"Fla=<9w|lll(Dr ȃI"Ki TZ@$Ġe91y k4 {ÌℐT!?GP,&WF|R|Ma "$aV^N!_JV <>/Nw ZmlŌJtkl]~׮][>X`D +ԗ༇D"nպèBYֆO 5j}ܽ=t288P,_~cƹ SG"Q- BH J/O Ni x}G 0 PlPXxOhw2tdbEe[nժ"a!Q ZCA,"!!1,Hy O޽ئoRFD1#- +.@'(B\&0=5guP-&Ecv3DlBHb <(t66~do|cvzY;eًo}8%bbE1$AV @ΆQT$ 4 Lİ!,EQtaMs" PP C͉S_(ZE1|4{'a]R8_ wf5 b0YT !x  .TN0.F{PgJ`xxxZDj'%`*ڍ@ 5b…D__I5A^C C1_fA" ̪ ,yi'%:tHgbb * \e񀐻6 zF:* cc0% <"ř Ƞ5= ,eq>۶m˜ss97|,!faLaPO.9( #`8) %fXk֛?n۶-&sν}RBh̓COdfLl 2a'[ % #xTQT?~3Ms;w;Ϋ<ĉ_{5g ?/ҍPb3t,-`sOQTÇg''] 5mUwn^bܦBPL ==#F}gύ#,03שyP (@& &_"WdO'& PwO<;}g[7hws#/B+\Ca%knCęN}駟6+zW$@D!e֭>h4d[o^\pJr\Xy Z !6KN?uhZo߾g=ڝ=U_/#s{o,XKXbJbjZGWW*6BunϠiӚS#QsyW^8xt ~ZC& ̫9djY]|7o޲lٲj8c6}QV8vE~>}gSNЙ#3w*Q<_rHH3._J`=g +R/kp+ֽksRq]>T0%"bȗIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/000077500000000000000000000000001411575327000217275ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.directory000066400000000000000000000000411411575327000237270ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.hidden/000077500000000000000000000000001411575327000232405ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.hidden/screenshots/000077500000000000000000000000001411575327000256005ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.hidden/screenshots/MediaPlayer.jpg000066400000000000000000004314121411575327000305030ustar00rootroot00000000000000JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?veE,*I$;2@ A(eWR)FAnGfydW;s=8@:8%@H "QQQnӐG\zI@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@^^bQݘZ tUcYw__jy0[].rR@K]f[M:i2uUP0Rr t7Rk %{\C '%A0c(Wu2(IHԖ 8@Ȫڎ/'RغlVZHA$A'gEpvwokqq(FPN jHA'Z[O_I4SjΌ9\ uSveP` ֟S++e!A V+i; )U$pI8>֥VXD0AphYeq`AA48*#qG|z~.v~%EA+K8'9/n~%74?t?/O/}1E| _;Nn9ӴO/}-E| h_9J?h_(Z+ho;D2?᡼[@(j+h_?D2?|Y@(J_6AxIFP$C.pN?j,tF:'t}x̿rNJ?G2|wGh_9N.?PДWϟ|O>GQ ߙ+/Oώ~e?O9E}E| ߙ?(o?̟rd>|r7O9J>8|t'W1'I)wˎ~㔹YEx'.ώ~㔿|K>:OQ΂+v|t'_ԟrdg^ Ŀߩ?wIR9YEx.ώ~/?O9G2 3(oԟr?O9G2 3h?|M>:GQ ߩ?>d=\t'Jz?O9KW%'I(Oԟrdg^ Ŀߩ?!_ԟr2 3尴ey93tdY@D 9 ]$'I(Oԟr2 3N!d}p 0 *itk,maCln: _ԟr]%'I) =Gll-h=@ pESöcT 'e@D*9?Üux.ώ~/?O9K+=}LR[H a-j߇ḹ6Q.d!g [8=2H8wIR?v|t'ZN{4s]X,q^s##+haG$Fbu8do0cߩ?4q0#I(Af{>=й 19>қ.M4˦<$fI|FN9o?̟rHR9 3ܡk;R $ Ƌ}#MGHc.zxpc.:GQ ߩ?,q4gcon#1FrG{SҴKf\tExo.qԟr ħ\t'̃l,H809F:\R[uq M 2Hpx5#oO['I)W-+I*yYVNagcomaA0i&a+KiZ DO#KRʕ~0x?ԟ]'V!`,50(Byǯ4em@8޼1zg!ߩ?=Xr@&f7* 0@@V^O3}-F#}œ'}kO/sԟ]!/ԟ],9RilQIcnc.tx՘mFU=Is?Z_?|F:Yi_O9O gQ^~3x|'?F?JR|9W +I)?t˖~s g^ g\'Oԟrd.V{7JR_\#-+I(Ar;/-/I)iO.: 3|BzO.>.˞~9Y4WoōyiO.YtW@ɴӿܟ]1+å~V{'޾?MRtw]4'OD9YWO.[{=7Irڨ?uLRu!KRt) +r|'/ԟr:V{E>Z_|e-/I)sg^~2x|'<ǖ~sgQ^ $^ZWr3h?Jx?O9G.'I*E|o>',t'㷊 (SL\B_<Gh_9H~<|4/΂zH~~e㔇ߊG29X*F2?~ˆ~es]ѿ̿rWo/΂Wߙ__/诛_9M`v~esYZ:i/SO N?̿racj+cDx;DOh;DʡMQ_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@M_2E h_;@MYEm0t#~.v~%E%]K.v#=p{f_2E h_;@JZwtހ }Uӿo?]@Khw?/ēFQH<AG#+h;C?]@Kh?CIAb2GX?]@Khw?/"e]ג3ӵXՍŭeKB 2s +i|- Ү+$,A[FzTi^M0+c! ~FJԌw(&#%WIn R [7Y$@C1`qԎ.5\Z=#elD AzU?EuI(`'i<@uq d Us%P# !)WVzpMy f1apGaz *JFr),0$g1F;3hm]ol@3.jpǧT[GWqLy>:qW5y3Y[,~.UTv8bqrvW271H Ђ8#Tz]; h@gwTPOA gڵ5 Hn[fmu&h5=A%ݴLR 3H {.'[c bnyK},|]7 ;gqZțN4b:)Vi_bH*8$c$gU.-2:ks8pcY$qZȹEK^JuteېA\s*ΉZBoBHc$mOmizzuo3ê,EM Ldt+h)I pHd AwP j.Ey޻{nwcqVmtC}  RF28k((m֙N݄#ԃYC6֓Xb V:M7i2Ku#]ŔygHm౷Q+ ݹ,s@5m>OYVd,m?JHKm%vqUăMEwI|K؍H'Lo 4b$(SF+]̸$("8Y8Գ I'vD-P,HX#a'6 Ϯ*ݦ i&qfeYD7I!ǩ I޴U:Ni,Trc1B'NO<UA1ޅ NI0 jH4=F+l)u J9a lG"!dޤ!=MYeĚu雠%2\ܺCM增mb`}{P E`mh4F+w)dsZN mfcPNqpxu̚,Iy'g{ASqZW6+=ZI7⒝)1LC(RQ@/o^@j*UQ@{ EQEU[2@S A z(((S[2C&2l|3{U袀 (P)ؤHb AJ)QJ)LR)QE)@ \PZ((R Z)E%(a@@AEZNc5?i=JTؠbZ6E4qX-8-;ⰀRъ1HaKIu)) p)*@*F*i)Hw$^M< buGZ4ҴKI]"QLMbyci11OB)E)=@2)HU"ai N(@8nmVz`~?@*U*iP) @*@){TT4\ҁR lhfʍӃVqc) ͑1PW%NUv5fl zLsOQ6$=ELԪ*ˑ7B Ѕ'ӏ^buCmvlBci0J̦5"` P@|L.j5+VQJ@9E3p&IьqIPrZ!sJ*mԅH`^(jE6sOT4Ia9@ȥq4( R8FNz/pH$9Xf,i@"#"(LDfW& 护E(R֌ b#T=@Q.*Tc9E;h@$R*`0*7hh3C RfE <Ҁi$șAyJS_RW`3Q)FM0&*&Ղ8S@ 5ڤqQIƇ ┐E!BzS@ UXddd TR BvхR`0>AM67bVB):J=0*9*|iCiHRaO"\ ܸJ[# |VFT#EYxȨZw!EB*B) 28"B)a)SH"E4,O7j"* @˜*V+DmQLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]5ݯk2D wfAwj[M X+F Zol}*IHȹ$ 5,w'w,"Ǥ%% @>znZRf%2 })^hr5S+aT#߰I}F[%jBJ`@ qZR\Yjhm1岸r@Oq0^ZФ:C}pyR1)JFVVWs֤E%C%3A.17r#r/!8|؎0ʹ8z-F& ˈlDPEPEPEPEPEPEP30 =[~ M>#8Ss~ L+"`}r:mJE;^v##4,gA#IOwH=؎ 9'JCo?j6@}GPGU\TdaVb#-lx0lc23ea}%xQ d3O4Q]>mmmscv 2rj?ODZK#HR 8e $sWZek&2?Fb02?L*QYA=)#C5"H$ @6ޚ5ԓ`(\0NGcxi|=etaH_(>[s1s֊M,&nVCvsץT,cuH$ n (6(((((E-0Jn)`ӊCAh-P(!hP0-S(P(-1K@F)hR1JQ`&?1]+3kpEbY?՚O`DYf;5Ҝ(cqF)qF(1K1KLB v(;S HӁ晊pQRǃRQj@8cDO"SR{TL5h4!Ԍ0iLӱ8NGr\ Ҏv))N)REaUpj%0i4u5(9je5E&L*EVl=YAҡAҬ-J31Q6@0jP&g:tɭIZΜrkXdT#M#uk^ը5MJ[@ L5] [@*ǚxҬJG)k]B2 83D7R X>jhOj4"O%;o Jr~|#8 w$d~~fԈRuEՈUE͢-1M Jh&jl1 SPri(X75`i3A6#75!B*7P4Ƞ)s($tCR)M O)Qrl ;6ƐA2a1Q14bFzTc38&zsIA(bA`sZudBڦ"Hȩc=EYX¨Ng 1TgpjlZ \d +R35;d$ijێ]Z,E65Jd,r)9RS Ouf;uE\ELBJ 1FDU9*T$uz TM""#EfPAU)ȫjvWEqRJ `֋ȇّ)LɫDrЀ9 Tq8::v"E?4`E7a!E>i4l*2*b))Q0N£aVQJF)*QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEgkj֏6AdAuYPαuwos [RV*T8; =~7P2GkBkI8nsd@q(-mVV6$sORR!zc"vn EE ¨Qsz`+Hf"LBuc<6O89(js58]Ȳ>ۂ0쯤y%F3B+ {Q@I4جJ)E#;q]\uy4[ʗX[a# 9=c@%LƐg9\g$I<=%n$mqz H59 ,9C"ީ:l9HjE2wpjV6 Kk5aT03'y-]tCBzTIb䓓ɫ$iq,HHiM%ZNةhL""E ""adSL 1LȨX`֩J(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@jZi`o.ͼO)6E30EvfP6љ ˍdG9êzgT8e ds8=SEECc*˸t<H֖0+L)Q9=N:5ΝR}O랝:ZkꚋIcclJ! =E2Mbm/K֍ A梋Gum{ʼn( c8y[,tٴ`[-mWuPB($&-/G,?rbF06'<<=lvVR;W>G@|8ҫi2ޯoj0<ГJ=fu-䤻,"% vAln4mgT~LI 67x#7'´q|0FXg 8<+]ӯf˭iYGx}( o $47GPA cncyb5HBqϥe跱iե8d $?]edkɻ7\`0rÚtPpmpΐ|*0$9 x#s^hsQZl-Lq_KcTDї"P]5T j4*aB欠b1U񊻴#3-.@ɥ4 B5jwQ0"A>F`$6)jX!w֍5@'bMY@* ZsP-"ULqVӥf6!1㊌% DQ2 n4-2DQ皕4$RPXJ"LN @=i4v1@"Ş20d5(ҘryrivsOT rGgje" {ըzԌb&҇ r M&ɥkJBfұ-d❑Llv[{TEidoP"b Ld 0sLzd1giE8) ei6T"4fhQ`i^F9'#:h\O?0w84}Py13$jEFFM.#2ElJyc8 F?*1Ń+HFEBjdnƘV}4S$n)In)E7RKdSHO7D¬Qڮ,4AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEvLG #z @ϵRWF{yU$rG4ٴe6{\12IEh\ Zdy]h4(HlXs0RJh6<5s{gMcEi$xU ]4ͱYT ދa@Vs݂K6?LVy8(((((+=nbϵ'Y()=F%E)dH:֢m2o0< hۀ*A0r;*+& 3.L[yW12Xy Ք6K:<ր3hJo6v]"DR*FBc$b[RFKFTrh+u2M7]tJ 6sUWNmm B#rHh6ֽ̋Q3L#9dçzɠ((((S!)i-!QHRE-0 (RR-Z(` (Q@ (bN(-&(R)) (5~C]\|Qt_+#4:J(T\@H8R4sJ)ReXaZLT(LM F9X.?4K,%/SLzh.(R1J84SrI$ZN BjEJNbzҰ2cj.E@WEZbdDsI*LbE;I)qNLqNcXW9*zdx3NM^*ēV"cӸ4G4ZaN =HAV:M@\sPmzȧ}HZGJ7mMYAȨb5n4qI#8QBTόVOV6#fnJƢcRDn?p7M9ܐqNù LӶc"7JpE+HTH*-erUQP8ԑM5,kL4d WE[@ H=֣͢:UIS'SA@z2edNj #?8 #َ*L0*)Q-DƴQHIir*KcqMbjB)8Ј9gj'8!JVqM,)*\5F3bZ(ӄ2:y`y_PG9~ r]]FUK/n5B]ϣ^[j (Hcq銩,Vyc=ո`$El(b:t'o~zczq{=px=\hMg7U0]$u! ci=A qTxM#P &I+ T,j!9\dӉFM639NAR)6!AȤd4PR)P(bSSH^(zfJR*VbE_2*qwDqLH4]A5c922)'m4QڐJJ"CEO 1׸I;0zΥ'\${y DЭIЩb3jQ4;"EҖ(hLaRbHTl2* TXJ{ejQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEo2ehe<;;m=tv>2[Hc/ 3r.|G]6Y|_1@H;Ny,:.ل e/W r2BFGLu&55.ԮK%IN~ar♦GTOsлʀO cr=(2%'tnpXw`WƿV&Ѓh'=jJo@ $>(((((XKBȲJT@ϹՙbƟ!U$"76; SGF;CUE18e /rA#V籖 w;j`kJaBa?Ц4y4&U LSqErLR``nc 5IVf>̎)1NW SXRlf5is-"4$@W$KPjØ* )c\S7+8j欲dqQ9M4&Z@"sV#L"PVU)Fk6LhVzSqR2Gf;Uҙ4~\ ~*C;RmW:A&d~A St+Z[ K뻶Vrt!b>4kȿud&meux̶NW"׊ʐo3vݘ=1ZH%vH%SCA5%͕ݞߵZW?L@IEQEQEQEP( p-Ҁ)qLPE(P)QE0E-(QKHQ1@P QIK@S)%&)hWL:-G\?( ph(k+H @T"K Ix O4;#)S0 +&TR0b!Zv3HE☉OS0p2AGgHM5)brґF1Nx5)(5"i& ?Jlubh)LhK@@c9v+J˴֑jɦ- Br*-V"n4IthxB#үDzT0,Js xRѝp*̙qqeG5e=*ֵ[ˑsЈp+>ф+9 )iBQr OS z'\r7U,jaֈMfTV&+T=Hr)sҬ™#2x I#b U"",rj:sriZt2ni4du4ɩe8jxc5e &2zSNȖYLd>\kRӚz!)b=A sQ.I qR+FvH~?@)-HJx5;qMM!@4h{R3M#$Q0F#IXC*jcьN)IPƏM15bӄ[T>zT&"R:UPIlHFjP9"֥ȊeHx楰L RiT! nJ_HbHAU$gҚ F S1\''=ӱ-ܤSUnv渇%HP0*Z/ NAڦ029rz4#Ha֚F+RfTёFA#fJ[8+ b0qML#5+Dڰ*2*V*FE!M!XAAbi c LGBÊXaQ0QJQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVVPo%<.݀=Xuoeg<;;m8=NuEg~$V,ypTp97L[6 d.Le`(ڼt VA[U}@>k䑃o9RE"nnmc.zqg旣[j\Z˼2w\t `rI"L‚(C#! OqS[]a]0nt$>O:NxӥR>up3I#צ(b[-'G[]?lv(VJNIy8IkX^6qUnmLѫA$'d6pzɎ-/3;y:["5}ٕ'pF8] [2QG1ӰIlntأ*m9$m u'}jCdl⵶2͵eu,I=1i=ޣrc}2K z WZlwveŔ1[t͵F 21j$u!Is[%I!)9=EbO}-ō*틔 '<㷵KeKaiqj!hn U';s"6,foaeľHI#$d'sSWמ5K6v(ϞϮ{m~Yb#+ZJTFqsNI<, -K5) 8ϽOc^5VE3HXܳ18ogeI S I yk[V yY\ In̶e6F0G]]"6H%jT'$qֱ[{-Zx-` dpH;|zˬDVr+b"z!MQ<̑sU@:P4QEMm:MІR@#Y$f̒l%43 s91ɝpAkN]tq,eQQUNBc^[˫{KCTfrypo+TcR8@ww-q!e,JlqX׺YgҬ  >8:qҙ4il$[e ҡ, 4(Ȓ[HԨ#֙kZC!K K($9|:*\ErfeR~sՁSMBK۫k{U`1cLPn{?^lq:\6ô1~.y3Kyq2-|юy皊OHz}ܣ v#NzwQ: 6c,~fY@QEQEQEQE IQJ)(H))hPEPb(P)h ((S%(RLQN%(b ( )ihů7pEbdkCt_+WU/a2ڙ [(+$˱SM (8. NdjE S!}A`P{Tr8aKh"`\4 UҘRE!ъJ8911E8Ls@ ;P #-H"(CQH4lyu|aG  cyg<a[H&-E{(WAc8l8 ظ?q>slg~ +hh˛׎1tRJwX rsñu{f/[Bm|6Ӝ`٠~Iu>9cWcVVAW.{i?I52Ij Q2:L IԚc H$CPs=rO^+2II/GuʑG K@s +ߕaqu .3m%e$ 'qS^6mEäif7K%I?tt$OZh;:(7Cd|d2FƳ((Ki2F܁Z!yde%>9<j5YU )i9O"Z݈sҜA&0:PMJԄMRdnEGOO.ъRRh=*w) !P3H鯜B5dݣ`_f($OrWwrBj=R'*M zÞJNj&1e70"IŰ9iA#"HF{Q*JL`$~"ԎB. 4l\8 t~9z(gUEp-tct(  Ƣ(EHg1f[:{-x <((bIc XPEJ6/ϙY_Cqf|3`mؠ9 YP{Ù%xb*̀IqÿZ]2xF@c*AVpGN:k2c`)՝´095}ug-}ӅUI!@䌞:th(((RS #KH)iQE(A@E-1-'zZ)hQZ1@(-%- J u( )ip3F=( Aih=8>FGH)EC- >f)SqL ?WU*m?WU{T$TQ pM ԌSHP4OjR#Ii 8IjciE6aRbEK*&Trj&Jsi(((((I(DzPtQEQEQEQEQEQEQEQEQEQE~K71F@,*(n b1Z[tjo8 G7er'w,U-9:RPP[Iq'li~{[iMEܘ,qRw6VṒi]d" p88 -DF%Sݵ̛PٱAҧoVO2%v$O]1,<- Du,70@y#?k\[5ҋK6m%\0r:P15,21u% T61@7ZBQnN sNjŌU[ÐA}G4ֻ66qv.bnv"ܬ# .8"`=i0##)i@4AP1iE4R8HJFE QuQW3j?}!*kr1ISJZpiq@ p41M:PR= TH5т*HyTRX؉Ԁ<5HgPr* jEz W)2yVq*+(جi)`*R0!aQ8TL8GRZJ(Q@Q@Q@Q@uP,x:pFŒ"#ot$eQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@TX#K, \c9'h(-dYatYgȊ *hWW2ƛ `qלT}6p,/3@4RԶd+n-RrD^{_2p*ݬWrNe" XRQBS@NqrxMtxHu-1* E^^ 'MQ(((((((((4P-ER Z(aJ))h ZAN )i1}h; `NE.M!8zLF=(ix4if F1S8sQpM(?`=)6p.}i@"֋1ތz])i#OG89&Xh4#҂hE0:=.n~`uffNyt)fכ_+L(5?_+L#J[0ZWL~HU;V)ѫ)I4`S$)Qzaqfe{V# F^)0A<gAU2maԪj<qҔdRhE5 gId-%DC,pAg؂=b[۽gF̷P3c%c\2[] Td7SN'i"g#a=h~SX| : *NRIu'w6S[ZNFX{rXq:sm^Y6syRݏ\uh6go!m댞:ʀ7l.@c0'Q8 `\{ir#a]9*xf gW"HJ V]-DÚɫłԢIkG"1ڔ^5tsjpjdऄ{՛vV17[jBxjzs[DҮVׯFPE⌚ū3Xzu!-"`[}굱-jnَl Ų[ÁIH jμ`#&e -e^#>n_C梠((((( !LPw?Oj:(((((((((((((su6{ʙ@Q@Q@Q@Q@Q@P(S4S )i)iR pH \RZ.xM)=bfx֗84f8cnI6$R8(H'5 9`1KJ`xHNh+F=( @P2) E&)q\J="!m`E`R /ޜFi>\1Oր#Sv@ c/ِIx ruI0y?ҖÊX)Pmaq<ϧzќ$rpzjpG#5c}j##O=jZ,RԌ+JN8$ B}2yqO+9=~M?#>J[ fJ屚8(&:`zOzySfKf)j?NRG GJz:ԁII;L˖qU[AҩKnFxL0hNO (jxsPKRS")E `8RB Dš 2Z5!bpY089qZr l{d 8CBKR\h#?(GTfV+yCғ#[Fiʁ4Cme[pj@6j(1џ1HTZkC&iym@t [5~ҋf59IxB2"V  ԗ1ڞ4*$8qD2=0sOP j65G'|'\U7^E9V2*EWakTyR*Tb9zsQ0TMMSZ((((((((((U"8OxQTGCj ( ( ( ( ( (QEQEQEQEQEQEQElқEQEQEQEQEQEP( ZAJ9 \RR8) E-8h4wQH174B)0(u@ b9SiFH8i9`$S.HJù&m;vh)).(Ӱ;SqrZ(␏JyN}hbJKдP=ߏRC 3m=S S-CQ";pU{c}9msS ?>$x'V>X9?lA&Cq]6AdIB#bPsR'mң[dFp: 1iL=6)ݤSNGL8ѹS*<:ReY2mMk`S}jt .&DD@e']yXrwVCG$AMki΄S Zi5 8 J&4HQdsJcR:RLH>z۳F8c sKqAmm##8ЅR>E;J-j[iEepP`_T*r{lZpDcԋRӰ##HcȩFnnP+> ]h ncky =ꍸ'k MnYϜsTљt*{ bqkf SżE F[*I8=qQ! Յ)f]O42*=5V6voܰ] AkXڸW ;f*Wds+vɹt0U*j{b@xT791UP$QTҷ! V- ;U7+r'~EgjdVSÃYڐ& [ء5r4(upCTIlIliC$Jj;ߥ]8Pۻ`FW\QmSz!bL ʄSJ@ִl hՖ]7N9CH#Oon`:`W4fi[$Y[[ݤcJ< ƬGHVUqҩ!"O&'(1RD2mR95Yp e]hI +wwyv<楼-m3Y}M,C#9M8D8@C3H&ъp!j09NRs!7t`9)›اS3 K "i>=Oj,$*SRE! )v nOjPǥ-@xROAMȥw:R<z\AғFKq<*Rki VRakdd VD#:3-Gg^!9$h'O 0 >H¢6p H9c<83Nnsq@PHo^j 7AQ9.̛l+2\s[DHw 5rY!{^*F*b ⚺)42 Z Cґ 2pHNҴ#0$>.K۽q֞J]NX9 ASB\X 8r}EƝ$Tn̂&=*cwp0x8)ONՁ$sP4d7;eO^ 9@nI5dI!B$y9&*TRҁ$1YbPө-q)' X"j* Gn>f[S ݏ Y%rTrqV= 9ZE$PgV< X Z[)8ϰ'\ekK .[*3\y#FHֲCJvGsN2qϖq8sy$2$z\.]m @*228oRdɤlս$ ]qܑ˭E',Mfɮw4NKV%jLFIjlq=JicQYEifjucK4 h**ڜ"V-TD=(US)$tViv9TLIj!pbUxc4 MZ-c$r*UT;UZB8 Tqژj[2Z9G#w9ie8U$-KH$8U^\+˞*9aA7=iPMWvjn+ٖ!VDGڝ0&eV\v:8Y5IܙF`S׃HP5!*5524Lf) T{ӂRq!0j9=jd=*~TL*S)"QR) J{/zt)N=rB\)`Ԋ6\8JsGM0Rij:p8$U⢐qBэ aIQUk]Q1i`pF c5Qrj^F?P"3ʨ%ML ܂v*Ш\5$$TnJ@49*85d* 5I$PT 2sSTxZZAj㊯(4EV D´L:(=hQEQEQEQEQEQEQEQEQEQEQEQEQEQEMIh(((((((((((((Zpb*E5,a z&8:Ԍv;RN=M ⁇CI_z(QF(x EP1GJ ئ1i;4ҎSd!1Gj{)&0\P( upi1֞qځ(7f 㳊3IJL`Ӂi(:)21FqHcF  1@ P1II`<4p4=L/ih~hA/iC:CD ttÕ9OcNDP.`OK*c2}i6 بEjRzS|9&ȤȨ,W‘h+@cO@GFѾy+B5GP6 zzqr]8qC#, 5 *}MR!erK֍9{,NI5fd`x<ךQ*Zx :õv>_qNIgܜJ)ꍘ FX:J{RH'ccIGQWb7#SRPIHܮ`5QFdsS)MHRPs8VPrSm IDڱ.&|pQf.ISQ5@85]3jY/?-{dIb \g y]< ,s>N-G9{V 0 srM" <4+ENĹ6GqH@0zn"&bMLW4.P+*4s4rJ">?HX֩ LR65ϑ֛B%y*H9>3P9XkRgp;(TYZI< P5+>{ *)Kޚ_4E]9y횟$i2(Njjrh iɻDJS7#jFH"+_a2dU);-֗!)(1Ԁ@fl柷O)6M# {xi #sVHHxZBj#"հ´"!TMYh2d#($ҡЊ -YqugT!ZVȥNAtSyS*j^ULaEBFչVqkdCZ aPʹ\ԠE5T]DQqP߂jbK#=i)!EPEPEPEPEPEPEPEPEPEPEPEPEPEPbާ4(((((((QEQEQEQEQEQEP:J::H,}Gch= i6Iޑ1ȡ `J:(h$\q@qH4 \S))(sGZu4SJ1O81L#V@ 4:ӳdӸ`SIɣpvM(A)rq;\BA(Uu#r;TX ֫5 qSyj0uNәHkvhv8i it(Apk^bՇza}y( v'>8ʑm2Te`GpAƬ'*МT 2'?ҧE`ţ@s<~!1sSS1ҩ*epA#>)[cV;B;`t 2ku-؎~jIN9TqsTgIm$av0dq0{VU$sS+('sl'߹pF0b8dEEXn:=i`rA1W %o弒x$ LӃB2I@rvte5YIcjH<;~ (۩ϨZ@YHVFLҶ 9G0 \(@uzl KUFz}xO %LG&lֶ:X35K5T]qt~"OD]N1+1Z۟Q]B8#>[@a nBry{SПQ^kt91*׬194,s,UFpv+ddZ#8YKc9!NC~B.2ҏgiSs$/JtYF #V&lX(ҴҹD @E,l̗zBssx-lT @s9Oj=^[`@Hv^Fw=*maGblmWT{V - 2MKz03v,Z|E#͎X 0,3ɹzzVlcLsʧWw>[@Sq)ysGn*1pDŽd|JMq,Z #!Tw~Ͻ`)B#>7K<#;/Os{U:VMQ^W+6pX+FRIŃqdg=**)Kllv (g8Q1'V p*0 4'80U%bnFBiI'I36zR MR4JMui "F` 1cBp<Ѡ &&yǭRdTlV/Kqyj9Td'WiEXӓޣyU#)MKW/IpĀv]U hrir+>)4sM䌠m=Z" L =Fjv'D/FDbL1` QT5cf &Fr ht( ԄdT=iܨWNSژEKe"ICi(ibiy hR1BsNn!ǰQ.1M ;Qp\wjN٠9ncpiNFh\"-C0{Ҷ1`GQVjdR2}qL`d93>e3* Uk!f*0TsmNO23|O}O8BL?5rJwMXh J23ч==H!dѸ}F;r8dzLG4Q"(Yv` `s@IܿmwB> `jZDžH 8~=p~9OpAX'5zS5Zj̆vE*zS\`»GMX?}r+JhC=JhK9nPYֱ&x'; 5YݧzrYqQ\[,Y2V ҮTp9b+x$̀y0Xc<}+1H^]6<u:$Sm& d /RI#'1II]^qzvjsZ\O~㶒8l;LMX4,.LPBϽf`gخ4$Nr0= o,SkBNo6k/Q( pOcu{EcnUV&`q,=+]-`:,9^Lhx+t"u׷Po[$0> tTvccw皎kr  }ְ邲j/Ĭy;ڠ^#](UUڋԁy=I?  H &@^ĜA +h &%LʠrN2zzw3ml~r0=*j-pq,DHrG8J^0%8j P N;@L[Y@'bp$jЈ5OS;ud'I$Wcq6TrN22{Ozb*H- D[xZG*sL=ivw'+68 51X H?8CX*O0$z{{<`ҹy=Z]pTsA}Odp*%FG׷9PGpzP5,9#P܀j7C ҌB+ 0:mcT.Ek^&k:a=.3.Aɨ(REWa+{CEFPLUĖBzԐ(((((((((((((((((((P PNM+çEPEPEPEPEPEPEPNp z@<*4)4'zCP8OH4Naޚ)Iښ~8LqRcN&؈' qL0lǦy*X'K:u"1,Xq[E+aJ.;/CG<`t<t2h(z3RR"Ѽࢎr@69A[2<D*P@t=].$b G~;*Vi=5K@OC5}ggYlW8Y1 GC@$?8#l,gNԎVFDStdIc!'?JRR8uIZ궆4p?x gAyzI=~l|71uKg@H^?g.[|\Jv9 ze^y7Pƈ['jk :GX3T0$YJOd\aՖd2|(<EQiwݖbILL{fH̍D|1i=ؤ EQEQEQEQEQEQEQEQE妎 NJjQVlA֤#i gAJ4"Ԑ7;i!ï Q/'4l(`SI&u .hFiGZ@)qA<ҎE4PiiH%0 QIJ((i )4bDRmvvӀRaLPLRb1.(0b >}>F+at_+L{#J[0[ jBr=*`W#6D Ԩ2iY✫J.5=,D^%X0!;Ǯ*n/'n1\ҳ.+b#W= =]Dݭg[d2$cg> VnVKIHĊW'8?jPlrICWmX)si%f6^f6A:a qZإ9(˹Iߩ[|cG3;6MY4+-\5~,9ukͼWOulOE16Avc>ĀGIn 5L@뺽oq O#]9(hƬIp?Zwr ELdd}?ޖ9 jΚVg=NjŭtS7HkYF& ϷO&iaӗ+R$MX#ܖ祂8斎|2{rqf۽jVEvD<@8eaA iIg%rNjX j(%6! Cn0TR5CJN~5nȔ2Ddzm >@\u&&pj8R8?Js c/֫o*Lz*B qךqXZN+)6Ƭ5.aG Ȭu @$vmw7bYnY 45M!5j~OZW.(㚮5eOChS&"Ns8 i*,J 1sN Z PH r B&j&ZIHYI>]}k8?rZ; Md y7F@ĒG9LՈV7dExGЃK0#О*Mhw*9Psw;<Ǐƚ 9mbu`sOJV ,`0~ւ#@cE!9z6Oiⱞͧ -Q`׏Mr\ֲ#9b3} QEeCJkA30PJ䃜_z4rvw#l0?>{V|MbuX0w69u: gVpa̞=3Ig" Ūi:l@H< uڥIl7.OܮD2 0.319X6?]6&c`x[ت^ZsAV螧xx'd#yw:{`o)'xk;|R9û֐kC]w Vjp2rx?+Uw9 =_J^V3ypF*ORA#~@‡zX]I,>Xpy⦛ɷEW=3SteyQQAކh4x |ҞR1ԟ=Tˤى e~#@xԃ?%_]Uq}HYa!}?j*@(FA uK 2Nr0vr=jޡ1[ ~e+e\ AYS\X[=9!){0 1?A5sCX zP@[Dg&1]ȼ8 iq{g JĞ楊ɎRsI݆;Ks Wy$a.rs,QAJط唃;o ;@n:H#x E=kr*`"^e8˶EgМz2ŘORNM1ȭ1"Ľ}98*L{;u&1.9NV T"Ƥu{& 瘒C1VdHY9W3QR=zInNIlvB@p)PS6ނ`9WQK$ʹ 4fO'*jgVc<CCqɥ4tɥS"Dzxn &sU`$+?Jh>S9FR䁌= K@ A=AMXKf-m%N~?ʕ#B2sӏ̀9qj '_E,%rp̱pjw`>1tk)mXI/RCk&R3A( 3`ux<}=*qK#WS' 8j\#aV" n\c#⢟KazӠRg':bNoξb?JVOqgmsn;Ң 8 z`Zb֥$|gh=*AU<jV^sh`ۣ'k0j7&,J=nޣ! 嚣=@|e(;>j5fR4[R1w#yhDa 2yvH$6HVfLa\2EVdWcK $3Vl;B=/ڹ*˵!eF{7ok~>8lZTX.$?.ywhEY2_0iz$҃ 9'95Iss2F1 8W]yZ#363>BkLM?M $]HϿZm.K_i22=gUX5%~R,G^ IGޜ$v$g|zkܩQOB}-l{{qVͿ:G(:` knWVV,iʪ$u<L@`vǑz#n5(m5ig^sN|wG @<0qri]Ezn2JtRA`Fra\Ŷ ʶmԌ +wOֳeg grGƧ\6{h9L:NĐo˥H$f'̇s69`ަ2ުecQ=)qn3ǭ{&fI mbJd/Z[ jml@3I&%xҙJIc|DE>-mwh a=?1ǽ'ʚ5ͦߴBx:kvudc=au-4*l\ZKoh$qAu(zGsIZkCV6%8=|ōdK?L\hIY8=?\V.ܹv;"KXV$WTܒ5f[_kl~M.#:1vk@d8Ƽ@2z~:\5 lR{ߺ2Xn 9/,'zdu3ī%Ȟx|벣sʆcp=;vZ#upX{TEmd?Z1[ސlG?Ξ_XJI'>Rx 4@P8zT$/(2S'lk[=2 rM=h=`p79#FSHo%G?Z/$[[O9n9>-U8A0znܓLY%L3מ 15[$ʑzԞ݇+Il90mdb84j7Ku24#ؙy#OCWnK֔'vN;m-nVBW$kn>gj:„)r rW ijs+'[p 0fc_}|"|`k%SMKe2utѼd9_acM匭ךY,deRYA 61'df݊24%ޫRk]t$ Cy_ҞĶ5md{ڇLb)FtxQ^KPJ[V;qSy 9sN Uk K9 z Jg=)v&!p@*LtXjx*Aނ943ֳsWS'5]P2IKuM7=j6Ƣ\ij3rSY܎y]yvjk{9'< ±c֘n:;\Z',lRzIaG(cUPpMDr{ 䎴(1|:fyAT<ҙ `+JGzgIdL5IwӃ*,R"`d=sNɦO1E<)4*@1=O K*AJR`✠楚"PuY _d$Ug8ȮET3IEZq\Na"");S\wJSJ[BHBx!alFqM Lrj\dfQN+DLLYb*88'9TEf0MNOLr3Z-+b԰50X`j.oOfsTr Ib/[ >qjR3ҦjZ1IksrEeH0kbrk*q+EFjdj#]q2zEB (%\T}HЅGځEP ((((`΢`΁*(Q@Q@Q@Q@Q@Q@Q@RPEPEPEPEPEPEPEPEPEPEP:C%^AFJ.>Zh4x&9Bq50MRBqH7"iqH)TjB)b#JE3(E%8@i)Mq@Ǝ ;94(*ӱH4RbQ@4K@\SAdPp43;և2tFO/iLijtH2x+ؔc4F* '\,XV*U9cf9-1OT4o]4=b5";BCJ%>D\K֟vb'EUC)9x*Y@|3Gq֭$+DJ91_*SKVos֔NAifqAqYh9#=i8 /Z.p{Dwe'<)K5Cem$yͧk|⛑|Psڷbαh˕ȎL :뢞3Oy.QK3@Ji*_l >'5v[L1S9Fi׺䶌h8AD5=Ni%vdpAӲ3eCEUfB&5c2pOPin O)1KܜA rGjS,Fh|ti==bx.6< rxNYcw3(;' 2~qT?]K"IS#۸kڵ[f!Lj3x֋&SUe7I 0=krp[6ђ$jǾtYT=TGP{Wt+FKM>[ sc׾xi3eȭfr ԟoJ x/Ngm8쇞:Bϱ$4d!y oBsRH*܃SqҢ$d\` i7`H(%{ USRX}Se- }3\-9`@>|L 錜3RCH]Yܡ@nL :úl *;} DW{O9i#F;[pO$?Cҳ|ft෹\k$P'08U^(@sC/mtcg#OE髡[# \L9 LGbubap77.߉8`%$m$%>p+[;t] Y{Ͼ{)$ PN@Ig!HR@OH4+[|Sa9TRV9Q'?JrJl!PH69SłaE#Z p) Rlt8 ffdy=(9ZfRzbmr)!XNzQJ0k T$ 2A搡h$șڛ`g/}*ŃҧXZ),$)~QSCFԶ5c,DGjbȫ3A[S9 VvRK`@ӶcOQKcDdMSSJ>k R(U#~qPе%mH ;ToJi8hd 殲zTMy(RO֘Nc)V5VV,5+M9HqQnhГ-Z& Y`.'ZQkWVM ٟE'>t&KC>N54lv1cOZ(=hQE*q BQse+ȑPzCaESQEQEQEQETZ< U YnV(QEQEQEQEQEQEQEѾ֛NiQEQER?SI@Q@Q@Q@Q@Q@Q@Q@Zu4S SQ!➧PL 4HԤ3MR)XRaESMZj7IE0$"P^) @9"qN7bJb LS!0b(v84(b@ S(\"i&!SI QKq(N6h}O86>vVF[1Ά99r5N+5` Pv{D=_P SDO;uFwg4cp'@*%}Ci7{a+  0P)7PҜ2i %{ɦ9`OzӔ*QjcFÂjeTFP; N.0_cq'&4 cr? 2xڲB$GhW$sVDaR#3R |žF8"5SOVEG%t5¹ ڵΚNH$eaˌT! VZ@*q(4ZHR)loVVQzT#f28ʶÒHӯ8=*} 1L-zт;3HHz=G_ªُ:zv#Mu!O$حӋJ.I,0?.zRY@.'V$E-mDaeW69aH;搞ޣ ;u,v)&N&<}1+]H70K~ hOUڧn_aL24#J ԏpzR`q o s`ʮ[OFѩFdGs)ZKE8PYୀ-;;cCe6udU#| 1۞{'=sR;DE<qG,Y*F`{hCpI?P<0(<)$99LM0`BO95.r]6$MA"*A3\ܩv8D@bv8Q)E3~KBAVksXrCj5H+YsHA%AgA%#it.i:mNL1TVfxz%*UG@M렒j3rHX߸XdF$CrO9qs%;ɦf9$H!jMX"05tEJ_'*vhhzQqүsښtg2{Te9Z DSAR)JcWLGҚ`Rwd`ci ȡN~N;S^S(B*M1c \&z Y*R{^Ԇ/j֋K(y9NsҮS!Wڥ:Uv`r" r:ri ZFq*![&.ARo񊖇pb)dRh.&(BE&4na9k2yCPqK+f|pG?P*>͐p Y6б(Iias#<עv,A g*ssIpTnO%?Y&<$rB9'R 2bZ(897QpO\\hR88 }Eun 1#Or $Wu8cVyr@Gj&YU;l9+c2zOdfF#֠0\}[mQZ$mڱkelw1x`G@4۷OCocjN'[v Fx98$t$%+ |{HzEvLVza!9VS#ӃWay3N}vYX3UA\F@$9w[(FtA*0x]tNe_.v??W3o-TD31؟;zZq,ӿPإ %4̇*yG.ӞG >EsF1X푟™%SS0 OTg~H<)d`~tqt3sր9@rgIn`toǭv7(PȌ y}himlrx<1m'D+"S-l*ŷh<O,cI&UR@>a_J00F*\nnjANGTF[&$P=-t I@`d89b{a$~fMtD9s{LD9FzuRvsfnOQWg aH)r۞E7վ܀*M!;Pa6 JPQth@Iҥ.U< a1Wg)i86}M1dtDF+ҙV3XGү<8$c4JVOjB5o=1Hbhe61W=_)\qJTҥpi6)1T/<%qTeґM7; bjK`X#I,GdQpl 碁qBi3SiVq&h!BM֓ HM74iL-c7+ąP4b'/yIyzQsȦ{ M)hMǼHIPNC6&VZVG85f6EDi0Q15)9Z!"%FZF4kD}IR)!T`H4/ur3irpiSq Uf8j9 &Drh+'ARQ'f8Ut“".=LՋJaYZq/fƊ_3ؠiM`PzT ((((((((((((((~RU8ϸEQEQE>O?ʙOS(QEQEQEQEQEQEQE8S4t8uO,*UU׵NR+Z@7R\fP^`юiSEH-.9<'gm$MݖK:A=?T>Q9M9ۖ#5wt&U'ѓ(ūEKIVyOc{Xc9>䞇5O`@wd\bT[ܪ,#8`O\ uDVB _qR0\d dq+&{uf% @=gz"y4T $j+'-p@#֠{6ivDroDZtA8aE&v>DA8k(Nzp99U.5LO8V9'nz*t˥W7g4ZQ2y?0p)X'4ߴ ȥYO ֏ Ku;Ь|s]qSruYY2zS8_.zF zP&SHc$՞1̮aYM4䃕bah44n*" *FJgJ&QhsaLUL"EP(+)CލQUl8Wv:S|[9#\er:SXSzT1Fhc*&jsH!Lg,iNzfMl曞 ; \c>ZRzy}+9E܆Cο9#fQTn_5tS4LjFcOZ(=h$(((((((((((((()~i[}G4_SIN6(((((((((((h:JQ֐)TxSFxc%&<ԀiÓLN( H 0qK֗bSdP`Ӂ 14IK@ :HEbQFibANi3H4鹥4@ \isLKm-8\E.iffFh{St_+l]#\}Kbc?_h{7 IF?B?'T;ӄ-&{d`H5>zib{H":T Mv.\!y"U7'4hzԈ!PfUɤQ'Ke$928>8FjP.Fj-"'vV$qRƊAW#B 9sl\rxZ)UqR̥" TcADOz<Þbgvi}t0bC3Âr9yϽnlޜ:4`{ӷޘXe75XhZX<Z+`I'jiMӶь5v h=ɩrF3KVVrn7$gS#\ /qO&Bnw(bszRPr <¨瓓R,7p> "VOn99Upf.Y9>n It:E"xGQGx=?:0 5mI ]H$Hpy`HYDgo\H==8ݭQiE&626JJ`X;juCzZHNvdWWiU&2i#L2 A*;FAND;XH ֕ѲFABNFEsrкتF H w$:r{Y6w<Suu j_{%F3Qf#1x4Xi\F qUl4cE$Ozk;s֩+бޘCULuOJ]Xy1Q4XBޢ2 LcUݰO5J"r$iE" Wf49PRԱ  fy;0m\R0Ȥ (߃,@ (wS)jlHe#jXU;jlrHfV{4=)i9 H`jC@'"yQ&\dwB3OI5<V%{S&8NqOO݂+>jJh8!*ޏ\TZ*;TQS=s˟juÍƩvRبiiQ(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPNGh,mQEQEQEQEQEQEQEQEQEQEQEuc(T&xy9 & 3?5*ECކAB2*<㊓vhC !<Yel (̋޲085H$W:-|>*dHX`y#ݶf\-9NPy {ˁoғwD8,%(# H$&pJI$ v X95W-GB' U#5 x 9jJg<&W*E7#5Yu檼@-2z cXxzTlҩ4f!=jC#Fҩ4KLýJsU")4M$UG֦G5 yIz&cր!*JnGJWGZqcFJPl{ AG@Nd1WA Nx44|TNk#[2Eʊ kT&9ߴ4.EQ A)؞kLwriQNȆ'& 4E5) v &M4>EPdr&RiJ841ڃ֥&iRj"iAԕZH, g9(J347cA 4qH#84Xww^Z^TPܜp;TlTʁYsH4+8šb3SN0YQ{\AVg$"V\}dEDUnzXsJ9=ḥU4F"QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE(KMiRԪpE EHԊzT*zTyhG)V=)!isNINF1@1s=(5x qJ4HiM%E4ii٨N~h&ir)RSL#KGj(M%/ZJ`.h .j<њ,"Bsڒ٢)vsMjhKiIN,?_+l\!#\m}]X0Nc$PɧqϥHl ;=H9?Z`14ߘ9xAc@M1,N*U#LkI=xFPsPtNy⩙r:O.3IŇpj5Ze64/-Ap'f*w͖\B!@ԓܒI$ ǐ$c=oϯYLpy1>sy␓N*wj`ʊDwP\<ԫ'=Yh7>M8^[I8'?jcA,9`ie'S p;p3ӷCR!jynȕֱT֭dw{ʚ OZҶcYbCWc H`IFv5߂]sOi TeW5qwV2/>mz =jHA'57h| 1+})1i9ĨS:c,W%O#L ^AZ0 zn5-(ur=W>̃*y1=Œa늞TyBv= %ԅ<ƨEv| HJHك۞*\l8ݎ. sA .s,i8&纜**O0hw+2jŜUM˩MQ2y\c"ؓRr@q0*nt0FjHϚjqM'1\@9Y Оt4ɔ:*sOMRQ! sFhE"4A P5}##EGVn{ R*68Y$@Z"2psFR0&*LR4 *UNx Js4eMv9*2E?9<rx܂*'^xL Z@&dBbhu`ҨbD2 0i K 9DG1RBhM ̊q5B'H5*<ӂzRQlr &MM" Rd4ҘO4 1!,TSM%=PVT1l0rWfz vpqTxs=*hšB>rjœ*3T?p}IJ}*J~©kX"$S֚krQE((((((((((((((((((((((((((()›NS)i ziOZH5 CEiNSP)qҗ #4qB)isH@)B(v3M! \RȠci“dJZAKp4(S"Rv9ӰRRfАjBh!I,!Ȩ`0"&%W]n?|N1]}?Җkrd֭YGYf~sR(JG* Զ;*T)H&&(l@aDiQ3r)cT(z:wgR 8Z qxO4q}D\M0$1Li6,] á˜f)]mz<4L hJV%X8+)^j:R;@ǰWD]& BacTs#Њ`O#&O;8Յ~n2u5Q%p$`ɧ]O RӸx'fr 1"{yAPFёLTwo5aR,\ҼTh`Q$p*VwS#"\M'\Vxn ZxA0jfD+( ,$`cŞA^fozҫޡe $|oAl* SIjesLf)5mh riRfS =( 4 v)qRlHP1J} .zS0@709S=EH'C0ob[O^E]udT "I0] PB1֬**[Ȣ04:y-$À0i"% ӳ;Lx'4 f,qU5I>6´80֣'^vD);5s iBm uhE Kkj6) rqSԥ)TP)48hKprU⧗$B 5YSZOOOʏzlTWB9U)M\8v rk{e!aEP (((((((((((((eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJw<5o!4lr_gf]xٗZ6ܗGͿ%eLJҍ25fCiY俐?.J4˼LJl}!46Cj@4˿f]c6ܗNٶ俐C3.LJԫ^cO俐"idcLJӿ/?b%hXsS/``Յ(R)%@ҝ) J{T-w5DO9A=*րJAr;Aʚi|E~z{ԷXp943zJ tpb枊IP Tb DN)0R@T֤-)9Xi4i cZM0LБ--ylaAbBH@Vy $I'$54OS0GPI?L+Bj~j={E<3TE֥F*39vbM34ΤgTFGV)N9 vgfĊy0[jUeb06 <5p֗' ,nqM+H8iZIIG5%@_&gzh94 ̑ES;*?,wh*& SzS0Ql hۜc0jGcc&ˎZAv ``g{8B͓S"T A"bT`@8~'(Yx4B7b](g#r=Îp$ dV3j$园JMZhfPF\g5aV 8Rz6`WddT=jY$`f~jAjsMYWeմ|]ˁ1HNFjԁPArs{0r*Rj6#u'H*8(ˎ3UdFNsMZypF MAPSVvjY&`ˋ9=d*pNA+41MZM\́ #!= !)eyhK/cgJqt|Rc%s؄("A9KCcF&H_+h2y ?dtc1Qasi^'*>Y('pœ.PZVR-@(s#Lh]|*=Aq9n0#F 4 9>C.b)#&R{L뤑Pa9wѫWnyQL#(-Mm쭞G"2NHbQEQEQEQEQEQEQEQEQEQEQERԢ)¤`)sIK@ OSGN&L VJj0y4Άxgp4)ai⒗楤4GX+=< UIf$i4\rOZp:QQ󎔥$9ؐE֕B8zsEH|3UN1TeNbAK)X\7@3"Qâ&x2;UrSː9AЮ&`h.I⣑@8ĸ5V!2c#) MR8\R^iJ_&8I؊pPH ^ 5\ph @=#"'CRnjQK[4Xs8E. 1=iGO\ևrl 1ړ )A4@84) r 2ΤWv"S⫺)MyǪe7ccjgAPբgJLfă49UMфHȨsS 5BvIQ  8rlރʓN9A(ԱFI1X8+HU4Au*ibZ14psNݚa98'lE1)TE1PAOB$?-Bƴ%1L1Z1(dQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@⒀S;ZLbZA֖֊(3jRr!r)PII3KMȤ!H^h;h11A֠nr(i'LHD4isњ`81.i҃@ vxҊ)L`^jp2)pi&6ҁ~))RLњ@wЗ4j j&jC^f9)^a;R T>8 Q4֣/Q;*4f1nDOH梏*&iC2@-HJ^z1WzRT4  UBJY+B͑ljI<;jsNiJ21UCpz4Z"MDɧrl:GSw;ҿjbOZƅx5&sZAܴG6sNN Wf"֨LM^Th3j 4lR #2 TqɭS%) TYHxFjZB2T.tg1"PdY:JӊVEXe +T0$695 {B@94 " hnih\}8>;|]ԫ.{fM*unF%{GoƲ_z% 5%MNzT. *r$XOrz<(H`ѓAqTƉ Tj`E- g4qPi ҕeAj9)I ۏ?-̯i@@1LgPp53ǽ=]C+ڋX+L$RG[Ry93t9ϥ+RZU1hÚbFJMb@fb!ך]ҞZFR:7 d62G4 HԊAi;ΌGzPX r*-MYKLv*`EJsSeu3 P)HmՉH"qGI2+0 )X{;ie845VBA $'u"3ɨI4MW*'̨dUV%#x9W]h[[1@ VN85<ѐ!ȨB5$c(A5NzaP 6RAA=FMKi1!c44 蔅qU利J V$PZRJK̦ښ52=SO= [27Cte=.ų;F& 8'ҽ"Uk##K{ѪؕnWz}ŝܐ< @6;zS02^G]PJþYpˏ\T.UxdBLLCIL g*rsRʈ>E[=8Dsإ5YWA5+#ެ !q  UjW>[ EWPsTjȪѢqe8PG UpGV)FN9Ƚw#t4`84$fdnƩՁi=ezEZHEi=*2`}*2jlqcnw2  ٠84҄ FKҁ߸ic pt" C'cQ0Sp{A2pH5wxqS]Zd`]2*J@]̞ FIfIɤKkb zR &M8!Z{BEDQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@9AbG?Ԑ#@":( (Zz6ZeEhqZh\Ȫ J_iǜnΛ7LbQ[0i6OhGUaT'r3ߦ%Ɓ-@e݊D!P6s@&0D]]QD֑N̐0^0\7^3|\=ؐ%aM 9&R^TIT6@adc=85-Mi=RKr' "1(m&$ }, p7l. '^JPjbWX}X)~M@r?y?&h)>~M@pR?OɩS}94վ4$y?&ǼR`;[ing8TI$[z|GY2EFYѕRᖕkeu{pa+rU ?Aפ3+# J>X<3vV[h%a'?J4%{59撺?$y?&: ϼS$"kOjC509ut_)>MK'SϼS'Ԙw.+ϼQ'ԆsdRWJt{5' ϼSi`5;OɩZut#BLǼS}3SIV=ϼTWM]Oɩ]' ϼP4y?&G9ɧ]P y=o`[{X t9L`2]q.4l 83f sL/r+dMjLMah.Di"F9"MD2OC``E=r 5 <j.RCޫӔ,RE{jH4;H\*#Ƣi{gޜ5 ;0I ︆rz&N) M܄vBrrbA=@4B8$R2 XsbĎ03IOQ3#'QO·zd7E-ҵп#aB PAKc44 ]'< =@"lc"I@ɥ&MKdM&m i QHhRRi1*ȘL4sM5QE ( ( ( ( ( ( ( ( ( ( ( ( ( oj:ohGEPS-`+P6{wyw45m I8$>q\4֬ihDrpb< z IudҴP}bc)VmSK) @,~nxnuYΠU%i 2O=>Så% ۴eI@@Z 4ۋ;!s/ڝ 2aT(}Um#Ӯa)dv;JBr0F8Q@,e[0ʪYY6sTR'Xm|Rݡchmox<\$w*?3e\w)fsꟙ ?P**MǪ~g(ɸORȮ YfS-&5b7<pIO<Jŭ-،$e8c?C@8֥obrpH8Oj7$uOIfx *S_U _시O (Ks”i7?~g(*U ?}S?JSe\g~g)Hꟙ HM]ʹOS6R-L/؟?_k1]mbyFbnH_2XsJdLb J:рjEAw)!Q9(sip)Mi+$fr*d h#5 c( A5II$ =jdԐr͜T6"Or[8. bfb FXԎA[0=R϶i( =AsJY4PmToM>Y4PmToM>Y4PmToM>Y4PmToM>Y4PmToM>Y4PmToM>Y4PmToM>Y4P[opצ[oxmTϭ?V@ @koM>ߓToM>ߓUEko>ߓToM>ߓU@:E1GC=2}:נK;& :ww,mnZF,I Ifn͏%85e"4#z~ORnzUgLaB`jvo[oˤ[oQM>ߓUHf]m*?+{4f[oQ>YXSzo7UeQq۳ϭU/m?YX m?Oޛ}m'צ[ozois@_}m*~oɢ5[oQ>X5ν6?~Vuė3e ` @EZ8 mO\?~?)j?}t- ;T̙vzӕޫdOBsT-)$Մ\㊷ڡȩ>zQ*¨<( Rc4+&v x0ԅ<kT-`j:8$v ؚ䕔H=5Yզ4}Mk:Au>?ݣZo|?\=i(V?q7~n>զ4}Mk:OiMj?Zo|?Gڴ&(V?q7~n>զ4 7?MstPO7M(?AT 7~:o|?\ЧPF.&iMsP64c)Pr9Jync#@K3zv 巔IqЃZw~%7L;@A$5HCA NF9SNA4ӒriHy䚔.GJiLQphhR qO(㊐"aP8U&I]D;5i4ӏZi<fiAyTe'52e]$@dT檩z-\+9M 4i hi58i9!zbiW "4\SL,3CBb#4) R` {@h::SsJ  .i3I?M'I/>lQGROa@T0 kO<ȉ*Io eS# 2q}9hڦUᵒx&`@嗟| @Z\ Y!Co1VMSGT@YrI>գhW3[ؖ#8n0=TE.$Z,:dɐrFH^3h(((\†c8>4USM}*<0P۠rϾV6EcniNp`hjK %ei!rW8$pq8*QEcڜ,_Ooo qTU u*c u*c u*c u*`f3kL/WWkҀsҾ/W$Ҿu*\/W4}|/Wu*`|Kϡ_ʔT  u*|')TaATk'҂}+L/Wa;ϗA'sk! T񴏺-3塜40_ʞ ldi#\}/W CJ3k\/Wu*b>Z޾u*PRJ0}+l/Wu*kC@ϡ_KTgњ im?nxQ|r  -FnFO/Z\!#Q-梌iLRF9⸭d\ieX&4֫e@曃QfqA-!M&OҐ d7ja|wsL'5iN 48*5*G&[RS#{)1FYW9ATJd&pqRpET*pjmf+m" Oר@L2`#;! gˍk@y5Y4ƑU4M;T:Uf-@zja/jJRw ˚I"4Б%DAW#8*V*<젓2Z&hF 1)P+R&4Yx5A YȨh5i9$5]LաM'ZLUҵ6F1L Qqӈ;U㊕j,4JJi*qMCcPLO5t4&"⬸U"R0EZbq;S g(R)c04xsNIi4$ 'gfsFyN1FMoVV_[u qO o fIv}GTP;dBxp7wry33 #?A#͟Jm/9' F("v9ӥF6U؂0pH x{y*!cF[93j]:ٷVsy/nH.n!o5=1/-К-?1's4 ͢52i  '9#ҭ{O# [-&jkGgFxI4ϗUcAf:?5;;(nR2?2ugc<-v:1[qy=pQ{`V ep/I]+ol]#۠G4(dп K噏'9$uneαleNp\ʁ8ݑAAZ m)`ķ̍$!zy9PgEf3c%,0@+&GOXq٧(oc1j7"@Cr~^;ho[&; .3@v(m[I-,./&MMLc gۓKK|?mmnVcx ($ S'SŽ=C!ˁG$H4GgxrUq \ +?ŧAV1cc#$+١D$ X8'$~5sW]Ė֭!c e#$KYXCxxO$,G^32:4˝6=E|効 c?'i"qF*ЃnKuu{'&lY匠s?.K#I+31bI,rO=tΓ'ku\w;6[I*1V4=3Oٿ ]Hp>Z= "JW $H{>;xG6V9Ҁ-Zl A@I I8٫(x;]>h'id2YHV $ztuE9-$DuB}HvG+*8 N sH Z^=ؕfvh1$;=)4KۻmJ]&,VUOn~zb+{ʺA2AER?дqfa(mYՁ@ Ѵ'Pj2=b( Iϸk&7״l vӜdtQ]"𝦗=67l6|5igWNibݻ<8Ҁ8ȵyIU+Dy fFۊ;sy tAr`IA*%Xp=x?Lޥ8)%1 E@.@ذ2A'8yhvyFXx$#8#G<㹑PDGR $qP4 y}h6,M#m sɠXI$I.pz~>bGheZ">dΫe[fnG'v}f-M>f1{3淈ƪ#Ԓ $cSa +㕤hٙW99=to$lPy +''#zQd4 ) sC/kp]A $rOjȷ*U p2?\v=o$rL r0B< sR<[cv{3g2K@2f+bWHV z H@@#1ۀOz_2)B#%!q׿zؘѹbv1Nc4]@#sy<S_)1dr1 >E- r<иJ3˘j!1oj XVJT'>ԇ1ivt_+U?_\K/G~?ʦKF sAd>WjQڞEr5  $B TȦ⎔n2`QaN 1r:dBLFjV DkDhJz'4j'MҪ٫(*)GQO@iŃ9@ p3NgMBB$yO`r;qeaB}i(WCЮWU'Lby"e8.r*r)N(&JVeUS idDRbzS@ x=*e52 ycI֔kT.7Rȡ&vpT3Q`K6:fc@Zrqޜ5j>)4LyF=(g㊑71N5,BƧڀh@jrj5i&R9 gHLLe'4RULQKIHiP٨s.,;LϽ&iQf J9N_8yf hx4gҝM;S #4R0)M)+%-%;f(9ffLӸS֐M74f3@ i4f3M'M4@!)GX Q KB7U OB7TaN?/{|/X>/c269](h $H m\??kSt_+⇳`1z3Mvp4Ұ&( 9ҟja&N=hj 'sR8jx|wUl֜Ua&L;RcBۍj1V֘քJ1UrEhmUe49 M a&cJ@U"X&ΎA!Xq~TJ So=Ӆݷ\f>o?ci~o=1)}{}V?ƹ :[_Qwm=1JHu<V_?ƹA$ տNUE}\P(]J._9ci>o?cku{}R{}LqOSI__wڭ_?ƹ^iUM76_?ƹ2)@Ηv//ڭ5RLv^"|\QF(v/;v[}PS[x4}{}gRb:[x4}{}_- :[x4}ܟck:quo=ҋo?ƹz(UH.mE}c4␎x4j5⃌tΘ][x4ickSV/8]x5>o=o\!G_O_3I7v/'_ GO?Ɨv/r[x4j54UE}]\(#]Ov/rSI:un/ick:ӚC:&>,>o=8™37V_?Ɠv/sX"8}v/r8T.__x5杚Uo?Ɲ?ƹPic:uo=n_zM :o[x4i<_M4hGJn/7V/sDM0:ox4j5̚3@7ڭ///sPQJ._{}V/r)0GO?Ə[_h37V/'ڭ_4#UHn_hKHn_!M?Ə[x5w?ڭ_>o=1Etx4ߵ[_&:o[_>o?ck:o[_Qum=1Eujch]\ih]K\huj4}1Etkch]\o?chU\hV/'\i(7vI\ɢo=}~"3HhUE}V/sv?Əx5Q@?_>o?ckv?Ə_Etkch]E}bo?ch]\hLn_>m?ckO?ƓV?ƹњo?ch7v/sPO@ck9chU\%tkci>o=3Jtjci>o=2M&i}~"\}~"o?ƹI@7ڭ/j5)o?chUE}bt{}7v/s4iӛo?ƛ?ƹEPV?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?Ə[_(V?ƅ?Qck_>:o[_>o?ck:[_>o?ck:[_>o?ck rbڽGX8KlH(wgsR\j= 2k-#5(f 89\c ~76=vo۴dE3s@sEj. ̨< 1VωX|MBp#A=cnewӯD)'P x8##98t|,nd2`TPMq8dRN#E,v+mhmB`@$G8lqZ0|Lf*ѳHHV>`~IBXܱ@"c8$Ҭq#HpFI?A^z34fH$8I?J[Ck]G;,q ~tHԍif`%8qTk|jx4cެF@=㎜ j xPH|b\oe PAHG/KT1wK? 4N6;ʴt>Zo%ů l?s>muB{{&EHs;5o/P'-a#T~x>÷L"˴H+sՓI@ xc@փŢj})av?ǸҫxoFu+sVe8=NU/4+Aʱf#sl:ےeǜ\<2[\IHأB >;;上g?"J<^?*eRk|.FB;hci'd+%͕ՙ_Zc+-jޡr5ݬ؊GPJ ܺ8n͸IdqP Fq9-Gb3(+sһjךf)ZDL{95=A1!,POh4>ܚK 2C޹-SOK,e!۸t#?svE+ҡ! }TqZx+Ʉeȥ%ii 9xcӺ=y?RJQ@.ii(-.qIFh9N F8C&Cx#cC 6x4[ "~)b;GORqC@.)pE(q.0IK@\h4Rf.))i(4bSNiCFh4sN"@&isF)1@ JCE48QniÚC);v{Zd+IN !iaJB)Ԕ4REJPi(f 4S<3H)MHii4iM4CF)H1EH)E)š)Ԙ!hCM8M`!)JLPFh Ed;EPEPEf ӳM1٥KCi 4(%RZC@Qp C֊(f4PhӸXJ(E&h) ,QHhQEQEi3E 0 Lњ)QE!4f(`!(43L&m4ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQESe{m:?΀EPEPEPEPYkW61jmccKH q뚭}Rl-a\&.y ( [ď][O@ ; 2>z|i qhWЁ}zr 9瞿LW!EtVީx$^ ڀ`:],x~77N 8s^OW_Ue{f+q@w [wPݴ22H2zd|WokkqCc%”_4q1\QE=f|n_nq麄k C4By8@B ]^M!$JǽOR7V:D+P䴤dc5Q@,>'"mK vs88$g .т0ANk;x`4}Y 8N h~!}Jv>U7@¹:6[s2A'ߍd![h~1PԤ[c8U]/?}`#1#0s¢7mB--w}w$<3y^6㟻ޓLhe&;k8ۏXtPRJR+y $!*A !#r rKc[T#1801X]$kqs4bI '{Lr6~v93+Ϫ_{rAS`R()is@p@$:Nb tq}O'1iE6&h -7#\sK\њ3EJ*8֓CL{-3 FZ"ӶSGR1LDLI*rQ` jN)#ȦBcii ҃M=hFi٥N8RM.hsHhQE.hLSP"1M1 4bvRJ(\p~'Jy8UL@0.84vhHǽ~4nh&E)@RIi4E&i4(J))hœ))0B(!KI@RM4IJi))1Fhɠ43NSMϠPu((LIE 3M41&i3I(sFi4 Z)3FxAEPQEfLpJ()Fi)QER3EQJ\f(4Pf(3I@Q@Q@ }r?%(?4QHh&qM5@!9)(((((((((((((((((()p{M ( ( ( ( )@'֯%& U3{R (*m 'VpGE/}G(FF*u@U-b  z Ehnӿߙ7iogZ7ƀt~g97vtmZR0ƒ k1d sj̧ EPEfѮ2ۂH Vt_?!4IPuB@=\ON},oScp2Ojexi˦}2—._B/ c"6;S%T@H/ E_˗Re*( *oK2'c?Pjכc>}l40+dNOhj(~Γ N}ªԀ ٮ\@dڭgG?H "5`R6FF 1[8ܸ { /O)%~@ْ}?_˗Rxkg G@ԠR+RhiLJ"S GQS1N J@4\d\RH8bS f3JE!ҘE4b\҃M4 &hf4њ,KfiACpj0i1MsA34qA\@ "v( `'ڂ1E$'@4p(٢()vi0 J`(ҊxgΜ)IPzR 0Ӎ0@!i)Q( QA4P1s@i˜ 8L)3Fi 4Ӹ4!)M4 IJM&i@( Lh,TGҞ}OKIE EQI(4RPތQH4fQ@ E@Q@!4PIA4PIA ( 3A(њ()4\3I@ J)3@h((() 0~M<(S*ih(4Bi(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPE4pW:P4UtP ֒[ M ;T(G1E/? tUϳJ-nOLEI4- *:)@,pI+(;sqj!;8~תS;S9g87fhQ@AFyWțy?jիm1;Fz=QlLf L" 3J%4W#'}hImF+:'8 ~l^lOO{y: 1IhJI5 A9z?2 ǂ6Q=2rFHҩ.Ė,/ q׊yAwux[laI+ $*HtVl%Hffv+jecض @KM,.度xȭ *ApECx@.#Y \|dhKuݿOjZ*oZ*oZ:_ߓ?gV@OBj}EK{}GcXQ?p?p?#MקӴ? M,ŋO&~t(Ջ9\p֪֟€|nU%K?Tןoʀ1D`G';8̲*/RqZdZ٨WP͎?Pᢙ\#=]YhXԕO 081Ytv$.ᚨʩ?AW#K4omn"8ܠ4H%̲r8 ziMtBE8 C[ԡ?%QT?jHdu$ @h3y:~<ӚϫR(ʡ͸ F@C"R+Wuy 0O.$e=A ք_:c'V8 ҸvM>3;fkB䏖5ƙ,Z`IO_OvKrČg2FE_1B) p85x6*`xgTƓCGiȥ=jv n#&qCq^ݻޗ"<;iFc<潸\x[_J7qM"?1h@LW^E&)Y)ɚiE4 %u3@5f#[4k 9hkVY3@Dњi ;( (9<њ@rWX (4 qEus.9+"rY4sEsLWW3HNWW09aN p33I(&MubȓI('3]e&hQ]^ihW4k;4is]Vh!i L&M!4ɚJ  u讲rt;ISB=0?!@huP'+R讲@rYuP'EuRWZs]]Q]]N]e!'Hk4Q]e]eQ]aErtWYHh5S5讳4]eW[ErTWYErtWYErtWYErt 09F =mu=!QL:43ER(]e]eg#@u9X|涔EyCz\VH)b] +6IJO?@z##Fv=Nkv 42FO@TκLZ2h$gh?*fV7,r@?Țxmn.2`Y@ c늳-iݭ4hQ'w>Y8rrw}ɠU`AAR;kiD]w;:좺+ qFy? X5kW%md1ž΀8|q+U'xI5ky8.@<HL5)H-`CspB$3ⷭ}3܄\$w4IQ Ξ2eW*]%kh:ma~ }GT_`L` NҀ8P  uM:ټPI2C( =HIHS[`2[)Ðy#Lt-ź cSкOO1$Vȇ$d {u [Uܹm<ǡJű8Vv @q@&MZg2~UzKzcK4lp?_sG%Ax#g# =}(Z\;i^>HDTIj::Pc`pNWPtyg} 5ѩ*vKA ) $Oj(൒%1ԓPV#MA 2bs&3OKh:Qdenmcf`AOe峔1o2'9sM'XEo ۢn =P/U(?SJ аI2{}h7twyCh¢7w?ƍ'=XTPԕ&̭N_tj_r\)s (ig(3IcfVeRB>OuDYrǟIO-@jKin!U'[(!@OwAH0U{dbz~5b%UP8OZI]#2Nh[([20N*)$Ϋ1Tr7`5geI".\2FBAqgIH> ϭ K\C)ր/9 [C $ci/.R?v=.becU TS+> TS(>4/Zϭ/ր+^Q':?$*(֧POzM;OQ?n?r'r?#@T`G7@ ??GߕXF1@ʦ U|VfFOR> # UY%IU?O<1I{aPXͥ+$7'l`T?dy7@#DY+r G)nԦ 7  ,gV~f[1ES-e 0j#R 늹wk>feg9\!8gi4̭)lŎX}_},cIRi 3?HIV*OpqQQ31ZI$I=Izt.6Ì~=S<{T8aE!\G\:cr>]lm@)F?Zi{{VQ;qC#2N(Pp9ʂxV1$ dc?LҴ1I眊UQB@ {bB= 3Heic#f29{h?R݂|(0##5@PiGZZ#ṠC=S,irE CJԹ32iM"RҼJvٷc?ԙD>T}M@u٥

\WO`xo69narnOZ(St&NYIJN@ Үij}i l`sҸ(zox㶑B!FsjM TˋK+pS( ӰPR) Ve_IN2@ Xp-pяҫ'UdԌa|7 e| czX%J5@&"ƚ~#pc9FT| U-i"qבYl!23"eg:RH Qj wҀ$B 9 vRI9=M%]?GUsPYV(T:Uh ~c(ы}?³ ~c(яg@\\5nvh ( ( F GC֨@ӿ#cNV};?@p9N;sYP9UA5*Pwfs/Cj7<(^(*͵[vSU ~c)R!qJ9P4?#(ьr-##+>yy )8d8#259O/OjR_'4Ԧu m\E)$z԰!4P ʏ ʪQ@.??*?.??*EI,L۝=ؖh#YddhPYԿ 1g?RG*{mCu'™u,mqEOzEv.!jWk(W.0:dbq敆Zk* i֗o H}*he9,99#:Rܒrs9Y4as 9(t>R2+'4,ӼqMp&is@h4Q@8g֛E0 .}0qN0F B <5&9#0 k(4C6:UjrӟLT"JT!)wP˃LCKNCIZ4d\EQKEQE QIp#E-%( ni@ڌ BEK֝QC KL& &h!B њ3ILњ(h 4RњJ)E&h04Q@Q@Rv(P (43ER(((` (1i3EQE3I@-J(sIE&h443IE!EPEPHML(EPE`7yNioJBsIN¸撊)QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEUIcIzJ(L\ZTP)wn`3 FJʢ5lT=҃{n)(z 0|c! :vl+-OˌI!|xFFlG戦${{@G#Y7xٺ@UQ@p{8&MUzaȹ/뀀R1[ "-_km@ '˲:@ቯ%t-9|ĥ~?7F5)k)%e gmjb*rGƍÀSl:ݏ1: ʺf1%kYRm91S!{vhk1/["I[ʒj:nfDC$e%yde+P`XkR9~Fx@K>z si>͙ Mȩ5H%VVR<1fvK)e, ҜЄ]Q`/[EI-9=(8Y /x7OR:m %\K^B8@оG}{%~9;3mї7q# `e ވyooj*+zE'aaO@NA6[sXBFs:>÷xݗ_bF5㭜O98E-XNɽGXMM kIiyW9xwBf% s{j ^!t0-o<ٱܛ*HkҸҖʕR0+7twp0?L3~<-m_ˤ,[YB!pZ'ROїUL̛14Bd߉f5`r z"vt@բP70g$ɖD\"~3`\Yհ놺a+݊0!h@3sK]. ؒWL(muO]tO_`νl޼z,YneDZ *\?]q)եTPbD:'M<^` @caXxGp:Es! +'Nɟ}WDٝΥq{_'h q$_J+ h>It(Es]E*m[] BPKYe+ҀւL!Ot:'!IwGW-ať|pqxccħ%ZP-X;.5G0.b65'Ʊ£cuovZU )o ƕ R |Kup{{W-"t2sx/w]>DU32~qlۤ2x7p>J~FB'Wv v`'HRl۶'G( O% + AM uQ'>D'Ncۅ-&I:k!S(ʉ2Et&B̻G~Ο?Onn.XD"|$PZZ8SZɒCIù K#K,%#!5DJtWӻ W)[xh*-'yx()ˡ$Ak>g,nBC_OBǡc RJ:::Z#5ptiF>){* @RZCDzZbBs1P̟w;Xsl߻ ;k6gFmnEN@6$%g;z!۶.jWI^ī`ð?<\eϞ=b10ƐR 37M7XZ,)O;q/SPP\BW\ m#ڟDD,Łس򩿦aM M~ 孷btww {1-Zt14FG` OkXpi%٬$ZrQH}+ё M\gN%r3 VEH66S'LIךYwaHnn.J) }&RK}}=G 8~K! < ],TUU met+tt?on&R20'Z`a񃴫,'Wb0DgCO)lʦ͢RcGg.(%;8)r `b \1>Y3_t$Lz!9y5׉MKhxGT㡕lvfҕLˌ9b'a5S!1@* n 2R|H$ז?ʦ^}/A%(! o\>% 李(5>L OkʊJXqL ` o3y m`XRdv@WW-#>7P 6n)R !ɍ>pdSA$/dBv3a6TTXTdgQhpFh} te+* D[ ׇ(uxkPFZT +&BӟvI,@?bD.{è@s0# ." $]IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.lang/000077500000000000000000000000001411575327000227265ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.lang/fr.po000066400000000000000000000026651411575327000237060ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.lang/ru.po000066400000000000000000000066761411575327000237330ustar00rootroot00000000000000# 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!" gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.project000066400000000000000000000031061411575327000233760ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/000077500000000000000000000000001411575327000225745ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/CAnimation.class000066400000000000000000000035101411575327000256440ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/CButton.class000066400000000000000000000071511411575327000252050ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/FControl.class000066400000000000000000000052531411575327000253560ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/FControl.form000066400000000000000000000013301411575327000252040ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/FMain.class000066400000000000000000000327211411575327000246220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/FMain.form000066400000000000000000000005061411575327000244540ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/FTags.class000066400000000000000000000054711411575327000246360ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/FTags.form000066400000000000000000000037151411575327000244730ustar00rootroot00000000000000# 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 } } } } } gambas-3.16.3/app/examples/Multimedia/MediaPlayer/.src/MTest.module000066400000000000000000000023701411575327000250410ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MediaPlayer/brightness.png000066400000000000000000000027761411575327000246210ustar00rootroot00000000000000PNG  IHDR@@`UIDAThYkLe>N> S<%][ԏ[[:YFfӖf$@~Vkقִ֏1J0 ( } *|<7s?u=~NOa&3ͯxtrT¯USvZI+ӧ@=䓩7rVpB@+#}P L* nLa%$K4rúvX%﵍,mU~"&ۉW,;$ne#R~?`h9y yQeN ^;X6x$GtxV,uOf;67}L6"]sM oiQYȯyԐ5*N_q3gȑ{35VxKw,|1f͐TvQpܥ0lqnWܠ䥊It&P 4@y^Gf1IapQdN&_OTc8уEk"p6jT)}9ciu-rL 8xe󾬲ŝ@ohm Lgk̕:y=Q8,st'B.{*{'! Dm133y3clژqIyl&\i1aɑOҰ(Ycvn;.0Cd|P#i&w+GJj VX.&pZGL,&#BePڅi ؜zd@Zt)*b~7A Cۖ/@ 2* \R3H/4vGNu|s`^e*.gZ2#Y'8UQKje:=Z.F8t*0v_R@DBuu}"ѰVv)("X`vZ1UɬYy ʠ/ Hg @8 a-ܶ&=C9e*Pˌ0(+Cʼ En:OW5o /ȐIMXf|ɽ(D'ϐ d:<)f[עxg 4Y_F I1?cI~s8s)lzW KP@GJPF'%yCTr7r? @D2lSHn~'W Sj2\M:Eͨh]X -i3=*dH K4DeXWF.oB! l 'B<egL}ʧ8'l BLzP$afI-"ʓ-Q +M7pH^;öA*`:In\!s| w&pk3\ =uN@,wq#1Mf=_),Q>C5FjsЧj{]vW{d\ >5&!$eVPY8ؗ'Ǵo2_TjfA!Eҵ#."$YRoz6j $K)"AУ6^Z|t?yIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/contrast.png000066400000000000000000000024741411575327000243010ustar00rootroot00000000000000PNG  IHDR@@`UIDAThY[LUX]vB jPZ G1ڇF[5i5b|0cK$`Ҥ֦6xy@JS,S V%̜fgggܾ}9gr`р8bXo`)\E1?ⷜïaSľgK!Or/ӁMc/Ӝ(ܴ4QZ=n5#A\,fPjC3;EKיbin|&p0r#پڜg8L嗾۱S|'=vJ8b?7s;"7U)c壿%G˸ 9'@ zk,AkA燵.5/e~&QWEv\[cMy1) c<'v7xV.6w2K:UO^ O˝N in"K/?-&:u R| IxRI2OJ@0P%k/`[/PlRfYZ9 >`-F4qAa3?VF"NZ0` E\ثRsV[C h9V(}aY>2{¬W'Z(uYQW*oP13 f:eފ5 LW0z^LV(X+UZ)=0 UΩ2i&*/wDLit' 65V"0lJo`8R )!3$: ftfHᲙ#^}e~=?ӟFvNΣ_۬YLVhþ% z$SS?p4oq1YL= / *%//HP3ǭf?w(cB_5'm#! ksr=He 1~%!A*fL pt$7'7;\@rۅA䖈W69l/Q0YuhJN.Elo\ $$ې1i| B2uy ;WE}C Y`Å] adIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/eject.png000066400000000000000000000017541411575327000235360ustar00rootroot00000000000000PNG  IHDR@@`UIDAThOhTGǿo4U7jShM9TA[b IO,%= =y/Ճ =y0饥T*=T$!шkh4ُͬdK~eowݙy'ͱ܋SV{k|/8]l';t5~fR?u.d6 tFpٶ0L | oLJ2k+4~A ,m$L )$ݬ}wB2iZH^( uh6&NpƬqiB41f[8M$|fmq̈+ⶅ9Oєeg 綅NJr/YK3 >dqݬ!ㅨml4Kߥ2+ܵ-ܤm3JY:Bĸa[yjҜBm)go% Q% çssa)8e[xŶTVL|-G cjFI ^g m.^Lj*{{lr)"`4d1rEHHQIʒwNR.p x(\4=3[ָ׭!^bOFN5N[K, :#աΈ5h9=рUo<]BsK ,6\ 'y@GTۢCSkL7w,ӗ* ¸VxÒK'&f74'`oi@;B) I~W(끿2iȏ_:Kh1?s & ٔ/CT|Kx_hs:=$6 -y v~R̆Wmn'/SH^B0$^"~}Et<>^5]'Ç8ʀ20O5RgۙjDM>z #kbZIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/film.png000066400000000000000000000013641411575327000233700ustar00rootroot00000000000000PNG  IHDR@@`UIDAThkA?[4ۃ=(* EMNRTr1{xIC{R-DJTQ%rH$ ^c!ze7yGZ s,ğb-`:2?ZE(?|Au+h_>}r*S0 P5r-\e l=t3""QdTgWcXw1'̣ZX DmGY92((&׉3pP "C\bה'7(_]Sr?sdxm.W>PԵ}^BF`xJp">`/cyoLBQ2ubrZ'ń6Pk< |5xc<6|)lrH8>dQ~~~qJƆB#j`2dRR@;ʉݮ8^0|hr8Cz/z z^Hs!O%$AiFT3CBq`2&oM ^J7cjcW\[&g1yn2 Ȧfŝq&^,DH&eQvzѭ>j7!yKIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/fullscreen.png000066400000000000000000000011261411575327000245770ustar00rootroot00000000000000PNG  IHDR@@`UIDAThKTA?`Qn9 BDq!BB.D!=XHCnFdޮ{ۙ|簿ycffgg!ĖKUT.kR ę;RRnݬ&{9GPmΡ[Ȧ~QVYL _[0% `,@Dݾf?-f,P{eOIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/gamma.png000066400000000000000000000012651411575327000235230ustar00rootroot00000000000000PNG  IHDR@@`U|IDAThMHa)`%(=hRu ʂ>)($@- -([H]lv^uY흡\wgٝ}TE3Hv$&oϤtBr:iZ3wDk]g8$GxC0>yK5XI-&fيNy@J2sЍ^JiQ?,~ 6X# ya"3F`r@#K t{mg CqF.}|J+C1I'I<1lkgbcze)#޹l;WLPZHXϞ2.B?:N=h " " 0va\5~F覍n3e|e< q$eAZX81K^0,iY @Eտww%k-[,X5]r[0cTn@fQۼӑ@:&4uL;k`w^5'hք`g8(mLn.T@{/}P[]uX?4FQ IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/icon.png000066400000000000000000000047151411575327000233740ustar00rootroot00000000000000PNG  IHDR@@`U IDATh޽ypU?{_K!DB"bPŭXƱ:Ziݪ3tGvڙ?::ZZ8ZD ai6{-/fM^;~g eIujzj}6q`7kuVfI5ǞO}2X5V֫v$Yf׬Ԗؘ~pŵW;XkCYmi >໠j Our. 9sUBQLz1Qa(;k/ ourXbN[Uӭ}yi_0<Њ+*6($ajt߯wN4B^ciعRRB>%$7!P^M`9vtM 'V{5|9HGݿݭTRETQ\;:ڨ)9\/̐ .=L[>\ $D?ߡ $'B?.f! ʵ#3 b41q8|[3(! 4{ilsv5wFj)=J#38(oomT3*f<.p}fٟ/LQN#p;Z5Ӵ=a/DBa,d! R֣O;8i%f`7Ȧ}'ٳ#֭0n8nX&1,LLlNjԫp֚')c0I#`b)?YJ`+ *EgV%,bGxp{X]kOv=6 |;粖VU]: 4X qus (1[^J!zVq+1!|{ ͔zE#b"6=kQtrєl%5|X Գͷ/"=iͳf}=lCC иD0V߅<{X w(^3v -A0_-/P_iB.q3["Oaj -lL 6=oү  t0ǃ->*<J&0vV qEwZlNM&zMZڢ'E7X$foxx&Xރ7n6ZTJ8Bמ3+3H|^-Zj.ir_.jnL<+Nu* 퓢3]Y!`#!yHm͑NnX0|Ō,#/`΄gEZ@p/Ё[X qWPc2Nle?$# ST0 G}! )y?ﳕ 40JNDGUcp=j=k<LD 5-٦m%`f ?5QD }zG'Ra#1ĉ#Fq`Y#Υ|:Zl&#$'\o5„a {KU/M.!t$2(qߊX.8SeIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/info.png000066400000000000000000000045551411575327000234010ustar00rootroot00000000000000PNG  IHDR@@iq 4IDATx[kP~OdY؅&8.*h&bV6INLĘQE ij4ZN;δ:VCXtp ah#\\ ň߷;s~6Ѹ@ǐ|dcI=ɟh'|dw+.Nk+H! > tuuիõkrrVsy`6}i?$%"><-sYʯ'O"sLkJnYYZl Z?y{ٻjⶳ,1D{{8⥻zS|-Il$O(sϞ=;Dxޭ [dePvLijj&XњC(Hhܻ!VS ^:e.x.$1/c/~?j 9Dn(Xr?G-`̪Ν;!oQ^& <5ebseGRl5DX7Og^φ|38*>I0F=D^?'zoAYIplwʷbƧx2NenfffO[投m؇%+ & YkZ?5ꔹIIIZ ~$0^1OuaY/?yyyZ#8hG ᵷŏ+h B裏RT${JbF#JJJ''%%%R]y#Iug<`Æ Zֽ_𼚦hD "sAM-)))~j̍&!IMARIѲV[[JXWqj"]- 1cƄ`X^ gaaتl_tlo>` EB=pfhHH|Ӄ<==Ţ&:D=qݬm8|ʲ, Xer zT~< q:hhh@SSZZZp8C||<222`Za|}4Uqy45v 8H>R "nPn|Onj"$l!:d|H= C֐w [ O(^ xu # Ʌ"X &2sgι\Py}7-HcP Zjm.$qNQ)R)_Yj]i;}FTS$E{(6)aP`ziye+pW&nGшZ jB/a6D(@%/6) i[?=9zSdKY|v1iw0vƹ_$Y,⸭yD|B "Sf-67.$+5b_a=l:dCpp'DU49'208A0!p%9'*'wY7VۇֽnQ]bSh3oa{t֤a fO>gDLHW}lJ<ʘ $0̠G.U~e90#r' Wr`FpctW,Lo@2bx*b#:`n),8XFv+uWlOl]IܟHej. sZAc|԰Zr`]vWGݒ3+ی&C>Sɖ1 BT6IQK4lY?G<NÜu( @ @[V>ڍ *߇x1̻]17:^$Q[O?C"׹_G{xkp[X}=A ,C8}42U?Kܴ )IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/play.png000066400000000000000000000013651411575327000234070ustar00rootroot00000000000000PNG  IHDR@@`UIDATh_hqv3Y Iلƅ&'J”(r#n\n$)#%%$K%5dv#}|y~'mQKgqj#AJs".YԹe&dE0y)E4G_j0CƄKMNwM͔LJhMNlj; )68Eք!:1SS eD#Z(p xw+Lr Ydgѫ q fDް)@(&)@(& )@(wgo[lpĻ3Z a7F)@_nY-aB-o5f-`1@рA*eSIY-72.DR fY sf1?a9,}*2@ܕ*|yTKT~dX|n;)| Mގ8Zu0,D6\4ZJ㿰:>8 cf&D|PB^  ;7ϴA ( ;;ո`jG2vS+#:TIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/quit.png000066400000000000000000000020121411575327000234120ustar00rootroot00000000000000PNG  IHDR@@`UIDATh[hWVsDDM}A!5VS_"b }0^ZVAULZ/->Iz'\dΞ3{za޳}[%X K@( j([qkYiJTt%-5,y - X5~n8#SjJ7UA, {m=X+%\dd<.>:R6Ġ$HPB$)!A$̑CqYv!e]~*I A) SؐML[S53Sҭ@9x$O}!Чh;R9@Z?/3uS,ŀf}$ hρHꙭ[j+g怌Z\O Ô)o1-}xDZ,p79R-9Ӓ@nqU2N3QZ.G‸s` c:Y sq{+ >'P _#jtz@n@`>vUA@_N`/ Kn<bOdR07844 ?&ѣP>W\XPBhi >3ST<; ))`A tCyXFd.j\ U1kXG7/ib'p9sb|.G@}/Zzy1pْܣW>Ed4aR^+)0lg}cn%Wd:m\<-_Bej]*pln(ԭ>ym:}thύIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/screenshot.png000066400000000000000000000021021411575327000246050ustar00rootroot00000000000000PNG  IHDR@@`U IDAThohUu?ܻ@\Φ̱,1J-l(„KDˆB$_™ԋDL$j5]Hc#*f.sBtY꽏/9wΎ{<=}=98L cG,Xb)[$&5}\E_J½v9O!~½&d԰«Yy?dȌrVNq ؼ+>zuZNFP<{^l9M6iyڙ~dcer˄5:| w2-|g2`øaT :xRkT>MKC>]g$C&WCutDZX~nN<9icAWgSCE#pKmFQkDӮ@KPIk1.&0S)|ۑ 9 (J$+|PQr7i6H%6lzR4j#h*vzG>&OխX\m3IL!/XmA'y;Cj_JyNĒo˴S`UZnih]&-xUsnfpuFuF;=;`ǓcLPvG4.rдv9VkWpטMNh_qQxMK_rKE.睂63G:zkZ X.M"^8Eqc@VhL-R'=1Ex,g%Ǔ,}k`sKå9uKK*F8 ~bvls k&t^)ؤ$@S} ZHc5|]pi buSG5/jfbstqn"86"@bE`lPj눳F@6٩Iw(hfH[O!SH&a~o^*Zu\gmYgT=~d ?B^v(B>-?Kʑ幘ϘcsGCqËP!- 8BIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/seek-backward.png000066400000000000000000000024441411575327000251440ustar00rootroot00000000000000PNG  IHDR@@`UIDAThՙ[lTUi *r DPH$- # /G@cD1HH@@(C `-:s>3gzfC:/go/c ` OЛHC dGF1_@ E-R 5&SlKUD\d7IOmW mQ6(H!:&IyX(Nj,D٪fcڣkv5>_R.x!U!4LnU~n"]+VL] ڙlkuslw-+:v `S{F=i%IO[ö'MWS*s-KD=-LtT8!vԄG;u(WU4P@zWϲ$~BKjK_WZ(CkjG73Twu7 =uѻ% p5fz#`#$3 Io+RՏ6 NY_J-}e#4j7zDg[0/PǦ/kv#hE2]oz3$ ] bofXeedMLKNqρhjLoS0m-) 0wSSPfJ!Q^GMA1+R }ņ4 RHg>NQhd\Pͭaw+-c^ݪk]su ^.e1ϭĹ7/׭;\N`wWf}gRiy `N|ߦI#E ' lcYpiNmޑ o`S]cw)Pgh=ap'3-< !ݶ/ X4@}%^=xMNL{ hr eA'͍+|8K辣۞sx]ϠSIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/skip-backward.png000066400000000000000000000021051411575327000251550ustar00rootroot00000000000000PNG  IHDR@@`U IDAThřhUe?斉lb(( $%綶&f ' klaGJAZHstV.u?4Q5"YEQͩo{v={yyny<ҍ4rN3gx|)e>RJCea=OkH4 Wc[#Z}NMѭKҨn~>KQO>d/I'=?UK5QcSHM<I +}Po(yDfv[%56>dmd=*i'ߜNpk9 +4Asyuu|03-F%jG%x}@YbӴg#Gٓa4cjn^ȸFaUeQ%kmsxn(u6|n|\^#y8{`0r-3-hbQaln(s zw)`[Q!B mt$xcVo vns&NX/E fF>z ۣ3Ng;k9kl9V34xh QͯN]`QGp`-fz{CG fL:nyKZDyM$8F -V-]DvXu3MgvӬ6;k՝|aMgYfwj'S6[}3UU4p&懤WT&MיF6?r}&@CTPYu-K&,9 ˈ13~}IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/skip-forward.png000066400000000000000000000020751411575327000250510ustar00rootroot00000000000000PNG  IHDR@@`UIDAThřhUe?vixs6I0@*,Ą2h?c )R Z6 AEa5uY6Ӌm폹i{9ssy޻}a%U Tp/eLOp>WsS j%jy1U7gqh?E_({lN_\}Z}Bvy ^Э5?BO^O$<˘Oʷ*o#px T`-د blr?qxVjE8Ͷw2=B+ܞwm7{C69ú1 M#GI,iwEWVС3|sń,WǚD(ls=P yl x˕ yO &jxW1 +9&eLe㰛X+@?ؠX "<7BUw۴:Va!V@7ae1{r}f?Q}v84?V%cD>ݱQᢕqH <+ҩ>B9S4I;hٕHH ;" p,b}dGf`=*V[{bw =uWH.<+LN[xJs2}(y,U!r`~8.D0C$aen g +LW4 V0}dXoF PJ;&= s~湉7h̗}<&vSoB]Cn5 *+]9!xw\"ϑMe/cɮ @--nw'yծ89e0[O,zs[vd}:ٔl»>e|ߢB 4 suH? j~qp{C`v]ݦ7v2n_!:I1Hxs),:T_8IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/stop.png000066400000000000000000000007571411575327000234330ustar00rootroot00000000000000PNG  IHDR@@`UIDAThJQϨ$ӱޡ?WEm""hޤAOjEmBCi5ѫfqoA}g6盹3w6D]N ʸkdEPI>⩕pOnjwjs$yƐJY1rD#ySH"?Gar%xh<GX+V1lUEV:gn7<Էi@YٰKPϞ1џn-WٚP̸5 euk,"_]*i -l6Яʼ6UkInVĄXSU Y\᭡Y L G eG,:#,+En3Ə>V\IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/subtitle.png000066400000000000000000000022261411575327000242720ustar00rootroot00000000000000PNG  IHDR@@`U]IDAThY]hW=3$YMҠ(ym J%jZEm?TC[EEw\K}/JmjFi!DZ${Nfn~ߙs=sx[&8>FnD/*9~iΚJo]aCeT$OW|gpy\[>ePnU#:^y`zϩ<v(uo '+31Czעg#R4:ʚS ;4,& m= _тa S 4rH8&|5ջ=HA0dw[ebCgd@_ wg$ 1 Y2&!4]}f<ʗY$.Twge 8j_-49ќb@7!]F00qZ s2Z v.B>6ik3! ,9 `n5&mLWMmj+3BEY>2pF5Vcb߃eƤhӾ'h^`01O8ؤ (ۄ: DtU<OX+UIk 7!kHLVWj>0wzdUtU@1a AzSee;&Ak0b ֻ c},{^("\Csg' xo4[%|i%rKvدEu  `0vvWdNTUFN[1mNbERbuV$LHlf|]ȻPdN` '"Ψ<Im!kb,S[I/!n:|DxK Sག~S8NxC>U߾Ns>ws[*IhO'~^uZD*Mo)0XWCT$q,Rv6}U<$a%, ʳO{|rQv*`y<^L_Hd0ЊqJRy^?vIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/undo.png000066400000000000000000000021031411575327000233760ustar00rootroot00000000000000PNG  IHDR@@`U IDAThř[l AҨ%zJU{6.Ex$$⁄7B4:H($<ŭ m=ԞݝΞs|2?|?Bfkե]9!m Ӌcv҇ot᧰*t৲Q~R/fL ># 1b1{;;p2.k{E>v+`Fo0KP__+Y!Ulv5? ~!2>P@!M8T@87<~X@vp YȲ[XvbvmНJ m\3{ғ%<ʯn?l×;Cҋu$[=~ ;_4L'Y=硬`\E */[KG 6yƒiSTkA<8Rv 5>SD&1BwFäR&/BM1([hLWӮ^Bq x+:T> Du. 0ϰ7:@)MH$Q٨6,BǸYZFN1pCN&VJO]*/KJ̪$pޢٸ%#vxJԛس{3W1תZV4*d iveM/ 1%*UH{)!0@wwnնP]IM!hz!E AqxQ}f扎|FSFCWln Oȟ{W Sa8U%:523? >fG#.s3*B(5 mO2&{;?0x97JsHfN-(ϘlIG!o0'57/ѝe3r"i!ϟ7w) 2 RbIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/video.png000066400000000000000000000013721411575327000235460ustar00rootroot00000000000000PNG  IHDR@@`UIDAThOHTQoh(4%$W* bE6 lѺU$AF-@ժEKD 42B# "9y7XΛAŜs9^>boV8,՟ #󱨚WlKI+}BsVi kcqw4-^™t <M{4ux tIQ<]%h >ڍZ1O9{H529A|v!<,^8LϖB5q_}ל Ug9jQ&rNK͹Ҕ$rTrݙ3(Fⴟ~<n@TFҿ|fIs|*l(-n ^0k(1dâ\[nY&0Ӕ㔎yLJ#޹;\I ڥqzx`m1uFd~[9K$`fùCԗ(#{BP&>\g C?M)x%XQڸg\0:ƥ]g'@Ul]MK^zҚuA9XmYz<*gXǽftg,v 4]$=?: 8i:mnUe(T`MZvI "DQImIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/visualisation.png000066400000000000000000000021051411575327000253250ustar00rootroot00000000000000PNG  IHDR@@`U IDATh[lU3iK+Ah!jM1Ň k\Bx0<M䁔 i P 14QR(T)RƄ%UK\zx(;sNL5ss]aEyY"诗#֕ DI$, n/М'qI)Gs@cNC9;(=I.!g@KX".1JvK9u$t$˽27p2OVbYzC8mMCq[/] &]e>6[a噚=uJ mjwP*#o0w [fa )e x8ǛwTN1S2clDz8G).*h#:\g2O:ְn-m~< #LcJbO"['s2(#8qISvqn7u&ǘ$q?O)ӎ3 p\c9cFmH,uR@gGPVhvnl['|@CK9Jc {Bq&ye^Ꮐ?⺑zz,;(/i&/ş X$`iy(~FLf# J9 FThtj"U]YAY?\]TJ })'5O.fp Nٗ_4p.'_ ~b5`ˡr%2ZꇥIf{V?ە3'2cC]gqMݜQEpIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/volume-0.png000066400000000000000000000016141411575327000241030ustar00rootroot00000000000000PNG  IHDR@@`USIDAThkAM4"śxрTT޼"FiZ<< D=T ҋR=;;n7)%3{o޼y x,X{@.+"".dkEYUK$Ay-)myZ+N4?u'%+^[3DG6=P$@@3J+so@9(z;,%jwM*08@~@*^Pm ,qAX hEYOAhBR@O鳨Oa {orf2=@J(;J:KU[xǀ>dGB@ڙG͎aiuHD[IDSdwӎTT+@S9EZjv?z Ž@r湼*kɔ9ҫLNCGA-f}/.ƕn\>c,J˼'nYs& ov Ho1Nf/"=Do ?{B}>򷡳r_֓y恠N(pH A\D!89șp `"û `Fp [\t`Eh:dXGw_A 2yVi$}=1`JNcՅIENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/volume-1.png000066400000000000000000000014211411575327000241000ustar00rootroot00000000000000PNG  IHDR@@`UIDAThKhQITE#*HEQR\*-BqJܴPMRWZ\ 7T+ TjL{'޹l}92 s1#HA)m,Ir#\%-6|jkmE_6Kģ`y(!PJbt F/:Όv$tcG{8K#!%`FWy6ɀaBDw-x1nbc]t;3$1 1S۱uxAFzאB A^qڲ?.ài4U)<,˺{3f֎@Ǒfvn.wO^ ǰFu1اYm2m o_E2P18z]mz@S^gtG<ɀz]t~9WnX$yI&yɽ̷ce}uis"zSc(o'A3 3&!<^L~1a\'J+\Gp[Ch/\?, ಾ!Y!gH+ Dj qNe=( PHb,d+g) _d>]27) <]$7IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/volume-2.png000066400000000000000000000020341411575327000241020ustar00rootroot00000000000000PNG  IHDR@@`UIDAThOUU?wf1j|F+{4ahE-Z Nha6m"-E"-e) P)HӑEC2 Aqͷ̜s{P9w=>Ke(0r3J.k_Р\ԢBE , mwGoa\"ZN]Mky6v1FsScYK45*sF{A6f`ԥ]XϸuH3>op_[Y"IzY W,> d<|dz:g`2+T0ZAw%l ˀR2M&k@g`v;}nj~u3OA'I]i?=tw~L~7ӮU`Vɛw>9eYqôߥ8%XGL_U}a@A Yl]{`'U %VIi:֟oGdžWcqM#('SW23u|jAg}ΆL0Zjb :V)@4קBoÃЦetjPZBDK]N!Pϗ*i$B,wzBpL󉦦J o*G61myb!G~P s _6P] }ea4 DGfM_Ŵm+V_N@W!IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/volume-3.png000066400000000000000000000025501411575327000241060ustar00rootroot00000000000000PNG  IHDR@@`U/IDAThY[lTU]D(S,`ʐj414X4h$55E~1>ф#!P|I TEĴJ;3w|:}:<.dh ̙7J*N@- )uf=zVsQ*ace05s~+7pYj[E/熔#V2TZ똟x/v1i M% $f#6)&?"O+Uv[ETv>w&ZyW l|\; uX'-{8FcJ0Y. f j7KxG7)(p=jx78!m} DU*Z-ze[~SlQJ&|,y<&A.W۵%* m E?='D:0y  ad >3Q^}esj%yڣ:}4~w@$q%G0MJxA"+8m(ZpE|$ γ;%mzp1HUmDzDt5T0pRp:lC9=.mܗ%jw^ (>uЃyp-cJ+HĺfyNHgiLMjE&]R]T{k/r\pV`3A8=.SO|@?9uJ9%F^!p}(BA 22p +ba|!*1_E78w@t ތl_]4+&/5ο-"udaE@@BpPm%堏EH0ӚvQ{bَV0@3DWjB<0#1Gխ1G3#Y>;}:N Ht}ܭURN z; 'r,1 z,oc?–U#/&GE3{b\@'C!cj]jp5aUjp ߍʙ(oan,7VNĄ!^G@W[vۗ'O![%r!˪NI&r1TmQPeVkaO:<p}c,{Uǖ{gAIUme ݝpx/ J Le[G S~]FAIqK8Fd:k]žƎ~{5V+EaYgYv< Af^Im.np)ГV/Qy=IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/volume.png000066400000000000000000000025501411575327000237460ustar00rootroot00000000000000PNG  IHDR@@`U/IDAThY[lTU]D(S,`ʐj414X4h$55E~1>ф#!P|I TEĴJ;3w|:}:<.dh ̙7J*N@- )uf=zVsQ*ace05s~+7pYj[E/熔#V2TZ똟x/v1i M% $f#6)&?"O+Uv[ETv>w&ZyW l|\; uX'-{8FcJ0Y. f j7KxG7)(p=jx78!m} DU*Z-ze[~SlQJ&|,y<&A.W۵%* m E?='D:0y  ad >3Q^}esj%yڣ:}4~w@$q%G0MJxA"+8m(ZpE|$ γ;%mzp1HUmDzDt5T0pRp:lC9=.mܗ%jw^ (>uЃyp-cJ+HĺfyNHgiLMjE&]R]T{k/r\pV`3A8=.SO|@?9uJ9%F^!p}(BA 22p +ba|!*1_E78w@t ތl_]4+&/5ο-"udaE@@BpPm%堏EH0ӚvQ{bَV0@3DWjB<0#1Gխ1G3#Y>;}:N Ht}ܭURN z; 'r,1 z,oc?–U#/&GE3{b\@'C!cj]jp5aUjp ߍʙ(oan,7VNĄ!^G@W[vۗ'O![%r!˪NI&r1TmQPeVkaO:<p}c,{Uǖ{gAIUme ݝpx/ J Le[G S~]FAIqK8Fd:k]žƎ~{5V+EaYgYv< Af^Im.np)ГV/Qy=IENDB`gambas-3.16.3/app/examples/Multimedia/MediaPlayer/zoom-in.png000066400000000000000000000031421411575327000240250ustar00rootroot00000000000000PNG  IHDR@@`U)IDATh޵YYlTU0-BRZTXaH4AAHbD*DY$֭T*5bP@A([C R([+Cgܙow{}ۑ&~T`Q/KLdf%Cz| WI'KyOb! nJK9H\# x f?8KhF 18kۓQH8~evlCTÅLq?+=|_Qs\e!"_OXgÄE ݿ$)hRc`df3gor$";4~Y̠%q_x8s| OʘRRgZJ>n0OߜC`8Tm/ՈwAV5e/wdq$v+œ<)juإa(Wa jD-;+EG}]iG"jd꩚Ym=ʠ|(&KG{ 9@nPMS<+W,t$dšiEwӫAi9G)խ` 2)F0,5geLDB۬|+i<g!ύf5)l.I˷1Qfotue f޽/ u"BdFVdUkst~検&4<!xL(3崈Ia踪9j/ 3xE(S6)9jmE|"w$U6&;qZ79p,+͑8 xخ cdw1SF&!9{ה ̉e"zskν@Y,.c6|*&婡;co<7G0aY +1 Vo\CoasAiV(0*l}3C=+@~/>݆ꁰbYn;<[p{Z8,F<ۧiL6x(Qfde40׋@ HKfpIװ•;6a/ oHNΰqY0hJwot9 WL5,rɡxq+*Q TtM-ځyn}* 6]j..t1Q$,o X`S˪g;1xk1;بSXMÍhnF>\:,u*G<-r6V{=K8y 1`9l\k^H:v1fyم莯z w|^!p:Ww+bzXn8\8+!O1@ޏu\<LjDKK^pğ?4rߵ+ (_?G.3<IENDB`gambas-3.16.3/app/examples/Multimedia/MoviePlayer/000077500000000000000000000000001411575327000217675ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.directory000066400000000000000000000000411411575327000237670ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.icon.png000066400000000000000000000103661411575327000235110ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛytUս?{sͽC2C!!LaVD*^ZvZ\}}omӶ)! C <g$D"k9~g_Ѯ O%1`[չoMZpXae.+Ui BiA<633/+mS ה"2oC)WuxGyzB {Ю֐;fi*oB8zܨrʔSYQ:GAI9NmHߕ%/FkH۲mTtB Ιs[NR[YGVGQN,wA~,x6nyH P:{ (竏ݓVq!g>D i|Ni߃!s߫OL~wc(ׇ%c.^-E&L ܰNiU]Peh ZkI⻟!1kP ;Jݰͱ-6|k,v~l\ēy V.nrX!㏝܋ ҮdxOt;v8Cw5AhΚ]4%Z/#ȨqIBђGbcXTC4$ _]>= [`/VcH7b(C'$phDd+P@p†!TH/= n+?%az\ ! 1bbr1!TPJF[Aی~O^h5VsmסU "61cPʉRɰE pʹWh-%1> 2 )F祟R}E"K:8J %Ex/k77ہ9K=/b“AlC:OaP2#P_l?˶%oF1xڃ!BS ,XIڵ'GeM[dؐ'M-\>ℤtNkSckFhw qU< , R 4qޓ-vQ{d;%)-X 6=N'bl7G?R hkv5:J)ۻ}+4'#$̽`/MJ CId]{OQ>o4jc_d&UN cgaB]!cK`%9-6:%J H)Cs5L5xM(_;xgî~^OFNm0Uwxŗ<܄7 ELL S_7>no˟2,?Xɲ{O_;&; a.$a!6-tycx/Z!xڵI#v~~*M Y̿I%>e˖c-z1L˲0-˲hIzJDF.BIxOƓDB|d{AĝEX~{LeSyds8 g-\]tG:I O!Y{,(]@WG;M 5d@ " 4r`H%TTrfQ}(BJ:^{%7hԆL&j4GM'Ē覭&Uh4B$"dG(Q3fڅe[N!<`,C=l0P.'&ph Aos&KoJHC5M$eQq PL/T3F=J2F#4W4RB," S]]Mf)TC ߰g\@*I֧7Ĕ.zz;s7R2#}()hx!/R|bs3y_35-#Vn^ų:kEz8܍^zi}̜w{cҡw@]4Q EcC=ǏMgg'sdtZL`(rO[i%6$ZiYUǔWz6 q5V p!7BQCE}G332uc.K'DQEYvMŰ \WIJZZC !Yd䍙PR@ `H"Ŭ';1 ǵL;_[ֱ(!=hE <,a)* N9+^~$o-u5tzl43(JGaG"6O4%eWs75M!(4]mܺ0kGx{th4GIg?(CMh>0^d F:̬,Y1 eƶLT/LJ#6!s[g\# ,ϓ.|YsI,I$-B{ >^.&;7wycK⛒A0>cZSS_OщCܼ ~a-gBu6P)[DŤe&!`(@H<^wOɵSy}X),_% oewՁdMI#Ո (_I1+'|$8 Kq7M0@8j؎;W %~?Y3K>a [ Ejn)B !0}=5'21#qj@/3ܾS5ú _o\ G,PB[@O}]tX T\p d@& Vw {@P 4Q5 j! c5=,9€Y_-'"kRX03~}]}&?$Լ<=?hU 'Q˗/Pd?w}dYJ]#B [wuAOS#>i9wtbxťZHK*c9$5 dLGpK9oGp-**L͞Ʀ/>u^.ٳ!=5q"lysRS/W=į}IFIENDB`gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.lang/000077500000000000000000000000001411575327000227665ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.lang/ca.po000066400000000000000000000021431411575327000237110ustar00rootroot00000000000000# Catalan translation of MoviePlayer # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the MoviePlayer package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.lang/cs.po000066400000000000000000000015051411575327000237340ustar00rootroot00000000000000#, 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

" gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.lang/es.po000066400000000000000000000013321411575327000237340ustar00rootroot00000000000000#, 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

" gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.lang/ru.po000066400000000000000000000036151411575327000237610ustar00rootroot00000000000000# 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 и сделан Бенуа Минисини

" gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.project000066400000000000000000000006021411575327000234340ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.src/000077500000000000000000000000001411575327000226345ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.class000066400000000000000000000041301411575327000262230ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form000066400000000000000000000017321411575327000260660ustar00rootroot00000000000000# 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& } } gambas-3.16.3/app/examples/Multimedia/MoviePlayer/video.png000066400000000000000000000121741411575327000236100ustar00rootroot00000000000000PNG  IHDR@@iqCIDATxݛy^U}?swuh"Y !YA DEZEG@kkkiy0֥J H.PD$! aL λsN}g& y3gwnǗ8n^{lݗr(Y(YM9%Υ_S?JR@u0oxER-;-4n]xƭ߸>˯Z>Qd%8JpUv׷v*p5@Oiax ?>8oo/hs޽,roN&^g S-M縛'A ȵi_eܮUnM)mg}.(QdMWng̛??:$`~(l!?եe,_՝}>˩^8\;cݽw(Q|oۤ2ή-;C{(~k3Gy6gv[vwv|`ǒNYIClݺΙs`&t[n (UpXk[J%+$=U`m܆}9JV5sNY8R;n~YfpfXtwܻō\֍N"`GQW91~Q\Ҟ?{uq^|1c8Fܲ_-29r~Om_ww-NZ+ɚC D)I '_#>I%{s[6oem#}/<Ѓ;j$N2cW~艎8J.pJyI]0j0bXd:7=s=~1\GQ,s_>k͛_Z\l2Ε_:S"=G953%fJhLz%x 6k:a_Ox"#YB{@ xxgxˊsV򛟸 uaЊ:dȕ848ƃOl~S%o`!r`xxQcS=_*<'}ze)l!+܄eKLgr\>Ǒe gsKڼM?fhqTdݔJE6mx??/{ nWpWO@7H^Ms7#F8}}+$k}_vtS8xGTzÇ}JտB*cc,iYxi7æm*W^uk[na̹t)g~t97>l܆ -nJ1Ɠ=54Jc,9|/E{JT-K(8;/rWʘ4Z+4RrњW^مB*7dF`Ν8LLYzYp&o) :\#j^xE6o/q)WMRUSOi&6mę箢XʆBYS(keCɗ41&P. t?Ane Jn̝˻,A9.T7ZUx\?͆:ehcц&|=ߎF}CGcNJbuKK 7x#J1(Qx"m\|% ;.TzouǍ_S>tOUh3Lع/+̥uzv<V{y+ϟ u/\s=?zM] K&|~b1޽ %8R)I~CEr/c,"S`;Bb;޽|H8}{޳BZ` |x?.Q|Æ lذQ¤ѠhP5 p&R653m}ֲzjmkƑ׏0d<`X FS }.K1TU>ʶmG7_׎.X38s{UV77̷u'*6#9IUW}N Ⱥِ8Lxy&$ V3mZv;]~˖-!#L'N>CCDaH|򓗳o;7]t"- M ֔ƬϘF0P.ٶ-\'(J$`|Ru*k~n_C<qb,VBQ&y+ϧ(л _|3ꌭxv饗ǤI?cƍlݺ7BG&ǑY_YnP[ ]iʴ DM,4yG Z[0/Zu>W{'Nz l%KDm 5z@vkSQiV7FQ ϟgdh""hk0H-q1gpX*d*$4cDNЛ?.?ԉT? 4573{IX`Ǟ}q8\_?NsK LUFNlvi'c#7Մ4E)Sl$( "wf Sn*>:! 9|*}?Wq쩍Z0B7S(ZT8ndSw%+c%kn1MM_>Ex= &L Shݎ0iPa-W}J:::3gTUZ3w\<;wsOÇc;3FHZǟ6Aoʜy2e*,\ {k={6`>p5?Ċ+8x /fӦMXgysQߴ uޣ۲grzYq|6^z /=(ÀLWzݚYD@)q)^~y3N`etwG2uj̙î]Xs#D]519˂~%] Vm@G7]ŦpW$/oCR`++ U()p`DTZk]%|^zQMΡv nNQtJ /xV[h_@aDP! P6f5Xx8(8!e\tGXq)c(*nlv,lOIXG4͎V@ZTO%z\&'EOaEQV[$+j)q-`" VI(>! 4T:U,$OxjMX&hЄeP%\&MVR Ȉ J@]g&,EDG! zc "Dxܾ5[;cHnͤ:VC%*! P.dE9P+9rrf> tEP;|, HJM~i@0<Xkk-"aEdN+5՛dZ-N5 &LO#2 x"=vn'/u'#HEZ,rns47F}lk5@hj^I'= ė DM*Nա*KPzr}>j{Cw$.֖5(5y\&)\oQLÓx#"& ک˦*Ch:xAD@|!i'5,A ơ5u+:|Pu>* %[p'>;2P}W-~Ѝǥ'IENDB`gambas-3.16.3/app/examples/Multimedia/MusicPlayer/000077500000000000000000000000001411575327000217705ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.directory000066400000000000000000000000411411575327000237700ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.icon.png000066400000000000000000000102021411575327000234770ustar00rootroot00000000000000PNG  IHDR@@iqIIDATxݛyp\ŝ?}̌fF[d! `B8cCp$YoM6&[PE&V&!, 0"l-u߇u͛yW:,>[5u߷G.0o| # ntV-mG,*!SrϺO}:}r/PB r,}}@ZGs_^|U|Ƈߗ}*!(MdN7 A,K\* ʊ]’+ ະ._J 6>R/^Wn/ ?|NYUTva dΝ%ܴ6/_6֔I<2qƇ%BVTDsf^շ80_i߇Ԕ ڗ  9}&6Y$,noI [ yMoc{! 4vյ?Lmtzp@1Ơ=0?x~-}3#`C3Ѣm{<9}99g~<-o=ލa8`Rp"v,/ϐWbs o$ `#m9muq@ߨ=hX"N)V\\&xfqoϴ-/&{`lwnњf{z EI׾x"jB^ `ZIi))'x@;JRj֍=4[)?̸!Esinx}T)#g2 t@b}ՏcUJg՟:?JKKY=v،Zsd&iJL`fyw=Kk?epZFRimgQe7kJ`LJ)Q-ϓ|xU|#rzrLD%9]t6:Y⽰w7UdhT!Y7mfEN3+ɾvGR)Kj,)38q1`;=iKYni@4/pRRq\ŷS Lk#YEh8̒S+ei%ͰB"qCORƭssxM{:G"J.g;[8<@Ң+Zt 4Zi#BL[7^$6P0d|v' <-|#&OS{ݭ$}БT$[p\}%<8` Bi٣*)Gr[_w޸g+-_؄Ac9.?62ĂK ',7Hl*XwWo؄םd,Dzq}{9{wTӍA{uԾ$oK[J7ZJƆ]"ih%B0y7`>a )~pݴ6Ks2)G/X2sFALJ2Eo҄DJ B@KCŚqR>B! =GB5pGS#ͼp&&=I./Q<9˫u%5^Lɩ$„DxDd4hr];@^`մIə}%k厒~ #_Bmmlb^I՜<>Nb6cc2R|f"HbY#ñz>eRXBm A2'!m \Hb9xPiX&CoG.#9/\z-ЩT8-ļF()p8q&b,XL B 1$X0^@I,! O؆.]SF*W0|-WXBtt@a =g>+.̹=xUKykHIZ[5iIQ2͈k#C!0H9oDLw3%@ 1 v!rt;>^.H/DCQ Kj. keJ͑!xJ&bXM詉$@|`T<VR1C$BJ>ˮ%"94Zä+$i۴%mEɍXKgCsK3cc6$ PRz.GM`\'4 >EXLc@KOca>_|:_{#ngH:`[1Ș_B݁]BQV ,Y(.)&;+p$< BQWS&S!3ɔ1fjQbZ^eUKCRv5=Z;QY@>ԵjO?$;4" 6ooںݤt%艦FI(#4 L&q!&3XVP k+99Be#7‘ncAG`kk'w6jv>]J>UFFRI$xHfNׂ`@"̌~0Si1MqJo.] ZRB絃ɾr~0Bcc3"P!BcD] L!(£O>GY~>&璪RjyF^68cO!=DaPRI('|,U+ذl5A'Laz2%ؤ4sMX=1 ~ B(>9'*D_Frs #DcizxC,яG[iQ@*iM=8^.#;@ѾZ~J0aaC? RBxChZFcdJU0RXh~LBʎ iq6CS QHyGlVx5-IJ8($~.y)_F(;X&NOc ȬX.slL#͌(@\S!I^!n[+1K>Bn0!HnUWظ]oۍΥ YL&S <{ƈ-`%,Od2MC7(1"o|.20)&`@F0te"a+c #BaB4Lr~WY <3yX#@ أ :w`P D 04I@(@&[I3N$QB N_0$\bT;?PF.7_[@n~m;{AܱLcFSpUpkJ涫KvNN+Ym=-=Ζ>zy=yDiQ1M=`<|! %O(<̡ϻ1"eHkz>{.${3J' C +lr?l8i9;ΙC^N*!l~l6rr=6R^BIENDB`gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.icon/000077500000000000000000000000001411575327000227765ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.icon/16.png000066400000000000000000000004401411575327000237300ustar00rootroot00000000000000PNG  IHDR(-SWPLTEUU?????000ooo```??ϰ@@@PPPS`tRNS@-{rIDAT]D@ D#b1.N OI:]!JȈ߲͊L†WwɦDo W+9AT{4%ˢ)-ۺ'p?Ӌ<FSpIENDB`gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.icon/32.png000066400000000000000000000004201411575327000237240ustar00rootroot00000000000000PNG  IHDR TgPLTEXtRNS@fIDAT(] 0 xLI-TLXs?BԂHpl'I^MLc>;@C {,xpZ>~. $d'!%̉} -|a5~l p\ *pwRJUCMU˨ SZpIENDB`gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.icon/48.png000066400000000000000000000010531411575327000237360ustar00rootroot00000000000000PNG  IHDR00` cPLTEUU?????```000ooo??π@@@PPP7tRNS@8HpIDATHǕv -H?K)s"|P-zSq' TJ!bFY'_/geG@P޳qΝX1hKvkMXw@5K^5oUw+yAV-E8׵>ռ2ʲI c6 PUkOI'ok̋SOaQ4}W<%~}ÊJ.~G`\\b`hM X68 03 j@x p)m"9CLRvU o$J 4J VrvOZjUw'4UIENDB`gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.lang/000077500000000000000000000000001411575327000227675ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.lang/ca.po000066400000000000000000000015561411575327000237210ustar00rootroot00000000000000# Catalan translation of MusicPlayer # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the MusicPlayer package. # Jordi Sayol , 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..." gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.lang/cs.po000066400000000000000000000011501411575327000237310ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.lang/es.po000066400000000000000000000011361411575327000237370ustar00rootroot00000000000000#, 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 "" gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.lang/fr.po000066400000000000000000000020241411575327000237340ustar00rootroot00000000000000# #-#-#-#-# 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..." gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.lang/ru.po000066400000000000000000000027631411575327000237650ustar00rootroot00000000000000# 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 "Открыть..." gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.project000066400000000000000000000010271411575327000234370ustar00rootroot00000000000000# 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= gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.src/000077500000000000000000000000001411575327000226355ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.class000066400000000000000000000043541411575327000262450ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form000066400000000000000000000024531411575327000261010ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Multimedia/MusicPlayer/sound.png000066400000000000000000000067371411575327000236430ustar00rootroot00000000000000PNG  IHDR00W IDAThZkl\y=3s˗HzP,(ْl5؎q #  (:m~O.é(8mٲXٱ$GD^6EJTDR$ܽwwc}pĎh]~sw73,JN %ٮz9sS~q Ӛ+ȈZki5 s%3Ix}[W D#Q(azCswҟ~W2ڌ=Z[hϾ=~ Hw/{ώ@{[ C軻/Evdٳo%s]=Ĩcc?X_ɭXМoWW v7лa4Z[Z>U&TltO\]fX,6]*oAn7088͛?o_n!%//W~m?ٲyk\G^DcQH8kqv:V 8󓁁WO;;>л/^Xo뻧%Lѵ A!t 8qOQx>T?H O{tEzl-ɭ:c cU< 8rpsvW3q/1p} aOY9c;ZdwYss r,&O hDb (/~ +~\>x<b걇zw1 07J>$K2{(vpM;wn;?]Bz)hBsUӓp\``IV,T|I,CcO+ssݵܲ Xw}i,%Hz7fgg0<||p""y \čE+j|__,aIC$VW2$8w)oCCuU}:гI|>GR"\PgI|~@e|)x94M y$viM*W5\(=.lM]Ӹ f`Y80 ?`ZΏQ #YֶV$8RUsMCbonQ ζ5:MaG#cH|;avŋiH) ޶ D29:x2 ۶llX_8g sma@JYC(4(HdD@y]΅ \΄繘 ]!0|Mx5kԴ8MH45Aڇ-~\A)YNW@p5Z2("i`Yr9Jd>ض ۱aZ&t]9 cԠ>޼ /]Y}VV10.ơ:ʇ !o) ,(/@$ %,L˄eRB)lFPkmsym#!3 aYVUIpV$H 7omB@0<b˴@DPJBJ׳\ǁ HIH)a0MX<%r R o%PFqLM5*`G bw6]CJv|BAt؎ &8Ӳ@"@@f.p(T"Tp0!Jה2@kbM:B=PF<7(;^fQ,Q,!DP<l)C߀<%nݺ-Sy00hq U+ D2@Ql{*8rS,xseY*Iy\"iZ 爄cfsX,`ffYΎ(WUPJNTW!ɚ0_w5* DRʙ1T(\C ؆8ߏ/~Aog([`(|>%A0QLEPjjjԚX(BR/I:zpD _>ÇGv= ]7uQD? ")qMxPBxIqVB|pp0m_PVނa B޲pnlIQ2M!@@JMTHMX6XE$A6uL.^d xPpF b>O@/}8P^MBWjANp!`Y&ϞnM T=C$"Gy7je-,C[JLg9h+qvVCՙ`ؓO>_(~C۞V,RKIhP HÇY*"Z_.R๣ p幆'>k_ =lY8ີkӷX(ƂcURPe[-*P!Ǒzrv*"Kjc sC'^x1Ϗ~jrj*w%CaYޕTVa---ysv`-`?W\{,y܅_9;|Z +} KG!8]J|<Dz=kg.^J/]3\3r9\f`@RʒJV9DJ$ۑd`}|>F6`e ީ(L+#3}svS pB eFT:)ZՎѱWEV񻄮L&$?13=3  Rgm* "g=V'Ofr{Q]i^U>ߴ1o.QF JR2J-8vLOOf6oefvdDٯjWa)S$cTfM~10D4V\KoH5`߬.^w[Pwȿzw4' 679IENDB`gambas-3.16.3/app/examples/Multimedia/MyWebCam/000077500000000000000000000000001411575327000211775ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MyWebCam/.directory000066400000000000000000000000411411575327000231770ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Multimedia/MyWebCam/.icon.png000066400000000000000000000104101411575327000227070ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛypW?~S%[%Wb>Hp' @e.,JRݪ%$!Y $NBpbc!-Y4#LO{%YR+f_~wyu`mpF33*OJ@$ϼ,d˴kNF߈%/&ݿ~B{i~DOoU|mhBD5& HU%ݿu/c~{7/:gUa UܼWǯ:vm*u$r[Crd(͵_OK8soa dgKio qpcvѲS .6)*@Vp{[ʔd ƠMbxݽAH^Qȗ?XQ`tFFGՆkWrJ|<T@i<}FW9ipV<.醆܆1`E9|Dr!ѵ]uWtb#0>A(tu"[ċa?mhXX*giMph_K*_$g-:a))m%e;]xH.m)JY'몾KJ%zR@{.$ھk>\zaLRJIfy8KزI̼Ϳ&{O7|R'-eI[Y@k[#/"}p7Qxa6B u城̬,϶,mAF2lJ3b̟!IİHy.a̴*a)%=sf$mWUf=$GKQBqhs,[CF/fPKZRI[J4| zm3\M$+v<ޭV]_T)ݠC m))`N#<㋟ ^O/6m@3(pykX;URvxJ ۲yFb H2SԓTˏ=Co,A")$pk@'=;;Ii™x1HuPtiXy,&MuNe>O x>P| ()BJ/Sqٯ=p Dc]]>5|sV6['~CV_Wy?C%cAEEQ)OԌF獮4<=`ImIKK)\zZ;eG2l&{ec#;.yl,%BPvɍ%]1j;ĜJ7w$lxdӁ' t?u|y+l.Xd͝/J.P7|v͎;eqvl1>?RLyFOn#Dxo3o!k-ɦvol%hvD(h!q2-s4 DǞgnI 6Z`kD"R) $ bLotvv2:fԑ`))Y9 99֚MT*k67Q! y,ognv6o&0b!g&V#`ߞVFSI0++Cu]z{{+YJʋ˒w! '炞Do.'k]KF~ى0?ٳ?E Xd\)~!e h?eZ,n[VdfִON^u $Wgx6LdgRi/IN{$]FNM^nBz1χ2( N*<]#n=KQ4*W'>56`H=Ra?mxKpcBs[xeێњB^8yUԟ}3%l$`;2씛zZgL0@|zi1F$Fs QFH!0>$9r+IGc !  ~y,uP¤w_Uy 00X 4a7T4ʁy@) 8VGC@6DMHN9csdӣ 7?Ad.Rݍ:5?+ZV$ơ|wW{㩨 3F {֊>5IENDB`gambas-3.16.3/app/examples/Multimedia/MyWebCam/.lang/000077500000000000000000000000001411575327000221765ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MyWebCam/.lang/ca.po000066400000000000000000000034431411575327000231250ustar00rootroot00000000000000# Catalan translation of MyWebCam # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the MyWebCam package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Multimedia/MyWebCam/.lang/cs.po000066400000000000000000000032321411575327000231430ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Multimedia/MyWebCam/.lang/es.po000066400000000000000000000030221411575327000231420ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Multimedia/MyWebCam/.lang/ru.po000066400000000000000000000111461411575327000231670ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Multimedia/MyWebCam/.project000066400000000000000000000005551411575327000226530ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Multimedia/MyWebCam/.src/000077500000000000000000000000001411575327000220445ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/MyWebCam/.src/Form1.class000066400000000000000000000074611411575327000240670ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/MyWebCam/.src/Form1.form000066400000000000000000000052611411575327000237210ustar00rootroot00000000000000# 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") } } } } gambas-3.16.3/app/examples/Multimedia/MyWebCam/camera.png000066400000000000000000000123631411575327000231420ustar00rootroot00000000000000PNG  IHDR@@iqIDATx՛kpWgzf4yI#;'.lo(#ıMKA-EVQ[@.Ry v&8$;l#-ɲyif4rw4dNLS59sW&CCC!Iϲ)x*%}nZ;vl,k(.R(怈TD`O,3 8r KFQMDx\;:;;000yo'"An_THP*L~YGCOfWD0P芠Ba&PDvtvvCfA~"p@/&efIyKٿ*/EQh4J4rP ɐJl1"߿< DEZFh(_Bre122eYv|2 W'H$BXi7|K$ ---v\0o8a|CD$ Fپ};v%L2==M6{F饗–e= Ț5kvs(pmgYt1IRE~y8˓EuVp d2Y`f(x줡t:M:&ɐN룱7qr9I&T*E\[ɡeY| xE䓦i#"~|>Βdk.(b+Яm96\䗇gZT"*qw&ڵ+\I0MDp\455ڊat}opw錳_oxX V/`YT%^?mc2o{A'",  ) Jrd2 BB|~jjǏM<'J٦[%+=in05M~u8Ο.$ AŰpis Yc|i" ikkrL>'L( :ku]JB2$. ޾^v-͜ @dqm;wTmi>$"QECkk+͈333LNN*bc}oa[D6t]g͚5?19BSSv[`A!cdt˜g&LnZU)TL|ݥTd"P/ 4@TUիWzd2;ٶY$|ޙ+VH7 `/}KLLLp1"P4U8>B~* r%lתu]2m@|hoo'dIJ*4Mb磮nٮzzE2 B!MӈD"&*?{uٳdY.\s.bST|$I.\\B2 ~ 7 79CSO=^0vʜ*WUU㨪iUymBEΜ9Cwwe@/UUl6N$avv&psKK;nrs[kWnUD$p`hhMӜJ- fX,r:rY֭[ٷM}jjD"a\.2###U‡}e&vfYJDhnn&N4Mme?NOOUɲ}xٷ, 0 x|~âJŹNV4Q^,฀eYrm6 άn;}E{f[D4bŋI&Yb |>TUT*UCii\x۷G>Eŋlڴ'|&zzzD"|>\.?|riLx<^K李Z 0沼r4tzp1!r:na~i֭[ǽKXD4> /s]R]ٴiYjT*LMML&X׬YC 4M àX,rA Hn ]׉UzPlJbJ(믿o T*A,MӨf9{W0 pw#~z5Y¼`TY(hdtv*8z(==='R__% bYDe)U.Q{ [9qebEQLNNg6nH.XxsΡ1`>"Ç 6f|yFFFnUg0 睶ٷ9w@+ T 4Q:TU4MFGGD"^.pϟZA,ڲ,<ѣGԧ>ũS ڲ,2i:㡾?OLLL~Du1M wn7)2 ϟgll-ԧR#R,*2e _m݌̕ Pp:Ν7TO `xx+V0>>Bj1/6Mi,G|> Ɂx<E2(n?seZ&X揄L'^# 211ѣGp繀Q]+n2B᪉Bihh, `xxbafjy+7M0- P{39K[.x;zc}rT*NzmnMg ngLsUQ,D'rrEQvMV<_t%x<A<wiz-_ * d#ē:\*Y6x[.#z\ҮΆ4MɤcI%TE(CepH"c5Ěsɋ]_ ةۙ}LB<- e9ðt0 Cu`\ךmۭ\.]̚ Z\pLӴU ^, ڝܥ3::ZevV 6Kabonr>mhME˂bDUalѻraddd(x"4?'_ zzz( ;vqlH[[uuunRGabbbI2 P)O6%Yv--I@]]^ʖR8~]ױ, tSN}477sa"l|_/5e]t(˨J8v65|nnV\ɡC.@mwO:E*" ~p8L?B"8s\` "Uc/vkzb1n&&&8xuwm#D>ikN^a YMWrZ\`Ŋr1TUUV:555P__8n,H$P(,gzzjMDϾկ^sU,N>&ziRNژX(Ju]LLL{n-Y_~k_w̓'`~"T!(CCCJ2}^ .߿hjb0 Z[[;8u;wtVKne# eRt8r<󌓵]ҭ("}7}\^_kux6EDl߾J2gD)?{ $^˲ %U*/r뭷+Y'oYDexdx{JR,rjww7`}l<ȶm> ""Bgg'[l9 555 ,J%,ɒ-K/HlědsA-Rd ,T8; !!D`c ,-ћyK%loUW͛~~= _h `ҳmӴ m$ݔ' 2ݧuI f}fZ |}y,z{oGzoT>_O61@yAqg.L N>^mos7~7Kƀ1&O")Mpzhm<ƏfryZ:bhaJ1FʹWN_%u9m,$iW:e_ ҅Ѱ ?ǒb?kw=;TwpP }2lX,@̐Z;,SRܲhkKo& :b)K$ Z;ٹQh>d yJi&0e RqJS1@S";H%CA8?RM1& YJd Lo6*(cp]y}GXa(8R"KO<{Dr"T2&syq1[q I 訍/5Hm%w5Qp;^)RCLrdRR'{9܏okq7۰gd`@x{X=x* -ު ."`@1W凛_v1Y!`Kb:"3m͇of _S{D0G*?w/tzDxHq91{[^Wi Or;I .!vD/5 oSOl"l^=,*Y~zc4[n<)wY]hm\_ۆjQ쨓FwCEUe rJ`YX^#=4A%H K9 d'@Nz߶麉ntHRB&k ]-7UOv?C$paOS1SK04$$%r@MOQXdk8b TS 10ɹTML(f/B3ʳfa aYRh ]St:5,wDdt36U,Y| oc sfW94-zG(*5r1ڇN-h7U#1-h<'QʚT֖~` qFVJ I,)'eRB+[pӐ+ײr:m1flCm)vtZ;|oQUƺsS*('`)b4MMM_:fBf%YDHYͅ% XoI̵BYSOenuuo<}MG /Y ƌ!p)¡ل:jel/ /ҌrMWo/YY mbtK21DF`yB%)i[A^R28/:jҲ%D@W>߁" {_9K JHtC߱VЁ]/xJ)7Er K\H]h[7)5Ov;>jVf<NJca>>P߫Ү旀c$F)y_PLn|k78_)[LRA%GxfByGIj6{"*$1 J|aV$/x-“M0!P@=\ֳJ|Bb,@H1b0v{i͍, 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 "Играть / Остановить" gambas-3.16.3/app/examples/Multimedia/WaveGenerator/.project000066400000000000000000000003731411575327000237560ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Multimedia/WaveGenerator/.src/000077500000000000000000000000001411575327000231515ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/WaveGenerator/.src/FMain.class000066400000000000000000000035051411575327000251750ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/WaveGenerator/.src/FMain.form000066400000000000000000000025341411575327000250340ustar00rootroot00000000000000# 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") } } } gambas-3.16.3/app/examples/Multimedia/WaveGenerator/audio-headphones.png000066400000000000000000000050221411575327000262260ustar00rootroot00000000000000PNG  IHDR@@iq IDATxlzw-b#@%bP  ZQt3@!F3n&fhdCeLˤ"EK)Q!R%л{}?z^xέrx}>yըF,F5k3LӭGwgƍ***vim/uHJ@ P(0`Zǁ-‘HaHHǹj*ݻ>mǍ{r_穭X=trkcFJJ8@D7pl|lӴS@GK][~K<ʘS%s 8Z|4X)pDsp*0vz5huW@ MNI0)<˺.Ś v:0 xDzAT[$+8{:A0`aVPG4:+LWjO 8̀*zAD H'sj0k-]̀d]ǀ۴B|QzqJKX #z_8R': &<_\LʖjN >$oId*9jɒ_<ו:zhݺ]s/ xiIN>}qMu"Š-}שtg;Μ9skSjށ̪*=I!ٳgeUջWiS۵ݹg;RB Nr@]UUrk6o-1!ׯM/|8~u*Lwѫrou{;:>㫒*+ϘbQ_t'7 }Fcizrɭ[oܸj#M[cק;/NPs+1s+P3f;"tGNp(}' wƦ'hv^{߳6o)3;!U]r?/.pAYYY0#]̙3u޼ymu^zi뗕+Wvy6lp7;ao "L޸qci۶moyz%#uuI;vv|~~$g'v=z;٘XX^^|˭mmm]Zڵk{e _εguPZZ˗/iiM4s.ĶmԺX,j͏D}2577SiiR@SccéS81Y@**555X~'ND+`YJ~GpgE"qիW0aeZ}nޒpl'hD|ZQQ &؞.lbVO:ns""̞={rYYY%t\ֲĉYɬQiͤTw)Rlwpҝ}B , y4 eiJ)6|MK/%NL@0H$!RBJ !&Ä$3Q]R,'. ˶4˲"C8pr'aY8mmԶ358lۆp@cǎekPs]Fkk+0,˂QÀ8RR2F yO"8`Au) @0,nko#M"eY")%!!8'9,B$2 (lpBQ[[#"偈D`Y +L@D.4Y"9 ! 1K/Ԭ`0!-Z.]93M e:dw)R"ԝlԖ[ MӰyk9( ÀeYuB@XW( Eh4 9Z[a6[ $4s0t aBPV%?=k8i4kV/ ?{0 X@m0dV89#8 !D2 EB@:;Cg.Xr`DqcґK sx0 c@s8ҁ ~-SHǶaǪ/=qYmfBHH?LxZcLٶa$m0g}?qȧáP@ ` ! ;H@C,=nH@ `@^F!RJ›WױX(J)Nhmm-zII `Yr[`;2I4}>S o9;!-[:EMӢk ըF5Q*/3(T IENDB`gambas-3.16.3/app/examples/Multimedia/WebCam/000077500000000000000000000000001411575327000206715ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/WebCam/.directory000066400000000000000000000000411411575327000226710ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Multimedia/WebCam/.icon.png000066400000000000000000000102601411575327000224040ustar00rootroot00000000000000PNG  IHDR@@iqwIDATxݛypG?=$I-[>ȷ8qlCBؘl`X؊JQ.dj7U[I`q($NHplV|ɗúIz޼7nN|VMMOO󻺧%a;Fk]Pr:߷yHi]nRgO@kϮ+kfn+Q<+Iv ߃nرٕ-@ɧ6`4!kxv? H%ٹ 0!'Ëm+*@bhXZg3$Wk!up]ez2J)pO _}0/ c www泿CʝhCݱz 2uE!L3[2 GHH އX1*r9υ܇vH[W>\DQ4 b?@-obͷI)P}$0B<=ꕍ{x|CvC?0p˂L"22}Ǻ!'k8zSlXZOPK B @i/H<'s@I]j+J ^~'*yHFCeqo~e!^k3鍻.fy+ -5 PXZ+T@HswPA6D<||֯nxR#<ȁw?=*xrl,1X.m@{ȻWm;?<%8+z/5#~_ȅ=!:݅ a8mapz0hm8SH{>*ÌW 1xHSM`S]lq*<@̾|{HBL]yu/ϸ*Jf .Ho$mXTR]^B{`xjv7})GRkϵvtE,`)8i YJJ[IzW s)mK)SJMpae+c)x@)Nվ,h7TiFNU@Ji[4 I]|37qj?ݭXO^f㖲4.B = Hf@f1P(.ݕږ%TL/ nbpF"`h,+>8(?R<-bR2>0SNSxJJ<7c$0P"eK {(-s 'H-_IFz&:!^[ѽ\~@}qf/R^CLsm))`#<K?z38Q9)vފrOq4N/e)i+5>v>#8::qe]ҢkYJږX5l &$KtPE;e p.`%`:O)-`!|7E_O UorF s֬! rsi|?dECh'>4Ց?.1m)iJ L1fQONpsTCmOQ%㽍đb"cpڛXPE.ݫ?%MR!&U?41`W(I2f![H`Omo [>EՉ&Z6`p"HAE 0H4v2NPVߏ~O,Ĝ%g6ήߓ>CzG+[2M7'[1˒ꐖR0(پnÁa1䤘 c)_>S<"S|ivڸ_8Ag?ۑJ`@j|-`\m2euX':@cc/f?oԶp8PTwh\3Ca86Lok5Vd-b"֓J6L&Rb-WX>a|>?:kM@J1nBk<'ŝ1%inc8He}z^!r%{z Mxiw|7|^Bcs+3(O3^^R~|իʚJ=Q]}` oK{JNx'nXRB A"#B2z2GHt^j#3~p8Vz^_L>f<ۨp&Cyy6m" Þ={/ȧ'1()ś!z2+$7 6~P[H!A:~!IE{x ScwB^EiR)`u ⓡ&##[j*B]],\C ! d VmRhIfJMC#(B<0C{wpb!&EZI[{=w1!*ű,Xɻ@{{vFc8ƀF]'1.͈kL~Th&T">djOuRlXߵ8݉_I㡝uRP3c}()Ҋel}9Krj^g矓O__BHl(1cw4㠵vSS`bxl0 1*gd0693sȊ":?m{sVb~[12>PTpw3_~_ t^!R⺚t֭[Gss3<@ E!u[&>?%JaXL-R"-@y$;[N1׊zM=7E{՝Bh!9'X^gqj(?qwV BInC Zcfw"_ BJ5H3,dbBw(N_=zR~r>I!lne=.[E]QEcWdPrZީA(uitZOܤ41d|#)WV+ Hﯛ/vRa\u;dHaR!LȣazjSLo,񸣌1\ !}D~Zӟi3fl'& ~ju-@׸Z^޾J $a81|@!0Z_-{E4#ihN@b5JLjHΰ =l i_-FG/˜spxX^8͇>GjX4,oo p+ '++=eݼPh[زޮz=E1щėN525{3h3=C0oR-Ui#:1ê7U^o5,*sYX\]j/>xȞ4|V׍ϲ;D.z?Q0@jIENDB`gambas-3.16.3/app/examples/Multimedia/WebCam/.lang/000077500000000000000000000000001411575327000216705ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/WebCam/.lang/ru.po000066400000000000000000000122461411575327000226630ustar00rootroot00000000000000# 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-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 "Скриншот не был сохранён" gambas-3.16.3/app/examples/Multimedia/WebCam/.project000066400000000000000000000005201411575327000223350ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Multimedia/WebCam/.src/000077500000000000000000000000001411575327000215365ustar00rootroot00000000000000gambas-3.16.3/app/examples/Multimedia/WebCam/.src/FDevice.class000066400000000000000000000147511411575327000241020ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/WebCam/.src/FDevice.form000066400000000000000000000074111411575327000237330ustar00rootroot00000000000000# 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 } } } } gambas-3.16.3/app/examples/Multimedia/WebCam/.src/FMain.class000066400000000000000000000036631411575327000235670ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Multimedia/WebCam/.src/FMain.form000066400000000000000000000025751411575327000234260ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Multimedia/WebCam/camera.png000066400000000000000000000020031411575327000226220ustar00rootroot00000000000000PNG  IHDRj 1PLTElllopnppoklikliklimnlnom245lnk.46.46"$.46.46.46.46.46.46.46.46.46.46.46.46.46.46.46.46.46.46kli𷷶TTTIIIqqq؜jjjXXXϐz{y|}z||z{|ymnkiii}QQQHHHGlGlGmHmInJoKoԹopm+Y4_2^0]/\-Z+Xpqn)V0[.Y-W(RJEKKJ665nol(Q-T+Q#IByAwAutttsss(K|%Gx@r>n=l~T (/ '*&.!!))%%%-%!!##+, "",,''*/"" vIENDB`gambas-3.16.3/app/examples/Multimedia/WebCam/settings.png000066400000000000000000000003701411575327000232370ustar00rootroot00000000000000PNG  IHDR(-S9PLTE9UxFzBk9Ux?cI|LVCoEzㆧdǝ|VÂяԭ tRNSXYjdIDATӅQ CaN zÊAb"&6ǚms[V{ĄhȦa";o^L:/5 :-d\aMDeXE w/?:w//yIENDB`gambas-3.16.3/app/examples/Networking/000077500000000000000000000000001411575327000175705ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/ClientSocket/000077500000000000000000000000001411575327000221575ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/ClientSocket/.directory000066400000000000000000000000411411575327000241570ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/ClientSocket/.icon.png000066400000000000000000000067371411575327000237100ustar00rootroot00000000000000PNG  IHDR@@iq IDATxylUW~?g~ϻ1`lYL@BI:mٚJT(Z:ivFUSM2 %i3I$b01 xy-{Om  +s{~~mmm[K]}OzB>)I ģ6DO>:fm}Y镑g`O3nzwlbW yJzEgaalٻf5W=-oIlNjL<ODSDX)''j)dL+.U֤1*= (GF*64'uhmM8K7 3*TqKN~ !y.{w)d^j[8߸)HoIiZiSRM@L_s9 DeSG ,BJi-ӖTQ'q=<i;͙}H%tJR81fZ),l*)c=@;-N^ڟ2g&2oSwJĴS~xm_lc-gJ2xI\M8 y%h9we_BGLiJĴ"v=U?/gWRȳ`H8|mtaYeJnbΡiULM* 9`+{BJ8'uFL] :YOtAS1-MɃB؍‰O0B! B",{_B(11;^j'l %0mK<~pll c43ZO鱧㾬;tTK[Ƈ6'3/IA`D 6)DTRA@޺AĿ=gP;A00fo| ;܃T0p` W0lV2}2cӣYu?+>FVnaFIs,<UY 4F /]?]aVT=P FD\XJĄ x Hys(Fד 9#Xq盎̝G=', Kg[KaywKX>?v&i0>B7 }e +ikd7)Vb|CB JJF,!=8hחBl"X 'OA_TB-!ͧ( h3YiÂOބ Q3<3êVrF,5jlbgShZ_ ɠk&e|LExR,"P!QGjMwm:74?gBplUL1&:UlG!G"n z%E P_HCJv"4ѱR|RaRgP<9KWZВ } f E0E$l& 'զR0a%3ٳ!|>&Q<{_4 9^El\& @0#D}}S/*T@{86Z+ ,ЕcFRM%FN ȜYBC8B1{N5R][߁??# +7O6PMܱ>1fӊCoS׼#R_6(EwIň)>6-YyX~?c$lE%0bhZ7zbb|!dWG+tZYϗJss+"NL#!ʗ1B,%Qԝ]P@4IcA+n_R>}# OB,HvA{>ڌ칋.:cAPJ,@,TzdLdJ/ioyWX 8yѾP],.,bg;IEC~:xB(BQ CSyp _~/q Jh3}̜|߽I[b"ŗ6̯bN}-{=*r •%%k/dfZOEiu@xu?(;s 7N3 %\@LZ^Rӹ\5&$BZF\bmj2jw+9%$_~Ƿ, 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 :" gambas-3.16.3/app/examples/Networking/ClientSocket/.lang/cs.po000066400000000000000000000046761411575327000241400ustar00rootroot00000000000000#, 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 :" gambas-3.16.3/app/examples/Networking/ClientSocket/.lang/de.po000066400000000000000000000046611411575327000241150ustar00rootroot00000000000000#, 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:" gambas-3.16.3/app/examples/Networking/ClientSocket/.lang/es.po000066400000000000000000000023141411575327000241250ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/ClientSocket/.lang/nl.po000066400000000000000000000047731411575327000241420ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/ClientSocket/.lang/ru.po000066400000000000000000000126241411575327000241510ustar00rootroot00000000000000# 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 "Данные получены:" gambas-3.16.3/app/examples/Networking/ClientSocket/.project000066400000000000000000000010471411575327000236300ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/ClientSocket/.src/000077500000000000000000000000001411575327000230245ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/ClientSocket/.src/FrmMain.class000066400000000000000000000137311411575327000254110ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/ClientSocket/.src/FrmMain.form000066400000000000000000000026571411575327000252540ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Networking/ClientSocket/socket.png000066400000000000000000000042301411575327000241540ustar00rootroot00000000000000PNG  IHDR szz_IDATXil\xv-veqq@6iE-M(-HT*V*@B+AT&%=cǞ}<\L=ǡ?{{u=9y |KVD"lD"ܜ-2Ϸej\.g^o#nm۶9-( l2Z3^Z`(K $F^={9N^3 xqBеx5#7{jp@#ֶ{W_yec=KӉ IR;wد].8.7rXd֔V qGwoϹs'AH~E̙35k.릉rE\O:;@ZEes|`7bAQ|>pԩ^w+Pu鞽eqZ\[%rp=M>^|>R$F۬yg_xBp˅imX*~EkW|DFA#Bc% J.EXyMf$^EQ{zg퍾sS{{{W755Tdˎ9rq ꖒHԕ$]IG,8D"XOѐn|WUuiNEGGǚիW^jU}6%H IN{Z4"P[ -&$d\A; ub0 ŸG,2:jaǭTWU&:_{'ׯ?X ň\v-ޑ\40A0 kTP3F (Bm&uE e+rSylt]VfD"qB/_~'h/TC5P͕+pmV2ـ5Az{1sv}4zf%% ?(뿷Udb1<OҥK~fȰDd|7/IiNd0m$`kuj{9%:-B=Q>q2 `X,`ŋSq =`hd  t 0 ߙcQ.gA}ɴ2L57*B!z2gϿ2k^"0jjl NXD78ÅF]N {z+ R\$#Kp00%2 $$: 4EQ! 1pT˒fA̰ FZXᓏc0.p"Jz ^%}rPoZf]Y:QXP[ @p[#AW0/bItNX!sT55vU͝Sa B*#KF|odzv={_xBRAhb5[X=}xymȂ'-hJߟ~GN87CS5,!IlU:,/˰d Y LwU`Q/)G(˹ӢQ! SC|Qظ<HC:ÌP0O$u \Wpbb \r"iH)y9u ^g5\.f#L !|xVu n7\!DN\UO8WCYAOHSj4F&/& gڠ6nuû`@*?d v9SOFBn-+!#Kr߈_]2k4sF UP$@<LLp깯_ypVniu⏋lk%d@`d4SҀAtlj9!9knD~ڞS=KHԟg^y~'di2$,AVLuC'ٽf&RFs?X`lf.͗%'JAu{/x?Gh`׽%62[fYiu&Yk2,SX" Չ`2#aoDj,~ o QsѦIENDB`gambas-3.16.3/app/examples/Networking/DnsClient/000077500000000000000000000000001411575327000214535ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/DnsClient/.directory000066400000000000000000000000411411575327000234530ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/DnsClient/.icon.png000066400000000000000000000450451411575327000231770ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxɏ$۞9 y뽢JZM 4Dذ- رcł] j,@ ꦟjx{sw9?9̼73Jnv C~lE_&3zTi1RzYG+5})uzD@+u_%=j~?/~dAf<2ˈį"08]+|_=BdsEyb> t?}&" *ד徦%>p  >?x:Dhc\JkMWcI1Z%&VﯞǿQ ɥ~YM?\8?/s!?S‚#b}'i}3-~e:xAb~x>D >0ɥKV?I{į4XoNj,Z}>&U,Si_ߧ [(owK.~wfO RL. O.Lדj%8Yx?}T}#YkӍ'~b\]P>0m N{>![,'ľ?ʊ3-#7N"Gٗ<:=_kגM!xl?a| `pxy~mOkM~IfMBׂ<˸j~}hFSdZćBbouϟNI' '=$Co~zP>0a5\]jOu|1=sƠ։F#L Yku N*-3 G䝶rg{=fOCJx0<`KC~`[R>J@z5ߓ?`zVTnl?13@9>yX./t (DIMb>'C{PW>L PJ)@FDgɿ<ڟI˲)txFa@L|z}8 >mڤ ]$>9̱HRXi‰?FB=83'o}"I?8;'@p]k,7$3N,f֬Η(W$_!ȳ8~N>!vB,m,MODg"Z?qɟWt%ɍ5#N шNL`*3"y* hyJy ?}:4?S_wP~r=Y@];NDp_0S d6d3ыw^/@:Te8O4ؾZ'@x??_чa۶0gd+*>֏ ՜!8iӚIsJǬOR^k%8] uqm{ ,(a<S{OFp:PZѢTdY_g뜅N'ωH2^y?]C1MeQ8  s"Wv|~9qgX$rNv:ʒs"WEZ"rz,䐠|,YP1s*a]ΒW_Gs>2H$g"~!')} +QHOD-}"0)(II'?AT1;)S(QJd&&ݽ& >+|)I9!~x 'KUӄ'?BKt:Pl* dɯVމ)-(4 3ZL$W71V^>K;Y K!TأUSxrFV&OPZU)(iʠtcjhgΤB{j%{*UZ_CM)(,5 KD׏&1™=?yuNޑt#9̛$T Yڅ/6?>[ `B HdeILkpޤT?SZ|H/0rЏu~o)cYʏ2uZo-@ % :0IV_~bi,N?I3 'ݺ׺;֚}<Ixd_0Ԇkq32'LD{9MxrbkN3N|Α{6JXg/EiIFlߋToqEPJiΔ gك璿_ 8 `B2w/~JSh1>]&tu>%6 UaE|b5 $apngI_0A+ђ5T NqS3ZDuPP5&́[Ox'M@ |mk-ĨϼiIIcEO|ۯï 0ZaS ק_I|*|P VĘvMst/iRK><_}^$~O_0aNȩ?L"w-TPGn{Vi@j7G 0 #g>lOZXcK3yP7FO? #}AW6,eGƀfƿ7!Co'wώ}!̧=wo^%rX'L8i{tc81ݿ'xAYPC১}_0οNS; >!~rۼwo!ӺË7TEhp:tC^AGA.?!Kt~+(`pǸ/O?WVDdxOAA*c{ON{}#bcQ @U;WM~+RQ4. !P|_((ο/> ~7((( 00? PlE(( |-D@Ј(&B&Jo (=,ZZmMJdn6T^QޛW"ΒTPgI1bevxqbDR" :2tk%A"FE8UN{ h4؉_ (,(JŊ>TiӾ ]9D8^c3Yk%H^*̛S#iMOcj=聚7D :FDMKAq~T4ckBÝo amhB(Q>ZF1I#q&@gVmhp:bS<#[}dgl1 h#DD)?/f*D$KP >&?d>(-]lbA6pǖҙ /.Z@2 a1OGҳq1ZU0GQX}M;6H*JfYkCDi혦5 (U~$(?F18}f"ooE 5-F,!`fFР0I&F$v?ѣ(x;ZƸN:l詆K#i И֌f5#N̈>#!"p r7Vt11Njk0V ʴ(Ӡ\3-q,h ڢT"Or>EbH1 #! 02#!ttC#4o`k.݁= Z#I+P~  ɶ0M `awW~1tj0MSӨV*P UFcAkJDJ{1C$HB!>x1=#qFGqDǑFwz@XV81:Bm$iE,P?(|VhhCRh Kn%\s[MMmMk*n*ꪢ+sX1V}&ySy:iE}#c>|>I~bA,"k|%0 tӅ@uf:4NfAeF*SADR 1% b*q^\af Ӏi,Mm*K,Zs8g`j13?3%D($ }$GIEJ96 ,uH #*T;͋Cox[vecZ3Cێl@F*8>aQLOYy"Bw[^^ v 5AoKLuE^4[U-M\57ILJk5K}'Z-5OD}2 b|f}$E@+4c6J@/G1e ޢV-;۳;sYu\D5&0O,+DnǚÆ/x1ly56܌-q;=Wd{rײm6ԕMaOD"2'of~qFF IG1k(0֤uUf,+2ݝbE,`zGߵTr#UGJ [;P3Pà0Ia !jn|Ëqˋqp6tfKP\m== ]ŮakIa$.BBA;W5CHTICJ hґ(Eq~$@l!nƚCXjldmuAv HdEEq}_%ڢvlϞk.v-ueiMV'N8j9?10Yퟥ+J!3dZ| B>Ό"+4mmhjU 1(] PDt4c}j(~O>wpCˋ~kɝ\ә=4;v~ \lWL>DU3LsqKNM"1YB*khm6E,jRB*"豄Xs]`zQT> Xls]cո5 ]nnwv[.v[.w\nauC )")Vo`HN2JOCLIȱ3Y Fʟ4d*$`44,Mehk|m"m4r84#"MFymyJ{B$Ga09In+CSiVMV+EB? `VUCm g#lQcG!|}OU®il0A|LzE /zǯo~j˫xA{moyvem`nΡ%&J"~ѩd7&U=%6m"jfiz@Td @M\xxfyo ֱX$6 n8$sh6h`r(Ia[3Ȧ1 #7wqvnFSt(~(NwD)}1j^5/CaQf՞O\_6l75u1!.N5I$}TS/5@@&F#?1݀ FT!@bZZ$2T(*TyH|^g̕!D$ iAԒu15:z1Dn#!pϓnYW8#T:t xGxr3X~mx>l9-lqŎo/xzci+Va7NM9R?ZT9$@ǧXFic41$B!Κ*B"~TJ.҂*(V@Ƒtz h氣*,8D rX15U(V4emxre Z8v=}<¼<.kѐCawCo l7[.|dǓ mxEf/嵓cu)+8kr]BS4#"Tm fg[^j J>*cͯn[~mcÝD66W;yJV*uǨ`] $5>y'gLq >.D$i2 c X 0za 80eS;\3khOtAkE]W9{^:|) IDATQ)bR6.26'zQup;:w>ԼZޠ=j՞nnS^I+oʎIKXOI8*f)R& }b%蔵84zRX rNQD&i5\X9CS96uE[&w$&EZ00EJ8.@8Rn^DD DH-Mox9+ab)O\͓gJYW?N-9soՎ+oɁ::<3R.uϫ?cnI> BIN-MX:LTչmۿoR~@ J).6חyri*8Κ4ЀUػh JRǨn4 WE_1]bwo]quѲTXg ^g՗%w?qvJ3}Kp=ibZ9@MųZ9rT&"'FD5Yp2IibүНu&V<66aipxr=W!pGr7@ւLaAJM߇{;Z^G45/=g491&_V'ם2;,eicKOi S\\GV[iVbN, 5Mc4¹ӟ!hAzO[0f~lƎ>V70#H3"JGAa 97X^5 akݦMMᮦBaѵ)/u~%IڐMˋ7{\{œ5+\mjj]g/)7F!eHG#ݘ4S=*`L*eHsa߰bL%6ʥd64Y: T8ĉfe]n3rpuryrG~}HMRllV?釢hGŭ<k-f⊫+/\ljj7sN.}?bH~Hܸ#$ߏFlѵK` ` 蟨i`!(IM=4k gg 4Fذݲ5 a{}qU=c+ 8; QӏۡEWs}꒧;./ZaΈعğy(p;o]Q7--Mj T_o9f0üM9m?4Z6Xkqasmkژ+W*90J(A>OǀՀi˩F&[tl][ES;W;WaG8K }T Avf2x (@F#D`Ln4YDubվ SoSjڟI0u @?yvdȽ" m*5806s6Z1uYVm^# s{9BT69 +I9ޤ.{g  -+yK~M!~9>h|Tr'#sE_%JGDTb股"S4-W-VKvܞK#NUte~Ҹs WulֹDZ1ZU*ox*,!r^yGFrvRs6*%.s4 ѮR䛻R!r >FIfՂSPS*a p([VuU6 E1At>wbǏ>BH%JAi*$hmNYLTW-J$3q1d$F+0Y,yf@[WrLU15rl[aiւ8X`9 CePAJאGPL jny5wcSl6-vӲmIyr}T10@XQ9GtiKoV5S-8+ѲZ!B +*v̓"RT|'?@̜Ei*muz>aj*Z\q֩T q;:^w#[J JDaiRwT m۶MEUY?{)"臑ǥR) 㪴m-ƤvUNrN)M=Zz}FpWCe(YVZAj S(5lۊ]ko2GEt˩nZh+t()=5<6(M0T7O56lwLvSZK>a9v=8Zj_&0-\  bRy@ a$6 U(m0XKcǑޏ>r#]9ɩ'wFT\ljv'HY6eԸm4ct(hp*ҚaDÝ77bj m3rn "ئL#F0x#*Ma>WUuE4M.>ifORU7BmڟkհFg[݃m j2[yĈDE֕ sCjE] 44 JU4ͦbjX1t T!yA}Ih8Q;B*KKsLNHj٣=39aʠE76SLa%n\4ID1J*zp.O.g" {7w2ZM,V^q 3z&w@ Z+#QJS9GUՌ O!Xl4tfyj( #MՌA{`4TW;Mt.I!އ#rSq\bJ ~1ִ1T\<:WNzNoe|yp H #Z|m,ΥepN JT12Gb6Bd&øvbyo=G&r5 +\Q$A'ҏ er񍙝UquC(%di)!S;69ø SAӤy5M xd_#b@ɘ&+.Ny)2E"4:.1O&?,~ IMGʢ*ҏW7{~ҠQkMن4h:T0 0b ) 1jC̈h]ЌzlrkS!&? syT6%(:y5FK¸+ @O |^a*?9 O@V$.įdĠڭ4֞~\1z}cGY֤nS#>űh*G]U4U YBX"1hz1 A3f+k~( 0A :(AҘTaM+ɾCsÎ1HJuʢE I 2ዬ WA&~u^b?c-yc$f=l3Ƒ2LX@R#JHr* teC"v[W* H E*7]U8WR)T Br"gd/ 5^}ik0'H\W ѧ#c*i,Xkh^{LkbHQ jgkG!XqaiG1g.yF [DaP@FRQN7AU1DB+naNrMY' cC&g[1P 0 -4kj2bR!. 1r8(tIiU"w9(4Ԩ'b$5Q QP=0Xx,bΥ> TkH&*QDžI%g[圁c72B][PHְu%oH*( &&S|1$_jFr7 E5۞ %%@e ^Hx~jXLѼHmfF4!%Ag&a6ʱmjF? ݑc#1n=/o91N,uE~Ĭ ;JKd%c|L1 vԠw2!en1hr4ALZy4or8 Mh1{н?@T&w^2R1CzqƩP$ƔHu{yus#/^uDdb(ZOn?EQ<#EbT >M>7!1dpL:<rʔ9ӌ *H|pO)_Wm[B ;?(Lu wǁWY9"eMS+=M|!^  ?q+UDǖʃA!H?R2۾HL5*S@PD=CJvD:O799^9_CQ46[IOxR1;ɡ¬[0(|$f8ch\.B!~e7x5cL~cHwcH->N )!mrb` uu$?ޥ**f]5y)SBoBa+(Ol$]\6Mj Ӹ*"\Ʀ斃O?8x)~ճWYUC70&YA0)wBA;Y+ ԇ!QD? OI?߸ȷMf3zsඹᥭiqt[+)$XDF ,JiHC'Ǽ٠Bd!WweU$`s,@Ϡh菌;3ܻ7ENKL^8q:nUM a<h[RK-WuzWD~ xY TO<=pg_RQ1`#H4֚C5JtRAi,Tǖ?pnA Df[goUIcS3 #!FMɫ/o#tH#4N 6 &$e=䝀@~['yꉛ;W VY*fi8&U *FI SJQ UL6F2,vC5"Q D0Z`i,ίkex\MIx2TR-BL.Nʔ%1E_IL|?y/#P[;^Tӂ9DM]z*fb69ϧ~|=pW**{S܃TiEhhk嚫hib+lTCJdc"FQoOPs(xqc1,GDatU_T(hADQJp:N qðh>pt7,ֳ{P6w 9T4I>|LP$y+ GEq0ڑz0FopP;4!,Zjq*?|;OIHEb?ܚ;톽X3vbT1btBM'rEX0PP&qwrnp`%DCKOŀ1;il2)-ay >pˋ;w lب--*ѾV=2&k (  4;nٍ7}K`MH `.)> >Op|9pK?tWl-}C0[u2GOmxEq# FW4V@'=]Z`L<\0v#c7BaŢGKP#{;pF6P Sݾ %;?{3vfoÁ_or>IqMx}=M5p} hT3}7?)xn-|>IqMG@3jz7b]5ra=p&m<|5"I̧Qx_  p/_6| O<g>z:;Ҋw\`JEy[} aeg6<~F=FVvz3{/\"7[en|g5;*{;g=|t;;U|4[Q%1=a=~MŞ+sjE~~6{տ"> f2 7[Þ'w~~D|Otk-mxyy*WfWmgS?~gbAڃ:Nr80vn8&N"VF/Ɍ4S݌g3ؓ3i_0|G8J81zhr+n9OËQmtwF$s'O)&л|2?{!m+S(2byk8i߯7I'g*&`|$ fpCB@-1dUvè{ώx^Ms [v,ʹU!r,HOo4X}]f,vy8 pA4i'Py駥bU1n˼:Y4R3̮!T$v>.n qPyiH!T$ Y2KEL 5/PpC)T$psҐNj},d mр43߷㶸wؿ8ƍb􀛸L} > ZD#kM@/B?L&6\:_Մ 7.்-@`W/C?iPbJ:J/޸U gho긶KXݤÎm0<5iH+ *d[zuh]+WFr /o0nbI+PpeT/E.3Z#ZvB&ğoˤjyi"ي,;3W]omfG4~97y-6 ?H<Ē__|nҙs/ ü_uq?ۏ ޟ:>bONa x2x8F}&<}y<Ϳ,~| 8+oٱTiVf4@L-HyξyR?GmtcV}?;fUac+O ~68_/㟥Ƞ;`S*sO $@9G e]}|=?iYݤ3/;c\;i*n|1|vQ{u˯~ k$F fAΏOF^vνW}? >vo8р R7w]ιWљB uN@2->U( 4&nUTh^-7q`_mb3/`y7:k~rb3zjxeqTi z41Fې毉LfxϣxWj,@/_:CNzݥ\^W>47/[(>rk%ϰw'N\C"K{.M g4ܽeF {-3N\o;.&MGw+}Hfp2xrw_24;KB?>2@=B٤:|Uhݻ[) /Gftv8&H4|~A >2eZ.SGWUpY]]x8zc}L>A; p:M0nۖ&79;>earvLW0rFrdg,¨r>\/~H<5k7:cό=δh\dҸGc^za2x=26odaڱT\٤ņwe„qOgfS0gV&2^$y44O̸ #Fi6QO,_/g6},Mj1g9&Ȋ} |ؓ_  8"8Y.o{1$@y`P@JwTs$jmrs|&cy񆳧6Ʒ `FApp|(UA 0y\ݠy (_Ae0@  [nb:S? q- [+-Eԗg9XwƞB^h|/@Y#-o&~%Wqn(U# P݄W3ZL F@  F-! F@)h0  `4P F@S[D_  `$h0rB!B!B!B!B!B!B!B!B!B!B!B!BQx}lIENDB`gambas-3.16.3/app/examples/Networking/DnsClient/.lang/000077500000000000000000000000001411575327000224525ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/DnsClient/.lang/ca.po000066400000000000000000000035631411575327000234040ustar00rootroot00000000000000# Catalan translation of DnsClient # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the DnsClient package. # Jordi Sayol , 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 "-" gambas-3.16.3/app/examples/Networking/DnsClient/.lang/cs.po000066400000000000000000000031521411575327000234200ustar00rootroot00000000000000#, 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ě" gambas-3.16.3/app/examples/Networking/DnsClient/.lang/de.po000066400000000000000000000032251411575327000234040ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/DnsClient/.lang/es.po000066400000000000000000000024131411575327000234210ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/DnsClient/.lang/nl.po000066400000000000000000000031621411575327000234250ustar00rootroot00000000000000#, 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!" gambas-3.16.3/app/examples/Networking/DnsClient/.lang/ru.po000066400000000000000000000047521411575327000234500ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Networking/DnsClient/.project000066400000000000000000000005151411575327000231230ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/DnsClient/.src/000077500000000000000000000000001411575327000223205ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/DnsClient/.src/FMain.class000066400000000000000000000133101411575327000243370ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/DnsClient/.src/FMain.form000066400000000000000000000045621411575327000242060ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Networking/DnsClient/dnsclient.png000066400000000000000000000034201411575327000241430ustar00rootroot00000000000000PNG  IHDR szzIDATXýklsgvvgwm^q1W&GC?T%R)B%R/iSZJQP5*jӴQ&B(M(4`06]? :&rǎWrĶm ]/9yi iPTN~;oI-\zgs=,޼wFH/oj*C$5ae8S\drE\&CY _[޽{pߣߙ?cm/HJDBWʹՁAy*b^ϐșlhC 3!~wWt\ B?iٴ+g\;wG2-gIEԃy41ԀA:F*ӵ ɉkhgz`Ւyq/bp u7)@EӚW.n7 +Uj+èEĈFDh(ҥ} fK@uA@sı2YwOVf&ʒ|B(᠆T*AU\¹3 R28z}` MOl_8y10==<EQ!_(lχUJZ(Y&4u\1u+B}EeLzᇏ"||m(hZ蹜Khh]Rޙ ~# \ڥV@@<μ:AynF x@e$L0RE$6|%+HdLI&W$/?Oǂ 9\z˲x䐨R~cLG pY9Ϡ0 /Ie $&H ޡdMS'y.ŭ?yHdi@5+Un d*s,ͤIb9myx--H$RT/~-52I}t@dysp @}gh @nM݋4b~XlfA""lBi-^ 6QWmnmW2^,> ' _DtMy[(gb7N1A{Uw2b7$ބSK> 0A2d2DO=-J{mܽI:YZ08[򋸈F{x=iswwax_ !ǼDwۂ<_œ*>*RœTTPC((>22ǩA޽;qc rܸ'/cOIENDB`gambas-3.16.3/app/examples/Networking/HTTPGet/000077500000000000000000000000001411575327000210075ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/HTTPGet/.directory000066400000000000000000000000411411575327000230070ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/HTTPGet/.icon.png000066400000000000000000000066731411575327000225370ustar00rootroot00000000000000PNG  IHDR@@iq IDATx{pT}?眻ڕVBB/$!BH ^M`ׯ$ͫөi36q;db73iZ٩SdF<$~Kڻ{sJB D|gs~w~U\U\U\[su~ZY 1t^nRsw _t~Ǡ o$yw"3Ug?n#TH:uI.15je[R{Jl6^NmvWW"!CHUU88ࢌv5A%CT&O*[J&fnsoƣo2[iѿdZICQG ωcZYSe>.z'm a@ Q!_NpJxG;yɟS<}H)'ojK7c3>Re,z4BN\}{( g$-Bq=/yi7~tn% e #EKͨ9d"}@(E & 4 zzP5 |woyo'Aah줋v]T~`1l-Kqg^^;mK3{NiyK+vXLj̧lM@ !FWkT^eV)e* q(i=J͌ u\rBXJ"[ywԼL (nis {;v_w4(޷L Gcē.qnX[LO0uV_JM0-0gk}բ[nK"()J)S5Z-O!ܡ~hחޓ-><Ǧd/c;Ho =Ƣ[ظm>%x5 I- A?e9| s9Rb%nz[?ÐW, :X rXss">z>Cu̓Y O$ Dbej!l Fil E%YBMH=3AKǔBK $z` '%Hˢ;U FY\K,@ldW*mmqǥו&-৸`?LcKF{J{J>#D^Y,/&T@ɲ @$@HISq a-"ЖpPR0N^IaA:$$I FG80ea0m0|8`VҞ%Z&vV=~e I]O*Np, 7m9}tpM*T"Z+*!\XtR]Xɜd `-J*JkLKiMMp%c@f&xݡ^|i+i9tS%))mc]e5<$h=ݷ} f-#;`O?(#D'q*aO5L`t@|%Hd*m gcՂ%< X ;7- /s>r-lv+1fF9xϧMᦌkxwήt*\/l"'GQi.2#(]Jђ4BAbBq^nw9uߚ!K%y* l1l3O۬-^+scO?xU(^ZB3ӧ8yowh<9]{Z{hE{*HP V/>`Hk2bT26JSv7O! tB9o>7xGkQe;b,8; BH1ZI O$s\mfit XR$Q)FlWavS7dH!R!Lߌ D4L,ɸ͟@@5 Z s<#}W(၆m)T!\G=x@ԋR'R+m1P, 3M&) H HxpT (+]3*3lTW ***%߫ijIENDB`gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/000077500000000000000000000000001411575327000220065ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/ca.po000066400000000000000000000044101411575327000227300ustar00rootroot00000000000000# Catalan translation of HTTPGet # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the HTTPGet package. # Jordi Sayol , 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" gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/cs.po000066400000000000000000000037471411575327000227660ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/de.po000066400000000000000000000037351411575327000227460ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/en_GB.po000066400000000000000000000033231411575327000233210ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/es.po000066400000000000000000000032311411575327000227540ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/nl.po000066400000000000000000000037761411575327000227740ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/HTTPGet/.lang/ru.po000066400000000000000000000114071411575327000227770ustar00rootroot00000000000000# 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 "Конфигурация..." gambas-3.16.3/app/examples/Networking/HTTPGet/.project000066400000000000000000000010701411575327000224540ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/HTTPGet/.src/000077500000000000000000000000001411575327000216545ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/HTTPGet/.src/ClsParams.class000066400000000000000000000004111411575327000245640ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/HTTPGet/.src/FConfig.class000066400000000000000000000031271411575327000242210ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/HTTPGet/.src/FConfig.form000066400000000000000000000024331411575327000240560ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Networking/HTTPGet/.src/FHttpGet.class000066400000000000000000000167641411575327000244060ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/HTTPGet/.src/FHttpGet.form000066400000000000000000000023641411575327000242330ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Networking/HTTPGet/httpclient.png000066400000000000000000000033501411575327000236740ustar00rootroot00000000000000PNG  IHDR szzIDATXŗilT{2sgl!4p" IFBmJ5ʏJWJ6DRUJTRMT $.@[,ƸVٳܙ鏱qHD_H|}w{tlѶ# dBPҤ }`_uJShy-lZp=DB d<ȸ\G~d nҰ*ش_1Z]ibu4UlRCȕ}g!skk!o/@J4TLCAF93BʈAs-H}O۟Iʭ 㝵ۿẪ0ldޥ.Tg|0 sEҹ"^swG #ޖvJ|>* \hXIwed,OUuKiR9-BFv˜'Ճ^!Bi{hGwO=q5ZΖ6sbQ\'d(S`PuT:T4|?{} c}Y91慡- +O^8T@eˆWXi׷'U"8EGcTTTBU5ECu&b4SΥMT XI9v:F>|zov 4^֡ iC iU dT iH)q<H&T,_4$95Lc_ˏa[XT}EA( |ĿF 2<tMESTTT@vq`<ϥk6[h)NM?yI#;DGDߣ}GhjjuAٶJyeRJ\oapz)ew ]W6~:two!"DU870L$ZEW׽47c` p\|~}*ɫ/M }*/n 鞈kFx{R*Ldņkxe5VѡPr(.va;0)%KבH/ [pb*DBށ+=Ϟ_PI"gsr IE8ѶU|t\SFװ|rK̰AsC MR?t>>ڎQ6P6z:Ƿ+LthPhlG*W$)O[E:W$/1<2L%S ƭm<ջIsHT)90~D {ܵؤɗH$3xKd $7Ciri+G}0H$b"r= ,T\bA5R9V/jJ¢XR q}KIj&\#/~mu ~t]7)>"yyayܚ`o׉jJ.h҄ͳH9LY) αn z8uf|\\Ӌrj匾\;#gO쁷:P   Y:=oM~_mT;; +p ^ItVqCҩ(o0@Ny;Ir?!/5g=kjX/I@y._Lvvn6Θ*T P *D H>BQE PP>Ir/>"jkk'D w&M/2 IENDB`gambas-3.16.3/app/examples/Networking/HTTPPost/000077500000000000000000000000001411575327000212155ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/HTTPPost/.directory000066400000000000000000000000411411575327000232150ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/HTTPPost/.icon.png000066400000000000000000000066731411575327000227450ustar00rootroot00000000000000PNG  IHDR@@iq IDATx{pT}?眻ڕVBB/$!BH ^M`ׯ$ͫөi36q;db73iZ٩SdF<$~Kڻ{sJB D|gs~w~U\U\U\[su~ZY 1t^nRsw _t~Ǡ o$yw"3Ug?n#TH:uI.15je[R{Jl6^NmvWW"!CHUU88ࢌv5A%CT&O*[J&fnsoƣo2[iѿdZICQG ωcZYSe>.z'm a@ Q!_NpJxG;yɟS<}H)'ojK7c3>Re,z4BN\}{( g$-Bq=/yi7~tn% e #EKͨ9d"}@(E & 4 zzP5 |woyo'Aah줋v]T~`1l-Kqg^^;mK3{NiyK+vXLj̧lM@ !FWkT^eV)e* q(i=J͌ u\rBXJ"[ywԼL (nis {;v_w4(޷L Gcē.qnX[LO0uV_JM0-0gk}բ[nK"()J)S5Z-O!ܡ~hחޓ-><Ǧd/c;Ho =Ƣ[ظm>%x5 I- A?e9| s9Rb%nz[?ÐW, :X rXss">z>Cu̓Y O$ Dbej!l Fil E%YBMH=3AKǔBK $z` '%Hˢ;U FY\K,@ldW*mmqǥו&-৸`?LcKF{J{J>#D^Y,/&T@ɲ @$@HISq a-"ЖpPR0N^IaA:$$I FG80ea0m0|8`VҞ%Z&vV=~e I]O*Np, 7m9}tpM*T"Z+*!\XtR]Xɜd `-J*JkLKiMMp%c@f&xݡ^|i+i9tS%))mc]e5<$h=ݷ} f-#;`O?(#D'q*aO5L`t@|%Hd*m gcՂ%< X ;7- /s>r-lv+1fF9xϧMᦌkxwήt*\/l"'GQi.2#(]Jђ4BAbBq^nw9uߚ!K%y* l1l3O۬-^+scO?xU(^ZB3ӧ8yowh<9]{Z{hE{*HP V/>`Hk2bT26JSv7O! tB9o>7xGkQe;b,8; BH1ZI O$s\mfit XR$Q)FlWavS7dH!R!Lߌ D4L,ɸ͟@@5 Z s<#}W(၆m)T!\G=x@ԋR'R+m1P, 3M&) H HxpT (+]3*3lTW ***%߫ijIENDB`gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/000077500000000000000000000000001411575327000222145ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/ca.po000066400000000000000000000032471411575327000231450ustar00rootroot00000000000000# Catalan translation of HTTPPost # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the HTTPPost package. # Jordi Sayol , 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:" gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/cs.po000066400000000000000000000025761411575327000231730ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/de.po000066400000000000000000000025701411575327000231500ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/es.po000066400000000000000000000022441411575327000231650ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/nl.po000066400000000000000000000026001411575327000231630ustar00rootroot00000000000000#, 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..." gambas-3.16.3/app/examples/Networking/HTTPPost/.lang/ru.po000066400000000000000000000074351411575327000232130ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Networking/HTTPPost/.project000066400000000000000000000010271411575327000226640ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/HTTPPost/.src/000077500000000000000000000000001411575327000220625ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/HTTPPost/.src/FHttpPost.class000066400000000000000000000043201411575327000250030ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/HTTPPost/.src/FHttpPost.form000066400000000000000000000033701411575327000246450ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Networking/HTTPPost/httpclient.png000066400000000000000000000033501411575327000241020ustar00rootroot00000000000000PNG  IHDR szzIDATXŗilT{2sgl!4p" IFBmJ5ʏJWJ6DRUJTRMT $.@[,ƸVٳܙ鏱qHD_H|}w{tlѶ# dBPҤ }`_uJShy-lZp=DB d<ȸ\G~d nҰ*ش_1Z]ibu4UlRCȕ}g!skk!o/@J4TLCAF93BʈAs-H}O۟Iʭ 㝵ۿẪ0ldޥ.Tg|0 sEҹ"^swG #ޖvJ|>* \hXIwed,OUuKiR9-BFv˜'Ճ^!Bi{hGwO=q5ZΖ6sbQ\'d(S`PuT:T4|?{} c}Y91慡- +O^8T@eˆWXi׷'U"8EGcTTTBU5ECu&b4SΥMT XI9v:F>|zov 4^֡ iC iU dT iH)q<H&T,_4$95Lc_ˏa[XT}EA( |ĿF 2<tMESTTT@vq`<ϥk6[h)NM?yI#;DGDߣ}GhjjuAٶJyeRJ\oapz)ew ]W6~:two!"DU870L$ZEW׽47c` p\|~}*ɫ/M }*/n 鞈kFx{R*Ldņkxe5VѡPr(.va;0)%KבH/ [pb*DBށ+=Ϟ_PI"gsr IE8ѶU|t\SFװ|rK̰AsC MR?t>>ڎQ6P6z:Ƿ+LthPhlG*W$)O[E:W$/1<2L%S ƭm<ջIsHT)90~D {ܵؤɗH$3xKd $7Ciri+G}0H$b"r= ,T\bA5R9V/jJ¢XR q}KIj&\#/~mu ~t]7)>"yyayܚ`o׉jJ.h҄ͳH9LY) αn z8uf|\\Ӌrj匾\;#gO쁷:P   Y:=oM~_mT;; +p ^ItVqCҩ(o0@Ny;Ir?!/5g=kjX/I@y._Lvvn6Θ*T P *D H>BQE PP>Ir/>"jkk'D w&M/2 IENDB`gambas-3.16.3/app/examples/Networking/POPMailbox/000077500000000000000000000000001411575327000215425ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/POPMailbox/.directory000066400000000000000000000000411411575327000235420ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/POPMailbox/.icon.png000066400000000000000000000101521411575327000232550ustar00rootroot00000000000000PNG  IHDR@@iq1IDATxݛytU}?3s߮ IHhIf36ر qKbMҤdifkҚs|r֍صcǐNN B`vо/Hzz}-Hb9̝{~y ^h `kKjOyn -eFaϾ6wۨZkbcf$[sAXh7ISDO&3  kof㧊q-OT@qFEh5=ۆq i^b1E2VZ |NP ٸEa~vV*~v[;J[J)rw_{2_A6ӳSLnv1}|",jxzg&Ӷ$t4:1NE@.} Ԑ}{{סLbRGIA<^ϖ*pܿs~K1@/'@IjƍœI+/]үh]w3jWaA‰cmxԠu+Jf-H̕ID-~=(6}' }~Vmky*[cx& Hg֮,5`!9j0QKISR.TZ}-eRJER W}0JJ%0@7hסuk`՗ЮT>ɀ2fy[ .ZfF)KRSA{Qw~3qKY2(.@k{6#JOsOF 7ZtVd̒إmca|.dVw7)B`N ֬co2.ڎ3+SsS(픂I)q:hl=Eա+IB994?DҟBqѱڎk1uUe`Y >벧QvZJ,%MB|1^zѢ$B)R)OɅW6dtx:^K0Kc6ә[]ǪhkXL9l`p @}q8}}};p_0D8>G[bN%'ZUiZc'f.|?nE* UKa(lÓLmL\qv!߹";1$w.]ĢqPJRPPHuM=~:q RV 썷y%ELH \!H$mh=Dam $K[ypD^>JjV8'ŗ1/\w *\HJIlD" 7|BvYdǀA$`ເĄ$0BJ847Tx,>v/"㥳B^䀍 -k%>BB m,_}|2;:q] 3(amnFD|H@ys){E/X'ҲhIj IR 8C3K&@~9"d8@kMNvDx"F(J/d :XMϒW*Lp"K BJZ>ä%v |b='擰m6J zSCdi*'ڢK"`Y4(~Wo a%_ ]0%=P7:D%1!=xQt7ccIXv^>< i8ה0c;#}RŔs6>g>[n+iQ ?V*PP4\@*25 M[k8ih9Q 6oSX]*30؆v.d'5eO:!o$0w@ۆ2V\ϙx9O~}bxp 08 Y+B4pZ:sygo%#+ - ūX|pcƘ U_ߎgrw=T`cI#+Rg#rDN͍ʯhK 3d%)R" uYmIv50݊ډSLX RUU]{__Ќ"%QTTp?3%7h[5IU`\*05kvFXJ{J 1@ W$~%RRV]7 ?-6i5/fQjġByb~^>KknD$Gas%0숔)ʧj"w҈8nK!3mX`;nNDr~SW/Nヷ{뱷hU~3@JLg3>fMeR,jNdb_ܷo p>柽yTǒ}Rs-$6`F]h6e\F<䄐C|v]L~a1{+^gk#X<߄\z1jJ1;;5]\r%3LH34Y =+rpx>xf߀sldFAjVܺ% o{Am[ LM-P2{1׿0ĐmR( zmXt\=N]L|V'@k~f|FŒ c];!#@ BaB.Uxҽф#q[cB( ,yrԫuxS2fԵG&iG:+?[!@ }j $>Afy@*[&$P$QFW>^aHRYB3[grt4ںm6?w/qZ1k>|O9|˛ SZ +V,Rw<^J]C|[vBG9;f &RҊMǗN&; y(k';i)b 4e#:?oF4O0ol wΫ+f칐Jq6?y=Ks5CTͷ=7IENDB`gambas-3.16.3/app/examples/Networking/POPMailbox/.lang/000077500000000000000000000000001411575327000225415ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/POPMailbox/.lang/ru.po000066400000000000000000000063321411575327000235330ustar00rootroot00000000000000# 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/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 "Сохранить" gambas-3.16.3/app/examples/Networking/POPMailbox/.project000066400000000000000000000006221411575327000232110ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/POPMailbox/.src/000077500000000000000000000000001411575327000224075ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/POPMailbox/.src/FMain.class000066400000000000000000000031741411575327000244350ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/POPMailbox/.src/FMain.form000066400000000000000000000016741411575327000242760ustar00rootroot00000000000000# 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") } } } gambas-3.16.3/app/examples/Networking/POPMailbox/.src/FSettings.class000066400000000000000000000023361411575327000253500ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/POPMailbox/.src/FSettings.form000066400000000000000000000024011411575327000251770ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Networking/POPMailbox/pop3client.png000066400000000000000000000016751411575327000243410ustar00rootroot00000000000000PNG  IHDR DPLTEu-t,h(u-F۴ʹڨᳵ^Σܣ뺼뢢讯خ亻譭俿--u-B+tRNS / 9;:- @jafIDAT8c` V~<M@PH+e)2b`r J@IEU^@M]CSK[G kjAÁX899, \\AÓˌ ,VFA!!AF1_p0珋$$ARrJYZzFYf@VD, ;rE Ds`%eU!!P]S[Q^VZZVPWR-M u`mR(A ')[&UTVJ:}` QBU0P#*!A*uC+n\ÁoHrf?Nͼ\|ڒaqIENDB`gambas-3.16.3/app/examples/Networking/SerialPort/000077500000000000000000000000001411575327000216545ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/SerialPort/.directory000066400000000000000000000000411411575327000236540ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/SerialPort/.icon.png000066400000000000000000000103401411575327000233660ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛy\U?WU][;K$ Q"ˌè3:8ǣ3̙?0"jQ $$tNZ{7ILҝ`=SU~߻%Pe֠ ogNד63AJ<?kZ6A'@ o.h鉳k<vPp@Xh&vg~~a P?  \µ|uG7 r < ēS}xJ~u޽AuQ K_|c n*n*n Eqttl߮,>DAH~l?{K"bOrugB|=;@H]>Tq~h8'>7?R]+GﵑtP~}20Bܷi{w6W .@^xo~PR3ƥdj/JaYy|oԴ'pc;-}+1/?5dyA(0.W ڳ@p\s MmnDXv>62<|bn4sMcu>+6xv~^@`arhڃxʼn~-撢`BcsI\}f;:4ޣ8]L&';G [B;x5߈b)#y@ 6C`XQ Z@jbC ;@x&UQ2GpqoƎĜ-?~HW]^ HAtgE]Ԍ|E)ZƲ][ja! `1KIWR5qK)SJ:nae+c@on=vz0rRʸ*aͲ1OhsKYJz[:ʫ?73H%J`r]܌Xah~4B 5 ̬,7nYB;~ipgFr3N B[fqev# `#c&OKL̶A'x+ 0ϵ7:Z\czՍg?bJ K*W9K8=vp֮#+3mH4Ю6+.cs?yUkߏ/\@*`"<+Oq^ޯZPJK'buS^DzK:NqR2# C@,2~ ݟ'bR3Db @Hуx-&]R2nIA|.OÑg kpI8L^^7{AJ)+ɁNU< .-R f4qf\Nie,\ ^P@goi؎SIsS L{ŹeX6TRD&ŀD<61pw.GN{=Qq ?Fs8SCe),[|-@(i"d1-1'oֽBEf7hZtKD>GG>EW\1:WkkaruXOhm ".[$1v?ZW3U:H{Kfͥ4֓*c}G2s~?@f |9|aյx|QTX]O*頵qLjZ mh4IKk$1ত4 1󍸐}CH &iG=d֬ʼn 96F;V>:̈{P +sÜBɡjD!pp]'jq CQ>bd4JV^DKJD|73P"1%%O07Ib!WQBZm܋^5t~gbp~;kW& XB!^/"X4AQQUUtGFqK*S$ @l`L%T@!ejp"ޭOSrٵd@xRJ FnCµsPix)jrcZ(E%!77H$Ac異c 0-GeNҕdא[m֤RH8wF+1ALK!+/c%"+ ] Ԋgn;/:JU`@GI.u-|O,(*"߂5,]}V.1?@QU`/:@,No_ֶ.WWϨ()&1@Xc)@jKٸb-^OiV62͏Sdr_ngm0dֈPRu^t!l჻HE#4K #GQJH:ml'P}n%8O2>t%Du~#eveDo0,YN~T eIDɑ,Z,5gPTE͒rWQ\yr b<nDϕT֎“ܤ41?>ēNj}R2YC^Ûȇ-mt4n+1"p6n)2B !I(@xhd{cIG&)ebT@\/txx. ]蚉RJ;5:kʯ'65@ :\R`1P ~.՝io@r5NǘHN!5 ރ_,OG#\sY(_}u!?$ֱ??=gl>x9f`yx,믿K svu ϝJ6{-ehDuΈO>,o6}y:)yG/qE "޹G'G9 \ufCOy޼W}sPg%q, 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 "Сообщение" gambas-3.16.3/app/examples/Networking/SerialPort/.project000066400000000000000000000005411411575327000233230ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/SerialPort/.src/000077500000000000000000000000001411575327000225215ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/SerialPort/.src/FAbout.class000066400000000000000000000003511411575327000247270ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/SerialPort/.src/FAbout.form000066400000000000000000000011351411575327000245660ustar00rootroot00000000000000# 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") } } gambas-3.16.3/app/examples/Networking/SerialPort/.src/FMain.class000066400000000000000000000145411411575327000245470ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/SerialPort/.src/FMain.form000066400000000000000000000102421411575327000243770ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Networking/SerialPort/.src/Module_Config.module000066400000000000000000000047401411575327000264470ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/SerialPort/.src/Module_RS232.module000066400000000000000000000043331411575327000260130ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/SerialPort/serialport.png000066400000000000000000000047021411575327000245510ustar00rootroot00000000000000PNG  IHDR szz IDATXíil\o86@JJIDЌ tl~AB~(RVR_Pt-JHPi a 8NbB۱ogfvqH)푎{sw}ܫoT0V/FF^yd"@vqyOm (_9qm?u6;afq!^̸/k_gsǟ;QJ^%_8WGO8{8^ζڂo׍M[4gno'3Ⱦ8eۃ{ga~d2R2 BacY"xKC}A )?tQݦp>4_7@ x3[Ώ5=Lx&6^uE HTuul)lrmXdJ1!hGccQZ y@J !P(A/qlmI)>;1u0hm?vt{"H߯7mĖ-R&"PH!B!DR DثB:z=\5l:1}p5](~ *>J*TH)QH>B) Ie+yOD*qɥ=H>g״Ռ(LRHP*!WT:PBYIPlȴֻ{_!e͓|~ITGX)%A ͏&T&BJ %%(\JFOJbFrc~> e&Cvv&CӌJi(B(H'ZYITؤ$M&ejjk:ewI6oj`i@I,ҳT\_\KRRH\/`iH:L6[0 14*>𙉛nSSi0 qj$j"!!pF"F.٢QH"2-@;H0 ],ba066A{yc@Xf\SaVXa蘦躎aV4uL4" ϓ˕0-H$DMMX,L1>1fқ1ё sM2=y=t=A]}xiD"&UW/:/0=]tJMYeö]oj{<e][.tieMLL%ˌQ*{ 2ŭS*eKQJ{R٫Emm|QUU9㊍z=\=_m/*ֶhca -% Gx<\EA H,`V8FScHw]}?5`8;|55W.G DCl)e'.:red% ,MXZ(21lںj,2 F :z{_eP٥FG&N h^3Tס3J4}GXlD" 61 Bal0WJ Wm_\(cajjNDPJ8>v1h`K+w741E]n?*{v<;ҶJϭ_FmHؤ.4e\:[/<].fWsȣ}M#_ݭ $ŢKXfn6e#RT2LsS/VҤETv#gO隺k]͕mRɥdLNT_#}ϴ+`s+_^~pO[[U( e |D1~~@̽ %pz*RJ)JDOOGt!fE\qu\ib yJXӬܰ z.Jc!1&/C"Y] ;5 Bs?ź&" `Q=9pR}g 0c=( 9Lࡇd7dGY1T] 9 {~ouqûП*JV .C;&JW %ZIxa]+T(j-DR}n/?goRT,A9[ϣ{vk QG+9VE5)i@!;` _oj䩯||>lBl*VAݍS!Q&]br4Iy~^,dW,OKP!s@ SWT^V&[(R &4qfÀsVIٳ{?Vb㹈z.9sw]6#UQ aJ ,g r`Yǧ`J;qad{>!/ ѼǷpE Nfm|S?6<<,Վ}BZ! pZț;^9%!FH]Aco󟺋-_@7wuS2+* #) X&4U!56oPoMՏw QOGU/chAX;qt/4s5?ݯ. @{9 W9%XئlKyhYW:((ш&4b#+ϕHKb~tͭDBN1~mU)e9 o7,fe:wZy09/"V!7ɣ9 MmT/7}cGC _^j%1^&Bj"Dc !95lRS{'#zuD 94ot>.N"E$eeyC|t3n]ۃy'qJyGbݯُo^vGM)CYP?'M<ZHdži!RL%-bt?6jGcRߏ1LE ߃?!t-#I>R~t̾wq$$ZUϟڀ_y%$A$X2 x%ˮQ0 aDN )DF (a(/[B?sH.]C"{] L"7̈ahVmuhL Q*1bqTZܒO$+A)}ȬfvI  D /|$o#KRgAs#vc&!SԷWJ=a?4pǪ%6u׮uy/xܾ '14a}U݀tjIJ veyXѵc;w%R5s-PuFUP" Ð~+_`ׁn^?2}~ƖS#uG4-ˑR&,VYȓO<U!xW[ S5ȵY{ǝpkĈV<6Q=_eGtuXmW.A"ˑHRq|^`O=3:{F 1z:MZktMH]x%s$ZVB%Q8˞~ɂ Gam lm߇I XX.yYBsob,JIH\)ʻ%)@Mj-c5D8MYX{S,kRIJ ཿ4>ѓbߞx&~^ խW ^Y͑["|^r H%j d,"qg` iGׂm]ψJJn^Jt|մ66!zbT0v$J#(q7>NSEԬne37ν|xXSGM OyiB X /_y-Ձ-E)uyxDX拁Z#PkNB(#Bʈè dOuTP [,OWVD f;Ʈ G9hzqhs / u[@'B|Pj?1| hU@s&PN}!P@PQWY;*7ڊ@# f04'\IENDB`gambas-3.16.3/app/examples/Networking/ServerSocket/.lang/000077500000000000000000000000001411575327000232065ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/ServerSocket/.lang/ca.po000066400000000000000000000034271411575327000241370ustar00rootroot00000000000000# Catalan translation of ServerSocket # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as the ServerSocket package. # Jordi Sayol , 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í" gambas-3.16.3/app/examples/Networking/ServerSocket/.lang/cs.po000066400000000000000000000027431411575327000241610ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/ServerSocket/.lang/es.po000066400000000000000000000027241411575327000241620ustar00rootroot00000000000000#, 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 :" gambas-3.16.3/app/examples/Networking/ServerSocket/.lang/nl.po000066400000000000000000000027331411575327000241640ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/ServerSocket/.lang/ru.po000066400000000000000000000125131411575327000241760ustar00rootroot00000000000000# 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" gambas-3.16.3/app/examples/Networking/ServerSocket/.project000066400000000000000000000011301411575327000236510ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/ServerSocket/.src/000077500000000000000000000000001411575327000230545ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/ServerSocket/.src/FrmMain.class000066400000000000000000000067441411575327000254470ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/ServerSocket/.src/FrmMain.form000066400000000000000000000023231411575327000252720ustar00rootroot00000000000000# 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) } } gambas-3.16.3/app/examples/Networking/ServerSocket/serversocket.png000066400000000000000000000041121411575327000254320ustar00rootroot00000000000000PNG  IHDR szzIDATXõ}h]?siқ5]Υ2ǵ{AK{ ?]:?,(atڥ)4QZm:H4m{ekI8ν?y>9ֲw>?)sJszQJqڞ={z駟(˟p͏j57|3+JwU*O=@oob8߇H ).+"@)J)B9sk<9u8W{-}k֬mmm߬T*xzί_:OoDQ@(QP@!YO8#3zFn੟.g0`.ছWpY!F*Bh@Zs=x/)=R5.麡bK4_~Is& 561L`$kJ @c&%K &5b2 #'BH)yRP$YFic#>}cYjt$45d%N zB$Xk?s蔒L_\P{pc&3bYQ WƯxy}!O\L(=]7}1sF˙16O,)㗦H'gB`=eQ()4ib)uPlկA6Rm^~80=]g:C\OA49gITŐe!31Yj B6k8 I"${6VB! *zŀ0yBk!;"g+4ւ4H)b]( 'BH*-N(Fd' *aLdR4\ 6= &,4@rZ='4J"Q0Ԅ\Z&΃5i,4v(rV""ճ5dE@T tC6"f,3$%3)qM% 0a__E7N.?{5.k눔ej:& ! ?~|C 6o2YFXb:s5զ GZZۖ322Tgo}Cm zkKA{v^x299Y 0TJBJTm>}.l`׭[y۶m۷m[*Ȳx,ߟT*8vkCJ@ZkkJez ,*Jw;v] ˗/xFJITU֮]֚SN}Oj``@xKcrrk׮EѾ{n\e9RERJsresb *7nr…7X|O>$333H,˰ֲl2jӹ1V J)jbA{Ͼ}ahhy?^۷("NV){ܹ}T\.Ϯ}_}\.СCl 6ETjf5Zk8fjjQsĉ >z…+,Hkc *ʙr׵ݵz+Wv|w[wGGGGGFF>Ȳl8$OΥ{ߦ\.388H{{; R.9x ;wLM{/*w}}}[9{,qsQΜ9ݺu+/2ٵk>}Jxؐz} ;'[~1=~{LMjr݁=rj][[ҝ%3<}ǥKxx8r׮ydϼ.'Jٚ.卍/*dOo\)w!zuX:vx*Ð:::oٴH)q##۬\:COλnҥIֽؿ6rd,4_cXjU81Q]0@zy"-Ed{.ԷJpӦ0gݥrhh蟟|2vR)KkŜ1yUIENDB`gambas-3.16.3/app/examples/Networking/UDPServerClient/000077500000000000000000000000001411575327000225465ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/UDPServerClient/.directory000066400000000000000000000000411411575327000245460ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/UDPServerClient/.icon.png000066400000000000000000000103061411575327000242620ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛ{tUW?{sͽ7ywBB#! RbZ3NGhvvUΌvgrZ-S :mR2-@By ${^{ȃ$ R^>ݿo .3 yiޣl{BmLLəpM\P|6ħݽD ԒbzoASt܇[q~d6|oO~ (/-S.\- Kϙ<@nGzM]^?i{=P5h Zk[(&=#F8 7J]}-hhe|T5Xw8:x B GkF/JzEycQ)黎&BWw=[/bnyN}`jqׅÇ:8r9C0Z 0Zc= ~;ϛ; `X# e<ȆOvf .\=M;݅ ߕ9mbpzи4)[I#j8EBԒbcXX/qhDWtKXϋ}42nQEL{Ni;w6]KtNIXvyO? [i>%HlWF{ *\ M&m/n()M%el7^)P㏥4 T\)5YR^ܐ0\omx:Hȱ H)M'Ug" y.;@OdZ嵴5y s~ ^P4'EZk&f"xk[PRǤ2d%oPxwٹej!wfRa s+џmewW{=P*uA„CE嵧}ي6&J@v䎹&!8zFq nPR!7.Xlyܶz;1]|SS((KXo hNtt-aiA\u'9ZdW7:ҵF: m O oxi30=]@~"e C`(«Wª}zaP| 4['Y/FZrsן~f *YEkϳ>uqv5+^W[YI#;CBU3~@؊va {@4 AB#BMɧ]ʹ6>K=J<3zgA qFƤ\-_C۵ N11i8GV~f̢@ >*h4%Ȕ%3(,I}(CMh>0I݀\yQN:L|%!LZ>݈e{g\mǞ)YK@{(!qgΤ"ԽֺfPZŠ5OGC .&1 #&4'>7w=KFtN%`$q<]wX,IENDB`gambas-3.16.3/app/examples/Networking/UDPServerClient/.lang/000077500000000000000000000000001411575327000235455ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/UDPServerClient/.lang/ca.po000066400000000000000000000044641411575327000245000ustar00rootroot00000000000000# 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\"" gambas-3.16.3/app/examples/Networking/UDPServerClient/.lang/cs.po000066400000000000000000000037661411575327000245260ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Networking/UDPServerClient/.lang/es.po000066400000000000000000000046441411575327000245240ustar00rootroot00000000000000# #-#-#-#-# 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:" gambas-3.16.3/app/examples/Networking/UDPServerClient/.lang/nl.po000066400000000000000000000037451411575327000245270ustar00rootroot00000000000000#, 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:" gambas-3.16.3/app/examples/Networking/UDPServerClient/.lang/ru.po000066400000000000000000000111211411575327000245270ustar00rootroot00000000000000# 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 "Порт:" gambas-3.16.3/app/examples/Networking/UDPServerClient/.project000066400000000000000000000005061411575327000242160ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/UDPServerClient/.src/000077500000000000000000000000001411575327000234135ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/UDPServerClient/.src/FrmClient.class000066400000000000000000000033271411575327000263320ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/UDPServerClient/.src/FrmClient.form000066400000000000000000000027311411575327000261660ustar00rootroot00000000000000# 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\"") } } } gambas-3.16.3/app/examples/Networking/UDPServerClient/.src/FrmServer.class000066400000000000000000000037251411575327000263640ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/UDPServerClient/.src/FrmServer.form000066400000000000000000000012731411575327000262160ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Networking/UDPServerClient/udpsocket.png000066400000000000000000000041611411575327000252570ustar00rootroot00000000000000PNG  IHDR szz8IDATXí{\>g;3;{f7ucK*m&%-"ҊEZ%B^RےXl$՘"6&٘lvf/m}Μ9"4C^xx<}PG?499yk9J PZ }ȑ6l4M)J^nv>I8 I}vppD"T* sss\.uS񽝳}7Œ@SpjCڬ>XL$l6+̤0 r t~,S5!ݡo߭y.\h\z⦅gۇ@ )˽s57u-$s\$}3f'.b}N=uvϨ8pt"/EѓB)vI~[Y |Ufr!:wfa``{+\n) hPAQ짾B=}o@φ!wDUUqnnJ&/_7mZ>/4DOiEqT{\.911q({l)(& fH^DOˢ3YQD dO$7^ϧ^?>hj8V8##0s|~+(gD!{19q󧈌u/n}^@l@]Goah+\.AIIIftcZ陫dҗiP-AO Vau$| 1x@ d`K13hH$ݰzZ)YJ)Tas n DQBQZjBЇf\W=vK;U.Fa-7c'wEٰ,s2dցzpn -}:ZAA![ę5dyj%w~C]nf, *UV *=|,fViOoR)PT*^7ʺ Efffx9Q\ JheC uȲ'ĩGSևD\ÒKu \2Ԫ A4eOPIleA0ZZt?Z5ɲDq: EKL]:= hSQMQd 6U'-TʕkKώz֑_#r{ G3*@_?ҐTu5sԛjcPk [L-_r2UUKTfz錴ʖb8 zƶma&<秡LMBV47QUȪ&7^'WɔerUY/dS1 04x*f 0/eH> !H39pňwl!=' zJaT03]`~tP6 jժr(werdp]1 Ҫа!$@pvW(Τ&~u:ccK[w7d`p#SCMְq p5-7 φ#o ;+8WOwTju9B+K\Ao΃ʶ====?Fa~%,#`D:{H.^.h,G7KM ?p8WahG=N"%\Bv.h׆zB,v͞k*`; L,ONN>}1yf.btrrry`'-MO00׳P% dR`qqjz0Kg߿D;tm##ꙗ\NӷvЋA\xG;ss vKЃذLOzi o jMMMgcAx8ï@Rk&43 ؀ W(FIENDB`gambas-3.16.3/app/examples/Networking/WebBrowser/000077500000000000000000000000001411575327000216515ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/WebBrowser/.directory000066400000000000000000000000411411575327000236510ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/Networking/WebBrowser/.icon.png000066400000000000000000000070011411575327000233630ustar00rootroot00000000000000PNG  IHDR@@iq IDATxyl\u7 (IJm+l+i""hIQtS .R#nciTrʲ,wR")7{K2$Q*Upy͜9n6n6n6B.v-i%=/6=9u&5ilKϹUI~3*F\ʔr%Z˪*j ouqMJc!7c,+L~ʓrp-vAj!47P g̹\'k6\\FB,VBx : i>H_#<`Ulq.B#Z19/ЋY@dDV{[o[Rdždo@ c>sa0t>?=덫"ܒM66NJ*\J2&(\87&G):Z[T֣0^v# k?? v&oj+rG3 `La0.|_ߎQ&8ZzBv51!w,?u>5)x9_)O5H^4JFE3Q:c{0!*eND;JȘ^$ڿ$}"bɜ2v1^|u O?{eF61$rik`z:z];s0 z}~?$&x—cCZ$v'LRj!fBW Mb#K,  @[ŏ71i39ˈMIx+,m|uI84z>N"NqhK0;ab"E7<Oe:)A"3?Sw@:F0xw1a (Lh0y?gġ8Q}޺KȉQ]\ |=(]>ZeW!%dG!(Xh܈:X[]IR@+3%ަuv"YCA(B&"t@h[#v'prw "Y rR.H,kR MPU,gsXL*EKq%4S]T"uHTqah_@+"JTGG4;!z%A/&`jy%=GtCvTSh/;4qusBJhF 'cJezqk J!6dTǑ4!ZYt$Jr"yy EK!"Ħ͢F9m!=Yt#;Yd+?g:RPcIp3~_Ep=߆Y1Û5ZMz"55ш2U(ejfwC_:(Eۯ` -r$r2ǹVB^6%NZQ>gѳ.V.]Ɓ ( ) LF c @T2hQ +F=@[wdd@$^t^=Z pܻA>9{%$ RS".+hf^WqCB,n:^lC*LhϩzhdvLpTzxZ;%kAkAǩ=;ph'=1}-2T$Vs,Y~7CϒW4Hw7m@J|9{R `z.=ܤ)H3;/>c(%cB@ah{ᛢJ XlZWx"p:i?d'SE*/)# Z)RHAM|}vj=>#͢| љ4~T(Rx`M8Έ-GK(}~e(T0"cUQlgbǩ3ݵMPWWdp="BD+4!϶qgfYưfey@AIk}끑hWw~w3$_#IY1狙 2n0}e_6Y91{w.-(oo|ū(m{$f-&VTF2w ǬYOd݆0( x/"5ypo;ĴEQ\rsS;FUj, 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" gambas-3.16.3/app/examples/Networking/WebBrowser/.lang/cs.po000066400000000000000000000063421411575327000236220ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Networking/WebBrowser/.lang/de.po000066400000000000000000000063511411575327000236050ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/WebBrowser/.lang/es.po000066400000000000000000000021121411575327000236130ustar00rootroot00000000000000#, 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" gambas-3.16.3/app/examples/Networking/WebBrowser/.lang/nl.po000066400000000000000000000063401411575327000236240ustar00rootroot00000000000000#, 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 "-" gambas-3.16.3/app/examples/Networking/WebBrowser/.lang/ru.po000066400000000000000000000174761411575327000236550ustar00rootroot00000000000000# 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-прокси" gambas-3.16.3/app/examples/Networking/WebBrowser/.project000066400000000000000000000012111411575327000233130ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/000077500000000000000000000000001411575327000225165ustar00rootroot00000000000000gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FAuth.class000066400000000000000000000007741411575327000245640ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FAuth.form000066400000000000000000000021061411575327000244110ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FBrowser.class000066400000000000000000000247571411575327000253150ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FBrowser.form000066400000000000000000000206041411575327000251360ustar00rootroot00000000000000# 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 } } } } gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FDownload.class000066400000000000000000000015041411575327000254220ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FDownload.form000066400000000000000000000013231411575327000252570ustar00rootroot00000000000000# 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"] } } } } gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FDownloadList.class000066400000000000000000000004531411575327000262600ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FDownloadList.form000066400000000000000000000006721411575327000261210ustar00rootroot00000000000000# 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 } } } gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FEditable.class000066400000000000000000000003771411575327000253730ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FEditable.form000066400000000000000000000005001411575327000252150ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FOption.class000066400000000000000000000021561411575327000251270ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/Networking/WebBrowser/.src/FOption.form000066400000000000000000000023451411575327000247650ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/Networking/WebBrowser/icon.png000066400000000000000000000055641411575327000233210ustar00rootroot00000000000000PNG  IHDR szz ;IDATXÕyu?޼{6w Ŧ, 4Eit)JMJ6EQ u+D8D.omY߼7ovCH@!W|:Gs> {H!m{`G&hcyR$O5֘q %z->L%;ʈcHT>C2lok^`q$ٜs!^kc罓sI#nE y# /óMŮLT8r5lŶ-TS S "iz_OU_:ɡt1A|s҆Ŧgԗ.U0Lww3Y!V5AmqJk LUul ,|H0}pxBg|czN^6Zo]B4bE+TĊZRIIk=ѵtoZ|LgBaivzܶ%jsDsKӠ5YqYiw@9D X`#6hBa`B;Wu`a'AP0uvvZG+5d~]1FxGj %,X` B*H@E#LQIJFlXe Z7^oʾnw}aR9/|x]s9g#]CGg܌GƂ(N !RlxP (f)+oKj*ovwlV+Dql=bۉ7VH;Zu9]h qߙYTRR*; yyKq֛̏V3u]mo;uZkS#'EyqֳXsoKR`CԪ(*j E#$ ܾ\IsaT}{Z_߶ DV*w>D#X|财/TIs0&a"LE qIZ|1f:u幎[Vv^qŠ_-֬YcvکRfp(wa#Ct7Q56ҝ5RSR TA3?YߛѫW_tvͫLXN7\.kÆ c֎;x-Ld9?F ,\LSmK3X&G_Гs`H_!=r螻ugԧ6 =MSַ/R33wڥ۷so$IO>svkV.*& +38_)23jjotuwsnSs1tRrѮu_iY:oI^f6֭[Yhѕ+7p<#۷wƯ溿ä!=9vŅن7^JJ5T$ibЉEB7]~B͡Ɏ9wM:vrctwQgg'={?gum3.Yߣp,#+XMi|qb_*G^9铧~_o}z呣|釋wq Ξ=˦M=ϾvZdػw_y^/Ywpvph}}%.[hlKrh_j/S֖1+s_|Eu]w{I,v=cvv1ශk-~o׮fsws܋;_0:a^?~ロ'|a dٷo߻!ׯ>z|恷͛RJXfoi^{×ʭ-#CRԩST*p>POeEm۶WJq9ض}W/>'oXyrK4{ z)v ql.Uso8p_W,~IENDB`gambas-3.16.3/app/examples/Networking/WebBrowser/list-ordered.png000066400000000000000000000010061411575327000247510ustar00rootroot00000000000000PNG  IHDR(-SPLTEJJJJ77www$|$|ppppOOOffogrCCwww00wwOOO k ki kCC//vvkkfff{www-cccOOOgXfIDATMkbbc`'6XWn}wq!$I j6ƺ? ũH|F#_d%כm n*Sx:3sz+!Z? ]Ch(Mn)&=V͹IENDB`gambas-3.16.3/app/examples/Networking/WebBrowser/list-unordered.png000066400000000000000000000003551411575327000253220ustar00rootroot00000000000000PNG  IHDR(-SHPLTEZZZwww"z"zfffOOOZZfwwwqcccOOOtRNSifgdgfjK]FIDATc`@L ,|p B"bb  \p@pʆn('2pݥ$ fW5ȺIENDB`gambas-3.16.3/app/examples/OpenGL/000077500000000000000000000000001411575327000165655ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/3DWebCam/000077500000000000000000000000001411575327000201125ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/3DWebCam/.directory000066400000000000000000000000411411575327000221120ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/OpenGL/3DWebCam/.icon.png000066400000000000000000000103671411575327000216350ustar00rootroot00000000000000PNG  IHDR@@iqIDATxݛyp՝?~%$ےo`#!B9v$ʵ-RdwvvI ɆNdCc;oY}[3lIm[U3ݯ~U 0Z6N1}ړAevQ22!{mZQnGk/Q6iA<9ˉw ?n_ o  w~4*ŵ|JI XDGކאŶp(yd'F(%e<`)1Y{#WAQJ{%|~Wob1s,5 ;96לIY]gwS0wu(D/w |jzw̱m}k`FDV6= GWKFG-e .# ړe\6!>2oU){28c:5{8TޜϏ~o&: J˄K`x 6 A>AxlS߭OnPUVO{*$5ǖf8 q=pPMl)o;u럆^ B @i/H<x( \EkY P@z0' XT[!{ {8yEytph I ^ (,-*m\<`II}Y/n}jy>ц$߹;;n/<ΈAcjo qtgt/WO<,1X.m@{_1Տͻ4cO.ŋ>iM,f}fs{teY;2{K=Վ#w-I, \)l?.q͠WI<.&6g{vє2HؾbwHXgR} <(.B 3L<v6CD5>!þBR0<35_졪؄z5 ZƊ"IѸ[JJ[Ixߥ-TX)5iLJ}&yR:lChס֯]>y9ҶM,|Qa0) V0`(HR!3n~hY>S+5#uw}uZ9IJ~E M3ed2+%%]˶zsyi cuI]J"(%R)Gj()x}'[PNwhǓ!^n̦Jłf>XOO"[XĎlb' Bv&3D@SmhGSI.HXi⎛Ģa26mM`X T ur}=|H g¡ rfc6ǑsFr+/[/Qc-BOo͸KAADQvlNC> .ֆoKaXRB hl A4A2R G\Parvqt d\x߅-Tx?dDT"rQ6h"޼B Ayg b,IaB !%:&`yH'OĻSPL!$z%Ԭ,-p7f󱥳Z vD0UCBZބvDw312B#(<)) C4F/<iYt5nά$;C+cw3@x,\Wc)EwW7C(";;Oss3;ocyx<lK` OCFءJ^0\ gUP(BJȌWYAr bFc()$襣 @Z^vh"-=}F+P(D(B6X,FrJ 솳QrĻG= |%G@iHNMȑ *%pbX,Ђ@*)50ch9e6pbfG?Nyܱ!x^,YJjr2M8}S\N*bȌ Ddls(Zp9pذr>lQ7y4n vK*#0ֆ^T.^#~js?GJf%_tM;LqS_MLz}ܳnx݀ k~x cG\[!#@ Ba=zFC`yQGF"1eZ$ P.YzT(Z&eflԵ@  }@iz^^Pq0pxm (f@:*[y$ DǍQF9V_2b 8LZ1B\>>_Zg*g0n}[8]5x by4*Ka͚eXJK RzeaY܂=ﲭWzWةϊ6=%6UGqXuIENDB`gambas-3.16.3/app/examples/OpenGL/3DWebCam/.lang/000077500000000000000000000000001411575327000211115ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/3DWebCam/.lang/ru.po000066400000000000000000000030741411575327000221030ustar00rootroot00000000000000# 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 "кадр/с" gambas-3.16.3/app/examples/OpenGL/3DWebCam/.project000066400000000000000000000005641411575327000215660ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/OpenGL/3DWebCam/.src/000077500000000000000000000000001411575327000207575ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/3DWebCam/.src/Mmain.module000066400000000000000000000140361411575327000232330ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/OpenGL/3DWebCam/webcam.png000066400000000000000000000144521411575327000220640ustar00rootroot00000000000000PNG  IHDR@@iqIDATx{\}?}o{zzf~H#F$ y C6 6ke-7rv6I-1YG@b0  iB4LowHB7[5շw~ ƚSy78bN[sݚumkP.Ǭ'|̌.5 cS}zbbrhh+y'7z/WhݺOuݘmٿgz(S)U½=*Y&HdG=8'okO~ςV(kWzYF Q$ 9߳䇏x9gF~,qTUR9سg_<SWrҕk_-_?eMmL\PdE$U-l47mAQddY "FD[[oU ?mqY3<2b]9_ x7>{B KR T\.8v F6$"!" ""$#J"(T'ؼC~=[>[g7|G%I8vƭ(.7 2$rx܁ $\\n\.7 "ma%~/7xC()0u=1_榞?aC" ;l*m QeEQP(uN 1:6( *I 8UƶTJeqKcOnܮhcѱ:M/Mw3eYAxr˲(XV˲'ٳ?'ϓJ8rSSb1ƶ*߭luQFGfk'''{|>3%pY\z _s=IՇ(8477/ eY<¡ YT*`MFFLjF yiv,əiVZԩSgl|ٲU+WiZضm0J ---$T2xiv|r3=>,"t^ Tr\f<})xK¾>@U.ihh`q"2 =T*u~e 0:a2 $l3vP$.pl,) ~)NU5GSSS+JοojjRE!WB|>]]B~3Ӹ\*gG9t0t˅FE/^D DxXܿ+V/~hcQ0<7>@b!ҫJ]wB\& FƊ;.E ]%K~i---DQ" ^MPQH ؎@.4 \GUHD\&S(0 Eq!+2b,tR#ʖEXDd20=5E" J! ʍ-:08"пhQwGGQ||x^TUI^::qdff!, 01Lrv\L0GQDLD{[+K^͢E|HhiAT؎q&&&χM VQEI*hdeIB+UEA$F[[[}I@Ȳ[ *IjW"JmJeBCh"MMIGG_U*מ*s1Nk1k`'8Cbbwr{~/? ,|__  ؖU Jl>1f6[yYQo'Npa:RvPHVQd[oeǹ[F};0tm.Fa T/-[ϛ;h4z[WW(roM,êT'n ز.gn-:, ]Yp!ZS==: J|#Ȋ&-\H.PL ^uJŒ%Kx/̖xfO)t" VC_ EQz4442o17S34D"Hȯvis` $u<-"+|>">='T=/e]A<P,1  2nǃ,ؿ,s]~pI/jslB@ss3P HsU7eǃi,ൕ/~u8r(a_^%p(˔J: `CN.3gGhv~ l\& ՝iȒr!^ߣiQS pI,Ӽ%4Mg^>5ӯZߥR|>(B!m}la[Tѱ1k[(\ne[,E eU[3p#GI<3LM۶unX,˔et]\.cBUUq\|u`ι$uY\k VVm M3ubYߣjS9{,LO'<]IElFTUR*뮻W5\m~ET*Tt=MgP50I3sF5U%J?dUu u.99==krf3G״mLNNV}ɉ TUkqEUUIRlڴ^|E.]JgggB֟iHDΤm11ynx<Au/{ ĩclvq0ĉJ0"IHElF XrQ2JHTP xA sa6w^,TVE2r!Itr6tA^$|^/LMM x +>0xǏz}nz(X$JH4'ej+zx<(x}fTU6TvBH c&CCde&7Ç|Ǐycᄋ Mfb?|ǃ;EH]9bV,zRZEr-bdd'OJXz5sđ(u~b%7ǢY#R2 Yk~yTDA߷W66LUe"h+V֓٪݊+XbLOOUmH,裏Iv8QD4Lh⻪'2p\~. y4="&@DQ)JTB_wi֭FXR~Ww77]K"1IAWCEλwO #YUS?qhmDu|.ͷ|BA{xY<==M<'Hiֵ,EEn 5[U߉, D[*²175~Q#]]}9J 00 4)f" IRtwwMOB BA(3|'/z4 00 nX˧fu- \M|>_=1oUEevw\Z _jTdl&Mk[ ٳd2dYۚuM4 I(J%VZdYv* zXzeQ\.G&!N:tѱ>pEn}?hjjRAfqkaqV:<9siކd2LOOS.:.(Au<"$aG(JuLT*E*4M>v UվeOM_抅'0mR ׼r0K.,_.u=O:fǡO|H&l2Noas'It]gtt]u ־຤߹gOr-t8s]F3[$ '0m dɒ%,[`0DsS3` @KK VMwr}e``7+l'c'>NWWf5ȤuGpɋt5B[ff_P5 뱚~r 28GOB<VQD%DEx\.g9q8innbiooGLӤT,f2$R)|SCCN!r߿}R\2>tjzzG[,% MU B}>4]Tdy"(VTUm,LA32BIl&b|e3LdxtP0~7uL@?7֌=r!U#qWΦ4b˶*,KAQ(IP 땂K!HO/K.29qWvM<iiE}!BP)Y2,WPw~ G*'Kտ;EWm( e199iC?7\|YERNq~9rx( 5/],(ضMAI$ Uhnny0$Q(875ŹI&&dYrp8L٭\봶=_ \~epqݻ|O> !X,r y˖sÍk顡!,H;CW\&U&&&81vzёaimmP(H$([|l#Yv,~k۷T*D|\. 䚕+ple8y/Rki3Ip\;vdWA*GN5 rʙ~_ްaÏ~|߿7x!СC^t8<>>>|OAOT \&LX]]]4%w t:$ ٧NϜ9c={I$0S jYO'Xl&C&L$غu+m;|Gy3BD_wP1OIcZUUʟ8q"9444sΝ8V@EMMM____?QݻvjJ9B>*1mHLKs3bHڵ}>PBD6|_w\,3t:n;ݢiX,(KRŗ^JMOOOթD<X,kmma͚P8l%D"1zP(XnUun'# ۶ś{lƀyXuT@`U&T`pHU]$7U hZ~?T*aLUW֪ο6#ERbuf\!W媠U.TZ( xj*VdT=T%;Y%ias_Ŏ%ƻRckSª5KIENDB`gambas-3.16.3/app/examples/OpenGL/GambasGears/000077500000000000000000000000001411575327000207415ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/GambasGears/.directory000066400000000000000000000000411411575327000227410ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/OpenGL/GambasGears/.icon.png000066400000000000000000000065721411575327000224670ustar00rootroot00000000000000PNG  IHDR@@iq AIDATx{p\}?sjWzٲdd[FLM0HSBHSBtv&vNXAθY_e 3O?""v v7ܝQ`ڋM/:?_*{.=3{[Ow @.]J?Ωwd-ޯ>OH}Nq #vuwí>u? DTѪH@6t].ۛ w;=gmOr  ~V k - | j%)؞[k FX T)DyF qGfDXSevZR9u9OK~x7yjD (?Qؒ{e9N\E o?tn(~JnhI\%wR؊*N ճQ َ6ȯ !DBP+uOI"k-3jHμd9Xl|v辍'I85]ب\"H+%G+kY5{l±86SxO579$ ܈࿿*Y#HVStD"DSwO6Q7gQJr<@i ,!itcKƱULܵMGZ_i[{#~E Glbz)ŵfR1e G=z`IuES -įYDWn{@.ׅ ɆI?>p6u-8EuJWɖmoʶM$&VRD"hg'W1.j9DfzTbbZL>#F@;2S3#AP 勧A4oeSy Aqʢ1Y!9ĢR_-7֊o-%eT-]Ň0)D+[Q2Pn,HgŁu3QQɋE: "|Zy8 @/j %R""nL@8~ &L^f e@,ӶUJF⩡SKXlV-چVӁ.+_B KA w&E@FÒK}`?p F<> FtrV 47Bx4\e\e\pW%a|,IENDB`gambas-3.16.3/app/examples/OpenGL/GambasGears/.lang/000077500000000000000000000000001411575327000217405ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/GambasGears/.lang/ru.po000066400000000000000000000025461411575327000227350ustar00rootroot00000000000000# 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 "кадр/с" gambas-3.16.3/app/examples/OpenGL/GambasGears/.project000066400000000000000000000005741411575327000224160ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/OpenGL/GambasGears/.src/000077500000000000000000000000001411575327000216065ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/GambasGears/.src/Module1.module000066400000000000000000000151351411575327000243300ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/OpenGL/GambasGears/gears.png000066400000000000000000000066401411575327000225560ustar00rootroot00000000000000PNG  IHDR@@iq gIDATx{T՝?{9i " dQEAK%&[$d+&deMLad !n%bp̫{޳nơ{`Xߪ}y;;g@~iC'Ƙ# TTlVQad+,.!Mkk Mt()y&H |WP,1@1uloϷXl}Pt{m "}'e č11-k j& -[Ɏ̳j]DJ:Iv(Tv)_jG#.a eR*EPM+6{ 08I>`냓wA)8%eC{T4%=(-}q!)KNRQ!A!l+of4`Uon!oFf5(eiv!~ iF_Z&z?|P>mwgDX@>߼9~5Kr2O+gգ cҦ`kc@MJM6gFG[wtEӌ}_e\.diP`7qiFB~-nSmJŲsI&w%A?nY'{ A_kKt}5rn KY!#5i 5B  זRÈd7fT7e۱LgWr);ybeWM(vsܬiq)y `Y eД*ir&#e`h%8?lymfM`iR],>Xh _K5>\lӌ'z֯T! YG^H yG cL6i8mۭBAJLD)C~\T/|;0vM+`!Dx16&E~N~ǓݻJp#!= )4D:|)[q?mm?>cff7wi}f3-VaxxtuO%O& IEiJ&]S8@Ru; .P@0{Otؐq˘tNI WEf$$l9=Jk,jz2LY4tZNmH+p 0ffꙥbw* 3?GO (qHνmA0?7 w}pCo/>~栂e.qqhKp} G GOY 4!g;[}mSQ oTz6(֡D2k,>.q;흥p8qVӯ\Ӛl.?Fa䅸I' yJ}LlnvI q_kbf<J֕I%SA>fo~ ,I)VnR#t7le-8V_YRNF~Mpe@e#1kj#ЏH*|[pٝJvs&f 6ӉXd!ۆB&_8=Yx% 'R'S}XC-s S&=E3I}D{$M$c*1#ίSL~(П'Ѐ w'΢ pKwP7䁅$&sQc[_̒O>DžۤUy}G!EDs{h tݼStwW<_$MA+NEM<74,βo؟T,{/[bI59FbϢH7<+p1d]lՇkϽzG+MlcT+r=D֚e%:=l}+M48puu~ 5^'Ғ 9k\3[c}ag+MLU^chH/ǀRT yU `;^(_gµO|ߕ"P2Nj[zΜ܏Y MrV*>@n2v:Qd28bTV2 !ɘ _mK?yxrTR & ]_h>9#+sBX2F=A:ٓy-?ųOmL(L8{ א{C)$x >øI=eRjkTDn~3T!YTQ΢|Jxv< Lip*hoR[ҔʒRąvzii?Eݑwo&LFs[;qbIdz#tcY1 #5mOS*B@hrb?!3F؋rNf;O~^G} #g^AgaǍ!TFZ8ƪAqZ^_6I9d ɵ9ij[­tӗ:HˡFɩ}emk0Pdj7mر|m8~h2 r;Pbx,jZ'ݛ;~/c6xX1qPeKoa f/_Pwis#Ф ,(TVViӦsZk-gwAVvnڴ)aUJ1d^CHvZ6%R>C`;[klFti#` C퐕P!7_nƮ)aW/dw3a+~.eSM+Ix6I %Ţ"nY >Q6sfJ'ԅߋc&xL>-[5I0`0ئ3)w SrXuY=HX %"@qݵ_Yk6'LO;i׋؊G&õ$%M,mX7/.(,[ng P?eI0hC 2亂"Sه=:9cxԞjtF>#H[~mr>ADK JZj i;F.#{7Un`U_tBBʺ5s*UvD`Fr"dJ9),G(CMx=PPXDFz x?ǿG dz[jjm x`"$^q ܠ:<'D*VPB|l"z_>oW!t|ir; w>na'fTG2Tر=uI>4Ovzx[4ysxg0߀:KO,f# MMYx%uu.:ڰ=\Wm@L}B^2/w%^B p x e9a7RDf7@ɿn+7p,G'=CAl QWFPt*_y]{ ӲfZW(Ţ}ݵ&cD`P$>|b n:1, n#-ʀ pCx =@+ph-7Dj+D8Mj!<A0)La abIENDB`gambas-3.16.3/app/examples/OpenGL/Md2Model/.lang/000077500000000000000000000000001411575327000211675ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/Md2Model/.lang/ru.po000066400000000000000000000036151411575327000221620ustar00rootroot00000000000000# 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/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 "секунд" gambas-3.16.3/app/examples/OpenGL/Md2Model/.project000066400000000000000000000007731411575327000216460ustar00rootroot00000000000000# 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 gambas-3.16.3/app/examples/OpenGL/Md2Model/.src/000077500000000000000000000000001411575327000210355ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/Md2Model/.src/FMain.class000066400000000000000000000126141411575327000230620ustar00rootroot00000000000000' 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 gambas-3.16.3/app/examples/OpenGL/Md2Model/.src/FMain.form000066400000000000000000000010461411575327000227150ustar00rootroot00000000000000# 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 } } gambas-3.16.3/app/examples/OpenGL/Md2Model/Weapon.md2000066400000000000000000002140341411575327000220310ustar00rootroot00000000000000IDP2PJtzDT < players/ogro/weapon.pcxox;;o@@YYYYWWBB)(D"XX##owRR"yzzo??XXeff~cocov~vxZZqeeZ lKXGXYY;=Z2m2 ZmY]mY]SSYG.K/Y5WVdSZ dZWX4VX Z1X 1ZXF78FGIG8CCHGCBEEIH IEF 8GF EHC EB7 7FE     9823<2 432! 6@5"#$654%&'764%'874'219()*284'D:;)*(;<= ;=> !?@A+#,>?A'&%>AB'%>BC';CD>C;'9DC-.C89-IGH7BA ,A67," 6A@",#?5@+$#5?>/01>4512/4>=213=343423=<435;2<6782;:(**:12)*(('*9:;*)(;<9+'(=:9+(,=9>-,(?>9()-9<?.-)@?<.)*@<;.*/@;A0/*BA;*'0;:B+0'=B: :9< <;:!"=>9! =9:"#9>?#?<9#$<?@$%@A;$@;<%&;AB& B:; &!:B=CDEFGH HIF JKL JLMCENOPQOQRPOSTRUTUVWTVRTOOTWWSOXYZ[\]Y\[Y ^_` `a^ b` b`_ ca a`bbdJeffKJddghfegiijkGFkF FI IlkmknoCCNn m pm onq rp srvӚ=C>#=1R=Ș@^7G@stand14C1D d}_P.d\k0 gX W t>шAڏK,iM:Neve m-iXՏ݋?RL.$o*4W['>Cbk7*ץyb>'+$ԯF&\*TSMOz"yfF\|mݎi,*z%J(V.YHOn"usElvml;F^zRi6AX[wEZQdjxvjz(^&&"}R!=Dz)=%=M@e'Astand3,F=DpTQQU^]0∋gRGH?䏅CߑL%bGҌ Gԍ]tce _wՅڇ|4@ 95o,~MP,3Cbz7/̴~֗zb?,*v%L(R'.]ANeqz7vqmm;G^LiСdкAX^=\Ow`xquz+ ^+&S%|=DpSQWT^Y1j%}sT DS?䍅Cڑ=*bGҌ Gڌ\tdc ]Ԃو߃x4= 65p-~LN,1Cbz6/̰~Քzb?,*u%M,Q'._@Odp}6zomm;G^KiӣdԻAX^;ZM^wozz,^- &S.I=-=.=ep@"1-Astand5)F9DpYQO]]Z0 舅 sY %JQ?ډAؐ>*gGь Pۘb{h f b~ֆ܊x4A85p0OP,2Cbz6/Ҷ~٘yiC,){%I(W'.[JGQp"vzEuvmk;zE^Sid@XYGZO|lxuzx&^(&%"R#=)&=6I=$@6`Astand6'D.fpc?k[]5sd -VJ{ͶCɁ@ՉK+lM8 [ڭm{Úp k2lzڍً{FJ>3p$6UT(3BbyE)ޢyiA(+,ȡ?(~a){ S^MT"sEjmҁc]X&5_aj ъe+j驷iǪ@&!L(*Gomp~=TJ|V!ke]mpM4L.[lbqipXbdhTSYuJgqVdyjhm[jMuvpP=~V=h=A. @stand9"_}^brqrv!_=⋋zs-8i<߀ш@qk`oVIvsN7% i{Ҁڬz-s*{q:Ν|BW%G> b0;?]!X&5_aj ȌeLň驮iȠU&!L(#GkqgpLKsHV!dfUmiF4B)[iWvigJbZXTKIuHZsWZtjW~[zMd}u}=j =Gpy=,AwBT@stand10%_{^bqktvb=zs-9l4ф@oi`mVIsv휖7% i{׀۫y-t*|jߖ8ϛ}BZ%K>%d4;A_![&8_al ČDLÈ誫iɜU&!I(~!GitcjLGjGV"`fPpgC4@&[hPyicDeURYHAuHPsXQnjI[NT}eV=@F%=1{=4A$DEi@stand11._$z^ bqmux h=ߌhm-3l+Ս@wlTuV&s{젝7- gzڀ٣t-t*{aޕ8͕A\-P>*d6;@_^&>Ua l ̌D+j欲a˥U&!I'%jvdwLIuGU"`fRptF4P&[iSxieReWaTJMrINqXJfjD[yMuIv^ֽ= '=w=d;A.6JTC@stand126@/u`bsvry)v[m)׌h_ &k }ۘJnU}H(s~줤7-"eyԃ֕i q/zXݒ8ˊAX-Q=*e1Ӌ;\_'A@ al ӌD+l櫸a̮J&(,*kthLMHUcfXpI4j']k[rijne\TNfrJQqXFj]jIv]}xMqFv`}=&=؆= AARD@@stand13;@7p_cs|nz.oXp)ЌsV j}ߝJnVۀH's~짦7-"dw{σԋc o/yRܐ8ʃAV-R=+e.΋7Y_'D@!cm ՌD+݄l嫺cͲJ'(,-lrk+OHT{eB[pJ5{']kamale_TQwJT}qXCyXkLl]qoDvat=LV'=b= FAI$D?stand14;@7q_et{n{.oXq)ьhW j}ߞJoVڀH's}맧7-"cw{΃Ԍc p/yQܐ8ɄAW-S=,e/Ћ8Z`'D@"cl ֌D+݄l嫺cγJ'(,.lql+PHT{eB[pK5y(]l`mam~e`TRuKS|ZXCyXkJk]}omBv_r,=I+=GF=l JANG&>stand15<@3u_bsrp{'t[r)׌ha )k}ܚJoU~H'r}ꨦ7-"cw{҃Ԕj t/yS۔8ɊߊA^-X=2e8ԋ?_d'G@'c#l ՌĿD+݄l䭺bαJ&(',ksjLNG}T}aBVpK5k(]kWpille^|TPbrJJqX?jZj>q]ptc8vSx*ܿ=5=N@v=+NA7;stand16C@.w^%bo_wy[y),܌hr=oِJzlTxO&l嬞F-~ҳ bwwރԣv }*{Pٛ8ɔۍAo#gLDeL;OlnRU5c4l Ό̵D(ݲl߳bЧJI'%fsy`jLE`EeSs{ZBKpxE3T%[hDyicIeTTTI<rI6gY4jZl]NDx1-7=B= U={UA)`ƿstand17OzU.o^;egK}wq䅃LJ:m܌#\v oUp]TdSaܲF%uð axvԷ͉-ٌ,~Rԧ9Ȥӓ@#|K^eix- Z]3pDe0 X-6zE'h]<ӇtʊZ%ŕ( ۖ6=ir=!Wp=dAXNstand19k%`E?\k:eYPi{t-{sՖHc9>nw$절1_ӄYm&Xx R NI^ƴC:'^kh#\xm<͵r$ЩE&ǻ>4k1 `9 $V1eF.Z ޥI"ښ3/]w?bU:'%(9fG@ ;:%bY/"{cOizbM[IL\l-$OC5WK{lk^{Wn6U >k) gY?xp7 +e!$X"JyD:m`Ug5ɛ@($t=i{=C=LhAPtYstand20o"]KCZs1dTVp}t9hЗHP4P^ n0vYl+Xm#WN@b C&'UdN$Yv S5˿]'ͮ7&0?V0`(V$e43H-ܬ9"֝)އ&]5bF:$4fO--+:p Xv`Sc~cMOAFar#?V]1aIth^y`o6vQKc%!hVHp/ FeDeyCHmag;:+gDЛT?7vՐ=X==RiA2stand21o%]NJZv0dP[x}uAkʕVH4[R'b0Xj5b,WQ8jB!&MeD$W¢v I5T'ɯ4G.?N0`#T!e-)A-ڭ5ӝ(܈'[3b@:'4^O(-':pXrcQ^hNE<*Be{VSs/iH"xk^wes6mN(A\#4hTOo) \e]zjDSmds;:9hP֛cQE}=s0= =ihS/qH"|l\viv6dJ4JT ChSTo" nerr F\li};<Fh\ܗ saS}{f~=z==TAQ%(Xstand23h'[MQgr)bOb}LkV7?i>J. vXreCrL)O&C:3"XܥՌYe>,,̥&!z!qx'p,9& ?\Q*9p|p}kiPVt%-X@r RIUG^k]_d cwZqn<{9;gk{-F)w!R=B"d= =*1AՒtstand25X&qFUgc!bSjTlyR'Cr8,5)ó2Oa\Nr1IK&_nM3n)'dх2(?7&N#B53"[Ҟ ʂ Wzc>%,Š!rqq#p&4&C\kP,4pir[ihkSw(cAwP"D^t"nZ~r{EG8QU@hmbdd cwf{n5v4Owk,B_ =:=Y=`=ǜ!A/1stand26P%qBVh\bUmWlrRCu{8%,=ռ26rWXQwN. k^WM(p$g؂0"?1"Nń!!B0=}|"ƗzWr c Kܛ,krkp 4hCh\OPr,4qpQrARdlPy #mB{%LeçpnZu|E;3WT9 pmihd aw tn5r4fk>Y{;Up&=Q==AM㬐stand27J"q?VhVbXpYllRCxw8$=Ò2rMTSw RtV^=rn i0>,Nʀ!|@+=mw"tlcߊK֘'fsfpFMiCMZ1\(o4]b8r&8`lMztC~'Um˦mmZv|e1.\T4ulpld ax(ċn5n4~kQr;ng=@N==pAdMstand28E"s=VhQbbqZlePCyt8LǍ/!rMQUw}UtL{^/sdp|.>)MQ}!u@)=fq"mecڄKӔ'y`sap{F>\B?Z!Q(e?Sb,r+clQ{yM (dyϥkmZv|e1*_Y:yl}md- ax9ɋ3k4lg1=YL=e = @ۓ stand29>#s8WhJbmpZ]WBxs8Lȋ/}#rTLWwwWt)Mr^.#scx{.>(MQ|!v@(>hj#d]c|Jԍ(rYsZptF<MZB>ZQ(e?Sd-w*kmZ| }X%)qФjmZu|e:%bYE}lmd< a!xJ̋Ƶ3j4ly1=TL=ʻ=J@stand308$s6YhDboq[WW|Bwt8Lɋ/w$rUIYwtXt+Ml^-$sbxz.>'MQ{!u_'>hd$|]VcuJӇ(kSsTpnF;MZB>ZP(e?Sd-w*ln[}Z(-sѤingt}e<#eYGlnd? a$xMϋǷ3i4l|1 =ՏL=J =}u@;stand315&s4Zh?blq[SWwBvu8ǽLɋ/s$rTGZxsXt(Mg^-N!rcvz.>(MQ{!v_'>ha%qwXQbpJԃ(gNsPpjF<M[B>ZP(e?Tp-w*jnY} W#0oҤiogt~e:"fYDlod; axH!ыĸ3j4lv1=L=^=(J@ stand324's4[h>bgr[RWvBvv8ǼMLɌ/r$rQG[w rXt$Mg^.Nrcrz.>(MQ|!v_(>h`&qvWOboJԂ(fMsOpiF=M[B?Z Q(e?Sp-w*gnV~ R0j}Ӥiogte7!fYAlpd5 axB!ы3j4lo1=wL=|=T@astand336&s5ZhAbfq[TWyBwv8ǿMLɌ/u#rQHZw sXt"Mi^.Nrbq{.>(MQ|!v_(>hb%yZSbrJԅ(iPsQplF=M\B?Z Q(e?Tp-w*fnU}Q.h{Ҥjogt~e6"eY@lod4 ax@ϋ3j4lm1= 1L=p=@MQstand34:%s7YhFbfpZYWBxu8LɌ/y#rQJXw uWt"Mn^-rbq{.>(MQ|!v@(=hf$`YcxJԊ(nUsVpqF=M\B?Z P(e?Td-w*fmU} ~Q+h{ѤjnZt}e7#cYA~lnd5 axA͋3j4lm1px=gN==l@)stand35D"s=VhPbfq\cWA{t8Lʍ/!rQOVw zUt"|Nw^-sbo|.>)MQ}!v@(=ho#kdcۃKԓ'w_s`pzF=M\A@Z!P(e?Td-w*fmT| zP)gzХkmZw|e7(`YA{lnd4 axAʋ3k4lk1_!=,\==@}stand36SqERh_b]nYltPCxs8"L2rLYQw Rt|O`5ti"n0>+Nƀ!x@+=h~ }ucےKԞ'nrnbFDbAEZ(V,i4Wb1r0bkOz#rH{ $^tçm"kZvze03YT6 rmwid& ax1‹n4m4m^񒁿;}@=Xpp=B=6AEk;stand37`IKsjbZeMlQCjt8%*=ݢ17VaJr#L2)i`]5t*'wܗŅ0%?1N@1=zX¥WׂcKڢ,zrwbFl&Ch\Qv,4rbSEWijVw /cIqPWrr"j[nwe8@MT4cmm\d cw!}ln5r4rakMvl;dqfw=lv=E= AQstand38hXHBqmcWZ$%Ψ"ǁzb 7 ' C]N!/7b|tf`p#41|n\$eKS|*k#juП-.n֗¼heh,JF2nQ er'^K9c,kCӿ-ņpë?й߮嗮k줜fɚKݨ'CkL,.JsQHw%?]6ONQSYtƥ!op^,W9@sh[cks nj ]VuGucwNCq1VFT :=$==0@*@run002f\is|js0~T3 뇂zҀ-Lad~织Bhm`jJL{eN퇠6/iy~ճȇ-t.uۓʧ݉pDT%@?p4H `$TI0_i ۂ ʋeӱ=Ă矮i뷠_ۥI$>~(l'Hoeod>SpKsNW pe`mXL900qidmhm@baL`QHuGt{sS|ʂh[_O~{h="!=W=P';?E(@run0031B-fb~g-l[i. 芍s^ "`){ڭAÃ{@ڇK(~rM8-]r}ʖi m/sbےӌË僳CSK="d)5VZ'<@bkE*jbA'+,8&wg)iOjMT"iD^pƇ[?p,>[!TI/_ij ֊e=Ђ頼i@޶I$L+|/Itg{x=^MlMV mebmfR9B5[njjhyTbpb`\WIursSuĂX[ROor{X(=8 =\=Aiq@attack000^|\imdtqrT>(ߋy%T oX`_\\YPTpHqhxE*-o߅Ջ%t+◧8ӫӅp_\,DA$p<;L d$XG0^i(ˈߟ-eۃLӫ诧裏ix`߀G$KITOdtMVD K;HEX `cPnD44 qdLmV bG(Y;$$vE\sZhˉۈ Xq Nt}x=0=@8N=r 0$?attack001j]&j[idsfIuMfCČ1yz*Iszٯ@`lHY@TMHmf~UE*-yȋց/l=ވ8םib_I*4Ai*:B W$MG-{`g{/bc^K뽑 蝈ohY`^Hw,J{IxwO_sC~ A*"D] #zc}pm^"FuBr[zhA[a1iW)i*vAwZՉو rծNȔR=Pb=`f=q?+Aattack002gsy_mXSUtE4h^ʀq)f _;_a-g[SA]W_Bt5R*n}3HH蜤*~vބ q.D4x P}*a-=e j& @-@L(@gy*\.L9mL~DmWByBvZWn@m~Ltrf~v[CvU_{HVB/e+NSDLS]kI,fmpaL8hAvQmc:#k,&#@8k}MPu5T LcE1=M=[Sy=RbR: JAattack003&i.h.jguQY^v@7f huʫ* Y̮aqa@nZiJ^uB|2TT)GH֪%xg~ۃֽ*s3sɘ ՀȰ Opa+BE;jY p#n(T@=a=yY/ im}F档ߊpyna퇀B(nD\C+_gCVW$ E>=SI7@n~DJnFV-VN7T\TIЎ'~nyq{%d:Qw`lWe l_ZLtAMvKq~Þ$w ` * @=#>=@b=K4i6Z^Aattack005)b&i+jtnUbFsrQ9`bW}%G툘eK|cŅjf>CUq߼*aI#msq֌%Ƃ.fΗņedq*Q7Cl`tz'c>Fb=kW-n4بy씭eﴪA˳,yCg=#=AvIK 7h1VR=VY[&˘ wp|hy)d:LsfeUyw ls \] ELwGp~ws"U ' We=.= =DLV5PSAattack006 eakykYi7qr;50g7x-kIeE}cƍqB>PVd/t&ip˚ºꄰ-g.fЃ͇SEL%07l7OZ$E>"ek--ކp3ܷٔЀk썵fﰵ>,?n=-8AwPI04mEOSGVYk'!kp]}j&b:Gqj`Yym|^e& GSwIz~w*q#J ,5 W1=V7==M@e@attack007f0^islnQyN4{0zk-?]sϐ籓Bvp`sJөLpM~6/ lx~ӛv2g.sڅƌǔkDC/4?i!;Q#JI,_gy2Ҋe=̂搶g릩_ȳI#>+)Ioi&o?TLvMXϟ!~evmoL9Y0[gphlvbbTQG|rQ̂i[cOĆ{i ҕ=pF=oU=S#,!?Apaina001wkC{^zHS~i4wCFN2! [rw4ju45 R\wsR j!eEkU?x35(`#? J4)d}()F2sFi;0.)C]u!쀸,4ysb%}/!or`]eCd[ZkHcA40]b~5``i~T`&R:Ao>gxxrosZ,[n37WUWd+gSHwj 1&=WP IE&6x=1+=%z=`KI;„@paina002w[MBtwMm(|d4f|3B<,7j-3jEЄ(\4cwڇ! !.AX~uӀ(3~ufwyC\fJWgK-eGE|Gf)/hmqTuxhMAp;W(9vvsW*>y|‘sH%"@=zѰ=e=a.v:paina003J+.R%]>P9AFo" v(.fM rzg8e(~I$Thm.S{8H<4Co(.+Z2e6Î). |~!y+8(\E[{ .\s284`R7y 8_^AkXkko_5|!H>^;RJKMb}RKz1X$8D.e+\}.A84T<>>5X5u~r@rrC[KWv+/_";,Jǧ(h5q2]/bhTUY#%=U"q /o#D<68*6%G#%W2rAlt4]pdX|J|,;h(jhr| PG+`V}dIHM[sAV `QѢwɫ,/|gXqmhdf<"QwHqHg|Hvljږ&О1*H=|&=G=`0:$Gpainb001(W`1W]uae|hE]b> oz]/(rITUIRWOq&n߃_D/ 2xۊm0i)yߊ6֎̇yf@I/=qA|a :5 Q#Q|&5mTZlƙ0oq^xL꾫 螙l|ZmT|&ߙ#K(z`DK,(D]!u^miFxm]ygDc2R*(uC}rYqjul ȟ Ȟ}۔]н=+=#S=ǂ>˥ vpainb002'y`7n]aijKZ? nzb2+lRuU`TkVIr葃E/ sn2j)~߉8Ӎz@G/;>b:3 R#R&3`al2nf̟L 睺j睟g踑T؟&غ#K(GdR>8"FZ!z^ri4Fn`gOcAR5&uCrW~ق~j X̰M}=3=ש=B?)@painb003'_6{^asspU{U3*wa-.aa|罗@sU{Jܳ(|{M뇨6/ kyՀՏl2d.vۃʌɋtBB-6?b݋2MM(._aj Պe=j瓼g뮱Uͼ(#L+*Insm=QKńMXɱ!|fxmL7p-[hvgjb_TNGqSyvXvM{{&=q8=a1=HF@YHW@painb004%B;fib{\hXQ5 |0sY ,SdCą~@ψK+oG8 ļ`o|ĉg `2j~ԊoF; 04p0JJ,,BayE.ݪސyiA(=*ê=(|b'3v SbUˋ!e~~mˉ]:v:]t`gbUr N`qPx~y=]?GSQ =Qk=;}=+6=>غ~@painc001Z$rkZzcT]{}D$rZa)O oD'[9NaY]#Uk4Q/VpwV=AG퐊*ד"se)A?!Ko /la$=fk;2-6((V[y܆V_.Du9ViKABhp2SyDcyHE[Z8UlNLwl_y~_Ab6TXRO/Sfo NApQ_ŠI,hgqh}(+6['vOwyy*DhKa':}V†ɗupS 揔j=Q=h=p!,/=painc002\{0zZlJi E`V}M.9 [S\]P\XsK`ciAsXO6|pp3y&|2̺!`ՇS5=4vIcˆ6\) fhՋ& 0*&J] wՁS0@9gMC` PFwMv]`yJi+B{v>o\J[eH: B$MCO^(%|lZjpyF86^C'Lyx1pg$|W!5tL΁ҍyO !ﱐ썕^)=G׮=X"Q=P ? ˜vpainc003k`^MgW rWz5$ve k:a{)<?Mc`cTTz_JJ>&3riG9+J;}8肩8:.7f 8mBق6v^ 9 fql !0!>Y}.&k)[3D=66@~TG>G0C}?x KaLGD5"'Jħ&a.}2ns]\}wn*bY}Eu50S&0=ـus}뷚Ir=}= l=42@Pzpainc004`Dp]Zjz\t~5FlgJw;1Uw~}@tiTwJLͅVd0и$} v{~YM1D5qVn_Pf0CaɊ!2-2L!U q yh1PlVcn?nֆ\y\qnUL/>)"Ij~'`CHKЙ\% z^ws}A6}\~sXaNT>@Mƒ}x ےWG 羒󜜥b=q==",AYAjump001ebmi\Py oqM5)ux[JiDWfέ{ALVVŒ-~&`lv/fԖчiE[#@4 n;Md!WL.em)o)ۭ׃mDL$=u+IAKSI;3IOWJOWl }"ddW~j;e<JZwRYkp ^{ OdSsLvxwi%Z&H+1Rn=:V-==@GAjump002(EbnQX~oqb.Czx#pLYDQfϡrBLNV:%r]׀k脱#Ђ%f֡˅t7t$Y4?nYbt gLCe1m?ކo)۷сmD۷L =}l+6>KgNG3OXtAVVe|"^6H|6e<Kgz?Xkn^ rQHNsN^vy:$a&gV}$U.tUW7=q%Z==e@]̅5Ajump003YD7eQnN^!{g)o,yñ![Q|ȋCgtfãd@IMS<$nXl|ڟ%nvڱ 锫F$=sڅߘ"IsD`pk˅Ӹ6+‰輲nˡBILzn(J0H}\TO%=zNRYQSRzqd6NQZ0%Aa|;al o^|wS7ahUN=a;0VCD%Qv %47=U^&=0s=okKA"pjump004camqXhsrS?;니y۝%l ile_Nb]NUpKwWQ6*v#k}؅Ϙ%{){:ϵ lfg,JC,pJ ] l ]H6^"m6؉ݠ-eӇ>Ө 汨Ꝓm~^~H'AsI6HkvbMd" AG,IvQX!bbNl1>4-shJskbpT]G vG]zVqljX~qjS{|{{O۽=~&=xڇ=-Q!A*jump005f"^it{lt3Y3犅z{-Hd^~翉@no`lJIzjN6/ kz~֮ɀ-s.xޑˢ݆sBU%@Cp3D^!UI3_i"j ȋeղ=ň颰i_ݦI$K(w&Gojms>Q{JxNW nebmbK4<.[ifqhkMb`YYOUuHssUŵ{o[gO{q=3&=D=l@݂1jump006/@?s_byiyOiX^3ԊsO a?|ӦAsJH,}z62"̺eu}Ё^ e/uq݄Ɍ~~C? 93bԋ)LR,6@a kފD)kaJ(+,3&sk{=_MuW{DtiR9.]ofayeoV]Kp[UqynkY]^zut^b=& -=Eڎ=V@lBflip001) W91ZZo^OrtXJ 4d#{z[P)&VRR%+ GflҎ^+=o P.ܯ MokP3h+L ܇(ePxTB+9V Z624J1flip003#| Lqtu#x`Scrkj&L.)E5nuJtLxƈYIu!+=͖2֘&eq2LnHj0đ^2E|Q(CQ[+D93Y,U5rp>αcN4ʪps'iw'dt"|N$ԕr*ciUwgIqOT)Nbvv\sYgU\zUonrp~Yvz-`u@r=,/=q9=x螿flip004#y Qqu|+x`Sc umq!L9&FG;fuOlOw͊YIr!&=ܔ2ۦ:!e|-LqOx/^-E|UICQq.B@3\'Y5spLcN4ps'kzku|$ןp,jk\zg@nVT$Jkv{csYgYgzgo|ppjv-xi=#=i=<i̗Qflip005!y"Utqw~3XScxmt!I=&FR;vbtSdPvϋXIq"!=/ݭ:ez-IpO߁/^ߜ-Ew!RIAQq,B=3\'U3spKcN4ds'm{qwz اo,mmc{g;iZT GqxihXf \‚typo݁opzv-‹im=!=&l=<)Ky$flip006&v&Rqx4}]Scvkk"L0&EAh|OoO~ҌYIs!$=֓2ࢂ:"eu.LnHu/^.E|OIAQ)f;3Z'V4spLŬcN4éps'lxlz"$ܛq*nl`{g@yWT!Zov|ksgygnygouqprv-|-Sk=)(=/=U5flip007!#w+Utqx>XSc{ki#L4*ER;~eySlPzՋXIq #=ސ2ં:!er/Ll!H/!^/Ev!KI;Qq$f83U(R1sp>cN4ps'm{ox'۠o,roi}g=vZT Xqv~rsor‚|yvo߀qp}-r=9A/== 0œflip008"%y,WtsvDTS!c%|lm%I;,E`;gyRiMv׊]In #=/۱:!ev1Kj#Oۉ/!^/Es#H I8Q q% D;!3T(Q/s!pKcNɾ4ps&lznvQĦ'רp,vnm|g?sYT"Wpx{yhpqvyƒoۆsp}-z=T(=Nټ=@$?`5flip009'}0Nqq{A}^S !cxka*L*2EJsI}G{ۄ]Iq *=ؕ2ҥ(en4Lk!Hw0ʋ!^46{JI=Q$ D4!4T,T4rp>إcN޾4Ҟps(ht-^s"N$қt*tjkvgNLT-k^vsws~xqnwvpqvs-wvv=`-==&@_flip010(8JqkqN}ZV )b"|k]4=(>6TyC@Mu~]Lp 43ݛ2Ĩ2dj>=g&K2І$c<6vPAL8S qD2)5Q$,Q2r&p ? eТXO9٘nƘs,fNr5OkOq$ȟz*yisugU@U3sQvisqxn||nUtWq-qW~=8==|AįZflip011+ R{K1qXlTlrtSA7p{6{xHP.YaŻR%(N Gkh΁^+=o$S5߯ wMnZS3Z+> w(bwPsR2)/V [6(4,0zJ~[zy `mr_=|щkzr[鍠J훳(-L*(k~$d=J""JҜ[_~~g57W`rZ^ ^SODCOxnzґWϾ礜M=Ga=xj= Z R)salutewep001!,Y}BBCqTlNn|?'B onpDxI.&pv͒Tz+P)SHhddcN3x'~0 nY5OR? eMpo|Z,`(H) 1@=ZT'g ;W*:?G$9YIr`j;5f:nl ]!KR pKjn4sۃ$R+GB*lHwiIWGTp# J=@ӡa͹,/r]lshs DMz Jzs%Z C{7vVÂjѡ ɞox=i_==6O*Жsalutewep002i9(R]Uw&uiWz|PT/gy=x*4C?pQcJCĨ G"sXAl,q.Fެ1ʇL/i@=CK)Jn<`&ZU:pi"&>+S b,76&=A!2"(u-kuF` arʇOu8gkruĚُ=jOtG-YsĎ'S!ɲ"+}w3nu{r@J`_cw ݏ~t}lf{kiz0xR=%*==仆~salutewep003_--Y@`y"r{|Uo\Q akO K(eI:m!SZgTtXHn$>Ԋ0}b`.Kc$Ox.!\ր,dt{'= I7 r f* FK(Ox3!#w"iA\NFiw(o}|"ͱ&ú׾,l+|rys)dY }wŽ#́zpuop}/ſW=7*=Ѷ= Ò~ޱsalutewep004h2+\G]!r{x\|_S!a!kI#K,dF[WtQXKn$ ?ύ0흀|b\0Ab$Hu5"\|.d~&< K9 Q r f(!FJ(P5 #w#iŵAaNͭ7iw(n{vÚ ݪN%ǹԾ,o)q}s2_Yz}}wջǁznrqm|/֦R=9)==ks">salutewep005V3.QH`m#uxu\h`S!a!kI!K)eEm!P[hTpXHn$>ω0}|b\/Ac$Vt5"]|,do(< Kw9 zr ^( FJ(Qo6"y$w#iA\NFiw(o}|Ü ݱ'ƺֽ,ޔm=r}s&eY}|wÎ"΁ynqom|/N=`:/==BM'հsalutewep006@-6GDiX*wvx^MY#Q#a'kLK(eQ:L&?cRYhPHm'ϳ>ׄ.z~c^.J`'O}3$[}*eTy.x9 HY4_r}^)#FH!(gL$W1)c*w'iA~\alNFimw`qIrɉĠ"վ.!̻Ţ(ӚjLv~spW}~zuю+ى҃pxnpƲ.7_=:H0=<=K-x0salutewep007*+;:Ap{>.wos[0X(Qq"\'kPH#eT:-,0j=`Bu1#u Hm A.˦v8ca*J`b'S{3a$['e8w2T;H94?rZ^o+"CbJ!IIM';1,H,xa'i]JU\: BqDdiJw>Ke&xtuw"˕8ʽŠ'gLwxt}s{Wxzu7扨‚Ƅpzjp̰*n==A.=n=,>(salutewep008*?/}|4wf n\T2B \.m^XHi'fa78z n b-1 Onm \ Js)l7Z c\h#V1b)Nq=.&[Z cs;<O 2w']>/A1K!&K+/3"1x6'iV\t 3B,b$z '']x_l"+KͿ̛&^I`|td}s}sz.w+NjdbbԶ*">U=I=Ik=E%4salutewep010RK!&eC&a',{v,z'dZH]~c?~ u<pCkdQ~z<A[{ttt͛1νנf(~xu{ii|WXh!}s|<燱jԡ6ǔjd%:=<=Ẑ=G@S&Asalutewep011;RsX+ ToLpl]A+bp1pw:K5 Nn|LS(3&ls̋^53{$V<´fMpPN5Z)>s v*bkOnzT3)5J[d$,:C%/M&8 Q#h4~bY K2)k֋תQ&,*aGyg(KVx HH h"IϨ"n%2_YldqfB>JyrGXJf{>u`jnkؘ$ <=;=3=)@zד@bumflop001/C3fbd@g]b.䊋 sY \7{ٷ>ʌ}@K,qM8 "Z̲n}Ɛf j2nnڌՋ鄷?H@3d/QU'7BbkE*ޡybA(+%Ļ?&|b)v RbMTsEj}mЕ_<{<\zw_idUv Rw\ZTfxny:]̌&zs/@nfݻVUwRYRVnInvjE* 2v܋{/j)ߌoՙЇsr_H*7Ab&:< Y$QG/`glĝ2zc~L鿩 睡噅gr`zGٕ$K(~GbzJ A0DZ$#wc~omo'F|Q\{hHja8{W.s'tBwX؂ ̭|>=])=kN=g!Abumflop003m^"m[ifti?rMiC"nj+y}/Mss۲@`eKY@TOHmeZE*-wNjׇ/o=8פje_M*:Ab+:C [$MG+]g"ʀ/bc^KŒ 褋qhZ`^O|$J|I{oO`tMEo A,}"C\ #scjmW"Fy5r\shEMa4[W,W-vCwZ։ֈ ʭN×C=>B!=md=!b9Abumflop004^\imtmo,rN?,䋇'y%d kz^_Y[]LTmHs^Q|6*-qۅі%t)~:ӱˆifY,=C!p=;N d$SG2^h,ш؞/e̓>ӧ笧雏mv`yH'KyINOgjMYH A=SFNYȪ !oc^lC74$qb^ymW'bH,Y;2!vDtzWщ qNȪ|='=ʁ=q=zRAbumflop005c ams[esrU?>"y֟%qeqpfJg^SU{KzQS킏8*r#jz~ن˟%})xݙ:˻lDl,OC3nO ` q [H9c(m9݉ݪ-dҔ>׮ 䰮蟝m밈^҆H'ApI-Vnq\Ol >O( NJiQX!`bOl-E43shJnkjp]]MvH[{zTw[iqWSw}|we,==1=IGƫAbumflop006wpZmuhUf]~wڐ4f,J잊dhiÅ^e‡C5`瞰;+@H$lIrl,Ǵ)fл ۳ԓoط(ݢ7Қϴ "Ǵ&ϢAːpj߭$пɤ4ۤɳᴭ찛pBדIoF[>/OBuoC@&FfTR/`Y@G{w{Du< jzhe[y8u a]&tEsFxIdyez"s_  o=Δ2=E[N=J˥]bumflop007e]%h[ibseJuJ`C!5y{*Nrש7`kEY:TEHme{PE~)޲/y穽/k=ވ8לgZ_F*1vBi):B V$J{G)y]g!p/vUcRK빆 瘁ehPYRHn,JyItsO^sM?{A&&C\ #{c{omZFr>rY{h=Za+kW$k1{?wY։ӈ r ڵN˔~=Nd$=N=Rd%bumflop008e`#b]agxl5rXe>zw/BuXJUrHYHS`Inr]E*2wϋ؀/r)⑏8؞Ņwe_T%BzAb0:B \#XG5z`gl׊/jcjKʝ 髒ugbTmG$HI}MaxH{ K.#D\ n^emj F}F _jhHXc7eW.\(vDrs\w׈ڈ { }ʗM%=/=0[=6bumflop0098@#}^bsVq|qp=0⋒h}Ek#ڀԌ@pmUqV&qsN餞7%ؠ bv΀ӭ}-}*z[ڜ:ȜކAp#c>AdN;RllI_0b4l ʋ˳D+޶Lj㱱bϢ@&!}I'u'GkloiRLONHhSy"VDEphH3=+[k=sim4e^=TQ'rL4gY8c҈w[RsNN#v4{ =K7=p=\Lbumflop010DB&f/dwMl ~Z{)<狓kЄQjЀԑAnrUrV&qnN讥4#}ș [qwƀʲĄل%uQס:áߌC{#s=Q6^ ^wsY@@b@ڈ ЋԺD(ٻʈ߷bЩ@"wIw'n+GnbjsDLY7HQxQj"{UD@nfN571\o3ppw&El+`]rM&|gY+^ʈh\3dN/ xj=q8=H~=(bumflop0117fc+prKm|qr=G狏kՙ#j l?~t@^g`\UIrcQ額7%Љbvɕ#݉,zn٥:DZԆ߁B~$j>Ndb1f z"rGR_;pGֈ-ȶȜeLܸ߼㱟pč_G zKz|&KOj^iMj'LN#H^|TVeCnGB3+Zl3vmld^ YPwJ3hXGvΈ~ZGrNR/}3~Am=(=X=Φvbumflop012^Zpm\ms wT>@䋌$y%p otN^LW]?`WHqUQp6,r#o΅ӛ%|+:ӷ lyfh,LC0pL1\ p \H8^(h8чۊ%wemKә 诙蛁mh^hO~'JuI4 OftfMX$ A=,GQX!dePn014"sdL|mXpIX= $vG`zZxńщ\qQ€|Q={%=E=zT{0)_bumflop013 \ Zmgiok-wArC5؋1؂*m tۖ2^IK],Y7HmPQqV6o+g%tº;֖*q=ኅ:ֲ ]gfU,9Bp=(:j%] xmղ.`UBX2T+guySuz~kzAht:zV|2r 8*AV?VQ &7{-iw  ~zl!qO2VhW{(Li+g@qT )SS=gW=߮=f"AVFaBwavealt003[5̀OH_wt1c)v3]NєowɂklVi.{|Eܲ+QUhN"޹)0^lJض䆘3q!{&?8q^c+;&ԫ܌?xss9^3oWX|d0;"|bKVQig{MF|>[H`Z 3>{3a|y$aU5Ul@#{$5p$JUT 8W\==ź=AM.Bwavealt004]8}VJivWo%3 FkMqjkgyXko]oa5zDӼ+YJo._LVB *,{5so v~ gw\,NCYyɉ vt,ia3JvΉm=n=o=ÃL"Bwavealt005lB}hKlpW#~0Ɩ3!Kmfjp`zSkvo~`ia5pDϸ+VHp.9ptK ϼ!ւ4(?dt|*ޏ'ͬŖ֐Ӏyp?|vy8QpWiee# mOcKC\lOCƀ>fQ[= 0&{8ymp~aw V,KDZ|χ{%ya)J{=;O=$0=Å@Bwavealt006rYxLgvt}~QteP1|L݊ FŞdz4#f|zo?w-s(p^Z\:҄^9tif.ZIt5y:|Ik̝Hyy4blt *Fkbgx}쐍Q5Y :݁6ng%gLΐ6z6bQFym{ptdH|a[tZcOn15^X<]}OC=o[V*Ce $VCu?@>KZ^ɏ5 \AK* %5#{=K=ֻ=@VK?`I,Bwavealt007rJ{}sQonP0u䋏 CԘ5#`r=ypMw7hGp~VcZ_~9unf)XHr5:zKʻ!lՂ4 ,?px쐊{. e\݌,ҊrՐYzYprFnzr~oJi[hcc _H^TE\yPDŁ>nZX(+@k gXw(P9LT["ԉ0Z;J$ !Xx=hN=K=賆@ѶT(Bwavealt008pgxHj}p~PsgP/~[ኍ AȜ5#`z.znCw4h:p^[\IՄp9ykD)[Ir޳5:~I|ɪ#Xy4s ,?ybvx}쐈d.j LFٌy%y^ѐFzIbaFnysv6J~b\p[c!Tn'9^UA\yLC…=mYY+?g [ Hr7A:HU[΍3 \<K$ !nr=M=ջ=`f@6.&Bwavealt009lF~}l~QonP-~{䋈 ?Ә5#_rCynOw;hOpXcZd9xrD)XHr.:zI !oՂ4 ,?pxx쐃.ߊ jd,ϓxՐ^z^pxFnzu~oJi\jcc _E^VA\|LDDž>lXV) )Ag c~Tw)L;LT["։6aAJ($2==[פ=rϺ@eBwavealt010jƃ[hv<{<E= Gkނˆmkem6`caК3_fܜ(EV~cܷ)5jnOǺ ׫"ч?#&>dj~+ن8·׿ժjd>o~z~7z%dabkeI~:5c\IpEaaEBvKsbJ1_2}Imv83zz#n1zTB[z~h"}]azV e=ߠ=Ƞ=@5DAwavealt011poPpx\WXvDus0c\}!66ldݓuDۨ=F_Å$WH"\Wbu!¯%Y˻Ͽݛ8γ'۟5̓ ̟>̇6j~!͋)~⿿jõ6׫>&y?h+<[AdJK/5V^h2UWJ&txh|P1$oh{P[ 9%b%wQTCzEtai~"<h1P@ dP tD[AM=mN/=JP=A0CApointwep001$D2fp_PKf[V0$se 2L\C~B΍>+hGό Xh{q h2eֈ݇tFE85p"6SP,0Diy 6.׺ۛyiC()~*ٝF(\&3XRGTy!{yEq}m|i;eE\~Zip@TRqNyxwx!%\&&G43 Rͻ=vb=_=D{3AOgApointwep002epVhxmtIckx~4ǭp+Y՛cb]ng|;c[B~Y劓p+#V$r=zfԸ,Ъ3rԁֲ ܣ ԄpLEߊާ2̲!ҬIՓBiʄȞ͋, n|F҇྘⤑yih_oI_DKC 0_k~4UdEK#RK'YZ:Hs&zn|t6]9Vx`sT^(T gD{BI}Niҋ"z`$ =Nw=ui5=v@&WApointwep003ՄpmkڝotSkw䖪F }(aۢ@pioiz&a'fzXx:6LTL'o!{T (ؽ>wz1ږoLE- ÷H߫_ݜm٦־U(v jIDX!s pSi8_:HVDDB%=^ky9`d-DJ WI-XY3O`|n}Bg5 rydvfaNU4hFD|D\SrրAy]<$&Ͼ==aq,=3@*AApointwep004ܘn}lqqrq颩F-I!cۣ>pmmr4ifzt([t<KT(&lzN`-IĔ>xxt0iޝoҶKE%ΩV㷮^m߼ 9(^-Z4D? ` eIp)^$VaeVB&n\lqW]hmEMbXJIX=VXO H4*gufZ~hK~G{T{ ymu:[3]}Nt%3=J=Y(=X@1?QApointwep005{pcmrnPrix뒚F޾ ܄(dƽ)bh]ic@z Xf:/LSQ'k5zf ٦(ܷ>xȍ޽|1߆ߔ{dIE-!ỴG夫UiްJ,l X7CR!lcAb'_0GTBA@*`mu6TiDNWJ6WXCOn|n}CL4Vyhlfh6\gL3}GhUɐuUy~#]2\;˖=d=3=S? 0Apointwep006rmbk؊lxKhv}↨Fֿ {(cHSf@B,^h2`\DB"RH(XY3Odyny8Z9ayay^Y:Ls>1|BWSrڄ :x ]:,=B=N= _@@Apointwep007f].i[g`t`ZuC^C~@yp*Gq֜4`kDY7TAHlcnMdz)ʯ/}蚻y.b=|oד`Z^>*+uBi#:< O,EzG(w]sn.rScOAꩂ ~chMYPHk,J~wIpyO]s;A$&C̞]'#~\xxm`FkKrVh8na'}W 2{?wX։҈ ġ N ̔=6"="BK=YK@@pointwep008ZVa&S$^ctdRY߂7=Td jq41ns`O=Nk'lۚNBȱ0 zbycpI1ji.>ÄވwEfnԙIHOT2Z6L4,^(K6-bSc fK$T1O/0]IiHUG2_*L8"^.>61WWW i? V'O1']?i~pointwep010(9T&DYPabzsi(xcA> oza/&{,;T~8RFNT&hzAD*"չ2z؁욳l/ms)dt6ۏHUPj%FMKTc(q:5 Ww#W[6MTZZvls0koN^VIȆ xl\ZOT]y#I~}(p\z:K"1B]!e^~Y|i~Cp^[_|g;hc({ P#e0vC\r^Sjgl Zʟ ʞ]uݏ1=Zo%=lo=;pointwep0113@-o` cnwwu)|k=Ҍh`-&n#ڌJhTwO&pń룗F/"i|ܖj2p*}Zޒ8ϋޅAV-O>(e/:9[]&?Ual2Ɍf+ֆl櫮ạV&I'"g{]LBFVdfXp@4g[f\zi^meOTCfuGTqXIj_lLXwJvd=)"==O>zܞw:@pointwep0125@Do_cxjzPhXf3nsK c6}ܤApVH,||72"Ϻew}Ӂ] g/vkވnjㅢCB @=e΋*̈́NU'9@ck nD)k颾aƸJ'+,2&qn v=ZLyVzDviN9*]ngavekVYKr[Ukyjk^]e|ueȖ=hO=\n=L>B'cstand0010PlU=r^xSz|N J0ixA~x6C3Lnc Qy33ܸ Gvrw]"?n$A5̤ _?pNH4R(A1i&cfFniR)=)V d.::&*A&0 *k 4i izXH&:t"kzr͒ Qۧ)cOiIB0a~_V|"^ک"ɫ*.eWqns\(_45Urae~|Rvvjwk/;L B2=b=A̠=XCT,cstand0023PeY> ZxL||I @1inC|x0E3 Mn` Qu33ߣ Gxrl ]$?o,vB9 P@mCI4I)Ay1`'aYGnfR#?&V d/:6')=&- +ks4\ ilWHv':f"klr̆QܖG)cH~iIB/`~'\Vz!\ҩ*0eWlmsZ)_03Pr^e~|N{pjpk+:J >0=|n==dc?Βcstand0037Q^^; WwEyI @0icF{x'D4 Mn[ Qt03 Iyrg ]%?p,gD9 FBm=I4F(Cp1X(aOFnaR?$V p.:1%):&. *zg7UidWvJj(^#kg΀ތ&!)cH}jIC.^}'\H{!Z˩ *|0{eWglsY%_/0Lu \c{|H{kjgk&8G 8+ʇ=}= =xv=cstand0046QW_9Vv?yE @.iYHyv D4KnwVŠ Ns04MI}t a ]p'?r,YG9 ~@+gBNv{B7ImfVy Nn-2Mq Kq S]S&Fq*@G8 s(Bh+G76&Cf C&Z8GkSS4U i+2I+Qz &zC68gHWSAH(C!zNaNfI[!3aH|h>H(&^{,WJv$Z ~.iZy[xޔ8 D .~(p=V=*=xR@6cstand007i:QCe6gQu-u@@*g=Mu{B7ImaUu Nk/3MmKu R]P(Fs*=F8 p%Bh(F75%Cb B%Z5FkRSFU i*%#52L-Nu #w@65gEWPAE(@#zM`NeIX!3bH{i>G,&]|, YJw$Y$}.eE8 n(@h+E76%Ca C%Z6EkVS4 U i)&"53L.u"wC68gHWVAH'C"zQcNi([ 3cH{j>F0&]~,^J|$Z$.cZyVx:'F /~+kt=='=<^\Gcstand009j:QGd;nUz4zE @)gKHxv=7DmrP Nj46M} Iv [ ]^#Fq*E?8 r,;h,D7:%Ca;H%Z:AmYS ?!Vi)*#35(/|%zK 6@ gPW^JP%nH!zViNrId3bH~kLB6&a,dV$a .g~&e'mV$f­ )n}5wzgeqrN3^#@Nu ouP{py]y6L _2LAІ=ho=0F=ФRcstand011w:U^D^I|LU,ge@|x$:?DnOl<<ژ Iz"j ]| Cp,a:7 C8i:BFF(Ag1X&aL@mdQ!?'V b*81$3=&1(zg FU agWyHg"[ kgÀ֌&)fGnIQ e2UIΩ=|)\=_Q=\}Gcstand0128^\B _~OyRU*io>zx+:? BnRo::ت G~x"v ]>n,v:4 N6iA@FK&Ao1b$aX>nlQ'=+V b(88")A&1 &hy Fb arWHy"8ikruÍ՝)dOlI<@fą'pV!i˭"*|5fWopsR4`*DVurz|Y{|ji~k=Mb2VE=J===D.cstand0138h[A `~TwTU+iy8zx4;?CoTQt99׽ G{x"~ ]!>p$;4 ^9pIA?T'Aw1l%cb?npR-=-V e)9;#)F&4'k 4p iցWH#wk~rƚ֯)dOnI=?d˅ nV!fҭ"*|.fWspsV3_.AXrpv |Yv~jp~k=I\2QA߶=D<=&'=.Ajmcstand0144nU@`|Xs~{Y J,b7zx?<3DoYQw88 Gwx ]!>p$<4Ϣ k:pUB?Y%>~1v%co@nvR0=0V d%)9C#)J4r%k 4~ b،XH#8فmɉrǦּ+dOlI><dσ lV"dڬ"Ȫ,|.fvpsX2_3>Zrnt ދ|Zv~lv~k9EX N>=qZ4=7= T }cstand015.PuLAqa{]n{XJ.b1{zE?3Go[ Qz66 Guu ]!>o$=5ݡ v;p[E?[(K2z&cvCovR1=.V qd&,9E&*H1r (m ? bڑXH$:܉m͍rʫ+bOkI?8bтfV"bݫѩ,}/fXxog\._5=tZsio ՈZvl~m7?S M:= |8=5=a![cstand016)WzFBq_y_g{QU3p4yQD=!Od P~53Gpsą^ =l @5 ~@o`H3`*K2z&c~DsR7=0V qE,12|(eHqR7=/ VZ6,3-9=7=T=3 &[Acstand019,PzJ>q^y\k}tU J3b4}zJF3O` Q}33 GqsŅ ^$=o$D5 zBo\H3\+>2z(bzFsR4=, V [d)1=]&4jtcwalk000}(3gLa1wrpu|F!T6i@y=5>B6jgR}G Mm[Kh'(?ҏ/٤c-pP>>N.JІ.f(ah9ob)%K!Rr e 248+L<(M'+2w 5mցCg arSׅ7pmswНLmNwO&dxȒݖQ"ٴ"̦(Ֆv)ssAU`m{rzÜrݥҶ|{l{/r={%=E=o_vcwalk001l(iF WTX 8K&lO v_lMhLnSuO'[MwԊR ЯL҄|={yz?S]k|mxÔu֮ۙsl|/ =@g=ʭ="%cwalk003s3*X[U +ugYIT6i{E,;? Go_gH@Ǟ G{"kXAi,q14׷2ƐM4iBBCH,@x0\(aV>nc#P!>$S b283*=<$-%,u 3knFY ih}Vq8b kkuǑۉ=iOrH0RpNjS!Ұ"+ńz3ou{sEF`Zaw ڈ~p}lnkap2n,t=#Y=='\%cwalk004f=%O^Ts"hVw|UV*gv9x*1C;pHbJEį G܁"yXAm,r,Fক1˂M,i@;CM'Jh/ S c)78#=D&6$t)hzFeaxɎOy6jhvuğٓ=jMuI,\s'O!ij"+yv3~mtzr?L`abu ߑ孀u}}kaykk|"0z[{=G\==*k?}cwalk005o4,XZY +uk^||MT3i@y06C Bo[dLD M"rXAj,z-Fຓ0ΒS/iE?CL+Jw0b'Z[;ph$%>'S  b/77)=@$/%,u 1kxCa aqLjOz8ikruדLkNuG+[tȏS!Ҳ"+ˇw3py}sAM`cgwڑz}lo|ko}/}=?=b=ܔNɶcrattack000,~U*n`cn}{r,d=Ҍs^-!o*؄JdTtO(r̈́랑E/" ni2l*a␻8Ӌ@P-E>b':5 VY&7Ual2Ōf+l覨aʞV&#I,g~ZL> FX!gf[p:4g[ea~iZrcKR@luF^qZPjdj[X[vw=9,= 0P=]Мcrattack001&g`0d]afyiGXm>!zh/2pXZU~NTWVsIo|jE* 2v݊r/j)ߋoՒ͇wm_I*=Aa#:8 V#S&2|`Zlś2y^L齫 蟟j坃gsTGܛ%K( Gb|IK0%E\!w^oi~%F|e ^|gH|c8R.%tBrY~ׂj Ƿ}ʔ&m=%=)=l,p@2>crattack002,B:|_bdJf]`5ߊsU \B{ӯAďy@K,rM8 "_йq}Ɍeh2os܉ь†~CE<3d/PR'4BbkE)ܺyaA(+,:&yd)oQfMTvDp~mʔZ95]uaieUn OdZTpxpyB]F\Zu D«=C(=wt=_#u@ >crattack003&B1fbeEi[]5 銆s] &XG{˳CDŽ}@ևK+nM8 ]ٳo{ǔk h2oyۉՋ{FG<3d!4RR(4BayE)ܽyiA(+,ª;({b)t QbMT!senmΆ]3d"3RU,3BayE*ߢyiA(+,í=({b)u RbMStElm΋`e%Ջ4VY&6@al ՌD+݄j驸a˰J&(,*&mtlLNJVjfaiJ4p([ljqil{e^TPxJgqXYygjgt]wMgv}g=c4=v~=crpain001CSZ P[ViOi_e >/bo)iw8_0\no8O%Q:M-(iyՖfQ3#v<egpK_5^5=e x:eidnƒV8.<K]d&5G//S'@ SX%h7<*b`"LJ z)bwLnzT6)2V[6(-;D&*K&6P&k5pYK-:&m֐rְQ$*_H{dIIXw GHf"Nۧsͮ%/_YodgeB>NzrG[Jf{Dugjzkٖ * "Y:=@=:=JA>b^crdeath001˜Rg!XfTRnx\5S!N_).2Ծ)ǹϫ Wc70#$?UE267&c!P0@sf^xn)`GWz .BaBCa`s^T}`aDTqIEKZ^Cue;_@ \h\0iH87;Z!ُ3G+xgo==8=RkA4!}|crdeath002RJ\nmwh?]I O=xLfϦ „5]no勝iINvE|m&_ p{o3Ģ {u؎+ɶ5`cF2HS)g1qY8.UFF =OXۉibKr=c==A.A?gcrdeath003zpkizR,SOŴ;֝=zEBpz~zOv! Oj9BybevB+긯;Ǿ vgdǺ%꫺=ʅ*߯4ԻؿIܶ<,Ķܩ4ҸIҟ튚|o*sZm^iGSz뾅)ޠ7ܴ֯H<+"F׾Kîתv2kbqksS]xuAR}F]vzlT2koXMxdib`KPuQ:N\>JɁpK[#[&}yiy`^ === r$A*W7Acrdeath005w~eqteO x(s'^zΰtZ}!<\9Gnbfe_L⺏<ͨ1sRdº,尡>; +FסެH5(CHžѲ挔w:eb{kR|yhAXGZwsoy}nZ-4`o`uf \icR?\7J`HF!H1`i]YF {=Β)=K=K@ y ?deatha001n\rZpf_ro#wR[AA:'j,p xyӤ&`NEX*Y*HiXEEc+k%q˫;֜*}Lܗv9ֶ hX^h,Iv@0pN<_l [zO8z]'i8[%c:Ec=Kn rXmޭ=]=OX'zJ~nHz4S`ynF#J,0*AY!ccRn0"F|s`NmH"b4 X. 9}Fcz^}Նʇcs Qʗ!)Y=+C=,= ?@deatha00262em\Sq`\\D1eI@~rUiA@| vߟ7rFζ?ҿ.hLr܊ $m19ċaav` -{܂i|d8; )<m q;MD*)EiuvƄoʤ0viʖ7ƶ*0z/d)Z,/0ʨ&]AIA`!E}o}{vziW`c}Th{-pDXM=Z-Zt=v-c= L $T]\=2,=Ij=0ʿ 8Q>deatha0036 bm]RpEfZE1t%K5wiSU~7`Dݯ?.cKz߇'D}Gʌ|t j <߉~e8J5<l0EZ!J)+Eh%}˿Úo0vˏhݥF)!5{/`c=Y(e-  "T<\o=5@==} deatha004v#:A6WmlJ|iffgK %xK_"vAx؃tji;87Q- Hl/,-Վ8KQF-]-9Qp5w28xTN ,8wQi`9T%;d2pઑ%h$_ D'jI(>Y""dp~hxeaiYnM4@^jBc>Qr"rpep+HHXgJ$=Ky$==lf@:deatha005&D&fp`P6j[\.sm1OGκCwBΊK+gG: X١i{w m-fw׍܇wFLA3p+<WW,1Diy 6*ڨyiC(!)~,ՒC(\&3 MUUGR|"}mEbmrhc!:1 Q#Q&6yTZlί2ofْL龻飬j棎ZÁV&#I(cJL2&CY!r_mi'F~w ^wgJc;R2$uCwrYgjmk }X }}Ȕ&=m=K=(I@@deathb001"^`HYYwZb{Vu;jFmiHw;0]r~݊^U|MT^V{Lwք]je5ٳ$1|]lL0E3w Zp`ЈVj_0{CZ 4/4("sTq ynudydqywT퍈I/KL} Ib'I>2&F֮]% ]ss"Eq TsB \5Q)&:Nك|yݿ |Гwm=Ǒ=qo=@Udeathb002by?I/xOT#}cd7uZ. yG݅CWAuZ.4^XDo51J{Ka+TJ#^\6^4u!yv#m$+hc>aVIrD10g$(}"1+)RA,k7&<0925A?6 VF#^vjuSzuTgTHJ|P>Ldf0_dgRNoO,쳚LGưJfB^yaro)|)I ׇ`M? !Dž=+=[=LA,@Œfdeathb004|v9}jesT[p6cŅ=DJ6d4Ж/y0(ukF{[YT6W 8iFU|NVKn'|/F(7FN@-N`(3&PVVjvvr:-@#oz&X@?3*:-0-"t9@ Op~u|P"S^ |͟ kNrHizpJ@a2Fkvk|yӆ<:eWu' a\J=R=;=r+A&Rdeathb005s%wVqsVe| e%~eS>O0"q-brD-`c+PRnO&COmU)g Z;V?1D'4uZ1pg>cj<-*)K` r߂ 173%WAh"fDK/8b %U%0q1`D&Kik^wq]_L"#YS|]SG2ci:QBpQg{H(bzqemMdF_}LxDUjG<b_<` Ҫ{uP閍=E%=ek=A deathb006f \prRixrW?7ꋊyٖ#d jW~r_Mf^XUIx[Q7%j۳{~߅͒%{*{ߖ:ͲІmDi$MC.pI W m [H7^ i2ى߰-eۖLִ岳꟞m궋_یH KwI;OlidMj$ >O)I{sNX ![eDn7C4/gj;rmjp^]OuIIzX`lj@tqrfS`}`st=k=\k=3 deathc001@S~dQXZlLyYRC2ib=aul<al\Cٛ.O'NIGF+t΃ pfvl5-[;s:xm4h4v^XIbFtkg#V$'5. K] p:1:1@#,7SX'sgM:U>ij*`y:=da[Msj:X6OI,|a0pL|t)p'\|$<2L&Q!D"^-j ~ydTla[DbNp4'Y&*F6LvzXzə {'=ʬ=ߦe=deathc002;V}dSX]iMVHC5i]Ebuq<elWL݆1H)OKGK+yă `&fdt9-Lr0h0q:>D4s`LKa>xk]&J)<"A ]&p@)<27&,0SW)sSV:EDiV1`d@>VeOSzZ1K!G ]2g }yeTkb[DiOm="]3"N$@7I|xVsÙ {&A==u-Y=s)*°k(deathc0038Ve"SXenN[<&FHgXOg;zkNZtEJ1OXImg)Í S9cS9-@{{t})h):4X4meC_a8kS5@A<"A ]9mP&P119+)"V"X =w@r4_gCH`O[?G@kwOTX^PHeg+Z~1~=~3(g~%X*>BE!Jï ]2i }xn`mgeuTrL]FM59:Fx}Zw ™'V=R=6L=[{deathc0043Jf'S#XjvSZ7;FZgUVnyFf|jbJ?HjIb)'KRcK:-;ԇvvz|'h+3n8hn;zi7yKK@Z<;C3]Rmj#j1+N)'7V7WNw7+~g;f`C~4?;wGnXVnHZ)N1=3+n%j'?S?#Oȴ$[2n zz`rreQYr]]YGF/|G@bg5,j }z~NG194m GmU@^0Dgϊ */'L`rʃN1c/C=Key(SC<Iƕ^%-}u\mxzg=drj!Q~wFZ>R/!7Fǀ}|ރܗG ====rap¿\ wQ2=͉7iGF^MAwG^ZAd*{Dx?Q,Ah^K]qDG GLeH]Š,%~kgmny=Sy:7VhxQdhInY8~:ntG~| TKJc mPJ==I^= E!"^mdeathc008`{JoYqd|L}(E kRXt01I[_idTrJ`>>b^<,^ ~{~Dj>;69j AmM>_5DZNJ (/(=`xD;6k9\GFOцDăDrOU[L[/C?Lg([DC!'LƢ&^/2{t\l}sn;duwRrLZFS5!8C΀{w} 㢚GЎ K!=̽=e=n fboom(]-SvW{6bi } ub"(&?`OhTOv_D׊Ksٌr3"ґ-p-knp x-}[LƌCc$Ѓ6U:UD6YƒЇ}bƐ`D:keyEnC?b=>5n1pkXgyV=hgnpyTypgƐpnt񗙪A/yK?;8?,>FZ?,>7A?>40?>20?;9y?q?Is??Fs?_?G?_?H??Es??F?>Cs?_?Gs?>8s?4>9?4>D?>C?_?Hs?_?G?,>EK?;CZ?,>BA?>>Z?%?AA?%??K?;8?;G?,>F?,>E?;HK?;Cr?4>Er??Bg??7r?_?Ag?_?6l?o?@g??5r???g??7g?4>Fr?4>E6??2?3?:?3?A?3? A??*?3?2?3?6??*??>,>>?>>;|>;=;;>;/? ?/?,> ?>>>???3? /?-?@?1?30?1?<0?>2@?>4Z?%?6A?%?5A?>4Z?,>7<s?2=u?1<u?9=u?D<u?:<s?;0?>;0?1?<@?1?=@?>>r???l?o?@r?_?AK?;C0?;D0?>;A?>>[?4>5f?4>?f?>>[?>4[?>4f?>>f?1?=[?1?3[?1?3f?1?=a?K?<f?M?;Z?M?2`??<<s?2<u?;<u?:=u?:<u?1<s?2>G?(>G?'>m?*>m?) ?c?- ?5?,>5?+>G?' ?c?->m?)??.>m?*>?/>5?0>5?0>m?*>G?'>5?+>G? >G?>m?>m?>5?&>5?!>G? >5?! ?5?">G? ?c?#>m???$>m?>?%>5?&8=?;?;Y?8=5?>5?F>???>?>3??3? n>?v>5?J>[? J>??[?)?3?)?????[??;??;?)?3??[??? ?? ?3??;?U?'?]??U??I?'?I??B??I?'?U??:>? ;3?;? ;>>?>>3? ;3?>?>-?>>3? >>>?;>;|>n>?>?>5?v>5?>5?>5?>?>>>???>>?>>|>/?,> >= >;F>?>5?F>5? /?,> /?;>;gambas-3.16.3/app/examples/OpenGL/Md2Model/Weapon.png000066400000000000000000000417401411575327000221350ustar00rootroot00000000000000PNG  IHDRkG8PLTEkkk[[[WO[?/##77+CC3?;;;77G?C3//###    /#7'++#//#'''/++C3'##K7+WC3///+S?/_G7OO;kkOKKK[[C???'   [[g;+'3'cw{_kS?ccGOGKSKSssWkS?/#G7?/#sgO;{{{sWC{_KkW{wwS[S___o[Cǫs[; +gO/{cC+C3 Ws gK;# 3+ cK#+W';+C O;?' 7#OWC+7 c#S/#oS'_7cwOg/[;{?w{;o;;/'ˋ#W3+ϗK;k+w/#k7'[O{sSK?C7W++˛SGc33'?OAIDATxڭ cGv& x4A4Id7 h6(K( ñݬ#f"yvFʤ)Hu8I&{{NU7=,K3nHuPySLf*sf*UTMM |+t!_BX,:LSa;ٜkKbP,F(݊r|Zf%4|(S峦4EQ5ʸ(FVj~Z+~);N jmZJfjaqzlfh4r3Zs9\wj!WrK%lfKe)44M׆c;NJ0jm:Н^)bߔnt)"2\YA[e펞'B, 2 |)í;؅|A qm;`3\nzi5f\X;AJ9P pfYsS:~jua.;ή:oHwyntI\bZ {ֲJ^OW4`N999) 纓ښ^.[2s,..-. bRD/U%DHd .+s-UJkgaܼ/E nױ߈n9#z\/`;n9;ҙe%x'K?ePUX/\d.{giqnʕr9G`t nӏUn`ziinĭ8> E?[䝄*HНzcdn :z\씛z -E = OLZ_̜|qiiq 9/R LA5TXų;⟾ϞKnujt';sW' b+@ h c*'W!9c?2`sD`酅ZZWtyy /|"sq=93 zXDQu>LtbG|-˛c緗ˠ~n?+EGh~v0|6?鬍WoX^o6r< +yJQ8@̬֡/L3ṋL/N2lžm `Rw-)z8SWG ~#Ct>l/ Ge9Z_}'nfۣ0:Cבt?Z0疪Hן[F16F#ӄX9in ׂWy%,[؃e.,-.]XX#j%`t0:ȂfeΝ]eC0tSu L/n_Xs]ԓ lvvZдk @\X3-lWβpP;~ Kgas˪Niv&6t٩E40L 5G86 _?* 3%j:"!Rle9 (mTBQ p٥ KbhyK%T9Sm'fF\OΈEAYFӝJ#j.t3S@}E*&%4'T?:? VC^5D9L0.N]`S3sbKKcྡl`s8= 3hؖ6;ۅg+sŅZ_}=KEAftnnI%= p NAY^ ^f<3fUx`\>{XuI< Ԫ8=o]'x^~ Z#qzvهt/^ixc.8@7r.QPX s kNLZ 8Tͬ!8Z0[o[<}pj $AM <&)LW jZndkĐs"ݥn9' QjW4YU޾z0-8zP LH<}4 9˗.s;.M5.\Xo6w͙4[sy-ep yxūYV;"ݥ\a9_) qJ0]>ӫ4Lc=aT 5 OU@KB6Z`{f2S:}Ξ= U>oK͢,xQs3yYŅ,ts"F!gLҽ6t痟+:0 iT0R.[Bʁ&OҶ m` T dp2KKᄏ83_^nF5gb}}g.~x|vZ>_20tIfb;\瀡 Bayf}j ץpuaԝ[Z8g~Y3t#XA\ݿRs/̦]Q.b jqCwmnpe榦LYw0BXTp!t/1<j r /~Lֹ8+oLw^\Bh'z!((e:!n5oEX:u˰PAPXMrEF;sa!JDa*ؙeg}4NJ%†R jກ9p+{̟og.^m&0W Nsf2oOеӐ 돵YF1o2W ] IXJGŠvp'& jff tf i ϲD#+PzYP@Qq(W8wqtn} M]~פ?ܹk*b݉mtiiqv ޚ7Hն:S5kVq3Ṛd|SUU`ǨNc skfĮ5s+Q^n5ݺ R.̅jfMiޙ r@M@0; 0~1FN !%8zsYS:(2@eA+B\4{y]<׃?gt+DW]6)]~Hd"!0+MZZ/1klV1| @_DZݙfXE0K`K d-TC4E)3=cKEw #! Z(s0 +fr0,f&*T6n0M4 /B.iyf>I8,Cy%Sߐ.A*~Tڜwƚ#hr':Xp6dR t~fP)=̣ẃ7 S8`LdbjN ydJP6ȫ턮tc @)_[k4R:$*J)Nx(ZFii$\M]`a%ypUB"ȫ$B0э'8-?]Su2%4 oAZl}u q0O@dχxa zjP}SUH'I:K)ɜ8cP<%ŀ:Y}t@c R;N V1gvU qㆦ%JYB>G4G(T`Gx0&=Sj;v.>=C ngĬhǨQk?I7+:H"khknn/q~>w k$8/,V04DB1fJa'V,Xmg\&MW<ܾ655U6?$tg*еٵu].pSG}VD 0+ KD E Pi36fknd"$ r2J=3SBL޵99O:(t3S ]_S:OQy/`={dK|;q1eb:ْpsEH[ '-",- } K^f1AVs5U9E)5y?HtOUx\r 8@>kѸh4[j&dX qhA6 nU?DS&RPZيYf&%7"DlT"h? "]+%gސt׷ϾHW+Ojo"W`I`䎈$Ei`zӅ|L#[(1!Tl ~DzT|p1'Cwp$]qK J_zn]vJI( :kh[P W>iP>,{_TU^C0TN"kp2E֩)x93UiYF(G/_gY{.;Cwj}J5EىW?*pY8/˺ #0mC^0Hj;_oRppA(o( oߡ5SQXӹ3AWLTTk ss.Khxt6Aa*n0YLj`]8C 3P?׮H"iTAc JX>i,&bml /csCNGZtl!]tѮҥ @hf<]*UPx+7p ,W(=jtPWYTj~N|ٷkL̹͹MJ~x%])]mR$]Lt.y_EƬY@RMǺiȈڄ\nit:G+,p@KoJ($ y~wxL l#pk]Tt!:tB7U"^htv`$:46aBFN퀤Mz=`7\܊0^9EK!pī[[_W'7[THߗ'نA x .T= &&?}]on.Ps1j!rVby:pPk˔:>oeU| {XV(n@ٳDhݺj}Yk _K+qS0uY7V6Z|Ͷ>tC*|;*f_%35 /7|PZc X[!0Z"L}R`+`Ђmu Lv9؏WsZѝ|^ J\ tAG&mX#r^/y tlP PVX٭jh/[K<ϯ-©n|[r \>/Kݠ4 k^b$#ra=3k\>TF|~Dm@:fRm>/LAj}i^L`"5K=⛬+`گCtfe+tI]ccve}Y-+<̔{ U,Ϟ >i<';NG⑗ U@g FÎPh66Yٸ:tOYtJ tkƥc޻3Es}!O$ /:wU3Clv@r-pg~zgBEtMp0qBX {j2X+YTjkwP̀?ѻDZO !В"_ Nf<tw 6ഝgౕv>o=Wa=M顽^etX6hoϲ|,::q !4 (X "$mjthp詝h [~7_ͯZYkGĄ+icAl}+ AS`WeYi7, kܰ&5@'G%H:BZ7nh}[Խf&9"2Ksm6NlIOpA9v©zU{P;1؛2rtgR&ӃL5*Q0P7Dw>iXluC40P2?pu-l$iKevhggغ ֯>֭ ++FcD|mP7̗ҕ#NկVVt&P0x=x`d~Ci@<h7C"ۥh8n$<ZlUgw`tti\^m4.Fnj)G}Bp3I;ƳA)`n?{l$ Tƛ>LGlAXZ {el Lje# V`hۭ%SO ?q3@NJ^IwtZ^I'YT(:  \* !H!IMI~v$ (c#ɴ4oartAi=eW6ZX.J]3D+VA0#­#r^)6XZ'"_F9 4S'"qFջw 쓙 ĿTXPn8D+ԤCJ".SE7XWEvJbt{#13Q1E"QB14rfUtIhkZ }G,TlOPi@V y&U,ST]1n3=%"ƃ9[Q +JI-SCh)01'4XLZ3{ekxEYV<&:61fAN=_F5_Z`I8 ̪ P,Le*Ukim%',Xis[Bn%-%܆yPwJDp;/69:hЋν]u-`~ON05 *{n!TokGŇΟ;"'O&k"7z"LF=kcnm0/7+a?N/&t9Xلkco-{^-f frueVia,E[8gY &VLI]3ci%-ƢEG\L^ C}0Т RAѓV0 ,;F"Ce_K2,JSa(*Z',V`K`61;]<3xR@6Ģ‚Α6n*l V=#eC,GB&&(V<6YP[lreh(^ob/+#͇͜r-\3b SQKZ#5L3O`'k)W@ *)FYΓcy2zQ# fCŹnvtN#QXEw.ik)hWj$ZGAk ~*;tamtu+pdcc%M=2$ DHn'?WC!|U'ԵL^K"AN|֤ ]vݽўobW/(\5 p(K-YF=x@GtH#lR}'*7M3T;yLf ܘD@ \+o߿` D|B)%|+ysO|ZBN5+ׯvڽO돦{ $f20΃+B&q(RB7 p}ƃ%9<8xxphe#*tÍ厡;MXhB }!>_: !#>"G0!ؐyǶ}~eM@g+FEt#6KU ]|i~S?<<"q|0BQt-mNLt?<<{sFvyc育_v=;y^b%7 OM ܿ{uXɃKdoR`m_/* L@ H#؍g>6 ~||1_ݼOQ`TDelӚ;\-~<||k=8xt= h3P#<@S >Dcոg^-LOXV 3޲ڶg?yǀķ>zO}k@H#Lt/$ =?}}'bpx?|z 0K-Gh#a6I]\2(% ỨŅq U2ALawتoF<h敧td7"M3.iOkfMR$8wxǮfçO'OE_?_]N!Oeϧ3dq)[g@'>yۿgԄ??5J@`aߘWYZ^" W*,/9GA_mPq('>Ug13poaO÷ _ݺy"hIm~,~<]&(IoOA|2y{4v;n}mAC:ݼa 11 w'/Nđl?o{foA|q}؂(X@ߚ@P+>O_GG@79 ޔ. Du0 "<ͻ>O<yԑS2LTH)_<}/}5s:>:O!zBZ 7Kzø H)l'SA;|` ތ.'gEnM)-v փgÚCx ɗh89[]]5KT/gG_b?ۓϴώ)=ݰ,l)Rh.yPL'&"g):db6k-,'w[hDbWBV%uhIO!olH D7 (]rSǫ \{!5?!tjrE)L6SS. j6l*>2r4tmBey8`CYc%DJ@46x |;Ozow73g(!ˇ8`siDom1k+q JTa-wbOJ燘f:D3+NS\UrK.^L6JM n|#H mԀVQŷ6yG{yX*LTɆ% JouvRuǭ=7؍5jY^ЭJh&LЪɐf]798Xf.d~o/=T(^YZ!~xdBXTA{@]zE"?>}ǕcJ646u|^=gXyë<I2C8CfVY{Tf?/j/݁8nNe֛n+!e$r Y4r@P#XhǕl*Z, hZ.l;\6l@ 駹$0x5r^pUN$7O e"J83ᕮ'|p-Tf~&g74 3wVzwE q.ϊM%clVx%ӵQ#J@Bhڣɡ[jf77a( cqלpԗ1cJ=x^/! UeR eB n3Y uPR^*ClZD %WR|` 05[ *=.#j{ 'SLj`gԵ*ahWdWqK'hZc* -ncsŒ&Fp[1* ˀts%*4sM1yE_#0O[Ҳڲx-q K|E0x64x ]˜8/#5аNFB'M6XŒV*(^iz*C֤~vH*Z8`+k ж6"`OUZqOalŋ1Fs]ֶgMcO @XexJQ/©`!*mR 9wa Y\2سE  &ęT޵:Ut;W@ XGF\>`q -8,pTTNM]1;Yr]gRhGR/m ErΗCBr=qbË:kh7d.L/+XO9!q{aZgnXD  4<ؤX \@~bmET!` E#Bj2}}lHc RyZ@`5^skH :M0ӅE^Yʛ=&tH}!ؽsoz3衕`wosO^":Qxa/2͛\+#e:k֙ ɹ,!![8ߴQ7X B yI̺ qeQ+Fˇ\ c\&`J9H0Q w[Öm s`=۞m4f@eWhp\O-B,cbb!_TU.QJ3Ta!6W$2>1K`Ynju 7.@ tU*K^*pm9jI!!GC`gWр wOjbSlֶg|vϐ $O(:q@|w9 r xOeɛdA7C8~Rrq<5 M~/1f !*ZXimsh|8E>;<Et`RR/fn=G-h"+_épg >T>W6#F;Jj7zxV]`vД>0nC<`DtfS 6gc$:G gfͶ&E7sR.l}DE sUE֠6T[6L+.8V8w @tG .:g-Ľ80]%aq>6~͂chx =x02Y4l?߹qpG}IdƎMe˛Ha:.YQl@o4턎'jQ|  a m/ F٪kx  Z!)$1Y I~m SvXp}F;; F+ˣn4592Si wN^}hZeh"/4I b"*z8UAr@K2=MM8P+30'M^bU@@^'ZUUܾ;`sxoxΝ~kptrxxpGL lsum*hDvK?`7H.T& hU wvwYk′EƇxIv4!*z0$NΊ.B`=/wv. G VTtLx hS$"GWe)Ksȼ1k16UDe^wgEZ;`J?N)iVPȪU=iЭ 9ӄ!b^`H5G#5J_FZcL)GG*9hS۔e3lwC&-IĉA؈+2<;! %w063h9G-$ܥeICJ~:QE aڌ+Dw= C$NF45}Et=8_hFWuzؖ& a)IF}NjT%}eqҰAgo @Ʈ`TE\1},ݾE?=;q ߪM?C#>X/ (b;?<<}s8G'fYĕ;1 ҴT OYpS;"b9exOK{x{ϮVѮ{wÇVL8&5*+=ҭL>Kr0PžԒ˳ *6gr3|ѽAmQ֏.ѣ*,}towr}HMq Td̎7Qfj b>ǝDCxIa9_y}ޗws>"xO~. ~{n҉!R0}ZX0$3Ik㭃}0OqtXdxЁGÓ$aRRGWN@-Ufc(0f.T-2uw~7CE|*v%*)Urx.6|4hM)|)b8$SEȑ"]H|@'` 1IԣNRx,GA6`"Sf)g5[[e冃~{imްnB*>",tpj]q$A Cb  88:=>H`? ߿}4h F'G'GݓMu.C Ĕ, 7%?W@*x `LFTǔ@P#h:(s||pjwp˕ (y =wnj?=8{u.X)Wx eYW!npYI 'ʣw}Cz 8}4:~a(cdqD:>"Jl4`D; &[P-ӧGG];w૯a`wLn`չڴpu:G'\S( !5"쳤J~)?%2>89b`]?8O*kЃv~w$Xc"e4[ L4``<==pB_ioRWӋ3VG|_\^q ijc4ywl&vĦQ[+&S{ՖA ~ӧ_բ)>7dGtﭷނL Bz=T.gi)H ("X?F_}5"y x!YBWL]R(~d& C|C.QqHu+6豸<=l2<8B@}|xMXv{ +*8` f-F2ڟ1NMQq, oc8vYC~<6\^v%.['G:0^5PD&+oOQ$r~τ x+˴1%SLQ&֢$NҰ,x&~̯+>"71>6IENDB`gambas-3.16.3/app/examples/OpenGL/Md2Model/bauul.jpg000066400000000000000000000623111411575327000220050ustar00rootroot00000000000000JFIFddDucky<Adobed       !1AQ"aq2B#Rbr3$CcSs46!1AQa"q2bBR#3rC$4 ?w_OY"\?mB ZҬnI? 3Pd6WIc`#'-p ər\8GSgqe@ٗ\EK-bȗR$9 +#ZgFn6uQMRīF'uO< 7OCdqS*xTaE~Kg?!a!|z_V(#I/],yB=7b?(G̢GXM#M9`RwPEggj/e{2d,%= A{1r>/K$܁&Aӥ[a-4?EUӓ ֵ?y_-fYˑ@>C5 oQDE8BEјzzDZ뉌O{ACUbNt昁gbtS9X;V@t0m}ozl4K+Q"r2#:[If]\, l "Y9Q;6A!$Veua=oT[i!:I6@Gi"EȎ˿}7P2D`u0cGsigF'3$ܥ?FN q &X1 ͏]R鈳MbSɺExSLdL*.RHEEU1ݚV,4|*Uz.MV/A$"ǥf.Sa)}r&bLFF ݯQ\ĉ_"F)wD! }PC,LeM"/1͝g޻C^N~2vi,xr}CcB`#*.QK2m:Y]HP3(3=vz˔I=rH$^:V^inQɑ Ku;F\#1OC-آcJ1ߊrNY>t=41D ƾD\:mP+L[s"gATԊ%ssqh66\ۻx[XHWPs*qb`xPÎiт7qFl{Dsr193"D(ʟhVVNya`Aߵ z[Q7TS^V7zc@OOZÌ;xџ%xq%>ٷZw,UjF2 -xPn7X|&B6n<KԺx@I<&Oczܟ%5tźRlOrw2O>?YᯐDd z>.4}9N_Nq1Ƞ2 [ITِnGwҬ#il~?L{(-'P쿝ڃaƉ$=1ݏl<J1+;S`@R-5Vt8QFr(ǛVGE7Hȁ hqJ_Hs8rm$_VnER[º/)Gl#3M`h=7+B`2ܧp飏 "؏m kVV]^Uw*tqpe{긜ߓ]λV:H Lf@=2:qfe x \ MS+'c2UO0%_[e2nH$dPmT=܃,\~RD 򪎫nc8 &'yt Ñɤ" Qs64\ןOm+("[]f^_3 :l"IaFjMvAh"WDǿ/3ĦI)fKYg ǢԢvV  1p:kCŜr\Af,l )02/sBR B,,3vL@^+[cH@ZEٱ*.ċ7J+=r%pWKA&գϕn(F'PUg`.@UI=>7+rR@Z*NΑڦ~YϢoc736y}|vQ!+-HCh9h7c} 蔒~R R~On%!o% &^[d`A ;/?C*j7%3wЏi2H;݈тoG>ş@]7>[4X桵FL\/H"}&D\}hq929i'{zcR.zxmXAnr{JB1p=(9u7@/-& do̎.mmaJԦ*2S({-НΛ,OEG~,aFSD)k@Ǐ$ؐsaJJI[ bw՘ZcsҏeoIWp}vG}=^oiI[\J26)$L#klot%8jz|9|ga8ܬ|$=^"@6`ixH)q#cKs"V ɭ®԰]~W%qmc8q,Gfm^$M/Ft8#׺woxG?媀f6;>6Ry򞈗:|Vo#bcJoѺ|먈>`,|m# k OY^b-8(wls:'CFJxxl\̬!)3S*<[r+BgsI%(ʧ/;A]N M"pM$^Xu*g:*yf 2+ZE '3G,vUCNʑ'd/Y96_r}O[!HJ|ey>92V(5/*Z.±U.Z{eyK"V5 =$dj復DC*rxp?dɟ0$_m#?yf-DeA7J~d\{*xV-~تbS~~Ț,E/"Źu*^# dGml/RNWi*e rbLKp[jz &$Dl3,yА} ~DF=2DU[ ed$2ё| _Î xӟFH2C*?7ڊnr.[pG Me>-0m"[; 3&yE}c66D*?3{yD+nU5#Ey4D JknNm#/E\J9>>^N\LSI[Bפc($)HTUK1e\*2O ;G)s@<(&̏핝_A!緈\Bǁ!Dy)FQqAq9M9cbdB؅"C FI!hRd&>匔Z OL7A/b6Yּ:taoe)-*moTSgEx1R|}IMWuCω1qy }xdkZVx麲y}raR],-{YZߔO VX@8bs$XHߣ6O֍1 rz-{Z)X3 ֣ _ ۾qㇻ_5B"uFޠT(ðC/o1O|oҩ>w"V:GN?&ְ=S? :qf~;/Omn>H.$G"_q'G}H5E;i,1PMQoЩYYzȞ` P`e ə,!*OG'+Bn:_H\lV ŏ2,I% ^cay*:]'( ٺn,H7Hbd&#c9 TIĸnR=ĝj48=D1*: uEZO&4ŜswEr/OdD+fD20=5uT7vǡ|}}_ Ȅ H|$Ҁ\Ìp9سLLG.,9e#];eB 1/gCZ!"GvV7mdh⍌#dV[zUtEC"\v>-v'ޙQ`vΓɺ2DuLeLx<~:lU J_HN!z@jJXŸ V,1a,q 7םMnSrvTcq#օx1ldd>]F%AMgYcW8G";0 OJfQ8#|pEGQkJ z98qeΙq=ɾq e2u11 3y %.j řC2LGݻ# ŤJ\#'#O(Ys^C@^vyəʦMUd$9>U92c R.*@'1bm0'tg8f1<N%Ȁc8.+ >?߅Z@C n-gH$ ~ڽP-uܗ+qG/ǔPԹRD('U 5TFAl.osT%gQ HVO.L/_*~fU)nQ1">eK4QRw`|tEN;$j \v":p<9,dƁ:=>Ǣ Έ1A"j}zU\H5uӢ&|xEI:u?WF L$A|LSPٖ5>rj˪k7;%Kvw("V.#->*"7O}ZQʀ;<|N^$VD>kB2BLwF;"BXfs heoWh"#]]7F%+L=ЮMܼ0*X#P{nl{ S?S$8`ۧ!x?T>eZ,X +.VR,?L+;fr_Px~F2pO$ (4>QkdDmJ܂-o?яFB2_I RHPoq' 8i?y LIA0S4y,̓2dZWh%µG+T8~Cn8]1M`D=R^-o%r`]1:YgL} گ: 65)KNƳɽ<ٹYL"SH"TNv̋ad@{gLRcA?d7\ǑJYNcw = Vd팘E8V (?Kd/Y*DEREKű:%( cY<ωZxr3s<`2vǥ0ZRHЭ^.Y:2UB[cwǡQgd&4UNg#ڕ=r[롡Y\HLBDz2s8c) /ZXRA0m |%KCV\-oOP`ǘL2g 6T0 UNT2eD}[I}S&=f~3D&ow"5S_ON~6dVXGmP'Q){tuK粊Av'V^Yrɟ#ylGTVV~&NK xUy)Nq\xRSZ #]yJ^,G*ͰT?j̞Uڒ҈q:&")CABUK&iwHBטL݉6>fssIkXu)<_+ˁ BY @-_й sA")<\^A^A`N_Ā=ԜBD&N:,\r]C >ILJըFq3J$usvM#@%'m"=?yf:IR2rLLa Ya{WBlDxN:X9f]U./+͑$,1c2o^ dI(kg&&k;w,:L9E6toUcq&CHo Z[% UA+%n2K<08.H4Ky"4+˓'$_ʏTDC]rr\K7=$6S:*dN;ƾ4rsϦ#lI٩9 (Nj3ʖ!Y@pM2j ~ޤ椃afF2d1 ȃx޺d|F3.u֪h N +D%  Ɵ'J,Y&*C~oi7ݴ^\IWqbI ?GvP"Xx2ɆL'2&C!rqkSQB̺0!Z lRj͛4,ي?̣tg Ht5D]m)W4[{I&Ŕ+l{II^νAjř"6Fb=)#nW2xb(vʖJzT¸U(d`=(H;t$\>1XПk ԫXtµp,4_i=Ȏ?\k.Vu2QdW7=WIpeƘn jmEm L}0ҊH*Ve:~0bm@ljIpoNe*$P1b ܭH 4om`A"+2tV4YAYT 7D:2}ў9r<; ZY y>[AP 7P\ sYVM+SYʧ+\NDm<<Lj3;< 6[uglK:\27#"Iﯩ)9؋,*W,Hk"z8<)[bqA0s<~>^4Hp0;옘۪#1|;K6G€4,wLW&åB/Kflm:Ƹad-{!M[ V! n 3_!:TB1`"l/b*]%j@wZvܖMj[cyqI+7 KÐ lbt.7#f#P 'BdKM\C'niǔzkTȈ1uZ$y7f?+Œdg70J"G@ĝM#㴆&3Zhl螠yloo/w$/_ƳgXp QNy1f͒ ,m VMʆ<ijz$~ST}үrgE *r5&@!`1Oc,/Eb-аhاNC%KV}oa 1ܾ5yYc: RƐOK6'RPLU1C $nYu)+v,}~@L,Ox8hd OXv:4@|M#f!lS䡱c/ӧřZ:Kx94d&yӔ+3+>s 4nr?ʫսBB& Y^C0fMAk?*kԭQuh:Ń?g6 W`>3MPeI "SyU>-XPo `i¦It@[ΊIHmƾ5IŃJQfq܂8Na 񵊚B_P1rXJ3+ˍ,:L|i2$ iC BܙHXr~WT[auQ V.MW5LqOưGې iI&2r4[,P>D8p= C51$uE܄ATye n *DNB1K;:fI h쿁4љfMȗ-T=>`*h%0_tpϗ0MYZbCjo`eG 쁍U!`:ʭE2Ɓ PCd끋|vQszb3ӑ:$/"=ʲ0s_Q[}\wKa,72b<#Sn;&@w5EB^Ax {:RtOj>,[dbV_Q^:!eekۺMȽ 7aZ?)R˗'-}G-=!>4m։y!ɛ@n=,' vLB,B̑AWjhiI09UBu#ZF,d'p`6,ntzZPdI0Q'ILC LK81ߢ O&sVҘ ܋YpKSe$ǩN ,iRu;mʨ~ڒ4V0v#ƫ)2=5"mƼ8ڋP~G)vBB}R5Y[K0;& ؜vkh9s}S>.S?斞t!1ƻ@vzX:b2bU #(S蚪mU.,qHC$:EC2V[8\n?qB-J*fze6SV?OVl8I$&ƿ[v7E>X Rֈ$.A$i@d>Cua9{\ NW$$hD_ڪ {S0zas'ptP3ymznFS6^tY8U 5 Z[G`aq͒ N`QwW?e*X?P>#ʗ;1}\Z2N\q$Y2s6w'yB?ї O_Ro>>t &$ JSQ?a%7y쫍w(Wg]KZM1jwRG}(\tD|s'*Xb;d=`CoyYMkm-+6u1;^_'Ċl9#S2:|WDy*< O&((ǃu4L雳q0g eFmt̔-?= jd6SaҺ\"@@Pƒxa}h2tМVn Òțe7LοJu[Y<$9"24Pw>2ZJJTc1q@k>аXB.b )Kbw*թK.zJSUDycR1$Բ-<ĎrI |_&q,Ii,-UA̩I mZI2OԭU(G1uhk? G0d[n=FZ,pUL!|h-GҡW6hBTW"GcTuHaO!n& `XK(Zpr(+-=Y ,n*ODOG_+, I~\Du)?#G: gG)i$'QD&gs@ax[F=)A:lt3t8U86!RxRmcrOƛZ8A#8뇄 ǧRuf4$3ȏ^׏m/CATlYaXF5DhB^d6kNq4y`zjqIg9ehr#3gSpi (7-&:xuZEFVAbeOSYa-XtYRTJ = d~uO.r\,mhZƫ (FcGu]3fAV0Ajz~U[-\+ZY$34ӼnnO!$nVT{&‡9=JaNϲP:7|k0vS:L *+QuU%4Xb,~v(^@|̃)8ZfFoJȧuopBE%S-TZN4Ƀ J<*U BL, 1|K v[OZ&r{ k|rdkxgyFzOn9.clwEr.B/){B$q nāTFDT,ukaD|4 Ӹx&Q)] jc*FY5obbv'&>#mlfjoJJR:ZuT(4>Dblw[i-cL0,mE^/Nwcۑe/+& ~sq @~w6$X/5\9HxE?jQ H@Ѝ:޸_će\wܑ-:|!K}W ݼG#h`F˖Aa8 jNt_)w;9B+hjfWb I'TFU(ǘd>7. j3'.RP*%`r]gN!Z~EU<)V>?hW#y¬ƚ;U32q+R& _J++1x`'):::V]bpBYbieְB%‹-٣eo ~ڴUm1.J9py| t!ha(R^Np›<,6I/!6?mY1  Hŋ(Y%P6&'p A,fB)K,):Rxk;,|`Q|~{F;lms($PxutΒd@nIt'i Q&,b? bJK|\gd$ gʨ,m`o;t-e̻i5}T|lZyS_A>)y^DWf27~T+Wk.>@#AfE%XPcy<?팂dpR2yWPUn5rLӮéR3h贼~?98ۜy\giYoKvp'56e_ J 3@Ho7`ci\Z~8HS,L!DkRZm6^I1fW's$2l|vV$מQ% WA=L<œЛ[u5`$Ez/Q2#u{2mS1NdF,t5XSYY2? ߸^W plG_D!|o~ mh&8 vK>ˀokԮ)ɒP}-a5˙Ή˵a>-8ågd+x4O!9 {V>6ZsHnAvG޴e?ִ+>2C/SSz\>@/Y~%@8ͻ(G-rƪ<i˝mO:>҇TTʘ-JiW.Ex.-%2В@KcZ8Xܣ+]WqFN kdVBCwUaD?qd}~?UqHϢ ƒ,JVZhrCnS}$j*w6ϗDK+8{aNzzttXN-9&9@l\DtE7c yIo2<hz_9'6 uVad7 .Ѹ܍5:ZZL~I3(,~UtY% Oe;XgZbhk&@xWU,ڂkê4C-G 4 tRyX\I-pbqS0Fퟢ7c>7Dd1ζ´@OsdmEBXX_tJW(Q#6rrGMۙ8qy_)ԭ"ejbPc-WY}HUXϑ Ԁv#"] `4qbrrSm(/qq9ڌ2d8ܤ,><(Lw艘^n|t=c8mb Geuq˳TKbL,"hho"ZN|hU233KGU􊉝#cGԖg 4LJ4\^>L%LH.llm5Ax[ buSpoo'K\9q't̽$!UmmX^{)f%ȰՆӭhWXE|IGF4zؑ!/{S#!JKfK9 XQŜ&tFgf6jUۑ1 {!㖗 Ff,:kHH_ʳrR) +nxܩrG5+'ԉ[pu[2/QL`FG`/>dfe 6=iPZJr t'Q:%BPdGGB@#D݂OY-z|*~{1xĬHl Y1Q*A5 Aۓ Dd|X۶ĠcmkX }JD/2AqM ~}:Ve z,p3*ً` |t\q]Ft\S?urW.Lsp4ILo/ [J H$<&qj~.G!Sb1eK܃k}+"tᔟU{5H)Xp.G-7Qr]6_ x*I?&TEʺ!uiNXܕ{rk797q<7iX\4BSf/8S4F@-Dpr,qd63!{[Cx+4D曝 LEIգVwyϩ_?;47E 1ș唯Ă''x bbt\NM>Djϕ!,6/G6hF3{6k>4hE pr*9gb6ى"[ίE!3rͅڛ?N/7|uuijcRw mҐ³ixG)u3~͑A>'#27϶q{߲5 }hvv|3x$@>5ybzK%>_h \/_:~fdsa${7$ A:Qawx\r6?:ieM8CI*{HegF=C,ClI-'9Ë+PE<,ŀ QJh:\ yLşÏw:Ljq{T$~26H;NJ)F )2Gt% ӌY<Гr RoZчh %f_yccފLy%w mԤMШE϶:)?JD2sL%  z']@kՏ~%m2Zi 8CДΩGs#-aAم=̄Pr}Z~?9NIp*J\3,1=Kx>⾘w,EXm@+$} h~i[ ȒqsLƅKb~O~?Tr,/`21#;Z, 1 PN09%Hǻek4`M1iSq'щ1fry qr,46G̲9n0'OI')0 k|O쥭2}?)&G3%~;eǺJ$b5Pน81FԂ*FLN7y f{mh˗)z)7U_K8oJO׬ ^8' 2ħ(̥n<S$F: pwec갢6&wƻ^rQ6N6g(|DFii\bn!ȝ ǜ)Xg'h$$chv0we܏ sydɖDkJ tfUX,d!?C߭RI}⋊6+51^S?ZXʌI'砎.CA.A=>յb|2"%mG1} :r$7I^.VqH؜Q4suoJ-rx=V`'p]݇kljJTmۡWcWmD'i?ͿຳWu䄔3KQ{W4XfU^aGɶc~{~ʙ{D]Vw49R} Z,PkuYxT>fMH͠ &:_A&) 7OW{&IQfInҌP|Ȗ~||@DZaX?^.Xiz`+.6;Uʼn>w"KHf)F9UP&djzw aR܌eV>\!Su!}7+@Nr7TQ1}O4wxfBC .nZtA'ǰȅ}e2$!(J'P U_ƹK,m5 x!d ¡K:)L.AF>5!RAC _r4 D-=X/EO͎Bp8Dc p~Y^ W?(D@-|ƉLHlƠt V(h̯6Ŏ$L !3fd-wUҶeWjZ^bX8N \W: ښqO*0CrgAYͽ[!aEǁ[R9q, Cn&tU~guiײ^,繮3"I^Ifdz@Ol C./xrcƛca&}w0䓇=`cI*#lx^2 R07\RO߾0#9r.ܼgË줂V k@4)dƿn2 LbMf/FQSd2#8Xn>7 q9$%oSL2prX^8xb+竩[kf9k5ӯbU,~Ӊ3, XoQT -RGKXWiI )=ZF!$s3g卉SpH>~tbJY' O.||sYwAʮ"x֛7n1ҹ2k&?Q,P< A*dEn|*_jn#MOZPUk\ڬX5˗LHa_[V=y^ZGdSr<Ȱ2{6 7—&Eb/懎[ }\ g@GIF&{"9 Sr;LuݍS;"Y<%x}j2u"Zi9FU$6lq;Ű$$[l^׭/DɷdG{7́{+Ġ} WЮɏC.j؆> JfVVm۳i"J[8׺.oMs=:QKdŠCWr,XY^6{hbD] Xq]/yNHѴN+#9,og`mf./nH@Q"gQT\uSdqz;``O>3..&=$2Lviˈ$KȈ' <3HsmoYO=gz\@WOͶ)Oib>fkBC .+6q"i2a"z?b-dq~܋e=[ֵv q\p2!T)2b({" XfBљyY}s.%fIMHTU]Emk. c_|<^Θp@{K'ʋC5=Sʓ&f/BS2"XC6\ ?j c#ˎDMrE3\86o9.0>7+[8/9D'_.?ر:vK粳|L01,dD?Ur;+? I# đmqDZt]¼u$ DDʞ7vH$oUNkjCCnϋ8hFѐF^Uf$C6&_eC+xC#2 s/$QȄ3EA&GEIEsxX~tN4)Yֺ+'>g 5]>LܬiRD@*CԵGEm8|S5\^~Cƺfd#8_8LUaI)mJP, W8h 9LjAɐQaa$Wku`2~Wyf|*Ddlt2PٿVldj{E6|ehca3xFD>ceHFDrGkѣdDɑVf9TnoT2-01&jX:1E$T81:X[|}v+{š!gq x+.*IrXWtgm>+1Lo%qR՞2/s:@ʺ˗k>ޟ\ybb9'AX'7*q] J5|6?O\O +LS)N4yR5摂K1ҴIT1Ӫu{I>>~SeɄyb6~i2̒4IV:Iؘ9yqaFeb|n:ҔAT2mtfcqpd1G5)QD9K8+3F}y%4CMphGevbd  ?y ui}.*ddZXȹh m^FPka&m?z*bƒiX>6?}*AbP Did'ȋ9:6V=7m}Tҋ1I3h5N3s;dpY~ܦ 3oix0k[Zحt_Xa7c zNe7=1M÷}mk2P9 &+23Scs8sca%YGk1=%IsĐؙ3*],]V *l%9a38!}J v5?EÝ~rSܔtH E*0.u&DSx FY Jkw9aH!ˁ-cb<:}´aXR+O+<rtxR\tkjwd>_ 9ʦ~c b5bNijHep1yBB.;huP1asR$IEa4"VB7j_:YA6r* GXaP,-ˀzMHCIJꍼMYP\wh/,^K6ӶD.򇡹aʼf0|+Yd<1rKn#hkk<07+ AoVsR`ĺ2qx7uxښ# 8Qh˜X95l|[}a!X]%ܹi$ēi"4V w`n5]Bk@Y6yX($&gVbs۔˄>2ni$Jvʭo:"L2꺇#g/6}/2m'B@Wakw>h3*&@څ:,"A-ur?%:1\l(/цH6VcX1xr-9@[^ J~\ƙG]#OHу W.B5 .6fG6G#3X]Q(]PEmyQ/#Li6I TBʾN9r9 ~Lj8I ǥ(=\ 0s~9 iG6+Yby GdHLcKutS0,vF썫soKeJR>s;3 :ks֫^TMm &Q mBgtEw(г42Ȟ`/o ;r)a&?%yhU>}؃QUZI3R%XB¥V%/( }_+Ta̛%7V4*vc*e'/ qx+[zneێbzlXEM 4n4GCӨ֗$uN@Jr+WKT5ڢRT8K&3!YMO8T8dKt.pq|[8Xw4@o$V.6D\_yMf(tu<#Ht $ M82} wWw Ɇlr Uc* Y!؅ hrf/! {i5RY"hЬr2CV \ y~Ӫd_"SC֪ Eo]r _;(.fo͑+|ݏ~Iw+?[C)ȕ =G^"6 :V>/i_~@kH{..`M9UEP2p[hoB=]9{[-|qTY9ٙ }DM ZʤI}ʏܔjH x+?nU Q=FEwGqil~]UNg\P L.пZOԮAx0|ݣy}fa!WjmSV #Ų{Timedmڵ3+d")Tˑ{+F࢒rZx\+,=jP+)adBAR#!´db\&ܞĚc3'$h>T:?)۹9xF6vA#@>uPʷ̌GZ<9Hd eK[_[0j;*v1Ms>V ~ƟQ}(]UR#[tiVUƗ/sѬ$ Mm:.}\̼SMԱԑ,|0Ugambas-3.16.3/app/examples/OpenGL/Md2Model/bauul.md2000066400000000000000000007762741411575327000217330ustar00rootroot00000000000000IDP2@'- DD <((/v' 0#"&"k0b#&"!cl ll6h22))/*))_.d,) zr`K`4ZkoPR\U^XeNHIUHKNDD5=5;,4-! j"u,i*a "Y*QQLGR({(v84&,&4{u!" ;>&;(.!& .i`i.-Ya.X D ?D&?L,G- .e4qiqPe\`RaVXceNHIVdH^NdD]5`=5e;,Q-\3Z!Q!8v?i0iZ0aZ Q9Y0QHIWRWGDSQ4W;9->39;N~Nv6{TyN6H>T.{.F2 9 2VbNiWi2-D[FDb2VYF HDQ@;D4@;I0G2 \233^23^JJ^^]bbm|wxt~rmsvvtzz{mtwls|{miwctls;\*i<k%\r \ hi h9Q!OL!9=6dpc'|||%^ ii i"6&qdn||ct|//N3N3,-2\LL\L\0/00]]]N,,6)2&3# 13 3   v oo9  3 3   993v 3v 2o!5o2"!2 !x2#! 4v3$ vx %xv&#'4v$( 943$9o5)589"*+849,$-./-/0-10/02.-0.1/31131443 3 0120224.242/.w<%567x2#8!x#&8kt$9:;tk<:9=><t>:<u?@Atu:>BAC?D?EDF?:G<Hk:9H<?CE=GI<6FD<wF65=<Gw?F5wu?5@:;GHJ;GJKKIG8LMENDOMKKMIO8M;KJO;2J!O2O!84$N(NP(LL&8&L4N$D4<$6DQRSRTSUVWSTXUWYZX[\Y]^_`^a_VbcQdefRgReghijkiVlVikjiimnopqqgomihblreognlilnrstutsvwxyufsfzskwyTtXRuTtTu{Y\X|[}Y{~|vtv|x{}{xt|XUY}w}xU}wfuRkVUkUw|[a{\[Z\]a`_`   _ _ _a a]^a{a  ~|~Z ] V52"!85V*">k$9;>lk9sml>sl=nss>=msnng_jgnl?:H:klH9mn_?m_j<g6<j%67lm?jn%7%n=7:?;HJ;?@J_@?7VSD_gS]@S@_V]S;@]J2;]!J2]V!D48$,6D8,768*8V7*4Dg$<4g6$dMGdMEG\E\\^i\h^B`DC`BeMdOMedLKedKRKLRNMMORLNRfRPPQfKfQRfKOeQQeKOPRPOQWZFZW[[HZLFZNLZHNZWG\FdGGWF\IhX\i\JIXY[[WX[YIIJ[XW\\EJJH[JEHFLdMNEENH_XiICh_i^^hCBDUD6UU67U7TABTBUTCBA^CAY`CCIYATS_`YYX_^S__D`AS^7ST         w% 57  w5cw 5  c  %7 %caybyazza'$z';z{yw|u5@|}uB~|w5tu}:Btz$:;t{z:}{t:~c~|c~w5cb*'a-%=7+-=-&%7=>+'>$;*>'*+>c&,,&-&c%7c,b                    !""""!!##$%&$&'$'('&(   )(*$+,- ,. ,)*()(,-/-+ .0   (0+1222223 123456789:9;:7<5|=>=6>76=|}?y{@?:@y@:}?@bA7=A7bA=A{}@|=y;:?8:b<7byB;"  C!"  !      #""###" ! "  !DC EDCFECCF""    CC!C! G G  !""""!!##  G %H& &H' 'HI &'I   ) JIH + ,- , K,J)II)  -,/ -+ K0   I 0+L22F2EF DE2 D2M G LM24pq(NOPqp)QRSrq)TQSr(qUPO.-0VWp.0NVWp(.NPV0-+X*a/Y)0/SXY)/aSY/0+YXb1(ZP1.(ZVPb,1Z,.1VZ*/+Y.,-Var)TSp0)RXSrb(UPabrBT[\][^\_`ab`_cdecefg`ahijikjjkl]jlhj]\h]mnoopmpoqqrpstq]l[uovonvsquqouwxyxwyzcf{zfx_ayxa|_xxw|f}~~{f}_|bfe}f#&"$%&!"%&%" B>*>O>ɶlstand001dufu-Wwm^ bdLxM}Z|1f\LM]DWs3SiAnDlfK"pi?eF(ZMLIhl^@}xE_*g&VEEHc}@bzAaiIuoEVqiV}WXURBgRIm]'Fyxvc|DWkRVy9}9inwwix]}rh XgyɄFƒupaU;hwyCBˎlzod`c_f:kE݀?΃gn%uKH:3U6s7ƃh8l)&n/Nw ]|l}\?ZREHTm8N(UGsR\IgN:6`F>cZY{ZKyRi?5q&Szo|7mFAttőBnf_[~puzZMxiWlfcsLkg=$őwē)eA4~"2fp͍օR*:d~YwUM[YbU'NACaB?ZlAvpVqUcmjȰWA^+`$KvNI,Қrלjeԧu ٪m.pss<'_%%nCyeQe@°p(ťq9ma-zww:zwa<ȉ&qqtߎ ϗubqw(ѕȂA)4|E<ށ Z1V[]JS3NnM\PA7/&BD:+,uiCxb5 AG&Q{KKų?³<èF ٴ<%eǫo ϵC^ȺKչ&А!8*sۗ}}HހXE}ZiͧhsǺ|mq~ݽ| 0,Q]@S};AA:wz$uCxwJFJHBBBBBBBBBBBBBBBB >h+>N>0@]stand002dueu-Vwl^ ycdKxL}X|1e\>L]fUs3Rh+>!N>_[յVUstand003cudu-Vwl^ ncdKxK~W|1d\>K]fTt?QFKMk:6^F=cyYYcZKfRRu?u5Y#ScpԒm6hzE@]uđBlf_[ipuxZKxiVlfatLkg=}$e)}bA4l"2P\ŋσRv,;ue~ZwqVN[uZbU&NACaB?lZWBvpVqUcmjïVA]+`$sKvuNI,Кr՜ieҨu תl3psr<'_%%YDddQdBp(q9ma-yuu:xua<&pqrً ȕrbow,ɒA)4zE~< X1SY[JP3KnJ\NA7/&BDޥ+,siCvb5 AG&vQqiKK?<4 ٴ<-eȪo ϴC^ǹKչ({ϐ!8*xswݖrrH|Xdmâ[WѦxsbɹ|^qp޽r| 0,6F@7x$.>"rys? srM IKH~BBBBBBBBBBtBBBtB{BB=+>N> 5\Lstand004cucu-Vwk^ ccdJxJ~V|1c\>J]fSt?Qy sFrP$ L>K}BBBwB{BBBB~BBiByBBiBpBvBc=+>GN>*)jbstand005cucu-Vwk^ `cdJxI~V|1c\>I^fRt?PnqBlhfK"Kj?cF+`ZMvKJhE`@{RD\)hd&SEEwHc}?cz?aiEvn{EVqeiUYXXSRfdRIj](xFRy{7vfUjRSz:p}9kjGzOkxn]{f WqgwPF򐆅rpwaS;g凭syDDcɎ`mzlod]c[cm;k\GS?σegC&CIHg=)2A8}47?%&A,NS /]l^\v?-OdIߋvUj8PM&^SGDR$C2MV:d\7yMP}B~BBsBxBBBB{BBfBvB}BfBmBsB5y=0,>2M>-(kstand006cucu-Vwk^ _ddJyI~V|1c\>I^fRt?PnoAlgfK"Jj?cF+_[MuKJhD`@{QD[)gd&SEEvHc}?cz@biEvnzEWqdiVYXXSSfdRIk](wFQz{6tfVjRTz:o}9ijFzMkxn^zf WphvPF󐄅qptaS;g剪ryDDaȎ_nzjod\c[cj;lYHO@ЃbhA&„?IHc=)1>8ɀ17<$&>+NQ -[l[\s?*OdIߋtVi8LM&ZSG@R!C.LS:d[7u;cdYWLZqKWR@b ?c5B SNqҒT6hcC@IwBj^t_[VruuZJxhUmD`uLqkq{=q$W.pbwAt4`"{2?NRb. OP}B~BBrBvBBBBzBBdBtB|BdBkBrB=-,>[M>El& wstand007dvcu-Wxk^ ^ddKyJ~V}1c]>I^fRt?PnnBlfgK"Ij?"cF+^[MsLJhCa@{OD\)fd&TEEuId}@cz@biEvnxEWqcjVWYXSSfeRIk](vFS{{5sfVkRT{:n}8gkE{Llxl^zg ~XohvPF󐂆qoqbT;g执rxDD`Ȏ]nzipd]c[cg&Ä;IH`=)2;9ʀ.88#:+NM )WWZo?&OdJrWi8IM&WSG>RC+MP:d[7r^?_5>SLrҒQ6h_C@GxBj^q`TruuZKyhUmD`uLolqz=q$T.obvAr4_"z2?M&~R_.%z ={ v4rX \!Y= UR}B~BBpBtBBBBxBBcBsBzBcBjBpB=M .>>L>l)c{stand008dvdv-Xxl_ ]eeLzKW}1d]>J_fSu?QZCZ5:SKsӒP7h]D@FxÏ~Bk^o`SsutqLyhVmDavLmlqy=o$T3mbtAq4^"x2?M&{R\.L>/߸zstand009eveu-Yxm^ ]feMyLX}1e]>K^fTt?Ri@nkDldhK"Il?"eG+]]MqNJhCc@{OF|])df&VFErKd}|BdzBbiHwnuHWqakVV[XUSffRIl](sFS}{6pfXkYV{:k8elE|Knxj`zi {ZmjvP|7qnndV;i熞t}DD^Ȏ\pzgqd^c\cd?lUKLC҃]j9(ń:IH[<35;;̀.:2$&5+ND#LlKZc?QdLoYk:HN&UTO=TE,NM;d]6n>b_[WH\mKUR>VCU57SKtҒO8k]E@Fy}Bk^naSturqMyhWmDbuLlmqw=n$#T3lbsAp4^"w2?MIvRY.0>>#O>6$sstand010fuft-Yvn] ^gdNxM}Y{1e\>L]fUs?S"fF+^^LrOIhEd@{QG}^)eg&WEEsLc}}CbzCaiHunvIVqclUX\XVRfgQIm\(tFU~{8qfYjYWz:l8fmG}Mnxkayi |ZnjuPz7rnoeW;i䆜v|DD_Ǝ]pzhrd_c]cf@lWLNDЃ_k9)Ą<ʀ0;1%&4,N@!FlFZ^ ?RdMދpZl:JNIWUO?U G/OO;6^6p?ba\WJ]nKWR@SCR54SMuВR9k^F@Hz}Bl^obTuurܟNwhXlDctLmnqx=o$#U3mbtAq4_"x2BOIsRX-kj} (aslt=$efe7bo^pet N;Q~UNB?7ca܏n?u)bzbe`g5 AG&gQaYKK?uK1>yP>o>G{xmstand011ftfs-Zvn] `gcNwM|Y{1f[>M\fVr?T"fE+`^LtOIhHd?{SH_)gg&WDEuLb}DbzD`iItnxIUqemTZ\WWRfhQIn[(vFW{;sfYiYWy:n8hmJ}Poxmaxj }[pktPz7rnqeW;j㆜w|DDaŎ_qzjrd`c^ch@lZLQD΃ak8*„?IH\9?:A<Ȁ3<0&&4-N= AlAZZ FSdN݋r[l:MNIYUHBU#H3PQ;6_7r?bc]WM^pKYRCQCO53 SPuϒT:kaF@KzBm^rcWuurۡNwhYkDcsLonqz=q$%V3obvAs4a"y2DQKqRW,:je~YweVM[jY`S&L@}CaAC\ZKC}wpUqTckjTA[+^$gKviNH,śoɝfeȨr ̫i3oqp-<'_%q%MEUbScBn(o9ja-~uyrQd{\rq񋬅n>kߖj{ I`smq?$bca7_o[mcs O;SWOf@6==r>f~n0>ca݋Gk?r=aw_e^s5 AG&iQc[KK?<{4ٲ:/eʧp ҲCı`ǷK׶(o̎閌/ust㕠srHz~Wdeʟ[QأnįsZϵ|[y߿vki| 0,)6@.y>r} w4u]#YLVPBBBpBtBBBBwBBdBrByBdBjBpB>!1>4nP>BċUestand012ftft-Zvn] agcNwM|Y{1f[>M\fVr?T"fF+a^LtOIhId?{TH_)hh&WDEvLb}CbzD`iItnyIUqfmU\\WVRfhQIm[(wFX{=tfYiYWy:o8jmK}Qnxnaxj ~[qkuPz7rnseW;j↝w|DDbŎaqzkrd`c^cj@l[LSD΃ck7*„BIH\7?<C<Ȁ5=/'I4-N9 ;l;qU FSdN݋sZl:PMI\UHEU&J5PS;d_7t?be]WO]qKZRENDK91!SQuϒW:kcG@LzBm^sc[XuurۡNwhXkDcsLpnqz=q$%W3pbwAs4b"z2ERKqRV*:kd~YwfVM[jY`S&L@~CaAC^ZLC}xpUqTckjTA[+^$hKvjNH,śoɝgeȨr ̫i3oqp-<'_%r%NEVbScBn(p9ka-vzrQd{]rr񋭅n>kߖj| I`smq?$bcb7_o[mcs O;SWOf@6==r>fn0>caދGk?r=aw_e^h5 AG&iQd\KK?<{4ٲ:/eʧp ҲCı^ǶK׶(p̎镌*uss┠rqHy~Wdeɟ[QأnïsZϵ|[y߿vki| 0,+8@1y>r~ xFv[$W>UPBBBqBuBBBBxBBeBsBzBeBkBqBm3>u0>WP>GqF]stand013ftet-Yvm] bfcMwL}X{1e[>L\fUs?TfF+b^LuOIhKc?{VH_)ig&WDEvKb}CbzC`iHtnzHUqglU][WVRfgQIm\(wFX{>ufXiYVy:p9kmM|Snxo`yi ZrjuPz7rntdW;j↞w|DDdŎbpzlrd`c^cl?l]KUC̓ek6*DIJ]5?>E;ǀ7</(I4.O5"7j7qQFSdM܋tYl:RMI^UHGU)L9PT:o_7v?bg\WQ]rK[RGLDH91"SStϒY9keF@NyBmftb[ZturۡMwhXkDbsLrnqz=r$%X3qbwAt4b"z2FSKqRU(:kd~YwgVM[kY`S&L@CaBC_ZMCvypUqTckjTA\+_$hKvkNH,ěoȝgeǨr ˫j3oqp-<'_%s%OEWbScBn(p9ka-vzrQd{\rr񋮅n>kߖj| I`smq?$bcb7_o[mcs O;SVNf?6=caތGk?s=aw_e^h5 AG&jQe]KK?<|4ٲ:/eɧp ѱCñ^ǶK׶(p̐蕌*tssᔠqpHx}Wdeȟ[QףnïsZε|Zx߿vqji| 0,.;_1Bv} wFwS, NANBBBrBvBBBByBBfBtB{BfBlBrBW> {.>8P>C Qstand014dtdt-Xvl] aecLwK}W{1d\>K]fTs?SiAnoElhhJ"Ol>eF+a]LtNIhIc?{TG^)hg&VDEuJb}AbzB`iGtnxGUqekU[ZWURffQIl\(vFX{=tfWiYUy:o~9jlK{Qmxn_yh ~YpiuPzFqntcV;i↞v|DDcƎaozkqd_c^ck>k\JTB̃dj3*EIJ[44?E:ŀ7<-)I3/O1$1j2[MFRdK܋tXl:SLL^UHGT*M9PT9o^7v>bg[WQ\qKZREIDE9/#SRsВY8kfF@MxBmfta[YsuqۡLwhVkDasLqmqy=p$%U3obvAr4a"y2DQKqRR'jd~YweUM[iY`T&L@}CaBC^ZLCvxpUqTckjTA\+_$gKviNH,Úoǜgeƨr ʪj3oqp-<'_%q%NDVbScBn(p9ka-}vxrQd{\rr񋮅n>kߖj| I_slq?$bcb7_o[mcs N;RUM_?6<;rcaތGk?r=`w_e]h5 AG&iQc\KK?<{4ٱ:/eɧp| ~ѱCñ^ǶKֶ(n̐蔌*qsomlHu}Wdcǟ[Oգl¯sX͵|Wu޾uqhg| 0,,8U3} > w| w4u S$P> NWBBBqBuBBBBxBBeBsBzBeBkBqB>,>P>}AҎ$Rstand015dtct-Wvl] `dcKwJ}V{1d\>J]fSs?Ri@nnDlggK"Nk>dF+`\LsMIhHb?{SF~^)gg&UDEtIb}~@bzA`iFtnxFUqdjUZYWTRffQIl\(uFW~{jߖi{ I_slq?$afa7_o[mcs M;QUM_>6;:r;fn0>caތGk?r=`w_e]h5 AG&gQbZKK? ys{ w4uP N>KY~BBBpBuBBBBwBBeBsByBdBkBpB>US+>hP>c]CzNstand016ctct-Vvk^ `ddJwI}V{1c\>J\fRs?RdF+`[LsLIhHa@{TF~^)gf&TDEuHb}~?bz@`iEtnxEUqdjU[XWTRfeQIk\(uFX}{<sfViRTy:o}9jjKyQkxm]zg ~WpgvPyFqnuaT;hᆟv|DBbƎanzkpd^c]cl;k]GـV@˃fh4)IIK]24 @G9À9;0+(60O1%1j3[NFQdI܋tUk:VKLaUGIS.Njߖi| I^skq?$afa7_o[mc틻s M;PTL_=6:j:r;fp0>caލGk?r=`w_e]h5 AG&g~Qc[KK? shy w5tqM K=IY~BBBqBuBBBBxBBeBsBzBdBkBpB>"8*>O>C&Kstand017ctct-Uvk^ `cdJwI|V{1c\>J\fSs?RdF+`[LsLIhH`@{TE~^)gf&TDEuGb}?bz?`iEtnxEUqdiU[XWSRfeQIk\(tFX|{<~sfUiRTy9o}9jjKyRjxm]zg ~WogvPzFqnvaT;hᆠv|DBbǎamzkod^c]fm:k^FـW@ʃfg7(KJK`34"?I8ƒ;;4+(91O5 %6k8[SFPEH܋uTk8XLLcUGKS0N>PX8d^Fz=biZYTZpKXRCNDJ97'VTpђ]7mjFANv~Blft_[ZquqۡJwhUkf`sLqkgv=m$%S=mbuAq4^"v2BOIqRV%gd~YwcUM[gYaT&L@{CaBC]ZJBvwpUqTckjTA\+_$eKvgNH,pÛge¦r Ʃj3nqp-<'_~%q%LDUbScBn(p9ka-zvuscz\qro>jߖi| I_skr?$bfb7_o[ic틼s L;P~TL_=7:j9r;fp0>caލGk?s=`w_e]h5 AG&g}QbZKK?bx)>P>C δeOstand018ctct-Uvk^ `cdJwI|V{1d\>J\fSs?RJ8<:8+(<1O:%$<k>[Y FPEG܋uTl8YMLdVGLS2N?PZ8d^F{=bjZYUZoKWRCRFO9;'~VTpђ^7mkFANu}Blfu_[ZpuqۡJwiUkf`sLqkgu=l$$S=mbtAp4]"v2BNIqRY&fd~XwbUM[gYaT'L@zCaBC]ZJBvvpUqTckjTA\+_$dKvgNH,pšges Ũj3nqq-<'_~%p%LDUbRcBn(p9ka-yvtsdz\qs:o>jߖi} I_skr?$bfc7`o\id틽s M;P~TL_=7:j:r;fp0Kcaގl?t=`z`e]h5 AG~&f}QbZKA? !)>P$P>CYstand019ctdt-Uvl^ _cdJwJ|W{1d\>J\fSr?R'OLKf64'=K8>:<+(@1OA*#DkF[` F$QEGۋvSl8ZN(eVGMS3N@P\9d_F|=ckZYUZoKWRBXFU9@(~VUoђ`7mmFANu}Bmfu_[ZpuqۡJwiUkfasLqkgt=l$$R=lbtAo4]"u2AMIrR]'ed~XwaUL[fYaT'L@yBaA?]ZIBvvpUqTckjTA\+_$cKvfMH,pges Ĩj3nqq-<'_}%p%KDUbRcBn(p9ka-ywssd{]qt:p>jߖj} I`sls?$cfd7ao\pd팽t M;P~TM_=7:j:q;fp0Kcaޏm?u=azae^h5 AG}&f|QaYKA?,:)>-^P>{CrZstand020ctdt-Vvl^ _cdJwJ|W{1e\>K\fTr?RckZYVZoKVRB]F[9F'~VUo|a7mnGAOt‘}Bmfv_[ZpurۡKwiUkfasLqkgt=k$$R=lbtAo4\"t2AMIrRb(:ed~XwaUL[eYaT'L@yBaA?]ZIBvvpTqTcjkTA\+_$cJvfMH,oger çj3nqp <'_}%p%KDVbRcBn(o9ka-xwrse{]qu:qKkߖk~ I`slt?$dfe7bo]pe틾u N;Q~UM_>7;j:q)>O>K('pVstand021cudt-Vvl^ bbdJwK|X{1e\>K\fUs3SiAnqDlhfK"Oi?dF(bZMvLIhJ_@}VF_)hg&UEExGb}?bz@`iGto{EUqeiV]WXURBfRIl\'uFZz{?|uDVjRUy9q}9miMwUixo\{g WqgwP|Frpz`T;hᆣw}CBdȎdlznod_c^fs:kdEـ^?ʃkfI&SLHn:3/8P8ƒD9H*&K0MR j8XlZ[r44REH݋ySm8^O(iVGQR8JDOb:6_F>cnZYYZqKYREfFe5N&SXo|d7mqGAQtÑBmfx_[]pusrKwiVkfasLtkgv=m$#T=nbvAq4^"v2COItRh*:fd~XwcUL[gYaT'M@zBaB?_ZKBvxpUqTckkUA]+_$eKvhMH,pges ħk3nrq <'_%r%MDXcRcBn(p9la-ywttf{`qw:tKkkɀ &bhmw= gfhFd6`ph:v N;P~TNB?7<\*>iN>@}I^stand022cueu-Vwl_ bbeKxK}X|1e\>L]fUs3SiAnqDlhfL"Oi?dG(bZMvLIhJ_A}VF_)hg&UEExGc}?bz@aiGuo|EVqeiV]WXURBfRIm]'vFZz{?{uDVjRUy9q|9niMwUixp\|rg WqfxP~Fsp{`U;h䆤w}CBdʎelznod_c^fu:keEۀ_?̃kfN%TKHp<315Q7ăE7M(&O.NZ =blc\z?;REHߋzTm8^N(iUGQQ8GDNc:6_F=coYYYYqKXREl?l5S%SXn|e7hqFAQsđBmfy_[]outrKxiVlfbtLukgv=m$#T)nbvAq4^"v2CNIwRl+;fd~YwbUM[gZbU'MA{CaB?_ZKBvypUqTckkUA]+`$dKvgNI,qhet ħk3orr <'_%s%MDXcRdBo(q9la-yxtuhzcqz:yLlulʂ &dhm{z= lfl4i6dpk:w Nfo0Kfcݗu=|+fziDdg5 AG~&g|QbZKK?th~mzj= rlh7 }5Ku7q~BBBsBxBBBBzBBgBuB|BfBmBrBvB>*>M>q>be`stand023cvdv-Uxl_ `aeJyK~X|1e]LL]fUt3RσifP$QJHp=)01O6ǃC5O&&P,N` @ilj\??REHySm8[M'gTGNP5C@Kb96_F=cmXYWXpKVRBp?q5V#SUn|d5hpEAOsƑ~Bmfx_[[ouuqKyiVmfatLsjgt=j$#Q)lbtAo4["t2?KIzRn,;ce~Yw`VM[dZbU'NAyCaC?]ZGBvwpVqUclkVA^+a$bKveNI,rieu Ŧm3pss <'_%q%JDVdReBp(q9ma-wyqvjy~gq}:~Ilul̃ &ggm{~=!qfq4m6hpo:x Oq@Bo0Ifcܚy=+hhnDhi5 AG}&dzQ_WKK?tzl{i= slh6 }4Kv6q~BBBqBvBBBBxBBeBsBzBdBkBpB\=i+>L>4Rcstand024bvdv-Uxk_ ^`fJyK~X}1d]LK^DUt3Qcz?aiGvozDWqbgWYUYTSBeSIl^'sFUw{9yrDUkRUz9n{9lgGtQgxm[~rf VnezPFsoy_T;g熦uxCB`̎bjzlmE^c]ft8lcC\<уgeR"NGGq=)0,M4ɃB3R#R*Nf Dtrnr\3DQEHySl8YK'eRGLN3?=Ha86^F;clWYUVnKSR?t ?v0Y SSl|c4hoC@LqƑ}Blfx^[YmuuqKyiUmfauLsigr=i$O)kbsAn4X"s2ͨahJƻ|DflqWܿ[|0,!4A*w">tzk |h=tjh5 3Ky4q}BBBpBuBBBBwBBcBrByBbBiBoB=+>SM>d-jgstand025avcu#Swj_ \_eIxJ}W|1c]LJ]DTs3PnnAlccL"Ge@bG(]WMtIJhB[A}QC}\*cd&SEEvEc}=bz>aiFuozBVq`eVXSYSRBdRIk]'sFSuv7wqDTkRTz9my9kfEsPexmY}re TmdyPFrox^S;e熦txCC^̎aizklE]c\ft7lbB[:уfcU!‰LDGq=*1(|L1ʃA0U T'Nl Htzzc=I PEGyRk:WIcOGJK1:;E`76]79ckUYSTmKRR=x ={.]SQk|b1hn@@Kpő}Bjfw\[XluuqJxiTlB`tLrhgr=h$M)jerAm4V"r29F&}Rr-1_d~~Yw\UM[`ZbU'NAxCaC?[ZBAvvpVqUcmkWA^+a$_KvaN}I,rĘjeu Ǧm.pss <'_~%o%DDRdReBp(r9ma-tyovm:wlZۀ<ڄIlrl΅ jilv݃+"~wBw3t7ndt:y Pthj }g=tih4 2K|3[|BBBoBt}BBB~BvBBbBqBxB`BhBnB=*>N>_)ٰestand026`ubu#Rwh^"\]eGxI}V{1b\LI]DSs3N@Jnő}Bifx[[XjrtqHxiSlB_sLrfgq=g$L)ierAl4U"q28E&}Ru-1^d~~Yw[UM[_YbU'NAwCaB?[ZAAvvpVqUclkWA^,a$^Jv`M|I,rŗje¢u ȥm.pss<'_~%o%CCQdReBp(q9ma-synvm:vlZ܀<ۅIkrl΅ jikvރ+"}xBx3t7odt:y PO>4&ustand027^u`t#Pvg^"[[dFwG|U{1a\LG\DRs3LGq<,5{M,̃B*\Y"Qy S uc=VuM6E{Ph:UDbIOIF219>a2EZ75ckQYSPm}KPP<=/eSPgՒc,in;@Ilő~BgfxY[WhrsZGwiRkB]sLsegq=g$K)ierAl4T"q27D&|Rw-1]d~~YwZTM[^YbU'NAwCaB?[Z@@vwpVqUclkWA^,a!]Jv_M|I,rƗje¡u ȥm.oss<'_~%o%BCQdReBp(q9ma-rymvl:tlZ݀<܅Ijrkτ jijv߃+"|xBx3u7odt:x OchqSW| 0,1A&ry~=rhh }e)ufh3 2K2[yB|BBo}BtzBB|B{BvB}Ba}BqBwB_BgBmB=yG)>:P>v$ :vstand028]t_t#Ove^"[YdEwF|S{1_\LF\DQr3JAP>D#zstand029\t_t#Nve]"ZYdDwF|Tz1_[LF\DQr=J P>x\#ⲩstand030]t_s#Nve]"ZXcEwG|Tz1_[LF\DQr=I?vxpVgVcmjXA^,a!\Jv]LzH$tǘke£w Ȧn.pss<'_%o%?APeReAp(r9nb-pzlwn:smZ<߇&jrk҅ kiiv+{zB{3w4rdw6P>$Q|stand031]t`s#Ove]"[XcEwG|Uz1_[LG\DRr=I\F(\OLuCIh@R@}Q;~U*c]&MDFx?b}7az9`iDto|}R(σH%eaQ _wc+duK6C;Nf:V?eEOMA6*<8e/dX72coNWVLm{KOP= L/nSSd|h(ir7@KiőBef|W[ZersZFviQkB]rIvbgq=g$K)ierAl4R"o26B}R~-2[c~YwYSM\[XbUNAxCaB?]Z??vyoVgVcnjXA_,a!]Iv]LzH$tƙldw Ǩo.pst<'_%o%?AQfRfAq(r9nb-p{kxo:tnZ<&jrlӆ lbjv({{B|=x4sExw`ļKtѽ(aҐ}q8*XsXۜOPG]YEP[6˫\gCý|<bhqQV| 0,3}A%py ~=rsh f3wgs4 3K3[wBzBBq{BvxB~B{ByBx}B{Bc{Bs~BzBaBiBoByn=U)>EP>`(L=~stand032]t`s#Ove]"\XcEwH|Uz1`[LG\DSr=I\F(^OLwCIhAR@}R:U*d]&MDFy?b}8az:`iDto~=Uq_^UXLWtNQB_QIg\'uFTmv7pr{DPjWQw9ot4n`ElR^xnT~ra1Pm^z~F}ooYO;`臯qy~C}C`̎dbhofEXcWc2lm<e2Ճl]hljO:Mw;,@}U(σJ%fbQ `wc+duK6C;Ng:Y@hEMPB8+>8g/dY72cqNWYLm{KPP> L/oSUd|k(it7@NiƑBff}W[\ertZFwiQkB]rIwbgr=g$L)jerAm4S"p27C~R-2[c~YwZSN\[XbUOAyCaC?^Z@?vzoWgWcnjYA_,a!]Iw^LzH$uƛlEx ǩp.pst<'_%p%@ARfRfAq(s9nb-p{lxp:to\<&kqmՇ mbkw(Î||A~=z4tEyx`ĽKtѽ(bӐ~r8*XsYڜOPG\߅YEP[7˫]gD½|=biqRX| 0,4}A&py!~>ssi g3whs5 3K4[wBzBBr{BxxB~B{BzBz}B{Be{Bt~B{BbBkBpB{=/)>>P>e2Oxstand033^tas#Ove]"_XcFwI|Vz1`[LH\DTr=I]F(aOLyCIhER@}V:V*g]NDF|?bx8az:`iEto=Uqb_U[LWtOQB_Q&g\'wFWmv;p{u{DQjWRx9qt4raHlU^xqT~ra1Pp^zF}ooYOz`ĽKwѽ&eӐu8*Zs[ڜQRG^߅YET[:ʬ`gH¾|@߸elqU[| 0,"8}A*py$~>ssk h3xis6 5K5[xB{BBv{B{xB~B{BzB}}B|Bh{BxBBfBnBtB=*>,9P>@~stand034_tct#Qvg]"cYdHwK|X{1b[LJ\DVr=K~`ŽKzҾ&jԐx8*^ߕs^ڜTVGa߅YEX\?ʬdgM¾|D߹ipqY`| 0,)=~A0ry(>tsmj? yks8 6K7yB|BBz|BzBB}B{BB}Bm|B|BBkBsBxBw>!+>!O>hRhxstand035auet#Svi^"i[dJwM}Z{1d\LL\DXs=LaiJtoAVglbVfOXtRRBcQ&k\'FbpvGr{}~DUkWVx9zw4zdTn`axzWre Tyb{Fso\Sw3E]F7cRWjPy~K^PM=.uSfg|z-i=@^lȑBjfZ[khrxZKwiVkBbsIfg|Ls$[)ve}Aw4_"z2GRċ΃R,1gc~[wgTO\gXcVPADaC?kZO?voXgXcpjZA`,b!jJwjMI$ĞwʡnEīzʯq.ruv<'_%{#OA_hRhAs'u9pb-z};wyv9xu\<&oqrی Ǖsbow(ʓA=4{E< Y0TY\JQ3MnK\OA7/&Bf:ߦ('tiCwb5 KMnPiaKK=<?׸<-DŮop x̹>`ƽK~ҽ&oԐ|8%bߔscڜXZGeޅXE]\EɬjgS¾|J߹muq^e| 0,0CA7sy,>#vs ok?zms: 8K8{B~BB~B{BB~B}BBBr~BBBpBxB}BM>,>1M>7f$[sstand036cugt#Uwj^"p]eLxO}\{1f\LN]BZs=Ncz@aiLuoCVqrdVmQYtTRBeR&l\'FhqvNt{DWkWWy9y9e[pfcxYrg Vc{„Fto^T.vSli|0i@@dmȑBkf\[pjrzZMxiXlBdsIhgLx$a){eJ}4f"2NYƍЄR-1nd~[wnUO\nYcVPADaD?qZV@voXgXcpjZA`,b!qKwpMJ$ȟw͡nEǬzͯq.ruv<'_%#VBehRhAs(u9pb-|}yx9zw\<ĉ&qqtݍ ɗubqw(̔ĂA=4}E<܁ [0V[^JT3OnN\QA7/&Bf:('viCyb5 KMsPpgKK=<?ظ<-DƮou }̹>^ǼKӽ&uԐ8%hߔsiڛ^`GkބXEd\MʬpgYþ|Q߸szqdk| 0,8JA>uy&2>)xzqm?|os<:K;|BBBB}BBB~BBBxBBBvB}BBmO >,>M>~#{~xstand037dugu#Vwl^"u_eMxP}]{1g\LO]DZs=PnAlzcLac@cG(vVMJJh^YA}lB\*{cTEFFc}?czBaiLuoDVqxeVrSYtVRBfRIn]'FmsvUv{DXkRXy9z9garkex[rh We{ąFvd_V.vSqk|3mB@joȑBmf^[ulr{ZNxiYlBesIig=}$h+eA4l"2U_Ɏ҅R-^ǼKӼ&{Ӑ8%nߓsoڛegHrރXEj\Tʫvg`ý|Xyqkq| /,?PAEw,6>.zzso?~qs?~BBBB~BBBBBB}BBB{BBB-7>,> N>Ybystand038euhu#Wwm^"z`eNxP}]{1h\LO]DZs=R^ȼKԼ&Ӑ8%uߒsvښlnHx݃XEq\[˪{ggĽ|_~qqw| /,GU@Ky2;A4{zuq>tzB?JA~BBBBBBBBBBBBBBBB>pj,>wN>m&svstand039euhu#Xwm^"~aeNxP}]|1h\LO]DZs=RiAnDleLlf?eG(YMLJhi\A}vE_*f&VEEHc}AbzCaiLuoFVqhV{VXtWRBgRIo]'Fwvv`yDYkRYy9|9ikuugx]~ri XgzȆFÄwdaV;ixyCB͎khoEaf`f:lE߀>Ѓfu$uIH<)X1v6ȃk5q&&s,N dl\?bTEJዛTo8M&TGtP]DgK96aF>cYY|XKuPe?5v#Sym|6mFAsrǑBnf_[}nr|ZOxiYlBesLkg=$ĒsÔ+eA4x"2ak̏ՆR+;d~Zw}UN\YbVOACaC?~Zh@vpWgVcnjűXA_,a!KvMI,ϜtԟleЩw խo.qtt<'_%%iBvfRf@q(s9oa-{xy9|y\<ɋ&sqvߏ Ϙwbsw(іɄA=4E<߃ \0X]`JU3PnO\SA7/&Bf:+'wiCzb5 KG&QxKK?<F ٶ<%DǬo η>^ȻKԻ&Ґ8*{ߑs|ڙstH݂XEvZb˩hmż|eqwۿ|| /,MZ@Qz7?A8}zx"sCvzFCJErBBBBBBBBBBBBBBBBî>mu+>cN>Swstand040eugu#Wwm^"bdMxO}\|1g\LO]DYs3SiAnDlfK"qg?eF(YMLIhm]@}zE_*g&VEEHc}AbzBaiKuoFVqhV~VXWRBgRIn]'F{wvezDXkRXy9|9ipvyhx]~ri XgzʆFĄvpaV;ixyCB̎lhoEaf`f:mEހ?σft%yKH;3Z5x7ǃm7r(&s.N~ dl\?aSEITn8N(UGwQ`GkM:6aF>cYY~YKyPj?5v%S}n|7mFAvsǑBnf`[or|ZNxiYlBdsLkg=$ƒxŔ+eA4}"2fpΏֆR*:d~YwUN[YbU'NACaC?Zm@vpVqVcmjDZWA_,a!JvMI,ћs՞keҨv ׬n.pss<'_%%nCzeRf@p(Ħr9na-{xy9|xa<ʊ&sqv Иwbsw(ҖʃA=4~E<߃ \0W]_JU3PnO\SA7/&BD:+,wiCzb5 AG&Q|KKĴ?<F ٵ<%DǬo ζC^ȻKպ&ѐ8*ߐsژyzH݁XE|Zg˨hrŻ|kq|۾| /,R^@V|;BA<~zz%uC yzJFJIrBBBBBBBBBBBBBBBBD_>Z=J>W%nrun001hEq-pKc,h+t;USh!M;pin|_:|7\?[KZO`RYw3TH49J19 <[ <^Ib;Do)Ev@E^;-r?dh)2yU|;FI@Q@*Z_TqWjkZbgwWcK gsBHwB&{P+YYLI_XW_v5LvsQfDd4ms.b_ZC56vP4yr/}=vC }ipC3}q9$FI熡uj=>}iȑ?mHEKCPC*<lˌxGA],dowiRш lEԧ ѳ(ڂDX#7つf0:Bq-]qC-T+U,4XqhJ}rrkĔǑS3w95N:u>cC>c?gxZofqf6dPpFcMNb+"|,rexL<"2s|P^CmNu9nHg;R"ªK+~P7p%r}nz~{2bdpg%-f 6#  HbRcBmLp8nni%vtP|9|v\5isu wbkx&@L?E5 J0@HrNV==5o2Z9@F%@f9('viA}c. LMwyĚnяoƾII=2s~3{rٖ>\~&fÄep6c rڧ>z˴eKs'j͒rob}4[oGOlTxBJ΋VlWKwdoE^hQmn^Ķ~Qgtiae|~ -|'h cgkmT PkXl=~}>>l>j>>|>s>s>z>e>r>z>q>o>v>(*>=SZ>e=Irun002@}2Co*+Uy$Atni8/fCMjO(bW/`H0YU=%WIN#5Jc.8WE(2gphQOYkRse?e-xsMI1h{*]e(gdg=o`yzrqbcvywuQq5~8lR~QsWpt5rOthXiF)l-s4_4BqP=z-wF0+<3t~g81儵: Iꆲkj}??xo͒GmM7EDGD oz h2}8Gghk?:Q3:$\Bg.\B5"兟ㄲ\03:$5J3-?5WŖjLvqmuI!O SNvAv62(sGuy?ZD=cHsqati,i_?nGMb+"y*sex>4"/hoP5aato]}XWsoPs`SV!JGzKfhqGht@D7g r>D|Udm|b[zdXajlwPfQLS'WM|\JrBIlmhepk2|b?nk g%kdm=ld^l.^*BC"Be|b`fI|iEljg+~8~|5wsaך.Ǚfgu Λ wbiyӜ&ΈJL?D5ш1U.KPrWVK=E8B\HJF%@B9՘&ΚubA|e0LMt|ɚfՏfŔLL?1r4uϞ?Vވ(aŽcndc'wϭCbοA{޺(gҒzt"Z7RzI:jBv*͋7֔GwR1uZzePz?|ilUż~Ei"th`!a| /'^ eUT}HK@@t.͉0ŃB'ua'\J ^m>t>{>l>i>w>t>o>q>s>i>q>w>~t>p>u> > =6TB>ΡuH&run003PS=]n"Ls/0C1UlL3lD@3M2LK-o/)#lTY"WKTT(CZ1VhIL}%Q"*V?RF)q}pz!oi,o'cqWd=e?`BVa&_m'~4athxD>xU>;n;ScWPwB}TW1xVW!* ,tOZϑp-La{CXeDZ[rna0m?~FPLUg)!‹.cAC)ʼn~P ZgdWK]|\JrQ[oS#fGhA`NEsT<_w,T%iiPspJZYl=`{FIwK'ESHRUB&S6IcQ0H>ca W*$ eHW% >+L.S|\TPTTBWqp+xoF{s4qn\5ͅڒcsmߐ Ǘobdz&͕{߁JL?|D5 L.DJrOVD==o;\@JF%@f9ܴ('niAte×<>G&Q>ȫ>ί7Ĵڅɪ7Ծ͇5ٶhy/Ϊ8²iĿF޴)$ݴ|4xt́l{p_jzkǓu吕Ħvऍ $r#۵ *{ySpx^ [HWw=ɞ<ƖJ7w O􄑭qCtC|CwCsCyCuCtCzCvCxC|CCC}CC&b`>xT=;>O>̕#run004bn|aPAokxt{|[*za9y2% 3wy"rj4ě>%3u;io^Ȇ?\DTe[7b;9%%V?nq Ue.G_^o oLv(Ng]@QaÕ9 CI(Q>ǬCв7ȹ ɪE˺ꬪ<֞yݶ/շ4ǻbF=ɓ$ܓ<Ϩɲ㰌HI턝eϏXtyޚ˲譓&'r$徍1*m|tBrl^mf_B`XyJSvPIuCKAzy8#JN>I_:MwmDoDyDyDtDwDqDsD{DtD|D~DDDDDG>V=J>`z *run006txj yb/oelcZ!I~k|UejRbd`5rOKv_I`cW>+ ?Spc(qE%l p>S$RNF(9{U~DhIs So+LMvBfTY^ZNYzcOTgPYbNZRrC^GŠ*tKQ~??#/r]{&7@&cĖChDQ\arzq}Vbum`Qva`a+ œ)|I |Qƕ&ȇPFxe9;J5FMNV>?8n6Z;UE.G_^8 L(qi@ta5>GPԍL>4 Fש;.Βpl%߮4Ӷd?+Ə"͊3vԈrv@sӻnśrᖗˬxએ"ƶg!ݻ2,fqv^lrNtUg_Qb1`6V|B3Q8VN1T`+Yw~CCCC}CCCCCCCCCCCC2>[>~i>M_Ouattack001XelcHhUQ/Z~Mial qi-`NGRPApb(5Jpn 1C:B="Fx%CoN`X_f)i)T夑>mΉ_܄ZԌn ɕuˀ爹Cڥ]e˧y2ƒbcvCpIgWa۸ᰀT4aћ Ċ?a,ȃ(nCPedcOgeX]UjcMt? pu{}CL0rzzxTQ{VmGs¦LdESIľM=¥A6?*̜a/zث:ɡXdͮY7ınZLVT?h>>w q5vp#ihl<'B-!.dPcHnn*ŶjDx1uq2]ue‡ nБ[aep6[hƍ f݇Lڍ%܉.5Ԅ2sR EyK\WIT%NKeRL0=? ώ'Ō"oo݉=x7{\ z_pkM}DwMp"r|Nj#yZքxSwnx~{?kr|`qgl?^kaN$gJ>_IPa'd'd']']'c'c'c'b'e'['^'`']']'_'LG>O>h>A+P͟attack002cbt_"Sf}^Mnt5\o RYy}YbaU|~XkjJsMdaHlTsJMM>Bo?)ab3z8YpY7oX>zVrUnAzh@u?v p9un%xkri|l<'B-!^2rwdPdH~oo.ifsew1hs}1rrud2meiu{v۞yohz'uo{~>,.92] SWZ_KY*SPbV>5>F uw흏' wo?~6g Sl'X`Q~JOFmJpa'd'X$UIx΃c/Lք&~ì$4/4'BI@1@|s3|0̩2ͪ?J ٠ΌH%8L/^@?6is'HC&9hD؄D3GwUs?GfwDN{?DyAsGn4AkXOY#TV=ORRpj+po+ls+jh+lg+mq+oo+om+kn+op+hf+hl+gp+cl+fk+en+/=-S>ya>d7y"attack003~ba!tg{MkkVrj{mi-|LKnRDbLO5MJ>p@nCuh?T^5l:&w^D}ZCnVW9=Y,Wb=4_Z\[l`Yowg:ZOimlHq^NvkGCtCOK4^t:fy]P{g59tJ}`qzqrr1p|n|yp4g}oahl trۉyFFQsuhwdlDlEY TJՉOe|#τ9H7)%>Ԅ2(!VÈulX?l5lpfw:CGOTDƖ1:=0m4Z4|`]pNtL]PB35#=tÑG PA@yCxDk\Wvrgreb}\@Ņd&ua)y Q/eC9`2>PG‡Y-1j\|[zsPuObhOYNNADpA=aW:x8[iȩZḘpڽX>X'XzGzrFCv;o7v n*ono˯<'ѱB%$R:reQùeKq ιq5ΰlf}x;s݈<}iۗ0G|sȆŚpxޗ(B=460Ƒs2pqrr@k3hfaiB9%GDE߯;˴Ȯ(ٖ'ۂmCd1x>G'[pVAčCL>) WӐ5ncչ Hj3xͭ92ָbǰ?zBĺLg˴'JXVl;UQcQۘ`3/皔bcU5_ÚB6×X`b9w̥G̸j\3ɱC{r s$3A&~y~z3wqpm5h][,Y)$UTCCClCpCCC~CtCCaCmCsC_CfCjC(>>V>Wnattack004ohsi$`nlQ_XVr]xks2fR>K[Ddm=)<'@pnlWAQ4V>IJE;Gk|F8|7)9EA7C_;ay=`mUr;Th_IKPtMND_HHmP&6m^fcRap9fv{kvcul YlpsPedr~\h}f K:f䉪`ꃨjbecnvliOZHZs7llH^?ށss5*Qw0cb/qY1l_?`qxfY\|\v~^qVmagdBrm+h?*y!x9bD7!1{uGeREnd~`zXtTaW^RQBIiE?gB}o_hê]eʯtZA\(] MxMG'ۻy;p6xp)tts<'@%$BiQiAv'u9˴ocŠ |w[:iQgr;@,4(&g)B6/IfeٜՖlLr(Uh_DVi{ӌ }BKL(S"ĈBɂDӋEϐ΋ˀoδ2ءdӽm ĭeŰ\ժBŰ>ɿ%ޜ0rޒW>YؓpØ[ژrЪ׶$߱ȺȬ ף<ػ3aj`hGQy>NqjElyNjy)J`|kX[IN`YJ>]QLgtcqcwcccxctcyccwccccccc?>C=kP>03Lattack005lojq%[skWh[JyJZ}1]Z>8bePw4!<@in l]C~^4TBLNG5JzyQ7 1)9&=E6>b|0ex/ek?{2WsgLQQBSe\MKiWId|l]^iTTy:rtt}thxl XyxvQYib{ QsxuqRlo鄙Q}eZ\Zv|gsYuOWd}_vRx 4DT;\= GC "_)Oހ|WlNsiQjrd녈UkO@\H[%D(P*CrzKhRjѡf͝f#KSv [q#IvG}QRv\}_[mttNqHug[lDgu=t~F.h"ǥk:bf6ԓ!Ó1}ϚˉiWR5kicx\tVg[a"TSBKiF?g}G}oah_bv[B](_ QxPJ&z:qdy p)xwu#<'_%$}FkNkAx,w9pcݍ ~yC:V~LS$$rfhfjbqˊci ܪ×<檖g͟zѮ ʯaXˊ^ЪD"ҫ/в.쪏j9ǂŊP}ފBܽtRhەҩ!°*Ԭ ĸɒ ~όؗ7aj`hV`@`~MYTVKUQHjPN h_Ommu\k\q\\\u\q\~\\w\\\\\\\6>=U>l~Qzattack006hneo%WqiVdZDvD~Tz1ZX>5_eKt4#< @i nl\Cz]4SALLF4HzuQ74)<&q5l\Cԍ8Ԓ2Ԗ(֐CɁDŁ^*d%?iOFBb_l}؅k^J>LN!$nfdfgbmÊ^i ݥ<妎g̜z˦ ʬȧ^ѨCԦ/ү.릇j9|„vڄ'xBػnP|hّϤ!տ*Ц ̍ zƌ۔FamD_}\"f{FZ{uag"ge9`b~>,=?}:Yo\d\j\\\o\j\x\\q\\\\\\\ (>'=T>6ǠNattack007`oao#MscXX^=v@|Ry2XX>3]eJq?"<@in lSE{R8NBLBI,IkwD;| 3);&8CE0b}$cy%bm7u'Vs[OBT\{",gx0ވ~H䅞AmWlAehJ^x#@&P%KWs0p_:rp^Pkt!KQw)DaAiuOwNPv\S`ut^I[ySw}L[=siPiB^r+~bF*bj:bB7Ő!1yg\S>Elf~^xXtRZY`SPBGiD?g|D}o\gZcȮqWB\(^ NvNH'ܸu:߹ldvm)str#<'_%%|DgSgAs,s9ʳmc̉ zv>:EF\[;Zk(>q:^t=b:wb,nPYCU3O9H6L:L1 }K5l\C62(CD߀ՈӅ_+d%@iPCCbg͌Æ p_KL(N zBqBzEԀƌ ldƛ è0ɒaгh çcƭXס_é>ؿ-ȹ*̊l5u݉{{AsWiȕ藕u۪ڰ% θա :?aoBa}Yb}?WuTkZg7Rfa='g:>`9Wf^_^g^~^x^i^d^n^{^i^^^~^^^^>'>?Q>Nt܁attack008brdr#Ruh[ t\bFwI}Xz1`Z>D]DSr??<<@'i*n.l{]Ib]<(vOK?Ih^R>}m.M)~T&IDE>c}5cz7aiCuo9VsxaSqMVLQD_PIiZ&EhyP}fUiRRx9z:~c^wedvXzc QdwPqEmzapX→AԋZ扷`ypflf{ohwyhbJ\F\e2y^CQ?Ӏtd).Ȅ?OJP1FL>=̀1C1L$6O .y(e+;p8ߊ|J WoPNL`RHLX(Y:Z"J8pFdl0ZlSWZ]KmR[5e,6/ScrԐN4z_?_^xč|fY\yTgogZGuiUjBasLzbr?,|n5bA7v"2Zf|tQE$|e~\wzVtPZ{YaTOBEaC?vZaBvoYgXcpjɹXA](`!|Lv}NI'ץuۦldصwݷn)rts<'_%%aClfQgAüs,ǯs9nc-{w`:cd\w18@CK731n0\5A72&ADߗy+}$`inCdbń: @G(Q}•AʑAѝFΟ:Џ7 ԯ:/ݙe¥p ͯD]Ļ@ѲL$⑌.rHzW݅dŝ[~ڠsгߺ!r Գ<+@PBC|-8>-wrm?ow@ =A>qfqfwf~fyfwfsfvf~fufzfff|fffy>r@=4c>Z}>pain001YfdlEh~aQjEN?oJz\x aW+F]FZs*8<5Ap n$l}K;rD*S='|:<1@mq6+v XI%NB?9,Vx&Yk-[oGu*MitNBs4DGN?ZI&gT{x9Uc{ResEOhOm?~k9PYagMzpHr[5CnlVMeUpHn7݅Ό>އKdD`DowhTzqWd5\1\Zx]1N6~vF%6ÃBkKDCD#^==~3Gh+#c& 7x _3wDYaR|v>`{Xx%;_>er^UӐD0xT7`X_ŒnBH^q;`WuD܍AmaReUak&pMq}3v$`)f`C{e?~4h"0SZKJ<Ε7-ihOPrpCH\rGYO(NF=i@9Zn,nQgUbjy]F]*\!y<{>C%vqoyt0{f{}ip<'@%-p.{hdUm&lFj\%o9k$nL!{+oR/+U?␵1 :;MH!}>*_K(O2 ɟcizn6;o $Xb{$h&7)U$ß/r1Ԋ@*AG#f.B%}qxw71AG(xžwnABbΊbކеjƨ:ݷqwӾ ķcYfF 0巟z8ܖڝ',B׈Q꧓s٦ʹ#/݆Պɦ9LW{EBW `EQiς m}ddzl/hFeN[_Z_b_yj_|e_b_]_a_j_`_no_|n_o_oz_ur_zs_ >=X>i^[d$apain002KnVs8p~SXp9V1v:M S\+6bFKy**<'@pnl?As90FB'.Bt#Emr+1v;%A4C9\x_k`p7zRayBIx(Ku9RFLN&YZl9eUtVYgE@nAu4`5D_UmAzy;rM06nvI\FY~\Gp2놕܌9쇵Gk]DZBtnqGz{K6-c*cezc"T"ހz?,ʃCNIO'D ;A$ڀ5*;+%; z 0s) D4b抁$ ;oS;=c9KSA.T AHJi*EhZo2YcCj>fp]r2B)EAMbKސMz^$_]TϏeB@f}2gLuPZ2taCkURr&{Bq=}$ian.seu?~4o"0W^i`PDpjUTrrGK\uK]S(PF@iB9Zn/nUZXboy`Fa*`!{?~BF%{uo~x0k}nu <'@%-p1miUq&qFo\%u9pS5OR\n0ctEqLn wPbEzr'tYeJjLe?]Dc5^ -0%+r1H'= o\$JF%@B9ؗӒo(r'PbeAVev9 |AG&{͞xpAAEڌE Êڱ<ůZz cYĩB? /Ǩkԧ9蠗䧙'ӛAR캜gٱ/śőϯ4ClZr3O]sGX0R~\R];[x`xww0qJVBWB_BbB]B^BYB\BcB\BueBfBhBupB{jBkB'=r%>C\>Qtxxʿpain003`perQqgZ"hV\ItN{\z2dZLL]DYs)IU8}l]: DLIa5?6D3ʀ73..'42M9 j";m:XVFDd;{Ia8UH(cMIJM'K9LW2dS7x2cnOYVT}{>]PNQCL9/-OVdԒX/hh=@Qiő{Baf~S[_drsaJsiVi_bpIz_g~=s$Y*ze>}4d"2HR€R["f[VwhMK\lQ^R'NC@aA4ZW8tpTqUclyYC^*^$nDuqGF,tÔmdwƣp.lor<'@%%Y:zgQe@o(p7la%x~:r|vye5 AG&kŝc\K>?:|4 һ0ۦbűm лBYAӾLx#ߟn.u㠚KWٓbjͫ]ᯔrŹwdp#x} s <)0~EyC3px ,>~r vq? qrJ GKFsBvB|BwyB{vBzBwBvB~zBxBjyBy|BBjBp~BvB>O#*>6O>c=Gpain004fuit#Xvn^"bdNwP}]{1h\LO\DZs=SiAnDlfKtg?fF(ZMMIhq]@}}E_*f&WEEIb}AbzC`iLtoFVqiVVXtWRBhRIo\'F~wvh{DZjRYx9}9isv|hx^}ri Xhz˅Fńvo`U;hwyCB̎lzoE`c_f:kE݀?̓ft%|LH:3\7z7Ńo8r*&t0M{ jcl[4`SEHTn8N(VGzQdJnN:6`F>cZYYK}PnF5v'Sn|7mGAysƑBmf_[ou{ZOwiZkBfsLkg=$Ǒ{Ɣ)eA4"2ktώ؆R):d~YwUM[YbU'NACaB?ZqAvpVqUcljɮVA^+a$KvMI,Ҙr֚ieեu ٨m3os°s <'_%%sC~eQe@ïo(ƣq9ma-zwx9{xa<ˊ&rqu јvbrw(Ӗ˃A)4~E< [0W\^JT3OnN\RA7/&BD:+,wiCzbě5 KM&QK©Kƴ?ô<Ǩ4ڴ<%Eǫo εC^ȺKչ&ѐ8*ߏsڗ~H݀XEZl˧hvź|pqܽ|/,Wb@Z}?E@?~x"|'wC"{zMIULrBBBBBBBBBBBBBBBBS3> >i> 2ߣpain005UK2Ib$~i5}*5;P?0c07SD!kld$||R!_`=bdJ`rtsR{N`!5p&M]dB5v1s$m?pprx`qEpf\qL\+D}c ;`> xsmls{UcT]R_`I d LqAЌ1p@nBwYnRxvxyz\OJ1ރB IP d] [hR^GZb~-qQld1:iTEgNBQ?r3H'L.9Z/v"3q(m::Fco`U}]Oe%]qs,jOsB]z6áSŘa#!yRjGFq=Ei+fЙcoFxuLRtRb[p|J4z8dG?|mtK,[*iA 0ls\VbCnn{q^wy-i([_TQDq{^|igc[~y`@o=u*d{g[+|nsaʈ̌x429'`##%a oYue=:m-|M {P.c;ABeI1Z{G?{,E8c'1r7JKY%BNwR?{@;{^6|[5e98 D S_hR_w\bx?gwGcuR[WVb^0a"JHOL6w={T7rf|9S&$-SOΉfӍ7Ğ `Θ1МZ8ҵ43ʝй$˴(˟-pԴ>4v='5įS'ɖiZu\nxq_!Ǻs'vk-Ҫ ߞ9ܭ?[`U^‚CF@Cy&)A&z`[U_uaR[RcRxRrReR_RlRwRgRR{RyRRRR&>>c>>䮱#Ҕd"pain006LC2?Z$v`*,;H?&c'7J#'?o3=FwP<L&S7'bjrpxvƈ'wɁ-ũ џ9̴=TYUW˂=A@>z#&A#zd_Vdu[RVR^RrRlR`RZRfRrRbR|RuRtRR|R{R%9>>b>[$>͏&pain007LG-=Yx$uW~+%3;Kv>)vf.4C<@A)i,~1 k{[_ kfO"SZ+tN`8\sf[P{l8Q.|_&@WE~1{{$zw#ygm.ky_moKn;hfRiLVw(zDpsɀZxz 7T5;yu t_dpf`v{HTBTRVfbfHi=苡+o@Lكm`h`|qczsfeAX=Xz+w,すJT&[IVb%fLJh,^8 94KB6M<Ԃ431y+;c&2*\n/싯EbkDKxHGsIQXcP#h+a9c![DқKz} mR`J^B d01N[n%zv4T~h{TTX~J|b{Ir+h5eC=y\uK,j sj>wz{Qzr 2`g^OKW_n~kvyk\qvf([@QqOCqqiW{perb\}ya@n+s%y^{bY+}nucz42<'_%!%mZp qRtDL:i-MPG:[5g]ZL>kDD=ixCņ@:zz $A ~z^YU]u`T^TfTqTlTfTaThTqTfTxTtTuTTzTzT+>g >A>L;Wpain008a}a}-Sje ~bkFER1bc>FcfO{?QnAlfQ"pkCcK+~ZRJNhl`E{uD^)g&SJEDi};izT.IZ3MYG(WjVjF?"Ib@N e6xOLVGsUWSfUx9dWE8aWW~[GuRfkDg7S)Sn~|6hD@xtΒ_g^\~oupqFhRtD^|Liq>$Ɋ!vNj)aJ5z"2dnЄGxRv&k~^w[Q[`gZ'Q@GZFC{ZmG{pYqXcpkYAb+e$PtSM,Œuɔleɟy ͢p3uyw <'_%%pJwgRhBs(v9ri-{xn:vga<ʆIgrmވ ӏiiiv+Ԏ~tBx3t7o6v<{ P1MQQAD4@>ZBB8/IBeL,ihtDkbŔ42JM&QHKƮ?ů<ơF ٪<%ešoάC^ŵAԲ(ː!8*߃sڋ}wHsXzEZ{ΞhȲ|ݺ"q޴| 0,R\@U~<A@>mQ>pain009itlv#Wvr] b`JyM^1j]LJ`DZw3HB}8ZPsxg/uc.[s"|dKku dVFqfb=bj\6Tu=R~a(cEMh\K[pOEdq`jRkAv(w9sb΍-~ϵ;{X 0}udS-p(PzaGBHboH{s\,@.z?q/r0s:e D\eP\}Tc[fi>u_0sXtVbx\?`<]](c?V7K=CNh,]$cns3loH+/x˻''icʼVCN\Nx/v#XE9ɳd3̾ׄʽkzЄknن hܶVWp غЃ ʷ̹`޺((9꼲^kİ[Sſr޶S }g"{߸S<>Yap_dH"O~BFx'q",mC%rxB?UBuN1D1F1e1a1K1H1[1d1T1o1c1]1p1j1e1>9>ZV>\]jTpain010nrrs#]tv[g_PvT}e{1p[LQ^Dat3Naz@`iOvCTgnQVStYQDnPIx['2ʗ\ֆIe˒`Tҁ@k}Cy<1ZPvh{8l8lҌBGr;\JXJnDLZ4sJ V[LWQa{,.x7CP{b-RS}hgsk|RsQΊGH}@_\ywf/ve)[rwaKhr eUE}l g@bn`6Vu=R~f(hFOm\JZrQEdvY<~9hbtt\[pQvi`kBnrLwp/ >VE?9Ƒ"2{W'kUVE`¶ZwQǾN\U`TPCCaC?Z񐆟?/08t Tmk `c}ci[uo>e0_]bb?p>U]>#pvpain011rnvn#aozX"k\VqZwjv1tWLWYDfn3V9ċ"2y&Tg?]VwO»J\S]QLA@a@?Z;voʭTgֳTcݭjjVA[,\!EvHE,qidsl.Ƿkno<'_%%<bQݾbAm(n9߰jaʃ-vͳs;ob l&gpw,|n~C*581q j}p[t>j.ecbhC9&?F,$p?d ])˴&'v~ϹSUe)*2}SÍ1Y -ܨnͭj;չn>\>z!pain012onrn#_owX"i]UqXvft1qWLVXDcm=WA5ZCnD{fF)(1H{k!a 9nZoQۉa{;X+_Iv`nRNp\Dol9Dbb_{h>R!71 UuvÑ@hNCy{CyDi\xraVpibeBomLug) /e>4"2|ΖR4^~TwOI[S\P'ӿJA?a??Zҷ`Q`@k(l9haʿ-tϩq݊G&ƺRxÍ|ƼLμ=. ˻5 %oϢީ5Яe׺?,ҽ"莋*sv~Au]ᇌʕgې̥z٢"Ʈgز %dq@gIP|@Hx'q"-mC'qzEAUDuFFFFFFFFFFFFFFFFf={Q%>v r>opuHjump001a `2Sr!hGjDQ9jKQz_Q>y@F|5Vli7\yfAbrdOiu~i}ysu(h~|[tqbsy}EoFO)]FepfM}EwFZCbO|sa_w_p|&r'Fvvt\z^RUQ;|huuygwYeUdRʅ4񎎋wocV kታyxFFvƎkzmd_e^e;jnG~k=}sii%qAH@*M'^4}T2~~#S rub){R6KXn:qJ&}PH_NU6QTFv9e`7;bXYeXxWe!3/Ucq͒w2hABcuCle^Ztpr|aGhQE^Ljg=$q*bJF|"._dƐ&ֆT3 T]pXvOQtMqWQX!M&KBjDgz@FF s6?|kp|WsVajSBV+W$RH{WHtC(ngdng3kkj-{ 4^&r]h ,f,:?"@ gcThIiDiZ*8uz;wa1(sqxВɚwptw,ƘC.9~6;υ\1X}]_AT5OMaQC8-(CEرح+,wiFzd0>G&Spo>Ū>ʵ4;ƪ42ޯdȵm ׹J˷_ϿK߽(}̎⫊0rW>Yݤpͦ[sᦚɴrlֶ{}xĒ1%G]>P|y2?>8~ht q=shH FKGCCCCCCCCCCCCCCCC> >]%>Dwi̫d%jump002cs ee/Utve#rh}JgkH^V]4pTHWHTWRK6C% Nz[(sc.l,a`wfCjlxS(Zkg~`_Us?ukw0=+L. ijK_xOh}G_zIWZHScnRZhuq`br|dNT~uXw['|Fau}Jy}}DUWYUj9y{9wgXt{`ex|Zlrf U|egPC~pp] PBzy)s6jL1}ohRM=Nh  K[{@}@@@~@@~@~@@@t@@@s@{@@$>">M>Ejump003ow rs-`v}dhmnVrjWsfs5ΟZF4cSW~QIsPf%L*T~k|+g:`vqӒBi^[~luuZWraehUppIhq=$ȍtÏ)hH2{"2cq̉рP52x||#uTxqr@AOsb_Xbrz[lpT}I$z~z(Ћ6̎ycԙ<ќz> Ť/nH4[;&i:]`J,]Y,f>Q{T”~Dģ+ŗ:i-MQq9uqZ<΄&lrn Гnakx(Ӑ}~@={FvE{9{ R9F ͋0طbk ˝TH& #ܯn5u䮚KWԣiҹz罔w|Аɡ ~Ľ5*Q[@R};@@;x$CzVRUUr{@}@@@~@@~@~@@@@@@@@@:>>:$>3>Kgvjump004l q#]tu"cUlZh0qkIZe_f{LZO>,z |.̃-!Q vc=uMEEߋQ h8FKMIw1|@5\ZF5cSWR{pYy!>*zTk|-iʯ9˥? Ҷ0ڙbŨm մSɭY̰Hݶ&Ӑ #ߏn.u㎚~{KoW~b͝⢔DZwջ ~ ̾5,nkYoS!Q`Q4"3_2kfYn}{@}@@@}@@~@~@@@@@@@@@;>Z(>6'>\'jump005mq#^tx"eVZg0qpIYm_e>X.zSn|4iCUt‘Bm^_[puzZWmd4o*kqL$ϐ̓){hyV"2{vԍڄP01t\vcNihY'KUFqDBqV}bSrP]džek΢LU˵\+Ǻc%W{[O+ڃdpۇYci;^?qĞu ԝn2<$_#%Y ȔXTЏ^Dҝi+Ғn:̆ji|-fMcRv9zv\<ԉ&qqs חtbqw(ٔӂ@=4{E9 Y0TZ\JQ3LnK\O@7/&Bf:(,tiCwb˚5 JMKǩK˳>ʲ<ͧ? ִ/ߙeǧm ԲJȮ`̲H۶&ѐ 䐌.r㏠}KrWdʝ[ܡůsѹ|~ 0,olYpS!R`Q3"4_2lhYo{~BBBBBBBBBBBBBBBB->*>ɞ;>0Ҭjump006gi~-Zpj euOP]0jeKPdfZy?W2>\>Kflip001gnjn#YonY"a^PpjTuat1jWLTWB^l=VP{4< V{p{:kGC{tCqDb\prZRpi\e_gkImg=$Ö*e>4"2wʑԈR+^~VwPJZS]P&KA@a??ZsdQūb@͵l(Ѫl4ʟha-|Ÿ:y}<ŀ{a<Ŏ&vq{ݓ ͛{bww(ΙňA=4E<݇ b0^bdJZ3VnUaXA7/&BD:('{iC~b<>G&TLȫ>˶3µ ɪ4ڵ #7Ȭϳ3¶fʿLչ'ȑ:%ލgٔX򇕒I݀]8c{ɝi}ï{wާٽZٵ{2$am@c~FM@Fx&y+uC&yzMJUMuCCCCCCCCCCCCCCCC=:>f>m(flip002jiqj]kqU_YXl]rjp2pTL\UChi)W FMXxHXkLWp[j8LMgfLTNt_JClJ&tTLj4vuyȃDafcjF}4kvixawo5_nk~ʈ9㐼zތg\ mび|yψ4Ј4”mhp6eEeEEy{QӒG{kԎy,|D>70q9|>{y=!+)Ja<XՌSㄊ_s;K+SLUEON;g4"Ĥ/‘&ΈR,ZSwLHZOYN&İIB>a>?Zt8vpQqŞQc̙gjSCX+Y$CvEB,mfdoh.hjҲk<'_%%v:eŦaUұh&اhFϛf\ή%՝9}~<{a1&wq|ؓ Ś{bxx(ǘB=4E<؈ d0`dfJ]3YWa[A7/&BD:ܫ('|iC~b1ϝ=I'J{Ǔ˪=Ҫ=Ͷ. Վͩ<ڹ 9ɱ϶0úF+Ӽ$–饅#ޒi٘]񋝬앜Lމ_:bǙXiuۢպcֱ !n}@p~QX@Px+y"1uC+yzOLUOuFFFFFFFFFFFFFFFF&=D>Xl>3RFflip003ogvhchtRbV_kfqqo2tRLbUCpi)XΑ4"Ԣ/&ÇT.WRwIH\MYN'ŮJC>a>4Zr5voQgǝReəgjUCɾX,Y!AuCB$ohdqk.gi˰lؿ<'@%#r7hcT̯iԦhC˛g\ҭ,ޝ4~<{aՏ1ݑ&wq{Ñ {pwwّ,C)46<Ç e1aegA^5ZYa\C9-&CݥDڧʬȨ+Ց'{iC~d ԛ3Iğ'Aţ)ҧ)³0|͏ǧ<ٽ:ʵθ2ý4*н!yˍꭅiڝ^Q왝(B:eǙ]pؠиeӯ~x_z}W_@W~x/y"5uC.yxPMUOu4444444444444444 =!9L>Ut>-Jkflip004ncudbesOaS^hemql2sOLbRCoe)X y`2j<'Z@tT?pyW4xIc*e_;4RTxOUkRTpcg8QJagGWIucGCnFGwO慝5tw耍DhdhdC{4kuhze~wp|4a~pn}1xp͏y׊|gʐ]xk}yzԅ<ͅ5lho6e6e8gM}cXqK{jh2<43 {:oCt@)$Cx|P|}gRXЇsYoeqՆF.N?TM?KK;g;BlZe^NւKDql=xC8pWօ5q7cbnZ~b_eZj_TscGmiۛ)ʝ -ֈf艍>ڎ4"/&@/TOwGF\JVK'ΪHCoɤ)̤.2t1wɐع;˴ʹ ù9-ηXk÷믆iܝfNN+D; dȕ]pך̯EШn|zw_{\e@[}x1u"8qC1uxLJULu~5555~555555555555}S=tP>Jqv>ʃflip005mctdadqO`R]gdmok2qOLaQCnd)W z_2h;'Y?tS>pzV3xHa*d^;4QTxNTkQTpbf8PIaeFVHuaGClEuNꃞ5rrt~DgdgcCy4iosgzc}wn{4`}pl|1WښmƏw֊sfÎ\ih}ovs̓<ăތ4"䜏*(Cp0SOwGE\JUK'ЦGC;a¬<4Zv3vūoēNgҗOeՓcjRCԶU,ƹV!>uA@$kddmg.ceשh<'@%#w5dǞ_TبedCוc\},~{4}bzMxޡ}o\Hޔ$tbUuMy&vyosZn#dJ~ޗ1~ jP^bX]gbetf/y^vZ|Yo]0\V[$b1];F=OI#w!zl1}􊑔gΖ.(ƙ'=kN.á. n mŽ׺;̵ޭ̴ ¹<˵X`t쳆pݠfSN,Cġ6ɕ^p[֙zɫ6Υ]b{ge_y^g}@]zx2s"9pC2}sxLIU~Lu{5~55~5|55~5}555}555555T=R>>v>flip006kcrd_eoO^R\gbmmk2pOL_RCle)V y]2g;'X?tR>pyU3xG`*c\;4PTxLTkPTpag8OIadFTHu`GCkEsN쁟5prs|DededCx4goqezb}wm{4^}pk}zׅMQi×}qjodZ`f}]w֡ʁ<FIy9cͅu@yVd[G~Krr Elhl=v?lYӁ5m8`bjZkti]dZg_TpcGii*Θ f  ܄f>ኊ4"暏*z.uEe0TOwGF\JUK'ҤGCz:֛wihME{0_oZ3|F{+LszKtX_2f&?؜p`{]xYtJ~=ih)h\1e;']Z{$Xh+Ykjq0rfSUa=i2i-Vrwaw[ry]˓.(ŗ'=iN./ k hֺ;̷ݭ̴1ɴ]ZnpޢDSN,Cţ6ɗ^n[ՙsƩ7ͥ]\v\Ȑ[~_w_h}@^yx3s":pC2{sxLIU}Kuyx>h8flip007kbqc_doN^Q[fblmj2oNL_QCld)U tQ>pT2xF_*b\:4OSxLSkPSp`f8NIacETGu`FCjDGsN5or|DedecCwFfopdza|vlz4^|pj|tхUOj~rp͂qcZ`evZyРɀ<<Phhk8a8aŌSO{[ZfLvd\539/ 9NgDq@5F\TXosxTTȉ[Zce"l̈́?0G9PG8>FI|9bˆu?yU6ZG}Ktt 6qgo=t>kYӀ㉉4ě"陎*tz5qleh/SNwFE\IU´J'ԣGC;aƨ;4Z}3vʨoȐNg֔NeِcjRCسT,ʶU!>u@?$jddlf.bdۦg<'@%#}4d˛_TۥdcCےb\|,}z4|7~AѝYbsORwmLk>xZ̾flip008mgtiaiqS`V]ldrop2qSLaUCnj)W'YBtTApyV5xHa*d^>4QXxNXkRXpbk8PMaeIVLubJCmHuR샧5rt~DgighCy4iosgzdwn4`pl ;R^ǗstڈdeĎu[TgvPvq‚<<}Pjhn8c8cьMNtRYcLkg`4791 :NgCs@0!FgTf{gTV҉PYʐVeynׄB0J5RG;>H&~:dֆs@yW6\G݀K} 7jio=v@mY΃጑4"眖*d*u~4k/WSwJI\NYN'ҦKC>aë?4Zw6vǫoŒRgԖSeדhjVCֶY,ȹZ!BuDC$pidrl.hj٩m<'@%#w7jɞdT٨jiCٕh\㦃,4-x~*|ؚmsn0,ٝq%Zqi$w(_,>ujCrZBH+ؙt} G FFz2&b_)be0c1)Z$V}+Un0X 62:%=:$|#4LOMJukK~ LwjwPÕ.('=fN// sc]Ï ̾ޱ̹1ʸ]Vl콄pުDOS,FŅĪ6ɜfn]֝PuȬ8Ψ]RtR̐U_y_h@^zx3y":uC2}yxOLU~Ouu{v>껇flip009pcwdcetObR_gfmrk2tOLcQCqe)Y xa2k;'[?tU>pyX3xId*g`;4STxOTkSTpdf8QIahFWHudGCoExN⇠5ux傍DidjdC}4lovizf}wq|4b}po| C{X[wч_ft\Rj{Xym<1zPmhq8f8fnjWIvVTkIdiu/?54:Qs@>/&?tTviTXɈTV|Sbvq̈́H/P.TGALL;g͆AlZE~^OԄK4hlؐ4"ޡ*UjL.~SOwGE\JUK'ˬGCݛt>6flip010ocwdbetPaS]henrl2tPLaRCpe)V u`2j<'Y@tR?puV4xFb*e^;4PTxLUkPTpcg8NJagGUIubGCoFGxO߉5ux჎DhdidC~4kovhze~wq|4a~po} E٘Pz}чYdvZQj|X{z<1wPmhp8e8eɌb@xYKsC\g(F.86P}:9$%+= vYxp TẆ\OƀRZurЄK%T*RNEILM:f @ZFy[NЅK ?dl9zF<pYĈԓ4"٥/fA+TOwGF\JVK'ȱHCb}N// vS Sز㮅Ȱͫ 9ɼ/ҭ$pW[Ƴṷ鮄ޙi؛eVO*ޙE촅oŏ^mِԤpԜ~Rckϻ{_|}Yb@Yx0u"7qC/uxMJUMuqXl>3Ruflip011mguh^hrR]VZkbqoo2rRL^UCni)Rp@nCnb@v\4h='UBtNApvR5x@_*bZ=4KWxGWkLWp_j8JLadIQKu_JClHGwR݈4tuwރDehfhC}4iufzbwo4]plĈ<|ݐy݋`~Xۆi{y߈4܈5khn6b6b6:kC{=w{eϏ#}J+:225v4('.I yjb1WVՌJ݉Tq M,U(OEMK9d;@oY_W΄K< &Kvk7mG3pӈ4pE`cmq~a[iZhbTsgGkiӢ)ä 2͌fތ>ғ4"צ/&ƈT)WRwIH\MYN'ȴJC>a>4Zs5voQgʡRe͜gjUCX,Y!AuCB$ohdqk.giηl<'@%#t7hcT϶i׬hCΟg\ֳ,ᡀ4~y)>[a>Wflip012elklWmmW"\\OnjTsbr2jULSVB`j=R xfِ#KL;.n45v{5~)'/O lc5U8JᇒTp;N,VIP|G}L:8b9@dZ`Xœ>P41'Jxm̑7mH>{qCoD`\nr}ZQni[d_hiIkg) 0e>4"/}ő&χR)\TwNIZQ[O&JB?a>?Zr:vpRgRcǝhj׵SAX+Z$EvGC,ߡnfdpi.il˸l<'_%%s<d«aU̷j&ѫjFɟg\%}ȟ:{|9xa<&tqyړ țxbux(˙B=4E<ن _0[_aJV3QPZTB7/&Bf:߭+'yiC{b1˞>G&T|ʬLҬL˷)1Ы5ڷ #7Ǯδ?fɿ>ո(ɏ"瞋%ݏgؖ[򈝔Kۃ]8axɝhxð{t্ۻgڴ¿{2$er@g}JQ@I~x(y"-uC'yzNKUNuCCCCCCCCCCCCCCCC(>> =^>Jhsalute001bmfm#RokX"[]HojKu[s1fVLKWBXl=MPZcPNRtSMBeL&nW'4vtlyDTfWUo4}4gwtexX|ug1Tdyʉ4xo]S h↺zyFCŏjhm6^e^D1m;}5xcِL&?/i'|,xu+(.M ln ^.Q7CއMo:L'S&wJm@pF58_4:eVYzSō>Pr!30*|Orl̑/mC>rqCnD\\mr~ZIpiUe_ckIjg=$*e>4"2nxȔԊR);^~UwOJZS\PJA@a??Zk|cQòa@̿k(вk4ɤga-z:w}<{a1&tqyږ ʟzbuw(˝A)46<و \1W]_KT3NMaQA7-&BD޴+'ziC}b<>G&PxwLij>ʺ4 Ų7 -6ʩn֮FƲc̺C޲Lƍ 斋*sݏXK|]oĜZ{ՙĬz{Ӭ"qһ2,Vd@X{>FA7Nsalute002Wh`iCjaT"TGY9kBpUo2^SL@TCRh): <7Jp! n{%n\OC:K7T?'[=D{}0Ai9<8}W#L*gSA=F*Xx#Wk(Vp>i8)LgWQLT7MtEJBYI&fS4iluLo~DHeJjFu4ZWinVxzI~w^5EntX{9Sߐp܌TLD _\ބty44N]ha6PEPEolR!}_wCRҒjq?<#au]w_x $ND(%C9w/܇Y8e;q="vC&P4[(Q.#:S5(EmF`K=>bR * (O9_Ė{p2=Ce4dENa[aqxa;jiKa`\fG]i) `/e>4p"/MW&R! TY|RwSKGZWOXM&HBy=a=?aZ78vpPgPcejRCV+X$XBv[EB,ȥlѧdd˷nԻg.fij <'_ %y%9:Vc_Ug&gFe\%{|9szw<{sa1Ɨ&lqs spmw—,φCڋ)څ4~6х< P1IPSAE3>SPt{FyFwFiFk{FuFwFt~FoFxFc~FiFlFbFfFhF=1;=[l>Ydjsalute003_Tg~`h_@hY\R*>V9kEqXo2{\RL?UCVi)/<,@~pyncn7E@=4[M='72Bt[)Ap.5xBmA*OEi:=4Z%WxmWk|%WpAj8c#La/HI/-KuyAJCbTHGlbR{4Y`u=csD_JhJhCk4NE`^KxZEwX4?pTTq{~]9/PIiy{5{4-{pQhV6yF6F7Q l4vIzCϑ`9{@ksNsYz)+NZ;.?H!\y;4^"/=Ea&s{T*'WURw+I_H\-MXYaN'vJCW>af>4LZ5vjogQgxRe{gjUCzX,kY!3Au4CYB$ohdqk.\g]i}l\hlcT~ihC}g\,Y4RlxDGA9520a6C9-&CD{y+'hizCld^ /3n(t'BO)y))vՌ^s8*ƾҰ-ĸlwi6Ⱥ3Eѽa!s,״ɰ2³u[ǔOЛGFԠ\𡲈|gz˜Whw`˦߶'\r}"TѴJf {.u.vA"bz4{ |9 wYEqPo3GjSHp4Hu4H|4Hs4Hp4Hy4Hu4Ms4Mw4Mv4Hs4Hx4H}4H~4Hy4H}4=T=:g> ay,salute004_Ri^j`=kYYT);X6nBtVr2|ZTL=WCSk)+<(@~ pzncn6BB:5[J?'6/Ct\%Bp*6xAn>*OCj7?4Z!YxmZk}"Yp?m8dNa.EK/)Muz>KCcQJGl`Sy4Z]>`qD`GjHjCi4LF]`Hx[BwU4;pUQdy1GxyOb9~V6&L?fyy5zy5)yqOhT6vC6{C7S n5 wM z=ё]7pH}gUsek87S1;!aA1P=e"'cs:4`"/>FT,bxP7&YUTw*K_J\,OX[aP'vLCW?af@4LZ6vjohSgxTe|jjWC{Z,k[!2Bu3EYD$rkdtm.\i]l}n0z8t?BJ33,n*Z/@7/&Bf:z('divChbU%3k(s'@Kĕ•&t)z,jۊSk8$⮻2Újϻ!sh~o9Li${*Ԓ2Ɠ[렠H֮HE|\z}sWiulϥμ,Zв"^ʸJ_}0s/tA"`z4z8{YQv]t3SoS@m4>s4?z4Dq4Cm4@w4?s4Gp4Iu4Fs4Fp4Dv4C{4F|4Ew4D{41==Dg>p^salute005iSi_jj=kc[T1BB:5eK?'?/Cte$Bp*6xJy>*XCt7?4d!YxxYk!Yp?m8nNa6EJ6)Mu>KCmSIGvbS|4a`uEctDiHjHjCk4MN_hIzdBwV44i"/EM],k{P:.X^Tw2KiJ\4Na[kP'LCa?aq@4UZ6vuorSgTejjWCZ,v[!;BugE^"salute006wUiajw?kp]T==X8nDtYr2]TL>WCVk),<)@ pnznJDB(;5rM?'K0Cts%Bp(+6xV?*eD8?4q!YxZk"Yp@m8{NaBGKB*Mu@KCzTJGdS~4m`uRdvDwIjJjCm4N[`wJzrDwX4=pkTv~1V}~`f-8~h94NNjy~5~5;~QhW6E6E7m nM wg h =ёv;Lgrhk>=S8;'aL1[=p".c=<`!?!܀h[ r6s<T We%4w"/R[e,t}P;9YlTw>KvJ\?On[yP'LCn?a~@4bZ$6voSgTejjWC[,[!GBuGEpD$r§kdtým.sitln<'@%v#%8RskeTkjCi\,p4il9_qhaioXZeǀR}ǫƪ(Խ+pе$wѸ\p0.Bw@0hC|u }y7w9Z%@WC2UPQr4Nw4O4Wv4Vr4P|4Ox4Yu4\z4Wx4Yu4V{4U4Z4X|4W4д=#=Lf>v^salute007{Ujbk{?kt]TC=X8nDtYr2]TL>WCWl),<)@ pn~nPDB/;5vM?'P0Dtw&Bp/+7x[@*iE9?4u"YxZk"YpAm8NaHGKH*Mu@LC~TJGdT5p^YdvD{JkJjCm4Naa|JzwDwX4=ppTw~ X}"~af18~j98NPjy55@~QhW6E6E7p nQ wk h%=Б|;Lgwhk>=S9'cL1[=p"/c=4|"/Yaf$t}ٙ;?YpTwDKzJ\EOs[}P'LCr?a@4gZ+6voSgTejjXC[,\!LCuMEtD$rħkduŽn.wjxlo<'@%z#,8WxkfTlkCi\,u4nl9bqha*,{܇d.:82}Ã|ʹ-sn9jM$*xz2q„XqA썬>knjOgi~R¬(Ϳ+rʷ$}ιar<7J~@9m Cywy!v7u-O,5MC'LWTr4Qw4R4[v4Zr4S|4Rw4]u4_z4Zx4^u4Z{4Y4_4]|4[4%==e>^salute008xUjbky?lq]U?=X8nDuYs2^UL?WCWl)-<)@ pn|nMDB+<6sM?'M0Dtt&Cp++7xX@*fE9?4s"ZxZk"ZpAn8}OaDGKE*Nu@LC|UJGdT5g]WdvDyJkJkCm4N_azJztDwX4=pmTq~ S}~\f,8~e92NJiy<<<}QhW6E6E7l nM wh h =Б{;Mgthk?=S9'cM1\=p"/c><]!=!݀e[ t6t<V Wi%1~G0'4`:`E'yKj~_}O!VMV$Po/*4z"/V_`$n}ٙ;iɌIhiR|ȹI)l·$~ɺan<>!J_7y}Fxtv< ~uwVyMI^pOFQjN[Or4Kw4L4Wv4Vr4N|4Mw4Xu4[z4Vx4[u4V{4T4[4Y|4W4!U=L^=6f>[p^salute009mTjakn>lg\U7=X7nCuXs2]UL>WCVl),<(@ pnqnDCB#;5iL?'D0Dtj%Cp$+7xO|?*]Dx8?4h!Zx|Zk"Zp@n8rNa;FK<)Mu?LCqTJGzcT~4W^uJdvDnIkIkCm4NR`mJzhCwX4=pbTo~1V}~[f*8~c92OLjy~5~56~QhW6E6E7f nH w_ h=ӑk;~Lgihwk>j+FhXsalute010OiYj9kYU"Z>Y0l8rMp2WTL6TCKi)0 <-Jp n|naFCCB8L?'`3D{~&BiB29}]C*kJ7>FXxXkWp5j8Mg\HLZ,Nt9x%އ\)^;s7w=Y'j]! TR0y>f[2$46O>WŖp-+I]4\EEa^Yqqa2kiBb`TgGVi) yi/e>4s"/U]&R) YZ|SwXLHZ]OYN&IBz>a>?fZ@9vpQqQcfjSCW+Y$]Cv`EB,mƤedoɹh.gjk<'_%z%B:\d`Uh&hFf\%|~9u|oEHJ831/a5B7/&BD+'ki}Cnb;^3&'`qAœK)+Ԍ L6[é/Ѭl#h6Ʒ4mھ$ܾ,ޥ0ǦuᶍOÕGEѐ[sWv}ϥ߳(xr!x״z .>"NB:|)Dz{kpkFjoxS@O K@BFCrou4rz4q4hy4iu4p4q{4qx4n}4s{4ex4i~4j4e4f4h4>>Y]>ySsalute011`nem#MojX"X^BpjFuXt1eWLFWBUl=IPv")2,|Osk͑(i?>tqFmDZ\lrZDpiQe_akIhg=$*e>4"2q{ƘьR';^~UwPJZS\PKA@a??ZncQƺa@l(Ӻl4˪haÅ-{«:x~G&xyLŻ>ʾ7 ź7 %ߝoʪlۮ7ɳaλDLč .݇w܎}A|[ԐnǛgݖʬzީ ĵr߹ 2+Yi@\@IAAx s'oC!szEB@ErCCCCCCCCCCCCCCCC=>>Be>xwN!W]taunt001]kbmJliV"VY?nBtTt1dVLDWDRm3K Pw#/ (Khkő&p?=npFlEXakra@niNd_^iIgi) /E>4"2r&R)i~bz\uVa]dXUALbJ?gwIx"oī`iε^eٷt]Aa'b"RxSN'x:pEyq*uvu9 (`*#%tIxjQkAv'v5ڻqc̊|ŵ;x~냓_cZtaunt002Yfgi@gdRu@Q8lEt\s eT+BXF[m*5<1@pnnJ=rB/U='4>t(?pr00vK%R>=4!UxWk"WpBn Ka}ME},GuEKC\H&lS4argzDLgMi?p4NycIzDu[5 g܁Y{u] Py@E](KTɌ6%_[W9[8?brVqtra:iaQcTchGRi) _u2eC4"2sw(T*Вm~hzav\aag[ZASpO?zsqO})oǥfiұde޺x`Ac&d XxXR|;tE{ t+zyx7I`)),nOroQnJy'y4߿tcՎЃη;n;_w|ha `(tcqyk}yippew,t`~C.}9t6~;{= z7}|?A>.5&$a*C8-(FEM+,im}Fmpw Q.ȼ('t{̿QM`N.)׋wLǓ֋Rу‘!ӻfi89yN $֐ ٦Ÿͯc?=ދbŘ}sĩ_±ܩQI'紝j{2ZmB\pAKA@vx u'qCtwIFJHsُsޏsݏsˏsΏsڏs܏wӏw͏w׏sŏs̏sϏsÏsǏsʏ=lֿ=i>=mg@ݿtaunt003[hjlAjhTBS9njFv_u iV+EYC^o*:<6@pnnN?zF0Y?'7@t+Apz31vQ%YB?4"WxXh#YpDp!LaPG.IuHLC`J&qUɅ5_f{DNjOkCq4MbHzCu\5E8Pl {X9z> [ڀUtg[CSH"Y>>)`,9D 3 ~:`#`>U_,LPӋ?#gXY4›"û/f,yT3Ցc_xWtTaV^RRBIiF? gmC}oĞ^hѨ]eܯrZC\(\ MxMH'w;o6vo)rrqö9(_*%lB| liUr&qFݴn\ԋ%΅ܳ9wi;Fs|ea{ H(a`qbffgdpZ`w,`G{F.x9ooy d}s6 a/}e8X|:>&5a"C: (FEorM*,dmxFhpf@.̿('zzNLgN/,|eF FvƗ!DmԊ =5g>eBOtaunt004RjZjF'VxUh$Tb4go(KZVN9NtFIB^K&hU'5c{i{FAdCj4q4SdOzB|wX5=nRz;kWԎ~kه^=|~@aT׀mox5 UW#;L1.<>`}(W|>P~:!=HLZWÌ4*i^4_7FbzZqqa2jiCa_UfGXi) o2D>4"/{(~T+x\VxvPtJZvPVJGB@i=?ng\>}oTgRcfNBR(T wFxwF@'Эj:ԭbdjb)hhg# <'_%}$\>bb^Uf&fFc\Ā%{9ym;kw|ga n(dqkhpzeu,lzF~.y9qoz;~B =}DD>35,*a/C:-(FEM*,hmyFkp a3('zƼSZi).1Yē;^j}ܹ9ʽo9.zڵQ{ ̀ ζqдcKIY/5>h@^taunt005]h ac-PhiV!p\bGdjIdUc5eNINI_UZ>w]p||Pe|=/ySaa*n;Kbf|CeDV\mcrqZHeiRY_^_Iaa)z!o/}e?4t"2di&xT%1g`yRybT}uFZaUwTtH}AUk?an:ACgJGWdMgIc[BUK&~P _Jx^Kj@Z8Qe[2R=bc]#e<['g_Y%P$JH;VSU\'\FX\w%|pv:xmp;v~ja1(iqolpjw+}vCz3w9rox;{V1RVWAL5HGaJC8-IDEM+,lmwFnp1z >G&nyVbcL=. k͐5t֭ 7ƣ8p|ʬ/Fľ+w̵!jjmþ;#~܃i|֊]w}s鉕Iw`9ychyihuaԚi̴|cgϪiur~uUX|`Tu?@}U={x%y"'tB#yxTPTTt 4`44Lf4z44d4D4zt4i4C34k4ǃ4'4G4[4M>K=>fV>bdtaunt006k_ nW-^`vO!{i_VYlWVcU5rFI]?UcL>tkUsDxJ'4xsvmw}txF^PWaZ4|w5k~usr}g|z_grnr0^rhcFڎvoc [\1z5p2[%&`+k lVjmet CNXEQ:Y p8xF&PNuL[BjE4Ed7AcYW{Us>ypPm|uBq4W#~Qxl|7nDUtqBpfb[|nr{ZWZi`N_lUIlg)!y*rex?v4}}"|0m}rtGT%8q\JyiQ}z?qiRNyB9Un:aq5A>gOHSdDg?\On7UC&H dGydIn<K7BfL1DLXY Q%b̵${̳}u~zi.Z]فebՈ]KၑQ܍Z]sYl=s_bq|œDmsXĢ}oŶ_gȮvwʉ ^_{`]FFwUD+v"+q@)vxTPTUt14n44[f40{44r4S4u4v4R34k4у4'4G4[4 O>P7>V>/rF9taunt007jc m\-]cvR!whaT]lU[bZ5rII[B_aQ>ukvuPjlBi4T%}Somz7nE@mqCpfb[vnr|ZU^i_S_jYIlg)!u*ve|?{4z"2jox&Tv$8n^}MyfR}xBqfT}PwEQ8HfR2IL\]V#cθ'rδuwt~od.TZ؀e^Ӈ]H~LڊW\r`h=nf^qvEfzQà{eƷ~f^ȮnwЉ{[\`ZDDzUBx)w"*r@'xxTPTUt.4n44Zf4-{44r4R4u4v4P34k4Ӄ4'4G4[4R>o7>\>fbtaunt008fh id-YhrV!ke`PejQe^em}PbmFm4q"/af&Tk%c_uRy^SvrGZ]TtTqHzBUi?il:ADgHEWd}NgJc]D@L&{P \Ix[Jh@']8Te] U=cd^#e<['g_Z%P$HF<XUU^&^FZ\x%xrx:toy;w|ta x(rqxuptw+xC.9{o;_ \|``AU5QPaSC8-(DEM+,umFwp1l>}G}'gnJX\==*} a̐0ihݨ \k3rΠ9Sܦgͩ%p®Cs˻,cβ"]uZʐ[ül1b!bpb҆\TwSރh~Gjs_w5heWqidXwIǘUɲneRɨ[wfo cRU`Q~=>}U:x$w"%sB"wxQNTQu*4j44Vc4)w44m4N4r4r4L14h4π4&4E4Y4xT>F2>e>s3vGtaunt009yfjkiwYjsqW"\b\QijTmam1nSLXPB`e=yc <{aJqOioR ncUm^kFMl<nmA(\^F{jUAiKb<}RVjo*Zwr`=FnLVxuFUh}ISbReooMKZ\kPZYPt|_IBtnK&|tU'z5_quVu{Fz[b\i4vz4xh\reezm\zwj0Ykfwh;PBՎ]vهF`~]XIhڀRyxw5u5Llihum6rb6ub6N;kCD{L=vBdǏP"}eH+k80J2L5vL4m',i-Ie y_njxc`PXou4e"x/VZ`(iTa'U]hUxRQthIZRQhVhJqF@a@ifsS5qOqNatQC}:|-|(~FsEoghMu+o,mtm{Fsvp^ Hw3iIl'VXAAJr)u)j/^Aɏn1Gaٯfo9iȩO[˫/aFcȽ)Xа$FCKʸt霅qlوigԎ^gQ_戝zLyځf:bdS[[mLuHғJѬ[bIУHuGS O!FL_F~47~@2xv"rBvxNJUMu%4g44R_4%s44k4J4m4o4I04d4{4%4C4V4U>+> Di>.}/Vtaunt010lij{okkZjhsV"RaXyTkjXqfq1wrUL\TCei)yb <{`JqMioP ndSnVjCGi7fn@'U]CteT@iF^7vTSjn*\ul`>FeLVxmGUhuKUbWioiMKZSjLRWLutaJCkpK&qwU'r5XsNwsFl_e`jFn|4piSt]fzb^~w|l5u[n`i|W >1ӏKxم7`|LXׄ8i؀?{xjXPl1r&>7kR6k[G5BoWi4kp7^`bMmZL|a{Ukauab`{lgGckim)d @WM kDs>m4]"p/NRN(WTZ)K[_VxJOt`JZJO_VaJjHBZ@i`=?Ig:<}YogTgnSbuh{PBnS(hT KFvKF[@'lddld)figiuh#g <]'i_\ %S$:<Agdo`Uvg&zgFue\t%`}y9]|Wy;>|cuaY ?e(KsqLwOO[vpHtu],K?hFh.h9g{oa;MT\ KY}M^Y^>aS5_O_MabQCj:i-i(kF`E\TUMc*],ZvmhFaxpL7j3^(c'LL@6ANd)f*[2N2Ǎ^ 7Zٶhl:aưMT̮0XEZ)RӲ,;:DѸs穆tnܓihחcoNdN+|ڏf髋]dRŐ]SmFHܖEحQiEפ@:G G!?G_?.2@-xv"rCvxLIULu"4e44P^4!r44i4G4l4n4F/4c4z4$4B4U4*T>)>&j> Œ`ztaunt011iiixokhZifsU"P`WvSkjXqfq2vqUL[UCfj)z` <}^ArKipN nfQnUiBFh6fm@'T\BtdS@iE]6vVQlm*]tk_=FdKVxlFUhsJUbWjogLKZRiKQVKus`JCjoJ&owU'q9VtLxqDj^f|_jFl}4niQt[gz`_wzm5s[n]i|W ?1ՏKyڅ7a|LY؄8jڀ?|xi9f<@ckhko6dc6fc8A:k7DtB>u4fƏL#{dK+d; K3F5uH5p(,k.Id xcWnyzb1mYYWՋ@Jׁ6TАMrZN%VV+EPXFGMLW:^e WAoMZB?Xj>VOk1q~&>5lQ7kZH5@pWh4jq7]abKnZL}axUkar`b`xlgGblik)c AUM iDq>k4["n/LPN(XTY*J[^VxIOt`KZIN^V"`JjIBZAi`=?Jg:;}ZogUhnTbti{QBnS(gT KEvKEZ@'medme)eieith#h <^'k@]%T$:;Cfdn`Uuh&ygFte\r%^~x9[|X{;?|cwaZ @f(LuqNyPO\wpIvw^,L@iCi.i9h}oc;OV^ M[}O_Z`>bU5aPaOacRCk8j-j(lFaE]UVMd+^,[xmiFbzpM8j3](b'KK@5@d)f*\2O2ȍ^ 7Zڷil:`ǰMTή5XE[3Sճ,:<DԹs窆vnݔggؘ^oNdN=|ېf謋[bPȑ]QhDàHߗFۮOiEڥ?®;I I$=E@=-1@+xv"qCuxKHUKS4}44op4R444j4~44iB4u4484U4g4T>n(>io>[taunt012iggwnhgYgfrS"O_UuQhjVodo2vpSLYSCch){_ <}]AsJiqM nfOnUh@Gg4fl>'T[@tdR>iF\4vWPll*^sk^TMj6mR8k[I3@rh4kq7]acKoqQawSiir^``xjeGamij)b FTQ2hDo>i4Z"l/JOS(\TY+JY_UxJMtaIgIL^S"`HjGB[@iaiV5gRgPaiTCp8p-p(qFgEc[[Mi+c,aymnFg{pQ <l3^Ib'LMU7@g)i)`/S5ƍb1;[ڲjm:aǫNUϪ5Y¯E]˺3T֮,6(>x>F%Jtaunt013kfczkdiWchpP"Q_RvOejSkak1xnPLVPC`d){] <~[AtHirK ngNlWg>Hg3gk<,UZ>ePTPMji4Y"k/JN[&dT[+JU`RxKJtbGaII^P`EkEB\=ia:?Lg<8}\oiQhpOeuc{LBmM(fN LAxKAZ<'g;`6f _)gcebsai <_'l@^ %T$;7Cg]oZVub'yb?u^\pz%]uwx9[rh~;O|pzaj1Pr(Zwq^|`]kzpXxwm,[PvCx.w9w6r;_ga1^]}_bkcAsX5rSqRatUCz8y-y({CpEmeer+l,jzmxFq}pZ Eo=bId'NQU:Bk)n)g0[;h1B_۪lo8cǣQWϤ4[§eb˲=Wק,@EսKװ"v皇y#kއgeٌ\kNbLwۀf癌YbMˉXRhDƙG␓JަRaGݞBŧHV Sھ$;D@<+/w@*~xm"iClxEBUDb4~44u4a444r444qr444j444LW>$(>>.ja Ttaunt014ne`}ialV`koN"T`PyMajPg^g1{kMLSMD\`)|\ <~YAtFirI ngLlYg<Jh1ji:,WZ=fO:iI^2vWNnh*`pn[8FeHNxmANztDMbN`oiHDZVhESUEv[CCnkD&trM'n4UvuIzm}DoX[Ya4i}|4jjOv{Xhx`]ouyjv0rYw_gllUxPMi5m q&xK>oV9m`I?DslFqqEcbaOpqea{NbiwYY_}e]Iemik)c \Td2gxDm}>i|4Y"k/JN|f&oT]+KR~bOyLHvdEaIF]L_BMkBB^;pb7?Ng=6}]okNiqMev_{IAlI(dJN?xL>Z9&c;\6a Z+g_e^s]!j <`'l@_ %U$<5DgYoVVu_'y^?vZ^pu-]pws9[mu~;\{zav1]}(fwqk|mhx{pdxwy,f]C396;lua1l^lbߟxcAX5Tߊ~RaVC8-IC|Eyqqޞ~+x,v{mF}~pd Ps=fIg'QWT@Fq=t=o.e Dp[נ(FNշQת"w琅z-i~gdل]hx`Ltw^挌YaL˅ThFǔG㌓NޠVgJݙFƣR` [ڶ$<D~@<+y0r@+xxh"dChzB?UAi444x4h444u444t444444,X>)>>̾Dtaunt015rd\g]oV]onK"W`N{L^jNc[b1~iJLQJDZ\3}Z <W@uDisG ngJl\g;Mi0mh8(YZ;gN9hK^1}WLof*anpY6FgHLxn@LzvCKiK\ojGBZZiCVVCtxYABqiA&xpJ'n4VwuJzmuDsXVWW^4i}v4ij{PvtXh{xb]iuzir1rXrbgfw9hАTnzSciYYli}ywFyFOalhip6rcewbEVXpPM~i4k1j&nJEoZ9mcI?HtnFuqEga\Sprra~M_i|XU_dZIgmgk)d jUp/isemu>jw4Zz"k{2JRrs&{R`+^Z~rRz\OtrHZ[QpVpLzG@k@ao>>NgJ@xcdzPgNc`lMAR(xT!\Gx[HiC'c:\Ed ]){c{dck4[&f``,],IAFYQYAb'c9_cyt-ji~uie~kGj'U]THKv={=x3p Oy5Xiۙ os6jȒY_Е?d˜fnˠ>`י(MWձXפ"x煋z%fvgc|]dp^z~yKpm^8YaKˁXhIƐHSޛNݔLŞ^Żlɹ dٮ$<Dx@=,t0m@+sxd"`Ccz>p444z4p444x444w444444QY> )>6>7`taunt016vdYgYrVZrnH"ZaLL[N_[^1hGLPGDYX3}W Bti?&{oG'nz4XwtJzyloDwXRWW[9i}p4ijuQvmXhuxe]cu{im1sXmdg`4vŐazyo^csXekw{y{F~FVblhio}6wbe|ae_YjRNxg4i}MtpCxpDja\Wpr~ZM[iXR_dWIilgl}=e$xV{*imemo>jp4[t"ku2KySl&Rb*`U~tMz^JttCZ^LsRtH}CAmpGm&ZdRPP{L>3{1Z4enې p#u6mȉ]cώ?iftʖ>e֒(Uaө_֝"x{:zy%dpgavX`j]t|oKkf]t8Z~aK}[hLƌ{JYݕ"`ZRݐRř|jówȮ2mإ,=}Er@>~},o1h@,nx_\C_z<9U;uw444|4w444{444{444444 Z>**>|>>taunt017xeVgV#uWWumE"]bILXN\[[1hDLODDXU3~U q_i?[V@|WYeRNrfzFfu<[&aVToa8miGARsq~C{ofm`[Zor}ZMXiXOfdTLklglv=ez$W*hgeliAij4\n"ko2LtSgRd*`N~sFw_Ctt=Z_FuLuB~=An6at5?XgO4vkd{DgCcTlCAH,}J!`;v`=o9'XQeZ S.|V|XXw 5k'v`l %e%O6R NQNAV(W9Tb{g-l]hjZ{:~ya1&tqx xbtw(A)46< ^1Y^`JV3QPaTA7-&BD+,xiC{b5t ~>sGo&_jRYVK>?1e4prڈ;pw-uxEpǁob gχ?m^yɍKj֊(]jҢfՖwr:yp%ajs`pX\f[pxfHf`]j6[y\Lz_hPƈ|M_܏"dqW܋Yē|uƣ2v֜,=xEn@?}x-j1d@-jx\XC[z97U9r~444~4}444~444~4444445>0>tY>m.wave001bnfl#TojX"]`LojNs[q0eULNUBYi=PnAlaHoa>bB(UJ{IEhlW@}tA\*bS@FE]>\z@ZiKkoCQqcRQUtTLBdM&lV'4rvquDVdWWo4x4e{qdxYzrf1Vcwˈ?򐠂wo]V;fxyCCŒhhlEafaD8lAԀ;xa~!HI9.o03x3''-O jl\3U7HۇQo9K(SGLwC~H86c4>eWYTō>Pv?<%}Vf{5mEAkCoD^\ir~aMoiWd_cjIja= *e>4"2s{ɐ։R(;`~UwRtJ[U\PIA@a??|Zl?vpRgQcgjȯQAX,[!HvJE'՜lٞce֩n ڬf.jm±l<'_%%mAtaQ_@ðj(ǥj7fa-y:u<}c1&vg{Փ ɚ~dvw'ɘA)57<׈ e2_chK`.\Zc^A9-&CD;Աӭ,$~p?d0>GS|LK3 ~4׷ 6Ǭnд.ŵD+ֻ$đ蠋-gݕXI`8›\Ϛgūtؽ\ڵt #_i@ayEK@Ezx&{+vA&}zzOLUOu}CCCC}CCCCCC~CCCCCCM9>9>9a>wave002Zi^f#MjbU"T]EiIlUj0^QLHOBSb=I Z@(LH{BCigN?}k;T*wZL=D>Y8Wz;UiFdo=MqZP~IRtNHB]IGdR}4hv{l{uDOaPh4o4]g[xQyw_0OZvʂ3|w~r8U؄R ]݉qk?Á?wameE^D_D3l:}5xW~BI6.),x,$')O jlc5R7CهJj{P{31#{VZt0mA>_?kDZc`qycGiiP^_\cIdb+ %~e~>4"/|‰҅T%;]~RwOtG[SXLF@>a*.91˃f _c[iKd/`^eb>ٵ5ָչڶ>ѨF̨;'ד |p=62LVyȎ{LL. ϒ3ć޹6Ķn̾24/}Ҏ巊 \T+Uoɢ^֠RaƬfջفgpx_hqLPy@Krx*{".zvB*t{zR{OUvRut>x>}>u>s>z>x>v>x>x>t>x>|>{>x>{>>*(<>g>O.}^wave003\eab#OgcR"U[HfLhXf0`NIKLBV^=J (MF|DAifN>}h<U*t[NKq[NJP{PFB^GGfO|4hvl{uDR_SdFo4]h[xSxw`|5P~n\ú3|풛u~p8UՄQ ]ډpkǀ?ʀ?v`hdE^D_D4l;}6xXΐCI5.+.x-$')O jlc5Q9BևJi;E'M&E=B38_5:EP_Mv>{{31#{HZt1m@>_?kDYc`qwbIeiS[`^`Gdb) %}f}>4"/ÈՃT%[~Pw~NE[QVJ&D@}pLqKc_jȡI@Q+T$~EvF@,׎bڐZeښd ݜ\3ceţc- <'_ %%f?i]YUŢa&ɘ`F^\z/vƍy8u~1w}eӐ &paxĎߞ}6qzؒ'}~>*.92Ƀg `cZjKe/a_ec>״5ԷӸ&ص?ϧFɨ 'ב |o=62LGH{ÍL+0 ɒ5~Ɉdúi 42͏l ]V)Jpϧ^ߨSŴZͯfؿW݄҃nwx_oqQUy@Psx.y"2zuB-uzxRzOUvSus?w?{?t?r?y?w?u?w?w?s?x?{?z?x?z?@6>{e4>h>j|Uwave004cefb#UgjR"|][LeOh\f0fNKOLBZ^=R iA n{Dl{bD"bb<c>(xVF|K@h`X=}aD^*ndU;DFV@UzBRiL`oEKq{dNvRP{VFBeGGlO'4qtzv{DW^WdFv4cqcxYwue|5U}lct4쒏אso^SЅeډvyFFghi6^e^e;k|F|@}c͐s'HL65e9w9}q9~'(-Huj\ 9xP8H։Tl:K+RI{QvHMwN8_94;"|Jwh6kDCzlFkD\\irzaMeiX[`c`Igg)$/fC7"0~DŽT(|[OvvND[|PUI&C@}pLqJ\^jH@O+R$vDvzF@,Ȕ`ʕXb̠b ϢZ3bdb- <'_ %|%b?d\XT_&_F]Zy*vx8t́1zbɔ2ג&sg}}ouzΕ(߇Cߏ*58،1h2ceqi>b.^\b_Cָ9Ի#ӽ&׹CˬFƯN֒(͔'|n?ـo1>G&Jy|>=0Ə5΃nh170y\B&0ClѰeUɴ\֬Pe˴P| hp_h{LP@K|x+x"/tB*yxROURu{F~FF~F{FF~F}FF~F}FFFFFFoi4>fV>#qg>wave005hfjd-XhtS kg[KgjKj[h0lOLNNfX`?Y (h_FwOAhTe=}UJuh)brZUz@SiHbo|FKqlpNfZPYGBmHIuP'7uhEZ_Wf79jnvlx_wuj~SLKGNR.=T5HD?.DL[^8>$LnoN׉hboӋfU=n\>YfP]GTc]An\8n=io`^_m>vmX6WX#}@^[@zlIDbDjea[m{~gLggZ]_fbInq3$"{0cC7!0otIYY.n[|OvhN}DnQUI&B@v=rha>'Twwave006Lk Ji-:lZV!qR^)k%n6m+Rf2e?D |]6T)lb&@>E~,Y}XzVg!fp*Mqs\QjERa8aJD}K\FTŽeo+IRPDN2o0g;U8\57?9=J$~#B} 0n9t1m]Aہ_ZP֊WQ?`RCQi DgIKi'GAk:nV1scU]YmuC|r5p06)U^~EAvX@ccmeIasMir^g)kg8`_FfKzYr4%{"zD>@[>wave007Io Dn-:oYZ$V`'o s/s;KW>(Uf+k4KVC+PI:Dsq_?|tAY.i&BAe/\}#Zw!Ygkp.O`SLT~<,lF3n@eX|Q=m{o>z\W݁flOjZmEdiD[,NKU,Cgx=mNPrihYf'tCQ$TiQ)``pAh{U]\vicJZwZyTq&ps4d^@jKb7*klڅc|FE!5l^R2^`RvRGU"X#L(D_>q~=+΃O iDaEkՊ{ á anɚMĆ.UB VYx^l_8܆O+y3!ƄN,ReEzWRIU^dH@Fm?b\5xMݜ >W>$#wave008Kr Dq2=q[]$[a)q!v.v;LZ>+Xf+n4RXyShV{SzvxjYՁ~nS|SaMg"pjm|Q|IJԐYQ|2\cExmI$HI 2E:@( thgPwZkj{Tj_dh}fg*]>c)Gv}HkKlmzYq,uCQ#sj,`~EUwZjcR[wjMݡ)ss6g^@m>nȊ7ē.^-`ڊc}F6#Л<[LON3aS{SGW"Y-M(ŵE_?qDޘ3G`,-q@A?[#OM^M\LlY Z&=?E32r.f.qYۂu XcsCu?Ē=s&à,'ZeQEXՈfۆؐ$Pm܆ M#>\"2FH{FyBnrGk=XF7-G5Tai-R~9SMK?>dR>3i \wave009=u 5u2/tO`$Qctzz;>]?Zfr4Hi)Ivx?zHoÖmxWu*kCQ"sy-`FUy[a\J[vg@ߛvs&j^1q>j΀7ˉ.H1!JnyctEȀ6§#ؓ<B?:O3cU{UIY[-O(ЮF_@q>DqF|iPʔM[؄byJ_T=X*KME+|cn~Zaf]4̘hקjg2<'`%%HӢ`ۘ[UdLceۆa[眀.˫| ozk;$Κl<&C<"%@=塎6E:/< ^ b g q k#u lnuz_oiivgm^ s C ][y &+E"7ᖫ\ݡFނb GcbCgF˅=c(͑,ɔ,Fe=dBֈOކ~%;mq J)E\!)::1x-maIP?AEBt*6I:VZgn2>SqL"QG6@M$FKb6eM.nTGb2N=n~"^}`"b_[:z=wf6| PM M`RtbZYZ[ZvZrZ_Z]ZgZpZaZZuZpZZ|ZxZ=>d>Q>p-wave010Eu >v27uV`$Wc#u{(|;G^?%\f$s4MPk|\}Rz0YfGfmA!GF .D6@~~"u|pZhqBwcXpkIj_yEjqBe,UK^*IuxhČ7.S0TocF6!ɝ<K>@O6ncUtUIY]P(ʳG_@q>DqE{iPrƙN\ҊcyL@V=Z%K{MF+en\ah_4Ŝiϫlh2<'_%%G̦`՝\UeLeEՋb[ڥ.{Ռy kC'ј&lH /C?┧*2K= 衟;(FF*F&^disl.!_px阇^h :$C!\*[(y6 9($E-4%䖾\rUlq Xfw>w?+{&$'[eSEUncڇؓ#Pmކ R*Fi?WjW{MhTb儻&w)i4? JQN/^5f(LQ=tfHm"r&JDdFhZ7{~2g݅aov"^v["^_X9z">O>cٔawave011NvKw->v]`!Yd,w'}6};P^>.]f2u4J;kSAYb"CeNe S=m;pj.gqUYdf"~>Pq@d:5-Vm{S:xe?fmƓwfO\}RsuU,yh9lfFt>`?%r#t9bC7!0r|iIYSK)dVvUKZ_S(J@Aq@CqrD{pRrQ\gyůQBZ+]%KtNG,̎jnБbbҞn ֡e4loðm2<'_%%vF~aQ__ïjLßk6gZ/zw?Y>ӟS:h XLK㖿D^q&B>[>BKpoint001`ndn#OpjY"Z_DpjGuWt1eWLHWBUl=LG&Rxv>ï>Ǻ?1Į4<%dȦoׯ?dzcкA(ʒ":*܇zُ~|JzX߂6zgeѠ¯hnϲ|l"g}{|2,Tc@Wx<EA|R;x#$point002PjWj;k]V"xFZ.kj4pHp1XTL5SBFh=9 <6Ji n#lOD`N9R@(|;E{,Bi]>:}r#L*V=>F$XxWzVb0io"MZ{QNv5Ot>JBVJ&aT'y4y_ucbrD@cP@k4i4Ko^Hz?zrQ08lNxw9{n~ސbیr?݄0ՅwO߄gxx4x4h~OhS6@d@en h[}UxaIؐHkER'l73!!{Ex;;8$=9Oi)S{aKsRj"v?"%/6֊u(݄WًYC%gE(G;%G8>`"EC:fu=`Q@t>}|Pjzd=b4apTriZ0kaCa_ShIOi) w/e>4"2dt&uRk8odxc{XZdfZU@PiLCKsZT}{(p`gƍ]cލpl߬X@_(b ~YxZQ'q:ier j=ŘuŮvr#7vI Y)y),ZTH̨gQݡgBq(r9ߐoaô-zɗwe:o_a΃1ՄI\qc `i^v҆+"{qBv3q9i6rA-5&$a)B8-IDۧeجɶƯـ+Ά,`iqCcb1?I'vRZēa==5 f+eÏ~"ۉ){ւxz֊{wzwJwogsQךvêz[׫`w"}gqdչ2,GBIi0z=n|C0dxrkhhF`lxb!htQpoint003QiYi:i_U"fEY.jj4oJo1ZSL6SBGg); <7Ji n#loOCIN8T?(l;D{+@iF=8}d#N*yY==F"WxVhUb1ho KZjQLd3Mt?IBXI&dT'x4rZu[^pDAd@iFf4Fh[Cz<|uO54nMzv#M?'%0:2QE?;rD^6U+5čs>uzPbw\&+]&5%M2LKi]*LESx4R79a`NqfZ0iaDaUUgIKi) mp2}e>4"/[i(sTd8le\xdYtPZeY]RM@GiDC9s7H}mpYgVcՌj۬S@X([ cOxdPH'l:dem e)mnָk#9q(`v*e ,7H/d̡bUڵj&k7ՐiaŶ%{ϗ:ya;ml[a1r(Xq_\iZv+"pxnCs3m9d6n;t 41077A%5a!Cٵ8ٻ-ؿI۷De}+,\hmF_b P3I'biT5G))0 6ю1Jۥ<*ԑpn#ܪ5˳dֽ?|,@пXa"ԉ)sӁxoӉxvt􂞺x@yvÁnPs9ٖbézA٧N^"fg^Dص] z,5PoB6h!u2g{C^xhg]fFUixM9GE9B>;rV4V4V4V4V4V4V4[4[4[4V4V4V4V4V4V4=1=N1point004[jaiEjiV"dR[8jj=oQn1dTL@RBOg=K F/Xx%Wz*Ub9go.LZf_O_BPtKJBcK&mT'5jfuNi{FKcIj4q4S_fuPzHzrZ<@nXx1K|!xؒliڋA8<׆AKځQiy558yXh`6P7Q7y nU xd h.<{nO=A%Vwehikv-"n,ov }rsE%jT>o,qtB:{!ׇU#ցs_ i9"j? G$: G""5Q1'Fi+}>kPU/,/~/l>y,Jo1+@T3g7Je^UZnpa:jaMaU]gI\b* Ibb-e>4v"/N[j'T&}boRgPceɳMAR(T JFvKGrA'h:`di a)ghf# $`]U¼d&ʫeFca~%y¡9{xr;Qqob N&qcgyktjnpkdw,eO|~C)5{81wG ?}FKK>.64c:C9-&CEuw,$np?sd^%)o&}E@T*+*w/Y ͎x2t<%ێoenS#Uި5Vΰdfܼ=I,ǻ*"܇~*M}zH҅LrFuJXr[~o+g В;¥kѣ&?i)б'K @$%?yf$t~|(pyFixpbeb4^exQ5GI6D C7rE4E4E4E4E4E4E4K4K4K4E4E4E4E4E4E4m=6=pdg>Xpoint005Vj\j?keW"UN\2kj6oLo1`TL:SBIg=FwrגYdڋ9-рe79DہDcy5}53twTh\6L7N7vϊ`sy h0/t =Jshk63":Z*77UT$~A;aۉIӀ_Z ;|?l|)1M1,0e7`Y!z>ZPJ~?$B-F+B5$;M~3d7{EeQOZZka3jaHaUXhI}Xb|*k <SP2~e>4c"/ENV'k}T3 @[~fTxOiUjJ|FB[>ig;?4g<}SovQgPceMAQ(zS >Ev>E]@'h:`dia)xgygf#p <\'v@X #G$<%za]Ud&dFca~%kz9dyun;Ckkbr @&\^gbf]U}jpX^wx,RAw~C*5x81`{}A m8}m@[FK8.1.c5C9-&CvFn]_,v${jp?pdM!y)[&g<6T'j*n*_/H ̏b2^ߢX=g>t/}Qpoint006QkXj}:kxbW"RI\,kj0pFo1[UL5SBDg=B<>Jx iu$nb)lVUF;W<qXB(S@G{j.Ci9E<}F+nV*UbwA?Fn#Yx{WzVb-hor"MZTWPO8QtAKB{[L&fV'5WZrFatF@d>k4{i4|IP]^Fzk={rP<4niOy`{10cL9Z@w#7]l< UہJ}XUFE{#W,P(5tH1/ c5`h"Yyv>W}I{W!``/;ʊ<=GXs3`4q@eOIZSea.jaCbUThIsSbr*d :RK ue>x4^"}/ELP'axTD>Z~^Sx;Nt`HZi_;?8g!;}PokQgvPceMAxQ(mS =Dv=EV?'iadia)lfmgf#h r~~}C*}5t8w{1Wvo; b1}c9[u?K2.*'c.Cv9ts&wCiFcTVu,j$ndp}?xkdH$o)U&`=7T+b*e,W/Dˏ[2Yޢ1a%bَoPnD#Eܨ5E˱6Nڼ3<,º(hڇr~*B}z>΅Ar=~puJIr[zo,g̒5k͢ &7i)˰$; 4$.";yf)q} !'{Dtl!hEju=& ;B<>4>4>4>4>4>4>4B4B4B4>4>4>4>4>4>4/ ==Eg>Vd}0point007uQkXjq:klbW"DI\,kj1pGo1\UL5SBDg=zB<~>Jm ii%nU)lHUF,W<dXB(E@G{]/Bi)F<}8+bV*GckA?Fb#YxoWz|Vb-hoe#MZFWP@8Qt{AKBo[L&|fV't5JZr8`wtFv@d?k4pi4qIB]REz_=|uP<~4n\OzQz1+qkגC]څ-#}I.(<ۀ0]yk5f5%ncOhqW6qG7tI8aՈYgs i+(áȊO[g ikRMN?‹3cN9\@z#:\\;مCہ; vHTGuFt$Y.P*W6gG1s. V5`_#Ynv>J|m4R"q/7?@'SwTE.Z~PSx+NtRHZ,ORUSIcFBG>iQ;?(g;}Bo^QgjPcweNAlR(`S -Dv.EH?'iadib)^f_gxf#\ >x0.w(v&cz-Ci9fe&jC[FTEGg,[$_cps{?jjd8c)G&S.'T U*X,I/3ˏM2 Lߣ1V%WُoC6!7ܨ56˱6?ڼ3,, ]ۈh*6~z2υ6s1gwJ?s[q΀og ̑&k ̢(i ʰ* #$,vfp}!zD ~t i!fEgu:(8B 8/4/4/4/4/4/4/4343434/4/4/4/4/4/4 =5=g>*@|4point008sQjWjp9kkaW"CH\+kj0oFo1[TL4SBDg=yA<}=Jkih$nU(lGTF+U;cWA(D?F{\.Bi(D<}7*aU*Gaj@?F`#XxmWzzVb-hod"MZEVO@7Ptz@JBmZK&zeU's5J[r7_vsFt@d>k4nh4pHA\PEz^<{uO<|3n[NyQy1,qlגC]څ-$}G-(<ۀ0]yk5g5%naNhoV6pF7tG8^ֈYgr i,)á͊O[g ikRLO>ɋ2cM:[Ax#9\Y9څ@ځ: vHSGuEu%Y.R+W5gG1p, U5`a$Ylu>I{P:xX!ab;ъ|:,GXf3t^7c>b@HZDda-jaBaUShIfRbf*W *C< hev>k4Q"p/6>A'SvTD/[~QTx,NtSHZ-OSUTJcFBG>iRw/.v'v%cy,Cj9h-g&kC\FVFHg,\$`bpsz?jhd9d)H&R.(T W*Z,J/5ˏN2 Lߤ1W%XېoD6!7ۨ57ʱ6@ټ3-,_܉i*8~z4φ8s2hxJBs[sЁg ˑ'k ˢ)i ʰ+ %$)qfk u|Fnve zd7seu~6It6Dn6.4.4.4.4.4.4.4343434.4.4.4.4.4.4>a=@wpoint009vNjUir7jm^V"GE[)jj.oDn1XTL2RBBg={= <~:Jmij nX%lKQE0R;fT@(HFc XxpWz|Ub+gogLZHROD4Pt|=JBoWK&|bT't~5LYu9^uqFw=c݀;^yp5m5+nbLhoS6tE7xF6aֈ]qu i2*ġψMXgikNIO:̋/cH:VAs#6\^8مDڀ?tPSEzDz$T-R*W2mE1s*Y4`f$Yms>KzPl4R"q/9AJ'[vTB9\~XTx5PtYIZ6Q[V[JjG@N?iX}EoeRgqPceMAsR(hT 6Fv7GPA'h:`di a)hgihf#] j`w]Ud&eFca{~%[y9Vxdg;:fsdbb 8}p&OWgT`QJjbpKXwg,G9r~xyC{){y5|q8rx1Sui9 \0}\8o>K/.~(}%c,Ct9r-q&uCfE`RSp,e$hbp{y?rhdCj)N&W30T!^+b,S/? ͎X2Q1Z%\ܐoI:!=ۨ5>ɱEHټ=5,!bމk*=~z9ІM%=]ne>6KKlpoint010GjNi1k|VV"Z?\#kj(o=n1PSL+RB;g=5 <1J{iy nhl^IEFJ;uL@([5F{o$BiD:;}PsH*]Tz6>FsXx~WzVi$govLZ\KOX.Pt6JB~OJ&ZT'}w4[WuJZ~lF6bP6k4xb4yCSV`@zn5yrH0-llEvvv<\rBn|k\ڋP'}g,؄Q?߁_^y{3{5EnnHhyN6@EA6vՈpq iM,ƖlFP gi kC?O.Nj$c9:H@d#+]u5؅^ځX{nQ ??!R'R%W,B<& n2`y#Ywm>]uPMrI!OT=>Њ3EGyy?VFt9aUFqmda%ji8a_JgIuKiu)i \Vg2vye~{>x9b"z2JVl&yuT8dl~`z^_t|UZ^a~c|XR@oMavIC=gAP}]%d\gZcmlV@](` \Vx\WpO'o:fep g)rsp#i4T &c `[,U&,AQ3eQe@n(p9la-yyuvf<`fbb1^}&oWgv`tlbpmXw,j_r~wC~)x5o6w1ut:2}2|9>K0.)&a,C9-&CDvv,$apx?gdf G=fGkLNT3B"r߉:x*QЀzNΈNuKwxJYt[Ձ8Ag.ƔHk1Ǧ2>Li;5ƴGZ Q$3{@i_4c m*_|D W ZkOjF Hny5>O.>B'AwI}4I4I4I4I}4I4I4L4L4L4I4I4I4I4I4I4b<)>=-`>}lI`Spoint011@lEk#+mMX"i9^mj"r5q1GUL$TB3i=+ <(J i nullAGWB<CA(j/H{{ChU3=}_=*kH-?F~Zx YzXijoOqjDPf(Rt.KBFL&PV'n4fSuUVeD/cW/n4~\4~?^Qh=xx0yrC1*lw@uo5nfl~X:i*Ҁ+لq@あ[yp?p?]ltCh~I69e:dՈrhe/ʖl<Aqhz31M\"82@K%]2;u܁m{M 68R P! ;9" 0Y R}g>gnPYm6#9 DTAt̊,#WHoCND5adEq`a mi1c_AjI~Ea})t b/{ret>}}9k"2V`|&oR)og~\wjZtQ[l]bVO@|HaFCZgTI}sdXgWcllUA](`$kPvlRL'ogeq i)prp-4r'`u,m!%UJSdQd@n(o9ka-w|ua{G{aiRQƍTLL) Zؐ0fwک1w%|۔6scjά3pe}ʺ>jٳ(Uŏba"ߌ:,bЃz`͋]z[쇜zJhw[ق6XgF_hK{HZ"dgSR{m}2r$BrMd_E[/k6`~B/VxcpZmCQqyTBMM@@ECrYn4Ys4Y{4Yr4Yn4Yx4Yt4\q4\u4\t4Yq4Yw4Y|4Y|4Yx4Y|4<>V>V>Gpoint012\q`p#Mrf["XaBsDwSv1`XLDYBPn=IᆕBf:? H&802*:W777MY@}>Pr)2.~Mzc{&n<+xhCffU[drvZCriPgB\nIbg=$‘.eA4"2nxʋԁR!;`~VwQJ[V^R'KA@a@?Zq>vpRqRcÓhkЯTA[+]$HvJF,ږnߙfeܥq i.koȰo <'_%%s@bQâa@ɯk(͢m9ƕia-xuu&(>8>ْ6F'crstnd001a e-Sju"\ILZ0emKMj_W=QՁ9_q pKG9=U1v2j2e*r'i/|u lZyzmwh[i?ToPECՋM j7}K'RGuLYFgJ6E^F:cUR~T.y@yySCz5g)_N}g|3iCJtn{@m_^[}krwZJiW7a*j[/!njuÐ+:0 uxqT̋ӄQ':qzova\u|k`JUcS>{ZxYxdkaȫifةnhJt'y!bzf] 봉:~D ł*Ĭč<'_%"#v\nֵvU޶3Ç'ֺ ۬ouMtTt9tw\<ς&nqo ϔsbmw(Ӑ{ꅺA=?|E9|V0PW[HQ3LnK\OJF/&@B:($siAwc3 KxKK><F ׫<%eƞd ͭA`ǰHԳ&ѐ8*vswۉozrqHwkWrEr[`͠~gmŷ|gqxۻ }ƀ 0,durgBcsvKcOVJK`z*M.EA*JzVuz@}@@@}@@}@~@@@@@@@@@f>d%>h>|7'crstnd002cf#Tku"]JM[0fmKMi_Y>Q{5e)`N|i|2mCJsp{@o__[|mrzZKiX7b*l[/"ǎu“+:0 uxqT̍҆Q(:pzpva\u|k_JUcS>ygwZxdjaǮhfجngJs'x!bzf] 뷈:}DŌ Ɂ*įnj<'_%"#u]k ոuU޹~3dž'ֽ ۰otMsTv9vz\<υ&pqq Ηubow(ӓ~鈺J=?E9X0RX]HS3NnM\QJF/&@B:($viAzc5 KwKK><? ٩:/eǝp ҬCī]ʯJٱ&А8}*z|s{߆vuxmH{hWodsĘ[bԟsn̶|kq{ ~~ 0,dvpgBasvJdOWJI`z*O.GA)KwV|@@@@@@@@@@@@@@@@,>NB!>L>d'crstnd003d h#Umu"_LN]0hmKOj_Z>Syz@tiKdCkqfsSw{Vb_heGop mwus|x;[z@V l{rYlrbx[hXymwTÈCƁ~vd^݆T:euyBBƐ|ozsb^af6mB;ƃcphLG==R.|q3f2`*vc/u lVyznui[i?QsREE؋R n7wL'SGpNREaJ6EaF:cXWyW.y@vyS >|5`)bNxk|2mCJpr{@q_a[yor{ZMiZ7d*n[/~"ős):0 rxqTɐЈQ)9qzpva\v|k`JUcS>ugtZxdkaƲhfְngJt'y!czg] 껈:}DɌ ́*³̍<'_%"#r]h ԼuUݽ~3ˆ'Ž ٳoÎuMsTw9xz\<͇&rqr ͙vbpw(і̀扺@=FE9X0RY\HR3MnL\PJF/&@f8($wiAzc5 K~}tKK?<? ܨ:/eʝp ׫Cɫ]ͯJޱ(А!oy)}yw}ㄠ{r}iH}fWmdqʘqbܝ}ǫsmԵ|n!r} }~ 0,awmgB]s{HfLYJF`w)Q,IA&LwV@@@@@@@@@@@@@~@@@;?> >>>g;'crstnd004e i-Vox"`LO^0joKPl_[=UiBnE"megmf^gZ(Xi|K_hk[_}eEb +qjWWDF~>{zAviLdDmqguSx{Xd_igGqr fxul}z;\}@W m|tYmrbz[hYynyTFvd_ᆪT:f凹vyBBxɐupz}tb^bf7lCw;˃dj_LG}>=K-|i3Ã_1X)y[/n lP{s}nnl]k>JwREF܋S n9oL'zRGhOJDYJw6EbF9cXWrX.{@ozSz >x~3W)eNql|y2mB@hs{Ur_b[rpryqMiZ7e*oZ/w"l):0 kzsT&ŃQ*9rzrvb\x~maJVcU>oZm[xdlajfαniJv'{!dzh^ ⼋:Dʏ ΃*Ò͏<'_%}##k_b ̽wUԾ3̉'Ñ ѴoĐvMuTo8wr[9Ɔڌ&ormۈȖmanv+̒@}?yFsex9{OX>VF>R(crstnd005f j-Wpy"aMjP^0kqKRl_\=X=G,|d3ŃZ1R({U.j nK{nnin[{m>EyREG݋U o9iL'uRGdODCTJq6EbF9c~XWmY.{@jzSt!>r3Q(gNlm|s2m|A@dsUs_b[mqrwןNi[7e*pZ{/s"#h):0 {gy~rT&~Q|+9rzqub\wnaJVcU>mZj[xdlajfɲnjJw'|!dzh_ ܼ:Dʐ τ*ēΐ<'_%{##h^` Ǿx@Ͽ3͉'Ñ ̵oŐvMuTh8wjq{: ՃInuiՁŒfgl{~LȎ!~u_q?mEhbm8uI9IPMJ>F:l9=_d0I_c {=؁+hsnBha5 KMrqhKK?<? ۨ:.߉bʟm-ڬC̬]αJI{#~v)ywwx䃘{n|fJydlphϙ]䜗t̬wfܵl!|órx tƐ 0+XzciBSstAiE[K=aw$U'LA!Nr! H@@@@@@@@@@t@@@s@z@@@>A >m>gd(crstnd006g k-Xqz"bNjQ`0mrITm_^=[΃fe WLGv>=F-|c5ǃY2P(~T.h nI{lngp[xo>C|REI݋Vo9hL'tRGcPCCSJp6dcF9c}YYlZ.z@kySs!>q3O'jQlm|r3m{A@dtUs_c[mqrwןOi\7g*pZ{/s"#h):0 {gy~rT&Q{+9qzpub\wnbJVcU>oZkZxdkajfɱnjKw'|!cwg_ ݼ:Dʑ Ά*Ó͐<'_%}##i]b Ⱦx@о3̉'Ò ̵oĐvMu`h8wkq{: ՃInuiՁŒfgl{LȎ!~v_r?nEibn8vJ9JQNJ?F;l:>_d0I_c {=؁+isoBia5 HMrqhKK?<? ڨ:.߉bʟm-ڬC̬]αJI{#~nv3{wwz僘~mgJ{dlpiИ_圗tͬwgݵo!|ijrzuƐ 0+XydiBSstAhEZK>`w$S'JA!Mr H@@@@@@@@@@t@@@r@y@~@>>~&>c>ˇv(crstnd007f j-Wp{"aNjQ_0lsITnB]=]Ёed WJGv==E.~c5ɃY3O'S-g H{knet[wr>AQdIދVm9hK&tPGcPCBSJp6dbF9c~WYmY.z@lySr Ao3N%lQlk|r3m{A@drUq_b[noruןOi\7f*nZ|/t"#h):0 |hyrT&|Qz+9qzoub\wnbJUcU>rZlYxdkajfʭnkKx'}!bwg_ ݷ:߻DŒ Ɇ*ȑ<'_%##j\d ȹx@Ѻ3NJ'ɾ ͰovMu`g8uiqy: ՀIluhŏegk{|Lȋ!|t_p?lEgbl8tJ9IPMJ?F;l:=_d0I_c y=+gsmBga5 HMrqhKK=<? ث:.ߍbɡm ׯCʮ]̳J޵({Ԑ #o|)y|wx䇘{t|lHyhWpbhΛ]⠗tɮwfظm!|x t~ 0,YxfhBUrtBgFYK?_w$Q(H>"Kr H@@@@@@@@@@u@@@s@z@@>,>G>gjd$)crstnd008d h-Un{"_MjP]0jsISnB\=\сcd!XHGv;=F.~d6ʁZ3O&S,f H{jndw[vt>APdHދU k9iI&uOOdODATIq5d`F8bVYnX.z@mySrAo3N$oQmi|s3m|?@fpUo_`[omrsןNiZ7d*lZ}/u"#i):0 }ixqT&zQz*9qsoua\vnbJUcU>tZnXxdkajf˩nkKx'}!bwg_ ޲:ඁDۿ ć*‘<'_%##l\g ɴx@ѵ3Š'ɹ ͬovMu`e8sgqw: }Ijuf|ƌcgi{zLɈ!yq_m?jEebj8qI:IOLJ>F:l:=_d0I_c v=|+eskBea5 HMtrjKK=<? ְ:/cǤp ӴCDZ`ʷKٻ(zא o)srs㏘suuHspWvbfʠYۨrŲscо|g~{t s| 0,[whgBXqtCeHWKB^w%N)EA$HwH|@~@@@~@@@@@@v@@@t@{@@ d>/>˗>ώ2E*)crstnd009d h-Vn{"_MjP]0jsISnB\=\ҁcf"ZGGx:=H/~f6́\4ÄQ%U+h I{kne{[xw>BPdIߋV k9kI&wNOgOFBVIs5d`F9bVYqX.z@pzSsAq3O#qQpi|u3k~@@hoUn_`[rmrsqNiZ7d*lZ/x!#k):0 lyrT&{Q|*9qsoub\wobJUcU>wZqXxdkajfΨnkKx'}!bwg_ ᱍ:㵁D߽ ‡*<'_%$#o\j ̳x@Գ3'̷ ЪovMu`i8sj[{9ā ؂IkuiـǍggjv~Lˊ!zu_s?pEkbo8uM[B@d.I_^ {Lۀ+igpBia5 HMv™ulKK=<? ִ:/eǧp Ѹ>ƴ`ɹH׿(|ِ o.prq┘oq|HpvW{efȣ[Xحs´sc|d}}r s| 0,^vkgB[qvEcJUJE^z&K+CA&Gs V{@}@@@}@@~@~@@@y@@@w@~@@k> />y>z^*)crstnd010d h-Vn{"`NjQ^0ksITnB]=\DQdJߋW k9nI&{OOjPHBYJv6d`F9bWYtY.z@tzSvAs3R#rQtj|y4k@@lpUo_`[umrvqOi[7d*lZ/|!n):0 oyrTĈP*9qsoub\wˀobJUcU>{ZtXxdkaĭjfӨnlKy'}!bwg_ 籍:鵂D侒 Ç*<'_%$#r\m ҳy@ڴ3'Ҹ ֫owMu`p9vpZ<Ʉ܈&mrnއ ɑnamx(Ώ~|@}=yFtey9{ T5PVWJL?GnFZJ@E/&@fL,oiyBqa5 HMz™ypKK=<? ׵:/fȧp Ѹ>ƴ`ʹH׿'ِ o*rrs╘pr}HrvW|eiȣ[Z׭vµsf|ft wЀ 0,auogB`rvHaMTJI^z(I,AA)Fz V r|@~@@@~@@@@@@}@@@{@@@U>޿0>>h)crstnd011d h-Wn{"`NjQ^0ksITnB]=\EQdJߋW l9qJ&~OOlPJC[Jy6daF:bWYwY.z@wzSyAv3S"sQvj||4kA@npUo_a[xnrxZOi[7d*mZ/~!čp.:0 ryrTȋ΂P*9qsoub\wʀobJVcU>}ZwXxdkaɬjf٨nkKx'}!bwg_ :﵂D꾒 ‡*ī<'_%##u\o ׳y@ം3'׸ ۫owMu`x9yv\5͇psu ˔vbpx(В́䃼@=?~E5 \0X\_JV=QnPZT@F/@f:('viAyb5 HM}Q|rKK=<¦? ֵ:/fȧp и>Ŵ`ʹHֿ'ِ o*trt╠ps~GtvW|ekǣ[[խxsg|fvyЀ 0,bsrgBcsvI`OSJK_y(G.@A*~Fz U| r|@~@@@~@@@@@@@@@~@@@>61>>}A=X)crstnd012d h-Wnz"`NjQ^0ksITnB]=\wZqXxdkajfШnkKx'}!bwg_ 䱍:流D⾒ ‡*<'_%##o\i ϳx@״3'ϸ ӫowMu`5||c0Ê֔sg{ד }btzޕ'ĕŃ܊J+?F5ه e0_crhH`=\Z\^JF%@ޫB9ֱҬ(ٔ'|bAe5 HMwQulKK=<? ִ:/fǧp з>ij`ɹH־'{ؐ 6*lrmᔠhk}GmvW|eeƢ[TӬrsa|_{}orπ 0,\rlgB]t}D_KT@Hz`y%G+zAA(tHkq nUh w|@~@@@~@@@@@@y@@@w@~@@>P1>{O>ÃVc)crstnd013d h-Vnz"`NjQ^0jrISnB\=[qZkXxdkajf˨nkKx'|!bwg_ ߱:ᵁDܾ †*<'_%##i\d ɳx@Ҵ3'ʸ ΫovMu`5~؁cؗ0ϙugΖ ewz֚'׏J+=F5ҋ m/ehqnHi+e8ccgJ۽4#ٿAҰBԲ<ȴůژ&ј ہpAe5 HMqQpgKK=<? ִ:/fǦp{ {϶>ò`ɸHս'vא 6*fshbe}GguW|e`š[OҪms\|Yuwim΀ 0,VrggBYt}?_G|T@Dvaj"vG)qBA&kIj` ] UWw|@~@@@~@@@@@@t@@@r@y@~@X>W1>&>V{(crstnd014d h-Vny"_NjP]0jqISmB\=Z̓}c[#THGr9==2^6ƃS5I&&M,] ?an\z[qw?9QEIۋUl7dJ&pQO_O>DNJk7d`F;czWWiX.z@gzSkCi4I#mShi|n5mxB@_pUo_`[imr}aOi[7d*|lZw/o!_.:0 wbxzqTWt)9qzoua\v~maJUcT>mZgXxdkaifȨnjKw'|!bwf^ ܱ:޵Dپ …*<'_%{##e\_ Ƴx@ϴ3'Ǹ ˫ovMu`݈5~ׄcԙ/˛wgԁɘ ݅exkҜՒJ(=F0΍ p/hkqrHn+i8gckJ4#A̲Bʹ<֚'͚ لdKމE5 KMnQmdKK=<? ֲ:/fǤdv xε>±`ȶH}Ի's֐ ~6*bscߒ\_|GbsW{e\ß[JЩisXƾ|Sqtdì 0,QqcgBU~u};^DxU@ArbjoH'jCA$dKjTP UKz|@~@@}@~@@~@@@@p@~@@o@v@{@>0>گ>q(crstnd015d g-Vmx"_MjP]0iqIRlB[=Yʃ{cY#THGq9=;2]6ÃQ5H'~&L-N\ l>_n[w[pu?7QEHڋT k7cJ&oQG]O=DMJj7d`F;cxWWgW.z@ezSjCh5H$kSfi|m4mwB@]oUo_`[gmr}\NiZ7c*zlZu/l!]*:0 u`xxqTWr):pzoua\}u~maJUcT>jZeXxdkaifǨnjKv'{!bw}f^ ۱:ݵDپ …*<'_%x##c[\ųw@γ3'Ÿ ʫovMt`܇5~ׄcә0˛vaԀȗ ݅exkћՒJ(=F0Ό o/gkqrHm+i8gckJӿ4#A˱B̳<՚'͚ ؄dKމE5 KlQkbKK=<? ֱ:/f}ƣds uγ>}°`ȵH{Ժ'qԐ |8*_s`ސY\zG`rWzeZž[HϧggUŽ|Pnrqbgˀ 0,Nq`gBR}v}9|_BuV@?pcjjH%eDA#`LjLIUDz{@}@@{@~@@~@~@@@n@}@@m@t@y@f>/>">sk(crstnd016c g-Ulx"^LjO\0hpIQl_[=WkZfXxdkaifȨnjKv'{!bw~f^ ܱ:޵Dپ „*<'_%y##c[]Ƴw@ϳ3'Ƹ ˫ovMtTޅ5|؃c֗0Κug~˕ ނevzԚ'אJ+3F0Њ l/dhqnHi)e8ccgJؽ4#׿AаBѱ<ų®ؘ'Й ځdKe5 KmQmcKK><? ְ</D~Ƣds wͲ>~`ǴH|Ӹ'rԐ }8*`saݏY\yG`qWye\[IͦigVĻ|Qotqbhʀ 0,OqagBS}v}9|_CuV@@ocjjI&eEA$`MjLIUDz{@}@@|@}@@~@~@@@p@~@@n@u@z@>h.>$>ǀR(crstnd017b f-Tlw"^LjN[0gpKPl_Z=VoZjXxdkaif˧niKv'z!bwf] ߱:Dܾ „*<'_%}##h\aɲw@ҳ3'ʷ ΪovMtT5zۀcܓ0ӗsgzђ ~eszږ'ۍJ+3F5Ն f0_ciHc)^]caJ4-ݿAجBڮ:ΰˬޕ'֖ ~bAe5 KrQrhKK><? ֯`ƳHҷ&w| 8*dsf܎\`xGepWxEa[N̥ng[ú|Utxqgmɀ 0,TregBX}u}=~_FxV@Cqcj!oI(jDA&dLjUQ ULzz@}@@@}@@}@~@@@u@@@s@z@@Q>Ou->pH>[z(crstnd018b e-Tkw"]KjM[0foKOl_Y=TyzAuiKdDlqdsRv{Vd_ffGmr' htumwy;Y}@T{ hwsThr_y[eVxixUC~~rd[ R:b߇rkCAzƐvkz~o8_^^f6m@ׁz:ă`f!eIG9=K2l3`3Z)v&^.j lNmmkn[n?HtPED֋O j7sK(}RGkMNF]Jy6E^F;cVRtT.z@pzSyCw5['bSsg||3mCJjn@m_^[skry\LiX7a*j[/x!j*:0 lyrTŒʅP':qzoua\u}laJUcT>uZpYxdkaifЧniKu'z!bzf] 㱋:Dᾏ „*<'_%"#n\gβw@ֳ3'η ҪovMtT{5w|\0Ņڔqqv؎ Õybpz'ǓኻJ+?F5ۂ `0Y^cH\)WߌU\ZJF-AB:٬ը(ݒ ybA~e5 KxQxnKK><? ֮<-Dšd| ̰>`ƲHҶ&}| 8*jskۍbewGjoWwEh[Tʤtgbº}Zߴy~ql׿sɀ 0,[rkgB]~u}C`J|U@Guby%wI+qDA(kKkd` U[wz@|@@@|@@}@}@@~@{@@@y@@@Zb>0,>=>VjG(crstnd019a d-Sjw"\JLZ0eoKMk_X=SiAnD!mbevc[cY(Ug|J]hsX]}oE_*|fTVDD}=yz?uiIdClqdsQv{Uc_efGlr' nsurwy;X|@S{ hvsThr^y[dUxixU‚C}~rdZ Q:a߇qkCAƐ{kzo8^^^_5m>Ձ9ƒ_l!lJG83Q2r2f3a)t&d/}p lUs|mrk[k?OqPECՋM i7yK(RGqLUFcJ6E^F;cURzS.z@vzSC}|5b(`Syg|3iCJpm@m_][ykrwZKiW7`*j[/}!Ëp+:0 qyrTȊЃP':qzoua\u}l`JUcT>zZuYxdkaŪifԧniKu'z!bzf] 豋:D徏 Ä*<'_%"#s\lҳw@۴3'Ӹ תovMtTv9ux\<˃&oqqߊ ʔubnw'ΐ|憻A=?~E5~ Y0TY^HU3PnO\SJF/&AB:ߥ($uiAye3 K}Q~tKK><F ֮<%DŠd ˯>`űHѵ&|8*n߂spٌfivGonWvEm[Zɣzgg}_ݳ~qq־yȀ 0,`sogBa~u}GaNU@Kyay(J-{DA*tKkvr Ulwy@|@@@|@@|@}@@~@@@@~@@@'>q> W#>Ay !crwalk001DE{%3Pk C$%5}5GaK&^_2r>1<.Jinz!lI`"sMZFRI9c|'Xhp@\` @+mK3OD!uqzki vderLm5r{2Y_H\GPe&{ s`tzdt;8nU0g PcxRQrCwG 6yPuTnCe~lYb6܅1:D݋WzsBq@sɐTsYoB^A_ iʃz=mp=2*e } zy ji'j!m(uhpe ntVb~LY$R+^^4Dˌ#؆O76!;})_+o)DAC _9.Ðp5yU}wSoLc3e3ZM|a+IzV{wUU_B[Sr^[&g5tE@)R[/!x{+:0 zxTvnQ7vsqug\w΂r½hAZbZ=ZXx$dÜqa˥qf՟ltK~'ց!dwhc 窖:갋E仚 *£<'_%(#[ ԭ@ܮ3ѿ'Դ ףo}M|TW9Y]\p<C ם5%݁edͧ?^IJKձ(͒w8o+|wz~ӁtoyaOzdde}qlƝthz|sܼq޳| 0,ny"ywnBkqz{UjXy^UVniy3~]6wV@4o]y{2v,Tn2wd@f@n@l@h@l@g@i@o@j@n@p@s@x@r@u@] >=pV'>h4g crwalk002EwDl%4|O` Fw#w"s3n5DUJ T^-cAu)^=^by z3yme? 6*[ x{zpj\/ma.xx fbYntz TerMT2T+Q_2C8ӇI7w6!: t"T+e%C;C"@5|&Ðp3zUswS%oL}&e3X?_}H|c-IrS{wUR`>xPwX[#rg4ff@r=P[/{!sp{+:0 oTrhQ7|ysqk\xՇwo>^b_= ZVw)6vaȪwfϡl}>ۅ$݇ewig$ଟ:岕EݽĚ/Þ < ' @%.#Zΰ@ձ3×'ͷ ѤoMTN9QV\iׯ,ɒl6_Lurzy}unhvwVSobZbxskʜ{k{Ƭ|wg|0,g"twuDcr~{QkV|`@Qqjx0Z3T@0vZz+%T|*u`@b@j@j@e@h@c@e@l@f@l@n@q@w@q@s@@>˚>8)>㚊\nwcrwalk003OkP_,>r VW kMp/k0e;@_3LKJ*J^:UAY)<\&JN iKn<!l\MU"AOTjHDIZ=Z~f*Oh?CYF8L+Al4Cfz)gcy\i)[ds#ZsbR`_^a yz4pm_@ ~3)Q }tzh jU-p!Z,zokbPstqZbiQRz)W=Gd2DoԇIEq7!|; n%M.^(|D_bb3 aRw+oyaɫ{D̡lɃ>ډ$ۉcrhh!۬Ⲝ7ؼá/y¢!<'@!%0#Vʰ@ұ3›'ɶ ͥoM`L9PT\fЭ,ŏ!goYLzmx~xva~qPSs^Ub{wpȗk§۳!gݥ0,^yo|+fj|sKpRf&RufZ,\2U(1~SZ1,*X_@`@h@i@e@g@b@e@l@e@|l@m@p@zw@p@r@9?>I3>/)>ɚ҆Ucrwalk004PQ~%>^s!Q/.?}5TgH3b`xE$<{BJm*ik.$n[22mxYm"^_kW]ItIp~7chZRn?6fU/+LbCYf.}#wz$qg*ub,nr}[ywD~|@a`XeG^l&mmtns;CqT:v ^sR}`rQ~S By^{RzCn퐥wcb@܇<9Nދ`z@@͐ucw|ibO^N^iʃzGqldJ8)S}uziZ/q!^0{pspSwtsabmWY!Z=Lh@D&Ɍ,ևY6uC$Hq5Q;b7~(DLD-_Ez:Ő5UqQ|vLyl3W9a{Y|a9IpcǒTc`Ovauh[0g?vDK=a[/y!ǂfŠ+:0 mŔxQ7u|qscdcgzkh>UbV3aEwoƬqaεseίly>|$|"XwZ[ ݻ7̠Ҙ/ǒҗ<'@%"#GʾUӿ?ђ'ř гoɚMT^9af\x96Wp@q@y@y@u@x@s@u@|@v@|@~@@}@@@RJ#>Ш>pF&>p~crwalk005b j-PoXIlO`0nIT@`L]3<[!JD!iH3nK?mcubzjw'T}JwiuUzxoL&m?*xu&ZqC@y:h?bNEAZcLvZ}@lt utuv{;Z@Viy~Thr^\gTxkUƄCz~odP݅J:\ߋmz@@ː}lsql[^Z^'i.σ-yWujnO<=Z)|{&yo(d0q h3{w{m\{zjpv ]]_?UjLD7Ό?څf7}K'RwDZEiD2EYF7fRPJ.@yQ {>q5d5_Ne|,iBHvn{Um`[}kut[JiY9e*j[/!Ɍoē)80 u|T΋ՃQ"8{|sshudcm|lfAVbV=aLwoƭpaζqeӱlu>z'|"\w_\ 余E̝ѓ*Ɠі<'@%!#OѿU?А'Ř յoɗM~`m9os\<΀&iqhіlbgw,ԑx냼A=|4vEz9wId#>ښ!>B_RDcrwalk006ag-Rk"YJlO]0iIRz@]=W$ьG܆g7K'R|IaFoH5E[F9fSPO.~@~}SCv5m,]Ne|0iCJzl{Uk`[irt[LiY7c*i[/"ʉ{Ǝ)80 {|uTψցQ%:rzmuc\s}lýcAVbU>ZTxdţmaͪlfاlmKw'{!`wd] 걐:E翔É*ī¹’<'_%"#Wֳ{@޴3‹'׸ ڪoyMx`o9ps\<&kqkҒnbiw,Վx낻A=}4wE{9xPB=>+I(crattak0015 :- B{"y.*0;sKp_'=<Jinr #mw6ib7_7](t#k|ah`(a}\ z1 *f<"YD ~zzidpqw8xt{{"g_:jGDv'rl1^Pv_U~g;(@!Z {?rTxTp?r1~[9#x@}U>~|7\h { jAAf|mEjsJ:]fbD?;3y5lX}ǂSZs+l$xCBH*ć#a+;@Q-)]m.VI.S\M:6R7F2m?_.T[?ġe.{m@blSH#E Um`ヷB:\'eZ}vy@jfOanWkai&74*}Vpi3bZ(w:u1 nz^~qwT֞PAzvzxtuf\tz΂peJYcW>eZa]xxdpanfnmJz'!vfztja :D ĉ*”<}'_{%p$#``Z |U3' o{MyT5a0s bx&@L?E5 |0tyr~Vq=jham@F%@f:('iAe+w{JiNiN[_RXҎTwH~Hy٪I{޼*iɱ=q U֫/C!Q֌FY9>߱IPS`YاSFѰWсWKPڀ5Gv';|m>q-q0΄HgO?i[YmFEb2wLn=+=Vb6ľLʉm n$XQxy\mkBQay}^ey"nO&fHA#\NzidV[r@@@r@w@@@~@v@@ju@r@u@f}@l@n@ >L = 8>~xb+crattak002CI~#/Pi";s"j&:0JdL'bB7y=-<)JinlCWCLEN(0X{ Ri4M}?*I0LDmkzhi"{o^qFc*et1YBIZ&Se'{~1u]uzaht|;7p@1g| K`cTKor>k[G1xMjU=|~9^j xцy>>uRkW:eDjF;׆2x*yX{ġ6+Igz-&)3 | m &:Bpm0ZP0;HIH+FY2Br3Ox_x.:G)u]vCtDWa]ha#i5y7D*ap~/t,x8|0{ n~yhbTR9œqãdz`u­V\em_VAKbJ>ZJxdП`a٪_fxl`Kh'l!TwWQ ~:tEƂ x*Ъ|;<'_%#Mk@t3z'彁 o}hMgU֡<עcҾ1ƹ&qɚž ؞bw'۶A)47<ǭ x2ovݟ}Kq)jٌhcnA4-&AD:($Ԟp>ݥeö*KNMmqÜT_`ȒI͕K(/q¾ң)}ѿ nՐ2km$ww7qQWɐMdȎ_lOPڒ^\Qڤ{m1ya'_ck\mqUTPc~WJkV\c9Vi=rYlB6Ȁ@ԝgb;̔Qw }#ajc"zyYBhpcvNRUwH@PkRy,|>1s9A-j>zt mUe uAAAAAAAAAA|AAA{AAAl >E='c3>#Û{+crattak003JP#7Vk"Cv+j0B0QfL1dB?|=5<3Jin!lJYKNLP(9[{*Ti>wWk\:eDhD;چ5}+yZ{ǖ.)Dqz%(!3|m:8 ph5YS07HDH,DW/Bo3I9P^:u}.|l@~{lS7!31>xb}+:A=tavAsDYa`ha-i=|7K*ci/t,{80~ qykeTĩR9tâfzbu¬X\gpaYAMbL>ZLxdПba٩af{lbKk'n!VwZT :wEÅ {*Щͻǃ<'_%#On@w3}'庄 騂ojMiUٚ<ۚcִ1׼&q̓ȵ ۗbw׹'ޭA)47<ʤ s1krxKm3fߌdcjA7-&AD:ݷ(ӹ$חp>e/ KNMowĠTcb˜IƛKۥ+ڵ2q~ʩ)~}ݓ s#z8}ef֎&tӏB~Hbavc]r;i%v`hqj[sSkb]KS\j8a{iLtckLvJ{NpbJߏWŸx{#o je"z|[BisfvNUUzJ@PoTy,~@1v:A-n@zw qUj uCCCCCCCCCC}CCC|CCC/? >Q? >+>$-*crattak004NS#_{0WiAS})J*S=QD)u!sz$oi2o(eqPj9mt>_BRa&[l'|1vbuzgpv;Cx@>l TfkTTwrIs[Q>xVqU38]b pyCCyYk^:aDdD86}*̓Z|͑'=> rzI?~h)#ia5US{03H@H- fP,@j3B9N];u.{q@{qS/$)"Cya}'Ɍ;?uavApDXa`sa3iB7N*bi/u,80 vzpjTɞR6yÞkzgu§\\lufͺ\APbO>ZPxdЛfa٤ef码lfKp's!Zw^W :|E *Ф͵<'_% #Ss@|3⿂'崊 餇ooMn`ޏ<ߐcۨ1ۯ&„qщΨ bĄwܬ'A)4E<Й l1ekqKf3`^cdA7-&AD:(٬$܍i>e/ KMMsRgfKKͲ)2tȐ3ܜ oőۓ(ԖDL|&ktoݼp䁇~-gso]]Nkp>[^{|yalqyÌzcˉtk|g–afgȞt !jjz{_BirjvOYUzN@QoXy,}C1v=A-nCzx s Ul rCCCCCCCCCC{CCC~CCC- >A_>)>ܹfu*crattak005Y^#Icq"S}?jBR0^kLCiBP=HXiMT}7V*^JQD8v0sz3pi?o6fq[kFn{K_B]a&fm'1wlu{qq;Ox@Ju _plT_yrUs[\KxarUš?𐕖8ef tᆼyCC|ckh:gfiD?݇@}4ʃc| ˒->A #xICs o"-gd9ZZ~<ZQxdСga٩ff禁lfKp't![w_X :|D Ā*Ъ͹ĉ<'_% #Ts@|3Ã'帊 驈opMo`B$,x(I@s ܉o/qf9\ _ZRxdΦga׮ff櫂lfKq'u!\w`Y :}DË ȁ*Ϯ̽lj<'_% #U~s@}3Ƅ'伋 讈oqMo`<ŏ\1Ğ&̇q݊ۦ ɯbΆw,ˬėA)4E<ܘ p0jptKk3end\hA7-&AD:($iCe. KMzìRrŎmKKȸ)13ࢆo̕lޘ)ԜDݫ='|ʮ臇-lst]dqw>`^n{atWːsz֋ǚa{ҡ $imyaBimvN[UPJQZy,E1?A-~Ez U}rAAAAAAAAAAAAAAAA!a>&>&>W)crattak007fj#Xor"aOR_0klKRiB]=W=Cp4HE^YU.u@}uS&.-U|r}8pIAuvt@zfhZssʍZPi\7f*sa/"u*:0 zxsmTɡҚR8 }mzju^\pxh^JRbQ>ZTxdʨhaҰgfᭃlgKr'v!^waZ :}DČ Ɂ*̰ɾȊ<'_%!#}Wyt@}3DŽ'ྌ 䰉orMp`9Ȍ\<Ǜ&ͅq߈ޡ ˫bτw(Ψǔ뛿A)4E<ޕ n0inrJi3dnb\gA7-&AD:޽($iCe. HM{RvpKKĸ)1?ߢ-o̕lۛ3Нfث>(~ȵ肋/jssXaqp>\]zoZ{yɔsvӒ}ĞZ~{Ϩ2$hnwbBhnvM]SQJO\y+G0AA-Fz UrAAAAAAAAAAAAAAAA.>S ->A#>*l)crattak008il#Zqt"cQTa0mmKUjB_=ZFmFHe_YY.w@{vS"30xV|r|:pKAtv{@y_h[twˉZSi_7h*sZ/"Þt*:0 |wunT˜ӔQ4 nzlu_\rzi_JSbR>Z|UxdƩiaΰgfݭlgKs'w!_wc[ :}Dč Ȃ*ȰžNj<'_%!#zXuܸu@~3ƅ'ܽ ఊosMr`9ˇ\<ʕ&΀q ͥbw(Тʎ떾A=4E< j0ejnJd3`n^\cA7/&Af:($iCe5 HM}QzrKK=1?ݣ -6˖n֟?ˠfӫKަ(ľܹ{/mswXdukK[]soƅZnՄŚhpΝ{qZyz˱{2$fpudBfpvL_RSJN^y*H0BA,Hz UrAAAAAAAAAAAAAAAA%>Y/>)!>R?(crattak009gj-You"bPS`0kmKSj_^=XmFԀ@g&HH=)e06u6$w&+N ulw\z?vt[EO؋Ws9N&WG|PjBqJZzWxdæjaˮhfګlhKt'x!`zd\ :~D Ƃ*Ʈûō<'_%"#xZrضu@3Ć'ٻ ݮotMsT~9灿\<͍&yqz ϝ}bxw(Қ͆뎼A=4EŦ^̭Kج&Ȓ8}%usznymHaYq6xŽZdΒhlǪ|gݷquݰzļ|/$erseBer}K`PTJM_y*J/CA,Iz Ur@@@@@@@@@@@@@@@@"='g>k?>OiWcrpain001v|v{#g{b rjZ[i0ra>Vdfd{?Rd]v|;n=<]o6t`l~!xO.$vY(SUvuSKFwUYw,|=倘X%)\{8ƚ;1QkDِ;F-:+n'p(܈}5ހvʉhƑrS4s^FDpFJ.FEFeCkMP'9<@2.[,6+akwՆC+*~$Gpp?CE}ʊzdىŻ ̰cgD`>) ӫm<蠠Q""LSПa˥Yக˼WȎމ׋0\pqiD]r}C^MVAF_y#G*CC%HyUrqfBx^B{eBjBj{BxhBvcBrrBq~BvlBeBnBs~BlBkBpB>7><0>r#crpain002ef#Vkk btHIX0bi>DlfS?A˃7xjDaDf}pu|y5tL^{E^6*r.:|,AIPA}Ajw=FFy7 e GS~(^V)+]`(5^w Z[,Nw7BY70I6 ]Kp0bO%kF5>pE].OY+3]'wz ,j7Fa{) Ҵm<樠ݯQ""LSѧbįYٹɎW֐狾0^xrpD_z}EdN[AHey$L+GC&{Mz}xUqr{WBOBWBqrBqlBZBTBzcBwpB]Bj~BttBzpBpBq}BuzB8>1> {+>]h)crpain003SU#C[n Oy67G0RjK4kfC?4<2Jin"lQZ"RNOR(B]2Xh~FP}#C)K&`fR_I[k&;iktm|| GyUAq ZlwY[rOzXUCy\xTHEEJ5io/̉0҂2xbDZBsnwaf9;^6^YsO|J#{d<.QKzL_)7!=<%{2.~:6Z*=7e&0 fz"-a1Wz8 IYS O7.Q!bslh!Ʉ4pYA)dA(I@6R}?IQ'b.Em\hgQx6Нka٦jf楆liAq't"\z_X :EŽƄ*ͩɺŋ<'_%#~RvU~?Ć'乍 詋oxMwT6<BD3@496A(,!N}x>}>ˀFz،s7zꆾƌ1аeiC`>+ڎ ةp0㞟ڥPIRٛbX~ϲĒXҐȉ>$>!)crpain004^`#Ofr"YDFU0`lKFkfR=Hz6xz8tiCo;jq`mLq{NbB_cGgn&;prxuz T{UNydtuYerZz[`PyfxTkFeiXbFՆ;KۈVzwBsB|Ď~irm8P^M^#ht/ǀm/xOTdLIz24=7^,}R0R0d,V3oV vk@%oYgh[ X]t[F;"^gUx6̢kaԪjf㨆liKs'w"_zbZ :Eń*̫ɺč<'_%!#|WzwU?Ç'ẏ 嫌owMuTZ9\Z\pk?>OiWcrdeth001u|u{#fzb rjZZh0qa>Udfc{?Qd[s|=zk?;Xl6}r]i}~"tL.$rV(QRvsQJDwR9Y)H?dxBcCb?;y8LrOp>m{3Hj=+q%n''|-ZxinNdBF\GeV2n5wUryS"PWe PNn,v>K;y)SrCZCCByk_\lRNF`Z}ihvEr)f{S0Vm`<:51}Ë lwqRS*JH"Lpkn~fz_u¾Yaaj\XAMbJ?aGxoжdiھce}lbAg'i"SwUO ˃:zEڄ{*~Ҁ݀<'@%#}HnUu?|'҂1€oԅqNÏpT(lh>ԏ4^6oHF.=Yw,|=倘W%)\{8ƚ:1PkDِ;F-:*n&p(܈}5ހvʉhƑrS4s^FCpEJ.FEEeBkMO'8M[>-%>ht\^crdeth002ae#Qix[{EHX1bxLE}DT3B}a7wgE^EU}vrWu;uHfyAf3'r(92;x8Q(:O{`\T3\7W,_L.>h.J]XR,0UQ7+9-,u=R)@#rR,`d!"oEUj,p?%y47k=mXPg0ZPv);WvJlO$A`cI:air9oV*{bQOJ:W0wCnVR,:6T+/iRL6gC4jqY=qFCw|FXDiW`RqPx7ZFiU9`/sh~T1mP"uV;1 x}klUM+>UC*Tk~|ʯzzlu϶kcn~nl>ȸ\bZ3aMx"o٬zize嶙|>~'~"_wa^ ã;ƙ7ӥכ*̹ʘ֛<'@%##NĉBŔ5Ԙ'ʠ幞ˑ{G²{@6[C뒛*iM `TG+t.qn7xTY&0ml1uM*yZ^L6F>09:3팒=sFs dkX~F<aFqv xLr7h6nwpGF)L,/h970m`Ίimބ{4*%p!GV_4z4x8t܈^poj}NJ ͳei8f40n~ ԭm1䜟ܢR"LTҢb]ר{ĹYwȍx솕2qa"[Dnc{XL"`C@Z|O288}3B3w:yuo`iwdWFfOFiVFcqFbkFgYFfTFhbFioFi\Fb}FesFhpFgFe|FgyF4 >N>)k>Ncrdeth003]dL~eRyCIY b+GFW.DEDms9+hK(Z9JX-C@. H\A&Q&IV.;223#+x r|/ N qf0Nl)nC71|_?lt;Q2n@`*TCStP2'bGCk#Klr8hlp]ClALGa2l?UJ* !1=9]ta Tsp-`9IkiQy}9TEtNl_ZfiYW>aEmT;_-|_j_~ ~zL["vjd^ } }f|RS^A_T*mCBm?yzsiƯsbkԃvy?Ƴcpd.׸aFw+ɥiѭEǫjʏ?ڋ$ۈ"_s`e ӷݺ8Ƹ˱-}ʩ< ' B%,#G ӺFѺ1ɦ$î}I~CC>/Mʗn.iKT5]xJ.P6Z5@܎?\__(O7kB:ɟYS/Pa2U̍y::bC `?^9PD:O/ &ܗ3"\@9@ ; > iC :ducz g|.iu:\mMtH~QvIcK2_R-U6zc>:\6ldjEw5|,#` fI?O55{;gʉ=z|C~ȯ ֜dp;~e1 >x=J?crdeth004ioYs`rRxV݀ep*X9d2\)72.$.4kG]b2b2Q ?)T (zڝ ∌~Ȋlkiі boY1Yӟ@|Q2ǟEИ烇 Ug]^LM[t=If䃊s_agPYh|gZi`dNݏ^bYKxP(3<ɵ*KF/e^f.n cr)gw4i~*&/]{3e4]Bq<:p<J&>;=*7'crdeth005mo_zm\TwU{bt2Z:ak@1FCAXP=xEc1J[j|;jK4ykik~ b YRv4gzGjhufgN<=wQEX_=+[LgP IQ .f:Sj3%w2.D2C% 1q&J>sQ6 w#"ATYANM{DW,HryzGPqTQ-nN HM$'}I#Mt2MYg]@ld]?7dWJv]<&>X[-Z/TqYi5JwlFadx`z[ pwxqhOokvc.{Umb߆k yuJp}K{80l O9uwoB&cKD?+' {J}\gY\oQN܇'Ч0nԇ c'q]p:y0!WZRQu uǩ@<'B@-X#S9 $܉Ȉ~L4vS-}5_tjR+5H-r{nt?Y>P(y!skz+r_dj%]',5U } ~} y}v ~`>PXBU8f!ZM[`OcJ]rIejLl`tZai~ ] ?5HJ%vtwz ~vxC5Sk~2hZ,sR$e!&[F?N N_Ob2^ OB{@$PR:>tWdczOqeggZb_V$TE>UEaas%c OOR3en$i}]sGhoWx_>hLpk8a&Y9I:pFb J2z6G>0k>death001jikf%[lrV f`OkPm_j0jRKORf[c?T4WVCaApAmiJ"kBhB(\L|MGh`D}vF^)j WADI]@[zBXiLeoFQqmSYV{WK_jKGrS&4tÌF\`WZj99o~~nxbsum1[mp4㔮ΐрnf] qӄÂwѐFԐFrzv6gefe;mD}>xkʐ!QI;5{65x4/|'4M j!mx\~4v\7MЇVw:Q,[&QMN:8h9EE_YZ>|P4<0qHv9mM>{ÑFvDf\vrֆbPji\__hfIrg)$şӡ*eė>4"2֛(@'^~RwQtH[UZNG@?a>C qA}dǨOgҮMcalMAT(W!HvJD'd\ef _)ͱehf 4&`,%CzѼ[Q޸Z@c(d4`a{-qڬ{:nӄ{bҚ,}ZÁ~Ԧށn}rޝ%Ȥ42; d_te\g3\1WUbZ4 ,4ڷ8͹ɺG%$m5nϩ0Ҫ>¾G&ųRѹ=ٹ>ü3 ظ41%d͛nޣ3Чcد>(κ"熋*|z߄tvJqX}oȒgّʡzע"ĩgհ2,u~`xW[}@Vy1w"5sB1xyROURuCCCCCCCCCCCCCCCCm/ >$>i>GP-_^death002gdg^%XhoR f`IeIdXa5eLKFL^SY>UC^NpH [@c8 ihJ"kEdAIZMGGh{`H_@W=qfQ@DE\:Yy;ViC]p@QslSWX|QG_fHGoM&Җ9uא7ZZPTc7ц9ozpxcpuizns{CxeʵJZӽH^ZlGJQ'U!GxJC \8TD_ W)ҽ`c` F{GX (,zEdWTJ^]4Zcv%ov9lݘljnݕŧ%b둊뎮'lZ#ݛ˙1 뒍gahck0^YWn\1%;I!k 2ұ3ǨIŷ'ήT³)¸35 Ž<;/ۉp˖l#5إd?,ٯ"ۂ|.uw}kwrAkX{n͊s䆘Қz●"ͣg॑ %`e"g~`e<{"?x_<}y^{ZYv_v4444444444444444>>eE>܏qr8death003`X-`L,P^ gH ^` AWAP;PK3\=V<;]KBAiQJW]IE\:]m* a^I"zaKZ:GPNMf@Ԓ<u~t݌|7UIPKT6׀x9i~mkzv_b`oC}<2;e;K>\">Y^4Hx9death004]7-a$,L=1a0"SQ@/D9T>ZN;YOV=GO/R"9"0/WGZR@hPMP)MBE13hjCQ/4~O;G8?-=&`3?)6l+,g=e,6zXGANA"YW(c$Ί{&O'FB5WMh]\xvqk Ĉs~#܂yڴ۾ #ex\[pknjuk[qxwD|yFpx\IqW}N|N<}<<<<<<<<<<<<<<>%>vm5death005U&%V(D-<Y$ NE 68 9H>PN0 XBVA!M H1 /2 )#  [`L9"ILI_I#Mc=>f+-hL@M :'4O33a5 ],4!,l#"g1cy%-zmR>quxޑrpӏߍ,kaq|Ēל&qnlrޒ%˙ߏ42 {߂ĂPJtP\S3F @>bC4,9ڰ8Ͳ¹˴G%$qm! >v=mdeath006`dw/ciD,`S:Mnr!L\ dISnkM&7k]>Nj>NQMWe[ O i_Mn WSa?M[9b,b9ei9S:Fwg,UԈ6^EG\-8SY`N@O8mkP;SZfJcD>twAdANEUGWChaMqSrOB[c|n-`a^zaUJzwZHu'b# h_K}>Wz-V>U#BK^]T4HYSQ`zGJNLǮ [|-Sf O6Q@TDGVly3!+[R@rU-Xh7i]S^H&^b%@yDǙGf'rem]v9q KejlitAEpA 6Ty,f}2)-{$TpE]pa6y{ vlT*IY>(.Zq]C~3}0SZ]" 2O%ONj2UЍSFΕ ǃ0@Ԓ5kgPYl@Ta[[q8WOO̺}%p'muSX˫ Ƨ }܄up||tyխ e&o'yeI֢5ԞPCʶMH}vPk׈n~jvRnljV}UvTVnk*})wP*qxVRUR]RbR]R\RXR\RcR[RfRfRgRpRjRkR>O#*>6O>c=Gdeath007fuit#Xvn^"bdNwP}]{1h\LO\DZs=SiAnDlfKtg?fF(ZMMIhq]@}}E_*f&WEEIb}AbzC`iLtoFVqiVVXtWRBhRIo\'F~wvh{DZjRYx9}9isv|hx^}ri Xhz˅Fńvo`ㆶU;hwyBC̎lzoE_c^c:kE݀?̓ft%|LH:3\7z7Ńo8r*&t0M{ jcl[4`SdHTm8N(VGzQdJnN:6`7>cZYYK}PnF5v'Sn|7mGAysƑBmf_[ou{ZOwiZkBfsLkg=$Ǒ{Ɣ)eA4"2ktώ؆R):d~YwUM[YbU'NACaB?ZqAvpVqUcljɮVA^+a$KvMI,Ҙr֚ieեu ٨m3os°s <'_%%sC~eQe@ïo(ƣq9ma-zwx9{xa<ˊ&rqu јvbrw(Ӗ˃A)4~E< [0W\^JT3OnN\RA7/&BD:+,wiCzbƛ5 KMQKũKƴ=ô<ʨ4ڴ<%Eǫo εC^ȺKչ&ѐ8*ߏsڗ~H݀XEZl˧hvź|pqܽ|/,Wb@Z}?E@?~x"|'wC"{zMIULrBBBBBBBBBBBBBBBBJ >Q4>!9>|0Rdeath008sg[~oh"oY^gHrT:wVn}|_~l{hW*Vg9iz/=#19C&n,!0'T/LY;,H1B@lBu( ]J$-HIMB;DQw@YzE_\}@MmW2NF6TQ9`E(lO'UF6x{$zRfpa]R`n9N}7Mj0v8hzQaqrjm a\PknP}4}Xwu8WaoV:ahywytC{CBȎGkhOnep_cw_cS=lGG>@փIf$&ɉ%HH=6? 808Ё#8˄(&-N! !l[2 CrSdhK[Vvm:4KI>SO/QH L98d{`7V>cJYW8YNK9~P,1C-4#S8mҒ?7mFEU4q^BpmfY_[?mrzZ{Wki|b_Bmh(UjgTLK${5y.KbRJN3>"R2&2P<'8{7Fr.WBi2ML"H,M97h>;cߎlMgTn{fvd9[/U$+-<%xx{z uYw[j; $ C٧!ܫOtZR\Bg(k9~gij-XnlSlQx9{wZ5&rru ubrx(@=F}E9 ]5X]_JU?QnPZS@E/&@f:('viAyb{y(nuP4sz,/hJjcRPni#PelyLO|Q,uSoc}BkBiBPBS~BeBhB]BUBcBGBQBVBEBKBOB;>pZ?>u'>>.Xo͊j6death009lYri"a[jG]3\m}bm~hX.Vi:i~29 15C$n)-$X*MRZ9*N+E )RSth[w@jŒ>jɌH N{Dvl$|0Dt=63< 5r9}51%],.+fH& v _.py9ccF q<&PP3aćZaw+H+*TKODiMG(71k΄0H+_fYp5buUVuV5~98v =!RAsW$/62' 1:ޑ BwFy69΄n(-Տ<.ǔD5ɦ3*ؚ%ŸϸզKqPp-6Zg2cX5R.bT`KAK`[i8%naj$DŽgЀxߚ#\˔&$Һ#VaG_r1SfqXMvb oz[sKGzRtMssI+pP1jKa;;;0;-;;;(;0;#;9;/;+;;;6;2;H>bJ>=sxFOXdeath010y otfvl׀t~s)d8y/??1;#C+!n0=4M`]MV5bq+VePjOn){Z:~3\NCeui`w=g6g9HsPgbtlo.}?lkpx9~-Uql\`&o{H0Cuņiqrj=?+A0[<^!@}}stqpjN&5n2bArOmヸ5®$álsez'{?1!$#C>H< SB5,䊁"HByB~Y)xql DN&t+vdZL6/8q2WCS*k9%ahsdwflWXMZSWQ:KhMQFV27@<~is1a|1f,Gx.Mi*2Dzq!dj`a6i[Y]H8Z9dQ1MY,=.^4V{O[gNy2~shHOV zRh/I;0{7p@@~83~:8~S_~OY~>=~;9~GR~N_~AI~\m~R]~MV~]q~Xg~Tb~lc>C>?=msRZdeath011iw_eOLreЀs掑}n+g0|%?{1XL0*.*=GV%3QY߱mm涇aϦUQ֚LƖ?ƥE֎DPJ1`=ot뺁w|~it}euHttG.E҉impfL^YȀmWYY\TNEoQ}oNoKX`)c&.̂zO~ yq-haNp nmГ<&ғI/ҌFd7q0c2hHE5n3j=E8{QGCRMJu>$64>|=ax8death012rux"foqx&b(Q`thǏtp2\υo A<>VA-Tp04_G&XGb-TBYKuzO.[]M McLTOgJsMycڀJzhd8KS0][i/t%f \h]m?Yqos@ht nwtMUlxkqrb]t~gz}bU ~)k5+R"~}.ij/a'qw!hG?HgTavhczDi?i3Dz3LW@E^5mPRP+)P`G N9b:VH;NR<2Pk$f+0X]kRBZtrbnY seC8_ہ*T{*]t*w}UOtQZ/KTEOiGS)YO@GO>n5kCHHa9C]HVw2t_@lPKTXr1EtE`J>~kNM1RxY_X JwOhnSubain7u/Vsnb `" `bN!uq1s mvol?SrLJ G-g0Ql[6^p@&%ġyhŬ_cѰ]iluօÝ!ëF]÷LGĹ{݂эsz 7/ǎ3UR4,s_us竇dѫ[VۣOʪDJݞAVT2w@~zꪄ{Xht^c=VvGO3Ze‡e^pb,]XɂkUKX]4NHsPpQgIVY)‰*ƹ4إq#GtU o(M3 Zgʝ,˙$1ʔe3+.GC2/<E6PFARMI>O#*>6O>c=Gdeath013fuit#Xvn^"bdNwP}]{1h\LO\DZs=SiAnDlfKtg?fF(ZMMIhq]@}}E_*f&WEEIb}AbzC`iLtoFVqiVVXtWRBhRIo\'F~wvh{DZjRYx9}9isv|hx^}ri Xhz˅Fńvo`ㆶU;hwyBB̎lzoE_c_c:kE݀?̓ft%|LH:3\7z7Ńo8r*&t0M{ jcl[4`SdHTm8N(VGzQdJnN:6`7>cZYYK}PnF5v'Sn|7mGAysƑBmf_[ou{ZOwiZkBfsLkg=$Ǒ{Ɣ)eA4"2ktώ؆R):d~YwUM[YbU'NACaB?ZqAvpVqUcljɮVA^+a$KvMI,Ҙr֚ieեu ٨m3os°s <'_%%sC~eQe@ïo(ƣq9ma-zwx9{xa<ˊ&rqu јvbrw(Ӗ˃A)4~E< [0W\^JT3OnN\RA7/&BD:+,wiCzbś5 KMQKĩKƴ=ô<ʨ4ڴ<%Eǫo εC^ȺKչ&ѐ8*ߏsڗ~H݀XEZl˧hvź|pqܽ|/,Wb@Z}?E@?~x"|'wC"{zMIULrBBBBBBBBBBBBBBBB,>w1>u>m*PJdeath014odue`euP"}dSYg_mml2sPL]RCke)W t@?,œj˜cdǩlϪf5beg <'_ %%k4d_Td&cCbZ|*}{7}}|{bܑ (uZzʓМzpvr,Ț?.<8 ʇ` [}`[b>X0SRbV?:(F7ڭͲѮM*$zm4}oʞ0 ӝ>G&TҬLګ>׶3˷1٪5ڲ 6Ǫή?fʸ>ղ(վ"看%ލgٓ]􇝥K܂`8a˙hŪ{ܵZܮĸ2$jy@m~NU@Nz*z0vA*zzSPUSrCCCCCCCCCCCCCCCC ]=1*>Nv>ĒvZdeath015ncre#`etOgQWhZnhm2oPLWSDef3S iA nDli=h1j;(]>Q>h^2{D`*f&[;7NS}GTzJTpWhKIglEZG]GDmFIvO'Ԉ9wzكFfbafF}4hyiweyuk~9[~mpx;[Ppɏ|؊beǐ[τfnπqs‰99vlhooc6c8p>y^HrAu\j&{K);2}6v9uy8(,.K xWyb1WXˋrNρ_YȐt҆O,X+wSHGN;f;Bo\Bn[ͅ>P< $>_p9kI5ttWÉ9q6bbp[pXfZf^UodImiˣ. r-ˍDٍ?Δ4"Ө/,C+RNwFD\ITJ'ҴGC;aƻ;4Z2vʻoŜMgӡNe՜cjQCT,U!=u@?,jddmf.bdطg<'@%%3b˩^Tضd&dC؞b\״}%z|9y`Oߘn_Nߕ%ziSR쎀'rllzZq#kMNߛ1} ~~iSTfNa^fcjh0k_gZlXnq\1gch%n;gQJ[Iz!{k mŠ3('@fy).0a1kۯ:ȩϨ0íE˸3׬,quԾֲ硆#ݍgؑ^NN=ڈf袋bɌXhŚݨiܟzĨt $s_u~T\y@Sx,o"3kC+oxFCUFu9999999999999999R=h= t>baυ6death016g_j`!YbiK\OQfUlbi2eL=MQE^c3?<<@'i+n/l[:X.[8(O=C=hN0{-K*P&M97ES}>Tz@SmPf@Ig`BNFtQEDaBIkK&҈9uuxׄF__ZcF|4hxiwbwugz9X{mmt< %>dn8kH3wrĈ4p6aboqpQcg^[`g`Iliɢ) |%ɎD׍?̕4"Ϩ/(C*OIrB@\GSI'D?7a94Z/uoèHgЬJeΤ^kO?T,T!:u==$f`djd0]}aξe<'@%#1_±ZVνaس`?Ҧ^\Ϸz%xݦw4vs\▯oq[⓬,xid|b'}nzxq#w[◵< }cicb^upcc~f.\~WVoZ(6death017VX_Y"J]RC@IHbRg]c%SELCMFZ])5Bpnl<51)A2'19t+gf4mD3tj4j7[ihsybH_sSV]\YIfi) %ˆ|F̆?4*'C'KDr>b:6Mdeath018ZTbU OZT>CEOayYgca$UA+HM7_\+5 D inn=01$B/'46t/:m*(vr,,-&8448Px6Sk:SpTb92GmB75?uB?7K7(X>'4puvst7ZVU[6x~4hot}hw`qtct4Wwmim4xяvpu`~Z<}hywz44ojhm6c6c6@hlGvuBwjcɏv+}N+A.d9r;vm;1~'6k&mi4 wX7MluUo8P,W,nQvIpN?:d4E6ZfmX~z?zy)4#9/t>`i=mK3hm4o6aizks{iN]hXSa`W(ji) ,zF3~3,s~|A2E?s78b@PH @3/p54b$up>iB6VhN3T,T!1u6;$ĨamϬ]6h̶c.Uw[{b9,=*%( WS&]\)Wdw pt3m{;z{|p ˑ'tgw|ypts,Ո?ȉ*Ɇ5Ɂ8<b ]vbgf?^.ZnYb\E8#'=4, zmʆ4}o.~)''zV`h))30i̎4wȨ<$Е7oyӥ9E=è'gswՏ9%~hƅqw؃(sf׈7ijr~mdt`ʕpǫihƣg~%$Zj}E\xv@yIq?Axxw f'b?!yfw:7V{:u|444~4|444}444}444444Ø;< k.death019tnY4zka3qxQ4yTN3ncA4uRhy]i|xd~VP~fFr_,<' 3 ms! xuJ63s?()|E9sT/4wY+zqG"6EZ2$n1 |N1qq97sv8hvs;|}Wuh1ksR<3o`24|X>|MD}RQ yyl7j4y~qzS7ysXusj4lpnjozztunmm4zʏ{4zy4ӑqbuϑuw7z{tw4phrvxhhf4d½dn4[۪FfhơY˛4`ɳp]ɪE]׀^ш$XwV4WtYw`Tz4vđptn4|Ϗhle3_*b)eƩylmkh3vxox4ow3`●_鐏]tvl4eɱukl4{zyqwn7vw~TvurQvyiZsw~_}\n3we3lӏvxt{typ{V,^rg3tc3qy-c֫e@4iM4b<4iChd13o~83n1"n>f9hj1h Z'3QlQhoPt`4wFt};r{7 a54c.3i+"|xd|~_}n\ ~sWpX4rwQ3xqQ .6.r>*n ["4psuS)s}PyrSw}WsZh~dnx`j,{vtuhl4􏁃4tqu3lp?oag,쑂7n퍉i)|4xԏvꏐz鏏鑏z{]?7򏅬t7MJG)KXVQFU3q揎n獉摐z珋呆eϏ[ڍdR^z^)L$y[3w_3VWLL͏S4WP) !<35A9.G42+/,%v*7z)3 't~Ev{94Gh|?4#3(,M6(3@4B<э-mi$op~jx7esp$fzkcsh]X ]V[ZhS' S&Q)7{̏~~Տyҏw~w}{Ώ}~яzy||}ȏt~xzzwvvvyxwu$;Z9<U>j™death020joivieptpym_ko^^hcw\$mq+b|3bsf$~yQ8Xl[t0quƑpz mwg7qo'|Zuj)bh^6^4]g4b7qjwh3oxpqfv&X.4Uf{7jlbn4`4[!h_[!weG\F4[I7hDtwxpy4hw4m\bbawn7mxQox]aud4[2h^,bXd]RzhP|4NgdZ4CLFO*R?@64IYpFLEEG$@/w=4?%tAwI; 4cp[tY4iRAWMOW3G'*KA)NKfnW`Y^kRd3bw3dwYs:I1G(FvWo4NVuUPVX4hw;fO]MwYQ7rvbpuh~sfwk,_@wl\,jY2tk3ec63uics4hq)ek)lW$lW ]d.fh~vnwv-LMy?w\{GtdvD,lW3k_4mnhvboi7h?ŏb|ugqookff|pfi4h`4zMvK n_4hxXkfazdvX$b~b7rYmnWm ggg3 o,conhlpoio^ljgj4ftg6nTF3r`BfcC4nl?yp4zt~osr3jppu?{mayd,yp7lyg)qy4vsw}xxy]so?o7tvtts7uJFD)HUSNFR3nkxw|vbrXsaOsOMn[@h[Q)qI_$gXo3d\X3wSXyS]~Ik|I}nP4zTnsM}%M.0w8?zM3u1Iu>L|6Xx*PmCk4x/{+w,e,&"v!vt&7y )w3w$lA-vi6+4nCDhi;F4o:3u$W,nJO6r%M3m=\4y>9~)sWv5Vl(3R/dXpNWhN RvMiZouYku VtuiaY_U)]]Fh|l|mvc{`d~ekx~k{g}nfybi{v`{SexaguhbtPcwXeu]>33s>>)\O>33>)\O> ?5>ff?Qx>>>2>Qx>o>5>>q=J>>)\O>>? #;ffH?z=339?L</?= W=3/?L<&?L</? #;ff ? #; ff ? #;&?L<?z=/?= W=3ff ?ף0>v/?zT>4?zT>?>? c>ff ?ף0>v?E>?ף0>?z=??ף0>9ffH?+>33E?E>o33I?zT>533>33=>{.=>5>33>=>q=J>>(=>)\O>>=>(=>=?\B=>Q<?L<> #;? #; ?33= ?5>?\B=>=>(=33>)\O>>)\O>> #;>Q<>;> #;/? #;>? #;339?L</?L<ffH?z=ffH?+>??ף0>9/?= W=3>Qx>o>>233>G>5ff>ff>V̘>{n>8>>7>>6ff?Qx>ff?G>x>>2?ff>?Q> ?p>?)\> ?>?>33 ?33>>{>?>> ?tff??u??}ff??|33 ?Q(??E>ff ?ף0>v?zT>xff?G>xff?Y>vff ?33s>?ff>/?zT>4/?= W=3??ף0>9N?zT>8N?>D33E?>gff0?G><?>?>33>G>5̘>{n>8̠> c>9>=>Q<>q==>=>(=>{.=>Q<>q==>Q<>=>=>= ?5>33>)\O>>(=33>=>{.=>;>Q<>{.="?= >wff0?G><>?= >%335?(> *?(> ff0?( ?c&?H ?~?( ?|?>u?H>33!?H>ff0?G>< >>k> ?t>R?$>?z>?'33>%?a33>{?*ff>Q(?/̨>?+33>Q(?033>?-> ?t>>k>{>>G>:?>>)\>;?)\>?Q>?H>?>u?\>?>?(>?>33!?H>ff0?G><33!?H>?>33 ?> ?p>?ff>ff ?33s>33 ?>?(>?>?>?Q>>)\>;>>2ff>Q>]ff>ff>Vff>p>S>>7 33S=h><+>33S=ff&>H=>=̼=Q?=ff?ff>= ?>>̜=>9== ?9=ff?=ff?<= W==>= >ף>=>>>̜=>̜=><= >9== ?̌<= ?9=ff?`= >̌<= ><ף>̜=33>33= > 33=)\> l=)\>̌<= >=ff?>{?>?<ף>33S=ff>ff=ff>ff= c>33S=h>33S=ff>33=Q>ff=Q>9=33#?̌<{?̌<)?9=H*?=H*?ff=33#?=ff?9=ff?̌<{?33=Q>=>ff=Q>>%?>{?ff=33#?=H*?ff=ff&>>+>=H=33S=ff&>33S=h>ff= c>>+>=H=>+>>H=ff= c>>h>>+><\><= >̜=>̜=33><ף>̜=>=>̜=33>>ף>33= > ff>= >33=)\> ff=\><= W=33S===k=< #;33=\>̌<= >l=)\>l=)\>33=)\>ff=\>33=\> > #;=k=>=>= ?>>>k>R?$>?'33>{?*̨>?+33>?=ff>>s>{>l>>k>{>lff>>sff>33>m̠>>?>G>:>>kF?p>n33M?\>s33M?>=>?= >%B?p>j33E?>g33Q?(>_N?>m33M?\>s̠>>?ff>33>m33>>_̠>)\>@>)\>;>G>:ff0?G><33E?>gB?p>j>?= >%N?>D33Q?(>_33E?>gff>p>Sff>Q>]̠>)\>@33>>_>)\>;̠>)\>@ff>Q>]33Q? c>6N?>DN?zT>8ff>h>d> ׃>M̐>+>ff>+>G8>ff&>F8>h>LH> ׃>Kff>ff>e> ׃>M33K>= ?E33>= ?4>?M33{>?N33{>= ?H33[>(>J33>>\33>= ?̐>+>̐>H=\ff>+>Ga>\>W8>ff&>F!>ff&>Z8>h>L!>h>N̐>H=\̐>= W=^ff>33=ia>k=_a>=X!>33=Y!>ף=[33>>\8>>h33>ף>^33[>>Cff>>(>Ah>(>Bff>>)\>Th>)\>U >= >Dh>(>B>33>`33[>>Cff>>Y33[>q=>Iff>(>[33[>(>J33{>= ?H>Q>O> ׃>Mff>ff>e8>Q>RH> ׃>K8>h>L33{>!?R33{>?N4>?Mff.>{?Off.>H*?P33{>H*?f33>H*?K33>?L33{>?N33{>!?R8>Q>fh>>P>Q>QH> ׃>Kff.>{?O>{?e>z$?Qff.>H*?P>Q>Qff>ff>eH> ׃>K!>ף=[!>ff&>Za>\>Wa>=X>= ?Zff>(>[33{>= ?H33{>?N33[>q=>I8>>h33>>\33[>(>J̐>H=\ff>33=ia>=Xa>\>W33[>q=>I33[>>C8>>hh>)\>Uh>(>B>= >Dff>>6ff>>)\>U(>>6ff>>7h>)\>Tff>>(>Aff>>)\>T33>= >S33>ף>^!>k=`!>33=Ya>k=_!> #;D̐>= W=^> #;Sa>k=_(>>733>= >Sff>>)\>T$>ffV?$>ffV?fff)\_?ffn>)\_?ffn>ffV?$>ffV?̌<)\_?$>)\_?fffq=:?!>q=:?$>G1?33>G1?ffn>ffV?$>ffV?ffn>ffV?33>ffV? 33>ffV? !>q=:?=;?=G1?$>G1?33>)\_? >ffV? ffn>ffV?ffn>)\_?=;?̌!?c33>= '? 33>q=? 33> ?%/?\? 335?(> >?= >%2??a.??yff0??b>= '?y33>%?a>?z33>{?{33>Q(?33>7?>7?33>0?b >?z> ?t33>{?{??}33>Q(?33 ?Q(?33>7??7?ff>)\?? &?H ?~ff0?( ?c33%? ?ff0??b?)\?33?R.??)\?ff?p-??)\??( ?|&?H ?~33%? ??)\??)\? 33M?>=33M?( ?->?= >%:?H ?&ff0?( ?c;? ?,ff0??bB?)\?133E?R.?(J?)\?.N?\2?pN?)\?0̨>?+33>?-33>?=;? ?,:?H ?&33M?( ?-J?)\?.B?)\?1 ff(?{?&?(l??p??\?33?\r??ף`?? s?>\?33>pm?>zD?>zD? 33}? ?ff|?>n?= ?j?>f??33a?= ?ff`?= '?V??ffP?%??\?33?pM??ף`??W?>\?>pM?>zD? ?\?ff(?\?ff(? S?ff4?q=Z?&?= G?6?)\??335?ff6?ff@?{>?ff@?{>?ff4?q=Z?>? S?>?Rn?ff(?\??\?&?(l?ff4?q=Z??\?ff(? S?&?= G?33?pM?V??j?>V?>g?>Z? >ff`?+>V??33a?= ?j?>?p?33?\r?ff?q=z?? s??q=z?̠>ffv??p?ff?q=z?ff?{?ff(?{?j?>ff|?>z?ף>g?>ff@?{>?6?)\??ff4?q=Z?ff4?Hj?>?Rn?ff4?q=Z?&?(l?ff(?{?>?Rn?ff\?Q<R?Q<ffP?H=Z?ף=ff`?+>ffx?Q<Z?ף=ffP?H=ff`?+>g?>z?ף>z?p>ff`?+>̠>ffv?33>pm?>zD?33>E?? s?33>pm?̠>ffv?z?p>ffx?Q<ff`?+>n?= ?ff`?= '?ffl?%?33}? ?ff`?= '?n?= ?f??ff`?= '?ffP?%?S?G1??ff6?ff?p-?33?R.?.?p-?ff>)\??>7?33>7??)\?33%? ??)\?ff0??b.?p-?33?R.?ff(?{??p?&?(l??\?"ff(?\?#ff(? S?ff4?q=Z?&?= G? 6?A? 335?ff6?ff@?{>?ff@?{>?ff4?q=Z?>? S?>?Rn? 33}? ?n?= ?ff|?> j?>z?ף>g?>z?p>ff`?ף0>ffx?G<[?Q< ?ף`?33?pM?!?\?"33?\r?? s?>\??W?33?pM?!33>pm?>\?? s?̠>ffv?>zD? >zD? >\?ff(?\?#ff4?q=Z?&?(l?ff4?Hj?ff(?{?>?Rn?&?= G? ff(? S??\?"33?pM?!V?>!j?>V?= ? ff`?= ?ff`?= '?f?= ?n?= ?j?>f?= ?ff`?= ?j?>?\?"?p?33?\r?ff?q=z?? s?ff?q=z?̠>ffv?ff?{? ff?q=z??p?ff(?{?g?>j?>V?>!Z? >ff`?ף0>6?A? ff@?{>?ff4?q=Z?ff4?q=Z?>?Rn?ff4?Hj?R?Q< [?Q< ffP?H= Z?ף=ff`?ף0>[?Q< >zD? ̠>ffv?33>E? >pM??W?>\?>zD? k?%?ff`?= '?n?= ?33}? ?ffP?= '?V?= ? ff`?= '?S?G1?33E?R.?(N?\2?pB?ff6?q2?p-?rff0??b̰>7?)>)\??q̠>7?p33>Q(?0ff>Q(?/33>%?aff>7?r>)\??qJ?)\?.33M?( ?-N?)\?033>%?a33>0?bff>7?r=pm?>a?=ffv?̌a?>a?>ffv?=ffv?33{>(l?$>(l?33{>a?>(l?33{>w?$>ffv?$>(l?ff>{>?>zD?33={>?33=E?̌<{>?̌a?$>(l?33{>a?̌E?>GQ?t>GQ?33>GQ?33>HJ?t>= G?>GQ?t>{>?>= G?33>zD?>{>?t>HJ?>w?>(l?>a?>(l?>a?>(l?33{>a?>(l?>w?33{>w?33=GQ?̌HJ?ff>\R?̌zD?ff>HJ?33u?{^?"ffx?{?#n?w?&k?)\_?%v?A?!_?w?$k?)\_?%n?w?&Z?pM? ff`?Hj?N?W?R?\r?B?i?33i?33C?fft?;?ffX?;?B?E?W?5?33i?33C?W?5?fft?;?33i?33C?gambas-3.16.3/app/examples/OpenGL/Md2Model/goblin.jpg000066400000000000000000000552701411575327000221550ustar00rootroot00000000000000JFIFddDucky<Adobed       !1AQa"q2BR#br3$4CSc5!1AQ"a2qBR#b3 ?5~f EI#6_u0κX GOH}V(73kֲkX$vvAÞ~$VT^j#F* Jg"=4c~l2uk\jbm] nֱ^ {VrvR)u,O\ u1ń+{d(:v[Er%ŏ FeH6ڍHj>DKP3y cfm{d:ՠH{65]h%!w6oՖfBKad k`24V# t fƛVǓ$tbSR]2H$Хf^$h:^"b)$_Ecbm]t[5;6X/ᯭb*F6 -k#VW+bǧA5ª:϶%#D*C]j,Uv_n0\D,aP񬬁]񯡥Sek.FV278~ֆa0!ͅ7kO 1?Ue"Ac*YGcjiPHq̚}@">; z/fUҶJcqqxgUSf$8b{r?**Z0lOpDb P,l)EMc٘9I-?|4gR3I3'GDQrHk}@ߦcp 6SI1{p"s=I054k6.lSKxD@=?u5YWSnG7,2:-*>}hM`rr7`^˦[>!ڙc:1OK[םEzR2e$+J+fM!IJ)diqemvڦOV{g^}זJzGu6袊x{wX\yIr PV5w"R /O/;dRHy6j:-q’5cޙx[#JT8'F;F:zmB}qb%"PE"t/w3@ukDRVܘ;RNL$4M9 3d8<~|'!=D|c'3BP2Kk^|U<$4VQ2dTE/o+VֺЃ&c8DI1S3[dDDy i"jKxvR m7T/N|bY3#|aٰX=eZ/+^#:$滤RGVE*nn{lM٤XA$+]mҷ5lw)^"AKA zF7q[ҾgF.v/)%P{R_#ڱe;0&XOhB@l>Yd4|dMJ(7vE2#TSPYk|F$sC`8y("|֥4L"R 9:f*S&nȘ^2/HQxՇBI>(ek@S:cŐ9 nZqKN-.V.,2c!k0&#dkА(8N<~u mAoJx$%L22,qq`I㠢=|kD"3UDVqbkx7?)$w_R:kr6U +#iU~7<U5bDl;`LG\oUmhRWXـ[}A騯:vXtCH6M#c+_U9#Jטu›J ].3ɍ̗{ąOƓsFP]vO}e少up>{t(~ݗx;\fFPٗ+ݎbuWWpD;9qP#j^;\paj~#;=o}\\JfmO~'M\}"&9W66ۚv lK3c No6dM׿Q0o},Y\Ȩ1v)#B*8{dg"R&yl <lf>SSRZhtpd1g!X(*5}.M]z)޼ ܑ󱮂8w^FǘLPS|k. |Fd+MzsJObWMa+I(X#Sb-3x!WP0HIX#kEKsiS&JXbw5F: 夊/l9XoMOTBBw1OgO[q#Z`4QeH,M>vmmi%ƒ5_=m^V8qFۊEk4/.Lk`053'AueIQZ>{@G&L(5,I` 骪N ge64F t,'İzBGЧ#ERvLXUKa$Cʷ/Srm7n*CT|^ȱE!v:״= jR$?Y TLdC! oȢ1Sև y;PSa'O>3·Rf~g/CMQx3_B.kx\6!W]l &eTKvfVd܈u?v$˖n5p.maa4H SmP1e58qcU[^k>W4EV +"Sb3_[_,dt'# ug[<:ketɽs: c?W*)N!.C׭+c"@܎&kEU/5ʾk6ֆRV,h\2Н5t+׭43@SFzS١%1Pm?׬ ."`OVa~ ׽?V& ]z /l Φ^п} ܁· g>;)I(O:=ؒz kTvcx=u>[P62 fmpt1[RNn4]H}uTn zZ2&@Gț+!J{E4cGe3}J,ChZxa4lm֦X*oJ$LPX^Ajhn[k.CɐHl4|҆,D܏žmT3Wզ)r1XC@k8H~Moߊ P ï,j,y08#*^\v(PO IVrq7rkZf9'lFv#m4ߺU9v\ n?IoMJqQrNd\:k^ЅŬkл@2dۈ6?+H_l^T#-[L jVnFRK$ $t$͵1U=շCcAjYcZs@+ʴcd 0_DV ݬ/SjF`$PrǮ5n\5"J ܆[kjhA·?bH_yjUQc/U=,5~Cܯ}\oioo!S7k#V__V{>A?^o >_j?L?nB+_!/6/}O]^3{g vFU_RA+q93s6,j㐔J\Ԋ\5r46@E]de/ē#Xt*} mnQTcl xgU#C@A|^ו2RDPV{ۑkŎOr)qvHm`N)gs)bRC.Sx3%ZL o($xTr 7 n#ʧV/,ȨH&IJx"q# k"%tuBBy򆷶Uajelf/]ukm'i d pEP(P%,wyw2kSCkWCk@>҆iEW gbİk \L:H6aDoa3];Ǘۧ%gǹ i, ҕ)+ڱgp~&9^6ƿD|N8B0 ^ͱyդ:nn"CXe.=;T^)GFA,sLje1Wgu;F삑1u䨑عUF]xԨ`|^#Vͩ%Ub5If-zF޴'Sh9 ɏ$ }_"oN}mZy ]6aJ*Ӌ][R"cZIĄ%9~ly-eYI:1c{gmyrM!\`xu7ƕjr(UKρ.\3G~* ۘ|mmx-oƉQl dL\hXd/%"͍tj)R>kf?"; ՎC d%A{cRhѕ^i2)%]#n?Je,W *d{osSմΕ%D휲#"ƿ6wBOŠүdz-jzyr(&p-mt˰hVYǔ~/JyfA߅$ YI` |r_G[-w<)e^,PD Vcuk@sVE&ڻr6 hr (["xk^ UNw?2.t6lY^!#91XBE={6!kmV{/ﲅUاQoybAH8.J\1[>˜P z)֍_L{H.)U0G+tC1`GrY9dcUiڍ:)aU (԰$ C̩elgQ~rt$eW>X2lo/NQ^ձv \2Ld!"XW2ݧ )RHԍl(mI6RPG p1:wc:iּ|@aw3,+SK m诎P=v?+)2HLu֟JEHrdvG2{SD") E{v;[{^h[0iŎESR&VSb#TǦ$| _WJ8U^s~X &ؖ4^k+OIgNe[Ŋ8azZ4[fh`:oqŖƙ+Q} F^HߺIPo7I2֭ZY/9N.{oA2[߮ FPIV7Iaoĸ3;M=X*! ڋsOVNGk0#]Gqgq:/xLaJY1'9=@VpA 0k^^ll:0hBxO-In}Ķlv$w|RGl)r֬Y@$ U%I*(WA{iֺ{ 9qU kVOxƖE=X{bK ,·` {꬏ngҍ#Hĕf gF&@$uڛL*>&?q\r ҃69ثXXbwq98@E+Iі\N.3wfֲlG0p2WJR:q82䛕/U#M#U"wTA9VNßE5!ˋ5g8u  'ӣzTX.2{i05^9[0׼3אS;RlUjX_8;wl|ys'QsFKqHQq֋W%ۆ}ܣ]/LL2A5 > ]nr:;h.|缌~!s[[q+/' /qha*᪄/*uS)-?]u:~X X1A2?z5k * "yϒ+pcA|R3ej..H A RE{l^Y՚*jl&4NU@ZⅉS e{ q$@YZ4;y7+=0;HW uxy FP{(b7 w)}mP-m>?G+!6svKx6k]7td }Rf '.l17>;4H1*\FH$/;O ? 9yͤ2rf[ߋ{qu5v>};@,  t [h֮MFBHdR4b5,ߙe>Tk0mؐmڻ7pC.؟*=?Wnŝ!{ʅl@[1ztSSVAeMtF.-w?SA;k~l;# kҹ}9jL7 jwt̯ojBl5?;+#sD$^=/֭;55*m81F8ImOH%=YV0H$Z\IAr>LER=j֚lJnNnm?Fս'kUZX'[ 0|^[R|1ֲ~YUcVQ}ݾ8.l甉[_m}{vr7US~:2~T|ly ы4D9_ \U+閣_W~/ 8Ok짱V^߀ \~"lWi1i1Z6aԒi̞mP6ԑ>B]V1aܻ[_.+Ybt,>NƒH \VZӨUb2HZ+ζ7'YS0oСHމ$|m:.ߎ7cB@*K騾_j -;Z;?Vż^߉Aq䁥ޤWv#9FÏ&PQk) Xl^I'K~_9q{Q0 qobJ'4"FzXj>K%WmAM7YxAa-`;C% (>T :JgI5 x3( 'bt[oRܡ7TbI6읍;{cÊ'^ftZjO˓O//5б%y|Iȭ]5ȪPdI,lkp[[JamkqU^{}=ǺKxI!|51⃋[kāТxPS>ALrkP]@xwLwufA_@i LE߭`5St7%ڭ?2I8-Mojs'>֫;+dNd|Oח#m[γf>WGwKqr{L6,6݉ \IUK*!ذ<նG&$T]j+ spnvv˫o{Xm[cůziRGGyIwX"_}k,>v 3dq`Abo7?몹 ˼J4&$tۅVcLB$$\-mj ~E3u5?vfJ(q‡p*j4ΧӪr/Zy9޴O(uƺILlI'SyA^LXݬZՏen;bQ p]GEﮕ{YҭqvL3&,sVY[[Vڈ9 LOXRoMÇo%rF7NxU'n~Sg'H˱7b-M+};o6bbLlEmځҝ:ERԚVTy^WÁi%n8(- +(z)Q-Hvv ̆i6Ɗi ,<",ucB mA!N|鵱-cSpBvkNt7TšnKh8q yh O.(v|EBjN2jA7} 8u9FVU5Y$ddcIcA[ΦyFuiԾ5ʾ@LO#rG_lK|ڶ@kV],Ks[VhnLoO.S,.$*Ԏy{> LFF$@>:^b-[QMLc)GrÕtފ/$ת(G^1Uie$_׭/Q͚U>!Ԩ;[I;K$o] eSBoem܂mNV2`*׭UI^0 _Ѱ6{aF,`H6[Rr+eӆU;]9J%$A߈uocV7[e$#ɪ؍tUrԶug6B))PcamEIlcNE-X{dX,ѼA";ڙJGe7P1n±%S9h tmTZGK=CwJAjzoz Rޣj$򷧨bu5-;r=gNDu {.c6GC۱a^lxSV:^*v[]Yt/J )#maēfS*-}ҵNn6h$82gdEZ l8_FFwѼUtRq%[h k 8׀Лkk|mzk+,nTz6΍a7]n ^7OP$sZ~S :Yzn`lXlaq^֪^R7pq3F Gӧ]Q7+eּT/SiGĥ=AԜӳqqʝL/e>N4~+]O#I}¹E%t {0>{|JaKrr}Bz!TfϒϋЀI'{kUB,HMB{*Igٿ{ȂUJӡ#ɏMsK*ȱݑBxmwɍ' M-S_a">@XwQf!X R!{{ I29BҨ-ljg&{uB@&:oLN|5uƱ0E8]ennMl9iV+,~'$ק{V4nøshF[jUU,6R7pHQsRobbB" }eA;\Gbؗ#Fomd4lR~7VI!WPvVǞvՂ#zK1§tzr0&Dd h|-IEn"I2 3YH﯅QW2LOd4SHZݕd~RTxs㮕~95IGF;&R葙FˡӯjrwhVW")ej3dń\Y.VI^N{>Gmew| hAgK;KڱG;,R?|N "i[fz8t[[21UWdp˸7=-x|'XC)AAt7jKYObIkk}ʍ4?*_D]b}ow ӉK @ B@[XNZE%xHg /},n(^ F%2:HXr\n)*ڗ*B#%ץUsZ2?Iں,࠾N,A*cŜQ:iAd6cEW &,U-gC#RuUn{8}hck$prhF,)S_Y? >ZuZ8s{h•E$tku)+E=wBtU#q:W']||q 6v:iԙїmTsrj 9\y6>?'bfH-[EY굍L@ !|S4t-nGːCr\G+ mO}Tdud%bM$kTU* ^#0I}_VR2YkROc{W?iS!-/ei!0%Cqܲ6‚3OoPUI!CAťnqa{c4/+#DUqy |F""5RClj/Vlr$ ZU:ֶ^~[c]x&Rx@J8i fIIRyp#[EUO%L%Uk_&@HQb]t;Y*LUGY0|#_Rs-i`M.Bcv:ZF9:#g# #) X7TU:|)ɽ//6|L=ef0рW,kBxэ} gwRʊ9F#݈# -\NuM-CȻOxA V0 N³$sr\:~Õ, >x.j UywYK_U+"kRLH Csbu#cj}_%"5R弼ٍXK;*]aV+,䍉&ժcj;YzfF*t&VRj+v/U.s@8-tuݞUZʫ}#:I3y2 '\Gŭ>GU_ռ~$N型&+[UV/WORҤؠg$>ɬs+oOlbY K*Όު/` YEa Jܓ{ 'q$LOy$]#H,̍|iKKpS™ ,|@!0Wbn8Gwo }ݕ㠧zh9"^FCpओoMDI]b Fu  pEfUߓovsJψWԀv-Lڃϑh:v;<<*&"eg! eaA#3\_MJFu!VԝvǑؗ2 ܋t%$4d,oaoUMB2m}omh:xB vQ/%}OR.;::&|w׫nQ/ MnL9S)7ex)"bAb% q½C}:O"n9+77:Em,t߭:>a^/<w_QZ }^?lm/韐=rۓUPZ#@K|axY^Ѕ-Ydm3ȱ \H'=,^?(GqkmbmNaJѰ{i{7޼7_(7 ul0u**uuk*kDu\k\uD\L*LLILD`?L\L9kOkDk*>O2232D2S2\2x+`ibVVF<+8+?K+N M ../###+..mmaamamu|ma|mma`l`ooootodld`dd~dtNN`NN2ND@t@`@`>r>i;`8r2i5`22V+4"Vwbw]gt2q}TEh2    !"#$%% %$% !  !& '!' "!"&"'"&"#  &%"#&#(#(#% #&(%$"%)*+%"#+*,!"&-*.$&").* '#/0+%#'+,/&'!102' !0/2($)314%)$)5.&*'06++'*7+6&$(013(*&360+%'7)+%+))75,-.89:/.-;:90-,<98-129=>2/->;901-<=923/>?;103@A?.34:?B/3.;?:,43CB?0,3AC?152=D>562DE>175=FD89:GHI2:9>IH819G@H26:>EI718J@G9;2HK><91LH@;32K?><13L@?=9<MHL3=<?ML;9=KHM=3;M?K+4,7NO4+*N76.4*PN6(.*3P6)+,Q7O(),57O,.(OQ55>?DRS65?EDS@6?TES6@:ETIA:@UIT8:AGIUB8AVGU>7BWJV57>DFR8B7GVJ?>XYZ?CXZ[@?C\X[@CD\[]DA@^_`AEB_abFGHHGIIGJKJLIJKHMFGFMNLJ "!KOI#%$ONM% HIO$%OMH%GMN JGN! PQN&' QLN'" QRL'&"RKL&#"NOP %&RSK&(#SOK(%#POS&%(TUR,/+USR/0+QVR)*+TRV,+*PSW/20UWS102VQW*)-WQP-).XYT431UTY013VWZ)+7[ZW67+VXT)5.XVZ5)7[WU6+0UY[036\]^8:9_^];9:`\^<89^ab9>=a^_>9;`^b<9=a_c>;?bc`@?A]dc:B?_]c;:?\cdC?B`c\A?Cbae=>DeafD>Ebeg=DFhijGIHaji>HIhjbGH@aif>IEghbJG@jakH>KlbjL@HkacK>?lcbL?@mljMLHclm?LMkmjKMHmkcMK?[\d6PNdZ[N76]ZdO7NXZ]57OY\[3P6X\Y4P3\X]P4cen>DSRfneESDonfTSEfioEITpoiUTIhpiGUIqphVUG>qgWVJe>gDRFhgqGJVn>deYnrdfeorngfdosrghfsophgipqEija>YeZ>BqkbjEqBajbEtualmtEAla_upEmiaspuhimDtA^l_vutnmluvwmnoxvtpnlsuwhmoDxt^plyz{qrs|}ztur~zyvrq{~ysvqz|rwt}|utwzvwrn~vzvnr~wvvonvxwnpxyzxzyzy{yz{xy|{}~~}{y{}y}{||yy}yy}y}}~}}}~}cc~~~{~{{z}ru{zsr                                                       {}swhosrhfxDp^CD[]w~ovxwp{~sv}uwZerfeCZ[C[rfrfC[~v~v !! ! {! }  "}  u!{# s }"u  "!##{ s" ##"# #" "j==$3>z4^=stand01dw'Z1a.g"^uY`SP%TF'\D64a,9+j/&-f %gxGu\fEwg|[Ya\MlGa\~v~94N( eVO]FODw: Q-' Fu"XU:"RK?A_Vl [#Tb&:oV7 6C3 pG32mAIi/4s HxVE TN x+Qx0GD01nLct*fwdc'Bf35Y9-hp#QmEP+0O7|nrkD~t2~z:|oPs>iMt7kWyD4Ldѫ]Oca -n C#x#QYcY#HV; }76335JJ#ErR!NuFD1dg vbrzebg3Y8Q*OiOE%||4msc *Coj9_5rKm7do1dBiKHj?_Hgz#aa1wv&l>8q:lGJuG@uW7`7b1X>e?`Ҙ{?a2hi?YFB?̊FsʝL9 ,=֓6at(m~ 9t~^EI}h2i,RΞrX?48t{Jq_ K-HG./<0~u@WhSlfU`beCƊm]9WU̙SjсlsHQەdL]݇am҇dU̇um6Mĩf2{{Ȭp)Ϡw1}AR/kx0tm) jm!$w|n*4u 2k 'V&df$\C ;[G0\{/2[&."Xa9!_e)VS8(r?2eeAG+?&o#&}"EA?44M 0,k$;(W+,RIQ+E4d:D6OMf3[,^Qwn|q[Fp>hxPns$N==|3>{@"%5(/stand02gw] &e%k,aw$\(c'U7W?<^CD4c'J,l/5+h1#idFc\ZE\[Si\ElH_h~c~J4](!eeO]<^:0wK -_%FCz/!OH"W|eN7GxwOv ]GTc;:di7 <6 c3 i\3-hVIhD4x:HzynE}mNzFQzUFCN1l`dzDfz{{cge=[X9SfoGPphO(XN4trpX~uO~m^|6rs>n]wWmyC4Ldϲ]O[X -n!C$l#QXT]#GV~;z88 535 }JJ!FsS"NsHC3wcg"bqg6i*[9S*QbQ4t~$|3ses%k859.ao=9n/|TddLÊLtVb:cm@z=يU9zMnLQwNHro4v4n@]UD?aӡ3m@msNYZBVόCsPL5~ x,~:5ו5`u!h~ 4s〇t;IPx^-\'IΝhJ1)1t}GwZ @#6M#~2|AWnNnqUYdnQȊpj5\]͚Soҁj~HGۙYLSޅ`vӅia·w5fAq Oǿ|\dxs$z22yop,h)xhuqqkPmjf>eϼdcbP[^Kle[fcjMhqouſj5r:`_kz;xoˌsד:~#g鋕s͖mc֓{0k"U۪yVer}ʨ6npkfX̶7"P+jT_@QmCIZM#-nyDvn? mn4!z}#p:2w*n/$X'ff!_>1^M*+_}<1]&>"ZcJ#ae*%YQJ)t=FgDGIX07Ay-5OC+;EL+o9-}5CO&RRT^l hKe?stand03-ks#aXi$oIds7`=g<YWN[=U b>O3i W-q#C&mAnJFM[TKETO[Ok\7AgH`p~uP}S4d(.ekO*]/e,;wS ~8f%\CzD GO"WltN/HcO|2^`TaH9Tq6U5 x2 \g2^aHcR3xMGkj{Eo{NwXQknE>|b0gleXfhpcb+uW3od6aOd~N'sM?lqvg~wf~n{{FrIvkzroy>4Ld̲]OPrM -"?$N]"R!XE`#OVj;s89 6w4r5 qJ{JFg}SOhJ?3hbrfzbgi7j%\dym9Rlacddnz^&p]\fG]SV`XGWg9g^fTBa]Zepaakhhyb)vj.pYUN{oht1brl9iHԑ5-͋=6)w7ט%#Ԗ7٪S?iKǥ?B7IA,i"=/UbO[\E qkZzoX poF~: tF*})s>!]<j@3cL!#c7$dxG/bN$_fZ'fD9 ]QY)x(ZkCLCk;=e nD&{[E'J;j17Y)yS:|{3W^VvKLP(k\J`K}Y|jpY:Q{[bg_Ł=~ir~P=AD=4>v?F,stand04rhig ^]]e{b lbix^~eXXZ(aL7i"2qx%l{m9FhA[C}EhI[ZMf]VA_Ibp~uI~O4b((eiO$]*b'6wP {3}c%~_C{E FJ#WeuS-@ZS3^eTbF:Oo7Y5 }|2 Xf3]`I|bQ4zNHme|Ej}OyYQktD>yd0gmf[fhldb(|W3vc7fO6N'zM=iryj~zl~n{FrI{oh|oy>4Ldʳ]OKrH -#?|$NW"R!X?^s"OVa;q89 7 s4k5lK{rJGguSPhJ>4bbhfxcaj7k%]0T$SdT3S}j~"|*tDRvĉ 5**f$9]'~*D~?k6<%J{'rI:;J{QÍif pmz9p8}}yzrjv'|dpz#\} hKta(]`p!bz{2b+_D0g?v \Q-y'$k=o@B+%s!v}Fp784*lw8}=XwWT([aH|LxNpdXt7WviarzcƁ7~uwuMή=Bǟ=!4>v-#!stand05db Z``tgab\tcVY&Z, a(Y0zbeOfm}db(uV)oc7\O6|MrL=zq`~zd}oz?rIfhv8y>4Ldѫ]O`r] -#?$Nj"R![V^"OVr:99 7 4{5|K{JGgSPiK>4sbwfcij9k%]0T$S6T3e}y~"|*tCd"3,*v!4m'*Yz?f[A[Bo>|kuN_Hs{=c {Qpfc`tוgp +1ɧO7M/YeDeh{cza(lV3ec7QN6sMhL=qV~zY}nvz4rI]hm8x>4Ldԥ]Omrj -"?#Nw#R![d^"OT:98 7 45K{JGgSOhJ>4bebij9k%]0T$S6S3r|}"|*sCq"3**$z4z'*gs?^=xYAVs,D W_evbכ|c+-A¦OHMiieaȌq!r##{$| qefzgmw)c=nacu&ZEWZw U`eu\wZh?\4 UT]e%[c-bm$Z&-b(UR,yF.m)1m8BbE++&}IF;k<$/:}@PXbULX4aJI}q<;5J[P stand07d6(Y@]rd4gE:^r3eC\UOb!Gi$SkKt=k4k^|EgYjdDomZtN]lBH^}uq|24G(eOO]XHVw2 I%DB& o.#W_S\#pS^IT+: y[6?3 g0 P2KH|735GmkDmMCOk_B>L/ZcDdh}aya(jU3cc7PMdsL'gK?pV}wX|nty4qI]hjox>4Ld֥]Osrp -"?#N~#R!Xk^!OT;98 6 45 KIGgROhJ>3adbij8k%\0T$SdS3y{|"{*sDx 5**$y4'*pr?^<|jC*!.3lmKM?iӕ$JNzDoˠa܍cjsסAN Xfd5l:un2epn`頙fi{kΟVgSp_:u yi^Ts?ZtAjRaZU2{~YAVv(D Wceeכg+7J¥VRVhrejȌs#s#'|$ tgi"}hqx(d>paeu"[EY\wW]iu`w^k>_F YY`h!^a*dm!\G+cLXW/{D.m+0n6HbLL4.}PFCkE'8C}JP`b]La4iJR}<:K$ZG stand08(g65\B'_$eCl6Fa?hQ`@]f!Vm \lSuFlX>m\CcWehCipXTmQ[9gFF{_|ul{24G(ePO]SHRw3 J%BB$j0#W^QW% |oS\FT,: v\6 =3 f/2{P2-LH|735FmlCmLCOk^BAK.ZaCch}`va+hU.`c6NMorK'eJ?oU|wU|nqy4pI[zgow>4Ldʦ]Olrj -!?#Ny#R Xf`!OT;97 6 45 KIFgRNhI>3`daai8j%\pgev!ZEX\xV]iv`x]j>_F YY`h^a(em[G)bLXW-zD,m+.n6EbIL3,}MF@kC'7@}HP\pZL^4eJO}[:I>g6Astand09&h82]C#_q eCm7Dbq=hPa@\g"Un XkPtBkX;mQT@XVjZl@^qV7bRX\JCnZzu`y24H(ePO]FIDx3 J%?B"_0$W{]QK'!soS \CY{+9 o\6 :11d.2tP2-}KHz633EmkBlJ@MkZ@AI-{W^>ahz^qa+dT5Zc6KKooJ'aI?w~m}OzwNznix7|oLUz`ov>4Ldç]O`r^ -!C#No$P X[]"OT~<97 5 46 LJ"FgR"MhH>3{^b_ai8j%\T4ZJC|[36K5\L0s9}1Ax &zm$ql0v!irUaN6k,=c 7[FbpZe_g*_n%Q_VCzQs#DI%&rH470%k'w4`NQ,F WI7weXpixtTqnvzGsIĂX~bmjɖ==d=.>^*stand10f8&[C]qc7k68`q1fC^@Pe"Il MiFr8iX0kQ2?4Uh6r>k:sTv>SV7O@JUxu;x24H(eQO]Ix3 ilK%s=@m;0$_\Q ("VnNm ]AR_(9SZ7 601a.2XN2-dHH^43~/DkrhBwhI~2a]kbs]ai8j%\a?NӜ*@pNl#be>˙755~ؗp%"Rih9U^R10~6lfXsEmϡOWrfOikYhp T <#Z=F[HB;R+\"0}TR|y_lV\n=#ofzw1_P_YcJd؛Sc lz p+è#ФK"gEe5l:gFm!4u!%p0cWbCZ,sg1`rgh0BiiU`s`mYGfZrxYD:XISrTSHGa$PI~0wBrPpEst+PivYArqBÂ2~n\mIɗ=7=}->Z -]stand11e6ZB]qd/j60_r*f;]@Hc!Ak HiAr2i*kLATJXTMx@tOvWRVW4LUA[S{uM{24I(eQO],I*w3 z|K%<B|K/$Po[Q1'!gnN| ]@Tm':aY7 421_/2gM2-qFIl33-Fk~fCfK:NkTAAE.nQ_7bhxs_hc+\V5Qd8CLohL'YJ?hwnnH{wE{m_y7sqLqMzVox?4Ldƨ]OLrJ -!C#`%Q XF ]#MTt=z:8 5}5z6 }LKFgS"NhI>3o_yd_gj8k%]}&dFK֜/AM|^eOQ@<~@uכY(GiZ9=MRs 1e8WuUZTj͠SFf7ik>/Z^eDk($!OܔHݥ+ԙ*ӕgÒ[ڭќzǢẔ˫=Һgන˿\ЬXٴ4НͻʝnŴK_ku½ ƭ ָnޞߧ ͥbmh֞Y"VӋY]nMTܜEٔ2K֯OPa`5I9XA8 '‹'K-QCq+|10v1ymol"ugB^$h,)` $Y4`pIbMc)Nl%=\V6yAp%:;%w= **5kw&`FE,;$NI.wSPpWr=chviArAƂF~Zp\̙5=>ۚ=M+>b stand12g6[B_rf.j60`r+g9]_Fc @k$KkEu6l-m[GW]T[E[~\__\FX`Ff[uW;4P(eXO ]8Q5 w< R%DB( S7$WwaN:0!osS]HTp/4LdΫ]OWrT -#?%h%Q!XO`$OTx>;: 768 NMIgV"QhL>5td~hdgm8n%`4Ldά]OVrS -#?%Nd$R"XL`$GVr=y:; 8}6y7 xMM"IgVRsL?5nfyjfgm6n*`j9s(ll\JV`h[H7Z^3]a^TbIa[uS:4O( eWO ]3P0w; Q%B!Cz%"H5#Ro` N0.grOz!^FT_,;U]897 c4 ]Q4]IKb75t1JkihHmhRt=TkVHC|I2fVi|=ihpwgmf+_Z3Vg6FRoiQ'[P?n~uvPwNng~FyvKzVz_o|>4Ldͫ]ORrP -$?%M_#R"XG`$GVk<r9: 8w5s6oLzL"Hs|UQsL?5hfsjzfgk6m*_5V$TdU4ay!)wD_ }4*.v$o7r')Z-g?T9jaD,0  r9s9Y[>'d7S2> dfYQE?|FyٛV*IaV84IQe1^9T}\[^rWUFXf2ai2neBRY;c$:<*XHm>*.7#}rOAIrmr Dp܆xSmRf]aםaZz+USp3N;\meMh/#!=)1 gcra1Zc^ׇӐ׍y36wXyțئm~ B~קpwܞ]ywRϬgHiawƼ9V7lEJ+Č(J9ȓUKpo#|9r<|kql#{ m{,\hL`'\%am;c8a?>j)(\S2{ 1n+>;*ov@ 1+4k(v(YMF+A'UK8x^Yp^yGlquqLrJ˂Pbdgў2=&v=1> ,"4stand15fb|\]qcttjbb]{dWY%Z'!b(>i:r)kl[IT_ZG?X]3[e^ReH_`uP?4T(e[O]/T,$w@ ~ V%G Cx+"E:#RmdN-3evOy!^KT^1;Sa8>7 g4 [U3\NJ`=5t6IkhlGmlQtCSk[GC{N2e[h{Bhho{fqe+cY3[f6KQonP'`O?kttUwRnk}F|uKx[zco{>4Ld̮]OPrM -#?%M]#R!XE`$GVj<q9: 7v5r6oK{L"Hs|UQsK?5geriyegk6l*^'hFS2> hfXѝF@F~ٛ\,NaZ8:펌NUi2e:\|a[\wWVMXf:ai9nfIS`ǍXPon${9p9|kqj|'{s n([gK`'m^~$ah9b4_C;g=%[R3y.l+{B=)oxvC y5/4"k-},YQILE'XJ=x\]p[|EjutoQrOʁNgdeОa=F=0>L'$stand16qgid]]Zd{_k ais]{yd{VX Y(`(t=h~9pq)ktlZGT]hYF4W\Zf\4RfG]buNB4W(e^O],W*(wC |$Y%KCy/!F>#WmgN,7dxOy \OTa6;Vd8C5 j2 ]Y3-`RJbA4y;HkmpFrpOyGRk_EC}R1f^f}Fghp}dte+gX5^f6OPoqO'dN?jsqWwUmm|7tKu]zeo{>4Ld˯]OMrK -#?$N]#R!XD`#GVl<s9: 7w5s6 rL~L"GgTPhK?4hdshzdgk6l%^'jFS/A jfWѝG@Fٛa-Qa]8> 쎍QXl3j:`{d[[zWUQXg>aj>ngMUd>n$I=:YG+m<7-D~! vqOAHpts fwمwSlZc[i֝`c+SSn3L8ZkeJh-"+*2 ޹afԎgbܑ2beɻfօВՏk.9s[jtÚТm~B~Ѥmx՚[xv蚞P̩eHhavƹ9T8jdG2-JBZRon$y9o9x|kw qjo+{`ps&[ygKo`(V_i#ahq7a~1^C8e>o#[Q4x',jLqE?)on"vF p814%kz1}.WTKLG'[J@xZ`pYCixtmTrRɁMibdϜV_=Z=2/>e )>stand17fhiX^]Pf{V laii]|pdoVXX(_InHktrEyrNJQkaDAT0j`dHfhtcue+iX5`f6ROosN'fM?jrrXwVmn|7tLu^zfoz>4Ld˰]ONrL -"?$_$Q!XF`#OTp<w:9 6z5w6 wLL"GgT"PhJ?4kcwg~cgk8m%^'kFT/A kfXѝG@Fٛb-Ra]8> 쎍RXl3i:`{e[[{WURXf>aj>ngMUc>n$I<9XH+m=7.D! vrOAHqus fxمxSl[f\j֝ad+WSq3N9ZmeKh/"=)2 ݹgcraޏ1ab²^ՇАԍy36wXj轑ěТm BУm{ԙ[{y癞S̨hHjaxǹ9V8ldI3.VCZS{ on$y7n9s|yo rjk-{Xqi$ZphKea(M`a#aki6`v.]B~6d>e![P|5w'*i>oF@)!pk${G'n:24&kx2}/WULLH'\JBx[apZCjytlUrSɁNjbeϞ==->o )stand18fhiX^[Pf{W m`ii]|pdoVXW(_IpHkyrE~rNJQkaDAT0m`cHehwcue+iX5`f6ROotN'fM?lrsXwVnn|7tLv^zfoz>4Ld̯]OPrM -"?$a$Q!XH`#OTs=z:9 6}5z7 {ML"HgU"PhK>4obygbgk8m%^'j7U2> kfZѝG@Gٛb,Qa\8< 쎌QVj3g:_|e[]{WUQXf=ajl$F<7XH)m?5/B"}sOAHrug DyڅySm[f]j֝ac+[St3Q?<2ݺg\rZe ZP5w')i>qGA)!pm%{H p:34'kz2}0WULLH'\JAx\ap[EkytmVrSʁPjdgϞ=뒞=->. XM& stand19kgi]][Ue{[ l`im\|uctUXV(^It=f:np*js k_EY[ _D[Z.]c[YaEj^c~uP~A4V(e]O]/W-'wB ~#X%KB~/ L>$WqgN27!ixS~]NTk6;_e8 C4 k12fZ3-mTJkA4=GkzrErMIPk`DAR/n_cGehx~bte+hX5_f6QOosN'fL?lrrW~wU~nm|7sLu]zeoz>4Ld̯]OPrM -"?$a$Q!XH`#OTs=z:9 6~5z7 |ML"HgT"OhJ>4obzgbgk8m%^'hFU2A jfZѝHAGٛe-Pa[8; 뎋OXi4g:_{d[\|WTQXfj YP6v')h>sGB)"pp$vH r:34&k{1}/WULLG'[J@x\`p[EkytmUrRɁPidgϞy=a=>0>X!.stand20mdi_Z]Vb{\ i^ipY{waxSXU(\Iu>c;lq*gt!hUC OYWBRYU`Z4Q_DUa|uF|?4S(e[O]#T $w@ v yV%~HBw,B<#WieQ&4 `wSw]LTc4:Wc7 A3 i02]X2-eRIc?3:FkspDxpLGOk_BA~P/f]a}Echp}`sc+gV5]e6OMorL'dK?cpjU|wS|nlz7~qLm\zcox>4Ldɭ]OErC -!?#X$Q X>`#OTl<s98 5w5s6 tLK"FgS"NhI>3g`rezagj8k%]WN*iI49B$"xnNUVju+2`֋}؝f_`So\d +JSh3E0ZgeDk߾.% >׺>50ܰg÷\սuZÍYPkn&u9k9yyyv njp/w^mq$WwdAl](S\h#^kq7\~.YB7`>l!WP7t'+f>oFB)!om#v~G n934%ku/v/Y{SLLF'ZJ}>xR^pQ~9bwtdSrPƁFha^=n=S0>N#stand21ucigY]\`{b g]iyX{`RXT(\L{?c3 g02TU2-]OI[<3x7FkkmDpnLxDOk\BAwM/][avBchh{`qc+dV5[d6LMooL'aK?[obS|wP|njz7|qLeYzaox>4LdƬ]O;r8 -!?~#O$Q X3`w"OTd<k98 5o4k6 mL{K"Fg~S"NhI>3_`jes`gj8k%]u#VP7s'-f=mEB) ol!v|F k624#kq,v-YuQK+D$XJw;xGw[pG|-XutZOrwMƁ:wegS~=<=/>қ-stand22cp X]{_{~ f ^iY{`SY%V(!](Cd?m.g$hYDTZ\{C4W{Yo[\[Z[EY]}uJ}84N( eVO](N&w9 y|P%BBz% F5$Wm`Q+. drSz]FTf.;Z_7 ;3 e02aR3-hMIg944GkvlD{lMAPkZCAK/iYb?dhszaod+bW5Ye6JNonM'_L?gqnQ}wO}nh{7{rLqWz_oy>4Ldʫ]OJrG -"?$\$Q XB`#OTo<v:8 6z5v6 xLK"GgT"OhJ>4jauf}agk8l%]b='VR:u 1g=DC*!o vF |524#k~)v-YPK+B$WJ8xTZpU{=: stand23epZ^athbb'\t%c)V]4Z,1b(NhJq9j0keFa\[i~Ee~\hi`]Ti_GgauY=4R(eZO]9S7"w> T%GB+!T:%WxdQ<3!puS \KTr35:IkoFoOFRk^EAO0u]eEgh~}dsf+fY5]h6OPoqO'cN?styVwTml~7~vL|\zdo}>4Ldά]OXrV -#?%Ni%R!XQ `$OTz>;: 768 NN"IgV"QhL>5vdidgn8o%`'^EW/UOd_[NJAEܕhl+J\N8,j萀EUW1\4Wwc]\~PMMX]2\e-pf9XO@]&86)XIpD&53$vOUVor*,^ߋߝj\_Ylٜ^` *?P^LKBamETl'!"OG+,ݜiږ]hާ\~ߴ)ѯZûܗ\Κ[ן4إ忣ΦIХBƮkŭwԲ ز ӫo椁۫|xĚmyޤklӐYqȟd×qfZٗGY޳Vfbp˴5W9k=K4Nj6J<ɔ]ÞOon5{9-q9)|kpj9zm8Z!gL%_''[4_hI`D^CKg=5YRDy ?l+KK**o(uM <;5+k/v5YUR+H \H=xb^pc~JlvtqQrO͂S͐geh -=f=(>k'" stand24hp \^buj'fp/_t-g3Z`>^':g(SkOu?m6nhG e^ n|Fi|^o`_o^Hkau^=4Q(eXO]?R=#w> S%FB+!Y:%W|bQB3"tsS \JTu3=ka: @6 g22qV5-wQMv>6:JknGnPFTk]FAO1y]gEih|frh+e[5]j6NRopP'bO?wv~VwSmk7|xL[zco>4LdШ]O]r[ -#?%Nn&R"XV `$OT~?<; 879 PO"JgW"RhM>6zfjfgo8q%b=5.k0w8`UT,H [H=xg]pg}PnuҖuPrOтVАfEjDC=]=r)>? *&stand25id%^_cu j.jd5au2i:]`Eb$Aj,VmRwBo9pfGc]knxF4jx]q]_r[Im^u_:4N(eUO ]AN> w; P%DB)!Z7%W|_QB0!tpS \GTu1=k^9 >6 d22qS5-vNLv;67JkjGjPCSkZFAL1yYgBihxfog+bZ5Zi6LQolP'_O?x~uSwQmi7zwLXz`o~>4LdУ]O^r\ -#?%Nn%R"XW`$OT~><; 878 ON"JgW"RhM>6zejfgo8p%aNw*!stand26 ld)`f!e!l4nd:du6l@a_Mg$Ho'ZpUyEqw8 N%CC'!Z4$W{_QB, spS \GTt.4LdЦ]O_r\ -#?%Nm%R"XV`$OT|=;: 868 NM"IgVRhL>5yeiegn8o%`wfDVN>9uCuיM#uJbV:2zHC~a,S5Kz]\]qYRB]`.ab-n\|3stand27oo%cBgrn2ro7hr3o>e_Lk$Fs$XrR{As8t^G_]gnvFkx]vZ_tXIo\ub34H(eQO]EIBw4 K%>C!![/$W|\NE' toS !\CTt)4LdΨ]Oar_ -#?$No$R"XY`#OT|=:: 867 ML"IgUQhL>5yehegm8n%_~thDWQA:wGtךVl*yKb\:9|KHl 1X;N{\\^nWWC[d1bd3n]DJY7`)3A%]In=&/1~*xlVCHnl5tAڅlQmT_Z]ؕaWw}݄)+ůBթHEFhhe\͊!q1s#5{#%{r*fg",wqlw=d3*m\(b;]F,[+Y[5VVcr \r^!h=!]?WT'])c;]c>bi;\&@a+.YRm)@m6EbJ)0Ɣ'tJF:z?$/6{A˭RVpV=T?_AD{[-ʋ3K0ƕXŞF)z;1:1*kyk8 rJfN-r+2i 0bN@imVkVl3Zt*FeVHLy%GJ%("rI 680&k&w1`NO,A!UK3wjWpj{QhstrJrG̃T~`pfљҾ= =0>HEo*stand28 qoffio!vo(j$q.i_;o$6v,KsE}4t+vN`Fd\jrsFqw\|Z_ yUITv^ul24H(eQO]OIMw3 K%<C"c0#W[NN)}nS !\?Tx(; p[756 `2 vN3-xHJz44.IkgFhO4LdҨ]Ojrh -"?$Nw#R!Xc`#OT<99 756 LK"HsT"PhJ?4dgdgk6l*^&k7X؜-AGhe^QMCO~כ tk7Oa_9@鑌OWt =gE]}_ZbuW]M[kaF`@K|[(LJ*>{1ÕSME|-;+ kzk-s|*AA%rB 1/<k#u)`KI*>$SK2wtVpr[mxtrMr~HɃ_amnΙo= =1>s2 0%stand29smhfkqymmtlfr%y*4u1~#vxOQFZ[bpGcw\m^`4hXKfij?4P(eWO]EQC(w? %R%< F~(#VA#WXN?@hVy#\;Th7;k`7 77 Y3 nT3-mRIm?5{9Jz~fEgN}DRzOGCF2q_e~Fhzvcce=WY9QgoDRpaO(ROF{su[uRk`}6pt>u_wZm}zC4Ldќ]Obr` -n!C#t#R X^]!GT;97 545 KJ!GsS"OsIC3dg dsioj)\9S*RiR7|$}3uey,l839*eo=4x%Z6qXNjLZb=92!2r8s8k i!C(gdZ0BI iaXNO"DBۓk3#m]q]ovMP)pZ` o4z2ydmϟQϚBlRY]^SpdYn[iDw'V2VPFDcDEl6L&6wqO|fJc|,fӊyNYl]M|؜Rt4=ܰU٦Vgӿ#UwxZtl!v#4u/.~.܁x+j m,}ut7fFrg4_b+_^*ZTleenDce_Sdibfz'_K-d?^Q*{b5oF*pm,sAőF3ڗ$ʗ;b)}>͛+-Ξ7RԫQKsXBme[_NwXu5lj+CUIUGeT ~l;x|y&t!lOv3n,gOmz/oM)q90y0jU-'%~.A80l$A'~9.:&xf6.^xRF.rH*yXAbEty w]hjY_ɏWa`YȀajjkk͞=Z=o1>j)E!JO%stand30ukjc}lw r{k o vn^ u. |.)w)"wyOMGY[hYmGj]t]4b^b7\XL\loB4Q($eVO!]@Q>0wC -R-:"Fp,$NG#WRN8K^Vg $[6`\>gbvVkl{D4LdЏ]O^\ -n C"u$R Y`|X HT; }96545 KI$GwR$OwHD2df zdr}hpi3[8R)|QiP7%}4yuc"*_o{4s8.{an?u80tYpY`Lj=l[isFgns;/w;s_mv]m**gf?f_gu,eڌn^>1`h[mGn%[T)wN0Iiס[ZhCY YJdu hb2.PyΚVН3/s7hsBikIw@}zfZ"hjrax}Kuo^}B[*x -q^sӂGG|YJH }{ׄ}x7dӰzʧU/htqyRw/bu5U5EIx^j,Mn*;}3tcgeGsKha_a^_(L_WZT4m3fEf'KneHdc:_S;d =i=b?fvM_ARdDA^QK{Z\pEKphCr_‘EZ֗%=їSaC{_ț?PΟQtƫN[wofbi`cG2MDljf2D8]hXILa" ytv| ~}v(NtunH x4 p)hHow#qGs8"{<lU)+5kD&{7*4K,stand31aqzjf\\hXn{vzy kr qj\p. w3)s'z*{!q!smuHSF_[]^rFbw\fa`4_]Kam~v~C4Q(%eVO"]FRD0wC -R-9"Fs,$TH#WQN>L^Vj $[5``>ҕ=ju)r 7y|zGdxML!SNmE1.}8tvGwO#&x CfqTztfa$]Մm1vbYlm}yLMR^+TڄtsԄf~x6ҮŦU/wÑx}t/s<{|9m~uuh*|k)bz`qdbqpwe]g](y\WTdidbvb(wkcvaaj\Sga$hf"f_edtw]CzbDm[SpxZmdpnzau~d}Օ/`ՔogaÙ~Ǚ4qϛj°êNoueiz^v7=BLāU7e6hbZKIg!g|yj!uY"{\z}^-~MWqiHmt7r l3jdHvkv"mIoo v9hUo,){9]J&i9]X^&cK9LZ5]aB>`,cdwno`IuGnyZt˜w,R==}0>g!:5v(stand32/ kz8_[+c)iJnzIdCkSb]_h5Yo4Z-m'T-v#H&nB pHOGZ\hUzGY|]4[c_TbJWlo=4M(eSO];N9(w> %O-~2"Fi#$XIC#W~LN3H[V`$[-`V8m7Be3;^HJet[&gI`hpa!p8RaUJ0})Vu9CP(L:8/1x$EFM33R;;l)A"\3?YEa(KK79[5KbD+e,WcwfkW=y9ruMwp*Ƥ=(=Ѻ1>LW.stand33 dwY['^-d#fw#]d+ ZY8 _45f4;:g,78p%(3i!+jGWG]]ZSFZV\Wp]TPuHSul74L( eTO]7M4w8 N-{'"Ff$XE>#W{KN.E~^V\$[ `R/86xU5W3#a(@lKj#AY:m(-;0stand340aw 7VXC\Gbaw1Y1` %UY- Z4*aF5Md,2Im-"HfAgGkHm] ^FT`\`v\ZF\r~s64L( eTO]BL@w7 N-&!Fn$XP=#WJN:D]Ve#[ `\-;k\7 9 E4 kL32gKIc45l)Jx}^E'^Nq6Rx7HD33h]dm:gv~sb&Og3@[9;ip-SmNP+8Q7xrfZyGzM}obtCdctKkizD4LdϪ]O_] -n C"v#QYbY HT: |86445 KI$FuR$OwGD1df crgph3Z8Q)PiOE%}4~tc *Uo|9s5n`m7}xo1aWiHcj?\^gf4aPJwa;܂wM׌]Qj8lt5cu~i8~r8RHXzLb7ј7QIz]RYsTfyL҈CQ>: ):Ԝ,ٖ 1uu3o}_2d,SMt'V:N,->SC A&&'3&zBSVhy`^p^Tˈik:QiPOЀjAPQe?[݉]ӆ^gτsoMҬf2{{z/橁 γ ~'v$x)p5{Ӻm{l֨wqQuxp?lPzmahQbQg?slkyacޔi(כnGҁmʄq~p8ނvh^§zܕɒ{{ٕ/݌zДΛ:$ԮVpzcոN(N*9^+{&MT>?k%.kx":wl"&nlGw 7l|WtMg(9WH2ce5[FKWID\t2H]I37\b9:dd$;VV,Ju?/3i65h(8F6Bxc8^4)k *HmUp(ERAp(@Q68]7Hlf,t*ZgwkpZB<~xNr%ھ==FT3>8@=*@)stand35E`uNUXY[[b*^uEWC^:SW&2W4$.^F2]b,0Wk/!YdReItIs^cF4e\4c{Z4^F`o~u~64L( eTO]GMEw7 N-&!Fq#XT<"WKN@C^Vi#[ ``,;m[7 8 E4 nL32jJIg35o(Ix^E']Nt5Rx7HD32k[cp9gvrb&Of3@Z9:ip,RmNP+8P7zriW~{EzK|o`sCgatIkgzD4Ldʪ]Ob` -n C"x#QYdY!HT: ~86335 JI$FrR$NwFD1cf crfph3Y8Q)PiOE~%|4}sc *To{9q5p^m7}vo1cUiL`j?^\gr3a[Ewn8jM8iLkDbuCXuh7q8]DXMe?yј4[EheQYyVfMϊHQ>9 +?֜6{t) :~~qAc}f2i,TΞs'ZA58I]M-JG12>3|BW}Okx`abcTȈlm9Wg̙T~ЀlKSڝf>^݇`҇cg͉t6M˭e2|{朁/瓉 Ѡ Ϭ'|,.y5àڜsQqڎ~~{Rcxk|4kwPZyaoSkQp?{jvunlctsL~wHcwj{a{hfscƔx|{͖/ЌMzƔĝ:֘$ܪͯJpzfѷS-M,=^2z'OR>Cg/?jx!Guk5llUv Hj|et`f$MUIDbeJZFaVIWZ.Y[I.HYa4Ibd OUV+Vs?+Agd7p+8M6Jxl:d4,r ,Om]%t+HRDr(ATd<[7Klf2u*]ewmq\GA|yRs$=7=Ls3>HL &/stand36W`ubUWm\lc;]uXWT^MQR"CUF =\E0jb,/bk/ gd`eIyJw_gGh\h|Z dFdl~w~74L( eTO]LMJw7 N-'!Fu#XX<"WKNEB_Vm"[!Td+;p[7 8 F4 qK32mIIk35s'Ix]E\Nw4Rx6GD32oYct7gvpb&Nf3?Z99hp+RmMP+8P7|~rmU~~CzJ|o_sCj^tGkfzD4Ldɪ]Ofd -n C"z#QYgY!HT: 86335 JI$ErR!NwFD1cf crfpg3Y8Q)PiOE~%|4{sc *Roz9o5s\m7to1fSiO\j?bYgx2abBwt6jL8pIlK\uJRuf7o7cAXLeEsҘ4bBhiOY}UBM͊LQ>9 +D֜Ob S-OG79E;~@[zOnvUdbgSNJnl9[e̙X{рnKV۝h>a݇d~҇ff͇v}6OǮe2~q{鎆/舏 Ԗ ӟ(锁(t.0ǓߊxQd݀nRT}Z4ZWIiuRmrPkwF|d}YsbbzLn}HT\R[T{cȊxtq{uƘ/ȍMz;И'שɰ@pzfηV1K.?^7x'RO>Hc/Miv!RtkBjlavWj|ptpg ^UIUae\ZF tWIhZ,h[I+WXa1V`d`TV+ar?)Ned8v+9SdQxtO0stand37bauoWWz^we"F\udW_^ZQPOTFH\D/rb*/ij0 oeifI~J{_kG/l\.lyZ4hFhj~z~74L( eTO]PMNw8 O-'!Fy#X\;"WKNIB_Vq"["Th*;tZ7 8 F4 uK32qHIn25w&Ix\E[N{3Rx6GD32sWcx5fwnb&Lf3>Z97hp*RmMP+7P7|rpR~t@zH|o]sCn[tEkdzD4Ld˪]Oig -n C"}#QYjY!HT; 86335 JI$ErR!NwFD1cf crfpg3Y8Q)OiOE~%|4zsc *Pox9m5vYm7ro1jPiSWj?fVg}0ag?wz3lK8uGlQXuPNue7n7h?XKeIoҘ?g?hnMYTBL͊OQL9 ,G֓Aot4|~ D|lNW}o2o,ZΞw`I?C|Tg W-RG;=I?@_vSqtUgbkQƊrk9_b̙[xсqHYەkLd݇g{҇jc͇y{6OƮe2q{ꊇ*鄐 ֓ ՜(ꏁ(o3{5ɐyQa|iRO}T4TWCiyvRfsPcyFv^~Qua]{LiHOrXMWN}cʇxpmuĘ/ōMz;Θ'թǰ@pzf˷V4I1@`L^/Viv!XtkJjkhvak| vt ziiUI_bfhZF XIs[*q[((aXa0^`blUO+fr?'Vee:y+;Vd!Uvw>k41z 0Vh$e,v0JRJs+EVeDUEQif:r,e`wsvbOIv}Y|w$==B~3>,'S< *3stand38ebusX}_yf" I\ugWa_"_QPSSFJ[D0sb*0ij0 qejf&Ih_hpFq\ntZiFkg~~~74M( eUO]SNQw8 O-'!F}#X`;"WLNLA_Vv"[#Tl);xY7 7 E3 yJ32vFIs24|%Ix[EZN 1Rx5GD32wUc|3fwmb&Kf3=Z96hp)RmLP+6P7zruO~t>zF|o[sCrYtBkbzD4LdѪ]Omk -n C"#QYnY!HT; 86335JI$ErR!NwFD1df ~brfpg3Y8Q*OiO7%|4xsc *Nov9j5{Wm7po1nMiVTj?jTg.al`?r'XH>P[/Xjv#XskKikgv bl|#vu {jlU(abfl[F YIu[*t[((dXZ0`_boUO-fr?(Xde=x+=Ud#Tv!vAi44x!2Uh&d/t3IRMp+HTeGREUff=p,i]wwzfS|Lt\y{$vJ==P3>6N1stand39UbucXn_jf":\uYWR^"QQPESFJ?}@cpSvnUkboKƊwe9c]̙_rсv|H]ەoLh݇lv҇o^͇~u6MŬf2{|.茄2՜1ѧ'w(y|3s5ĝ~֔oi؈zuvQY{}^uFbrOsZkQvfqjDvkpagalnLwtH]teyZwc~]n\Ȓxzx|uȕ/̋z:ї$ԪƮJpz^ȷ O6B37^>n'XD>OX/Iix'Jsm=ikYv| Sl|%ht lj^T&Rbf][F vYGg[,gZ(*WWZ2S^baTO1Yq?+Jde@m+?Jd$Jv"lB`46o 3Lh'[/n2BRNi+ILdFNEV`f=k,iZwxzfRyKp\v|$=z=ߗ3>AJt7stand407buEXO_Kf"\u;W6^"3QP")SF#![D4M`,6Di/$Hd@eG~G{]mEm[cf[.ZqGg`~z~84N( eVO]MOKw9 P-' Fz"X[;"RKFA_Vr![#Th':tW7 7D3 uH32rCIo04x"HxXE VN }-Qx2GD12sOcy.fwgc'Ef38Z90hp%QmHP+2O7rrpH~t7~z>|oTsCnQt;k[yD4Ldӫ]Oif -n C#}#QYiY"HT; 76335JI#ErR!NwFD1dg ybr}epg3Y8Q*OiOE%|4qsc *Gon9c5wOm7ho1jFiQLj?eMg'ag5w{*lB8v=lNNuNDu[7d7h5XBeFdҘ?f6hnDYJBC̊MwʝL9 ,D֓=et/q~ @x|bLM}m2n,XΞw^F;?x{Que R-OG67C8y@]lSrjUfbjGƊra9]Y̙YnсqxHWەjLc݇fr҇jZ͇zq6Mīf2{ءu)ܖ}1ʦ1ijz'ըq(s3j4zţjtxɕt؃nQeqljCqh^hZњdQ͈^ځaB֐ojzhr^\|f(ƆmGklrrhn8oumd\xσ}{|u̓.ҋzœ:ӗ$ԪŭVpz^ƷC0=0+^8i'T=>HU/-ix+1sm$#im>v|6l|(Nt OjBT&5bf@[C XYGK[{-LZ&,=>vrJrun140`YFvQKaQ[TV{dFZ[q_ZHcizihp|hdYcdG.JFTGv+LpCOMCDCP-_OkrRhz!U%H&:A:tyRyyy*CORbR+HT3_(`m nR&nz P"e|HN;1bd>dW?/#Mf1ODB7YYAN=V15@_pHTlNTG'PNF&O!PjC)?W.@PFWQ\Z,_aiSi;JA]+Cfg$ObMDgS:=HO#<`ap]PiLl}u[VSq2;&H,UKXg8Nt dp =mbNcdDlM[]h`#wZtPz\ece%mZMUsto'x2:w[)0mx%^5B(DEO)y_yMpZi|{Ytw}p@sKeh}r%ʻ=4p=h$>HA8J(#run240TbJ_ NV VbOV JT%Q%Y*6`+i"_^1ANQ 0<]KNIuLC68Fohqho)tU(%KFuSUSy8t ?7R3b72(Jh4RFN9tC_QK=5^[~I@?<8Cn,pIJEswN5rT4Ft{7?jnJ=[N gVHdD@ixB wA'NBid4Sjf:4jTLTwUhW3`E4TWoP:ap=(b6A}cP}\puPokam6wfL]xZ{pm?4LdԂ]Okri %AN%W!k"{ ]OY; =21Ü4 65NG"HhO LmүFC1 UPYZiih-̰[1P,ϡRoٱP4qmo!q/jEs~z$tx7y)3,i6L?*_DT8&]fCu6<*5bp`pر,ϯ,v^KZavFӁYәSߣ3cğƞ$j/_uSmH脇<]މҬ-b茟"wȘɓᗕkudzm ~px}i~StWRC~ ۊ$r[sƇŽN{՟ Ă ߀ >J-u\k}^$a/l*rkr]"R&yP(oludZT7z^rQKnEGHD]gPfHsFO|V6|KonD]uLvU~OqXxL>U4~DYmp`9blu΄s7$g野ьbp֎t)uu֧NsЛDʸdUȲ.@GMMS"app:f:mz`zm [,PY=Q%L%Tg7X2W?2`3*OO!p$"d./%. n0'&9y+|XF:>DLOJ?} \iow]tYnrH=|S=*>* ;run340hr$_W)g$n`r^eVP*X?- _C66i$:)q2&*m!!m$ADQ.=,;S3fWO-a@NotYwP4f(#cnO[dg$b4$wQ 1/1nh0%A>C'?X~HEPd@fKAz?O=]B8T.[b[ -UYT UV2Gl;U&ek_e']h,2lkAgCDQ ZdT:jqui'[} Gw E}0pnUp*AowD5McBnKQaCi6<ٚ*ׁ5UpSpǭ,,j^ٚKLajFuYđSќ5Wȟɞ$ky/RuDm9m,P2U슉"m˖̕{`롊Vz_| jf|jczqpqLzQiYRCn0ɀ$e[gʇNr؟ x2t yDfټ2Ҽ}j*r0w1q'f'g=^3q_mںjbe]C\\ZYۯSUBdl\ؗS\ݢ[(׫bMՏar͔hb8kX]οxysЦrЅuЌ*򃞪юh⋔9!HğàbĻi\ղJr!``iN6GE% pz2zp.np"~}s}(*} 'r"+\hB"b? 9b0cv/6b'1(^c;%fD-\N8"y=6jDFB&T$F>y-0S;LA@"O p>&M?_eMl0D|6CtK_cH'i[zXpZjyX fwBa>wv=l>q>Trun440;svOiXrSw gv Fd=k"?]4[C(cB ]h,$Op.ToJqC/SAG,LDoFlIG]1Rh^lE<_,diH \`"F$ "b!-9$^PUH0IcO]1>^-B32b;>6EQ6ME81|$AZK$XR$0K!S+:pfSSl>Sxx\,{Bk /_u-gyUz=[2![`]PTnd^MfxnPjrmc3Uqu{fRqkzdD U&y%Zq;u;xjx*CR&QeQ[(l|"Q'y"PuaK<_L@WF1JK4CA9XB6\+PT;KP#REaRL!RCaF;0N?WY|[\bRqkIBiM(`AKP?X;^S8Vhltl$|d>u\fly"~t*wcpooFzu63k^iCoe9nIaiOm>iQqAcd}9+|4IbDb,,d`KDZ'fDuWN3}TŜ$ |ry.yMu8i&m Dۈ0DnzsoǑuɓt~wT}?sAl\ o~mplHrpMqe]l󒅢iWP{Aj5,_bvpաuw1v1q1reMӗcײ1䳔Ļxl3uw2v1lI{fLSq4\d9mr^QIymlOjR/t~,lE4h ls^[RDYQ;^e_i?f-]gBc>VhJ9kuKo3oFu+dZwdygvyt~.sOłx|Ӆ:,"֚VǕiŲz]ߨ"@,[*lJ!YX_fEGhQ%/vy#3{i%rmA8z!V" V{R_BD3/y+S@[K8b>:b6BDXK+Oi'QGBaBCYdTR\x,^fw[|oˢuYed rkxTu=ɨ=^&>fN:run540Dih;^5f<m[ahJ\PcNU^VLd ^>]8c e4l#T+hS!j4@TNV9s?SNRjQHi:rqqnro4(Gc։OC]pnVwp S%q@W f'P!ub% NE]uRX== c4 Ċ41{7-oNc7XGkG"L bOmyF>s2 uV[ZsZh-xZ1jhgPo҇Q,yO3e~dor^qmrr8jLhxi|pnC(U"N'ZuQxQ6 F41(41bK5RG9BPK=v3[H?uB9E,nL)qO:r6?t8FhKEfI)Q D'DzF'Bi8Yj<5UVWgY7Z*H4=IAb:Bzqq o)hD||$y7y)4,udL?*iebo&hcC6<*9opmp۽,Һ,^Kha⁸F֋Y֣S⭹3qğƞ$/muamW脊Lk߉Ը2p茤"Șɓᔙyuqzy |xo~SYÖTC ݕ$~[LJŚN֟ ǎ >B2Ժ[xd,k2r0l ` _+X)lZcnbZZyS>RP\RKLA\nSlI^RZMҾV˽^tW7`8M`rkjiԂrۉ%􁜧Ռi቗5"OǞrΟdкpUװ'<.TX[_!Xoki w6hmoY"|OrX3y@pP!XPgBH`L8$_J&_xW2\]&Yfg,`DL!XQh1t(g!gCjN>?x$m`1|yL&kF5Es0yD~4_MAQ(cUS iht}’ltg{q)ʡ==g*>)bH95run640 [e4S@+U$[,be=Z3`EXJI`#g4f A#Tm=#kS $LTO?hFLw8tX4m(-c}uOy)]n=sY P9nRo%[RUP7&M#Oq L"INL$XeURL86Ii7t?+;ri+1K^12ZOGKE0o4AhpkC"uhI s=IhT4Lbɒ]OO rM & 2-1n>C@NiDP>N@<]>O7T[ ZT S TU l~f!cgm!fp°f>P |dS|khb}} v p%ooƮn9@pZww|-{tE@f$c4)~=o,XEx&>t%PDE5lKDzCb6z<ϐ,x5NpMp,,b^ϐKDabFlYSƑ.LȟȞ${X/Hu=m4`%H≵-Pz"oxa̘v̔ktqZu~Vyb~ XUw[dxat` 9{N^WvRsCf0v$][^ʇ{Nvgٟs~wv n2k ~>5װPݧH^Osv\nm#n"7p-/y%ym6ba'xr htGbF&kq+_DXo7TM.Vu:Q` `VtUM$dF'Y6P`!Y$b2YZ6az;XLBa=)RT3xdAl5:mn3gF̎?/ޔ!ƒ@e,w>Й**͛5|MӫNgZCgF^JJ J,E? ip'w)prgfh-r%`O\,b*9[#ATF]aVdSd4Pm0M[G7w!?o//+/ n. 9 kv];8+5'DI*xU"tEiCi{Eyn|b?wA‰eZq{W=]=8>Y -attack1z5US`V)늘ўȍَJޅ9 N x6OrKg UJ4X73Nluk.4B(ckIOh]Bx. GID,PBUP')-#=ZQ!#3iQS]WGRL-5;:X4 hA*1Ye(2?M/-OKC~H7/f:>mVj<ZkBfFEms`8KVL( HRS\>UhLrTnoY,ygL.s[Z8zRB6oqB'~g@=9paWCElsYHmngcl4_se(DKzkaWwocl=Ի4IϦd]OHrDȺ -~$?n$NP#R|#[>~!^g#O UU:a9{:9 d5^5[K{cIpGicPrMiL?w5IUPIZXXbjg:chy]1zU$ToU5%j8m"Qo%WhF$y@w jvu4[v*Y)A$`f7A&^+7#maCmR09fZD{Acdz<+y5xQpOp,w,c^K`Hg^dFtnXtS3PPN_$W-F4S*HMubAmW9 7+XKщz/{Q׌O!AAe@;x؏B_vRZjacj}1`/K!_yY\%wF!u^m=s,TPp,i{{~Em}DCs^H-]`~@%=qA=z>#-attack2[{1s>gIXt>hIt2qc؀oߝsLi =EO[8DhNY_N_Y1bIzZ{py24G(c{OOx]H}3 XjZJ'd;WaB0)WZ-)+Pl` [i= Pg):;^Z8 4)>|mM|wI{max7uoLQzVnx?4Iٵd]OZqV %n@#u, `+X#NRB @613;:; S~M!HgT!MiĹGA3 \c]gln-ñ]n\9nR#T#YE})[9bR'_pgzLJPyglT_yԂ#.f0M}G&d;QmOxNxQbRbd&gA!`q {b {vx/bd鐽XF+l=BN"ES3ĉ,a,X%FPG t4S$x4ßmMptyQRlɘdDqb;}HŏaTXS=B=73>uNo-@attack3Moe0Y*J큏f0[*a}_虁T畓p'aHe/[ lsӿH!ѓBhmWcoKW!IWG&ܡw=ųTV\SIk5?7EV}B>\Ȁ+0Men_fJzhDCc1o!zebnh|u>RucY(Pny|t~|!ʺ, fzrsZǰ El.{% p?KyV)iPMCkAr>rDnDnW,Z.s"Q쏓au&kno!itfߔcT֞TߛC&9Ȕy'7> 1A&Āi'^'8M(K oEY$<[$Rhy~j{WrkJqobar+{=GC=K'>9-=attack4Hpc4^VWHHpeJ\H]4_XwrmKd,Fh"]hE6\.b]7hI*`*24|G(xc]OOZ]Hwv3 <>J%C3B;"1(8TN.%4hS8![K4Y3&>/Y: R+41OV022K5/:FM317J)JkHbFKbML7Rk`IDCF=0 9UcE7fzDsbcaf)gRY5bJhoa:Pp`_N(jMM?7~s6NuIFm\Y|7XntL;UxVQpc~zC4Id]O=r: v-ynv&Cn(J(Rk$X8"g!]l'G TYAV>{> y;[:\; YRhQ!dLsfY!fSsPCq9HbThPdgmqls/zd;|[%yYpZ94~I$\~.Yve9T,fjEe=m}Fe+b\duK~|Dx9rQp^_bkIhPa~4g݌ %;VnTn,%fe=}Li'e7pYV0xUXzNw$hf՞:b-dSסuFm^?84fS~ |YR"MhlWiQOߛKhObzYl` \987ux<=!󎈖SfY~To4l|$bZfԉO_t[`_vq}DLdsR]qŘs5p 鉮 돥+v=V7X:ދPrSUlZUSLiVQN_TTNHi_M~RU)__JqXGPLb܅vdlʹ2GrNö#ո?Wkhqνcf<Є<3N>SmfHSVȜJhVIăVaIZjG\Vs*R ^p'jqj+hło `pj`PP23^M;R: )ht-;eyUN\%bPHqb`?T QSh2LlˎIY}iJtpvb]zIZF==y>C,attack5xV=quj4Rnjf:RYA6sBpR`nS OJx=nv`,P5xP Iu#Cj8W:6j+O/MiIi&aFlцQߑ3Q$}肩/PuCm<}2Pԉϥ-V⋛"ޜhW~ӗcu^yh򇴃 "{ꛃox} gPbPyPzCi x$_[bNoşM~ r ny_~ĘYԢ jaTPfR,bb(P~cIQc?L~AGSkex@mQ{qzBFWoQsZtBlq;bn8S\n={b`?q=uE>hD~Ja@]TwHFUhC:MbJjTfEVaM_bB[eUOzjg@>oaI?\s=YeoddnrP?iaXywmuClzadv~Ip~mB¤DC}6#y%`J$,L62WGhcXpUGocZv~WJxvZqjH4M_?Cj8=wz9v:yw4t5e{?Ck5vW*kE?jy%JsEFtreyX3dC~gOT-QW,:e09I6ML LMh{d|1fSjG ]_J`=P= >|v0/ݵattack6[8qo/Ryo6yj<Z3[v3m7n,Rp/3i5=<H~@tAQ<k;M| ibihhN_0?F(cM N X$F!!!w1€A{gPN l v%tn< 504d,'=k_=J_~TUOU\]uN}T=xPX8dlMoPqCk6<홦+5[p[p޲(ծ(j^왡KPi&fDp̊Qۖ3W'#܉*VuKmE;Xȉװ/`ы"mˏmvhjrŽ1-"珚{;2Pg~PCo2~$eqhƅQv2y2t ~_~ˍ~Tڙ$yaŦ]HoJ%hY(VYRHn9MV9GYs[xHuG{|;F_xHse}:wz5nw2Sgw5{mi8gF~2-cattack7mEZك>U˃B|GlHZEIBUH0{M.Q"\ސR܆RE \OB3Z4 `Z4fB[24G(cxPOt]Hw3 OQJ%U:#BN&!1*WEZ"Q *'>lSM &\a=Y=*D5\? f5<1^_72:O:-AKT>54Idª]OPrL -.?{.MS'T,]AP(^w,H+UTDXBHF_=]?NV^W"dSgY_"b[h\4yA2cP9k?giVzR{-lp rf%sen~g<|"!:.;yE/'JrDELfJT&_g^qMJй*``B7ew[\Cmd<坲+兿9[pXpز,ϰ,n^㞭KTgoD{ŗQՠ3_$ j/\uLmA |8X͈ѫ2ZՌ!wԏi{]zb劺{;2!u{:.2QpWPCt1Յ$jnN{ğ12y AxΗےJ"kԯdϽV\#f$cTMHIezPuR4WiLLGVItKaGFF_O5K;}OlM~SWMcuXhO)V5I`h8\.`n~=|{9y'{ӗYn=Բ55A+z:@M"A,>lRhvbnlWnw_rlQwɋ_ŁLGGvK4E.ՔBGwFHET4AT܋c-W5z#hy:\pqzpu0}}]{pdx_?Sm#S7;<`3UB"PVi|~N\SzOk[5=?=*>-!attack8QfOKכNюQ[fXZYKa c2بhҔlՙbא_7M4jK`J e4 Xmtm24G(ctOOp]Hx3 KMJ%T>@O! #2'B\Q )%:nSP [^AYE.< 9_9 k:21`d.2>R4-KOKD85c7FlZoC]oGbDLmy\AAYJ. 7XRG>Yh?zU^nb%udW1_WczMLosqL'bJ3|aPKkr3InlHcn9Cvg(Qzz>YwpIn>4Id]OLrH -)?x)MQ%R(]>%^s'G&UU?[=A ?a9^:SPaO"lMg_W"kSiT?z;:VR=^GZiWnRnpe w]#z\n^<i!n;q/>jE {+x$NwuFDw+Y>?'WlDN&rKZ%sgB\5Ch`fɑAv6ɐ<,5`p^p,,v^KUavFWS3x]q$wfKjs%lXuMp|> X0W·2^֌o_era[ՏbdvsZkc䋎~1-k!Ylpy|:y.u QqWRrC}0$q[qNgwƟcÞh22 }K4럕QJRس-:ra\Tjeb!pi Zn-Lg]]_'qV*JfUVc:d_ZyYP\lVLUU^bPPfLsMAm[vTkOasTiYN{W\o]rZ<aAk0 gؿpain101kw!_X+g*nfw`hYW)\?+eC36j,5/t/$.n%orA`VxlD]qWWSY:YOAG]yHy>4S(eZO]MSK#w? U%= C""b:&P] NL8"pO!]>Tz-?w^< 28 \5 {Q7-JO|88.KkeHeO :SkMICE3nV]z9bs{s_`l/S_1Jm=UpaT,PS4[zmPTMxulDzkV{8ks=RRwuMmyy?4Ldӭ]Oif -n%?'w&Q#Xb `'GVA=> :8: QP!KgX!QgP?8s^~e_gpq-d;[%YpZ9Txl{!|.sEUw$d83w4}+uWp>wF.}Hew5n}LsJcNxGkwTm h`RNzJIhb i2Edl9XQZx/E戍Qeg4md_^~+j-Wd'5{TFlWHPs] j!=cВQ7UB#=b}JnH:N ؕ$z6B 9*#'5;,?zafoFhϚRl tW^hf}w~>Q`]+Slsyby4o@-eu[{xv$ ݁ ypw,l*xh}tqpRۻuyn=ԿkۯlccR^b>pjɲ_eľgmM©mZsuвq<Ŵx;Թffˁk|xoʋs֓%j눝sΔidّ|.l"`ܬOlrȧEpu_iʺ-)Yj@YZI t-It8*tx,n) tn&|v#7 /s"%]&kf c? 6`G-c{.3c&/#`c8$he']S3-|=2oE3R(:27#'yE:H>+R"11i";|8IB#RQ(S4fg.BaI^QHh'_PhKTiK[bRprb4z*H=m=#v'>C:ypain102fw![X +b *i&cr"\"d(VW6Z46bF<8h,<0r-,/k&&lG{EnZ qqBfsY]UZ[WCTY}[}84N( eVO]JOGw9 P%1C"^5%PSNG6!gO ]1Tu$=wV; $7 O4 zI62}@Mx/7"JzZG YO .Rz=HC82rM`|.dwjaQk.C]<;ln-SpQR,?Q4ktp`F}uw:~kI}8_t=^LvAmk{F4Ldҫ]Ofd -n"C%y&Q Xc!Y%GV? ;: 669ON!HsV!OsKC5}`g |aqmoo/`:W*TišU7j}#~5}uek",U85j7)yLp?j7.y=el0nLpAa7oy8kAX1uRRKzLFs|1~0~5aU7OQq.4lA^SCUY]YL0l s(V|o @qҚ@Swm #:jݐk=WW%Q(\}TrGDM*$-~DT P):+8I H xCrX`aBgnC݆_2pNXdb؀yu>PYa=WmmzVn7}_2oȖ[xv,~2Ђ2zpu+k)ziͮ{troPӟsyبl>ʦiϓjccP^ıaCpi_cg&mOmqstŚo9x:ȟe^y}}pȏwΕ%oꍜvʘhhؖ5t"iܰޮSoueix^rǽ*%Lǂ?`OHl&Ke5/ px1|l0 ql &}|q}(8{0n.&Z&gD!_?7\G'/`t85a&;$^bB&gE+(ZS8-z=:lE=L(B*6(#x!CCA?4L"7*m(6|7F?PTJ(S-e[+F`CfJEy'bJs[{`g~K[YO~vj]@|,"=@=`1/>'pain103br WX *] *d+`r(Y&a/TY=X4;`F@9f,>2o-.0g('hGtEon[deyCucxZW[Z+McE\Z}k}94N( eVO]?O=w: P-,Cx!XS8$PO;;cOq ]*Tg$;oV8 5 H21qH42r@Jm.5}HzWE UN +Qx6FD41oLbx+ewfaIg3;Y93hn'PmJO+6N7vqqhE}t~6~kA|oWs>fLv;kayD4LdЫ]O][ -n C#t%QY] Y#GT< 87346KJ!ErR!MwFC2bf xaqgdi.Z:R*OiO7}~~%|3use}"*Lou5c85xJm?e60q=b[9l>jBa'br1z0戕G:yENKwLDwn9s9u.\EEFWա3y0m?YL@GӊMeRL5 (z;;zՕ9[v!p-7ry DTl*c&TNsNM50<~Vi W*BN0=N7rAe\T{_Uepy>ч|ZS'_,>R@/!lx1xl2 nl(x{m}'9w0i5&X&"dD# \?6XG+.]t>5^&A$\bG'e61'WV80v=>j7BH(D&6&#x!CF>46K 6(m(6/L6"RQK(N.dJ47YEf>N,bLwf|jbHdKYz]c̕z,_==ݚ4>8'-QTpain104awWX (\ )c+aw)Y&a2TYA Y4=aFD5e,A0n-0-g)&hGjGl\ UFZ\\Lk]9uJ4^fvF4Z(eaO]+Z(+wF {(~\-v6 Fa""X4`1HxpdE tbO fwv4lJ8pFl@Vu@Lub7j7`>XJe8kҘ?^?hgLYRBK̊@}ʝL9 ,5֓-ktw~ 0}~i?U}d2f,LΞrT8,1|{Ey[??G##|/~@SrOkpU]bbOƊlg9S_̙Nsсk|HKەbLZ݇^w҇b`͇uv6Ȫf2|{n)׽s<{9^% lx0wl2 ol)wl|'9u/g8"X&"dE$\42WG.+\tB0^IF!]bK$e64#WV:/u3@j6>N+<0/}L>G4.T*6kC_"7REZ+@>o1P8KWe*e,\\wnqW?y6qyKwr$M==n+> 00Opain2010wz-k%p)wJtz?kArEeXUh?WqCW1p&Z0z%H)uE"wOxHg] puFbw\<\^]]^FNa~M}>4O(eVO]DPB(w? %Q%? C)#X>$WZNA; |iO"\@Tn5=l]9 98 [4 pR5-qNLq=67JkdFdNBSzPHCG2hYbwBfzvrbci)W\;; 868 NM!IsU"QsMC6oa}g|cgnoo/av2ZE':MFϚSΝ1%)}9KN-' }!) wJgYw_To |*rן_؉jV>ڟGGD e y u=XNsC[ 9ѹc·ZJxv$  wpx,m/uXgP}sqqRڼwyq=lW۲nedR_Pd>pk˶`eh&mOmZrεq<·x;ջhf~kzxhˆs}ԏx#d悝hΏmZ׊p0c"GߡjVSßrṃ6WϻoWcEӯR:iLΈo8_TkbGmm!DU%UD+9G8.'zIfM?vD;m>-#iOA"l}R)jGWib_#pEDfRY2L[wFYUnB4Y0jBAcS+PSd>oR>}KWh@XehtT?n_=okDVd|ZeemO}>QʏImuYv~JaЏXfB=Tݯ=,6>89pain202 kw`X"g#m&fw`g!ZW3 \?7 dC;4g'@/p%*+k&#mMlG][6_zCUsXVJZV FdBBOyIy,4?(eEO]+?(w- {~@%|'Cm!@,"WrEN%,oVOg ]'TW9ZJ6 5 C1 ^>2-^9H\(3nFzsOCvNKq)Oz5DC{/0YD^g*bwl]^Ic)QEvz=mavF4Ldˏ]OLI -n C"`#QXGy]"GTw:p76 3w3{4uIH!yDsP!yLsFC1h^|b sl^qzfog.Y:Q*yOiO7\yxz$x3opeZ,P8u3|q9u*mSow=wy4Z.mNEaJŊmLcMmScPmW8p?d6nWzyRh>=O[p_O^wINpxYXlUo9BlʘoG=/n}耏?>vؒP\zJc%x/Pm㉧5{\u%d"?͔UNFOzvcty{􇁙1L;;uIjQ#lQRldwTDu[9pr=eaǖZo͇fNIؗRGT ,`M (b}4/a8!_cC%fE#!\S>.x=>lE:K'K371"y9BE)-H>.o)1}*EC(RIT'U=FS?=VSd:M^'TLkHm:C2YtBZ~JOmT =6=27><a(pain203 br %XX-^,e'_r!"Y a)TR;X4:_F?OFvz8mZvD4LdƘ]O=: -nC"V#Q~Y;u~Y!GTq: c652l2s4lHG!w}CrP!{|LwEC0f`c nn_qwcde.W8O*yMiM7i{{%|y3lpeh"*Hon5|e8.dLn?sl8k0\DdCCÈ|=SFh8cjg;mfJX}XUU80kɛvI32s'|7)t֍0Uw&\z22fၛq:WHyh/] 5̓XE02qtCfx^jm 7)*{y5|lODgž]mLebKed3QUǘHf͉^wO=؛NIL;Vn;_[Ƌgs-}神ѡBȹ2P¸zc}g*j!iE4M'=08&xA7D3"L*.m6K%'R;R'@7E2:4ENb Nm,IKzLqG=&_*ZU>hW _=z=4>8'-QTpain204awWX (\ )c+aw)Y&a2TYA Y4=aFD5e,A0n-0-g)&hGzFv[foFfu\tV\_zI^J^fvF4Z(eaO]+Z(+wF {(~\-v6 Fa""X4`1HxpdE tbO fXJe8kҘ?^?hgLWRBK̊@}ʝL9 ,5֓-ktw~ 0}~i?U}d2f,LΞrT8,1|{Ey[??G##|/~@SrOkpU]bbOƊlg9S_̙Nsсk|HKەbLZ݇^w҇b`͇uv6Mƨf0z—|m)Ƨs9^% lx0wl2 ol)wl|'9u/g8"X&"dE$\42WG.+\tB0^IF!]bK$e64#WV:/u3@j6>N+<0/}L>G4.T*6kC_"7REZ+@>o1P8KWe*e,\\wnqW?y6qyKwr$'==d">l5mz%߿pain301gi[^x `v ghi_ g Z``* i).k*u mnMsCs[hm@4rWruV`{@i}w}i4y(HeOD]GzETxj Q{%oUXib%R\$~NI]sRX9;}:d.1/1u4-kK~b3ZCmE"L"bMhx@Aq- n`Zaha}e*xU5le6iJdL'zI?p_}w]}mq|7sLczhoÏz?4Ld]Odqa -n!>&z(QXc$Y'MSA :: 4;69O|NFgVMgI>4`g_Zŧj8m/ε]EiaDYˌJqQ{H}@uEl\rQg"LtcNdXlx1XpebkYxp:riqe[f>S_YcY[f]Xk1ld;wY>lbeh|gDynizk#vs-v`KT}:c{ iwnDdD2((B44g3!$/v6RPbNLO=ZKAvu<:*UIWZsk: w|~xrxz#|tl]M j?a+ZMaz)d!cE&l4\V&}'r3l30)nlty6k+'4{jv..XzIBKNRVBtcp~~[lt̖XrX́T~i^e9=U=~(>V5Spain302_ci\ X]P _Q f}`gl[mbuUYY*b+q1j"t*rh!jhkgAmW[]uBhhwXc^[xM^G}a|{|Y4k(4erO0]GlDBwZ ?nm%W@@dS$PrKQ"N/]YRD:n9 J0;n/1d32ZJN3CDksDqL"LMz_@AZ- ``Gbsy`id)`U5VeoOKpnK,`I?{pS|uM|m^{7prLWwUn}yC4Ldҹ]Ocqa -nA${&QWc#Y$MS> 97 147LKDsSKs̱EC1`f"^ZƘg6Ũi/ΥZ9ɻR%ǝNbԬN4}~!|)rD$k9Ð.5%a8+5v-V7Mƌ(Td~4i⌭| %{1WnTp%}%jD=zPis'j9s`H0tY]oMh$VUxJ-[TןpImT=%2[Qo tU84_jW]Νf^+TZe _sp/a{'_D)h?m YSq#z,~l3U3o(3gnL`3'P+j7YyX*|{WfEz7>=(sKUh;| Ti|{`fwȗmSsPɀ_ŐwcZk$=ȥ=B->&:4O pain3037_g5UY*\,cU\gGVH^PPY_U)a \=V7d X.mI'fGfvBvXhmBlrYrbW[RXGq]|{}J4](!edO]?^=0wJ -_%?C~(WF$P_>H!rOx]?Tq3:va8 12;X01xU32}LIu=4/FzcD aL 9OzFBBE. Ua7cwnaUc)JV9Aep8MpYL+GKFupK}t?}kLz6`q>~PvEmkxF4Ldв]O]Z -nA"v%QW_"Y"GS< 85135JI!CrQ!KsġDC0ae ~_q‰ddĚf.ǕW9ĭO*Mi͚LF}~${3|qf"%W8~5p:.Sn?r9/FdmCÊ=IbMEGmPዪk5[kJhoDh..F^kF]Qq+FoU]iJk:[`W&/t mV{qk-/L>+9@H%o5({7=PRTN_5Fa7=`M@HE'wNhw{h_ƍV]WT~mdd˘q 5=.=D2>8B".npain304_sU]"Z#a7_s0W._;SYJX3G `?F8d$C2m#3-e.$fG}EwZiDhZtWf[ LmF^f}v}F4Z(eaO]+[(,wG {(~\-y5Fe"!X@G#PwW&MxiV[ [1TU4:c`7 (5O1 cS32dMI\<4l.Gx|`D ^M r8Px=DD{>0 jXcq8ewnaNd3BW9;ep1OmQM+=M7}xqjP}t@}zHzd\qChYtDkbxD4Ld˱]OLI -nA!h$QYP |Y!GT: t741|34 IH#DrQ!MwDD0ce arcbd3V8O)MiLE~~%{4vqc *Oot9j5rWm7no9^%'jz6vl;m!&v{j}'7t*f>#V&)bD*Z3.UG1+[vE3\&K$[bO(d69$UV<0t)Fi7>N+<0/}K>G4.T*6kC`"8RE[+@?o2P8KWe*e,[]wmqW?z6ryKwr$n=QD=>OA؜P(jump14+ gs$[e%m@^s4Y9b7QFR>L [>K*d R$n-@ i=kD>AYh@r?)u2~F4U('cZO$]fUd2wF 0V-C/F20[lI*Y[*OZI i&J$/\B*`qAJwcD?L \F{Y@ pX[xGC|B[ziVi]'zLdzT`FMCXfbW[Qlsfze&uk}-]t o\Lkleh*Wk<:pP-gyE^~y\g]vwL5k}Rcmf}zD4Ib[M.,;s#-u"o{-Ax6P=j*P;zBKqeaVv_>X\QdO[[{Cj6z<+z5]p[p,ٗ,i^KVgśjFqXڄS挮3[š'/ZuRmOCZ݄ݖ/`鋰圦kĘÓyᗣjvmywÊ !~젌{‰OhXyRyCm0y$fi}Nqҟ{2t2q1vBѷԥN.vh-$<+A+5%+t ~&3ڒv~2n_)ww|$fbhn}e |}v!~ftesw}rr"wzlH+pA m@ڊa:yC4~pPsbЗBaߤ%MҬaŸ]YªkӣLcӭ }˨yrTTSo*8%]VGMT$? okQzoO moB6 sD$}*r;U8fB1^>$!]M6^xD(\IXcS`D7VQS!xLQgCY=k,F]lI.g>!ݻqjump24{hp z 6oh l) t"c3 bK=kK2"q> z$,y,{D^BE ^v_.wD uN4Y(6c]O3[^Z\?wN 1<Z-N7F@8[cP.Y`1OQP#Pj,J57\M4_bLOhfHKTbMo^E]^_kQHjNaxtl[qlc'fViz\g7UJ@ihWDYrsOyk&`n-vdz Zb}Vrlin*_r<wPj+djCkDv}Ln}8gmM{B 4 Iƺ b[M20;--,o<>}EOFNm6R9Dd0RH&4Oia[UWLbRniX ellv]q}p-yagcC~ONhN\v$QgZelg wr0jil8!<#N5H{b*G(NqeUAry_lK]jaVv_Cy`[YeOmb[yCloy<*x]i&k7qYۀV熵5bX$v򂥞/`uYmUvN`݁ˏ-c튔"朚nWyݛj術hyn} tw{PspxtxuX|鏾SkYxTxCp x$j[kŇ{Nrџ~Mz t ruBĶĦO,Y;HI:b/6S.aE|7uhNzA@Q@xRTuR\'Ihz$e|Unbƅ jcI=E]>i>>Kzbjump34`yh\o[R tT {|vhl on vtjX m= u>w%w{#m{l|Y"hY|i|lYAwJV4c(<cgO9[UcSEwV 1Cd-T0FF0[]X*Yh,OKW"Pt)J|:/\S-_]QBco>PEiAif;YeOfW=fSRzmtOjuXc[ZxbTF\>Rol]\owekqp3he9dro|[]mp[+e]9YzNltcekym6zz|>OovnhmF4IҶb[ME)rC)&;4-3n?ADdH>WMF:YEM9S\ zVS;N~RU gd\qj#ag_COsmu zmZ|n~2p:j/gbg7Xo#5~eZ"y,t63|D=}kbKyB4a\[6Kc\~?po~ ܋%}_i'o9v`׆Vߌ0dXM$`烌-bѡ[mUbNb݁ e|"s㜒rWQv}ۛslu}gzm~ h\}hoytwt U~Vo`}U|4u}$n\oΉOu[~xwyDϻȷ> âYr-11%~.挚~d탠{uhs(rm`zqqIdtmkUs!zrXxus4z7nVߍa8ۃz͙Π6ާ-ߟǡaΡѩ<ةĸXȸEE_q3EƇ0^x\ĞRO^ p j{ ie g!VrlMl yCg rLVnNhqxu qM~oewFnlRy"(|?r<04t$_.|=Lj=~0l0kG7QMBFRCUJxT|'hisLtbp{dDŽmaI6=3= >^a)y-jump44{ 8s|,Yq3q<5q/8(Y.3 732A!)K%AB*?(A>|?'C9p`BaC4U(e\O][VY+wD (W%=&F()kC*WZ%NVD$k!V(];T|6G`C 4B W= T>2PY??5UydQ'cU,@[kKUFE<t^OYsEYsvT'emUh |Sm?al^_*M`8;29n< T~O#HqU#JiHC3{LSW Ogfh ^V/SpS9M_df#vi0tbdOolo,tloe{o?v}BLx^aJqB4O\?8HRZvAbdv5+v4SpQp(ۙ,a^쉥KJgß`FiXրS㉚3QĦ'-戻*OuEm=׆4Ȯ/UҌ!dvя^vWk`x1ŏ-v鏣cyo􅮁 xQ_XtRsCg0t$^q`yNjr}w2n2k oBڒӋJè-uʦ\yA$D/Q.O@"4'2(Pu<76@r2+m%H($]1(&O86,n$]-70q:x-?7F$YRpC9Fjksn7q$mtbutx.y̏NsEdf}$^J5IB#EzTnHnTv} Ex&TsB#.;C2)z(/&5u07$4e%?7#.O$S+D4>m'%q7tyx.n8w= (f.jump54rPg}E^hIaQTgKSH`P. X53\ ,e&Z}Z ,D+h CsDEu,pi$jC4U(e[O],U)+wC (V%> C)$KC(P[N*C$kOx#[=Yl7Apa< 69 Y51sU8/yQQq@:7LkfHfL'BSkMJCG4__QWeFZsqxT&fh-W^ TjBVn`T,PT98^P!`gAVlkfboksf=!exvP\wm{~lF4Ld]O r-vpJy!A(mW (cWw!MSq> g91;-j4o6 ~L~H#AsM#Dg@C.eOQwX qQZbd2V;M*KbȦJ76iXm#vn5sed8y"fw,tlv6v3yFz=aapAuD5sSc~HKcVa{Cgo{<+{9YpWpϢ,ß,g^䏽KRg&fFpXdžSڏ3Z$~X򂐶/|XuLmDS=V܉ƞ/Z~mtmėvĕfޔkeu{]zcz WK}Vgxcqd2{~QhX{R|Cj0z$d[gÇNtsҟsw2u2p vDs㢕ߝJ͸-vr\k\ c-k-fYV'O+grS[:\qRRlJIJIcJCDHU8KBfKTųQgYwؾQ3ԿZ5F_lndIrK#x ^zzm dbivj \ve*h_V"L&U4M.x&FG%Or0T&$T6']9"KJ}(l*a9^F~'m.9M y<6}cA)JEX,n@0{@F\'WhR'w9Fn>3wPCSM`'@^s$}Nx2i{cY~fxԆ==Ç3>"V)*jump64NfgX\^F_@fpjgjabhy^`e.~ l3n4o g.w]'nYnGrEo[TmECdZFYk\jhGSp}`}C4U(e\O]BV?,wD (W%@!F+#TE"W\N9EmV~"\>`h:;md6 98 \3 rX3-nUIoB4~bev\mwD4Ld]O,q* -nCx"E$QvX) pYu"GSa; ^75 1c2e4fI{I!yCs~Q}LsDC0lcf"{aqcEe)W9P,MbMFu}~$z3qfv",l65~9.}fn?7/yZbbUÊLo]a͇Fto‡;*y`ay't7~YV0mj͟mMq$]TxS/VgסqYmZQG[b䂄 d:7T|ΘUϕ9>qFcsRckVtJ!N#f[exrx嗁Ow]T_?w1$p[s҉OJ~ٟKK } 7VxKw[r\{kuo s-w|/ayhmg'wb(`zrZhi7tnqd`nZG\Y^a`eYvXHyg8^sV^w^tfagiz`=i4X`v}prju a[j4ab.T$\Gd$dwt/h&~$h6{(p9q `V[+}*qt9AL&N491&y";EH)/L<3n&8{(P@1WLZ&WBFRK?YZB:X'bcs\[[Ǎ@qIg~m^sxs-=;=!6>tQ(Aflip01hu"].c.jeu^eXW,\F,dF>/g,>*p/*,j"%lGcF_[NDTOZ{CoZj8zEHh|`|C4W(e_O])X&)wD z%}Y-t3 F_!X:E"RrU KthVU [/TJ2:Y`6 y'6M3 ZR22VMHR;3^-Gxo`D r_M c8Px=FDs<1WXb^8dwooa'Od3BX9;fp0PmQN+=N7gzpTR|tkA}zHzd]q>RZtxEkdwD4Ldʯ]OJH -nC"c#QYKxY"HT}: j752t2}4tIH#{DrQ!~MwED1pbe sardpe3X8P*NiNEv}}%z4xqcx *Pou9jo5fWmD~oo<]NiETjCVTgqD_pq:)v9WmRi++_^AiTg&`6m]J5[_͟pʞ,t-cOy.LbtgOkTP $M!\^ㄞ/Yg TLzϗVΜEC}Q{h{ x%N&6:~LU-2{Qnl]}T_el<*h˟ooЇuNMۡRT1u~1u1wwp靖ޤBԽ-~Zxl,s2y0tih(a)tcmlrddj^>۲]]\\VWAfѷ^ŪU^Ƴ]dşbqit٥c4ըk:֬Z^zkѺs;ssȏ%މȋו5"|ӨڧSrEbfĵ@D')c(n&MB>:^/qx/zl) rl)| r|)7y 3n( [Ihe aF5]H"+a{8,`I7_aAgd$"[S:*x?7ldAK+?-o,}JAE41R-3k@ ^%5YGY+Ce1T,%flip021fv 2[XB^Geiu*_-f"\X.b9(j7=Ei+7Fr/'Dj?kHNC]W/GnCZ+,z_M4D{p| p Fa qF JE 8 I :Lig5dZ$^IM&5|-No{&O+w%H9A$WpUSDW@b~@ k?8a7]s;<^bPM`;XBJv{mJ,hP,bHRvDGfkX5YoaRNctv{b(Ph9B[{@ik}7QhRR36x/2q} @{j)uNy;pZv&Ni-.^K1id2`7DZJ$<`:=bK9,ci>3ko)0\U.Ly400po5q=-Sn W{t3j7&z'\kl[R>z=5]p,l8DsZ')Evt`h:9 RȒ3=9]z=4>_m+Dflip031jt'&`$>a$IgG% qt2f.&lG4eX<l86 soT6o=N@w/A>oN7 _a f >= &!# ~Puobl"RHh$G.Mu%O9-%H7a"PidSHk?n@ `C4`4f::bhNRt9SFG{}hH*~_N)^EO|4C^ha3co`TKaob+3e8~)Wnr(ezm'Lr*q,:EQYnHn9@Ǡ*2|0o>Ֆ ho Cz0݁q1l$}uc̔msfToIxKb -u'__||py-XƕPWfSoDF:a/BȠM͈pMteؚ|{s ^ QɅUkŪ 梡Yᄸ8ÞttΟmms˯zj۷u7֢i6fiț]hue+hƶlbL^Y\Z(VQӻ[IɺRI£S\©cYOP[dcD_f _uh{WRyq|q֎Ͷz̐8'ŕdܘ/̭ᤥGț[|tYƨ)M8o|0c]T+YXCYt0&7v|8I0*|/]{"Ds?cxI*SkBfA+-np1&g856^@>-fP(jCJlkO"sl@d^GO}7B(wnU?E`l,s:Qx6L,:rx5F"5mS`?ObiMnocsrQ?_s|"'ca tv~xjE= =O/>Zklڿflip04 Kq":h'OhM+YmH+z)+nM*8tH$m*un*|nK0uFK>}5?AtO8Fv_~?UT=T~ThgTi?hyw' stdg6x^NDp!| :OmfSPM\#H|OX!JAPjvVP6u7 [d-zo-m1cFZ0PpAx{B3wqK.XkJmO=\hz+ex` R__|j`3u8]dmEa}jk[eyXFwh/usw9mcci`9{'sZ4Ldy]Oxv"  lROcM$Q^S!uciJDSp7m8<.:/k2m2;_IPC5MCIL3EJ"@ZL-i\Y]3W^%cw(coTk%J6%KtIhtv+Wv46up9no)D7t"z'p:z?pqNv4a8s@nmMurbŀ@cnYf i ͌/4o ssG3N3 ]1Brl+b'R=H883ƚup.s1~ 5~7ԏw|X,-'G<jz,|UugM돆>}8Ge2,~h|m~ |]7PESXe =.%Ś5˂PGWכm&aڋB;/ŋ?yꁟ'eRFofD@lkksr}vvodffidgzg\xËm&|^C{ih&uaA{_jZqxY>UQwUAvNJhRqxazWyLYi_c\b(_gWPtom#ŀxڍdѯ(ǩ҇iٞ3Ր-gHgEnYp-OX}JzXw?iWfsn9+M|?T0>=h+YyJc|J3_pG3mB*Auk+5nn1=d^73mD%pf;sxC#zj2"k]LOo<1~lhzFTkjFWexpg=R}Ui$QSuvFagsgppviur!YFmj~ y(k#}~|[2fR !=]=u/>P %Kflip05} usH!w@ {HU|k y&b/6&V#]VTlwQj eN|us(!t.gL^2ND!, SehmS\u#HVy"'@OQmVa65^*|)|/qDj/~Y@?4~F4`Hjp9[n(tZ'][ZFq`[iiaNzbf[t]rDuiDdhaBqhHlu`thgsuwekasdt}SsqmDr#WBJ%_";J!vE'`G*Iu2OZ)S0'e(QE)@< VPEaE,;:;\?}S?NU7O9GL6V8@P"L[@9eZHQ`Fc]>l|;l'_Vp+VTwq=gt8SvkZn3\ooY~vM~hdx\iyMgbwTmvy~Vcz[4u y.p0zNԑDّ8dCd5W/ciʔ[F7sBP?_1kxÜm>Z8g݅x)fn}iԏxw~tt~>劅J}v<*('~鍉k풘]d '񓇇|bHiQ^VxZCkT6UÝgɀeK՜>׈cɈPˆdwx*tNNid_NѱsaƦxhשhzDָpfl\źfg$o+sx!n(leYj*je(]&]\ÿn|e[p_uJz؀-v|{mֵ~}ă廜⟔vb)䪞[71tI֔ՄV̄rqѩHr\ek\o 39 $!>_)yK {\}zkp[y|\| y8mebVVǕdHghpD_iǕ$=eSxbdtwwv,kE|,)*-f f=4r===>5 5)5flip06c"VG_5f8Z"S<[7KILUXibk_4bf|h4͚ÂԜ*u5BtN~g:h^OND L l~k,1*O%`#IYx3y'QJ?I?ɟ'y[›!iztqv'>N^kNE +jJ>-4-fV)UV,N_ Kc)Q)*]7)YGHeG 5IOH[ALB\])E\ogZLh6eeF`FBi{>Pdu{UJyLv|AkkVjFk{f7VlWwfgUkv[qY]gNO\wnYuKs~VYRiHZp@RMIoPT_\AnR;36NZ?PZYLZ_fL'LJiXSd{=ehEZ_WX/XQn?Eg7JtBOj.!@^D>+t3(O(]vaT| T_…-o#" "MoR_y ,J |Yb_6a;dp9Qp`|W]pZV%PWk8Cw-IgnAlPtWwdm:>3}5gjK"M'nG]mVgUg[``oZhe!q fTk"msĝs7x'l-f/XndRaSaCހ:x1Ѕ|_sY(_۝cXnэmXWKm_dMePaQyP됏A0cU>yC_AsNՏʬ5`{ΚHip^cWzipfvlqEj:Mc`PWUfU#QcNUN@lq]aƇ֑ɑ5oɓɚ zǞ=azQ_RuTs\l˃ eņet#blU|[a^lZ===t >j5-)flip07|!q(z<8o!k;r8cL`hWiiqzs9vDmdd{C鑦.iY)DaUcaej!aE՘{LĤ!Ӂxc~ww}ngsl{y>ᘠ,͕…z֔Ďm}tqz%:N ^eJ6)jF@/2/fN,UX-OR#Af*N&-]=*R@L`J 7LSJWDFEVa3Aane]Hmpdi KdGEa>IpqXLxP||CpzZoLp\6QkXvf^Ss{_rT\[MO^oTzF[HaPaG_IX MYTE?!7!:j`Ch`^*`AQ#QV^]i.jC_Q]y1]RbDR];NFJh!"$GJHrB-n7{+f+ZTxYeąYRl/X‚$n#z$} teQsv~#I {OieDg{:ju4VeyfbzY\2U{]m6Ga NVeE[Us]llXㄗ(5,Zk=F%sCDmAZElKoBsGSTSQV aŜ_4bm$O2K0?mLQKOHCg8_;n"ghU_Tn(E؜OYVэH";P)i6 B=0c,yv2|+;J"@=};M>t;͏5hĩHqpe^_s}wۈ ЃE:cevQoWpfldcaedAznaΠPi5flip08!(;韌!;8+|WRׂaՉsލ:Dfbd|Ŋxoޗ荬5e9@tMvg8h^NNe Jmj68+O-`J&W9x3QODUKB^?Ge![afbo!hIі>å!ˀ}ax|uostwCᗦ,̘}Ւ#sztqw$:N ^dI6(FE051fJ/U\.OL'Cj*N(/]E)T>P`N Taya^t]X2SvZgEG^1MSbDXЛRnX{gm܉!5}+]h4E#kBCbD]9]7oApPEEZ> M [NNVgc4co#O O0FbNNRMQAe6[:kckVaSo,?ٓQRS׎3.Qa/"%!_hy{#:;8+x:"BLr0Ϗ5fvOtb_^`sܗ١ ϛ6់eSYD e|~>ґXQaʵ_̛5flip09':6:6+WPڌa֓sߖ9B^`ʏqLs|›}ޅ5_83|t@sg+[^ANe'= `rjz23M&O+`J&W2l0QG ?NG=UF@ \$Ta^ad$`DĐrAz$}rg}u~kgwlrBّ+ė!Ό-"xntqj#8N ^bG8w 'DK)9+fG,U`(VD%Cl$O+*[L"T>I_G CE_BWAFBU]9D\kiW'Lfmha'YZP?\vDI|iqvdX}^sOgwff\fUpRy`lZlZrkvaXzURqpNfDgS] FdVDp6bFR[3_5x+y.@[8B[KqKLR_M|'M;aJrQXlLXZfLS]u%\AoA6g<:vK=l1'/YMu-?1*v8w"@Ę#sɓIx#K]f1]M::Y .m's !m՞]ϙM֘d{nz'sOiٚbO9an+b`?V]҈UmW`qQp,PlWZ7Ma/SSdJXݖObƖQgaiĈ3r,Yc.uC-_A?cDY6Y2d 0l|X7flip10le&n2r<|^_2dz4I5a,o1lqH/`6XIw}>DxzEDbNXtAY/W&q_zUfyk_hfkTymsc|VxNjlHaZkIwlKstuqtojZ"}brrevZ^r5N^gQ7n ,D8%r5&BW$UL#NbIU Q.$^0 YH>\<1zEyK8H=vb=xkV'U})BvPKv+ImGi^Pm,ThOKsLEjL9mpFyAm@dYZqEXzFata}!UqRzWjSPItWjUMla3ci#SsY^G?gTYKb_Z^ģ+HPSe7KcQn|lwpug~xqw9t1[FhYc\gFc^EYQ]W\>nabXdhhΊ̌2sZ~9epǑq2UIod\OeYh-en~/p5ow2,_]Zmc=S=y,>KL!flip11ja!i"n/ `]c%VUc[^<`48h81g#(iLҡEY4>mSNi:ysu' Lz2Nd_Am_VA/$X |FdLR6C&McO;&qH%MSE8j3;Np+n{&_/8bDL1Or@z}<=|xB=\pGla7]Y(qX^s[}W>[XdyWKmtXZwc[CubAFsU?ahMpsoms{^qsdjeswft[saheu&0AŎ+ N:H}O"a]!J}$ST#T!Wc@BTr;k<M7F8h6l6 lNcI3ZIaR3XPAKaS4|\Mw`=o_Vl[l:I^IU7FUv>Umu(ăw5jwnhos*w9X}z`nmktotxvobnh{nexrZ}wegZDUiYьp5a،UhNs33U]qC{]r+Vpc]sJr:vlǠ)2dO1^O'dd9p}*i|&^9gFBmAgYa^,bK,`7[>+X0]['YG6oe&c[QF:s+@ό#LbO)7v:P#5N^FGqNZ^]Y#4n (!ti vŐba=V=4>lM]flip12*fv7[Bb?h"_v.Y)a"%STC\D.A_,28h/!!hS_hSVs?bavtv:4O(eWO ]KPJw; Q-'Cx]:#PKIA_OpX$Tm$9xT6 3A/1xF12z>Gr-3DxRA'PI'(Mx-BD/. uM[z,^we[&Cb34U:/dn LmBK+-J7zsjjJv{8vz?uoTl>hStqf`haߏ_Pz[{^Cjvee]csd&|jOaksfqtgm9ot;icc̔|jy{xwŊ,k0ō¡ƣVwone+>B;<']Ih&a;KZT/!kx+'sm#jm!4w|+n(Dt Cl4V&)d^3]CK[G>\|&?Y&%/WZ/.^e7VN36p?*%deCR(C1o+1})QGIF;W :6k.D9^<3PTXLP;dQHE\RfG`+fUwnzoTsVkgp{=\= y3>*i!Asalute01 hw]%e%kbw\dV%X?) _C-9d'12m%!.i%jMqEwYaiH/kq]pcWaZRUNue~~?4S(e[O]^T\$w@ V-. F"XkA"RQXGdV![*Tw.:\7 "7I3 N32II}64(Hx]E [N 4Qx8GD82Uc4fwlb'Kf3>Y97hp,QmMO+8O7wr~N~t=~zE|oYsC|WtAkayD4Ld׭]Owu -n C#$QYxY"HT; 76335JI#ErR!NwFD1df }brepg3Y8Q*OiÏOE%|4usc *Mos9h5Um7mo1wLiaQj?sRg.av=w3lI8GlaXubOue7l7v=XHeYmԖ?t9 +XؓRntI}41V~nbZ/,iΞq\UZ{k{ b_LO|XB}@lqR~o`vbxMȊf9m_Λjtҁ}Hjە{>u݇vxӅx_·v6Mƫf2{ܤu)ߙ}1Ϩ1ɵz'٫p(s3j4zʦjxxϘt܇nQjqqjCvhchZ՝dQҌ^ޅaBڔojhv^\Ѐf(ˊmGpkwrmn8suqd\Ÿxԇ}‡{|u͓.ӋzƓÚ:՗$ժǭVpz^ȷ+ABB;(\Kl&b@K[[*oy.wn+ nn %{q#7x +o&YgB`>2^M-_}&5^)&[c3(bD'YQ2/u=/hDBJ(B+o*,}'JFCF:Q82k-A9^;5PTVLO:dRMd]RfHc,r[wp]yWqgvȏ'q=z˗=.>" hsalute02jx"`.g.m"cx ]d W WC_B*6`(00h*/f'iMF\4E\ f^7wgHm94N( eVO]kOjw: P%2 F#y;$WUNg<iV#[0T.<_8 *8 T3 P4-MK76-JzeFeO;SxFGD>2]d=hwxc^g3O[9Hio9Rm\P+IP4sYtLkX~6mu>auSmy|F4Ld۫]Or -n!C#$Q X]"GƾT< :8 556 LK!GsS!PsȨIC3dg dq—joĪk.ȡ\:ƸT*RiͣR7$3ve"%d5}:0cn58 }WpgYl)z[iZeUm]݋z5jm[hoTh33T\zC_br+Tnc]xA{;\r̠I.y2sg0N|ؗX`zGh$|#Rt1i_l,bY͕jSHK{Xj q-U'G@JS 9HnvY}Tgbdˋ.vjϠjzҁwHVٚaI] q ~tЅ:Hҽ6 ~ܻW\|Ɨ} قڒ葶*{/g e㈯^kBaǒq[[DMʖKυG^;zZDEfJDžgM×7kK0\4D[RYHX=mՊtmï~ɮ-KwRŮ ӥ'ܬӼClkfշ4*eeDQ(H063+,JII?=U@3m4?<_E4WV^IU@EYQE_\BKe,{cszfēa{Wswb~Ȗu 5=YK=+->=ϋ>Usalute03iz] c$i4ez)\-d-W=YCAaCC2_&I2i,7,e3%hNIz^Fu\ s\sFTf~g~L4^(&eeO"]K_I4wM 1`%O C9#_O$WkNHK {S'#\OYuI= rs7 L7 o22wf3-xeJxQ6MJk|E~MYRygFC[1wuc]gzaf)qZ5mho\Rp{O(lO4yrutumk|}6t>qywum{C4LdӮ]Ogre -n!C"Nx$R!Xb]!OT<;8 766 MK!HsT"PsJC4bfcglom*^NqiU'9~^K0Ey[KMP$?8>/1xuIlm.i ^":w`-Yy/ #3͘6͕t 1? <#& |-ZVW^`U?dy1f%d[QӇSO-ٟ// R h `9K8eOYlcNο÷- ɰD͗4ʛc8Xydqzƈ8xoјӚnz|1vcBy{ŗqkXĕ`ʨ[ϸ=ЬsݤT'=̬[Ȼl_nwòaeߴ0A{b? 8salute04QjkJ_Z> eBksgk] ^aegX[x [L} c>h3bn5k!^'g^jN\EhKZhaDHWj-salute05wbpsV\d\tdcapWt_R]V(_Lx2_{2is#cveDZ *E+|X9cYgB _zt{;4K(eRO]L %w; ]"`M%bFC[/#(;%WM]S4!DkS\"\oITE9= 8^8qD7 fd2 ?T4-DSLFA6^@IkSkETlL[KQky^FC_O11\]FIbh:v]cpg*uf[0e^j:xSRopnP'dP3znUyw:UynRiw9JxpL&[zIboSv>߮4Lלd]O.r,έ }-s%?a%N8$Rm$[!n"^Z#O!U@=JP.ziD|d7GndḟAtdχ5+4epeb(,t^K^gsFz]V.weştƞ$~lVy*ocuXpP^Ha߈/gzkbv˖aˍajlyahely YS~Wfs_l`|6x|NrXTp>x5,qqrʋŝfzrbԞi22}0~KI蹞kݺ>M-WdUDr ޤ Ӣ 碆O&ʛrTޙLę[ɟ;ԖHǖeIKߝ;rژۓe2%݋TQҏmӓsڏDXښwPw]lxnpޡbbPq b@ծc׺Xå]qư7PF]f=f!uB:~.U_R^ybk$u<mzZ(eUQtYk{,X&XF/`3TTw0q'&f=J9k5*hnHuV;E0f+4T yP7|x2XUPrHK~TKbZV^K,"L_iy|!`||AZvsYFzmqa= =>]>6#-$salute06]d PfVu^_dTu]P`%V$"`'.a+lcdkK4 kd4YKtVcAd4 AKBvh,4:(e@O ]"; w- mo<%o8$Ck%(9+)WYJ#S#$$OUSm'^|<TR*E BI@{6? mP: JA;L?UR1=f1SlXTOYUVb9\m}LQ>i?96DfJ5mh4ڬL~dx]OA~r>׌ -}w-?d+OC&Tv+]0zs(_\)G)U@COxBlFyE S=L=BVHVTiG`Yu]is\3j@)vj*p>fmiT|~:M~-cq1bf$k~eorg0v7}*;oFr) Q_CCz(ltHQ~m\_eyIy,\URA[W`o@_eo4(oFSbRb((_]HOgǒ^DfXxS3Wϖ'ɐ-j֙=UvJiE݈=-Q؊.To~eȑȎq⎹]SzSma:t1mkUrTj__|`pRoKd3o'^r`tguwq0k0h5yGQhGy1`}̡zPy|gG.Q9Dޝ9:C-V.K4+䞏,Oـa7珗ARwqYv=CwLpT26zIzLAaB{g;rT.},0!)z*߁8xB<ـb3uS4؜B֍p1،v3OªDE̸2)ųD^2tN.<E~eNfAxK^TZ~v:9YCKTjw1n1vm jls ct#S`+W PWm,Y,Y3/c*!RS%t"'i,p%8xr}p 4l!20VFV?R8;zaKcWJk~enEyO:x _zx==v>f?hXZ/R"salute07JE<_CrM/KE,@w)K4:`@A Hw37DZ>Lv1w<4L(eSO]TMR&w< #N%L-C50[c90Yx`*ST/)ql&S%/^Q%Ts8Q f[KIL gF mSFlOdt@H@cltj^tjf|Jmmba>RDZSwiBh\myvk%f}2yZ:Up8on'go.?iFEwZIfa5_n(PMkaYe`>4Lޜd]Ojqhح -63{4Oh*T4]\W0fu0G4J_KmK}SSpFiF_aadrbi_onlim3~KK|J\zij:d#s qw!{w8~z01AU%XF>K!gsJ]&MqvT"M }SnJuRU}cF뢝LCoala((~X磘Vlqغ|D׆ٛN梘?vǶ'޸2ζjLs}ei^ԊU-mЊ.np#ݤ{Δގ|ߑozom~:1؎ ̍rrql}~ƦāǓPƒJ؄?ђ(}uπ8˗ljuě˔5ь5׉5~.uŘZ+'2>HBG=ER,5>S4hAScSPPNg{a\Kf~}́[kp91DŽ5!==q>e~h+-salute08CE5_ u>#4[ #Q%Q,C8/[g:/Y{e*SW.'rr%S'.^W%Tv9O g_JNK nE oVDnRb{wCGCalto\tod~Mkmh`=WCZStjB|i[pvuo#l{2y];Zn8vl nm.;iDBsYHcb5\p(NJk_Ye]>4LdǞ]Onql߷ -63{2Oj'V3^`W0Bt/G4J]GnHzQQqChC]]\`p_i[klii}j)~IGyEZ}}bg:`#o2lt!xt8zw0-<Q%UF;G!duJY&{Nn{wR"M QuJ~wRU턏e4﬏LFuara((鄊X묊Vqqũ郊D܍XݤNꬊ?{ʳ'ÿ2j=yvjicĊY-s.uoدʝ͎ЃΖuzum:1ӗ Ɣݓxrxlׅ녷ȯƈʛPŚJ܋?Ԛ(׃rІ̟Őu¤ɝ5Ҕ.ِ5)wZ.'2K@I>-,#'&<#]*xq  ޗ~ ][! xjQY>r,`)hTr]Nh%^bPbzm(m އtˡzNŞ}•҇Z4/Xfh{Q8+a0.T0anQn _ Lv06F&;6&=p8?<=L@H,-6R1_8O'${$ 7s"?24sDCThVPU fxa]Id:[ku<<Ɗ+$=J= >{pN5salute09S6D_LwVOdFwP?`)D (O'3U2a"XuZcW#mrIZ'Tu..R}g*SX4'vu&O)-^X$Tw;N jaJMJ nE qXDqSbxEFC`mxo\yodMjmf`>WC_UtnC{haqw{m#iz2~[Xmotl km.ClJEs_Injb5cp(TKkeXed>4Ldġ]Ooqmܺ -633Ol(V2]aW.Bz0G3JcIqHRPtDmDc^eau_iclriij3IOyO`~|io:h#x1ut!sow06FY%\FAO!ktAa(Mr rT"M$xSnAoYCyo<*9jpip,ܯ,y^Kdg̷'y7邫^ꘫH0l[Nʽ$y/ju^mUNh׈ݮ2k㊳Qٔtᡲkzpdž 뛝rz{~ˡNz`эT=怯0؎,x[zɓN˟ ˈ2ڄ &~.uĘZ+'2>7T+ CR-k.[('(,8 w- F81rLDV`YRUi}\\MdxɁTki 1}?(=^=An> 5nGsalute10rp}e\sm{utlp d{ m ^]`(iI*l,vqtt tM}d _QhgPTkMY4bt+W4f(9ekO6]Bf@DwX Bg%[%C|G&SS'Rtp$N?O!n|!O|:$^^TfKB_m?T> p; ee:-d_ThS;wMQkqtOrsWuUZkgQ?_9SdgbQlh[zi|pu/ih1|av[]os\,i\5=zz?ZrWXmjh9du|(I\zcadj>4Ld¤]O]Z߹ -,?,Ma&S(]O#_~+G(JcCi?E An;k=aSkVtPgi^"rYgY?>LiSp\javyr{-m;c#apc52H!_.`~D:T$quCiLKp'mfH,hU`Fyd^Coo<*9dpcpݟ,՜,o^K]i¢&n7v^戻H0c[N$􂱰/buYmT섇Nb՝-f튣"霣sȘPᛙoujyq "횆ux~kOn]~UFt0Ѐ,n[pˇNx֟M {2x Ka̎o;M2zrWi%,431)#+,+t /eu&za"y&}uWcb|R  ݃uىxJ!ޅf ~*۟Z-ߏE ؒz;OЪAGٷ-2˸~M^@vT͵+G˼Zǀn`mJJoTp1E0Y_Vb z"<y<j |z$t x` qK h&p e~gk$ecC(j=`W+"rLn@4)~$f,{|AGl>16s/H6UF@TVZ`W]"u_a?v|dxŃ|Yy\ mc(a==g/>YI!salute11rh g[ou/lhf n" `X3bL9 j>+5n 32w#"'s!t!Ek+ZjkI$u]?!\bVP;j~@~T4f(.emO*]6g4<wU 9h-M Cs7"XHQ#Rxk N0Qu|Oo& ]NT\B;_m9 B7 g4 ca42aZKaK5p@HzupF woN qJQzWHC~S2VcacHdwg|agi.\\L^xqXm}xC4Ldε]OVS -n#?&Me$S YN`%GVv=p8: 6x4{7rKL!FsT!NsKC4``rf"l`qjol/^:U%SpT7P|k}$z3~reSx,k63}F+|`dL{F.SeJoITcGeEhJ׌c4W܌MzFs~3Ă3E]cD}Vr=DpQXb@c:xe˚I. '{9jnؗuSweX8o pdÁ1Nj# uΕuffousgxp _\NS}Z8JeRo`ER:j3Y͠gщzOuۘI q `ͅ|CrJѿ2lu[yl*q0y0tv"j c+_)ivkefo|j`\kWLWT]t\uTTKdpYm{P^yZ'xbx\vct\Fd6U`xyho{nxcΌrُ6v%Yp͔i]Օz3haҭުNnrƣDez_m60g1ĈM&YcWAGM%' yl7 8:x8$ {!/ y!cqBjLh"ix&/g/$ee9+lCcQ40(9 rC4O&B57*)y@@I>-O"94p':|>NN.XW&]>ftACiT_YSk dYhFW{ȐR`vV{eɎ$V= x=,6>AAtaunt017auEWO^Ld"[u;V6]"3OP")QF#!YD4M_,6Dg/$HcAdGG\xE4tZ6jfYerEg`|z|94N( eVO]MOKw9 P-' Fz!X[;"RKFA_Vr [#Th':uW6 6C3 vH22rCHo03y!GxXD VM }-Px2FD11sOby.dwga'Ed38X90fp%PmGN+2N7rppH|t7|z?zoTqCnQt;k[xD4Ldӫ]Oif -nC"}#QYiY"HT: 75224IH#DrQ!MwED1be yar}dpe3X8P*NiNE}}%z4qqc *Gon9c5wPm7ho1iGiQLj?eMg'ag6w{*lC8v>lNNuNDu\7d7h7XCfFgΘ?f6hnDWKBCɊMzǝL9 ,oDӓ=ft2u~ @x~dNOj2i$W˞w\D>EuvXrhC =06x={A]nOrlUfdjGÊra9]YəYn΁qxHWוjLcڇfrχjZɇzq8MĨfƿ2Ⱦ{ءs)ܖ{1ʦ1ijx'ըo(q3i4xţhtvɕr؃lQeoliCqf^gZњbQ͈]ځ_B֐mjzfr]\|e(ƆkGkjrphl8otmb\xσ{y|ȗ.҉ző:ӕ$ԨŪVpz^ƵC0=0+^8i'T>>HU/-hx+1qm$#gm>t|6j|(Nr OhBS&6`f@YC XXGKY{-LX&,*GBrwtaunt02W jz] ^\QbOhqksmaiix ]] d.~ l4z0l'v.u#k&mgnGGz] sD!q[l[4eEl~t~f4w(De}OA]PwMQwg Nx%`CL!be$PzNLf O= ]_TvXuvwnm{F4LdԾ]Oki -n!C$~%QXi Y#GT= 98 446LK!FsS!NsHC3cg bqiok.\:S*QiƱQ7$~3te"%}85:.|zn.z9e2ppdTlŠ)jrbwD}pmxۋ5[qh`kh)~.p^CKvqt+|rdyYJ:Gʠi&r*b Y K{c<6֗Crs.r{ 9x1WpjD??͕P5))u5xDI"NnOZRjQNE{:w.l|ˠ\ЂhG;٠E&B c t̅l0{MDrRҾt]\t-ƾ ˦ Ο+*ح2䳫 ƙ]ܶUȣʵ[צ_ӕtᕯ<ݘU׊i鬟__<ׯ}ᚩ{nؙ.Τ?Ƒ[Wʒ܍páv~ؒ١-Hۚs钙 hKmΥͮdkpmĭf_ֶ0HP;UI=e8w^_LIr$atyh!pxW%}{Ws}\2zMP!lx`&dlEgd3]\Hm!cv|)eIfd#n8u_Um.|)zs9[S(_>:G4xBGYR3KVMA@F8bEFYWh([Q8Hc9\iD>m|$iwsp[KēH@}YLȗ[%==K*>ozZŃtaunt03kbPm Pf%/.,WH{Ev[rC9qZ7p[gDr~q~l4{(LeOI]X|VXwl U}%kCX!mj%PNWh!OI ]lT`<9 d5 2 z4-uLh5`IkFNjQzwFCq1}bhezbh)|Z5uiolQpP,zO4rwuqm~6uL|zwxn|?4Ldֽ]Orrp -n"C%%Q Xn ]$GT>:: 668 NM!GsU"OsþJC4bg"bglon/_Yti[&7zYzS5QzΟR̞U$E@D/>yuTpm`ě{Dtaunt048YYD$! %2/ ]JrDlZjBhYgZ`Dg|e|j4z(HeOE][zYUwj R{%kCV"nh$PNYe OF!]lT^<9 c6 3 z5-uLg6_IkFNiRzyGCq2~~ahesai*~\:; 868 NM!HsU"PsLC5afbgmoo/`cti\4YS.[y[VNU$DBמ@-Gvr\pmBk%KLt`d4-HϠF͙-)u.y:C?!gTjYpTO?ܝ1#[ЇNB[?? o3n4\GžYk_Nš~ѿ~ ̬մٷAƽ=är@ձ=КXܜÅޤLޜe?Fѵ¡ڠƟlߩ ׵0է_ͲVΞxèvߛpҶXtQߧ]ܷy &ݮgR"f䴜y(t̮]ɽo\opeXͻ\4XXSs6EOlGudKZs !z xUX"N/' Jk.H-12- C+'(-\_ taunt05‡:Z]Njq]'F2- 2N. \J[DTZSBPY4O|Z7I~DM{|L|_4p(;evO7]QqPHw_ Er%_!CI#`]$Rz NMZ}O8"\`TpS=n{9 W9 z5 rq5-qkLs\6TKkGO^SznJCf4fuar]esqbk*t^{:= :68 yNN"IsV"QsO?7jatgtbgop/b;Y%WpX9W|k~!~.~ueVs$8.v5l*nyon+s4Y2poEbj;f,ine4⌌ %{1iunksnh%f,D=`li^'4YS0[r[YNU$DE؞}A-ForXgm>a%@Hk\]w3-NJРJQ/*u,x6>;}iTjYpTP4靬1#Ő[ЈОC]AA ʜ m3pO4]IXicOuƶɺʹز#˵-ܭ 主֪VʬLӠw`౱Kᙳ잴;ꦰI雩f>Cݶu룶rn窨2ݴ.ۣ`ЬSٚ͢xꛪdˬqű}ĸéZʸިMòmͪWֹhѶzLu[Ì\͌ppZÿX%XVMn+6KeOp^AWnÉ"y _[)Q% A!l2V527#(C'-!+I({\1,x'Sw"ouZ=h2aqNIyD<]]5qZ?VWZ ]ohNCOˏEruQk~NY}gX)=9=s(,>(c]Dtaunt06Ά< i\1;+i%\8CC<5P/%c JMEF[EC BZ|AsZ;wD>q}>}R4e(+elO(]QfO:wS 7g%R#F~:%[\P#R~o"NJN{V|)$\SUgE=gq:I; o8 ke6 g`MlO7vFLzuxIuwQtQTzbLCZ5ZjadQfsdbtm*ha<~aoTWntV,eV4NqPJc}u]\~kqm~8puLIgwfemy|?4Ldö]Oig -'?(Mn#S$]^ ^'G$Us=s:? V$3Ha] \l3/M|WMQ1+z-xx7>;PxlTlwTsTS4䎚<$Â͊ΞEXDC ʏ;n4rO4`L[mbSxҽ ʱĨϣ$ä%ޤ1岩ʜRܿHӕyδYݧJ듣<暟O㍚^볝JA2ۭxꚥwo/է=Ғ]ƚPՋɓ博eräZر#ˤlʸ ϰj÷}KxgƋ`Ћsn][[VEp!7K[OoXAVhΆ +ĵ_Z4P$"A)8V@->!4>%5"Ia#(|Sytw\.j(aqBHz<5]V.qQ?WLS SdhA?Q̏@huRa~Q\tg\ϝ=迬=->T\-sB1taunt07̋$9a]::;a1]IKQE"D9Ȕ2^,VCF>\;D4:Z68rZ0xE:m~9~Q4d(*ekO&]SdQ8wR 5f-P$F~8%[\N#R~m"NJL|~H|&$\Q UeBI āc#(Twb*p)bvAH>0_V.uP>ZI–P Q_h=>S̏?cuS[S^og^ϝ0=7=J/>bT >Ptaunt08Ì$4[X97>Z2XNHRC!GÓ:ʎ5].N6H4^k-E40\.p[#xF5g4O4b('eiO#]PbN6wO 2d-M%F{5%[XK"R{j#NGJy| Hy#$^N!U_><_k9B< i9e`5 \XKeH6k>KzjqIipQhITz[M?|T6NacZGgsY}dxkm*`aPzxpTqnYxRW4㆐5Ñ$ywˊ̞HxXGF 1͆\EuN OZh8<T̏=]wUUS`ig_Νv=M=0>+JFs7ntaunt098&F[;F?Z2OOSD!C6ǐ2X,N(J*_hGh%]F$l\uH0`0K4_(#efO]I_G2wL .a-I%Fu0%[QG!Rug#O?Fsy Hs#^J!UX9;Xg9~=< ~d9^[5 USJ^C5c8KzclHbkQ`CTzUM?vO6H[dT@hsSwetem*zZ`Uw\Rpn}}C4Ldij]Oca -(?)Mc S$]UP _(I&Jb:c6?;j3j5YHfL"fGqaT"cPsO48HdTi"Tdgtm6sn/za!4LMVtVAU_ 8̆+;mmSE',2"-V?eLP*I-KG';H ǁ\$'Rwi%y&b}>H=/`P.yN=\BuL MRh4~:T}̒2b4Gtaunt107+>[BCAZ5QNUI>1~0X+J_]GD]i\sI,\,J4](!edO]?^=0wJ ~,_-yG#Fo.$[IE"Rne"N6CkwHm"^IUT6;Sd9z;; yb8 XY5 QPKYA5a5Kz`jH`hQ_@Sz~SL?qM5EXcR=gsQtdrbl*yW_H;A!>Z-taunt118)?[?FBZ6ROUG!E85Y/NI^ G\ j[rH*_~)~O4b('eiO$]4c26wP u3wd-sM"Fi4#[BJ"Rgj!N-Hd{Og"!^OTP;;Nh9wA9 vg7 S]5 OTKTF5`;Jz^nH_lP^ESz}XJClR4C\bQAfsOwcqfk*y[^ 9a4a7UKdMeGqaU"cPsN?z7EbQh"QbZrmoqn/{amPifmFuWQ.eVϟ_N^$MK؜"}H%QRrgJmOB2VMk-p\94QhϠNΙ7y6cr;byEnKD~Wpx  pRthYy~RWz?چ5$xtƊƜJoXGH{ 1ˆ.`P)yLL\@uF JRh.|5S|˒9TwUMP`bg^͕C==/>ƞP$taunt12:%4\X89iyIuOG vx##pRtnYyRX?܌5$zÊÜKuXHI 1̌.bT)vL>ZDtF JYh-4Rʒ9[vUUOaig^̕=ƴ=%/>p"mRtaunt139\]!:(\]7K:+1% `GDZ CCY5hY?lF'e|%|Y4k(3eqO0]!kAwY d>gl%gWC]@!4S#PZr NQUO[.]sYTIE;Fo9 qK6 no4 Je4-K\KLO5]DHk[tF]sN]NQz{`GCd[2Ab`OJcsM|aqli*yc[mWigqFyWQ3b]Ο]̝`$OJ؜"}K/OZrhQmRJ/%VUq-uc<"6NoΘK͕78jr>hyJsPHux""nRqmYwPVCۈ5$|xHuXEG 1ɈOz63^N3kJ>OFtD HXh+1Oɒ5[vQUM]hg[˕ ϳ==\/>%Ttaunt14 8\Y [Y,>2%!3)`HBhXg BoX>gY7jE%f{%{Z4l(5erO1]lBwZ ^?`m%aWCV@ -T#PTrNSPOT/]nYTCF:Ap9 lK5 jo3 Ef4-H\JFP4ZEFzXuEZsMZNOzx`FC`[1?c_MJbsL}`plg*xbZhWih'mFvWQ3]^̟^̞c$RK&}O.K\ucQmNJ%+RVu-t`>"7Iq͘J͕56j=dzImQ JPqx!}"mRmmRuRSCڂ|5$vuEwנDE 1Ȃ &`.m#2_ T^1+N+\Kv=8Y&]UJh:4XK3]QCDL{D DYh)0LȎ0^vLWLYhsYʓغ=˜=F0>ftaunt15y6w{WnzWyB'!%4~x/!~XV'CT(YB!X8qY=tE*p{-{a4r(>eyO:]sKwb \H^t%_\CSG -]#PTwN]QOP7]k]TBN:Bv8 iQ4 is3 Fl32GdJEX4WLFzXzE[xM XUOzvdEC^a0 Ak`MRbsO`qpg)wgYo8a{uNY{kegz6cyq>8ewZ`mpxC4Ld]O53 w-znw"Cm%D$QjY/e`l%GVU= Q8}9z5W4Y6TKfK!cEseS!dMsICq3H`We"S_qwhowj/\:~T%|QbR4<{S}$iz3ere=^,or6r3g4_)Yioh=lF[ `^eU_Č^(V^bxFioy;*}:namt^p*|*i^>\_gl(jE}uWS5Si̠`Mi,YO8}VBBjؖVYhCTCGbw2jb@9D~ΘJϜ52u7hwDiyNzJrrv lSdsRoRPFo}%h[nɈOAXDC { tjFmϰS¶FcDŸmaQ}- ,ĩ$Ӝۤ PƥxOЈXؖJk隕#摉_8ڢxVyJ#ҙj듂l9v?{K|y}um}uu\ws%m{0]}Jls_ȌknT/-FAƉL*f6a^THMa! p  gzzxdQy{%z.|$ rJ!xm2zM/<22$xAl)''-IA&V10Dj7+JA+9?F.5-{.IG2XHXWDFNR?Q\f9XK'Cbh05IȎ.jtDaNRprX=:=qp2>f{4gtaunt16WskagcOiJ nwumnig q|f_m%~v)h2ra0{]"s\tOEDCYT7B:X44wY(}D;u{D{b4s(>eyO;]&s$Lwb nIqt%oZCaF X9_#Pgu!`eO[6]}YTNO:Rw8 yN5 |p2 Um32UeISX4cLFziyD kxM eUOzaECn_0Qm`\Tcwb`of)eX9]goTOpqO+bN4SoIe{u`[|kygz6yxq>HjvlamwF4Ld]ODA -n!C$V$Q{Y@uY$GVk< c783i3n5hJ}J!tDr{R!vLsGC2]`pe"f_qfoh.Z:R*OiP7V|o}$z3~qeV"z,p63w9u)djp}=w7k2d_bU`Êt+[aade^mgۋ~5pf_hlZh3)^\~CTeq+^ojY}J:Nr̠sG*oc^{mF>xחLaz9cd Am倈1dajLFFΛX=36xuBsxQT#! #xHcuYtUVEd;w.dXpn΂~OD٠N&K wy m̅r7ҬNDy-T{Za}͛/ɓ ,Π{,⏆-y2~țqN}Ő{X|V|z/zYw}dܗnSjTr*؎yjtkkEzp>uKrtzxlyntlp\wr%k0jJrrqlsmb!;2f3i\UIKd$[ {jW hEvP y}E*}NGpsi` t4el+ZcVfjzo-lGz$n8u*v5rgUV.,n z5?M&I9<1,y%>AK)/O99n'={'W:;WE`&OI7HV4Oaf5ab'LgsCGO3tAj~]Rvʖc*=i=3>GT"taunt17 gz[[ag9es3]0e<XYK]3H f?G5h'E1q#5*j0"kGlFf[[D4ZYQsYH{E4Ro|b|T4f(-emO)]9g7;wT 8h-GFq3!XKS"P}f3W}wOi# ]ET]B:fl7 ;5 `3 h`32fYIcJ4q=Gz|mE lM uGPxPFDN1dcanGdwyza`e3TY9MgpCPmbO+PN7mp_\|tuO}kYzolr>\bvTktxD4Ldζ]OXV -n C#m#QYVY#GV; w77335~JI!DrR!MrFC1wae }`qedg.Y8Q*OiO7v}}%{3rev"*ao4w85pam?x62hVbRYl)`[aGc{JhJيc9YnYWw\Ps}44|J]cDJfӡ=zIm~VXdBbόJv˚I5 z'7<ה@dw0l ŁoHkostfronygi\x}|u*z<ŗ }Ȫ®V}upkEwA1D10^2k&WLKH_%+py8!{=s%'z{ q}+6x&j?\,hD-`3 %ZO4&`vF/a&L!`dP&h6;[T>1x=Gn7:S(?88!1xJ=N3,V/;lD$]/:RF`(GF6BR7O]f3d~,Xcw]`W=w@mpSvɔo e= x=!7>AAwave017`uEVO]Ld"Zu;U6\"3OP")QF#!YD4M^,6Dg/$HbAcG}E zZ lDmY{bcY)YmEg`{z|94N( eVO]MOKw9 P-'Fz!X[;"RKFA_Vr [#Th'9uW6 6C2 vH22rCHo03y"GxXD VM }-Px2ED11sOay.dwg`'Ed38X90fp%OmHN+2N7rppH{t7|z?yoTq>nQt;k\wD4Ldӫ]Oif -nC"}#QYiY!HT: 65224HH#CrP!LwED0bd y`r}cpe3W8O*MiME||%z4qqc *Goo9c5wPm7holNNuNDu\7e7h7XDfFg͘?f6hnDWKBCȊL{ƝL9 ,oCғ=ft2u~ @x~dNOj2h$Wʞv[B=FvvZriB ;08x?|{A]nOqlUfdjGŠra9]YșYńqxHW֕jLcهfr·jZȇzq8ԧfɾ1ʽ{o.v1|>HU/-gx+1pm$#gm>s|6j|(Nq OgBS&6`f@YC XWGKY{-LX&,piAпwave02upqFnRqNp{R}N~C  /"S~Q;h\RM:{SQvMmR5>q=ZmubuQ4c()ejO&]:d88wQ 5ne%IB2WM%Pg=O#yOy!XIRw=;yi8 <1;b.1z^3/UJyG4:EzlB kH ELzR@BO- zaYF^wzZdc.WVcavWm|uF4Ldε]OYV -nA"u&QW\#Y"GS= 94;046 LI!CsP!IsʩDC0Y` Zqfoh/ȟX:ʵO*ĖNiӣM7suw$w5nep"%i85:.sdn3y9d2jYpN]{,b[ihD]pi:3p8jYhrTh))^^AS^qx(_d|mWV9ImȠgx*h ZK}j5:p֗NXh=W_ Dfら1lZlMD>̔M͜92~9mwHiyXvX $ x#vy'|mÝ\s™kOD^{E_)Vv͘Qzӈ[Ϟ=٘EE X<^:mߦNɩEwп PǺug[{Ŋu)Ȃ~11y(p(ot?}j4yid{jtpoQVt|VleakRlcQs^jaf{ohia`ZkgLumH]lesYpaw_g\tu||u*k|<ǒ hˤȫ@lunlklo^ò7 A;VD.\M\PIB` hrzqMsQ) |2y'p'&{a2 *:& )|L# a5&m%1ZyO_7*N4Z"It5?O)]RQ&b=4HO.VWC8Rp'[`s_MG9n;eVJstZҦ== ">.*ʿwave03J4a%YVIQD5WVGN`$R~@<);O8@5TKGu3*OwK>MZM5;Z7/^^p^oD4X(e`O]9Y7*wE &lZ,CU)_@&bD=&}uNXER2:;b8 8-IkRt60,5^o^d|'t'sfKmPa\qF~xXzQ)]UȟOǝX K?՜F%NPwlJp]@2+[Rt-a;"3Df˖>ʔ4x=arH_kUnYLy$iy&y#y`hhlMzCy3'opɋ{ŝBm[=՞@{ 2~0m|ԪV´7`@giFvk5d y ̃(p+K4X:mNCdOV63dAN7`|SQwNE|eZFAxqJ=VK=H8C>ct}X[u*Sy2iArqYlkViX\+ń?>>NmHHKO.7&c2DN>SYAT~cRCLL 9\"0  ]#'PzZxcl9M4.ZA,jD>O5td dOh^}AE}ATFLGPawPēK\=~=y >$: *ʿwave04\.o#hOXQT.cVTQj![L?.uCMCO6bLUk5^qM]TPJQ:p\rnqD4X(e_O]IYG)xE &lZ,DU*m?&cT<&uNXGR2:;b8 :-33Bkj@iE ?IkT4"4)fCC)NLS`O_~lZ=OQ >c"8  ]"'P zmcz6M6*hA,xC>_2tr uMhn|QT{TQWJT__s]֩=\=,>XO-d˿wave05c.t#mO_QZ.gOYQn!^ȀQƀA2rGMIb:rPei:npR~nSU\P@]w~wF4Z(eaO]WZU,xF (l\,FU,xA'ea>'wNXIR4<;c: <.AM, YZ>^sw[ed*YUFq@FkDVAr6uXKy ]oXrVp`Ubr)/"\~݇NW_^Os՞Oi |3O˴Ew Y{\atق0 Ɠ ʙL܄+d9k:X|S_zdUNHdTOKnT]STdnY|OsZ3hAO\N[Pb{ssu͛%ƎVzÓɠ2ՖvΧȴKzoppxai[w.΄?\:QJVfOF4);1DK?.NSSbVdo]=PS @e&= !^#P zwf6N7*sB,C>k3t Oh~}ba|ȗdSdKƀbk`aj=}=i>5}m0Ϳwave06c.t#nH`QZ.gVZNn!^ˀPɀB3rHMJs>Uso>{tWzWY0jUC_}}G4[(ebO]`\^-wH *n],GU-}C(eh@'wNXIR5=;d; <01d.1X5/PM@66FkkDjK AOkU@AM- Z^>bsw_eg*YW5PhoELpgL,WI?{pPO}uH~mZ}8ntLSwPm||?4Ldر]Oyqw -nA$)X|'Y$MSA =7;ʫ38: QN!GsſU!ƙMgܱGC3_f"_ZЙloϫn/ܦ^<۽T%ٜRbQ4}!.uD$g8Ƒ.|u'/Կwave07^0q#kH\SU0eHWNl!]|M~D3HGGA Y}xAyY\[t^E_G4[(ebO]c\a-wH *n]%E@,~C'diA&vN[GR4=c; :11b/1X5/OM?64GkjEhL @PkRAAK. Yb=dsubbg)WW5MhoCMpdM(TJ?{rOuGmX6lu>SwNmz}F4Ldٱ]O{qy -nA#)W~&Y#MS@ <7;ʩ279 PM!FsþU!×MsڮGC2ag"aZӗkoҩm/ܤ]<ڻS,ؙQbP4$ƛ.ĉvD$e8̎.zPP'+}ѝnd@eV?eY7Iq6Ek9R7n.x]ڠMz]p]~zLnD>iv2 !wc|ryH\de[z&To͐w{5OʶEj[pt؀0~ Ǔ ̗L܂)c9i;XzS^xbUMFoRSGkTZSQdlWNsX3gAO]M[Mb{stuΝ/ʐVwɕʢ1ٙ'ժɶKpi\x¹Xz/Ά?a@NKHlRA9&6.DFF/NQVcRb|p^3STAf'<! ^#Pzuf9M6)xD,EKm7 Ph~vm˕qYkQ~rsc6w+=bà=R!>LxD*wave08RQwJmuF4Ldٰ]O|qz -nA$(QW~%Y#MS@ <7;Ǧ379 PM!GsU!OsתGC3ei"dqԓk6ԥm*٠]9ַT*ӕQbߥQF$ʗ3Džxe%`8Њ5vaURVGpb|MHqP3_>IYESBainȡ/ȔVwǙŦ ֞'ծƹAph\ĻyXv-̆C^BNIHkR68-$e:F)OHVaI[k[4UTAd"#8!^#'zm^{;M4)uC+|FKh9$Oh}{o̕r[jR~wrd8z)x=g=YO#>Hx%5 wave09>:Y/PJ@O;:SJBO\%R>F1>H7Hh`TF^0b^iH[A4V(e]O]dVb'wB #X%;B"!y>&P\e>#oO ]<R.>^; /5 X21Q62IN87,JzcHaQ8TzHEBB1 Sh5jzogYh=MZ9Cjo8Qp[P(INFvwIu?kO6dx>OwFmpF4Ldٯ]O|z -n A$'QW}$Y$GS@ <8 Ģ469OM!HsV!PsӦHC3gk"fqӐkdӢm.֜]9ҴT*ΒRbڡQF$̓3ȁyeß%[8҆5r:0Tn.t:~ GnrRȊ*Ipu nlbnYTXjLWjKTuk:u2gOme$ku63sXer(V!KYG-ζr9\T\XHk==ґ.2KSt<>Z(.ǝnlBmAA|T2^ɟ.Vz1aہ2|,sК^zm q~~)~iE4j~ |x{kdtk}y=]rea(Xrzzyx:ַHd wĚ[wБ\8G0=-arRZǰ/Ox 'DZAlzhnXq,ʉCZFžHHiS'#b)d"O8V[;O_S7TQA] 3% j]&'{zwe#~^t?M43qB*wIKc<$Nh|o̓q]gUɐzqe8|*=ɚ=o%>-uwave10 o!4`So%`V,3+6%#UJ a H_Va_:{jJZ=4R(eZO ]cSa!w> T%4C"v;&PVb<"jO![3T)>Z; '7 Q31M62EN37'Kz^H \R 2Uz@GB<2 Oi0kwkhRi=E\9MwAmiF4Ld٭]O{y -n!C$'QW|#Y$GžS? ;8 568OM!HrV!Qs͠IC3hl"|gqΉkdϜm)Ж]9ͮU*ȌRiԚRF$Ɏ3{ye"š%T85m:0Qn5p:2EpnRɈ*Hir;z_rs{ewZSkSPkV^_60gNik$^kE3qZft(\MZ(u? WZ]XHk:Aג#@JVtGDU-"/֞is@jH=R.iҠ,]s2d6}3ܙhwr}~=gD}Fi;|u|zkesm}uLYyf['Tΐp|xy鐌v:۷Oe |ƚqґl0e } ۇ+q)J9W:ΆPqODhOV41d>O0`VP{ODd[F|B{qK3Y>BP:F:a{{[bǷ/Oz;£'˲Amzp¿[f+ɉtDUOyFIfT"mgaOT5 "0'.b;6 /5+y,& wypWv-,j'tfvX0n`lG{34kB)qMA\E,Os|o͜lbcZʐng6~*9N=3d=*>dVAN(wave11zjhacxbphshioNh_p/ w07v 2})sQ} sIIh`~Gh^kxs_7n|I~oQ4c()ejO&]\dZ8wQ 5e-E F0"lP%PdXT vO ![CT}@=k: 98 ^41_52XMH7cvTktD4Ld׵]Ous -n!C$&QYv!Y#GT> :8457ML!HrU!QwĥHD3gk frÑjdǡk.ƛ\8IJT*Ri˟Q7%3xe"*boƆ5z5dl4~81[peej={_i`6[mc}1~n`_h]Yh{0|2[c}4_gZ*Zߊh^{?}ew`(u-dg'CZ L~WPcs4g} zDt}iOby;<^SkM?N.P,}r4xx=?y |>yy_Bf8f| }i^pu}|LR`\,Srr8Mʹe2Ǜǟ{ݟ.ݕ Χ ͳ(ܦz+4u9ϥrNwΘ}څxSj||luEvrfr[ښmS֋gށjDڑyy~qzgZЂo=ˌuIvs~yowwsn\vΉћ.֑Mz̙ɢ:ٝ$۰εJpz^Ͼ>@PIłV5fJplXL\i#w wzre!}tosui2|Mll!j&p9i/$`I%jr1p&%r8*z: hAv0*|<`V(f>;Q0xJF`S)QWW>lHCD^S>Y`h(fN7[Z4fhBMh,zfs~k`}Xuɐf~T~,==4>+5\Apoint01sxkylZjohu|z pwm] s) {3.v0!$x{OjFk[XE][|Rt\hDzH]s}r~U4e(4ekO1]IfGAwV >g-H Fx9"XWW"RcA\rVo+![ETdH:ql7 ?7]4 ra32m]IkO4tDHxlE kN xMQxPGDP2lfcrMewxb'_f3UZ9OhpGQm`P+PP7yqga}{T~zZ|ojs>dhtXkpyD4LdЫ]O_] -n C"u#QY`Y"HT; {76335JI#ErR!NwFD1cf brepg3Y8Q*OiNE~~%|4sc *`o~9u5ngm4{yoӵL&mۿpoint02lubv|l zP yc**1~2#Ol?TiVTa]YvWOwe Lw%^CIo_$PxY_!O:]_TO;v: Q3 s21m52cLX5LFzxE wL TOzcECa0 k[R_s]nh.eZ<\hnUOpqO,cN4ykPpawuYxkex8wp=mew_mwF4LdԽ]Omk -n!C%&QWl"Y%GS> 98357MLDqS!KsưGC3\c"\Zhoj/å\:ĺS%PbͪQ7wxz#y.pet%p859/{jn)|9l-u`oYbÅz+nap]ezXm^݋u5~hW\hZVh..}X\uFIbqy+|Xn~d]tAv;GpWo&v.e _M}i<5vԛ@_z)bt8ox1Q\jM#ECʙV8))}t5zHP /!$Nt * sK\sTn}_Qdxeɋrz.di͠VuЂeH>ךJ(E ^~ mp΅p4[᨜sգ@m̾-OtZey`c,of.cq.So"Wb"rX(_V+LpF^wZdXbuaVsPknKHaMfJ]JUGLVKH][d[PnKH`RQSZUTrU\vdQChZ7YJY\qild8]fjNrhʼn6`ތ%F׊YiJődϓ3UדIʩkѦSVrkEjb_fQb*XWAÁ|2FAXNk]IL`% x x*Q~xO 3 {,pVxz*zO#}9-0w@1,$.G<2%j-G,|A4|.wZCr7^nZM0XT/l`)PRq'gdhgQNÍHlIe|VTtǔ[ M=險=>qbXI>kӿpoint03 nE Wn#W(D3!.$B=.]&OS6RN]Y6SjL!VOLKR5M]IrTrO4b('eiO#]VcU6xP 3d%T@:pE'Pn ]?$~N(]ZR8=c> G31l31Z8-NP~D7;GmmI"kN DOm]F>V1 SWP9\go\^k-Z]1JjKQdjS$^P3ihgPh=qr|:tmOw9co+f@zEnrw?4Lܼd]Ogqf -n&>*u)Q"Xc#`+M VE =@ 99=S|SKgZPiP?9{YQd"~[aoq e;]%Yd[5[qnwy/}pEXt!_9/qq0b%tO8Z,hn.H#sD4c6 U'n@7Z4sFy[ up%i\;T8nV6mZ%X%vEexo=K0iQ'vF:vPfwh>xq H9\MJ$::֞7-39ءC,k(*"68N H;) "N:OW=r˝ eߙRQx%X1m1# ~ u|ZqKXH^`\BB`sqN b_%_G\OK։ReO1W[4k1dPYbT^j.$:K9 .qNcAk?a!Jg->o-1j7^RY BT$3i1U]\9A^ZLTaRn[L&SK]H_7M=DFFGDW9MLI@@HKDTQNaOVsYO)XY5RFU@noQe5-Ŋ 7d(u4/&$7N9gB?@FAA.]mʉ3V Nr9GY.(%hz(S2O/ $H,m?O=0B-/A5 5-3, [0 $Pstf{82-h'#u=,e"rPg=pXd9uCZŖN4qS0Ń7SGqBuK=l=>>q2-point04*6F,[)W>D[>YMCV!O![SG]@OQw0OsJ]Wn1FSWHX=G4O?._8oPimB4U(e\O]WUU)xC &W,QT6r9)g!Qa/'zu N%]XR2?;ZAH31j42S:-IR>8;HmjLiP"DQp`GKS1 KUW4Zgg\Ym-[_1EkNR6kU$bR3eXdRi/nq|0qmHv%S&i|'h\|er \_L]6EbK?FJѠjB_O!\7cP8ہSRK6>\9R&4KOF]E`\/*G0/^ZG~B@fp-k5t .x $q'fU:]JXfH_gL\%Ke/FRJ4u6Ap1Aln,c10.F#q&#!tt*N7sc9=;w=?sK-j{^ω=j4k#Γ3=@/m*k:S,XTO9%@ >OJm\M\2]-QKI"P#85 ]4"'P" hB43-x #8'wsKnm1pWOt;ULAr[!gc!Ƀ9_~^7nF[,v= >u!> 0\qpoint05lubw}lx vc {+ )!{#"S,o?3wU %_CM0gY 0W_3QKEb}B|G4R(/e}WOz-]!S8wG [6]T%cI@\; :H'X[Q&E&ReSZ0 [kJYVC>Q^9 uF31p].2SV4/]ULUI6oEHkldDodKpMPkWABhP/ Y]_fNdzdn_ef)]X5YhoPNpcL(ZK?SspPRZ}ueW~mya|7ultLR]wp]pv|?4Ldل]ֲO}r{ -*?*M$T(]q{%^(H'U@>C A:;RR"Os["VhW4<iaPqhrwdgvv-j a%_na c]\fH[$IOMC-J]ܟWVk7TLG]|W S`3 /NUjYWS2wP'k&jx.p8~9P{} vKtff{sCZtrl{u#wg\fh߁kxHGn\J{GFwgqyowu4G^(SL]pB]iqxoݗgُl腓| pэ\q~X1{eY:~^~>xxYtwK}1zE|ށQDׇi-2|AxՖ8 ؑlicp<[ɪSiE[a TL[Mfcm5]5l>Qf*l>ω.DWNȞNHhT"   x Q tO ?y+ pVvyvOy95s`$(.~6/0 s%~8(q4~,q(v^;x2]rIM?3nJ3vN>_HX ^\hFtFZtяJ]u]XXfebd(r>=$><>Mοpoint06r"( ~ z{CD.{G"1,+&N*;0Q(F-UL,ZF"8yCvcM4_`(\&eIgOF#]a5wZN 022b%3HD*:&^&2eQ b#1tT%*)q9@X(\> .2->L61Ck+0-r0/3|G*_69^JA>DF=nPMh@e9\/ ;]?}d}HXGY\?V{S9UbnLeNlRGLUnHEGj>ytJzyXuoXlA@{RkcsD4Ld]OIrH r-tnu!Bs!NX%Ph$XK b#XuV{Th< _?~7 v9c8h7 fPtJ$iKwrS$kQzMDs5 Y[Qe_Y`sporn/{`;V)xXmV8Lt[v%ew5`obO"b*adi~4edj˘?Uhw̥?nenFZZXnrԣ>UZCo<*uiu&9^H0n[nNr$hdLh%curmf~Mpi~-~_Yb̗b˕WWu\yekgMJJ}NP:vSw]{UhE0$[tЇsN^؟^M_ t rf(8snUxfhW#'#<`Rԉ\Ul#^9UഝӸeĈ׺u׾ ׾AcŸ ʉ?hωuۺ]j gS̄.Ӹ`krX˺a{.lHuˆ8X[HMVvVW(#-7"B 0xNc B#|S |$wOxi!}dxW$8A e*jH0S7$Od1iC's-[n$e39c?GAheOeI^Bc(JwBщ^!fFTubxuS+>]=$>$14ܿpoint0703uBF+ -B_FGE+D>NQ7SNG94KQ?EU=?MwXts04pF(me\NOZ]"F!vl1 GHH%I+D@'1F&HLQ$K#H[T< +qN!X?F> Em1#R271WS+0D\/*IjFAH6NIJVv=X|ER[P`R@eNC/ P\Soc}\VGk[?hiR9goan_PNldnFLgYHE[iSw]yyitojjAT{cktrD4Ld]O\r[ -n!B Nj%Wx$X_ r$XVYy; p?6 9t8x6 wPI$yKwR'|QzLD4 lZQw]k_snm/_;U)WmU8`rmt%vu5qnbc!s})q}py|4tdzŗ?fhŤF{e˾EiZdmΡCdqC6<,5pp,,^K{i7^H0}q{ǝ'{ud{%vuum}p h]}ℐ-uos̑r˕movuy| }!fcdghUP]TxD0$[·Nrٟpr221e(8Ufz־W#'#<`Sԉ\Uj#^8U۳̸dĂҿϹuо ѽAc޾ ʉ4hωuظ]j ѾgSʄ.з`kğǸa=rWpʇBYY_oVe+/#N-g3c 2$IA/c1zG6\E-['x9uB26dm0sBDeJGIkc]{cS`Qu+[wWЇq uYeܾpȃÙJ3>!=%>ACUP+Ͽpoint08S[h i" 9S Q"H A_=_j&f+g`d7bN[6*[M,UNQ8Wtaq/4|D(zeiKOh]2D1vx0 UVF%X*fP&AC&VJQ5G#VYTL )q\ XOB> Ti1#a/51eP*0SY/*YeFPD5]EIdq<gvCaVNnO>e]@. ]Y`ia}hTGv~[?ufR9sm`nmMLlrjELuVGEdfQ\utfvyrrotiC]{lk|pD4Ld]Ojrh -n"B Nv$W%Xk$[VY; {?7 :87 PI$KwR'QzMD5vXQ\u]snl/`;V)XmV8houq%~s5zlbk"{{*y{o{4{d?mh£Fe̺8nZhmˡCjqAd5+5pp,,^K|aF]OǾ.ȟǝ'-{o*|vvmp q_቗/~xw̑w̓uxv~y !olnqr`ÿ]T}C5,ş̋ȝxٟvy121b(8V½fֺP $<`S҂\Uk-_8U㳝ԶEj־Ӷּ!ֻKɿc½XņƉFh͉u޶]jֻZOlj.ճ`ms˴cB{[rȇFd^buOj+O"YpFnfXtnYMS]YUn dfMUZXc[#gJQ^4G8oe0m+<@7 9tm4GHoNGLw\a~\VYV{ۖ+cw`Ʉv y_j۽uxy3> =bw$>IRtb gͿpoint09Ux]g f" AxW U"P J}@E_k&e+f`q:lPh5TeM7`K ^4]rgo'48(et>Os]=9<w( `a:%c"f[&L6&a<Q@:$aJTW)qgX[4> _U1-m%51pA*0^G/.dPG\65i6Ip[<r^C&lCNz>?eh3. eiWhS_xp{SG~f\3QR9{Xayu=F%>Ixҿpoint10:xBwII*vx>rbi{tZknrEٌ4ӮL|du]O{rы -zn%C%M%Rq%Xe#]#H~ T>}>= r=99 QN$pLwV$qRzzQE8YQ_r]s~pp2}d[*p[my[8ros%u5{nbs"}*a}o}|4lo4pbhDkd:nXgf^kCk]qZeVla;r3k:^k\k=)T\qDu]sLRd\WlTo9rf͡O*w}5jpٗr^zgdNwmn聓2et$pn|̔xɝjdezvmyvx _\Wu[_KR}fXpRwE\njc_ԚX;עAکiޫפsȤ]nպ ߬a̩QŸҵ´+Yoof;PVMˆCCXWnbUHeb,8j$Ap4}pH= T N El<|^ Bv@Qv LsPmDjZEnc Fm&MK>vf5f&9OE.Iy(_<`A4h"8Om1X~AhEJLj&LUf]XfVg`Pj+ehwgwu]|dnopvG*A==ӭ'>0X<|=point11 kz_%g'm dz]eWW>#`A$6b'*4k%/h(jMo?jU b:`Q/XnOhS{:Y`ugt$43(e8O]=3;w$ p r4%sDf #P*&q3>.#qAS`%zYb!>jA6~5 2.1i62/o7Je&6vIyCA&DH&z)Px*BDx%/ kIYo3`v{YX&Ec35W<8f$Om;KL,L7mmiQ_QunEwyJvoVm>]YtuJk^tE܊4ӬLzdt]Oizrhщ -yn~#@%+Pl%Wo(a$X#OyTA tA9;h9z;;2}SM$dKwU$dPzlLD{6 {ZQ_'d]smm{m0l`;yV)bVmjU6sru%xv5kobt"*Qom9_ow4lSm{F_d:gKiZVkCbPgBbDkIZ5UnPzqMzw3x3BZYDbUr=CpOP\VZ8a_͘G. }&{9Wkؗ\VxO_~1x Xg瀐~1mWk#gav͕sM^RQstZngwmMINAEJ2sSp\Y~bRmxeK;_3vSҠmaԄznV_~٘jIg ui ~Y |cp¼?P` -.PoXi%~P{BwxLo~ms_|z`9م8|Jؔaݐ֋s˜Xoѫ נaĠ;˪(X66f,;G@=1]B`[LHVY%pj*'wn'n,{s 8x ,p%XMif a>-_N+_}2\!&Zc**`D%YQ,3sL)#gD2O&::7)1yD9K=,P4:n'?|1T<9DZ&HEDONFNZ_?Z+\YwcwqjzOmSbbdt}Ir=X=-><"2Fpoint12( hz' \[ahHgz:];eDXXU \=V e?M-dP,n$>$h;jOhAfXT?9VUJlU>v@Qeyhy84G(eMO]0H.$w9 !I--Dk"G;$P|G-@ }UVa"[)Y^/X\t}LkbvD4LdŊ]OIF -n@k%QWR"{tXOT: {92;z034 JF$uCwN$uJw|BD/]` p^rtepf.xW:M)pMixKE|yy%}x4ppb} *Toq9f~5iYmF~ho<]RhDbj?WVg@bsFzD܊W9RQVwRPwo4s4tE[VeCaԡ?qGiuSR\@XnjFm˚I5 (:8y֔9av(k~ 7q~v;OY`-]'L͜mM50}:t}Ox^ 2.M"}+xJ[gRsjT^bsPʋvd5`[ϚWjҁpuHJٛ^LXۅepӅn^υvmd˶A y]u}-1<|u%q)せtspxoigg+e``nddKsphm_`g!neXlg7n6bTكgzoxz՗dמ2ܘZȚơ9ѡGeef:-H;4ffPWI7e$;qjI!zNr4#{}.r60v!lEZM8hD5`=$ZO9^xK&]GS]dY"e7@YTK-v+TkF( sW?/crstnd01^Jhe=^TBPKNhwBrL >`F. P3/R z*^n#SjSG(TCj) ErIj l.~nnX4h(7enO4]-i*DwY Aj%R(Fo?*BX,Pwl'N&Y&u{#Oh1)]Q!TXKK^qG IE iA afA2`a^^SCuIYysU'rZ,vS`k\ZF~Y?KnWYKXasZ\'esv dn \cwRfnmd*^e<aR pi&fqyEpuIm= t}}4k{mUrD4Ld]O k-nnv!Ao'<.bW,YYo(MScH XA;;5\_N ӨW0crstnd02B LsF>]9D7M`MsWBTLb LmUX`_a8wpěHȘ30&~ˮ9q|ՍyexrpO/zv҄_XKe޻U&\O٬\q̭bu`<ߵi;TfrjqĻm}zs҄#xwʃirс܉0yq֠͠NrDb_F0m;c*^`\KG|X$N ZyWi_ ^Ch}BZ}G+e8Sb@OOFQE3D!>GU!Fwe*H&mGdo#R7^?VZ(g+gX4LG}&]34G%j46VDLBFS1o@4}HK`2aVpADwK?pWA]U~L'5mzM9t}qcÄn,=>W=B >^t yW1crstnd03/ Ns0@]&G'PIMsAC@MI JW`1crstnd04! Qs!CXKT:Ns2E2O9 >WF C3GN?F-R'G)^#8$V4XM0K +h GF +qrY4h(7enO4]%i#DwY fAhj-dP)FU?,4Y-W_k(N\'^z$VP1+[qO"TCMLJrH jHG pgB LgB2Jc_ITDYJ[yesW'gr\,ZTckx[\FbX@:qZY9ZdsG_(Ouy heq GeznRilslg*{^h<dRvlkty6sx:p= y}*o~mDuD4Ld{]wO U-Xp_ JZ'2/NW-FW['MgSRI GCs;;j5J=nP@ VY~mT#gMqnZ%kOgLCc6CVQOa HYg\p]r xeZ*yYiX7o3t#EvLW0crstnd05WwHX PY+Tw$J%T+ CW8 H?9S?;,V'<)b%,%Z(\G0K , H4G,,rrX4h(7enO4]%i#DwY eAhj-cP*FT?,3Z-W^j(N]&^y$VN0+[oN#TBNLJrG hHG ogB LgB2Id_GTDVJ[ycsW'er\,XTcku[\FaX@9rZY7\esG_(Nvy feq FfzkRilqlf*x]h9eQxmmuy6ty:q= |})qhDuD4Ldz]vO U-Wp^ J[&3.MW-EW\'GgSRH FBs:;i5J~,@}}eJ}?[fXLDrarJw~_4Yb]qRdhHOfZ:qtKx?jJdOjme{o_{]EdErJŠI\cvёtDrJywPP^IfŕAx767),y@+M67n&=|:SG5NX&VADfJC]V_QYI'0qzLw6x|gdĄyn2.J=E= >2!R0crstnd06fwW!]#fewYcSW%X4%cF.)c(.(o%%g jO0LT-4I7 Ih.6tsV4g(5emO2].g,AwW k?mh-gM*FX<-X;Y,Wdh(N']%ew$VR.,[sJ$TGMLPrG kFH seC QfB2Nd^LTDYI[ygrW'hr\,ZTcyxY\FeVA>s\R=]fwM`(Tvy-jdr LgzmQiltkg*z\h9$fQ|o%ovyHsgzJz{^7Yc[oTpqJPhq|:qpO}@ԂHpPjml{mg{Yd`doNȠGZf}яnDoNyuRN]GllĝzAq6:>ݦȂnqeܒh i5X[gjHVoZ+r#~!t(~| r|4yM)k UGge\F %UH [{*$ZI+Zi2ddTT*+y?+l6.RI5;6!7L7NC)W/?m"I~:^A>M]IOEccOD[Y^RaT(6uw Y"}=|ij {p2)9=*=; >x+70$`ODKYjF r:H z[C Z^A2V\^UJC`?[xnjV'oj\,aJcy~O]EmKAGm]REUgwVa(]oy2q[r U_{sFil{bf*Rh:0hQxq/jxyEp|Ks= ~|9mkUxD4Ld]O+) e-hpnJl%G.] W4,TWn%GuSdF WB9;v5[ fX|R#rMs|Y%vOhKBr5UXQba W[qmpoq2dY*XiV76rKv#YxpIysird蒯QdWdtFʠzn{mܒp tžI&;.O!e_{oQcX$HͅZ8|`Λtm`ќB҇p̅[ oeЌ^0}ޅo+ߌ{%Δv%ˏkH݁hH|zLtk)nrqdWvxswmv[klz=_xX}nedXXfbj>sq`tRloXsAftUV~vbZ;i MymËz~xsv} q+hRyzs{.rVubmZ4MYEΉ?7Xch&lCVsW) {}$0!z9M0q_H pbeF &\Jc(dK'ei-op^T(,F%vo4TK7sx-h H~pi k03z=7= >-8e'R5crstnd08 jt\-`2i ntaj]Wd8o6/%l=,(w/)n&pJ+2/M#1#MhOv|4w/vB4T(e[O]=U;*wC y'{V-s5+Fb$-XGF+RqS(N4K$sd$V[,[0$`P8K\`F t,H ~NC ]SA2XQ]W>Ca2[xq_V'r_\,b>bzA\Eo?@Hd]REJgwXya(`dz2sOq WT{u9il~Vf*Dh:3iQqr0`yyGe}Nvt?"w|:ckX}yD4Ld]O-+ j-lprJq$J-`R7,WWs$GyShF ZB8;y4^;nf= jWQ%uLsX%yOsJBv4XXQgb Z\qrotq2cX.WiU7:sPw#]yun|poےp o<|~Q[5LN~&朊y .OZ_`QVXw$6˅K8Ơd`UѕAӇb˅K beŋ^0qdLvo%Ёm/bHo]HdlL_])vf_Y\w dgvUgXPsRi>Fg=kpQWCVLZ>]dId;ZpBe@QgT?qvLsAs:Pw 4hiyqgv burvyo+gQxzsx5rStbkZ6IZ>ΉA1Xgb&o9JvM) x|(}7)v>}G 8m_K mpc6+YJ!b+dK'eh-on]`(/F#vnk.MH^E:[VIV<,5crstnd09(h$[5_:g& m`i \Wdono1"l=.&w.!*mM*oA024M'3k'NpPk j6j xx5w44H( eOO]BH@w5 J-z$*Fh,XM8*RzE(N:?#|V$V`+[$`U'IcRE zG >C dE@2]A\]/Bf!YxxPU'yO[,g-ax0\Ev.@MV^RJ:gr^lb(gTy2z=q ]C{{&hlEf*2g:8jQ!ds4RzxMV}Tht?&k|?Uz_oye4Ld]O20 r-tpzJy$Q-gR<+]W|$GSpE `A8;3e;nm= qVQ%|KrW%NsIB~4^YQob `\qznl}p2bV.~ViT6AtWx%ey9_rbG!_)X]bgFp^cw|AVThw_R\}6fAq~3nU^Jwch̊54+n*z"wR4X45ul=m(X7@6:EšrIs3}2'Ƀ9}QҔ4xu@Y]%HW<,킱,&cĝxzi씂`|Y_ r2+2!]JCWI`di$;@.1ŠDȁUVjӛwIq;M 7 Qcɠ^ɛ0xfWLgb/ud/wZGfQGU[LUM)m^XLIeXZvHV=^AT>7S+TpJG:CBGARU5H!5crstnd10CkB]Rb Tk&#m3a6j& %\Wbomp27l=09x0#@oAqJ73;MT/x3o/}N.#eQ)_7)mxB pB@2k<\j+AuXxMU'L[,w(`z-ZE-?ZP^RX4frjgb(uNy29p kM6cJ^QT,qGLe/\}+f|;atHz(SSx? i ^d~I K8p3֯=R=l>*6S1crstnd11>rtEdQkPt "nt8d7m.]P#aEke7@m+7[1@$UzUS TY'.]kvysIyu\q=DM}eCmguC4Ld]OHF -n"A)d-WL*Y*SG z?<;5:n? U~TJqZ#MgLC6sXQc |yYZnnq cZ/VbV7Lsew#{w5xwoeRr,~T~Ey~?dBLIbJaB˕4:]%pH=qL42!/Z7\F̓"Ǝ"A&Je)恮Y֒Q۟%K]śvpԔrdn}8g@6%;يʅ R:^UKdśBݡ-Z+p:R`H2W"k0@0뒿bYwR\L ނp^`ŋtÝG\WΜQj{aFҦΝJŹ-uН[ƕkW$_-g/bSQ$H,cLT8UqJIpC&@;fB8<&N8Ao5_ųC¸LʡJsƣSvګI?ٯS9ӯ<^hmտ]:Ʊ^}s9؄$~btʋ.͌ơNsDƥd_e'jmW;'H')4|})4k'|j D >~-M'Ry"9`I8rc>gDScHDf/?eK)1cg30li<_S6=C*-tbZQIZ3cF.BLfCA[N![0gQ;vArE(-^"_;Z<~'mEzHukqPAĄNn=Î=ZD>µFME.1crstnd12 vwjs{mwgo^' _C.hB6+m'>%w%($t$wM,0 1}K2j-2fH73NH9T.;Jp0wsM4](,ecO)]T^R8wN 6_%P#A:$pE+Pf&NW@&t%N+!]UT9E]FD> d> V?-KZ~C>;QmeSdX CZmVT>Q: wRXR<^g}i^ Xt Ti GtG^ob`%W_5HddPG@lrc=qlyNu:u^n,MC}zoGzpzjs>4L߼d]OBq? -n(>/W,!W>'Tz1!OnJ s?D9u;sAxW|YLZ^PaR>;fXQjf"vyXaosga-Zd]97qQvlv/otnE<]$\zFw{|Lt>y'VDGxK*RU@DN^е)ӭ-ќ#33HqC֝'ǕYP!k^yǠ}lgԖtD8mXcj4P*|]ًw0YQ^ZeŠKܟCcE6Q;_`A6X,p5?'}[}YYh&٨ƚޕf؂1ÚW^\ΔZʅ ӛ x>Zq´M Z`pPraw Y-G|DobiJd!Myq?fuuh4Vl\\as]Ee[aVkPJ@\DRKVTf4ZXFPLVZWY`kXamahrX+uc)cNT`|Enp5kon^ch3OƝCtgDVs_%Nd}r}\LCK}~%nWD"9MA,# }y<p4 zn-2*#at_kA(jM#j}-(f.c\<jebQA#K9rD]>k)BakP-p9Hd:s%bh'8!G3U5VF`@b"|Hi@a|d|l€}FxK^ol =*= >%WMn<0crstnd13:nh0 a+k2sPch?^FgB VRVLY `KS,g \(q#J!mIp..3Jg6q+8lG j@-_[|X>SQmzT"yY ZZppT>i: xcWRO]gyy_iu jj Ysa_oxa$p_.LldRPLjqiLplz_t;sln,VP{krWyouyt>4Ld]OEqC -n,=t3U,N#Y@&Tm5&OdL n?jI=o֏ `W̉_X|᎑mmu<9ivf߉)qP}y;ُ2]{Y塽v\qX[[Ze]7g;lg~IC]?oEJ/x\`Yz"B2Šm_k͗kLCȖNnx\UEԃ ۆ#ˎ ΁yvZxw)u){\q"kCkfq_Vordhw=h?]Sfo+dc1li*e'0o,]R-ŠC.~*2{6@fB*-)vI>>g>4~SxS›f^a(|LsGkŃ0|E80W]Zc N uk`~6^ qoQF yP'7xDZF l@=cK-c?cxL(_R[f\"cDAZQ_&{I]jClC5A}$nh/~CGtA2e0H7XHUUV]TVW[bEg}^|{ăUzcʄu7n+=D=# >zCn^\[/crstnd14\YgW LXOUR^uSgfLiVlDWzH=~ R=s-[ w'f#i _h`:u+?wGhBa*gC`FHJGTLM,PMnt>vqZ4j(9epO6]`j^Ew[ Bk%b#@L#zP+Pu'NfI'&N= ]iTGFiGX= u> c@-X[|Q?LRmtU"tY SZpiT>b: ]WRH]gt^cu dj RsZ_osa$j_.VgcRZEiqrEolXt;{gn,_I{kzQyo}ts>4Ld]OPqN -n,=}2_-N#YK&Tv5%OnL w@jI=x=sCyX{\NabSbW=?jYQjg{Ycqvlf^db5BoVvnw/s{nEF~_ hz?w}(IsgDI$hV\Cwb_% ӕ*ט+G؋=֏ `Wτ_zXvgfӡ29bpf)kI}t;ڊ2V{Qq\lXT[ReU7_;e_~@;]6onr'~=G}9+e(@/RBUNVWTOaUbPb}gxvÃNz]ʄp7nj}=C<=^ >tctK;/crstnd15Gg;`{AyJIgAI;TC. L).U!&` TSA_)EhDTHH*4HOF7K6J4P3.RCntCrqL4]((ecO%]d^b5wM 2_%S#A;$}B+Pi&Ni;'w%N+!]YT7F^GH> i> V@-K\~C?=RmiThY D[p\T>T: RWR:]gj^Xu Wj FtK_oga$\_5Z`bR\:irt9olMt;]n,a>{z}Eyoks>4Ld]OTqR -n*>1e-#YP'T~4$OuL }@G<=zCY{\NaaSbV=>qXQrf"{Xcquke-^da5Gn\utv/xtmEKzf ]z?}}|+zL{[DI$ZULCT_ȫ* ۊ)ގ)ǮI>yԍ `Rx_tXpߎ_]ӡ(:[bew3[4}e;{~2K{Ed\bXG[BeE7Q;YU~3,]%o-3x\ƈ`YkԄɐɳKʞ;řZBZ̛Ÿ́LUt] Z`dĄ%̈́#*#wx"%q ~w)q=}\qu!gDges\Tuuirjx>iC`Sir&e\.mp%d&.m(_R2C0{+3{6IcL+:5xSAJgK$Bbybp^lIK~Myā*YFDK!Vhh\fvVwfxQ!B M?C*">"Fr-L$IE$U4!@Oh,Y44%?mv3&.E1F5J=HKU@hHbS[|ltmÃBzNȆc6ƌ==c >l"+(/crstnd16Ca9_<DKaBI?UI2 Q00W!&`"SQDP)G_CI8-IEG9J-N Q"4ODmCvpD4V(e\O]eVc,wE )X%I$A0%;,Pa&Ni5'q%N"]NT/GXG=? `> P@-E\~:@3SmcTbX <[mRU>K; MVR4^gg]Tt Pk AtB`o_a$S`5[abRY9irs6olIt:[m,^={z}Ayphr>4Ld]OUqR -n(>0i-"WR(T2!O}L @E:=CY|ZMZ`RaT> |Zou(cDccwZTtuhwgv>gF^Rhq&d\/lm(b&2kL^R5D5y=6yoJcPL?5}VBKhP$Efku\sIKM nT<9M?#She\_uPw `J$E K5C/&<&%Gq/O'%N6%Y9$CHf%[<3}!~5 mz/(,d*~@.A2KCJ7n"BiR^|pyj€?zE[6o0٢=>=9 >"Cy-/crstnd17Cg9f;BLgBIA@K2 R01W!(_#RQQ&3R*6eB 7:/44LI35Q<&77Pm0oE4W( e]O]UXR.wF +Y%G$C/&p>,Pa&NV:'p$O$]JT2H[G ;@ _> R@-H\<@4TkcTcX$=\mQUCJ; yRVY9^gl\YtQk EtAan_a%R`5HkaRBDhr^>okwPttam+GG{xkHyp{nrC4Ld]OAq? -n&>-[. WA*Y/SwK x@B;8{:nVQsc"|~Waorg`-Zd\99lUspt0qzlE>`}$^yFzz=v>~(VeGxA,N_>FK^&.-ȯܞ-z4}4KȱiFꟶ,ښ`ãQ#e^ÚuoїdQxPaa4EUڋr<_U[qiàJ۟=a?oN`eD4X*m6A"}Xz`ɊRi(Жf;ŊPU^^̕Z҅ۓx>Y’hϵN q]pz4z%1ކ%و{,k"m !ʅru{=h?"uq!h5\e&Z[u'STk`t ^oC`E VTaj'^Z/gh.\L8e=WR5΃e#Shd\]uOu#^H#FK5C/&;&%Gq/O'$O6%Y:#DK!d%[<8y%|5kn!z4(w2dy}/C0A1KDJ9f"vHi>k|fpwHxG[om=d=j >9Z/crstnd18Cg9f;~BLgAH?_I0 Q0.T ']"PQP&a)T qB K.4ZH3EP? 76]mnH4Y(&e_O"],Y)3wI 0Z%F%C1'ID,P~`&N*B'wo#O|!&]HTi7Ie^F kU@2oM\lAA8UkdT cX$A]mPVCK<UXVY[@_s`o\'r^t Tl lLtCbn_b%Qa5taRPh0IokPWtPgl+T{x@QymZsqC4Lڻd]O q-tn{$An+8.j W+cYj-S]J Y@?;7]<_@ hX|VLZ\#OiN>8OTQYa"]Vatnqq e]%YpZ9l2rQs0Qkd~A{,\cyE\y=zuCf(fYbHtA+O^A7vGzO\L42ۥ!/k7m7 "@ܦ&\e)抯`ҚN֥%\\"Д?yNgU6B愵 Qۇh:~w{n用]ruš\ܡJZJmVl xf^xNW@mJtXX>}Po`ĂTmLㅽ-DŽ"ucm;Q\\j͜e w  tAN͸hիO2~r]i:l!Ro/Cz/+y+kU_ 5],)wde^78hqCZbRpVN&GNSG`ZN0N:`E=Ro,GT3R4\BR[D\zRQ=X[4?ITBxbXj9Jjm3ZMϑ47ݛ̖Cf-wFО*/΢Miˮ`qpABvVog$`C:GB#Szd \r]u Puu$]xHD&J4B/"9&"Er,L'"M6$W:AJ#c*ZGA?J KQhvJt~LTxL]mߕ=U*=q >mVJ/crstnd19nFgy9^f=`FLg@I=`F. O./R )]z#QvQG}(TB g,hsF]L S3pm nQ4b(0ehO,]*b(<wR ~9c%M'Cq9)AO,Ptg&N&O'qv#Ol*(]MTZBJ\iF CC d@ a_A2bX]_KByAWklUlY'yK_kWXCR=KeWYNM`sY{\'eju ]m ^YvKdngc*Yc<aR bh(ZpyFeuHum+f|x6_zmSqC4Ld]O h-kns"Aj)8.aW,YYh*MS\I TA=;6YLQ>g*oP+}XAv)sO;CB?PAnK|M'>`hMAf}YghM,==4>vMK$crwalk10g_6pFEnCm! j_"u!q$v?yt!+|'*v 029L./04J/`I/j.?SvAr}F4x](teZfOW]^N'trG 9#;` D?=!&<(=c;,9y: GBPH%7:G]82_,#<][#5EP1.ZAGE30f!b}W@,D;?NrfPH?tuZ3tklEs6k^l=MExdrB~I}LbIs@=@cI6G@aAc65,~5OpNp֯(Ϋ,b^ߖKAib7m]׋Vߘ.I'*Fu;m1 #HډҪ-R㌧"㜣axܗYuTya {Ꚍkx} xS]]xTwEr2ˀ$cZcÇNjП˞{2u t u@񢜯@ɸ2Xxn suq#k-h<`:iQ_fsdRa]tWDYTW[GSQBbzWvOWW XL޼T`̽UݯXlҭ[k\CmrԵhkȿex҄-xȃi0ϟڠMrDecJ;DFkYss oq1oQ.iS7y!Do ~ $on*tBy2-|V!ik#}5 }zk8z ' muP3$(~8 w"{XF8=8+M(6}onChHxryqL@WZMM==Q>Bg)>crwalk2O[URbC`d ]c,XU>e =b3d?!ejal0x-s~>o$@i 0!Kx.VuITJZ/-Pu)s}2 4wH (s cYQ OW [I}t31>)j?J(H:"F(-/<=Z((A6m)E'J>T&H:KYI g335_^3.JLB*cFVN2B:r-KnmgKqgK u:Op|R@JYC41QQUP[4[sYqZo_i/WYvnhm~ƃΏn xŽas͌ؗ0xsȫ~Def}H~$8/<]R/eq'_FeQJ]NGp[f"5n @apDfXn1BnO2v 'pb!ri:m50p%jmCt"1| ti(kP:}$y1w~8~wsw{Y@6=',C''xW!Z>g3qZ_~^:x+CZ}=ܬ=,>>8#crwalk3kTUo[>z] v]NPU]]"[[U[=E\lCXlNqKm[h$]b ,FTl,\ pG3 TIQ0\!\pq+4>(cEO["> x,1l#n?",uA)_t*1rI4:`X(P3):Ue$Qw2Z|BYm=Q1[cIIA2~i:/`WD%p_^iCH;MY}zP}SZ]nmOAzR= ZbWYhObh[Yo|o#xf2rhrd]8Y'vY),|cW.QmrGTslXnu4Ld]O"r  g%ig!CU!Q6*We&r'f%\LSrYHB UFo92z<1U>;N<XY~bP"vSigY"zVpQ>i8JWRG][_pbsZr{h }[$_8\5l-pHu-Mo7 :|!\}{CR{+sAa(g`fz&zA)R^L7n&xP\oCYdk9*i9EbAbԎ,ˍ,Z`߃KAZ'[FgY~Oۅ5L$ y/Fu8i-܄| @ӈΈ2B݌_jڔOᡙFzLc| {wwf~MwUg_]|N\YqSmCc1p%Y[YtN`̡vm1h1f vAuدҧJ2yXzu u|}v2h5e8vlfame^xXA]Xd\WAhs\wWP_ a'XS[Zp\i`>tjikuDŽώ-lᇜzĎai̍ז0mޕjʪxDefy+/H;NEYWRL`qHX_`eW`ks`"Ve ^Zpb^lsf1`gOQn HgcBjiZe5LjFcmYr"Jy;3qiBiQ{!xIu;{83tsw6{0YUM+?,X'>xL"VQa$y|Qn~YLxAV[=!E=>6Mcrwalk4UTTZYCg[ c\3STG] E\!=[>-^)\l>s9qIj$Jd25{- 7G/]/ 5hJ3JO'B6DZrAu04E(cLO]E}w11G%<3F 6[11YY.Sy)(j)V 6c>.`.Q]I9QaJ PFOa8I7ajlYm_DhlZd?HHwX]Y~>ihzw_lzcuV}Lpnj$`n0Q{fPLJmraIujr`y:qtpLOQxjT~pwsC4xL}d]~]YOuv ;"=jD:%)B-Az3HPE8/L8\$0b$!q=hlE"t?i{3@T%1XS]WiUi~]8y^%L5}?'Bdkraiat~؆-~̈iՆ.ϦݢrDb^,&JBQNBYW8es0]rMcOYQPmb`"Af2H[pM^bd0MgS@p 4jb.niFe5;o0gmNw"?1#zi2qH$>|/8%~s2{*WTJ=C+Y'Axq sPgK|t{wRyH_[=+=T>r+{R9crwalk5,_`3dCCd@d!c`!ki$k?pm$ ~+u')p2"-T&Hd/. kJ|KNDG4*Ws.t>4U(e^O ]V r? X-/14-]8$TU/Gu<Qk-K)^//@z BVCKKKH? r~VzVW T^ y&_s4b45C[K\R\(cqchc'lJz :s g2y#ilJj%5m;;sfP0DmC5tyWEzY]s)4J}M?m`nvF}4sIxbY ]V Mqt;='#?%iH#PC(+;A(?<'@(KPOI0MId45b39KB8LB/bXnM$qKssR$uJi}B@Y5;SUP[\]zZgqjoj-ZuxBkIhTbH~B=~Kc]6vGuKi|Bfd}9Й+΀9XpUiǴ++f^ϘARg&e7r]ďVΙ5^M,-._tKmEyB[ى±/[⊖!z۔s䖐hzo􈦋 |"xyxwcOmXTCs1,k[pNϡ12z B@/~Ʒu[y_1die#\%ϺV5O:_QƩWhWPM¦O}ŭGfJIIMBABSzHv@I-KIETIInMhKCbw[mZt|tr|y%wp~ir{.x~tݚN}wƒEǰpc˪|2U}PU\fXrw lr.mP*dQ7w!Aht2"gn(jBn0-sS#~2yi}m#s5!{vl~;~.1mz|:'t.8yzs1#X~RD>L+[(~I}[XLk5{^\\U k[==>8/ Zc/crwalk6'h^-oF0^3YV+=lQzyJR'|GV,nYz)QDo28 NGXRM&^r^_^'h@s2-h`+r\m;^*'\91rdQIm37ryN?wRTp3%N}A=~k\auF4Ib]M)';o"-r oy*Ju0L9g)W58^%Wv1M SnQ aKC;=eEnkH r`~[#ySq`%wUgSB~?_XSkc bp\gt|suu ia.u^i]72nJt#\wwsBlKeSbHxB=Ja\6zHtKgClo<⛸+9_p]pն(̲(j^ᚳKTg&j7t]׏Vᛴ.\'*]uOmKE^ۉϴ/c勜"✓t۔rumyw x{ bOk]`’x2ň$nZqÇS~ϟM22} ~Bޒ@Ұ2u[b ֱhkf#_-]5T:_QS^hϽYWUU{MDNژLNGGFBWzMv׶DWֶL-ʸNIئI`¦L؛OlʙRkQCcwΣ_k\rr{x%n|m}x.{"{ЗٖNrEdc}4@}RTN\nXww tr+rP&kR4|!;o q$uL+Y(J}Z&QNk)|\V^UiZj=<=cc >u* d>/crattak1k B Kk_ A:-'(C*(B) D<|Hty-lm]4m(=esO:]1m/Iw^ kFmn%kW'F_E*@],Pdp&N-^&c#OZ7)]vV TOQJSuF rND um@ Uk@2Uf]SXBdNXykwT'mvY,dX_k}aXFi^>FrVYG\`sQ['Xwt oim RhuvWenyqc*cd<(`Rtg-koyBttEl=x{}7ozmMqD4Ld~]zO#! \-^nd A_'<-VW(,PY_(MlSVG OAu;;n4R;nV? [W~oS#lKqpY#oMgKCh5KSST^ PVZalan zbY/|VpV7&j;p#Lr0Ijd*|Dy,K}yeQx?aB[LNrarJy_4bh\|Y;iHXiZoDepr:)w9bm_m++e\Aas(d6m]J5zkM,-x.poΑ^kv_Sdzk݁0f犀!vqznܔkrxx{ c\]wehH~VqX`~p1,nqtƉSrСvv x Bp裓J˶2ruXzZ%c2i2bU V,L)aLZWNOkGLED^D;>KQnFl9^DMMIqQuK9V:@_hka^xixq~ڀu#azoтi`؂v.feР۞NprȔDe{_ry.Yn@À+6e`&O=p]!w| |[q L@, *g),"ʄ&0$=,0x*`>/=O-,~H2cT(B;wO1X/tWM'% +B"-crattak2y E? E?"/()G7* #;T&u >4|Dts+ccO4`(,efO)]$a"9wP e6gb%eH$DV6(6S)W`d!N V$`sVO'([qEYHIEPo>nB? tb81Qc:/RbTMP=`GRylqK'oqO(bRWy~XPDfR8CqOYB[YwQQ(Yxi-qfc QhkvP\l|lX*\Z9&XRz`'ogy@wkEc=s{1srkPgD4Ldz]vO T-Vp`U]6)OW )FW]MgQZ>1N;y/;n-Q5nW62aNwG#pBsyL%tDh?Bh-NJQ[R RNgiajb2V;K*LiI7)aAf#RhAvitAoe9OjZPhkAEogsDhpv:)|9dmam++g\Avcs(f8p]JO=+crattak35fL7ZJ9N:6H*!6 w$:r@_+8Z"Z.4B(eIO]Cw/ `cD%a%!DN&,9&W^FN>!_WVE'[mYB1? N\7l$: vH21NM4/QQLG78^0Lp_B&s_F(b>Py@GEd63@dGW>LRwS|HI^o^/wUX S]ay:SlYN)FP9'PQ xX#i_yAqaIY? i{-oikW^E4Ldy]uO MPi\R[1$HP%<]Mb P_41O5%70XK[#^^d^g|(d8p^JI?D571V7]EE5\0&:#]y*\]<% y"?2D"u1):k_RJ{{uÅו*ˉs_}vƗ1ǟy(Bls8inL?#}9(';}'=ߗE60z13zB=5G76=o+0G9SOS*l*,j)e3` 3J&#UT6)6A)&őGpG@%N-D/67"r/L]QkB`3*g {+8u/&nSW~+vlRÍ'Y.~Kw"=h=*>8 : g2crattak4Y}$i-\+U9nvl9 }+L#wJ'p:!h.7#87,&);}@C$i-Z4Z24F( eMO])G'w3 svH%r,"D_'=@%WpKN%D q[VU ([%YQ;> ^d5{-: O22^T2/_\JW?7k;K~hA&hE(nIOyJGEt>3NoGWLXRwbHInz\/`X ci`ESlcM)QP98OQX2w^P}aYY?i{<|hzh^E4Ld]O `#cioRnD#ZW,$OpOt Pq31`5&<':c/l.2{D:%;s@,=h6B|& dBQwGgGsWV2J;?)Bm?7BX][%o]mng{ɹ'{8^K1czoůMv%d Zɼ5x_/NzfghNa˂` Vtǂ2zrӊF=QW<ŕ8ʠ?xsOzjZ߆T#ѕ!}r*ނ+|}Sv]U^ %ZrwOJNM tmmJͧpǦ Μq@.J-X-Q?;?0<'1M,`38%\] z^ ` -y4%Du&+ kTB?v~⌊.ւ|U}PБ Ә(MëDj}zSi k#F!: +[v_ܛg PzRz.[5.T6 *ep5p/)xy**# !j&xFO)(]DÑ65m:Y*AED"R)=r+b^mk=v3# =5/'Ve~+(v/k`ό'a#3Pw~g"=7=c>*K3crattak5so UKsU K6 %,* @3%0I 1J Lh5n nh4w(Je|OH]8w6Vwi zS|x-rh+FcY.[@o(Yl&S-nl!V]K.\f&`HkGO?pgG v@ S<-IVOp?YlXycPbV'Vw^yw~YFit>5XY6}csC[&Or-fl Gtkwelq`*xd<bRkry5u9m=~v'|mDsD4Ld]O'% i-knn#Ch&>*Q]#X)&V!Yi%OyTWE MB|= t;S WWoS#iOsmZ$lShQCm9CVSN_H[g[q[q wg]*{]m\9k1p#Dt0@md|";z,@{dIz?SDO=CxJJ(yO|]Vgv #\~ɇ{N\ԟZ] } tDC bӻŸ\rvq%{ } tl'r*g0ravmiSnzh?cPcc\QUQ\?jlayUe^(eGյc˸ig8ݺp]f{zyt}Ճrڏ%쁞֎h߉1"sH~˞Ф6оmŨcoֱIV`:g|XKp=L[k3D#u%||&/>V) *. 6. R*Fsp5crattak6Q8[l4O|_9}Y>U5]d6\;l3Og7.[:3rG!iP eF^F#|?zY$f=<dVMU %Q>G{t|#43(e9O]j3hw$ 4-)242\h$%`@+VZWM&J1c+0_bEbB>&MDF j9<U7Tk&?f$XzgLRaMZ].`z=_41C5AaW=-ks>XdRNz-iDr O>|r2iqLf,|Ak0_oP bARXa["guUg\c"du\ga4{C6~bQT dwarJ{AyO] ^ToMOYaSVe^1d#P]LbH̟YQ1W [ bK\ōqG szɟY|i6#H/Dێ/2ڑ,Bx-}%2͍{MrC3~4sFic*cQCΊcJ{?B{pI[]?Mǫ8XfHuZ*JX|ng[u>fvJl%k$@/",,( NDgRVpMFpRVwMFw`X~\Ep="W=>b8/l<h;rs?k;DiDFi5O`X*\H4[x!Hs7:ngMrO~/R~=yb@yu;'SI!:4%5A46t7}"A?a ^~@qXK9z4zy†Groq== >xDAcrattak782ZW*VK/E672\K0C6R-VL3.>83_B!VKQ@I@1<1WZ1w7.nR*SP3]6+Cz*y|,4?(eFO]@r- A-*341\(&TG/Ou'PX+H.c+1@}F~GCNDKbR^$jsaYgnF ;w k2'mlGl%8p<:^nR25vF.}jX?XQy+79xO8p\_~C4Ldͦ]Otr -2?5v)S*`h$_5I/JvJvAOG}?|CnY|^~UZxe~}\ga4DXbQ]n"akdanw|l um-|hpm:2yFW|0Xkyd5M$^ND]tLwfJh~&nE^~GdJ)<`!9u9^eALEa5u,]45b3b,},M`vK,aNFX`oOw.4|$}-y*,u$p+Ӊx/2܌r"h䜛EhOݗ6u3k>X mmQ원ETe y]qNHY^TViX1b$J[GbNHΟ]U1U W bKs̒~ƾ2~rYi(4*;۠,1ը" $$2Ťwҟ}+A%֖r{^"u}P {{ "@_ꉝɉ͏g&m~O)ԂH=̜^4܍K3ȎdV[bȧKYͷKe_[wgó,]rĀz[KfHƁk@$" , 5@s8?K1/[2S5r_:R7EQA7Q/VMT*DE9Pt!8r9'ls>mC|/Ez,xd/vu-S@!,4583*tY"`6g5]~atVj0z*~†Arqjv==i > h.7crattak8 JZEBDQHWaPQTMRB\ _1+b$'h"[SY(8CQC 4B{N4bMk3h#Uv$xD4U(e[O]eUc-rD *W-kDbZr^tSZodtXg\?~AP^QVk Wx`Zdxc{yqj-dph9,u?{O}0Ovud/F,TYDT|>km@_I`PctGkJ)xG`.:koD\fBRdf5y+g5EpDp(,R^xK=gR7Z]pVy.CqN'-{󈙟*Bu8m3|*Cډ/H㌏"㜇VvhܗSuPyYp y"smy_l| ctwNQ]dTe}^2i$TZUÇlN]Пo˞i2b2a iAiÎuδM2rXi*7,.ߛ #!$.Йwޓ)v@#ފr{p^twvnP |{ "_}^{~փws"|krO%vJ t8Ӑ^1A/΃pOZ\ΛKS׫#E­\_Rw`̩+Uǰfuøn[uKfzHwRy D3'(. Ysijdy`T,a M X'T:O (I$S'\,^nfSC%k/f<|$$;{z*r4/6n!.`= '9$<:.2P REg,nVd~YCx8Mw{N=q= >RZd 6crattak9h6{V{HiT H 7 ) '"J+1J /) ItKFw0pqrX4g(:elO7]GhEEwY |C~h-wR,Fl@,XOU*Rpj+N?W"ow(Hi3)]R&UWHIZkGwHI zeF ]bB W[^\PBfFZzkmY kl_$cNbk|X_FqVBGf\THQdsPzb'Wiz l]s RZzsMjlufj%}Yk<)eRdl0[tyCeyDtq)!gx9`}mK}vC4Ld]O:8 n-pnp(>j.I-Qe#Y8(`Yi/Gz VYK TBxDtn[CYZk[jPqja#lTg~UCn=JYSPf O[Z\s\vsl{d/w_pa9&p9v#Hx0Gpd)@,Jo}EM~>`|BXIRfcmHyy@3g\^J:dG^\\mBaoo<+s9[mYm++`^AVg&`7g]yJ5]N,-s.w`tTmSaS_މ/_犀 wup—yqݔqqzlyq h"aewxlmQSf]t`{Ďk1w,fqjƇ}SvvѡwMy2u2p xBeѴvӧO2quXhQg$_g.Ys.KuIh]W$LZ,HtuYTCGFRVrb^a7UcmSĉqeҋF[#IՒ^ĐcRŕvcԘ)V՜^s˫hquAesJm)Y|2$EoPB+|L s } (I|O,  ,[$,4&-A,/ !z0R>/?M,.B+^N': [cl.Q,crpain1 Iq>`DLIqBJU*>)Xn>)gNX?R3?;Z< 51TsnO&\c/QV1Ke>Mp[L,MJ4uYRQbIkkVpgg3sUquOxmrq44Ld]OS[P #pV"x*W_+W$Q@181<*:387 LHș=gƸM͚@i۲=K-MX"Ma̕`8Ǣc-ߤS;ݺK%GeF4gp!r0gEzu}#`|~0n9/Un=l4w2Ien>+wJb?i8}1%y1ToTou$r$iDLxJbej.c"'(crpain2 QqEYMUNqHQARF3 O?.[$%e#[[di9haxtay9Z`:)a` c`eig@4Q(eXO]dRb)wA &nS%>@(#>+Y j=*iN"[>R2D[A 481W41P;/JV;<2MkaJ`N'=TmKJCD4 VQR=ZsoU&]k-Q` Km>Vn\U,MT4w]RnQgIokWthk)fUxwO|mts44Ld]OSqP -pJ$v,W],W&MQD1<5;.:7o; QMCgR#ĘFiկCA0QQ\"Rafi աZ;ָQ%֚MbM4vksu0kEo|%a~85p4*Up>mF0He;ȋLJbn<[n-o xNlsLlu#z#[6.~Gi,[dEz=OcIp!]gM(vMeM[nBkJ:|$4ZL}b_P8"8ڞvbUwVEsR7[ٟ7Sz?ZDq?rߙ]w#h#yq~>\foCxp}'qOh_{{g{t\VtsJɀY6+_=bx=/(>!;,crpain3u Ls{?]mEkNMsDM>YF. O30V$)a%VVD&\?A B$ 7?/k@5Aj'<(li.jL4]((edO%]<^96wM 3_%I"B4&WJ,Pd#N8;1o9q= T~PGgV#IiGA3kRQu]"vTail ^;U%RbR4 pğczi$r w2pde,[*oZifq]P_kWLUSfSPJMK`UlHfS\ݼXZӹ`u[5e:O_vmp;mygΐ:!ׄpō֗/ٓtүOq7oDyW"s+y_bM>I~I# Zzj _uivu Yvy)hkT D&PFG3z'AG$Iu-M&!Kd#V7!CV%i*[4qB',9iyW/u=)a?p(n\*{X?s%YwM8F}<3MCeH['M[h,Oy~BbvoUdeI.=s*=- >7DWJ/crpain4nFgx9^f=`FLg@I=`F. O./R )]z#QvQG)D ({ D4lF k+pm nQ4b(0ehO,]*b(<wR }9c%M'Cq9)AO,Ptg&N%O'qv#Ok*(]MTZBJ\iF CC d@ `_A2bX]_KByAWklUlY'yK_kWXC~R=KdWYNM`sX{\'eju ]m ^YvKdngc*Yc<aR bi(ZpyFeuHum+f|x6_zmSrC4Ld]O h-kns"Aj)7.aW,YYh*MS\I TA=;6Xt6<,5bobdΤ'Š'tf旼KWat4{^ُO䘹.[q ^%WwRpL{:Y݉Ǡ-d닉啎j֛~wfwhju ef{hulkC󎭏Sk]~Tz?y0$n\mLJNoҟΞz2y z zCh஍HƼ2rXha$h2q2sk^"Y,R*mjqU[8^ROmIIHD^}LACIWoIn=_HRKqUuM4X9BUome:cyX͂quڈ8d#H⇔d͌bNЎtjߓ.S_ŪצpqƚBeUyX%1y"`rQDGN$s Vzsf ]^avf Sva'`\KA&zL4B.t :G!Dr+I&!J6$U9?Jv&d*Y9]Ays.9[kD.|h>LQ>f*oP+}XAv)sO;CB?PAnK|M'>`hMAe}YghM>=D>zW crdeath1h 8UHmUK9 . )!A,4w0lu.|l`}XYb^OX5h,7enH4\iCrY" A#j"-S74@3\X&`m2HYR{/K21cR6BMErCKPjNg@ cVTAL[zwZ'v`$Vbz_f9ZGpYTYbqb'ty gvcwUmlpn%br;rb@bn`Xdfmzlqzvw0Trg]kxkr;&9#+$p^G q / .-B3AG4V=](P8_@IAJTP]YMOejeiq"kir5TbVnhb {#yn~;cgMeulv{Vo^ezf1^9Y/SlpW3W|9H O_d>RT)KabXf:L[lLgP}2Al3Um0Rm8-:-P[ET}56Va=%PZ߇VdeXw3T|9a^?(5#*-u 'bX,QhM|S"]}+%W3vT6OȝiϘ^sajs r ]set eJ=FhfLwF7~ÕKfHvBcc:i}@~>)z^.((;uDmPz:INXݷ3C;[SeAs # ߚ^Vֹߤ\߫Jзzڴ/׫Uˮ6JT.姂ڦyҜ6ء'ؠIƢcá[˭ ʮԧ7ؤkհ˥rk͔akצffOe͝n`ӓXaޤ\IɣTֶIWa]ó:GČV7DN&_:6}U%87T&GI*6S"s} }[[$IV,  *a*,!Ɖ$5%w?,q.mwt+Tl>m =FRS2CMWN$HigQe>:7m6[@>h]C'P>=*O=ZfuJgcrdeath2m BKmB>: /( C%THw _ Vuq_zU_#HS} cx%0woi`L-`ecG<qU|eD8J`7h*y3{\Xuz|w|[^j_mpwppgpssmr psQ3eW pUpT`xR_\x|ch}jg_,&V<RJ[KO,M@NwGMK1Pb9J\.FhRoEu3Fx9,@Zid(KCm*=\apalCQ[d[g;T~/Ng:;Ji?EiD%@%R]_U>.KZ3'S]8Oj`Q~IV1'XX+0%& y"2Q*Bi5+!I; 7EŊioSǖIz#MԊ,a;'x2sdNzVf1 [6N4eR;wQ%tFOf Bt#@^]2a4yGiX|s 3mBiN 2F|W@R$=d=R; crdeath3kF=vkC~=̅so t0o({!3}%ȑ,h"hy(|jqb"u@{KSd#.ڊh)(o]a(4aaTՐ6}cI4woN\9e~)NPCu0$uHL`l6Vq}~!$ !-"py.$t$m&! n"mi9p$\&yalsp"dC]5me4aIX j`^\G3JU@b7GF_$A3q&6Y;Hd 4>KYK'!N^igR5'uU6_!KLY"[[ cז*>A=o=1+#X-6Ycrdeath4mCLmCL; ,$?%ٌ<Î34f=Bx'c `-cDLN].:a,(7U@&1@aI~'yP:'{e?PFT=?8@c.vo993_Yd1RNhJaQ;ft2ws]$\!:wn<6n4x7xUO~7Qr.C7Sp:]$[Qu;\\dDZpgLVuzEB=f>E&1f!({b-{Gcxi 6:>[;/[m*![U15Xx*q15jofYf2c=&.[C@Y]GYqObU~R&KSH2@9H#eJU:@7l;9'k)OR)= cfo=fG={0+ncrdeath5(m,8U H]mGU BH\4r n 'L I8J5,}d~WZhkDwW."VOXB(LjrR5lF?J2\\0K1;!{e89DIL:@V3pd/4-_Oj)FEmAqQ3gt,sR$R$5s<ȅ8M]A8hZa|$OC~@3yK>kZ3L0cDKs}Ou]}N\wJNk|g2'9ȕD{GΙcˋհ0IPCE%U7̉+°?vǐ~mm }>tn~鈕;I|Ty{sz"sStXtrvwebscyZgKWU~m S\ AfZ=kK/kXZ-]>X4Q 5Ał+M~1`)M~-2j(.j!i&i9B:5b :1in2tj!AEʄGO7Da.=eA:WE:rY(*v`"&oE0o3 rx9751c3)^k'5} .0Cudz".w}a0^N?I6B3uA~^Mki2obO](eTa?bcZ:[PYK@LXFoT[@S SY2I+R_ !_MVxd Q9J-/&T*v,F._9h ?U [$qI VT' :; ,i]'>F==6Ե,Մdeath101A YD O=<PYM KSMZ 9W 4U* S- L#J#!?}wt66e1nf`Hb{8:G;5%.a^0>5!] 'v@BR0yo9 U7oR+Uw/HiB(%MtG=M `N4A\E}pWCJTYjN`a`D{JV^m-[q2MaAidTKtbKuc]Wyu0w`KzpZwv=ksLy =tlpyLgaUb|idtyyn{UbRXzoZf}ڤ;*˟nŋeIR]R٦ʋj5ɗ({LxCplCԞ*Ų=Ė}txz~][:{}Iy}~^tzsa` ^ajnTV[vmZKjoJ|;BmvcBm9C9eM;EO/B682"c6c;D27I/C=JET+%+]*\#D>7ALVBY(GU::W"c)V-"K V Lk N1*#\y49څ/p ;<DX4ˎ{s&p,!9(30'6$((j.7.+=2/1+_(IS.UI>H:4O23?R(=m*P;PJ!@*D5F0LzC"P?;pՉ)xƝ=hT-aƘqۨ uͧiȫcԭ n ڞ1y<^ѤgϔclٜQxى[.|Hoqy)scwZrHr mp߀QjՄy܄7uъd{Icš]sȘpiʑMPZbX LM]GSM8J,=PJe6j]<?2iPKf,\LC_|,Hs0IGK(aOaA*AD3=T#H?J5E$MV!#YBZ!FR'N1;ޱ=[=#V[bdeath102sM}(v%q#{Mz,dewyxv VKCAn6')ti'li9ko z; JB&/"FKsvpROmz!U[%|^#K=PR2-o gR,4| #@4g<74@SB]:Q766BW%*U0M,F%)@BlPH(,6AB:~*}0wZ -cC;z{X-*xXIx?`t-qx1%h`Mk;Yr'*m/zI/ZQDm1̻A?t~zqy25ŧ$5 m1Rlh[uzrjAtxmbAXv}pRvee]EC?Zp~AdHjk[}TjeKvli[BgFJ~m1Ajw7;d`R:_4=i&qe$0kI;%L06kJTW?!Ba7<1[5(_z8[Y+m'B)Ep=aT7AQE?T ,RxG`p^ sd.|z/tzN>R )KuNM!&ihO?D9T/@[ )L{#lFH)+\e 'zy$7,6to3I"$,'{]([s+l9 xu%L-Q8-bT>0B_D/d4)+ ~gR-b3t?) $}%l3#2Kc W?VBA`(S]0I=|CIyYGH_R!ETe+ejI.Qkp+Zq~RW~LK~,?=XH'S(3=xh23|?-b&1$czilz_in_imiȉyỏiuoiuwn`wx|}Q9(5xTRL{we~^+klOxm]r}XiaSB^BmUWWZHQ[ZDeUF@AN+0GSQBA:#mOCKtK:8;$-)!@C,?3po%s0jp l YsYgmk! o$;wD}d~+1 ;@f0ppz f\)W]RX-T$iT0NRN%>8=)F.D^+(\@x*B59M;CLfNcd(!EMW ,UW-Ax3%)vA26i~%aDS*:]ZQ (>>̐8=; -t_death103x^![*nxky*!9{:).`zUzipqw/u664x l`IRw^t ?As@fN^X:f A cIJMt@u|ڒ@gߢ4Fު9֊u;汭1Ճn#C݈06ɷW£ơPȣ|m̭_1&ne9&'cȜGW #&asX`VeO@{ 6l!ev]^nojDB b fm> = 7<VR$~Pinhtwgcptjd{e|j}[VktsiTirj\q3oud$dwAJB`Y66d GyO+4h]sVU6aL.QN`YkK5p3=Ic8AN#{P3B1UJpLYfoLo/fA'9qBx&f0z;Z(>>)B=>Cdeath104t_!]*{otku/!=w=/.`vUwimqs2q96dPKMhH'7uˀr?Fs@iN^W:fA gIJQtEuؑKgݡ>?ީ4։~;簯0Ղn-Cۈ;6Ƕf¢ġ2aȢˬmG&|Q&?\ǛWu B&=s6X%T2VVz4[0xY${2Oy/]~Nigc"m.NuGcqcm`*ChL[!4{B@PN_aIe9^G?j0e5DBnEJ6gxmTlc:osf}k~RItNIhA[]b<|gKqYQnqtw{N|k_vy;S}m>to}nrrwh_hgzm+`iP\P4TUdOA{%7k!e\^n8DByQ{> = 7<zVR$zWydkyr{{clwaa~hlJiviRjxj\sA>>=(*death105u^![*}nvjv,!:x;,.`wUxinqt0r765lTH-)Huts?Ds@hN^W:fA eIJOtCuّGgޡ:?ު9֊{;簮0Ղn)C܈66ȶ`¢š+ZȢy˭h?&{sH&6\ȜQj 6&t0s+XT(VLz)[0yK$|$Oz!]@ihW"m Nv9cqem`*ChL["4{BBRN[aJe9^E?j0e3FCnEF6gxgTcc2onf}wk~HItwBIh4\^Z<|\KrJQobx{?|kPvy-V~n/uo}odxZ_hgsznYjAZO,TT4cKGNH@<#V9s!]8C[L,D PK nPrP Z  wT YB$G )/)~AkYb *j f)=[X)x1dr+X\rc-p~P8`'SFB1q51x5?,\p7&SMO}RkQD"B5T*?]75tj9at?E$.,[%H&d*#<&*|TK;Wf-!n#=K,pt/.oN@*k`t VOt0'R^cRat4+Je]>dOA{#7k!e\^no}DBsQv~> = 7<}VR$|P|fmtsytcnvjbb|i~fJju}iSivj\r<ord&duAJ~C`Z68dGwO-4f]pVS4aI-QL^VhI:YNVnDQJk;3l);Fc5>N!uP1>/UYpJeeKx.b>&~:qBx%`n0z8_% (>},>9= -death106x\!Y*mxjx)!7z8(. `yUzipqw.u56( ^G,9] w_t ?Bs@gN^W:f A dIJMtAu|ڒAgߡ5Fު9֊v;汭1Ղn$C݈16ɷX£ơ!Qȣ}m̭`3&oe:&)cȜHX $&bsX`V=z[o0z4$} O| ]*iiB"o Nw!cqim`*ChL[%4{BFRNUaJe9_A4k1f2FCnEA6gy^TUd&oef}fks~7Ltb/Ih \^Ow<{IKs2QoJy|&|k9vzVnWuo}pLyC_ih]zoYj)ZO!TT&cLdP@{"6l#ev]^noiDB b fl>~ = 7<VR$~Pinitwhcptjd|e{j}\VkstiTisj\q4d$ldFnSh=otc"dw@J@`X65d GyO*4h]r VU6aK.QN`XkK?,==gšgڿdeath201 iDWN iPNB-280)R &g;{{he |l>ses_[eS1ۘQ#hH7͗>&^6B[qրUV7<}D>eE]^7U#ɡ/kӔ:/01Y+>>Y=ؓ'death202/ߊ39/[/Y:<[:`@7F D$KNIלA^=J~M|wTpVkb`tja_lZx[YlgXz1x#zk7\&uPB‰Msg~oQΈYe3|kfsG@NKj3^@HuqFƑf>qx^vaxxnvl|x%vqx_jn~wM~vlnj_sYbxaurtz hVpnfl%vL&w<5Kש9ԳTq6aZ#BK0?d5Bl54(f)6RxZr|O@M\IgRQjnu\tt[^lXNz}uqm"{h}}WxePXq`k0NoxSkx^I^@dUT 0\;M!FME I23\PE24 <2j( ~0܈@8@ 9~~=!2)$E"4*="9,/.-($B/+5!t,ob}?$KE7B GV>\ };p73'&6(!~M0qJ.rf)gw ue&Y` errt W(6<3,34..;:*y1-|<()9(i-."1(L'-*&z2(x6(z2A/YYU4cq,R}$={p(O:Ajkt4iyEanGai6Qkq*Qv=vy(ea?prg&Zx}Qpm&v;avF4ym\k!Zt'Ius4r6j/4l5Nyj;ThIo|eQksK#{qTr8?dgPosS qgUTTdnOcm HeSMWGXLWoKQ^iEafD[U5IbX2\p>>In>6k1yDFAM?/㈆0\x>"|7Tz4}.hh)\i*4er9-(:}Z=`$>=3L.death203SRΉ͜<ʵi3k?}XK[qa~PSRNut#dGD~gu9Ob[npfkyd{x["_jqApf|WY[ [FVoWTd LG#Y*kd0K2:UWR0!KǮ3I<֩F[0(9* 6xE/|"a S>|T<~8!.tfe^ Tg=V?T.f7s#uCp9?Y>A/O7 7z%W4(I]:@%lY$j;0mv[7Yf@="a(U\4Q*aD"B 8͆9|1750;00 |%| F!>9>*. GK F=1Dx&7r#{ vx )fG8y<6l>B70Q"~waR@.|d?#l`(=aM6_R*"YV=`A@lF9 ~n' k ~vM+GG3 DD)Mg Qu)W@"IF7m IA{$C('=;*/aI.]#+cj9ALn=FD8V,BP#31J=98gSn~d[]b `uHkGX'[px,d%n%oz5z)Lr0nw>0apc&pk#Lim-h:0h2Ue1fjHgJs> q>"p65}a-n.f=bQ>Y^/[WSfKaTS:ZK2lPW!WO]A=%a7O==HF;S6@-0HH/:/sVHd1N~UY*6E_2]H#NR\beX݁VX^Ng__Z,X&OBYׁa@f-i$]FbGg'|YUub"vVMio[MsQ^kYpP͂VEiQU5VVVU] /QIY'CIi*c/Rnd>Q|E*Dj;AhBb >L|=88ηdeath204q!k0ghy!kn؂n0p_t@\g`bʉgnnil;~fB;eg iXbinv\/bE+Mz>|1װ!_֭]@aZv5R?2@IEK.UL|FuOQrinXY\R }yd{c? KSouqtzultl>Ehssr}uv~[tdzntzmI Z" Gt z<Ac'^\/qΦ> ӡ>܋<5Ϟe1>7ѝ~2סLίC*†UvTÊKŋ+{7mTT`N: ;n+pw `vM:#M4 OJ7rd\nq Rl{"t}9h[-\bnRf}_bz/M^2NSR*TKgXGFV9R1N=6'Y5dX!\gLF&@:cb"bZ Y RtM%H-!H-::{]' Uk1G/ 5W]]p(X^N Vj5Ex>6DR-f%pv&Z[j;6772A244ʇEv14/=u[37gC#0Mc(f/$C0'0)(1"ڄƃ,s.U8)7;1 ˆ?EDIS-LhA#LYG)7i YvMh'O=+C!AcT/-~?(+fR(*x~$Aw|!Nx~-J8Pe!e/>I%G)IF<#;017\= Y9Y2.h2'iAf8_8>5EK >/ B$PJDI*R*/6?>J@6F='F2HN*E@bC=nPDODP,HO&OK7.?+"GNI3?A~?M.[-?v>1"x6Bv5Ry-)ha)Cb-4`=>c<ME.#V?5(R,B=i%kDp?#Um,acbrr"yksMthpw_le큛epnAj_`ob^peLdJe:{b^jJ`Va^fVZl\]ƄW[`VWkThSc;X?l1>]*c=*Crdeath205v'q/pzou'mnn0kcmeXk|[ra~fˊ>%>;J:BG['PyRI~N:vn:OvL~2&Di7dP,S-^LLn5Ki!(v}@hzItuErf`|y?f~Cfyss8:xo.zu g[_oiWnyOkmqnYu6Ym=O<V u_q`r{^dVpPm[yZHU޾Gs籃0Axu@fֺZݐ9ޔ}7r(?jm3҂d1f:҈|%m>ֆ*+\Ji}|m!yNkldRrZjY9\imVDcblm8rCtKeH9cYqa:['Sd3`,`jMj0M;RpA1]N0SWJ u5^iw@.^n[RtN-S]?,V`1<^XMCU'&BJ9JE!YHN'I3ONW(6BJO9$]$&(VL!Y;OOK$HL- ?/Q<*Q+WE+!PO1@/2R,WD"1R-=+NJ!P89n9'-].P%7#-Z@ #.//,> 1ǖ&&4:GD UX\c4+_8,%4ivp!'~)$_]`7 { mhg-8U8?JF2?+K,-L'0O7-B00FQ5.;]+76_)&m9'"N]$$`*9L,EA>4Rc8f CL "rHUM $@04aX,]HkEkb:cQ `" O?3 ("E%3-**\ bKE:M#?*Z)%Lm$I0C#0A,+@+$V(?.5"S)4|$D!|O|*g}Vt"1uMt"Yu=k_Ub7a%;!dOI'OY&,&RMBho4b/MgN4-PIj=Rn,Pw{qtfO~mOnhxqo_wk~eڊoDlegd"[l`>]Be;u]bcB^Pmb\o@[hX^YSucUTWapGSa?WuHdQ1IK[mOWHB4W&aDJEL7RT_+UbUOh"o@Q's42EFHy/J<@Cx0?*r9%.q#,>D >TaC=nBdeath206*~ۆ ~.~^~~fim}jsqv?D'O&ELLpUnmY,}S?inO.O$L27CK*P,Y-n+L0Ls!(zv@sx@uFad}xr2e3fvhr#5wtz0wymNBomBXm}8jq`lFu `m$St<~[ scpebzcRVnTk_tx_1b־Gąಗ/K {JfιhڑAەՂ9w(?ny3цn1i:Ћ%r>֋+)`Jm|r}NoriT^j^1cmm[:cfiq/vBtP[M'c^ie)`Vi$eUoDo#M@>pG^~TO\6 u;MivE^l`>sTSYC#S^5.`TQBS*_E;VC*]BP-I-O/U+.fEQA#]G*Sl#XfO:Mt*C-&E- >Y;L-Ua+Q/M7:03$P-U`"0Q@='O$OQ-<5r4$.`.4%O#4[U "H6)372*'3.-7t= om]6(]e*%2c#b!҆" ' # rRb u*9U8=OC1?2K-,R%/OJ+B>1Dc409j*7@U-#t7(!SY&"j+8Z,DS96Yc DeCK -rGgL!'?<?a X6]WkSkbGc a s'O"L$> -(&E*>23*n %t$Z7FM(L/k)+[m)X5Q#5N15@0,V-L.#A'$S-?{(R!{! O|5g}hs%=t ]t,YuKk_gb%4`(H!c!OH1OX(7IQ]>j ,bLFlZ?+Oll6T)d'O:szrrNz{Qotxrl|y؄wB}cy܌vmnsHnUx5ujcs_`Zm^fjUXpZeX\wcV[ThvMRg?YBha0HPgmJ]N@.W@\BNQI5Sp_/KbRQn"oDR)y32YEI,IY?Sx,?Au6&>q|=>n(>5edeath301lm[r\ e xmcn bumHyVl"z$ nqRe4Z|3Ie T{ASt{.@yh ip{id?zp(vKc^t N[I X p! T!w{d ^'uD>CLneHˁAǢ=f^^EGf^5t -߂ jlin͛%Ι%tE3eiΞ't9zYV0k]ϙO¢$Mxiܟbk]|Vh} k"w`VPr柔nzs|~P{vw~dޏTtTTÁ4 z^y݂֋G{]ԂՁCͼOʹ0tũȡzq,}3=tjq'd(n{[~tfiudhgaZ|XUJ~Qf^YcFT!\V㋡^ܐx^Ji@RyߠZwDnݖhǰrϪBܵ*ֻIJ\Ǻ}е>Ӽu_ŭ_Y6ɑHы6]\WN` } nEFy{&iaq `d OUadj^t__ &G|U@6C)n2~BG@5E3I~;TGAUAXVU~ ghxĂk}f׆œqDϑ>K> =ӷ=9o`Gdeath302qaewms iabj [v\ e f$p'$mpWf Ud_yH4nF#US*+, VN 'OuO0jE4C/zePy(/GY27v)D)Z A~$e2*r+GtHC4@`/JG?C_==W+VXAH8YImQk"Yl"`Rm[\TAP.ge~pTkgyyoIoeA}begUcbkfaUx퐃d`pk_|wNhlfgPU Z-u. Ɨx C$UL$Ub;nS>x/Ν1w$Ԫ*x?y9]Mˤ9BT}7J|6ApFś5W^%Rwd$ZxaTI:ht$gw{c>rDlLeZk_,J|X#tYNPlǢSd^`duxAsd5+4hpgb(ꛪ,s~^~KbgܟsmDyffQm3hҚݤ'ן-͜õ٫*fv^mZRf/jɌӜ"˕uȎǂǏruoyv ݘ–ܛyxƃƐ ؏rہ{P΁B偂5݉%yXxՋzȉ˂1ׁ1;Rӛ˂̻>̭{Σlt&uJJ%t,fgM~䬄odXp졃cYsVXRꖒf\Zj\qT]$f[}c٦ZQbYU}ޜso]pڝmȪ̎XݔI۱ ÞrʮϑV֡*ï ȋXȭXµ21EE5XX~^$w b~`uUoz 6~%w ]n f c dp_^dP]|y(lQA8S'b.C> 4^1nD:}TISSNZQ eh ҁ4hΈb7П3o`ђS==F] >>PAߔ~death303Gkg;zyKy)QqkRk28O@Z@6f\ b1Q,6b=Ov9uyWq=4M:sQ.R3t[ +m9;mEe^P:JOjUPVKoHGD\>a!5`=La+H[FGe5>Uwb3taUVxr&EsXL|5q Djbo/eXgl[vjNlTm'kJq_xHDn( c՜fr`qۺ/¹0a:9a z%X mƝP`Iҩ>djħSReIG;j>I4y&QDzWF9?uL2|u&Ea*0WZjPT$)IvKJX,P[0[o0nwNog_Xp%rg$uCud<+!9k'pj-p-(֙',u ^ Kfgt 7z]߉V .k'$3-$Q<*i$ub'm]>WPh3ۘ;/l;K"Aw7rBunLzsQÃS P XLvXy}^^ocQtWRC5%z]y{'&+ !  R. ~'H'mIh<_SQ\N`d+Rm(+k>u_hVz; iFo2v twz"$~K ?;3>s/r/5,>{/+あ3zl {&r%P`w3d=lhmU_EuCGT0oHvNs>QD+:5)=A9#ٺdeath304N[i?hxKk S d =Ji7] A V,[)P4G6!UB#K CV GT2P*Y)wP}\ql]l $O+Z*6H\ E1Q,6b(OV9rXWʜV9d2sM\&X"V/D{a?D@A_;BQnd0n^hOv(U`X=|qOC{EnVk`JgQa3mM*v\cnSmIlAq&Nx(%n, >Ӟ@r?ԼOܲ-e³2>ŋy9=X-8 PǐRB2ԚP&ELśS;f4ÂI"y-{Ix7ɥW?~1?m+.d&^Nry{ V`%KQ&4M+\dS$JA5v=6rJunVzs\̓^ Œ[ dWvey~kkqƎQtẂRĆ5É%z]y"!M{++1 % Ƃ! R,K-}mLT&EHVVIS_T*Q[+4Q?_\YPk ,MG[6_ Xs!^(fgFo 9x1p@^0ir+z3n,=g-,k4el%b-Y&nSNw >'=A3ѻdeath305a&mR.xZ 5 b0 ZmO  Y  G}I TQ""]# 'Z^_;dT[47WY6vZ{RcqNdN M!X 49Z 6/}P%|4dMC7rFUK6Z0fL;FH-tT/BRc(E0YAgYIVuNC1sW6BMN{INRKUCt]E_g*bNlXCu*pm5lbmZDx ing,2Ğ4Ɵ=֝Lܗ-ZŸ 8æh:4U-5ܥUqTD~[-`*(OND*q6#cUv YV N TMo[RHg`_g Ct6"<*-9j4pi=p=,4,t^Ke gҝt7z^H0kXȘNѡ1$ǝ?*cǧL/i+ub1m]NWbh?N2kN_"RwPPCrSun`zsfтh ʒe-sfvty}zy юStYցTÁFՁ5͉ %z ]y$Ɗ#M{-X,4 ǁ( ρ$ Tö?.tàkb(^ViVo*g)Q 'Zkc+I\P ?rB"E$;#]0 R:M0"XK'F;L-*S$2E'J jAGC,drTPUs|xY ($r J/* }YY( 8&J67 ^/Xb h do^f^sk8m&e, H] S "N3P!nJIQWHh% [P@6V*o2'BM@ 6f4J-=vUHTVTZ PW)! i!hwD 2 ƂK>/=׊5Awdeath306y2mm 9xtBz< tmk %t ! e}g QqQp$"z$ 'vyG=\S*F2\F3[uIC]P\XUVJ]36W&(I/xY(J'wFFL^`Ch/$Z9vd [i HU`QGKIP~L~0(vOlD#}uY}S TMm[NRʢHd ]fdCto/<*;m[aTvgOa2jbșu"fvPǎPSqgumvkr|׃} ғ{-vy}NJ2ڏ Ss YށT΁%F܁$<։(%y)]y-Ћ+M{7Xʼn6Ƃ? т2 ׂ- ǁT)Ϻ=ɨ=¨tС#k}(zH H/'*o'u-}:i y!n'arb%"d/\-wAnLjAu'i3dKj:%q02e1}j'kb&gb9 rs Rtgx`+1*J$-9v Y˭Y575~G(64^=U`$ p ff''}7 fx "o*k=m&ihpWf"% wRA5U)o31BMA&4f4)K::{UFTT TYPW5+ g,hP A Ђ%^=o=V@VV}|Adeath307Ik{ R}^V "kz82 t /|v Q~Q)'& *-`Ksh4a;Ts[rs]hv#lxx FS(}V"ρHIG(n ER+*[,OMA?wH.R@BTU>?`I!x9=p|`=sB[]~LQ>FJLXQHWS~GiUYubayOGmrwPwkOj_ V{]^dMZae_Y Rebc^@ii]v(fYld&ZPЄŠwBA% uT,O-Ȕ[CmJvQүAS=Ly;casBZ}dTB_MK^V|\Zw>i];fD(\Mzk;,aCz[ QZDva{F$rQxxX{Hk `gGbra Rb?'O(X#%sYS TMj[ NÁRӦHa XfaCr+oA<+*Q=Zc.=7.@5\Pdeath308 ckm}}s-kIA z =||N Q- )(#6:l_}fnCP}y7}lz4xn"e 8 H tKLK}6=5l7U,M\,BPGF4EI!ZxJ2|CK`F.@XjJ^uA4*_/FYS*Z30>UQ6>VHLjI Y6~7j6[md_c"l`]"qAZmfLPU?J3ZEem}qncOvWVS^qC#am^'nR T{YTWia)]p7]{l[5Z{P!rHJ:9- T(/G(3\I%M9IّD@D޽@IN<E_t4Xzo]FW#EVmbYj3iy lU,d^xsX%l[yiRW57c$|nxXHx_s!In%qp TV')O7{#5l Y S|T(Mb)[ĝN{Rץ*HWM)f(W*|0CkCo|`VUiO'j.7r^H.0]1Xܚ,Nv$١՜aŻނگ/[iuRzmMC[꛾-`ËҞ"Εm:PӋ8P}juhyq܆ؙėātxŀŐҎSjY{T{JF|I<ކO%rP]qWوUMsiXЅf}w |` |X |UU>+ժrѫ rۥCm8'GH7%O%- Y;o@yJx/qwG{XuQ|}㏅~zL`{ىl#X ~WxDm{D+yjqR#g8z `/,^)[O$HH-ül*8zYֲ9`ť'Ͱd(j~3So",RqC OE' 9mc c;P)8i }8EPN!p G)'" W}@'MRA(- U>m1]>#O@G+.c-QCm*O??Z??Z?>O?>E?>E?>E??O??;?>E??E?>E?>;?>1?> 1??;??E??m?> v?> v?> m?> d?> d?>m??v??v?> ~?>~?>V?>V?>V?J>~?J>V?>~?>V?>1?>1?J>V?J>~?>V?>~?>V?>V?>1?>1?J>V?J>~?>.?;'?<8?<'?=8?='?:>8?:>?>?>>?>>>>>>=?=?>>>=>>>>;>=!>= ?=%?;%?>>?= ?=#>=">;?>>?=%?>>>>>>=>>>>=!>;>=">= ?=#?=>:>"B>2>%>2>$>2>&>:>!B>2>%>:>"B>:>#=:>'=2>'B>2>#=:> ;:>!;2>&;2>$;`<)=<(=2>&><)>2>$>2>%z><+*><*B>2>'=2>&=<(=;.*>;4z><+B>2>'z><+>2>%B>2>' ;?,=>-*>?.*>>/>>3*>>2f>>;>>9>>=>><>>3>>1>>0 ;?,;>0=>-;>1*>>2=>5*>>6=J>?N>J>@*>>2*>>/=>->?4*>?.>>3>?,>>0>?,>>3=>5;>1;>7;J>>=J>?>>8>>9~>>:>J>A>J>B>>7>>1>>9~>>:>>9*>>2*>>6N>J>@>J>A>><>>9>>1>>=>>3f>>;z><+*>;4z>;,>;)><(z><)z>;,>;.>J>>>>7>J>B?t??>?>?t?>t?>f?>f?r>5?>G?>8?~~>J?w.>J?vb>g?u=g?t.>t?E=t?A={?B ?f?C?t???t?>f? ?6??E??f?D?t?@?t??=t?A;u?@;g?D=g?t'?K'?:>K8?=J8?:>L?>M?>>F?>>H?=O>=N>>>G?>>F>;L>>>J>=N>=Q>=R%?;K?=O%?>>I%?;K ?=S>=P>=N?>>H%?>>I?=O>>>J>>>G>=N>=P>=Q>=N>=R ?=S%?;KB>:>T=:>UB>2>R>:>V=:>U=2>SB>2>R>:>VB>2>R>2>Q>:>W=2>W=:>P;:>S;2>U>:>W>2>Q>2>P ;2>T;`<[*>;dz>;]>T=U*><[B>2>Wz>2>V>2>T;?\*>?]=>^*>>_*>>a>>cf>>k>>m>>j>>l>>b>>c>>`>?\;>`;?\=>^;>b=>^*>>a;>b=>e;>g;J>>*>?]>?d>>c*>>_>?\>>c>?d*>>f=>e*>>a~>>iN>J>o=J>n=>e>>h~>>i>>j>>b>>g>J>q>J>p~>>i>>j~>>i*>>af>>k>>c>>l>>m=;\;`e=J>n;J>>>J>pN>J>o~>>i>J>>>J>q>>g>t?>?>>t?n>f?r>t?n>t?o>f?r>f?s>G?~>J?w>f?s>t?o>t?pb>g?u~>J?w>t?pr>{?q.>t?Eb>g?ur>{?q.>?>={?B.>t?E =g?t=J?x.>J?v=:?.>4?zH=6?|=?}=:?;(?=J?x=g?t;g?D;G?=:?>?{>5?y.>4?z.>?>?#>?!>8?~.>4?z>5?y>?{>&?>5?>8?~.>J?v.>4?z ?^?6?a?#?P?2?M?6?a?E?P?T?i?\?U?l?\??^?#?P?6?a??a? 2?M?E?P?E?H?_?H?H?@?_?/?I?'?a??>??3?? E?P?2?M?E?H?H?@?_?H?_?/?l?\?q? ??8???q? ?a??_?/?E?P?2?M?6?a?T?i?\?U?_?H?6?i??i??a?6?a?T?i?T?i?6?a?6?i?6?j?6?y?T?i?T?u?l?\?v?u??8?6?y?6?j?T?i?T?u?J??(???y??j?6?j?)??&????)??/??+?'?!?4??(???T?u?T?i?l?\?v?u?p??#J??E?P?E?H?_?H?\?U?l?\?\?U?T?i?)????)??/??&??)???? <;;;;;+?'????(?!?4?E?H?H?@?2?M? 2?M? ?@?H?@?2?$?I?'?>??a??3????a???8??w?v?u?l?\?q? ?_?/?l?\??8?_?H?l?\?_?/?2?$?H?@?I?'?>??_?/?I?'?a??q? ?a????q? ?>??2?$?'??3??I?'?_?/?H?@?T?u?6?y?J??p??"v?u?J??6?y?(??`?=R?;m?;m?=m?:>R?:>R?=R?;w?>>o?>~?>o?=~?=~?;~?;o?=o?;o?;w?;o?=w?=w?>~?>w?>>o?>o?=w?>w?>>~?=~?>w?=w?;~?;.>?.>4?z=?}=?" >?.>?R>?>?#E?=P?:>:?:>:?;E?;P?;P?:> ;?>;?>E?>O?>O?>Z?>Z?>d?>d?>;?>;?>E?>E?>;??1?>;?>O?>E?>O?>Z?>O??E??E?>E?>Z?>O?>_?>d?>E?>E?>E?>E?>1??1?>;??;??;??E?>E??;??Z??O??Z?>d??_??O??E??O??Z??m?>v??m??d?>d?>m?>v?>v????v???>v?>v?>m?>m?>v????v??m??d?>_?>m?>d?>m?>m?>d?>d?>m?>m??d??h??d??m??d??Z?>d?>d??d?>m??h??;?>1?>1?>;?>?>?>v?>m?>;?>1?>1?> >?>?>>>>>>>>>>?>>>?>.??.?>.?>?> ?>??.?????? ?>>>>?>>>>>>>>>> ?>?>?>>> ?>>>>>>>>>>>>>?>?>?>.?>.?>.?>?J>?>?>?>?J>>n>>z>>z>>J>>V>>b>>z>>V>>J>>J>>b>E?=:?:>P?:>P?;E?;:?;:?:>;?>E?>;?>1?> 1?> ;?>E?>O?>O?>Z?>Z?>d?> d?>_?>O?>Z?>d?> m?> E?>E?>E?> E?>;??E??;??1??O??E??O??Z?????>v??v??v?> v???>v?> m??v??v??m?> d?> m?> d?>m??d??h??d??Z?>Z??_??d??d?>Z?>m??d?>d??h??m?> m?> v?> ?> ?> v?> ?>;?>1?> 1?>  >? >> >?>>?? ?> ???> .?? .?> .?> ?> .?>?>?>?>?J>>>>> >>>>>>>>>>>>  ?>  ?> ?>>>?>>>>>>>>>>>>> ?> .?>.?>?>.?>.?>?>?J>.?J>}?>?>>>>J> ?J>}>n>>z>>z>>b>>V>>J>>z>>J>>J>>V>>b>.?J>{?J>.?>>?>f?>5?>?!>?#>?>???"??  ?6?>f??;??E? ?6??(?>5?>&?>?>?!???(? ?6??? >J>!>>?>?J>{`<? =?"=?}V?J>~?J>~?>gambas-3.16.3/app/examples/OpenGL/Md2Model/icon.png000066400000000000000000000126311411575327000216310ustar00rootroot00000000000000PNG  IHDR@@iq`IDATxyWyo_ڷom[. ƶ"6&)kB%aBy;!.&@* ד( A#L`H#"$>K3:R ãfԒ,aqz?/7lA_8ذj$S-#1)@Q%*DlYC%dq* C|t3BaA,*=~f8 F75d`V#"uD< ɐεI: ݴqt`}|SI^.^ymmhqXTY(͕\w^j̳_$J*!H xC74?oځ$II/195V%R JZFr#0n\JQkіND~s9: uBgU—D[[ۅQbͽ1lEF,FJt vp]CӜtuzF!Z088N```}|b6\&XB+,Җ'ڊU3rzY,,-clbRir=Ȳ(ªKy-RY~kc%c]>tT/0Ø֊'X ݭS'ר4kFk:([Re(d%=(,^i49t0ޓOu%qǾ׿RiXxAmaLP4II.z3PUD$ɔz̠̏JE5+%rDB D~5.*}2nͦ!HHg048V42NZC(}XoQ7yړ9E6!&"\rl4Mc)\'\8-wIKK r"Achq"*+4Mm "-}+)&fXMDn4GJ.TBSM1S)Ccx OZ=tQEEM}{;ţ:z]QDXyIA331b_FjQ\_t2昛cn~Z8q#Ga5tńpq WLL/,D3TJ -Sig;Iz'h6c2 SuUzJZ'V1XNF #J'NVIowї?΋P47oFTBN `i$!i#]m6'wPN30s-*g!*rn `^(J躎(Da$mC5F6ͬ~Ϣk ХoQ7vS+S.WbFNwPS.͓SM|Jptt;`b|YΨI^LY#\?"b>{Ab2mt=͢,YIըLQbl$ i^ȉ"'oGU!l4M G;׎;Uh6h,L(J,_n^8C݊H294Ivl4Sftt-kZVne8~9FOQoX8 O Ž=̤̌ihw >t{@}$&8q)KYRftj?<LExa^Ӵ]4M'ʒJe*k&2 `8M\% tEf>W.5C.(WtusۭOMbG@v䢀f 2,Nd |/}c$I1I:) 1b$4)xu{:*] '3>=[ӆ¦Wu$Sj2^9PUl۾wёN11ҤF^ }=}35oSm$4dYwֶGWNR.295U/"^@Wt:;854Ȋk "-z6n'׽a̫tٴpްm'4Jܪщ_+aO7%RUlT7q-:=/153©Wi-uI=O1OW zW]ɮx#'!NQ:CRԅ<F$Z @矿"+"'*ES#p=RHk SOӖGxC6OVevv( (N Z;[ae+BRT,ЫO%BWٰxyf<0i"PX wDIcYͧ_X&''1$Qddt-7F{g7ohI̬$t"Ab2!1N8aۨ*K($Ą x~̆-7iW| д|bQrQ 9zא$Ui6-Ba1< 8$/ B(7iд]%kq5T՛v ][ְbYVSƃDz!^TQFAjLmf>N$(`{57f\-dl.`xfjegq{wv%tCnށ̌:Yٶ}76 PH6#LDg"ͨ b#!M "TGBb"xI$U^>#"e\yY~dm\n-M0FLMvLuW E "#|v]"m(4040ArԪ39-ԛ5j9<c~ƶ-yq }HQv%vHۏpE9;+ yt[D^ CTMEtQBV4ŷ<^xGo5SYiVUuj*/?cJs6~2x!:-ǎR59`:y.q# lLB#I1<}V՛\-F.c&4Ubqr+eYnʖĸnQLBhMj^Lˋq""B."Mef :{+ñmlB qm=ʅHR\sÍBŸ^HkU(aL ߝ[\[X$02 UB?pϏ1T61S>vtb4 #x{/۶8Q4UGELʐT ;~$JxUK,e͆+$IdR躊,BXn@spCOPț'kZ( #lFOe/MոkX0@DdBoQN #HLh:q ! p$&=m-xtB[nUөdk$4%$A %ZZp->߽  qb7Q>O^jl_M_Gqa2UgZ ~^Q>6ow N )n`IzͶV>L *+Q3v[:#@K'|Ʀd:% $il޼q?G}Mk&N#P܀6E "OИ aDO%[KիWHmٌOst`u 0i4m[~e;9({4 3lȯt\uN<ВkGvɒ^z{ӳBvLMNSܧa&_|&UOdfF\g00JD"hx06"?Q+9{/JaHQ'^pC;tYUpׇ|j*A P(,bzD?胬?rAj_8?}'IbY6Ebr6n?&߷f±wQ-M2:xZt'E.~oƿ:*~74IENDB`gambas-3.16.3/app/examples/OpenGL/Md2Model/igdosh.png000066400000000000000000000537021411575327000221620ustar00rootroot00000000000000PNG  IHDRkXTPLTE'''/++C3'+G?C_G7WC3K7+?/O;7#?' S/;+S?/gO/G7S?cK#kS?s[;gO;{cC{_KkWwS3//wsWCk'/#3'7'/#'?/#C+# #    ###[;;77?;; ++#//#_7/VIDATx}bH%7xiEERV۞{ :,ɥie:/#>&7?WqUv;ɿ ^?7f=`ފ{??]Lx!N<3_3OϽz3 z GL~Q0ox 77 |xs0 !GxKk|T~pq)&z-/,K}Vf^ɟߖqc|yP CJ(_o## XiBc}wzն&U O ;>}ژgVE>=O0y;O~X_*QJ>JX+|zUۼ3W<}U F٣%r ~"?9nKã_i*3ox6=T㧏*4Oc& "l(r"@x@ 2x{[[%y+y sB}e +6,rk'Ƚ}OwEF++x)뫢|1J\ADxsss'hn>+W 2^hЈP r/pG|cPU~ͽ "?>k@-.`_o!L9z%?fW]oҴ `7NyT ?qvېڀ`|(O=?E`re}P!V <9- IW\}DTԇBzNY o;"@罹+C2[ !]@@]  <[( l&x>ق20B([@jȝL>}5{3oს.ǘ{OWf]"]*lq^^{?XV^^&,G0.f3;m$IMjCF@ (nQ ~j+Rӏi+6`+Ad* ?4 &c8>,0M4(2FtQYg|ܚ#>`"{ _0y?\Q'HH3s$p!:0٥.E%[K~&MGn~$fJ 8D Tq؟h#öu]!@"&~G$kzZq  ';o8(Lz .i>|P_5dn/ĦZڝ@~{ yvB<"JKKV3y(ʒ,"y-P0&:edl](+嗜(XCFWT$ |IZA u?%@M^ o. N][1""{ۊ> a(gCWB D#Mr_8cx#h}[U >rGI  &.ĐHudo=i;A5 ?iRe [ aBDK~=cU+>$ecb'W !#(VUr[O;̟F4t:-:-QIil2z(@S9Ⱥz=ڬr'Wnm_;9m^ h?̏) k_t\l+r?5d1EZjiLl% TFB}VڟpVK39[K{nҽ߼xvrḯXxMS`$vGue!!sC ԓQr.]/{/l ǞUPހfP)ͫE8a&@篞o'x"ϒ0BBU1(bdcGج¯]gH}2},jNy”-͂^"y"wB#~<@N%ESDqj[wjj@+W8LC$hn6FI9&˘Yn)Lv 5vZHyD7@^MFF̍dӇqU㠚'OZ8U2cHW5q;?(1 zm1œGXf>S(#؋NМ~ ru?]넾/Bmw onn޹T6|g {h/oҬ6Fx e8chXKx:P"5L.,6e8*K+?/(_^LDžn.D6tV*[<n_=Kڄ /'` NV,(/ WâkjKV\@/X2!r#:1p\Tk!lT6=Y+F|*J#nGFrࡩi:32Յyq W^`8I]쩔۟;l聧XTI9c"Ut Zx|q"AO?t >?dngzg0`؋|nCo_q:c`8B GGl>e{rK ^[Q"]ؼh"1xL!+ )4%#|d`0qT$cx5ݾV@#J$w T~M^CH ;.ۀ⃹^4: ~<1bWp H2+ckE + I1Japrmsįf8x, i ߙ,SMm j5XyMȲi|A!L@i{fpdzL݌" fȦ̆< ԅWQ'ǴXxJlٰooI'.i|n:a!Rg(dA\SR Z3mfn5ߡ"yղNk qqneYdsUy f/gL0@qP!ᓄ|$HD\֦C H>DNTf4LBdu}^׸ȁ\< BWշ7yvWr0y-fr6]L3N5rZmT#7:Ԡ1xrײVύӷ2##?r5 ZBڣT?Y.>f]8^U̯ϼZ LMfʈH4mTN`HIdd3& 2Z>(QzUJӎ"~ CE$WnVǛء\b"q ÙAfz8K>ܽsUUJ )k;Ѐ̙wSGh|OĹ/oZ6(d{M07 Dc"A/j3y,C! m,Jssry%0ܟR v'`lr,Zq /,de~@ثq!A2: Dw `E>-L,"0c3VHUC" x> OE)rش7 GԿo'@XHo0iYQnJ] Y)F1 vYR'kX~-a6FǣB'4HPli`â.< 1P?'q P$ji9Dm3,W[-)yfju{9YޫeDLN'Z!nH ˵5G1Rx1u1PGaw;yߋ&& 5 MR+A!?cmIM\a4/@(Ĩ11k8`9qΓIObr`e60 8`hsK2Ө`ɻ )k-e4M&M`h1wfmo~|Z%܋@Bj9zD\ : ܣ ^HLgH$!K㸻=$J^5ޖ4陱5-994藰޳$FSHN~ZWA:@plLUR|>\" Rӽ}N6ߖ?3  k }1\C`kQ؄f_N$IgO֯_ kC>b.uhiO(uL pt?GL~EqxKqlv~4b*{&l HYRb[~ L/_d9يd:.g kYu:Oz1aus1՟` 1(DU`V;73u YQ\ 4gӧ FܟLml:BtrD{W*<q?*cT}Dm-, çjc)Q6`YĢc-X Bd UN<_΢ͯD mQV A,ПRxpo- ^\zMOI M?7T EO/s0GUc6> w,9:-| @ho͌ m cPSD˜Hqv'Sjߏ[v _bXAd\b U}+\뻯z[7`\t U {d)yT?p6F"Hvbbes,I76A_pܥbVq7ޤ> ,hԺ3h# GT#lla#P#R~}xrD"R|h%ˍP2~Q3ׯ#OXɷps(~#Up^c)=SgV&n8H,rp9*慟5#fڛvn'E9LyX=MܬVkJ\÷be~ZC[J:O#3X '{PLs&nU.U/FgNq @@&߼ *_{3m,}:z@6,Od8 aʇUydC[L/wQ/&^ y_ Nύ#ǰ2F ;|v(ݘ,=P7_e,GSܦmևHתzaEe溾fܛ "ӵf,Ԉ#/pFf}PSXvzB#h39P zx c FP#'LҠhnWW+b MؤzV8 c`:{ mC(j8c șy}׎#ڄbez-"N|>}녻sO.8U=MqcjNm(+S=Gc0jw2D7e[-,Jd&*<ϛ,r3"IY̫VRGE0#TwG۷w~x%;npO=*߄(Yj kob1:Lil1U6`e2-FB魥?5F:T7]W`\ k!-Z!rmkf$E߰IBr khN b9߮ͰjZ /<*f1$LU"B/p66Zpwq3f~f"Q<m~"-PRf " LA`OuV_#0yW^k7/7Ǭ@]5qFMb-\ԋ}X2%qEٍW})R'7tIf&acU7 7J]UωPϯpWj/EuNEJP q3!^8r}Ŷ(멈4js*sD]ΐg{b [/^!h +Zan_ڕH% YxeP~tL^ `rDmvWh8hSL,`_$ph* (PU/`x2 F)4:rk7kf<뻢?q6ˇ:Vm/\huV@:ե."k_@p#p C!xol'Oo.y K[ɺc:,t K"'U X2.TӢeɸv"\"wZvi /8,ih9ElېVE'Ahc9wKI;s c V,נSOY~8Qr<#v nmD@ Dt9Z5o UEƹt`Lx5Ȓ|cM7ԎD04)Ϟ$#D-ƀAjmY '\[̩q0Jy /iFZ15\{`JKu*}ke8#"M`: :ZgZ-7vJ6SGWj23 t"S*ZZb)94@ئmo(DCd6# ֔HU]d`_yS>j 1VfxEz,}c)1-5M`!:l"ǹ㶯&,fX>xeh%0o*WCN6x oz)LbhE, +@˕ث[DklR  1l6[!%,J6/tEa3A;=x!$"0ÅG ]kYᇋE6. i!J S_`uPY5r^!d3' QP[DbXs1^Y~bkqO(z@yXvFlӯVvhtV*[aU5_e ;"JQY9Ps㨕mvB4 A0LNW4d8aIFYHJ,'\SZ]fYF?]kB3lOfG }"|4oH<l`Ss gqkTQ_(<~r$ p ,fӪgU\ 5&Lܷȴ]B3I0ё,7<6T ?5W@%!x ~e[?A?oh) |  cWwA#_(X\frf܌s[785z؟+>lñ躏QN7ξ=ao{K{ԊqМ׏Od lN\製d4eznb> [ (!dMv&]AhI_ `OD15 nYs:YɩZA4p4BAa(vyfR -@2@GFl4L3+S r  VW(W 5F.ܹ=U@F 5uE00DfXJM.jNV2{PU!Z0}h&MعmE `W"}bC4i@B H~ LJ,t BH=ӦeOËouD()6=Yϭ;vATSrW$nѩl%7]/嵡ɲ̄R'nBi[}k'{y4pꟳX 0:n0=-Y5X=;>jFOJ `^4rhK[nj$+nYU~bŞricQa`NPG&* S+Y >WfA2A~Y"M,39f [sRT3aYѫ+4zGX.&ƿ<  {ոs=x  jْ.*kmAin2I;@O]GAѸ,սJȄuYYb#–ŔgAl(a09KQn (#݇QbXv/5NftD8Cہ{q04fjN6ˠ>AYE\)#kղN{(m; zstC{b縱~x}?@sZ}B8U%)-e)CfΡE5JA{ņN`f:T)v^hP}ˋ6|s+9!Az6٩%#V 25 NKJ4]%9/?Ql8^j~(BTjij @$甝 FH0bh6R!)!hcqh2Ne:4L?7h4`Qy-c , }:o vܫ!0@̀5Mt)H3C Aۗu ,F} s|l`;:Is#r}Bg^L-C{Gn{[p#a.Plh UhIUwaCg8g%zZOE`XIh^Ꮌ0!5[`ݳ[T= @?|ox 3 @[-̥9}CzZ@S'Q9X-hP9|YE]V:]rOX; h 9 %.ȼ, Tdf*#t|q(P"L\!X)3LŌ]@I64nbNٕ"=}F <5E\znߊ5@[՜ޫe"qQ |!+#(QiKH!B*!زV(\5C yqzfq#;"u9m 6iF 8)<2x:/Kn>ߞj:Y0 3* `{Q4nwĔ q1ܛ:k([9TIy8Kx63-8XaHyЅ̙ċ9J9wLAtn͕v#Ln;ҩT0Hb.Ɠ 0e71I3圼#XP iXaƳ#h[u:4Ѵ=g:@F!r&6#t ϙU&s ݝJhTmjBEs~BǛUAo[g&hg(fS+yuS/b3XjjXu _``?Z, KZ=rǜ.rW P{S _*RU1cJԫxxc+px2Qƕ)YġզrFb"u(1F`w`Ph[W-`&" d#Q+5tzEr 0%#l sO"`\MqH&IlߊQːFLHA6TȶhO1QFfmLV{_jo :6\D!V(0|Sy~L.9Qd.F^X@MY.0ٖRNGڬ(fy~Nc^!U{fV9~S)#HfLct|֋ZY` g SAgn( }!=&toy?Nr{(D0(, ``Gt1 cϝjgfq2͑ Mؖ՚AFQByT93-Y _&l"N_U10pa"n];&Oq P*W+!Y3~3w xtĦ(S#GOn&8ռ1&0qth :M4I0-6EXÞAiVjX~ݱ׀D~\Q)d!oiEM5n'`#*›F&M(b`bYlnsAAu 5.!){lݰo 'l>nB:矓)"LQYpUG#ZgT{=n.@<`ծt(Z١)lzq @ۚ`{do_f][쒾|x;Z rOxFVX2Ƴ!P 7Ze̴/ ˭СPJglo_JuWCN+K9y?(L%=Zqi"> `B.8Hfŵwmj4!(S0hG췡*pvUfP&O%~]l<`^bpN눹١Ku*!p1Ϣ~?Es`7@.wj:|O,ŭ "ۚK~`4*d\ jZvec(MWc6<_x`em]l~Uط=AV0~QE!8? '?'+vE2dֽ`Ы9`><Y4dPxG{G RaH( QV\e4haG?;n*vF/|F2BIGL.|@@c "(n8~SgHWzeL^;(;7D^1(v3;+lb0 mey~OCv0WF? cTr>_;E+ ;3ft丝3fMUVA& xv[~<;qQ'l\J.%7`g#v\ a(1Nq6uin{- 6&F?Ώs`F6QĆn8n'vpRA-'p  Ar2<0cRΐd2"05j΅hUB$n.<ɊT)vMx3|18Qn2}vCjzpV87;cz! b g{f+ e"0N8Q`UוWW>K{v9BPOgZS 9YQ@ĭROf@>Y 8e ZTPI{p4b9U|{, y.ZֲEXqZ MDA(u2QS娙p Q@TAGYiO[;5+ 6vF(WԔ/BZm]t   2:I98(1,!rU{4JSȀ* \y.DC8ϛ .m˶NSf'=&d@Ѣ6ؐ,L* <-Ǒ˫HprKalI=Yb%wׁ2c/gnsq9 8)N=G|%w6J/?+=e-vNdUgq"l0(e@*ߺM_ svh8arnq5 jk!:tOVQQ]x:Fd^I/plؿ #w M. @m7=38#m10664qѸsVjbʟN>/bj㹝 ] wq"K$;]'nVڅ JEDDh_^3]ZeٳṄAy-GW=/4=)hXe|NB9Z&BNY~BgV1xR{=FRqNDd"5S:"QH$L 77_~z6 E,j &!1Wiy|*Ղjs:/1@HLX`PġSi$Dž@ড=c! ;_{|Ew?yaA'SS+o)ChMpgߋkSšxcS%b8mKPz}=gN"YW3 qM -~ޝ؆gty$EScQH @IlDXTp.v_s=o9`ׯǩɂJnY T4n"nfvܬR/*Օ;dZ X&R0^+e-!b8(O ~/1 CD%XN4i҂~8wQ^Y80 bf,?p4flM #Qhy}1":d(*W?D%9Ya F344k(CaQT9n!9 jY Y4Rvj/_8T7c]'S0Qk1geڏ  ɐ"F]ؼ Qq`OQ b*Y`!6`́t"`Up-pHlQk+Ŝ 1>s^h &obsԥ'N1EswGu3G}ćz"FoBI4 q4bq4͗j"bd!XxjbXߘi[g˘0T21Lém;<`2]vԻʹb8"XƯ?6NѦo ?a ASW Bkj+oHVdGJikvֆ7?!,$ &s4(?w6s1`6w%g*wx`3s/nUԡ[LP2~(~t ׸rHud:xˀ(Ou&OqzOi*á-tKm;1N/`jທb:@2*C2va)n߿ *D}ݧaq#Du\yLc;`C8{+E}hlnijfa$Ll{;S_uZ Isʠ`bYMz!j\xe׃GSfn]##V"p:);JMg{Ǧ;\;c+EgHFK>i\ Sٵ)?7Ia{1Lqy_!!jA7Ŀ  yUza:jZĉφ*Q iJ)O֟П,L2eFe߇=A*Z0S-(N䚚9QmyuN%'abBdRU:rm%s yARt7rmtbIg @C!ȋ-|HuKX"3ףq%1  3tGk]k#X(u7}aȞa= 3q_yGd:n!v^re|_BC'РDW)ĕ :bcP&մ1 -%Sk/UfF2":^m+/mx~ ]*iq@pj/.*RD؝ ?) L"6"ťGn1;0:&b{|6'r;y 1;leF `-t:ab&a9Lb[OՌMڤhG~yfd$* Kދg.M(+~١= }gv3=B~8ҽ"2 cč7Y}S"H-䌹|4AZx `'@B63h£ekZ /leeXWYU +uL,X(^eHwLڀ 733 vPIBOT=t5#gR`}p:aY.su|&Y4bۅV[.2ޘ.u@w@m8ʀg:_!vc-ҘӾ@`5F: .b6Px(,LLp?-Y!ߞ@ :sX '+R&aAi5\w{tO|Ï bm+4ĎS ufh7>,w ^p r4O= [Ѹ婌jnQz\.C"L)06;\6`.L~'9S$(pS*AFÿ:"'w6CC׹NTY 4%Zt 0|K]\pL&1pkAsQNPhvJkn77!)'ulKMWyPO/ )vmZhP(ۇ˶Z O=s`g!6|4hR  /kS$qh"Fώ3[H/hCUCAqi sPy!@P3h-t`'JPXai]=qyR/i09SeKZ+02*ӀE\2(F׆#W􂪾 rpˀC\U?y:WW9Z0-y#ylaIKs@sU j-} vܖw3AN DZZ0A++71o024V/|gZKA mg0dm@8:_9|q(%lVqeVYt[K;sڑ=L^;)OpE"t#z*Dr6@஁e/ yWp Ɍy=ZEE@kK9Pn}([okqEyJ ֍ie s€IC'pOO> Ϟt .PNx%|ho.[j #fFOvQ憴y"(8Aûaklݲ)^s':Xj0.8ehțZ3ilATDkPn>XU8POI^t nbP& %C<}Lo!ᇏmáFE)146k G GmЙ?={CD@Oߠ:xQIMph7rɭڑ0A@ pѤ/n(w6+vaća^\jsֱB;6i6FQ_J\ {* KsK 'F ]PT 칊8ip"j⮼H-rc "ی2g;C&^'}G Xthzt4(,4rP qvƷz _N{ G I#lxbqT >:q<鎂pRe`t p9 ʋ+t FRdVV4"PYD؈fbV0 %gƔ$!v?h3w@4p{CnfvKZ@mZR+L:DaQrN(vrN(>+U8dS1'ʥ}!/^49jLr,Jm2Cf/&io{<+LIn B'_w`90wi %7,G͊ʨm[6iց\p'@Ա(S䦊+ԑI<8-f=^׌EjC ⥠4E0BƆo!@uv[$i@>BK w-ބBpNDTՓf' N럖@|a9rS]@ԅ'!FK+{9\s9TUG@RrX':Qm{ʶt-p=F# H= a.=O1 *2RkYճ֙x([nYi(FFy܌EB*NV&!^5ܓ-RoaZqNN|q9&1y%N$jۻ !øFU9 iB[Vᄇ}=q0͚݅RW1n;[֍ p(rƄ jn>H fMK(b({ѓ j'7ob8Ÿだ2H2OW*9f>$Cޮ2IBo..8S `1Y#yd(-R܀(ր{7^pn4&88HW \ ȇit]J,sU\ZƁ"<UhuC\}tȬk<4a}Ŭn\]“ԑضG\ *♝3#kl 57)RV ស8ho"<} }w䱻[#ptwj 5b&$ ?3e.up#}5~c?TRB]А>_?$m Kp"hѩ#PvyǥvxsOٵb#ۗo9j3ʹYJnbk[jr[>ӹ,0D5k+AȜqz:g"cmTk^芊{v%/W>W?}`n‚&ѥH̠-j:XA2F]G\L2((3Xw Q=?앥% 8"}Ce?ː#ȗ=d"(dj#|*6Gq9Pjn;h/%655HF*xξvhZ%p]e5s$x9@G>rso6GqAܓ'`o>q6+@ҥǀ0nf픴5ᆷ.8ZJ n$U*-x]$@yA@Nms(dDsg&JN30 ND4ee1bȢz$py;Lr1=974Ep !y. כ:xm8#|?"Skg!3^U xAj88񮛟]yݒos`-sÂkAC^yl> ]i{h:xдn.lF<VO߁;Gp.$+ͽNҔ~&0ѫ0G0ύ|xx{_OHkp#NKĎ.ܦZʿƷ0ev`8x=-akBiyS]TB7>źPӝQ+],p^>h;| k[1؁CCZƻ̲Yqt 'Uk鞁B6ź IRc8Z׹hs*b z:.\~Ĕ N.XZ$gi)S:s}HE}ըxq>VLxR!jKuAۦFei77xQglx(%$5kMt28dEL|Ux/q f{K+&ZI^yw9חx+7cEٗ52vqn  4JďkhfԱRqwݍwp_8f#]0[I{y"r!&S 5D5=m9A/HxxgjJwR׸ 1ŧ9pʼn"@5 @Τagd H b|ጳ\4nbi'C5)AݲwC)r+JHiD2"Ҳ&H19 p\u&G$i;i5 jDt-9}dkC$%]+s@pi&Ih@2ry\>xp5mؚ S84xr8𮹙yuDNt(snB+!+ZCP_o3Y)x.dqrDt?`~mf-$bۀ3j8V׍6lom˨rL 5œ5$OA{wVةAI9nն]ښn!=9,T*RgBt5GWyx `()T򂈊Jz +ffqs֔vǦ%kKZM-X@ǕH+eͫ6kt8g;PdW>NB?l̵p2 ?[goCmAs8&&sܳV9Nkkr.G3JtWloSXd/f.h(vЎUK |P i%Ë H!L0>Etwö.%S@@mtN ħA#ӍcU =5yopixTQE&d *#qBs48c4^ռ>`2pŠaXneC(u4Jz㴎b)0i.i* %fݻHL,4Gw+op7bn,g!EBE<-Ksr[-{ZAG|#:JJ[7 rvp2ZQJaI%. ]ǀRZA4I\-ΚMn٭ jFMDs˧\KY\W=DvQ=n#5Pb`ņ{#dw.94ݼm.r'Tۣs&LI#^|m_tResΆ<82Ez;rY#{wyI Yqƈ@AU4)X.C;0Պ_U-8P$ݡ`nh5RViyiΛ-k%CdpKѶ.qj\S^)H*0 Optt S<+3pZEC "~-q$qSp+kw\~ Ҫ>g&\898ֻQH(ӴŴG,6#MeZA5gB I3O?Z$ӂ q#~T H5b#4\95a< u# q*y%rv2lvռ kZqWNcmv; ٸʧ+^4(ƭ$yơOkmZA<9~V×l2Ob Wwqpʤ҈&=`G#tYO&I% T( g8s_P6tnx.\YE)'KPuQa9%EO*5 a:I:EpֈuiZ,aį5Vɵm iEv.t$b~Qŭ  (Wr+QL97uƊ"7N=%c\M'WD@(KFX$r 99 >pAؾXp9VU9n>3 GXo4],)bQavߺOxX&hQ Vq)[W!mn<1 Q<9uI΁D&v#ԷK\>&$oz?C|OPZ斴(-$p%KYjHsm9?pFpPAl'XV |nqk۹~kHg[ո}UM؝/d>PbP!fۯjc4sɋZ% crrs(Dx(-!%Cc.k=HT}_Lggxת̠ܮm#-c" ᭎!WSon1Mf`ܙl6I rm||fҚ9#YK$lly mdGJ)EZS19$F4h\+#ۍ f'&#yͤz'1Šwm{vpe9$2 AB[D8mYi"@ˑ-QZ_]p=K4 'l "ZN%91P|XZ|AJza1زBk۷+p,pG:wZh-ҚGp;r)pWbn\gs$1j.d6Er+9 q3~_tfF /k]! xX"$tdK|%L|kOsܧo2vȢ=t%uPOˣtq`"{}.rd;*3B)~@J/]([vl1؈vq CAIA|홧!1J[o4Jp%1B(mB3۩IA: V߻Š P%pz:y |˚3Nd%(>gwfk4j ?m}l.kX ѥ"#Q0L>_Kn HƏEKwFmJ'*;i bX88@E[x=\<MqM3y9 TVgeF@3r!]kF+24FzI%l DA&[~ >09֗hc/3@S42vd(k l=CUIbzdځoCk 9WܧNj[Js-]:|6u<>;V:R7aʵZw3?G ]/pNQ\?wuOhdd=jIt̨fcS^o\q:z!+m#e 6fާgq^k rB$qDDL׀cquqX>Z[+Hqۘ(..p IÅyc%.u!1C,Q-(h˕<`9icsS5&* >#ƛ(bpEooIocsGk3􄎋і1#PIGE(2{XmF\k2#GmsJ/>ǶzK*aW6HUl  ()ly*Fm2ћ$ p> =V[Ӷ[Q\&DPnyok /nJWCuh^h>!lϛ艠QIܢ/xv$pN&wmkSżˆ2W40PTPl,m g3nW% \{uPV1o|/l,g'1N#V;#ӹl۸ǙyjUic\|);7ďaH*Ʈ:#>S5v̹e%a X:j\s^mpL'UuywS}y7J @]=|3춾?I kTG%wL P۟\=TF\3:^V 8(~]=Y˵99E,'/`V]/D2v LɪAWfB\#˖k`yBxa@ݭ̈́1y5f1S Q\O.lNpy)O J>u ʊ[wT~`T >햨vSt(Bh+&Vn|H#w/+PYJO$ \8(&˷(jz%$W0Fga-ˆ젍sïZdv{?*:eT?PV"1;yaPIì /%%lHuqctS@]\hْN'2~!L1T4! *Iq&`Ic謜PAU !##*nO7OsQ:S#.s)ImjwKw b|yoډT̎W^F7GT!nZۥIb Z:t{Y75n-Q+uNt^:x\E+]#49^qjsc_; ,69҃N8Ew?_ܓɮ>h`#YjYm0Ы>!ٶotRv6X$pk9dT3w;=[&d:\ IA,`4SPeqlVXrp_(edMq͛H̢hm[+grl1B9c@}S]YAdih(ZQB50tN,P+# (-ϱ,Bn}Es'ͺh[͚X;>|Gn.Z<ARp1497q* ½s|NwgV,̊D[Ĕ9yXurz~㻗kඓ]ۼ߅K|+ŹsTI4FO ұ}Q`xCId [=΍8>C'LԿO< xa_G%%uHq hߤvXvH/Ź@UܗnK~/3b@L(3^{{PEI%n?} }͉^hF1P1|*sUs"'@K Zt5jUĠ9^^fڒJ PiENƁ^đ& PLvhFс9olrFܚ`"wgTcX#zscN.L\&һk'Мr"[&Bä+4mѶm{{R4+ؒrBwgBM.?I0o?JZD^D b f9Ʈ:9yeC>H\4;seipS(νq0]V=Yllo.@'j$呮{F!@ow8c$an_N: 8E+ۙEr|Oj;!{:-Mhv'@q)k!BN8?0W.!x 6^{dlԎ@Zs{ ;^>gS$%|/yI48 `1(dg>ܿ#\! pI#Mc/p<1-#:!̬CPtPY #[x1<(!) _Nߨo&h>E'h4 C@?uQ)T>!V$+0@Ĵ]ũ4rǝ ԋAJ N2;>Li_)ˈ4 }Ml7v53`nZǕ8XIϼcdn!a'Nqfz[k~۩"8KĄ=n0I_UKa=h r[r|g+fWHѓπ|1Af.$sPE ЙF\p% cւZSL;6кH[1oa*e ].d<]ƪᴽuᥭowQ Ao[K\ 8*o(t7H dnq\WP?";;080ρJ1Gj5p_ƒSI%lzsIsB?u`N/uڮ ( -rˉ;pku؜z 7kknHT m(€\ӫhnۅ\E g$skGƒ /^#6;kD, e\ g_.Hj 1sjYOv׮$ .hP{RٮYUʊTn=M=Agambas-3.16.3/app/examples/OpenGL/Md2Model/knight.md2000066400000000000000000011613541411575327000220730ustar00rootroot00000000000000IDP2m3z DD"8BTG  yqtkt6&688i&*OcA_@BEB9bF_9`8*c_KBK* -[AA[iW5NaN-W?27Aa6`b`19c"B*6kck*AY4B58zaz ||_8]:RQED::iicc]]]]TTBB::vvppkks{ci{DR(+|&u6(j!||eexxmmxmemmm{fo]vktNNAo<<ANtAf]]kbeTAAb<k< ##8..82*6(}}36 [`_;F=HJSE@MRZWU#"%,-,6"-8"- 8||ppdd^^XWKJQD=>DQ}-e-}9-}}ee } 9                                !" #$%&$#! " ' !"#$() #"( "%%"&&"''"!%&(*+,)%(-*,%* *,+)*%-,*! *./0+!*1.0+'!234,'+532'(&.0/,('10.-)(678.)/679+*.10:0+.;1:1,+<5201+=<2,-(1:01-,;:1/-296>/3.9>64.3?:@0.4;:?510A<=450BA=52-?@:15-;?:2/>936>C736D@E437?@D854FAB784GFB892DE@582?D@9C6C76DE!7D!87$FG7%$G89D!E8!D$'H:;( ):" ($;HI:J&##:K&J'3/>929>C).*768)-/769;#:LKJ$#;MKL;'H<=>NOP?<>QNP@?>RQPA@>SRP@ABTUVC@BWTVCDEWXYBDCVXWED=YXO<E=NYO=A>BA=DB=FGHZ[\IGF][ZFHJ^_`KFJa^`LJMb`cKJLa`bILMdbcGIMedcNGOfghPNOifhPHQijkOHPhjiNRQlfmCEHWY_OCHnW_G@CoTWOGCnoWSITp]qGM?ecQ@G?ReQJ<?`NQMJ?c`QHE<_YNJH<`_NNHGfrgQHNmrfSLIsbdSKLsabKSTastRPQlikRNPlfiFTIZq]TFKt^aUVWuvwVXYvxyXVUxvuZ[\z{|YX]\Y][WY{wy]UZ}uzZ\]z|}W[Zw{zWZUwzuYWVywvU]Xu}xY\[y|{^_`~`_abcdbdefedfdghijhjk_iaaihlmnlno`akkah_^j~_jijonjnfnpenefmbppbeml^~m^b~kjggjfgdcmpng`kb^c~c^`~lo^~^oj~gc`qrs~trquvwxuwuxyzuy{|}~{}t|r}|t~tq}t~{sr~|{r{y{xyxwxws~ws~z{~y{zvuz~qzvsw~qsv~s~{s~qvz                                            !! ! ! "#$%$#&'" ("$)*+%)+!+'%"!)#*&($#$"(& #)%$%&$!##"'% *#'%'&%"#!'+*,-.&'(-/01,.)&(/10'&(234526*+,374+*,325-+*8-,.'&9/-9:1./&:;,0/&7:9*/.498568*,.75;1*/864-890.-1/9&'.947.,*8;5./*,;8&/.573*1-;:7/01,1:&)0.01(2)462<=>=<?>@A <>BCDECE?!?@C!"D=E<BA$#AB> ?E=A?<#!$@>= %@=D%?A@!#"DC@FGH('&IJGFHK(&)IKJ(&'LMNONP,+*LQM,*+PNM*+-HGR&'.GJSKTS&/.HUT&/0STQ./*RSLROP.,*UPQ/*1LORSRGGFISJK.'&QLS*,.PUR*/.RUH./&MQP-1*QTU10/TKH0)&KIF)2(NOLVWXYVXZYX[ZX\VY]^[[X]_V\`V_\YZ_\ZW^][`Z_Z`^`[]XW^WV`^Vabcdbaeafgbhcbghbijghkjheldaedlkhliddibefjgfccfaejklekhilgjfs=(=XS>\$8?'Rstand01u\ꊁl4t[ix~2z,NR~IetOijoUk`iwj^@s—V`[|oFyuJq~+O"iVS~PkՖloF=vhdgDS{+Hy|{,}RNsGUsWR9e_vMnOtzgBwk tɉV1}h8^;ć*OȐd*S,haE ]QK\4]hGWK[8qZ>,pbfh]urvw l$1(:~!1z'v*qN&qTg)-o%v# rs f\u83|32s/oM'n]'mJ-i>!dΌMǸ‡w兛|Dp\Dwr]le "M,0%G>?yJ E74Me `3_J5q& e6{:$$y6 l4 s#X*9GNhA-bH<f?uMv\o_9E=aI7SfW{>Ot?X[rr:JJdo U W~N)<||4x`dqTc$a C@e}1d՘5ZSgx]7nYV\qFtZbYfYpk;bPzAc{ReDi!Uxx}2|)lF_Vh_[YY^\Bd]i\)cG gAee=dSmdq=hj]vlfq lTfvfakrjn(hF>*:F1~V-1P-F\){FWW= ^.L0VL\}'sV}wc%5o2|(J>M.@7)D]'L#`^,FF+jKhCR\C5tcm:4^saLWH* ؊Ǣ݊_󐜔؋G?(!ơ~ȓԤ׍_ߗ?ǭ_Դ4kΪ:q!nו`ȖcK;ڢ5dĀi'4dw| J̍sh$_лK5b{ш]tYɍ:cc< ZeF rQ{V 4OS #dP-%>"ȍT _-r/0xN ]d,@YplGIjP1@Q%I=4g2:#9Ǎi6>`n6ЂoOL!dT> n>;Bw5X7l'ZnW ?Zs@^1>I6RA&Db*aM"R}O_?G"vv-T=Mv,\GHFFD8]58Ru+R>{F1JhQIgg1==mS>8y>stand02pYlg7pXixz2{|+PRGhߑLlim_h_gvf^@sVaX{jFypJr{+O"iHTOmԖloD=vj~dhfT{+Iy~{-SPsGWsVS8e_wMnOu|gBwktɉV }h8\<Ç)Pǐd*R-hbE_RK[6]jHWM]8s[>,pbhh]trtul&1)<}!3z(u-pN(pTf+%n'u# qzf\t75z=3r0nM'm](kJ.hK"cΌMǹˆw冚|D p\Dvr]le "M,0%G>?yI D84Me a3`J5r& f 7{<$&y6l4 s$X*;GNj@-bJ<f?uMv[o_9D=`H7SeW|>Ps?X[rr9JIdp T X~M)<~~{4z`cpTe$e'E=i|/jӚ8UTsuY6kVU[qFoX]ZfzUp~f;\Pz>g{Og~El$Tzxy2w)gF[Vs\[YV_TC_]-f[)\G _@e\=fSn~pu>h~j_{ojt ~hT|bt_a~gmcf+aEA(>D5|V+5P*!C\&{CTU? [0K3VJ^|)rV{vc&5n4|+H@,B4-D_'I'`\-FD,jHhCS[C5tcm:4_sa=WH*ȿ ؉†˄ފ_ٌG?(!ơ~ɔԤ؎_ߘ?Ư_Ե4kΫ:q!oؕaɗcK;ڣ5dăi'4dw| J͓si$_ϼK5b{ш]uYɍ:cc< VeC rM{S 4LP #`N-%;#ƍR!_*r2-xK]b-@WpkGIhO1?Q$K;4e2:!;ōh7>]n4΂oQL!dU> n@;Bw7X7l)ZnW"?ZsB^1>J6RA)Db,aM$R}Oa?G#xv-U=Nv,\IHFFF7]5:Qu+T?}F3JhRKhi1=>f\T>8_Ì- stand03kWj|b8lVgxv2{w+RSEkޑJohk_e]gsb^?tUaXzeExlJsw+O"iHV"NnӑkoD=wk~dhfU|~+Jxz.SRsHYsTS7f_xOmOv}gBvktɉV |h8[<‡'QŐe*P/hbEaSKZ8]mJXO]9u\>-ocjg]swqt|l&1*=}!4y(s/pM*pTf-%|n(s# qze\r76y=4q1m(l])jV/fK"b΍MǸ w军}D p\Dvr]ke "M,0%O=?yI D5u?@=AJ;>:4Me b3aJ5s& g 9{=#'y6l4s&X*=FNk@-bL<uMv[o^9C=`H7SeV|=Qs>X\rr9JIdqT Y~M)<~v7||`cnUh,j'G;n|.qқ<QUrpV6fTUZqEjVWZgtQpzbVPz;lLj~Gn$S|wu1q3`EVWsW[RR`LE[]-aZ3TH VAbR>gSo{py?i|y`rox {cTx^{Xg{b}h"\_+YCD&BB8{V)9P&%@\""t?PSB W2H6~VF ^z+rVxuc'5n5{+EC+E01D`'E*~`X0FA-jChBSZCÍf7>Zn0˃pSL!dW> nB:Bw9W7l+ZnW$?ZtD^1>L5RA+Db.aM'R}Ob?G$zu-W=Ou,\KGFFH7]5T>e7astand04fUjy^8gSswr2{r)UTCnݏIqgh_a[gq^^?uTbXw`Ewg@ss=O jHX"Mpҗkoe=xm}difV~~=Kx z/TTsI[sSS6g_xPmOwfBvjuȉW |g8Y=&SĐf*N0haEcU>X9]oLYP]:v]>.odkg]{rulswl}l&1*}>|!4y+p1oM~+oT}e.~%vm(q$ pzd\p7~;6w=z4p1k~(k])hV.dK"aΏMǷ w䆛~D p\Dvr]ke "M,0 %O=?yH C5v>@>AJ;>:4Ne b4bJ5s& g :{>#(y6l4s'X*?FNl@-bM;uLvZo]9C=_G6SdU}=Rr>X]qr9JHdrS Z~L)<~p7}v`bmUk,m,J:rْ.wћALVrlRdaRUZqEdUS\g} nOmw^PRw:qJmJq%T}vr1l3[ERXwT\ROb"EHW]-]Y3MJ NCbJAiVoxi|?izbߒus| x^TtZRgw^zc"WX=R@H#G?P"+;!}\'t:KPD$S4E:|JB#^w-qVtsa'9|n6z+BG)G,5Da'@.}YT2F>.j>!sBTXBVn,ɃpTK!dX= nC:Bw;W7l-YnW&?ZtF]1>M5RA,Dc0aM)R}Od>G${u-X=Pu,\LGFFI7]5>Qu-XA G7JhSOil1H=>YU>7jstand05aUuZobRsvo1zn=WVBq܏Htff_^Zsn[]?vTbXu]duc@sp=P jHY Lqяkoe=yn}difX}=Mx!z0UUsJ\sRT6h`yQmOxfBujuȁW {g8W=$Uh*L1haEeV>W;]rNZR];x^>/nelg]vqvgqqk}|l%1}*z>{!4x+m2nMz,nUvd-|%pl(o$y ozc\n7|;6u=t3o{0jw'j[(gV.bK!_ΐMȷ w䅛~D p\Dvr]ke "M,0 %O=?yH B5w>@>AJ;>;4Ne c4bJ5s& h :{?#(y6l4s'X+@FOm?/bN;X^qr8JHdtS [~L)<~~k6}r`alUl*p+M:vؐ/|ЙEIXrhPp]QUYqd`TO^h| iMms[LTv9uHpL"s%T~uo1h4|WeNYwQ]RLc"?LT^-YY4HM HEaCDj~VpviFjxcޏwvu[TqWMgt[x`!RS=N>L M<@xJ#D~Q06%{]-4E"yMG$O6B>{J='~]s.pJor\'9v~n}6z+?J(J(:Db,;3{YO4F;0y8$sBTVB9ucj:4]se=\H*Ⱥ օ†ɀ_ۏG?(#ǣ~˖ԧڐ_ߛ?ǯ_մ4kϪ!rۘd̘cI;ڥ5hÃi$4dw| A͓sm$@ɽK5c{}Ј]v\ɍӋgc< Fe5 ˡ={F 7@A %OE//2(H$_r<"v@][0@KigFIdJ1:Q R36\/͌Ca7CRn(ǃpVK!dY= nD:Bw=W7l/YnW'?ZtH]1>N5RA.Dc2aM*R}Oe>G%}u-Z=Qt,\MGFFJ7]5?Qu.YB G8JhTQjn1(=>U>7k&Xstand06^VsYo_Ssun1zl3YWBtۏHvdf_\[slZ]?wSdXs[dta@rn3Q kHZ Lsєkpe=zp}difY}=Nx"y1VWsK^sPU5i`zRmOyfBujvȁX {gU>#Wi*J3haEgX>V=]uP[T]0nfng]povapjkw{l%;x*w>{#4w+i4mMu-mUnc.z*il'm$r nxwb\l7{;6t=n4nu0iq'i[(eV-aKx!^ΑMȶ w䅛D p\Dvr]ke "M,0 %O@?AJ ;>;4N e c4bJ5t& h ;{@#*y6l4s(X+BFOn?/bP;dM]qU_}UMi}Yjpfo8h{d^y{<|j5{Z|yJJtq_`L)X`qr8JHduR ]~L)<~}i6}o``l`n*r+O!;yؐ0ϙIGZuePp[RUYrd]UM`h| eMhqZIVv:yHrN"t*Utn1}f4yUeL[uO_RKe"G&~u.[=Rt,\OGFFL7]6AQu/[D G:JhUSlo1=*=>c'V>?7t'stand07]VrYo^Ssum1yk3ZXBvۏHxdf_[[skZ]?ySeXq[dsa@rm3R!lH[ Ltєkpe={q}djfZ}=Ow#y2WXsL_sPV5k`{TmOzfBujvȁY {gT?#Yk.I5saEjZ>U>]wR\U]={a>2ngog]invZockpzl{$;s)s>z#{3v)d5lGp-lUfc,y*ak&l$j nxna[j6y5r>h4mn0hj'hX|&dT+_Kp ]ΑMȵ wㅛDp\Dvr]ke "M+0 %O@@AJ ;><4N!e c4cJ5s& h ;{@#*y6l4s)X+CGOo?/bQ;fM]rW_~WMi~[jpgo8i{e_z{<}i5|[|{JJur_`L);f=tKvYoŨ[9¿AL^F6SbT#Xaqw8JHdvR ^~K)<~|ho}n``l`o*s+Q!;{׎0ϙKE\ucPpYRUYrd[VLbi| cNhpZGXv:{HtP!u*Vtm1}e4xTdK\uN`RJg :RQa2V[4BQ BJaG'u.\=St,]PGFFM7]6CQu0]E G;JhVTmp1=BA>IV>7qOstand08\WqXo]Twvm1yj3[YCwۍIydf`Z[sjZ]?zSeXqZdr`@rm?S$lH\ Muєkpe=|q}dif[}=Pw$y3XYsL`sOW5la{UmO{fBujwȁZ {gS@"[l.G6saEl[>T?] yS]V]>{b>2nhpg]bnvTn]~kiyju#~;m(o=y#v2u)_6kGk-kU]b}*w*Zk#j$b mxe a[i6~xz3q>c3lh/gc'gXv$cT|(^Jh\͑Mȵ uㄛfp\Dvr]ke "M+0 %O@?AJ ;>;4N!e c4bJ5s& h ;@#*y6l4s)X+DGOp?/bQ;Xaqw8JHdxR _~K)<~|go}m``l`o)t+R!<|׎1ϙME]ubPpXSUYsd[WLcj| bNhoZGYv;}IuQ!v*Wtm1}d4wTdJ]uMaRJh 9SQb2U\4BS AKa2/*0@)_(I%v6YU4@@icEL`H;8T[-;U/ʊN\9CGm'ăpYK!d\= nG:BxAW7m3ZnW+?ZuL]1?Q5RB1Ec7aM.R}Pg>G(u.]=St,]PGFFM7]6CQu1^F G;JhWUmq1>-`>IV>7Gistand09[XpYo[Uwtn1xk3[XByۍH{bg`Y]sh[]>|QgXo[dpa@qn?R$kH[ Lwєiqe={r}d}jf[}=Px$y3WZsLasMX4o`}TmOzfBskvȁZ yhQA!]l.E7sadn[>R?]{T\W]>}a>2ngqg]Zm{LnU}y`xjn!}:g'j??AI ;=<4L e c3cJ4t& i ;@#)y5l3s(X*DGNq?/aR<X`qw8JHdw‚R ^~K)<~zho{n`^n`n)s+R!;׎1ϙMD^u`QpVTUXudZXLdi~ aOhn[FZv;HwQ!u*Vsn;{e9uTbI_uLbRJi 8UPc2T]4AT @Ma;Mk~VouhFjy}eݎz{oZTjWߏwKqnZs^$xP}P?|J5Z~b0PwJZ~QH"7zX F11/BP,@>5KzJ*7|]^0mJTnZh$8Zzmj4v=6W&&VNGf,)CzR?=E17y%4rCWOB8uce84Zrh=^Hޚ/ɴ{_ݐG?(#Ȥ~̖ӧ ڑ_ޜCȮ_ֱ4kШ!wܙg̙cI;ڦ5kÃg$Fdwᐦ AΓss$_ǾK5e{|j]y`ɍӋlc<3b%ǡ*Ӓ5710-:y;3/(2=*_+L(v3 YR4@<iaFL^H;7V]+=R/ʊQY9CCm)ăoZK!c]= mH;BvBX7k4ZnV+@ZsM]1>Q5RA2Eb8aL/S}Oh>G(u-^=St,[QGFEN7]5DRu1_F F'=$V>L7:{nstand10ZYn[oZVwsp1vm?YWB{܍H}`i`W^sf\]=~PiXm]dnc@op?Q$iHZ Kyєgse=yt}d{kfY}=Ox$y2U[sJbsLZ3q^~SmOxfBqmtȁY viOB!`k.C8sbdqZ>O@]~SZW]=_>2nerg]Rl{DmM}yXwjg|:a%d;x-i/s=R7jG\,jULao%u)Jiqh%O l}R _[w gdmvn.oCX2j\-eMU%eXfaTm"\AX[̑Mʲ u䀙~Dp\Drr}]gb "~M+0 %O>@AH;<<4K e d2dJ3u& j ;@")y4l2s(X)EGLr?/_R<X_rw8JHdułR ]~K)<xjoyp`]p`m)q+Q!;؎0ϙKC`u^SpUUUWwdYYKfh `Phl\E\v:HyP!s*Urp;yg4sVbH`uKdRIk 8VOe2S_4@V ?Na:NjVmwhFh{}cގxyn[TiXߏuLqm\q`$vQ{Q?zL3]g-SxJ_ M;zXK5,1?Q,e.9"7rBXMB8t^b84Vrg=^Hݚ/ʳ}x_ݏG?(#ǣ~̖ҧ ڑ_ޛCʭUױ4kЦ!vܘgʙcKNjئ5i}g,Fdwᐣ @st,_ȾK5c{~j]x`ȍӋlc<0b#ȡ'Ԓ2E/-/795/&4;+`-O*v0!YO5@9i^FL\H;6X`)?O0ˊTV:C@m+ăl[K!a]= jH;BtBX7i4ZnT+@ZpM^1=R6R?2E`8aK/S}Mi>G'u,_=Qt,ZQGFCN7]4DRu0`D E =U>7xC\stand11ZZm\oZWwrq1un3XVA|܍G~`j`W_sf]]=OiXl^dnd@nq?Q$hHY Jzєfte=ws}dyjfX}~=Nx#z1T[sIbsK[3r]RmOvfBomsȁX uiNC aÐj.B8sadrY>N?]~RXW]<^>1odrg]Kl>mG|yQvja{:\#_9w%c-s=M7jGV+iVE`i!u.Dhkh*H k}J _ogdevi*nCT1iW+dMP$e``Tg[ASZːMʱ u~~Dp\Dpr{]f` "}M+0 %O<~?yG A5t>=?AG;;;4Je d1dJ3u& j ;?"(y3l2s'X)DGKr?/]Q<X]rw8JHdsłR [~K)<wkoxq`\q`k)o+P!:؎0ЙJB`u^SpTVUVwdXZJfg _Phl]E\v:GyO!r*Uqq;xh4rWeHauKeRHl 8VOe2R_4@V ?Na:NiVlxhFg|bގwwm\ThYuMql\pa!uRzR?yL1^j"*UyJb Q=|XN7)2>R,:?.P|J"<~XQ0lVFn[[!}8Lxh^1u?3Z&&[TGg*$H|R9>e-:8rBYKA8t^_84Trg=]Hܚ/˱{vߍ_ۏI?(#ţ~ʕѧؐ_ݛ?˫_ׯ4kѤ!uڗgșcKDžצ5g€g,Fdwᐢ @st,_ɽK5b{j]w`ȍӋlc</b"ɡ&Ւ16.,/685/%49+`.P+v/!YN5@8i]FL[I;6Yb)@N0̊UU9C?m,ƃkZK!`]= iG;BrAX7g3ZnR*@ZoM^11E^7aI.S}Li>G'u+^=Pt,XQGFBN7]3DRu/`C C;JhSVit1>>f=>U>7PN6stand12ZZm\oZWsqq1to3WUA{ݏG}_j`W_sf^]=NiXl^dme@mr?P$gHX JzҔete=ur}dwifW{~=Lx"z0RYsHasK[3s[~PmOtfBomrȁX tiMC!aĐi.B7s`drY>M>]~QWU[;~]>0obqg]Dk8nA|yKv[z:W![7w%^+r=G6jGP*iS@_du.?heh*A j}D ^ggp^ ve&nFQ0iT)dML#d\`Tc[BNZȐM˯ r{}Dp\Dorz]e_ "{M+0 %O<}?yH A5r>=>AF;::4Ie c1cJ2t& i :>!'y3l1s&X(CGJq?/\P<X\rw8JHdqĂR Z~K)<wlowr`\q`j*n+O!:ِ0ЙIC`u^TpUVUVwdXZJff _Phk]E[v9GyN!q*Tpq1xh4rWeH`uKdRHk!8UOe2R_4AU @Ma;MhVlyh}Fg}aߎvv}m]ThYuMql]pa!uRzS?yM0^-k"(V{Vc S?~XQ8'2 ,P}V=XK/lV?n[V|8FxhY/t?2Z&'[UGf*#H}R7>e,:9rCX J@8tc]84Qrf=\Hڙ/̰ yu܍_؎I?(#¢~ǕΦ֐_ڛ?˩_ح4kѢ!tזfĘcܕKDžԥ5f€g,Fdw @wt,_ȽK5b{}jXw`ȍӋlc<.b!ˡ%ג1E.+/585/%49+`.Q+v.!YM4@7i\FLZH;6Yb)@M/͊UT9C>m,ǃjXK!_[= hE;Bq?X7f1[nQ(@ZnK^1;P6R=/E]5bH,S}Kh>G&u+]=Ot,WOGFBL8]2BRu._B C:JhRUgr1> =T>7a)stand13Z\n_o[Yspt1tr3V T@|ݏF~`m_Xasga]L?]~PUV[9~[>/oaqg]=k1"n;|yDuUy:R!V8v/X,q=B9kGI,iS;^^u5;g_h*:i{> ]_gpV v`%nFN1h'Q)cGI%cW`U_[BJYMǏM̯ Àr{}D p\Dnry]d_ "{M,0 %O<{?yH B5q?<@AF;:<4I e e0dJ2u& k <@!)y2l1s(X'DGJq@/\Q<XZrw8JHdpăS X~L)<woowv`\s`i*m+M!9ڐ/љGDau`VpVXUUydY[Jgd `Shl`F]v8FzL"o*Rot1xl4s[eIbuLfRHm!9VOf2Sa4BV ANam/ɀiYL!^\= gF;Bo@X7e2[nP)@ZlK^1:Q6R<0E\6bG-S}Kh>G%u+^=Nu,VPGFAM8]2CRu,_@ B;JhPUer1Ɍ>ު>S> 7ystand14\^odo]\spy1tw=S R@|ޏE~ap_Zdsie]uOwN#Q9u/R-p=<4I#e g0fJ2w& l >B!,y2l1s+X'EGJr@/[R<XYrw8JHdoÃS W~L)<~xu6x{`\vUh*l+J9ڒ.љDFbrcZpY[UU{dZ^Kgb cVmmdH]v7EzI"m%Pnx1xq4u`eKcwMgRIm"uD[ IB8tc`:4Twd=ZHލؗ*ͳ }†xً_𑜠ՌG?(#~Ĕͥӏ_ؙ?̧_ج4—kҢ$sԕf˜cٔKDžҤ5e€~h,Fdw @wt,_ʼK5b{|jXw`ȍӋlc< 0 b"ϡ'ے1E/#-/79:/&990`2U0{.%YM9@7i\JL[M;8^ f+EN5ъYT=C?!m1ˀhYL!]]> fG;Bo@X7d3[nP+@ZlL^1:R6R<2E[6bF.S}Ji?G$v*_=Mu,VQHFAN8]1DRu+`? A>BLS>7^Sstand15_ajqi8a_so~ t})PO@zޏD}ct_]gglj^<NmXrlErrAn=O fVT"J|ԗdxe=qs~dtlfSw=Iy{-N[sDcrLa 4xYMnOpgBnsrɄW soOIŇ"eh)BkG<2hS2\Qu02%eRi.-g3[XOhmGvV#oEH2h,J+cIA(bWM`UV\BCXƎM̰Łw}}D p\Dmy]d_ "zM,0%O=x?yI C5o?tL{Zo]9B=_G6SdU#v=Ot>XXrr9JHdn„S V~L)<}x{8x`]xUe,i,G8~ڒ-љ?Jbrg^d^^UU|E]`Lg_gZmniK^w7}DxEj%Mn}1xw5xfENcwPhTKm"@TRi-Xe3HV IObDMdViiu?c\nlsqjUme|]gpiso"{bd=^,d-r"!^Vl]J[C 98T)4A %XVGW96kV,(nF#zd4whI3r?1]&*b[Ji)MR3Ae,BŃ@uE\ ICotcb:4Uwc=YHݍؗ*͵ Æz؋_ԌGߘ?(ߢ!~ēͥҎ_ؙ?̧_ج4˜kңq$rӔecؔKDžҤ5d€}h,Fdw @ws,_˻K5b{|jXw`ȍӋlc< 1b#С(ݒ2E0%./9 :<.&;:2`4V1{.'YM:@8!i]KL\O;9_ g,GO7Ҋ[U?C?#m3̀hZL!]]> fH;BnAY7c3[nO,@ZkL_1:S6R;3EZ7bF/S}Ji?G#v*_=Lu,URHFAO8]0ERu*a> @=KhMWcs1>Q>.R>7Astand16cdjto8fcgn t+MLAxߑD{~ex_ajgoo^<×NnXtrEsyAn)O fVR"J{ԗdye~=psdtlfRv=Hy{,M\sBcrLb 4xYLnOohBntrɄW spOJƇ"fg)C=zeduVKLB[~LQX[6XA+p]rh])&k-p+|x1tDuD$~ H;t/G0n+1@lG64hN/ [Kv0/(dNLi0(f/ZXGhm?vQ"oEF2h,G*cI>)bWI`UQ\D?XGƎM̱łw~}Dp\Dmy]d_ "zM,0%G=w?yI C5n?L{Zo]9C=`H7SdV#u>Nt~?XWsr9JIdm„T U~M)<|y9w`^{Ub,e'C8z{-}Қ:Obrlc6caUU}EacOg]k_pqoP^w7yDw|Af$Km2x~.{nERdsShTMmGRUj-[g3NU PNbKLaVhpo?ayZifmtpUpktearouu"~jl+f,d/r! `Vm_ L\D:6T)3A $YVIW38lV&*oA$yd.wsD4rC1]&+c\Kh)MR2Ae,CƃAuF\ JDoucd:4Wwb=XH݌ؖ*η قÆ}؊_ӌGߘ?(ߡ!~ÓͥҎ_ؙ?̨_ح4˜kҤq$rӔecדKDžҤ5d€}h,Fdw @ws,_̻K5b{|jXw_ȍӋkc< 2b$ ҡ)ޒ3E1'//; :=.'<:3`5W2{/(YM;@8"i]LL]P;:`!h-HP8ӊ[U@C@$m5΀gZM!]^> eHKhLWbs12>C>UR>k7bvstand17ghvv9jgim s,IIBuߖEyf{@emgru^<×NnXvyFtKm+N"eVPKzՖdyD}=osdsmfQv=Gz|+L\sAcrMb 5x XKoOnhBntrɄW spPKLJ#fg)C=zfEtUKLB[~KPX[5WA*p\rh]#(l/q'|x,s? tA$} D;t.B1m+,Bl05hN,"[Ev2,*cNGi0$e+ZX@hh8uM pdC2h,E*cI<)bWE`_N]D=XGǍMͳƃw}Dp\Dmy]e_ "{M,0%G>w?yI DM{[o^9C=`H7SeV#u>Mt}?XVsr9JIdlT T~M)<{x9u__}U_$`'@:u{.wҚ5Tbqqh6heUU~FefSgZpdpsu;V^z8tFt|>b$Il2w.~uFWdsWiTPlNQXk_i)UV XOeSL_Sfpj=_yWtd_gvvUsqtnatuv{ru+p+d/r!aVm` M] E;5T)2A"ZVJ.:lV!,o=$xd*ws?5qC0\I,c\Lh)MR1Ab,CǃAuH\ JDoucf:4Ywb=XH݋ٕ*ι لĆ̀؊_ӌG?(!~ÓΥҎ_ؙ?̩_خ4Ùkҥq$qӔdcדKDžң5cÀ}h,Fdw @wr,_̻K5b{|j[w_ȍӋkc< 3b%!ӡ*4E2(1/< ;>.(<;3`5W3{/(YN;@9#i^ML^Q;;a"h.IQ9Ԋ\V@CA%m5πgZM!]^? eIJv,URIF@P8]/FSu'a; @>KhKWas1^>`>K^R>m7ڮstand18jlx|9nkil q,GHDrtFvg~@hpisz_<ėNn[w~4tKk+N"eVNLxՖeyD}=nrdsmfQu=Gz|*K[sAcrNb 5x XKoOnhBotrɄW tq8QKLJ#ef)D=zfEtŽTKMC[}JPX[4~WA)p[ri])l0r#{x(s; t=$| A;s.>1m+)Cl,7hN*$Z@v2*+bNBj0 d(YW:hh3uIpdB1h,C)cK:)bWB`_J]e;XIȌMʹƅw停}Dp\Dny]e_ "{M,0%G>v@yJ DMu}?XUsr9JIdlU T~M)<{v5sU_U[ \ =.(<<3`5V3}/(YN;_9#i_LL_P;Iw,URIF@P9]/FSu'a; ?>KhJW`s1#>i>dR>7ʇstand19mox5qnbj o'EGFpuGug@jrit}_<ėOn[w?tHj,N"eVMNwueyD}=nrdtnfQu=Gz|)K[s@crNb 5w XJoOmhBotqɄV1tq8RJLJ#df)E=zgErŽTKMB[|IOX[4~VA)q[qi]*l1r {x%s}8!s;$| >v@yJ DMu}?XUsr:JIdlU S~N)<{t5pU_UX X ;>n}2kҠ/ԍ\cgvq4okVV~?lmZiWwnou1_`hIw,USIFAP9]/GSu&a: ??KhJW`s1>>&R>Ϊ7ostand20oqx5rppi n'DFGnuHtg@ksbt_<×Om[w?sHh,M"eVLNvueyF}=nrdtnfQu=Gz|)K[s@crNa 5u YJoOnhBotqɄV tq8SJƇ$be)Fa_G^e9WIˋM͹ ȉw农|Dp\Dnz]f` "|M,0-G>v@yJ DG*;:E4J*e m1kJ3{& qEI!3y3l1s2X%HHJrA/[S=Mu}?XUsr:JIdlU S~M)<{r3nU_UV U:?lx4hҠ.Ԕ_cgxs4qmVV~?mo\jUyq6u1bam>kvKq9X"Hh-t*?agi_kYWl_Su`ngo,dY jUEfPXSa6\+[lRwXQXwVw}wbv~v'(d/r!aSm`O] F;2S)/@ZSK&_$g/HR6ӊ[W=CA#m5πhYM!]^? fIIw,USIFAP9]/GSu&a: @?KhJW`s1}>J>%S>7 ?stand21orx5sqphm'CEHmuIsg@ksbt_<×Ol[w?sHh,M"eVKOureyF~=ordvofQv=Gz{*L\sAcrO`5tYKnOnhBptqɄU uq8SIŇ$aɐd*G9)bR>a_G^e:WIΊMͼ Ɍw剛{Dp\Do{]g` "}M,0-G>w?yJ DG*;;E4J*e m1kJ3{& qEI!3y3l2s2X&HGJrA/[S=M{[o^9D=`H7SeW#u>Mt~?XVsr9JIdlT T~M)<|q.mU_UU"T:@jx5eҠ-Ӕ`bixt4rmVV~?nq\jTys8u1cam?ivKq9W"Gg-s,?bgi`kYXlaSu`nho,eZ lVFhQWS`6Y+ZlQwVOVwTwwdv~u'&e/s!bSnaO]F<1T).AZS K&!>S>7<ƚϤstand22osw5srpgl'BߓDHlwHrg@lsbuB<Pl[w?sHg,MeHKOtrfxF=ps~dwpfRw=Hy{+L\sBcrO_5rZLnOogBptpɉT vq8THÇ$_ǐc*I;hiEnRKRC]yHQY]5X>*p]rh])j0p!zx'r}:"s:<&{ ?=r.<2l+&Cj*6gN-'Y&;v1-.aO= i< #b)WW2fz,sFqpD.i*E&d><(bR@`_H]e<WL҉M ʐw匚zDp\Do{]ga "}M,0%G=x?yI DG*;;E4J*e m2kJ3{& qEI!3y4l2s2X&HGJsA/\T=L{Zo^9C=`H7SdV#v>Nt>XWrr9JIdmT U~M)<}q.lU_UT"S9@ix6cѠ-Ҕabiyt4rmVV}?nq\jSyt8t1dam?hvKp8U"Fe-q,~?cfi`k`YkbSu`nho,fZ mVFiRVS_6W+YlPwTMTwUwwdu~t'%e/s!bSnaN^F<0V)-C [V K(;jS-n7&vd$ vs:6oC*^&0_^Od=QR*Cc0?ÃCuMV M?osct:4hw]=SH* ɽٕ͐U򔜗ڍG='š~ɓӥڏU?ʷUֽ4Ĥmӱ:[!mוaǘcݔKȅפ5aÀ|h'Fdw @sl,_ϼK5`{}ш]sZɍӋec<-a!!И%ܒ06/&,/7 ;:.(;:0`7X4{,'YM5_5 g`DLaH;@]'g"/GQ2Њ\V9D>!k6̀iZM!^^> gI;BoAY7d4[nO.@ZlL_1:U6R;5E[8bF1S}Kj?I!v*a=Kv,VSIFAQ8]0GRu'b; @?KhKXbs1>F.>yT><4xstand23psx5trdgl'CݓEJkwJqh@nsbvB>~Rk[x3tHh,NfHLQsrhxF=rt~dzqfUy~=Jx z-O]sDdrQ]6p\NmOrgBrtqɉU wq8WG‡&]Őc*L;hjElR>VC]xITY]8Z>-o_sg]#'j.o'zy-r}?"s:@'| C=r/A2l=+BjG05fN3(Y&@v13.aOA i<&$b.WW6fs0sJqpJ-i*J%d>A(bRE`_L]eAWLֈMġ ̔wß摙lyDp\Dq}]hb "~M,0%G=z?yI CI);=D4L*e l4kJ5{& q EI#3y5l4s2X(IGLs@/]T<L{Zo]9C=_G6SdV#x=Ps>XYrr9JHdpS W~L)<q.mU`UT"T:Bgx8bР.Дcaizt4tmVW|?nq]jS zt8t1eamAgvLo9U"Geq,?dfibj`ZkdSubnio,hZ nVFjRWS_6W+YlPwTMSwUwwdv~u'%f/t!aVn`M]F<1W+/D ZVJW-:jV ,m<&wd* us?7oC+_&2]^Qd)RP+Dc3=CuPU O?6rcy:~4lw\=RH*ο ͼڙΔU򕜕܎G='ơ˓ե ݏU>ʼUŽ4Ũmӵ:[!nؕaȘcߔKȅ٤5bÀ|h'Fdw @͓sk$_нK5`{~Ј]sZɍӋec<.a#!Θ%ڒ1d0%-/7 =9.*;;/`7X5{-&YO3_6hbB>cF;C\+g"1FR0Ί \X7D? k6ʀk[L!`_> iJ;BqBX7f5ZnQ.?ZnM^1 C@KhNXdt1>Ĺ>hU>?gcBstand24prx5uqdfl'DܓEKjwJpi@nrbwB?}Tk[x3tHh,NgHMRrriyF=tt}d|sDV{~=Lx"z0Q]sGdrS]7o^PmOsfBstqȉT yq8YF([Ðc*O:hlE jR>YC]!wJVZ]:\>/oasg]*%i,n,zy3r}E"t:E(| G>r/G3l=0@iG64fN8(Y&Eu;9/bGF h:+%b3WW:es5sOppP,i*O%d>G(bRJ`_Q]eGWLƇۆMʠ ΙrŢ斗lxD p\Dr}]ic "M,0%G<|?yH B5s>@H>J);>D4M)e l5kJ6z& q  DH%2y7l5s!1X*IGNt@/_U<X[qr8JHdqƒS Y~L)<~r.m@a~UU"T;Cfx9`Π/ϔd`i{t4umVW{3nq]iSzs8t1f`mAevLn9U"Geq,?eeicj`[jeRubmjn,hY oUFkQWS`6W+YlQwTMRwUwwdv~u'&f-s"`~Vm^ K\ D<2W+0E ZVIW39iV&*mB'wd0uhD7p>+`&4[^Rd+SP,Ec6<CuRT R>6qc:}4qw[=QV*Խ ӺڟΚU󗓓ݎ=' ǡ̓ץ U>„Uȍ3ǬmӺ:[!mٖaɘcKDžڤ5bÀ|h$Fdw| A͓sj$_ѽK5_{~Ј]rYɍӋdc< /a$ ̘'ؒ2d2$./7 ?8.+:=.`7X4{/%YQ2_8hd@>eE;D[-f"3FS/͊#\Y5D@k 5Ȁl\L!a_> jJ;BrCX7g6ZnS/?ZoN^1=V6R?6D^9aI2R}Nk?I&u.b=Ou,YTHFEQ8]4HQu-cA D@JhPYfu1_R>2>V>,A+wstand25oqw5tqdfl'DۓEKiwJoi@nrbwB@|Uk]x3tHh,NgHMRqrjyF=uu}d~tDX|}=Nw#y1S^sHerS\8n_QlOufBttpȉT yr8ZF)Zb*Q:hnE!iQL\D]#vJWZ]<^>1nbtf]0$i%*m2zy:rK#u:J)}K?r/L3m=5?hG<3fN>)Z&Ju;>/bGK h:1&c8 XW>es;sUppU+i)T$d>L(bRO`_V]eLXL̅ĖMў ѡsǨ}睖lwD p\Dr}]ic "M,0 %O<}>yH B5s>AG>J(;>C4M)e k5jJ7z& p  CH%1y7l5s!1X+IFNt?/_U<+`&5Z]Rd+SP.Ec8:BuST T>6pc:|4ywY=PV*ۼ ڹۧϡV򘓑ߏ= ȠΓ٥ U=ʃVЌ3ȳp:[!lږ`ʙcKDžۥ5aÀ{h$4dw| A͓sh$@ӽK5^{}Ј]pXȍӋbc< 0 a&ʘ(ג4d3$0/8 @7.-9?-`6W3{1$YS1_:he@>fD;EZ.f"4EU/ˊ$[[5DBk!4ǀl\K!b`= jK:BsDW7h6ZnT/?ZpO]1>V5R@6D_:aJ3R}Nl>G't.b=Pt,ZTGFER7]5HQu.cB E@JhRZgu18i>*>V>\.@{stand26npw5tppfl'CړEJiwIoi~@nqbv~B?|Uk]x3tHh,MgHMQqrjzF=vv|dvDX|}=Nw$y2S^sIfsS\8m_RlOueBtuoȁR zs8[F*Y`*S:hoE!hPL^E]$vIX[]<^>1ncuf]7"i+(m8zy@sP#v:N)~P?s%Q3n=:>hGB2fNB*Z&Pu;C/cMP h:6&c=!XWDes@sZpbZ,i)Y%d>Q(cRS`_[]cP XL~фȕMם ӧsɭ}礕luD p\Dqr}]hc "~M,0 %O<~>yG A5t>@F>J';=B4M(e j5jJ6z& p  CG$0y6l5s!0X+IFNu?/_V;_M]mV`xQNhx\knln8o{`e~z<~j5va|tLJow__K3;f=tK{Xo[9AL]E5SbS#{7iV3'lL(x6<vhM7q?+`&6Y[Rd+QP/Ef:9@uTT U?6nc:z4뀣wXLNV* ߷ܭШV|񙓎t+ ɟϓڤ VLтV׋3ȸpȓ:[!kږ_ʙcK ܤ5`Àzh$4dw| A͓sf$@ԽK5]{|Ј]nVȍӋ`c< 2 a'ɘ)Ւ564#1/9A7..8@,`4V2{3#YT0_;hf@>fD;EZ.e"5DV.ʊ%Z\4DCk"3ŀl]K!a`= jK:BsEW7h7ZnT/?ZpP]1>V5R@6D_;aJ3R}Nl>G(t.bJr>0W>=}Estand27now5snpfl'CړDHiuHoh}@mpbv}B?|Uk]x3tHh,LfHLPqrizF=vv|dwDX}|=Nw$y2T_sIfsS\7l_RlOueBsvnȁQ yt:[F)X^*T:hpE!gNL_E]#uHX[]<^=1ncuf]>!j1%m=zyFtV$w:S*T?s%W4o+?=hGH1gNF*[&Vv;G/dV i::&eA!YWJfsFt`qb_,j)^%e>V)cQYa_`]cU XL|҃ɔM؛ Ӫsʮ覓ntB p\Dqr|]gb "~M,0 %O<~>yG A5t>?F>I&;_L]mV`wQNix\jnln8o{`e~z<j5va|tKJpx^_J3;f=tK{Xo[9@L]E5SaS#{uST V@6mc:y4킡wWLMV* ܯ ЩVzߏt+ ȟΓڤ VLӀVي=Ⱥpɒ9[!iٕ]ɘcK ۤ5^Àxh$4dw| A͓sd$@սK5[{{Ј]lUȍԋ^c<} 3 a(Ș*Ԓ665"2/:B6./7A,`2T0{4"YV1_=hg@>fE;DZ.d5CV.ʊ$X]5DEk#2Āl^K!aa= jL:BrEW7h8YnS0?ZoP]1=V5R?7D_<`J3R}Mm>G't-bk>W>A7rZ*dQ^a_e]fY!YI{҂ɓꁞ؛ ѩsɮ角nsBp\Dpr{]f` "}M+0 %O;~>yG A5s>=E>G%;;A4J&e i2hJ3y& n AF!/y4l2s.X)IFKu?/]V;`L]lW`vRNix]jnmn8oz`f~z<j5va|uKJpx^_J3;f=tKvXoZ9@L]E5SaS#{}XN8%56U,5C&R{V>~XH5jV?#m[V({8GwhW8s=+]3WVOf+L~P2Bf;8y;wRU VA6kc:x?sVLMO% ݵܭЧVxߏt+ ǞΒ٣ VLVى=ǹpɐ9[!hٕ[ȘcߓK ڣ5\Àvh'4dw| A}͓sb$@ֽK5Y{yш]kSȍԋ\c<{ 4 a(ǘ+ Ԓ765!2/;A6..6B+`1S.{6!YW1_>hgALfF;CZ,c4CW/Ɋ#W^5CFk#0Àk^K!_a= iL:BrFW7g8ZnR0?ZoQ]17D^G&t+c=Ps,XUFFBS7]3IQu.dC CAIhS[hw~1g>A>oW>A[7)G"fstand29olz~5rkpk p'EHGkuIqg|@jnbtz_>|Ul]x?tHi,J"fHMNrui|F=ww|dyDX}}=Mw#y1T_sIfsS\6m_RlOveBswmȁO zu:\G)X\*U:hr7 gMLaE^#uGY[]<^=1ndvf]Lk?!mJ|kUvb%z:]+]@v#b4q)J:iMU0hPO*]&ew

 -t=Y`U)[I=iM&RW9yQQ|X3GDRmL?IKWEy^PW^?"ML6j$jSvKv%UURlw\lv:ivns}odrbZsl|3|_}?7zdzfz;xfk~y<6p1}4{E[L}Dx}tp&ņ4dp{q{+{zZǃuLrv[}svs8nMrnvn9ziw~1wMzo{liiTqitgcweVq[v7pLrŏ>E]h,SlIa'ejj8o3Jq(9w/3r$'r f++|K#21 v]{!wsJ}2&y'%`"55K)1:$6}8}bzwO| , e}[i{HM;3L,E@.:?"p.!s##v>Iʒ*wEC'*!t(< :=C';CO)0#CI; >(Ո8m[A>>$^&pain009rigσbݺ[ː|br~w"{DkݨfqIcScZ>c͹:Q WFѹDȞN7Ʋ>OdίDR١ST?06=}5|<J261"  $! ,& (%->.9%I}} rN{|N~ {S8+0P~†IKVx } W Q8B{Ux~PNJVJ`[ ]0\Lb/pisloXt0w;p ydwdvq|mzR!{{MxT{[Ŏp(~{'}\ic/X i bpHf}([nTONus y $jU8&SNLE7B=Ve6Jx4@a4`k>&E}Q#$LIoYJ/qP&UDlD)zCNr9)zA<*b@@--jd?t+YODFj C`"`놋C Y6)`9*FBzvh;??$c6!78.(E,+D%p=&C&;<#43' D h?VIVL oF-N3Bg=VE SGdC J 3Fg@JKVO6F P .3 <F50x9e=55!!+|9{e;B-O58p+>x}"Ox`{-amS0tsQ$@i?Ew4*3];7UV1NbOB9g3=`Es'u)jlY{3`91 -2!/oC$t9=$_f*$^W՛AaO7ԕepاu0̾J"˷n۸T*0<ۤ%kaʣuѪ!uǡ=Ϸ#µBؾ(!:_+0-ʿO͖_WTėXsʟ $p(+m~>&f$)`;#l 'nlb%i{Y sdh}!j#\zL`mJfBd&~.v|vjSmWhmRncBzw@Mu_4j 4>;8> >RiC(pain010~hvl·ka fpݸ^zHhNqeAk8Z;bNE=:YifUܼQVC3ے4ȏA<F R7ނ<'2)  (#!"-+'+ , H(?  rx; S?'0X~QHVz 2`Z >K~UvPIVSVf;c$>)7>7,"pain011՟kߨn:w ޙg ~]fۓ[pS[둕sfTlΧEg˽9k0Z߼CѶJ5`!f΢\OߦWUA7ʐRԄQZ2d1KzlQ2K7< =8A> F):--+!= 6$@%D(R502מ'ߜ'S#Dq3:x4/a4Hmq?FdU$NIU]~K/VR mY8QC#hB?Z7"zA <|$b?@}( o(G>tn&YX`5SR?`U(Nb:RX|~@OE]kwKP{]J\V`D IVoFF?Gyp>yMyp"x(3}j~97jߛ%W$ݠ9Tٗ[/^ߟ.]덡ꑌ􆡱:]憖cJeKގ^ߗ8*՛X٥٠.͡yԟ7К`a+`^!>V/Sc6 g/Dc*j-5d&L^"btyC~-"(\uxC2(~cqNw,(C{% /,p mKopmm Jl+jYqcAJE4>EC9;6k)@wK#Zm-5uHK+4/~ yЭ4a>7ԢQbݶ_5@"\#E*&9Ժhauu3:"! :_+ 0-OҠv:SMGIqѫy2!]"b&/S7P5'X1#^ U+KYW Xk3@݆#PkV3GiVZbaaY\(w~@nʉ}kjkceiMm[,xRBuRK`LJ=X=$^G>d, pain012gʔljܘ;Qڝ4]-uфh|/gzOͅq?˘s<.ޗHB^xYǥefϸCY=R :N5I Nĥs6ܮSXU Dh؅j2d+u.ekok.nyB)55?R fG(.o!["t'|'bݞ~VAM\"WNf | |9YO5} `wf"lw94Hzv7wv98k w.?5g1x+ZhzdoZ(Lt|UR){V6Ii>%J69DP4yf +cv AmN+F;G$_>I*R^;/+CEL4&/ B,:|1zo- <[bo+@] J )tI YSX3ML?]O&DZ8HS|_,H7UmU:JWREUQcW@"?O6~%~SA.kk-hohoglhmxjmfgg_kyxFx_|Dr6lpo\nr^rnlw:qd}z;{8wdgzX{~Oy|sn?do~qu+}uZ|8qLss}ovm7iqkvi4vfqw~DXc/Sd([*\ je:!i5Jk*8q03k&'j ~f}~,~+{K"21$u]|z{"vrK|1'x'#`~"~65K'19#6u&}|aqvHt!,} \{byHJ?3G0E=5;(i+(w*vFTʎ'%rCH,')t(F C8}O2ź/a97˪IbV5;"U#?*#9hauu/6! :_+ 0-Oʦk:LGBCqȴn2+9$F@1I0354<)? &/Η;'v<Ě#@ِW݊0)i$4kD&cZD\nO6iFo8aلVZҋv_8u]EeUaC[d4eaJˋ=[M=X>@Ujump001͏mݒ9ܡ7/h)}֋rҟwꓔ碎"#}ȫb̽F=$!$ǫrᴎƛ݅90)Cp\JyT)|4}5|C=DŽG(.#Ȍ ''Ў냿H<ƒϐ"˃ߎۆ 2^CH*TCT7Z/+B"|_ RJFBPi>,iuUQMm{SjhFs|SS]S=ezQi'z{4x`r$Go@…:Fnt^oikx7ly5e%j5fpv:`@Rged-n b{u{O|'qnT]qY[K+hkpq(sׁVgsp}&lWnJS~BY2}kn:sce'^WbCa(vu|;rJwno_s8'3H;/iF-*:,? `@&V9&?D$ 0 3&$>$4(# ,-#A0'*$1 7004;!B=2+ X( ] ,&< 4 {!_,J|+cKeZmh&߂w4cH~\LۂX4M3т*-H7<0pLוI V1G4=8(mBcF#LFE8m&0' }G=gc?E\SirY4MC bY%fB=\'FA'k@qRpv2+{3@4,6CD*$_ESYPI\ =T*Bpp6CW4V1S>Rwqr.J!P=%8JC>L3@3zF钷C1] $79mB銖.sjRġy\WR\d:_E[mciWmcq`ivsm~^q|Rf=+H>K>GsRjump002δZоpE۬ͅ߶<߰PҾ쮝¿`C32 ¿Ӑ͕jjd85Ao\~KtTw.sQJCBSg?W*elUQhuJoz=u|TTYS|w0́́2ʁfXfҊfhfmgggxp7p_qDkohij^j͋n^hll:jpmp8nbnꄲp|qۑ-ۥCۤW0Tޤe.QQo8NnOF/S?/OF/עԬlأ=СgמB֞N M  ( #WD"A5[R+ R=#"S3&'e Ea -wy3A=7}#9~*ъu7݁pEbHՎo[j'ց|5OgʁV$]5̍k*MpRњzZ[-V5V;A狑Se$(5ċoN\i xa=q{?evSaZ4hF!}\%D=t(FZ(haZon0vK+{OAM-RG]+$~ 7u`rL{ 3p*1cNq6`[RZOU[Twt.~YpUNS OAW=xW%zR|MmOtd VcS1PuQ冕Im`]ndPv^\d:cERpcrkW`hUkvki~Upא\f;=&(>[D>*jump003\mF`VRx鍑MA?.vq~Rxyyo13[cm=`Ta=]4^4]Bv0gi(g3l$l!n'k'mcOk cndbf f2y9ia< vQv"fCaxoUlC]sӎ{!5H>{94o||Sb}daqCHGn&mbs_jv=w9n9s^w^_ngmԫ#ɡTʗqِbۗ١  MnW뇖^ihr=Zu9h4qiomp&jaqNwnjPtv`KgLPzX[eIXH\1o]?IZL-A|EBD>5=xU74ae6Km?A"F-U"$ERI` JN/R'7Y<D)2BC~!9'zYE 9A+bUEJG- o7-lB t/,WXa3UV?aY&Nc6qT_NARF_kEKSI\Nt]]U`H KYdh+hNaJa3n䞽n.nN塽NnNmNmOsQyXDXYZfSdPiR[R8U]QnV7RbX:ZEWbZ\\| 9MV Jd1HSoSHlS?%S4%H8 Sz0Z4GMK&RFlW&#S#SYD^CU(Z9X|XSQU|Oc5\!,LuHE~HvOVz4Qz'fP_a"e"Oq4n#,ScK]eF[;MT(h 1-u1NR(Bd#b^>38jump004x¬k|ϸ^ҴDq ̝sܧ2 fϕ[KʫrS㚝?ܯ`"U}Rk^AqԽLs#Yv\d!_Nΐe֛ s:<)=bfy=jTlHhAhAiT0qup>u,uy'xxr|r it#e1ei.m3`9D3umvGd]NjSK|"pCqd;y}JyCC}͎X!c)HL4?h{rYlV6vKGg}BHpSn'Gms8wop*mut5"Y`T5[A?jJ(TW:XNfATIRm]MY^cQdLggF"NFdv(vnSnAzz=y"QtQbQhRgSwPkc`ceY\^VZZZe`Sb[fY\[Ec^_[Z8\ꇪ^쉛$˛4PǕ[ݑ.Њ]Ιn=ڈXۅڅo9}φXΒ;ۋ|w\uVwuftH~]͆7ց+™Ǧƛ=jEY`(dkbg#speb3kb0bSn)f?p0cLn%czj0|(>`t$Ji/Gn3>O0H%q8E"v 2Xo?e%=k&3N{';*n.;1JY|*Uq9Ww=MM6V.|BV!GCmLRF| >cd@q$V !a _NqWLZ)>h!DK7PbKzJǃ;.E;~; zQ02 x$"~0&;-~ P;\)Z6x3>*D3c}jump005έsһlmܼE أޱ;#tWX߲iR{l NoȶUC|3u2SoGr-cɶTZŝlZ{֌⌄5?~[ep=a@_.[<[<[Fq|0j&h+e0m#p!o$l,peKdq ygq"zetd썋e d ^x9?/mimHavY|JbSGrfFXei tn@xlF5tS!_)zA=~54errT|eV2|n88dpCxJjGGg&G]s6fjxh%iwm9hom HYpwc[v0jkAh^vniUt[ieLn^Xމbl^zijla/[e qis vhJNoU'q]HRLcqJM^?g)PzX\d+vZ|GV*v\.GYFVA,_K(8y\-'\{.Q;6*~@6C*'z`5cD&NO:QGf8LDJn\BQZWJ\Ec\A"K?Ei/iOaCaX!E?8Bp9z5})/.<ϐ,zE0&&x%|"'3.~ @9D)ׄA7c1;Z#ӊKmk2E_#}/Z;BjI'h&-h.o;aշH7Ɲ\dϴm5K"kP*,9ĺ"hau u:#C'!:_+0-O™_XQSq2H,93]' d'=S).B/2C"{Xȃ4*ŘP/:Ni=%l_\SA]jL_mCe[IمqJ8T^6gT_PP[1U(Nǒ&]sA7=z >w6>m38Y jump006k̜hq֦U٨7i אq1| WݎX?՟G3祍W"LnQZĩ^kCbس)\#<W3T#Nĩ:ԺMPZF߄kԋo;m.u3l^drs)}gBl.gk||e MkQN{"pi7;pP rkDsj7+vW d)zC}3m<{5nzxqXvnS8vx*œ/foFvAjI@e&PVh>_pqp*oqw4ohu1NR{zjU~6duDbjtgieTeni{}  LT֊Bb݄qh\silbd*Rh!J62BD5yY$(cr#>m9-D&E$N=IOL:2A"9I60$8.=~#"z`/ G6t%tOl>l0}{M}{2y{{UX{UxUkVmtVgeXxa7a_dE[oWiZcZ^czYj_:Zpac8`plc\f|Vf$ՌFyPӈX.݁]؊p=W~}d| ||7{}Wم:xr\rOus^sHuYzEx+͊ЕЌ=ÍkˈDȇRV%R\&S"XY0\+~Vb#4h)=b f1k^rrn%mx&hH s-z+m }a]oikeu`Vi0w!e'"u`v|r/z}/tH&04|$zt7ir|}8ulbb gOjz'| QpRmO@0=D&E1%82p%w"v8F͐w88&v01+7'1>N)/&?K5Ѕ>'Ո3mY4oS$2I. E+y((&uQ!|3aر=7ʘOb׮^5A"]#E*&9öhauu4<"! :_+ 0-O˓t:TNHIqɟx2.2#;D+ L+=9.5*6 ((Б>"}1Ƙ.8d݋4$i$,kG!cN?\fIDeAd?Rن\N:^X8iSfSNZ/TU!\dB8>=y'?>[u flip001pʗjsܜ[吔\O"tzW^Χdaּ4])N 4ؽC)M Uʥg:ᨏKǼYA5X U W*h0]qoa0c}f=45CH \G~(|.j$S"m's'YܞpV8FX"TJc w2xp~7m~92g s.v?t5\ liIFe(fahWj~{)9te؈3wk[uijj*VnK4 C!)x`'|3y3vI.2:| 5U.BEI6 H8(8}e!wG,$q z[r%yHN?)K17G/:E$p3#s%%v@QǏ3sGF'6v1:'9BE 8IO%5Ԁ JB@ 9.ֈ9mS@Ɍd3 ]!Iy^;(I2zSD~ɹ3a<7άNp[5="X#A*$9hauu28 ! :_+ 0-OΫr:PJFHs̺t2+9$C?5H6)560)>(.Ζ=)v"7à#!9֐W2*p&2kF*cVHchU7dLo3cلQ^ҋrd8lbE^Za>_d0h\N:k >e=6>Ւ%i0flip002tɞyv٥a;q̖wߜ2&n҈[V֔rbRL鎕lZ"܃Y_ҬoX5\*G 0ط6ɍO XΨg>⤛AɻY,&Fۆ> G%W0SxԌU0VEp=s4r4qC< Oq(q3b$H"c'f&Mڞ_S.<R"PC] o2rZI=Z(bghUp)(#W+@~H"z% 1 LBESYIO \"I_BMQ}IL V"PJEW]&O ]39?69/D;|GA!6!}\~7|GRD*L:9R2;N)o;&h*(w$=Pď@hKIHw>506JD6MN#9ӀL"\#E*&9kauu59!! :_+ 0-O˲z:RMJMs|2(>#D2'A (2u<3x#8X*5ђQ-22o'5lE5ePOc`]D]T8,gلId҅ljaiDV`b9d[f+lUV:&_>>.>%\#6flip003tɥyu׮b r ˡwܪ 'uՎ[\٘qlST됙s^"ݎT^ճoO0Y/A"-ش,ŔM YѬa@㣚:ɺ`~9- ;#K0M}ӌN0N:h>iFi4hB4 HiIk3],B"]'^&GٞUR'7O!M @Z-j0l S]v w nsShQ9ِ+^C[9%^ g2^C\.F TP²I6Q(]khRt.;|1ggwzi]zvhvsP|!prMnTp{p ċ 2n؈&}r\ilq.[w;s1h`Nog&~]`PLy{IhudJcL@vxG}۟dI6|mH,M;I}3*@/CDe?yx5bNle! EV<$t4IGGs1/G9!_G8B'%Z,CL$z# ҆XҌ6ۈ=[o?ů4o]wPNIuC}4nsVyXGN5V%M"A aAXdl&b m`UW`f&a i"cJWem&a mJ4RJ9GDO}MR"H3}cG|OSK*LB9X91S0>,h,,w%?QÑG#hLNR"zD658NH3QS!>ԀN8O2?چ>.nIS:nNo= h"hL[8zSc Z̰ELUc[cDX[8(jلDi҅gnYnDOeb4h[g&oP]:ܵ >k>+>"9flip004yʦzzׯe v ͣwݬ 'z׏[`ڙqpSW둙w`"ߐT`ִP0Z-A"-ֳ*ƏN"\ѭaB⤚8Ⱥ`Ր~9*9#K0Q~8Q0TDp>qFq4pB7 MqIs3d,G"d'f&M؞\S);V!S Ea-r0j N[r~ ~u nqSfT9!ܐ-^C\9!Z d2^A\.I1V/h-/z#ASƑD'hJQM&z=91:IK2SQ$@րP;Q 6Bۇ@1nLU:mQp@ g&laOzR;uQ\$|qˬ=iݽE7Щ]pg5@`!G*(9δ!kauu;=" :_+ 0-Oγ:WSRtUs2(E"I=x$>X"37|U>3;o(Zc3}Nflip005ҏl 5ڂk%q|qҐs|v጗"qԣdݺ?+"sվpא"ΡgvަʽX;2,3yd=@)<54{dnSnvebCJ«Gp&khotn=|9|t5f~xhlztuwmw#޶mkfTߩlsi~ ƾȭ lي|ᆤj^ŗviɚlU=[[9rn5jQqQ|^SK_JZv>)szyZݎ+~|GJ#MvO'GY5U0*fH6yY&aw:m7"e$=$L5IIK22:"=H2(&=+=$z^$ :dڒ%ڒVC0śMś2po抿pkqmpgvx|7|^Evormt\twcvj|:upπ8{p~e~Fdsq+si{:jLiqfqlΉрE˂[dEy_j*v&j:7fEKhiO>w=fTCdY8aX6w\5}RR`ZD6wbX'4=}3ZBQM\,lTNt>ބsRG:4nn,iGdgB3]2o@*yMY|(3Y)>ͱ7g9DPbX?A"[$?+#4har v=t"C"! :_+ 0-Os8ZYT{ȬRwv0wBiO"; ;>=4qHk2]S[`_Weiޅf8n8l_dZhhWj̏[pY7/K&>3=Ϋ)>3{flip006ׂ6.ז>#rot$q~Zi͋ȟ|qrȚf٨J&"|"gγǶ ɿ5*'ƮKpeԊ>~`z0t;ut9ԡ3ډG/ ޒ$%ڕ㋷OϘ1ډՓ"˅΅וӅFw{? z"}Bȋҩ<}_}B =Uɯ@աFԬC|r{yUTMeho|pK{CwuF`y`~6vu{wtc%^fbR]rǝ^iͦhεj0z-| goz;dXngynmWKY[DmoClncxt\hbhH`pkKk}x5/kxtq*yС0P'QV.G>;U^6/f28y>(aR >m'%DB$58I M452=$)K7 )')+@%zB' <2bB%@4 &#t%Y{VHCvQ>AnaC{HLE_OSC.Jm"vCBe+K{4턻?(3,d^gpfichkujwxBoDq6gndhgcnowXgykepnolpu{}֘abHbrji^bc`?_\ZTZW)XTZX,YYhV+TLZIJJL[MGONhJAJQhho2bOi<^@dqhg]cJiZ Qa}q^7kdNeYgX]a\A[QhNgTg/\o/Yn|OUZb^f}CGt}Ms/Tz-O{}OMiaUr|CVWYX*f\/b\~V\HggQDEaTlKKU>nL~IZbBTFnIVG]`Eğ{fsYvV~Ql`{f~hKp|$z#yAU`C膼Q;;o0j=v9alWafYkbooy@r&d1q,_@aCC>!M%3L!Fhatry#v={z&E$! :_+ 0-tOҪZEVWRKwӸ]3D.Y+4<2_:eM6C4X#] m:vLモ2ҖJU^Lcf:^6hec^\qcvkܐmȒNEk+>Y=ն'>^3flip007ւE.җ>tdw vĀZiƏuޠtrĚfץJߞ"~iɴŴ 1Ⱥ4*ũKne׈C}`u1opn:ؠ3݈G/}  #%ݔ匳M՗1߈ב"̈́фѝӃ~Cy}F2~"zfϊר<{_zf >¤Tʬ@؟F֩C~r~{USNchm|rK}CvwC^y^Eyt{ysa%]gbP[uÛ\gʥf8˴h0z-| foy;dXngxnk[KW^DkqCjnivsagbnGdpiKrs5~2j˃s{/x`/O)NV2G<;"UZ64f/:y<+aN Bm&%DB$49I M352 =$&K9 )'&+B~%z@'<1b@%@2%#t#YvVMAqQDAhaIuGQeZOY>.NgYAqBHe퍾)Kv4?(3+a^epdi`hkuiuxBjDl8cl`hbcndxWeyg`mkjhms|zޏ}КecHerkiacca>c^ZWZ[+]XZ],|^ZgW,WOZMHOP[RG{UOiK@KQhip2bNh5^Jdqnq&cpUne;Yu~teEolNhdjaXeiB_`hRuYu.ax/]xSWgiaoDMT.[/UOQwgZ}BXc\e)hc/cdV[TsgXeJuZ{AOgFUH_ofUWnU`H_^Hrls`v]~Xp#`pi@},%{BU^FQ;:o2jD}8gpagkgymw~`It0q+_?aBC>!L%2L!F hapv$v={w&E%!:_+0-pOΨWEUXRKwϷ[3F.ZL693^vQ䀦5֗IS^Jce:]dfea][qbvk~lʒMe4#>5= (>3{flip008؁7.ӕ>rou r}Ziȋuߝqrƙf٦J&"|iʲƴ ɼ5*&ƫKpeيC~`v opo:٢3ފG/  #%ޖ玶O՘1֓"ˆцѝЅ݀Fy|4 {"|fΌש<}_|f =ĦT̮@١FثC}r{{UTMeho|qK|CwvF`y`6xu{ytd%_gbR]rʝ^iЦiѵk0{-} ho{;eXngznmXKY[DmoCnndzt]jbhHapmKl}t5~2k̃tŸ|/z_1O(RV.G?; U_6/f38y?)aS >m(%DB$68I M552=$)K7 )'*+A%zC'<3bB%@4&#t%Y}VHCxQ>AoaC}HLEaOSD.Ko"xCBe)>w9?(5+bcgpeiahmukuyBjDl8clahcboozWfxhbmlkimu||ݏКabHarji^ac`=`\ZU\Y*ZT\Z%ZYiV,ULZKHLL]OGQNiJAJQhio2bOh<^@dZku&`w@jj;U~~qh6mpOejffXbnB[hzQ|W{.`}.\}|VTmg_t}DL}S0[/U{VPqZ|fUjYl.fh0ahUVZsc\eG~XAKpDUK\ufP`lU"`Ha^Jrowbv`~Zr#askA{,%}fV^HR;!N%3L!Fhaur{#v={|&E$!:_+0-uOժZEVXRLwָ^3H.\L895^>bPoJ:^+d k@tS〣7՗JT^Lcg:^6hec^\qcvm~mȒNeT)>=6&>2|\flip009فE.֖>rot q}ZiˋuŠqrșf٦J&"|"gͲǵ ɽ4*'ƫKpe׊>~`w1qrp:ע3܊G/  #%ݖ䍴OԘ1ފד"̆ІҝӅFy|4 |"}f͋֩<}_}f =Tʮ@סFիC}r|{USMfho|qK|CxvCaya6xv{xub%^fbP\rƝ]i̦g͵i0{-| hoz;dXngynmYKY\DmpClofwt^hckHbpkLou52l̃t}/y]/P)OW/G<;!U\61f19y=*aP!@m&%DB$48I M352=%'K8 )((+B~%z@'<1b@%@3%#t$YxWJAsR@AkbExINE]OVA.Lj=Pm:!M%2L!F harrw$v>{x'F%!:_+0-rOЪXEVXRLwҹ\3F.[L694^vP䃥5՗KU^Lcf:^6hed]]qdvl~mʒOe/K&>3=Ϋ)>3{flip010ׂ6.ז>#rot$q~Zi͋ȟ|qrȚf٨J&"|"gγǶ ɿ5*'ƮKpeԊ>~`z0t;ut9ԡ3ډG/ ޒ$%ڕ㋷OϘ1ډՓ"˅΅וӅFw{? z"}Bȋҩ<}_}B =Uɯ@աFԬC|r{yUTMeho|pK{CwuF`y`~6vu{wtc%^fbR]rǝ^iͦhεj0z-| goz;dXngynmWKY[DmoClncxt\hbhH`pkKk}x5/kxtq*yС0P'QV.G>;U^6/f28y>(aR >m'%DB$58I M452=$)K7 )')+@%zB' <2bB%@4 &#t%Y{VHCvQ>AnaC{HLE_OSC.Jm"vCBe+K{4턻?(3,d^gpfichkujwxBoDq6gndhgcnowXgykepnolpu{}֘abHbrji^bc`?_\ZTZW)XTZX,YYhV+TLZIJJL[MGONhJAJQhho2bOi<^@dqek&Yj@e^;Nml_EgfO_^a[X\bBUYhJoPo/Ys/Vs~VOaiYjDE~K}/S/M~OIrZRx~BP^T_.a^/\_VSNg`SeAnQuAF`<|LHViBLPnJVH]`EğyfsYwV~Ql`{f~hAq~%z#xBU`C膼Q;;o0j=v9ag[aa_yawn{Ut&g1q,_@aCC>!M%3L!Fhatry#v={z&E$! :_+ 0-tOҪZEVWRKwӸ]3D.Y+4<2_:eM6C4X#] m:vLモ2ҖJU^Lcf:^6hec^\qcvkܐmȒNEf >m=B3>+^3&7flip011Њ65ԛ?#yny$słZhvΌwɠ|xtršfհAI"Ȑ"gϵ~ļ <*'º>ndЈ?{_0y;z;y9Ƞ.ԇG* ܏Ց$,ӓO ͇̒"ƒ‚ͅ Fr|? x"{Dħ1{BzDǎ =Ĥ@ˬAϟ4өF}rytBUObhk{qL|Fuv4\y^8qr{to}k#ƴdieRƧb֛eiۤp۳r1~ fnxⅦg]qi}nkYLW\Fkq?tj]pZo]`F`nrFdv}3/jxqq*w{:O&_U,GI:Un4,f:5yI&a`:m.&DC$>9IN=62>"0J4 *%1+=~"zM( <;bM&@= ,$t+YSF?N;A^@&EJEoJL~N,F8ImG:JFRCpWINW;"??e*H?3&ߔ.ߓ'e^fpfiemhrhwvDsBv7lngmjclosXhjojpqtqptx{嘆djKfrqid&hah4cdZ[g\3[[g\+[as_*\TsO@PNSqQJSWhSBRSphw2kOr:hBmq[UNMK\H >H}gO4`SOZG[_F^VI>P;mFNqIP}-SZy-RYqOODtdXSs?[hXgnKruI{E~c]bU|aLUie!rmqn>QU=膥O :֌+j3w8a`FeTEkHX_iAZ~Gw1Z1BǪFaL??!S%8L!4har v:t#B#! :_+ 0-Od7VVP|Lwh.?/T,11/B6EH8<.PUm3rEx,ϠHRfJcd\8dEa^Zq`uiؒjÑL6=.=oA>h3nzflip012ʏݒ<|՛4~#~m~%|tsŃgj™h[ԈTћbdyuģeѴAL sŎyt heԱX ;/(3kd3x_݃.~<~<~42Gڎ,ъ0#"Ŕ$ё'ȄV퍭Ɖ 4ud}?; wu~"w7 wFv7j 3C?<9|evQgmk}CAH{&\htfzs={}4px5~WzY8dlkiwl#αcjeRϤagisu1·~ƥ bۊuh]qiƑ|h^+Ta9hu5}dZl[vW\Bdny@`v=܋*gznZ؈,s|FN&tR.IZ9U10fD3yY&cr;m9%D&B$N8IML52=9H3)"7(:~ z`' [D&AN7FL~[)E4KmP6HQOBSI\T;"Ԃ3G/e]e䌻emgmeshxuFv_yEooiplckڌp]jls:npux8tpux|x푄fs>ziwhk(naq7hIkqdwb4`az`3^hsj.d^xZcXS[wXBXS_q_C[Oxs tK|rBv]8V(I].EyjRuvԁqyx(px\~8luIdwmrx|p7om^owlm?`k}rx0sjn}tialhR]kvigf^fSj[m?j&҂r݊ ۀK·D̀Xl-TrIe+n l:"r4@u-9{3)w(&w f+,J(-3^J/&*^'99K22@ 8G:bO#'pqrVN==N57C-:D$p2&z&,vCX͎/wFD&0v+4"8>?':MN*?"RHG @9ۇ<&m[Ěd/-Z B _0(F'S>¼.Z7EʭGbT5:"S#=*!9hauu/5! :_+ 0-O̪i8KFABq˸l2/B&IF>O=):?0,E ,7tC2}">ʠ+0Dސd'73p):jL2c[J\rS6mKoAQ>sH3iesalute002c؛]1Fڤ3Ajpf#JHύa;Ơi,֐!͠*)MXWάDbھLI(C"6ɑA;3OƬi,ε{Y`TKq h-V'.oxnv5u~Bl4fogogeY q(s?p8/l$*})w(zJFYu#g\v| q;9bW5:2eo"w99O79=u .?5q1<6qQY8œB4CIUz(tjhbs=4{4oexf8Vx^wg^ok]bi®n:p0|#}lsazosj=am7s4gti|yh_ijRon`TmvlCt4XuvgyXr=QAa)hd9IVN'AwF=D6/4xP3-b]3Cm;=F'W$NOIaLL/S-\2 A'@8|3z`? =X=7Q++k/3x$C]͏=zOCG?v7)+4J8?SS.K$ZLS FIކG1n`RΌr0#i"Tm+IUTP r.Z6EʳFbR58"Q#;*!9hauu.4! :_+ 0-Oͱg8JEABq˾i03N)PLLVK+@M/0N 2BtK@׃(D͡0EKߐmA >An/CӈU@bbTay^6sWo1>M>I* salute003-ʚ ț$#'ے<ݐ}P6ņ?47(~_#g t*A4)$' rt67s.A ~̀(:#X|;P-V=n{5rw:nw:sxF+Km*e"[%e,MjK!Ր.>3-B Z~0gf5; ty[1 wҒv0o2swLzcj+/yGg*ll:I][(A}V>DBB5zZF-bgGDmDLF1_$VYIfUV/\5c3N1M9|&DzgM ?b>7X.:W-nF3y;;}2H.TɑB(xYBI>$|;55;R:(VQJ@M6T[UVIކQ7loV:v%/iLh*LL*Q@ɰ0aܼ87ҩJdھU58"R<*!9ȹharu04! :_+ 0-Oҫk9JFCDsεm/EO;Q\KeI=PL.BO-BFtXB}8H͡CIR{@;MDn>GӈaAb|aEo5~i<6dWm t9x5~md_e\6[MeXmh ?>t>F>EJ;salute0042қ *ŗAƐ)sݙ ӐuR:%Oʌ.?|IKf0xY9Z((Hǟ%94˜/C\-Ar0N›3DcN>3y;?.Ð(Io cj,y/}1y14K`u,m2^Tf!p'`zKIx͒KލOIH~Sd 00; n NjtC|- krX-s%h#V\ 7PLWaY/z%h&gNuwmxr=94nzq8}~nevsĸdrִlpֽxzI <{*bH@}. n/FFtm,Yo^?lT?xW&c`6f^|xLLY\moVM~pjHq\ypC"`W6t#tH|=|2cMc `gm]hmdmhjnmdmZSlz}~9}~B}7{wtrpxucwu|z_bolpx;xuofxz~:wzoTvJw{IxQݟ!,둓♄ #oOoV <힎Ia*i ,o % ߟ,֠lޣ{ /S"Q&l+(V7$3' ^$%H2)${YzH0!'T+,I <.#E 6cM'O>+>9'<()kz.xq9ØgEuk@}*},4'NJrCiI~VF憋1׌];/*('N3a;4޽NdY.:U!>,#5karu26! :_+ 0-OpQ1T>`30salute005זד薏$5hq6_)(mӉf u,`͹T[-˾(hŻTOX4Ó,ǎB5[S bӌd0d?|yF{tozuozteC _&?8u.[$y){=f(qV2Hg%Z Ni {;9d[9:2j|t"h<(7y4u90w .{4w.[ m16s~QY!6t9z?jijIIn(jozZz~?7{9gkxhS[}~e#]mi[`iǭk:ƺm1z-z MSox5yOw}Bw}8q&qDFE*8904p'8z#?˃Rd͒-z.P&+A F I&6[S1Rڄ#bL\ GM؇:9m\ZoG/.=#;35I5Q ,Z4E˳DbP48"O#:) 9haut.5! :_+ 0-OҰd8IE@@rѼg04U%ZJPPPL@R).W20J{FFσ!O͖@H Wr?:pq.yei;R8=o=`F>fa@salute006DF _P5($7*`GfWPqMRAg=0hȃy׈ko?ML"x?mďM# 熼;Ə8ދTic6Uf4c2Z0Z6X}:]L3B+a87_)>FAC[LQO} c2E5@ S 4'puo~"h}61s!\bp{ d^abc*7~_FvیyopuQ`}"|nev@K(>bhu\zs?s6j:_bvxXU\wDZh-`rm]`gőmnɞp<2~:e[jjl섞mrqzmYu3Hx:`>f3,B{&Fe>!9}V4i^LkM,E@J$_CI+W^@/.J"GQ4%868<-'xo2 <[ bo0@] Kj/tIY?e98[7L[L4hpE]K2Nz.byGBMSVGwO[aUC'-^nFeEGATBaKLLpL=qEpFvrFs8{oU{@~x@Пx@ѝ|:Wt9աq<ܑqAוqAwrOϜz4}~(su.ۖ%z}2rz5ٖ2?R Xk&~g| Z|, P*jQl> %= #, Ŏ2 k tR435#G61-<>$;8T@.EE2C>)&AI A*-[ػ3eơCaްP7=#T/<3!7halu1: # :_+ 0-OϒdoOKDCӟh<>M#4Z K? O=>>|x|salute007̔է1إ z۔{ o6ҀXҝRfݪH5%o]ƒmЫ1%M |ѿ%“[NT넌 :ySie8UD3e0a.a3];^+4C,b=7c*A?B?^LPOo|f K0E W 8*파q8}mz9 |}"\d_z|bf_dZ%9B7zދՌ{o|SjkokdyB>~'=m^udom3n8d|; t&sG8=C>0b%0p&*h!/v!5| Q+b-v4G( 2|OK&I+;QO5@5TN;ًC1ވ0&hW6i49& (:LF2ɶ/Z6EՠGaT4?!W-?)"9halut3<!! :_+ 0-Oi8RNGFrn09B0P G4 L1?@:45H109ܒ>+|'GԔ:,V\ 81h-?yC([UGXlE^f=iQZeJlxYnpN^_VJo6wΓE~ewFusalute008Ɨ2Ӗ ԫ4[ɵWɷBڳO)!Ģ^o:0!n̝n"N!\sTVT~se~ ME].uu%`)^=zr'|`ORdrh%{^mhV1K:~9bU5; g{k"uj6Bz\|oB{m6[eMV)wY6I`B$J98DF!6y]&+cp%BmB1F/M$UDIWS@/H=Q55"93<~$& zf3 ZOI_4F$_,WjRMrR(tX(mHar9`'s/@gc:lIob5`[+cAs+Rz  m$mM58?;,e%(o&"i$w)}CTӎw.A(#}@ <!@,/IN'7#JE:Յ;,ڈ+hS8p<5/ *3}L8 Ǽ2a:FӯLbY5>"X#@*#9hauu3: ! :_+ 0-Oجo:QLGHsֺr2,: E?1 F0=645'?1%0֑9'};͘.$C]ތ/*i!4k@&\OG]hLfcCd>YZPԊrbojVfWW[8fiǔ-s`BɌx=;=%E>tX3ʫsalute009v~{2w ָ+ʨ\xקXJt飝'{"ư^̽6r5z/^!CÕE,ҍi"yɷ\XܴTT86~[LZ-o0gfom~.srB,..?Q i{I&%j"[p{a۝V?OvUTMvbyx5QF5~;s YwPYms72xFvxCuv9-c"p.}C}3f;w<8hzRM&ȓ2n}4y>mIDj(fdhSlz+5}5l`zg:QnZoyn!cmiWbkpw;x2Ā EZl9i݁l\uixd+fg5vz.lp_~zagc`UhnnNcwL(b`kkha&Qh}A](le3&XL"JH4BD'2yY/(cp0=p:6F%O$NFIYLC/J2T46!|469(z`5 nJWT7yWP|U9FIPmIDIH\DxcNSc>"SHE$SK*hNh#ezgZzgvgnnnqbiejj{4{_Fw8poqcq;qcxr'}52+;'2CN*/!AI9Ѕ@)ӊ6mY:oQ0F'y=0z(/{2a;7θMdY5:U?*#9haru16! :_+ 0-O̻p:MHEGsr2.3!<E/ M/=:0.)7 *(tA$x1Ƙ24~iً6%p%,kI$cUG^lRDiH68WلYTϋsg8m]D[W\6^]&gdH:=u=PF>>F9salute010yĭxzԳfߩ1uƭz۳&~͘Z^ѝtTT㘙z`"Қ`n˱6h5h*Q"6?&ЎV"eǭZCٮMY81X݆NU%l0eioi.owB,./=K cI|&w%`"Ugs[۝}V:JzMKGyXnx5PG5};s YwPZju9/{ܐ@vyFsx9.a"o.z?y3a1r<8gyRM$ē0n~4v>jIBg(hbhUiz+5z5k]zd:PlZlym!blhWaipv;w  B\׈6l܁k[ti~ve+ch5sz.nm^wai`_RinoKcwL'^dkfla}&Lk}EZ(pb3&\J"JE4BH$2y],(cr-=m?3F*M$RCIWP@/G7R43 |839"%zc3 kK&TT9{TP|X6FFPmMAIKYDz`NV`>"PIEw$xS>/aNa#^tmZtmpmnztmgi^nj3fF~9woxex;xfpw<8v 96_PzJs}ݜLĺ9ә]gϬ.aȷդ3ɣZǥ¨ɠH͜˟:їOr ŬJz^řhƕ^rʯnʳD[Ƚ5}o`[(Q_&Y Yl`2b.Vg#7m)3g'j;k`srq*oz+jH!s2}/p${bYoik"gt bHi0x'g$"uTy|w1|2vI$<5~#yqEjr| z6ricahMmz,~OoSnOE8=H+E:(8:p+z! v9Hʒ%w$Sܤ salute011uşjv֤]ڠpIHk(j_hXg~z+4u5hYz^:PkZjxlalhW_gitu ~ C`؈7qj[si}of*\j5m|0ri_rbl\_KknpFcuL,\gzena&Kp|NV)w\5IcD$J=6DL3yb&)cu&?mG/F4J$YAI"UX>/#E?O41 >0:~*"zj0 SmR=IRVEZO^\?"GL6z${S>/fNf-crl[rknllyqnihi_nj4_Fz8spuct;vcqu<{6z 9dcT}Lx{&˚4Xĕg؍*njaϗ߆=ЇZφt·րG~t9yNŌr˓1ҊOŃh}`|{zbvUqĿ6Ņ>™̡ś36Ya+Sd&\%]jd6h1Jk'7q-3k#'l u^{{z+w+sK"~20x$l]yrv"o jHs0'p'#`~ }44K&17#{6rz 8{saloOs,Yv^tHH;=H.E=.:<#p,"w!%v?NɎ'wAD'%!t"=:8D'8FO(2"FG;҅<*Ԉ6mX;o\)2P6R5(83{N-ż0a97̯KdW5;"U#?*#9hauu06! :_+ 0-Oˮm:LGCDqȼo2-6$AC0K0)820*; )+Ζ>%v 6Ě):ڐ^܋3'i&0kG%cZEcnQ6jH67]لWXыvb8s^EcVa@[`0dcJ: >5= K>)|kAj taunt001ͤlߩ ڥ<ٛhАZwʜgRgۗtYƮd4*s!Y”fOs ~«ga׮oYd[}܅y |%5lbpxy5ylfr3l9m9kCf2tyG}+z5%m!,(svVS^~r"k{`z{| {2}u7aS{92a|m"ul8E^~jE}j8Bt$3F4y;:|di{|QQILyr7CK]}(dVsVc~o}=o7|f<\SxuPJmSh|h#^mh[agmp1|-|;Ka܈FuiXpgxnZn.Gr:]1q\dMah&hQd7rlf;hup>z+d`wneqwLYnYH*&|G:Li0(A%?DI6xa/blFkP"F@@$a7I-L`4/.=GF3')=(:2zq& <]bq$@_ M"tKYA^5;S4MU(3ax=XV%J)[kN4KUKF|IUbNA -Vo}*}OrAr5~M~0{yZyZv[kZmn\qm`yfEf`he_p[i]\^ߌb]_ld8]bgg6dbyljq~_r| ߟ5YԙZ%ڐc❋+\r;q1ܐ[ M߄EKF}Kێ\9(ҝ[ۥڠ)ˤԠ7̞^p1Pv"o+x q=t9V{048=|,"1+{_(6~9yH3-?~ #s] z+w+qO*z/4w 5`.ADG:0I!7#7 {c}xN*'# r[n~OQ63M-6K$:Ep3 z%'v!?X͎2wJ='8x0/(4D9 9IN':~#OE@ :3܉9mU&FB7K6)7:0+A )2Ԗ>+}#:ɠ#,CېY3.m'5jH*bT@ZjFde>p@b݄[TԊpVotRdbOZC]$l•7i`B̌ >ą>:M>t^taunt002ýj„͵;ҽh˩caڠUѢ_65/"pÕraݻ"aǴ`g~h~x-Lc',BwDe?7xW2i]JkM7A:$^3I.F]0/09"E@3((7':1zm# zR6&J y> 3+N.9GN$=#O?@ 58:!lO<Ҋr1#s!1g`,OPXr+[Ǧ4dBaƞP8;!R-ο<5!8hܰaܴlu-7# :_+ 0-OcoKF??g<*@'D=;G:)3=2*A (4ؖ;/v%8̠5BَN+11n(6jE.bJ=[`>b[7iC\XK֊eNpkGbYHq?Z)mȕ7hY;n9p>Y=0M>g&LTWwKgmh4nh6i`:IYv^NBwIoe-\q"yjX[qhok:z2x:L_߂Mryimqsp|Mv5t=ymV1eYiGsXoL[Qhh1yjR=lTA^=bTvjWޟ[L]eYE-(r=A>b+.DpGd=7vS3iVKzO&6EE,_>I1R^;/5E"GJ4",37193"wm- <[bm+@] Mj"*tL Y2h9+]7?]Lz'je8]F*L|l"byC:LPMGlC\]KD'} `nc3cOX@X7pp<q'rHqHlpJzzDzhOrlO}MeMYMcEiDsGXGn}NXzIkGoBgKKpJgzUo_ee Bbd-ec'eGe(7 !e %e%c|2׿x;Dz4)6:zB{;W8>>I3/*(z\(~01yR4,:|u[{!}| uR&y++x7X3BBSB*LC"%F c~-2guP[5.N4:b"1R;#z)-v,?aЍDzW:&U yH;-W/9PN G#Z:I /B7)ֈICՊw5${&2r e)MVbs*[3dAgO8<#R2<5!8zalu-7 # :_+ 0-O`nKF>=e<&I'LM8EBD*.G2(J %=١79v%?XAKӎA7-;l&>ӂ@7pEDYAbT;hCcTO֊^SpdIbSMq=d+yʓ7sS>n>=݈L>|4btaunt004{k%k}x0|KxrRI'pXwid?*~"=Ŝ ߆;78oWhg7~Z^R?L6M6LD{;~gI[=X9h/}s$i+c+r^Vjoqr#}g qkb Y1xl6l]|r6}os&LYYwQjuj4ui6pb:N\{cPGzOrd-[q"kWYqfoj:z0w8Sa߂Utnik[qpNx5|>{tW nZjG}YpLcSio3zyY@lRA[?iUvrWޟX>feeK.(}@B>l0.DyHdC#7vZ3g\KzX/6OM%kGI:ZiD/>N"RP4"4=>99;+wz6 rADFXgW7VPnQ.#/<6R1C8I,'.${]#,.zS/,6}u[}vQ"z+(y1X-==N;)F DFc')-syQa6.R7:h";Vl>'x*3t/C#fFx^;(X yL!?1^0=TN"M&_>N 1H9.׈MGՊ0$!0vj(MXcw*[κ3d@ZʮO8<#R2=5!8zalu,7 # :_+ 0-O_nKE={(EXJTӍB=.Al(DԃChJfZQ֊dUpkKbYPCh1~ʓ=wXAnrT>=M>Vtaunt005|;˰ {Ԅ ⋧=§TӲLç$҄Yi85,Ü sȵ,rR{ 08oZmk7~_^X?R6S6RDz1~lIb=_9n/}w$o+i+wcVinuw#|lpph `1yo6l\}u6q&L[[wRlwm4wl6rd:P]veRH{Psd-[q"jXZZgok:z2x:Sc߂TwilqrpRv5AzvZ1n]iG~\oLdUhr6yjZBlXAa?jYvs[ޟ_LficL-(}CA>l1.D{!GdC"7v[3i^KzW.6ML,iFI8YhC/89:*wx5 U\W\5`X_nf4JIlN9frbbZk^]-!+:5R/?7L+$/'|]$/1{S1%8u["||"vS%z*+y3X-=?N;*G CF c'( qyQb7.S8:h!;Vl>(z*3t/D#gύFx]<(V xK#?1^1=UN#N&`?O 2I:/׈OHՊ.%1tj)MW`w*[к3d@Z̯O8<#R2=5!8zalu,7 # :_+ 0-O`nKE==e<)P*R/Al)DԂD@=xHM>taunt006yЀh̼bôaޱ@֬QBo<2!}ĝzi"a̺_iߐm~w g&LUUwLfng3og6j_:JWv_MBuIme-\pzjY[qhol:z2x:L]߂Mq{imq}sp}Mv5vb*-DqGd=7vS3iWKzN%6DC,_<I1O^9/4B"GH3+17/93 wm+ <[bm)@] M j"(tL Y2g9+]7?]L{'ie8]G)L|m!byC8KPKGlB[\JD'~ _nc)cOX@X9op>I3/*(z\(01zR4,9|u[~!}| vR&y(+x7X4BBSB*KC"&F c-3gxP]4.O3:d!1S="z),v,=_ύFzY9&W yJ=,Y.9NN!Eܐ#X;H /A8(ֈJBԊy5$}&2t f(Xds*[3dAgO8<#R2<5!8hؾalu-7 # :_+ 0-OaoKF>>e<'G'JM9DBB*.E2(H %;١77v&>X?HӏA6-9l'<ӂA6pECZ@bU:hCbUN֊_RpeIbTLq>b+wʓ7qT=n ->=4J>}`ntaunt007nz z/\|e0kKouPI,cw{gb?)!?2߇ዷ6vҌmQh]6}Q]BFF7V.g%X)T=g&RVs~uhc%YwaR1F|(>S^tNppk4pjdid:Ge{YVFLzc2\s!lXXqdpi:y0uoU_[q~njkoi}K|5q=~lY jZlGxVs=^UkNb5}PEnCBK?jO{rPޡH>j^dG0Lx:F?g+1DnLb;'8{Q6gPNxV.6PL%jHI9[iD/?N"QQ5 4?:>:9.wy7 w?kv@w8woHuE}>c>Y=\7g8s;۠;lCW;y5p2q8l:i:qE|Qr[ZLFoTLtK4GrER7M?BIKHM SH<< @J5Z9=?@?oFC++n/DGT D6DqȧLo=#Q1;9!8zalu-9" # :_+ 0-O]pLG?=b:(W(Z:NCJ.0S2)X #Lݖ5C{$OРTeA<+Gl%M׃>>iBMWEaQ@sMfYOl\XidJaSSBn7@}SAmj=}=NU>e2 Ataunt008z҃l✤0h|n<|KQץIЯ*xwm͟6ϴ3*"ӳ=ǜ Ʋ;԰78fhw7j^a?[6\6[D;wIk=h9x/$y+t+nV#w |r i1|6s6n<|$mpokdkpf,7e7ڋьbzi|wef>&Lniwd{yFydp6am{y^lY]˲b/]r n[\qŒfp͞i9éy0w8gqjmprtm^pFzOtod8etlymmLWoniFwkK\saAk?evgߟh>~vEL*IcL>>P2.Da,Hd $8}=6i?$Ly9&6,D,N=IRL:/D"-R/ 3;7!x`, a'KG7]AY`ZG[?'o;_nq3qOe@e7<'W蘕WlYzRz^⡏_}ZeZYZcSiRsUXUn\XWkToOgXXpWgdnujLMpiXV7VuM_E^OMWKZZcGICJJD[DoK?Q~MpW}C63m9DQ[JeJBhH[(e _k n[1^1Oi(3k0+i%"t16Uu-j:qAM:2rD|2Tr)h3p8M~5/q>";Ty.n?vF;0yHFn& 4fg o)!!aZYSG2FG;n4$/%j%;} Qؐ$^Ǔ.~)}C:K}*E/1B`S3k7v R[ C\1B܂^NlW2$U% B D$G,W2w+ѷ/c@qݬI68$L/546zal07$ :_+ 0-O̒^pJHCAԝa99h2kGJW#QOFA`57h2/_@N(b՘1p\D7Xj-`ہGFhZWuRbmLi\wp`؊{dpZbn`Sx>͓MmPn8>S/=F2[>,j5[|taunt009u~р–╽/_h0eArʈYN⓬Kդ,^xч;.ҽO,yʷ)NP{1ׅil{:qb|;|{xxq pL5s m%n$x*.r&@]_c'QTYh y|6b+-Do$Gd6 6}N4hPJyN 6D?,a9I-N`6/1@"EN-'/085.xq( <]bq&@_ Mj$tKYCb6z9en`QZ?8Hg7_=HELY?iZX[U='{2^l5B|6}:y>yǑFStI9HvLˆJ7Hu8? @A;uC DV<ĖA >_,s2:3?1u25D*u-̊,ER̖aNoTHlKrc3Sm'Z-’l]?e;Ji40l<*l0 m&5D/<@K=F,f'13K3-;?_6wGLID ~Q"9~)%<6Hx/ ,uitUI;9:LNJ>(1. G{`#f! -{I?>-}4#P)FQD.G;mU"7s$wV́Gd̈`7'W.E_KJ ]Dw*qع/eǡ@gI76$K/538zal.5$ :_+ 0-OҖ]oHE@?uأ`UxωanugpgiqP3HQXcɊ>=)Y>טftaunt010ېЦ/{ҁ.lDzuĖĈ]T֗>ɭ+gԟЃք *ֻJ(q뻞*rVY{nvx ^͈mЅ`҇OLJOc`"S1I N%] W/[0_&i@RSP(AJV@"Bus88,t9IFMs5/K@"]K.A/I65Gx' }5HFx5:ٝERWD|Sw||h9kw _8b{Wa-WeM{V/N^eo/acKyS;NEE{HCd[{` Woƀό'~Nj~Āvp@Uw5Ic>ʏq$΁kNsICqD1tL/t?'o8?7;PFšI>IQ4e0ƚ89>=CLDDPTȚXLT _+;4I5 Ό%A='|> mBRD1=WĆP-@3-Ht`2bR(5,vUG=E{QY?BR[/H@q@$2~#\€BpƉk?a8R~s#Kd^YzŸ+qۺ1eʢAg߳L78!N/838zalu.5$ :_+ 0-OИ`oIE??ӥc<"G+{K*|1v0$ 'x$qƗ%p[ v!t|+kjVdZfdp\ak9Mɉ^lnnbemgTX7QNRRlĈ>x='\> avԟitaunt011Đɚå ݫ%ҁ̐=reuЏ]S㟯>Գ,mrkЊ±<*оN'sº+rNPwۄ1;nsl:r}֋p;}izneu1uz5z x/x#.{3w'w~Sbj r,`"bMfq w}v88w&=meufwiFlobojc{Rlflya-[q"lYZgšeoŧh9w/u8O{ւO8kmqrpPp7BsoW8thk`lLgdlr;uyZSph8p<\{f| u9^^F*LuA>?d*.Dn!Hp7#6{N4hOJyQ$6HB,d=I1Qc:/7D"JO.+44;42"xt, <`bt*@b Q j!(tOY=c66[6JY=x4fnaM[A8He3`x@IEQX@"jUX_T>(y-^l{7rDfo{qdC8?_pq]rz]sw_r}WRqja{`a{dlrbifvoasgjkhsQZ|hxlixbvjqkxYW\^f:\x߈~sFw-h7mрd|m/bcXЀ`)U[t|}*naYۂa>ͨb<#l)jI1b":\5(h2'ja͘+WՑ#_Xv|*Z"]҂!_Ȁ4QmO^[f\c_ViDZkψy`nnfc^hqG.@[Ynw=0=!N>q3Ftaunt012~6dz/ˆӎ>̀fYɲKĦ,|gdF+$ŵ+ĺϕ⋻<ĵ47[imE`،=E6o9o5b9hECH8\.k%W=N>p'fќ~ jk,hl"_2N<||8nf|8J5/DY+Jd,9{5"6h8'Ny4/6*L,IGIZHC/M".W1 =C9,xZ6 _6nQ]=fYUFCB=*j^Apr6!r(i l)G\Rds-qŽ2eCgʹN7;$Q/:3 8zal08$ :_+ 0-OcoMICBf<:N8SLAV;3BH0:O 3DE71Hؚ'LbW+;=k3EރO1iKWcV`aLae\pQnefpm_YXcBu—ɍiGb:=>CA>v3ý taunt013} oӐ.klJd]PǒJĤ+dtsiǓEˢ=ͭ*ʦ=Ǔŧ ݇Ε:֚76Vid6\֊:E5o7o5cz:c܉A?B8T.f/R=K=k$gΞz fb%^ dT2E;x6|"i6n1t#^b}x兎f^cbf,7}_~Duӌxo~ir}Q_"zse~@K'Ldgv\wv~?vd}o:Xj{o_PVϣb/[m gXXqȇdnϑg:x0wq[kwj焝fkqrmZp4Ltd;phdGeiLcbetCujXQj:fBFP怋W AC]JW*InM:>S>)Bm.Ae*19}A*1gN(Iy5<E*Y,JRIeIP/Y"7\4" I %F=9 x[C >M~r4]y;MMI^GsRVW[B'1Xm_CHV>fZfYIaD]L?暊HsDw9xS向K|SY7Y6a2h5w6ܠMg\>5m/s:4i6sKX`LWeeLj V`\a3P^VJO>IBHKBTXKOr=lBD>X::e8[HJECZlugcs%f6j`%kcr _-b-Om&3n.,n$"x13Uz+o6vZ25SDC0U֛5aw[8xE>,3_taunt014}dЏ0mlAa^zWόAŠ+csbǐEȝ)Ǧ,ɢ=ɓ އɎ:ӕ4z6Qi^6W׊<76猺8댽5dr:]jD?F:V/` S)K=gdҜq _b$^`W J1r6s"bw6oTE*Bk3Bb&98v?20gI.Hz8GE,b%N\ImLY/b"8b5" S"M<Dw`N GV70h>5m6hMW[MYhEO}nYf`d.RfZOS=LFJ>DY\>RrBGEC]>>6;ZPP7Japv&jbw%j8o^%j"bsn\*_,Ml%)l-%m$y :Jy0m:sA; sC9Ty/n6tv=M:2u?>B>33dtaunt015EϦ/ԁAt^Yѥ>Ź+tgÕbȥEƲ)ù%Ǻ+˓ߊǝ:Ш46Xig6^Պ;74o7猽3b{9eۈC?F8X.f-T=K=m#iМx酚eg,dg1|o{"p~o;z$abu煊o`jee,7UDyodpwSex{eUI'Lcmv[~tFuom8[n{p_V\˧c/]o j[[qƉfn̕i:z0yvXk|g艠inqumVr4{Iw~b:lhhG}bkL_dikBxyRTn9DAFOXK6+f`(Eb#/;}9$5gC&My15d(R,ELI_DI/S"4X3" D E=3 xU< v5gn_J\5>O~d3a4NMC\F"hQYPXA'v-]maAGV;f\_YHcD_L>蠍HsDw:xTN|TY3]4a0k4w3ߟNg]A8l0z@4m5sQ]b^Y7^}ރnft{.eflag=_[W]LUns=gqU[FV]OP6LadÄg9^b燼莲&d#:퇿v)(zr.u1M+)3%*! FJ9CLF MFT9?tHF-JGS8CtME2L13213.C02-c Sa(4Z-nSLk=,v4>֒;LƕBf8v_/LD xB<7Q)NTN>UJ\]H߅KGB0܂eBmp5!p( f i&GYY`s,ú-f?ZժGE<#N/6?7zal4 = $ :_+ 0-O΋[pPNGCԖ_9DS CW&TE\>4KLq3Ftaunt016~Eƴ/Ҏ>Ɂ_uYdzKŦ,~geF+$Ƶ+źϕ⋽<ŵ47[imE`،=E6o9o5b9hECH8\.k%W=N>p'fќ~ jk,hl"_2N<}|8og|8K5/DY+Jd,9{6"6h8'Ny5/6+L,JGIZHC/M".W1 =C9,x[6 _6oQ]=gYUFCB>*j_Aps6!s(j m)G]Res-qǽ2eCgδN7;$Q/:3 8zal08$ :_+ 0-OcoMICBæf<:N8SMAW;3CH0;O 3DF71Hؚ'LbX+;=k3EރO1iKWdV`bLaf\rQnffpn_YYcCu—ɍjGbT==M>w5c|#taunt017­ Ш7ߨ-,VrmȢt}ґPhޟ&$aD԰?,l!b,{rlܶwǛt݋1)4{cpy4j^\4U8W8Ue|qmGL*&kHJ@SEgNXOSA -Zpo=iV]BdFyG{4{IQ頃SmTsOzu[t]}YcR]ScLmLhM[Sp\КUjRKhXSpRgeows􎿧Vӵ4syϬ>jԲ1ɩ>kǙ}֢0ϟTėxѡ.ʞRϝxޫ/٥`Ќzݑ8ؐ_ȍx֑8Αfᓥk뜦9星BưxԴF̵د8ˬhr-Q%q$|m7t6H}/.~8,," <@3?FGAJ7`.7Ҡ%9N`%73m*:؂M-bMJ[gO^eFbPagUՌi^opZ^ZYZ:g%rэ0shFo=l=K)C>LJ$wave001S©fSԮL`żHK$9Ǣc5ݦ ҳ=g[i:}Pρ8O%ww`ͽOogugqԉY21Ǿ4,Keb~>n_s.mc#Um^10FMM1$kEI8]l?$/I?d)-0,/+N7F8*L !-*N&D(+L:;F'C'OHeN#=" [(&0Z $5L@9-Me:@y*\K0bU(hb,ԃq0kMUG-}bEI158RPKJJI{FN6ꆕI 58&nyz2bJ DAp-8=H*K70Z8EIbѾV9=!V-?.#9halu19 ! :_+ 0-Oşl8PKEErŮo08%H *0'@0D?41"܁{@㎧Mo(s7j ՟AJfBc\;T6}^EX^RqvZutcܐqdʒDE==4=EH>]Qjҟwave002gɧei۫?iкA^%SқiS(6Gs]h>ɽ{OCV7Ѥu}]VxۿG"~o"xgpӄɠ2 ɽ9+&ú>hbȁ>rUu3o9p9oF.~G+}5%Ή ,(׉zH Ӌ"}|~ }24ve4:2o}"tD1tBsD͎ =@Ƥ>Ɨ5͡4E|Ph{BUO\hte{z=z4p5|VzY:dllid#_qm]u^ah8k0{-{<`nr膡mqawojq)Wu9i0fknn|YlEvnBpus>~)cziZ{Lp~N^Cz^GG\J:V_X&E`7J_d4]9]m]Aa_Z]W]h_U!@Te*OvAv5M2ߊ]]^k]m`sbxjEj`lDcp^ia\a܌g\alf8abik6gbns~u*UމV*ٞvPΑs@@АqQB4钞8Ֆw6؏j7ކ@,)ٕj+J ?ԇwLL=1͎/ˇZ(ϊ$Гj#ՋXِ;|rBxV7|WЍzaے5XۇNdΉEZփTŸu^*[Ge"Qkj1%d.Qh fm%Bd&h8^|W[\(^'}Oj4f),OwNN#N yN[{FX${(nio*p)O{7{)+WcTdbIBM_(q<8A!Mq㏠zHo)g6k"֟B[LfDe^煴V8^6ZfTZ}[urd܎tdɏF6_=q!=T>xw? wave003l͢nv9VޯFc%oՒh}*O8ћr4ϯz増㳐5;A⍘i˵cAlLv [eW ZǷs@Őzʠ ;.(=kd3wUx=rFr7sB0(}3%!,(فOˋ|}| {04YJ59/Zm"xFl wDw7Kʍt )Cĩ?<ŧ5EqPMOKœ~CAHb&s]hXg{=|9q5nWzYJlWkd!`wswp_u`iȮj9Ľl.{#{5ctu鄦:qtay6ku)Ww9i5rkpqrf^qFxniGsuwK=gxn~(t~aZ-&]A(F->;FFM"5zw'1b{%Hmd47HQ$GI)\~D/*L?U384473(z6 ]0e-565(a.'w.)}"Gэ0T&wBI'*}GC%L'KINN4JJ|<;k*Kh:d\.0K?:I:.g0DDbK3}6"L$5+4vhaMrZvh2tW`7p :_+ 0-MOѱa7vKeIkF{Esc.T8@F"o0 w0=c34L>1H.c&}4;ܗb@ W(i@4kk%\vD[OeFdoa膖Yڌ`6]eVZP\,eՏ==NT>=0@wave004˭ ̫<zҢ-ݑqoszϓW_џv"ǏXp4ֵ)s Nȓb">t wsXҵ`ɠ\Pzv2}*5zgd3sUs=nFmFnBj2}(w3%~!,(}OWovzxv u0j{5@7v5u9p/BPs7H_rFr72ɍU c)C?~<9vET}P9|32ēpyCAxIDl&UXh@attv=vv9tl5RRzrT7gAfud!__OtRpc]u^bi9k.x{#z5X^Npz9\psraw6it)Uv9xd5UipkorL]pxDvnNFqusK|Lucx}jx(ko~Dg.'idA([R,>vBCD2/3wQ4.bW.EmAF7-c$VYInTV/^*a4J B7;zjH ^k-JI5bG\]]FgE"D\o)NvJv45 \昋\n]hZh{ar]yjDjYk_bb]gaXbojW\ma6^abheeafkxp~ۊ'ὡ4̇X˵qʖ*ϸa⿟ҏ=[rƑ:΋ɆrЊ<؄ී ƓGܹu븈b澄JÂuŃEJZ9LӲqϽḢ=٬籢7ګ]H.QM&G)F lN:!P4VV*7]0?U&&Y1q^c`,j,Hw$/n1'k]]Y!dVp0h''x%Yi"h6r6H~)0w:$iEYn6aaNO\!'p :>O9<>D,e"18($a #w%}AύN w0E'${@ =G'4DN30/EW8;J&5ib7dG-/;56I3N _-ay0F{BbK3Q8"mM#q6+k4Ohuau0r:vD1u8=7J! :_+ 0u-0uO`7LK@IFDtWBsc/84)@"N- U-=D/52910*{F#}!6ڗA 9t <%i*/kM#\U@\pKEoBdK\iU:d[6wYe_QZ8W_ԏ(`ėpF8 >S>*6R>0@mwave005Ƀ ŪzƿĺIis`PͰGʳͰ^ny;/s XQZ:Ս; gsYWBA] P h-l0g_omv3qjUj=eFeFfBY2mus(n3w%j}!{,x'n{sOJ^uy{vmfom2l0[p5:2dv5b5_/:Fkj7>uPkiFli7.sɍJ V)rCu3iuApK[rc[bkg4gj.^z#ix5LVDfe9Jn\pakt7lcs)mPt9f\5Jcn\ipCXnfAsmEBoujKsLb[xiao([f~8n/'Wg@+J[+>aG@D(;0wA?+cG4Ah3T4$o$DgIyCd/k%h6 YK6JzTW <@4bSU@B9 09jSt.6YrRb3tPW?h`Z'nEb6MN[0BG}_=[h(NI~/eHPZ[=iF!pCXdv)vNmJm4|}{~5z} tUtUnsUhShgYrrVybDbYc_ZbVgZXZoxaWUmZ6WaZae^a^tceh~ļٯ1ⴶ^Ѥg-ݦpܰՄ%baaƽOaIZ:=Z:=b;)ңZǮت0Οڀܤ:֞eD)QI&C%DlH4!J/VO&7T,=O"R1f^[X(`)Hj"/b. c]WT\~Vf0_$'k#Y_ ]2f2Ho'0i7$aESd8[aKOU'e <>O65>?(D%+8*b#w! }9΍Fw/='} 75 >'1=N0+,>L3;B#3iU2oC(/:! 50(,QJ+a^0F_@ejL3?:TO#X8*T4>h]a]&r.u5/u,.8:!q :r_m+m 0]-&]Oo_7:L0H5BtC@qlc/4/(9"E) K)==*5/31.%{@}"0ڗ:2d 7!i)*kE\K:\`DE`=dBTZN:VR6fQDSJa4NVӗ'V×`@8!>e;>/5S>0@]wave006σ ƭzIig_RͷGʹвf̊v;2q YQW8ԍ gvPWY=>XI c-h0e^oku3oiUj=eFeFfBV2jts(n3w%f|!z,x'k}zrOGZtuzqlbnm l0[o592du5b5_/:Fii7;tMjhFkh7,rǔJ U)qCt3fpG[r_[bgf4cj.\z#fw5IUAed5GnZoair7lbs)mPs9f[5Jcn[hp'CXmfAsmECnuiKrL`Zxf`o(We~9p/'Xh@+J]+>aI?D(>/wAB+cG7Ah4X4$r$DjI|Cg/o%k6 ]N6NzT[ <@9bTY@B= 0>jWt/;YrSa4tQW?h`Z'nEa6MO[0DFx_>Zh(PH|/fHP[[=kF!oDWdu*uNlJm4y|x|0w| rUrUnqUh~SheXroVybDbYcfZbVg~ZX~ZowaWUmZ6Wa[`e]a~^pcag~ײ1fҧiުp۴߄%bbbGaIb;+a1+b *ѦaƱސ֮/̢}ڨ;աeD(QH&B$DlH3!J.VO%7T+=O"R1g^[X'a(Hj!/c- c]WT]~Vf0_#'l"Y_]1f1Ho&0i5$aESd8[aKOU'e ;>O65>='D%*8)b!w }9͍Eߐw/<'{ 75 ='/I3;@#1iS2oC'29 5/(,NI+\]1F]@ehL3=:QO#W9*U 4?h]a]&r.u4/,-7;!r :s_n+n 0]-&]Ok_77K-G3At@?qhc/1/%9"C) I)=:*5,31+%{=}0ٗ7 2a 5!i'*kC\J9\_DE^s>S>0@Fwave007ʃ ȣz˷ֽIgs`QɳGȶѩ^nz;/u ZQ[9ԍ'gvPYYB@\O i-k0d_okv3nj_l=gFg4hBV2juu(p3y%e}!|,z'j{tOGYus|on`oo o0]r9;3gy5d5a/cJ?D)>0wBB+cI8Ah4W4$r$EiI{Df/n&k5 \N6MzUZ lE!rFWdx*xNoJo4x~w~0v~ rVrVnpWh~UheZrnWydDdYef\bXg[X~[oxbW~Wm\6Ya]ce`a|`ne_h~캿(ܣ;᭸^ӛg/i׉.aơ͆I쩽 HZIØmD𡻡oCaڅ)ԙZʥ۟0ϕۀޘ܋דc>*QAI=&: jD4!E/VI&7O+?H"&J1^^SQ(Z'Jc0],$Y|XNKT{V]5X#'e YXX0a/Hi#9*e /8##i#w%}>̍Jސ!w+A'%{> ;C'-@M).&BF5ޅ;%+hP4o=)02/3(3N L+a`0Fa@emK3@:UN#Z8*V4@h_a_'r/u6/u-/7;!t :t_o+o 0_-'_Oq^7;K1H6AtD@qnb/-2"> >+ E*=6-5)71&)ޑ8"}4כ19[ 0$i".k>!\I<\^FE]>dh>iԩwave008kĒv̌ [ŏ^ a?i`ȔSLޜ,`Yj؋͝<+N'nά+r̚v 0;[pq4f_i=d4d4eB1qs(m3v%z!z$x'}rOn}rxikk k0y9i\59/gsf6^{zgEf6Rœ} 3C4;:Ew}P_{\[qFAIn(tYsccu=v9k5uSzU]gega\rqtlZrZbd9g.x#v5eX_k愙9~lnas7io)Uq9d5uikomm]kEqnoGmuiKr+Vw]ߟn(xc~Xj-'~e=(lU)AD>DG42wc8+cn0BhPKF>g$c^I(qb[/*cCd4"O9F7|.@zuM <^)buL@a. L.JtK+YV^3ST?cW(H_6wQZT?G>YkJLI~QdGz]Y`hC!EUdv*vNlJl4||0| Q堙QnRhPiUrQyaD`YbfXbSgWXWo_YRmW6UaX_e\a[_c|MF@kZQOěAŒC?}EpPPE7jCA3X67?F:>]J=rB^"ß$ˈ&9IəQ?pF:zCW95N1'L7.yF9/B7VA*bI,D=(+9EvY=!~D/{J,vJO}9Q,z*9nP2!w7-u;(oVCt8E*s+R~RG"S.Y+KZ8`).3}a4$(=i'w%&wG<$=F #!2H?FCB2c'Ep&7g!7t!6{&S1W=tVMEr+Z-C>eG=e8L#4+v4]haArJv[1uHT9X! :_+ 0-AO[4gK\JbDvqAs^*>87J$L, Q*?E07<@;33ڎ@&|,Dԓ:J[n:*q1:zF$Xd?[~EdzΌ===_N>eߑwave009`\t] H6j2d]zfT焥O[Fz5F_vxߋԊ83̴M+3zڝ̥̓ط 9Ԕ݋Vij9^^c=^4]4^C;jIn+h5r%uv$t'ymOnveff f1~9Ŋ5Ø9/_dceaoz$3ڄD7ÁۋمӌĎEPpEЃBןL'ƙL^sl|=}7q9WxYml]!ZmiXuԯWba9c.t#Թs5Zjoʢ9iÝlaץp6jk=Um9h4kiqi^jConFlvcKm+PwWݟi(_|p^*&^9IH'A:0Q N}DV<>XV5LZ=Jc/M?$Al+ImP(Nv#8Xt:UnJ5@roBPq4RgWp#)`o)\hJ)Klp4Wl?8>sN1C}#GK}IHuJ?3zpP@z9Bt["TyL:zqLpbsI+N?&1ek|HO_DJE\4ii/Y+V-P͐?mKfgRj=|1!3{E}?YXJGASSh6ԊL.y36"G$0(4thaUr_vz3v]s9o! :_+ 0-UOVFKKF}BsY*MC2NX*T3 X1DP9dNL֌?BE2̐?X= 8\OkA8r?KvI1W{DXCb;ir^Ll_oNbQ[mfPxɓcu;nK=z=xL>:>Ojwave010|{䘧3wNڐzp7),=ϕtлĮŔ ܣޅ149Yio4__`5Z:[:ZF1lIk+g6u8FFs3!Ai Es)Pr(LjH-6F$/(?khaLrVvu3vTn:f! :_+ 0-LOSFJJE}AsV*b?-]S%i1 l/Cf6E`G֌R<Z.|NP\KSomV3rQDx],ƠFXHb?b\߆NncoScT[seYrˍhq?ns==K>+t5wave011ƭġ8ʜ0ś}ࡎ9ٶIštЉٍۗ&%iEͫ?ػ,$x,uٮ څ139apy3k_s.m{*\wcZx+joY6Z?IE/J8>Bh ?y%4c!Hm\4%DHQ+,KW &g "]L.6L2^SB/74~Z2G~:(.zgB F?!\YEVO dCm> {-" R[3MN?]S&C]8GX|/R6Ymx=U{VQUV\J">Qd~%~OsCs0M2XXX芭YkYmZg]xg7g_iE_o[i]\]b^]jd:^pfh8epjm|n֨tKՀay֍~DՁk֚xfÔ{˅xm˒sHu̖rp̡nGÁ}xׄzHyvtsPsprlRpwkyittBń։|fztg{T2NM!LP+:ya8-^4V^'dg*FZ$+WjoY_ve*sn'nJuv)PM<-Z/D߯BbJ?9"M#5+4harv3t:! :_+ 0-O_7NLG{Dsb.J:BK$\-c+?S29GB;>3ҏP&|6D̔E!LqnG+g;:zW$[yA[Gd?df^܄Rъ]6TeQZa^=jĔRiAȌ=,=m!?>k3<point001UыnW<@ޙ?C#Xym\z*s~tIprpdieRckiwy  hn؊]݄{h]si~sb*`f<sw2mlW~u\g^XNhjI]r=*wz~a(t{DT'q[1GYA!J<3BD4yY#(cq%>m:+F%G$N=IRL:2B 5N4."6/;~ z`, JMVD\KX\="HG6%V?0M v[v臒wkymug|zx9f7茩{m}c}䋲c};o:or|nBcsmA6gaqs`f(WhZpk7QdGKgqSaxa]FR[A`xO\?BZbartd5f_O^XWaOVR?[xIV^>VQnWqzXCnUGlqsoy vnKyu{kBroa1Qe G`-_ g=!h7Tn-7t3?m(&p1r^yzv,u,pJ$z/2t'jXtrp!nzhVq.~&m'&|Y$~87zH+0<$~ |6p{6wuafqOs#( S{XwOSD>]6e@77E+b=,z;/}1J6XԐ.'wKL&$)}!E'D:L'NNNM=ۄHQmG;b4؊P&ixF6`1/U#7P9I26Q)2Z:E̪LbY5>"X#A*#9hauu3: ! :_+ 0-OЧp:QLGHrϵs2QACLe: l9=\<5LF1K6{_/}=A͗Y((FڌU1iE;ke.\nN\\ETE]kۆzg:qh6iDr_aNbr2gė?jW9==Z.>{3큝Zpoint002R׋6Q3D><$HxpFx,#x.ˉg7ʢh֕t!Ԫ~*%yu[Ԣ^uJQG]"\ːlo@"Tͦg@ܺqӹ 5*z&ڵLELǜB/115/G۵,ϱ2!Ƹ ֵ'²L䔩 v?V>usNo}kSrQW~"C C?ie"pLAɨL.ȷ3qyu^rQD_ʎ^AJФMhnmh\t}un,vs?wt0^fzyl}By{Kvr{#onMjTnŠwié¸ ‡|֌ xn\zh|_*id<|v2rsS~XleTWeqOYr)%kaۮ,}CU'q`-GXCUB.BJ6j\%'cx*nB&WN9WIa5HIKnUBLRZEdF[`="QAEܱ#ܱH?2öMĶȉ\ȉĊkʌlƈiz9D7ُnߒeߒeњޕoÜ:ܚo{ hXeJmuLmg?c&=fZSdF/dM0hq3_y^C]sS\)BZ/\4Sc*U^y#V`YIPqSOAFNMWkz\r0\eOel:bb_\hrt3z#Gz2y{@!z9R1F7>,#0j]u,o+hS&q*3lc}nw j}bSi)&f(rX'};y9qV0{5@w' wE}wM~ErappN%~&-ereySsJK?f];Fi0bm2zu7уcQʎr`V*xjRC*;DOHRN{WI\ UA{3Zpoint003UٓER3KߪK>#FpA' 4ȔgBƭi"Фt.͸!1%مrcի_|HWe"k~wH^̰iMȁ}Ÿ 5,L‘eL֢@*00?%ͫ,/ֺ!ų"޽ 'зHʮ y?^EwvqoXwQ]"C1AC|ǒk"tIƣKϫL.κ3s~tawQIoԎoÎ@HԩMuâsphcw}vr,wv?xw.`iyznG|{NywĄ#xtpTvƝiŧŶ ~8zt\h}a*ig<}{2ruUZmgVWhpQ\rL,͌kіc(}AT(n_-GUAU@.fI9jY#(cv)>p7'D#C K:INJ62>&8N8*)nB&WO9WK~`5LHLnVBORZHdGZ_>"PAE%O>/׻M׻ Ӻ[ݎmnٍiʎy4_F8pc݋fޔ:o9dΝ|tuOkHyuHtg6l8n[JkC'o+pq*gk2a>#emz gKk;dsIc)8b(cj*Z^!]hz``e?UqGTA:UQqhVy0TjO_q:Zf_Vmr}3#M1@!9R0D6A+"5d[p-k,bS&j)3f]ix!f|]Sb=&a(k'w;t9kO/s3?p' qetwElZrm%y&2k~ujxQKK@fn:F{0a2z8փ{QА`j*z{RT*LEdHaNXJㆢ] X#F&!:_+0-O֨a]WWrַ0NW"H GKJ=R.Bހ<ςKڑ9;Q-6>iFm;[^[qBjDy {9{tD|_oZlrzj{xs{n4l== <> 3Tpoint004wϓ8r0`Ң=Ww܂pr$R|YˆaTi>ɏ:{<BߢVztũDԻKeެ&d"\̒hfܐPliLĸ}{]y1-{')p6)}@݉+5߄5C2ڔ(א.!"ŗ ͕'̊O~󎺉 Ҏ Fvc|9 uw"~4{z~?4q 3=)00}wzwQb`ɔlC>&{&bhom{|u=}|Fsz5n_x\Zyatym#ϬdkfR͞bޏggsu1ijŠ ]ڊkhXrgŒ}lcd)Ph9iz0{f\j^&qZ]@kloDctۇKב+gzq\֍(p}IK'vL1I[3"@)6f>7yU+akBm9#E'A$N8IML5/>9I3*"3+<~!z`' 'et*6vinwk}b!! :_+ 0-Oh8TQKIrl0/t<"' (=*5|41z$ґ}m1ʗW4֌iu*k\G\XFNEW܆Z:eEdDYZ{YaT×l`N9==M>v31point005œԞ mƟ.kΏn#~iembXM]يTӗ[w7uʽ=iҩ,WԸEJ>ϏS֦oiIth^OGo e`$/hۋ1tއ+z4{5yC_ v~ᒝ(.$i''qߞ~TN[|ro~by 2w8~u81!uU.*Bl"Cb(!8}B2iLJy8)6,G,NAIUL=/H"5P1" 6!89%x`0 EƏ\r};,c"td@V9}>%is3Hpoint006zqΝ Y.UݚȎnߎ#nhbRmKX9Fҋ?̘s[iFlȹ=ZΧ(Lѷ>D=ώCѦai;{c^QHo fZ'/~h،0sD|)w5x+iazwiZ(Yl{II)IjB<>R.+Df"Dd##7}=2iDIy8)6-H,NBIUL>/H"4P0 8;7&x`1 {0|M|-y~`[~`{`kbmv_gidyo7o_rEiodpfcf䋕j^~fln:hppr8nppq`s|Yr{~v،?zsXȊiހ$eډ{&ycwg|0vpZu0p~Z܆ ~NssrFoVkqlCjG|c܁5{(ʍg֓Ҏ=ȕ̏7ŏ\+,~ |h/ 0H!E'4 %(nU%t5v8rI&w;7w-+eS(l5m6hI)m<7n%&xS }25}(:1-ne%t$wdf^(j#|% mP,q&x15m#6q$nfiOr>"tB>8GƏPus;,V#tXAK:q>%a=K@,~?>~d2ԆS ӂRhz1̌<dw:*j?Z&*qٻ.eɠ?aI78!M/637hal/7$ :_+ 0-Oْ\oJGA?ޟ`5H/E= ]%h#5Q)

37mpoint007~wsѶҤ@th'ƭpž\٢CҙR&鞞׹Eò65޲*mݼ"TûWAˏuae̪k]NIqc m#0go.rCw.rS/*Dg"Cd$"6}?1iFHy8*6,H,NBIVL?/I"3P0" 897&x`1 ,>'{AE<>\B*Z?HB-A?g2цV jMhz1oy"+*qֻ/eġ?a߲J78!M/737halu.6$ :_+ 0-OД]oIF@>ԡ` ^% h$3S)=.xR>3kpoint008j #͞zԳ-нqsYR Ʃ]jgކm$]SV6ɕ g{TSY8э6ӐI;YX choe.jqBu)o9p})V`z`gZ}z+Jl|:J*IUC<>C/+DT"Dd7}42i:Iy.)6#H,?AIU>>/H"(O1 678$xM0 <; bM.@= ,j,t+ Yj;b9k3X7fHWLc0dnJBZ*1J~R+^y&AI3TCQLX@R@'d([ny*zOtCt5iMi2gf\f\c]km]m_]qWbxh7h^kE~bou^ix`\w`xd]hblzh:~apskk8|gp_oRs~Ks⸷(9ӬXؔq.ݖa·毾=٠[㞼Gߦu쨸:鰲M[ Gᔹ뎸i镴_ߞ뜲b礮@Z8=ܑϟٝ3ދׁ6]Z0Y"{,Y"Pxhb4 a5Oc'Di,?a&}$bp.eTg+mh;no=iIv,m i1!w($t(@&Hˎ,!uI?,+({,F)>BC%B?H0,/?M3Ӆ@ j8h\2o[# F% N$3=)<46 /'ΗA{*4ś-<Xڊ8 i.-zH\`BcpP7mG6=UلYTӋW_drZDaSZBX(U5afG:p >؀=!N>3wpoint009j #͞zԲ-мqsYR ƨ]jgↄn$]SV6̕ g{TSY8Ս6֐I;YX chٌe0frEr=m4m4mBJ _}}(z3s%X"t'w(^owS=L|d!ayTyo{ y0d{7OJly8qw1Sb!hu94xߐAtx4rw9:`$i5u3s.] k>C/,DT!Ed8}43i:Jy.)6#H,?AIU>=/G"(O2 669$xM0 <; bM.@= ,j,t+ Yj;c9k3Y7fGYLc/fnJB\*1K~R*`y&AJ3TEQLY@RA'd(]nu~*u~Nys@ys3jj0hf[f[ne[kqZm[]ra_yxgDxgY}ifz`dt\is_[r_܌mdXp^lc6^b~fhd{eamj`oSq~ⷺ(9ӬXؔq.ݖa҇3٠[Ì줼Gޥt맻:诵OƟ Gߔ鍼h甸_ޜ隶b棱@Z8=ܐӟٝ3ߊځ6]Z0Y!},Y"Ozha4 a5Oc&Di,?a%$bp-gTg*oh:po=kIv+o i0!w($t(@%HΎ+!uI?,*'{,F)>BC*B?H0,.?M3ׅ? j8h\2oZ# F% N$3=)<36 /'ї@{*5ɛ,<Xފ7 i.-zH\`BcpP7mG622=xN>3})point010j #͝zԱ-лqsYR ǧ]jgㆅn$^SW7͕ g|TTY9Ս6אI;YX chٌe0et3p=lFk7mCJ `~y+q4tz-Zv%x,`oO=M{f}alTqom m1d{7PJly8qw1Sb!hu94xAtx4qw9:”`$i5v3s.] k>C/,DT!Ed8}43i:Jy.)6#G,?@IT>=/G"(N2 669$xM/ <; bM.@= ,j,t+ Yj:c9k3Z7fGYLc/fnJB\*0L~R*`y&AJ3SEQLY@QB'd(]nv*vMyvJyv4lk0j dZcZpbZhnVgX`ޡ^VzwkDwkT{k_xabq\ZpaXpaoklPnVm~\6}[a}Z~feyc\l]_bSj|ⶺ(9ӪXؓq.ݕa҇=ٟ[ËGߤ즻:鮵MƟ Gꌼi蓸_ߛꙶb碱@Z8=܏ӟٜ3މہ6]Y0X!~,X"O{ha3 `4Ob&Eh+?`%$ao,hTf)oh:pnAC*A?H/-.?L3ׅ? j7h[2oZ#+6C)+,q2eBaN7;!Q-:3 8halu/8$ :_+ 0-OboLH}A@f<40/> E& M$3=)<36 /'җ@{)5ɛ,<Wފ7 i--zG\`BcpP7lF69>=ZN>3x8point011؂ #Γzק-ӱGqsRR ȞXjjↈ r$aS[9͕'sTVY=9אL?^[ agڌd.ev=o3k7i7nCK `u*k9rs2Yu{%x~%a rG<K{bu\dPmjc |d;ey8PJmw8qw1Tb!ft93{Bsu7pt98”a$j5w4u.^ mCo}rL~z)Rbw\k}s+Hl|:G+IVA>>D,,DUEd8}43i:Jy.&6$E,?>IR>;/E"(L2 349!xN- <;bM+@= , j)t+ Yk8c9k1Z7gEYLc-fnJ?\*.L~S(`y&>J3QEQJZ@OB'd%]nw.wzxKzx4l kF:2#point012¯ IJ;ު#ȱzơ-АqsŕW~Ȟޚݦ"Xnx<ѻ/o$QͼW1̍ sjͮYX@7YP g/l0ek׌j.lzA|)w4v9yCN d,}5v-["y$$czO=Lc]vQymwy1r{9TLz}9}2Z}f"lw91Dzw7ww96g s54~5d u<|~o`}QH.Õ:tzF~?r(Ko(Z\zJhvp?wq8sg9PXvkR@rHm~g#^ni\`gmo1|-|;C`܈7rjXpgxnYn3~Fr:v^IRK;/D2L31%/: z]- *Jq*\y7:JAPEhKVOQA +Wp~/MK5on0l"lbkbnibhv`i`gݟ`_zuFuTuBkd|ea|k]|kیyuYs`mg8fbfrEnclg]kQq|̇&诠4ĿXԧs仔)תa鱝Í=гq۲t벍:亇Gҹt⽆9ŁN姑1Oب{㣇iߩ`ұt߰bٸ}UZ7Lܤrڱ誡?៧Eᝠ[])N](Y Tkc1d.Vg!6n&4f'f;~s`rzs*x|*sH|1-y$zjYmql$ou!jH~q >{>m:Ccrstand001=ӞbECDڵ@D*-ސg4L#ԫw7̿z!ᾐ2,<-{PȲXm̱TTGi$l~#R$LĺwQ҄k‘0<""ӓ dAubisTNvjMeAoQiQ`\bkMht|}|*wv ト y~ꊂkueTj-~x940vM6xd/qR,xt2Q',<9V046=,"1,i`*r7n9hH2s/=n &]Y$g.d.]O+f.5d 3uT.~?~AvG60D!qE&r|7gceN+|'" pq lO?L9Fv.9|'du(kq-΃c?mRlzxDex[0_5k=nM“z@|O K5=:*oKE4-% z3v&l(uQmrƟ@g֬L8Řbpͱq\>>Ζ?Jcrstand002:ՏbA?=ק@<*,g2+Әr/ʮsݫ&ּ#2tJƧ]fʬVMܫI_ܼ$]q#pH!E®sD_114=wغ(}KzcK_wAubi{qTOyt`GdAiR_JY`_mQbt}yy*w}0{r2b[zvaRhr`gjW!vsoUu[mp7}r*/F1$_?;A")\(H~K(ygpj f[kvymWtZ!VV[/ow:u92iM9jd3cT0i'# 1-T%F*=!<f]p(k(dV"o/-j [Xfc[Od.$a'#pY z0y1qH'|55y$ pEry6hafNz' tqnS=L=F*4'd+k|3уk@’sVwk@pd*h3u6vMHV S5G:2oQD+%1(xGr {Ps uƘ@i֦L8Ĕbp˭o>y!>Rz8N crstand0039؆e=?9՞A4-,xa/~,Ӌ*ơgמϰ~+悖Fà]`ǩJGئIUֹ!Pdb?!@r9̽Vz1s1~43mӻ(uKfH_}vekvoTRrsXDe}AdRWFSf\mW]vvw*yy0~o}2gXzz^VcpcciW!trMmUt[mv9+MF7H~.(@.?DlBy}4b Nlf"EV1'u+IH:t(/H.$a=9D (`'G~O'y&<h]r"m#fVp/'k'^Xif^Sf.c'rY|+z+qH"|5/y$sEt |6la jN|' yrrS?ICF+5+o1j:ӂvCÑzY!jAMs(v34PQ\\.Q;:όXF(*1&|GP vǒ@iՠL8ďbnɨn0Ac!иM*,<ј#kauĠ u:° ;ι$ :_+0-O;VPOUs SQќSSIS+R-I}IւGuRkNR3&>sw">uRcrstand0049քD:39Λ>.-+xc+%ͅ[,Z̘tèޣ(ש ~F`]KEϥ(O˹!I[[;ձ?q5~Sp j v4z.fɽ,pIfHU%00â3'M'-" I2ߐЗ ks2JwRypz|0t}icjS[|J~/syWz}J[o|QZ-cRgH~LuKzyeqpoTYkrV~GixKcRUHSoXmaWwpv*~t0j|2oT~z[_\pj^iW!sqMlUs[mx70upc~~i_j*Rq1a}2WVN_^&NVPEr?_r+$pc'yr;)MC5H-&@.rpjhcKi oh kIpa)a)edk[] `jhcTiTX#UHY1hq8r52f"&<i]s&o&gV!q/+l'`Xkh_Sg3"e'"rY }.{.rO&}52z$ tEv}EmalN}& {rtSDIJ?/5287l?ԂD{Z'jDM*46QV` b/Y1C:^F+*!1)~G"vɊAi֘L9ʼnbnɡm0?a!ЮK*,<ӎ#kauǕu:Ť9ϭ# :_+0-O;TNOUs-XSќZ[IZ,V#OxQׂJr[uO~`0Q8M؋Re~QZ^Y]fv0r?u^<kXy^clWhta܃eYxfA'">->">lոO>"crstand0059ՅC7ݑ):ȚL+ݤ *zf&##ȃ]0\”u"}Ң)ͨ~I_]KFɥ'NĺI~XZ;̱C[6TmӅh t3w.cÿ,pICGV ,ڎҍ̍%RՑyq‎rp2Tq[toy0{{}ok{jSb{J}/ywX{Jdk}X|a-fYiO~LuKuexlnTbgrZ~Ox{otKgRWN~XyVnlTwnu,q0h|2yR~zY iYors[iW"rpMlUr[m|42|{pcz}p|]h*Po1_|2VUN]]&LUPDp>^r7BEy9)MB3H,%U.:D{@y1b Jnt!Ee,'&IY4$/Y)$o78V(p$E~_'y<~b@rKtqYLX.EI?PM&B]:AS~*S8Yl2TBIJNDA L< . -)㇙li}+o z)o\s"lY(n>wr[mihI m ri o&te[$h*kfm^` bkieTkZX\G_/lZ4x5.l9jF0fO1g0&-8!4S.F2>+#<%i]%t/p0hO*q/4m `X k(i&`S$g3,e',sW)}7|7sO/}5;{$tE#v|EmamN(~'! {rvQKIS365<9?ĊFՂGv\/lJN$/8;U[c h/a1L:e?3,)10G)v̅AiדL9Džcnʝm0>`!ҨJ*,<։$ka‡uʏ u:Ȟ8Ҧ# :_+0-§O;SMNUs-]܍Wѕbc&`'ZUyZ؉OscP~n2X9R؋[ESZ_Y_By2v=~]5k]^cwVh}aۃpXxi>>.2>E">="crstand006;օC8ܑ*=ǙL+ڤ +{f&&ǁ]4\u%}͡~+ʦ}L_aKIƤ,QJ~Z\>ɯF[8Vn҅j;w3z.f,rI~BOV ,׎Ѝʍ%Ttyq߀rl2Sn[ppv0{x}okxjSb|J/ysXxJejÀXy`{-gYjOLvKrcxioTbds\~Pw{pqKhWXO|YyTnkRwkv,n0e|2yPzV iVprsXiW"sqMmUt[py42|w}qcw~pyZg*Mn1\|2SUNZ\&JUPBp<^r7BDw7)M@2H*$U,9Dz@y1bJnr!Eb+'%IV3#2V($m68S(o#E~]'y<|b@~oHtnYHW.BH?ML&?\:?R~(S5Xl~1T~?IGNB@9N6QƙǗB195?8#I'/3L L< *-*ᇜli}*q y*p^t"lY'pLxrXnijI n qi p&tf[#j*mfm_U bjifSk[X_&a/n\3z0-n9lF0hG1hX/&,8!4R-F2>*#<%h]%s/o/gS+p.3l _X k'h&`S$f),e,qW)|7{7rO/{5:y$sD#v{ElamN(}'" |rvQJIR36.<9?ŊFւEvZ/HN$.7t:SZb f/a2L+>!>C/="crstand007<C8*A˓L+ݞ +tD$߂*{]:c!r,͛~/͡wQ_eKM˟'TǴP~^cAΪL[>\s q }3~.iȻ'xIBOV ,Վ͍%Rё؃rvp2Wr_upz0|xso|kSf|J/~xX|JjpĀ\}d-lYoOL{Kvc|moTfgsb~V}tvJmW^U^|WnoUwov,s0h|2|SzZ mZprw\j"urMnUu[p4/|rc|p~\g*Pn1_|2VUN]\&LUPDp>^r7BEy9(MB2H+$U-9f{@1bIns!Ed-''IX5$2X*$o88U)q$E~^'y<~b@qJtpYJV.DH?OK&A[:AR~)R6Xl2SBIIMD@;N6QęėB195F8$H,/3> K<-) %)߆liv'j r)i^mf`$iLqk]fbbI g jbim|_[c%f_pXU [ ci^SdT]WY.g\1s0+h7e?-aO0aX907!B>R9C>L5/00e]/q8m9eS7m*>i (]X(i/f.]S/d)5b8nX5zBxCoO=w.Gv "qD,t(yFkc#k2{/ {s%uQOIX=;.@9CŊJւIv_3MN'0:t>X_f k*f2QR'>n6!>>y:!crstand008GփCBݐ*JƘL1ۢ 4xD+߄/~]?\"u-}̝~3ʤy[_sKWƣ(_!VŐjlIʮS[B|c ~ 4.x,KoBGV )ܐrԎ̍/}W{{uނrsll0HtPtqt0xw}lezlS\~v@| 0xnWp@]i|Q\/mRuH>AqeripVVftcK}loAlR_L[kPm[Qvfw*k0`}1lMzQ[WqgWk!zupUy[pf7rA *MoQʛ˖_043C|8$H'*3K2K5-) %+ㅴulrix2m t3m^o"%h`.lLsn]iidI h li j&n#b[)f%hamZU] ei `VeV]"YG\9k\=w06kDi49eO!@Ȭ$ :_+0-OɊ;]WVtYsƔ2EBΜIJ(G%D8;ՊAE{EqQWNfd<`?tU<^XxRahNzvV݀aRvTC=s>i>P3-?(crstand009sϋDoؗ.p>Yب a}eZ#9ሎT]`\AK}=̣VǪA~^A+!uϐpĵuqb|× ⅳ9.,>X^lIfT{,y.x/zLx3kM {%vn{"~t{GnXQ-sq0az($Ti\\{WjP5)G~03K\!%U9c>AR 2Zl Jk8"e)3 $N-I=L+22%"B79"$*8#G(x` n4fEifivGr[EmiIhL:k6oi8m(*pTf[^j*MlDemF]_<`4hi5cV*gSZ]Y]IL_lpZp}5>K3U}%crstand010™pΤ:Fݯ ։a-Ɖ]|qp͓iuyӬހW^AįL!Րθ!qʗ£ ϒ8Ԥ.+Ȗ>R\gKRTK3E9F9DEr3[GU=T5`%c'`,Y(`&NJg:[g ]\\ V2y}Y%~y xm,+~O F')}$;)^U#g1g5aG*i27i!'RR!\,\/TG(\03]!+lS#s3x8q&)x<8{#aDgmEV^Y!r${ _XaM&36ppwd{`/j;l w-'p wg&c(. q8k%w2 *:zm,d#-j+r'z o|tϩ=ZCF[bh3M"k#K+*4ø"har#tBu&L(!:_+0-O:gc\{ƠZs0r(i1 )}#0o, lڑ}d(͚iA/萢wij"kcbCuLR{A]@܋Bew\VPnR[ZVthOV]ʏ;f&==­>I3/%crstand011jöūT޷ hҪ [zrГPnȧ|ݬ΍Y^JͯI!ؐع"s|̖Ȯ ™Ԛ8ٰ.(̟>V\lANU,8&n(n%bw4XK344I0^*E.=3T+6Bk^Z%V]"K9񅃅:giz;sS~d_`{:wQq_jz!0SJ~FBwUg}rBO|"&jfw[rt~3~;m;pbv]cuzppsʼnڷ|wrUܫz[졃i멐跒 FiRጞv^ÕiĘLn5=u:]2I&"FJ;"7+73J&*x`1l#,TT'^3^6WG-_09_#.oS&v9{=t&+|<<~cE%i oEX^#Z%t$~ _X$bM.3 Ey#uiew[{X8dB^w7'_vZ4X3r:$j@f'q6䆆,:zpm/b*2{y6r'n-oNkrм=ZCD[bh3N"l#L+*4#har$vCu'L)!:_+0-O8hd]{Ȳ[s0l+c7 " !3v%5i0 e!ۑ{}]-ϛe=4pib&k\^MrUQvH]C݊Fewg^Qk\XbfXUi̎@f-=um=zH>G34$crstand012j·~íSݷ hЩ ߔ[qrx̕PeŪrۮˍY^J̰I!ِ׻"s|~uƯ ћ7ֲ.(ȠAV\lAQU791،2܌1dw4[I?3>:P2b*P/I.\+B>l:^^#V\N@ :cez;~sSze_a熽{:wQr_gv!0SJ~DBxUc}o~BOx"&egwWsu3~;n;lbv^_vzlqsŊַ}xsUت{[砄i橑䷓ GiSv^iNo5?w;^3PӒSD+G86KZ)'_>c8E}L5geOy7)#e*H!$NAIUL>2H&"EJ;"7+62J%*x`0m#,VT'_4_6XG-`09a#.qS'x9}=v&+~<<eE%k qEZ^$\&u$ `X%cM03!Er%oi`wW{S9`CXwy9'XvT7R5l=$fAb(m7冂,:vlm0b,2s y7s'h0oNerμ=ZDF\bi3N"l#M+*4#har$tC'L)!:_+0-O:hd]{ű[s0h+_8 }# "3s&5e1 a"ۑw}X.ϛb:4li^'k\ZNmVQrI]D݌Ferh|_Qg]Tc–bYQj͎@f5== J>wH3Ơm%crstand013lŶpįS߸ hԥ-|[cre͘PVŮncܲ͌W^JϲI!ڐzٽ"sq~u ;ɠ7θ.(AX\nAVUEIRL;2E&"DH<"3+5/J!*x`-d6m5g8^7j=c:z83i<o#,WT'a4`6YG-b0:b$/sS'y:~>x&,<>gE%l s6\^#]&w$ bX$dM|1=}!Em%8ki]wT{O8]BTwt:'TvO6N4f= bA`&k6,:ujm0b,2oy7s'd/oNas̻>ZEF]bk3N"m#N++4#har#tC&L)!:_+0-O靖:hd]t\s2f*\7 {" "=p%5b0 _ ۑu}U-Лb82ji\&k~\ULhUQmH]E܌Gekgv_Pa\Obt^YLi͎@f-=2K=CW>%i3crstand014lɵcȳVsĚhڠ-i[UwRϜGǵ\T߷yҋW|^JzӴG!~m"ssg̀u1;7Ž)(AZ\qAW_F1?@>8~4bLP0O `j,_-X/f,M?r:dk!acל\RoG7Gc(ce$;`;y=w8s@[Fݡ<ߌx;4i@p!*YT&b3b4[G,d09d$/uT'{:>y&-<>iE$n u6^^"_&x$ dX#eMw1=z!Eh%8giZwRvK6YAQwo:'OvI5I2a= ^@^%h6|,:sgm~0e,2jy{6t'_-oN\tɹ>ZFFڪ^bl4N"n#O*+9#har#tB&K)!:_+0-O稊:hc\t[s嶎2c)X6y" "=n$5_/1]ۑs}R+Лb5/hiY$k{\PKbUQhH]F܌Hedgp`P\\IatZYFi͎{@fƵ==Qw> g3Bcrstand015tnwг;YͷJg-}˗h/hUÜqIw?դ;̽LI`،o]źVnٷG!}~c"gs^ˡ1;7)(K]\uAZ_F;?A?8?eKQ0Pbn,a-Y/h,N?v:h n!eh_Sh YBZ'd8 y.:pdmz3e--~eyv7u'Z-oNXuƸ>ZGEթ_bn4N"n#O*,9#hau#tA&J)!:_+0-Oߦ:gb[[r޵2`+T7v$ ~$=k&5\01Z ۑp}O,И`20eiV%kx\KL]VPcI]IیKe^hjaPV]DbtU[~Aj͒vCf==:>=o3Acrstand016cǪnhٱ:MջJZ-eՕhm*M?̡q<üw,ܬ/~;>Eᐘaij]̺VaGw!vY!ZsV~ʖ1;7)&Kb\{A`UL;K[)*_Cc:FP7afSk8!$E)@!$N8IML52?&"?G=",+3+K*x`'s@\?ԂDcGxB눾;iGClBiV~a掐g֕R~܅AD섘kщqm(b؀[|߂E`~IV႟]zxksD^sNzx[uCOukwy5qvWu^lZUmQItxSm^IoQtijCvi&vΈr}֓;ׄINJnрB{Ƀ1N%'&~ l:9H,44))$;0k_,sZHEϩ_bo4N"n#P*,9#hau"t@%I(!:_+0-O֦faZZrմ2\/P;r) z)=h*5X41W$ۑm}K0И^/2 biS)ku\FOWYP^M]OیPeWkdePP`>etP^~:l̒rGf=(=>,q3Awcrstand017O˩pVۯ9A־@K/IؕhR*1)Χr0z޶%*4(㖖Sƶ]wͺVUGm!oO!MsM؄sʖ0:F=&Ke\}KfUU:s!w!mqh^W<7:xngT4^5Wr^[[.dΘMD/GyA=K[*+_Ee:FQ8agTk9 $E)>!$N7IKL3/=&"+*2+K)x`&g53XFG[L1l9_R'\'gjL7\TLRD[aLJ '^oc2cKWFW;r&r s'JYJyLwFsPğTtLoL_MdFmEgG\GjL\LzHCiMKnJiYd玍jה/]J$LԈrI(?܁YErAnI6y2Eu!/``+h7g8`G2k0>i!6{T/BF~I61G#qE*t}7fc&dM-~$j['jOh9=n+EX-8[ bOzH v>;MHEw_A'Av:8:6PB PGT.]? q7:k&_pr;ez4-s" \ym:v&R/pQPw?ZؿIEɤ`bپp5M"o#Q*,9#hau"t@%H(!:_+0-O̢e_YZr˰2Y2L=o- w-=e.5T71T'tj"xG2И],4~`#iO,kr"c@OQZPXN]R:{SeOk:]fPJ`8dtJ`~4l̒lIf]=' =I>k;)A;crstand018=ͪpFݮF9@?*1ڗh:+Яr(z .䟑HƺXl̺SLGf$jI!DsHۄjɑ0K^,,_#Fe>FU9aiUk= $E,)*4+K)zb$OD΃o?y`9Ѐ6N*-~l@>H34:)0 # 5o_1w@tCoI9{2Gw!1b`-k9i:bG4m0?k!:~T2EHI:1Jt7-v!7ic(gM0$#m[(kOf<=m/FV/8Z#bO!zI#v=ew7-q& [k;w&Q0qQPx?ZչJ6ğabҸq9M"n#R*-9Ľ#hau"u>$F(!:_+0-OÞd]WYr¬2Y5L?n1 v2=d2.T:1T*tj&xG4ј^-5~`'bO/kr'c>ONZPVO\}V:wVeJj:ZgPF`[5ctH`~1j̒jLf>v$>׊>,Fu>mcrstand019@άbIޯFEUG*0ۜh8L"Ѹw6zʐ2-=-婑QǽXq̺SVGo$t-U!NwVބqɑ0Bwpw)`sh[s+k}`D0GF?Ko.-@(HeSGh:ayVlS$EC;!$d3I1Fc0/39&PE>,'*I+K6)zt#<`bs!@bP tOYHk0?\4P_I1M!x70x%7lc*iM3$(o[+mOr?=y2Fd19i&b`$zZ&xO>[LVsjER vJ9K9\D ]Je4jE |?9x/n!p|Be:-|) iw=x&a1qQ`z¨?gִK6Ŝbpѵr9K"n#R..9ʷ#hau!u=#D(!:_+0-Ob[UXr2h9\A{5 6+r6.c<2d.tx*xX6јo"A7~:o+b`2k~+cOP\[PcQ\Z:YEXi:fhPU`[FcvWb~Bj̒vOfY>d>=>crwalk001@ЬbICKUJ+.ܟh5L!(Ӽw?z)ΐ=5F%{VȻXr͵SZMr$y-[$Sw]چsđ5ܽ&Hn\KwT|)x5x5x?=GΆ,ɂ0# $ʼn'ȀH<~|zӍ À b̈́+ehm[ˁ(oȃkD/GG@Kz/.@*Je`Ft;iWla$ER9 $q2IBDo//C7$]D==&)V+JG(z#}02cXcƊckcmdgdzr7r_tDkofii\in^flm:idos6obp䄢r~sӑ",S|'ٕwߕu)^v镂`  j Uv"A ᖈr撏Ꞃ픠}uwT}+֍x8ސF-ޅN3Їd+ـR*҈t*Q& 62V*41)& %tf"|.v0qH,~-6w i]r#m$gV#r/,n.`(9;H32@!7|9vepO$ {ZtSw3>0Fj"9qdj kg(σY:eO`zo9[xR#T-a1fIp=sK E99:y#nEe-#qz&zGgxRhrť>gװJ6ę_pϱp)nB2p5{1ԃd9і}4QA,:z2pk6l0cYQd\PlS\^:]E_j:miW^b[Pdv`d~Ljǒ}RfI=Oi >'>crwalk002NԧaWBb۹U\+6ߟg=I)6պwTz;~RG\%$|qɸ[̵TvG'#u$mwvǒ0۽GJu\H|T}3y9y9yC=ʆG+5#̍ $'֎H<ƄҎ"˂ۃ 2t+lhs[(vɃLG&TcL:MC9o7!Wx#Vp)sj&47>0,= IN6.;2JL+52U6z,4a,Jolw+t W[2S5a(OQ6o|CjBkUc[MWbH*O~A~52ގhŠhĊikhmjqkxtEt`vDndjil\lq\klp8kbr܋t6qbuy~{Ӓ".S|,ܖw u*`vj` j Tx!A 㜈r皏꤈ v}R /ێx>F/㇞7ևe,ރP,׊{)$ 40S'F.=$'1!~`,-}O'/2 tX~"|"tO |.)z )Y$56G,0:$E7c~N!' qS5K6Du$4 b(j3܁rBАXry|:MdV"d1f/PʔJ U1O4E:.oNe-$!2 }#Mgow>gΪ?E̙Zi޳`4B"_$B=ŷ&7"kϠaΣ"tBt#D# :f+0-O8^][{Zwீ.LNGEKJ=M/A〧<؁CtG {Q;9?pBߊ:aoYzdP[]f:eDrp:puiqgkvk~eq|Zf>>0>;NI-crwalk003Jؤ\R@bݳUW(2g6I'8ָwVz?~UH]%%}rʶ[δTvG'#u$nȽztǒ0޼GJz\HR=44C=M(5%Ē $吺'̓H5ϒˆڇ 2oz14 a3 Vd$m/*{d ^1j,XY9l{LyCeV`cM[dS卵*䍴N酰A넱5הה0ՓnnnnhmipspyzDz`|ftdpis[rx]plu8qbvӌzEwbyۆ}|"%Q'ߘzu"`xl Y l SxJ 䡊r硎lvR(ޑy6C&抜.ډe"↚%ڌ{'  /#,S"D(> '<Y)+O!..$W""O3''"P/0G$53% eE\N' q~Q|6J9fm%F|#b.j;tHِ_ojs;_O#c5]/~UϔS \2U4N95oSc-$"2yl NZexr6h/fHbECn8"I'0Io FX!kyaxCrI#}b@}H#_@V! :f+0x-CyO`7yRoUpU|Qy`)TUN#JHQLT*J倦CىK{T1]C9GpJ⌧@an_vi`]l9jDlu:urnqhpvqhw|`_>>>kV9#crwalk004=լ\D@MڿUH+*g/I!+wDz1~D9J%|XȻXr̶S]߿Gr$x-]$Vw_ۆsđ5ڽ&Hu\H}T})y4y9yC=GƆ+ā5#$$'H<~ 2cÅ+lzt[‚(vɀL;(Y[*?K5Am; Dw'P-dy'/<<#$4IE2/7G3N' -8&z&<b%@  j#tYa \2gx,VUj5RtI{y>IQE`iMWKQ*OA52h hnihgikqixuFu`vDndjim]ms]iln8kboڋt6qbrቢv~yԒ"!Q}!ߝwu`vj T  j SxJ 妊r餎j律v R#ޕx.F"掞(ڌeP ې{"'l)(OF"?,;`(*H0,$tR~#~#vG~5'}$R+,I<-- e' d{\}M, wquSj3Ax6D]"4gpf)jh6فYCːgYYyb8MOE!O1R-dPÕvMuW P4H:x0nNes*$r e dOSWXwN+gX"Up1cy1KH<jA$U+G@!C0"kIaIr%(xF<#+BF-("Z:Z_V+V0I-IOAC]P XT[LbCkE+vNhPHEK~K=pO/tDခ>ցfEtL ^U=9|ApnD܊;a[ZeePl\\f:eEaq:mqW`j[Slubl~Prǒ{[fa#>R >L+>Nn crwalk005HԬaQBXۿUT+3ߣg9I%0սwLz4~J?R% |eȼXͷSiG$#j$bwkǒ5ܾGJu\H}T聾=|4|4}C=M(5֌# ؏$܍'ÏنH<ŎՎЃ 2l'b^*OF3Fh90Aw5Hp4ak?*9X"$OI`L/T[5#z@< p>A$%j<t!]^ Z0g,RUu?XvGkJT_R`tdVM܊*܊NႳAゴ5ΐΐ2̐j jnjhjikqkywFw`yfqdlio]ou]llr8obs:xEtbu߆xz|",S|*ܚwu)^vj` j Tx!A 㟈r蜏j vR -ۓx;F-㌞5֌e*߇P*׎{% l-+O F'=,;`+-H#00$|Y%%}O5*$#R/1G#<3# eE\M$ qS|3K5Dm"4zdz'j}3݁iAѐ|Xjys8M^P ]0_-vOʔK U O4F:.oMe+$ x u Oahw?Z?BSc[=xQd#I(/?i-h| ZnHuZ2vqJvX5kTe4!8_L.%H{ Nq4hyg~}_}Zsv/L|NGEKJ=M/B䀚<فzCtI qQ<9?pB:agXqbPzZ]f:dDin:{olhq_jvvk~]pђYf|= >35>}crwalk006O˩bXڪC\ӼUY+9՞h@L'2ͷwNz3ǐJ@T%"ޭ{k[ƷTpٻO'#o hzpȒ.־GJp\HyR={4{4{C=ǂM(.#Ɋ ''ҌꃬH5ƀՌ}Ԏ 2lU K>G zR<1pPA66jxNt3]S1Ow5^v,GOpCU}?wzPUdUZpgU!Cwn*툷NJ3ލžލ/܍gŸgŒgmhmhgiyuFu`xfodjim]mr]knr8nbs:wEsbt݆vv|"5ۉS|0ѕw%!זu1މ^ޝvj`jV ٌv)ބAؗ ׏qܔ╠雍؁u{Tぞ5ЏxDבF6׈N?ʉd5҄W3ˊt(" 2/S&F-=#'<"` ,.O(/3 }X$$~O!.* )Y$46G,0:$EEcN!' qS2K3Dw!4b$j.ށs=ԐTty}7Mf We-Žg-LϔE Q1K4A:*oIf+$2 "MhqwJaT7ظfdu5Ur[*842mZnv3vH6O7!7` L)%Nն:hb\_g2GICAKE=H/<}8ۂ>tA }J79:p=⊭6amSu]T]c9`Djh:jqbqfevgek|Tf&> ?>{"> ,?vcrattack001Éi̔sŘeޢ {q߇1"q}X_ēa߉W՜onܡ wp]B?/e-c{ͬ%fbòe׆s׆o:3CbNao_AT`])Y5Y]0iMi hDXDՊDkEmEgyEzS7S_UFMoHpKcKϋOcHlO:LdPT8QdPqQ|jRߑt!t?pqXr*kYsdr+mWiufEg"iuiFjeWl:kat[]\Mb^_aM[W`F_,q~s=smnBmR#|h I75-!J),(+%V +-(!;,H#'," E$ d_!'-]"&i*0R%ϋr]kBr+$Ė67)JQrg1,dwa)L-p.$5A"4-B<5ۅ),7jC3Ҋ# {z,'t$Ns 9aʝI8Ypj$p&A9DY<;ZQK݅TCo=T:IQY7Nq%Tt%^ܒ [J9b,>=7$>bcrattack002kʭÜnƣg٭ njcÍ[څVڋُUa69º-xƴhҬ-XҤsSo~myĈ{և;}dM`g^lDea]n=h5j5gCh8ekJy(y.t$du!x'}z&hy~kJ^;\peawXqnz{-><%(nO~1NF9gR6ySgaRj;Eo]Ila01!:0``jfj}op~bQ{DoU*qX6CBTTeJ>M&3iz&rS{/P~1O~8ezwGh*wn;uhRm|\`cb`Y~\Xkmyzg}k AjjKzQed\iqil~nt-jb QvhnhHlvt(ebdTeQ`Mj[jAt+\Wx^\qsIWd|bZ7&{]OLrF7A>VEW&Dxl*>bq+\m`4$7RO $nFICZmC/CK#QV@>8%K8HH)%z{6ǣfɭ:ӧ*߼]ò²0߳y꼲8䷫_L8VI-LD:?QB$S:_P2W59O.)J& fc\a'i"Bh2k',e ]Z^eBf1h+i^\"c3l-Ch# l2%WnULXThQ@U$)V 9 sA`*C8Fm"D?z Rd͍sJ,M??Mc'MIl(q!x&Z] Px(Pk@B,9?-#531J-W%t6iG:Spe1>[L-.;Bqx n$u+YP8cp iޓTqQp;_wl|Kqf*^X(Wq=o=^m=]">Skw< &crattack003Ƥz֭ٚn˧s޲ 'ҍ\Ԋ[V쇝ߔ_b8٪5ܹ#kձv]#Ú[㟜jQd~f́xČtم1|FW`aeuAue`m)h5h5gFm4toHy(v.}#rx$'{'z{oHe;jor"lpdmڍ{t u 6<oJ1F>1hS-zZlfY| n;BxYJtf&&"10XTd@nEpDJ}u+lTzn\qr(f`рSM4&tRHIe73A1PDGEx^mw%vOlAm0~M~2~QϟQΊQkRmzQgsUy`7`^cDYoTiW\WƋ[cWl_:Xpa狝c6^p{cmf~de{$Ź;_ª\װ2ɤcȷ0՟^ԣѭݦ(ߛXॅ&Ū^ŹӲ(̜ƠiϜCٖלd?cʳ/׼]ŷ~0Ӳxฺ۵fL0MK&'F(EjQ9S5JT(6[.4T%,So y_b!d1}m1yKq"1o4%lmY`t`+ri)mKow u[B"rO0:F//d 5(h0v9̒Sa-v,E( *{ E LJ'!TD*T 9>:+4(k:;p?:-8+ !29yI0wQ9aI8YpjhY,dqktvܐs>He==n>y3?crattack004ɡxت9šrլ(ш[܉V&"Ս`ϢbϽ7.#c۸s]$Ν[s袔fƿfkچ:}10?qs\wK}TÃ)~5~5~?=G,0# $'H~<؍ ;<vR@PQMM-@,kzsY*S+jhs[(t̓GH0GqLAKY2/@~-Je9HR;idXl: $E((*--L)z`$ƒ02gXgʊhkhmigizw7w_zDpokin\n‹t^kls:ndtx6tbuꄋx~yؑۙ*ԹՌ`ɹ[ƨ1׻aٺР5Ɩ]šǜ+̑ʛԔI㴢]䵱L库gBŋpʍC\5ɳXҴ<«}Ӭn˫^t@Nz4q7~{luJyGV=4D): . >t_:|HxLsHC Pz!9h`5p@mBgH>r2Ho DU=OSIF1U'{76z,8!pe/kM:$/xr[u/oOXE=b9FH79O+bE*z?+x1C?S:#sNL4$v+=,=>JAPK:QL eF9b6W'pdIei@c/ N^Bx&F5rQE{?gͺM6bpüs+Z=.IC2K4ta1x<<јX(#<~%:W1bE8lh2c0U>aPGW\oc:iaE8o:InW6f[$iv9i~ p˒\Vf=>O>w3fEcrattack005˝xڥ5 ɗwڟ &ӂ[܋|Ty"ف`ѠeһF)!kٿn!ϝqq榍s›|߆91.?v^HTن)݁5ځ5ށ?=Gא,ҋ0# •$̒'ϊH<ٍ Ɋ O<-1{f֍+mhv[ӊ(w΃JC.GuD>KZ,-_%Ge9FQ:ieVk9$E(; $N4IGL0/9%8E<()/,J)z`#׆02kXkˊkklmlglz{7{_}Dtonir\rċw^nlv:rdw|6xbxꄠ{~|ّ,ڿ:|Yɾq̕0Z׍5̆]ɈĎΆ(~х~G⻏X輝ƔI蹁g}Bx|bwA\3̸æغ5ʰڲoϱ^BQ6:!lLIV@4H)= 2 Bx_=K{NvHG S}" @+v>.dB2g4v}3xW;Ҙv)?8~*:s2ba7m5cGTTaP^X\d:cDLn:]nPKe[:gvRf6nϒtXf=Ӏ>.b!>A{3_crattack006˚yۡ4͍zߒ2~&ԂqtؒrPh됍|yYѡcԸC=!sƎ Πqn⮎ŗⅧ90*>u^HT)55?=G,0Α# Ԕ$ݒ'“ቸH<ڍÇ ۉ a<>Bx1tkZzSVU +mhu[(wσLA-Gw>=KZ(,_~Fe7DO8ibSk9#E);$N4IGL1/:#";D;)(.+H(x`#0˕˕2ȔjXj͊kkkmlglzz7z_}Dsoniq\qŋw^nlu:qdw{6wbw넲z~{ڑt(Ǐ7pWĉqՂ.}ZɌz=yXwyr&or8kM|ň GqogkUiibeJx[8x=ǿȘ?ʷٺ6̷]AQ59KHV?5G)<1 A}_gۺFEΤ_p޿k5H"h#K)*9ù"hau!t?"D%!:_+0-Oԧ:`\XYsӵ2}=mD= ?+<.wA2{2v2yk9Ԙ'S6~*:1bu5m4cZRf`PpV^c:bD]l:ol]c[LevedHlђVf3=IJ=}$>3sccrattack007͘lݞ;t?-҅z/yoԆq_՝w^鉛Q柎ofwФcԶAL!vv!z̦qe޹Ǘ 9.+>t^H~T)55?=G,0Ր# ۓ$'ɑ鈹H<ۍʅ h+khs[(uЃM@,Gw=0ғғ2ϓhXhΊikimjgjzy7y_{Dqolio\oNju^llt:oduy6vbv넹x~yۑj&~Fl~rs+r[{omLpk{h6dfvd7`mt}D~X?Q37lIGV=4E): / ?_:HK}HD P"9t`4{?w@rH>}2Gy FU>PSIH2W!(75-9!|e-wM: 2~Z-{ODL9F{59*e{'hv(xd>ŏsNp sJj!v_8`8qGsM7憄I E94⌍%pHe?. @&{2|S{Ů=gݼDEӥ\bh4F"f#I))9ú!hau t>"D%!:_+0-Oۨ:_[WXsڶ2<tC; =+;.}?21v0xq8՘&Y5~':/b{4m2c`Qm^PwU^a:aDek:vkPdb[SdvkcOkҒUf=6>">={3 __crattack008fϙnnߝ9WCc/g؃hq)S~BՑrBҫw2蛔4㲐DHHhΩ^ӵJjIy$n_!_ʮsT~wǑ1;73(Kr\H|T)}5}5}?=G,0̎# ґ$܎'H<ۍ چ `<=Aw1sjYySU_ +ihr[(sЃLA-Gw>0ɑɑ2ƑgXg͊gkgmhghzw7w_yDpojim\nƋs^jlr:ndsx6tbt넰w~xۑVmsAGskyromLbp}p6clHXq^j}kbE_bOj}]cCRckguh4rdVf\^ZT^PIe}R]]J_QrYYBuXGvxu~ց;sKzo_yt>Q26~lHFV<4D)9 - >}_9GK|HC O"8q`4y>v@pH={2Fx DU- w@&o2{So­>gۻFEΤ^pݿj5G"g#K))9ù!hau t>"D%!:_+0-Oӧ:_[WXsҵ2x<hD; <+:.r@2u1t0xe9Ԙ&M7~&:/bo4m1cWRd^PnT\a:`D\k:mkP[c[Jevad~FlВTf=BZ>>n=kX crattack009=ѠpFF;޶@A*0ۍh:+"֥r(нz浒!0#蔑J̲]nеVOGf$e~#~J!DȹwFgǑ0T@eQbCUBgz2oo.hԆ+gho[у(q΃NB.GxB>K^+-_$Ge<ET9agUk>#E-: $Q3IFP0/9$aQ*[-ijI8[QKQH]^LI .aö%̈OԀ>Հ02dXd̊ekemfgfzt7t_vDmohik\kċp^hlo:kdqu6qbrꄟt~uّ;vU .ׁw)wI |8ue{Ouynfr ~t@ x"qu4l?'nxnq q{qXv cu,__"aM6|vC܃9=uOBzo=p`7w=Q25~lGEV;4B)8 , q?lH;w2Et BU;MPID1S&74*8 te-pM8 .v[-tOoBLx7F_59f)b\'zW)xH@ÏVOR!seIL"vC:D:UGXMb8gI |D9y4n%pzFe>z- eu?}&]3vQ]>gյI6ß`pҸn5I"j#O*,9Ķ"hau!t=#C&!:_+0-O `ZUXr2f<WD{: ;+q:.`@2b1tx/xT9Ҙo&;8~$:n/b]5m0cGQT]P^T\_:^ENk:_jWMb[;evPd~7k͒rSf0/>>+<>;6^crpain001Ǩzϱ۴o ̜rդ;$ߙWtߪr$Q}Ʒ\E4~/euW-uʵmoSk\ow녁5z:Rih^u:UedEk DeAjGaV Vq5Hv1>~B#S~/J/Ou2Vx.W_:HI'C,7@H5"7:so|< |vQ}"\nn=SkqdgonM~$<~E~8d؇tՊzTnW^n~oyD?j(z)nkrgyz5:s1tevbkx|vtvPp!dmiRcmiz{ # :tx:~m[wiZy0J~;f1]gO`oLUfQ>}CkJdNm Ag١LdZHp1Av؛@/I>C>(0DLdr=}8iRy 6u:$4IfG0/h:"xC6a) l+>h!x# <b"@ }jY t|Y!'_&21L* 6$/@,>?L0 A8('b$I,%v[y)KMG;8JlP8?:z.L ^1nN%9@OO.G2OK}N?[MXL,9oIr!~+cb"Nw8Xkj: b+Sxl@+];yVU"}Xϫ4g޷>6ΠPp׹]<<"X#C.&9ظhaǶu16 ! :_+ 0-OɢsMGCGrȰv2p (v,%_*X; h $rhP!X%nTq Gπ`z jt'PiIf]W^bOXi3z~Dfjvi_ebWkZHW0BNGXl10>*=:>\Mcrpain002ĥxЮn ṳ ,ؒX⟡N'#ڍRͱa69/kx#Z%~ҮxsTi[lt (4M}8iRk 6u?$8IfL4/h>"xI6b,!n.?h!x& <b$@ }jY"t|YBm<8a4LaL6p@a|,S~,iyxs+ڡBCn@;7x=k"Z#D.&9hau27!! :_+ 0-OȯuOIEHrȽx2w $}(&h-a< p !yn!_tYvPցgzpv(XiKbZXamO]m0Bxʼnsvghp]kZHX/N@QFe L>u>4>29ҚMcrpain004_̋mgڐ:TܛEa/dxzo{.ZtE؂@ԙw:슔6K"KNsZǠ\oƱBaLd߹$PiPX$QƣrFݳ^ra{ϋ0x+4ffpqz4wkDys2{m vo l;d1sv=w~/ia!m$m$z,v(p3U`{WIQ|QN\dxq5i}Oka ES:$p3IAFo0/C86<'#R+AF#z# X4OYLo9pqIqn&e]\e]b^xb`yk[gLhueeE}hxap^kw^bv^^pWgckoblWqvjrglJuFxOuݚ`e'zlCQihorpfLcgyidhdK\hba}n\ef[X`ve\F][k_|b9t^[]|aVZ\VQS\{\U]VWNrT~UDwSIpouwxzkKxql|hfskr!Mr,kkku'x%Hy65y%w u_z$y%vL &}#jTp ojIs;"r%V%&L;%-vdy'olc|k&%imXooIR:3H38N)E%m1+w"3t%I^Ď4"wNB(: t;:.>M>,6QN!E~%U@Fͅ1;Ӊ2)kMCni#2_H xd0z+N/sOCvŨ6g׳A6ŜSpеaC<.0B1(J$=Ȗ64{"EW8RˎF$,8m$@y?1bEO[[SeXKbBcԄVYŌ]jd`eR^Z7h!r-qXKovzA> \>>>$ crdeath001y˧h}ӱl׵8y ֜q1!mߚW`ժeXo"g |Qk·fn4n.eP\HfeõXV_VYNcfj0n9K_hUm:P`dNk1NfKjPcL Pj3Ou0F{D%Lv,L~*Rs)RrLZ_4?@u?&38|N7">ts:gc||<} pvSpTen5HafE^enCq$w"1BMde?}v9izSyp!Eg3,z.IW?z+/[3 "j;8U##`&@[#x OyM{L<^Z<]~;`v:b}@Xs.oO\O[pN`I[C\xHYhGYRSm4l|=mBay6vIeFcy0}/5wݙ$ӘFQӔX.ލY֖p=W錖d 􋖕7܊Wב 慑]O󄖒_GۂYهE+̕͠Η=—kɓDȑRp% n i|j jk q&%t8u q%'uc(d1 ^(d;e#&&(o~  n|(|l i}Iy",wp\rKH915ZĈj]VXeN]Z@qW):QBMlN>1 >-><crdeath002Ϝyݣ|;Вw2&؅[tܒr}Rny!Yw׫oq = ? D >9E5@-@==LD?F4BDD:4Hi5[gwXr|b5zl;w^;`[tmT\jdcP O`qm +|.a}m?5z5wR;vF|HF>nA{Sq-e5@;E0*ޑ3xB9,Օu/=L%X?wAEz apZG{hFgg bxm(6i1$%w/IWAx+/^3%"i8BV&'Y(GZ(w 9tb@w nllLtiX :}8'z=}s'w_!`t}`/^lW'*O$M ZUC5\ $mÄ5D(O}av*v`%N&I9].04=BU2[UAJ+/~Ds{&H=->52({P5=E0@8!Ȃeiёq:nĞ1ôc!άp/ܘZ;҇LzrCizQւ(ˑC\͢C[ԪK xWuMdK0U Qߦ(CAslmts I#=  W\N}y;nsAqɈ9s˂'0acJslGqsA[2T?T1τs.>T >A=¹F_|crdeath003mytcjlsv Y&JZNsm/|0ϛ;-ۓ 4.3qL6ψ53œ<7{E-Xi,eW~@=i7GXt3V>/g*XCk2B?$V=?EFZf2I.QXZ@SALRBARHj-@uI9'%N1(#G4#f:t'~\|D2>(~Ba\3-a1f?VY^kgsԈkz܄$zׁjsknjxocu]z`݇OGڏ pt; *y|ЀMTv[z*-(8/)!@!~K $50/'{(^wr>`=c] 1crdeath004rњznߣcl֤s'}|chvgym@jcTv&gyBWܑCVFz@bU6o4_OWtYׇmUd`AІ8#t(h$Ӎ#6-͡rx|j    !ju{1Ì z/jI00v7$UVIf=YGSJi' ̂!_\yGogVoojyvAm'GO$b/*|=`A\ ^1+ #rvFljUEe>Do>A8: E*B-YugY~q`rnmfnqcq|l~g`vywB!H(D^z܀}y L#Fkbhy}wuqfh{m=u%cCoXvRa \ls PRT,X/B<>+~r+l/z4w;Jc$>MLJ*@f-GVTwM7TFxJ\](^ I߂-o|7|y4pqplwju[ k |w zo{|~{e VNQT$_Ϋa Ӧb2ݞcܦXڶ,X檆&ѱ^ܼ(՞WѦiנ?ߔXޠo?˼eʇ/ʵ\һ|1¾vŋĸDKV!NPZZFGN lJyQP yf 7`b eo]u`ǃp4ik o oh wi y[9VT YnQrQŃfma ] inEl$-XQ m Ch--<^{,_d~CC|:Hov5NPq0W6\@d>D9&JA?`ZBaw#P=mYWPtLKTWCMR:oR5%n&R+%QvCm5&VFv!p]{I,~J%uS+lXZ? `J*a;oAȄhƏk˵'ȩ ޖބsnxc㎱]ȑ]㠲OʬO : )灴NYq&q.I3q3+oCMnO!p6,q2'f-cdA[3f1dl 2oThE!e5x,f0ucN7epm/m)jxx#?_[u7r@nmC{aeC;?BS? tj{3X>>Rz=x=zcrdeath005uzztҐfゆs xq֒p'yK]f\qtFVeESvm'hl"UU[ؐK [-J @aT:1aNYp [ԀiSVRFӍE)撓)z-Ѳ->:-y-( wo !! - &j (e,MH"d?PMaga^Ow_Hnq~iç|sAm~2'T'zG@B\V`vbG A.5v}?wa@BZJFaJV N1K/Ky(Q%gzugf]`yotrzxZnw}z__sA"SؠGßB\m(dv&Xsem؂qa€vzy+z-qKUw^^qkv^J%Q 54ʉsj'w'<|$2*2FI88_LxG&XR3aRms0(< } F[dXPa-M̀WS8wDrEmQXa(Y$Eփ  2%l{q trhTZ|twy _nvXvIRI_!aen%:TTv]΃1icjx0b`hwll,Zlb&q`Ƀ(WYaTALUbP>r^}.Y)x  pDmsym3Nf㉙̌Xơg ,YBS7\5I,_e/ds*[S1[>.NHa.Tjs9Q;dE>+EXW,PY3PDx1YyJ]|pGe@_y'Q-v}h}PsUmpNt_eA'KI}LA4d}3Q>s7=W>hچdeath001@k;˰$֧/XǧgXܯ W@ȗ\'ÜZ0ޒTΖ/UܘU1˱3&%ݲ! ʼ Ǎt ٬0e"_~ Ԁ$ 3#av0R#T+7;:= 2IM--+} ldBj=qdCY`h<]^4q`,Ph|b]`PJ}I`zYaKb{Jo]p~H!N_p75S<?0P11UCV U0O0Z4Ol:I FIB$J-O.N=Q R=J1? G/<@#D/>oA_lG^pl qȱ|;Lw.6kYEoNlBiB:r:Fo3?~`KXM~DAP02uFBx5~6-ncp`eSR\E4CQy^1_>+=MR> {%\Ldeath002:q0ĺx"߮%Lż\DL!Fکf1٥^;I,T0"RK(Ҽ2ڵ `mԩ-̸4 ^"CxvoxΐL~ <:,&w3~ } p],lsj{+l\(V(_}1bZ!Mq(Jk3SbPxb{v8`cˣF| rɚMzɪ#H0MwnրZ%U>pXmu1@#6!-- ~WpM\$eY6Qe5W%4=O etsZ~5|6xYkukS^/'O{r}j JS;M߁}Rz}09bo:,P38FkOds{4ur5acJs"6$/ = 1|""~<"qm8uuva Ct k{zpTps:nj8l*cqleqK{dfwnL{Og P#ahmޛVkTmiY,+/.# 9//f #&!!,(.,#t~n!Z+P6X8[W̅^KWf\_DYk\ _ڿBe`glg!g_e͉e gBaЃd$nTt6s.oUq8o/sCoӊq W_JvX Ts\ˌ[C]SH:T` V?[0\T0X^frhD] l.S`al`CW;e.]_ixnF`q0NF]R8IcVa V6\MNbkmuI>(>5$˜T$death003mмhἛy"okgew#pܳb9D%&~8kWn!bG^ҘfTVDƓWuGnẈs۠cXЦo>ݒ<љ?:OK<B81~7Ǹ6/ 0$ $ 4/:9-*$#I|vMMJ D(3ɰ\ UITz!~e2`-CQ jJSE_U@cȅb fdz3]Kg%pnsn|W~1~u}g`j~R}Sď%L_|nz{ք*&|\ys|ʃq1_m~}%vNSk` "&ʙ1  &QK%d*F?d^EncYUg+602͖3$Ì%.L'C#{sZCohxwT_;`9q%SngxjYtRzsx\cr{"dT|p1'9%1(0-)2c!u̟ӡ(YW.j!pywri)v5eј{w ےxsϓN!Vt![~~8hpeml]tlsnnddk#udls%go[b-qekyp wdoubnZ|`ad\әZZ֟X_܌c/(i&'\$ڔ`}Z0a3%b%`*h+,c"v iyL)}lqz|b(+w  ppr%Lw()uh"p%r ނv)lwh|?q$%d!lgtCG?ą2HɂL0=2x/G#\6gH(y;5LF/I#U5VDOHX=,;a:v ~%uh̒!Ov1i݄`8V-K{j++aBTqUwXn[kn:Մ(ԉ*q4O{lPluBR]>#>YC +death004x¼{Ѹ wџx0g[oūB0ڷ,p|;o |,rUp&YN,}ȶsנ`hܠcZTXWm`ڸ AMDo8ه6؁4ف8jI԰E=<;5:2D*?1Aת;͹ ;%0"6Կ&01wtn5&s>ņ#K5ԢGޮZVKɁOwzmlTȳbôSq>|hOSHY׉K]laoqěFaΏLgnFC4FȇC9,].v,(ɖ1&Û?h8a7z1v-u2q8x@`&͑)ـ+u&~3x1w'+2ҽM-h~ppqtusj}}hxaqz0g|5oigp1w\rvxi{~ hhcjjaj՞fbәb|fm8y*@q{,1r5dz{/{5|-4p1t=t*4mDThHa)K].HUj>^DZIJbNW)QT.MKjDRIQ=`mBk)Cl.@b7k;jAUHc.<^}FLsOW}4Dl/5kAQngL^mF2~ln"|z/~Xv$auju(pG#!U7j5)zJ9GH.\&=S+.|D |t)y=p#2|p'obHt^3@lMB1bR=;xPuYT0g H#(s`u?iN4NKV<'YL7 z~eL#!3q|m*m(cO[Ww%")}Sӆ"uq=qGm?j)5nukNmMx[GnY-xNEnO7wV>=z=bJdeath005mǕq|}mkךrq b:{pX}RyeK5/~]cmrcywՈq1l˿(i-V!1oW{IaüJVPQҀQdVj;qEm>^7Ԇ8{҂5~҂;zЊC=E7 -݄, 94 ; YZ#d^QgF ?3@̌I9.<Ç9//f2h/Z+2X!Fd=ze:{m7wh3{q8{c?hF_$u(y0vg!}5{k3|g'O1c^Gcg^XnSmQݟdZwQtK[qD]mHuE/82E $C8]B$770b&B[6+#!<V*\$#(";592 A(3<#C#./Z=x܅qxnL']q8>/4)F$[>o=[Z(death006C5oF3T=|V0A%eCUyU/JS\CdOe0^Bh?}.e+:b5 TR_HFpQ8GJ:rDBjLT0>J7bS8NJsGYH0CY3/Y-`+Y%T{3Ew3V6~WT6pc[/t^_ku|hlljfmv)k*to`ow{ !v w n$y.h:#s!yy k!l* puutgr #q8s-rڀ)UFGb>OM+TiTgT` _C?["i i e{y%dxut}vr@cqBsA] t?Y&vDU=V%chh dciffr gS kHYgPa#gT/gaf |AQvPmLX~PkalYX QW& ^LQ k2ovRG_: VS>k?JR4mGlyFGTA RV; iDi:JWYF sOs99IV1e: co@AV:K@LmHQ`DfvKfl1 =T, Rt4Pk4 [V5#z0jz,#`+`/R`lORrDQll~uqfeiSOqc%nd!pGSse!V:;Y5VG0XI S69Y1TE5VG$Z9{?T8VL/w]|N"_2Ouem:AfJK`6`NSZEj;2D 3IǐPUcZʋa{R]R]B4%|)|)l*3RSc=QbacՖo<`mdpnƕ99S-T>PW4w2 7*y!Xw+'P^21O34GBRI4Z%>/,s Ew@d9N-5ED J-Nj'IZOD}(l6o$y&k`%.u($5/ |+b$.&tSlLTPULIV$3_Pp}ZXSS@XfKR,9 L->HR߇ >kK>=>'|/death007P@ȶҙ7Ԛ? ޔۑ~ɱպoɗѦ϶, )<޹,åv׋֚FE뎤fJ몯֔OgXtUdcVJS_R_UTyBg\[GU@[+f>_(_&efq7b1]*S1WS5S?9< ~"pYj:{E|xY~!3ƑV~@։U6َ @"nzt~{A7xFkzk6~wwةh$ȠbmiPɘarےdin:p0Ƥ~#˚1\gbok[siˎ}rbKffDrwCptnvgknr]kpm`vWS]HR\~YGZ4^+Vd8IGS'JgR=D4>:yGB/bVEGm0EFU$@OI[>M/R!&[6 F#&H?~="zNE<1-2Ct,0YfWC|cO>plQ&^[E\a^~@KNmV[l6SO~6aH]i[@dB|[SdfM_ZQcQbeOcJLKwGsNGy\TSWN[KrNUX[FhI^IHbP]NJoMS;'є)ړV*KAُA(2׍&-̏f%YqۜlN{)x8~=uPvhyciuc_Y TYkfD]\XR MRk^eWZhaޓ^֛ckq Fi^d mZk p] Q`uAcW}Cњ?ǟy;]7g<ڊB׋QY 7}I՜{;0oGJ lD᝜VL4S4MBEe:iM[v'`(D1<[.\:n7 1gĥ0D̗EbܩJ?;"ɸO$ø5L4harv9v > ϥ :Ϧ_˾+˻ 0-Ob7RRN}Kze.M$S"FLDITPJG˅@:MԄDFX.3^ChJp>wag_XYd\^p6mjl{eoɐZ] >v=(d>}Adeath008Կuḳg̍oҡ̠e.߼֐ۅ1ЋȳÎˣM㪮L鍽<뒤?j8»Lˮ~ʋѐrfcbtX{TݛOS\hRS[>S>W9YB[`O@G0T2AGJ?KHIH&[Mb?60?6,;D%f6~61$iPDnXc*EOmYRiQwv1 `%&{xxC68s|rlm˜n)lvtQk}msŁwn̍x:/Au?ixwjg{F|Zot7k|xMyuwHax~qTjZhEIO3D@G66IJ=3/<#.N9,)#;J+xK%<;bK$@<.j"t,YvRnEsIdEo[`KpIvnW\l7?__Es3N[;]M]deFYG&nAlnZM K\F'MMG&-3.{&v0U~DA}:3{};HPw$.[85i(<ψU"֕D哕ӈC[0i2ـa*{SL_?ysTx>ώÓh͇JĊúRω3L&,RI5E:*Ek;B76GO.@Ρ1<[-T&+?[F|R NĞEtAbAXKې WUMLt GiG[@̒NGM>u%=b;]GwYBz La"VO)>DXf`eOlFPPdYTRޡe@xw0|M=SOdk&HfO|-f_ SxGV&n0p6\!Zp+r~GĠ?Q_AIbCR4pN9"9m:r2^LqĜKf@$ƼR)6>$E$za(F)J&$:_+0-O~gp]`^X{Њi7-5>%-73O*U5D'~(҂8p" \%ڡ/wy.͗yo{xxkś9aOXpst͗sPtXWz >N=3 >6<3Jdeath009Æ׵¬zղ2&ɠq϶tQӕW͸Y֦Vմ( , '}ʵ58ꞶeCƮHءUaXwU\cEJ@_?_BT߀Bb\MGD@M+`>T(U&^`r7Y1Q*@1G?5??9w5 Q"pYgً7~Y!3VӉ_͚`bQxФ @"nz}x}>44ixi8v}{{̓#ӿzyMsTԱxq}i届俌1ƖŴ NgYow]išp\>]b4t{4{p`v\uddMhnxNk}GSPH>O~JGK†;R(bV*GH<Tp6+_>>yJ *\e#?m-)#eF$$?=IQ>:2B+5O<//~61I,zN,<;bM*@= , (t+YVE?P6Aa=IJExONV2P=KlO@UNWKx\JT[? B5l`[iqefG_=Af`eM\>u0{PF}Mh,sg~}|au=Q &剮6싲0di(Z;cJ6~FmiUly>{~fr>Z;> '> N< 2death010æɴ ˲%˝ԫ)ȰOw|üʣѳ"ѡYºVӹ(ԭ % ȵ'}ϛƐ59状eC㭱HًUQdUM1U+f-f)]qAVO:S;@KIXGHG@OUMEh4U/V'O/PK+@>tFz4:1\Y^HaQ:`m/L5D(d<,)i&|1"2^#3aE2eYRG~/J_~E@z5UF@ \.Z V%=b<#m]1{CzZrAvYiCogo&xNte`X~DFljHvh?QpBfkbc{Iid tMleES;0W;YKOTNN+}.h.k(l6Ɇ8LJ2')q#i$k%v.g7~/n+e#h2E)a)h?9H JΥ&ޒEěБx٘=ΏsޒԞCʒrӐtޒ:٘MЗrٝ<ԣֈuጟ<ݐSӇtۄi׉Uґr۔E֙}J|r6჏AՎvٚ ޏDڋ߈dׇC=N?AHx9=A;6ZL=Wh-M+/C1h| qpa)vy9}Lty>Y:$ EYK =*c) nFlj`{Yrt.&5&օ+=$4-:!ߒ"v0lb])q&RB{I›?ßC6CcYeTPrT}RY~;]Qb>V<>+=6 2death011Œn7|GT>|b@A5}U|(Yd͉QQŞdOӗu,ԇ*v1ɥ,w{Ɨ}yy9r7pPfySCލZIs@VA[rPMT;P,`'f,D$\\lJDL3Y;@GOIEM?S3R??'BU?Ja Q5UR$ObQ:&EKZvBkl_MCmLBud?o~sITYM<`yFO\WMXYUp$nJhJkAS^R_g>`jA`di^p k UqPeXv`oouCzJ[GSWM_SJ_ByBT\Q|ST2ZhHt!W(@;?^.B>8bC7yJBQ6+Uz]=VwQ?`QG`xa|zc[u[ tGOqrL'[,T9q:b}0YBr 5wg KpK&4l@OJ[1T-Ssz0XFXCMVgkH`!zq*1'-5?u 4q j0\cuwBwW M q\ j5g||v1jZ>Tc]6VdfN&hQC]_Z~BSj^N[sB[FkabyHo}#aT9],*Y-%[#4^=!<)`?(0c/ko2i2V3|Eq Fg!-z$%i$6o(I$Cy#Yd!_*uM$aB܍yWlya]{[ykІ`g%G^=A MJJQ$LFC*@{ skb}mG/= & ;%L?!7}x"n]eXq |P/v6t/t7E5u^E\?i;u>ƒ>B-o]Fi>2=>֬t=\nV,¼rdeath012sdKXAsH_Kj(xgPъZOɞ|&Ւ*߅2o ˡ%ytŐy{q8l:nNDu_?tLs3V=FZMACQ7 `@,CI,VFBM@"T5!T;4P%9R4HcQ6WW O`SG&I4LUM@e h\'@i'@q9>lspj-E;`I1]4I*YH,`Nkq$iYJcRgV[HBc(@f Y`V[kdO7)A5d?9u"@J$ Tx[VuOYN&Tv_exa?tXw rE2qpJx,5\0%_;v9\x4-`Bv6wU Ko1&5l'OJZT.Tcx1Y/XCL@sq5T$yb)e%"0D>"r26q h1]ehw+VIA"3WzDuƒehYTb\Vcd2&fP%]_YkBSxj]MBsC[GjaaeInl$`R].*U0&*3a'8D='<(A?*P8z6|:9|;t6L%Op)Jz+Dp,X1h,aj*e9#]xDr1=V73[GY51F82QQf%UkNn8OuJc|o=Yh|wGh9Wd~U?g;S7Z5{Xt>c}7g^}Z]IvFtL~o7qw4PvjwZ6sPWnlnUrqm8I'WJY:">6.SBt6&@H}Gql'Uq+=Gj),Ng%

Md.Sk(Yhf(EqCw%/GqOm&{x4iq[p'evv0MGu!Uxm.w~r9e{*?S|Eey4{9e4PI&XU+F`$G]qsz"~&ㆥ_w7c ,h;7h-'6JH+ :Fen\%c^B]gh'5:S@X';2]8hSlW} Jtm/G)t5IZ.TTSs9YvE9ZJٸjWt^h]~ kІ_f,;Y349<@'OJ9IO-?YUyv rhlhLt>1 n(=4}xzo GD]aeW)hu0=X)C[371bfAW]91W5Xu7}8;)M^37>nG>\,>h¯death013~lpg^pֿEqȼbw۲JeίYg溞[ۼBjm  ;~Z ILm~;~aKLn| ulxLu tsv Jw+r ` kAO?9>EΊI1<4)@vMȑ'UQ"f.4tOC=8*C8N2ENR:+BXB_e0\#Y$GԃDWb(2S"=|f)=S*VAҟiaqFޖb駓5w"׷#x*X9ϩPh2aF2rPukSsU!?:2_2+?0F-22O啭:třs㞰2 ^%_I-W"6S5%[2#^X՘'PݑXXck)OUyX}0Lm_[pea[]#pې;j聏kojmepYi\6oTMo`H`=>P>:3O ⊾$& iHK܊ &p.K6L.拲16 ܇!L!߄ lC*(.mBv+4g7؋jÆbΈI-}7>{ABƛ6]эM}s.K\ }bWL+pOVOT8X>]`UHTH:rO،.{'m~K^xz0i1DFbJ?5"K$3(4kajrsv4vpx8 :_+ 0-jO̩c9K~KH{Gzȴd*@WASOTQ"_M3IU/BU#9OޖNI:Kҟ%ca[QBM;LYDlqU\\EUd[jzcًl6hEca[f6n˛KmW8=='[>G31+death015W™?[-i׺f9J/(n͌ 2!ܾQsɔ aS`oюv~y 1sΌ5:+33C2<}(}.}$ | }}H }܎~ ~25yj3<-x}9pF7a")C3197q_Ɠa?AIt&ghmt|L4~4`zf8rqtys`!\jh[rت^bg9h/v#ʷw0iׇwzۄiniͣu8g+ng4x{3|hh urh]gpz[hvK}(}މ{ی~&~L,'z:(e{&Kg7D?U,w]\&cmP:iDqF.$ZIX/53t.d3|ezns ~1E!3y/nC/Gy5씶,势@.* ,ֆm΂re(à9TYUƕ s/*sf%V"KwHHJDǍXRnIJ?Ӏf#σFъ9N)ʛ u4+9l.i.DέBbG?3"G$1(4kayrv2v5 ܸ :ݹ_+ 0-yO^9HGE{Dz_*SFhH([@e> SC ]FR9XZ4ԡf;^Ȁ:K73~R7y\:vd1lM\YEPdtgلaϋk7hE`amcGjė[kR8==P>[3~ death016RM3$X" ̷qcnB<)kڈ2'RiӔ'ӾhYXllt2m85}9{+|3|3|A25x&y)x! x xy{Hy y|}琔{ z25o_3<-oz}9jF~7XŔ")C3156fRѓV?A̽Ii&[hwdt+4x4SzZ8gitojf!apmau֨ei޹n:o/}#ƻ~1^rs焬ouiǢ|zm+an4p3yulmrdlJnpxGmw{Ky(y鈟x挐z&{N~-|z<(gf(KP;DA50z`?)cp2?iFWF.z$\nIZj/s6s5Z/J7|FzqX W3death017S.#Y ̟`m_;.s̸މ 2(TG]Ӕ(ɰkYіjbq- t859+33>20~&*~! } ~Hq 萐 -5o_3;-q}9bwF4QŔ")C)156fGѓO?AҾ&d&`hvit+4|4Xz_8gntpof bpnòbufip:p/~#м1|blw脲pwiУ~{n+bo4t5wlmwflLpp}InvK(ꇜ~猋&Sw-u<(o_(ALԜ˶.¢ۆ =0鉞1;͙4Mʁ.GM#815*ˋm~s}+WG<җpQ,n@`.WHRtB˝V{N5~u8f!扏܊@܋PFx?ЉkNbKW53iڷ3EܣJpL?3J$3L4k֛a֟rv6v6 :_+ 0-Of9JJJ{Jzf*\%ەb.Оr/6#e(a*f[{!sl ^;}1̖wnjl)9@\REGdm^愔[;e7cDWabYr:[ϖMbI:->Zv=RCeGfdeath018\RYۜteS`Ma rcz_6Cx1%hp^Ki[,Q_JG)řs,`hj`?ɟ-œ'̎3)F?KՋM1D;3*25302?5A14(4/8!< 7 594K'7:;<ߏ96 hro[ze@[g5$5S3>3/88-86[67k5n7h9y343_3F384p4c44c6ފ4<3d5;393d8݄;݀G2SbIQ1Eb7?Ai8{>PzbF{N:va1}8{CcAޞ:;Q6t?iekۜdvn]{a!k gjm6':D:큔7x|';syꋀ }o(v"o󐈅8L`eGW oV̄cIЇMAh6>q@U`ee=maj'{FkV_\STveS7eSKǑ_ɒ*^KԀ8>҂:bӇe~˙brӒoZۃHgC[׌u@hÅGXl\<8P$ƤC.ҁ3;n*xWa_*k y$9#4Ǘ'']+["e!.* *̖ Kq;FCGMwo/Qɝ*Y%UՓ,X R%U$F\*Iq/Mf6tBB%Fψ*Jy0MًKdaZr7Ujo&}AzӅc[EPva4zq|'Ml͋IQ>>59>(;$death019RŸKǖO⼐LW\P_fe[׶\h3c>\#Z!f4D޶}7JE'HB?I/RT$HٲhUB;ߏc/*䈔,&638: /#/#1#1"5*ȝ-$,%-'!)&'$'&">!%)**)'fw YgNcTNup1vmuq lSSlc=$͚P:K;2tQ`q ew2Sɓ5Oљ27ȡCС wjn[TaWR*wN9pST;S5O؉+Bu&R˅,ZpsUfzh/tp;vl bcrlq`TiSRV%GNNGLRHWzba e/i %|xoQ]wic2vexm LGW+}}ISjcwmL#3#*',$,$}M)+_@*C:0LP'0w.>:G)- 9$(!)1G/*4MHO%3#x$4+.7 1 *!bp\ jZ sO*f\eB?4YQxF+W(NnAO\/&a\$#$J#?#2&O&&M&\&&z&l&h)x#<#D#9#$n#b#"d'%$&#$n)**bPl4YeY`pRw^e6_6UtZ$gE]a#^ETY-`6Y\iEbe_dXy]TDM؛PO֠PjU7Of#Um!JaO]tFcLd NZlKZTg-OYcLcdX%hR/hIm\O|dJjHfjU%oQ/nHpdK}jI[Oe\\*_W/^MmST{XP`Nkb_/YQzeLaj\3\b PW_Spec?=o+mF_;Y2[s)a[8n_$}R@OsBr,KJsWWBFb@Sh(2}>u!u"a}*OsGhDQ{`f+_RFSEig6wnFsKyXϏ7(L%΄F1g9\)v=-hK6M ft*WtMƋ*Ox),F@?:pZ81_>k6j Ib-Fa90M0Pz8a xG*y(xyx$xm\n[+odpv"qeRqm$nunE}bL8F1`vN8Ki;rZ"tW3nY;W>* Q>6ef=@^death020рiէkխxvZ "|Q`lu[pbNgbNri[S[ͩlHѷYޯ J"FPH;y37QZ"]̒aY]VGpD*s+Y1ɥ*ѡ;ݩ=ž/Є3 &-1)$* ! !',I3""#"P#!gf^Ou:Vw {z }HUxq'5n'K˅E>?Th'j Q L 4?|ziBq@T9,VI9JSP1S.OWLU*^s^[Y{-vui}lrj~~o:YxO_%mVhIZ`}mXyx-!||~c[w| ~ssw>|*p@zj}f[.% |#*{K*Z/D N3r6łA}2;{'2./PK8!6WHIlH,UY;fW'ww4-< ~|Pqpkel/eaRFZvKmPVrOgKY(_#C5 KG a  x z#v 6;jpn" "#$#y܇5QOhY} Z_߄o{2VVpJ썊aT[T|w lV4#XTo4p%QUi7d%pY֑ق.xhyFhV%ً/% %$"ފ![w+Ћ"r0zV4<582uY* {.s5bJ9:; x88``1u4 ns) U. :-*X# &w.W5)3lS<70"1'}Y;)?&_n~"MYgfvHP)qL_&ASUc+^<Gm0MbJ+]Y@1O..yx6Q[xvp%.;$9::<53AdA$:\WXwagxt{+Ɓ%p YNut7zF8DQRW^SXZQVnPV_s*C;lH P V#GD>J6}c&wIOkKYgh `L&W4't ^!SYP!|K\ ?"OhR}xB~nEȋ=͉*`GËImCSa--Y?6`1R>x=?">=R>;!z>= >=I>=JN>=C==W==P">=?6>D#?>V?>8>b>O>2>N?=@/?2>U,?f>V#?>V (=6>Lh=>N=&>MN>=CN>&>B>">G>>>Q>6>R>j>T>r>S>>Eh=>N(=6>L;===WN>=C;6>;=(=6>L<r>T(?h=O?=@?(=i#?(=h(?;P===P=;yR>;!N>j>PN>>7=>Q=>>RN>&>B>>>Q>>FN>>7x=Z>S(=6>L=>>R=>Q(=>U<r>T(=6>L5?>T/?2>UV/?2>U5?>T#?>V=&>MN>&>B=>>R(=6>L5?>U#?>V5?>T;=;<==P==W/?2>U?=@>H>6>R>">GN>=C>=J>=>6>R>6>R>=>2>>r>S ?(=0?=@>h=A?(=&?;+ ?;1?;{?(=i?=@>;I?(=&>h=A>;><&>=Iz>= ~>;'>;+>>F>>>Q>j>T>>E>>S>r>>2>N>b>O?>8>>E>=I><>=>=J>2>N>r>>=?=@>h=A?=@>=>h=>;=?==&?A;?F=?C;?F=?A=?I=&?C=??=&?@;?H=?D;?H=?@=?K=&?D=?>=&?B;?G=?E;?G=?B=?J=&?E>>>>>>>>>>>>>>>>>>>> =?1=?4J>?{6>?r>>B>>N>>=>3=>5=>2H=>*;>,=?4=>3B>>6>?=>6N>>N>>z>>r>>>>>>=>6N>>=>5H=>*?>W?>)?>;??$.??;??#;??%H??"H?$?vY?#?w^?1?g?%?-z?'?u??,?'? ?>Y?>6W?>)r?>*`? ?(u??,[??zY?#?wH??".?$?;??%H?$?vH?2?.?1??'?u??z?'?g?%?^?1?Y?#?H?$?H??>?xr>>>>> ?H?$?H?2?^?1?r?>W?>`? ?H??[??Y?#?u??g?%?Y?>W?>r?>`? ?[??u??r?>.?$?.??;??%>?xJ>?{r>>;>;>,=>2<?+; ?.^?1?H?2?H?$?vH??";??$W?>)`? ?([??z;??$H??";??#u??,g?%?-Y?#?w=?1<?+=>2=?4=>3=?4=>2>>>>>>>>> ?>>> ?>?>?> ?>>>>H?I?/P?Z?!.?I?.?1?H?2?^?1?}?I?.m?Z?'P?Z?!}?I??'?z?'?^?1?H?I?m?Z?y}?Z?xH?I?^?1?H?2?P?Z?!m?Z?yH?I?z?'??'?}?I?.^?1?}?I?.}?Z?+m?Z?'S?*>oH?*>nO?R>C?r>O?>S?>V?>b?r>V?R>\?*>tS?*>oZ?=[M?=pN?=YF?=WI?=XV?R>S?*>oO?R>O?>V?>H?*>nM?=pF?=WC?*>rC?r>H?*>nS?*>oM?=p~?*>rv?=Lv?*>qm?*>sv?r>m?r>v?>m?>m?>b?>b?>]?>X?>S?>M?>~C?>}C?>|~?*>rv?*>q~?r>v?r>z?>v?>v?>m?>m?>b?>b?>X?>S?>M?>~C?>|C?*>rF?=WA?=Lb?=Z\?*>tb?*>um?=]m?X=\m?;Vb?;UZ?=[\?*>tv?=Lm?=]m?*>sb?*>um?r>b?r>b?>]?>\?*>tb?r>b?*>u?;Vv?X=Mm?;8m?X=9b?=>m?==b?*>`m?*>am?r>_v?r>bv?>:z?>;v?>,~?>v?>+~?>'v?=Lv?=Wv?=K A?=WA?=XF?=KI?=:N?=;W?;FZ?=<b?;Eb?=>m?;8I?=:A?=XC?;7W?;FZ?=[b?;UW?;QN?=YW?;QC?;7I?=XN?=Yv?X=Mm?X=\m?=]v?=Lm?==m?X=9m?;Vm?X=\v?X=MH?*>mS?*>gO?R>dV?R>eO?>7V?><S?>"b?r>^]?>$b?>8b?>#m?>.m?>-v?>,v?>+H?*>mO?R>dC?r>cC?*>lF?=KM?=jS?*>gv?*>kv?=L~?*>l~?r>cv?r>bm?*>av?=LC?*>lA?=LF?=K F?=KN?=;M?=jZ?=<S?*>g\?*>fV?R>eb?r>^V?><\?*>fb?=>b?*>`b?r>^Z?=<b?=>\?*>fm?*>am?==v?=Lb?r>^b?*>`m?r>_b?>8=;x">;y=;'z>= R>;!M?> C?>C?>!S?>"X?>%S?>&C?>X?>%]?>$b?>#b?>/S?>&]?>$X?>%S?>"S?>&C?>'C?>X?~?(s?~?*X?m?)G?m?0G?~?1d?e?'X?m?)s?~?*s?e?+m?>-b?>/b?>#>>0?>2?>1?>6?>(?>*>>3?>2>>0X?m?4G?~?2G?m?3G?f?0W?f?)^?\?&d?e?/s?~?5X?~?6G?~?2}?e?-s?e?+s?~?*~?~?5d?e?/s?e?-s?~?5?>6?>5?>*d?e?'^?\?&X?m?)C?r>cO?R>dO?>7S?>"C?>!m?>9b?>8m?r>_v?>:m?>.b?>8~?>!~?>z?>;~?r>cv?>:v?>,m?>.v?r>b~?r>cz?>;S?>C?>|C?>s?~?X?~?X?m?d?e?s?e?}?e?~?~?v?>~?>|v?>m?>~?>|v?>~?>>>?>?>>>X?m?G?m?G?~?X?~?s?~?d?e?^?\?W?f?G?f?G?m?d?e?s?~?s?e?G?m?X?m?X?~?G?~??>?>?>?>?>?>?>?>d?e?X?m?^?\?m?r>b?>m?>z?>v?>~?>|~?>}~?r>C?r>C?>}S?>b?r>S?>]?> ????!??????? ??????>?>?>?>????????!??'??#? ?'??!??H?X?D?b??> ?>?>?? ? ????> ?>?>?>?>?>4?q?+?~?+?q?4?g?4?q?4?~?+?~??>>>?>?>??? ?>?>>?>>>>>?>?> ?~? ?q?+?q? ?g?+?g?4?V?+?q?+?~? ?~??>?>?????>?>?>4?~?4?q???q?4?g???g???b???q???~?4?~?????? ? ? ?? ??? ? ?????>?>?4?V? ?g? ?V????? ? ?? ?>U?>8??E??G? ?W??k?>l?>e?>V?>K? >G?>8?>:?>0? >*? >*?>8?>G?>K? >G?>0? >0? >? >*? >?>?>?>??W??G? ?G??,??/? ?? ?G? ?W??W??k??k??~??~?>G?>K? >W?>V?>e?>e?>~?>~??G? ?E??,?>8?>?>*?>?>*? >?>? >?>?>l??k??~?>~?>e?>f?>W?>e?>~??k??W??k??~??k??~??~? ??!?????? ? ?? ??????>?>?>?>??????!????'??#? ?!??????H?X? ?>?>?? ? ????> ?>?>?> ?>?>?>?> ?>+?~?4?q?+?q?4?g?+?g?4?V? ?g? ?V?4?q?+?~?4?~??>?>>>>?? ????>?>>>>>?>?>?>?>?>+?q? ?q? ?~?+?~??>???>?>??q?4?q?4?~???~?+?q?+?g? ?g? ?q???? ????>4?g?4?q???q? ? ???? ????? ??? ?>?????? ???? ?>?>?>W?=D?">3?F>C?v>M?v>W? N>g?">l?=l?=W?=E?=D? >)?>.?v>6?>G?v>M?>W? v>W? >f? N>g?>~?>>~?>.?>)?>?>?>?R>?;F?=E?;W? =W?;i? =l?=~? =~?=*?=D?=E?;F?;/?;? v>M?F>C?v>6?">3?R>)?">?R>?R>?>?">3?=D?=*?">?>)?R>)?R>?>?R>)?>)?v>6?=l?">l?=~?=l?=W?>>~?=~?">l?N>g?>f? >W? >f? >~?;i? =~? ;~?gambas-3.16.3/app/examples/OpenGL/Md2Model/rhino.jpg000066400000000000000000000447551411575327000220300ustar00rootroot00000000000000JFIFddDucky<Adobed         !1AQa"q2B#Rb3$UrӔ5CSs4tVcDdE7F!1QAa"qR2rB ?SAgoBK^^ӖH|9AF?+N>Pw aqB{|97~j,H;t[dzr`L[i}f,ڰؠjM>:1fi>vݪqA4AJ#!z@WFڝLC%TQ }u8=M>Y\0(GuQ>k{z]Bv }Nq/60!c=9pO_mHجÚ GZpU }a{Ӷ 6ْhx.5>sF<=3 p5_h\`=-?*MVv:ԖDMh -mn'A",8w#hc ܱ5SƔ.~kn[kFWhM[d$z@{^LRC[JS " bxhQчatL@Jɐec,λYyTWdk6^P=mUjyUk} he #zbf"Qv n${@;vӫNZdkL MY=Dt#@6gq8i\ʵ6o͠MҋgPMiJhg ra;EāHiN^zbKC0 t}J 4 NzzU-bw;bʭGu,dCwo%ެU)My7-jW]&8I"{x29]>W7L<\C1Vy r%t,<6L66VQۉ5kקe.^cd+%-4H85&MD0W"Z]?POyumbh#~a^7m=ԭ]Ƽ1k.[)I^k5|RGjeA!5I^>N<~[.X]^O em"_fD㧋WK[_f%T!1Tqq<5\zu|%^m 9+]0n*&Ѡad.%PvdZ香61Q#킢cQwgN9"?c.,pW\ '?F2VY><'TʎZѓlR@a*N7&^o4v뤯&f\}?}-ÏԊ$2%%5Dt_T+q2#d }y-n78NmqBLr%*^=Y+|aho0iU* )4M q.ˋg1ʾ+A}I M/oC5I+3Y Mmd\;GmtO<ÿ*F~J~yq|_ 4])XM,a{g$xԎ47~dFBn!nޔ y%<2AFݬR)7f *Mku=63`n52J[LnZI|$ Fͤ,q^\ե]Y"$kh+d6Z IQ)wb#WbMӮ׫g_]f::GAB"Y܀|{wJjˉF6{/qexjU}5Z*a婗_ Ω3[s9%ߠ߁OcfCEQsh;I1}?d,챦a? Up<]r9e1PC&)o*T*E# 7 7#d}WB̤׷q:c{YE4NR~]=WiOu Y w#C1fY^rnXd2\SRAexho䷗ lQxwW@C g̵*Tr\}Q6wsJ_/WM%OU;5PʝOuYv#sY+ VvrQEZčrח]1s_xc&h&ttZ`m&%*s^~oI~u׎ר*0)fmKl&/!Z~鷦u'ҭ:9*~_ܶmOY|hmOͲ9~4_{;/'5rh&h&h C 4h&h<6s,P/6'5tݲc!`6|sߠoҢUn }S+$jBAHk LRݥl4{X=<[{MutSN` ;?txsk^g27 m-V#L(\8˫MÛ}HY&0/g٩b+e6lw&T&~"zNVd_ k~[0 %IWO"x ^SOS! 71PW}j@>rP䡷9Iu%@ZRH]Ees#o%o0=J1<taxO|c,[/!U#H'{wx]qSз?N?~M}'? S}}'֧M>'fq!${ *|W5ۭ~N|x.%c&h=_R*$}zkEPiWǞ7W!kKIaՠp^|s]m#XU āۢns`tOM#tc:yXA$vpk-Բ7,j8la^L;FI=$pdVIj*MxW[3[i=KyZ&< ! bǦm~/n~"cÇcӮ5mSYvWѬU{}A;4L` wԿxhHGjz䨉8NmkY s V 77숵\OO,<ȼM )_9vԱt}U鉦 g`85 ]Vsltl |E\BȠ9XK7S'H%(!i~E;kN}uV*Xۅ*hfnF>ԩeZSt(a@;CwB1Ri*Z ULJk9wg\I2}dc n>c%ÚkGH5~;6B[U\sEUwTOj5pS%יzEU4\j"WW#A4-1Y vX_r4xs$xhĦ+ֳ)J4:r &VRu S){[c\UwiZP}<2댞wœ'^f*.=[ۙYm DR^Z8EE4gO0`/KV8)$LJ6_ .k;x"R80w$Cz" pz7-f\_u:"h?#gǠ~G/s"ٛxGVJMY| w[R\ORWn9~jh6qǒ$fZϷ$oo-#g" @wv4֣=`&i'_*-)}M{/LarDr!M N q{p $;w7 {koN oL(1,HGwpqٵ{uE{kAHq}4P CGN5BZӀ 9#A}E8(:z4A4#j۴*';h!Y;lGx!=ť TDAjiNz}&E)t.zo sdiR*O h%Jal?S57Pwz ;ѹ1HWO0B?./;hv  j\;IId18#QB`Wo= hC!Ie<+YAu4cѵzWR^MyO5=F !9x w{b/E!xA엷M#E I9:a>§D)2%[B|d5xE|?&Է2i8S[zٻc$Awve%mgNTM;{Ϊ:L$/ٙ M$h9O[t_D]B&?6,.eZlqGF|lCDm݂t05ʳ6Dߣ~I4hdtT^*+{q9PFk#JAK]b~i =MN|,2,ؽ (X<4on⸖6+I5<+x٠{^YA$ԏjϦn.,RqhX夀uNSp^Y1LLLRhX&.N]czYbD_EJ ^Q ԍg]^u6+(";HcYSY1'S@6 M!S@7C)Z=j?A4@s:Vrc"Q)|{nרZKrk޶#fA ,G %GDzZgbѴ;cX/!f _LHdkv3\nUj#B$qHhkPh-g,wRۏݶ0Ԩ \ p"vˇKLs'{hayU,!MM{p7}Tnj[9% FUjC)l@7nc6 2>䒿fe^%vD7>貂uu-9.ky}9+'Sov&L54&2Os~|⢻ +|Dʞ 8:#G+ IZ8w}HM^♼vKlV$;0Hbֿ nݰ+ύPu[8mg=HoJHy\FW_*1$Fn^oeto]M$'?WV=5ź3FWU:/g[+Z9=q^|~,+N: 3Bb lͻ59!86h,X\_^CglIpI$:x [,yi'%U+!;޻"c1z{t2OmȦA+q[L[ˣiooyX̮ww(hq6=͕kط ;Ae *i%Xi̱ h_tOf9V3$I "5>Xc0#O4 F,h(v*v:ꩯlā>G-@{{8h/#\l$̲GpIIC#[ ՙ?i2#DTLvfl2Jr/;GO>:;?i`2JSۺW۠A7L,c5J(VC_HNCݠhίtWe16p+`!UMXQD,Wwq%VDS%7qƃE(b61ք *c!MyV cAm$^E+^E@ҕ1mk޴*d$5ij7#S8xjFh N_͝)&HG>5A3:w}[WXpahb׎9vhF}>mZh%2A5v9tB~{\ 7KV4SJnZ+ 2ʻxy2ur0a緂8jÍ\[;awZ1 ŪU4BC<L[c]RP'˱Hc$qM51[YBq<נ\e ! Pi@՚Y]ad cqu$v+)`~Rqn IkRV: v]]sf+EZ:7 q.AQ23w/xVe+ Î:)SK$F!n~oI]ב; X޺An݀8zb IawփSqzh/7Sㅉ\v#+£vǍt Y E5Ǵ-ǒ >W.ool0kDqoSFr<̣D`}7?HSQ&{ ^A%-COAhg=u.DTKF 즂j^_;iH"1OdqmrqTF怟"fo6rM5#7VwnqֶrYpcmʼ ,a EՔֆUu=q#Í#[(ϧI$vw;As;E_7tv;#RnhðuB;K[ Vy-P&#;pye)P$BU#A-1}5h%K%"6v4%23$ukfo-yroi7tiuf$3o(HX+c#p.kŘҀ X\xP!@REʦ@cz%xA+"1 8J M'_=B{dj( $k*zi@iǴr5xbEHNqO:" =mKt6g Wq2O=٨_ X{Ӷ]̌ɶ8yxSAıkEvUm8ʕys[Jo6n2Lb#"뭹OŁ5 f@&Nx 7V}G%lB^CAW|(o^۴B pܹPhǾ"@Ha 1][6;d4?Qp!}ǨDziUI$?-2+F) [CјvGux㎪*jh N: AYn۵K{Vנ7?(pX&{zމ9+15砣o]8YSpN uacLήG+A_]C&n;9lp@ukZ@w,M~4 K;A4]O#B)RGxE@6;\:LYS`.Pe T7A@ ?Yl?hU4y&k@sLÇ~1[ǥn[@a?sld:JB^M^ĥEΒ\3*XozѴK3cxCk9w׫sDfXbjd)OepP~5Znrh^)2UkB= 4 MKAj#LORdvW ;'4ߧ@k yavՎ~+ S[W 󡮁9ߋ[5>c]Wu6F<-x3Yᥱ' vadA(dD54dzdr/momoM/*VtEYIz\@[wƜYXS@Zee*$<1ɠՐSc2X"VѠ`[m0",@nhezjHjzS'@54)]#F1ɿn`o],o][.YGS}B1;pnN-mb=!R{{_NڒCGYxÑ{sb., ]cj2BNbRj.XLrAx՘DV'Eȏ/Jvi\eM?sZ?L`r,6 5D*f q֓(X#d=DzxmElunkО' Ew^!ro3dr;ެ.ߊC#VHI#@%uQ#yy>J{D,a4mO-N)x zs=r90B^i8p%uLeQƦκ(>C2gXKskPJƬT~\saAqq$2Il*ݠ:]68m>,wV3̀! ߒ^{1KMxi x#`,@;$ 5^ceIchG]ym,kH ZN1yv"92@(Y L,"DuVਲ穕f2ϣ(6]ȧp+rϩ,!_#F AuXVr f=~mwCӳt0B.#=#"zҽn[.>@h!,k§EJpI9vt0-ֹ]ֱ#hPD\*{ɧgAbMHe0F_EtE|M'+x%v;"Xڞx`碌!e#-_u=b59k yA, RvJ(HR=A@Η&xvƅwƄ zG.O,OR\VK;Z`ppP @'PPA7!=w0/Aߠe^u=փOF%Q[!L¬~{ދ_a qK(f7½2Jk㉱HѨS!f)SFmVEN=5<~̝v%[ipgz"V?LUfPAហ鑜]-鵏ĊƤ+C/QYǵH V5]~ΩjW;S M:"cSzxյbD@)sf0fnl§٫#mie1(X!eՒZc H&L^\F[soOFz轢ZG(m@5:dh*riyy&3y@pO>$WZ3 4&k ٬ueKԞD Kv0PqvsjkSDZG/#;{I>Ӣ1A4 Nb-Z8'mdRƴ: /\9ȜxdqiP4rzzI*DK,eWJǪ+ŷ,=Wj(`@A+5xL=sD$~F->]*dRuf1-CiIf+A&5Xy8& p AU i~ҲAC^}SAUWFaf,G9$ ;ju0䬤L$37$=sdEvSbAdiol2@K?PSA]->Q?ܶdo붻cac*24Xr-8͒=gg} 2_6"K<ҠkcYKJ+rFAY2~b咫0FRҬ$i=Atgambas-3.16.3/app/examples/OpenGL/Md2Model/rhino.md2000066400000000000000000014621641411575327000217310ustar00rootroot00000000000000IDP2FD ,\+tdrhino.pcx*""**""* ""***""* O G < ROG<<0 0 && "hZeocWclWlo{Z5Q7v7 %z %b%U0O0h;b;UdW P jdWbbMM,,iiTT22c,c p!p,},~ Z"[.".V1S$$1p?d;|;\9X::9133>;C:5^3T5SC\>GHG6IH>>>II?=I@?88 89: :9!:! 6 6:,A@,::@,KJ8J, i l daeW .'9)G*dp\P,7G2;G=BG}t x | `'V)}cW]TQMnNcNcJnJ:NENcSnS}J}NsNsJTNJN}SsS06j:?4b9>:9%n'+'g,2', njGTGj>TR_TK>iSS]tS=-E*J-O2O5J2EaJ]BTBOJTR]R^J[EVESJVO[OOJEEJOBJBJRRbEeJ]EZJ]ObOvv|||||vv|||vqvlttlttvqvt'l'''t/t/l////tooYu~uY~uu+uTo/ou+T/T/Tu/u,Mpp 56)++)       65   VS^ b[gk^!bgS!X[K2`6^.^.Z6Z2WaXa_[UUXU_[c_^_Z[WWZW^[`~suhzhtusszhh`yVw`rVo``VV7y?z?7-v-MxM~rzSwSK"Q&N-S2#+N7H;B-<2B7D"<(+H^`^ZZWX_UX_cdZd^`W\Z\^``*"*" "**" Q5zu% xrI?I?99.10:+$(/ =`:b1e$ha TFJ;J;SFSUJKJUSKSs0k6l?e4a>nl%s+g'k2gk thqj*_T#>uij]~Sq=9J5B,B'J,R5RiJeB\BWJ\ReRvvvvvqlltvlqtloZoZ,oo,MH  bgVkgXbK9X9_3U-X-_3c8r@t@8.o.MsMVrVWzW+2&7)& ;7(2 g_gXaU[X[_ac                                !!" " !#!##$#$"%"%$&$&&%&%'()'()(*)(*)+,-+,-.+-.+-/01/012/12/10310314504524/4/404167167217217768768698698:96:961:61:6;:1;:113;13;4:;454;547<4<42744<9:<4<:4<78<<<89<=>?=>?@=?@=?A@?A@?BA?BA?CDECDEFCEFCEGFEGFEHGEHGEIJKIJKJLKJLKLMKLMKNKMNKMOPQOPQROQROQSRQSRQQTSQTSUVWUVWXUWXUWYXWYXWZYWZYWVU[VU[U\[U\[]^Y]^YZ]YZ]Y\_`\_`\`[\`[]a^]a^^ab^abcdUcdUcUXcUXXYcXYccYecYef_\f_\fg_fg_bhibhi^bi^bijkljkllmjlmjnopnopqnpqnplrmlrmrsmrsmosrosrporportuvtuvvuwvuwxwuxwuyxuyxuzv{vztvtvxy|xy}x|xvw~vw~v~v~~wx~wx~x~x{vv{}}|}|}{{z{z{}x}x}}{{~~~~~~~~f\Uf\UdfUdfUj_gjgkjkjj`j_j`jmmjmjmmmmsmsVVWVWV[[V[V[[[[`[``ieYieY^iY^iYhbnnnqhnqnbannanononoooososoZWZWZZ]Z]Z]]]]a]a]a    )+.)+..').')'.-'.--('-('      !!"#$"#%$%&'&(')()*+*+,,,---.-.///**                                   0  01 1  12 3  23 3 34445 0 50676889 :; !;!"!<!!#"!=<$"#$"##%$#%$$%$%% % &'(&'(&()&()&)*&)*+&*+&*+*,>?@-+,->@+-.>-..&+.A>&./A.B/'&BCA('/('/0(/0(/(01(011)(1)()1,)1,,*),*),23@DE3-,E-@-34-EF4.-F.-.45.FG5/.GB./56/5660/60/0670677107101721722,12,143243254254265265276276289:89:8:;8:;8;<8;<=8<=8<;>?H>I<;?JHI@>;@>H;:@HK@A@:L@K:9AKML8BA8BA98A98ACB8CB88=C8=C?C=?C==<?=<?DE?NOI?>DI>NFD>PN>>@F>@PGF@QP@@AG@LQHGAHGAABHABHIHBIHBBCIBCIEICEICC?EC?EHIEHIEGHEGHEFGEFGEDFEDFEJKLRSLLMJLMRMLNMLNNOMNOMONPONTPQOTUOQPRQPRRSQRSQSRTSRTTUSTUSUTKUTKKJUKJUVWXVVWXYVWYVZVYZVYY[ZY[Z\Z[XZ[[]\[YX^\]^\]]_^]_^`^_`^__a`_a`W`aW`aaXWaXWbtzZtbutZutbyuZyub|yZyb|b|bbbbbzbzcccccdcdc[c[c[cccccdcdc[c[c[ efgefgegheghijkijkjlkjlkhgmhgmhmnhmnopqopqroqroqstustusuvsuvwqiw\]wixw]xynzy^znsz^_z{rq{`\w{qw{\zs|z_|sv|_a|nmsnmstsmtsmiqjiqjqpjqpjk}ib}]xi}x]}hn~c^~ny~^y~llklklkdb}k}behech~c~tputpuoupoupz|wz|w|{w|{wjpmjpmptmptmxywxywzwyzwyljgljgjmgjmg}~x}~xyx~yx~fgfglglg}}~}~}dffefegffghijhikllmlnmlilmoojopqqprrsrrstttuuquuvwwxyxzvvy{y|wwx}x~||}}~B5>QW>c>M{9stand1y#vxxY|&xY.},'%{)z|_$(8}ON߁qۀZ⊁H#ނaᎇ4:|yfAi@bU@pBK|B^_tUS]UTl[TdTVtTgmՋrfmK|^@p/ExTbo0Te*X8e#^1k(\N7iTR]4^tsP5q]$CjUS@wI'Op$ތW݊W |GXzV\X}gF(tN3hPUEmSJ~J=D-|d7[^vrj'eYtAlGqH!s2;ilxmx#gcD*uuړ|Ѕv֜oSo]džh֝:%pKpBȇis0 lsnzq w]x$l`"~H9rI($~?#ڜ٘!xOtVy`u\Њg·kVMT=M;eC8lwL.8^I#cQC0kD\ QP=Vc%`R @OD@A!yM-nN ;`!Ab 58jl?::1yV5Y"3M&~GZB|L_/JO4xT+4je,([`3XN9_RWpZX;~OFogFDhJYO{RO;oR/`b@3lk7GTb5rfT/grH MjIWhbhH-rdJ3vqF,gwH1njL8sK7jW9bT0xU81}Q.FuN&ffP&g],l^2u]1%yZ+LtY%HkZ&NA2~D!/Lp6"7rh{.i-C|-h#plxm d-i"O}^ }[#KKxCm4xg8KG|<5SD%=H F?;P <>#U> `>5r 5stand2e'sqhx"|Ti*|Rm2}/ v)h.iU%'! 4~T R݂sقhߑU'ۅiߑ 42x_7s@ZU:o@G{@Z@pUGeUT_aTwhYSwR^r:fkp4yԈBvhN#\ |*n2s4wFtshs9gyhy} o ezhlz;Tbh~ߏc̐h"}4ː4ס4{444444 ~4 4'4dTLT=kT6;TyBT|VT=TETpT`TTTph6fi:yzB;8|kJrg@G'yKxqY,gReEnbN_8lBlc2^[![*qNSKe>@UV8}Eal9p`nQkYGtPa9b7[;rBx@nDjC<9?L|Gy=5TD%=(I{Gy@;GdC>Q>/m]>s޿stand3U,s_ hg$TY.R]6m1 d,X3piwU|''u# 4~T R܃sփhޑU'ׇiݒ ލ4/w_1~@UU8n@Fz@Z@oU?nU~TUhTmlYSzRXx:^pp1ӈ=~hN#Z w*j2u4zFmvh{u9`hs j `hf~;Q]bޏ^ːd"΀4ǔ4դ4|4444~44 44&4nTUTRn;Y/O'@xDE7/y;${qK1iRYIpVTP>}5TD%=(IxHv@{U>_>_stand4K0sT#h['|TO1{RT9b2 Z.O6cijUo&'i# y4ـTߍ ފہR҄sʄhѓ֍ԃU؎'Ɉi͓ ̎42w_2@VU=o@L{@_@rU=rUTRiThlYS|wRUw:Zpp1ӈct6d>cARPQ[QckPQMQc!7m>mx>mQklThEvT EQk#akofpf,ak*p`4hahkn4=;B;F|Nj=~ȋ/܆$zχr%Rte;@r"mkwtɃ|~)(,a2K1N1^1H[ TȪ;ţm2l2h$Nо2̶F1?5.z<q?u *~}&zR*U\̺ fʵ?`I04y2+wqB7fRRMmPVIA<:,<#zbL/iB\EqLZN%vt􃜔ڕφ}џoRqqy-Ρ<(qAsenI?znj=.kpg?'|Z} ~YL0nTGYBu#!WJآ£М!G}TvYZxgkċjPKT; FAUV8zFaj9n`lQkYFtQa9b7[|}5TD%=(IxGv@|W>w`>._ šjstand5C3~sI&hQ)wTG5wRL;|Y3~ P/F8Wi^{Ud&'^# k4͂TҐ ӌуRȆsͿhĔˏƄUȏ'޻i޾ 45x_3@WUBp@R}@d@uU;C;D}Nj<ȋ0܆$~χ r +Ptc~;>t!rkwt"Ƀ|$~,+0b2L1O1_1K_ ZǬBƥm2m2l$U:ηL7C9.~<w?{ +(R+Ubʻ kǷ?d<[^ʹWfˮR_Uʯ"h$P((k0T'š 0!;hƻ& "k%P *!/-9%h"ؐ2<+m)ȗ, 3$%d4rs] lh ~tOϪ4o kАgUএ`~sjzdsf&rn+xu-eq4n| yy{k r`WgcU brp hylnwonwjhq cjc&,{#rpvkgz 4zUrxQlކj~wuۆl{pyxapxqsw*W$Nxkjpg*QnYmfS1Zuvl!!אsx߀Sx}YӃgskIp)Pe5^k5d|([Nx9L)9y*2sq:=bRLPkKXBC<203(ubC3eBUGmLTO%xxԗˈ}ǡsRsqyܢ-â<(tAtenBAm`j52kag6,xZn xYC5jT|~GQEq|!QKâ򮢄ŝڝ!͑G~TyYZyg蘿kjSLT= G}5TD%=(IyGw@|wW>a>8 stand6;6zs@(}hG+rT?8sRD=xP4z H0?;LiSvUZ&}'S# _4Tđ ǎƅR½sͳhζÿ㷅U㹐'ݭiޯ 48y_4@XUFr@V~@h@wU:wUTLjTahYSuoROu:Tnp1ӈ;C;C}Nj;ȋ0܆#χ!r$1Msa{;y"8oq3B_RFShFZ H~5TD%=(IzGw@}S;Z>n_>*^ stand7?4{sF&hM*tTC5tRITCdt;eCdFSSR[TckSRMTc!;C;D~Nj<ȋ1܆$χ r!-Otb~;>u!tkwt$Ƀ|&~--2b2M1P1`1L` \ƬDƥm2n2n$W=ηO:D;.<y?} +(R+UdȻ mƷ?e<]`̴YhʮRaU˰%!h&˜P**k2T)Ƣ 2!";hǻ) %k'P# ,!1/9'h%ِ3<-m+ȗ. 5$$f4ts] oh wOͩ4q mΏgWߥasj|cue&tm+zu-gq4p| |y~k u`WicU eqp kylqwrnwmhq fic&,}#usynj쁏|ޏ 4xUtwQnۅl}ww؆l}~p{wasvquw)X~"Pwkmog(SmYpeS0[syl!!ԏv{Sz{Yςgu~kKo'Rd4_i4d{'\Px8L';y'4qq7>`RIQhJX@C<01/*sb?5cBRGkLRN%xw醜їLj}ݠġrRsqyء-<(sAten@Ai[j23k[g2-vZi sY@6hTwzGNEox!OK񪣄֝!ǑދG~TxYZygkjTLT> HAUV8{Fal9p`nRk\GtTb9b7[}~5TD%=(IyHw@|[>*\>޿stand8E1}sL%hS(vTI3vRN:{[2} S.I7ZiazUg%'a" o4πT֍ ՉҁRɄshȓ͍ʃUΎ'࿈iē Ž43w_2~@VU?n@Oz@b@sU~5TD%=(IyHwA|X>_>m| (stand9K0zsT#~hZ(rTO2sRT9xb3y [-O6ciivUo&|'j" y4ـT ߊ܁Rӄs˄hѓ֍ՃUَ'ʈiΓ ͎42w_2@VU=o@L{@`@rU=tUTRkThnYS|yRUy:Zrp1ӈ=hR#] v*i2{s4|yFhvhus9^ho i ]hc};P[`ޏ]ːa"44ã4}44آ4o4p4}4| p4w4!4sT[T?zT8JTvQTyeT=TDTlT\TTTbn6Zp:n}ct6d>cARPQ[QckPQMQc!7m?mx?mQklThEvT EQk#akofpf,ak*p`4hahkn4=;B;F~Nj=ȋ/܆$|χr%Rvf;@t"pkwtɃ|~)(,a2K1N1^1H[ Tɪ;ţm2l2h$Nо2ͶG1?5.|<s?w *'|R*U\ͺ f˵?`}pj>.kog>(uZ| pYJ2gTwGXCm!!YIآãќ!G}TvYZxgkŋjPKT; FAUV8zFaj9n`lQkYFtQa9b7[|}5TD%=(IxGv@|uU>a>0}e@UV8yFai:m`kRkWGtOb8b7[{}5TD%=(IxGu@{(X> c>{s8Ustand11Z+usf whk&kT].nRb6rr1s l*^1zwxi}mU&t'~!~ w4T R܃sւhۑߌU'օiِ ڊ41y_4z@XU:q@H|@[@pUBkUTYfTqkYSyRXv:`np0Ԉ>{hM#Z y*j2t4yFmuh|t9b}hs k _}hf|;N\bߏ^̐c"{4Ì4͞4{444t444 f4m4#4jTRT:rT4ATvJTy]T7T?TiTZTTTjk6`l:s|T6U;et2f;e>TNT[OzekNTMOe!4nyɋ,܆$rЇzrVri;Dm$ekzw tɃ|~%"%_2H1J1Z1BS LĪ2n2j2a$D˾'õ=&8-0r< g?k +vr%}oR*zUTɺ ^ȵ?[xN@?+y>&lqK5\RZKd\Q~Z9;o>iCkc2]\!Z*nOQLb?@UU8zFah:nalRkVHtOc8b7[{g[> `>r<stand12e)usqwhv#kTh+nRl3r}/r x(i.zximU%t' ~ w4~T RނsڂhU'܅i 42x_7w@ZU:o@G{@Z@pUGiUT_eTwlYSzR^u:fnp4|ԈByhN#\ |*n2v4zFtvhv9g|hy o e}hl};Tbhߏc̐h"}4͐4ء4{444t444 f4l4$4gTPT=oT6?TyGT|ZT:TBTmT]TTTpk6fl:y}<{4)|0PenXepu%},?hi5dgf'k'z4wl6)_epGigp,-wr7wr2x&S;G{Z:o+?R6SG59xX=J(yH!mqT0\RcHceN}e6h$!oC|ءۚ!G{TtY}Zvg͐kωjPKT9 GlClc2^[![*qNSKe>@UV8}Eal9p`nQkYGtPa8b7[5TD%=(I|Gy@;GB9> ^>]>wu s޿stand13r&uswh!kTt(mRx0r-r 'u,zximU$s'~ w4|T }R߁s܂hU'i 45w_;r@]U;m@Gy@Z@pUMfUTedT}lYS{Reu:mnp:xԈGvhP#^ *r2x4{F{whx9l|h s l}hs~;Zhnޏhːo"4Ւ44z444u444 f4 k4%4eTMT@kT8<T}CTVT=TFTrT`TTTwk6ml:~}<|4)0Wdn_cpw%,Fei;agg'l'{4}l6)edpMfgp,2rr;rr5w(S;GyZ;m,AP8Q>~bt5c>bAPQxP[RsakQPMRa!6k>lx>lS~jlV~hEvV ESj#diokpk,di*u_4l~`ljcL|E}%rn|ېЃ}ڜ}jRoqɈy-ܞ<(lAqeʊnp3jf!kugepZ fYm(aT kGx;g%!z@{㢄ݙ!GzTqYZugՒkЉjRIT= LpCnb2`Z![*tNVIi=@UV8Eap8s_qPk]EtR_8b7[5TD%=(IG}@AS`>T_>q {D6stand14~#rsthhT%kR-o+o $|)wtiiU#o'z r4|T }Rހs܁hU'i 4:|x_Bk@bU>n@Iz@\@rUT_UTn_ThYSxRjp:tip?qԈMohQ#` *v2u4xFthu9rwh~ x qyhxz;]l}r|ߏmːs"}4֏44y444o444 `4 f4%z4]TFTCdT;5T=TOT?THTuTdTTT~g6tg:zn.EyR;RAvct8dAcERUqQ[VlbkUQMVb!9lB}lxBlWvklZvhI}vZ IWk#i}joo}po,ij*z`4pvaqksCsc2eZ![*xNYJl>@UV8Eat9w`uQk`FtV`8b7[5TD%=(IG@;G:0>Պa>a>}Ijstand15pspheT"hR*m)l "y%upieU"k'v m4{T }R܀sh~U'i 4?ty_Ic@hUBo@Kz@]@uU\YUTwZTdYSuRqk:{epDjԈSihS#b *z2s4uFphs9yrh{ } vuh}v;a{qyxxߏrz̐x{"z4֌44w444j4~44[4!a4&u4UT>TE\T>.T6THTBTKTxTgTTTc6|c:vbrIcr?ty1uT>Kz]Bo1HqS?TEodt;eEdHSYiR[[dckYRM[c!=mEvmxEm[oll^ohMvv^ M[l#mvkotvpt,mk*a4uobvl(CCs%>fW79fU61up25}l'8~ 7vw%4nq/1ncV{&\,V܊#KۉEށKzIψ@|\щ f~4]rUJqQPǀJww[ɀlayp[raPqq1@|_3{[*tk,7ug]/iY.x%rq}}ӑʃ}ӛlRmqĆy-՜<(mAoeƇn+~jkjglZ[Y!]T!aG5c&u!:vᝄؗ!GwTrYzZtg֌k͆jZLTB S.kQ9T"8I&|C}U>}RZ/OJ4{~O*1q_+$a[3^I9~cNVkuUWKFolBDgOTMtWK:vM/U\@.re6&Z\4w`S2lkG!QdG[canC,[jF2rwB+b}C1npG8xyF7jpQ8hO0P7K-<{I%?lK&TmW,sY2|W0U*%zS$(qT&G@2E$/=u7 8uz0h-E~/j%"rkxk2d!2g!P|a#{]&KK}Br6{l:;~>wCxc2i[!Z*}N]Kp>@UV8Eaw9|`zQkcGtZa8b7[;rBx?nDjC<9?KG=5TD%=(HG@;G*>a>Nc>΁N{stand16msmhbTfR'k'i u"rliaU!h'r h4zT |R~s}hߌއ|U'i 4Dlz_P\@myUFp@M{@_@wUeSUTUT`YSrRwg:apHdՈYbhT#d *~2p4rFmhp9nhx } {rhs;dwuu|uwv͐|w"v4ֈ44u444e4y44W4"\4&p4MT6THUT@'T/TATDTMT|TkTTT`6_:s~fHeLT^bS[_]dk^SM_d!@~nInnxIn`gmlbghQnvb Q`m#rnloynpy,rl*~b4{gc{~l<{c.~~RCtjRctRIH~~4Ro;Tt;edɋZbʋAi܆ATч7Wr&k#wb‹t;eXHHk)Twjt*]ʃn|~7n0u.n2W1W1e1IT J12t2_$=":$>4NVvi0c!~x,y{hq WR9^?w)< hbVB6]L;v%s|rx遜y~ϑƃ}КlRmq„y-қ<(mAmeąn'yj}kegjZWY[T"\G2a&p!7tՖ!GuTqYvZsgֈk˄j^~MTE| Vz;>{C~c2n[!Z*NaLt?@UU8Fa{:`RkgHt_b8b7[;rBx?nDjC<9?KG=5TD%=(HG@;Gk0>Ayd>#`> stand17 kskh_T#cR*h)f "s&pii^U"e'o e4{T |R܀sh߈~U'i 4?ux_Hd@gUBo@Kz@]@tU\ZUTv[TeYSvRqm:{fpDlԈSjhS#b *z2t4vFqht9xsh| } vvh}w;a|qzxyߏr{̐x|"{4׍44x444b4v4|4S4!Y4%m4WT@TE^T=0T7TJTBTKTyTgTTTd6{e:wcrHdr?ux1vT=Kz]Bo0HrR>SDpct;dDcHRYjR[ZeckYRMZc!dUP [?^h8VR6YSҀOoȣ4NϦ Wg5R1Nx*Np.Kh8Hh&?Hn+jSa;m3Hp!!׉SЄQxSTtY|gVxkS$kW/_`@cdDt_7W(|x}0rylfqr%TR~=[Cu,<{eb!SB9ZL>t%rp}~}ӐɃ}ԛkRmqĆy-֜<(lAoeƇn+|vj{kbg}gZSY"YT!YG5^%m!:r➄ؗ!GxTqY{Ztg׍k̇jYKTB S;~>wCxc2i[![*}N]Kp>@UV8Eaw9|`zQkcFtZa8b7[;rCx?nDjC<9?KH=5TD%=(HG@;G!6>Nf>]>y\d·޿stand18|#ishh \T}&aR-e+c $p)nfi[U#b'l b4{T |R݀sہhU'i 49~w_Am@bU=m@Hy@[@rUSbUTmaTjYSzRkr:tlp?tԈMqhR#_ *v2w4zFvhw9ryh x r{hx|;^ms~ޏmːt"~4ב44y444_4s4y4 P4U4#i4`TJTCfT;9T@TRT@TITvTdTTT~i6tj:|<{4)0^angapz%,LaiB]gg'l'z4j6)mapSbgr,7lrAmr9~w,SsCrb2dZ![*xNYIm=@UV8Eat8v_uPk`EtU_8b7[5TD%=(IG@c`>_>svd-Cstand19o&hv|hx"\Rq*aWv1e'-c'&pt,mfz[`$b(l bE}O~Sq܁g㐄H#a䐆56xfT}ETXT=TFTqT`TTTwlnmm~:}851Wel`dhx0*Ffsct5d>cBRRyQ[StbkRQMSb!7l?mx?mTklWhFvW FTk#ejokpk,ej*v`4mamkt4E҇IӇSvȈIuɇ5܆/kЈ&qcqtPj2_zpt x|Ɛ,()e O P _ ET K0u1n1a%Aļ%<%;0:lo,`e&c5oi.v$gN3sTRķ]ij4\yb5d#3Y'~SeN|Mi/KZ5w^)4ko+(\k2YY9\]UmeW;|ZFeQChIdL{QZ9o].^l@3kt6GTk2opS2e{F KtFSs`gR,rdU2vpQ*gvR0njW8sU6ja8b_0x_71|Z,FsX$ffZ%gg+mh1!uf/%yd)Lsb$Hjd%NA2{E!/Lm7"z7mhx0i-Cv-c%klqm ]-`J}Z#}W&FFx=j6xe:=p?pCocaZ[-uN VJi>N@>V:Eep9Yt`rQh]FS`8c7]K H|>5RD%=I G}@;;>&]>a>zsAWjstand20c)hsoghr%\Te,`Rj3e{/c w'ph.mei[U%a'l a4~T RނsڂhߐU'܅iߐ 43x_7x@[U;p@G{@[@pUGjUT_fTwmYS{R^v:fop4}ԈBzhN#\ |*n2w4{Fswhw9g}hy o e~hl~;Sagߏc̐h"|4̎4נ4{444^4q4x4O4V4"j4hTQT=pT6ATzIT|\T9TBTmT]TTTpl6fm:y~<|4)|0PgnYfpu%},@ii5fgg'l'{4wm6)_fpGjgp,-xr7xr3x&SlCmc2^[![*qNSKe>@UV8}Fal:q`nQkYGtQb8b7[5TD%=(I|Gy@;G۠?>LwZ> c>ps#stand21X,gsc ghg'[TZ/`R`6ep1c k)o]1lteixZU%a'| k a4T R݃sׂhۑߌU'ׅiِ ۊ41y_4{@XU:q@H|@[@pUBmUTYgTqmYSzRXw:`pp0Ԉ>}hM#Z y*j2v4zFmwh|v9b~hs k _~hf~;N\bߏ^̐c"{4Č4Ξ4{444]4p4w4O4V4!i4kTTT:sT4CTvLTy_T7T?TiTZTTTjl6`n:s}T6U;et2f;e>TNT[O{ekNTMOe!4nzɋ,܆$sЇ{rVsi;Do$fk{w tɃ|~%"%_2H1J1Z1BS LĪ2n2j2a$D˾'ĵ=&8-0t< i?l +wt%~qR*|UTɺ ^ɵ?[yxQ>@*|y:'bqE8QRWMY]Ps]6;o>iCkc2]\!Z*nOQLb?@UU8zFah:nalRkVHtOc8b7[{y\> `> pqstand22^+ksikhm%`T_.dRe5hu0g q)tb0p{ji`U%f' p g4T RރsقhߑU'چiޑ 40x_4{@XU9o@F{@Z@oUCmUT[hTsnYS|R[x:cqp2Ԉ?}hM#Z z*l2x4|Fpxhx9dhv m bhi;Q_eߏ`̐f"~4ʐ4֡4{444d4x4~4 U4\4"o4lTTT;sT4DTwKTz^T8TATkT[TTTln6bo:u<|}4)z0LinUhpt%|,R5S:ct2d:c>RNR[O{ckNRMOc!3m;mx;mOllRhBvR BOl#`kofpf,`k*qa4hbhk;B;Jzȋ@zȋ.܆&sЇzrYtk;Fo'fkzw tɃ|~&#%`2I1K1[1BS Kĩ0o2j2a$B˽&õ<%8.1spkTrg8DfYZhS@Mlcn!!⌄]_{S`wYg^{k-9i4D]@SbDVt;I1<{xU=E*y@%eqJ5TR[K[`Oua6jCjc2\[![*oNRKc>@UV8{Faj9n`lQkWGtOa8b7[}5TD%=(IzGw@}Q]>ծ]>Rpˇ¬޿stand23d)osppht$dTf,gRk3l|/k w(xh/tpieU%k' v n4}T ~R߂sۂhU'߆i 41w_6z@YU9n@Fy@Y@oUFmUT^iTvoYS}R^y:frp5ԈB|hO#\ |*n2z4}Ftzhz9ghz o ghm;Uchޏcːj"؀4ғ4ߣ4{444k444 \4a4#v4lTUT>rT5DTyJT}]T;TDTnT]TTToo6fp:x<4)|0PinXipu%},?li5hgf'k'}4vo6)^ipFmgo,,zr6zr1w%R;FyY9n*>P5Q;bt2c;b>PNP[PzakNPMPa!3k;lx;lPjlShCvS CPj#aiogpg,ai*q_4i`ijAgYVgSEKm_m!!ቄ\]}xS`rY}g_wk36k:@_EPcHTu@H6:}xY=K)yF#hqQ2VRaH]eNxf6b#v!oCvߣޙ!G{TrY؀ZvgғkщjOIT: Hr!1JkePyJ5Dkh4k#2_(|Z}lU}Lp/I`5{tc(1ht*$Zp2W_9~XcTkikWx`FobWBgFiKtO_8lb-U{q?.hz5&Rq1kvR2aE!IzDPy_eX+[a[2rmV*bsW/ng\7xpZ6jhf7`d/vd6y`+lCkb2]Z![*pNSIf=@UV8~Eam8o_nPkYEtO_8b7[5TD%=(I|Gy@7]>c_>}tsOstand24k(pswqh|#eTm+iRr2m.l ~'yo-uqifU%m'w o4}T ~R߂sۂhU'߅i 44x_:u@\U;o@Gz@[@qUJhUTbeTzlYS{Rav:jop7{ԈExhO#] ~*p2x4{Fwwhx9j}h| r i~ho~;Wekߏfːl"~4ё4ݡ4{444l444 ]4c4$w4gTOT?nT7?T{FT~YT;TDTpT_TTTtl6jm:|~<|4)0Ten\epw%,Cgi8dgg'l'{4zl6)bepJhgq,/ur:ur4x'Smx>mRklUhEvU ERk#djojpj,dj*t`4kalkhYQhSJHn![n!![\yS]tY~g]yk93l@=`JMdMQvDE;6~x_;Q&yM iqX0XRgF_jLyl5<^[ibe)XBt@_LxFy%sqݒ҄}ڝlRoqɈy-ڞ<(nAqeʊnk3j`"klg]lZ ]Yf+]TcGr=c$w!uAwݡܙ!G{TsY~ZvgёkЉjQKT; JN"z~Y-jZ 9l!?n!2EkgK{F7?kc4f#2Z'|U}gO}Lk/I\5{u_)1ip+$Zl2XZ9~[_UkkfWz[FodSCgGeLtP[9m^.U}m@.iv6&Sm2mrS2c}F!JvFRt`fT,[bV2rnR*btS0nhX8xqV6jib8``0v`7z\,nCnc2`Z![*sNUJg>@UV8Ean9r`pQk[FtR`8b7[5TD%=(I~G{@\>a>_`xnzbjstand25r&qsrh"gTt)jRx0n-n &{u,vrihU$n'x q4}T R߂s܁hU'߄i 47x_=q@_U=o@I{@\@rUNdUTgbTjYSyRds:nlp9wԈHthP#^ *r2v4yFzuhv9mzh t k{hr|;Xgmߏh̐n"|4ю4ܟ4z444m444 _4 e4%y4bTJT@iT8:T~BTUT<TETqT`TTTxi6mj:{/mE:aOJfQNwIB@3~xd9W#yTjq^-YRlE`oJzr3;v>pCqc2b[!Z*uNWKi>@UV8Fap9u`rQk]GtTa8b7[;rCx?nDjC<9?KH}=5TD%=(HG}@;G%B5>[>c>M{Qstand26y$rsth!hT{'kR/p,o %||*xtiiU$p'z r4}T R߁s܀hU'߂i 4:~y_Al@bU@p@K|@^@tUS`UTl^TgYSwRgp:ripTQT=TFTrTbTTT|f6qg:yK|^@p/EzTe<0X?*[ 8h#a1n(_R7lUR ]?^F/xj6^ y[kqe+ZRrCbtI{x1bLC|%uuۓх}לoRoqȆy-ם<(pApeɇnx0jnkoglnZaYt'`T!gG~:f&{!?zۜژ!GxTtYyZugЊkχjVMT= M:5kY5\"3Q&|K}]E}Lb/JR4{xW+1jh,$[d3XR9~_VWkp]X~SFogJDgJ\OtRS;oV/Ue@.ln7&Te5riT2guH!MmIWkbhK-[dN3rqJ,bwL1njP8xsN7jjZ9bX0xX8}T.;x>rCtc2e[!Z*xNXLk?@UU8Faq:x`uRk^HtWc8b7[;rBx?nDjC<9?KG=5TD%=(HG@;G0>~_>#`> ^stand27ys|hpT!rR)v(w "%~}isU"y' }4{T |Rۀsh߈~U'߃i 4?rx_Ha@g}UBo@Kz@]@tU\WUTvXTbYSsRqi:{cpDhԈSghS#b *z2q4sFnhq9xphy } vsh}u;azqwxwߏrx̐xy"{4֍44x444{444 l4!q4'4ST<TEZT=+T3TFTBTKTyTgTTTa6{a:t`rHar?rx1sT=Kz]Bo0HoR>SDmct;dDcHRYgR[ZbckYRMZc!aUP [?^w],:h8SN6USрOoƣ4NΦ Wg5R/Jw*In/Fh:Ch&?Dp+:Hx-B7t48<&A~@q':eW95gU6/vp12~l&5} 4tw&1mq1.ncWy&\ށ,Vڈ#K؇FKxJ͇Az\ψ f}4]qUKoQPKvw\ƀlbxp\qaQpq/>|^2[(xk,4ug_-nY09jSb8t3Dp!!։SτQxSTtY|gVxkV q\+eb=jbB{[5V%xx0pypqqy"`R;fB,<sbaB7gL>%rp}~}Ґȃ}ӛkRmqÆy-՜<(lAoeŇn+jk{guZ lYfT!qG4k'!9ងח!GxTqY{Ztg֍kˇjYKTB S~D;!zF-sG ?Y!EZ!92kp83=+kO:R"8G'|A}S<}SW/PH4{L)1q]+$bY2_G9~cKUkuSWHFol?CgORMtWH:vK.UZ@.rb6&ZZ3w^S2liF!QbFZaan@,[kC2rx?+b~@0nqE8xzC6jqO8hM0M7I-<{G%?lH&TnU,tV1}U0R*%{P$(qR%G@2E$/=u7 8uz0h-E~/j%"rkyk2d!2g!P|a#{]&KK}Br6{l:;~>wCxc2i[![*}N]Kp>@UV8Eaw9|`zQkcFtZa8b7[;rCx?nDjC<9?KH=5TD%=(HG@;Gs)>F,c>'^>v ޿stand28shxTxR#|$~ i{U ' 4yT zR~shی؆|U'݂i 4Ddw_PT@mrUDwm@Kx@]@uUfLUTOT[YSlR{a:[pL\Ԉ[[hU#e *2k4lFhhk9hhr w lhm;jpzooޏzpːq"|4؏44v444444 w4"|4(4GT0TKMTA T&T9TGTQTTnTTTZ6Y:mvbHbKP]ZP[^Uak]PM^a!?vkHfkxHk_`jlb`hPfvb P_j#rfioyfpy,ri*v_4z``{viB JQ5FAU;ERGTUN Y?^.x]:,hDD >?IP{Ok4H Wg2P;;w79n=6gI4i&N6q+G9x-Q)u4F.31~+.p6)eWJ&hUG wp@$l4%}/$tw6 nqBpcQs&W{,Qɂ#EƁ@xFqF>tY cx4ZkUHiQP{Krw[|latp\laPkq=/|o(n|k<$ugq"qY?)kSs-wA4p!|!ʅPLytSQnYygUtkjup is1lq7~k+gx)y wqeR2j:'<ybgB0mL8%okwxv׉}ƍ}˙yfRlqy-ϛ<{(hAnen%jkg {Z wYlT"|G-q(!3埄і!}GvTmY|Zsg؏kņj^vITHt Ys=Y1J/"z9-z: DL!KM!=&kw,&A k"C@F#=;'| 5}G0}ZK/W<5{>(1zO*$jK2g:9~h>Tk{FV;Fos2BgTDKt^;8~=-UL?.zU5&aL1}QR2r\E!WTD_T_v3+[r62r2*b3/ny77x65jzA7p@/?6;+<9$?t;%TvG+}I0G/D(%C#(yD$GA2E$/={7 8|z0h-E/p$"ykk2j!2n!V|g#{c%QQ}Gy6{r:=m?;>~C}b2nZ![*NbIw=@UV8Ea8_PkiEt^_8b7[;rCx?nDjC<9?LH>5TD%=(IG@;G &>\_>2`>̒*`stand29s h}T}R! iU' 4wT ܁yR|s}h؊ԅzU'܀i 4IVx_XG@phUGin@K~x@[@sUoAUTFTTY|SfRY:SpQPՈaPhS#c }*x2f4fFahf9`hl o dhg;kg|ggߏ}g̐j"x4ً44t444444}4#4*48T!TL@TCTT+THTRTTpTTįTS6Q:gi^9gc'l'f4T6|)FpoAgs,MErXGrIVx:UP<K~x[Gin4iNUQDiRJRct@icJcN~Q`LQ[aGbk`QMab!AilJYlxJ{lbRkleRhSYve S{bk#uYjo|Yp|{,u{j*i`4}Ra~ij<}a.iPCwUOcw~OIIii4X\;Zb;mSɋcPʋIV݆M@҇AAr+S$jSg;pGU4k3=wQtj3F˃ U|j~=Y5`2io|2[o1Yu1e1J{Q D-|2s2Z$86"?y6sXB!L@!>kyCk#5@7#>,'| '}8!}Z=/W.5{1)1{B+$k>2g,9~k1Uk~8W-Fou$CgU7Lt_-90.U??.{H6&b?2CS2tOF!XGFaF`w&,[s(2r$*b%0nz*8x(6j{48q2027.,<,$?u-%Tw:+};1:/7)%6$({7%G@2E$/=~7 8~z0h-E/r$"į{kk2l!2p!W|i#{e&RR}H{6{t:;>Cb2pZ![*NdJy>@UV8Ea9`QkkFta`8b7[;rCx?nDjC<9?KH=5TD%=(IG@;G*,>^_>)b> pjstand30shTR$ iU#' 4uT wRzszhֈуxU'|i߇ 4IMy_Y?@lbUE`o@Fuy@S@iUp;UTBTRYySeR|U:PpQIՈaJhL{#\{ z*yt2e4eF`he9\hj l }bhd;fcwd}dߏxc̐|g"t4ڇ44q444 44#44+414/TTH7T@TT#TDTNT|TkTTTP6O:d`eHydKuS]DR[^?ck]~RM^c!?`mHPmxHrm_IllaIhPPvay Pr_yl#qPkoxPpxr,qrk*`a4yIbz`k;>{C|c2m[!Z*NaKt>@UU8Ea{9`~|QkgGt^a8b7[;rBx?nDjC<9?KG=5TD%=(HG@;G0>y^>Hc>wstand31shTR!' iU)'$ $4sT x}{uRxswhԅ~΁tU'yiބ }4JE{_[9@i]UDWp@Blz@L}@aUr6U{T?TPYxSdRyS:NpPCֈ`EhEu#Uv ~x*rq2f4dF_hf9~Yhj zi x`h}c;a_qaxbs`͐ve"o4ہ44m4~4444+4444:4'TTE/T>TTTATJTxTgTTTO6M:cpk%t,l3id-gO'Y'd4P6x)?pr6ga{,R5r[9rJE{XnFHnxFjn\Aml_AhNHv_q Nj\qm#nHlouHpuj,njl*Xb4vAcwXl!T|MËb;p?\'k;+w!:tR75̃"@|S~k#9&"7&|}'}Q,/N4{}"+1o2,$`.3]9~d Vkv(XFolDgO'OtV;t /U/@.q87&Y/5w3T2l?H!Q7I\5bm-[i3rw,b|1no8xx7jo$8g"0~#8.;}>wCyc2j[!Z*}N]Lp?@UU8{Faw:}~`ztRkczHt[}b8b7[;rBx?nDjC<9?KG=5TD%=(HG@;G/>h`>!a>B stand32shTR!& iU('" "4tT ~vRysyhԇ΂vU'|iއ 4IFy_Z:@j]UCXo@Bnx@N~@cUr7U~T?TPYwScR{R:MpQDֈaEhIu#Xv w*vq2d4cF^hd9Yhi }h {_hb;d_ua{aߏv`̐ze"t4܇44p44444)442484)TTG0T?T TTDTMT{TiTTTN6L:bpn%w,k4ic.gR'\'c4P6w)?pr7gc~,Q6rZ:rIFyZmFJmxFkm]Ckl`ChNJv`r Nk]rk#oJkovJpvk,okk*Za4wCaxZk{g?LyJpSk^n&`v+V|-g|4YGD rS iWe nUa}pXlMLwwTrq_uc,t&2{,.#$z"s)u9 ?x45kU%jQ3{-rw={l@tp;la1lqQ kVyg|YZ oSUt!S}![1)zXrS.oY`wg5tkt!v|&y~ xyqtR*x2!< bxB,}L4%`mUjKwNÈYb~}dӑu`xmdRhqyqڒ-Ė;>zCzc2k[!Z*N_Kr>@UV8|Eaz9~`|vQke|Ft\~a8b7[;rBx?nDjC<9?KG=5TD%=(HG@;GcU,>&0a>/^>@Pn޿stand33shTR & iU''" !4tT ~vRzs{hՈ΂xU'~i߈ 4IHx_Z;@k^UCZm@Cow@P@gUq7UT?TOYvScR~R:MpSEՈbFhLw#[w w*zq2c4cF]hc9Yhh h _hb;h`yaaޏy`ːd"w4܋44r44444(441474,TTI2T@T TTFTPTTlTTTN6L:bpr%{,k5ic/gV'`'c4O6v)?pq7gg,P8rZ;rIHx;FF6pCowPCZm2ZJGP@[QGEbt=[bGtbJpP\?P[]:ak\yPM]~a!>[kGLkxGmk^Ejl`EhOLv`t Om^tj#pLiowLpwm,pmi*[_4xE`y[iL5Q0Zhs2Wd1Tj1]x1EoG :'rzu2i2M$-s.o:l3d\7|C{b2lZ![*NaIu=@UV8Ea}8_~wPkh~Et]_8b7[;rCx?nDjC<9?LH>5TD%=(IG@;G*>j^_>1`>8U}mstand34shTR % iU%' 4uT wR{s{h։ЃxU'~i߈ 4JKy_Z>@m`UE^n@Fsx@T@jUq9UT@TPYxScR~S:NpRHՈbHhNy#]z x*{r2d4cF^hd9Zhi j `hc;haybbߏzb̐e"v4ډ44r444 44%44.444.TTJ5TATT TFTPTTmTTTN6M:crJKy;II8tFsxTE^n3]LJQB^RHHct>^cHwcLsQ]BQ[_=bk]}QM_b!@^lHOlxHpl_HklbHhPOvbw Pp_wk#rOjoyOpyp,rpj*^`4zHa{^jO5U0^iv2Xg1Ul1_z1FrI =)v|w2k2P$0x0s;o3g[9I,RP=U@ J?T-#<"'|}.}X2/U#5{')1x8+$h32e"9~h&Ukz.W#ForCgS,Lt\#9|%.U4?.x=6&`42|9S2qDF!V=F_<`t,[q2r~*b0nw8x6jw*8n'0(7#,;>}C}b2nZ![*NbJv>@UV8Ea~9`{QkiFt^`8b7[;rCx?nDjC<9?KH=5TD%=(IG@;G(>]>S!b>:;}jstand35shTR $ iU$' 4vT ڀxR{s{h׉҄xU'}i߈ 4JNy_Z@@obUGao@Ivy@W@nUq;UTATQYySdR~U:OpRJՈbJhO|#`| z*}t2d4dF_hd9\hj k ahd;iczccߏ{c̐g"u4ه44q44444#44,4240TTJ8TBTT#TFTPTTmTTTO6N:d˃!L|a~=R4X0akx2Yi1Wo1a}1GuK @+z~x2n2S$2|2w/"<$&| }0}W5/U&4{**1x;+$g63d$9~i)Vk|0W&FosCgT/Mt]&:|(/U7@.y@6&`74~au,[q!2r~+b0nw"8x!7jw-8n*0+7&-<$%?s&&Tt3,z41300*%.$(x0&G@2E$/={7 8{z0h-E/p%"xkk2j!2m!U|g#{c&PP}Fx6{r:;>~Cc2o[!Z*NcKw>@UU8Ea~9`~QkiGt`a8b7[;rBx?nDjC<9?KG=5TD%=(HG@;G&>7Z>Yc>Jstand36shTR# iU"' 4vT ݁yR{szh؉ԄxU'|i߇ 4KQz_ZB@qeUIep@Kzz@Z@rUr=UTBTQYzSeRV:PpQLՈbLhQ#b {*u2e4eF_he9]hj m bhe;iezee|e͐h"s4ׅ44q4444 4 44)4/43TTJ:TC TT&TFTOTTnTTêTP6O:eOa4= Ig&LC'yA%pJ"kU#m&X%u+O'|-^z4P<8rFhWZmUU|pLlA>vwG qqS tc=z&CƁ,?#4-1z6*|H P}4EqU2qQ>7wwIlNxpGqakyC k"/=2"<&&| }3}W8/T(4{-+1w>,$g93d'9~k+Vk~3X(FotDgU2Ot](;}+/U:@.yD7&`;5>T2sJH!WCIbAbu!-[q#3r+b!1nw%8x$7jw/8n-0.8*.<'&?s)&Ts5,z72613+%1%(x3&G@2E$/=}7 8|z0h-E/r%"êykk2k!2n!U|g#{c&PO}Fy6{s:;>Cc2q[!Z*NdLx?@UU8Fa:`RkjHtbb8b7[;rBx?nDjC<9?KG=5TC%=(HG@;G">Z>(a>1ˁ¶stand37shTR! iU' 4xT ނyR}s}hًօ{U'܀i 4JWy_XH@siUIko@Ny@_@wUpAUTETSY{SfRX:RpQQՈbPhV#g }*x2e4fFahe9_hk o dhf;mh~ggߏg̐j"x4׋44t4444444$4+49T!TM@TDTT+TITSTTrTTȱTR6Q:fi^9gg'p'f4S6{)EppAgw,MFrXHrJWy;WT?Ny_Iko6lPVREjSLSctAjdLcPRbMR[cHckbRMcc!CjmLZmxL|mdSklgShUZvg U|dk#xZkoZp|,x|k*j`4SajkwStm2H˃ W|l~=Z5a2kr}2]p1\v1h1L}T H0|2w2^$;!9$A{7tXC+nG(iR'k&U)t+L-z-[y4L!8"~3pBfWVkUQzpGl<~9uwBoqMrcJw&P~,JĆ#?9|>v@6xT ]{4RnU?mQJ}CtwU~l[vpToaInqC!}vxkEwg}xYJmS|$}I'r!wҁ!|ƆJE}{uSIqYzgNvkw |}p~)sw.p!px" yqoR,t5"< bsB+xL4%pxmq{qӌzŽ}ǘ|hRkqy-˚<}(iAlen j kgZYxT$G(|+!/⛄͕!GtTnYxZrg׋k„jcjKTJj \i;>Cc2s[!Z*NgK{>@UV8Ea9`QkmFtca8b7[;rBx?nDjC<9?KG=5TD%=(HG@;Gs)>]>'^>v޿stand38shTR!# iU' 4yT ߂zR~shی׆|U'܂i 4D`w_PP@moUDtm@Kx@]@uUfHUTKTWYSiR{]:WpLYԈ[XhU#e *|2h4iFdhh9dho t hhj;jmzlkޏzlːn"|4؏44v444444 4"4)4BT+TKITAT!T4TGTQTTnTTTV6U:jsbHbKP]VP[^Qak]PM^a!?skHckxHk_\jlb\hPcvb P_j#rcioycpy,ri*s_4z\`{si= JM5BAQ;ARGPUN Y?^*x]:'hD@ 9?DP{Ok4H Wg2P:6v74l?1gJ/j&M1r+E5x-Q%w4D*1,|,)n9#eWL!iUFyp>l3 |0sw8nqCpcQs&W{,Qǂ#Eā@xFqF>tY cx4ZkUHiQP{Krw[|latp\laPkq;*|l%lk<ugrwYA$kSr*|A0p!|!ɅPLytSQnYygUtkkzrnt.qn4f(ex'yqnR0s9&< brB.wL7%okwxv։}ō}ʙyfRlqy-Λ<{(hAnen$jkg Z YvT"G+{)!2䟄Ж!}GvTmY|Zsg؏kĆj^sITHq Yp#(y@$GA2E$/={7 8|z0h-E/p$"ykk2j!2n!V|g#{c%QQ}Gy6{r:=m?;>~C}b2nZ![*NbIw=@UV8Ea8_PkiEt^_8b7[;rCx?nDjC<9?LH>5TD%=(IG@;Gh.>\>-`>Oystand39shTR&& !iU!' 4zT {Rshݍ܇}U'ނi 4@jx_KY@ivUB~n@Ky@]@tU_OUTzQT\YSmRtc:\pFaԈV_hT#c *|2l4mFihl9{jhs z ymho;dstqzqߏur̐{s"{4֎44w444444 4"4)4KT3TGRT?#T*T=TFTOT}TlTTT[6[:o#;%>4JS<=D?7G DU/L;Z4JRAYUP Z?^*< bnB3tL<%qn{|zߍ͏‚}Ϛ}iRmqy-Ҝ<(kAoeˆn(jkg Z YsT"G0x)!6➄ԗ!GwTpY{Ztg֎kȇj[|JTDz Uw AQ!GR!:)kr/*?#k G9~eCUkwJW?Fon6CgPILtY?9yB.UQ?.uZ6&]Q2yVS2naF!SZF\Y`q8,[m:2rz6*b70ns<8x}:6jtF8kD0D7@,<~>$?o@%TpL+vN1L/I)%}H$(tI%GA2E$/=w7 8xz/h-E/m$"vk}k2h!2l!S|d"{`$NO}Ft5{n9yByc2jZ![*N_Jr>@UV8Eaz9~`|QkeFt[`8b7[;rBx@nDjC<9?KG=5TD%=(IG@;Gz2>X>a>.8~Ojstand40sh|T"|R*) #&iU#' 4|T }R݀sۀh~U'i 4=ty_Fb@e~UAo@Kz@]@tUYWUTsWTaYSrRmi:xbpAiԈPghR#a *x2o4rFmho9vphx { sshzt;_znwuvߏpx̐ux"z4Ԍ44x444444 }4"4)4ST;TD[T<*T3TFTDTMTzTjTTT`6x`:s^(V6d.SRw](:h5TP3VUւOpɤ4QҨ Wg6àS*Lv&Jm-Gg7Di&;Eq+4Ix-=7v42> B}@o%:dW66hU1/wp*3~l 6|5sw#1mq-.ocY|&^,Xߊ#MމHN{K҈B|^Ԋ g4_sULqQQʀLxw\ˁlbzp]raRrq*?{W3U)}k(4tgZ-sY-9jS]9y/Ep!!يTԆSySUvY}gWzkQ!vY+j_>o[CS7N&xm2fykyqv"hR~;nzD|.Y!D[!81ko83<*kO8R"6G&|@}S;}PX/NH4{|L*1o^+$`Y3]G9~bKVksSWHFoj?DgMRMtUH:tK/UZ@.pc6&XZ4u_S2jjG!PcGYaal@,[hC2ru?+b{@1nnE8xwC7jnO8fM0}M7I-@UV8Fau9z`xQkbGtYa9b7[;rBx@nDjC<9?KG=5TD%=(HG@;G^z>Z>N>") yޯrun1(h&h3zY.~Y;F71.m;zUJ ?B3qR| "wR~s{hևׅoTy$xiւ u?NX`Y=TpnRIx`STbTtRi.RPz1PE}ybqP6EpJߊ{Hh%'=5_DbqBZh_F[zl'u azd9jgߎf͐hk k4ķ4ԍ4a4m44%}3)3H3?o3`x3d3X 5 VmC ;oUpUU UU"UCdC6dFcF=3/p0i+(m+ss"s'ybqDE}ey>z1ii.st(\:wY=vNX{RXfXSbIxP{EZnB}qKV|H}Q|JjNHgV@wkVa_p$M}PaU\Q}lrPzi_x mby%gXtdVbLlq=onaFfKidnpoFmd=cpUU[Q[[`WOf{nB\8e8KnjG8Tꋀ0`4vTVőQ}ŏGf97oykd0xVU|To?d[c~~[yhxx0{5551/kZ..,p"]xj|m>1p!5gd;~eb8m`j;Azʿ& 0 j}g$lRMwS40 |d)lBQvIW$k~jvlnoל~n֡w~hRuqy-՞9u(fJrcm3H)l%}ia?o`*qT`xMKzd"Oԍ֙!mxMaSlYk[vgķkjOw^Ps;o96Vm/E\&Z0gl Ck'.dS,A[%'Vha#vl ;K!LCNq( Vm&m RdCblI/(>y/*,~;3X% 54;d*6!j:.BT3\k?*v1g}1JG/CJ:CN/9`R6Y>FMZ'=EoU>u0-R3U, Kx1 Fg9P7 Ip;!M53#U :BB0?Y(F)R10N!6.I,5*BI/'?N*(D+-KW2S!@=A -,zBhAE,-*","jk* " "p{v*{v)ppvozC{yBUlX;P~Ottng"o-\hUyJOVCp^p{L]uuthkiV^nRbN\QqYxZ]\ >rR>run2xswh#mT#qR.x4w $#vi%mU3v'& $u4iTs unRussh|hUq'qiz o4Mb_[J@s}UF@O@_@sUo?UTFT\}Y|SyrRd:ZpXވWh# *2x4yrFqhx9oh vhz;|{ߗz͏{"f4|4ۇ4[4f4|4m4 4%4$a4Bl4C4YnT7vTYIT YT T(TETITnTfTTTZ6X:zއe@rT]ġOƛ[z;I+ki;wWZtR܏uIga|c~f~q|2111 i¼WÜ22$nZyivHNbSIuAA[FFrB9bI7nMDxN=jP-CF.FT&7J"0<@$3?<*?TF;?M9=N56I20%B32(A7:GG2uI$y3=j9 v8jzp4h{1Eu /e$"iknk2b!2f!N|Z#{X$LI}Ed9{a;{CmE;mCjFoo2cg!a*qVVYdHFU^8xPagEqml`kYWtVs?b=[yArzIxGnKjJ >$J>nˊ'Grun3fsbh"XT"_R-f3c "n"m^i$UU1^'$g "X4YTc f_RfschomVU`'_ii [4^^_mI@UU|@]@j@|UBUTL}TerYsSgRj:bpXՈYh# *24gF{h΄9uhɌ ~hԂ;ˀɁҗχ"R4h4t4G4S4i4O4e4"q4"D4@O4@e4%K)T#'.TDUT? TpTr2T$iT#`T;TMTT Tb6`:<4)0HnJp%,=i4g̱'Ĝ'g4er6s)L}pBg|,sDrmIr^^f\pd]jU|`{O[oI{vXWtRzVMqYPd[dHrkVgMbt!Yz^bx]jYylYh~cv |h{#senofp,ro*v\4r[axjԇ{=rkWádzǛa;M,k6wpRtizޏE߃[|{z~dm|2111 wiĜ22$~nG<+?+ F+G+RGU Ѽ?<zѽzѴRU]xay]qhWyPizhrke{T] h!~yvz;oqhgyzz trklzPn t!||9shz|m{'.f(.Ea?hQK1"V9%.dN7 f7,=U''O7zr2-i5 FS)!DU!B1khp? k0F7KCAJ1C|/0:}%K)#'.}aFD`-H{|4,1uN6$mFBl)G~j'`kw4b(NoqIgZ2Wta)Aw14UEJ.tTA&bFx|"9jx4@o4;1:--zG=hG3E57/4J" %:k;k2&H!2M!/U|2P{2T/Z#`}$iHK{HRX6m[-;SESLl]2_d!nG*\NNdJNY6Un?8\?aJFlY`RkN]t`sV+bR1[T9r\9x]+n_3j_,%B >WM>run4~s|h$qT#wR/}6z %%xi&oU4w'( &t4yT҅ Ѕ}RʻsհhؿŋzUDŽ'寂i纍 4Tc_cO@qUJ@N@Y@jʒUuKUzLjTZTuyY}SpRy:qp`ۈbh#{ *24pFh9h h;ߗ͏"x444o4}4Γ4 l4 4(4$`4Cj4E4q`To:Tm T" T2TPTϟT TrTTDT?Ts6o:<4)0TnWpǰ%ț,yGi=gsո'nͣ'p4uy6})ZpuKgjʒzLj,gJrcOrTcX^]SNYJQ}K]jD{qRX{tJzKFnVTa[`LpkOfMWv!O{VdxQc]xly_hnfvs j\}#llponp,ht*p`4mcconp$o x&ywq~!hRHtJ&<tb"eBHrLK%}uМ}Ƥ|kRvqy-¤<|(kA¦ve n&( j k lgxZ$`Y"kTCjGAvE!CΓÞ!}GoTqYxZîzgkêjP]T <*Rm=V>?E.@h`+"P,.bB M@==+2)zP-O* j!m !+k8*2" krYwT)vA(|pB}q`o:}{WBz=A{JW1bT$WO9N~o0fku;t5no([gh>Ttz:JEUUSp.e^&|XKvNt2ufg!jZU_Jn7L[7Or5Pb5Xn7Wx5[jFZGNDbC\ntVt+Cb,K[2Nr8Hx0>n6Aj1><*E?;A >R>ʊ"run5ussh"iT"nR-u3s ""|qi$hU1q'$z "o4mTw xqRxswhكmUv'vi u4O^__I@sUF|@M@\@oUtBUTLTe|Y~SrRj:bpX܈Yh# *24rF{hĄ9uh ~hƂ;ߗ͏"l44؎4a4m44f4|4"4"[4@f4@|4IFTE!TnOTfTT,TyToT IT]T"TTb6`:<4)0HnJp%,y=i4g{̷'tġ'r4e|6~)LptBgo,dDr_IrO^T\`RM\F|N{A[p:zvJWtCzG?rLPg[XHukIiMUw!IzPbxN]Y|lzYhocvx m[~#hesofp,gt*lb4h[fmo܇i=rWWáOzƛa;M,kn6wZRtRz܏yEi[|cz~dm||2111 eUĜ22$iWug{G<{+?v+ vFm+mGq+RqGUo w?vG%=?(>=GG62II$6D= >pTJ>JKGrun6fsch#YT#_R.f4c $o#m`i%VU3_'&i $[4XTc f`RgschnmUU^'^ig X4]b_kJ@}UV@_@n@U|?U}TFT\sYrSygRd:ZpX׈Wh# *2x4ygFqhx9ohʂ vhz;|{җz{"O4e4q4D4O4e4S4 i4%t4$G4BR4Ch4'U^T"5iTU7TNT T& T$/T&(TDT@"TqTrTZ6X:z؇x@rj]ġeǛ[z;I+k~;woZtjޏIa|{~fq2111 {¹lÜ22$qH<,?, H{,{H,RHUҿ ҵ?<ҽҲRU]b]{hXPjhzkfT^ i!~v;o{hh{ tzklPp u!9yh"6/3.HG= G-4=684Iz& -! +I8!U7!#Kk  Nk1CU3?P3-U|//\}'U^"5i}IAKI)R{\)-1XE6$T@ET$L~`'dkm1^n!Go\NgO3dtK%NZ(6Un=?.]M?&KAFmCY2aWR!OM]aIsS9[U@rV2b]3n\Ax`:j^-@T-?e(7`",>@>r?iattack1,w&z@`:`O`'B;1kL_e'NS9HHʿZa逢ҀKb<%k`*MTGhS(}U6UFTWR68Sb}QF2zQU;qensN_Rfd.oZ1iK6jE>s`v/Z~,kg?pVLt/FPsmGLhTw3T{t5WZi8HBhlQ_t\j5U]UDGIS\X}U>2|R[6RDԌVJՌU4nO4nL=B$l+>&a*Z0ngF8M)n:z+6{%[ђ+6:ހ1V6tGGETGbei<[Z:\c:cs9\m;d zB8&,*'FՇ`̨=KѳN\DrOBÁsAwHÆmNʁdNxDGs]Li&myP|so%^RrUk4&N*z$`_ѠBъD!eߐIHzJd̒cG}gop$zRl=e>d&i{s,z x q*}`~L&uN!}/ p-DO=Q%f̆WfN`ZZʦ`uiiĻrzH{ŋ^rsrr‹{%=ŒF{p/=#ȃy"sZ;^-UWHI&X$JރtȽt!{IJʹ_ʘcg{hDoMTUTXR82 4z> %p/['0x(I,(4C6@%(3(U#'j)#}F09!#V-)X%)x1<j!v ^ L(>,M~ jO1?2)-7B"ED3(=:5321 : 1#V>"YC Em2@w)7L+'5>)]M!?4E94K457$.E1:D%e=]6!>+)'B(.%F +.F">B H>'!MY ~W#@3yC$)ou%wt=s>d+0y+!lwzzz |#2#e|k%l'g_vcm?oBy|PhWpL|sPftdgzr2v_,^QpIHVFwnq{XimE]dqc}`w\NQhPaK]zNyVvXn~[y]:QFcxZyNHV\/S+_|Z}RO&j/q>;8>E>*ȷattack2sh TR !i U' 4T RߢsݪhU'i 4+|_0d@QzU/z@>@P@cU>RUpTPLTbSxYt}zSneoRkN:dNpNV܈KZhe#b wz*yo2V4neoF~MhN9d_hX lp }PhO;uXyVwYՏmbÐV"ԓ4Ω444444444*414|TfT.mTATC%TN7ToTkTTTTTfM6fJ:t^Mi=Egj'e'neo4bSx6t}z)PLp>Rgcp,/`r0dr+|*zQ>>P/z/7tS;T2sft7gHhJU>cS[;]fkZVM[j!7q5zqxEs@hql>gh7vvT FVs#OgroOdp_,^s*boh4Q\g[ss8k&A:u+;>}-D*z4;0-2)/q3*fW@'jU={p7#l/$-"vw2oq:rcat&c~,]ن#U׃SxYrTɄPtaˉ j}4gmUYhQZ~Wswblgypeoa]mq50W*Xk5#xg[$xY8*lS[2~88s!~!~ҏ[˃[{{S_oYʂg_vkW{[!n\7sX=T-Sxg,fykqrlRs:snCs*TI TT4TyTuTTTѴTΚTnM6lL:}a<}a4)~0XDnYGp}%},CMi@Fgp'n'{et4mR}6)YJpEQgm{,3br6er1~.XCEY6u3et4Xh;\n;^WƋVXʋNdCL؇/^r)~.gQwd;WK>?k+Zw#}t*Ə4`؃.||4~GnDzFr2c}1d1o1al X@|2x2r$X=XCWN=]<A.@xY0XyX|qZgR\9j[Gf/唄ܑ!roGfTdYrZogΈkĆjSKTWz _u<=+4mL-&9;E/:/h1c"2O.B[% ?E=*C F"zT4-E= +o!1p!Fk<.I >kv'e' Y+|f}h};Z11I6{Q5#1RO)$FR2;>8~<@TkL?WR+Do=.?g2SJt4D5K8)U]?>.TU4&?X/SKS2R_F!(KE!GT2R$==? '8#z9h;E)/)"Κkk2!Ѵ2!||#{%~u}y<{?LmS;HK}n2zb!l*[sNFQUh8TaB{lx\koKtdeLbG[JrRxTnVjX\,)>;aT>e~tɳattack4shTR  iU' 4݃T߂ ނ݃Rރsބh߃ރU߂'߄i ߃43z_7e@X~U8q@F{@Y@lUDRUzTXKTlRYS{dzRgY:gSpFd؈Jch_#c {*v}2[4{dzF{XhW9gehd ox u`hz_;ilqfrgڏkmǐwf"̀4ϕ44s4|4444*4}4.~4:4ThT0qT@TG"TS5TwTsTTTγTʛTkP6hP:xdQ6xbt;cMdORBfP[@`bk_RMad!;m9mxJnElllDjh<{v[ L\m#TjloVgpg,em*hsb4W^bbxmdt4Po;Tu;W]ƋO^ɋEmk2Z1\1h1Wd T=v2r2l$R8P<NE:a<8L?3Q 4f+O,d/JR1^UXȶ bɴ?d蟄ݘ!|uGsTlỲZygϕkĎjQJTN W|<;.3mJ0&8>E.<.h0d"1Q.@]$ =G=*EG!zS5-D? *o!0q!Gk;0G"@kv%g&[)|g}h}9\00L4{O8#1PR($DT19A7~;BSkKAUP.Bo<1?g1UJt3G5I:)U[A=.RW3&>Z/QMQ2PaE!;fD?^`>4'[>8.rC.$bH+)nC53xH.0jI@4AD-Q61Q1&|->Z>2E/(attack5shTR  iU' 4܍T݌ ݌܍R܎s܎hލݍ܍Uލ'ݎiގ ގ44}x_8d@W~U;n@Hy@Y@kUDRUyTXKTlRY~S{bR`_:cVp?jֈFfhW#^ w*o2]4{bFs^h~]9dhhxj ky jhhpg;^ugnjm܏dqɐmn"̏4ѣ44߀44444-44,4:4TgT/pT?TF#TR6TvTrTTT˱TșTiQ6cS:sgct4Iu;Mz;QbNjIcɋ=sކ5ZӇ)dr$)\Zll;LT3Jk!dwt!'m΃!|'~7|46e2S1U1a1O] Q:p2l2f$Mɽ4I6F=7c<4P?.V 0i'S)f-MR/`USȲ ]ʱ?_g0UIt2H5H<)UZB<.PX3&=Z/PNP2OaD!:fD?^_=5'[=9.rB/$bG,)nB73xG00jGA4@E,P81O3&wftWkjHt`aEbA[CrKxMnOjQ--2>}Z>IđM@?attack6shTR iU' 4ۋT݋ ܋ۋR܌s܌h݌݌܋U݋'܌iތ ݌44{y_8d@W|U;o@Gz@X@jUDRUxTXKTkQY~}SzbRa^:cUp@iֈGehX#^ w*o2]4zbFs^h~]9dghxi kx kghqg;_thmjl܏epɐnm"͍4ӡ44~44444-44+494}TfT/nT?TF#TQ6TvTqTTTɮTƗTiQ6cS:sf_bk]QM_c!;l9}lxImDkklDihcs4Js;Ny;RbNjJbɋ>r߆6Yԇ*cr$*]Zlk;MT4Jk"cwt"(lσ#|(~8{68e2T1U1b1P] Q;p2m2f$MŽ5J7G?7c<5Q?.V 0h(S*e.LR0_USű ]DZ?_-h.c"0Q.>]$ ^`<6([<:.rA0%bF.+nA84xE21jFB5?F-N93N4'vfrVkiHt`aDb@[BrIxLnNjP7>[>Β<ָGattack7shTR iU' 4ۉT݉ ܉ۉRۊsۊh݊܊܉U݉'܊i݊ ݊44zz_8b@WzU:q@G{@X@jUDQUxTXKTkQY}{SyaRa]:cUpAh׈GdhY#_ w*p~2\4yaFt]h\9dfhyh kv lfhre;`rilkj܏eoɐol"΋4՟44{44444-44)484 zTdT.lT>TE$TP6TuTpTTTǫTĔTiP6cR:se^ck\RM^d!:m8{nxHnCillEhh=wv[ MZm#RhloVepf,bl*epb4T]b_tl-h.b"/P.=\$ ;H=)EG zP6-B@ )l!.l!Fk92E$>kq#d#Y'|c} zd}5\/,M3{L;&1LS*$@U25D7~9CTkHBUM1Co:4@g/ULt0H7F>+UXC>.NW5&;Z2OMR2M`G!9eG>]a<7([;;/rA1&bE/,n?95xD33jEC6>F.M:4M5)A#TEM*JJ/OD-PA&%KC!(FI#GK2I$5=7 !8z1h4E#/""Ĕkk2!ǫ2!w|}{yp}u|2{5BmJ;>Bwg2s]!b*SjL}AHU^8Laz=ueqVkgHt_bCb?[ArHxKnMjO>>]>;cattack8shTR iU' 4ۆT݇ ܇ۇRڈsڈh܈ۈ܇U݇'ۈi݈ ݈44w|_8a@WxU:r@G|@X@jUEPUxTXJTkPY}xSy_Rb\:cSpBf؈HbhZ#_ w~*q{2Z4y_Fu[hZ9ddhzf lt mdhsd;bpjjlh܏fmɐpj"Ј4؜44x4{4444,44'464 wTaT.iT=TE$TO5TtTpTTTƧTÑTiO6dQ:sc]ek[SM^e!:o8yoxHoCgnlEfh=uv[ MYn#RfmoVcpf,bm*enc4T[c_rmU=p8l0-w2q:cw&~,̆#zɅw}|vxtÎ 4vU|uQ~|wlpa~q5%Y%Yk5g[Y7S[&7'!ҁ!̍~|SyYgkX ZZ&}Y4V+Vxl1kynqq }Rq)xo=x1.h-`"/O.<[% :G=)DF zO5-A? )i!.i!Ek91E$=ko"c#X'|a} wa}4[/+L4{K<(1KS+$?U34D8~9CUkHBWL2Do94Ag/TMt0H9E>-UWC?.NW7&:Y4NMS2M_H!8dH=[c;7*[:;0r@2(bE0-n>96xC34jCC7=F/L;5L5*A$TDL+IJ1NE/OA(%JC#(EH$GK2H$5=6 !8z0h3E#/""Ñkk2!Ƨ2!v||{~yp}t{1{~4AmI;~=Awh2r^!b*SiL{AGU^8~Lax>uepVkfIt^cCb>[@rGxJnLjO9>%:h>kpain1\shhmT_Ra)q( k)^)yi~U"'|# 4ׯTַ ɼʷRïs͡h̫õ䣞U㩨'ܙi۠ 4<}_7x@YUJr@Y|@i@xU=hUTO_Te`YSzhRG:Qtp'ӈ7hK#\ p*]2pu4zhFWhc9Xh_ c IhN;<IQRԐN"4~4444444)444/4eTI TDmT=5Ty=T|ST7)T@&TcTRT TT[i6Ou:d -W)U4p?l A8w /q,c&,#}xy{ ߆4xUsQx߁yywمlpwatqE9;4-k7g7&Y0S<3=!ّ!͖чSyYƊg}k07!>6l[2U|mC.jx:&Vm8orV2eJ!OwKXudgO0[cR6rnM/bsO4nhT;xpR:jh`;a]3t^;xY12ZY>4U^>0Pzpain2MsVh\TPRTb [OeikUp'k {4_ݢTTܭ MѥTҝRZʠsjѥh_вSʧmUf'uݮimܸ ~4fFw_x=@i_U[Wm@Hgw@Dw@LU?UaTNTbYzSxR^F:{OpD,͈_;hU#:e [s*F`2l4xFaShi_9nXhY\ be GHhIL;0>CIPPUSӐCM"4444n4m4t4s4}444҉43??T')ATU=%T=+Tr T{TF{VTTgNTzr~'x4b6z)Np?gLa,j3rx=rfFwS93p3]HgwDw[Wm@H_>KURJT;[tKRYTl[_hKo5O[j0`korOMjw`!IRbQBdxQedg;hlX;hGBvXl Geglh#yBlonBpne,yel*Rg4;eRnSchSI?RvR4A9;>>;[=̋V6ɋ7*цPɇ\%rB,,=lGˋc[;k7ËgkMw1t2<&|.~.)$,3<`24I1/N11_1Jb jTMi29o2t$ c KUCD<h/ي?bLBZLY%A2"!1@}.įD.՚EчR\q\y8̵-O<9ݠ(PٍAgŎefnKЄ}sj@ktgAZYLTGW҉!VmЄO<̱!n<١GTO֑YZaƓgkajrRIT'9 9C< =m-}1EzAhh16"i$+.08 .=f/a>z{-z ^85!U=%!J9krr =+kD5Gc.F`"I|='H}3??')A},D}I{*1,3$)@F~wTk ZMo DgfHtu72U(G.19&{(1,V28H!k0Bk/^3[:r.b /nC>?T>eNQpain3&zs&yh-mT)sR2w;t 4-.vi5kU@q':| =p4sT zRzsshڃބoUz'pi| o4*q_9]@\|U({@5@K@gUQQUTmSTaYSvzRZ:ZpXUوY[hf#g *|2l4vzF`hd9}jhl { `ha;cd엑gُmȐf"]4m4Ѐ4`4u44*m414G48]4Pc4Ww4T T: TFXT7$ T&T;TTT/T?ThTbT[6W:nV3C3S9=R9LUW a?[s93oh)vBt<8pm,yڗ6{ ;|$a84G]J$h=0&'=OJߝOrı4W JŸg5ſ\<7>|Iz&N+G"-[4Q=5 @WS ~UY pRlG BwIqTcO&W,S#H?CBڥ5㝏V٠ \4NU;QBә9ٔwMӖlQَpIߊa=ߍqGy%~kL g{|YI Sv%|D!}!~۔KܠKxSFYxچgFےk} ~uqo+up1y#x/y wqdR9kB3<ub!bB>iLG%q}sz}ԛw΋}ΛrRmqÂy-͗<(nAie~n1G1jk*mgwZ8]Y#hTPcG:mWw!AЀѓ!uG`TrY]ZogmkjVRTZo fo}T : }UR9Q@>{C31wW5$fR=a>C~]B^kpJb>Sok4LgIIRtW>?zB8URL.t]@&\S9sW^2jdP!N\LQZiq65[m9;r{43b59nt;Ax}8@juFBkE9CA?6<=-?p@.TrN5xO;M:J3%I-(vK/Gs2l$^=Z M8@zOh[EQ/K"^b6k/kb2B!h2?!&|9{=*}L{R_mp;X_k{2dq!*re\\kUz8daUpvxeklUtQiibb[`rexonljv<>'~b>h pain4sh!TR*2 -'#i(U5'1 14rT vRxsuhփہqU|'tiՀ v42r_=]@_~U4u@?@S@lURQUTlQT]YSqRuf:y^pIfوQdhY#b *2n4qFlhn9vohx { rhs;oz|vvݏvxːx"g4x4Ȋ4f4y444'4?4'4A4L4 `)TF+T3bT#,Tc*Ti@Tr Ty TTT5T2T\6z]:ssvO >Rq#dsroespe,dr*wi4mkilsJ?6R :_,O0\3FR6SUS ^?ZhAX-"HI$.Z[4 ]H,=F<(<96zi@-`A 7^(!3b!)2,k[1c*#,kX57U;5H?|H6} `)F+}TW@QEE{yE/1qZ4$dV?aAE~]D[knM^@Nog6IgIKRtSA?rD5UUH.n`=&WV9pZZ2fhM!L_LS]fh95[h<,3>J>&ȫpain5s|hoTxR({/s )$ti"hU0l',x )g4Ŀ]Tj lcRgsbhĴqp״ZUܷf'Ҩ_i׫k ^4}_g@GU@$@<@WU5XUlTPVTfaYwzSrtsRzk:mcpQnIlhf#^ *2p4rtsFohp9jth{ p vhw;{闈zՏw~Ő}"O4d4u4K4]4r4f4y48|4U4:W4Fj4^TATBfT8, T5TLTFTRTTiTTTn`6q`:w<}u4)0YVnUUpw%s,8Vi:Qgc¬'['rts4fa6wz)PVp5XgWl, frgr}?&$<4xU+S*uft d*f4UFnY[@hlkFYM@l!n'~px'p=uul.uh~v. =u#O~yoD~pD,Oy*ds4ZuqW|nL:Uy^P.giA&Q^8bca2[qQ!AhKAfie@6[aC=rn=5bu>;nhDDxqABjiPD`O;xMD|H8vW<zT5%tS/(jV0G_2w^$H=nK 38y2z|HhHE4/l5"}$kk2k$!2i!Z)|c2{^3T)R}FlK{dLZm_;uWlY[v2Rh!vw*lcPTiN]Uu8|`arM`ugfkXRt@iXbT[Wr`x`ndjd >i>ZQpain6esohxvTi|Rr |k؄|i̍tUŘ|'А y4FTR aYRVs@hM^0U9',i6 4s_W@B~U@@2@OU/DUe{TIBT]O|YmtSehoR]:yRpuaшZ]h#n *2c4ehoFahc9thhq { khl;wqɗpts"4 44 4!4)4q444g4ӻq4׿4!l+TI)TTsT>,T1TMTh/Tm1TÜ%2=uc/c-lotp'v7hQhg[F[ukIoM=!x&tyx!}?j~l#^hhv 9#Ruo:ip6,N*j4cmY<\.puChuoccuIB4{p;x;|\t[ykچiJՇ,Srv¡Up;mJV6k7Qw&wt(ԏP]܃C{|D~ouih2111 Nͭ022Ӳ$\׿;mT|p>N?EI 53Ly??Ef3Hh[a5"lP/.neD {N>=i=0T57zM-H Wh,!Ts!E.(k21>,k1]6FY<CF=|+G4}!l+I)}`\L[CM{KK1eN$q\Rl?T~\}xbt[vr}xnɁjۂ>M>9mf"qpain7LsRhYxTORYi bTbihtUu{'p {x4eTf yxRus_h`uMUM'HiI /4{_a@@U@@1@OU,PUe~THNT^ZYowShqpRg:s]pejPghz#f *2m4hqpFkhm9oqhy u sht;zܗxˏ|{"&4!4$4/424,4gs4q44vd4ڐj4ܙ4lT LTJrT90 T3TNTlTrT/T-TSTTToY6yZ:t<r4)0`NnTMp%r,4Ni>Igh˪'Y–'hqp4^Z6ow)HNp,PgOe~,`rar{}:ş 15z^(]&tmtm#r2bHnb[?dskDiM:{!v |wx{9r}l"khuv 6#M|o9up6,J*e4\t|UI&L%+D(-^4R$@:GWYU`pYlNKwRq]c&ڲ,޵#ﭞ֭ Ω4ܢUQ䞃wנlӝpۙaqIx;,kS g}+YO Ss:D!İ!˯SYgkv)h?jGz9%xP3y&q8rR~XzdZ<=1bBnBbvLn%®ֵӸ}ꖣR̋qyƁ-v<(AyernXqj@kgsg6ZvdYEtTڐjG_{ܙ!h,$Äxȁ!2䆿G/T胨Y&Zzg!kujJ_Tr ub>EnuCMx@LjvQOmQENOJDE$>[E>,<pain81s3{h8nT3vR?zJt D:=tiBhUQn'Ly Pj4؂T׆ ʓ̑Rswh{nUp'fii T4 ~_f@@U@@3@NU.VUczTGTT]_zYmsSgtlR|k:jbpUoHkhi#\ {*2q4gtlFohq9fuh} l whx;}○|Ϗx~"F4@4I4V4_4Y49g4E{4_4GV4cZ4no4gT HTAmT4/T3TLTO TXTTvT#T$Ti_6o_:~xJk!awt֏3l'|(~LGGs2g1g1n1fk @̰$|2s2iо$F'P8YN1_<4P?0Z -i$W̎!e'LR#[UQ̾ [з?Syqv!kRkCpqRE<%{b'gBzIlLX%ɘƪ}ԶЫRqyß-<ܨ(؜AenB_E{j'k9gg}ZGVY*lTcZG}Eqno!QYIĞ!_֤GVTӚYFZg@kjEST_ d$zL-nL :i!Am!/5kj934/k_1^'.N*|L}g H}Ja8FL<{xP31kg6$Za=UIB~KK\k[UdrHVo\ 9>n>zPKCpain9asnhqTcRgy ue䁰i儤U׊'Ո 雮4T tyR~shyU'i 4MGm_a^HDCWt:^XD|WGwGY|S~=M2Q+[Y2Mo1Iu1N18x3 *rk2W27$qn/q*g_97k g6Y S=!I!PԺ)ԣ"QS)YX߳g1ߜk.4>B;2xVIyCqLR[`dx1`2?S!q7BZ5UF[Jr IbPnQxSjRHXQ<G?BT(H)P&R#N%#G(%EG<2?$+=z2 8{z-h*E/o!"xk~k2i!2k!V|g!{c"QP}Fx3{q69m:;:}>wY2jP!T*Ga@v6x;n@j><5?FC91T?%8(CB;7G0>kD>/t5>VC W5ȩpain10gsrhxTkRo xkiUݎ'؉ 4T qrRuܼs޺htU'i 45Bp_O?q@KjUPk@e{@{@*UgHqUATv[mTwsiYYtSldRn:lpsMшjQhLx#D} a*p24ldFh9qrh e }h;t{痄}яvw"4ٿ4444444П444ӫ4+ T TB6T= T T!TGTVsT|Tc T#T'Tq6l:{ +G!YSLN9IDh=CLQDÐF®}[cUXRaޢqgyj-s3!B6!:kq = k'D).D3|}+  }b,2a8{1|1!$r,0q7~`Kkn#QBor 8gN;t_'!U/:.t6)&a(o0M2g<;!O/4O/Uv![w*r~b n.x(j .u)'<~?rTx(#)&'!$%#(x%G\2l[$xE=bI z08p3zvLh~FEs//]1"3'r}%k|k02Z!#2c !Q{|[5{T4IVs}GfP{\N^m];p\cZOh2JV!dq*aYRAiC~]Uqs8y]avEViez\k^Bt?~RWbT[}Zr~cx`nfjb,>3>sBhITARKX PFOiVUb'\ e4T Rܛs٢hة۠U'ݭiڳ 4kHa_Bk@ysqU\ZV@Ks[@Ka@ZiUIuUwoT^yTxyYsSrR|t:qpWQrVh/#J w*c24rFh9zh} | jhm;N}cppe"ݵ4ɻ44444R4Y4p4`4x44w=TnT@TTTT "T~TIT2TTTv6p:<4)u0Wn[pY%i|,Di;g8'Ls'r4xy6s)^ypIugZiwo,u;wrBkrkHaWBp9l4oiKs[Ka\ZV@TkkD>\\<_@JtP\HW}Hdx<;A[{5Nkw?MoK!M\NZIQxTtPvCTldCthNJqv\s IupnR#NVo}Oxpwzw,yU*dR4FQcXf2rD9|*Mwl;Vz3kV)w21tGG5*:|L~h@N GkJPJ R!]X9Nh M([<(RmQY ^$14]h.W5CrOB4 Grgq&$+%-4WU p lwqcGu&Fz,;z#2u4p>p6q7hEy Vy4XqUHhQGlHgwPrl[qp\laRgq."kg'YS4!f!hԊ@t>tuSMnYxքgPmk#7>0xB'yq/RLVKt:DU2T.?(+>G 2,$x =p, a8^"z}&h|E\/R("~MkIkx2<$!22!)(|S.{O0"*~} "x/{q3$m;-1C2yA!7*3c9o+$U38+aw&A7kj5tpJb [%r'xn$j<?',) T"% ((+)$G">U7>K=s>B|Ƽpain12Rs[h_TSRZj fXlioUy'v 4T Rs߷hݸU'i 4XMh_mDs@lr|UK_]@@xd@Dl@TuUH~Uo{TYTqY~S{Rwo:kpRRgVh5#I s*d24{Fh9~vh| u lhp;TzfחoǏm}i"444444x44Ȑ444ؚ4nA Tf&TCT T T!T)T2TdTQT TTo6k:<4)r0SnVpZ%e,}Cit;g;'J'{4q6~)YpH~gTuo{,b>rmDsrXMhGG{6z.uw@xdDlK_]5ZwUJAIb@MGPtAbOIOQ|@hAB[f;RkcBM`Q!AbWKOYxHxXcHZl]HhJPvY Hx`Y#vQ[otRprz,tz[*eT4IT~e\<~S.eDCLCc|~CI@b|e4Rb;Pi;l`dXFUĆY?V6r8@#U~g{;xTk4kI.w)9tP?:&A|T~:S/V&_S2Hw1C|1G10~( %sf2P2-$ q o'v$kgB~q7-k g.Y S8!Y!]أ3،/dS:Yhޚg>ބk"Ŗ*9@7)xO;y1q !C!k$  ko74,{&-|j'}nA f&}6>#@{%F1:F$5GH~z Pk*[\oLgw(?t:#GU5[.?I&498Z2FM!<=f9PA[FrCbJnLxNj'N'E#R J<@?#=T1D1K.L,H%+A(.@G)22$ =p, p8gz}$hEl/["\kdk2M! 2Q!8|V#{R%22})r.{k2*m';1{5N2mH!C*:^;o-+U?81ax(K>ke6t`P"b$[*r/x'n-j)<"?34-#T,%'(23.(G9>vt>?p>Vk.=jump1o+sr h$Tx.Rw3- o(l0ziU"'y 4T RshU'i 4C~_H@eUJw@R@b@vUWzUTnyTYSR[:lp1ӈGhD#Z |*g24Fnh}9lhr r Zh`;EWa`Ґ\"4444444s4t4 444V_TG`TkATMnDTmmTy|T+VT2NT0-T";TT#Ty6j:{<4){0Wyndyps%,Lyi>ugcȸ'm§'46)nypWzgv,:rHrC~1WĜBRbJw4J\A]Flt=mFlJ\Z[[[lkZ[M[l!?uGuxGu\tl^hNv^ N\t#msosps,ms*~i4tjusoEqR`UNLLAxP?N/yg*q5RGkLU7hh6EQ3/IA"7#B1k0-k327=!2";!BJ|GG{EJ>N2N}+VcJ{`O}=m7;rHnNvc2e`!U*qOTU_E}=UO8xEac?x_pSkWPt[j}4bw8[w>rAx6n=j8<|4?BGsCp9T<%z9(C|GtDs=G?>KA>[>}w& jump2Q&s] hYTN!RU%c g&W*liiUr'u 4T RshU'i 4,_5~@YU-{@;@P@hUIuU|TatTwzYS}Ry:u|pR݈Rhf#f *24}Fh9sh y h;~헅ڏyɐ"4ݹ44444z 444x444XPTOyGTRTqg?Td@TqHT6^T@WTD2T0@T5T=Tyz6wz:<4)0asnbsp~%~,HtiEqgk'i'}4wz6)atpIugh|,2~r5~r,(O8;P-{*GW>U>gt5e>gGWV[[QlkV[MQl!3n:px:pNtlAh2vA 2Nt#^xoUpU,^x*qs4iqf{BNL`0%혖ಐ}ٽRqڢy-<(Ae٦n^8ĄjR3kz gD%ZxYATGN!!].΄ݽ!GTYZgݹkީjYUTX bAQh>bR>QNBjump3e$sshqTc#Rh+y& {(i+iU' 4nT| {rRusrh݁~nUy'ri~ t4_ @FU@#@:@TU5vUhTMtTb}Yq}SlvR|:l~pWLhj#_ |*24lvFh9ih o h;嗊ӏyĐ"d4w4Њ4b4v4444444!4>GT5v@TkLTX`?TZFTjKT7;TA9Te"TQ'TTTl|6q}:tk@aM>t!z'|x'|=}l7h&v7 &=}#NoLpL,N*av4XvVc_&d,_#TNTMD` i4`tUNuQN䄃I|wYl_{pZtaOuqQ@@85k Fg85Y FS?@Q!!凄WYvSWyYygT|k0.1/:>CJBH9:xaCT/yGqGRT4aFo=G5v@}`y~Tl}{b1|t$ju]e~FkzkHs[foZ\gQngtfanwcUhu.tz&spnP}2b}!]|h>qo\[i_rwXbxWnk^xrZjogliza]<^~?tdzTvnxmif%g(|kGg2yl$}T=k\ x?8h=zqQh~QEvC/cH"k3ke"k2[7!2Q'!PC|UC{TGJEA9}7;cW{`]_md;nakh[~2Tu!w*npN`h[eUzx8tcakT]z_hkQYt>r\bZ[}_rfxdnhji<^?qzlwbZTk%c(o{myfaG?>D>>!>:S1jump4shTR&' &%iU"'" 4iTx oeRmsshфwsU׀'}i͊ ʉ4}_w~@2nUo@p@&i@<]U$iwULOT7geTGqPYSDSMXoDpD,>X*NI4EJFXd`RRfoFGOg4^4tHL1bKFU_c^.ah@&U]*Go[2PvD!Am-,wIWDA[TIJr]??bb=HnZGRx`AQj`QTXSGjISlCD0{<6)'}!PH{LRmKmyQ;]QX]Be2?X![q*Y^B<[@pUU`e8bGa_3E]LFkF1t,IwGboE[iLrmVx{PnuWj}W[>ͥ<>COvYjump5h*sshz#Tl,Rp3/ x)k0iU%'! 4nT| xoRtsvh݅}sU'ziچ ؁4z_#@HUm@(u@>y@WzU7|UkvTP{}TeuYuqSqhRo:gpI܈Eh\#Y x*{24qhFh9eh k h;y|ԏn"t4Č4ӝ4m4~44444 44$4T tT<T,_Tq_TwqT1T8TcTVTTTj6j:yym+G"H([t\([+G;F[<[k;FM<[! f(gx(g=el@h/v@Ę /=e#NdoTpT,Nd*^X4UYVd܇ rds;R8skwtƏ)݃| ~>99j2[1[1d1V_ @ԧ&ʪu2m2aؼ$A$E/KA6<+t?&x 2|)!yR,UPܲ Vۨ?Sɩ=kQ~gC?{YSqSJJ#^u!s!{\s`jfSa^Ymg]ek86}C?oMOuKU@J7;xW@J*yL"q[0lRiGtgOc9}$!qDӝݐ!~qGmT`YtZhgČkj<>TP X|O,{L0:8}1_B{[G|HmJ;kKgQWg2P[!qi*iVLDd?LUvb8qJai8Zc]PkP>t#}>\>Gd jump6F/psL"phW(gTL2jRR5q`-r T'|J1wZpidiUl r'bz q r4qT~ |sRwsvhsU}'xi |4;u_B~@dUAl@Lw@_@vUTyUTnxTYSRi:sp=ӈLhR#a *v24Fh9rh y ohv;[kqߏmːq"n4ڂ44j4{44ch4a}4q 4v _4l44zT eT=T6WT|^ToTETNT{TiTTT~6s:<4)0]wngwp|%,LxiAtgjů'p'46)nxpTygv,8rB~r;u-W?Lw_Al0FO=PC`t:aC`FOWN[X`kWNMX`!;jCjxCjYhl\hKv\ KYh#khoqpq,kh*|]4s^sh&|7%zR7UY˶ ^ͭ?_<[N˳PQͪRSUhPk(T $! ;h kP !*&9hՐ-<&mė! *$0a4kw]jh*w0{W}Os٠4U XΉg9֞Vtvvnqgkg&#in+#nv-_r4fq~trleWbfU ^vp c~li~kuwfnq`nc[u&a|,[#PK|PuM߄Dx` iy4`lUNlQR|Mtw]}lcup^maRmqk{0O|&Juk eug+LjYhjS6Rpno!}!ツWV|rSWpYvgXukHh.Pa=Xk;W~*OGzx:='2~y*4cqA?XRVKhSJD4<0)3*cbJ6YB`BhL]A%liw~}ߔvbRfqЀy-咄!{yGjThYnZlgڂkjXHT? Od zo-jo 7!=!1]khc|^6Wkv5x#3o'|j}z e}O|-Mo3{yr#1m'$_}/\m6~`pQkrwSnAoif>gLvItSn5qp)U}:.n1&V~/tN2hB!NCY]ih'[fj.rqf%bxg*nmk3xvj1jnt3dr,|r1~n&rExBnGjE<;?NJ?7TE%>(JIB=G'>x( >q>Xflip1|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:F|JoDo:|4TB%;(|EsBs;|8G 8>>s>ɒ^:flip2shTR).  i U,'" 4uT yR|syhtU~'xi y4;\_JH@awU7w}@;@J@aUa@UyTyHT\YSwRxb:ZpOUڈYUhO#Y *x2w4wFphw9xlh x shw;kwyw|wtwϐ{"k4w}44i4x4444!4494;4;UT;4TdfTd#T9TST;T;TdTdTTTZ6Y:wa{x>{SWylXWhGavX GSy#daxomapm,dx*uwn4lWomwx؇;>r&WwwZŋw;hIËQ-k29wStw3FӃ!Z|w~>a5i2wg2W1U1]1HL ;&w2h2Q$23!>5KF. ?G>-?FJ,RKEUL R?E<>E»7L³R>UwwphwPw pk%wT !ww; phwŗw pkwP  !5w.w9&phw4w<.pm#wЗ& .$j%4r"]Thd<@%70QOf4[ܯ C̗g<㲏Kl2o1y00&1+t2-4r!e!izWU~pslknwxqc_&b,\#TRWHDVߔ _߈4Z~UMQC⎃@wKٌlQڅpNaFqn kvgY}S-w-!|҇!sČPYv}SSYmgJk 67! x"yqR?A"<ŊbB?LA%^zkxv鄜sߔe̕[É}͖y܀mRnoqiy”-<~(kAymeun!ʄ!jkgZYT9G9;!;ő!xЀGiTpYkZxsgw}kujPw[THw Wwm|@@q>-Ea//h^Y"oM.a\/ qK-=o<^1zS-O _a!df!_)k:9d#kBOMMM<|B:};U;4}TQ1T:1{|K@1k_>$\S;\9;~_1_kn$q-=a/ o8^za/hq-Eo/^"_kdk2_!2d!B|M{MB;};T1{T1k>m|@;\;\;nd2__!S*kMKXVFs?US8kMaVFndc\kKXtRo{;bs8[k;rkBx{BnsEjD<:?sJgDg:s4T{B%{;(sEkBk;s8Gyc>(>>dflip3shTR&+ iU)' 4bTh lhRwkspghnp]Uc'wbih \4XSq_l@x@lUSli@Xq@lx@~U8~UT@TSYLjSlzRY:RpmM}Mhm#} *2l4lzFfhl9bht w ihl;ll̗llp"iV4gb4i4P4X4d444446464UMTU.T\TT2TKTUTUTTTTTR6P:lp%,5iz.gz''lz4S6Lj)@p8~g~,a=rl@xrXSqHRaHXqlxSli?l]RSPlTYN`tLlaY`]StGR[w@`ktRMw`!OlhZWhxZhxNfl~NhgWv~ gxf#WeoWp,e*l]4N^le<^.lQCRQcQI\ll4u\;wd;RMcSh7T7r7N+lRl;Bq'kE2w&KtlF>-R|$l~TWH`Cl2wu1u}11ch T722q$E&F-THyb>m'Rn>Up q?Sfm0l2t >t$ 4] h7 E)~O4 _ъgy͢m..--&.+.-4WUplwqc|&,#|}~چ {4wU~Qjꉃjwkll}pm{alqkgYS))!p!u}jS}Yrngok 23 xyqR;<<ϊbB;L<%guqxւ~χeր}zj`R\fqYvys-y5UKF.WA&|K;EU2WN!lKKw>^2/[21r21b27n27x2:j>9>1>>>9<>1?>,TK1K7K:K7%K1(K/G624$&=' 8z'h&E/"є kkѦ 2 !2!` |o{o` U}Uy){y)4m6;11U2Q!F*AlK|;5UF8Aa|;UNklKtw^1b/[1r7x7n:j9<1?>91,T7%1(:71/Gk='>T/>`ӳflip4shTR&+ iU)' 4aTg kgRwjspfhmn\Ua'vaif [4WRp_m?w@kURki@Wp@mw@|U7|U~T?~TR}Yˇ}SkxRX:QpqKKhq# *2k4kxFehk9ahs v hhk;kkʗkkp"gU4fa4h4O4V4b444446464VKTV,T[TT1TJTVTVT~TTTTQ6O:k=9<=0?=+TJ1J7J9J7%J1(J/G524$%=' 8z'h%E/"Ք k~kե 2 !2!` |p{p` V}Vz){z)4m5;11T2P!F*@mJ}:4UF8@a}:TMkmJtx]1b/[1r7x7n9j9<0?>90+T7%1(971/G7=&>&>v\flip5shTR&+ iU)' 4_Te ieRwisodhkm[U`'u_ie Z4WQo_m>u@k}UPkh@Wo@mu@{U6{U|T>|TQzYΆzSkuRW:OpvJJhv# *2k4kuFdhk9`hr v ghk;kkǗkko"eT4d`4f4N4U4a444446464VJTV+TZTT/TITVTVT}TTTTO6N:k|p6{g{|,c:rm>urWQoHOcHWomuPkh?k^ORPkRZL_tLk`Z_^RvDQ[y>^kvQMy^!Okf[Ufx[fzLdlLhiUv izd#UdoUp,d*k[4L\kd<\.kOCOOcOI]kk4Z;b;OJlQq4W4r8L,kOk;?y$kJ/w(ItkM<2O|)k~\UP^Kk2t1{11lq W822y$J(M2\Pwe<(>>Xflip6shTR&+ iU)' 4rbTh |lrhRfls_hhrnrpr]U~c'dcirh r\4JSs__@y@}lUDlk@Js@_y@}~U}8~UT@TS}Y}SlwRY:RpkMuMhk#u *2l4lwFfhl9bht w ihl;ll͗llp"UW4Uc4rj4rP4W4c444446464JMTJ.T\TT2TKTJTJTTTکTڐTR6P:lp%,x5ir.gr'x'lw4S}6})@p}8~g}~,V=r_@yrJSs>RV>Js_yDlk6lQRTElUNNbtBlcNbQTgGT[i@akgTMia!DljOWjxOjkNhlqNh[Wvq [kh#WgoWp,g*l_4N_lg<_.lRCRRcRIPll4r\;td;R}MbS†f7M7r1N&lRl;Bl'kB2w$KtlE>-R|%l~TWI`Dl2tu1r}1}1bf M122l$B$E-TIy\><['?O' P?W'X>e'Rf>Uh h?Lfm0l5t >t$ 4]y h7s @)rOr4 Uэgrͣf..--&.+.-4WUplwqc|&,#rrrڇ r|4rwUrQ_ꋃ_w_l_p_|a_qkgYS))!o!rurrjSr~Ybogbk 23 xyqR;<<ϊbB;L<%YwrrwւrχYւ}yrhr`RLhqLyyr-rz6UKH.WB&nK_20[22r22b28n28x2;j>:>1>?>:<>1?>,TK2K8K;K8%K2(K0G725$&=}( 8yz}(h&E/y" ڐz kk 2z !ک2!T |b{bT J}Jl*{l*5m7;w2w2V2zR!H*B`Ln<6UH8Banh>c[flip7shTR&+ iU)' 4_Te ieRvisnehkm[U`'t`ie Z4VQo_l>u@k}UOkh@Vo@lu@{U6{U|T>|TQzY͆zSkuRW:OpvJJhv# *2k4kuFdhk9`hr v ghk;kkǗkko"dT4c`4g4N4U4a444446464UJTU+TZTT/TITUTUT}TTTTO6N:k|p6{g{|,b:rl>urVQoGObGVoluOkh>k]ORPkSYL_tLk`Y_]RuDQ[x>^kuQMx^!NkfZUfxZfyLelLhhUv hye#UdoUp,d*k\4L\kd<\.kOCOOcOI\kk4Z;b;OJmQq4W4r8L,kOk;?y$kJ/w(ItkM<2O|)k~]UQ^Kk2t1{11mq W822y$J(M2]Qwe<(>>Ȓ^flip8shTR&+ iU)' 4{bTh lzhRolshghznzp{]Uc'mbizh {\4QSr_e@x@lUKlj@Qr@ex@~U8~UT@TS~Y~SlyRY:RplMyMhl#y *2l4lyFfhl9bht w ihl;ll͗llp"_V4^b4zi4}P4W4d444446464PMTP.T\TT2TKTPTPTTTTTR6P:lp%,~5iv.gv'~'ly4S~6~)@p8~g~,[=re@xrQSrCR[CQrexKlj:lWRTKlUSNatGlbSaWTmGS[p@`kmSMp`!IliUWixUiqNglwNhaWvw aqg#WfoWp,f*l^4N_lf<_.lQCRQcQIVll4s\;vd;RMbSg7P7r4N)lRl;Bn'kC2w%KtlF>-R|%l~TWI`Dl2vu1s}11bg P422n$C%F-TIy_><^'?R' S?['\>i'Rj>Ul m?Pl93fh&lGl<>fm0l3t >t$ 4]} h7y B)xOx4 Zыguͣj..--&.+.-4WUplwqc|&,#wwxڇ y{4ywUxQeꊃewelf~pf|aeqkgYS))!o!yuwzjSx~Yjoghk 23 xyqR;<<ϊbB;L<%`vyrwւwχ_ց}yxi{`RTgqRwys-yz5UKG.WA&uK;EU2WO!fKKp>_2/[22r22b28n28x2:j>9>1>?>9<>1?>,TK2K8K:K8%K2(K/G624$&=( 8z(h&E/"Ȕ kkȦ 2 !2!Z |h{hZ P}Pr){r)4m6;}2}2U2Q!G*AfKu;5UG8Aau;UOkfKtp_2b/[2r8x8n:j9<1??91,T8%2(:82/G>(>>>aflip9shTR&+ iU)' 4bTh lhRskslgh~n~p]Uc'rbih \4TSq_i@x@lUOlj@Tq@ix@~U8~UT@TSYˆSlyRY:RplM{Mhl#{ *2l4lyFfhl9bht w ihl;ll̗llp"dV4bb4i4P4X4d444446464RMTR.T\TT2TKTRTRTTTTTR6P:lp%,5ix.gx''ly4S6ˆ)@p8~g~,^=ri@xrTSqER^ETqixOlj=lZRSMlTVNatJlbVaZSqGS[s@`kqSMs`!LlhXWhxXhtNgl{NhdWv{ dtg#WfoWp,f*l]4N^lf<^.lQCRQcQIYll4t\;vd;RMbSg7R7r5N*lRl;Bp'kD2w%KtlF>-R|%l~TWH`Dl2vu1t}11bg R522p$D%F-THy`><`'?S' T?]'^>k'Rl>Un o?Ql93fh%lFl<>fm0l3t >t$ 4] h7| C){O{4 \ыgw͢k..--&.+.-4WUplwqc|&,#zz{چ |{4}wU|Qgꉃhwhli}pi{aiqkgYS))!o!}uzjS|}Ynogkk 23 xyqR;<<ϊbB;L<%dv~qwւ{χbց}y|i`RXgqVwys-|y5UKG.WA&xK;EU2WN!iKKs>^2/[22r22b28n28x2:j>9>1>>>9<>1?>,TK2K8K:K8%K2(K/G624$&=( 8z(h&E/"̔ kk̦ 2 !2!] |l{l] R}Rv){v)4m6;22U2Q!G*AiKx;5UG8Aax;UNkiKts^2b/[2r8x8n:j9<1?>91,T8%2(:82/Gc>(>>dflip10ssFD&+'ލӏk4)$ bGh4l.hwkpgnp]VcFwbhk\\XSq_l@x@lUSli@Xq@lx@~U8~UT@TSYLjSlzRY:RpmM}Mhm#} *2l4lzFfhl9bht w ihl;ll̗llp"iVZgbZiZPZXZdZ    6 6 UMTU.T\TT2TKTUTUTTTTTR6P:lp%,5iz.gz''lz4S6Lj)@p8~g~,a=rl@xrXSqHRaHXqlxSli?l]RSPlTYN`tLlaY`]StGR[w@`ktRMw`!OlhZWhxZhxNfl~NhgWv~ gxf#WeoWp,e*l]4N^le<^.lQCRQcQI\ll4u\;wd;RMcSh7T7r7N+lRl;Bq'kE2w&KtlF>-R|$l~TWH`Cl2wu1u}11ch T722q$E&F-THyb>a' U'V?_'P`>Tm'Dn>9pkq`SZRoQqSMllfhlP'l-fk5lTt -t!ll;fhl)l &fk!lPt &t!Glʅ=l92fh$lFl<>fm0l2t >t$ E z7' TE)~&~`4_ъy͢ mj..G-L-%.. RD9ju[gn|Ce6;.+|鎄}~چj{\wS~&jꉐjk{l}m{lwhE?),) p9u}䈇?jH}Nrno삒 ]B2H3 ƏwiF;(<}l:;/PGbMiVehgbct|tlMTbl wl<'4m867&E)'hP"E.S' C&=5*zK-G W !\!$ k3 2k`G oEo5|`3 }UMU.}yI)y3){C61V4$K121~*Qk5U2Fo%Agl3Kt|2;>5UKF.WA&|K;EU2WN!lKKw>^2/[21r21b27n27x2:j>9>1>>>9<>1?>,TK1K7K:K7%K1(K/G624$&=' 8z'h&E/"є kkѦ 2 !2!` |o{o` U}Uy){y)4m6;11U2Q!F*AlK|;5UF8Aa|;UNklKtw^1b/[1r7x7n:j9<1?>91,T7%1(:71/G8>>s>ɒ^:flip11shTR).  i U,'" 4uT yR|syhtU~'xi y4;\_JH@awU7w}@;@J@aUa@UyTyHT\YSwRxb:ZpOUڈYUhO#Y *x2w4wFphw9xlh x shw;kwyw|wtwϐ{"k4w}44i4x4444!4494;4;UT;4TdfTd#T9TST;T;TdTdTTTZ6Y:wa{x>{SWylXWhGavX GSy#daxomapm,dx*uwn4lWomwx؇;>r&WwwZŋw;hIËQ-k29wStw3FӃ!Z|w~>a5i2wg2W1U1]1HL ;&w2h2Q$23!>5KF. ?G>-?FJ,RKEUL R?E<>E»7L³R>UwwphwPw pk%wT !ww; phwŗw pkwP  !5w.w9&phw4w<.pm#wЗ& .$j%4r"]Thd<@%70QOf4[ܯ C̗g<㲏Kl2o1y00&1+t2-4r!e!izWU~pslknwxqc_&b,\#TRWHDVߔ _߈4Z~UMQC⎃@wKٌlQڅpNaFqn kvgY}S-w-!|҇!sČPYv}SSYmgJk 67! x"yqR?A"<ŊbB?LA%^zkxv鄜sߔe̕[É}͖y܀mRnoqiy”-<~(kAymeun!ʄ!jkgZYT9G9;!;ő!xЀGiTpYkZxsgw}kujPw[THw Wwm|@@q>-Ea//h^Y"oM.a\/ qK-=o<^1zS-O _a!df!_)k:9d#kBOMMM<|B:};U;4}TQ1T:1{|K@1k_>$\S;\9;~_1_kn$q-=a/ o8^za/hq-Eo/^"_kdk2_!2d!B|M{MB;};T1{T1k>m|@;\;\;nd2__!S*kMKXVFs?US8kMaVFndc\kKXtRo{;bs8[k;rkBx{BnsEjD<:?sJgDg:s4T{B%{;(sEkBk;s8G'>x( >q>Xflip12|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:?|JoDo:|4TB%;(|EsBs;|8G9>x( >jk> salute1ysyh"oT"rR-y3y ""yi$pU1y'$ "y4oTy yrRysyhۃpUy'yiہ y4Q`_`I@w~UL~{@Q@`@wUw@UTIT`YS~Rg:^piXڈqXhi#q *2~4~Fvh~9rh zh~;~~~ޏ~͐"q44ۏ4g4q44q44"4"g4@q4@4[>TZTOTTT7TTT'T/ToTlT^6\:~<~4)0EnGp%,s؇R>r>Z5~^‹~;Kj+kJ8w4Vt,~MGԃ;^|5~~XePoL~2p1n1w1ce R>22j$J4M;XPeGZ}uB0t)3{>@0T<$}G:|)=~x+aj9f0XPhf3Vtu,D9@_NU.ZJ&uIALd }_X fOShGl(:Z)=r(=b*En+D}+H:E8;80$:o(z3-sC'f</-!Xl#k'zZ )#o2/!|!|" })3|,4B8hU785:8<pU3c\%k@LYH NbCPM9Qh=fSEq@MoS6]ThK`hlR2\I1XB6E=xU8pN=jZ:9V1CRC DA@7H.RX:*U4(Q?-H?E8L3 ;>p;>n> f,λsalute2shTR'( $#iU$'! 4DTL TNRSsJhSX;UA'@iG 54U|_dk@zUQ{@U@d@zÒUzdUTkT|YSR:{pjvڈsvhj#s *24Fh9h h;𗗓ߏΐ",4;4D4%4/4>44 4$4 4%424[hT[MTvT>TOTeTTT'T)TgTfT{6y:<4)0hnip%,vaiqZgqʹ'vƠ'4|6)kpzdgzÒ,]hrdkrU|K{]KUdQ{EY{aPbWxqtNrWqYaiq_[kkoki_Mko!PzXzxXzmxwlsxhbvs bmw#~vop,~v*l4xmvT+ :!00;)h!Ǘ: 6k0P) 6!VK9Ch9O2x3yqR4D1<bB2LB%ueo`uhuzs}ksWLRTqgyd-kDha!/RG%TIY,ZOg;k^jiYTc qkbcmcmU|bR}[h[M}tj0tW2{f@1w<$|m:|V<~zU`k_fZVoNOgg\WtuXEb?UpT.zK&unCnd2~}Z!hqUkimV9[V{C?\9mk1;P@RA{Y2l\!~C*hGV^RId6U|A8fDaPGzWjUkT\tkme.b\1[Z7raa@W:Y/Tm4%f0(j;b>[9^2GP>S>q>HnF9salute3sh TR i U' 4h;Tv? qKhHRqHsv;h?{Ko,U|/'|,i/ 4Py_bj@}UK|@P@b@~U~dUTjTyYSR~:xpftڈsthf#s *2ō4Fh9h h;񗞍ΐ"y444j4y4444&444'4RnTRUTzTHTXTlTNTMT0T2T@T@Tx6v:<4)0gnhp%,xaiq[gq'x'4y6)jp~dg~,YgrbjrPyCxYCPbK|;SxbHcQurtFtQrSbgo`[kjpkg`Mkp!I{S|{xS{muxlvuhb|vv bmx#|vo|p,v*l4umvhnA=INj`ՅOϦ4]ܧ _g:ϤZj0h)p"z!&|'+t/-x4j+Y-V#dWuUhp_"lU#Sw\qfcV|&bz,m#j\ߊSᄞpԉZӍu| es4OwUJՄQkɄ]Ɇwn|lcvpVyaSʁqc)%k`gYkS!o&!m_!{_nւ_`\SS~Ym\g`~ks 0u/lx4yqR52<ՊbBL4%ZkMlYpttsto}a`[[IUR\SqYyU-T<_P(MIA`HeNn-̈́&jkgZYTG'!.ST!ydPGjTUJYyZeJgkNjgZT^ p?z\Ah^5EC3/?@"I@+;k0kI2*=!@22!O|9L{:MPM}N\K{\Lw=m1;nHnI^2s]!J*xHXZ\F{8UI8wFa\E]uWkXYtknw1bp6[r=r}>x2n9j1p7GO}>S>*t> tVFļsalute4sh TR i U' 4ghiA5IEj[ՅO{ϧ4Vܧ Yg2ϣRd0c)k"v!&x'+o/-s4d+S-P#^WpUapX"lN#LwUq`cQ}&^z,j#fWߊMᄞlԊUӎr} as4JwUDՄQgɅXɇwj}l_wpRyaNʁq])%kYgYeS!j&!k`!yajփ[^]SNYk]g[km 0o/ex4xyqR52<֊bBL4%VlHlUqqu~trp}bbX\EURYTq[yW-V<]Q(JJA^IePn-΄&jkgZYTG'!.! UV!{bQGkTRKY|ZcKgkPj`[TT hUrS.|L&jrEnd2{|\!\rXeho^7[^:r^:b^An^Ax^DjhCh9hIhCUS8LajEd{\k\Xteo:b7[:rAxAnDjC<9?IC93TA%:(DA:7GC%=mC>*t>tVkļsalute59sAhAT8R@M zM}@OiOUZ'Z c4|[lcMeZjstLuZs[cuca[z]qkuaMzq!P}]r|x]|}jyljhrrv r}y#rvorp,v*l4jmvUgS.rL&gEbd2r\!ngXz\oQ7[Q:rQ:bQAnQAxQDj\C\9\I\C<\9?\3Tg:gAgDgA%g:(g7G?2=$-=/ 8z/h-E/"ަkk޵2!2!`|q{q`U}U}0{}0=m?;::d2_!S*LnXE>US8LaEd\knXtzo:b7[:rAxAnDjC<9?IC93TA%:(DA:7GC%=mC>*t> tVUļsalute69sAhAT8R@M zM}@OiOUZ'Z c4|[lcMeZjstLuZs[cuca[z]qkuaMzq!P}]r|x]|}jyljhrrv r}y#rvorp,v*l4jmvUgS.rL&gEbd2r\!ngXz\oQ7[Q:rQ:bQAnQAxQDj\C\9\I\C<\9?\3Tg:gAgDgA%g:(g7G?2=$-=/ 8z/h-E/"ަkk޵2!2!`|q{q`U}U}0{}0=m?;::d2_!S*LnXE>US8LaEd\knXtzo:b7[:rAxAnDjC<9?IC93TA%:(DA:7GC%=mC>*t> tV>ļsalute79sAhAT8R@M zM}@OiOUZ'Z c4|[lcMeZjstLuZs[cuca[z]qkuaMzq!P}]r|x]|}jyljhrrv r}y#rvorp,v*l4jmvUgS.rL&gEbd2r\!ngXz\oQ7[Q:rQ:bQAnQAxQDj\C\9\I\C<\9?\3Tg:gAgDgA%g:(g7G?2=$-=/ 8z/h-E/"ަkk޵2!2!`|q{q`U}U}0{}0=m?;::d2_!S*LnXE>US8LaEd\knXtzo:b7[:rAxAnDjC<9?IC93TA%:(DA:7GA%=mC>*t> tV^ļsalute89sAhAT8R@M zM}@OiOUZ'Z c4|[lcMeZjstLuZs[cuca[z]qkuaMzq!P}]r|x]|}jyljhrrv r}y#rvorp,v*l4jmvUgS.rL&gEbd2r\!ngXz\oQ7[Q:rQ:bQAnQAxQDj\C\9\I\C<\9?\3Tg:gAgDgA%g:(g7G?2=$-=/ 8z/h-E/"ަkk޵2!2!`|q{q`U}U}0{}0=m?;::d2_!S*LnXE>US8LaEd\knXtzo:b7[:rAxAnDjC<9?IC93TA%:(DA:7G5q=fC>u>6Q3`salute92s8h7T0R9E F9DiDUO'P V4u_(yqR0CkFUgS.rL&gEbc2r[!mgWy\nQ7[Q:rQ:bQAnQAxQDj\C\9\I\C<\9?\3Tg:gAgDgA%g:(g7G?2=$,=. 8z.h,E/"ަkk޶2!2!_|p{p_T}T|0{|0=m?;::c2^!S*LmWE>US8LaEc[kmWtyn:b7[:rAxAnDjC<9?IC93TA%:(DA:7Gp>U'>fr>iU salute10*s+h1T,R7B ;34i:UH'C F4GTN VQRUsMhUZ>UD'CiJ 84Fl_YY@uUA}@F@Y@uUuQUTYTlYSRr:jpaeڈleha#l *24Fh9{h h;𗙅ߏΐ"/4>4G4)424A4/4:4T4>4Y4d4EeTEFTyuTy6TJTdTETETyTyTTͪTj6i:<4)0UnWp%,pNiiFgiǵ'p'4l6)YpuQgu,PUrYYrFl:jP:FYA}2Kjc@dHgst=tHsKc__b[bYrk_bMbr!@|Jp|xJ|dgyllghWpvl Wdy#zpxopp,zx*n4goxWԃ'j|~KpAy<~2j1h1r1X\ F,22c$;>'KAaTY$TYG?d!JAGjd!2UG)TLY/ZRg>kaj_\TX jmQ@O-EuA/hqi"^.ul/ \-=NqCzd-_ rp!yu!r<kLJy6kN_\^\N|NL}EeEF}eb1eL1{\@1n>$od;oJ;~rC`kNeJTo>MgYLYtgJFW?UdT.pM&gdF^e2wp]!YdYbWpJ8[J;rJ;bJBnJBxJEj|WD|W:WJWD$-=u/ 8qzu/h-E/q"ͪrkyk2r!2y!N|\{\NE}Ee1{e1>m@;o;o;e2r`!T*MYYgF?UT8MagFew]kYYtbp;b8[;rBxBnEjD<:?J|D|:4TB%;(EB;8G'>x( >q>X(salute11|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:?|JoDo:|4TB%;(|EsBs;|8G'>x( >q>8.taunt1|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:F|JoDo:|4TB%;(|EsBs;|8Gn=?>K>~ taunt2uZsOhwFTiTRo#V&I S|\@i8U#;'C -4wFTP uZiTRoVsIhS|\8U@';iC -4"h_@W@j~U~@"@@@gUgQUTWTh|Y|S~rRn:gpbbh# *˒2~4~rFyh~9vh |h~;~~~ӏ~Đ"4-4944+484*4 84!944)41,4 ST8Tf_T`(T5TKTT TeT`TTҴTg6e:~<~4)0TnVp%,nNiyGgy'n'~r4h|6|)WpgQgg,ETr@Wr"h(gE("@~~%ga~c'dtt~w't%a?]][HWpk?]MHp!~+l~x+~LdylcdhIlvc ILy#hluolp,hu*~g4pdiu~ta6$zK-J ][!f_!X.k95`(k+NIO%GB(|*>} S8}dV:bC={O?1`@$xXBvBF~dAbkyLkE^o9RgKHStjBBKBU[[.dK&lX>{Yi2phZ!M\PGVm?;[AAr?XFWFVA%U9(U8GA2F$/=s8 ~8dzw3h-E|/a$"Ҵ]kek2X!2`!+|I&{G(* }d:{b=@m?;xBvFzk2db!^*RKSjBBU[8Kal>{ipZkNPtGm9b8[>rFxAnGjD<9?NK@5TD%<(JIAt>Y3">e y#taunt3,^.KoMu_v!\ H2G*.[/*4d51+0+TM0L*-^/_\vHu2Go.[5*4+2,0dU!mR8`PY{PR!R8PUxU[xldl`dymRyRwDrEl|bioih, |LȎ3d@wD@zhCxh䄔 |h4Ѕ!U U< UU)UBU'UA U< UUU% UaTLTVdTD:T<TMTTTUTCTTTlifkEwCdBiK=^b_va(v&eYg{Tg{ewDBymRfyRKl`daU[xsUxld&I^w8`x!m}6l}I6!8/lOT!jg}l!gO0eH<`]k0H<]!v(ps(sBjhl`jzLp}`"LBh#Xp`6{pb{(X`)gLF[jQ6b]4[Q)U9@Il=^I=HBCt7y7l6i7m:Z8]ZwFj{=ɐl64a6OmoVyVh݀M~_ۈvlop݅vㅖ )3335.]F))$oVv g]JyQYU+la/uQb]nMv[YdySg_lubn[E@<6zh(ՏJ Bzm66 B$ j4_zhRj9]zmL_ ]$9CzhCziv됔 'jB`7-wr8o;D\B̈́\,8ҨkVrư*<^o07%3.,#/N.5/%UA.=C1-4,"#x <eG%FI'<>#4n3g3'<ߜLG٠?I׬<>۵-4Cͭ4ӻAЙE/ٓU ߡ"۵1ȩy'̱}/ʜq$ЙXӡѭ>..8&p,4t8:#p!uw'$!'q'/6t.8pp>Ф8<ܨ,!u'۩!q'ϥw4,*6G0K!;N0m/Tt82 |m |v*u$9m"L-[KRcF0kc k'd"6\ӕ~5Mޔ1GΏ+ɏVt.Nm4|$ |u$mzTc?L[f2kI kd"\qE*].< ,A 9Jc8'p0 ihwiu &c% #1] B5< pE]oLc.),2i i c w$]h,?P<4AIkI;8yI-cgD>zY] gR=s`3'|Q*@cGNE*yM/N Mb#Vd$>?yA<D:z!\E[/@P3~O|aL|e]@_OFP84`<(z\F sLLSMXaUfNasCNhHP@hI4[O>D^[2d@(oY-Vf`b giK O_9:_[F:rHCvD7ZE?mIJGHRLQAOK1L"gEY hr3i})_c-N+MlUm >-C!}D/@3xeA_G>ZAbo-`fagLhO9:[|1\3[Be>&Q>&taunt4yswhjTqR$s$l |!|qieUh't g4jTx zqRsslh||eUq'hit g4%l_;^@[U@%@;@ZUZXUwTw^TlYSuRp:kprgވighr#i *24uFzh9wh |h;藪ԏŐ"U4g4z4U4i4{4h4 z4z4 U4U4(g4!WTATW_TP2T;TMTT!TWTPTTTk6j:<4)0\n~]p%~,]VicPgc']'u4l6)w^pZXgZw,=\r;^r%l&k=&%;%k_a'hqtt'q%_9c[[@^mk9[M@m! }*o{x*{DhvlUhhAovU ADv#Yoronopn,Yr*jd4_hgcq<_g.^TCSkVcSVI7x4vs;yy;kȋ{g͋ollW݇?Wr$hk;_hLk@Tw#ftҏM]6k|.~`oVuQ2y1v1{1ol ?$22h$@#M6`VZ\$e[AcIF~UJbkfSjL^omARgBOStYHBOAU^Y.reI&\Z=h_f2`jW!E`N?]k|E<[tGBrE=bFEnxHIxHJjvRJpP?RMOCy>m?;eAcFfi2Ub!^*mRBRYBAUX8rIa\=hf`WkENt?k8b~8[v=rzDx@nEjC<9?MvJp?z6TE%=(JxItB|>c>PiwTXtaunt5shT R*/ !i U-'! 4T RshU'i 4Mb_\M@r~UK~@M@\@sUsDUTMTbYS~Ri:`pS[͈d[hS#d *2~4~Fwh~9sh zh~;j~|~◃~Տ}~Ɛ"44444444 4494:4HG+TC&+TnSTcTT7TC+TH,TnTcTTT`6^:~<~4)0}InKp}%,lAib8gbǯ'l'~4b6)MpsDgs,QIr\MrMb>`Q>M\K~8~O`jF~kL]wtC~xLwOjaTi[cMvkaiMcv!E~~Mg~xM~d]}li]hWgvi Wd}#wg|ogp,w|*~t4]t~|<t.~gCx`gcxgIN~~4Yl;[u;o`ċe[ŋJb҆OCˇECr/]&~`~;rOY1k7=w Yt~6KŃ#`|~~?g6p3~o2[1Y1e1JO E/2r2Y̾$7· 6#?6OK >>=*2p3z7-2 vK'!nS!m&kck[=2];0]*2|W(2}HG+C&+}eFAe.C{CM1~WJ$nJIn/K~q1jk>m6_o~&[g[9ctg2T=MUQ].~]V&gMROk2uac![RacKt.I[~/Kr/Kb1Qn~1Qx1Sjz?Qzh>E2/p3"v'knk2m&!2c![2|]1{]2X2H,}C+eA{eC~JmN;nInKl2qj!_*~[[cgTMU]8~VagQkuck[atcuIbF[~Ir~NxNnQjQ9 >PQ>̋ w@taunt6YXsT\h^jT__RZiWx LiT_PjiXxUR'Iw K4^TT Y_RZsWhLTXUP'R|iI Kx4^`:__IJ@a~aUd~1@^:@_J@d_Ud@_UmrTmIrTv`~Yv~S~R8g:U^p#XAXth##At U*82a~4~F;vhE~9Urh; U $zh%~;~#~3~=~$"S\4A]45v4Zu4N4=4Oo4=n454Z4S4A4?TTJTT >T(ATTTٵTT>TATc^6Q\:V~~<>Vr6ZE4~>F^J~;AK3+vk)8\w#VIt ~BGi^[|~U~eyor~o82(1(131#~ ~U vQk%~KPF Q!~y ~n9 vfh ~^~p<vjm~_ f j$<<4c6]G|hXJwVd/*[cȌO<Æ4G| WxgVe/[bDkApEmK&fN+_K-bA4Y;]0k+t1Wpk54" |}?}@3&4{9Z1PK$D?'@~)Hk8V-boOg15t(;4SUKb.VN&E:KV2]J!M5|G@#N[%Kr#Vb%[n'Ox'Wj7N4G8Z4_<0X?0KTBJEODVBZ%@U(@NGZ2M$E=< 88þ+z:hEE8/-"BA̼'kٵk@2 !>2!|{ }3{4LmZ;?@V2H!b*O5;SUa8Na:VJk5t|@UbN[JrOxZnVj_^ > 8>CMpBAtaunt7;Zs-ah6nTAaRBj9| .nkO;=tP;G^cGXY4`@?>Fp>?rxZ,{~$N^uN~};RKgQ+Ok\81wfVth~IG/O^|Q~~9e6;o.=~+Gc2=P1>O1GY14@?F p?x,Nu2Rg2QO$\1fI/O96;.gKF<\3J?b,A lC=i'Hs>De.RRoENUbA \J?gF}>dX3> HEpAtaunt8FSt5\kr5hzoEY}oOby*Dvt*DidNZo%pdu&{q2k-2}^^5z%4kEsE}*OyoDtDdNo%p-%d1xk1^um^^F~ ~ꡃԹÈ < F ^;1~;jfI}\qxV.VWh.W }qjI`~~OuKhF~XqqhOK q Kz+hC~,V~YT~+F_~ACu~P@K+ Sl*QV%hBjp\F|]}G%Bpl+VG!MOI"OI\{wZktp~qx~wkBevD~xe~8vk/]k]!v!~^}Fxh~I<~6Ru?g~K > ߇?~R~uh~"F~u(s~3<ۇ ̇(~~uh~@~u!z~'4 !";W!m\9|/ m_-=ވ$V\{lJ=r+,&=*5329 4!s/'|@dq&qv{} ]x qoyoq{}Nx&僟@|tsΆqט-+ԋbٖEʇkƎ˘՝9bHqU=x{sUGm{bT0+%TwbqsރzU%{ߗ/b:ґnc^h,ezB?CI.sVpvWpH_W+dC*gJEoed.xfw'dUYJ9^77{x>RYq lsq#yChњ=bIovSs`aVcp_BՀJ*e8xwiI]dY6z>Y lql`U_%B}GK=c|]s< (>!>LRf?taunt9e&Os`';hS-DT\(TRa3WZ>H i8>j/QY1'iM7/UTE2'_@+ OD4SDTa: eN\TRaWsZHhi>jQM/UY('T1i`* O4f_S@U@@@UKUrTrSTcfzYczSW}Rl7:dXp_N_nhơN#n X*72pE4W}Fx h9uah a |h;)C"@4V4f 4:4K4a4K.4`84fR 4:=4?W4Ub4KT!,TRTTT4T TTTTވTńTudb6cP:Mt??y S9M7RKUy t?<ƄȀRUxhPxkTԇ χ!x;xhz xkP뇋 އ!EX9x`hkYjLoKc%hڐcq}x{Ћ}U`e]QnRXyqtry}F-Q<`M(L_ASjeocn~5RfR `8jxJkK.gbPZ:=YR ]T?WGW;fUb!mEaaf ~RxI!KcOG:TR]Y@ZXfgVkm`jXTG K@J9> 0+>ȸ›taunt10as Qh#JT \R+`4P 0X(e(>i,8U9='7D 8'4JTQ a\R`sPhXe8U>'=iD '4oh_zW@Ud@o@z@UPUoTWoTh[Y[SPRn:gtpbbhО# t*Փ2W4PFythd9vzht z |h;"4,44444-4#40-4H44-4F4S,4G_T+dTP9TCT;"T:8T`T^T9T=T8T9Tgf6et:k<`4f)t0TnUyp%y,MiFg''P4h[6[)WopPgo,TrzWrohgozd›JgHYdtWYJN][`WkNM`!`clxchdldhlv h#mlxolp,mx*hb4fdlpp5{<r_bVB}2^LCq%tx􄚈ޝ՗}ωm}dRwlqyr-{<_(VA}^eqn1wH40-jpk#g aZ-YYTFG0`S,!=o-4wp!aGTYYZ`g,kojH{T Oo^0WgLBstI8XX?;UlTH.W[I&FMQjVf2Zb_!IVl]US3?[U6GrV16b^37n]8Gxa6?j]DHRAGeB<_>/mY/;POSTli2_o!oM*\SKqHUX:UlG8XJaEPjf[akIlt^R.bN7[Q@rY@xZ/n]8j^-(>>T\>H&(taunt11 s!h#}T R*3 1))i,zU9}'7 8~4}Tߋ ߃RՄshΎ֍{UՆ'~iɉ ~4Mi_dX@UFw@M@d@UQUTXTiYSRn:gp}cڈch}# *24Fyh9vhԆ |h;ۏɐƃ"n444n4ہ4Γ4%434I4-n4Em4S~4%AT"&T`LT\T#T9T$T%T`T^TTTg6f:<4)0UnVp%,NiHg''4i6)XpQg,^UrdXrMiDg^DMdFw;BgX6[Ddjt8lDjBXY^U[`XfkYUM`f!=uHmsxHsddnlwdhamvw adn#|mkomp,|k*^4d`i<`.NCugPcuPIV4q;x;gɋc̋vixP؇WPr9d-g;Y{BkNKw.at"UVՃ;g|2~fmZtU2111vx W922{$N.U;fZkT-TL3N9N9K3%I-(I-G22:$%=w0 x8czx*h$Ew/b"Yk`k2W!2^!/|N#{M$.%}$j3{i64m1;}8|<]2uW!N*E\Lq95UK8?ar6[}Ok]Ht`d,b,[3r9x2n8j4<+??>5*T6%/(<<60G=sqF>N>^TTT@T=TTTh6f:<4)0VnWp%,qPiwIgw'q'q4i{6{)YpmRgm,LVrJYr0i2hL20J$~('h\_+eotr+o'\=_W[HYik=WMHi!%z1myx1yMeqlgehPmvg PMq#emlomp,el*w]4jeapj-> 7N!@P!4#k.);k B/F&.:*| 1}E+}ON4N=:{E11yW2$dQ9b=@~\A\kqLaBQoq5KgAEPtV<=C5UVJ.t]=&WP6rX\2ddM!CXIFXfz73[s:9r61b88n{<@x;>jzG@oD7F?B4q_2\Z!O*rGBNV:4UJ8t>aX5r\dOkCItFg*b{+[u2r}8x0n7j3<)?>z>o5v)T5%.(<|=t6z0G>Z>ǶA>6Ltaunt13ksghYTbR'e'] !m"o_iRU"V'b R4YTg lbRes]hmoRU^'Wic R42k_K\@nU$@2@K@kUkWUzT\zTknYnScRp:jpf׈fh# *Ώ24cFyh9wh턷 |h;՗"@4T4g4>4R4e4Q4e4g4 >4"@4)S4LT4TjT>2K$6*j_c0gst%w0s*_?bY[K\kk?YMKk!-7n}x7}Qgtlpgh[nvp [Qt#gnmonp,gm*v\4kg`qj_ TykEPK T!9yht<{ymi痀 {$94L1]b1hZH@C|QLΉOƢ4bͲ Zg@|J><<>8xK6t&W7y+W<-_*}4^1G4214+zWJ'tUU"pU&lG(:&w;"qI cI&U܅,U؏#G֓:؍;܃Gʓ2͊^͌ _}4JtU4zQI<ÂwWÄlWzpKua=yqP1({vkH&g}"jYB+{S.nJ7!w!{P͍Hو}jSB{YngJkU|P$mX7mf=k1c!x/yu qqnZRy6[@u,< kbTB3VL=o%XnPmU}cގk͏f}όuqnZRy[quy-҇YYT"@G0[)S!8negԂ!RmG>TYY@Z[gTkoj;RT mC1i?&EY96hBQ"TE.[W) iH"=S:@5%zG-{E 4T!1[r@8r=/b?5nzB>xAnJ5K=G1n5s(T3%-(;{=r7w/G=>g>3>BO۸taunt14"PsHh ;T&HR-L*@ !O'U;i0U"5'@ *4;TH QHRLs@hOU0U;'5iA *43l_H^@fU$@3@H@bUbYUwsTw^sTlcYcSVRq:kph͈hh# *̎2s4VFzh9wh感 |h;"4.4?44'4;4'4;4?44 4!-4PT:T6[T4-T:TMTTT6T4TTTkw6j:<s4w)0\n]p%,qViQg'q'V4lc6c)w^spbYgbws,W\rH^r3lFkWF3H$@+kc!h3ixt)}3x+c=c[[J^nk=[MJn!1:ox:Qiwlrih`ovr `Qw#donoop,dn*p[4fi`mk.ey&_kN6zgt-SYJ=nS6XVFs!x_!e[MztSSJoYXgVskR+jP7]`F_rFqr8c,|x/w~rydXqb-DRzBHCb*n<irObp(;B=?L>Y%``P]Qkc}rqq}~swdYbDRzHqbyj-n<:&zM-pJ /W!6[!-2ko<:4-k L.P)-E.| >}P:}MV6LH={N*1q].$`X8_G@~ZJ_kmScKPok@JgBNQtSF;yL1U\H.mb9&SW3n^^2ahM!C^JI]kpB.[lD7r{A+bB2ntF=xE:jtO=hM4N;J-<}H$?lI'TmU/uW5V2S*%|R#(qS&G-2o=$b$=U5 L8=zV(hb EL/<&"p/k6ko2.!24! |.){-. }M6{L=q.m*;`9_Amc2Z_!P*kIBQR;x1UH8m:aS3n^aMkCItIl{$bq'[m/ru5x*n2j-<}$?;t=h4l'T2%{,(:t=l7p/GF >_>jG>:(~taunt15gsbhUT!_R)b([ i#k[iOU"T'` O4UTc g_Rbs[hikOUZ'Ui` O4&l_>]@`U@&@>@]U]XUyTy]TlvYvSjRp:jpgۈ|gh#| *24jFzh9wh؄ |h;ڗȏ߂"@4T4e4<4M4a4L4a4e4<4"@4'T4LT5T9WT7(T6TITTT9T7TTTj6i:<4)0[n\p%,fUisOgs'f'j4lv6v)y]p]Xg]y,F[r>]r&l0jF0&>($jdh(hxt{(x$d8b_[C]qk8_MCq!$.ox.HhzlahhMova MHz#]oto{op{,]t*md4bhhhrC?@xL>t&X>y+WA-]0{4[5F:2944xWI0rUQ(pQ+lD.8-w9*qE(|cE|&Qւ,QҌ#DА8Љ9ӀFđ2ň[ȋ ]{4IrU4xQJ>wWlWzpKta?xqN7,{|"tkE-gx(iYA3yS2nJ>~!|t!{NNjE҅xiSAyYngJ~k[uY+hdOg:LWtJEBqK8U[N.fbA&KWR>haZ>_+߁4taunt16|s|hoTtR$w%s xilU!q'| q4oT| }tRwssh߂ހmUx'qi} q4&j_<[@[U@&@<@YUYUUwTw[TjYS}Ro:ipjeeehj#e *24}Fyh9vh |h;엡ُʐ"b4u44_4q44p444 _4$b4,t4GT/THTTG"T1TETTTHTGTTTi6h:<4)0Xn{Zp%{,\Ri_Lg_'\'}4j6)w[pYUgYw,94693~F1|&O4+K8-V&4O-:/++1%~WG"|ULpI!l<"2 w6qCcC&L,Iݕ#<ۖ2ޏ6⇞:ϖ+ӌOє V׆4G|U1Q>ƍ4ɆwKnjlN˃pE}a8~qC-|'xk@!gvzY=%Sz,~A2!x!|׋Cђ?ލvzS=فYz~gA̅kfeti1uo8p,lx+y|qhR2j=)<zbeB0hL;%ivetf삜lpҕoLJ}Ҙ}hRjqy-Ԗ<{(eAheÁn'jkpg {Z _YjT$bG-m,t!5ב!q|G_TjYbZmgukʀj;[Tg rc>-EP55hEM"ZD.QV, cH*=Z8E1"zE-B AP!HT!@&k31G"kC1F 1:#|3}G/}BP3B?8{xM;1c\9$PT;P@A~REdkeOg{GVob;Qg:JZtHBGmJ=U{ZQ.baF&IUAe[d2WgW!:\UBZpj>9[a?=ru>:bw@AndAExoBFjaLE]I:qMH}J@2bC$c-=P5 Z8EzQ,hc*EZ/E""AkHk2@!2G!|1 {1#}B3{B8c9mx;;P;PAeg2Rd!{W*bQ:ZHGm=U{Q8bFaIAedWWk:UtBpu5bj3[a8rd?xxj9G'>OwE>In>:._׿taunt17shTR"& !iU$'! 4T R܆sׄhܒߎU'ۅiސ 4>i_OY@hU9|@>@O@hUhRUTYTiYSRn:hpYcڈbchY#b *24Fyh9vh |h;zߏ͐"z4ʋ4՜4z44444)4z4)z454>ET>*TlRTlT.TCT>T>TlTlTTTh6f:<4)0{VnWp{%,dOi_Ig_'d'4i6)YphRgh,HVrOYr>i4hH4>O9|-Dha:bAeqt7rAqDaV^`[XYpkV`MXp!9zBmzxBzYexl^ehLmv^ LYx#lmwoumpu,lw*~m4tenuw59,yh!;<4ym(ї, 4$k54L!]L'hL<-5LOLޏOkʬ4Lײ LÖg-ʬLF.@)F$R$&X)+R.-`4V$B$8BWVUXpRlF@wFqRcR&X,R#F@FBڕ8ዏVڕ `4VUBQFь@օwRьlXօpRaFqL""kLgYLS&L&!!ܓLܓLSLY؆gL؆k} }}}(|}2}'}x,yqvR,u;,<bvB,uL;%}}}}}}}ך}͋}ҡvRuqËy-ҡ<(vAueËn))jkgZzYzT)zG)z5!5՜՜!GzTzYzZzgʋkʋjVZTR aE>*}ZL.Z:2{L>1s[9$cQ8c<<~fBbkwLeDUos7PgPGYt\@G|H>UYP.saG&\TCwYb2jfW!PZUXWn|;9[s<Cns>Cx|?FjoICoF9|KIIC}>Z.{Z2s9m>;c8c=we2fb!U*sPPY\G|>UP8sGa\BwbjWkPUtXn8b|5[s8rs?x?n|BjC<9?|IoCo9|3TC%=(|FsCs=|:G*>Z>Nc>΁wave1xz{`{Y%& k_!(9zO|N~Z}a݌݇|H߀b⋇3DgzBPV@mtUF{pBM{A_@wUeMUTOT[TTmTwbՋ[nH^ՂY]hT-d$.~ k7m7hhk:izs$y {lzn;drup|pwq͎|r v3Ո3ߙ3u333999{9#9)9GT/THOT@T'T;TJTSTTrTTĿTZoYn:m9.0nMnxNm/*]KgRFgh'p'm9[o.OmeMsw'*DTrPVrDgz5gU?M{_F{p4|LdTByUHbet>yfHeLT^\S[_Wdk^SM_d!@ynIinxIn`bmlbbhQivb Q`m#riloyipy,rl*yb4{bc{yl<{c/~yRCtdRctRKHyy4RiӅToԅe_ɇZ\ʋAd܆ANш7Qr&f#~w\Šo;eRHAk)Nue*W}i|~Ő7i0p.{n W| W e1IT J12t2_$=":$>4NP6BAD;CGR2H?W8FNEUTOZ3_x"0=o7:iOC8kLG9s)@=z-J,w9?1 ,4%2q0-fYC*i_@#xm8&-(~)&ut0#ow;!paP} Vۄ%Q֋ Eԋ?׃E}DȊ:~XˋaҀ3VtHCsNKzEyrWp\zEVsfJs]62}g* f}y5'vsj$s]9,lUl0y&;8r$}߅ҊNˇK؃"zMMwV}\P{icvi"kPm5oi:c-`}+{ ysgY5nG=!(1{pjf3p>;,s|rx道y~Α|ăwΚlSm]h ћ:,mImB…p& ys }q{]o`#H/t&)$5ߙӖ"uOqVv`s\ՈiɄm^yMTEwVu;n18l9-8g7#cY10kKJ X==^P%h@ @W2G.!y;-w; AM!HO ;%ju,'@y C;F"9:&~4G/|TL/Q<4A+4tR,(cM3a;9g@VzGX;=Fop4DhRFO{Z=;y@/`O@3uX7G\O5|ST/p_H TWI_Vbq5-rm83v{4,g51ns98}87sD8jA0B81>.F<&fo=&pJ,vL2J1%G+L~F%HtG&NA2D!/Lz6"7|h.i-C-q#Ŀzlm m-r"W}g }c#SSxJv4xp8KG|<5SD%=H F?;4=ӆ>R\>TP„̶wave2#.Ds&;h',3T*2?R8/B='8 , A.+H/i&!'U8+'+3 #4W.TK6 P@W;Rg>sq2hd<_C["US)'n&ie- c4Kq_ad@}UE|@T@q@U]UT`TjYыSy~Ro:jpk݈jh# ΍*Ј2x4y~Fuhx9uh~ xhz;|{{ڏ{ɐ}"~44s%4Y 4?4K!44(4)-44C4H"44kT%YTxjTYFTATPT%T5TwTYTTϲTi6i:znN}oyV[]/[hd\Gn_[ROj4F vgPuTYRaOcyN^s&OWu+RT~-7Ss4~S]kVbMPoJIgi[StxU?T8U\M.gC&c<_`2kT!tiPxdkM2[O8rK2bK9nO?xM?jWAX7TBQ8a2]!Q*IiSw?8UM8Ca<_TktPtxk/b/[5r{> D@—wave38!s2h@T?!RO!X HE"6iEUX'L I4|Tl mޝvݗRܛsh{ܢUz'i 4It_ak@~UC@P@m@UgUTiTqYՈS{Rt:qppph# ͉*ˆ2{4{Fyh{9xh {h|;}||}ѐ~"4444m4u4%4-4T4B4j4s4)i.T'[0TanT\RTXTcT'0T*.TaT\TTTp6p:|<|4׉)҉0hnip%,ficg''{4q6Ո)ipgg,[jrakrIt@tgGPmC9YsqJrUrtFUYqtop[vlktpMv!IVvxVxrlrhevv ex#vovp,*|4r}<}.nCsncnIX4w;z;rыpԋ}t{g߇Shr4s*qNj|;kȋ|`kJfw(rtˏTk݃9t|2~lv_z[2111 a<É22$Y1`@qcxch[kUOf4? wgIgSRNTLQML&QJ+TM-:F4>Kv>NG($?wave4[sXhhTcRr mg"aiqU'u x 4Tp r}RshU~'i 4Ss_li@UL@V@q@UeUThTqYیS~Ru:qpoȈoh# ύ*ʉ2}4~Fzh}9yh „ |h~;~~ח~ɏ~ـ"4444s4u4V4[44u444Og_rkPl[qxtLy[x_kzmk[}iwkzkM}w!O\ux\~q}lqhkuv k~}#u|oup,|*u4qu|]3VhoJEX^nZ§Oc4> {gMcaA]>]8`5&d8+e>-N64O?IEC@B6WH1U78p8>l5A1>w08q45cG̨&Jɮ,Iî#EBãCɣXS_ a˰4\ϦUUʝQolŸwsltȪpq˥amȟqK@Y3G-k9;gU(YF6Si-[;!Zӿ!m[HƨkػSYʣY~Ҽglťk8)R$s)x3[8Đ=3xf59.y2qXR-j0<>)܊7b]BL)%ַiܶLؼNmÐ̾}LyIsRqyR-}Og<MX?}{gG{\J{eO1nN$iN\P~]kkcn_aoX]gq`et]VcPUk_.qX&jTkl2sd!qlc}iu[L[\Or\Mb]Rn]Tx]VjcUbMdXcRO<}M?{H{{JNmO;NPn2k!Ǣa*]qeWPUǔ_8XaTlekqct}uKbJ[MrRxPnSjǞS<ßK?XUMHTS%M(VTOLGJ=e@>Ԫ>X:nwave5e.sa4hs(To&R}-2 t?o4j:i|0U9'}C A4sT_ coR}shtoyUk'iz 4\ir_vXw@}UUk@\r@vw@{UR{Uè|TX|TizYzSuRn:hpcch# љ*Ȓ24uFyh9vhꆮ ʼn |h;Ճ"4444\4^4_<4`S4]4/494O4UNTU4 TXT"T.TDTT TTTTTTTh6f:<4ޙ)ԙ0UnWp%,OiHg''u4iz6z)X|pR{g{è|,kUrvXwr\irNhkN\rvwUkCehXVYaedtRdadeX^W[XckWMc!Ujbmjxbjehlehqmv qh#mhomp,h*a4eah<w=q@ c@&B,A#><=SOXݪ Y4VUQQj磃gwmlnplaiqUb+R!kDgaYTStg!O!bԾUBaSTYtggkDÖ` Ú(b3E+xkF@:y>qg R6oK~BXkM[FOo:KgwIRtCEL?U\M.eG&YCZY2hR!w]PWa@;[A>rA>bBBnBBxCEjMCKZ2X!κO*KwRE?UΣM8GaCYRkwPtaƪ;b9[;r@xƩ@nBj̳C<̵(EB> h>Rc¾wave6isfhwTrR ysoi U' 4wTc frRshys~Up'i 4Xov_qc{@UPo@Xv@q{@U^UTcTo}Yܑ}SxRs:npkkh# ϒ*ȍ24xF{h9yh넵 Æ }h;ė؂"4444c4e4e 4h4#44 44H]TEJTcT<TBTQTETHTTTTTn6m:<4ے)Ғ0anbp%,\iWg''x4o}6ܑ})cp^g,harqc{rXovJnhJXvq{Po@bnZS[]lftNg]fbZ|gZ[cfk|ZMf!Qm_rmx_mllllhmrv ml#rkorp,k*c4ldk/;)w<"q@ c@ߤ&C٨,BѦ#>Р;֜<ݞR̝N֖XΧ Zڪ4UUOQiНfטwlңlmڥpkߡagޛqU/d)S!kD'gbYS Su!f'!Q޼!dּUСAآbSSߟYu޹gf؟kE`)d0G)xo4D)yAqiR(t2iRqyF-trO>bPCnQDxQEjZDX=ZHXC(FD?†>MJ5nٷwave7fschsTnR} xq"mi}U' 4sTa cnR}shxqzUn'i~ 4St_mk@UJ~@S@m@UgUTkTtY׌SRv:spqЈqh# ̍*ȉ24F|h9{h ~h;яÐځ"4444a4e4c4h44444=hT6ZT~kTqOTQT]T6T=T~TqTٮTޣTs6r:<4؍)Ѝ0injp%,fibg''4t6׌)kpgg,eirmkrStGseGSmJ~=^seOfZqttKuZt^exne[{kskxeM{s!N|[v|x[|}qzlqhjvv j}z#vyovp,y*p4qqyʗF P$_T4RC]8XhuOI]`nPO\48 rgG`hGdDd?h;&k=+kC-V:4VCPIIFJ=WP7U?q;;c;Ĥ&?ë,?#;88PIV VŬ4PȡUJ˜Qebwili¦peĠabqREb5P0k@@g^,YN^ӶSNßYrιgbkA-[)|.6c:ÐE5xo4C-y=!qcR"/t/it>FGZ/D)wave8Z!sVheTa Rp!| lf"_imU't u4eTT WެaߥRpީs~hlfݰkU`'~iq u4Nu_il@UE@N@i@UiUTlTuYӋSRw:tprވrh# ʌ*ɉ24F|h9{h ~h;ޏΐ܁"444p4P4X4R4Z44p4443lT)_Tvm TcTTTT^T)T3Tv TcTάT֡Tt6s:<4Ռ)ό0knlp%,hidg''4u6Ӌ)lpig,bkrilrNuDtbDNiE:ZtiLjVrytGzVyZiuoh[xlxkuhMxx!JWvxWyrlrhfvv fy#vovp,*u4rv9xh0;,y1'qT'R*/l) '8{)z:h6E(/o-"֡vkv k2g!!ά2c!E#|].{Y/@%3})w?{pBEmF;GJm2i!^*XiayOGUÖZ8RaLkakp^twv@b?[DrJxGnLjJ<@?RNE=TJ%C(NMGBG=;'>0\h>AAv3j׿wave9F$rs@ohMdTL&kR\%pfk WwR$wFkiTaUgg'\p Yd4MdT>o CrLkR\psgkhWwRwQaUGj'egiYq Yd4Js_dj@U@@J@d@UgUTjTsYΌSRv:spp݈ph# ȍ*ɉ24F|h9{h ~h;܏̐ށ"xX4k4ex4RR43`4=r45_4?r4ex4RR4zX4k4-m T_TsmTXQ TPT[TT- TrTX TǰTѥTs6r:<4э)͍0injp%,eibg''4s6Ό)jpgg,_irdjrJsAs_AJd@7WscHdRqttDuRtWcqnb[tjskqbMts!G}Tu}xT}uq{l}qhbuv} bu{#uzoup,z*p4qqz\9Z}WH D4Q;1;xY+++y/pqA3`Rr3g/\$<-#!'mbC+]Bu,dL(|%`s@n&y/ĊQĎi})ԉYԐpA`Rrgqπy+܅-\ۍ<m(C]Aude|nY$ex?rj3$k5_g)'oZRRYF+bTzXGn+hk!x(z=rexYڈ1ۂ!3`'oGRRTFbYxXZlhgkkuzjq\T 1k>$iA~]D~]ck`h[WoWQgdcZtt_G_@UfT.mK&jDgf2p[!nnWtjqZ;[[@rX;bYBn[GxZGjbHa>`J^A<]8?_5Tf=fDeDd?%d8(e8G?2D$0=w8 8t"z3h.E /d'"ѥmkrk2X!ǰ2X !:|V){P*2- }s:{k=>m>;A~Dh2c!W*QeZtH@UT8KaDf[knWtsq8b8[=rDx?nDjA<8?JH?5TB%;(GG@;Gl=>\> ;x„̶wave10/-Bs'$9h4+0T51=RF.@M'5 >><*F),i7!$UJ)'?0 8440T$9 -B5=RF@sN5h>>o\>E`;|4So]D^Omnt@oOnS]mh\[pdmkm\Mpm!CxPrxxPxrmvlymh_rvy _rv#ruorp,u*j4mkuo|4~qrdw^2111 W522$Q,\>qd}W<\T?[Z }]W`xbWZRx]U[ \?}<}WxWRxUɐ{hP),{k0T ,!(';{hӗ7 0{k%P 0!lZ9M{h<`Y]/Whf\BlaZT>=f*Bak*X~g6HZY6^vSKD^L[{!(a!>g>(~6ZS6vYL^gL{kG^2NVTLY]AeB:n#=kxF'b+]y ;Kq-E>R_ACl2VF Y<$T 4Ab->5B_::Ll+L%RY2V^!kBn[f}^Fb K->R_CqlVyT-FY< B(-5A_:elLnD#UD)%j'Qkg2CZ0 Y0;9TXGY7=b !b,K%D)DUQ!CG0 T09YVZV=g`k`KjmUT ~yR]kUbMPoIIg`[StoT?T8U[M.fC&|c<^`2jT!khPpckM2[O8rJ2bJ9nN?xL?jWAW7SBQ8a2y]!Q*I`So?8UM8Ca|<_TklPtpk/b/[5rb>bOpwave11%_s\h QT(XR+\%W c'dViLUQ'[ M4KTV [SRXsQh]_EUO'KiU E4Tr_jf@~UPu@[@u@UaUTdTnY؋S{Rr:mpzmوlh# Ɍ*2{4{Fwh{9wh zh|;}||ݏ}ː~"94K4Y444A4S4I4\4a4 ;4@4S4'dTSTkfTVETFTSTETRTT|TTTm6l:{<{4֌)̌0bncp%,_i~[g''{4n6؋)dpag,`erjfrTrFqlM[uPu?aqXSY\oitNj\iaXzkW[}gikzWM}i!Ps]tsx]s~oqlohjtv j~q#tpotp,p*f4ogp22$U/X9eXy^<]W?W[ sbO`jgS\RodUe p?<}\tfR}U~hP*/}k7T 1!;~h ė0 +~k%P -!WK9=}h/S]z=[rGVo&RSt+TU}-IJu4JM9U'Z%WqW6NlU4Hzp5Il+NQwOwq)JtcUW4U`G.h=&d9cZ2mN!siL}ffP0[R6rO/bO6nSU4<ˬ4?ƨFC91TDZ>%²7(CB;6G'>x( >q>Xpoint1|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:F|JoDo:|4TB%;(|EsBs;|8G>[>^r>eE9Fpoint2*s hT(R-% (.iU' 4dTn qkRpslhvvaUi'gip c4>_S@mU6@;@M͓@iӗUpUϖTTYĒSR:pkވohg#kƾ ĵ*24Fh³9h h;ޏΐ"Y4k4w4R4^4p44 444 44KTOT|TxTъTΙTTTLTDTTT6:<4Ũ)Ļ0npк%Ч,nimgeٸ'gե'46Ē)ppgiӗϖ,OrSr>7Iϣ4;M͓6.@i2k@yt2{8y9iUf[[vkKgMOw!5Bx<[~lhhTv`ť NS~#o{opz,i|*~p4wrv{_]<|1ϊh#bp"B.L<%ktfnixqu玐sۄ}oaRiqՁy-Gh?2Q>$Y-=D0 W8DzI/h[-EU/?"EkLk2>!2D! |.{,}92{62W>mj?;DL^?UxP8^NaBLkd\_k>`tOui:b_8[U;rVBxjAn`DjmCr>@>\vdXpoint3shTR" $%iU' 4JTR WQRTsMhVYCUJ'GiN @4Mt_bxw@x|UCn@Gu@Xy@qzU}tyUwT|vTrYsSlR:ph|#z *24lF˜h͝9h hÜ;"74C4M434>4J444"4444frTl]TTXToT܀TTT7T)TuTzT6:<4)0ynzp%,~rilgrĖ'q'l4r6s)|vp}tygqzw,aurbxwrMtKVDGuXyCnAJV;YNct>f@e>X]S[fz_kLUMRb!BlOkxElfflxhfvj \Xh#vcop,ld*Y4|ZzbkCT, =!59;3h+E Dk?P2 B!cͅ\9ThIc<^mRS \$vc4?]\VhRbR[yMuOwҊ4Xۑ U~g;͒fFA96&;+D-54B}Gy?2W-U4p{Ð2x=,yqR$:9<(ߊbB L6%]`V][fiqpskk}koq[iNRuRqbyf-j<U(wIAMe]n5ڄ"j'kgZYTG!!2JMfc!>WG3T{LY7ZPgCk\jSOT| x:UK.B&t};W2xN!c~Ify]o6[n7rp9bq?no=xp@jw=u5yC{?<%6(3GP32:4$B%=-( @80z7'hD$E</'"c z0k7k_ 2% !u2)!|{ }'){"*D2mS3;21,2_O2KQ!`>*F@6S1BH3Uf=8Q?a7BcOVMk63>k>~ Upoint4sh TR&, i#U,' !4]TTc] \fX`R]asdVhk`aggIUlP'mKirR w@4G@_U1@b^U?V@Bq@L@[Uf.UlTu9T~OYyS~gxRQ:Kpq>Ԉl@hj|#f} }*w2i4~gxFahi9{Yhn ym ahf;acޗd͏bh"t34>4J4m34s@4K4 4 44$4:474_,TcTxDT T-TDTTkT$lTTGTLTM6J:fQʏ_,ՃQ;|JR~gEaK]Vuy2qf1ol1o~1jre MAr||2q2a$M@sUKocm^c_.NAP;>Ih9OїIR HLkESP=V GY![TXU9TMhLR]WkchjE^[Tm[ r]zX/>c>M~ Upoint5!sh*T'R07 )'#i/U9'. 14\WTaa ZiWcR[dsbXhic_jeKUjS'kMipU tB4F<_T-@`[U>S@An@J@ZUd*UjTs5T|KYv}S|d|RN:Gpo:ۈjS@QA=g7RmE9xt:Q~9q}7nlM9a[T3pk>hMBx!>QGAx>iT@ylcBhXEvW{ OmHy~#\OtomRpdz,Twx*_hh4`Ii]etOFa;w4nkXwF/t=Mя](܃O6|HO~eA_H[Ssw2ob1mi1m{1hoc L@ozy2o2`$L?qTJlaj\`^*<`?Z X)_]+fRd,UU Y?YNAIkCQT5T @V!?KAL;=Eh8KٗHO GHkCOPɌ&Eɍ,Hŕ#C<š9ƒE9L H4a:qkg YS+$!Tw!ZyG@ēNoS;YTpgAk 43 x"y q%RB@$< b'BDLC%B{<|AӇMΑSN}[߅dJvCfRLeq]tyb|-k{H!=~NMgx`y!qBSmGk5TL`Yr4ZT`g@kakjD[^TkW pZ$g6:j>~c dki0ky.^opUgW!WtcGv2EUvEZ.iIM&`6Cg>h2`J[!T7TT2ny%@[s$Ar}(Eb{*Lnq%Hxv(Mjm0Gp.=r4P{7L<~5B?y0:Tp;=nm5@;"s>@D^28e!?H*0Q.k%X/@UDF89pMa*rUG]@q]k2sitAv6~:b0{8[+x+:Gv >X/>c>RM~Tpoint6 sh*T'R/7 (&"i.U8'- 04\WTba [iWcR[dsbYhic_keLUjS'kNipV tB4F<_T-@`[U>S@An@K@ZUd*UjTs5T|KYv}S|d|RN:Gpo:ۈkS@QA=h7RnE9xt:Q~9q~7nmM9b[T3qk>hMBx!>QGAx>iT@zlcBhXEvW{ OmHy#\OuomRpdz,Twy*_hh4`Ii]etOFa;x4nkXwF/t=Mҏ](݃O6|IO~eA_H[Ssw2ob1mi1m{1hoc L@ozy2o2`$L?qTJlaj\`^*<`?Z X)_]+fRd,UU Y?YEh8KۗHO GHkBOPɌ&Eɍ,HŖ#C<š9ƓE9M H4a:qkg YS+$!Tx!ZzG@ēNoS;YTqgAk 43Ő x!y q%RB@$< b'BDLB%B|<|AӇMΒSN}\߆dJvCfRLeq]tyb|-k{H!=~NMgx`y!qBSnGk5TL`Yr5ZT`g@kaljD[_TkW pZ$g6:k>~c eki0ky._opUgW!XtdGv2EUvE[.iIM&`6Cg>i2`J[!T7TT2ny%@[t$Ar~(Eb|*Lnr%Hxv(Mjm0Gp.=s4P|7M<~5C?y0:Tp;=nm5@;"s>@D^28e!?H*0Q.l%X/@UDF89pMa*rVG]@q]k2sjtAv6~:b0{8[+x+:G0>X/> b>LM~Upoint7 sh)T'R/6 (&!i.U7', /4\XTaa ZjWdR[esbYhid_keLUjT'kNipV tB4F<_T-@`[U>S@An@J@ZUd*UjTs5T|KYv}S|d}RN:Gpo:݈jS@QA=h7RnE9yt:Q9q~7nmM9b[T3qk>iMBy!>QGAx>iT@zlcBhXEvW{ OmHy#\OuomRpdz,Twy*_hi4`Ij]euOFa;w4nkXwF/t=Mӏ](ރO6|HO~eA_H[Ssw2ob1mi1m{1hoc L@ozy2o2`$L?qTJlaj\`^*<`?Z X)_]+fRd,UU Y?YFh8KݗIO FHkANPɍ&EɎ,HŖ#C<›9ƓE9L H4a:qkg YS+$!Tx!ZzG@ĔNpS;YTqgAk 42ɐ x y q%RA?#< NJ b'BDLA%B|<}AӈMΒSN}[߆dJwCgRLfq]uyb}-k|F!<~NMgy`z!qCSnGk5TLaYr5ZT`gAkaljD[_TkW pZ~c eki0ly._opVgW!XtcHv2EUvE[.iIM&`6Dg>i2`J\!T7TT2oy%@[s$Br}(Eb{*Lnq%Ixv(Mjm0Hp.>r4P{7M<~5C?y0:Tp;=nAD_28f!?I*0R.l%Y/AUDF89pMa*rVG]@q^k2sjtAw6~:b0{8[+x=r-wDx7}Bn2zFj7E<5:?0L(H&=-5T2D%1=(-H(F&?+;G >X/>}`>LM~Upoint8 sh*T'R/7 (&"i.U8'- 04\XTbb [kWdR[fsbZhid_leLUjT'kNipV tC4F<_T-@`[U>S@An@K@ZUd*UjTs5T|KYv}S|d~RN:Gpo:ވkS@QA=i7RoE9zt:Q9q7nnM9c[T3rk>iMBz!>QGAx>iT@{lcBhXEvW{ OmHy#\OvomRpdz,Twz*_hi4`Ij]evOFa;x4nkXwF/t=Mԏ](߃O6|IO~eA_H[Ssw2ob1mi1m{1hoc L@ozy2o2`$L?qTJlaj\`^*<`?Z X)_]+fRd,UU Y?YFh8KߗIO FHkANP=S EV!bSZR9UJhNO[SɎ&Eɏ,Hŗ#C<œ9ƔE9M H4a:qkg YS+$!Ty!Z{G@ĕNpS;YTrgAk 43Ȑ x!y q%RB@$< Š b'BDLB%B}<~AӉMΓSN}\߇dJwCgRLfq]vyb~-k}H!=~ONgz`{!qCSoGk6TLaYr5ZTagAkamjD[`TkW pZj2`J\!T7UT2py%A[t$Br~(Fb|*Mnr%Ixv(Njm0Hp.>s4Q|7M<~5C?y0;Tp;>nzX/>47_>M~ Upoint9!sh*T'R07 )'#i/U9'. 14\YTac ZkWeR[fsbZhie_meMUjU'kOipW tC4F<_T-@`[U>S@An@J@ZUd*UjTs5T|KYv}S|d~RN:Gpo:߈jS@QA=j7RoE9zt:Q9q7nnM9c[T3rk>jMB{!>QGAx>iT@|lcBhXEvW{ OmHy#\OwomRpdz,Tw{*_hj4`Ik]ewOFa;w4nkXwF/t=M֏](O6|HO~eA_H[Ssw2ob1mi1m{1hoc L@ozy2o2`$L?qTJlaj\`^*<`?Z X)_]+fRd,UU Y?Yɏ&Eɐ,HŘ#C<9ƕE9L H4a:qkg YS+$!Tz!Z|G@ĖNqS;YTsgAk 43Ɛ x"y q%RB@$< b'BDLC%B~<AӊMΔSN}[߈dJxChRLgq]vyb-k~H!=~ONgz`{!qCSoGk6TLbYr6ZTbgAkamjD[aTkW pZk2`J]!T7UT2py%A[s$Br}(Fb{*Mnq%Ixv(Njm0Ip.>r4Q{7N<~5D?y0;Tp;>n-6T2E%1=(-I(G&@+;G6>Q>>Kve!point10#shT R&! &)iU' 4OTW ]WRZsSh\`HUO'LiS E4H|_[@oU>v@B}@Q@iƒUt}UT~TzY{SsR:pzxhs#q *24sFh9h h;͗":4H4S474B4O44444 44_{TdgTTbTxT̈TTT3T&TlTrT6:<4)0np%,uziwugjȡ'iÐ's4z6{)~pt}giƒ,Z}r[rH|EP@B}Q>vtJrxAt_mlph^vc URo#mjopx,dk*v_4saqit2^}J|@~ja[2|1y1}1pm N;22j˲$K³6TDe^q}k6P0 zwQzlPrpFoa=sqN=4kxEg1YAS9J!mi!tnME{gbS@sYnfgGwk-ǖ,6CD͐:x@1yqR+>;<+抦bB&L9%VgOdTmayh{cs}|swiabTRlWqiym-qUP.|F&k?|]2oS!\N^dw9[w;ry=bzCnwAxyEjA~8GD<;?5T8>B@%:(7GK7267$='=*+ ;8-z3)h?'E8/%"\r-k3kY2"!l2&! |{ }$,{ -?6mM7;.4)5YU2FW!ZB*AE3Y-GC7U_A8KCa3F\TPRk7XtKgM2bD0[=3r>:xN8nF}݈>^r>=X?Fpoint11z+s hTx)R-% (/iU' 4dTn qkRpslhvvaUi'gip c4<_Q@kU3@8@KΓ@gԗUnUЖTTYŒSR:pjވnhe#iǾ Ƶ*24Fh9h h;ޏΐ"Y4k4w4R4^4p44 444 44ITMTzT{TьTΜTTTITATTT6:<4ƨ)ƻ0npѺ%ѧ,mikgcڸ'e֥'46Œ)pnggԗЖ,LrQr<5FУ1£8KΓ3+>i/k>yt/{6y7iRf[YvkHgMMw!3?x:Y~lfhQv^ǥ LQ~#m{o~pxã,g|*|p4urt{$cu4;c];yhMt)VDOl4I H֙g(⭏QDi9g6a>[&I\+Mc-EU4J`a!y|!~脄GBvsS?~YzzgC߄kG@J?^GnPjPWHxDl9yT-qX,Ru8D<Gf?2O>$W-=B0 U8BzG/hY-ES/="BkIk}2<!2A!|+{)}72{42U>mh?;B<><gd2Qc!sP*VN8`x( >q>Xpoint12|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:?|JoDo:|4TB%;(|EsBs;|8G5>N>G>>>(\gcrstnd1bsbhSTXR"]&Z jg`iRU%Y'e Z4tT xRvsqh܃sU'riހ w4^^l_mNt@s}UYsa@^l@mt@yUGyUyTNyT^uYuSskRc:\p}XԈXh}# *2s4skFmhs9khy | phs;ss뗦sՏsw"a4q4щ4i444Y4 o4$t4F4,J44a4TF@TL1NT;N T*$T}TTTTTT\6[:sg~''sk4^u6u)NypGygyy,iKrmNtr^^lX\iX^lmtYsaRsf\>]s>bZRtZsSbRf>tS=[uNQkt=MuQ!\s]ca]xc]vZ[lxZhiavx iv[#a[oap,[*sN4ZOs[mhy Ly!DsEs;?mh8s—Os LmkGsP?y Ly!is`s9YmhPsds<^mmTs͗Yy ^y$-4jo]nhk9|T-pAlߊO4oʱ lˆgUpe,o_)fc&]m&\&s)d+o,n-zh4s!wb!yYk`]Wp[Utmpowlfx`owd fqn ecq&v,r#hcgdؑ\㈏u؏ |4s|Uc}Qgԃa}wpԂlu{povafwqjuqikjmg\Yi`S&bi&f!!ۊlێl|SkYzgk~k cS*V1j#zwx& |y^qGR/L:j&< z]bFB/KL:i%ovԐ|}̔mRaqvy-̓<(kA`etn$z$t oj ukYg_ZFYLT,JG,P4a!4gщя!GiToYaZhgqkwjts5Txs s-1 G@!;N !91k% - *$1P28|Q);}TF@L1N}g?(i02{z* 1v?$s> u,+~z2Ck;=-(o{".ge7@te)*y+U?.wF&c;G62xQ*!dH5uLNq![u%rub}n}&x"j~1s0,%yH>A>jcrstnd2fsghYT]R"a&_ okeiXU%^' k a4uT yRxsrh݄tU'si߁ y4]]m_lMu@rUXrb@]m@lu@{UF{U{TM{T]wYwSrnRb:\pzWԈWhz# *2r4rnFlhr9jhx { ohr;rr엣r֏rv"c4r4ӊ4k444`4 v4${4M4,Q44g4RGATJ2OT9M!T)#=T* T:TTTTTTT\6Z:r[tMRks>MtR!Zr^b`^xb^uY\lwYhh`vw hu\#`\o`p,\*rP4YQr\}RGAJ2O}g?*i/3{z) 1v?$s="u+-~y2Ek;?,*oz!0gd7Ate)+y*U>.wE&c; F82wP,!cH7tKPr $!rub}n}%!x!j0s/+% I>/TD>tswxcrstnd3jslh^TaR"f&d toki^U%d' q h4vT zRysth݅vU'ui z4\\n_kLv@qUWqc@\n@kv@|UF|U|TL|T\yYySqpRa:[pwVԈ}Vhw#} *2q4qpFkhq9ihw z nhq;qq엡q׏qu"e4t4Ջ4l444f4|4$4T4,X44n4PHCTH4QT8M"T(#>T& T7TTTTTTT[6Y:qC[>c>I_qq4|d;}j;[‹Vŋr\ކsD҇`DrMXEq[q;Mw7kY@wEUt=q]K΃L[|Fq~g``g]q2}y1|11rs `M22w$YE]Lg`|rJkU97N=4O2;|P,@}PHCH4Q}g?,i/5{z) 1v>$s=$u+/~x1Fk:A+,oz!2gc6Btd(-y)U=!.wE&c:"E:2wO.!bG8sKQq [u$#rub}n}$#x!j/ s.!*$ J>F>kcrstnd4osqhcTfR"j&i xsqidU%j' v n4wT {RzsuhކwU'vi {4[[n_iKw@~pUVpc@[n@iw@~}U~E}U~TK~T[{Y{SpsR`:ZptVԈzVht#z *2p4psFjhp9hhv y mhp;pp헞p؏pÐt"f4u4֌4n444m44%4[4,_44t4MIDTF5RT6L"T'"?T" T3T T T T T T TZ6X:ppP5v Bv!^pVp9NjhEpݐZp-h/7{z(1v=$s<&t*1~w1Hk9C+/oy 4gb5Ctc(.y)U=$.vD&b9#E<2vN0!aF9qJRq[t#%rtb}n}$%x j/"s.")#yL>GI>a;ֱ[crstnd5ssuhhTjR"n&n }wviiU%o' { t4yT |R{svhއxU'wi |4YZo_hJw@}oUUod@Yo@hw@}U}DUTJTZ}Y}SouR_:YppUԈxUhp#x *2o4ouFiho9ghu x lho;oo헛oُoĐr"h4v4؍4o444s44%4a4,e44{4JJETC6ST3K#T&"@T T0T T T T T T TY6W:oSt6oVI̓EY|?o~`^XdUo2wv1u}1}1jm [G22q$S>VE`XymHoAikFoT3u Au!5o7o;1ih*oAo ?ik;oP1u ?u!YoQo9Jih@oܐWoe؍O4eñ egKe_*r[&ha#ak$a&o'j+j*r-vo4m|\{Tm^`WoaUorpj{l_{[qwa jqk jci&o,kݘ#aܘ[_ꍞ^ѓTۊoґ vއ4lU[Qa͆[Ԁwk΅lo~piya_zqdxzskeqggYfeS$me#j!!،fԐeSdY}geցkm^(a/t!x% ylqWR.[8x%< mbXB.\L8x%sy򍜐ѓ̀}̗qRgqzy-͖<(pAfeyn#%j ksgoZaY]T,eG+a4{!3w؍Ғ!GoTtYhZmgvk{joo;Tjo wo b+=N!#N"5z0-( C? !3K#!78k &"@kQ;;M=7N2>|M/C}JJEC6S}g=/h.8{y'1v<$s;'t*2~u0Ik9D*1ox 5g`5Dtb'/x(U<&.vC &a9$D>2uM1!_E:pISp [t#'rtb}n|#'x j~.$r-$)~#aOk>toTObJ[KrSxVnXj]N>]G>@crstnd6rsthgTiR!m&m |wuihU%n' z s4tT xRwsqhރsU'ri w4ZYn_iIw@~mUVmd@Zn@iw@~~U~C~U~TI~TY|Y|SmsR^:WpsSԈzShs#z *2m4msFhhm9ehs v khm;mm헝m؏mĐq"b4p4؇4i444r44%4`4,d44z4LHDTE4RT5J#T'!?T! T1T T T T T T TW6V:m!5J#!87k! '!?kS99N;6N0=|N,B}LHDE4R}g<.h-7{y'1v;$s:&t)1~v/Hk8C)/oy4gb4Ctc&.x'U;$.vB&b8#C<2vL0!`D9qHRq[t"%rtb}n}"%xj~-#r,#("<Q>m\E>Zcrstnd7qssheThR!l%l {vtigU%m' z r4pT uRssmh~nU{'miz q4[Wn_jHv@lUWlc@[n@jv@}UB}U}TH}TWzYzSlqR\:VpvRԈ|Rhv#| *}2l4lqFfhl9dhr t ihl;ll엟l׏lÐo"[4j4ف4c4{44q44%4_4,c44y4OECTG1QT7I"T( >T" T2TTT TTTTV6U:lkT68N:5O/<|O*@}OECG1Q}g;,h,6{z&1v:$s9%t(0~w.Gk7B(-oy3gc3Btd%-y&U:".vA&b7"B;2wK/!aC8rGQq[u!$rub}n}"$xj,!s+!'!L>FC>|+$crstnd8psrhdTgR"k'k zusifU&l'!y q4qT uRtsnhހoU|'ni| r4\Ym_kIu@nUXnc@\m@ku@|UC|U|TI|TYxYxSnoR^:XpxTԈ}Thx#} *2n4noFhhn9fht w khn;nn엡n׏nq"]4l4؃4d4}44p44&4]4.b46x4QEBTI0PT8J!T) >T% T5TTTTTTTX6V:nCX=c=I`nn4}a;~g;X‹TċsYކuB҇aBrNUFnXn;Kx5kZ>wFRt>n^H΃MX|Hn~i]ad^n2~v1}|11su aN22x$ZF^MiaxrHkU66N;3O/:|P)?}QEBI0P}g<+i,4{z& 1v;$s:#u(.~x/Fk8@)+oz1gd4Btd&,y'U; .wB&c8!C92wM-!bD7sHPq[u""rub}n}""xj-s, (" =D &8 z5h9E+/."ӹkk2!2!|#{(}:{BFmP;ENc2Y!i*ZCBPU_8Ha8]Jk:tsQHbD[FrNxPnRjWH>A>n\}Lcrstnd9osqhcTfR#j'j ztrieU'k'"x p4rT vRusoh݁pU}'oi} t4]Zm_lJu@o~UYob@]m@lu@{UD{UzTJzTZvYvSomR_:YpzUԈUhz# *2o4omFjho9ghv y mho;oo뗤o֏os"^4m4Յ4f444 o44'4\4/`47w4SDATK/OT:K!T)!=T( T8TTTTTTTY6X:o[tJRks>MtR!Zo^b^^xb^uV\lwVhh^vw hu\#^[o^p,[*oP4VPo\wHSt@oaI΃PY|Jo~k^deao2w1~11uw cO22z$]HaPkdztHE>>>~gcrstnd10nsphbTeR#i(h !ysqidU(j'"w o4sT wRusph܂qU'qi~ v4^[l_mKt@q}UYqa@^l@mt@yUDyUyTKyT[uYuSqkR`:Zp}VԈVh}# *2q4qkFkhq9hhw z nhq;qq뗦qՏqt"`4o4ч4g444 n44(4[40_48v4TC@TL.NT;K T*!]q>bWRtZqSbRf>tQ=[uKQkt=MuQ!\q]c_]xc]vW[lxWhi_vx iv[#_[o_p,[*qN4WOq[khw Lw!DqEq;?kh8q—Oq LkkGqP?w Lw!iq`q9YkhPqdq<^kmTq͗Yw ^w$*4jo]nhk6|T*p>l݊O4oȱ lgUpd)n_%de#\n#]&s&e+m)o-zk4qyaxYib[Wr\Utopnxldx` nwe fqo fcq&v,r#hcgeב\∏u׏ |4s|Uc}Qg҃a}wp҂lu{povaewqiuwokjmgcYj`S%hi"f!!ډlڎl{SkYygk~khY)\0p!|x& yhqQR0V:s'< hbQB0VL;t%nuӐ|}̔lRaquy-̒<(jA_esn%(jk ngjZ[YWT0_G-\8v!5rчю!GgTnY`Zggokvjtq5Txq q c*=QQ.z;-. G=!;K !91k! * *!%C>A>v\OLcrstnd11rsuhfTiR$m)m !}wviiU)o'#{ t4yT |R{svhڈ߆yU'xi܆ ~4^\m_lKu@r~UYrb@^m@lu@{UE{UzTKzT\vYvSrmRa:[p{VԈVh{# *2r4rmFlhr9ihx { ohr;rr뗤r֏ru"i4x4ΐ4p444 t44)4a41e49{4SEATK0OT:L!T*!=T( T9TTTTTTT[6Y:r[uKRkt>MuR![r^b`^xb^uX\lwXhi`vw iu\#`[o`p,[*rP4XPr\kO4nʱ kÉgSnc)o_%ee#]n#^&s'g+m*p-yl4pz`xYib\Ws]Us ppmyldx` nwe fqo gcp&u,q#gbfcڑZ刏sِ {4s}Uc~QeՃ`}woՃlt|powaewqhuyrkingeYjaS%ki#g!!یk܎k~SkY|gj~kk[)^0r"~x' ykqTR0Y;v'< lbUB1ZL c*=PQ0z9-- F>!:L!!93k ( *!=kV54O<2P09|Q(=}SEAK0O}g=)i-3{z' 1v=$s<"u)-~y0Dk9?**o{0ge5Ate&+y(U<.wD&c9 E82xO,!cF6uJOr[u"!rub~n}#!xj.s-)" g@> GC>|$crstnd12usyhkTlR$q*q "z{inU)t'$ z4T Rހs|h؎݋U'iٍ ߆4]]m_kLu@sUXsc@]m@ku@|UE|U|TL|T]xYxSsoRb:[pxWԈ~Whx#~ *2s4soFmhs9jhy | phs;ss엢s׏sw"q4ƀ4ʘ4y444 y44*4g42k4:4QGBTI2PT8M!T)!>T% T7TTTTTTT[6Z:sC[=c=I`ss4}e;l;[‹Wċs]ކuD҇aDrNYFs[s;Nx6k[@wFVt>s^K΃N[|Hs~iaah^s2{1}11su aN22x$[F^Nia~sJkU76O<3P1:|P*?}QGBI2P}g>+i.4{z' 1v=$s<#u).~x0Fk9@*+oz1gd5Bte',y(U= .wD&c9!E92wO-!bG7tKPq[u""rub}n}#"xj.s- )" =D &8 z5h9E+/."kk2!2!|#{(}:{BFmP;ENc2Y!i*ZCBPU_8Ha8]Jk:tsQHbD[FrNxPnRjWA>\E>ZuNcrstnd13vsyhkTmR$q)q "{{inU)t'# z4T Rށs~hِތU'ہiڎ 4\]n_jLv@sUWsc@\n@jv@}UF}U}TL}T]zYzSsqRb:\pvWԈ|Whv#| *2s4sqFmhs9jhy | phs;ss엠s׏sÐw"t4ǃ4˚4{444 y44)4g42k4:4OICTH4QT7M"T(!>T# T5TTT TTTT\6Z:skT98N=5O1<|O,@}OICH4Q}g>,i.6{z'1v>$s<%u*0~x0Gk:B*-oz3gc5Btd'-y(U=".wE&c:"E;2wP/!bG8sKQq[u"$rub}n}#$xj.!s.!)#]gB>]G>Xcrstnd14vsyhlTmR$q)r !{{inU(t'# z4T R߃sڀhّގU'܃iڐ 4[]n_iLw@~sUVsd@[n@iw@~~U~F~U~TL~T]|Y|SssRb:\psWԈzWhs#z *2s4ssFmhs9jhy | phs;ss헝s؏sĐw"v4ȅ4̜4}444 z44(4g41k494MKDTF6RT5M#T'"?T! T3T T T T T T T\6Z:s6O2=|N.B}MKDF6R}g?.h/7{z(1v>$s=&t*1~w1Hk:C+/oy 4gb6Ctc'.y(U=$.vE&b:#F<2vP0!aG9qKRq[t#%rub}n}#%x j/#s.#)#BC>GI>a 'Mcrstnd15vszhlTnR$r(r !{{ioU(t'" z4T R߄sہhړޏU'܄iے 4Y]o_hMw@}sUUsd@Yo@hw@}U}FUTMT]}Y}SsuRb:\ppWԈxWhp#x *2s4suFmhs9jhy | phs;ss헛sُsĐw"x4ɇ4̝4444z44(4h40l484JMETC7ST3M#T&"@T T1T T T T T T T\6Z:sVt6sVK̓E\|?s~`aXhUs2w{1u1}1jm [G22q$S>VE`X~mKsAmkFsT3y Ay!5s7s;1mh*sAs ?mk;sP1y ?y!YsRs9Jmh@sܐWs%"M..d@ b,=N"#N"5z1-) CA !3M#!78k &"@kQ=;M?7N3>|M0C}JMEC7S}g?/h/8{y(1v>$s='t*2~u1Ik:D+1ox 5g`6Dtb(/x)U=&.vE &a:$F>2uP1!_G:pKSp [t#'rtb}n|$'x j~/$r.$)~#aOk>toTObJ[KrSxVnXj]D>]G>crstnd16rsuhgTjR#n(m }wviiU'o'"{ t4T R߂s~hڐߌU'݁iێ 4[]n_iMw@~sUVsd@[n@iw@~~U~F~U~TM~T]|Y|SssRb:\psXԈzXhs#z *2s4ssFmhs9jhy | phs;ss헞s؏sĐw"t4ʂ4͙4{444s44'4a4/e47{4MKDTF6RT5N#T'"?T" T3T T T T T T T\6[:s#"N..d@ c-=O"!O"4z3-+ DA!5N#!87k" '"?kS<9N>6O3=|N.B}MKDF6R}g?.h/7{z)1w>$s=&u+1~w1Hk:C+/oy 4gb6Ctc(.y)U>$.wE&b:#F<2vP0!aH9rLRq[u$%rub}n}$%x j/#s/#*$D>\E>Zñcrstnd17nsphbTeR#j'i xsqidU&j'!v n4~T Rs{hۍߊ~U'}i܋ 4\^n_jMv@sUWsc@\n@jv@}UG}U}TM}T^zYzSsqRc:\pvXԈ|Xhv#| *2s4sqFmhs9jhy | phs;ss엠s׏sÐw"o4~4Ε4w444m44&4[4._46u4OJCTH5QT7N"T(#>T% T6TTT TTTT\6[:ss;7mh1sGs Emk@sP7y Ey!`sXs9QmhGsސ]s""O..e@ c-=P" P"2z6-, EA!7N"!85k% (#>kT:8N>5O3<|P-@}OJCH5Q}h?,i/6{z)1w?$s=%u+0~x2Gk;B,-oz!3gc7Btd(-y*U>".wF&c;"F;2wP/!bH8sLQq [u$$rub~n}$$x!j0!s/!*$E>FC>|Ȑ$crstnd18jslh^TaR#e'd toki^U&d' q h4zT }R|sxhۊ߇{U'zi݇ 4]^m_kMu@sUXsc@]m@ku@|UG|U|TM|T^xYxSsoRc:\pxXԈ~Xhx#~ *2s4soFmhs9jhy | phs;ss엢s׏sw"k4z4ϑ4r444f4|4%4T4-X45n4QIBTI3PT8N!T)#>T( T9TTTTTTT\6[:sg{'~'so4^x6x)M|pG|g||,fJrkMur]^mV\fV]mkuXscPsd\@[sAaYTtXsUaTd@sS?[tMSks?MtS!Zs_aa_xa_tY]lwYhhavw ht]#a\oap,\*sP4YQs]C\=c=I`ss4}e;l;\‹Xċs^ކuE҇aErNYFs\s;Ox8k[AwFWt>s^L΃N\|Hs~iaah^s2{1}11su aN22x$[F^Nia~sK!"O-.e@ c-=P"Q"1z9-. F@!8N!!94k! ( )#>kU96O>3P2:|P,?}QIBI3P}g?+i04{z) 1v?$s>#u+.~y2Fk;@,+oz!1gd7Bte),y*U> .wF&c;!G92wQ-!bH7tLPr [u$"rub~n}%"x!j0s/ +% =D &8 z5h9E+/."kk2!2!|#{(}:{BFmP;ENc2Y!i*ZCBPU_8Ha8]Jk:tsQHbD[FrNxPnRjW)F>A>`\h]Lcrstnd19fsghYT]R"a&_ okeiXU%^' k a4wT {Rysth܆߄wU'vi݄ |4^^m_lMu@s~UYsb@^m@lu@{UG{UzTMzT^vYvSsmRc:\p{XԈXh{# *2s4smFmhs9khy | phs;ss뗤s֏sw"f4u4Ѝ4n444`4v4%{4M4-Q44g4SGATK2OT:N!T*#=T* T;TTTTTTT\6[:sg|''sm4^v6v)MzpG{g{z,hKrlMur^^mW\hW^mluYsbQse\?\s@bYStYsTbSe?sS>[tMRks>MtR![s^ba^xb^uY\lwYhiavw iu\#a[oap,[*sP4YPs\"O-.d@ c-=P"Q"0z;-0 F@!:N!!93k# * *#=kV84O>2P29|Q+=}SGAK2O}g?)i03{z* 1v?$s>"u+-~y2Dk;?,*oz!0ge7Ate)+y*U>.wF&c; G82xQ,!cH6uLOr [u%!rub}n}%!x"j0s/+% a5>.*>N]['crwalk1nx|z`p]p&){!m!k_%' 9`r s hf\Xpr[Gi2Y]hlZF-p}Y5Y}TXuzR,tT={TQ{TguRFIxSvhQZGkQlR^|\ufPMdxLilOl_Ss/s,|?pibCg=~~LKDsP;sw'm'ufPDlR^b|\>ZGkgFIxwgu'vhL9Ut5Y}t-p}2mW C={Q{ ,t5BhB:C?eYt7Z?YBBP^B[QXXkPBMQX!8e?mfx?fRedlTehFmvT FRd#amcogmpg,ac*pU4heVhcn4r[8wa8uOnnMonUa>n=Nt4j7zKn`8kCnV3zAH}6f|:PNށHeK~f]cgcs}5|p9|w99}<0_Gz55,e!LmY sj}NLFK8fI=BR@:CNWmltCm6ff_mfI,3ʅ-w); 8y9Q1'=%LF8<w7K~:C{z=ѕA$G,qmdsE[qzVzcs7ZqhQ|`}$^}+K)D!+|4"y0C$<P@1q'Fuи ǰWYʹmj}U-T[sbn`d6sG]B"c,1ahnoreq5x>jA,hpҌ|wtߖÊ#aMTWirܒ;o}.\LOUdZd)" chhg^ny`*Ho1}G3 j:!u kjŁ܌ e-{$J`MARWWQhsP9Twj;yh8I#&m@(c3-(r?*9l&L9!:1S6L&07#$.8a..Jn?K=AVF( [C''Pm,e(c "Om#Lh/0MK%4@R<":kTr%8x@K2%E9<<=0 `?HMEG#+K3/4R:H]D;9\3"dL(1k>?L706vB1XWGKBON2D*ZP4+H[.9RBQVU >' D,$=#xC#iK+:J'dL7.B8" L0 CA+]8+72?@"F?'E; H>7N87 8;h eN.N5'gxV9> 1>zcrwalk2shTR%) " iU('# 4pT tRtsnhԂoU}'oi~ t4;f}_GQ@er~U8~r@Ey@Xz@mwUZD~UnTnEtTRhYeSfZRW:QpuVڈlUh#x *{2b4fZF]h`9bhi t bhc;ifߗgɏjh"]4o4ˆ4d4~4ې444(44/484+TeT&:mT[:T%JT+TATqTrTT TTTP6O:fe[IEyXz8~r>LdDD}FIaZtA|\I\LF[[C[\TXk[FM\\!C{gJhfxJh\`dl^^hPfv^ P\f#khcoqfpq,ke*z|W4raWr{eRh;yHf5kNGw?bt?ЏZPOf|O~mchmgy2x111 `J22$dLlYul]L<\8?X< YPN(n&A,w+:0-F4;$,#'w1jWAnU?p8l/,~w3vq<ycw&{,v#minhaxߏ 4yxUizQiۂe{wsځlxypssajtq4"\"^k6g`{Y8qS_(7(v!!܉prySq}Yxgo|k] `q_,s[5X&Yxo*p yvqznRy2qt>|*<} bqB2uL>%kqՐ{}ʕgR]quy-ǔ<(fA\esn}((j~kgZYwT/G/{8!8ېˆ̏!~GdTjY]Zdgokvj[}\RUP'[V+"rQ#bX#n]*x^&j_6T7 a0 W+Z: T7%M7 (M;G]2`$E=K +8"z8h?E1/4"%kk&2!2 !u|}%{|,ur}q={GJmX;IUrm2nd!s*dmKJWUg8Ma>tfwPko@t[ZNbI[KrTxVnXj_?>=4>Scrwalk3shTR%* %!iU+'' #4{T |R}s{hَ݈~U'iڎ 4G]|_UK@noUBro@Lv@\w@rvUiBUpT~E|TSqYjSgbRb:Wp{]ވuXh#{ *2j4gbFkhn9fhw x rht;yu旤sЏry"t4Ƈ4Ο4w444 4404434>4BRWT::`T/\0T+DT6TITc TdTT TTTT6V:m%koԑ}}͜jRcq}y-̝<(kAeen)0jk gZYwT3G-x>!8ΟИ!GwTpYtZmgƇkȀjcz=T|{ x=>2>{ ͽ0crwalk4{shpTzuR{#x&t !{~ioU#t' x4|T |R}s}hՐۉU'҂iԑ ֌4i~_,V@LyUp@&v@:v@RtUBKUhmTZM{TlZoYtgStm_Ri:t^p\hވTbhf#^ }*2o4tm_Fqhs9onh} r yhz;|䗌zΏ{z"y44ƥ4{44ߨ4z4 4%4c4'd43{4anT FtT f@T1MT5TJT2 T3 T] TZ TTTu[6y]:t<q4~)0ePn`Nps%n,EKiJGg]'W'tm_4lZo6tg)ZM{pBKgRthm,.Vr,Vri~ l=(&v:vp/hE&F+eZt"[+Z/E?^D[@XZk?DM@Z!$f,mgx,gAeelCeh3mvC 3Ae#RmdoXmpX,Rd*bW4YeXZda/u|-~QuK~Is2h1g1l1ce @(|2q2c$C)L8XNDWJ ?\3IŽ4[7CR8VUK U?UDP[{Onˣ4Sܨ Vʀg7ӚI50},t"+t&(/|+$4-/"4')* $vW%uU'p#lwq!cdw&h,`#VS|ZuQKsb ny4ijUWgQUuRlw`wlgopdgaYeq(L%KkgKwYzSL*{-~!!އZ]}uS_mYvg\okH GnI,nJ6K*Ixh-fyd~qccRe0ch>w,@WW9,"[A.%r7'b>%nH, xF(jK7A:#J0<, <2/?46 T>BE@C; ;8 %4:(6?GH2|T$x8=jG m!8^"zl5hy2El'/]3"Xk] k2U!2Z !:|O/{N593 }2 a@{aJ~@mC;oGnR]f2W]!xg*qWQEj?HUy[8sBak3]_^IkR:t@X;b;[{ArIxBnIjI<>?T}RwG~y9>_.>xptrbcrwalk5qshTqRr$' "q iU$'! 4hTz vkRlsih}xiUx'li{ s4k~_%V@Hw~Up@#t@9s@RpU;JUfiTRIzTeTlYqcSng\R~e:pYpZfވPahh#^ |*2h4ng\Fjhl9kjhw p| sht;}xᗋuˏzvz"^4s44`4z4ۏ444'4z4(z444\rT@yT_CT(RT) T ?T)T0T[TMTTTpV6tX:n<{k4{~)0_LnYJpt%m,?IiDFg_'W'ng\4eTl6qc)RIzp;JgRpfi,(Wr%Vrk~n='#t9sp+bE"{D(a\t}Z(V+AI(]4ar;ex;hcË`aʋ[oQT+Vrpp]|r;_TIDk-VwrtϏ;b.x|.~QvKJs2h1h1n1ei B)|2r2f$F+P:ZP?W<=D?9J :].IĎ/\1CR2VUO Y?V+=x[/YyZq\nR^0n]@j..m2 (+1E7(@h M="<9.0H) %4*=1B&2Qz ?-@ [L!_C!.Xk/) (RkTm-NM0CU|Cr}\r@y}jC-91'@%3!<)%?,-&T68<5:01-%+/(-5GP2y\$u@=gN j)8],zl@hw;Eh./X:"X&k[k2M#!2M!9+|M8{K>5*0})aL{_SKmL;oSl[Vg2R[!qm*m[QAkAQUud8sIao7Xa]LkT9t=RDbE[|LrTxLnTjQU`7>7>@fcrwalk6{shT|R|$( !{ iU%' 4mT~ }rRrslh~}kUy'liz o44m_>V@^uU2z@A@T@i{UPHUzrTdG{TtRnYiS}e`RX:QppZ܈eYh#u *{2`4}e`F[h]9|bhh u ahb;ifޗfɏjh"Y4k44_4x4ъ44 4$44)444:BTFTK&T%/TP,TKBTiTmT TT,T-T~P6O:eVr4m8mYEAT2z9GdO?}ODbdt<~dDaGMUZN[VUdkUKMV`!=~nDkoxDmVbnlYehJmvY JVk#ekmokmpk,ek*t~_4lbal~lh8L Ek?PA I!r|d9\|hVd~<\zmS` _$U+4-(]?$h:A-=VFqOŦ4r״ lˋgWҭk&7#3}(/v1.x&51+/6-:#40*!+%$vW3yU2p,l#w%q.cy&},x#okpibx 4zyUk{Qj߄f}ws܃lx{ptuakvq))Q&Qk)gSY+ |ST,+/!!܈qtxSr~Ywgo~kO RzS/{Q8N+Mxe-dygqluRm3xj@r,~Z7Wkh@Pn/:o[$BgF@v>n1>|*crattak1sh!T!R9E )' i&UC'- '4֐T ߥאRsŪhŬϜUظ'߭iܸ 4\^s_hHw@w|}UW{i@[t@fy@uzUwAxUtTJqTajYkS_Re:^pUو}Vh#| *2~4_Fth}9qh wh{;z{藜{я|"444ً44޸4 4 4*4!4@4E4DV1T>@ET/bT"4Y"z,POpً4e YgX׶xžI4G4uL5mS5o&U5z+P4-Z"{4R!G!C!sK"eWV"iUUypQlJHtwMlqSocSw&U,P#IG}LuFBzQސ Y߂4UpUJlQHЅFywOΈlS~pQtaKqqM!j"lkOwgm#wYP"lSk1N0w!k!iٔLNl~SOsYj͇gM|kk zmll9th=g&hxw)yy~|qiR~DtzJ)<blBDxLJ%jvlujgeϜg}xvŬ}rR}sqxy-ï<(uAven(* j k gZ!YsT@G>|E!C޸ǩ!GًT{YZ}gkjqp8T~y z H%=9 8!*zU-? 4K !/b!*%/k1 C"412}DV1>@E}N<&J(1{W1Y3 $U4R,~\ Fkh!=e &oV 0gQ3DtK"-VUi#.^:&O:!j052cF*!TI9bAQO[QrQbVnW xY jZR"_Z>±{>puscrattak25s:h)T*R24 G==i.U8'G ?4T RshU'i 4sT\_@e@tiUpnQ@tW@\@aU9lUcTAlTVhYcSp_Rm:]paYh# *2{4p_F}h9oh h;"444444434P44=4U4OO)TG97T8XT'+.T6 THTT TĄ TTTwTZ}6\:|reX^y~`~;N2kn=w]YtW~pObe|^~ynsxp2111¢ u|e|22Α$oÎ]qcysI%D/+|I**}OO)G97}\6#X"+{k1l-$g.b(~p;k~5{%oi+gb-:t[)iU.s4&`4!*02y@(!gB1w;C` [b rcbjni xljmdtn ύ%8!zy0h̀3EҚ*/Ȯ."wkĄ k2ο!2!|%{) }5{<gY> P>Rp]Qcrattak3/s0h/T/R-- ..0i/U.'/ /4T RshU'i 4sTp_@y@t~Uooc@sj@p@uU9UvTATVzYtSqoRk:\p^ЈXh# *2z4qoFzhā9nh h;㗮Ϗ"444444$4C4R44#4A4PO2TG9BT8YT',8T8TJTTTÄTTTwTY6[:{EҚ2/Ȯ7""w!kÄk#2ξ$!2!!|,{2"}@{HgHmnR;zISe2]!~k*Ö]H™GxSUe`8iJa=z_rMk?tUlJbrG[sJrnQxfQnhTjoX>E>EMbs-crattak4(s)h)T(R'' '')i)U''' )4T RshU'i 4rUu_A~@tUnpi@rq@v@zU:UzTBTW|YxSrqRj:\p\وWh# *2y4rqFyh9nh h;엱׏~Ð"444߻44454L4G444(4PP4TG;FT9ZT'/;T;TLTTTÃTTTvTY6[:zGLjDk5g-ZYTG (! ㄿ!ȠG߻TYZ˹gkji?T "H).]8 X =EB.zL-7 @D!9Z!1 0k*;'/;kO9*H@/D26|I,5}PP4G;F}]7-X#6{k1m.$g/(b3~oKk}D{0oh7ga.It[4iU%.s5!&`5)+=2y@3!fC?ws>;C>nKnw7 crattak5(s)h)T)R'' '')i)U''' (4ٺT׹ ׸ٸRٸsڹhظطٻU׻'ٺiغ ؼ4pWw_}B~@uUkqk@os@|x@{U;UzTCTYzYvStnRh:\p[ڈWh# *2y4tnFwh~9nh ~h;뗱֏}Ð"44444ӽ4D4I424'444OR5TFTOTTTTTTvTZ6[:zZ'Y!TG! ӽÄҐ!ʼGTîYZgkjj?T ~&1;kM;+FB0C37|H.6}OR5F2vA4!dD?t=W] ![`(r`bgng*xj$jk'b%ql ';>fA>nycrattak6)s)h*T)R(( '()i*U)'( )4ۭT٭ ڬ۬R۫sܫh٫ګۮUڮ'ۭiڭ ۮ4lXx_yC@uUgrm@ku@xz@|UHT7]T%3H}Y9.T&8{f1h0$b1)]4~iMkvGu 1oc 9g\0KtV 5dUz&.m6"&[7*z,@2sB5!aE@p>X[ ![])r]bdnd*xg$jh(_&n i <_?ZTc'i$li%c(`#Gz[2“`$ŌF=N č.8)zy=h€AEǚ4/9"ރ#v"kk$2ý$!2!"|.{4#}C{LhMmpW;{NXl2c!q*cLKyXUgg8jOa@{esRkCtZmNbsK[tNroVxhVnjYjp]v>#>>\zcrattak7)s)h*T*R)) '()i*U)'( )4ޝTܞ ܝݜRݛsݜhۜܜޞUܞ'ݝi۝ ݟ4iXz_vC@uUcso@hx@u|@~UIT6^T$4=TBTSTTTTTTuTZ6Y:xI}W9/R&8{d1f0$a1*[5~fNktHr 2o` :gZ1KtT!6bUw'.k6#&Y7*w,A2pA6!_EAm>ZY "[[)r[bbnb+xd%jf)]&l f <]?XTa'g$jg%a(^#Gy\2a$G=O .8)zy>hAEÙ4/9"ق#u"kkޔ$2$!2!"|.{4#}D{MhNmoX;{OYm2d!s*dMLyXUgh8jPaA{gsRkCt[lObrK[tOroWxhWniZjp^>;>Qbyߍcrattak8's'h)T)R() '''i)U)'' (4ߌTݍ ݌ދRފsފh܋݋ߌUݍ'ދi܌ ތ4hX|_uC@uUbsr@g{@t@UJT6^T$5>TDTTTTTTTTtTY6X:w kJ<-CC2?5:|D/9}KR7C>J}W9/R&9{c1e/$`0*[6~ePksIq 3o_ ;gY0MtS 6aUw(.k5$&Y6+v,B2pA7!^EBl=[X "[[*r[bana,xd&jf)]'k!f <]?WT`'g$ ig%`(^#Gy]2b$G=O /8)zx>hBE˜4/9"؁#t"kkܓ$2$!2!"|.{4#}E{NgOmoX;zOZn2e!t*eMLxYUgi8iQaAzhrTkDt\lPbqL[sPrnXxgXni[jo_y>":>8IwU_crattak9%rs%rh'qT'qR's's %s%s%ri'rU's'&s &s4wTy xwRwsvhxxxUy'wix x4hW}_uB@tUbrs@g}@t@U;UyTDxTZpYpSueR`:WpQڈQh# *2v4ueFnhv9jh~ qhu;tu旵uЏtz"d4k44u44ԕ4a4u446c4Dz424LR8TC=KT7^T$4>TDTUTTTTľTTrTX6V:u_kJM_!jykh`kxwkrKiltIhm\v {i#IhoEpo,sh*S\4<]XikJ;-DB3@5:|D/9}LR8C=K}W80R%:{d1f.$a/+[6~ePksJr4o` ;gY/MtS 7bUw).k4$&Y5+w*C2p@7!^CBm<\X #[[*r[bana ,xd&jf*]'l!f <]?XTa&g# jg%a(^"Gw]2b$G=O .8)zv>h}BEÖ4/9"#r"kkޑ#2#!2ľ!"|.{4#}E{NfOmmY;xPZo2e!}t*eMLwYUei8hQa~AyhpTkDt\jPbpL[rPrmXxfXng[jn_ߡ0>0>\J7crpain1r)sxh#Ty+Rx64 v.p2iU+'' 4˘*Tԡ5 ƥ<5R=sȉ6hғBŝDٍ#U-'؂.i߉8 ~$4Rx_Xf|@}}}UVn@hw@}y@wUfSzUoTzLrTSgY~fSe[RP:OpZوz]h# |*q2V4e[FNhN9ahY r RhQ;[X◮[ˏdX"j4f24v>4 44144 4#44(424\T9TU>JT?aT05ATETW TmToTTTTTM6K:^<`4{)z0En~Hp%,hOiiGg''e[4Sg6~f)zLrpfSzgwo,XcrXf|rRxS~khw}yVnZgtB_CdqXt\YdXgBujA[vcWkuAMvW!^dezdxedwqblyqhkzvy kwb#zaozp,a*T4qUbXaGkO4ԕ g}ԠAdlDbaL\^QXg&OZq+Gau-LJx4?T|6Zm9W[FMWWPGfUBArp:Gul4Km7Iaw?C_qD?hcY&`,l#qi^xvlq ^4RUwYQ{rtjwmlap}Zau_qHjg`Ɯ[ͳN!Ƹ6G T*YjZ7gf2kOjv9Tt pJ}gR)h@4{{; 1vS$rQ"t=.~{EHkOB>*o|22ggJDtg:-z<UR.x[&eO!\:2yg-!e]9wbTs0[v5!rw,b.n}6!x2j~CsA>6 t>H>Z)_~bcrpain2 sh!T"R07 1, i&U7'3 .4گTċ ˿ͱRǭsЧhξŻ簖U'߫iݽ 4bYp_cL@xUkj^@o_@zg@wUlIUT~QTcYSvR^:s~p=ÈV}hMٮ#f *h24vFjhw9thm y UhY;BT`׏dĐW"4穿4ȿ44ɠ4ٯ44!4@4 4A4Q4YC=TL+JTA`%T(.?TXT lTTTTTCTCTs6p:~<4)~0blnq^pzˡ%,aQiPYgpى'}'v4c6)~QplIgw,TUrcLrbYpOi|mo]jo_zgkj^RndTB\qY Dq$n;)k!2~q%Jk,E/op4g`3Ft^#0q!U4'.uE#&a=(=@2xP6!cK>sFWh[k%rlbsns&xv jv'%k)$}w^ >G>vcrpain3shT R-3 )'i!U1'* #4֭rTy ǽtȲoRīwsСhϵ÷|{U䷂'ࡅi߰ 4]bm_bN~@y}Ubz^@gd@tn@{UpDUTHTWYSmRs:hpQ}ӈbmh]#o *{24mFh9zh rhw;aowv̐t"444{44ǖ444/44:4D4WIm97 @$h24^)v]O$h]I>>HP|\OՊ4t| rrg[vcZ;p^6ff3el3m&i6v+`;x-i%~4[+R+sW%debWnoUc|pZ}lTuXlw`kqescN&X,^#zZxPJs`pPf ]4LU{FQt`sUw|cl]pSayOqY)xq)vk^sg~ Yf lSz2b2o!e!q{`T^SMYig{Xky 7tAi.lxr2v yqR?Lz2<~ bB?LL%aUZlxs}yŋ^VRiqy-‘%.rO"&_E'E?2tX5!`Q>pLWg[j##rjbqnq"$xtjt0#i2"{*u%5e#>E E>8{crpain4!sh T$R01 (*iU,'% 4ҤQTֳ\ Ǵ\ūUR£\sΗ]hҦiŬcSU\'ߓ]if ]4Wsl_^[v@{~UZ`@dj@ur@yUmK~U{TITU|YzSisRf:ZphjԈndhy# *2i4isFkhl9mhy uhv;z헓x؏zÐ|"{V4|m4x4H4S4k444$44/474WV9TM=ET?p#T*=;TbTvTzT{T T TTTV6X:p{tAOg̓F|H~^|YZ2x1y11r| mĜW22˸$hγPgTi`b[<\D?UH [_NKTaUGR[^UxϪ ˣ?y J!]W9OhIڐ[KVJ{cOɌ4 uygeߋyεOPfSM[[IZ`Gb&^Ik+UNm-]7q4O>tFBgK>WY7TWb4bUV+mpM0olG2gK/]wS+[qX)ccT&\,f#{fv\{Stkm\l ]4NUtNQsgo]w{gl^p{UasUqM?kd5h'kQ0egq.YZ7^Sn>WGd!]!i{h~\TS{SY^gx]kkv+xvD}iK]:^#xe7gyz q"REvPm47!Fkxwi!SRGHTGY{VZTg|mkljp7Tk vUP!.s^&_T#U;2uf2!a^;qYSh2[k5rl/bs/ns5xv1juBkC|=v9 >MU[8Da5XEk5tqKCbA[ErLxKnOjRW>F,>\gcrdeath1"XsQhBT$NR-P+E %V)[Fi8U$<'I 547TG MCRCs8hIN-U;'/i= )4L_Vn@u}UJt@Xx@kv@pUgbUgTz`vTigY^SyVRr:kpt܈}rh# *2v4yVFuhv9yh {h|;ۗ~ŏ"4%4<44-4@464J4J4 !4" 4(44OgGTGTVT7o#T'HCTQ T`TuTxTTTTTh6i:{~4PEDJ6H5AWA:=w98qA5cy&},#~x q4jU}sQ{}vxwwlmpiaynqHFh9xb.tkB@~Sd>iDL!i!k[SsY\gtkZ&pW0_^B^hHplR9qQyj-fY@|LMB}OgGGTV}`b,bS7{qN 1na$k`#mO0~rVJk^DP,orF4g_ZGt_M/qNUa.oh&]^"~i<2pr/!]j;nmWjEI#rmBbuCnuJ"xxFjvTkS }OvJ {GImS;JUk2a!q*a~GFTUf8Ka:dNk=tmWJbF[JrRxSnVj[%>X>&bcrdeath2(sh"T+R0* %,iU ' 4T RshU'i 4Rs_Q}@fU]n@a~@l@xUYsUTkpT}uYSRE~:]xp$Ȉ@h7#S m*Q2w~4FQ~h_~9`hU f :h>;&9GMԐ<"444444444 444AqDT@cTT@e!T>GBT<0 T=<TTT%T%T8T8Tlu6Zv:hNj5Ë͆x-~r)-NzƋ\;Au'mk}wt |~M26171H1*< M;^2Z2O$;ø(-$8{<,o?$u 0$u1-pR9{UH R?W^4IZt](^hJm&r|ysOj4Tٽ lϣgHդBNcxNeoSbhZ]k&[[t+U^{-WOu4MUB]{@`lJZaWURfUKLrpEOyl>Tv=VlwCRfqJMicy&z,s#kjqjh睏x 4UtQsۡrw|ۦlpayqIYzgCd<{kFRoglAsYNWhSpH}R^q!!㿄ssSzYgzk`9qmAjvMtqObE[;xr9g)yo&tq3iRDxF|2GBkRjBVgAY_H|RaL}AqD@cT}mo@qdJ{f-1t/${r=eH~~l^kv[lKo`NgjkVts`Ef5Uy@.y7&om9~T2yF!fwLp~e\9[`?r[4b^6ncAxbg;j8d.<`,?a2Tm3p5n1k*%h)(i-Gl2j$W=X B89zKhSEG/E"B84k%kB23!82%!+|7{<+}L{S\mi;W_v2m!}*nXYfUt8_aQq`kQtoeab\[\rcxhnhjo?>ZJ>Ŵ/Vcrdeath3~'ysxh#tT*uR,& ~({iwU' 4T RshU'i 4Wu_Sz|@aUct@e@j@qUVoUyTbkTpnY}SwR2v:Nqp}8{h)#H \*<2at4wF8uhDt9Q{h<{ W !zh#z;!~1}<א#~"444444r444 p444LT< TYT9#TM@TZ9T#T#TԻ;T:T`TaT\n6Io:UzsNjI};5p kk{wt |~=2(1*1:1/ IbX9{xj/a(~yl,dq7bR?{;q({jJ1i8$_9VI~lqkvnobobeg{gft^XeJUwR.sE&gH{d2zR!woWxyq^M[\MrbRbeVn^RxcVjbJ^ChRkQM3>>1(,Tcrdeath4%PsJh#LT)PR(_"b _$\KiNU`'^ S4T ߦRگsݱh޺U'i 4]\_Wub@\Uhb@f~@g@hUUiuUlT\dTeeYo{SrlR&m:Chpw4th!#@ M*-~2Oi4rlF'kh0i9Grh)q Kz qhp;yt"s/wӐt"44444474J4i4B4c4 v48T-TIT36TL9TU#TT;T߷=T?TΆTTQe6>g:Fo2>29$3-".p<'km?'rg .w|.q`6vv0kfR7p{U< C?FpT4g 6w!~;qhk zk'tPz "! 9h<m $*Yv4LP_]0^OhH_uBlK!wigOR4F bgG5MPtOVlVWe[Rd&ZMk+SLt-YF\4NEhDLiFU]QWQW[OPUQFOpIEWlDIXEOPwLPHqRKHciɜ&l˨,hȴ#aų^ĥbƚd_pú vƨ4qœUeQliwslwptamqJJec6ce8PkLKRgm=RYTQTSl=fSPh!խ!ϻjfƦПSk˜Yʫgoke:ApBJrCfi2|8(}8-}M+HB{dG1_-$T2OL~hskrlkeo_lg`ctXX^HUqJ.i7&]>u[2qB!eJ|shYR[VQr^Vb`ZnXUx]YjZGWBbNeOe?%c<(^7G2r$k=] ˾]8ʹEzRhhEa/Q"}йEk߷=k}2F!Ά2?!&|5{9';}G{Mem;U\2u!*yWZuU8laSkkPt{hybn[frjx}nuj&>p=hcrdeath5$-s%h&5T)5R&H"S A!<+i;UR'E @4ATS ^RRbsZhnn9UI'Ni_ >4f:_`r:@]zUpN@kz@g@dU\dRUeT^\|Tb\YgrSlcR%e:B`psw9oth!#? Fw*(v2F^4lcF!ah'^9Ejh"g Gs hh g;rlߗkۏ-oȐ k"14^4p44&4S44 4N464g4 r4%+T[T1T#jT4:T:TTTdTkTTTN\6<^:Afr|MxrMxwqlVwhR|{vV R{xq#}|o\|p\,}*4w<.Cy~c~IOm^4 w; y;+j(lxzkW>t,rA+CD4c8k;3c~*cBk,v#w/"t2?z=<|"S~onx/2!1#1-1$ GFw9z2:25$55v%$5mM<4j&?6q 8tH>o ?rHP-]=14R87G>5GI,RN&W]H(UX=pQ:lJ=KDwQHqXDcfŀ&kȎ,iɤ#bŪ^š`†f^pį tč4mvUbQlhwsluppajqN=4k-:n2"kRAgs9/YVH*So5ISED!{!ϓjeĔkShYǁgmkp7u?*r=Tj1^e)>h+xsFwy/q<)R8dz&s|H<*b7+B3fL!u%qZ{h}ؐШĚ}ګM7R[qɖy-ߣ;<`{ZS1Q.$G<Eg~dkmwfxoYgZptOmTYUhM.^2&QBo\2g7!\HngPm[MkrUpbXrnPmxUpjPWKUY\\]pF>q>S~]sdeath1.Gs&Nh1WT5LR1Q+_ T*J[i(eU"j'b q4T RshU'i 4asd___n@k{Uja@in@o~@vUdR}UTqPTYYSkR@c:][p&fDch1#P f*G2oh4kFGfhSh9^khJr b| /mh1n;v/rї>qȏHt0s"444444f4c4p4$w444)TT0TTGTET:TBTѬQTBTZT`TlY6XY:cmc6bm"V:\{r5ur7rM^Vq;DV0Hk%Zw!vwt#xdy|~t}G22131B1%4 L@}V2R2G$9,*!?\<;I?2L 6_3O}7a=L}RA_UI S?OW^2^O!VAv^T)L[.Lr'Rb,Xn2Rx1Wj=P7GGBMARa>X:>z2]death21Gvs%Nh2TT8JyR8Op3\u %Up0Jm\i(bU(g~'bz p4T R޶sh߹U'i 4j(_Z6@wUU~%@0@D@]UQLUsTSeT_xYSpR>e:c_{p.bZTaWh1d#Wa e*?2jo4pF;lhDo9eluh;v f|x phq; u!s5sFt}u"444444 g4g4sx4 r4%4y4pT eT*TwT TT߬jT֗sTҚTÌTTָTs^~6\^~:aqUQT ZZ?YW LR~h[PL!S|!k_#TR T#!%,#;/~h43, :|&kCP0 :(!}P~C9z:h2(}F<+y=m/2< +@$G7X4_G]E18hh-L^5&KZ9^Oar4ZX }Yge;HOnDpJl TgX&eS+iI-VP4]@e8hAaQWYYUPHpT=lY9Z?wWHqQ Mcb&j,zh#w^|VXy\N~m p4bUQQ\Twflhp`aVq`?J2SA*XkW EgG(eY^ QSQ0ahM!!֏~c`S[YՊg^kG!lV+m[6\O6J?,J;"Zx+=N&/fy7.qNx>\9>L0ndeath3=Chs-Jmh:NxTDDoRJIgDUl 4Q`@F`!Wsi.[}U5ar')^i jz4T Rٺsh۸U'i 4_D_RR@pfUpA@˃D@R@gUMgU~TR~T_YSpRHcr:w^pI[Iw[XhII#wX w*Hr2qp4pF9lh>p9}iyh9u }xy nthpz; p^ pn9puUppst"444444b4fm4q_4i40u4*yk4TTd&TyTEhT=!pTTTvTTHT;T^6m]:op_ALLFLALF <(ct2hf2eN$q0|W/^C7Fy/QN<AN?xAC xQCA=Q=AFRQFUxC N?N@30Py;+pqW4}RnBmfGM>GD<)9U14tbM=BdKqL\PR%ˍچ׃Ȋ}ʦRΫqy-ε<(Aҹeļn?FKq_fmj.;Xkbg47pZiYL>{T0uG^Jn*yk!XNVѴ!GTYZԷgkʺjkT;p@ JpQ<(bm0^%uE"vh*"u".7 {+z=}z=!p-^#v {)!d&! kdpEhyk( |}}5+{y5c1@u$;{.q~=^kGTC6>-I>Gdeath42lzs&th1yT9oR;vx5~ (v3rsi'U)' 4T ߽R׾shU'i 4{]_r_@nUd@d@l@xUsiUɇTs}zTqYSzRJN:\ipY,lJho5#T oq*XS2U4zF=XhGMYS8@"444444 44~44$44C!TNT=4TT|TL@TC-BTe̸T_T;TFT TݘTax6Ve:\pY"V(~|9r10VX[c;ZMZ6ks$wti{|~bjqkO2d81i91qH1j)z7 I:i`2wZ2J$6%)q#sqCRnB_xCWj{MbtEg|PUtHOA>_C%>{RF}death5S2csI*nhP1{TX5kRT?hJ@w B8iO:_=(~iD/U>;'75{ /,4\Tf pjRgsWhbmMUU'JiR >4t[_tO@oUwr@~@@UpzOUTa_TZvYmS^R`5:]Ppxv6h@#b pu*nP2Ro4^FT@hMO9hZhYJ ph \(hX,;ib*b;kG^-",414@464F4K404"4349%43=4%D4)iT3nT70@TKKTe T\+T9TT0TX`6ZJ:^c<]t4l)np0`8n`Mpx%ŋ,p>in&g{''^4Zv6m)a_ppzOg,;rtOrt[B|g~wrRtqrqt}mtj[hkjMz!{xvlhv #sojpr,{*|e4xin!;h k)P (! 9 h <m !$kr+4P]srhj)|sٵvO4ք µgg`tY!QG#E+&M.+W)-G'4VZN >W;"U|Dp|OlQ Hw? q=c~&䱆,ܷ#ۿwvҼvܿhӮ ं4tUgQаlزcwѨtlڢspka߬cqUjL<i?5kGgq8?YASsEGM#!疟!ڒմ{}ꍒSpYމg٫mku/=|Nx?FjwINoAN~KB{C5sK5%mE5(iE>GhK2fd$TU=Vl BQ8D[zXWhUOEBX/Bo"806Vk(ZkB21r!>2"}!Dv|Dr{CzBŀ<}9Zi{YthLmiE;e`dm|2sч!~c*lobćZphPUU8nVa\bsukkc{txdBbaJ[dRrlRxkBnoJjmEW>>!7fdeath6fGs\k6wCtb@J|c~_cn̲2ב1ט1г1޼ }¿22$ɶ٥Ԇ}Y<{@?8 Q5Nlt9o:wf@qbFc&,ޜ#ݥ꥿Ԧޮ֖ ⏻4뗯UꦫQӠڥwԗlܓp☢aᡠqwJ}faZZklCgWjYhSSbtt]!x!vɄ؞wS矰YugܜkPl]mzzo_|aKRQxfWLsAVy~>}q|QRohdkj\QT`~Npk]dVBoCSgFtMr~?7bE6nDLxG@jLSyDTRC}N4/>"wm9k-}k23!2%!H|G{DFDx}@[{Ufm`;c]y2k!r*a`U`Uy8ma\}vkftw^b\[argxdnhjbƘ)P>m>xځͥdeath7Q9sV*hd+TX9Ra?q5 b4W>eisU}%'r% 4T ۺRӼshU'i 4m_u@Utv@@ŋ@ĔUsUѷTqT{YߣSR:|poֈh# ʧ*24F‡hֈ9hȒ h;򗱑Ꮻϐ"4ط44444l4k44444?T>yT(kT&`}TZLTlET$WT)NT&,Tjl^O4 n֗gc൏*!!z({}&0|+1-%s4% ~|WrUup}l w|q tci&e,V#MR`CKS j4rUb~QJ㊃PwTlcpga]q=d-\k}g3YY{SDa%!!x㫄O[SeYڢgYk#U7YMeLl5g"\xHV+Fy-;qKARjSh]RK<5;71bU6BtHLrR%֚癚wk⯐tԥ}zRȥqĶy-<(߬AŮenRIkj;JgSE``ZhIc"9u_.VQ GpP=y}h|Vml[{Lj<1Y}@$hyKnfP~{hbkqYeFoj\SgaojtOfZViAUzxA.^H&IyU}U2oU!\enS`J[^bJrM]DbS\?neaEx_^?jhkB^mJ`g8Nd9!2O)N}$WmH{lM:m4;FL`2b!N*On^pK;UG8CarD\SkoXto1b5[x3n:j5<1??EA7T:%7(@EBcb>S%>(߶death8C8tsC*rhD.aTB;jRM=kT1c S,vL:wIkiJ[UW!]'Wm U ]4KT[ ^SRYsShedGUT'Oi] K4m^_vf@mUnQ@|\@c@gUzjUcTyfT_YŦ^S‘SR:p҈h# ĩ*Ĥ2Ԍ4‘SFϊhۋ9hӔ ʏhѐ;ŔēΏ̕":4T4h434G4a4Ba4Qw4gt4IH4`E4o Z4DxTKrT(UT6XjT O3T_*TheT_ST6PTHtTrTcT6:ő<ő4ȧ~)Ǩ0wnxp%|,yitg͗'{'‘S4_6Ŧ^)yfpzjggc,s~rvfrm^i~{z||\cnQk}eL`XwWtqcn[^Pk:[~@k`?MrE!{e[xz^DlShevW h}G#2o=p@,4*4%*/$W(zU1vp8{l6,w%q(zckp&rx,o#e^~asaV|q vr4kdU[iQaZvwk|lnppgha]kq=H_:\k/g5^}Y+SBbw7!n!whhz`SdlYggdtk+\1bpDgmRfJ_8[xWI|?Pe[WhrLbbQcn\ixXfj[sUqWoKj@k6Pk[2L]!r2Ht!\F|YA{]HaP_S}he^#{e.QmJ;^e!v*2m;!p*b)YDM2RUh8TaF%q"_ kR8toEF bK[SrWxJnRjL];o>6>ZX &edeath9*5s")h/T%9R.8). 0&23i"U '& 44T9 IEREs4h:I U%'!i% 4x_{@Uv}@@@zUpUêpTn{TvmYʙgSą^Rz:vp|܈|hϨ# ٛ*畼2怉4ą^F|h~9ǃh ͑ h;ۗƏو"4444 44 44)444% 4NjTZWT*dTC=T 0xT@uTMTpITdqTyT{TjTt6t:ۄ<Ԅ4י)ޚ0lnmpի%̫,niigĽ''ą^4vm6ʙg)n{ppgzêp,zr{rx~v}oyk|t~ucpg[dk_vMpw!}xflchvvp }s#WoQpZ,}`*vK4~NS^PVSNȐFNxP7=8y"DqOR1OLCK-<7.ϊ:bEB+ELF9%yrusz~w}ge^uTR{Rq[yX-Vj[?ar:]x4ln5cj9p<@u?9bA[I`InTCo%Hs(DfIaNdMnG:>>V0>[ۼ%Udeath109.s6#h.%T30R<0<% E#B.5i.U:'B 54%T) 52RU'&i* 4g_q{@Ud@w@y@pUpUgTlTpuYbSy`R}:up∥hΧ# ϒ*⒳2y4y`F}h|9h h;֗҈"4{&4y'4444'4?4P4 424J4oT~yTFTffT']TiTWȶT@T͵TITTTq6t:Ѐ<}4ʎz)Ւ0onmp̡%z,piog''y`4pu6b)lppgpg,y|rq{rgqwydt\ZqtoiV\m[q}kkSuMft!y{xvzklghyvn ~rr#wZoRpW,r_*hK4mRuTicc&g,r#xsiۄ}y h4aUlQك~w}lqpnatqPmLNCMkGlg7OY;nS?PCo!R!`{nOSjY[gwk2P-Rښ\1eWnV1߄P?jE0k'g-2Z Y&5T2G86J!O4y'R?!,GT+YZ>g{&kQjPqTǘ ǒegEQb`hJzx"@o}.?y` 9lh=Fg}Yfxzi-(g H~!F!bek2^']ffkg~z]yscqs|qu~}o~y}NwYWkY{*fR11vO$CtOMgO~dj`kcqOOh@oO_WgZlvtDdn4fPUEu@.:zW&:qn]zO2M]!Pyvo{j;aZ[AcSr3^Xb1]On?bJx7_IjkOm_[2em!TN*WfYłK|;_UAL85ba8zTZBgkHtdu,`b0g[6fr8]x/Wn4Vj6T<3a??QC]@j8mTAY%>b(FXJ_GhBiGb>¹~>B>l'vdeath114s(h|%T{2R3' *5iU' 4!T" ,+R5s0h16U'$i& 4{_@uUwv@m@a@WUUPTw}TxiYOSSRۍ:‚pțhؼ#³ Ϟn*䢎2Ղo4SF틘h9h Řy h;閞ט"4'4%444Ð44 4 4444MTSzT-T8eT`To|T9T{9To`TaTǠTwT||6ǁ:Ћ{<Ňl4Ș`)Ԟr0n{pίo%],igp'b'S4xi6O)w}pgWP,rr{omawvpqqyst|spqoa[_koaM_!zrxr^lZhjvZ j^#NoFpF,N*}>4~GF<~G.mECmMcmMIr>4̠;У;ɑœ͢dž̇rɈґ;kwt¹у|~ȩűŹ֬2Ԭ1԰1մ1ٻȕ ȓ֣~2Ҳ|2~$ԏѤϢͳҾ˽愧  jc9h@hNTgJ%kO(hBk=nBnKGH~>H>'"=m´@death12ws|h{TxyR~{ֈ} Յ|釚i銂U⑆'Ꮭ 47gT@] F_?eRBvs:hExHp/mU7h'3i<| ,|4X_`}@]wUL@O@P@Q|UczuUPTT`NTY3YP7SM+R5:z7psqhw#yu p:*72r 4M+Fh9uDh rF h;9*,@"!4/4;4m4*V49h444響44z4秚4FT,:T 5^T(T @T 2Ts?TnT\.TfxTITETm.62:x'qT{ jv,9y|0;w}F,:},Oi8Hn{;W+1.\B$1W\?Ob~Vi_kSpDOa)oPXMgKh}tDXlpwQ}o@K>[@NJrBM1bES1nDTJxFU>j=YM8RMA^;@X(<;P(?7L;T2VE6\E8^87[+%4U+(2S8G2<2A.$AC=L1 FN8H3zELT/XB"BnES+k\.kE2[g!I2fx!`$|T!{Z'c9n}s?D{M/m.8;;DRC2P_!K&*FHCw8b4/U@836a.XK==Gk:ntQo.9b32[5$r1x*1n,#j,9<2D?.#6<%:;T4;%8C(6-;&>-=;GOe>r#>c>7GEx death13+s'h8T5R:A .{.+iUTkgt,/Mr4Nr'g"iT7;V)%=aa1}a8^rt-}r8r=aQV`[ROqkQ`MRq!/}{9g{x9{S^zlV^hBgvV BSz#hgyopgpp,hy*}}o4q^pr}ykqt3aDL:J!\xS n yq;RtRUD]"!B@!3 kt ; k0-4'+%+|} 4 }E>6B)<{{381iI8$VA<R)C~\0ckq;d,Sof QgC9[tL-Hp0rt 9by#?ng(Dxr'Djf6D_2;x5F/<v?>|;9%w92(l:2GO2O$;=w> '8$z7h9E*/u+"&k k(2u!2!]|h${d'X]}Tq:{k>GmM;{DsIup2ch!g*z[TYjKMUb8RarGzmv_k[UtRoGbC[FrMxNnPjS>0g>O{fNl0death14]*s_'hf9Tb5RW:VB N-S-_+ie=UWC'Q3 \94ÄjTɖq rnRvsxwhƌ}z{kU܉q'tviڂ{ us4K<62?,6 4N%9-R/6R7NUYǹ cô?\B[VLr/3UDC.oQ;&WE8uJV2i[K!OPLYNek 0[g#6rt/bz 4nm&4}:.%w8)(n9*GK2O$:=yA (8z)z">."d>~sdeath15sh$T&R.1 $i"U,' 4q{T΂ }{Rysjh|fUr'bio \4=zx_=b@aUJn@Wy@j@}UIPUT`ITyPY~S_RQo:`]p'|҈Si-SgmŰ'u'_4yP6~)`IpIPg},.gr=br=zx+_GWyjJn3HuR?SEqct;dEcHRYjR[ZcckYRMZc!=mE{mxEm[qkl^qhM{v^ M[k#m{kot{pt,mk*~a4uqaukte!isGP{T{oYCZn~gMkxjZLT- =<^#>mo)1U&)EI$7h;?"F,.PI& W1$=C5+zs-a" 2C!4@!' k]m&k<-@(*2.| * }? !}GH1D5:{q3,1fK+$WI4S3>~^@YkqHW{3Hob*IgIIRtM7@i32UI>.jU5&QL6sVQ2hdD!M^H[aa`%2[]+8ri"0bp%5nd.Ej;/bJ"pkP7kA+kt#2ZI!p2NC!CO|`Q{^TFV,K}3W}S{zXFm>;QWze2m]!_*SbLxAEUZ8Ha|<|bySkfGtZa;b@[GrJx>nEj?<;?JPLATC%@(JOLEG9>">M>cWڜdeath16{3s*h8T;R|CE 5w9'i5U?'2 -4˃Tѓ Rs|hǍwU߄'si׀ m4Jj_Gsv@fUXa@bo@q@UPaUTd[T{aYSqRH:\np"ɈTCET) T'Tkf6Ym:m<{z4)t0FenV_pr%,Cdi0egk֮'wȝ'q4{a6)d[pPag,7xrGsvrJj5{dΌOŀboqXa=yEB1R13I Uܝ>ӎg2e2^$F-7#۱+!0y<%d?k &n$#hR.|U[ f?[˫S41Qd]Jh2nt fopoOϛ4r _ągS\-ca/`W8\T@YZ&?\c+5`g-@Ji40Qo"Ue$RU4JOWBFYU6>gp,Ckl$Ee%BZw/>Wq7<]c~a&j,{q#snpcv^gsccuy o4{_UlYQcs`hwkvlqopnfafcq+RgOHR9{k/C`g[@rY8JXSYPx6Z^!v!osxgpSsaYzgjkkY2maGj\\tNYEBK0|xT:]yr#yq~BsRv`a\`7TFGVC!nSw°!{ƦxGaTqYTZg^kjT8T& 7?9C-zA -E! <]!3V! J.k;3?%k)u=e,9X3|n)}| p"}Y_,TN6{p:1pV$gX)aE5~\PJkoWIz@;ob8:gJY>tPD-l=!UT/.n`"&VX!sdB2kp1!Pl3ZrO`5%[c:+re. bn-"nl9.xp2)jqE+dG'z;%t4kB2WB!) 2CE!_V|hL{gP`XOb}QeD{J-m#; >RT>Г5Mdeath17^!sihr'Tc)R^3i6 _$X'vi~&Uw1'o# 4iT{ āvRqsahu}[Ui'Vie P4Vrq_QW}@jxUek@lz@x@UVCUTg;T|BYwSTR?e:YQptňTG~UT;W)T*SYT|~iWlzxekG~BlN:QFh`t>cF`BNQ`H[YXYkQHMYY!ClKsixKi]hblqhhcsvq c]b#ms\osp,m\*xM4phPuZCdlAcdAI[4*;-;8gNj/hËʆ`(`r(1IZNjZp;:SHkfwt v |~P25181K1+B XϤCĒ`2`2Y$E߰0Ӝ4վ"Ͱ%2^<(F?N (eQ(i(JR2aUZڶ dӵ?ZG~U}q:Ci)M{n)1z*,$x-;oG~Z/Ukm5VyLo`IgK8GtQ9o1U,@.s90&Z1-sBO2nN=!SK<XVWc8[i>rc2bj2nq =xq7jy9n:z0o)"9 F5k17k= 2Q6!&2@8!SM|ZF{YIWNBY}IZvD{tI2m);?FvW2iP!M*|B[@n21UG86ap+xSrDk];tXW&b,[4r5x(n/j)<&?4<9.T.%-(6<:3G"=>6>6cO>4=death18/s%h T+R4. 48iU$') 4qYT[ ][R}esohh}kfd[Uo^'cginj Yc4Lv_M@wUWf@jk@r@{UYqUTphTiYSqR:~p[؈ah# *2~4qFh9h h;񗏣ߏː"Dh4Pz4cy4KS4_Q4kc444*444(4U9TINTAv&T'RTL9TH'ThST`\T7QTG@T.T5Ts6~:<4)0iznmpp%,UxiM~gԛ'É'q4i6)phpYqg{,FrMrLvE~́eȀjkrWfODI?GC\t?YLRK@RH[U[k\σ;|Fپ~TSW2x1z11v |ݓ_ّ22$yYt[laPVKBEVMUhZp>"Na9.l`? ]Q<=FZAF`RzH'-&K6 Nn3!Av&!8wWkNCL9'RkZDZvPQoX|RQ}U9IN}maMaWX{k:91xN:$tTIgIV~S_\keb`oH\oWDUgGdKtMLBj>AU|SO.r[;&[W5miX2mnD!To?U~Y]>F[b@Lr]7Abc1Cni:Nxi3Ijr@JiIHt4Ck2:<q<6%jB4(jI9Gn2y$`=n& M&8S1ze"h]EP'/\5",5CCk7Qk'2P5!.2G@!aH|_>{c@eC`\}hSp*{u-nmk;u{ y82m7!!*r V4[p U8gaUv6e/kP1taJebf[nruxlnsjoD4E>8>D^贯>death19:s>h9T7R@G MCEiBUN'R Q4.TD D7R6s-hDD)U:'*i; +4yZ~_I@miUrnq@yp@e@WUAtUETC_TPHY|9Sb2Rf:Xxpcˈ[h# i*ň2iY4b2Fnhq9fwhz wq xhz;؀{wu~"4%4B4464K4C4W4i4A4Tt4h4\c4T`fVTP?+TXCqTD hTALT+`T2@T#TVTTTTc6W~:mm.z%(&j",~6N2y84!h98pJXp E[uJro?bs?ny IxxDj~?x?}7u0$hB!E7./6H"-k#k!2$Q!2V!6B|/C{1N3S2@}+`@8{CIKmR;H.LBo,2kD!e!*^=`NTGQ#Ua 8VaO2lak\;tr?MbI[J!rP!xRnSjVںk>=,:death20.DH53Hz+:Z(GZ,Xx1SSgPO$L8a525i5(+555h _i1B~)J|V,G]VDIvbKjYψoWbˋt l:qˈ>ÔzLю)Ƣ+NLhL ™- ϊ0΂1U{JEwSE3Ulios?mbo|v"w }?yUsiw yAsau}"| 6mg0cT(14Vy f!= dRi ; ~,7iwpPrNyH~B{`td l0x;{rgrzdmpZ?MR\RY]LUDOG&&k$^V {Ymqz }`_gllm H"UEQRYPD`bn"<-|5)^L>q%8DI!0UHZwj. Cg=;&&Q>}mv43=_vjxJr}mm[ +QGjBV(.Ya5[Bq\:;y!i`KK2y[NibmoA V"-N"Q'X<[mh_}3}A|}]hw"lv&u=XVn1b/ISw$[o.xjv5 Lg]!ik:W]_>S]qH _'O$gP vNX>|Dl=}@/yTq.nZJ@rcr)3ZL.x0}NZ ;T(PC#s95 8{0#r: s7s"u}Yg(OC+@Ts(R;e+;JOs<_~L{!}mn{i fk;gZ3 _%Sd~ SsyXtz^ LHKD_CY{G|KS2RAD6EH'65|2Th@\zB<7.7A|x%[zih /*(+6fX1f\3`T9TQ2Z8aQAj\D`JLWxR7IeXLYTn4CnG+_H_<kl\cQA\,\YSwYo~l;efXkhwy\9M9JCKPpPTgR={TJrV3O-YGSU`KODI;;U1P-#W?MSIHND=M7/'>x( >q>Xscene|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:F|JoDo:|4TB%;(|EsBs;|8G'>x( >q>Xrhino1|s|h"sT"vR-|3| ""|i$tU1|'$ "|4sT| |vR|s|hۆۂtU|'|iۄ |4>`_OI@h~U9~~@>@O@hUh@UTIT`YS~Rg:^pYXۈbXhY#b *2~4~Fvh~9rh zh~;z~~~ߏ~ΐ"u44ے4k4u44u44"4"k4@u4@4>XT>3TlkTl T8TVT>T>TlTlTTT^6\:~<~4)0{EnGp{%,d`4^H4>O9~~-~D^c:~dAZst7~tAsDcVQb[XIrkVbMXr!9~|Be|xB|YZzl^ZhLev^ LYz#leyouepu,ly*~~o4tZpu~yه@>r)Z ~^ċ~;sKËZ+k78wVt~:GՃ&^|~~Fe=o9~r2a1_1h1RU @)2s2Z$7:&F=UG~5~9,vh!~;~<4vm(~җ, 4$k$4L$]L hL@-$L-LۃOkۤ4L Lg-ۤLF6@6~F6wR6w&X6~+R6-`"~4V"B"8"~B"rWV"rUX~pRlF@~wFwqRwcRw&X~,R#F@~FwBۊ8~Vۊ `~4VrUBrQFɆ@~wRɆlX~pRwaFwqL""~kL~g"vYL"vS1~L1~!~!ۇLۇL~vSLvY~gL~k} v}"n}m@@z>-Eh-/he\"xO.h`/ zM-=x<e/zV-Q fe!lk!f'k:8l kFQROR<|F:}>X>3}ZT1Z:1{M@1sc>$cV;c8;~f/`kw$z-=h/ x8ezh/hz-Ex/e"fklk2f!2l!F|R{RF>}>Z1{Z1s>m@;c;c;we2f`!T*sMPY\F|?UT8sMa\Fwej]kPYtXp;b|8[s;rsBxBn|EjD<:F|JoDo:|4TB%;(|EsBs;|8G_B>x>>L=>%>x>UU>v)>_B>v)> h/>v)> 9>x>>L=>_B>L=>>L=>{ u?x>x?L=>y?x>x?v)> { u?v)> r?v)>r?x>_Bs?L=>{ u?L=>x?L=>_B>v)> UU>v)>_B>ۥ= h/>v)> { u?v)> x?v)> /u?ۥ= r?v)>>x> >x>8>L=>>L=> >L=>^>x>9>v)>>v)>>v)>>x>l?x>h/i?x>j?L=>l?L=>ro?L=>p?x>Kp?v)>l?v)>i?v)>h/i?x>>ۥ=>v)>>v)>9>v)>UUm?ۥ=i?v)>l?v)>Kp?v)>=$>!%<߮>#< ъ>$=x>&q= ъ>% %=߮>"Lh/=$> %=?q=R?=~?I?(k>?)&w>'#?'^>'#?.r>I?-B{>?+B{> C?,p>I?(k> C?*k>?)>iM>1h/>>/_B>?0{ >>3>6>;>=?>:>H=6>H=7h/>'c>2h/>>/qd?iM>4 ]?>5/e??0h?>/h?'c>2_Bc?H=7K`?H=<K`?=?>:UU]?6>; ]?>5r>ܥ=8>H=7>H=68>=9>=?>:8>=9>H=6r_?=9K`?=?>:K`?H=<9[?ܥ=8_Bc?H=79[?ܥ=8K`?H=<DZ=Փ1?=DZ=$?> =R?? =dՓ1?A =d$?B#?.5?C#??DUU?s ?EUU?@?F?.5?GUU?@?FUU?s ?E??H^> ?K>Փ1?IK>Փ1?J> ?L>as>M&>as>Nn?{2>?Ov?{2>?P9{?V?Q^j?V?Rro?>S^j?V?R9{?V?Q8v?>T UU>Փq>Wk>as>Uk>]j>VV>x>[8n>=?>_B[>SOF>8n>>rg> >z>H=p>2~;=UU>ܥ=ck>as>UUU>Փq>WUU>as>XUU>/>c8n>>d_B[>R>fX>w>\V>x>[ UU>as>XUU>Փq>W>as>Y >]j>Z>x>]>=?>8>SOF>>>K> >Ў>H=9>2~;=UU>ܥ=cLh>w>^>as>Y>x>]&> >a%>z>b8>R>i>as>Y{ M>z>_ E> >`X>w>\_B[>R>fQ>>gX>w>\ E> >`V>x>[>>0>_B[>SOF>LhO>H=rg> >p>2~;=UU>/>cUU>as>X>as>Y9>>e%>z>bǡ>>h8>R>i86?$Z>k:?Za>l{ 5?>j^:?>m_B3?+l>9?A>2?SOF>8?~T>/5?=:?d=%9K?~T>J?A>R?SOF>P?+l>/U?0>S? >a&O?>nI?>oh/I?Za>pN?$Z>qP?>hR?z>bS? >aP?+l>I?>o:?Za>lB?H?r^:?>mB?΁>sB?L=>I?>oJ?A>P?+l>I?>oB?΁>sB?H?rh/I?Za>p ?$Z>v?΁?t?H?u^? ?b ?΁?yq$?΁?|"?$Z>x8&?/>}&?>"?R>"?'c>?$Z>v?H?u?$Z>w?>~_B?> ?/>{&?΁?z?΁?t"?$Z>x?$Z>w?H?u ?΁?y?>~?$Z>w"?$Z>x&?>&?[>?[>_B?[>_B?>B{?R> ?/>{_B?>B{?'c>B{?'c>_B?>_B?[>"?'c>&?[>&?> ڋ=R>О=]j>О=>=]j>=>h/>> >:> >R>>/>}О=]j>ڋ=R>ڋ='c>h/>]j> >'c> >R>h/>>=]j>ڋ=:>=>=E+>=?UU=SO?^=/>{ڋ=R>О=>=>=E+>=> >:>=? >SO?=? >:>>/>}>΁?|= ?b=?_B{=΁?z^=/>{UU=SO?= ?b8n>>z>H=>H=UU>ܥ=cUU>H=d>H={ 5?>j_B3?z>_q4?>g86?$Z>k{ 5?>j_B3?+l>B{1? >`_B3?z>_^:?>mB?L=>9?A>B?[>8?~T>:?d=k>]j>V8n>=?>UU>SOF>UU>Փq>W_B3?+l>2?SOF>&/?0>/5?=3?H=%`_B3?+l>&/?0>:?d=B?[>B?d=r??.u=%H=>>>H=UU>ܥ=cK> >9>2~;=>H=8>SOF>8>R>i9>>e>as>Y >]j>ZUU>Փq>WUU>SOF>>=?>>x>]8>SOF>_B>0>&> >aB?[>B?L=>J?A>>H=_B>0>8>SOF>rO?=/U?0>B{Q?H=I?2~;=H?VX=I?d=9K?~T>R?SOF>/U?0>/E?.u=I?d=H?VX=B?ܥ=ck>?)B{>?+^>'#?.r>I?-p>I?(&w>'#?'k>i ?k>SO?>i ?>?k>?k>SO?>SO?>i ?B{A?SO?:?SO?^:?i ?@?i ?@?i ?^:?i ?:??B{A??>SO?>i ?>i ?>SO?^J?SO?qD?SO?I?i ?C?i ?^J??qD??>i ?>?>?>i ?V?>%\?߮>LhW?΁>R?R>B{Q?$Z>X?/>%\?߮>LhW?΁>S?K>R?R>Ю>>Ю>΁>K>߮>>/>>$Z>UU>R>Ю>΁>&>K>Ю>΁>UU>R>h/Y?+l>h/Y?SOF>X?6>{ U?as>LhW?>%\?W؜>h/Y?SOF>X?6>{ U?+l>{ U?as>9>+l>>6>^>SOF>K>W؜>Ю>>_B>as>>6>>+l>>6>_B>as>h/Y?s ={ U?=LhW?H=V? >Z?(7>\?={ U?=LhW?H=/U?h>V? >9>s =Ю>H=>=B{>= >(7>Ю> >Ю>H=_B>h>Ю>H=Ю> >B{)>V?B{)>@?%>V?2>$Z>9C>E+,?B{)>@?)?V?^*?@?0?E+,?,?$Z>{ %?V?^*?@?>?UU>?>{2>?/>:(? >>UU>?\??V?:(?UU]?{2>?b??Z?>V?:(? 0?SO?2?R?2?p>/5?R?/5?p>Lh7?SO?9?SO?/5?R?Lh7?~?2?R?2?~?r/?SO?9?SO?Lh7?O>/5?p>2?O>2?p>r/?SO?0?SO?2?R? rg>SO?`>SO?X>p>{ M>R?{ M>p> E>SO?q<>SO?{ M>R?KH>~?X>R?/]>~?rg>SO?rg>SO?X>p>/]>O>{ M>p>KH>O>q<>SO?`>SO?rg>SO?X>R?{ M>R? ڛ>SO?Lh>p>Lh>R?UU>p>>SO?q>SO? UU>R? &>~?Lh>R?{ >~?r>SO? UU>R? Lh>R?>SO?&>O> q>SO? UU>p>{ >O> { >O> UU>p>Lh>p>r>SO? r>SO? Lh>p>ڛ>SO?Lh>R?R?p>S?SO?8V?SO? S?O> rO?p>R?R?S?SO?S?O> N?O> rO?p>9K?SO? UUM?SO?rO?R?rO?p>R?R?rO?R?9K?SO? N?~?R?R?R?R?N?~?S?~?8V?SO? S?SO?UU}?AU?&o?AU?ro?as`?|?as`?|?as`?ro?as`?&o?vi?UU}?vi?>vi?Lh>vi?Lh>as`?>as`?>as`?Lh>as`?Lh>AU?>AU?&?AU?B{?AU? r?as`??as`?!&?vi?"B{?vi?#_B{=vi?"/;vi?#_B{=as`?$/;as`?%_B{=AU?/;AU? >vi?&>Ht?'>vi?(>K}?/>n?0>n?6>6R?7> C?2>6R?1> C?,>AU?)>L?*>vi?&>AU?+>AU?)>vi?&>vi?(>6R?1Kp?L?*h? C?,Kp?AU?+Lhg?6R?-Lhg?n?._Bc?n?4_Bc?K}?5Kp?vi?&Kp?AU?+Lhg?n?.h?K}?/Kp?Ht?'>6R?1>vi?(>n?0>6R?7h? C?,_Bc? C?2_Bc?6R?3Lhg?6R?-Lhg?6R?-_Bc?6R?3_Bc?n?4_Bc?K}?5h?K}?/Lhg?n?.>n?6>K}?/>K}?5> C?2>n?4>6R?3> C?2>K}?5Kh=vi?8Kh=Ht?9Kh=vi?:Kh=AU?;Kh=L?<Kh=AU?=_B=6R?C_B=n?B_B=K}?AKh=Ht?9?6R?>Lh? C???AU?;?n?@%?n?F%?6R?DLh? C???L?<?AU?;Lh? C???n?@?AU?;?vi?:Lh?K}?A%?K}?G%?n?F?vi?:?Ht?9Lh?K}?AKh=AU?=_B= C??_B=6R?Ch/= C?Eh/=6R?Ih/=n?H_B=n?B_B=K}?AKh=AU?=Kh=L?<_B= C??%?6R?D%? C?ELh? C??_B=K}?Ah/=n?Hh/=K}?Gh/= C?Eh/=n?Fh/=6R?D_B=n?B_B=6R?Ch/=6R?I_Bc?I?JUUM?I?KL?S?Lb?S?Mb?S?ML?S?LL?Dk?Nb?Dk?Ob?Dk?OL?Dk?NUUM?v?P_Bc?v?Q>v?Q>v?P>Dk?R>Dk?S>Dk?S>Dk?R>S?T>S?U>S?U>S?T>I?K>I?J2?I?W%?I?XB{1?S?V9?S?YB{1?Dk?Z9?Dk?[2?v?\%?v?]KH>v?\h/=v?]KH>Dk?^h/=Dk?_KH>S?`h/=S?aKH>I?Wh/=I?X^? ?b?΁?t&?΁?z= ?bUU=SO?=?B?ܥ=cH?VX=I?2~;==s =g/=2~;=eh/>=fh/>>=>lUU=>jUU=H=m8=VX=h/=2~;=e8=SOF>kUU==?>iUU=>jUUU=iM>qUUU= >p{ o{ <ۥ=u8=SOF>kUU=>j=>l/=iM>UU=.u=n8=VX=hUU=H=mUUU=ܥ=s{ <'c>r{ oUUU=iM>qUUU=H=t{ <ۥ=uUUU=ܥ=sUU=H=mUUU= >p{ <ۥ=uUUU=ܥ=s{ <ۥ=u{ <9wUU ?iM>q?=?>i?>x?H=y ?H=z?o=|?0>{UU ?iM>q ?H=z?H=y?.u=n^?H=~?VX=h ?ۥ=&?2~;=eK ?=f ?H=z?.u=nUU ?ܥ=s?o=|?0>{Lh?'c>rUU ?iM>qUU ?ܥ=sLh?9}?=?>i?SOF>k ?v)> ?ۥ=^?H=~?>x?=?>ih/>>/=iM>=>l?SOF>k&?iM> ?v)>K ?> ?ۥ=K ?=fUU=>jUUU= >pUU=H=m?H=y?>x^?H=~ q=]*?=?Lh/=?UUU=?_B{=?О=?r=]*?О=Փ1?UUU=A?r=p:?<Փ1?=?q=]*?UUU=A?q=p:? ?/$??Փ1? ?p:??p:?K?/$?UU ?????Փ1?r=]*?UUU=A?q=]*?Lh/=?_B{=? ?p:?UU ?A??p:?K?/$??p:???UU ???p:??Փ1??? 8?]*?_B3?]*?/5?-?86?Za3?8?]*?9?E+,?8?'#?9??86?$?_B3?'#?_B3?]*?8?]*?8?'#?/5??86?$?2??2?E+,?_B3?]*?/5??8?'#?86?$?2?E+,?86?Za3?_B3?]*?^b>'#?rg>E+,?^b>]*?X>Za3?X>-?LhO>]*?^b>]*?LhO>'#?^b>'#?X>?X>$?LhO>'#?J>?J>E+,?rg>?rg>E+,?^b>'#?X>$?J>E+,?LhO>'#?LhO>]*?X>Za3?>wg?r>e? >v?_B>Ht?&w>vi?&w>W\?>W\?r>W\?r>e?&w>W\?&w>6R?_B>9P?>W\? _B>Ht?&w>zr?&w>vi?d>(w?d>Dk?{ M>m?d> [?{ M>oW?d>+lN?{ M>I?{ M>m?d>(w?{ M>K}?8? [? =?6R?h/9?+lN?2?AU?2?n?8?Dk?UU=?vi?UU=?W\? =?6R?8?Dk? =?zr?UU=?vi?/E?Dk?UU=?W\?/E?L=Y? =?6R?/E?9P?h/9?(w? =?zr?8?Dk?2?n?_B3?K}?_B3?I?2?AU?h/9?+lN?d>+lN?&w>6R?&w>W\?d> [? =?zr?/E?Ht?/E?Dk?h/I?m?/E?L=Y?h/I?oW?/E?9P?J?+lN? >+lN?r>W\?>W\?_B>9P?h/I?m?/E?Ht?J?v?9K?e?9K?W\?h/I?oW?d> [?&w>W\?&w>vi?d>Dk?9K?W\?J?+lN?h/I?oW?2>x>h/A> ъ>:>l>/>l>^">x>+>SOF>h/A> ъ>h/A> ъ> E>>:>l>+>>/>l>Lh>>Lh>6>,?W؜>.?>B{1?>K0? ъ>*?SOF>&?W؜>Lh'?>.?>+>>/>>Lh>>*?>.?>Lh'?>+>> E>>:>>^">x>/>l>Lh>6>+>SOF>Lh'?>&?W؜>#?6>#?>#?6>&?W؜>*?SOF> >-?8>]*?&>]*?8>'#?&>'#?>?>$?8>'#?ڛ>?ڛ>E+,?&>'#?>?>E+,?&>]*?>$?>?&>'#?ڛ>E+,?8>'#?8>]*?>Za3?>Za3?8>]*?>-?&>]*?>E+,?_BS?'#?_BS?]*?{ U?E+,?{ U??B{Q?$?P??N?'#?_BS?]*?N?'#?P??B{Q?$? M?? M?E+,?N?]*?_BS?]*?P?-?N?]*?B{Q?Za3?_BS?]*?N?]*? M?E+,?B{Q?Za3?N?]*?B{Q?Za3?{ U?E+,?_BS?]*?gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/000077500000000000000000000000001411575327000211305ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.directory000066400000000000000000000000411411575327000231300ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.icon.png000066400000000000000000000101641411575327000226460ustar00rootroot00000000000000PNG  IHDR@@iq;IDATxݛypTǝ?ތFBB,mc;8@0&Κ8Mu]g'l*\Ve3s@خ81`; B @$tߚͼ׽hF |xۿ\e^5hC]PJ:ܷdYȸ ӺҤy݁%_3o/5Ȋocg-!ҾuaC/8-@A0ޜɆZ^T?k&{6kL *"9j1Ba4,ȆYȫZpU7fFW19뷢k{ ʏFѳ+.v1rR|\zx-;%\V,Hfp+Pwl`ƃ;1eTiu{w.cjKq?s/|DxtSCFG-err@8~{3+υ̇vH^7ʣ(~F=ޞ5q|S~ (^"20B<iGvSomԵZ1`aٜՁS ߵa8eapj0ho8]H;YM_ā/a1#yLL 6AOu!@A o[@xbUO&[GUQ2Upm@5=cL?l?}on_wym_^ Hиkr[kRk5V&:Z '耥 *)g:ZYʠ (&CDdJ%G,`).^ЮCC{5dѮTW>2hRI .Z.{3%PIg!+L:d)K$Evڽ Q2ȑT3)PLr%T@^7` -1M4hf߀y@?V)/yZB,dh`.,: ` mwrl݌1}*Y(RnȒJդ`Smz׀h ɉ)H BHf z묡hHy1AKIO:Cq Tu|v3-<hjbX;4PmL 9/uV0,nt()g'7-^ȫ5a| #qPǾ3 1c>ޜ"t(HxI![<<g`hCg_ux<^"I30f lt%&-- vPq۽}36!/]foaCZ|!zj+pLXdx?~dw`]_;Y{ۻ%~Oq/ꮑD*^ٷYAG?yL0*6HXm6%a "6AG*)̷xI8]}8venc3N/X$`sRbJVy"uF/:^d\RQKڈWYnC± 1BKp$&f/kG*􏬥-KːڄImLYiv|7p$떬eJAy؁J0#+ZG  8< y37C%EPHZ E:z:]y w4Xj3h;IT}'zS۰gQCt-KQ8glCd?ѕ& !JOAE8r 0`{GQ c)HΘʼ?~A'0zCgp9s^0q!@( DB x bX!h$8Gjjy*Z A(j %G򤊪 ?L_p3I4Vz+A& 0) f?N|uH5d2-S ĭ@\b*DԗQ$(2DwG?yPx|j9N1##^SoHF]4E\JrzQ0Yz=9NZ[OK*D%ǹT" 7ƘT1oa99̑=eq4+c` TZ6ҶGC,(Y[~Ín*p')=\`dL*ρ;lGEAZN>y'-ck(\ )\Skfd77&#bۆ1c U{# u6#Nen1> ,T*:-#RFS@Hk'%f tֈ;WGʵ;DYsVwϟ:˷M?k>˜@]Si33J4uj( G'19udM!%!={ ߍR ҰV7߷r 椅J֤w_9)Б0i /GU]xKn@X6hl˘W0$ ,/aFt| I*t^?du]/ fZ),,/~yv3)F@E] d0tXY<)Y,[ OfqW~farVv/t !RdR]GÑ(KW9mJ KR hKyRTOO}=$qDH>/_Dy{l{⋮ǛMb*U|l}gM<l{R+h}szxa*#̝fJn!]jm}鲑=2ZønMO/ #\}O?]bIENDB`gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.lang/000077500000000000000000000000001411575327000221275ustar00rootroot00000000000000gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.lang/ru.po000066400000000000000000000025251411575327000231210ustar00rootroot00000000000000# 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/NeHeTutorial/.project:18 msgid "OpenGL tutorials from NeHe" msgstr "OpenGL учебники от NeHe" #: app/examples/OpenGL/NeHeTutorial/.src/MMain.module:14 msgid "Usage: NeHeTutorial Example " msgstr "Использование: NeHeTutorial Example<N> <Заголовок>" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.project���������������������������������������������0000664�0000000�0000000�00000000506�14115753270�0022600�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 # Compiled with Gambas 3.6.90 Title=OpenGL tutorials from NeHe Startup=MMain Icon=icon.png Version=3.6.90 VersionFile=1 Component=gb.image Component=gb.image.io Component=gb.sdl Component=gb.opengl Component=gb.opengl.glu Component=gb.sdl.sound Arguments="Example19" TabSize=2 Packager=1 Translate=1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021775�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example1.module���������������������������������0000664�0000000�0000000�00000002630�14115753270�0024661�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'To set up opengl window in Gambas choose New Project -> SDL Application ' mark OpenGL Programming in Settings, give it a name and that 's it. Private screen As New Window(True) As "Screen" Public Sub Main() With Screen .Width = 640 .Height = 480 .Text = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) 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 ��������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example10.module��������������������������������0000664�0000000�0000000�00000025467�14115753270�0024756�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'This tutorial shows how to build 3D world using textured block and defining the building in world.txt file 'To get continuous movement we use timer() and keypress() - keyrelease() functions. 'No collision implemented yet. ' Gambas module file Const world_x_size As Integer = 16 Const world_y_size As Integer = 16 Const piover180 As Float = 0.0174532925 Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation( NEW ) Private yrot As Float 'Y Rotation( NEW ) Private xspeed As Float 'x rotation speed Private yspeed As Float 'y rotation speed ' [GB2:ARRD] Private texture As Integer[3] 'storage FOR one texture Private texture As New Integer[3] 'storage FOR one texture Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Private filter As Integer = 0 Private light As Integer = 0 Private blend As Integer = 0 Private walkbias As Float = 0.0 Private walkbiasangle As Float = 0.0 Private lookupdown As Float = 0.0 Private heading As Float Private xpos As Float Private zpos As Float Private mypos_x As Float = 0 Private mypos_z As Float = 20 Private camx As Float = 0.0 Private camy As Float = 0.0 Private camz As Float = 0.0 Private therotate As Float Private z As Float = - world_x_size - 20.0 'depth into the screen. Private lp As Integer = 0 Private objlists As Integer ' [GB2:ARRD] Private world As Integer[world_x_size, world_y_size] 'world size 8x8 cube places Private world As New Integer[world_x_size, world_y_size] 'world size 8x8 cube places Private up_pressed As Boolean Private down_pressed As Boolean Private left_pressed As Boolean Private right_pressed As Boolean Private hTimer As New Timer As "Timer1" Private CTime As Float Public Sub Main() Dim i, j As Integer For i = 0 To world_x_size - 1 For j = 0 To world_y_size - 1 world[i, j] = 0 Next Next With screen .Width = 800 .Height = 600 .Title = MMain.Title .Show() End With CTime = Timer() hTimer.Delay = 100 hTimer.Enabled = True End Public Sub Screen_Open() LightAmbient = [0.5, 0.5, 0.5, 1.0] LightDiffuse = [1.0, 1.0, 1.0, 1.0] LightPosition = [0.0, 0.0, 2.0, 1.0] Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub load_world() Dim world_file As File Dim brick As String Dim wall As String Dim i, j, k As Integer world_file = Open "world.txt" For Read For i = 0 To world_x_size - 2 Read #world_file, wall, world_x_size + 1 For j = 1 To world_y_size brick = Mid$(wall, j, 1) If brick = "#" Then world[i, j - 1] = 1 Next Next Read #world_file, wall, world_x_size For j = 1 To world_y_size brick = Mid$(wall, j, 1) If brick = "#" Then world[world_x_size - 1, j - 1] = 1 Next world_file.Close End Public Sub load_texture() Dim wall As Image Dim floor1 As Image Dim ceiling As Image Dim egs As Boolean gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping texture = Gl.GenTextures(3) wall = Image.Load("wall.jpeg") Gl.BindTexture(Gl.TEXTURE_2D, texture[0]) Gl.TexImage2D(wall) Glu.Build2DMipmaps(wall) floor1 = Image.Load("floor.png") Gl.BindTexture(Gl.TEXTURE_2D, texture[1]) Gl.TexImage2D(Floor1) Glu.Build2DMipmaps(Floor1) ceiling = Image.Load("ceiling.png") Gl.BindTexture(Gl.TEXTURE_2D, texture[2]) Gl.TexImage2D(ceiling) Glu.Build2DMipmaps(ceiling) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) End Public Sub init() load_world() load_texture() gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.0, 0.0, 0.0, 0.0) ' Black Background gl.ClearDepth(2.0) ' Depth Buffer Setup gl.Enable(gl.DEPTH_TEST) ' Enables Depth Testing gl.DepthFunc(gl.LESS) ' The Type OF Depth Testing TO DO gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) gl.Lightfv(gl.LIGHT1, gl.AMBIENT, LightAmbient) ' add lighting.(ambient) gl.Lightfv(gl.LIGHT1, gl.DIFFUSE, LightDiffuse) ' add lighting.(diffuse). gl.Lightfv(gl.LIGHT1, gl.POSITION, LightPosition) ' set light position. gl.Enable(gl.LIGHT1) objlists = Gl.GenLists(3) Gl.NewList(objlists, Gl.COMPILE) gl.BindTexture(gl.TEXTURE_2D, texture[0]) ' SELECT Our Texture Gl.Begin(Gl.QUADS) gl.Normal3f(0.0, 0.0, 1.0) 'front face Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 0.0, 1.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 0.0, 1.0) Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 4.0, 1.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 4.0, 1.0) gl.Normal3f(0.0, 0.0, -1.0) 'back face Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, 0.0, -1.0) Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 4.0, -1.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 4.0, -1.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, 0.0, -1.0) gl.Normal3f(0.0, 1.0, 0.0) ' top face - no need for texture Gl.Vertexf(-1.0, 4.0, -1.0) Gl.Vertexf(-1.0, 4.0, 1.0) Gl.Vertexf(1.0, 4.0, 1.0) Gl.Vertexf(1.0, 4.0, -1.0) gl.Normal3f(0.0, 0.0, 0.0) 'bottom face - no textutre Gl.Vertexf(-1.0, 0.0, -1.0) Gl.Vertexf(1.0, 0.0, -1.0) Gl.Vertexf(1.0, 0.0, 1.0) Gl.Vertexf(-1.0, 0.0, 1.0) gl.Normal3f(1.0, 0.0, 0.0) 'right face Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 0.0, -1.0) Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 4.0, -1.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 4.0, 1.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, 0.0, 1.0) gl.Normal3f(-1.0, 0.0, 0.0) 'left face Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 0.0, -1.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, 0.0, 1.0) Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 4.0, 1.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 4.0, -1.0) Gl.End() gl.EndList() Gl.NewList(objlists + 1, Gl.COMPILE) gl.BindTexture(gl.TEXTURE_2D, texture[1]) ' SELECT Our Texture gl.Begin(gl.QUADS) Gl.TexCoordf(0.0, 1.0) gl.Vertex3f(-1, 0, world_y_size * 2 - 1) Gl.TexCoordf(1.0, 1.0) gl.Vertex3f(world_x_size * 2 - 1, 0, world_y_size * 2 - 1) Gl.TexCoordf(1.0, 0.0) gl.Vertex3f(world_x_size * 2 - 1, 0, 1) Gl.TexCoordf(0.0, 0.0) gl.Vertex3f(-1, 0, 1) gl.End() Gl.EndList() Gl.NewList(objlists + 2, Gl.COMPILE) gl.BindTexture(gl.TEXTURE_2D, texture[2]) ' SELECT Our Texture gl.Begin(gl.QUADS) Gl.TexCoordf(0.0, 0.0) gl.Vertex3f(-1, 4, 1) Gl.TexCoordf(0.0, 1.0) gl.Vertex3f(world_x_size * 2 - 1, 4, 1) Gl.TexCoordf(1.0, 1.0) gl.Vertex3f(world_x_size * 2 - 1, 4, world_y_size * 2 - 1) Gl.TexCoordf(1.0, 0.0) gl.Vertex3f(-1, 4, world_y_size * 2 - 1) gl.End() Gl.EndList() End Public Sub Screen_draw() Dim i, j, k As Integer Dim x_m, y_m, z_m, u_m, v_m As Float Dim xtrans, ztrans, ytrans As Float Dim sceneroty As Float xtrans = - xpos ztrans = - zpos ytrans = - walkbias - 0.25 sceneroty = 360.0 - yrot gl.LoadIdentity() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer For i = 0 To world_x_size - 1 For j = 0 To world_y_size - 1 k = 0 k = world[i, j] gl.LoadIdentity() gl.Rotatef(camy, 0, 1, 0) gl.Rotatef(camz, 1, 0, 0) gl.Rotatef(lookupdown, 1.0, 0, 0) gl.Rotatef(sceneroty, 0, 1.0, 0) gl.Translatef(xtrans, ytrans, z + ztrans) gl.Translatef(j * 2, -2.5, i * 2) If k = 1 Then Gl.CallList(objlists) Next Next gl.LoadIdentity() gl.Rotatef(camy, 0, 1, 0) gl.Rotatef(camz, 1, 0, 0) gl.Rotatef(lookupdown, 1.0, 0, 0) gl.Rotatef(sceneroty, 0, 1.0, 0) gl.Translatef(xtrans, ytrans - 2.5, z + ztrans) gl.CallList(objlists + 1) gl.LoadIdentity() gl.Rotatef(camy, 0, 1, 0) gl.Rotatef(camz, 1, 0, 0) gl.Rotatef(lookupdown, 1.0, 0, 0) gl.Rotatef(sceneroty, 0, 1.0, 0) gl.Translatef(xtrans, ytrans - 2.5, z + ztrans) gl.CallList(objlists + 2) End Public Sub screen_KeyRelease() up_pressed = False down_pressed = False left_pressed = False right_pressed = False End Public Sub Screen_keyPress() If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.text = "l" Or key.Text = "L") Then If lp = 0 Then gl.Enable(gl.LIGHTing) If lp = 1 Then gl.Disable(gl.LIGHTing) lp = 1 - lp Endif If (key.code = key.PageUp) Then z -= 0.2 mypos_z = +0.2 lookupdown -= 0.2 Endif If (key.code = key.Pagedown) Then z += 0.2 mypos_z -= 0.2 lookupdown += 1.0 Endif If (key.code = key.UP) Then up_pressed = True If (key.code = key.DOWN) Then down_pressed = True If (key.code = key.LEFT) Then left_pressed = True If (key.code = key.RIGHT) Then right_pressed = True End Public Sub Timer1_Timer() If up_pressed = True Then 'IF (world[Round(mypos_x + 0.2), Round(mypos_z + 0.2)] = 0) THEN xpos -= Sin(yrot * piover180) '* 0.5 'mypos_x += Sin(yrot * piover180) * 0.5 zpos -= Cos(yrot * piover180) '* 0.5 'mypos_z += Cos(yrot * piover180) * 0.5 If (walkbiasangle >= 359.0) Then walkbiasangle = 0.0 Else walkbiasangle += 10 Endif walkbias = Sin(walkbiasangle * piover180) / 20.0 'ENDIF Endif If down_pressed = True Then 'IF (world[Round(mypos_x + 0.2), Round(mypos_z + 0.2)] = 0) THEN xpos += Sin(yrot * piover180) '* 0.5 ' mypos_x -= Sin(yrot * piover180) * 0.5 zpos += Cos(yrot * piover180) '* 0.5 'mypos_z -= Cos(yrot * piover180) * 0.5 If (walkbiasangle <= 1.0) Then walkbiasangle = 359.0 Else walkbiasangle -= 10 Endif walkbias = Sin(walkbiasangle * piover180) / 20.0 'ENDIF Endif If left_pressed = True Then yrot += 3.5 If right_pressed = True Then yrot -= 3.5 End 'PUBLIC SUB Screen_MouseMove() 'camy += Mouse.Relativex 'camz += Mouse.RelativeY ' END ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example11.module��������������������������������0000664�0000000�0000000�00000011403�14115753270�0024740�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'This tutorial shows how to apply texture to the moving surface. Const piover180 As Float = 0.0174532925 Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation Private yrot As Float 'Y Rotation Private zrot As Float 'Z Rotation Private points As New Float[46, 46, 3] Private wiggle_count As Integer = 0 Private texture As New Integer[1] 'storage FOR one texture Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Private light As Integer = 0 Public Sub Main() Randomize With screen .Width = 640 .Height = 400 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) gl.Enable(gl.BLEND) End Public Sub load_texture() Dim starr As Image Dim egs As Boolean starr = Image.Load("glass.png") texture = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, texture[0]) '2d texture (x and y size) 'scale linearly when image smalled than texture Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR) 'scale linearly when image bigger than texture Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) Gl.TexImage2D(starr) End Public Sub init() Dim lops As Integer Dim float_x, float_y As Float 'loop counters. load_texture() gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping gl.ClearColor(0.0, 0.0, 1.0, 0.0) ' Black Background gl.ClearDepth(1.0) gl.DepthFunc(gl.LESS) ' Depth Buffer Setup gl.enable(gl.DEPTH_TEST) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) For float_x = 0.0 To 9.0 Step 0.2 For float_y = 0.0 To 9.0 Step 0.2 points[Round(float_x * 5), Round(float_y * 5), 0] = float_x - 4.4 points[Round(float_x * 5), Round(float_y * 5), 1] = float_y - 4.4 points[Round(float_x * 5), Round(float_y * 5), 2] = Sin(((float_x * 5 * 8) / 360) * Pi * 2) Next Next End Public Sub Screen_draw() Dim x, y As Integer Dim float_x, float_y, float_xb, float_yb As Float gl.clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) 'Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The View gl.Translatef(0.0, 0.0, -12.0) 'MOVE 12 units into the screen. gl.BindTexture(gl.TEXTURE_2D, texture[0]) 'Choose the texture TO use. gl.PolygonMode(gl.BACK, gl.FILL) 'Back Face Is Filled In gl.PolygonMode(gl.FRONT, gl.LINE) 'Front Face Is Drawn With Lines gl.Rotatef(180, 0, 0, 1) gl.Begin(gl.QUADS) For x = 0 To 43 For y = 0 To 43 float_x = x / 44 float_y = y / 44 float_xb = (x + 1) / 44 float_yb = (y + 1) / 44 gl.TexCoord2f(float_x, float_y) gl.Vertex3f(points[x, y, 0], points[x, y, 1], points[x, y, 2]) gl.TexCoord2f(float_x, float_yb) gl.Vertex3f(points[x, y + 1, 0], points[x, y + 1, 1], points[x, y + 1, 2]) gl.TexCoord2f(float_xb, float_yb) gl.Vertex3f(points[x + 1, y + 1, 0], points[x + 1, y + 1, 1], points[x + 1, y + 1, 2]) gl.TexCoord2f(float_xb, float_y) gl.Vertex3f(points[x + 1, y, 0], points[x + 1, y, 1], points[x + 1, y, 2]) Next Next gl.End() If (wiggle_count = 4) Then 'cycle the sine values For y = 0 To 44 points[44, y, 2] = points[0, y, 2] Next For x = 0 To 43 For y = 0 To 44 points[x, y, 2] = points[x + 1, y, 2] Next Next wiggle_count = 0 Endif wiggle_count += 1 xrot += 0.3 yrot += 0.02 zrot += 0.04 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 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example16.module��������������������������������0000664�0000000�0000000�00000017347�14115753270�0024762�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'We introduce fog effect in this tutorial. "f" key changes the density of the fog. Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation( NEW ) Private yrot As Float 'Y Rotation( NEW ) Private xspeed As Float 'x rotation speed Private yspeed As Float 'y rotation speed Private textures As New Integer[3] Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Private filter As Integer Private light As Integer = 0 Private lp As Integer Private fp As Integer Private z As Float = -5.0 Private gp As Boolean Private fogmode As New Float[3] Private fogfilter As Integer = 0 Private fogcolor As Float[] Public Sub Main() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() fogMode = [0.15, 0.35, 0.5] fogColor = [0.5, 0.5, 0.5, 1.0] LightAmbient = [0.2, 0.2, 0.2, 1.0] LightDiffuse = [1.0, 1.0, 1.0, 1.0] LightPosition = [0.0, 0.0, 2.0, 1.0] Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.5, 0.5, 0.5, 1.0) 'This Will Clear The Background Color To Grey gl.Fogi(gl.FOG_MODE, gl.EXP) 'Fog Mode gl.Fogfv(gl.FOG_COLOR, fogColor) 'Set Fog Color gl.Fogf(gl.FOG_DENSITY, fogmode[fogfilter]) 'How Dense Will The Fog Be gl.Hint(gl.FOG_HINT, gl.DONT_CARE) 'Fog Hint Value gl.Fogf(gl.FOG_START, 1.0) 'Fog Start Depth gl.Fogf(gl.FOG_END, 5.0) 'Fog END Depth gl.Enable(gl.FOG) 'Enables GL_FOG 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 init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() Dim logo As Image Dim egs As Boolean gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) logo = Image.Load("crate.jpeg") textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(logo) Glu.Build2DMipmaps(logo) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.5, 0.5, 0.5, 1.0) ' Grey Background gl.ClearDepth(2.0) ' Depth Buffer Setup gl.Enable(gl.DEPTH_TEST) ' Enables Depth Testing gl.DepthFunc(gl.LESS) ' The Type OF Depth Testing TO DO gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) gl.Lightfv(gl.LIGHT1, gl.AMBIENT, LightAmbient) ' add lighting.(ambient) gl.Lightfv(gl.LIGHT1, gl.DIFFUSE, LightDiffuse) ' add lighting.(diffuse). gl.Lightfv(gl.LIGHT1, gl.POSITION, LightPosition) ' set light position. gl.Enable(gl.LIGHT1) 'gl.Enable(gl.LIGHTING) End Public Sub Screen_draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer gl.LoadIdentity() ' Reset The Current Matrix gl.Translatef(0.0, 0.0, z) 'move z units out from the screen. 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.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.Begin(Gl.QUADS) gl.Normal3f(0.0, 0.0, 1.0) ' front face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Back face ' Bottom Right OF The Texture AND Quad gl.Normal3f(0.0, 0.0, -1.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top face ' Top Left OF The Texture AND Quad gl.Normal3f(0.0, 1.0, 0.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Face ' Top Right OF The Texture AND Quad gl.Normal3f(0.0, -1.0, 0.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Right face ' Bottom Right OF The Texture AND Quad gl.Normal3f(1.0, 0.0, 0.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Left face ' Bottom Left OF The Texture AND Quad gl.Normal3f(-1.0, 0.0, 0.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) Gl.End() xrot += xspeed ' Add xspeed TO xrot yrot += yspeed ' Add yspeed TO yrot End Public Sub Screen_keyPress() If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.text = "l" Or key.Text = "L") Then If lp = 0 Then gl.Enable(gl.LIGHTing) If lp = 1 Then gl.Disable(gl.LIGHTing) lp = 1 - lp Endif If (key.text = "F" Or key.text = "f") Then gp = True 'gp IS Set TO TRUE fogfilter += 1 'Increase fogfilter By One Print (Str$(fogfilter)) If (fogfilter > 2) Then fogfilter = 0 'Is fogfilter Greater Than 2? IF So, Set fogfilter to Zero gl.Fogf(gl.FOG_DENSITY, fogmode[fogfilter]) 'Fog Mode gp = False Endif If (key.code = key.PageUp) Then z -= 0.2 'MOVE the cube into the distance. If (key.code = key.Pagedown) Then z += 0.2 'MOVE the cube closer. If (key.code = key.UP) Then xspeed -= 0.01 'decrease x rotation speed; If (key.code = key.DOWN) Then xspeed += 0.01 'increase x rotation speed; If (key.code = key.LEFT) Then yspeed -= 0.01 'decrease y rotation speed; If (key.code = key.RIGHT) Then yspeed += 0.01 'increase y rotation speed; End �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example19.module��������������������������������0000664�0000000�0000000�00000030160�14115753270�0024751�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'Lesson 19 - particle engine 'Keys: 'z - accelerate particles 'x - decelerate particles 'TAB - burst 'space - change color 'cursor keys - change direction 'Fast Const MAX_PARTICLES As Integer = 1000 'Number OF Particles TO CREATE 'to replace structure "particle" I use 2-dimensional array and constatnts as indicators 'in this case call to particle[n].life becomes particle[n,life] Const life As Integer = 0 'Particle Life Const fade As Integer = 1 'Fade Speed Const r As Integer = 2 'Red Value Const g As Integer = 3 'Green Value Const b As Integer = 4 'Blue Value Const x As Integer = 5 'X Position Const y As Integer = 6 'Y Position Const z As Integer = 7 'Z Position Const xi As Integer = 8 'X Direction Const yi As Integer = 9 'Y Direction Const zi As Integer = 10 'Z Direction Const xg As Integer = 11 'X Gravity Const yg As Integer = 12 'Y Gravity Const zg As Integer = 13 'Z Gravity Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation( NEW ) Private yrot As Float 'Y Rotation( NEW ) Private zrot As Float 'Z Rotation( NEW ) Private textures As New Integer[1] Private keys As New Boolean[512] Private active As Boolean = True 'Window Active Flag Set TO TRUE By DEFAULT Private rainbow As Boolean = True 'Rainbow Mode? Private sp As Boolean 'Spacebar Pressed? Private rp As Boolean 'Enter Key Pressed? Private key_Down As Boolean = False Private key_Left As Boolean = False Private key_Right As Boolean = False Private key_up As Boolean = False Private slowdown As Float = 0.5 'Slow Down Particles Private xspeed As Float 'Base X Speed( TO Allow Keyboard Direction OF Tail) Private yspeed As Float 'Base Y Speed( TO Allow Keyboard Direction OF Tail) Private zoom As Float = -40.0 'Used TO Zoom Out Private lop As Integer 'Misc LOOP Variable Private col As Integer 'Current Color Selection Private delay As Integer 'Rainbow Effect Delay Private lcon As Integer Private activ As New Boolean[MAX_PARTICLES + 1] Private particle As New Float[MAX_PARTICLES + 1, 14] Private colors As New Float[12, 3] 'Rainbow Of Colors Public Sub Main() load_colors() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub load_colors() Dim color_file As File Dim rgb As String Dim hline As String Dim rain As String[] Dim i, p As Integer color_file = Open "rainbow.txt" For Input For p = 1 To 12 i = 0 Line Input #color_file, hline rain = Split(hline, ",") For Each rgb In rain colors[p - 1, i] = CFloat(Trim(rgb)) i = i + 1 Next Next Close color_file End Public Sub load_texture() Dim part As Image part = Image.Load("Star.png") textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(part) Glu.Build2DMipmaps(part) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() Dim l As Integer gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) load_texture() gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.0, 0.0, 0.0, 0.0) ' Black Background gl.ClearDepth(1.0) ' Depth Buffer Setup gl.Disable(gl.DEPTH_TEST) ' Disable Depth Testing gl.Enable(gl.BLEND) ' Enable Blending gl.BlendFunc(gl.SRC_ALPHA, gl.ONE) ' Type OF Blending TO Perform gl.Hint(gl.PERSPECTIVE_CORRECTION_HINT, gl.NICEST) ' Really Nice Perspective Calculations gl.Hint(gl.POINT_SMOOTH_HINT, gl.NICEST) ' Really Nice Point Smoothing gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping gl.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture For l = 0 To MAX_PARTICLES - 1 ' Initials All The Textures activ[L] = True ' Make All The Particles Active particle[L, life] = 1.0 ' Give All The Particles Full Life particle[L, fade] = Rnd(100) / 1000.0 + 0.003 ' Random Fade Speed particle[L, r] = colors[(L + 1) / (MAX_PARTICLES / 12) - 1, 0] ' SELECT Red Rainbow Color particle[L, g] = colors[(L + 1) / (MAX_PARTICLES / 12) - 1, 1] ' SELECT Green Rainbow Color particle[L, b] = colors[(L + 1) / (MAX_PARTICLES / 12) - 1, 2] ' SELECT Blue Rainbow Color particle[L, xi] = (Rnd(50) - 26.0) * 10.0 ' Random Speed On X Axis particle[L, yi] = (Rnd(50) - 25.0) * 10.0 ' Random Speed On Y Axis particle[L, zi] = (Rnd(50) - 25.0) * 10.0 ' Random Speed On Z Axis particle[L, xg] = 0.0 ' Set Horizontal Pull TO Zero particle[L, yg] = -0.8 ' Set Vertical Pull Downward particle[L, zg] = 0.0 ' Set Pull On Z Axis TO Zero Next End Public Sub Screen_draw() Dim l As Integer Dim xq, yq, zq As Float gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer gl.LoadIdentity() ' Reset The ModelView Matrix For l = 0 To MAX_PARTICLES - 1 'Loop Through All The Particles lcon = l If (activ[l] = True) Then 'IF The Particle IS Active xq = particle[l, x] ' Grab Our Particle X Position yq = particle[l, y] ' Grab Our Particle Y Position zq = particle[l, z] + zoom ' Particle Z Pos + Zoom ' Draw The Particle Using Our RGB Values, Fade The Particle Based On It 's Life gl.Color4f(particle[l, r], particle[l, g], particle[l, b], particle[l, life]) gl.Begin(gl.TRIANGLE_STRIP) 'Build Quad FROM A Triangl.e Strip gl.TexCoord2i(1, 1) gl.Vertex3f(xq + 0.5, yq + 0.5, zq) ' Top Right gl.TexCoord2i(0, 1) gl.Vertex3f(xq - 0.5, yq + 0.5, zq) ' Top Left gl.TexCoord2i(1, 0) gl.Vertex3f(xq + 0.5, yq - 0.5, zq) ' Bottom Right gl.TexCoord2i(0, 0) gl.Vertex3f(xq - 0.5, yq - 0.5, zq) ' Bottom Left gl.End() ' Done Building Triangl.e Strip particle[l, x] += particle[l, xi] / (slowdown * 1000) 'MOVE On The X Axis By X Speed particle[l, y] += particle[l, yi] / (slowdown * 1000) ' MOVE On The Y Axis By Y Speed particle[l, z] += particle[l, zi] / (slowdown * 1000) ' MOVE On The Z Axis By Z Speed particle[l, xi] += particle[l, xg] ' Take Pull On X Axis Into Account particle[l, yi] += particle[l, yg] ' Take Pull On Y Axis Into Account particle[l, zi] += particle[l, zg] ' Take Pull On Z Axis Into Account particle[l, life] -= particle[l, fade] ' Reduce Particles Life By 'Fade' If (particle[l, life] < 0.0) Then ' IF Particle IS Burned Out particle[l, life] = 1.0 ' Give It NEW Life particle[l, fade] = Rnd(100) / 1000.0 + 0.003 ' Random Fade Value particle[l, x] = 0.0 ' Center On X Axis particle[l, y] = 0.0 ' Center On Y Axis particle[l, z] = 0.0 ' Center On Z Axis particle[l, xi] = xspeed + (Rnd(60) - 32.0) ' X Axis Speed AND Direction particle[l, yi] = yspeed + (Rnd(60) - 30.0) ' Y Axis Speed AND Direction particle[l, zi] = (Rnd(60) - 30.0) ' Z Axis Speed AND Direction particle[l, r] = colors[col, 0] ' SELECT Red FROM Color Table particle[l, g] = colors[col, 1] ' SELECT Green FROM Color Table particle[l, b] = colors[col, 2] ' SELECT Blue FROM Color Table Endif If ((key_up = True) And (particle[l, yg] < 1.5)) Then particle[l, yg] += 0.1 If ((key_Down = True) And (particle[l, yg] > -1.5)) Then particle[l, yg] -= 0.1 If ((key_Right = True) And (particle[l, xg] < 1.5)) Then particle[l, xg] += 0.1 If ((key_Left = True) And (particle[l, xg] > -1.5)) Then particle[l, xg] -= 0.1 Endif Next End Public Sub burst() Dim l As Integer For l = 0 To MAX_PARTICLES - 1 particle[L, x] = 0.0 'f; / / Center On X Axis particle[L, y] = 0.0 'f; / / Center On Y Axis particle[L, z] = 0.0 'f; / / Center On Z Axis particle[L, xi] = (Rnd(50) - 26.0) * 10.0 '; // Random Speed On X Axis particle[L, yi] = (Rnd(50) - 25.0) * 10.0 '; // Random Speed On Y Axis particle[L, zi] = (Rnd(50) - 25.0) * 10.0 ' // Random Speed On Z Axis Next End Public Sub screen_KeyRelease() key_Down = False key_Left = False key_Right = False key_up = False rp = False sp = False End Public Sub Screen_keyPress() Dim l As Integer l = lcon If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.code = key.up) Then key_up = True If (key.code = key.Down) Then key_Down = True If (key.code = key.Right) Then key_Right = True If (key.code = key.Left) Then key_Left = True If (key.code = Key.Tab) Then burst() ' Tab Key Causes A Burst If ((key.Text = "z") And (slowdown > 0.0)) Then slowdown -= 0.1 If ((key.Text = "x") And (slowdown < 4.0)) Then slowdown += 0.1 ' Slow Down Particles If (key.code = key.PageUp) Then zoom += 0.5 ' Zoom IN If (key.Code = key.PageDown) Then zoom -= 0.5 ' Zoom Out If ((key.Code = key.Return) And (rp = False)) Then ' RETURN Key Pressed rp = True ' Set Flag Telling Us It 's Pressed rainbow = Not rainbow ' Toggle Rainbow Mode On / Off Endif If ((((key.Code = key.Space) And sp = False) Or (rainbow = True And (delay > 25)))) Then If (key.Code = key.Space) Then rainbow = False ' IF Spacebar IS Pressed Disable Rainbow Mode sp = True 'Set Flag Telling Us Space IS Pressed delay = 0 ' Reset The Rainbow Color Cycling Delay col += 1 ' Change The Particle Color If (col > 11) Then col = 0 ' IF Color IS To High Reset It Endif delay += 1 'Increase Rainbow Mode Color Cycling Delay Counter End ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example2.module���������������������������������0000664�0000000�0000000�00000005117�14115753270�0024665�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we introduce triangle and quad shapes. ' Gambas module file Private screen As New Window(True) As "Screen" Public Sub Main() With screen .Width = 640 .Height = 480 .Text = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub Screen_Draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The View gl.translatef(-1.5, 0.0, -6.0) ' MOVE Left 1.5 Units AND Into The Screen 6.0 gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Vertex3f(0.0, 1.0, 0.0) 'Top gl.Vertex3f(-1.0, -1.0, 0.0) 'Bottom Left gl.Vertex3f(1.0, -1.0, 0.0) 'Bottom Right gl.End() 'Finished Drawing The Triangle gl.Translatef(3.0, 0.0, 0.0) 'MOVE Right 3 Units gl.Begin(gl.QUADS) 'Draw A Quad gl.Vertex3f(-1.0, 1.0, 0.0) 'Top Left gl.Vertex3f(1.0, 1.0, 0.0) 'Top Right gl.Vertex3f(1.0, -1.0, 0.0) 'Bottom Right gl.Vertex3f(-1.0, -1.0, 0.0) 'Bottom Left gl.End() 'Done Drawing The Quad 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 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example25.module��������������������������������0000664�0000000�0000000�00000021651�14115753270�0024753�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file ' To set up opengl window in Gambas choose New Project -> SDL Application ' mark OpenGL Programming IN Settings, give it a name AND that 's it. Const num_points As Integer = 486 Private xrot As Float Private yrot As Float Private zrot As Float 'X, Y & Z Rotation Private xspeed As Float Private yspeed As Float Private zspeed As Float 'X, Y & Z Spin Speed Private cx As Float Private cy As Float Private cz As Float = -15 'X, Y & Z Position Private keey As Integer = 1 'Used TO Make Sure Same Morph Key IS Not Pressed Private stepp As Integer = 0 Private steps As Integer = 200 'STEP Counter AND Maximum Number OF Steps Private morphing As Boolean = False 'DEFAULT morph TO FALSE(NOT Morphing) Private morph As New Float[6, 486, 3] Public read_line As String Public verts As String[] Public actual As Integer = 0 Public post As Integer = 0 Private screen As New Window(True) As "Screen" Public Sub Main() Randomize With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub load_objects() Dim shape_file As File Dim i, p As Integer Dim coords As String shape_file = Open "Sphere.txt" For Input For p = 0 To num_points - 1 i = 0 Line Input #shape_file, read_line verts = Split(read_line, ",") For Each coords In verts morph[0, p, i] = coords morph[4, p, i] = coords i = i + 1 Next Next Close shape_file shape_file = Open "Torus.txt" For Input For p = 0 To num_points - 1 i = 0 Line Input #shape_file, read_line verts = Split(read_line, ",") For Each coords In verts morph[1, p, i] = coords i = i + 1 Next Next Close shape_file shape_file = Open "Tube.txt" For Input For p = 0 To num_points - 1 i = 0 Line Input #shape_file, read_line verts = Split(read_line, ",") For Each coords In verts morph[2, p, i] = coords i = i + 1 Next Next Close shape_file For p = 0 To num_points - 1 For i = 0 To 2 morph[3, p, i] = Rnd(12) - 7 Next Next End Public Sub calculate(i As Integer, sourc As Integer, desti As Integer) morph[5, i, 0] = (morph[sourc, i, 0] - morph[desti, i, 0]) / steps morph[5, i, 1] = (morph[sourc, i, 1] - morph[desti, i, 1]) / steps morph[5, i, 2] = (morph[sourc, i, 2] - morph[desti, i, 2]) / steps End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) Init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub Init() 'All Setup FOR OpenGL Goes Here gl.BlendFunc(gl.SRC_ALPHA, gl.ONE) 'Set The Blending FUNCTION For Translucency gl.clearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color TO Black gl.clearDepth(1.0) 'Enables Clearing OF The Depth Buffer 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 gl.Hint(gl.PERSPECTIVE_CORRECTION_HINT, gl.NICEST) 'Really Nice Perspective Calculations load_objects() End Public Sub Screen_Draw() Dim tx, ty, tz As Float '/ / Temp X, Y & Z Variables Dim i, j, k, p As Integer gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) 'Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The View gl.Translatef(cx, cy, cz) 'Translate The The Current Position TO Start Drawing gl.Rotatef(xrot, 1, 0, 0) 'Rotate On The X Axis By xrot gl.Rotatef(yrot, 0, 1, 0) 'Rotate On The Y Axis By yrot gl.Rotatef(zrot, 0, 0, 1) 'Rotate On The Z Axis By zrot xrot += xspeed yrot += yspeed zrot += zspeed 'Increase xrot, yrot & zrot by xspeed, yspeed & zspeed 'VERTEX q; / / Holds Returned Calculated Values FOR One Vertex gl.begin(gl.POINTS) 'Begin Drawing Points For i = 0 To num_points - 1 'Loop Through All The Verts Of morph If (morphing) Then calculate(i, actual, post) Else morph[5, i, 0] = 0 morph[5, i, 1] = 0 morph[5, i, 2] = 0 Endif morph[4, i, 0] -= morph[5, i, 0] 'Subtract q.x Units FROM helper.points[i].x( MOVE On X Axis) morph[4, i, 1] -= morph[5, i, 1] 'Subtract q.y Units FROM helper.points[i].y( MOVE On Y Axis) morph[4, i, 2] -= morph[5, i, 2] 'Subtract q.z Units FROM helper.points[i].z( MOVE On Z Axis) tx = morph[4, i, 0] 'Make Temp X Variable Equal TO Helper 's X Variable ty = morph[4, i, 1] 'Make Temp Y Variable Equal TO Helper 's Y Variable tz = morph[4, i, 2] 'Make Temp Z Variable Equal TO Helper 's Z Variable gl.Color3f(0, 1, 1) 'Set Color TO A Bright Shade OF Off Blue gl.Vertex3f(tx, ty, tz) 'Draw A Point At The Current Temp Values(Vertex) gl.Color3f(0, 0.5, 1) 'Darken Color A Bit tx -= 2 * morph[5, i, 0] ty -= 2 * morph[5, i, 0] ty -= 2 * morph[5, i, 0] 'Calculate Two Positions Ahead gl.Vertex3f(tx, ty, tz) 'Draw A Second Point At The Newly Calculate Position gl.Color3f(0, 0, 1) 'Set Color TO A Very Dark Blue tx -= 2 * morph[5, i, 0] ty -= 2 * morph[5, i, 0] ty -= 2 * morph[5, i, 0] 'Calculate Two More Positions Ahead gl.Vertex3f(tx, ty, tz) 'Draw A Third Point At The Second NEW Position Next 'This Creates A Ghostly Tail AS Points MOVE gl.End() 'Done Drawing Points If (morphing And (stepp <= steps)) Then stepp += 1 Else morphing = False actual = post stepp = 0 Endif End Public Sub Screen_KeyPress() Debug Key.Code;; Key.Text If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.code = key.PageUp) Then zspeed += 0.01 'MOVE the cube into the distance. If (key.code = key.Pagedown) Then zspeed -= 0.01 'MOVE the cube closer. If (key.code = key.UP) Then xspeed -= 0.01 'decrease x rotation speed; If (key.code = key.DOWN) Then xspeed += 0.01 'increase x rotation speed; If (key.code = key.LEFT) Then yspeed -= 0.01 'decrease y rotation speed; If (key.code = key.RIGHT) Then yspeed += 0.01 'increase y rotation speed; If (key.text = "q") Then cz -= 0.01 'Is Q Key Being Pressed? Move Object Away From Viewer If (key.text = "z") Then cz += 0.01 'Is Z Key Being Pressed? MOVE Object Towards Viewer If (key.text = "w") Then cy += 0.01 'Is W Key Being Pressed? MOVE Object Up If (key.text = "s") Then cy -= 0.01 'Is S Key Being Pressed? MOVE Object Down If (key.text = "d") Then cx += 0.01 'Is D Key Being Pressed? MOVE Object Right If (key.text = "a") Then cx -= 0.01 'Is A Key Being Pressed? MOVE Object Left If (key.text = "1") Then If ((keey <> 1) And morphing = False) Then keey = 1 'Sets key TO 1( TO Prevent Pressing 1 2 x IN A Row) morphing = True 'Set morph TO TRUE(Starts Morphing Process) post = 0 'Destination Object TO Morph TO Becomes morph1 Endif Endif If (key.text = "2") Then If ((keey <> 2) And morphing = False) Then keey = 2 'Sets key TO 1( TO Prevent Pressing 1 2 x IN A Row) morphing = True 'Set morph TO TRUE(Starts Morphing Process) post = 1 'Destination Object TO Morph TO Becomes morph1 Endif Endif If (key.text = "3") Then If ((keey <> 3) And morphing = False) Then keey = 3 'Sets key TO 1( TO Prevent Pressing 1 2 x IN A Row) morphing = True 'Set morph TO TRUE(Starts Morphing Process) post = 2 'Destination Object TO Morph TO Becomes morph1 Endif Endif If (key.text = "4") Then If ((keey <> 4) And morphing = False) Then keey = 4 'Sets key TO 1( TO Prevent Pressing 1 2 x IN A Row) morphing = True 'Set morph TO TRUE(Starts Morphing Process) post = 3 'Destination Object TO Morph TO Becomes morph1 Endif Endif End ���������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example3.module���������������������������������0000664�0000000�0000000�00000005467�14115753270�0024676�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we add some color to our triangle and quad from tutorial 2 ' Gambas module file Private screen As New Window(True) As "Screen" Public Sub Main() With screen .Width = 640 .Height = 480 .Text = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() End Public Sub Screen_Draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The View gl.translatef(-1.5, 0.0, -6.0) ' MOVE Left 1.5 Units AND Into The Screen 6.0 gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Color3f(1.0, 0.0, 0.0) 'Set The Color TO Red gl.Vertex3f(0.0, 1.0, 0.0) 'Top gl.Color3f(0.0, 1.0, 0.0) 'Set The Color TO Green gl.Vertex3f(-1.0, -1.0, 0.0) 'Bottom Left gl.Color3f(0.0, 0.0, 1.0) 'Set The Color TO Blue gl.Vertex3f(1.0, -1.0, 0.0) 'Bottom Right gl.End() 'Finished Drawing The Triangle gl.Translatef(3.0, 0.0, 0.0) 'MOVE Right 3 Units gl.Color3f(0.5, 0.5, 1.0) 'Set The Color TO Blue One Time Only gl.Begin(gl.QUADS) 'Draw A Quad gl.Vertex3f(-1.0, 1.0, 0.0) 'Top Left gl.Vertex3f(1.0, 1.0, 0.0) 'Top Right gl.Vertex3f(1.0, -1.0, 0.0) 'Bottom Right gl.Vertex3f(-1.0, -1.0, 0.0) 'Bottom Left gl.End() 'Done Drawing The Quad End ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example4.module���������������������������������0000664�0000000�0000000�00000007005�14115753270�0024665�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we add rotation to our objects from tutorial 3 Private screen As New Window(True) As "Screen" Private rtri As Float 'Angle FOR The Triangle( NEW ) Private rquad As Float 'Angle FOR The Quad( NEW ) Public Sub Main() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() End Public Sub Screen_Draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The View gl.translatef(-1.5, 0.0, -6.0) ' MOVE Left 1.5 Units AND Into The Screen 6.0 gl.Rotatef(rtri, 0.0, 1.0, 0.0) 'Rotate The Triangle On The Y axis( NEW ) gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Color3f(1.0, 0.0, 0.0) 'Set The Color TO Red gl.Vertex3f(0.0, 1.0, 0.0) 'Top gl.Color3f(0.0, 1.0, 0.0) 'Set The Color TO Green gl.Vertex3f(-1.0, -1.0, 0.0) 'Bottom Left gl.Color3f(0.0, 0.0, 1.0) 'Set The Color TO Blue gl.Vertex3f(1.0, -1.0, 0.0) 'Bottom Right gl.End() 'Finished Drawing The Triangle gl.LoadIdentity() 'Reset The Current Modelview Matrix gl.translatef(1.5, 0.0, -6.0) 'Move Right 1.5 Units And Into The Screen 6.0 gl.Rotatef(rquad, 1.0, 0.0, 0.0) 'Rotate The Quad On The X axis( NEW ) gl.Color3f(0.5, 0.5, 1.0) 'Set The Color TO Blue One Time Only gl.Begin(gl.QUADS) 'Draw A Quad gl.Vertex3f(-1.0, 1.0, 0.0) 'Top Left gl.Vertex3f(1.0, 1.0, 0.0) 'Top Right gl.Vertex3f(1.0, -1.0, 0.0) 'Bottom Right gl.Vertex3f(-1.0, -1.0, 0.0) 'Bottom Left gl.End() 'Done Drawing The Quad rtri += 0.2 'Increase The Rotation Variable FOR The Triangle( NEW ) rquad -= 0.15 'Decrease The Rotation Variable FOR The Quad( NEW ) 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 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example42.module��������������������������������0000664�0000000�0000000�00000024177�14115753270�0024760�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file ' Tutorial shows how to make muliple viewports. 'mouse movement rotates the barrel. Private screen As New Window(True) As "Screen" Private rtx As Float Private rty As Float Private rqx As Float Private rqy As Float Private star As New Float[5] Private textures As New Integer[1] Private objects As Integer Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Public Sub Main() 'DIM world AS star[50] With screen .Width = 1024 .Height = 768 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() LightAmbient = [0.2, 0.2, 0.2, 1.0] LightDiffuse = [1.0, 1.0, 1.0, 1.0] LightPosition = [0.0, 0.0, 2.0, 1.0] Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width / 2, Screen.Height / 2) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) Gl.Viewport(screen.Width / 2, 0, Screen.Width / 2, Screen.Height / 2) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) Gl.Viewport(0, screen.Height / 2, Screen.Width / 2, Screen.Height / 2) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) Gl.Viewport(screen.Width / 2, screen.Height / 2, Screen.Width / 2, Screen.Height / 2) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub TexturedCylinder(radius As Float, height As Float, slices As Integer) Dim i, j As Integer '/* Step in z and radius as stacks are drawn. */ Dim z0, z1, r0, r1 As Float Dim zStep As Float = height Dim rStep As Float = radius ' / * Scaling factors FOR vertex normals * / Dim cosn As Float = (height / Sqr(height * height + radius * radius)) Dim sinn As Float = (radius / Sqr(height * height + radius * radius)) ' / * Pre - computed circle * / Dim sint As New Float[360] Dim cost As New Float[360] Dim size As Integer Dim angle As Float angle = 2 * Pi / (- slices) sint[0] = 0.0 cost[0] = 1.0 For i = 1 To slices sint[i] = Sin(angle * i) cost[i] = Cos(angle * i) Next sint[size] = sint[0] cost[size] = cost[0] ' / * Cover the base AND top * / gl.Begin(gl.TRIANGLE_FAN) gl.Normal3f(0.0, 0.0, -1.0) gl.Vertex3f(0.0, 0.0, - height / 2) For j = 0 To slices gl.Vertex3f(cost[j] * radius, sint[j] * radius, - height / 2) Next gl.End() gl.Begin(gl.TRIANGLE_FAN) gl.Normal3f(0.0, 0.0, 1.0) gl.Vertex3f(0.0, 0.0, height / 2) For j = slices To 0 Step -1 gl.Vertex3f(cost[j] * radius, sint[j] * radius, height / 2) Next gl.End() ' / * DO the stacks * / z0 = - height / 2 z1 = height / 2 gl.Begin(gl.QUAD_STRIP) For j = 0 To slices gl.Normal3f(cost[j], sint[j], 0.0) gl.TexCoord2f(j * 1 / slices, 0) gl.Vertex3f(cost[j] * radius, sint[j] * radius, z0) gl.TexCoord2f(j * 1 / slices, 1) gl.Vertex3f(cost[j] * radius, sint[j] * radius, z1) Next gl.End() End Public Sub init() Dim logo As Image Dim a, b, c, d As Integer gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) logo = Image.Load("barrel.png") c = logo.Height - 1 d = logo.Width - 1 For a = 0 To c For b = 0 To d 'logo[a * b] = Int(Rnd(256)) Next Next textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(logo) Glu.Build2DMipmaps(logo) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) objects = Gl.GenLists(4) GL.LoadIdentity Gl.NewList(objects, Gl.COMPILE) TexturedCylinder(2.0, 5.0, 24.0) gl.EndList() GL.LoadIdentity Gl.NewList(objects + 1, Gl.COMPILE) gl.begin(gl.QUADS) gl.Normal3f(0, 0, 1) gl.Color3f(0.0, 0.0, 1.0) gl.Vertex3f(-40, -40, -10) gl.Vertex3f(40, -40, -10) gl.Vertex3f(40, 10, -10) gl.Vertex3f(-40, 40, -10) gl.End() gl.EndList() gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.3, 0.0, 0.3, 0.5) ' Black Background gl.ClearDepth(1.0) ' Depth Buffer Setup gl.Enable(gl.DEPTH_TEST) ' Enables Depth Testing gl.DepthFunc(gl.LEQUAL) ' The Type OF Depth Testing TO DO gl.Hint(gl.PERSPECTIVE_CORRECTION_HINT, gl.NICEST) ' Really Nice Perspective Calculations gl.Lightfv(gl.LIGHT0, gl.AMBIENT, LightAmbient) ' add lighting.(ambient) gl.Lightfv(gl.LIGHT0, gl.DIFFUSE, LightDiffuse) ' add lighting.(diffuse). gl.Lightfv(gl.LIGHT0, gl.POSITION, LightPosition) ' set light position. gl.Enable(gl.LIGHT0) gl.Enable(gl.LIGHTING) End Public Sub Screen_Draw() 'gl.ClearColor(0.23, 0.2, 0.3, 0.5) gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer Gl.Viewport(0, 0, Screen.Width / 2, Screen.Height / 2) 'Lower left screen Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) gl.LoadIdentity() 'Reset The Current Modelview Matrix gl.PushMatrix() gl.Translatef(0, 0, -10) gl.begin(gl.QUADS) gl.Normal3f(0, 0, 1) gl.Color3f(0.0, 0.0, 1.0) gl.Vertex3f(-40, -40, -10) gl.Vertex3f(40, -40, -10) gl.Vertex3f(40, 10, -10) gl.Vertex3f(-40, 40, -10) gl.End() gl.PopMatrix() gl.begin(gl.LINE_STRIP) gl.Vertex3f(0, screen.Height / 2, 0) gl.Vertex3f(screen.Width / 2, screen.Height / 2, 0) gl.Vertex3f(screen.Width / 2, screen.Height, 0) gl.End() gl.translatef(0, 0.0, -12.0) 'Move Right 1.5 Units And Into The Screen 6.0 gl.Rotatef(45, 1.0, 1.0, 0.0) 'Rotate The Quad On The X axis( NEW ) gl.Rotatef(rtx, 1.0, 0.0, 0.0) gl.Rotatef(rty, 0.0, 1.0, 0.0) gl.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.PushMatrix() Gl.CallList(objects) gl.PopMatrix() Gl.Viewport(screen.Width / 2, 0, Screen.Width / 2, Screen.Height / 2) 'Top left screen Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) gl.LoadIdentity() 'Reset The Current Modelview Matrix gl.translatef(0, 0.0, -16.0) 'Move Right 1.5 Units And Into The Screen 6.0 gl.Rotatef(90, 0.0, 0.0, 1.0) 'Rotate The Quad On The X axis( NEW ) gl.Rotatef(rtx, 1.0, 0.0, 0.0) gl.Rotatef(rty, 0.0, 1.0, 0.0) gl.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.PushMatrix() Gl.CallList(objects) gl.PopMatrix() Gl.Viewport(0, screen.Height / 2, Screen.Width / 2, Screen.Height / 2) 'Lower right screen Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) gl.LoadIdentity() 'Reset The Current Modelview Matrix gl.translatef(0, 0.0, -16.0) 'Move Right 1.5 Units And Into The Screen 6.0 gl.Rotatef(90, 0.0, 1.0, 0.0) 'Rotate The Quad On The X axis( NEW ) gl.Rotatef(rtx, 1.0, 0.0, 0.0) gl.Rotatef(rty, 0.0, 1.0, 0.0) gl.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.PushMatrix() Gl.CallList(objects) gl.PopMatrix() Gl.Viewport(screen.Width / 2, screen.Height / 2, Screen.Width / 2, Screen.Height / 2) 'top right Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) 'gl.Clear(gl.COLOR_BUFFER_BIT OR gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The Current Modelview Matrix gl.PushMatrix() gl.Translatef(0, 0, -10) gl.CallList(objects + 1) gl.PopMatrix() gl.translatef(0, 0.0, -16.0) 'Move Right 1.5 Units And Into The Screen 6.0 gl.Rotatef(90, 1.0, 0.0, 0.0) 'Rotate The Quad On The X axis( NEW ) gl.Rotatef(rtx, 1.0, 0.0, 0.0) gl.Rotatef(rty, 0.0, 1.0, 0.0) gl.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.PushMatrix() Gl.CallList(objects) gl.PopMatrix() rtx += rqx rty += rqy rqx = 0 rqy = 0 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() rqx = rqx + Mouse.X / 500 rqy = rqy + Mouse.Y / 500 End �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example5.module���������������������������������0000664�0000000�0000000�00000015562�14115753270�0024675�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we go 3D and show some pyramid and cube. ' Gambas module file Private screen As New Window(True) As "Screen" Private rtri As Float 'Angle FOR The Triangle( NEW ) Private rquad As Float 'Angle FOR The Quad( NEW ) Public Sub Main() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() End Public Sub Screen_Draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer gl.LoadIdentity() 'Reset The View gl.translatef(-1.5, 0.0, -6.0) ' MOVE Left 1.5 Units AND Into The Screen 6.0 gl.Rotatef(rtri, 0.0, 1.0, 0.0) 'Rotate The Triangle On The Y axis( NEW ) gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Color3f(1.0, 0.0, 0.0) 'Set The Color TO Red gl.Vertex3f(0.0, 1.0, 0.0) 'Top (Front) gl.Color3f(0.0, 1.0, 0.0) 'Set The Color TO Green gl.Vertex3f(-1.0, -1.0, 1.0) 'Bottom Left (Front) gl.Color3f(0.0, 0.0, 1.0) 'Set The Color TO Blue gl.Vertex3f(1.0, -1.0, 1.0) 'Bottom Right (Front) gl.End() 'Finished Drawing The Triangle gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Color3f(1.0, 0.0, 0.0) 'Set The Color TO Red gl.Vertex3f(0.0, 1.0, 0.0) 'Top (Right) gl.Color3f(0.0, 0.0, 1.0) 'Set The Color TO Blue gl.Vertex3f(1.0, -1.0, 1.0) 'Bottom Left (Right) gl.Color3f(0.0, 1.0, 0.0) 'Set The Color TO Green gl.Vertex3f(1.0, -1.0, -1.0) 'Bottom Right (Right) gl.End() gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Color3f(1.0, 0.0, 0.0) 'Set The Color TO Red gl.Vertex3f(0.0, 1.0, 0.0) 'Top (Back) gl.Color3f(0.0, 1.0, 0.0) 'Set The Color TO Green gl.Vertex3f(1.0, -1.0, -1.0) 'Bottom Left (Back) gl.Color3f(0.0, 0.0, 1.0) 'Set The Color TO Blue gl.Vertex3f(-1.0, -1.0, -1.0) 'Bottom Right (Back) gl.End() gl.Begin(gl.TRIANGLES) 'Drawing Using Triangles gl.Color3f(1.0, 0.0, 0.0) 'Set The Color TO Red gl.Vertex3f(0.0, 1.0, 0.0) 'Top (Left) gl.Color3f(0.0, 0.0, 1.0) 'Set The Color TO Blue gl.Vertex3f(-1.0, -1.0, -1.0) 'Bottom Left (Left) gl.Color3f(0.0, 1.0, 0.0) 'Set The Color TO Green gl.Vertex3f(-1.0, -1.0, 1.0) 'Bottom Right (Left) gl.End() gl.LoadIdentity() 'Reset The Current Modelview Matrix gl.translatef(1.5, 0.0, -6.0) 'Move Right 1.5 Units And Into The Screen 6.0 gl.Rotatef(rquad, 1.0, 0.0, 0.0) 'Rotate The Quad On The X axis( NEW ) gl.Begin(gl.QUADS) 'Draw A Quad gl.Color3f(0.0, 1.0, 0.0) ' / / Set The Color TO Green gl.Vertex3f(1.0, 1.0, -1.0) ' / / Top Right OF The Quad(Top) gl.Vertex3f(-1.0, 1.0, -1.0) ' / / Top Left OF The Quad(Top) gl.Vertex3f(-1.0, 1.0, 1.0) ' / / Bottom Left OF The Quad(Top) gl.Vertex3f(1.0, 1.0, 1.0) ' / / Bottom Right OF The Quad(Top) gl.Color3f(1.0, 0.5, 0.0) ' / / Set The Color TO Orange gl.Vertex3f(1.0, -1.0, 1.0) ' / / Top Right OF The Quad(Bottom) gl.Vertex3f(-1.0, -1.0, 1.0) ' / / Top Left OF The Quad(Bottom) gl.Vertex3f(-1.0, -1.0, -1.0) ' / / Bottom Left OF The Quad(Bottom) gl.Vertex3f(1.0, -1.0, -1.0) ' / / Bottom Right OF The Quad(Bottom) gl.Color3f(1.0, 0.0, 0.0) ' / / Set The Color TO Red gl.Vertex3f(1.0, 1.0, 1.0) ' / / Top Right OF The Quad(Front) gl.Vertex3f(-1.0, 1.0, 1.0) ' / / Top Left OF The Quad(Front) gl.Vertex3f(-1.0, -1.0, 1.0) ' / / Bottom Left OF The Quad(Front) gl.Vertex3f(1.0, -1.0, 1.0) ' / / Bottom Right OF The Quad(Front) gl.Color3f(1.0, 1.0, 0.0) ' / / Set The Color TO Yellow gl.Vertex3f(1.0, -1.0, -1.0) ' / / Bottom Left OF The Quad(Back) gl.Vertex3f(-1.0, -1.0, -1.0) ' / / Bottom Right OF The Quad(Back) gl.Vertex3f(-1.0, 1.0, -1.0) ' / / Top Right OF The Quad(Back) gl.Vertex3f(1.0, 1.0, -1.0) ' / / Top Left OF The Quad(Back) gl.Color3f(0.0, 0.0, 1.0) ' / / Set The Color TO Blue gl.Vertex3f(-1.0, 1.0, 1.0) ' / / Top Right OF The Quad(Left) gl.Vertex3f(-1.0, 1.0, -1.0) ' / / Top Left OF The Quad(Left) gl.Vertex3f(-1.0, -1.0, -1.0) ' / / Bottom Left OF The Quad(Left) gl.Vertex3f(-1.0, -1.0, 1.0) ' / / Bottom Right OF The Quad(Left) gl.Color3f(0.0, 0.0, 1.0) ' / / Set The Color TO Blue gl.Vertex3f(-1.0, 1.0, 1.0) ' / / Top Right OF The Quad(Left) gl.Vertex3f(-1.0, 1.0, -1.0) ' / / Top Left OF The Quad(Left) gl.Vertex3f(-1.0, -1.0, -1.0) ' / / Bottom Left OF The Quad(Left) gl.Vertex3f(-1.0, -1.0, 1.0) ' / / Bottom Right OF The Quad(Left) gl.End() 'Done Drawing The Quad rtri += 0.2 'Increase The Rotation Variable FOR The Triangle( NEW ) rquad -= 0.15 'Decrease The Rotation Variable FOR The Quad( NEW ) 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 ����������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example6.module���������������������������������0000664�0000000�0000000�00000013061�14115753270�0024666�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we add texture to the box ' Gambas module file Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation( NEW ) Private yrot As Float 'Y Rotation( NEW ) Private zrot As Float 'Z Rotation( NEW ) Private textures As New Integer[1] Public Sub Main() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() Dim logo As Image gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) logo = Image.Load("NeHe.png") textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(logo) Glu.Build2DMipmaps(logo) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.3, 0.0, 0.3, 0.5) ' Black Background gl.ClearDepth(1.0) ' Depth Buffer Setup gl.Enable(gl.DEPTH_TEST) ' Enables Depth Testing gl.DepthFunc(gl.LEQUAL) ' The Type OF Depth Testing TO DO gl.Hint(gl.PERSPECTIVE_CORRECTION_HINT, gl.NICEST) ' Really Nice Perspective Calculations End Public Sub Screen_draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer gl.LoadIdentity() ' Reset The Current Matrix gl.Translatef(0.0, 0.0, -5.0) ' MOVE Into The Screen 5 Units 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 gl.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.Begin(Gl.QUADS) Gl.Colorf(1.0, 1.0, 1.0, 0.5) ' front face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Back face ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top face ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Face ' Top Right OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Right face ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Left face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) Gl.End() xrot += 0.09 ' X Axis Rotation yrot += 0.08 ' Y Axis Rotation zrot += 0.12 ' Z Axis Rotation 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 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example7.module���������������������������������0000664�0000000�0000000�00000015730�14115753270�0024674�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'Originally this tutorial was about filters,lights and keyboard, 'but in Due to limited OpenGl library i Gambas we have to skip filters. 'we change lighting with "l' or "L" key, and change roration speed 'with up, down, left, right, pageup and pagdown keys. ' Gambas module file Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation( NEW ) Private yrot As Float 'Y Rotation( NEW ) Private xspeed As Float 'x rotation speed Private yspeed As Float 'y rotation speed Private textures As New Integer[3] Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Private filter As Integer Private light As Integer = 0 Private lp As Integer Private fp As Integer Private z As Float = -5.0 Public Sub Main() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() LightAmbient = [0.2, 0.2, 0.2, 1.0] LightDiffuse = [1.0, 1.0, 1.0, 1.0] LightPosition = [0.0, 0.0, 2.0, 1.0] Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() Dim logo As Image Dim egs As Boolean gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) logo = Image.Load("crate.jpeg") textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(logo) Glu.Build2DMipmaps(logo) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.0, 0.0, 0.0, 0.0) ' Black Background gl.ClearDepth(2.0) ' Depth Buffer Setup gl.Enable(gl.DEPTH_TEST) ' Enables Depth Testing gl.DepthFunc(gl.LESS) ' The Type OF Depth Testing TO DO gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) gl.Lightfv(gl.LIGHT1, gl.AMBIENT, LightAmbient) ' add lighting.(ambient) gl.Lightfv(gl.LIGHT1, gl.DIFFUSE, LightDiffuse) ' add lighting.(diffuse). gl.Lightfv(gl.LIGHT1, gl.POSITION, LightPosition) ' set light position. gl.Enable(gl.LIGHT1) 'gl.Enable(gl.LIGHTING) End Public Sub Screen_draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer gl.LoadIdentity() ' Reset The Current Matrix gl.Translatef(0.0, 0.0, z) 'move z units out from the screen. 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.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.Begin(Gl.QUADS) gl.Normal3f(0.0, 0.0, 1.0) ' front face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Back face ' Bottom Right OF The Texture AND Quad gl.Normal3f(0.0, 0.0, -1.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top face ' Top Left OF The Texture AND Quad gl.Normal3f(0.0, 1.0, 0.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Face ' Top Right OF The Texture AND Quad gl.Normal3f(0.0, -1.0, 0.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Right face ' Bottom Right OF The Texture AND Quad gl.Normal3f(1.0, 0.0, 0.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Left face ' Bottom Left OF The Texture AND Quad gl.Normal3f(-1.0, 0.0, 0.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) Gl.End() xrot += xspeed ' Add xspeed TO xrot yrot += yspeed ' Add yspeed TO yrot End Public Sub Screen_keyPress() If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.text = "l" Or key.Text = "L") Then If lp = 0 Then gl.Enable(gl.LIGHTing) If lp = 1 Then gl.Disable(gl.LIGHTing) lp = 1 - lp Endif If (key.code = key.PageUp) Then z -= 0.02 'MOVE the cube into the distance. If (key.code = key.Pagedown) Then z += 0.02 'MOVE the cube closer. If (key.code = key.UP) Then xspeed -= 0.01 'decrease x rotation speed; If (key.code = key.DOWN) Then xspeed += 0.01 'increase x rotation speed; If (key.code = key.LEFT) Then yspeed -= 0.01 'decrease y rotation speed; If (key.code = key.RIGHT) Then yspeed += 0.01 'increase y rotation speed; End ����������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example8.module���������������������������������0000664�0000000�0000000�00000016507�14115753270�0024700�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we add transparency to our texture with "b" or "B" key. ' Gambas module file Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation( NEW ) Private yrot As Float 'Y Rotation( NEW ) Private xspeed As Float 'x rotation speed Private yspeed As Float 'y rotation speed Private textures As New Integer[3] Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Private filter As Integer Private light As Integer = 0 Private lp As Integer Private fp As Integer Private bp As Integer Private z As Float = -5.0 Public Sub Main() With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() LightAmbient = [0.2, 0.2, 0.2, 1.0] LightDiffuse = [1.0, 1.0, 1.0, 1.0] LightPosition = [0.0, 0.0, 2.0, 1.0] Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 init() End Public Sub Screen_resize() gl.ClearColor(0.5, 0.5, 0.5, 0.5) gl.Clear(gl.COLOR_BUFFER_BIT) Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) End Public Sub init() Dim logo As Image Dim egs As Boolean gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) logo = Image.Load("glass.png") textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(logo) Glu.Build2DMipmaps(logo) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping( NEW ) gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.ClearColor(0.0, 0.0, 0.0, 0.0) ' Black Background gl.ClearDepth(1.0) ' Depth Buffer Setup gl.Enable(gl.DEPTH_TEST) ' Enables Depth Testing gl.DepthFunc(gl.LESS) ' The Type OF Depth Testing TO DO gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) gl.Lightfv(gl.LIGHT0, gl.AMBIENT, LightAmbient) ' add lighting.(ambient) gl.Lightfv(gl.LIGHT0, gl.DIFFUSE, LightDiffuse) ' add lighting.(diffuse). gl.Lightfv(gl.LIGHT0, gl.POSITION, LightPosition) ' set light position. gl.Enable(gl.LIGHT0) gl.Enable(gl.LIGHTING) gl.blendfunc(gl.SRC_ALPHA, gl.ONE) ' Set The Blending FUNCTION For Translucency gl.Color4f(1.0, 1.0, 1.0, 0.5) End Public Sub Screen_draw() gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer gl.LoadIdentity() ' Reset The Current Matrix gl.Translatef(0.0, 0.0, z) 'move z units out from the screen. 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.BindTexture(gl.TEXTURE_2D, textures[0]) ' SELECT Our Texture Gl.Begin(Gl.QUADS) gl.Normal3f(0.0, 0.0, 1.0) ' front face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Back face ' Bottom Right OF The Texture AND Quad gl.Normal3f(0.0, 0.0, -1.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top face ' Top Left OF The Texture AND Quad gl.Normal3f(0.0, 1.0, 0.0) Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Face ' Top Right OF The Texture AND Quad gl.Normal3f(0.0, -1.0, 0.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Right face ' Bottom Right OF The Texture AND Quad gl.Normal3f(1.0, 0.0, 0.0) Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Left face ' Bottom Left OF The Texture AND Quad gl.Normal3f(-1.0, 0.0, 0.0) Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) Gl.End() xrot += xspeed ' Add xspeed TO xrot yrot += yspeed ' Add yspeed TO yrot End Public Sub Screen_keyPress() If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.Text = "b" Or key.Text = "B") Then If bp = 1 Then gl.Disable(gl.BLEND) ' Turn Blending Off gl.Enable(gl.DEPTH_TEST) ' Turn Depth Testing On Endif If bp = 0 Then gl.Enable(gl.BLEND) 'Turn Blending On gl.Disable(gl.DEPTH_TEST) 'Turn Depth Testing Off Endif bp = 1 - bp Endif If (key.text = "l" Or key.Text = "L") Then If lp = 0 Then gl.Enable(gl.LIGHTing) If lp = 1 Then gl.Disable(gl.LIGHTing) lp = 1 - lp Endif If (key.code = key.PageUp) Then z -= 0.02 'MOVE the cube into the distance. If (key.code = key.Pagedown) Then z += 0.02 'MOVE the cube closer. If (key.code = key.UP) Then xspeed -= 0.01 'decrease x rotation speed; If (key.code = key.DOWN) Then xspeed += 0.01 'increase x rotation speed; If (key.code = key.LEFT) Then yspeed -= 0.01 'decrease y rotation speed; If (key.code = key.RIGHT) Then yspeed += 0.01 'increase y rotation speed; End �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/Example9.module���������������������������������0000664�0000000�0000000�00000015347�14115753270�0024702�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file 'tutorial based on tutorial from NeHe Productions site at http://nehe.gamedev.net/ 'visit the page for more info on OpenGL ' 'In this tutorial we show how to move bitmaps in 3D space. "t" key changes intensity of bitmaps. ' Gambas module file Const num_star As Integer = 50 Const r As Integer = 0 Const g As Integer = 1 Const b As Integer = 2 Const dist As Integer = 3 Const angle As Integer = 4 Private screen As New Window(True) As "Screen" Private xrot As Float 'X Rotation Private yrot As Float 'Y Rotation Private xspeed As Float 'x rotation speed Private yspeed As Float 'y rotation speed Private texture As New Integer[1] 'storage FOR one texture Private LightAmbient As Float[] Private LightDiffuse As Float[] Private LightPosition As Float[] Private filter As Integer Private light As Integer = 0 Private lp As Integer Private fp As Integer Private bp As Integer Private z As Float = -5.0 Private col As Float[] Private twinkle As Integer = 0 Private star As New Float[51, 5] 'r, g, b; dist; angle; Private zoom As Float = -15.0 'viewing distance FROM stars. Private tilt As Float = 90.0 'tilt the view Private spin As Float 'spin twinkling stars Private loops As Integer 'general LOOP variable Public Sub Main() Randomize With screen .Width = 640 .Height = 480 .Title = MMain.Title .Show() End With End Public Sub Screen_Open() Gl.ClearDepth(100.0) 'Enables Clearing Of The Depth Buffer gl.ClearColor(0.0, 0.0, 0.0, 0.0) 'This Will Clear The Background Color To Black 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 init() End Public Sub Screen_resize() Gl.Viewport(0, 0, Screen.Width, Screen.Height) Gl.MatrixMode(Gl.PROJECTION) Gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window Gl.MatrixMode(Gl.MODELVIEW) gl.Enable(gl.BLEND) End Public Sub load_texture() Dim starr As Image Dim egs As Boolean starr = Image.Load("Star.png") texture = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, texture[0]) '2d texture (x and y size) Gl.TexImage2D(starr) Glu.Build2DMipmaps(starr) 'scale linearly when image smalled than texture Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR) 'scale linearly when image bigger than texture Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) End Public Sub init() Dim lops As Integer load_texture() gl.Enable(gl.TEXTURE_2D) ' Enable Texture Mapping gl.ClearColor(0.0, 0.0, 0.0, 0.0) ' Black Background gl.ClearDepth(1.0) ' Depth Buffer Setup gl.ShadeModel(gl.SMOOTH) ' Enable Smooth Shading gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() 'Reset The Projection Matrix glu.Perspective(45.0, screen.Width / screen.Height, 0.1, 100.0) 'Calculate The Aspect Ratio Of The Window gl.MatrixMode(gl.MODELVIEW) gl.blendfunc(gl.SRC_ALPHA, gl.ONE) ' Set The Blending FUNCTION For Translucency gl.Enable(gl.BLEND) 'Turn Blending On gl.Disable(gl.DEPTH_TEST) 'Turn Depth Testing Off For lops = 0 To num_star star[lops, angle] = 0.0 ' initially no rotation. star[lops, dist] = lops / num_star * 5 'calculate distance form the center star[lops, r] = Rnd(1) 'random red intensity; star[lops, g] = Rnd(1) 'random green intensity; star[lops, b] = Rnd(1) 'random blue intensity; Next End Public Sub Screen_draw() Dim lops As Integer gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Clear Screen AND Depth Buffer gl.BindTexture(gl.TEXTURE_2D, texture[0]) ' SELECT Our Texture For lops = 0 To num_star 'loop through all the stars. gl.LoadIdentity() 'reset the view before we draw EACH star. gl.Translatef(0.0, 0.0, zoom) 'zoom into the screen. gl.Rotatef(tilt, 1.0, 0.0, 0.0) 'tilt the view. gl.rotatef(star[lops, angle], 0.0, 1.0, 0.0) 'rotate TO the current star 's angle. gl.Translatef(star[lops, dist], 0.0, 0.0) 'MOVE forward on the X plane(the star 's x plane). gl.Rotatef(- star[lops, angle], 0.0, 1.0, 0.0) 'cancel the current star 's angle. gl.Rotatef(- tilt, 1.0, 0.0, 0.0) 'cancel the screen tilt. If (twinkle = 1) Then 'twinkling stars enabled ... draw an additional star. 'assign a color using bytes gl.Color4f(star[num_star - lops, r], star[num_star - lops, g], star[num_star - lops, b], 255) gl.Begin(gl.QUADS) 'begin drawing the textured quad. gl.TexCoord2f(0.0, 0.0) gl.Vertex3f(-1.0, -1.0, 0.0) gl.TexCoord2f(1.0, 0.0) gl.Vertex3f(1.0, -1.0, 0.0) gl.TexCoord2f(1.0, 1.0) gl.Vertex3f(1.0, 1.0, 0.0) gl.TexCoord2f(0.0, 1.0) gl.Vertex3f(-1.0, 1.0, 0.0) gl.End() 'done drawing the textured quad. Endif 'main star gl.Rotatef(spin, 0.0, 0.0, 1.0) 'rotate the star on the z axis. 'Assign A Color Using Bytes gl.Color4f(star[num_star - lops, r], star[num_star - lops, g], star[num_star - lops, b], 255) gl.Begin(gl.QUADS) 'Begin Drawing The Textured Quad gl.TexCoord2f(0.0, 0.0) gl.Vertex3f(-1.0, -1.0, 0.0) gl.TexCoord2f(1.0, 0.0) gl.Vertex3f(1.0, -1.0, 0.0) gl.TexCoord2f(1.0, 1.0) gl.Vertex3f(1.0, 1.0, 0.0) gl.TexCoord2f(0.0, 1.0) gl.Vertex3f(-1.0, 1.0, 0.0) gl.End() 'Done Drawing The Textured Quad spin += 0.01 'used TO spin the stars. star[lops, angle] += lops / num_star 'change star angle. star[lops, dist] -= 0.01 'bring back TO center. If (star[lops, dist] < 0) Then 'star hit the center star[lops, dist] += 5.0 'MOVE 5 units FROM the center. star[lops, r] = Rnd(1) 'new red intensity; star[lops, g] = Rnd(1) 'new green intensity; star[lops, b] = Rnd(1) 'new blue intensity; Endif Next End Public Sub Screen_keyPress() If (key.code = key.F1) Then screen.Fullscreen = Not screen.Fullscreen If (key.Code = key.Esc) Then Screen.Close() If (key.text = "t" Or key.Text = "T") Then twinkle = 1 - twinkle If (key.code = key.PageUp) Then zoom -= 0.2 'zoom out If (key.code = key.Pagedown) Then zoom += 0.2 'zoom in If (key.code = key.UP) Then tilt -= 5.0 'tilt up If (key.code = key.DOWN) Then tilt += 5.0 'tilt down End �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/.src/MMain.module������������������������������������0000664�0000000�0000000�00000000464�14115753270�0024211�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file Public Title As String Public Sub Main() Dim hClass As Class If Application.Args.Count >= 2 Then Title = Application.Args[2] hClass = Class.Load(Application.Args[1]) Object.Call(hClass, "Main") Else Print ("Usage: NeHeTutorial Example<N> <Title>") Endif End ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/NeHe.png���������������������������������������������0000664�0000000�0000000�00000034235�14115753270�0022464�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������kXT���PLTE�-���� ��� �&`�� ������ �%\�M�+k�.r�,n�"U�%�C�)d�*h�/u�1{�3~�5�4� "�,m�0x�.q�*g�>�N�R�Q�@�7�I�O�D�7�A�?�>�C�8��1|�9�=�6�;�@�)c�7�E�J�G�$X�;�G�I�H�E� Q�8� O�"V�!R�,�5�)�K�0w�4�;� �$[�0�@�H�/�L�U�W�S�V�T�D�L�G�]� �+� $�&_gq�&�K�)�?�K�3�8���I�Q�X�]�`�b�^�[�U�O�i� q�#y�%|�'�(�&~�"w�o�e�E� C�W�F�)�-�0�2�3�4�1�,�#z�� � @�f�l� r�!t�� �6�9�@�E�C�?�8�+�*�/�k�7�1�5�7�;�F��!|zy�K�<�O�TZ��#�2�W#~w[ aflqv�L&t� 9�8�R�L ` behkor&(s�4^in*�+���5�R� </3�'�6],159�* cX�Q79;>,F?3EA@YRIDBC][VLNKOPTX�� _��cSlkm��5XIDATx XS׶I`@4$L*Ř0H AkS{K[D 2XI <"P@*8 "U*HNsN&Bn+ds^ku���SʫƓ6~܄p҄רI�f$oNah>3a͌ŤD4͜9L?j53L7lbk%@Ϝmͱ͎ggoA4U\;v ^2�#'2C͜'^3\N3hDup,\w>oPﱀu4Lo-4z�E"IpΟ3Y,vQ喎5*c F35'%Ӵێ|K0(5#؈DJ<.}uLbZ Wނd~WgGq8sƑti*�q9L4L&stXYѦ5u_zA�Loy6L5�vg5�fΦ:qˬY�Ӗdw6s׉Ӈ0e;in盌�xy�X �EW:�y^:Nn9�1P`qk�aZ/�5}�囼\�F$�e<@l@"Yp_&�O7'�_�ҕ0�$*U/�,x�(�Hhf\T͈&yry�%*]� ,\ x6�$ 07f2& ؾ0a2ɿ�ani &=#�Ҹ _�ޒ5+pFK�]c0g2-Ħ�Øl�H^nL3bM@�0>� b b # 99 )vArx#0g*LC[bT�*�>_g@ n�:k�MITL � " ̓D5Yʚ1E��,}ķ1wt7~0caa< c@d@YYа[ Nׂ00\9�DoHz4g%kŎ[eb>ٍl7_T$G7HShHV#`" jx{ q�֠Vڮ^v-h`,&$5�x-ex(p�fXVK7c"m묵*�R�`巰>sb �XtbiPkMte<o�4x:`�`0�x]Hz}=[@`%Ul!`b9o>�xk2oo7p�k 7Z}Kˤa?g� qϡ1�+ƭh } a�Y(`96�P41i5{ÆijDbEYˤ)6.�.0{s">+l` �xgHיִ<t=bҺW�FfA44Z^A&Dɵ�gΘ~p�`�n.X�C'~Q@f҈X<s3֯_M2 {i:�ﰌ4o&Ǔ`)��98U���,ghjՃNX?z|CeK?B:l��YS]Er4;�0CGc{}sj�K`Mm8N`=Zֱt@w�xy<6ԦՖOg �RFz[36$?>l} Ǻk�r+`rgM#-^K[<僅8wI!Hg�$�P&ۻ pLܿb[h� `l7 Vظ󳝲~߇i ĆϚ5k>d{။% v$R8r7K!.XD@�fhxI^xxxXYZ1\鹒6��a�DV2�3aihڰ̘uš�LX,y(qrY2M=|9pBXҝǃw[HrYLZ]ӌ(5B:b1c6j7g!]dig<磪Q;{[Esz W{.D/@{J$,2ͤ!cwUyd oY-Eۘ*��\�d)!4+Wm|_v% �̇=%10#��lDs^}mdekvhQgO{ğd]l1 ['4�zj_H(X:R3Xɖs8Û㒹F_IrUrIA tg:es)�1@l'/��AMrd{6<"�؎dT'l1Mi(4Um�&99˗mP{3Gʝ0�rPFb�X["Êa.[%u䆼�`d5מka~ۺƐPBDe}\6yvS"b\("BJE40k`pu:QL.a Pl\̖OS s69ۛ 7 Fn JɆh8' ��d1?۞^Dzl8#�0lf˼ 58�6�T�G �]hk`0ba�v6ÿ&3y94drS]]-U`` @'�fF.N �c>GW�FlCM�&cY.Fw6Oh�-p�`�<v5�N<KpI�xq< 6J�1�66<5�<c],wh�&)]4Yl]p�u�b ٙ:ȑKe�<\e;,~�&CDU8�g{y.4 i`� ��Sx�.�PG K$j(�4s^1�cXnf̘w Ie|�G~)sD_̛�#<�E$Hre�tRoMLD�\�fY<n 0Q\HB^#!#Y!�S�G1�bѴO5"�ب�x\k<9�tbH>a�lP7Rw4 U� U�#�+JTLh�Z1A'_w~x)#>棑m0XLV8 ��,T@, !\�6|% rfqt ֪e�h Gߛv~wc^V8�sld@B 1\ϘYJL8;�ق^8,fk=hD� ;InTŞ`J�`kV^Q`b!F�>30osE�&/` F<@)H`WqWƪ)'�L`eF#�ۨ�'˨,ˤ�\`);h�֭1Ӎ%d�XX �ٮ3T�UWYk3)ze�8Z5{z7 "�T9,O#A3 @L#|�)&r~c�U�pXʱ[Bͱv/@w �d$-WB:wU!m:>B�?�ƂAmñUV(`�*|.k.Hl6#d#_[J˒ݨ:׀5kit(x: z9MQ *1P(ަbV�vl`|9�ΫW/(�^=@3�8XY�z:USXhsۢ7HQ3#W4UڸY^d �3s�dB �&& 2�o.@4|׵a&@xp`pb �xA�dk $ (�ldt2m5jdX6[%>Tdޣ/ZbgK�GQ01bs(& Q6`aDV*O@FKzC3�gU�" >(P[4*ŋK �T $;/Xb;SdaD�2'�h �FTe�bV+&\J&b(o9.N+ߝ&`'P*cZڱ9Nr�2.Xc 8�\؜/&@H̔9ADžt6b>ZsL<*4Ⱙ >Y �,Td}GjLS d,sF 001,#4X?~xʟ :�e09<l=� (P z1sW�2 [(!gA`*4B<9D3ғ=ԉ�<i<;Oz@#>o#*�ځ� 1^dJ^@Dʌ %U �$C/e;8s\)2*On ^^GyxJ`bj' F<_5 % X ,> 4�`e<Ĉ�HB�&^T $!0j0lC/Ub#:�& XWߖx|%{c� �;"�RH bBlL@uKA#,@ �pgsy!t�@|�͙q ;VNsnFW��x-D) ݧY+pCqh�Hy,�Gbs�D4G�x<%/nl pv{� 3>  d <[H˧D�P4HG<_QG0NR96TMo4y,l%(P�GLmPdg4,BAV$fTwqCM+8IYW7 �*a×\{# :4e?@@6 ��܋ws=&&<Ø)4=x<iʸjBi<V8 @һZ;̵<2@3fm2�\Inu�M@D^?/eg|h.�2MxR�oͺYn|cCs zǙJ0v�Ya�*{Ű34燅|6l㾄̑zbb,3�#[+h�o @ "rFK<eB1}�-xdd�L~F�Ɲ:pH&ƍ[ɘJx �&us [庿2clѪ J{AZ30;A5��pkd{ؖ<�4-1g5Z+l:AdbНo\ϏFt&} �yMΙqR`s�@2�83+H6r BnN� >Zr_s;ϳ9\'u�ܱeF~ez{/5h66<UQq1Wۨ4c\g�\f;O56rS_lL_ ?/6>KJ퍡]{G^wg6󊱃 7@_bĴw 1LTw 5)op_}0xo"G!Ԅ xtն=2η&~ k s}TȔETT{~%⩓ǜ??<nZ mŴW4~M|ۑgu <=Lҟյes L0p+jc3oL/ =?�ϩMb0Me~ Gc9*`giq4 G{E?(ɘ^ M7fnL4skeE3LI~c�2Q(9<|-D M~%A9O^mwа-Q[7% m۶m~~~/(x'/ ظI;6},ߝԴ(hѻ7�%.!]'CZfVvzRNdg1A[SwFFDFlg3:09jf�1''Jb(%ɿ+($2'oBB~h Bivgl&H}B(- >2%I>NM{~ vIZN~N /Lx9b$9-,3?9*y� O~]lO1Ғ"�vQ(Bafa"/-(&�BW:\Y\\ZWA+ 08$2Be jja9۞'Tp<$bRWY=pĉʓЛt*.mۋ ODefʬ/?rlcSpt|cC" ߿GoE`@^}EɶX� 33mg/7;&!L>thNv\"~4;Xuܹp`(Ib!�Y2gkW֖)W,iA^�[p�_}oYmUIKRz˟`&A'1۷1b @bWg6I,% {,`\e8i|1�6IRYGe輂tcO^Xm{vn%2,4$pHP dQ!)QRN EnIOBα%<,5?}�WYJ+"&EI|/ ߋ ܙ?v tb]AAo3HL*+66^ @_iGBD IHږyI;/$$ņG|}׻|`JW#bs\")/'vKddDlr|NWr$s PAndZb6�f+[qHl ޶556r#2-$,`ohZTZހ ]_9C]i@x6�Sr ki@َ[ŅGE%b3$hȢ'*D#-Hߑ hiF݂3:29at(8/!92t$dg.=EeJssse ,{v^MN/H%79>>/.74 $*>s ȏ̰LY֩쬲kPrkpp4OtjD܎B!jRQhm$ieת6-?|L>>qCrBy>OJo`Y}LX{E% #9"<R ]*  t)Lg lliAjvMXd`PP[nc`\l7$:,VֳLqxIIeҷIQayg 3LM ے�PHT M0?)>ᔏBTἮƅn?@t~wӈ�|榧Z0=92**2BVy駲2ՂC7"#c:?,wAZvH,_A kpB(_;[$-kHC+./e<Q>|k򏟧E?#/'�,;e3? %<9H +=(0D r})L4A\ƿ}[`̧0]*UN؋jWRvB~P"p!BմҾp�M v4|p^ZU[ \ ?2㓓 ]h @PTf1��)"z߲w_KJrS#�>[ ݅yt_ׅx鎄 ^SIG7 ݺu/G+A@^m;;w|U&OLHLG��hӧwG&FӃq|͹[ ˝H[dL/Ȅ~ߕnpIiWF G�`mA P_BhHRas5 >-ֆΝO<*pt)�mEW~||WRA�Ѕ4nBCC<z<$'+{߾l @,F 7¶޵+(FpLS֎}\tw辌={2.!蹅nJYՑ5`N @m)cg2vDE,h8{ܧpn0F$[yA4 NMq6pۻ:Zo#ÿtuu*BD<y<t΃�_I,kWQ '<yr}pw |K K- Gt_-E�*s¢C#s v{2a}spӟ,sw]a1Wy�=Wwe8R\yGbMtu^BBn?ȕ'Pv'\|P$ nj.((2OЊ#sp�Mٳœ=0x{FRH�>2\U1 =~]:|p_YkKrZy޲=� b^/#;::O?!U\ٱ6X�b|}rPZr_B0܅&٣2U#p `xQ* =KZ��KO ?zBލij]c 0NXn:[`l+GS.+n/Fn^;:+]UyZ>;�?N\h˓oТp9=z&{]]7dž`(p+Ս8h:ۯNnȥ",*nE4N@?pks$oDx<x zk^+З_� sG_rr5yQBfC-�0�8 YhYy'#�SmO�Dfsa}} _`_�tGHko!<ЍTT|LnÇzT?Ag(Ӄ�**pQA(s*??me!�M-} #R#}><V (k+WhmA۫-}w ot3mr#� 7474|ct��kº+lyA# `V2"mj:{XiY9<\|߾)Єb @kx{m\mO;"eq@'-.hj=lE�3ZD;|� @E4ݝB"�5�`W\o))EF7v<榣MM4CD%wq vuu*Kd&W//&܂~uÆ{w�Ch Ag{ JYQʋz��MX]p!]ub�!ڠT[nH\svwWa�]'�ŚLuMui#p h[GqqRE�2(lP �,B%*[ $;}  r*ğ$Gk3 ,iTe aQSAlPR gzA›#G\;sT�Gs% �'*;<_+~;`=mR�#|" !@n ӻR||ut^7pC~�GlT �I WP.*,ؗ� V��jJZ䧿<qAX|b5p}J�$Dytsm狯ߺçh9qP$6^( AP~tuXeϕQ'p֖V|C~gPLY'i@PZ c[ }ar cX F34u,p Pq{ GC*(RVZU[YK-Ԩ;x $�0Px0#W՜4@_{GX\^$MN  84TDKe*8STy^7HpZ9ZZ;KvnmT��p(P�DŽKo�j:l)Rwo� u3%'J4 /inoFqOCJA@W�ߐ,t �Bt,0KX~ 8vnL':Ya +n˕Bwt⹒:@ �Hp�*r]]OZja�d;B( k<? wÊK+;4 9py;NR{(#!2P�ٮ8(Y%_vIXT_~cgz{!{X FhlH yhP�UuV&я?3XG]Mg*| " ˪a)kmEa} T֩<[^Q“!4Ɂn&i@;tRƪN^<Sq C?]ȯ>Y@mSn�< t]Nӟ~M⦶^*] aњ0έ w !%@kG}>e(eF_/Fv�ôlkkhj۳mGϣ>H~~)C3a� P7_~"3(;B<8s4=ma;1{W擙Y6;;ZrNG-iSiY`xz K?ozÙh ̠$qÇ v]ǜ`1� Vw4X>cgEhQn'蔝랦G2=}pٛͥpyQH5r{<J@_+-s_PPA�y9^U�%f �M-THZOZ_҈̬=Ee*py phk^ww13l}4"y#7.K� |W 7a+ioll<\8Qyw JϢWO sRl!R: gK_(s7{/!�YB%*᪷kţMH!OÇD)351 i@ N)@VNvbʼn_SN(:tDB3_/]݁{C(w9�ppMl6>-'*OhRF 4v#,?}XD&^p Jh`wW]:㏆$ȇ /L5/@ ~HYH/$Y:$Qy70c+$2kjjΗ6"希 ;WxXy@?/W}s K@$\zҊm|-Z��umÚz{�B TQׁTR֩SR!$�(~^/Eu澜 HDJEs]1Q$Ο?QH!a[Hu<αDjV mAgJbq@�zcP:z\UIe+VxI0v|clxaV|xtJT}x" j"-@SXpHDb^)}DDm~Cڮ52t ~džJ+`j<Tn,S=7jӁ4܆gH W@6),;\XS[|CVv|ΰ-qe .Jw$$2^ 1MF{ss;!Ah`#/ H V2Ҳ̬!+J5XT:ڝY#=)(cװMB9PtGR||^V'wZWԧ /|o@@NS cD^{vܹ)Ą}u@l[tlb>S_-T}6-(3CAz!!!Q`PzAg /f܈$'?y֠AysS%wJV"=YciZςRPAB}<TK=JP.{#^sj%0{GB\v(=`lpɓ1 &칐*AzWpNe_Dži\-٦Se7'2 ADTds@Z""HHoyO4=!/'7'/!=P3 ݙ??P?'bXJCEI?ԈhIjSBixT-HU L`xƩ\] ō; ب�Ս#/p@?T!V}#Sxji[% IW�eڗ%,-5m-i%i9XyNt$(?4; }$$߁OQ޴- DLQz_WJ om !  s7F> O KI؟'b]PqV܍؈["wF(;%:55`n, HIMKio_^t8$&?�tT>އ9 >#7F*ءlL6<E, h !%i[P!`xZJDO7E‘萭@☘AA6u n :>>uNB[BAp`6;C~ۂNLGVŃ߄TͪǃR͒ *LT) ,ۄ*ѠY3?p[I ƴⅦ1_[_ʋx9���Sx�%S����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/Sphere.txt�������������������������������������������0000664�0000000�0000000�00000022151�14115753270�0023120�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-0.106,1.593,2.272 -0.106,2.036,2.228 -0.193,2.028,2.228 -0.276,2.002,2.228 -0.353,1.961,2.228 -0.420,1.906,2.228 -0.475,1.839,2.228 -0.516,1.763,2.228 -0.541,1.679,2.228 -0.550,1.593,2.228 -0.541,1.506,2.228 -0.516,1.423,2.228 -0.475,1.347,2.228 -0.420,1.280,2.228 -0.353,1.224,2.228 -0.276,1.183,2.228 -0.193,1.158,2.228 -0.106,1.150,2.228 -0.020,1.158,2.228 0.063,1.183,2.228 0.140,1.224,2.228 0.207,1.280,2.228 0.262,1.347,2.228 0.303,1.423,2.228 0.328,1.506,2.228 0.337,1.593,2.228 0.328,1.679,2.228 0.303,1.763,2.228 0.262,1.839,2.228 0.207,1.906,2.228 0.140,1.961,2.228 0.063,2.002,2.228 -0.020,2.028,2.228 -0.106,2.462,2.099 -0.276,2.446,2.099 -0.439,2.396,2.099 -0.589,2.316,2.099 -0.721,2.208,2.099 -0.829,2.076,2.099 -0.910,1.926,2.099 -0.959,1.763,2.099 -0.976,1.593,2.099 -0.959,1.423,2.099 -0.910,1.260,2.099 -0.829,1.110,2.099 -0.721,0.978,2.099 -0.589,0.870,2.099 -0.439,0.790,2.099 -0.276,0.740,2.099 -0.106,0.724,2.099 0.063,0.740,2.099 0.226,0.790,2.099 0.377,0.870,2.099 0.508,0.978,2.099 0.616,1.110,2.099 0.697,1.260,2.099 0.746,1.423,2.099 0.763,1.593,2.099 0.746,1.763,2.099 0.697,1.926,2.099 0.616,2.076,2.099 0.508,2.208,2.099 0.377,2.316,2.099 0.226,2.396,2.099 0.063,2.446,2.099 -0.106,2.855,1.889 -0.353,2.831,1.889 -0.589,2.759,1.889 -0.808,2.642,1.889 -0.999,2.485,1.889 -1.156,2.294,1.889 -1.273,2.076,1.889 -1.344,1.839,1.889 -1.369,1.593,1.889 -1.344,1.347,1.889 -1.273,1.110,1.889 -1.156,0.892,1.889 -0.999,0.700,1.889 -0.808,0.544,1.889 -0.589,0.427,1.889 -0.353,0.355,1.889 -0.106,0.331,1.889 0.140,0.355,1.889 0.377,0.427,1.889 0.595,0.544,1.889 0.786,0.700,1.889 0.943,0.892,1.889 1.060,1.110,1.889 1.131,1.347,1.889 1.156,1.593,1.889 1.131,1.839,1.889 1.060,2.076,1.889 0.943,2.294,1.889 0.786,2.485,1.889 0.595,2.642,1.889 0.377,2.759,1.889 0.140,2.831,1.889 -0.106,3.199,1.606 -0.420,3.168,1.606 -0.721,3.077,1.606 -0.999,2.929,1.606 -1.242,2.729,1.606 -1.442,2.485,1.606 -1.591,2.208,1.606 -1.682,1.906,1.606 -1.713,1.593,1.606 -1.682,1.280,1.606 -1.591,0.978,1.606 -1.442,0.700,1.606 -1.242,0.457,1.606 -0.999,0.257,1.606 -0.721,0.109,1.606 -0.420,0.017,1.606 -0.106,-0.013,1.606 0.207,0.017,1.606 0.508,0.109,1.606 0.786,0.257,1.606 1.029,0.457,1.606 1.229,0.700,1.606 1.378,0.978,1.606 1.469,1.280,1.606 1.500,1.593,1.606 1.469,1.906,1.606 1.378,2.208,1.606 1.229,2.485,1.606 1.029,2.729,1.606 0.786,2.929,1.606 0.508,3.077,1.606 0.207,3.168,1.606 -0.106,3.482,1.262 -0.475,3.446,1.262 -0.829,3.338,1.262 -1.156,3.164,1.262 -1.442,2.929,1.262 -1.677,2.642,1.262 -1.852,2.316,1.262 -1.959,1.961,1.262 -1.995,1.593,1.262 -1.959,1.224,1.262 -1.852,0.870,1.262 -1.677,0.544,1.262 -1.442,0.257,1.262 -1.156,0.022,1.262 -0.829,-0.152,1.262 -0.475,-0.260,1.262 -0.106,-0.296,1.262 0.262,-0.260,1.262 0.616,-0.152,1.262 0.943,0.022,1.262 1.229,0.257,1.262 1.464,0.544,1.262 1.639,0.870,1.262 1.746,1.224,1.262 1.782,1.593,1.262 1.746,1.961,1.262 1.639,2.316,1.262 1.464,2.642,1.262 1.229,2.929,1.262 0.943,3.164,1.262 0.616,3.338,1.262 0.262,3.446,1.262 -0.106,3.692,0.869 -0.516,3.651,0.869 -0.910,3.532,0.869 -1.273,3.338,0.869 -1.591,3.077,0.869 -1.852,2.759,0.869 -2.046,2.396,0.869 -2.165,2.002,0.869 -2.205,1.593,0.869 -2.165,1.183,0.869 -2.046,0.790,0.869 -1.852,0.427,0.869 -1.591,0.109,0.869 -1.273,-0.152,0.869 -0.910,-0.346,0.869 -0.516,-0.466,0.869 -0.106,-0.506,0.869 0.303,-0.466,0.869 0.697,-0.346,0.869 1.060,-0.152,0.869 1.378,0.109,0.869 1.639,0.427,0.869 1.833,0.790,0.869 1.952,1.183,0.869 1.992,1.593,0.869 1.952,2.002,0.869 1.833,2.396,0.869 1.639,2.759,0.869 1.378,3.077,0.869 1.060,3.338,0.869 0.697,3.532,0.869 0.303,3.651,0.869 -0.106,3.821,0.443 -0.541,3.778,0.443 -0.959,3.651,0.443 -1.344,3.446,0.443 -1.682,3.168,0.443 -1.959,2.831,0.443 -2.165,2.446,0.443 -2.292,2.028,0.443 -2.335,1.593,0.443 -2.292,1.158,0.443 -2.165,0.740,0.443 -1.959,0.355,0.443 -1.682,0.017,0.443 -1.344,-0.260,0.443 -0.959,-0.466,0.443 -0.541,-0.592,0.443 -0.106,-0.635,0.443 0.328,-0.592,0.443 0.746,-0.466,0.443 1.131,-0.260,0.443 1.469,0.017,0.443 1.746,0.355,0.443 1.952,0.740,0.443 2.079,1.158,0.443 2.122,1.593,0.443 2.079,2.028,0.443 1.952,2.446,0.443 1.746,2.831,0.443 1.469,3.168,0.443 1.131,3.446,0.443 0.746,3.651,0.443 0.328,3.778,0.443 -0.106,3.865,-0.000 -0.550,3.821,-0.000 -0.976,3.692,-0.000 -1.369,3.482,-0.000 -1.713,3.199,-0.000 -1.995,2.855,-0.000 -2.205,2.462,-0.000 -2.335,2.036,-0.000 -2.378,1.593,-0.000 -2.335,1.150,-0.000 -2.205,0.724,-0.000 -1.995,0.331,-0.000 -1.713,-0.013,-0.000 -1.369,-0.296,-0.000 -0.976,-0.506,-0.000 -0.550,-0.635,-0.000 -0.106,-0.679,-0.000 0.337,-0.635,-0.000 0.763,-0.506,-0.000 1.156,-0.296,-0.000 1.500,-0.013,-0.000 1.782,0.331,-0.000 1.992,0.724,-0.000 2.122,1.150,-0.000 2.165,1.593,-0.000 2.122,2.036,-0.000 1.992,2.462,-0.000 1.782,2.855,-0.000 1.500,3.199,-0.000 1.156,3.482,-0.000 0.763,3.692,-0.000 0.337,3.821,-0.000 -0.106,3.821,-0.443 -0.541,3.778,-0.443 -0.959,3.651,-0.443 -1.344,3.446,-0.443 -1.682,3.168,-0.443 -1.959,2.831,-0.443 -2.165,2.446,-0.443 -2.292,2.028,-0.443 -2.335,1.593,-0.443 -2.292,1.158,-0.443 -2.165,0.740,-0.443 -1.959,0.355,-0.443 -1.682,0.017,-0.443 -1.344,-0.260,-0.443 -0.959,-0.466,-0.443 -0.541,-0.592,-0.443 -0.106,-0.635,-0.443 0.328,-0.592,-0.443 0.746,-0.466,-0.443 1.131,-0.260,-0.443 1.469,0.017,-0.443 1.746,0.355,-0.443 1.952,0.740,-0.443 2.079,1.158,-0.443 2.122,1.593,-0.443 2.079,2.028,-0.443 1.952,2.446,-0.443 1.746,2.831,-0.443 1.469,3.168,-0.443 1.131,3.446,-0.443 0.746,3.651,-0.443 0.328,3.778,-0.443 -0.106,3.692,-0.869 -0.516,3.651,-0.869 -0.910,3.532,-0.869 -1.273,3.338,-0.869 -1.591,3.077,-0.869 -1.852,2.759,-0.869 -2.046,2.396,-0.869 -2.165,2.002,-0.869 -2.205,1.593,-0.869 -2.165,1.183,-0.869 -2.046,0.790,-0.869 -1.852,0.427,-0.869 -1.591,0.109,-0.869 -1.273,-0.152,-0.869 -0.910,-0.346,-0.869 -0.516,-0.466,-0.869 -0.106,-0.506,-0.869 0.303,-0.466,-0.869 0.697,-0.346,-0.869 1.060,-0.152,-0.869 1.378,0.109,-0.869 1.639,0.427,-0.869 1.833,0.790,-0.869 1.952,1.183,-0.869 1.992,1.593,-0.869 1.952,2.002,-0.869 1.833,2.396,-0.869 1.639,2.759,-0.869 1.378,3.077,-0.869 1.060,3.338,-0.869 0.697,3.532,-0.869 0.303,3.651,-0.869 -0.106,3.482,-1.262 -0.475,3.446,-1.262 -0.829,3.338,-1.262 -1.156,3.164,-1.262 -1.442,2.929,-1.262 -1.677,2.642,-1.262 -1.852,2.316,-1.262 -1.959,1.961,-1.262 -1.995,1.593,-1.262 -1.959,1.224,-1.262 -1.852,0.870,-1.262 -1.677,0.544,-1.262 -1.442,0.257,-1.262 -1.156,0.022,-1.262 -0.829,-0.152,-1.262 -0.475,-0.260,-1.262 -0.106,-0.296,-1.262 0.262,-0.260,-1.262 0.616,-0.152,-1.262 0.943,0.022,-1.262 1.229,0.257,-1.262 1.464,0.544,-1.262 1.639,0.870,-1.262 1.746,1.224,-1.262 1.782,1.593,-1.262 1.746,1.961,-1.262 1.639,2.316,-1.262 1.464,2.642,-1.262 1.229,2.929,-1.262 0.943,3.164,-1.262 0.616,3.338,-1.262 0.262,3.446,-1.262 -0.106,3.199,-1.606 -0.420,3.168,-1.606 -0.721,3.077,-1.606 -0.999,2.929,-1.606 -1.242,2.729,-1.606 -1.442,2.485,-1.606 -1.591,2.208,-1.606 -1.682,1.906,-1.606 -1.713,1.593,-1.606 -1.682,1.280,-1.606 -1.591,0.978,-1.606 -1.442,0.700,-1.606 -1.242,0.457,-1.606 -0.999,0.257,-1.606 -0.721,0.109,-1.606 -0.420,0.017,-1.606 -0.106,-0.013,-1.606 0.207,0.017,-1.606 0.508,0.109,-1.606 0.786,0.257,-1.606 1.029,0.457,-1.606 1.229,0.700,-1.606 1.378,0.978,-1.606 1.469,1.280,-1.606 1.500,1.593,-1.606 1.469,1.906,-1.606 1.378,2.208,-1.606 1.229,2.485,-1.606 1.029,2.729,-1.606 0.786,2.929,-1.606 0.508,3.077,-1.606 0.207,3.168,-1.606 -0.106,2.855,-1.889 -0.353,2.831,-1.889 -0.589,2.759,-1.889 -0.808,2.642,-1.889 -0.999,2.485,-1.889 -1.156,2.294,-1.889 -1.273,2.076,-1.889 -1.344,1.839,-1.889 -1.369,1.593,-1.889 -1.344,1.347,-1.889 -1.273,1.110,-1.889 -1.156,0.892,-1.889 -0.999,0.700,-1.889 -0.808,0.544,-1.889 -0.589,0.427,-1.889 -0.353,0.355,-1.889 -0.106,0.331,-1.889 0.140,0.355,-1.889 0.377,0.427,-1.889 0.595,0.544,-1.889 0.786,0.700,-1.889 0.943,0.892,-1.889 1.060,1.110,-1.889 1.131,1.347,-1.889 1.156,1.593,-1.889 1.131,1.839,-1.889 1.060,2.076,-1.889 0.943,2.294,-1.889 0.786,2.485,-1.889 0.595,2.642,-1.889 0.377,2.759,-1.889 0.140,2.831,-1.889 -0.106,2.462,-2.099 -0.276,2.446,-2.099 -0.439,2.396,-2.099 -0.589,2.316,-2.099 -0.721,2.208,-2.099 -0.829,2.076,-2.099 -0.910,1.926,-2.099 -0.959,1.763,-2.099 -0.976,1.593,-2.099 -0.959,1.423,-2.099 -0.910,1.260,-2.099 -0.829,1.110,-2.099 -0.721,0.978,-2.099 -0.589,0.870,-2.099 -0.439,0.790,-2.099 -0.276,0.740,-2.099 -0.106,0.724,-2.099 0.063,0.740,-2.099 0.226,0.790,-2.099 0.377,0.870,-2.099 0.508,0.978,-2.099 0.616,1.110,-2.099 0.697,1.260,-2.099 0.746,1.423,-2.099 0.763,1.593,-2.099 0.746,1.763,-2.099 0.697,1.926,-2.099 0.616,2.076,-2.099 0.508,2.208,-2.099 0.377,2.316,-2.099 0.226,2.396,-2.099 0.063,2.446,-2.099 -0.106,2.036,-2.228 -0.193,2.028,-2.228 -0.276,2.002,-2.228 -0.353,1.961,-2.228 -0.420,1.906,-2.228 -0.475,1.839,-2.228 -0.516,1.763,-2.228 -0.541,1.679,-2.228 -0.550,1.593,-2.228 -0.541,1.506,-2.228 -0.516,1.423,-2.228 -0.475,1.347,-2.228 -0.420,1.280,-2.228 -0.353,1.224,-2.228 -0.276,1.183,-2.228 -0.193,1.158,-2.228 -0.106,1.150,-2.228 -0.020,1.158,-2.228 0.063,1.183,-2.228 0.140,1.224,-2.228 0.207,1.280,-2.228 0.262,1.347,-2.228 0.303,1.423,-2.228 0.328,1.506,-2.228 0.337,1.593,-2.228 0.328,1.679,-2.228 0.303,1.763,-2.228 0.262,1.839,-2.228 0.207,1.906,-2.228 0.140,1.961,-2.228 0.063,2.002,-2.228 -0.020,2.028,-2.228 -0.106,1.593,-2.272 0.140,1.961,-2.228 0.063,2.002,-2.228 -0.020,2.028,-2.228 -0.106,1.593,-2.272 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/Star.png���������������������������������������������0000664�0000000�0000000�00000011456�14115753270�0022556�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR����������U>��IDATx[r#Irt̬*dOd8I3 #\uG+ <=ΌH~_>>%�0~�|/0 M!�.2w鿀Eu !,eć ]\gQr'c7b0@P p+? �qx@ A�0V�6k})cK)G��V?E h<4'�J42hڂ>&(m=@`}앃bB/�'(X<r`kOZ0PFfC\S B 7{a~b_H CT<\MQ 3'ത*6+ �gkǴY"o+ѺI$HN- p#DK!#xc8 +Җ)mE_E(:? A-%mu `t fQ~MyY4C1z۾Hk4Y6ML,>davEFk`Zh@ILـ,MiSM(L \ճc(DDn+:,OaJ.5CB1 w�ޱP ٚ$i�,Dхfb}<b4^mLoį\pPٳe`p(,tFr$|LN‹?d`go^Ý?#XDs`2i&_ ŔJ�aR6% X S*0I R R-W>Wo˃?Zhpr(]PH3!$]NܴƁ~$rCRD5Kp5uQ Is&S[? Df7R q7 BZAX:9Z>gMhFjN!b-QzL`tI;5X|B##E3)8RI lN9PƱ|enxYB4c]0|>}':.(O/.C]́1D:Đ`}htdMs'y)*# h<??)h5tX8WѕSrztZ2Vp `4#-FZBAC,\āuC(5tϯf p K <3뺢o^1Y =W;dS0ts{MԞ!8zfF2>Sc;5q30NCaiNN_Ih!֔ϵ~%&;ƱRhT+ F1,?K1OsK<L!X <>΂S$㸵N7s\_p+ C \!!{_^<XQ5j-5Dнϕ4Ѡek39ud`9}bux:.[},1:q,gC%3]]H;,5WbdK\,&ڮݐ0}yv]a w]Aէs @C�୺6W;1B5 bf]l^SijyTBiܱ#Z�㼕l+q/j%K_.sOݝjRC!%jT [s6ٛ F"Zq hNSyO\jwVkK ^Btcsܷ>ŻP|;H. hC]o5Zj5ft0ͧk.zY�lnH+xF0ys[JNOW5?}asd^ڵXqJ�i!BGK_sy}b�,$+W>MMýk\޴q*X7Xe!hfd+0uir_"a�t߮0MI{k|e�.�n;~H)F3!)�H v鱞N>]嚋"pr]=H־u1YTaN+"É ɻx|jS`I[ۺtDKjec !־Hr_/w^kí.l#VKͥb t)S$mi ?t]54\/:b߭@{GzUHBk݅|:u]s/$5> xz\jmZ:oU^YHB!2j 4[!A>]_^.qʥ4Ђ"'*8~)i1u1mW)N)ۻrcHRjamҩ8>wg4f$]w0 >;@E;]iS@yG0-MO}?=qR5o#-Dڨ �5ȽE,-[<8 �e8\!x;;yG�@ !KNЧe4̄d2ZW[+ys)Z[s̃DaZa`!ĮaԧC@r !`)(oڼ-ͼy[+u?dYL>`0TrU<';N5w`)bz}|\!tqt7-"*ȐA}w^WS[I䯣pim* Inc7>ɽAy+>1^1/RⒿYY{z|)cne-\.&5P^h ]kEWb#PqQAH'Y k+ G3 d۰m~p6 ?|ҽiC<!'Cy36ww_|P+rn5!}zYOqgd riɮH 'uՄ ɺ]<Vvk!bgy3^1z d]~$:k(#b7\Z\ut)c.ٛ\ Pc2|uCp ^BG=0yu2$tB# /)%Ou4ֆVB4g<Nk(m`Dž6n<Ů8]:p~aOOb_[)b2MMJ ] i,uV`#u'bȓ`}W))Ltyc]):SKYxvD#P*\d scг^_=ȵZK \reL,ǒۮ3½y2@NL&󾫺< }*+RZjA%xbBC:X_D$-HqRv1۵GȦ2 ZEBCP˘<,V:V/8N[ AR&*^\CrkkV$% z̢`ؚXzd:Pnx+T?&X-~ڕ%Ω{eAК*� l& ZuR[.^kk.5y.@JYyBNujs|Tx6 x*s;$7ZuRdӕN/̹:*ښ\r_ɂj vgX7R,b1kmbv/-ֽڼ"Wœ.o8/D2W3 j,NՂy *-ҵm>G_mk3tn>ݤü�,`: ^'jh5#BL(t2oTSغxmc^}i,~g4z-֚ˢVӛЖ`;s8e4ZcՂ2kWc87^؆%W:Z͕s`<ZWwXzm~19dz:3& AsLJPɬjsKr9KE،�nƁ4yIɜlSi.P'72 = l[5.i˖ !0oMHh"C !?`?82oA䈞@;$@m>ׁ[>QvxԒfJq.fjIEmo86^޹ı@xq�ùji+7~MU%[!71{977S)M7h pDn'ṯA|:->8a@'!N@&9~v6ZPo#GZ:KF>t`-BFpap\ylxs =kVu�sQXlo jod} 15(lp=~˿q'fvP8 xc{X}uQ� NB">�ڝ[1̭Y%}�=Zuv,! �V55a?�[9.v, [{@V!z`Oii}X�!G�]ţ2!{>D?og�8"o\W8DX�vOmp`:V?3 2}{?z1=')ҁ %C%$o'g [Qǿ4:oR�][_UG8:Q/x6f����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/Torus.txt��������������������������������������������0000664�0000000�0000000�00000022416�14115753270�0023012�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-0.033,0.000,2.344 -0.033,-0.144,2.318 -0.033,-0.271,2.245 -0.033,-0.366,2.133 -0.033,-0.416,1.995 -0.033,-0.416,1.848 -0.033,-0.366,1.711 -0.033,-0.271,1.598 -0.033,-0.144,1.525 -0.033,0.000,1.499 -0.033,0.144,1.525 -0.033,0.271,1.598 -0.033,0.366,1.711 -0.033,0.416,1.848 -0.033,0.416,1.995 -0.033,0.366,2.133 -0.033,0.271,2.245 -0.033,0.144,2.318 0.498,0.000,2.282 0.492,-0.144,2.257 0.475,-0.271,2.186 0.449,-0.366,2.076 0.417,-0.416,1.942 0.383,-0.416,1.800 0.351,-0.366,1.666 0.326,-0.271,1.556 0.309,-0.144,1.485 0.303,0.000,1.460 0.309,0.144,1.485 0.326,0.271,1.556 0.351,0.366,1.666 0.383,0.416,1.800 0.417,0.416,1.942 0.449,0.366,2.076 0.475,0.271,2.186 0.492,0.144,2.257 0.999,0.000,2.099 0.988,-0.144,2.076 0.955,-0.271,2.011 0.905,-0.366,1.911 0.843,-0.416,1.787 0.777,-0.416,1.656 0.715,-0.366,1.533 0.665,-0.271,1.433 0.632,-0.144,1.367 0.620,0.000,1.345 0.632,0.144,1.367 0.665,0.271,1.433 0.715,0.366,1.533 0.777,0.416,1.656 0.843,0.416,1.787 0.905,0.366,1.911 0.955,0.271,2.011 0.988,0.144,2.076 1.446,0.000,1.806 1.429,-0.144,1.786 1.382,-0.271,1.730 1.310,-0.366,1.644 1.221,-0.416,1.538 1.127,-0.416,1.426 1.038,-0.366,1.321 0.966,-0.271,1.235 0.919,-0.144,1.178 0.903,0.000,1.159 0.919,0.144,1.178 0.966,0.271,1.235 1.038,0.366,1.321 1.127,0.416,1.426 1.221,0.416,1.538 1.310,0.366,1.644 1.382,0.271,1.730 1.429,0.144,1.786 1.812,0.000,1.417 1.792,-0.144,1.402 1.733,-0.271,1.358 1.643,-0.366,1.291 1.532,-0.416,1.209 1.415,-0.416,1.121 1.304,-0.366,1.039 1.214,-0.271,0.972 1.155,-0.144,0.928 1.135,0.000,0.913 1.155,0.144,0.928 1.214,0.271,0.972 1.304,0.366,1.039 1.415,0.416,1.121 1.532,0.416,1.209 1.643,0.366,1.291 1.733,0.271,1.358 1.792,0.144,1.402 2.079,0.000,0.955 2.056,-0.144,0.945 1.988,-0.271,0.916 1.885,-0.366,0.871 1.759,-0.416,0.817 1.624,-0.416,0.758 1.498,-0.366,0.704 1.394,-0.271,0.659 1.327,-0.144,0.630 1.304,0.000,0.620 1.327,0.144,0.630 1.394,0.271,0.659 1.498,0.366,0.704 1.624,0.416,0.758 1.759,0.416,0.817 1.885,0.366,0.871 1.988,0.271,0.916 2.056,0.144,0.945 2.232,0.000,0.443 2.207,-0.144,0.439 2.135,-0.271,0.426 2.024,-0.366,0.406 1.889,-0.416,0.383 1.744,-0.416,0.357 1.609,-0.366,0.333 1.498,-0.271,0.314 1.426,-0.144,0.301 1.401,0.000,0.297 1.426,0.144,0.301 1.498,0.271,0.314 1.609,0.366,0.333 1.744,0.416,0.357 1.889,0.416,0.383 2.024,0.366,0.406 2.135,0.271,0.426 2.207,0.144,0.439 2.263,-0.000,-0.090 2.238,-0.144,-0.089 2.165,-0.271,-0.084 2.053,-0.366,-0.078 1.915,-0.416,-0.070 1.769,-0.416,-0.061 1.631,-0.366,-0.053 1.519,-0.271,-0.047 1.446,-0.144,-0.042 1.420,0.000,-0.041 1.446,0.144,-0.042 1.519,0.271,-0.047 1.631,0.366,-0.053 1.769,0.416,-0.061 1.915,0.416,-0.070 2.053,0.366,-0.078 2.165,0.271,-0.084 2.238,0.144,-0.089 2.171,-0.000,-0.616 2.146,-0.144,-0.609 2.076,-0.271,-0.588 1.968,-0.366,-0.555 1.836,-0.416,-0.516 1.696,-0.416,-0.474 1.564,-0.366,-0.434 1.456,-0.271,-0.402 1.386,-0.144,-0.381 1.362,0.000,-0.374 1.386,0.144,-0.381 1.456,0.271,-0.402 1.564,0.366,-0.434 1.696,0.416,-0.474 1.836,0.416,-0.516 1.968,0.366,-0.555 2.076,0.271,-0.588 2.146,0.144,-0.609 1.959,-0.000,-1.106 1.937,-0.144,-1.094 1.873,-0.271,-1.057 1.776,-0.366,-1.001 1.657,-0.416,-0.932 1.530,-0.416,-0.859 1.411,-0.366,-0.790 1.313,-0.271,-0.733 1.250,-0.144,-0.697 1.228,0.000,-0.684 1.250,0.144,-0.697 1.313,0.271,-0.733 1.411,0.366,-0.790 1.530,0.416,-0.859 1.657,0.416,-0.932 1.776,0.366,-1.001 1.873,0.271,-1.057 1.937,0.144,-1.094 1.640,-0.000,-1.535 1.622,-0.144,-1.517 1.568,-0.271,-1.467 1.487,-0.366,-1.390 1.386,-0.416,-1.295 1.280,-0.416,-1.195 1.179,-0.366,-1.100 1.098,-0.271,-1.023 1.044,-0.144,-0.973 1.026,0.000,-0.955 1.044,0.144,-0.973 1.098,0.271,-1.023 1.179,0.366,-1.100 1.280,0.416,-1.195 1.386,0.416,-1.295 1.487,0.366,-1.390 1.568,0.271,-1.467 1.622,0.144,-1.517 1.231,-0.000,-1.878 1.217,-0.144,-1.857 1.177,-0.271,-1.795 1.115,-0.366,-1.702 1.039,-0.416,-1.586 0.959,-0.416,-1.464 0.883,-0.366,-1.349 0.821,-0.271,-1.255 0.781,-0.144,-1.194 0.767,0.000,-1.172 0.781,0.144,-1.194 0.821,0.271,-1.255 0.883,0.366,-1.349 0.959,0.416,-1.464 1.039,0.416,-1.586 1.115,0.366,-1.702 1.177,0.271,-1.795 1.217,0.144,-1.857 0.754,-0.000,-2.118 0.745,-0.144,-2.094 0.720,-0.271,-2.025 0.682,-0.366,-1.919 0.634,-0.416,-1.790 0.584,-0.416,-1.652 0.537,-0.366,-1.523 0.499,-0.271,-1.417 0.474,-0.144,-1.348 0.465,-0.000,-1.324 0.474,0.144,-1.348 0.499,0.271,-1.417 0.537,0.366,-1.523 0.584,0.416,-1.652 0.634,0.416,-1.790 0.682,0.366,-1.919 0.720,0.271,-2.025 0.745,0.144,-2.094 0.234,-0.000,-2.241 0.231,-0.144,-2.215 0.223,-0.271,-2.143 0.210,-0.366,-2.031 0.194,-0.416,-1.894 0.177,-0.416,-1.749 0.161,-0.366,-1.612 0.148,-0.271,-1.500 0.139,-0.144,-1.427 0.136,-0.000,-1.402 0.139,0.144,-1.427 0.148,0.271,-1.500 0.161,0.366,-1.612 0.177,0.416,-1.749 0.194,0.416,-1.894 0.210,0.366,-2.031 0.223,0.271,-2.143 0.231,0.144,-2.215 -0.300,-0.000,-2.241 -0.297,-0.144,-2.215 -0.288,-0.271,-2.143 -0.275,-0.366,-2.031 -0.259,-0.416,-1.894 -0.242,-0.416,-1.749 -0.226,-0.366,-1.612 -0.213,-0.271,-1.500 -0.205,-0.144,-1.427 -0.202,-0.000,-1.402 -0.205,0.144,-1.427 -0.213,0.271,-1.500 -0.226,0.366,-1.612 -0.242,0.416,-1.749 -0.259,0.416,-1.894 -0.275,0.366,-2.031 -0.288,0.271,-2.143 -0.297,0.144,-2.215 -0.820,-0.000,-2.118 -0.811,-0.144,-2.094 -0.786,-0.271,-2.025 -0.747,-0.366,-1.919 -0.700,-0.416,-1.790 -0.650,-0.416,-1.652 -0.603,-0.366,-1.523 -0.565,-0.271,-1.417 -0.539,-0.144,-1.348 -0.531,-0.000,-1.324 -0.539,0.144,-1.348 -0.565,0.271,-1.417 -0.603,0.366,-1.523 -0.650,0.416,-1.652 -0.700,0.416,-1.790 -0.747,0.366,-1.919 -0.786,0.271,-2.025 -0.811,0.144,-2.094 -1.297,-0.000,-1.878 -1.283,-0.144,-1.857 -1.243,-0.271,-1.795 -1.181,-0.366,-1.702 -1.105,-0.416,-1.586 -1.025,-0.416,-1.464 -0.949,-0.366,-1.349 -0.887,-0.271,-1.255 -0.847,-0.144,-1.194 -0.833,0.000,-1.172 -0.847,0.144,-1.194 -0.887,0.271,-1.255 -0.949,0.366,-1.349 -1.025,0.416,-1.464 -1.105,0.416,-1.586 -1.181,0.366,-1.702 -1.243,0.271,-1.795 -1.283,0.144,-1.857 -1.706,-0.000,-1.535 -1.687,-0.144,-1.517 -1.634,-0.271,-1.467 -1.552,-0.366,-1.390 -1.452,-0.416,-1.295 -1.345,-0.416,-1.195 -1.245,-0.366,-1.100 -1.164,-0.271,-1.023 -1.110,-0.144,-0.973 -1.092,0.000,-0.955 -1.110,0.144,-0.973 -1.164,0.271,-1.023 -1.245,0.366,-1.100 -1.345,0.416,-1.195 -1.452,0.416,-1.295 -1.552,0.366,-1.390 -1.634,0.271,-1.467 -1.687,0.144,-1.517 -2.025,-0.000,-1.106 -2.003,-0.144,-1.094 -1.939,-0.271,-1.057 -1.842,-0.366,-1.001 -1.723,-0.416,-0.932 -1.596,-0.416,-0.859 -1.476,-0.366,-0.790 -1.379,-0.271,-0.733 -1.316,-0.144,-0.697 -1.294,0.000,-0.684 -1.316,0.144,-0.697 -1.379,0.271,-0.733 -1.476,0.366,-0.790 -1.596,0.416,-0.859 -1.723,0.416,-0.932 -1.842,0.366,-1.001 -1.939,0.271,-1.057 -2.003,0.144,-1.094 -2.236,-0.000,-0.616 -2.212,-0.144,-0.609 -2.142,-0.271,-0.588 -2.034,-0.366,-0.555 -1.902,-0.416,-0.516 -1.762,-0.416,-0.474 -1.630,-0.366,-0.434 -1.522,-0.271,-0.402 -1.452,-0.144,-0.381 -1.427,0.000,-0.374 -1.452,0.144,-0.381 -1.522,0.271,-0.402 -1.630,0.366,-0.434 -1.762,0.416,-0.474 -1.902,0.416,-0.516 -2.034,0.366,-0.555 -2.142,0.271,-0.588 -2.212,0.144,-0.609 -2.329,-0.000,-0.090 -2.304,-0.144,-0.089 -2.230,-0.271,-0.084 -2.118,-0.366,-0.078 -1.981,-0.416,-0.070 -1.834,-0.416,-0.061 -1.697,-0.366,-0.053 -1.585,-0.271,-0.047 -1.512,-0.144,-0.042 -1.486,0.000,-0.041 -1.512,0.144,-0.042 -1.585,0.271,-0.047 -1.697,0.366,-0.053 -1.834,0.416,-0.061 -1.981,0.416,-0.070 -2.118,0.366,-0.078 -2.230,0.271,-0.084 -2.304,0.144,-0.089 -2.298,0.000,0.443 -2.273,-0.144,0.439 -2.201,-0.271,0.426 -2.090,-0.366,0.406 -1.954,-0.416,0.383 -1.810,-0.416,0.357 -1.674,-0.366,0.333 -1.564,-0.271,0.314 -1.492,-0.144,0.301 -1.466,0.000,0.297 -1.492,0.144,0.301 -1.564,0.271,0.314 -1.674,0.366,0.333 -1.810,0.416,0.357 -1.954,0.416,0.383 -2.090,0.366,0.406 -2.201,0.271,0.426 -2.273,0.144,0.439 -2.145,0.000,0.955 -2.121,-0.144,0.945 -2.054,-0.271,0.916 -1.951,-0.366,0.871 -1.825,-0.416,0.817 -1.690,-0.416,0.758 -1.563,-0.366,0.704 -1.460,-0.271,0.659 -1.393,-0.144,0.630 -1.370,0.000,0.620 -1.393,0.144,0.630 -1.460,0.271,0.659 -1.563,0.366,0.704 -1.690,0.416,0.758 -1.825,0.416,0.817 -1.951,0.366,0.871 -2.054,0.271,0.916 -2.121,0.144,0.945 -1.878,0.000,1.417 -1.857,-0.144,1.402 -1.799,-0.271,1.358 -1.709,-0.366,1.291 -1.598,-0.416,1.209 -1.480,-0.416,1.121 -1.370,-0.366,1.039 -1.280,-0.271,0.972 -1.221,-0.144,0.928 -1.201,0.000,0.913 -1.221,0.144,0.928 -1.280,0.271,0.972 -1.370,0.366,1.039 -1.480,0.416,1.121 -1.598,0.416,1.209 -1.709,0.366,1.291 -1.799,0.271,1.358 -1.857,0.144,1.402 -1.511,0.000,1.806 -1.495,-0.144,1.786 -1.448,-0.271,1.730 -1.376,-0.366,1.644 -1.287,-0.416,1.538 -1.193,-0.416,1.426 -1.104,-0.366,1.321 -1.032,-0.271,1.235 -0.985,-0.144,1.178 -0.969,0.000,1.159 -0.985,0.144,1.178 -1.032,0.271,1.235 -1.104,0.366,1.321 -1.193,0.416,1.426 -1.287,0.416,1.538 -1.376,0.366,1.644 -1.448,0.271,1.730 -1.495,0.144,1.786 -1.065,0.000,2.099 -1.054,-0.144,2.076 -1.021,-0.271,2.011 -0.970,-0.366,1.911 -0.909,-0.416,1.787 -0.843,-0.416,1.656 -0.781,-0.366,1.533 -0.731,-0.271,1.433 -0.698,-0.144,1.367 -0.686,0.000,1.345 -0.698,0.144,1.367 -0.731,0.271,1.433 -0.781,0.366,1.533 -0.843,0.416,1.656 -0.909,0.416,1.787 -0.970,0.366,1.911 -1.021,0.271,2.011 -1.054,0.144,2.076 -0.563,0.000,2.282 -0.557,-0.144,2.257 -0.541,-0.271,2.186 -0.515,-0.366,2.076 -0.483,-0.416,1.942 -0.449,-0.416,1.800 -0.417,-0.366,1.666 -0.391,-0.271,1.556 -0.374,-0.144,1.485 -0.369,0.000,1.460 -0.374,0.144,1.485 -0.391,0.271,1.556 -0.417,0.366,1.666 -0.449,0.416,1.800 -0.483,0.416,1.942 -0.515,0.366,2.076 -0.541,0.271,2.186 -0.557,0.144,2.257 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/Tube.txt���������������������������������������������0000664�0000000�0000000�00000023011�14115753270�0022565�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������-0.000,0.000,2.000 -0.000,-0.267,2.000 -0.000,-0.533,2.000 -0.000,-0.800,2.000 -0.000,-1.067,2.000 -0.000,-1.333,2.000 -0.000,-1.600,2.000 -0.000,-1.867,2.000 -0.000,-2.133,2.000 -0.000,-2.400,2.000 -0.000,-2.667,2.000 -0.000,-2.933,2.000 -0.000,-3.200,2.000 -0.000,-3.467,2.000 -0.000,-3.733,2.000 -0.000,-4.000,2.000 -0.000,-4.000,1.595 -0.000,-3.733,1.595 -0.000,-3.467,1.595 -0.000,-3.200,1.595 -0.000,-2.933,1.595 -0.000,-2.667,1.595 -0.000,-2.400,1.595 -0.000,-2.133,1.595 -0.000,-1.867,1.595 -0.000,-1.600,1.595 -0.000,-1.333,1.595 -0.000,-1.067,1.595 -0.000,-0.800,1.595 -0.000,-0.533,1.595 -0.000,-0.267,1.595 -0.000,0.000,1.595 0.813,0.000,1.827 0.813,-0.267,1.827 0.813,-0.533,1.827 0.813,-0.800,1.827 0.813,-1.067,1.827 0.813,-1.333,1.827 0.813,-1.600,1.827 0.813,-1.867,1.827 0.813,-2.133,1.827 0.813,-2.400,1.827 0.813,-2.667,1.827 0.813,-2.933,1.827 0.813,-3.200,1.827 0.813,-3.467,1.827 0.813,-3.733,1.827 0.813,-4.000,1.827 0.649,-4.000,1.458 0.649,-3.733,1.458 0.649,-3.467,1.458 0.649,-3.200,1.458 0.649,-2.933,1.458 0.649,-2.667,1.458 0.649,-2.400,1.458 0.649,-2.133,1.458 0.649,-1.867,1.458 0.649,-1.600,1.458 0.649,-1.333,1.458 0.649,-1.067,1.458 0.649,-0.800,1.458 0.649,-0.533,1.458 0.649,-0.267,1.458 0.649,0.000,1.458 1.486,0.000,1.338 1.486,-0.267,1.338 1.486,-0.533,1.338 1.486,-0.800,1.338 1.486,-1.067,1.338 1.486,-1.333,1.338 1.486,-1.600,1.338 1.486,-1.867,1.338 1.486,-2.133,1.338 1.486,-2.400,1.338 1.486,-2.667,1.338 1.486,-2.933,1.338 1.486,-3.200,1.338 1.486,-3.467,1.338 1.486,-3.733,1.338 1.486,-4.000,1.338 1.186,-4.000,1.068 1.186,-3.733,1.068 1.186,-3.467,1.068 1.186,-3.200,1.068 1.186,-2.933,1.068 1.186,-2.667,1.068 1.186,-2.400,1.068 1.186,-2.133,1.068 1.186,-1.867,1.068 1.186,-1.600,1.068 1.186,-1.333,1.068 1.186,-1.067,1.068 1.186,-0.800,1.068 1.186,-0.533,1.068 1.186,-0.267,1.068 1.186,0.000,1.068 1.902,0.000,0.618 1.902,-0.267,0.618 1.902,-0.533,0.618 1.902,-0.800,0.618 1.902,-1.067,0.618 1.902,-1.333,0.618 1.902,-1.600,0.618 1.902,-1.867,0.618 1.902,-2.133,0.618 1.902,-2.400,0.618 1.902,-2.667,0.618 1.902,-2.933,0.618 1.902,-3.200,0.618 1.902,-3.467,0.618 1.902,-3.733,0.618 1.902,-4.000,0.618 1.517,-4.000,0.493 1.517,-3.733,0.493 1.517,-3.467,0.493 1.517,-3.200,0.493 1.517,-2.933,0.493 1.517,-2.667,0.493 1.517,-2.400,0.493 1.517,-2.133,0.493 1.517,-1.867,0.493 1.517,-1.600,0.493 1.517,-1.333,0.493 1.517,-1.067,0.493 1.517,-0.800,0.493 1.517,-0.533,0.493 1.517,-0.267,0.493 1.517,0.000,0.493 1.989,-0.000,-0.209 1.989,-0.267,-0.209 1.989,-0.533,-0.209 1.989,-0.800,-0.209 1.989,-1.067,-0.209 1.989,-1.333,-0.209 1.989,-1.600,-0.209 1.989,-1.867,-0.209 1.989,-2.133,-0.209 1.989,-2.400,-0.209 1.989,-2.667,-0.209 1.989,-2.933,-0.209 1.989,-3.200,-0.209 1.989,-3.467,-0.209 1.989,-3.733,-0.209 1.989,-4.000,-0.209 1.587,-4.000,-0.167 1.587,-3.733,-0.167 1.587,-3.467,-0.167 1.587,-3.200,-0.167 1.587,-2.933,-0.167 1.587,-2.667,-0.167 1.587,-2.400,-0.167 1.587,-2.133,-0.167 1.587,-1.867,-0.167 1.587,-1.600,-0.167 1.587,-1.333,-0.167 1.587,-1.067,-0.167 1.587,-0.800,-0.167 1.587,-0.533,-0.167 1.587,-0.267,-0.167 1.587,-0.000,-0.167 1.732,-0.000,-1.000 1.732,-0.267,-1.000 1.732,-0.533,-1.000 1.732,-0.800,-1.000 1.732,-1.067,-1.000 1.732,-1.333,-1.000 1.732,-1.600,-1.000 1.732,-1.867,-1.000 1.732,-2.133,-1.000 1.732,-2.400,-1.000 1.732,-2.667,-1.000 1.732,-2.933,-1.000 1.732,-3.200,-1.000 1.732,-3.467,-1.000 1.732,-3.733,-1.000 1.732,-4.000,-1.000 1.382,-4.000,-0.798 1.382,-3.733,-0.798 1.382,-3.467,-0.798 1.382,-3.200,-0.798 1.382,-2.933,-0.798 1.382,-2.667,-0.798 1.382,-2.400,-0.798 1.382,-2.133,-0.798 1.382,-1.867,-0.798 1.382,-1.600,-0.798 1.382,-1.333,-0.798 1.382,-1.067,-0.798 1.382,-0.800,-0.798 1.382,-0.533,-0.798 1.382,-0.267,-0.798 1.382,-0.000,-0.798 1.176,-0.000,-1.618 1.176,-0.267,-1.618 1.176,-0.533,-1.618 1.176,-0.800,-1.618 1.176,-1.067,-1.618 1.176,-1.333,-1.618 1.176,-1.600,-1.618 1.176,-1.867,-1.618 1.176,-2.133,-1.618 1.176,-2.400,-1.618 1.176,-2.667,-1.618 1.176,-2.933,-1.618 1.176,-3.200,-1.618 1.176,-3.467,-1.618 1.176,-3.733,-1.618 1.176,-4.000,-1.618 0.938,-4.000,-1.291 0.938,-3.733,-1.291 0.938,-3.467,-1.291 0.938,-3.200,-1.291 0.938,-2.933,-1.291 0.938,-2.667,-1.291 0.938,-2.400,-1.291 0.938,-2.133,-1.291 0.938,-1.867,-1.291 0.938,-1.600,-1.291 0.938,-1.333,-1.291 0.938,-1.067,-1.291 0.938,-0.800,-1.291 0.938,-0.533,-1.291 0.938,-0.267,-1.291 0.938,-0.000,-1.291 0.416,-0.000,-1.956 0.416,-0.267,-1.956 0.416,-0.533,-1.956 0.416,-0.800,-1.956 0.416,-1.067,-1.956 0.416,-1.333,-1.956 0.416,-1.600,-1.956 0.416,-1.867,-1.956 0.416,-2.133,-1.956 0.416,-2.400,-1.956 0.416,-2.667,-1.956 0.416,-2.933,-1.956 0.416,-3.200,-1.956 0.416,-3.467,-1.956 0.416,-3.733,-1.956 0.416,-4.000,-1.956 0.332,-4.000,-1.561 0.332,-3.733,-1.561 0.332,-3.467,-1.561 0.332,-3.200,-1.561 0.332,-2.933,-1.561 0.332,-2.667,-1.561 0.332,-2.400,-1.561 0.332,-2.133,-1.561 0.332,-1.867,-1.561 0.332,-1.600,-1.561 0.332,-1.333,-1.561 0.332,-1.067,-1.561 0.332,-0.800,-1.561 0.332,-0.533,-1.561 0.332,-0.267,-1.561 0.332,-0.000,-1.561 -0.416,-0.000,-1.956 -0.416,-0.267,-1.956 -0.416,-0.533,-1.956 -0.416,-0.800,-1.956 -0.416,-1.067,-1.956 -0.416,-1.333,-1.956 -0.416,-1.600,-1.956 -0.416,-1.867,-1.956 -0.416,-2.133,-1.956 -0.416,-2.400,-1.956 -0.416,-2.667,-1.956 -0.416,-2.933,-1.956 -0.416,-3.200,-1.956 -0.416,-3.467,-1.956 -0.416,-3.733,-1.956 -0.416,-4.000,-1.956 -0.332,-4.000,-1.561 -0.332,-3.733,-1.561 -0.332,-3.467,-1.561 -0.332,-3.200,-1.561 -0.332,-2.933,-1.561 -0.332,-2.667,-1.561 -0.332,-2.400,-1.561 -0.332,-2.133,-1.561 -0.332,-1.867,-1.561 -0.332,-1.600,-1.561 -0.332,-1.333,-1.561 -0.332,-1.067,-1.561 -0.332,-0.800,-1.561 -0.332,-0.533,-1.561 -0.332,-0.267,-1.561 -0.332,-0.000,-1.561 -1.176,-0.000,-1.618 -1.176,-0.267,-1.618 -1.176,-0.533,-1.618 -1.176,-0.800,-1.618 -1.176,-1.067,-1.618 -1.176,-1.333,-1.618 -1.176,-1.600,-1.618 -1.176,-1.867,-1.618 -1.176,-2.133,-1.618 -1.176,-2.400,-1.618 -1.176,-2.667,-1.618 -1.176,-2.933,-1.618 -1.176,-3.200,-1.618 -1.176,-3.467,-1.618 -1.176,-3.733,-1.618 -1.176,-4.000,-1.618 -0.938,-4.000,-1.291 -0.938,-3.733,-1.291 -0.938,-3.467,-1.291 -0.938,-3.200,-1.291 -0.938,-2.933,-1.291 -0.938,-2.667,-1.291 -0.938,-2.400,-1.291 -0.938,-2.133,-1.291 -0.938,-1.867,-1.291 -0.938,-1.600,-1.291 -0.938,-1.333,-1.291 -0.938,-1.067,-1.291 -0.938,-0.800,-1.291 -0.938,-0.533,-1.291 -0.938,-0.267,-1.291 -0.938,-0.000,-1.291 -1.732,-0.000,-1.000 -1.732,-0.267,-1.000 -1.732,-0.533,-1.000 -1.732,-0.800,-1.000 -1.732,-1.067,-1.000 -1.732,-1.333,-1.000 -1.732,-1.600,-1.000 -1.732,-1.867,-1.000 -1.732,-2.133,-1.000 -1.732,-2.400,-1.000 -1.732,-2.667,-1.000 -1.732,-2.933,-1.000 -1.732,-3.200,-1.000 -1.732,-3.467,-1.000 -1.732,-3.733,-1.000 -1.732,-4.000,-1.000 -1.382,-4.000,-0.798 -1.382,-3.733,-0.798 -1.382,-3.467,-0.798 -1.382,-3.200,-0.798 -1.382,-2.933,-0.798 -1.382,-2.667,-0.798 -1.382,-2.400,-0.798 -1.382,-2.133,-0.798 -1.382,-1.867,-0.798 -1.382,-1.600,-0.798 -1.382,-1.333,-0.798 -1.382,-1.067,-0.798 -1.382,-0.800,-0.798 -1.382,-0.533,-0.798 -1.382,-0.267,-0.798 -1.382,-0.000,-0.798 -1.989,-0.000,-0.209 -1.989,-0.267,-0.209 -1.989,-0.533,-0.209 -1.989,-0.800,-0.209 -1.989,-1.067,-0.209 -1.989,-1.333,-0.209 -1.989,-1.600,-0.209 -1.989,-1.867,-0.209 -1.989,-2.133,-0.209 -1.989,-2.400,-0.209 -1.989,-2.667,-0.209 -1.989,-2.933,-0.209 -1.989,-3.200,-0.209 -1.989,-3.467,-0.209 -1.989,-3.733,-0.209 -1.989,-4.000,-0.209 -1.587,-4.000,-0.167 -1.587,-3.733,-0.167 -1.587,-3.467,-0.167 -1.587,-3.200,-0.167 -1.587,-2.933,-0.167 -1.587,-2.667,-0.167 -1.587,-2.400,-0.167 -1.587,-2.133,-0.167 -1.587,-1.867,-0.167 -1.587,-1.600,-0.167 -1.587,-1.333,-0.167 -1.587,-1.067,-0.167 -1.587,-0.800,-0.167 -1.587,-0.533,-0.167 -1.587,-0.267,-0.167 -1.587,-0.000,-0.167 -1.902,0.000,0.618 -1.902,-0.267,0.618 -1.902,-0.533,0.618 -1.902,-0.800,0.618 -1.902,-1.067,0.618 -1.902,-1.333,0.618 -1.902,-1.600,0.618 -1.902,-1.867,0.618 -1.902,-2.133,0.618 -1.902,-2.400,0.618 -1.902,-2.667,0.618 -1.902,-2.933,0.618 -1.902,-3.200,0.618 -1.902,-3.467,0.618 -1.902,-3.733,0.618 -1.902,-4.000,0.618 -1.517,-4.000,0.493 -1.517,-3.733,0.493 -1.517,-3.467,0.493 -1.517,-3.200,0.493 -1.517,-2.933,0.493 -1.517,-2.667,0.493 -1.517,-2.400,0.493 -1.517,-2.133,0.493 -1.517,-1.867,0.493 -1.517,-1.600,0.493 -1.517,-1.333,0.493 -1.517,-1.067,0.493 -1.517,-0.800,0.493 -1.517,-0.533,0.493 -1.517,-0.267,0.493 -1.517,0.000,0.493 -1.486,0.000,1.338 -1.486,-0.267,1.338 -1.486,-0.533,1.338 -1.486,-0.800,1.338 -1.486,-1.067,1.338 -1.486,-1.333,1.338 -1.486,-1.600,1.338 -1.486,-1.867,1.338 -1.486,-2.133,1.338 -1.486,-2.400,1.338 -1.486,-2.667,1.338 -1.486,-2.933,1.338 -1.486,-3.200,1.338 -1.486,-3.467,1.338 -1.486,-3.733,1.338 -1.486,-4.000,1.338 -1.186,-4.000,1.068 -1.186,-3.733,1.068 -1.186,-3.467,1.068 -1.186,-3.200,1.068 -1.186,-2.933,1.068 -1.186,-2.667,1.068 -1.186,-2.400,1.068 -1.186,-2.133,1.068 -1.186,-1.867,1.068 -1.186,-1.600,1.068 -1.186,-1.333,1.068 -1.186,-1.067,1.068 -1.186,-0.800,1.068 -1.186,-0.533,1.068 -1.186,-0.267,1.068 -1.186,0.000,1.068 -0.813,0.000,1.827 -0.813,-0.267,1.827 -0.813,-0.533,1.827 -0.813,-0.800,1.827 -0.813,-1.067,1.827 -0.813,-1.333,1.827 -0.813,-1.600,1.827 -0.813,-1.867,1.827 -0.813,-2.133,1.827 -0.813,-2.400,1.827 -0.813,-2.667,1.827 -0.813,-2.933,1.827 -0.813,-3.200,1.827 -0.813,-3.467,1.827 -0.813,-3.733,1.827 -0.813,-4.000,1.827 -0.649,-4.000,1.458 -0.649,-3.733,1.458 -0.649,-3.467,1.458 -0.649,-3.200,1.458 -0.649,-2.933,1.458 -0.649,-2.667,1.458 -0.649,-2.400,1.458 -0.649,-2.133,1.458 -0.649,-1.867,1.458 -0.649,-1.600,1.458 -0.649,-1.333,1.458 -0.649,-1.067,1.458 -0.649,-0.800,1.458 -0.649,-0.533,1.458 -0.649,-0.267,1.458 -0.649,0.000,1.458 -0.649,-1.333,1.458 -0.649,-1.067,1.458 -0.649,-0.800,1.458 -0.649,-0.533,1.458 -0.649,-0.267,1.458 -0.649,0.000,1.458 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/barrel.png�������������������������������������������0000664�0000000�0000000�00000000446�14115753270�0023111�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR����,������ PLTE�m��I�I��%���IDATxܱ @ @QD(>2R$,&)nY�������������������� 1?)Oa��������b g w !2wY=lwWϥ-wi�����U__[� *T8?�������������������s}�Ϫ����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/ceiling.png������������������������������������������0000664�0000000�0000000�00000422676�14115753270�0023271�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�� �� ���ph���IDATxImKz,VSɓuiВ @ܸn}?ݸ lH-Q$gZk5EqGXh ` @b1s~ V|}to֚'g /yl>1!kFقj)Q8H REr=/5 _?mx6\]jVQN4}Ӡ4HnbΒ %SR~$y+QS_____׏7k.ͳ QMFo?}{-^3 BL}0,MA 1IDBɤ)!!n$V-m&4́o=J>x?d#pBJ<>U ÒN)N~a-]B"!,H1c@DyWWWWW?_qD4-=A_kA"!$^2MZ+R24ڀ >DLcE(4m1 r7-~Id҉7(qec'6Bxb?d@=h!Q0Ϟ""g{+(ɪ8=1KR4BkI8UWWWWWC/\ :ǪU4 gd)QoyeyѦZG4$$.dL`K@)BCfZfR\irls=9wID8aC *K\h nx$BID ! FN&L19F\e:mT-)7 MN P!Y�TКiD&N\Hk.wܰq>r==,QaCfK tCP]2sbP~wq!@lV02qJÜ f%M$ə};|Xv@V2e9d舥B EJ,!KK2b/P>P Ėy)hI%̌;f-~C'2Fҭ{ʯv 3!Fr$ϾzCX7lĭ0dKS!H(BLU$"GYSd%*|ugrq9;.hR9Iׄ A(XA\b(`GVva<K\Rd#P_____ #mv~AZN5o0CSj->6"' i,"i[4.XWVˀj[go.+RLh0ڙ_|#2h ()!%KAHE2EO3ƍr̝"! _____`~dݓc$ׯox&rdx]ll//}"7~z~|o?yO ⣢%ZDqY)Kt *&;0ZηWY3&Ȳnm+dy7oxs~+כ(HZ}oz1I_vsƢVyWWWWW?_J%"lqEhm[-[t$H1Җȕ* ^idB 9!#]cXz^!dFH EF$+<Q{*cJx5 xEPw3--$E2p@WWWWW?_K Euxb4L2-==5au1o~qE)eBSry(4DKJR4ђ %7JY<es|C2B j)c:`#-ʾb}FHfY70 + F(Vr,aan:DʴCC)S"_____p~"I )um.A0b渳c/CfPɃ~A5 h-4XERfB\y m5=gtћ%߿$O"Ӹ'6= mGZQ`}d4Y XjM69ίEd񩠴!IRaZs 21'.<p5&=V}˸,_J2"HH ׊E\)#~K81%F|JrL҈ eI"E|HĜQJ!J!m┩kEmzjx$8-ܛ A!r״F60Jr8k|RhdCх:lAIRPD!BZRʀ=;aGK EK@;DLH#3>9Eȥ` RJB Zk|I______~YHg1}!>q<.t;ix͆7wDQ8L3]s h@`%BR m}̑9'wCWq!+ͬE@pZ (]("1/'֭B@RB$6GP2RJ�]ӰjD{vǩ }ϛ;nv{ )׬׏%sF[϶4GqtB s\^P!D5iY$|}wG=EȷɆq J44dZ[.e$y8?;gwiZ LjR BJrJTPRR_____Wg=x %rYSt{ebHxD')O^E`o)rŷ~˓9xw-4|t/z#lR7xPY8-(wh$b=•rjWMY~5ӝX 0GӉ]dӋ>wO~/_9L,Ham3V_____דHD3Fږ7ٜE"bpwiy=F((1�5]s,ؐhBC [6=~ ߏmk펈lPhMJ>>^s؝MKH1UQ"0ֽ$GJ$g?s,J%p!3 N(n]@ $X]x<ؿ~cM"e$mRnb(SHEg,X_9bC -|}T";zB>XQs…D/5* ]!MH%)&w_____P~R KpDH1$.,H@,йsWwC$ ;,L ac@k ZE# eOaR!I#< U iA\ZiZӶՊw?հ&NbNwGR(e�|ŐTe[_____ߺ҄ M%+Bh2+yLw͚9D\  2zV}Knw_ߧ[u̟7=" yXŚWs HmJD4QJs;/FA)E(jߡ.F`DଃwS.!dxRhS_____ףZEbHYmaql2>48E 6oXyКB#㾣Ӟ%9SAstGXnh@ъ6#m(QfZBZ&!E(V`ZE#mIjd .X+tܡUmg9rӑ nJr>!PI:BHtxi~L?f,%B;>%/|'ø Co <z"*x^qBӋ5Ͱ4ߡb&,z]Fbipn!DOLD%A MCOGnN!˚0 ")h"O{\<4zd "r֜rɫ{ZaOѷ|£iBJ|/xg.Ȇ|uw'Y6>yu& d#RKR^ثG ٬/5^r<~l@ Ot!n֤ /nn)dHBf2Swְt4(MpXP#9r<_|Ē"x K#9O=dXm|)qyhp}ᣖx?G`2ÿ?6ܝn1%H 8_|/!W[17;%r8X\Ld>qGb|{p{l/y|֒3|sY_____?8|@%SqSB13,}>'/ lg;^6grNWk{Ǫ\$o96Ze䜧ۄIJ۲ , j)*U(231>b]–0-2bl;e nhI5&~yV_____xck?+㌐oub|1!ɌOϳUϫaw<y šbŋD{< ~%kF`HJT"B 0%E%hi .xF.Ξ҉~8׆rr;7U3CWWWWW?_l% ;gtQLEs,%$)E!K Țye?\Bl|5P0EΠ5ZGDjaiݚa8q?FlȨVq:Ő OJ# 2G<g�OWIE]ҎV 0Hlje"j ZB<bGV5u=D.Jϑ(%I@I@`6|-^hLtEs ~q˪Y!"̓cw7 IadGs͍mP,@Bai( G#-]@ ew_ȎD[W(%[T!Vrm8a\]! n!;("Q,TzL/I ~fؠۆ%1c,,h,"6'1MG,B!P \ȹp>ڴ D: )Mr\Γ ݠ؏'iHY؄rTWWWWWkzUheHÛC4iڎv #D1W21%Wr[Fb/[2aavg=.'e:Ndf@72*&ηk=DF2/|i9~ȶcZ&NL,]<Sdu7T뽝'W.`e~7~򷹸?_y4R Aӟ~6{ ]%89A^=n?ZmCfT wUܝ^g|=}ybsN<.x7ꎔ!v |܍bь7,ᅨ3v2s"3<sȯW]޽מxuwWGW zo'W1% SA(\D]˛yA3 m9<pҒ8w=$h盏;Fg |\pA��!^_HFP7[yz aQ)3p0G6ʯ77Mr:ZCc RKlA _ rA�E.KF Y! G0(V]1gJXkX7`$̖jA˄ 2/!%GD "#ږRxdZ(,- Ƿ1|_____@~b:b, $@d�r [TRD'c4IA2GGP) B"cfHUQoo.iG΍&'JLD((Ӛ Etx KFR@dvHJLmG߭}r 1pMWWWWW?_<d'fc D h:eK*o`1AJAFR B*K1H{+q/ ޾8<zI44J`瑘9:%'pDRd BP�z;R1 # 8YK C ίeLLZKJLMVs*>" kR*d1%|x2.Db)IXB)hSR�4Fގ imߓ;MȎ( V* %޶'5|V2Gcb s 1 2o Fҙ/"IV0/{RίgyqE.-A9* QNΓo)BY!r0-b, xEhc!Qe2Q!h˄g?6o #0  yp4e@ɞD&Ar`Q1R qgh;aP Aźȯmմm$$xwiI$n{7ۘx#2]o6ʰ$TX)yzd:zڝ%qG _bw1tg dOݑnז2FEbL $PaeC>xC!0abUWWWWW?_{I]$L΂7G=JhDI<~~C6yͫ_o~=?)OB%og/ݞ=-nr> >Z6:(jh PB"MhτgGdj-vx)McI0 & ~gg;ε׾$?IBF4l9f2mȔZnۅfvӗi97J"㸰^oP={bO~r<޹/G+:IcBq<%v^2�eds8ieeWWWWW?_rE)!Zs@5-9TIeFg5/ '/l7b &RY3/'fHQ"H<DD-0dD!D˒"9x:vp2,̛H)+tqav .F-dɶAd چab%7h֚xVIL3Oq~bEF1ab;.!۞8}Bg(|IǶoiCb.9f(,`6JIS=8M{|Rfe *8 ]2xCfM*"h†cWWWWW?_ b9Ma|+6%m`O96`084gb=Aތ'D$sH Hl*A(51 v%`'P$>sr'#ҞdJCvB_Yǝ/ M<'ƞPY3n8b@EN>И8ު = x 91uR=W 2'^fGPʚ)y8f/E!MKoR! cG}D+h×#- c$b!dIL, 5g%\i$k%БsH Y$[WWWWWW 0MTBgV|=XuH7;o8%7{0 őEaIM!SUA6+Xʐ@ E" CA2\]G&34kX2xD#Qc$V ZjX_____DDwK3fRJ&u[ #O=[M3Ha)271[vD҂8ӄ7+N:D^ BDApnfr/_=F@\%+HAk]¨=)Dr) x34=(t3_p;fffox;.ٽL ГtˏO?+I#z'_ZKuaR kI[vc:}5Msv;O=nQZm&B;~_~ -)V*~g)ӛ$dn@N^i|WWWWW?_?nvW(ȶ)HW||uĈ <;?|yHiC~fbϏyL9yd4Q4lb$D\?&JrQޠ|`hbDsɾѢٙ-^K׿{Mn{.xv?Σ xoS|ɤR_____F2e IM BB% i-G9,i#PҠ ~iBf@:'ۆ:,12D Qp%$lQhBwfY,gJA�< $W-) dZ^ΑЮqc$[`S̓UWWWWW?_פJ& @  +;IS`%-L`㛙y7\^)Zrs{OO}pۻWG|%>(<_L(3WkQbd'hLK ͖@"qNx q$L2R%E|IUWWWWWC73E@U|>SAs̀ tLH bZnN|[Sx4fU-1z ُ@h)KBdA i HY% rՒD`3Ñ<~;`K's-Mhͅ8e,6G_____`~^I$LH퐺Ał &NIN!UnI:Ñ=`9_Iz5᳞ڐJ&g#`3d] [Ӵ&\$1х'?r8*sV1/ǝ@7 ^b )R @K/lИj%YNSJKбZ_c^FRgwHݡ$")G:{:2ө 9cHZՐKP`g1lDw =h{,"wȫZ\'<3Zǩ-Z8fGׁ"dRXXV>ˑfvB o8ZK(=A4n"h5onq"=.Me-h'gwAaSbV V_`e'6A$\<;჋=342e z0~j˰Z1۞ )ERH0Hc;1ZhWWLG:- p~yFwt ;Њt՚w$FOoglr.h%x/[~>|S3_)w !.U #qAjtÇz>Y>,pq50iͿWMW_____mibAR -W2"g({5RGbmw<VӉG[[{CKN m4 pO;?zi85{u";YtШAv^cÑ<Q0y$&~\OL_󨏼<NpKk.z 0Jc&l[<BYѬMG(v4Ú߲Z3N/)J1:Ki_DGkѢ$(6f:q6/N?G6"EQ$êg<IJE1Dn|_ͷa gy۰_Oo Cј]hA [P,%q R4x}a{N3<6X<%&֛ך'gE |Ctkds3L@N+tƗ NI۪珘?ncJbB[vt"IjQWWWWW?_G0X cl"(p na,)((t|zC*жU'!YJI1p:%ȒFZm Fg.^Go_qqw' X! BR)<R(RhU|C:*|sa36CA v(%l F !IWWWWW?_L xҟG ɕyJTa+{ZaK)']mB&GRa+0P8Jq`6\ ~N zM6Y@CFƌ҆R J*6 err1}Ef>L<z~o ƋD{wڞ1p/N\o.M{O%7 3f1 )m"@3Ҭ<)x϶lBD3a$1aBؑ/8=!QHR\pZaBXd3%}ãUã&>V0G8)btOb,%E"K,L"j;T4fż$>>�ݳ&te,$Hmlw\]WwHj7L%d%d 2 %I̙P e^d /Le0[e6͛מ,dί9rl.<ߞS x<i!Kxۯz7-_>ʣxçvl8?rG43:eSJ.81A(KZJVM0yRiY}&JO ۆ[%p"7i$%'=,nx1_ي/?>7^$~c 'f=XqoOґOw/9ӻB`/mxN/ \>;mß|qՅ:SZ Z7 A-nws)i;/~Aɒ_+{ρHWWWWW?_?ެ4Ϯ.htD5&9]h{`o' 1e4[|*^H& %J: B\\Z7+UU?¥JR )e0[V ' KJ88YHtt sؒ H=7_____@~Ѵ~ DH z4kA@JɨhRb&N31GQĀȉ޴%}K' x; -BF *SԊ4=Ң G<{\_ `$Vr{#2,I)A%T_____׾rV43qtDnϗ=.f)RsFk(ҐI*3- �$ iIrRDr αRZA$Q 4.fp%1<㑔 %eF7,Wg8 :ίc3bxwOXfqAvtD-RB.ww793RHBcdB`RA@krF~:qy"-Z>|[}rns˅,wtDMJb9h,1 At`=BQXݑ͆kY:))sb{<2lkD7$g~aٱ[ZL-PYcX # -)eRvγ,-gl=V@O�w:"Cy.H[y&%oNNH50lqg:i6n_____P~eF( 13d$t|z}Ī90-odC'nņ!+\JJADB)2%g "9ZEȚ";-QWx=3{ɴ7weFIz&TjE1Ģ% C;Z Y⚔"H' n)h Z5hr:y ෿ZN/Rny) =>IHN+dM2tqBT4^TҨ?{uXbB|9)@K@I}4ȘA(_ @*)zp5nt f$ Q'#d~}Û7/$bd{yӓ O{-M" ˂M_"epV1ّWmrb<͚3A to^_!;_ܼy{WW\O_$DɬD<KDH2%M3ϫzP%dw(Qe+@kE\hUo§S&GDTJCLt8 "P@ Ez !3B\^(2" <?_fSV܇״WG{a] ,"`m[$in! . FZJ(s4a iidWYo o#w(@DN- 1'`Mp%L)hIֆ , O9! 1?Ge_pd#$#+ 9[07"eڡ)8JpLºyUAFޏѶxQ1sYv1scy3S(AHfdeW")B !܉<|@Pᄶ?3:\͈_Tf' i}#(>2yTK,D&BRJ BP_____׊BJZbTPڐ $HY9 J~hi[LZNE+e\/%Gr$$YHHkb " Дi?%|woz#>%O_En_&diĄUB">$b(sFOqTWWWWW6=Ecdw<sa IIpv9pkZY DN%9t5>Hd)4hJ$I b)\(JW i)e@Msΰ%DŽ%EMD d"K&Z$V]]ߢR )%!r5Rk,>]8^tf<fݛ;(߮ن]vDr!)OQ>HQ;ܡ_}Ƹxtאf֍" ?-\\.LnKNdVJ �)q!@_()%�_____iX5k=qsTGgąMkGĒ9g[u#8r:!u_~9O.`(BIs4M,I#ɞ"dxPV2 --}2L3 ;4-RRcD!%9%r*()뫳f<z [,hv2sr$<'" Wj;ۖV>:=F6O(glܻH4XuJ9O5¦,W,#.wŇso;'/؜iるF0޶JBjYs$KNL#[VmplV"p;rѴ<ٞ E#  B�Ԛ`klH4Y!Hۭi?G\65vGD6( RHBc&%ww9N%gzWت(T^#D3TWWWWW9 %@CΙg'7lj.XEB\.yt<V_Eƈ2)E7 )"PKT3zx[ůcu!E oC*I =PJ!,(9BFg} &ĒKػ(^JK)%8PBEAr$ Y\ƹ@A;ΌWzfy&0 P1b"B'Ȋ0gl)*崠hp.c|E۴hi[j;swjX'Q\Z1'˻#c)2r>DbH岭o]iBN`Ē! püp;f".N˂M=[7;K/_ӭ:ᛏDVüpX,bͫ9c$6 %gT\C(pqymtBPdaH#0"p)TY2 KHMD)xюH-"1,@6UhC"qE7sQhMđq ic)堹Ap#, Y7x4chERT6(qb 3!-rkNQdm0"Ӷ$52 ,~A:ЪG j heWWWWW?_7 % 9(r$ !$Q:4`^?x3RhbȒv_|{a\[h`ۡ7RaO\]f<ZJ8EfXqP1S u.#48'B"㒠׆ͦ!K#7 eMa4GyTWWWWWC=FC.FR`=2HB9kx[=0'[>zQ4!~ydCkEЬz X缺sj`%)/Uգkr{l{/9�?x6 ‡HH'X7kR77ds2$A!3HIiz^OTWWWWWC;kl:`&x,(ӑ 9f/>bIE_ϞP2 nv8<sDaQGzd0w_sN~$Ɇi/>ǀpȐ|ë-˜~s9,.H&2k8#1g=|ɗo>kI>⹬_sq>Ȓ)])TzEHIivɉy̳KN 9'֫5ͽcWw巜DJPqa2zrmFI$mYCyBIl*@iƙVX.aKA 1|apV|xo͚?<?ٱ ٟ`uqFȷ:1HN>qڐdFڌ٪xMְ;y<YqOr PMdu~"=??5x#I0$%Hav!v\ђX Z RL}4<^Y#gODa{WkC99ͪίW@K_f3( GȢ%rfd<Zֲ.\! >E(j~["{Lg#"̴nͰuƁ#6dT8bJ'% #IL�'+$ O򊢮iG$652X5MWWWWW?_-m1#i躞]" H$$ Aa0>/H4&DX]eլɱz09[Fыa( `m 4RHR\MdDF. |jJdGB"Dng VG_____P~}+-P 96R0.\.D^n(xD`=$fua3lmC1ruFrP4M #DEB(J.\8`mZ"X&9{xɆnP4Xl9h5*2Q!z4m_L;"+ Ғ+ _s-#cp|-A;߳ZѲJ'Ww{y`23]Pw5d"#Hr{>nehd1-M'Y{cq):Elyr*TWWWWWNA+fp??\\]ӯ<N KD R)ЄO?GȽ .p̒WmrvsОLaY!3;\*Nx3Nܾ<q9'iuGʐry>{|hKfEN9SChr9P_____׫.k^kOV;b+~džvudWp7+RW}^) .{o_8iI;y\4GlzO#3φs>YB. Q@�/J$#(^z-M<i0c 8#U_____͛i9t1%EDaYҠ/ �"%謐B#3%u5 FfzztheBȐ# "AANmK)�H2-[Ƙq>}V B1t1 2�9K-m)R@ 1 (tRs!1F3hi$è}gB#F%&" WKVXbi͆":_%#) Px2K o;$Q&ڶV ZHC9 PЦʯUQ\_ Fj1X "4E%{ L҂ # !%L$߸ o_qG?i%H̉`͌AH8")x2K!R(�JO)hΑBn Hu!eP_____ײq&%yXv m9k^lC@5)2>D<"1f$ ))� vtoDž4ɝ&dG+yxom>+rj#11˅9Jh#Le$+G=)RS_____3ی"AfȆ('}@̷!Xr, 9M\ 1@" 1ѐ(v2(i4e³_}ȑ{_RA <8۲OJdOg p9Q0LD3D0( b]_____6jZRQ6͊i$=Wt}mL<ʑC.7BeXtBB^,<=[q[2=_N8zk#ċ^;3N2F'H7 kxh�"1&NIQ(ʰ!<CסMIqYChʯ$.C&gܣ%4$?[!Ջ7z'zV!u˒ R73ho|ǀ_}nUz[Pc hvwwGw-hag5O4p(!HAg³#̀K i2|Dls?UWWWWWuutm1P\lO?xzN3ZkAȤ !#RO3B6fwdJ-VB3hfˉδF%q\X7ӞE}'?c_oyPB#g$ d1x8Z;R/\294C2Dʯcr@ʂ-9$2#S泃p|1o,ᙗBh3ws$nYb" CBeI<WO;M{ Mr\t eq:\80;M#CȊrd V]_____@~mÌ0N l 4kMZ<y'?a#0mivNp>!@3gN>c۷!13A0 ZK % y $y) =>)t3p2bV`RaPol`\<Y!r& a4QañȯN1I0BВ60'JO0Ͽس_psd oX"9$\$6 B֚@(fd99iOL2r!;YmᯬreZcOwg^71 "ahLCWWWWW?_oՆ E @ 珞s+he/J#G(e͔<Zw3 " G됦%Ʒa)^H#D>4ˑU a1SfzLb$B3.45Q`ȹP@,ZNE*~3+>JJa$E7ܒSXWDI=GWpN|Ȣm ^̤)s* NN,deY"HA HIcy.Ӯ#E 5VHT<(1sA-5wy닋X";åj)%-if'ЭV]0H-q"iA }i› "/HYJe 873v9/_]{V Lszb.sG$ Fp5.aTG"єHUWWWWW?_S:Ǚ/]37G~g^Ne& f ? ZuPv/\%:0O )C-1`?C x`v\7(6S?/ٖa+?3”MRQ2]7d B4̯BEn7|+asdeyu}+>{RbĆOϼK ?|O3K{c|<2 (N6X[{"bbh%An(oP>p041d_^h@%߽Hx}g<~VHk~QDž`k K@ɷ)dRkb2$Q!AEMJq՜Ny(iPΆ ?4!3h gmhQD "(A6xs|p!q;R,� w lL[~M2-/jh׸1-HY)rȯ?kRNR%B ˤ)0͒&WKBD̼i.s-轧>b~U?]#>GEJ /b&ș5(1RR4%fj M8kzS8Rn @’"㛙"* >)Ӡ9[Kf@ n:&w$bJ1t-w7') s <Zvy=scGJ 4%! A4,HjBLG?z}F9ȖQYiqBR #Y 0^$AAr&BvHݠbE~^$T*ij7$HHp Şh$YZmH%3XBB̙[.D -gmiZv .dr_}œm9D@HNp)l%W_____^qihLdWU)vb%g}vXT/pL1/#3tnዻ{PB#tfh  YԄܜi$jȥA(eb3H6;ILAIHqrb-Xw`HDfd TXɖs-LWWWWW?_OZPT2)ER,,s+Oh3E!7%^ qF7Nv47{RixM8 &2oܻ)1/2ՠB K.LDrRl_Z@۞q l ]{ՙo}2p=}WWWWW?_{eXmO΅"Z)n}$F1 ^ݝ-+&գaGa8<; m:hajͻ׏J'{7|[9-?fػ~ F@5 owwv_n_厫4EY)+3ؽ)#16 +ģ-M=%'wmi[nx|'DzV=[ӴkK޽ rܝ,: ێ}JhԠY ;y1i(k<?zw.'_r[yG^'T5_____@~Sv1JJA-LJ!L۬h&Sҁ#g;sGaMoY4/Z"xC۵hpZJuD3@pXVp#EDȢ(E\tae$%PR]" \>yċ[Ұm/_____P~{СhL.Ơۆ-(}ȒRpRCyð='ؙyg ,Mk_ݓ !z~h59qr& ' a:K$R \TmUG̟}Bz1[Zq׶*vy[2Id+C 7fy)nt b Al%Dv"YES.[{9g^kjO(y 5Zcb|l bBw[etE',0a, K& $MGp3C AE+nRѬZ iDS, Ln2O@X9::~?~s^ޝ2I L!B!BVQm˅iȴی<KXMRK 1jH3OZ;#f+v'Vv4e)["OڎfL#|W`XcGS.3(Y-% vEcSkȒ$�22f6RPRl(CƆH!Pd5aK(no4^$l3S_____45p/N\o.؍{O%m!ȌX2Fjr>e}ѣMvIs}e"2 l1M/ #bxc@D!EH9 4%y!NV8H9#*,_дWG&>F0G8) Ps ;D(YEbմf4'>>�ݱGt ee9,,_ I>Hj:ޝsyvE;^q#0CE&D"%,{$1gE zՑ%8?3ôx-o~ּyA&-M_|9E^pʁ6>KAc KW_{~aӯ<m{>|ZMfi[!?}m4/)n4(SbZeyi B)\,1de[|;2QpZBl8 -{=IJeG{~=WWWWWWYhcǿ}ͣ_~}t'_GHE0!Ÿ iy||r?+4 \.x"4W_,4=Wg N(SGiКZ4? )Kbw@(Ḷ ?~?/)Yh޽bTWWWWW͚^#ftwѠ=ݶˎxvSF -S!&B2H(T2%$Ւ\M 5%U{[񏿉>~s[.R^%.+\D(R9aeW8aS)LBBkWUB$Ć)Fr y90 Q-A @$%XX\r"PJF HI:It1FQB#vg"':D (|pOF1&\OPVǁ 辣-9 SD^p6Jj$;>"sG̒2V:- ( DX5 k%?%siz_{\4LS6eqdHCBB&̨ KI�(%QH|ȌD* ,.a-E4Ks\B$QQi\*L>BCHowc>xN#)J 2V[Bt3 ǵ-4EWWWWW?_Ǧcy \^=a4HՐҊnc݁ODJ! @ B�Z[a2ي4moq ii<.^3^KWSL!]n<&1bqyl7^#Uϒ̯L0%#g}Ʈ$F}ˎh ut\fl0̚%BctRPB"Lzlr!2H+_'~;ߡ<$uG {4SѐBw':rl @4`\Flg3 ؍]wCWWWWW?_kMO* !%.gB I6-}NYW7፴dVl¥ĩDD$!Sr& A(YSd!*|u'rq9=.2b5a.윤kB ܎cJZbQ {FK&,Uy339I)2ie______זmhږx?E)0{͛/o'-Lpzy,5;_ɧ<ֆF$\$!9ZERئo[N a2Z> Z[e◟s{� % cb#d|)H豽>j \~J.`[_____O9Fr|7o"w/^He %?w)+B'ɷ O; M ̒2DNŸ : lۆ1oL ,n| z^r޻}&!Jf%ADW"*5F%# i6gjWWWWWWCu$s,ޡDD\Z+Z+pqi W>38R4%r ȄWb!9BozBNȬ(a֫SLI4 &sԞʘm><>*k = ͪgePw5 $E2pbDί"aq[<1ư0=V|uְy{E))s j Rʔdm.yPL)Ґ`PsӞe:nQ .֗ld򞵅A\XIya3m)R4D:*1E R <3ki.U1q-c/CfPɃL~FY Z2e,W")B3 !{܉<|@PL^4=gћ%߿$ޏ"'ڎ}%,Q5Ri̱՚mH)s$AWWWWW?_+ )%ji҆\ $AJjΙF(T|{_f䞫4.Hٱk BI\ IR!#Z1/yW%cb܏0GN3LjOA[2.X1(HYRDHA1gRR9#xۧ8eZQhlGQ \ƙ{34"DR]ܼhVFI#zY VZ. C$)A, ER)tҘRz a9Z 9& )j"!-Z,=hX Ff|r]KaP0H) 93hm$}WWWWW?_y&ct B|xyv(՚4톻7wDQ8Ys a !Eoc%9 g G$G74sqPef'U9EbO*0"ąH.m /owd�TWWWWW[kY5q9qsTzGgęmy5#bQ-vm}dO'np? E@( i 1'ڨ!MHȒ$;(BoMZn+`I7_7\t-H<r~v$`q& #JYȩί:p t%lQs$ƢʑVRBgBRo?/?{'sG_⫑li80\t#-'jpgg(wh$b=•rjW̿hW".Ňs;ǷO~/؜i㌋ + RoیUWWWWWHB,9%D'QE猑 ᬿk6g+tX8 Og4Ba"@Y%F�l6+0i5c~ [uf;"AaBB@5)yxawBۆ2b\a kPE`;I2IP_____w,J%p!3'7Ǒ.EB\.yb[+_qXӠHCDIӶxȬ-!C,e u E_<x[ůcu!E7_!$(}xĜp!I{xWEDRbN%(KC)98PBÂ.,H@2кsWwC$e Xc@kE/ ZE# eOa,%@|QX,|Ec4bǏaկ(.ݑJq9@"S1$pTWWWWWC4!'`Ĝ!4p4s[f".N̒ 2zV]CL_ߧ]L7=" i0/5@0Rqi %v|_R*jޡ.F`Dଅw=c."{xRhS_____2 !eI\ dYu k qMް>E1}K7 =۫Ks40dmh@ъ6#(qV1Ɓ rVZŪU<YLy4 I >!¥q;PbyY`\Y}:2,ȯBB'4ItBI/ 3׏)nj%d2Ŗ?}ɋ/_=0-HXض TWqw@WD StpnW;T̄9B]oYX,̈́艩ȸ$adidk98,k 9c[_____ןN x4` !D̞r7ɫ{aN5|£zqDJ|oxg.HKkE #Vn'V9n$,}DjI3{eztMnvnx)g=R(|$} ]2!Ɛ! ^Jx=fR_____aib&p,(Ӓ 9&o>bNE_ϞP2=j|)ayG ~d_g~dι;bKv$-0_~/!y˫--?~e .HF2k8,Gb|{p{l/y|֐3|sY_____?8G%SqSB1Lt].'+iZw.9#(lzX{ Wtw巜DJPqf2zrmbIJ0, j)*P�a&bXK) s!o\ZzwkŇ?FCڬ,ͳ e&lږ0LX'#N%xx?4^5N'OV9w8.V؏$Ǔ9,cOFo9 ݁IY&R 3cRX- D5Hcpa)(w/1sm('rF1TWWWWW DXȋ×�"p7GYL]c܇ GȢ%rf`4,업s ma0Ak<Ѹ5qz~,!x CV$<)ATI9&&;^iFixbz֗WuEH;C/Y% #_____@~ >bV5ѶD.H$$ A7>/H4&DڢX]eeW} B=CRa<y(:Z` H(,RT |L>pdP=ّa¢֣(D ,!Vrn8a-m! n!;( QT-aN݆MA7%1r{fuFr h4E(-$ (B)@Pr!yk+J[Rx'^NHcIY1/AS_____T" oNa 9cw%D1W21%Prb/3aftϺo8L\NUj9);LAOfTLo{ e^ӆ!r Y#qdۖyaoȩP_____eDw\1" =5j㤹0H Ms/o9, -;ړ)Ֆ j~+/O\lΉݒ2\ޮ~5_̚!5f6ytwbb ӔbXMzf~%?~݉÷]{?24#a؞H^ ĔH$*O p]D o]v$w.r|y%qj9{Ipae=?pr"��@ xy |U"AKܴ`Sg[ljSx)Xs0G6ʯ776N{`AjI QrX"Qd�Rrb6#p~uf8}z# zzCo[23dH�H~�$fƘq>}V Bѷ-1 2�9K i(R@ 1 (Rs!1Fknb۾۳Kg}isIӉ+9+h̆"Z%#) Px2I o;$Q&kW ZHE9 pMWWWWW?_<df'fc D h:eC*o`1AJAFR B*K1H{+q3~yqxk-V i a`ӒpDRd BP�z;R1 #=NB%2AJCWWWWW?_""ohYb*IĔ!ɸ1#$aUFxOIUXv\(H#hjBvDYX"8O_m[~]MgEN S!&_p0@) ;m$)"ّrGʀTWWWWW}LKF^\KCP %yr-E9!DFB. K^bo{$2z0(!h󈋅g?6"G}O2rK>(=M,Db4fV|Oߴh1C@&0܋uWWWWW?_/mHE1,wߥ+HnXv-1(Gǻ@g70'T</Rlmɴt|;K%.9Ύ/zo[=#$دC1qJ %DDBQ9HO mOȒ5EUWWWWWCEb,}}{ԡFGo&y+߼O~ʓxdݷE!e)47>1|7s?XݰjWo jB.]<p<-osaVv&k@i5E x&<,<dI9R`۞ȯmTXkI0L3yI<9?9ϤvkC>~#&=l9&2ěݑ15,kflO_08(| zA!=Wz{X8k &-@)#u( !r_____P~CRp6dP%2<Į 3݀@(%Li>!$ Kn#MsL$aHX}VHZB\S$UnӞ~DMֲL9B瀋-Ӥlp10Hn&XDJֱKȯ0!9UDtZf*)rHvGVX6 #>py޳8M 'qgtl&$"b"?Ā֒;CIw|.I<{؞Ә'=.s-VhS**v fOplפbXL6*pkZ<S̴ra WȼbH)=7Edp"d 2ɒ E G!ky Y dd99eJCv B/]ws$؆iJصf9ݡfr 3Ā }KWWWWW?_oՆ E @h 珞s+hEk̉JY3&-DBⅠHqqH۰/$EHDo"y lsrrՠ£A|ĔGH6,$k}feֲ2CK΅"B(dluW_____:w ֬{;()j[=nrDo9%7XX_%!v] 8a#¶)x1l!R¢ 3lV881!g#E e.fOۖLf* h,bE VH,ZjP_____=DD{KfPJ&[D/#ݣW]0H-a$iA ]iěy[D BDApn&/^=Fwڞ@v\[W_1 w2Q-{Rd)HmŪʯ)-giY317G~g^ e"  GjO?+Iz'_ZKuagR kI[ve<}{5^]oStix;;%S?o_ -)Tc3 JIDɴm 0fw$ + rm"63EϫC#]^ ͖#Kg LDJڏ4#{~λ4W ɔoG^$fJbǤI[. 6F4 ͚qktw)^mx.ݚ?xra6,5^t9_2TWWWWWC=LrB(ESPɠ&%0FnqќN i#PҠ~iDf@:N'/aqDc&d@{sHi Q H</mz(gg\7ttkix9EFC %E\<^UWWWWW'{MʉP d�,PBaa2i d\ +,sBDĴWr%7w{GL G |zZsB#\̄9s%FJ|Bkb\l\zN_sZ8%h' *) ʯ?(,o2Z2R(mݑA*E6ݜާl7L)oM+-1z @h)KBdA ZRA@ɂ\$B5d!Q%,?z2`K'X *qS4;NY!@Ē#Y 0^$AAr&BӴHmQ`|qA~$T*jj6$Hdfr²ptjgk!Lΰ8bΌ~!B@Pp4۰x=B&' V+֖HT 4i^)Вy x} H)�Zrp_____P~g5J^ V,#+-9,۾e)W=?;1f4к/EY$")GZ:Mo -3YhՈܜFYrK8ѭB{(F $0je^\+X܁>yţm3Z7ǩ Z]2_____p~=NeqI%R$=B2nV㢸~t'0Lhieּݓ'6%#Hn:\.lmy-h'pbIIY}|b,)$isa$bf \40v×o8k1ܗ(UWWWWWW[ՊiȹRD+ԖGbt݉afu_q{,Σp~yFwڴ [Њx՚w$FOogl-r*h%x/[~>|S3_)w3#.T#-Fu@Yzm['kݧo?7\\ZbǕm)6H !p%#rW%x$1q$|{c؜_?xte^7;?xuߐB4Xp /H*[fsNûWWA΂ӂ΂e">kad<~p45xzw.L_񨋼<pKc.z 0Jc&l<BƮh&Sҁ#ge4 t۲Z3/)J1D?i M۠4'j)&fZqX";) @E)U+ p$)$<q/ ;ݒ5e?WWWWWWC_鵥Ea4Ơfd���IDAT. dITh)8)!^߼ߞig%,x"sL75uOΊ$xKa5Ҟ89i #` a:Kf3NI۪珘>vc^hń-ۉ"銸O$ Y_____`~XCY8M%-AH.f"BWܮ7MYB)0NYbAd|0:svayut_缼;e` . !BB.F57L Ӑi 2x$b TWWWWW=f IwF)$W.*OPhtR"DW GHB1 ]fQ&[ K4톋Dd%H$9dd(m(bPF #CȂkȣQP݆]iHgȯi:k^\DJBd1 }GH1`ʓl&Dd}c^F2J ,BrfFiJ.dB2lqޑrFUY=i,.,.M|4` _____p~SJ=9 $w,Q0Īi Ra͊iN||xc?jrXX~A| tH+8';w4FRa,$L,D&KY(!0HbtM)#Kp~f,ia0[^y3LTWWWWW;5[Λ5s63Zm}"d|}}'x̧_yTO| VӶ'B.<~h^:ëShQ0ĺˌRYb@Kʶ w(%eDp2[ ŏ{ˎz본Gg+dÿG-O)x݋a2,>1-C? 6$)1'~zWh !\EiOi対Yxq?h,{.VwQ,5h nw#S)zQqm~>p_RѼ{yp9Ǜ5VG4yA/{mϻ B!>f[BLdP2dJHH)%kK\}y]r J\WtCPJ!s&vSʮp0SDDž֮0H ) Rxs^_____a tkM[$!HKƱ Dj=V3't蜉9bF DNtωZQ00o2bMn2E؏}G) ZrLͽ~ldHnw}D掘%)etZN_____P~K!αjJLK׻hHm,@ąLRQ�PJT X\4[h?,,ˑ4L H ‰%ҸT||GR*Ad,Vg%kZh28M3>ǻ{<a-#i!raɉ!B 3,&�&a5d˳i~e;vӞx N\.g9*$B�#m xMc.#`;n)F%+tWWWWW?_G8%aJlGMz]I$9[9ЮD`5K舥B EJْB%d& e9V@O�w:"Cy.Hi"!NNui2lqMψgZI(2TBJ\΄2lZ> >(˯nSiĭgKS!H(BLQ$"EGCT-/^O s2M{]d$j\9Iׄ A 4(ƔĢ@.їLXVff=s\Rdq9ʾȯ-#Mд-~F+V S`7_O~[)YvkwǿOy HIBrZ!MC߶"IEe@5 V|)& /?I 17J AFBRRc{}ԸA."\$D̯;r oDv_$K~RWd᧧No/l w">*A%e|-qxuض +c߬>diYD ~?6͛7wu9?MBJ$:PDTj_8&KF_7lΘՊ<^IYC2./"q VVH-|:fqiJJ 4DC 2!r@ 􄜐YQT#5W]2#"#iM=e1}xMsy|Tz<AU,$fIkHBdDň@WWWWW?_K Exb4aa;wn{l5auoH((%)S@K BSr! .)E#-0=>\zS67!!#;&=tݢ\/=k 0b1Bf&"R-hLTWWWWWuTc$'xfW9y? D]0b[L_D!d XERfB\y h{hq97J^sIP1DaO MKZY`kd%c!5ڐR"H8VRJӂO @H 3P> |=W}i\cu03L#,$BFb^ , `KHŸia:L7fǃ+"#e\bdQB">$b(sFOqTWWWWW؎!;ɹ03fiD$8y5Ѭ "'G$] (IRX 1(R蔥1 HAs&rL(RDBZnY2z"jh  "`Rr gZ#H8LJ?| 8P%8G5iB wop'|>6gvqA6=%B.$ 2V)JsB{;~fn-YInbmi#4Nds"4X7 UaDH \_BH)ֲkrvǩt]Ǜ;nv{3)lkGĒ9g[24 ܟNHbΓ+6PbNQCǑ%Iww$Q|ߚ W 6onZyI-L,)>F))SAIIWWWWW?__u@ KآeIEӅ#>yu~^.OVW#64q`GiR[O(0,Qr"H`{ׅ+X? 3ў 0E]dӋwo://_9ӌV0޶qd Ys$KNL#VMYlV"p;ralh EJ!�jMk/ؚ%$lVa(!ҴkKK^nwDd $FkR|y !e4ѹVF Xw)e$ίWX$JB 9g-N(n#]@1#$X]Ķ<W_A2m )Y[BXR%dx_9bC -,oC*I PJ!(9BF'} &ĜK,w_____P~=R spDH1$]Yˑduׯ83NI81O1@!ƀ֊^ G Aʞ#+”YJ!HK,+<*48Y6hij;swê_GQ\Z1%˻#C)r>DbHᲩo]iBN, M9+Bh2+iL͚)D\ %dvmv .%|yoOj>5o>zDJ#Ya^0k^M#9a(9:F (KU ռC]9"Y {\PEfI!r7Ѧʯe@jO Cʒf&97<+a}睋Bc % 6oN{WLi.{ a8HSmGRc)Qb !&!U(x6Fi}BhKf?# whաtdXdWWWWW?_[yO9iv(^0glS<)41Kde-_|{a[m0M'?hJ3J8Dۯ8Mw s)޲X S!qIifcirp YքAfIAsǶʯ?1rXiH9AB$ș=nW40$kG)C㈔>?]|uwF`WwOs^I5Y0Ԓgr\!Rs%S`zP I0Dk&exqsC67!C2žʯYfb(MpXP%9r<M|Ĝ"f+9O=dXm{"S0q! Uˇ.?#.뿸7ȜswIZa^!CW[![~99\d>qXĜ˳>'_ !ug?ʯp~y#Kb&R阻!%]N!ZOW$',Ӵ0M \rzGP؜)^\$o9&Ze䜧%a Y& %ՆSTE�J8Lİb%RAB́m ߸֊;~Y?Yg_____@~g7;L':%ش-aN 82>F6$Klji&k؝<Os9Dq(Y]xIz'sXw_~j-rI L."`fƤZKA+AkǫSZQ^bPNfe;zc/Dnxb2(Ƣ %$)E!K iX/ bc)"TOQaZ.hyqk0{YBF5@(IxR99sLLMwbҌ/(ꊐv4^$KF+k[h }8 Vkm;vw$4\ϑ(%I@I@Co6|-^hLEs ~qʮ1z0ÞyxQt"r8 E%P,XJ)@.5(|$ ^{>5?%#!²-EG_____P~})TYB@6pH0s[ BwܼCwPAZ1$1!0 ~n,YK5cB,hP,91/c[bI Q$RB΅֦W ҁ6q;O6b?ƒb^ ί_өB#Eޜs6-3UKpcdb. JK4|}wVs7 ^p7g,!up8 rR۳vO=hm9,ͨ8߮9 Aʐ ѧ wCF6-<b[<3-O)f˛ߐSίˈ%>brE{~'k_+՚Is!`NHA*4?h_7rY45Z.w'SV-K?.nwW<~_'n_؜3 4%eH]=wk5Cj͂m2"2 N)%Č'!TWWWWWK~dū)o?~dhVG{ð=")HxUB'n=ϻH64]IKrȓ:7�?z))~֟n! E��@D2"ॗi=޷܏S`lTWWWWW?_ $7onH+m8Ԓ"0, D.@b(:+Ūm0FDI-~p,F޶h5eBgȐ# "AANMC)�H2-/̳ Ƿ1|_____@~o[b, $Ad�r TPD'c4IA2EGP)i B"cc%ݪŨ}g4]B#F%&" WsV,(Dј Ex?#KFR@dvHJL4MK׮t]r 1%BA(VEqy~<GO5b)8fuˆTb2I "@*Th0)cLW|zg630%Z,@̉9:%%3!ሤ@,H�(v>c(8G m{ "Kd )8E0i-)E0N37ea4FTXR!#)Cēq!cFH HªJA 1 PFtՄ숲HEp$۶dFϊCL raR fAmw0!2HZSpE$7iL#厔䙖"A&HK. [9sC&\ 1@"B41aIena4Qr!+B ~m~y)~)DB Z'd(a} P%{Yˉ!Dh"Jͬ7i&b^L`1 ^2(ېbX"!KcW'=ܰZncQJwn#aN y^يےijw"K\^s)$^|aGߞѷ!z</vGI_/ 0*cK  slӷ-4%k k39 ĐYpC (Ǐ6M^Wy_ß'Ⱥo Bj˒ Rw3ho|bco>{af{aծ,\4xy[µtmF'2M#ր%$j%LxfY xqɒFWsh=SWWWWW?_wmK4H@9rafxr~/sI8ׂo?}G&Ma{Jr<Me8.7#cjXtC^3-3iMap)P2z:?C{ > %$>~9>_qLZL1/SBkG$ P6-с.C(:&+J ,q8mΡJb-32e>;xh]Ag8yg#PK" <|BH)GH,(40H竖-ܦ= e!Bxs(e=N[&Ib$`YLN y&qcabWWWWW?_/aBsDX K ص&͞UR<a8lF}g9rq\7O18v MHLE2 E ~d%Mw<]<yqO=13yO m{.]Z TU%0̞,ٮIŰ0 lT,X_____Bxikk9 y&4 R4G3zC{3n̋'›D6 .e% B֚@(q>sr'#r91ȕ>&^ 8|!H ӔkrCe0-f!958ު  x 9!Ѷ=R=WH/ſّ#fL[ A␦!Ʒa)^H%D>خA G0)3/:m0YS! H0<X+)e)e E P"ȯu  RA3YwPRbն)zrzsKNo!JB8p3gGmSb"B0υEf٬p"pb&+C-G , A]#s'-T&.ЬYĊAH#G ZYȯ/.zb &̪Ljܧ^F)G7ۯHa(27w[vH҂8ӈ7+NB۷<#eA(L,_|=w{X=;R3N툹0- 1$`o H bPep ZVS,xێUWWWWW?_SZljϸӲfbox;-.ٽD%$lߑtˏ~'hӟ~W|BO8p||4Τ A֒rxM %k`v\w(K&B;~"O6g[SGLgi'9:_____`~HWv÷B?EmfWLG-%Fv6iFwi)=<& iI>2v9׏I17 \7(?lh.ٗ<5;ӓג?^S$޳ ?+]ϻ5lXks@ɷ)dRk{b2$Q!AEMJa4ݖ9̣G)A 87ӈ̠t(N_,"2LDq A y^8P xIϦ$!:oH�$rf"y) KyrOBd(XBe'ɸFWX愈㛉i7a/կ>\Kn<z)񣏘^p{@31G % rj !J̃=4l\1r?ؿx紶/p _J2N4Y!(USUWWWWW?_|3QY^E#>e,dPh2#Tm9oOnRQ߰<W4[bLA(S&Ȃ,A,HjBLKX2Ñ<~e82uO߱L +U4YivBR%G _____`~^I$LHiڢbN4IV!UlIZÑ#͔e|%ȇ:jC*aq)/ĜBօHi0a7.|zƅLN.|W<-ӑ>hӼ R%hk HR`િr)6k"dZMYFVZrY}jSz~vwc"̎iHu3_#uW3IDRuZf2Ѫ9cc%b 22ljq%[Q4A?{w+vڧf //;i1(V ;A0o ÌR<(H[#%P۟{9g]VQh z>-IB [eGڈY<<?qy +p%S_____h[XPT2)ER,s+܏,af-o8.GxQH{ ÄVn͛=X^|}bS22&'&qr .q+e,qa'6ʢB9F"9)6/iEOӜq c7|Cxfљo}2p]WWWWW?_{_ )ERHm|$F1 ^ݝhVWGcq5,P3Z ЦقV{.ּ{$1:~w?~?emSA+{O/x) MxH-qA:i1kˇz>Y?~gԚ;l[_____MEY)+3ؽ(#1& +ģ-󒸹=!'wi6._ ^u˳U7w wM>E|%42y1i)k<#\/L_񨋼<pKc.z 0Jc&l<BƮh&Sҁ#ge4 t۲Z3/)J1D?i M۠4'j)&fZqX#;) @E)U+ p$)$<q/ ;ݒ5e?WWWWWWC_鵥Ea4Ơf. dITh)8)!^߼ߞig%,x"sL75uOΊ$xKa5Ҟ89i #` a:Kf3NIۮ珘>vc^hń-ۉ"銸O$ Yg_____`~XCY8M%-AH.f"BWܮ7MYB)0NYbAd|0:svayut_缼;e` . !BB.F57L Ӑi 2x$b TWWWWW=f IwF)$W-*OPhtR"DW GHB1 ]fQ&[ K4톋Dd%H$9dd(m(bPF #CȂkȣQP݆]iHgȯi:k^\DJBd1 }GH1`ʓl&Dd}c^F2J ,BrfFiJ.dB2lqޑrFUY=i,.,.M|4` _____p~SJ=9 $w,Q0Īi Ra͊iN||xc?jrXX~A| tH+8';w4FRa,$L,D&KY(!0HbtM)#Kp~f,ia0[^y3LTWWWWW;5[Λ5s63Zm}"d|}}'x̧_yTO| VӶ'B.<~h^:ëShQ0ĺˌRYb@Kʶ w(%eDp2[ ŏ{ˎj본Gg+dÿݖ'_?xa2,>1-C? 6$)1'~zWh !\EiOi}n,=Wg V(SGiКZ4? )Kbw@(Ḷ 0~?/)Yh޽bTWWWWW͚^#ftwѠ=ݶˎxvSF -S!&B2H(T2%$Ւ\M 5%U{[>~s[.R^%.+\D(R9aeW8aS)LBBkWUB$Ć)Fr y90 Q-A @$%XX\r"PJF HI:It1FQB#vg"':D (|pOF1&\OPVǁ 辣-9 SD^p6Jj$;>"sG̒2V:- ( DX5 k%?%siz_{\4LS6eqdHCBB&̨ KI�(%QH|ȌD* ,.a-E4Ks\B$QQi\*L>BCHooc>xN#)J 2V[Bt3 ǵ-4EWWWWW?_Ǧcy \^=a4HՐҊnc݁ODJ! @ B�Z[a2ي4moq ii<.^3^KWSL!]n<&1bqyl7^#Uϒ̯L0%#g}Ʈ$F}ˎh ut\fl0̚%BctRPB"Lzlr!2H+_'~;ߡ<$uG {4SѐB':rl @4`\Flg3 ؍]wCWWWWW?_kMO* !%.gB I6-}NYnSiĭgKS!H(BLQ$"EGCT-/^O s2M{]d$j\9Iׄ A 4(ƔĢ@.їLXVff=s\Rdq9ʾȯ-#Mд-~F+V S`7_O~[)Yvko}ǟXp㓄hBI`m9 3+Eˀjj7,.+RLhm_~cn4G "q\pE 5S+9HmWWWWW?_?Yw%޼&x!%Hߥ̯vOO ?'_'<><D|T4$6m(03K9<.[20mηW @Y3}&Ҳm+dyˉ7oxs~+(HtZ]'7/I_oH9cV+~ʯ{%Cf%"t%ZZ#MS.IƑb)+U@&-!$Ȅ-zrBfEQ Kְ^utBȌgHWi 7Ul35͕Q^c!hV=,K%in .#_____p~-% s0qﱲ׬EϷ}#w(@DN--MɅH0V\R@`$kp Rf'OߐP ,ӑGvZ^pd#$- JB slH1%R_____Q )RRYg\ud(Mw ˆna3u|Z7BNd3ZВ/(cY"IyHsN|pg '/9 (y%Ae~=v$7-ifGFJ`D@hCJ#AZQH)QTCL >6! R*lV+t4BR>?,4-&\ qAʎE]0_J2"HH ׊y1̳$-#~M82v9F|Jr?qEAʒ" E 9BB!9)S_____׊Bc;jx$0ܛA!4F70Jr8ik|RRtaXJ6$I b)\(JS4#ekך|\1hHQiѺEdAĪm02㓣4 \ AJIȁAko#髿3)uݧkKC m7ܽ#a͚X؜m_'(rxms(A P?c=d%9U뎀".38bΉ,|b(T ! %.Drhcp|y{ %#Zʮˉuon8=&Τm7YKmk#0p:!u_}9O.`(BIHk9F ibGB$ _ݑdG֤f`=R( }uEע$#gLnagb)H1EHIN JJBgX5G.Kb,.|L\ h%%t|+-E¿gdu+^|5mC# 6 R n %.V}]RS𪰱�Sd?O<?{Vɯ2_3xqQaeA C혱8IH>G$ʴ1a4}l. #F(Pd(KHִYBf"M~ t5vGD6( RHBa&%ww9NhRFL+lUam u'RF"EB.$Аs8r3HH%Ol~+ki(#iږ/^_%dEL!_Hgos.6;q.$:QY`t~ ѷ hBJI1rW_____si(0G3YHbXE HZq.PP|3cd^4CA b hA0{ >2"L"cRO3 seq\hl֚Q\V1w75qtS;2B)=.(Cd*.(֕& t"^.ftެBĥiYRAFϪkhזiR˗7<{ZcG40s1s~3Q*.C`R܎oQPJX8P;E#g[d}/w#Q mzX 1,Kavl2.a!Cx㸢{޹(4Poig{u1xΔ 8晬-(Z<Նx$5%*08rAn*ZX'ki1!'Vt`3"qVJ,o' L+kOGEVWWWWWW(Q@&nW!s1BD_f/y˷% ނm@Hi:qwD{ETP: M' '8~iCL#N)eL KN6KOKSȲ& 0K <_____P~tѐJC "AD/w3$]G/<JgG|7w6d櫻[0bl|b՝vM ȂG<WG i{/9�?x#‡HH'ڐX5)Ëa 饤؎cf,_____P~6,Fi ǂ2-@Αi/#\/0[y %jۣWݮ' QZ>|p/wMG朻-dH2#?':ܢ( wYd$r$]dž>]g ;_G<_____P~k.{Y2-7 4J5)r"Mz"9aiZ|ӫ=GNjwzuN ~'Q~M4g*'<&(i4 so09O(6". Pa",.0 2bl[ƥpV|xo4͚O?<?ٱ]f?)m Äo:1HN>qڐdF.OdzUǫaw<y šldu~$=a }x#I0$%H2ejI,)&A gOiEa{WkC99;7荡ίWV B^9͊e>,X>@,3kaa,짞 WŧP=EMoSdi \uDƭ鷎sCd (N$I rBH11@t4݉J3Jӳ+BѨzɒ,q\ o]_%40Z掶% >pQ,>G$%  xF1!-+BDF#n{Fщ0soX@B`) ldDF. {Zw_ȎDnͷUWWWWWCEP$J^Pf ڐv!E̥ni ASpAbGj tĄ6l d-k33[E)BļDm%Q(DJ 9{X^HVڒ$u<pBKʊyI,@8_}M Lixsr[X۴͸W-!q(-G=[<0{ݜ3X{}a:r8,RIYn~q?f x6b|x܃Ld)C.rG6 SXٴm%xܶγ?EV-o~CN8/#YC.Vk'ͅ9E"FhBM~ xi8f+NN4hpvqОLaX,}fP3wUܝ^g|=}ybsN<x7薔! | b 7 ̣ᅨ,8eDL3jr8P_____׫6w/NY-\ DT D"Uag|Jx ˞"mxs<>#t'-SA#O o>g ~4R>S?B$��1UdEK/qӂM{o'# jO=8cM٨(HnܐWXp:i5%E6DaYbQ\F ĒQtVH! U`ZY$L W  mjF˄32ϐ!%GD "#RxdZ(_g%"@owc[Z E߶X@HL׃�,A6HN%hd3(RJA̅DM5JUQoo.iG΍&M'JLD(XP1h~F(@$)Gh]3h!>b,K6_____P~yُ5Rk1R1qꄗ )eIET.aR ?lgaKX%XstKNKfBIX BP~J!e(8G m{ "Kd )8E0i-)E0N37ea4FTXR!#)Cēq!cFH HªJA 1 PFtՄ숲HEp$۶dFϊCL raR fAt0!2HZSpE$7iL#厔䙖"A&HK. [9sC&\ 1@"B41aIena4Qr!+B ~m~y)~)DB Z'd(a} P%{Yˉ!Dh"Jͬ7i&b^L`1 ^2(ېbX"!KcW'=ܰZncQJwn#aN y^يےijw"K\^s)$^|aGߞѷ!z</vGI_/ 0*cK  slӷ-4%k k39 ĐYpC (Ǐ6o~&y+_/ʓxdݷE!e)47>1|ןs?XݰjWojB.]<p<-saVv&k@i5E x&<,<dI9R`۞ȯmTXkI0L3yI<9?9Ϥvk"O?IBF؞ROBKȘ53Ļ/GZpn >DafޠN{�Ş?y~sC _W S ڑ:yKtD9(!R) B\8NesXˌLkbWN^n He&4%s7EA⦁9&0$,K>+$ - !.)i i~?"C&EkYP&JYsEӖiR6 BV$7B^,I\m%XإX_____K*V"a:RvIg9Oi$;#+,qĄm<Yt&B 8qF3N:]CSL1CdYb@kIӝ;OA$O=eSliLB۞K+E)zhq 'K8@kR1,y&K8VWWWWWP-)fZ0Z+d^ i~~|Ş" f8BD2KdI"<ЬD\2AiϜɈ\N2r!;I.;_9l4%ZPY3L zm9b@EN>`ίjCdž"H^sBr~HmTGϹyqv4ҢAċbovGa"!BP8imX"$"yl7h9|9pjB >Fb̋#cLT5>3ρ2JJkYJD%B!Hkg;alTLkV|=X-@79ܒS,z;0 ّEaHL)saQA6+ʐ@ E" CA2\mK&34k"eR+Qc$V-5wy닋X"=å j(%-iGэ+.q|i$ݖ0 }4͊Ӽ-"HYJe 87|/_];VmSm;b.LB- +H҂/;Tk\¨=)D GbU_____הqb3xǴ#N˳sv/G2b wd? ZPf/\%:03)C-2`=C pk/خ7x)4]JkɩP7ٖ~E*~g1ә$dڶ@NNi|WWWWW?_;ƕPOm!S.fK%d}]" Go{=?z]gq7#crZ %]NcRL$- #KfO:~ 6 inͿxra6,5^t9_2TWWWWWC=LrB(ESPɠ&%0FnqќN i#PҠ~iDf@:N'/aqDc&d@q A y^8P xIϦ$!:oH�$rf"y) KyrOBd(XBe'ɸFWX愈㛉i7a/s-轧?}pۻW|%>(<_L(3WkQbd'!f'8~S8Pv @œ"㛉"S|>SƢ9[K&@ -;1Hۆ) seA%Fϔ$ >erI,B@XKP@*(YD,$ʴ%s<YGX#Sl)D˔ZE5n*f)+d(Xr$KP_____D (HR΄Th-*O0.TO3jReZ-Q͆5,>LYNXWN|c6B0B̙/d] Κcvg\$1_}œr8*sF1 "Z2[p)@K/lc&ZI+Քed%ge۷=gwG8&Z7=R(}5D$H+]meFV&Z5"7glQ\,BRF81Dt33" )r7 o wOi#fhLVMq*dùlLWWWWW?_maYBERɤI0{ϭ|r?G%(]E! 2 FZb5onbyM8 [rbw7-ܻyXRbRE_ą!(j IZ\<Y`wx=Ms!+Egi e"Att_____`~Ֆ~bZ:r.J!e$xuwbXY]1#+}y԰@Y@/h@d ZqﹼZ# EN=>rwsϧ/c*4Y}#"%n_cŨ(K-~}dͿtb[熋Qk_츲mWWWWW?_7eƂ d!@dDP`j ;.o/x .Kv3v/ڄox|'Dz-Vx6kKt޽ rܝt7-Ш^3#˴4#iHGs!3}?Fǣ.8-}((QP iHdBP !dƣYLIQ0knj}0(VL%"874mӜPFiEDcYێSh(YH Vѯ,>/LÑW#PJKĒpG8,tKp֓\_____yז52n,Q,%qR4x}~{NX&i@)1t<|=9+J-{mH{5@NE((!/%8%JrDBTo/?b3yQr o'.@+>$fɟUWWWWWuTc eYXBX6!h:J` ( -_qސ 4fJH $8dfr}tمq +..DEHB(P((Td 9 հ:ߐ o3].LCf|(YBlZ\ZQtg4FR_____׿1x2Ύ'1{\<A-Kyv\/6+dr$!  ,<Bv Gɚ\4n),Iд.^GD ѷ䐑1fC26GrdX" V#_bDAuCw"as ~!4{qzsn}B(Ao AfĒ1RCDHgw/)m"ƀ+O -i`wahz hL+"d.$ )Bʙ%V)}@ qʴyGYV tgyu<<64!8B(TWWWWWO)X nO((SDPp!D(%H5+98[(-aa5IFR!8˳+RI͆D,2$,Afޣ 95-JlЫ, <\_ly}k|2Q_____׿xl9o:6ko)S<ha%^ kX W/3~QmC<ӂlZ6[Mj#ly Nv9D2.3{LcJRd-%+3ޡdg|baXl9܃?XNR.;ȯG?k ~w[SEw.ZɰĴD&!W_0LtpDĜ]a7O~pQ<}»;~\].o>;[LY@k:k,7F, R6|r엿dɏys R_____׏7k.{ͳ (iOE^t۞w/; BL}0̶ tO ("dRɔSTKr7-$V m?&4́o=J>x?d#pBJ<>L즆]aN '?3 ]!Ta R1 ȯ0 lCGA֚H1$B$caq @)z6 %)fO$9sE `۝A L7'=aa"d,#r!<AeZ2R(&O3{"(ɪ81KRX!$ڗB.c(̥%-w#=q09O3Xő" 2*,%D!!3@.ipX8, hY#sir ADAKDq0 !9T()Xm YЭpK$, d_____p~1f%py}wyŠ [OGt UCJ+!~w>q9C($>fH �YL*hMn5jg+˶w'7=@\xq{|wO{sT, \IL!3�v!F@ \0/G(~wݐS xT=KV02qJÔhIr7>,;vs]+s 2k  KA 2);D뙳%˅3KLr <G2@tD$?|\%6LDLGC ȱ%,Ӏer⚞7"c7v_____P~eF7=( 13d$ٴ|:}dQ9O o%bC.%N%b "3IFEȚ"[ QWx=3{47wy sa$^Rv,5РSb3D_2aXΛiqMJH+ d4mCӶ,Z5Nk|y?oa#dͯ=cmhDeO Y$Em4,I*/iް H1eX&~KJ>gGa PRp 2&6BJƗ.d rL"! _____`~dݑc$ׯox&rⅤ] ^^2" ?=-t|'dk#Qѐش 0,)Kt nQm8^1f K&^{ѷY/'n޼Ὣ+.٧ndV"i Jt%Rß݈cbd$u#Y(d;(+@kEk.4M[§c&GDTJCL8 "PMO E5,1Zzu !3B\)2" <?_dSV܇4WG{Y",Jnẁ$4HF[TWWWWWP$,a'Fƹcwvʖn_V=/tߡR9 4%bN XMpBJR4ђ %7J<es|C2B j.c{ڳLG-jyL޳0+#+ 9/af-"eRƔHWWWWW?_G%8HAR|BJgfmq՝s@4 % #&~]ehL 9y(kAKfeX$Eh!!dϙ;G)Ћ/3z35CdD۱ܴ՚% F*MV9Z )%r!kE!DQ 1-TPڐ $HY9J~̷s7);Xw <|A(t< !BB*d^+0ϒ dT6ȴ{Ci)q<x"(r<R+F)K()("C"R Q 9goLWWWWW?_+ (a"㑜 8soFY@HJ˞_ͪ r(p]A"KJKхaq(ـ$%sB*NYPJ;=_kq!DŽ!EMD E%-ȌOkЀ�r), )%!r5Rk?Ϥ_|wAO3/eZsZ3&p( q7kcasadS",~!BR m}̑9'wC׿a֒&Vܟf.;LD9'HLuP%@DEQ/@k-+&.'nnwJOul8b-߼f~D,3??xŮ-L .~<b%!!D5q Y$|}wGEȷ[aJ4F ]2<3 ػq LjR!%9%r*()뫳;a [,hv2qr$<'" ⟽˓9ᣯxw 4|t.:~FڀJ533KܻH4XuJ9O5ëj_O+Lx{?YC9[' l4qE) cƪz\$!YB(ӢsȆUp_5HD,\؆'3B},#A@Z ff BJ4v1p?Rҭ:٠0H! ! Dњ<y}};mCH1MtUQ"0֝$GJ$g?_ %@CΙgkiP"! .V<-ׯ8iP!i[B x}zd֖!2Tj~:"/EWαؐB ˛JCyGRȇ>r< bNFe= +Dߢ@ )1']WWWWW?_ϥQ(Rd!aAAr$ gh]ƹ@A;ΌSz2ND a,P1"B'0eR EJa>(,eqy ZkFqZ߰qVLIP jl[WK0HcbΊze̊~9-{f yfI=][݂K/_ӮZiᛏHV4sŚWS HmJD4QJs;/FA)EcxB5PdaH#0"p»1TnY=sH܍D)xaZӂĐ$.ɬ8F &oXyИBþӞ%9S^stGgx4chERTXJ8D@Ihb* Q<`FZҁψBZu(,0E>Y_____V^D!EN]!$JcF MY2~b矾ŗ/ߖp2 { -z!gQiB'4(|[c3a8P[y s3!zb*$2. :ml,Y<-ZN!˚0,)h"VWWWWWC=FC.+ )X<2HB9g|FDt (e躞qRg?ټ ҒnQÈn?UwΫ=7I& FZ^Y]+]#^jx Y "! fhCbmפ /nn1dHBb;^TWWWWWC;klZ .2 ʴ9GSdrlW?' mZ7_}vb&b?.DajQGzߡ7wsN~ I8cK8dHp0dˏ9g# 'ˑ3wy>Kt75\VWWWWWCί8QxdɔpP D*s ˉ49DeiKN 9%֫5ޱ97D-7TY̷tXu4̽!K<$p(@iV,>R 4\9m^Zuѐ6k?M`ȯfvD% B- 9#ciCd<VGkɊ{:'.c@Ŋx2%pwLW '; )"B afL %hi .xZ; \=%&^q XhV78^Y yq@7+)b,Pb!HYB z.\!6"B5mL5r':Cϱw%dT8bJ'% #I3D�t'+( OL򊢮iGz%Kqa$ȯu}GjF;ڶcwHB3ER$h0fƄH[4  aAgH ;ٚ'WE'"[P̽aY łB* "]GNjQ}SxS";!,BX4zT_____B(yA%jCN` 9 3 N;~$9%,Iú۰7ƒD[C<F}ϬHn!͂Œ1%DEB(J.\8amz"XiK odC+ i,)+%�9h~5*42Q!la=gl7^7J&BIw\n5w_ws;Br`Y ˉ㰰J-'eۻ=a36(Жڌq2 =}p7DNaa?kd2#=s2;Y"l 9z^+&Xd~~Ϳ[y4R Aӟ~6%p-]%89A\yA{2~`ڲAVqwzx剋98@[R/s7Y3,&3.RL,a1YByBWWWWW?_߽̏OV;b+~Gfudp7 +RW}) .{knCE/$N-y< .㷿/XHLw !\( �@W%/M 6ey~80=5=sdZ ysC^am鴧m !gE=_ rA�E.KF Y! G0(Vm1'JjYk,g10-\7\7E-:<CQ ( DpjJ @h~a=n�9m#glk-}c!1]"٠"%: AH ):J΀HI+1c4+V-F =zV974(1QbA!l(Y2�'v"@BP eiZvEΠZsX0/ TWWWWWC*Kif?zbH1KAĀ1^6IZd$R!BIdw<YWO/b`bN /9-A8 G$Ob)D @)\ޖV)X .pZT,.1 RZ8L8ܔ~ChŇ[DPaMJ OƅH!% B(-4{J ƨ2BAAuV#"yxom>+rj" 11˅)Jh#iMetE0͎;RίgZ2\rU< -QNΓn)B0Y !r0r)�Y }Ą%Q׻<FɅAsG\,<ѷݧ9r }*h{])@ Itld.' (5:{Ez2x^zɠlC*a.]1D>pÊkG9r(=:!DP9AL'*yg+nK݉\G/qyqvx+v}{FJi'~0FHSR.$"B2̱Ezx:oO߶hp<d|R|F!4,ʯ$.C&gܣ%4$?!Ջ~C?)Ou%gǀ_ncuê]mY hvw̷k˿چNXe-G!JH)K̲@H%Hтm{ ږiRar$0%_4>>q?ކ??}G&Ma{Jr<Me8.7#cjXtC^3-3iMap)P2z:?{ > %$>~9>_qLZL1/SBkG$ P6-с.C(:&+J ,q8mΡJb-32e>;xh]Ag8yg#PK" <|BH)GH,(40H竖-ܦ= e!Bxs(e=N[&Ib$`YLN y&qcabWWWWW?_/aBsDX K ص&͞UR<a8lF}g9rq\7O18v MHLE2 E ~d%Mw<]<yqO=13yO m{.]Z TU%0̞,ٮIŰ0 lT,X_____Bxikk9 y&4 R4G3zC{3n̋'›D6 .e% B֚@(q>sr'#r91ȕ>&^ 8|!H ӔkrCe0-f!958ު  x 9!Ѷ=R=WH/ſّ#fL[ A␦!Ʒa)^H%D>خA G0)3/:m0YS! H0<X+)e)e E P"ȯu  RA3YwPRbն)zrzsKNo!JB8p3gGmSb"B0υEf٬p"pb&+C-G , A}#s'-T&.ЬYĊAH#G ZYȯ/.zb &̪Ljܧ^F)G7ۯHa(27w[vH҂8ӈ7+NB۷<#eA(L,_|=w{X=;R3N툹0- 1$`o H bPep ZVS,xێUWWWWW?_SZljϸӲfbox;-.ٽD%$lߑtˏ~'hӟ~W|BO8p||4Τ A֒rxM %k`v]w(K&B;~ O6g[SGLgi'9:_____`~HWv÷B?EmfWLG-%FOv6iFwi)=<& iI>2v9'l}]m49m[:UTl$ C=K#{"0,%2iP,YUuy3{Gb$pFk@">+׏I17 \7(?lh.ٗ<5;ӓktw)^mx.gݚra68/:Pm`/TX@ 9!I)A@HdPQa#M4c<<:{DJ~ϯ= Hlj2("s̄ HAZBT9:>8R3ώM wlLnM2 /hh,C$;Rdə'׫ dI9J!L %VvK&q0.7'DTLL {y/)Zrs{O}pۻW|%>(<_`P"gH<,,>!u5 1x.6[.W=i'9N!@Iډ&+d so&"ۣ(|ħEsL m[H onN|[Sx7&ϕ}͖=Sc@h)KBdA ZRA@ɂ\$B5d!Q%pde= G.#R;ܔZE5T8 ETH̯+@P 4-R[T,`tTO3jReZ-Q͆58 Lq',S#>X drx̾sf A!tY`lnt|z���IDATf $F7X]x[#Q|.(!R%hk%6"TWWWWWCSm,DV+z%XFVZrY}jS{~^Dy v[ܾI"r ]meF^+36V(K.9NC n{F1tY$!EW-s,-6bG۞g2<n"Sa%ε`2_____p~=N m -I%R$=B .׏.va m#lݚ7{RĦddMǒ [rbw7iq/^RbR/p1eQM!I˜ #Ǘ4v7|p4g _^kq:Mc/QwȹRD+ԖGb\8&fuz=Q@/h@d ZqﹼZ#ĸ>-m Z {z}斟O_ThwGDJ엙t~:@Yzm['k7.zF_vǕm)6H !XJF vJH bIjas~t%nnwo?crϺoIB4XX._ ^u˳U7͚eIt޽ rܝ: Λ}JhT7y1i)k<#\/L_񨋼<pKc.z `(M(4$2!x(2]ѬMG(n4 t۲Z3/)J1,D?i A iN(R#M̴"" a#r )RA,R$a Vѯ,>;HR+(%%bI,G88n%k8[~뿼kK4Ơ˰(]ȒzRpRCyC='ig Mk_ݓ a_iOi # 0%̢$R ۮ珘>vcv4JĄܹetE',0jXCqDPrPcPDQhTi4VBrCtJ%VM 3gWDžwǯ|˻QPXBR)<P(RhT|C:*t0 v GlZ\ZQ\hίcI[8/<Έ#ʼRUʎF%Z_mVȴ|T +|, x4d&JY\%Anh,~JzM6YD@CFƌ҆R J*6 e\x?c$;,Xf:<z~m ݕƋTWWWWW;M` 1܋כ vB x[2#\HM#q߽ڧ/zv<)x϶lBDm7a%1aD/8=V D\`IR3.0JSr!qʴe )gdX%Н vхe oM#B8)btOb(9E/,Q0Īi Ra͊iN||xc?j;8ׯ=He$5 syvE;^q#0Ȃ$L,D&KY(!0HbtM)#KXXy-o~ּyA&W-M_|9E^pʁ6>KAc =_~E ^i0W6=>-Ȧeմf!?}m4/ëShQ0ĺnfR,)b@Kʶ _PJ23D É~k 082[ ŏ{ˎj본Gg+dÿݖ'_GHE0OL.2y'aroOґOBݽ O ׽?~ ^H4;-,}ۍ/BluفjQZYF`XGv72eIP/ A,\ۆ\nß,w4^^1{Dfeyvue3:|s޻hnOy#. ba|*^HF %JZX&qMZתὭ?DF^9g\lKD(RfY<>L즆]ÜR$$::ZB"!6,H1c@DyWWWWW?_a@؆ Э5}obH"Ic- @)z6 %)fO$9sE `۝A L7'=aa"dĸMn2E؏}G) ZrLͽ 6Jj$;>"sG̒2V:- ( ea(̥%-w#=YaZ<Ej|hcqn!E%dʌJ@)BCf'R\- l)88wd. Sn!(p…@T%&XBCHo1<㑔 %e-! YZίc10OXqA^njHiE1\'nr"g V#F~<qy"ͯl>|[}rns /ni/` `))d:b-A2h fwp wG 9HBWWWWWWuSRxؕDHaٱZ ?(̡ %p00ƅX J(PIyA9[tDq!3i(@Zye><sARwذ_`&b,4}`Q97; X%#6[g3 ؍]wCWWWWW?_kMO* !%K΄2lZ> >7፴dVlbIS!H(BLQ$"GYSdBCT-/^O s2M{]d$j\-N )p;hP)1kED_2 V 4z&;ʾȯ-#Mд-~F+V S`7_O[)Yvk~ǿOy H,㓄j,"6 }rfRNˀjj7%+RLhm/>I 17J AFBRRc{},LDBlɺ#H._Mn7 I ^^2" ?=9: OͿOx5|xhHlQ`g\9<K)F70mηW @Y3}&▉m+dy7oxs~+盄(HtZ]'Yػ$ofsƬVyWWWWW?_J2 JDXc)%֊ 84qOL2 )FRd+ 1Ѳ 9BozBNȬ(Hk UG)iXLI4 &sԞʘm><>*k = ͪg",iMuIht(o1"P_____RB[<1݁+[}zkX]|g߿8=" J DJ҂Д\9c5a )eJFK6.yPL)Ґ`Psa9&=n:nQK6B2y KXI1ɶizK)S"_____p~"I )}UwAFޏ4%U1q9v1Swe~3Q(AH&?-CX$Eh!!dr+4=S8/猖%gf@k/ *#8쉶c$iI5. ^#&+ QІ9GTWWWWWR>6! R*lV+t4BR>?8{萲Ék BI\ IR!#Z1;<KR%cb܏0GN3LjOA[2:q RQ(RPDDr!)N8VQT0Dv#9qތ g=71UAQH^D [P%IJK!BT 4);wX{N#DŽ!EMD E%-ȌO mנRp )%!r5Rk?Ϥ>]8g^.;i B5iB wop'|>6gv!yGȅ4>AFn#E rNh g G$ebmi#nf'U9EbO*0"d \ BH)ֲk;qsTzev{3)lkGĒ9g[24 ܟNHݰ¯>'Wl0$5Ĝh41#!KH5ifOJm$}0pѵ(#9ǙX R*|(eRS"8:Á\آeIEӅB#ZI } -nK+]}ŋFmhpOi Hm>T<8~D#;y_fxUX|\)O|'k^|??s|+W3xYʂ1c_____p~=:IH>GHi9cdêi8/xs ]$"wG.lÓPX>P\Hִq!aBC ]?t5vGD6( RHBa&%ww9NhRFLRت(TNBJ$g? %,!3֖E(n#]@1#$X]Ķ<W_A2m )Y[BXR%d<NWbC -,oC*I /t@)|80#ǣ Ԩ,0g?_ ѷ hBJI1. wW_____si(0()fE,93KfYׯ83NIn Xc@kE/ ZE# eOaʸR EJa>(,˒qn|Ec4bǏaկQbJwGR(g !˦ʯu 9AsV+eV̙nٛ5S,)pg\*Yu 2KJ|~v2}~Ok |F20k^M#9a(9:F (KvU ռCsD]r̒Cn$JMWWWWW?_n@jO!eIty dYu k qMް>E1}K7 =۫Ks40dmh@ъ6#(Yb B:&!U(x6Fi}BhŒ~F:ЪC vtdpȯBB'4ItBI ^0glS<)41Kdx7Ŗ?}ɋ/_0[m0M'?hJ3StpnW;T̄9(X,2'B"$A %K%[aQȲ& 0K <_____P~tѐJCGI "gO^p ]3#R >g;wAZ^-jr]ug6>yu& d#RKR+գkrskt{KͽO}<BC$$mH횔 0 IPRRl13(~g MU4a ǂ2-@Αi/#w0[y %jۣOnW DGG뫖5\>ċG?z7~ǟݯ9t/ >C-( Cs9Kd>qpGb|{p{l/y|֐3sY_____?8G%SqSB1Lt].'Ҵ ZOW$',&;^6g=rJWk Wtw巜DJPqf2zrmEIHJ0, %ՆSTDP�a&bX|- W 4\9m^Zuѐ6k?M`ȯfdSM !n 9BȢ Ifx::^<d ɓt/,(Y]xIz'spcOBo9 ݁IY%" 3cRX- D5HcX+a)(w/1sm(wF1TWWWWW DpdK�#ެpSFX4Qb!HYB 9SRŧP=EMoSdi \uDfYoCϱ_".dT8bJ'% #I3D�t'+( OL򊢮iGz%.Y o]_%40Z掶% >pQ,>G$%  xF1!-+BDƅG^ 3$l͓+썢eP̽@BᰔRHR\kQ2H"#tiB9{>5?%#!²9|QWWWWW?__t Edj5.jCN` 9 3 2n(xD<$&uaoЍ%kx\YG(ˉEm%Q(DJ 9{X^HVڒ$u<pBKʊ%ίW_өB#Eޜ-mZfѫ,,%s!PZ{.y` _ws;BrMt`ɉXݞ~Dhy6b|x܃Ld)C.rG6 SpglZyĶygn[ų?EV-o~CN8޻K}rŴ,O!Wt5B"T #4!h~&r7rY"hktw'SV- j}+/O\lΉ 4%eH}>{|1km2E 7 N)%Č'!TWWWWWK~dū.o?~dhVG {ð=")HxUBdO\"mxs<>#t'-SA#O |~4R>S?Ý#$��1UdEK/Y&M{o'# jO=8cM٨(HnܐWXp:i5%E6DaYbQ\F ĒQtVH! U``%5 $L޶h5eBgȐBD "#RxdZ(w̳g%"@oWcf3lk-}c!1]"٠"%: AH ).EV b.$2hz1VҭZz;x{vI/4<rn4i:Qb"Xb BPD3d$D O&ID8DӴt튜A I׵eBPЦʯUQ\_2O3Fj1X "4 :eC*ok L҂ # !zI1HW|zg63{qxk-V 4s<E0xe@H,DRd BP�zR6 ,%pr"nId )8E0i-)E0N37űohYb*IĔ!,!cFH HªJA 1} :r y!ʂxxom>+rj" 11’ S 1 2o FҚ’#94/ܑ2 5_____p~}<ȋ+rij!i"pZ< "sΜE" ޑK!ҀWX۞&&,f^yAsGXxoO9r }*h)@ ItldKN !*FQjfu!M6#< d#XWWWWWWˠlC*EBw}ƮO"q{s,ÊkG9r(=~ tvC sNHUȳg+nK݉\G/Y㼐BWv}+bwc84Q]ID(ectސmѦx8!48U_____gr%C&gGJhDI<~wC6yͫ_S#%8Ԗ%KN'HAs|s _OWv{nGVmC+}3->k6:aa4ɏXB,(!VS 3egI4#E 9ޟk[ڦAJʑ 4]<Oi|&}\ ~ DL2xpt7#cjpkfļ/GZp)P2z:?{ > %$>~9>_qLr@)B$ l[ؾp"GY_____1-@ʂ)lC^TIeFg5+E^n K2gO MzD,IW BKC9Er<_<m6GdشpZě@)+t,ѳh˴hR6,10HLN,I\m%XإX_____.Lsh+0]kY%Ev F1ad.{!Ӵp8u1NQ8"]CSL1Cdq1P'ߠK'Ϟ?)4f&Im咹+ ]!T .τY`…cWWWWW?_ b)r^!MhH#hg#_,Sdv o8")$ H\*%P,֜ǀ�@.&iYXdD\s äЮwnr0M ָ*kɡזc!PT8Xz6tlK tNHp97" hm9X9B)kѺxHHi8ib|ⅤHp[M$#Zz_\Px42[%1d s ,k%Q`hɹP@,Z癰0A*~5+>JJږa E2-Do9%7pz;Kap3, ۦD`J Nf٬XDLVZ(Y 4Fϥxڶd2Sh@Ɖ)0GX#9hCWWWWW?__\K0R2r&z~hl"q̗F"۲Fıе؟FYqm"Z& s3"�~ctǪޑڞq mG̅9bnI^Ab%ܡZ˰$jޓB$[M}D Oo;.V_____P~Mi9'f?ܚ^><<grd(Y(\Hؾ#+xOЪ??$ǟ4-|qj-iIYK߲- 63 wz_<Ew}Қ29y9ү}F3iPJ"Jm{ȩ)ovG,!0)m3S:d>߽`l)1B/ϴK ?|O3GKsrk\b$D\?&DHrQޠ|`1d_^hLO%߽Hx}g<~VHȟuk~Q˅ks@ɷ)dRk{b2$Q!AEMJa4ݖӜN4y (iP ?4"3h '";12D QXssHi QB_H<;6=�yҳ3IR:@nh54"cY @ʂK%g\&D(P2Y� \(PXy-4I2¸ܜQq|31&5姜kݞG=?~ӫn_9(Pb&f|%fB ZC#%=4l\1r?ؿx紶;8%h' *) ʯ?(,o2Z2R(m#Tm9oOnRQ߰<W4[bLAPL. Yk HY% rՐD2Ñ<~7`K'pSkM,S4/BR #Y 0^$AAr&BӴHmQ`|ѡSa?xUHiD5rp$|$,3ŝ8WN|c6B0B̙;.D  gM %dr`u믾ol9D@fHV3@.ВR_____NqXY$`jYiYg-uOy#a^e拻{nQVsj&HʑV.t{LjDnXI,XWF81"UhHd^ͷαGڈqm{I<Nl8ׂTWWWWW8--8 T$LJ '#n>2nV~S\?ċBe&vkIq$7K.lmy-hq${KIYEǐOlE5$-s.DrRl_8EOӜq c7|Cx7LD8̯߽үVL#BJR[&qN ??pG a8<; mZ-hajͻ׏JOogl-r*h%x/[~>|S3_)_f~K\Щ/>5FZXeowNv|nWLX",Hs`)3ؽ(#1& ӉG[f=!'_ M`mbox|'Dz-Vx6k%ix 2Ypwr,8oZ)#(QfFܴ4#iHGs!3}?Fǣ.8-}(Q4dӐȄB4vG690knj}0(Ű8VL%",oh-,9TK941ӊ3ێ)HQ(J%`ZE옆#I T(F@%Oԯ'o-ʯvO-- k,'7n,2tY KBKIi9 &i@)\px"sL75uOΊ$xK~k=qZ5@N'tƗ3H%XrDBTo/?b3(rEqHVϪ:c 9\cAI{#,3C AE+nRѬZ QJ" )AXmj&7'Lg zΜ]X^9/NDpBBa BHE@KQ 64dmƇ iQJri!F rA>?18'g'm-;#f+JTa+;JĖȓj}Y!BRa+0PX(YfqMᢱ)5xdI}k�I3JJ)(l6qAƆH(`Ś0%FTa7tW/6w3S_____45p/N\o.؍{O%m!Ȍp#59DDyfk&o >۲ }GƄ>tX)!s%QHRθ\X(MɅbv)ʖ/E`@wG/hڅWG%M|4` !z?8=9 $ D(%H5+98[(-p_ I>tH+8'r)xu{ifX" ,2$,Afޣ 95-JlЫ,a3c8La/ Yg> _w<j7k~u5Ϸmxys)g0D/5|}}'x̧_yTO| VӶO\xѼ\ Nv9D2{LcJ-%+3~A)8.%'%Ćl9܃?XNR.;ȯG?k ~w[3";-dp>1!Ÿ ɽ >IG>Y w?+4 \.x"4_Xxqo7➫ g~Y(SGihMg-EbuȔ%AJvw@(pma>p_PѼ{yp9Ǜ5VG4yA=ݶˎx{P)nx!E$L*{jIK`5iI\}y]r J\W,BJe0Vv" sJ,Jq3h Sؐ H=7_____@~a: @E"!$q^24 W dTڀ >DLcE(4mw1 r3 ~NdЊ7(ayF6Bxb?d@4h!Q0M""g4{'(ɪ81KRX!$ڗB.UVb3N^2ލgi9Ź iHHI*3+ �$ qHr$L"Оܑ4L H QiT|` !|GR*Ad,Vg,.giZh28M3 \^{<ayq#i!raɉ!B 3$@ B�Z[a2ي4moq ii<K.g9*\$B�xMc.-yl7^#U ]_____Q&NIq~ӳ^cWm#INÇenk:.\fl0Qb)(BR&zl}ƅ̤i9 XNGD|w(IQb~i)АB'Eu@4`lY7"c7v_____P~eF7=(,9b$gHi7tS_视7Ғ[ϊ%%N%b "3IF"dM- QWx=3{47wy saH:&XjA1Ĭ%g\}7Z573㚔"H+ d4mCӶ,Z5Nk|y?oa#dͯ?64"dOBH�4miqK!8I*/i H1ep%%3#0h()!%KAHE2F Q R_3 Q'#d~}Û7/$d{y]l7$?6O>yG ⣢!iDaq)Kt,m8^1f K[&^{ɷY/&n޼Ὣ+.٧odV"i Jt%Rßrdab2˿]FZ_____P~+2/(QcɎHZ+Z+XH:>3,iJJ 4D˂dB 9!#5W]2#a3EF$+4Q{*cJx1x4YPw5 $E2Xň@WWWWW?_K E[lhc;wn{l5auoH((%)S@K BSr!Մ%@t)E#-0.{|ZC)3loHCBF(Aͅ#E\/=k 0,bb%!gf&"R-hLTWWWWWuTc$'xfW9y? DVaqL_D!de,+b=gˉ<|@PLv3Zћ%߿$ޏ"'ڎ}%ָ(p>2zTs,D&BRJ BP_____׊BJbrTPڐ $HY9J~h[LNC'ag/%Gr$$YHHk , Kq?&tvoh;#>%OWEnGb)HYRDHA1gRR9#x;8eZQhlGQ \ƙ{34"DR]ܼhVFI#zY VZ. nA$)A, ER)tҘRz a9Z5[DH#3>-]K (H6ί<Rct B|xyP%, m7ܽ#a͚X؜mElzJ!Eoc%9r(ן1ZU뎀"iV1Di>n%DrhcX( %#ZʮS麎7w=&Τm7YKmk#0p:!u s\^Ps8,I#Ɏ"֤f`=R( }uEע$#gLcgb)H1EHIN JJBgpa#%1NW&.V h%%t|+-Ewy:?|/ζE?y6 R ㌋%V}]R 맚Uac5's~< yz!_e[l4qf + RonjUWWWWW$!YB"QE猑 ᬿk6g+tX8 Og4Ba"@q#A@Z fƅ ! %DvMc;XRҭ:٠0H! ! Dњ<y}};mCH1MtKa kPE`;I )e$ίo[$Jr<[[9vŌ,bu_ǚE"H%'Gfm b(SHE旨c(8_- )*$1DKHtR~)Dߢ@ )1'Ÿ$]WWWWW?_ϥPBCAH@2.e _:%YWqb&b(cB0hf=GV)J!HK,+<*4,KƹmZ4Պw?U& G!XҊ)I^J%(Cd*.(֕& i:|LYBC YO3geoL!iq g5k˴s,)~}U=1|#Rpf\y5b߆LKc%../1bR4V1'TE@^"iFZxw3-2Kg(6_____P~=>9$%%Mf%51roxW4y|;J-m0l.9ϙ\;<ţ9E+?ppRd1L4 鐛*V`EiHj` K:0WC%Sӑ % 9(r$ !$Q.xi~L?f,%L[>%/|v '0/oA¶Eo 4z"*ptNqBӉλ5_qP1Ȣzb,L ̒6l6, l-E!˚0,)h"VWWWWWC=FC.+ )p$!D3^f>yuO# I"^x2t]8H)o lizWwa vqĪ;힛$PH-Iyf,WҮ/5^r<~G O!kR77ds2$A!KIX5l6-VY҄%2 ʴ9GSdZ"lW?' mr>e]1 1OQZ>|p/wMwG朻-dH2#?':ܢ( wqspp,A2Y9~g}OG|YCWeWWWWW?_GLi M!0M1w BJHӂh=]Lc\rzGP؜)^ ++^yIrz)M@ř|9O %")M4L'VNQBqa$\) s!o\ZzwkŇ?FCڬ4ͳ ӛ[7N 6mK&| #6$.xx?4^5N'OV-r ldu~$=> Z$w$e7̌Ia$VM a w߽+εvP_____++݂/DnxM]cG#I dQ93f{O=K!6"B5mL5r'eM]8 =~~Qt<!+A G@*d$yDGӝX44<1=+"ꡗdc$ȯu}GjF;ڶcwHB3ER$h0fƄH[4  afy}wPϐvس5O7NDCQ0 RJ!HrخG# ]@ w_ȎDnNG_____P~})ոP 9i7R0\6D} ˼CwPAZN݆MA7%1r{fuFZh".'f1%DEB(J.\8amz"XiK odC+ i,)+fp@8_}M LixsZ3iqGZBL@i?j!,|͙03 A7ݳӁ%'cZNww{Îg4mP-ڌq2 =}p7DN5iJmY"l 9zFD/ypp?[?\\]_ӭ<N sD R)ЄO?GȽ xi8f+NiqvqОLaX>3;\*Nx3Oܾ<q9'g2薔!x^ŬRo)&,8eDL3jr8P_____׫6w/NY-\ DT D"Uag|Jx Œ=qknCE/$N-y< .o?_HLw K( �@W%/d6ey~80=5=sdZ ysC^am鴧m !gE=_ rA�E.KF Y! G0(Vm1OԲ /pK309.zۢՌ gd!CJ Q ( DpjJ@h1Ϟe�9]mG,>պȯPmKt= @dj$PB`!)HPrEJZ)XIj1\%M׳дȹѤDb)9+ w4fC-Ȓ(<$R(Mҵ+r-$]ע 1fXBA(VEqy~<GO5b),ꄗ b2I "@*T%aR ^ ~٬aKX%p@̉%'!IX BPzJ!PF+XRh9T%1 RZ8L8ni4gË-&BFS‡'H!% B(-4{J ƨ4ȭ&( N*KmOk ȩa0 K.L1P ,ȼ&DFIk K^"ӼrGʀTWWWWW}L.#/ȥ! %i. [9sC&xG. K^bo{$ys1J:"qYbُ/>ŻBȽ/uBBkا�%P'ѱI,9Q0MD87-D+ b]_____. ( }]b<q}< +ڮ6&ȡ% !z2 b:!U!ώ^J-v'rIdkB _bwѷgdOݑv׎0FEbLw $Pa-yC>xE!0ⲆTWWWWW?_{IH oXu(%ц5^|WOyR[,9 EXýO,|q ,>^qycnX 5f\9|K?mU$?b DZMτgG%Yhj-ضxmi)(GR. Lv'g|<=َs-6_dG=2iBSʖiB(%쎌醮fr3iMaXX@Cdf P_O.[;7|Yk0b ^( K29o ,"beeWWWWW?_Ǵ R) Bt yYP%2<Į 3yg#P.Li>!$ .s7EALsL$aHX\>+$ - !:|۴g!`EkqD(o9DϢ-ӢIٰH"-399&qcabWWWWW?_0!9UDtWvIg9Oi$;#+,qĄm<q@n:NB 8qF3\v MHLE2 E ~ŀ֒;CIw|.I<{؞Ә'=KZ S**v 'K8@kR1<f _____@~-TGpV: X[ax+6!m`܏9ڞُ4g?Ly,Nd?eKjfMݺթZA-Z,<R4Ȟ0 aLڦdP,x{{ǧfjC%Hϊc %e a  51 f%`'P$>sZ(#W0)+[#6LS®5tʚarf!958ު A*sCm{2?zͫB#-ZdN(fGPʚ1yn9&/EnA߆x!)B"ǖxV`×- c$B0dIL, Y3KZIi-D1Zr.)B!d y&,'m i͊ϿgeHѳL [Non) $ĎRX0 y!¶)x1l!RSA6+81!g#E e6s'-T&.ЬqbE VH,ZjP_____=DD{ƒ&̪Ljܧ^F)G7ۯHa(2󥑈e솑q,t#oVfG۷<#eA(L/_/{X=;R3N툹09G- +HA;TkQ-{Rd)HmŪʯ)-g[317G~睖g^ e" wd?Z~Oxy}CR(|@֒ooƙaA-2`=C pk/خ7Stix\w(.S?oٖ~'3˜LRQ2m۳@NNi|WWWWW?_;f)POm!S.fK2?yw~>.҆7=Ȟ.Uÿ2瑱Da9#CIl݉~L墼A`cDsɾѬٙ^Kw{Mn{.xv?ѣ x怒oS|ɤR_____F2e IM BB% i-G9i#PҠ~iDf@:NEw-Dc&d@ yvmz(gg\7ttkix9EFCf"ف"K<^UWWWWW'{MʉP d�P([2i dtq)9!fbMk~O9ג={#W#z=s-9PDLK̄9s%FJaa {isrIc~8=7imwp J2N4Y!(USUWWWWW?_|3QY^E#>e,dPh2.G"}pwsz0a7y#h2d?,BO\" ! J"! 2-e#+#xn82uOᦄ *Yi^8e,.G _____`~^I$LHiڢbC~$T*jj6$HHXf;aq$YZmH%3#`3wd] Κcv3K$1_}œm9D@fHV3@.ВR_____NqXY$`jYiYg-uOy#a^e拻{nQVsj&HʑV.t[hՈܜFYrqbEt33" )r7 ocin9'<<?qy +p[qZh[pnAH*")fOG|dpݬ G~t'0Lhieּݓ'6%#Hn:\ė[$N~I 8}!(j IZ\<q;჋9n ]sәo}2p]WWWWW?_{_\G΅"Z)L>1 ^ݝ4+F7G-58(V0iA˫5^?"+I ?;_߲ݶȩཧGnnEpL& |}wD~]qA:i1c ז>}~:9~gԚ;l[_____MEY)R2"g({5PGbM·<V ..qs3v/~)4Meޟ5\<[~lm,KdYp޴SGPBz<iǏiGNHYCGs!%gG]qD[sY_____P84FiB)Ȧ! C)ifm2%8rFqa״ݖa|IQaq4&NKDX(д ZXNsBribg ΅SO dQ" K~e1 G^Q@).Kb'.<7-_YOZsWWWWW?_^[ZXNn1XeF!@=Kr9MLӀ>SDXo:_k>Ꞝ%H mH{LkN((!/g%JLv_>'gQ%&t o'.@+>$fɟWWWWWWuT s8& $MGXf"BWܮ7MYDS, Ln2O@X9:.>~s^ޝ2$ L!B!BVQm˅iȴی<.8bӢB|~Fc$_____p~g'm-;#f+'Vv4ŕ-'mmB#|W`Xc)%3P& . vEcSkȒ$�22f6RPRl(れ #!Pd5aK(no4^$l3S_____45p/N\o.؍{O%m!Ȍp#59DDyfk&o >۲ }GƄ>tX)!s%QHRθ\X(MɅbv)ʖ/E`@wG/hڅWG%M|4` !z?8=9 $ D(%H5+98[(-p_ I>tH+8'r)xu{ifX" ,2$,Afޣ 95-JlЫ,a3c8La/ Yg> ߌw<j7k~s5Ϸmxys)g0D/5|}}'x̧_yTO| VӶO\xѼ\ Nv9D2{LcJ-%+3~A)8.%'%Ćl9܃?XNR.;ȯG?k ~?G7?E/Z|brC? {||("1'~vWh !\EiOiկ`k,{.VfLq5h nw#S)zQb6|rWdOys R_____׏7k.{ͳ (iOEv{mϻ vSF -S!&B2H(T2%$Ւ29kҒV m?&4́o=J>xO?d#X %B)2ab75EXg&!B !eA"zoΫ: 6tn{DC"$Id ni@@Jɨc)I1|B'Ι#(Ph b@DgȾo<Q !#ƍlr˅)j~Ȁ;JiB`<EDhNQU#q;bBiI8UWWWWWC/\ . Fagd.-Qoyy )RsFs (Ґ,!TfTW�JI2< nIfK E/=ǹ#sir ADA.,0Bz{s:IPR[Hph(:6c.py}_ 1AVtCȅ|&'rP I(|̐�YL*hMn5jg+˶w'7=@,p Bf #F,6`vG( ~wݐS xT=.+tWWWWW?_G8%aJlGMz]I$9}ˎh u\D`5.1.RPB"L ْ# ICqs( P Ć4Sf!oNȱ%i2-ٲ4=#ohEn$#ZˌnzRQ)Yr&HΐdWo,9O o%bCKJJADB)2%g"9:EȚ"[2hyWxz"gi3n" )VntzMH۱@bLYK, dϸ$ n`j8of35)E?ݑV_____@~m)hچm3ZYj8׼ GNɲ_G=|cmhDb$V+diۖ0BpT4^T`U矽-XbBk&~KJ>gGa PRp 2&6BJƗ.dfȅdfj%%`[_____O9Fr|7o"w/^H仔nI?'[ÇĦmyƥ/dXbt۶|{p 5g,-nh{'fB׿y<?矾IYD5x*ѕJ 둅H2_43fϫW9d_P"LǒK, VVđ)\u-|:fYH1Ҕȕ* ^i!$Ȅ-zrBfEQ .FZkX:N!dFHÒgHWi 7Ul35͕Q^c!hV=8$fIkHBdDx8,08w܎Xk[>Ց;QPJ R"B $ KH)SF 0Za\p Rf'OߐP 1=qӑGvr/X_{aXJBΎ9LEL[Jј)HOH)̬3s2~/ ˆα -B!'B2e-hXW")B3 !{Ζ\y 4=g,97J^sIP1DaO MKZqQ|d4Y XjM69ίE5𩠴!IRaZs 21'̷s7FN]0_J2"HH ׊Y-#~M82v9F|Jr?aňSB">$b(sFvNqTWWWWW؎!;ɹ03fiD$8y5Ѭ "'G$]܂ (IRX 1(R蔥1 HAs&9& )j"!-Z,=hX Ff|Zh  P0H) 93hm$}WWWWW?_y&ct B|xyP%, m7ܽ#a͚X؜mElzJ!Eoc%9r(1ZU뎀"iV1Di>n%DrhcX(JFJ @WWWWW?]݉uon8.{ LI1`ۖo^^?"||<bזGatB%~<b%!!D5q Y$|}wGEȷ߭I0{zPl#놋EIGΙ8RRcD)9TWWWWWY5G.Kb,.|L\JJWhXw[\?duο+^|5mC# ?|6 R ㌋%V}]R 맚Uac5o's~< ?]C['w/؜iV0ގIB,9%EL#VMYlV"p;ralh E%F�l͌ BJ4v1p? [uf;"AaBB@5)yxawBۆ2bVF XwRH$9CWWWWW?_ů_Y$Jr<[[9vŌ,bu_ǚE"H%'Gfm b(SHE旨c(8_- )*$1DKHtR~)Dߢ@ )1'Ÿ$]WWWWW?_ϥPBCAH@2.e _:%YWqb&b(cB0hf=GV)J!HK,+<*4,KƹmZ4Պw?U& G!XҊ)I^J%(Cd*.(֕& i:|LYBC YO3geoL!iq g5k˴s,)~}U=1|#Rpf\y5b߆LKc%../1bR4V1'TE@^"iFZxw3-2Kg(6_____P~=>9$%%Mf%51roxW4y|;J-m0l.9ϙ\;<ţ9E+?ppRd1L4 鐛*V`EiHj` K:0WC%Sӑ % 9(r$ !$Q.xi~L?f,%L[>%/|a aaۢ7RaN\^f8:J8Dۯ8Mw sdQ uXe&DOLDfIN6KOKâeMa4Gyl!8 "AD/w3$]G/<JgG|7w6d櫻[0bl|b՝vM ȂG<WG i{/9�?x#‡HH'ڐX5)Ëa 饤؎cf,_____P~6,FieZr#_G)2-`_JնG9Wݮ'( W->j|_&?cs_$i_| x [^nQl;9r88 ɬ}Ĝ˳>'_ !ug?ʯp~y#Kb&R阻!%]NiAHNX1Mw.9#(lzX\$o9&Ze䜧ۄva YJb N�J8Lİ[is`7.-~!mOYWWWWW?_͎D% B- 9BȢ Ifx::^<d ɓt/,(Y]xIz'spcNAo9 ݁IY%" 3cRX- D5HcX+a)(w/1sm(wF1TWWWWW DpdK�#ެpSFX4Qb!HYB 9SRŧP=EMoSdi \uDfYoCϱ_".dT8bJ'% #I3D�t'+( OL򊢮iGz%.Y o]_%40Z掶% >pQ,>G$%  xF1!-+BDƅG^ 3$l͓+썢eP̽@BᰔRHR\kQ2H"#tiB9{>5?%#!²9|QWWWWW?__t Edj5.jCN` 9 3 wawHJ7Hs<"UKpIú۰7ƒD[C<F}ϬH#CS"ƶĒ(H�AɅ =MC@+mIm㺃wlh{~8!%eAS_____T" oN s6-=UKpc(-{=[<0/9ff!9{}a:qpRIYn~q?f <]Q1q]s<A&2!xO)8F6-<b[<3-ٟ"S͖7_!BWWWWW?_݈%>bZN{~k_K՚Is!`NHA*4?hwo9,i45Z:;ړ)g5>|[{ۗ'.6_ݒ2\~5_̚!5a<.wb͂SiJd 1c&C_____@~j3?y<YoۏՑ_0lO$HbJ$^yƧP,n=ϻH64]IKrȓ.7n??p"��@ xy |U"AKaSg[ljSx)Xs0G6ʯ776N{`AjI QrX"Qd�Rrb6#XDI-~p8# jb-ZhyF2�H޾�$YfƘY|[Z E߶X@HL׃�,A6HN%hd %g@Q 1^ktޞ]t= M+MN(¡}Gc6,IQ“IRx; !(24-]"gBu-jYcav%kU~ĬZc!¬Nxِ3XLR&iATH $L$+q3޽8 <zn9qp"2X $")x2K!R(�J]O) ee!=a H[C ίeDZKJMqFs(>" kR*d1%|x2KĘR*RB#�h*ay\(H#hjB^",$۶tFϊCL @̂`Bd/"HN0 )w HMWWWWW?_'2\Z0y@ZOb3gQ0hwR4) K;h#+B%S+DB Z'd(~} P%{YCDYo=}ӢMb<p/_____@~2(ېbpwߥ+H˰ZncQJ_G(Ü Rيےijw"K8/x+v}{FJi'~ #`T$))|@@! E"=<7䃧o[i82>)>#.k NUWWWWWC~ĐYpQQm!Ջg<G}Kp -KN",́O,|q ,>^qycnX 5f\9|K?mU$?b DZMτgG%Yhj-ضxmi)(GR. Lv'g|<=َs-6Ǐ zd҄-ӄPKS ]3c{f>}9ҚðL0̬i?gŞ䂿z{X8k &9 S z!uq P6-qEDl_ \QJ eAP!/ $2#S泃d"/l7` %R 3'eHQ="Hi`$ +gD!Dǜ"9xZp#2lZh-eq:YeZ4) BVe&'Gv$u,Rk&9GHJ5i" ;a~de#0=MiZ8yB'(|f ۮ HZtg(iΓo%ɓgOs3жr\ZSpJ^ڮatad vM*g,Q±ȯjN1Jkk9 y&4 R4G3zÂ/g)2;O7ÉlK$.A( Ykc@�JNHD J},,2"݉QF9aRhWp 9Gm]k5k1B(r*k,_____p~U:6%T:'$DHe8W_FZ6ȜxQ,͎5chr<L$$^4݂4 1 KBRD$8-&v=/.W Z(<HL-alɒ Y@g9Z\(c0\(R BVw_____@~LXN D?Ӛy~%%Vm0gܒS8W=DIǥ8aBmSb"B0 3lV,"pb&+C-G , Am#̋O<m[2L\4YĊAH#G ZYȯ/.zb%MUC)nO?Rtn4_v8PdK#Hm #I XGO#ެ8͎oyFʂP -p_|=_"ݱj{wgmsar[W$/a w2, ZVS,xێUWWWWW?_SZlj,;&fbox;-.ٽD  ?)ZgPf/\%:03) k=���IDATI[ve<}{5^]oPZ]&B;~| -)N*~g1ә$dڶg 0fw$ Rrm"63EϫC#]^ ͖#.d}]" Go{=?~]dq7#crrGغq}# rEyƈ}yY3=9:|I|"݆]Y!"ޭG-f#%IʯdʐD)J5)1t[Ns:9̣G)A 87ӈ̠t(`,["2LDao!%Dś A~ 58P xIϦ$!:oH�$rf2D) .EyrOBd(pPBaad' RpsBDĴןr%7w{GL G |zZsB# % rj !JRXbrՓpbzo9dhB&P0/0(f(G|X4gkHжe\D R)w>eaJG}n\Gl3e8~X@ 2$Dd!B %( d ,E"TCeZGVF#pd2-%M +U4YLӼp YJ%\d)zIʙ M"Eł FN4IV!UlIZÑw8_I:5᳎ڐJ&gpG 1gFȺ)B75 6FgIbtՅ'?r8*sF1-ǭ@[g,)\%/lc&ZI+7Ғβ[VrG8&¼05wHݢL#\:Mo -32Ѫ9cc%b \8Vg#MgERnx52; rOi#yy~&Y+&8V\ .S_____ж܂PT2)ER,s+܏2Y!{˿Nq/ iwOa6ۭys'ˋOlJFƑt,//v|I8.%&eqC>Q̹0Iy|I`wx=Ms!+342e :0~jKZ1 )ERHm|$ƅc;18hVWoW[<jpPahӂlA+=Wk޽~DV~w?~?emSA+{O/x) MxH2Nu|o1bT(K-~}dͿtbssUϨ5/w\ٶȯ2acAR ́dDP`j ;.o/x6O']n]vg^Y 9 Rhk| ?!k>ny ۬YDݫ+ gɡi٧FyqӚǏ#1ǏxB'K 4ȯp Fi҄RMC"R!5dJ:p&N@ׯi-9hZM3PiR-0L+"" o; ,"EDȢ(Eic$%PR]"2O\>yċo[R(=(Lc ˌBe,{ -'97s}p1t<|=9+J-ۮi09 PP C_2.,J"` Q|OhW8fG4KLn˝N\NW}"IX͒?5p!p,M%-AH. %0E]oHFj%$G)0NYbAd|0:svayu\8z_}缼;e I% !BB.F57L Ӑi 2x\pĦE)ɥ5H3OZyIwF)$W)*OPht+["OڎfL GHB1GSKfbdM.\4톋Dd%H$9dd(m(bP#9FCȂkȣQP݆]iHgȯi:k^\DJB2Fjr>e}ѣMvIs}e"2 l1M/ # <}|R BK"qhQ S-_H9#*,_д ,.,KxhB(TWWWWWO)p{r CI)"(,~AdQ$VMK kVLs qDPV[~A| /#VpO˳+RI͆D$YdbI$2YG AskZ0H٠WYg2p<\_ly}k|2Q_____׿xl9o:6ko)S<ha%^ kp^}+NM×O!iA6-m5#ly^2Fs1%֭et3 bIZJVgRq]&JN[K r-~#D]v$7}WWWWW?_ 6;<:['G7ooċ_ " /&6$dQ,D bN0pC?ŋD(_bX\].o?;B:J@k:k,7F, Rµm;~Eɒ|Gý@ίo\gWXQ6ȷ>罋t۞w/;B!>f[BLdP2dJHH)%-erפ%q Mizvɕ*|*~pF^JR )enjX0)(LB+*L!bCʂ#9D<ޜWWWWWWum(Z DH y8Ҁ\QjRb&N31GQĀȉ49}C+ x;-BF *SԊ8wҠ G4y\_ `$Fr{#2w,I)cӒpk_ @\VZ8y\Zz7W%S62P!!YB&̨ $�($>dy"ܒ0͖"_@{sG0 '\DYRa%44t<R "c%dA:cq<K+BQTWWWWWul:Ƙ] +.ȋc<MT )6 MN P!9�TКjُ'.V5mÇ|OnM{N8Xr==Q,%1XG %(Xm2sPnc!@z\V02qJÔhIrG9Ю  2k\Gc\B EJD뙳%KG2/Ph?`9ߡ<$uG i"BC ՑcKpӀeZ2beizF<ЊHuG<TWWWWWCRL!#ɦ峯#NY~}sHK'nņ>+8R dJ$!E"rt5E,4Den_Dΰ;9'ӴgEAR&̅"c!ŘXȞqI%jpLgkR ~ #쫿ڒ1Rд Mghp:fy N/e7~{?ЈĒ=>IH V")lз-a-$h ?{[2"ń֖M|`s!>dLl /] =7G2, K~JK$D̯;r oDv_ᅨ %?w)+𳓣O O; M K_"gɰ8^m7kYZ2?Oz}l=5q ]]qy~?}|%Nk T+# {d׿%zi6gjWWWWWWCu$s8DD%;"Yhh`#MS[t$b)+U@&- BH Z('̊\ְ^utBȌ%H@n2G)fk+ BЬzfp.BI͒4\7FɈb#_____p~-% nYa qﱲ׬EϷ}#w(@DN--MɅH0V�ёR@`$køh O9!  5c{#^pd#$- °slH1%R_____Q )RRYg\ud(M_Xǝc73u|Z7BNd3ZВ;8ERfB-'>HA3i{hYrFo~2{?bÞh;AZ5Ri̱՚mH)s$AWWWWW?_+ )%jSAiC. fBL#*ecOo1o8);a d:Ed!!23̳$,[2F*H qdڽ4s8<]~)Ê eI"E|HĜQJ!J!┩kEE5 Cdw<sag IIpvskYDN%95>Hd)Xi)0%Pb.QH)KcJ鑲xkM>:rL(RDBZnY2z"jv @.'`Rr gZ#H8LJ?| 8r١LKXZNn{sG859۰;B.$ 2v)JsBPo?c=d%9.kO3Et38bΉ,|b(T ! %K"ưP/@k-+&7;N:q\l8b-߼f~D,3?xŮ-L K,yryCJBZC̉6jH8$I$;o[aJ4F ]2<3 /q LjR!%9%r*()뫳;-j\X4;]^X-$<'" Wj;ۆF>: H#m@j %K$ ypO5ëjN+Lx{OŇ ?8ǷO~//_9ӌǙ%*,Ha3V_____ףd Ys$KD3F67ٜE"bpw6<ٞJ!�jMk/ؚ6+0i5c~`IK^nwDd $FkR|y !e4-*BA$9,Hr8_H(` 4y,Bqs9Y$$'qb5 4D4mKHOo_2"P@/Q]P${qmZVRThayRIb,~J)Áy91'Fe= REDRbNqI(KC)9,DH1$.,`ɑd]2((~uǙ1tJ^p<MPZ+za*2)){ SƕBX$Vx,U iFaYs +۠i<~ ~MBS;2B)=KPT I5\6_____P~+M  t"^.ftެBdI<RAFϪkhזiXR˗7<{ZcG40fXj 9 Cə(!0J@)\\^bnǷ((hbOD#g[d}/w#Q mzpR |rH )K+K ̪KXkc8hw. )80[ڼa8^]r 357Nwy&kGs<V$ O>IDbch!7 aUZE4LӐB+t`3"qVJȕ5ܧ#_____@~mJr>!PI:BH\Ҁ9c{aHY"Kƻ.|K^|m '0/oA¶Eo 4z"*ptNqBӉλ5_qP1Ȣzb,L ̒6l6, l-E!˚0,)h"VWWWWWC=FC.+ )p$!D3^f>yuO# I"^x2t]8H)o5lizWwa vqĪ;힛$PH-Iyf,WҮ/5^r<~G O!kR77ds2$A!KIX5l6-VY҄%2 ʴ9G돘SdZ"lW' mr>e]1 1OQZ>|p/'M_7朻-dH2#':ܢ( wqspp,A2Y9~g}OG|YCeWWWWW?_GLi M!0M1w BJHӂh=]Lc\rzGP؜)^ ++^yIrz)M@ř|9O %")M4L'VNQBqa$\) s!o\ZzwkŇ?FCڬ,ͳ [7N 6mK&|[։Ar򁅌EHt<[uyv'ϓ'+_9DYP6Xb?Ow_~j-rI LKDHfƤZKA+AkưWSZQ^bPN fe;zcn�"p7GYᦌ.hB$(d X3 s짞Oz6tFH Ͳ.cp?D\ȨFq:Ő OJ# 2G<g�NWQE]ҎFK\1XY[_____ߺ@Kh#a`Z#m۱K$|X|D)IJ4zOobDcB-[Vv0 AgH ;ٚ'WE'"[˂({sa) ldDF. {r|jJdGB"es֣(Dj\Ն)rf.uKA"2n(xD<$&uaoЍ%kx\YG(ˉEm%Q(DJ 9{X^HVڒ$u<pBKʊ%ί7_өB#Eޜ-mZzѫ,,%s!PZ{.y` _ws;BrMt`ɉXݞ~Dhy6b|x܃Ld)C.rG6 SpglZyĶygn[ų?EV-o~CN8޻K}rŴ,O.Wտt5B"T #4!h~&r7rY"hktw'SV- j}+/O\lΉ 4%eH=wk5Cj6y\"ń ӔbXMzf~%?y݉÷]?64#a؞H^ ĔH$*O X'.69zw ؑmh偓ĩ ']o> �?~))~ޟra E��@D2"ॗ,æ=޷܏S`lTWWWWW?_ $7onH+m8Ԓ"0, D.@b(:+Ūm0FZnqF&zzCo[23dHi! "AANMC)}H2-;ٳ Ƿ1ZWWWWWWmYlPMCJ $J΀HI+1c4+V-F =zV974(1Q,E1gC!l(Y2�'v"@BP eiZvEΠZԲc!K(hS_____ת(./Y#C,Y!g L҂ # !zI1HW|zg63{qxk-V 4s<E0xe@H,DRd BP�zRmhB m{89G $2AJCWWWWW?_""74Q|xE֤TbJd1#$aUFxOIUpPFtՄeIEX<}Imv695L|aɅ)Jh#iMa ^Drӑ`RH8Oe4TaD8-tK9g΢`ȥdi+R,mODq3w<FIGTW9#K,<ݧxW>NPu J$:6 %' (5:{Ez2x^eP!"!KcW'=aE۵ģ9ޝZw~Ɛ=wxX"YͱII rˍ @k^{eo0 7`ݲےmuۚ@)REgsыGKX%OU7{ZPSOHI'g rDʑiq>k-]sFHpxiFni5P@ST6(BdBtdZiUpQIʯK(ps DJ7-JhD<^?UZ </O~pd5x0'1o|fૣgv|vȓat͢Ym5p;xMJGZMt!fHRlpL2wȪc8TY 9ΝmFJ1#1eq"3>x{OΩ]"~\ ~??}t !099F8ki iF;ˁ93 rBv!Oyv#Y/8k*hD*POgb+fgufEt 8/////(qF9{b`9ej<rd)2&88hmFvgr۞J�>l$ /tBHm~ d!d{"b(2@g' ݀g6 {r^gYYS qHђAԑ˵d2Q#BDfYjXDEJ#fJ\w؃'-qp1>xB9#srYάۚG,C,Hz7`GkIݞdŷ6J?}#ӐE6sJ, StӴ5#I8xO2KbiOZ^4C|M\Ys4|Վ~buxO>2DŽGbcb&<xP/lH 4%N,ҞdRCG3.RqƞQIӏ4#"a1ίjEˊ4 @]i*ίqaA "ϳlIr^2D HD ˊUMoRd!CC ]@+0m랋E QB dg|lLM$!fh*&&Hrc92Y P,YȯuHM4Ղ/޳BEӰ;Ǚ ;R | 8gf'*\4Df]g&1Rƪ Asb"Z( dITd1i0͎ 7iH$<AĊ1 f0.RheRs///// l:B9TY# 7u5[ГeJ"恮]!6NZp,M ҄ZF2jN~7TetM0z%h-!5D`g.! !Q#j} M6\@ GgZ6/////(&7#von~NӋs/<Z~V ?g{3~S/|Ձ˥0dfWڧ(!`̆rY5]Қ`)f4XOROQJ"ri:fI1*+/////oG"+dpc`$x}Hd}M >β^C/ϸĸ￧wޥO"w|<0t '\ϑ=!/l y  v9דf[u`qZ-?Y›=i&n.M78'oS\N\_____וdL"HΚ*hb@ݮ9ZdNgפѣdp֭xw@8gz;D` �̜ޛ|K働 7 i:c%\xTSKbUr z)36x|(/////v">g|N$(>}f`;'F`3ÜSDfd܎+~9ג=?~ woz\ %.y a ="%.]DSج\,:'voz9iqNcO4#uRJepU_____ןގdYWq鈋 l))4 @T='WslGǥzM1Kv J 4H9" a ^1#''AjpdQ ]_c#cw-vYcNy̜SR,P*bS IA______˅D HbJ *d*aٍjR%-Q8.lO, I>|ڲT+bNvvH!\&,IgB蚳25՛'RT̫/x5ӑ<.edӐx18}j&Zrr*VS r!X4lZr]bّ{~LjfƩ'6<ܽ"S3mLaBG5 WgV BSzO(s bn+d{^OwL27;C@et<;,Uţ:(f\ 6Q_____84`P1bLq't?U\]_D&nxaml0풛1: R2DF:r-9r)l`,}:RUg4L)3HQztAma{MG]qHʬ-m}ՉoV< Z/////0~rMX0ږ21RHm] c?[ 돱CQq~qFTtՀl@+Þ%^]$u3Z {.p{G˂cI\#yĆV|oR-W 6||vkɳeǠ5/\ȯ<bBF2'N9'DJa'{B \lxfVvk&ˮ&E3u]cLdn< UӅOz<GZ ^^B9 Ou.\�%4L<zp4%t8]F'5g68uuQ_____;9Ji*9#H{9}6Ke39=mi,KRn4MZ"LvuS4Ejȇ:$a?cۑa>yȺBd̊%~T[\SJ@!2O#y~xGp֑ֆT_____uӆ ';QW6B&̑=I oGƱG)8S,W-4ؓ"{ \n7c%Ҝ8͂V(E 6LJ"`N3Axvg4V9DtF.@K.%,&ɟuP3b-�J΁l?O3xE-W uY4%=S$1BT'\ 8st5g? g2 !LJ=LʙZ,Wģ™D2ch 3;A)Ʌ4쌺=b6 RH.^eֲ 6L<nZ.g 3}~ \YM&͉4)kfQP7+6N/IC'5 I>!CB銜3J*VyH!<YfX2]PjWRDĤ?7؋W aGp^x6QIMa?ǘ',7 t LY8w\Y=뮥+v<ytt)>�1%lZQ)MN<b1ȆĔY`@GfѥzcǪ~L?_oqq swړ'sdAfv3"I "Tj8E>=<ݲty,<iu4p\]Öw@W 90#I"r$HdJ*$!%ںA )k%IĐ{:͚7w7in83/////8punY]\W<[u[N;$qRP +ǫtMׇ_8TSN{>|ujiF|<zr5/קD`ecU]!b<ZJ%܌Rapm"H'CoI9A$v ')Q-Q//////볰zUrق?[?w~?W'"i " |鯿xY1 )LMUW<?ކ#uxN/wvm˯\nO/V=ǖ\[К4?-wہ1Ib{@=x1seja:p6_Gּ{qIwՒNre:|3h]w{`wo3!&b2k\̄NH9s"tG aI#W潵?D*+yorĘg#۱fa̢bY)Nnb,Y TfjbH#ȯ}#LMKFi3HG|%I!c'jFW %1$()RY(4u{#RjIo<V~iRF8Jd`7$@w-9h!HA0,WWg{ VJ%w-G%$I #S?_I<HL!5o3C8;ԸЕڙdY>UbP#�JI43 vT,j6Мc)׌/"# =Aig5>=98Ę1HmI.Θm[$_____p~!$&빸:{4bĆ4[]HUvUSfML D @*f�&5a4Jg 􆋦w>[p y~gl` aΑ'FXB� ^<hbEUmΰydVN#UM ]_____AFNQq#nձZbmQoa޲<R3? kCF&`PfB(Bc"8dH\Ĩ!q8 OGDt|wQݓCnq 11S}'YmOh5`XGV4"aVf_____P~eB1+)C %HHRŋZ}*ïntc͍4$wNbSTB3DN(]V&ˆ*5ߌsus}`%hΒV/s7dQ 12iAH,588$@z=Ȯȯ J ꦦn~B+V5gro'UWszy [/sZDpQBiBfI`ꚮi8vx+YG5F5| vN"Zz;/_99rL5}!.gt%Cpb4s?CY %c#9/////0~lI!r՛[nnۑKz;5ɬJ-~uŇ- ȪiƄˁ1'b==|}It%$ vi:'bD67K.o#"'"j 9b͟j`fdgI-޳/////(d feN9KZ+#@]g.[>!P #Ni!$ȈH-zSD&EV56S\BȄs2 <;_ǞT'ڑj7ԗGG{uE A蘄�9r?I檆(4:K3TS_____RB`!T 2L-w#^ܽaXl:3_iC"FRhi@hrʄABe4~,1&r$]1;'OXo}D}21>kFldt^TP BBJOADrT9P_____A 1dRX\d u#E%F[>el7|L&EB2 e h,2XYf#Bv'>t3j=g4)W=J^߽ī T~G0-;/IuC\,A`]`p4I jI�1R A?_+21F bF銔GAbNZ(TL|R_zK=Qˮ4Xl³lki»Px$eADIVLb$~Θb 4b<V3fAk@,F X1Id)|$R 3)%oD?_+2iɪ㑔202go^QWEBH$Ñfy# Ygz;d J LH,21gZe;l!c9R"4D ,J&\i  R'%Z#H/////8vD-?ŧ|8rޢ?4ZӟFYqsO0%Y;r�,>eҸ EoC d%H)|7_O瑥QxţvbFQL)DdN,k{dɸsBJ @?1Yۻ-Ѷ-7w*L1MÛ7,ׄp)܁5fi\`{R!O%+*�#Ti82 >IWDْ|ݚ4S Ԓ^lUI4p~v(`7[a"䌔 JI1ί/ZL֯QS"Gyd8D#ɾ^gٮre9<1uM-+>9߿H\D:a~J \M:27#)c`7x%O6wk://mXiFf3V_____׃hIR IDU :%*Ykκ 7woX-Y"BpdcjϨErl=9�1ՄBTd%iqgc.t:BQ!{-% mj|Lq3kYV e+I~&ƄD_E|!ӥaiQL,! 6 G݂ݛל?(bPn|<s{50iO@Ujzj[,Yo<جA=RInrΤÁi8!EfiF%A;v#9\_____P~=嚜3 BC" II4A3'ٓQz}YU*r#8|FTȄZщ Bû@?&lxiYb P93&yNX;sq65ZkZY,x#,%a9 QH39wCc./////.5>EU ))TERtęnUKF4MؘhkaZ-O>͢arOSU|8Rm=!RJoPR"HEU"\\P o狑QJQ0P;di0d%笁wCʨ :&yRp*/////H-p"Ilf=J,ڈ1a ‚:XxgL=I+ӎG8SNsിOIѓ")x+H 9HfH=hb(2+ZROUD3Њ9܄ tآUd1pi*Hoe?_yN)jf g:c}`wLH I"sى64|Km 'A?oAA8|\?Zr8iE<-8S`V uN=!yGHbVWV$+ B%IE)/////=FV:x"pfxZT'hk>yPm;a@J|oyg.HCK^ߡ#WEnb"w;n@@ . $2\^_KY#NjNr<yvC 4>4Kb緷'LlZ !C;KX2TJ@̨!eH)p<~p&#_'O, n_|zGB-AT\]6|x]s?*o?Uwva~p$Dgx}CGc`d t=ROc'}&g?gʯw~C9qBя#1Lm6E8#G%' hG;^dVgr,K~faWsZW֜n0TdA̒\L]E9V�rЏ#6gDU#S&$Ϻo\:KŇW-FM\-,///// -k;܉V VMG|[ ^rr YWD6hyhy;$\4lOǏ{YfO g ,6 HӯQU@T R`!*JCnkdU1{SC /%"fF0-]UQ_____ #ޒ~ j:+{KQ dV)ѳd-;kٍ9j:6Ȗ "0n=s;̾XPt<sER(1B T)DF<=\hYX^\%>nUFC,1_____@~-6 }bDV4M>wM6RD_~~K$,6X"8L."l1gK?Z`n\ 3YUX(,31C̐5.HF$9m=S('D$B[z*,XQ)Bլ8 x! EwPFuT$2"X+V ]hS+13lYcd)2@eBd2ADR LJUM@ mm㲅wh:Ů?!+CLF,ίׯhU,+nN3dS ;lTp[9R!PZdū=kv)&&!c=ˮ0S[ wcoُC5xpI9_/9w # AL2>pݤu0 F2 {aS`q Zs3_____p~qX{~o5bɣb JQ Kt[ϭ3c/8͂BKyA;gXcD&чﰹSܟ^轧Nܽ<YnuCLS~>97|5iXÍԉi"ň C2FI ~xߺ~XQ/LvDt!H$Tf&\8 Ŝax|`RnǗNZƆ#Oo^9> /?pk)3{�@ xyȁ x$h11d0rW;21 Su#+U_____-j15ӎ0UԒ,kHIbPF2PtRH!H*ɱa-O_a[Ih\,WtA -#:M4Ag "d T?�IB"849I"<v!$fp.1;Z///// B5 !d@$�R kT]DG $frJ"KI#!e"tZSIh۹ c4y"ŜSRXkY487!sBAd xdNruC,H mg\Ȅg]Cʊ qb78BH3"x43:dMo`!B^b B*bB2gNnX-p5Ǿٓ 1%cOHugA$' >2ޑ3LPzr&eJ+g7hgZT9 (/////kC?8q-݊֜Պ7kDQ~I ĈGbBJ@3ZhsM2>3mKj4>RgG#~^+Kk�}.3<9CH`B$t%i̜f%Z8 5_____p~&撔k*3:@fGj=b# gAxgI9<$YSĐ階:D l'l-C%-A]8 !l&pd2]h>ckvC䈴"$sd*|P U@0]*S #TŲȯmejbV6#f;"}80 .DS;i BULB<!U&MNJ-ˉ)GN2%i&t]#j{? @!DNQɪb iE:8AW5CEŧ~& ƪ/////(v.́) 2_(9zCVi/#?)ÑeBjÜ$�߿Bs9𙁯E~k#O{5ffRlÁ<kW_65+1bk5 QB"&KA1 !9Pb d-X78w*/////ih)TĔljd#ن=9vŖs-+/5txh#7#C'L/̣''p> uG􇨯v?՚+|gy଩pBq<Ed=yCae.|(:!I8zIʑLȘ࠹"ٝ1 _l{*'p !1UyB$fBв;-4pwv{L4K<rsyN98fmgMLsx*|Ry"EKQG.גelc(/////kGDuh  =fc)q [p +qsqaTƙ a%f9nkjd ݀ %u{~ (y l:NCbtt\̉+@+ N1)O O$=,¦ ? LPX,/////kSH42zkdZ5qn gtLnbFW;vy Le?*K@2?LҚ@("&$83 H{bK}ifܻLJoj1b{G%M?Zp3T/////8^-+@*p"sv}i:8~i+d<w%yZ7#,+vFV5! KqBDD8 6v{.5Z(D 25UI\b<~N#ɍ怪**Rd)B!d///// i'*S#7T zn 9FMcg3nH1 ,ć㜙p Luqb$ B0ƈK*&Z0 ω*Rh.Q$Qߧ14;.ȓ!Ȧ+H\H)AK}ꋿz9 38R-jrNf>t2 @֘nAFCO+vͶZL\; ji4]HRfRhΫ;sϫSEӱ'6i2( Z\�G5~T!8Gd4ـs)i,p8Lnb>3%#_f; O/پH #kI ?1Z55C|eO\W.WDL0#HZݚmjN_j1nvdr>t-JkMz>cu[>J??$ڪF)ȉ阥'L4̯IB3g\Vɢu!6-9zMٿx̷>6f`y_?|i0ldr>GDX>"HWK\7(*Lh.\OmՑiw;Wd oWtã y6 +D<J Lq9s?_W#d1AH"9k#*Vuh5e8M\]FJYgWܝd H;kL)$|�D2sz{o/ >(n6z,@jr gUBpy^RM.U10%sHSբȯ?ib9L휈g% sNǛq;b.կ>\Knw\'3#{^q)"C"$p\9$|\JJ~fv;LUcZsC`ߟؽy4Y8yϯ=9VЌI!#(beT?_z;d^Eƥ#.& dPh0GR)w>z^1FuW5!8G/3(b"H$^1xČ̞)KIBoÑE%xt}폌mB&޵1bd1:i1sfNI!@M$}?_/ #)c6\cf7N8"QHhD+RH'=a/$iR9!`r$ d klWo&fHQR3^NG򸔡VEDOCQ#s!r<ha./////u8[LX,$˅`hXhYkXw eGi#~T4W{nPFsz"@LFδ3 {[iԀ\2ZR66Lad=t1Ycy=1Y|iuhLTYȚs-XD?_LӀ3BbN!39ǝ|ӑ&BvVqu}ㅡG 4Knvlx*'dHu˜2kzj{7iy12*lJT0@ E6u}!)*7sV'YUHhi5bh[RJ!atfQDo^\2#ÿk.?[DR!U8 {..{uMRf~;ngw rh%xɆ?=. 1S'sWGDZJ^2tGK#ۭ'*6/ri///// -"Ȍ8y)A 1sQG\ᑚYo؝N\_lnS/w,nu1yehs'D|W O<]b%i5{y $?Yt pШN3v\#Ñ8?xt;לK7ZwE?_|f*猬k" ,qhU"Gvݒ]X/Jϖ7j3UMQ!hD@ mG~qc 2+rS5nap2GN+R<\<w[YGZvS?_ݎN2D]U A2G@'Z NJsH77ts}L!\<|bOJ%8Cp݌iHs4 b�RX ^'\N01+T9d5,rLZi{۳/ H$^_____AT"[c(i88B[<gAd^p\3ԵfH#N &Rp]j+gYl.D+$gf(T$2)d2)gjU8_ gmʌ}Y'H$B g3JR_____׿;0L33BrH!ޞwxY˖Z709i\nX d.@L.dre;44'FfrҤmFAݬ7F:$U#HT$ +r(XVaF~ @r{d1bx~vA%2]ѻ[KZ~*/////wTb/N\6lExmp&eBD%5Dibwct*Э*0=fquf2zNцa@C$Ĕ)3kE49eD#f7SBfQmGaoZ3_____p~ős,iO ϑ)͈$Q23ȢnRatn {Wo;Hy - 7sqvI [^s^1$DȑH"IIs(!h%*ы$avC9`z6kyܤy<^F=euqůo_l}N/oo9%ϣFWL.IAm*lׯ^е775_&>PMM8IF i4)5ּ+^Js!FasTuP9lh)Y`p3JIiµ aߟj% n!0D]DþȯŠU?g lſ݆_GΦ+60:!~oOfL?'O35=W]Ew{?Ե; W}۵/s<]lo8[L[rmAkZc k7m$R<̕/IN}[%q P_____׏VK.: FI8'xoSvEK8]τЇdq1"8!DD̉#9jg-%q\ւ}xssࣧ\#%s%9cbΏlǚY0)Ff8QHt4fP|IC G///// }05-]j DX'k q]Đ.DDHRdHqS$FdXq5B*;J *ՂГ�ݵ\ 8:\]Q{+X)ɢ]@$1&ZO_____P~r&e̢V#3NN2冠׼ʹcRRBWkgeED2DTAel�(%QHO H̐29Rk,@sG\3 'cft4t<c&"a'A8cos#BPu[7ӈlNGt]#UM UO\6ER3Q(\H-�IКhш*N\-.nَ;NÁ0Sݞ~O)(l9GFc 6xpUaG ;n{Y;T6)t?_9EaGUjYH D9򃏿͇yv4K:\&46%CC 9B EfD㘒!IKp lą63h>`>!?DuO5q$LMfՒB=Հabf;[шYIeK8C ]wĬR2 !IU/nh =Ѝ57Ґ܉;K9FN9P A@B9%t"8ZO,fjrϋ<3l;IdSf;KZGݐF1Ȥ%c#]Nx۳XԜ’ H#///// 6$*)i Z՜NinGT]S4l7o}̿y+jE q %YkO9$fU79 bhm/|IN1 j<J BJ|Nb a} )3g얌0|%@ʉWon oGz.% $'K+ɷx.(j"Fd .Nǜ`>%ӭ_4y|8r./8?gXH58*怊5MH_;ԫ3&{ϊS'Q"9Y,#hh`ul-k|Hj&@*8!Df #"yPUOYhLrҶ !BVi"ˀ|A{R8jG^$ubP_j/ck$i,PP O?_K YgLvP1x0 {lxqbַy}YdIѣ)R CĘY#TZt0p7[h*r?au! jHÎGeY^9zQ1gC% )Y&?1ugYS@?_%8@F]DJcbirٞs@5n`9n-ۿonF2&1%`"dIq6!jOh0^(y~;7P$ qui$%B&%"HJ/_____p~ɪ&D+R1fV:%jP1񝏿K}-tG:.` ϲ 2BI㑔Ib&!pZ1يi9cra7Ċ80nohZ.FGYOy1`$" J)DΤBS_____p~Ԧ%lGRľ@V b]tܾyE]i "G%2g4d팒5(IT3!eĜijrp1tKM:ZR(jbBnI28"hj*pqik4 3V@BJO@ko#鋿M1'K"y<hMf=AdÈCfub,J"$ɿ) v3!|A?9tcHJrGFO"؉qIF1Hq:*{| Rb&ӟ )%�_____fI'nﶜrG۶sw04 onް\^r¥r>{OטarٟNH]3̯?|HSR 0 $^eKwkp;ON)SKfzUiT%I9l3R*\(eRb$Ō/////8<k1VXFMf3b&$/>{e&z.O^5oZ~Z#Gjsjf $9* ,::sfO4hߌ4 p Ꮧ<|?9|׿xausPvX?_V'K$!U5蔨d͢96ܽau@gy> #yԒlXWGLRQ}nԦ g jC\v{D E=BTZϻ'1!ƑvάUfY)TT$IJP______9>OY(nG1!(,.xlu vo^sHS}@Ui͉ >AUeb%mdgVWb"WH% >09]x}؍Lp $#ST sCkrL~&E $$[t$s x$͜gOF=gUE$;LHQ GkE'* C AL= 9!d@tP9ahkfG߲薄a(s\0F#}1'"ʯ?BV-.DSIэgaW-}`4acFǢiqkc뗷<4=MUkbH0N&KYzH) CI UERrfsqAu7/FF)EmpB9]v )RL|v Hʯ{#E"&Ii*h#T!p7< byM29&O;֗Li.:-?M$mphGO֊؇#6 b# BZ*"1E8jEH=U]U"B+x`r",aV-Jط#_____@~m%JdR:!PڣBHq#1!&$ g'/y˷%4 3x3DsIPhɭΩKL4ޣBOY);l !f"9 Z]Zp4$c8 ^'IFsGʯ?TRvY^}9v{jQџ$C)| ~ջ I/yq\a-,s^5I0Ԓ&vpy}E/fn8;y)|L., ޒ[ 2NJiy3$\_____,aj0P)1!4W S sY|s<}LNXw(+}9 idQquuųkwĿ{~sOwT]O/?pHEOseEHH~;<}5|5_oӚ؞/////(CDn2U E?25BJhm0e-\pzCYu1\,1\-i]J[s ڣR%>z|ΓuI3Kr]3uIVZW"X5C?v؜UL<qa/^|5qVOnDr'Z%X5 mY'xyf.f]eBڄȓpEҰ=9?^ig=)xDQ&,xz#qcoNF5W R Q 2s@H'0ZrF+A UNY='4"۾ |{´tUE?_/@xK3.{)vLf-9d D)Y!ǧDϒe7vlL .j|ۘ"[B+X4RK̡8v3>`}BՊI p)�R!S s ZrdcyqIVVt a xGW\3=Y4-Hy6R HI#V|N,h*hfca�03[z$ӳŜ-yhU"p6TdSWa'r 1Cָ ] NՎ+ϳan-j>./////MPDrFcG-VU~B74^ �.Ab GjQȈbٮXu+tmHZME8\ǤΈgE¦di9J2)e;XV5,!Iy 1)&@/////8_UZF9YN S7S >m53DH@i?\5SOg D{',x`NcoYĆ2]e?v Hh:&B|x܁$1Ark[vF 4`4왚ivN)jͫRNKcefC6WͿ״%f#`@F*E%4k~/U`o=pzIۿ4 --g-HdbGNqzͣj8qfuN8N 1ALgtդc 7S'aᅨ#vc$DhR9x______׋&w/O&W|aE82[U)b#S]p1�/sr9Y[H튺 _8iIr< 6f淿yφ~$P;íŧ% �",̣॓ēa^ȼ&Lqז%=?lWަnT "E-Z, <Ec�ð�iˤmJ6;boUs9{Z+h=8e=zG d""1/~_o77up:iVStCT9kj̯ rX2F9Ba6Tb%5 *MW  }b͌ gt!CJ Q)P (( FqjJ@QXe1Ϟe֨�9mG,>V/~_UmT]*`56)RT)hPr EkZTtʼ =zV9,i:Qb"bXaAMgth Lێ� E)pԉi9Uk1˂ ,`+_/~_左./٢*b), ݃)eUIE6(mKJ tpo\of}w8ϟ^R5Qi yb jX@,H�v>cXRuOX'(D"eкB/~_.qHkM)q)~CXÇ[T0aMJ"Of 3Jk@VP VY�Ke nXގ ])#.8m/-?ޮUgCN S!&_XraR fEmw02ҴUa ^ErӑbRH_/~_3"`)L5QN'w5RbΙBPYwRR,mO5f^c\8,7>ŻBȽ/`mBBjװOJdOc +XrPa"̬7iURz:AZ_/~_ uLݐapwߥW'=aE۵ģ9zCe*1ЦgG5OVܖLKW$^5y!ċ^;3V3D'H;)kphDbLw $QPL[|mOÈB3/~_oK$LΊ7,:xhևlW/ '<G}Kpmk9 EX~ ́OjX|Ws?ԶaծԸB.]<p<-tm&jSsG Z0JkKъϔgGW=KIcWsXŶ=/~_/ۮmi u]A9rafK<9?9Ϥv[o~oe=~ѣ%{Jr<M(Sqt7#cjpkf2O_UaXX@Cdf 1_O.[;(!ˁJȔ+v!uq P6-qEEp"G-~_/~6WHY8LݐSk)C{M ?c| %R 3'eH1=*hi`*5@ !:|۴g~^��%UIDAT!PL9=KK*B6e&'Gv5I\m5Xإ(~_/~օ UZJ%•@ٳJ'i$;#+j6HF}8M \7O1,za54!13EV0j +tIS=9{|2غr\ր3pJڮatad T*\ /~_oi(N1j0BА60GJُW,X>b~f"]x3ȕ#BbIƥBX"(B![y (Y)) 2XϜEG;1ȕ=0L |!H)Q-tɖaru1Jr*/~_p~5:6%66'4DhSq97" BċRJY3&-DB㕢芣[UCoRQ cK}×  HL-Q UT R]1<’kMik\%B h/~_@~kLXNTu6L[{;()j[=˴}-9Ec}CԄq\ >q^Ȫm ^MRL)sEV,*pb&V YU)4Fϥxڶd2ShƩ) 5>*|\j]/~_/~?^\QKV dR>M:H=KƁ3_Vݖ0"}4-*h]P`u8&|g/_=X=;R3N툹09G- W$/a wfXiޓB$זR<}q/~_P~Ki9'f?ܚ^>[<<grd(Y\H}G6-cMO~ /o_H ?h[>Z 82,(e[lg^Sl)4ZT(voGi_|lK~ӆ~atU1U2m۳@NX/~_/ovG,šSdfyu{+>{Rbą/ϴK ?|27y_?r[9#CIl݉~L墼%GeWV'kw{vgy\T~Wa60ŗL*/~_o+ !'4R,%( *LT1rt1f="O+~ϯ= Hlj(fp QE "(,9$ B_h<;6=yҳ3I)R:@nh5jx9EBf"ف"K<^_/~_ doI9J!LV %VvK&qҌ0.7'T4LL_Sέnϣ>Uw^j|U(13x3T\!DM5=ubrՓpbzo)~y(vœ"h/~_/~?~|3Q]^U#>ej,gkheu˸Thcۆ) sU?fK)1hF,%"+EP U.hiJc2ÑUxn82uŖODd2N)tQp9b/~_`~^i&LHiѶB iƓ0ALk5ِ"G"G2S܉Jәu͆T29[<Z)f_93zGH`Pi29i*P_}œm9D@cfJVaoXb)R j/~_/mg8UdҬWUk)nde5g]ͶoY{ʯpLyaR[.3_ݣm-fiBY2o֌ZӘ\jWF81"5XHU )r7 ocin9'#غfm*7ǩ Vu_/~_ж܂2T2)ER,s܏2٠7%^ja֑Vݚ7{RyM8%uy-hq${K8{!ؘsa$a.zC6T/_p/58fUq_&TG'~_/~ݫ-j:r.Ơm#1.݉AbG\=nAq*/h Z-Xajͻ׏Fooon[TF ^#w7t 8Bg;Rb3_|+*]S%05['kݧ㷞W\\?lU݊_/~_ mD V%Ѕi,%rW%x4jIfas~t%nnw?zuߐ/i2pO[?zn,KdгYq޴SG0bz<iǏiGNHYCGs3{?Fǣ.8b-Mu)~_/~v PKe,tӐȄB4e]eJ:p&N@ׯi-9b hZK3ըP|E6XUsƴH38CXp./~[BC)Яj|vLÑd7Ja–HMb'.<-_YOg_/~_u5-9MͰ]V蒸zmZq2CyC='igMk_ݓ &~niQTmp@*qqf1mKTmUGL}Bz1;cYbv[v(l"Ij/~_/h8 cql"]sPc0DUhTi,VCrCtJ5f&7'mq+..D4!P(6d 9 Ӱ:ߐ_g\LP#6-h.kт^h*/~_/?{<i[3 O3bhRSƶKIq`۬i!0VX(X(ْeqMᢩSkr%Hmhr1цfCtl8ޏ> Z3F=Rm ݕūD;~/~_@~N1W'7='Q[B2Q1 )[EM@>۲ }GTMKFxSk j!˅*c)}@͎8eZݲ3(j]ͣ4㫚G5KxX5!,P/~_p~SJPs( _PYctaTUVLs qĶPV[~A| /#е89gW1 c,hĒHdxQ M̙i1B?3pybۀ-o^{@ _/~_緿xl9o:6ko) xܟڊ'Bxh Wמo4|y+itӲZֲ >n,/WLbLu[3{BÒ".֬a hyw~8okBl8 ̖=\=֘ˎdr/~_@~{7<Tߺي/?>w~?Ws2L'&<X_~0''a!^s'w뾢?~ ^H4;-?,555=Wg vP8(j4m_p&hv̋BP u?.sJw,^^1{D/~_/~?>ެ-Ϯ.mF9]4X{`po' 1eb 6T Ҍ*J&L =Ŵ%L⚴$M{[O=~s[.2^%.+tCPJ!̲x|M zŢ*Xg&+)L!bCʊ#9T<ޜ_/~_ À: @}FC"$PIf ni@@JɘS &L 46gbT(E TNtU7'=aaޢtr#r<dY2`RR䨘&OQ3{ŽSlfhnw}D玘5)ej&/~_/~?RⲰj u3N^3hލͼg)sV5-d芄f d2)�0FcT pKjpp\s;2)IT8B ˒ ,!1<㑔 %ePքVg,.giVY2_/~_緱cfvsrO'juA^miHiE݁ODJ!) +E J֒[-g+˶w'7=@,hp Bf jGlM0TQU<7ޢM+~_/~6)Sb{<ozk֑'~aٱ` ?ՙCAgK(Pb)eʐR&z\# Bqsh?`9Qߡ<W$sG i"BC ͯNȱ%YfZ2jeizF<ЪLѴx/~_P~ku6=,9b$ghrWogj~qsOܪ }6,)q*J)"J)9o BݲM|u'rq9=.2R[\-ή )p;h0)1[M3.dXΛiqMJDwս/~_/ۚLMд-~ƚkN-o޷#T_=|c[ѨĒ=>iH 5) ꦡo[NÌ[ iRx0MCmZ> n n矿s17F+cR` +eȅ(tfj5%b+~_/~ɺ#H._Mn7 M^^.e~E74?6O?ɶ@GCCb6<RƗY2,0Wmpb8͚3E5nh{GfB?y<?o?}tP%RZL+# {d׿2lΘ͊</~_P~2/1UǒK, 5b#MS[t̤j!HS"WNxc!&ZҠ*2MO 4i JgXLM4 &sT}xMsey|4TxR4YPwHbfİJ/~_/~?j E[≱b quWYo+V=Ϗtߡ1 9AYJ.Ĝ@CU[ :RʔbQ(*ɶb\p O9!  f.,DMG[{L޳aPKa!gfELהbJD/~_m4c4'Vxf3s:~T/ jC&;?f.2o& <(gL]a hCB鞳W]}@0Lu3Z߿$ޏTDaO;AZ-XQ̱͚([R"HP _/~_緆BJbbrT0"IRaZasQ2OorUpZw8Xw <|At<"JC*dfW1Ϛ꒩a܏b:L7eǃ+#etjHYSThEQ1g1R9zۧ8e/~_/~? MQL0Dv#9qAW*DRR]ܼ *'*95>ht)ԺnhQRPT!Bgj;w9ڒ-5ֶ=XX v P@.P&@`E뷑/~_o<Rct J|xy0UKXZkNp推 q7kcasa)w\Hd 99R" ˡ_}0{l[LkC@qƉ\*1'֍@ZH. [U,|y %@/~_ۺfUS麎7w=UI1P-߼f~D,3??x^>2 6,ˏ?*P9F ibGB$ _ݑtGQkf`=1 u놋T<3)/qLj15JkrJT0Z#~_/~ꬣ…-f\X,;[^X-$<Ք'* Wj;ۆFW|t.:~EmkOӰ80θ_"o Wfa2*lj|\)O|k^|??s|䗙͙e<,PVm/~_/~?ߎNRM #YC\4j9SUp_5hT,\ Og4P+C%F�/V3.$lPHӮi?kz펨\aJB@ZR|yBʨi[ [SXWSua!F3_/~_8_cP"X9l](q ftѐK-ׯ8li0!b*MӶxlkBX*0KL1yz[oņ Vռm41DKHtb= RRbNqI;_/~_si(0 )fE,93KfYׯ8*:YWqb&b( 15š0{R >2"LW AĢFaJa>j%n4Պw?U& GXҊ)i^J%(Cd*4\6/~_oue 9B:|LBCo*.fl˾Z3ȒyƥUЮkcI/_ӮZio>zDJ#T.ּ1FroPr&jeUѡR` x4P%ѕR]`rΚCn$jţ/~_/ hɡHY]a^ʬD]W1roxW4y|;*80[ڼa8^]r 3c-7(Nwy&x kHA+ڊx$55%j0fzP Pd[Q5!'5,gT\ak:ro; L>/~_@~[+*|Baɒl+DucF+K]2tO_˗op2 jض TWqw@WDcNX:U8yW;L̄9Xje&DOLDfIVl65YWxZr]sX "̚2k_/~_巟NTrԺ"�Σ&HPO^ӨQ]G/<Tt]8howytMk #P:3Xu缺sfbm5)Mգkrsז{9�?x֣HH'ڐXkR771dHBךRw3c/~_P~6Tp,%9r<M}Ĝ"Z?|S>{BɰS0UUˇ.?#}7qǟꜻ-Un?t8ck8dHCa59n%hF2k8#1g=6|ɗo>kHO>/~_P~k.{ ]2-7 4J5(r"M tEsf|ӫ=GOjM}׫s:_w㷜DJ0qfm2zrmEMhJ0YWL'V!:( 0 #nIRPU΅qY+[>7fgl_/~_ [7(6mK&~{ #H:]lji&[؝<O[~ PeԑŊdx2;&KL[+ENqw E25QZᆙ1j`"D5b ow߽WۊrZpwLo,*/~_/~?߮j | wsW+ܔ0}pX>B.3kwsbSSDb)j+lڈJ Ͳ.cp?D\Șp:"ER G@t$}TGӝX,xR/(抐v4^RM#U]_/~_ VCS?bV5m;vw,\#Qk }OojRH[, *4.>e) <y1t*rY(¹@) (G# ]@ w_ <) R5#8˷_/~_( DZ\Նj7R0\ږ6(RD[eޡ;۠16-yNPT ~mjغ"#׾g6ga)rbvn%Q(DP� 9{XW lM odC ]դl]9X/~_/~?/3F'xsZPua=gi ndb.j˭n{ݜ3Rp=0Xr88Vdjn~q?D ؚtmv(R\>m"ݴHjmY"l 9/~_/~?݈5>bZN{~kk՚r`NHAC,!X~ϱUn|i8f+NiqvqLaX>3;\Nx3Oܾ<q9'g2ؖ!v | b 7&ܬ8eDL5!fڒ!_/~_>X}8b����IENDB`������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/crate.jpeg�������������������������������������������0000664�0000000�0000000�00000037330�14115753270�0023103�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������JFIF��`�`���C�    $.' ",#(7),01444'9=82<.342�C  2!!22222222222222222222222222222222222222222222222222���"������������ ����}�!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������� ���w�!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz� ��?�Ǔ#*QNj\qݛa;Hڡ:x.)V2H}9I"2 )]J{m"")N~UcKY5<Ff<"24U>�SMʸ :'T>ձӠG@TKD:q|G2AٌI%l?jg>[kih E2;&>H?MKqlp]FsS H�sǯַ \.7o($Ehn>G)# [ű)z�' m3=B#. P?PZ;`n }م[ܩ%KF>~&9UzK]f%�Z:4bh�ZWxzlՇP2hKrOn?k�eDxc*)xm; �x�yiId;z#\F"22['7HI%#Gӿb܁xf<{mSO\35nbr6>?ȦH뛃?_s] hOl�ZmƉ m*/b(Y.�ANk ec׌֮qabyt$ *Ě,kc4'c n8e;Z22jb1 ?"Z]K 򤤇f` ĊA UAu!-&l$Ʈ&Èх,8ۃWΉv98 *I<j-*/ Ah1%+(\Zԭ#؜�BlN-4vR@nJ\1IݞEkk(2L~TapN{ n iRW*[A4T[<?PŐ[i?(ySR̸FV+3z(ns{*NnėOCt \ ckl< ֕Xc�Q'tVe+FXr.GKplnEa(Foy^mt9 D@5%Y[eU˰F.NQ5 Z`?OܴZorVŗl#j3 n7�L>Wi*NZ)+/!I~O?�4+.?�UdӭrB9ǘznB9eAt @@�mYL.?�W A�~UI9;YLJm}i>oޙ e9lȿ[v h{]QO?S]f8��VQwFP\9~K2=EʴS#=hmʭBL|gOa��S{80tBC]5 )cdPx6>[GԺB\i:aNCjԍ#cMc=}QjdQ ;=lOh[jr[m?D�U' HjHSԡO͢Z?eUb6?UQy[W@SDl{[}EHH;Wi'=wx\ag?\&pq[Py'XH~f!981%Ȑ ; <<&4?1$tn��:v*ps'Jg=[c^*+Tu]zMc|TֲZޭ) �m�몒&,5 uֶ`@j�~a�&3RLvk^&9nk7[ر3ڱvž E/^r?QVVsF}14eM= ;b<z˃ >>TZDA;2H�V6d{�צ%lP%@٧�iHvN0?78s�'•7=O1GE|iwD<npe+�eo-U61#2֭E+mrKSȒ%�?JLb*p}y lC19_G�MbTX�ΩΏ* kh@Alތ{֍xVw VҀ| k�u~T$�Mv�Pn[$rG Z#K�_l$dFʙ>�Hl& w1 cEZlQH%IƣрBC0u " {E Y09�!a]�.O�I}]z7�R:f c_((aӃY%O=TkD2̌}[[i�i4€\.~9OjH3Y Wҳf[aq{�OR4鼍"՘1Vvzp@>�Ua;^q^M{csMlqѹf8b}?Se3 {vR4V�߽4ʊ4Ax<U%oKI({9U[S^~oҧmM1s(oзƒnϪ&4QOْ�R(bK%,Yq?W@9Ni4-:3@ ВHǯzݴ$qӹOXkKn�29kv91 zF~~u[1Q,a*j'쯎9co) �Y(,*�B9NOR- h_For2d5䯌t8�Vс<g��A54َig�УS{j�vAr{l`῝H-h?(n[G~tL8^r4㉣܏h=?i싎raq:~UCBP�IDSzu~,JrXqQtKqGaf) U"р,G|\2PɛIwg6�jP+)W=zwg'�oOLPN9|�E�}owypâaU rc.q-5jl<eKݤ2�z E$6g_7886c^Fq� C-n�?C [(U@8*v�-T%l1mp�OAW.V㎱9з| �p3yRޤff#NS0<mV?Q?1 ˏ*I8"nk�(?֛Ղ3?Rkn C樗XzK$x�1|VHO2]žsղrqϵTbKdbYJc�{�*X?08Ilt=1~R9$R:='Ug pN^;HATڸ0mj"@?&bE |O 9J 1㴀i�kb^l�dE�\"tE3D'ak65KAgL~͕?�Ul^%38Ϡۏ\r[i?=jܱ` {z^0}z�k2L=ʷm-i1rǟ5 rڳՎ&i<+NOpr�,�OSE"nLǟf>?ʫj Ts~?TuzI:i$� x71?ye8#i9>yX~�Zp3urx201)à I< ix�?Z=F#gq Lȭ\@Jē�Q[Y휮m$'� ndp@8=vr낅I;궁JHpI?V‡y9RqKrcK�Tsc3u;-�OHV+�Blk ͸?.G(1�n] hؐ1&E8jO ڻ`b2}TӖKdFÜNOzDI?2?§O#|Gخ?2PE̊NF�X�!Hem\dܟwJQԘg*Yz)LJ;œdctwOB�xؕc��TQ?I1;.2zG!=;m$c>X.,\OGLTt�PR3_˻-I(E>q q$VvDa*Cg21:~3%,32,Is҉˪ی3׮=1Ti�ATf�x<\iYpH'1K+8�q{(!ez!u l>y+^(Kb^=xʛJpQMbX`'S.Hp\ י>s7�|VW5OJ*gGQ�C"(}RLx2GhLO!{Vv|?�1ms[*3ݹ-TdݐxʏnXBV=)yӚZfswE[Hd#�Z=>R|ku_ҹfd#+ӗ*5-4)4ކ Z5|sߨ'2 5f6 t~?UF�³[*imA[#W1|NOL_CFaf~4+Fs&3M� I% S]-<OTM|z}?Қu돼\?֐!#JA >�a�=v_[B qرю{ej[D9R}�z�'Tݩ#�_R?IpʑxL2;U@Bzg .$1wG_f?zmp #OU -w H�wuj79) cwr݉t%(x:sʜy!'ԗ 嬜l4A8HʺBӉ@[l0OZt ;z�X,V#+*[ ur$?kD2m; 76?⠼2I9#�`dHr@i7dxzը؇+Uu/6B1NDM䏽M2xaL9;FrIǿO IV ʪITҠII88P8^)6f{y�</_ֶn m0P�KD 7(E��Fb}>ZӉB4czsGL:( ]O4�z[GcX۳5pW0L|?Md"n~q6b߀vz&r/ k!+Sֈ,PXjFc�(==u%?g `{ѿs$vFBSz'sgP?\{ ǰcs\Kg^\GS:}?t ;'ߨɹ&&a0Hqֺ7i9Q9u6&Si[rKrs�wLSm#VI9$t{9}�֬(HSvpG?֫SgßOӜAMap~Zn0 �Joq-ۂ-ʟJ?�֨UX'@ҥ tof*dPx3i ɳ8@$�fk)e9�?td�0KZc{<҂q)|oq-nq3*ಂ$${l?NVU@ccS=.pL2q�ƒSLm>,֭ۜ[£5ON@4Lb?SW >\(Np�oq-\;KɌn ';f g.X;?£AiyϚc ) ,I#k" k*8VⱷFBGsX zv?Oojً\z`O8ZRh*n7�SJȬH`a@CpeM '武Jchg�pNY2K|=:ӭmK0hnR7ՏC5UzAX产�XJeC d5FVΙ'��?ZojG8C`IOL"[�A 1FAxOJ[ճoʏ8O4_m,>X� ʉ>{;{˔?w(ds#(۷h?OEOQhK#'atꠌҎN"q\JdI�}S}«H7DA?UՋ)x L rcPk[$x8N�?J|ÆsMkMM [qii59H\?rZJQ'n9D%M)8nk%n6z5ef9?މzRcA0ǹ'ML+lO+e1׉Im\�y[x�ftHkBRdԈn8�jIG!m CcRX$15vX�i X~uI(af'h? n>}j�E F�4["{ʀ?WѮ> B>tog7Z/DԐN�#Ob{үĢE`ۏ�QPɤ཈P~54B&$B� oq"+O3wo|3qer>뛢'C#h'' ]3w>Z(e�mG5мe,I%WYv09Q�QO0W TpIv}Źqz"?MX4Kwg{qQ,(r8ec$uu)|+)J#HF$[hN[yXu񩬃  _z}Pe,^#pޕ7ڰowa?coxۦ 0� t!Tumw)1/KM #VDq:Ptar y�f$<a�}C3p6x�O&Y4gNbXN:@_/4d9M!]|_ҪAt˝`0Ͻix}AO-ym̊3' !�\t8kԀǎWF?snUo Jv3ŝfҪBT}q]v#I W?l`�>qڻ 'Orv>G�_SarsjOA gșMBHarA=p3Q0 $倴vǦE�=15fv@ f�[ 8dz #VV�"s@]q@=q rQZ8 1؇4A>9� eU8%C&*vWwy P�T 4dž9/lr=p>>I#R =TLFiJٶ8%DꧡJ%mY@p=$?Y . O�_m?{t�GpA?֒3ˁ9G+PH ~UCtO=*Ɲjxavr�>ZGvJ$utF6wfՑXph$lrE=ݳy1t�ӧ 8c"nJډ<Ll[<LAr{(v|"yO'� ;AOPШ#+2qS휯õ N(ܴ�Zsg2Yi?,w})s⦁m\#ZPCm�P[+F'?<�Jov(;IEP{Ȅ}1Rnv)yɵpԓ孧aIq�ƤeM0QքsHG23né~�*8̳Հ?P@rA4]Ny׏u�I2&7hq?O%8˝+NloGjt2tP1qd�B)y1 �OEW#(j앲)j�#?s2fc;xzs+an"'ƹyCNUG߽i&#d!Swq]Y~ b�/69zo$qW?Ɣڶi\Ra $Cw3o4`z?_ޕ_6a|?BҠeX% fxTͻm#ZrN/9 +4s$o5>.yF;qZ%Pp (�?$bAԎO;L[@z|~&\�ZIl,#<zm Lhzv:%'߉?b36ALj #cn~:a*Szlzw|rsG<W1uq3EHw7<yקkSieg$(Pr}5PC3;@kTC@�?5f(G$v,PO/b#8!qsO[] yZFiBuI>f$ǿZm #9-!Ff<VE-�lQ)tE=v"c7Qϯ柦�Ň^s7Fz}Yˎͬg z*Ɉ\ ;tL+P �/ge?*G;�V L`rsTj26F1=kHlPln LK~k)ʓd|:cq@io$1ΤdZ$5cGy?[dMa3Ejg��� 2]>r1G$);fǐ{�W F{�T�`�[o*<`~oН7LdߎQ@NqL)im[2A#VڲPq=ؖFל�sݗp`G ~vYMr?4(OG�+X;>qUEKWLjnpT]vl#9c`Mf@p>Bc<8?Ro-e0'<Ltq峓y�:`|`�!ڣ`L;Dwe-!I[^[w޺E`h`GGgqʣ'.\-GbܖH07ATlU%0=:N1[4QkFmoҋ Lxnq622bG#wA;OPOnҫ<iQ;|gq~#�UA<qߜ]$B̌Y("|׭,dC TevۂyDRzkF>{|Ɔ$xYJ[5XW2ܒ·maF7Q'm%}Y m b@�WJ~Odjq0ՖcXx?]�?Ae=,5 ԐrY{bҢݤ r-{Zk^28f#8i[;"*1x|֥g#=sQ͕?X, ")n3 ) ŻDye3 BM8H?R9_8<j 8:[GdInԌ|9R>Vs @I ={ |Vl8!wr;}OY簍?Hem$Ο|?j\'1H8ݓ?Yz)۠6w[O'U&TN9}:7ťE6g˓Ls�|h;Ăs''�Z$ΏpX'3'Ԕfh`?41m�ոmD�! hWêWJW6??kU@ǖĉnJ@́;Sָ}UQ]qa&gg\V"�޵g=5,ϕb.9�O({2/.nF!Sq]̰v|QоpYפ(G< �BSUgF{{$zZxރ#!AO&;mcIEIm˟N)~{\,Ʋxh8eYsdֆvmi 뵹+�סĶ3.V6x3Ƀ- $ N�JkeHŸ0e |N*!@ј?:Fs ż$1BvHFO,#(ۗp}:~ϴM(x-__h"K+Kx/8zjq'uŶX3�$>7OA?YVdP I[5=z౭CA>jƙ"A}^0|<#-[v|U, \IWtmX[OYqE!�?!4D�zZ.O (?u_w?�ٿZd~@e_}֪Dd@~[GdCny20GnM#OX�_Nb@|c0=zIxHnb0QІt}38&Zr[{c�- �Ėh �#�eHR b�ؑro?Gz`90G_t[&2<sP^^92z)ImuحI�eD<xtb?TbiϿk1y7DXn@$=63S̠ں�u`{ DDɁaN}BSDm!<YO4T?�¯G9UT8�U 41//Wl Qۦ3�[N�gkGx[vqxZbSc�֮*hǑ*d}ܯFSW$Ѝ 1~5[l|ز¹p:y[{yF� ?FԷkiyљTAչ]V!>m kfГX`i֫r�{v?ZC"n>vc6O*ϾGշl G';z֚tPyBS'Zd 7w'rV#$ ;\L_%NH9+ƃPb$>dS緭Rwa|"^0 ?ZЖ!7NX>_e萐9xR+J�\N[Q)tEF=YjpV0?_ҲD4pG�eIlEY>`?U1#㍟k4hR- �DL}~j<O01"OGèN1׆0D )h=lIhN$�xhnM>�U/ hW氹sf?_f|?3Zt�i´2J2iv�xGQizV}7DbEUgN?vU*dg W,xPq?%`Y1Ht)@17kH򐜎#X<f6]C}�I7D0?*-IOBdm#q2Wx3zl𫱷!q#$|U{ P(ML|*0MoyN#Sѣ([iN=Mt*i#)*n%!8ǚϮP*[L�SZdpB� yN[?JKÄai`B�VBD{Agh-ge|U"AB=)Ķ2<Aac'FFF?pDU,Pk}a~?ƸwϷ_sZ[a5!F85cNBV UAOOZR+9y}F!74&X4cYf \Bᘂq\^<H̜(3`8k{dHd2y#9!~} CIUlc,|;TH`+Zn`UvD<0?<V29X*Z}&c c 񭛘hX,g�� SCXǹg81�Z]6i zŸZL~]DznI39T=[ 0)Oy%y80}~V73OӜ"Ťy۹Ǻ7Cff➅*uAWg"ľY9#}i` p�ORH@.2r<T^�՜$lv�hR i[Ÿ?5O n'n_f?ֵ2~p;'N;gf?q‰n;ڙ>lʀW$c�-ԥm"'3܁/*ܑ?y �VmI@m>ʚ)inFdmuǧ]U}N�A:6_<rc?޵-A#僧S}A Nw2NGoevS�>$G1G�Ԙ�AoqڗP{ WPjO|_ҵ-ۑ1$\~kұRc<zty,Ժ�@ Z)Pw{k/Bb,O�:[d=Ij$41fasH}JZ ,4jC'?v\IՎ?OHFd1ی ش帖F0uʰ>eIeø8ÞW16Ł<wsq*$z_µvЉZM$��н~U>_s)�U-3FuZ,nP$Cs �[! Vf6c*~]""eZwEI12&D e,f?L&O� 5bL��ҀÝlʿD}S,([s8ϸt,o,tMN}Y ^̶QPQCY9k�Tg-8*ǟV~m�L6Ѳ=$?[8\rW։=Al&.'_Q(qrEy+MK0u!P9?D 7lN� q�nqFTط`P1GL`E[X@ᚥ�ȷ-H/&w?1!d��ܝ:8I �M�9p% _ tc@>%k5=�lN1)̟Xm#Bm3+ɜGbuFA#}w7ҩHFƌ?ZP>q;bOB Ҩ</i& AGARC?EXL1>�z2hiRUT�㏯)d+3Q3?Ab?w0//KwcH�@9Ns1NQA=0n' ¶GB�X?Jx\[ u�¨h1!4DIǧҷ!<RzbU�ޣ[^l._PBdI"HRURa1(q#(C~i]Opp:|Vm-6VXHf^Ial(DZD��"v0@Djm>Fl2q] vEq5,V3V$ �:sTJ̧0U<nv\8<eg* <{`{֍^kq[[Z{*C(cܣsQ$py۞71i7udlӱ4cn(h?,q;r$K&[QE҉,sSCPStOg??UȤ4MO|<z�hKфkrqcggNOj0EAY3kORFd?\LsH |IN7 FOTYV흩ԭ(1uzF+3A.Ӧy'q.#n[Ooρڋ!3wN? �|;,y4Ē.f. ;W%gXڢ\UҤVI-u%2C\B\7\e;rsNԭp#bL~WDs:&%! q?VSKXz?Ƹ"_zʄ'g1t �\Q(!3Хahg5^]B#a}e^_uPK15|_JeQٳ5W4v6ƍj3 QO%(+=Eel o FTP5:mBXdU]g?s3F7F8�ZF=YڝNCqz~t@G#:Vwsz9/*�w/͌B#Ў�h1<\gT#0`D\~ҁ*vvqӞ:ӣ3�$ozj;:д$Xa?}V~+ƶ.cE/Mppʹ#N<b7ckGPﲹE,˷ߧ*Xʇ^O?wj;{fX-I=i려s��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/floor.png��������������������������������������������0000664�0000000�0000000�00000070521�14115753270�0022764�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�� �� ����;봵��qIDATxݡ(i0 g0#׍GzoUPBGRW}ޭշQkoVk>lk?e?oͭ[9qLovfhixj1xjծx~/Ư').8E+rv$Z%a_kc8t\e6+OۿkN?k?j+vN YtBx{re4.<w+EzvZAtJn EwO[\ax?d0KnR_vUm֍_O\km~pɊtj9xcr|l\a.R ޱu pr͒eԻ<m:|Ձ)W?:ݸcy\vYq9G%x q8WO62;Ѷ ʆMyv|] ̊sT#* E?nwƯ'/<t9F.3zr/tlMٗ>7~->-5MB^ee^\\sb7ASworV"FRؘqclZ|2۹9Q+?ŝxߙ5 ƹK) yb2U5Kg;X$7~!ޯ,wf[y? ̝zDHʑ|dTF\a2Qr4Ս_O|X2`pP$K(RK~}WE�O.!]IeCe{$6~-޽,(`؛z"/ )LJlJ|j><t_eaE5]RW%7~)>=PڱaqazX(zý8s=$qKH"0<6 /k9ĚmƯŧKJ0N/7?R_w5x0<fk\zWPTVzhY=pSxhod+*QG:<�PHmZ|"<D*\x6l&#%_O \cCp.B(Jp?.yOlJS0BbY&%"l#e)7~%>zTƅ'x-/č\Z>@ֶ_O*I!J /�UGpaG(IuƯ'X3rʅE7\!uvhˀ,J}`_Ob=�&FA&cp \ 0v_O\x.Wň{pO]+@ɲ_GC="^Otz\y]ؠ*/yX7~->t0 +SRƲ7רsk4}KkFңOZXBVje"(7~%>۾Z|sscbT1Fd(qK'um"Sy$أ)Z<THKHz~k?NSC`/r_M)zsޅ>JoA_w ꦞ cq9 nf` N 5lZ|"ho.Q.[[EEEM|S aԍX,)\kVatR<P\&ӵkIvcөSD"F尫ynk(FPB#!Ihy|l*&w[ _O6UqdѸg#/<ٴvnZ|r O=_ʠ'K(㼵fei_SI6~->uMٗv*`HY#tV{ eڤt]P!11+#˗ڗkFVdht!;%z '=)4_57we^A\,ȩ.I'oJ| a@kXGrE sq1BQmuD~S<*F\}WGf? ik񉹌L|Hm1tP ZV2-QiWSIWoI|_5/'EsBy +J.T'εe\6~)>GlWHKW+uW!Xp) t̘}Q6z]07MejiA`ƯŧI0$*8sG?.(1SD;~њHҹ_O/"jۉxpU%!z!]/_OTܭ-G/<:f$yr  x+H>5?S}99jxʁH4S~6~-{;JǏ(D8 IIR,ļ 񩻓|Gf~Dΐj>酥HceL-o+ ^QFd_N"8R)U]tD5oZ|hgh*xjK“% Suh4q|V{ X)Ⴗϔ ݗoZK~l%zkzP+:Opr"e-UШQ$aJSMUY=v"_OgDC-td(@SRG٤gMĬ :>sޭM./ŧvΉA&J\s&ʇɡWy ՇƯħ쓬08\ `! [Tw#]x]nJ|">?W5rٴdz{U d(V7)u콉5:}e*Ƚ]nUYK rѥy' ؎\`oN6~->Ջt}X:,wW\>v]Q&9i ˆ!W£=_g JPeW6{�SQ@HkIV&thW᧟H D�&_"3| *=-S.ʶk[iǬɿ3 550WS/Ư'y[�7B+)3ɸ)![zS̿ )0 "Krψx}}oDH6~->yH& 69_Y#9qx%z\_O}>ԹPZk�]"=+.;SZwmR<ahZ]F ;7f5qzk{4IWk),5N쮔q9T-ʝa6~)"8f9g!_n58wRiS{#6~-]j iM 1HKM�q㤏7~!i@.CSjx2dczQ`KqI}�!yRiW~rmZ<^V~x{=Wx c/C65)cJ¨'&<g ͣDP+sCqWCU6'a?^ ~$S*/_O#ۭS.<X/e LL[7~%Y'LщXPJ{_4e+硖bhBG{�Q[{J*2W/SN82$ҵ`LTXЁe8_LUnB<s{ٴgJS!DG(77 cƯųŮ9^%R w$Gj LDb4P}n^(_)7 I7~)m^ϗ[/Ai2'"Ηx{ <)cԵKc[>' FŦ, VƯcC Y bG t);u|A>N7~->)$v| z>6=Q)2Kln2|lfvj_3 tԀu_O._2tswZkEULr©K5F _O[PtQkK(DxO絈?bR?z7~-H?]W7X8hiRYQ"trYV4u.fmfyxzdE 6ƌ^-Iv{ǔƪ_O-b7Vʣ==Zȯ<rR=ɑٷkOscNJ2]xpT_ .z1Oh|yfµȕoiuewdnZ<vowIbLJ_ ' ?z#)3y_OQ;1ؿU21._O8[=iAV$w.?wr$a3S~γc/QŊ<_W&"q7yQnB|RiX4'CD:&6~->)D#m5<H_wr-]ޱRa>9x9"5_?3kl6~%>r<`1с-]lJm,TqEʍ_O7ӟ�N+]M՝@>jB *:82QDU02P]:YH,r *fr&mȎdRzw<b۱ݻHKދ%.ؘks$¥_fU Q4l}nZ|pk8^=@_J'4~&8KuL+-\|W>O1ޭmJ|>)-g9^n/}ԉ׬!D+\4vj4ɰILTArUm֍_O]6m~pɊt(5n6~->bcCV!Ts1lE˼2URjƯçYO)DQ Črصk)XuiuP䲩:hىU%QLSi_OA$lA&<8伱k!tYٷF7~-C<Y)Y5zr/tnXgύ_Oon(84 z�dhX%J❋rnZ|1QA$CO,gf'ф>!/'ʥGcv[žc|+1dhWeF±ة=ӝ:C<eqc=\=+n D;C_\outR^@^vHkzxpyro}/nW̆-QDèW_qd \Kv~%?J_U_OQ'p␮$!j(if1"Tu@lJ|bu%7*qa5I3,nZ|bwÃIUF{_V\F"4U_OC,9vlDnr\ZBmL EbBKqۧ_OF@D%8:Cc;ɷbbMHPgSϥU�V54 F_AKzƯŻ@cֽVOL#>ջbRLvVYKI >(&G u)<�PHmZ|"<D1 Cfz X&#%_O \cCpڀ1Ecd?.yOlJ|uAGFh=SL2ˤ$cy+Ѿo$_Oq oK9q~JLLnP|4d뷒d!TlmZ|1#\X1pr]G$2R#Dcا' IQPIA;g;?3k m9`E1b %\AWAy PlѐƆ*W2|֟}jUCDW}J>miRFōfDHU!$  $/35wh⓻777&JSmDD~]&2_O=CD4Ԩwӿ4%_zL/ƯŧWfS=ld+ \wGTzT9{b#G4(HY1T;%k/[l:J-NVЪ>DRtom9]anB|6 M5. *zS7b "HdpnZ|o1 GXi4WqӕySq 6~->ɮТ[!ߴ;ݑSĈvU?M6~->1JHxdz d7 "/֕ ;ƯħKDSQL*82h3t\e [+37~%> ' UǞ Se瓥Lrqg$iK;AO$, =x2mR΍_Od_YEVܘmKˋx#xŠO.d$So25_$'ef5xf#+HvY./$+)!a5F1(]EE_OD>5[p[]9~اƯ'22IR#ŘA+djY\g0GM_O%_u%:^;52_,yM Kn<P?~B劵k ɟs^ <6~->GlWHKW+uW!Xp)nƯŧ+d3_%i(TK 7~->ITpG\rQcاv5(s^D&;ISVo=8JBHeC_z[![^,xt, 2H*-i@V6~->|k>,ssgriby+lZ<vLCO>7nqv5:nCqBYySw'8"ӟ!q| Kmùʘ [dWW?ȾD4qǥoSjfѢU(+R'3iKhKI%.R-N 563eÂ~lR|ťz岞j9 媜HDAiDAK%vx!4j3IR5xSGeuO]H/m"Y5&P5z .{&<h8Д!!Ư'F6YS)1+q0g1O܅we@˰K񩝧sb*ל+*azr(mH!A+$#l(7XHV1UC|~^Ec,s&vM@l\6$D9^7~%>U `f`*{o}{N_bJ%roƯŧfUR/fti^B$<.|4=_O⟮$x_-ֽ;*]W6~)>INZæ0bHղhE=lv{O5>|>y~`{~TDٕ T91>mZ|R> ;<xge&ҁ*D2y {?D i+%>H@ϢjTmZ|zV1k/7HD}#AD 6~)ke޲8-JvʌC2nkgoB|2y"Cb*Ȓ3"t9k[<R_O($fƬMθ~WHNA^xi}Su.%@װH N.V]8OVQHͮYDfvMUoZ|*j+erb+z 9rgX_g;YYȗ[ ΝsTbAˆ_g|B$3vS"v>RD+{dm8_gKД( ٘lE7#jeƯŧ<<d?d_8}ȳ޲jh~p}hU>@^^ːMM `'q0ꉃ%ie(?t/-1P|yUlPUI؏W_?n{WⓄÈvK,ϭ~9t(4_gɅ꼃6ht;V7R5&$ꗃ9 tYoJ<,y/(w֞̕+˔Ư'L-t-Xz4=U7t`Y%%SU-^6cH-qD1obu =k,tW )T?F]-|eڣ$/'$ѳX_F=ͧ?~W@WeʍBҍ_wVKPj8쉈%G^kJ*umR|G=V8<©Q)KÄnƹkxBأ#iJNs]c'{S_OJ~_rǮMozr | A dj!ĩ]L5`&<c˗?vZaQpRS7~->]Tc8 4:y-Ϧލ_>RO8}=z?kt}xƯ{`8TV=73ݼEV0=MgYpƯħ^)YQ88~1?wrz]1%Ǥ>*mc؍ծ~cyV-+TsrdnZ|S=)fn9cLa?WÆD^iD_bpD<-r?Z@6φ[~]dCDEBHL4p^}SNLm&oUL o@$AA0mgftVqZɨuݷOI{/§K|T ו!)ƬsMj6dg3͉~ P.Οp_O 9E!0Ȣ8xmdqh 5`݆\l clwԣy0q~NH )_O8Ư3XLt`lW+:x$4U\Qrg<JWSu'⦚A(qqƯŧJ<2p@Lrf {=L&{/ŧ"zҪ/Kve {4F|/:vl.G!ҵ}EK(6f7~!>Ip׵uƤY`T$#[$cc߬=(=Wϲ7Wz0Mߦ mR|o:)*fJ'_S ;w+EO&o YGN:$2K_7ub5+-a oJ<3M];M2l3SA+..zftUu$`q׭ͩw_z-\7�&:? d_OrؐUU\3En4[w2LZoiGVh Qe󐥹!3\?(vmZ| V|&b.lj2evmEUITZyz "3``@#h!i09oZ]dVэ_l"p*OreVMC ['s5MB5�Y)Z:zҢvxⲜu @TzГ"YYcIE4akK1ttr;3_&lq xCtp,v*ct,r7Oz>fcϊw6~->f[yZ,i^d7~).\[%}h!r sԴ0Ue?j�:Įd_rϾW-oS %8+ v!Jtl,U.m]I0 J\EX=o*»`MeR K؝;`ҭ~zׇ$gH>M.uU"ˮcnPӃ`oCRi⓫,Q ¡Цh-ǷXx so#a хjWR^k.huՓ5ӈO(lc~,lR|R⡉u-pi{(2O$�T?e :Ȑ^V%HF E.`ט\6`L{5ϠKp<wh]hS~2)(FJoIoxGh\x"RN85_s7r6~)>$([/�T)M~y6$g&9c`EE*} p\Q5I (Է>6$(lBlTn18fO `gągrEXQ+'H WdUjP~,x4,EJǕ g_%/=Ư'B.f0:a_Ʋ7fx>ԥQqm>Qj)cU<DLoj͍R~-|@׵Li<c*hP!.#5]z/:Mɗӹk)Uٔw(:]葿dpx,U6~->1xΞcq9 nf` N 5lZ|"ho.Q.[[EEEM|S aԍX,)\kVatiTw\+GlF__O+ִ{7m3Aw$1,]s/_O@1,t6MB+n˰uea+A+TӦ y# ? ~WEC ƄǍ_O0 Cձ+Td)e٬,k*IƯŧ)N`1 bnjs=yLs.WV*7&vc%xx=|cR6~-`>"D )ԛLtM<IY.ȼu!+ `ꢋ.I'oJ| a@kXGrE sq1BQmuD~S<*F\}WGf? ik񉹌L|Hm1tP ZV2-QiWSIWoN̗j`(!K^mR|[O9)PbBu\1_O[qtJUh.\`Jۻk 1LlW -jan&98҂:ߍ_O9A?#\)?hM$ /ŧ~RDԀ[O<8RٮĐƯ'*nyȖ 3Ki zKZ<?_O$O)>Kr5<Y\X)?O%ӵͅp]rPuФuz)qbI>g3?"gH\5Rq[$p2&C7/_#/' }oq)[Ŕ.:7~->|Fhbz<5%TFLڒ:q4mR|RI>eiSo͹0Lٰ})1Fq^1Foz©w*g,QPZ6~!>QR]%^LT<%TQeݓh+Kz~M ;ToނKG*"4%eHqĹkMzTJJ_̠㓮1wz+2lR|j)DmJ5kl| yeR}HlJ|j>ɺ## ULU;P!߅WƯ'\|`*x](/M;I*QNW_O@b:xC.Xޛx_WةR۵kY ]W} .taS,:I'WurG}E }czn_Oa)Rz,<qQO>n=mOx_DQveA0EdOmikOaeBg6~5~Y t`J0Ljx/0!B0CAwIm"г2Ul^1v̚9 QcHQC s5_J`nZ|"n=Np#t ҽ2㐌+Ū7LX *$g7gOm$1k`3_5wPe<opC u ,5,û鲓K=|/+EjTskV#]GtU"ʢZJYJ_?{Ρjَ csVs'u6Xн0!kم6ଐ6>Ɍݔ4 Y7Nx;47*C6} Gtk)p{쟷,&|o.wƯe '߽<|0F|2dS;16~)>1I$z`rsp<zJ%]KK/27~->>l =_w>Tns�O2$0"j:s_E2]&/,ʹuzWur:U z 9`N]/˟|j) &4p"s 2{�k#.SK"] |$pOՍXVzTU /3M{}=RKQLXqr~0FOmZ< ]Uh Տ<~pWKbp$_(ɿKI4I!QOgЁ2Urt݆|T&3{"|Qp=J]<v_Osk}2*=OpjTl0aqnZ<6)h~`HG\~ⓒ_`@bǗ`ܱcñ*Cп/'YZȦ=q/mj8@G X' D%O7~~VXT$G):TcTߍ_OUy뮻B7MΫq^)&w⩩OumzcyEޏ6=]>k)(bL7/ih%LOSbf8+WJVN:΀mcݲoWL1kJ"vc+<߳Xޣq#/}>7vO[Xp(ӅGGհ!k6~)>Ǯm&(\O\ϟV7PvMAƯųa_~)v|~b72 WS[[Up-7 {r .q*#x`E2j]p.'G?3<;R0U(CuebH1+xw/'y/ٙLs;K'ܮy�ibB}NaL$9)ή(?A&Y1ZÃ~$x!˜(+~&o#L/R3CFfW+"JΦ$:"MWz3tT 䳸&d)Jj`l!ik /(/##5H^uA# eKi+ǩbv)G`- _KN&w{#۽QkthA_QR;Y6Ǎ_OR !\zum1iV`:A7ƯŧzCճ t^!Licxx{q .Y$ŗ|݊lƯ'<q֑襎 MqJK{"HESm:N TЊK$]f4 iuks^ M@9NY|l\*66dB:?>L]+S%ֻ<m:|Ձ)$BAŠk<di.+n(]U0XK.Zvh[QU{>VD&d#ZHpLB}mt!9ʓrU'BVudrAP @V^!+޹,Ưŧ*zC}-D2rVoV-~RMymR|b ݡ\zD=fſ)9W ﺢyhC6~%]f$3ݩ3M?S7سư_O3VG'䅩!,adV AZ_ ''gɪFZql5m@9zh@x'@澱%YdG藪\ﻪUE-|w ,JFpR1k(#KUƯ'K[W {CoW~hϛXS~T1RƯ'v><t_eaEe4Y ROK]4IJ똛CiF&Dž% Po-!ĿǸ}j$ DTp30<|-&ք$n;u6~->\[`eXcAbtaZ~ԮzlZ Į!<fkd4S+(F* +Ťag% xhq4`]Gi ~ �DƯ'C32d&Ua j}`2Qo $5_9׫ S$;!A>`3ϝ'Ư'Zd~d&3Ŕ.LJ26kG$Q1H7Nh܍>Ĵ_O*I!J /�UGpM~+IIuƯ'X3rʅE7\!uTM/J(;M;6~->}z2 $t Dsy?s686~->qᙻ\V# RU>tǮ_�%6~) ilx+x_?=q%gW-KϯƺkP<DΨe_~ؗͱ6~-!uimThFOZXB2B(@2Ss6~->۾Z|sscbT1Fd(qK'um"Sy$أ)Z<THKHz~k?NSt."lZ|jJ|k6F2 5zz/!KA_O '< ?˜~Ds\9CESAͬ>1bŦ۲ )hC.5K֖sQE/ħi0TBhgj;=u#֠(/Dfh Ưŧ ~Fsu8q7]i;ʑ+` -5MیC0E8aWm#P4G&] BvЊ)2l`h]0sxJlJ|D4Ŵ)Bmވ#Ï=AǕQŽ2C1qW⓻�LxPu0U}>Y$G}6+KJknʾS)Dr̂ڃ\Oh^.&DUd X aXԾ_g;'4BvJ"?& ]SO"zR6~->iVkj62oojd/KBi;"Vc\ܥk\PT[QOD}QױEߕ~:}mZ|b.#4*%*8R[9ԹBU5|f sDA_U["C%S#~JȒBSA j G(TX+P9@cӫ~V<}}%]tRw W9,nZ|Bf>(Uk.qZI2NN0wSlNDg.=%1}h;ZB:KEdCT~;?5`5$T+1kk񉊻[łGR/ޒ!Ooeǻg =R=?9g1\ O9p)&rƯœ~oG4tss6gW6wݾ!)4i^J7~!>uw(2̏W=T?{ɐ%{M6~%>Kq5;׈IDC'|\ V1f_O=-^Or "Qx2$ayN&8nT"a+xp[cs.L<S6,w_ ia/ŧQ\A[.멦Cp<]D_OTbWBF1)U3O7UqTfY$6~->!_m[ґgʣMIbqnZ|bd5s3+o]x^ 4 y:'Q+qyb+'B^T4ZO;Fr1|$loS<TwUt+02`"�^m4eNJU~W+Xސ h֩&׸!vT"vmZ|mVe.5bFU(D#b;Gs9cT/*˫N҉b밳Q_qB_uE[oS{5<l #T^- v\ԓf[O[7~-f**n@E]`LES[p qƯ'SXYãM_~VfB (تL$7~)^C Lj&]t۫,L*ƯŧWLl&r|D7DԐj\M[-{n݂to8$㦸x oM1/',<$B*8,?#M!u"Ibf̚(W`|eup7~->PB]{jy*Kt @ROi%ߵKCiuUdHafW;$]Ưŧ8qR.)RaϞs(wx#圅|I>M%too!hxv'8+O2c7%,b#.M4qGƍ>xM"ʐFm_të>-Q&nZ|CCއ<-K6_݇kxY#Hp w8_5 Ԥz_O v'+ 8\-6^CI ̍_O_ŗ]&Uۜx.L!f7~%>I8oZNcL*0)K3mxf\;h3F'cUxC)^cmBN~9؟@Ư'Z ?|Gmi*\L9nZ|ԒHׂG3 SucAU"^b|1UB eӞ)A_O1Gi&Vw܀߀,SBx "H#*_o$ՒWf=JoR|/0M=ku@e|C{t~U($x!z=_nUɌÞ8_}%\R/']<pSo\nZLcS.4LXf 'dap=.X8ґ$45v8E:%X!wpG*/IV)jOjkp_j1ڥ}!$Qo36~->|ͽi_kU1Q ,)|=oA)wEU1C/M?j"lIxjS t]CGXcQhFMOקmZCJeE1s3yZd5Z Թq!oJ|ꕒ3w3zs,'SrL6~->1>X+lnz<hE"K8'GfƯŧ>ύݓb3+tQ}5lHŚ<_Odk+F G"W aSkl!%q~Af0DX$荤D7~->EjbVdM$jK6~->}fJgl9XZ}ɑLm"|9ώG+ ]b̊x;)ݯF Iac_Kvai:Ӝ j^0?@PSDI|,j+ʏwжIg_# 6~!mŶ0&vyJ=[|c1DvR?)NHS%*7~)>L9ݮt5Uw,n Dz'[HgoZ|# KH$GM`W]dBwoR|,Bjg!tqj']vq H#;jWlR<Imvr"-]{/ZW8ԎbcqH]['kLU)FE2rxE?6ͺkг{,{}e*Wtm/'s^Kl1ɮ8|re(_<Űz"[+ hpu$z#A"uS'f\ҒƯ3sTۥΫ$&=3RnFWY7~->MFwڜz%+~!P`S@ָ$W YPΏ<SFu.TI.OvFxdu`~ <ePF1+<Yˊ23bƯŧ`=̧i"A˦j,]f'VTD1O7~)> 2 8ƮEfejxH&b�d)\fՄ9:йU|b=7~->\|$_c(-jwȊw..˹k^P_ D =)՛?FTD6x^CGw(n {;Ujh0ǐ_?D b2Lw"wǍcp1xG1l m~qIyy�yaj/K!rVE&InY꾸чV\1"0GMa^%P6~)^C oC*pI.Q***}U6~->Ey ]C`TL*ƈR+֕Лx_5"֔_&Ṵkݹ&W9}XQpMr:RW%7~)> :Pڱaqaj 1=6[y/1n6~)>  m: &r|5!B_O=V9XXЀ]Xm_n.,k&/YZ=Y3T J1iY=g/'5,h .XQ"D@{#Qk1 %`UXl?d[6~)>/pWjɎgHX# s?+L1,bD66~!>zTƅ'x-/čSs5:w#_+11mӯJRR @gkJqlR=k VČ\ra WuUˀ,J}`_Ob†/$FA&c`^\ 0v_O\x.Wň{pO]+@ɲ_GC^"^Otz\YU_K_nZ|"T"a3_We,+}sl_sH]Z7f"9Ṽ>J4ܡ_Oܘ+ULaJxt]n6~)>3r<RޥOӔ|1K_M)zsޅKGR}Pk9ȏ0 fifPQ�`P3Ư'rFn(;q ZAKMҽ\TtQ i$7ո&zO݈5h* Ek񩿽(a\N@MWNuǵrfD5$BnnM{,6ctG"L#rU<7Ar#(!IWa$v ZW6L.ME1mʫP7qGq_1Dlq̐oLx.�00T{2LAO2QykҾmZ|*/T > F&=˴I97~->鲻~eYBpcbj?VG7///nَ� +?M4OHT~_Oگ[Z f.8tƯħPȺ$WĠx7w#VG7~!>Q_hlulw{ynbf$͇J cNue s 5Q6~%>D|1zP{ |_5/'EsBy +J.T'5{1k__IW ).]]`U$ 4&ZKܢiS--L$QÙK=2qEqa"ÎDmR|zP'NO XMă㬯* !J ~mZ|n햇l9z16 Eȓk[DdBxTOY!WSEʥ孜kQ2 =]\ (g ]oH MZGg!_Oݝ8L6#rUAO/,E+c2dnɞ~_OR\͎z5"r ߿UL#}SG;kD&WS\He̤-IXG /'䳺HXJ=8%\؜ ϔ ݗoZK~l%zkzP+:Opr"e-UШQ$aJSMUY=v"_OgDC-td(@SRG٤gMĬ :>sޭM./ŧvΉA&J\s&ʇɡWy ՇƯħ쓬08\ `! [Tw#]x]nJ|">?W5rٴdz{U d(V7)u콉5:}e*Ƚ]nUYK rѥy' ؎\`oN6~->Ջt}X:,wW\>v]Q&9i ˆ!W£=_g JPeW6{�SQ@HkIV&thW᧟H D�&_"3| *=-S.ʶk[iǬɿ3 550WS/Ư'y[�7B+)3ɸ)![zS̿ )0 "Krψx}}oDH6~->yH& 69_Y#9qx%z\_O}>ԹPZk�]"=+.;SZwmR<ahZ]F ;7f5qzk{4IWk),5N쮔q9T-ʝa6~)"8f9g!_n58wRiS{#6~-]j iM 1HKM�q㤏7~!i@.CSjx2dczQ`KqI}�!yRiW~rmZ<^V~x{=Wx c/C65)cJ¨'&<g ͣDP+sCqWCU6'a?^ ~$S*/_O#ۭS.<X/e LL[7~%Y'LщXPJ{_4e+硖bhBG{�Q[{J*2W/SN82$ҵ`LTXЁe8_LUnB<s{ٴgJS!DG(77 cƯųŮ9^%R w$Gj LDb4P}n^(_)7 I7~)m^ϗ[/Ai2'"Ηx{ <)cԵKc[>' FŦ, VƯcC Y bG t);u|A>N7~->)$v| z>6=Q)2Kln2|lfvj_3 tԀu_O._2tswZkEULr©K5F _O[PtQkK(DxO絈?bR?z7~-H?]W7X8hiRYQ"trYV4u.fmfyxzdE 6ƌ^-Iv{ǔƪ_O-b7Vʣ==Zȯ<rR=ɑٷkOscNJ2]xpT_ .z1Oh|yfµȕoiuewdnZ<vowIbLJ_ ' ?z#)3y_OQ;1ؿU21._O8[=iAV$w.?wr$a3S~γc/QŊ<_W&"q7yQnB|RiX4'CD:&6~->)D#m5<H_wr-]ޱRa>9x9"5_?3kl6~%>r<`1с-]lJm,TqEʍ_O7ӟ�N+]M՝@>jB *:82QDU02P]:YH,r *fr&mȎdRzw<b۱ݻHKދ%.ؘks$¥_fU Q4l}nZ|pk8^=@_J'4~&8KuL+-\|W>O1ޭmJ|>)-g9^n/}ԉ׬!D+\4vj4ɰILTArUm֍_O]6m~pɊt(5n6~->bcCV!Ts1lE˼2URjƯçYO)DQ Črصk)XuiuP䲩:hىU%QLSi_OA$lA&<8伱k!tYٷF7~-C<Y)Y5zr/tnXgύ_Oon(84 z�dhX%J❋rnZ|1QA$CO,gf'ф>!/'ʥGcv[žc|+1dhWeF±ة=ӝ:C<eqc=\=+n D;C_\outR^@^vHkzxpyro}/nW̆-QDèW_qd \Kv~%?J_U_OQ'p␮$!j(if1"Tu@lJ|bu%7*qa5I3,nZ|bwÃIUF{_V\F"4U_OC,9vlDnr\ZBmL EbBKqۧ_OF@D%8:Cc;ɷbbMHPgSϥU�V54 F_AKzƯŻ@cֽVOL#>ջbRLvVYKI >(&G u)<�PHmZ|"<D1 Cfz X&#%_O \cCpڀ1Ecd?.yOlJ|uAGFh=SL2ˤ$cy+Ѿo$_Oq oK9q~JLLnP|4d뷒d!TlmZ|1#\X1pr]G$2R#Dcا' IQPIA;g;?3k m9`E1b %\AWAy PlѐƆ*W2|֟}jUCDW}J>miRFōfDHU!$  $/35wh⓻777&JSmDD~]&2_O=CD4Ԩwӿ4%_zL/ƯŧWfS=ld+ \wGTzT9{b#G4(HY1T;%k/[l:J-NVЪ>DRtom9]anB|6 M5. *zS7b "HdpnZ|o1 GXi4WqӕySq 6~->ɮТ[!ߴ;ݑSĈvU?M6~->1JHxdz d7 "/֕ ;ƯħKDSQL*82h3t\e [+37~%> ' UǞ Se瓥Lrqg$iK;AO$, =x2mR΍_Od_YEVܘmKˋx#xŠO.d$So25_$'ef5xf#+HvY./$+)!a5F1(]EE_OD>5[p[]9~اƯ'22IR#ŘA+djY\g0GM_O%_u%:^;52_,yM Kn<P?~B劵k ɟs^ <6~->GlWHKW+uW!Xp)nƯŧ+d3_%i(TK 7~->ITpG\rQcاv5(s^D&;ISVo=8JBHeC_z[![^,xt, 2H*-i@V6~->|k>,ssgriby+lZ<vLCO>7nqv5:nCqBYySw'8"ӟ!q| Kmùʘ [dWW?ȾD4qǥoSjfѢU(+R'3iKhKI%.R-N 563eÂ~lR|ťz岞j9 媜HDAiDAK%vx!4j3IR5xSGeuO]H/m"Y5&P5z .{&<h8Д!!Ư'F6YS)1+q0g1O܅we@˰K񩝧sb*ל+*azr(mH!A+$#l(7XHV1UC|~^Ec,s&vM@l\6$D9^7~%>U `f`*{o}{N_bJ%roƯŧfUR/fti^B$<.|4=_O⟮$x_-ֽ;*]W6~)>INZæ0bHղhE=lv{O5>|>y~`{~TDٕ T91>mZ|R> ;<xge&ҁ*D2y {?D i+%>H@ϢjTmZ|zV1k/7HD}#AD 6~)ke޲8-JvʌC2nkgoB|2y"Cb*Ȓ3"t9k[<R_O($fƬMθ~WHNA^xi}Su.%@װH N.V]8OVQHͮYDfvMUoZ|*j+erb+z 9rgX_g;YYȗ[ ΝsTbAˆ_g|B$3vS"v>RD+{dm8_gKД( ٘lE7#jeƯŧ<<d?d_8}ȳ޲jh~p}hU>@^^ːMM `'q0ꉃ%ie(?t/-1P|yUlPUI؏W_?n{WⓄÈvK,ϭ~9t(4_gɅ꼃6ht;V7R5&$ꗃ9 tYoJ<,y/(w֞̕+˔Ư'L-t-Xz4=U7t`Y%%SU-^6cH-qD1obu =k,tW )T?F]-|eڣ$/'$ѳX_F=ͧ?~W@WeʍBҍ_wVKPj8쉈%G^kJ*umR|G=V8<©Q)KÄnƹkxBأ#iJNs]c'{S_OJ~_rǮMozr | A dj!ĩ]L5`&<c˗?vZaQpRS7~->]Tc8 4:y-Ϧލ_>RO8}=z?kt}xƯ{`8TV=73ݼEV0=MgYpƯħ^)YQ88~1?wrz]1%Ǥ>*mc؍ծ~cyV-+TsrdnZ|S=)fn9cLa?WÆD^iD_bpD<-r?Z@6φ[~]dCDEBHL4p^}SNLm&oUL o@$AA0mgftVqZɨuݷOI{/§K|T ו!)ƬsMj6dg3͉~ P.Οp_O 9E!0Ȣ8xmdqh 5`݆\l clwԣy0q~NH )_O8Ư3XLt`lW+:x$4U\Qrg<JWSu'⦚A(qqƯŧJ<2p@Lrf {=L&{/ŧ"zҪ/Kve {4F|/:vl.G!ҵ}EK(6f7~!>Ip׵uƤY`T$#[$cc߬=(=Wϲ7Wz0Mߦ mR|o:)*fJ'_S ;w+EO&o YGN:$2K_7ub5+-a oJ<3M];M2l3SA+..zftUu$`q׭ͩw_z-\7�&:? d_OrؐUU\3En4[w2LZoiGVh Qe󐥹!3\?(vmZ| V|&b.lj2evmEUITZyz "3``@#h!i09oZ]dVэ_l"p*OreVMC ['s5MB5�Y)Z:zҢvxⲜu @TzГ"YYcIE4akK1ttr;3_&lq xCtp,v*ct,r7Oz>fcϊw6~->f[yZ,i^d7~).\[%}h!r sԴ0Ue?j�:Įd_rϾW-oS %8+ v!Jtl,U.m]I0 J\EX=o*»`MeR K؝;`ҭ~zׇ$gH>M.uU"ˮcnPӃ`oCRi⓫,Q ¡Цh-ǷXx so#a хjWR^k.huՓ5ӈO(lc~,lR|R⡉u-pi{(2O$�T?e :Ȑ^V%HF E.`ט\6`L{5ϠKp<wh]hS~2)(FJoIo%i؅C,]����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/glass.png��������������������������������������������0000664�0000000�0000000�00000120236�14115753270�0022753�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���IDATxLwއ/9MOOO�3�i.71ԊD*\d*ҢmYlH\IkJX`=s>o|x|<9ׂ#H5Mq8GlnFH(麎tI)5D#zB#U@D4RP%K2*_sޔǎBiE:%5LJ�cb$ A)%;bD ࡪK[(!" 1vR __!CDHA!!(R!$Ĉ"霦 ll(1TXۿO)߇B߻k ;\Dt }eys=cf $ꪦiJr(0|dX=4KHҌrP.[|HaFEd19qr)uH!@9 18RV+pa{!c"$iuܻK_"OxXP.[9ZqΣs1DB]�h CRh1 Fm޻K$ Dxl/pĶ_!  P~dyD;|6;~1gH~R J$ijSNw]D !sh)J�L"iHԴ!ۄP5+ϛob{o 5Ij >%>~uGRBsCU7Xkp]EZs1R4XBp(;WNy>FK�;bO@$B ŹA3M hJk\D\p!ْW�-JOX`!�ûHwwy()'�Z%hR6~<rYӸ +TSLD:/Wǎpds4pT V4#KS| xY;}[q:yPb:E1@DQw "e$\A,'UH#<!|Y-*ؼ zrYo%sX[&*IJ|(kbEDbSCi"h!Pư%%(AU$H9bK]78~Lrb0ʈZ&]'xh(VX"G=݌^A؂$$##)hU]c '(?+9s6ILdHMmڶk޿"bN�zz>䏯ŀʁ3dP"�ِηIK"JJuM>" *T2!B'9Vk!Q D'd-Z:PE O"PF"l@$a CS3Okޗ G[߀PTFkIa3hБ@|L5:UVhe mKTMN](-Z):#dd(ЅIh$!4(A Ah;Ҟ!c$RxA"і$D1&GImB]  XAw:pY)ޙ??C/suo:(Guc#&RɴB#…@T6% ePRBi M)E$cq\q7Tg x."U3vWpqq>bc9X0kSA R=tSb-w;-f)U|D9Ct(ۖ*m#X8!(u[lMY%s gG1erc.y3$1)Z\uI)qev9 )˪atnj{hgFkc% 6- $PyG#✥Ň3ܞRl:f9<sj[\ŏ?`oN8=VE)͞lQ H%1H|C@H(1l$Z64]D}Ss>5YSo T:df{գ dd4ٜ1G8@Tf$28})'Y$#k#5ZKJ:p$ɰ[v)JNF`:CGkDaryAXc&@x{dKQϦ$roq{()lT#dti59z*6Fcfcsl4$m#ɔ-i#ӚY1㓟|?QsH4h92 9v?%8*JQbé">PDKZڮCG(&W )%uW3["C )q]C۵tnEc[b桐t($:8D&JJzԬBP90R$aPLXVs2"B,/,tcVj4):!1) 5(<<( =}Ԡ]P(=hO=]RdžitJ:󌩯 d AdmLБJT a1sړdNy\lIvK QS%9ui3KfoS9ҋêEx*1"B ɂdrmpRK:$ Y:ȔLJ$124 -4B1 փ@"1(4oI҄u&)HjPNl;&ʒA\M5rAHQATц##k:# DP Is 9R&,_'t}#ybѡJR !jdbU²38&R; R#Y@$vP<:r+%uv%M'NkZ!�/AUV ҈ yAΐ&g1 2tb[@$*py1b"I \ FjEkKف-" HwE8i)(Q"@(!.Ҹ/ t>"4a)+uȕMn~3"sXqh+HuJb4mZQȌuh1BD(} %PRBmZTUH=hE0Q KطWNX)c40,TC *ݪB`(ZEz\1i{86A;/c I{-Lq>4Qd*ɴE#(cXe$!m mXd$PU<tt6`s!- FSTBJD/D5,YVR{Ln~sԮFXouNtH 5[JHBJ"B֊.t4MM$"UDc^&BD H]I1:<@ZjDziJɴn(b3jEqbn*LԀz%7I S*իMBbLw^VyLAC(A&-" 4򂑲)YHECJD1*Ar$5!Qj0bpm KҨQ_uGTh2Il[9RmȌE8vBdqHoDVTEGTXФ(FHZEKDS-YM]u,}-5F(Hh} @#\%Ū vE;Γ:VmDzkYKLA "cqI *ȼl:W+89N-j|ޡ&3 O -XMZ62(~rz}e= 3h<AyVE")"v`$ m3SjL;O2XZ +K!B)’Ztͬ>-u"64,ْ[dRS678: 9Q=P678]rKeyKkjJ9g^θ㯲^U r)[Ǎ QC#hOKG++Z:)i VܔF7xYN AٵT#JI+%˘QfMHBG[^loE&kdY`Jە@@1F$Iʩ٘l!Td|tB|Trݫ9Q5s/ƈ  dHulHD-HHmڐ@[z0sO͸VL|CՁN=d5^Ǔv).+,^U-c=fޡ5Do)c\3Mͨ认43"},V.O.orB$}O($hn-daiR2 Ne\U17{qQDX ^*#"mJAV-ܠ%DO/M_3~ٯ;N4!ޓu`0 MS|D"G $EX%CZIEy`f<=xS 8h6G Zv<xQBbEB8A5't'5DR}v-GN%{+I}C9o0xX 1:m7x8w99QECswɯ7sO N'Y#vxN4!<=_Ҙ^w=L8y<+ :L,뙁9oζ "=O'Ys?Xwfy_qB@!.E(0 k5jEb4: 1LrNxIw9 BPxn(#Z I(4Ji6Gc2eo>gɪ5 mBBD4ТSk#U@3BېHdBh6S(!H`3G)Xˏ qQCҹ`"LY@~Q-cIX1 MXĚe]y'Iz-d#&J axX&t"rn#&"#;@-R3bBO@ H"M8H1DeTF2|p+%JHLQ+p C+QHFŐY:Vޑh>×3}$f@+R)x)G}ڪdgq\ R`m}<19y6@g 6"*Q>nQ)1Rr_h"&L)>{m^EB}y0/?$8ggAxo0QǺnJf;mM;V[+e>2xqoF&qGI%5#%"HYD𙦢IeOԂ`+:J:ZBڶ^ZOyM3[g8d^/X fkJb Hu#_5u*\oNp8b{{O~W~ y|#$6:42H8 JY&cXOʰ6*PFFXJ*J lEG#! dedW9~jeOަj*b0h##4ACҵ|yrOhxTɌi +y41x0 +D;a:]q9ȅ$BCH@rkH=N'|вFFW1t}طBBߚA+@$}{n!*Uz %USѸH.< S4/}z.ƚTG(K'N/(kr]EV0-BkDY�]ӑCjMnQPRjp^4u>9cMFN e=C=;6>"XJQs|D| n84W8>in'd 3dh"k%MP$J)Hfȓ(7'Gp 4&OrCF4HQ"$DeT!"λ~gMQҠŻ<Z+&IbtbBb(W5KHMKgO^92FO8B8嗢@~<P1 P$ $PBtw), |KPmM+%j2I܏;A)슮rnRDْ6$ ĕ64yʮZeFR˚avW7F|C&6! t8A!b :qF!չ 9T-<ZRk;у7ZE% mb&�{)%iڒ@`6"Ks9xx =Q@@<ep4TQ $+4*RBuDmiȨ!`I1t]!]æD'WJZ1շȯI=%`[o2Jv98"&k!}+Lyz_`kXVS>z<{K,°%6jR 6!QbȞYˈ% ]P"ȟ"tgW{j_RIB@L!bXXΉD4'I"=!@+G2DQ?A%t"z˦He`0 MƄt@(ANbH5bk4V65 [6c<rmWtȍc~cc<$[SUÖ;dZୠ# C*s+vE"!(29�3ylwk\0 qH2@ssL"`ɋ9Y`X K!B[2cBcA=S!,+pg C~Cisk3I<28qQE=c$f|H%s=D!h`SXLX1DT(iHuIah2E;N9zl@20 heRȨX(P:[r$9ɢ(ozCXxyBymZvZQV,w &$VŃcƤj '%(tƙHqbĶw.\b7n*@lpxPy4*PNIʒZCԦ 1 D2�-]%1ʐ"Q"BAfR ;/@Ptm@lO: AʊId-СtD>7\D\ڀRZ h-,(Pi,-6 RaIІ%nuJ,((sQŇykus /g8.(M~E-r[Լl[@ѾBc<Oźj&)"X5g/Q39à+R[:F&:<1*NILJu yV`t~RjMZK*b� .1k-$u- Iփ!8hG{P < 1 CDFB_[zG)Kx}$Ȕbr `(cAXJEĮ@T)-PuMZC,d)A< 8gCȎq $'\ņÎp]ۼ#Z M|D)]>\G׎YNJ'[\:zqQ@o`�%GcSDL!a-MR} 4Hi0!x@j"&mD M<@1"!SgEw5Aӷ)Qi)Z+I":C.36Ԉ0L' ̈'ji!XN1ND y 56e-8jNZ89e2aм w 3pͼq/恟 8 &s $ZpC_ur}<Z\`f+[MM[9lLB (HxXUJ1JEDhz-4JhNʐg=oAs`[K[B$ R) LR (R+4HZCuT? ] <f/;V {@OЊ.C M7,0mƤ5BxЅpٱ’:G!BXU`qXROBJ\]Y"M@@;>.Pk u>px$>ٲj2ltA;u.蝫{,ET2SW8]qLKhӚqA6E#&h6TQ)p%R)¤Dh:%$-PA߷$XcA  njF#Bh{qcZ{)x i$!"dA1DMzQZLAcAaiz5d$9Zbi !HJsdQ$&bd 2AET2ZҶfT-xF@D G ^lnwZ""GT_,| 1۱"1g=^;N.k`]] K `+xNlswF|KJjH%QTIia! k6؟ZƘP@3RVM_IN)>�B5�X1qmK&-FT4P`>lɵ"@e!|w$B0FXQ$!/,E$T@Cl8:xq^1F{ۜjWUM\p;<W&˖U*93Ksel $ȝl_̩<#yh r )ZcKF*?&]NSek,DTkݛl<h6Ic||YI) }_gyNm)K='ZN)|>uWthȔdž HFbDD $Mqba@(Z \4.PFZt1 Uk GOm�jÌML:3f}2 Z  i2"Mu Q;Fߌ[KRR-<E~r{ț+^s5тa 4Uk8Sˬ^Ij\']p(wLWZKk-$8YDoeՃK{$IB1jHY@yǪZwH,ʵD"Pést1$(INUvD/uB*2)nRHRp]b*q"2Q8D pNp!)LP9n;;6+ ,APtDow&)J\20)QFl8-O|E礱»%$\j3+9 wY6+|ʶ|hJQo?%t [hq]ktwhch^)@Y׬r^ӵOl~H]/AS7D޹?Wqmc ZIլh]CtС|,vKꦡySVjY+JQSwK+uB XCjv٠+K[b]ȖxQSp&qzOhcAhֹ4qu^XlȲB' CS۞h7ֹ% & 'LC"AޔXiU*!# NƆԌ>YQpJA"x*A^T0xIRCUH)>m >4 u]`Xt BIZױj*BzEZp:f[\~&rs+cxg{,vnV+."V M jU2JV]M]taeld:KBZrPs@t9/X/eE:v2Е* ibiP&Lx36wvWF#Cx||ӡu^_ODPeCr%jڅ#p$u1<!kNh2#X jw  FDz}YD{[\Y5P2ΗL1Fj�zV>( &k1tv4:ΗM0.x1n(-:p>SFcGsBWqM7^/a w@fgGVeEY^j|}[N,vTL9 v!c$܂5&vt_|6-Oa07f7 , _#4j:bíuy(c6 u)ɤgǷnΥNC=s:%3C58[Q%7\ ѱ&rRILh �#eD":9|>ijP9kCA2rK}dqM2 Y&d|чYcpwJ@ق[EFΠb]We]ZYy6 nZ-̦4eV-Yzϝn24ѱD߫^t; aK61\X?̪_rԌ{'7ٻ3ĥR )Wcj#2"*.Fym~tOdB:R~yǏ. 9RޛqѶS '䡅#$,]J6w\Lp@%Wd$# :EuhQR#l0aRy j1}@ } 5y|^fdF4Fw[wY :G=(%eX]īdi P20 \r5)*[:@l Ο%iX]/VN4 myc!`@sxa5$$ټoHͣk|5.&`jKfiZ9 T xeSs-Ht/>pb\o|G.>F\dž3Ή]0<s<[I5a9čωEYCk=vF;(Y 2 tIX%+]R^sɜgi̒9ڿX! d!B#@I, !KD02aa0sIapёZe519R.d垿čH53kYnq6 Q!_n)_|>ͿS8}YH ÖO{ͣaؖp:zVU4|?~~u9 d% G%)7ˆ7ŀqEf³K./vf˻ݡL7CQU#]v9{RDtdBg(2kA9<ж+$A0S9NfjwJY͒s}%yb^VTf$Zh6׷tJTUx`7Ҍ+W)uWӖ-ER;;A\gnc/"ku`൵M/ŔWGYrV*wsWIC3QUD6\ǟ妒<Av:FCCEJv&>usf #YTd[% ~}!k$k0 ÂM2`#.m\1,5&?@3<"ƖyQc25+ Y91"-0)+5x!Co)쐲+"<W/_c(*;D"VOr#@44&e M 8K&F6Ƒ4)g=Dj SŊa7@c<2~jp:fCI E71{\|lOCW'WfKmb}!4\[]ppIpDytb-еG*ljWƒ(wecOAǚLBcky~l2GwꞤ rȄkNֵý9yQW\xwG e`'\=]˛BqKD,_?z iBZ2a tq%fNHF;lh*G˔)ɀ4Leno/Q>#:qBց[4>䩑- e8}O<sآ5iZ`v5 [,e>`]LI2ým6N 2XO?GN\ħKGf*kwos_c#`뜹I Hc\yv/ |Hֱ~4D7ڐȆyw9$V ܱ9XSKԏ>WeۀG#Sv+))Vs>5p|l%Hu&ZIP<K7gɜZ8t, '{:&"').5)nP\(Pʺ }W4>."! [<1~dS 360P$0·P. !5\д{vǬCbu.mt|+:͒S׻/}~G [OOʕͽۜ3| O+wG'?QV<qjpՒ =gQ%\naqt)r 4w<Ox86Xifyh2ݽğ&sok>"uNB#\kV|EPq"hVn{03VR& 16tuG Qv51vd1HR لu{De4wj Rs*; USa3}}(քd(ֶ=&:p0 Ft60R U]Snν GcUx<:q>5L4'܊-slm>b<XS~]E#h23Ni86I|KF<Q/n/JHvRaG\`qV5a5Ũ 25"59wxlbGrAъ{U@FGǝ%[|=&FrVh.PwyȍE9.8$s %X65Mlq"!Yi&:Z肣 5^F�BZb)DxB{H"(xۇ qTeC94cmx2AKQiUՒؼ Ҋxw (!JY44W5Υ6IH*Zpw7fWqakBX҄Cbas<Fg>zLpr>r;.pc׬ph#%fd{peNoC"Eǵ4t"UЀ-E!u;3Ul;"YYNg<rO\|Y/#&`"B`Eo21_O+hU0_CaITN"2 Ai|£ ڶ%s4ij 'Fֶ!5$eXV ZҬO42,|u\-QRqQh'O;ܾ{rApL6?Tv59s>exgx_Z~dyubgSo3:x8yU[hh8L ]>֐A|߾X;J3>u{ON0^ Il%^Clv_^'_6; ly=oLϲҜxX3-̛ٛ}궣jZoIBKIe"VRQ0I؜TN.#tOk>N* A&dPG)#RuHYa>qpd2n[V-56x&kOL}5d`nS;ׯ'g ldl6-)Xq:(qҮ-|7|c'`42Cg]E'1&C u?ƭbpujbMW(+F/_Cϭ? ͷw%Y?Z>e$~XSGUĦ*4pp 8L2`TA{gu' 'Ѷ׳UZ{!]pIN j#FrB"-FI4dy!A Zg`$BN>fN@n4V2} yu]�4mjOđ&)eYu[Q+A4=`hq2PysM1GbYv,ˊa{<Uxa\ѡ"=F_=Xg)V<~f~kgF3C5D&_UhW$.-9-/3M78%(i% AyDZ3GHO.9ům7O0TahK:U"? L:$~sMYX#{] #gw3~utא|V;~=2}Ɉ4RmTLhqSlLr$$2(Fd6'IOZ)GP=kx@oyX,xK,QPgssc ŊRQ!,TbLWb2�k7 bǏmUf^1W4H:p/xX~pxt9OC~o, zUc%_|w? R&-xf㜺 p2ce| 4A170<6'N~g?^4%Ešb UTnlpL%"2J,Cє|pmg[<ï︘sz. nS{`:-pPǚd^=/F .({z(5>7s{5]\@@=_d:= 9:R(Te'~3IBe</yVse8R匶,cꮑIF- *VN左{:S<)^SO?v&Eg6r/}/\~襤]z1$}~>/[)-Z~n'9%qK^:O\^ʐxOR8ԐEsLy{ l5$YhȜ _l9߹<gWѺPdlkA3m=a<®׷ s4MQ J !DDz]D"MhQZ!U18nܸtz`lR)|�Z$=±#zp@dTeb6cU.DKд b@ =$g3CySsw8$nsh&7!!Z'NǏr= ? u1IL4eZΜɈb)(66楌yx<r@+=K;q+'˚\D8ixZcĒ|fq |ش~ArkS&GhU  Yqnc{5׎DF cE$[' ZW+ ^xaE;HQEO:h&{V'xgO<p32r_<KI҄ugZ?=WVewtm67`z{w)g-lMn yp l2Q8qĤxCݮ%fE1 x jASլfW?o숨u U`2ޱ9`3^p+6@e/؂/y<L%(@\J,/h'|f^i`1]2n"K;?(9".y ))Sl Gg#Wfb#\pX{4."<Q{ZaO4]â}Zyk4+4=fH)i ">0 C9)y6(&M#i)ј{`x@ppp6uVyi5,o4%jzzCfNfkx.tȌ2oUsd䘫~RF QV%Gw_ m޾+E XF=;q ^r}Wӆ4&3-^|f%ZRn\ɡ<=⡇S>iد;no{A͗:;ue.y&#ZF\Ҏ}u6؉iϔ5.8pr5 rQ ;A Z(]T4-(hi ڡ#�@FߧcZKNzCv=nI,!2HEoQ6KՔhrV#NrnZI6pHF ϵ|l41u8)bi/,e ?d4X,S>1˙[ƭ(-K|c4:?5Mh( t<G *?-fye\0[DZ?<|ayxׯ[9[ UBsܝNH s#ϤLΜܱD1v%'wu݂eeq#Mꐨ<R*DUeێ@ tHU"'M@#fAeJSV%YR9IgVs0tJ6Ot6ֹ}:ml'4hV T2Jf$f3T]ŏ|_=\$%!SHmXsB3?~oz)`|l=Rek!Y8>X;;ܸy6nsՓ:| d<jqѤ;7\~ȓݒ7g<mm2hɅfdlأd  /}JtÕ!sLmԷ`Fժےip*ڔVUq YL Ĥ}@snR0�&I Bs  ]1-g$Ihچ|N ks9Ilo b;f9IXiycRp6P]TXmHiaw.uX|ǘ/{0Wl:hLX1aV5\{m"grxnb(Pb>)m{/qN{:ϕsF?ſl\чJ,#lK:є\go\2hL$hnl&5`j#/\dǼv�R  -I:g)wQ*!.U0})qm]ݬioREIC3r}4jt) HZd9YR0,۹.Ѩ7Jɪ\Z(`20Cm3_M1naoi`roz#*0r,6x[OLnyYw!2N>|cG Οll zam78{bfrgF7R; wo<o'6IA}OnJe;n\x包NxG$Fx-5K_)W:IzTiS Ic-s&,9i*K?RX:V (u mhη,)o^A1*Ht~[Ε"I胺$I3_UTpe0)gNb3c4^C Mb,U]]tQeo1kZ?By8ƈbGKd֔ [<y(V^H\wog^<#P9Jyހı,s>Rd-ݥpX{Q^f=?wBqo!8_>~}Gx=x5tCp&^"={냔YQ#Y{N𡓞ˬN8# c*R2=wudR+Y an+"c oJSR)V%q#IFAһ\_HAT-]Yo\hۖ(DtnY+k*,VKB Ԧ?M0^P/lO<{;vs"8|l~'."}PK{ {KV[˥`gzAC:扟 7b~'/~?>OIG~>5:krfډ3t_? 6>w|˷8ͳkollru6֟`:j>b8x@q3IN…c|ّdɄg%m4:ݔ*!D-R C[&cUG#oHJ$H j`zz{%ܶp@㚚pb>gP {/A,[T4(X&ȰH8(6E-t$J0)':\#88Ȉ*.u˥[5>n nCAƅg46#.<cop^s̔=}u޼q {C<Si6?{_?[&r=Oc\x)<zwK?}\|K&w9Sc泟u fr4dx ϬJpuM(Y F 2ohM^YCEK%$f@fS�)d6~ae-[#u)BP#ﷀ0M'F,WL7K$FIGRڪFDpuKf&c@ 5um`?%_YA{ĶŌ2#ڒt-$vpg4ph8Xp UEhhO6a;!_7K<sF'OO~ +Ymv.7 e6|- gNsoj[>Gy⅏;d{su4.[>:[`.ummB\:xF?w7\+ت e&sP#IXQ€ ,%MQ3Fb$]-yUf~ϲ^C 8lb(>MBkE9L.-%FyAb{ Qjjvq j, ZtswcdKvf }�S ~[:r걔aK9tRi]spKz_w ae/[i֏[\Dş훔x3#kiKa2&1L_opas;#pٗx{?, 8& +ͽxc;`1د:Nn"Gf]_ghî3&<%4P":Ҋedݣ{TߘRjhT}@Z!bbcεUI!F|<rxc;Xeذˏ2=lF4Ħa0;!tf>u&"k`^D޺}o}e^z"oOȃ]n^*9؋dba%j0?'y{|o_^7O}=I1vQcأ|}Fv5{ty5W"} |p'^1veNXOX?s|~'|k~_826 nUON ޹w9x粖4-UY3chOb-7Q>.+,T$HYL1;Dɻ_C&$cy]-E֣m8*ˁ3Ç%C2rAKDd>uD 0h7芆&Y>T:ۆl=HK>yT !ӷdIx.,?Ks)du~<s+^q=GPFrJx&?y??Xk";{7cyӤNWnͯ>Oȏ釈ݜSk?[<s_S?ߺ*Q%gnko#Ǒwx`\ {$iFz iY 黰ڮW4 !!5#_\⭇K37NzAĐw[t9Pqz[ ;@yWt!%Iv-"pi#ެr7KZcu97r?xyoeZ+lO>M+2tyGqğ>"n<4Qɔw'/2{Uپ}}$g)yy \Upd�kEJ\rz^s/?޿⵫[) ^6M̸: f > ~hT3N|1N39'4nϲmHO$jE<Rk 0?K5:I2\~{YfyGXxehQՑїnj~|(eR`$R(DO%Ԥzmqk5|K~r(#kj?D(`8yz/~ g /qP09QD6UXK`KW_6U,U{yz9?'8'ۛ;7xINऑi#UC2?d69y˿_dp4]@Ԉ!{k~Gyկ_ɧ5o~;79uɄ}=\qT{fė7ؽ >BrV%b/@N۶ԫ/"HDA]ƀRyAFUUz;b&RN"NȌt & Mdt {;ctx ~mG ``"DK&%@J0DIUDv9.OV<vZ-ΜsF%]mSąO<r+_7C:<H!I\M6O<d]vI^穵 G%#T]+Z 9 oXĊۿ6_V$,Ղ#iB0cZ Q!UǟأپgV#O+ozIͽ8l‰GQu|XPîFX>P%=Ai"Z3|m) 5 Z4}skڈ;9?X#ٍ-Q .4M $!`Ib�Ȳy:~ߘd4Bz'?;78M~g>+޺DJxRǙ|k;\HM&:be[&ep*q îZE.__?$ǶX,E`9Q}[yG~ 4 o t6XSx#<θ|ye?fNCFb4P $iY%D6]ٸ|ԝC>uw!2d-mQ"J.9> 0ڵHr(Z"I$0}48EXjdɜn_lci'/_O[kCv~#msp9\{uJdJtBk.ٟ훼vmP\fȶv͍*2 M`.#NLjDlȃY |GָjDP Z6b]Jf|1:ڹg0#y;~8͗{|[5Sa撿F8b-d>sLW5ӮegZR"IT'Ϡ( J95| ńF(C/�GӏQPH8*6bJ(IU]$bq̐iȃPeH^ t^0sV#'hټ}^;>~ Y{ȧ~.sI.DwlYE." Qw9SO>_>Cd,و]!HZa['$2@hZtҏ`MD?$A^{~8 q t,@,l<yTˍ7[k\[1wX Dق,"ӂǒOjZ:eID?>Jd2"2D_R hZG(cVMv`%S");Ԓkt?ioMR&B˨(6}j((B2#H#̣ro"Frr>*_b&OonI,IǩZɴt]s?/cȨZӺ$H]Ȉc?s\I6mrb;dmG"=f)aʯ#( `%c0+;b9j~/yr*IazLY%)CfU Xbp ҜUB1M*Ijƣ1bI1(XujٷP+ R$4!x4 ƐhsC@M`넴sȠi *z`ݲ>{V'7thF@R�!D+phy4* g$UM\SS*X8mH))�6@`waas=k'9g5UsQ''-ˣqgpNd_׿# #>+ y=?_¿??G?r.Y%PאmE#A<|[ȧg' | .qP[B Gn 7HW){̄ʼnbP(HkΆL7eB^R޴>ITY`DDU#HSa }70iۖ#钢=G CQ `TebDHiq1s &aHZr$ Q9SeرQ., F\ 戶7eCwӢ=iwN406圁2$&"a`f4<0{?z믰:߹GosCo 9^g>K,(L +s~GkFo#A+ßbcg5:8peCR x�9A+Cv^YNao>cJr0kOmQ"0}&Ō LEݫ8cdVBFG)0!VE9AIegȼ%H)ED<*I R0R)J*Lx(MT YN*)YE [ȏ;,0y:tC6>ods8ٷbQbAm\'YSZ>0;-{_u>>{gJ?iTQIBd5;kq^"F )ADn H)PMHr`<8x}Ee1d`и>#$)ʂHAUUxC|^4̋ ɠDE##)elaGTvJ!ˋپ-Hh)!2 U UZJm0Ycd,JʠCDx 9H CWD2XKAAŰ༐3/|x~u|pDD1Sʄ @5z+a靥Op/3xE~xax,.-y@-10a+x-K!I5XSՔGaN-$nKRO<qiJf'։ˇs]BjKUj(0dR)QS FM1u'{3B 9rzK+- *lDid1E@`88L,2 |4WfIq5(%0Jf"#]۲7R2mNUs3d:0# E z1;|˿?k[I"t;ݧh&9`4kYſ3+*ՓWN *Dȉo/|~:;paj L,F[#ͺ8/x|ET&x"�3O,+ vCJ]Qf:\>QjE灜YN FrĔ,$3r!F|@P,Y.:(R**0ӑwJ<0ҐBBl sSSf.KNB9ٴ#E10 b [Gx,4tOr ,O9(J`V>Yl5`ʃ}#{/~�v1˿/ߚ?xPl_3VopV8 iةF5h+1b`yeB5>YԚxZTc,R̦%n𴻖$ͶER4`br<b,; Ѝ;WH: .g*a1Z`,BC'Ņ*HMJʒEKl (|`o2A1P)2)9GBGL ي</nW̾SvE bP;ư>Y%53?#~WO_ܾ֬o~A<8S,( mH0D%j2QJↆ< ];zݚzQr,iLJ#]aR %CZ$@e' } K5mcoA6h]rގ!@IumZ3rD1Z!jhBk2Pj '5"B3i1J ȼHaĞDz6RɁ-}T\zos~_pp*:67/3c(Kӂ?I@)˄xtݿS.=~.c9=« ,~?w_SxSڏ8gΟ}SD蚴]_Dr]dL"¸y5@t\:BH4M@JD HdIYZi|tJ!Ż rB*6ۆq/ztq H#DGO Zjuq" 1G9 H1JUScbv#T)|ʬbOJtVZ60K˂Y;Mdp*s2gqC?5?)>Oaꒂ%oֿL dY|>ŝgxß$;P-0P_woW>@ѹĭ+<%(Ftw^Fd pւ0c*۷-ZE<Q2M#tSdEdBj2oQhEAČ2bC$w9_sԒ=9fx@B"Q僣FQ*$(z L1l=dGҒ.81#M"xG`g@[+\.'zْc>< )K67^dzpW_WOGo}5'~?/~<O}?YH!pXׄaͷ|_W֒zQ+ ';tP],RǁAJH:3NgswK fhCü.-Iq еal/6..9C 4uQrкduf;xa@I9.bS17xh^e�d"@?8PDraDJA@Xk\@J lC#2xqs5ͦt}!)2EWNI)OkWk]?l.&OK[܋UȚvG2%>5>o?Oo/@ߑ!M4$aHF pi室 D(BXZ49UejAN %uy ж# ,4a C'й|Ʀhk !|Lʊ>!#n 7ʍ콣6%HF �IaK!FQ CBQK\ސ@42͊d;/A;e3C3eV8ܞ/f TS?G?姸S+9b 9iɹ ɊN|7|HC=؉I&e02EBb2D&' D?`CDZt*ewN0Zl&SԂG-J@i$}#HTЍг4c7dbӂTIO`.rpn\7xYϩF $4>MY^1wp]wxOzBptDv9୤O .m|(';,LAVܶTCv;HXl[!TˡN<<Ge=q mNr:}'y?(21&phiRfo| )i7^X9֮ B5p< D.c`- ǎ~f5 >x. } S*(T MPMבuFŶْq88mw-d1C4}"!D,+}FsaG+5LB!Vl *¹Hr"ED}GnR2-λ&DZ#9~5#KM3w[u$fsz Br2+=\u{ݓ_({GX~ܟ5lTb-%&Jo:%XU` , y1g2m bẈ We<y\wdP{DOTX]vtfh3kq} fBC1`(>>ih: Z҇H"`H> 4Hiyr, Vxptx5F - 85'.L Qj,<@',K!a,AGfHE E�&”ٞQB=EN!jGPFl(vlF!'/q"ܜL<;S! YoG.agTD(>Sfm跣HkhG0sQ-eaiOZv1b,!%{Uܰ[,'%iI4w8/5BLLS*|HB '|@DYZ\ *"eQgJmOY! f>g&RTA$fBSDg%Cu\ H N*0F"D猖9JSbqjE 섡TvB LRpm°8Rmr:8'kK-&f~$/rI"|JgϣZp52:gyGL2Jf!cFAt숩crP! z7)*hp@ǧ<u倩}G~D()1GpZIٛ+%- X5 ((KK3/=rrwY e6^]uYZw_�aZ(!R`Q2A"Sz92 D)0( T,uA$0E\2h`H0D(A9fH\p`Fa$u>n)iPt>5?'fOfXIZbY][tL fh|*EI�+*r~v` Ӓ|4! -v(H&v<qtb`6C 6͚srN ġÅ-3SbĔ^6i E@LXG8X-J =v"QbLR bږ+g6) (!"efϚ-SQ'-FdBȘ9(*DHCZeNȺ$QfqXLXi^HΟ.P)IXXrҬ2.yaEYwEG?3>[T)S)a볇œU_*[>=rp7UO$c(r],0S{gt+d`O 8�aqqkZKփ,i.0 ),JY.Bރk3YX#YK傜=ZrpH87bbIURYK_kh$O=LPf 2Vd&D 2s:l]"iP̚H̉{1G!-MQ=y⺏LTEc7箹L0 XҢ2 r7EGx=o~v(ffk͎W?yy0G.jR9# 8:M$2LwMf9%nLdXbkduQr e-o_ bFbкlæq@)U,SI$at&g rCY/- mzcq)apH%sRMx27|GJuZ2\&h D4sP£EKiM0P)e2gi$Ŝ!gLV4U id+X,.Up2s1%q޲?(V²<EU> m~h|_c>^3s6O~?{OW>JkVxڡ'j14 > 0A=^`rHhYRYYBq$Ǟ9:: O&ױ*z<a v] ԓulwzӳ7]pϾ/y##6g'FD!B$<x1}ū~ͭ G`کe ,2go {rf&]tcp.Ջ:BktVy]3y<+ivձa"Ҡ酂n;d$F tO:i)ܘ>s^ݷnPr6S[ʱ3$bhD#B(rV@rr$-YVg<g )ćM9ڟc#6 l@mUKKLCc^+زxbKc4Ĕsd"đ9'z/.B*|C*Ai&ت@5e®C54'fIAF7<fd;,fM~;_>At=~8=<{]K1(\Ne枉6S:NpUAEBH4bHS>~͟>^{]4͠ąX̬D0 $R@!K4efb0kTrd1<¦_ۯĆ\#RH $!rkRΔF}f"erA ;ǝӷ}OOԑUfnI@#)D$D KPݛqNn3Ԫ洪%ǖ, Qd)#bJڿLP<8 J0'Qp4Ÿû7୷9 'csqJf9O욀o$ۆ̊ (Ҟjl1Lubm3Jt=!,'|#&mY3D5#a2G]՘9LÀ"ơb@IA)%tQ!`Mbj-t.v{6vzL[:*_`>9bi؟LFs+3b 鄦kFX-dq,@|Ǎٻ9M[=bLd@p=:x+P CY^{?,i-]PNksd0Fa rO>kw)sYn#+]%kZy9yKl? *{mëg=؃W-{l☶aa5񾧻R^L,MZ̝WOQݤsRQg}PPfi!22@a40#FQ :żuk<3�Osy$G.O؛VNxߕ, % b`՝Қ먫||bϹw;Tl9b.B*Z {A@QI$5WC>G>})SvM:ao1-r{Κiu1]`sG{ h,*-%ƛz1E AN g$T `j|ˬ_yO'=r V=aoF+"#vک$A* n<<5y_ay*~Wj%@8h~  HE % ]EV?fz GUs^ᅨԑw9PUfۗo._Zo2|RqไhŽ{?9_R} $e1!gB'Y)\PB ekJ2uvCk3DSm\AZ)ZDd%E9Uc$Sd!b-H9' -9 zG2LԖ4K=ܒ+s)m D8GIgo}O_z,"HC@:aMc5f EU,bX1[̏>dKxQ +vc,BViWec9Y"bnL&v;4:#xԖRPͺaq8\_>1r$G(pCF甩%Fo! "Ek) A]t)RajA2 t(ϙ5n Kآ&8T=rDu3ZF !ҠbD$S o}‹#']{xO_7ZĵMZ1 #O(L$g^0oy9RM*)MO؞@4Fl B:yE K/!va<{u {{OS.n (JxNa₢L3RJ7xNsy餴]Gaǰ08)m`EJI]"2Z.7qzä0g$R zi78Rb/iVwۅDN!$bZu-<CLЃĠ`˒]9C+9" RFIH!D2w&3}%qD7 RreϺ9!X)NTr޵'[}y"Q#Gإ Skv3lwF,P>]Wq5tS~)>|@QgscJↈ1mֲ^RbzRe1,){1N/'P x6|2�SШXR$. ɡ%J;`8B-)DZ.WU RIaK6=110" R͉!gxQ}CuMisw'<OS% F@j</o%V C5_ppio:0#:d.i5C&3ar=wuW&?A\smA&,hCyk%Isw9fVuT|Nkjqb;Oc3ֲ:;!0g#L%S~? [wp>s =k:a,2  2)BT$csi]㻞Br(iGc[LS)b$)ā7S?~׾ۼ~ONQ3Z4aFc 1ݣWy4\A\} !5Y[:)p$ޣ8~GǼP\كa5ARrhBЛ,JY+P;tɘB2_L1д apa w%R1,؜v-ALlskRx?y_O6!IR 8G$P'[9`EE brLlq&$.%L] =B @kBXPYAYC#0>V1j&:mת'ٛ()o_`YO6QNl̽d:4::((C\GH#H)TRhtes\kK>|Zm{J$r.d4.!G6\:B*)U5i)33Mb>c٦EQDYNʎxSzvڌKDUƀOh6[H<ma>tdJnjI 3IM׵$ȅD&Gi-RQ!"{}c-pnK<]ג'YMmie T s,Jx{XMjdHzª9a2a?C?G>Rsf'8ѨQ.+GJ>ws_")zƋqnƄ7vgRƧx#\?zSrwȁJj$5M21XS|k4]vۂGV+ݸՊb1!w; EQຈ>^oXsb9[0́Hۍ/hYyʒapHeUrf)\>\`L‡AɱXdDHP�� YIDATg 10 # A(2DM"DY{4rb/jcHn Tȋ|#Kf7 xM~ }6O)޷juk,0p1a3]Z"F,m˥y[.?̢ƥY&fnxD)=m LBԲP!˳Xc!1I׮cj Ɍmpaoz~@yW\!pÅ+&dfT3;Ȕ ȄP~tצOozv 4&Farbմbu] q�udtA2|fRH*l8R@(d 9hY!ǹђXUR$Ym! qCRK&?ӟu݆ܣ-+R(:GF,e*Wow?xyK<7{ͮLjT_P z* JȚ$=9@"'?~玮utkG7 #GGH%Yoh[` K5'9$<)%40#g݀6 )3W1՜qmDN\t m YJ4nc܃Ri?Sx .4mQꊺr;C5-EAwf JP2aR̖CQ~E-u$H9!X7 dB1V2ƈҤ1eF!0b[z2a=O^^o}7?~O:WL9*_}=r=Ay_ڕQ!TDQ#& rfbKFrF+HI?ndw9!(Jv 1;SI9-B˗ɴ=gkd:]FghY#"<~Ʉ86FcDu$I t֖鲧%Z fkIMgnַ9]sX^ C6560 b@F9'PnܥLcxRb\2 i-Ȩg}w_[ OVlV[-巾@G9>IYM1 &p1123^7t 9o$d\ĸ &iǑd\Ft}l2V�R)%.ѵ-텱mIYW FoUU:FdNpVB]A}Cu&\S٭H k5?xPci{fnXSЁ\`xUe[GlHp2"7O "KbJ~au %ČO=y*iT)smiؿijwm_q<doΓW'cm Tz܃R˂:jN"Pdͦo)@^ U{- r1{s)ݚt9GGGЬN֜>>eؗ{M|Mw(-wĘ[ $-unh]wc,h4#]$'N Z\H&'I;dde) fG](jzjᣇ\vfIkb KcS{Bcj'4B/UL`z$1! db CϾf}aDNJJ!kZ2Gwe`m{ {o~+ 9H;S80SbmIO/ rBJn</)cd $#}KP4J"J}08!Y3-!{svGƬ7B,st1nĥd?.A1E꺾Eu)!0)ia s!Rb4Ib9_?"Vb.g*#5s,ͮUsNΒi%) "  5.c 1C%=n"M%pxϣv ʪ@IA# MΣ79<�N]Ň-Rf_9 4 ֧ڮg<Qd>c^,) d=}Ah5mS!$eQrm\Hb<- nڵ'tţGI!Q}דr"<:*&h-QZ^02J)'H!G?PfJ5C) !#{T5(6 "C09>Y)}&w 6 !UX%zwF<IH . ~K'#FZ3a@"3D.�O'8ǜ{55 dhHBC7pu3$ٗ3t "Zbp#H6t}O ص>:z@Y9~|LL–09Jܾ}~L]CFl>!H=)N't]v CkE#$ PLHx$v YQ-+ Ӣ`<Ax}( }1+ 2K|dz=JxTϥZk% 0ĀHIL»f7n$='HF%1n{M,DN(X [9Gk )#D s`!+" >'*)$FiOͲЙ,He,C2L5hJ[-x# ISX bJh-_-{=ڮ% #DFkZn[Ҥ@(2DeɴEvhvh6tÆӓN-R =UU$$EfWXeNȬQbҊGSl*iچ]BH  3!{|xkg,O,]f?פ!B4v=HEIWS,2~Ie%@H!>x1 {h8==igPU%R RL=y'ifnסt`y�#_1)a%d2@Q;go5[ h9-(}V)pz89=e:O&.Ko) ġGJ6Sh=G9Ώ={30)]mP qXpgn  '\ROXs)~o}}RÛXe>9i⢁SBKɐ"mp@*rgOz'r@qRGGG qrzBUWl6#`B874#roׯSXvXˮiu6ǧY)=\}("m2trRZ!V!d2ӟx?]?Ku 7L\ٿA=х WA4TX^ @D`ESY FhF 9f�dgOAI #11èjHD2B H~<yB<qWwYCSLi![fDTʢ/LCtm)!4S2acF 1ERNLj]CRz:Ad|1gK{$emV1Ԥis%zO4OΤ0ĥ}|ȏ~7X1t%{N?2n~~'e-j1sF48 qyOt 6sCR MSa=Xfj}`D>Ac2)|r J2+g̽M "kdd .dZ7op]‡>A\ͷJSzŨdw Ð1D낤K*QĀH7@Na(Ͷ\]ie5&ӒN99>x9 `-1&KNO֐%9+Bpy /_)a!4^!4-/_巙3(BW@JwEMCK W&VcfV@mK" tCҒm斩`-.G"1ȆA4br tt4t"NZ%B;̏~uQSLJG^.AHj!JxoKMΨ&%S9R ,0V^JE# 4k "1 B Os=1*i$|9{ Ֆ8ϵW;,&Үn7O:Ձdq⥘F ~0 JWF@B &5 !TI`h A4aC]`p3**]Ğl3R>Aq )MOBR"uqN s+ !q!gF)Ȍ43n> ׯ?\V̧%T}-X^]1a"!o:Z_3A,u 6aSI": uyCB#eF$iqڼ>.p+E?t?,H)([ATIB3dtȚݣ[ c4}? <؞оP]wRقIUsC#:@=FCP5Qlm%צCثJftd& &6!"lDK65"My|mxVږE|(RȈ]58nYʛ#DUa;Q9T",{BǦ_1iLiCKQGF#C҄(zާ?N j}9lٸh|:Gܐ/p8}RFZ&` 5L;ʲħn8'EK9{D52id? TхwnV<=ds2{u( S9|[#̇7߻ OLi)Q銓4@#B=~79`?*3)7np,:Sf,+޼w$k>x)Rך?^qвb]0u3R9?;.nG~G9d-ځRy3 -ztB [/c~7n^¯CP15R5X]P{ owwMVd&q4%8163,Q1)R+lFv`FRM"KK8[=$:ޒmtu{ɛ7uj#i5bgٯnR)d~?9>}׏cHџË'GS_ч8\^٫Xxfzȡ9v [jxSO1b2f`脙h [$ڡy󁀀lF=`EYS!#g}rРq(bFW1qX" mk|_-/q|r).J/ҟ|N? 802C8#|G~JL: |amMB-qiy{Oe5g4$J1hSϾy<mMܿ�O8X24I=É'|>8BFpB!)a1[Wx|"A ɀӻ+n?Z1 62 8X.8^^FEs7`ʪ;|Ί%Verd2a$1BjK#/]G#hpUY)\ʄI$\oW}8oA _\*E S 4 %E /2^%ΜF.G9awp"=ImӶ=GݹY]kO?4]?p=,x5VsK $AkN1 ޵hiТFI[ EmK(B}=;oq`圇gkLYCo iGhA ROt8H!в`V1s\ؠaDH0kMʑo!YDx=+ Y{'<ާ8xfv*V9b ;T@ ȸ`aPHIB5.%:\)kE$gu "Xn!:9C.k3(Y̥ܿKW>Zl!m؟?}DB l7[( B5Czf*-٤6ﲿcny{o2g64a沞1޹󈃺f"&JVw_g0)RSQ3gYZvd迩h1Iq(B:DPQHޑsH2HIx&~I7xJ<ɕyLq($:[r*Br,"c ZfF@<%8@0%{vY"tɑ3X;%n#3 9ц84|lζLiJװ4͎~`q)uRfNN<z ]a6;$z. VeB7s Ǜs^X4LԜ|Ϟ-o0U](Kv9=Q9s+!{lQBo:;'Cw]x}B` ,9=zՒbILf 0419{\$?ƱKKBXb?= G4DH,%IfrKґ#!nڴ᱿#A Īj=[LmPx[r S.D�!FlҼ]r˜MpTF"yp&EG"S։JN? QCboFH/lZC;v-KH@po ՒK{D(,N.!{D y`chJ΃O`Xw1'i2_*Ce Yr=޾ics}E !4դ@3Rd1.VH| 9%>6l�i`2qeR]ءL4fZ0jtiq>"}�2;1*V3֎̄DIn۰x%Ryd)$pCs~8a^䤥P54 j.]8jYߓw z*>kJOg(U|:e:}GO[є)C(kv(6JPrl hNc")I�%IZPLjB4NfOOf+yu!_LηH)h۱ZMab-"U %Z) (+W*v9)︜ojw5aIL&>e909 pyGػ1ǻ%R!4}&)IkfH%�Ak ]Ç9=]s￲[9sZt,J''0zvz2 >PdJAy#B:!JJ|)dJH-2Lܻ4֪$F}ӯAArx! Hix1ٟ#3L^DwE1P(J}Įy /^ ҐGok*rtD%5RL nj1%Qpzy3kTo&!O?{n7NTo8Ĝ"씗>a [O?$)c}^{aFf#Lb` P=]&k?F%?7_"KL#);L%{CZRAN)˱'5nՊ^$ n_b6ɤqt`^7R!/Iiyr"HY8aD�Bf˿&oz:R?F D֛SRՔj$J)RU5ڱpE-Ѧ?c2F^C%h!Ø FB@}| cR:2RbW;!Y@:BڕޙD=-y4ghr찦 NH R^9ƧO)u1cAdAhÇ;_=cT9rta;rĔRJMi3km.2;WFs-}}B 1%xnj HCw�(爖&]T<@U�y\Rv|wv3@N(5v�ƗwJ "Eя^g1GQ4x:^Ɵ}\Ҕ�rOqgk'Gos����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/icon.png���������������������������������������������0000664�0000000�0000000�00000006461�14115753270�0022575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATx{tU՝?}ι&7/H"h <#`)H:(*c؁:mZ]8Qg]3:Vhcb@I(` o@ g}6 c01 ݻi@5[jk2*n[̻D$hG[Go(pl"N̿]_hb٣䗷L>}A\n?rc n* tc]c�{] '߿F@7ܾuHD̼[GOeO�]gx[�U%_׏ qbۓ2ibLu3jb%_u\xwCqz<oqfrPUEDt0yG|܀9_4jE{']N{~0+wlC\s* t57xv " Bm5O j|_86m"#iGό�bu.:4-L]YsPՃMNvݰ>1[!q>p1jq^۾g\}#"P˖{Emod �sU8+gPmN+)HV`'*rF` <yBUL*hQUOebjHD|[�ZܗM(1Oz`ʁU~=Uk2s"}U�F>KN)ڀy@FZ�i?R uRKm@V)7�d > ..�D!ٳHPU]v��'tlXWۗSF�vہ7TyhzB :ro61`u),U , zH' شr�fiݷ+j{!OD~Mi֮wj{T)qhd~g�8r&"j�p\7@QEdWw v6>b lj-KXNݢ ra6C;ALD_j:!zlQr׆oϪX-4g$!&=uM{~xiI]\`\]zů}q'7t4/yiWQ+國/vꞾ+|Tޒ\:m9'+_ /PjU QUM|f jV&D헷WTAMćM/*ۏj_fe0զv}ސ8#'ΐ 4bm2H{Kz/7֑Ϊ@,brnjr)oLRB�"m#Aj _6?/֟m9ଙx^ X3+m%T\läKZ8yvHPD;z?62Uo@1UsQ:g_X_0sCE/ŻMZyaC@D$aԄ'|I8rdOuOl \.؛GUC5:)Ƒmmz6g߿z}V'^Xs` pWPJA:M3_>]/[<x%+hǁ=UeseWtG3d~[R :j? _� ` u/ R'`hƧ>W0IUEmUi; J'd@Uq\ťVՒU8Ƹ.x~KZK֨4N�@֯Ͼfd^lA$1̺K~7Qo/c|2f,Yu| Hċ6n~A @CRv! r(Dڎ<ODoܟ̀! Ͽ!SDg '9sZ i;DLѠM`<oECs�?<v~dQkcVU?T(Ew̜w}hW{Nǥq&mkܽL$kQ\4jto\}[^Ӗ; jR&-!xL)hxsV_T ${D~iA7=ݼӛim9~z[`1NQMf~* c88zǔq4&,|}U҉>ӣ*TŸ.Dĸz.8Mq<iJxnR*xR5Lڭ݄?+oeAT]u#̂8vA-vA/+WꚛUTZ4yэXWyՄ7zp\Uŗ+?s~lt1ijJnIy?_EZL^m^/#h翨j[9.IڭKYS\_hn֗[xOc繈MF<X<0!z&Eē68n:IFc#x>cq\Ak-qq}⌿|yL^+5 GB>U-Z f5W/ y_^E(YL뵨pZ9sɕWjnN:}44][*gjuU^zZZR>U@vݵ:iDtrg)5K輹sЙ:HTLƬJ;p~Daa!O>4{㎿{iim{ѣGwWpR1m:555|}ٟp=woή,YBNn֭`!Ϳ`ҤI|绷q=˂jV^Mf0f<Gj'Ҫl"AKK w裂p8LCCeee,[W_}rJJJB+xnj3R]<uC+Wd޼ycΜ9ֲaۙ:u*�۶m(,,XB|79qƍGSS6l  xbسg�AD#Fp#9t10vX�rssFcx))){uֱtRǝաUi  ٸq#=�MMM}L0Zf͚#<BAA XkYf ;<<,ZCq㏳vZ***Ddv8p�>(-bӦMB!xghlldŊ|ڂs0zEYV-K#Cl ℚ?ޱ~7Ni3ڠ͟a c 53l����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/rainbow.txt������������������������������������������0000664�0000000�0000000�00000000321�14115753270�0023326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������1.0 , 0.5 , 0.5 1.0 , 0.75 , 0.5 1.0 , 1.0 , 0.5 0.75 , 1.0 , 0.5 0.5 , 1.0 , 0.5 0.5 , 1.0 , 0.75 0.5 , 1.0 , 1.0 0.5 , 0.75 , 1.0 0.5 , 0.5 , 1.0 0.75 , 0.5 , 1.0 1.0 , 0.5 , 1.0 1.0 , 0.5 , 0.75 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/wall.jpeg��������������������������������������������0000664�0000000�0000000�00000355156�14115753270�0022755�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������JFIF��H�H���C�    $.' ",#(7),01444'9=82<.342�C  2!!22222222222222222222222222222222222222222222222222� "������������ ����}�!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������� ���w�!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz� ��?�l 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>nl-}GX@ $`ϧ?SYy d'#ּM1|d!` bpO}>m.fď-EA2p\1ZCFvz/0Hpѻdvpiug[H!^M$c@69PߪM2l(xYjiʰ(`n^Ι 2ɻ3=J",b d3F`϶]va)|G)�zB[R*SJ:5{˹q HUTCq==՝5TdI`G{v1*RN~RI=W!xY7.ݹ-`r*.p] e ;L)rz?q(8%VL=}sbWEK*-NSLuޫB$%%8�py;8JW2"[!e,qsYL~ m2 %y3@ q�YjiC9WmQކݍ!k?:zwPLdP1#v}=qwu͑$=>/`o! nKrxivegs6$ym,ׁ? wqrT4SayVCܗU$st{K>ZF ň,03� m$@C y Ri#aG?NJSUKM^U!G #=ȫvZnt8]tƸ1M܁=zTiff �$0=k}켓 Ku"9H~ ֪zRVɫ]ȏ+G}9VJ$JK'? XTĒvI?Z lh ɹvlH'qQvSl]_Ms/ aKx�(5{A,g럧S /YUlrc>^ !)(!�nUڹaܩ 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>6i _Q!#,*c";þk8,^l>Y%o,I0=H!{|_X6rXOK{+;#oelv cW3VQ& "D4n亨##]GY5Hdf,A`1קSl`" g sT7L >@1tzVnzZl$( <n9'9E[׮sF5|yn AңH35xX8$сsX3e䝤J_@#^PԊҵM^Dy\H=UvOzgxzU6"RX=?ư]r &$G_OA:^+`@VM˷nKdrA8󊋲CbhÙ|S \ޟAEn fp8=_\:Ÿd|ʭKd'ymP IA��N;tҭ̣Haw;eqdCLev3}~Ila8?w>w�VDڤmpTc9cHZgT$ HݟO\~]Fd�edA+ybOqGy46bB?#|]Y͉[x+ddjb܇*y5X^a w%@�x9:ϖ*C#1b  ?›ek6I@m9s¡TdQhӧҳsRa%ץaEHQq=q_*ݖp5۝27]1ew gz^DYA8$g_mĻ/$&RHR^Tu2jr#@(_Nz{ի;kҩ 5c(U11$:z֮B[n]r[# �T]WFl@vR6�5J E^+vPpK39z~-$Un2[$9>ϽWjHJJp�w6q۠meD*C ˹C.X( &eT#-ZKffyA�Z&&o(&s ڣϯ8' BҚ8Ws mS0:�sPj(!k GG|T'Ƨeh6nĉ/ӽ0xS&ZcuoJ88U8Bv[^/4:{HX3AVxק5]xD_]:Kima}qC.ޟfۜܧ>ճs;P.ajU}rOgY+G~c4BVA A3M!V"}J"K8Q὏.0BB{|4^ ̑G !F0H~~֢V4u .� �\jv M_ƶy fb/Ï '65Gjl"ʝr�SJ dS a<mەDt{t5́b_.15lE{zH|#C.50ȸP�n:U$HڋDݑ�T^(^:}olf2qf�<|ϵ`䤧F@\yThc<n~Yx ծbH3$r|J-Y2.CrkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qCT'eCJCU;daA<zs]׋4HLuӤ&7 G=>!ks@[7>ӵQ Fq~咾{3O4%d(R <�I#?h'Ԣ$ lU~~T,'3N{/<qITczwj}/{j%cA|_P�ͼ�u϶k?t<knїBa z]8)|#c\.;v_ Ar!Y/..JJg(�4fL9jж<,MQMg@1N:gC[ ;%,#\t^T:1Yc ]_ hD>L >m=qK]bFhA.nzAo9V JJqdL ǙKv3Aq5  -Z)2G'ϻzՓ"t7&h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN88Bv[^/4:{HX3AVxק5]xD_]:Kima}qC.ޟfۜܧ>ճs;P.ajU}rOgY+G~c4BVA A3M!V"}J"K8Q὏.0BB{|4^ ̑G !F0H~~֢V4u .� �\jv M_ƶy fb/Ï '65Gjl"ʝr�SJ dS a<mەDt{t5́b_.15lE{zH|#C.50ȸP�n:U$HڋDݑ�T^(^:}olf2qf�<|ϵ`䤧F@\yThc<n~Yx ծbH3$r|J-Y2.CrkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qCT'eCJCU;daA<zs]׋4HLuӤ&7 G=>!ks@[7>ӵQ Fq~咾{3O4%d(R <�I#?h'Ԣ$ lU~~T,'3N{/<qITczwj}/{j%cA|_P�ͼ�u϶k?t<knїBa z]8)|#c\.;v_ Ar!Y/..JJg(�4fL9jж<,MQMg@1N:gC[ ;%,#\t^T:1Yc ]_ hD>L >m=qK]bFhA.nzAo9V JJqdL ǙKv3Aq5  -Z)2G'ϻzՓ"t7&h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN88Bv[:\.. />I&c.Ubv,FP<c_sp6 z\XMy4~�I@�>w+vmPs 8?ϿEK&k W؟{e-`+8@XxRE8)`tךkRy]zkA3mq~2�67Vv'�$Hůn4P8>zGI-.<qR[0F2<s$9?E۰4Hm@U:T-!Aq0H 9 6͜zLU.RCg�[bA 1WV:e#iHو PGqӟңqA(v=V\\d6[$1 t fM7<s~_JkI P,I�#99?}kKŜO<Pd6:2G^⻝kӴQy>ϯo<ׇ�&fT+�9ڴƫmp*F$Uر@:}~ϫʗ";`3h7qra7 ]f'VOGrmwheg8dTke}ͽ?.GV]Ä'1pq$]ONy'%׭|ƸKx6;qX~ /Scpegiy; b@tZ 3H铁휞篤~(E*\`##<HSc]J$Y$�Qc~B�iǩ\Nu)+</>x qUq.+n cucZ2;+f4�py9*;+h\lci?f@eCOaVakt{}9VL{d ěP<cֹ_ =Ĺ,YSp Cc$u+濝;E�Sxp >,O2oaB ANJ[jݭ .lϩIX˕X�O#\{?( <FwAW-px%߆`q?ϥdw+vmPs 8?ϿEK&k W؟{e-`+8@XxRE8)`tךkRy]zkA3mq~2�67Vv'�$Hůn4P8>zGI-.<qR[0F2<s$9?E۰4Hm@U:T-!Aq0H 9 6͜zLU.RCg�[bA 1WV:e#iHو PGqӟңqA(v=V\\d6[$1 t fM7<s~_JkI P,I�#99?}kKŜO<Pd6:2G^⻝kӴQy>ϯo<ׇ�&fT+�9ڴƫmp*F$Uر@:}~ϫʗ";`3h7qra7 ]f'VOGrmwheg8dTke}ͽ?.GV]Ä'1pq$]ONy'%׭|ƸKx6;qX~ /Scpegiy; b@tZ 3H铁휞篤~(E*\`##<HSc]J$Y$�Qc~B�iǩ\Nu)+</>x qUq.+n cucZ2;+f4�py9*;+h\lci?f@eCOaVakt{}9VL{d ěP<cֹ_ =Ĺ,YSp Cc$u+濝;E�Sxp >,O2oaB ANJ[jݭ .lϩIX˕X�O#\{?( <FwAW-px%߆`q?ϥdw+dQ`x8ތ֯}UX, g4jϨ iY&!x#*O~*vS 8+kEX7R'O$<w O^~u6z; (~tw]z& ^i^ǥOkie&>BǎzqQReB;FO3+!Fb>C1یEoj^c$`|0rM-ږqyN׊촯*h$ .Xę+vW)E+&bW% 2\n�Q]BlC-z'7KE3Ԟ^7_cRp7Tr�KF ׹sfM7K)TuY8ZԱd;xU.?Pq©�w yPq0;w+/jNRXOn:Kgѥ8"6 ddr~Q!]ڙ hTvSO9!p=O/$U�v=O�v}-$kVhDz�)PWRe"-B_Wrb0 <dqooFkW*eZYQ3Tw?5pgc4ଓdqa'|?tm;)HOyuZ-jͯ7R'O$<w O^~u6z; (~tw]z& ^i^ǥOkie&>BǎzqQReB;FO3+!Fb>C1یEoj^c$`|0rM-ږqyN׊촯*h$ .Xę+vW)E+&bW% 2\n�Q]BlC-z'7KE3Ԟ^7_cRp7Tr�KF ׹sfM7K)TuY8ZԱd;xU.?Pq©�w yPq0;w+/jNRXOn:Kgѥ8"6 ddr~Q!]ڙ hTvSO9!p=O/$U�v=O�v}-$kVhDz�)PWRe"-B_Wrb0 <dqooFkW*eZYQ3Tw?5pgc4ଓdqa'|?tm;)HOyuZ-jͯ7R'O$<w O^~u6z; (~tw]z& ^i^ǥOkie&>BǎzqQReB;FO3+!Fb>C1یEoj^c$`|0rM-ږqyN׊촯*h$ .Xę+vW)E+&bW% 2\n�Q]BlC-z'7KE3Ԟ^7_cRp7Tr�KF ׹sfM7K)TuY8ZԱd;xU.?Pq©�w yPq0;w+/jNRXOn:Kgѥ8"6 ddr~Q!]ڙ hTvSO9!p=O/$U�v=O�v}-$kVhDz�)PWRe"-B_Wrb0 <dqooFkW*eZYQ3Tw?5pgc4ଓdqa'|?tm;)HOyuZ-jͯ7R'O$<w O^~u6z; (~tw]z& ^i^ǥOkie&>BǎzqQReB;FO3+!Fb>C1یEoj^c$`|0rM-ږqyN׊촯*h$ .Xę+vW)E+&bW% 2\n�Q]BlC-z'7KE3Ԟ^7_cRp7Tr�KF ׹sfM7K)TuY8ZԱd;xU.?Pq©�w yPq0;w+/jNRXOn:Kgѥ8"6 ddr~Q!]ڙ hTvSO9!p=O/$U�v=O�v}-$kVhDz�)PWRe"-B_Wrb0 <dqooFkW*eZYQ3Tw?5pgc4ଓdqa'|?tm;)HOyuZ-jͯ7սp;4O”S3׸ie+ J9Ƕk?PO-dX#T)8@N;�+2b(2?iH⧗CnmF/Hݺ1� tʴ0L13an8_~\U5nFV 0l�z= mR�ϯsMS󗐴1)UBC #|p*[1$2K!))�ڝc 3Juym(BrK�Xm:<r1*d #PÝ$y /ȷ dn* +./d;"yEq{0=+h( q2ٟ~HֺbmtQ`GVT'!\GOoQ[Z4K$lHz3�Oo<"G;>UeO5dY"rAp8 p@NA!;hLӕ�8DHke[+|#3 %Aî*Ko qKn]O]n!~t@<8zUBj @�4)E8={L[;"ٌ{f$E5A򓌜13&"|#6on*t5hD}ۣ G@NyA-- #6GXxcXe`9]`^?!� <ne?9y CT$9 8' cC$B=:`4Y'$8<�KVs#M2>z \9G@يp6Fq퀢I#['[(w ҸYPc+pq䎘k-7J{eeBr {dtsN᤼IĈ`g=�߄. |$ysV[tVI%!XG$ߏn٧ -cT�,6t9Y�N1dl\8U30QqO,:4\]/۴ێzo"H1JT!Ƭ^p;4O”S3׸ie+ J9Ƕk?PO-dX#T)8@N;�+2b(2?iH⯗C^mF/Hݺ1� tʴ0L13an8_~\U5nFV 0l�z= mR�ϯsMS󗐴1)UBC #|p*[1$2K!))�ڝc 3Juym(BrK�Xm:<r1*d #PÝ$y /ȷ dn* +./d;"yEq{0=+h( q2ٟ~HֺbmtQ`GVT'!\GOoQ[Z4K$lHz3�Oo<"G;>UeO5dY"rAp8 p@NA!;hLӕ�8DHke[+|#3 %Aî*Ko qKn]O]n!~t@<8zUBj @�4)E8={L[;"ٌ{f$E5A򓌜13&"|#6on*t5hD}ۣ G@NyA-- #6GXxcXe`9]`^?!� <ne?9y CT$9 8' cC$B=:`4Y'$8<�KVs#M2>z \9G@يp6Fq퀢I#['[(w ҸYPc+pq䎘k-7J{eeBr {dtsN᤼IĈ`g=�߄. |$ysV[tVI%!XG$ߏn٧ -cT�,6t9Y�N1dl\8U30QqO,:4\]/۴ێzo"H1JT!Ƭ^p;4O”S3׸ie+ J9Ƕk?PO-dX#T)8@N;�+2b(2?iH⯗C^mJs$B$>yM@c48ZIΝrѣ Rs #>&v:p;vų~o/K)pwSi>N-paKaF=G\Ӽoq3ʧsOxPY�801SBuވ죊TXr0 esҶeI#1G1\v7☍CR#[tܒ$aVP|{ OZ 遳Gd3ǺWA#`bPN>z;q� Y(,]?=1ד!hSׁn,T��=-3{&ؼֳApMe,Îr�V.3,[D$ۅ w'8UX-"۳JS鞽~{i-͇P̃dݐgӥc_2Ba:L+m�-ϸ:uR>gMt.D0ܸ8=뙷~&Bvc#o'9� o%U?ho.%n9"i9`K~z?ZZ2BQf뜔 Yh:uz$B$>yM@c48ZIΝrѣ Rs #>&v:p;vų~ot67\xT}{ϧӭhK$%<(~RQQ{{ 4mhmaL4r5rÞ3y�#e6T;nНh;(,;|\~tEo,RHDBGQWMx#P𔷁>$9oU<F$_`l~*:`Hއpx�Vq?J1m rAn+u7Z+aT3~[��zKo ɠiv/5AyaKp㜾է#qK乮:d# 6C]=V?)HR8zg~coZrKsa=F81 0;wd$t9XLN< @ s3xԪO:sYt;˻x1;c 7. �0Ozm߉r¹ xO/tˉ[HNqߥ^LDٽ%gVZdI$vI=^}*Sqq4A(X!N}k|b\hpTHϾ=gݭΜ<]lx߷~j}o İM~6^3Z O7 6c ;ZXm8 y8 \y!8�YA㍣�c>۴'Z-8K_-/#_?+jQ[>Ԓ?1{jSx)<%-a5gO )rFUi57p%8럯4{6J<{E{6+c+՜wҌlBܐp! ۊy<Mxn<x2@�޽7h}k4GXFR|8/iRc9.kΡ5$HMPrs~Ur->1:ߧXV}Q% |6LI1F}:V5$&6^>*?h\t'N?LN ˀH8: ޹ywd n26sf^5S6V&vW񅥬S.%(vo~@*Y'<I1|d.OCןJ\MD <3HSz1Z嬴|-0.�U'83bk@Y7ks.Cl[001;wߚfxCk1,|߷M׿L}:քBS-緽rNֆtG*A><CW,|9;=AgHN�<PxhO ֋z#)RceJڽVϵ$dD |uqڔ'b5 Kx|nrH sZMClbEMp)>\ j/:͒C^A8x5g�,nбw$H8@^OxO3;^ P��DgbZ779�Zr7K賨MoI:n8%ܜߟUc򜴋nυ*ALczV=U$6ccC2 v@RGLsN~>$ 3pM�>8׏J#57IӼ0r0xf]!۩'+TM䉤-Ulaikˡ DJ>]߮rP6{ eeInO$L_h ҥ7D �Lgֹk-'*_:uF7 I8$ؚ~;ːe nwپ/J2wP˖ _89ɦ?l6U~gVټÙp~ }8�֬I! +6?s Ib!k?:zwPLdP1#v}=qwu͑$=>/`o! nKrxivegs6$ym,ׁ? wqrT4SayVCܗU$st{K>ZF ň,03� m$@C y Ri#aG?NJSUKM^U!G #=ȫvZnt8]tƸ1M܁=zTiff �$0=k}켓 Ku"9H~ ֪zRVɫ]ȏ+G}9VJ$JK'? XTĒvI?Z lh ɹvlH'qQvSl]_Ms/ aKx�(5{A,g럧S /YUlrc>^ !)(!�nUڹaܩ 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>6i _Q!#,*c";þk8,^l>Y%o,I0=H!{|_X6rXOK{+;#oelv cW3VQ& "D4n亨##]GY5Hdf,A`1קSl`" g sT7L >@1tzVnzZl$( <n9'9E[׮sF5|yn AңH35xX8$сsX3e䝤J_@#^PԊҵM^Dy\H=UvOzgxzU6"RX=?ư]r &$G_OA:^+`@VM˷nKdrA8󊋲CbhÙ|S \ޟAEn fp8=_\:Ÿd|ʭKd'ymP IA��N;tҭ̣Haw;eqdCLev3}~Ila8?w>w�VDڤmpTc9cHZgT$ HݟO\~]Fd�edA+ybOqGy46bB?#|]Y͉[x+ddjb܇*y5X^a w%@�x9:ϖ*C#1b  ?›ek6I@m9s¡TdQhӧҳsRa%ץaEHQq=q_*ݖp5۝27]1ew gz^DYA8$g_mĻ/$&RHR^Tu2jr#@(_Nz{ի;kҩ 5c(U11$:z֮B[n]r[# �T]WFl@vR6�5J E^+vPpK39z~-$Un2[$9>ϽWjHJJp�w6q۠meD*C ˹C.X( &eT#-ZKffyA�Z&&o(&s ڣϯ8' Bu 8 ȡ 8bFz5=N '-"I[{R=k|^#B ܖ'�lHY[$ݯ'�~U8Thgɪ .HhQ|aRX `g+X!H0:h< F+G~>?^ ., *B0 0F z�V끮鑼ppc,=3z"o"I#?t`z� m>%y'i6DrT%"4cWWaEUD?7:sޭY#^MHoO/cB%-1$Q$Nr,rےN'غ0_+b— �Pj*[Yd9s?N+qn$_4q$1^}T-BRPC�'ms(%Rf]r@g54*o݌?~߀[7s0;�Ց66xD1A3y}}1=mM<q»eIjלw}kPA]0R?/=x;?5;+Fw֡v$M̡~>03S|Tp= w"~]F* ~9Ś$& :[Kh  #Nzv59 vځv{ UOʨ[rx#8 ?r_b=Ś|r �$i QXx|Ƕ* |av?* [=Hnd8Y*1G=;5>/˨Yu��fO�UӵVw:j5hȡ0{=x~xly>X~;S`/ %O%VT3��ښPW&Rh[ Hݖkh&ܨ&3玧3ۡd qp{e/֪CqE€uQҮ4i"DVZ&6.BY{c4O d{7lw=G样}O%%82g_vCw^CoXsA#݌RQjɑv]4Z\ a$ pF^qjm@[:v`H88Zmؑ72ws\nqMQ'cWr;-U؊=b r ӚYB`ӯ%0ѾXR8iO \XSBojٹgXU'3,#޿1|Y+ QGʐX I�&@@>%g{bfos`=au/QyHM$sӿsS{ܿkQ+ � P�mx�}];Ygs[v3 DZ׊džMדqg#6b yqrTUeN9@}{2e)VIfmʏ"m:xq=Y@/a[=j>! d\(7P}*SF$ImE`In�*_/r/u>73DvGvsj y>gڰHTRS# pF?je_n<*[1O7ut?^yeYj1H9>}N{%k5EpR@ڧ`u�ZkvPCf ^3OÍNѝm݉s(_Ͽz`.<L.7*Bpq8w*~]F* ~9Ś$& :[Kh  #Nzv59 vځv{ UOʨ[rx#8 ?r_b=Ś|r �$i QXx|Ƕ* |av?* [=Hnd8Y*1G=;5>/˨Yu��fO�UӵVw:j5hȡ0{=x~xly>X~;S`/ %O%VT3��ښPW&Rh[ Hݖkh&ܨ&3玧3ۡd qp{e/֪CqE€uQҮ4i"DVZ&6.BY{c4O d{7lw=G样}O%%82g_vCw^CoXsA#݌RQjɑv]4Z\ a$ pF^qjm@[:v`H88Zmؑ72ws\nqMQ'cWr;-U؊=b r ӚYB`ӯ%0ѾXR8iO \XSBojٹgXU'3,#޿1|Y+ QGʐX I�&@@>%g{bfos`=au/QyHM$sӿsS{ܿkQ+ � P�mx�}];Ygs[v3 DZ׊džMדqg#6b yqrTUeN9@}{2e)VIfmʏ"m:xq=Y@/a[=j>! d\(7P}*SF$ImE`In�*_/r/u>73DvGvsj y>gڰHTRS# pF?je_n<*[1O7ut?^yeYj1H9>}N{%k5EpR@ڧ`u�ZkvPCf ^3OÍNѝm݉s(_Ͽz`.<L.7*Bpq8w*qu%U9|<9=ZI5+rb62 $tkW/cEvgnՈ=*nN2w\ԶX{l3HY}*Y5XTޟ#}+.m]pTtڒ.N^Z־c\%r hcϸ?y)x< }M:F-{tGڀOs?Iiq@".Zق0|I$)ϱt.݁ttCo嬒�B1ԎJi @�IQlbIw:`<8�^8`G \d-啳OoFDHJ8<㎜S.h6XG튴ݳ yY!^0nhI>U+X&WHbYbMi1Ax\\,x)F S!:_Ν }{8'7{0\w '�Nե-F5[hKԗW`6�i$ԬeʬNň�'`v}^Tqٞ#AV o<F0@ 8Ҳz;KkE( 9ą"XH+Omr=Ҳ0 , <qKK"p0:zu5<.k5[ 8?Lm+;Oi�{Ӥb׷HQD}OL l=}#$8D)R存# `9BMWGA$6Z *n�H$ N=O*zsHY}3{�1v�yX {uOk2ёY[4lH#8Q[E8Ce|n pp;ثH..a2-:{  [d؞s9?/Rre{$(e$ڀFǎ>ny%b'bk`U2@#q]5(}׷zkÀIby~*r p�ZRcUlt\]Ipv_#`}O_֒MJ\Xx >ZgKGm4bJli.3�}+'\ԶX{l3HY}*Y5XTޟ#}+.m]pTtڒ.N^Z־c\%r hcϸ?y)x< }M:F-{tGڀOs?Iiq@".Zق0|I$)ϱt.݁ttCo嬒�B1ԎJi @�IQlbIw:`<8�^8`G \d-啳OoFDHJ8<㎜S.h6XG튴ݳ yY!^0nhI>U+X&WHbYbMi1Ax\\,x)F S!:_Ν }{8'7{0\w '�Nե-F5[hKԗW`6�i$ԬeʬNň�'`v}^Tqٞ#AV o<F0@ 8Ҳz;KkE( 9ą"XH+Omr=Ҳ0 , <qKK"p0:zu5<.k5[ 8?Lm+;Oi�{Ӥb׷HQD}OL l=}#$8D)R存# `9BMWGA$6Z *n�H$ N=O*zsHY}3{�1v�yX {uOk2ёY[4lH#8Q[E8Ce|n pp;ثH..a2-:{  [d؞s9?/Rre{$(e$ڀFǎ>ny%b'bk`U2@#q]5(}׷zkÀIby~*r p�ZRcUlt\]Ipv_#`}O_֒MJ\Xx >ZgKGm4bJli.3�}+'\-ͮ%�%w 6#�I6f{ﲪX契e?ϥGysW}F8]N 6G VxGAVOò4Tg_Q[Z-jyUz<y!۸m rz#9L؅ a@,s uBHY6bJW=*xXēK.5qb<w%;ӊz/h6zyY6k u qb/HxV#Q 'Jmt oVԶ#[u(~�NWediVcDе& Mqr$\�# J)X7{6֖I((Tw�_*b6lHX�oƱ<E\-$FWl!(-�Z|1zぺm*_֢0V˝W{46/i\H W??Էx$qAvOOdk _0A۽_G$QYxPrƲ~[v׾j_/FO?tC<V-i8y�$#$p=k𞲏 E"s2y @y"޿wv�/;xW4 h~I'=ܮ\\:F=`qN.ijU�FI${\z3ZUc,rȲ?ң9>.d# c <#oOߚD*3㯨kVmyUz<y!۸m rz#9L؅ a@,s uBHY6bJW=*xXēK.5qb<w%;ӊz/h6zyY6k u qb/HxV#Q 'Jmt oVԶ#[u(~�NWediVcDе& Mqr$\�# J)X7{6֖I((Tw�_*b6lHX�oƱ<E\-$FWl!(-�Z|1zぺm*_֢0V˝W{46/i\H W??Էx$qAvOOdk _0A۽_G$QYxPrƲ~[v׾j_/FO?tC<V-i8y�$#$p=k𞲏 E"s2y @y"޿wv�/;xW4 h~I'=ܮ\\:F=`qN.ijU�FI${\z3ZUc,rȲ?ң9>.d# c <#oOߚD*3㯨kVmyUz<y!۸m rz#9L؅ a@,s uBHY6bJW=*xXēK.5qb<w%;ӊz/h6zyY6k u qb/HxV#Q 'Jmt oVԶ#[u(~�NWediVcDе& Mqr$\�# J)X7{6֖I((Tw�_*b6lHX�oƱ<E\-$FWl!(-�Z|1zぺm*_֢0V˝W{46/i\H W??Էx$qAvOOdk _0A۽_G$QYxPrƲ~[v׾j_/FO?tC<V-i8y�$#$p=k𞲏 E"s2y @y"޿wv�/;xW4 h~I'=ܮ\\:F=`qN.ijU�FI${\z3ZUc,rȲ?ң9>.d# c <#oOߚD*3㯨kVmyUz<y!۸m rz#9L؅ a@,s uBHY6bJW=*xXēK.5qb<w%;ӊz/h6zyY6k u qb/HxV#Q 'Jmt oVԶ#[u(~�NWediVcDе& Mqr$\�# J)X7{6֖I((Tw�_*b6lHX�oƱ<E\-$FWl!(-�Z|1zぺm*_֢0V˝W{46/i\H W??Էx$qAvOOdk _0A۽_G$QYxPrƲ~[v׾j_/FO?tC<V-i8y�$#$p=k𞲏 E"s2y @y"޿wv�/;xW4 h~I'=ܮ\\:F=`qN.ijU�FI${\z3ZUc,rȲ?ң9>.d# c <#oOߚD*3㯨kVmy٠~|t[K-XUZUd =Yyh"INxq]@VyVNrG~<sj4 |EьOM'<Uf q#<1Kt 2T`T.[m/ʐ}}sjl72JϐHIc Wܱ!Y NH�0iSlyGzXĜ�?祫m9㑉S&@G=Gj#~ gQ~E]#qV8Q^q{$--;\OKE],@K18GLn^ʋ=9 p=:{zzԹop^I$bD0F3q�o{y^P>O<q9-y$H,G#ǷlӄK*r Ef'2Gsxs_K*[I(8'qW[xm.]rzO׽sw vU�qCҪV/^MJ)wJeUXN`5A',d灏'�ə1 ga$w{{qWˡ6@$[̀n:sZ no&haܷ/?.*ķ@+H6�=A?EB�g9s)yZ!>n�8x_-%\N:<ǔw9%,IzZӝ92lysvjΒ<~U[7clI<Cnp=DUϔ [lϿ$t]1oU쨰#+*pW#wKv %H6$Cl=�'pLE#w^*ۧI, dr9 {v8Ik }§ LwMaa^ki�"q${g?5IJ\yay8|7.ݧt{7{y:GiZUP t=* n5b٠~|t[K-XUZUd =Yyh"INxq]@VyVNrG~|j4 |EьOM'<Uf q#<1Kt 2T`T.[m/ʐ}}sjl72JϐHIc Wܱ!Y NH�0iSlyGzXĜ�?祫m9㑉S&@G=Gj#~ gQ~E]#qV8Q^q{$--;\OKE],@K18GLn^ʋ=9 p=:{zzԹop^I$bD0F3q�o{y^P>O<q9-y$H,G#ǷlӄK*r Ef'2Gsxs_K*[I(8'qW[xm.]rzO׽sw vU�qCҪV/^MJ)wJeUXN`5A',d灏'�ə1 ga$w{{qWˡ6@$[̀n:sZ no&haܷ/?.*ķ@+H6�=A?EB�g9s)yZ!>n�8x_-%\N:<ǔw9%,IzZӝ92lysvjΒ<~U[7clI<Cnp=DUϔ [lϿ$t]1oU쨰#+*pW#wKv %H6$Cl=�'pLE#w^*ۧI, dr9 {v8Ik }§ LwMaa^ki�"q${g?5IJ\yay8|7.ݧt{7{y:GiZUP t=* n5b٠~|t[K-XUZUd =Yyh"INxq]@VyVNrG~|jSI$2i'ϥJn.&" )=}ϭrZOTt떍n�*pIDZ5,wӇ!˶-_}}bX&Ko O~u o䄧[ 1?oz{ 6U<}xXsvz<�x,р1gmGeRu/˗/ӟΕ{(jIȈ@=)Oj039# *ċR|_L uך=%TQ=" p1[ێj;�F6XmbH8qy& El<7jfvtb�^m4 >浚#o,#)`>ns�Zn)u15gPL$ua&(pK9ǿ?Ҫ9iݟ TOL{ NInl>Ǩ>d&n쀤#>+|I g\hn}qӯZIG_k:nywo&'la$` \ͼ2CSy9OW3}/Eyq+qI;[)B|7\l^AӬܞI$2i'ϥJn.&" )=}ϭrZOTt떍n�*pIDZ5,wӇ!˶-O}_C R¦ߦ}>kB[!)FŒz޹xkCk gO x?>񝞠$'� (<q` bvEG`K`@m^+ygڒG2">b:|bJo1 >F $9HJ&61"&8.pgsfU!guHtFx }<vw�Q7[hX$~ {q^c'B[ ڧX��{ע[xfMOyfX�֭9]Lg%tY&$XI NqNZEg• 1S={+~*Ӓ[1ġɁۻ )#9ϧJƿdtW8&�[qt֥R}Λ]ap <pA{3o.LFNsxKƪ~{\JrDs*6~0eЄ%.9(=Wt$7'I&/ I}RBdži p_3\/:F F}Mh ?ntw2f7nSsomf%o;OZЖHJyQ@i7nhS9'j叇<gg, �Gmvݡ:oDvQ*X,wRly29[WY;RLF)o:}INs0ҫIxH 'ˁ-\\yٲUHuR+ 1^('u]�~ce.䃁 WoVwgkA*��@^kY8&29|�NFSs]u "GVm‡{*~SmH)q^? ǽߊzq(cA`v Hr3ұę!0&x g:TADu泦:wvbvn\A`˿!;u1�s7񪟴^鷗4%J --bt!(G˳{JAU쬴:=MI!vz~Th PB-eKNhцp9|{Zq[8yr̻bفۿn7:Y`.*m>gִ%nl?)l(Ǩ�=w66ۦp9Tqc <Bp�ಃF�*}hN[qJ Ծ[.^F N:V좷}$~c"!#+Ԧ<SxJ[kpΟ{@S7j#c/ocIKW}06q?^hlRFxTH0$l W oCn8<W8cu BA:x-y?-e�z%od4;h q_?jӑr\EBk}2HՄp.�J[v|)R cu=3׿O±|79%Jl:ctk&HL'IsmN}jU'~~Nݼh�q�t's6ALdm9?\jmĭ$M'8 oүCg KX]J"QsU{+-NOSry$b;@]߯>) ,xf�c>Yi>1RӮZ4a\�Nq$gրnN\s.ض``cp<vۿ5>7}Ts\P:fM1d1ʨF[c?O߷/y�dMM PL^AF1#_LpOzM _Q!#,*c";þk8,^l>Y%o,I0=H!{|_X6rXOK{+;#oelv cW3VQ& "D4n亨##]GY5Hdf,A`1קSl`" g sT7L >@1tzVnzZl$( <n9'9E[׮sF5|yn AңH35xX8$сsX3e䝤J_@#^PԊҵM^Dy\H=UvOzgxzU6"RX=?ư]r &$G_OA:^+`@VM˷nKdrA8󊋲CbhÙ|S \ޟAEn fp8=_\:Ÿd|ʭKd'ymP IA��N;tҭ̣Haw;eqdCLev3}~Ila8?w>w�VDڤmpTc9cHZgT$ HݟO\~]Fd�edA+ybOqGy46bB?#|]Y͉[x+ddjb܇*y5X^a w%@�x9:ϖ*C#1b  ?›ek6I@m9s¡TdQhӧҳsRa%ץaEHQq=q_*ݖp5۝27]1ew gz^DYA8$g_mĻ/$&RHR^Tu2jr#@(_Nz{ի;kҩ 5c(U11$:z֮B[n]r[# �T]WFl@vR6�5J E^+vPpK39z~-$Un2[$9>ϽWjHJJp�w6q۠meD*C ˹C.X( &eT#-ZKffyA�Z&&o(&s ڣϯ8' Bu 8 ȡ 8bFz5=N '-"I[{R=k|^#B ܖ'�lHY[$ݯ'�~U8Thgɪ .HhQ|aRX `g+X!H0:h< F+G~>?^ ., *B0 0F z�V끮鑼ppc,=3z"o"I#?t`z� m>%y'i6DrT%"4cWWaEUD?7:sޭY#^MHoO/cB%-1$Q$Nr,rےN'غ0_+b— �Pj*[Yd9s?N+qn$_4q$1^}T-BRPC�'ms(%Rf]r@g54*o݌?~߀[7s0;�Ց66xD1A3y}}1=mCGYpUE 0wg|QpY?m|JX`z^C 2l8'>6nVw3bG" x8Zgw!JE;=^MVE`$8huP2G?;GNG4孤k Xc?OZ D1 @Ao&6|Z<c5TIueXQRyr0O\se\ vLLkd큞ץFfkxp2Igi.;IR#Gj-ש)kL܈${ *!Ӟjl2D{|#}=`A)iLI'j)$uVfnܖp09?e8.ч2[? RQWݔ+&q{u1_p"[')O:Uڡn�8<͜v?[mF-ʐ2wP˖ _89ɦ?l6U~gVټÙp~ }8�֬I! +6?s CnƐ4h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN8N+W *E1V U9wW^,!0iN[Dhho,)zps˴wYv,w)ϡlGN Zj~UD*\piJ_>,ЕGH,c`$�H|U HR3=Teoc 9PP0:Cs$Q&AQ9߹p_]B˨�6<w�>ڮBWF^Eo؁t `p3ڛ|1ȅd*~A*A?҂2BO$F[A6G6�<u8 l,s Xˌds-x޵RƆKe2.@>zu|)I$0$d`�/w}Οmy̻#Yc?53X$*y))8#?52/÷g-':<kx2^,kR >g'=ꒋVLܚ8Ws mS0:�sPj(!k GG|T'Ƨeh6nĉ/ӽ0xS&ZcuoJ88P⻕ lexPҮP#`XmO?^uu}t-I‘ǧ=o|Oz~enrr;{Vτt@=ƧTB9<wd Yz>T9�H4Z(,C<p>�F_>k0xß  ӭz$72ERl,#g ZX_e,�p3o'�]s+;5~۴ePFn=W@<6 n, ?wx\VKˋ*t�s�M(+ٓ)NZ-O$n5nTyo sS2|K8=U! hdX"@tWWš4"Oj-OvF\`R{wء{ѽ'|˲=ś;P[A>ՂBpy3sS/;qyRݡ~q\cf,EVE ̑rsީ(dȻ] ɮ-.xw0ʒ8#85 [-v0`~_tzwB~jvVCo6HBN};u9auf7QTz1+PW *E1V U9wW^,!0iN[Dhho,)zps˴wYv,w)ϡlGN Zj~UD*\piJ_>,ЕGH,c`$�H|U HR3=Teoc 9PP0:Cs$Q&AQ9߹p_]B˨�6<w�>ڮBWF^Eo؁t `p3ڛ|1ȅd*~A*A?҂2BO$F[A6G6�<u8 l,s Xˌds-x޵RƆKe2.@>zu|)I$0$d`�/w}Οmy̻#Yc?53X$*y))8#?52/÷g-':<kx2^,kR >g'=ꒋVLܚ8Ws mS0:�sPj(!k GG|T'Ƨeh6nĉ/ӽ0xS&ZcuoJ88P⻕ lexPҮP#`XmO?^uu}t-I‘ǧ=o|Oz~enrr;{Vτt@=ƧTB9<wd Yz>T9�H4Z(,C<p>�F_>k0xß  ӭz$72ERl,#g ZX_e,�p3o'�]s+;5~۴ePFn=W@<6 n, ?wx\VKˋ*t�s�M(+ٓ)NZ-O$n5nTyo sS2|K8=U! hdX"@tWWš4"Oj-OvF\`R{wء{ѽ'|˲=ś;P[A>ՂBpy3sS/;qyRݡ~q\cf,EVE ̑rsީ(dȻ] ɮ-.xw0ʒ8#85 [-v0`~_tzwB~jvVCo6HBN};u9auf7QTz1+PǬ- .lϩIX˕X�O#\{?( <FwAW-px%߆`q?ϥsfݢeBRɬZ¤}'6Ywo 8jåԑv p8=:Ԟ@^-LDxc}a6̿Mŕ|ﴀ=i1kۤ(">'NOr{KKxr0I!N}v +-dF7�quU HP\LNBsgrK9Ԥl=�Vfyǘ�B<d='5UՎh,{x6b$BTt쭢ysDd!>7G88lU0͖ H=BYsGMOp9ҩZ92C2m@#HrOZ|7<�g1O50T* ׸wt^Fvds=O5$<ɿsه 䃹8zv)o1Gv:\.. />I&c.Ubv,FP<c_sp6 z\XMy4~�I@�>ܮFj[],?Y@o$,�>,Ŭ*G_bsoOˑ>x񀮸p`I~F\:\mI`ӯ^iI u_19ʹG1gVo�<YY|GHؐ>#B#@rzddg'$NJ J-l>@H$:mnҺ: !I�!TcpG_P h$(w6q}1W$ӝJF qs�Ungy#Cۮp2CX]X閌٧#f"@$%AqNJ)Ǘ4FB,cq|ZAqsِ<o,ād/|UZ74{$GAq}*C+$1C,&4 <qWso.Kq<s\#B�{wyNEghG>^Ơ=yPH;`x�jҖ�#wkcKry�szjV2V'ble�0H;>*^8lǫzUe7#Iw dY=fݢeBRɬZ¤}'6Ywo 8jåԑv p8=:Ԟ@^-LDxc}a6̿Mŕ|ﴀ=i1kۤ(">'NOr{KKxr0I!N}v +-dF7�quU HP\LNBsgrK9Ԥl=�Vfyǘ�B<d='5UՎh,{x6b$BTt쭢ysDd!>7G88lU0͖ H=BYsGMOp9ҩZ92C2m@#HrOZ|7<�g1O50T* ׸wt^Fvds=O5$<ɿsه 䃹8zv)o1Gv:\.. />I&c.Ubv,FP<c_sp6 z\XMy4~�I@�>ܮFj[],?Y@o$,�>,Ŭ*G_bsoOˑ>x񀮸p`I~F\:\mI`ӯ^iI u_19ʹG1gVo�<YY|GHؐ>#B#@rzddg'$NJ J-l>@H$:mnҺ: !I�!TcpG_P h$(w6q}1W$ӝJF qs�Ungy#Cۮp2CX]X閌٧#f"@$%AqNJ)Ǘ4FB,cq|ZAqsِ<o,ād/|UZ74{$GAq}*C+$1C,&4 <qWso.Kq<s\#B�{wyNEghG>^Ơ=yPH;`x�jҖ�#wkcKry�szjV2V'ble�0H;>*^8lǫzUe7#Iw dY=fFnmuY/a+2N85}V2-,(s}*;Ú31pVI8^�?> ~B<:kV;:ԉ&lx lױqͭު`G,(m c9g=rGɴW%qS$YuI#+1-ޜTcԙ{GЎQD;Xgl.3d|:Fט%"�\=8Sm+Kz9rSC/u-+#J%5k1&J 9�UQJ(ɻؕᶴIAB (�TWP[�iKbFrĞw~5-'Ml9 2`0% Am('z׃ԯ<G #m=$9R'>\١xM04@UvbN1֥u,F# b dz$]Lj/%`-pm1zǂ<"05۴Rz2y簲io'MA'#\Wwv6H)>sH\rtS-Kn@ayݏSjxKCI8u՚1�#pԙsHP6j0܀،O'sњʫcEd 9�>\w8+$d/�dcXI[}?~!SG}EZk:ԉ&lx lױqͭު`G,(m c9g=rGɴW%qS$YuI#+1-ޜTcԙ{GЎQD;Xgl.3d|:Fט%"�\=8Sm+Kz9rSC/u-+#J%5k1&J 9�UQJ(ɻؕᶴIAB (�TWP[�iKbFrĞw~5-'Ml9 2`0% Am('z׃ԯ<G #m=$9R'>\١xM04@UvbN1֥u,F# b dz$]Lj/%`-pm1zǂ<"05۴Rz2y簲io'MA'#\Wwv6H)>sH\rtS-Kn@ayݏSjxKCI8u՚1�#pԙsHP6j0܀،O'sњʫcEd 9�>\w8+$d/�dcXI[}?~!SG}EZk:ԉ&lx lױqͭު`G,(m c9g=rGɴW%qS$YuI#+1-ޜTcԙ{GЎQD;Xgl.3d|:Fט%"�\=8Sm+Kz9rSC/u-+#J%5k1&J 9�UQJ(ɻؕᶴIAB (�TWP[�iKbFrĞw~5-'Ml9 2`0% Am('z׃ԯ<G #m=$9R'>\١xM04@UvbN1֥u,F# b dz$]Lj/%`-pm1zǂ<"05۴Rz2y簲io'MA'#\Wwv6H)>sH\rtS-Kn@ayݏSjxKCI8u՚1�#pԙsHP6j0܀،O'sњʫcEd 9�>\w8+$d/�dcXI[}?~!SG}EZk:ԉ&lx lױqͭު`G,(m c9g=rGɴW%qS$YuI#+1-ޜTcԙ{GЎQD;Xgl.3d|:Fט%"�\=8Sm+Kz9rSC/u-+#J%5k1&J 9�UQJ(ɻؕᶴIAB (�TWP[�iKbFrĞw~5-'Ml9 2`0% Am('z׃ԯ<G #m=$9R'>\١xM04@UvbN1֥u,F# b dz$]Lj/%`-pm1zǂ<"05۴Rz2y簲io'MA'#\Wwv6H)>sH\rtS-Kn@ayݏSjxKCI8u՚1�#pԙsHP6j0܀،O'sњʫcEd 9�>\w8+$d/�dcXI[}?~!SG}EZk5o\& ;2YlªҬc'f0Nq GYN2s�d̘̏s;=ۛQK-nf@7zm9t40Ln[ab[QL�tOEixT�3Sa<- JUP|FrH7�d /I e w@xXLҝd[c;М$�=-[iΏJ6H<9;T5pI{?f*-`ǶK$nQlp7t8J~"Z*gB\y6gߒ:`ut*TX핕 W8+VG;֥;{I$!6�~&"|;ϯYmY$H2Ab9G~=f$\>SHNǦ;&/54d�8a=sYVIFAǮy<늼mqwhRnn:~뛽_#-*:Pzh?? QN�^:S-Ȭ**2vc٬B <u`P|'< }8LɈ_+<�+ 9#Cۊ] yQ"vdp'*KwKx3C͆qV%X*Dy*@tX-H@>56O^BĥU g$g$1pInXĐ,P|�zju4)A< ,bN�նĩd̏#CWt3b". {`(DHwCx'%|T%ǘcf}#Z}MүeEYPs=Ensj\ӷi/$A"#`8=b/('CU<ՒIdc$#w۶iKX%9zck ]3NV@�v#9�<W9%l$mz-6qƋ.v=v޹ȅ;LrҪy�8~Ukq\& ;2YlªҬc'f0Nq GYN2s�d̘̏s;=כQK-nf@7zm9t40Ln[ab[QL�tOEixT�3Sa<- JUP|FrH7�d /I e w@xXLҝd[c;М$�=-[iΏJ6H<9;T5pI{?f*-`ǶK$nQlp7t8J~"Z*gB\y6gߒ:`ut*TX핕 W8+VG;֥;{I$!6�~&"|;ϯYmY$H2Ab9G~=f$\>SHNǦ;&/54d�8a=sYVIFAǮy<늼mqwhRnn:~뛽_#-*:Pzh?? QN�^:S-Ȭ**2vc٬B <u`P|'< }8LɈ_+<�+ 9#Cۊ] yQ"vdp'*KwKx3C͆qV%X*Dy*@tX-H@>56O^BĥU g$g$1pInXĐ,P|�zju4)A< ,bN�նĩd̏#CWt3b". {`(DHwCx'%|T%ǘcf}#Z}MүeEYPs=Ensj\ӷi/$A"#`8=b/('CU<ՒIdc$#w۶iKX%9zck ]3NV@�v#9�<W9%l$mz-6qƋ.v=v޹ȅ;LrҪy�8~Ukq\& ;2YlªҬc'f0Nq GYN2s�d̘̏s;=כRI$vI=^}*Sqq4A(X!N}k|b\hpTHϾ=gݭΜ<]lx߷~jGt67\xT}{ϧӭhK$%<(~RQQ{{ 4mhmaL4r5rÞ3y�#e6T;nНh;(,;|\~tEo,RHDBGQWMx#P𔷁>$9oU<F$_`l~*:`Hއpx�Vq?J1m rAn+u7Z+aT3~[��zKo ɠiv/5AyaKp㜾է#qK乮:d# 6C]=V?)HR8zg~coZrKsa=F81 0;wd$t9XLN< @ s3xԪO:sYt;˻x1;c 7. �0Ozm߉r¹ xO/tˉ[HNqߥ^LDٽ%gVZdI$vI=^}*Sqq4A(X!N}k|b\hpTHϾ=gݭΜ<]lx߷~j}o İM~6^3Z O7 6c ;ZXm8 y8 \y!8�YA㍣�c>۴'Z-8K_-/#_?+jQ[>Ԓ?1{jSx)<%-a5gO )rFUi57p%8럯4{6J<{E{6+c+՜wҌlBܐp! ۊy<Mxn<x2@�޽7h}k4GXFR|8/iRc9.kΡ5$HMPrs~Ur->1:ߧXV}Q% |6LI1F}:V5$&6^>*?h\t'N?LN ˀH8: ޹ywd n26sf^5S6V&vW񅥬S.%(vo~@*Y'<I1|d.OCןJ\MD <3HSz1Z嬴|-0.�U'83bk@Y7ks.Cl[001;wߚfxCk1,|߷M׿L}:քBS-緽rNֆtG*A><CW,|9;=AgHN�<PxhO ֋z#)RceJڽVϵ$dD |uqڔ'b5 Kx|nrH sZMClbEMp)>\ j/:͒C^A8x5g�,nбw$H8@^OxO3;^ P��DgbZ779�Zr7K賨MoI:n8%ܜߟUc򜴋nυ*ALczV=U$6ccC2 v@RGLsN~>$ 3pM�>8׏J#57IӼ0r0xf]!۩'+TM䉤-Ulaikˡ DJ>]߮rP6{ eeInO$L_h ҥ7D �Lgֹk-'*_:uF7 I8$ؚ~;ːe nwپ/K)pwSi>N-paKaF=G\Ӽoq3ʧsOxPY�801SBuވ죊TXr0 esҶeI#1G1\v7☍CR#[tܒ$aVP|{ OZ 遳Gd3ǺWA#`bPN>z;q� Y(,]?=1ד!hSׁn,T��=-3{&ؼֳApMe,Îr�V.3,[D$ۅ w'8UX-"۳JS鞽~{i-͇P̃dݐgӥc_2Ba:L+m�-ϸ:uR>gMt.D0ܸ8=뙷~&Bvc#o'9� o%U?ho.%n9"i9`K~z?ZZ2BQf뜔 Yh:uz$B$>yM@c48ZIΝrѣ Rs #>&v:p;vų~ov0̻2傁8�k2i!UB2߻>}դo0`wN;�"mRm6bg8 1c{m؈ZgT$ HݟO\~]Fd�edA+ybOqGy46bB?#|]Y͉[x+ddjb܇*y5X^a w%@�x9:ϖ*C#1b  ?›ek6I@m9s¡TdQhӧҳsRa%ץaEHQq=q_*ݖp5۝27]1ew gz^DYA8$g_mĻ/$&RHR^Tu2jr#@(_Nz{ի;kҩ 5c(U11$:z֮B[n]r[# �T]WFl@vR6�5J E^+vPpK39z~-$Un2[$9>ϽWjHJJp�w6q۠meD*C ˹C.X( &eT#-ZKffyA�Z&&o(&s ڣϯ8' Bu 8 ȡ 8bFz5=N '-"I[{R=k|^#B ܖ'�lHY[$ݯ'�~U8Thgɪ .HhQ|aRX `g+X!H0:h< F+G~>?^ ., *B0 0F z�V끮鑼ppc,=3z"o"I#?t`z� m>%y'i6DrT%"4cWWaEUD?7:sޭY#^MHoO/cB%-1$Q$Nr,rےN'غ0_+b— �Pj*[Yd9s?N+qn$_4q$1^}T-BRPC�'ms(%Rf]r@g54*o݌?~߀[7s0;�Ց66xD1A3y}}1=mCGYpUE 0wg|QpY?m|JX`z^C 2l8'>6nVw3bG" x8Zgw!JE;=^MVE`$8huP2G?;GNG4孤k Xc?OZ D1 @Ao&6|Z<c5TIueXQRyr0O\se\ vLLkd큞ץFfkxp2Igi.;IR#Gj-ש)kL܈${ *!Ӟjl2D{|#}=`A)iLI'j)$uVfnܖp09?e8.ч2[? RQWݔ+&q{u1_p"[')O:Uڡn�8<͜v?[mF-ʐ2wP˖ _89ɦ?l6U~gVټÙp~ }8�֬I! +6?s CnƐb=;&2(H>;溍OSmeȃVĞԏZhm7񐅃`7%9<~Gw<Vk;s8k*U)j+A!FK9:r=u-m#XTFbz6l !�r<?C~4 Oץf穪KK*Š 㑂z㞿U-zk:do.c\ǘ&@l *43[DžqH5>Ov^IM:?U nHM+Xd.Gā#QUQlVwץSa%%k,P KLbbI;TuI$ӭ\ 4dܻvG$�8)t6.9؀0<m�|�jVgY3sө\[I,dI9Lr}1ןz p� lA*m\0nTs\P:fM1d1ʨF[c?O߷/y�dMM PL^AF1#_LpOzv45EpR@ڧ`u�ZkvPCf ^3OÍNѝm݉s(_Ͽz`.<L.7*Bpq8q]Ȅ2_iWb(tgl6'Nkf Nt$FCyaHӃ]ý?2s9cN}f:v]cS!V;OܲW؏zif=E*Ac $gCDD!8�q튣/{5]aʅi�tE")6B `NOrDh/2]@�8�tgΚgm2(@#|7^+_7^Olkq< .D+%S U: �9�ɔ-Zy'7e *<9Lkag{ľ\c%knG@42\k,ap:�AtMH'յ'ͻ#0�|˻Pth>eQy- j!SIN8<~<ny?h8׮1y["Ae\"fHc99TZd]M<q»eIjלw}kPA]0R?/=x;?5;+Fw֡v$M̡~>03S|Tp= ܨNc+v"Oiv*oy滫h4Im-L4o7=89{{|;C,;s;Ёڶn|#j-V5?*oA4%}fhJ#Q10x�Fɤ>*$ODIbت27YX(OofoK^y!(ad 8^/JƂ.e�y?;�mWN~!Yxݣ/" 7q@qSu`FƸ\wMB^\\? YSP�_jiA^̙Jrաl'y#vYrț|΀c:tnw,K2XFoZtcC%Ʋ  p=GJѤ}[Qh|۲0z� ܻ gO<],ݱ皂r<뚙|ۏ3ʖ gzמk5b/ZR)dOv3IE&EnMtis+T6yֹZݵlك#׌*Sg}jybDsޘ<  s17ʥGМq(q]ʄ2_iWb(tgl6'Nkf Nt$FCyaHӃ]ý?2s9cN}f:v]cS!V;OܲW؏zif=E*Ac $gCDD!8�q튣/{5]aʅi�tE")6B `NOrDh/2]@�8�tgΚgm2(@#|7^+_7^Olkq< .D+%S U: �9�ɔ-Zy'7e *<9Lkag{ľ\c%knG@42\k,ap:�AtMH'յ'ͻ#0�|˻Pth>eQy- j!SIN8<~<ny?h8׮1y["Ae\"fHc99TZd]M<q»eIjלw}kPA]0R?/=x;?5;+Fw֡v$M̡~>03S|Tp= ܨNc+v"Oiv*oy滫h4Im-L4o7=89{{|;C,;s;Ёڶn|#j-V5?*oA4%}fhJ#Q10x�Fɤ>*$ODIbت27YX(OofoK^y!(ad 8^/JƂ.e�y?;�mWN~!Yxݣ/" 7q@qSu`FƸ\wMB^\\? YSP�_jiA^̙Jrաl'y#vYrț|΀c:tnw,K2XFoZtcC%Ʋ  p=GJѤ}[Qh|۲0z� ܻ gO<],ݱ皂r<뚙|ۏ3ʖ gzמk5b/ZR)dOv3IE&EnMtis+T6yֹZݵlك#׌*Sg}jybDsޘ<  s17ʥGМq(q]ʄ=alt\]Ipv_#`}O_֒MJ\Xx >ZgKGm4bJli.3�}+W#5-,7plMb#쯱?J˼[xW\8p$?#U..6pSׯ4֤ of#|3+e�ln,>O#}HSN^!Fi9=2p2}Z\xK` $dyI s6`i]k$1u#ҨZB`4@rm;8>]Υ#eg89�תs3<`!8?btFGyelƑ 8?Gem˚#! 1>Q{b llHb@2*-n=obx#Ϡ8J!ɕlXjGsr8+%89yTlu�dw;h3}#^y'ʼnM<W$0 <�sӵiKV;qu%U9|<9=ZI5+rb62 $tkW/cEvgnՈ=*nN2r3Ra|q!gȩd-aR>z~\aŷuÇ Oc5RjH8 zMjO KZp&m<w1>}_>w@ā4fj''9=_H %ǎ<Q�TkfFGy$>hvI H 8R:*(.& D'!FӹS銹%ޜR6Vx_h}@�zw3<]!V2s*LdwV=i1!*:sTvVN<2c#Ƕ* v́yd$!{鹣&'8sTb^!e6x9'㏭r{rX㘧*LPHWs:v/#;Gp29|Xd߹ʅrA܃�=;Vm[.R\]SR*;#c(�1GOֹyR8|Qlfx=XҮ[,&K �$ JW#5-,7plMb#쯱?J˼[xW\8p$?#U..6pSׯ4֤ of#|3+e�ln,>O#}HSN^!Fi9=2p2}Z\xK` $dyI s6`i]k$1u#ҨZB`4@rm;8>]Υ#eg89�תs3<`!8?btFGyelƑ 8?Gem˚#! 1>Q{b llHb@2*-n=obx#Ϡ8J!ɕlXjGsr8+%89yTlu�dw;h3}#^y'ʼnM<W$0 <�sӵiKV;qu%U9|<9=ZI5+rb62 $tkW/cEvgnՈ=*nN2r3Ra|q!gȩd-aR>z~\aŷuÇ Oc5RjH8 zMjO KZp&m<w1>}_>w@ā4fj''9=_H %ǎ<Q�TkfFGy$>hvI H 8R:*(.& D'!FӹS銹%ޜR6Vx_h}@�zw3<]!V2s*LdwV=i1!*:sTvVN<2c#Ƕ* v́yd$!{鹣&'8sTb^!e6x9'㏭r{rX㘧*LPHWs:v/#;Gp29|Xd߹ʅrA܃�=;Vm[.R\]SR*;#c(�1GOֹyR8|Qlfx=XҮ[,&K �$ JW#25 sk ] $q= ^쪱9idYF@QhQxӂMBF1UU"?qV֋Zo^O$Hy6cg\mm.S9fv!Co@P xk>퐻8Mҽy-J?1$˪Mq|)X!n?>wfVB$|8Caqc'4 ծH.`F9қm][յ-Jӯi_U-t-IH\\2Wq�1RV!FMį J �d@� ؇M[6C$Oi:n,e.f8 m!@'=ּ ny8ni ʗ?rU Ěn)/$R봳qƵ-+b0v�]~'?S%<Ay,�mloavW<IV^(-ݠuѓ=Ky<pEm*@8=HZ'B2@H $rB{+j^Hwݾ�# z�U;ZIw+яeS˚DZdQ`x8ތ֯}UX, g4jϨ iY&!x#*O~*vS 8(Z՛^o^O$Hy6cg\mm.S9fv!Co@P xk>퐻8Mҽy-J?1$˪Mq|)X!n?>wfVB$|8Caqc'4 ծH.`F9қm][յ-Jӯi_U-t-IH\\2Wq�1RV!FMį J �d@� ؇M[6C$Oi:n,e.f8 m!@'=ּ ny8ni ʗ?rU Ěn)/$R봳qƵ-+b0v�]~'?S%<Ay,�mloavW<IV^(-ݠuѓ=Ky<pEm*@8=HZ'B2@H $rB{+j^Hwݾ�# z�U;ZIw+яeS˚DZdQ`x8ތ֯}UX, g4jϨ iY&!x#*O~*vS 8(Z՛^o^O$Hy6cg\mm.S9fv!Co@P xk>퐻8Mҽy-J?1$˪Mq|)X!n?>wfVB$|8Caqc'4 ծH.`F9қm][յ-Jӯi_U-t-IH\\2Wq�1RV!FMį J �d@� ؇M[6C$Oi:n,e.f8 m!@'=ּ ny8ni ʗ?rU Ěn)/$R봳qƵ-+b0v�]~'?S%<Ay,�mloavW<IV^(-ݠuѓ=Ky<pEm*@8=HZ'B2@H $rB{+j^Hwݾ�# z�U;ZIw+яeS˚DZdQ`x8ތ֯}UX, g4jϨ iY&!x#*O~*vS 8(Z՛^o^O$Hy6cg\mm.S9fv!Co@P xk>퐻8Mҽy-J?1$˪Mq|)X!n?>wfVB$|8Caqc'4 ծH.`F9қm][յ-Jӯi_U-t-IH\\2Wq�1RV!FMį J �d@� ؇M[6C$Oi:n,e.f8 m!@'=ּ ny8ni ʗ?rU Ěn)/$R봳qƵ-+b0v�]~'?S%<Ay,�mloavW<IV^(-ݠuѓ=Ky<pEm*@8=HZ'B2@H $rB{+j^Hwݾ�# z�U;ZIw+яeS˚DZdQ`x8ތ֯}UX, g4jϨ iY&!x#*O~*vS 8(Z՛^oz4vh柅(�gq)gdVVc;1sl~Z:ȰF>Rq>wWc&dP/dӜߡO.ڍ_(otc2h ?h%`bfrp k"`�<�w :z,K _\皛 ̧/!hbR33G$U|,bHdC(SR�=sǵ:Lf Qބ�'jNtxbTɲAGQڡ:H߈1T_n{U=W\^$v tDeほ<`zWWK>P*en1>tžۦWlNB\lޢ9޵.i4I ؑ  g�[xE1!w}xnj$D1 ;4%p Bv=15y+ �p; �+ʶVFfJ6=s\UkExܻvq\B9iU@<xp?5Ջ׮GfiRpzҙm,vEaUiV1'8gI壬j'9c v2fLEYGXm9Ukͨ%F3 =6V[[ F&l7- ˊƱ-(R& PsQPm*B�y~r%*Hs>A#9$q2N^r$Id2; <{StiN-NI` px��GF%L$d}s=EwlXEz%G`DO(P8sq?-t.<V30:L[n{*,ʄ++w#R杽Iy$ �A{� \y@>H|׊欒K$C H#ݳNZ.p$'c�XXmr�c~q,eofa$h <Xu^imᶸ4_)w˷i?^D/ΑcTJC[Xz4vh柅(�gq)gdVVc;1sl~Z:ȰF>Rq>wWc&dP/dӜߡ_.ڍ_(otc2h ?h%`bfrp k"`�<�w :z,K _\皛 ̧/!hbR33G$U|,bHdC(SR�=sǵ:Lf Qބ�'jNtxbTɲAGQڡ:H߈1T_n{U=W\^$v tDeほ<`zWWK>P*en1>tžۦWlNB\lޢ9޵.i4I ؑ  g�[xE1!w}xnj$D1 ;4%p Bv=15y+ �p; �+ʶVFfJ6=s\UkExܻvq\B9iU@<xp?5Ջ׮GfiRpzҙm,vEaUiV1'8gI壬j'9c v2fLEYGXm9Ukͨ%F3 =6V[[ F&l7- ˊƱ-(R& PsQPm*B�y~r%*Hs>A#9$q2N^r$Id2; <{StiN-NI` px��GF%L$d}s=EwlXEz%G`DO(P8sq?-t.<V30:L[n{*,ʄ++w#R杽Iy$ �A{� \y@>H|׊欒K$C H#ݳNZ.p$'c�XXmr�c~q,eofa$h <Xu^imᶸ4_)w˷i?^D/ΑcTJC[Xz4vh柅(�gq)gdVVc;1sl~Z:ȰF>Rq>wWc&dP/dӜߡ_.ڔI&/ I}RBdži p_3\/:F F}Mh ?ntw2f7nWr=_C R¦ߦ}>kB[!)FŒz޹xkCk gO x?>񝞠$'� (<q` bvEG`K`@m^+ygڒG2">b:|bJo1 >F $9HJ&61"&8.pgsfU!guHtFx }<vw�Q7[hX$~ {q^c'B[ ڧX��{ע[xfMOyfX�֭9]Lg%tY&$XI NqNZEg• 1S={+~*Ӓ[1ġɁۻ )#9ϧJƿdtW8&�[qt֥R}Λ]ap <pA{3o.LFNsxKƪ~{\JrDs*6~0eЄ%.9(=Wt$7'I&/ I}RBdži p_3\/:F F}Mh ?ntw2f7nSsomf%o;OZЖHJyQ@i7nhS9'j叇<gg, �Gmvݡ:oDvQ*X,wRly29[WY;RLF)o:}INs0ҫIxH 'ˁ-\\yٲUHuR+ 1^('u]�~ce.䃁 WoVwgkA*��@^kY8&29|�NFSs]u "GVm‡{*~SmH)q^? ǽߊzq(cA`v Hr3ұę!0&x g:TADu泦:wvbvn\A`˿!;u1�s7񪟴^鷗4%J --bt!(G˳{JAU쬴:=MI!vz~Th PB-eKNhцp9|{Zq[8yr̻bفۿn7:Y`.*m>gִ%nl?)l(Ǩ�=w66ۦp9Tqc <Bp�ಃF�*}hN[qJ Ծ[.^F N:V좷}$~c"!#+Ԧ<SxJ[kpΟ{@S7j#c/ocIKW}06q?^hlRFxTH0$l W oCn8<W8cu BA:x-y?-e�z%od4;h q_?jӑr\EBk}2HՄp.�J[v|)R cu=3׿O±|79%Jl:ctk&HL'IsmN}jU'~~Nݼh�q�t's6ALdm9?\jmĭ$M'8 oүCg KX]J"QsU{+-NOSry$b;@]߯>) ,xf�c>Yi>1RӮZ4a\�Nq$gրnN\s.ض``cp<vۿ5>7}bX&Ko O~u o䄧[ 1?oz{ 6U<}xXsvz<�x,р1gmGeRu/˗/ӟΕ{(jIȈ@=)Oj039# *ċR|_L uך=%TQ=" p1[ێj;�F6XmbH8qy& El<7jfvtb�^m4 >浚#o,#)`>ns�Zn)u15gPL$ua&(pK9ǿ?Ҫ9iݟ TOL{ NInl>Ǩ>d&n쀤#>+|I g\hn}qӯZIG_k:nywo&'la$` \ͼ2CSy9OW3}/Eyq+qI;[)B|7\l^AӬܞI$2i'ϥJn.&" )=}ϭrZOTt떍n�*pIDZ5,wӇ!˶-O}_C!e,qsYL~ m2 %y3@ q�YjiC9WmQޓnBu 8 ȡ 8bFz5=N '-"I[{R=k|^#B ܖ'�lHY[$ݯ'�~U8Thgɪ .HhQ|aRX `g+X!H0:h< F+G~>?^ ., *B0 0F z�V끮鑼ppc,=3z"o"I#?t`z� m>%y'i6DrT%"4cWWaEUD?7:sޭY#^MHoO/cB%-1$Q$Nr,rےN'غ0_+b— �Pj*[Yd9s?N+qn$_4q$1^}T-BRPC�'ms(%Rf]r@g54*o݌?~߀[7s0;�Ց66xD1A3y}}1=mCGYpUE 0wg|QpY?m|JX`z^C 2l8'>6nVw3bG" x8Zgw!JE;=^MVE`$8huP2G?;GNG4孤k Xc?OZ D1 @Ao&6|Z<c5TIueXQRyr0O\se\ vLLkd큞ץFfkxp2Igi.;IR#Gj-ש)kL܈${ *!Ӟjl2D{|#}=`A)iLI'j)$uVfnܖp09?e8.ч2[? RQWݔ+&q{u1_p"[')O:Uڡn�8<͜v?[mF-ʐ2wP˖ _89ɦ?l6U~gVټÙp~ }8�֬I! +6?s CnƐb=;&2(H>;溍OSmeȃVĞԏZhm7񐅃`7%9<~Gw<Vk;s8k*U)j+A!FK9:r=u-m#XTFbz6l !�r<?C~4 Oץf穪KK*Š 㑂z㞿U-zk:do.c\ǘ&@l *43[DžqH5>Ov^IM:?U nHM+Xd.Gā#QUQlVwץSa%%k,P KLbbI;TuI$ӭ\ 4dܻvG$�8)t6.9؀0<m�|�jVgY3sө\[I,dI9Lr}1ןz p� lA*m\0nTs\P:fM1d1ʨF[c?O߷/y�dMM PL^AF1#_LpOzv4�qA1B@pČ5jzO[k/6D,$zאCiF/,,N?ͥ۽ؑ巈H?^N�1֫+]qRNWUX" 7r]T ӑ .ki¤23 )VCd `t3y9*I@ V}:~+7=MU-6]zYVT`@`7�"k]#xu><Y7r{`gQE<,DF~�9|KNl%/Ԉ /ZKuEJiZS&yw"<$ Š~n;`u秽ZF* ),�_OcX.9bPJZcIڣI'j/Y+&۷%9 OEN u}4a̾V`).AoOTU"e8 ɜs篮~LW2HieV%Ic鎼x6[��N'sgVjQKr0̻2傁8�k2i!UB2߻>}դo0`wN;�"mRm6bg8 1c{۱-}M)-.xw0ʒ8#85 [-v0`~_tzwB~jvVCo6HBN};u9auf7QTz1SD'eCJCU;daA<zs]׋4HLuӤ&7 G=>!ks@[7>ӵQ Fq~咾{3O4%d(R <�I#?h'Ԣ$ lU~~T,'3N{/<qITczwj}/{j%cA|_P�ͼ�u϶k?t<knїBa z]8)|#c\.;v_ Ar!Y/..JJg(�4fL9jж<,MQMg@1N:gC[ ;%,#\t^T:1Yc ]_ hD>L >m=qK]bFhA.nzAo9V JJqdL ǙKv3Aq5  -Z)2G'ϻzՓ"t7&h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN88Bv[^/4:{HX3AVxק5]xD_]:Kima}qC.ޟfۜܧ>ճs;P.ajU}rOgY+G~c4BVA A3M!V"}J"K8Q὏.0BB{|4^ ̑G !F0H~~֢V4u .� �\jv M_ƶy fb/Ï '65Gjl"ʝr�SJ dS a<mەDt{t5́b_.15lE{zH|#C.50ȸP�n:U$HڋDݑ�T^(^:}olf2qf�<|ϵ`䤧F@\yThc<n~Yx ծbH3$r|J-Y2.CrkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qCT'eCJCU;daA<zs]׋4HLuӤ&7 G=>!ks@[7>ӵQ Fq~咾{3O4%d(R <�I#?h'Ԣ$ lU~~T,'3N{/<qITczwj}/{j%cA|_P�ͼ�u϶k?t<knїBa z]8)|#c\.;v_ Ar!Y/..JJg(�4fL9jж<,MQMg@1N:gC[ ;%,#\t^T:1Yc ]_ hD>L >m=qK]bFhA.nzAo9V JJqdL ǙKv3Aq5  -Z)2G'ϻzՓ"t7&h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN88Bv[^/4:{HX3AVxק5]xD_]:Kima}qC.ޟfۜܧ>ճs;P.ajU}rOgY+G~c4BVA A3M!V"}J"K8Q὏.0BB{|4^ ̑G !F0H~~֢V4u .� �\jv M_ƶy fb/Ï '65Gjl"ʝr�SJ dS a<mەDt{t5́b_.15lE{zH|#C.50ȸP�n:U$HڋDݑ�T^(^:}olf2qf�<|ϵ`䤧F@\yThc<n~Yx ծbH3$r|J-Y2.CrkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qCT'e cKry�szjV2V'ble�0H;>*^8lǫzUe7#Iw d\Grmwheg8dTke}ͽ?.GV]Ä'1pq$]ONy'%׭|ƸKx6;qX~ /Scpegiy; b@tZ 3H铁휞篤~(E*\`##<HSc]J$Y$�Qc~B�iǩ\Nu)+</>x qUq.+n cucZ2;+f4�py9*;+h\lci?f@eCOaVakt{}9VL{d ěP<cֹ_ =Ĺ,YSp Cc$u+濝;E�Sxp >,O2oaB ANJ[jݭ .lϩIX˕X�O#\{?( <FwAW-px%߆`q?ϥdw+vmPs 8?ϿEK&k W؟{e-`+8@XxRE8)`tךkRy]zkA3mq~2�67Vv'�$Hůn4P8>zGI-.<qR[0F2<s$9?E۰4Hm@U:T-!Aq0H 9 6͜zLU.RCg�[bA 1WV:e#iHو PGqӟңqA(v=V\\d6[$1 t fM7<s~_JkI P,I�#99?}kKŜO<Pd6:2G^⻝kӴQy>ϯo<ׇ�&fT+�9ڴƫmp*F$Uر@:}~ϫʗ";`3h7qra7 ]f'VOGrmwheg8dTke}ͽ?.GV]Ä'1pq$]ONy'%׭|ƸKx6;qX~ /Scpegiy; b@tZ 3H铁휞篤~(E*\`##<HSc]J$Y$�Qc~B�iǩ\Nu)+</>x qUq.+n cucZ2;+f4�py9*;+h\lci?f@eCOaVakt{}9VL{d ěP<cֹ_ =Ĺ,YSp Cc$u+濝;E�Sxp >,O2oaB ANJ[jݭ .lϩIX˕X�O#\{?( <FwAW-px%߆`q?ϥdw+vmPs 8?ϿEK&k W؟{e-`+8@XxRE8)`tךkRy]zkA3mq~2�67Vv'�$Hůn4P8>zGI-.<qR[0F2<s$9?E۰4Hm@U:T-!Aq0H 9 6͜zLU.RCg�[bA 1WV:e#iHو PGqӟңqA(v=V\\d6[$1 t fM7<s~_JkI P,I�#99?}kKŜO<Pd6:2G^⻝kӴQy>ϯo<ׇ�&fT+�9ڴƫmp*F$Uر@:}~ϫʗ";`3h7qra7 ]f'VOGr[]VK�5J@lF'9pmjeUK"2�JG pƜl221$e?~i#ZՎ}"y$Cɷp:G\skiw-3 ~XN@YlܑǬm?plzT6&]RkJ! xKqw&^#l2$l#8 =_u2G wȣ�*1~N>o ޭmNGPxJҬƉkjMor@I;G`=@rR 2n%xm,PP% U-?mؑ*'�.ߍbxItd[-NH pC1P[i =I޵cu8+uHOI T D`{:hl^$tL !y"G]Sx~5n]KH㷈X#9*/~q g kg~3 `zq:HFm $%d|Ծ^~y,[(iPpIFHz'=eݍEO`e9$܁]� RE[~^wcoڮi.N {]vuf{.%}u&\"-ͮ%�%w 6#�I6f{ﲪX契e?ϥGysW}F8]N 6G VxGAVOò4Tg_QE֬}"y$Cɷp:G\skiw-3 ~XN@YlܑǬm?plzT6&]RkJ! xKqw&^#l2$l#8 =_u2G wȣ�*1~N>o ޭmNGPxJҬƉkjMor@I;G`=@rR 2n%xm,PP% U-?mؑ*'�.ߍbxItd[-NH pC1P[i =I޵cu8+uHOI T D`{:hl^$tL !y"G]Sx~5n]KH㷈X#9*/~q g kg~3 `zq:HFm $%d|Ծ^~y,[(iPpIFHz'=eݍEO`e9$܁]� RE[~^wcoڮi.N {]vuf{.%}u&\"-ͮ%�%w 6#�I6f{ﲪX契e?ϥGysW}F8]N 6G VxGAVOò4Tg_QE֬}"y$Cɷp:G\skiw-3 ~XN@YlܑǬm?plzT6&]RkJ! xKqw&^#l2$l#8 =_u2G wȣ�*1~N>o ޭmNGPxJҬƉkjMor@I;G`=@rR 2n%xm,PP% U-?mؑ*'�.ߍbxItd[-NH pC1P[i =I޵cu8+uHOI T D`{:hl^$tL !y"G]Sx~5n]KH㷈X#9*/~q g kg~3 `zq:HFm $%d|Ծ^~y,[(iPpIFHz'=eݍEO`e9$܁]� RE[~^wcoڮi.N {]vuf{.%}u&\"-ͮ%�%w 6#�I6f{ﲪX契e?ϥGysW}F8]N 6G VxGAVOò4Tg_QE֬}"y$Cɷp:G\skiw-3 ~XN@YlܑǬm?plzT6&]RkJ! xKqw&^#l2$l#8 =_u2G wȣ�*1~N>o ޭmNGPxJҬƉkjMor@I;G`=@rR 2n%xm,PP% U-?mؑ*'�.ߍbxItd[-NH pC1P[i =I޵cu8+uHOI T D`{:hl^$tL !y"G]Sx~5n]KH㷈X#9*/~q g kg~3 `zq:HFm $%d|Ծ^~y,[(iPpIFHz'=eݍEO`e9$܁]� RE[~^wcoڮi.N {]vuf{.%}u&\"-ͮ%�%w 6#�I6f{ﲪX契e?ϥGysW}F8]N 6G VxGAVOò4Tg_QE֬} [ @�4)E8={L[;"ٌ{f$E5A򓌜13&"|#6on*yt6hD}ۣ G@NyA-- #6GXxcXe`9]`^?!� <ne?9y CT$9 8' cC$B=:`4Y'$8<�KVs#M2>z \9G@يp6Fq퀢I#['[(w ҸYPc+pq䎘k-7J{eeBr {dtsN᤼IĈ`g=�߄. |$ysV[tVI%!XG$ߏn٧ -cT�,6t9Y�N1dl\8U30QqO,:4\]/۴ێzo"H1JT!Ƭ^p;4O”S3׸ie+ J9Ƕk?PO-dX#T)8@N;�+2b(2?iH⯗C^mF/Hݺ1� tʴ0L13an8_~\U5nFV 0l�z= mR�ϯsMS󗐴1)UBC #|p*[1$2K!))�ڝc 3Juym(BrK�Xm:<r1*d #PÝ$y /ȷ dn* +./d;"yEq{0=+h( q2ٟ~HֺbmtQ`GVT'!\GOoQ[Z4K$lHz3�Oo<"G;>UeO5dY"rAp8 p@NA!;hLӕ�8DHke[+|#3 %Aî*Ko qKn]O]n!~t@<8zUBj @�4)E8={L[;"ٌ{f$E5A򓌜13&"|#6on*t5hD}ۣ G@NyA-- #6GXxcXe`9]`^?!� <ne?9y CT$9 8' cC$B=:`4Y'$8<�KVs#M2>z \9G@يp6Fq퀢I#['[(w ҸYPc+pq䎘k-7J{eeBr {dtsN᤼IĈ`g=�߄. |$ysV[tVI%!XG$ߏn٧ -cT�,6t9Y�N1dl\8U30QqO,:4\]/۴ێzo"H1JT!Ƭ^p;4O”S3׸ie+ J9Ƕk?PO-dX#T)8@N;�+2b(2?iH⯗C^mF/Hݺ1� tʴ0L13an8_~\U5nFV 0l�z= mR�ϯsMS󗐴1)UBC #|p*[1$2K!))�ڝc 3Juym(BrK�Xm:<r1*d #PÝ$y /ȷ dn* +./d;"yEq{0=+h( q2ٟ~HֺbmtQ`GVT'!\GOoQ[Z4K$lHz3�Oo<"G;>UeO5dY"rAp8 p@NA!;hLӕ�8DHke[+|#3 %Aî*Ko qKn]O]n!~t@<8zUBj @�4)E8={L[;"ٌ{f$E5A򓌜13&"|#6on*t5ԧ<I1|d.OCןJ\MD <3HSz1Z嬴|-0.�U'83bk@Y7ks.Cl[001;wߚf İM~6^3Z O7 6c ;ZXm8 y8 \y!8�YA㍣�c>۴'Z-8K_-/#_?+jQ[>Ԓ?1{jSx)<%-a5gO )rFUi57p%8럯4{6J<{E{6+c+՜wҌlBܐp! ۊy<Mxn<x2@�޽7h}k4GXFR|8/iRc9.kΡ5$HMPrs~Ur->1:ߧXV}Q% |6LI1F}:V5$&6^>*?h\t'N?LN ˀH8: ޹ywd n26sf^5S6V&vW񅥬S.%(vo~@*Y'<I1|d.OCןJ\MD <3HSz1Z嬴|-0.�U'83bk@Y7ks.Cl[001;wߚfxCk1,|߷M׿L}:քBS-緽rNֆtG*A><CW,|9;=AgHN�<PxhO ֋z#)RceJڽVϵ$dD |uqڔ'b5 Kx|nrH sZMClbEMp)>\ j/:͒C^A8x5g�,nбw$H8@^OxO3;^ P��DgbZ779�Zr7K賨MoI:n8%ܜߟUc򜴋nυ*ALczV=U$6ccC2 v@RGLsN~>$ 3pM�>8׏J#57IӼ0r0xf]!۩'+TM䉤-Ulaikˡ DJ>]߮rP6{ eeInO$L_h ҥ7D �Lgֹk-'*_:uF7 I8$ؚ~;ːe nwپ/K)pwSi>N-paKaF=G\Ӽoq3ʧsOxPY�801SBuވ죊TXr0 esҶeI#1G1\v7☍CR#[tܒ$aVP|{ OZ 遳Gd3ǺWA#`bPN>z;q� Y(,]?=1ד!hSׁn,T��=-3{&ؼֳApMe,Îr�V.3,[D$ۅ w'8UX-"۳JS鞽~{i-͇P̃dݐgӥc_2Ba:L+m�-ϸ:uR>gMt.D0ܸ8=뙷~&Bvc#o'9� o%U?ho.%n9"i9`K~z?ZZ2BQf뜔 Yh:uz$B$>yM@c48ZIΝrѣ Rs #>&v:p;vų~ot67\xT}{ϧӭhK$%<(~RQQ{{ 4mhmaL4r5rÞ3y�#e6T;nНh;(,;|\~tEo,RHDBGQWMx#P𔷁>$9oU<F$_`l~*:`Hއpx�Vq?J1m rAn+u7Z+aT3~[��zKo ɠiv/5AyaKp㜾է#qK乮:d# 6C]=V?)HR8zg~coZrKsa=F81 0;wd$t9XLN< @ s3xԪO:sYt;˻x1;c 7. �0Ozm߉r¹ xO/tˉ[HNqߥ^LDٽ%gVZdI$vI=^}*Sqq4A(X!N}k|b\hpTHϾ=gݭΜ<]lx߷~j}o 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>v"CGYpUE 0wg|QpY?m|JX`z^C 2l8'>6nVw3bG" x8Zgw!JE;=^MVE`$8huP2G?;GNG4孤k Xc?OZ D1 @Ao&6|Z<c5TIueXQRyr0O\se\ vLLkd큞ץFfkxp2Igi.;IR#Gj-ש)kL܈${ *!Ӟjl2D{|#}=`A)iLI'j)$uVfnܖp09?e8.ч2[? RQWݔ+&q{u1_p"[')O:Uڡn�8<͜v?[mF-ʐ2wP˖ _89ɦ?l6U~gVټÙp~ }8�֬I! +6?s CnƐb=;&2(H>;溍OSmeȃVĞԏZhm7񐅃`7%9<~Gw<Vk;s8k*U)j+A!FK9:r=u-m#XTFbz6l !�r<?C~4 Oץf穪KK*Š 㑂z㞿U-zk:do.c\ǘ&@l *43[DžqH5>Ov^IM:?U nHM+Xd.Gā#QUQlVwץSa%%k,P KLbbI;TuI$ӭ\ 4dܻvG$�8)t6.9؀0<m�|�jVgY3sө\[I,dI9Lr}1ןz p� lA*m\0nTs\P:fM1d1ʨF[c?O߷/y�dMM PL^AF1#_LpOzv4�qA1B@pČ5jzO[k/6D,$zאCiF/,,N?ͥ۽ؑ巈H?^N�1֫+]qRNWUX" 7r]T ӑ .ki¤23 )VCd `t3y9*I@ V}:~+7=MU-6]zYVT`@`7�"k]#xu><Y7r{`gQE<,DF~�9|KNl%/Ԉ /ZKuEJiZS&yw"<$ Š~n;`u秽ZF* ),�_OcX.9bPJZcIڣI'j/Y+&۷%9 OEN u}4a̾V`).AoOTU"e8 ɜs篮~LW2HieV%Ic鎼x6[��N'sgVjQKr0̻2傁8�k2i!UB2߻>}դo0`wN;�"mRm6bg8 1c{۱-}GX@ $`ϧ?SYy d'#ּM1|d!` bpO}>m.fď-EA2p\1ZCFvz/0Hpѻdvpiug[H!^M$c@69PߪM2l(xYjiʰ(`n^Ι 2ɻ3=J",b d3F`϶]va)|G)�zB[R*SJ:5{˹q HUTCq==՝5TdI`G{v1*RN~RI=W!xY7.ݹ-`r*.p] e ;L)rz?q(8%VL=}sbWEK*-NSLuޫB$%%8�py;8JW2"[!e,qsYL~ m2 %y3@ q�YjiC9WmQކݍ!kiMtis+T6yֹZݵlك#׌*Sg}jybDsޘ<  s17ʥGМq*Wr!;-U؊=b r ӚYB`ӯ%0ѾXR8iO \XSBojٹgXU'3,#޿1|Y+ QGʐX I�&@@>%g{bfos`=au/QyHM$sӿsS{ܿkQ+ � P�mx�}];Ygs[v3 DZ׊džMדqg#6b yqrTUeN9@}{2e)VIfmʏ"m:xq=Y@/a[=j>! d\(7P}*SF$ImE`In�*_/r/u>73DvGvsj y>gڰHTRS# pF?je_n<*[1O7ut?^yeYj1H9>}N{%k5EpR@ڧ`u�ZkvPCf ^3OÍNѝm݉s(_Ͽz`.<L.7*Bpq8w*~]F* ~9Ś$& :[Kh  #Nzv59 vځv{ UOʨ[rx#8 ?r_b=Ś|r �$i QXx|Ƕ* |av?* [=Hnd8Y*1G=;5>/˨Yu��fO�UӵVw:j5hȡ0{=x~xly>X~;S`/ %O%VT3��ښPW&Rh[ Hݖkh&ܨ&3玧3ۡd qp{e/֪CqE€uQҮ4i"DVZ&6.BY{c4O d{7lw=G样}O%%82g_vCw^CoXsA#݌RQjɑv]4Z\ a$ pF^qjm@[:v`H88Zmؑ72ws\nqMQ'cWr;-U؊=b r ӚYB`ӯ%0ѾXR8iO \XSBojٹgXU'3,#޿1|Y+ QGʐX I�&@@>%g{bfos`=au/QyHM$sӿsS{ܿkQ+ � P�mx�}];Ygs[v3 DZ׊džMדqg#6b yqrTUeN9@}{2e)VIfmʏ"m:xq=Y@/a[=j>! d\(7P}*SF$ImE`In�*_/r/u>73DvGvsj y>gڰHTRS# pF?je_n<*[1O7ut?^yeYj1H9>}N{%k5EpR@ڧ`u�ZkvPCf ^3OÍNѝm݉s(_Ͽz`.<L.7*Bpq8w*~]F* ~9Ś$& :[Kh  #Nzv59 vځv{ UOʨ[rx#8 ?r_b=Ś|r �$i QXx|Ƕ* |av?* [=Hnd8Y*1G=;5>/˨Yu��fO�UӵVw:j5hȡ0{=x~xly>X~;S`/ %O%VT3��ښPW&Rh[ Hݖkh&ܨ&3玧3ۡd qp{e/֪CqE€uQҮ4i"DVZ&6.BY{c4O d{7lw=G样}O%%82g_vCw^CoXsA#݌RQjɑv]4Z\ a$ pF^qjm@[:v`H88Zmؑ72ws\nqMQ'cWr;-X[.R\]SR*;#c(�1GOֹyR8|Qlfx=XҮ[,&K �$ Jz;KkE( 9ą"XH+Omr=Ҳ0 , <qKK"p0:zu5<.k5[ 8?Lm+;Oi�{Ӥb׷HQD}OL l=}#$8D)R存# `9BMWGA$6Z *n�H$ N=O*zsHY}3{�1v�yX {uOk2ёY[4lH#8Q[E8Ce|n pp;ثH..a2-:{  [d؞s9?/Rre{$(e$ڀFǎ>ny%b'bk`U2@#q]5(}׷zkÀIby~*r p�ZRcUlt\]Ipv_#`}O_֒MJ\Xx >ZgKGm4bJli.3�}+'\ԶX{l3HY}*Y5XTޟ#}+.m]pTtڒ.N^Z־c\%r hcϸ?y)x< }M:F-{tGڀOs?Iiq@".Zق0|I$)ϱt.݁ttCo嬒�B1ԎJi @�IQlbIw:`<8�^8`G \d-啳OoFDHJ8<㎜S.h6XG튴ݳ yY!^0nhI>U+X&WHbYbMi1Ax\\,x)F S!:_Ν }{8'7{0\w '�Nե-F5[hKԗW`6�i$ԬeʬNň�'`v}^Tqٞ#AV o<F0@ 8Ҳz;KkE( 9ą"XH+Omr=Ҳ0 , <qKK"p0:zu5<.k5[ 8?Lm+;Oi�{Ӥb׷HQD}OL l=}#$8D)R存# `9BMWGA$6Z *n�H$ N=O*zsHY}3{�1v�yX {uOk2ёY[4lH#8Q[E8Ce|n pp;ثH..a2-:{  [d؞s9?/Rre{$(e$ڀFǎ>ny%b'bk`U2@#q]5(}׷zkÀIby~*r p�ZRcUlt\]Ipv_#`}O_֒MJ\Xx >ZgKGm4bJli.3�}+'\ԶX{l3HY}*Y5XTޟ#}+.m]pTtڒ.N^Z־c\%r hcϸ?y)x< }M:F-{tGڀOs?Iiq@".Zق0|I$)ϱt.݁ttCo嬒�B1ԎJi @�IQlbIw:`<8�^8`G \d-啳OoFDHJ8<㎜S.h6XG튴ݳ yY!^0nhI>U+X&WHbYbMi1Ax\\,x)F S!:_Ν }{8'7{0\w '�Nե-F5[hKԗW`6�i$ԬeʬNň�'`v}^Tqٞ#AV o<F0@ 8Ҳz;̍B_Wrb0 <dqooFkW*eZYQ3Tw?5pgc4ଓdqa'|?tm;)HOyu֬wuW'M@'b?:[KTlYP?^:rZϻ{d.=ei/4^KexҧᵌI4\G V!cr[ý8ǩ2g#`v!P\g"t75k1?KE�Q{qxW@mKjr8弧R_vZWFf4K] Rk{,bL@ r;�Qw+mid@.@P7�_¨h!lčP=@vkZN"jrAev`KHP Onǩ^x8FzH9�rO}j#kܹwCb&`i :,zcKwX2G@*i8T�I{^K<([[8c�yE5 ha'),k'h{dD3aehOFJ2OR2Gֹ? (�mL4R*|;)' Z*wo;~>sNtqë4cv�G(+2nmuY/a+2N85}V2-,(s}*;Ú31pVI8^�?> ~B<:-fכuW'M@'b?:[KTlYP?^:rZϻ{d.=ei/4^KexҧᵌI4\G V!cr[ý8ǩ2g#`v!P\g"t75k1?KE�Q{qxW@mKjr8弧R_vZWFf4K] Rk{,bL@ r;�Qw+mid@.@P7�_¨h!lčP=@vkZN"jrAev`KHP Onǩ^x8FzH9�rO}j#kܹwCb&`i :,zcKwX2G@*i8T�I{^K<([[8c�yE5 ha'),k'h{dD3aehOFJ2OR2Gֹ? (�mL4R*|;)' Z*wo;~>sNtqë4cv�G(+2nmuY/a+2N85}V2-,(s}*;Ú31pVI8^�?> ~B<:-fכuW'M@'b?:[KTlYP?^:rZϻ{d.=ei/4^KexҧᵌI4\G V!cr[ý8ǩ2g#`v!P\g"t75k1?KE�Q{qxW@mKjr8弧R_vZWFf4K] Rk{,bL@ r;�Qw+mid@.@P7�_¨h!lčP=@vkZN"jrAev`KHP Onǩ^x8FzH9�rO}j#kܹwCb&`i :,zcKwX2G@*i8T�I{^K<([[8c�yE5 ha'),k'h{dD3aehOFJ2OR2Gֹ? (�mL4R*|;)' Z*wo;~>sNtqë4cv�G(+2nmuY/a+2N85}V2-,(s}*;Ú31pVI8^�?> ~B<:-fכuW'M@'b?:[KTlYP?^:rZϻ{d.=ei/4^KexҧᵌI4\G V!cr[ý8ǩ2g#`v!P\g"t75k1?KE�Q{qxW@mKjr8弧R_vZWFf4K] Rk{,bL@ r;�Qw+mid@.@P7�_¨h!lčP=@vkZN"jrAev`KHP Onǩ^x8FzH9�rO}j#kܹwCb&`i :,zcKwX2G@*i8T�I{^K<([[8c�yE5 ha'),k'h{dD3aehOFJ2OR2Gֹ? (�mL4R*|;)' Z*wo;~>sNtqë4cv�G(+2nmuY/a+2N85}V2-,(s}*;Ú31pVI8^�?> ~B<:-fכj޸MJ)wJeUXN`5A',d灏'�ə1 ga$w{{qSˡ6@$[̀n:sZ no&haܷ/?.*ķ@+H6�=A?EB�g9s)yZ!>n�8x_-%\N:<ǔw9%,IzZӝ92lysvjΒ<~U[7clI<Cnp=DUϔ [lϿ$t]1oU쨰#+*pW#wKv %H6$Cl=�'pLE#w^*ۧI, dr9 {v8Ik }§ LwMaa^ki�"q${g?5IJ\yay8|7.ݧt{7{y:GiZUP t=* n5b٠~|t[K-XUZUd =Yyh"INxq]@VyVNrG~|j4 |EьOM'<Uf q#<1Kt 2T`T.[m/ʐ}}sjl72JϐHIc Wܱ!Y NH�0iSlyGzXĜ�?祫m9㑉S&@G=Gj#~ gQ~E]#qV8Q^q{$--;\OKE],@K18GLn^ʋ=9 p=:{zzԹop^I$bD0F3q�o{y^P>O<q9-y$H,G#ǷlӄK*r Ef'2Gsxs_K*[I(8'qW[xm.]rzO׽sw vU�qCҪV/^MJ)wJeUXN`5A',d灏'�ə1 ga$w{{qWˡ6@$[̀n:sZ no&haܷ/?.*ķ@+H6�=A?EB�g9s)yZ!>n�8x_-%\N:<ǔw9%,IzZӝ92lysvjΒ<~U[7clI<Cnp=DUϔ [lϿ$t]1oU쨰#+*pW#wKv %H6$Cl=�'pLE#w^*ۧI, dr9 {v8Ik }§ LwMaa^ki�"q${g?5IJ\yay8|7.ݧt{7{y:GiZUP t=* n5b٠~|t[K-XUZUd =Yyh"INxq]@VyVNrG~|j4 |EьOM'<Uf q#<1Kt 2T`T.[m/ʐ}}sjl72JϐHIc Wܱ!Y NH�0iSlyGzXĜ�?祫m9㑉S&@G=Gj#~ gQ~E]#qV8Q^q{$--;\OKE],@K18GLn^ʋ=9 p=:{zzԹop^I$bD0F3q�o{y^P>O<q9-y$H,G#ǷlӄK*r Ef'2Gsxs_K*[I(8'qW[xm.]rzO׽sw vU�qCҪV/^MJ)wJeUXN`5A',d灏'�ə1 ga$w{{qWˡ69I!vz~Th PB-eKNhцp9|{Zq[8yr̻bفۿn7܏omf%o;OZЖHJyQ@i7nhS9'j叇<gg, �Gmvݡ:oDvQ*X,wRly29[WY;RLF)o:}INs0ҫIxH 'ˁ-\\yٲUHuR+ 1^('u]�~ce.䃁 WoVwgkA*��@^kY8&29|�NFSs]u "GVm‡{*~SmH)q^? ǽߊzq(cA`v Hr3ұę!0&x g:TADu泦:wvbvn\A`˿!;u1�s7񪟴^鷗4%J --bt!(G˳{JAU쬴:=MI!vz~Th PB-eKNhцp9|{Zq[8yr̻bفۿn7:Y`.*m>gִ%nl?)l(Ǩ�=w66ۦp9Tqc <Bp�ಃF�*}hN[qJ Ծ[.^F N:V좷}$~c"!#+Ԧ<SxJ[kpΟ{@S7j#c/ocIKW}06q?^hlRFxTH0$l W oCn8<W8cu BA:x-y?-e�z%od4;h q_?jӑr\EBk}2HՄp.�J[v|)R cu=3׿O±|79%Jl:ctk&HL'IsmN}jU'~~Nݼh�q�t's6ALdm9?\jmĭ$M'8 oүCg KX]J"QsU{+-NOSry$b;@]߯>) ,xf�c>Yi>1RӮZ4a\�Nq$gրnN\s.ض``cp<vۿ5>7}bX&Ko O~u o䄧[ 1?oz{ 6U<}xXsvz<�x,р1gmGeRu/˗/ӟΕ{(jIȈ@=)Oj039# *ċR|_L uך=%TQ=" p1[ێj;�F6XmbH8qy& El<7jfvtb�^m4 >浚#o,#)`>ns�Zn)u15gPL$ua&(pK9ǿ?Ҫ9iݟ TOL{ NInl>Ǩ>d&n쀤#>+|I g\hn}qӯZIG_k:nywo&'la$` \ͼ2CSy9OW3}/Eyq+qI;[)B|7\l^AӬܞI$2i'ϥJn.&" )=}ϭrZOTt떍n�*pIDZ5,wӇ!˶-O}_C R¦ߦ}>kB[!)FŒz޹xkCk gO x?>񝞠$'� (<q` bvEG`K`@m^+ygڒG2">b:|bJo1 >F $9HJ&61"&8.pgsfU!guHtFx }<vw�Q7[hX$~ {q^c'B[ ڧX��{ע[xfMOyfX�֭9]Lg%tY&$XI NqNZEg• 1S={+~*Ӓ[1ġɁۻ )#9ϧJƿdtW8&�[qt֥R}Λ]ap <pA{3o.LFNsxKƪ~{\JrDs*6~0eЄ%.9(=Wt$7'I&/ I}RBdži p_3\/:F F}Mh ?ntw2f7nSso%Haw;eqdCLev3}~Ila8?w>w�VDڤmpTc9۱b=;&2(H>;溍OSmeȃVĞԏZhm7񐅃`7%9<~Gw<Vk;s8k*U)j+A!FK9:r=u-m#XTFbz6l !�r<?C~4 Oץf穪KK*Š 㑂z㞿U-zk:do.c\ǘ&@l *43[DžqH5>Ov^IM:?U nHM+Xd.Gā#QUQlVwץSa%%k,P KLbbI;TuI$ӭ\ 4dܻvG$�8)t6.9؀0<m�|�jVgY3sө\[I,dI9Lr}1ןz p� lA*m\0nTs\P:fM1d1ʨF[c?O߷/y�dMM PL^AF1#_LpOzv4�qA1B@pČ5jzO[k/6D,$zאCiF/,,N?ͥ۽ؑ巈H?^N�1֫+]qRNWUX" 7r]T ӑ .ki¤23 )VCd `t3y9*I@ V}:~+7=MU-6]zYVT`@`7�"k]#xu><Y7r{`gQE<,DF~�9|KNl%/Ԉ /ZKuEJiZS&yw"<$ Š~n;`u秽ZF* ),�_OcX.9bPJZcIڣI'j/Y+&۷%9 OEN u}4a̾V`).AoOTU"e8 ɜs篮~LW2HieV%Ic鎼x6[��N'sgVjQKr0̻2傁8�k2i!UB2߻>}դo0`wN;�"mRm6bg8 1c{۱-}GX@ $`ϧ?SYy d'#ּM1|d!` bpO}>m.fď-EA2p\1ZCFvz/0Hpѻdvpiug[H!^M$c@69PߪM2l(xYjiʰ(`n^Ι 2ɻ3=J",b d3F`϶]va)|G)�zB[R*SJ:5{˹q HUTCq==՝5TdI`G{v1*RN~RI=W!xY7.ݹ-`r*.p] e ;L)rz?q(8%VL=}sbWEK*-NSLuޫB$%%8�py;8JW2"[!e,qsYL~ m2 %y3@ q�YjiC9WmQކݍ!k?:zwPLdP1#v}=qwu͑$=>/`o! nKrxivegs6$ym,ׁ? wqrT4SayVCܗU$st{K>ZF ň,03� m$@C y Ri#aG?NJSUKM^U!G #=ȫvZnt8]tƸ1M܁=zTiff �$0=k}켓 Ku"9H~ ֪zRVɫ]ȏ+G}9VJ$JK'? XTĒvI?Z lh ɹvlH'qQvSl]_Ms/ aKx�(5{A,g럧S /YUlrc>^ !)(!�nUڹaܩ 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>6i _SJkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qT⻑ lexPҮP#`XmO?^uu}t-I‘ǧ=o|Oz~enrr;{Vτt@=ƧTB9<wd Yz>T9�H4Z(,C<p>�F_>k0xß  ӭz$72ERl,#g ZX_e,�p3o'�]s+;5~۴ePFn=W@<6 n, ?wx\VKˋ*t�s�M(+ٓ)NZ-O$n5nTyo sS2|K8=U! hdX"@tWWš4"Oj-OvF\`R{wء{ѽ'|˲=ś;P[A>ՂBpy3sS/;qyRݡ~q\cf,EVE ̑rsީ(dȻ] ɮ-.xw0ʒ8#85 [-v0`~_tzwB~jvVCo6HBN};u9auf7QTz1+PW *E1V U9wW^,!0iN[Dhho,)zps˴wYv,w)ϡlGN Zj~UD*\piJ_>,ЕGH,c`$�H|U HR3=Teoc 9PP0:Cs$Q&AQ9߹p_]B˨�6<w�>ڮBWF^Eo؁t `p3ڛ|1ȅd*~A*A?҂2BO$F[A6G6�<u8 l,s Xˌds-x޵RƆKe2.@>zu|)I$0$d`�/w}Οmy̻#Yc?53X$*y))8#?52/÷g-':<kx2^,kR >g'=ꒋVLܚ8Ws mS0:�sPj(!k GG|T'Ƨeh6nĉ/ӽ0xS&ZcuoJ88P⻕ lexPҮP#`XmO?^uu}t-I‘ǧ=o|Oz~enrr;{Vτt@=ƧTB9<wd Yz>T9�H4Z(,C<p>�F_>k0xß  ӭz$72ERl,#g ZX_e,�p3o'�]s+;5~۴ePFn=W@<6 n, ?wx\VKˋ*t�s�M(+ٓ)NZ-O$n5nTyo sS2|K8=U! hdX"@tWWš4"Oj-OvF\`R{wء{ѽ'|˲=ś;P[A>ՂBpy3sS/;qyRݡ~q\cf,EVE ̑rsީ(dȻ] ɮ-.xw0ʒ8#85 [-v0`~_tzwB~jvVCo6HBN};u9auf7QTz1+PW *E1V U9wW^,!0iN[Dhho,)zps˴wYv,w)ϡlGN Zj~UD*\piJ_>,ЕGH,c`$�H|U HR3=Teoc 9PP0:Cs$Q&AQ9߹p_]B˨�6<w�>ڮBWF^Eo؁t `p3ڛ|1ȅd*~A*A?҂2BO$F[A6G6�<u8 l,s Xˌds-x޵RƆKe2.@>zu|)I$0$d`�/w}Οmy̻#Yc?53X$*y))8#?52/÷g-':<kx2^,kR >g'=ꒋVLܚ8Ws mS0:�sPj(!k GG|T'Ƨeh6nĉ/ӽ0xS&ZcuoJ88P⻕ lzp*F$Uر@:}~ϫʗ";`3h7qra7 ]f'W;ܮFj[],?Y@o$,�>,Ŭ*G_bsoOˑ>x񀮸p`I~F\:\mI`ӯ^iI u_19ʹG1gVo�<YY|GHؐ>#B#@rzddg'$NJ J-l>@H$:mnҺ: !I�!TcpG_P h$(w6q}1W$ӝJF qs�Ungy#Cۮp2CX]X閌٧#f"@$%AqNJ)Ǘ4FB,cq|ZAqsِ<o,ād/|UZ74{$GAq}*C+$1C,&4 <qWso.Kq<s\#B�{wyNEghG>^Ơ=yPH;`x�jҖ�#wkcKry�szjV2V'ble�0H;>*^8lǫzUe7#Iw dY=fݢeBRɬZ¤}'6Ywo 8jåԑv p8=:Ԟ@^-LDxc}a6̿Mŕ|ﴀ=i1kۤ(">'NOr{KKxr0I!N}v +-dF7�quU HP\LNBsgrK9Ԥl=�Vfyǘ�B<d='5UՎh,{x6b$BTt쭢ysDd!>7G88lU0͖ H=BYsGMOp9ҩZ92C2m@#HrOZ|7<�g1O50T* ׸wt^Fvds=O5$<ɿsه 䃹8zv)o1Gv:\.. />I&c.Ubv,FP<c_sp6 z\XMy4~�I@�>ܮFj[],?Y@o$,�>,Ŭ*G_bsoOˑ>x񀮸p`I~F\:\mI`ӯ^iI u_19ʹG1gVo�<YY|GHؐ>#B#@rzddg'$NJ J-l>@H$:mnҺ: !I�!TcpG_P h$(w6q}1W$ӝJF qs�Ungy#Cۮp2CX]X閌٧#f"@$%AqNJ)Ǘ4FB,cq|ZAqsِ<o,ād/|UZ74{$GAq}*C+$1C,&4 <qWso.Kq<s\#B�{wyNEghG>^Ơ=yPH;`x�jҖ�#wkcKry�szjV2V'ble�0H;>*^8lǫzUe7#Iw dY=fݢeBRɬZ¤}'6Ywo 8jåԑv p8=:Ԟ@^-LDxc}a6̿Mŕ|ﴀ=i1kۤ(">'NOr{KKxr0I!N}v +-dF7�quU HP\LNBsgrK9Ԥl=�Vfyǘ�B<d='5UՎh,{x6b$BTt쭢ysDd!>7G88lU0͖ H=BYsGMOp9ҩZ92C2m@#HrOZ|7<�g1O50T* ׸wt^Fvds=O5$<ɿsه 䃹8zv)o1Gv:\.. />I&c.Ubv,FP<c_sp6 z\XMy4~�I@�>ܮFdjU�FI${\z3ZUc,rȲ?ң9>.d# c <#oOߚD*3㯨cCHI<m6ǂι={] drB߰9Ӑ:}!w$q,O1yz[+< bIT8RC;~F=I}u=<̬Ip:8On1äiA]y](ʌsߓ6ºj[S-:?G�^+ҿ41ZZ[ܐ&cd�cP\B^kK$*�r�Eu Ed$l ,I˷X"t.YS#+\pBOR{wx>}=JqR6A/Q+^Ϋ4.SH^HQif+j[WRa8V HAN ?KߵxYB߯ޯx#Β(Q[C 9IcY?-@5/'!{ +Fx4T<qz8OYGwwcjdS9NI< WE?ԼV_|�F<w? W].Y˰8 A_]I4 sk ] $q= ^쪱9idYF@QhQxӂMBF1UU"?qQh6CHI<m6ǂι={] drB߰9Ӑ:}!w$q,O1yz[+< bIT8RC;~F=I}u=<̬Ip:8On1äiA]y](ʌsߓ6ºj[S-:?G�^+ҿ41ZZ[ܐ&cd�cP\B^kK$*�r�Eu Ed$l ,I˷X"t.YS#+\pBOR{wx>}=JqR6A/Q+^Ϋ4.SH^HQif+j[WRa8V HAN ?KߵxYB߯ޯx#Β(Q[C 9IcY?-@5/'!{ +Fx4T<qz8OYGwwcjdS9NI< WE?ԼV_|�F<w? W].Y˰8 A_]I4 sk ] $q= ^쪱9idYF@QhQxӂMBF1UU"?qQh6CHI<m6ǂι={] drB߰9Ӑ:}!w$q,O1yz[+< bIT8RC;~F=I}u=<̬Ip:8On1äiA]y](ʌsߓ6ºj[S-:?G�^+ҿ41ZZ[ܐ&cd�cP\B^kK$*�r�Eu Ed$l ,I˷X"t.YS#+\pBOR{wx>}=JqR6A/Q+^Ϋ4.SH^HQif+j[WRa8V HAN ?KߵxYB߯ޯx#Β(Q[C 9IcY?-@5/'!{ +Fx4T<qz8OYGwwcjdS9NI< WE?ԼV_|�F<w? W].Y˰8 A_]I4 sk ] $q= ^쪱9idYF@QhQxӂMBF1UU"?qQh6CHI<m6ǂι={] drB߰9Ӑ:}!w$q,O1yz[+< bIT8RC;~F=I}u=<̬Ip:8On1äiA]y](ʌsߓ6ºj[S-:?G�^+ҿ41ZZ[ܐ&cd�cP\B^kK$*�r�Eu Ed$l ,I˷X"t.YS#+\pBOR{wx>}=JqR6A/Q+^Ϋ4.SH^HQif+j[WRa8V HAN ?KߵxYB߯ޯx#Β(Q[C 9IcY?-@5/'!{ +Fx4T<qz8OYGwwcjdS9NI< WE?ԼV_|�F<w? W].Y˰8 A_]I4 sk ] $q= ^쪱9idYF@QhQxӂMBF1UU"?qQh6CVh?? QN�^:S-Ȭ**2vc٬B <u`P|'< }8LɈ_+<�+ 9#Cۊ] Q"vdp'*KwKx3C͆qV%X*Dy*@tX-H@>56O^BĥU g$g$1pInXĐ,P|�zju4)A< ,bN�նĩd̏#CWt3b". {`(DHwCx'%|T%ǘcf}#Z}MүeEYPs=Ensj\ӷi/$A"#`8=b/('CU<ՒIdc$#w۶iKX%9zck ]3NV@�v#9�<W9%l$mz-6qƋ.v=v޹ȅ;LrҪy�8~Ukq\& ;2YlªҬc'f0Nq GYN2s�d̘̏s;=כQK-nf@7zm9t40Ln[ab[QL�tOEixT�3Sa<- JUP|FrH7�d /I e w@xXLҝd[c;М$�=-[iΏJ6H<9;T5pI{?f*-`ǶK$nQlp7t8J~"Z*gB\y6gߒ:`ut*TX핕 W8+VG;֥;{I$!6�~&"|;ϯYmY$H2Ab9G~=f$\>SHNǦ;&/54d�8a=sYVIFAǮy<늼mqwhRnn:~뛽_#-*:Pzh?? QN�^:S-Ȭ**2vc٬B <u`P|'< }8LɈ_+<�+ 9#Cۊ] yQ"vdp'*KwKx3C͆qV%X*Dy*@tX-H@>56O^BĥU g$g$1pInXĐ,P|�zju4)A< ,bN�նĩd̏#CWt3b". {`(DHwCx'%|T%ǘcf}#Z}MүeEYPs=Ensj\ӷi/$A"#`8=b/('CU<ՒIdc$#w۶iKX%9zck ]3NV@�v#9�<W9%l$mz-6qƋ.v=v޹ȅ;LrҪy�8~Ukq\& ;2YlªҬc'f0Nq GYN2s�d̘̏s;=כQK-nf@7zm9t40Ln[ab[QL�tOEixT�3Sa<- JUP|FrH7�d /I e w@xXLҝd[c;М$�=-[iΏJ6H<9;T5pI{?f*-`ǶK$nQlp7t8J~"Z*gB\y6gߒ:`ut*TX핕 W8+VG;֥;{I$!6�~&"|;ϯYmY$H2Ab9G~=f$\>SHNǦ;&/54d�8a=sYVIFAǮy<늼mqwhRnn:~뛽_#-*:Pzh?? QN�^:S-Ȭ**2vc٬B <u`P|'< }8LɈ_+<�+ 9#Cۊ] y)$L_h ҥ7D �Lgֹk-'*_:uF7 I8$ؚ~;ːe nwپ{xCk1,|߷M׿L}:քBS-緽rNֆtG*A><CW,|9;=AgHN�<PxhO ֋z#)RceJڽVϵ$dD |uqڔ'b5 Kx|nrH sZMClbEMp)>\ j/:͒C^A8x5g�,nбw$H8@^OxO3;^ P��DgbZ779�Zr7K賨MoI:n8%ܜߟUc򜴋nυ*ALczV=U$6ccC2 v@RGLsN~>$ 3pM�>8׏J#57IӼ0r0xf]!۩'+TM䉤-Ulaikˡ DJ>]߮rP6{ eeInO$L_h ҥ7D �Lgֹk-'*_:uF7 I8$ؚ~;ːe nwپ/K)pwSi>N-paKaF=G\Ӽoq3ʧsOxPY�801SBuވ죊TXr0 esҶeI#1G1\v7☍CR#[tܒ$aVP|{ OZ 遳Gd3ǺWA#`bPN>z;q� Y(,]?=1ד!hSׁn,T��=-3{&ؼֳApMe,Îr�V.3,[D$ۅ w'8UX-"۳JS鞽~{i-͇P̃dݐgӥc_2Ba:L+m�-ϸ:uR>gMt.D0ܸ8=뙷~&Bvc#o'9� o%U?ho.%n9"i9`K~z?ZZ2BQf뜔 Yh:uz$B$>yM@c48ZIΝrѣ Rs #>&v:p;vų~ot67\xT}{ϧӭhK$%<(~RQQ{{ 4mhmaL4r5rÞ3y�#e6T;nНh;(,;|\~tEo,RHDBGQWMx#P𔷁>$9oU<F$_`l~*:`Hއpx�Vq?J1m rAn+u7Z+aT3~[��zKo ɠiv/5AyaKp㜾է#qK乮:d# 6C]=V?)HR8zg~coZrKsa=F81 0;wd$t9XLN< @ s3xԪO:sYt;˻x1;c 7. �0Ozm߉r¹ xO/tˉ[HNqߥ^LDٽ%gVZdI$vI=^}*Sqq4A(X!N}k|b\hpTHϾ=gݭΜ<]lx߷~j}o İM~6^3Z O7 6c ;ZXm8 y8 \y!8�YA㍣�c>۴'Z-8K_-/#_?+jQ[>Ԓ?1{jSx)<%-a5gO )rFUi57p%8럯4{6J<{E{6+c+՜wҌlBܐp! ۊy<Mxn<x2@�޽7h}k4GXFR|8/iRc9.kΡ5$HMPrs~Ur->1:ߧXV}Q% |6LI1F}:V5$&6^>*?h\t'N?LN ˀH8: ޹ywd n26sf^5S6V&vW񅥬S.%(vo~@*Y'<I1|d.OCןJ\MD <3HSz1Z嬴|-0.�U'83bk@Y7ks.Cl[001;wߚfxi*C ˹C.X( &eT#-ZKffyA�Z&&o(&s ڣϯ8'&݈�qA1B@pČ5jzO[k/6D,$zאCiF/,,N?ͥ۽ؑ巈H?^N�1֫+]qRNWUX" 7r]T ӑ .ki¤23 )VCd `t3y9*I@ V}:~+7=MU-6]zYVT`@`7�"k]#xu><Y7r{`gQE<,DF~�9|KNl%/Ԉ /ZKuEJiZS&yw"<$ Š~n;`u秽ZF* ),�_OcX.9bPJZcIڣI'j/Y+&۷%9 OEN u}4a̾V`).AoOTU"e8 ɜs篮~LW2HieV%Ic鎼x6[��N'sgVjQKr0̻2傁8�k2i!UB2߻>}դo0`wN;�"mRm6bg8 1c{۱-}GX@ $`ϧ?SYy d'#ּM1|d!` bpO}>m.fď-EA2p\1ZCFvz/0Hpѻdvpiug[H!^M$c@69PߪM2l(xYjiʰ(`n^Ι 2ɻ3=J",b d3F`϶]va)|G)�zB[R*SJ:5{˹q HUTCq==՝5TdI`G{v1*RN~RI=W!xY7.ݹ-`r*.p] e ;L)rz?q(8%VL=}sbWEK*-NSLuޫB$%%8�py;8JW2"[!e,qsYL~ m2 %y3@ q�YjiC9WmQކݍ!k?:zwPLdP1#v}=qwu͑$=>/`o! nKrxivegs6$ym,ׁ? wqrT4SayVCܗU$st{K>ZF ň,03� m$@C y Ri#aG?NJSUKM^U!G #=ȫvZnt8]tƸ1M܁=zTiff �$0=k}켓 Ku"9H~ ֪zRVɫ]ȏ+G}9VJ$JK'? XTĒvI?Z lh ɹvlH'qQvSl]_Ms/ aKx�(5{A,g럧S /YUlrc>^ !)(!�nUڹaܩ 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>6i _Q!#,*c";þk8,^l>Y%o,I0=H!{|_X6rXOK{+;#oelv cW3VQ& "D4n亨##]GY5Hdf,A`1קSl`" g sT7L >@1tzVnzZl$( <n9'9E[׮sF5|yn AңH35xX8$сsX3e䝤J_@#^PԊҵM^Dy\H=UvOzgxzU6"RX=?ư]r &$G_OA:^+`@VM˷nKdrA8󊋲CbhÙ|S \ޟAEn fp8=_\:Ÿd|ʭKd'ymP IA��N;tҭ̣Haw;eqdCLev3}~Ila8?w>w�VDڤmpTc9cHZS]4Z\ a$ pF^qjm@[:v`H88Zmؑ72ws\nqMQ'c܈Nc+v"Oiv*oy滫h4Im-L4o7=89{{|;C,;s;Ёڶn|#j-V5?*oA4%}fhJ#Q10x�Fɤ>*$ODIbت27YX(OofoK^y!(ad 8^/JƂ.e�y?;�mWN~!Yxݣ/" 7q@qSu`FƸ\wMB^\\? YSP�_jiA^̙Jrաl'y#vYrț|΀c:tnw,K2XFoZtcC%Ʋ  p=GJѤ}[Qh|۲0z� ܻ gO<],ݱ皂r<뚙|ۏ3ʖ gzמk5b/ZR)dOv3IE&EnMtis+T6yֹZݵlك#׌*Sg}jybDsޘ<  s17ʥGМq(q]ʄ2_iWb(tgl6'Nkf Nt$FCyaHӃ]ý?2s9cN}f:v]cS!V;OܲW؏zif=E*Ac $gCDD!8�q튣/{5]aʅi�tE")6B `NOrDh/2]@�8�tgΚgm2(@#|7^+_7^Olkq< .D+%S U: �9�ɔ-Zy'7e *<9Lkag{ľ\c%knG@42\k,ap:�AtMH'յ'ͻ#0�|˻Pth>eQy- j!SIN8<~<ny?h8׮1y["Ae\"fHc99TZd]M<q»eIjלw}kPA]0R?/=x;?5;+Fw֡v$M̡~>03S|Tp= ܨNc+v"Oiv*oy滫h4Im-L4o7=89{{|;C,;s;Ёڶn|#j-V5?*oA4%}fhJ#Q10x�Fɤ>*$ODIbت27YX(OofoK^y!(ad 8^/JƂ.e�y?;�mWN~!Yxݣ/" 7q@qSu`FƸ\wMB^\\? YSP�_jiA^̙Jrաl'y#vYrț|΀c:tnw,K2XFoZtcC%Ʋ  p=GJѤ}[Qh|۲0z� ܻ gO<],ݱ皂r<뚙|ۏ3ʖ gzמk5b/ZR)dOv3IE&EnMtis+T6yֹZݵlك#׌*Sg}jybDsޘ<  s17ʥGМq(q]ʄ2_iWb(tgl6'Nkf Nt$FCyaHӃ]ý?2s9cN}f:v]cS!V;OܲW؏zif=E*Ac $gCDD!8�q튣/{5]aʅi�tE")6B `NOrDh/2]@�8�tgΚgm2(@#|7^+_7^Olkq< .D+%S U: �9�ɔ-Zy'7e *<9Lkag{ľ\c%knG@42\k,ap:�AtMH'յ'ͻ#0�|˻Pth>eQy- j!SIN8<~<ny?h8׮1y["Ae\"fHc99TZd]M<q»eIjלw}kPA]0R?/=x;?5;+Fw֡v$M̡~>03S|Tp= ܨNcKԗW`6�i$ԬeʬNň�'`v}^Tqٞ#AV o<F0@ 8ҹގr3Ra|q!gȩd-aR>z~\aŷuÇ Oc5RjH8 zMjO KZp&m<w1>}_>w@ā4fj''9=_H %ǎ<Q�TkfFGy$>hvI H 8R:*(.& D'!FӹS銹%ޜR6Vx_h}@�zw3<]!V2s*LdwV=i1!*:sTvVN<2c#Ƕ* v́yd$!{鹣&'8sTb^!e6x9'㏭r{rX㘧*LPHWs:v/#;Gp29|Xd߹ʅrA܃�=;Vm[.R\]SR*;#c(�1GOֹyR8|Qlfx=XҮ[,&K �$ JW#5-,7plMb#쯱?J˼[xW\8p$?#U..6pSׯ4֤ of#|3+e�ln,>O#}HSN^!Fi9=2p2}Z\xK` $dyI s6`i]k$1u#ҨZB`4@rm;8>]Υ#eg89�תs3<`!8?btFGyelƑ 8?Gem˚#! 1>Q{b llHb@2*-n=obx#Ϡ8J!ɕlXjGsr8+%89yTlu�dw;h3}#^y'ʼnM<W$0 <�sӵiKV;qu%U9|<9=ZI5+rb62 $tkW/cEvgnՈ=*nN2r3Ra|q!gȩd-aR>z~\aŷuÇ Oc5RjH8 zMjO KZp&m<w1>}_>w@ā4fj''9=_H %ǎ<Q�TkfFGy$>hvI H 8R:*(.& D'!FӹS銹%ޜR6Vx_h}@�zw3<]!V2s*LdwV=i1!*:sTvVN<2c#Ƕ* v́yd$!{鹣&'8sTb^!e6x9'㏭r{rX㘧*LPHWs:v/#;Gp29|Xd߹ʅrA܃�=;Vm[.R\]SR*;#c(�1GOֹyR8|Qlfx=XҮ[,&K �$ JW#5-,7plMb#쯱?J˼[xW\8p$?#U..6pSׯ4֤ of#|3+e�ln,>O#}HSN^!Fi9=2p2}Z\xK` $dyI s6`i]k$1u#ҨZB`4@rm;8>]Υ#eg89�תs3<`!8?btFGyelƑ 8?Gem˚#! 1>Q{b llHb@2*-n=obx#Ϡ8J!ɕlXjGsr8+%89yTlu�dw;h3}#^y'ʼnM<W$0 <�sӵiKV;qu%U9|<9=ZI5+rb62 $tkW/cEvgnՈ=*nN2r3#P6j0܀،O'sњʫcEd 9�>\w8+$d/�dcXI[}?~!SG}EmhUDI䇓n<6u؏θU0[#gb6�׎ֳ #Yd~+ג^8mcM,•BܖN*1LG{ed"HGp362{q#M ZdF�.Tc})%[Rڜ9o)ԡ?:]YBԚ5%pwz*(bdJZY$PK +Z-%#`T9bOP;]rȶZA]cz۽kqW#ꑶ@|ZZ.u]ؼIrBE *K1^kR⺖# o G2sU=?^0 86~f=n~tEeBIKm^|< YZ4QҠԌOz?+S$ 9rI$.)䊷z 0ǩߏ\Ӽ%]$@rqp]8J LE[]VK�5J@lF'9pmjeUK"2�JG pƜl221$e?~i#EYUDI䇓n<6u؏θU0[#gb6�׎ֳ #Yd~+ג^8mcM,•BܖN*1LG{ed"HGp362{q#M ZdF�.Tc})%[Rڜ9o)ԡ?:]YBԚ5%pwz*(bdJZY$PK +Z-%#`T9bOP;]rȶZA]cz۽kqW#ꑶ@|ZZ.u]ؼIrBE *K1^kR⺖# o G2sU=?^0 86~f=n~tEeBIKm^|< YZ4QҠԌOz?+S$ 9rI$.)䊷z 0ǩߏ\Ӽ%]$@rqp]8J LE[]VK�5J@lF'9pmjeUK"2�JG pƜl221$e?~i#EYUDI䇓n<6u؏θU0[#gb6�׎ֳ #Yd~+ג^8mcM,•BܖN*1LG{ed"HGp362{q#M ZdF�.Tc})%[Rڜ9o)ԡ?:]YBԚ5%pwz*(bdJZY$PK +Z-%#`T9bOP;]rȶZA]cz۽kqW#ꑶ@|ZZ.u]ؼIrBE *K1^kR⺖# o G2sU=?^0 86~f=n~tEeBIKm^|< YZ4QҠԌOz?+S$ 9rI$.)䊷z 0ǩߏ\Ӽ%]$@rqp]8J LE[]VK�5J@lF'9pmjeUK"2�JG pƜl221$e?~i#EYUDI䇓n<6u؏θU0[#gb6�׎ֳ #Yd~+ג^8mcM,•BܖN*1LG{ed"HGp362{q#M ZdF�.Tc})%[Rڜ9o)ԡ?:]YBԚ5%pwz*(bdJZY$PK +Z-%#`T9bOP;]rȶZA]cz۽kqW#ꑶ@|ZZ.u]ؼIrBE *K1^kR⺖# o G2sU=?^0 86~f=n~tEeBIKm^|< YZ4QҠԌOz?+S$ 9rI$.)䊷z 0ǩߏ\Ӽ%]$@rqp]8J LE[]VK�5J@lF'9pmjeUK"2�JG pƜl221$e?~i#EYGfiRpzҙm,vEaUiV1'8gI壬j'9c v2fLEYGXm9Tmͨ%F3 =6V[[ F&l7- ˊƱ-(R& PsQPm*B�y~r%*Hs>A#9$q2N^r$Id2; <{StiN-NI` px��GF%L$d}s=EwlXEz%G`DO(P8sq?-t.<V30:L[n{*,ʄ++w#R杽Iy$ �A{� \y@>H|׊欒K$C H#ݳNZ.p$'c�XXmr�c~q,eofa$h <Xu^imᶸ4_)w˷i?^D/ΑcTJC[Xz4vh柅(�gq)gdVVc;1sl~Z:ȰF>Rq>wWc&dP/dӜߡ_.ڍ_(otc2h ?h%`bfrp k"`�<�w :z,K _\皛 ̧/!hbR33G$U|,bHdC(SR�=sǵ:Lf Qބ�'jNtxbTɲAGQڡ:H߈1T_n{U=W\^$v tDeほ<`zWWK>P*en1>tžۦWlNB\lޢ9޵.i4I ؑ  g�[xE1!w}xnj$D1 ;4%p Bv=15y+ �p; �+ʶVFfJ6=s\UkExܻvq\B9iU@<xp?5Ջ׮GfiRpzҙm,vEaUiV1'8gI壬j'9c v2fLEYGXm9Ukͨ%F3 =6V[[ F&l7- ˊƱ-(R& PsQPm*B�y~r%*Hs>A#9$q2N^r$Id2; <{StiN-NI` px��GF%L$d}s=EwlXEz%G`DO(P8sq?-t.<V30:L[n{*,ʄ++w#R杽Iy$ �A{� \y@>H|׊欒K$C H#ݳNZ.p$'c�XXmr�c~q,eofa$h <Xu^imᶸ4_)w˷i?^D/ΑcTJC[Xz4vh柅(�gq)gdVVc;1sl~Z:ȰF>Rq>wWc&dP/dӜߡ_.ڍ_(otc2h ?h%`bfrp k"`�<�w :z,K _\皛 ̧/!hbR33G$U|,bHdC(SR�=sǵ:Lf Qބ�'jNtxbTɲAGQڡ:H߈1T_n{U=W\^$v tDeほ<`zWWK>P*en1>tžۦWlNB\lޢ9޵.i4I ؑ  g�[xE1!w}xnj$D1 ;4%p Bv=15y+ �p; �+ʶVFfJ6=s\UkExܻvq\B9iU@<xp?5Ջ׮GfiRpzҙm,vEaUiV1'8gI壬j'9c v2fLEYGXm9UkͩNy$b;@]߯>) ,xf�c>Yi>1RӮZ4a\�Nq$gրnN\s.ض``cp<vۿ5~#:Y`.*m>gִ%nl?)l(Ǩ�=w66ۦp9Tqc <Bp�ಃF�*}hN[qJ Ծ[.^F N:V좷}$~c"!#+Ԧ<SxJ[kpΟ{@S7j#c/ocIKW}06q?^hlRFxTH0$l W oCn8<W8cu BA:x-y?-e�z%od4;h q_?jӑr\EBk}2HՄp.�J[v|)R cu=3׿O±|79%Jl:ctk&HL'IsmN}jU'~~Nݼh�q�t's6ALdm9?\jmĭ$M'8 oүCg KX]J"QsU{+-NOSry$b;@]߯>) ,xf�c>Yi>1RӮZ4a\�Nq$gրnN\s.ض``cp<vۿ5>7}bX&Ko O~u o䄧[ 1?oz{ 6U<}xXsvz<�x,р1gmGeRu/˗/ӟΕ{(jIȈ@=)Oj039# *ċR|_L uך=%TQ=" p1[ێj;�F6XmbH8qy& El<7jfvtb�^m4 >浚#o,#)`>ns�Zn)u15gPL$ua&(pK9ǿ?Ҫ9iݟ TOL{ NInl>Ǩ>d&n쀤#>+|I g\hn}qӯZIG_k:nywo&'la$` \ͼ2CSy9OW3}/Eyq+qI;[)B|7\l^AӬܞI$2i'ϥJn.&" )=}ϭrZOTt떍n�*pIDZ5,wӇ!˶-O}_C R¦ߦ}>kB[!)FŒz޹xkCk gO x?>񝞠$'� (<q` bvEG`K`@m^+ygڒG2">b:|bJo1 >F $9HJ&61"&8.pgsfU!guHtFx }<vw�Q7[hX$~ {q^c'B[ ڧX��{ע[xfMOyfX�֭9]Lg%tY&$XI NqNZEg• 1S={+~*Ӓ[1ġɁۻ )#9ϧJƿdtW8&�[qt֥R}Λ]ap <pA{3o.LFNsxKƪ~{\JrDs*6~0eЄ%.9(=Wt$7'I&/ I}RBdži p_3\/:F F}Mh ?ntw2f7nSsomf%o;OZЖHJyQ@i7nhS9'j叇<gg, �Gmvݡ:oDvQ*X,wRly29[WY;RLF)o:}INs0ҫIxH 'ˁ-\\yٲUHuR+ 1^('u]�~ce.䃁 WoVwgkA*��@^kY8&29|�NFSs]u "GVm‡{*~SmH)q^? ǽߊzq(cA`v Hr3ұę!0&x g:TADu泦:wvbvn\A`˿!;u1�s7񪟴^鷗4%J --bt!(G˳{JAU쬴:=MI!vz~Th PB-eKNhцp9|{Zq[8yr̻bفۿn7;IRf]r@g54*o݌?~߀[7s0;�Ց66xD1A3y}}1=6D-}GX@ $`ϧ?SYy d'#ּM1|d!` bpO}>m.fď-EA2p\1ZCFvz/0Hpѻdvpiug[H!^M$c@69PߪM2l(xYjiʰ(`n^Ι 2ɻ3=J",b d3F`϶]va)|G)�zB[R*SJ:5{˹q HUTCq==՝5TdI`G{v1*RN~RI=W!xY7.ݹ-`r*.p] e ;L)rz?q(8%VL=}sbWEK*-NSLuޫB$%%8�py;8JW2"[!e,qsYL~ m2 %y3@ q�YjiC9WmQކݍ!k?:zwPLdP1#v}=qwu͑$=>/`o! nKrxivegs6$ym,ׁ? wqrT4SayVCܗU$st{K>ZF ň,03� m$@C y Ri#aG?NJSUKM^U!G #=ȫvZnt8]tƸ1M܁=zTiff �$0=k}켓 Ku"9H~ ֪zRVɫ]ȏ+G}9VJ$JK'? XTĒvI?Z lh ɹvlH'qQvSl]_Ms/ aKx�(5{A,g럧S /YUlrc>^ !)(!�nUڹaܩ 3.u `u3?Ú̚cciP~Ͽo_ui-9ӎ�jțTM"jcG>6i _Q!#,*c";þk8,^l>Y%o,I0=H!{|_X6rXOK{+;#oelv cW3VQ& "D4n亨##]GY5Hdf,A`1קSl`" g sT7L >@1tzVnzZl$( <n9'9E[׮sF5|yn AңH35xX8$сsX3e䝤J_@#^PԊҵM^Dy\H=UvOzgxzU6"RX=?ư]r &$G_OA:^+`@VM˷nKdrA8󊋲CbhÙ|S \ޟAEn fp8=_\:Ÿd|ʭKd'ymP IA��N;tҭ̣Haw;eqdCLev3}~Ila8?w>w�VDڤmpTc9cHZgT$ HݟO\~]Fd�edA+ybOqGy46bB?#|]Y͉[x+ddjb܇*y5X^a w%@�x9:ϖ*C#1b  ?›ek6I@m9s¡TdQhӧҳsRa%ץaEHQq=q_*ݖp5۝27]1ew gz^DYA8$g_mĻ/$&RHR^Tu2jr#@(_Nz{ի;kҩ 5c(U11$:z֮B[n]r[# �T]WFl@vR6�5J E^+vPpK39z~-$Un2[$9>ϽWjHJJp�w6q۠meD*C ˹C.X( &eT#-ZKffyA�Z&&o(&s ڣϯ8' BҚ8Ws mS0:�sPj(!k GG|T'Ƨeh6nĉ/ӽ0xS&ZcuoJ88U8Bv[^/4:{HX3AVxק5]xD_]:Kima}qC.ޟfۜܧ>ճs;P.ajU}rOgY+G~c4BVA A3M!V"}J"K8Q὏.0BB{|4^ ̑G !F0H~~֢V4u .� �\jv M_ƶy fb/Ï '65Gjl"ʝr�SJ dS a<mەDt{t5́b_.15lE{zH|#C.50ȸP�n:U$HڋDݑ�T^(^:}olf2qf�<|ϵ`䤧F@\yThc<n~Yx ծbH3$r|J-Y2.CrkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qCT'eCJCU;daA<zs]׋4HLuӤ&7 G=>!ks@[7>ӵQ Fq~咾{3O4%d(R <�I#?h'Ԣ$ lU~~T,'3N{/<qITczwj}/{j%cA|_P�ͼ�u϶k?t<knїBa z]8)|#c\.;v_ Ar!Y/..JJg(�4fL9jж<,MQMg@1N:gC[ ;%,#\t^T:1Yc ]_ hD>L >m=qK]bFhA.nzAo9V JJqdL ǙKv3Aq5  -Z)2G'ϻzՓ"t7&h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN88Bv[^/4:{HX3AVxק5]xD_]:Kima}qC.ޟfۜܧ>ճs;P.ajU}rOgY+G~c4BVA A3M!V"}J"K8Q὏.0BB{|4^ ̑G !F0H~~֢V4u .� �\jv M_ƶy fb/Ï '65Gjl"ʝr�SJ dS a<mەDt{t5́b_.15lE{zH|#C.50ȸP�n:U$HڋDݑ�T^(^:}olf2qf�<|ϵ`䤧F@\yThc<n~Yx ծbH3$r|J-Y2.CrkK8]2N;>B `])gP;Pͻ&PSN]Nx]kn)U*8qCT'eCJCU;daA<zs]׋4HLuӤ&7 G=>!ks@[7>ӵQ Fq~咾{3O4%d(R <�I#?h'Ԣ$ lU~~T,'3N{/<qITczwj}/{j%cA|_P�ͼ�u϶k?t<knїBa z]8)|#c\.;v_ Ar!Y/..JJg(�4fL9jж<,MQMg@1N:gC[ ;%,#\t^T:1Yc ]_ hD>L >m=qK]bFhA.nzAo9V JJqdL ǙKv3Aq5  -Z)2G'ϻzՓ"t7&h*HT\-nڀ u}q qZ3 ۱"ne 9L牅ֹFRN88Bv[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorial/world.txt��������������������������������������������0000664�0000000�0000000�00000000417�14115753270�0023022�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������################ # # # # #### # ## # # ## # ## # ### # # ## # # ## # ## # # ## ## # ############## # # # ############# # # # ####### # ## # # # ## # # ####### ## # # ## # ############# #�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022120�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.directory��������������������������������������0000664�0000000�0000000�00000000041�14115753270�0024120�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Icon=./.icon.png �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.icon.png���������������������������������������0000664�0000000�0000000�00000010152�14115753270�0023633�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��1IDATxݛy^Uwy{tV�FI"$Q1è3:,tF@5QKTbP $$ Y:$'={珯4!ɩzU}9sme&`cqOw՟ ݵ3*sS_jD*>cJ>J$Ǚ c�o= <u?!Q@է` J<Y S ҤVutfl`)L*p%PX krYTW:x>l? )YۄR/Qŗs ѳ�v  |*,+fK#EHOݛ ']IU xiXm�LX y!-evï@�{Ous9Y|V6u�TlSsp{kep Н%g{H]^W>TIћ˘MpFd?_H%wX~L:AEA ȹBܿ{v4ouESY kZˊ|#y3#&}mX ֽo"_c&ێhV?] @X2!8e;) g-K(6Sŷ>\΂lr ^ 7Pu̯`u/1 P`@@ ,X{6fo~x 9Kqo+c^'C(4$Zx,OMم<=P4 V XkXc8p;WoW!;bE<{-;�k%t]6ޅDXM %8O [ io2bɿ@p1JQ�V=ɖ?lMy1+%{IŪ< SQPpe�Sg֋'?_Fd_"#@֐%H�^`#ύ j5Ja!ήEgZITRf+Es)Z)PJp.V$X R\>MG^!t7HuahRʤvJ1 .�cvl{;c6g_O{S-]XO\h�4)L*9 سcb\d!%yD %y.bDwB%[ආMA.*ÌYKB*#Hy1aS JX <)Nl©kqnXCa8:P<5WLvċ @ I5&8sg8x%kB1#9l4td K:J&"99gc|3k`/~w~w,T$ϫ۟E,%0VNc<%ERk%Jb2$]rdlzI+=ÉxDDkG"Q&]cM+R<$:_eӢE\#$ buQ6 Y!Hw15o"Ѭ `RZQx>mh-̙ƴU'NH`75¶lBZ;}?評Jj%m\I!v1X.G¤;m3K0%<{ݿ{Qu?LC,D s+2b{[PƵҲC qb/R'*b RL̟Vʞ£?>x+di!m@g !&Ϭף.A9evTR!,^xy"~{Pћ 0%*,C1y8eSӮ&\6J{rg.B`m?{WߋDHK`:4]j#`hP۱e#w07Ra@>]@~gBVZIL僸AhÊVץ87} 4D;㠵F)R )o<c<u]ѬZ0�cچE)Z jRʑ6Ïw5s ha 1@ϱp:?ܷ6a5my_ c EQBZћ` QR%$.ȣ|~Ö.^XpRlNCJ[kirs,3ȆpcH)zZzwHeThr}m3n(ۯk^H ۗeR2]kA(k m^DGXzu;(,.G,!|)i�wMNJh)B!HDN;ѳtg^oYK;Il9A^ :X8,r.箾'|fN'BH Zx{yL,(v2y m |Tȱ՟& ! $)$ARDQ:C{zk|&WKCꨋV_<׼?@ERn~)\hΣEXJ%ɒ1(�JM ('Dr<wJM \6dRk=Cp EO)S>u1w D�h1F7 77xMRT=k B9X!Rbl!�+H�@BzBRa&Q1}5=KRL^z%8I]ִlJ8~t7?� *D~45$zJ#M$T p")R]CSBb$A@c8/*h +_똯xV>ͤJXLR0Co ŔyHu ZL,>cɺBB |=Yd*x<R*p`#\@*Z2O /e|-\wnÉ̡mv`b$[&">Զvp"}izhm~PU(Մ#!"04+I X2;Z\%Nũ)Q$XP 0(\@ Ck ֞_<ϙTCa)F&xr2l6R[Ҋ7Zp漇V|߿~Gu @z)9J!e&RD=9Q45Z1%b(.Ha bd\=cd[[u(~5&ѣMhÄɞq5،!pDPȔRxpg TX1<+V0)GaPۗ ^T^~F1() $dXԘf6-&E)/@F%E|,%o`4ά Ƃr |S߉;s;$a<bBA.:ȎRX߅C�ݗXG�1oh"+Vn~Btt7}fΥf.zM:Th ,e(30yU4EiuFPe=N]Z:&o pr8$9=O銵)3瑿eR% Ɂ?§yK(ʮWsdMGxn!Hc#wE(XU(w+4f 7( sMs-~$%0" +ֲtr=7^&Puw;"9bX7)m"xj+H ~`le&Zt4{�rCkfG4f )" +n�)B !v� @i_Rr%B� k9yd (_Zʙ0-C<��JX9U�:�Y@*.w ���ʁ@PD4bL{q0 GԀAd,@6/C# JQL\8+? \=_~y1wwhIןh״=g}AE =V\V(zܶdRuBb_{ϴq[=z_kIuE%Pᜉ$%z o<\@ J "ٶZI7`T>PR̯qT^^}vlZhʎ's4AbeOR\|\}mruv����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.lang/������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0023117�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.lang/ru.po�������������������������������������0000664�0000000�0000000�00000010425�14115753270�0024107�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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 <EMAIL@ADDRESS>, YEAR. # # Translators: # Дмитрий Ошкало <dmitry.oshkalo@gmail.com>, 2019 # Kашицин Роман <calorus@gmail.com>, 2019 # Олег o1hk <o1h2k3@yandex.ru>, 2019 # AlexL <loginov.alex.valer@gmail.com>, 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 <loginov.alex.valer@gmail.com>, 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/NeHeTutorialShell/.project:14 msgid "Shell for OpenGL tutorials from NeHe" msgstr "Оболочка для OpenGL учебников от NeHe" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:6 msgid "1 - Setting Up An OpenGL Window" msgstr "1 - Настройка окна OpenGL" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:7 msgid "2 - Your First Polygon" msgstr "2 - Ваш первый многоугольник" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:8 msgid "3 - Adding Color" msgstr "3 - Добавление цвета" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:9 msgid "4 - Rotation" msgstr "4 - Поворот" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:10 msgid "5 - 3D Shapes" msgstr "5 - 3D-фигуры" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:11 msgid "6 - Texture Mapping" msgstr "6 - Наложение текстур" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:12 msgid "7 - Texture Filters, Lighting & Keyboard Control" msgstr "7 - Фильтры текстур, управление освещением и клавиатурой" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:13 msgid "8 - Blending" msgstr "8 - Смешивание" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:14 msgid "9 - Moving Bitmaps In 3D Space" msgstr "9 - Перемещение растровых изображений в 3D пространстве" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:15 msgid "10 - Loading And Moving Through A 3D World" msgstr "10 - Загрузка и перемещение в 3D мире" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:16 msgid "11 - Flag Effect (Waving Texture)" msgstr "11 - Эффект флага (развевающаяся текстура)" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:17 msgid "16 - Cool Looking Fog" msgstr "16 - Круто выглядящий туман" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:18 msgid "19 - Particle Engine" msgstr "19 - Частичный двигатель" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:19 msgid "25 - Morphing & Loading Objects From A File" msgstr "25 - Морфинг и загрузка объектов из файла" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:20 msgid "42 - Multiple Viewports" msgstr "42 - Несколько видовых экранов" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class:43 msgid "Unable to compile the NeHeTurotial example inside the <tt>/tmp</tt> directory." msgstr "Невозможно скомпилировать пример учебника NeHe в каталог /tmp." #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.form:5 msgid "NeHe Tutorials" msgstr "Учебники NeHe" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.form:34 msgid "Choose a tutorial and click on the <b>Run</b> button!" msgstr "Выберите учебник и нажмите кнопку <b>Запуск</b>!" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.form:51 msgid "Run" msgstr "Запуск" #: app/examples/OpenGL/NeHeTutorialShell/.src/FMain.form:60 msgid "Exit" msgstr "Выход" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.project����������������������������������������0000664�0000000�0000000�00000000362�14115753270�0023570�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 # Compiled with Gambas 3.5.90 Title=Shell for OpenGL tutorials from NeHe Startup=FMain Icon=icon.png Version=3.6.2 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form TabSize=2 Packager=1 Translate=1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.src/�������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022765�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class��������������������������������0000664�0000000�0000000�00000003451�14115753270�0025011�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Private $sExec As String Private $aTutorial As String[][] = [ ["Example1", ("1 - Setting Up An OpenGL Window")], ["Example2", ("2 - Your First Polygon")], ["Example3", ("3 - Adding Color")], ["Example4", ("4 - Rotation")], ["Example5", ("5 - 3D Shapes")], ["Example6", ("6 - Texture Mapping")], ["Example7", ("7 - Texture Filters, Lighting & Keyboard Control")], ["Example8", ("8 - Blending")], ["Example9", ("9 - Moving Bitmaps In 3D Space")], ["Example10", ("10 - Loading And Moving Through A 3D World")], ["Example11", ("11 - Flag Effect (Waving Texture)")], ["Example16", ("16 - Cool Looking Fog")], ["Example19", ("19 - Particle Engine")], ["Example25", ("25 - Morphing & Loading Objects From A File")], ["Example42", ("42 - Multiple Viewports")]] Public Sub Form_Open() Dim aTutorial As String[] For Each aTutorial In $aTutorial cmbTutorial.Add(aTutorial[1]) Next cmbTutorial_Click End Public Sub btnRun_Click() Dim sOutput As String If Not $sExec Then Shell "rm -rf /tmp/NeHeTutorial" Wait Shell "cp -R " & Shell$(System.Path &/ "share/gambas3/examples/OpenGL/NeHeTutorial") & " /tmp/NeHeTutorial" Wait Shell "cd /tmp/NeHeTutorial && gbc3 -agt && gba3" To sOutput $sExec = "/tmp/NeHeTutorial/NeHeTutorial.gambas" If Not Exist($sExec) Then Message.Error(("Unable to compile the NeHeTurotial example inside the <tt>/tmp</tt> directory.")) $sExec = "" Return Endif Endif Exec [$sExec, $aTutorial[cmbTutorial.Index][0], $aTutorial[cmbTutorial.Index][1]] End Public Sub btnQuit_Click() Me.Close End Public Sub cmbTutorial_Click() txtCode.Text = File.Load(System.Path &/ "share/gambas3/examples/OpenGL/NeHeTutorial" &/ ".src" &/ $aTutorial[cmbTutorial.Index][0] & ".module") txtCode.Pos = 0 End �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/.src/FMain.form���������������������������������0000664�0000000�0000000�00000002501�14115753270�0024642�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Form Form MoveScaled(0,0,78,76) Text = ("NeHe Tutorials") Icon = Picture["icon.png"] Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox1 HBox MoveScaled(1,1,64,20) { Panel1 Panel MoveScaled(3,4,1,7) Expand = True } { Panel3 Panel MoveScaled(12,1,42,18) { PictureBox1 PictureBox MoveScaled(6,0,37,18) Picture = Picture["nehe.png"] } { PictureBox2 PictureBox MoveScaled(0,2,17,20) Picture = Picture["icon:/128/gambas"] } } { Panel2 Panel MoveScaled(62,6,1,7) Expand = True } } { Label1 TextLabel MoveScaled(1,21,76,4) Text = ("Choose a tutorial and click on the <b>Run</b> button!") Alignment = Align.Center } { cmbTutorial ComboBox MoveScaled(1,25,76,4) ReadOnly = True } { txtCode TextArea MoveScaled(1,29,76,22) Font = Font["Monospace,-1"] Expand = True ReadOnly = True } { HBox2 HBox MoveScaled(1,67,75,7) { btnRun Button MoveScaled(0,0,19,7) Text = ("Run") Picture = Picture["icon:/32/play"] } { Panel4 Panel MoveScaled(31,2,5,4) Expand = True } { btnQuit Button MoveScaled(57,0,19,7) Text = ("Exit") Picture = Picture["icon:/32/quit"] } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/icon.png����������������������������������������0000664�0000000�0000000�00000007657�14115753270�0023575�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��vIDATx[]y>1 16DNH�L)EZUT*UMx*EU_җʥ/})ubB+ b[lga:g8V^mWڕv]iWڕv<3$\O>NOOcпع""%NUQվ~|Xk_�km~-\<_^^}DDj>F{�d3q1ru�*^n^0_?OL1(2 @�#VKUP�b(#wW<@XO 4;õn8�&_T5 Au4"<$3wK~f Udt{+*U,T*/|b�DRQ�ɑp}uR?�);'Ȭb:fԒesuJ`qCURkQ֒ ֺh�:c\#H<6 A! (J "0˰NU4ZevJfݷm5k1fs&u^[rw-s@nԊԃUSĻchuĠ6oMTSԐe֩8YEU@-Kf`0I6&o9 S-h"h3Z*N01@aDP�SLazu2`3ӛH"J N\_r){݈uRW|UlKm"0c�5kchv|(v:Ďҭ@} #SC*-MED!<m@p8NBZɽxq*(Jʩݢ6s7g@uz;Ss7"4VYz Tf̱SㆽajI rkdn}ٺ$8B bcl`.3Hj4ucRI9i IR$I0I$9M!S[ "68>a 'RϬ"1uZ˘$hN!i5P�|~Zc|6B]  gځ q�nօ3Rr�h,IFs9pD&%Hrc ׷fahZ Cq~ޞQgjLTS2u9!8YN^ZezLwpT+ol1NЈ ]K�pM1O8$Bk9ݬ5dhu{rLhVq$aymd"<Αy &0�ܦcKtQ"BOͯӄZD-BC#Iz+<a>NÑc25=N%˔<Gfm > ޣ@ȩ{^Py%~z0b j-iֲOb$A뵛?;k ňjY9|^2 0 4o2RB6/1ㅽk"$ZkYz͸ꆛ)&ޑ$]G1 N�`j:oj;*a\hFcn-'!!^P}4NDZ"-s /_G 9Jcww݇>,�! &E"S#;v8DBUyz�po'ikz$IO#tM:6`(04(#2Oa(knjimoסj ":V3#U_ރ >؍b i !\e|n�E-p'^#IKhZxɿ瞦TYDLObh8R(:DfZNz'YTiFmzԺGFx,SW"YV"[D-�єCS>ej"ILiG,oL\u5~ꋔ*,Ϳmq^Cr ~"FE/0j.P@¹G3@ Di}IH$$KR\/X㓔''I%㝫\헤E:䝜'i $I _q")U7LⓏQẏTbT1N2.#Rܰj kquvd.Zmeq7vA-JSUNi9sQ%vv.,QکQ(XA@ֺ�²S@  W  =|?BUGgfW0w~'bO0}WЬGR*Q>rwJuj9n?D$HLBuzC)*j_-SU9S[ Dк疽}}S>bL 3W# IIXTX[3;;ùszT*Ҕ$IX\\ĉ,e ¾}8qnݿ2@f-*ݳu&,lY2gs(H G-xsGZSOq_ԩS4M1,,,os!>_#yWQU.\p4>KZ*&_,L(Z@a Z!,h 87^睗w>VVVؽ{7f~~z}K/$ <s#G8<frj>%w _Dh#cP_(_N̰׹^W3v1a<f5js֒Ye֫lX͋�Ah0Tg!Zv;- Qd_K %X5ȁdp6zI+yA4LwI<ɓ<)&?V {떻RkAg~=0\a1T,x�n-$I`4I�_sl13"1?{#e^s�vc,dc#oap|cCDxߞOS.W;׭5guuum0%IB\VXͲL h2^xi4canSN?0?8?V*{izEu^?<nཟ'=>(=p�.Gԯ_ߩT[zjq?rҗC\MO.X\djj_Jn텕U&'/7}]�ׅyhU%Ne� \s5}$f _�\$ܾk׵ͮ0w{a~ssma|84@7-\RPT\RRTVQ+;w.}xKeOyK6:Bo}Kf!VfAYjh6h4u: [oimzO/=h8bz5ꅍAHkgd۶9UE[lZB݆Ju;=vv%:깳rСo7/aJ@_2L72QE{#W?q7q&Gv]Z?¦8ydk}oz-!Øw  A=G_yyiqNפue4&L +ee>rDZcfzV?&wqvChH}Q`d"AC[v;4[ S리5"ҪXӓ3zR_~t@P``%#fxL@87CU~07">!DxByDc#A|L(04DYۍ"^|dvs)_,mnX qinO2 ����IENDB`���������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/NeHeTutorialShell/nehe.png����������������������������������������0000664�0000000�0000000�00000013231�14115753270�0023545�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR������y���<K��`IDATx{x.!@\B# ^T((%k"R=E+hP\-<%#Z c0b@l+ 4@$!K } N }gygs{GSJZLӷn+PҒr^Ύ5]rk>"-9y}nO6.TY|RihZu]NM]wrQKd:ggXηR>7 Hr2^L@PQtn MNΥpnz=ahZ@Tw.D 7 H7BkKtN?́/?lg;SA]{҉Ι‚&-'[OJ4*D!0se)fC}Z"�Zl] V"7$ѽPMkdu,BxC '.bu,BxC @)xc^*4M:!KKl� ku,B4$J;q_p7[%%vq^]EƒDo"g6OHuDZ!=lEDoң(/;BE !$l짋B9hꈵ:!.EUK]=I&:W|']9H(_6vOHuhV"DC$}O\eu,B4D?K]5It?] &lR$:Z{DQ3M;�YDQ(cp|O~KGeg9}B)It$MP7&:YWAXEՆXD2z�:E'G\2U쭂$ <?:( ckՁ\.r$El=< fZD;` dc<xp;ZY�p= Li+`kxe/Az*] | &=,s>&)vOt'P}$ c;xxSHx>O+n<c> .`<Zmg~?~0X\KU@P)-0�ywO~/�pbEϴ!"]w:U~n[}c��X{cl=܆uqQ=c@༧+b`0&.cFHt70u}#nvS\@'at{aY+pO/0y}TO}]VI[1=?b3GêM?"nHDE?h RL# x`l_/Ć] ` 1Uo#oϛq0+kf4E7QmjK0;qk9p c%8(gF4I$N;L3T T} c_6`7M.n@z9C67Wsn*EQ~#3a�ez}H${e4蜐VmR|3.n q4||#yo/-h0\~$n"g͐1�C08E4ck ?[1|i|N3Z+-8H!}7O?},Y6ynq'1N9VJHܳvV+ q?Jnh4`WG1/MD7Y̖q>,TSuzq ͹8Xj|Qx/zǨ~CdNЭܮV~CQVR{5`纥y$z38uc8 YgӒ|O$:fcm0S0;-9~.!Ӆ3ԅn3h»ķx^8]p)m�]x4_볒$�}9�do+g͜㌡Q1\'nZ#!ZIt!ZIt!ZIt!ZIt!ZIt!ZIt!ZIt!ZIt!ZIt!ZIt!Z 9v M{] 'W::4Cw.?I+԰_ViVPu^ܮMeZt|HiP;tc$C);Ulu,ؘձ-MC4 9>z#؍g. WCkԦ]@c̕#њHK%ur&Wh pb.-wL@C4$B"mpW[_j!%0U;VH{Imzh9~C)u`iRb<B\fmλ d=k[dDB#+b>lҒZZovFŠ7RΗRR.ϝqa<vRJIHu :V_6k6UQ1ku,|s-[:څu)m>Xn2W,u}n|g  d[/$ѽx4W͟g+>ιcuxJR< DA 4Mڣt!*I7ffC"CFDo/&7B Ғ㊕rtRH7_4]P?YKnnoD:!.I�*L{-j H|\!ф,08FhT !Q},kL#M7_tRné{mm)뻭Jn꩏u{کHOt}&z^G%:N+i'@#-9iu-o6ϩ#~ygYZrIhv-Ғ){ +$4]<<KxU$}h 8$h %#> ŸQwh)<z@4h6\ Fw>-9ί̮v-92mقv:*r7 pR/bZA(KNzꘛJ:~Xձ�ʗ𞗾ˀx#o:^+(oW{yQ㭎$MwhŸvޫo:�JK։;Rɼ}̻;G55'麛ij:!"nmuuiuB"n�rM#It%9۝/F $n"M?-Hks@`[ݬC$%/I(-9nr o$Mr>]Iteڅw:!HOӅ&,ɺ .vB׷j {v:,rW+]_cl`܏ [J4]@);j*?ӲmiAӞ6y oN46v\{;+o@M0A$E_+h<;hWV!ꡔ[ov;Pfu(BSJ6蟧xjlա:(Ғiu,B H HW^[eVZٳ gĉ] Y|9'OFk7κuسg7ofo߾<KKKcɒ%L2"1f֯_O``qիWCfΝ۷?I&1b֯__k׏ӧOZZl~-YYY,_~jq˺u۷N3fॗ^z믿ή]ػw/7n䮻z5{>{tyfJKK7oa<aȑ$$$uVmFhh(+Wdڵ5slذsꫯ_3}tq@QF1a222p8DEEoY#zIRRv{HJJ"$$jڔ)Sdo_رc92 (((… $%%VVVFxx8IIIU9qDC a͚5 2,nL4 6T#aÆ1vX�l6| r o-'*t(떅8i�u+Wc=UXXRSSRRRT~~~U9R7x7߬R1_=T^^ZzuմC՘/&&FeggJl6S* 15\RjС P:uRjŊU5l0RF1}ĈJ)�ջᆱv{|v]]VPkV)TIIZjUz_y�Rj̘1 8j KFZK͠,X<��0{lv[oUcC`\w7p?Ͻw2w\\.s.կ~EDDͣjzEEgϦSNL:gz!묳Sf$ћAHHC a߾Gnݺu Q5OC9<qqq^;tPvMkAU?t:k};w㏓Jlll}wdfftR-ZDtt[2ܳI눌䗿%U!!! mۖX&LŋEuzI^^^u9r+&??΃Z æG޽>�w޵/]D~mne.2k,Op)S$?0s[o>keUvMBB+V` ڽ{OzkY/((sΦG^^^~|0gΜZeN'**'|iӦvZSc$'N$++"�͛GJJ K,1au~r˖` G]vڵ +ޭ[7JKKL3n8:t3gLilyϯݻӧOzϑ#G5kz3OfѢE�,\ȪMXp!۷ogŊUSSS9r$&M1oΝy9x`uFFFd|�wrTcD 8z(�˖-#((z ^"{=MX`\Ͽ;lٲ'6ː/V@$[t n~aviX|9}˗/g͚5,]=z0c v;5f޼yvˤI(,,$11j?|0˖-_dر{9xG}RRRHIIaȐ!|駔ѯ_?4Mg;#׿(}4M;d̘1w}8q:fΜYcgܸq̝;><>}:۷o'77?^K|U?>h bcc={k֚VXQcڽޫ6mڤ=JMMUaaa5<yJOOWYYYj۶mjժUj̙* 2l6z'7|?Z+_III*--M9rDLc՘o߾*##C <aذaSPNS[\{k*##CݻVLsQZU]k֬QP%%%j޽^Sr/{ 5&w&Bʿ奿_"`?W6X����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/��������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021572�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.directory����������������������������������������0000664�0000000�0000000�00000000041�14115753270�0023572�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Icon=./.icon.png �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.icon.png�����������������������������������������0000664�0000000�0000000�00000006724�14115753270�0023317�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATxypU}?s}OIz@Bm014IN4I2Mqg2SI$v:mq'681`gx-ۀd $${{NxX5;sf]޹=\˸˸ 9=#!Gtb!˕7[buΦESf�銹d6lP:)Lkق7~k/aD1 SЗpJcv{֝ ۅ\l3/>zɽ#93 0gO�syFdQTNM@axB :vK iMtq<lkea 5_ HzUM['qnAAV/\Z.� mo$򃗚Nf0,^m@oRaCol9mG]zlN`$8 9?-PjxDy>JQ8#š9Zv[%*΀TJ{#q>7a@ÁwjV & P9vaZiqNj :?S1!kVa֜6lؑ\q/  ' lю s'G'#xzK4Z96�'Wr_8|<$𱍇8\a?ٍR ;27IGk�{n GO4VT7Iב,)t94:hW 0b~ڤ9Fxv ZB d|ŤÔT\/=c{vqdD9w> ?=Sl^ǟVɥą^ xqwN@V苘s8"1�P$}l|*fϞ$ɢRW.dI(z."sA.7"LaMm6VW3<Q\5ڎ�mCc@f'J.(#զ0 :7s ;_c^a33o[ZJskdr!)?�~ X8:mҞ#b �{Q9n7CҤĚ%<[;[ٓOPo<0R(axk-FOO 7#>e6QVYhZF-@f"!'S43x c'Og~R~aҭLJTYzg-m<3x\eqGD%H^k}(辆( qDu.e-Ã+o<+Mb'& @W^?_N̼阔?zV=0jY$syGM?&0s| LX4Lx?ə4<hW1acEZB)}b.wL.};I,XJ_w'~@a<"¤%+yk6pP_4>[Xٯtس{=ػmTVmHf|wށTjTs'k}*0֜LZLkC1uûnn8aoC̭tE\}tiⱝ5,X(:5c}Ją;&XJK _w2+먭[ #1x7܀zeƟ'SATnY{y5e YfWjPڡtֽAl>nr7GMk\O]WSV1笍ljʔ1K .[5aH;�,ҿ_{�W'B @Y0FH23]ۛtFȯ;/.m$R{pӵX /㏮7;799dD%7NzZ2 ZkDd�SJă}-CK,�D6uɯZDA&Nz=L8 'qŵ' ) Ct[3b͎49DIC;�GbB(AKq zGO""D'NgׁrZ3v̬j UasĂ^&;kpauj%-] /|3sdgdgER' P69"JceLUŌJh}e/.&ӔJIR?FK}3 IӸ;HD c![ǐ]sI4] vuF'&+CY@KfSM-Y?l<1nRn'ʹ P J<LN셄) 75+�F>R9CC\@KjZbC;(X g|^nٷ7g? ]8 Ԓ59ռaf:hض5w|D3&ZRt:7_n"-B#Յ8X1-R x'X0q:>W_\W&PW+D+ zblo:;z5mipXJ:&m5R5]yr+W|,yu'^:Vt*q$iGhөX(j$y{AD7 <'Kn?VhBje׺bڄ $1s (A)}Yh4:&ڏo'ҼQӠDR$O*@R5uȔsX`Lq&Sgb߹s,J>/+&8ѣGf}c^ YȦ HN +AU(d2l;LirsqGec̓ PZy d,N7n^Uc#tۗ.̞ό]Ct)X,yI1^)͞Ǥsic>GB1;lٱC=Ņ;Cn<v҉>6\DH�~+P@:&=p&ĺI_֠El/rz:.m&>}Ѣ 뢭%{*[V7fT#~`1EUӼ"㦀O1Dt<y$> J>a{8r5<St$%㊸\S[aRQ 7Bb9 (P0eP0ND1@�^mݓAT:SK68J9Q Gȣ 4ҡ6vhF)}8Dd:T)/ݟ?]  juYᷢ3CK�LXq>H� @8[=@R{ �D`<4_ aȦ@ h7RV7�;Krqq^v����IENDB`��������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.lang/��������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022571�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.lang/ru.po���������������������������������������0000664�0000000�0000000�00000005314�14115753270�0023562�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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 <EMAIL@ADDRESS>, YEAR. # # Translators: # Дмитрий Ошкало <dmitry.oshkalo@gmail.com>, 2019 # Kашицин Роман <calorus@gmail.com>, 2019 # Олег o1hk <o1h2k3@yandex.ru>, 2019 # AlexL <loginov.alex.valer@gmail.com>, 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 <loginov.alex.valer@gmail.com>, 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/PDFPresentation/.project:28 msgid "PDF Presentation" msgstr "PDF презентация" #: app/examples/OpenGL/PDFPresentation/.project:29 msgid "OpenGL PDF presentation" msgstr "PDF презентация на OpenGL" #: app/examples/OpenGL/PDFPresentation/.src/CPdfPresentation.class:324 msgid "loading pdf page" msgstr "загрузка pdf-страницы" #: app/examples/OpenGL/PDFPresentation/.src/FMain.class:68 msgid "Select a PDF file" msgstr "Выбрать PDF файл" #: app/examples/OpenGL/PDFPresentation/.src/FMain.class:69 msgid "PDF files" msgstr "Файлы PDF" #: app/examples/OpenGL/PDFPresentation/.src/FMain.class:84 msgid "Frame rate is" msgstr "Частота кадров" #: app/examples/OpenGL/PDFPresentation/.src/FMain.class:84 msgid "images by second" msgstr "изображений в секунду" #: app/examples/OpenGL/PDFPresentation/.src/FMain.class:107 msgid "<h2>PDFPresentation example</h2><i>Made by Laurent Carlier & Benoît Minisini.</i><p>" msgstr "<h2>Пример PDFPresentation</h2><i>Написан Лоран Карлье и Бенуа Минисини.</i><p>" #: app/examples/OpenGL/PDFPresentation/.src/FMain.class:108 msgid "Select a PDF file, then press SPACE.<br>Use the left and right arrows to flick through the document." msgstr "Выберите файл PDF, затем нажмите ПРОБЕЛ.<br>Используйте стрелки влево и вправо, чтобы пролистать документ." #: app/examples/OpenGL/PDFPresentation/.src/FMain.form:20 msgid "Select" msgstr "Выбрать" #: app/examples/OpenGL/PDFPresentation/.src/FMain.form:26 msgid "Help" msgstr "Справка" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.project������������������������������������������0000664�0000000�0000000�00000001067�14115753270�0023245�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 # Compiled with Gambas 3.6.90 Title=PDF Presentation Startup=MMain Icon=icon.png Version=3.6.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.form.dialog Component=gb.gui.opengl Component=gb.opengl Component=gb.opengl.glu Component=gb.pdf Component=gb.sdl.sound Description="OpenGL PDF presentation" Authors="Laurent Carlier\nBenoit Minisini" Environment="GB_GUI=gb.qt" TabSize=2 Language=fr Maintainer=benoit Vendor=Princeton Address=benoit@localhost License=General Public Licence Packager=1 Translate=1 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.src/���������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022437�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.src/CLogo.class����������������������������������0000664�0000000�0000000�00000012324�14115753270�0024473�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file ' texture Private textures As New Integer[] ' Rotations & translations Private xrot As Float Private yrot As Float Private zrot As Float Private ztrans As Float = -4.5 Private initialized As Boolean = False Private aColor As Float = 1.0 Private aFinished As Boolean = False Private wantFading As Boolean = False Private $eSpeed As Float Property Read finished As Boolean Public Sub _new(FrameRate As Integer) $eSpeed = 300 / FrameRate End Public Sub _free() Gl.DeleteTextures(textures) End Public Sub Resize(W As Integer, H As Integer) ' Width/Height Ratio Dim ratio As Float Dim Height As Integer Height = H ' Protect against a divide by zero If Height = 0 Then Height = 1 ratio = W / Height ' Setup our viewport Gl.Viewport(0, 0, W, H) ' 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, 10.0) ' Make sure we're changing the model view and not the projection Gl.MatrixMode(Gl.MODELVIEW) GL.LoadIdentity() End Public Sub Draw() If initialized = False Then initialize() If wantFading = True Then Me.Quit() Gl.Clear(Gl.COLOR_BUFFER_BIT Or Gl.DEPTH_BUFFER_BIT) Gl.LoadIdentity() Gl.Translatef(0.0, 0.0, ztrans) 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) Gl.Colorf(aColor, aColor, aColor, 0.5) ' front face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Back face ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top face ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Bottom Face ' Top Right OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Right face ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(1.0, -1.0, -1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(1.0, 1.0, -1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(1.0, 1.0, 1.0) ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(1.0, -1.0, 1.0) ' Left face ' Bottom Left OF The Texture AND Quad Gl.TexCoordf(0.0, 1.0) Gl.Vertexf(-1.0, -1.0, -1.0) ' Bottom Right OF The Texture AND Quad Gl.TexCoordf(1.0, 1.0) Gl.Vertexf(-1.0, -1.0, 1.0) ' Top Right OF The Texture AND Quad Gl.TexCoordf(1.0, 0.0) Gl.Vertexf(-1.0, 1.0, 1.0) ' Top Left OF The Texture AND Quad Gl.TexCoordf(0.0, 0.0) Gl.Vertexf(-1.0, 1.0, -1.0) Gl.End() xrot = xrot + 0.1 * $eSpeed zrot = zrot + 0.1 * $eSpeed End Function Finished_Read() As Boolean Return aFinished End Public Sub Quit() aColor -= 0.01 * $eSpeed If wantFading = False Then wantFading = True If aColor < 0 Then aFinished = True End Private Sub Initialize() ' Enable texturing Gl.Enable(Gl.TEXTURE_2D) loadTextures() ' Enable smooth shading Gl.ShadeModel(Gl.SMOOTH) ' Set the background black Gl.ClearColor(0.0, 0.0, 0.0, 0.0) ' Depth buffer setup Gl.ClearDepth(1.0) ' Enables Depth Testing Gl.Enable(Gl.DEPTH_TEST) ' The Type OF Depth Test TO DO Gl.DepthFunc(Gl.LEQUAL) ' Really Nice Perspective Calculations Gl.Hint(Gl.PERSPECTIVE_CORRECTION_HINT, Gl.NICEST) Gl.BlendFunc(Gl.SRC_ALPHA, Gl.ONE) Gl.Enable(Gl.BLEND) Gl.Disable(Gl.DEPTH_TEST) initialized = True End Private Sub LoadTextures() Dim logo As Image logo = Image.Load("logo.png") textures = Gl.GenTextures(1) Gl.BindTexture(Gl.TEXTURE_2D, textures[0]) Gl.TexImage2D(logo) Glu.Build2DMipmaps(logo) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_NEAREST) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) End ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.src/CPdfPresentation.class�����������������������0000664�0000000�0000000�00000022213�14115753270�0026676�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file ' no effect Public Const NoEffect As Integer = 0 Public Const Rotate As Integer = 1 Public Const FadingIn As Integer = 2 Public Const FadingOut As Integer = 3 ' do we animate the page ? Private anim As Boolean Private aEffect As Integer Private nextEffect As Integer ' do we move to previous page ? Private previous As Boolean ' keep trace of zTrans for rotate Private azTrans As Float ' fading Private aColor As Float = 0 ' texture Private textures As New Integer[] Private TextureSize As Integer Private textureShown As Integer ' the size of the shown quad Private qHeight As Float = 1 Private qWidth As Float ' the size of the shown texture Private tHeight As Float Private tWidth As Float Private tX As Float = 0 Private tY As Float = 0 ' document pdf Private hPdf As New PdfDocument Private currentPage As Integer Private quality As Integer = 1 Private initialized As Boolean = False ' camera position Private Ztrans As Float = -2.56 Private Ytrans As Float = 0.0 Private Xtrans As Float = 0.0 Private Zrot As Float = 0.0 Private Yrot As Float = 1.0 Private Xrot As Float = 0.0 Private Angle As Float = 0 Private ZoomFactor As Float = 1.0 Private GotoZoomFactor As Float = ZoomFactor ' flag values Private points As New Float[45, 45, 3] Private hold As Float Private wiggle_count As Integer Private DrawFlag As Boolean = False ' speed factor Private $eSpeed As Float ' properties Property Effect As Integer Property Read Page As Integer ' Image cache 'PRIVATE $cImageCache AS NEW Collection Public Sub _new(file As String, FrameRate As Integer) Dim width, height As Integer Dim x, y As Integer Dim i As Float hPdf.Open(file) aEffect = noEffect currentPage = 1 textureShown = 1 hPdf.Zoom = quality width = hPdf[currentPage].width height = hPdf[currentPage].height qWidth = Width / Height textureSize = getTextureSize(Max(Width, Height)) tWidth = Width / textureSize tHeight = Height / textureSize azTrans = zTrans $eSpeed = 600 / FrameRate music.Load("music.xm") For x = 0 To 44 For y = 0 To 44 Points[x, y, 0] = ((x / 5) - 4.5) Points[x, y, 1] = ((y / 5) - 4.5) Points[x, y, 2] = Sin((((x / 5) * 40) / 360) * Pi * 2) * 0.2 Next Next End Public Sub _free() Gl.DeleteTextures(textures) End Public Sub Draw() If initialized = False Then initialize() initialized = True anim = True aEffect = fadingIn nextEffect = rotate Endif If Anim Then animate() Paint() End Public Sub Resize(W As Integer, H As Integer) ' Width/Height Ratio Dim ratio As Float Dim Height As Integer Height = H ' Protect against a divide by zero If Height = 0 Then Height = 1 ratio = W / Height ' Setup our viewport Gl.Viewport(0, 0, W, H) ' 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 MoveNext() ' we animate the page, no moves until end ! If anim Then Return ' No more page If currentPage + 1 > hPdf.Count Then Return Inc (currentPage) If currentPage = hPdf.Count Then aEffect = fadingOut music.Play(-1) Endif previous = False anim = True End Public Sub MovePrev() ' we animate the page, no moves until end ! If anim Then Return ' No more page If currentPage = 1 Then Return If currentPage = hPdf.Count Then Return Dec (currentPage) previous = True azTrans = zTrans anim = True End Function Effect_Read() As Integer Return aEffect End Sub Effect_Write(ceffect As Integer) aEffect = ceffect End Function Page_Read() As Integer Return currentPage End '************************ private functions********************** Private Sub initialize() ' Enable texturing Gl.Enable(Gl.TEXTURE_2D) ' Enable smooth shading Gl.ShadeModel(Gl.SMOOTH) ' Set the background black Gl.ClearColor(0.0, 0.0, 0.0, 1.0) ' Depth buffer setup Gl.ClearDepth(1.0) ' Enables Depth Testing Gl.Enable(Gl.DEPTH_TEST) ' The Type OF Depth Test TO DO Gl.DepthFunc(Gl.LESS) ' Really Nice Perspective Calculations Gl.Hint(Gl.PERSPECTIVE_CORRECTION_HINT, Gl.NICEST) Gl.Disable(Gl.BLEND) textures = Gl.GenTextures(3) loadTexture(textures[textureshown], 1) If hPdf.Count > 1 Then loadTexture(textures[textureshown + 1], 2) End Private Sub Paint() Dim x As Integer Dim y As Integer Dim f_x As Float Dim f_y As Float Dim f_xb As Float Dim f_yb As Float If ZoomFactor < GotoZoomFactor Then ZoomFactor = Min(GotoZoomFactor, ZoomFactor * (1.2 ^ (1 / 4))) Else If ZoomFactor > GotoZoomFactor Then ZoomFactor = Max(GotoZoomFactor, ZoomFactor / (1.2 ^ (1 / 4))) Endif gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) ' Reset The View gl.LoadIdentity() If DrawFlag Then gl.Translatef(0.80, -1.9, -8.0) gl.Rotatef(180, 1.0, 0, 0) gl.BindTexture(gl.TEXTURE_2D, textures[textureShown]) gl.Begin(gl.QUADS) For x = 0 To 43 For y = 0 To 43 f_x = x / 44.0 f_y = y / 44.0 f_xb = (x + 1) / 44.0 f_yb = (y + 1) / 44.0 Gl.TexCoordf(f_x, f_y) gl.Vertexf(points[x, y, 0], points[x, y, 1], points[x, y, 2]) Gl.TexCoordf(f_x, f_yb) gl.Vertexf(points[x, y + 1, 0], points[x, y + 1, 1], points[x, y + 1, 2]) Gl.TexCoordf(f_xb, f_yb) gl.Vertexf(points[x + 1, y + 1, 0], points[x + 1, y + 1, 1], points[x + 1, y + 1, 2]) Gl.TexCoordf(f_xb, f_y) gl.Vertexf(points[x + 1, y, 0], points[x + 1, y, 1], points[x + 1, y, 2]) Next Next gl.End() If wiggle_count = 2 Then For y = 0 To 44 hold = points[0, y, 2] For x = 0 To 43 points[x, y, 2] = points[x + 1, y, 2] Next points[44, y, 2] = hold Next wiggle_count = 0 Endif Inc wiggle_count Else gl.Translatef(0, 0, Ztrans * ZoomFactor) gl.Rotatef(angle, 0, Yrot, 0) Gl.BindTexture(Gl.TEXTURE_2D, textures[textureShown]) ' Draw A Quad gl.Begin(gl.QUADS) Gl.TexCoordf(tX, tY) gl.Vertexf(-qWidth, qHeight, 0.0) Gl.TexCoordf(twidth, tY) gl.Vertexf(qWidth, qHeight, 0.0) Gl.TexCoordf(twidth, theight) gl.Vertexf(qWidth, -qHeight, 0.0) Gl.TexCoordf(tX, theight) gl.Vertexf(-qWidth, -qHeight, 0.0) gl.End() Endif End Private Function getTextureSize(size As Integer) As Integer Dim iSize As Integer Dim iCount As Integer While (size > isize) iSize = 2 ^ iCount Inc (iCount) Wend Return iSize End Private Sub loadTexture(texture As Integer, page As Integer) Dim imgPage As Image ' imgPage = $cImageCache[page] ' IF NOT imgPage THEN Debug ("loading pdf page") & " "; page imgPage = hPdf[page].Image imgPage.Resize(textureSize, textureSize) '$cImageCache[page] = imgPage 'ENDIF Gl.BindTexture(Gl.TEXTURE_2D, texture) Gl.TexImage2D(imgPage) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR) Gl.TexParameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) End Private Sub updatePages() Dim cpage As Integer If previous = False Then cpage = textures[0] textures.Remove(0) textures.Push(cpage) If currentPage < hPdf.Count Then loadTexture(textures[2], currentPage + 1) Endif Return Endif cpage = textures[2] textures.pop() textures.Add(cpage, 0) If currentPage > 1 Then loadTexture(textures[0], currentPage - 1) Endif End Private Sub animate() If aEffect = NoEffect Then animNoEffect() If aEffect = Rotate Then animRotate() If aEffect = FadingIn Then animFadingIn() If aEffect = FadingOut Then animFadingOut() End Private Sub animNoEffect() updatePages() anim = False End Private Sub animRotate() Dim eOldAngle As Float = angle If previous = False Then angle -= 0.5 * $eSpeed If eOldAngle > -90 And If angle <= -90 Then tX = tWidth tWidth = 0 Inc (textureShown) Endif If angle < -180 Then angle = 0 anim = False tWidth = tX tX = 0 zTrans = azTrans updatePages() textureShown = 1 Endif Else angle += 0.5 * $eSpeed If eOldAngle < 90 And If angle >= 90 Then tX = tWidth tWidth = 0 Dec (textureShown) Endif If angle > 180 Then angle = 0 anim = False tWidth = tX tX = 0 zTrans = azTrans updatePages() textureShown = 1 Endif Endif zTrans = azTrans - 2 * Sin(Abs(Rad(angle))) End Private Sub animFadingIn() aColor += 0.02 * $eSpeed If aColor > 1 Then Gl.Colorf(1.0, 1.0, 1.0) aColor = 1 aEffect = nextEffect anim = False Else Gl.Colorf(aColor, aColor, aColor) Endif End Private Sub animFadingOut() aColor -= 0.01 * $eSpeed If aColor < 0 Then Gl.Colorf(0.0, 0.0, 0.0) aColor = 0 aEffect = FadingIn updatePages() DrawFlag = True Else Gl.Colorf(aColor, aColor, aColor) Endif End Public Sub ZoomIn() If GotoZoomFactor <= 0.04 Then Return GotoZoomFactor /= 1.2 End Public Sub ZoomOut() If GotoZoomFactor > 20 Then Return GotoZoomFactor *= 1.2 End �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.src/FMain.class����������������������������������0000664�0000000�0000000�00000004351�14115753270�0024463�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Private currentDoc As CpdfPresentation 'PUBLIC Screen AS NEW Window(TRUE) AS "Screen" Private currentLogo As Clogo Public Sub glaPresentation_Draw() If Not currentDoc Then Return If Not MMain.ShowLogo Then currentDoc.Draw() Else currentLogo.Draw() If currentLogo.Finished = True Then MMain.ShowLogo = False Endif End Public Sub glaPresentation_KeyPress() If Key.code = Key.Escape Then Me.Close() If Key.Code = key["f"] Then Me.FullScreen = Not Me.Fullscreen panSelect.Visible = Not Me.FullScreen Endif If Not MMain.ShowLogo Then ' right arrow If Key.Code = Key.Right Then currentDoc.MoveNext() ' left arrow If Key.code = Key.Left Then currentDoc.MovePrev() Else If Key.Code = Key.Space Then currentLogo.Quit() Endif End Public Sub glaPresentation_Resize() If Not currentDoc Then Return If MMain.ShowLogo Then currentLogo.Resize(glaPresentation.Width, glaPresentation.Height) Else currentDoc.Resize(glaPresentation.Width, glaPresentation.Height) Endif End Public Sub Form_Open() glaPresentation.SetFocus End Public Sub timUpdate_Timer() glaPresentation.Refresh End Public Sub btnPath_Click() Dim sPath As String Dialog.Title = ("Select a PDF file") Dialog.Filter = ["*.pdf", ("PDF files")] If Dialog.OpenFile() Then Return sPath = Dialog.Path txtPath.Text = sPath timUpdate.Stop CurrentDoc = New CpdfPresentation(sPath, MMain.FrameRate) currentDoc.Effect = currentDoc.Rotate currentLogo = New Clogo(MMain.FrameRate) glaPresentation_Resize timUpdate.Delay = 1000 / MMain.FrameRate Print ("Frame rate is") & " "; Format(1000 / timUpdate.Delay, "#.##"); " " & ("images by second") timUpdate.Start glaPresentation.SetFocus End Public Sub glaPresentation_MouseWheel() If Not currentDoc Then Return If MMain.ShowLogo Then Return If Mouse.Delta < 0 Then currentDoc.ZoomIn Else currentDoc.ZoomOut Endif End Public Sub btnHelp_Click() Message(("<h2>PDFPresentation example</h2><i>Made by Laurent Carlier & Benoît Minisini.</i><p>") & "<br>" & ("Select a PDF file, then press SPACE.<br>Use the left and right arrows to flick through the document.")) glaPresentation.SetFocus End ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.src/FMain.form�����������������������������������0000664�0000000�0000000�00000001367�14115753270�0024325�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Form Form MoveScaled(0,0,94,64) Icon = Picture["icon.png"] Arrangement = Arrange.Vertical { panSelect HBox MoveScaled(0,0,82,6) AutoResize = True Spacing = True Margin = True { txtPath TextBox MoveScaled(0,0,54,4) Expand = True ReadOnly = True } { btnPath Button MoveScaled(55,0,13,4) AutoResize = True Text = ("Select") & "..." Picture = Picture["icon:/small/file"] } { btnHelp Button MoveScaled(69,0,11,4) AutoResize = True Text = ("Help") & "..." Picture = Picture["icon:/small/help"] } } { glaPresentation GlArea MoveScaled(6,9,59,39) Expand = True } { timUpdate #Timer #MoveScaled(78,18) } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/.src/MMain.module���������������������������������0000664�0000000�0000000�00000000226�14115753270�0024647�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file Public Path As String Public ShowLogo As Boolean = True Public FrameRate As Integer = 50 Public Sub Main() FMain.Show End ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/icon.png������������������������������������������0000664�0000000�0000000�00000034547�14115753270�0023245�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��9.IDATxi\uk *RX (B$q)S%:=x1?t;BnYl-yin{MɢHI$؈}!P;j˪|˝*Q%D$%w]i4m̲~)K/٥~-� ]k5MI)RNwWLR/qBu^Ӵ[MRJƥyR\+~DɟIuMMw|>+ϟmH>^z>7.0nSջ~F(J)M4ln<L&?0M|>d^~5ԅ_060zO.pI)|>N"t:}<1MsȾ+S GG?߸qM&#ȹX,S4^zo}[PxQ__t}]ֆz_]m-cۤY(=55u7 N$odce}׿n�5@` 'Z[Z:�a6dP8x0hRtjV|k_k}':p͌[SSSfK/fo}p\^lkkۻ W,Hiχil$8 ?F7M/]+~AYz_liiy}W&mt91x,pqZZL ^=&zWdWOO|ı,b8#cc pa۶ު+-v?VSSrӺ757nkpC: 55v;l!h {NE"?d2ˡ_z_?߹aúu}ΟnA0Rfؼw/GF9H$&^~Wb^;w޴iWۛkkjccqZZ|v۶mr'W_}0O755_~u˦Mm&\'Oo~/D"L*D BOZ$BeC56\nmSO=5;DWQСC@Wׯ_m۞޲yjJ诿h~62F$"CLL zzgBO"vFj:;ks۶s<zh)ݻ6m厎jeqOcAe[^(4ms>o<tP_x7Wc_} ~כp];kj?p:bσ3'L Ǖǭi٣W56sdf'?s=zwVо+躾ûw鬮8~]#n@K$x AX"Bܽ|VWcvq:Mt?cz*ve\7@_\"LUss{(ur /0o.KK_}U^xׯ_۾.p{^3g V0Rξ/|.m+E۷ƨܻWT__g]l=˥::|pf7'y#٬hNE"4nBOyQQhږl6ۘ:vز`׮]3U4q܆A ުlvm{./jiihh͛}׎nU1 Ÿ s¶ܼsC@3m,SO}ÇKW^ye뿱nݺ?سgoGO kh}} %aۈ`qbtmzUngK*ڐf>vXsh3-[ v===_?_PoWJ)VTT|׷nݺ㛘|;'ZB+rxvD2 ?@UUվׯ7q?W^i�}7ײe;ڵkZᵘmF#^{ R#T۶}(Hx*p(B+S|�\Q;w6}P(d2ٟ};rBT!Z[[[wwoVU )͏ZFtZΝCaܺź]j߾/<JN߸ H)cꧢ hRvmܸqݻ}~E~;hv"v2V_͛s`09P@J\fqyǎ?O|Blٺhmn?8a2|>JJRÙL&8r~ohoJ$G?w߅$iAW|%cmmݷ{{>o'ɻl6.vW֊͛6!7୷#5F&RX @`%�Çaxx=Oahʽ{ٽi h,F&q\.QWY+R)pA;*[ Ha|4<<;wۃhlVaF*zуAU~;۷K)T*U TI>Qxc#<<_ٳL۴* nuDBiw8ѡ-撔Ǚ K 5MĵkA{!?9j졶UrX ޅW'?A:JM^[{R3Mʕi P|n߮+W''`jd2JBs3tu)%Ņ':qs+WLhw"V9mȇMV*e͛05% _Ӑ Yr")Y訪N[3'pYI,8[gب^P]yxX5 ;wܡNwt>@ _JPq#tt '2Md8 CC7CC 7XjPP&br"/]R iC.J;)KupoD)%�͛HdiZ^45*bj6oVW1T8ʵ+ PzH 9mutB;:YYmC2 ]K D4Z `.1RʹDlڄ} J--Ȋ ak G?{q^D"_f *wvB(Ȉr4/{O)pr?R&)UNî]J &'b;Ԩc~Zfpɑ˅x٩۷OgYw\.dk+SOa8)bfs~?NStwc?0'>71E^,!!ݿ_ *XwahH lÆKbx*۷mblm]SA1gJўzJڐ>߬k/_BythprZYa<|8va}<q#Lx4rV͛lݺ�]*UHٸB&G7W1>Q1SV*e:^XIػ^x{ jkU43ʼ˥_|gw #&I~뷰D"-ɷۍe N]Ζ-+=hmU}~Rq-_s "'>F_TٸϷ,(xfp++<Z[k!QY B~_ٶM#A+c>,κufEhup�MSǡAP7o⎣|crY%` ج`-K)דOo:<Z>wt 7mBB\hKRa`ك/a+*)#raكсGWExM3*I;vLa�JSJR[ OıP!jBسGy'I'I- DE6# о=wUNA#~'y[B4͏]SexV<bg>xQ_j&}WU ѨRI�--|)|%*y }OilquO| Յ[ ;(-Fz6a:/!wPe̡粭mRβ@Bpܺ^uu⇆iJIPGUbwƑMm+`~vՃ4Ջկ"oG;|q$]HUPHlu]l^/GggӴrQoRiT( ׫BBs*F0<^n:A&z% =[&Ήwp }:yF|{'^xnNDB |ep6oٵ g>NsXגp<jpR0RSdqT2,'!SA@}Ҙ'73{ߛ2n]Bvt#TJ#pi#RUe-O ڄTPjo4g9$ c(g>�*餦#^D>p,  w')Q].hoG[v7Jg9<,[e!V \;l>*L躲Kg+e Z!LJU)9;Hnh Bj .">2L.o J!\Y~jXZZ?�}"Y,!)[H6"].@8ĒIE\70k/Y$rD.ŒA۶1&V _BZҺ|nvD38UH BCDpZLZ񷒤?yYrϭP\;6Z:41�!%Z4D̴r+ʻ,k& pgA4kT9D&}o&@|L6mܥ]ů ,׿KJ*�* A7ca43L|96d3H(^+y qy&)i,+Z>GvӢBcKz\Y_L PJBUhVuyoYpؕ,]b-'~/$} �|9/9*`n3L vlq  -нKut-TsoRʏ+¿2X@k;}E~k+T(XR_iMweT[kiD% 1hlZV: k13r܉/ekAt(wPgk:l; qp*�ҧZ5M[Ӂ^ٶ=S/�Kb "^.@NZZ% ,b?VK`^ХzɶjqpZ+�мî %q*+kv t{9 [|ń3IB@U-|f1)XqU3k\<f}Ů5-}!~r'Y^Jpanh'ŪA4B}K-E`LWZБ�xUZ / \JN"S,Zj>wOM)g`xZ}/E�+W(&Sx?<19y`P⾊qW1-#,`5b{3 uwp߾4(ZBs'y3t?J~Ar]a$5^9={,ͧkATX* U g.+M1q]9\rk,$2 �]~B`^HβV,|ZyFV YiY0> YTJ5 Xnc8uNdKWrYMz``>Z*XT {Z 6 /` "}YO]4!>@Z$+LRB(gHvUv`WV3r((V>dXN?\K T%�9~o>=xHx\NtR(\4R"뇕[?*`5b ŧR"5GI?RL7bGpݺB6^;܆ѥrA߬&} -Ŏ$ FDc �ׇԆ]SOvcص *T2)NbJh$-uh!5#4|Am29=*a!ljiqɷm$۽wzH- @O6sr:|Jׂ(P*- u\аkwt!^|m3x.LYܲob*E[JˍT7p[mGWnfzCX&{f비 7y=^)U@/$r聩 ֕ʲ0\�!-:\{ve5RJtMèC/6Jp\&]28~[rher+9WtϾ jo܊D:6aBgkRiޛcfI眾R 4Msэ>,C`f~C6 uMJ\.#ZlJ-,nemٚO %q|]�RJrlvJ#)p `z!0;a#]q%ί|Y];<ý'̬^NjoLy�:K5h] "4Fr+fܿaӃ*aK"w'7OI8&z~g:C&!WG.vmm=cȭDqԹ\sg~}`BE2GDR|9H7\eS*_+>wY q F8_X8sM@ُܰyfH-,0EY 8~. mfX{_ȺMĴ,ڹS3_Rh[;vvx}0u]Uq$N} Γt|7/F& /'_=9@YE&Y,']S620d7n#х&E:ea{XD)T?GNIB{ ,'`@!Č'(dūaTYBD6~("*ؕ5[YYTL`ۈ3 yWϑDM7,&| $) OnKXEX͢ NR]G/8 Hutݲ ЄvrYۀاOF3T!-z֖\ DI"#!%*7]d<az1V�1W^wޕ-vE$bl15Na~UٺsD.>m< s+Ξ&8oM*#J-=؈?{ ;h#8p="|*YhP-" ZiΏ .TtqufK;OLc;nχtCgZ܆iѦƧ w~@j~na6G?BgmBC scR_4IEX8yr܂ T)D* ݴ==5?:{r Bjp~ Wh|;'aB~mnVzۣJ՘Q\V̽nq,er4ŊQ\-gg)o$ nJ#xo G؂lYY aJb) gA'&Fy53ԼOğ")@ 0\׃~ZhޕHRb4kB=q�̭ha�2K ǔ\cӈjT{OuT pԣ 4YQoD> g>έhlRgpA^y ރh! '1{̻|iM+lAȵ?ٴix^\heyjӪ>6n)oPmnݒnOD: Lca*QO(qMߦc0~ܺ{N;YS}y+gCwfjx=g'~#xs~6ܧPsC`]:ױjڏ]ׄ0JJ$P==|# }qY5)w#jma }j_@m)%Z6ȦY>@\8};8"#7u#8[Ɔ!_ށr|k2'PECX΀Mffz4rܩ-#5cWbtݴT l -ĘĈГ1H&bhȋǑuMʳf\w-E86%ӵ/bޏ} ׅ]QM'01t~?x [̷paUR9¿糦!BaDχd ȯ侧<@iA,ab!X_%7qbD& "469nzԽ^zyF}ɽ$ޅ:o!}^2[v8?8iW#<rfbbqy`>%(WFo]9jA]'Ab|\6dEۍ[`NU5uoJjr M<]Lj1ba!3GhH!EJ0S PqUظBSds~ g*gY,TP(D<'Nc6 |>G:(rh.m?_ &F�UUGϓ(B7rp˶r@u~xnEODT&/`"Tu`'pg7HZ z�Sx1". CUU0\`0uuu_j~?n{_"Մ/UF~sf?JnVu Cffoy*rl{kɯOp!yxP?aL!4H Q1 _A_w<>?>>n6 l&J`jj/aڨ>@Bz%sLw ]]GUh@E$R8n= y[TՐ۴]n0FD8Il_ ߏ�(XE{{;466λ9UEEMMMtuu111�CCCa%7XQPJ% ?Co#y);6rTTTtb^ }gmg1Z@gI'?CDk@Zy&qFpK*b455̭[t]]]477OUJ Z@ӐAf~pOvc8uBYO!Y/w\3945)D빂jZGn{BE5DP(D"NjjjfY*vټy3ܺu6BJJ5/W6I/`[0  [un5眯<p|aB#A ܆ݴg|˅n@f$BMӤ6~=Hz{{,T*+z|Jh5q_GD8Hmve5Fx'k?f['YrIakaj_v ə&xp(D,M}}G)\%l۶@ @__wܹg|9*;[X]G {hWc5Q5_L^Nj.;;^1R*2I'$FGFD"444}vZZZfP)\K)T*Аb߲!aMCDh?ko# 7翈cƑAs фɊ:b[jn9RbY gǎttt>IX?D1/s=@:&L&b2H$" px"NYZɠ.{MSH_C;cH'I<kğM!AH_^gI_Y,:CSS@`&9+E LMM PȉFh4 ñX,Fp8<2::NʮK\JE~8uC;Hf2x\E.ru tZj9",gX s|cX]sccc 2<<,'&&"cccH$2-X4gٔi\.t#5k ]lP$38>kMn"eaշ~I_�t^oXBPRx u]'۷@whhn0 NNNF2LʶmY۶R @�s; U߼?9$ w#w<R7oBf_,J1JB/~?'(/@u"ϟׯ_]r[nE"m)qR,PL@(Yk7<Y'hOxD?$?<5F&vUO}ze[/5([7\ ;v̺tٳg\zv4r'άp(aQMO7jUK) m,kоĥRO< uԌ|Jͻwn!�߲x"[8w(ϟ:uɓ' b(HG ^hU� t+m˧h}؋_ihm{5D"cʗ./j roG{MӜ�P GY};E^Lo:L!46B?C_ z@Jr];I|s௩!p}G̓}\^\1Y3K lˤb_~AgΜɟ8q;-)(BZ} B<(ߓt}:ýh DL!uܦ>2;ᮨ2O+ӛ9,+E`*U'N9rCCC7a`'QV_\ڭzgJCT/, {n'Fx BN=dvj2$?m 5ݻ܇<f/ |Ϛq]yԩcǎD)@ukFkt$7.7gS ٶ_$'_Y:џBd u#TTT,R]Ey^j B:u*sĉnܸqqA`D לv:Xԓn\B{A<,<fkcBBc?D L|y=XY'W8@}q/b᜖eqUɓΝ;w6D:lwp\8I5k7 'AS|Ch^]XĢ<SP|B<sL';(?\T& <M#o!BA Or\n~S R0_Cd BUe=M8(\ pɓ'OޖR㨄 ֺ j cf@Xӿl"q+1￉8 HD ߐݵeLt)Y1+V�sv\.>{Y\Z2PJDM<$QDpLa#5!mŕn/'#QU_KQ=*|=gΜ;{p8 �W]O-z\AxiIejյ?%"[gk3P2e{T7n$Ξ={yddPuJkHgQx/@F3Bx=HϢ54S]S2冂r'ʙ (ضݻw .\zt:݇Jl!Z`Ka>d}7pμGd3XX74]UC_PK)BX K*(A,׮]<[>KQ J]Z#>%폒ÊE1kNjž+Xgi�Ѵcy+\Dz,2ϟ~Rʂ^uS9 -ʆa+^M){֪z\#w>0M Ǚ^vށk�(ˑH$d0&''x<nNonn6jkk5W2 N'$9/_xP(tUy@P\.g%~aS:{衇P_�<gZiXE8x" D4M[ujkkMMM6ll޼Ԥy<UC#)}}}_rQ>z!*Ydz? BP۷[k=MMMZJ.t:&o߾ ƣh, ++++߹saΝU[lq744jP(9sf… g� �d2yrEnܸqHhc=VqF豘Vh9Ԕzj[px"r\ڲ,[4v{^oEEEE}{{{эMlkkswޠ_˲qFܹsg˾}i2ّH$;99 Rd:6<n]]]|>1^/+888?~<q+W\>w׮];799y;J 9880% YfD" \.K&IOUUJ[HqK9۷ogbby[?QӼ02`yٶIɑ`4rbbc۶]]]=/Kz뭩3g\x؉'LLL\RaT5jz⅗mT*O&\.gy TUU~Y<K)f3 oy RP3W))e:޽;hԝNJPH^|9믏_z\teYi1f{-fL=?orTlxxx0 =zyy?{ Tǎ-DAi))e:ɸv~zԂe}#G]v ~j,Vk4 Md2^)ke!ܺu[nM曯+@/h/J7Ux,MCqv^W.)veD7o?>uW:rdj|lGy8h>Oi=qy<h-\YJI2d||ɜ:uŋ=(cYVi DSSS۶x<nqiaaZ+0%|<֥KR'Nx╫WpI۶ 1bxm;755O$\.q#J-].f�T+paCH$W\ =zd2ye_VqJ3@6Ng`4T<ŴD"!M$`7^>|… }W\9wʕwܹdf/*Y= dDT$rk-jdRE.x\NLLؽ+WR.\~ׯ;kv!{@hVB5x[ZZ6nܸm[Z[[577WUWW|>K!LӴSTnjj*5>>FP5$*[1p5@ ٽnݺͭMMM^RJ4D"LOf a, M@Keee[ccc{KKKGccBm2L,p8|7ϏbhE@e֭hhhXWQQQol:B`08FZu} hpn74� ~T8iL&I$!˲BeQSz?g APYYjnw@:cT*RmS(/UNU@Z*@4RjQJ9TGY| S|)`U(e�|@3P$QS~_* P 5~Ba4p s')R5_V@ɫv����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/logo.png������������������������������������������0000664�0000000�0000000�00000065077�14115753270�0023257�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�����������jIDATxw\}~Lپ Xt �HJDu,ɲlUq|Xi:۱9q9;vbHvMDWm{mfg>b޼y}B$H] H A-ZI 5! �$0 na$ A[ HF�$\!$XBzB\]8^cV]l !�LB R|FwZwAk Nթbk*u!I>e a� ͵Y'Iccfw̕B[6OMG,p 'Oe�$~JTںJޢ^З>ܹ0y(7U ƈzG�\İvq|xcӍ3ֆ]0LODAf RZ8��KF+Bz0%L!D-o*=c:c4a- TC}1 o؎PNٽily58Wv:cW@/4D $"'VUR`jJs%c!jnڐ}GGxr)]cz?u! a� .s/8e:K]vL]I:�BuH~Ѵ\<8!!Te�ܳ!<<! xw̗(%! a� @A+<}q1sqc!zl BHp^(CRDh1MB?S Z=43� b)ܶ޺w=d.301خP;boyo2W.x3Q]#y 1D\ ?̂l%\?w[R+�-:zu1�@qS/4M=<‹]ؓ ܅9rl63ga(@Tfٱk$@(eb־ɟ;GĎC@�niL{~۸W%q@O">&ᛘ좍F$(zE1Fq m t3 `릞{~={+ uZcpKb5oְܸuȖ9Bbo\pH5=��y' ߪlj< L@pLM2sb K^Sp] # mo'o"! a�H7O<׸obgC -8=iGһ)z#b<%Ľ(|̠J{є(Bh9i/j$#`ܳ/}zMog! a�<.=ܷosH\j 5eҸy'cVߤdZS {t@k% 4Mug_}}pzWC@�nj!'?{x ְ:a2#>w Ec[a>f6(9eш+ ٽG;:s'{>/ܴ]Iٖf?lҹ#A1o%&Nc��PD�"Z\:-))Pݞ"F}W>8zvU0oc71V:YIQN\YJHAž_!ٵ!|M}B ϩ4`)P*:(U/!؍Yf^Y9�҅PP% E˃2i]?;O?SzpSasy]6zC9{Zv!1!by |)Ã�yX!8Vuj`jف ص1T'c,smxs�0;GE/@rP\[C=O/oص޿0Bqo| Svom}[b[\ǣB-2<f],CK<̅OBfq<e|ejvI !Z7 ϵZl2:6kTGvdvYm_H;ؗ//~x<RpH _~>o @ EG)I.Y3/8NKrk�Ϛc` e �s%\DŽk[<T낖ӻ,ec2 m60X*lױ=z~{(j{i]u~|ԃ?MC@�nhL{^>n%xwAk)E}cI o<Zyk2h怰xǡSTpCK @,P*ąjHl(y.˨¨aJU8fk*t -;Ef0 xMo?}W7vܐBn_175ge87܉IX/GP#91"筑R9F߆c fU:- atZ:EK1 p]m @< KSS4%P5PLD lWШ.QY+2pm �EgR`jk$㵱eo}{Mci! a�7lWU>koZڤx\Kl?.viߚӬ ēzV@Kn"@:CKe%6ofp+s�RBQu(z S5(�|-@׶`u y˳0 }& AxpX85ίg:8zn?1pCsAy�<kGȣ5+t,R1�(4"+Ub=J7ay<cKH>\GQU0Ej`(`g�6=c104*Ř:;Aբd�/¨CEˢo=;qH !k<߬?9'qZ;/ʩoӔ x13E·aMX�v57Kh Bnz: U@Q5P=炻|d � S@)81p,ӨΣ^Y+ö pAX:qΞ"EoP7>C}>޿'4As}Vq"Baxω#_lm )UXc�]Ӳ^ԈʊE hbb"^R`@񓕸� Re#:h >$` hP6pS2?Pi(QXpy̝7?)4}#M !i{B˙hM@S_cbN@;�͐=ۜk-�BRS3`jZ|>B.ۀj)it�2%"b7!�* S_zaw�Pk Tm� ׃L z:3<-BD;~q'~W0se/ꦧ5%,jצ9gVL6v{y)ZҮ;\aHy%A(p"AKehz$ʤN®>ƳcQ p5 #IMU:#ۀ\dT":f/Y/s?7~lO|q=_ BM{x}t_/ ~j{$>ྙ"8ڀH$$]:TI8^�%Y)\\޷}S ×-('p{D"M(uд B{ T=J\<�Ϯa3^4Dj770B'_)S(Tx\7싎Hb%ɘ2yM7aIRsc =62Eաiz&~`]{bM>% "mƥ/~qD~&@ 20+T]!t|QZ 4*p͒އZe^Gm߮% :k' _^Aj!@&4-|s ]RP|˃@S-:H}X @8+j\Tm=.tE"D �Ǐ i"j 8WcLQCG'hgaէp[(f2:?Uc�B @r,Wd=O0A<!m6Q*b(&B֯aq?}^j3{mw,Ǿ~(Z5N*P*L ?V*RRZz:UO]*9<X|u[2GZ} f/ O�HL rNAJS i<hTfa΢<,܇_/)վ!2# 5Nn4L7gXnƴ\Ͳ]v<yH &ҀA 8#T0F\]WӺRͤR1MuuhӅ24cxڞScP'VeIwY0kS0SYpA@@<ZZ&4H聴3YM&<ƔnM]I१4tEj,hDjYMG/"gBhApeAv0?AB<j3o@Mۇ_>1k?ײ �Q4鲵ez,͎ZMaょ@!afgHABR�:�2H (SՑJPw`wb>ʄZv N|s.LI~UAc,yh|VR~6 Y`ݐD,2-CQu_vw1 3G ]JXz&AK! J$$BlgwoP+M4}0-L(+w g?3?sJ[ #U1sz-՚ yHR'Ro<ΙH2.~mZGlf�d5JRU̧g{g6 vU^Qo8!ym>x~o%sEa�B1P}YpgfP!WG*ۨJN+mjJ i㯀 (L4[_ yHRG- CxM/]MoaOƛA | AG$Tv1^_>EKa~>�@Ot#8xJ~K+u�L6]3MFgI< +Z.URfRJ˹VOi�f+Z&@MIazWZ*͎m@x)H plKV/Lo|{Kg>02?kS4dUuB2#x{Ķ]<Z9e7"FEt™/n@Z*fѸJY96Ll f&aPSݫj¯؋ypn] _~s@|ZK3 6eDG!CӊH3FO; P Mπ1 0svD6wKmcC]W`�Bf8Lcz!^0 +Q:sdO!=W,2ZRfZ8Z7s\o|24P(U.JAGT".!tڶg+v|`w!3ucὣo3Je%\9=Kf񖤜_1Q4Jg!yhJōzuJ[ܯzcJ G<xn@SXCbCIsTH^D?J6Xk#v{w8eB%GUӡg a&lw7ǾL)>ue�٪x ¹̅ s:.rzj;(%^!}�ɘfKs3O.TV1oJxftiţl.{W ٥!DIW d)<Cqd0*͝Uxb"۝Cs2H:hzA"u<B0+\+R) Bf17{T�]N>H"ʵ x+@X)Yn0H@A�7'c =G:W!g^Y>_k{kU#.Հygvٶp_؎bff=pK^գ7rm.lnPFS|ʢpUY몳yx}Cؗߛ#D戋Wz8uo~M.C4Yׅp84[# tlL^@*gMsM3?p\Yo`˨1;mC[Ym@Qxe zɒ9fTbkV-]m¶ ˨ٱнx˽{Oٿ՘Kx "s~ƼcS\ZܖvL^Dl_;v~sVEeeE*DfQƠm[|3=+�vS6`@T<>r_Pȸcknu0jBQ8ҙ2]亠gf^OCR34=GcVĒ"-#MX*yN.t:�P lٚA#Ja,*mÀ./F1\+貏E"&2!]B<a6( ݋Bm}?q!1�.v~ڸSsOUԩ=[/nyf-O<y}-ҊP"g~ N_qVoR(9.kuQhT<xܵAꗤfs2&rmʏv4M~EpmfFesSsy(ER)`dtCLed5>ŵbz9{.r#hXAGcu.<#x?:=.3_ ckp�ءC+'՜O>oߩ=x I/B:rƝ7|`W0_7y.\; DZ`[:;;613qXS�\p]@xB(ѝ "+ WC؇\َn,tک JOcO�?ci;;2M¨Vjj )(.#LAH3a-)j~ )H%C´bJ\g`jUKط{H_iۀ-8?Qڰ7Ϧu7q]Rw~uv'_(1E({ꆃMFT` T\P&#e\굊ߎJ2B(Jt<.Rʸ?cX}m@2Pje6j0z sdv 鿄Yŧ̀Epe/M4:JhI_ujzPkv4i-ie* }~7ſ\cy Q�!r|zW?ЖgR77 !5[l\L-46ϗ.RؒmnԈ >tJI1p?) f(iPMsgꗭ=/j}~x s}2܃y'\7*^iBS֍/�A8o(c`=Eq|glNf�3FTpC&bb \\b',+Eh{ў5B\ (%@ wGݿ0«ĆqauKcM@ ʏ5'^Z ^սƦkʆn6< CJVM2nzRj dfU@txBDNn`SF0 5Keɤ7 @!6TxzJ{w)/!BQ $Y/5/RhKKlغK-s,7hr\bz v!2CP)z`}gBI?su�؅ӵ-;;=ܗpEb&fiv"yb6>6 xy,@p5vދ+q?RF5 1  OґL@Zj:2ٹx=< ?2.Em2B&8FwM)͝DF;êMo_(3Bq%W�l^95F?W2BoxN\{z4XD͹"kBg^j)VkȤ5?vaMU F&"gY,a's@cpixsBo2\xa c�昫p7~#A ⅵwfB (\GUevMikaR' M9}&h" " 2P,}x`zvcxuz`M^XC禪mL1ϭ]Buo᳥ΏW "\{-uu.l͞I,٣/Q8vXݪw5wm3|kcTqsPv ì/PBmv1(q&[a0'0x Wz^(9N&_NMT(!H8 a8RT-ז\,? JLIH<F?JR)�S[@W:eHS`h>yU#_z}?C^KN; &ɤVL>z\m'/l6ܽFOgz<ۿo(Kiy\PU_<A)|BW;f.n@f9&Π<}\tVՄ0Jspk p5E?de|^\`-!:>1IA)%j2y 5ؓiy`qd ?UրѰ!@.F:IRϑs$N?chRHQ5vSOg70۹ew~V�LܖѕZ]G/~ܮJ`p{+ujG:.*??/}Ki=Н̣cፚO�!*2~ht @i8/, t= USkFa5D㭚4Xەh!Ec{.B#D3pK^,VC^nJqa™Iae}iDLC6  leG�t `x(&/~syn_X\(UЕ^i!2Uvn#c<%49z֞3SA ^=ztKN3_!�-q$4,p=/<uAN: fǏCSRt}�w X.T-{G+dm#wɾ @WH6Zh}&O7 VE ٍcbv1d4Ńi8}U or"/Dñi[~|‡Gp.)|m ֩4}GRm3x:0�!z#^2]a۶;ҟ}鞝HÇ|cD^/`aa#[=?I>�D.Kibz.pwq@OY39drmiZK MB;1 FK/^DtEؾ5҈֗M3}x`K,_^hIMR]Qc}œ -U†.߉+}!$S_"-L@^S:yr|Ȳ]UfFT.L=!)5?82\ov7w>gff'>Sԧ>/~xgB -lܾ?Owm: 8J A7$~slKNl�@o J3Wg qJIp&hmnE ޜc ۯ^JYHairbx ϲ[ӐэXշCIp庘Fe PeLO֐ͥPG\⛉daCS6ndz/q羻IDhN?{x!ϵΑ7)]OA>O… [M7cvv#}eU\:92,fl˄m2DDۄma2p,J�SêP< LP5%<vHpdqyZe8}A1E\vm/[Re4}z vA(h$FJD$T9l& PB#M@oX5F\ž^ fE~bfP{7=і|sىgp)x !x׏ T|%fkۨWHgf 8׉ץ`4` YCX L!H zD"[0t=5V_z50f%tψ9liOaےѦ36v!_A03j|L4WU"7 ]t15^]2OH@`ro`xoasNL᭛ʑs2&r D~Tpm1\8v9'aШ8N"!v? >MӣLfj6/ 2jMYe)]zk-9%GKFz�A&rԗĊJȒe41QCatf4{[#~ag`BFi m;X�PPxHlqzk!,:zsHgRC |0Y{<G1#;;`L{d-[+S7 #ܑJڧT*^x-B�i4͘ |'\7�\<rT&Q7*W03vqfTQFk�гv[0sk}果%񸠈e@unK\)G[o?n1~Ƕp30)Car = v>c <Zj$BcTaxrD=!8?n,BAؕqO4 7_B}-#_gkO<izz:d5!:?clضӬ!T&B�K)W`+-f3o<s\< .uJPJ54-F(" JrW1p)Z)� "sSd$DCF(WT3:@0bLH=6. U*-AUdxr�dXhD4 kTJ.5:6u\q-� g/O~dwo.}_zE)?;|ݬ{nGGb91 EO8{j:]lsO`~4Fa}@*[IƄb#$hV4_s0UmsA2ùn`lT:>$zcزL&>v#Xkva@_ŵ9e]Y E TjVL_DgWOF[Cy捱]}{�.JS߾KW\mP_Ï -?`jHb*sS1u MT'ڜe�rW`O /"^qB}b kU'6E+[8731C̆F :z: ?:|drZXD@4`ؕ܃0p >#S1;]}ذO] "XSՓ>Ȯ]iNwTNsGgk{^a*ޟi|> ץ*=W\\+rf:@�Ei>UE<簌C[nqZ*,3qmfEO틖[qMٓ ޏciЋZQN7:n,�S^<.}[ 0j</ږ[j*|FCP{0~nS { Zϛ7M� +q]=_L^q:;;`U? !4Iq? <E&W&H,^|q;p!l۾-t▓/38SojzCw$X6'R&c=[E`[,isxAkܞfϏz0),Jl*?ě85zmѤ(~sQ-5ZR^J8.OػYmJ&?@{?-?NM$~ױJgeA :O|T p7~օK±g1?qv= Z K44%/Eͻ#ڦGCnzӜe0k{<I(udeC0 4Mmskq!`?ڸp<tc%8{b NϏ_"3c� dZ8ppu]a?ottku:ㆉ>Bpdq|+_*~w.\hಈ�<TX|.凢Cc$sޤG+5BT0?�`5.PQ0!G2J(zuYx'4Mo /0<e:~N|,#K\|m-L-Bρ�WRe6?�<[ƇwxG9hu2!ljXœ_9 ˶L? 2OWA:/e4DcŢmތ"ΈQ`"(֊)ȶzZh?SoNSc~4�c{`d{hbrݧ˰H;AїޜgS1J*浱b^_>ցB?G 7tal L`v�,BV-'X61uHS抾o[^Xp>:ܢ",fbj1#$}cT& ElÖ:TZG|~cC󤟢PFZIÉ }]mhm#M�F\Z]d++Ϥi瞷?_E^~!}ǂkIؒ6k$X+Ay"yܡCNpB"a b."I70!uz˭sl R@}WT 3{غg3:9V*,եڢf `v"sBHn36]2-7s`�B UKxO/?O`,qI\'*u}} @j&εWPK.LEf\**J $9F,T,wA::㏀P4Nؔ1IWT K&PU!Ict EZ@\z|Iu~,i+'F.۹)��*rJovGf8ڪn;mߊ-eQ]XZտy4 k#Wr͍/@trDĢ$&M+ �Kd/&s"#E0^ 0U`| Mױu(4Eja28тi3qeMpRC-NO\ C fb_B?lf8IGg\kT ;D &jyqwo!I41X>)cEp`[. wؔS~gB ~쟉 æ#8y,dB^K*v=g$$,P+C"sE.Δ7q.( )s[,٢4KuӲ2P&kI!tYOjUo "҈ xq6LKr{O~?Gwɺ 9Q`z٪Ԋ(UwmʢGS?bUMė}N߃YT+veW(K"|m&N-hԭ(5%hn*RW=4f1 !O{xi96ϗN'-p]Z*H θ\{1h!*Gvo c?﹗N;EѠj:Tz*\[wo–! κ hG1gr" G1lؼ!1 =%arP4xaCby\]t_w0% :xB޶bs~o]|׀_uJ]1:FBVHTa!L'@QK!LQ=/$ri%2Wh-U#}`x�;L pD"ZȔ 3Ndz,�P MWJSeQXvW6 |FTnwe$ 4ǣ6FlpR߉9'mRJ}'C؏-ZWٰ͗ޅ>/a\C̔ڴl_LSUvLD&7u`ǙaFEqy$MEgH|=Z@:@䤧{:T]hh0/19?Uű@_N|�-BqZߍ3nsw"sp,$`x^<X]>tsOk)Z~K( R( 6 Ƿ޿s􎑞iMe&!Dp.(qAj/}\>rWyޣg53퓘YPų3u )0 jhzy acnDzb'Z5~R#l&S VL@ s.i ;[?[~-.6FNL;ضVeL毇>T*t+,3$hP1<9u`WzB.BD)?_=ul莚|d2|hsz :rϳo_9h%'g\zZ�L(3 HǢo椳zJEؓDž3Өk*J&sߺ\vxfѲ]-RW5'a�1Btr ն|9N9lˊGc˨{Db T=}~V5J=`gN]X{%Ŀv`얬jW@&i]m<^ܵwQ]=]'9~ @lFeDt~?|ۇy74-WD,צkrY,RӚ$~߿X LFwnĉb~Fm릣 ;Z�|B{Nl;!2ÎmˌeYp`OD"V,LGn#aX@%6( ҋ=9eR]$LJzgm[ϯ|;76 [\Fo{???/L !=9MWZB|}3YJLT]ǦeXl�* !3Mg&pqTu!Bc?@<=9 -` 8f٦)(/!EC\ C[q>b˾Q{à0b1!m\+@Zm4fG~g_@w~rR|w%�[FBĞw]]B>#RSi| x}cgWy t#t> 4]NQk8I<rfpEpřJqg�Br㭓n VwѤK\1UCw3ؼA0E[=?} %M`a}}_O2\ F C_O~n*N_isױl-zq;/{>mV<ʚaho5H #`,JP`pd�EHgNKoVsqXXal>Ilo 8V+sض Dz$[qu_nwyoL 0D"?(k=9:xEL;zeL|û`xAd =a%E*' V5_j[<25~~=gtc$: cލ';s].YJkϟy^2uBN&0,b K]N<B@8j@:Fl,U�&]@d&`zbٱ[OxWÀW-Ƕ}ߗaU׶6<GzrM�yBPϧ/A؂b&(ύ2;zymB(nDq`3~(tlG\עFTYr<1wս[/u!D-|Sw޶c͋~k)]w|1_RiE\&&�ĦSw;Atuaa uΜ/UeRCAW)e�5!e;zXwn4!DuH 6�AIazz&]�|qS)r椟n< Qڅ0-ۨ{O>v7Y}y+ŃeҪwyc5BĻ޲HZWwaRu,0Um*zj9@Ah̃ f[UY Em{( m-� !:hej -`ɸ;KB|i|&aQbGX$"DK1m'$[2'ȡ:~zy[Tl}ûV:">8Go~G tCKs\\F]נ48 F*$p-kP.5t,�-D.4mo-'|1/;fG_dm@v@X_8/$~n{PuACs/{GEߦ!"k UZ~=w|#rP )şWc#|'p mo?H58kedfljVۿ'~G4@h[m ئ 2aň?̾C$O #u~NB86/P!b QIko/(=JɊW B2}}$z7vL}}#ۑ\ۂ#?GQP5`fƶ]bU[xBhox|MF@MGiMOmS�I1 ZHS"[QD`voܞ? 7W+]I-ŢݛM=w3lr5ǷL^$]݃<{;ʀ{nݮ)u2FA�wMv-b!7tp\Ou=.uq Bcu1'~SLـe6oW,¤SZld>I[v R8Ҥ}cUo]}cg^.yL6<l݄^Ė2\OFPSDUQJ)TZECY2ܶÕ}o7=$X{u2"oYl 2^_kO_<.SHDKitKIWڳV/Y[_sKlF.\('O\ h nd珽o>P๶_ " jdr JDF~O1OQW%>&.L )M.}w<&+zy/qRw=|W}Ni|}۾w>W4:/^<+T񿘮`~, 14|@6dSHgL8f| Z@b^ӫ nbЎ9x�,Si IQ~)tK]/1V!YCMl_B,6K ~}w|yˆz/_ _~;FǹϿ?ߝ膞"l;}J"a5ᜟKQ"6B&Zuߔ "{cUl3 ~4,XFQe6iҚWuMS+ر)*K6Д>QmwoG޾{+͸QpͳTm��JW_?2r;RY<^4 #(c =%3Pr|ð�@2�nb KWM|b;kUQ@^^-V)^-^+èWau8?mB{KV[Q>dV/ ZacKu/׏?7 !\ ~G>5gd@+zX2!_#уMH ,/d"�Bn#3e7fÆ٨h`5F{⡽v٥Ie AQZ(k)/zK_ݿ[o{M`/Ȇv=/G|K5X z (279TT a]yAF(zPnٖ`%O (uh�fÃ0`6jo~9rWv9,"U ~?1?Ȟr7R �tٟx~>vtd“aAU3B#n/�8"IR|gK?%37Uaj �;ެ]*F0R:FF;ԗզw�&hWl4L@S}ǎ{hz.Q͈Oo?nfRwPbP*es3pB$ TFm語 �<!7-L Ԫ``0U_)3ĥc\b<U;ObOsUF=[z>m*N% ƨ}N"1EՂΡMz M"@B~2�7X *HaL4jU4jPۖQ+BۈՖ"|g禞owmڕ{72vo;yOm۰!Y lDiv=o"+=~(EWOٜ Y �dŶeob*P9WjhTK5fػbj_⼚X9gSgsϱw}~ƮɄ/ JܓO? u/`zˇe(ASB6AQl*/d*Vٓb�7x<W+BW=ԫ 4e}ⷌI[,Oիw{F_%6*ou7n~x.A4\Gry!�w dG9Qhh l*?;rzu �d%{j}ղZZJ}lsٗO+_;Y&M@ sOaˏ3{7/RknB:{ èP@\'F}aq49 t`�l቎5<.-pZ2P)-VGZ1JK\IJ>aWљ{G׷ wMUK4⎻~^c[`uڀh%<l[v@VʖV{--pHc9?3uTKy+%Xf#V{ )z'ݾ+MՍg ]5pgSI3 .ͧ{kV^@6߉\v} „Bl=tFkler1�.r]GgW<?jiF*Sv`K׽pnOb=%Vߺ];1x.+פ׭ Bx][^;;I;h?jiA"d{زsb.*ERq':VǶcst,NZe倈_qkFz9V 偖lG!49C=So?kS0 F2wo+㾡mQ)uPJyOu2H?!̥j]]5^w`y"{$nsһT{~fTfa*pl}wQqyU{0we7smk;v_ϳ lԡ)ucZ[ʥ|V[Pjͺ0�!:}usbm\zav Fױfnp݉(8"VHmȤZBwl}-L'7hѶ$L\s31�.2]G]'+.L.tQImo+p,Z<!\^̧zr;&w wO u2Foۛݩ={=/仆ZA. ZL~ :?vf/B gSc ;&KZȰ]ȱE_҄p-ޕkQP.*NPuz>Uz:3=†#|(~Aapݶv~_:C�sAyQ"<aG 隸kX)׬kg\O7fKslrΉ7o.]Gs9*.K]!c^6i]Rjؑzؑ.o(wei]m( I,!D<gTA)ۅi ֦u<X^I[f R- Q\ݴ] 0mG\(B�v54 \� A!�T!r]%x>\ć!,V-|@A \J)T u¨I ]ev6]mzؑuuBVouLi*ԣD:10eeP5�̜݅*Y3赽"*h �:s?i� 1,W//Rҗ&mY#�2)Nk"-B 49B]BUŢQOZE2~؄4+KU{7¶,WK6"kn '`wnr= 4F)~=眩} )(uoe:yo MEN@y0v_ Bزu4< </XY w ' Au`OnFt@pן � h![Ȕ cKY sPJ#,X� a� 3:XܸɭW<~@So:w%N@ J`zL X 1ݵs a�  bg=/j BccX`wn#p%N@2)~? Tm0]'4$a� \̖=eOڗ:~M@:z8�R _HWm,^VPE&`:TUኢ$x_ O0J+=o$Hp@WIEU0, G H:R1IGv�Lih8o�$R /�on YO H:+r0eO[B{oZH@\O0D!l JMZPw~zƮɵ:o�$=EBp�TܳkJw 0 C(e`l~G!\Zk<x@�$.04S6�}_0 ,+i=pШ1=x+k}ބ$Hp`zz&v4pqϖk}ބ$Hp`vv.s`ud9oSJăw (]3_$Hpayh\h7nʿvH@ !\�`}mxI.oǥ0 G !ѨG}�@gN/uׯֹ :cuZM %|=i߿o eMZ ~� 3N^QTB�es#̧*:y$Hp]LiuA }{_HL 3Fī*0 y{ D ;?~\iS&ñmԪeMPR훟.d*W: Akg}}mr׏΂0Wŵ$ AK@"%ZǦx.KoLw<>5gtR!H0~<UTfJW!k^{K@[BBkNT1 FT5zGfl\Qmq]u9i- 3w5MiTMiBu;}n}/) S(' 3l(!ПVUi0Hϔ&68il[iôT4-8̼e~+C#8rb_y%8.e*He4d2 R ṃTO5ž%a� nZ!|8zfzٱZڴlƅGnuBp;G� EQ TEc ^~ QR Ba(tP5SOfPQ01۷mW"a� n:\^xG_.*%{dIWcDC_ w @c 7_+oL�DeR@ icD�70Pt|0 V!=>Vxw [W?3k6Xj;O6P ro~5OL%W@(RQ0uq4X9X8·xf HpSB;ԋU�FM/тh^;`doн_p 0U6%S٥R)eA(CtLCPE-a� nxخ>ӯ@4Ҋ/_@4C& Iv=IύDe/>cLA_*lA/+b̵xv HpCC;6׿Ć6~Ʒ0q 9_.`�LMˆ ',SiG@BUXi CTǯK@gO~]s-*?ZzEH?,%C\`jgȀ)$?_4rvLQAϣ3g?�$(Ax"3G߾0_&4u .K"$ᅳSgX(y`j<?B(DO)�USݛś\!^wVo7P 9Rx"p 07,;O+FN<46/B"| sσ뺘܅:<Bդ/hMeR)EӰy${R9uV0a� nH!ث4 M IܑLՅy<s AnBWCLQQHcvFEM#p:\�sGz HpCDɁ(-7 ||=‹l}./&4OwXpPppυt35FQR7pǞ"z *w 7T=;߸1a� nHVOTǟ9 MuaY6f,LϺpf9w-t'(m!~ *n== ,/a'{<V9& ڀaڄ(O_ĉs/"]p_qlYva٭saW4nm�; Q!rK bhk 07$ʍ.=~ _pp6B#wP*Yv0D M!kBѲH4uܾw$Qhr܄Bj|'{s[07$ +ML}hQ\p^<ׅ:X(Y0`k.=f3\H,D:^\�q$ !v:Y<d>P]ׁ(-LN٨ֽ65?&~Jz`;}p*%ɟ�il.^g07"i)\%}Ed`l@֎.y!xƽoُM�iKK˽^̿V$ b;! ~)n�ju cf-K߾ ?|�<#d_Z3B۷v^2a� nHjޠ0'py/ ߶\abʄ%J!* fZ,+{'ymvc�-ҿG=Ӵqts kfoaƴc[3:G2$/ի](z#oא%ۻG_1}~COz>Ȅ$@=ɰaW#D,/�sq\՚H/x)%)F״*𽛋Bz>˄$!{KTJqIKܟ)~ܼyk ,(tHwf$膎SDWvjPOS,4&ђQ"(ݛ?'"a� nHPBGTJ !A$<z]>2( �@Ȩs; o3Ɔ[o}:.\R&j@ttJ)Vx gs W}J07,!zf౦|{K',OA}3#l#ҹ.i074F}߁/ utѽ2RpҾLA۶\?H@�ٌ?ݝyNɥ%s54{Q7_?H@]G>ՙ[Ț1$HK#h7F%~?߻ p͐07 6w/?19M QKO Y!_Muq]y}bu#a� n* g=g۶ ! ٦NiB<fu[c{w7$@ nB ?}w]!  n4@Nܵ "L 1l&z v�W1ѡ\!a� nJdҺ?ޯ~GON Mw@ZJXp.+*- E˃iP:&sPVq4[v_+A�ܴTJwdg1 Le(S5Tf¬ajb ==mIcַog D#[t2z4O˔:{Vm3yVˎRUj޽[ HpSctSt(g1%4kLݘC}$<.{_'<!XRȽSg,$q j~07.?4p9Gy?rOgfChw޴jwzvY ƃF:;TPS*<޼,Wg({g/d)QnxivM|]Fw1[{P3'|IĮe3~_{wt5j4zy}%H@?/) @.+:g4"{?|_Sd4ɄՈ߳r,$=#x&t )(ӥWR 4">b揟;as7ά HpӃ?e`@k/_O}['/Yՠ|`_ׯw_ HpK]}?TU:u*0EC}u>?^X?7_vy\m[gzjd&e\RŇ4&CZ̫/}b?]/GeGOݼmic];_{\-ZIjsAξlLM(#-ΕGyR<;3mCa:rU-C@�܂BZ^>6?ZYƍu9BOWx pH@[ǙzLa+ s7  -ƨ.Ku(@0 -$Hp #a� H@0 -$Hp # A[  -R>z"*����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/PDFPresentation/music.xm������������������������������������������0000664�0000000�0000000�00001656766�14115753270�0023313�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������Extended Module: Existing, by MickRipFastTracker v2.00 ��*����*����}�� ) !"#$%&'(���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����B�J0s<@>0@@0C@J:L:$>0"B00>0B@ GBJ0@G@40;@BBC4G:J00G<L@ N4 ����@�N6I:;0O0@J;@<0@C4J0J4O3L4Q0> 0B  >3B& L5G5O0@J0P$ $ L5G543;6B8C@G@J4@GBC4>0 ����D�I J0 s<@>0@@0C@J:L:$>0"B00>0B@ GBJ0@G@40;@BBC4G:J00G<L@ N4 ����@�eI0;0J@@<@@>0@@0C@J:L:$>0"B00>0B@ GBJ0@G@40;@BBC4G:J00G<L@ N4 ����@�N6I:;0O0@J;@<0@C4J0J4O3L4Q0> 0B  >3C&L5G5O0@J0P$ $ L5G543;6B8C@G@J4@GB70%62 a ����@�s  4@  C0J'L:N0@L G4I0;@C4J0@<@@L4J3C3:4I5C3;4@J5@L0J0J394@&I0C*7063 ����@�m 4@ C0J'L:N0@L G4I0;@C4J0@<@@L4J3C3:4I5C3;4@J5@L0J0J394L3I0C*7063 ����@�  4@G'  ()*C0J'L:N0@L G4L'()*I0;@C4J0@<@@L4J3L)C3N*:4I5C3N);4@J5@O* L0N)J0L*J3J'()*94@&I0C*L'(70)*63+ ����@� 4@G' ()*C0J'L:N0@L G4L'()*I0;@C4J0@<@@L4J3L)C3N*:4I5C3N);4@J5@O* L0N)J0L*J3J'()*94L3I0C*I'(70)*63+ ����@�I0;0  JH0L 0J J@@<@@!"#>0@@0C@J:L:$>0"B00a>0J0E B@ GBJ0@G@a40@0G!;@BBC0LG:J00G<    L@E! N4C! ����@�N6I:;0H0L 0C J O0@J;@<0@!!""##C4J0J4O3L4Q0> 0B  a>3J0E N C&O L5G5N$O0@J0P$ $ L5G5Oa43@0G!L!;6B8C@LG@J4@GB    E0%G2  ����@�I0;0  JH0L 0J @ J@@<@@!!""##>0@@0C@J:L:$>0"B00a>0J0E B B@ GBJ0@G@a40@0G!C!;@BBC0LG:J00G<    L@ N4 ����@�>N6I:;0H0L 0O J O0@J;@<0@!!""##C4J0J4O3L4Q0> 0B  a>3J0Q N C&O L L5G5N J O0@J0P$ $ L5G5O L a43@0GL;6! "!B8"C@LG@J4@GB    70%62  ����@�h  4@G'@CG@ C$ G ч>@0  ()*C0@" J'L:C! N0@L G4L'C! G L#чA()*aI0;@C4@CHH!0F<0J0@<@@L4C" J3L)H L C3N*J N! a:4I5C3N)CGJC"G N" EC2;4@J5@O* O"0L0N)E N J0L*C L" J3J'C J! ()*a94EIL@ CE0@&I0C*L'E$ L (70)*63+a ����@� 4@G'@CG@ C$ G ч>@0 ()*C0@" J'L:C! N0@L G4L'C! G L#чA()*aI0;@C4@CHH!0F<0J0@<@@L4C" J3L)H L C3N*J N! a:4I5C3N)CGJC"G N" EC2;4@J5@O* O"0L0N)E N J0L*C L" J3J'C J! ()*a94EIL@ CE0L3I0C*I'E$ I (70)*63+a ����@�  4@G'@CG@ C$ G ч>S@0  ()*C0@" J'L:C! N0@L G4L'C! G L#чAX()*aI0;@C4@CHH!0F<0J0@<@@L4C" J3L)H L XC3N*J N! Za:4I5C3N)CGJC"G N" EZC2;4@J5@O* O"0[ L0N)E N ZJ0L*C L" XJ3J'C J! V()*a94EIL@ CE0@&I0C*L'E$ L X(70)*63+a ����@� 4@G'@CH@ C$ G ч>S@0@ ()*C0@" J'L:C! N0@L G4L'C! G L#чAX()*aI0;@C4@CHH!0F<0J0@<@@L4C" J3L)H L XC3N*J N! Za:4I5C3N)CGJC"G N" EZC2;4@J5@O* O"0[ L0N)E N ZJ0L*C L" XJ3J'C J! VI ()*a94EIL@ CE0I L3I0C*I'E$ I UI (< 70)< < *< < 63+< < < < a ����@�I0;0<< F0H0L 0<H C < 0J@@<@@ A < A0>0A< P@0 @@0<< 0F0C0 C@< < PF0@0 < < J:<< P< L:$>0"B00C 0 < aH 0>0A< H0J0B E < 0 <E H0A0B@A< P @0<< 0H0C0 GB< < PE0@0 J0@< A< G@<< PH0< < < aH 040<< J0@0G C!< 0A < A0;@A< P@0<< 0H0C0 BB< < PJ0@0 < H0<  C2<< PJ0L<  C 0 < H 0G:A< >0< 0 J00<< >0A0G<A< P @0 << 0>0 C0  L@< < PA0@0< <  N4<< PE0< < < H 0 ����@�HN6I:;0<< F0H0L 0<J O < 0H0L0= O0@J;@<0@ A < A0C4A< P@0 << 0F0C0 J0< < PF0@0 < < J4O3<< P< L4Q0> 0B  C 0 < aH 0>3A< H0J0J N < 0 <E H0A0B&A< P @0<< 0H0C0  L5G5< < PE0@0 O0@J0P< A< $ $ L5G5<< PH0< < < aH 043<< J0@0G L!< 0A < A0;6A< P@0<< 0H0C0 B0< < PJ0@0 < H0<  C@<< PJ0L<  C 0 < H 0G@A< >0< 0 J4@<< >0A0GBA< P @0 << 0>0 C0  C4< < PA0@0< < >0<< PE0< < < H 0 ����@�N6I:;0<< F0H0L 0<J O < 0H0L0= O0@J;@<0@ A < A0C4A< P@0 << 0F0C0 J0< < PF0@0 < < J4O3<< P< L4Q0> 0B  C 0 < aH 0>3A< H0J0J N < 0 <E H0A0B&A< P @0<< 0H0C0  L5G5< < PE0@0 O0@J0P< A< $ $ L5G5<< PH0< < < aH 043<< J0@0G L!< 0CA < A0;6A< P@0<< 0H0C0 B0< < PJ0@0 < H0<  C@<< PJ0L<  C 0 < H 0G@A< J0   < 0          J4@< < H0   A0          GBA< PE0   @0  D      < < 0H0   C0  B < 0      C4< < PJ0   @0  A      = < H=   <   =     : >0<< PJ0< 5 = < H 03 ����@�o  4@<< >0@4aG)GG C =S= �   *A < +-C0A< P << 0>0 J'L:< < P>0N0@ L < G4<< PL)LX*C 0 < +-I0;@C4A< F0aH'H C J0@<@@ <E F0L4A< P << 0F0 J3< < PE0L-LX < FC3<< PF0N*NZ< < :4I5C3<< A0C5aN-NC G Z;4@J5@O- O [ A < L0A< PN-NZ<< 0A0 J0< < PH0L-LX < A0 J3<< PH0J*JV +C 0 < -.94A< C0aE5E I! << C0@&I0C*A< PL*LX<< 0C0+ 70< < PE0-< .63<< PH0/< <  ����@�u  4@<< >0@4aG)GG C =S= �   *A < +-C0A< P << 0>0 J'L:< < P>0N0@ L < G4<< PL)LX*C 0 < +-I0;@C4A< F0aH'H C J0@<@@ <E F0L4A< P << 0F0 J3< < PE0L-LX < FC3<< PF0N*NZ< < :4I5C3<< A0C5aN-NC G Z;4@J5@O- O [ A < L0A< PN-NZ<< 0A0 J0< < PH0L-LX < A0 J3<< PH0J*JV +C 0 < -.94A< C0aE5E I! < < C0@&I0C*A< PI*IU< < 0C0+< 0 70< < PE0-= < .63<< PH0/= <  ����@�e  4@<< >0@4=PG)G2G C L0@#S   *A < +-C0A< P << 0>0 J'L:< < P>0N0@ L < G4<< PL)L0X *C 0 < +-I0;@C4A< F0aH'H C H0H#J0@<@@ <E F0L4A< P << 0F0 J3< < PE0L-L0H#X < FC3<< PF0N*N0J#Z < < :4I5C3<< A0C5aN-N0C G C0I#Z ;4@J5@O- O00J# [  A < L0A< PN-N0G#Z << 0A0 J0< < PH0L-L0C#X < A0 J3<< PH0J*J0C#V +!C 0 < -".#94A< C0aE5E I!E0 << C0@&I0C*A< PL*L0E#X << 0C0+! 70< < PE0-"< .#63<< PH0/$< <  ����@�  4@<< >0@4G@G)G2G C L0@#S   *A < E0+-C0A< PC  << 0>0E0 J'L:< < P>0G%N0@ L < EG4<< PCL)L0X *C 0 < E+-I0;@C4A< F0aH'H C H0H#J0@<@@ <E F0L4A< P << 0F0 J3< < PE0L-L0H#X < FC3<< PF0N*N0J#Z < < :4I5C3<< A0C5aN-N0C G C0I#Z ;4@J5@O- O00J# [  A < L0A< PN-N0G#Z << 0A0 J0< < PH0L-L0C#X < A0 J3<< PH0J*J0C#V +!C 0 < -".#94= < C0aE5E I!E0 << C0@&I0C*= < PI*I0E#U << 0C06 +! 6 070< < PE0=D -"= < D .#63<< PH0= A /$< < =  ����@�I0;0<< F0H0L 0<H C < 0EEJ@@<@@ A < A0E >0A< P@0 @@0<< 0F0C0CC C@< < PF0@0EC E < < HE HJ:<< P< H L:$>0"B00C 0 < aH 0KKL X >0A< H0J0B E < 0K  L  <E H0A0B@A< P @0<< 0H0C0JV GB< < PE0@0HJ T J0@< A< JH VG@<< PH0< HJ T< < aH 0CH O40<< J0@0G C!< 0DC 8E090A < A0D E 0;@A< P@0<< 0H0C0C7 BB< < PJ0@0E C 9 < H0< HE  < C2<< PJ0L<  H C 0 < H 0DOE Q G:A< >0< 0D E  J00<< >0A0G<A< P @0E E << 0>0 C0CE C  E0E0L@< < PA0@0HC HE 0< < JH J N4<< PE0< HJ H< < H 0H  ����@�QN6I:;0<< F0H0L 0<J O < 0QAO0@J;@<0@ Lp A < A0QpQLpLpC4A< P@0OpQp JLp<< 0F0C0OpOp JpJJ0< < PF0@0KpOp LpJpL< < KpLpJ4O3<< P< SGL4Q0> 0B  C 0 < aH 0SSGT H >3A< H0J0J N < 0S T <E H0A0GGB&A< P @0H GH << 0H0C0OH C  L5G5< < PE0@0UOH V JO0@J0P< A< U$ $ V L5G5<< PH0< TH< < aH 0T43<< J0@0G L!< 0PEQ A < A0PLQ ;6A< P@0= EL<= H0C0= 0@EB0< < PJ0@0 @< H0<  C@<< PJ0L<  C 0 < H 0G@A< >0< 0C J4@= << >0A0EC�= 0GB= A< P @0CE� = << 0>0 C0EC�  C4< < PA0@0D E�= = 0 =< < B = >0= << PE0< A = ? = < < H 0? = ����@�N6I:;0<< F0H0L 0<J O < 0AMO0@J;@<0@ A < A0AC4A< P@0 << 0F0C0 J0< < PF0@0HH < < JHJJ4O3<< P< HJHL4Q0> 0B  C 0 < aH 0KHJL L >3A< H0J0J N < 0K L <E H0A0B&A< P @0HE<< 0H0C0JHG  L5G5< < PE0@0KJG L H O0@J0P< A< K$ $ L L5G5<< PH0< JG< < aH 0J43<< J0@0G L!< 0HEA < A0H;6A< P@0CC<< 0H0C0@CL B0< < PJ0@0C@7 < H0< EC9 C@<< PJ0L< E C 0 < H 0G@A< >0< 0HH J4@<< >0A0GHGGBA< P @0CGC << 0>0 C0ECE  C4< < PA0@0EEE< < GEG>0<< PE0< HGH< < H 0JHJ ����@�I0;0<< F0H0L 0<H C < 0KLJ@@<@@ L0A < A0E >0A< P@0 @@0<< 0F0C0CC C@< < PF0@0EC E < < HE HJ:<< P< H L:$>0"B00C 0 < aH 0KKL X >0A< H0J0B E < 0K  L  <E H0A0B@A< P @0<< 0H0C0JV GB< < PE0@0HJ T J0@< A< JH VG@<< PH0< HJ T< < aH 0CH O40<< J0@0G C!< 0DC 8E090A < A0D E 0;@A< P@0<< 0H0C0C7 BB< < PJ0@0E C 9 < H0< HE  < C2<< PJ0L<  H C 0 < H 0DOE Q G:A< >0< 0D E  J00<< >0A0G<A< P @0E E << 0>0 C0CE C  E0E0L@< < PA0@0HC HE 0< < JH J N4<< PE0< HJ H< < H 0H  ����@�  6@<< @0B4?I)I2= BNI   *A < +=B �P@I -E0A< P=N0I << 0@0=I I L'N:< < P@0BNI P0@ N < = PI I4<< PN)N0= GNI *C 0 < +=G �II -K0=@E4A< H0aJ'= I L0@>@@ <E H0=I N4A< P =I << 0H0=I L3< < PG0N-N0BGI < H= G �I E3<< PH0P*P0= II < < =I �I <4K5E3<< C0E5aP-P0= II =4@L5@Q- Q00J A < =I �I J  N0A< PP-P0=II << 0C0=I �I L0< < PJ0N-N0BGI < C0= G �I L3<< PJ0L*L0= EI +C 0 < -=E �I .;4A< E0aG5= I  << E0=I B&K0E*A< PN*N0=GI << 0E0+=G �I  90< < PG0-BI < .= I 83<< PJ0/= I < < =I  ����@�  6@<< @0B4?I)I2= BI   *A < +=B �I -E0A< P=I << 0@0=I L'N:< < P@0BI P0@ N < = I I4<< PN)N0= GI *C 0 < +=G �I -K0=@E4A< H0aJ'= I L0@>@@ <E H0=I N4A< P =I << 0H0=I L3< < PG0N-N0BGI < H= G �I E3<< PH0P*P0= II < < =I �I <4K5E3<< C0E5aP-P0= II =4@L5@Q- Q00J A < =I �I J  N0A< PP-P0=II << 0C0=I �I L0< < PJ0N-N0BGI < C0= G �I L3<< PJ0L*L0= EI +C 0 < -=E �I .;4A< E0aG5= I  << E0=I B&K0E*A< PK*N0=DI << 0E0+=D �I  90< < PG0-BI < .= I 83<< PJ0/= I < < =I  ����@�  6@<< @0N?I)I2= BBI   *A < +=B �I -E0A< P== << 0@0=I L'N:< < P@0Ba= P0@ N < = I ,I4<< PSN)N0= GI Q*C 0 < S+=G �I Q-K0=@E4A< H0SJ'= >I L0@>@@ <E H0=I N4A< P =I << 0H0=I L3< < PG0S N-N0BGa= < H= G �= 0E3<< PH0U P*P0= II < < =I �I U <4K5E3<< C0V  aP-P0= IEI =4@L5@Q- Q00J A < =I �I J  N0A< PU P-P0=I= << 0C0=I �I L0< < PJ0S N-N0BGaI < C0= G �I L3<< PJ0Q L*L0= EI +C 0 < -=E �I .;4A< E0G5= G0I  << E0=I B&K0E*A< PS N*N0=G= << 0E0+=G �I  90< < PG0-BaI < .= I 83<< PJ0/= I < < =I  ����@�'  6@<< @0N?I)I2= BBI   *A < +=B �I -E0A< P=I << 0@0=I L'N:< < P@0BaI P0@ N < = I ,I4<< PSN)N0= GI Q*C 0 < S+=G �I Q-K0=@E4A< H0SJ'= >I L0@>@@ <E H0=I N4A< P =I << 0H0=I L3< < PG0S N-N0BGaI < H= G �I E3<< PH0U P*P0= II < < =I �I U <4K5E3<< C0V  aP-P0= IEI =4@L5@Q- Q00J A < =I �I J  N0A< PU P-P0=II << 0C0=I �I L0< < PJ0S N-N0BGaI < C0= G �I L3<< PJ0Q L*L0= EI +C 0 < -=E �I .;4A< E0G5= G@I  < < E0=I B&K0E*A< PP K*N0=DI < < 0+=D �I < 0 90< < PQ0-BaI  = < O0.= I 83<< PL0/= I  = < J0=I  ����@�K0=0<= H0J0N 0>J E < 0GGL@@>@@ A = A0G @0A= P@0 B@0<= 0H0C0EE E@< = PH0@0GE G = < JG JL:<= P< J N:$@0"D00C 0 = aH 0MMN Z @0A= J0L0D G < 0M  N  <F J0A0D@A= P @0<= 0J0C0LX IB< = PG0@0JL V L0@= C< LJ XI@<= PJ0< JL V< = aH 0EJ Q60<= L0B0I E!< 0FE :G0;0A = A0F G 0=@A= P@0<= 0J0C0E9 DB< = PL0@0G E ; = J0< JG  > E2<= PL0N<  J C 0 = H 0FQG S I:A= @0< 0F G  L00<= @0A0I<A= P @0G G <= 0@0 C0EG E  G0G0N@< = PC0@0JE JG 0= < LJ L P4<= PG0< JL J< = H 0J  ����@� P6K:=0>> H0J0N 0>L Q < 0COQ0@L;@>0@ C > A0CE4C> P@0 >> 0H01  0L0> > PH01 JJ 0> < LJLL4Q3>> P< JLJN4S0@ 0D  E 0 > aH 0MJLN N @3C> J0L0L P < 0M N >G J0A0D&C> P @0JG>> 0J0C0LJI  N5I5> > PG0@0MLI N J Q0@L0P> C< M$ $ N N5I5>> PJ0< LI> > aH 0L63>> L0B0I N!< 0JGC > A0J=6C> P@0EE>> 0J0C0BEN D0> > PL0@0EB9 > J0< GE; E@>> PL0N< G E 0 > H 0I@C> @0< 0JJ L4@>> @0A0IJIIBC> P @0EIE >> 0@0 1 GEG  0E4> > PC01 GGG0= > < IGI@0=> PG0< JIJ= > H 0LJL ����@� K0=0<< H0J0N 0>J E < 0MNL@@>@@ N0A < A0G @0A< P@0 B@0<< 0H0C0EE E@< < PH0@0GE G < < JG JL:<< P< J N:$@0"D00C 0 < aH 0MMN Z @0A< J0L0D G < 0M  N  <E J0A0D@A< P @0<< 0J0C0LX IB< < PG0@0JL V L0@< C< LJ XI@<< PJ0< JL V< < aH 0EJ Q60<< L0B0I E!< 0FE :G0;0A < A0F G 0=@A< P@0<< 0J0C0E9 DB< < PL0@0G E ; < J0< JG  > E2<< PL0N<  J C 0 < H 0FQG S I:A< @0< 0F G  L00<< @0A0I<A< P @0G G << 0@0 C0EG E  G0G0N@< < PC0@0JE J G 0= < : < LJ L  P4=<< P6 0< JL J0< < 3 H 0J =  ����@�P6K:=0<< H0J0N 0>L Q > 0SCQ0@L;@>0@ Np A < C0SpSNpNpE4A< PB0QpSp LNp<< 0H0E0QpQp LpLL0< < PH0B0MpQp NpLpN< >  MpNpL4Q3<< P>  N N4S0@ 0D  C 0 < aJ 0N@3A< J0L0L P > 0 <E J0C0ND&A< P B0<< 0J0E0  N5I5< < PG0B0 Q0@L0P< C> $ $ N5I5<< PJ0> < < aJ 063<< L0B0I N!> 0A < C0=6A< PB0<< 0J0E0 D0< < PL0B0 < J0>  E@<< PL0N>  C 0 < J 0I@A< @0> 0 L4@<< @0C0IBA< P B0 << 0@0 E0  E4< < PC0B0< > @0<< PG0> < < J 0 ����@�P6K:=0<< H0J0N 0>L Q > 0= = 2= @Q0@L;@>0@ A < C0== 0E4A< PB0== 0 << 0H0E0== 0 L0< < PH0B0B= 0=  < > = = 0L4Q3<< P> = = 0N4S0@ 0D  C 0 < aJ 0== 0@3A< J0L0L P > 0= = 0=  <E J0C0== 0D&A< P B0== 0<< 0J0E0== 0  N5I5< < PG0B0B= 0= Q0@L0P< C> = = 0$ $ N5I5<< PJ0> = = 0< < aJ 0== 063<< L0B0I N!> 0= = 0= A < C0== 0=6A< PB0== 0<< 0J0E0== 0 D0< < PL0B0B= 0= < J0> = = 0 E@<< PL0N> = = 0 C 0 < J 0== 0I@A< @0> 0= = 0= L4@<< @0C0== 0IBA< P B0== 0 << 0@0 E0== 0  E4< < PC0B0B= 0= < > = = 0@0<< PG0> = = 0< < J 0== 0 ����@�{P6K:=0<< H0J0N 0>L Q > 0= = 2= @Q0@L;@>0@ @A < C0== 0@?E4A< PB0== 0? ?<< 0H0E0== 0> >L0< < PH0B0B= 0= > =< > = = 0==L4Q3<< P> = = 0<<N4S0@ 0D  C 0 < aJ 0== 0<;@3A< J0L0L P > 0= = 0= ; ;<E J0C0== 0::D&A< P B0== 0:9<< 0J0E0== 09  9N5I5< < PG0B0B= 0= 8 8Q0@L0P< C> = = 08$ $ 7N5I5<< PJ0> = = 077< < aJ 0== 06663<< L0B0I N!> 0= = 0= 65A < C0== 055=6A< PB0== 044<< 0J0E0== 04 3D0< < PL0B0B= 0= 3 3< J0> = = 02 2E@<< PL0N> = = 02 1C 0 < J 0== 011I@A< @0> 0= = 0= 0 0L4@<< @0C0== 00/IBA< P B0== 0/ /<< 0@0 E0== 0.  .E4< < PC0B0B= 0= .= -= < > = = 0--@0<< PG0> = = 0,,= < J 0== 0,+ ����@�xP6K:=0<< H0J0N 0>L Q > 0= = 2= +Q0@L;@>0@ +A < C0== 0**E4A< PB0== 0* )<< 0H0E0== 0) )L0< < PH0B0B= 0= ( (< > = = 0('L4Q3<< P> = = 0''N4S0@ 0D  C 0 < aJ 0== 0&&@3A< J0L0L P > 0= = 0= & %<E J0C0== 0%%D&A< P B0== 0$$<< 0J0E0== 0$  #N5I5< < PG0B0B= 0= # #Q0@L0P< C> = = 0"$ $ "N5I5<< PJ0> = = 0"!< < aJ 0== 0!!63<< L0B0I N!> 0= = 0=   A < C0== 0 =6A< PB0== 0<< 0J0E0== 0 D0< < PL0B0B= 0=  < J0> = = 0 E@<< PL0N> = = 0 C 0 < J 0== 0I@A< @0> 0= = 0=  L4@<< @0C0== 0IBA< P B0== 0 << 0@0 E0== 0  E4< < PC0B0B= 0= < > = = 0@0<< PG0> = = 0< < J 0== 0 ����@�wP6K:=0<< H0J0N 0>L Q > 0= = 2= Q0@L;@>0@ A < C0== 0E4A< PB0== 0 << 0H0E0== 0 L0< < PH0B0B= 0=  < > = = 0L4Q3<< P> = = 0N4S0@ 0D  C 0 < aJ 0== 0@3A< J0L0L P > 0= = 0=  <E J0C0== 0D&A< P B0== 0<< 0J0E0== 0  N5I5< < PG0B0B= 0=   Q0@L0P< C> = = 0 $ $  N5I5<< PJ0> = = 0  < < aJ 0== 0  63<< L0B0I N!> 0= = 0=   A < C0== 0  =6A< PB0== 0  << 0J0E0== 0  D0< < PL0B0B= 0=  < J0> = = 0 E@<< PL0N> = = 0 C 0 < J 0== 0I@A< @0> 0= = 0=  L4@<< @0C0== 0IBA< P B0== 0 << 0@0 E0== 0  E4< < PC0B0B= 0= < > = = 0@0<< PG0> = = 0< < J 0== 0 ����@��� ����@�I0;0<< F0H0L 0< H C < 0J@@<@@ A < = @A0>0A< PA 0@0 @@0<< 0F0D C0 C@< < PF0@0 < < J:<< P< L:$>0"B00C 0 < aH 0>0A< H0J0B E < 0 <E H0A0B@A< P @0<< 0H0C0 GB< < PE0@0 J0@< A< G@<< PH0< < < aH 040<< J0@0G C!< 0A < A0;@A< P@0<< 0H0C0 BB< < PJ0@0 < H0<  C2<< PJ0L<  C 0 < H 0G:A< >0< 0 J00<< >0A0G<A< P @0 << 0>0 C0  L@< < PA0@0< <  N4<< PE0< < < H 0��Composed, remixed,������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� �������������������������������%V��a6��@�� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ������ ������� ���� ��������� �����   � �� � �� � � ���� � ��� ���� � ��� � ��� ��� �  �� �� � �   �� � �  � ���� �  � ����   � �    ���    ��    ���  ��  �  � ��     ��   �  ��  �   ��   � ���    � ��         ��  ��  �   ��  ��  �    �� �    �    �  ����     ��� �    ����    �  �����  �  �  ���   � �  ����      ����� �     ���    �  ����    �  �� �     ����       �����     ����      ���� �  �  ��   � �  ����    �  ����       �       ���       ������  �     ���      �����      �����  �     �   � �  ����     �  �   � ����   � ���� �   �  ����    �� �     �      ����     �   � � ���    ���   � ��� �      �� �� ��  �  ���   �  � �  �  ��   �  ����  ��     ��   �� ��� �   � ���   �  ��           ���      � �  �  �   �  ���     � �     ��   ��  ���  �  ���     � ��   �  ���  �  �  ��   ��� �     ��   � �  �  � ���     �    � �   � �    �   � �    � �   ��   � ��� �  � �   �� ����       � ��    �   �� ���    ��   � �� �  � ����    ��    �� �  � ��    � �   ������   � � �  �� �� �  � �����   � � �  � � �   ���    ��� �  � ��    ��    ��   � �����    ���   �  � ��    �   �  ����     ���     ��     ��     ��     � �  �  �   � ���   �  ���   �  ��    � ��  � ���    ��   � �� �  � ����    �    �� �  � ����    ��  �  � ��    ��    ��� ��  � �����    ��    ��� ��  � ����    ���     ����   � ����    ��   � ��   � ����    ���   � ��    � �  � ���    � �  � ���   �  ����    �� ��  � ����   �� ���     ���    ��� �    ��� ��  �  �����  �  �  ���     ���      ����   �     �  ���� �  �  ���   �� ���   � �    ����    �� ��   ��   �� ��    � ��   �����   �� ����   � �    ��  ��   ���   � ���  �  � ��  �   ���     ���   � ��   � �����  � � ��� � � �����    ���  �� �� �  ���  � ��   ��� ��  � ���    ��� � � ��   � ��� ��  �� ��   �� �   � ��� �  � ��� �  �� ���   �� ��    ���     ��     ��    ��    ���   � ���   �  ����    ��   � ��    �    ��� �    �  � ���   �� ��   �� ����   � �� �   �   ���  �  �� ���    ��   �� ��   � ���   � ���  � �� ����  ��  �� ���  ��  ����    �����   � ��   � ����   � �����    ��   � ���  �� �� �  ��   �� � � �    � �� � �   � ��   � �   � ���    �    ��   � ��� ��  �� ���   � ����    ���   �� �����   �� ����   ��� ��     ���   �  �� �   ��   � ��    �   � �    ���    � ��  �� ���  �� ��     ���  � �� ��    ��   �� ���    ��  � �� ���  �� �� ���   ����    ����   �� ��  �� � ���  � � ���  �� �� ���  � � ��   � ��  �  �� � � ��  � � � � ��   � �� �    �� �  � ��  �� �   ��  �� �� �  �� ���   � �����    ����    ���    ��    ��    ���    ���   � ���    �   �� �   � ���   � ���    ��� ��  � � �  �� ��   �� �    �� � � ��   ��  � � ��    �  �  ��  �  � ��    ��  � �� ���  �� �� �����    ��   � ���   �� ���   � ���� �� �� ��  � �� ��   � ��� � �� ��  � � ��    � �� � �     �� �� �  � �  � � � � ��  � ��    ��   � � �  � ��� ��  � �   � ���� �  � ��   �  ��    ���� ��   � ��   � �  � � �  � ���    �   �� �   � ��    � �� � ��  � �    ���  � � ���   � �  �� � ���   �� ���  � � ��  � � ���   � ���   �� �����  �� ���   � ��  � �� �� �  ���   � ����   � ��   �� �   ��  �� � � �� �  �  � �� ��      �� � �� �   ��   � ��  �� ��   � ��   � ����    ���     ����    ����    ���   �  ����    ���   � ���    ��   � ���    ��    �� ��  �  �  �� ��   ��� �   ��  �� �    � �� ��      � � �  �  ����and orchestrated by ..��(�����������������������������������������������������������������������������������������������������@�c�@�<���<���<���<���<���F���P���Z���d���n������ �5���2� �<�*�F� �P� �Z� �d� �n� �x� �� �����!�������������������������S��M��@�� �������������������������������������� ����������� ��     � �  ���������   � �  � �  � ����  � �� �� ��    ��� �  � ���� �����������   ���� ������ ����������  ����� ����������� ������������������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Mick Rippon 19-3-96�����(�����������������������������������������������������������������������������������������������������@�^�@����<���<���<���<���F���P���Z���d���n����� � �1���2� �<� �F� �P� �Z� �d� �n� �x� �� ����� ����������������������k��&��.E��@�� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ �������������������������������������������� �������������������������������� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������� ������������������������������������������������������������� ������������� �������������������������������� ������������������������� ����������������� �� ������������ ��������� ����������������������� ������ �������������������������������� �������������������������������������������� ��������������������������������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� ���������������������� ������������������������������ ���������������������������������������� ����������������� ���������� ������������������������������������������������������������ ��������������������������������������� � �����������������������������  ������������������ ������������������� ������������������ ��������������������������������������������������������������������������������������������������������������� ������� �������������������������������������� � ������������������������������������������������� ������������������� ���������������������������������� ����������������� ����������������������������������������������������������������� ���������� ��������������� ����������������������������������������������������������������� �������������������������������������������������������������������������� ������������������������������������� ������������������������������������� ����������������������������������� ������������������������������������ �������� ����������������������������������������� ��� ������������������ ������������������������������� ����������������������������������� � ����������������������������� �� �� �������� ��� ������������������������������������ ������ ������������������ ��������������������������������������������������� ��������������������������� ��������� ���� ������������������������������� ��������������������������������������������������������������������������� ���������������������� ����������������������������������������������������������������������������������������������������������������� ���������������������������������������������������������� ������������������������������������������������������ ���� ������������������������������������������� ����� ���� �������� ������������������������ �������������������������������� ��������������������������������������������������� ��������������� ������������������������ ���������������������� ������������������������������������������������������������������ � ����� ������������������������������(�����������������������������������������������������������������������������������������������������@�2�@�f���<���<���<���<���F���P���Z���d���n����� � �7���2� �<� �F� �P� �Z� �d� �n� �x� �� ����������������������������^��%��T8��@�� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ����������������������������������������������� ������������ �������������������������������������������������������������� ����������������������� �������������������� ����������������������������������������������������� ���� ����������������������������� ��������������  �������������  ���������������� ��������������� ������ ������������������������������������������������������������������������������������� ������������������������������ �� ���������������������������������������������������������������������������� ������������������������ ������������������ ���������������������������������������������������� ����������������������������� ������������������� ����������������������� ����������������������������� ������������������������������������������� ������������ �������� ������������������������������������������������������������������������ ������ �������������������������������� ������ ��������������������������������������� ����������� ������������������������ �������� �������� ���� � ��������� ������ �������� ��������������� �������� �������� �������� ������ ������������ ����  ������������������ ��������� ������ � ������� �� �����������������  �������������������������� ����������������������� �������������������� ������ ����������� � ���� ����������� �������������� �������������������������������� ����������������� ��������������������������������������������������������������� ������������������������������ ��������������������� ������������������������������� ����������� ����� ���������������� ��������������� ���������  ����������������������������� ����������� �������������������  ������ ��� ���������� �����  � � ������������������� ���  �������� ������ ���������������� ����  ��������� ������� ���������  ��������������������������� �����  ������ ���� �������� �������������������������������������������� ����������������������  ������������������������������� ���������������  ����������������������������� �������� ���������������������� ���������������� �������������������� ������������������������Email: �����������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� �����������������������������0��'����@��� �� ������������������������������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������rip@hunterlink.net.au���(�����������������������������������������������������������������������������������������������������@�T�@�<���<���<���<���<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� �������g����������������������e��R ��CE��@�� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������������������������������������������������������� ������������������� ������������������������� ������������������������������������������������������������� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������������������������������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ������������������������������������������������������������ ��������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������������ ������� ������������������������������������������������ �������������������������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ���������������������������������������������� ����������������������� ������ �������������������������������������������������������������������������������������������������������������������������������� �����������������������(�����������������������������������������������������������������������������������������������������@�A�@�<���<���<���<���<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� ���������������������������Gb�� +��>7��@�� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������  ������������������������������������������������� �������������������� ������������������������������������������������� ��������������������������������������� ������������������������������������������� ������������������������������� �������  ������������������������������������ ���������� ��������������������� �������������� ������������������������������������������������������������������������������������������������� ��������� �������������������������������� ����������������� � �������������������������������������������������������������������������������������������� ������������������������������������������������������ ������� �������������������������� �������������������������������  ������������������� ����������������������������������������������������������������������������������� ��������������� ������������������������� ����������������� ���������� �� ���������������������������� ����������������������������������������� ���� ������������������������������ �������� ������������ ������������������������ ������������������������������������������������������������������������������ ��������� ��������������������������������������������������������������������������������������������������������������������������� ���������� ������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����������������������������� �� ������������������� ����������������������������������������������������������������������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������������� ���������������������������������������������  ��������������������������������������� ��������� ������������������������������� ���������������� ����!����������������������������(�����Greets fly to all the���(�����������������������������������������������������������������������������������������������������@��@��@��,��'�9�)�<���F���P���Z���d���n����� ���!�&�2� �<� �F� �P� �Z� �d� �n� �x� �� �����������������������������C����������1��� e�? 1:hTa��q?#��V?dg1��+L;4&% ������0V��3����������g%t��XFR>������FߞY����������������5����/G&Od������ۦCS* b΄n!c��Ֆ*i��Q��������������������7������- $J y"?%}V4 #��ؾbr3�� `Ͱ7PQ,N2&>(�������������������������� =^ ڴ_JWDӄRss>0= ~UTz4��������L'|ъ��������[<5oXo ,j*CP����������������h ������G ~TY~ yfs6@l#TR$%/LBG$ &r�)/,,3(uKL*s 4nJ%h^�7p36%w`6O;�90!��������������������������������6{ 9 fuK W.-xԣ?TD9#%w5 )O럟45)M)5|I3����������y܏, ����ag*%RyT@�8�(+ a_)')H$.2FjnQ; KC_.u :z� e6øґ:&ۮTB3H> l"2&;,J�«0J)*b ڐ5Vi  !3m&x=+1��H ��6��!ߋV  ݧ)%ȢY,hݏ- R /|_Om%k3BT FB/5=V-l9 @FM $'k;%J �yc){@ *Aݸ+E\V@uM,IԖ C ;"@2 7B\+ёP K˿ ! x=| :z2f E¯#j0n50UU@TBYm6X: \s2fGo~Y'$51+zz[ _`i0��3Q6p߸=={R*PB?Ԋ3$;BEc:9w/)߰ Y@ֿW&$ �}' .l(P4)|)A!J2@N>  oɒgyK%-8/}#fFGx#:-�5B(@I?+G$gB-Q'Bҥ@ 02%4i�ӵ r n;1! S71+*;ZU 26kED.y% &= $}ZՕY+6,r.h֨e|@R�v8Fb?YZ͐:3Ii"X!#&/%)s)+|$ p2/.=p.�1? :p%fú2&;hʁ)ۚY532)ɗ#/0 נ2ZCOT;a..  R#1/A6dʹ$Xe׎ _-.b/;5esYIڰ�o2a"qۡN3U\,O·1 6S*^J.7ǜ ku%&Y .w5PT gv0:P "u'%;%*,RՐ6Pf0Ep2[Hw,I&8&bb68225�" #$juf ?m (">X1 # ߸+|" Պ1& n'PM,F:%*(pa'Tx!: ZX} Έ e) �-5 1 i7!K .Gߑ)xV'9:s]<2< k#Qa ,~>9ދ z=-S&Elԛ!!�bM! %  Q$ ~ Hl">,OhҢ1EU}  XY$UOjM6mJ-|i@,b ,sJc� BCݭH/&|_e n&&{v4F"!/+$ } A3Z!HЇE~ ׵ k &1*&qm2�'=}8 '|Y$Q7!\޺2."[fe5AZ$m<7؇ZSK j fS2΋'#1,,"km#g3dQ2;%[Y 0ǐ$b�Q %e۴T${e,p%$MDB)gv7: yg w&Cz$$CxKt P$,ӽv7�G3#5 OE7|?2 }hDVi J%݀�[xy )01֭ 28V7 %Mo F$ ֯"  " &3xC1g �J`pӂ�^BBd$7 "246L�$6d!z/7k(7?)N+y�ܤ [2=  T+ hq_ S= yޣ,ݨ+M.I g m9->U$=3#Y�&oK6q+<(ۛ{5s5 FX+bߺ E d_3q1h 6-"܆q(% 9/־'@#Z�8 !z2E [CVfX 1מ `"&` OU ^�ScI) $ii ))h # `<A U=�jYu ):"H "s_+X9Դ+Y�n< kՃ Gz o> Qj  Z (R3m +PG(eml}++zy�Dz@.h ? p8 d/ $ o++WS2�+CWQIX)6~ru\)MrP>! &~u mgM0.r)^;7)lm p  V�#�us a l]yWP ^I2%"+ X_Gr�[ۮ!%W   TO 1 � #a2Z@ B1Ydߋ;Ll�/w� ?T N `u c6 0, UB8 W+ I r; Q ? 3 3 �jl5 l�&pj$$i\1VOA  3F ; I  :& !.N#DU� '[< Q G* ޲ 9? ; " vN& IPH="c ? 4 MK�m  ;g�5SP Y "�c2dK t"q�MM 0q jw 4 v I<0 l ,R;}S :v) & lW4y݀c`8 v1] �2q�;~3uS .7`�o X V80 Ab ْ*O` T#n m( I^* L EC. Kq@T l[Qzx8 M  [� :�"vy\* o� D0^ &\w:t rc�?x�Xbx?G� �+1'a uy%  S;3 LCrt ?$ �uA3W<YU=kBFEe\fO0�f�gN �%7h 9S&   \!hHx % )�<D�$� p ]\Zn2]1k M �F bE Pa&^�  :nF :> l\s!;"bis q~p" ,(tg~/ &_!y SX!. 1(B{  `Pyn-<|+l�UI*o2�)� dZ5# ! E\j'C} g&)L k@IYHPVzqCa 0 w/PWC3�w/ 6 b</Y ]t� 7Kp��Cb,� OD pP� jsv<E0J uV7 �@G�:p C!JXLO Ey� ? O!w __I/|A dU ݾ  8( r ` �az  �_O�U^B % Z��[  nh =� 8#F�!8&pC$Y$l J(, �hi ZW[UW.9JP> i#G -&Jbo} ER�[HkiD^��A*H6" jjD 3l@ /}}1 77 av*n|G4 !hh< c n �oH7!N 1 ,~ ?1-J�~e fwJ ^Nf { Zu( `P�IGu 5sD_\ 6n 1r -A$I�7F: 6+ql% FR B q3q^ Jjc[ (6 tMO t: y�q( ,d�J 6_P0Zr^u(q{%�" Z"K / JC\~-:8y0 <Ua0R Kg(O8 LF( 2zs 'MkH;N� ) p+H�Q  �R^\\8 Y6x�Q*f�84� :�aIsHpHG�,�bd8a .&L2 _hjD�$ /{R^�^},l _H "" ,�P a�,nS[ i {;Hp  k!h n4%��(6 #c i  zy }�97�d`X ( �_>)>'XIl_R�(?2mu�! ?aT] Lkj !<0Y� <v�;BO4 K�wPGr�C%E}_9�,Z ,98�L01 8s@ ��tj,( !<nd3j~ �*� S_:�iXLmS 56aB gM J]$hvfO�� '<;��@2S��0kVdX�P)b4� 95 /y�$1z ,��Iu 4"`;@ b X*5c<(hWz�r}/ m� kA 4D�6K$ rN�{�l nCu&1+�:ux qX� � a w`d_7R!�] �Fe"8fJW"�W �RG ^�j;#|�8�ds4XVS AAe�fiG �?|_Qwv";�82 4&y W]G��um� &5GPf2_nY2� H<��P�3t�! kR � 0hw�4Z�*`] rSc # =� �[zF�S�eqw[�b-�s.'�B|( u>Whw�n.h* &+ �_2X><@1��s�00*&1Nim *<V��*D�^T5T�4�r�;� k $"5&@>�qN-(�O9x�^�fyRb�\�l�B ''UVc0�c-Y�%;<Sa�@>a�m�ok~ev�o�! >yV�|vCoOk_hhUFT"�6I�B�?�<�\_ � ZFA�)Ml�i�E�`F[{� ��`�AzkGR0iPn�PR=+�e�'Y'l�|! h/6N`DaD$CZ�[d;Ix3�#�L-]1qhicy��iO|H'�T�c���iLX|.s;5�V�1$X6|w.�`2Z���jo�H1(hS�r[,�[{ll)�EA5MM3n?.�8�t�8k!�==YZ*%�� *0e|W|�t� ]+�j,iR}C���iN� 6���aJR6@ /1>�c)% �M9Gn�N�-3i(�*2;�L�E/�o{.yL:�(�.��u=�p_�IB|>EUa�=q?�"5�(fQ�CxiEZj<4E�x&w�!�QUk��VI�0��c�r�$:K9y*\�!5:]�12+_Ve�)!!I�V�ci,z 0�,:5e.%k�L ;�OI�|LgnT}��6 �u(��7xg�T��? �AUw�G�dMf-"���i��s�0,k��= �)��+�-u�[ k1m,%��pi �&7� -�el6�L���@HB���U� !p�p=|.���Q:NZ��nX�i0EQ�h�-�8���G}��r8�<��8��Z'�/<ej�'a�F�7��h�P3y88l�,� �a� B#%bul�}J�t�i?�M��:H�)~Cou�:%S�Pp:���Z_w?|��ULG{kV�Vzef_ mRf#y*n�Om�P��cE6 �Qi.�0]& ��M�8�g�'G`FMV�pO-�F�Pv�b�t�',�#0'�B�#v�Q O@[7 �- �Z�z����v�aPU�Q\�Em{'O]��?}#'���Meg�p�\Co3�`��AL��N%� �l��9Kpr�����ew �R���7g�t��^����N��lgZ��u�V�p�vC1,�I\Fu�T ���__��KqK"�QdD9I�kWZ�r ls�$�?)I�@�q�1�5Z�0� �f��v -a�a'�DF��841y�X\wu�R�c�\ �6. ����> �^�u�X. ��}^��O�$���7J���#w� LB��T�x� �^;(��4���L���0�q�2�=�@G��J�WdJ#�B&s|�N1b��;�*�|��M;W�nf%U.)�S�|����H�Y� #d�zd���6�8 O�F�T&�L@�Y��`WY�u� �5Vl�b\s9E��9��b4I�'L^�nd�<�75�r\�C��j�,k/�U �\R@�@1��{RZ�HKu�{(+��`��LJ���S<�4f�]M�w�T�J�M�� �.���PX��[X� �&y��2�G�e��2�Xe$��h�u�� �n�T��Z�12(�*![�Qa��^h�2��po��G��|a�7Q/b'��3�e� �cOEk0b� �z� �)z�K~e�7�?+�1�A�D�e��CRi >E6��VE���X�$�8� �7�3J[�|?�++q�`K �m�4�*hn�/�S�^�e�*:-��f�A^ �to|�a '�Z�VG��x3;����{�g��(�*��M�q�P�1�j"C�� {�L��2@��gh�_g�"�,�p��+Vu�iW�'\��|�]��W�3���k�lMP e��$��ki�@��a+b�p]4��x�B��� Z� 7I�[�*�6L��68�� $S (cp�q�!��#O�;�.�\�( �}��i�Ffvg�_�<(��k��BD���<��t�j �",��:�3�9�pq��%�b��d���#��e�)��qT��1�m��8��v�;�.�7�[�G� ��: �w��m$?B���.�k�A�OQ� �b��70�8�)��� �x�� �g�N`w)�(>!�t�]�U6���� ��U=�,�B�^(f�M��N�~>�Y�>s�?�{�2���%�>]6���a�+�q�b�����{�f4|��^�v� �8m�"����t�qt (�T���I#u��d��O��N��K�q�2�x�}�:��K�4�0l�uj�.�����)�4�x�a�)-�D`�ML�3����E�"��Sl��� �H��~d��A�b���Bd�I� ��#� ������7%���6��jG��Ct���ox�.�"8�H�"�2���.�}�}�S��-vb����a�O��$O�k��+��<���t�l��`�B��K��Z�R�W�q�q7�3�sJ�bJ�"�T�V��}��!�W�(�(���b�,�j�a�&�Fd�6����~!�4�h`�l�c�~�Qc� �����U*��.�O��m� �&D�V��G��H�5��H�n�$�w6��>�j�K�)���/�]!�����@�J��'�.�t��w?�r�M���2�@���T�}�h�+�>��2�4��pz�D��#��p$�u�a�Y�_�s�R}N��K�4�{���/c�S�>1�5�~�Z� �\�-�U���� ��D�.�J�P��t���'�~.�K�-�|�[� �l�L�L�o#�$����C��wm��*� �D��|k�F�s��6�������_�|�l�X� �)�U�@�)�0��j� �=�8�xo�0� �@���E�Z��C��1�p��B�50��N���I�1��tN�N� ��r�h��i��{�W�R9��@�sP�E�-�W���@�2��,�A�"�e���2�T�j� ��<�?�4�v�-���_��V�d�V�U��%���*�.��,�/!�B�\� �x�B���ES�c�\�'�_�{�P�� �:�)� ��]��8��9� � �=���b�HO�w�:�O�j��2� �x��� ���`���Y� ���m�j��C����people on #Trax. I'm����(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� ��1���2� �<� �F� �P� �Z� �d� �n� �x� �� �����������������������������-����������@��� JHn < "nG77 x. /gjBޱzB,% B 0M�a�i;c) .> 99 /YC8Q�<~  {x�B T(E-jIZ �{O tl ����5Pj Y c v�s sd | R !P^g %Y c/ q$stw?'g`W!95L+pS�+h�N#VKO�b���jOY� �apnWJ S�%>|�{�[*Mc_"#W�ia�*�|(h�k�Fkp+�;w):f�d}���^eG`M�#"�0��QE: He�=B �*l4�R�qp� c�n:��0�^��uQJr�,�� ��)�=77��.&�0W�KXuPM�6�O�D�(�[�,��5 �'�>,�b+/��n-A1E[y�u< 8�D^WnqmdPTs(�C�>V�`����3��FH�Sg@:f�`B�0g�x_S�<�87�yI�v�N�( :��A5-_W0g2�0'�S�+�8ov�� ��`i� 4k5ER, N+w��.�,�H� m%p�Su��E "/�h8F5���szHP!"�q�_z��x��zM�y�q���q�6�V4�z�l��x)�T@VT(G�}Y:����VK%IB�|\�w'pMk-B>CUh8I#Oe;�Y.���_W��g�9�N�}�pU����U��m`E��L�� ���@�F[�KS��x��x�}T�MU�0V7F~pS�y�zi�H���6�}_��!v��r�q����RD,���Y���b�i� �2�3�AJ�~{%�h�Q>ri��\KY��:�#�f��4���p@�!��l��Eb�#�!�b�O�t�jr��w�� ��:���l��?r�����x�Z�NN�:�[,i|^:nRA3�cM ��t���F���~��5�����z��6� \Y��ih���#���d������-�q���8F�#|CJnQkD(B.`V<� =cN�@����n����J��-F�C�i?-�P2��>�e���X���}*��T�� ,FtpCmp< |93W ;/&,ST�D��Gl�A�����Y~q5A��[8kq�@}dkv4��?*�����&�&�~$:9*wA=|_<EK%])W6uJ�"��������aj6�E�Y�p  �QZkH��|,t,;;=��k�8Tw����r�O�_�;�,�V 572'Y>2=�k_2F6[mg~ H�������o>Z#��{j8tP93�4�"UZR.Ye>���j������)�U�_��n�� ���0�J��^0].$QSv9Hg>~E�k��[���������DYu,R7UeF+&�6'������b����,���9��(���[�q��+�C*Y"; hNFCBv?��=�(���K��H�#�F�3�V�|����jC]4n*P!����{"&AP? �������g�a��\p@-NG$bmE7/t1pI{���z�$���o���������� *" 1-KQSU0VPU`gyv0�������������h�F�V�P�0�9�j8+$UME %e{5UwMvXME� �L�=�,�.�\��z�|�������������*&D\{*K<AHlC�������s�9��Y���2�$����}T9 2#{%v�"�#��9�,�;�r������������� ����������+��������|������@�?�Y�V�$�e�8��i_axnh/K /g55F?.JVjQ`P�?��L�R�M��I�p�T��[��M�]�2�]�]�4�0�Q�N�i�f�c�4�a�s�H�G�T�r�E�[�Q�E�t�T�W�j��o�y��k��L��d��g�Q�?�c�\�z�<�M�^�D�J��&����uX`U_XJ1>hOe~|o ���=�� � ��� ��6�W�G�H�4�C� �I�a�0�@�=�2�O�g�h�O�V�1�`�$�`�U�*�2�L�a�W�H�l�U�u�[�_��"�\�o�F�l�[�]�C�I�L�2�3�*�<�5�k�3�.�6�G�W�!� ��� �=��}fwfXjYTXKm?ea^WVxV�0�L��/�!�"�+�8�g���t���������������������������y��t�u�6�z�(�B�R���y=k8A$'N37"4_(<Slkveh �����4�O�<�%�1�>��J������������������������������������l�Y��n�C�C�:�� ��ixVlI@$K +   7I=5t;p� �?�m��v�R�K��H��_��n�����y������x�����������>��d�~�I�z�]��[�W�n�I�_�Y�B�X��W�5�B�!�����qrrmaF|w[VvoBio`7qcgp ����4��:��H�$�h�h�1�r�_�s�K�S��X�f�t�k�3�N�i�k�b�8�[�A��2�E�e�f�`�A��H�p�U�Z�M�=�V�6�-�=�P�L��<�;�&�� �������~u ��� � ���)��?�,��T��q�=�7�H��_�5�6�E�O�O�I�H��Y�S�p�\�q�K�l�x�r�_�Y�m�Q��R�5�z�Y�F�4�O�5�0�1� ��4�)����qs~l���4������� �� ��@�9���b�P� ��G�=�Z��'�c�k�0�Q�[�s�U�h�\�d�B�|�u�L�t�%��a�k�@�u�f�N�j��v�K�I�7�;��(�K�*�'� ��ks|xcten����� �I��!�,�&�;�4�[�S�8�N�L�p�f�F�_�J�c�a��G�w�;��H�v�f�m�s�Z�f�/�n�w�+�k�$�� �p�d��;�O� �\�����8���zos ��$�#�0� �1��M�4�0�T��>�d�)�w��(��3�^�;�h�5�Z�G�=�n�;�p��R�_�U�?�J��g�f� �7�(�N�=�J��+��"������������ �"�!� ��.���K���V��0�!�I�Z��<�8�D�=�E�$�.�3�H�#�2�3�(�>�:�$�F�!�5�9�"��,�7�<���F� �0��B������� ��)���#� ������� � � ����1�(�� �� �"�>��[�3��I�?��F�H�S�$�!�i�)�8�P�!�E�Q� �2�<�B�2�T�6�)�J��I�*�E�<�0�"�Q��'�,� ����)�$����4�)� �2��'�6�%�?�!�R�5�G�*�^�4�[�E�C�]�Z�O�<�W�c�M�5�Z�^�@�T�L�N�2�T�W��>�,�P��O��6�#�,��)�'�=�&�� �"������J�G��A��/�M��'�c�+�=�D�)�M�K�V�4�@�P�V��L�p� �=�3�:�H��.���:�.�<�(�'�<� � ��*�,� ����������3���'��(��"�+�� �G� �R�)��2�P�*�,�-�6�H�u�/�?��f�6�/�F��T��_�*�#�3�_�@�&�9�R�"�6�$��R��B����"� � ����'�%�#� ��"�m��*�@�)�>�;�[�"�e�(�c�9�]�7�I�y���T�\�)�]�X� �B�Z�=�]�*�%�f� �=�0�#�5�@�-��=�G��2������� �*����2��1�%�+�A��4�.�V�*�(�:�T�&�6�g�Y��Y�2�s�:��?�G�+�&�7�*�^��&�4��$�3��.���)�-�����"������ ���"��(��)���,�)� ��(�1�4�7�*�#�9�S��'�7�g�1�,�5�B�J�h��b�)�K�3��<��S��Y�S�9� �G�D���.� �x��-���(�"�-�*�'��J�0�Q�+��Z�G�/�E�4�L�L�2�c�M�B�N�R�B�H�J�E�N�7�&�f��Y�$�C��7�D�6� �H�R��:�C����%��"�D�u� ���F�3��P�I�<��$�Z�S�&�G�'�>�.�Z���M�L��Q���:��D� �'�D���+����,���&���"� �#�4���� ���� ��+�� �� �+�J�5�'�&�)�*��<�?��K�\��5�R�.��#�_�0�?��F�)�3�G�#�@�+�I�%�#�#�6�4�E� �4�3��8�J�����#��� ��!��"��+��!�E��>�*��c��V� �O�E�2�g�7�7�(�Z�P�g�>�6�U�1�D�E�A��p��[��:�U�"�/� �D�)���-�� �0��!������-�$�I����A��4�3�"��>�+�P��=�N��0�p�D��N�<�H�3�6�J�:�T�� �H���+�8�(� �;�� �5���2���+�@� ��� � �$����������4�*�!�.�)��3�0�-�3��C��N�/�3�+��^�/�:�?��N�:��H�3�3�H�%��U�!�!�:�0�*�@� ��;����3�*��� ������ ��>� �4�0��6�#�P�.��<�8�X�H�:�'�:�I�>�a�H�#�O�M�6�[��O�+�:�k� �-�(�3�?�%�=� �1��0�����%��������1�+� �>��&�H��9��+�2�1�'�9�;�@�D��+�[�%�A�=�@��]�3�?��+�$�'�� ��6�!��#��� ��"�2��(�������9� ��������#���� �� �+� ��7�'� �J��K� ��M�,��X�:�K�A�9�'�9� �<��U�.��R�^�#��<�5�"�7��$�+��?�!�� ������� � �����)�;��9� �1�,�*�3�8�<�-�W��7�=�P�6�L�+�J�*�H�4�M�>�L�#�;�:� �v���@�5���5��?�"� �C� �� ������i� ��$��,��"���/��A�+��=�L��6�6� �\��P� �3�V�E�!��9�4�6�@��3��#� �0� � � �����.��+��H���������������,� ��I��W������� ��/�C�"��+���0�)�2��+�Q��;�8�,�$�1�K�.�@��]��=��1�?��;��5��1��>���$���)�$��������� � �'��3�"�+�G�'�!�-�1�/�%�^�-�!�?�C�5�C�1�?�P�G�3�'�N�;�3��l� �T��%�5�=��)�G�+�"��A������ �����!�����A�(� �3�B�>��'�g���7�]�;��>���not going to mention����(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n������ �(���2� �<� �F� �P� �Z� �d� �n� �x� �� ������������������������������u@��(/����@���  %1/6$( �$ J 156!    98.   �  +! )3  �   ��     ) � � �    �� �  �      ��  � �    �    �    �       �      �   �     � �  � � � �� �  �     � �  �        ��     �      ��   ����  � �    � ��� �  ��     �  � � � � �  �   �� � � � ���� ��   � � � ��       �    ��   �  �  �� �  � �  ��  � ������� � ��� �    � � ���� �    ��� ���  �  � � �    ���  � ���  �������� ��� � ���������������������� ���������������� ��������� �� ��������������� � � ������������������� � ������������ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������names in the risk of����(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n�����!� ���)�2� �<� �F� �P� �Z� �d� �n� �x� �� ������������������������������> ����������@����   *    #0" ""�  (   � + �   %�"�  �/&.  �$�  ����� �       ��     �   �       � �  ��    � � �   ��   � �   �     �   ��      �    � ��� �� ������ �� ��   � �� ������  �  � ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������fogetting somebody :)���(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n�����(� �(���2� �<� �F� �P� �Z� �d� �n� �x� �� �����������������������������z ����������@���� ���� � � �   ��    ����� �������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� ���������������������������������������@���� �������������   � �����  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Take Care,�����������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n������ �(���2� �<� �F� �P� �Z� �d� �n� �x� �� ���������������������������������������@����  �'6+     ��� ��    ���������  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ Mick.����������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� �����������������������������1��.����@���  � � �  + �   � � ! ��   � *  � $  !      '  -    "   3 � %- #+@ $5&" % -,  <:# 4 ,!� #%!' &! "    �& #? -@"    ' # �  "!  ) 61*: #DH D&C + (       ,A! '? 1  FB,' G !L  %-L=*:4J  "/-132 0.@$ ?& +;#$ &�&�@G� ,N2 5&6;=  3+JP!+;"= > k8'.6VD�(#( )  K' ',- .* >% 3�  <&&=^�� ]@:%(= +2D"" 6 50�#3409+7).%#2 9? (/A *+? ! $0)�P #G) (Ձ+ �#2>$#% %6 9!#J-$ A9N 89:�Eu)2=^ ! 4W!(P+4DY 9,\m  Ea;3M"92@ * 8  =! 4".  � * )  5 0  H!)C>C FCKLj3/ & " *1"  8%< **    � & ,- ;! 2 '#!)>�'&> YJ &7 9"6ܻi&<+>2@*)/ QAG !?* 5(� FE%" !�E1  (6 + +)/ " ' ��"?0+�"D '� 29?$ 5   #' �   "  ( 448�-'"/ %+@"5#  $?  5(  $4'3* #- � &+   /%25�,  ' / 7/ & !.)9   '- �"*; ,!$3 '($ �, -  % ' " (9  �"  ! -" 6 ,     ��?  !00 +6(2�     -+   � & # % � � ,#�#' �  +0%'.%7(  $ #! B� )$!- �'%; &#) !*% /*@,#'  #� ,  ��&  * /  "* #1#!%)  ,  =7   � � 9� � !�  �   �    � ��     !    !#�!��   #� $  ��%   �   +�    ��    # " !#    "  � �      ) �    � � �� � & ��      )     �    �   �        ��    ��  �    !��      �"    �� ��  � ��  �     �   ��             �         � �         � �  �  �  �     �    �    � �       ��  �    �      ���    � � �   �� �  �      ��� �   �  � �� � �� �� � ��  ���        �  �  �     �  �     �   �  �  �  �  � � �   � �    ��� � ��   � �� � � �   ���  �� �� � �� �� � �  �  �   � ��� �   ���  ���� �   �� � �� �  �� � ��  ��  ���   � � ����� ���� ����  ����� ����� �� ��������� ����������������������� �� ������������� ������������������ ���� ��������������������������������������������������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �(���2� �<� �F� �P� �Z� �d� �n� �x� �� �������������������������������F����������@��� 3D #  ����   ��������������������������������������������������������������������������������  �    � ����������������������������������������������������    � �   ���� ���������        �     ��  ��  � �  �� �  �  ���  �������������������������������� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n�����)� �1�� �2� �;� �z�2�P� �Z� �d� �n� �x� �� �����������������������������Y{��gG��3��!��� ��������������������������� ��  �  �   ��  � ���  ��        �  �    ��   �  �   #  ��   � �! ��  $ �� ���� � ! ''  �     �&  ��% �  � %  �� � � � ���&" ��    �   "!  � � �& & !�� "��(�� # ��      $   �      ��#" �  ��#( !���  �  ' $%  "  $!#. �* �   # #7(* � ! � #<+   � � :* �   &# � 5!�   �+ +(�')  -)�,"  �  /� !+� �  '! *$ $#    � '  �- %   " $ ' 1!� &!  ! �%"#� �   �# "�%# ��      !  �""   !� �# $!&  �#   $ "# �$" """ &�#" 4 "#�� %�(  '"4#  ##  ##  '/ �""  "! '%�/�  ! &$%�   �    '*"$ �      (#  -&)�! � �     !) ܿ&$"/" �  ! �)  (. #   "  %( �%'& �    +%-  "   '! & +"  �  � ) #�&   &�  +#()   &   (. !##&�  !#�  0� ( )    %    ** ڿ�# &#  �!!�  !/#&  & �  ,&"&   $     � #* !# $ � )$�%   &   � "(  ��&�   *! �     % �  %' � �  #  �, !  � �� &  !  *%    �#" "� !,    &  *! �  �$"   ! $( � ��  � $!)   �  $ "� �%& � �� %!  * �  $ � ! '" � �  #   � (� & '    "" "  & � #   '�   �  �""   %$   � �#  !  ( �   " !$! � ��#�  "  %� � �  " �"� $    �"� !  �$ � ��   � ! #  &�   ! #!#�    � �!   $    � �  %  !    �!  #   $�       #   " �  !�  #"     !    !�   ��!#�  !        �    �  #  �    �#      ��!� !  �   � %�     �" ! ! � �   ��� ! $� �       !  "# ��     $          !  "    �   #         !          " #�� �    "     �       $      � "  ��  �   $ � �    � % �  �   % � �  �      &      �  "$    ��     '�         � #"    �   � ' �        %       '         '�   �   !'    �  *�        $& �  �   �  �  +  �      � (# � �  +       *!�  � � �� !*      +     �    %) ��     �,      �   (& ��   ��   �-�    �� �,#     �!,    �   -      �  &* � �      �/   ���  � ((           �/   �   +%  �     � !. �    ��. �   � �   $.   ��      0 �     ))        0         �+%        !. �      ��-!�       $,    �  0 �  � �   '* �    0 �   � -%�   �� 0     �.  �   ��   #-   /�    �   � )'  ! �   0  �    *$"    � - ��   !�- !       #+  "� !     �!0      &(#!    ��!-�  �     "� +""     � �! -�" # �    ��"�-     #*  ##    " � #- !   �� ! '% # #    " � ".�" # " � #)" �"   ��"   �,� #$     %�$- !   #( " $    %� �#- $ �#  " '% $  # !+"$  � %#�)  "���"  +� ! %   % "+   "!� �!�  � #' % �   $ �� ", %�  # � !� '#$�� #   *&   $  �( � "#  �   �'�  %   # �  �)  $   � �  #$ $ � " �� �(�%       $  $ �� �   �'  % � �      %  #      $ % ��    %�  $ �       $   $$ � �      �� ! �� �   ! $���   ! !  �     � #� �� � �� "         ��� !� �� � � �  �"      ��    �  ��     !        ��  �             �   �       ��   �  ���  ��   �   �     ��    ��   �      ���     ��   �   ��        �           �   �  � �   ���        �  �      �  �����  �  �   �    �� �  ��  � �   �   �    � ��  �   � �    �  � "��    ����  �          #�   ��    "�   ��  �    �"   � �   % ��  �         $ �   "  �  �   $ �   �  $ �  �  #�  !� � �& � � !       !     !    '  "  �   # �  � !   �� % �#  &  !    � # #  �  & "      !  $��  �& � �#   $   � "  �' $ �      %   "  # �%�       % � #      $   % #�   � "    # �$ �#�  �    #   "    ! $   #  "  ��    �#   !  "          "  ��"    �    �  �   � �!�     �       �! �    �  �     �  � �    �       �              � ��      � ��            �   �     �         �  �    �      �   �� � �     � �           �     � �      �   ��   ��  � �� �          ��     � �       ���  � �     ����   �  �     ��    � � � �   �   �  � � � � �  � �  � �      ��  �   � �    � �   ���  �   �  ���    �     �  �  �� ���    ��  � ���  ��  �� �  ���   �  � ��   ��� ��   � ��   � �  �     � �  ��      � ��     ��   ��  �  ���� �  �  �   ���       � �  ��  �� ��      �  �  �   � � ��      � �  �          � � � � � �  �   � �  �    ��     �     � �   �  �   � �  � �     ��  �   � �  �  � �    ��  � �� �    � �  �  �� �      �                �   ��   � �     ��      �    � �    �        �         �          �       �   ��      �   �     �  �       �          �  �                      �  �          �  �          �      �      �    � �       ��      �   � � �                          �   � �   �       ��  �  � �         �  �  �    �    �        ��   �    �           �  �   �  �  �   ��  �  �   �     �      �   �   �  �   �        �         �   �   � � �        �  ��  �   � �    ��������������������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n�������.�/��X�)�v���*�P� �Z� �d� �n� �x� �� �����������������������������p��P8��Q8��!��� ?� ���� ��  � ��   ��    �      �� � �   �� ���$ �"     �� ��    # �      (*$    " � -    � ��,"� )2�  ��    �� (, ,($ �� �"  #5�   ! &�       �  '� %  �  ) � � # �   -�.�  # #  �+� !  �  $   � �� � ,  � �!   �    #$  " " �# ��   �  ��'&  ��   1,  !  �  '   �+($    *  #"   �  "+)� � %,   &'"   (  -*�! � � ,$   .   !    )     ��  +�   #- �  ��$$  & �  ")    "  � $� �' � !$    � &� � $� � % !)�%%� 2�!! �% !�!/$ #�" ��        ""��#  �)   � $ ��� �"" $  ��(*#� %   !�� %!   ��) ��#  ! # � � ! ""  �  !$  '  # �"'# �   � !)      � + ' #  & # % � $� "�!  ��� ( $   � - "  ��� �&%�  $ �     !(   &    �%   +  ! �  %%   &   �� . ( !    )   %(     �  '"   -�    !) .    (  �+' �  �$ !-� %    $   0� !  �� � !  ,,  � ! ,  ��         ,$ ! �     !,  �"�!    . � � "    -&   �! #    (, #&�  �  � .  � �&!�    � &)   � ' �# �  /   � '& &�   �.$� ) (��     �&,  & +�     *   � # + �  *$    &#"�    (    ��&! ,  �   *    $' /   �    '&% " &    ��( + �   �  $$   ��� $%+  #  ��%  %)'�  "  & � # 4�   $�"   �  $ 4     #   ��#'* "  ! & 1  &  "� ��##1� &   �  �(,)�� � $!  �� %!2  ( � !  �� 0  ��*   ��� �%+� �%  !  � 1�  �% �   ��  .# $ �  ���&, � $ �   � 0�& � ��  � -$ (      � �')  "#    �+  '     ' '�   � %  $   �� #  $         $   ��             !�    � �  !�                  !�     � �    �  %        $   � �  �   � �      '       �%   �      & ���        )          %    �     * �  �    " + �    ��   !�&!�  �   �    $  '  �        �& *      �    $! ��  � �   � #&) �       � ')        *      �  #&� &  �     � *%     +!        $)� % �      �  �� *"      )"  �  !  !' �!  �      *    ("  �  �  % ��    �   )    � � &  &  � %  �$  � � (  "    &  �'   � � ( ��  �$ #%  �   �   + � � *  �  �    $&    �     � *   �   �  ��*�� �   $&       ��  *   ��     )      � %& �       �  )��  �   *    $# ��     ��  '     � &     ���!"      � %       ��� &     �      �� !�      ��  #  �    ��        ����     �   �      �   !   �     �     �    �       �      ��  �  ��  �!  �      �  ��  �  !   ��  �    ��     �� �   �   ���    �    �  �     �  �  �  �  �    � �  ��  �� �  �  �  ��      � �   �  � ��  � ��   �    �    � � �  �   � ��     �  �       �      � � ���  � ��    ��� �  �      ��  � �� �   � � � ���  �   �    � ��     �   �     � �   �      ��   �    �� �� �  �  � �    �  ��  ���    ��   ��       �   ��   � � � � �  ���          �  � ��   � ��  �� �       �� �         �  �   � !  ��         �     � ��  �      �  � � �         ��      �  ��   �     �     �  !  �!  ��      �  �  ! �  �!      "!        #� "�    !�    �#  " �        !!���� $ �   "   %  "!  �  #   �   !#���  '    "��   % � "  ��  !%  �   !"    (   �  !��  '  �  �� % �     !�  (       ���  $  �  ��  %    �  ���   ( �      � � �� $ � �  � �   $ �     � � %         !  � � � �  � " �   �  " � � �        � �   �      � �    �       �  �   �     �  �  �  ��  ���    � ��� ��    �  �  ��    � �        �       �� �    � ���� ��  �  �  �   �  �    �    �      �         �  ��    �   �     � � �   ���  �     �        �   ��  �   ��       �  � ��� �� �    �� ��      � ��� �  �  ��      �  �  � � ���  ����  �   �        �   �  ���  �  �  ��     ��    �    ��           ��   ��    �  �  �   �  ��      � ��          � �   ��         �� �    �       �  �    �        �   �� �� �  �  �         � � �� ��  �     �  �    � �  � �  � �  � �  ����    �  ��   ��   � �� �      ��     � ��    �� ��    �  �   � ��  �   �� �    �   �    � �    ��� � �  �� �   ��� �     �� �        �� � ��  �� �      �� ��  �   ���    ��     � ��� ���   �    �      �� ���  �   �� ���   ��all samples by me ..����(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� ��� �*�2� �<� �F� �P� �Z� �d� �n� �x� �� �����������������������������zE��O ��+%�����  �����  � �     �� ���  � ��     ����   ��� �� %!� �  ����  � ��   �� �� ��   � $� #  �   �  � �� !'  ��  �   �!   � ����  . )�   �   � ($!      #     � � "�� ! �   �� !��  &�  �% � �  &   �'� ���  ��        ��     �     �  �� �  �  � �  "    ��"     ��  � "   �  � � &  ��(  � ! �    #   �   �   " �     &&    �          �          �  �      � "   �!     �  "  %�       $  )    �   � �$�'        # � #' "  �  % �# ,# �  $  � '�#   � �$  �  !    �"    �  � �#   � �    #�    ��     �     � �      �  �  �  �     ��     #   �� ��� &  �   '  � " �## �     � � %   ��(� � �    "! � *     &� � '    � *    � !  �     ,#    �$   %*   ��    " �   �0  ��   &  !  /    �   �%�    )&     " #  "'    !�  # �$     � $� $       �  ! "  �      (   �� �    '�    !   �     �   �    "         #% �� "�    �� ) �� "  �  ,  ��  ��+� �$  �    �* � $     �� & ��#� �     � ��   �� � �$    �   �  '  �  �    '�    �   �  $ �          �! "    �     �  �  �  � � � "      �  �    �"    �� # ����    �"�� �  �#�       � "�  ��  !    ���� � � � ��  �� � �� �  ��      �        � ���   ��     � !�  �    �   ��         ��     �   ��        ��  �   �"��     �   '��    �   � �'����  " �  �    �"!�# �    ' ��$ � � � *  "  �  �  � (� ! �  "�� ���  %�   � "�       �  �� � "     �!  "�    �# � �    #!     � � " %    ��   $ �  ��       " � �   # �   %     "  �    &        '      &     �    %� !�  ��   ##   �$"  �  "��   !%      � %   �� �  � � %   ��  %� �� ��    %�   �� �  "� ���� �      ����� ��  �   ����     ��    �      ��� ���     � �    ���   �   ��    �   �     �  � �����  �  � �     �� �     � ������  �    ������   �   �����! ��   � �  ����!���  ���% � � ��� ' �  � ��  ( ��       �  �% ��    !��        � � �  �   ���    �� �  � � �  �  ��     �   �  �    �  ��  #   �  ��   ��  $    �   �� #   � �"   ��    ����!   �   �%   �  �&��     ��  "��!    ��  �#   �  �   "   ����    � "  ��    �   ! ��    ��   ��    ���  � ��      � �  ���  �  �   �   �  �  &    � � ' �  ��  � ''    ���    $*    ��    �� ,   �����  ��+  ������ &   ��� � "   ���   � � ������ �  � �  ����!   �   �  ��#�  �  ��% ���       ��� # ��  �����  �      ���������     ��� ����   � � � ����  �   ��� ���� �  ���  � �   ���  �    �   ��     $   � ��   �� ( ��  �� ��)!�  �  � � �����(&  �    ���&)�  �   �  +   �  �    +  ��  '  �� �  �� �  �����  ���   ��   �        ��         �� �        � �       �  �  �  !    �   #�   ��    #  ��������������������������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �(����6�<���?�P� �Z� �d� �n� �x� �� ������������������������������������������� �    �  � �     � �   ����    !� � +  ���� '- �����   &      ��    (! ����   � �� � ���� & ����   �   �� #�  �  ��     ������ (�� � � � *�  � ����� ���������  ���    ����  � �  $ ����������  &������ *%� ����� � !� ��    ���)      ��  ��    ������� �  %  #��&  ���    ��    � � !%��  ' � �  ����       � ��     ��  ����   ����&   �  ��� ���  ��  #  ����  �� � &" 0$  "  � # % �(   �# �  )��#  �#  #�   � $�      ��� $  � �   �!" ' &  � �"3$ ��    -% & ��   �� �)0" �� �����  #. �     ��  2  ��    3 � ' %  ,  ��  '��  # � ��� �� ' '���  #  � ,  �����% �  *�  ����  � ,* � �� �� %.�   ���  � ## $   � � " "!  � !�! ! � + ��   $ ��%  � %  ���4( ��� �   �� ���� .+ ���   �  00 ���      � �(. ���      �  ���   �   ��� �   ��  ���    �   ��� ����  �   ���� ����   � �  ��   �    �� ����  �� ! � �  ��� �     ���   � �  �  �� � %� %�    ��')#�   �  ���%!2 ��"  �!  �� � �6 &   ( ��   # � � �!( �� �    ",  !��   .   �� �!  �+!    �  (&          ##� ��  �  �� !  � �  �     $����  "   � ��    �  �� ��     �� � �     � �  �       � �  �� � �       ' �    �$ & $ �  �  ( � % # �� #$    �" �* ���� � 3! ����# �( � � �  �  '��  !'����   &  �� !���� ����  �  ��  � ��� $& � �   �+��   ��� * � � +" �   �   ��  �     �  % � "  ���  ��� �� �"    ����   �$�    ��   ��    # � �     ��   �   �  �   �� �  %  ��� &      �    ��$�!�      �  � �   � ���  %     �  � �   �  ��� �#     � %�    (� � !�  � )# � ! � �   �$  �  � �  ��  �   ��!) �� ��   %� ��%�     �� $ ��$ ����   ��! �  "�    ���     � �    ���           ��   #     �    �    � � � '���   �     %*    �   �"$ �    $  � $##� �&   �� ! ��    �   %$ ��  � " "�  � �  ! %# � ��      ( * � �   # $ �  ���� !)� � �  #! �!    �  �"2       ��   �� "    � �     � � % �� # ���" �'   ,�  � �  � �   ! � � � $(���� +  �*   &    �    %      �   !%  � � � +� �  $    � -$ �� 1� �   ( +& �� �    � � $-��"  �(��(  �%& $  $  *  ("  !#  # #'�    �  ( # ! �� � ! ��  �     !   �  "� � �  �%� -����  �      �* ��  �   % � � � � "" ���  �  �   �   ����    # � � �"!  ��� �" � ��   % "  !" � )   +   ! !�   ( � � $����  �  �� ���#� � �   ��� �       �� � ��� #   � ##  ���! ����  �   �+ ��  ���   �   � �  # �  ���   ���%��  �   �'   ��� �#���  �   *���  $# �     "��&    !�     ���$  &   .  �" �   �(  �!         �& �   #   �  � �    �     � �      ! ��  ���   � �   ��   ��$    ! ��   �    �  �"  ��   ��� !��  � �  �    !�  ��� ��  ��    ��   # ��� "��  � �������� �  �  ���  %   ���   �! ��  �� � !   ���   �     � �$  #  ������ $#      � *     �� �� � �)    ���     !(   �  � � ' � ���%���   ����"'  �� #�  �  �� % �#�  �  �$$ � �%$���� � �  & � �   �� .     " � +    �    # '         ���&�������    �   ��"(��  '$     & !  ��  ��� #'  �   � �%   ���  '" ��      / � � �  � # �  �    � �  � ��      ���������   �  �   � �  "��   ��"     �    �    �  � ��� �  �   �   �  �����  � �      �    ���   " � ��� ��   ���  � �    %       �    �    � &������ �    �1+ ���     �  ,(��    � �    ��  !��  ��  �� � (  �+  ���� � $)�$�"� �$! �#  �    �+ ���        !  ����   �%# 0 ���  ���� (    �  �0 ! "� ��$'  � ��%, � ������  �(!   ������     ! " !�� ��  �          �  � ! �   �� !  �  � ���� -&    �    �� !� (��  �    �  ��    ��� ���    � � ���&      �     ��   �   ��� � ��    ������)     �����  � �  ���  �    ���     �����    ��  ����� &  � !  ���� � �� "    ������ � �� ��� ������ ��� # �����    ���   � �  � ������ ������� $�� ����� ����� ���  ��    ��  �  !����� �� �� ����� ') ��   ����� (  ����  �  �"   ����� ������ �  �� ���!  �� � � " ����   �   �� ���  ���� �� �������!���-  �  ���2 ������ ���  � �����     # ������"�  �   ����� "� ��  ���  � " ��    ����  ��� # �� � !� ��� ����� �����/ ����  �- ��& � ����   �  ���������� �  � !  �� ��� ��  ��!  � �   $   �  �  ��� )�   ���������  �   " �  ����   ! ��,   ����� . ����  �������    �-( �� ����"� �  ���� �   �����    �  �   ) ���� �     �� �    ���� ����!�  ������� / ��   '� �������      ����   �� � !& ����" �����    �   ���  ���� � � �  (����� �  � ����  " ���   �����  ������� 0����  ����  &��! �� ����  �  % ��  ���   ��������   �����         �����   �� �� �������� ������ ��   � �� ����� ) ��    �������  ����   � �# ����������   ��    ������� ����    ��! �  #������ �� �  ���  � ����  ������  ��� � �� & ���� �����     � $�������    �  ������ �����   ����      ����"��  ����  ��� ���������  ����� � �� ����� ������� " ��� �  ������� ���  �   � #  ���������   �  ��������� ���     ����� �  �� ��� �  �  �������  �����  ������� ���� # ���    �������  ����� ��  � ��  ����������� ��� �����  ���� � ��� �������! ������ �������� ����� ������� ������ ��������������    (  ������ � �  �������  ���� ���  ���    ����!   �� ��� �  � ����� �� ��� ��������  " ��������  � ������� ����  ����  �  � #��������  �����    ����� ������   �������  � !������� � ��  ���� �������������� ������ � ��������� $ ���   ��� �   ���$ ��������   � ��� ��������� �� �����    ����� �� ��� �% ��    ���� ����������  ���� �� ��� � ���� ��������� ������������� ����  �������   �&  ����������� �� �� ����� �� ��� ��  ��������   ��  "�����  � �  ��� ���� ������  �������  ��� �� ��� � $��� ��������  ��  ���������� �� ��� ���������� ��� �������� ���� �� ����������#��� �� ������ ���  ��� � � �  ����� ������ ����� �  ���������$������   �����   � "� �������  �� ��� ��������� �� �������   ��������  � ����� ��� � � �� �� ������������� � ����  ����  ��� ������ � ����� � ��� � ����  ������  � ����   ����� �� ���   ��� � ���! ������  ��  �  ��� ���  ������  ������  � �  �������   % �� �� ������� ��   � �  ��������� �  ������ � ������ ����� # �� �� � �� ����� �    ����� ����!��  ��  ������  �# ��  �����      ����� �  ��� ������ � ��������  ������# ��� ����  � ��   � " ��    #��  ���� ��� ������� �����  � �    �������   � �����   �����    ���� �� ���  �������� � �� ���  �  ��� ��  ���� ���  �    ���������   ���������������� ��������   ��������� � ��  � � ������   ���  ���� � ������  �����& � ������&�� � �������� �# ���  �������   ���������� �  ��� �� �����  � � ����� �� �  ����� ��� ��!  ���  ���$ �� ��� ! ����  ��� $   # ���� � ' �������  ������ ������������� �������� �������  ����� ������� �� �������#����  ��'   ������! � �� ������ ! �������$��� ���&���� �&�������� �� &��� �������������  ����������  ������ ���������������������� ����������� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������(�����������������������������������������������������������������������������������������������������0��@��,����� ��<���F���P���Z���d���n����� � �,���2� �9��F� �P� �Z� �d� �n� �x� �� �����������������������������L��,����"��� ���������������������������������������������������������������� ��� ����������  ������ ���� "������� �  �*��-��#��������   �+   ���  �� "��� � �7�$�$  ! )&�� ���     ��" � $%  �'! �-� ��   "   #��� �� ��( 1*յ  "# ��$     ��.�  �  #$#��   ���� $ �  '��     �  -�"!1�$  �� $!! ) (   �#$  "�" �%  �#%  � &&!     �   ��    %        � � & !  +&���$!  �� �/  ''� �$  $#  / /  ��� &+�    " $ !    &   & 2 % , �/�!. ,%!�$     "  &    � �  �    �� ; .-�  ""-+ 2" , � ")%  -  �1 � �� � �    # +  �-  #+  %2 (  && %� �� (( -)   '   .� $ !   #  + &, � " $/      $��$�# "'@   ��(!# ) �   ��  #    $ "&,�� ��  "%�" ++# "    �#, �&'/("� �!!%      &� � $�) %� � "#  % !) %&"��!    �% 3  !�" �  % + /� (  �)!.� !! '�  ( 2��"! "#��  !" &, 2� ! +)1!� � ݼ 0�  -    ) #+�$( 7  ' &  %  * $+&�'$�-�  )/   &�* �"  ! - �  �  ( 0,  !� �     ' $��'"*  & �  � &!� "+ $  /' � #-   �     "  $ " �&&% )    � � %��   �! &   5 �!   �     0'!$  4�  � � �    . � �  ".  "�- )     !  * !�5& .  9  ' (�� �� � 1     "& � &  ,#(Ӯ�   % 4�& %-'6  �#,#   %$ .  � ! �*% � *  �%$ .    �$  ! & 1#!1 ++. 0 !    ( *%�  ) !� "�� $ ;   �# ('(     & #  '!"�( ))6 ��. '   2'  � )   )� ;0   �))   �  %  �"� !#�   + %  , !<  (     �)  %1 �� )+  )&��   �  1  (- �  �* %   "!%   �" �  +) !"2   �"%� &/   (  &%,#    !�"1$( �   1"    -�  !5 �%  (' #�" +� ))  (�    �#1   "  �    /.' 2  1  $ %)(+$ #%�1-��2   �4  &  (&   *     ($50   1  ,�  $'* ))      �5 $�/ � -#  6 (�* ��   �1,*1�!!  '!!   � ��+    . <� � (, !  !  "    9'& �+ ' "( �  �  "" % &!     ! �#�  (+0    $ %��    �/� %& .ο    *�!%�'   � � �&�  "#!! � %$ ,���  �!! ' ! '&&    *%� ( "    �� �'   (  !  " � ) 1 �  �  %�%<%   !�� #   ��%(      ����  �1%�1    *   ! :"   �! ��  � �� # -� �'�  (   ,#, !2$$*   +   �(� �   ��"��%  ' �  B �� (#(  � !1) &   &    #�'     �  �G 2 # �� $ .  5 �& "    "   �  �   '#%    +2 � *4#   ��� 3 *-  $     � # � !/ % � � �  �  *  ��(,5�""�  # !/ �+ �.& "  $   (� 6 '  �  �  � %�*4 �&   ( ! !  '" & 2 $� �  � ��*  � � )�    �  ��     �* � �( &,�   % ( +$4�"��   )   � % �     " � " .  +   �1' � �   ' �&$, ��  � ( " �    � �       %   '  + �  ��+    �� .!   # �   � �  !�  �  �      �� '�� � �  #  �)4  ) %   �   $  # �   *   �) �  �  � $ ��   >�   �6 �  -    / ,   &� �    -   !� �  �    �2 0� 0  % �,�!%� 9   +� �   !� ��  �& �$+ # /  ��+  %!��- %  ��,'� '�+�         ���-� ���� (  �+ + �   &5  % �� �  �� * � ��  � # )    �  � ()  +&    �#7 # ! %�  �  "(�#    !��$ � "   '�"� 1�    !���.#  & &� �  � -�     #�  ��(&����   � &  3 "�  � �/�#$  �   �-&�   ��!  �(  '  $  ��  �   ��' �2 &   !�. � � ( ��  � � �)  � "� �'  '         !� ' !� � ! � $#�!   �     + % �   �! ��  #    �   � �   � �      �    .�$  �     . ��   ��   ��  �  � � �        �   ,!��$�&    )�    �  �      &� �   �( �� !�+� � �  &  � � ��  � $ �$ #�  �   � ��   ��  �� "��� ")   %  #     ��! � !�����������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/��������������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0020375�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.dir_icon.png�������������������������������������������0000664�0000000�0000000�00000003043�14115753270�0022747�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATXý[h\s.{hZڕdR-;nN[ih1@/~( ؁47ִPoDPUm Ȳǖ"ّˮ]a/Vr `̙7 x\1ѣG{SԼQ*8|<c`�`P \\|{)WhȤ|!<P� \VUv%T@|YLER/RDU,)KxdR* 6έA " A�Jf-+PJ*Z_@)؅~LL_v#M: Y,}[JYS!@2#~υwhCYLjo^T|mIdm`z6x \3d3Xv7ffSxe<7 =Vѻ[W<Z'4vs+BFs8<S9%҉;7{y`ă,!"hXilZ ]}hz�!4 nF7C3 M$wqaQ3y4QZz�s)Ƶ޻DnN<RhA-膉}}tr+cvtdY`@4X䙼2) kM6ܝOqwat{s읻oyDq=\GG^GZ$6i@dY.-ίΣ@:� x&//}-bzu koxA~|O\e }/}Ņ۹X`.߫FV $KlkoF)e� k UаCC0A $yO֥ ˾*.Qzo㙝Ws!xfG'ۢ\]dr:G<\ҽ pyK|8a.v?Zg.//ެclvtW\*^:z#<ӊ\c)Yqq=T @!Hg]u�Xt4d&�k5�.x3Jhu^X>o �]+h( l 7[ iښ^Ӭu=Y::XA~q;]RJa| ;x_LO/0<$~`_ך !}`Rci"dddd<Ḫ �0o9goEʽ2Wډ'&Ο?2hd'�MV رcN&pԦh0c>lZw^+uݲ0222q �Z&AksJuuq8yę3gj &@ ׋idYΞ=;qܹk� è{=@L&9~~,զ �%9�+ڔ[/8�CL)����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.directory����������������������������������������������0000664�0000000�0000000�00000000041�14115753270�0022375�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Icon=./.icon.png �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.icon.png�����������������������������������������������0000664�0000000�0000000�00000007102�14115753270�0022111�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATxy]]?go3Nb'q8[uIhRJ!P*HZBHM  5[))IP 4MHKpĞ:Ncdzow913n\#w{~;{lCFȯjeϥ ^ɧ+)*WE &NnXpng`,M6|W޾l4OrB)=7r&vQ AhϻcYi2ŲxO?$"lۨ]j/ScȈ 4WBcJ ~遹̅ �94(?ۍ B^1_Z�L 9SG!8%Bؙ[#z2YJ ~uq<J sJ%W �TB;1b+RM|œu jeWz? (|)c^aW_D*cu`D)ua!ί N|RRHW@ kRHW+%KJW3V*5Q dI+ܹq)0d{s= !rsd4K1!om l%KWPnFp~ M�i=tT=o=X: Mibqa:t#UIuA>8': V܄}{R RK"a`/cpIGȮ{Hf/�swr/l#'<Ba#T-ⓨo;'h꼉7_&Fh'qs `Bb~{ _'x_|@Œ49P;|ݷg~+ɺ8ZI9VZjN i�(|g~KSt.Y}ys%J $[S!Q&]bn4RZwNl>WxyzVe kVp'?Ǯ�eC1 >'j.�sMJJG*WJAUl01G1>ui L0_֣Tb5T0@a{W߁>뒷9<\-).�û9J́ܿ ]}<w>^sO<"oeMZ:]Y05,ӎBZ!g pZȎݯљʑ4P5 $떴gXxm|StO/e:QCX#<t6/`ņ[Q@+4JMԤ 2ē1b(:,r"'OL8 X:!E {n>qaJ Բۿy K':oswXRC|lCglK?xfQVdĢ(NERPKsK~~G~2bzzAHh+ĐH)b.֫xpYb^ko'h%Bv˽<[4Fuqi_$bX-PNT<E,"~h+ł{CqK%J)lլkk}20bHPRS{w`捣}L Y'C'X!q(7uKl-Ȱմ>o�$uMLDulĆejd*G)ʌ eԀAjt*(KƇ;yRZ$~Te;ya4|t ]Y,{q*5L -<N OoBK "'He2&RV0H<A^xuDp`'z^PeJZ~ �crxec3@<Ge"Bjō%«GI{ѩ:~OZh] s&h$13u8: 5贃4cR*R}*Ajl %N-HH!\~/uQ">ei@0H$[pH@'wXI0Aމ0dD d۸_+>%Dm2!K8Ta'9N," 5Tʶ v�Zz3ʘatinI)A/! :o8Rk*;,\MF橀{fm-bj+! k!HUrX:Za(<[*)!N}Bx4) HMбt!R2ghiВhlki,()ȧ4%F}Ɇ  p@ HQY!,@%(1>+V( _hq(S,2iqC[89�p{Xa !SS'Ez']j:}Xx-R]XᣡeP.e|@1?Nt,BX1hh!?1DȘ_<<ף~UY.7S-=([ mkx8՜xw;3YT}+q%))}rV8=wr}_$0KװWT/QqO~2IjD), QrN dCˡw3{�Fz4Y:RZ[O}+zm䒍ܸ|ŀ~ YQ'Ç{%dxs6b%NDQ*OҳwX|ab~b9O6jM}}eף&ZV, Z%e٬%zXK~ nDtw 5dO!Z,\v=)7B("d!=_,lm4r1Zy9 LDkSS! EH\پqThG!5'#Jb&JI Ii'TԜ6J6@=S1pW|aC:EyXcusݼv6F :؏(ۉ_̝5&]Gck'F"DAa*2!T2֖x(-r*H1H%]5]2NWwlc%ANXGݿװx. ˰X7ImWӶh=CiuN@D")X3I-G! Gdq"Za["!XDH \1n$ڬ-\̮:z 'K[di]_$h-цVr:[Yqhwn~cowca eL Ld gxB? ֠$&ox$<#APx=DsOା 7IS$J# ]oݽ]154ѹi3<^??8B L �/_Wx+Wcch)ʱ3r-+ţ kpˡ2r՝ PFJ!5[iȎM "HJ-ONW&drGg ?9h~Ihs RΏM#�6++ܟBA�SHہe<>?0Lm~&p( iWY;-?\ �\W sy����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.lang/��������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021374�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.lang/ru.po���������������������������������������������0000664�0000000�0000000�00000002557�14115753270�0022373�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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 <EMAIL@ADDRESS>, YEAR. # # Translators: # Дмитрий Ошкало <dmitry.oshkalo@gmail.com>, 2019 # Kашицин Роман <calorus@gmail.com>, 2019 # Олег o1hk <o1h2k3@yandex.ru>, 2019 # AlexL <loginov.alex.valer@gmail.com>, 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 <loginov.alex.valer@gmail.com>, 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/TunnelSDL/.project:24 msgid "TunnelSDL" msgstr "TunnelSDL" #: app/examples/OpenGL/TunnelSDL/.project:25 msgid "Moving inside a tunnel with OpenGL." msgstr "Перемещение внутри туннеля через OpenGL." #: app/examples/OpenGL/TunnelSDL/.src/MMain.module:30 msgid "FPS" msgstr "кадр/с" �������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.project������������������������������������������������0000664�0000000�0000000�00000000711�14115753270�0022043�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 # Compiled with Gambas 3.6.90 Title=TunnelSDL Startup=MMain Icon=tunnelsdl.png Version=1.0.0 Component=gb.image Component=gb.sdl2 Component=gb.opengl Description="Moving inside a tunnel with OpenGL." TabSize=2 Language=fr Maintainer=lordh Vendor=Example Address=lordh@lordh-desktop License=General Public Licence Packager=1 Systems=autotools Menus=autotools:"none" Groups=autotools:"none" Tags=OpenGL GambasVersion=3.7 Translate=1 �������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.src/���������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021242�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.src/CTunnel.class��������������������������������������0000664�0000000�0000000�00000010621�14115753270�0023641�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Static Const TUNNEL_AFFICHAGE_WIREFRAME As Integer = 0 Static Const TUNNEL_VITESSE As Float = 0.2 Static Const TUNNEL_TEXTURE_VITESSE As Float = 0.0035 Static Const TUNNEL_CERCLE_POINTS_NOMBRE As Integer = 32 Static Const TUNNEL_CERCLE_NOMBRE As Integer = 24 Static Const TUNNEL_CERCLE_DISTANCE As Float = -1.3 Static Const TUNNEL_DEPLACEMENT_RATIO As Float = 0.2 Static Const TUNNEL_PROFONDEUR_VITESSE As Float = 20.0 Static Const TUNNEL_DEPLACEMENT_X_VITESSE_1 As Float = 1.0 Static Const TUNNEL_DEPLACEMENT_X_VITESSE_2 As Float = 0.69 Static Const TUNNEL_DEPLACEMENT_Y_VITESSE_1 As Float = 0.81 Static Const TUNNEL_DEPLACEMENT_Y_VITESSE_2 As Float = 1.3 Static Const TUNNEL_TEXTURE_WRAPPING As Float = 1 Static Const FRUSTRUM_RATIO As Float = 0.5 Static Const BROUILLARD_COMPOSANTE_R As Float = 0.7 Static Const BROUILLARD_COMPOSANTE_G As Float = 0.7 Static Const BROUILLARD_COMPOSANTE_B As Float = 0.8 Static Const BROUILLARD_DENSITE As Float = 0.13 Static Private textureOpenGL As Integer[] Static Private timerTextureDeplacement As Float Static Public Sub tunnelBrouillardActiver() Dim fogColor As Float[] = [BROUILLARD_COMPOSANTE_R, BROUILLARD_COMPOSANTE_G, BROUILLARD_COMPOSANTE_B, 1.0] gl.Fogfv(gl.FOG_COLOR, fogColor) gl.Fogi(gl.FOG_MODE, gl.EXP2) gl.Fogf(gl.FOG_DENSITY, BROUILLARD_DENSITE) gl.Fogf(gl.FOG_START, 0.0) gl.Fogf(gl.FOG_END, 1.0) gl.Enable(gl.FOG) End Static Public Sub tunnelInitialiser(texture As Image) textureOpenGL = gl.GenTextures(1) gl.BindTexture(gl.TEXTURE_2D, textureOpenGL[0]) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR) gl.TexImage2D(texture) End Static Public Sub tunnelAfficher(iTime As Integer) Dim x1, x2, y1, y2, x3, y3, x4, y4 As Float Dim v1, v2, u1, u2 As Float Dim c As Integer Dim p As Float Dim tunnelDeplacement As Float Dim incCercle As Float Dim depX As Float = 0.0 Dim depY As Float = 0.0 Dim timerTunnelDeplacement As Float = iTime * TUNNEL_VITESSE timerTextureDeplacement += TUNNEL_TEXTURE_VITESSE gl.ClearDepth(1.0) gl.ClearColor(BROUILLARD_COMPOSANTE_R, BROUILLARD_COMPOSANTE_G, BROUILLARD_COMPOSANTE_B, 1.0) gl.Clear(gl.DEPTH_BUFFER_BIT Or gl.COLOR_BUFFER_BIT) gl.Enable(gl.DEPTH_TEST) gl.DepthFunc(gl.LESS) tunnelBrouillardActiver() gl.BindTexture(gl.TEXTURE_2D, textureOpenGL[0]) gl.Enable(gl.TEXTURE_2D) If TUNNEL_AFFICHAGE_WIREFRAME = 1 Then gl.PolygonMode(gl.FRONT_AND_BACK, gl.LINE) gl.MatrixMode(gl.PROJECTION) gl.LoadIdentity() gl.Frustum(- FRUSTRUM_RATIO, FRUSTRUM_RATIO, - FRUSTRUM_RATIO, FRUSTRUM_RATIO, 1.0, 600) gl.MatrixMode(gl.MODELVIEW) gl.LoadIdentity incCercle = 360.0 / TUNNEL_CERCLE_POINTS_NOMBRE For c = 0 To TUNNEL_CERCLE_NOMBRE - 1 gl.Translatef(depX, depy, TUNNEL_CERCLE_DISTANCE) depX = Sin(Rad(timerTunnelDeplacement * TUNNEL_DEPLACEMENT_X_VITESSE_1)) * TUNNEL_DEPLACEMENT_RATIO depY = Cos(Rad(timerTunnelDeplacement * TUNNEL_DEPLACEMENT_Y_VITESSE_1)) * TUNNEL_DEPLACEMENT_RATIO depX -= Cos(Rad(timerTunnelDeplacement * TUNNEL_DEPLACEMENT_X_VITESSE_2)) * TUNNEL_DEPLACEMENT_RATIO depY -= Sin(Rad(timerTunnelDeplacement * TUNNEL_DEPLACEMENT_X_VITESSE_2)) * TUNNEL_DEPLACEMENT_RATIO gl.Begin(gl.QUADS) For p = 0 To 360 Step incCercle x1 = Sin(Rad(p)) y1 = Cos(Rad(p)) x2 = x1 + depX y2 = y1 + depY x3 = Sin(Rad(p + incCercle)) y3 = Cos(Rad(p + incCercle)) x4 = x3 + depX y4 = y3 + depY u1 = (p * TUNNEL_TEXTURE_WRAPPING) / 360 u2 = (p + incCercle) * TUNNEL_TEXTURE_WRAPPING / 360 v1 = (c * TUNNEL_TEXTURE_WRAPPING) / TUNNEL_CERCLE_NOMBRE v2 = (C + 1) * TUNNEL_TEXTURE_WRAPPING / TUNNEL_CERCLE_NOMBRE V1 += timerTextureDeplacement V2 += timerTextureDeplacement u1 += timerTextureDeplacement u2 += timerTextureDeplacement gl.TexCoordf(u1, v1) gl.Vertexf(x1, Y1, 0.0) gl.TexCoordf(u1, v2) gl.Vertexf(x2, y2, TUNNEL_CERCLE_DISTANCE) gl.TexCoordf(u2, v2) gl.Vertexf(x4, y4, TUNNEL_CERCLE_DISTANCE) gl.TexCoordf(u2, v1) gl.Vertexf(x3, Y3, 0.0) Next gl.end() Next End Static Public Sub tunnelDetruire() gl.DeleteTextures(textureOpenGL) End ���������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/.src/MMain.module���������������������������������������0000664�0000000�0000000�00000002166�14115753270�0023457�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file ' Original author : Arnaud Storq ' Gambas Port : Fabien Bodard Private Screen As Window Public Sub Main() Dim Texture As Image Screen = New Window(True) As "Screen" With Screen .Resize(512, 512) .Framerate = 120 .Resizable = True .Show End With Texture = image.Load("texture.png") CTunnel.tunnelInitialiser(Texture) End Public Sub Screen_Draw() CTunnel.tunnelAfficher(GetTickCount()) Print Screen.FrameRate; " " & ("FPS") & "\r"; End Public Sub Screen_Close() CTunnel.tunnelDetruire() End Public Sub Screen_Keypress() If key.Code = key.f1 Then Screen.FullScreen = Not Screen.FullScreen Else If Key.Code = Key.Esc Then Screen.Close Endif End Private Sub GetTickCount() As Integer Return CInt(Timer() * 1000) 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 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/texture.png���������������������������������������������0000664�0000000�0000000�00000347554�14115753270�0022625�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������\rf���IDATxdێ$ɲ}"jY{ua�|  pw^:dfB=rYDUf/ BiᢕMyM P L<0?طE).~m &ZU̘!Bxtnׯwnc5 FxC4Z bxtݱ/䎖zqoQ/_>1pO\.1gЧ3sLcp[܇e8fFC�JGvt#"�pw|sNĜR Bk&Q@R V1TU%"0'"*̀(Ou{n~v TǿP~CQ |wܠ֝}f_H<ƺ^K$Mn;[mTTy[ZQUDJ)6Dw<Oz?9?0`yER Rk"1N'!FmN; WCѦh Am¶TmGR~/a;wlJ6Uns^нEh-= AwZp;n7B*hZЪ4<* oA"b>b#țR|~!\ !t8iwz9&QpAT)(|uȇGd&(k �EB湠< |OcNE֦|ϥ4.t,fD|}Wpqv~gZRPkh@|sE$ @l""DCu=hAA) s@1Q1܃JF,p׷Z#0$�w'sJkTc*-y3%8 3C&!txt\+^c4xL&&|\'*yJW)j޿MBkRLRrP4@~@|QM7B e �tWf<=Ù+FJ-[dl&H٨lFeT-q%i }ܬ XzH)>L Ԍ8Bɽ GRTpDA?]י?K#7Ť!TU$rՀ1FPDu >B_'+p [..MP<7�?N9`s@r3*jABpu*¶UT xޗ.�~Z.<(1F^CRj˟FJ+lUvfu!sbvb~wJ ZM٪ fJ-ֶnO' D N baˀNlUœF a nѬ`y *Zl RAG (y:HBȍ@V+E*lҨZFwBcXϣ!7U KV([ۨe`66* Rx\iNՆFٟj8Yj 3 J*sb"k Ia3/QQ/s/"S9 � t\d+RJP8M5O\)ggf\$M0s(銃 c%Ų:H!#[�)*H)UZ@C1w"V}kl7.*V*.#C8`L(r%Tݹ [a*KpJ-c +#Z:-&D$rauh3S q*yD@rcW D1t fP6JŌi9r ,&A*TòZpjn Aza@);Vl4m!ljn�dc]}0줏\uɰe(P-B8yY.1*I(kX@iEc M4AApN0~9ɯ.<_:|E (WY!PRZVHn(%@rdda(BEq1\6$DGԚ%:YyʶW.FѬXcEENtfӈ0M6^/o#(hec DVs6.0C"\<+DL:0 T'm u`"`;R $,wg [XP@<@1:”"sJ\t=x`^&7 -c1>>'ە1p \Eqf4 ZEnk]MJQX_˃T5\鹞w rP01}<Q4 *zGD *Z}.m%{e7Z b3 ."0 sS N<U<5!�ucxDJk9XɍC@Qm| C((M3^ZU!*czV3:8%>*J~e՚fU,Kys^OG' 3M%"ܝjia 7jVV5r#ђm9""P5 ''' t*r~�BՂhׂVjc {:l g̬~<1#{b9I`l cm<5ZKC#aKS&Pj$.%D4 Bm[Snɜsϝ$()l7a%+kcb#[\+Eg%U1dOPJʾ :bD>*EH$_(73NHP"aV) T;qK0740<9pAqpj hVDm 2 emk.3ؒht>V�)ԂE vAʮY9^zCwaVfLZ ml[YѪ.l H ,Ղ>:xl:xP%+"% OħhpCb&,19q4Tʳd$*T`. 4ۿ>J~VܐhLbjlm_Hj9m GDWY1s"vBIQZg 4CZRQZ4nz[E=L:Q'RAQ 9}mbQU՟TI:tnƵlT+8&IZd#QOxeA{bq3s;t>/)s9 JJP%u\<G7ɒTwp�L\&^"OB+ D(HtQD-BQԝe "Z'NtvjL3˕ sz>.j�X==}kqD$@gFغgȄQ&2  xBLRlwlЉ2X%[@JN@d$&%%ؒ;D*Bnmy-kxb""͉ZPJ]B3L*H`cb>:ZT Ua's3J+PR*&hQ* 늬09rCJ-+vI\z3i 9uz H0\;w+gv|Sx)_ݲTzUA*ONw,"rsQƜȅXF11э;$+YP)b8եF`!<O_N/aR Ƀ-TKk$cp:UJY(< @-sө"~dsdG0Oça3s3ж'ӝg" EkBk}߹;Fs\6}8>F̶Jmϯ+y :E w :"L7 NVg6IPP Zuqx{ Bsҧ@d+Ek7H2%8*y h"K'YaxV ;AˎHǠM [,7@mRQ)P\S|їHN?l^r/qyh nTsBa>;NB)\gr<KW+OAe+xJ"{A-s'O czJ0!t,2gw{é2:q$ʞ|&J|\{Ձ%{;2#1"UUFMM1TC<+iO3EMvL=7xFc@*1@Xj.~Ň'[ Yem^b|ғcԍ"P, Ll~uq2W"�CDu;HLI咧 %8Y!=>l^/[)كf4cHj&V$)>p^J*-Kӳ"Ж?O4["k |@u(( ${Ҥ6 ,UW5NB@ʠtsn wue+葟U> L1PŃ׷>}NCTs6OQ()M-EYo$0,>*KlQK3gM lm2%P%Hjx#JE d"nE?f$76,UUl,jTAK湳 [H`sѹ>8%Ai~)T s&Ed'D}l�8F;LWA{zR1s-uB|gm EΣaU) > ';IFt@Q]0pȳ ,ץJ NUjc+<{)/o#|]P'urץBI-۩9"&fHrJ"m'B&>KiMrGֲY,8 \*ڄM Z[akB/1mb6spypn3fXgkٝv>_?aGЏQ WjiRU4OAׅ|ʢMV鉶IJZ#e=O%P"QiOKV.|;´M"nUm}B[)*ZYکZC]X 5T5= Bt">i<  `59GnusSѐQ_`=eo~,(CNl] )ټ,pw7tqWOZ)M5b8Brb'E&NGP-YXjV ]QMe)ꔔRkpiE߶ʾ% l(HJEӆ(N"oqdX/{xf.xJ\+Jb-0d""3u!$3�iyj$Ku¦cN|is89q;9o}gYzMl8J㺽P3^>Qr'aYQ D'aO`"7]TU*P @fWJ@]UBr4#O j͡LldDⴈs,>Ҩ}QQɞP%h60Rr ;'6&g7g dBQhdžœ0!,EfI ` gڤ^aɐA<Fm}J,Jf2sC<@TH<RZ^_|QaKk.R4iA4Y=߃(`̤NYA1[[A@ƠgiC%9"u ض /;Hd&E'g\4آP>}CV"ҧ2z_olLW5Hڀ,Րq.pp5QWemr9'O-Aݰ/oԟ^?QT1 FOգw^JS)T\00GcT.1}r?q4Yh,lt.1jQDUpeM3E#P; 7x by3l-5)Kd|SU7|rd eZl^U]HIg!$MJsd!S?X,Aie]_84_9HxHILFC ZQ6M?DQa4Lwl:-Jҩ35!Ö́0Ppj] lVwB`´D=FTijMHGdY- jҲEYzD_BgL@ s07ns]ڤAh{{VDr=h$NEl44\n { Q1:J\RLsNIFV1'a¶\./VǷ=4(QQYҺ[ x�k:PU ~delD_' @usf8&]%x9HjԳ'H[** %̲R2kT@-˼#.x`w;6;xO:rkE]DέsEr=$s)ȖJH!O1Jha Ϯ?AijĒ)F d7v-DKQ"O `�ZkL7FLB+)BJ$X"1JG0ũ!�pvD$ x$u?oI9)) ['ZDR[—LÝM\wnsn1Qfx5U@QM3S+)P2<feXϮ-# XH¨4R>3ۜLm aq9Aw1 J0vy|rP2wcUZvK-x(y(B0 DJ3r6TgeȧGOQ)J V*VF1&GB0= P6*5r#AIb(nY ^Q+Δʮ/x2u;l 冠`S}PSSo<Ց:Ӆ>> Cr15tDnӗ!qBQ-Zre]AC(*ԺZP@i)[i@̅Bn+)H)%ynXM}0-\x⃉/ 1FVT/TZњR.<'˳)($u3f-,X)?~?F3xe`[wV+*mIMKEtYE4}l 祟D6mHL-m"cЏ< NC V7~&hO+_not`kseR[j^ zǠ q;=h|~}dHmBܠA6nNh//W+AЧr O R\,DYŕ*;3\L zuF5Z4 ֔201n5^i'y<p$R8VOC`c1d .[z3B D/5-U LAWK+prqG{S FSͩkS @ -Dsv(ڸlҔ N<�Z%rFgA o~VJizIqc0<0u$%̅Dۣ=r!lg�pg9-)Ritsm"&~tP ח/lەϟ~=5? !lMo)e9צwpwZۙftK/V\.`gpO}Zب;`z~vf4)| pm͹v5|jpQġbQ C,9C32n܅VJ&ʸJk|rWr-;eLl9)#5*Sh4\h(!^K ( ep<0 .FHRiUhP6x8DQ(nЂ`XgzD*u ccNEKq<@'o5KmOx+TJj+jI$0 AZxٯl;s1Ӣb"~ݜct6ӓrdm(x/0]D[e0e T+0uhYR"KW,(2,X_ld}i#ilGlQb _> _?^pS>~hzekmO ˯__wox,2-NwOmSXZ P؂c7oJ<o/|~—/傟NMp}rA;iW" Z 1&0ӂ1)+g_p%(}:Zr-+ᦴ"J r ^izp_ivJrٟ_^v.{e`'h[&׭$n4C{?Hx!z.4HM,udA]X"}y(d;de{?zˈ7<lKxVEpraiN2ps_߾p U_R 6Te';6a4%x&"i⚕Rr5zKRσ9&6&1{RrB-1GnHJ&Wp_'|[{AC5ץ !:1q~ۍW7~ǿ/_15L(ٮƲ)Sò/J,'Y4:eG.w3W@)|~¿˿zy>oOTb{8DvmY*J?Mk~f1Ghc^HHX'QMS:2-8Oރ1 ZZO%* ʎWJj :Sp _FO f ~q Ȗ<L;0ũ+ v~ΰN/=H2'ϧ,,0G!Ѩ*|}_0TcRݷJ*`o=(V߿ο@ 2ʶ B[WmϑZ~Wdd})fTJ:H;zb#t#JpdV-4~O;z|'rȿ/{ܝ&3a/~_wy_05TJfJ>`FE#8=hXl*p*Gɘ|~>§ zE0o69lʕB�ehKTW Ic0De>};s))S.�tL[[h9�%@(ف|B땺zYZ ˒V*+#y  ^/K=p1=JNOwn~g<HѤ"%AGC=T[i�MR)SpI籴*AHzr!!+ #xl@a3^{w(/?ϼ]^Dl/WjM�,lR?T*Wyg=%$@ñWQKM|,)%3]d cL#I~/'_ZK¶7'w;'4KV%0 &o3�X+̓f hZUA=3#EHuI_صq>x߿ZUP!*4Y2ȂEBII/Ruf'1u iӏ )}e!G͹*]@7YazڐKQi);M/me=l<Kl$g|cN-ΥA3gK~|N8 <N ީ"%<sp>FIv)Ӣ,JZ}U#Ϲ^/(eu=ZtY,3,Vh32pMww'/_tJ P YiCҮ{ވHbC?EF}j*7V$5&+dN欶qXw4Lh@Yف-իq1Ap$>8_+O 9Jkmwv+ JlZyMW �mʘdimF!%w7ӸT֖Rإ՝wq2=Tdܜޝg*#M,6T} '<q 1Q.k&ߐj:4{thi!D R%bBF-~}!$YPS2<uHeni9GY`Z-cܻqw9LFI=k`#uzҷ'QK&$Jj%ᓘ'W: TLȢMӿ" TMpɿ_w*G?/? ;uzZ4 aF/K)ƶ]/ *2.2S\tk\1}.Sf8NXߏtפ~ₔ=ZZϙn!mGo܏LEz0;/~#3gPݲշ~PʒGRzg&䧕[?s{OtXpqt\vݸW^+!alKVu[ZvOCH]|Nc+НVW@+*Ni C,Z mqh*)P<tJfY % BbO+2 D ǯ ׺_`L|sr딂Ky>N,#Ot(.?xs]HO*qM},d TdW[:#]&XŗWF8]ww~9(O?>lOs 1TlFzB-W\D=|>#3pK Ş6ŒƞX-2<^0N6dm~mۑג!ZŸ5@ƲlK;lm<�駱iHi襲˕os5mވpR Vc0#{>")+@{ސ1p;2EFpg{|d ti zd8Vmg=SQ[-NI,yE[Hz +a+` < "x[9jAT'` 1 ѕڳ,1$pҙ.*nF,&S)VZ@Y3I-I7X l)5'n߿yo;w'?+_̖:DһDnR zbR&S_ �_Z#b/߸n<X6錭Z+F>}ض-3ggN[U^9{`HRmۯYT4ei]; ^/̘ 9i5E?Τlno_ٯ[?<p܌s~?=ykWGȨ* JkI$+хS; %(YjT%ȘL٣X'J9d]oNFY|Z3O8 GHV_ Ai c?4Ǐo56Xh8̈&F Jigf�y}̍TL8S30}扟@h<K-I <?>*s8*O�azV *%0dbeg 'Hf|?vܹ;? _.`+Zci3G!eJLHuT1/} s_y{Λ(FLb,Y7$3+1[I /@h/�;�,> <etOitCJH\|2ɸJ텗ƶ]*\^.]yKF qLi5+H ˆluh[-1-x7L rG5s9l,m xFIi|Wr|LX,om%\ygaHR:iJ&$4"!BV')ᄤFTsXaI=.j>䀋G&T\7,0olD+si~P <zTY,Š>)|.˔3Wim O<a+RG.do=嗯K&à· '¿|\jM3{trXi>: BOu >Ҧ?OA?'II$|PܑZTsXu!C2쾐.8gKey:jzr.DhVSUp݅ڄ녷ϯ\WV\^\^񘫽ɉ[fFRgbA3ۊL33wu sr7|}'bmF!~>`4<C!#}iJYK:B ]c+CBD!P-{e/L'b-"ep˸S=Q5q EW~}DLഓ:pŻ=A:"IxMWKKgDD}F$OŒ]ñ,<Kl7n8p?^#&TҌDD-##-5§9&™[۸\ϝޙت|fWQjTs^ ]!ezKO6#'QGr0 8/[d% YrjMiם¥aoם_ Z+U2=h20zŪae ֍u+CWȩw`ځ)L#<o /?%+5+Ȁٹ*G>ŬѳWRiʅ^6>AtXZ ֟'-[șt\:aԨ+ p14PtȒ cvH5.h4cͥqefμ>$?ffOAbP[i8ڰN_,>~=R)V<WUVdUb%eM{.ڊF *ZvUMuhl�Ueyra3戜Ǚ=#H14AC9AEv˧&= dn|+6fhĢR ƒ� ʓMzFzE eKJN[+HW.G9$ApRVbU{lGVht:ǽ^&~0=!Ŭt$>7GX|DꆶZMg.F*8'ղ&;Uvls&HvmJYcŃ ;e#{u'XpEz'YSNrby3e_6fW{.X|R&u%L?17Oqpؙ%.F[ 8%@3{ʪHJg\{Ir |Ȝ%N'h׫ִВbw?KЬ~LL3Le1>~25"\9t& ΠN-+D`:|z}yq3ʭa(L'̵y<[\i;M\"iGS}k\ ۦ\_.^_ضʟVy]%}W:Ҹ,�twB E-ULԺҲNYjK 5ahBk)LVғjҽm\lVOv^+Q62\s>Nfe%6J%˕P, + m&+t18yҭ" ڒqLf~y ?2iXNZӌ]J9Y'e>蚰3SGʙ< .>ʝBqG]eMg98L2[a~ H}:Rh#�Cm*+D[k{څ.kFZzя} IU&t^ EF#[gW YќcL)I3xdXm>"naSzt_/cLgR% eYe5Mgsf>GZ{tˡ9N#V~長O/|y{O^v^_.jAяϜ}mHV9noZ˖QyD Ϝ}ҏ92>'ymCrnjjY_eis21^6~\?9g=HZ�==wY;Xb2kIL<G_X[vۦhmY=WB5 6%u^-,m<72Ls*uĥ"t?_%/mHʍV&Ո`5lIcJ,@N:ZC%�<S,M=2G"aHl?v"5)u598}*^V)cI[sϵ= Z1QӊS8Aw4j ;1%MϚ'`0 ^|iWL0QݒdkS~eӧW޸\v^W.z? 6}Gr's:Rꊍq^Z**toH)|m[ndXaQ5OppQ96re_7t{Ѷ`m u'%>SmˉӞFRM0c3Qj-$uX"s)JJ۩e>썜R>%O!K9'Rm۸^6Zi-GK N983Y'Ⱥo [œ_eJV38ۤ3[Zh=cܸTc|R X>|nԯlU _K˾/LGOWrv[Kd=GysʠJpq 6^_=CIk&{NZQz#%-3{ڲۅ ωQ9^>_o%u'aսKѤ=-8)2}Im^yrm]^7v575Զ׾V6TkۖU$v^?o8N6egfqPwE4mr{?p¥#isIriIJAgsg#>Q09#{F}֧c2Yfkjir|Q/5WL.`vhhh紿4bPZG5%h~Fm)n<=]MiDd ԠA}3zuKҊ"LڶЬ6uEʖIɚXLj$%Cs6}g%eN*e:̒WbMRKmFW0W. %#Mϒ_T%d<@\Y?&̃Bi%`m6~?1Bg +L%]1d?9/4FPkfXxn|o\7'Z\\_^^.Y啂lsVdezLi̇ Slmv\-%!#E9Qgz]!{BBȝ}yN…ƴ~u_YAל^w�"jǸ)KkD$Ia* VU9FpRiŗv tܓXTI05Fa%7F0\W_*K2b#sH ugX~TW T֌9̝.+kP1 [9bRs*͌R˲wُd5=dEYX%Z" <fPTi}(=S:kjQ wl9@%#[uKYc-lಿgܿ1q!R|yK<ɓKJ99X{Ѡ˵ӗ7'~ /ƧOԪ\\*v}UZ*~{$"DZVnFO,4In %ʯGK�msC{=9R sa,iܿ}gDlhi؜1L\a.,e4fe5P2%X "w1²v/ HNVkakmiS1IP2W%Fkm?-jLiR[m;GSk˩Ý eH+ 4pK0iPr~]&K)Β|an۶6]:@nR9ɔW+t4$mDRDS/ɦh "ħ npg^^^f*m="8Mw,GA,F.hɅ?cX~iWu#8sP#hpйN@K5-Ǫ}|_eY\J)EAAԵ6o<fKZ[Zm>)[.qײj*C91F~̒V3Npx/U`-FJHYH0˅][ɱDjfD@<HiJkJz-, 5q @9-NY2ђBD,)δ#,.24Oy)KuF-Z*E"oYۣϽ&�%GճZJ3'ˢu95REkNq2-WW(UN~31mVM!ߌy)O@TfN zcZϴ7y_*ґ$)F<%ɑ>K�f#^ ^޸{ҡgVwm5um�Nk+%*Z@+`fIa3#ˍ,}rdqyH8]('؛JZYEچZw(BkZ~)O^k:$m1A)P-MS (2Q[cBJM-?oIUW\[ظ'=,<>XAT&3%{mpOi˲Z4~&P}qb 9O՝Kˬxq:Ae<"7O>D-5+e:NX<s^Jl88oۅ Jf:$7ܥ&s$(,|妩]7F)J(nϔ܏o+Qx *D͓/K 3cR"]x\mԕ]*˅ֶUnXYg'I=jڤIc)Ry}nwnhsHx΃L@P^ ]�U3oH$J临BIwc'nle͛ͦȓ/~cEذv4CGPTZa5/5(w]%{i׼E<goK> Ĝy`Ř=ODG0]p8ԖTAGJ=o-} N)ѪFi{,V9zpvml/̍C'Y M(̺eyV)eaU(%-g6״ݭ] 43rn|Ys*3^Y\癧?6jޱ4ӃT d ÌZvgZqZ)#L E2Po'wۖB׷Z+eb3)L գ,Yaf@̙!fQLlKьIY*5H_3*XxȔ'lJR9qwPgTڶgYD~{eykƔc__$aeKJDCd4#t{&6QUK:`^ZRL0#34@D]mNLTe)/9).qee&lm`IkͅZSSJ C׭ʔb`ah:&Qu85OaLRk:6)k>#<ID%g+9q R.^?zY]>xLneIYNO:ayK)ݹQ+e Ҧ.H00]@<Ue>ME]KRrݮ~BKՍڮUb?Y뾄]>Ɣ`ZLo`L# >Io͹c$0c3Yecc/[gKX <dxl4 %ܑ}\>%W?s@c#Ry5nc\H;j^pU0ԖjU *XKI=gjυ4c*sLR#i`5Ay[ R皮2V V[v*H͛_6l>f�sWT?{~b!xyymyc E(-4(jM{('AQO/o}` BEVKbHE~;ΥOd2(7?~z &9O<@2|fF#Ko)MtXVpa@TVVon Rsq?Wϋ .f%tc o~l $eN2f 8uW^6~۝q$^ < Q.\L,�rZT |a1151kdծ|~{{0Mk?ە^R lnA>a#ŗedjӏ#bU}RPq >qdRhfNըe(>g/Ӿm7#>4+h>r{mOW%+1HW1øFZ6zp&SQl[j\_t-xNp}]+mX1U0`)(RiNUq'F=Ԛ=!#W#g1ЃmWZR@l4 ϔlu۱*?1SUƶ]ڕP#T Z )YFtՖ'!ug9;o爮1FDRKSVLco>{1`5\M)�u|Bn)J+QJܜg{kN2U`ғ 3g|k;_>3W5":[IC=<1ޙv2Q][AR4XpW{ J!VdOOc&'po_:~ #kƙ Q5$UVa1}�)1SZf.kqPKzpa!cp鰥ً嬂eyI5tg)Cȑ-!]Niyfϙ`"i} B"3Ӏն6[۞)F£U,,[T T_sǒ|݉c,G䪮ܓ /O8(9)3+(Zӄ]rҔX(Kz;sc뾭!'"s}2-OV]o!U'\.v8;uιiΔR%PV3南˕]ȇ7Ot[=k$ 4jU RWb;nIe0F].5=ABr +I瓮QfI!z Ŕ $ԓ([˓1"Rd#ۆZׂ]m&VJF@ėT!^%1yrdNˎ[]A*)*[XvnDV88l0fJAg0Ih.KώYVhaY!LNT^Sseu%K`_A q;+b+UӠi>LnRh&.K@}B]F*|N%Gza<9m2SnR1ny}}]5f4gn8:t\*+t5lQZ3L2juIy: Ctl*dz7Dk֩@}_l>iy#Z2R4GAIQh)@fz( ړ{<#3W&TnB2[ a,-g<rxT1TYR)( K2W%`>jTt e> y2rYBVBrB0eT1"kcʩ₍>g�9>r!}bƥ]ʖ@zP�W| l{,%q*}89?[u$j-Wv<KֲYhUr+Wl t3,iKs|qdܜ5TmhPje/˅*}>�KvL;q<�_~o(ν3'@ƌk Q9GbMs*@R2"HPEVʪPu4EZK?0ɸ܈={K)l%oڴAK#3mBkz!><@7<8ɩ6ӪZ/))|'Z)){t-ԠԂJ)ݐ/Sm8g 570f_zY[]B _ Yh,vq7+=N&r<ϓH"lɿϑ*1=NXQIg=L}NkT൝YW`II~O9sd'+<v}o%}(7x hVSvO?+xtŒiȲtA7tK]h- rF3w̐mp?'Woi5{y =Ι=7p&㰔yr:0(y%$C1ƉJa/:dTR5=.T0kW)ocO@EgZF !CSbrDey%4cB֩P7D4SLpv*[iĵU"< 0ti1G"܏)=)Q-R2,ò>_ñ+SY쇛~p{_|&Og_.#f_GiOS˚Lsɻp>+?vsZq-C-׊ ZhCZ[<D<l<&1iHgDyOc߯_aNr6]0ƘG~M9+jp%J6΃_?1 YCU⭟3bQzn7n1v*x" ih 4 Ɋ_hi#Fs.EYvs29~*,AcPZ%>W+M[w}_觤D.k|$غkOBzŐPL2MJjPSJ<YU`HdlSMzxT>x<E 9ܐpMf?o~+8crMT~Hk1| Yh  "YZ3R^42^9 uȤVi)ќL܍cLbZ&(~p9D1FO`Au.?7{JV*'m4=KvKԃ‹ :>ضRkRmy=齧HN7e/"5)+T74Ț1s:o+:V$=Ӌ~�2dP y]b=-qዧb+َtJuNm].|{дWl3nh;=J.6OF_'sڐ jP%)-[D1hsH%u;=Wm91({Ie8� ǜ0%^*9!;kpYqa^,ff?~vqBi dJ#5'S>Ԧkޙ=Mq7~{5ۈ%TJa9zkiqv&Z`zkE7$n b~'MTC2 [ϙe|r ^`*H}Z/[M!3b_ĩOy?~S"u+܏aԅxZ[?/SC~ J}G[7ZK>hJČ;;s9=ٚ:ǁr^ٶ sv4^D\r:'Ԏ{,l/ ْ8p-96zg /hIEC :6F?:Q\1hZX?S̋#kJ}LRMg̷�͑HHu9iE&"'RnPR5JGآm.`̼>W'1 xY>[{an)5YM*!n眂8Z2w3oyWf?)6 [ LHڄ aCbFiIR[_-$9m{*>+(rJ>|. %eءdbHB)[zPOkZ)?5sBd<sa _>i _u^6isޢa(6EǢ%OzJ~s%^R?-j>0ǩR{c&^)Qh{"ܔy ՞մ{m k]Ƀ/d-5#DCR@>{ ׏rϧ9}fzF& yQ+Kp5,*F638d% 2֠J= l $D|I>s>=yxdy <Cb0ȒjҮi܏;߿~8rXd9D/)Q_*͔e W+4AYPs2SEhɜ58a=| hɩ=fTnʌgߚDf@?GK^Qv󧟙~zۙ@;cqLVL h'>UM�"umY4g]wՙyd=6s+k ՉHWr3-c֞ZF" ȵT4-rFo%fhLAVضqB " ySsE1f Sl!eO߶V2gs&;Nmւ*׋ryY#-Fdƈ̮۵baި"Yʱ!apࡅx<cdxd˄Y7|=Cu޿qI{QqlU6Xzv)쭲`¦f=2hesgko7}˺tn' _�j@%CD3wO5 -1&(=9&kq,PIgה;r?O48eo;"K%{BuGX'i�\Ѓ;?Uo?iUa<Y`߮*)4!z&c? تz!͋&dOU`ZhRss)඲(M6 M#b\C˔ ,zʁA̤籀^G/-m'iqDTKadCDCC<gUucsXZ1yH) C(|[C"JN<tkZ&޶28~yVj)Lٖ$+KV5'IaC%ǷʉrI'ضWЦ 䦬%(-P)m¶rl-")X1R.qQ-裒zДPɯ*IP op@}" 4 ,! Ln>g hf,#k@bZKwk<NP("%1ض׬83 Vq:~ S|RJ&?C* v6^m5cR?on' e E 6FYNKwd<'MʅQTՒ AesD3S.Y;l+(p~ x_%chAlG'êH?SUZ]%ZY'nFt[p?2g0n9M~ʜj i3tFy8ƾ.L@l(*x)ߏ^^.<y 4]ri-#;'i= 4D YC9Kk?ljze "p֭wjuh<llÙ4iGB=T~u�>Zצ^bY }}.v`>4FEK+ ߒ9x҅b(\&5U79`1S\|y { ]CR^e<V*G_A<zNJiJm5C͙g0X)]%`-Әǝq)ğm4,DpG4G=JzߊAg"H˞ezC&)]%_l}bU/+L'vlq伣 x6r>AҐ@xt~y+&S)lͅM&nGFOo^6:wKQ%/PHHSJ</52EWXȮR 3'3oc2N-TB޸JCMr1lHDg&."LSi3Qi0YNJ[k\kfK x=_ tzlL1AVwH/L-Lpk`ueQjN:cL4V+(<y fO%/++|AE?햔3QI|ʖȥ{ius'~QyOyuDAPđȈ\b4FPt ")~*'WXY|m %gHz>Ў m/0)^19[ɌZsN@T-i٢9^"&\67҄-\h:iO=15|?o|l�"Xhs�I9j-;C[QX}M5J>ʥ v'SEZ>HMlac::WFG䞎Oϣ,([:saJy?^SN#+aN3)hJEF#Q#ZՏOξ~}or sfr- B;(Vv2:fRd�Ƙ'݈9ߐ6 cDZx8@eL˾,.xՀ9Ctz-sҶ4a@2m%s08#A_n�ZKV3QKV$1a~Id܍<*9Iq]U8;o |7*dM2P߿~۽/|%ys RXns`099-i \fʖ%3oaj󵔥 eڣݪ5=V6|vt爺Zj&Lin?0sn/x_1l9u��F}ۅ`Lyss?̫-)З^_PЖH#y{\H21b!~#,Qen} 2<Am�&`1~~gOMx lLJ/=UDDPL)ieHCΚ9:cX(,~v#b0zG{ I:vv蜴T-Q=UW{}葙vs83EbΉhCrbTOYY*3!ƾd'tVtzR`  s#-G7~wN@krw{> 8iv0-\uJ9G Cbd"-wY9 T?z̒]{+2n܎wN&cBXwNrty?,d}|QfwC~v]8ʇFq�߯?/|LΞ a9L̓W%0EkSz?}ϼ9q*\oCnygYxcm9銥 w̴MDDБ0ݘ12鷧L&Tg,K=USSϓZٷ-9h6L7cZGܙOceHH J1Є4~3>4!*kc'x?^tiBN.9îy'|+O׷Ը܎; ăy7,&=:8Кy ak)kg+vw1Z|oj|ЃMSF>Sl"X@ۮl =2rXopllf^AYc^{N XiU8k>1.^fX'V++s<-C }9y{L_2|+\ym2ץ˳zD\{ n~_? msQ7!>bO"=⣷-'J!YU-H]CHjL4y7,Ny $㑺;-JRfk$0SUkB[<-H\ΑZ՜<1r OތDAeĊ~ډ%B6XCC8FA~{+euZ ,w%qW` Fo}~�5COgi;I=AP*Cjl Q4ΪW+k }F<F?? D.T T_@6J}ak iyT5ѓU1]?ԏ< jemROS)#Hؓ7xJyypk*Skez<;}g`&/LJ1(-eپ?P9b">SAFW8-q#sK)\j";s3KE }R)6!!H%Y&f<,Oq UZbp~yb)$JIU8E#lG6TL҅iȵ-]9ǒJ /u #-I橔.pJ3,p=l%L4_Ӕ,s#w„Ax§} :8T*2 7_9Q>ğ^o Vlj r<E`ٰ3{F=ah n%͙zl4hʆ͕fT#{'RK.[Al }켽rr?~c(2rd[&T.u8{,"IJz=I钬;;p!]iAxxx�ZݪV^d/Bpg4w^~d6/u9ROT8դCLfJ0\²,yÈro^-zBYцZ*n  ˋ!%#=4pG{V{߽Mթ/]NJi6-sx+Ec yua/O6K8IwP/';Mn(B5Œ0I׽ɜo.D$"gƕ\˺ш!r1lx\vi&V0|솁0pCVr H j}-DιtDcϫ_quxu! `wv}&vR]hfFK6lEeO =e*[xK֝F$ғkO=nKE{}m3L (gA|Gx9l/e_A;^) ORLG>KZc9e<3 ˲U?GN-ήSRS樝4T bi3+}kL&FBԛ}ɰ{ѾZl(pUFI!\bXrf,v V*(�55ۙlR^b]>o7ڭvXՐBD# Yj찑~SQ| `M]2E^D*/9nގe\VR+NƁ((*&14⫥bR>}OI |^-꼔*kYl~gZ(=5و@fG縔\҃O*k }`ZG&x~x߲ BH0q=5Jm bʵp墬)TŘ}_/3naMlN" 7#<3OOO,p~uy]zUL)>Cbɱ803ǒ9,L['ХƁÙ SN̶нMTleX{i@]iC3ovj~R{f<מQg JRRso]ċ.Z*>.ij%׊iC9Al 7+bRRRUחPYNzys{́aPc D @A*ï=WoFF2$gc-y&}-%P1߆\nͧ^˥<u2 ' EpfGP_jƨkH"r򉬞^z[fla6yO$b6L ;br|>z\"t3ӉtYK wv ׵{ @{-53:S_ˆ.23Cڱ; kYgpü8ZY{Poxs8fJ<e>[a1t Hi+Pemx7LZgY;D^fؾ0s^#Sh9Z%j%98 ! wlYb.kƕ\H1ẘh;HhZF9 ]%~hw޿w3z␐֘#2cb]As);~?+ {=o^0Ѽr|~ieUfR4k¨mL/@1^:ƌBfz8h97$sviy>\6T`+53IBgmwkX pxF|bHX.zNji3I7z Q,w!&u乏v׳RrG{׎Y+̻?>Y>9Ϭe#P4}CTQ*bn/]o+ۺbJ& 6syq6]/'+-BwztB{lz{KwKjh/*/3 TAGT=}G˶h8Tm"g7qm,ņs<,V5 V[^L[W63pDqP,5KfsQ5ʹYׅW|ר^zB Xh8]0r5Fop >,0j?g=\ox}҂VGS-b7}nBѤ- `j.FnmQn\\uXTG)jFZZe{7AWu/#GˆH3wxxf>-`9Ϩdy[uK^6xg p`@vn[붶hsVoy]D/6el~l]&XZ9. E ޶E=QUh F:V* M`3([uߍvڰQ&(c&+fCiaRRP݌d� mrF[R*k@<Z3ڜMGU4,b 3"aNe?s5% ֋u://VAeF5,0C1WCHYTdir -j#G] 1㧇wools%~)]EbMޮb"ȔCNIϊm nնs Rum{_l a 3d$U$Fv-ׄC>/Q$dLh#! ,A@Ca)rm pu5T|â/ֶDz�nLRlmcB'{+vS;X6|q;W(#6EUMr' ZoP ɏ}q7ګ>GRIix{5-cZY͜vor!� ]A#C`ǿ8%WpP;{eAdS3R ўCH4 Ctpk1AhB_~Og_ޑ|t: l/*4LYt~obՈϭ#)hc^,֙S5"mEՆ`}׊[KW]j`E4U7b8.u4UV̥P֌ t vmR] [.ق[&TX?߫˿6~‹ VKn/Lۮ ҃yq&ܷx >24MM"J=gbs,kTGb2$0wJ^!JS]փvFsD.PA$VZ8gex/*.r�TS6L:߽׳�\_Y᫷)ު&3̙B Sf^QyU$X ȲqDG=80vQڐ\RKw"O `<F>~>g4F}s~zb>?QJl-\hV~d-G;uW쇑iHa[kl>FP Rn՛i#8 sf hGcqѲe$xo*-We%R[ݹ�}ۚ)R6Fz~@ޞREP._F˾zk6P$9˿hQZn~];Ȃpo}CXd7S,2:6Z, HޭvZI_SAIp][= $byyNv6Mvsϛ;(UO(˝mu Z0Ihsޜw)4 uZ^;øn9Nj*' 3#b+8Dѓ'4}10Ն =L sB/g \t|<'jmVN^/2 :Rf6xbH$':vBo0ziʥ J./Ik6&B/NgO8LigV=! dpaܖ[9~rimݫßWΙy6tc!Nc#a韗r9/=jtّ/lފ>}`[q"+fa^EYdRj72{4ֹej2DL͋yes@Hm@ݪs80x+E!fUUzԊ!m# EXB/jgU=j[^3C (B`m"Db-ۦw ڌo Q7_/ijnwx'N3!ZJ&xE.@`ߧKx'tȫ}/1xibqo;j2juoJxDcTX, 'Rk*! }L`վ^ : X�Shρ[]jF1 sE|AW`.",T#Xهq/։ zzl#/ơ/אAϵɋ7dӗ3 vXbPp܀NmcD67SBP kFT-tڍ hYu8^ùƲj4~|wk~qyYWbMV=Mc窵.Qjo5~QbD [ qk%|s#iUj3ʰ[ke^~mVj׊RxASR@`bXMU 艧6E[R=<7yo\5lU d|r&c-+vw|ÙIHVgX/wF.\M{D􁊭T q+'XJi,BvC=d;).8M(K6@!XCjRu:jI |ݶ)xKvyf󏗌˭Z_Kyp}q&&2pt )FR0B9-< ׯs}}xd\cm3 ++!AɴepHMG$PiZ=u%B<KάذE|~+[ GEiq=�5js̴-KB@B%ttTmhC 4 Zmh5nNӆYK Ěg'>}d)mB)H㗧L-_ ?G~|Rdad[#*Bi%Wmshxg?집)&X ;ZC+ko?:Ta)˸4z~���IDAT{q.[ו&&ծİ3 n_~uMbY~MX jAK^Y鷯lj~b3J)n1uwoHUsKa$Ǜ}x }=P^ژ/!M^N̹D1"7�>c` }Y)#;O'Nuqi&4#&MC5M'MYK]aU0*UQ} (,Rc6\]۶V͡.o?4j\z4%rIN2,F!JX+O{KpA0/5Y?:D"Hu ~h6g Þs> T!2?O 2ͷoHq0mF SZcqҁrm\8hb#ٍVc,&h^lO }C,03Һܐ, + !Z'FY-W[ZIO@2v|YZ[n=3X^5I~WSS=r_-`&.Ch,p!FFI>0 Q@ ӰA8㠕R{rmCif'J-VrlˑC,J6jz{ғoS3l�̀$pz@H`P=ŵ-nRJ*lNW�(j{yp&fS <ӪYyc`-,5& _H66@1{ hѢ=_x.v =~-779Srew`-}6/ن[=>gJo=|}o«4vƉic"vL&UmYVrnMb-tv[臆U$*:C5Or{8-R|<ǧ;jYc[Σwd+wJy Z3[,�C(E./ E Z˸ /ؗzKj}V} +!8Ƙ؇}mB"4{>}xvkߴ8W4v3 D-}-bA)+5R÷@i݁klf=v,/\A&k_ͼ4 jќ})8{Bs:*4M%JÉRTMuJf .Bf "r ZƵ6*b:.]!< Ǚ+ijBW||{ư#g(J�q n07գIoU+Z ^s0r=9*倖Ō5 % +nMl_28[m^+*N םRә"ON)ST9<`QUPMڽbhͤi_2:K^|abKKZf = ]3R Dx|`t1D Ӵ#'ʟ~C(޼aBF)\EB$x.Բt3:B fiͲkd a�xjibzoS+J] Iz& ]AL WU2~=l 64KřSč<ՠ)ݢE"Z<+cR5 Y[R3R ^*rhS5K'_>ǿLJYA4 ]J%m{!M(zѠS/=cH!r埆b�Gڇ5So*f'<Lt!8/k.XMCOVd6OPp.XLշ,弒ȚaYqMK.y^h;*핥Bٗ!?7W[CMK\8d-[%:orV QBB;qA i8ʟ?_>̂޾tmeD3i;?g4Zvz3YϴVbng"@?LaFse7|#}]dHA'@FG ,EXr3)K(^jFp$h1o()6j}p!^V i). nxPLĉ #?=o#~|[^߾%iLuQ6ͯV30UCeK4Ʈ7 j%szgi^&^cd.Y K٭;Ea׍KٸĽрlNi7KGþ_uE5M9k]ۖMn/PyKEaޡr�lÿJ/Q(} .' ?7w_}a&Bbᜡ"TSM-3zdYYˑfJ[iuš-;.It=:s $E Ѷrz{!xm[Raד0IV%w/ZtZxvkl䓹V_l. WJ,nyIل(A<h۳M+@ AWO y5oq=|2/ǩR=^F vu3K9#ӁKދ9+cC"ŮUeI].ݪzxU&4e0;\s1ڲFueH gfA:tNMGm s?ҹg_d6z Aܰ vcQa_(.g+@!/.5!,1nܳO40m>�CdF/둿~eo؀co`ifYY̺mbm@[hQj`~ 6|#D-:b䢲M;%KĿ [zd_銍509(ś1 .0 Cy1Y ֕<X}Z1pr楗c>2l f\yx|䧟?qZLWܾ[RQ ^8 v,wۇ^ğxg)M컐87Ӟ4qnʲV\(:a@dXki#{s\z(=\Vw$9os#pjwq^X̺4ֶ tEϹe*xӭcS/ˣPY[wvvk[ )INW ]eRbU|{Y3R`#"MFvbŻδq%ו2} {c/;&&FHD~J䫷"gD În0+fۀs9Q L]} ! Mhеhf'1 4Oko"3\9MW\ CLĖ yV@{ˑ ,+^ %: %aԱZ N:t-bBZ+N 6b` Rg3MA :&#qt̤6qI"qUS!,*`b[Zĩň ֲ0ȫk^gtGsvqo%y%$Bk|XƺT,ef *$v;�EK "+V ees<h<&I|M]y^hXfb]InڀQ-ZGE֮TTιPuYl*@+dEG<y))Q晦ΜǾ!li8qz<pޥ7JWFoOτӈ Wo2P|C]1ˉRO4;.j*e:mx6 ww@j/+]*RmW ] )NOz<Zӓi".(=qڬGLW sb7QZIZW׽!n$"idΙ'_J5/|.yenVay}}̂Ԍ0\Y$Z@,NCR $]lVy ^<3(L.U'ȩ 񈏁�bJiXU0,]ݠA\@b`]J$4O KX|T^Բ(Vڌ!:^9s# CJ$g5jyFo\ zD^T֌տFpu}opRYsGe>ODc!\g'C<p&vm`7'gB&2ʁW8 b يb)'r[M*Pb;ÉՕb!]e^\Xt::ONlȞw?n{QWKrŢDuyE%]E+Bi}k .-J*&&ـ 6Z+#h<mn8r+ZXy!ϙVNLe`7z8|tɱ_y<V9wF ˜"cL<<CHDylH]V'#Z؆g]l뽷c|o/KcL@  {D86 ژG"qO# y͈X>x"C$8q8bfy95gHfW:N:>͑{/kh/ﳎLOS}BΔf0|Rpr,ǠlZ.#Y ~۝q|z7aǕDv:pw$MLnas?/#!_}ǻa;ӈ�.(rf򗶲kyHnnL]/]F5v^ ߼=gvM~@6n/ToyQt7VTQjU}h4Bjj9!ZAsh4>گ3bE-jm/g)}l¼d%KCC Nqvf@!68O @4OZbUֲe=sIGi+6Ge7]Ιe]p9%x}ޓp2-81ĉ8|*H=giORmֵY!PY:2/֥w2!C td//5|T}Ӄ] uE|R3}c/VaIp.&ʭqQ0%@Ҫ!aAGPmf5 xA]b*atzO??g΄x=WR 3[-`gb;l0 ԗ H2ht颈 pͳɋ4EA9f'v&(qQ)=40Ȉ UZh(V$#lnwֹH(0QJmf> <*\>r4yE*kUV})z^ Z rDXZAx4r :zv'Pi eO|-RJ!S8O,e6!Jz:nGվ5gֵE2KѺ䙪'˷#vx<f7ⰻafq:4|azc&y,kcY 4KAFDzTyy>CTjw6ӣ\'MqNhMAN_'ֺjq:u 5mu%b-t0ǡ2Nퟃ/D<Ӱc O ٹ' \$fw=O׏?9R=.DJ.ԒYb/Wr[ڴS9ɺtmPiT]Q-AX9M2#9UcWnwDNDRR*'f;Zmݿ/QJR4%j+`º[.rMZ3Q<gN>̔~whhxH|Ըgڏsci`jFVFK/jԡԪW{N\Ki60`%�PqUCI2l-m\mײBHpT�(|d=!L+1W(>IV58FT+1f՛k8xMT-(c7.yRF+Ʃt9F}ipjU^Kz5! kms|=. 3]UFrL!VL$$ddx+s_?Y4Ѳj8Pt%74D LaAɨTKv}L}ȆԖhuB|!�A f=|z�}}Ыn4�wqrPEMw@guYlk~C+78H3bҽ'^s q-~B z4Ue,gl!@`a9/r Ujh3&e4/Kf>/<J(0.#%Yp 4JsNe 8?[fFQ~jk+&^pXsyBtŭrRG $߉a20MW\߼JnL#7gEdo&@UfVX՜X yjQ[?7D,6R9&tAu uE4煔"tXRleBrN-AW�#{7|u-~{z |>_v&[I'eJi+vQdUfO^mK`k3<~irpQpRP[v&<}jjcw[ YGB2gKb~jW*OVFE= JL-f#R高ˍlĔ]@0u#NivH Ӳr.Ry:9=-YƆk!X<xŵ飩]BvJ9B 'Zj]BZ#mȆ ÞӹPVeUe#bPjԬ�g=ÞjaFYOT7Ti5ye9iO--{_;k{}};N?=QÎZ[ka A znĝ.~zpAO&2`qVTgۋNyGFoCxW<L34% 8' .1)L ?}wo+_]3fCuib/HxIvʻ&ni'|Fk#zOKj+B!fE̒,X|5/l[J16DOmHb[ zy 9ud=S{ߨ(4G.:"CU,e!r *%|"NՂWԓgX8ۦ8cmʢx遟?t: zS@p p,U!E8!(Km̵([OeB?B ZWNHUhG9xs8\H# ҉6 *ea)3%lƕH#'( |+n #Ky`7\+?}#q fgqk/ݜ3k4 \0ѢI:E-P rzZL5 $gD`:nϯ'UZEm)zi$׋c/ ?=p~Hv;|>+o>0 k[mEY^H[:#(睭QY6s[-;[szR\!hiYC2޺h7|[јt&i+У|[EJ=]BK. t7=l5e�ԈZY,9x\5Ok ͬyt)M΃N='RXWfGg3g7|_N|88#<�ӂ#kcUe1cFMЃ4S;Gb6s&n蟹⣑ pٵ{r6MqMzLUJ]3o^)mEi58mi" 7kt6\T"Ii4W\39f^ xLT*^}wQ3A/J,&]tS=xstd= EG/3l㨍Ě9וO'qf|x;nquTS_Rd_Ծ g/֓a`L/Js'J]6XpK=ESAcOݥȐ ZW+439Yj2arWu{ZW "Vz{8&P_8.b&3V?&"I.E*H5MZ:sdٵͼ>G~z<O{~~ʬ@ n^]⻷͛+C{ ?nPidf ֜LU\ W GfY}VJO%.`ͮHs%\뿮i7І7ϋfQS˸p3H`f.5WzS` ~1^IaU BU5EzJ'Tp+7}F7T}iS :`Ml5N.&-,LiJH!8 eo޿7-AFJgzs[9ۯoJùD!U\E02i;ρHp% %Fc?D !ME,6զmR1DU.HfBqj_l}} *\h7 ;o)Ms,z%JΜyb3mJɆXp^;gi |5ׇꆽo^?UN@UQMP }ETm3B q-5tmPB7qs<W~rɱWifoʷܸE@)Hl}BBH;qlSMLFsqd"\HW-Jl>6nV5l֓DUvlXdy\ڌQc+0/Sf2`LmnzvzP4^vN|upt$ڨB\ oM hFB=YYeK,Po9o 0rH\Wx&$|tp!N8҈r׆=u@\ZFl.ƣw=iJw6T4@嶂^]PX,!٤"TFX)s1jaQE*)|zO?}/?ʯυ};n705n<{)YTlfV־z2ߢjZ;f `>%XWXc-1\ j֮5,@N1Zg7UmPۆN}#d $6K od5.+r+ .kR-Z_B,6ZC\g!2Gz^Meܫ+*eYja^,?rm zg t|YGJJU$&@!RcJWp;ݐhmm`&f 6:CLqwɧoԦԵ3xz(7x_Op0K#٧- &<ލx7.PZf3D7:[{v$HW,HT)j'u뒤MYxml6IDg3T sϫ5F>/<?4*;K? yuuClW{gW]rE8-1SU80M"%OL/M,eyU/?fuɖ5QM e+]z;LKtxhjm."IU1  VI`6V.BK2ppؔOfkU+r ӉsYy^Xtꖓ&%Hx7k4dլTEIL wLnOl]9!y %6:\ JK6kP^*{ZG Npq c x^; XݰO:D>n! <i3rd͋d :S% A!Z =ވҙ[ M�*tWG6s:;Ob'í:V>y Eu4ΧxSW7oWׯ [K2 nٺ<kx<)Ok5U9KTut f-!뷑oͻW`bֵp:{RZ+um zxqkEhf,Ά ՗x-FsJ:sZ5`$z~Ņ{nzm r!&Y ]-M[[)=6b/KWZ6oyi9s7?8X,#l]? .+5c$TnIԭ9T ^*aoSۭ=yL2k+wo1=f @h&㞫ݞo)5-z9Hq/rs6mk0 #GjC_R',f=H)֬l_ v:Ӥ;iuECF^*4{N}~䧟~ c&ią@J#>ןVenͷ?(e= pz?;Rd`kYgfBQbmM=<*;}=!ϟh e& H^>Oܖcb"SD"p*'^y4+-0j\1K@)+4 \աd€Wl=10&m`j|/@⟍4DmUB¹י#FlL&ߙwb  x:$ ųV[]h<SA5{gr;"0NGB.'b^?3O~$IVySTk ҴGr|cya#qd9xW+SaMy^] @gy^懏?V|"$ёJJ}MWK[25-7/iCR3pk5\`e1WR8N<<7>gs7?|{Jwwos%S5ۏ3L:L3ύeQO/+' EYq^f3l  qC=\oo߰MZL1_4baƉƎ^ɹ,Ug>-d6)[lZbTf}:Hb*> Bh/!fb<<Qv;=SJ q dOH&g.2\C He) ˑ3ǺrwzfjX[u0v^ojChifþ`'J-9fZ%RHhܳ94ِOVT2MlJU2p;ڰNl 80\8L;grZ{i~o?<."O4HR 80H%H{aڅ l^8X(j 2*,йMYSVTzf!DԺPMfOqz׼:epzx?Dցۯ=~Ç7_q=zC129Riu^WK+82'7x^BW*Mv{xՎ﾿=^!Di|Y6AI `p\ܿ6jL4W˂hT\[#R;8"niMwʂV'2;[ GPmvO% {TU53ł=;IIPU3yZO<.V?3qfpD#AF;RWM/jT�/9ldվVpg렉сB#iS4HU c<e%a4MxuAk H@6P䊲VyF2ʼn0w+cpw뛉8 -G;ÿ_N(~7x-=)C4Gzf-muKu"O1CZg""zJA;qksn@LQu8\r}{= yL^՛%dՍ3^[ J!w2sj(ŭ)Vԛt9$+}5oO#Z{usl&bJm/\Mh >BzjQjfMdFV;OwEwE3b[=|IHnv@\vª+gw<.'˙]1ƒ63 <;iFx|~>`>#*<ՆZ3UfO^*k_U`+ Fc: 8Ї1Cd7$E&h7{u8xwsetPpZ?r9>~O#_s˫ܾFU82\8NO3wϙy|\X y1za<0 #>NĨvOu6 s7h = _ 7% 1]wLɵQÞav8tN%p^}Kmv�.g]3fve#Qո60DZ=n]9.gØp^(KybcO||ϻWL;!K%zψA":(K]efRkE}HͼL>p],ʛ`>R}5ܽezfN_݁ b+幙%y)X8.pp�K[x,Gc9.'GN=˦}.ЫB0,tkDeK$Ɲ!:|7HWCK )e+Mj,Hr|o \.^Ƃ$A1+igB1 !ЪH\ W޽37~bhLrg>/?eϬix5;}TQFJaߨ2<}ytbɷ+UbFBT4WV~job1核<3�;a9G- !'q~sچQLTϔ&; ^Ģ'@gH={avHyRYZ.T 뮅vI.o~o%N tȄ-4 C}6!rȶoWKiϯڍLT\S[%Ӛi7֗O[)Nb:�a㑾8 HqqH3@BvW5oi:OSy|a>rf5]n{gh=mb6]7exj$ڇ/+n}aq{_ ~0aH&IT{B !u~c_k =jxׇɸr;?23<swO5|7|{}~᚛WNiE C"N=qFO3鶲{5}070bzUr5f^[tt|Wc3Jo8.&AXULqo e\q ăTazF-i=ia:em$-.0׌I|! ¸of2W'b9nO9xK8KdWZ&~ܚDx!,n~o4.}o:'Tk\ n׳Tr,m5sagNEV2~'ib.xS[Zm t&#S/)!J"Ɖ!ZAi+VTcx93١Tj3 Y O TcMF5M gUx tK;) !xv42O'$߸R'>~?w><aeG+pW߽7 LĴِ$y^fyi9͕SNd8\ Ɉ4<s<m;ݸ#rO[)d4YhmX4 rpլJ]H. 뺜q_dTq,a']:r.Bs  &Y3μ>>pjdH#"W6bL\_ߢu=Yfj[.VAMʼn͖^ifs]QYVBmj͗9_ cJ놻&#XBuUǺVճ2s6C/�3!DW7&$m&|VKI~ zs5NqG]Yo*QPzEq6]pe-)Xm4##D;0v!ϼ}6|k.p=DUrBtB_w~?X̩>\XSy黁{7wp0^}a+ki<qwC=/fy,NńBHLG]q]v؏C"Ɓ#O #.6O J]Srv'5S1hRY@D jcɅd4@FbD�+ݩ(ح|GuH0 Z[-&U3,-ӂ"B zP9FxaT|q2j-eϕg,Z,uԖx3givhil,Kbx*]]-2'K3Av8v"Ƥu^gq UZ/3w%03{!f618Z.Hk79F'00Y /# E^å?SUT MٶH%Klp7tveFdGbD ^R ūپÞ䉢gs$G^O}Vj]{_O?r鎹՝2 {w7o}Won9vH Sݭ iƅjj_y|>f+O<>>sZfp:O8#Ø!jm*u)8sEgDo|ADG/%|ݻw⹓&cV̺,26[R,vkFg6MpuuEcx<fW,=.g>j.a*ˉ\W`pqe:gj@-mxxux8F<x?lm[oSεD(M9\ FCV,'R#%ؽ,˱#ZCKYrw>zk~a:psu8l�[mEYf.@R; +viHlϏfC:>BT5k4gVe6D출M!9eljVBJ4i"HF>V&$?5^l>]tOӟqneL=5WNS}`n'ZĻo_+~߾fI4M&Rp> ^*tIs9\DO<fNTX(ZQ͓=٥cbW i6~^͕[ LM-δ6,}pXA)1uY?a%k喿zh7rTv[.+p}}MK mI4L'Gğˌzg7h(xxOX8,¼Y9Vrn,$ZɫR^z권FguC0%ָygcuY(>C:É(qpQp!=ϱKn%F?0k^fxH{1hHk>RF$!F#C3Y$SȦwFnPUL*Q1zVF.pkfcq&x2~9x(R-/SUpU!75zpHhijw!*¼q<>q:"gZ98#Lm3J׎;SSapw|5ov\]z[>ÆAlł~#e(qp (8N̥2j预 j#u7DÞ%mؕ7f\XV]uΔR"=/֘<1|N)BĻȒc6}pIo\ζvp۷x?ysc )u9*6C uh)Kvo_ 1'!a*huY8ϙPgYΜymfsfj]RJo}]%JejCX>D '^)e<@+Ձ׀Vg`ҍH4Ҋei_[n-d 沱&*Kcޘp84Vbo+*jK-Ds&?3g{eh:K%wa󁠉P-.xe?v;~ w?3/O<33Ȃ jYha%|$F޼7x|W;B ]"DۛG7LLDq7S"#s̥kc^ *T^#.E[t3W+i)MbnА< @=k#J#vTmƜV9b}2MU)$.QQmBJ͍9&8--<{Z/䖑O#%:jw= FP +UYVʲ Z|f]*8ro֥P =L6$vWծ۽]KnBpr 9|)z>j6IlZ%`nbB3Þx/mmhDM $^Hbz"n$#cGa!:\1^ޥʖ9ʲԕ/oJI R:SMLs|E "UIItzL֙άWB4m8K\vL#moo7[+ ]SZD$wdhO5ÈJbZ9-+ݡ.2j (% 5ZSsd?'5qj|q&l*%>~ݧ'Ψ:4&|t4 8o/|\-q&pʒZ` A촮e9'tz5[ 3kɬҋC2n+KSQC@*8 ﮕ<W=SJйh ;�y~Ț?3krXl髾>R/|a2lWunPJ^b!'7J qn֐Rt3zO ;.쉄5S| }Fbqx6͝l( b@mV ] QҪ%5:lGm㢆:ыiiD1Rh#Avq C\OWW!gy=t'%00J?`rr𞯿ϛn8ޱߏ! jF H"H4 so%V:/ b$󲢖@FFXD9F뢬ӬL $tZYK3Wp$vӞq<ӈ Q 5>0RJ7yD"6/p8Щ3}߷KAȚg/cWϬr|Uh RЈ@ȼ623??pw#5kc>gEK\OUA >%_[ֻnk z!8QH&⸞ jqAE3B ٹxSn Uvc7a/jAENR-S4[`NsBoP_-j{:s!n`g6bkV'@ЁۃjR9族'|:b]WBݔH׉ dH)ů~W5׼z}ng:!Ѫ a8p�ߡq}1e}꽰晇;3{NOG Ťf|YHa`a:!F ε[o4ƊR9|3?pyŻi:?"&Mӆ }EmVچt 1%Z{c"uO<j15aLJ2&Hs`POˉeZ+YpwniӉeYPURYNl>Ue] xyMCنgo6zV#u%[?qu;$\!X]Zgpr^zsܞ-W5ClnйMluk\ Ln& h.׍7^PqN\ {p=(MUu&QbT}QVJWLsmͧG$}38~R{~}ǧ/g[9/w#0EE3U|@ 10o7zuC#Ø0m$�܀֗=.>tdNQ {trW~Ǐx"Wz#TSkOWW{ϟOG+7oH~b)"-R l[&mb Us2`¢q$F 1K0<Zmzg9gRJVH~2<W,<\ǙϟN<?7ӂx͜әi6LDVlEF^>uT Rz[2P(l[P0 m^C7M"xFtip"l]pAHApsfK.% }Ȼ V j{?BٔeTJ:5R 2T!fvFG Rxz;>7q==՞4F.xSBQ{>b3puu 012$  -Vq qjjq�J=p#?|ǟgJӜ9/s;79Fm,9+x$DGŒWˉu]HCtzGG@M~%'RN o`)f..cgWX rP4 IDג9漢@ҥog*$NG=6ԜX4x aɅ_q|^9υLJ3 繡-:T錺m/y`*fj͖jj-4b(˙5M<&R0T-}(Xȫvu0?قjϕ<Wj6Lt't1oN'~~#o9aJ8R3kYi_8#aGw|̉Ey)Ee!]o#Zh1Ym}�P%dH/Ү* /:X-AZlaۄ/O.4WC{LV; A' W;^|߾p3pڱGD pM ik4XsOڰ5SJx:q#Ǚʺ(ϧs3u FΏ [4<sϜGؚPj Ht j YB0ٗ<f˄Q+vs:cŇn9#20 aKNnZpj=.kNe^q_E~3KnƲVrpl;e1rPmel[̈/dR.RyEDB$ *u vK4lh,ϵMyc,ID@tyh1r5]q?G弞 b4!@hXJj/toU,2"ʠv%Dk HJH0$//w<eLț̹)n%Y<KNs)$Ô'GN_9'ήB0;:ZŦ͛"ǁzW߾oqWV9  #�'{qC>l2ʒ9u>_?s?#sa]yy13Fb_Tșyb;[>y:Yye39g [:Q+OGak7hTm S?h e MQQJ.0 Lk/&,Kd{II4j+^#C4i#В ka] i_mKSk_Uor>-t`j8 H lZaVt<3nP G!cϛ=L`θ)ժ`" H1|_1P{␸`|e2*M,J./V{>l㦎ug<BVX1~?0 0x~N" pŶUۻJT\48xw7ŕanCM8Gj50ڇ-0l@琜9g?~ӧ;N+Ǚ%z+sԜ' nb=W(kiOuVZfŬfz)^-i`ÞH!|j)ݶYJ `l`}ċE ~$Fc2Ӊ̼.68utLʵ+_v>abL#P)00{Byfjm<V3-F}nJk jH̯uYXsB^[^ orl7&v^HDE絃WRЬ=T> {`'j XbQY\b-'o4WǁJ |+"kusfY̒WK@l(hǤ#Bkk72> l@S齭7"֢bnGCòQ0$R<#O?ps{D%D>-Oqނ H쇄ox_ë+_p5HD5+ OZ̵H6ֽXZ*#3fs3zU9S]'NrZGɕ:,Fԭ6!z[cn&q_)ن{2 b{3X)18qLKuq Mv7i>*GاO-j/gH`t6(&dSCy=N= 䥐Lt CF#hvѦ>sA3H)lt[ՌDYiE @VRq14NM:W| II22EF?2|%ef}w(r.PJ5*E cu`՛3,ȸˆr[˹,{щ[z:N=fqvgZw`mvzrN"GD,̧_9/Y6 PLp)'+WB10<;n}w00.1nϲxD&d5Xvg5p)@.OG>=qȧOON+raie^,4g=/)0vV#lX se>ebwuOBiB+KOiT7!+'=6ڙ?mk<mܽ 0 [ɥd|LK" .m?3#7>6U+uԵZh@ػHOj#Әkrmye^+:3I@Tb47O:O@J5߶A/-jOhDBqESx\y;70'ˡ_q&8sy2M`G*GiDso:N@ڹp~!fKjQqsTm7Ӵܚݏ؄�ӪP/N 3?@C9 \kԕP\AT>^xFO%~bnnfg2^&,\u5!D]pqzz=g~3OGN T'C[bTVƐM7WC-)(kKbQA5$=xc!eǻqX9^[sH -r悭 i=XP-X+=~z&,G@5jc!9oZe,X:B7' uU^{$p Tt, 5$Jh Hz2 qM968F(>7bт<}L;FFv~d01b&,܉'\!QAF~gy07(Ufj[Yql+`ޅV E k&1dՆk[/a%g2gĹ`IΔW2>=iR]# L1Dj[>|﮸ڏv;9\_qusøC8{=mJ+#dZ"1ǟ鑧3wy~y>-\ʺf#xaJ0�J^gJV֥]: \Y'k>TbzI3&ZI!XTORwGg3y];Zp!"35SNDz$"][R٥&$#N %IU׈g1;^V}H$ ~f qq, .+*�MSTZn|49߼(x;5+G4pH I&RK`!Dg)'%"; K]Xg(z0f$;R RF."ˢ7kxZ V\Wr1\6#~'_ |Qs86t{C5;sZg>x4wJ @Hit!g&=49SiAÝ`1Kb6_o{=H4<>q3OEzp²Tוu])DSHF>y7_}`J1s|Z4 Db;<KY !^kvNjsIc ^0Cj:.%B`YfiB[1lݞ~ϲ¼̴\:5&]˲XHׯp6u޼2&)R8'CJkqbHG;TJ+$BrXhKJmgr^XQ JY+<SdY$Y}L"fU6An;ԭʌ3U9#1O2GTEdzU|xm*jj32Hh },}-zOtNSi BtiH$">Ҝg oΟo?a~ц1$ Uk;cYi҅^_0]>wAzuajj'ϕj}і)t:\7=3ԳPF۰uW@2J뺦`NT$ { N<|}/)-8]}4>Vuح?N;yƷo_//ζVo^w^7^_7Ga˅ࢪ̬ ^].|\O|\X@ʷo_X TIi! !Zzsʪb IQ⪚, ,&t8cðRPY9g];޸ ͔v#1\bY ~ȚKWIgGkuݑi{ )31 lQB~- 7t[(JK_;St)}guR.Um4w %Mew}}݂ 'My2߿Q 7&~zž@s05&brfqRq^ojTnQWZ{z' 6x!Da?:D[y^ Ȥ*W<kXM?=!~?"8SN_gJ.+Wot8WSQ47Ӈ'^>~`,:4z.y(jWO3Mlᜮw+_啽 p_J~?UZ{~|zǏ& S=NCX+1t1O3,ua鳥Y6!:|�ƌyMUhbd4wGH1UB4Mx;:XR-,h&<sIiVV[AJ7߹? 70Jo;Ơԍ}tkS'BUT+QPZe3UGۡhڢ\1J9I{шЕUWzr[9\bYJK'o j�`@=Ӽ1z@INÉNКI<J;es .LOWi1 yM$2xhAъ �d}nLr5P#I\v~H+wwUQ12/qJz )}@-Jqmui*{?PZa2[>x/?~o߾)eC{NS)vU Hq\?}M&e# /S@Dob䟬SgKRA zGz 6_nh't+3uXvi@B꽳iEK&1Ud"þ6s'+LD2AC螀*0a&ꂫ1ʒf>hM{Q֝yLᑤtXPJg+5W֢/'NE6]l_̶w؉T&y_?OWҜr(:{5g"zY(Q-c{Ab3 Sx"<[֕,zx546̪*ZWa{à\DU,{#*48@$q鹛R} oikZqj/LSJp'fdũ6"@}7Ywue}MwWJps N1ʟ>|YH"=5/̤rJ3>}i~Ԭ}`+ նJtKjh/|%ס_)�kzHIJy_A/]JV)[nEoyz >y~3|'j^v@CH."]4F8i`tƌ}|ɞXRj 9x$$DZGjS(ö '.DB+m{$</,O6ME;Cn NmL7p2C+3iҶ ynFq$^`QXN¼(5 ,#A+[,C�g|f}0 [^I=cKI)r_`J{8jH^^^^nWg(Y-{uܶ|}oodׯ_y{{cw5oMjQr ]ct'x]]OoB2,x/)0-iW[qSgZB+ e 4)wd\pe=I!uƭՀ_{uګy)j4vgJ*ˍr3;'qM.Nٵ7ۀ+RmfVm+ܳVW 7LG"g[wY-B͕‚++UE":=]v ?ч!KN[炗N/<ؿ1j)s`iԡ4DMnf>%^mvXhI^P0DaH, f1XX*|Zƅd"4^1ҾҘ'zRhp`QGo-S!Α`g$25,q8"=ྭ׍-s6^ϵSP~߶x얬[&S,z. ʾ=9G-Lc$ -Hn6Ws)mV.F.=JŜSN@gUBqhPbZOqfBT70ϋMo` y4Y v'_/m{k_89dJL+nz#1WEbeL iٶF{ݦtvJk|6^sfawCwr , C420 S?0ǟaOˏ3W\pPt\0K)W,gP]НyPF͍$ 7{'F "0).d$D&pp^ Gsf-�6g$~G 23VdubGaU MI+;2MFcv]V^뺳nHU3ooּ[(I(2!|~nOx{c{yHNЇF+M41͚NŗNQۃ�. ŃPv"ʞAQ -ͬ^>i8Mt~+*9~8.yO?M5 ӒV|3Ӝǯo|xF~E.eos/5ޔXƤ} M݀]UY2"it! )lMEywh <j 1MmrqIpaJ7pcx8n,Kz/̮E#N某@7h jys zGRgyƹ*Rh ~ e6fx3ʗ&Rӕg܈@P~`> Ȉ-pԮ4YpVF~c/oԱC "NME_~4ɵ6R%F]anBJm}{}:eY{#z&ՖhCRws٪Eo{5qiT<]O?Ӈ7e\> 1 .\KY LB5w;ev)Zоi#[;HOG֬/M&]-R74IQV%ᣰ7A u.>~ztх!o֚JV~|yƺgBNދMT>L<G[-N)S;z Y'<|H/?Y{1+z[&. a>>Fd ^W^j jU!.):bn"+o=g֞0'|~7r,lb/ F^)P&#Mh,Wb\qv:獎pY<?|[ ׿o_F"+ \#J 86XƸ+T@IT P7We]{VٙN@B Zxv$9\?}ȏ>\IO^Lu@iR&Twfwx55>ZESÅ(Zw[NumCB2VORp妟5C�:ۚ$(`}kԜf(..'^~oW~RWJ/f+. 'h˙-g`T6+=Н',&i0k*M2ZD~5n"$wi!ySgġA/ߋ^}g:Ǜ&^uWG6C:G;<ի"a!4õ7& ?]BI0zCd.1o}7QûJwNy |HuUinEB@}-ݟ\:.T4-F &wnA ژb ?}YN^&~QyѦVH3y0/ؽgSW?CiozSbPpXn9:}{-Ԗ)X F#J^"Ka: 7|-|d8Sb^|o7|jP )u7`5wtO 8a7?{iDiHq{Gl#r\,Gf(Jh )-МɮGazVrP%Byu4*){F=/K#rb+$n;Ivjl0dz7`I _p7u2nLyy"WBwȢSzg{;׿)7>+^ iG `y5y*Hurш]`kzn{j]RbM`6];:a2ǒd:,)L\Fug}Ӡ]©^3㇨%W6 םif0ʮ-ϟ_ǝi|XӍ_Vmt}C{)E~,4+Pj;Tִ}7Gz¬LӕO&xc/*_-+Ҫ:i%UzE jUbZg-}u]I:]1ޚ(ǹtsS\V>mizCD#ͯd|C9 hQFU ebX� 6Six9RzTSht?DpcgFWJO/}km5j JږDq>XYqime9p&UTBe5`U㘬k:2]T\) SԂܐh@h1_{=\U=[L@6S_BTИ-ՇnVKE׍D<}vzۗW~m[cN;9bZg;+pC =\ w2ܪxP{68(8Fڮc+[.Lӄw錓/_v<r_EmrI/H4e$hR,y *Y64-l4֩nUյk}{z"d޷+ޔ,%p5Pp~Ӝ> - uZǮa) З>̤:C(tW tY;tbBĨ}ٹ⫭Ɇ O,0b!2;asfR [ 5Aȉ*LB4edHg-�y! {0<:dЫ"Z0qIE0S vZ* Lط@xFoCcI@w`83{G5E a+)[퍷ow^+0l1ȽЊj}vCxnq$?+jJ$j`IZ\i=n(hۆNͅb"d)P캮tUYط&YKʜLo^y&49PtԦ�Bho\M^qt?Ens/,2˅(%:eΞWֲ$Ok zQ1DCTv'GE98ԑRUoVFr!o }lp\סf?TtM0[6-LC*08Q UNJ Ƶ~wbV. N6&;J ~ s 5?C"f'})8;GsIp 䊏0nc/Ccڪn8Y;5t/R�xǩ;Z7ZmZNhET?Q`%CgM,ւFVNp;ۺ۰1Z,zS[KZS5z SUYPp?7j7ǚsmպm惭C5*k3~BSSS+yhHa*u'eRD_Βk(e7pGP] -s+[]ɽh*Pt!88륔4Q?4I>GD}y]lhsҵl"FdqVA!Yc Qm r` <q ١ͩ\UT g;7㇛ΗV7k Al(TqN? )7UBzM#9USI^2mv,v ]{dB;mWrcԆs+9/Q MD^ǿWuq lPrb;cp p!#0M n\O_W谬u{@{މ"]t 3Y@O弸R+n>$Nyw `U΋ڇ~h4Nb}TqTԡ#f@s6%)%Z`vF <+67Ja\mǷ^׍`;Y 2EpsfW&O73a f5[ [)lYg1),v4mkf }hۈfKTkKFT8^1b]hMH1Qb2Oض˔T#)I4Fm4x;$)&IQE쵰敜Dv%ޜC, <053սj$j_.STc{0;sh&h<J+qz7h;M]X&Uцfu >ۿBUb;!5+y߉)\+Bn7f˽64+)7a&l7yStx4ڔ0 {}P 7@<J$R.6>^죓{F/SQG66l@|]{Qᙪ ѵk0^P)%'2-3)$ n/A0D=hUZ%Ҭ Kdk۪r}җ- i _ ۺ ;F΅}C3dX-$$*qDއ^FQj֭}dzzCsb0h<�g@P KPLmrF _2Np!1ǀܴg\_otkf8l'MyVÎm "J-;r^SZkLx3:)xu|(\ yp7%ܞ|xiUIP,S]8XVZά\w>֥L PM18##n>:-kэ�lOtQl'-~hy+JR{kNӬM a 7"[AZ>tK|X@g/Ţ <t\CWGBAQ B#7ƦVZlsIR}Xl2OKrp.YMr.!:3iS< zhٰas g/xJ6۲0ĂT[TZ\{U]u } n‰s|7bޝ ]vB @ $0g5G]lNEߣ[ uj Z+V1,Y $LQSpA˵2-:cɿ}ߌx>><,CɍQjYͮjˬLЊ~ћhGPGƶo޸,7>||VRΘ<xAi];Vu"AFgL޻bz?o(e.rߩ5(AO%S<6OMA瑃$@fn=#Xl-Rz+13*hgQ? E6Ս&pgDG%dQDAzffewS?]Zf]Wq<lFq�g+ k[.s^p;*[)`h+לVS8t&f2PUD]amS[z 5o-.%BH*( ZTkg3<n=E&C=hAt9a^{j$> S ^wUnmX\9s=Bzzy"%e!W>�S~>Zp9O) ~1È@� )A ?1g5=2Q:J6V}Ƞ:RpXk`>8܇mx9>x*pvY+/m1=+A Af.*<CDyD#G`: SZh =|=:,*y4=F~|O)ڐY/`|GhmOԑmǺw+7* zF]G>tLvOw UV%1Er,Ф+WtGf5jf%^aRi+U7zɠ:����IDATCfQx[m KPlw;ႏPwqr=z((79:aaEe%lқjU~r2/g161e'Ox!8GOi6fFڨly=ӌnI{PL-هFBCH4mXQv/qx!y3x( {XM]" +9 :&ɡ[ob1u3xobrABT0QC"ؑ^*e&;^74yyFK'~q|~b^Ok}uWuIoGwVrS,@W<HvBw9$%FT_#Zy=�sLBQo!<~m!$aі'OƐozoArXk{ֱ@<iWu Г3tC*k7)kvyO%L]a X&WqѲ ;{\T~~0nOj4q7گFsuhyΩC+a/ íU 1XןOɠ~Mѩ,:UJ&E;t=(0'}8|;CSNƝ[+lB9w�1(*#W[±W[QxHJ1]f-x\w1Ⱦ\ɠPC?Ǐ<  drRPw6-ԙkuw^!wPv.NZE$<ײZrL5UhՐi"xAõ`z< D{}6=mRj pMyC\ |Vtw4U9CҺs5D\t~e쬩:>jPQb^Ub&97G F f@12M'Ä%uE C){҈AApC0 &1 <77hY? D> B}!$u=:"8 pͷ}$zo6ᙋ:)"i{AۼWPz V5,SH6t۱׷ax;?dkL4U|:9o$)e/GmiPD ^e?}?3| Xn{H#*ٰ1S:^Rc)CD<ņYՎ*}=]# 7%K9eq>2]L)#1F<FժeD(Z=-Ъ&`k]w XL=HK N*-h.LPetuPu `hseD;&W3x|.+{p(]W!]9U#u�L,}&ZwtlwvdV^Ngũ4 6rʬ1PcB7Ꜷ*<w-Z\4>8on5#*?zZ;k8#J#w65&}cЫQl3pT cF F.2ݸL攘Bn*Y)l{!KȽP\cmXf~ӏsesľ ;DcN5^ybp)L˅8^+[͌QxmgC`$|J,7R1Rp :*7Wu7w|<vjuL@^MsdnVb[N:(yCR@nJGez k DtHL Rdꩿm#}l!u]JBA-tzW9PV+cLˢ+}'V?6zL.!tV TjQj:4M,d꿢h60*fbv!No˞"03DpC'ug;cc Kb4X,79@ 5( ^Y7W $܀:ݮCwa-8'C1^=ۦʺ:̉:ʰH@7 Vujd2wm7XkfPl}yyO 3vEui0D>ԪLmכ?n!0)"߾q_I}%vv@drQp☦%-\>Hg4ծRuVO BZJ\OVq{4"Aunbv:0|`Aw jʛNs·sݖD :O)%^>~dY?K=6V@ӃƺֽAH1ITD274Mts ћ\P[J m)EC\˹G6+\nZjm3)Nynj_239ڴb92'Lue+;`t ^4n7 =r Ҫ~e)AZ2$^>DdEՌ,`ڃI)bX^ 7J=Sq7zkO|ᙧ7UYd[A_tP+g+1MךO~$6=kEw)WJI x>laGсFyF:}Ԫ.1~ΡRUR.{?-5.8C j*QZ!tMhAm 1r<0۶B˩jqJTiiGw5Fa:SXhˠ2D^IE9!AsBkh/Neu8${PbN݉EvXlt}':ajYLi@NÎ&&aޛUEQxa r@V:0W {9 .: >IJ,\̶)3=3Jgk:T7Hq{y᧟O?�76cIO*Ovb4_j1t{ږP-C{�w:30;aRzr^MQ!EKZNntWFx 흠'3Li@ w\*7@BGX&T-Awj+F B0;i{9~a:?l׋esm`G0vJ{ne沨cjаHmR*}p!.>ѳk-x~"E@[=5y:,#_Pw;KPz(Fp7ebf=;lj!ۉ*QJ>JFTC{Ū+Yps}b!-`8{ʱ7v60MyK_.3S!j35(.znOo\ !!p7FkN)Tp΃w| Ϗ5:4("VB:#wZa8XY 傯Bh^CN|jYv,f]5甍!ĝ;ΠBut}$zL?O>:ia'.G4Sy2'ۃ�'Yr6dT5;Z^٤S`teЎ3e ]`Cb.VUSV(ް=v]KWjQLb[a7562T'[LMsbgTGu$ye+e:ZIA͂|b3A2.*tuDv} Nh�ļN[e2ϗ`kz;ꅨGdbP9N>]@!LJDӻ}iS53HVfk]zî[Q (U"^g)x4mZ{5g2sl+y^LaFqv m)^ NkA ΍ds᜽Hh.UKiY�;NA `r 'iyf“K@EŨichj{)N`ԢT[3~gK(F &(nN!ŀ }ӿ^a+:2 C4 (>(wn͚5׈Vw[5vӇ^X`;{u 7:l΢Po&UamUz2~k-JmX1G8D5"qkRTYD_mv>tr `e8Mf5 t@W9Z 1YSBmY ( E'/B}F1ù$ÞE776/Eی݀.t yB0ZĦ\Z"/IF'J*NM#`ʫnB {cǡC! >m{;ֵnUs3O7bTy4l 8`q]HQݩNs.ET 1ȱAّ3ǻz p]mB7uec=cPϣsn[hC zub SdZ&Bm/uxlwJ/ǐXU5 s1:5^TIv 9RT2lHHĆfY8@<;M4@WiҲ?<5"SeJ{5iz]^5\u6AĢr~rL}XR uF)Q m Bo[*V/i<}8Fjm."}sn1Qke;{ wm{2n{BG 9;۫NÃF  lrT_ Sfsi8Nx|uܮ1qM8 "1zZ)1|P\A'mD ?;󼠞gOjwdxmꠝa`**D*T4m\b1M=Z1h1 U9q@@`?֍sS M"�zA*_~<؆{j֗[<poOwT0߆*P],È,jkoq]y|F5h3F%|hܶ#*ae=reY*bk\6~j/_ïiꕉѳj�8Urp2&ӹ *-<!Qir}0lVԪqPVy]O lD}t@:ht7p)M)jL +̒{<!G|5ED }x !ΌF?^meg8tڪAtn*1vu0yBB@ӽu΅߾|C&meok6<ƪLAaNm;{h@SrGAT&3^ƅ{ZZ.t^%*aCl?n% T;#4eUb py0/;{|y5jqێ^iCaRXG,Uw2Kg 2o^W|;ʼ\Tޜ=^XםiZmj.6t6 ya%me)E7[1^dUg)<MCF48p֊h+e+vn39̳] VdX+;U)E!]o07=aCT=lb;@a7NXXDnsŨBL:sArEGyWBs=ErXO/Ϫ/=eRwbz^ttvv=7|H;.nZk{ë'hm\ 9?;TȒfv]%ѯ_Ք͔=cV=sIuu%;f<Qzj!G<hAVMM,m�ݖ4޹~;=FŲ폗 EQCHdb+]9;y\U?k%cc*Kz9.Dn/ٌۖplϿlF-Ƕ3CևZ)@z;p*.ב 3R5�nV zn6rT^FfsCх:-o 4&VuWZcHt_ϽhLƨXaЇ'{I]Mͽ\ތ0B'>|~eyD$5gJ4F3`̾WpMH$OJCO\'d \ض>yJ1\W㍃> J۵ZQ9^9Dc4q9%A]`Ѩv~Z:,'{9wn+qۋݩ-kAp<R<<R EMVj⽏եYb}&W^AŨ xh?_Ms~[}؛ 1}`l%%\juL>Fѻ[krl_e}y{}^\:YvCm&I~̀tھ:2/W;�jFݶnsvkEqnh0!Uk"hjjzbҽ'qP6>~}k j2 lM 3- }}5'>}ħOXxiцr#cǁvB*ÂLʷR\|J_ơ#=0&37Eh+e'W}�ca<=NTYfzb4P0LB,RaUةCƱݔ(~荦PA "Pۼg`&ʜ�C_{TUAj{QبuMcx_p޳J^ ':|{{˗RUwl-Oa445I21t( WU1,/GB owtm]ҩ[nVƁ9FN5[Ur\JR=&<=%n~~&@υQ4-~ 9셭:Wi{! IE!! k<ˇ /wj||iMUջh <=ݛOشT͍܊~vh2NG[|E7uT 4CJDGgd<ݒ4iU7nƪ�C)`5܋#ZtjRX14]EƎxE} �YOT3M!&ir4<w6;Cn5EvuUg~_^T/τLg^Ɣkwh)Ջ2(#_H>ả凵v» Z wv -uʨ+N "t)c'*(j}cjT=}-mZJHz;Ӕ4zb@]ѥ///<??MI=_.燪;uGAoJ)A'4:JkIA^ExyBZER7J۵+1`N[-7mo'5xadiē{|'ɧket-z퐖ÇP$Ucx?]w8ZUgg}cXvepunuM齚xy7j- H:7BԆNǏ Oeԩd;tl}!gW-BYojtEaÕmX~:Z48=wSZ=?OՄA@EEwތ,NNϛ[Z0m H|xe獯t-ۢT.Gy*fl=�;2]_ƽ4B$95H-2_M6J&CǾ70nß=YD'J#Ӵ0ωNS0xVrn<?H Q[ +)Ga U o/yKՙzcf!ygZi֋.[㾮& 3GҔ`mp]zkSۏrΩ$ ZfQxql:lj Z)S ym )e3]G< !(>BQpʴ6$͹ex҄NrUb}\BQz{wB}gϯkdnP]'q�(p<ن 3A_-p |w{!Ø[ۿCd4ܫo@w8n#ɰ 赟fN9QFEvAF@3my9f7fE!q4#8=8wNi7>+;_~-�_Һj2mBHto'L4Ccs%W>nmybj\\65*Zô`{l8p7tJRhU])Er.Ԝ >qYN<Ҹf1/BFl43 /Z:87M3r4J7XE@ܦ( $=MQz{ "ƀu4>e<*4 @).=A깺tN=*Squ2`*1Ǚmmt DkEh;J>0g〲 )m@Qk֣ P h� vf>lH6TFiq! u{Pc{ 8׫?iy] }_oo<֕-o%SZfQ$> 2qv�`̪`a+a6o:#=@U!qx큄A)u).TJy*ɷb{]1߱T*ҩ{a3~`ϙ}!I%1MxRi&�YⒸJvC\pPV7{f jmi]{0Wucl< |H<c<{”Ir> t=ZiTn7Δ&;w}ӗG ymPsgZ}V_녗mO4תAA`]Dp]H!RK!! GX׍ 2}hZuUe5Ub8DaPcbжav-AG<:TFXDF}9Zuˀ"R@G^^mGo-NPT~ۗܿƷוuW С3L5#UZe zDB@ |Ez Ls u퍯_~<O;R1�i8$8%T8 3]`N)q ճM\4.A)`-AHoι拪Jv˞z L rQFy@]5C hT߆vkWF La/BiFC 2>͹ԢGӓ2'~i0뫭~-+.a.Z�q'N~R$RgrݨjCӼ,侟P%~~:_P"xk8&EKI#һ*ZS7`:0l_2<T$]8Ǿ(#\C|4!MTt'?F;mv�*{|HB.HhrI _+u]ٳFKuO,/7?sJQcG-i 4jzˌ$mnN`mh6hU5PhaжV3O}U4^RЃqde9T8gD[ QTʁ82w#pv wnI%f>؃4# 20FI$RU Nʞ&{v=J{C۷7uطJy8g<)gj MbO̊3.<}TSr9ʫ|EĠ vqg!3aidSu>[@'}@?@,�fC=䱖9w`"7FC*ٴN(e?o#C'/9?&2އ`W- |Wr!o+uzOg4)ݿ?_\UQ]*y 87JKqMϕR�϶n+qm.9g}(9k̸⎁mޒg>j?-tNǣ:t8tGDwdH;M[soԖq%+P, G$DBHԺeO!ЂVT_|^BnZI{ <CslyWS&OGD$>X[eP0b{'/Lb:=},S xDBA=J "4 TTE[@Bw&B*s4]ǵ*]{R,2{M]IM%k\.R"߅\y:KF^֕_74גpF+VU@ІSR]'ҫa:^:O׉7ϯ<-pegHGRVU0M?>}_ msK~mh㱝+:CطF-w^Z: mÆeAZIբL *R0F~؜7VXgVt(VrzԶBiAt`vc$ f #S FTRTCU=rk1zĢܰTT<!E|'L0'<?8yl/s\R4./D=Y14^moTڶ1h-]V�ax\j5rʰlNLQw^ "r7)Io}!~8ol˩z: j=ںKU?qR [ Z\U5ަ^g,k$Jo O%^-Zy\t2m L+S>wc=95%sv;ltTrcojSYutӪ5u6u B_1;M}+UzRϺ݂Oi L,~rϠI!uL!L0f`G$* 5rP>ն/g-kQ\92FOyfL1Ǧ84+y!pνh 7z+Q &=MȀQFozwHF&nNkoF SB.ot?Ġ 4}Z!=$ݫ6NhUy{f?Ê12Z'o;eF{~g_7ڀd>t{F}�%uVkex:^DV0sDf/7>}Ecf/+s_7jv"F\6^qn(jX5;%Cv) ZI39+b9NR9j1Tѫ8^4ybr^Jz5p{ dtvǡkJBCZhx?!L1,P b[^Y+Dٿ#ΜD1�p.0ȼL<=]qA^o<}xRwg3UlkB酭 ﶤoڃeVlyg4˂;zщVm0\O%LL~"@0gy % ٤cU0 f'O TDy):OGzH^҇ǫ{x2-)*ذ;(u"Rlf>3-ی =+=!t0F(QLT@HQ:3_>VfTTSԦ1 J<׭vgi9wÈ s $!AO_J=K~t(}w= *F�`6 R8.(j*x$�I`z:2Up xAdhUvmq$< 6˖^ⴲ2@v8谈~>#D].ܞ8/ܞo\Wŭy9asZEQL^hB΢qp,a9>L=أ4? !1<p\(Xe_}{cJk# -bpw!F #\#SC=rẺ ׷; nQmx+UQ%~NJefj,/P 4Y!l&TsPmmw]f=W$oژQen w}J^ە|F*}=si߭v[.YA'"ޒ8)rʔ�ZRٶuWXnf {B4j?kEg8eo2.rI&_+pE OPbB0L?`MTO9gUZ6<p~b6)1//Єmo1YJF+&)^AGL)/ج#iI|z~#7>kOOL*qХQ4E>}zvצﮃ=O^*cm/_cp]UsO:h$"KZ sI \K3q/}AE7N٪#�O)1 !<B<6t0XUu$\parhG#Ntdخ^}�DǮNuc{ɱoWG1^"-z9zWީ߭jC0^DŽ_кG?|rrtl߉i>[㟷v5FQ|d`Qx6Fo}evlew)Ba91&' P~iJ;JNB?U*;b*uNq ??3><"uA`7vzJF<ۅmZwK۟~*`V,j>gru;6U^* ,.(ވHBxZw~]3,OLagF^;V6K:OVQz Ry R )*Đq u2ZG ,x Fec5jjb0N }GMa))URCS!AS^~rBMe_AnICm;]r�"qҜwT+龭'Iwa{}dNζr&8\ (9 բ:sꜳ_|4bpGSh)i:9GƱ]K(w[({C 7﯈+ёfgmcesG]4\tJN.駟. 92M iUNc#iNZnΠ2EG\fuފ !z.Dpww7DiFf۳z=ri*P8iz+DLW~&C[>q{+_iTO|x'|Bڠo3m{SuW$ACoj:dɔ$$/whAc+&:X(mfEmԜU/;=7q3`id4KVse/)dTBeh;\`={y{Z2L`fC^>xRLǡѕ&4qJ\@(֩Y|=݋:Q5( hRMGOjBA1QFIET>{07qk2s Ъ##5be/4qxp!;oȈ=jZ B8fM@Ԇџ>}2ՍO^^>\fM]QmNe9{S*TRL)pl68T}+κg+BCV!U݆ }>1LO&cc_)p?g&l v/|-%N~Tu @ >ޫ#� ^߃/K}Gk }wDъJ zvSQiW$x*$ЬMzRWj(=Л~J^zo]g_k<Wy3Dz gӻҍod6flx- hEY1i]I?"J=sDƻ8hhp%W|J!%&B3qlmgL 0"|b>"'jngoj&8h'u혦ӓ:Q__.H~7irHsbWr3z&z2O\/yk;185ىϟ۷oY^km}KhsF'9Oxu�2S })7\M?'N6)}҅exem_8T LhюPNqHT?5qN("~3?^YVX ٛƔ@V;bcn5|c{]I 4Ѩ:UrL=SJi)~]W"j[)}UgU mLeBY{8"8%ՏJyRF SdXY$c^C#ԆMe%q{|s�5PT#MbS{lZۻ 8,@\#P;t ~=z�-P <fUl.O}L49'pD!ByMr ނUi^~οno߾oz^sy)[OAX8"K$a(Ux9}Ӈĵ U?cE trM'A4tW` ˓e }Ie F+tWUCFk+}ƞ!8b+'h9kp礗S:S T]p #нI`n2(9%^߾Q!FOUN-:MýkA)˕!M4L�}Dʩ,fTvQ었L e].LS<XE:fC84Ek C.^^Jzۛ`͒;('yt\rH^vg$L?1B]GtTM-ّў8k:O .j*T;bQ!Oq{bp?vL?`_ls?~\o~E;#+%L k8 w'|~x!'^n?0joRX̜btidJAp(ڴouhp!i_ۆaloY:wcBL(5ģB e+Su- pBCkuF ^~$ϙ:p '\ {"C<e۝lh,:A7HW4ޘмۍ]/.Z^zٻj^x=/w3 fvQѧƞ̀:yOz0?Mt4{Xȼ 2䠛ǠX*w@�ATU�˞оK-:7N k e20fǻoxW n|"bn;Ĕ)(x6 y~/CbW5;uH;ԔպDp赊.yЕRض~ƾ|l4N"ԼkbU:mg<yKL"DC6~Ntʹn{*||MD˱oBh;B�I2kRgȄ 4>a-o@aWʁ>EekcM(R;þ7Mu<m[4Rr|}p&ߧc0y.i̷WȎ߹ /~"ŅXS wHiqKdY&hLu۵r.B"Lt#\k){%JTۀ1%ZD0q{ze8#NB?7>49dF7}cllbM;l :>L}2rSMM.e2vpWuӁ',wB'͉qNI'Il "H)*lQl_fZw �')ܯ9w8Sc|~ u7[q=<NV@|5չ,WӟN4.n.wz#a\!׍`ܿh ,ǫ{, F=ӈԆp0?EH̻Snսt!5ǖ2=p  >>KuaSnWK;'|vm7 s̄ɓbEXtTqJ4$-#yucxG4ܜ]yTZikX?N$xnZr\A&B2b ԙ܈N9hr wh̩j9XC+ -܅g+(ʛ?tH2_U?lڇz4ސ^ цBۍ|#Dpdj0Z`D?}:Tپ>l~nCp8߿/7wE:]\N;-WA急|y^@-u-|@e>\_t R5~75~D52D .l<=QMaW8F+:z"vq(< j}N%F9WMt5ȨH^Sжo u ~\aHtp,BFdoC+1{W.ݞU1)LgY\M>1OJi=[ DkWJ2QRǍH4zZW E8i.(/D=]ix<}UEb4-\3 ( ΂J^W/{RE] z XUqGO3ݼ!x8ݷ32e_}vaХЛ&2Sǧ >*2GR":Ŝ+j( F_)ʷ7|B|___UK[8WbyI3-g~ijO*KI^_lyXL]nUKrǰb@GBK~Cz3H`z{AU]x,lRp<*%)MoRc>׭RX;D }6CF[Q%H : Ҩy%̸uhR5pM|KL %f{+mm@`J3rt5UJU{}>,H3Kk#°疋]gTk E'lLF"=(!yyB  kYE\ņ&G& 8a|)F ['s/QEGqyժQ)(2 OI7϶jZk +xF)t) JB:ow q g$D?Ȫ͐zu] AMu7_+=_~~1Ӻ$psH| T(b~^n,Yx ~J^7=}$İP-5T8y0l"Bֶ##L39' mpcîŽ=-hM;#ѱiR{wAѡ_"w8 p"xR D NTuP}@-0rǢth8qx,JdOJP�2a=N%X)wJU#PGÑ p/<\+ (x`́)kڇG7kctuSDZ0JZ]\rj5ʮ[f~gvMqS I¯G*< UZԚv q6  ~ՕNawl0 )!xD$4g'<kQNoćTV:^|?W|rx(fUR<CzGcN"|4>m'F A[nV<ąFo/Acfr4letU'uǶ_ 4G~ )x3Bэu#4׌5i;{pTvI3{/^mO~Zխ i(٫[EY[*4"NMUCwyT <SB" /^9#`"WbSqstc-O3t؍>Њ0C'ۑ* Oӕ%,H<W~Ӊ30of&jf(*:XBˆ1<\2"\N qpʠ^5p"z˕TkX�s2mnOo?G0 zGpJ0Ro7 XB:'b lEs/w"0ۺF%^ohM}#ו5GB_}djϵ5 }7n|_~̗w /|ŷY`<41%(Y޼">Ñ]N)zRRH~5OCM.)5׃#D|.<$r i VGmzgurVstKba6t0*Xtהpf!R;y/H=exNnU{VٛZXOhFIr+쵲i)IH.y4jﷆ4! k.c0wVYj CP xqb\F,!)E'% 5F?? gξg^+]aaGΞfeQ tJ/\nW”4"{6EF{lj=/!Bb@5!cP>DU.rT PF7 yD.a"USܿU촼Ǝ_4 ":è m[ARi{9{-,߾>?6|};oC{<Y-ߣsHe~ӏO<]g-xGR+_w~'WY⅋ߑ89<cDzc^7zǬe ڳ֡jLW;y4:ݽg^ 5McNA'-.u:7g#+~AR ;ْpP̙7�Lorjol|)bU+ۣ"Nrh^t2+CL[{Í2O/]o>gr<? tʷW=#Cg wrxZrgJO̳Jѽr\x~~?ݸU ZNoH}%!q|c/Ի6W]3eZC:k8*ÏiD eD:XKV~&D`'>M4͝6|쯟?>J`8.i:v.kOL=D槨B2?Ag P*V|{/+ ӼN%`<$΃bVL <=E)!B|pɳRB m3Yz7j"i+5=#t%F] !EKu{N5/|'n=;a5$B\7355AmfLD(M'ͦx>%}`P7 ƿ/O? ?~ȾumT~t`qO'+}Tn||)hUogˢj~<} /@\yzǏi+?oDe;UkwKB<_#[J1D 55 .x ,B3~\W,|"G-'3T!Ēfć9rM=1~v�-t"$ Mb/Wk= +xs4ȮZb1)%ty߿r{@,)_grƂDpGnz"y96xM'>~BmG .j%NeJ8qZ=eOo|Iǭ:yV a衰JQݪ}1*׀*:yjPCUM8CF^؎!] $OީR ^ax~FNU`UOLU]4/z HI<Τ#QͽKb/?+hl/"&yqL3(.ܞn7$FA+/Y$IybsU53w\+2)2?W>Q0ds 4PkfFxQ(2!)t7W,ß~v4+iF`u+w='j1</٘ S,y__x<|uϟ^цR{� 0I�lڮq"if[wF3]5 '?&X&8Lgt&ǓVc!c&Jfky99FR$iw2hӉe03SFWisRvPjÆ"h`ה2o U[>SM;DШ>6xں2(!)GPiFh}J郢%+$I/h]3rm' 8D8p@aч;Juu�`x0F 7sf:m F! 2t1s4mVO燅y2iN]Cg<${ ڸr~؞W|w}5t8f ,Vmӏgۿ3?}Ӆ+ŸWtۮ/l_ CSOq^?ꙙXoG2*ظL}4ZvEmT{f.>TJ3)/H0}ϜzDCC[H>B&DȩgF ̒iAtggϔ럸?~ϫ>NM7:]C-^>6" `DCRTF󭎸X�Yo+뭰ޮ[s "@^X ᪴|0陊k0HY|#ox8_]omzc ۼjUMPPwUl GvǁfIb& qΏ{m4:Ɉq4AT:ׄCm7=/"HΆ5iiƂDm54-fq $;hԈ1UL#o:3iᲜ8SJ`qXc(A<!7 26ko#(<\Ņ ri2+*}'?sW^^_৏?r-7>S *�?J\(݀0Y�e jH6`N�[i{'vh_Loa883[M "^+2:\}&xiLD{3MIHo|8SqIožaʮEw۟ aIx&e#@@D BhC \C;tZWnζhH:`cQ8"Jm# Uto~ûwf#~~xlYkk93yҼ{#PP,N)єY2<C=!X$SBkw n6v84Q'B#VNyI\ )ꀋLB!4YF5vILZ;O<-4%N);XDYD+y94^g~_{~ƍm]|W>~kƿwZnީT$ yNyGhSv}pp90ٛp?pdڈ/"ޒxhWc'@stP+FF'=$6>:u+4aLozbn0D&tϜҙ(i5aQa:̙o?Ag^oBAxYyӒQf M0Ͱ$LDiIC'24 %qz%[d8R&F /ew!训hԶķ<q^&ˍug۬혂ut*BBA^bISbJUJcN&8bgoj!TGc'Nr_Ĩ9! )۴Ws|Yl/iTAZf$˦, ohȓDN'rξ:0{2bC@"@ZBN? 䍿x_7nOW3 ( 4#|;懓ݭ5joy|6,ziK1vm^iƴspJHe8I5mKh|jT>lui!k#٨-_F[w9AXl*JD bL&3?ɝ.|xÒȩx=?yčW18 Hn,í#Sf^y4 0 4LVFd0 [Y v�C[mc vH=<L_#mŘbKCA{Ȁ ֆ˳L6i ;mƍ�H/.Â8Bf: JˆbNy#sS"EÉ[TY8]uFi;9t{\b@䩻<(ۺu3iS?\Dhѩ#i?~?ZE Jʃe!~÷|W<>>>|%?\X͈xِSʕ-!rݸ^Wו}-jo[Mx+ё!6(0JC@TЈD_ts6y>SFR%H43wS`H 4q2edz?3??+/ϬPPL*QсJ'3S`Z" r<\iγ=id$y!յy^Fɕm3JT-t裺qz5~ biՀ6rMNŸLm[t;#?l K? lKf 9qs`GsGi#Dɾ) k㔘F9a<OliYLWtwn\ܥ)nh/>X. N$X9D<_β0eUR16EGbJ-:&nҴ2`k?~HFeI<,+.o9wՁϟՌL?O)s\gm}[u1g>=$d)4 IWVUr3z.#8"BH4IL !tm;DQ% j229^d+23S\q!ɂ+'<<vGϺ;Ϸ?ȫ>scgծAIC'&8-YDMj,  BPB< N:<y4[oHc۰YI+kқykd +!|T#VϸJ%'O3) V/e߃nF$3/ܾ:ӛk+H1;36&U"0m1@2Bp:9Ȥ^mLK6VzPNjE+y@0s0k5p fe~l4j<j/NBgK5IB^nJ&b":mzƐALJՍ{+~W7+_~aw#x@Lxzd 1 %Mpvrr8''[Bn׍wean"+Vj<g �ƔHq"̾l$8jKճz!R^v#ʾ?~WwHk\Nw|f4n,S&gEb?=?~O館̹ŴVƤt,ʔS z(q0-3c$^I="3<3|,O3$J\V U7n)fneb FWRP3)^ f!uUZ+DI<\.hV:hmyqU3⠪RPPi*wsOH f{I<v>i3 0I^U^Ziz3ڱ^<Yy<M7" 3@ڛ<e fTU+݌:[eehóي'(u#fVilrco~W|{?_/xβ}f=w#,F<߃>tms”K{ iuE2\y"I@_ǐg|(M]͎:W ޙ୒cE?3qb{}ae~bNQV +REee<_̮;J[g/c!eB I˂7]c  _~1t Α0l}fA*3G(Mw;Ex|v`o"9U5![k#! `iS!9 }utlMhCݎa &<2ciJiaV !L1V,.`NB~HXoilCQ4%6D߲ppEȃ&Un3Mv7|7OO-__伦UG0t B`OYTI;%;̶Yb6a4SN(2~"`�:fFQ =|уCBdx),~n'h2~'s+ Ѫ]"!Cq )" r,i֤!v% LaHf}mIS&#ʠV } cPNٕڬ]iJwQ]oq7R2<<|#O.sű6Z4h:n^S]5:,QщNK.rt?sqE^IgR)TS6üc@ҋޔ8[ztRL`N{t|,nyȠm_9N!V"Q9R&6 D#m_WK~W\ Ԧ1SvYx-G~5wPt׫%(%lK6,eR`+[-4g7)wpѫޭ8EgkN}[5qzwg$ޅeoF?z (X+Fݹ;mo/ף& 6wISs5'B,L YR@GE6_;�.T+1`b˶}o웲^Hf+^)ͳ,|3Nw|R/D;RX BCZHHs쳽ԣNR#(VD/7b=n)avAh|}h`\%*17B0sNYopno�Nq#D?̄,PS:y)0Vhh\o{. s>1Og3Ȑ!fSΥ@ZvJp<#V] .;C)A1$ 9l,d3D]3Lg8kv\ZLe9P^+W% w,qX`o÷ 5OMQ(],l|1@\2h(-af%AŸݞO,vcz,Ghikմ!`!1[yi\׍Zn<p6 IQ;l+)/3nwoC1$$]uh`-Ram@ i[!(FFd)i6m3v5b xΜM=E{P?{ND&|"Dq@Vv䢜 S\%EM&6q~[~_;9OPŒbvmhC2bDcR];L ʨݪ2Iۋgq P6Et+cͿL7,{,qL&nB@`DZgtS{0Քw3x"ƣ!D[Y(ĤFřag4rCvwOˇ }?U+ڔ7ReY99 1`34 :g:?ښ w 6?fd!;:řQm_HC49âS^ DD} wr>dSp#C`΋AC@P8 䠌=Zt:ه PaX`zCXnR&{EOz<,ko^@;)A˔ @!~ͯ7Wc 22xf#c(2�%AwڈA* Z-f uڰ5",1 +&m2J{`1Ѥxg@EFEb`҉9MÑf4=н6:J� wzPnj?./>b@|݆dHy*ʦ?DQj|,O&%#zFAZ@BJ6Pa(w2LNsk+߳80ϯVwzklk1bwZb;~_?7FёNц}(ݒc׈*)$u؃CN(CPBh490kГO=-xm1 ջ~/%(ՙ&)/7㿎: f⨥zl4MܶU&g֠[ct ȐbhTc!":L3Or b=r׿k.龽i8!Lt]zKݨ/ x+l2HN$kޫn/PLT3m^[*sdO=0L[j11Q5Z0~X!^ Jj"̦%!x"#bFD<!$9K8M'4[%aBJ,(u!FӷE13Xk䚙R7ʺp[ҡ^I)/}Gpa^u[^7ZLj zҲ4  f1E`I#MK&zz-R&RP_(2;cn =Lds$y||`Z5ݒɎդa2KJ ᶕ{AJz%NQ~G a[-9Yi!h`z;4qZ,O<\N<^N<=<a/~z": ɓQwK0 P9jZVBri7J9XN&3vӏiZaJ 3ybYzgy[KyV<^,t땸(SCFBHL"avQuQCQ)E.gD7$١="˰^iJj=H2X|BmLU4 )L$ϟ?3́d(AS~׷N ĔWdb;e[)eZOo\6AR@%}vPוV yά7B䔼mhg"'_+kOS@45[{ d ՄXn\8%JCMdkV6鬥3t@U=0Es('P`Cz]y]Oo3lpZkBBMvDWx|x`3˲;`QUiK'̅3"'(ˇ֣+Q1oN,I6GEVcdT`+[i>x]70u;BamP\2x:pŒ L͙6qCX B%;Cزg$"10mkJ 0 6m֯. $L\L [Qo1r)%R㮨㐴WF $)Ū 2@vf)2M6t=ܢHF:UA*pyO|"5Ћ('d# !ijhw?l1 |P#)g LjД̺h<?׺RIp)ȣZwnfRTm(BbТ[4Ä́B<cwTfYZiq]WRzcg/`_ !c98ƇQ̷}yf,q&zuD\gy8 S>,fԈ3*=XGۭٷJ !]CbjB@=l{ϖҨ#Zlj\Wz\P1S7">mffe9QƠn;`{LsК:UC72GN91SH A1ӇxB ykZa6OUF\ }}$l?# @9 hc}WOL9WNZ:qbD0yݾvf,^AYfKV?4>𘻆 Hpw[l孏L)<ײv7k=9&@<h[=Z*LÛZMo]n}Hsi48 q9Cv'.031d{=F8!QMN_zg;uov<t7\^t +[rm\׍m7'D'^W;<}Dvw Pq+#!�VM2[G7Q7#-cY !oH2Ȩϥ<q>Sـh1e,I4YdHZ6̀M5:e^ApJ�־elk{ms${=HY7fh8fDJmAL+"AD9O?䀪v\6J)Aijt6,(D9(7nu]iIĨ=nF Vj5]{p l<^YוWOM٫6SJ>Ռjm4J3Yezk/ϯ|є><ͳDK_JZ|;$_ GO=|Uf\cGVUcU`S.u^o_yޜ&{% vf[ GK֕@R*W2(f^ܣ7}*ZD~ʙgsg&N4'4,jc>E{  Ah!M@zCAIc$$9 1!PՂmlAϧ]NYsWo|.W'ۯ>+߳׏/A|IrR;Run@HHȜ3y 9uV:)a1u+}(x)P$ad SކKP @قBj`cr2RJ!j챷Vb2:B[cL'zRr7 qputr~`f^__x,Ӊ&i1@0>m t{ < Rضͨ_xyy++>Lp}C>}gS ^_2uPyg ʽ6B=BC=9$PE^YOgܶIh#k y )9@RKnSd2׀?;[?iJB A:޺T[%&=ä1&Rm$Ebev55�vVǏ/<z痝WNwozG]7YeDSnzH & !")Oh Q#2bƈ=k.aGp}P[-ahPn]zd P!RΜYNP}^29dgKSۙ4&6ʰ<sVz@˜`"s{~<[2ˍ?~3TNOO֛6p`(4AL;:voiוW^/7nvy Ŋ[wGn7_x}QJWT575n*a ka_Nxk+PѤ}|]_mu ld;b_Z 8Ô䙋d&I"S4QY=*.DZg1GSXӛ0شIQtPk!hM/d, g@y[wZ5bɨV sXǀVZϟvwn_+ R|kA;u{A t{nG8A{c4u dƨd)d[(m8a Ph..JU2|?k!j ><]"$m(71m]fْ̭ڮ6X.;1Hi[CRwx>0{TD}E k82Z2패-ĩU6ʾgm%3u1<XjJ7Qho/+_^ym۝R9eR[Vu_Zb/[Ǡv˒#wZvmβ,^Q<]7D"sIʺmTXJRZD H҉B<S<&L! $nzFWU@T0UyF(ea܇X=zBE[\ǼWa]۵mJ(_#?Q^num&Wq ܵ7Kd8 AHH T[,H,NRBa6MzoBZ+JYo& #,JɁ=|㪒$BHAo tVSWeZox`>7h)Đ l(1Vnlu3VGtʄd1MQ/̇omgF(YhMʌfho)v~*}Z2{כAJ01zzc]mnWZWhvڋRia]7)"#M /.GuDZ!{}z3|vJi<!g۷;f.q遇L2,aɎ(IgPV,x xA]wZGJ@Y҉%GVX9OLa{-\˕} juqT]<Fgksݸ ygO?_4QoeG_+5R6̒=tB% j 9͖@"utJ$ N+)@ub6圂eڿ|Z}`Ĥ49=5s5ej[3I3 5ҭSVF3VWb ad9or441D0_SZ=YBEFEz;tJ-kV"[i z'b jzCRmЁZM7˚߶DUP :Vpp|i 8l+RjUc>ݹV>#a˚XBb"{8ř$ssdRf֚=nl1Ԕ=YZإGX}18]"BPԂ)l/uYtox bMulquc߮L/+~xY>?駱xL2 cܢh1SXnf{wG1D^ Nl( 9`e*/H]g@mʩu<3'уӄ!d j}V+.|" T +d甙L#ݯ<3a2qth!3!b1 nϟ~2w@LroWT;,tO9jR55ה9gq;^1[Ttm.Lj!7jz*<��OIDATk1eʸ^<�P'5y_T/~� j_}=Yٶ+k(͉)^x^xOg DK.ľﶙftaV BdԊ-űFi P4e0"Zm~SuPNσ"]iN6LC2O6<ЭJ16^V pw>;ȥn~|\D+yT"Ln!.jcF?tarS /cHV(v8d.ͮD1!Pvs,2e% cHF} [ZU:P%2id#F&@�D-ރf`r;&6~sw@6$3p" 7CimRQxCD36)ݱJHv�fcd0{m7xrP!<yvs~!nɺe7Juqw^ HG0_HEjr8C t?>21%d>o.O<ΧLAGj!PU6輾8hM[,$He9J{Nasai[;ArujkHRXf|^ R+fa ujoW׿}CR^w錔Ȩjokj!aB0MbF-Ae!'x;{S CV SV aĠ<ȉEf;g' ޣA6F#f](RFcކ}6N"18Yd,233s2ȤnN*"I{Jd ;7;c wl/4<FmCJIJom7:=uAaB)͉2ʺYkE}}ey &>hցۍU!pv}g]WkJB{i*>A?^=V_IւܶӫS2)F"|!/<3Oit|&3mop$;Y@%)r2sd]H@6 %n�܅<p9ZcP3UBWL3šLw j ׻2%8vį~5os&$c>nWp[;3׵~~&{kZ5Mitɦ|l@5TAlvjWBhIDdXRN t>pafa&%~blp-tAJAeHsE:<L3_,SF&me!j`#<QM:*P-mXE?SVүT,@ô�+{]lxD1 VJMT-HrLVַ �Nv͗6cȗwkk \g>q3|O,21HRϯ|V^^tcf )Zh8FUBr99nNLB!V-kmVyin!n/7H-`jyx\LE2UrWYD4 K̻%NDp"?\^R^ϯM j#)<OBBql^1ض)Gd,&[&? '߲Nlʀ i$7jo9i43`CQ+.h`!(C"Ihf&Dkg!X>ЇPZxe'53E{i /)_2Qh}co>BݚEk7am}mw}fۺSkU`c'\@ ni0r;^0EJ)M'o\�W)E%7\Qx>wa%<ă,#a@M=P7nOXQ2IJYR5 >ta?Ror謻2j#k㔔%Xr ؄]i%$!X8ɧS ʹ*ړU##cRBb,V16ADH"LAc`BXz`??;~\6s|LˉosZD]DϟYכ1ml7Z{&ʋ/1L'<y d 13i(}] j@<UyZ '$&$LfpµF5̰3oIӨЫ`iԗQ=ʒf;Jc01kyǐdƝ6SṆXujl٭|Wn~c{ȃR+!&j.rTjj 4f/]3;} ?ֲmV`+}| [k.T?�U|]lO<-gޟxc"@* jZ;7mlt* J ;˙iZ2,<nFV|xʍR^iە~b?c..%t4BDR8 DFΰ!LJFMC"ԕmZ{:4qzx%?;?xœ假;.`C;3ˉwO\gr3?Ϗze6N}k|O>vQ_u7 $'|{vD)eΓ}11LB0<I7hulyUt1E`¨ij vcBUD-k%ЀDt3tl`9 qJ|K Lp>Åy:lcUa6+k\ם{Xryǰ\Kv] q{{8Rb]s/D1ݬ!it'SMn+xY7oB%#,( )\).̳n8ٚQ?DRx~ox7ןyy)z可^7]2Oir"2ǵ ٤R9�WD^W2Lb A]s5(hJh9~'Guw*8ض ðCJ];tHۋ͢AI! 򼰜B{gݮ/\__Y7^ӏ+MGbF $!Pv2=0MNQ <!^jHJf1̜f>n6햮:l "bɸDD&~-km!7* )Ψ6C`MуKkef!l)!}Xq9 I n\ɚc|<'_=^cg{�_n�Tc:Mӽ8|]<ĻG?}#Y2i)DPח/*Ff03O,#|vZ9B'Hє~ijtyt`,˔?@7\o?q˧Y+ϵ<ѷH1!T~o*,$[ke v<yzeYw}Wkeq~LD1CȑyRbt1TZZ@aF4F߇+?Zgyyg}Rgd>mS-3Lgwz'|{P;R x:,f ZLD&rzBA7Q9\NBlSEF�rAFiϬeaʃ G}X1ƺof66Xhg7_-2,Ju3gn!8Z%fYX#ZMٸmn}[+#0<4sQM6n$bJ&0<-3[WV4G|,NXNOB W; Ȉ{1R"z9JXF7U%w __sϟ???g>Jdi\&x|8aaMeqYd&žNǟ0h1#gz93??oϿ󧏆8xH FeJ) yX[:.#1Kj$х21RaaMl3$FzS\xzy|�+Ojmv87e`!#>\wqSH$3|aΤ81쥲+z3} ƵP�9/2#M͙NUcr<3frL(!71|S]Ii1E=W>#:g!Ak6/{7|Z1rrIyrPjvsI77_g3p_Y?=LTH 9+cȸSLTp%M)|I[mOϟve̙=^|RJ&oo9CCl4#dR$N9cRV ,hiyǷgo?_y~=vm'>^y/<=dNJ#$;ܣhAqgt. mބ5$/?3O˿}`rwH4@Z2vHI95lvfve&fkx)0[BZq$$2ljҺ Q,,!I ϧ3pywߥ O&d&43L.hiV`D sZ,[vdjm 2x}H}6[aY,tQ +2.D$l1͸8I˙i*tZvn^*ͥy ni  M u5̾٪+뺻(cbDR%>Mݚ<{X;ǚ`pD9P%D;bIa~4n$Ԃ+Ǘ19_L23d᥵nTH~s3bga¼Dˈ~&s{^I}3|{^Ow^#otV3(Ng&cvгr#po;?uO?^ӟ>j>w|̏ +YLJכ%BHH2b'&NwbT4D$ֵ͘{9oʰlt!e:1NvN+ NƙzvZUßgvzDZҝoڣʇo˕̺.4LuS|.}]H@-n ]IDlި{Hʝ:B0^6Fhǐ-w{)֝f+OiH\YkH9x~𤤣 8*C{ SRs[ezq /y FɅ^Op=!>Al'O3d0A͍Jt$[UD%enmC[wSSFHE!Xatڑ; B̿뗿O?o/OO^L᜹<L\2<B zC8^ϯ*r~Ƿ<yY@WK?0͑2q:MHZ]Jmf OsBrDPr#l(*۾q Q:FrRT VRcu4 #o'Id/8kwҍ:S:GX+G_>4"HD�CD|L'RnfI`⵸^uj+Ft$H4p TF HCjNݠ]"Mcw >gN Ul�ӆC2Mz[^^M՜ȣb6�ֽw8[ G)w1R#jbKmšrBpȣRL! !rϼШ,y+r:շvm=L#\*zcG<wkA( Q ګ�R:֛J֌1XDoRWBjX{ޟ~AJ+?q~F t ̳{ܶmݺi&O3 @;hc>en9e^]T,Q8/gkT(!*7iTc+;a/D2ͭZ-(A 6<Ĩ0cX-@lHVdu t 4OtеzۋB?KC=g:к&VI糳 3ABwQM [/x왔תo.ԡl _o+WpyONif/v[$ne?<{-t1}s�Db.W%"F=JecZXĉ%f83Ksݹ%9\N_#a Y.)h&c` Ђ%i:e7=v[ R<E^{yacC|Kqm< 3Sq}m{_-^~⧟*V}X$3z H\#OLNi1cd4SbtJ,R Nwdp߃Gf9GfcGЫvA\@1F"Tb;pʨJdADYϞ'Y[C'LɸzhW~U°!D(i9Y'&B ݬw/@mή8 SDG[]cTV$(o?#aGjbhę0SδP QBBmW3<zpᑽ5DATR\ϟ7~&nA&z zZ4x/rգRpp NZ6*MmAzʛ1AVuPZ c#L,)fxnj%W_pJ|SrZ"ɜU {ԩX%p}H0LYY۠s6bRՖr_K)k`I#"r9H42P,UBiN].nZR2|fi!$(tPQִo:Av[ة,N|vZsJ2TC q ",Pjl  0ZuC,1؍&)ˀKG?N!^ <Lqqs𶵰LVRt�&cq O?`̑^akb0kp}V-U7`[e4Am^7{IduQt"^$>fzZ{{}CYF5_]9Lګ F7%8}w9[2%&83ʼn<fN|a ^R{6T,KK,a:ssg/PCڔLX6Z'J 31*0ئ1Ш IfQMKԶY lVpphs1K)lZ  EӤĆ#b䷽`hH$>)Crh8d?LQPmuؿi:RLIgWd6G-ӵS{\2ሃ6ͽ�H8s ` )qhլj)ȁ"X\jzpo,)O)]#}D)ECNRl�ʃC$×z+l[c, l&q'L:n4JĐŷ4Lߛ Gs3%SX_u0mtp9AZw4Y{=ufd2]vam^²<05SQ9>hljaR\yM>>Fn$ ;Y)&Z5,bsm"m[B7f/QFk2!*lhv nm5x^VڨL tQH㞍2FK+ݲ+bg}C&D@:fi=[}vN6lC'b^aVXH Fe-ndXłK>Ugzɸ)<1a39f05[衫ð7z@WOK%U!YvWLn7u =bXgNk*uSʠUF=~|q]]mƠk3n/]E/j,$~}(׀1&nõ,vrjz۶9^8Œv;VٵOn\ht*Sd%� ʽvmC"`ŤZ<(Kⰸ(~KU{^Zw9G4N7T3X *z]-1Q32 #,l@Z*# 4;Ѐ/f9s5FB4Ր Eʐf:QyB,&OXR|S/b8;ձK(bì-F  3Wppߺĸz)Zĸg㎱:_4j3դo*{�F@5\0^PI9")e|{)RdZ#ax"mMFN6κm/hhRQzK9k c;C`VTa.z%Bՙ*!!SzEd!HÆxSj 92s:QkG[Kc%^ 5 fHs×4-s$m5iQAb4#x $x${n[Qz~)[_nCFcA0Y c{j{<4=vƇCͶ<aXjCCҺ)9[{Q}0bun5Wj0ۻֺM3m/;@3AOPl$bb !d8,XDLj o9ξa;atph#XwZvG%R*rğ {HBWlRJe"!Rw-7!^ETJmu_�&SLfU>"`("Y"aPJua.7n&^K$&B$!P]ڜLԬۓ%d 7)E7,2faقjwVvC^cPR\8BT0EgM,J:l`c!zVoԱ[N`oLjغ.ӴV"b 1n?{CюDUvimd6=xetj3D|VJ`,@a~H6&*v%L&̵'2YyeCC څ!F3۹vdQ&٩eoI3,ҪؿZt);6!/e7[vf:1=8eE:_^ۅJ*ONCq砒b# ԻwhSL)3~oW7oxqHT%;LXGϔTn"G`0ز\HlfFR%IтTb0iYw-F<T3Dfwv;fCj4jXLJk#ȇ8~7bԡ69%b@mO|lDv:H rҵװRwhh, %DuFUϼLx@av;.۠NtÓHd{k`ɢFPTh‰/>;~D{xN@>X};JvU%><xX(ba\{l*!hEq ],Pr % %4LtaC.hVj86|FbPZ؍/.[>eߩrl<pj'rVU*Rp`Ugh@GbHL><<KvC\Xy$]踃G19 v`5ƣ{y|xy9QVE"ݪ)q  GVTtl^QIa7[[#sΨ[?S)٤}-;~gs/qik#eJ^f0l'q FOCQPlH`ҋ9Oܴ7ZussmO[ck7t5L$@NoIKp >^:g''K}݋aWZ솘bbCzlWr8d!\D�nRDn Ӻد+[j0/` c$r|6_{AmڒD蝺ވ~kdBJN nnr Wj]¾#?6PKV!u)Gm,B쯝 wed;Ji-3s7$K8.>JJ=l~\wBSLVkeNl~`D_*0BIS@şz VEN)҆9g,HBt |c>**<uMC" j)7?ef퍺Un9mvcGfF S}wzL͌,Jt Na`UUh0s?@"zr_xYbb#x+9bC9b1l`QL1'5}>hxa`RKv6#uRѕ,F&^R@8k%omP{5f<GJǚބ:&bdI>1%ibr6 JeLjؚx9cUvx ~?sc ϓo xf'yw7d[19^sx;�9|`O5:\]yP tV{%)I%x;}Rw 阻p eu^feyVZPJtb蓭ctOh6wIV>I9QhT#I}5GhF-VP53fm]mЦI ]qֳFҜy2~> Kigc5&vFH6JP[/?'˓;0CX/;Tc*t j=9X�BMCIapMRfZ+˲AFc,цU(U@2}y2 t ~2)p:,BoLTObh*mMA81STJHhff8^cɂ` u-0cN8PY>cDf߽-o$l⇁oP.泓2Sy2ygT6uODN9x2J!r_vkqG+NgOZu:w:"UJrI}fo):![Zv՛9v]3e竊@-@Ww#Zlfňq ,5.;+ކ]<`{%Bfd/@#dKR[I qb٦~ڍ?g/j}$y@<U-N;@޿5l!ݱXT,Fig<1EhޔY!M}D6Fa+wODxK * iV΋)%D!Z xD׻h{I^,I設Wa_)?f^ kuh{FHӧa7><|U>8VioKǠVADW=^P`h[ bi܇nF>*In1y`o!f$ xKu@CpÔ..m[k˘G;ejef�;(fH#dAWBxmMՃ(l?i"Ņf7U룛*j7w|2ã#m .<җC QBJ,|{Ш>LlpS,|ۚLeќKi*!B0f a&$?y̚~|RN6Ak^WCzKVB"9S^{xnOCVawi!FZcxH<V9k,鋣 9^* ~pK:fSM,>XdwZ50ξa(5w!4^t.`;ڬ{3m1r6�x:j|\\o?NRZUF$su]#Vb/, ZɔӴlhe"oфgj"ȼzxs |=yfݐ[lJ8;al2x(+^; J={HRw*nJk8\*uӷ+9ڀ)#JRU6t&7}=&0a/ {o)#' ȜgVWPYLwd 3]SViPaHt8,/UnǠ8J2_F8Cld8fޏ21}{l06|b7(b){\b|b']'$ KB|Z.U9$wWQߢ #=[<a*Z_pمil&a э1yth{:qtF`&8;|"`ɾnjS|3}ԿQݎB_ ďqޣrvɰYڌIQSz#Ɣ b`hFUshM!8]"ʣ$VjJQbqT u嶯T'{PEarAi_I)nNCJ[7V:"?Th ӕE){!doH 佒hCP6$[nmʡ*DN\)fSA4q[g1.t;-@J86*۽a8y>a{ W*N jvۧ(̐]m9:6 $Z֣UMU5ЊRT %NnNA{7*MG]QzEa7nHaX_Ls&DP% aשvf 2-!w@cJ@?J W1"!>9tNzYZj)[gpwb3dq:ݔDD?1ezavb`Fx3 }ku&)h�6D)"Lҥ4qw:kCJ4mCyB0DTM"0;: "89y!t4{Z*龈=a8m7y ,mOڥ$ZoڊW\ 4ԉD~w}O[]p4}8cڵݷ&c4>Go)Q픣U_%pON =ѴF^/fDfBL%IOLV궢tⶾrχf|䪴< Х/JDLB8>lF1hyspߝ*K^DZ2|WTY1%(Զ{nA5WFrH ;/\.崐K}4^ZlFlC!>)5²`]Y Ʒ}>0|)A 6nEDo<4@̖0XkKjʶd~ˀ1c?~uxzX!q"LԺSоè dPj71 31DX$h:c<g nA̠AC4}s_WnF)O+C7kBHY ÏDH~`3& MA1Y6-hNԆa [fƲb={qgZ';vNRx"gVy>q:~~! -w6S2q5q"$^>{93̽ՐIӼ0Or!F#=zoba7dzkAL{x,ĒԌ)SzAr?MetkE"HIɢTJ8qFqlw |Aa̓\nlnh0=Aȁ&R0]P2s|xon>[ue\ZihU[Φ64"NVW9*T14q)vtdƘhL=@L 6FW@:S4sC. py[8Gt[z򐜏I=S 33UP4ؿכ"T;Sùi dxf};h"J|M Gz b.ǫF|QXGՁ@ZsupфR%Ga?l=7(stIy66DԎߑV&MF BཝLHDx' ifj_ A:�DmKF�s9#-+O ؇>jg&!U7լj6aW;K!f_;q&`CD?VIODR6a`9@JB~A*&Љɵ:yBIبWSFu1�h( /2ԢjbnC!sǡAwjiw=JOڛr'+@=O`p0Mf?WqF?.Z8n&R(ZP,r&m<m[4pod"'hMgpA0@ZWBT!H7t-ҿ|!؇`#NYRً!0%lH#?X@gC0ݴ] >8:-ʐ[7sv7V©w#O tN%NN #&ёRj@CpEmQRcEz_0LïPJMk%*3KT!ɻZZW}%zsp>^h1 MH{iȺVZc#ANI e_Dߛt�`t}۽{pbϞtՈ跭<n[!&*8<xؠ2X`99# ˇ.P Yޭ20yӂzw)Yj)YQ&@Mʾ�)LBgx2G 'RԆW(Lw/4m@.3̤`&aAZ b0|1G<%�!P[}5#9et1Ќ1:)NJCOh" ᜘-9.cVV8ш j90LUk *.vIG#qաEjHݷybRHVv}kcĎ@�rl¡ ds 7zQ[ W^6;�b$qMd9nT0.yCJ߼!~62wȉJǾP$٦h*.g?*5oQ5u⾲fw ] bE/-q؊JVcFG5,>d H̤,Q'T}B[y&5˛d22/0:o>1Gw .pbHw]Pjup3n6_~—:P +i촕NL,p O3y9)ѾLJ:12!S{c v6Hl p/{E1s52B׷*k[d6d|v{N<P;\+l|s0sZWJJL$BLej}v!Lb)T)2|n0Qfh(x554Fn"vwX;`_z rH~mM'!~ 0fo.]Ā]!0Pe`D]Wzvf RN/6cDT=b9B]j5E#|:vЄ-"Deqw5{ekR2_2 reYxd.l&݈y ouFDUFb^?TXRYK4ӎ0YRΌ1rҰ3F!f>ٶbk쀉ՓDĤv">I|ʹZhSe᥺PCeUIWFFGPyJB 4T$)#QI$afI SmВ۶DJlԛu Rj)'/[1u@ϊZsLN0 KKz5#JVF7=`1ܭ!X:HMuEvV$v�`C}GY[0SG[j>Cpf9S&զjqCYQ 9hids7[ ab,ԅmF},D FJ^_}},B΃+Zc^ Jٛz#h7 e-F 0# ;(4HJf󔜑h6N/Zj_4h2<o2s.tS.L6@ !Aj3߀OSvF RaNhٰPi|T!~}ouz]J{PF_(]CͧpeVL&d*)҅^1gDʙ jQH)dAL+qhߠ > q` ͌h<fb �׏VE؏W۴(5>jkW5و:G|5я6ƽ.N5m_+&*B0�$YeC00(3@ʉPn[E|fh֍RovLni>{CsyG&z{CE9XU5@wz)j"eRlҐ   Vڙkc4Pa=[D+;<wGl,i!)*y(5&dFo@mZVJ/)[4g{5WX dXނbC%${^ e)2"Q}#تx ˀSLhɢ?_ L&pybYob4M\$RZ#-|`~;)2�.a790U?c�`�Ǣ :\Iz@H؎n ,has㶖mGl,Xq r{G[!h{nVVt9m݉L-UAAHs.>dѧ0k"TLj9z!°D)+$\N8/6.kȵZ lFC1kkH7^8JrgPZsa/jbntsE e*ý,JHȊI ٭@ÌN k3k؈q総 j`v(3F,C6/|o%5M.+Ѕ,88=K%”τ|cf >6>|OiBF@ˠmާȦ{ FȓzKe/mr1>Dn0mQULzZaou oֆݽ.EeCj|C uPջ]mxb8:9h&L) t%fԂ%ǎfI9S D$LD%h"!uK64h#`yL\ΉNj|-*z|SV6Kos>bƠT)(aE,Gۇ=$(? #!mPGGQ]4ߪf9 V_qOkuA�sHZ{re@ KiPBR mUMS[/ sdྜྷn.&/�D:Vߎ<!S[^*񪜥Q7 �" ILYv̮焭DCǯx 1-py0pE9ct NJ0̫bAXSV[&]vq袅#eJ fBΫb^\n36N,bQ]Ef4?o|+TAeo :,rIup R;>4@;afE.7ˊ?n81cH]P{u䂛04H3'Rȼ 18Fb'ƨmS=}!`:Jo` 8$'rF_cy^�E Ll[74,П uHKo}(>ĺi0rsu"}K]9dt~Λ~ dƪgܿv)Lz@j獲sV; Y&+Y7_$_蟜_kďG#0xɅ2y#vA K,%Zؐug&prI6>8m9Du~a疰Fn+b-@ oAe@G;{Z$|;zCJhLK鉤4<b)�'' 5Hkp&ZB:u"2om�pBjē@C%*o4(- 9K@A [`731ADrqݚ*3`7 bH,HEJzD  fdDus�#ːc|9jsOjj%^c*2mD+btۦZM⭅hM"4|;6<h_?XEt6ځXtwѡ,,1 Xqv^FAE{o(]M8)pՅgyM\\G *�O=(gY1H+jO)1]P-pbC 5,څ}(#R"/wS�04a(KRb0{Oc;LPH,"6(:4 7Hmfhx Aob́y(+ @ @ӑG3G|pj׏خ :5ڰ|~c[ހ,Cϣ ^ YDE{%Y )F{& Qua-((2䫽߅J 5Ķb3j+%;PS!fgy9T:?LDru{ 72IXh/:�|�<0pCGi&<�T`x rGR1N- 0e/l"!y0D`nuʷg 3}پ)dپ:Tg鴧3�]Ō3ք"6z4W` %EJ eDJ'etTr (pȘEu >2m8z1WpXޞ{ڐpqL]VRzG\d2Xs`*7=;@!,0ᓰFl lT*eCB !$ycuS_"k9lUZvU%V0fxB7gxi˒["jofQec'ntрhV *t.hm7>?ᚌvwX9j�nBzii_?~-xvǏo&%VgiH]kbډ9s⠪T tX۽npr\rZ~E^UilަS}0[oQ"щҳR!uOը(̐B s.tsih": aE~{V<t9qtn4ͻ$EY6GS WgBD)>Q OvZNZ)lZ@[i#=:K].aW�l(&%7NcqG`kVBhofD*zk< !Ӄ-hM>%ƀ]*kn4C1bʰT.J ?|>a!;Hјy@EgC @nH Kc$]CpN2ZDyr- �#pS ǣsO752*砺k~S�d[g$"Zo@2}1Aۭ\܁USSZiağSժ VQ:'/u_\H����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/OpenGL/TunnelSDL/tunnelsdl.png�������������������������������������������0000664�0000000�0000000�00000015544�14115753270�0023124�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��+IDATxϒIrYUn`fg\dA/Q/N:$\̈pw<4<am@t_;oo忂(  AB-'IKE UV SÇ "A]=t;m I( ,k-V*Zu]XօeYA9 E&ƶ }1đcT@)x"EYFtY PD4D~!jAkARʺ6ڲEqPPxyI~l[v}01C^ DC EB(BPD qPPT4JET-@ p8+PD+-eE`Sط󕗗;[g6ط1&D!AA1Ku T!@x_~Jbʷ*R(*ߍ?N>_+*Pfa.ZQB T Q܅m<ζ>׍1&s"n #D3DpT3%χWH3Z@RPpZ<PpD:�EZ R)Z4K#U+f*x3ض;k n\_;w0 w '&ߢگNTUA%OFAȠP**怌(Q("�"J֜tR0 x}y}ݹ_}34x<9CpJA"JB)QAKE3  <JQԂkR)Y!Jj]y}ٹ=#uYӍ9'f`E|&OTnJE$ !YV*d`Bݳ{Z=x~yyٹ]/;؜"1;ӌ0NZ)5O4D .Gx =Rf;Np�JH`Ue-5vcz@8*Nq6Fwnˍ;>)O9iE D ocEJ.Qf8NgMrpHE(H(P d(UJP…XqBưɜnZFb3^%:__<pI0(IUaY+FmJJ)%\[~iEyCP\'!YU)ZR)RP@PO u(% B>J;:A+؍=}~\ow;>E"ԪJ3@R 5ZkRދ5hVހMȦ)*T-T %FDЭc3L@4| c"hKB c{7~;}gҔ녵j+H$ЪYj-p2GXBTg JV"Jp Km. wBUS]h*4xK(`sNnt9:n;>q凧>|8.ؚ6q-`fe, 0q5�-˅s R0ɾ;}hQbHЦSP,ڨZPq^{컳 xzjwO|x8Q`;~QƘδɴx,eeegjYn!TNRX8 SaiA)B %#.rs}b ?~z?3"x}2;wfs&rw!N@sOЪBaU`*~}O<>rjgNPnlyW|\N HxZZOs[y=]r:U~|Ϗ\Z~gm\_6׍>'[@1 YnZ_ �Gq&0 ,6NmE[g ><-~fuTgj7>??g>3E1-im<G䧏%#?ols߹vFϜ&9LCȈU- Sa};[ Q5(RYjci|ˇyi7ljEƗ_>ʩ vQ.  x~}`zpDŽ1g0g@gbM,S=$p9ӝ~M=GR.˙ϯwy2ة"m5F ps87#~ggܾp)\*‡?<_tO8`t#<~f1p9s ; D"t7M UqB И>X'aљO&PuJФpyx|9sz}/7BIv'>=I`m3pIߦӿr; )uYy<0mZcZu9uǽ.\R d+"ЖJ'D:ZRێHOeemLO4 L˗/_6LjeU>$] Dxb3&> ̠BZ.؄!1Ί2f"PcN!9\|(,@ĩ0FNi"@"m44#3祰.%a(`id˹ wO|r`KDse FdLܝ7Jq M4**R匈(K'0ti7ڇʺ.ڊ#[Pta= /_GJ$ؑ, p8JoO[#ehaYWBY+9iE)Ե!Gl;*'Tf׃zYu,XKRIV?ח_,çc6+7$EwDW~C*S% D=hb."<.?󰞉8L*~yy N3cL(B]$LkARu姟?aAW@}aGL[H]pZL7?. E)ФqWgJ.. VZ\q]y1q!֖L9bZc8}[aY`Q"Ju#,in 66 �I$CsK'!ƏK'~YO,Z|7Xm'.\__'KX /0>r$ Xlj-"&A"( a Ls8bez#G8ѷ6mi'=BL9?nw^^'J;}b 37}D1=EWD*۶3x<_h)ju\ !+A;j) "ԣ v<7%$rLĝ?Wܘ׏?PF]+Ω~1zYָ_Wndx<8 ac0Z>n 7f"+E$Օ mɍaK<L׸w~X Y+O&F P9IT[,<xۑu GN, k.cKp _OǧӰ9TvJnwHpQsZssrbuyFmRWꊏ x_ gyK0fp)Cp~nnm}L\4᜹y(~>s7n i3,?o{VR+OD? 5?#ӏC)N ]vF؉nƌgmR" Ĝ0gz0,gќ}͜cxoGN \` ,Eജ,_3FPDK+FoPx޿bq|2mZCX|_XT)(+#_ḁ,o?w"`9xkvIjiBjNZ5m wti"|F03gPEm)"la6 g=Ӗ n;y4}#1(Ơ|<p`N1̿rc__;2fc4P|.9kII9~f' Fx"N (O;6>(R0|-miGݢH|wç\z"X6Z<ל :z#'[X[P3}v?;d[!ĸSG>pNEO(oWׯ<BƠ{0eFqzcB) ԜR5U"4H*#$7ЃpPO'\sξ9?n3xۍ /Vad(qǼ`^X / pLLrhH:ok y^3ABJZ)LKyweY3̍n[8lRVwNo] 8tz,1mRCs`sY'v̞#D4%I@7LǞJ촶ł1PThhC+ꂹ,de= 9hOO ~g&%>a+77 a4:?R +3rYǤwL@R'q 7xzzws2lκ,¶Rk1'UOlsve+TmeI][|̞F3. f w| Df%K@ys35S\օ(&6Ӱ�=o7Z*<o5P9 d۝�-wA+ϬF݌ZzBKA [̩moR Zg1ߩB<CrjX {ٶ%[ cLcH03n Ȓ1CR|}(Gb!{5gFpi5Y-[ԁYRQ:~uI:\@8*~&NxpA8:m}cؠ>ƆuR+@;F}rRB}l0F F@?*G|(q>S):}Z&SQ}0cn`M|ZYjE pwJm&q.۝mw*2$@;:70v1òIv%̥PSFmŭwipJTHVb3+K;a)C QW]aL, !w~T<\ f8xL&ƌ{NԖY_f.sC9cNNR[޿I`/3j qo841i W?ׯg207c˶x&OބA>^,s!.IXؤO(KazЇqv.LQh"ΪT ya0o71/OhTB'ca.Qu^5&w6LEhI\RKWy?砫C~& jp:h)s&<=>ZJjU%g*9˩rbsgcAP/\Ƕrm[g!MТJ]tXoj݊$w[E+Z`][ʡp*N3WqRZN΍E00;R hV95spD=yHM.rBBc~;oLZJ9c?|AJDabd0lfu\~EiR[$JL>v}@}7|8=Jh`'[4%ZKGr~(>y!MDĦ\6r(u=)+|'r`s-I|ʓnBg>'MAeE=Voz蔕RsoZ8ߊ.,GsT  Q]ɾr zMD&aLn}QU3/h`޹s$;JbKkޢ)\qA(cnD^В:+dߕV$RT)nj:P#"&$r_~f6ABN;#evdp 5EJ ,ƥFJcKJQ9L495M )Cj~]~8H};b&om8>~@4jbmSt͙~cN"2ZRgOy oRMS[VB+B%Rbh=4�s~ }Qxxx|^۷V`6 #K[ZMǯǝ7; PnT&ICФ"dm#l>I|Q H!RC1owI`7^oٹNwc7p@k# ax5{Sw*J ˑǧeeb-6,ۓH07تLpbݏ:YlB26,I�w"vTwQh)}lau;A#,OxK~W*qT8Vʡ{?~t >@{CALKM �7;HGp[ת˜8ZT.,{*)X3#_ICުȱWΎoΉ[TmI<(Ng;] 9i~<'C=gCed g1v}z1Co>Ͳ:8:I7>"k?niA$)r[J DhʯDf)+:_pdcߓHӏ8{Ǻ;}-'I GJ"H~=&BWkyYJ+مA�-;qS5_e[w$ɵ����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/����������������������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0017233�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/�������������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021025�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.directory���������������������������������������������0000664�0000000�0000000�00000000041�14115753270�0023025�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Icon=./.icon.png �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.hidden/�����������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022336�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.hidden/screenshots/�����������������������������������0000775�0000000�0000000�00000000000�14115753270�0024676�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.hidden/screenshots/2014-12-14.png���������������������0000664�0000000�0000000�00000225525�14115753270�0026447�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��5�����M���IDATxw\?WHj;*;v]cIԘhLk5*bEMMX#QF/R~߻cn@uz/v<̳ �BP(ʻgr _P( B1[nA$K  BP(, 4@NNtʉBP(ʻNFFBP( "F BP(jP( By/F BP(jP( By/r t�@֭BP(… lyjenPDI76kir:Ɩrc$@ |L]J$gk%Z ?񘓧uj STYJ WbXM�9SN`qdt莛Iց( w{9(;B-aKK0s4:e%.%<$HϕP)Nh2dž\5Ξ6C4l>-c;$< ΍>wRg(N֠s82}#۠I`-i9NQpq:|r OAIq[6;zx� O=ٝ|Qݹ&||a$eE/~=:"^f,6+�)F=h#�:9>=gQWi4~!F-qm#v-M82�E0 ]ǐѬAnUA8J|.p0hzh(.@(J� cXE P 3%<ױ=#V;g`P/k"HE6foX\�9dyShù?z2'o_ (#jbE]o9Q?kcc$9z#_'AFy|58#>2Gy8?wn kNe@A- 'p6v0Ƅq>)ί7C�!q;g- T͕bR᡹ULʇO?i0ԠPTCnMT1,J5ApGPB} E\Pa;׺hc^"HmhxEh8\ͬ~V|9cC=EhdkjL==W!ĠuKP 8'Z¶/1] +wt _+</% �botj_<X¹n<N>cSsP,�!E<jp|rW+%WԮ|h["iM*Ra~:mU W"vjCؘC6ΰaa&(&os- PUœ!@ {Ė]QZ6oY.^Jq㋎h<(.1GBlܺ㳾J BacQ |(r7t _{DBVjŰ2L�\> Vf"ͅ!NiA�՜anQ*V(FB U$+n(U>q FsʉZ 4 ?<ְ>\7 'H痞fleڡ9¦!`r'i{<0jp>v~}(ĕ}0s鳍[o||br :eoҐϳ%Y) )(q\<ĶCPr\r9x PdP q+ +!POፂh>去=!z> /ma'F U|J˜Ȑ"bp07u!GT*!q^˓,\qYPώNt*^ʇ>q٠kj>tːBy;QSo_ss@УL.^MXj\e:܇٣1Qm@aWZ I<fbچ81 ?_OAxpF߹?`΍ޘ7b<|vt6< 4 êr?·G-33alsJ %VO\*xoΝG F(LQ NR<lJ^yAi'GXpR'(NCmE4YYĨ`ivΰ錧"?/r@h{9_(zbYܦlD�"+@VfF!rr!!|B[[W721ٛ0KE>R<`-D-÷#uuR lRHrґóCjb*ﰡP*0j*2Cq3j(ʻD Bn8rv.,ǧ-1d9uQWtg륂 8tO?Q(ǭ7G*(T {̬|( B =_- Sw]\A�ܩW0Ked 5j(VvN2\`[RP(w(LP( RF BP(jP( By/F BP(օ‡2\ BP(Za{ǞА!<_6ǵWظl cHX2@51ߚkk=iQ,±Ս<\]J3-]ʯθ{pi#T2Tך1mktWuYfmgE]olLWtVcAeqfL[|[hsG)2f<=C+oxm);+}aNW+O6YcUS,wmj]S/\ڌLq x<^A:]M_Y 08 k95uV:v#ǵO5OԔSP9ψ1gӧ9Mt]v/>]U{.").S[4m55: CPU M[߅/OC*F5_eb~t=<:.j[3]ck5? 2Uۼ.jXV8lf]sOeXSy.yʩk e KtMY4[Ԋ [MY߆Awm2O6pdЧ_Bax`ͷ~K\Cۉ>"V6#mR) &1ƍ4r "5ȨVGD[Xl3zfDҷ! j)Ql4}6<l@sT=WQ45ik.6&~ա 6fdvr<jh4Byٮ 6yՕf\53 ۠R(\YWI\\auns4LϘ]wn[mw. ljC5MrA;|M[pՏLlnmSl<7׺ur$\m_ؼ3\Z]S,G.1hX#FW9 駴m6G>im_ט-=mb4VƘ\ٞ_<mH!k2:Mg-O]sN![Ǣ3`5Qa+DCaMho⚿\ivnq4 Esڦyxc*Sꇫuԅrc^W7֫[jKWŵTE[\\qcղkG\!cd{[Tٽ u <Ewph:[l5ﻮ;XmwClwZ1C/}6ɨ/[rdH:s446}_х:V[ҙ!}QEtڙ%WݰMw=\tå]}W-:bP钓/!} zӦ~ZAn*RnDma|>|>x\vNWc,K* [>l2vVMYŘ50V?ꔭ2k ] lmxaH1D\~[eNTV~\۱ .y򘨦aqSS/ cΕאzMhܔ˨dD0777uY H  Ɛl]w41ƞq06o6>#GSlayʬ }Fj\]^rP6jmA\Y]Ckv[[3j˖!:wLSڼ,t;&r>u4luj9<αye[\h [0ڨQ(Jb5Ŭ m^]_Y *. ZY66/) !MѤ,)QsuΗupVF6m#R!:7ԓY>Ő6-]6>y4˥-mBJK?cl62.#ǐV0ڨ)..AWe@H$Bqq1,,,JUʕ' J! \, 1rqu9B3Q} 1v tQՓ!4ˣ4ñ-צC@û.ϤƾoCU} xzkt@3s&>/4 +ύfzi{q0U+ÆQFB@QQlmm!M]eɁ93 H$XYYA.C*ǵ1U g`hnnBxTˬ)6j!F.E-;3mt<\ lsmS{`tէ.t`\Vݯ8lԬm)pl۹z]n,thHqtiy.7kNJ0d{W 62j!UOre2#ҫ$ɘlwt/l12D"‚ЋRt݉u }umu-C*23hgаc+p\(5ֆ }pzU^ߚ:[=4X M9)\aL麾t]l22ĸ ckHiWFWz3ՠbӫu#EYQ Eqq1s^T2ۓ.ec<1ڎ~733CNN 8]\5ҐtUF}RGyw 6#r \Exq >Yƈ.،#m W#̺٘蓥<וf2hArcŰOy0|gCF֨QBk[8co<)?.F*.|}12ϋgE&XP#Dנz'9Rwmm޴.iiӻ!zy<Vx:)_mb|.}aӣ1Ǹ{x%1C\\{6xu2ʫ6[3~Psйx*BC*!lwotɬ׌˛01]^}mҘ~E۵l2bl_#80h2}(|0F \݆zAC\@Ϋ OWٸ~jL.kllm2`4Ԙ;}C=GcGghz ̪ a󴕱}F! C=1@Y#F[߬-c|h5&** ǎc=ׯ͛7!Jfp܊x1JDiĨ~ס)Arj~皞6t:{LN3\(<",>idžqxty ' ]Zv.e4F\ }zjhMvc.cKy &}1߿ 66Vo<}l߾^^^hҤ0*YWݻwG}O?Ԩ2+>O׻rp51ƄwN[e'1gY_R.rxy]BWY գ!y^ߚױqUٸ ʹHʧ2x9a1fh+1F:&~y&f͚Td2 :fBaa!ZhiӦaС 22͛7okkk$%%abpr^6^c:Pcs-zч;K.s\\i~ws~M1]6N\w-a;Y\~68r1fiÀvE_]W#GbŐlϰak'ږ(G[]hkԠяI\t .Ñm" �=zMH>|={6D"?Ν;cĉoM> �x1 tRlڴ Ϟ=Û7oqF 6`ƍJĜ9sЩS'�1|D"C* _|R),Yxd2xxx`q)O.N'q kV!S-;!,\ ri+/ kД]+N، ]^m \\ ]6CfV3֕ntXÆ-n °աflS~M@Y>aO> P#Fzꈎ޽{иqc?Fw}͛73{9q͋ ec8v.\6l+>|X~=!uϟݻw#!!'N!Jɓ'cʕr ڷoC1,_ǏѣGqt GV۝jTq1Pz&t5XYEV>Mݪ~W(jmFW)j+.A.Xuk`h^\qя.s`{lmLl_5!]sEQ [~B;4]/rO'\Q#ۨ1,! lܸLq᯿B-W1M!>G]9F |>x%|>6lw |>:t@AApxxxuڵ+|:C2ѣGHNNfj^McUC:M 046Y 9Hi5�@ʼv<w.+]tM j(�\ C(o;P!1]17T\0$\thL<dw09 ӧOٳh׮]&ښ /`ii6%%%Xbox{IP ++ jy{xx0dAHMM<ETk~6ݢ1۪.QW^ڦtME銫}֕9e16UqAVg]Sly$.s"QCW,ڮ5]q]Ӫdn!1&0Ola[nݻ{D"yкukt;.\˗/ŋ=z4^ ;;;D"deeUޢEp5^BÆ �xZW^! ��QF_~:0vZA3dպ_9}CwWlH Őc+6k 5Sy06?-ٶuՙG\y3ccm]! [CL(R.&~Ɓn:ԫW7Fnn.ڴi L8k֬%:t3ZGEEaŊB\S ///@*bڵ�B!997o�8q<`[la ;w`̘1|펞K [<FBEw \%C *: 9圾An¶f̔]M3ugVc:,Mhö<Siu'K1µT_XÆ qĉ2ǭv_~a2C 1JCj<T?cǎEV`oo9sѣG4h9oF%ڴi>c̘1c 4kkk̚5 Bjjh3\tM[dQٝWJO;D]:Ekՠ47X;y69qRQ= a 6EҼy4v]߹zbt oΝGj:={j$ˑ77 yKoׯ�yyy.B�?X߾}ѡC3ƨlll)+1",BWw@Tl[Zj;fq紝璆5P YRQTt.ԗ2r<K\5<Cci G wv1PuOWG*nݺÃpUh4!wdAGW<c0<ڌ0.ǹQՃ\ސv- .uRmk\eẀZAP" ]V[;ԕ1ת1rp-ײr|PZy]s_ 333|whԨQ4˛'|.]S0nfu)lisMEi.BԜ w<ڌm\5]`)򔇋xArAE&}mJ"_]qƵMq)1'4j!J��LDbY:t:TXz2 RNȸ� sk;F|p>o>RQ}g\yx/>5j0---M-RRfMS@P(Jt>2E 4j�nke*bN_)}kmsUY#W\׆qm[ƴ݊vP@ P(DAA1ҨT.̭+1,OmG5;<lzѧw]з-/.TzCE[mS ]8nh5ޖSrRmH$Bqq3,Ԩc;4613xI &Ͳ2T ۀi#>5VZ_,>>9yvy*H[\WMw=Qb0777[CJmyf 5luK`^c?<:UXt*1ieXc|KkB(!dF{~QCy0t" ]Aa<ZnC'; cH:|43C%.Đ{5`(ԨW>s>\kep5v!!ߐEźհq1X nPQC`l_f]rxzh5`4s5d-wFUEJU5JQoI5dИu9U m#syBe=BPB2UVDi)9 RTQCB00*뎶 ʻ1E_iF\.P zeo,I1=r%%%�`+KJJ奺~ؿ@F0333T֙\/B@ 3 �:ƩR~X*E r666nE(B("//޹PRR,X[[5R pppX,6(^jj*h]QYJJJkqntc~\yVF$ heS`nnBwAyyyD" JDE9Ά#UF"J!NqC֍BbKO�o8rC,s|>,-- PʇX,!xuEyŰEAA�cd:ÈD"thԪ1C֍+ JСNzET�[ л~  ^  i]QLFNn6?Baa!)]K/T|W~ z---Q7;+iH/Em#t9S\wCҫ zk ťTAC$$뗐JF8`�Bӧ}fjq)<z/`cccPl\�۷o�ׯojQIQC{�Z2 R+S|>5j(erΞ; 'gXZ"8v$|:QR(r 666Uɞ;KrsrM"Cѯ__cer 1[6o3UިQ* ̼H$B@II ܹ P HuGn{i/_>>u`aaŦP(@.+gdd`СE50uTԯ_a_׵MJJ s;..C@@@ʁ|>>>񁟟Qn]ra7n[}ڵhݺ5L޽y\~/_f=o߆/<�jG֭_4EfsܿwE`8a5A5Kd:T>iaa XYY-bŒ5 SN+_z8׿:6}oY긺j-UmT)STx1bjժ8::o߾xYQ;wM\W0_q1L6 ˗/D"a>R(o)G͑|4oޜ1h aDL_eggp\pAk}�^ԪIBSM^ܹsŀʕ֭[f͚9wEŋxts"%?3.^ �.X�@ DuP@ݻ/nԙBk#GĒ%K*N]ul| mۦx,._\Bͯ۷o+.]Vݻ7+++bĉq֭ OӦMǏZܕ+W~矘0a4iRiU47L!8}4Ξ=t$&&B*cǎcISI5йsg|8;;NLL ~�@QQ֬Y]")) ( }Wff&Ν &ZUZB$<|P퓔Dܾ} W^JJJ0sL"00HHH`Ο:u 67<==2n߾&MN:h߾=<yš1a9s 6Pzg ???xzzbذax M6(X۶m9s`ɒ%ؼy3/^ѣGqL2 ;wмyseіHnn.~^3VHKKCћ\L:M"~nܸ5kqjZ|4mڵõk��ӧOW_}t l„ pwwGZ0dGD={6m5Rs;+aׯM6G:u6 8wE߾}~zSW�YfjݻhҤ Ѽysܿ9k.ԫWơC��^Ú5kPzu$$$111D͚5Τ5`�ܽ{}1m4̝;@?c  �[fׯ_!66Fdd$)) :u�ZjXv-9„9u4h�///Ԯ][/ +Yf5 �YYYի<==Qvmi<`c8p�tEQQFuֽӏ+=5G\\fΜM6Dm��|>1+Ss-۷&NƖm02fF9_/ga'#-[0q§ػwO{{{;w^ǚ5k쌄kܸq2e F6mvBQQz͛3TyFuΓA.y@ 0Oŋq9\rIIIFϞ=Q\\ DcHII'2V#Э[7$''#66V;=<<'NDDD(sssܻw>DAA̙KKKl߾_~%RSS~z`޼y>}:5k>@%K BBBY["Ν%l%Bꅠ^=[.nu.^<AуKPƩSЦM2.\=£GCax5BBB5%u;bȐ!x._-[`:ʮ] W�*߿ǎCjj*0vs5jv؁bƍׯǟ<yׯ_#,, +VիWgϞLJbڽ{7[Fkի> =zyΝ;8vܹTl߾,C Ab5j�(5x3f8y$,X%BD\\._v1c�JW<}Ğ={XuY|95j-[ O%=~U~wB,3;[Xt).^Ss={L&'߇WL.]࣏>Bbbqӧx B޽ǟŋcʔ)֭[acc)jTyF XضL&@ \.H$yjߏc�0zh!!!b=�~~~S_֭[2d� gZZΝ;ӧ3 nҤIZPL4 Æ cǎ {5?GGDdee"*7s:m*.]7H}¬Oh"i}aĈ̋w1 GGG�@V88qB!bbb��իWǐ!C ȑ#QF… dسg:w<ڴiSajTމO2.\x<"##߾}7n뵯dС�Jtx)kZ?36n܈Dٳ'X,Frr2k_+CBBpm=z;v,m2\,Y|MeV[AiDFFѣGܹ3޽PD"x<hҤ VZV%%% ##E[%%%(..6(B(**BDއ3h 1EDD0FxHHQTTT:2wbMMPPP>խ~Z|>vvvHMMP}ǎH$xx) 222�@)O{]veʨP( JQRR333L8 .D_aĕWѿ!7'O>Ejj*l݌V6vx^zf͚?38t(^o6l` o1bk، 3---Ϋ 333L" 88Fu# rrr'Nӓ9_XXv1Uٗ/_bΜ9HJJb^uϥou+kVV9F=УG�@rr2.]pqqqؾ}{DƌHe˖!::-Z%Kڀ!ƢnݺT[цrM�oP~شi,,,p 8q$J$E%(c 4mlD"ћ e˖Ҹhذ!;ի3㕮-P4`' 5 e4dd2BCC+ĨqssCZZ[.#++ 8r>s\r�Jﰀ3999̝?'MQV-03gq >}۷r].^�/W/CdfjΐeHKl`АYuVXJEΆQ<<<5j+o.##�QzͬRE9Z˗! oazuBjj*N>hX:ud/x0k,\zK'O>A~~>̙A1^ CE^[PB1fTtX,f^o JJJB/B�D�75 SNL?)xd(**L&c*ݽ¦z#??@khܸ11nذ((("W^a޽Z!666ܹ3~G*ߴi3~a;w?3֭[#F ;;IGsڵkj;+i}73He(*ϟ< " HR[ZPXP(277ҥK1o<<>}`Æ ɁD"ȑ#b QvڡYC!H0sL>|e*ۙԛ7oFv п<xIOO#++ !!! HMM͛Ҧ>}`ݺu׾;_}rsK_薗EZjWξDƍcX[[#88 _| 6pS.ֹ]BWRCH$b$ ̙ڵIdH$̄D"5~ _Wį5a*ƳSRRb2bW驨*oh�PZ53 ]r f̘v!,, 8|0:X޽{~~~ T*̙31o<=z7oÇcСZi;uشi233 ___ٳCzz:ƌ 6:uBǎK,A۶mֱ'RƌÄݿ?.]՞05SNE޽!80�ӦL3gw7wI; Wt&-ϰ`ٳ'ZlI&97k,j 򂵵Qֱ5=իWuENN"""A?Ɨ_~Yu2h fp .fL(t ^^^HLLd2°j*hժ5j?`WbbbtRXXX0A{/)&M �񈏏7i \pwޅ?UoooܸqgϞ ӗqƐJW_ѣ:ӟ<y2QV-x{{c˖-ؼy3ŧ ann8O077Wܥؾ(x̓MJG$AAAH$XlO?$x<q1?~\رc8vI=, ;bUsNUr!Sk$\ 5&r9nf_۷oGNv&=~8PRuQ(x%.RS%''o}gW: js4:T]tnj1L† |ƨQ8(RnmmU Kf1..'Oz B &a8Pu0xx5t=x l*F(رc¾+OyP( 33F2&Nm]#WS̞= 6Ā>}0a$J1jx<JJJ`aaaP<#BܧG|Yk ͛7ǩScP<;;;4o޼\y;u]f]Oebh_޺Qaff RT*EVV,--9)VVV(..{ZAAqqqй ˩J1 ӧOetӍ1~yxF ǃs888R(**Bff&b18(�<o޼JBQۺ"PRRB;u; !ĠvL8J~ A~~>^zeG( ְ.!](wiW"Ly(_hi[V-,, HPTTXLP;\.gv6SI8vC133P(;fBJ!`ffx^ R(lKJJ }x(w LHd L8vK=wUTċ(tŇzQc\YLn:Q( }qjBP({5j( BPBP({5j( BPBP({5j( BPBP({5j( BPBP({7 ڧ1 ϡiii())QKGҿ/Kҿo+Z黎+cmJJJ[[[FA.]ҥK{ntK.EPP�㈍EӦMq z mڴ�/kuŭ[yf|oߎ_~ǧ~vo֭[|w˗/ٳgdhذ!͛>޽{իW·~�& ?~<�`ʔ)x��Gi&ܹvL&&O6m��= 6@*�zQFƍ9s&JJJXݺuÅ T^ ,/d2֭['N@.gφk];v 7nDII b1&Nm"33:tET`ŰBnn.k$%%ݺuÏ?2;6K$Z .\��cƌ Œ3pۣu֘={Zܤ$|ʂ\.Gƍ_o߾7o P(Ю];t9�믿3Ə'ddd@.3uwU<y!CuÙs ??~̴;w`ɒ%Gv0n8BtӦMCvwzj&5kX|,{_$,Y�\͛7G50a�&SSSF .H$BAA?4L0:ە.ӱ~>|;w.Ν;m۶e˖? J\{={D=B"`޽h֬ ("dddz03338عs')((Pܹi'ObT?$--BA իY~=Q(d…O>a333rQP(ȫW9ILL$ 4jԈ|DP4@ZnW|Gf 2a"Hț7oHPPYz5Q([ndD.7oސh"P(ȅ kv"DPTJHHHIMM% >|ի‚$''BAlBUF$ )**"ƍ=z ?.߷~KzWiٲ%IOOgׯQ(o!'DPK볖ٳ֖ܺu( rebccC^|nDPLF5jD֬YC 2e ر#)))!ߟ"H`ҤIC Yv-Y&),,dʳk.V۶mK-[F )))!&M"dرdܹDPWVZ&x2fee'''aP(Hjj*!cջ'))ڒ'N�۷7ٶmFIoF  u%+V }!133#/^` {-#ڵkIٳѣ+V Ç'111dΜ9gϞ@@<qDF={F ٿ?quuۮ4eɓO>ۛ|իW۷sssn:FVVVٳLi׮e-[f͚M͛7zӿc}E|<yBufT[[[bx<<.\A0j(߿yyy]tǃ+Sdddƍ2dx<W>}@PBx<r9&L�Hkkk4lO>Cll,-[>kkkl<`dyt׮]Cqq1-Z?ɓ'ѹsgCΝW^A,۶mÃPzu<xe#WP`РAprrC˖-x<޽F#x<&N$$%%IwϞ=ر#ׯMq8p�;|N8C,C$aԨQZw^3ժUc?;;ׯ_g5 \||>+V@ѩS'={<OF׮]!JdiӦ:xIx<|'xpvv{nVkIr9:tb\p<7nİaØrx<;wfffǃ#C)򻏏7o;vHOOGݵ#G"66xذaFBsMj:"3!mڴA͚5ׯ_Xolׯ_̞=jzQVZ1uP(гgO2q,,,0l0\t V1qDzҏX,-!:vBk׮U+ͨQ)Yv-3udgg___c֭Ljժ! ˑ�ppp`U^ yBr�pUh֬8/ԩSh׮ڴig�룤?дiSt@i8<5kb…z2effb􄧧'|}}aeeׯ_I#33'N`zzz"11ѹf(�2228ׯ|!55Uo9ׯ_-Z`prrȑ#͛(**b <<ΝӧѩS'|eDnnڹu!''sRE6lD"]0b�GGG叉a={ ::bXkxooo"66 (**BxxZ]mP5PjqiWJׯ ?ǒ%KY&3c(P R)vލS"771:P>TD"1e˖aOL-n孩QE"`ƍr 4h?y$LO?Tg|;;;�W-Wff&"##}v�0j(f}>"##q9_Xx1j֬o̺9s0-^x5j0i_~�\~]vEPPzetjԨɓ'cС6m*sm�Ҭ_W!---ˑwww2b޼y7o^xh̛7˗/Ghh(Μ9w"44?ٳg bxaxxx %%h}#N:qƨYGwޘ4iܹ8ٳG,111XnBBBX;}m2ӹ&8~8n:4l?~<�c~<ϟ?Ǻum6h .,cQ(ؽ{7�xك~L<ҽo>8884� :㻸 007nP:xݻWkxX,r7�$$$ɓ(((`)..FQQkH?~hԨ\]]�ҥ � ++ >>>D"%KѪU+7 �vvvjjrrr8yq5k //@4`�âZ4ȷm۷oD"D"u봆ӧ֭[|�ի^2 aaar ҁV9=M4@ @۶mqY_aڵCAAc,H$̘16HhӦ KVCm۶(..ݻʛ7ofimcРA`ii ꭗ^z8p� V漮6Y29�\v Z:u`x:vӧٳg�Jo@uϣCy3HHH]ACTgΜʕ+ǏnݺX|1mbf͚5.s\ o߾Xv4lقÇðaô4}Œ%K'QV-̚5 hРlقuɓ7o777:tL0$''yM6t>#�qm]vի:w];wF-児DEEGeԩ߿777SSNE ???=C-D VB>}VZQF['| PfM4nݺu�z1cڵk&M �񈏏9N͞=G'ԩ"|W�J/"""�jՂ2Z[[ǪUム 0QFuZj8rV\@cȐ!9r^=eaffaÆ6:EY}1Ɣ&bѸpjժLM"!!ٳѲeKGŬY P(ڹsϟZj-~'c޼y{Iܹh9ݡ\yNj/>B)'Ohjq({BǏv|ܸqx)6n7772Jjj*Xo8p�lIP(J:u*>jP(|5j`˖-&s`P pI~šP(0e .6SC#|GHOO7 Re BP(ԨP( ^@( BpBPիWx5R%�-Sx<B!<5W^N8Um̼<28q"Ǝ[۷uddd+ my[zJ2eʔvecǎ2/P(Mjj*^| P[[[ƦwD"x&&~*((oJ*l�_[1Hufh]YmA&6XXP(6`aaKKKXXX0>VVVԻNEbR~ҥKq=%%%1c֭[#!!�ӧO(0qD&ȑ#1w\t={paÆssn׮]W|}}̼9Xc5kPzuFUܹzF裏?T&aQj׮1tZh/dXׯ_GfZjaȐ!ǀp]ׯWe˖-hݺ5{ҥ3Ϟ=9éS'''t �Jߋ2gm۶ERR^}ic:I֥ׯ#<<G5,ZYC=VƓt)4h�^^^]δwڅ6m`ذaK^x(!00Gjj*(,,d˗o={@(߬ڵk͍y2[[MNNFׯBPAP@,|1@�33uܹ}vI~ɓ'OHqqpG\Nwߑ͛3&L@f͚E!dq$77B/BIQQ3f 3g!W-Z`&Zj/M֭K7oN222! :ӇBٳgu!˗/KKK+N�3gLF !s%CAZlɔɉܾ}Bƍ!@~7B!$00,_BHxx8Yt)!DB&NH !r2|BB!]t!-[$qqqB6mD:vȔkD*|@VZE!믿&#B,YBիW_RNrR\\LD"q!tҽ{wɓ2rSvv6'+!4Mm6mH^^k|'Ɔw˖-֖撒booOoN!D,K.GΝ;#""Ș1c\.'2DGG^zq U 9y$"d۷HD֮]K!$))gjmEEEd˖-$,,4i҄lڴBPؐѣGX~r]HݻGɃX?' m"36ŤBfΜB^}aܸq�=yyyHHH`vӧO{HKKãGPPPM;dm[f6۳g:w�6m0߿;x`V 5-- wѣ'ܩ4""!!!�pdddgϞ%x�6;v .]ʕ+ѽ{wussC@@�.^T7n`ܸq8{,3&@ZP+++4nܘIll,ƌ>i$<x�/tz'''l۶ ߇QvmVٵĉ �T^CUDEEF^:v;dd2\~b8p �ua6`dK[,3srrp̜9|>�'OѣGbP]�@\\1`�<zśZ;;;M6LlmÆ Õ+Wf믘0a( }t BlذseR%_Vۄh߾=n޼":u ڵCxx8Ν;ӧOSNZ_loorL8q'11Qm>Pۦx0kժ3_t-r#aѢE ?NNN9r$Jʕ+hРڷo zgΜQHud>|}}aeeׯ_sҗΟ?bDFFf͚Xp}ô)33j[NM6-TQٞ233m۶EӦMѬY3<}TmrL�̺&0H$6.�~hذ!>s,YQggg' ±B*bݘ:u*rssY7ۤP(w*Hwhh(FqơN:q777UrYYYpww BCCqܽ{x1Ξ=L:5jwشiSsʁZcivvv�Jl(/^pW�www�-͛yŋƼynsB("""ـ̙3\5jɓ1t2=U__~P.k׮ ҹq*,HIIFczV(Bq̚5 W^/�0[[ZZYLOO98Յ*8~8n:4l?~<ʔ(m~~~=֭ömТE ,\uOP(Vc&(Y`ݻcǎ1u!??�zjq�JM4@ @۶mqY_4X̔Czz:sU\xe�@JJ bcc9۶m[3(ؼy3 L0\rӓibYYYlIII8r"""��mڴ7|S3K'k֬A^^RdVZ1�۵kٳ� H0c >|s'ODrr2�`077Ghh(�OOO� NVV :tҥKAL&òeлwox<Nuqu=zT-:u`x:vӧ3LF8<:t*ߘ1c`mmڵ4 彤5VVVXn>|1cڵk&M �񈏏X,Pj\x$\]]PV-aժUӧ|}}ѪU+4jzx<l޼[l/LNwjp\ǐ!C0rHB̞=G'ԩ"IA{/ʤ+ЪU+$''aÆ�J s6jN#44~~~=z4 @Y_uEΝѢE xyy!$$QQQeׇ5~wZ >>> BNNSd8p fΜ ???|7رcлwo7T*g}["-- VX.8%K- .VZdhڴ)̞=[i;U=Yf非P(wΝ;r!r /^ɶ#, SW^5t,|رcEP(�cǏBXYY1oVAA~~>8{SSSvy-J?Ƨ~ Brrr6mژZ,;Ǐ1}tSAP(,UbҥK1zhԪU �1}dZ1 B5j*9sbP( AB( BPBP({5j( BĨ֭`<�c^=o**R* cޱc4hd j>k׮EVLRĔuIP(U 5G!L>=z`~߽{נ*uKs#Ĝ9sފҮ( MTk.䍍wBkTSN!$$NNN֭rss} ev޴i~cҩQ9矙+ ̚5  իビ'OC;v 00Ʒ~"4iyyy͛7Y~:UkСCִ_f͚j!Cm&Qvm1o)JZh<==?SРAxyyvjgeegϞY&BCCqq򔔔 &&Y&q}�Fx<"22ě7o��oFhh(Ǐkgر<y2Fp ˗/j׮ ft6ڵ mڴaeQQQC`` Tlٲ[fZt)|>�Ϟ=9 YuF`<x@o]z <k֬AՑdԯ_111~:ǫBPvI >;w$EEEZ?ɓ'Xg8ϣG\.'L>CXzz:@ƏOR)'dժUB&L@ !?X[[3o߾Mȭ[!xxxÇ3/[oߞB yQ(dԩD,'OCb"ȍ72tޝ<y\pTV )vv6'+!4MG!m۶dD*DBȤI!LdҥB$ 8q"/#ۉH$"k׮%Dٳg !ԭ[iӆqII '۷o'"ɥK!L<tЁH$"JI߾} �"JȵxbR^=RXXH 1bԩZ/ !rҠAzjB! 4 c-[6&L@ǴիBz*$99BȖ-[5#n∵5ٹs'~DD3f D&hҫW/KbffF !t҅lْBٴiرEEEd֭YfqdƍL|}u̙3L&SKs˖-$,,4i҄lڴI-M B!})**"ʕ+ݻ$11ܻw$%%~߿OHaa!g{ɓ'$??_gmKL8BVVVhܸ1�4m�}gϞDDDpɓ֭0o<H$r(Dprr¶mp}899!>>kfWU'N@("&&�Pzu :wFZZΝ;3f@(B$O?e6 ǎåKrJtޝ5F t6mٳ(ձX,Frr2�C:u.O<B$A(b̘1Zcʔ)p,,,ɤDc8Gpp0>}tܺu9x5j0IOOGQQBCC+fΝ;#??/_d P79998s fΜ >@ɓ'ѣpqqA@@�.^T7n`ܸqO>]f_iӦaʕ矑#G <x+1l0\rk֬J_IPy'P\VݘpwwW ԩS]Z5TVJ|>Ο?%K 22rcǎŗ_~ɚevJwFff&�K.̾ R%%%e]~=-[LjҥKaggW&^L~8..۷oD"ӧO%ppp`MW/_bΜ9HJJ@ @NNNu*#�p·-t_8{,x<in\XوĹs`ff }Xp!�̙37oZ]v_Sb„ ۷/1uD*b߾}Xz5rssBPeQ  iiijtRT!//u͌>|||/�(]#ӵkW(רQHII)N^D;>lmm1o<̛7/^@tt4͛˗ #G`֬Yz*|}}  S_zU޽{UV|2B!~7̞=[oLNNcGsŋq)ŋGM7lR֖ѕ9sB("""̙3TPjt7~|<x0Ǝ˴ CXnmۆ-Z`…7JW RO\ݻ7:G(5(Ο?={�j֬D�FˡC8|0�� ,(s̅DjՊ\<b(**bۮ];`Ϟ=�J43fÇaccΝ;c̎6mb⪦-+W�(\===䙜3 qVVOӆ �@۶m/D"u1++ !!! HMM͛.Uظq#Rf޽ףRB"`ɒ%�GժUCtRB ɰl2<-[DRR9�@6m70SOׯ_ѣGmٲ%v؁7oޞ4.njkkk$$$`׮]ԠP( QӪU+\QQQ ĨQsN�.\m۶!<<FTTR)�DHH5js"]Iݺuѹsgh^^^ ATTz`M͠RbmmV x7oFff&|||XfjGٳ1zhxzzN:(**R{IL&CӦM`DDD`hٲ:ݻ7ƍC*>W_}Goj֬ƍ�i?>ի,]h߾:زe > wwwÆ cCӧO۷vڡW^ܹ3v/^pJc֭HKKC`` aaa+V�(]ժU+$''aÆ�J 3F́cJGGG̜9'N0.=Yf非P(w Ν;I=:tzIA6‹/>QrYSA._L_hF1YYYOcSBP>` ?~ B?ʊlB ΂T899=ܠɁfT= vWd�^;;;) <~ӧO7 N.(4i?۷!ػwoGf)ʤqƦBP9>x�>3|gBP(J9য়( BPBP({5j( BԨ9z(ڶm [[[XYY^zXdIs!&&SLy ,3g0S fffpqqA߾}qrッ9cǎ*ڵkѪU+Sa0o[ϟ?CNNwS޽{z޽{ KcÆ �J_>;Bhb2fÆ ۷/sddd`ɒ%Xz5Ə_&>CgҥX`[666b^-["!!Baa!]5jyx)Mի2{>}Ӧ@ufmm �jךX,6m $FMqq1f͚ O?-,,,бcGWǏ3'OFhh(-Z~PKuXd Ms�Ǝɓ'cĈvٵk<<<QFaذaGZ<rfرc @ @Zl2XtZh/dj,H0~xf͚<x0+=z߿̹]v^zEppڛw؁@x{{[nII bbb鉚5k"<<PI#Cll,"##Hfo۷o#44ވǏqر8q" Mnݺt -Z 88w1c֭[N !Ϙrh֬QV- 2�J_4p@v:t(SUt ]zT˗pssCnn.ZlYm7n˗/T*Ŝ9sooomIIIz�'OcǎB50p@ֶw^oyyy`�J_(qmκSaƌ@@@�ZnP(?:uŅjժ!,, @雺=<<�PB$FבaÆ9l w^oػw/>lݺ \zVKC(bX`Ο?'OP: >۷oǏѥKٳӛ?3DEE۷o�<y{U#F'rssѭ[7L8<_2_~ddee1^~H,ZQQQjΝ;QFaǎx!6n܈h~%%%9r$v܉\zW^ӧOȻb \zIIIx|||)=!q;v wAjj*Ç[nHII={XTСCXr%\uG駟pEhтuNMΝ;~ wAJJ 6mڄ[iӦHIIArr2pY�`nn$<zF4tK2dbcc/޽AC||<._|߿^9�`„ DJJ <xwbʕZڢGjݻ_>gŋq9\zǠAУG�RRR__矑[[[f ~5 E&1j222`ff쬬M2o߿??\z�N:ťLfKHHQTT?5kdAzb2,]qYXZZ"::@ÇG||<�`߾}9r$,--!w^|L\DFFb2dHكΝ;~°~D"899a۶m>ڵkIgʔ)p,,,W-СC�|>x)q-朓cj#<<1zdzg999k<nnn8v.]+W{HKKùs0c BD"|ؽ{w.zԤw>|�عs'v '''b̘1&M޽{ze? +++nZ,CE\\Ν;1|ptq1GGF^^㭱ȑ#ꪳ`ff $F3JJJkaU7ݳƀo͞={0|pxG(ȯVZ* Cׯ_ё;##9KKK7O6 >d5DO8OOO擘 |?ňD͚5pB=^|'"44M6ܹsˬeԫR�ԌT}%ب\C>֭#GԩS B p�ѢE ?NNN9r$rrr �ҥ !C@*D-}mi胋5Gnɮ]0b~ϟ +++NիWѷo_Yf8p^Y:uT/^+W0h tm|>vvvLWm@OWSO BчIFɉ~QÇ5jӹiN ..O<G89bgg<c\w^fSNc:|U͛3g iiij�pqqa:zi̙3sN :_|jԨ޽{ɓ''--ٝ <ybʕC{#._+W͆ҘQ_zeNUjpnnv!..5k4b޼yy&y1޻ .0zxc8dٳׯ_Gnn.:w?VYYYQÑ˗/3;g޽]tAPrdee1PMB|Ĩ133ҥKcHOOGaa!;>Zwlڴ)\]]1vX 8"Ƞ[l0SXFbb"s8z(Ǝ DDDҥKH$x&Mm۶Eqq1͛ѷo_�@߾}믿"''#FP[S=z`Ȑ!ׯXIqAfZ!==DJJ ѪU+h ,@("557oFaa^ 007nPjݻ" j֬!sn֭>|8JJJ  B! c<666ܹ3/^x6mTfL&ӚvbtW^᧟~uLǚ5kc0`�c9r7n(^AAJJJE 8y$BaMÇ#..q՝>}`ݺuիW}lll )ʇ2dqx{{sł pBq??~l vX|9뇺uԩSڵ+3X8p�K,᜞%Ο? 8h޼9 pUԪU ժUÑ#GrJ"<<C a̚5 Z<==amm:Pe êUЧOUVhԨQn]t-ZBBBUfveGzK۷׫-[pwwG~0l0).C?~< Ν;iӦ W^�JcԩS={ĶmٳgcD:uPTTxL6oތLe� Bij'Q$aؽ{ڴԩSѾ}{GСCѢE8rHjժYf!<< 4-[n:<yRǩaÆӧO;%3f@vФI >>FO!M4Im3Bh۹s': l(Qr^x///巣ۇ~BPcǎҥ L,|رcGERѣGZ P(cxxxVVVxe>lB NOO);99iJo,lwn ̙3_~QKJJ={��#<<�cL>ŤTqR;T&B|M-!̟?WƘ1cгgO033֭[1sL̜9fffXl5j�FS>,R;ݻEP(*;e|W$EΝ'K( BsO BP(lPBP({5j( BTicǎH BP(2FL&Á �իWѡCN<�BP(5/_7|???ٳy5'ТE XZZ}:tQF̖�EEE֭:wxN!R( By0QCSлwol�.]®]ݛ9](}eÇqܾ}3f �?Fbb"O͛7 .䴃1BP(5qqqƀ#̙3...yBsss�2;x<th”zP( RɘĨ_>6l?K,Affk׮kf9::2@ANNZcƌ8~8Y$BP(58~8N8 4lÇg6<r䈚(JIFF|>k"$$sE^9sP BP*.S/^Gcǎ>}:={Fo�ƍ@ ޽{ş@,X BPL@I,#::x%>}ZfMLNЩS'<~...�|BP(JJ5YcÙ7oţP( RE1{j( BP*jP( By/rOl<z"P( BAy<ф1a+w¨P( R5 0[i3h�k=F BP(BP( H<5l|AP0a6ԨP( qRRR3Pk"J7o@P@Px?;v@ 8wggg&MBvv6ҷxwbӦM3Xx"5jdQ( -C!~~~Z �DSN2FL&ÁcAwŋ J;//v�O�Ɩ?J۷o#,, y&qA<x�mڴD"+ +Wp-r U<y)))?~LЧo BD Sјܨy%aϞ= زe v`���IDAT7oS"<<5k_ � 3g4hk"??_kڷnѣ��݋�Q~}eh߾=֮] B4h�qPRR„=uBBBnݺ!77�PRR3f �hݺ5��vB6m0l0xxx��jԨ#G0С� ++ z'j׮6m0RRPP_5̙3!�z߿֭[頨ݺuCΝ,DPѣ֭"##4j<yu֡]vS˄էo BPʃIBN:޽{e˖tvB\rmڴq,[ 'pܹwE@@�Ə�P\\m۶y戉Af(R/ăкuk?aaaؼy3 q 6L<+++7666̱K.ƍx)c�ŋq9\zǠAУGC$ƍīWm�<}Ğ={��4iq l۶ ϟGz��;ڷo_r㏑ӧc… 鴴4,Z~~~Xn&M$�3I&+8{,߿/^`ɒ%zMP(Jy1Qh 0�=œ9s={PuB֭q)|PPVZxM+WFBBF cذar ֬Y_&L@~~>JJJƩL'NP(7ngϞ�ۇq�0zh1Xr oѣGcbܹHKKC {_~AppZ\]SD<:t"%%{m۶wN>xtIm#GйsgccǎPzR7mP( Ĩ_>6l?K,aQԎ=|_}.]]vEII N~ӺTݻwcԩ XXXӧdoo| 4ׯQz)χRSS�NNN6f̞=˖-:uꄻwC +0w2SRRNBΝuy̘1Ǐȑ#�Çٳg1}t={LU뎭MP(Jy1QǏĉ@Æ 1|p\z '##NNNP(Gdd$w5jݻضmѵkWܹs?#/d<'<s΅: "11={Gv2JJJ0rH45qssS+\.GVVs@mѰrm2'|3gիW ĠA`aaM6!)) ^^^ի>#<xr.\ȗk"$$sE^9s��>3_~X`zjyѱcG4j7BP(Ť ԩŋѣGر#O zر#<m۶a̙HJJ´iP&-[bǎy&S&̘1c`mmڵ j-Z7o_~HIID"[ХK$''3.u1eW^ WWW4nܘ5|͚58tsnܸq̺kkkEvvv2e ݻٳgc׮]سg7E… q=?Ā ˆD"gΜ}#|8uBCC5%ׯ�b݌ѣO B*=XhDGG3ǂիW/вeK�@TT1sL̜9̹G+W૯BӦMԬY }%3f@nn.4iBjԨ2 bر?(<y�0ydL0K,P(;6o̚N۶mѶm[�y7l2�qx)"""0uTNP( <vIzvСCիHrpuub/^ˋw؁~I+QfMdggP( ( <~dsx<7o)իWAAݺu99% NNN+I8p�lBP(Jէ<{7UƖԨP( ՙbUAVY%TIftF Щ' By̮>Ԣ"$''3" ) BT}<<<ܾ}1rxpww'jP( B ǃx<P(ch+2ݷ 5j( BpzprrһN3PBP(Av2%Ur0BP(PBP(Ax%ϟŋ&5 BP ȑ#)bbbxbE BP(1qDc�deea())1cL"V5\eIBP(Jţ9믿Ƌ/0sLb̙x5,X 1v6BP(m'OFbb":w$L6 Z235 BP ~_~�hDEEtvBP(QB駟}[ɗTQS_CP( E7o`S BBP(J'''bpҌ[[[y٦.3BP(=dgg#//vvv36dnn�Gnn.$NP( X @�{{{bSÙJ](lnn7 BP( }BP({5j( BPBP({5j( BPBP({5j( BPBP({5j( B;veP( R"##M-'*½z2u9) BL-gBP(jP( By/F BP(jP( B1BRSSA1(PBP(ɭ[;;;oޤPO BP(x!RRR��999xIF BP(y9ܹGGG}6^xa2QCP( 222�j "Z5]LE BP(P֭[C(H֭[C  ))$rх BP ",, <j---ѡCx<E BP(aaaaԹ ~P( ^@ BP(tBP( g!G<TSSŘ8qZCP~5Npp0k 68S Rr<ׯ_իWq5OBB͛x EG=5 BPBׯKx<D"^B^xWWJT)%%%Z;::"55t>} OOOa:ucǎZ48~0nB N?z ŦVBTY annC(d7#R)ީL_Nj7 t4 BяZ??? �D"ԩSYwSY;xSF `ܠFZ bzD"Qh9СCßij)ĭ[SPBP> 9Ǹ}6RŦT xk^~k׮Zd BTUިa[Xd.2+Q*ÇP(*oԫW1w2 1'''XԬYvvvj.\,Nٌںu뚺X By TyիWW;vM<{Loܿ jڵkr3[QQQ b1p̙3.\\.7!HI&qN֭[ix<.waa!ڷovL&ȑ#zjǜQvrC,\=z@:u�HjժݺuâE ׇ>VY~P e˖pppX,+0rɓ' 5j@ƍ1a:uJ\o 4Ty:t(s.}2j<yC cǎŁ?אJÇq,\ ޽{MGXhs朎K3:vXr糦˥O<"c(((0Jdt ~~~3g㑒ld2ӧ8z( xyya̘1bDmK+++7 ۶m̙/";;Rv͛ lڴɠ={ }􁏏>3FﹹH$xnܸ5k࣏>BFpҥs RFMQQ:uT8Amnݺѯl޻w/}vѷo_G6#F`=S΋:Y`,Ŭ /fj:\8u4hޙՔu.{)KBH2T(e+l}c;M m%I(V!6~~3u[Tz>9*#v؁Ν;\Vjb^jii){�}ve{L8{QpppcTܽ{]vݻ)ʗ(zS/ϯ"99>YXXqƕǯ#FTcǎEEE5{kNi8*},uH$hРZj%#D8stKTnnnV,SSS1pJ[\1bĈ?55/Bq-L>]!1c^|YfX 2Dn Y2&NǏW_(ʗGWj `ff&02ߚWj5k۵k%K~O?C+{E֟ʬ5p{:w\PPP-KǫWdd-[DӦM+<Nк%KիHIIADD0sΩTjr^*}3fǏ|Z洱A˖-(aJ߾}!C(TpIdeeA$Ν;3gܮ6D)S$ RJfYQ E~U&H0fs555ڵ 7o1i$|8z(nݺ{S֭CRRRSo޼̴ʖ>FǏXXeBs )) .\P˗ [ѿ+KR5=/mFll,�o˗/{!-- {Vچ`a6l@ffw޸|2 �###hhh6lgffbժU nS[h߾}"##333/#իW?Ta7oVjhӦ N>PH$ضm[  ''kQϭBУG%,ZEmdSe<OiNP^z'VU+RjYl6n6hݺ´?@NN `۶mJF#FPPV׈B|yFy%"gϞ.wѣRgDzPvoѢLRfZkkk) ۿt\%d;w-Z|:kjj .==]⠣ ;m4dgg^~ P0Bynnn-ԥy٦M,^Xa:,X4mJJ,,,Lq˝k>>>r  ?R8*x<M$j΃pŸ|°#F3 eذa 幹{nOE@ .\P b9P4j-=)') uuuttt)Ky~uɓ'yJ"+E vWByi-BU}+TnQ{p?#^^^8pԩSH$썼@z0  TnݺtJy8::* GjO>Ge䅅믿>Өۻ=p@L4I #$&&XG)5^^^V4ܹsrrr,eDU6/m/) 0EJtBB|<oFjB,_RP(ĕ+WЭ[7�J֥KxҰ-[ ?~\TiVj>|2ЧOӞ?'&&&ڵ\]N8*5޽ eZ TA$aƍ? iҼ*7BF˳gϪӫ=O Rb|jO~vSڭ\,=(=el6Z[[+܆.;… vŠP4%?,,LrҫW/hkkW7nUVW P楞)72#ETJ[yR(�JV٥[SWWW9eq;}sa۷)ҪXهVu/=%''gϞnwIҼT|o7QBo)5 sJy&rssq--lmm+;>5m Q`+|ȟ 5^gKKKSb1ƨ(0V'*|3 Sʕ+x%Xʜ[TfA9sΆcIB=8Ȉ"q%P'�044TV2sz3=j]]] 2DN^Y>TQKOR -|W011T9oVY5k_~aJZ,>V>/-ćA)ʗ�.\p,=4kLi5s_n޼rQC$''PԠAg55ʶ B̘1Ci/^|yiffP$ B)(zS?{/ڷo_rڵkMMMaW\Q)8a5[eӳgOXXXɥKP|||<scooKKK۷:WEQdѤI2}W.]Y_eNܹSg_Q((RV|Ȫҙ#hԨo?' _N~I*<6VV$ nܸ!#STeK9e} q\}]tQ(µkL{}">>O>- E*5j KuQvgNNllҏnN6swʌ;Vn[n||<֭[yp[MQaJwm޼̃ުk[}JjV^]fyaprr qnBXe##j10�mڴQ6w\;vLaX\\uuu1iҤZ5XZZUFF… + �tڵ\ઞ"̷D,cٲe22Blقs疙gbbb>KMMML8QaXhhүn8p@] ǫ :Q$ҭCS20 {k׮rb 6 ݻwG߾}addׯ_… T}vv0n8&EuEnVԣhwEѣҰ 6͛pqqA^^e=i$l߾].ݪU`mmFWkc߾} xb={F9222'N(l۪U Q(�~'aՅ#~gL2EM3::ZGJ7Teذa>}z#_}U|T+Ujc;vΝ;+ p9Qzjr>4iiiڵ+�~ҥK+]</o߾ TmƏ_͡P(5(_^D>}I&!88B'a[7n~R 18uJ#MAt۷Wh{_ ?Qy٧O;vVQF?fP(Vjn D5Jݔ͛71o޼ZPtfW~:_SSrN0kd٣>#..S9Mƍ3 E/?q8 4Hws~Yf8p�VXp9s>DVV޽{===nnn۷/kTk׮hٲ%߿/QIed �S} >|;v <<GӦM & k۶-^e˖ҥKx-B!ZlݻǧX祭-qm:u HKKׯQPP�=== }2CGa<H $# EiYIb1޼y33r?>YmKO-~uRCP(OHHG$&&aIڵk jjQ8222`hhXfEzJhh藽D^*4zzzU($BP(5Uj(,֭S(?~|Q) B)RCl\.N2KP(JyP'OOaؘ1c*4BP(u/z⤧cȑ011Arr2<x0fP( &JB'fʕhҤImWBP(O9fͪjP( 2T0 ̙CP(]~N:ٳgAAAФIt'OMmWBP( C5R٧BP(/ DP( ^@ BP(P( BPBP(J*5 BPTP( R/J BP(zUj( B RCP( ^@ BP(P( BPBP(J*5 BPTP( R/J BP(zUj( B RCP( ^@ BP(P( BPBP(J((((7N~~~׋*5 BPʅa2|<z ðik$ BP(uB#ܹs)@(Ɣ:i9qeׯ_v( B0 8  ^7-5YYY1cڮ BP(0 555ʬ5 ÀRu3J͟3f ++BP( E %ڠN,?LJUhw]vH֬YadB0 ?25559Y]?~<tuuhѢJbŊ WuaЭ[-BP3uBH$��}}}… hԨg-355 @KK볕CڬP(9ܰ|r<}24mUҾgΜ a믿V{֯_ݻwCCC_5+,,,_u, P ȯ_+Vh]( P'7lSSڮNp/_ҥK8w~G̛7?#NY<|yHFj�[l#*1}j_y8::r ݻ-G RO͛õ]ѣG乹lx 8Pխ6eN#H[>~ar?k9/_P(J}N,?%\a0bb֬Y@ |}}ŋj)KGG3f@LL tuuqAN_(*LO?a,\PaxRR`ddPlܸQ%otE>5}0HNNFDD\\\PٳG&R[,X�mڴѬY37k֭`/^� X[^C<ZZZСlX,"l۶m8v5k@ulߨvbYy~ %%R]0 7otV\ a_T? BP�l֭[۷gnSk۶-P]~}3|WC?~o ,Rٳƍv܉ŋ#-- ƍÉ'7 kM),, ֭[L6 śߏ 7o, D-�| dVXXvyaȑHKKٳ1i$ۙ a„ -7m@@�FObԨQGvv6&L�霝e�@bBZZbbb �7RJP(H$S$+%餠x"?~ToooeeeU*e�DSSSF9sLBҠA\~2<x@�@Pn܌ 0 @222!痙~�Y`+[z5@![lury+�)..fe\.WN6tPhkk'Oexzz*mcxx8@Ž?N!SLQi\]] �ry.]�믿>|ȶ3--/_� /fe?3@tttU!�cǎÇ<//�$44B˗ �ҵkW6^qq ʼw@Zlr=) "?~D"GIbb"IJJ"$%%{)7nrHDIzz:-32݅Zj0 ~χ3�Z)�ZvC5i3f̐9::W^#N>]Ǐ&Mwg^^^(((m۪+V`7o�wtǗNt�� ,`=�cΜ9r9"fرU7 BPF 5\s|}T{W弜nn߾=� 99yU_\]]'N`ȑ8{L|>_vֆD"7o [ǒtҥB[ڥN>.6l؀~UMfffׯrsse�ȑ#p83fLBPtRE MIg8͛7��CC*U,}SV4lgΜ>>}@__ݻwǦMSv`ܹǃ`ff ellr\Xoߖ?e„ �{{ݻӧ6lXeR(ʗFMRRR>͛W9?GZӟ/MNp!""QQQŋvZDDD]v;??HHH֬Yf͚ASS]BʜmT[? 333DEEŋ077Ǒ#G�Х' B[jڮRcٓ}xH-; ?5"899aٲeŋ/0qDz ӦMtǎCBByaСG,o)ᰖj_MM _vQ(ʗԤښUX[\t � #>"˥+\8[nǍ7&&&ؾ};B!J/=MQk׮}u�%v)t˗/tǏwEBBF @YEP(_ uBA֭e~wtE&<$$]ei&ś 0 ZhB.\ e`JLL;Ν;ϯjUGǎq!۷oJMJJ`+.Ft2/_/^\.<x\\\\p5[ӡCTmDR(ʗDý{ʌS[DTZScذabYYYy&rtR|riǏ bܸqX`5jϘ:u*n*+='OƱc`cc C,￯ol-YΝv {{{<y'O0+pBDDD`prr«W ggg̝;s͛!P:t(~i �Add$={[iza`cc۷o_~pppzƙ8q".]ƆI7o={i$) nR'D"cddzzzF^0eXZZ*L;o<bܹs΅6:wx[n٢,uRuttļyxbB$EXbNZ+`ggk׮aƍ8{,]|wޘ5k\]]+Ο?  ::h̘֬1999 C\\nZ ?+p gƬYڶm&Nxܿ} 6lۖNߨP(sA2h ahh(JJ"}K42_P(Ux= !@llr( $%%ASS>]ɟ"!C֭UupCC2_)uçBӧ ooo_(r $ ZjUUP(*5t;Yb  @P(%O Rߐ#G ++ K.¸]] B5RCq;sK,̙3kJ R'J R9{lmWBPO BP(zUj( B RCP( ^@ BP(P( B[&11 Rka#f0 %Kv) B0ԸalڴIiM6a4mTi<0 nViӦP{.ׯGLLȑ#ؿmWBPT֕�N:4Nxx8�ɓ'HJJR'** EEEh֬lmmkYu|W,Y*5 勢֕W6/_\<\|�>}ORTIM k v5U˗/+gff4 BԴh(..ƙ3g¥SB(VHySZr(**KKK/^˧k׮E X[[cɒ%x\|5552d+ȑ#ի!ФI7=P_eff" � hժ֭[D:a<{Ln}jToiN>}<prrB`` bL-Z@(B( sAvvLܘ0 #F )) :uP(Ď;*=V tuuѰaCxzz*oڵ ...χ9x0 lقX ? D[ �XhSSS�@dd$~G0 q)mS޽0 8r?P(JuQ'>0h <<Æ Z`z0"''l;wׇLz>///<x�D"q$&&֭[ɇЫW/ӧOsrJ?~/_!:D"-Z;wvvvlY?!n߾={ѣ8w:uTn[nxڶmC$᧟~½{X+P(,3[:::2d7nl>}3gիWqrs8::"33...2d M6̙3q[uuu�,u>>>ƸqвeJ2&O 4mcƌ>>}P>}۷oG@@�Bƍ333ܿǎÉ'pA >r|>� ::˖-_c͛7ؼy3f͚Ǐcƍe^'"##1p@͚5uVX[[cԩpwwDzep1/АiׯqvP(JsA"d~d%$==O$Ǐr @LLLD" kԨ166&,_� 2qVZE�___V@�>O<==ɇذ,E�7oy�dРAK$@�� %ݻw2a�$2a'�H֭X,.V\I�.]"VA,--@0.K�ȴ^� /fe;v$�HLLL|ҩS'I˭E�-#/,,$�ٽ{7+{.@tttȨQEeJ999#Mlmm>̎[;<aߗ[pOuuurIZZJWxb^Z&ٳg �.#www'�Ⱦ}ڳ}vB|9?~D"GIbb"IJJ"$%%{)7nrHDIzz:-32ݥ֗�s011Aff&_޽ϟ _MY4EEEضm�FFFpuu�cv9@M_#0Xv-x<8|0X���KX&HMMElll} �7ox<+755Ŋ+T޶]V};�\(+sW|Ν;2>Y.]*c<bp\9C&Mk$$$ڵ �0|ѣ\\\;<yR��OFָqcxxx@,K_u7eL0�w^`�رc+?BT:p8 0�.(ҷo_�@`llB��ٸz*|>M4KoR_TaÆSrI`kk H]┆`ʮ^Zn%''�WmT-[ -- .. ##2H166cUsss8::"++ ݺuáCmvZ']ڹy}lEl{K2 ###?+Btt4Zj.]T: B uB}xt<}48[;^z'GFXݻCGGG.oRۜQff&O (ݺu �dnʑH$ñE ͣ(!//'+Si,Ki֮]9s͛7={67o | +C"_~|>`ff333,^BX߿?1j(-Q⊋Y˕_~r(S�?̲:[Y|=cǏX,.ӉBP>7uQ[n˗PWWիWѱcGߏӧOQ鮧| 1y26o\NVrI� !`T_ǎ,OxIUDE-5 . 6ӧqDEE!((AAA' �;w)Ν {{{aa۶m*׳cUcccÇǙ3gpEY6l>.9&%VxHSb�?|+ &`ӦMػw/.\ӎ+.ѣGW)o B uFQWWN<gBCC?~d\ٳ�4h�Պ+a`bb ?m۶t^��ΆLxNNrrr\044ѣٷgbررcZ3ڵ r 5k&^ҏJ{hf¬Y;woԩS1h �o߾Eff& �vK*HӔ۷*U<lll䄸8ܺu 6Dtt4ssV.BGY~ULqE�SjСCKk7RVVVKFI_ Uprr�-VƯ~'Ҕ1n<y'O81c �`#B`cc#BXV_TXb$&&)>}:z> %%c:*(qMGuVR?KO NP &&.]Bؾ}ׯUQD2ᱱ077y~�>� tfff*_HeLYYYrREHJJBӦM1tP֧G !=hQFe# OOOLJdVZǏP;۷m۶X`\XNN4l�0qD�u{) *sJJaun… {eTfIJAer)ѣGqaXKsss%ϥpS(Ji�sθz*8F?#>? ::gϞEvPD`޼y*ׯ_?L:۶mC0rH4h�O>ǑK*u-ɜ9sw^(**1fݻ^񰱱ĉ-[o߾hР[n^Ҵhx"wCÁЫW/:u +WW?v؁۷ʕ+puu.^~p<:///c޽a``$8qطo)SرcCvv6 XES&]ڱcD"ձqFj <7F ,[]ֆ7vڅGaڴi2mdclP(F]8|$k֬a$St!|�q H߳W>a2>kגMMMHƍɘ1cHBB\>�Vڦ?ٓ.KH߾}ɩS*7dРADOOhhh�y5_{eW{sNңGbjjJԈ&'K.%*=++L84nܘBҴiS7߰4i"FFF$22X)dٲe=N__]v'HȮ]Hn݈[?INNV\i/Yܺuߟ@@lmmɶmʮ&I@@�%Bٓ ۾};133#<XZZϟˤe7nȄ=x SpI Rwc<HJ/߄#H޼)UCKK "~*R7Xf -ZŋWsMK4l z*~B|9$%%ASSS //[ViW(AFF ٣WHO [O~7йsgB$̌*4cӦM 9g݅EP(ScƌX,f?=P]EJy\|[lF%-[`̘1]U Zj �_p9ܾ}5ҥKkzD"ŋ3 NZZZ RSPKEHH6l�CCCݻ[nE^^f̘ׯ;S(!6mBpp0ڶm q@P(j 3g̙SUT .d?3%rQPPPՠP(PK BP(zUj( B RCP( ^@ BP(/ZYn͡]�0 jz ?h͚5`K,U+]/:4h� ƍ*?<,X7oc󱰰gS]r/} 2Tcq?ˍk.6;V EuF(ׯ_�L0{ŋ�ǏYMuK̟?N)5AAAT'0 vQn]oeKmPJ*5��Jy/_uP>UڵÅ Cqnj/B)$&&a,[ �l20 [[[�}jd,Yhܸ1ѣG�Ek6^ �Xh˭KyfΜ +++K.رc$ ~0HIIAaa!kF}vӧ탽=444`ddoooz Ohݺ5B!LLL_ߝDǏ aвeKƍ9|>LLLп?^&^Ϟ=0 ݫ0ٳgM@899AWW|> 6'Uj4YfFzj|A&U0 mۆT 6 ĢEPTTr٧OF߾}abbccc899!00bKr]\\0 ¤o-beʌ{e?) W'((�4ŋ1x`�={ġC*4/Tv>D[^C<ZZZСlΟ `׮]pqq>|>1|p/y  ={(,"7)5 D߾}�}E`` �޽{ԩ:vaܹ4itttft֍}^ 8(_]v Dͱh"3/^I0rHB��زe �@MM  DFʬ?~WYgѶm[cĈ5kxbo@PPfΜ �Ԅ7!طor�cǎ-w\W_!44z’%K0`�\pz/Ɲ0a�?PWDD޿^zkEɓ'c̙xƌ w޸r ﯒iLھ}{M6?> HwߡG2VCܽ{h֬mۆ͛7b͚57oJe8p�r <==h" ++ 3gѣPI/>/�Ν�Zܭ̸W+I=```={X.CVؗoѣЧO|FJJ FYf\)5VB]b޼y9r$0{lL4Ib„ x1|||dNBnpk`Ϟ=7nsN,^iii7nN8!7sA"d~d%$==O$ǏU055%�U?�~Ջ� gϞeeC !�H ȭ[dϛ7� +V+c̙ŋ�d*ճwؑ� ׯKڵkG�bC!CeݻwݻwD]]� ֤ {p8DCCbB!W^%�H-ʐH$aÆgϞYW^MMMȕ+WdRSS&$==BH~~># Ð'O7rH~h999#ɓ'D[[DRf$ &�eŠ@/_ �@ڹs@1( \N:MMMN^zE!2N>M�???ܿ_mDWW˔ܭRB|}} �re2{lr:D�kגݻw�d2c@ wܑIA4h#]~zj,^h+!t҅� ÇD �$--Mi!�iݺ̽BΟ?O!zzz\z֖-[�ӳJR1?ND"#$11$%%dBRSSɽ{RSSɍ7H^^^H$"$==OYj*gϞppp {O_.͆ PPPQFUh֬[X|9Ueĉe.)SdܨQ#4i>|˗/�NNNÇ+wll,k9ڷoD"ХKVZaʔ)(**b-BBFRh%*((@XXtuuU r!I&x5uCJJ ,,,_˄EEol߿GFFFl B\|yyyhڴ)LLLЮ];ܽ{ls΁bڴi� .a ʂ*5w+:.ՁԲԲxvvv2aBE5V�Xb___yE,v�?̽dMrqqwpIǏG&Mdd޿<]JE; �a`,\7odT*\\�૯R֭A||2nZN � `a%KΥ&qƕ[iXsvvi}_ĉ<@(V*sss8::"++ ݺuáC6>W]@xv�%H�rM):::�u/_e)m;$ .]Ν;ۣs044QjJ/=UfVfܫ5uѣG<-- ϟn>v �p ׫"& |z 6$ ޼y ddd@OO@*}P4kcQ.)XN6`�޽zzzXv-:t�CCC 2VN?33mRߒ?===B طPIհ ѣ*;=zzzz*9rJ=qD4h�aӴkڵٛOIe2>}G||<FccccѢE2ʁ*R4OJTRi�2VE]v-̙7o`h޼9k5*%~5_Ɲ;wX'VR#MW[q&M$DsNB,jO\yTd>D[ ''s΅%x<`ff333勋ٱLu 5(uڮ@Mヨ(DFF"** !!! ͛_o&AV۳oPSCgddѣ 7bcc L<YKiЦM2*Ʉ 0}tݻNNN(((S`mmΝ;W)cccÇǙ3gpEY6l2%XHv. 6ӧqDEE!((AAA|谊AA=��ݻwGHHRRR`eeK. 6ʎ{U6lf͚ݻwcp8سg,,,лwoϪ&ښggg$$$k֬AfXkʕ+=+d?|>joQ&uX􄧧'O۰Ǐ8[V7h��дi/0'ѣ8x +v)mw=0c ܹs@>}yyyr~�ZhYfa֬YΝ;7`ԩ4hPʮ)$K{(} 1zh=gϞرcc :}􁚚z쉓'O";;QQQx֭�'w2KenUƥ*B=[lAXX^x3++K&^EQu>D[;888ʕ+r'_ܲ```o"33S奪}<MSOx ذaO5Ok"!۷er7_7o?D6mŋ E" zzz:t(޾}(߿\.ݪ\b1#O]]ӧOG=ԮXg\r�`cc#\<yO<q87s/_ƹsЩS'pk)TfVvܫq!p\?4*;�P,/&*=MNb}esY2jcQiǏ7v;U+=:v숗/_ 䧟~LCaaiMp0n8a̬Q_2a󃾾>Μ9#V꨼k.>}033R3{,X W^NNH^ѱcG_e A6T$4mCE^^L!=ܖ;v iii�֯ҥKr tttW_ᕙ\eѦMtQQQ卧B!=[nɄ=};v�adePe>D[ YAAƏ+ϷO�n:NB\\X ve<eac^~RSSի1n8oCf@ABB"##siڶm 6IHuuulܸ߽{7zUV!&&ݻwGQQ._X4jH0 lllpmBϞ=k/Ǐ˗W;ƌOOO1FXX=z777K.mѼy2w[U4ر۷oǕ+W ]]]~x9䶛*bٳ'f̘3gΠ]vx"##~aԩ>6668q"вeK 4@~~>q-cذal j �9'N̙3߿ZEneƽ"_y~Q(fffغu+#FO>EHH޾}UV޾|< .DDD'''z pvvܹs1w\l޼"H!^^^޽{aoo�III8q444o>#*JeQff&cǎ3>jp0y]p 64nܘB"HI@@�yL\XL. gϞֵ"B̙3I-@ X[[瓬,W\!mڴ!<'OYiɅ�իra666�y|{M�4v1b133#jjjDKK899@RTT4ʕ+ �bhhH %ߓe˖b``@\.'d׮]W4_ 񈶶6qrr" {p{fRWܹу555IҥKInn\Yf9˄ݺu=WX^EnEǥ2_JOL!ŋdؘ###ү_?!WJ|ms FFFDSSmۖl޼b[Jiڴ)R.DBvEuFttt#7&$99Y eݯ={F� Vi=x˪d_K:|9x nyҲbyfffnyQ/)S~Chh({FJM|M)5իWڮJ'$$ )) +<nZ]n044UOT_KKK߿F޸q#8{-%Cspyv9RJ |ǏLJ0*\֮]k׮ah޼ymwR%|e3BfwDFFٳ믿^z}<>vލ7n ** fffشiSmwR)|y7DJ~:6l؀ L6 eVXn\#&&^)ڂg JYd ,YR庸T\J]g  BP(P( BPBP(J*5 BPT[n0={vmWNP ѣ_D}?'FFF`܏ $qqq`ݺu+SFP(U*5۷0DNNNmWBP(JN*5uٳDP( S'@_m۶RբP!EEE] Ba?~P(_(uNy%?&M`ԨQpss4ӧѷo_NNN T[,X�mڴѬY37 p\xcƌ)|>,--wߡX./0sLXYYA @OO]t; HTX,0GAA/^-Z@(Çe,\ `͚5 0(((Q\\˗0f?c5Qߘ0 #F )) :uP(Ď;֧QFrΖC(aɥ0kvACC:::pssC||9^zA__�M4q#c>KyMƍC qƘ9sBgϞaʔ) œ9s�`bbcȐ!ֆ/�`Ŋ`۶mñcЬY3ikk}Xz5>|ƏBT:o(..رc0 &M�_?p�<==qxzzbѢEAVVfΜѣG[faa!\\\n:`ڴi3g~|Wy\<tO<?ƌW^aoe޻wڵC`` 7oEa̘1x&M#Gdrp8ͅ._ٳgcϞ=8p =.] ==cPWc|̞=&L/ХKUWWg񁚚ƍ-[*;$ .]$#Aaa!|>ҝ?puuoٲgFǎ1}tj ΝC^3fˆ#???,Z۷Ǟ={k׮UyAA^C" �'Km߾}e^L?GGGohذ!fΜ�p8lڴ 2ʹt,D"-Z;wLJ+8vvv0atuu|H6m`D"w}=zUQ(JpA"d~d%$==O$ǏU)**" 4 \.<{BHqq1133#\.<yD.Mǎ �##':u"$==r �&vq0 2e + $�'?L(e乹]v�9xJ$�ҥKR\\,6m47-X� WV&@l\v� ˗2i.]J��ȑ#_Mݻl>F"z�d2GFAe �ү_?VfhhH!-[$O>e?~$]v%�ƍYt---IffL'�H֭X,t\z� ]v1 C*۷o@:-ZD�ooor 5@v-f``@\.qtt$޽ qھ}LD"a,V\\L�|j? qq"H^^'$))$''Jݻ𗚚JnܸAD"'$77xt:e9r222п4j'!oɥdB/_F^^6mZf��///`۶mraM4ŋedBnn.޾} �qu4kL˗BtY̙3jj:uP#$$�0rH4h@&͂ ]v~2 �ҥKٿˢwrroΝC/^,/;w�зo_4,Y7fe\.�Kޯ �Xt)e#RSS[( B֭[ۑ>k=y$+App0~G<|> �sL0`-0IGGG qqqHII\;wj? R9RuV�ɓeRrPP�زe 0>Rʼn'0rH={өS'###�`D��_}‡[n0 +ݩS'9Y-��YYYCHHH��kN.P(T(W>JSN{.[vvv6nݺvy… lNNNr2RrNھ]*3�իUE4j͚5o�0|pv/''Ȁ�Ւ(k�tE-%7eر#�x}B8uFy&^ KKK˄5i}EVV9"vZ̙3o޼ٳѼys*&&F6l3gF>}ݻcӦMJ)V+�{C�߿ @H$Ёi҇oI444  ҇x �аBeEM_E!qyH$044db/^7oRJM"}ۢE ۴i�= �*` 󡧧333YToeav*K*R>P(GYTm ߞ/crذa;>}gΜATT�l߾;u;w ..BLL .^k"""R��l{ڷo_Y$U-ǏUn*×6R_W<<<? :: ¹s砦Z?\\\卿999tۤ!gφҸRDuy,`Ν055ܹsaoo0 0ˢ0ieYqkz(,uBy5> 555v"7oi)=z4F Dgbررc>}T'''899aٲeŋiӦʕ+jiӦXbE[VVɇǏ`&&&�P?GAA̶Ժzzz�}#.͋/_/** ;vd\]]jYΓ ?m۶P6Rb3ڵ rܒ׫\bSߣ�Q(YSPP 0x`ٳGoԩ�dw?yO<mwww̘17Ǎ7&&&ؾ};BayԷի _#TEPIÆ ٷۋK$&Z�p-999rΡ?Ep8wEBB<x={ݻw/#::ꬬxl9RPqTz!Sh!8}tAv*<wGذP1~ _j])S믿šC$4mC{`BCƤ;;СCraoFAAAy=:v숗/_bٲer?Eÿ!ظq#�`РA\zyDnI]��<(ws2~?�Gl pǣ{UZfYv=�dddcǎ033ׯ?KH$2߳zyy:NOO.Z ?Py_tx9{RXX*3ǏBK/?<yO>EVdhѨQ#xzzɓصk[L8AAAhٲ%  ??Ѹu1lذ2]d Ν;???ܹx N< a>+ݻѣGZ 111޽;peƢQF0a1 ;Ύ=Mٳ|2LMMh"6'LLLpU=ǏsNEx!6^{ׯN>cȐ!rׯ1|pWN59~e!]*=|0̮a쌰0UE~0uTl۶ :t`?}ǏGvv6.]*^!ڵ+bbbnݺaaaHOOG=XEpuuŋѽ{w :G^^8^zԩSXr%ЦM*{Ϟ=1c 9sڵûwTjs(J j=z�dӦM*$=yf;w$=z DMMhjj{{{tRR>$SN%VVVD[[333EeJo5k¼7oN�ȟ?NfΜIZhAښ̟?dee|𽂂rJҺuk"!1bIKKKs]Attt@ VVVdҥ�͛7u?D"Yp!iڴ)xĄ̙3� GWMHH �Z阸ʅmڴ=lt t�-o>ʅ矤gϞD__p\bddDKN:EEEE�d$ G7nL̙C޿/OVV8q"iܸ1 iӦoa:i$EHdddQ\ 4_ 񈶶6qrr"1~J]K:|9x )T�(-+X,ƛ7o`ffV"##Y1z (,,DqqqvKQ( RQBBBB8EB֭[t)AFF #(HO } BP(*5 BPTP( R/J BP(z2)((*P( R砖 BP(P( BPBP(J*5 BP_R3l00 'NvUh;`QQQ]j ѣ]zY_ RԺRb -7cj(ȑ#ؿmWBP(uZmeeOOOY~~>Ο?+fff]/_zjt֭#ǒ%K`ii ??ڮ BP�x{{[FcXZZԩS|Bk+/_V9nMcff&߿KK(,,@ jP>ڮ&֗.WwӃ:ċ01bЩS'Bرe˖ZZZPWWOϟWPP�a޴~'0 333�sssBj ֭D"A0 ={Vv۷o`iPWWGf0n8$&&4h*-0<xXXXkע}Ԅd^anܸoooe3 ===6<%%GtuuaccE_'OD׮] ---tr`bbcȐ!ֆ/N]}}}|cሏWXիW1tPAKK :t-[ c尲@ ƌV\ hii#GDRR\>}a$''#""...ӃP(j*0 m۶!55Æ )|>,--h"ɥ{L-Z@(B( sAvvL潛%K7#-- h֬Ѿ}{^>|`5j\.W `AAAr0xS(ZTׯ_O?`ҤIwBCC--- 2��˃1n8l�nݺ!994i444pu/˗ѪUJ577ݺuÃжm[?"?ݻ\�P(NeIIIܹ3M>$߿ǎCtt4{?wh֬J qqqpp9\Ǐ˗ahh-88~~~p8>|8>|غu+M�?~<uVX[[cԩ5޽{ԩѿؠ/_ƚ5kׯC[[[:qv܉Ak׮HMMEXXPߟHEΝ;񁝝Cq񁙙߿cǎĉ8x Ə0  +++deeѣ={6lǏѰaC̞=<qqqҥ Ub}ťK`ee'#>>ƩSp5<bϞ=?`̚5 X~=ƍ===V9J˾{.~7#GīWqFY>|-[4ϟ?#233!C�شiΜ97nby^w^l߾ ۻwo_~Ňp9|w8q.^Pwwwڵ .] A<bbbPXX>hL8QΟ?uuuwJD$JrssIzz:)(((3H$"Ǐ'%==� xC%�&9L؂ �2p@Vv]QFD"f°K�W^,??z_� ,`e+W$�H.]HQQ+ DMM� YYYn2 �&vq0 2e +[x1@V^-~7o@ DYD"!� `^"+W䕚J455 'ٳ�qwwWX+8sLȁ+wwwvl_.qFnZFn``@\.qtt$޽ ;|0t 0DOOw҅� L@@�4V~5/_ʤ_�ȑ#?22� ͚5#yyy2a&L �\:Oɓ'Od¶lB�OOR@6~{Ν;wzbVh"x{{/,,$�ٽ{7+/o2� 4 nݒ H$l۷o +..&nnn�Y|9!`̞=[& ##F 2a�ׯ_ETǏHDH||<ILL$III$99Tr=Tr W H~~>IOO'eSԋ'oooCF6l0�@zz:+c'kҥKٿOf}wGVI͛uuu;wR|)l~<bŊc۩w�¼PPPm۶OY(c0 -[@MMM&ڵkp�H???tEVZaʔ)(**bǧmܰa 0j(2iӦAKK Lb1+f׮]�˅...xN<WX,a@:ݽ{��F ȤY`)�Ɖ'{nhjjʄ��ܹ0ѤI�WuW=ddvvv066!ӎ`2|>k,Ʋ}={A&,..)))_-ŋ�ܻwop\DGG=wڷogggxB?ϝ;� 7WP(R$'366�5ii,99"fff O544`kk �uV뚜 �rJ�ׯ܍*,+tuuq 9gϞe �vUԏAÆ aaa!FOODHHH��]vUX3O%1`�0  `…y&$ ObSENٹ ϒ(jǵklcN��7ode={/!Hddd ##!*9~l׮\BP\7ƠA^BFF,$%ܤHa>W}*[Yvvv>|8|6*%)k+xǎ�<N:ݻ쵝[nŅ]^pUj(zH%r�>9g?33SiXtq6"�d4lgΜ>>}@__ݻwǦMSՏϟ?WzΐT)Zi&N0ԧ@ ـ{naڵС 1d>|XsmY(;>�r$ŬIR4rrr0w\v'`ffp<޼y�2JWYDFF ZZZD `ff&g-T7(9O]|D_~cWj9L*s:ӗH$\t 'D={R#qEXYYy7 P/+Je)ҷY֔(<*t wA\\"""\xk׮EDDoȊQj 144ɓL/JxyyM6J+RDEE!22QQQ AHH6oތKfTY(HIxqͯs+??HHH֬Yf͚KA+We-mf߾}3f x<Ǝnݺ\.O<)wlԷ2`Ν055ܹsaoo0 0K}yᕹxxx~@tt4 sAMM ݺu0pqqaoRO*5nQ)"++K&ny K@ @ @aa!�999T'''899aٲeŋiӦʕ+WA+*G1cFO ӓ=1%%ǏG\\��+IDAT֭[UVO1,-/2�|Z200۷o0Mu1$$$W\awHY~\REMY_xr-[ <#G EeQ(Ϟ=î]+W;\~Z+{GGGKTT:v"$$tBSuЦMիWx\xNNpСC�|+8P\\,/Rk%<DDDTYq 9 oPJeXYYpDiJ?ĤB/^T_$P߼y kkklذ�*FOI2ڶmR>6*Sbcc[C�lK+4YYYF6}rrr:F" -- �0p@pEK_[=zBlllBN>]I?66ȔD"acc.Cq8wEBB<x={iw_Mtt4Y_*5رc|:~r|rb0hѢ!2{7=E7F�@``LYYYWi*cǎ8t\۷QPPF2!p80a�oH$ 9�FMMM௿_\\ ???̙3eǏ̮)RdcϞ=!eǎx=U>XzȺuX)NB\\X˒?}[/׀��?*\aϟgOvToeozz̡w?~\-mұcG_e |r�%駟�@Ɵpѽ{w󭢣T K.?`pc(..ѰD``Lc…7n,XF!!!?3N[(/s޽{gggǘ1cw^z곴oɒ%8wsNC ɓ'8y$*Bر"ظqcH�Ξ=v B y1fxzzbĈFvv6#W^lVZȑ#e˖a7nڷo~Yf !!ܹsmԟ:uСCѨQ#$''رcPSSc-?ݻ<x0 'N@CCc<x0.\ >NNNx쌹sbܹؼy3D"н{wOF1dp\>|8Uĉl2xyyaĉիWqի^z3f`ӧOcuַhx"wCÁЫW/:u +W&^vލ={bƌ8s ڵkw!22ׯN*Fگ@ Y0 " 8p�/fJ>"34lؐ%$$�^i~ D]]BbmmM.\H޼y#_,+Wf͚G H߾}I||< !�Ȍ3dҤA===AN!Ԕ� _t;Çdԩʊhkk555bffFHtt\. gϞ*ڵkIك7nLƌCv1b133#jjjDKK899@ l߾G,-- !\p 64nܘB"HI@@�yJԭ[7ܾ};vtܙhjjMMML�$;;[aڵt֍}O߹sxxx###IڶmK6oLb1y-quu%4mڔ=Q$ MGLLLȜ9s�"j*ҪU+" I Ȉ#zڵMMM?VzVW}͚5Kax �VE&NΓMoI&---bddD"##˝e_JZZ믉xD[[899_~Eʒ�U.lӦM졃%F!�WnQ(e%<x<t@\iYIb1޼y33rFFFV[---D"/ RY9svU(_0!!!pww!IIITx"!C֭UpT"=%444_Fdd>|=�*4 *|*;S(01111cdV-YE;N( "BGG5̀ၿ 򂚚Ν;۷oQFXtimWB|,X� ,jP(5 0\.!!!ذa w^lݺyyy1c_.q? BP(C-5P(Ĝ9sBP(P( BPBP(J*5 BPTP( R/JM)VXadɒڮJ'.. à[n* `. a }p# **EFLLL/e55/zOLL0pppsJM^^lwwwA vvv<y2^YӃk+D"a�```�adRJPP(j*5BӦMaaa_:ϟ0pww�ܽ{ |4!! ˡNm鎈ѣp8xoߎ۷cĉغu>}:O^]Q.dex+BxqmWxamW���{KQLQjΜ9@,c„ X|Ǐq̘1AAA(**޽{GAqqq�2 444k~P(J-T PFUSaa!Ǝ X "((HĪ#GҥKē'O�<b$%%SN غu+tttpƂalb+Wb֬Y@ |}} oݺC__prr‰'{0 ͛Wߴd&f_~rE <x000@Ϟ=q!uۿ?\\\uuu888`׮]H$*m֭`.3/0sLXYYA @OO]t;ѣGc ,ZB)Ϟ=Ô)SТE BBXYYaΜ9 abbB6o [[[hhh@[[zR+L8 4P(DͱdVhZ `۶mGϞ= X W_}mmmhkk_~HMM ..N7na899߾} M6Ѐ:5kq!11Q&X,F`` >  w hҤ ƍG?)\zC9x<СClٲb}j~G0 q)M#G^/׆"J\t àYfJ/\ X vZoЀ5,Yp,rssl2AKK 갲si\.Ғ}f<3J+1RSyꄥ&88/_D&M|2i)))`-�>@[[ƍ-}WX6�;ViѣGXZZbݺuǁpA$''͛͛7>NNNHOO7m:88@CCm۶066~~ SN`ee/_ĉ5jeFD"ADD&L .`߾}eȑ#5kp̙2ݻdffx-BCC1i$;wf޽{ԩѿؠ/_ƚ5kׯ(x9  2ĦMpܸqCfՑӧի3g444;vwHMMEF��"w:t耩S";;}vtXbΝɓ'ٳ ;~'ŋahhP>|ǽ{r+5O ₤$tӦMGRRߏcǎ!::۷�L<AAAhڴ)ƌ}}}<}8}4oߎ�6Yff}6كGܹsԩSuh%""04hGbHHH@PPP?'N`r4HnEPk<aaat\~;v '�zB\\lmm1}tp8;w+Wqe[~vv6ud8::bҤI/ 88/_FVd|xyy<x0$ ? 11n0싕EWSS˶4RpA"d~d%$==O$Ǐ=z4@͛Wn\Eܽ{� :::dԨQD"aW^%�H-I$ҰaCpȳg!,_� /f%$$��9sLA�~:+ݻ7@Ν+?&&hhh�ƦRU'O'ܹsG&,##m˗YyXX@:vH>|򈭭-@BCCeƦk׮l@@7nL<y"S@ �Hqq1+ر#@֯_/777k׎� d#�Ȋ+;sLȁE�[F^XXH �{n0CCCo d¼ڱn:?bɬrH�aիWe¾+x<-[�$..uܙ�ˇB_N�Ν;p?~8aL2BHNNr} &5.Ғdff߿?@ZnMb1+www'�ٳg+Ufeҥ @~WÇy]/_uڕ� aaare\� ӦMce^*CE Em%.+s/^� ~\rT>h {D"!� PM'O&�/tRՋI|>xzz @n޼r�e˖Upq"H^^'$))$''Jݻ𗚚JnܸAD"'$77xt:$uk۶mK*rsstR '''ÇInnnqy22>ggg��߿p侒۵kW~zvvv2a4i�?`ҷ ӛ1g)6޾}ФI2h֬[0mmm:U ݻw�dͺR6l؀5ܾApp0~G9ǐ!C��wQモsvss�3d$jjjXlYڵW_}[h0*Ne m6�b\.W �M4ׯ] �믿�.]*c�___8::"55U/IEˬ +V͛/HTz U6Ti#G@)b;v�0زe=a]<@~~~e{BI͛uuu;wLXQQm&s/422+� ==]SKj FYɿ<aee%'0a�ه/�PtI5j9c]zqܿbM6\|OOڟRگ׮]AI͛�.%6l@~ѷo_p\9sF OW_}ӭ[70 x&8`�0  `…y&G&Vvvv>|8[Ϝddd ##}0*YV9| �ڵ߱cGaYnZN&]WҰ %8qFgʴMBnp!yFa\9lJ_8:eV={ڐH$x ;_�܇"F>P?D$&&Ɔ]RrmE֭舧Osb9r\.G�"'' 6\^zzzH$b3e$''C$ rɏ$ _Τ E�UjTN(5�>9VojRF >`LѣG"$H"T_333(W\\+ٲ뫒}Ȁ {P~0r?===B Xk{naڵС 1d>|X%M9A 󡧧333ae-osyyy�p͟[JSVXUr 6ę3g`ggÇO>Gݱi&?}4x5 ưǢE&3kE M�@ 4YYrrr0w\XZZȈ/UqD600'rss_Җ rKeʵQRexѠA>\a[aFya7(K#Vp8rT):(ܺukڵk?~|x FFF8p =Px{{#66/^ɓ0#DUfäگz*ihkkm۶eTZ^ZUڷo}U>>>Bdd$l޼�ܹ;w.a.|NV;u;w ..BLL .^k"""H#,, >Dxx8Μ9/b͚5ذa~w'BfϞ-w>SIJ;F2+C~~>�;;;Y͚5crJTo? �>|\.]*Tymoő#GqF0 P'O.3vw >_JMUWSϽ:;wÇvr@ ooo/'ѣ8x YM_ե 2ӧO?gwT_MMMR,�`q8#++ 011Q8w+Vz*3iӦXbEF ӓ] LIIuaժUJ>{ v킺:\"系޼y#dD"VPͩ䲍"e˖!33/FPPM+WmѢf͚Yf!??;w7|SbРAӃ 2220~JŮr1$$$W\�WΞGXXq]o߾2G8TzQ}mO>6(w]XPP(Eh,`d$c>M#0j@Y hQ3L eNVQ>4*@ɩ@1A dA~̽]]d~fxww={ﹿ9~8JJJÇ[ X{p?O|h~Z`؈s%TVVbxJ?{l�& BpppC=zڄ@MUPN|ٵ _Ķ9z("##?c ?Kttt ..=gϞݻw֋UӛdByyնAAAؽ{7=|2DӦMEǏǷfOu; EaK u9t>8z`P˼eeeVMRnnnX~=fٌ͚ �?mkCCCdgKd/Z4uuuj5Gz,YoƩSpA�i*^5׆ ollkf>00cǎE}}}+1zhܸq.]Z؈2hZi dBaa~H@58p�t:;ŋܻwyyyxЀ͛7�tZ-V\wbӦMyficܸqxq=utܹsj]QQrss{U.[ ?Ս 9Z̕cѾڊ;vfgnżyqFܸqqqq=baaaGMMlOgeP:6NYUfuvR=_�ك{[ZZ>ls(ߩS,?ػw˗/GxxdZ[[2ݷoBCCF 7%8q"�7�deeY}Exx8&LcRE{?쳒k3fwʱu[[[ 43;v ?,\�_/ {ꥡ6ϟOOO;v �`4ص^ڼy3-֗Ou^{Y;v;wꫯ樂ZZZPZZjGPh4tvzAS8}<jSJTT̘1Cȇ~h:%'@XXX_FQߧjWZ%�d겂jje…!VѨ鞧&..*"+ZVF\R>IHHPsڵ5˖-�+񒐐 @^y5SܹsGz) r[yjW璖&jI&9DDYxHrr̙3GZ3F.^kFDD9g233%##Cf̘!rI FQv)"<5 V_ �SL&4iz$%%Ɋ+d+v穱#==]�׭[gun9sF4zٶm|駟ʔ)Sd˖-@f̘n;vhZ$ywdҥ!F8 "e۶mzj,Yv�///Yfzy{{ �پ}8'NxթE$;;[n*'Oe˖Ivv�\yj @z-b"bd<5]XB�܏۷oyy%99YdDKAAAQBCCs;55URSS%22R͓tuu{GQr@>f(yjfTWW.eee橩R<$yjF9?#={?^t:F l}9R͝; jD:=.%EEERQQ!�$$$b{HKKґrU˼yW\]]Gbbbĉ6̙3Szݻ-ݯ2txzzV'OFDZ6l SN^/z^$99 Ӳh" z^}QILL˗/<``0Ȕ)SVիWHaaԈtqqq#FGyD}]immӧ �u2O.A<<<$<<\ihhPOYvʄ $66V,%##C|I;vDDD_|a3 ޡC^oooqqq3g=zjA#5NryGF޽{]%""BzL2EjDD}Kd{[/{m8(�̼リfʒӧhN'oHiiiG$"nnnb0$((HRSSd2YlAW]]-j>%_  DP9xtLo貫vL&L0!GOXf >3竩Ç3gZ͟h$%% wQ}QRRb3'avDGG5yCkkk1nܸf?}jʭ[W_! �sϺr >l59$�uޞf3Ν;7 8h9sVs8#K]GGG h&ikkC||<f34c…HMMXРv(''GFddp`ΝX`Aq%I<5 P^^(u`JNNƑ#Gʕ+5k?/,Yb񚔔#0rĉޅ!zlv\\\gNuPq'5+vލZ[= ???={6mBcc#rrr#++ ??-""" HHHk,WUU!11I%wU%[' b???ٳhnnFss3~7$''s""֯_VlݺU;T__-[Ν;NO1X>!""۷HIIASSRRRP[[;vч"""[DD6n܈rĠIIIxm5DDDd7ŋA/K.Ell4`  a h�5DDDOӦM]�'"""r j)0!"""t>rp'9Aj?ODDDS`PCDDDNA 95DDDj4 ZZZh 7p(j5jnݺ."""D& FV3h4p@ͨ`OkN0f455͛hmm2!""`0GNs}j4 \]]."""\]]՘?}j5MFNNCGGp @n~""""r#"""r j)0!""""""r j)wHw~~pQ jϟ?EDDDd6?S`PCDDDNA 9WhYf����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.icon.png����������������������������������������������0000664�0000000�0000000�00000006406�14115753270�0022547�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATxiu{fgOM}K"%Be#Y-98I$ �Fmu9R$rRd.rM^rOroLOwU>rvy\Ҥ(lwuu3 f0_~̈m b!i+o}q m=_0> s{` uZX.YkV}Ʒ_j vI Ah/cYbRYy/?#$jې]1N{PcȠ-^~.էV{ι �XXwi_fDT ! //N�yv-!<8g*3Ľ_LHVU& v&*Nڻl`(_R˂hU-\[&� o͍mzkkSʮdHV v&CcNR<q5IDF%3I`&~K;J+E3ŭ)QJkgZ]* ЁJ;Zioj\NMy}?ĄJ;>4`G錫&OH hs%YV;w3wB2 )q<d 0&dG/"W;)qUMF34 =U:7.kc |lqZ K݄xJ ~:SRRW ;E27iGk9Ci@g8y}GPrh +G]kqD爚qzО7]u멪ԑ9]Էć}cCY+Ȕsr|ok oۿ//~2tI.$%_݃;o6e1W1pD<G;S|HH'l[M{Ѳh9W8Hm{PZX >Nqh%SўA\L"˼oڵ) q®�mCc@P/ *_QjRSҞR¤&n6 obeM/Jȕ BB?`N\=.{"؄r�`ϱ*}wpsM'zx`i=~.ϷؾO<c JZUsW8wɕ[/lq3 ʊ*"lvMKExTIXh6{3 v_uuӷ05hlMenE_t,'A-hA<c|Zf 1L?_iE]OtL࿨XR;#-bh),1cEB)}bbm<qd [T>*WJ*1J) i}<[^8E5wo<=GӚxCv/eiRc0SJ 0T)58ӵ>wXI.+E[D.tnsxh/-$H &n ;ubK,J};X'y{y|fiY v**g8@?ccq6lnG1JV2e~g&|g>~rҵxvm moSr= [͕340r?7|-ABcim9EKS#X{cTjR?~vJ8y>m"BBnjD( lXnc2\5i';Kn4BŲ;F:2@e NE5R15Fشh(4iDkţxbLԅM{u5!5@Ć]@k� '{;%]*#H8 hhn,9ʘad "1GCU]Kh! ׭\uAd \] �Geƙ1!b ͸$w~@O#"D,`7rs'kj]- `՚/޾^3gOu"2egE2 P6=nDƖ62w2@<E/tF*BKi]3^fOOG+a!NtѼh%P=Myb4{4y!k-i bӧ xh U'8Е9qDi͇Z'EOyjjaODӺp5JO!p]ߡT2I$N D+%Jr-ΛhΤ|dƫ%65NWn_>w-YIpOkf\-G+aw7,_˫͹:wNe휋#`@}}[[&h55DQ:;ufM1=mxAƷĊY1T׵Hexghjzn\c}ؒ-P8OzpWFj?}^g~|!  >5+J^ '6B#298" pIFWO/YfGN퇏Q{fLN$VNT%׃͛j&d~_Zg&=x1X~ L}2> fYDZ' G;AHCᐔ(gKJ[Oqp9W#\5 U|:拟{ud}5)E9ͬ@dh߉J5%7PZ۴V:CQy$/(<]gjD >ϗ`*⽃{%-b\X&ERܾt%M VyS/8?L3 5+K!Gm$%kKWSk;؊bOGXF-`ysk.XMv6j[Yvh6?rAP �]@�Uz<Jy8=K@8E}$J.#"TΪ;pϮO>kjiٸZE*>@�^?`9qL6WK~(ɖD ߲\r�)/XkˆX5wBF@h-L >|hxBt 2�:hiTpU~N;ъEU5L�ZL.;6rw7 N�l@:puR'�H%qA(p8�!Y[ /4�;UkE !d3 f,x����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.lang/�������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022024�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.lang/ru.po��������������������������������������������0000664�0000000�0000000�00000004513�14115753270�0023015�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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 <EMAIL@ADDRESS>, YEAR. # # Translators: # Дмитрий Ошкало <dmitry.oshkalo@gmail.com>, 2019 # Kашицин Роман <calorus@gmail.com>, 2019 # Олег o1hk <o1h2k3@yandex.ru>, 2019 # AlexL <loginov.alex.valer@gmail.com>, 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 <loginov.alex.valer@gmail.com>, 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/Printing/Printing/.project:17 msgid "Printing example" msgstr "Пример печати" #: app/examples/Printing/Printing/.project:18 msgid "" "Printing example.\n" "\n" "This example shows how to print a text or an image." msgstr "" "Пример печати.\n" "\n" "В этом примере показано, как напечатать текст или изображение." #: app/examples/Printing/Printing/.src/FMain.form:15 msgid "Text" msgstr "Текст" #: app/examples/Printing/Printing/.src/FMain.form:22 msgid "Load text file" msgstr "Загрузить текстовый файл" #: app/examples/Printing/Printing/.src/FMain.form:28 msgid "Rich text" msgstr "Rich text" #: app/examples/Printing/Printing/.src/FMain.form:41 app/examples/Printing/Printing/.src/FMain.form:76 msgid "Print" msgstr "Печать" #: app/examples/Printing/Printing/.src/FMain.form:47 msgid "" "<h2>Hello!</h2>\n" "This is a <b>text printing</b> <i>example</i>." msgstr "" "<h2>Привет!</h2>\n" "Это <i>пример</i> <b>печати текста</b>." #: app/examples/Printing/Printing/.src/FMain.form:59 msgid "Image" msgstr "Изображение" #: app/examples/Printing/Printing/.src/FMain.form:66 msgid "Load image file" msgstr "Загрузить файл изображения" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.project�����������������������������������������������0000664�0000000�0000000�00000000531�14115753270�0022473�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 Title=Printing example Startup=FMain Icon=printer-laser.png Version=1.0.0 Component=gb.image Component=gb.gui Component=gb.form Description="Printing example.\n\nThis example shows how to print a text or an image." Authors="Benoît Minisini" Environment="GB_GUI=gb.gtk3" TabSize=2 Translate=1 Vendor=Example Packager=1 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.src/��������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021672�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.src/FMain.class���������������������������������������0000664�0000000�0000000�00000010413�14115753270�0023712�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Private $hImage As Image Public Sub Form_Open() Me.Center txtFontText.Text = Font["17"].ToString() txtText.Text = File.Load("molly-malone.txt") End Private Sub GetText() As String Dim sText As String sText = txtText.Text If Not btnRichText.Value Then sText = Replace(Html(sText), "\n", "<br>") Return sText End Private Sub RefreshText() Dim hFont As Font = Font[txtFontText.Text] Dim sText As String = GetText() scrText.ResizeContents(scrText.ClientW, hFont.RichTextHeight(sText, scrText.ClientW - 16) + 16) scrText.Refresh End Public Sub scrText_Draw() Dim sText As String = GetText() Paint.FillRect(0, 0, Draw.W, Draw.H, Color.TextBackground) Try Paint.Font = Font[txtFontText.Text] Paint.Translate(-scrText.ScrollX, -scrText.ScrollY) Paint.Background = Color.TextForeground Paint.DrawRichText(sText, 8, 8, scrText.ClientW - 16, scrText.ClientH - 16, Align.TopNormal) 'Debug Paint.ResolutionY;; ":";; Paint.TextSize("toto").Height;; Paint.TextExtents("toto").Height;; "/";; Paint.RichTextSize(sText, scrText.ClientW - 16).Height;; Paint.RichTextExtents(sText, scrText.ClientW - 16).Height End Public Sub btnRichText_Click() RefreshText End Public Sub txtText_Change() RefreshText End Public Sub txtFontText_Click() Dialog.Title = "Select a font" Dialog.Font = Font[txtFontText.Text] If Dialog.SelectFont() Then Return txtFontText.Text = Dialog.Font.ToString() RefreshText End Public Sub scrText_Arrange() RefreshText End Public Sub btnOpenText_Click() Dialog.Title = "Select a text file" If Dialog.OpenFile() Then Return Try txtText.Text = File.Load(Dialog.Path) End Public Sub btnPrintText_Click() If prtText.Configure() Then Return Me.Enabled = False Inc Application.Busy prtText.Print Dec Application.Busy Me.Enabled = True End Public Sub prtText_Begin() Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10 Dim hExtents As PaintExtents Paint.Font = Font[txtFontText.Text] hExtents = Paint.RichTextExtents(GetText(), Paint.Width - PRINT_MARGIN * 2) prtText.Count = Ceil(hExtents.Height / (Paint.Height - PRINT_MARGIN * 2)) End Public Sub prtText_Draw() Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10 Debug "Printing page";; prtText.Page Debug "Paint.FontScale = "; Paint.FontScale Debug "Paint.Font.Size = "; Paint.Font.Size Debug "Paint.Width = "; Paint.Width Debug "Printer.PaperWidth = "; prtText.PaperWidth Paint.Font = Font[txtFontText.Text] Paint.Rectangle(PRINT_MARGIN / 2, PRINT_MARGIN / 2, Paint.Width - PRINT_MARGIN, Paint.Height - PRINT_MARGIN) Paint.LineWidth = Paint.Width / prtText.PaperWidth * 0.5 Paint.Stroke Paint.Rectangle(PRINT_MARGIN, PRINT_MARGIN, Paint.Width - PRINT_MARGIN * 2, Paint.Height - PRINT_MARGIN * 2) Paint.Clip Paint.DrawRichText(GetText(), PRINT_MARGIN, PRINT_MARGIN - (prtText.Page - 1) * (Paint.Height - PRINT_MARGIN * 2), Paint.Width - PRINT_MARGIN * 2, Paint.Height * prtText.Count, Align.TopNormal) 'Debug Paint.ResolutionY;; ":";; Paint.TextSize("toto").Height;; Paint.TextExtents("toto").Height;; "/";; Paint.RichTextSize(GetText(), Paint.Width - PRINT_MARGIN * 2).Height;; Paint.RichTextExtents(GetText(), Paint.Width - PRINT_MARGIN * 2).Height Paint.ResetClip End Public Sub btnOpenImage_Click() Dialog.Title = "Select an image file" Dialog.Filter = ["*.png;*.jpg;*.jpeg;*.gif;*.xpm", "Image files"] If Dialog.OpenFile() Then Return Try $hImage = Image.Load(Dialog.Path) scrImage.ResizeContents($hImage.W, $hImage.H) scrImage.Refresh End Public Sub scrImage_Draw() If $hImage Then Draw.Image($hImage, -scrImage.ScrollX, -scrImage.ScrollY) End Public Sub btnPrintImage_Click() If prtImage.Configure() Then Return Me.Enabled = False Inc Application.Busy prtImage.Print Dec Application.Busy Me.Enabled = True End Public Sub prtImage_Draw() Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10 Dim hImage As Image Dim W, H As Float If Not $hImage Then Return hImage = $hImage If hImage.Width > hImage.Height Then hImage = hImage.Rotate(Pi(0.5)) W = Paint.Width - PRINT_MARGIN * 2 H = W * hImage.Height / hImage.Width Paint.DrawImage(hImage, PRINT_MARGIN, (Paint.Height - H) / 2, W, H) End �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/.src/FMain.form����������������������������������������0000664�0000000�0000000�00000004112�14115753270�0023547�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Form Form MoveScaled(0,0,79,66) Icon = Picture["printer-laser.png"] Arrangement = Arrange.Fill Margin = True { TabStrip1 TabStrip MoveScaled(1,1,77,64) Arrangement = Arrange.Vertical Spacing = True Margin = True Count = 2 Index = 0 Text = ("Text") { HBox1 HBox MoveScaled(1,1,74,4) Spacing = True { btnOpenText Button MoveScaled(0,0,19,4) AutoResize = True Text = ("Load text file") & "..." Picture = Picture["icon:/16/text"] } { btnRichText ToggleButton MoveScaled(20,0,16,4) AutoResize = True Text = ("Rich text") Picture = Picture["icon:/16/text-italic"] Value = True } { txtFontText ButtonBox MoveScaled(41,0,17,4) Expand = True Picture = Picture["icon:/16/font"] ReadOnly = True } { btnPrintText Button MoveScaled(61,0,12,4) AutoResize = True Text = ("Print") Picture = Picture["icon:/16/print"] } } { txtText TextArea MoveScaled(1,6,74,16) Text = ("<h2>Hello!</h2>\nThis is a <b>text printing</b> <i>example</i>.") } { scrText ScrollArea MoveScaled(1,23,40,26) Background = Color.TextBackground Expand = True ScrollBar = Scroll.Vertical } { prtText #Printer #MoveScaled(62,31) FullPage = True } Index = 1 Text = ("Image") { HBox2 HBox MoveScaled(1,1,74,4) Spacing = True { btnOpenImage Button MoveScaled(0,0,21,4) AutoResize = True Text = ("Load image file") & "..." Picture = Picture["icon:/16/image"] } { Panel1 Panel MoveScaled(35,0,3,4) Expand = True } { btnPrintImage Button MoveScaled(61,0,12,4) AutoResize = True Text = ("Print") Picture = Picture["icon:/16/print"] } } { scrImage ScrollArea MoveScaled(1,7,46,26) Expand = True } { prtImage #Printer #MoveScaled(55,14) } Index = 0 } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/Printing/molly-malone.txt���������������������������������������0000664�0000000�0000000�00000001743�14115753270�0024200�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<h1>Molly Malone</h1> <p> <font size="+1"><b>1.</b></font> In Dublin's fair city,<br/> Where girls are so pretty,<br/> I first set my eyes on sweet Molly Malone,<br/> As she pushed her wheelbarrow<br/> Through streets broad and narrow,<br/> Crying, "Cockles and mussels, alive, alive oh"! </p> <p><i>Chorus</i></p> <p> Alive, alive oh! alive, alive oh!<br> Crying, "Cockles and mussels, alive, alive oh"! </p> <p> <font size="+1"><b>2.</b></font> Now she was a fishmonger,<br> And sure t'was no wonder,<br> For so were her mother and father before,<br> And they each wheeled their barrow,<br> Through streets broad and narrow,<br> Crying, "Cockles and mussels, alive, alive oh"! </p> <p><i>Chorus</i></p> <p> <font size="+1"><b>3.</b></font> She died of a fever,<br> And no one could save her,<br> And that was the end of sweet Molly Malone.<br> Now her ghost wheels her barrow,<br> Through streets broad and narrow,<br> Crying, "Cockles and mussels, alive, alive oh"! </p> <p><i>Chorus</i></p> �����������������������������gambas-3.16.3/app/examples/Printing/Printing/printer-laser.png��������������������������������������0000664�0000000�0000000�00000002516�14115753270�0024326�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���D��PLTE���&��#��Ϧ䷷ʫ������������������έϯ͸]_a_`bν_ac^`bȵه;<=>?Akll<<=д^]]'''%$$$$$&%$((&('&%#$''&ZZ[`forruttw๺۴趹向ⴶ䙚ߤߛ嗘ࡡß;춺ܙ㴸۵雜᝟쵷꭮ᮯI���#tRNS�������}t meAltsh5FpI$��IDAT8c``-&ٕUT5TP6X[Zrp[Y;;:A5/H @?`~аȨX(OHLJdf`NIIMKʆܼ̌Q bEE%eeep�UUTUcu55 @M-A'b`` VO&20N<&c�蔩`ӦM>̜R0{ܹ/X`a"X[tܹˠ XjU5k!`U6l`-snݶ};w޵gܹV?p 9zN)8sTΝpKŮ`( V)S�LA]qc7wΞ{o~p ܺG@ <}ҧhWO^y T w?E>~z. Dy�mS1;S����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/��������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022022�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.connection/��������������������������������������0000775�0000000�0000000�00000000000�14115753270�0024237�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.connection/Connection1.connection����������������0000664�0000000�0000000�00000000253�14115753270�0030500�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Connection] Type="mysql" RememberPassword=False IgnoreCharset=False Database="test" Path="/home/benoit" User="root" Host="localhost" DisplayMetadata=False Requests=[""] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.connection/Connection1.template������������������0000664�0000000�0000000�00000001655�14115753270�0030163�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Database Template File 3.0 { Table Name="color" Type="InnoDB" PrimaryKey=["color"] { Field Name="color" Type=db.Serial } { Field Name="name" Type=db.String Length=32 Collation="utf8_general_ci" } { Field Name="french" Type=db.String Length=32 Collation="utf8_general_ci" } } { Table Name="test" Type="InnoDB" PrimaryKey=["id"] { Field Name="id" Type=db.Long } { Field Name="color" Type=db.Integer Default=1 } { Field Name="firstname" Type=db.String Length=16 Collation="utf8_general_ci" } { Field Name="name" Type=db.String Length=32 Collation="utf8_general_ci" } { Field Name="birth" Type=db.Date } { Field Name="active" Type=db.Boolean } { Field Name="salary" Type=db.Float } { Field Name="comment" Type=db.String Collation="utf8_general_ci" } } �����������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.directory����������������������������������������0000664�0000000�0000000�00000000041�14115753270�0024022�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Icon=./.icon.png �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.hidden/������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0023333�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.hidden/report.png��������������������������������0000664�0000000�0000000�00000006122�14115753270�0025355�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� IDATh՚[]Ys{fl'enǹubhU* x J�OH%-4JUhPMisw{g9sn{-=#@%e߷X1nZnoso11>ww144&iijrgX?x; Z:x)WF~=c^uw57?rVn~mS=~?j X D,zAFv}/ZSӪb!\݄V6`0Et>-eQ3> ?rosz=URG?[k|]4;2AHkZD,l}$|f)\ jobM\cav*y]oq꟞y湭"le˱#>lW0Z{ZWJ|D@mth̏;XiXu=>k~k_;U-89ݿY靍<6֨Z><{>ɇ,^ǭ[x^iylՑ_R/;40_CB"Esmo`N<O}",b}}i<ף>VԏϾ+Ɖ?$ (G9URt]T-dX$Lj2#}*`zx>Zy87}_|ф +Tz  L $edX,AT@qni[5sBGPVWV+Wĕ2G?AgD ^L%Ak/DE&zH K@c0Ԫ8xlL(>/Q%6+%*Zw: j!7>vV1zRITܺaXKV]<UU5F-X s y MB33GT 7 @lff(:o|?MZ6\] r�-e,]q'& <y%'x +e:D\²-2t{=X[w+6fG|�Fa'h4 < Ht!dQ?dbu]\ׅJ(0A˝3]WUm_Us$z۵LlLNf߾#Lapx-^M.,;S%"Z[FYr|vXWt;DE1 b$\ =H-U`Js-i$#hLIVL<7:,|k,bJ MW$^F 9%muܼFRc>#?b!f@(l_/nyX6xWqTdȗ1bQrA`X[_q>)*=B ss#Y$z V$AsseX(MEyLVF5Uhm>\ΡmLN$AݥR0n,{ #@Rfvn6`!2IfգL&#laKpO?Ds4r@µ =kt'xh8oN`R,ЩRvK Su>R6Nw-@(mcR07? P9r,Fo".Wx*n{fqUD '҈Xjx"u00UIA١&|>[ewWy>eZQ`64@Rfna 00Oμ x;A&H@ NYa`<>+͖8^B'nJË YC[9TU- Hh"a%eJ cӏ``=z~Ȅx~wN/=C,X:D,�Tby,Dm4M0 * {"{?JX8cm^ܼ3%yT܂ FË 7HNc3[! yѹq HOox Q18A u  c` .G9ᔀEs =Pי_N K:gzTߪ,y90Oj W~gx8i]>s."‘ y,Wǥe_b28 $*~KA*M^g%9b;窿Lc3'+[,%INTD f"J;d`n/Y5S5 @cltVQgkhj *'JtF jÄ1Á !䩒 aLZ%h@=Ub|FT3I#ew㩙bs!-魂=~`iALs[K1pO*GG!υΙhQ1@'h@paa~#pvR>0.WV.%9?f!L ȗ_y)Ҏ1PU9ބ PoF(<>>fN/7ѫ6 ffUF?1??_H1~x;2dAp.2]>嫺plRX8}�;9&5$tq1-۪ =Mn!^Y`,;3RH7$J"J5aF`Hyľ&F~aH׾sy 'Pv,p7ޜl?H&ԿVhomZ_|k;f4m]#ngkz|h8S%m;ښ~{֧oś?S޷1`> Ck½NNf?~&܊#U$%s;\mNNcϰ~7 \5OԲY{Uв׍E㝔NO f;����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.icon.png�����������������������������������������0000664�0000000�0000000�00000006730�14115753270�0023544�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATxyl\}?y{X("EQAdYT|Ė: i-ZFSmE@иڤ'RI-' i|qI(HǾݷ%).%**�޾w~<41iL-|7V׍v 3l&`G俺ڝ[+&/ X=uI/_yz vP绩mRs5ͮ"W|-[+":#wZǪ&[1WcByM/veOj"{+ .ȇj(B{�̼_eRA]5_]/� FBK\ޒUB&�uR$ع/Ί4Ʋ# n`}./1ě`EJ2|?;\~8not"|nA^F?+tDّAQ>3$ kk3L˜"E.m *N|01JoT+uI~l`5%7Z6ku3C1Zij\Mm6}t`͕O|pSJ(TD]hm{[-lcAmvt~V|7 W.kQV�rsHRVԤH$5Z98GLO2_\ >2$ p]8dYغv&QR׎ 7E2/ʞ4  [?ZqhcZVCiŬkGQSBhkOrv"TJfmǩiZû/}0oQ0ȔX7FĿqo~?M|韟+[щRj<w}ӽoNIVsh}=KTi;zl3O4? ʐEʻdl+`;1ci%SվQS .2p;_UXNS&r_`"lkAnf,)L6<}!=\28MOQ}%U̿NR@Yt=N>QF>6"c( #W5bwcҾqCZ]9!/O,4̎n{=]vci1Om;t%L#8ƥ6.v[?,,7d<mD9Q8_/䝝oT>D:Vhb&բX>Yo?/~>E΂))#F!{ِշ/;fA4v:N ~xlYL,: 8O>Qq[t o|߻?#$š7gxa>;AU>s B ݵ O9c0c8MUܾS_Eֳh^k~DzB)U}&[xh|ve 8Ѯ #AHUI "[Laf\7'xjk$pZa42*J s8>'8袹wקB+&,M&9"&jcv2wn+M  [gBdc43ʙ.rٻ[R3sC#,<k- 8�G>YKW3QYl`0Ң(TP$[57H[fqΉV9Vm׶PPM x%kyo1T^_yqϷ@ٵmj,ZtvvbLD12QF<u=1e4@+7H�xZ|�ʁB.!*3(oᎽϬ}0啤/YBe+kBHR:Kw LVp0UXqhhCMgZ&Jćs-GK >B,?Q޺p C!(d؋qfJc�blVr >߁Rb@j"4cB!9D>=)$ʎ3c#*A{1g5Rl{\ADϣ?2޼%؅]V\id8Bٿw+KrQ14%YZ.bɭTi\!0&ĵɞ%@̸m SWRKVZ@:C2{z#GC$j'rZ éRjJNs毾B(_i! ڏܘ77ʼJKFy%1Ja4Y p2g O)+RqD<q�_ɒ BWH5ԵCyph[e6>!"[_v73VFqrBCBu HUdZ GbZ" rwm[K8V qԦNPx/I+aԶ_x[gܹ2KZ!:+Z:.hibbZG(NXlx @agM?Xd<$W`Y<y֔Q9,/>h.c:qo'=}?~OK/37B˂oRs/!U?ԌL`mVGk3NHƎ"s.aQld֡T߶+ȑN$YFa#.\9Vh"vL1ֲ#Y@H8Q*()d+Q+":NF;A8"eJ8Pjv} %|@U_'+Vs tawAW'#سM I }1qoce01gN#"ݢ @9 @΂u&I dudJ+_[!yt3gqiܷvuidH}']Ҿ_> 9g!G|ZT*źEK=o1~`@ ;v"K V3%I)\2!)<U ȡ/T5/ZF4ʫ8$}O=W6=D۲i3;海^d2u W9:n6l| _W(EPJ4BkDJiN4SZSI>@i%)p,w=?V¡DԌj}kVȑ}l{ evu M7rx1=(뀏�xypG�|Uh]c${g�=vS<n�D~qΊu %R"",FavT,TύN7 CĵM u`<fj~w M�VQMQHFO k B|CX p8 �rOFyWƍ 7UE!dӘ4a����IENDB`����������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.lang/��������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0023021�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.lang/ru.po���������������������������������������0000664�0000000�0000000�00000007662�14115753270�0024022�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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 <EMAIL@ADDRESS>, YEAR. # # Translators: # Дмитрий Ошкало <dmitry.oshkalo@gmail.com>, 2019 # Kашицин Роман <calorus@gmail.com>, 2019 # Олег o1hk <o1h2k3@yandex.ru>, 2019 # AlexL <loginov.alex.valer@gmail.com>, 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 <loginov.alex.valer@gmail.com>, 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/Printing/ReportExample/.project:19 msgid "ReportExample" msgstr "Пример отчёта" #: app/examples/Printing/ReportExample/.project:20 msgid "An example to show Gambas Report capabilities" msgstr "Пример для демонстрации возможностей отчётов Gambas" #: app/examples/Printing/ReportExample/.src/FMain.class:26 msgid "A simple report example by Fabien Bodard" msgstr "Простой пример отчёта от Фабьена Бодарда" #: app/examples/Printing/ReportExample/.src/FMain.form:5 msgid "Report example" msgstr "Пример отчёта" #: app/examples/Printing/ReportExample/.src/FMain.form:16 msgid "Choose database server" msgstr "Выбрать сервер базы данных" #: app/examples/Printing/ReportExample/.src/FMain.form:22 msgid "MySQL" msgstr "MySQL" #: app/examples/Printing/ReportExample/.src/FMain.form:22 msgid "PostgreSQL" msgstr "PostgreSQL" #: app/examples/Printing/ReportExample/.src/FMain.form:22 msgid "SQLite" msgstr "SQLite" #: app/examples/Printing/ReportExample/.src/FMain.form:39 msgid "See Report Example 1" msgstr "См. пример отчёта 1" #: app/examples/Printing/ReportExample/.src/FMain.form:47 msgid "See Report Example 2" msgstr "См. пример отчёта 2" #: app/examples/Printing/ReportExample/.src/FMain.form:62 msgid "About" msgstr "О программе" #: app/examples/Printing/ReportExample/.src/FMain.form:68 msgid "Close" msgstr "Закрыть" #: app/examples/Printing/ReportExample/.src/Report1.class:16 app/examples/Printing/ReportExample/.src/Report3.class:15 msgid "You have to create the test database with the <b>Database</b> example." msgstr "Вы должны создать тестовую базу данных на примере <b>Базы данных</b>." #: app/examples/Printing/ReportExample/.src/Report1.report:7 msgid "Section 1" msgstr "Раздел 1" #: app/examples/Printing/ReportExample/.src/Report1.report:27 msgid "Gambas" msgstr "Gambas" #: app/examples/Printing/ReportExample/.src/Report1.report:47 msgid "All friends list !" msgstr "Список всех друзей!" #: app/examples/Printing/ReportExample/.src/Report1.report:65 msgid "Gambas Report Demo" msgstr "Демонстрация отчёта Gambas" #: app/examples/Printing/ReportExample/.src/Report1.report:82 msgid "DEMO" msgstr "ДЕМО" #: app/examples/Printing/ReportExample/.src/Report1.report:95 msgid "Page $PAGE on $NPAGE " msgstr "Страница $PAGE на $NPAGE " #: app/examples/Printing/ReportExample/.src/Report3.report:15 msgid "List of all my friends" msgstr "Список всех моих друзей" #: app/examples/Printing/ReportExample/.src/Report3.report:25 msgid "List Of My Friends" msgstr "Список моих друзей" #: app/examples/Printing/ReportExample/.src/Report3.report:69 msgid "Page $PAGE / $NPAGE" msgstr "Страница $PAGE / $NPAGE" ������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.project������������������������������������������0000664�0000000�0000000�00000000535�14115753270�0023474�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 Title=ReportExample Startup=FMain Icon=.hidden/report.png Version=3.13.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.db Component=gb.report Description="An example to show Gambas Report capabilities" Authors="Fabien Bodard" Environment="GB_GUI=gb.qt5" TabSize=2 Translate=1 Packager=1 �������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/���������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0022667�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/FMain.class����������������������������������0000664�0000000�0000000�00000000770�14115753270�0024714�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Private $hReport As Report Public Sub _new() Application.MainWindow = Me End Public Sub Form_Open() Me.Center End Public Sub btnReport_Click() $hReport = New Report1(Null, LCase(cmbServer.Text)) $hReport.Preview() End Public Sub btnAbout_Click() Message.Info(("A simple report example by Fabien Bodard")) End Public Sub btnClose_Click() Me.Close End Public Sub btnReport2_Click() $hReport = New Report3(LCase(cmbServer.Text)) $hReport.Preview() End ��������gambas-3.16.3/app/examples/Printing/ReportExample/.src/FMain.form�����������������������������������0000664�0000000�0000000�00000003056�14115753270�0024552�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Form Form MoveScaled(0,0,66,32) Text = ("Report example") Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox1 HBox MoveScaled(1,1,52,4) Spacing = True { Label1 Label MoveScaled(0,0,26,4) AutoResize = True Text = ("Choose database server") } { cmbServer ComboBox MoveScaled(26,0,24,4) Expand = True ReadOnly = True List = [("MySQL"), ("PostgreSQL"), ("SQLite")] } } { Separator1 Separator MoveScaled(15,6,7,1) } { HBox2 HBox MoveScaled(1,8,63,15) Expand = True Spacing = True { VBox1 VBox MoveScaled(1,1,32,14) AutoResize = True { btnReport Button MoveScaled(0,0,31,7) Expand = True AutoResize = True Text = ("See Report Example 1") & "..." Picture = Picture["icon:/32/print"] } { btnReport2 Button MoveScaled(0,6,31,7) Visible = False Expand = True AutoResize = True Text = ("See Report Example 2") & "..." Picture = Picture["icon:/32/print"] } } } { HBox3 HBox MoveScaled(1,25,64,6) Spacing = True { Panel1 Panel MoveScaled(4,1,20,3) Expand = True } { btnAbout Button MoveScaled(31,0,15,6) AutoResize = True Text = ("About") & "..." Picture = Picture["icon:/32/info"] } { btnClose Button MoveScaled(47,0,15,6) AutoResize = True Text = ("Close") Picture = Picture["icon:/32/close"] } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/Report1.class��������������������������������0000664�0000000�0000000�00000001320�14115753270�0025246�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file 'Static Public Type As String Public Sub _new(Optional sType As String = "mysql") Dim hResult As Result Dim Rlbl As ReportLabel Dim hConn As Connection hConn = Connections["Connection1"] hConn.Type = sType If hConn.Type = "sqlite" Then hConn.Host = User.Home Try hConn.Open If Not hConn.Opened Then Message.Error(("You have to create the test database with the <b>Database</b> example.")) Return Endif hResult = db.Limit(200).Find("test") If Not hResult.Available Then Return For Each hResult Rlbl = New ReportLabel(RVBCont) Rlbl.Autoresize = True Rlbl.Text = hResult!name & " " & hResult!firstname Rlbl.Border.bottom.Width = "1px" Next End ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/Report1.report�������������������������������0000664�0000000�0000000�00000006015�14115753270�0025462�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,100,77) Padding = ReportPadding["Top:1cm;Bottom:15mm;Left:2cm;Right:2cm"] Index = 0 Text = ("Section 1") { ReportHBox2 ReportHBox #MoveScaled(0,0,67,14) Height = "5cm" Fixed = True Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#3398C3"] { ReportSvgImage1 ReportSvgImage #MoveScaled(1,1,14,12) Width = "4cm" Image = SvgImage.Load("gambas.svg") } { ReportLabel3 ReportLabel #MoveScaled(20,2,43,10) Brush = ReportBrush["LinearGradient(0.71,0.07,0.34,0.06,[#FFFF00,#FFFFFF],[0,1])"] Fixed = True Font = Font["DejaVu Sans,Bold,+14"] Expand = True AutoResize = True Text = ("Gambas") Alignment = Align.Left } } { ReportHBox1 ReportHBox #MoveScaled(0,15,87,56) Padding = ReportPadding["0cm"] Expand = True Border = ReportBorder["Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] { ReportVBox1 ReportVBox #MoveScaled(1,1,25,47) Width = "6cm" Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Background = ReportBrush["#DF6B00"] { ReportLabel4 ReportLabel #MoveScaled(3,2,20,4) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold"] AutoResize = True Text = ("All friends list !") } } { ReportVBox2 ReportVBox #MoveScaled(27,1,60,54) Expand = True Border = ReportBorder["Left:1mm #000000"] Background = ReportBrush["#FFFFFF"] { RVBCont ReportVBox #MoveScaled(4,4,53,42) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Tag = "*" Spacing = "1mm" { ReportLabel1 ReportLabel #MoveScaled(0,0,44,9) Font = Font["Bitstream Charter,Bold,Italic,+2"] AutoResize = True Text = ("Gambas Report Demo") Alignment = Align.Center } { ReportVBox3 ReportVBox #MoveScaled(0,11,38,4) Height = "1cm" AutoResize = True } { ReportLabel5 ReportLabel #MoveScaled(3,17,40,21) Width = "100%" Height = "100%" Brush = ReportBrush["#DFDFDF"] Visible = False Fixed = True Font = Font["Bold,+15"] Ignore = True Text = ("DEMO") Alignment = Align.Center } } { ReportLabel2 ReportLabel #MoveScaled(7,49,47,3) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold,+1"] Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] AutoResize = True Border = ReportBorder["Top:1mm #000000"] Background = ReportBrush["#3398C3"] Text = ("Page $PAGE on $NPAGE ") Alignment = Align.Right UseField = True } } } Index = 0 } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/Report2.class��������������������������������0000664�0000000�0000000�00000000517�14115753270�0025256�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Public Sub _new() Dim Rlbl As ReportLabel Dim i As Integer 'Report.Debug = True For i = 0 To 200 Rlbl = New ReportLabel(RVBCont) Rlbl.Text = "Ligne " & i Rlbl.Border.bottom.Width = "1px" Rlbl.Padding.Top = "3 mm" Rlbl.Padding.Bottom = "1mm" Rlbl.Padding.Left = "2 mm" Next End���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/Report2.report�������������������������������0000664�0000000�0000000�00000000512�14115753270�0025457�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(1,1,61,8) Height = "10cm" Fixed = True Expand = True Background = ReportBrush["#007FFF"] } { RVBCont ReportVBox #MoveScaled(2,11,56,26) Expand = True } Index = 0 } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/Report3.class��������������������������������0000664�0000000�0000000�00000001676�14115753270�0025266�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Private hResult1 As Result Private hResult2 As Result Public Sub _new(sType As String) Dim hConn As Connection hConn = Connections["Connection1"] hConn.Type = sType If hConn.Type = "sqlite" Then hConn.Host = User.Home Try hConn.Open If Not hConn.Opened Then Message.Error(("You have to create the test database with the <b>Database</b> example.")) Return Endif 'Report.Debug = True hResult1 = db.Exec("select distinct firstname from test") ReportPanel1.DataCount = hResult1.Count End Public Sub ReportLabel1_Data(Index As Integer) hResult2.MoveTo(Index) Last.data = hResult2!name End Public Sub ReportPanel1_BeforeData() hResult1.MoveTo(Last.dataindex) hResult2 = db.Exec("Select * From test where firstname=&1", hResult1!firstname) ReportHBox1.DataCount = hResult2.Count End Public Sub ReportLabel2_Data(Index As Integer) hResult1.MoveTo(Index) Last.data = hResult1!firstname End ������������������������������������������������������������������gambas-3.16.3/app/examples/Printing/ReportExample/.src/Report3.report�������������������������������0000664�0000000�0000000�00000003752�14115753270�0025471�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,88) Padding = ReportPadding["Top:15mm;Bottom:2cm;Left:2cm;Right:2cm"] Tag = "\"toto\"" Spacing = "1cm" Index = 0 Text = ("") { ReportLabel5 ReportLabel #MoveScaled(2,0,61,4) Brush = ReportBrush["#9F9F9F"] Fixed = True AutoResize = True Text = ("List of all my friends") Alignment = Align.Right } { ReportLabel3 ReportLabel #MoveScaled(2,3,60,18) Font = Font["Bold,+10"] Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] AutoResize = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000;TopLeftCorner:5mm;TopRightCorner:5mm;BottomRightCorner:5mm;BottomLeftCorner:5mm"] Background = ReportBrush["#1FFF8F"] Text = ("List Of My Friends") Alignment = Align.Center } { ReportPanel2 ReportVBox #MoveScaled(0,23,65,54) Expand = True Tag = "Boite 1" Spacing = "1cm" { ReportPanel1 ReportVBox #MoveScaled(1,3,64,45) Width = "4cm" Height = "5cm" AutoResize = True Tag = "Boite 2" Spacing = "1mm" { ReportLabel2 ReportLabel #MoveScaled(2,1,54,8) Fixed = True Font = Font["Bold,+3"] AutoResize = True Background = ReportBrush["#1FFF8F"] } { ReportHBox1 ReportHBox #MoveScaled(2,11,71,31) Width = "5cm" Height = "2cm" Padding = ReportPadding["Left:5mm"] AutoResize = True Tag = "Boite 3" { ReportLabel1 ReportLabel #MoveScaled(5,5,47,17) Font = Font["+1"] Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Expand = True AutoResize = True Background = ReportBrush["#DFDF6F"] } } } } { ReportLabel4 ReportLabel #MoveScaled(0,79,62,4) Fixed = True AutoResize = True Text = ("Page $PAGE / $NPAGE") Alignment = Align.Right UseField = True } Index = 0 } ����������������������gambas-3.16.3/app/examples/Printing/ReportExample/gambas.svg����������������������������������������0000664�0000000�0000000�00000112452�14115753270�0024002�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="256" height="256" id="svg4426" sodipodi:version="0.32" inkscape:version="0.46" version="1.0" sodipodi:docname="gambas.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape"> <defs id="defs4428"> <linearGradient inkscape:collect="always" xlink:href="#linearGradient3602" id="linearGradient4248" gradientUnits="userSpaceOnUse" x1="221.64285" y1="179.13533" x2="223.35713" y2="157.17104" /> <linearGradient inkscape:collect="always" xlink:href="#linearGradient3428" id="linearGradient4246" gradientUnits="userSpaceOnUse" x1="203.04065" y1="137.41652" x2="232.33508" y2="137.41652" /> <linearGradient id="linearGradient3602"> <stop style="stop-color:#ff0d00;stop-opacity:1;" offset="0" id="stop3604" /> <stop id="stop3610" offset="0.5" style="stop-color:#ff0c00;stop-opacity:1;" /> <stop style="stop-color:#f1d3d3;stop-opacity:1;" offset="1" id="stop3606" /> </linearGradient> <linearGradient inkscape:collect="always" id="linearGradient3428"> <stop style="stop-color:#00ffff;stop-opacity:1;" offset="0" id="stop3430" /> <stop style="stop-color:#00ffff;stop-opacity:0;" offset="1" id="stop3432" /> </linearGradient> <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective4434" /> <linearGradient inkscape:collect="always" xlink:href="#linearGradient3602" id="linearGradient3479" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.8002348,0,0,0.8002348,-58.206262,-13.04308)" x1="221.64285" y1="179.13533" x2="223.35713" y2="157.17104" /> <linearGradient inkscape:collect="always" xlink:href="#linearGradient3428" id="linearGradient4329" gradientUnits="userSpaceOnUse" x1="203.04065" y1="137.41652" x2="232.33508" y2="137.41652" /> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.979899" inkscape:cx="98.316858" inkscape:cy="147.89026" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1280" inkscape:window-height="740" inkscape:window-x="0" inkscape:window-y="0" /> <metadata id="metadata4431"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title>Gambas 3</dc:title> <dc:date>15/09/2008</dc:date> <dc:creator> <cc:Agent> <dc:title>Fabien Bodard</dc:title> </cc:Agent> </dc:creator> <dc:rights> <cc:Agent> <dc:title>Common Creative</dc:title> </cc:Agent> </dc:rights> <dc:publisher> <cc:Agent> <dc:title>Fabien Bodard</dc:title> </cc:Agent> </dc:publisher> <dc:identifier>gbFBodard150908</dc:identifier> <dc:relation>http://gambas.sf.net</dc:relation> <dc:subject> <rdf:Bag> <rdf:li>gambas3 logo basic shrimp</rdf:li> </rdf:Bag> </dc:subject> <dc:description>A pretty shrimp, a malicious new gambas logo... we got the power !</dc:description> <dc:contributor> <cc:Agent> <dc:title>Fabien Bodard</dc:title> </cc:Agent> </dc:contributor> <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" /> </cc:Work> <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/"> <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction" /> <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution" /> <cc:requires rdf:resource="http://creativecommons.org/ns#Notice" /> <cc:requires rdf:resource="http://creativecommons.org/ns#Attribution" /> <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> <cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike" /> </cc:License> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> <g id="g4454"> <path sodipodi:nodetypes="cccc" id="path4860" d="M 247.11108,138.88965 C 234.65959,112.93246 206.82469,95.307577 121.04995,129.06522 L 123.17663,133.1323 C 145.38801,122.07119 219.77304,89.393396 247.11108,138.88965 z" style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <g transform="matrix(0.1672889,-0.8480899,0.8480899,0.1672889,-213.54172,618.39735)" id="g4504"> <g id="g4506" transform="matrix(1.0150594,0,0,1,114.12199,98.756399)"> <path sodipodi:nodetypes="csssssccc" id="path4508" d="M 608.21429,180.84433 C 608.66762,182.07167 606.52465,182.93139 606.60715,184.23718 C 606.67027,185.23637 610.89708,181.92134 613.48214,183.96932 C 614.87181,185.07027 612.16566,190.05036 613.92857,189.86218 C 614.88998,189.75956 626.99979,190.34274 624.64286,192.89789 C 619.96782,197.96611 605.83151,198.4619 598.39286,197.36218 C 591.02073,196.27229 577.94643,183.25504 577.94643,183.25504 C 577.94643,183.25504 586.78572,173.61218 587.58929,173.61218 C 593.05775,175.89384 601.28015,175.15708 608.21429,180.84433 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="csssssssccc" id="path4510" d="M 575.71429,150.57647 C 574.23538,148.1575 618.42865,155.09638 629.95761,178.07647 C 630.65003,179.45664 616.02166,178.63611 612.85714,177.00504 C 611.86284,176.49255 612.76918,174.94874 611.78572,174.41575 C 610.11652,173.51112 607.54337,175.72829 605.71429,175.21932 C 604.03397,174.75175 604.58635,171.60797 602.85715,171.38004 C 601.47216,171.19747 598.16626,171.70892 597.88098,173.07647 C 596.92302,177.66861 598.12999,183.12344 595,185.57646 C 583.27377,194.76649 548.54487,190.37248 545,185.57647 L 534.28572,160.57647 L 575.71429,150.57647 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> </g> <path style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 715.01012,277.54715 C 712.10642,284.72269 662.95813,278.53112 663.58155,275.76143 L 663.93869,280.40429 C 682.57487,287.07316 708.76002,287.44719 715.01012,277.54715 z" id="path4512" sodipodi:nodetypes="cccc" /> <path style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 691.61726,249.69001 C 703.65159,248.74225 734.22781,252.39399 749.65298,272.90429 C 731.42334,263.51382 710.98478,255.26489 691.61726,249.69001 z" id="path4514" sodipodi:nodetypes="ccc" /> <path style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 740.36727,293.26143 C 739.8059,294.10498 720.66126,291.465 718.58155,287.54715 C 717.90571,286.27395 714.75602,289.5312 715.90298,290.40429 C 724.5295,296.97099 740.98934,293.18367 740.36727,293.26143 z" id="path4516" sodipodi:nodetypes="cssc" /> </g> <g transform="matrix(0.8644316,0,0,0.8644316,-404.99207,-42.333558)" id="g4518"> <path style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 528.57144,260.21933 C 535.81509,247.59528 556.67669,249.20287 567.14287,252.36218 C 585.1947,257.81128 587.18697,277.58863 585.35715,277.71933 C 571.14586,274.81756 555.96767,270.94889 545.35715,271.6479 C 552.08041,280.0285 561.09819,288.25311 575.35716,296.6479 C 575.35716,296.6479 553.63121,309.64002 545.35715,305.21933 C 531.27937,297.69781 521.03698,273.35019 528.57144,260.21933 z" id="path4520" sodipodi:nodetypes="cscccss" /> <path style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 543.30358,254.77289 C 552.31012,250.5633 567.14252,252.13766 579.28573,265.93361 C 569.82065,259.6329 552.08323,253.77206 543.30358,254.77289 z" id="path4522" sodipodi:nodetypes="ccc" /> <path style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 527.14286,278.79075 C 536.62785,294.92378 548.88697,304.95371 567.85715,300.21932 C 544.26619,314.2288 533.70527,300.73043 527.14286,278.79075 z" id="path4524" sodipodi:nodetypes="ccc" /> </g> <path sodipodi:nodetypes="czcczcc" id="path4526" d="M 79.027891,90.299303 C 41.547416,91.362502 8.5477829,125.72764 11.416987,151.73569 C 14.2862,177.74374 39.851738,193.68189 45.994251,195.266 C 55.62363,198.35329 61.646652,192.53431 56.490923,183.53443 C 53.321113,179.18924 47.794897,163.759 54.94729,154.51423 C 62.099684,145.26945 88.687629,138.81384 92.303088,140.62157 L 79.027891,90.299303 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.72886324;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="cccc" id="path4528" d="M 234.9343,163.46726 C 226.19313,136.03722 201.06385,114.73141 111.44408,136.29942 L 112.98771,140.62157 C 137.34652,133.32575 215.03663,110.74852 234.9343,163.46726 z" style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="cczzccccccc" id="path4530" d="M 179.7496,51.862965 C 189.35914,97.003463 119.00014,150.62893 90.759455,141.54774 C 76.68051,136.42226 63.948668,123.0833 69.457388,100.48724 C 74.966108,77.891182 110.43316,73.11544 123.79309,77.641552 C 137.15303,82.167655 156.33669,66.149158 156.20928,65.909979 C 156.40814,68.769156 155.63947,70.942267 154.20256,72.779115 L 163.00124,65.292524 C 163.42356,67.38584 163.06071,69.1651 162.46097,70.849592 L 171.64556,60.970375 C 172.22893,63.26704 172.24539,65.336939 171.79993,67.222065 C 174.94439,64.11267 177.62687,59.263615 179.7496,51.862965 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.72886324;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="cscssc" id="path4532" d="M 89.215831,81.191893 C 77.480178,87.031103 66.767701,95.177091 69.457397,115.46043 C 70.486848,123.2237 77.44197,135.06598 86.437306,138.46049 C 77.107279,124.84244 77.270475,119.76833 75.940643,113.76245 C 73.595025,103.16898 83.337826,88.926646 91.784878,85.95282 C 100.42326,82.911646 95.957922,78.914479 89.215831,81.191893 z" style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="cscsc" id="path4550" d="M 61.164507,96.360127 C 61.085887,95.652512 13.098108,118.16457 14.4479,148.5343 C 15.521775,172.69597 48.72703,193.06784 48.066389,190.22996 C 47.029831,190.41586 17.960682,165.0538 20.12375,147.44278 C 23.664669,118.61364 61.059954,96.046459 61.164507,96.360127 z" style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <g transform="matrix(0.8644316,0,0,0.8644316,-350.11637,-22.645359)" id="g4552"> <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 456.58895,142.71982 C 457.55769,164.06654 465.7501,182.61416 490.93414,193.22744 L 491.43921,193.73252" id="path4554" sodipodi:nodetypes="ccc" /> <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 434.87067,159.89241 C 439.6127,179.61297 449.75122,192.97991 479.31738,198.27821" id="path4556" sodipodi:nodetypes="cc" /> <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 418.97871,190.25826 C 429.86776,202.43436 440.63261,209.73466 467.57807,205.85435" id="path4558" sodipodi:nodetypes="cc" /> <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 423.5244,219.84855 C 436.95492,223.35277 451.98445,223.29384 464.22637,214.58858" id="path4560" sodipodi:nodetypes="cc" /> <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 435.58496,235.23543 C 445.93494,234.26449 455.62888,235.36291 464.67017,219.99648" id="path4562" sodipodi:nodetypes="cc" /> <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 446.48743,245.75537 C 458.27254,246.76552 464.27218,243.14334 466.6292,232.03166" id="path4564" sodipodi:nodetypes="cc" /> </g> <g transform="matrix(0.8644316,0,0,0.8644316,-346.20448,-29.613465)" id="g4566"> <g id="g4568" style="fill:#00ffff"> <path sodipodi:nodetypes="ccssc" id="path4570" d="M 475.78185,223.65828 L 469.97347,228.96158 L 456.84149,216.83975 C 454.70841,212.59417 459.38653,210.16689 461.63971,211.28391 L 475.78185,223.65828 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="cszsss" id="path4572" d="M 469.21586,226.4362 C 468.48121,222.53202 475.19674,220.07802 477.67589,225.93113 C 477.81455,226.25849 478.64024,237.60366 477.17081,241.84103 C 475.71546,246.03782 471.64883,247.74854 469.84721,246.38672 C 468.41835,245.30666 470.14248,243.57854 470.37003,240.94006 C 470.71954,236.88751 470.11266,231.20212 469.21586,226.4362 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> <g id="g4574" style="fill:#00ffff"> <path sodipodi:nodetypes="ccssc" id="path4576" d="M 488.28249,213.43049 L 482.60038,219.74395 C 482.60038,219.74395 466.07015,210.96692 465.93286,210.77884 C 464.45819,208.75865 467.17315,203.33521 471.23616,204.8442 C 471.30301,204.86903 488.28249,213.43049 488.28249,213.43049 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="csssss" id="path4578" d="M 481.21142,218.22871 C 479.55946,217.14597 484.12247,210.73223 487.77741,212.67288 C 490.3179,214.0218 493.75608,222.40149 494.09086,228.0777 C 494.2983,231.59483 489.9722,237.29093 488.53503,236.15892 C 487.40113,235.26578 487.21133,230.89751 486.03644,226.98402 C 484.68551,222.48413 483.24144,219.55924 481.21142,218.22871 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> <g id="g4580" style="fill:#00ffff"> <path sodipodi:nodetypes="cccss" id="path4582" d="M 491.81803,193.73251 L 507.34912,201.18239 L 504.31866,208.00092 L 487.27234,200.80358 C 484.10175,199.46489 488.26404,192.02775 491.81803,193.73251 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="csscc" id="path4584" d="M 514.04138,203.83404 C 513.86537,204.18605 508.31518,201.10906 506.33896,200.42478 C 504.09183,199.64669 501.01843,205.31923 502.42462,207.24331 C 504.42909,209.98601 510.71567,210.64371 510.37958,210.90511 L 514.04138,203.83404 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> <g id="g4586" style="fill:#00ffff"> <path sodipodi:nodetypes="csccs" id="path4588" d="M 477.92842,203.58151 C 476.58077,201.17 480.22827,196.53085 484.11561,197.64686 C 484.48983,197.75429 499.2679,208.37973 499.2679,208.37973 L 493.71206,214.81945 C 493.71206,214.81945 478.41971,204.46063 477.92842,203.58151 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="csssss" id="path4590" d="M 492.95445,212.42034 C 491.43196,208.45399 498.28047,206.15909 500.9094,209.89496 C 502.13721,211.63977 503.05637,224.03404 502.55089,225.80486 C 500.91722,231.52802 498.31518,232.13876 497.24759,231.61324 C 496.80879,231.39724 497.08236,228.80782 496.50152,225.85762 C 495.55123,221.03087 493.79959,214.62208 492.95445,212.42034 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> </g> <path sodipodi:nodetypes="ccc" id="path4624" d="M 78.719168,139.2323 C 81.595443,140.60608 84.267686,141.36777 87.517845,143.86318 C 82.952644,144.22392 80.883333,141.67278 78.719168,139.2323 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="csscc" id="path4596" d="M 85.253426,149.5078 C 85.457683,149.35998 93.350056,127.36243 98.113584,124.72921 C 104.2568,121.33333 109.50731,122.30525 110.91428,125.14527 C 115.38045,134.16036 104.03797,153.1882 106.62542,153.55308 L 85.253426,149.5078 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.72886324;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="cscc" id="path4602" d="M 97.625278,111.31193 C 98.464935,120.39722 111.08858,134.25863 119.27437,131.31759 C 124.57045,129.41479 129.57541,129.46426 135.53161,113.30864 C 123.82041,118.06343 107.58682,114.02339 97.625278,111.31193 z" style="fill:#666666;fill-rule:evenodd;stroke:#000000;stroke-width:1.72886324;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="cccccccccccc" id="path4604" d="M 92.200239,104.81146 C 93.128275,107.365 95.815708,108.62343 98.036009,109.85368 C 101.75386,111.52618 105.62616,112.87657 109.67149,113.47391 C 113.58543,114.10062 117.52605,114.61188 121.47143,114.96674 C 128.52701,115.14042 134.81028,112.47069 141.30472,109.9592 C 142.26242,109.38801 140.49637,110.93941 142.15357,110.05162 C 142.7816,109.47793 145.27934,108.08124 145.20197,108.74548 C 140.22205,111.96789 134.41269,113.57004 128.72333,115.04297 C 123.81886,116.20342 118.69932,116.17965 113.75555,115.27998 C 108.4281,114.61874 103.01504,113.88057 98.078856,111.65018 C 95.273942,110.5886 92.591097,108.96219 90.608446,106.69765 C 89.838777,105.42809 91.39196,105.16873 92.200239,104.81146 z" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="cccsc" id="path4606" d="M 101.24275,120.13781 C 103.41732,116.32009 119.51914,114.17667 121.41844,122.54449 C 117.62827,115.94821 123.33854,116.0029 132.68421,118.84316 C 129.35428,127.00305 125.03599,130.76648 120.1322,131.46338 C 112.62078,132.53086 105.27687,125.70442 101.24275,120.13781 z" style="fill:url(#linearGradient3479);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79655021px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="cccc" id="path4612" d="M 87.766626,145.63717 C 93.321688,140.28058 99.424468,139.88486 109.99726,139.81818 L 107.22973,146.5031 C 93.01731,147.46279 91.682363,142.69737 87.766626,145.63717 z" style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4614" d="M 180.5986,59.426742 C 178.37013,92.898381 147.5758,123.73738 111.44408,140.31284 C 141.05113,121.3124 171.42017,93.790984 180.5986,59.426742 z" style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4618" d="M 51.860033,154.9773 C 53.525698,157.96046 57.255366,160.6314 60.967442,162.38672 C 59.441505,159.17043 55.015113,156.97175 51.860033,154.9773 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4620" d="M 59.73255,148.95716 C 63.103807,150.16533 68.900495,151.72659 71.464114,153.7424 C 67.747422,153.00256 62.214437,152.06364 59.73255,148.95716 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4622" d="M 71.772837,142.47392 L 81.806425,149.26588 C 77.399293,149.01017 73.304204,146.01622 71.772837,142.47392 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4626" d="M 84.893682,151.73568 C 88.759774,156.26456 87.551688,166.19145 87.363484,167.01761 L 84.893682,151.73568 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4628" d="M 75.014456,155.59476 C 77.795747,160.01913 78.689345,165.30134 79.954069,170.10486 C 80.914884,161.86213 76.305338,155.36752 75.014456,155.59476 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <g transform="matrix(0.7463156,0.4361823,-0.4361823,0.7463156,89.038778,-287.70462)" id="g3488"> <g id="g3441"> <path sodipodi:nodetypes="csssssscc" id="path4594" d="M 304.50438,437.17997 C 304.50438,437.17997 322.52054,426.96302 331.2901,426.82283 C 340.8338,426.67026 358.93388,430.12501 365.93295,438.60855 C 369.13728,442.4925 354.06994,439.92667 350.57581,440.03712 C 348.26407,440.1102 350.85901,446.50314 348.7901,447.53712 C 346.38644,448.7384 342.42412,443.14483 340.21867,444.67998 C 338.63337,445.78346 342.84297,450.10666 340.93295,450.39426 C 333.12149,451.57045 316.13454,455.51806 316.2901,455.7514 L 304.50438,437.17997 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="cccccccssc" id="path4598" d="M 365.93295,457.71568 C 360.41347,454.96368 354.89995,457.31328 345.57581,456.64426 C 344.30439,457.73474 343.39608,459.00678 343.07581,460.57283 L 335.93295,456.64426 C 334.66695,457.66918 332.35177,456.35021 332.36153,459.5014 C 328.69635,459.16743 328.43936,458.39322 328.07581,456.64426 C 327.36304,451.94315 329.53245,449.2867 325.93295,442.17998 C 324.4122,434.87981 291.90836,423.2466 274.50438,423.78712 C 236.62894,424.96344 250.3542,462.13186 265.21867,470.75141 C 301.54948,491.81877 361.61319,481.89985 365.93295,457.71568 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> </g> <path style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 256.95054,434.92116 C 280.77458,429.18557 289.64264,428.58158 312.37561,440.91065 C 302.64008,424.97323 264.34659,423.48128 256.95054,434.92116 z" id="path4608" sodipodi:nodetypes="ccc" /> <path style="opacity:0.8;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 353.07582,434.32284 C 353.07582,434.32284 330.18351,426.04353 321.64725,432.17998 C 320.17087,433.24131 324.28534,437.23476 325.93296,436.4657 C 331.33428,433.94453 352.99731,434.13728 353.07582,434.32284 z" id="path4610" sodipodi:nodetypes="cssc" /> <path style="opacity:0.2;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 266.81956,470.76482 C 310.87765,485.49196 336.15669,471.8658 363.21609,462.90216 C 358.90754,479.35519 302.15077,494.09497 266.81956,470.76482 z" id="path4616" sodipodi:nodetypes="ccc" /> </g> <path sodipodi:nodetypes="ccc" id="path4630" d="M 64.826507,164.5478 C 66.754112,168.06095 67.469247,179.02469 65.289609,180.13843 C 65.783977,176.75144 64.158215,168.65633 64.826507,164.5478 z" style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <g transform="matrix(0.8800357,0,0,0.8136863,-146.1756,-24.774727)" id="g3981"> <path sodipodi:type="arc" style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3983" sodipodi:cx="219.96072" sodipodi:cy="130.34544" sodipodi:rx="21.970818" sodipodi:ry="26.516504" d="M 241.93154,130.34544 A 21.970818,26.516504 0 1 1 197.98991,130.34544 A 21.970818,26.516504 0 1 1 241.93154,130.34544 z" transform="matrix(1.0229885,0,0,1,61.6135,3.5355339)" /> <path sodipodi:type="arc" style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.94424129;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3985" sodipodi:cx="224.00133" sodipodi:cy="139.94189" sodipodi:rx="21.970818" sodipodi:ry="20.960665" d="M 245.97215,139.94189 A 21.970818,20.960665 0 1 1 202.03051,139.94189 A 21.970818,20.960665 0 1 1 245.97215,139.94189 z" transform="matrix(0.9875095,0,0,1.1194375,65.679887,-19.744789)" /> <path sodipodi:type="arc" style="opacity:1;fill:url(#linearGradient4329);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3987" sodipodi:cx="217.68787" sodipodi:cy="137.41652" sodipodi:rx="14.647212" sodipodi:ry="17.930208" d="M 232.33508,137.41652 A 14.647212,17.930208 0 1 1 203.04065,137.41652 A 14.647212,17.930208 0 1 1 232.33508,137.41652 z" transform="matrix(1.0172414,0,0,1.0422535,64.179526,-6.0588701)" /> <path sodipodi:type="arc" style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54330707;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3989" sodipodi:cx="216.17264" sodipodi:cy="135.90129" sodipodi:rx="9.5964499" sodipodi:ry="12.879445" d="M 225.76909,135.90129 A 9.5964499,12.879445 0 1 1 206.57619,135.90129 A 9.5964499,12.879445 0 1 1 225.76909,135.90129 z" transform="matrix(1.0789474,0,0,1.0588235,52.381728,-6.7315028)" /> <path sodipodi:type="arc" style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3991" sodipodi:cx="216.96428" sodipodi:cy="118.07647" sodipodi:rx="6.25" sodipodi:ry="10" d="M 223.21428,118.07647 A 6.25,10 0 1 1 210.71428,118.07647 A 6.25,10 0 1 1 223.21428,118.07647 z" transform="matrix(0.8635422,0.6148578,-0.6148578,0.8635422,180.17025,-105.68258)" /> <path sodipodi:type="arc" style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path3993" sodipodi:cx="204.82143" sodipodi:cy="141.64789" sodipodi:rx="4.8214288" sodipodi:ry="3.2142856" d="M 209.64286,141.64789 A 4.8214288,3.2142856 0 1 1 200,141.64789 A 4.8214288,3.2142856 0 1 1 209.64286,141.64789 z" transform="matrix(1.1111111,0,0,1.1111111,53.492064,-5.7386551)" /> <path style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="M 273.75,112.8979 C 275.04002,121.1401 266.543,116.4204 267.01165,113.28136 C 267.27178,117.76485 267.45999,118.2252 268.22084,118.81216 C 270.60456,120.65107 269.25183,119.16754 267.8081,120.18769 C 266.31695,121.24136 267.04875,121.71312 263.36839,119.45873 C 264.08756,121.1198 265.16836,123.77254 265.91572,124.17611 C 267.79072,121.98861 274.10714,113.25504 273.75,112.8979 z" id="path3995" sodipodi:nodetypes="ccszccc" /> </g> <path d="M 2.3379115,52.168753 C 4.1311984,51.782832 5.9412358,51.461475 7.7589222,51.208953 C 10.437066,50.872203 13.053287,50.283752 15.763465,50.324519 C 16.177704,50.348161 16.597548,50.323539 17.006183,50.395446 C 17.489457,50.480486 17.953312,50.652869 18.423686,50.792631 C 20.180287,51.31457 21.850867,51.967536 23.495563,52.771904 C 25.005386,53.500801 26.553352,54.155595 28.106789,54.786404 C 29.495149,55.327359 30.925467,55.589752 32.402402,55.732948 C 34.640939,55.890702 36.886895,55.890003 39.129824,55.892182 C 40.753067,55.847717 42.386845,55.990798 44.005682,55.81711 C 44.984232,55.712119 45.430194,55.573057 46.408796,55.343446 C 49.806297,54.393388 53.086412,53.087293 56.373744,51.820059 C 58.098018,51.127775 59.838316,50.512556 61.486237,49.646602 C 61.97872,49.387811 63.422377,48.549581 62.94062,48.827832 C 57.26765,52.104396 56.731328,52.45775 59.306741,50.853769 C 60.901705,49.803334 62.279113,48.48228 63.542889,47.061018 C 64.035583,46.486685 63.808945,46.773004 64.227281,46.205625 L 71.025163,43.225145 C 70.630104,43.897451 70.854307,43.567429 70.345715,44.210529 C 68.979589,45.643376 67.662479,47.132959 66.004967,48.252577 C 61.186181,51.32697 56.269366,54.246415 50.866167,56.141853 C 47.518863,57.44973 44.161575,58.773193 40.683587,59.696016 C 38.234844,60.203794 35.767109,60.193406 33.272781,60.144724 C 30.995558,60.13242 28.71402,60.146993 26.442103,59.970906 C 24.898964,59.804232 23.397974,59.488006 21.960323,58.884147 C 20.442667,58.205924 18.912163,57.54747 17.450419,56.753583 C 15.105189,55.583006 12.589731,54.583077 9.9324279,54.561008 C 7.2353711,54.603321 4.619793,55.201043 1.9544139,55.559145 C 0.079514734,55.858989 -1.7843126,56.227388 -3.6332267,56.659549 L 2.3379115,52.168753 z" id="path4333" style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.20000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path d="M 30.654849,27.859523 C 34.500973,25.265031 36.582355,23.900848 40.494483,23.412434 C 40.885811,23.363578 41.277422,23.276464 41.671468,23.292328 C 42.199539,23.313587 42.717222,23.446088 43.240099,23.522968 C 48.054148,24.557263 52.50162,26.765356 57.169834,28.279532 C 58.415653,28.683624 59.681213,29.024108 60.936903,29.396396 C 68.83129,31.665713 76.902712,33.230167 84.991534,34.61858 C 90.739162,35.386701 96.553959,36.262519 102.37279,36.090026 C 103.47795,36.057265 104.57989,35.953762 105.68344,35.88563 C 112.05085,35.310273 118.11464,33.137912 124.06689,30.926126 C 125.92719,30.069128 127.8475,29.331081 129.6617,28.374658 C 130.06578,28.161634 131.2455,27.463599 130.84749,27.687758 C 129.08642,28.679594 127.3308,29.68107 125.57246,30.677726 L 132.3438,28.040411 C 127.86767,30.666864 123.60661,33.386239 118.70693,35.113507 C 112.75053,37.230718 106.69447,39.309334 100.3485,39.810023 C 97.341142,39.979991 96.730291,40.091301 93.749741,39.962128 C 89.044342,39.758203 84.383203,38.941882 79.726326,38.30322 C 71.636371,36.793384 63.52185,35.355574 55.613487,33.036126 C 50.939149,31.672525 52.693982,32.238335 48.166731,30.708553 C 44.64613,29.518924 41.157974,28.095316 37.437804,27.661589 C 35.981785,27.620408 35.025704,27.666075 33.617144,27.99135 C 30.897096,28.619483 27.105869,31.085521 37.62953,25.168725 L 30.654849,27.859523 z" id="path4335" style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.20000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4345" d="M 99.752563,109.65416 C 111.876,114.15392 141.65313,92.960766 140.28493,90.840058 C 124.65408,94.623413 113.08116,95.661432 99.752563,109.65416 z" style="fill:#3398c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path sodipodi:nodetypes="ccc" id="path4347" d="M 105.53289,107.75549 C 107.1294,107.6581 124.55216,96.275549 125.57782,96.272699 C 118.87029,97.896215 111.25247,101.75092 105.53289,107.75549 z" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.8" /> </g> </g> </svg> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/���������������������������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0016156�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/�����������������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0020052�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.directory�������������������������������������������������0000664�0000000�0000000�00000000041�14115753270�0022052�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Icon=./.icon.png �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.icon.png��������������������������������������������������0000664�0000000�0000000�00000037024�14115753270�0021574�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������\rf��=IDATxI$Iv{ddV0]ݍFH4 #a(2Ì/< <7(BӜx!y�@ !kwU=22V_LfnK'njjjSUx<x<x<x<x<x<x<x<x<x<x<x<P-_]yvdЪPے^)Ws'Ӌ-tS)q畴SA{*]>|}m5}k mj/Z-͝�*L&+F7͠de:O)iJ9-3+O&iIySye69䞲<ȋ/;NΕT5쿝S(rWs��'PqkLҨFMiS]YE]E}y5cK|Rٲ N柹 ͟qrzm.,�2ͳZ*~ὕPP29&3EMw*WyJןf]QK*gAʙ\ܴvϋ .Oi:hcèwԑ?ns)@v*Vm~9լ.[?f-r^WXZ<#ƪP7;'ϢpO3_ٷll__y4 lohmjr%6_h_vyB{}MAK!h~5KŒA i9vnIAaibZ,+kg;b?bkS,R- ޖ.ye?ͯR_a6_ ƹg}/䫫Քq1_:dw-쳵,4ה.p)F9s*qY-ًXgIԾ* x-¹.cLBn{g>Zl6](xqJm%ɜ؅r^oD4*45ܹ?3+�&@κ|{nN}Q_3dE^~[gȬf{#xm~[׽?3+�2666\QOePؽ<on9~ghrE##�[�gg0B.N;2oO oe2'R_@.IWY)s lITo,mJU4-;+� 瘜gqقBS[H+Wt91Ikmz'�zj 8mDj*om2e dх6y(c4@J_ <8w�( >?(˴?/[%;V)6#Q 1)\z'NmAu 6:z_5RoFIE͜&NG)׮WȻLҳxݚ3OnZW ڨcWYC;OUbo3b//]RͯD &ٵ [೟p' |/ Eo>k-z[Ow U*.@ u<BKH<SŚS~MAKV.S1`pg隆\F>[lateACh>A3,E~f7)X*U] (5]3e 1=c3y@65k*֪Ps_ސ/huQu.565t Yp<E?^Zw5i74baɔ*lKN{d_ml=B旞YP_M.Avb=~W2NK?<c qnEtZnk~e6&~LxjB5)'@,O>T`卲�2Z `~~ U!_=d$ jmVB͟7;<Tqah74J,X:5y6Ү,4(j:t\ 5=ooL-qlKCz'|Qg߳/_&e<(( T`iB1xyxc-VuFIB^;R鞚l7W?ߧ ^{ h pnK�mʋ_a"Y�rͯcK`Ixyyzh64l85{)d-5"<5]孰� 4"b0Nibb<� `USewhf^*k􉷿g&e/&U@~с4qb ]s~e]){4=o0FVDMoށB#@~ZMld6o& TQ m{yy�b&F\sOl=WJ(HDfFgKbda[odd12뽟Kk~U,7Fh@Ʃb:ф5T(EUa</xy'|�eT4y5S䝳�Sn9 =YI Ct6?5:w^c/zg-՜^`"oY;mLHR͟X(I?}Z<o4L2TӥD.U[FIBbݬE?c\o!=oY�jei"l?N=\ cb p!͟X8ICO#H\= p?+j~A' ةtǿOBz߿xjq,l:4d q//>XuߝSkd_#$& ?յ�j c`J~FGdNćzPE,& -Sdx-[�%X"[m?n2:xݗą_=mo|[ }YJx 4?? s@Mݟۈ�+?woMyme&/Q- (ymfe fsI,�ywM� sYH^ ('Brd#P~V[z_Ѹo(}eo/p� HN@4�2YW1<>n~\eQqީT%  ,Ώ�+`�L_AN=Ugoh)UqKMͭ n^ɦ/R: S睩R:_^Lm>rMﯰJ9>,6}t+!|`)$1kSBy'3pL �ɶ@W!�BPQ'e 2<AI!D(Ț\t @Z`#Iz1x!�(VM�I<[d-0)�*bŞ8RJ ^|taj4Gu!:u;yQp[ AL�aFE12yƗT8V̚wrAR.Hu @w:@PX㖀wBs|``8APXcx�k*^ل>zPwܜrˇ|VI_TE& *1*jӻ{&x Rbn9�"�༚QS);s^Kt+ixJ1k_.%g,JA9AlA@8^�WJkZ,%N&{;.tzŵrB^� ` J!VʿPOm/Vj3[4UO|ٍ3WIET_ȘUV،σwĸ^�Fڼi�yU[ o!s @iqBXY|`9WwkR"is5/K5ܦŌo ۖ VsW�xm˜%33{8+@){O)&*Lh RH-3kVZ^[h(h 'e:^�Р�k'r >�`4e䕚Sc�fT-BD#:8^�N'h'9mWڞW*;o.|%V,>T�iN& F]N kdhd[P7u}R"gKsw!�u|[E>�$yN 6F] PqRWri_Ʋے ,Xd%xg[DZH 0M/[0 ՠ̞<g}Wbu}�˜g�":^�ߙ4<�$Ti *+~y�XZ�$,e+i_WUlA=Kbl3kbh�R]U  /�VA@1? �; ? (Y>o{ν^ȗP3krY5A@jTO@T-  ⽋!o(TҮymBZe>斷/?|'/Pu}k8XP CZ@8 2k,I$u oXF冥j� M\_"f^"@<J 'aO\ӖE1BvmEP15p>`+!XO E?/vm(/lS^r_^hYH0X,"p4GuNCˉ,$"ו Y)qMp>+no~b `�Z S-WW~E3ֈ#?�! b�X?p{w2'J@@3Bu۟j T&1D֒I5 hiMCiPY2u`E[ah8X$m1 kS\ &,J;Wf݀P�hvEHWh\I+(Ix1x9s8E Ġl56쵛l5 =D\DJ+d#cxX(X h5]!!\gZ+gHկ�!18s �R)�Z L4 OGcG<9!F5CMnZnjN.Ml[1Kl,-\ZϺ/r |lml9 vovowi)ES]~%KED\�ߍ/�VuCLIbE$`v/Nwa 7_g<8bRA`<C 4w;m~oom:ך97I%PJ ` 65_F =#l*!ndgՠ`;>=cRXgudV(7#ge�X(`eE siN /1jlntt:!"ǜߘ#ĶvA+mTE(}FVp$ m, @)UЦJPmgZǮ;;A<D0f kJ2k}"R|G /�꒶k(o/E _3~u|zg{>?xkX__h8h1ϟ__qom^5}6ZcwTMMk CZc׶&.z؃ $ܺc֭a]/d Y N*ճs*QFdWj xXKd-1pF.zw}_|;C6wwvJ$ Syoyo J߈Y = /< |vMg2:=k6Q -lX`mTXTzDŽSZS֬5AWmH?NA[�5_2 {,.yO761OCk|<c?m_[#j6ZZɍfM>CKO_pc=i4h`z"k9Ć <ns}kw> /uC(耠"tQ _15ZKK<r$(QQ_υ�uPY@I'yj9nM+Bb,#^ vO? 7nZF`G#rⳝ6:֚M66}6 GAfxt{ւ.71 yxlua}m;P&!41;6 B7[l &pcmc3\Kʟ⃀΅�uդ$ 8_Ϩ%X :B`g_[[CawW>{F3޸tF)?Fsn$u#4AYgu1vh[]TK OНuT"J$!f*p}sE=s&�:b'A@`Lf5})mW + ;ws-? 舓o嗌Q/^?OTjq}Ni޽qn dMpaN&&{ݛn׶@|a3S:]2bOhf<lTk7օq&_"[❀uYwn&`E:\TW4*$|ӟlgG3:"ׯӸ~-kʂ~Rtj l~` 1Z lLf<b֎~q_+ξl9[+ 0J[�uPn|QP31}z{}߈00c#|?:Ѵ[|l}!6I 8z_9'fmwft=R(X[_ylC/nn6.Vv_ =ӗt{완]fZ6!/+ŠT~o�u떦&YZRN24Gc_~cOuܻA{wfGgϞ?zDrx cvܿv^&{;\@${.&.mmAFc h ztGbiaJU Y~+`/^? fplE5mzr`E`'Vx״Zuɭhmnv+h3O1ggH Z8q|| nh4@`{k3K Fsi_03ZSv}v 8 #UiD@Kx  n=�T`I??70Q ncEI7~n5}l4bɳgho~:ov݈"tָq&3 Y_`cl(]z?Ş}zh֓~*g**m#IYhDj ־IgP-+`DpXA[[ti6aSZ]'O_n/XvwzGRyoO"xN^>cw:㩣L0hҞ�[ y|/@d.<H)50YYl>_ؐ6}6 jt-"#40dݦ}6v;/7"F<~>$ɫx$89' .SFwL{!O5ɟ՜w,]hH"Px�P0`|<kV�c.2Fv=^\�}}{._c"l8ﳳ{6nޤq661ᐃ/sNy5aoao@ȥ9$뮳Sg99g#H�rǧhRp;d l::-79`*T_,з>�98>lr7hܽK -xӚF.<V+ljeߏ'\1NCx [ѸX6 5YS/GcԂ  Zz ZFV8un!nvnLi㬝?4o{4{ۻ|ɝ;&?9G w[*ņLJC%< ˘P#OM;8#8=sN 4e f"�*[�)F9nܹNIqUӳ#cy< rk<did1aoY^?t3o!>?`<=st6ɐ~dxi3bhbOY;=N _ޞJL~2 M*~fN:lɧ`-E.�R!�86<n4B݆VR� <`$17C̓ u9kIh8/CqÏ۾ӓN|ϳޘ㑥hK9?cx Nч8Q&a#H 6b? !јĤU@$*.Ti&<I0ѷ]6㝛7Qve0 <Z'|~mfb]7or}ТшGg#qF8N# q\J x I݃|xl 4ll څBЪxPl=L 09˷GG8 :΢ע*(J$"K hH(Mɐ񈓓!'Cc06b%2v&yh!çwniVz纚?P|jc<L9X2h"V2,ьc^g{v nnX#Mz#x10"Ά10Lf Wh /ŰgX y[ۘtrмkS /�j`S M  M-@F:p.O#zb8f6 qH|d9 bwqb9b"s9|edj)rO{;;@{n~J]-Ll gYQ$F`"dm^Rgغ?u%cm-m}׉yJD10L qZ፸E.Xh 7l?'#>Kbn*hGĹ4QlHUإ]wр3[#i @L H#VƥV^"r#l3<;!6 @MTMjlQa V4ՎAҁ wf;8#Iq_,];ɋ}>2ΞӔ�Bv>$�\w&@^DA�* }S"g&;�jZ&kxxnwߣv&*lª{oFClmN!0_3N5z/4~�TS3/=: (L��5cG.J!S4Կ �*/@)A@ $3B3B'C蔸�lrS 00kOu+&i_1ng # {#6s>o-Zgi%0 _Ȗ  uq撐?)DM@•M Ҿ&h DGpc+ 4�MTh4әb D#z}?=&1$vC7l>oI4X6deouXFId6 Xdϩ@VZuYTsF2:C=k fD#D^P4I|h cL#6a4zn 謣M@\aώhxG;|ǣa[+//߿l!d'FD!7[�54BMG"V+k 0�K�lcm"EŵPnih nojC- @4KøfmtǓ}fC>=~ŲV}u}3SI,$2^�A)a@Le* B�VXO,xLݤ5vn>m{Oo"v#/QҜ*8T:$ԚҜi ';k7ѭ; =}qpOF7 ;ZR48,|ՁH\,_%x5`5p>i PZUʷ4Mx N zuTsE}޻K{x71?A㜇nRcg <V!C~:oѹ1:xJ7|ʏ|8' ia{W?tP�j6B̷n!##-l &ؽ?Q0щGY̬5 B$xV$:`H][n`CO%k/!S1E[)L/Bwi^I&y=n`)x<y"UM?!hl@5Ѝ&jk>SLMnqlAbH4fE$|q|im%]#&X PtZ* Ds V&/h7>,ry$[9 [_uhȆXZMDK0[l\FsZO9x­O`5vv+L>i07K�j):Lyz@&l{ z$l�NxS6 wY&↵GD|6wuf&/Nq Y;9>N(l_Egiy~~Xn!p�XBqYl8@k"3 р[ڦl"jш$ .㗏p{4%P&;/߯0Rk>Oq'M>4vހ:X DҴt he�X@�v#_lW9ЊEJymaztwuSF[{|}_~>e+h[{ӛ$a$4}Íhg>1{ְߟyΣ˷]l@k �X ?pɽZ9'r@["IƼ8~A@)dtSKOBmH:py}xL3 4Zn-fn4`;pXӊ]O/&Yy~n7y%Yw.U+N$+Ms�ά \.`q7`.6Gç?C»'PaH@| G/c |l"& I̖Rl(EK@.M XOU oO%J&ĪO)&VX.���wcrdI:Fe^4D@@tF[>m-ifjU_zo@~,2L�L6[V3t|$A{!\o~'_sy{utMLPM"L9zz}r@85qwx8bG)6T@[ CZ�)}զ� $VR:_2w4v4{vCNFz@;FqPQHP֢1i>xL%ah=cpCt)N_Ɵο\˙,Cnj0f@�X /MK><Ģ MjSfŏM84w'hw-nStb WH$4јh^4xfӰ6I=ub_y?8& җỌw.ª| PvـgW-�(N-vٱȌوH $j4ItJ#:Ќl1׭: ]ܾV/sVC/L?Ư:nao@U\#v�ΪqwݕzWω�"̜sIeo@橨bL a~7`! PQ8t~*Eaz/DjN�oNi >"p9^�,@ұֺh3%|�#;�l(0YZ\@T(RM_lˬƞ\GE|ϯ踚q@r~/W� LRZȒ �f|�Tm֜&|\U/cQ7N[<ǽj i@J+(`P/�P83S](_YC;no`tkϵ$V8 іtL&[%س\tמLԤ٦KX[:i|{ja7"8oۿz&@阀YlγzUS-"uQfSOW.\+-.KTV8y4~U9ٗܚ�ƀ1*W]=' �Utgs,j˶/;U{ʒp?(d3ᩁ �kƈ .M VTygЀy4y}4>je]�1澻Bď � V#bfenenU5}|oܲȄdQ� V6F@_/?b&7e/Oe.;U}O7 =,vXt֭7gc\Zue�{S|TS :iX�98�5�b*tLO75q?oUm1~s',n� EARAEjнo P `b0Uk� ^gT3U]R/ x]|+il$(BPM�Xı[vJg#Θ PJ_DXoU~?(`YI2pր!I z�+��UW,_%x^@fY7k[� [)�kF^^4`{"$qBۇ EH`!*5qT+y~zot|W6V6}ʺ"nqF:5X_]o@=@y[cd4{y^�,B7Hנ(^Iey;/__ݶ}/R(�_"6 �kAL `) jUϻ2s;zl6~4{H@'5xu| ,"}JfK4X- Yo, $]hB#j *pRri_?9�U盹󨹛txqsR|ur@4lҢHDΫǠٮkLoqu-eD`TxKbfߒ( )A+Ύ:E"@ I&nor\,9+*rٲ®v.N+Y._t�:P~Ux'RF8" Qdt߱>�ozGmArˮsϢ:^L"-aK4JY|Wr�a[  E˯댼[ f!uEа/�jEY'hЭEۙƊ1ZG1za�`&H!->{:ݍu @+쫤�G?y!V#![x` jҺqr=6!A+�~}p�ϛa/!M�X֊FJm b�J)5R {4BC %H�o�Pj2[ܐA XB)4J"(&&ݧ�xC~ Q`ZCeiHB2cc5x PZg^ h-4FE#p$�oS(? р Zh6 (AFCL��X�F)5Hc7jᝀ YtY ѠtyϛĔp XFK $vy@|ݯ� Zh4A`#l �ϛE&� P†Ō"`1)�n@XƮ-,#@P``,�/�8&�Sbp-af,}1pD<#fH@:C \`ZAiB’􇌎mP:w>y^IAlD"H{j`s鼲:kB"COr6ǜ5$(8=~ D+·�5h4s|~ѯ L'j 4^%Uuf*6!jvՎ %tD5! b'uӆLn΍b"�әfjff :k-mh(?PRhS-g-DicJ> �:t=jE " V!4N4T�  9:V[KVd!֥$ WC)U�n;P$Z{#n.V /�栔[�EI'ԋ(E`PK"怫`AS3?8gLJ?v=�A? h>!F(L񭸦8 Bv=ϚŦN |1X@f 5QiO 95`l6T ˇO<)mUpMT+EfBY�K4J@ * ED� �fW�+H-kh%+ k&@=M/V~l`J[�+R~TT-陦ߟu}޴|�$U;y;Á=+�;=+�<+� � x0 \ah@ }� � rF7<+�x<x<x<x<x<x<x<x<x<x<x<x<+ 7r B����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.lang/�����������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021051�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.lang/ru.po������������������������������������������������0000664�0000000�0000000�00000004077�14115753270�0022047�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 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 <EMAIL@ADDRESS>, YEAR. # # Translators: # Дмитрий Ошкало <dmitry.oshkalo@gmail.com>, 2019 # Kашицин Роман <calorus@gmail.com>, 2019 # Олег o1hk <o1h2k3@yandex.ru>, 2019 # AlexL <loginov.alex.valer@gmail.com>, 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 <loginov.alex.valer@gmail.com>, 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/Web/SmallWiki/.project:16 msgid "SmallWiki" msgstr "Маленькая вики" #: app/examples/Web/SmallWiki/.project:17 msgid "" "Web application example.\n" "\n" "This example is a fully functional wiki based on the Gambas markdown syntax and the Gambas web application component." msgstr "" "Пример веб-приложения.\n" "\n" "Этот пример представляет собой полностью функциональную вики, основанную на синтаксисе разметки Gambas и компоненте веб-приложения Gambas." #: app/examples/Web/SmallWiki/.src/Main.module:55 msgid "Unable to lock the current page" msgstr "Невозможно заблокировать текущую страницу" #: app/examples/Web/SmallWiki/.src/Main.module:104 msgid "<h1>404 Not Found</h1>" msgstr "<h1>404 Не найдено</h1>" #: app/examples/Web/SmallWiki/.src/Markup.module:643 msgid "Unexpected end of line" msgstr "Неожиданный конец строки" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.project���������������������������������������������������0000664�0000000�0000000�00000000616�14115753270�0021524�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Gambas Project File 3.0 # Compiled with Gambas 3.8.90 Title=SmallWiki Startup=Main UseHttpServer=1 Icon=.public/logo.png Version=1.0.1 Component=gb.web Description="Web application example.\n\nThis example is a fully functional wiki based on the Gambas markdown syntax and the Gambas web application component." TabSize=2 Language=fr Vendor=Example Packager=1 Tags=WebDevelopment,Web Translate=1 ������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/���������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0021406�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/critical.png���������������������������������������0000664�0000000�0000000�00000001115�14115753270�0023704�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���s��IDATHǵOHTQR­Quf  8aDZڄ mZ!]4-L(q}-ޙ;ڛ;cн;{y"oi`6?WSB.*ּH6[�Y:݈㌰HIlՕo9cO"Wnh][9$s1�>@%I"SnRpnȘ@x,$\x,�B]ЩI�rq=ek4@AacxA:+^֩RKૺ=môZ>ג� pxeHi-˝""g2jUĹ/;0Z f G pE5^BrAt"sxpx߲%Qbڕ\;LD/|'fBZ $mۙ!t@).DL#ZY~Qo&p;nQ7K�/M{sP&mc,FJaGV(gi $dC[�1D,2����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/edit.png�������������������������������������������0000664�0000000�0000000�00000000164�14115753270�0023042�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������7���;IDAT(СPY̠88Ƅ)^LnuTkWFE����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/info.png�������������������������������������������0000664�0000000�0000000�00000001411�14115753270�0023044�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���s��IDATHǍKTQϛtr[(Bp�+*laEAJpcAAbCJ?y޽޹s|9|s$dJ/ڽHriٙw>8 9,GܲlbA.J8x, p5Lss8Y@-U^%:#+"謩^^)Ru$+'%"niIx*>>+I-Aq+RU~~xU]{gQc7OLUN&MS˛�Ըq=eUlFRXaCO3vtỏBت�}[ 4~1.|2VeSu¸nEKZZD�A&%""$B* E=ߠkXr[$c^4RaHj3ִ,R/4$PaeE$sEr&!0kב.d}Khqˊ ެI>(rüG"Ѻ[8byu.!^GbaP{݌C CVf'a6/!;WR7(f)ܲ1  $Y.;ikwJPnz5.D,0L`8>hxHm$IF=5{-PQ&n1k)B/"IJՙBlz Qua����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/logo.png�������������������������������������������0000664�0000000�0000000�00000010035�14115753270�0023053�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATxݛkys{fݕ\؀0Ȁ_RT Iq@eU*�e*cS\HͲ. W{j;}/?{{g>y.}z֨*헮x\ ~+7t[/:ke_L@QDQ$GUpTPTQI4i?z~WN2_*9];w;9~g8%Lw/m .4@q4%w9"mɎ#ߏx𮑣ĶA= Q'$>ԯm. RdMdH%<;*n J?zl8Ld5/v@rjO$*|!k̀P2іkQzOr-.BAډ{f@R@I !Кڰ`|݊Vn;~2+SAtǠ-QthLIx@>ȥjp+QGE% kCDÌ?0\SJB W/iSAh He4[?!Z}1O$LFɁ/lD) 76CSsl80^L�5/҉̓vo)}9 mZ( MsLIړF@t@؜U g |Ew*v #"CDķ$4FwMEk-NsiVdU̱3t-A"Dؑc#@Z ]Rhb&5u3 TR t <><?ygPUVӪ(롢K)k@ N!W`?F8; ,>:|cRCOlzMqY|LDB6 Y 'rpv5^ceN:$xy3F[?& %e&mA-CVx«*$'$YJ$rUB,^\*PQQ\Ҋym|Yy.7ndzz[255ţcܱtk^ܪeYQ^9V6qZ0+`A1PQ⍊-y,(B3{ilYseZ'�qŕW.o7Dtd*ιEWczORZOaog]I #p.�W+RjR/'yrTgڵk uwEq {8{!r?S+.)�K>*oEYMqL0 } &`$^aR/[Jxxs<wm+V0g\r gԿW= -wѷhf SARkJE8izQR^O]\Wy?>+W0_0g�^{m+$9:HXP!gWA 1O.[v, f N.Ʃ wDF$vCqs$ xjze˖47?B'FmʨA(AcEy+@TYغIϟ'Gޘm7HKk.&{233rnذ/wk[i[l1NgKbp"5m9܆�;`<w&K&"/ij8^xUz> <7x1.& ^*QS5ZҧdkED8AY_ ᙉ/ja˖-lڻy'lp_?v?}zv/WarO&)P3$DXk#aazz. VJȏ*JG>2ƾ0S3N8߿F϶žC윮1U慿:~�ͲG\P=#d)$ j@u bklۍgF }X]S.⏖uwNa(l:XAO_ё)#?jU<yBSBPLexIb@R䗪 =^% {xF>|6W6ؿaAKKLDB{($@ Y : 3;ɟ {pϹ R2+u)jrۑqjYY "z*,i 1Hb?J".X*ڛ#3 5azPcj{SNKGxxhz}G|u|/XAD < E<02`�I*,{*S &ǹSK6Pbg90NO MOb~CnŊ h 2�"@>k %/PZGmeIӜq7J-%РݶMj1 u( .5ī*R_Ftz�_Y;g&0E`nZϙ?>wc w+IaX~Lۋ(`q NMQRR1(t}>9J0~np(%훬ׇNџ?gv5~P䴃;0jpJj/[#~$/<x06%s]aM%d;:?0gG!ư/P<ȉ[6g.$?\3A52ZaFvܰu[~qƔw\pq]8J$ ƀqks=Q_ˣ.b1|9rfP<p = .f[';^.LW-{G>P*/wP891)縷Գi-Ba_:ǃr}u>iQFk,/aU>BcKI_YȜdUwc [978qAm2/$8^͕E 4-s)0QTX�fƢdE6> xҙl,x  G% 3`F"o3${& 3y2_&w_'s5" TxZ@S͊$�Y:f(/Ϗ�Q0/9jPE[ ^Sx^$10hR35Bhpp3O5A[e0X_-,[ ް"S@"s. HʈΏ�`b植it33Z,ݎ"ygI񪱵Ƶy$.X k3 M h�uhG Y9zRXYDL4^pK7#/V:oA0U JZcP9paYlcoq Ϗ�ػdֲEhQQdqV q:bd)mp^҇(bGJc`hòuMV0sx9Ц&_AiJjόD韧Xō<L'+ OBbL`S0Y54@7Ҧ@ɹm`ϋ�;MCI8ZZ2g^c>twnV^1;e{y*#^)%ӳKE:of9=/4r[93Aii܁9P`l=־Z_y^[Z^ԜnuZJ@;`ׇg&{jozofEDJƘVvE vdj''WJA0ORL0cn=k6~V]B~^.3 L!#Ƙ._V{ww% 6Pd~ӷ%_B ɽ6ߍJPG\JF3xhӉ;=%2L:5^mG@!mBƻU,j^߬-����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/style.css������������������������������������������0000664�0000000�0000000�00000006364�14115753270�0023271�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������HTML, BODY { height: 100%; } BODY{ padding: 0px; margin: 0px; } P { margin-bottom: 0; margin-top: 0.5em; } P:first-child,UL:first-child,OL:first-child { margin-bottom: 0; margin-top: 0; } DIV:first-child > PRE { margin-top: 0; } H1,H2,H3,H4,H5,H6 { margin-bottom: 0; } H1:first-child { margin-top: 0; } INPUT[type=submit] { border: solid black 1px; background: white; color: black; cursor: pointer; } INPUT[type=submit]:hover { background: #E0E0E0; } CODE { background: #F0F0F0; padding: 0px 1px; display: inline; } PRE { background: #F0F0F0; display: inline-table; padding: 4px 8px; margin: 0px; margin-top: 0.5em; border: solid #C0C0C0 1px; border-collapse: separate; } TABLE { border: solid #A0A0A0 1px; padding: 0px; border-collapse: collapse; margin-top: 0.5em; } TABLE TD { border: solid #A0A0A0 1px; padding: 3px 6px; vertical-align: top; } TABLE TH { border: solid #A0A0A0 1px; padding: 3px 6px; text-align: left; } TABLE.example { border: none; border-left: solid #A0A0A0 8px; } TABLE.example TR { border: none; } TABLE.example TD { border: none; padding-left: 8px; } TABLE.example TH { border: none; padding-left: 8px; } .header { position: fixed; left: 0; right: 0; top: 0; background: #C0C0C0; color: white; border-bottom: black solid 1px; padding: 4px 8px; box-shadow: 0 0 8px black; height: 24px; } .title { display: inline-table; } .login { float: right; } .label-login { display: inline-table; font-weight: bold; } .page { padding: 4px 8px; padding-top: 48px; } .unknown { color: red; font-style: italic; margin-top: 8px; font-size: 150%; } .command { display: inline-table; margin-left: 8px; } .up { display: inline-table; vertical-align: middle; padding: 2px; } .edit-frame { position: absolute; left: 0px; right: 0px; top: 36px; bottom: 0px; padding: 8px; } .edit { border: none; background: none; width: 100%; height: 100%; } DIV.box { display: inline-table; border: solid #A0A0A0 1px; border-radius: 8px; padding: 8px; } DIV.info { display: inline-table; border: solid #A0A0A0 1px; border-radius: 8px; padding: 8px; padding-left: 48px; background: url('/wiki/info.png') 8px 8px no-repeat; height: 32px; } DIV.warning { display: inline-table; border: solid #A0A0A0 1px; border-radius: 8px; padding: 8px; padding-left: 48px; background: url('/wiki/warning.png') 8px 8px no-repeat; height: 32px; } DIV.tip { display: inline-table; border: solid #A0A0A0 1px; border-radius: 8px; padding: 8px; padding-left: 48px; background: url('/wiki/tip.png') 8px 8px no-repeat; height: 32px; } DIV.critical { display: inline-table; border: solid #A0A0A0 1px; border-radius: 8px; padding: 8px; padding-left: 48px; background: url('/wiki/critical.png') 8px 8px no-repeat; height: 32px; } DIV.table { margin-top: 0.5em; } DIV.table:first-child { margin-top: 0; } DIV.index { display: inline-table; border: solid 1px #C0C0C0; font-size: 85%; padding: 8px 32px 8px 0; margin-top: 0.5em; } HR { margin-top: 0.5em; margin-left: -8px; margin-right: -8px; padding: 0px; height: 1px; border: none; border-top: solid #C0C0C0 1px; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/tip.png��������������������������������������������0000664�0000000�0000000�00000001026�14115753270�0022707�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���s��IDATHǽ1kSQ bA֡"Oqn:EM~|qr*+TBR"TKjvs%/y%w?^Ȁ[b˄q<>fyv޺kW 3C33B x%LDl/at#>x-Z] %EpW\g1ӛ11</&x b<-bm&e�~$Pߏ<r b`[@��T1�p*0 <r5XR-i(yW 4$Zom;o Bp{0oX hڌhU&J.oJ-ͤ?>K6Z` xA+Fy K0\ pXb=*S}ΧW3dvaF?iP%a>cBmoQF{|~�}|O����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/up.png���������������������������������������������0000664�0000000�0000000�00000000271�14115753270�0022540�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������7���IDAT(1ao@TZƭH.-K nhD-ttȊ&f2EkvHBߵNʄ0x_˴,u/3=.z¨QC : O`hEME(=(}<����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.public/warning.png����������������������������������������0000664�0000000�0000000�00000001300�14115753270�0023553�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���D��#PLTE���̞7Rəy� @mٶ|-ZzKA‹4ʛoҩ"WǕ>ײʚ.s^͟}~ iP\{|Hkܼ{Gѧۻrb'9O ,��� tRNS�? v��CIDAT8}gW@E2ްaW]pvI&d|_'eN-!v:IptsK+ 6"j�P c:$| tj@wO%`[z `fh: F1`R[&0 ̨q6rU s"B�-,X0P\6VV#� T( zW*mx7ܣ]e`ϟ{ .ppoS:=)XpNh ..^p2nSWI Z}1x#1O |V#u�M?IfHJύH3����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/������������������������������������������������������0000775�0000000�0000000�00000000000�14115753270�0020717�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/Main.module�������������������������������������������0000664�0000000�0000000�00000015046�14115753270�0023020�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file Public Root As String Public Path As String Public Exist As Boolean Public Edit As Boolean Public Image As Boolean Public Sub GetPagePath(Optional bSuffix As Boolean) As String Dim sPath As String sPath = Root &/ "data" &/ Path &/ "~page" If bSuffix Then sPath &= "." & Format(Now, "yyyymmddhhnnssuu") & "." & Session["login"] Return sPath End Private Sub MakeDir(sDir As String) Dim sPath As String Dim sElt As String For Each sElt In Split(sDir, "/") sPath &/= sElt 'Shell "echo MKDIR: " & Shell$(sPath) & " >> /tmp/session.log" Wait Try Mkdir "/" & sPath Next 'If Not Exist(sDir) Or If Not IsDir(sDir) Then Return True End Private Sub InitWiki() Mkdir Root &/ "data" Copy "passwd" To Root &/ "passwd" Copy "page" To GetPagePath() Copy "page" To GetPagePath(True) End Private Sub LockPage() Dim sLock As String = File.Dir(GetPagePath()) &/ "~lock" Dim hLock As File Dim I As Integer For I = 1 To 20 Try hLock = Lock sLock If Not Error Then Return Sleep 0.1 Next Error.Raise(("Unable to lock the current page")) End Public Sub Main() Dim iSize As Long Dim sMsg As String Dim sIdent As String Dim iPos As Integer Dim sLogin As String Dim sPasswd As String Dim aPage As String[] Dim sDir As String ' The wiki is stored in the following root directory. Root = User.Home &/ "wiki" Try Mkdir Root ' All pages are stored in a "data" directory stored in the root directory. ' If the "data" directory does not exist, the wiki is initialized with a default root page. If Not Exist(Root &/ "data") Then InitWiki Response.Redirect(Application.Root) Return Endif ' The url path is directly converted to a relative directory path inside the "data" directory located in the root directory. ' The page contents is stored inside a "~page" file located in that directory. ' Consequently, no "~" character is allowed in the url path. ' Each page modification is archived in a "~page.<date>.<user>" file, allowing changes to be undone. Path = Request.Path If Path = "/" Then Path = "" ' Handle resource files: images, style sheet... If Path And If Exist(".public" &/ Path) Then Response.SendFile(".public" &/ Path) Return Endif ' Reject pages whose url includes a "~" character. If InStr(Path, "~") Then Response.Status = "404 Not Found" Response.Begin Print ("<h1>404 Not Found</h1>") Response.End Return Endif If Request.Exist("logout") Then Session.Abandon Else If Request["login"] And If Request["password"] Then Session.Abandon For Each sIdent In Split(File.Load(Root &/ "passwd"), "\n") iPos = InStr(sIdent, ": ") If iPos = 0 Then Continue sLogin = Trim(Left(sIdent, iPos - 1)) sPasswd = Trim(Mid$(sIdent, iPos + 2)) If sLogin = Request["login"] And If sPasswd = Request["password"] Then Session["login"] = sLogin Break Endif Next Endif Try iSize = Stat(GetPagePath()).Size {Exist} = iSize > 0 Image = IsImage(Path) If Session.Id Then If Request.Exist("save") Then If Request.Exist("page") Then MakeDir(File.Dir(GetPagePath())) LockPage File.Save(GetPagePath(), Request["page"]) Copy GetPagePath() To GetPagePath(True) Response.Redirect(Application.Root &/ Request.Path) Return Else If Request.Exist("file") And If Image Then MakeDir(File.Dir(GetPagePath())) LockPage Try Kill GetPagePath() Copy Request.Files["file"] To GetPagePath() Copy GetPagePath() To GetPagePath(True) Response.Redirect(Application.Root &/ Request.Path) Return Endif Else If Request.Exist("delete") Then If {Exist} Then LockPage File.Save(GetPagePath(), "") Copy GetPagePath() To GetPagePath(True) Endif Response.Redirect(Application.Root &/ Request.Path) Return Else If Request.Exist("undo") Then sDir = File.Dir(GetPagePath()) aPage = Dir(sDir, "~page.*").Sort(gb.Descent) If aPage.Count >= 2 Then LockPage Try Kill sDir &/ aPage[0] Try Kill GetPagePath() Try Copy sDir &/ aPage[1] To GetPagePath() Endif Response.Redirect(Application.Root &/ Request.Path) Return Else If Request.Exist("create") Or If Request.Exist("edit") Then Edit = True Endif Endif If Image Then If Not Session.Id Or If Request.Exist("show") Then Response.SendFile(GetPagePath(), GetContentTypeFrom(Path)) Return Endif Endif Wiki.Render Catch sMsg = Error.Where & ": " & Error.Text Response.Begin Response.ContentType = "text/plain;charset=utf-8" Print "<pre>"; sMsg; "</pre>" Response.End End Public Sub GetPageTitle(sPath As String) As String Dim sFile As String Dim iPos As Integer sPath = Root &/ "data" &/ sPath &/ "~page" If Not Exist(sPath) Then Return sFile = LTrim(File.Load(sPath)) If sFile Begins "# " Then iPos = InStr(sFile, "\n") If iPos = 0 Then iPos = Len(sFile) Return Trim(Mid$(sFile, 3, iPos - 3)) Endif End Public Sub IsImage(sPath As String) As Boolean Dim sExt As String sExt = File.Ext(sPath) Return ["png", "jpg", "jpeg", "gif"].Exist(sExt) End Private Sub GetContentTypeFrom(sPath As String) As String Select Case Lower(File.Ext(sPath)) Case "css" Return "text/css" Case "jpg", "jpeg", "jpe", "thumb" Return "image/jpeg" Case "png" Return "image/png" Case "gif" Return "image/gif" Case "tiff", "tif" Return "image/tiff" Case "odt" Return "application/vnd.oasis.opendocument.text" Case "doc" Return "application/msword" Case "ods" Return "application/vnd.oasis.opendocument.spreadsheet" Case "xls" Return "application/msexcel" Case "pdf" Return "application/pdf" Case "zip" Return "application/zip" Case "html", "htm" Return "text/html" Case "txt" Return "text/plain" Case "avi" Return "video/x-msvideo" Case "mpg", "mpeg" Return "video/mpeg" Case "ps" Return "application/postscript" Case "dwg" Return "application/acad" Case "wav" Return "audio/x-wav" Case "ogg" Return "application/ogg" Case "jar" Return "application/x-jar" 'Case "xml", "kml" ' Return "text/plain" Case Else Return "application/octet-stream" End Select End ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/Markdown.class����������������������������������������0000664�0000000�0000000�00000001067�14115753270�0023534�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Export Create Public Root As String Public Line As Integer Public Current As String Public Sub ToHTML(Markdown As String) As String Return Markup.Convert(Markdown, Me) End Public Sub Link((sLink) As MarkdownLink) End Public Sub Command((sCommand) As String) As String[] End Public Sub Enter((sClass) As String) As String[] End Public Sub Leave((sClass) As String) As String[] End Public Sub EnableCode(bEnabled As Boolean) If bEnabled Then Inc Markup.EnableCode Else Dec Markup.EnableCode Endif End �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/MarkdownLink.class������������������������������������0000664�0000000�0000000�00000000215�14115753270�0024344�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Export Public Link As String Public Text As String Public Title As String Public Html As String Public Query As String �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/Markup.module�����������������������������������������0000664�0000000�0000000�00000051142�14115753270�0023370�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas module file Public Struct MarkupList sType As String iIndent As Integer End Struct Public EnableCode As Integer Private $aMarkup As String[] Private $cLink As Collection Private $aIndex As String[] Private $aTable As String[] Private $aTableClass As String[] Private $aTablePos As Integer[] Private $hMarkdown As Markdown Private $hLink As New MarkdownLink Private $bComment As Boolean Private Sub GetIndent(sLine As String) As Integer Return Len(sLine) - Len(LTrim(sLine)) End Public Sub Convert(sMarkup As String, hMarkdown As Markdown) As String $hMarkdown = hMarkdown $cLink = New Collection $aIndex = New String[] EnableCode = 0 Return ConvertMarkup(Split(sMarkup, "\n")) End Private Sub IsWordLimit(sCar As String) As Boolean If IsLetter(sCar) Or If IsDigit(sCar) Or If Len(sCar) >= 2 Then Return Return True End Private Sub ConvertMarkup(aLine As String[], Optional bDoNotSetLine As Boolean) As String Dim iLine As Integer Dim aResult As String[] Dim sLine As String Dim sText As String Dim I As Integer Dim bCode As Boolean Dim iBlockQuote As Integer Dim sCar As String Dim bInsidePar As Boolean Dim bIgnorePar As Boolean Dim bAddPar As Boolean Dim iIndent, iCurrentIndent As Integer Dim hMarkupList As MarkupList Dim bJustList As Boolean Dim sLink As String Dim iPos As Integer Dim aList As New MarkupList[] Dim sTable As String Dim iIndexPos As Integer = -1 Dim aCommand As String[] Dim aSaveMarkup As String[] Dim aSaveTable As String[] Dim aSaveTablePos As Integer[] Dim aSaveTableClass As String[] Dim sClass As String aResult = New String[] aSaveMarkup = $aMarkup $aMarkup = New String[] aSaveTable = $aTable $aTable = New String[] aSaveTableClass = $aTableClass $aTableClass = New String[] aSaveTablePos = $aTablePos $aTablePos = New Integer[] ' iLine = 0 ' Do ' If iLine >= aLine.Count Then Break ' sLine = LTrim(aLine[iLine]) ' If Left(sLine) = "%" Then ' If sLine Begins "%IF " Then ' Else If sLine Begins "%ELSE " Then ' ' Endif ' Endif ' Inc iLine ' Loop For iLine = 0 To aLine.Max sLine = LTrim(aLine[iLine]) If Not sLine Then Continue If Left(sLine) <> "[" Then Continue I = InStr(sLine, "]:") If I = 0 Then Continue If I >= 3 Then sLink = Trim(Mid$(sLine, I + 2)) $cLink[Mid$(sLine, 2, I - 2)] = sLink If Left(sLink) = "#" Then iPos = InStr(sLink, " ") If iPos Then sLink = Left(sLink, iPos - 1) aLine[iLine] = "<a name=\"" & Html$(sLink) & "\"></a>" Continue Endif Endif aLine[iLine] = "" Next iLine = -1 While iLine < aLine.Max Inc iLine sLine = aLine[iLine] If Not bDoNotSetLine Then $hMarkdown.Line = iLine $hMarkdown.Current = sLine Endif 'If $aMarkup.Count Then ' aResult.Add(ConvertLine(sLine)) ' Continue 'Endif sLine = RTrim(sLine) If Not sLine Then sLine = aLine[iLine] If $bComment Then iPos = InStr(sLine, "-->") If iPos = 0 Then Continue $bComment = False sLine = Mid$(sLine, iPos + 4) Endif ' Special command If Left(sLine, 2) = "@{" And If Right(sLine) = "}" Then If sLine = "@{index}" Then iIndexPos = aResult.Count aResult.Add(sLine) Else aCommand = $hMarkdown.Command(Mid$(sLine, 3, -1)) If aCommand And If aCommand.Count Then aLine.Insert(aCommand, iLine + 1) Endif Endif Continue Endif ' Blockquote I = 0 Do If Left(sLine) <> ">" Then Break sCar = Mid$(sLine, 2, 1) If sCar <> " " And If sCar <> gb.Tab Then Break Inc I sLine = LTrim(Mid$(sLine, 3)) Loop If I > iBlockQuote Then While I > iBlockQuote aResult.Add("<blockquote>") Inc iBlockQuote Wend Else If I < iBlockQuote Then While I < iBlockQuote aResult.Add("</blockquote>") Dec iBlockQuote Wend Endif ' Lists If Trim(sLine) Then iIndent = GetIndent(sLine) GoSub CLOSE_LIST sLine = Mid$(sLine, iCurrentIndent + 1) ' Horizontal lines If Left(sLine) = "*" And If Right(sLine) = "*" Then sText = Replace(sLine, " ", "") If Len(sText) >= 3 And If sText = String$(Len(sText), "*") Then GoSub CLOSE_PARA aResult.Add("<hr />") Continue Endif Endif If Left(sLine) = "-" And If Right(sLine) = "-" Then sText = Replace(sLine, " ", "") If Len(sText) >= 3 And If sText = String$(Len(sText), "-") Then GoSub CLOSE_PARA aResult.Add("<hr />") Continue Endif Endif If sLine Begins "* " Or If sLine Begins "- " Then hMarkupList = New MarkupList hMarkupList.sType = "ul" hMarkupList.iIndent = iIndent + 1 + GetIndent(Mid$(sLine, 2)) aList.Add(hMarkupList) bJustList = True If aResult.Count And If Trim(aResult[aResult.Max]) = "</ul>" Then If Not Trim(aLine[iLine - 1]) Then If iLine < aLine.Max And If GetIndent(aLine[iLine + 1]) >= hMarkupList.iIndent Then bJustList = False Endif aResult[aResult.Max - 1] = "<p></p>\n" & aResult[aResult.Max - 1] Endif aResult.Remove(aResult.Max) Else GoSub CLOSE_PARA aResult.Add(Space$(iCurrentIndent) & "<ul>") Endif iCurrentIndent = hMarkupList.iIndent aResult.Add(Space$(iCurrentIndent) & "<li>") sLine = Mid$(sLine, 3) Else If sLine Begins "+ " Then hMarkupList = New MarkupList hMarkupList.sType = "ol" hMarkupList.iIndent = iIndent + 1 + GetIndent(Mid$(sLine, 2)) aList.Add(hMarkupList) bJustList = True If aResult.Count And If Trim(aResult[aResult.Max]) = "</ol>" Then If Not Trim(aLine[iLine - 1]) Then If iLine < aLine.Max And If GetIndent(aLine[iLine + 1]) >= hMarkupList.iIndent Then bJustList = False Endif aResult[aResult.Max - 1] = "<p></p>\n" & aResult[aResult.Max - 1] Endif aResult.Remove(aResult.Max) Else GoSub CLOSE_PARA aResult.Add(Space$(iCurrentIndent) & "<ol>") Endif iCurrentIndent = hMarkupList.iIndent aResult.Add(Space$(iCurrentIndent) & "<li>") sLine = Mid$(sLine, 3) Endif Endif ' Blockquote again! I = iBlockQuote Do If Left(sLine) <> ">" Then Break sCar = Mid$(sLine, 2, 1) If sCar <> " " And If sCar <> gb.Tab Then Break Inc I sLine = LTrim(Mid$(sLine, 3)) Loop If I > iBlockQuote Then While I > iBlockQuote aResult.Add("<blockquote>") Inc iBlockQuote Wend Else If I < iBlockQuote Then While I < iBlockQuote aResult.Add("</blockquote>") Dec iBlockQuote Wend Endif If sLine = "[[" Or If sLine Begins "[[ " Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE $aTable.Push("[[") sLine = Trim(Mid$(sLine, 3)) $aTableClass.Push(sLine) $aTablePos.Push(aResult.Count) If sLine Then aCommand = $hMarkdown.Enter(sLine) If aCommand Then aResult.Insert(aCommand) aResult.Add("<table class=\"" & sLine & "\">") Else aResult.Add("<table class=\"table\">") Endif aResult.Add("<tr><th>") bIgnorePar = False bInsidePar = False Continue Endif If $aTable.Count Then If sLine = "]]" Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE sTable = $aTable.Pop() sClass = $aTableClass.Pop() iPos = $aTablePos.Pop() If iPos >= 0 Then aResult[iPos] = Replace(aResult[iPos], "<table", "<div class=\"table\"><div") aResult.Remove(iPos + 1) aResult.Add("</div></div>") Else aResult.Add("</td></tr>") aResult.Add("</table>") Endif aCommand = $hMarkdown.Leave(sClass) If aCommand Then aResult.Insert(aCommand) Continue Else If sLine = "--" Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE sTable = $aTable[$aTable.Max] If sTable = "[[" Then aResult.Add("</th><th>") Else aResult.Add("</td><td>") Endif bIgnorePar = True bInsidePar = True $aTablePos[$aTablePos.Max] = -1 Continue Else If sLine = "==" Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE sTable = $aTable[$aTable.Max] If aResult[aResult.Max] = "<tr><th>" Then aResult[aResult.Max] = "<tr><td>" Else If sTable = "[[" Then aResult.Add("</th></tr><tr><td>") Else aResult.Add("</td></tr><tr><td>") Endif $aTable[$aTable.Max] = "==" $aTablePos[$aTablePos.Max] = -1 bIgnorePar = True bInsidePar = True Continue Endif Endif If sLine Begins "==" And If sLine = String$(Len(sLine), "=") Then sLine = aResult[aResult.Max] If sLine Not Begins "<h" Then If sLine Begins "<p>" Then sLine = Mid$(sLine, 4) bInsidePar = False Endif GoSub CLOSE_PARA aResult[aResult.Max] = "<h1>" & sLine & "</h1>" Endif Continue Endif If sLine Begins "--" And If sLine = String$(Len(sLine), "-") Then sLine = Trim(aResult[aResult.Max]) If sLine Then If sLine Not Begins "<h" Then If sLine Begins "<p>" Then sLine = Mid$(sLine, 4) bInsidePar = False Endif GoSub CLOSE_PARA aResult[aResult.Max] = "<h2>" & sLine & "</h2>" Endif Continue Endif Endif ' Code If EnableCode >= 0 Then If sLine Begins " " Or If sLine Begins gb.Tab Then If Left(sLine) = gb.Tab Then sLine = Mid$(sLine, 2) Else sLine = Mid$(sLine, 5) Endif If sLine = "----" Then sLine = "<hr/>" Else sLine = Html$(sLine) Endif If Not bCode Then GoSub CLOSE_PARA bCode = True sLine = "<div><pre><code>" & sLine Endif aResult.Add(sLine) Continue Endif Endif GoSub CLOSE_CODE ' Title If Left(sLine) = "#" Then I = InStr(sLine, " ") If I <= 7 Then Dec I If Left(sLine, I) = String$(I, "#") Then sLine = Mid$(sLine, I + 2) While sLine Ends "#" sLine = Left(sLine, -1) Wend sLine = RTrim(sLine) If Left(sLine) = "[" And If Right(sLine) = "]" Then sLine = ConvertLine(Mid$(sLine, 2, -1)) $aIndex.Add(String$(I - 1, " ") & "- [" & sLine & "] (#t" & CStr($aIndex.Count + 1) & ")") sLine = "<a name=\"t" & CStr($aIndex.Count) & "\"></a>" & "<h" & CStr(I) & ">" & sLine & "</h" & CStr(I) & ">" Else sLine = "<h" & CStr(I) & ">" & ConvertLine(sLine) & "</h" & CStr(I) & ">" Endif GoSub CLOSE_PARA aResult.Add(sLine) Continue Endif Endif Endif If Trim(sLine) Then If Not bInsidePar And If LTrim(sLine) Not Begins "<h" Then If bIgnorePar Then bIgnorePar = False Else 'If Not bJustList Then bAddPar = True 'Else ' bAddPar = Not Trim(aLine[iLine - 1]) Endif Endif Else bJustList = False GoSub CLOSE_PARA Continue Endif sLine = ConvertLine(sLine) If bAddPar Then sLine = Left(sLine, GetIndent(sLine)) & "<p>" & LTrim(sLine) bInsidePar = True bAddPar = False Endif aResult.Add(sLine) Wend GoSub CLOSE_CODE GoSub CLOSE_BLOCKQUOTE iIndent = 0 GoSub CLOSE_LIST 'If $aMarkup.Count Then Error.Raise("Missing markup: " & $aMarkup[$aMarkup.Max]) If $aIndex.Count And If iIndexPos >= 0 Then iIndent = GetIndent($aIndex[0]) For I = 1 To $aIndex.Max iIndent = Min(iIndent, GetIndent($aIndex[I])) Next If iIndent Then For I = 0 To $aIndex.Max $aIndex[I] = Mid$($aIndex[I], iIndent + 1) Next Endif aResult[iIndexPos] = "<div class=\"index\">\n" & ConvertMarkup($aIndex) & "</div>\n" Endif $aMarkup = aSaveMarkup $aTable = aSaveTable $aTableClass = aSaveTableClass $aTablePos = aSaveTablePos Return aResult.Join("\n") CLOSE_CODE: If bCode Then aResult.Add("</code></pre></div>") bCode = False Endif Return CLOSE_BLOCKQUOTE: While iBlockQuote aResult.Add("</blockquote>") Dec iBlockQuote Wend Return CLOSE_LIST: While iIndent < iCurrentIndent GoSub CLOSE_PARA GoSub CLOSE_CODE aResult.Add(Space$(iCurrentIndent) & "</li>") bJustList = False aResult.Add(Space$(aList[aList.Max].iIndent) & "</" & aList[aList.Max].sType & ">") aList.Remove(aList.Max) If aList.Count Then iCurrentIndent = aList[aList.Max].iIndent Else iCurrentIndent = 0 Endif Wend Return CLOSE_PARA: If bInsidePar Then If Not bIgnorePar Then aResult[aResult.Max] &= "</p>" 'aResult.Add("") bInsidePar = False bIgnorePar = False Else If iLine > 0 And If aResult[aResult.Max] Then 'aResult.Add("") Endif Return 'Catch ' Error.Raise("Line " & CStr(iLine + 1) & ": " & Error.Text) End Private Sub ConvertLine(sLine As String) As String Dim sResult As String Dim I, L As Integer Dim sCar As String Dim I1, I2 As Integer Dim sPattern As String Dim bCode As Boolean Dim bEmph As Boolean Dim bStrong As Boolean Dim sText, sTitle, sLink As String Dim bBlank As Boolean Dim bUnderline As Boolean Dim bLimitBefore, bLimitAfter As Boolean MAIN_LOOP: If I >= String.Len(sLine) Then If bEmph Then sResult &= "</em>" Else If bStrong Then sResult &= "</strong>" Endif If bCode Then sResult &= "</code>" Return sResult Endif GoSub NEXT_CAR If sCar = "\\" Then If I = String.Len(sLine) Then sResult &= "<br>" Else GoSub NEXT_CAR sResult &= Html(sCar) Endif Goto MAIN_LOOP Endif If sCar = "<" Then Goto ENTER_MARKUP 'If $aMarkup.Count = 0 Then If sCar = "&" Then Goto ENTER_AMPERSAND If sCar = "[" And If String.Mid$(sLine, I + 1, 1) <> " " Then Goto ENTER_LINK 'Endif If I = 1 Or If IsWordLimit(String.Mid$(sLine, I - 1, 1)) Then bLimitBefore = True Else bLimitBefore = False Endif If IsWordLimit(String.Mid$(sLine, I + 1, 1)) Then bLimitAfter = True Else bLimitAfter = False Endif If bLimitBefore Or If bLimitAfter Then If sCar = "`" Then Goto ENTER_CODE If sCar = "'" Then Goto ENTER_LIGHT_CODE If sCar = "*" Then Goto ENTER_STAR If sCar = "~" Then Goto ENTER_UNDERLINE Endif If sCar = ">" Then sCar = ">" Endif sResult &= sCar Goto MAIN_LOOP NEXT_CAR: Inc I If I > Len(sLine) Then Error.Raise(("Unexpected end of line")) sCar = String.Mid$(sLine, I, 1) Return LOOK_CAR: sCar = String.Mid$(sLine, I + 1, 1) Return ENTER_MARKUP: If String.Mid$(sLine, I, 4) = "<!--" Then I = String.Len(sLine) $bComment = True Goto MAIN_LOOP Endif I1 = I GoSub NEXT_CAR If sCar <> "/" And If Not IsLetter(sCar) Then sResult &= "<" Dec I Goto MAIN_LOOP Endif Repeat GoSub NEXT_CAR Until sCar = ">" sPattern = String.Mid$(sLine, I1 + 1, I - I1 - 1) 'sPattern = LCase(sPattern) If Left$(sPattern) = "/" Then sPattern = Mid$(sPattern, 2) If Not ["img", "hr", "br"].Exist(sPattern) Then Do If $aMarkup.Count = 0 Then sResult &= "<div class=\"error\">" & Html("Mismatched markup: </" & sPattern & ">") & "</div>" Break Endif If LCase($aMarkup[$aMarkup.Max]) = LCase(sPattern) Then sResult &= "</" & sPattern & ">" $aMarkup.Remove($aMarkup.Max) Break Endif If LCase($aMarkup[$aMarkup.Max]) = "p" Then sResult &= "</p>" $aMarkup.Remove($aMarkup.Max) Continue Endif sResult &= "<div class=\"error\">" & Html("Mismatched markup: </" & sPattern & "> against <" & $aMarkup[$aMarkup.Max] & ">") & "</div>" Break Loop Endif Else sResult &= "<" & sPattern & ">" If Right$(sPattern) <> "/" Then I1 = InStr(sPattern, " ") If I1 Then sPattern = Left(sPattern, I1 - 1) If Not ["img", "hr", "br"].Exist(sPattern) Then $aMarkup.Add(sPattern) Endif Endif Goto MAIN_LOOP ENTER_AMPERSAND: For I1 = I To I + 6 sCar = String.Mid$(sLine, I1, 1) If sCar = ";" Then sResult &= String.Mid$(sLine, I, I1 - I + 1) I = I1 Goto MAIN_LOOP Else If sCar = "\n" Then Break Endif Next sResult &= "&" Goto MAIN_LOOP ENTER_CODE: sResult &= "<code style=\"white-space:nowrap;\">" Do GoSub NEXT_CAR If sCar = "`" Then GoSub LOOK_CAR If sCar <> "`" Then Break Inc I Endif sResult &= Html(sCar) Loop sResult &= "</code>" Goto MAIN_LOOP ENTER_LIGHT_CODE: If bCode And If bLimitAfter Then sResult &= "</code>" bCode = False Else If bLimitBefore Then sResult &= "<code style=\"white-space:nowrap;\">" bCode = True Else sResult &= "'" Endif Goto MAIN_LOOP ENTER_STAR: GoSub LOOK_CAR If sCar = "*" Then Inc I Goto ENTER_STRONG Endif If bEmph And If bLimitAfter Then sResult &= "</em>" bEmph = False Else If Not bStrong And If bLimitBefore Then sResult &= "<em>" bEmph = True Else sResult &= "*" Endif Goto MAIN_LOOP ENTER_STRONG: If bStrong And If bLimitAfter Then sResult &= "</strong>" bStrong = False Else If Not bEmph And If bLimitBefore Then sResult &= "<strong>" bStrong = True Else sResult &= "**" Endif Goto MAIN_LOOP ENTER_UNDERLINE: If bUnderline And If bLimitAfter Then sResult &= "</u>" bUnderline = False Else If bLimitBefore Then sResult &= "<u>" bUnderLine = True Else sResult &= "~" Endif Goto MAIN_LOOP ENTER_LINK: I1 = I L = 0 Do Inc I1 sCar = String.Mid$(sLine, I1, 1) If Not sCar Then sResult &= "[" Goto MAIN_LOOP Endif If sCar = "[" Then Inc L Else If sCar = "]" Then If L = 0 Then Break Dec L Endif Loop If I1 = (I + 1) Then sResult &= "[]" Inc I Goto MAIN_LOOP Endif sLink = "" sTitle = "" sText = String.Mid$(sLine, I + 1, I1 - I - 1) I = I1 I2 = I Do GoSub LOOK_CAR If Not sCar Then Break Inc I If Len(sCar) >= 2 Or If Asc(sCar) > 32 Then Break Loop If sCar = "(" Then I1 = String.InStr(sLine, ")", I + 1) If I1 > 0 Then sLink = String.Mid$(sLine, I + 1, I1 - I - 1) I = I1 Endif Else If sCar = "[" Then I1 = String.InStr(sLine, "]", I + 1) If I1 > 0 Then sLink = $cLink[String.Mid$(sLine, I + 1, I1 - I - 1)] I = I1 Endif Else I = I2 Endif If sLink Then I1 = String.InStr(sLink, Chr$(34)) If I1 And If String.Right(sLink) = Chr$(34) Then sTitle = String.Mid$(sLink, I1 + 1, -1) sLink = Trim(String.Left$(sLink, I1 - 1)) Else sTitle = "" sLink = Trim$(sLink) Endif Endif If Not sLink And If InStr(sText, "/") Then sLink = sText sText = "" Endif $hLink.Link = sLink $hLink.Text = sText $hLink.Title = sTitle $hLink.Html = "" $hLink.Query = "" $hMarkdown.Link($hLink) If $hLink.Html Then sResult &= $hLink.Html Goto MAIN_LOOP Endif sLink = $hLink.Link sText = $hLink.Text sTitle = $hLink.Title If Not sText Then sText = sLink If sLink Then If $hLink.Query Then sLink &= "?" & $hLink.Query bBlank = sLink Like "*://*" sResult &= "<a href=\"" & Html$(sLink) & "\"" If sTitle Then sResult &= " title=\"" & Html$(sTitle) & "\"" If bBlank Then sResult &= " target=\"_blank\"" sResult &= ">" & sText & "</a>" Endif Goto MAIN_LOOP End ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/Wiki.class��������������������������������������������0000664�0000000�0000000�00000001503�14115753270�0022650�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������' Gambas class file Private Sub _PrintTitle() If Main.Path Then Print Html(Main.Path); Else Print "/"; Endif End Private Sub _PrintPage() Dim sPath As String sPath = Main.GetPagePath() If Main.Edit Then If Exist(sPath) Then Print Html(File.Load(sPath)); Return Endif If Not Main.Exist Then Print "<div class=\"unknown\">This page does not exist." If Session.Id Then Print "<p>Click on the <b>Create</b> button to create it!" Print "</div>" Return Endif If Main.Image Then Print "<img src=\"" & Application.Root &/ Main.Path & "?show\" />"; Else Print WikiMarkdown.ToHTML(File.Load(sPath)); Endif End Private Sub _PrintParent() Dim sPath As String sPath = Request.Path If sPath Then sPath = File.Dir(sPath) Print Application.Root &/ sPath; End ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gambas-3.16.3/app/examples/Web/SmallWiki/.src/Wiki.webpage������������������������������������������0000664�0000000�0000000�00000005206�14115753270�0023161�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="<%/%>/style.css"> <link rel="icon" href="<%/%>/logo.png" type="image/png"> <title>Gambas SmallWiki - <%_PrintTitle%> style="background: #F0F0F0;"<%Endif%>>

<%If Not Request.Exist("v") Then%>
<%_PrintTitle%>
<%If Main.Edit Then%>
<%Else If Session.Id Then%>
<%If Main.Exist Then%> <%Else%> <%Endif%>
<%Endif%>
<%If Session["message"] Then%>
<%Print Session["message"];%>
<%Endif%> <%Endif%>
<%If Main.Edit Then%> <%If Main.Image Then%>

Select the image file to upload...

<%Else%>
<%Endif%> <%Else%> <%_PrintPage%> <%Endif%>
gambas-3.16.3/app/examples/Web/SmallWiki/.src/WikiMarkdown.class000066400000000000000000000010551411575327000243550ustar00rootroot00000000000000' Gambas class file Inherits Markdown Public Sub Link(hLink As MarkdownLink) Dim sPath As String If hLink.Link Begins "/" Then sPath = Mid$(hLink.Link, 2) Else If hLink.Link Begins "./" Then sPath = Request.Path &/ Mid$(hLink.Link, 3) Else Return Endif If Not hLink.Text Then If Main.IsImage(sPath) Then hLink.Html = "" Return Endif hLink.Text = Main.GetPageTitle(sPath) Endif hLink.Link = Application.Root &/ sPath End gambas-3.16.3/app/examples/Web/SmallWiki/page000066400000000000000000000004031411575327000207060ustar00rootroot00000000000000# Welcome to the SmallWiki Gambas example! [./logo.png] To edit the wiki, use the login: `admin` and the password: `admin`. This wiki uses the Gambas MarkDown syntax, very similar to the original [Markdown syntax] (http://gambaswiki.org/wiki/doc/markdown).gambas-3.16.3/app/examples/Web/SmallWiki/passwd000066400000000000000000000000151411575327000212720ustar00rootroot00000000000000admin: admin gambas-3.16.3/app/man/000077500000000000000000000000001411575327000143765ustar00rootroot00000000000000gambas-3.16.3/app/man/Makefile.am000066400000000000000000000000501411575327000164250ustar00rootroot00000000000000dist_man_MANS = gambas3.1 gbs3.1 gbw3.1 gambas-3.16.3/app/man/gambas3.1000066400000000000000000000026471411575327000160060ustar00rootroot00000000000000.TH "Gambas" "1" "October 2013" "Ubuntu" "" .SH "NAME" gambas3 \- Integrated Development Environment .SH "SYNOPSIS" .B gambas3 [options] [] .SH "DESCRIPTION" Gambas is, before all, a Basic language with object extensions. A program written with Gambas is a set of files. Each file describes a class, in terms of object programming. The class files are compiled, then executed by an interpreter. From this point of view, it is very inspired by Java. Gambas is made up of the following programs: * A compiler. * An interpreter. * An archiver. * A graphical user interface component. * A development environment. The development environment is written with Gambas itself, so that you can see the abilities of the language. \fBgambas3\fR starts the Integrated Development Environment. .SH "OPTIONS" .TP \fB\-V, --version\fR display version .TP \fB\-L, --license\fR display license .TP \fB\-h, --help\fR display help and exit .SH "AVAILABILITY" The latest version of Gambas can always be obtained from \fBgambas.sourceforge.net\fR, documentation about the language is at \fBhttp://gambaswiki.org/wiki\fR. .SH "REPORTING BUGS" Report bugs to \fBhttp://gambaswiki.org/bugtracker\fR .SH "COPYRIGHT" Copyright\(co Benoît Minisini ; .PP This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. gambas-3.16.3/app/man/gbs3.1000066400000000000000000000102451411575327000153200ustar00rootroot00000000000000.TH "gbs3" "1" "March 2021" "Ubuntu" "User Commands" .SH "NAME" .B gbs3 \- GAMBAS Scripter. .SH "SYNOPSIS" .B gbs3 [options] [--] [ // Run this when Document Loaded document.addEventListener("DOMContentLoaded", function() { var i; var REMOTE_URI = 'https://pg1.gambas.one/run-daily.php'; // Hide all results /*var all = document.querySelectorAll('DIV.result'); for (i = 0; i < all.length; i++) { all[i].style.display = 'none'; }*/ // Get and loop all "code gambas" elements var gcs = document.getElementsByClassName("code gambas"); var next; for (i = 0; i < gcs.length; i++) { next = gcs[i].parentElement.nextElementSibling; if (!next || !next.firstElementChild || next.firstElementChild.className != 'result') continue; // Add Outer Div with look of Result Box var divOuter = document.createElement("div"); divOuter.className = "playground"; //divOuter.style = "border:solid 1px #D8D8D8; border-top:none; background-color:#F8F8F8"; gcs[i].parentElement.insertBefore(divOuter, gcs[i].nextSibling); // Add From var formPlay = document.createElement("form"); formPlay.action = "https://gambas.one/playground/ultra.php"; formPlay.method = "POST"; formPlay.target = '_blank'; divOuter.appendChild(formPlay); // Add Pre and Code Elements same a Result Box var preResult = document.createElement("pre"); //preResult.style = "padding:0.5em 1em; margin:0"; var codeResult = document.createElement("code"); //codeResult.innerText = "..."; preResult.appendChild(codeResult); formPlay.appendChild(preResult); // Add Run Button var buttonRun = document.createElement("button"); buttonRun.type = "button"; buttonRun.innerText = (("Run")); formPlay.appendChild(buttonRun); // Add Run Click Event buttonRun.addEventListener('click', function() { var xhr = new XMLHttpRequest(); this[1].parentElement.style.display = 'block'; //this[1].innerText = (("Loading...")); this[1].innerHTML = '
'; xhr.onreadystatechange = function() { if(xhr.readyState !== XMLHttpRequest.DONE) return; this.innerHTML = ''; if(xhr.status === 200) { this.innerText = xhr.responseText; } else { this.innerText = 'Error: ' + xhr.status + ' : \n\n' + xhr.responseText; } }.bind(this[1]); xhr.open('POST', REMOTE_URI, true); xhr.send(this[0]); }.bind([gcs[i].innerText,codeResult])); // Add Input Box var inputCode = document.createElement("textarea"); inputCode.style.display = 'none'; inputCode.name = "Code"; inputCode.value = gcs[i].innerText; formPlay.appendChild(inputCode); // Add Play Button var buttonPlay = document.createElement("button"); //buttonPlay.style="margin-left: 3px;"; buttonPlay.innerText = (("Play")); formPlay.appendChild(buttonPlay); } }); gambas-3.16.3/app/src/gambas-wiki/.public/style-nh.css000066400000000000000000000005401411575327000224150ustar00rootroot00000000000000BODY { overflow: auto; padding: 0; } .header { width: 100%; background-color: white; display: none; } .page { position: static; overflow: initial; margin: 0; background-color: white; border: none; padding: 1em; } #page-frame { position: static; /*max-width: 80em;*/ border: none; background-color: none; margin: 0; } gambas-3.16.3/app/src/gambas-wiki/.public/style-rtl.css000066400000000000000000000001471411575327000226140ustar00rootroot00000000000000BODY{direction:rtl;} P{direction:rtl;} .login{left:4px;right:auto;} DIV.index{padding:8px 0 8px 32px;} gambas-3.16.3/app/src/gambas-wiki/.public/style-w.css000066400000000000000000000004441411575327000222610ustar00rootroot00000000000000H1 { border: medium none; color: #3398C3; font-size: xx-large; font-weight: bold; letter-spacing: 2px; margin-bottom: 16px; padding: 0; text-shadow: 2px 2px 2px #FF7F00; } HR { margin-left: -16px; margin-right: -16px; } .page { top: 0; margin: 0; }gambas-3.16.3/app/src/gambas-wiki/.public/style.css000066400000000000000000000300221411575327000220100ustar00rootroot00000000000000/*@font-face { font-family: 'default-font'; src: url('/Roboto-Light.ttf'); }*/ HTML { margin: 0; padding: 0; } BODY { padding: 1em; margin: 0 auto; font-family: sans-serif; /*font-size: 10pt; font-family: default-font;*/ background: white; color: #404040; box-sizing: border-box; overflow: hidden; height: 100vh; } INPUT[type=text] { border: solid #C0C0C0 1px; height: 1.8em; padding: 0 2px; } INPUT[type=password] { border: solid #C0C0C0 1px; height: 1.8em; padding: 0 2px; } INPUT[type=text]:focus { border: solid gray 1px; } /*INPUT { border: solid gray 1px; background: white; color: black; }*/ /*INPUT[type=submit] { border: solid black 1px; cursor: pointer; box-shadow: 0 0 4px gray; }*/ /*INPUT[type=submit]:hover { background: #E8E8E8; }*/ #login { width: 10em; margin-bottom: 8px; } #password { width: 10em; margin-bottom: 8px; } A { text-decoration: none; } A:link { color: #4765BF; } A:visited { color: #6547BF; } A[id] { position: relative; display: block; top: -1em; height: 1em; margin-bottom: -1em; pointer-events: none; } P { margin-bottom: 0; margin-top: 0.5em; } H1,H2,H3,H4,H5,H6 { margin-bottom: 0; } H1,H2 { letter-spacing: 1px; /*padding: 0.2em 0;*/ /*border-bottom: solid 1px #D8D8D8;*/ /*font-weight: normal;*/ } CODE { background-color: #F4F4F4; display: inline; } PRE { /*background-color: #F4F4F4;*/ display: inline-block; padding-left: 0.5em; margin: 0px; margin-top: 0.75em; white-space: pre-wrap; } DIV:first-child > PRE { margin-top: 0; } HR { margin-top: 0.75em; margin-left: -0.5em; margin-right: -0.5em; padding: 0px; height: 1px; border: none; border-top: solid #D8D8D8 1px; } PRE HR { margin-bottom: -0.75em; } TABLE.table, TABLE.error { border-bottom: solid #D0D0D0 1px; border-right: solid #D0D0D0 1px; padding: 0; margin-top: 0.5em; border-spacing: 0; empty-cells: show; line-height: 1.5em; } TABLE.table > TBODY > TR > TD, TABLE.error > TBODY > TR > TD { border-top: solid #D0D0D0 1px; border-left: solid #D0D0D0 1px; padding: 0.25em 0.5em; vertical-align: top; } TABLE.table > TBODY > TR > TH, TABLE.error > TBODY > TR > TH { border-top: solid #D0D0D0 1px; border-left: solid #D0D0D0 1px; padding: 0.25em 0.5em; text-align: left; } TABLE.desc { border: solid #D8D8D8 2px; border-collapse: collapse; padding: 0px; margin-top: 0.75em; border-spacing: 0; empty-cells: show; } TABLE.desc > TBODY > TR > TD { border: none; padding: 6px 12px; } TABLE.desc > TBODY > TR > TH { text-align: left; border: none; padding: 6px 12px; } #page-frame { position: absolute; left: 0; right: 0; top: 0; bottom: 0; /*max-width: 80em;*/ margin: auto; /*border-left: solid 1px #C0C0C0; border-right: solid 1px #C0C0C0;*/ box-sizing: border-box; background-color: white; } .header { height: 2em; line-height: 2em; padding: 0 1em; } .header-edit { border-bottom: solid 1px #C0C0C0; } .header-inside { padding: 0; /*background: #E8E8E8; border-bottom-left-radius: 32px; border-bottom-right-radius: 32px; box-shadow: 0 0 8px gray;*/ } .header-inside-v { /*max-width: 80em;*/ margin: 0 auto; background: #E8E8E8; border-bottom-left-radius: 32px; border-bottom-right-radius: 32px; padding: 2px 16px 4px; box-shadow: 0 0 8px gray; } .header-bar { /*margin-top: 4px;*/ } .header-bar INPUT[type=submit],.header-bar INPUT[type=button] { background-color: #C0C0C0; color: white; font-size: 80%; height: 1.6em; border: solid 1px transparent; cursor: pointer; font-weight: bold; text-transform: uppercase; box-sizing: border-box; } .header-bar INPUT[type=submit]:hover,.header-bar INPUT[type=button]:hover { border: solid 1px #A0A0A0; } .header-bar INPUT[type=text] { font-size: 80%; height: 1.6em; border: solid 1px #C0C0C0; box-sizing: border-box; } #search { width: 24em; margin-left: 0.5em; } .header SELECT { background-color: #A0A0A0; color: white; font-size: 80%; height: 1.6em; border: none; cursor: pointer; } .title { display: inline-block; color: gray; } .title A:link { color: gray; } .title A:visited { color: gray; } .title-v { font-size: 75%; color: gray; } .page { position: absolute; top: 2em; bottom: 0; left: 0; right: 0; overflow: auto; padding: 2em; padding-top: 1em; box-sizing: border-box; } .page P { line-height: 1.5em; } .page > DIV:last-child { height: 1em; } .page-edit { position: absolute; top: 2em; bottom: 0; left: 0; right: 0; overflow: auto; padding: 1em; background-color: white; box-sizing: border-box; } .unknown { color: red; margin-top: 0.5em; } DIV.error { color: red; /*text-shadow: red 0 0 1px;*/ padding: 2px 6px; background: url('<%/%>/error-bg.png'); } DIV.message { color: red; font-style: italic; } .command { display: inline-block; margin-left: 0.5em; vertical-align: top; } #lang { font-size: 80%; margin-right: 0.25em; margin-left: 0.25em; } .up { display: inline-block; } .edit-frame { position: absolute; left: 0; right: 0; top: 0; bottom: 0; padding: 0.5em; } .edit { border: none; background: none; width: 100%; height: 100%; } DIV.table { margin-top: 0.75em; } DIV.box { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; padding: 0.5em; } DIV.image { margin-top: 0.75em; display: inline-block; border: solid #606060 1px; box-shadow: 0 0 0.25em black; } DIV.info { margin-top: 0.75em; display: inline-block; padding: 0.5em; padding-left: 3.5em; background: url('<%/%>/info.png') 0.5em 0.5em no-repeat; min-height: 2em; background-color: #EFF7FF; border: solid 1px rgba(0,0,0,0.1); } DIV.warning { margin-top: 0.75em; display: inline-block; padding: 0.5em; padding-left: 3.5em; background: url('<%/%>/warning.png') 0.5em 0.5em no-repeat; min-height: 2em; background-color: #FFF6EF; border: solid 1px rgba(0,0,0,0.1); } DIV.tip { margin-top: 0.75em; display: inline-block; padding: 0.5em; padding-left: 3.5em; background: url('<%/%>/tip.png') 0.5em 0.5em no-repeat; min-height: 2em; background-color: #EFFFEF; border: solid 1px rgba(0,0,0,0.1); } DIV.vb { margin-top: 0.75em; display: inline-block; padding: 0.5em; padding-left: 3.5em; background: url('<%/%>/vb.png') 0.5em 0.5em no-repeat; min-height: 2em; background-color: #FFFCEF; border: solid 1px rgba(0,0,0,0.1); } DIV.critical { margin-top: 0.75em; display: inline-block; padding: 0.5em; padding-left: 3.5em; background: url('<%/%>/critical.png') 0.5em 0.5em no-repeat; min-height: 2em; background-color: #FFEFEF; border: solid 1px rgba(0,0,0,0.1); } DIV.example, DIV.seealso { display: inline-block; border: none; padding: 0; } DIV.seealso > UL:first-child { margin-top: 0.75em; } TEXTAREA { font-family: monospace; } TABLE.index { border: none; padding: 0; margin-top: 0.75em; } TABLE.index TD { border: none; padding: 1px 6px; vertical-align: baseline; } DIV.index { display: inline-block; font-size: 85%; padding: 0.5em; padding-right: 1.5em; margin-top: 0.75em; border: solid 1px #C0C0C0; } /*------------------------------------------------------------------*/ /*DIV.example:before { content: 'Example'; display: block; font-weight: bold; font-size: larger; margin-bottom: 0.75em; }*/ DIV.syntax { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; background-color: #F8F8F8; padding: 0.25em 0.75em; font-family: monospace; white-space: pre-wrap; } DIV.syntax > P:last-child { margin-bottom: -0.75em; } DIV.syntax > P { line-height: 1.1em; } DIV.since { display: inline-block; background: #FF8080; color: white; font-weight: bold; padding: 0 0.5em; line-height: 1.2rem; text-transform: uppercase; font-size: 80%; } .letter { font-weight: bold; vertical-align: baseline; color: white; background-color: #606060; padding: 0 0.25em; margin-right: 0.25em; text-align: center; } TR { vertical-align: top; } TABLE.no-border { margin: 0; margin-top: 0.75em; border: none; } TABLE.no-border > TBODY > TR > TD { border: none; } TABLE.no-border > TBODY > TR > TH { border: none; } .symbol { color: black; } TABLE.symbols > TBODY > TR > TH { text-align: left; vertical-align: top; padding-right: 16px; padding-top: 16px; } TABLE.symbols > TBODY > TR > TD { vertical-align: top; padding-right: 16px; } TABLE.full { width: 100%; line-height: 1.5em; } UL,OL { padding-left: 2em; margin-bottom: 0; margin-top: 0.75em; } LI UL,LI OL { margin-top: 0; } P:first-child,UL:first-child,OL:first-child,TABLE:first-child { margin-top: 0; } H1:first-child { margin-top: 0; } DIV.table:first-child { margin-top: 0; } DIV.syntax > P:first-child { margin-top: -0.75em; } .login { position: absolute; background: white; border: solid 4px #E0E0E0; background-color: #F8F8F8; padding: 2em; z-index: 10; text-align: center; top: 50%; left: 50%; transform: translate(-50%,-50%); } .login-glue { position: absolute; margin: 0 auto; width: 24em; padding: 1px 22px; background: #E8E8E8; z-index: 10; margin-top: -24px; margin-left: -6px; } .label-login { display: inline-block; margin-left: 0.5em; width: 8em; height: 1.5em; } #user { width: 12em; } #ok,#cancel { margin-top: 8px; width: 8em; } #register { width: 8em; } .hide-if-compact { display: none; } .show-if-compact { display: inherit; } /*@media (min-width: 120em) { .login { position: fixed; top: 32px; left: 32px; margin: 0px; } .hide-if-compact { display: inherit; } .show-if-compact { display: none; } }*/ .inherit { color: #C0C0C0; } .tooltip { display: none; position: absolute; margin-top: 2em; margin-left: 0em; pointer-events: none; width: 20em; } .tooltip-activator { display: inline-block; padding: 0; } .tooltip-activator:hover .tooltip { display: inline; } .tooltip-contents { display: inline-block; border: solid 1px gray; padding: 0.2em 0.5em; background: #FFFFDF; box-shadow: 0 0 4px gray; } .user-name { display: inline-block; font-size: 90%; } DIV.welcome { color: #3398C3; /*padding: 0.5em 1em;*/ /*border-radius: 1em;*/ font-size: 150%; line-height: normal; letter-spacing: 1px; } DIV.news { /*padding: 1em; border: solid 0.3em #3398C3; border-radius: 0.6em;*/ margin-top: 2em; margin-bottom: 1em; border-top: solid 0.4em #3398C3; padding-left: 8em; padding-right: 2em; } DIV.news > H3 { margin-top: 0; border-bottom: solid 1px #AFE8FF; } DIV.date { position: relative; float: left; display: table; font-weight: bold; border: solid 0.4em #3398C3; border-radius: 100%; margin-top: -1.5em; margin-left: -7em; width: 5em; height: 5em; background: white; color: #3398C3; line-height: 1.2em; } DIV.release { background: #8CC7DF; color: white; } DIV.date P { display: table-cell; vertical-align: middle; text-align: center; line-height: initial; } DIV.result { border: solid 1px #D8D8D8; border-top: none; background-color: #F8F8F8; } DIV.result PRE { padding: 0.5em 1em; margin: 0; } DIV.code { border: solid 1px #D8D8D8; margin-top: 0.75em; } DIV.code PRE { padding: 0.5em 1em; margin-top: 0; border: none; } IMG.screenshot { box-shadow: 0 0 0.5em rgba(0,0,0,0.25); } #welcome { font-size: 200%; font-weight: bold; text-shadow: 0 0 0.1em gray; margin-bottom: 1em; } #logo { width: 10em; margin-bottom: 1em; } #login-buttons { margin-top: 2em; } #login-buttons > INPUT { margin: 0 0.5em; } DIV.playground { border: solid 1px #D8D8D8; border-top: none; background-color: #F8F8F8; } DIV.playground PRE { display: none; padding: 0.5em 1em 0 1em; margin: 0; } DIV.playground BUTTON { background-color: #A0A0A0; color: white; font-size: 80%; height: 1.6em; border: none; cursor: pointer; margin: 0.5em 0 0.5em 0.5em; } DIV.waiting { background: url('<%/%>/waiting.gif'); width: 16px; height: 11px; } gambas-3.16.3/app/src/gambas-wiki/.public/tip.png000066400000000000000000000003611411575327000214430ustar00rootroot00000000000000PNG  IHDR D6PLTE]]____^^````^^````__aa____YY______)etRNS j@kَ.ѨYIDAT8c`:`dbfbħEPPVVRN@  \((ȁ|~AAnt Df^> 2ua| IENDB`gambas-3.16.3/app/src/gambas-wiki/.public/up-gray.png000066400000000000000000000003051411575327000222310ustar00rootroot00000000000000PNG  IHDR7IDAT(c`tI]`?HQ- $Ģ7ESdϛ+կS.w? ?Y{p?*g+Po=w~ODX/~?IENDB`gambas-3.16.3/app/src/gambas-wiki/.public/up.png000066400000000000000000000003111411575327000212660ustar00rootroot00000000000000PNG  IHDR7IDAT(c`tɎC LbcC#(Oe=SFW uAM002000ة2`z ,AEF{V`'_xdÔhy"'*IENDB`gambas-3.16.3/app/src/gambas-wiki/.public/vb.png000066400000000000000000000010401411575327000212510ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLmjW```ysOztOba^{uO&dc^:khYDysPwL7 Ҷ42+rmU}vM.غ4ڻ}H51.~wM2)wqRyK޿ֹEupS>aa`{Iٻ1+okV&ݾ0>xrQvpRm tRNSOM|%m;IDAT8˭[WP`lc 7E3]4$b|h^gÒ]6=w<1,H5 Dh_@K䀆4DPE@I@ÊFoՄ->ǀ)~D= Ǿ2愛x4}_-";᚟yA-" D;}ЫL!Je-yW.Vb@@tyvRB~o0$wIENDB`gambas-3.16.3/app/src/gambas-wiki/.public/waiting.gif000066400000000000000000000013231411575327000222710ustar00rootroot00000000000000GIF89a 􂂂ܐıޒ! NETSCAPE2.0!Created with ajaxload.info! , - di @85p{۸@ .s EB! , $`a`i©ҧX/(;! , 6 a,$ " cb(ϴ2[KӸNU *N! , 5 ET4b$I<uy; Ȅ>bG̑s9y֋*R!! , 2 diֲXDQHbRUEɴ]:^f_Q#cJ! , 7 di$q]biمah㢶m] a.M$4_-66ˠR! , / diDQr%R 5p Ěq^-4CY! , / diDQr%R 5p Ěq^-4CY;gambas-3.16.3/app/src/gambas-wiki/.public/warning.png000077700000000000000000000000001411575327000334152../../../../comp/src/gb.form.stock/gambas/32/warning.pngustar00rootroot00000000000000gambas-3.16.3/app/src/gambas-wiki/.src/000077500000000000000000000000001411575327000174525ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas-wiki/.src/CAuthor.class000066400000000000000000000040351411575327000220500ustar00rootroot00000000000000' Gambas class file ' Gambas class file Static Public All As New Object[] Public Name As String Public LastName As String Public Mail As String Public Country As String Public Works As New String[] Public Translator As Boolean Public Developer As Boolean Public Translation As New String[] Public Sub _new(hFile As File) Dim sLine As String Dim iPos As Integer ' Line Input #hFile, sLine ' If Left(sLine) = "-" Then Line Input #hFile, sLine ' Name = Trim(sLine) ' Line Input #hFile, Mail ' Line Input #hFile, Country ' While Not Eof(hFile) Line Input #hFile, sLine sLine = Trim(sLine) If Not sLine Or If sLine Begins "#" Then Continue If sLine Ends ">" Then iPos = RInStr(sLine, "<") If iPos Then Mail = Mid$(sLine, iPos + 1, -1) sLine = RTrim(Left(sLine, iPos - 1)) Endif Endif If sLine Ends ")" Then iPos = RInStr(sLine, "(") If iPos Then Country = Mid$(sLine, iPos + 1, -1) sLine = RTrim(Left(sLine, iPos - 1)) Endif Endif Name = sLine Break Wend While Not Eof(hFile) Line Input #hFile, sLine sLine = Trim(sLine) If Not sLine Then Break If InStr(sLine, "translation") Then If Right(sLine) = "." Then sLine = Left(sLine, -1) Translator = True Translation.Add(Trim(Replace(sLine, "translation", ""))) Else Works.Add(sLine) Developer = True Endif Wend iPos = InStr(Name, " ") If iPos Then LastName = Mid$(Name, iPos + 1) Else LastName = Name Endif All.Add(Me) End Public Sub _compare(hAuthor As CAuthor) As Integer Return String.Comp(LastName, hAuthor.LastName, gb.Language + gb.IgnoreCase) End Private Sub GetMail(sMail As String) As String sMail = Replace(sMail, "@", "_AT_") sMail = Replace(sMail, ".", "_DOT_") Return sMail End Public Sub GetLink() As String Return "" & Name & "" End Static Public Sub Exit() All = Null End gambas-3.16.3/app/src/gambas-wiki/.src/CClassInfo.class000066400000000000000000000346751411575327000225040ustar00rootroot00000000000000' Gambas class file Public Name As String Public Parent As String Public Symbols As Collection Public Creatable As Boolean Public AutoCreatable As Boolean Public (Component) As String Public ParentComponent As String Public DefaultEvent As String Public Events As String[] Public PropertyList As String[] Public Properties As Collection Public Virtual As Boolean Public DrawWith As String Public Container As Boolean Public MultiContainer As Boolean Public Help As String Public Sub _new(sName As String, sComponent As String, sParent As String) Dim hSym As CSymbolInfo If Not sParent And If CComponent.Classes.Exist(sName) Then sParent = sName Endif Name = sName {Parent} = sParent Component = sComponent Symbols = New Collection(gb.IgnoreCase) If {Parent} Then ParentComponent = CComponent.Classes[sParent].Component If ParentComponent Then For Each hSym In CComponent.Classes[sParent].Symbols Symbols[hSym.Name] = hSym Next Else Parent = "" Endif Endif End ' PUBLIC FUNCTION _get(Symbol AS String) AS SymbolInfo ' ' RETURN Symbols[Symbol] ' ' END Public Function IsVirtual() As Boolean Return Left$(Name) = "." Or Left$(Name) = "_" End ' PUBLIC SUB BecomeControl(hForm AS Object) ' ' DIM hComp AS ComponentInfo ' DIM aProp AS String[] ' DIM sProp AS String ' DIM sParent AS String ' DIM hProp AS PropertyInfo ' DIM hSym AS SymbolInfo ' DIM hCtrl AS Object ' DIM iPos AS Integer ' DIM hClass AS ClassInfo ' DIM bRemove AS Boolean ' DIM aCont AS String[] ' DIM sDefault AS String ' DIM sKind AS String ' ' hComp = Info[Component] ' ' Virtual = hComp.Virtuals.Find(Name) >= 0 ' ' IF Virtual THEN ' CComponent.Forms["*"].Controls.Add(Name) ' ELSE ' CComponent.Forms[hComp.Type].Controls.Add(Name) ' ENDIF ' ' hClass = ME ' DO ' IF hClass.Virtual THEN ' TRY hCtrl = NEW (hClass.Name) ' ELSE ' TRY hCtrl = NEW (hClass.Name, hForm) ' ENDIF ' ' IF hCtrl THEN BREAK ' ' TRY hClass = Info[hClass.ParentComponent][hClass.Parent] ' IF ERROR THEN BREAK ' LOOP ' ' 'IF NOT hCtrl THEN hCtrl = NEW Frame(hWin) ' ' aCont = hComp.Containers ' IF aCont THEN ' Container = aCont.Find(Name) >= 0 'OR Name = "Form" OR Name = "Menu" ' 'ELSE ' Compatibility ' ' Container = IsContainer(hCtrl) ' ENDIF ' ' MultiContainer = hComp.MultiContainers.Find(Name) >= 0 'OR Name = "TabStrip" ' ' TRY sProp = Symbols["_Properties"].Value ' IF NOT sProp THEN sProp = "*" ' ' ' sParent = Parent ' ' WHILE Left$(sProp) = "*" ' ' WITH Info.Classes[sParent] ' ' sProp = .Symbols["_Properties"].Value & Mid$(sProp, 2) ' ' sParent = .Parent ' ' END WITH ' ' WEND ' ' hClass = ME ' WHILE Left$(sProp) = "*" ' TRY hClass = Info[hClass.ParentComponent][hClass.Parent] ' IF ERROR THEN BREAK ' sProp = hClass.Symbols["_Properties"].Value & Mid$(sProp, 2) ' WEND ' ' Properties = NEW Collection ' FOR EACH sProp IN Split(sProp) ' ' ' Property: Name { Type } = Default ' ' sDefault = "" ' sKind = "" ' ' iPos = InStr(sProp, "=") ' IF iPos THEN ' sDefault = Trim(Mid$(sProp, iPos + 1)) ' sProp = Trim(Left$(sProp, iPos - 1)) ' ENDIF ' iPos = InStr(sProp, "{") ' IF iPos THEN ' sKind = Trim(Mid$(sProp, iPos + 1, -1)) ' sProp = Trim(Left$(sProp, iPos - 1)) ' ENDIF ' ' bRemove = Left(sProp) = "-" ' IF bRemove THEN sProp = Mid$(sProp, 2) ' ' IF Component THEN ' 'PRINT "? "; Component; ": "; Name; "."; sProp ' IF NOT Info[Component][Name][sProp] THEN ' DEBUG Component; ": "; Name; "."; sProp; ": property declared but not implemented" ' CONTINUE ' ENDIF ' ENDIF ' ' IF bRemove THEN ' Properties[sProp] = NULL ' ELSE ' hProp = NEW PropertyInfo(Component, Name, sProp, FALSE, Virtual, sKind, sDefault) ' Properties[sProp] = hProp ' ENDIF ' ' NEXT ' ' TRY DefaultEvent = Symbols["_DefaultEvent"].Value ' ' Events = NEW String[] ' FOR EACH hSym IN Symbols ' IF hSym.Kind = ":" THEN ' IF Left$(hSym.Name) = ":" THEN ' Events.Add(Mid$(hSym.Name, 2)) ' ELSE ' Events.Add(hSym.Name) ' ENDIF ' ENDIF ' NEXT ' Events.Sort ' ' ' Modification des propriétés ' ' PropertyList = NEW String[] ' ' FOR EACH hProp IN Properties ' PropertyList.Add(hProp.Name) ' NEXT ' ' Properties[PropertyCComponent.EVENT_NAME] = NEW PropertyInfo(Component, Name, PropertyCComponent.EVENT_NAME) ' PropertyList.Add(PropertyCComponent.EVENT_NAME, 0) ' ' 'IF Name = "Timer" THEN ' IF Virtual THEN ' ' Properties["X"] = NEW PropertyInfo("", Name, "X", TRUE) ' PropertyList.Add("X", 1) ' Properties["Y"] = NEW PropertyInfo("", Name, "Y", TRUE) ' PropertyList.Add("Y", 2) ' ' ENDIF ' ' TRY DrawWith = Symbols["_DrawWith"].Value ' 'IF DrawWith THEN ?Me. <= CRASH! ' ' PRINT ME.Name;; "->";; DrawWith ' 'ENDIF ' ' 'IF hCtrl <> hWin THEN ' ' TRY hCtrl.Delete ' 'ENDIF ' ' END Public Function Inherits(sClass As String) As Boolean If {Parent} = sClass Then Return True If Not Parent Then Return False Return CComponent.All[ParentComponent][Parent].Inherits(sClass) End Public Function GetProperties() As Collection If Properties Then If Properties.Count Then Return Properties Endif Endif If {Parent} Then Return CComponent.All[ParentComponent][{Parent}].GetProperties() Endif End Private Sub GetSymbolLink(sName As String, Optional sTitle As String, Optional sStaticTitle As String) As String Dim hSym As CSymbolInfo Dim sDesc As String Dim bInherit As Boolean Dim sRes As String Dim sLink As String hSym = Symbols[sName] sName = Replace(sName, ":", ".") sDesc = hSym.GetDescription() If sDesc Then sRes &= "
" If sDesc Then sRes &= "
" & sDesc & "
" Endif If sName = "_new" Then sLink = "/comp" &/ LCase(Component &/ Name &/ sName) Else sLink = "/comp" &/ LCase(hSym.Component &/ hSym.Class &/ sName) Endif If hSym.Class <> Name Or If hSym.Component <> Component Then Else If hSym.Class <> Main.Class Or If hSym.Component <> Main.Component Then bInherit = True Else bInherit = True sLink = "./" & LCase(sName) Endif If sTitle Then If sStaticTitle And If hSym.IsStatic() Then sTitle = sStaticTitle sLink = "[" & sTitle & "](" & sLink & ")" Else sLink = "[" & sLink & "]" Endif If bInherit Then sLink = "~" & sLink & "~" sRes &= sLink If Not sTitle Then sRes &= "  " If sDesc Then sRes &= "
" Return sRes End Private Function GetSymbolType(aSym As String[]) As String Dim sRes As String Dim sName As String If aSym.Count = 0 Then Return For Each sName In aSym sRes &= GetSymbolLink(sName) & "\n" Next Return sRes End Public Function GetSymbols() As String[] Dim aResult As New String[] Dim sSymbol As String Dim cSymbol As New Collection Dim hSym As CSymbolInfo Dim bDynamic As Boolean Dim bStatic As Boolean Dim sBreak As String Dim sPrefix As String = "" Dim aArray As String[] Dim bHasSymbols As Boolean Dim bHasDynamicVariable As Boolean Dim sCreatable As String If Symbols.Count Then For Each sSymbol In ["P", "C", "M", "p", "e", "m"] cSymbol[sSymbol] = New String[] cSymbol[">" & sSymbol] = New String[] Next For Each hSym In Symbols If hSym.IsHidden() Then Continue If Right$(hSym.Name) = "$" Then Continue bHasSymbols = True Select Case hSym.Kind Case "r", "p", "v" cSymbol[sPrefix & "p"].Add(hSym.Name) If hSym.Kind = "v" Then bHasDynamicVariable = True Case "R", "P", "V" cSymbol[sPrefix & "P"].Add(hSym.Name) Case "C" cSymbol[sPrefix & "C"].Add(hSym.Name) Case ":", "e", "E" hSym.Kind = "e" cSymbol[sPrefix & "e"].Add(hSym.Name) Case "m" cSymbol[sPrefix & "m"].Add(hSym.Name) Case "M" cSymbol[sPrefix & "M"].Add(hSym.Name) Default Print hSym.Kind; " ?" End Select 'IF InStr("rpm", hSym.Kind) THEN bDynamic = TRUE If hSym.IsStatic() Then 'If bParent Then ' bParentStatic = True 'Else bStatic = True 'Endif Else 'If bParent Then ' bParentDynamic = True 'Else bDynamic = True 'Endif Endif Next For Each aArray In cSymbol aArray.Sort Next Endif 'aResult.Add("### Symbols") aResult.Add("[[ desc") aResult.Add("==") sBreak = "\\\n" If Parent Then If Parent = Name Then aResult.Add(("This class reimplements")) Else aResult.Add(("This class inherits")) Endif 'sRes = sRes & " " & GetLink("/comp" &/ $hClass.ParentComponent &/ $hClass.Parent,,, "arrow") aResult.Add("[/comp" &/ ParentComponent &/ LCase(Parent) & "]") If ParentComponent <> Component Then aResult.Add(Subst(("in &1"), "[/comp" &/ ParentComponent & "]")) Endif aResult[aResult.Max] &= ".\\" Endif If IsVirtual() Then aResult.Add(("This class is virtual.") & "\\") Else If AutoCreatable Then aResult.Add(("This class can be used like an object by creating a hidden instance on demand.") & "\\") Endif sCreatable = "" If Creatable And If Not IsVirtual() And If bDynamic Then If Symbols.Exist("_new") Then 'GetSymbolLink($hClass.Symbols["_new"], $hClass, ("creatable"))) & sBreak sCreatable = Subst(("This class is &1."), GetSymbolLink("_new", ("creatable"))) & "\\" Else sCreatable = Subst(("This class is &1."), ("creatable")) & "\\" Endif Endif If Not sCreatable Then If Not bDynamic Then sCreatable = ("This class is static.") & "\\" Else sCreatable = ("This class is not creatable.") & "\\" Endif Endif aResult.Add(sCreatable) If Symbols.Exist("_call") Then aResult.Add(Subst(("This class can be used as a &1."), GetSymbolLink("_call", ("function"), ("static function"))) & "\\") Endif hSym = Symbols["_get"] If hSym Then If hSym.IsStatic() Then If Symbols.Exist("_put") Then aResult.Add(Subst(("This class acts like a &1 / &2 static array."), GetSymbolLink("_get", ("read")), GetSymbolLink("_put", ("write"))) & "\\") Else aResult.Add(Subst(("This class acts like a &1 static array."), GetSymbolLink("_get", ("read-only"))) & "\\") Endif Else If Symbols.Exist("_put") Then aResult.Add(Subst(("This class acts like a &1 / &2 array."), GetSymbolLink("_get", ("read")), GetSymbolLink("_put", ("write"))) & "\\") Else aResult.Add(Subst(("This class acts like a &1 array."), GetSymbolLink("_get", ("read-only"))) & "\\") Endif Endif Endif If Symbols.Exist("_next") Then aResult.Add(Subst(("This class is &1 with the &2 keyword."), GetSymbolLink("_next", ("enumerable"), ("statically enumerable")), "[/lang/foreach]") & "\\") Endif 'If aResult[aResult.Max] <> "==" And If bHasSymbols Then aResult.Add("==") 'If bHasSymbols Then aResult.Add("\\") If bStatic Then aResult.Add("[[ symbols") If cSymbol["P"].Count Then aResult.Insert([Replace(("Static properties"), " ", " "), "--"]) If cSymbol["M"].Count Then aResult.Insert([Replace(("Static methods"), " ", " "), "--"]) 'IF cSymbol["E"].Count THEN sRes = sRes & "" & ("Events") & "" & sSpace & "\n" If cSymbol["C"].Count Then aResult.Insert([("Constants"), "--"]) aResult[aResult.Max] = "==" If cSymbol["P"].Count Then aResult.Add(GetSymbolType(cSymbol["P"])) aResult.Add("--") Endif If cSymbol["M"].Count Then aResult.Add(GetSymbolType(cSymbol["M"])) aResult.Add("--") Endif If cSymbol["C"].Count Then aResult.Add(GetSymbolType(cSymbol["C"])) aResult.Add("--") Endif aResult[aResult.Max] = "]]" Endif If bDynamic Then aResult.Add("[[ symbols") If cSymbol["p"].Count Then aResult.Insert([("Properties"), "--"]) If cSymbol["m"].Count Then aResult.Insert([("Methods"), "--"]) If cSymbol["e"].Count Then aResult.Insert([("Events"), "--"]) aResult[aResult.Max] = "==" If cSymbol["p"].Count Then aResult.Add(GetSymbolType(cSymbol["p"])) aResult.Add("--") Endif If cSymbol["m"].Count Then aResult.Add(GetSymbolType(cSymbol["m"])) aResult.Add("--") Endif If cSymbol["e"].Count Then aResult.Add(GetSymbolType(cSymbol["e"])) aResult.Add("--") Endif aResult[aResult.Max] = "]]" Endif aResult.Add("]]") Return aResult Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Public Sub HasEvents() As Boolean Dim hSym As CSymbolInfo For Each hSym In Symbols If hSym.IsHidden() Then Continue If InStr(":eE", hSym.Kind) Then Return True Next End Public Sub IsRedirected() As Boolean Dim sPath As String sPath = "/comp" &/ LCase(Component &/ Name) sPath = Main.GetPagePathFrom(sPath) If Exist(sPath) Then If LTrim(File.Load(sPath)) Begins "==>" Then Return True Endif End Public Sub GetDescription() As String Dim sPath As String Dim aData As String[] Dim iPos As Integer Dim sData As String Dim sDesc As String Dim sCar As String Dim sSave As String Dim sFirst As String sPath = "/comp" &/ LCase(Component &/ Name) TRY_AGAIN: sPath = Main.GetPagePathFrom(sPath) If Exist(sPath) Then aData = Split(File.Load(sPath), "\n") If aData.Count Then sFirst = Trim(aData[0]) If sFirst Begins "-->" Or If sFirst Begins "==>" Then sPath = Trim(Mid$(sFirst, 4)) Goto TRY_AGAIN Endif Endif Else aData = ["@{help}"] Endif While iPos < aData.Count sData = aData[iPos] If Trim(sData) = "@{help}" Then sSave = Main.Class Main.Class = Me.Name aData.Remove(iPos) aData.Insert(Split(Main.GetDefaultHelp(), "\n"), iPos) Main.Class = sSave Continue Endif If sData Then sCar = String.Left(sData) If Len(sCar) >= 2 Or If IsLetter(sCar) Then sData = Replace(sData, "[../", "[./") sData = Replace(sData, "[./../", "[../") sDesc &= sData & "\n" Endif Else If sDesc Then Break Endif Inc iPos Wend Return sDesc End gambas-3.16.3/app/src/gambas-wiki/.src/CComponent.class000066400000000000000000000537321411575327000225600ustar00rootroot00000000000000' Gambas class file Public Const STABLE As Integer = 0 Public Const STABLE_NOT_FINISHED As Integer = 1 Public Const UNSTABLE As Integer = 2 Public Const DEPRECATED As Integer = 3 Static Public All As New Collection Static Public (Classes) As Collection Public Name As String Public Key As String Public Description As String Public Authors As New String[] Public Controls As New String[] Public Containers As New String[] Public MultiContainers As New String[] Public Virtuals As New String[] Public Loaded As Boolean Public ClassList As New String[] Public State As Integer Public SortKey As Integer Public Groups As New Collection Public Type As String Public Require As New String[] Public Exclude As New String[] Public Implement As New String[] Public Need As New String[] Public DoNotWrite As New Collection Public AlwaysRead As New Collection Public Translate As New Collection Private $sShortLang As String 'Private $cClass As New Collection(gb.Text) Private $aInit As String[] Private $bLoaded As Boolean Static Private $cImplement As New Collection Static Private $cRescue As New Collection Static Private $cFeatures As New Collection Static Public Sub Init() If Classes Then Return Classes = New Collection(gb.IgnoreCase) $cImplement.Clear $cRescue["3.0:Form"] = "gb.qt4" $cRescue["3.0:OpenGLViewer"] = "gb.qt4.opengl" $cRescue["3.0:ImageIO"] = "gb.image.io" $cRescue["3.0:EventLoop"] = "gb.qt4" $cRescue["3.0:XML"] = "gb.xml" $cFeatures["form"] = ("Graphical form management") $cFeatures["eventloop"] = ("Event loop management") $cFeatures["imageio"] = ("Image loading and saving") $cFeatures["openglviewer"] = ("OpenGL display") $cFeatures["complex"] = ("Complex numbers") $cFeatures["xml"] = ("XML management") ' sPath = Main.InfoFilePath ' IF NOT sPath THEN sPath = System.Path &/ "share/gambas" & System.Version & "/info" ' aComp = Dir(System.Path &/ "lib/gambas" & System.Version, "*.component") ' For iPos = 0 To aComp.Max ' aComp[iPos] = File.BaseName(aComp[iPos]) ' Next ' aComp.Sort ' ' For Each sComp In aComp ' All[sComp] = New CComponent(sComp) ' Next End Static Public Sub ListAll() As String[] Dim sDir As String Dim aComp As New String[] Dim sComp As String If Main.InfoDir Then sDir = Main.InfoDir Else sDir = Component.Path Endif For Each sComp In Dir(sDir, "*.component") aComp.Add(File.BaseName(sComp)) Next aComp.Sort Return aComp End Static Public Sub Exit() All = Null Classes = Null End Static Public Sub Get(sComp As String) As CComponent Dim hComp As CComponent Init hComp = All[sComp] If Not hComp Then hComp = New CComponent(sComp) All[sComp] = hComp Endif hComp.Load Return hComp End ' STATIC PRIVATE SUB SortComponents() ' ' DIM iMax AS Integer ' DIM hComponent AS CComponent ' DIM cNewAll AS NEW Collection ' DIM iInd AS Integer ' ' FOR EACH hComponent IN All ' hComponent.CalcSortKey ' iMax = Max(iMax, hComponent.SortKey) ' 'PRINT hComponent.Key;; hComponent.SortKey ' NEXT ' ' FOR iInd = 1 TO iMax ' FOR EACH hComponent IN All ' IF hComponent.SortKey = iInd THEN ' cNewAll.Add(hComponent, hComponent.Key) ' ENDIF ' NEXT ' NEXT ' ' All = cNewAll ' ' END ' ' PUBLIC SUB CalcSortKey() ' ' DIM sComp AS String ' DIM hComp AS CComponent ' DIM iKey AS Integer ' ' IF SortKey THEN RETURN ' ' IF Require.Count = 0 THEN ' INC $iKey ' SortKey = $iKey ' RETURN ' ENDIF ' ' FOR EACH sComp IN Require ' hComp = All[sComp] ' hComp.CalcSortKey ' iKey = iKey + hComp.SortKey ' NEXT ' ' SortKey = iKey + 1 ' ' END Private Sub CalcShortLang() Dim sLang As String Dim iPos As Integer sLang = System.Language iPos = InStr(sLang, "_") If iPos Then $sShortLang = Left$(sLang, iPos - 1) Else $sShortLang = sLang Endif End Private Sub InsertList(cCol As Collection, sList As String) Dim sElt As String For Each sElt In Split(sList) If Left(sElt) = "!" Then cCol[Mid$(sElt, 2)] = False Else cCol[sElt] = True Endif Next End Public Sub _new(sName As String) Dim sPath As String Dim hFile As File Dim sLine As String Dim iPos As Integer Dim sKey As String Dim sLang As String Dim sGroup As String Dim aCtrl As String[] If Main.InfoDir Then sPath = Main.InfoDir &/ sName & ".component" Else sPath = Component.Path &/ sName & ".component" Endif hFile = Open sPath For Input Line Input #hFile, sLine If sLine <> "[Component]" Then Error.Raise("Not a component file: " & sPath) CalcShortLang 'WHILE NOT Eof(hFile) ' LINE INPUT #hFile, sLine ' IF sLine = "[Component]" THEN BREAK 'WEND If Eof(hFile) Then Seek #hFile, 0 While Not Eof(hFile) Line Input #hFile, sLine sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine) = ";" Or Left(sLine) = "'" Then Continue If Left(sLine) = "[" Then sGroup = Mid$(sLine, 2, -1) If sGroup = "Component" Then Break Continue Endif iPos = InStr(sLine, "=") If iPos = 0 Then Continue sKey = Left$(sLine, iPos - 1) sLine = Mid$(sLine, iPos + 1) iPos = RInStr(sKey, "[") If iPos Then sLang = Mid$(sKey, iPos + 1, -1) If sLang <> System.Language And If sLang <> $sShortLang Then Continue sKey = Left$(sKey, iPos - 1) Endif Name = sName Key = sName Type = "*" Select Case sKey Case "Name", "Description" Description = sLine Case "Author", "Authors" Authors = Split(sLine) Case "Implement", "Implements" Implement = Split(sLine) Case "Need", "Needs" Need = Split(sLine) ' CASE "Type" ' Type = sLine ' IF NOT Info.Forms.Exist(Type) THEN Info.Forms[Type] = NEW FormInfo(Type) Case "Group" sGroup = sLine Case "Init" $aInit = Split(sLine) Case "Control", "Controls" aCtrl = Split(sLine) Controls.Insert(aCtrl) Groups[sGroup] = aCtrl Case "Container", "Containers" Containers.Insert(Split(sLine)) Case "MultiContainer", "MultiContainers" MultiContainers.Insert(Split(sLine)) Case "Virtual", "Virtuals" Virtuals.Insert(Split(sLine)) Case "Require", "Requires" Require = Split(sLine) Case "Exclude", "Excludes" Exclude = Split(sLine) Case "Alpha" State = UNSTABLE Case "State" Select Case LCase(sLine) Case "stable", "finished" State = STABLE Case "notfinished", "unfinished" State = STABLE_NOT_FINISHED Case "experimental", "unstable" State = UNSTABLE Case "deprecated" State = DEPRECATED Default If IsInteger(sLine) Then State = CInt(sLine) End Select Case "DoNotWrite" InsertList(DoNotWrite, sLine) Case "AlwaysRead" InsertList(AlwaysRead, sLine) Case "Translate" InsertList(Translate, sLine) End Select Wend Close #hFile End ' Public Sub OldLoad() ' ' Dim hFile As File ' Dim sPath As String ' Dim sLine As String ' Dim sClass As String ' Dim sParent As String ' Dim hClass As CClassInfo ' Dim sSymbol As String ' Dim hSym As CSymbolInfo ' Dim bAgain As Boolean ' Dim bJumpNextClass As Boolean ' Dim sElt As String ' ' If $bLoaded Then Return ' ' $bLoaded = True ' ' 'DEBUG "Loading "; Name ' ' ClassList = New String[] ' ' If Name <> "gb" Then All["gb"].Load() ' ' For Each sElt In Require ' All[sElt].Load() ' Next ' ' For Each sElt In Need ' If $cImplement.Exist(sElt) Then Continue ' sElt = Main.GetVersion() & ":" & sElt ' If $cRescue.Exist(sElt) Then ' All[$cRescue[sElt]].Load() ' Else ' Error.Raise("No rescue for " & sElt) ' Endif ' Next ' ' For Each sElt In Implement ' $cImplement[sElt] = Name ' Next ' ' ' sPath = Main.InfoFilePath &/ Name & ".info" ' ' Patch, as gb.qte and gb.qte.ext are unloadable at the moment ' If Not Exist(sPath) And If Name Like "gb.qte*" Then ' sPath = Main.InfoFilePath &/ Replace(Name, ".qte", ".qt") & ".info" ' Endif ' If Not Exist(sPath) Then ' Print "
Cannot load info file: " & sPath & "\n
" ' Return ' Endif ' hFile = Open sPath For Read ' ' Repeat ' ' bAgain = False ' Seek #hFile, 0 ' ' While Not Eof(hFile) ' Line Input #hFile, sLine ' ' If Left$(sLine) = "#" Then ' ' sClass = Mid$(sLine, 2) ' ' bJumpNextClass = $cClass.Exist(sClass) ' If bJumpNextClass Then Continue ' ' 'IF sClass = "Dialog" THEN STOP ' ' Line Input #hFile, sParent ' If Not sParent Then ' If CComponent.Classes.Exist(sClass) Then ' sParent = sClass ' Endif ' Endif ' ' If sParent And If Not CComponent.Classes.Exist(sParent) Then ' bAgain = True ' bJumpNextClass = True ' Continue ' Endif ' ' hClass = New CClassInfo(sClass, sParent) ' ' CComponent.Classes[sClass] = hClass ' $cClass[sClass] = hClass ' ' If sClass <> "." Then ClassList.Add(sClass) ' ' Line Input #hFile, sLine ' hClass.Creatable = InStr(sLine, "C") ' hClass.AutoCreatable = InStr(sLine, "A") ' hClass.Component = Name ' ' Continue ' ' Endif ' ' If bJumpNextClass Then Continue ' ' sSymbol = sLine ' hSym = New CSymbolInfo ' hClass.Symbols[sSymbol] = hSym ' ' hSym.Name = sSymbol ' hSym.Class = sClass ' hSym.Component = Name ' Line Input #hFile, hSym.Kind ' Line Input #hFile, hSym.Type ' If hSym.Kind = "C" Then ' Line Input #hFile, hSym.Value ' Else ' Line Input #hFile, hSym.Signature ' Endif ' If Left$(hSym.Kind) = "p" Then ' ' Compatibility ' If Left$(hSym.Type, 2) = "i<" Then ' 'hSym.Signature = Mid$(hSym.Type, 3, -1) ' hSym.Type = "i" ' Endif ' ' Properties are now described in "_Properties" ' Endif ' 'hSym.Hidden = InStr(sSymbol, "_") ' 'hSym.Static = UCase(hSym.Kind) = hSym.Kind AND hSym.Kind <> ":" ' ' Wend ' ' Until Not bAgain ' ' 'PRINT "Initializing controls..." ' ' ' IF Type <> "*" THEN hForm = NEW (Type) ' ' ' ' IF $aInit THEN ' ' FOR EACH sClass IN $aInit ' ' IF $cClass.Exist(sClass) THEN ' ' $cClass[sClass].BecomeControl(hForm) ' ' ELSE ' ' DEBUG "Control "; sClass; " not found" ' ' ENDIF ' ' NEXT ' ' ENDIF ' ' ' ' FOR EACH sClass IN Controls ' ' IF $cClass.Exist(sClass) THEN ' ' $cClass[sClass].BecomeControl(hForm) ' ' ELSE ' ' DEBUG "Control "; sClass; " not found" ' ' ENDIF ' ' NEXT ' ' ' ' TRY hForm.Delete ' ' Close #hFile ' ' ClassList.Sort ' ' ' 'CATCH ' ' 'Error.Propagate ' ' End Public Function _get(sClass As String) As CClassInfo Return Classes[Key &/ sClass] End Public Sub ExistClassEvenArray(sClass As String) As Boolean Do If Classes.Exist(sClass) Then Return True If Right(sClass, 2) <> "[]" Then Return sClass = Left(sClass, -2) If Not sClass Then Return Loop End Static Private Sub CreateClass(sClass As String, sParent As String, sComp As String) As CClassInfo Dim hClass As CClassInfo Dim hComp As CComponent hClass = New CClassInfo(sClass, sComp, sParent) Classes[sComp &/ sClass] = hClass Classes[sClass] = hClass hComp = Get(sComp) If hComp Then 'If hComp.Type Then Classes[hComp.Type &/ sClass] = hClass If sClass <> "." Then hComp.ClassList.Add(sClass) End If Return hClass End Static Private Sub SubstInfo(sKey As String) As String If sKey Begins "gb.qt4" Then sKey = Replace(sKey, "gb.qt4", "gb.qt5") Return sKey End Public Sub Load() Dim aLine As String[] Dim sClass As String Dim sSymbol As String Dim sLig As String Dim hClass As CClassInfo Dim hParent As CClassInfo Dim hSym As CSymbolInfo Dim sParent As String Dim sPath As String Dim bAgain As Boolean Dim bNextClass As Boolean Dim cClass As New Collection Dim aList As String[] Dim iLine As Integer Dim sHelp As String Dim sElt As String Dim cCycle As Collection Dim I As Integer Dim sInfo As String If $bLoaded Then Return $bLoaded = True 'Debug "Loading: "; Key 'If Key = Project.Name Then Goto HAS_BEEN_LOADED ClassList = New String[] Controls = New String[] If Name <> "gb" Then Get("gb").Load() For Each sElt In Require Get(sElt).Load() Next For Each sElt In Need If $cImplement.Exist(sElt) Then Continue sElt = "3.0:" & sElt If $cRescue.Exist(sElt) Then Get($cRescue[sElt]).Load() Else Error.Raise("No rescue for " & sElt) Endif Next For Each sElt In Implement $cImplement[sElt] = Name Next 'sPath = Main.InfoFilePath &/ Name & ".info" sInfo = SubstInfo(Key) If Main.InfoDir Then sPath = Main.InfoDir &/ sInfo & ".info" Else sPath = System.Path &/ "share/gambas" & System.Version &/ "info" &/ sInfo & ".info" Endif If Not Exist(sPath) Then Print "
Cannot load info file: " & sPath & "\n
" Return Endif ' List of exported classes Try aList = Split(File.Load(File.SetExt(sPath, "list")), "\n", "", True) If Error Then Print "
Cannot load list file: " & File.SetExt(sPath, "list") & "\n
" Return Endif For I = 0 To aList.Max sClass = aList[I] If Right(sClass) = "!" Then aList[I] = Left(sClass, -1) Next For Each sClass In aList If sClass Then cClass[sClass] = True Next Repeat bAgain = False cCycle = New Collection aLine = Split(File.Load(sPath), "\n") If aLine.Count And If aLine[aLine.Max] = "" Then aLine.Remove(aLine.Max) iLine = 0 While iLine < aLine.Count sLig = aLine[iLine] Inc iLine If Left$(sLig) = "#" Then bNextClass = False sClass = Mid$(sLig, 2) 'DEBUG sClass If Classes.Exist(Key &/ sClass) Then If Not cCycle.Exist(sClass) Then 'DEBUG "Class exists" bNextClass = True Continue Endif Endif 'If sClass = "Application" Then Stop ' If Key = Project.Name And If Project.ExistClass(sClass) Then ' bNextClass = True ' Continue ' Endif sParent = aLine[iLine] Inc iLine If sParent = sClass Then 'hParent = Classes[sClass] ' If hParent And If hParent.Component <> Key And If hParent.Component <> Project.Name Then ' sParent = sClass ' Else sParent = "" 'Endif Endif ' Ce test peut foirer si une classe veut hériter d'une autre classe ' du même composant, qui existe déjà dans un composant déjà déclaré. If sParent And If Not ExistClassEvenArray(sParent) Then If Not cClass.Exist(sParent) Then Error.Raise("'" & sParent & "' class is missing in " & Key & " component exported classes") Endif bAgain = True bNextClass = True 'DEBUG "Parent does not exist:";; sParent Continue Endif If Not cCycle.Exist(sClass) Then hClass = CreateClass(sClass, sParent, Key) cCycle[sClass] = True sLig = aLine[iLine] Inc iLine hClass.Creatable = InStr(sLig, "C") hClass.AutoCreatable = InStr(sLig, "A") Else Inc iLine Endif GoSub READ_HELP If hClass.Help Then hClass.Help &= "\n\n" hClass.Help &= sHelp Continue Endif If bNextClass Then Continue sSymbol = sLig hSym = New CSymbolInfo Classes[Key &/ sClass].Symbols[sSymbol] = hSym hSym.Name = sSymbol hSym.Class = sClass hSym.Component = Key hSym.Kind = aLine[iLine] Inc iLine hSym.Type = aLine[iLine] Inc iLine If hSym.Kind = "C" Then hSym.Value = UnQuote(aLine[iLine]) Else hSym.Signature = aLine[iLine] Endif Inc iLine If Left$(hSym.Kind) = "p" Then If Left$(hSym.Type, 2) = "i<" Then hSym.Signature = Mid$(hSym.Type, 3, -1) hSym.Type = "i" Endif Endif GoSub READ_HELP hSym.Help = sHelp Wend Until Not bAgain sPath = File.SetExt(sPath, "help") If Exist(sPath) Then sClass = "" sSymbol = "" For Each sLig In Split(File.Load(sPath), "\n") If Left(sLig) = "#" Then sClass = Mid$(sLig, 2) Continue Endif If Left(sLig) <> "'" Then sSymbol = sLig hSym = Null Try hSym = Classes[Key &/ sClass].Symbols[sSymbol] Continue Endif If hSym Then hSym.Help &= Mid$(sLig, 2) & "\n" Endif Next Endif 'PRINT "Initializing controls..." ' If Type = "Form" Then ' For Each sClass In ["Control", "Form", "Menu"] ' If Classes.Exist(sClass) Then ' Classes[sClass].InitControl() ' Endif ' Next ' Endif For Each sClass In ClassList If Not IsLetter(Left(sClass)) Then Continue hClass = Classes[Key &/ sClass] hSym = hClass.Symbols["_IsControl"] If hSym And If hSym.Value Then Controls.Add(hClass.Name) Endif hSym = hClass.Symbols["_IsForm"] If hSym And If hSym.Value Then If hClass.Parent Then hParent = Classes[hClass.ParentComponent &/ hClass.Parent] hSym = hParent.Symbols["_IsForm"] If hSym And If hSym.Value Then 'Hiddens.Add(sClass) Continue Endif Endif ' hSym = hClass.Symbols["_HiddenControls"] ' If hSym Then Hiddens.Insert(Split(hSym.Value, ",")) Endif Next ' _HiddenControls can be inherited, so its contents may be not significative ' For Each sClass In Hiddens ' If Classes.Exist(Key &/ sClass) Then ' Classes[Key &/ sClass].InitControl() ' iPos = Controls.Find(sClass) ' If iPos >= 0 Then Controls.Remove(iPos) ' Endif ' Next ' For Each sClass In Controls ' Classes[Key &/ sClass].InitControl() ' Next ClassList.Sort(gb.IgnoreCase) HAS_BEEN_LOADED: ' If Key = "gb.web" Then ' Family = "webpage" ' CModule.Activate(Family) ' Endif 'PRINT "OK" Loaded = True READ_HELP: sHelp = "" While iLine < aLine.Count If Left(aLine[iLine]) <> "'" Then Break sHelp &= Mid$(aLine[iLine], 2) & "\n" Inc iLine Wend If sHelp Then sHelp = RTrim(sHelp) If InStr(sHelp, "\n") = 0 Then sHelp = LTrim(sHelp) Endif Return End Public Function GetClasses(Optional aMore As String[]) As String[] Dim aResult As New String[] Dim sClass As String Dim aClass As New String[] aResult.Add("[[ desc") aResult.Add(("Class")) aResult.Add("--") aResult.Add(("Description")) For Each sClass In ClassList If Left(sClass) = "." Or If Left(sClass) = "_" Or If InStr(sClass, "*") Then Continue aClass.Add(sClass) Next If aMore Then aClass.Insert(aMore) aClass.Sort(gb.IgnoreCase) For Each sClass In aClass 'aClass.Add(sClass) aResult.Add("==") aResult.Add("[/comp" &/ Key &/ LCase(sClass) & "]") aResult.Add("--") Try aResult.Add(Me[sClass].GetDescription()) Next aResult.Add("]]") Return aResult Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Public Sub GetDescription() As String[] Dim aResult As New String[] Dim sInfo As String Dim bComma As Boolean Select Case State Case UNSTABLE aResult.Add(("This component is not stable yet.")) Case DEPRECATED aResult.Add("*" & ("This component is deprecated.") & "*") End Select aResult.Add("[[ desc") If Authors.Count Then aResult.Add("==") If Authors.Count = 1 Then aResult.Add("**" & ("Author") & "**") Else aResult.Add("**" & ("Authors") & "**") Endif aResult.Add("--") aResult.Add(Authors.Join(", ") & ".") Endif If Implement.Count Then aResult.Add("==") aResult.Add("**" & ("Implements") & "**") aResult.Add("--") bComma = False For Each sInfo In Implement If Not bComma Then bComma = True Else aResult[aResult.Max] &= ", " Endif aResult.Add($cFeatures[LCase(sInfo)]) Next aResult[aResult.Max] &= "." Endif If Need.Count Or If Require.Count Then aResult.Add("==") aResult.Add("**" & ("Requires") & "**") aResult.Add("--") bComma = False For Each sInfo In Need If Not bComma Then bComma = True Else aResult[aResult.Max] &= ", " Endif aResult.Add($cFeatures[LCase(sInfo)]) Next For Each sInfo In Require If Not bComma Then bComma = True Else aResult[aResult.Max] &= ", " Endif aResult.Add("[/comp/" & LCase(sInfo) & "]") Next aResult[aResult.Max] &= "." Endif If Exclude.Count Then aResult.Add("==") aResult.Add("**" & ("Excludes") & "**") aResult.Add("--") bComma = False For Each sInfo In Exclude If Not bComma Then bComma = True Else aResult[aResult.Max] &= ", " Endif aResult.Add("[/comp/" & LCase(sInfo) & "]") Next aResult[aResult.Max] &= "." Endif aResult.Add("]]") Return aResult Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Static Public Sub HasPackage(sComp As String) As Boolean If sComp Begins "gb.gui" Then Return If sComp = "gb.eval" Then Return If sComp = "gb.geom" Then Return If sComp = "gb.draw" Then Return If sComp = "gb.debug" Then Return Return True End gambas-3.16.3/app/src/gambas-wiki/.src/CPropertyInfo.class000066400000000000000000000130461411575327000232500ustar00rootroot00000000000000' Gambas class file Public Const EVENT_NAME As String = "(Group)" Static Private $cRedirect As New Collection Static Private $cTranslate As New Collection Public Name As String Public Type As String Public DefaultValue As Variant Public Coord As Boolean Public Required As Boolean Public Exclude As Boolean Public Hidden As Boolean Public DoNotApply As Boolean Public AlwaysRead As Boolean Public Virtual As Boolean Public Translate As Boolean Public ConstantClass As String Public ConstantList As Collection Static Public Sub _init() $cRedirect["*.Visible"] = True $cRedirect["*.Enabled"] = True $cRedirect["*.Tag"] = True $cRedirect["*.Password"] = True $cRedirect["*.Mouse"] = True $cRedirect["*.ToolTip"] = True $cRedirect["*.List"] = True $cRedirect["*.Arrangement"] = True $cRedirect["Form.Persistent"] = True $cRedirect["Form.Border"] = True $cRedirect["Form.Text"] = True $cRedirect["Form.Icon"] = True $cRedirect["Form.State"] = True $cRedirect["Form.Mask"] = True $cRedirect["Form.TopOnly"] = True $cRedirect["Form.SkipTaskbar"] = True 'Nein! '$cRedirect["Button.Default"] = TRUE '$cRedirect["Button.Cancel"] = TRUE $cRedirect["Menu.Visible"] = False $cRedirect["Menu.Enabled"] = True $cRedirect["Menu.Shortcut"] = True $cRedirect["DrawingArea.Cached"] = True $cTranslate["Text"] = True $cTranslate["Title"] = True $cTranslate["List"] = True $cTranslate["Caption"] = True $cTranslate["ToolTip"] = True End Public Sub _new(sComponent As String, sClass As String, sName As String, hCtrl As Object, Optional bVirtual As Boolean, Optional bDoNotApply As Boolean, Optional sDefVal As String) Dim sList As String Dim cList As String[] Dim hSym As CSymbolInfo 'DIM sDefVal AS String Dim sSign As String 'iPos = Instr(sName, "=") 'IF iPos THEN ' sDefVal = Trim(Mid$(sName, iPos + 1)) ' sName = Trim(Left$(sName, iPos - 1)) 'ENDIF 'if (sClass & "." & sName) = "Menu.Text" then stop Name = sName If Name = EVENT_NAME Then Type = "s" Virtual = True Exclude = True DoNotApply = True Return Endif If sComponent Then Try hSym = CComponent.Classes[sComponent &/ sClass].Symbols[sName] Type = hSym.Type sSign = hSym.Signature Else If Name = "X" Or Name = "Y" Then Type = "i" Endif Endif 'sClass = hSym.Class If Len(Type) = 1 Then If Name = "Visible" Then DefaultValue = True Else If Name = "X" Or Name = "Y" Or Name = "Width" Or Name = "Height" Or Name = "Text" Then Required = True Else If Name = "Tag" Then Type = "s" Else If Name = "List" Then Type = "List" Else If hCtrl Then Try DefaultValue = Object.GetProperty(hCtrl, Name) Else Print sClass; "."; sName; " DefaultValue ?" Endif 'ELSE IF Type = "Font" THEN ' DefaultValue = "" 'Object.GetProperty(hCtrl, Name).ToString() Else DefaultValue = Null Endif If sDefVal Then Select Case Type Case "i" DefaultValue = CInt(sDefVal) Case "e" DefaultValue = CFloat(sDefVal) Case "b" DefaultValue = LCase(sDefVal) <> "false" Case "s" DefaultValue = sDefVal End Select Endif If Type = "i" Then If Name = "Background" Or Name = "Foreground" Or InStr(Name, "Color") > 0 Then Type = "Color" 'DefaultValue = NULL 'AlwaysRead = TRUE Else If sSign Then Type = "Constant" ConstantList = New Collection cList = Split(hSym.Signature) ConstantClass = cList[0] cList.Remove(0) If cList.Count Then For Each sList In cList hSym = CComponent.Classes[ConstantClass].Symbols[sList] ' Maybe the constant declared in the property don't really exist Try ConstantList[CStr(hSym.Value)] = sList Next Else For Each hSym In CComponent.Classes[ConstantClass].Symbols If hSym.Kind = "C" Then If Not hSym.IsHidden() Then ConstantList[CStr(hSym.Value)] = hSym.Name Endif Endif Next Endif sList = ConstantList[CStr(DefaultValue)] 'PRINT sClass & "." & sName; " : "; ConstantClass & "." & sList; " = "; DefaultValue; TypeOf(DefaultValue) DefaultValue = sList 'PRINT sClass; "."; sName; " is constant" 'PRINT ConstantClass; " = "; 'FOR EACH sList IN ConstantList ' PRINT sList; "("; CLASS[ConstantClass].Symbols[sList].Value; " ) "; 'NEXT 'PRINT Endif Else If Type = "s" Then If InStr(Name, "Path") Then Type = "Path" Endif Endif Coord = Name = "X" Or Name = "Y" Or Name = "Width" Or Name = "Height" 'AlwaysRead = Name = "Font" If bDoNotApply Then DoNotApply = True Else If $cRedirect.Exist(sClass & "." & Name) Then DoNotApply = $cRedirect[sClass & "." & Name] Else If $cRedirect.Exist("*." & Name) Then DoNotApply = $cRedirect["*." & Name] Endif 'IF DoNotApply THEN PRINT "DoNotApply: "; sClass; "."; Name Select Case sClass Case "RadioButton" AlwaysRead = Name = "Value" Case "Button" AlwaysRead = Name = "Default" Or Name = "Cancel" Case "TabStrip" Exclude = Name = "Text" Or Name = "Index" Or Name = "Picture" Hidden = Name = "Index" Case "ProgressBar" AlwaysRead = Name = "Value" Or Name = "Max" End Select Translate = $cTranslate.Exist(Name) Virtual = bVirtual Catch Print sComponent; ": "; sClass; "."; sName; ": "; Error.Text 'hSym = CComponent.Classes["System"].Symbols["Language"] Type = "s" DoNotApply = True DefaultValue = Null End gambas-3.16.3/app/src/gambas-wiki/.src/CSymbolInfo.class000066400000000000000000000414071411575327000226730ustar00rootroot00000000000000' Gambas class file Static Private $cTypeName As New Collection Public Name As String Public Type As String Public Kind As String Public Signature As String Public Value As String Public (Class) As String Public (Component) As String Public NotPublic As Boolean Public LineNumber As Integer Public Help As String Static Public Sub _init() $cTypeName["b"] = "Boolean" $cTypeName["c"] = "Byte" $cTypeName["h"] = "Short" $cTypeName["i"] = "Integer" $cTypeName["l"] = "Long" $cTypeName["d"] = "Date" $cTypeName["g"] = "Single" $cTypeName["f"] = "Float" $cTypeName["v"] = "Variant" $cTypeName["s"] = "String" $cTypeName["o"] = "Object" $cTypeName["p"] = "Pointer" End Static Public Function GetNativeType(sType As String) As String Return $cTypeName[sType] End Public Function IsHidden() As Boolean If Left(Name) = "_" Then Return True Return InStr(Name, "_") > 0 And Kind <> "C" End Public Function IsStatic() As Boolean Return UCase(Kind) = Kind And Kind <> ":" End Public Function GetIcon() As String Dim bStatic As Boolean Dim sIcon As String bStatic = UCase(Kind) = Kind Select Case LCase(Kind) Case "r" sIcon = "img/16" &/ If(bStatic, "s-property-ro.png", "property-ro.png") Case "p" sIcon = "img/16" &/ If(bStatic, "s-property.png", "property.png") Case "v" sIcon = "img/16" &/ If(bStatic, "s-variable.png", "variable.png") Case "c" sIcon = "img/16/constant.png" Case ":" sIcon = "img/16/event.png" Case "t" sIcon = "img/16/control.png" Case "m" sIcon = "img/16" &/ If(bStatic, "s-method.png", "method.png") End Select Return sIcon End Private Function GetType(sType As String, bBalise As Boolean) As String If Len(sType) = 1 Then sType = $cTypeName[sType] Else If Left$(sType) = "." Then sType = "Object" Endif If bBalise Then Return "" & sType & "" Else Return sType Endif End Public Function GetSignature(Optional bBalise As Boolean) As String Dim iInd As Integer Dim sRes As String Dim sCar As String Dim iPos As Integer Dim bName As Boolean Dim bFirst As Boolean Dim sSign As String Dim sBold As String Dim sNoBold As String Dim sName As String sSign = Signature If Left$(sSign) = "#" Then Return Mid$(sSign, 2) Endif If bBalise Then sBold = "" sNoBold = "" Endif bFirst = True Do iInd = iInd + 1 If iInd > Len(sSign) Then Break sCar = Mid$(sSign, iInd, 1) If sCar = "'" Or sCar = "(" Then If sCar = "'" Then iPos = InStr(sSign, "'", iInd + 1) Else iPos = InStr(sSign, ")", iInd + 1) Endif If iPos = 0 Then Break If bFirst Then bFirst = False Else sRes = sRes & sBold & "," & sNoBold & " " Endif sName = Mid$(sSign, iInd + 1, iPos - iInd - 1) If sName Begins "&" Then sRes &= "BYREF " & Mid$(sName, 2) Else sRes &= sName Endif sRes &= " " & sBold & "AS" & sNoBold & " " iInd = iPos bName = True Continue Endif If sCar = "<" Then iPos = InStr(sSign, ">", iInd + 1) If iPos = 0 Then Break iInd = iPos Continue Endif If sCar = "[" Then sRes = sRes & " " & sBold & "[" & sNoBold Continue Endif If sCar = "]" Then sRes = sRes & " " & sBold & "] " & sNoBold Continue Endif If Not bName Then If bFirst Then bFirst = False Else sRes = sRes & sBold & "," & sNoBold & " " Endif sRes = sRes & sBold & "? AS " & sNoBold bName = False Endif If iInd = Len(sSign) Then If sCar = "." Then sRes = sRes & ", ..." Continue Endif Endif If (sCar >= "A" And sCar <= "Z") Or sCar = "." Then iPos = InStr(sSign, ";", iInd) If iPos = 0 Then iPos = Len(sSign) + 1 sRes = sRes & Mid$(sSign, iInd, iPos - iInd) iInd = iPos Continue Endif sRes = sRes & GetType(sCar, bBalise) Loop If Name = "_get" Or Name = "_put" Then sRes = "[ " & sRes & " ]" Else sRes = "( " & sRes & " )" Endif If Type Then sRes = sRes & " AS " & GetType(Type, bBalise) Return sRes End Private Sub GetVirtualClass(sClass As String) As String Dim iPos As Integer Dim sVirtual As String If InStr("._", Left(sClass)) > 0 Then sClass = Mid$(sClass, 2) iPos = RInStr(Replace(sClass, "_", "."), ".") If iPos Then sVirtual = Left(sClass, iPos - 1) Endif Endif Return sVirtual End Private Function GetClassVariableName(sClass As String) As String Dim sRes As String If sClass Begins "*" And If Main.SubstClass Then If sClass = "*" Then sClass = Left(Main.SubstClass, -2) Else If sClass = "*[]" Then sClass = Main.SubstClass Endif Endif If Len(sClass) = 1 Then sClass = CSymbolInfo.GetNativeType(sClass) If InStr("aeiou", LCase(Left$(sClass))) Then sRes = "an" & sClass Else sRes = "a" & sClass Endif Else sClass = Replace(sClass, "[]", "Array") If Left$(sClass) = "." Then sClass = Mid$(sClass, 2) Else If Left(sClass) = "_" Then sClass = Replace(Mid$(sClass, 2), "_", ".") Endif sRes = "h" & sClass Endif Return sRes End Private Function Keyword(sWord As String, Optional iColor As Integer) As String If iColor Then Return "" & sWord & "" Else Return "" & sWord & "" Endif End Private Function GetSymbolName(sName As String) As String 'sName = Replace(sName, "_", "") sName = Replace(sName, ":", "") 'sName = Replace(sName, "$", "") Return sName End Private Function GetSyntaxType(sType As String) As String If Main.SubstClass And If sType Begins "*" Then If sType = "*" Then sType = Left(Main.SubstClass, -2) Else If sType = "*[]" sType = Main.SubstClass Endif Endif If Len(sType) = 1 Then sType = CSymbolInfo.GetNativeType(sType) Else If Right$(sType) = ";" Then sType = Left$(sType, -1) sType = Main.GetClassLinkFromName(sType) 'sType = "" & sType & "" Endif Return Keyword(sType, &H0080FF&) End Private Function GetSyntaxSignature() As String Dim sSign As String = Signature Dim iInd As Integer Dim sRes As String Dim sCar As String Dim iPos As Integer Dim bName As Boolean Dim bFirst As Boolean Dim iLen As Integer Dim hClass As CClassInfo Dim hSym As CSymbolInfo Dim sName As String If Name = "_new" Then hClass = CComponent.Get(Component)[Class] Do If Not hClass.Parent Then Break hClass = CComponent.Get(hClass.ParentComponent)[hClass.Parent] hSym = hClass.Symbols["_new"] If hSym Then 'sRes &= "MergeSignature: \"" & sSign & "\" \"" & hClass.Symbols["_new"].Signature & "\"
" sSign = MergeSignature(sSign, hClass.Symbols["_new"].Signature) Endif Loop 'sRes &= "\"" & sSign & "\"
" Endif bFirst = True Do iInd = iInd + 1 If iInd > Len(sSign) Then Break sCar = Mid$(sSign, iInd, 1) If sCar = "'" Or sCar = "(" Then If sCar = "'" Then iPos = InStr(sSign, "'", iInd + 1) Else iPos = InStr(sSign, ")", iInd + 1) Endif If iPos = 0 Then Break If bFirst Then bFirst = False Else sRes = sRes & Keyword(",") & " " Endif sName = Mid$(sSign, iInd + 1, iPos - iInd - 1) If sName Begins "&" Then sRes &= Keyword("ByRef") & " " sName = Mid$(sName, 2) Endif sRes = sRes & "" & sName & " " & Keyword("As") & " " iInd = iPos bName = True Continue Endif If sCar = "<" Then iPos = InStr(sSign, ">", iInd + 1) If iPos = 0 Then Break iInd = iPos Continue Endif If sCar = "[" Then sRes = RTrim(sRes) & " \\[ " Continue Endif If sCar = "]" Then sRes = RTrim(sRes) & " ]" Continue Endif If Not bName Then If bFirst Then bFirst = False Else sRes = sRes & ", " Endif sRes = sRes & "? " & Keyword("As") & " " bName = False Endif If sCar = "." Then sRes = sRes & ", ..." Continue Endif If sCar >= "A" And sCar <= "Z" Then iPos = InStr(sSign, ";", iInd) If iPos = 0 Then iPos = Len(sSign) + 1 sRes = sRes & GetSyntaxType(Mid$(sSign, iInd, iPos - iInd)) iInd = iPos Continue Endif sRes = sRes & GetSyntaxType(sCar) Loop 'sRes = "( " & sRes & " )" sRes = " " & sRes & " " Do iLen = Len(sRes) sRes = Replace(sRes, " ", " ") If Len(sRes) = iLen Then Break Loop Return sRes End Public Sub GetSyntax() As String[] Dim sSyntax As String Dim sName As String Dim sVar As String Dim sVirtual As String Dim sValue As String Dim iPos As Integer Dim sSign As String Dim sType As String Dim aResult As String[] Dim iValue As Integer Dim sKeyword As String sName = Class sVirtual = GetVirtualClass(sName) Select Case LCase(Name) Case "_get" If IsStatic() Then sName = Class If sVirtual Then sName = Mid$(sName, 2) Else sName = GetClassVariableName(Class) If sVirtual Then sVar = GetClassVariableName(sVirtual) sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(sVirtual) & "\n" Else sVar = sName sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" Endif Endif sValue = Replace(GetClassVariableName(Type), ".", "") If sValue = sVar Then sValue &= "2" sSyntax &= Keyword("Dim") & " " & sValue & " " & Keyword("As") & " " & GetSyntaxType(Type) & "\n" sSyntax &= sValue & " " & Keyword("=") & " " sSyntax &= sName & " " & Keyword("\\[") & GetSyntaxSignature() & Keyword("]") Case "_put" sType = CComponent.All[Component][Class].Symbols["_get"].Type If IsStatic() Then sName = Class If sVirtual Then sName = Mid$(sName, 2) Else sName = GetClassVariableName(Class) If sVirtual Then sVar = GetClassVariableName(sVirtual) sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(sVirtual) & "\n" Else sVar = sName sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" Endif Endif sValue = Replace(GetClassVariableName(sType), ".", "") If sValue = sVar Then sValue &= "2" sSyntax = sSyntax & Keyword("Dim") & " " & sValue & " " & Keyword("As") & " " & GetSyntaxType(sType) & "\n" sSign = GetSyntaxSignature() sKeyword = Keyword(",") iPos = InStr(sSign, sKeyword) If iPos Then sSign = Mid$(sSign, iPos + Len(sKeyword)) sSyntax = sSyntax & sName & " " & Keyword("\\[") & sSign & Keyword("]") sSyntax = sSyntax & " " & Keyword("=") & " " & sValue Case "_next" If IsStatic() Then sName = Class If sVirtual Then sName = Mid$(sName, 2) Else sName = GetClassVariableName(Class) If sVirtual Then sVar = GetClassVariableName(sVirtual) sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(sVirtual) & "\n" Else sVar = sName sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" Endif Endif If Type Then sValue = Replace(GetClassVariableName(Type), ".", "") If sValue = sVar Then sValue &= "2" sSyntax = sSyntax & Keyword("Dim") & " " & sValue & " " & Keyword("As") & " " & GetSyntaxType(Type) & "\n" sSyntax = sSyntax & Keyword("For Each") & " " & sValue & " " & Keyword("In") & " " & sName Else sSyntax = sSyntax & Keyword("For Each") & " " & sName Endif sSyntax &= "
  ...
" & Keyword("Next") Case "_new" sName = GetClassVariableName(Class) sSyntax &= Keyword("Dim") & " " & sName & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" sSyntax &= sName & " " & Keyword("=") & " " & Keyword("New") & " " & GetSyntaxType(Class) sSyntax &= " " & Keyword("(") & GetSyntaxSignature() & Keyword(")") If CComponent.Get(Component)[Class].HasEvents() Then sSyntax &= " \\[ " & Keyword("As") & " \"EventName\" ]" Endif Case Else If IsStatic() And Kind <> "C" Then sSyntax = Keyword("Static") & " " Endif Select Case LCase(Kind) Case "p", "v" sSyntax = sSyntax & Keyword("Property") & " " Case "r" sSyntax = sSyntax & Keyword("Property Read") & " " Case "c" sSyntax = sSyntax & Keyword("Const") & " " Case ":" sSyntax = sSyntax & Keyword("Event") & " " Case "m" If Type Then sSyntax = sSyntax & Keyword("Function") & " " Else sSyntax = sSyntax & Keyword("Sub") & " " Endif End Select If Name = "_call" Then If sVirtual Then sSyntax &= "" & Replace(Mid$(Class, 2), "_", ".") & "" Else sSyntax &= "" & GetSymbolName(Class) & "" Endif Else sSyntax &= "" & GetSymbolName(Name) & "" Endif If InStr(":me", LCase(Kind)) Then sSyntax = sSyntax & " " & Keyword("(") & GetSyntaxSignature() & Keyword(")") Endif If Type Then sSyntax = sSyntax & " " & Keyword("As") & " " & GetSyntaxType(Type) If Kind = "C" Then sSyntax = sSyntax & " " & Keyword("=") & " " Select Case Type Case "s" sSyntax = sSyntax & Keyword(Replace(Quote(Value), "\\", "\\\\"), &HFF0000&) Case "b" If Left(Value) = "T" Then sSyntax &= Keyword("True") Else sSyntax &= Keyword("False") Endif Case "i" sSyntax = sSyntax & Keyword(Value, &HFF0000&) iValue = CInt(Value) If iValue > 10 Then If iValue >= &H8000& And If iValue <= &HFFFF& Then sSyntax &= " " & Keyword("\\' &H" & Hex$(CInt(Value)) & "&", &H808080&) Else sSyntax &= " " & Keyword("\\' &H" & Hex$(CInt(Value)), &H808080&) Endif Endif Case Else sSyntax = sSyntax & Value End Select Endif End Select aResult = ["[[ syntax"] aResult.Insert(Split(Replace(sSyntax, "\n", "\\\n"), "\n")) aResult.Add("]]") Return aResult End Public Sub GetDescription() As String Dim sPath As String Dim aData As String[] Dim iPos As Integer Dim sData As String Dim sDesc As String Dim aDefaultHelp As String[] sPath = "/comp" &/ LCase(Component &/ Class &/ Replace(Name, ":", ".")) TRY_AGAIN: aDefaultHelp = Null aData = Null sPath = Main.GetPagePathFrom(Main.SolvePath(sPath)) If Exist(sPath) Then aData = Split(File.Load(sPath), "\n") If Not aData Or If aData.Count = 0 Then GoSub GET_DEFAULT_HELP If aDefaultHelp.Count = 1 And If aDefaultHelp[0] Begins "-->" Then sPath = Main.MakeAbsolute(Trim(Mid$(aDefaultHelp[0], 4)), sPath) Goto TRY_AGAIN Endif aData = ["@{help}"] Endif While iPos < aData.Count sData = aData[iPos] If Trim(sData) = "@{help}" Then aData.Remove(iPos) 'Return "« " & Main.GetDefaultHelp(Me.Component, Me.Class, Me.Name) & " »" GoSub GET_DEFAULT_HELP aData.Insert(aDefaultHelp, iPos) Continue Endif If sData Then If IsLetter(Left(sData)) Then sData = Replace(sData, "[../", "[./") sData = Replace(sData, "[./../", "[../") sDesc &= sData & "\n" Endif Else If sDesc Then Break Endif Inc iPos Wend Return sDesc GET_DEFAULT_HELP: If Not aDefaultHelp Then aDefaultHelp = Split(Main.GetDefaultHelp(Me.Component, Me.Class, Me.Name), "\n") Return End Private Sub SplitSignature(sSign As String) As String[] Dim iPos As Integer Dim aSign As New String[2] iPos = InStr(sSign, "[") If iPos Then aSign[0] = Left(sSign, iPos - 1) aSign[1] = Mid$(sSign, iPos + 1, -1) Else aSign[0] = sSign Endif Return aSign End Private Sub MergeSignature(sSign As String, sParentSign As String) As String Dim aParentSign As String[] Dim aSign As String[] aSign = SplitSignature(sSign) aParentSign = SplitSignature(sParentSign) sSign = aParentSign[0] & aSign[0] & "[" & aParentSign[1] & aSign[1] & "]" If sSign Ends "[]" Then sSign = Left(sSign, -2) Return sSign End gambas-3.16.3/app/src/gambas-wiki/.src/CUser.class000066400000000000000000000035211411575327000215230ustar00rootroot00000000000000' Gambas class file Public FirstName As String Public LastName As String Public Login As String Public Password As String Public Email As String Public Confirm As String Static Private $hLock As File Public Sub _compare(hUser As CUser) As Integer Return Comp(Login, hUser.Login) End Static Public Sub Load() As CUser[] Dim sUser As String Dim aUser As String[] Dim hUser As CUser Dim aResult As New CUser[] If Exist(Main.Root &/ "passwd") Then For Each sUser In Split(File.Load(Main.Root &/ "passwd"), "\n", "", True) aUser = Split(sUser, "\t") aUser.Resize(6) hUser = New CUser hUser.Login = aUser[0] hUser.Password = aUser[1] hUser.FirstName = aUser[2] hUser.LastName = aUser[3] hUser.Email = aUser[4] hUser.Confirm = aUser[5] aResult.Add(hUser) Next Endif Return aResult End Static Public Sub Save(aUser As CUser[]) Dim hFile As File Dim sTemp As String Dim hUser As CUser sTemp = Temp$() hFile = Open sTemp For Create For Each hUser In aUser.Sort() Print #hFile, hUser.Login, hUser.Password, hUser.FirstName, hUser.LastName, hUser.Email, hUser.Confirm Next Close #hFile ' Add Lock ... Wait Try Kill Main.Root &/ "passwd" Copy sTemp To Main.Root &/ "passwd" End Static Public Sub Find(aUser As CUser[], sLogin As String) As CUser Dim hUser As CUser For Each hUser In aUser If hUser.Login = sLogin Then Return hUser Next End Static Public Sub FindByEmail(aUser As CUser[], sEmail As String) As CUser Dim hUser As CUser For Each hUser In aUser If hUser.Email = sEmail Then Return hUser Next End Static Public Sub Lock() As Boolean Try $hLock = Lock Main.Root &/ "passwd.lock" Wait 5 If Error Then Return True End Static Public Sub Unlock() Unlock $hLock End gambas-3.16.3/app/src/gambas-wiki/.src/Confirm.class000066400000000000000000000007071411575327000221020ustar00rootroot00000000000000' Gambas class file Private Sub _Confirm() As Boolean Dim aUser As CUser[] Dim hUser As CUser If Not Request["key"] Then Return If Not Request["login"] Then Return aUser = CUser.Load() hUser = CUser.Find(aUser, Request["login"]) If Not hUser Then Return If hUser.Confirm <> Request["key"] Then Return hUser.Confirm = "" CUser.Save(aUser) Main.Log("Registration confirmed", hUser.Login) Return True End gambas-3.16.3/app/src/gambas-wiki/.src/Confirm.webpage000066400000000000000000000016141411575327000224050ustar00rootroot00000000000000 Gambas Documentation - Confirm
Confirm registration

Confirm registration

<%If _Confirm() Then%>

Congratulations! Your account is now activated.

Return to the home page to login.

<%Else%>
Registration has failed!
<%Endif%>
gambas-3.16.3/app/src/gambas-wiki/.src/HttpStat.module000066400000000000000000000053671411575327000224470ustar00rootroot00000000000000' Gambas module file Class Image Class Color Class Cairo Public Sub Render() Dim dDate As Date Dim aStat As Short[] Dim hImage As Image Dim I As Integer Dim H As Integer Dim hFile As File Dim sFile As String Dim sDate As String Component.Load("gb.image") Component.Load("gb.image.io") Component.Load("gb.cairo") sDate = Request["date"] If sDate Then Try dDate = Date(CInt(Mid$(sDate, 5, 4)), CInt(Mid$(sDate, 3, 2)), CInt(Mid$(sDate, 1, 2))) If IsNull(dDate) Then dDate = Date() hImage = New Image(1440, 256, Color.White) Cairo.Begin(hImage) Cairo.AntiAlias = Cairo.AntiAliasNone Cairo.LineWidth = 1 If Year(dDate) = Year(Now) Then aStat = New Short[1440] Try hFile = Open "/var/log/thttpd/stat.log" For Read If hFile Then Seek #hFile, 1440 * DateDiff(Date(Year(dDate), 1, 1), dDate, gb.Day) * SizeOf(gb.Short) aStat.Read(hFile) Close #hFile For I = 0 To aStat.Max H = Min(256, (aStat[I] * 5) \ 60) If H > 0 Then hImage.FillRect(I, 256 - H, 1, H, &HA0D0FF&) 'DH = aStat[I] Mod 10 'If DH > 0 Then hImage[I, 127 - H] = Color.SetAlpha(&HA0D0FF&, Max(0, 255 - DH * 10)) Next Endif Cairo.Source = Cairo.ColorPattern(Color.SetAlpha(Color.Black, &HE0)) I = hImage.H While I > 0 Cairo.MoveTo(0, I) Cairo.LineTo(1440, I) Cairo.Stroke I -= 10 Wend Cairo.Source = Cairo.ColorPattern(Color.SetAlpha(Color.Black, &H80)) Cairo.Font.Size = 16 For I = 0 To 23 Cairo.MoveTo(I * 60 + 16, 20) Cairo.DrawText(Format(I, "00")) Next Cairo.Source = Cairo.ColorPattern(Color.SetAlpha(Color.Black, &H40)) Cairo.Font.Size = 8 I = hImage.H H = 0 While H <= 4 If H Then Cairo.MoveTo(4, I + 8) Cairo.DrawText(CStr(H) & "0 req./s") Endif I -= 50 Inc H Wend Cairo.MoveTo(4, hImage.H - 8) Cairo.DrawText(Format$(dDate, "d mmm yyyy")) Cairo.Source = Cairo.ColorPattern(Color.SetAlpha(Color.Black, &H80)) I = hImage.H While I > 20 Cairo.MoveTo(0, I) Cairo.LineTo(1440, I) Cairo.Stroke I -= 50 Wend For I = 0 To 23 Cairo.MoveTo(I * 60, 0) Cairo.LineTo(I * 60, hImage.H) Cairo.Stroke Next Cairo.Rectangle(1, 1, hImage.W - 1, hImage.H - 1) Cairo.Stroke Else Cairo.MoveTo(10, 20) Cairo.DrawText("Seule l'année " & CStr(Year(Now)) & " est archivée.") Cairo.Source = Cairo.ColorPattern(Color.SetAlpha(Color.Black, &H80)) Cairo.Rectangle(1, 1, hImage.W - 1, hImage.H - 1) Cairo.Stroke Endif Cairo.End sFile = File.SetExt(Temp$("stat"), "png") hImage.Save(sFile, 9) Response.SendFile(sFile, "image/png") End gambas-3.16.3/app/src/gambas-wiki/.src/Main.module000066400000000000000000001225171411575327000215550ustar00rootroot00000000000000' Gambas module file Public Const DEFAULT_LANG As String = "en" Public Languages As String[] = [DEFAULT_LANG, "fr", "de", "es", "it", "nl", "pl", "pt", "pt_BR", "mk", "sq", "ca", "hu", "cs", "tr", "ar", "fa", "id", "vi", "ko", "ja", "ru", "zh", "zh_TW", "eo"] Public SystemLanguages As String[] = ["C", "fr_FR.UTF-8", "de_DE.UTF-8", "es_ES.UTF-8", "it_IT.UTF-8", "nl_NL.UTF-8", "pl_PL.UTF-8", "pt_PT.UTF-8", "pt_BR.UTF-8", "mk_MK.UTF-8", "sq_AL.UTF-8", "ca_ES.UTF-8", "hu_HU.UTF-8", "cs_CZ.UTF-8", "tr_TR.UTF-8", "ar_AE.UTF-8", "fa_IR.UTF-8", "id_ID.UTF-8", "vi_VN.UTF-8", "ko_KR.UTF-8", "ja_JP.UTF-8", "ru_RU.UTF-8", "zh_CN.UTF-8", "zh_TW.UTF-8", "eo.UTF-8"] Public Root As String = User.Home &/ "wiki/gambas" Public InfoDir As String Public Lang As String Public Path As String Public Exist As Boolean Public Edit As Boolean Public Image As Boolean Public Preview As Boolean Public LinkSuffix As String Public History As Integer Public UserName As String Public FullName As String Public (Component) As String Public (Class) As String Public Symbol As String Public SubstClass As String Private $aDeveloperTable As String[] Private $aTranslatorTable As String[] Private $bInitAuthor As Boolean Private $bGitLabCI As Boolean Private $aGitLabCI As String[] Private Sub AddLinkSuffix(sReq As String) If LinkSuffix Then LinkSuffix &= "&" Else LinkSuffix = "?" Endif LinkSuffix &= sReq End Public Sub SetLanguage(sLang As String) Dim iLang As Integer Lang = sLang If Not Lang Then Lang = DEFAULT_LANG iLang = Languages.Find(Lang) If iLang >= 0 Then System.Language = SystemLanguages[iLang] Else Lang = DEFAULT_LANG Endif If Lang <> DEFAULT_LANG Then AddLinkSuffix("l=" & sLang) End Public Sub GetPagePath(Optional bSuffix As Boolean) As String Dim sPath As String sPath = Root &/ "data" &/ Lang &/ Path &/ "~page" If bSuffix Then sPath &= "." & Format(Now, "yyyymmddhhnnssuu") & "." & UserName Return sPath End Public Sub GetPagePathFrom(sPath As String, Optional sLang As String) As String If Not sLang Then sLang = Lang Return Root &/ "data" &/ sLang &/ sPath &/ "~page" End Public Sub MakeDir(sDir As String) Dim sPath As String Dim sElt As String For Each sElt In Split(sDir, "/") sPath &/= sElt 'Shell "echo MKDIR: " & Shell$(sPath) & " >> /tmp/session.log" Wait Try Mkdir "/" & sPath Next 'If Not Exist(sDir) Or If Not IsDir(sDir) Then Return True End Private Sub InitWiki() Mkdir Root &/ "data" Mkdir Root &/ "data/en" 'Copy "passwd" To Root &/ "passwd" Copy "page" To GetPagePath() Copy "page" To GetPagePath(True) End Private Sub LockPage() Dim hLock As File Try hLock = Lock File.Dir(GetPagePath()) &/ "~lock" Wait 2 If Error Then Error.Raise("Unable to lock the current page") End Private Sub Redirect(Optional sMore As String) Dim sUrl As String sUrl = Application.Root &/ Request.Path & LinkSuffix If sMore Then If LinkSuffix Then sUrl &= "&" & sMore Else sUrl &= "?" & sMore Endif Endif Response.Redirect(sUrl) End Public Sub Message(sMsg As String) Session["message"] = sMsg End Public Sub Warning(sMsg As String) Session["warning"] = sMsg End ' Private Sub CheckLogin(sLogin As String) As Boolean ' ' Dim I As Integer ' Dim sCar As String ' ' If Len(sLogin) < 2 Or If Len(sLogin) > 16 Then ' Warning("The login must have at least than 2 characters and at most 16 characters.") ' Return True ' Endif ' ' If Not IsLetter(Left(sLogin)) Then ' Warning("The login must start with a letter.") ' Return True ' Endif ' ' For I = 2 To Len(sLogin) ' sCar = Mid$(sLogin, I, 1) ' If IsLetter(sCar) Or If IsDigit(sCar) Then Continue ' Warning("The login can only include digits or letters") ' Return True ' Next ' ' End ' ' Private Sub CheckPassword(sPassword As String) As Boolean ' ' If Len(sPassword) < 4 Or If Len(sPassword) > 32 Then ' Warning("The password must have at least 4 characters and at most 32 characters.") ' Return True ' Endif ' ' End ' ' Private Sub CheckEmail(sEmail As String) As Boolean ' ' If sEmail Like "*@*.*" Then ' If InStr(sEMail, "@", InStr(sEmail, "@") + 1) = 0 Then ' Return ' Endif ' Endif ' ' Warning("Invalid e-mail address.") ' Return True ' ' End ' Private Sub RegisterUser() As Boolean ' ' Dim sFirstName As String ' Dim sLastName As String ' Dim sLogin As String ' Dim sPassword As String ' Dim sEmail2 As String ' Dim sEmail As String ' Dim sPassword2 As String ' Dim sKey As String ' Dim I As Integer ' Dim aUser As CUser[] ' Dim hUser As CUser ' Dim hSmtpClient As SmtpClient ' Dim iResult As Integer ' Dim iSeed As Integer ' ' If CUser.Lock() Then ' Warning("Database is locked. Try again later") ' Return ' Endif ' ' sLogin = Trim(Request["login"]) ' If Not sLogin Then ' Warning("Please enter your login.") ' Return ' Endif ' ' sPassword = Trim(Request["password"]) ' If Not sPassword Then ' Warning("Please enter your password.") ' Return ' Endif ' ' sPassword2 = Trim(Request["cpassword"]) ' If Not sPassword2 Then ' Warning("Please enter the confirmation password.") ' Return ' Endif ' ' sFirstName = Trim(Request["fname"]) ' If Not sFirstName Then ' Warning("Please enter your first name.") ' Return ' Endif ' ' sLastName = Trim(Request["lname"]) ' If Not sLastName Then ' Warning("Please enter your last name.") ' Return ' Endif ' ' sEmail = Trim(Request["email"]) ' If Not sEmail Then ' Warning("Please enter your e-mail.") ' Return ' Endif ' ' sEmail2 = Trim(Request["cemail"]) ' If Not sEmail2 Then ' Warning("Please enter the confirmation e-mail.") ' Return ' Endif ' ' If CheckLogin(sLogin) Then Return ' ' If CheckPassword(sPassword) Then Return ' ' If sPassword2 <> sPassword Then ' Warning("The confirmation password does not match.") ' Return ' Endif ' ' If CheckEmail(sEmail) Then Return ' ' If sEmail2 <> sEmail2 Then ' Warning("The confirmation e-mail does not match.") ' Return ' Endif ' ' aUser = CUser.Load() ' ' If CUser.Find(aUser, sLogin) Then ' Warning("This login is already in use.") ' Return ' Endif ' ' If CUser.FindByEmail(aUser, sEmail) Then ' Warning("This e-mail is already in use.") ' Return ' Endif ' ' Try iResult = CInt(Request["result"]) ' Try iSeed = CInt(Request["seed"]) ' Randomize iSeed ' iSeed = Int(Rnd(0, 16777216)) ' If iSeed <> iResult Then ' Warning("The result is incorrect.") ' Return ' Endif ' ' For I = 1 To 6 ' sKey &= Hex$(Int(Rnd(65536)), 4) ' Next ' ' hSmtpClient = New SmtpClient ' hSmtpClient.From = "noreply@gambaswiki.org" ' hSmtpClient.To.Add(sFirstName & " " & sLastName & " <" & sEmail & ">") ' hSmtpClient.Host = "smtp.hosting.blueleader.net" ' hSmtpClient.Subject = "Gambas wiki registration confirmation" ' hSmtpClient.Body = "Hi,\n\n" ' "You have requested a Gambas wiki account.\n" ' "Please click on the following link to confirm your registration:\n\n" ' "http://" & Application.Host &/ Application.Root &/ "~confirm?key=" & URL.Encode(sKey) & "&login=" & URL.Encode(sLogin) & "\n\n" ' ' Try hSmtpClient.Send ' If Error Then ' Warning("Cannot send confirmation mail:" & " " & Error.Text) ' Return ' Endif ' ' hUser = New CUser ' hUser.Login = sLogin ' hUser.Password = sPassword ' hUser.FirstName = sFirstName ' hUser.LastName = sLastName ' hUser.Email = sEmail ' hUser.Confirm = sKey ' aUser.Add(hUser) ' CUser.Save(aUser) ' ' Message("You have been successfully registered! A confirmation mail has been sent...") ' ' CUser.Unlock ' ' Main.Log("Registration requested", sLogin) ' ' Response.Redirect(Application.Root &/ Request.Path) ' Return True ' ' End ' Public Sub AddCacheHeaders(Optional dLast As Date) 'If InternetExplorer Then Return If Not dLast Then Try dLast = Stat(Args[0]).LastModified If Error Then dLast = Now Endif 'Response.AddHeader("Expires", CGI.FormatDate(DateAdd(Now, gb.Month, 2))) Response.AddHeader("Cache-Control", "public,max-age=86400,must-revalidate") Response.AddHeader("Last-Modified", CGI.FormatDate(dLast)) End Private Sub LoadUser(sUser As String) As Collection Dim sPath As String Dim cUser As Collection Dim sLine As String Dim iPos As Integer Dim sField As String Dim sValue As String sPath = User.Home &/ "guygle/data/@/.user" &/ UCase(sUser) If Not Exist(sPath) Then Return cUser = New Collection cUser["activé"] = "Oui" For Each sLine In Split(File.Load(sPath), "\n") iPos = InStr(sLine, ": ") If iPos = 0 Then Continue sField = Left(sLine, iPos - 1) sValue = Mid$(sLine, iPos + 2) If sField = "mot de passe" Then cUser["password"] = sValue Else If sField = "activé" Then cUser["activé"] = sValue <> "Non" Else cUser[sField] = sValue Endif Next Return cUser End Private Sub ConvertExample() Dim sDir As String Dim sFile As String Dim sName As String Dim sOldData As String Dim sData As String Dim sSuffix As String sDir = Root &/ "data" sSuffix = "." & Format(Now, "yyyymmddhhnnssuu") & ".admin" For Each sFile In RDir(sDir) sName = File.Name(sFile) If sName <> "~page" Then Continue sOldData = File.Load(sDir &/ sFile) sData = Wiki.RewriteExample(sOldData) If sData = sOldData Then Continue Print File.Dir(sFile) File.Save(sDir &/ sFile, sData) Copy sDir &/ sFile To sDir &/ sFile & sSuffix Next End Public Sub Main() Dim sMsg As String Dim aPage As String[] Dim sDir As String Dim aPath As String[] Dim sLang As String Dim sData As String Dim sPath As String Dim sText As String Dim cUser As Collection Dim sFile As String Dim sSearch As String Dim sReplace As String ' Print "data:image/png;base64,"; URL.Encode(Base64$(File.Load(".public/critical.png"))); ' Quit ' If Application.Host = "gambasfarm.org" Then ' Response.Redirect("http://gambasfarm.org/farm") ' Return ' Endif 'CGI["SCRIPT_NAME"] = "/wiki" ' Fix web server bug Root = User.Home &/ "wiki/gambas" InfoDir = User.Home &/ "wiki/info" If Not Exist(InfoDir) Then InfoDir = "" Select Case Args[1] ' Case "-restore" ' If IsDir(Root) Then ' Shell "rm -rf " & Shell$(Root & "~") & " >/dev/null 2>&1" Wait ' Move Root To Root & "~" ' Mkdir Root ' 'Copy "passwd" To Root &/ "passwd" ' Endif ' OldWiki.Restore ' Return Case "-convert-example" ConvertExample Return Case "-offline" Shell "cd " & Shell$(File.Dir(Root)) & " && tar cfj gambas-wiki.tar.bz2 --exclude=passwd\\* --exclude=\\*.log --exclude=~page.\\* --exclude=~lock gambas && mv gambas-wiki.tar.bz2 ~/cgi-bin" Wait If Process.LastValue = 0 Then File.Save("~/cgi-bin/timestamp", Format(Now, "yyyymmdd")) Return Case "-find" sSearch = Args[2] If Not sSearch Then Quit 1 For Each sFile In RDir(Root &/ "data") sPath = Root &/ "data" &/ sFile If IsDir(sPath) Then Continue sData = File.Load(sPath) If InStr(sData, sSearch) Then Print sFile Next Return Case "-replace" sSearch = Args[2] sReplace = Args[3] If Not sSearch Then Quit 1 For Each sFile In RDir(Root &/ "data") sPath = Root &/ "data" &/ sFile If IsDir(sPath) Then Continue sData = File.Load(sPath) If InStr(sData, sSearch) Then sData = Replace(sData, sSearch, sReplace) File.Save(sPath, sData) Print sFile Endif Next Return Case "-package-table" Print GetPackageTable().Join("\n") CComponent.Exit Return End Select Try Mkdir Root ' All pages are stored in a "data" directory stored in the root directory. ' If the "data" directory does not exist, the wiki is initialized with a default root page. If Not Exist(Root &/ "data") Then InitWiki Response.Redirect(Application.Root) Return Endif ' The url path is directly converted to a relative directory path inside the "data" directory located in the root directory. ' The page contents is stored inside a "~page" file located in that directory. ' Consequently, no "~" character is allowed in the url path. ' Each page modification is archived in a "~page.." file, allowing changes to be undone. Path = Request.Path If Right(Path) = "/" Then Path = Left(Path, -1) ' Handle resource files: images, style sheet... If File.Name(Path) = "style.css" Then Response.ContentType = "text/css" AddCacheHeaders Response.Begin Print Replace(File.Load(".public/style.css"), "<%/%>", Application.Root); Response.End Return Else If File.Name(Path) = "playground.js" Then SetLanguage(Request["l"]) SendPlayground Return Else If Path And If Exist(".public" &/ Path) Then AddCacheHeaders Response.SendFile(".public" &/ Path) Return Endif If Request.Exist("lang") Then sLang = Request["lang"] If sLang = DEFAULT_LANG Then sLang = "" If sLang <> Request["l"] Then If sLang Then Redirect("l=" & sLang) Else Redirect Endif Endif Endif SetLanguage(Request["l"]) If Request.Exist("v") Or If Request.Exist("nh") Then AddLinkSuffix("nh") If Request.Exist("nl") Then AddLinkSuffix("nl") If Request.Exist("w") Then AddLinkSuffix("w") ' If Path = "/~register" Then ' If Request.Exist("cancel") Then ' Response.Redirect(Application.Root) ' Return ' Else If Request.Exist("confirm") Then ' If RegisterUser() Then Return ' Endif ' Register.Render ' If Session.Id And If Session["login"] = "" Then Session.Abandon ' Return ' Endif If Path = "/~stat" Then HttpStat.Render Return Else If Path Begins "/~dump" Then CGI.Dump Return Else If Path = "/~babelmark" Then sText = Request["text"] If Len(sText) > 1000 Then Response.Status = "500" Response.Begin Response.End Else Response.ContentType = "text/plain;charset=utf-8" Response.Begin Print "{\"name\":\"Gambas\",\"version\":\""; System.FullVersion; "\",\"html\":"; Quote(Markdown.ToHTML(sText)); "}" Response.End Endif Return Endif ' Reject pages whose url includes a "~" character. If InStr(Path, "~") Then Response.Status = "404 Not Found" Response.Begin Print "

404 Not Found

" Response.End Return Endif If Request.Exist("logout") Then Session.CookiePath = "/" Session.Abandon Response.Redirect("/wiki" &/ Request.Path & LinkSuffix) Return ' Else If Request.Exist("register") Then ' ' Response.Redirect(Application.Root &/ "~register" & Main.LinkSuffix) ' Return ' Else If Request["login"] And If Request["password"] And If Request["ok"] Then Session.Abandon cUser = LoadUser(Request["login"]) If cUser And If cUser["password"] = Request["password"] And If cUser["activé"] Then Session.CookiePath = "/" Session["login"] = LCase(Request["login"]) Session["full-name"] = Trim(cUser["prénom"] & " " & cUser["nom"]) Endif Endif UserName = Session["login"] FullName = Session["full-name"] If Not FullName Then FullName = UserName {Exist} = Main.ExistPage(Path) Image = IsImage(Path) Try History = CInt(Request["h"]) ' Analyze component path If Path Begins "/comp/gb" Then CComponent.Init aPath = Split(Path, "/", "", True) Component = aPath[1] If aPath.Count >= 3 Then {Class} = aPath[2] If aPath.Count >= 4 Then Symbol = aPath[3] If Left(Symbol) = "." Then Symbol = ":" & Mid$(Symbol, 2) Endif Endif If Session.Id Then If Application.Root <> "/edit" Then Response.Redirect("/edit" &/ Request.Path & LinkSuffix) Return Endif If Request.Exist("save") Then If Request.Exist("page") Then MakeDir(File.Dir(GetPagePath())) LockPage sData = Replace(Request["page"], "\r", "") sPath = GetPagePath() If Not Exist(sPath) Or If sData <> File.Load(sPath) Then File.Save(sPath, sData) Copy sPath To GetPagePath(True) Main.Log(Main.Path & " (" & Main.Lang & ")") Endif Redirect Return Else If Request.Exist("file") And If Image Then sPath = GetPagePath() MakeDir(File.Dir(sPath)) LockPage Try Kill sPath Copy Request.Files["file"] To sPath Copy sPath To GetPagePath(True) Main.Log(Main.Path & " (" & Main.Lang & ")") Redirect Return Endif Else If Request.Exist("historic") Then Redirect("h=1") Else If Request.Exist("preview") Then Preview = True Else If Request.Exist("delete") Then If {Exist} Then sPath = GetPagePath() LockPage File.Save(sPath, "") Copy sPath To GetPagePath(True) Main.Log("Delete " & Main.Path & " (" & Main.Lang & ")") Endif Redirect Return Else If Request.Exist("undo") Then sPath = GetPagePath() sDir = File.Dir(sPath) Try aPage = Dir(sDir, "~page.*").Sort(gb.Descent) If aPage And If aPage.Count >= 2 Then LockPage Try Kill sDir &/ aPage[0] Try Kill sPath Try Copy sDir &/ aPage[1] To sPath Main.Log("Undo " & Main.Path & " (" & Main.Lang & ")") Endif Redirect Return Else If Request.Exist("create") Or If Request.Exist("edit") Then Edit = True Else If Request.Exist("prev") Then History = Max(0, History + 1) Redirect("h=" & CInt(History)) Else If Request.Exist("next") Then History = Max(0, History - 1) If History Then Redirect("h=" & CInt(History)) Else Redirect Endif Else If Request.Exist("exit") Then Redirect() Endif If Request["search"] Then SearchWiki(Request["search"]) Endif Endif If Image Then If Not Session.Id Or If Request.Exist("v") Then Response.SendFile(GetPagePath(), GetContentTypeFrom(Path)) Return Endif Endif Wiki.Render CComponent.Exit CAuthor.Exit Catch sMsg = Error.Where & ": " & Error.Text & "\n" & Error.Backtrace.Join("\n") Response.Begin Response.ContentType = "text/plain;charset=utf-8" Print "
"; sMsg; "
" Response.End End Public Sub SolvePath(sPath As String, Optional bFollowRedirect As Boolean) As String Dim sData As String If sPath Not Begins "/" And If sPath Not Begins "." Then sPath = "/" & sPath Do If Not Main.ExistPage(sPath) Then Return sPath sData = File.Load(Main.GetPagePathFrom(sPath)) If sData Begins "-->" Then sPath = MakeAbsolute(Trim$(Mid$(sData, 4)), sPath) Else If bFollowRedirect And If sData Begins "==>" Then sPath = MakeAbsolute(Trim$(Mid$(sData, 4)), sPath) Else Return sPath Endif Loop End Public Sub GetPageTitle(sPath As String, Optional bForceReadFile As Boolean) As String Dim sFile As String Dim iPos As Integer Dim bComp As Boolean Dim sRealPath As String sPath = SolvePath(sPath, IsNull(Session.Id)) bComp = sPath Begins "/comp/" If bComp And If Not bForceReadFile Then If sPath Like "/comp/*/*/?*" Then Return GetSymbolTitle(sPath) If sPath Like "/comp/*/?*" Then Return GetClassTitle(sPath) Endif sRealPath = Root &/ "data" &/ Lang &/ sPath &/ "~page" If Not Exist(sRealPath) Then sRealPath = Root &/ "data" &/ DEFAULT_LANG &/ sPath &/ "~page" If Not Exist(sRealPath) Then Return sFile = LTrim(File.Load(sRealPath)) If sFile Begins "# " Then iPos = InStr(sFile, "\n") If iPos = 0 Then iPos = Len(sFile) + 1 sFile = Trim(Mid$(sFile, 3, iPos - 3)) If Not bComp Then sFile = String.UCaseFirst(sFile) Return sFile Endif End Public Sub IsImage(sPath As String) As Boolean Dim sExt As String sExt = File.Ext(sPath) Return ["png", "jpg", "jpeg", "gif", "webm"].Exist(sExt) End Public Sub GetContentTypeFrom(sPath As String) As String Select Case Lower(File.Ext(sPath)) Case "css" Return "text/css" Case "jpg", "jpeg", "jpe", "thumb" Return "image/jpeg" Case "png" Return "image/png" Case "gif" Return "image/gif" Case "tiff", "tif" Return "image/tiff" Case "webm" Return "video/webm" Case "odt" Return "application/vnd.oasis.opendocument.text" Case "doc" Return "application/msword" Case "ods" Return "application/vnd.oasis.opendocument.spreadsheet" Case "xls" Return "application/msexcel" Case "pdf" Return "application/pdf" Case "zip" Return "application/zip" Case "html", "htm" Return "text/html" Case "txt" Return "text/plain" Case "avi" Return "video/x-msvideo" Case "mpg", "mpeg" Return "video/mpeg" Case "ps" Return "application/postscript" Case "dwg" Return "application/acad" Case "wav" Return "audio/x-wav" Case "ogg" Return "application/ogg" Case "jar" Return "application/x-jar" 'Case "xml", "kml" ' Return "text/plain" Case Else Return "application/octet-stream" End Select End Public Sub ExistPage(sPath As String, Optional sLang As String) As Boolean Dim iSize As Long Try iSize = Stat(GetPagePathFrom(sPath, sLang)).Size Return iSize > 0 End Public Function GetSymbolLink(hClass As CClassInfo, sSym As String, Optional sMyTitle As String, Optional sMyStaticTitle As String) As String Dim hSym As CSymbolInfo Dim sRes As String Dim sComp As String Dim sPath As String hSym = hClass.Symbols[sSym] If Not hSym Then Return ' If $cCompRedirect Then ' sComp = hSym.Component ' While $cCompRedirect.Exist(sComp) ' sComp = $cCompRedirect[sComp] ' Wend ' Endif If Not sComp Then sComp = hSym.Component If hSym.IsStatic() And If sMyStaticTitle Then sMyTitle = sMyStaticTitle 'sPath = GetSymbolPath(hSym) sPath = "/comp" &/ LCase(sComp &/ hSym.Class &/ Replace(hSym.Name, ":", ".")) If sMyTitle Then sRes &= "[" & sMyTitle & "] (" & sPath & ")" Else sRes &= "[" & sPath & "]" Endif 'If hSym.IsStatic() Then sRes &= "**" Return sRes End Public Function GetClassLinkFromName(sClass As String) As String Dim sComp As String = Main.Component If IsNull(CComponent.Get(sComp)[sClass]) Then sComp = CComponent.Classes[sClass].Component Endif Return "" & Html(sClass) & "" Catch Return sClass End Public Sub GetStat() As String[] Dim nClass As Integer Dim nSym As Integer Dim sFile As String Dim aFile As String[] Dim iCpt, iComment As Integer Dim sLine As String Dim aIgnore As String[] Dim sDir As String If Main.InfoDir Then sDir = Main.InfoDir Else sDir = System.Path &/ "share/gambas" & System.Version &/ "info" Endif aIgnore = GetIgnore() For Each sFile In Dir(sDir, "*.info") If aIgnore.Find(File.BaseName(sFile)) >= 0 Then Continue aFile = Split(File.Load(sDir &/ sFile), "\n", "", True) iCpt = 0 iComment = 0 For Each sLine In aFile If Left(sLine) = "#" Then Inc iCpt If Left(sLine) = "'" Then Inc iComment Next nClass += iCpt nSym += ((aFile.Count - iComment) - iCpt * 3) / 4 Next Return [Subst(("There are &1 classes and &2 symbols in all Gambas components."), nClass, nSym)] Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Public Sub GetClassTitle(Optional sPath As String) As String Dim hClass As CClassInfo Dim sComponent As String Dim sClass As String Dim aPath As String[] Dim hComp As CComponent If Not sPath Then sComponent = Main.Component sClass = Main.Class Else aPath = Split(sPath, "/", "", True) sComponent = aPath[1] sClass = aPath[2] Endif Try hComp = CComponent.Get(sComponent) Try hClass = hComp[sClass] If hClass Then If sPath Then Return hClass.Name Return Replace(hClass.Name, "*", "\\*") & " (" & sComponent & ")" Else If sPath Then Return sClass Return sClass & " (" & sComponent & ")" Endif End Public Sub GetSymbolTitle(Optional sPath As String) As String Dim hSym As CSymbolInfo Dim sTitle As String Dim sComponent As String Dim sClass As String Dim sSymbol As String Dim aPath As String[] Dim sClassName As String If Not sPath Then sComponent = Main.Component sClass = Main.Class sSymbol = Main.Symbol Else aPath = Split(sPath, "/", "", True) sComponent = aPath[1] sClass = aPath[2] sSymbol = aPath[3] If Left(sSymbol) = "." Then sSymbol = ":" & Mid$(sSymbol, 2) Endif Try hSym = CComponent.Get(sComponent)[sClass].Symbols[sSymbol] If sPath Then If Not hSym And If sClass Ends "[]" Then Try hSym = CComponent.Get(sComponent)["*[]"].Symbols[sSymbol] Endif If Not hSym Then Return sSymbol & " ?" If InStr("e:", hSym.Kind) Then Return Mid$(hSym.Name, 2) Else Return hSym.Name Endif Endif If Not hSym Then Return sClass & "." & sSymbol & " (" & sComponent & ")?" sClassName = hSym.Class If Not IsLetter(Left(sClassName)) Then sTitle = Trim(GetPageTitle("/comp" &/ sComponent &/ sClass, True)) If sTitle Then If Right(sTitle) = ")" Then sTitle = Trim(Left$(sTitle, RInStr(sTitle, "(") - 1)) sClassName = sTitle Endif Endif Select Case Main.Symbol Case "_new" sTitle = "New " & sClassName Case "_put" sTitle = sClassName & "\\[…] = …" Case "_get" sTitle = "… = " & sClassName & "\\[…]" Case "_call" sTitle = sClassName & "()" Case "_next" sTitle = "For Each " & sClassName Default If InStr(":e", hSym.Kind) Then sTitle = "Event " & sClassName & "." & Mid$(hSym.Name, 2) Else sTitle = sClassName & "." & hSym.Name Endif End Select Return Replace(sTitle, "*", "\\*") & " (" & hSym.Component & ")" End Public Sub MakeAbsolute(sPath As String, sRoot As String) As String sPath = Trim(sPath) ' Fix incorrect symbolic links If sPath Begins "comp/gb" Then Return "/" &/ sPath If sPath Begins "/" Then Return sPath If sPath Begins "./" Then If Not sRoot Then sRoot = "/" Return sRoot &/ Mid$(sPath, 3) Endif While sPath Begins "../" sRoot = File.Dir(sRoot) sPath = Mid(sPath, 4) Wend If Not sRoot Then sRoot = "/" Return sRoot &/ sPath End Private Sub GetIgnore() As String[] Return ["gb.gui", "gb.gtk", "gb.gtk.opengl", "gb.gtk3", "gb.gtk3.opengl", "gb.gui.opengl", "gb.gui.base", "gb.option", "gb.v4l", "gb.qt5", "gb.qt5.opengl", "gb.qt5.webkit", "gb.gui.qt", "gb.gui.qt.webkit", "gb.qt4.webview", "gb.qt5.webview", "gb.gtk3.webview", "gb.dbus.trayicon", "gb.qt5.ext"] End Public Sub GetToDo() As String[] Dim hComp As CComponent Dim hClass As CClassInfo Dim hSymbol As CSymbolInfo Dim bPrintComponent As Boolean Dim bPrintClass As Boolean Dim sClass As String Dim sComp As String Dim sName As String Dim iCpt As Integer Dim aIgnore As String[] Dim aAllow As String[] = ["_new", "_put", "_get", "_call", "_next"] Dim sPath As String Dim aResult As New String[] Dim aIndex As New String[] aIgnore = GetIgnore() CComponent.Init For Each sComp In CComponent.ListAll() hComp = CComponent.Get(sComp) hComp.Load If hComp.State = CComponent.DEPRECATED Then Continue bPrintComponent = True For Each sClass In hComp.ClassList If sClass = "." Then Continue If InStr(sClass, "*") Then Continue hClass = hComp[sClass] bPrintClass = True 'If $cCompRedirect And If $cCompRedirect.Exist(sComp) Then Continue If aIgnore.Find(sComp) >= 0 Then Continue If hClass.IsRedirected() Then Continue For Each hSymbol In hClass.Symbols If hSymbol.Class <> hClass.Name Or If hSymbol.Component <> hClass.Component Then Continue sName = hSymbol.Name If hSymbol.Kind = "C" Then If Left(sName) = "_" Then Continue Else If LCase(sName) = "_free" Then Continue If LCase(sName) = "_new" Then If Not hClass.Creatable Or If hClass.IsVirtual() Then Continue Endif If InStr(sName, "_") Then If Left(sName) <> "_" Or If aAllow.Find(sName) < 0 Then Continue Endif Endif sPath = "/comp" &/ LCase(sComp &/ hSymbol.Class &/ Replace(hSymbol.Name, ":", ".")) If Not ExistPage(sPath) Then If Not HasDefaultHelp(sComp, hSymbol.Class, hSymbol.Name) Then If bPrintComponent Then aResult.Add("## [[" & sComp & "] (/comp" &/ sComp & ")]") aIndex.Add("- [" & sComp & "](#t" & CStr(aIndex.Count + 1) & ")") bPrintComponent = False Endif If bPrintClass Then aResult.Add("* **[" & hClass.Name & "] (/comp" &/ sComp &/ LCase(hClass.Name) & ")**") bPrintClass = False Endif aResult.Add(" * [" & sPath & "]") Inc iCpt Endif Endif Next Next Next aResult.Insert([Subst("There are &1 symbols to document yet.", CStr(iCpt)), ""], 0) aIndex.Add("
", 0) aIndex.Add("
") aResult.Insert(aIndex, 1) Return aResult End Private Sub MakeLink(sLink As String, sLang As String) As String If Not sLang Then sLang = "en" If Not sLink Then sLink = "/" Return "[" & sLink & " (" & sLang & ")] (" & sLink & "?l=" & sLang & ")" End Public Sub GetChanges() As String[] Dim aResult As New String[] Dim aLine As String[] Dim I As Integer Dim aCol As String[] Dim sLink As String Dim iPos As Integer Dim sLang As String If Not UserName Then Return ["[[ warning", ("You must be logged in to view the last changes."), "]]"] Endif aLine = Split(File.Load(Main.Root &/ "wiki.log"), "\n", "", True) aLine.Reverse aResult.Add("") '") For I = 0 To Min(999, aLine.Max) aCol = Split(aLine[I], "|") If aCol.Count < 3 Then Continue aResult.Add("") sLink = Trim(aCol[2]) If InStr(sLink, "/") = "" Then aResult.Add("") Else sLang = "" If Right(sLink) = ")" Then iPos = RInStr(sLink, "(") If iPos Then sLang = Mid$(sLink, iPos + 1, -1) sLink = Trim(Left(sLink, iPos - 1)) Endif Endif If sLink Begins "Delete" Then aResult.Add("") Else If sLink Begins "Undo" Then aResult.Add("") Else If sLink Begins "/" Or If Not sLink Then aResult.Add("") Else aResult.Add("") Endif aResult[aResult.Max] &= "" Endif Next aResult.Add("
" & Left(Trim(aCol[0]), 19) & "" & Trim(aCol[1]) & "" & sLink & "Delete " & MakeLink(Mid$(sLink, 8), sLang) & "Undo " & MakeLink(Mid$(sLink, 6), sLang) & "" & MakeLink(sLink, sLang) & "`" & sLink & "`
") If aLine.Count > 1000 Then aResult.Add("...") Return aResult End Public Sub Log(sText As String, Optional sUser As String) Dim sLog As String = Main.Root &/ "wiki.log" Dim hFile As File If Exist(sLog) And If Stat(sLog).Size > 50000000 Then Try Kill sLog & ".old" Try Move sLog To sLog & ".old" Try Kill sLog Endif If Not sUser Then sUser = UserName sUser = Left(sUser, 24) sUser &= Space$(24 - Len(sUser)) Try hFile = Open sLog For Append If hFile Then For Each sText In Split(sText, "\n") Print #hFile, Format(Now, "mm\\/dd\\/yyyy hh\\:nn\\:ss"); " | "; sUser; " | "; sText Next Close #hFile Endif End Public Sub HasDefaultHelp(Optional sComp As String, sClass As String, sSymbol As String) As Boolean Dim hClass As CClassInfo Dim hSymbol As CSymbolInfo If Not sComp Then sComp = Main.Component If Not sClass Then sClass = Main.Class If Not sSymbol Then sSymbol = Main.Symbol Try hClass = CComponent.Get(sComp)[sClass] If Not hClass Then Return If sSymbol Then Try hSymbol = hClass.Symbols[sSymbol] If Not hSymbol Then Return If hSymbol.Help Then Return True Else If hClass.Help Then Return True Endif End Public Sub GetDefaultHelp(Optional sComp As String, sClass As String, sSymbol As String) As String Dim hSymbol As CSymbolInfo Dim sSign As String Dim iPos As Integer Dim sResult As String Dim iPos2 As Integer Dim hClass As CClassInfo If Not sComp Then sComp = Main.Component If Not sClass Then sClass = Main.Class If Not sSymbol Then sSymbol = Main.Symbol Try hClass = CComponent.Get(sComp)[sClass] If Not hClass Then Return If sSymbol Then Try hSymbol = hClass.Symbols[sSymbol] If Not hSymbol Then Return If hSymbol.Help Then Return hSymbol.Help sResult = "\n" sSign = hSymbol.Signature Do iPos = InStr(sSign, "(", iPos + 1) If iPos = 0 Then Break iPos2 = InStr(sSign, ")", iPos + 1) If iPos2 = 0 Then Break sResult &= "- ~" & Mid$(sSign, iPos + 1, iPos2 - iPos - 1) & "~\n" iPos = iPos2 Loop Else If hClass.Help Then Return hClass.Help Endif 'If hSymbol.Help Then sResult = Trim(sResult) & "\n" & hSymbol.Help Return sResult End Private Sub AddDependencies(aResult As String[], aComp As String[]) Dim sComp As String For Each sComp In aComp If Not CComponent.HasPackage(sComp) Then Continue aResult.Add("'gambas3-" & Replace(sComp, ".", "-") & "'\\") Next End Private Sub AddProjectDependencies(aResult As String[], sProject As String, Optional aMore As String[]) Dim aComp As New String[] Dim sLine As String Dim sComp As String For Each sLine In Split(File.Load(sProject & ".project"), "\n") If sLine Begins "Component=" Then aComp.Add(Mid$(sLine, InStr(sLine, "=") + 1)) Endif Next aComp.Sort() aResult.Add("==") aResult.Add("'" & sProject & "'") aResult.Add("--") aResult.Add("'gambas3-runtime'\\") If aMore Then For Each sComp In aMore aResult.Add("'" & sComp & "'\\") Next Endif AddDependencies(aResult, aComp) End Public Sub GetPackageTable() As String[] Dim aResult As String[] Dim sComp As String aResult = New String[] aResult.Add("[[") aResult.Add("Package") aResult.Add("--") aResult.Add("Depends on these packages") aResult.Insert(["==", "'gambas3-devel'", "--"]) aResult.Insert(["==", "'gambas3-runtime'", "--"]) AddProjectDependencies(aResult, "gambas3-ide", ["gambas3-devel"]) AddProjectDependencies(aResult, "gambas3-scripter", ["gambas3-devel"]) For Each sComp In CComponent.ListAll() If Not CComponent.HasPackage(sComp) Then Continue aResult.Add("==") aResult.Add("'gambas3-" & Replace(sComp, ".", "-") & "'") aResult.Add("--") AddDependencies(aResult, CComponent.Get(sComp).Require) Next aResult.Add("]]") Return aResult End Public Sub GetProjectDependencies(sProject As String) As String[] Dim aComp As New String[] Dim sLine As String Dim sComp As String Dim aResult As New String[] For Each sLine In Split(File.Load(sProject & ".project"), "\n") If sLine Begins "Component=" Then aComp.Add(Mid$(sLine, InStr(sLine, "=") + 1)) Endif Next aComp.Sort() For Each sComp In aComp aResult.Add("* [/comp/" & sComp & "]") Next Return aResult Catch Return [Error.Text] End Private Sub InitAuthor() Dim hFile As File Dim hAuthor As CAuthor Dim aDev As New String[] Dim aTrans As New String[] Dim aCountry As New String[] Dim cCountry As New Collection Dim sCountry As String Dim aAuthor As Object[] Dim iInd As Integer Dim sWork As String If $bInitAuthor Then Return hFile = Open "AUTHORS" For Read While Not Eof(hFile) hAuthor = New CAuthor(hFile) Wend Close #hFile CAuthor.All.Sort For Each hAuthor In CAuthor.All If hAuthor.Translator Then For Each sCountry In hAuthor.Translation If Not cCountry.Exist(sCountry) Then cCountry[sCountry] = New Object[] aCountry.Add(sCountry) Endif cCountry[sCountry].Add(hAuthor) Next Endif If hAuthor.Developer Then aDev.Add("==") aDev.Add(hAuthor.GetLink()) aDev.Add("--") aDev.Add(hAuthor.Country) aDev.Add("--") For Each sWork In hAuthor.Works aDev.Add("* " & sWork) Next Endif Next $aDeveloperTable = aDev aCountry.Sort For Each sCountry In aCountry aTrans.Add("==") aTrans.Add(sCountry) aTrans.Add("--") aAuthor = cCountry[sCountry] For iInd = 0 To aAuthor.Max aTrans.Add(aAuthor[iInd].GetLink() & "\\") Next Next $aTranslatorTable = aTrans $bInitAuthor = True End Public Sub GetDeveloperTable() As String[] InitAuthor Return $aDeveloperTable End Public Sub GetTranslatorTable() As String[] InitAuthor Return $aTranslatorTable End Private Sub SearchWiki(sText As String) Dim sDir As String Dim sFile As String Dim sPath As String Dim aFind As String[] Dim sData As String Dim iPos As Integer Dim sCar As String sText = Trim(sText) If Not sText Then Return Session["search-query"] = sText 'sText = String.RemoveDiacritics(sText) aFind = New String[] sDir = Root &/ "data" &/ Lang For Each sFile In RDir(sDir, "*", gb.Directory) sPath = GetPagePathFrom(sFile) If Not Exist(sPath) Then Continue sData = File.Load(sPath) iPos = 0 Do iPos = InStr(sData, sText, iPos + 1, gb.IgnoreCase) If iPos = 0 Then Break If iPos > 1 Then sCar = Mid$(sData, iPos - 1, 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If Not IsAscii(sCar) Then Goto NEXT_SEARCH Endif If iPos < Len(sData) Then sCar = Mid$(sData, iPos + Len(sText), 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If Not IsAscii(sCar) Then Goto NEXT_SEARCH Endif Break NEXT_SEARCH: iPos += Len(sText) Loop If iPos Then aFind.Add("/" & sFile) Next Session["search-result"] = aFind Response.Redirect("/wiki/search") Return End Public Sub GetImageHTML(sPath As String) As String Dim sAdd As String If Not Main.ExistPage(sPath) Then If Not Main.ExistPage(sPath, "en") Then Return "" & ("Please upload a file") & "" Else sAdd = "&l=en" Endif Endif If Main.GetContentTypeFrom(sPath) Begins "video/" Then Return "" Else Return "" Endif End Private Sub SendPlayground() Dim sData As String sData = File.Load(".public/playground.js") sData = Replace(sData, "((\"Run\"))", Quote(("Run"))) sData = Replace(sData, "((\"Play\"))", Quote(("Play"))) sData = Replace(sData, "((\"Loading...\"))", Quote(("Loading") & "...")) Response.ContentType = "text/javascript" AddCacheHeaders Response.Begin Print sData; Response.End End Public Sub GetHowToInstall(sSystem As String) As String[] Dim I As Integer Dim sLine As String Dim sCommand As String Dim aResult As String[] Dim sPath As String Dim sOutput As String If Not $bGitLabCI Then sPath = User.Home &/ "gitlab-ci.yml" If Not Exist(sPath) Or If DateAdd(Stat(sPath).LastModified, gb.Day, 1) < Now Then Try Kill sPath Try Exec ["wget", "-q", "-O", "-", "https://gitlab.com/gambas/gambas/-/raw/master/.gitlab-ci.yml"] To sOutput If sOutput Then File.Save(sPath, sOutput) Endif Try $aGitLabCI = Split(File.Load(sPath), "\n") $bGitLabCI = True Endif If Not $aGitLabCI Then Return ["
" & ("Unable to download configuration file from GitLab") & "
"] I = $aGitLabCI.Find("build:" & sSystem & ":") If I < 0 Then Return ["
" & Subst(("Unable to find build configuration for '&1'"), sSystem) & "
"] aResult = New String[] Inc I While I <= $aGitLabCI.Max sLine = $aGitLabCI[I] If sLine Begins "build:" Then Break sLine = Trim(sLine) If sLine Begins "- " Then GoSub ADD_COMMAND sCommand = " " sLine = Mid$(sLine, 3) If sLine <> ">" Then sCommand &= sLine Else If sLine Ends ":" Then GoSub ADD_COMMAND Else If sCommand And If sLine Then sCommand = Trim(sCommand & " " & sLine) Endif Inc I Wend GoSub ADD_COMMAND aResult.Add("[[ code", 0) aResult.Add("]]") Return aResult ADD_COMMAND: If sCommand Then sCommand = Trim(Replace(sCommand, "GAMBAS_CONFIG_FAILURE=1 ", "")) If sCommand Not Begins "make" Then If aResult.Count Then aResult.Add(" ") aResult.Add(" " & sCommand) Endif sCommand = "" Endif Return End gambas-3.16.3/app/src/gambas-wiki/.src/OldWiki.module000066400000000000000000000353251411575327000222330ustar00rootroot00000000000000' Gambas module file Private $hConn As Connection Private $bHasIndex As Boolean Private $sPath As String Private $bGotClasses As Boolean Private $bGotSymbols As Boolean Private $cImage As Collection Private $sLastLevel As String Private Sub OpenDatabase() If $hConn Then Return $hConn = New Connection $hConn.Type = "mysql" $hConn.Name = "wiki" $hConn.User = "root" $hConn.Open End Private Sub SolvePath(sPath As String) As String Return Main.MakeAbsolute(sPath, $sPath) End Public Sub GetTitle(sPath As String) As String Dim rPage As Result Dim sTitle As String OpenDatabase If Not sPath Then sPath = "/" rPage = $hConn.Find("page", "sLang = &1 AND sPath = &2", Main.Lang, sPath) If rPage.Available Then sTitle = rPage!stitle If sTitle Ends "#3" Then sTitle = Left(sTitle, -2) Return sTitle Endif Catch End Public Sub GetPage(sPath As String) As String Dim rPage As Result Dim sLine As String Dim aResult As String[] Dim iIgnore As Integer Dim iLevel As Integer Dim aLevel As New String[] Dim sLevel As String Dim bCode As Boolean Dim sTitle As String If InStr(sPath, "/comp/gb.sdl2.audio") Then sPath = Replace(sPath, "/comp/gb.sdl2.audio", "/comp/gb.sdl.sound") Endif OpenDatabase If Not sPath Then sPath = "/" $sPath = sPath rPage = $hConn.Find("page", "sLang = &1 AND sPath = &2", Main.Lang, sPath) If Not rPage.Available Then Return 'Return rPage!sdesc $bHasIndex = False $sLastLevel = "" sTitle = rPage!stitle If sTitle Ends "#3" Then sTitle = Left(sTitle, -2) If Left(sTitle) = "@" Then Return "--> " & String.LCase(Replace(Mid$(sTitle, 2), "/comp/gb.qt/", "/comp/gb.qt4/")) & "\n" aResult = ["# " & sTitle, ""] If Main.Symbol Then aResult.Add("@{syntax}") aResult.Add("") Else If Main.Class Then $bGotSymbols = False Else If Main.Component Then $bGotClasses = False Endif For Each sLine In Split(rPage!sdesc, "\n") sLine = RTrim(sLine) If Left(sLine) = "{" And If Not bCode Then sLevel = LCase(Trim(Mid$(sLine, 2))) If sLevel = "syntax no-title" Then sLevel = "syntax" aLevel.Push(sLevel) If sLevel Begins "only " And If sLevel <> "only 3.0" Then Inc iIgnore Endif Inc iLevel If iIgnore = 0 And If sLevel <> "only 3.0" Then If sLevel = "error" Then aResult.Add("### " & ("Errors")) Else If sLevel = "example" Then If $sLastLevel <> "example" Then aResult.Add("### " & ("Examples")) Else If sLevel = "seealso" Then aResult.Add("### " & ("See also")) Endif If sLevel = "example" Or If sLevel = "code" Then bCode = True Else If sLevel = "error" Then aResult.Add("[[ " & sLevel) aResult.Add(("Message")) aResult.Add("--") aResult.Add(("Description")) aResult.Add("==") Else aResult.Add("[[ " & sLevel) Endif Endif $sLastLevel = sLevel Continue Else If sLine = "}" And If aLevel.Count Then sLevel = aLevel.Pop() If iIgnore = 0 And If sLevel <> "only 3.0" Then If sLevel = "example" Or If sLevel = "code" Then bCode = False Else aResult.Add("]]") Endif Endif Dec iLevel If sLevel Begins "only" And sLevel <> "only 3.0" Then Dec iIgnore Continue Else If sLine = "==" Then bCode = Not bCode Continue Endif If iIgnore Then Continue If bCode Then If sLine = "--" Then aResult.Add(" ----") Else If sLine Begins "
" Then aResult.Add(" ----") aResult.Add(" " & Mid$(sLine, 5)) Else If RTrim$(sLine) = "\\}" Then sLine = "}" aResult.Add(" " & sLine) Endif Else If aLevel.Count Then sLevel = aLevel[aLevel.Max] Else sLevel = "" Endif If Not Trim(sLine) Then aResult.Add("") Else aResult.Insert(Split(Convert(sLine, sLevel), "\n")) Endif Endif Next If Main.Component And If Not Main.Class And If Not $bGotClasses Then aResult.Add("@{classes}") If Main.Class And If Not Main.Symbol And If Not $bGotSymbols Then aResult.Add("@{symbols}") Return aResult.Join("\n") End Private Sub IsWordLimit(sCar As String) As Boolean Return InStr("'_*=/.,;?!:()<> ", sCar) > 0 If IsLetter(sCar) Or If IsDigit(sCar) Then Return False Return True End Private Sub Convert(sLine As String, sLevel As String) As String Dim sResult As String Dim I As Integer Dim iPos As Integer Dim iPos2 As Integer Dim sLink As String Dim iPos3 As Integer Dim sTitle As String Dim sCar As String Dim sWait As String Dim sQuote As String Dim bCloseLink As Boolean Dim bCode As Boolean Dim bQuote As Boolean Dim bUnderline As Boolean Dim bItalic As Boolean Dim bBold As Boolean Dim iLevel As Integer Dim bAllowStart As Boolean Dim bAllowEnd As Boolean Dim sRest As String If sLevel = "example" Then If sLine = "-" Then Return "----" If sLine Begins "
" Then sLine = Mid$(sLine, 5) sResult = "----\n" Endif Endif If sLine = "-" Then Return "--" If sLine = "][" Then Return "==" If sLine = "--" Then Return "----" If sLine Begins "" Then Return If sLine Begins "@" Then If sLine = "@title-index" Then $bHasIndex = True Return "@{index}" Else If sLine Begins "@class-stat" Then Return "@{stat}" Else If sLine = "@no-autolink" Then Return Endif sLine = Trim(Mid$(sLine, 2)) If sLine = "symbols" Then $bGotSymbols = True Else If sLine = "classes" Then $bGotClasses = True Endif Return "@{" & sLine & "}" Endif If sLine Begins "* " Then sResult = "* " sLine = Mid$(sLine, 3) Else If sLine Begins "** " Then sResult = " * " sLine = Mid$(sLine, 4) Else If sLine Begins "# " Then sResult = "+ " sLine = Mid$(sLine, 3) Else If sLine Begins "## " Then sResult = " + " sLine = Mid$(sLine, 4) Else If sLine Begins "+" Then Repeat sLine = Mid$(sLine, 2) sResult &= "#" Until sLine Not Begins "+" sResult &= "# " sLine = Trim(sLine) If $bHasIndex Then sResult &= "[" bCloseLink = True Endif $sLastLevel = "" Endif If sLevel = "syntax" Then Goto NO_LINK Do iPos = InStr(sLine, "[", iPos + 1) If iPos = 0 Then Break If iPos > 1 And If Mid$(sLine, iPos - 1, 1) = "\\" Then Continue If Mid$(sLine, iPos + 1, 1) = " " Or If Mid$(sLine, iPos + 1, 1) = "]" Then Continue iPos2 = iPos iLevel = 0 Do Inc iPos2 If iPos2 > Len(sLine) Then iPos2 = 0 Break Endif sCar = Mid$(sLine, iPos2, 1) If sCar = "[" Then Inc iLevel Else If sCar = "]" Then If iLevel = 0 Then Break Dec iLevel Endif Loop If iPos2 = 0 Then Break sLink = Mid$(sLine, iPos + 1, iPos2 - iPos - 1) iPos3 = InStr(sLink, "|") If iPos3 Then sTitle = Mid$(sLink, iPos3 + 1) sLink = Left$(sLink, iPos3 - 1) Else sTitle = "" Endif If sLink Not Begins "/" And If sLink Not Begins "./" And If sLink Not Begins "../" And If sLink Not Like "http*://*" Then If InStr(sLink, ".") = 0 Or If InStr(sLink, "/") Then sLink = "/" & sLink Endif If sLink Begins "/" Then sLink = String.LCase(sLink) If sLink Ends "?v3" Or If sLink Ends "&v3" Then sLink = Left(sLink, -3) If sLink Ends "/gb.qt" Then sLink &= "4" Else sLink = Replace(sLink, "/gb.qt/", "/gb.qt4/") Endif If Left(File.Name(sLink)) = ":" Then sTitle = "" sLink = Main.MakeAbsolute(sLink, Main.Path) If $cImage And If $cImage.Exist(sLink) Then sLink = $cImage[sLink] Else sLink = File.SetName(sLink, Mid$(File.Name(sLink), 2) & ".png") Endif If sLink Begins (Main.Path &/ "/") Then sLink = "./" &/ Mid$(sLink, Len(Main.Path) + 1) Endif Endif If InStr(sLink, "/def/") And If sLevel <> "seealso" Then sLink = GetTitle(SolvePath(sLink)) Else If sLink Not Like "*://*" Then sLink = String.LCase(sLink) If sTitle Then sLink = "[" & Trim(sTitle) & "] (" & sLink & ")" Else sLink = Replace(sLink, "\\]", "]") sLink = "[" & Trim(sLink) & "]" Endif Endif If sLevel = "seealso" Then If Trim(sLink) Then sLink = "* " & sLink If iPos > 1 Then sLink = "\n" & sLink Endif Endif If Left(LTrim(Mid(sLine, iPos2 + 1))) = "(" Then sRest = Mid$(sLine, iPos2 + 1) sLine = Left$(sLine, iPos - 1) & sLink & Space$(Len(sRest) - Len(LTrim(sRest))) & "\\" & LTrim(sRest) Else sLine = Left$(sLine, iPos - 1) & sLink & Mid$(sLine, iPos2 + 1) Endif iPos += Len(sLink) Loop NO_LINK: Do Inc I 'If I > String.Len(sLine) Then Break sCar = String.Mid$(sLine, I, 1) If Not sCar Then Break If sCar = "\\" Then Inc I sCar = String.Mid$(sLine, I, 1) If sQuote Or If sCar Not Like "[/=a-zA-Z0-9_]" Then sCar = "\\" & sCar Goto ADD_CHAR Endif If sWait Then If sCar = "'" Then If sQuote = "'" Then sQuote = "" Else sQuote = sCar Endif Else If sCar = "\"" Then If sQuote = "\"" Then sQuote = "" Else sQuote = sCar Endif Endif Endif If sWait Then sResult &= sCar If Not sQuote And If sCar = sWait Then sWait = "" If sCar = "]" Then If Left(LTrim(String.Mid$(sLine, I + 1))) = "(" Then sWait = ")" Endif Endif Endif Continue Endif ' If I > 1 And If I < String.Len(sLine) Then ' If IsWordLimit(String.Mid$(sLine, I - 1, 1)) Then ' If IsWordLimit(String.Mid$(sLine, I + 1, 1)) Then ' Goto ADD_CHAR ' Endif ' Endif ' Endif bAllowStart = False bAllowEnd = False If I = 1 Or If IsWordLimit(String.Mid$(sLine, I - 1, 1)) Then If I < String.Len(sLine) And If String.Mid$(sLine, I + 1, 1) <> " " Then bAllowStart = True Endif Endif If I = String.Len(sLine) Or If IsWordLimit(String.Mid$(sLine, I + 1, 1)) Then If I > 1 And If String.Mid$(sLine, I - 1, 1) <> " " Then bAllowEnd = True Endif Endif If sCar = "=" Then If bCode And If Not bAllowEnd Then Goto ADD_CHAR If Not bCode And If Not bAllowStart Then Goto ADD_CHAR bCode = Not bCode If bCode Then 'And If InStr("*_[", String.Mid$(sLine, I + 1, 1)) And If String.Mid$(sLine, I + 2, 1) <> "=" Then sCar = "'" bQuote = True Else If Not bCode And If bQuote Then sCar = "'" bQuote = False Else sCar = "`" bQuote = False Endif Else If sCar = "_" Then If bUnderline And If Not bAllowEnd Then Goto ADD_CHAR If Not bUnderline And If Not bAllowStart Then If I = String.Len(sLine) Then sCar = "\\" Goto ADD_CHAR Endif bUnderLine = Not bUnderLine sCar = "~" Else If sCar = "*" Then If bBold And If Not bAllowEnd Then Goto ADD_CHAR If Not bBold And If Not bAllowStart Then Goto ADD_CHAR bBold = Not bBold sCar = "**" Else If sCar = "/" Then If bItalic And If Not bAllowEnd Then Goto ADD_CHAR If Not bItalic And If Not bAllowStart Then Goto ADD_CHAR bItalic = Not bItalic sCar = "*" Else If sCar = "~" Then sCar = "\\~" Else If sCar = "[" Then If sLevel = "syntax" Or String.Mid$(sLine, I + 1, 1) = " " Then sCar = "\\[" Else sWait = "]" Endif Else If sCar = "<" Then sWait = ">" Else If sCar = "'" Then If bAllowStart Or If bAllowEnd Then sCar = "\\'" Endif Endif ADD_CHAR: sResult &= sCar Loop If bCloseLink Then sResult &= "]" sResult = Replace(sResult, "
", "
") sResult = Replace(sResult, "[/comp/gb.web/html]", "HTML") Return sResult End Public Sub Restore() Dim rPage As Result Dim sPage As String Dim hBlob As Blob Dim sPath As String Dim sExt As String Dim sLang As String Dim aPath As String[] Dim hComp As CComponent Dim hClass As CClassInfo Dim hSym As Variant CComponent.Init OpenDatabase() $cImage = New Collection rPage = $hConn.Exec("SELECT * FROM page ORDER BY spath,slang") For Each sLang In Main.Languages Main.SetLanguage(sLang) ' Images processing For Each rPage If rPage!slang <> sLang Then Continue sPath = rPage!spath If Left(File.Name(sPath)) <> ":" Then Continue If sPath Begins "/comp/gb.qt/" Or If sPath = "/comp/gb.qt" Then Continue Try sExt = Scan(rPage!shtml, "*image/*")[1] If Error Then Continue Print sPath;; "("; rPage!slang; ")";; sExt sPath = File.Dir(sPath) &/ Mid$(File.Name(sPath), 2) & "." & sExt $cImage[rPage!spath] = sPath hBlob = rPage!sdata sPath = Main.GetPagePathFrom(sPath) Main.MakeDir(File.Dir(sPath)) File.Save(sPath, hBlob.Data) Next For Each rPage If rPage!slang <> sLang Then Continue sPath = rPage!spath If Left(File.Name(sPath)) = ":" Then Continue If sPath Ends ".comment" Then Continue If sPath Begins "/comp/gb.qt/" Or If sPath = "/comp/gb.qt" Then Continue If rPage!stitle Ends "#2" Then Continue Main.Path = sPath Main.Component = "" Main.Class = "" Main.Symbol = "" If sPath Begins "/comp/" Then aPath = Split(sPath, "/", "", True) If aPath.Count >= 2 Then Main.Component = aPath[1] Try hComp = CComponent.Get(Main.Component) If Error Then Continue Endif If aPath.Count >= 3 Then Main.Class = aPath[2] hClass = hComp[Main.Class] If Not hClass Then Continue Endif If aPath.Count >= 4 Then Main.Symbol = aPath[3] If Left(Main.Symbol) = "." Then Main.Symbol = ":" & Mid(Main.Symbol, 2) hSym = hClass.Symbols[Main.Symbol] If Not hSym Then Continue Endif Endif Print sPath;; "("; rPage!slang; ")" sPage = GetPage(sPath) sPath = Main.GetPagePathFrom(sPath) Main.MakeDir(File.Dir(sPath)) File.Save(sPath, sPage) File.Save(sPath & "." & Format(Now, "yyyymmddhhnnssuu") & ".admin", sPage) Next Next CComponent.Exit End gambas-3.16.3/app/src/gambas-wiki/.src/Register.class000066400000000000000000000003241411575327000222640ustar00rootroot00000000000000' Gambas class file Private $iSeed As Integer Public Sub _new() $iSeed = Int(Rnd(0, 2147483647)) End Private Sub _PrintCode() Print "Randomize "; $iSeed Print "Print Int(Rnd(0, &H1000000))" End gambas-3.16.3/app/src/gambas-wiki/.src/Register.webpage000066400000000000000000000053441411575327000226000ustar00rootroot00000000000000 Gambas Documentation - Register
Register a new user

Register a new user

Identification

Login ">
Password
Confirm password
First name ">
Last name ">

Confirmation

Enter an e-mail address: a mail will be sent to it that will include a confirmation link.
Click on that link to activate your account.
E-mail ">
Confirm e-mail ">

Please run the following Gambas code and enter its result.

<%_PrintCode%>
Result

<%If Session["warning"] Then%>

<% Print Session["warning"]; Session["warning"] = "" %>
<%Endif%> <%If Session["message"] Then%>

<%Print Session["message"];%>
<%Session["message"] = ""%> <%Endif%>
gambas-3.16.3/app/src/gambas-wiki/.src/Wiki.class000066400000000000000000000242171411575327000214120ustar00rootroot00000000000000' Gambas class file Public Sub _new() Me.Buffered = True End Private Sub _PrintTitle() If Main.Path Then Print Html(Main.Path); Else Print "/"; Endif End Private Sub _PrintLink() Dim aPath As String[] Dim sElt As String Dim sPath As String aPath = Split(Main.Path, "/", "", True) For Each sElt In aPath If sPath Then Print " • "; sPath &= "/" & sElt Print ""; sElt; ""; Next End Private Sub GetMaxHistory() As Integer Dim sPath As String Dim sDir As String sPath = Main.SolvePath(Main.Path) sDir = File.Dir(Main.GetPagePathFrom(sPath)) Try Return Dir(sDir, "~page*.*").Count - 1 End Private Sub CloseSection(aResult As String[]) If aResult[aResult.Max] Begins "[[" Then aResult.Remove(aResult.Max) Else aResult.Add("]]") Endif End Public Sub RewriteExample(sData As String) As String Dim aData As String[] Dim I As Integer Dim sLine As String Dim bProcess As Boolean Dim sState As String Dim aResult As String[] If InStr(sData, "\n### Example") = 0 Then Return sData If InStr(sData, "\n[[ code gambas") Then Return sData aData = Split(sData, "\n") aResult = New String[] For I = 0 To aData.Max sLine = aData[I] If sLine Begins "##" Then If sState Then CloseSection(aResult) sState = "" Endif If sLine Begins "### Example" Or If sLine Begins "### [Example" Then bProcess = True Else bProcess = False Endif aResult.Add(sLine) Continue Endif If Not bProcess Then aResult.Add(sLine) Continue Endif If sLine Begins "[[ code " Or If sLine Begins "[[ result" Then bProcess = False aResult.Add(sLine) Continue Endif If LTrim(sLine) Begins "---" Then If sState = "code" Then CloseSection(aResult) aResult.Add("[[ result") sState = "result" Continue Endif If Not sState Then aResult.Add("[[ code gambas") sState = "code" Endif If Left(sLine, 4) <> " " Then If sState Then CloseSection(aResult) sState = "" Endif aResult.Add(sLine) Continue Endif If sState = "code" Then sLine = Mid$(sLine, 5) aResult.Add(sLine) Continue Else If sState = "result" Then aResult.Add(sLine) Continue Endif aResult.Add(sLine) Next Return aResult.Join("\n") End Private Sub _PrintPage() Dim sPath As String Dim sData As String Dim iPos As Integer Dim aFile As String[] Dim sDir As String Dim sLine As String Dim sColor As String Dim sResult As String Dim aLine As String[] Dim dDate As Date Dim sDate As String Dim hStat As Stat Dim hStatDef As Stat Dim hClass As CClassInfo Dim sDefaultHelp As String If Main.Edit Then sPath = Main.GetPagePath() If Exist(sPath) Then sData = File.Load(sPath) ' If Not sData Then ' sPath = Main.Path ' 'sData = OldWiki.GetPage(sPath) ' Endif If Not sData Then If Main.Symbol Then sData = "@{syntax}\n@{help}\n" '& Main.GetDefaultPage() Else If Main.Class Then sData = "@{help}\n@{symbols}\n" Endif Endif ' If Main.Path Begins "/comp/" Or If Main.Path Begins "/lang/" Or If Main.Path Begins "/cat/" Then ' sData = RewriteExample(sData) ' Endif Print Html(sData); Return Endif If Main.Image Then Print Main.GetImageHTML(Main.Path); Return Endif If Main.Preview Then sData = Request["page"] Print "
"; Subst(("Warning! This is a preview. Click on the &1 button to go back to the edit page."), ("Cancel")); "
" Else sPath = Main.SolvePath(Main.Path) If Not Main.ExistPage(sPath) Then Main.Lang = Main.DEFAULT_LANG sPath = Main.SolvePath(Main.Path) Endif If Main.Class Then If Main.Class Ends "[]" And If Not CComponent.Get(Main.Component)[Main.Class] Then Main.SubstClass = Main.Class Main.Class = "*[]" sPath = Main.SolvePath("/comp/" & LCase(Main.Component &/ Main.Class &/ Main.Symbol)) Endif Endif If Not Main.ExistPage(sPath) And If Not Main.HasDefaultHelp() Then If Main.Symbol Then Do hClass = CComponent.Get(Main.Component)[Main.Class] If Not hClass Or If Not hClass.Parent Then Break Main.Component = hClass.ParentComponent Main.Class = hClass.Parent sPath = Main.SolvePath("/comp/" & LCase(Main.Component &/ Main.Class &/ Main.Symbol)) If Main.ExistPage(sPath) Or If Main.HasDefaultHelp() Then Break Loop Endif Endif TRY_AGAIN: If Not Main.ExistPage(sPath) Then If Main.Symbol Or If Main.Class Then If Main.Lang <> Main.DEFAULT_LANG Then Print "
"; ("This page does not exist in that language."); "
" Endif ' We use an automatic page Main.Lang = Main.DEFAULT_LANG If Main.Symbol Then sDefaultHelp = Main.GetDefaultHelp() If sDefaultHelp Begins "-->" Then sPath = Main.MakeAbsolute(Trim(Mid$(sDefaultHelp, 4)), sPath) Goto TRY_AGAIN Else sData = "@{syntax}\n" & sDefaultHelp Endif Else If Main.Class Then sData = Main.GetDefaultHelp() & "\n@{symbols}\n" Endif Goto DISPLAY_PAGE Else If Main.Lang = Main.DEFAULT_LANG Then Print "
"; ("This page does not exist."); "
" Else Print "
"; ("This page does not exist in that language."); "
" Endif If Not Main.ExistPage(sPath, Main.DEFAULT_LANG) Then Return Main.Lang = Main.DEFAULT_LANG Endif Endif If Main.History Then sDir = File.Dir(Main.GetPagePathFrom(sPath)) aFile = Dir(sDir, "~page.*.*").Sort(gb.Descent) If aFile.Count >= 2 Then iPos = Min(Main.History - 1, aFile.Max - 1) Exec ["diff", "-U", "10000", sDir &/ aFile[iPos + 1], sDir &/ aFile[iPos]] To sResult sDate = Mid$(aFile[iPos], 7) dDate = Date(CInt(Mid$(sDate, 1, 4)), CInt(Mid$(sDate, 5, 2)), CInt(Mid$(sDate, 7, 2)), CInt(Mid$(sDate, 9, 2)), CInt(Mid$(sDate, 11, 2)), CInt(Mid$(sDate, 13, 2))) Print "

"; Html(Format(dDate, gb.GeneralDate)); " - "; Html(File.Ext(aFile[iPos])); "

" If sResult Then aLine = Split(sResult, "\n") aLine.Remove(0, 3) For Each sLine In aLine sColor = Left(sLine) sLine = Mid$(sLine, 2) sData &= "
" If sColor = "-" Then sData &= "" sData &= Html(sLine) If sColor = "-" Then sData &= "" sData &= "
" If Not sLine Then sData &= "\n" Next Print "
"; sData; "
" Else Print "
"; ("No change."); "
" Endif Return Endif Endif If Main.Lang <> Main.DEFAULT_LANG Then hStat = Stat(Main.GetPagePathFrom(Main.Path)) hStatDef = Stat(Main.GetPagePathFrom(Main.Path, Main.DEFAULT_LANG)) If hStat And If hStatDef And If hStatDef.LastModified > hStat.LastModified Then Print "" Endif Endif sPath = Main.GetPagePathFrom(sPath) Main.AddCacheHeaders(Stat(sPath).LastModified) sData = LTrim(File.Load(sPath)) Endif DISPLAY_PAGE: If sData Begins "==>" Then iPos = InStr(sData, "\n") If iPos Then sData = Left(sData, iPos - 1) sData = Trim(Mid$(sData, 4)) Print "==>"; Html(sData); "" If Not Session.Id Then Response.Cancel Response.Redirect(Application.Root &/ sData) Endif Return Endif If Main.Class Then If sData Begins "# " Then iPos = InStr(sData, "\n") If iPos = 0 Then iPos = Len(sData) sData = Mid$(sData, iPos + 1) Endif 'sData = "# " & Html(Main.GetSymbolTitle()) & "\n" & sData If Main.Symbol Then sData = "# " & Main.GetSymbolTitle() & "\n" & sData Else sData = "# " & Main.GetClassTitle() & "\n" & sData Endif If Main.SubstClass Then sData = Replace(sData, "\\*", Left(Main.SubstClass, -2)) Endif Endif Print WikiMarkdown.ToHTML(sData) Catch Print "
"; Html(Error.Text); " at line #"; WikiMarkdown.Line + 1; ":\n\n"; Html(WikiMarkdown.Current); "\n\nStack backtrace:\n\n"; Error.Backtrace.Join("\n")
  Print Main.Component; " / "; Main.Class; " / "; Main.Symbol
  Print "
"; End Private Sub _PrintParent() Print Html(Application.Root & Main.LinkSuffix); End Private Sub _PrintLang() Dim sLang As String If Request.Exist("nl") Then Print "" Else Print "" Endif End gambas-3.16.3/app/src/gambas-wiki/.src/Wiki.webpage000066400000000000000000000162261411575327000217200ustar00rootroot00000000000000 <%If System.RightToLeft Then%> <%Endif%> <%If Request.Exist("nh") Then%> <%Endif%> <%_PrintTitle%> - <%=("Gambas Documentation")%> <%If Request["ht"]%> <%Endif%> style="overflow:hidden;"<%Endif%><%If Request["ht"]%> onload="highlight_text()"<%Endif%>> <%If Request.Exist("nt")%> <%Endif%>
<%If Not Main.Edit And If Request["ident"] Then%> <%If Not Session.Id Then%> " style="position:absolute;width:0px;height:0px;margin:0px;padding:0px;outline:none;border:none;"> <%Endif%> <%Endif%> <%If Request.Exist("v") Or If Request.Exist("nh") Then%> <%If Not Request.Exist("nh") Then%>
 
<%_PrintLink%>
<%Else%>
<%Endif%> <%Else If Request.Exist("w") Then%>
<%Else%>
<%If Main.Edit Then%> <%Else%> <%Endif%>
<%If Main.Path Then%>
<%_PrintLink%>
<%Endif%> <%If Main.Edit Then%>
"> " style="display:none;"> ">
<%Else If Main.Preview Then%>
"> " onclick="window.history.back();">
<%Else If Session.Id Then%>
<%If Main.Exist Then%> <%If Main.History Then%> <%If Main.History < GetMaxHistory() Then%> "> <%Else%> " disabled style="color:gray"> <%Endif%> <%If Main.History > 1 Then%> ")%>"> <%Else%> ")%>" disabled style="color:gray"> <%Endif%> "> <%Else%> "> "> "> <%If GetMaxHistory() > 0 Then%> "> <%Endif%> <%Endif%> <% Else%> "> "> <%--">--%> <%Endif%> " onblur="this.value='';"/>
<%Endif%>
<%If Session.Id Then%>
<%=Main.FullName%>
">
<%Else%>
">
<%Endif%> <%_PrintLang%>
<%If Not Main.Edit And If Request["ident"] Then%> <%Endif%>
<%If Main.Edit Then%>
<%Else%>
<%Endif%> <%Endif%> <%If Session["message"] Then%>
<%Print Session["message"];%>
<%Endif%> <%If Main.Edit Then%> <%If Main.Image Then%>
<%Print Main.GetImageHTML(Main.Path);%>

<%=("Select the image file to upload...")%>

<%Else%>
<%Endif%> <%Else If Main.Preview Then%> <%_PrintPage%> "> <%Else%> <%_PrintPage%>

<%If Not Session.Id Then%> <%Endif%> <%Endif%>
gambas-3.16.3/app/src/gambas-wiki/.src/WikiMarkdown.class000066400000000000000000000176731411575327000231250ustar00rootroot00000000000000' Gambas class file Inherits Markdown Public Sub Link(hLink As MarkdownLink) Dim sPath As String Dim sLink As String = hLink.Link Dim iPos As Integer If sLink Begins "/" Then sPath = sLink Else If sLink Begins "./" Then sPath = Main.Path &/ Mid$(sLink, 3) Else If sLink Begins "../" Then sPath = Main.MakeAbsolute(sLink, Main.Path) Else If Not sLink Then sLink = hLink.Text iPos = InStr(sLink, ".") If iPos Then hLink.Text = "" sPath = "/comp/gb" &/ Trim(Left$(sLink, iPos - 1)) &/ Trim(Mid$(sLink, iPos + 1)) Endif Else If sLink Like "*://*" Then hLink.Blank = True Endif If Not sPath Then Return hLink.Query = Mid$(Main.LinkSuffix, 2) If Main.IsImage(sPath) Then If hLink.Text Then sLink = hLink.Text If sLink Begins "/" Then Else If sLink Begins "./" Then sLink = Main.Path &/ Mid$(sLink, 3) Else If sLink Begins "../" Then sLink = Main.MakeAbsolute(sLink, Main.Path) Endif Else sLink = sPath Endif hLink.Html = Main.GetImageHTML(sLink) If Session.Id Then hLink.Html = "" & hLink.Html & "" Else If hLink.Text Then hLink.Html = "" & hLink.Html & "" Endif Return Endif If Not hLink.Text Or If hLink.Text = hLink.Link Then hLink.Text = Main.GetPageTitle(sPath) Endif hLink.Link = Application.Root &/ sPath End Private Sub MakeError(sMsg As String) As String[] Return ["*" & Html(sMsg) & "*"] End Public Sub Command(sCommand As String) As String[] Dim aArg As String[] Dim sDir As String Dim aResult As String[] Dim iPos As Integer Dim sPath As String Dim sLetter, sLast As String Dim aDir As String[] Dim hComp As CComponent Dim hClass As CClassInfo Dim hSym As CSymbolInfo Dim sTitle As String Dim sClass As String Dim iStart As Integer Dim I, J, K, N, NC As Integer Dim aClass As String[] Dim aSearch As String[] Dim sLink As String Dim sSort As String aArg = Split(sCommand, " ", Chr$(34)) sCommand = aArg[0] If sCommand = "index" Then If aArg.Count > 1 Then sDir = File.Dir(Main.GetPagePathFrom(aArg[1])) aResult = New String[] aDir = New String[] NC = 2 For I = 1 To aArg.Max If aArg[I] Begins "col=" Then Try NC = CInt(Mid$(aArg[I], 5)) aArg.Remove(I) Break Endif Next If IsDir(sDir) Then For Each sDir In Dir(sDir, "*", gb.Directory) sPath = "/" &/ aArg[1] &/ sDir If Not Main.ExistPage(sPath) Then Continue sTitle = Main.GetPageTitle(sPath) If aArg.Count > 2 And If Comp(Left(sTitle, Len(aArg[2])), aArg[2], gb.Language + gb.IgnoreCase) = 0 Then sTitle = LTrim(Mid$(sTitle, Len(aArg[2]) + 1)) sSort = sTitle Do sLetter = String.Left(sSort) If Len(sLetter) > 1 Then Break If Not IsPunct(sLetter) Then Break If Not sTitle Then Break sSort = String.Mid$(sSort, 2) Loop If Not sSort Then sSort = " " If aDir.Exist(sSort & "\n" & sTitle & "\n*", gb.Like) Then Continue aDir.Add(sSort & "\n" & sTitle & "\n[" & sPath & "]") Next If aDir.Count Then aResult.Add("") aDir.Sort(gb.Natural + gb.IgnoreCase) iStart = 0 For I = 0 To aDir.Max sLetter = String.UCase(String.Left(aDir[I])) If sLetter <> sLast Then If I Then GoSub MAKE_INDEX_LETTER sLast = sLetter iStart = I Endif Next GoSub MAKE_INDEX_LETTER aResult.Add("
") Endif Endif Return aResult Endif Else If sCommand = "since" Or If sCommand = "only" Then Return ["
" & ("Since") & " " & Html(aArg[1]) & "
"] Else If sCommand = "classes" And If Main.Component Then hComp = CComponent.Get(Main.Component) If hComp Then If aArg.Count > 1 Then aClass = Split(aArg[1]) Return hComp.GetClasses(aClass) Endif Return MakeError(("This component does not exist.")) Else If sCommand = "description" And If Main.Component Then hComp = CComponent.Get(Main.Component) If hComp Then Return hComp.GetDescription() Return MakeError(("This component does not exist.")) Else If sCommand = "symbols" Then If aArg.Count >= 2 And If aArg[1] Then sClass = aArg[1] Else sClass = Main.Class Endif If sClass Then hComp = CComponent.Get(Main.Component) If hComp Then hClass = hComp[sClass] If hClass Then Return hClass.GetSymbols() Endif Endif Return MakeError(sClass & ": " & ("This class does not exist.")) Else If sCommand = "syntax" And If Main.Symbol Then hComp = CComponent.Get(Main.Component) If hComp Then hClass = hComp[Main.Class] If hClass Then hSym = hClass.Symbols[Main.Symbol] If hSym Then Return hSym.GetSyntax() Endif Endif Return MakeError(("This symbol does not exist.")) Else If sCommand = "help" And If Main.Class Then Return Split(Main.GetDefaultHelp(), "\n") Else If sCommand = "stat" Then Return Main.GetStat() Else If sCommand = "todo" Then Return Main.GetToDo() Else If sCommand = "changes" Then Return Main.GetChanges() Else If sCommand = "package-table" Then Return Main.GetPackageTable() Else If sCommand = "developer-table" Then Return Main.GetDeveloperTable() Else If sCommand = "translator-table" Then Return Main.GetTranslatorTable() Else If sCommand = "project-dependencies" Then Return Main.GetProjectDependencies(aArg[1]) Else If sCommand = "search-query" Then Return [Session["search-query"]] Else If sCommand = "search-result" Then aResult = New String[] aSearch = Session["search-result"] If aSearch And If aSearch.Count Then aResult.Add("[[") For Each sLink In aSearch aResult.Add("==") sTitle = Main.GetPageTitle(sLink) aResult.Add("" & Html(sTitle) & "") 'aResult.Add("[" & Main.GetPageTitle(sLink) & "](" & sLink & "?ht=" & URL.Encode(Session["search-query"]) & ")") aResult.Add("--") aResult.Add("`" & sLink & "`") Next aResult.Add("]]") Else aResult.Add(("No match found.")) Endif Return aResult Else If sCommand = "class" Then If Main.Class Then Return [Main.GetClassTitle(Main.Path)] Else If sCommand = "how-to-install" Then Return Main.GetHowToInstall(aArg[1]) Else Return [Subst("
Unknown command `@{&1}`
", sCommand)] Endif MAKE_INDEX_LETTER: aResult.Add("
" & sLast & "
") N = (I - iStart + NC - 1) \ NC J = iStart For K = 1 To NC aResult.Add("") For J = J To J + N - 1 If J >= I Then Break iPos = InStr(aDir[J], "\n") iPos = InStr(aDir[J], "\n", iPos + 1) aResult.Add(Mid$(aDir[J], iPos + 1) & "\\") Next aResult.Add("") Next aResult.Add("") Return End Public Sub Enter(sClass As String) As String[] If sClass = "syntax" Then Me.EnableCode(False) End Public Sub Leave(sClass As String) As String[] If sClass = "syntax" Then Me.EnableCode(True) End gambas-3.16.3/app/src/gambas-wiki/AUTHORS000077700000000000000000000000001411575327000215612../../../AUTHORSustar00rootroot00000000000000gambas-3.16.3/app/src/gambas-wiki/gambas3-ide.project000077700000000000000000000000001411575327000254432../gambas3/.projectustar00rootroot00000000000000gambas-3.16.3/app/src/gambas-wiki/gambas3-scripter.project000077700000000000000000000000001411575327000260562../gbs3/.projectustar00rootroot00000000000000gambas-3.16.3/app/src/gambas-wiki/icon.png000066400000000000000000000036651411575327000202550ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGB pHYs+PLTELiq~#|!Հ+~#~"~"w""~"~"#"~#~"~"$"~"}"~"~#~"~"~"~"~"~"~#}!~"~$~!#!~"}#~"~"}!~"~")~"6CF&C/fzƝkŜǟlǠ,0f/3_˄*OعQƎq<+ZYAr6Bb{e̙om[1LŤ2lk%pU芹TǏ탵;.@?܆jz`˛B޼4S;=܇,>1WȲj쑾]ʀ֗0PƠ-z^w,tRNSg'4WmlONXVv{IDATXõW_G?)OޛI@P齉(XHh&kbI؍&4&&dg^{O?~gowofvVQ,Jq$'$$;R\h1ÄH!iQnSD1 s[",.ڏ3 N_~1)no5G61tAZV^M[V 2sPt*KbR>ܮ?b;z gU䦤0˻%?bwՍ,Uq0w,u/OW ZfPT AexEhQI,FI`Rwچ[f]OnJjffI&oֆAnM0.aU۶:>Iv# W@~CFM4F_;{- .0eT}䄢OiKǙ8唦K5=b;рJ$(9˓9EO4 XZ7,ڣbIW!k\m߯=F{\w*=ޥtL%rJ}iZdKek*fUb]hJ*Rg+gxvbۤܯ֖77z++t ]80]y.]Ap'x&F۹[]}Cl_lۗovq:bbG!mmϭЯ̧ؼtT76ķPu(_9ZwC;Anʹq[tRNS45$Ҁ>K ?x:wCؤ͔yD;G`=F_z L6j-IDATx[gCIP@s0r',Ȃ *`9sީ-TӯgUuɣF )0ON<:H2|DR—** I#nh|b+)CޠށTO:|)UҼ__?kjPbZu;)]T%2|hՒD7@( R"-ib>.*EGřo*M5uUia>*Y*]ڷ7eٺo{msrY0aӌ9Ђ-%D'%[0_lH q |E%M }?G4>FsFdù1&qTs} %v",Đ^H;l}@?;rd>VC+EibRNʩ0ơojbZV@m#:Gaf 30b$V` H? ]!2a<1?J,QlkYB=[GRYۦg6z>ى _ 6jdCr, Lz+:I/v:5R?S꿜W|^'ko7/*z0{I϶?PGZt" @"?_)'TbUN{WGU=`ck -EnEnl<g)bhw[ e4\6țnٴͷ!%ƿ[lr\VD 9-e&=Cݞn2\N$ehBd;ğp^e+1${\_hG}Cld/gT1!!'Q@n3lT7@Zx.sL.xj| :K D> ]P:h݄FkR6-wh9~ *"Bc1QULざއsWF%:}ӷzcdCJU7 sr o*f4sl  !,#W JdFH8~v9>BJ rqOo)C \17%P26],A|/X~f)j]^p@z VS1ǯb(O6>}vLAs߈ |ZO Rqt%t@S >5P)uלvZgENpЅ">Bi ye#vi崂Ϲs] ^\awqiVXWf/9._}|J`%XMbOi<Ȥ5Ub,vд3̦(-j9x {DB۾S:I7$0L뽰V_Nlx|"=p˩'Nmgvo}rj@rH$+NNrFaT?s׮v~Ei^~C>oģR+nKej*̧bBj%!RJ-䉝uP&{k~U\5<|G+%v9(3TcԲXZb/|^!~*q'Ə S>;1iH=" ѷÐcǘ*g oIENDB`gambas-3.16.3/app/src/gambas3-selftest/.icon.png000066400000000000000000000245551411575327000213050ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+ IDATxy%Ud޻ok)UM(ЀӭNcv8.1c2v;AM 2, PTUeAۗf9Gfޛ{_)% {[{.=o~GD ?PkǂZxY` ws[s]^wŰÙYs%G+Evƨ#5~5>99@ #;.__ KH뿶2y%pr|ugr|wDUXgjX76Vu![XjhFx)=_J__00*hx?&s{^5~OKڼ] ,X?pѦmf2 $@ PO-"db]cUU5yN$UbTj{9 Uܙ[J"WemɣXܶ_^b Z}͐I`F, m-}~Փ5ϠAGYM hc_rQ,)eX>+=+$*]F#I:E*AJ^$K8\Jw' Vmnl@J h*w 7H+ +߮_=r:[ o(&td%?P#ժk {?+Us= +W\P5j~NK,AJ">+&UixCAH; =݄NdkBEY)\3]pN/ԅc>:J7TU<Үlh<J3 Jy/_YH#=VInu&)A\PBY]OQ@Cw4iɀ/ 8T| ,,}?Ï?уkB/GQ*{c"8+ ޾p`XO =gx8[oY2?=E{pJq%_9'-]c8,۝ӟ/@5S 8TFP7i~Y Cלm\ڹ >-оZ <8иt-o} nen D?w O%*K@jO {lb$RX ޽0@3 }Gd3h؝1_|$'a Aw./3 X C~; 3VG5}I@_Z^ et󾄔ذ~׾u4^AQMHo-΂=7f^ *eBYmF--?^d_T~y1FBɶ!p՞ ZC4:pTEӆ^g3 &20@7L>/Lۮv|W}WzLP4퀼Hhnj*\zD;< DK lb{0yH% ȥS*H-d,?Q'-璋bbbSny򆈞,Uߔ+7|,MC @[(澟*4h+ k}'ݓroGB dXMpj,Nbb ]RQcz_dyc!f [o:4$3ʱF~0j*~"]O $"rE[1qfh, Gd4<#zDqӵ `Ldaѣ Ld | D$\`H|GҒe pf=v>gr0q 4% oP7`#]  aݒDp54O3hi-8 ^@!(`- XK6DY*% x2'8a 04JAVAZa/َ9 H@%4 mXՠ-4!.%a[0iu`Z14zg voY0}”(M(M0  6JS&B .`\9k hӵ"\HtvQ.䏖iH5($:0%J˰lQ+gЇ5$'((Ϙ(O};jlعk $0(>(f@2R1(Mm$7&%-h'4MHMfҕ%Ek '%h9i N!H7Ĝ5al7% ps6򯕨G@`yH7@UH},h[3`F,1HdYA,٣f_={ aX^;r6қ+P HKxԑ.> yUH}-t!XݹzȌU8~ia| P~?YnJHvFx I0*"?ɅHSpQ{<3Զkvim@Z%=GQ )0m"= 66~Ɛ | oӌ_3\= u5M_z_݃=hujpmz"En5/CW c^IS/#.^Bs)GK:D Bx —q/W ZwXSQxa'Ehi͉ 0ASv%y+Fn ZvVb~ }#l5! IHUД`MRi]??O"{g. ۰Bc_(+QфDd( 켍r]uw`]?Aju-)4cJ( 4j `)aΪ+[߅1 ("͙2NS75.)bL4dgOӋ\'-Z(XNzZ0ұ)¹c\>G.ƫk71`8)]rcJAq J6 NjJF7a蚀bC=GNӋMq,޳unzz 'ԷnVE>3 >@Sbk (,*هi){QFJxﶍs[>3>$YHKkHm+ `++{g;-!`?-N{%Ėː3Jf֎q 9_juO}uܿ ?LƯ#kXe ]y tjj`bӣ/Ԩy82ۋWsm+9|xtrFoKH%n~@ E5}>>NIYpSc7oM~l?~Teu^(/@-[>e$ykG޻fBeHɃ@f8筱b,[v2X Va#7~AI}#ʓ#3p8޼y cs6۵XpbSK9/cN5Lķ{qo\3]^7Rv(esa\D~;cVΊ#HOL\ֱE;{aH ߼"SyE -%kѦal|1g0)'[>&Y,[@k{ | c8rsVX/Pݬ|gƑXe4C=PRj O.;1EKߞnE7W2n`u} `!*, b$.9M>rə83[ɡu^ H^pMSzHS1, $qIn^AM3/7ǎ-Q8;&님77*YKϐb"$DJhxp;Ra 4u@_yW NJ@#x$U$uwl?Q31=yW5u  *0g_8n._w7 agkn~8M 8C;uCp2\69 6դֵ:X8̅%6vL_OtDgXrs6٦,QO\tQ^ّzf{rHƷ(Hsljh;0ԦԺv 67{#3b>{Uk0M_[wK};V?#'T<^ox @̈>ǝJ.^c(u U<:[FuoK{kDcѺse49.+ӹtް>3Z@w@۷Jd:޻mccJ֭7S0GAvml&b?{j6`\ W [?P~h_KL]ñJc܉g: `\ @wu-;_=xe:;2?vY8#&5Y={`]xmn{\*OߋX(nx"صX/o5MNj} q'fJur%gpǎ ܰu+Y<]{jqP|J''N@̗Jm~/-عy l[*[8Xā=1'ήjRqV+Þ*\~@L:&PM£s؊YܸϞu`ncX^mHuo N] 2Sc4wsT^5m<4W붷yr;\N0f_y9EO4 hs63$<oj(ʨhcIFS:ǟ|w*)X 1f*~ *魙[E2s]{(ZR:m;(K򩇴J(~*Vq~0A@ 6]OїoUya6pE~ŗUG;Q D>Df촥E橗Q>7VLc`1W$z&IDAT'~>bnᄎcSes<ۘ8so.xߺ Ӱb Rgc;/yߚ: ?]OnhÅ'B?,>7h~9q $0MA&[᥇a~ Vñ2F9 !L"~~Xx英H BK$ݍ_.']W)*RuB`PX_URPrC\הDa|^AB`P??yBrSMHԂڰV<r>vY} D= ))K&i X q]|+0QRc/݃ ܠ `MWdH|kVfD~syCɎG}Y2+?YKQh݊,1J5?YyV 34pZtgw@g1۔7~Vk;$"'5ԷnV' q9>aA_HDHLIL!ޥn$.>l2"B "sESM,<%Jubi?8$?z6C}6=&` ]iנ0vwKgwc+eJwDIL Ҳ!ʖEq?o(c)F;0_?dGC_t)r^IQ`:u5?J @%A4[\ YΣxJW }&-qD,1T d9Y.@fa5c:%}Q`}8CfbHH-"\-6a^ Z9R1h!僇NB"h!Z&syHANkgІ2b(b;\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 "GambasTester" msgstr "" #: .project:2 msgid "Quick & (very)dirty unit tester for Gambas itself. Does not test GUI parts." msgstr "" #: mTest.module:161 msgid "Cannot open source file for testing! Test must be executed from GambasTest project root folder." msgstr "" #: mTest.module:166 msgid "GambasTester cannot be run without debugging information! Recompile debugging information enabled." msgstr "" #: mTest.module:2195 msgid "These key words are missing from test:" msgstr "" #: mTest.module:2237 msgid "Test passed!" msgstr "" #: mTest.module:2241 msgid "ERRORS: " msgstr "" #~ msgid "Tämä on Suomeksi" #~ msgstr "This is in Finnish" gambas-3.16.3/app/src/gambas3-selftest/.project000066400000000000000000000010021411575327000212160ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Gambas3 Selftest Startup=mTest Icon=.hidden/logo.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.debug Component=gb.pcre Description="Quick & (very)dirty unit tester for Gambas itself. Does not test GUI parts." Authors="Jussi Lahtinen \nChristof Thalhofer " Environment="GB_NO_JIT=1\nGB_JIT_CFLAGS=-O0\nGB_JIT_DEBUG=1" TabSize=4 Translate=1 Language=en_GB ModulePublic=1 Packager=1 Tags=Development gambas-3.16.3/app/src/gambas3-selftest/.settings_old000077500000000000000000000005341411575327000222620ustar00rootroot00000000000000[Breakpoints] Count=0 [DebugWindow] Count=0 [DebugWindow/ClassTest] Geometry=[211,134,210,210] [OpenFile] Active=1 File[1]=".src/FMain.form" File[2]=".src/mTest.module:911.0" File[3]=".src/TestClass1.class:0.0" File[4]=".src/TestClass2.class:65.8" File[5]="SearchList:207.6" File[6]=" Excluded or Unimplemented:20.4" Count=6 [Watches] Count=0 gambas-3.16.3/app/src/gambas3-selftest/.src/000077500000000000000000000000001411575327000204235ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3-selftest/.src/Inform.class000077500000000000000000000001461411575327000227100ustar00rootroot00000000000000' Gambas class file Fast Static Public Function _call(sMessage As String) Print sMessage End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/000077500000000000000000000000001411575327000227065ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/BaseClass.class000066400000000000000000000007131411575327000255760ustar00rootroot00000000000000' Gambas class file Create Private Public x As Integer Property y As Object Private $y As Object = Null Public b As Boolean Property test As Integer Private iTest As Integer Private Function y_Read() As Object Return $y End Private Sub y_Write(Value As Object) $y = Value End Private Function test_Read() As Integer 'Debug "test_Read" Return iTest End Private Sub test_Write(Value As Integer) 'Debug "test_Write" iTest = Value End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/ChildClass.class000077500000000000000000000003301411575327000257450ustar00rootroot00000000000000' Gambas class file Inherits BaseClass Property y As TestClass1 Private $y As New TestClass1 Private Function y_Read() As TestClass1 Return $y End Private Sub y_Write(Value As TestClass1) $y = Value End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Class1.class000077500000000000000000000000521411575327000250630ustar00rootroot00000000000000' Gambas class file Inherits ChildClass gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Class4.class000077500000000000000000000001711411575327000250700ustar00rootroot00000000000000' Gambas class file Fast Create Private Inherits POINT3D Public a As Integer Public b As Integer Public c As Integer gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Class5.class000077500000000000000000000001511411575327000250670ustar00rootroot00000000000000' Gambas class file Fast Inherits Class4 Public d As Integer Public e As Integer Public f As Integer gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Crash.class000077500000000000000000000000241411575327000247740ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Crash2.class000066400000000000000000000004071411575327000250600ustar00rootroot00000000000000' Gambas class file 'Fast Public hTest As New SubCrash(0, 0) Public hTest2 As New Crash3[] Static Public Function _call(xx As Object, yy As BaseClass, Optional boo As Boolean, Optional ploop As String) As Boolean Dim zz As Crash3 Return True End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Crash3.class000077500000000000000000000005321411575327000250630ustar00rootroot00000000000000' Gambas class file Fast Public ss As String[] Public i As Integer Static Public Function _call(xx As Object, yy As Object) As Boolean Dim iVar As ChildClass Dim ed As BaseClass ivar = New ChildClass Return Bloop(ivar, ed) End Static Private Function Bloop(aa As Object, bb As Object) As Boolean Return aa <> bb End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/FileReadWriteSources/000077500000000000000000000000001411575327000267405ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/FileReadWriteSources/mFileReadWrite.module000066400000000000000000000060301411575327000330110ustar00rootroot00000000000000' Gambas module file Private bReadOK As Boolean Private bWriteOK As Boolean Private hWatchFile As File Private bZeroExpected As Boolean Private Enum Zero, One, Two Public Sub ReadDevZero() Dim ii As Integer Dim tt As Float Dim MyErrs As New String[] bZeroExpected = True ii = 0 Do bReadOK = False tt = Timer hWatchFile = Open "/dev/zero" For Read Watch Do Wait 0.1 Loop Until bReadOK = True Or Timer - tt > 3 If bReadOK = False Or If bZeroExpected = False Then MyErrs.Add(System.Backtrace[0]) Endif Close #hWatchFile Inc ii Loop Until ii = 10 If Zero <> 0 Or One <> 1 Or Two <> 2 Then MyErrs.Add(System.Backtrace[0]) Endif Assert.Equals(MyErrs.Count, 0, "Read from /dev/zero") End Public Sub ReadUrandom() Dim ii As Integer Dim tt As Float Dim MyErrs As New String[] ii = 0 Do bReadOK = False tt = Timer hWatchFile = Open "/dev/urandom" For Read Watch Do Wait 0.1 Loop Until bReadOK = True Or Timer - tt > 3 If bReadOK = False Then MyErrs.Add(System.Backtrace[0]) Endif Close #hWatchFile Inc ii Loop Until ii = 10 Assert.Equals(MyErrs.Count, 0, "ReadUrandom") End Fast Public Sub RWTest() Dim sDescription, sTemp, sStr, tmp As String Dim tt As Float bZeroExpected = False bReadOK = False sTemp = Temp$ Shell "touch " & sTemp Wait hWatchFile = Open sTemp For Read Watch Shell "echo test >> " & sTemp Wait Close #hWatchFile Kill sTemp bWriteOK = False sTemp = Temp$ Shell "touch " & sTemp Wait hWatchFile = Open sTemp For Read Write Watch tt = Timer Do Wait 0.1 Loop Until bWriteOK = True Or Timer - tt > 1 sDescription = "Timer 1" If bWriteOK = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif bWriteOK = False Shell "echo -n test >> " & sTemp Wait tt = Timer Do Wait 0.1 Loop Until bWriteOK = True Or Timer - tt > 1 sDescription = "Timer 2" If bWriteOK = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Seek #hWatchFile, 0 sStr = "" tmp = "" Read #hWatchFile, tmp sStr = tmp tmp = "" Seek #hWatchFile, 9 Read #hWatchFile, tmp sStr &= tmp sDescription = "Seek Read" If sStr <> "testtest" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Close #hWatchFile Kill sTemp End Fast Public Sub File_Write() If bWriteOK = True Then Stop Event Return Endif Try Write #hWatchFile, "test" As String If Error = False Then bWriteOK = True Endif End Fast Public Sub File_Read() Dim iTmp As Integer = Read #hWatchFile As Byte If bZeroExpected = True Then If iTmp <> 0 Then bZeroExpected = False Endif Endif bReadOK = True End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/Module1.module000077500000000000000000000020041411575327000254220ustar00rootroot00000000000000' Gambas module file Fast Public Function awef(Kuka As ChildClass, Kenet As BaseClass) As Boolean Return True End Public Sub JITTest100(iX As Integer, iY As Integer, iZ As Integer, Optional PlotMode As Boolean = False, Optional bDebug As Boolean = False) Dim Saatm As New Integer[4] Dim SoluX As Integer, SoluY As Integer Dim ii As Integer, jj As Integer, nn As Integer Dim tmpX As Integer, tmpY As Integer Dim iRain As Integer Dim pWinds As New POINT[] Dim pWind As New POINTFloat(0, 0) Dim tmpPoint As POINT Dim tmpPointf As New POINTFloat Dim fWind As Float Dim iEta As Integer Dim iPower As Integer[] = [100, 75, 25, 10, 2, 1] Dim hh As New TestClass2 Dim fTimeOfDay As Float = Abs(1 - Abs(((mTest.timo - (mTest.gDay * 3)) / mTest.gHour) - 0.5) * 2) 'peak 23:00 - 06:00... --> 03:00 = 0 ' 15:00 = 1 Dim fTmp As Float If PlotMode = True Then ' iX = CInt((Peli.KokoKartX / MATSIZE) * iX) ' iY = CInt((Peli.KokoKartY / MATSIZE) * iY) Endif Endgambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/POINT3D.class000077500000000000000000000010461411575327000250210ustar00rootroot00000000000000' Gambas class file Fast Export Public X As Integer Public Y As Integer Public Z As Integer Public prl As String Public Sub _new(Optional iX As Short = 0, Optional iY As Short = 0, Optional iZ As Short = 0, Optional ploop As String) X = iX Y = iY Z = iZ prl = ploop End Static Public Function _call(iX As Short, iY As Short, iZ As Short) As POINT3D Dim tmp As New POINT3D(iX, iY, iZ) Return tmp End Public Sub CopyTo(hObject As Object) hObject.x = Me.x hObject.y = Me.y hObject.z = Me.z End ' Gambas class file gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/POINTFloat.class000077500000000000000000000005371411575327000256240ustar00rootroot00000000000000' Gambas class file Public x As Float Public y As Float Public Sub _new(Optional fX As Float = -1.0, Optional fY As Float) x = fX y = fY End Static Public Function _call(fX As Float, fY As Float) As POINTFloat Dim tmp As New POINTFloat(fX, fY) Return tmp End Public Sub XY(fX As Float, fY As Float) x = fX y = fY End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/SubCrash.class000077500000000000000000000005151411575327000254530ustar00rootroot00000000000000' Gambas class file Fast Public x As Float Public y As Float Private ctrl_dc[7] As Integer Public Sub _new(Optional fX As Float = -1.0, Optional fY As Float) ctrl_dc[1] = 0 x = fX y = fY End Static Public Function _call(fX As Float, fY As Float) As SubCrash Dim tmp As New SubCrash(fX, fY) Return tmp End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/TestClass1.class000077500000000000000000000000651411575327000257270ustar00rootroot00000000000000' Gambas class file Export Public x As Integer = 1 gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/TestClass2.class000077500000000000000000000036441411575327000257360ustar00rootroot00000000000000' Gambas class file Export Inherits TestClass1 Public Const TestConst As Integer = 1 Public Const TestConst2 As Integer = 1 Property TestVar As Integer Private iTestVar As Integer Static Public xx As Integer = 1000 Static Public yy As Integer = 2000 Static Public ThisObject As New POINT3D[] Public jep As String Public y As Integer Public z As Integer Static Public iInitVar As Integer Static Public iEventTest As Integer = -1 Private hObserver As Observer = New Observer(mTest.hFormForEvent, False) As "TestObserver" Fast Public Sub _new(Optional aaa As Boolean, Optional ploop As String) jep = ploop y = 10 End Fast Public Procedure TestObserver_TestEvent() ' If iEventTest = -1 Then ' Stop Event ' Endif ''Doesn't work this way... why? iEventTest = 12345 End Fast Static Public Sub _init() iInitVar = 20 End Fast Public Sub _get(iWhich As Integer) As Integer If iWhich = 1 Then Return y Else Return z Endif End Fast Public Sub _put(iValue As Integer, iWhich As Integer) If iWhich = 1 Then y = iValue Else z = iValue Endif End 'Public Sub _next ' ' ' ' End Fast Static Public Sub _call() As String Return "Called" End Public Sub _unknown(...) As Variant Dim va As Variant Dim jj As Integer For Each va In Param If TypeOf(va) = gb.Integer Then jj += CInt(va) Endif Next Return jj End Fast Public Function _compare(oOther As TestClass2) As Integer Return Sgn(Me.y - oOther.y) End Fast Public Procedure JustTesting() z = 0 y = 0 Super.x = 0 End Fast Private Function TestVar_Read() As Integer Return iTestVar End Fast Private Sub TestVar_Write(Value As Integer) iTestVar = Value End Fast Static Public Sub Runshit() Module1.awef(mTest.hChild, Null) Module1.JITTest100(1, 2, 3) Module1.JITTest100(1, 2, 3,, True) Module1.JITTest100(1, 2, 3, True) End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/TestClass3.class000077500000000000000000000006631411575327000257350ustar00rootroot00000000000000' Gambas class file Event TestEvent() Public a As Integer = 1336 Public Sub _unknown(...) Inc a End Fast Public Sub RaiseEvent() Raise TestEvent() End Static Private Sub ByrefSub(ByRef iNum As Integer) Inc iNum End Static Public Function TestByref() As Boolean Dim ii As Integer = 1 ByrefSub(ii) ByrefSub(ByRef ii) If ii <> 2 Then Return False Else Return True Endif End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/YetAnotherClass.class000077500000000000000000000003731411575327000270130ustar00rootroot00000000000000' Gambas class file Fast Public Sub ThisObject_Gets_Lost() Dim ik As Integer Dim tmp As POINT3D With TestClass2 .ThisObject.Add(POINT3D(1, 2, 3)) For Each tmp In .ThisObject If ik < tmp.z Then ik = tmp.z Endif Next End With End gambas-3.16.3/app/src/gambas3-selftest/.src/TestSources/mTest.module000066400000000000000000000330531411575327000252150ustar00rootroot00000000000000' Gambas module file Export Fast Private fTime As Float = Timer Library "libc:6" Private Extern modf(param As Float, pp As Pointer) As Float #If SYSTEM = "Linux" Private sSystem As String = "Linux" #Else If SYSTEM = "FreeBSD" Private sSystem As String = "FreeBSD" #Else If SYSTEM = "OpenBSD" Private sSystem As String = "OpenBSD" #Else If SYSTEM = "NetBSD" Private sSystem As String = "NetBSD" #Else If SYSTEM = "Solaris" Private sSystem As String = "Solaris" #Else Private sSystem As String = "Unknown" #Endif #If ARCHITECTURE = "x86" Private sArchitecture As String = "x86" #Else If ARCHITECTURE = "x86_64" Private sArchitecture As String = "x86_64" #Else If ARCHITECTURE = "ARM" Private sArchitecture As String = "ARM" #Else If ARCHITECTURE = "PPC" Private sArchitecture As String = "PPC" #Else Private sArchitecture As String = "Unknown" #Endif #If Debug Private DebuggingEnabled As Boolean = True #Else Private DebuggingEnabled As Boolean = False #Endif Private $sGrep As String Private sSearch As New String[] Private Const TestConst2 As Integer = 2 Public Const LowestLong As Long = -9223372036854775808 Public Const HighestLong As Long = 9223372036854775807 Public Const LowestInteger As Integer = -2147483648 Public Const HighestInteger As Integer = 2147483647 Public Const LowestShort As Short = -32768 Public Const HighestShort As Short = 32767 Public Struct MyPoint x As Integer y As Integer End Struct Private arr As New Integer[2, 2] Private hProcess As Process Private sTest As String ' Private hStillHere1 As New MyPoint Private Enum Zero, One, Two Public hFormForEvent As New TestClass3 Private iTestAndIf As Integer = 0 Private Errors As New String[] Private hFile2 As File Private iseek As Integer Private hCrash2 As New ChildClass Private bRun As Boolean = False Public Const kkX As Integer = 1999 Public Const kkY As Integer = 1499 Public hChild As New ChildClass Public timo As Integer Public Const gDay As Integer = 739992 Public Const gHour As Integer = 30833 Public Const bbb As Integer = 50 Public bArray As New Boolean[100] Private ctrl_dc[7] As Integer Public sPublic As String = "Test" Fast Private Sub VoidFn() End Fast Public Sub Func1(Optional i As Integer = arr[0, 0]) End Fast Public Function Test(Optional n As Integer) As Integer Return 10 + n End Fast Public Function Func2(Optional i As Integer = Test()) As Integer Return i End Fast Sub CrashMe() Dim x As Collection = ["a": Object] End Private Sub Ploo() Dim ii As Integer Dim hFile As File File.Save("/tmp/TEST", "") hFile = Open "/tmp/TEST" ii = Read #hFile As Integer hFile.Close Kill "/tmp/TEST" End Public Sub Ploo2(hFileArg As File) Dim ii As Integer Seek #hFileArg, iseek ii = Read #hFileArg As Integer Inc iseek End ' Private Sub Ploo2() ' ' Dim ii As Integer ' Dim bDone As Boolean = Exist("/tmp/TEST") ' ' If bDone = False Then ' File.Save("/tmp/TEST", "1234") ' hFile2 = Open "/tmp/TEST" ' Endif ' ' ii = Read #hFile2 As Integer ' ' If bDone = True Then ' hFile2.Close ' Kill "/tmp/TEST" ' Endif ' ' End ' Fast Public Sub Process_Read() ' ' Dim sTmp As String = Read #hProcess, 1 ' ' sTest &= sTmp ' ' End Fast Public Function OptArg(Optional x As Integer = OptArg(1)) As Integer Return 1 End Fast Public Function OptArgII(Optional x As Integer = 1 / 0) As Integer Return 1 End Fast Public Function ArgumentTest(a1 As Integer, a2 As Integer, a3 As Integer, a4 As Integer, a5 As Integer, a6 As Integer, a7 As Integer, a8 As Integer, a9 As Integer, a10 As Integer, a11 As Integer, a12 As Integer, a13 As Integer, a14 As Integer, a15 As Integer, a16 As Integer, a17 As Integer, a18 As Integer, a19 As Integer, a20 As Integer, a21 As Integer, a22 As Integer, a23 As Integer, a24 As Integer, a25 As Integer, a26 As Integer, a27 As Integer, a28 As Integer, a29 As Integer, a30 As Integer, Optional a31 As Integer = ArgumentTest(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 0)) As Integer Return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a20 + a21 + a22 + a23 + a24 + a25 + a26 + a27 + a28 + a29 + a30 End Fast Public Function TestAndIf() As Integer iTestAndIf = 1 Return 0 End Fast Public Function TheLoop(nn As Integer) As Boolean Dim ii As Integer For ii = Choose(nn, 10, 1) To Choose(nn, 1, 10) Step Choose(nn, -1, 1) If ii <= 0 Then Return False If ii = 1 And nn = 1 Then If TheLoop(2) = False Then Return False Endif Endif Next Return True End '' Test Public Sub CrashFunction(Optional a As Integer, ...) End '' Testing testing '' ======= '' Test Fast Public Sub CrashSub() Dim ii As Integer Dim jj As Integer With [1] For ii = 1 To 2 GoSub lbl Next End With Return lbl: Inc jj Catch Print "Catching";; Error.Text Return End Fast Public Function TestErrorManagment(iWhich As Integer) As Integer Dim iError As Integer If iWhich = 1 Then iError = 1 / 0 Else iError = 20 Endif Inc iError Finally Inc iError Return iError Catch iError = 3 End Fast Public Function TestErrorManagment2(iWhich As Integer) As Integer Dim iError As Integer Try iError = 1 If Error Then Return 1 If iWhich = 1 Then Try iError = 1 / 0 Else Try iError = 20 Endif If Error Then Return 2 Return 3 End Fast Public Function TestErrorManagment3(iWhich As Integer) As Integer Dim iError As Integer If iWhich = 1 Then iError = 1 / 0 Else iError = 20 Endif Inc iError Return iError Catch Return 3 End ' Private Sub Grep_Read() ' ' Dim sData As String ' ' sData = Read #Last, Lof(Last) ' $sGrep = sData ' ' End Fast Public Sub TestTester() As Boolean Dim aGrep As String[] Dim sTemp As String Dim sText As String Dim sTmp As String Dim sArr As String Dim bTmp As Boolean Dim n As Integer Dim sMissing As String Dim good As Boolean = False sText = File.Load(Application.Path &/ ".src" &/ "Tests" &/ "GambasSelftests.test") InitSearch() sTemp = Temp$("grep") File.Save(sTemp, sText) For n = 0 To sSearch.Max 'aGrep = ["grep", "-nosiwF", "-m", "1", "--", sSearch[n], sTemp] aGrep = ["grep", "-siwF", "-m", "1", "--", sSearch[n], sTemp] Exec aGrep To $sGrep If $sGrep = "" Then sMissing &= sSearch[n] & gb.NewLine Else If Left$($sGrep, 1) = "'" Then aGrep = ["grep", "-siwF", "--", sSearch[n], sTemp] Exec aGrep To $sGrep bTmp = False For Each sTmp In Split($sGrep, gb.NewLine) If sTmp Then If Left$(sTmp, 1) <> "'" Then bTmp = True Break Endif Endif Next If bTmp = False Then sMissing &= sSearch[n] & gb.NewLine Endif Endif Next Kill sTemp If sMissing = "EndOf" & "ThisList" & gb.NewLine Then good = True Else ' Debug Split(sMissing, gb.NewLine).Count sMissing = ("These key words are missing from test:") & gb.NewLine & sMissing Test.Note(sMissing) 'Message.Warning(sMissing) good = False Endif Return good End Fast Public Function ArrayBoundsTest(iMyArray1 As Object, iMyArray2 As Integer[], iMyArray3 As Float[], iMyArray4 As Boolean[]) As Integer[] ' Debug gb.Integer ' Debug TypeOf(iMyArray1.Bounds.Count);; TypeOf(iMyArray2.Bounds.Count);; TypeOf(iMyArray3.Bounds.Count);; TypeOf(iMyArray4.Bounds.Count) ' Debug [iMyArray1.Bounds.Count, iMyArray2.Bounds.Count, iMyArray3.Bounds.Count, iMyArray4.Bounds.Count] Return [iMyArray1.Bounds.Count, iMyArray2.Bounds.Count, iMyArray3.Bounds.Count, iMyArray4.Bounds.Count] End Fast Private Sub InitSearch() Dim sTmp As String sTmp = File.Load("SearchList") sSearch = Split(sTmp, gb.NewLine) End Fast Public Sub Main() Inform(("This is the Gambas Selftest. To run it in the IDE hit F4.")) ' Dim iResult As Integer = GambasSelftests.FastTests() ' ' If TestClass2.iEventTest <> -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif ' ' hFormForEvent.RaiseEvent() ' ' If TestClass2.iEventTest <> 12345 Then ' Errors.Add(System.Backtrace[0]) ' Endif ' ' Print "Test took " & CStr(Timer - fTime) & " s to run." ' ' If iResult = 0 And Errors.Max = 0 And Errors[0] = "Test" Then ' Inform(("Test passed!")) ' Quit 0 ' Else ' Errors.Remove(0) ' Inform(("ERRORS: ") & gb.NewLine & Errors.Join(gb.NewLine)) ' Endif Quit 1 End Public Sub CrashJIT1(Optional s As String = "a") End Public Sub CrashJIT2(Optional o As Object = Null) End Public Sub CrashJIT3(Optional v As Variant = 1) End Private Function CJ3(Optional v As Variant = Null, s As String = ("b"), v2 As Variant = ["1"], o As Object = ["a", "b", "c"]) As Object Return v2 End Private Function CJ2(Optional v As Variant = CJ3(), Optional b As Boolean = True) As Object If v[0] = "1" Then Return [1, 2, 3] Else Print 1 / 0 Endif End Private Function CJ1(Optional o As Object = CJ2(), Optional b As Boolean = False) As String If o Is Array Then Return "TEST" Else Print 1 / 0 Endif End Public Function CrashJIT4(x As String, Optional s As String = CJ1(), Optional b As Boolean = True) As Byte If s = "TEST" Then Return -1 Else Print 1 / 0 Endif End Public Function CrashJIT5() As Point Dim oo As New Crash3 Dim ss As String[] ss = Split("1,2,3,4,5,6", ",") If ss.Count <> 6 Then Print 1 / 0 Endif Crash3(Null, Null) End Public Sub CrashJIT6(x As Integer, Optional b1 As Boolean = False, b2 As Boolean = False) End Public Sub CrashJIT7(o1 As BaseClass) Dim ii As Integer = o1.x Dim jj As Integer = o1.y.x End Public Function JITTest() As Boolean Dim x As BaseClass = hCrash2 Dim bb As Boolean Select x.x Case 0 bb = JITTestOpt(x, hCrash2.b) End Select JITTestOpt2(x) Return bb End Public Sub JITTestPublic() Dim x As Object = hCrash2 Dim bb As Boolean Select x.x Case 0 JITTestOpt2(x) bb = JITTestOpt(x, hCrash2.b) Case 1 'Debug Case -1 'Debug End Select End Fast Private Sub JITTestOpt2(x As Object) Dim ii, jj As Integer Dim bb As Boolean For ii = 0 To 100 For jj = 0 To 100 If Crash3(x, Point(ii, jj)) = False Then bb = True Endif Next Next For ii = 0 To 100 For jj = 0 To 100 If Crash2(x, hCrash2) = False Then bb = True Endif Next Next If bb = True Then ii = 0 'Debug 1 / ii Endif End Fast Public Function JITTestOpt(x As Object, Optional bBool As Boolean = False) As Boolean Dim hCol As New Collection Dim hObj As ChildClass Dim hObj2 As BaseClass Dim ii, jj As Integer Dim tmpPic As Picture Dim pic2 As New Picture(100, 100) Dim var1 As Boolean[] Dim var2 As New Integer[] For ii = 1 To 100 hObj = New ChildClass hCol.Add(hObj, ii) Next For ii = 0 To 100 For jj = 0 To 100 If Crash2(x, hObj) = False Then Return False Endif Next Next With Draw tmpPic = pic2.Copy() .Begin(tmpPic) If bBool = False Then hObj = New ChildClass For Each hObj In hCol If x.x = 0 Then If hObj.x = 0 Then If Crash2(x, hObj) = False Then Return False Else 'Return True Endif If Crash3(hObj2, hObj) = False Or Crash3(hObj, hObj2) = False Or Crash3(x, hObj) = False Or Crash3(x, hObj2) = False Then Return False Else 'Return True Endif Else Return False Endif Endif Next Endif .End End With Return True End Public Function JITTestOnceMore() As Boolean Dim x As Object = New Class5 Dim bb As Boolean Select x.x Case 0 Return JITTestOrTwice(x) Case 1 'Debug Case -1 'Debug End Select End Public Function JITTestOrTwice(x As Object) As Boolean Dim jj As Integer, ii As Integer Dim bb As Boolean For ii = 0 To 38 For jj = 0 To 38 If Crash3(x, POINT3D(ii, jj, 0)) = True Then BB = True Endif Next Next Return bb End Public Sub JITTestBoolArray(a As String, b As Integer, c As Object, d As Object, Optional e As Boolean = True, Optional f As Boolean = False) If bArray[b] = True Then Endif If IsNull(c) = False And If bArray[bbb] = True Then Endif If IsNull(d) = True And If bArray[bbb] = True Then Endif More(a, e, f) Return End Public Sub More(a As String, Optional e As Boolean = True, Optional f As Boolean = False) If e = False And f = False Then Endif End gambas-3.16.3/app/src/gambas3-selftest/.src/Tests/000077500000000000000000000000001411575327000215255ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3-selftest/.src/Tests/CrashMyTests.test000066400000000000000000000001741411575327000250210ustar00rootroot00000000000000' Gambas test file ''' Test to provoke a crash if necessary Public Sub CCCrash() Dim ff As Float ff = 1 / 0 End gambas-3.16.3/app/src/gambas3-selftest/.src/Tests/FileReadWrite.test000066400000000000000000000003141411575327000251120ustar00rootroot00000000000000' Gambas test file Public Sub FileReadWrite() mFileReadWrite.RWTest() End Public Sub ReadUrandom() mFileReadWrite.ReadUrandom() End Public Sub ReadZero() mFileReadWrite.ReadDevZero() End gambas-3.16.3/app/src/gambas3-selftest/.src/Tests/GambasSelftests.test000066400000000000000000002055101411575327000255200ustar00rootroot00000000000000' Gambas test file 'Export Fast 'Private fTime As Float = Timer Library "libc:6" Private Extern modf(param As Float, pp As Pointer) As Float #If SYSTEM = "Linux" Private sSystem As String = "Linux" #Else If SYSTEM = "FreeBSD" Private sSystem As String = "FreeBSD" #Else If SYSTEM = "OpenBSD" Private sSystem As String = "OpenBSD" #Else If SYSTEM = "NetBSD" Private sSystem As String = "NetBSD" #Else If SYSTEM = "Solaris" Private sSystem As String = "Solaris" #Else Private sSystem As String = "Unknown" #Endif #If ARCHITECTURE = "x86" Private sArchitecture As String = "x86" #Else If ARCHITECTURE = "x86_64" Private sArchitecture As String = "x86_64" #Else If ARCHITECTURE = "ARM" Private sArchitecture As String = "ARM" #Else If ARCHITECTURE = "PPC" Private sArchitecture As String = "PPC" #Else Private sArchitecture As String = "Unknown" #Endif #If Debug Private DebuggingEnabled As Boolean = True #Else Private DebuggingEnabled As Boolean = False #Endif 'Private $sGrep As String 'Private sSearch As New String[] Private Const TestConst2 As Integer = 2 Public Const LowestLong As Long = -9223372036854775808 Public Const HighestLong As Long = 9223372036854775807 Public Const LowestInteger As Integer = -2147483648 Public Const HighestInteger As Integer = 2147483647 Public Const LowestShort As Short = -32768 Public Const HighestShort As Short = 32767 Public Struct MyPoint x As Integer y As Integer End Struct 'Private arr As New Integer[2, 2] Private sTest As String ' ' Private bReadOK As Boolean Private bWriteOK As Boolean Private hWatchFile As File 'Private bZeroExpected As Boolean Private hStillHere1 As New MyPoint ' Private Enum Zero, One, Two Public hFormForEvent As New TestClass3 Private iTestAndIf As Integer = 0 'Private $Errors As New String[] 'Private hFile2 As File Private iseek As Integer 'Private hCrash2 As New ChildClass 'Private bRun As Boolean = False Public Const kkX As Integer = 1999 Public Const kkY As Integer = 1499 Public hChild As New ChildClass Public timo As Integer Public Const gDay As Integer = 739992 Public Const gHour As Integer = 30833 Public Const bbb As Integer = 50 Public bArray As New Boolean[100] Private ctrl_dc[7] As Integer Public sPublic As String = "Test" '' A lot of fast running tests testing diffrent commands of the Gambas3 language. Fast Public Function FastTests() As Integer Dim hSt As Stream Dim sStr As String Dim tmp As String Dim ii As Integer Dim jj, kk As Integer Dim nn As Integer Dim pp As Pointer Dim pp2 As Pointer Dim bTest As Boolean Dim cCol As Collection = ["A": 1, "B": 2, "C": 3] Dim InlineArr As String[] = ["A", "B", "C"] Dim ClassTest As New TestClass2 Dim ClassTestb As New TestClass2 Dim ClassTestc As New TestClass3 Dim ClassArray As New TestClass2[] Dim hFile As File Dim TestPoint As New MyPoint Dim tt As Float Dim TestByte As Byte Dim TestShort As Short Dim TestLong As Long Dim hStillHere2 As New MyPoint Dim TestSingle As Single Dim fArr As New Float[] Dim sngArr As New Single[] 'Dim lArr As New Long[] Dim iArr As New Integer[] Dim shrArr As New Short[] 'Dim btArr As New Byte[] Dim bArr As New Boolean[] Dim sArr As New String[] Dim dArr As New Date[] Dim vArr As New Variant[] 'Dim oArr As New Object[] 'Dim pArr As New Pointer[] Dim oo As Object Dim e As New Collection Dim {Dim} As Integer = 6 Dim a As New Integer[1] Dim b As New Float[1] Dim hVar As Variant[] Dim hDate As Date Dim l1, l2 As Long 'Dim sTemp As String 'Dim hTest1 As Crash 'Dim hTest2 As New Crash Dim hTest3 As New Crash2 Dim hCrash As New ChildClass Dim sDescription As String hStillHere1.x = 123 hStillHere1.y = 456 hStillHere2.x = 123 hStillHere2.y = 456 'TODO: Check prerequisites in _Setup() ' ------------------------------------------------- Prerequisites If Exist(Application.Path &/ ".src" &/ "TestSources" &/ "mTest.module") = False Then 'Message.Error("Cannot open source file for testing! Test must be executed from GambasTest project root folder.") Inform(("Cannot open source file for testing! Test must be executed from GambasTest project root folder.")) Return -1 Endif If DebuggingEnabled = False Then Inform(("GambasTester cannot be run without debugging information! Recompile debugging information enabled.")) Return -1 Endif ' ------------------------------------------------- End Prerequisites ' If bRun = False Then ' Errors.Add("Test") ' Endif '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''Crash and compiler tests. ''Big thanks to Emil Lenngren (+ other people who have filed bug reports) from Gambas mailing list! Test.Note("Start Crash and compiler tests") 'ByRefTest(ii) ctrl_dc[1] = 0 iseek = 0 Try mTest.Ploo() File.Save("/tmp/TEST", "1234567890123456789") hFile = Open "/tmp/TEST" Seek #hFile, 1 mTest.Ploo2(hFile) Seek #hFile, 20 Do Try mTest.Ploo2(hFile) If Error Then Break Loop hFile.Close mTest.CrashMe mTest.CrashJIT1 mTest.CrashJIT2 mTest.CrashJIT3 Try ii = mTest.CrashJIT4() ii = mTest.CrashJIT4("something") If ii <> 255 Then Print 1 / 0 Endif ii = 0 mTest.CrashJIT5() mTest.CrashJIT6(ii,, True) mTest.CrashJIT7(hCrash) sStr = "sdfds$£½435dgfh321 dfgfd8(/$£½fdg" sStr = RegExp.Replace(sStr, "[[:^alnum:]]", "") sStr = String.InStr("Test", "") sStr = Subst$("&1", IIf(False, "x", "")) sStr = "" If bTest = True And sStr Then Endif hVar = [a, b, 1] '#If False Try ClassTestc.abc = 123 Try TestClass3.abc() '#Endif mTest.CrashFunction(2147483647, 2147483647, 2147483647, 2147483647) '#If False 'Try oo = [TestClass1] Try oo = [TestClass1] '#Endif mTest.Func1() {Dim} += mTest.Func2() '#If False Try Print [mTest.VoidFn()] '#Endif iArr.Add(1) fArr.Add(1) vArr.Add([iArr, fArr, 1]) iArr.Clear() fArr.Clear() vArr.Clear() For ii = 1 To 2 e["hello"] = 1 For Each jj In e e.Clear() Next Next e.Clear() mTest.CrashSub() '#If False Try ii = 1 ^ ([1, "kk"][0]) '#Endif ii = 0 hTest3.hTest.x = 1 Try bArr = cCol[mTest.CrashMe] Test.Note("End Crash and compiler tests") ''Crash test end '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim sStr1 As String = "" Dim sStr2 As String = "Gambas" Dim sStr3 As String = "Mätä" Dim bByte As Byte = 255 Dim iShort As Short = -1 Dim bBoolean As Boolean = True sStr = Temp ii = 0 'again: hFile = Open sStr For Read Write Create Write #hFile, bBoolean As Boolean Write #hFile, sStr3 As String Write #hFile, iShort As Short Write #hFile, bByte As Byte Write #hFile, sStr1 As String Write #hFile, bByte As Byte Write #hFile, sStr2 As String Write #hFile, bByte As Byte Seek #hFile, 0 bBoolean = Read #hFile As Boolean Assert.Ok(bBoolean, "ReadFileBoolean") ' If bBoolean = False Then ' Errors.Add(System.Backtrace[0]) ' Endif sStr3 = Read #hFile As String Assert.StringEquals(sStr3, "Mätä", "ReadFileString") iShort = Read #hFile As Short Assert.Equals(iShort, -1, "ReadFileShort") ' If iShort <> -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif bByte = Read #hFile As Byte Assert.Equals(bByte, 255, "ReadFileByte") ' If bByte <> 255 Then ' Errors.Add(System.Backtrace[0]) ' Endif sStr1 = Read #hFile As String Assert.Equals(sStr1, "", "ReadFileString2") ' If sStr1 <> "" Then ' Errors.Add(System.Backtrace[0]) ' Endif bByte = Read #hFile As Byte Assert.Equals(bByte, 255, "ReadFileByte2") ' If bByte <> 255 Then ' Errors.Add(System.Backtrace[0]) ' Endif sStr2 = Read #hFile As String Assert.Equals(sStr2, "Gambas", "ReadFileGambas") ' If sStr2 <> "Gambas" Then ' Errors.Add(System.Backtrace[0]) ' Endif bByte = Read #hFile As Byte Assert.Equals(bByte, 255, "ReadFileByte3") ' If bByte <> 255 Then ' Errors.Add(System.Backtrace[0]) ' Endif hFile.Close 'Inc ii 'If ii < 5 Then Goto again 'Debug Errors.Count sDescription = "Testing StringArray" For Each sStr In ["Integer[]", "Short[]", "Long[]", "Float[]", "Single[]", "Variant[]", "Pointer[]"] oo = Null oo = Object.New(sStr) oo.Clear For ii = 1 To 10000 oo.Add(ii) Next Assert.NotOk(oo.Find(0) <> -1 Or oo.Find(10001) <> -1 Or oo.Find(999) = -1, sDescription) ' If oo.Find(0) <> -1 Or oo.Find(10001) <> -1 Or oo.Find(999) = -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif oo.Fill(666, 0, 10000) Assert.NotOk(oo.Find(0) <> -1 Or oo.Find(10000) <> -1 Or oo.Find(666) = -1, sDescription) ' If oo.Find(0) <> -1 Or oo.Find(10000) <> -1 Or oo.Find(666) = -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif oo.Clear Next sStr = "" oo = Null Assert.NotOk("abc" == "ab", "String Comparison 1") If Not ("abc" == "ab") Then sStr = "T" ' Else ' Errors.Add(System.Backtrace[0]) Endif Assert.Ok("abc" == "abc", "String Comparison 2") If "abc" == "abc" Then sStr &= "h" ' Else ' Errors.Add(System.Backtrace[0]) Endif Assert.Ok("abc" == "abC", "String Comparison 3") If "abc" == "abC" Then sStr &= "i" ' Else ' Errors.Add(System.Backtrace[0]) Endif Assert.Ok("abc" <> "ab", "String Comparison 4") If "abc" <> "ab" Then sStr &= "s" ' Else ' Errors.Add(System.Backtrace[0]) Endif Assert.NotOk("abc" = "abC", "String Comparison 5") If Not ("abc" = "abC") Then sStr &= " " ' Else ' Errors.Add(System.Backtrace[0]) Endif Assert.ok("abc" = "abc", "String Comparison 6") If "abc" = "abc" Then sStr &= UCase$("g") ' Else ' Errors.Add(System.Backtrace[0]) Endif sStr &= Mid$("Alphabets", 5, 1) 'a sStr &= LCase$(Left$("Mustard", 1)) 'm sStr &= Mid$(Right$("Alphabets", 4), 1, 1) 'b sStr &= Chr$(Asc("a")) sStr &= "X" sStr = Replace$(sStr, "X", "s") Assert.StringEquals(sStr, "This Gambas", "Playing with Strings") ' If sStr <> "This Gambas" Then ' Errors.Add(System.Backtrace[0]) ' Endif sDescription = "Testing RInStr" If Assert.Ok(RInStr("Gambas is basic", "bas") = 11, sDescription) Then If Assert.Ok(RInStr("Gambas is basic", "bas", 10) = 4, sDescription) Then If Assert.Ok(RInStr("Gambas is basic", "not") = 0, sDescription) Then sStr &= " " ' Else ' Errors.Add(System.Backtrace[0]) Endif ' Else ' Errors.Add(System.Backtrace[0]) Endif ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok(Html$(">Gambas<") Ends "<", "Html lt") Then sStr &= "v" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok(Html$(">Gambas<") Begins ">", "Html gt") Then sStr &= "e" ' Else ' Errors.Add(System.Backtrace[0]) Endif Assert.NotOk(Html$(">Gambas") Ends "<" Or Html$("Gambas<") Begins ">", "Bad Html gt lt") ' Errors.Add(System.Backtrace[0]) ' Endif If Assert.Ok("Gambas" Like "G*", "Like 1") Then sStr &= "r" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok("Gambas" Like "?[Aa]*", "Like 2") Then sStr &= "s" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.NotOk(("Gambas" Like "G[^Aa]*"), "Like 3") Then sStr &= RTrim$("i ") ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok(InStr("Gambas is basic", "bas") = 4, "Instr 1") Then If Assert.Ok(InStr("Gambas is basic", "bas", 10) = 11, "Instr 2") Then If Assert.Ok(InStr("Gambas is basic", "not") = 0, "Instr 3") Then sStr &= Trim$(" o ") ' Else ' Errors.Add(System.Backtrace[0]) Endif ' Else ' Errors.Add(System.Backtrace[0]) Endif ' Else ' Errors.Add(System.Backtrace[0]) Endif sStr &= LTrim$(" n") If Assert.Ok(Split(sStr, " ").Count = 3, "Split string") Then sStr &= Space$(1) ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok(Scan(sStr, "* * *").Count = 3, "Scan string") Then sStr &= "i" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok("abcd" > "abc", "string greater") Then sStr &= "s" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.NotOk("abcd" < "abc", "string not smaller") Then sStr &= " " ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.ok("abcd" >= "abc", "string greater equals") Then sStr &= "s" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok("abc" >= "abc", "string greater equals 2") Then sStr &= "o" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok("abc" <= "abcd", "string samller equals") Then sStr &= "m" ' Else ' Errors.Add(System.Backtrace[0]) Endif If Assert.Ok("abc" <= "abc", "string samller equals 2") Then sStr &= "e" ' Else ' Errors.Add(System.Backtrace[0]) Endif sStr &= "&1&2&4&3" sStr = Subst$(sStr, "w", "h", "t", "a") Assert.StringEquals(UnQuote$("This is not a \\\"quoted\\\"\\nmulti-line string."), "This is not a \"quoted\"\nmulti-line string.", "UnQuote$") ' If UnQuote$("This is not a \\\"quoted\\\"\\nmulti-line string.") <> "This is not a \"quoted\"\nmulti-line string." Then ' Errors.Add(System.Backtrace[0]) ' Endif sStr &= " tested for string e" sStr &= String$(2, "r") sStr &= "ors." Assert.Equals(Len(sStr), 57, "Lenstr57") ' If Len(sStr) <> 57 Then ' Errors.Add(System.Backtrace[0]) ' Endif 'Debug sStr Shell "echo '" & sStr & "' | md5sum" To tmp Assert.StringEquals(Left$(tmp, 32), "d2cbdfdf41d7aafb66c0df1c9ffd482f", "Validate result with md5sum.") ' If Left$(tmp, 32) <> "d2cbdfdf41d7aafb66c0df1c9ffd482f" Then 'Validate result with md5sum. ' Errors.Add(System.Backtrace[0]) ' Endif ' TODO: Really the same???? This: Assert.equals(Sin(0.5) ^ 2 + Cos(0.5) ^ 2, 1, "Trigonometric 1") Assert.equals(Sin(0.5) ^ 2.0 + Cos(0.5) ^ 2.0, 1, "Trigonometric 2") ' And This: If (Sin(0.5) ^ 2 + Cos(0.5) ^ 2) <> 1 Or If (Sin(0.5) ^ 2.0 + Cos(0.5) ^ 2.0) <> 1 Then Assert.Fail("Trigonometric 1+2") Endif Assert.equals(Sin(ASin(0.5)), 0.5, "Trigonometric 3") Assert.equals(Sin(ASin(0.5)) ^ 5, 0.5 ^ 5, "Trigonometric 4") ' If Sin(ASin(0.5)) <> 0.5 Or If Sin(ASin(0.5)) ^ 5 <> 0.5 ^ 5 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.LessEqual(Abs(Cos(ACos(0.5)) - 0.5), 1.1102230246252E-16, "Trigonometric 5") ' If Abs(Cos(ACos(0.5)) - 0.5) > 1.1102230246252E-16 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.NotOk(Abs(Tan(ATan(0.5)) - 0.5) > 5.5511151231259E-17, "Trigonometric 4") ' If Abs(Tan(ATan(0.5)) - 0.5) > 5.5511151231259E-17 Then '5.5511151231258E-17 OK? ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Str(ACosh(2)), Str(1.31695789692482), "Str(ACosh(2))") ' If Str(ACosh(2)) <> Str(1.31695789692482) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Deg(Ang(-1, 1)), 135, "Deg(Ang(-1,1))") ' If Not (Deg(Ang(-1, 1)) = 135) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Str(ATanh(0.5)), Str(0.549306144334055), "Str(ATanh(0.5))") ' If Not Str(ATanh(0.5)) = Str(0.549306144334055) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Str(Sinh(1)), Str(1.1752011936438), "Str(Sinh(1))") ' If Str(Sinh(1)) <> Str(1.1752011936438) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(((8 Or 32) Xor 16), 56, "((8 Or 32) Xor 16)") ' If ((8 Or 32) Xor 16) <> 56 Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = BClr(40, 3) '32 ii = BSet(ii, 30) ii += BChg(0, 3) ii = Lsl(ii, 1) ii = -ii ii = Lsr(ii, 1) '1073741784 ii += Shl(9, 2) ' 111111111111111111111111111100 ii += Shr(24, 3) '111111111111111111111111111111 For jj = 0 To 31 ii = Rol(ii, jj) Next Assert.Ok(BTst(ii, 13), "Bit manipulation 1") ' If BTst(ii, 13) = False Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.NotOk(BTst(ii, 14), "Bit manipulation 2") ' If BTst(ii, 14) = True Then ' Errors.Add(System.Backtrace[0]) ' Endif For jj = 0 To 31 ii = Ror(ii, jj) Next l1 = 1 For l2 = 0 To 63 l1 = BChg(l1, l2) Next Assert.Equals(l1, -2, "Bit manipulation 3") Assert.Equals(Bin$(ii), "111111111111111111111111111111", "Bit manipulation 4") Assert.Equals(Asr(CShort(-4), 1), -2, "Bit manipulation 5") Assert.Equals(BSet(CShort(-2), 0), -1, "Bit manipulation 6") Assert.Equals(Ror(CShort(1), 1), -32768, "Bit manipulation 7") Assert.Equals(Shl(CShort(-1), 0), -1, "Bit manipulation 8") ' If l1 <> -2 Or Bin$(ii) <> "111111111111111111111111111111" Or Asr(CShort(-4), 1) <> -2 Or BSet(CShort(-2), 0) <> -1 Or Ror(CShort(1), 1) <> -32768 Or Shl(CShort(-1), 0) <> -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = Abs(-100) Dec ii Inc ii ii /= 3 ii = Fix(ii) Assert.Equals(Frac(ii / 2), 0.5, "Some numbers crumpling") ' If Frac(ii / 2) <> 0.5 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Int(Pi), 3, "Int Pi") ' If Int(Pi) <> 3 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Int(-Pi), -4, "Int -Pi") ' If Int(-Pi) <> -4 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Max(Pi, 2), Pi, "Max Pi") ' If Max(Pi, 2) <> Pi Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Min(Pi, 2), 2, "Min Pi") ' If Min(Pi, 2) <> 2 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Sgn(-123456789), -1, "Sgn(-123456789)") ' If Sgn(-123456789) <> -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Sgn(-Pi), -1, "Sgn(-Pi)") ' If Sgn(-Pi) <> -1 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Round(Pi, -2), 3.14, "Round(Pi, -2)") Assert.Equals(Round(CSingle(6) + 0.01), 6, "Round(CSingle(6) + 0.01)") ' If Round(Pi, -2) <> 3.14 Or Round(CSingle(6) + 0.01) <> 6 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Round(1972, 2), 2000, "Round(1972, 2)") ' If Round(1972, 2) <> 2000 Then ' Errors.Add(System.Backtrace[0]) ' Endif Randomize 123 If Assert.Ok(CInt(Rnd(1, 10)) = 3 And CInt(Rnd(1, 10)) = 3 And CInt(Rnd(1, 10)) = 9, "Rnd 1") Then Select Case 5 Case CInt(Rnd(1, 10)) Assert.Fail("Rnd 2") 'Errors.Add(System.Backtrace[0]) Case CInt(Rnd(1, 10)) '5 Assert.Pass("Rnd 3") Case CInt(Rnd(1, 10)) Assert.Fail("Rnd 4") 'Errors.Add(System.Backtrace[0]) End Select Else Assert.Fail("Rnd 5") 'Errors.Add(System.Backtrace[0]) Endif ii = 3 Assert.StringEquals(Choose(ii, "one", "two", "three", "four"), "three", "Choose 1") ' If Choose(ii, "one", "two", "three", "four") <> "three" Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = 3 Assert.Ok(IsNull(Choose(ii * 2, "one", "two", "three", "four")), "Choose 2") Assert.Ok(IsNull(Choose(-2, "one", 2)), "Choose 3") Assert.Ok(IsNull(Choose(2000000000, True, Date(Now))), "Choose 4") Assert.Ok(IsNull(Choose(-2000000000, True, Date(Now))), "Choose 5") ' If IsNull(Choose(ii * 2, "one", "two", "three", "four")) = False Or IsNull(Choose(-2, "one", 2)) = False Or IsNull(Choose(2000000000, True, Date(Now))) = False Or IsNull(Choose(-2000000000, True, Date(Now))) = False Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = 7 sStr = If((ii Mod 2) = 0, "even", "odd") Assert.StringEquals(sStr, "odd", "IIf ii Mod 2") ' If sStr <> "odd" Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = 2 Try ii /= 0 Assert.Error("ii /= 0") ii = 0 Try ii = 3 / ii Assert.Error("ii = 3 / 0") Try ii = "cat or dog" Assert.Error("ii = cat or dog") '#If False Try ii = 1.234 Div 5 Assert.Error("ii = 1.234 Div 5") '#Endif Assert.Equals(19 Div 5, 19 \ 5, "Is 19 Div 5") ' If 19 Div 5 <> 19 \ 5 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(19 Div 5, 3, "Is2 19 Div 5") ' If 19 Div 5 <> 3 Then ' Errors.Add(System.Backtrace[0]) ' Endif 'If "And If" fails, this raises division by zero. If 1 = 2 And If 1 / 0 Then Else Assert.Pass("And If test 1") Endif If 1 = 2 And If Me._TestAndIf() = 0 Then Assert.Fail("And If test 2") Endif Assert.Equals(iTestAndIf, 0) ' If iTestAndIf <> 0 Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = 3 ii ^= 2 ii -= 1 ii = ii ^ 2 Assert.Equals(ii, 64) Assert.Equals(CStr(2 ^ 23), "8388608", "Int 1") ' If ii <> 64 Or CStr(2 ^ 23) <> "8388608" Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(ii ^ 2, ii * ii, "Int 2") ' If ii ^ 2 <> ii * ii Then ' Errors.Add(System.Backtrace[0]) ' Endif ii *= 2 Assert.Equals(ii, 128, "Int 3") ' If ii <> 128 Then ' Errors.Add(System.Backtrace[0]) ' Endif ii \= 3 Assert.Equals(ii, 42, "Int 4") ' If ii <> 42 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Asl(12, 3), Shl(12, 3), "Asl Shl") ' If Asl(12, 3) <> Shl(12, 3) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Asr(12, 3), Shr(12, 3), "Asr Shr") ' If Asr(12, 3) <> Shr(12, 3) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Ang(-1, 1), ATan2(1, -1), "Ang Atan2") ' If Ang(-1, 1) <> ATan2(1, -1) Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Sinh(ASinh(0.5)) - 0.5, 0, "Sinh ASinh") ' If Sinh(ASinh(0.5)) - 0.5 <> 0 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Ok(TestClass3.TestByref(), "TestClass3.TestByref") ' If TestClass3.TestByref() = False Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = 0 Do Inc ii If ii = 10 Then Break Loop Assert.Equals(ii, 10, "Breaktest") ' If ii <> 10 Then ' Errors.Add(System.Backtrace[0]) ' Endif ii = 0 With TestClass2 ii = .TestConst + TestConst2 End With Assert.Equals(ii, 3, "Test With") ' If ii <> 3 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Cbr(1000), 10, "Cbr") ' If Cbr(1000) <> 10 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Sqr(100), 10, "Sqr") ' If Sqr(100) <> 10 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.LessEqual((Cbr(Pi ^ 3) - Pi), 4.4408920985007E-16, "Cbr(Pi ^ 3) - Pi") ' If (Cbr(Pi ^ 3) - Pi) > 4.4408920985007E-16 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Sqr(Pi ^ 2), Pi, "Sqr(Pi ^ 2)") ' If Sqr(Pi ^ 2) <> Pi Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(CByte(17), 17, "CByte(17)") ' If CByte(17) <> 17 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(CByte(100000), 160, "CByte(100000)") ' If CByte(100000) <> 160 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(CByte(True), 255, "CByte(True)") ' If CByte(True) <> 255 Then ' Errors.Add(System.Backtrace[0]) ' Endif Test.Note("Or Or Xor") If (1 = 2 Or 3 = 4) Or (1 = 1 Xor 2 = 2) Then Assert.Fail("Or Or Xor") Endif Test.Note("Or If Else") If 1 = 1 Or If 1 / 0 Then Else Assert.Fail("Or If Else") Endif Test.Note("CBool") If CBool(1) = False Or CBool(0) = True Or CBool("Gambas") = False Or CBool("") = True Or CBool(Null) = True Then Assert.Fail("CBool") Endif Assert.LessEqual(Abs((ACosh(Cosh(0.5)) - 0.5)), 1.7E-16, "Abs((ACosh(Cosh(0.5)) - 0.5)") ' If Abs((ACosh(Cosh(0.5)) - 0.5)) > 1.7E-16 Then ' Errors.Add(System.Backtrace[0]) ' Endif Test.Note("CFloat") If CFloat("+3.1416") <> 3.1416 Or CFloat("1.0E+3") <> 1000 Or CFloat(0.00005) <> CFloat(CStr(CFloat(0.00005))) Or CFloat(10000400000000) <> 1.00004E+13 Then Assert.Fail("CFloat") Endif Test.Note("CShort") If CShort(100000) <> -31072 Or CShort("17") <> 17 Or CShort(True) <> -1 Then Assert.Fail("CShort") Endif Test.Note("CSingle") If Format$(CSingle("+3.1416"), "#.####") <> Str$(3.1416) Or CSingle("1.0E+3") <> 1000 Then '' Or CSng(Pi) <> 3.141592741013 Then' Actually gives 3.14159274101257 Which is correct? Assert.Fail("CSingle") Endif Assert.Equals(Format$(Pi, "#.##"), Str$(3.14), "Format Pi") ' If Format$(Pi, "#.##") <> Str$(3.14) Then ' Assert.Fail("Format Pi") ' Endif Test.Note("VarPtr") bTest = True pp = VarPtr(bTest) If Boolean@(pp) <> bTest Or Boolean@(pp) = False Then Assert.Fail("VarPtr") Endif Test.Note("VarPtr2") bTest = False pp = VarPtr(bTest) If Boolean@(pp) <> bTest Or Boolean@(pp) = True Then Assert.Fail("VarPtr2") Endif Assert.Equals(Val(Format$(Exp(20), "#########.#####")), 485165195.40979, "Val(Format$(Exp(20)") ' If Val(Format$(Exp(20), "#########.#####")) <> 485165195.40979 Then ''Is this OK? ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(CInt(Exp10(4)), 10000, "CInt(Exp10(4))") Assert.Equals(CInt("12"), 12, "CInt 12") ' If CInt(Exp10(4)) <> 10000 Or CInt("12") <> 12 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Exp2(4), 16, "Exp2(4)") ' If Exp2(4) <> 16 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Expm(0.5), (Exp(0.5) - 1), "Expm vs Exp") ' If Expm(0.5) <> (Exp(0.5) - 1) Then ' Errors.Add(System.Backtrace[0]) ' Endif Test.Note("Goto Test") TestLabel1: Goto TestLabel3 TestLabel2: Assert.Fail("Goto TestLabel3 did not happen") TestLabel3: Assert.Equals(Eval(Quote$("This is not a \\\"quoted\\\"\\nmulti-line string.")), "This is not a \\\"quoted\\\"\\nmulti-line string.", "Eval Quote Test") ' If Eval(Quote$("This is not a \\\"quoted\\\"\\nmulti-line string.")) <> "This is not a \\\"quoted\\\"\\nmulti-line string." Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(Eval("A + B + C", cCol), 6, "Eval(A + B + C, cCol)") ' If Eval("A + B + C", cCol) <> 6 Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(InlineArr.Join("/"), "A/B/C", "InlineArr.Join") ' If InlineArr.Join("/") <> "A/B/C" Then ' Errors.Add(System.Backtrace[0]) ' Endif If InlineArr[0] <> "A" Or InlineArr[1] <> "B" Or InlineArr[2] <> "C" Then Assert.Fail(InlineArr) Endif Assert.Equals(Hyp(1.2, -2.3), Sqr(1.2 ^ 2 + -2.3 ^ 2), "Hyp = Sqr") ' If Hyp(1.2, -2.3) <> Sqr(1.2 ^ 2 + -2.3 ^ 2) Then ' Errors.Add(System.Backtrace[0]) ' Endif If IsBoolean("False") = False Or IsBoolean("FALSE") = False Or IsBoolean("true") = False Or IsBoolean("123") = True Then Assert.Fail("IsBoolean") Else Assert.Pass("IsBoolean") Endif If IsBoolean("-1") = True Or IsBoolean("") = True Then Assert.Fail("IsBoolean2") Else Assert.Pass("IsBoolean2") Endif If HighestLong <> 9223372036854775807 Or LowestLong <> -9223372036854775808 Or (HighestLong + LowestLong) <> -1 Or HighestInteger <> 2147483647 Or LowestInteger <> -2147483648 Or (HighestInteger + LowestInteger) <> -1 Or HighestShort <> 32767 Or LowestShort <> -32768 Or (HighestShort + LowestShort) <> -1 Then Assert.Fail("HighestLong LowestLong") Else Assert.Pass("HighestLong LowestLong") Endif If System.Architecture <> sArchitecture Or System.Family <> sSystem Then Assert.Fail("System.Architecture System.Family") Else Assert.Pass("System.Architecture System.Family") Endif iTestAndIf = 0 If 1 = 2 Or Me._TestAndIf() = 1 Then Assert.Fail("Is 1 = 2 Or Me._TestAndIf() = 1") Else Assert.Pass("Is 1 = 2 Or Me._TestAndIf() = 1") Endif Assert.Notequals(iTestAndIf, 0, "iTestAndIf = 1") ' If iTestAndIf = 0 Then ' Errors.Add(System.Backtrace[0]) ' Endif If 1 = 2 Or If Me._TestAndIf() = 1 Then Assert.Fail("Is 1 = 2 Or If Me._TestAndIf() = 1") Else Assert.Pass("Is 1 = 2 Or If Me._TestAndIf() = 1") Endif Assert.Equals(iTestAndIf, 1, "iTestAndIf = 1") ' If iTestAndIf <> 1 Then ' Errors.Add(System.Backtrace[0]) ' Endif iTestAndIf = 0 If IsBlank("Cheque") = True Or IsBlank(" \t") = False Then Assert.Fail("IsBlank") Else Assert.Pass("IsBlank") Endif Assert.Ok(IsDigit("1972"), "IsDigit(1972)") ' If IsDigit("1972") = False Then ' Errors.Add(System.Backtrace[0]) ' Endif If IsDigit("three") = True Or IsDigit("123a") = True Then Assert.Fail("IsDigit") Else Assert.Pass("IsDigit") Endif Assert.Ok(IsDir(Application.Path), "IsDir(Application.Path)") ' If IsDir(Application.Path) = False Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.NotOk(IsDir(Application.Path &/ ".src" &/ "mTest.module"), "IsDir <> File") ' If IsDir(Application.Path &/ ".src" &/ "mTest.module") = True Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.NotOk(IsDir("c24b7a17-c968-4145-b03d-da0ac6477cdc"), "Not existent dir/file") ' If IsDir("This probably doesn't exist.") = True Then ' Errors.Add(System.Backtrace[0]) ' Endif Assert.Equals(ClassTest.x, 1, "ClassTest.x = 1 ") ' If ClassTest.x <> 1 Then ' Errors.Add(System.Backtrace[0]) ' Endif jj = 1 For Each ii In cCol If ii = 2 Then Continue Inc jj Next If jj <> 3 Then Assert.Fail("Continue failure") Else Assert.Pass("Continue ok") Endif ' ------------------------------------------------- ' TODO: From here on use appropriate Assertions. ' ' Too much work to replace the old Errors.Add(System.Backtrace[0]) by appropriate Asserts. To ' ' Now I replace ' ' Errors.Add(System.Backtrace[0]) ' Endif ' ' by ' ' Assert.Fail(sDescription) ' Else ' Assert.Pass(sDescription) ' Endif ' ------------------------------------------------- sDescription = "Test Hex$" If Hex$(1972) <> "7B4" Or Hex$(1972, 8) <> "000007B4" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Assert.Ok(IsLCase("gambas"), "IsLCase 1") ' If IsLCase("gambas") = False Then ' Errors.Add(System.Backtrace[0]) ' Endif sDescription = "IsLCase 2" If IsLCase("Cool") = True Or IsLCase("jürgen") = True Or IsLCase("ab3as") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsUCase GAMBAS" If IsUCase("GAMBAS") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsUCase Cool" If IsUCase("Cool") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "CVariant array" If Object.Type([CVariant("a"), "b", "c"]) <> "Variant[]" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "String array" If Object.Type(["a", "b", "c"]) <> "String[]" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "9A177BA5" If IsHexa("9A177BA5") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsHexa" If IsHexa("GAMBAS") = True Or IsHexa("") = True Or IsHexa(Null) = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ''IsNumber now takes only string. sDescription = "IsNumber" If IsNumber("1") = False Or IsNumber("False") = True Or IsNumber(Str(Pi)) = False Or IsNumber("9223372036854775807") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsNumber2" If IsNumber(CStr(Now)) = True Or IsNumber("") = True Or IsNumber("123a") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsFloat" If IsFloat(Str(1.2345)) = False Or IsFloat("123") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsFloat2" If IsFloat("Pi") = True Or IsFloat("3.36.1") = True Or IsFloat(CStr(Now)) = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Val Str" If (Val(Str(0.02 - 0.03)) + 0.04) <> 0.03 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ClassTest = New TestClass2 ClassTest.y = 1 ClassArray.Add(ClassTest) ClassTest = New TestClass2 ClassTest.y = 2 ClassArray.Add(ClassTest) ClassTest = New TestClass2 ClassTest.y = 3 ClassArray.Add(ClassTest) ClassTest = New TestClass2 ClassTest.y = 2 ClassTestb = New TestClass2 ClassTestb.y = 10 sDescription = "ClassArray" If ClassArray.Exist(ClassTest) = False Or ClassArray.Find(ClassTest) = -1 Or ClassArray.Exist(ClassTestb) = True Or ClassArray.Find(ClassTestb) <> -1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsInteger" If IsInteger("12") = False Or IsInteger("12 + 5 + 4") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsInteger2" If IsInteger(CStr(Pi)) = True Or IsInteger("12.3") = True Or IsInteger("") = True Or IsInteger(CStr(Now)) = True Or IsInteger(Null) = True Or IsInteger("12 + 5.4") = True Or IsInteger(CStr(12 + 5.4)) = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsPunct" If IsPunct(":-)") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsPunct2" If IsPunct(":-p") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsAscii" If IsAscii("Gambas") = False Or IsAscii(Now) = False Or IsAscii(188) = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsAscii2" If IsAscii("Benoît") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsDate" dArr.Add(Now) If IsDate(Str(Now)) = False Or IsDate(Str(CDate(Now + 1))) = False Or IsDate(Str(dArr[0])) = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsDate2" If IsDate("1") = True Or IsDate(CStr(Now + 1)) = True Or IsDate("2488329.65453707") = True Then Print IsDate("1");; IsDate(CStr(Now + 1));; CStr(Now + 1);; IsDate("2488329.65453707") Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsLetter" If IsLetter("Gambas") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsLetter2" If IsLetter("Cool!") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsLong" If IsLong("1") = False Or IsLong("9223372036854775807") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Typeof Lof" hfile = Open Application.Path &/ ".src" &/ "TestSources" &/ "mTest.module" If TypeOf(Lof(hFile)) <> gb.Long Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Close hFile sDescription = "IsSpace" If IsSpace("\n \r\n") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IsSpace2" If IsSpace("Gambas\n") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Floor" If Floor(Pi) <> 3 Or Floor(-Pi) <> -4 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Ceil" If Ceil(Pi) <> 4 Or Ceil(-Pi) <> -3 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Log2" If Log2(16) <> 4 Or (Log2(536870912) <> CInt(Log2(536870912))) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Log2-2" If Log2(16) <> Log(16) / Log(2) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Format$ Log" If Format$(Log(2.71828), "0.############") <> Str$(0.999999327347) Then ''Is this OK? Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Log10" If Log10(10) <> 1 Or Log10(1000) <> 3 Or Log10(1000000) <> 6 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Log10-2" If Format$(Log10(2.5), "0.############") <> Str$(0.397940008672) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sStr = Format(Date(2014, 8, 27, 15, 28, 55), "hh:nn dd/mm/yyyy") ii = String.InStr(sStr, "15") tmp = Mid(sStr, ii + 2, 1) sDescription = "Mid" If tmp <> ":" And tmp <> "." Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif tmp = Mid(sStr, ii + 3, 1) sDescription = "Mid2" If tmp <> "2" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = String.InStr(sStr, "28") tmp = Mid(sStr, ii + 2, 1) sDescription = "Mid3" If tmp <> " " Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = String.InStr(sStr, "27") tmp = Mid(sStr, ii + 2, 1) sDescription = "Mid4" If tmp <> "/" And tmp <> "." And tmp <> "-" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif tmp = Mid(sStr, ii + 3, 1) sDescription = "Mid5" If tmp <> "0" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = String.InStr(sStr, "08") tmp = Mid(sStr, ii + 2, 1) sDescription = "Mid6" If tmp <> "/" And tmp <> "." And tmp <> "-" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif tmp = Mid(sStr, ii + 3, 1) sDescription = "Mid7" If tmp <> "2" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Logp" If Logp(2.5) <> Log(1 + 2.5) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Logp2" If Logp(5) <> Log(1 + 5) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "mTest.Test()" If mTest.Test() <> 10 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = 0 jj = 1 Let ii = jj sDescription = "Let" If ii <> jj Or ii <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Hyp Mag" If Hyp(1, 1) <> Mag(1, 1) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Day" If Day(Now) < 1 Or Day(Now) > 31 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Test.Note("500 Dates") For kk = 1 To 500 For Each ii In [gb.Second, gb.Minute, gb.Day, gb.Week, gb.Month, gb.Year] hDate = Date(Rand(1980, 2020), Rand(1, 12), Rand(1, 28), Rand(0, 23), Rand(0, 59), Rand(0, 59)) jj = Rand(-1000, 1000) If DateDiff(hDate, DateAdd(hDate, ii, jj), ii) <> jj Then Assert.Fail("One of 500 Dates: Number " & ii) 'Errors.Add(System.Backtrace[0] & " " & Format(hDate, "dd.mm.yyyy hh:nn:ss") & " " & Format(DateAdd(hDate, ii, jj), "dd.mm.yyyy hh:nn:ss") & " " & CStr(ii) & " " & CStr(jj)) kk = 500 Break Endif Next Next sDescription = "DateDiff" If DateDiff(Now, DateAdd(Now, gb.Day, 2), gb.Day) <> 2 Then Assert.Fail(sDescription) Test.Note(DateDiff(Date(2015, 1, 1, 0, 0, 0, 0), Date(2015, 1, 1, 23, 0, 0, 0), gb.Day)) Test.Note(DateAdd(Now, gb.Day, 2)) Test.Note(Now) Test.Note(DateDiff(Now, DateAdd(Now, gb.Day, 2), gb.Day)) Else Assert.Pass(sDescription) Endif sDescription = "Month" If Month(Now) < 1 Or Month(Now) > 12 Or Month(Date(1999, 3, 9, 9, 9, 9)) <> 3 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Hour" If Hour(Now) < 0 Or Hour(Now) > 23 Or Hour(Date(2010, 12, 4, 15, 08, 09)) <> 15 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Minute" If Minute(Now) < 0 Or Minute(Now) > 59 Or Minute(Date(2010, 12, 4, 15, 08, 09)) <> 8 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Second" If Second(Now) < 0 Or Second(Now) > 59 Or Second(Date(2010, 12, 4, 15, 08, 09)) <> 9 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Access" If Access("~", gb.Write Or gb.Exec) = False Or Access("/", gb.Write Or gb.Exec) = True Then Test.Note("Are you running this as root!!?") Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest symbol not exist" If ClassTest.DoNotExist(0) <> 0 Or ClassTest.AlsoDoNotExist(123, "test", 5) <> 128 Or TestClass2() <> "Called" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 1" ii = ClassTest[1] If ii <> ClassTest.y Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 2" ii = ClassTest[2] If ii <> ClassTest.z Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 3" ClassTest[1] = 123 If ClassTest.y <> 123 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 4" ClassTest[2] = 321 If ClassTest.z <> 321 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 5" ClassTest.JustTesting() If ClassTest.x <> 0 Or ClassTest.y <> 0 Or ClassTest.z <> 0 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 6" ClassTest.TestVar = 111 If ClassTest.TestVar <> 111 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "TestPoint 1" TestPoint.x = 2 TestPoint.y = 3 If TestPoint.x + TestPoint.y <> 5 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "TestPoint 2" Swap TestPoint.x, TestPoint.y If TestPoint.x <> 3 Or TestPoint.y <> 2 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "mTest.Test1" If mTest.Test(1) <> 11 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "TestClass2.iInitVar" If TestClass2.iInitVar <> 20 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 7" ClassTest.y = 10 ClassTestb.y = 1 If ClassTest = ClassTestb Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "ClassTest 8" ClassTestb.y = 10 If ClassTest <> ClassTestb Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Format$ Rad" If Format$(Rad(90), "#.############") <> Str$(1.570796326795) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Rad(180) - Pi" If (Rad(180) - Pi) <> 0 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Repeat Until" ii = 0 Repeat Inc ii Until ii = 10 If ii <> 10 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "While Wend" ii = 0 While ii < 10 Inc ii Wend If ii <> 10 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "For Next" For ii = 1 To 2 If ii = 1 Then jj = Int(IIf(ii = 1, 1.0, 1)) Endif If ii = 2 Then nn = Int(IIf(ii = 1, 1.0, 1)) Endif Next ii = 0 ii = IIf(1 = 2, 10, 20) If ii <> 20 Or jj <> 1 Or nn <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "IIf(1 = 1, 10, 20)" jj = 0 nn = 0 ii = IIf(1 = 1, 10, 20) If ii <> 10 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "CLong(Pi)" If CLong(Pi) <> 3 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "CLong(Pi ^ (Pi ^ Pi))" If CLong(Pi ^ (Pi ^ Pi)) <> 1340164183006339840 Then Assert.Fail(sDescription) '' 1340164183006357435 'From wolfram|alpha, Is this OK? Else Assert.Pass(sDescription) Endif sDescription = "For To" nn = 0 For ii = -2000000000 To 2000000000 Inc nn If ii = -1999999900 Then Break Endif Next For TestByte = 200 To 255 If TestByte = 199 Then Break Next jj = 0 For ii = 1 To 10 Step 2 jj += ii '1, 3, 5, 7, 9 Next If jj <> 25 Or nn <> 101 Or mTest.TheLoop(1) = False Or TestByte <> 199 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Stat ~" With Stat("~") If .Type <> gb.Directory Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif If .Size <= 0 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif End With sDescription = "-2E-16" If -2E-16 <> -0.0000000000000002 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Pointer Magic" ii = 1234567 pp = VarPtr(ii) pp2 = VarPtr(pp) If Pointer@(pp2) <> pp Or Integer@(pp) <> 1234567 Or Integer@(Pointer@(pp2)) <> 1234567 Or Integer@(MkInteger$(1234567)) <> 1234567 Or Long@(MkLong$(HighestLong)) <> HighestLong Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Open File Create/Read" sStr = "" ii = 0 hFile = Open "/tmp/test" For Create Write #hFile, 123 As Short Write #hFile, sStr As String Close #hFile hFile = Open "/tmp/test" For Read ii = Read #hFile As Short sStr = Read #hFile As String Close #hFile If sStr <> "" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = 0 jj = 0 pp = Alloc(SizeOf(gb.Integer), 4) hSt = Memory pp For Write Write #hSt, 1 As Integer Write #hSt, 2 As Integer Write #hSt, 3 As Integer Write #hSt, 4 As Integer Close #hSt ii = Integer@(pp) '1 pp += 4 jj = Integer@(pp) '2 pp += 8 nn = Integer@(pp) '4 pp -= 12 Error.Clear Try Free(pp) sDescription = "Memory Write" If Error = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Memory Write 2" If ii <> 1 Or jj <> 2 Or nn <> 4 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Memory Write 3" ii = Not 128 jj = 8 And 24 nn = -(8 Or 32) If ii <> -129 Or jj <> 8 Or nn <> -40 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ' sStr = ("Tämä on Suomeksi") ' If Tr$("Tämä on Suomeksi") <> "This is in Finnish" And ... Then ' Return ' Endif sDescription = "Translate" If Tr$("This is not, and should not be translated.") <> "This is not, and should not be translated." Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Format$ Tanh" If Format$(Tanh(1), "0.##############") <> Str$(0.76159415595576) Then '' 0.7615941559557648881194 Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Try ii = 1 Try Time(99, 0, 0, 0) sDescription = "Test Time" If Error = False Or Time(14, 08, 25) <> "14:08:25" Or Time(23, 59, 59) <> "23:59:59" Or CDate((60 * 60) / (24 * 60 * 60)) <> "01:00:00" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif bArr.Add(True) sngArr.Add(1) shrArr.Add(1) sDescription = "Array play" If TypeOf(ii) <> gb.Integer Or TypeOf(bArr[0]) <> gb.Boolean Or TypeOf(tt) <> gb.Float Or TypeOf(CByte(3)) <> gb.Byte Or TypeOf(sngArr[0]) <> gb.Single Or TypeOf(shrArr[0]) <> gb.Short Or TypeOf(CLong(5.1)) <> gb.long Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Test Str$" If Left(Str$(123.456), 3) <> "123" Or Right$(Str$(123.456), 3) <> "456" Or Str$(123 + 4) <> "127" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Test {Dim}" {Dim} += 100 If {Dim} <> 116 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif TestShort = 12 pp = VarPtr(TestShort) sDescription = "VarPtr Short" If Short@(pp) <> 12 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif TestSingle = 33.1 pp = VarPtr(TestSingle) sDescription = "VarPtr Single" If Single@(pp) <> CSingle(33.1) Then 'Debug Single@(pp) Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif TestLong = 12345678 pp = VarPtr(TestLong) sDescription = "VarPtr Long" If Long@(pp) <> 12345678 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sStr = "Test!" sPublic = sStr pp = VarPtr(sPublic) sDescription = "VarPtr String" If Str@(Pointer@(pp)) <> "Test!" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif tt = Pi pp = VarPtr(tt) sDescription = "VarPtr Float" If Float@(pp) <> Pi Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = 1234567890 pp = VarPtr(ii) sDescription = "VarPtr Int" If Int@(pp) <> 1234567890 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif TestByte = 255 pp = VarPtr(TestByte) sDescription = "VarPtr Byte" If Byte@(pp) <> 255 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Date play 1" If InStr(CStr(Now), CStr(Year(Now))) = 0 Or Year(Date(1854, 1, 2, 3, 4, 5)) <> 1854 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Date play 2" If Week(Date(2005, 7, 24), gb.Monday, True) <> 29 Or Week(Date(2005, 1, 1), gb.Monday, True) <> 0 Or Week(Date(2004, 1, 1), gb.Monday, False) <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Date play 3" If WeekDay(Now) < 0 Or WeekDay(Now) > 6 Or WeekDay(Date(2004, 1, 8)) <> 4 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = mTest.TestErrorManagment(1) sDescription = "mTest.TestErrorManagment 1" If ii <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = mTest.TestErrorManagment(2) sDescription = "mTest.TestErrorManagment 2" If ii <> 22 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = mTest.TestErrorManagment2(1) sDescription = "mTest.TestErrorManagment 3" If ii <> 2 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = mTest.TestErrorManagment2(2) sDescription = "mTest.TestErrorManagment 4" If ii <> 3 Then 'Debug ii Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = 100 sDescription = "Test Case" Select Case ii Case 1 Assert.Fail(sDescription) Case 2 Assert.Fail(sDescription) Default End Select ii = 100 sDescription = "Test Case 2" Select Case ii Case 1 Assert.Fail(sDescription) Case 2 Assert.Fail(sDescription) Case Else End Select sStr = "/" sStr &/= "/test/" sStr &/= "/test/" sStr &/= "test" sStr &/= "test" sDescription = "Test &/" If sStr <> "/test/test/test/test" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Try Kill "/tmp/testingtesting/2/Test.txt" Try Kill "/tmp/testingtesting/link.txt" Try Kill "/tmp/testingtesting/Test.txt" Try Rmdir "/tmp/testingtesting/2/" Try Rmdir "/tmp/testingtesting" Mkdir "/tmp/testingtesting" sDescription = "Test Mkdir IsDir" If IsDir("/tmp/testingtesting") = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif hFile = Open "/tmp/testingtesting/Test.txt" For Output Create Print #hFile, "Test1" Print #hFile, 123 Print #hFile, CStr(CDate(2484515)) Print #hFile, "1-2/3/4/5_6*7-8+9" Close hFile sStr = "" sTest = "" hFile = Open "/tmp/testingtesting/Test.txt" For Input For ii = 1 To 5 Input #hFile, sStr If sStr = Time(CDate(2484515)) Then sStr = " " & sStr sTest &= sStr Next Close hFile sDescription = "date to file" If sTest <> "Test1" & "123" & CDate(2484515) & "1-2/3/4/5_6*7-8+9" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Link "/tmp/testingtesting/Test.txt" To "/tmp/testingtesting/link.txt" sStr = "" hFile = Open "/tmp/testingtesting/link.txt" For Input Input #hFile, sStr Close hFile sDescription = "Test Link" If sStr <> "Test1" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Kill "/tmp/testingtesting/link.txt" hFile = Open "/tmp/testingtesting/Test.txt" For Output Append Print #hFile, "Test2" Close hFile sTest = "" sStr = "" ii = 0 hFile = Open "/tmp/testingtesting/Test.txt" For Input While Not Eof(hFile) Inc ii Line Input #hFile, sStr sTest &= sStr If ii = 1 Then sStr = "" Endif Wend Close hFile sDescription = "Test file Line Input" If sStr <> "Test2" Or sTest <> "Test1" & "123" & CDate(2484515) & "1-2/3/4/5_6*7-8+9Test2" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Kill "/tmp/testingtesting/Test.txt" hFile = Open "/tmp/testingtesting/Test.txt" For Create Write #hFile, CInt(10102) As Integer Write #hFile, CFloat(Pi) As Float Close hFile jj = 0 ii = 0 tt = 0 hFile = Open "/tmp/testingtesting/Test.txt" For Read ii = Read #hFile As Integer tt = Read #hFile As Float Seek #hFile, 0 jj = Read #hFile As Integer Close hFile sDescription = "Test Read file" If ii <> 10102 Or tt <> Pi Or ii <> jj Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sArr.Clear() sArr = Dir("/tmp/testingtesting", "*.txt") sDescription = "Dir 1" If sArr[0] <> "Test.txt" Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Mkdir "/tmp/testingtesting/2/" Move "/tmp/testingtesting/Test.txt" To "/tmp/testingtesting/2/Test.txt" sArr.Clear() sArr = RDir("/tmp/testingtesting", "*.txt") sDescription = "RDir 1" If sArr[0] <> "2/Test.txt" Or sArr.Count <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Copy "/tmp/testingtesting/2/Test.txt" To "/tmp/testingtesting/Test.txt" sArr.Clear() sArr = RDir("/tmp/testingtesting", "*.txt", gb.File) sDescription = "RDir 2" If sArr[0] <> "2/Test.txt" Or sArr[1] <> "Test.txt" Or sArr.Count <> 2 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Kill "/tmp/testingtesting/2/Test.txt" Kill "/tmp/testingtesting/Test.txt" sArr.Clear() sArr = Dir("/tmp/testingtesting", "*.txt") sDescription = "Dir 2" If sArr.Count <> 0 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "test Dfree" If Dfree("/tmp/testingtesting/2/") < 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Rmdir "/tmp/testingtesting/2/" Rmdir "/tmp/testingtesting" sDescription = "IsDir with not dir" If IsDir("/tmp/testingtesting") = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif tt = Pi pp = Alloc(SizeOf(gb.Float)) sDescription = "test Alloc" If modf(tt, pp) <> (Pi - 3) Or Float@(pp) <> 3 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif tt = -Pi pp = Realloc(pp, SizeOf(gb.Byte), SizeOf(gb.Float)) sDescription = "test Realloc" If modf(tt, pp) <> -(Pi - 3) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif hSt = Memory pp For Read ii = Read #hSt As Float Close #hSt Free(pp) sDescription = "ii = -3" If ii <> -3 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Comp 1" If Comp("123abc", "123abc", gb.Binary) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Comp 2" If Comp("123Abc", "123abc", gb.Binary) <> -1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Comp 3" If Comp("123Abc", "123abc", gb.IgnoreCase) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Comp 4" If Comp("123bc", "123abc", gb.IgnoreCase) <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Comp 5" If Comp("Gambas", "?[Aa]*", gb.Like) Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "Comp 6" If Comp("123Abc", "G[^Aa]*", gb.Like) <> -1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = mTest.TestErrorManagment3(1) sDescription = "mTest.TestErrorManagment3(1)" If ii <> 3 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = mTest.TestErrorManagment3(2) sDescription = "mTest.TestErrorManagment3(2)" If ii <> 21 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif iArr.Clear() iArr = New Integer[12, 34] bArr = New Boolean[10, 10] Dim iRetArr As New Integer[10, 10] 'Debug "here" mTest.ArrayBoundsTest(bArr, iArr, iArr, iRetArr) iRetArr = mTest.ArrayBoundsTest(bArr, bArr, bArr, bArr) Dim bArraysOK As Boolean = True For ii = 0 To 3 If iRetArr[ii] <> 2 Then bArraysOK = False Endif Next sDescription = "mTest.ArrayBoundsTest" If iArr.Bounds[0] <> 12 Or iArr.Bounds[1] <> 34 Or bArraysOK = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif 'If Screen.AvailableHeight <> Desktop.Height Then ' Errors.Add(System.Backtrace[0]) 'Endif ii = 0 GoSub TestGosub sDescription = "Test TestGosub" If ii <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Goto Pass TestGosub: ii = 1 Return Pass: ii = 7 jj = 8 sDescription = "Even Odd" If Even(1.5) = True Or Even(3) = True Or Even(ii) = True Or Even(9223372036854775807) = True Or Odd(jj) = True Or Odd(2) = True Or Odd(2.2) = True Or Odd(9223372036854775806) = True Or Even(0) = False Or Odd(0) = True Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = 16777218 sDescription = "Byte@ VarPtr" If System.ByteOrder = gb.LittleEndian Then If Byte@(VarPtr(ii)) <> 2 Or Byte@(VarPtr(ii) + 1) <> 0 Or Byte@(VarPtr(ii) + 2) <> 0 Or Byte@(VarPtr(ii) + 3) <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Else If Byte@(VarPtr(ii)) <> 1 Or Byte@(VarPtr(ii) + 1) <> 0 Or Byte@(VarPtr(ii) + 2) <> 0 Or Byte@(VarPtr(ii) + 3) <> 2 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif Endif bWriteOK = False hWatchFile = Open "/dev/full" For Write Watch Close #hWatchFile jj = 0 kk = 0 nn = 0 For ii = 1 To 1000000 Select Case Rand(1, 3) Case 1 Inc jj Case 2 Inc kk Case 3 Inc nn End Select Next sDescription = "For .. Round" If Round((jj / 1000000), -2) <> 0.33 Or Round((kk / 1000000), -2) <> 0.33 Or Round((nn / 1000000), -2) <> 0.33 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ii = 0 #If True Inc ii #Endif #If False Inc ii #Endif sDescription = "Test If False" If ii <> 1 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif sDescription = "JITTest" If mTest.JITTest() = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif mTest.JITTestPublic() oo = New YetAnotherClass oo.ThisObject_Gets_Lost sDescription = "YetAnotherClass ThisObject_Gets_Lost" If mTest.JITTestOnceMore() = False Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif TestClass2.Runshit For ii = 0 To 10 mTest.JITTestBoolArray("abc", ii, Null, Null) Next sDescription = "JITTestBoolArray" If hStillHere1.x <> hStillHere2.x Or hStillHere1.y <> hStillHere2.y Or hStillHere1.x <> 123 Or hStillHere1.y <> 456 Then Assert.Fail(sDescription) Else Assert.Pass(sDescription) Endif ' If bRun = False Then ' bRun = True ' DoTests ' Endif ''JIT ignores the division by zero 'If OptArgII(1) <> 1 Then 'Errors.Add(System.Backtrace[0]) 'Endif ' If ArgumentTest(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 0) <> 465 Then ' Errors.Add(System.Backtrace[0]) ' Endif 'If ArgumentTest(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ArgumentTest(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ArgumentTest(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1))) <> 88 Then 'Errors.Add(System.Backtrace[0]) 'Endif ' Tests missing keywords Test.Note("- - - - - - - - - - - - - - - - - - - - - - - - - - - Missing tests") Test.TODO("Tests missing") Assert.Ok(mTest.TestTester()) 'done End Public Sub TVal() Dim d As Date Dim s As String ' ------------------------------------------------- Date Standard d = Date(Year(Now), Month(Now), Day(Now), Hour(Now), Minute(Now), Second(Now)) s = Format(d, gb.Standard) Assert.Equals(Val(s), d, "Val Date Standard") s = Str(3.14) Assert.Equals(Val(s), 3.14, "Str-Val") Assert.Equals(Val("-25"), -25, "Val -25") Assert.Equals(Val("&H123abc"), 1194684, "Val string representing hex number") Assert.Ok(Val("True"), " Val \"True\"") Assert.NotOk(Val("False"), " Val \"False\"") Assert.Null(Val("Gambas"), "Val \"Gambas\" is Null") End Public Sub TCatch() Dim f As Float 'do an error f = 2 / 0 Catch Print Error.Text Assert.Equals(Error.Code, 26, "division 0") End '' Tests a Error an Error.Clear Public Sub TError() Dim f As Float 'do an error Try f = 2 / 0 'first test if error is handled Assert.GreaterEqual(Error.Code, 0, "Error.Code > 0") Assert.NotNull(Error.Text, "Error.Text not null") Assert.Error("Test Error happened") 'test error clear Try f = 2 / 0 Error.Clear Assert.Equals(Error.Code, 0, "Error.Code = 0") Assert.Null(Error.Text, "Error.Text Null") Assert.Null(Error.Where, "Error.Where Null") End Fast Public Function _TestAndIf() As Integer iTestAndIf = 1 Return 0 End gambas-3.16.3/app/src/gambas3-selftest/.src/Tests/SlowThousandsProcs.test000066400000000000000000000031521411575327000262530ustar00rootroot00000000000000' Gambas test file Private hProcess As Process Private sTest As String ' Public Sub FewThousandProcesses() 'need some time, maybe i do not want it to be executed Dim sTemp As String Dim ii As Integer Dim MyErrs As New String[] #If True sTemp = Temp$ File.Save(sTemp, "test" & gb.NewLine) ii = 0 Do sTest = "" hProcess = Exec ["echo", "test"] For Input As "_Process" hProcess.Wait 'Wait 0.1 If sTest <> "test" & "\r" & gb.NewLine Then 'Debug sTest MyErrs.Add(System.Backtrace[0]) Endif sTest = "" hProcess = Shell "echo test" For Input As "_Process" hProcess.Wait 'Wait 0.1 If sTest <> "test" & "\r" & gb.NewLine Then 'Debug sTest MyErrs.Add(System.Backtrace[0]) Endif sTest = "" hProcess = Exec ["cat", sTemp] For Input As "_Process" hProcess.Wait 'Wait 0.1 If sTest <> "test" & "\r" & gb.NewLine Then 'Debug sTest MyErrs.Add(System.Backtrace[0]) Endif sTest = "" hProcess = Shell "cat " & sTemp For Input As "_Process" hProcess.Wait 'Wait 0.1 If sTest <> "test" & "\r" & gb.NewLine Then 'Debug sTest MyErrs.Add(System.Backtrace[0]) Endif Inc ii Loop Until ii = 1000 Kill sTemp Assert.Equals(MyErrs.Count, 0, "A couple of 1000 processes") 'Quit #Endif End Fast Public Sub _Process_Read() Dim sTmp As String = Read #hProcess, 1 sTest &= sTmp End gambas-3.16.3/app/src/gambas3-selftest/.src/Tests/Timers.test000066400000000000000000000030441411575327000236720ustar00rootroot00000000000000' Gambas test file '' Not reliable in all cases, so not in "Production" testsuite '' '' see https://lists.gambas-basic.org/pipermail/user/2021-April/073021.html Public Sub Timers() Dim bBoo As Boolean = False Dim bReadOK As Boolean Dim ii, jj As Integer Dim tt As Float Dim MyErrs As New String[] tt = Timer Sleep 0.5 Wait 0.5 tt = (Timer - tt) Assert.LessEqual(tt, 1.1, "LRT 1") Assert.GreaterEqual(tt, 0.9, "LRT 2") ' If tt > 1.1 Or tt < 0.9 Then ' MyErrs.Add(System.Backtrace[0]) ' Endif ' ------------------------------------------------- Thema jj = 0 For ii = 1 To 100 tt = Timer Inc jj Wait 0.01 Inc jj tt = Timer - tt If bboo = False And If (tt > 0.018 Or tt < 0.005) Then 'Debug tt bBoo = True Endif Next ' If bBoo = True Or jj <> 200 Then ' MyErrs.Add(System.Backtrace[0]) ' Endif Assert.NotOk(bBoo, "LRT 3") Assert.Equals(jj, 200, "LRT 4") ' ------------------------------------------------- Thema bBoo = False jj = 0 For ii = 1 To 100 tt = Timer Inc jj Sleep 0.01 Inc jj tt = Timer - tt If bboo = False And If (tt > 0.015 Or tt < 0.005) Then 'Debug tt bBoo = True Endif Next Assert.NotOk(bBoo, "LRT 5") Assert.Equals(jj, 200, "LRT 6") ' If bBoo = True Or jj <> 200 Then ' MyErrs.Add(System.Backtrace[0]) ' Endif End gambas-3.16.3/app/src/gambas3-selftest/.test000066400000000000000000000012031411575327000205320ustar00rootroot00000000000000[TestSuites] Count=4 TestWith=4 Default="Timers.Timers" [TestSuites/1] Name="Fast" Tests="GambasSelftests.FastTests;TCatch;TError;TVal" [TestSuites/2] Name="Full" Tests="FileReadWrite.FileReadWrite;ReadUrandom;ReadZero,GambasSelftests.FastTests;TCatch;TError;TVal,SlowThousandsProcs.FewThousandProcesses,Timers.Timers" [TestSuites/3] Name="Slow tests" Tests="FileReadWrite.FileReadWrite;ReadUrandom;ReadZero,SlowThousandsProcs.FewThousandProcesses,Timers.Timers" [TestSuites/4] Name="Production" Tests="FileReadWrite.FileReadWrite;ReadUrandom;ReadZero,GambasSelftests.FastTests;TCatch;TError;TVal,SlowThousandsProcs.FewThousandProcesses" gambas-3.16.3/app/src/gambas3-selftest/COPYING000066400000000000000000000432541411575327000206210ustar00rootroot00000000000000 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. gambas-3.16.3/app/src/gambas3-selftest/Excluded or Unimplemented000077500000000000000000000011161411575327000244300ustar00rootroot00000000000000* = excluded from search list, but tested INHERITS * (only mTest is scanned, not classes) _new * _init * _get * _put * _next _call * _unknown * _compare * BYREF * PROCEDURE * PROPERTY * QUIT SConv$ Conv$ DConv$ CLASS EXPORT * Used, but not really tested. STATIC * STOP STOP EVENT SUPER * {...} * &/= * (grep doesn't like this) LAST LOCK UNLOCK ERROR TO CREATE PRIVATE CREATE STATIC Param * PIPE INPUT FROM OUTPUT TO FLUSH EVENT * RAISE * MkPointer$ MkSingle$ MkFloat$ MkDate$ MkBoolean$ MkByte$ MkShort$ Removed old functions: IsByte IsObject IsPointer IsVariant IsShort IsSingle IsStringgambas-3.16.3/app/src/gambas3-selftest/SearchList000077500000000000000000000033621411575327000215510ustar00rootroot00000000000000#Else #Else If #EndIf #IF Abs Access ACos ACosh Alloc AND AND IF Ang APPEND + - * / ^ \ New Float[ New Single[ New Long[ New Integer[ New Short[ New Byte[ New Boolean[ New String[ New Date[ New Variant[ New Object[ New Pointer[ AS Asc ASin ASinh Asl Asr = += -= *= /= \= &= <= >= <> ATan ATan2 ATanh BChg BClr BEGINS Bin$ Boolean@ BREAK BSet BTst Byte@ CASE CATCH CBool Cbr CByte CDate Ceil CFloat Choose Chr$ CInt CLong CLOSE Comp gb.Binary gb.IgnoreCase gb.Like CONST CONTINUE COPY Cos Cosh CREATE CShort CSingle CStr CVariant Date DateAdd DateDiff Day DEBUG DEC DEFAULT Deg DFree DIM Dir DIV DO ELSE END END SELECT END STRUCT END WITH ENDIF ENDS ENUM Eof ERROR Eval Even EXEC Exist Exp Exp10 Exp2 Expm EXTERN FALSE FINALLY Fix Float@ Floor FOR FOR EACH Format$ Frac FUNCTION Application GOTO Gosub Free Hex$ Hour Html$ Hyp IF IIf IN INC ["A", "B", "C"] ["A": 1, "B": 2, "C": 3] INPUT InStr Int Int@ IS IsAscii IsBlank IsBoolean IsDate IsDigit IsDir IsFloat IsHexa IsInteger IsLCase IsLetter IsLong IsNull IsNumber IsPunct IsSpace IsUCase KILL LCase$ Left$ Len LET LIBRARY LIKE LINE INPUT LINK Lof Log Log10 Log2 Logp Long@ LOOP Lsl Lsr LTrim$ Mag Max ME MEMORY Mid$ Min Minute MKDIR MkInteger$ MkLong$ MOD Month MOVE NEW NEXT NOT Now NULL Odd OPEN OPTIONAL OR OR IF OUTPUT Pi PRINT PRIVATE Pointer@ PUBLIC Quote$ Rad RANDOMIZE RDir READ Realloc REPEAT Replace$ RETURN Right$ RInStr RMDIR Rnd Rol Ror Round RTrim$ Scan Second Seek SELECT Sgn SHELL Shl Short@ Shr Sin Single@ Sinh SizeOf SLEEP Space$ Split Sqr Stat STEP Str$ == String$ Str@ STRUCT SUB Subst$ SWAP System.Architecture System.ByteOrder System.Family Tan Tanh Temp$ THEN Time Timer TO Tr$ Trim$ TRUE TRY TypeOf UCase$ Unquote$ UNTIL Val VarPtr WAIT WATCH Week WeekDay WEND WHILE WITH WRITE XOR Year EndOfThisListgambas-3.16.3/app/src/gambas3-selftest/run.sh000077500000000000000000000005041411575327000207200ustar00rootroot00000000000000#! /bin/sh MYDIR=$(cd `dirname $0` && pwd) # run Production without JIT gbx3 -j -T "@Production" $MYDIR if [ $? -ne 0 ] then echo Test without JIT failed return 1 fi # run Production with JIT GB_NO_JIT=01 GB_JIT_CFLAGS=-O0 gbx3 -T "@Production" $MYDIR if [ $? -ne 0 ] then echo Test with JIT failed return 1 fi gambas-3.16.3/app/src/gambas3/000077500000000000000000000000001411575327000157275ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.directory000066400000000000000000000000411411575327000177270ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/src/gambas3/.hidden/000077500000000000000000000000001411575327000172405ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.hidden/font/000077500000000000000000000000001411575327000202065ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.hidden/font/GambasBold.sfd000066400000000000000000022405301411575327000227050ustar00rootroot00000000000000SplineFontDB: 3.2 FontName: Gambas FullName: Gambas FamilyName: Gambas Weight: Bold Copyright: Copyright (c) Benoit Minisini UComments: "2020-10-30: Created with FontForge (http://fontforge.org)" Version: 001.000 ItalicAngle: 0 UnderlinePosition: -100 UnderlineWidth: 50 Ascent: 840 Descent: 160 InvalidEm: 0 LayerCount: 2 Layer: 0 0 "Back" 1 Layer: 1 0 "Fore" 0 XUID: [1021 549 693210868 3162158] StyleMap: 0x0000 FSType: 0 OS2Version: 0 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 1 CreationTime: 1604090169 ModificationTime: 1604094694 OS2TypoAscent: 0 OS2TypoAOffset: 1 OS2TypoDescent: 0 OS2TypoDOffset: 1 OS2TypoLinegap: 90 OS2WinAscent: 0 OS2WinAOffset: 1 OS2WinDescent: 0 OS2WinDOffset: 1 HheadAscent: 0 HheadAOffset: 1 HheadDescent: 0 HheadDOffset: 1 OS2Vendor: 'PfEd' MarkAttachClasses: 1 DEI: 91125 Encoding: ISO8859-1 UnicodeInterp: none NameList: AGL For New Fonts DisplaySize: 16 AntiAlias: 1 FitToEm: 0 WinInfo: 0 38 13 OnlyBitmaps: 1 BeginPrivate: 0 EndPrivate BeginChars: 2867 2803 StartChar: uni0000 Encoding: 0 0 0 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: space Encoding: 32 32 1 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: exclam Encoding: 33 33 2 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotedbl Encoding: 34 34 3 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: numbersign Encoding: 35 35 4 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dollar Encoding: 36 36 5 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: percent Encoding: 37 37 6 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ampersand Encoding: 38 38 7 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotesingle Encoding: 39 39 8 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: parenleft Encoding: 40 40 9 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: parenright Encoding: 41 41 10 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: asterisk Encoding: 42 42 11 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: plus Encoding: 43 43 12 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: comma Encoding: 44 44 13 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: hyphen Encoding: 45 45 14 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: period Encoding: 46 46 15 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: slash Encoding: 47 47 16 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: zero Encoding: 48 48 17 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: one Encoding: 49 49 18 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: two Encoding: 50 50 19 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: three Encoding: 51 51 20 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: four Encoding: 52 52 21 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: five Encoding: 53 53 22 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: six Encoding: 54 54 23 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: seven Encoding: 55 55 24 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: eight Encoding: 56 56 25 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: nine Encoding: 57 57 26 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: colon Encoding: 58 58 27 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: semicolon Encoding: 59 59 28 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: less Encoding: 60 60 29 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: equal Encoding: 61 61 30 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: greater Encoding: 62 62 31 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: question Encoding: 63 63 32 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: at Encoding: 64 64 33 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: A Encoding: 65 65 34 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: B Encoding: 66 66 35 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: C Encoding: 67 67 36 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: D Encoding: 68 68 37 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: E Encoding: 69 69 38 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: F Encoding: 70 70 39 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: G Encoding: 71 71 40 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: H Encoding: 72 72 41 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: I Encoding: 73 73 42 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: J Encoding: 74 74 43 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: K Encoding: 75 75 44 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: L Encoding: 76 76 45 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: M Encoding: 77 77 46 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: N Encoding: 78 78 47 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: O Encoding: 79 79 48 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: P Encoding: 80 80 49 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Q Encoding: 81 81 50 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: R Encoding: 82 82 51 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: S Encoding: 83 83 52 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: T Encoding: 84 84 53 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: U Encoding: 85 85 54 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: V Encoding: 86 86 55 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: W Encoding: 87 87 56 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: X Encoding: 88 88 57 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Y Encoding: 89 89 58 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Z Encoding: 90 90 59 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: bracketleft Encoding: 91 91 60 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: backslash Encoding: 92 92 61 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: bracketright Encoding: 93 93 62 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: asciicircum Encoding: 94 94 63 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: underscore Encoding: 95 95 64 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: grave Encoding: 96 96 65 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: a Encoding: 97 97 66 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: b Encoding: 98 98 67 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: c Encoding: 99 99 68 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: d Encoding: 100 100 69 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: e Encoding: 101 101 70 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: f Encoding: 102 102 71 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: g Encoding: 103 103 72 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: h Encoding: 104 104 73 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: i Encoding: 105 105 74 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: j Encoding: 106 106 75 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: k Encoding: 107 107 76 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: l Encoding: 108 108 77 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: m Encoding: 109 109 78 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: n Encoding: 110 110 79 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: o Encoding: 111 111 80 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: p Encoding: 112 112 81 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: q Encoding: 113 113 82 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: r Encoding: 114 114 83 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: s Encoding: 115 115 84 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: t Encoding: 116 116 85 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: u Encoding: 117 117 86 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: v Encoding: 118 118 87 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: w Encoding: 119 119 88 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: x Encoding: 120 120 89 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: y Encoding: 121 121 90 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: z Encoding: 122 122 91 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: braceleft Encoding: 123 123 92 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: bar Encoding: 124 124 93 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: braceright Encoding: 125 125 94 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: asciitilde Encoding: 126 126 95 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: exclamdown Encoding: 161 161 96 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: cent Encoding: 162 162 97 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: sterling Encoding: 163 163 98 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: currency Encoding: 164 164 99 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: yen Encoding: 165 165 100 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: brokenbar Encoding: 166 166 101 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: section Encoding: 167 167 102 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dieresis Encoding: 168 168 103 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: copyright Encoding: 169 169 104 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ordfeminine Encoding: 170 170 105 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: guillemotleft Encoding: 171 171 106 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: logicalnot Encoding: 172 172 107 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni00AD Encoding: 173 173 108 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: registered Encoding: 174 174 109 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: macron Encoding: 175 175 110 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: degree Encoding: 176 176 111 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: plusminus Encoding: 177 177 112 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni00B2 Encoding: 178 178 113 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni00B3 Encoding: 179 179 114 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: acute Encoding: 180 180 115 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: mu Encoding: 181 181 116 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: paragraph Encoding: 182 182 117 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: periodcentered Encoding: 183 183 118 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: cedilla Encoding: 184 184 119 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni00B9 Encoding: 185 185 120 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ordmasculine Encoding: 186 186 121 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: guillemotright Encoding: 187 187 122 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: onequarter Encoding: 188 188 123 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: onehalf Encoding: 189 189 124 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: threequarters Encoding: 190 190 125 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: questiondown Encoding: 191 191 126 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Agrave Encoding: 192 192 127 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Aacute Encoding: 193 193 128 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Acircumflex Encoding: 194 194 129 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Atilde Encoding: 195 195 130 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Adieresis Encoding: 196 196 131 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Aring Encoding: 197 197 132 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: AE Encoding: 198 198 133 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ccedilla Encoding: 199 199 134 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Egrave Encoding: 200 200 135 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Eacute Encoding: 201 201 136 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ecircumflex Encoding: 202 202 137 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Edieresis Encoding: 203 203 138 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Igrave Encoding: 204 204 139 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Iacute Encoding: 205 205 140 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Icircumflex Encoding: 206 206 141 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Idieresis Encoding: 207 207 142 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Eth Encoding: 208 208 143 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ntilde Encoding: 209 209 144 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ograve Encoding: 210 210 145 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Oacute Encoding: 211 211 146 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ocircumflex Encoding: 212 212 147 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Otilde Encoding: 213 213 148 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Odieresis Encoding: 214 214 149 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: multiply Encoding: 215 215 150 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Oslash Encoding: 216 216 151 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ugrave Encoding: 217 217 152 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Uacute Encoding: 218 218 153 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ucircumflex Encoding: 219 219 154 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Udieresis Encoding: 220 220 155 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Yacute Encoding: 221 221 156 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Thorn Encoding: 222 222 157 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: germandbls Encoding: 223 223 158 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: agrave Encoding: 224 224 159 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: aacute Encoding: 225 225 160 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: acircumflex Encoding: 226 226 161 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: atilde Encoding: 227 227 162 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: adieresis Encoding: 228 228 163 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: aring Encoding: 229 229 164 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ae Encoding: 230 230 165 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ccedilla Encoding: 231 231 166 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: egrave Encoding: 232 232 167 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: eacute Encoding: 233 233 168 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ecircumflex Encoding: 234 234 169 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: edieresis Encoding: 235 235 170 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: igrave Encoding: 236 236 171 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: iacute Encoding: 237 237 172 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: icircumflex Encoding: 238 238 173 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: idieresis Encoding: 239 239 174 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: eth Encoding: 240 240 175 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ntilde Encoding: 241 241 176 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ograve Encoding: 242 242 177 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: oacute Encoding: 243 243 178 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ocircumflex Encoding: 244 244 179 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: otilde Encoding: 245 245 180 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: odieresis Encoding: 246 246 181 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: divide Encoding: 247 247 182 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: oslash Encoding: 248 248 183 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ugrave Encoding: 249 249 184 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uacute Encoding: 250 250 185 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ucircumflex Encoding: 251 251 186 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: udieresis Encoding: 252 252 187 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: yacute Encoding: 253 253 188 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: thorn Encoding: 254 254 189 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ydieresis Encoding: 255 255 190 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Amacron Encoding: 256 256 191 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: amacron Encoding: 257 257 192 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Abreve Encoding: 258 258 193 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: abreve Encoding: 259 259 194 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Aogonek Encoding: 260 260 195 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: aogonek Encoding: 261 261 196 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Cacute Encoding: 262 262 197 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: cacute Encoding: 263 263 198 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ccircumflex Encoding: 264 264 199 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ccircumflex Encoding: 265 265 200 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Cdotaccent Encoding: 266 266 201 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: cdotaccent Encoding: 267 267 202 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ccaron Encoding: 268 268 203 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ccaron Encoding: 269 269 204 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Dcaron Encoding: 270 270 205 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dcaron Encoding: 271 271 206 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Dcroat Encoding: 272 272 207 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dcroat Encoding: 273 273 208 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Emacron Encoding: 274 274 209 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: emacron Encoding: 275 275 210 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ebreve Encoding: 276 276 211 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ebreve Encoding: 277 277 212 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Edotaccent Encoding: 278 278 213 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: edotaccent Encoding: 279 279 214 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Eogonek Encoding: 280 280 215 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: eogonek Encoding: 281 281 216 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ecaron Encoding: 282 282 217 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ecaron Encoding: 283 283 218 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Gcircumflex Encoding: 284 284 219 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gcircumflex Encoding: 285 285 220 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Gbreve Encoding: 286 286 221 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gbreve Encoding: 287 287 222 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Gdotaccent Encoding: 288 288 223 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gdotaccent Encoding: 289 289 224 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Gcommaaccent Encoding: 290 290 225 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gcommaaccent Encoding: 291 291 226 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Hcircumflex Encoding: 292 292 227 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: hcircumflex Encoding: 293 293 228 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Hbar Encoding: 294 294 229 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: hbar Encoding: 295 295 230 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Itilde Encoding: 296 296 231 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: itilde Encoding: 297 297 232 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Imacron Encoding: 298 298 233 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: imacron Encoding: 299 299 234 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ibreve Encoding: 300 300 235 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ibreve Encoding: 301 301 236 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Iogonek Encoding: 302 302 237 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: iogonek Encoding: 303 303 238 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Idotaccent Encoding: 304 304 239 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dotlessi Encoding: 305 305 240 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: IJ Encoding: 306 306 241 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ij Encoding: 307 307 242 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Jcircumflex Encoding: 308 308 243 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: jcircumflex Encoding: 309 309 244 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Kcommaaccent Encoding: 310 310 245 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: kcommaaccent Encoding: 311 311 246 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: kgreenlandic Encoding: 312 312 247 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Lacute Encoding: 313 313 248 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lacute Encoding: 314 314 249 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Lcommaaccent Encoding: 315 315 250 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lcommaaccent Encoding: 316 316 251 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Lcaron Encoding: 317 317 252 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lcaron Encoding: 318 318 253 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ldot Encoding: 319 319 254 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ldot Encoding: 320 320 255 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Lslash Encoding: 321 321 256 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lslash Encoding: 322 322 257 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Nacute Encoding: 323 323 258 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: nacute Encoding: 324 324 259 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ncommaaccent Encoding: 325 325 260 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ncommaaccent Encoding: 326 326 261 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ncaron Encoding: 327 327 262 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ncaron Encoding: 328 328 263 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: napostrophe Encoding: 329 329 264 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Eng Encoding: 330 330 265 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: eng Encoding: 331 331 266 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Omacron Encoding: 332 332 267 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: omacron Encoding: 333 333 268 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Obreve Encoding: 334 334 269 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: obreve Encoding: 335 335 270 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ohungarumlaut Encoding: 336 336 271 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ohungarumlaut Encoding: 337 337 272 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: OE Encoding: 338 338 273 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: oe Encoding: 339 339 274 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Racute Encoding: 340 340 275 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: racute Encoding: 341 341 276 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Rcommaaccent Encoding: 342 342 277 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: rcommaaccent Encoding: 343 343 278 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Rcaron Encoding: 344 344 279 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: rcaron Encoding: 345 345 280 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Sacute Encoding: 346 346 281 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: sacute Encoding: 347 347 282 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Scircumflex Encoding: 348 348 283 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: scircumflex Encoding: 349 349 284 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Scedilla Encoding: 350 350 285 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: scedilla Encoding: 351 351 286 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Scaron Encoding: 352 352 287 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: scaron Encoding: 353 353 288 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Tcommaaccent Encoding: 354 354 289 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tcommaaccent Encoding: 355 355 290 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Tcaron Encoding: 356 356 291 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tcaron Encoding: 357 357 292 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Tbar Encoding: 358 358 293 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tbar Encoding: 359 359 294 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Utilde Encoding: 360 360 295 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: utilde Encoding: 361 361 296 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Umacron Encoding: 362 362 297 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: umacron Encoding: 363 363 298 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ubreve Encoding: 364 364 299 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ubreve Encoding: 365 365 300 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Uring Encoding: 366 366 301 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uring Encoding: 367 367 302 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Uhungarumlaut Encoding: 368 368 303 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uhungarumlaut Encoding: 369 369 304 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Uogonek Encoding: 370 370 305 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uogonek Encoding: 371 371 306 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Wcircumflex Encoding: 372 372 307 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: wcircumflex Encoding: 373 373 308 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ycircumflex Encoding: 374 374 309 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ycircumflex Encoding: 375 375 310 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ydieresis Encoding: 376 376 311 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Zacute Encoding: 377 377 312 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: zacute Encoding: 378 378 313 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Zdotaccent Encoding: 379 379 314 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: zdotaccent Encoding: 380 380 315 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Zcaron Encoding: 381 381 316 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: zcaron Encoding: 382 382 317 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: longs Encoding: 383 383 318 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0180 Encoding: 384 384 319 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0181 Encoding: 385 385 320 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0182 Encoding: 386 386 321 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0183 Encoding: 387 387 322 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0184 Encoding: 388 388 323 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0185 Encoding: 389 389 324 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0186 Encoding: 390 390 325 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0187 Encoding: 391 391 326 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0188 Encoding: 392 392 327 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0189 Encoding: 393 393 328 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni018A Encoding: 394 394 329 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni018B Encoding: 395 395 330 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni018C Encoding: 396 396 331 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni018D Encoding: 397 397 332 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni018E Encoding: 398 398 333 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Schwa Encoding: 399 399 334 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0190 Encoding: 400 400 335 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0191 Encoding: 401 401 336 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: florin Encoding: 402 402 337 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0193 Encoding: 403 403 338 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0194 Encoding: 404 404 339 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0195 Encoding: 405 405 340 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0196 Encoding: 406 406 341 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0197 Encoding: 407 407 342 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0198 Encoding: 408 408 343 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0199 Encoding: 409 409 344 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni019A Encoding: 410 410 345 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni019B Encoding: 411 411 346 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni019C Encoding: 412 412 347 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni019D Encoding: 413 413 348 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni019E Encoding: 414 414 349 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni019F Encoding: 415 415 350 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ohorn Encoding: 416 416 351 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ohorn Encoding: 417 417 352 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A2 Encoding: 418 418 353 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A3 Encoding: 419 419 354 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A4 Encoding: 420 420 355 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A5 Encoding: 421 421 356 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A6 Encoding: 422 422 357 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A7 Encoding: 423 423 358 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A8 Encoding: 424 424 359 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01A9 Encoding: 425 425 360 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01AA Encoding: 426 426 361 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01AB Encoding: 427 427 362 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01AC Encoding: 428 428 363 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01AD Encoding: 429 429 364 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01AE Encoding: 430 430 365 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Uhorn Encoding: 431 431 366 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uhorn Encoding: 432 432 367 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B1 Encoding: 433 433 368 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B2 Encoding: 434 434 369 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B3 Encoding: 435 435 370 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B4 Encoding: 436 436 371 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B5 Encoding: 437 437 372 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B6 Encoding: 438 438 373 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ezh Encoding: 439 439 374 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B8 Encoding: 440 440 375 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01B9 Encoding: 441 441 376 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01BA Encoding: 442 442 377 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01BB Encoding: 443 443 378 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01BC Encoding: 444 444 379 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01BD Encoding: 445 445 380 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01BE Encoding: 446 446 381 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01BF Encoding: 447 447 382 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C0 Encoding: 448 448 383 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C1 Encoding: 449 449 384 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C2 Encoding: 450 450 385 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C3 Encoding: 451 451 386 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C4 Encoding: 452 452 387 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C5 Encoding: 453 453 388 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C6 Encoding: 454 454 389 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C7 Encoding: 455 455 390 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C8 Encoding: 456 456 391 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01C9 Encoding: 457 457 392 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01CA Encoding: 458 458 393 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01CB Encoding: 459 459 394 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01CC Encoding: 460 460 395 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01CD Encoding: 461 461 396 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01CE Encoding: 462 462 397 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01CF Encoding: 463 463 398 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D0 Encoding: 464 464 399 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D1 Encoding: 465 465 400 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D2 Encoding: 466 466 401 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D3 Encoding: 467 467 402 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D4 Encoding: 468 468 403 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D5 Encoding: 469 469 404 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D6 Encoding: 470 470 405 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D7 Encoding: 471 471 406 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D8 Encoding: 472 472 407 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01D9 Encoding: 473 473 408 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01DA Encoding: 474 474 409 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01DB Encoding: 475 475 410 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01DC Encoding: 476 476 411 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01DD Encoding: 477 477 412 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01DE Encoding: 478 478 413 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01DF Encoding: 479 479 414 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E0 Encoding: 480 480 415 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E1 Encoding: 481 481 416 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E2 Encoding: 482 482 417 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E3 Encoding: 483 483 418 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E4 Encoding: 484 484 419 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E5 Encoding: 485 485 420 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Gcaron Encoding: 486 486 421 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gcaron Encoding: 487 487 422 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E8 Encoding: 488 488 423 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01E9 Encoding: 489 489 424 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01EA Encoding: 490 490 425 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01EB Encoding: 491 491 426 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01EC Encoding: 492 492 427 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01ED Encoding: 493 493 428 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01EE Encoding: 494 494 429 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01EF Encoding: 495 495 430 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F0 Encoding: 496 496 431 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F1 Encoding: 497 497 432 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F2 Encoding: 498 498 433 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F3 Encoding: 499 499 434 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F4 Encoding: 500 500 435 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F5 Encoding: 501 501 436 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F6 Encoding: 502 502 437 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F7 Encoding: 503 503 438 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F8 Encoding: 504 504 439 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni01F9 Encoding: 505 505 440 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Aringacute Encoding: 506 506 441 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: aringacute Encoding: 507 507 442 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: AEacute Encoding: 508 508 443 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: aeacute Encoding: 509 509 444 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Oslashacute Encoding: 510 510 445 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: oslashacute Encoding: 511 511 446 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0200 Encoding: 512 512 447 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0201 Encoding: 513 513 448 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0202 Encoding: 514 514 449 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0203 Encoding: 515 515 450 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0204 Encoding: 516 516 451 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0205 Encoding: 517 517 452 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0206 Encoding: 518 518 453 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0207 Encoding: 519 519 454 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0208 Encoding: 520 520 455 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0209 Encoding: 521 521 456 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni020A Encoding: 522 522 457 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni020B Encoding: 523 523 458 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni020C Encoding: 524 524 459 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni020D Encoding: 525 525 460 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni020E Encoding: 526 526 461 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni020F Encoding: 527 527 462 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0210 Encoding: 528 528 463 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0211 Encoding: 529 529 464 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0212 Encoding: 530 530 465 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0213 Encoding: 531 531 466 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0214 Encoding: 532 532 467 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0215 Encoding: 533 533 468 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0216 Encoding: 534 534 469 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0217 Encoding: 535 535 470 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Scommaaccent Encoding: 536 536 471 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: scommaaccent Encoding: 537 537 472 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni021A Encoding: 538 538 473 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni021B Encoding: 539 539 474 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni021C Encoding: 540 540 475 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni021D Encoding: 541 541 476 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni021E Encoding: 542 542 477 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni021F Encoding: 543 543 478 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0220 Encoding: 544 544 479 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0221 Encoding: 545 545 480 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0222 Encoding: 546 546 481 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0223 Encoding: 547 547 482 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0224 Encoding: 548 548 483 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0225 Encoding: 549 549 484 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0226 Encoding: 550 550 485 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0227 Encoding: 551 551 486 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0228 Encoding: 552 552 487 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0229 Encoding: 553 553 488 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni022A Encoding: 554 554 489 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni022B Encoding: 555 555 490 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni022C Encoding: 556 556 491 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni022D Encoding: 557 557 492 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni022E Encoding: 558 558 493 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni022F Encoding: 559 559 494 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0230 Encoding: 560 560 495 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0231 Encoding: 561 561 496 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0232 Encoding: 562 562 497 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0233 Encoding: 563 563 498 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0234 Encoding: 564 564 499 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0235 Encoding: 565 565 500 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0236 Encoding: 566 566 501 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dotlessj Encoding: 567 567 502 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0238 Encoding: 568 568 503 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0239 Encoding: 569 569 504 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni023A Encoding: 570 570 505 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni023B Encoding: 571 571 506 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni023C Encoding: 572 572 507 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni023D Encoding: 573 573 508 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni023E Encoding: 574 574 509 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni023F Encoding: 575 575 510 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0240 Encoding: 576 576 511 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0241 Encoding: 577 577 512 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0242 Encoding: 578 578 513 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0243 Encoding: 579 579 514 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0244 Encoding: 580 580 515 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0245 Encoding: 581 581 516 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0246 Encoding: 582 582 517 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0247 Encoding: 583 583 518 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0248 Encoding: 584 584 519 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0249 Encoding: 585 585 520 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni024A Encoding: 586 586 521 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni024B Encoding: 587 587 522 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni024C Encoding: 588 588 523 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni024D Encoding: 589 589 524 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni024E Encoding: 590 590 525 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni024F Encoding: 591 591 526 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0250 Encoding: 592 592 527 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0251 Encoding: 593 593 528 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0252 Encoding: 594 594 529 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0253 Encoding: 595 595 530 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0254 Encoding: 596 596 531 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0255 Encoding: 597 597 532 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0256 Encoding: 598 598 533 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0257 Encoding: 599 599 534 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0258 Encoding: 600 600 535 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: schwa Encoding: 601 601 536 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni025A Encoding: 602 602 537 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni025B Encoding: 603 603 538 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni025C Encoding: 604 604 539 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni025D Encoding: 605 605 540 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni025E Encoding: 606 606 541 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni025F Encoding: 607 607 542 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0260 Encoding: 608 608 543 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0261 Encoding: 609 609 544 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0262 Encoding: 610 610 545 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0263 Encoding: 611 611 546 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0264 Encoding: 612 612 547 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0265 Encoding: 613 613 548 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0266 Encoding: 614 614 549 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0267 Encoding: 615 615 550 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0268 Encoding: 616 616 551 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0269 Encoding: 617 617 552 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni026A Encoding: 618 618 553 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni026B Encoding: 619 619 554 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni026C Encoding: 620 620 555 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni026D Encoding: 621 621 556 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni026E Encoding: 622 622 557 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni026F Encoding: 623 623 558 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0270 Encoding: 624 624 559 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0271 Encoding: 625 625 560 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0272 Encoding: 626 626 561 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0273 Encoding: 627 627 562 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0274 Encoding: 628 628 563 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0275 Encoding: 629 629 564 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0276 Encoding: 630 630 565 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0277 Encoding: 631 631 566 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0278 Encoding: 632 632 567 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0279 Encoding: 633 633 568 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni027A Encoding: 634 634 569 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni027B Encoding: 635 635 570 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni027C Encoding: 636 636 571 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni027D Encoding: 637 637 572 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni027E Encoding: 638 638 573 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni027F Encoding: 639 639 574 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0280 Encoding: 640 640 575 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0281 Encoding: 641 641 576 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0282 Encoding: 642 642 577 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0283 Encoding: 643 643 578 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0284 Encoding: 644 644 579 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0285 Encoding: 645 645 580 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0286 Encoding: 646 646 581 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0287 Encoding: 647 647 582 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0288 Encoding: 648 648 583 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0289 Encoding: 649 649 584 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni028A Encoding: 650 650 585 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni028B Encoding: 651 651 586 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni028C Encoding: 652 652 587 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni028D Encoding: 653 653 588 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni028E Encoding: 654 654 589 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni028F Encoding: 655 655 590 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0290 Encoding: 656 656 591 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0291 Encoding: 657 657 592 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ezh Encoding: 658 658 593 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0293 Encoding: 659 659 594 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0294 Encoding: 660 660 595 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0295 Encoding: 661 661 596 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0296 Encoding: 662 662 597 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0297 Encoding: 663 663 598 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0298 Encoding: 664 664 599 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0299 Encoding: 665 665 600 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni029A Encoding: 666 666 601 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni029B Encoding: 667 667 602 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni029C Encoding: 668 668 603 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni029D Encoding: 669 669 604 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni029E Encoding: 670 670 605 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni029F Encoding: 671 671 606 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A0 Encoding: 672 672 607 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A1 Encoding: 673 673 608 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A2 Encoding: 674 674 609 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A3 Encoding: 675 675 610 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A4 Encoding: 676 676 611 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A5 Encoding: 677 677 612 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A6 Encoding: 678 678 613 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A7 Encoding: 679 679 614 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A8 Encoding: 680 680 615 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02A9 Encoding: 681 681 616 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02AA Encoding: 682 682 617 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02AB Encoding: 683 683 618 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02AC Encoding: 684 684 619 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02AD Encoding: 685 685 620 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: commaturnedmod Encoding: 686 699 621 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57929 Encoding: 687 700 622 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii64937 Encoding: 688 701 623 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: circumflex Encoding: 689 710 624 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: caron Encoding: 690 711 625 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: breve Encoding: 691 728 626 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dotaccent Encoding: 692 729 627 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ring Encoding: 693 730 628 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ogonek Encoding: 694 731 629 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tilde Encoding: 695 732 630 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: hungarumlaut Encoding: 696 733 631 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gravecomb Encoding: 697 768 632 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: acutecomb Encoding: 698 769 633 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0302 Encoding: 699 770 634 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tildecomb Encoding: 700 771 635 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0306 Encoding: 701 774 636 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0307 Encoding: 702 775 637 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0308 Encoding: 703 776 638 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni030C Encoding: 704 780 639 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0329 Encoding: 705 809 640 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0370 Encoding: 706 880 641 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0371 Encoding: 707 881 642 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0372 Encoding: 708 882 643 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0373 Encoding: 709 883 644 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0374 Encoding: 710 884 645 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0375 Encoding: 711 885 646 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0376 Encoding: 712 886 647 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0377 Encoding: 713 887 648 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni037A Encoding: 714 890 649 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni037B Encoding: 715 891 650 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni037C Encoding: 716 892 651 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni037D Encoding: 717 893 652 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni037E Encoding: 718 894 653 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tonos Encoding: 719 900 654 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dieresistonos Encoding: 720 901 655 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Alphatonos Encoding: 721 902 656 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: anoteleia Encoding: 722 903 657 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Epsilontonos Encoding: 723 904 658 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Etatonos Encoding: 724 905 659 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Iotatonos Encoding: 725 906 660 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Omicrontonos Encoding: 726 908 661 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Upsilontonos Encoding: 727 910 662 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Omegatonos Encoding: 728 911 663 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: iotadieresistonos Encoding: 729 912 664 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Alpha Encoding: 730 913 665 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Beta Encoding: 731 914 666 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Gamma Encoding: 732 915 667 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Delta Encoding: 733 8710 668 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Epsilon Encoding: 734 917 669 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Zeta Encoding: 735 918 670 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Eta Encoding: 736 919 671 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Theta Encoding: 737 920 672 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Iota Encoding: 738 921 673 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Kappa Encoding: 739 922 674 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Lambda Encoding: 740 923 675 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Mu Encoding: 741 924 676 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Nu Encoding: 742 925 677 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Xi Encoding: 743 926 678 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Omicron Encoding: 744 927 679 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Pi Encoding: 745 928 680 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Rho Encoding: 746 929 681 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Sigma Encoding: 747 931 682 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Tau Encoding: 748 932 683 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Upsilon Encoding: 749 933 684 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Phi Encoding: 750 934 685 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Chi Encoding: 751 935 686 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Psi Encoding: 752 936 687 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Omega Encoding: 753 8486 688 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Iotadieresis Encoding: 754 938 689 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Upsilondieresis Encoding: 755 939 690 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: alphatonos Encoding: 756 940 691 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: epsilontonos Encoding: 757 941 692 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: etatonos Encoding: 758 942 693 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: iotatonos Encoding: 759 943 694 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: upsilondieresistonos Encoding: 760 944 695 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: alpha Encoding: 761 945 696 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: beta Encoding: 762 946 697 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gamma Encoding: 763 947 698 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: delta Encoding: 764 948 699 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: epsilon Encoding: 765 949 700 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: zeta Encoding: 766 950 701 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: eta Encoding: 767 951 702 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: theta Encoding: 768 952 703 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: iota Encoding: 769 953 704 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: kappa Encoding: 770 954 705 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lambda Encoding: 771 955 706 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: mugreek Encoding: 772 956 707 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: nu Encoding: 773 957 708 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: xi Encoding: 774 958 709 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: omicron Encoding: 775 959 710 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: pi Encoding: 776 960 711 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: rho Encoding: 777 961 712 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: sigma1 Encoding: 778 962 713 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: sigma Encoding: 779 963 714 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: tau Encoding: 780 964 715 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: upsilon Encoding: 781 965 716 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: phi Encoding: 782 966 717 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: chi Encoding: 783 967 718 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: psi Encoding: 784 968 719 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: omega Encoding: 785 969 720 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: iotadieresis Encoding: 786 970 721 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: upsilondieresis Encoding: 787 971 722 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: omicrontonos Encoding: 788 972 723 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: upsilontonos Encoding: 789 973 724 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: omegatonos Encoding: 790 974 725 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03CF Encoding: 791 975 726 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03D0 Encoding: 792 976 727 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: theta1 Encoding: 793 977 728 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Upsilon1 Encoding: 794 978 729 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03D3 Encoding: 795 979 730 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03D4 Encoding: 796 980 731 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: phi1 Encoding: 797 981 732 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: omega1 Encoding: 798 982 733 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03D7 Encoding: 799 983 734 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03D8 Encoding: 800 984 735 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03D9 Encoding: 801 985 736 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03DA Encoding: 802 986 737 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03DB Encoding: 803 987 738 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03DC Encoding: 804 988 739 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03DD Encoding: 805 989 740 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03DE Encoding: 806 990 741 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03DF Encoding: 807 991 742 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E0 Encoding: 808 992 743 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E1 Encoding: 809 993 744 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E2 Encoding: 810 994 745 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E3 Encoding: 811 995 746 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E4 Encoding: 812 996 747 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E5 Encoding: 813 997 748 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E6 Encoding: 814 998 749 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E7 Encoding: 815 999 750 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E8 Encoding: 816 1000 751 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03E9 Encoding: 817 1001 752 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03EA Encoding: 818 1002 753 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03EB Encoding: 819 1003 754 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03EC Encoding: 820 1004 755 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03ED Encoding: 821 1005 756 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03EE Encoding: 822 1006 757 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03EF Encoding: 823 1007 758 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F0 Encoding: 824 1008 759 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F1 Encoding: 825 1009 760 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F2 Encoding: 826 1010 761 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F3 Encoding: 827 1011 762 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F4 Encoding: 828 1012 763 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F5 Encoding: 829 1013 764 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F6 Encoding: 830 1014 765 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F7 Encoding: 831 1015 766 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F8 Encoding: 832 1016 767 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03F9 Encoding: 833 1017 768 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03FA Encoding: 834 1018 769 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03FB Encoding: 835 1019 770 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03FC Encoding: 836 1020 771 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03FD Encoding: 837 1021 772 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03FE Encoding: 838 1022 773 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni03FF Encoding: 839 1023 774 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0400 Encoding: 840 1024 775 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10023 Encoding: 841 1025 776 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10051 Encoding: 842 1026 777 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10052 Encoding: 843 1027 778 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10053 Encoding: 844 1028 779 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10054 Encoding: 845 1029 780 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10055 Encoding: 846 1030 781 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10056 Encoding: 847 1031 782 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10057 Encoding: 848 1032 783 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10058 Encoding: 849 1033 784 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10059 Encoding: 850 1034 785 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10060 Encoding: 851 1035 786 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10061 Encoding: 852 1036 787 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni040D Encoding: 853 1037 788 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10062 Encoding: 854 1038 789 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10145 Encoding: 855 1039 790 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10017 Encoding: 856 1040 791 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10018 Encoding: 857 1041 792 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10019 Encoding: 858 1042 793 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10020 Encoding: 859 1043 794 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10021 Encoding: 860 1044 795 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10022 Encoding: 861 1045 796 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10024 Encoding: 862 1046 797 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10025 Encoding: 863 1047 798 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10026 Encoding: 864 1048 799 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10027 Encoding: 865 1049 800 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10028 Encoding: 866 1050 801 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10029 Encoding: 867 1051 802 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10030 Encoding: 868 1052 803 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10031 Encoding: 869 1053 804 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10032 Encoding: 870 1054 805 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10033 Encoding: 871 1055 806 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10034 Encoding: 872 1056 807 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10035 Encoding: 873 1057 808 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10036 Encoding: 874 1058 809 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10037 Encoding: 875 1059 810 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10038 Encoding: 876 1060 811 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10039 Encoding: 877 1061 812 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10040 Encoding: 878 1062 813 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10041 Encoding: 879 1063 814 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10042 Encoding: 880 1064 815 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10043 Encoding: 881 1065 816 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10044 Encoding: 882 1066 817 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10045 Encoding: 883 1067 818 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10046 Encoding: 884 1068 819 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10047 Encoding: 885 1069 820 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10048 Encoding: 886 1070 821 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10049 Encoding: 887 1071 822 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10065 Encoding: 888 1072 823 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10066 Encoding: 889 1073 824 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10067 Encoding: 890 1074 825 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10068 Encoding: 891 1075 826 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10069 Encoding: 892 1076 827 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10070 Encoding: 893 1077 828 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10072 Encoding: 894 1078 829 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10073 Encoding: 895 1079 830 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10074 Encoding: 896 1080 831 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10075 Encoding: 897 1081 832 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10076 Encoding: 898 1082 833 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10077 Encoding: 899 1083 834 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10078 Encoding: 900 1084 835 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10079 Encoding: 901 1085 836 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10080 Encoding: 902 1086 837 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10081 Encoding: 903 1087 838 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10082 Encoding: 904 1088 839 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10083 Encoding: 905 1089 840 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10084 Encoding: 906 1090 841 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10085 Encoding: 907 1091 842 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10086 Encoding: 908 1092 843 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10087 Encoding: 909 1093 844 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10088 Encoding: 910 1094 845 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10089 Encoding: 911 1095 846 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10090 Encoding: 912 1096 847 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10091 Encoding: 913 1097 848 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10092 Encoding: 914 1098 849 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10093 Encoding: 915 1099 850 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10094 Encoding: 916 1100 851 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10095 Encoding: 917 1101 852 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10096 Encoding: 918 1102 853 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10097 Encoding: 919 1103 854 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0450 Encoding: 920 1104 855 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10071 Encoding: 921 1105 856 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10099 Encoding: 922 1106 857 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10100 Encoding: 923 1107 858 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10101 Encoding: 924 1108 859 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10102 Encoding: 925 1109 860 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10103 Encoding: 926 1110 861 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10104 Encoding: 927 1111 862 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10105 Encoding: 928 1112 863 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10106 Encoding: 929 1113 864 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10107 Encoding: 930 1114 865 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10108 Encoding: 931 1115 866 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10109 Encoding: 932 1116 867 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni045D Encoding: 933 1117 868 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10110 Encoding: 934 1118 869 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10193 Encoding: 935 1119 870 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0460 Encoding: 936 1120 871 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0461 Encoding: 937 1121 872 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10146 Encoding: 938 1122 873 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10194 Encoding: 939 1123 874 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0464 Encoding: 940 1124 875 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0465 Encoding: 941 1125 876 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0466 Encoding: 942 1126 877 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0467 Encoding: 943 1127 878 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0468 Encoding: 944 1128 879 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0469 Encoding: 945 1129 880 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni046A Encoding: 946 1130 881 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni046B Encoding: 947 1131 882 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni046C Encoding: 948 1132 883 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni046D Encoding: 949 1133 884 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni046E Encoding: 950 1134 885 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni046F Encoding: 951 1135 886 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0470 Encoding: 952 1136 887 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0471 Encoding: 953 1137 888 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10147 Encoding: 954 1138 889 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10195 Encoding: 955 1139 890 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10148 Encoding: 956 1140 891 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10196 Encoding: 957 1141 892 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0476 Encoding: 958 1142 893 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0477 Encoding: 959 1143 894 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0478 Encoding: 960 1144 895 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0479 Encoding: 961 1145 896 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni047A Encoding: 962 1146 897 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni047B Encoding: 963 1147 898 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni047C Encoding: 964 1148 899 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni047D Encoding: 965 1149 900 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni047E Encoding: 966 1150 901 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni047F Encoding: 967 1151 902 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0480 Encoding: 968 1152 903 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0481 Encoding: 969 1153 904 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0482 Encoding: 970 1154 905 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni048A Encoding: 971 1162 906 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni048B Encoding: 972 1163 907 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni048C Encoding: 973 1164 908 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni048D Encoding: 974 1165 909 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni048E Encoding: 975 1166 910 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni048F Encoding: 976 1167 911 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10050 Encoding: 977 1168 912 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10098 Encoding: 978 1169 913 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0492 Encoding: 979 1170 914 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0493 Encoding: 980 1171 915 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0494 Encoding: 981 1172 916 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0495 Encoding: 982 1173 917 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0496 Encoding: 983 1174 918 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0497 Encoding: 984 1175 919 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0498 Encoding: 985 1176 920 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0499 Encoding: 986 1177 921 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni049A Encoding: 987 1178 922 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni049B Encoding: 988 1179 923 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni049C Encoding: 989 1180 924 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni049D Encoding: 990 1181 925 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni049E Encoding: 991 1182 926 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni049F Encoding: 992 1183 927 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A0 Encoding: 993 1184 928 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A1 Encoding: 994 1185 929 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A2 Encoding: 995 1186 930 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A3 Encoding: 996 1187 931 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A4 Encoding: 997 1188 932 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A5 Encoding: 998 1189 933 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A6 Encoding: 999 1190 934 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A7 Encoding: 1000 1191 935 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A8 Encoding: 1001 1192 936 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04A9 Encoding: 1002 1193 937 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04AA Encoding: 1003 1194 938 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04AB Encoding: 1004 1195 939 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04AC Encoding: 1005 1196 940 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04AD Encoding: 1006 1197 941 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04AE Encoding: 1007 1198 942 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04AF Encoding: 1008 1199 943 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B0 Encoding: 1009 1200 944 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B1 Encoding: 1010 1201 945 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B2 Encoding: 1011 1202 946 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B3 Encoding: 1012 1203 947 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B4 Encoding: 1013 1204 948 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B5 Encoding: 1014 1205 949 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B6 Encoding: 1015 1206 950 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B7 Encoding: 1016 1207 951 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B8 Encoding: 1017 1208 952 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04B9 Encoding: 1018 1209 953 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04BA Encoding: 1019 1210 954 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04BB Encoding: 1020 1211 955 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04BC Encoding: 1021 1212 956 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04BD Encoding: 1022 1213 957 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04BE Encoding: 1023 1214 958 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04BF Encoding: 1024 1215 959 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C0 Encoding: 1025 1216 960 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C1 Encoding: 1026 1217 961 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C2 Encoding: 1027 1218 962 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C3 Encoding: 1028 1219 963 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C4 Encoding: 1029 1220 964 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C5 Encoding: 1030 1221 965 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C6 Encoding: 1031 1222 966 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C7 Encoding: 1032 1223 967 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C8 Encoding: 1033 1224 968 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04C9 Encoding: 1034 1225 969 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04CA Encoding: 1035 1226 970 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04CB Encoding: 1036 1227 971 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04CC Encoding: 1037 1228 972 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04CD Encoding: 1038 1229 973 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04CE Encoding: 1039 1230 974 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04CF Encoding: 1040 1231 975 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D0 Encoding: 1041 1232 976 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D1 Encoding: 1042 1233 977 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D2 Encoding: 1043 1234 978 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D3 Encoding: 1044 1235 979 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D4 Encoding: 1045 1236 980 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D5 Encoding: 1046 1237 981 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D6 Encoding: 1047 1238 982 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D7 Encoding: 1048 1239 983 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04D8 Encoding: 1049 1240 984 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii10846 Encoding: 1050 1241 985 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04DA Encoding: 1051 1242 986 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04DB Encoding: 1052 1243 987 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04DC Encoding: 1053 1244 988 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04DD Encoding: 1054 1245 989 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04DE Encoding: 1055 1246 990 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04DF Encoding: 1056 1247 991 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E0 Encoding: 1057 1248 992 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E1 Encoding: 1058 1249 993 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E2 Encoding: 1059 1250 994 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E3 Encoding: 1060 1251 995 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E4 Encoding: 1061 1252 996 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E5 Encoding: 1062 1253 997 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E6 Encoding: 1063 1254 998 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E7 Encoding: 1064 1255 999 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E8 Encoding: 1065 1256 1000 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04E9 Encoding: 1066 1257 1001 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04EA Encoding: 1067 1258 1002 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04EB Encoding: 1068 1259 1003 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04EC Encoding: 1069 1260 1004 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04ED Encoding: 1070 1261 1005 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04EE Encoding: 1071 1262 1006 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04EF Encoding: 1072 1263 1007 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F0 Encoding: 1073 1264 1008 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F1 Encoding: 1074 1265 1009 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F2 Encoding: 1075 1266 1010 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F3 Encoding: 1076 1267 1011 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F4 Encoding: 1077 1268 1012 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F5 Encoding: 1078 1269 1013 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F6 Encoding: 1079 1270 1014 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F7 Encoding: 1080 1271 1015 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F8 Encoding: 1081 1272 1016 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04F9 Encoding: 1082 1273 1017 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04FA Encoding: 1083 1274 1018 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04FB Encoding: 1084 1275 1019 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04FC Encoding: 1085 1276 1020 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04FD Encoding: 1086 1277 1021 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04FE Encoding: 1087 1278 1022 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni04FF Encoding: 1088 1279 1023 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0500 Encoding: 1089 1280 1024 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0501 Encoding: 1090 1281 1025 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0502 Encoding: 1091 1282 1026 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0503 Encoding: 1092 1283 1027 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0504 Encoding: 1093 1284 1028 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0505 Encoding: 1094 1285 1029 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0506 Encoding: 1095 1286 1030 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0507 Encoding: 1096 1287 1031 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0508 Encoding: 1097 1288 1032 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0509 Encoding: 1098 1289 1033 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni050A Encoding: 1099 1290 1034 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni050B Encoding: 1100 1291 1035 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni050C Encoding: 1101 1292 1036 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni050D Encoding: 1102 1293 1037 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni050E Encoding: 1103 1294 1038 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni050F Encoding: 1104 1295 1039 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0510 Encoding: 1105 1296 1040 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0511 Encoding: 1106 1297 1041 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0512 Encoding: 1107 1298 1042 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0513 Encoding: 1108 1299 1043 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0514 Encoding: 1109 1300 1044 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0515 Encoding: 1110 1301 1045 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0516 Encoding: 1111 1302 1046 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0517 Encoding: 1112 1303 1047 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0518 Encoding: 1113 1304 1048 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0519 Encoding: 1114 1305 1049 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni051A Encoding: 1115 1306 1050 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni051B Encoding: 1116 1307 1051 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni051C Encoding: 1117 1308 1052 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni051D Encoding: 1118 1309 1053 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni051E Encoding: 1119 1310 1054 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni051F Encoding: 1120 1311 1055 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0520 Encoding: 1121 1312 1056 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0521 Encoding: 1122 1313 1057 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0522 Encoding: 1123 1314 1058 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0523 Encoding: 1124 1315 1059 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0524 Encoding: 1125 1316 1060 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0525 Encoding: 1126 1317 1061 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0526 Encoding: 1127 1318 1062 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0527 Encoding: 1128 1319 1063 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57407 Encoding: 1129 1567 1064 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57409 Encoding: 1130 1569 1065 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57410 Encoding: 1131 1570 1066 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57411 Encoding: 1132 1571 1067 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57412 Encoding: 1133 1572 1068 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57413 Encoding: 1134 1573 1069 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57414 Encoding: 1135 1574 1070 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57415 Encoding: 1136 1575 1071 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57416 Encoding: 1137 1576 1072 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57417 Encoding: 1138 1577 1073 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57418 Encoding: 1139 1578 1074 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57419 Encoding: 1140 1579 1075 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57420 Encoding: 1141 1580 1076 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57421 Encoding: 1142 1581 1077 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57422 Encoding: 1143 1582 1078 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57423 Encoding: 1144 1583 1079 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57424 Encoding: 1145 1584 1080 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57425 Encoding: 1146 1585 1081 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57426 Encoding: 1147 1586 1082 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57427 Encoding: 1148 1587 1083 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57428 Encoding: 1149 1588 1084 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57429 Encoding: 1150 1589 1085 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57430 Encoding: 1151 1590 1086 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57431 Encoding: 1152 1591 1087 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57432 Encoding: 1153 1592 1088 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57433 Encoding: 1154 1593 1089 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57434 Encoding: 1155 1594 1090 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57440 Encoding: 1156 1600 1091 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57441 Encoding: 1157 1601 1092 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57442 Encoding: 1158 1602 1093 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57443 Encoding: 1159 1603 1094 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57444 Encoding: 1160 1604 1095 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57445 Encoding: 1161 1605 1096 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57446 Encoding: 1162 1606 1097 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57470 Encoding: 1163 1607 1098 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57448 Encoding: 1164 1608 1099 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57449 Encoding: 1165 1609 1100 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57450 Encoding: 1166 1610 1101 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57392 Encoding: 1167 1632 1102 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57393 Encoding: 1168 1633 1103 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57394 Encoding: 1169 1634 1104 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57395 Encoding: 1170 1635 1105 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57396 Encoding: 1171 1636 1106 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57397 Encoding: 1172 1637 1107 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57398 Encoding: 1173 1638 1108 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57399 Encoding: 1174 1639 1109 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57400 Encoding: 1175 1640 1110 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57401 Encoding: 1176 1641 1111 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57381 Encoding: 1177 1642 1112 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni066B Encoding: 1178 1643 1113 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni066C Encoding: 1179 1644 1114 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni066E Encoding: 1180 1646 1115 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni066F Encoding: 1181 1647 1116 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0FD5 Encoding: 1182 4053 1117 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0FD6 Encoding: 1183 4054 1118 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E00 Encoding: 1184 7680 1119 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E01 Encoding: 1185 7681 1120 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E02 Encoding: 1186 7682 1121 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E03 Encoding: 1187 7683 1122 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E04 Encoding: 1188 7684 1123 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E05 Encoding: 1189 7685 1124 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E06 Encoding: 1190 7686 1125 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E07 Encoding: 1191 7687 1126 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E08 Encoding: 1192 7688 1127 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E09 Encoding: 1193 7689 1128 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E0A Encoding: 1194 7690 1129 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E0B Encoding: 1195 7691 1130 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E0C Encoding: 1196 7692 1131 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E0D Encoding: 1197 7693 1132 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E0E Encoding: 1198 7694 1133 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E0F Encoding: 1199 7695 1134 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E10 Encoding: 1200 7696 1135 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E11 Encoding: 1201 7697 1136 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E12 Encoding: 1202 7698 1137 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E13 Encoding: 1203 7699 1138 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E14 Encoding: 1204 7700 1139 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E15 Encoding: 1205 7701 1140 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E16 Encoding: 1206 7702 1141 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E17 Encoding: 1207 7703 1142 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E18 Encoding: 1208 7704 1143 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E19 Encoding: 1209 7705 1144 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E1A Encoding: 1210 7706 1145 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E1B Encoding: 1211 7707 1146 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E1C Encoding: 1212 7708 1147 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E1D Encoding: 1213 7709 1148 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E1E Encoding: 1214 7710 1149 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E1F Encoding: 1215 7711 1150 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E20 Encoding: 1216 7712 1151 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E21 Encoding: 1217 7713 1152 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E22 Encoding: 1218 7714 1153 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E23 Encoding: 1219 7715 1154 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E24 Encoding: 1220 7716 1155 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E25 Encoding: 1221 7717 1156 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E26 Encoding: 1222 7718 1157 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E27 Encoding: 1223 7719 1158 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E28 Encoding: 1224 7720 1159 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E29 Encoding: 1225 7721 1160 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E2A Encoding: 1226 7722 1161 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E2B Encoding: 1227 7723 1162 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E2C Encoding: 1228 7724 1163 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E2D Encoding: 1229 7725 1164 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E2E Encoding: 1230 7726 1165 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E2F Encoding: 1231 7727 1166 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E30 Encoding: 1232 7728 1167 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E31 Encoding: 1233 7729 1168 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E32 Encoding: 1234 7730 1169 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E33 Encoding: 1235 7731 1170 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Klinebelow Encoding: 1236 7732 1171 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: klinebelow Encoding: 1237 7733 1172 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E36 Encoding: 1238 7734 1173 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E37 Encoding: 1239 7735 1174 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E38 Encoding: 1240 7736 1175 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E39 Encoding: 1241 7737 1176 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E3A Encoding: 1242 7738 1177 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E3B Encoding: 1243 7739 1178 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E3C Encoding: 1244 7740 1179 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E3D Encoding: 1245 7741 1180 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E3E Encoding: 1246 7742 1181 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E3F Encoding: 1247 7743 1182 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E40 Encoding: 1248 7744 1183 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E41 Encoding: 1249 7745 1184 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E42 Encoding: 1250 7746 1185 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E43 Encoding: 1251 7747 1186 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E44 Encoding: 1252 7748 1187 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E45 Encoding: 1253 7749 1188 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E46 Encoding: 1254 7750 1189 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E47 Encoding: 1255 7751 1190 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E48 Encoding: 1256 7752 1191 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E49 Encoding: 1257 7753 1192 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E4A Encoding: 1258 7754 1193 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E4B Encoding: 1259 7755 1194 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E4C Encoding: 1260 7756 1195 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E4D Encoding: 1261 7757 1196 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E4E Encoding: 1262 7758 1197 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E4F Encoding: 1263 7759 1198 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E50 Encoding: 1264 7760 1199 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E51 Encoding: 1265 7761 1200 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E52 Encoding: 1266 7762 1201 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E53 Encoding: 1267 7763 1202 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E54 Encoding: 1268 7764 1203 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E55 Encoding: 1269 7765 1204 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E56 Encoding: 1270 7766 1205 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E57 Encoding: 1271 7767 1206 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E58 Encoding: 1272 7768 1207 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E59 Encoding: 1273 7769 1208 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E5A Encoding: 1274 7770 1209 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E5B Encoding: 1275 7771 1210 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E5C Encoding: 1276 7772 1211 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E5D Encoding: 1277 7773 1212 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E5E Encoding: 1278 7774 1213 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E5F Encoding: 1279 7775 1214 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E60 Encoding: 1280 7776 1215 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E61 Encoding: 1281 7777 1216 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E62 Encoding: 1282 7778 1217 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E63 Encoding: 1283 7779 1218 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E64 Encoding: 1284 7780 1219 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E65 Encoding: 1285 7781 1220 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E66 Encoding: 1286 7782 1221 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E67 Encoding: 1287 7783 1222 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E68 Encoding: 1288 7784 1223 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E69 Encoding: 1289 7785 1224 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E6A Encoding: 1290 7786 1225 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E6B Encoding: 1291 7787 1226 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E6C Encoding: 1292 7788 1227 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E6D Encoding: 1293 7789 1228 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E6E Encoding: 1294 7790 1229 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E6F Encoding: 1295 7791 1230 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E70 Encoding: 1296 7792 1231 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E71 Encoding: 1297 7793 1232 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E72 Encoding: 1298 7794 1233 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E73 Encoding: 1299 7795 1234 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E74 Encoding: 1300 7796 1235 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E75 Encoding: 1301 7797 1236 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E76 Encoding: 1302 7798 1237 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E77 Encoding: 1303 7799 1238 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E78 Encoding: 1304 7800 1239 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E79 Encoding: 1305 7801 1240 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E7A Encoding: 1306 7802 1241 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E7B Encoding: 1307 7803 1242 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E7C Encoding: 1308 7804 1243 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E7D Encoding: 1309 7805 1244 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E7E Encoding: 1310 7806 1245 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E7F Encoding: 1311 7807 1246 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Wgrave Encoding: 1312 7808 1247 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: wgrave Encoding: 1313 7809 1248 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Wacute Encoding: 1314 7810 1249 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: wacute Encoding: 1315 7811 1250 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Wdieresis Encoding: 1316 7812 1251 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: wdieresis Encoding: 1317 7813 1252 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E86 Encoding: 1318 7814 1253 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E87 Encoding: 1319 7815 1254 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E88 Encoding: 1320 7816 1255 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E89 Encoding: 1321 7817 1256 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E8A Encoding: 1322 7818 1257 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E8B Encoding: 1323 7819 1258 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E8C Encoding: 1324 7820 1259 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E8D Encoding: 1325 7821 1260 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E8E Encoding: 1326 7822 1261 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E8F Encoding: 1327 7823 1262 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E90 Encoding: 1328 7824 1263 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E91 Encoding: 1329 7825 1264 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E92 Encoding: 1330 7826 1265 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E93 Encoding: 1331 7827 1266 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E94 Encoding: 1332 7828 1267 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E95 Encoding: 1333 7829 1268 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E96 Encoding: 1334 7830 1269 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E97 Encoding: 1335 7831 1270 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E98 Encoding: 1336 7832 1271 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E99 Encoding: 1337 7833 1272 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E9A Encoding: 1338 7834 1273 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E9B Encoding: 1339 7835 1274 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E9C Encoding: 1340 7836 1275 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E9D Encoding: 1341 7837 1276 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E9E Encoding: 1342 7838 1277 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1E9F Encoding: 1343 7839 1278 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA0 Encoding: 1344 7840 1279 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA1 Encoding: 1345 7841 1280 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA2 Encoding: 1346 7842 1281 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA3 Encoding: 1347 7843 1282 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA4 Encoding: 1348 7844 1283 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA5 Encoding: 1349 7845 1284 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA6 Encoding: 1350 7846 1285 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA7 Encoding: 1351 7847 1286 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA8 Encoding: 1352 7848 1287 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EA9 Encoding: 1353 7849 1288 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EAA Encoding: 1354 7850 1289 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EAB Encoding: 1355 7851 1290 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EAC Encoding: 1356 7852 1291 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EAD Encoding: 1357 7853 1292 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EAE Encoding: 1358 7854 1293 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EAF Encoding: 1359 7855 1294 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB0 Encoding: 1360 7856 1295 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB1 Encoding: 1361 7857 1296 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB2 Encoding: 1362 7858 1297 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB3 Encoding: 1363 7859 1298 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB4 Encoding: 1364 7860 1299 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB5 Encoding: 1365 7861 1300 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB6 Encoding: 1366 7862 1301 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EB7 Encoding: 1367 7863 1302 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Edotbelow Encoding: 1368 7864 1303 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: edotbelow Encoding: 1369 7865 1304 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EBA Encoding: 1370 7866 1305 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EBB Encoding: 1371 7867 1306 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Etilde Encoding: 1372 7868 1307 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: etilde Encoding: 1373 7869 1308 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EBE Encoding: 1374 7870 1309 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EBF Encoding: 1375 7871 1310 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC0 Encoding: 1376 7872 1311 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC1 Encoding: 1377 7873 1312 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC2 Encoding: 1378 7874 1313 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC3 Encoding: 1379 7875 1314 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC4 Encoding: 1380 7876 1315 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC5 Encoding: 1381 7877 1316 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC6 Encoding: 1382 7878 1317 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC7 Encoding: 1383 7879 1318 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC8 Encoding: 1384 7880 1319 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EC9 Encoding: 1385 7881 1320 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ECA Encoding: 1386 7882 1321 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ECB Encoding: 1387 7883 1322 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Odotbelow Encoding: 1388 7884 1323 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: odotbelow Encoding: 1389 7885 1324 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ECE Encoding: 1390 7886 1325 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ECF Encoding: 1391 7887 1326 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED0 Encoding: 1392 7888 1327 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED1 Encoding: 1393 7889 1328 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED2 Encoding: 1394 7890 1329 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED3 Encoding: 1395 7891 1330 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED4 Encoding: 1396 7892 1331 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED5 Encoding: 1397 7893 1332 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED6 Encoding: 1398 7894 1333 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED7 Encoding: 1399 7895 1334 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED8 Encoding: 1400 7896 1335 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1ED9 Encoding: 1401 7897 1336 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EDA Encoding: 1402 7898 1337 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EDB Encoding: 1403 7899 1338 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EDC Encoding: 1404 7900 1339 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EDD Encoding: 1405 7901 1340 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EDE Encoding: 1406 7902 1341 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EDF Encoding: 1407 7903 1342 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE0 Encoding: 1408 7904 1343 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE1 Encoding: 1409 7905 1344 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE2 Encoding: 1410 7906 1345 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE3 Encoding: 1411 7907 1346 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE4 Encoding: 1412 7908 1347 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE5 Encoding: 1413 7909 1348 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE6 Encoding: 1414 7910 1349 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE7 Encoding: 1415 7911 1350 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE8 Encoding: 1416 7912 1351 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EE9 Encoding: 1417 7913 1352 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EEA Encoding: 1418 7914 1353 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EEB Encoding: 1419 7915 1354 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EEC Encoding: 1420 7916 1355 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EED Encoding: 1421 7917 1356 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EEE Encoding: 1422 7918 1357 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EEF Encoding: 1423 7919 1358 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EF0 Encoding: 1424 7920 1359 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EF1 Encoding: 1425 7921 1360 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ygrave Encoding: 1426 7922 1361 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ygrave Encoding: 1427 7923 1362 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EF4 Encoding: 1428 7924 1363 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EF5 Encoding: 1429 7925 1364 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EF6 Encoding: 1430 7926 1365 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EF7 Encoding: 1431 7927 1366 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Ytilde Encoding: 1432 7928 1367 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ytilde Encoding: 1433 7929 1368 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EFA Encoding: 1434 7930 1369 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EFB Encoding: 1435 7931 1370 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EFC Encoding: 1436 7932 1371 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EFD Encoding: 1437 7933 1372 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EFE Encoding: 1438 7934 1373 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1EFF Encoding: 1439 7935 1374 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F00 Encoding: 1440 7936 1375 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F01 Encoding: 1441 7937 1376 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F02 Encoding: 1442 7938 1377 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F03 Encoding: 1443 7939 1378 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F04 Encoding: 1444 7940 1379 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F05 Encoding: 1445 7941 1380 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F06 Encoding: 1446 7942 1381 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F07 Encoding: 1447 7943 1382 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F08 Encoding: 1448 7944 1383 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F09 Encoding: 1449 7945 1384 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F0A Encoding: 1450 7946 1385 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F0B Encoding: 1451 7947 1386 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F0C Encoding: 1452 7948 1387 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F0D Encoding: 1453 7949 1388 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F0E Encoding: 1454 7950 1389 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F0F Encoding: 1455 7951 1390 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F10 Encoding: 1456 7952 1391 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F11 Encoding: 1457 7953 1392 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F12 Encoding: 1458 7954 1393 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F13 Encoding: 1459 7955 1394 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F14 Encoding: 1460 7956 1395 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F15 Encoding: 1461 7957 1396 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F18 Encoding: 1462 7960 1397 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F19 Encoding: 1463 7961 1398 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F1A Encoding: 1464 7962 1399 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F1B Encoding: 1465 7963 1400 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F1C Encoding: 1466 7964 1401 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F1D Encoding: 1467 7965 1402 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F20 Encoding: 1468 7968 1403 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F21 Encoding: 1469 7969 1404 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F22 Encoding: 1470 7970 1405 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F23 Encoding: 1471 7971 1406 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F24 Encoding: 1472 7972 1407 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F25 Encoding: 1473 7973 1408 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F26 Encoding: 1474 7974 1409 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F27 Encoding: 1475 7975 1410 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F28 Encoding: 1476 7976 1411 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F29 Encoding: 1477 7977 1412 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F2A Encoding: 1478 7978 1413 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F2B Encoding: 1479 7979 1414 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F2C Encoding: 1480 7980 1415 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F2D Encoding: 1481 7981 1416 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F2E Encoding: 1482 7982 1417 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F2F Encoding: 1483 7983 1418 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F30 Encoding: 1484 7984 1419 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F31 Encoding: 1485 7985 1420 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F32 Encoding: 1486 7986 1421 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F33 Encoding: 1487 7987 1422 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F34 Encoding: 1488 7988 1423 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F35 Encoding: 1489 7989 1424 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F36 Encoding: 1490 7990 1425 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F37 Encoding: 1491 7991 1426 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F38 Encoding: 1492 7992 1427 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F39 Encoding: 1493 7993 1428 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F3A Encoding: 1494 7994 1429 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F3B Encoding: 1495 7995 1430 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F3C Encoding: 1496 7996 1431 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F3D Encoding: 1497 7997 1432 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F3E Encoding: 1498 7998 1433 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F3F Encoding: 1499 7999 1434 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F40 Encoding: 1500 8000 1435 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F41 Encoding: 1501 8001 1436 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F42 Encoding: 1502 8002 1437 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F43 Encoding: 1503 8003 1438 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F44 Encoding: 1504 8004 1439 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F45 Encoding: 1505 8005 1440 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F48 Encoding: 1506 8008 1441 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F49 Encoding: 1507 8009 1442 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F4A Encoding: 1508 8010 1443 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F4B Encoding: 1509 8011 1444 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F4C Encoding: 1510 8012 1445 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F4D Encoding: 1511 8013 1446 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F50 Encoding: 1512 8016 1447 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F51 Encoding: 1513 8017 1448 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F52 Encoding: 1514 8018 1449 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F53 Encoding: 1515 8019 1450 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F54 Encoding: 1516 8020 1451 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F55 Encoding: 1517 8021 1452 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F56 Encoding: 1518 8022 1453 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F57 Encoding: 1519 8023 1454 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F59 Encoding: 1520 8025 1455 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F5B Encoding: 1521 8027 1456 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F5D Encoding: 1522 8029 1457 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F5F Encoding: 1523 8031 1458 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F60 Encoding: 1524 8032 1459 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F61 Encoding: 1525 8033 1460 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F62 Encoding: 1526 8034 1461 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F63 Encoding: 1527 8035 1462 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F64 Encoding: 1528 8036 1463 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F65 Encoding: 1529 8037 1464 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F66 Encoding: 1530 8038 1465 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F67 Encoding: 1531 8039 1466 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F68 Encoding: 1532 8040 1467 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F69 Encoding: 1533 8041 1468 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F6A Encoding: 1534 8042 1469 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F6B Encoding: 1535 8043 1470 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F6C Encoding: 1536 8044 1471 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F6D Encoding: 1537 8045 1472 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F6E Encoding: 1538 8046 1473 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F6F Encoding: 1539 8047 1474 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F70 Encoding: 1540 8048 1475 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F71 Encoding: 1541 8049 1476 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F72 Encoding: 1542 8050 1477 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F73 Encoding: 1543 8051 1478 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F74 Encoding: 1544 8052 1479 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F75 Encoding: 1545 8053 1480 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F76 Encoding: 1546 8054 1481 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F77 Encoding: 1547 8055 1482 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F78 Encoding: 1548 8056 1483 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F79 Encoding: 1549 8057 1484 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F7A Encoding: 1550 8058 1485 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F7B Encoding: 1551 8059 1486 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F7C Encoding: 1552 8060 1487 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F7D Encoding: 1553 8061 1488 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F80 Encoding: 1554 8064 1489 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F81 Encoding: 1555 8065 1490 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F82 Encoding: 1556 8066 1491 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F83 Encoding: 1557 8067 1492 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F84 Encoding: 1558 8068 1493 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F85 Encoding: 1559 8069 1494 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F86 Encoding: 1560 8070 1495 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F87 Encoding: 1561 8071 1496 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F88 Encoding: 1562 8072 1497 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F89 Encoding: 1563 8073 1498 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F8A Encoding: 1564 8074 1499 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F8B Encoding: 1565 8075 1500 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F8C Encoding: 1566 8076 1501 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F8D Encoding: 1567 8077 1502 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F8E Encoding: 1568 8078 1503 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F8F Encoding: 1569 8079 1504 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F90 Encoding: 1570 8080 1505 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F91 Encoding: 1571 8081 1506 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F92 Encoding: 1572 8082 1507 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F93 Encoding: 1573 8083 1508 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F94 Encoding: 1574 8084 1509 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F95 Encoding: 1575 8085 1510 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F96 Encoding: 1576 8086 1511 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F97 Encoding: 1577 8087 1512 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F98 Encoding: 1578 8088 1513 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F99 Encoding: 1579 8089 1514 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F9A Encoding: 1580 8090 1515 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F9B Encoding: 1581 8091 1516 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F9C Encoding: 1582 8092 1517 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F9D Encoding: 1583 8093 1518 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F9E Encoding: 1584 8094 1519 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1F9F Encoding: 1585 8095 1520 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA0 Encoding: 1586 8096 1521 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA1 Encoding: 1587 8097 1522 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA2 Encoding: 1588 8098 1523 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA3 Encoding: 1589 8099 1524 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA4 Encoding: 1590 8100 1525 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA5 Encoding: 1591 8101 1526 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA6 Encoding: 1592 8102 1527 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA7 Encoding: 1593 8103 1528 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA8 Encoding: 1594 8104 1529 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FA9 Encoding: 1595 8105 1530 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FAA Encoding: 1596 8106 1531 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FAB Encoding: 1597 8107 1532 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FAC Encoding: 1598 8108 1533 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FAD Encoding: 1599 8109 1534 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FAE Encoding: 1600 8110 1535 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FAF Encoding: 1601 8111 1536 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB0 Encoding: 1602 8112 1537 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB1 Encoding: 1603 8113 1538 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB2 Encoding: 1604 8114 1539 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB3 Encoding: 1605 8115 1540 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB4 Encoding: 1606 8116 1541 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB6 Encoding: 1607 8118 1542 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB7 Encoding: 1608 8119 1543 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB8 Encoding: 1609 8120 1544 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FB9 Encoding: 1610 8121 1545 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FBA Encoding: 1611 8122 1546 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FBB Encoding: 1612 8123 1547 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FBC Encoding: 1613 8124 1548 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FBD Encoding: 1614 8125 1549 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FBE Encoding: 1615 8126 1550 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FBF Encoding: 1616 8127 1551 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC0 Encoding: 1617 8128 1552 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC1 Encoding: 1618 8129 1553 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC2 Encoding: 1619 8130 1554 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC3 Encoding: 1620 8131 1555 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC4 Encoding: 1621 8132 1556 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC6 Encoding: 1622 8134 1557 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC7 Encoding: 1623 8135 1558 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC8 Encoding: 1624 8136 1559 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FC9 Encoding: 1625 8137 1560 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FCA Encoding: 1626 8138 1561 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FCB Encoding: 1627 8139 1562 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FCC Encoding: 1628 8140 1563 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FCD Encoding: 1629 8141 1564 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FCE Encoding: 1630 8142 1565 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FCF Encoding: 1631 8143 1566 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD0 Encoding: 1632 8144 1567 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD1 Encoding: 1633 8145 1568 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD2 Encoding: 1634 8146 1569 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD3 Encoding: 1635 8147 1570 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD6 Encoding: 1636 8150 1571 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD7 Encoding: 1637 8151 1572 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD8 Encoding: 1638 8152 1573 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FD9 Encoding: 1639 8153 1574 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FDA Encoding: 1640 8154 1575 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FDB Encoding: 1641 8155 1576 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FDD Encoding: 1642 8157 1577 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FDE Encoding: 1643 8158 1578 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FDF Encoding: 1644 8159 1579 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE0 Encoding: 1645 8160 1580 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE1 Encoding: 1646 8161 1581 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE2 Encoding: 1647 8162 1582 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE3 Encoding: 1648 8163 1583 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE4 Encoding: 1649 8164 1584 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE5 Encoding: 1650 8165 1585 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE6 Encoding: 1651 8166 1586 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE7 Encoding: 1652 8167 1587 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE8 Encoding: 1653 8168 1588 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FE9 Encoding: 1654 8169 1589 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FEA Encoding: 1655 8170 1590 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FEB Encoding: 1656 8171 1591 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FEC Encoding: 1657 8172 1592 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FED Encoding: 1658 8173 1593 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FEE Encoding: 1659 8174 1594 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FEF Encoding: 1660 8175 1595 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF2 Encoding: 1661 8178 1596 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF3 Encoding: 1662 8179 1597 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF4 Encoding: 1663 8180 1598 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF6 Encoding: 1664 8182 1599 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF7 Encoding: 1665 8183 1600 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF8 Encoding: 1666 8184 1601 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FF9 Encoding: 1667 8185 1602 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FFA Encoding: 1668 8186 1603 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FFB Encoding: 1669 8187 1604 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FFC Encoding: 1670 8188 1605 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FFD Encoding: 1671 8189 1606 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1FFE Encoding: 1672 8190 1607 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: hyphentwo Encoding: 1673 8208 1608 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2011 Encoding: 1674 8209 1609 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: figuredash Encoding: 1675 8210 1610 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: endash Encoding: 1676 8211 1611 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: emdash Encoding: 1677 8212 1612 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii00208 Encoding: 1678 8213 1613 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dblverticalbar Encoding: 1679 8214 1614 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: underscoredbl Encoding: 1680 8215 1615 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quoteleft Encoding: 1681 8216 1616 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quoteright Encoding: 1682 8217 1617 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotesinglbase Encoding: 1683 8218 1618 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotereversed Encoding: 1684 8219 1619 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotedblleft Encoding: 1685 8220 1620 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotedblright Encoding: 1686 8221 1621 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: quotedblbase Encoding: 1687 8222 1622 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni201F Encoding: 1688 8223 1623 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dagger Encoding: 1689 8224 1624 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: daggerdbl Encoding: 1690 8225 1625 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: bullet Encoding: 1691 8226 1626 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2023 Encoding: 1692 8227 1627 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: onedotenleader Encoding: 1693 8228 1628 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: twodotenleader Encoding: 1694 8229 1629 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ellipsis Encoding: 1695 8230 1630 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2027 Encoding: 1696 8231 1631 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: perthousand Encoding: 1697 8240 1632 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2031 Encoding: 1698 8241 1633 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: minute Encoding: 1699 8242 1634 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: second Encoding: 1700 8243 1635 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2034 Encoding: 1701 8244 1636 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2035 Encoding: 1702 8245 1637 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2036 Encoding: 1703 8246 1638 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2037 Encoding: 1704 8247 1639 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2038 Encoding: 1705 8248 1640 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: guilsinglleft Encoding: 1706 8249 1641 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: guilsinglright Encoding: 1707 8250 1642 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: exclamdbl Encoding: 1708 8252 1643 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni203D Encoding: 1709 8253 1644 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: overline Encoding: 1710 8254 1645 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2043 Encoding: 1711 8259 1646 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2047 Encoding: 1712 8263 1647 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2048 Encoding: 1713 8264 1648 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2049 Encoding: 1714 8265 1649 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni204B Encoding: 1715 8267 1650 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni204E Encoding: 1716 8270 1651 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni204F Encoding: 1717 8271 1652 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2051 Encoding: 1718 8273 1653 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2070 Encoding: 1719 8304 1654 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2071 Encoding: 1720 8305 1655 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2074 Encoding: 1721 8308 1656 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2075 Encoding: 1722 8309 1657 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2076 Encoding: 1723 8310 1658 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2077 Encoding: 1724 8311 1659 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2078 Encoding: 1725 8312 1660 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2079 Encoding: 1726 8313 1661 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni207A Encoding: 1727 8314 1662 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni207B Encoding: 1728 8315 1663 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni207C Encoding: 1729 8316 1664 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni207D Encoding: 1730 8317 1665 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni207E Encoding: 1731 8318 1666 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: nsuperior Encoding: 1732 8319 1667 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2080 Encoding: 1733 8320 1668 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2081 Encoding: 1734 8321 1669 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2082 Encoding: 1735 8322 1670 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2083 Encoding: 1736 8323 1671 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2084 Encoding: 1737 8324 1672 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2085 Encoding: 1738 8325 1673 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2086 Encoding: 1739 8326 1674 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2087 Encoding: 1740 8327 1675 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2088 Encoding: 1741 8328 1676 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2089 Encoding: 1742 8329 1677 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni208A Encoding: 1743 8330 1678 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni208B Encoding: 1744 8331 1679 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni208C Encoding: 1745 8332 1680 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni208D Encoding: 1746 8333 1681 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni208E Encoding: 1747 8334 1682 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2090 Encoding: 1748 8336 1683 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2091 Encoding: 1749 8337 1684 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2092 Encoding: 1750 8338 1685 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2093 Encoding: 1751 8339 1686 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2094 Encoding: 1752 8340 1687 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2095 Encoding: 1753 8341 1688 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2096 Encoding: 1754 8342 1689 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2097 Encoding: 1755 8343 1690 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2098 Encoding: 1756 8344 1691 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2099 Encoding: 1757 8345 1692 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni209A Encoding: 1758 8346 1693 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni209B Encoding: 1759 8347 1694 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni209C Encoding: 1760 8348 1695 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: peseta Encoding: 1761 8359 1696 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: Euro Encoding: 1762 8364 1697 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20AE Encoding: 1763 8366 1698 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2102 Encoding: 1764 8450 1699 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2103 Encoding: 1765 8451 1700 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2109 Encoding: 1766 8457 1701 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni210D Encoding: 1767 8461 1702 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni210E Encoding: 1768 8462 1703 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni210F Encoding: 1769 8463 1704 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2115 Encoding: 1770 8469 1705 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii61352 Encoding: 1771 8470 1706 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2119 Encoding: 1772 8473 1707 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni211A Encoding: 1773 8474 1708 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni211D Encoding: 1774 8477 1709 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: trademark Encoding: 1775 8482 1710 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2124 Encoding: 1776 8484 1711 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2127 Encoding: 1777 8487 1712 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni213E Encoding: 1778 8510 1713 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni213F Encoding: 1779 8511 1714 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2150 Encoding: 1780 8528 1715 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2151 Encoding: 1781 8529 1716 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: onethird Encoding: 1782 8531 1717 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: twothirds Encoding: 1783 8532 1718 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2155 Encoding: 1784 8533 1719 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2156 Encoding: 1785 8534 1720 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2157 Encoding: 1786 8535 1721 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2158 Encoding: 1787 8536 1722 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2159 Encoding: 1788 8537 1723 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni215A Encoding: 1789 8538 1724 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: oneeighth Encoding: 1790 8539 1725 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: threeeighths Encoding: 1791 8540 1726 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: fiveeighths Encoding: 1792 8541 1727 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: seveneighths Encoding: 1793 8542 1728 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni215F Encoding: 1794 8543 1729 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2189 Encoding: 1795 8585 1730 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowleft Encoding: 1796 8592 1731 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowup Encoding: 1797 8593 1732 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowright Encoding: 1798 8594 1733 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowdown Encoding: 1799 8595 1734 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowboth Encoding: 1800 8596 1735 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowupdn Encoding: 1801 8597 1736 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2196 Encoding: 1802 8598 1737 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2197 Encoding: 1803 8599 1738 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2198 Encoding: 1804 8600 1739 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2199 Encoding: 1805 8601 1740 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A2 Encoding: 1806 8610 1741 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A3 Encoding: 1807 8611 1742 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A4 Encoding: 1808 8612 1743 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A5 Encoding: 1809 8613 1744 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A6 Encoding: 1810 8614 1745 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A7 Encoding: 1811 8615 1746 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowupdnbse Encoding: 1812 8616 1747 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A9 Encoding: 1813 8617 1748 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21AA Encoding: 1814 8618 1749 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B0 Encoding: 1815 8624 1750 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B1 Encoding: 1816 8625 1751 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B2 Encoding: 1817 8626 1752 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B3 Encoding: 1818 8627 1753 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B4 Encoding: 1819 8628 1754 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: carriagereturn Encoding: 1820 8629 1755 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B6 Encoding: 1821 8630 1756 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B7 Encoding: 1822 8631 1757 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B9 Encoding: 1823 8633 1758 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21BA Encoding: 1824 8634 1759 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21BB Encoding: 1825 8635 1760 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21BC Encoding: 1826 8636 1761 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21BD Encoding: 1827 8637 1762 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21BE Encoding: 1828 8638 1763 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21BF Encoding: 1829 8639 1764 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C0 Encoding: 1830 8640 1765 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C1 Encoding: 1831 8641 1766 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C2 Encoding: 1832 8642 1767 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C3 Encoding: 1833 8643 1768 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C4 Encoding: 1834 8644 1769 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C5 Encoding: 1835 8645 1770 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C6 Encoding: 1836 8646 1771 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C7 Encoding: 1837 8647 1772 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C8 Encoding: 1838 8648 1773 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21C9 Encoding: 1839 8649 1774 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21CA Encoding: 1840 8650 1775 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21CB Encoding: 1841 8651 1776 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21CC Encoding: 1842 8652 1777 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowdblleft Encoding: 1843 8656 1778 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowdblup Encoding: 1844 8657 1779 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowdblright Encoding: 1845 8658 1780 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowdbldown Encoding: 1846 8659 1781 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: arrowdblboth Encoding: 1847 8660 1782 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21D5 Encoding: 1848 8661 1783 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21D6 Encoding: 1849 8662 1784 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21D7 Encoding: 1850 8663 1785 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21D8 Encoding: 1851 8664 1786 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21D9 Encoding: 1852 8665 1787 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E0 Encoding: 1853 8672 1788 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E1 Encoding: 1854 8673 1789 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E2 Encoding: 1855 8674 1790 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E3 Encoding: 1856 8675 1791 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E4 Encoding: 1857 8676 1792 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E5 Encoding: 1858 8677 1793 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E6 Encoding: 1859 8678 1794 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E7 Encoding: 1860 8679 1795 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E8 Encoding: 1861 8680 1796 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21E9 Encoding: 1862 8681 1797 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F3 Encoding: 1863 8691 1798 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F5 Encoding: 1864 8693 1799 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F6 Encoding: 1865 8694 1800 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: universal Encoding: 1866 8704 1801 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2201 Encoding: 1867 8705 1802 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: partialdiff Encoding: 1868 8706 1803 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: existential Encoding: 1869 8707 1804 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2204 Encoding: 1870 8708 1805 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: emptyset Encoding: 1871 8709 1806 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: gradient Encoding: 1872 8711 1807 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: element Encoding: 1873 8712 1808 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: notelement Encoding: 1874 8713 1809 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni220A Encoding: 1875 8714 1810 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: suchthat Encoding: 1876 8715 1811 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni220C Encoding: 1877 8716 1812 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni220D Encoding: 1878 8717 1813 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: product Encoding: 1879 8719 1814 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: summation Encoding: 1880 8721 1815 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: minus Encoding: 1881 8722 1816 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2213 Encoding: 1882 8723 1817 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2214 Encoding: 1883 8724 1818 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: bulletoperator Encoding: 1884 8729 1819 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: radical Encoding: 1885 8730 1820 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni221B Encoding: 1886 8731 1821 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni221C Encoding: 1887 8732 1822 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: proportional Encoding: 1888 8733 1823 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: infinity Encoding: 1889 8734 1824 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: orthogonal Encoding: 1890 8735 1825 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: angle Encoding: 1891 8736 1826 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2223 Encoding: 1892 8739 1827 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2224 Encoding: 1893 8740 1828 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2225 Encoding: 1894 8741 1829 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2226 Encoding: 1895 8742 1830 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: logicaland Encoding: 1896 8743 1831 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: logicalor Encoding: 1897 8744 1832 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: intersection Encoding: 1898 8745 1833 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: union Encoding: 1899 8746 1834 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: integral Encoding: 1900 8747 1835 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni222C Encoding: 1901 8748 1836 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni222E Encoding: 1902 8750 1837 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2242 Encoding: 1903 8770 1838 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2243 Encoding: 1904 8771 1839 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: congruent Encoding: 1905 8773 1840 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: approxequal Encoding: 1906 8776 1841 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: notequal Encoding: 1907 8800 1842 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: equivalence Encoding: 1908 8801 1843 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2262 Encoding: 1909 8802 1844 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2263 Encoding: 1910 8803 1845 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lessequal Encoding: 1911 8804 1846 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: greaterequal Encoding: 1912 8805 1847 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2266 Encoding: 1913 8806 1848 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2267 Encoding: 1914 8807 1849 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2268 Encoding: 1915 8808 1850 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2269 Encoding: 1916 8809 1851 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni226A Encoding: 1917 8810 1852 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni226B Encoding: 1918 8811 1853 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni227A Encoding: 1919 8826 1854 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni227B Encoding: 1920 8827 1855 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni227C Encoding: 1921 8828 1856 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni227D Encoding: 1922 8829 1857 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: propersubset Encoding: 1923 8834 1858 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: propersuperset Encoding: 1924 8835 1859 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: notsubset Encoding: 1925 8836 1860 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2285 Encoding: 1926 8837 1861 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: reflexsubset Encoding: 1927 8838 1862 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: reflexsuperset Encoding: 1928 8839 1863 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2288 Encoding: 1929 8840 1864 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2289 Encoding: 1930 8841 1865 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni228A Encoding: 1931 8842 1866 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni228B Encoding: 1932 8843 1867 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A2 Encoding: 1933 8866 1868 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A3 Encoding: 1934 8867 1869 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A4 Encoding: 1935 8868 1870 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: perpendicular Encoding: 1936 8869 1871 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22BF Encoding: 1937 8895 1872 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C0 Encoding: 1938 8896 1873 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C1 Encoding: 1939 8897 1874 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C2 Encoding: 1940 8898 1875 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C3 Encoding: 1941 8899 1876 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C8 Encoding: 1942 8904 1877 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C9 Encoding: 1943 8905 1878 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22CA Encoding: 1944 8906 1879 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22CB Encoding: 1945 8907 1880 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22CC Encoding: 1946 8908 1881 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22CD Encoding: 1947 8909 1882 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: house Encoding: 1948 8962 1883 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: revlogicalnot Encoding: 1949 8976 1884 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni231A Encoding: 1950 8986 1885 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni231B Encoding: 1951 8987 1886 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: integraltp Encoding: 1952 8992 1887 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: integralbt Encoding: 1953 8993 1888 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23BA Encoding: 1954 9146 1889 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23BB Encoding: 1955 9147 1890 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23BC Encoding: 1956 9148 1891 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23BD Encoding: 1957 9149 1892 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2408 Encoding: 1958 9224 1893 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2409 Encoding: 1959 9225 1894 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni240A Encoding: 1960 9226 1895 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni240B Encoding: 1961 9227 1896 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni240C Encoding: 1962 9228 1897 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni240D Encoding: 1963 9229 1898 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2420 Encoding: 1964 9248 1899 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2424 Encoding: 1965 9252 1900 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF100000 Encoding: 1966 9472 1901 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2501 Encoding: 1967 9473 1902 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF110000 Encoding: 1968 9474 1903 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2503 Encoding: 1969 9475 1904 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2508 Encoding: 1970 9480 1905 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2509 Encoding: 1971 9481 1906 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni250A Encoding: 1972 9482 1907 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni250B Encoding: 1973 9483 1908 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF010000 Encoding: 1974 9484 1909 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni250D Encoding: 1975 9485 1910 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni250E Encoding: 1976 9486 1911 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni250F Encoding: 1977 9487 1912 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF030000 Encoding: 1978 9488 1913 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2511 Encoding: 1979 9489 1914 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2512 Encoding: 1980 9490 1915 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2513 Encoding: 1981 9491 1916 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF020000 Encoding: 1982 9492 1917 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2515 Encoding: 1983 9493 1918 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2516 Encoding: 1984 9494 1919 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2517 Encoding: 1985 9495 1920 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF040000 Encoding: 1986 9496 1921 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2519 Encoding: 1987 9497 1922 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni251A Encoding: 1988 9498 1923 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni251B Encoding: 1989 9499 1924 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF080000 Encoding: 1990 9500 1925 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni251D Encoding: 1991 9501 1926 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni251E Encoding: 1992 9502 1927 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni251F Encoding: 1993 9503 1928 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2520 Encoding: 1994 9504 1929 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2521 Encoding: 1995 9505 1930 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2522 Encoding: 1996 9506 1931 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2523 Encoding: 1997 9507 1932 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF090000 Encoding: 1998 9508 1933 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2525 Encoding: 1999 9509 1934 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2526 Encoding: 2000 9510 1935 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2527 Encoding: 2001 9511 1936 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2528 Encoding: 2002 9512 1937 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2529 Encoding: 2003 9513 1938 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni252A Encoding: 2004 9514 1939 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni252B Encoding: 2005 9515 1940 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF060000 Encoding: 2006 9516 1941 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni252D Encoding: 2007 9517 1942 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni252E Encoding: 2008 9518 1943 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni252F Encoding: 2009 9519 1944 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2530 Encoding: 2010 9520 1945 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2531 Encoding: 2011 9521 1946 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2532 Encoding: 2012 9522 1947 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2533 Encoding: 2013 9523 1948 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF070000 Encoding: 2014 9524 1949 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2535 Encoding: 2015 9525 1950 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2536 Encoding: 2016 9526 1951 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2537 Encoding: 2017 9527 1952 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2538 Encoding: 2018 9528 1953 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2539 Encoding: 2019 9529 1954 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni253A Encoding: 2020 9530 1955 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni253B Encoding: 2021 9531 1956 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF050000 Encoding: 2022 9532 1957 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni253D Encoding: 2023 9533 1958 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni253E Encoding: 2024 9534 1959 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni253F Encoding: 2025 9535 1960 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2540 Encoding: 2026 9536 1961 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2541 Encoding: 2027 9537 1962 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2542 Encoding: 2028 9538 1963 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2543 Encoding: 2029 9539 1964 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2544 Encoding: 2030 9540 1965 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2545 Encoding: 2031 9541 1966 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2546 Encoding: 2032 9542 1967 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2547 Encoding: 2033 9543 1968 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2548 Encoding: 2034 9544 1969 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2549 Encoding: 2035 9545 1970 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni254A Encoding: 2036 9546 1971 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni254B Encoding: 2037 9547 1972 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF430000 Encoding: 2038 9552 1973 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF240000 Encoding: 2039 9553 1974 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF510000 Encoding: 2040 9554 1975 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF520000 Encoding: 2041 9555 1976 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF390000 Encoding: 2042 9556 1977 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF220000 Encoding: 2043 9557 1978 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF210000 Encoding: 2044 9558 1979 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF250000 Encoding: 2045 9559 1980 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF500000 Encoding: 2046 9560 1981 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF490000 Encoding: 2047 9561 1982 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF380000 Encoding: 2048 9562 1983 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF280000 Encoding: 2049 9563 1984 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF270000 Encoding: 2050 9564 1985 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF260000 Encoding: 2051 9565 1986 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF360000 Encoding: 2052 9566 1987 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF370000 Encoding: 2053 9567 1988 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF420000 Encoding: 2054 9568 1989 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF190000 Encoding: 2055 9569 1990 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF200000 Encoding: 2056 9570 1991 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF230000 Encoding: 2057 9571 1992 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF470000 Encoding: 2058 9572 1993 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF480000 Encoding: 2059 9573 1994 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF410000 Encoding: 2060 9574 1995 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF450000 Encoding: 2061 9575 1996 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF460000 Encoding: 2062 9576 1997 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF400000 Encoding: 2063 9577 1998 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF540000 Encoding: 2064 9578 1999 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF530000 Encoding: 2065 9579 2000 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: SF440000 Encoding: 2066 9580 2001 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni256D Encoding: 2067 9581 2002 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni256E Encoding: 2068 9582 2003 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni256F Encoding: 2069 9583 2004 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2570 Encoding: 2070 9584 2005 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2571 Encoding: 2071 9585 2006 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2572 Encoding: 2072 9586 2007 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2573 Encoding: 2073 9587 2008 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2574 Encoding: 2074 9588 2009 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2575 Encoding: 2075 9589 2010 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2576 Encoding: 2076 9590 2011 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2577 Encoding: 2077 9591 2012 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2578 Encoding: 2078 9592 2013 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2579 Encoding: 2079 9593 2014 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni257A Encoding: 2080 9594 2015 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni257B Encoding: 2081 9595 2016 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni257C Encoding: 2082 9596 2017 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni257D Encoding: 2083 9597 2018 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni257E Encoding: 2084 9598 2019 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni257F Encoding: 2085 9599 2020 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: upblock Encoding: 2086 9600 2021 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2581 Encoding: 2087 9601 2022 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2582 Encoding: 2088 9602 2023 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2583 Encoding: 2089 9603 2024 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dnblock Encoding: 2090 9604 2025 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2585 Encoding: 2091 9605 2026 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2586 Encoding: 2092 9606 2027 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2587 Encoding: 2093 9607 2028 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: block Encoding: 2094 9608 2029 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2589 Encoding: 2095 9609 2030 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni258A Encoding: 2096 9610 2031 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni258B Encoding: 2097 9611 2032 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lfblock Encoding: 2098 9612 2033 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni258D Encoding: 2099 9613 2034 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni258E Encoding: 2100 9614 2035 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni258F Encoding: 2101 9615 2036 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: rtblock Encoding: 2102 9616 2037 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: ltshade Encoding: 2103 9617 2038 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: shade Encoding: 2104 9618 2039 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dkshade Encoding: 2105 9619 2040 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2596 Encoding: 2106 9622 2041 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2597 Encoding: 2107 9623 2042 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2598 Encoding: 2108 9624 2043 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2599 Encoding: 2109 9625 2044 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni259A Encoding: 2110 9626 2045 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni259B Encoding: 2111 9627 2046 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni259C Encoding: 2112 9628 2047 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni259D Encoding: 2113 9629 2048 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni259E Encoding: 2114 9630 2049 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni259F Encoding: 2115 9631 2050 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: filledbox Encoding: 2116 9632 2051 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: H22073 Encoding: 2117 9633 2052 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A2 Encoding: 2118 9634 2053 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A3 Encoding: 2119 9635 2054 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: H18543 Encoding: 2120 9642 2055 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: H18551 Encoding: 2121 9643 2056 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: filledrect Encoding: 2122 9644 2057 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25AD Encoding: 2123 9645 2058 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25AE Encoding: 2124 9646 2059 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25AF Encoding: 2125 9647 2060 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B0 Encoding: 2126 9648 2061 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B1 Encoding: 2127 9649 2062 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: triagup Encoding: 2128 9650 2063 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B3 Encoding: 2129 9651 2064 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B4 Encoding: 2130 9652 2065 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B5 Encoding: 2131 9653 2066 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B6 Encoding: 2132 9654 2067 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B7 Encoding: 2133 9655 2068 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B8 Encoding: 2134 9656 2069 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25B9 Encoding: 2135 9657 2070 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: triagrt Encoding: 2136 9658 2071 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25BB Encoding: 2137 9659 2072 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: triagdn Encoding: 2138 9660 2073 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25BD Encoding: 2139 9661 2074 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25BE Encoding: 2140 9662 2075 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25BF Encoding: 2141 9663 2076 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C0 Encoding: 2142 9664 2077 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C1 Encoding: 2143 9665 2078 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C2 Encoding: 2144 9666 2079 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C3 Encoding: 2145 9667 2080 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: triaglf Encoding: 2146 9668 2081 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C5 Encoding: 2147 9669 2082 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: blackdiamond Encoding: 2148 9670 2083 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C7 Encoding: 2149 9671 2084 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C8 Encoding: 2150 9672 2085 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lozenge Encoding: 2151 9674 2086 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: circle Encoding: 2152 9675 2087 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25CC Encoding: 2153 9676 2088 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: H18533 Encoding: 2154 9679 2089 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D0 Encoding: 2155 9680 2090 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D1 Encoding: 2156 9681 2091 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D2 Encoding: 2157 9682 2092 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D3 Encoding: 2158 9683 2093 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D4 Encoding: 2159 9684 2094 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D5 Encoding: 2160 9685 2095 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D6 Encoding: 2161 9686 2096 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25D7 Encoding: 2162 9687 2097 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: invbullet Encoding: 2163 9688 2098 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: invcircle Encoding: 2164 9689 2099 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25DC Encoding: 2165 9692 2100 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25DD Encoding: 2166 9693 2101 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25DE Encoding: 2167 9694 2102 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25DF Encoding: 2168 9695 2103 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E0 Encoding: 2169 9696 2104 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E1 Encoding: 2170 9697 2105 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E2 Encoding: 2171 9698 2106 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E3 Encoding: 2172 9699 2107 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E4 Encoding: 2173 9700 2108 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E5 Encoding: 2174 9701 2109 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: openbullet Encoding: 2175 9702 2110 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E7 Encoding: 2176 9703 2111 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E8 Encoding: 2177 9704 2112 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25E9 Encoding: 2178 9705 2113 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25EA Encoding: 2179 9706 2114 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25EB Encoding: 2180 9707 2115 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25EC Encoding: 2181 9708 2116 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25ED Encoding: 2182 9709 2117 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25EE Encoding: 2183 9710 2118 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25EF Encoding: 2184 9711 2119 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F0 Encoding: 2185 9712 2120 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F1 Encoding: 2186 9713 2121 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F2 Encoding: 2187 9714 2122 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F3 Encoding: 2188 9715 2123 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F4 Encoding: 2189 9716 2124 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F5 Encoding: 2190 9717 2125 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F6 Encoding: 2191 9718 2126 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F7 Encoding: 2192 9719 2127 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F8 Encoding: 2193 9720 2128 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25F9 Encoding: 2194 9721 2129 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25FA Encoding: 2195 9722 2130 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25FB Encoding: 2196 9723 2131 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25FC Encoding: 2197 9724 2132 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25FD Encoding: 2198 9725 2133 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25FE Encoding: 2199 9726 2134 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25FF Encoding: 2200 9727 2135 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2609 Encoding: 2201 9737 2136 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni260A Encoding: 2202 9738 2137 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni260B Encoding: 2203 9739 2138 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2610 Encoding: 2204 9744 2139 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2611 Encoding: 2205 9745 2140 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2612 Encoding: 2206 9746 2141 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2639 Encoding: 2207 9785 2142 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: smileface Encoding: 2208 9786 2143 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: invsmileface Encoding: 2209 9787 2144 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: sun Encoding: 2210 9788 2145 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni263D Encoding: 2211 9789 2146 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni263E Encoding: 2212 9790 2147 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni263F Encoding: 2213 9791 2148 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: female Encoding: 2214 9792 2149 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2641 Encoding: 2215 9793 2150 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: male Encoding: 2216 9794 2151 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2643 Encoding: 2217 9795 2152 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2644 Encoding: 2218 9796 2153 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2645 Encoding: 2219 9797 2154 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2646 Encoding: 2220 9798 2155 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2647 Encoding: 2221 9799 2156 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2648 Encoding: 2222 9800 2157 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2649 Encoding: 2223 9801 2158 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni264A Encoding: 2224 9802 2159 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni264B Encoding: 2225 9803 2160 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni264C Encoding: 2226 9804 2161 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni264D Encoding: 2227 9805 2162 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni264E Encoding: 2228 9806 2163 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni264F Encoding: 2229 9807 2164 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2650 Encoding: 2230 9808 2165 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2651 Encoding: 2231 9809 2166 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2652 Encoding: 2232 9810 2167 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2653 Encoding: 2233 9811 2168 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2654 Encoding: 2234 9812 2169 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2655 Encoding: 2235 9813 2170 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2656 Encoding: 2236 9814 2171 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2657 Encoding: 2237 9815 2172 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2658 Encoding: 2238 9816 2173 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2659 Encoding: 2239 9817 2174 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni265A Encoding: 2240 9818 2175 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni265B Encoding: 2241 9819 2176 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni265C Encoding: 2242 9820 2177 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni265D Encoding: 2243 9821 2178 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni265E Encoding: 2244 9822 2179 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni265F Encoding: 2245 9823 2180 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: spade Encoding: 2246 9824 2181 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: club Encoding: 2247 9827 2182 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: heart Encoding: 2248 9829 2183 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: diamond Encoding: 2249 9830 2184 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2669 Encoding: 2250 9833 2185 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: musicalnote Encoding: 2251 9834 2186 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: musicalnotedbl Encoding: 2252 9835 2187 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni266C Encoding: 2253 9836 2188 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni266D Encoding: 2254 9837 2189 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni266E Encoding: 2255 9838 2190 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni266F Encoding: 2256 9839 2191 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2680 Encoding: 2257 9856 2192 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2681 Encoding: 2258 9857 2193 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2682 Encoding: 2259 9858 2194 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2683 Encoding: 2260 9859 2195 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2684 Encoding: 2261 9860 2196 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2685 Encoding: 2262 9861 2197 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni271D Encoding: 2263 10013 2198 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2780 Encoding: 2264 10112 2199 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2781 Encoding: 2265 10113 2200 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2782 Encoding: 2266 10114 2201 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2783 Encoding: 2267 10115 2202 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2784 Encoding: 2268 10116 2203 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2785 Encoding: 2269 10117 2204 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2786 Encoding: 2270 10118 2205 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2787 Encoding: 2271 10119 2206 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2788 Encoding: 2272 10120 2207 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2789 Encoding: 2273 10121 2208 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni278A Encoding: 2274 10122 2209 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni278B Encoding: 2275 10123 2210 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni278C Encoding: 2276 10124 2211 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni278D Encoding: 2277 10125 2212 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni278E Encoding: 2278 10126 2213 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni278F Encoding: 2279 10127 2214 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2790 Encoding: 2280 10128 2215 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2791 Encoding: 2281 10129 2216 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2792 Encoding: 2282 10130 2217 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2793 Encoding: 2283 10131 2218 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni27A1 Encoding: 2284 10145 2219 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29CE Encoding: 2285 10702 2220 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29CF Encoding: 2286 10703 2221 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D0 Encoding: 2287 10704 2222 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D1 Encoding: 2288 10705 2223 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D2 Encoding: 2289 10706 2224 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D3 Encoding: 2290 10707 2225 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D4 Encoding: 2291 10708 2226 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D5 Encoding: 2292 10709 2227 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D6 Encoding: 2293 10710 2228 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni29D7 Encoding: 2294 10711 2229 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A00 Encoding: 2295 10752 2230 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A01 Encoding: 2296 10753 2231 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A02 Encoding: 2297 10754 2232 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A03 Encoding: 2298 10755 2233 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A04 Encoding: 2299 10756 2234 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A05 Encoding: 2300 10757 2235 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A06 Encoding: 2301 10758 2236 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2A09 Encoding: 2302 10761 2237 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B00 Encoding: 2303 11008 2238 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B01 Encoding: 2304 11009 2239 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B02 Encoding: 2305 11010 2240 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B03 Encoding: 2306 11011 2241 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B04 Encoding: 2307 11012 2242 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B05 Encoding: 2308 11013 2243 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B06 Encoding: 2309 11014 2244 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B07 Encoding: 2310 11015 2245 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B08 Encoding: 2311 11016 2246 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B09 Encoding: 2312 11017 2247 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B0A Encoding: 2313 11018 2248 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B0B Encoding: 2314 11019 2249 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B0C Encoding: 2315 11020 2250 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B0D Encoding: 2316 11021 2251 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B12 Encoding: 2317 11026 2252 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B13 Encoding: 2318 11027 2253 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B14 Encoding: 2319 11028 2254 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B15 Encoding: 2320 11029 2255 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B16 Encoding: 2321 11030 2256 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B17 Encoding: 2322 11031 2257 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B18 Encoding: 2323 11032 2258 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B19 Encoding: 2324 11033 2259 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B2C Encoding: 2325 11052 2260 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B2D Encoding: 2326 11053 2261 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B2E Encoding: 2327 11054 2262 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B2F Encoding: 2328 11055 2263 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uniA730 Encoding: 2329 42800 2264 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uniA731 Encoding: 2330 42801 2265 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uniFE7C Encoding: 2331 65148 2266 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE7D Encoding: 2332 65149 2267 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE7E Encoding: 2333 65150 2268 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE7F Encoding: 2334 65151 2269 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE80 Encoding: 2335 65152 2270 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE81 Encoding: 2336 65153 2271 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE82 Encoding: 2337 65154 2272 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE83 Encoding: 2338 65155 2273 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE84 Encoding: 2339 65156 2274 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE85 Encoding: 2340 65157 2275 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE86 Encoding: 2341 65158 2276 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE87 Encoding: 2342 65159 2277 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE88 Encoding: 2343 65160 2278 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE89 Encoding: 2344 65161 2279 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE8A Encoding: 2345 65162 2280 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE8B Encoding: 2346 65163 2281 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE8C Encoding: 2347 65164 2282 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE8D Encoding: 2348 65165 2283 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE8E Encoding: 2349 65166 2284 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE8F Encoding: 2350 65167 2285 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE90 Encoding: 2351 65168 2286 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE91 Encoding: 2352 65169 2287 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE92 Encoding: 2353 65170 2288 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE93 Encoding: 2354 65171 2289 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE94 Encoding: 2355 65172 2290 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE95 Encoding: 2356 65173 2291 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE96 Encoding: 2357 65174 2292 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE97 Encoding: 2358 65175 2293 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE98 Encoding: 2359 65176 2294 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE99 Encoding: 2360 65177 2295 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE9A Encoding: 2361 65178 2296 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE9B Encoding: 2362 65179 2297 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE9C Encoding: 2363 65180 2298 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE9D Encoding: 2364 65181 2299 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE9E Encoding: 2365 65182 2300 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFE9F Encoding: 2366 65183 2301 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA0 Encoding: 2367 65184 2302 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA1 Encoding: 2368 65185 2303 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA2 Encoding: 2369 65186 2304 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA3 Encoding: 2370 65187 2305 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA4 Encoding: 2371 65188 2306 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA5 Encoding: 2372 65189 2307 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA6 Encoding: 2373 65190 2308 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA7 Encoding: 2374 65191 2309 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA8 Encoding: 2375 65192 2310 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEA9 Encoding: 2376 65193 2311 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEAA Encoding: 2377 65194 2312 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEAB Encoding: 2378 65195 2313 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEAC Encoding: 2379 65196 2314 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEAD Encoding: 2380 65197 2315 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEAE Encoding: 2381 65198 2316 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEAF Encoding: 2382 65199 2317 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB0 Encoding: 2383 65200 2318 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB1 Encoding: 2384 65201 2319 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB2 Encoding: 2385 65202 2320 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB3 Encoding: 2386 65203 2321 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB4 Encoding: 2387 65204 2322 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB5 Encoding: 2388 65205 2323 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB6 Encoding: 2389 65206 2324 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB7 Encoding: 2390 65207 2325 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB8 Encoding: 2391 65208 2326 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEB9 Encoding: 2392 65209 2327 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEBA Encoding: 2393 65210 2328 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEBB Encoding: 2394 65211 2329 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEBC Encoding: 2395 65212 2330 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEBD Encoding: 2396 65213 2331 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEBE Encoding: 2397 65214 2332 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEBF Encoding: 2398 65215 2333 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC0 Encoding: 2399 65216 2334 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC1 Encoding: 2400 65217 2335 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC2 Encoding: 2401 65218 2336 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC3 Encoding: 2402 65219 2337 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC4 Encoding: 2403 65220 2338 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC5 Encoding: 2404 65221 2339 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC6 Encoding: 2405 65222 2340 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC7 Encoding: 2406 65223 2341 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC8 Encoding: 2407 65224 2342 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEC9 Encoding: 2408 65225 2343 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFECA Encoding: 2409 65226 2344 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFECB Encoding: 2410 65227 2345 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFECC Encoding: 2411 65228 2346 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFECD Encoding: 2412 65229 2347 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFECE Encoding: 2413 65230 2348 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFECF Encoding: 2414 65231 2349 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED0 Encoding: 2415 65232 2350 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED1 Encoding: 2416 65233 2351 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED2 Encoding: 2417 65234 2352 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED3 Encoding: 2418 65235 2353 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED4 Encoding: 2419 65236 2354 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED5 Encoding: 2420 65237 2355 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED6 Encoding: 2421 65238 2356 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED7 Encoding: 2422 65239 2357 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED8 Encoding: 2423 65240 2358 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFED9 Encoding: 2424 65241 2359 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEDA Encoding: 2425 65242 2360 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEDB Encoding: 2426 65243 2361 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEDC Encoding: 2427 65244 2362 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEDD Encoding: 2428 65245 2363 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEDE Encoding: 2429 65246 2364 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEDF Encoding: 2430 65247 2365 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE0 Encoding: 2431 65248 2366 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE1 Encoding: 2432 65249 2367 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE2 Encoding: 2433 65250 2368 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE3 Encoding: 2434 65251 2369 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE4 Encoding: 2435 65252 2370 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE5 Encoding: 2436 65253 2371 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE6 Encoding: 2437 65254 2372 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE7 Encoding: 2438 65255 2373 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE8 Encoding: 2439 65256 2374 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEE9 Encoding: 2440 65257 2375 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEEA Encoding: 2441 65258 2376 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEEB Encoding: 2442 65259 2377 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEEC Encoding: 2443 65260 2378 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEED Encoding: 2444 65261 2379 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEEE Encoding: 2445 65262 2380 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEEF Encoding: 2446 65263 2381 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF0 Encoding: 2447 65264 2382 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF1 Encoding: 2448 65265 2383 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF2 Encoding: 2449 65266 2384 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF3 Encoding: 2450 65267 2385 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF4 Encoding: 2451 65268 2386 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF5 Encoding: 2452 65269 2387 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF6 Encoding: 2453 65270 2388 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF7 Encoding: 2454 65271 2389 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF8 Encoding: 2455 65272 2390 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEF9 Encoding: 2456 65273 2391 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEFA Encoding: 2457 65274 2392 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEFB Encoding: 2458 65275 2393 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFEFC Encoding: 2459 65276 2394 Width: 1000 VWidth: 0 LayerCount: 2 EndChar StartChar: uniFFFD Encoding: 2460 65533 2395 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni00A0 Encoding: 160 160 2396 Width: 500 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02AE Encoding: 2461 686 2397 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni02AF Encoding: 2462 687 2398 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni035F Encoding: 2463 863 2399 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0483 Encoding: 2464 1155 2400 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0484 Encoding: 2465 1156 2401 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0485 Encoding: 2466 1157 2402 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0486 Encoding: 2467 1158 2403 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0487 Encoding: 2468 1159 2404 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni202A Encoding: 2469 8234 2405 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni203B Encoding: 2470 8251 2406 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni204C Encoding: 2471 8268 2407 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni204D Encoding: 2472 8269 2408 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2055 Encoding: 2473 8277 2409 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2056 Encoding: 2474 8278 2410 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2058 Encoding: 2475 8280 2411 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2059 Encoding: 2476 8281 2412 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni205A Encoding: 2477 8282 2413 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni205B Encoding: 2478 8283 2414 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni205C Encoding: 2479 8284 2415 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni205D Encoding: 2480 8285 2416 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni205E Encoding: 2481 8286 2417 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20A0 Encoding: 2482 8352 2418 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: colonmonetary Encoding: 2483 8353 2419 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20A2 Encoding: 2484 8354 2420 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: franc Encoding: 2485 8355 2421 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: lira Encoding: 2486 8356 2422 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20A5 Encoding: 2487 8357 2423 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20A6 Encoding: 2488 8358 2424 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20A8 Encoding: 2489 8360 2425 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20A9 Encoding: 2490 8361 2426 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii57636 Encoding: 2491 8362 2427 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dong Encoding: 2492 8363 2428 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20AD Encoding: 2493 8365 2429 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20AF Encoding: 2494 8367 2430 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D0 Encoding: 2495 8400 2431 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D1 Encoding: 2496 8401 2432 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D2 Encoding: 2497 8402 2433 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D3 Encoding: 2498 8403 2434 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D4 Encoding: 2499 8404 2435 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D5 Encoding: 2500 8405 2436 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D6 Encoding: 2501 8406 2437 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D7 Encoding: 2502 8407 2438 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D8 Encoding: 2503 8408 2439 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20D9 Encoding: 2504 8409 2440 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20DA Encoding: 2505 8410 2441 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20DB Encoding: 2506 8411 2442 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20DC Encoding: 2507 8412 2443 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20E1 Encoding: 2508 8417 2444 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20E5 Encoding: 2509 8421 2445 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20E6 Encoding: 2510 8422 2446 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20EB Encoding: 2511 8427 2447 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20EC Encoding: 2512 8428 2448 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20ED Encoding: 2513 8429 2449 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20EE Encoding: 2514 8430 2450 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20EF Encoding: 2515 8431 2451 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: afii61248 Encoding: 2516 8453 2452 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2106 Encoding: 2517 8454 2453 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2107 Encoding: 2518 8455 2454 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2117 Encoding: 2519 8471 2455 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2120 Encoding: 2520 8480 2456 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni212A Encoding: 2521 8490 2457 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni212B Encoding: 2522 8491 2458 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2140 Encoding: 2523 8512 2459 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2145 Encoding: 2524 8517 2460 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2146 Encoding: 2525 8518 2461 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2147 Encoding: 2526 8519 2462 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2148 Encoding: 2527 8520 2463 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2149 Encoding: 2528 8521 2464 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2152 Encoding: 2529 8530 2465 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni219A Encoding: 2530 8602 2466 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni219B Encoding: 2531 8603 2467 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni219C Encoding: 2532 8604 2468 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni219D Encoding: 2533 8605 2469 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni219E Encoding: 2534 8606 2470 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni219F Encoding: 2535 8607 2471 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A0 Encoding: 2536 8608 2472 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21A1 Encoding: 2537 8609 2473 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21AB Encoding: 2538 8619 2474 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21AC Encoding: 2539 8620 2475 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21B8 Encoding: 2540 8632 2476 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21DA Encoding: 2541 8666 2477 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21DB Encoding: 2542 8667 2478 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21EA Encoding: 2543 8682 2479 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21EB Encoding: 2544 8683 2480 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F0 Encoding: 2545 8688 2481 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F1 Encoding: 2546 8689 2482 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F2 Encoding: 2547 8690 2483 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F7 Encoding: 2548 8695 2484 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F8 Encoding: 2549 8696 2485 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F9 Encoding: 2550 8697 2486 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21FA Encoding: 2551 8698 2487 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21FB Encoding: 2552 8699 2488 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21FD Encoding: 2553 8701 2489 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21FE Encoding: 2554 8702 2490 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21FF Encoding: 2555 8703 2491 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni220E Encoding: 2556 8718 2492 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2210 Encoding: 2557 8720 2493 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2215 Encoding: 2558 8725 2494 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2216 Encoding: 2559 8726 2495 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: asteriskmath Encoding: 2560 8727 2496 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2218 Encoding: 2561 8728 2497 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni222D Encoding: 2562 8749 2498 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni222F Encoding: 2563 8751 2499 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: therefore Encoding: 2564 8756 2500 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2235 Encoding: 2565 8757 2501 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2236 Encoding: 2566 8758 2502 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2237 Encoding: 2567 8759 2503 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2238 Encoding: 2568 8760 2504 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2239 Encoding: 2569 8761 2505 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni223A Encoding: 2570 8762 2506 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni223B Encoding: 2571 8763 2507 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: similar Encoding: 2572 8764 2508 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni223D Encoding: 2573 8765 2509 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni223E Encoding: 2574 8766 2510 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni223F Encoding: 2575 8767 2511 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2240 Encoding: 2576 8768 2512 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2241 Encoding: 2577 8769 2513 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2244 Encoding: 2578 8772 2514 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2249 Encoding: 2579 8777 2515 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni224A Encoding: 2580 8778 2516 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni224B Encoding: 2581 8779 2517 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni224C Encoding: 2582 8780 2518 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2276 Encoding: 2583 8822 2519 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2277 Encoding: 2584 8823 2520 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni228F Encoding: 2585 8847 2521 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2290 Encoding: 2586 8848 2522 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2291 Encoding: 2587 8849 2523 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2292 Encoding: 2588 8850 2524 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2293 Encoding: 2589 8851 2525 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2294 Encoding: 2590 8852 2526 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: circleplus Encoding: 2591 8853 2527 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2296 Encoding: 2592 8854 2528 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: circlemultiply Encoding: 2593 8855 2529 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2298 Encoding: 2594 8856 2530 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2299 Encoding: 2595 8857 2531 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni229A Encoding: 2596 8858 2532 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni229C Encoding: 2597 8860 2533 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni229D Encoding: 2598 8861 2534 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni229E Encoding: 2599 8862 2535 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni229F Encoding: 2600 8863 2536 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A0 Encoding: 2601 8864 2537 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A1 Encoding: 2602 8865 2538 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A6 Encoding: 2603 8870 2539 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A7 Encoding: 2604 8871 2540 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A8 Encoding: 2605 8872 2541 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22A9 Encoding: 2606 8873 2542 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22AA Encoding: 2607 8874 2543 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22AB Encoding: 2608 8875 2544 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22AC Encoding: 2609 8876 2545 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22AD Encoding: 2610 8877 2546 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B2 Encoding: 2611 8882 2547 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B3 Encoding: 2612 8883 2548 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B4 Encoding: 2613 8884 2549 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B5 Encoding: 2614 8885 2550 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B6 Encoding: 2615 8886 2551 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B7 Encoding: 2616 8887 2552 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B8 Encoding: 2617 8888 2553 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22BB Encoding: 2618 8891 2554 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22BC Encoding: 2619 8892 2555 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22BD Encoding: 2620 8893 2556 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C4 Encoding: 2621 8900 2557 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: dotmath Encoding: 2622 8901 2558 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C6 Encoding: 2623 8902 2559 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22C7 Encoding: 2624 8903 2560 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22CE Encoding: 2625 8910 2561 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22CF Encoding: 2626 8911 2562 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni231C Encoding: 2627 8988 2563 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni231D Encoding: 2628 8989 2564 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni231E Encoding: 2629 8990 2565 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni231F Encoding: 2630 8991 2566 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni239B Encoding: 2631 9115 2567 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni239C Encoding: 2632 9116 2568 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni239D Encoding: 2633 9117 2569 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni239E Encoding: 2634 9118 2570 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni239F Encoding: 2635 9119 2571 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A0 Encoding: 2636 9120 2572 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A1 Encoding: 2637 9121 2573 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A2 Encoding: 2638 9122 2574 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A3 Encoding: 2639 9123 2575 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A4 Encoding: 2640 9124 2576 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A5 Encoding: 2641 9125 2577 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A6 Encoding: 2642 9126 2578 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A7 Encoding: 2643 9127 2579 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A8 Encoding: 2644 9128 2580 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23A9 Encoding: 2645 9129 2581 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23AA Encoding: 2646 9130 2582 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23AB Encoding: 2647 9131 2583 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23AC Encoding: 2648 9132 2584 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23AD Encoding: 2649 9133 2585 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni23AE Encoding: 2650 9134 2586 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni240E Encoding: 2651 9230 2587 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni240F Encoding: 2652 9231 2588 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2504 Encoding: 2653 9476 2589 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2505 Encoding: 2654 9477 2590 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2506 Encoding: 2655 9478 2591 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2507 Encoding: 2656 9479 2592 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2594 Encoding: 2657 9620 2593 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2595 Encoding: 2658 9621 2594 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25CD Encoding: 2659 9677 2595 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25CE Encoding: 2660 9678 2596 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2605 Encoding: 2661 9733 2597 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2606 Encoding: 2662 9734 2598 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni262A Encoding: 2663 9770 2599 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2661 Encoding: 2664 9825 2600 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2662 Encoding: 2665 9826 2601 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2664 Encoding: 2666 9828 2602 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2667 Encoding: 2667 9831 2603 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2690 Encoding: 2668 9872 2604 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2691 Encoding: 2669 9873 2605 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2776 Encoding: 2670 10102 2606 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2777 Encoding: 2671 10103 2607 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2778 Encoding: 2672 10104 2608 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2779 Encoding: 2673 10105 2609 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni277A Encoding: 2674 10106 2610 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni277B Encoding: 2675 10107 2611 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni277C Encoding: 2676 10108 2612 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni277D Encoding: 2677 10109 2613 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni277E Encoding: 2678 10110 2614 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni277F Encoding: 2679 10111 2615 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2794 Encoding: 2680 10132 2616 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2795 Encoding: 2681 10133 2617 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2796 Encoding: 2682 10134 2618 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2797 Encoding: 2683 10135 2619 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2798 Encoding: 2684 10136 2620 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2799 Encoding: 2685 10137 2621 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni279A Encoding: 2686 10138 2622 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni279B Encoding: 2687 10139 2623 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni279C Encoding: 2688 10140 2624 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni279D Encoding: 2689 10141 2625 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni279E Encoding: 2690 10142 2626 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni279F Encoding: 2691 10143 2627 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni27A0 Encoding: 2692 10144 2628 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B1A Encoding: 2693 11034 2629 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B1B Encoding: 2694 11035 2630 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2B1C Encoding: 2695 11036 2631 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2C60 Encoding: 2696 11360 2632 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2C61 Encoding: 2697 11361 2633 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2C62 Encoding: 2698 11362 2634 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2C63 Encoding: 2699 11363 2635 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2C64 Encoding: 2700 11364 2636 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni037F Encoding: 2701 895 2637 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0528 Encoding: 2702 1320 2638 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0529 Encoding: 2703 1321 2639 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni052A Encoding: 2704 1322 2640 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni052B Encoding: 2705 1323 2641 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni052C Encoding: 2706 1324 2642 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni052D Encoding: 2707 1325 2643 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni052E Encoding: 2708 1326 2644 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni052F Encoding: 2709 1327 2645 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0FD7 Encoding: 2710 4055 2646 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni0FD8 Encoding: 2711 4056 2647 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DC4 Encoding: 2712 7620 2648 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DC5 Encoding: 2713 7621 2649 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DC6 Encoding: 2714 7622 2650 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DC7 Encoding: 2715 7623 2651 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DC8 Encoding: 2716 7624 2652 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DC9 Encoding: 2717 7625 2653 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DCA Encoding: 2718 7626 2654 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DCB Encoding: 2719 7627 2655 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DCC Encoding: 2720 7628 2656 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DCD Encoding: 2721 7629 2657 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DCE Encoding: 2722 7630 2658 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni1DCF Encoding: 2723 7631 2659 Width: 0 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2000 Encoding: 2724 8192 2660 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2001 Encoding: 2725 8193 2661 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2002 Encoding: 2726 8194 2662 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2003 Encoding: 2727 8195 2663 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2004 Encoding: 2728 8196 2664 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2005 Encoding: 2729 8197 2665 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2006 Encoding: 2730 8198 2666 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2007 Encoding: 2731 8199 2667 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2008 Encoding: 2732 8200 2668 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2009 Encoding: 2733 8201 2669 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni200A Encoding: 2734 8202 2670 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni203F Encoding: 2735 8255 2671 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2040 Encoding: 2736 8256 2672 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni204A Encoding: 2737 8266 2673 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2050 Encoding: 2738 8272 2674 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2052 Encoding: 2739 8274 2675 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2053 Encoding: 2740 8275 2676 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2054 Encoding: 2741 8276 2677 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni205F Encoding: 2742 8287 2678 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2060 Encoding: 2743 8288 2679 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2061 Encoding: 2744 8289 2680 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2062 Encoding: 2745 8290 2681 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2063 Encoding: 2746 8291 2682 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2064 Encoding: 2747 8292 2683 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2065 Encoding: 2748 8293 2684 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2066 Encoding: 2749 8294 2685 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2067 Encoding: 2750 8295 2686 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2068 Encoding: 2751 8296 2687 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2069 Encoding: 2752 8297 2688 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni206A Encoding: 2753 8298 2689 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni206B Encoding: 2754 8299 2690 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni206C Encoding: 2755 8300 2691 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni206D Encoding: 2756 8301 2692 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni206E Encoding: 2757 8302 2693 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni206F Encoding: 2758 8303 2694 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2072 Encoding: 2759 8306 2695 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2073 Encoding: 2760 8307 2696 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni20BD Encoding: 2761 8381 2697 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2160 Encoding: 2762 8544 2698 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2161 Encoding: 2763 8545 2699 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2162 Encoding: 2764 8546 2700 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2163 Encoding: 2765 8547 2701 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2164 Encoding: 2766 8548 2702 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2165 Encoding: 2767 8549 2703 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2166 Encoding: 2768 8550 2704 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2167 Encoding: 2769 8551 2705 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2168 Encoding: 2770 8552 2706 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2169 Encoding: 2771 8553 2707 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni216A Encoding: 2772 8554 2708 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni216B Encoding: 2773 8555 2709 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni216C Encoding: 2774 8556 2710 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni216D Encoding: 2775 8557 2711 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni216E Encoding: 2776 8558 2712 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni216F Encoding: 2777 8559 2713 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2170 Encoding: 2778 8560 2714 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2171 Encoding: 2779 8561 2715 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2172 Encoding: 2780 8562 2716 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2173 Encoding: 2781 8563 2717 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2174 Encoding: 2782 8564 2718 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2175 Encoding: 2783 8565 2719 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2176 Encoding: 2784 8566 2720 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2177 Encoding: 2785 8567 2721 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2178 Encoding: 2786 8568 2722 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2179 Encoding: 2787 8569 2723 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni217A Encoding: 2788 8570 2724 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni217B Encoding: 2789 8571 2725 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni217C Encoding: 2790 8572 2726 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni217D Encoding: 2791 8573 2727 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni217E Encoding: 2792 8574 2728 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni217F Encoding: 2793 8575 2729 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2180 Encoding: 2794 8576 2730 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2181 Encoding: 2795 8577 2731 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2182 Encoding: 2796 8578 2732 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2183 Encoding: 2797 8579 2733 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2184 Encoding: 2798 8580 2734 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2185 Encoding: 2799 8581 2735 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21AF Encoding: 2800 8623 2736 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21CD Encoding: 2801 8653 2737 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21CE Encoding: 2802 8654 2738 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21CF Encoding: 2803 8655 2739 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21DC Encoding: 2804 8668 2740 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21DD Encoding: 2805 8669 2741 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21DE Encoding: 2806 8670 2742 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21DF Encoding: 2807 8671 2743 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21EC Encoding: 2808 8684 2744 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21EE Encoding: 2809 8686 2745 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21EF Encoding: 2810 8687 2746 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni21F4 Encoding: 2811 8692 2747 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2221 Encoding: 2812 8737 2748 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2222 Encoding: 2813 8738 2749 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2230 Encoding: 2814 8752 2750 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2246 Encoding: 2815 8774 2751 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2247 Encoding: 2816 8775 2752 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni226E Encoding: 2817 8814 2753 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni226F Encoding: 2818 8815 2754 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2270 Encoding: 2819 8816 2755 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2271 Encoding: 2820 8817 2756 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2280 Encoding: 2821 8832 2757 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22AE Encoding: 2822 8878 2758 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22AF Encoding: 2823 8879 2759 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B0 Encoding: 2824 8880 2760 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22B1 Encoding: 2825 8881 2761 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22BE Encoding: 2826 8894 2762 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D0 Encoding: 2827 8912 2763 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D1 Encoding: 2828 8913 2764 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D2 Encoding: 2829 8914 2765 Width: 1000 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D3 Encoding: 2830 8915 2766 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D6 Encoding: 2831 8918 2767 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D7 Encoding: 2832 8919 2768 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D8 Encoding: 2833 8920 2769 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22D9 Encoding: 2834 8921 2770 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22DA Encoding: 2835 8922 2771 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22DB Encoding: 2836 8923 2772 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22DC Encoding: 2837 8924 2773 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22DD Encoding: 2838 8925 2774 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22DE Encoding: 2839 8926 2775 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni22DF Encoding: 2840 8927 2776 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni254C Encoding: 2841 9548 2777 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni254D Encoding: 2842 9549 2778 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni254E Encoding: 2843 9550 2779 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni254F Encoding: 2844 9551 2780 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A4 Encoding: 2845 9636 2781 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A5 Encoding: 2846 9637 2782 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A6 Encoding: 2847 9638 2783 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A7 Encoding: 2848 9639 2784 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A8 Encoding: 2849 9640 2785 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25A9 Encoding: 2850 9641 2786 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni25C9 Encoding: 2851 9673 2787 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2600 Encoding: 2852 9728 2788 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2602 Encoding: 2853 9730 2789 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni260C Encoding: 2854 9740 2790 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni260D Encoding: 2855 9741 2791 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni260E Encoding: 2856 9742 2792 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni260F Encoding: 2857 9743 2793 Width: 538 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni262F Encoding: 2858 9775 2794 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2630 Encoding: 2859 9776 2795 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2631 Encoding: 2860 9777 2796 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2632 Encoding: 2861 9778 2797 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2633 Encoding: 2862 9779 2798 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2634 Encoding: 2863 9780 2799 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2635 Encoding: 2864 9781 2800 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2636 Encoding: 2865 9782 2801 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar StartChar: uni2637 Encoding: 2866 9783 2802 Width: 562 VWidth: 0 Flags: W LayerCount: 2 EndChar EndChars BitmapFont: 12 2804 10 2 1 xos4 BDFStartProperties: 25 FONT 1 "-xos4-Gambas-Bold-R-Normal--12-120-72-72-C-60-ISO10646-1" SIZE 1 "12 72 72" FONTBOUNDINGBOX 1 "6 12 0 -2" COMMENT 0 "Generated by fontforge, http://fontforge.sourceforge.net" COMMENT 0 "ter-u12b" FAMILY_NAME 16 "Gambas" FOUNDRY 16 "xos4" SETWIDTH_NAME 16 "Normal" ADD_STYLE_NAME 16 "" COPYRIGHT 16 "Copyright (c) Benoit Minisini" NOTICE 16 "Licensed under the SIL Open Font License, Version 1.1" WEIGHT_NAME 16 "Bold" SLANT 16 "R" PIXEL_SIZE 18 12 POINT_SIZE 18 120 RESOLUTION_X 19 72 RESOLUTION_Y 19 72 SPACING 16 "C" AVERAGE_WIDTH 18 60 CHARSET_REGISTRY 16 "ISO10646" CHARSET_ENCODING 16 "1" MIN_SPACE 18 6 FONT_ASCENT 18 10 FONT_DESCENT 18 2 DEFAULT_CHAR 19 65533 BDFEndProperties BDFChar: 0 0 6 0 4 0 7 fSBN`L]E7` BDFChar: 1 32 6 5 5 -2 -2 z BDFChar: 2 33 6 2 3 0 7 ^qdb$^];0c BDFChar: 3 34 6 0 4 6 8 f\"gV BDFChar: 4 35 6 0 4 0 7 ;#'f^;#'f^ BDFChar: 5 36 6 0 4 -1 7 +F(];E#9G]+92BA BDFChar: 6 37 6 0 5 0 8 @'FGa0OWNa(]XO9 BDFChar: 7 38 6 0 5 0 7 0R.grI+[)! BDFChar: 8 39 6 2 3 6 8 ^qd_c BDFChar: 9 40 6 1 4 -1 8 0OV]3^qdb$?n_Q\ BDFChar: 10 41 6 1 4 -1 8 ^gJiM0JG17@))aB BDFChar: 11 42 6 0 4 1 5 fPpV)fDkmO BDFChar: 12 43 6 0 5 1 5 0JNDY0E;(Q BDFChar: 13 44 6 1 3 -2 1 ?smBX BDFChar: 14 45 6 0 4 3 3 p](9o BDFChar: 15 46 6 2 3 0 1 ^q]pM BDFChar: 16 47 6 0 4 0 7 (`4q\?spdc BDFChar: 17 48 6 0 4 0 7 E7ihc0JF=\ BDFChar: 62 93 6 0 3 -1 8 n1ZOM0JG170^o&B BDFChar: 63 94 6 0 4 6 8 +E5s5 BDFChar: 64 95 6 0 4 0 0 p](9o BDFChar: 65 96 6 1 3 8 9 ^gI-B BDFChar: 66 97 6 0 4 0 5 E#c?oS,d BDFChar: 93 124 6 2 3 -1 8 ^qdb$^qdb$^q]pM BDFChar: 94 125 6 0 4 -1 8 i%Qi=(`4q\0]2p2 BDFChar: 95 126 6 0 4 6 8 B_\e3 BDFChar: 96 161 6 2 3 0 7 ^q]rc^qdb$ BDFChar: 97 162 6 0 4 -1 6 +F(];^qb1; BDFChar: 98 163 6 0 4 0 7 3+-.`?smC; BDFChar: 99 164 6 0 4 1 6 fPoKqE7b-j BDFChar: 100 165 6 0 4 0 7 f[t-cE$0*B BDFChar: 101 166 6 2 3 -1 8 ^qdb$!!'gM^q]pM BDFChar: 102 167 6 0 4 0 8 E7eRffQ]+&Du]k< BDFChar: 103 168 6 0 4 8 9 f[p0( BDFChar: 104 169 6 0 5 0 7 Gg*P-]X5n- BDFChar: 105 170 6 0 4 3 9 E#: BDFChar: 124 189 6 0 5 -2 9 @,PF'BFl;2N#462 BDFChar: 125 190 6 0 5 -2 9 i%X(GkR\k1S2<>: BDFChar: 126 191 6 0 4 0 7 0JEJ\@)0R& BDFChar: 127 192 6 0 4 0 9 5Tk$uf\#uOf[p0( BDFChar: 128 193 6 0 4 0 9 &0PrEf\#uOf[p0( BDFChar: 129 194 6 0 4 0 9 +Aa2"f\#uOf[p0( BDFChar: 130 195 6 0 4 0 9 BWqJUf\#uOf[p0( BDFChar: 131 196 6 0 4 0 9 :]PIef\#uOf[p0( BDFChar: 132 197 6 0 4 0 9 +Aa2"f\#uOf[p0( BDFChar: 133 198 6 0 5 0 7 I+[*Lf\"j3 BDFChar: 134 199 6 0 4 -2 7 Geh,1^qda1+M[sW BDFChar: 135 200 6 0 4 0 9 5Toj;_!o.T_"[m0 BDFChar: 136 201 6 0 4 0 9 &0Ub`_!o.T_"[m0 BDFChar: 137 202 6 0 4 0 9 +AhjK_!o.T_"[m0 BDFChar: 138 203 6 0 4 0 9 :]U:+_!o.T_"[m0 BDFChar: 139 204 6 1 3 0 9 J3X*B?smAM?sis7 BDFChar: 140 205 6 2 3 0 9 5_&jM^qdb$^q]pM BDFChar: 141 206 6 1 3 0 9 5bJ*b?smAM?sis7 BDFChar: 142 207 6 1 3 0 9 TE&A-?smAM?sis7 BDFChar: 143 208 6 0 4 0 7 i6^-Of\"R/ BDFChar: 144 209 6 0 4 0 9 8>qUMR+V3/fZ4$m BDFChar: 145 210 6 0 4 0 9 5Tk$uf\"j/fPgfj BDFChar: 146 211 6 0 4 0 9 &0PrEf\"j/fPgfj BDFChar: 147 212 6 0 4 0 9 +Ad%0f\"j/fPgfj BDFChar: 148 213 6 0 4 0 9 BWqJUf\"j/fPgfj BDFChar: 149 214 6 0 4 0 9 :]PIef\"j/fPgfj BDFChar: 150 215 6 0 4 1 5 fPhsPfDkmO BDFChar: 151 216 6 0 4 -1 8 #]SGKq"WLoE.@og BDFChar: 152 217 6 0 4 0 9 5Tn_3f\"j/fPgfj BDFChar: 153 218 6 0 4 0 9 &0TWXf\"j/fPgfj BDFChar: 154 219 6 0 4 0 9 +Ag_Cf\"j/fPgfj BDFChar: 155 220 6 0 4 0 9 :]T/#f\"j/fPgfj BDFChar: 156 221 6 0 4 0 9 &0TWXE,ZpB+qUME#qUMnCZCGf[p0( BDFChar: 177 242 6 0 4 0 8 5Tg&Gf\"j/Du]k< BDFChar: 178 243 6 0 4 0 8 &0Lslf\"j/Du]k< BDFChar: 179 244 6 0 4 0 8 +A`&Wf\"j/Du]k< BDFChar: 180 245 6 0 4 0 9 8>qUME7igqfPgfj BDFChar: 181 246 6 0 4 0 7 :]PIef\"hq BDFChar: 182 247 6 0 5 0 6 0JEM)!&-), BDFChar: 183 248 6 0 4 -1 6 #]SGkpt0P9 BDFChar: 184 249 6 0 4 0 8 5Tg'Zf\"j/GQ7^D BDFChar: 185 250 6 0 4 0 8 &0Lu*f\"j/GQ7^D BDFChar: 186 251 6 0 4 0 8 +A`'jf\"j/GQ7^D BDFChar: 187 252 6 0 4 0 7 :]T/#f\"i$ BDFChar: 188 253 6 0 4 -2 8 &0Lu*f\"j/GSkB" BDFChar: 189 254 6 0 4 -2 7 ^qfHlf\"jG^q]pM BDFChar: 190 255 6 0 4 -2 7 :]T/#f\"i$(iTHT BDFChar: 191 256 6 0 4 0 9 Duak0f\#uOf[p0( BDFChar: 192 257 6 0 4 0 7 DuahoGhCYn BDFChar: 193 258 6 0 4 0 9 LiqV(0JG170JEJ, BDFChar: 232 297 6 0 4 0 9 8>qUM0JG170JEJ, BDFChar: 233 298 6 1 3 0 9 huI.m?smAM?sis7 BDFChar: 234 299 6 1 3 0 7 huI.m?smAM BDFChar: 235 300 6 0 4 0 9 Li<>J0JG170JEJ, BDFChar: 236 301 6 0 4 0 8 Li<>J0JG170E;(Q BDFChar: 237 302 6 2 4 -2 7 ^qdb$^qdb$J7&?W BDFChar: 238 303 6 2 4 -2 8 ^q]rc^qdb$^joem BDFChar: 239 304 6 2 3 0 9 J,mC#^qdb$^q]pM BDFChar: 240 305 6 2 3 0 5 ^qdb$^q]pM BDFChar: 241 306 6 0 5 0 7 bfn;Tbfn;` BDFChar: 242 307 6 0 4 -2 8 f[p2Vf\"j/fGJQ- BDFChar: 243 308 6 0 4 0 9 &1@Mq(`4),)"7M* BDFChar: 244 309 6 0 3 -2 8 +A`%l0JG170JMDb BDFChar: 245 310 6 0 4 -2 7 f\#]Oi:,CO+M[sW BDFChar: 246 311 6 0 4 -2 7 ^qeUli8F+W+M[sW BDFChar: 247 312 6 0 4 0 5 f^RhWnCR^@ BDFChar: 248 313 6 0 4 0 9 +@*`X^qdb$_"[m0 BDFChar: 249 314 6 2 4 0 9 5_&jM^qdb$^gI-B BDFChar: 250 315 6 0 4 -2 7 ^qdb$^qdb\+M[sW BDFChar: 251 316 6 1 4 -2 7 ?smAM?sm@r+M[sW BDFChar: 252 317 6 0 4 0 9 :a!Qh^qdb$_"[m0 BDFChar: 253 318 6 1 4 0 9 TKiKb?smAM?n_Q\ BDFChar: 254 319 6 0 4 0 7 ^qdbJ< BDFChar: 290 355 6 1 4 -2 7 ^qfHT^qda)+M[sW BDFChar: 291 356 6 0 5 0 9 :a#Zi0JG170JEJ, BDFChar: 292 357 6 1 4 0 9 TKp<.nA)iT^i08R BDFChar: 293 358 6 0 5 0 7 r%KgL0JG17 BDFChar: 294 359 6 0 4 0 7 ?sn4en6fW` BDFChar: 295 360 6 0 4 0 9 BWqKhf\"j/fPgfj BDFChar: 296 361 6 0 4 0 9 8>qUMf\"j/fQ[Ar BDFChar: 297 362 6 0 4 0 9 DuePCf\"j/fPgfj BDFChar: 298 363 6 0 4 0 7 DuePCf\"i$ BDFChar: 299 364 6 0 4 0 9 Li<@Hf\"j/fPgfj BDFChar: 300 365 6 0 4 0 8 Li<@Hf\"j/GQ7^D BDFChar: 301 366 6 0 4 0 9 +Aa35f\"j/fPgfj BDFChar: 302 367 6 0 4 0 9 +Aa0\f\"j/fQ[Ar BDFChar: 303 368 6 0 4 0 9 -rARKf\"j/fPgfj BDFChar: 304 369 6 0 4 0 8 -r9orf\"j/GQ7^D BDFChar: 305 370 6 0 4 -2 7 f\"j/f\"hq+;b(Y BDFChar: 306 371 6 0 5 -2 5 f\"j/fQ[r9 BDFChar: 307 372 6 0 4 0 9 +Ag_Cf\#uofSBM- BDFChar: 308 373 6 0 4 0 8 +A`'jf_G7::]LIq BDFChar: 309 374 6 0 5 0 9 +Ag;+G^(nr0JEJ, BDFChar: 310 375 6 0 4 -2 8 +A`'jf\"j/GSkB" BDFChar: 311 376 6 0 5 0 9 :]S_`G^(nr0JEJ, BDFChar: 312 377 6 0 4 0 9 &0U`b(bf@5_"[m0 BDFChar: 313 378 6 0 4 0 8 &0LuJ(bf@5p](9o BDFChar: 314 379 6 0 4 0 9 +9;0R(bf@5_"[m0 BDFChar: 315 380 6 0 4 0 7 +9;0R0OV]k BDFChar: 316 381 6 0 4 0 9 :a#NM(bf@5_"[m0 BDFChar: 317 382 6 0 4 0 8 :`oc5(bf@5p](9o BDFChar: 318 383 6 1 4 0 7 E599)^qdb$ BDFChar: 319 384 6 0 4 0 7 ^u3#tf\"jG BDFChar: 320 385 6 0 5 0 8 ^j'[3G\h24GQ7^D BDFChar: 321 386 6 0 4 0 8 nA)j/f\"j/n,NFg BDFChar: 322 387 6 0 4 0 7 nA+PGf\"jG BDFChar: 323 388 6 0 5 0 7 @,TsfCi!p4 BDFChar: 324 389 6 0 5 0 7 @,UfrCi!p4 BDFChar: 325 390 6 0 4 0 7 n/)uZ(`4+Z BDFChar: 326 391 6 0 5 0 9 ":07f^qdb$^j#hZ BDFChar: 327 392 6 0 5 0 7 ":07f^qda1 BDFChar: 328 393 6 0 5 0 7 G\h3_Ci!p4 BDFChar: 329 394 6 0 5 0 8 ^j'[3Ci!p(GQ7^D BDFChar: 330 395 6 0 4 0 8 GSh9Bf\"j/GQ7^D BDFChar: 331 396 6 0 4 0 7 GSk\Xf\"i$ BDFChar: 332 397 6 0 4 0 7 E7igqE%i,J BDFChar: 333 398 6 0 4 0 7 p_Xim(`4+b BDFChar: 334 399 6 0 4 0 7 n/)uZpt45< BDFChar: 335 400 6 0 4 0 7 Geh+6^qda1 BDFChar: 336 401 6 0 4 -1 7 G[Oou?smAM^]4?7 BDFChar: 337 402 6 1 5 -1 7 3+-.`?smAM^]4?7 BDFChar: 338 403 6 0 5 0 8 "F._t^t@;lDu]k< BDFChar: 339 404 6 0 4 0 7 f[t-cE7if^ BDFChar: 340 405 6 0 5 0 7 ^qen#eC<9p BDFChar: 341 406 6 1 4 0 7 ^qdb$^qda) BDFChar: 342 407 6 1 4 0 7 ?smAMn6fX3 BDFChar: 343 408 6 0 5 0 8 %+s5%i8F+WfDkmO BDFChar: 344 409 6 0 4 0 8 @)0S1nDN6ofDkmO BDFChar: 345 410 6 1 4 0 7 ?smAMn6fWX BDFChar: 346 411 6 0 5 0 7 @!M/pG^.HV BDFChar: 347 412 6 0 4 0 7 W2TLdq"XW/ BDFChar: 348 413 6 0 5 -1 7 9Pf*(I!fa@^]4?7 BDFChar: 349 414 6 0 4 -2 5 nCZCGf[q#X BDFChar: 350 415 6 0 4 0 7 E7ih:Y0JG17 BDFChar: 364 429 6 1 4 0 8 @)0SI^qdb$Du]k< BDFChar: 365 430 6 0 5 -1 7 r%KfY0JG17(]XO9 BDFChar: 366 431 6 0 5 0 8 %+s4bf\"j/Du]k< BDFChar: 367 432 6 0 5 0 6 %+s4bf[tEK BDFChar: 368 433 6 0 4 0 7 fML5Qf\"hq BDFChar: 369 434 6 0 5 0 8 %+s4bf_BE)+92BA BDFChar: 370 435 6 0 5 0 9 ":35qG^(nr0JEJ, BDFChar: 371 436 6 0 5 -2 7 ":3Z4f\"i$(iTHT BDFChar: 372 437 6 0 4 0 7 p_XkC@)0SQ BDFChar: 373 438 6 0 4 0 5 p_`d6_"[m0 BDFChar: 374 439 6 0 4 0 7 p_Y]((`4+Z BDFChar: 375 440 6 0 4 0 7 pqU9V^qda1 BDFChar: 376 441 6 0 4 -2 5 pqU9V^qda1 BDFChar: 377 442 6 0 4 -2 5 p_[re(i[90 BDFChar: 378 443 6 0 4 0 7 n/)urpgCo4 BDFChar: 379 444 6 0 4 0 7 pqX]7(`4+Z BDFChar: 380 445 6 0 4 -2 5 pqX]7(`4+Z BDFChar: 381 446 6 0 4 0 7 @.7QC(`4+Z BDFChar: 382 447 6 0 4 -2 5 nCZCGd,;^T BDFChar: 383 448 6 2 3 0 7 ^qdb$^qdb$ BDFChar: 384 449 6 0 4 0 7 f\"j/f\"j/ BDFChar: 385 450 6 0 5 0 7 0`3UYr%KfY BDFChar: 386 451 6 2 3 0 7 ^qdb$^];0c BDFChar: 387 452 6 0 5 0 9 'F3 BDFChar: 512 577 6 0 4 0 7 n/)ur?smAM BDFChar: 513 578 6 0 4 0 5 n/)ur?sis7 BDFChar: 514 579 6 0 5 0 7 G\h2@D!Yt_ BDFChar: 515 580 6 0 5 0 7 Ci!qcCi!oI BDFChar: 516 581 6 0 4 0 7 +U BDFChar: 530 595 6 0 4 0 9 @)0RnnCZCGf^Jk@ BDFChar: 531 596 6 0 4 0 5 n/)uZ)"7M* BDFChar: 532 597 6 0 4 -1 5 Geh,Ik\qXE BDFChar: 533 598 6 0 5 -1 7 (`7MMf\"i$$ig8- BDFChar: 534 599 6 0 5 0 8 $lBh+f\"j/GQ7^D BDFChar: 535 600 6 0 4 0 5 E7jq&)"7M* BDFChar: 536 601 6 0 4 0 5 n/*#;fPgfj BDFChar: 537 602 6 0 5 0 5 E#a,TfPgfj BDFChar: 538 603 6 0 4 0 5 Gee:6^j#hZ BDFChar: 539 604 6 0 4 0 5 n/-*])"7M* BDFChar: 540 605 6 0 4 0 6 )"8A](`;`B BDFChar: 541 606 6 0 4 0 5 E7j[4fPgfj BDFChar: 542 607 6 0 4 -2 5 0JG2*0JG3= BDFChar: 543 608 6 0 5 -2 6 %!^FWf[tEcDu]k< BDFChar: 544 609 6 0 4 -2 5 GhC[$fQ\6P BDFChar: 545 610 6 0 4 0 5 Geh,IfPgfj BDFChar: 546 611 6 0 4 0 5 fPhsPfPgfj BDFChar: 547 612 6 1 3 1 5 TKqG.5QCca BDFChar: 548 613 6 0 4 0 7 f\"j/fQ\5M BDFChar: 549 614 6 0 4 0 9 @)0RnnCZCGf[p0( BDFChar: 550 615 6 0 4 -2 9 @)0RnnCZCGf[q#p BDFChar: 551 616 6 1 4 0 8 ?sitB@.7Q3?iU0, BDFChar: 552 617 6 1 4 0 5 ^qdb$^i08R BDFChar: 553 618 6 2 3 0 5 ^qdb$^q]pM BDFChar: 554 619 6 0 5 0 7 0JG2&\1fTR BDFChar: 555 620 6 0 4 0 7 0JIIMGVCfg BDFChar: 556 621 6 2 4 -2 7 ^qdb$^qdb$^gI-B BDFChar: 557 622 6 0 5 -2 7 ^qfllbh1-U(iTHT BDFChar: 558 623 6 0 4 0 5 f\#uopilc= BDFChar: 559 624 6 0 4 -2 5 f\#uopimVm BDFChar: 560 625 6 0 4 -1 5 nG)eRf[qkX BDFChar: 561 626 6 0 5 -1 5 G\h24Ci$le BDFChar: 562 627 6 0 5 -1 5 nCZCGf[pT4 BDFChar: 563 628 6 0 4 0 5 R+V3/fZ4$m BDFChar: 564 629 6 0 4 0 5 E7jsf_F+Of[p0( BDFChar: 660 725 6 0 3 0 9 5_(OB0JG170JEJ, BDFChar: 661 726 6 0 4 0 9 5_*h+f\"j/fPgfj BDFChar: 662 727 6 0 5 0 9 5_.)&G^(nr0JEJ, BDFChar: 663 728 6 0 4 0 9 5_*h+f\"j/:tPaJ BDFChar: 664 729 6 0 4 0 9 O<@'o?smAM?oS,d BDFChar: 665 730 6 0 4 0 7 E7igqpt46O BDFChar: 666 731 6 0 4 0 7 nCZC_f\"jG BDFChar: 667 732 6 0 4 0 7 pqX\\^qdb$ BDFChar: 668 733 6 0 4 1 6 +FH BDFChar: 669 734 6 0 4 0 7 pqX]7^qdb\ BDFChar: 670 735 6 0 4 0 7 p_Xi%@)0SQ BDFChar: 671 736 6 0 4 0 7 f\"jOf\"j/ BDFChar: 672 737 6 0 4 0 7 E7ihu BDFChar: 688 753 6 0 4 0 7 E7igqf[s$Q BDFChar: 689 754 6 1 3 0 9 TE&A-?smAM?sis7 BDFChar: 690 755 6 0 5 0 9 :]S_`G^(nr0JEJ, BDFChar: 691 756 6 0 4 0 8 &0Lsdf\"j/BE/#4 BDFChar: 692 757 6 0 4 0 8 &0Lst^i7*)GQ7^D BDFChar: 693 758 6 0 4 -2 8 &0LuBf\"j/fGGG* BDFChar: 694 759 6 1 4 0 8 +@#qB^qdb$Du]k< BDFChar: 695 760 6 0 4 0 9 O<@'of\"j/fPgfj BDFChar: 696 761 6 0 4 0 5 B\:tifOt6b BDFChar: 697 762 6 0 4 -2 7 E7ih4f\"jG^q]pM BDFChar: 698 763 6 0 4 -2 5 f\"hqE$-8G BDFChar: 699 764 6 0 4 0 7 E7hs6nCZB4 BDFChar: 700 765 6 0 4 0 5 Gee:6^j#hZ BDFChar: 701 766 6 0 4 -2 7 p_Y\m^qda1#S6t9 BDFChar: 702 767 6 0 4 -2 5 nCZCGf[q#X BDFChar: 703 768 6 0 4 0 7 E7ihcE,aI^ BDFChar: 707 772 6 0 4 -2 5 f\"j/f]^,d BDFChar: 708 773 6 0 4 0 5 f[t.^+u BDFChar: 720 785 6 0 4 0 5 Lo@9IpeUqj BDFChar: 721 786 6 0 4 0 7 TE&A-?smA% BDFChar: 722 787 6 0 4 0 7 :]T/#f\"hq BDFChar: 723 788 6 0 4 0 8 &0Lslf\"j/Du]k< BDFChar: 724 789 6 0 4 0 8 &0Lu*f\"j/Du]k< BDFChar: 725 790 6 0 4 0 8 &0Lt/W2TLd:]LIq BDFChar: 726 791 6 0 4 -2 7 f\#]Oi:,CO#S6t9 BDFChar: 727 792 6 0 4 0 7 E7ih4f\"hq BDFChar: 728 793 6 0 4 0 7 E7iff37ul& BDFChar: 729 794 6 0 5 0 7 bfkFH BDFChar: 755 820 6 0 4 0 7 Geh,af\"hq BDFChar: 756 821 6 1 4 0 7 E599InBgZ4 BDFChar: 757 822 6 0 4 -2 7 +<^ISW$!3*+ BDFChar: 771 836 6 0 5 -2 5 3,EDIG[U#K BDFChar: 772 837 6 0 4 0 7 n/)uZ(`4+Z BDFChar: 773 838 6 0 4 0 7 Geh,IfYG:I BDFChar: 774 839 6 0 4 0 7 n/*"pfGGIp BDFChar: 775 840 6 0 4 0 9 5Toj;_!o.T_"[m0 BDFChar: 776 841 6 0 4 0 9 :]U:+_!o.T_"[m0 BDFChar: 777 842 6 0 4 -2 7 i5!.tf\"j/(bbpi BDFChar: 778 843 6 0 4 0 9 &0Ub`^qdb$^q]pM BDFChar: 779 844 6 0 4 0 7 Geh,a^qda1 BDFChar: 780 845 6 0 4 0 7 Geh+6(`4+Z BDFChar: 781 846 6 2 3 0 7 ^qdb$^qdb$ BDFChar: 782 847 6 1 3 0 9 TE&A-?smAM?sis7 BDFChar: 783 848 6 0 3 0 7 0JG170JG3= BDFChar: 784 849 6 0 4 0 7 @,S9!W2R51 BDFChar: 785 850 6 0 4 0 7 TV.tIpo(^, BDFChar: 786 851 6 0 5 0 7 n6fXKCi!p( BDFChar: 787 852 6 0 4 0 9 &0TWXnDN6of[p0( BDFChar: 788 853 6 0 4 0 9 5Tn/#q"XXZfU)X= BDFChar: 789 854 6 0 4 0 9 Li<@Hf[tEc(iTHT BDFChar: 790 855 6 0 4 -2 7 f\"j/f\"jO+YXi8F+W BDFChar: 868 933 6 0 4 0 8 5Tg'Jf_G6oQiI*d BDFChar: 869 934 6 0 4 -2 7 :a"ECf\"i$(iTHT BDFChar: 870 935 6 0 4 -2 5 f\"j/f_?R3 BDFChar: 871 936 6 0 4 0 7 :tUT&W;--a BDFChar: 872 937 6 0 4 0 5 :tV`ApeUqj BDFChar: 873 938 6 0 4 0 7 ^u3#tf\"jG BDFChar: 874 939 6 0 4 0 7 ^qemDnCZC_ BDFChar: 875 940 6 0 4 0 7 R'Cj BDFChar: 877 942 6 0 4 0 7 +Zpa\GXk+ BDFChar: 884 949 6 0 5 0 5 \>[car6t]H BDFChar: 885 950 6 0 4 -2 9 :a#6E(iUW2TJn(iTHT BDFChar: 896 961 6 0 4 -2 5 5j5/FpfJAP BDFChar: 897 962 6 0 4 -1 8 +E5ucf\"j/E$,,\ BDFChar: 898 963 6 0 4 0 6 +E5ucfPhr5 BDFChar: 899 964 6 0 4 0 9 E/5X8Lo@9IpeUqj BDFChar: 900 965 6 0 4 0 8 E/5X8LoC+D:]LIq BDFChar: 901 966 6 0 4 0 9 E$2*8Lo@9IpeUqj BDFChar: 902 967 6 0 4 0 7 E$2*8W;--a BDFChar: 903 968 6 0 4 -2 7 Geh,1^qda1(`35Q BDFChar: 904 969 6 0 4 -2 5 Geh,1^j$\5 BDFChar: 905 970 6 0 4 0 5 (iVImE52GR BDFChar: 906 971 6 0 4 -1 9 LiCGfq"XXZfU+>m BDFChar: 907 972 6 0 4 -1 8 Li<@8f_G6oQnSL? BDFChar: 908 973 6 0 4 0 7 @.7QCG\D>@ BDFChar: 909 974 6 0 4 0 5 @.7QCBQ*qO BDFChar: 910 975 6 0 4 0 7 nCZCgnCYOl BDFChar: 911 976 6 0 4 -2 5 nCZCGq!cqO BDFChar: 912 977 6 0 4 0 9 #RL4@^qdb$^q]pM BDFChar: 913 978 6 0 4 0 7 #RL4@^qdb$ BDFChar: 914 979 6 0 5 0 7 Hsg>in6fX3 BDFChar: 915 980 6 0 4 0 5 G[OqK?sis7 BDFChar: 916 981 6 0 4 -2 7 pqX\\i7Q]7(bbpi BDFChar: 917 982 6 0 4 -2 5 pqX]'f[q#p BDFChar: 918 983 6 0 5 -2 7 W2TK1E;6B5"9\]) BDFChar: 919 984 6 0 5 -2 5 W;(?,W2p+) BDFChar: 920 985 6 0 4 -2 7 n/*!](`4+Z+:p BDFChar: 1045 1110 6 0 5 0 5 o\@OCeC4Hu BDFChar: 1046 1111 6 0 5 0 7 jODu;kfgu` BDFChar: 1047 1112 6 0 5 -2 5 jP8DCeE"E\ BDFChar: 1048 1113 6 0 4 0 7 Gd+Dsn?B., BDFChar: 1049 1114 6 0 4 0 5 E2\$VYa>Cj BDFChar: 1050 1115 6 0 4 -1 7 E7igqf\#t<(]XO9 BDFChar: 1051 1116 6 0 4 -2 5 GhC[$fQ\5M BDFChar: 1052 1117 6 0 4 0 7 f\"jOq"WKt BDFChar: 1053 1118 6 0 4 0 5 f\#uopeUqj BDFChar: 1054 1119 6 0 5 0 8 +P>?=i8F+WfDkmO BDFChar: 1055 1120 6 0 4 0 6 +P?2InCZ@n BDFChar: 1056 1121 6 0 5 -2 7 nBfP7gsjj'";h+= BDFChar: 1057 1122 6 0 5 -2 5 nBfP7gscH4 BDFChar: 1058 1123 6 0 5 -2 7 d*U/7gsjj'":+u- BDFChar: 1059 1124 6 0 5 -2 5 d*VRCeC4U, BDFChar: 1060 1125 6 0 5 -2 7 pt46Of\"j3"9\]) BDFChar: 1061 1126 6 0 5 -2 5 pt46Of\?T4 BDFChar: 1062 1127 6 0 5 -2 7 ^qfHlf\"j3"9\]) BDFChar: 1063 1128 6 0 5 -2 5 ^qfHlf\?T4 BDFChar: 1064 1129 6 0 4 0 7 Geh+&0E; BDFChar: 1078 1143 6 0 4 -2 7 +9;0j@)0Rn?oS,d BDFChar: 1079 1144 6 1 4 0 4 ?na8ghuE`W BDFChar: 1080 1145 6 1 4 0 6 5QG1G0JMDb BDFChar: 1081 1146 6 0 4 -1 3 (`4)DhuE`W BDFChar: 1082 1147 6 0 4 -1 5 #QP\Y(bjkJ BDFChar: 1083 1148 6 0 5 -2 4 "B8?J31rM: BDFChar: 1084 1149 6 0 5 -2 7 +954@<)e6)TKiJW BDFChar: 1085 1150 6 0 5 -2 3 -p4lHi'78B BDFChar: 1086 1151 6 0 5 -2 5 +93fP[(,$Z BDFChar: 1087 1152 6 0 4 0 7 ?smAME-Q'c BDFChar: 1088 1153 6 0 4 0 7 ?smYUE-Q'c BDFChar: 1089 1154 6 0 4 -2 5 @)0Qs^qeTA BDFChar: 1090 1155 6 0 4 -2 7 5QG3-^i7*)fPgfj BDFChar: 1091 1156 6 0 5 0 0 qu?]s BDFChar: 1092 1157 6 0 4 -1 5 &-+C4R)j4H BDFChar: 1093 1158 6 0 4 -1 5 -ibqLR)j4H BDFChar: 1094 1159 6 0 4 0 7 =I<3X(mp\0 BDFChar: 1095 1160 6 0 4 -2 7 (`4),(`6B-fPgfj BDFChar: 1096 1161 6 0 4 -2 3 E7ih4J:IV" BDFChar: 1097 1162 6 0 4 -1 5 +94*_f[t-C BDFChar: 1098 1163 6 0 4 0 4 @*mQYDu]k< BDFChar: 1099 1164 6 0 4 -2 3 E7iff)"7M* BDFChar: 1100 1165 6 0 5 -1 4 #TOQ2fPgfj BDFChar: 1101 1166 6 0 5 -2 5 #TQ[nfPgge BDFChar: 1102 1167 6 2 3 3 4 ^q]pM BDFChar: 1103 1168 6 0 3 0 7 ^qa>c0JG17 BDFChar: 1104 1169 6 0 4 0 7 f[t.^0JG17 BDFChar: 1105 1170 6 0 4 0 7 W;,kt?smAM BDFChar: 1106 1171 6 0 4 0 7 @)0Qc^qeTA BDFChar: 1107 1172 6 0 4 0 7 +E2;Pf\"hq BDFChar: 1108 1173 6 0 4 0 7 n1ZOM0GkWD BDFChar: 1109 1174 6 0 4 0 7 f[t.^E$-8G BDFChar: 1110 1175 6 0 4 0 7 +32"UbJ BDFChar: 1118 1183 6 0 5 2 7 oJHLDYe0r9 BDFChar: 1119 1184 6 0 4 -2 7 E7ih BDFChar: 1205 1270 6 0 4 0 9 +9:o`f\#]/^q]pM BDFChar: 1206 1271 6 0 4 -2 7 +9:o`f\"jG^q]pM BDFChar: 1207 1272 6 0 4 0 9 +9:o`f\#]Gf[p0( BDFChar: 1208 1273 6 0 4 0 7 +96Z%^qdb$ BDFChar: 1209 1274 6 0 4 -2 7 nCZCGnCZCG!$D7A BDFChar: 1210 1275 6 0 4 -2 5 Geh,1^q]pm BDFChar: 1211 1276 6 0 4 -2 9 DufC[f\#]Gf[p0H BDFChar: 1212 1277 6 0 4 -2 7 Dub-u^qdb$!$D7A BDFChar: 1213 1278 6 0 4 -2 7 nCZCGnCZCG!,qo< BDFChar: 1214 1279 6 0 4 -2 5 Geh,1^q]qh BDFChar: 1215 1280 6 0 4 0 9 +96Z%^i1,-)"7M* BDFChar: 1216 1281 6 0 4 0 7 +96Z%E#9G] BDFChar: 1217 1282 6 0 4 -2 7 Geh+6(`4+Z!$D7A BDFChar: 1218 1283 6 0 4 -2 5 Gee88)"7MJ BDFChar: 1219 1284 6 0 4 0 9 #Z(MG^qan+)"7M* BDFChar: 1220 1285 6 0 4 0 8 #Z(MG^i1,-n,NFg BDFChar: 1221 1286 6 0 4 0 9 TL]'-^qan+)"7M* BDFChar: 1222 1287 6 0 4 0 8 TL]'-^i1,-n,NFg BDFChar: 1223 1288 6 0 4 -2 9 +96Z%^i1,-)"7MJ BDFChar: 1224 1289 6 0 4 -2 7 +96Z%E#9G]!$D7A BDFChar: 1225 1290 6 0 5 0 9 +9;qUMf[s#>E$,,\ BDFChar: 1245 1310 6 0 4 -2 7 f\"hqE,ZpB!$D7A BDFChar: 1246 1311 6 0 4 -2 5 f\"hqE$,-' BDFChar: 1247 1312 6 0 4 0 9 5Tn_3f\#uofSBM- BDFChar: 1248 1313 6 0 4 0 8 5Tg'Zf_G7::]LIq BDFChar: 1249 1314 6 0 4 0 9 &0TWXf\#uofSBM- BDFChar: 1250 1315 6 0 4 0 7 &0TWXq"XV\ BDFChar: 1251 1316 6 0 4 0 9 :]T/#f\#uofSBM- BDFChar: 1252 1317 6 0 4 0 7 :]T/#q"XV\ BDFChar: 1253 1318 6 0 4 0 9 +9:'Hf\#uofSBM- BDFChar: 1254 1319 6 0 4 0 7 +9:'Hq"XV\ BDFChar: 1255 1320 6 0 4 -2 7 f\"j/q"WKt!$D7A BDFChar: 1256 1321 6 0 4 -2 5 f\#uopeUr5 BDFChar: 1257 1322 6 0 4 0 9 +9:'HE$-9Bf[p0( BDFChar: 1258 1323 6 0 4 0 7 +9:&5+qUME7js$^j#hZ BDFChar: 1309 1374 6 0 4 0 9 5`dAopqZ[?_"[m0 BDFChar: 1310 1375 6 0 4 0 9 5`dAoE7js$^j#hZ BDFChar: 1311 1376 6 0 4 0 9 &4iGopqZ[?_"[m0 BDFChar: 1312 1377 6 0 4 0 9 &4iGoE7js$^j#hZ BDFChar: 1313 1378 6 0 4 0 9 ^`ZGRpqZ[?_"[m0 BDFChar: 1314 1379 6 0 4 0 9 ^`ZGRE7js$^j#hZ BDFChar: 1315 1380 6 0 4 0 9 BWrUU!;OA)_"[m0 BDFChar: 1316 1381 6 0 4 0 9 BWrUU!-$$S^j#hZ BDFChar: 1317 1382 6 0 4 -2 9 +AhjK_"b^\_"[mP BDFChar: 1318 1383 6 0 4 -2 8 +A`&Wf_E7tGQ8id BDFChar: 1319 1384 6 1 3 0 9 ^`[#m?smAM?sis7 BDFChar: 1320 1385 6 1 3 -2 7 ^`[#m?smAM!'gMa BDFChar: 1321 1386 6 2 3 -2 7 ^qdb$^qdb$!.Y%L BDFChar: 1322 1387 6 2 3 -2 8 ^q]rc^qdb$^]8lb BDFChar: 1323 1388 6 0 4 -2 7 E7igqf\"hq!$D7A BDFChar: 1324 1389 6 0 4 -2 5 E7igqfPgg5 BDFChar: 1325 1390 6 0 4 0 9 ^`[UKf\"j/fPgfj BDFChar: 1326 1391 6 0 4 0 7 ^`[UKf\"hq BDFChar: 1327 1392 6 0 4 0 9 5`dAoE7igqfPgfj BDFChar: 1328 1393 6 0 4 0 9 5`dAoE7igqfPgfj BDFChar: 1329 1394 6 0 4 0 9 &4iGoE7igqfPgfj BDFChar: 1330 1395 6 0 4 0 9 &4iGoE7igqfPgfj BDFChar: 1331 1396 6 0 4 0 9 ^`ZGRE7igqfPgfj BDFChar: 1332 1397 6 0 4 0 9 ^`ZGRE7igqfPgfj BDFChar: 1333 1398 6 0 4 0 9 BWrUU!-$TCfPgfj BDFChar: 1334 1399 6 0 4 0 9 BWrUU!-$TCfPgfj BDFChar: 1335 1400 6 0 4 -2 9 +Ad%0f\"j/fPgg5 BDFChar: 1336 1401 6 0 4 -2 8 +A`&Wf\"j/Du_!\ BDFChar: 1337 1402 6 0 5 0 9 &0uAMf\"j/fPgfj BDFChar: 1338 1403 6 0 5 0 8 &0M*tf\"j/Du]k< BDFChar: 1339 1404 6 0 5 0 9 5U:I(f\"j/fPgfj BDFChar: 1340 1405 6 0 5 0 8 5Tg2Of\"j/Du]k< BDFChar: 1341 1406 6 0 5 0 9 ^a+$Sf\"j/fPgfj BDFChar: 1342 1407 6 0 5 0 8 ^`Wc%f\"j/Du]k< BDFChar: 1343 1408 6 0 5 0 9 BWqV]f\"j/fPgfj BDFChar: 1344 1409 6 0 5 0 9 8>qUQFP,6ufPgfj BDFChar: 1345 1410 6 0 5 -2 8 "E`;Kf\"j/Du_!\ BDFChar: 1346 1411 6 0 5 -2 6 "E`;Kf[t-C+92BA BDFChar: 1347 1412 6 0 4 -2 7 f\"j/f\"hq!$D7A BDFChar: 1348 1413 6 0 4 -2 5 f\"j/fQ[B= BDFChar: 1349 1414 6 0 4 0 9 ^`_:^f\"j/fPgfj BDFChar: 1350 1415 6 0 4 0 7 ^`_:^f\"i$ BDFChar: 1351 1416 6 0 5 0 9 'I;>`f\"j/fPgfj BDFChar: 1352 1417 6 0 5 0 8 &0qD2f\"j/GQ7^D BDFChar: 1353 1418 6 0 5 0 9 6mUF;f\"j/fPgfj BDFChar: 1354 1419 6 0 5 0 8 5U6Kbf\"j/GQ7^D BDFChar: 1355 1420 6 0 5 0 9 `$F!ff\"j/fPgfj BDFChar: 1356 1421 6 0 5 0 8 ^a''8f\"j/GQ7^D BDFChar: 1357 1422 6 0 5 0 9 BX@opf\"j/fPgfj BDFChar: 1358 1423 6 0 5 0 9 8>qaUf\"j/fQ[Ar BDFChar: 1359 1424 6 0 5 -2 9 "9dB0f\"j/fPgg5 BDFChar: 1360 1425 6 0 5 -2 7 "9dB0f\"i$!$D7A BDFChar: 1361 1426 6 0 5 0 9 5Tn:pG^(nr0JEJ, BDFChar: 1362 1427 6 0 4 -2 7 5Tn_3f\"i$(iTHT BDFChar: 1363 1428 6 0 5 -2 7 bfkqUMf\"j/fQ\6P BDFChar: 1369 1434 6 0 5 0 7 f\"j/f\"jS BDFChar: 1370 1435 6 0 5 0 7 f\"j/f\"hm BDFChar: 1371 1436 6 0 4 0 7 3+0P;f\"hq BDFChar: 1372 1437 6 0 4 0 5 3+0PSfPgfj BDFChar: 1373 1438 6 0 5 -1 7 bfkf\"j/fPgfj BDFChar: 1447 1512 6 0 4 0 9 &.fraf\"j/fQ[Ar BDFChar: 1448 1513 6 0 4 0 9 5X6Flf\"j/fQ[Ar BDFChar: 1449 1514 6 0 4 0 9 5Z!7:f\"j/fQ[Ar BDFChar: 1450 1515 6 0 4 0 9 J<3;%f\"j/fQ[Ar BDFChar: 1451 1516 6 0 4 0 9 5Y-t:f\"j/fQ[Ar BDFChar: 1452 1517 6 0 4 0 9 J;@#%f\"j/fQ[Ar BDFChar: 1453 1518 6 0 4 0 9 E2XmE!8,rVfQ[Ar BDFChar: 1454 1519 6 0 4 0 9 E2Xlj!8,rVfQ[Ar BDFChar: 1455 1520 6 0 5 0 9 5X6I9b]n@d0JEJ, BDFChar: 1456 1521 6 0 5 0 9 :e2_Qb]n@d0JEJ, BDFChar: 1457 1522 6 0 5 0 9 Llak%bfk;c0JEJ, BDFChar: 1458 1523 6 0 5 0 9 E2Xljbfk;c0JEJ, BDFChar: 1459 1524 6 0 4 0 9 &.fraf\#uopeUqj BDFChar: 1460 1525 6 0 4 0 9 5X6Flf\#uopeUqj BDFChar: 1461 1526 6 0 4 0 9 5Z!7:f\#uopeUqj BDFChar: 1462 1527 6 0 4 0 9 J<3;%f\#uopeUqj BDFChar: 1463 1528 6 0 4 0 9 5Y-t:f\#uopeUqj BDFChar: 1464 1529 6 0 4 0 9 J;@#%f\#uopeUqj BDFChar: 1465 1530 6 0 4 0 9 E2XmE!8,s!peUqj BDFChar: 1466 1531 6 0 4 0 9 E2Xlj!8,s!peUqj BDFChar: 1467 1532 6 0 4 0 9 5X9j=f\"j/:tPaJ BDFChar: 1468 1533 6 0 4 0 9 5X6H2f\"j/:tPaJ BDFChar: 1469 1534 6 0 4 0 9 :e6+Uf\"j/:tPaJ BDFChar: 1470 1535 6 0 4 0 9 :e2^Jf\"j/:tPaJ BDFChar: 1471 1536 6 0 4 0 9 85OhUf\"j/:tPaJ BDFChar: 1472 1537 6 0 4 0 9 85LFJf\"j/:tPaJ BDFChar: 1473 1538 6 0 4 0 9 E2XmEE7igq:tPaJ BDFChar: 1474 1539 6 0 4 0 9 E2XljE7igq:tPaJ BDFChar: 1475 1540 6 0 4 0 8 5Tg&?f\"j/BE/#4 BDFChar: 1476 1541 6 0 4 0 8 &0Lsdf\"j/BE/#4 BDFChar: 1477 1542 6 0 4 0 8 5Tg&O^i7*)GQ7^D BDFChar: 1478 1543 6 0 4 0 8 &0Lst^i7*)GQ7^D BDFChar: 1479 1544 6 0 4 -2 8 5Tg'rf\"j/fGGG* BDFChar: 1480 1545 6 0 4 -2 8 &0LuBf\"j/fGGG* BDFChar: 1481 1546 6 1 4 0 8 J3X+M^qdb$Du]k< BDFChar: 1482 1547 6 1 4 0 8 +@#qB^qdb$Du]k< BDFChar: 1483 1548 6 0 4 0 8 5Tg&Gf\"j/Du]k< BDFChar: 1484 1549 6 0 4 0 8 &0Lslf\"j/Du]k< BDFChar: 1485 1550 6 0 4 0 8 5Tg'Zf\"j/Du]k< BDFChar: 1486 1551 6 0 4 0 8 &0Lu*f\"j/Du]k< BDFChar: 1487 1552 6 0 4 0 8 5Tg'Zf_G7::]LIq BDFChar: 1488 1553 6 0 4 0 8 &0Lu*f_G7::]LIq BDFChar: 1489 1554 6 0 4 -2 9 &.fraB\:tifP#e# BDFChar: 1490 1555 6 0 4 -2 9 5X6FlB\:tifP#e# BDFChar: 1491 1556 6 0 4 -2 9 5Z!7:B\:tifP#e# BDFChar: 1492 1557 6 0 4 -2 9 J<3;%B\:tifP#e# BDFChar: 1493 1558 6 0 4 -2 9 5Y-t:B\:tifP#e# BDFChar: 1494 1559 6 0 4 -2 9 J;@#%B\:tifP#e# BDFChar: 1495 1560 6 0 4 -2 9 E2XmE!,1$;fP#e# BDFChar: 1496 1561 6 0 4 -2 9 E2Xlj!,1$;fP#e# BDFChar: 1497 1562 6 0 5 0 9 5X9j-eC=-?eC4Hu BDFChar: 1498 1563 6 0 5 0 9 +J BDFChar: 1540 1605 6 0 4 -2 5 B\:tifP#e# BDFChar: 1541 1606 6 0 4 -2 8 &0Lsdf\"j/BRi>J BDFChar: 1542 1607 6 0 4 0 8 E/4L-f\"j/BE/#4 BDFChar: 1543 1608 6 0 4 -2 8 LiJ BDFChar: 1544 1609 6 0 4 0 9 LiJ0JG170JEJ, BDFChar: 1574 1639 6 1 3 0 9 huI.m?smAM?sis7 BDFChar: 1575 1640 6 0 3 0 9 J3YeB0JG170JEJ, BDFChar: 1576 1641 6 1 3 0 9 5_*6M?smAM?sis7 BDFChar: 1577 1642 6 0 4 7 9 J<3;% BDFChar: 1578 1643 6 0 4 7 9 J;@#% BDFChar: 1579 1644 6 0 4 6 9 E2Xlj BDFChar: 1580 1645 6 0 4 0 8 Li<@Hf\"j/GQ7^D BDFChar: 1581 1646 6 0 4 0 7 DuePCf\"i$ BDFChar: 1582 1647 6 0 4 0 9 5Tg&'!8,rVfQ[Ar BDFChar: 1583 1648 6 0 4 0 9 &0LsL!8,rVfQ[Ar BDFChar: 1584 1649 6 0 4 -2 9 +bQ,l2 BDFChar: 1649 1714 6 0 5 0 7 prpt7fDsRV BDFChar: 1650 1715 6 0 4 0 7 n@6!D.1`0W50K9J# BDFChar: 1723 1788 6 0 5 -2 9 @,PF'BFl:kYW+HV BDFChar: 1724 1789 6 0 5 -2 9 nA*s=kR\kAYW+HV BDFChar: 1725 1790 6 0 5 -2 9 @,PF'BFl:gZktV: BDFChar: 1726 1791 6 0 5 -2 9 i%SOqkR\k=ZktV: BDFChar: 1727 1792 6 0 5 -2 9 nA*s=kR\k=ZktV: BDFChar: 1728 1793 6 0 5 -2 9 n1\6\BFl:gZktV: BDFChar: 1729 1794 6 0 5 1 9 @,PF'BFl:OJ,fQL BDFChar: 1730 1795 6 0 5 -2 9 @*m9IA/J^a$lBC4 BDFChar: 1731 1796 6 0 4 2 6 +COtP+92BA BDFChar: 1732 1797 6 0 4 2 7 +E7)u+ERE+92BA BDFChar: 1734 1799 6 0 4 2 6 +<^Gu+92BA BDFChar: 1735 1800 6 0 4 2 6 :tYQq:]LIq BDFChar: 1736 1801 6 0 4 1 8 +E7)u+S]mu BDFChar: 1737 1802 6 0 4 2 6 nDN5d#QOi) BDFChar: 1738 1803 6 0 4 2 6 GW7ZRJ,fQL BDFChar: 1739 1804 6 0 4 2 6 J4MXZGQ7^D BDFChar: 1740 1805 6 0 4 2 6 #a"!&n,NFg BDFChar: 1741 1806 6 0 4 2 6 +DC7X+92BA BDFChar: 1742 1807 6 0 4 2 6 +L$*p+92BA BDFChar: 1743 1808 6 0 4 2 6 +DCO`+92BA BDFChar: 1744 1809 6 0 4 2 7 +E7)u+E.;\ BDFChar: 1745 1810 6 0 4 2 6 +L(XF+92BA BDFChar: 1746 1811 6 0 4 2 6 E$4pp+92BA BDFChar: 1747 1812 6 0 4 0 7 +E7)upi%AN BDFChar: 1748 1813 6 0 4 2 6 +DC7P+92BA BDFChar: 1749 1814 6 0 4 2 6 +L$)E+92BA BDFChar: 1750 1815 6 0 4 0 6 +COtX-jU(Y BDFChar: 1751 1816 6 0 4 0 6 +>ESpTR_Om BDFChar: 1752 1817 6 0 4 2 8 #RDhlpg>3E BDFChar: 1753 1818 6 0 4 2 8 J:O;spb3fj BDFChar: 1754 1819 6 0 4 2 7 i#j0;E$,,\ BDFChar: 1755 1820 6 0 4 0 7 #RC\aB_YsX BDFChar: 1756 1821 6 0 5 1 6 (aL7!E$,,\ BDFChar: 1757 1822 6 0 5 1 6 @#tqI3"Q&i BDFChar: 1758 1823 6 0 4 0 9 TYU?Li<=o BDFChar: 1761 1826 6 0 4 4 6 +COsE BDFChar: 1762 1827 6 0 4 2 4 pg>3E BDFChar: 1763 1828 6 2 4 2 7 JAC)nJ:IV" BDFChar: 1764 1829 6 0 2 2 7 +CO+M+EQj BDFChar: 1766 1831 6 0 4 2 4 pb3fj BDFChar: 1767 1832 6 2 4 2 6 J:QRnJ,fQL BDFChar: 1768 1833 6 0 2 2 6 +<]TM+92BA BDFChar: 1769 1834 6 0 4 2 7 &GQf%pcnfZ BDFChar: 1770 1835 6 0 4 1 7 5i>I8:cK!d BDFChar: 1771 1836 6 0 4 2 7 5kmSUp^dE* BDFChar: 1772 1837 6 0 4 2 6 5kmV>5QCca BDFChar: 1773 1838 6 0 4 2 6 ;#!j`:]LIq BDFChar: 1774 1839 6 0 4 2 6 &GQh3&-)\1 BDFChar: 1775 1840 6 0 4 2 6 :f(!`:]LIq BDFChar: 1776 1841 6 0 4 2 6 5kk?S&-)\1 BDFChar: 1777 1842 6 0 4 2 6 &GQ8#5QCca BDFChar: 1778 1843 6 0 5 2 6 +FN*p+92BA BDFChar: 1779 1844 6 0 4 0 7 +E7*P:f'tb BDFChar: 1780 1845 6 0 5 2 6 &GR7?&-)\1 BDFChar: 1781 1846 6 0 4 0 7 :f'tb;#"uP BDFChar: 1782 1847 6 0 5 2 6 8Gp^08,rVi BDFChar: 1783 1848 6 0 4 0 7 +E7*P;#"uP BDFChar: 1784 1849 6 0 4 2 6 nDMZl&-)\1 BDFChar: 1785 1850 6 0 4 2 6 GW8g(5QCca BDFChar: 1786 1851 6 0 4 2 6 5c@dEGQ7^D BDFChar: 1787 1852 6 0 4 2 6 &?*t6n,NFg BDFChar: 1788 1853 6 0 4 2 6 +@)kj+92BA BDFChar: 1789 1854 6 0 4 2 6 +Af!:+92BA BDFChar: 1790 1855 6 1 5 2 6 +:tI_+92BA BDFChar: 1791 1856 6 0 4 2 6 +98?:+92BA BDFChar: 1792 1857 6 0 4 2 6 T]#V'TE"rl BDFChar: 1793 1858 6 0 4 2 6 -ogu]-ia5I BDFChar: 1794 1859 6 0 4 2 6 +F**p+92BA BDFChar: 1795 1860 6 0 4 2 7 +E7*P:iHC7 BDFChar: 1796 1861 6 0 4 2 6 +Rlo1+92BA BDFChar: 1797 1862 6 0 4 2 7 E)9C+E$,,\ BDFChar: 1798 1863 6 0 4 0 7 +E7*P;#"uP BDFChar: 1799 1864 6 0 4 1 7 &3*K_:uFS= BDFChar: 1800 1865 6 0 4 1 7 &GQh3&GQe: BDFChar: 1801 1866 6 0 4 0 6 f\#uOfPhr5 BDFChar: 1802 1867 6 0 4 0 6 Geh,1^qb0p BDFChar: 1803 1868 6 0 4 0 6 ?k=0"f[t-C BDFChar: 1804 1869 6 0 4 0 6 p_XkC(`<#J BDFChar: 1805 1870 6 0 4 -1 7 +S[oupfNpYJ,fQL BDFChar: 1806 1871 6 0 4 0 7 #]SGkpt0P9 BDFChar: 1807 1872 6 0 4 1 6 pt0P)+&-)\1 BDFChar: 1810 1875 6 0 4 1 5 Gej*iGQ7^D BDFChar: 1811 1876 6 0 4 0 6 i%Q#C(bjkJ BDFChar: 1812 1877 6 0 4 -1 7 5i?T`pfMLn5QCca BDFChar: 1813 1878 6 0 4 1 5 n/1p;n,NFg BDFChar: 1814 1879 6 0 4 0 7 pt46Of\"j/ BDFChar: 1815 1880 6 0 4 0 7 pg>cm(bf@m BDFChar: 1816 1881 6 0 5 3 3 qu?]s BDFChar: 1817 1882 6 0 5 0 6 quAE)r%Kf) BDFChar: 1818 1883 6 0 5 0 6 0E$ BDFChar: 1822 1887 6 0 5 0 9 +De.G/.Ba=4<+>$ BDFChar: 1823 1888 6 0 4 2 6 B_]sLBE/#4 BDFChar: 1824 1889 6 0 4 3 6 ;!>Dc BDFChar: 1825 1890 6 0 4 2 6 ^qdb$p](9o BDFChar: 1826 1891 6 0 4 2 6 (bf@5p](9o BDFChar: 1827 1892 6 2 3 0 7 ^qdb$^qdb$ BDFChar: 1828 1893 6 1 4 0 7 ?smA]i*]r# BDFChar: 1829 1894 6 0 4 0 7 f\"j/f\"j/ BDFChar: 1830 1895 6 0 5 0 7 f\#!Sf\"j/ BDFChar: 1831 1896 6 0 4 0 5 +FH BDFChar: 1884 1949 6 0 4 2 5 pqX\\ BDFChar: 1885 1950 6 0 5 1 8 Gg)D:S:o+2 BDFChar: 1886 1951 6 0 5 1 8 r6.]V89k(1 BDFChar: 1887 1952 6 1 4 -2 7 @.;OY^qdb$^q]pM BDFChar: 1888 1953 6 0 3 0 9 0JG170JG2bn6c4r BDFChar: 1889 1954 6 0 5 9 9 qu?]s BDFChar: 1890 1955 6 0 5 6 6 qu?]s BDFChar: 1891 1956 6 0 5 1 1 qu?]s BDFChar: 1892 1957 6 0 5 -2 -2 qu?]s BDFChar: 1893 1958 6 0 5 -1 9 nC[6_n,PRi3#m/C BDFChar: 1894 1959 6 0 5 -1 9 f\#uOfDth'0JG0\ BDFChar: 1895 1960 6 0 5 -1 9 ^qdb$p],\LG[OnZ BDFChar: 1896 1961 6 0 5 -1 9 f\"hq+9;J:N.M BDFChar: 1910 1975 6 2 5 -2 4 nF1sYJ:N.M BDFChar: 1911 1976 6 2 5 -2 4 nA)iT^qd_c BDFChar: 1912 1977 6 2 5 -2 4 nF46/^qd_c BDFChar: 1913 1978 6 0 2 -2 4 i#j-b+_#+J:N0# BDFChar: 1926 1991 6 2 5 -2 9 J:N0#JFN&YJ:N0# BDFChar: 1927 1992 6 2 5 -2 9 ^qdb$_!ll)J:N0# BDFChar: 1928 1993 6 2 5 -2 9 J:N0#JFL@i^qdb$ BDFChar: 1929 1994 6 2 5 -2 9 ^qdb$_!o.T^qdb$ BDFChar: 1930 1995 6 2 5 -2 9 ^qdb$_!piDJ:N0# BDFChar: 1931 1996 6 2 5 -2 9 J:N0#JFN'D^qdb$ BDFChar: 1932 1997 6 2 5 -2 9 ^qdb$_!pj/^qdb$ BDFChar: 1933 1998 6 0 2 -2 9 + BDFChar: 1950 2015 6 0 5 3 9 +% BDFChar: 1952 2017 6 0 5 3 9 +E+U0JG17 BDFChar: 1968 2033 6 0 5 -2 9 0JG170`:hk+S BDFChar: 1984 2049 6 0 2 3 9 +Rp*#oq< BDFChar: 2046 2111 6 0 5 -2 9 r;?Kjr;>L2i8EPO BDFChar: 2047 2112 6 0 5 -2 9 r;?Kjr;7NS*#oq< BDFChar: 2048 2113 6 3 5 4 9 i8EPOi8=S8 BDFChar: 2049 2114 6 0 5 -2 9 *#oq<*$!npi8EPO BDFChar: 2050 2115 6 0 5 -2 9 *#oq<*$"nSr;?Kj BDFChar: 2051 2116 6 0 4 1 6 q"XXZq"Ogh BDFChar: 2052 2117 6 0 4 1 6 pt46Of_>FH BDFChar: 2053 2118 6 0 4 1 6 E7igqfPgfj BDFChar: 2054 2119 6 0 4 1 6 pt5B:f_>FH BDFChar: 2055 2120 6 1 3 3 5 i8EMn BDFChar: 2056 2121 6 1 3 3 5 i1T!. BDFChar: 2057 2122 6 0 4 0 2 q"XUa BDFChar: 2058 2123 6 0 4 0 2 pt5?A BDFChar: 2059 2124 6 0 4 0 7 q"XXZq"XXZ BDFChar: 2060 2125 6 0 4 0 7 pt46Of\"jO BDFChar: 2061 2126 6 0 4 2 5 G^/`I BDFChar: 2062 2127 6 0 4 2 5 GZ`>^ BDFChar: 2063 2128 6 0 5 1 6 0JI`rr;6Np BDFChar: 2064 2129 6 0 5 1 6 0JI`rbkqG@ BDFChar: 2065 2130 6 0 5 3 5 0R3Kq BDFChar: 2066 2131 6 0 5 3 5 0PL@a BDFChar: 2067 2132 6 0 5 1 6 _!q:"nA##( BDFChar: 2068 2133 6 0 5 1 6 _!p.7nA##( BDFChar: 2069 2134 6 1 3 1 6 JAC+$^jlCb BDFChar: 2070 2135 6 1 3 1 6 JA@i9^jlCb BDFChar: 2071 2136 6 0 5 1 6 _!l`!nA##( BDFChar: 2072 2137 6 0 5 1 6 _!kT6nA##( BDFChar: 2073 2138 6 0 5 1 6 r;:ea0JEJ, BDFChar: 2074 2139 6 0 5 1 6 r60D10JEJ, BDFChar: 2075 2140 6 0 5 3 5 r-0mq BDFChar: 2076 2141 6 0 5 3 5 r+Iba BDFChar: 2077 2142 6 0 5 1 6 $p==[4:D2i BDFChar: 2078 2143 6 0 5 1 6 $pp](9o BDFChar: 2131 2196 6 0 4 2 6 pkX`^p](9o BDFChar: 2132 2197 6 0 4 2 6 q"XXZp](9o BDFChar: 2133 2198 6 1 4 2 5 n;rb$ BDFChar: 2134 2199 6 1 4 2 5 nF5r: BDFChar: 2135 2200 6 0 4 2 6 #T+s\p](9o BDFChar: 2136 2201 6 0 4 2 6 E;8)\Du]k< BDFChar: 2137 2202 6 0 5 1 7 Gg+CUGdPZp BDFChar: 2138 2203 6 0 5 1 7 bd;W=bfk;3 BDFChar: 2139 2204 6 0 5 1 7 r.K`VKS97' BDFChar: 2140 2205 6 0 5 1 7 r.L$aoVDBb BDFChar: 2141 2206 6 0 5 1 7 r.N;$b_5lo BDFChar: 2142 2207 6 0 5 0 7 G_F:o[*42J BDFChar: 2143 2208 6 0 5 0 7 G_F:obd<%J BDFChar: 2144 2209 6 0 5 0 7 Gl4rH[*8Gm BDFChar: 2145 2210 6 0 4 1 7 +K083E2XlZ BDFChar: 2146 2211 6 0 4 1 7 i(tgM-rAh% BDFChar: 2147 2212 6 0 4 1 7 3)H9@TMRTJ BDFChar: 2148 2213 6 0 4 0 9 Lkp#+Lkp!mp`KP: BDFChar: 2149 2214 6 0 4 0 7 E/9=+E$4ou BDFChar: 2150 2215 6 0 4 2 9 +S['uLkpk+ BDFChar: 2151 2216 6 0 5 0 7 4:DpCLkpk+ BDFChar: 2152 2217 6 0 4 0 9 #REu"-qO+=#RCD1 BDFChar: 2153 2218 6 0 4 0 7 5i=nH84Z9J BDFChar: 2154 2219 6 0 4 1 8 fPkeKp`NBU BDFChar: 2155 2220 6 0 4 0 8 +K26;E$-9B+92BA BDFChar: 2156 2221 6 0 4 0 7 n;)mVn:6&a BDFChar: 2157 2222 6 0 4 0 7 :oL=k+'kcg_Q&-)\1 BDFChar: 2163 2228 6 0 4 1 7 E/9u BDFChar: 2185 2250 6 1 3 0 8 +>2d+R1<0 BDFChar: 2188 2253 6 0 5 0 9 4=!$7,U=XOr($ef BDFChar: 2189 2254 6 0 3 0 7 J:N0Cd#ap9 BDFChar: 2190 2255 6 0 3 0 7 J:OlNYgGQ7^D BDFChar: 2206 2271 6 0 5 0 8 G_D<_PcU+&GQ7^D BDFChar: 2207 2272 6 0 5 0 8 G_DmB[$7A>GQ7^D BDFChar: 2208 2273 6 0 5 0 8 G_F;jeC;]qGQ7^D BDFChar: 2209 2274 6 0 5 0 8 Gl6pPm-O*:GQ7^D BDFChar: 2210 2275 6 0 5 0 8 Gl5dmm+d9lGQ7^D BDFChar: 2211 2276 6 0 5 0 8 Gl5dmm'P"7GQ7^D BDFChar: 2212 2277 6 0 5 0 8 Gl6pPXG#sUlGQ7^D BDFChar: 2217 2282 6 0 5 0 8 Gl5dm`:V:OGQ7^D BDFChar: 2218 2283 6 0 5 0 8 Gl4qMXK8f,GQ7^D BDFChar: 2219 2284 6 0 4 2 6 +Ro0q+92BA BDFChar: 2220 2285 6 0 4 0 9 (jO,H(r5X.nA##( BDFChar: 2221 2286 6 0 4 2 6 -toPm-ia5I BDFChar: 2222 2287 6 0 4 2 6 TWkB!TE"rl BDFChar: 2223 2288 6 0 4 2 6 LtLqDL]@DT BDFChar: 2224 2289 6 0 4 2 6 LtK5iL]@DT BDFChar: 2225 2290 6 0 4 2 6 LtMLTL]@DT BDFChar: 2226 2291 6 0 4 2 6 LsY),L]@DT BDFChar: 2227 2292 6 0 4 2 6 LfcW=L]@DT BDFChar: 2228 2293 6 0 4 2 6 peW)0p](9o BDFChar: 2229 2294 6 0 4 2 6 pi%?pp](9o BDFChar: 2230 2295 6 0 4 2 6 E/:HKDu]k< BDFChar: 2231 2296 6 0 4 2 6 E2`Q1Du]k< BDFChar: 2232 2297 6 0 4 2 6 E7h,ADu]k< BDFChar: 2233 2298 6 0 4 2 6 Lkr!cDu]k< BDFChar: 2234 2299 6 0 4 2 6 W;*n,NFg BDFChar: 2242 2307 6 0 5 2 6 8Gp^08,rVi BDFChar: 2243 2308 6 0 4 2 6 +F*[++92BA BDFChar: 2244 2309 6 0 4 2 6 +E7*pDu]k< BDFChar: 2245 2310 6 0 4 2 6 E,bSk+92BA BDFChar: 2246 2311 6 0 4 2 6 GW9s3^]4?7 BDFChar: 2247 2312 6 0 4 2 6 nDNfG(]XO9 BDFChar: 2248 2313 6 0 4 2 6 _!$#&GQ7^D BDFChar: 2249 2314 6 0 4 2 6 (qB(nn,NFg BDFChar: 2250 2315 6 0 5 2 6 8GrD`8,rVi BDFChar: 2251 2316 6 0 4 1 8 +E7*pE;4Ap BDFChar: 2252 2317 6 0 4 2 6 q"XW?p](9o BDFChar: 2253 2318 6 0 4 2 6 pk\_?p](9o BDFChar: 2254 2319 6 0 4 2 6 q"V@dp](9o BDFChar: 2255 2320 6 0 4 2 6 pk[#Tp](9o BDFChar: 2256 2321 6 0 4 2 6 +E6O`+92BA BDFChar: 2257 2322 6 0 4 2 6 +E4i0+92BA BDFChar: 2258 2323 6 0 4 2 6 +E7*P+92BA BDFChar: 2259 2324 6 0 4 2 6 +AhiP+92BA BDFChar: 2260 2325 6 0 5 2 5 Gl7Ja BDFChar: 2261 2326 6 0 5 2 5 Gg+BV BDFChar: 2262 2327 6 1 4 1 6 @.<[Tn6c4r BDFChar: 2263 2328 6 1 4 1 6 @.98>n6c4r BDFChar: 2264 2329 6 0 4 0 5 pqZC7^q]pM BDFChar: 2265 2330 6 0 4 0 5 Gee88)"7M* BDFChar: 2266 2331 6 0 0 0 0 z BDFChar: 2267 2332 6 0 0 0 0 z BDFChar: 2268 2333 6 0 0 0 0 z BDFChar: 2269 2334 6 0 0 0 0 z BDFChar: 2270 2335 6 0 0 0 0 z BDFChar: 2271 2336 6 0 0 0 0 z BDFChar: 2272 2337 6 0 0 0 0 z BDFChar: 2273 2338 6 0 0 0 0 z BDFChar: 2274 2339 6 0 0 0 0 z BDFChar: 2275 2340 6 0 0 0 0 z BDFChar: 2276 2341 6 0 0 0 0 z BDFChar: 2277 2342 6 0 0 0 0 z BDFChar: 2278 2343 6 0 0 0 0 z BDFChar: 2279 2344 6 0 0 0 0 z BDFChar: 2280 2345 6 0 0 0 0 z BDFChar: 2281 2346 6 0 0 0 0 z BDFChar: 2282 2347 6 0 0 0 0 z BDFChar: 2283 2348 6 0 0 0 0 z BDFChar: 2284 2349 6 0 0 0 0 z BDFChar: 2285 2350 6 0 0 0 0 z BDFChar: 2286 2351 6 0 0 0 0 z BDFChar: 2287 2352 6 0 0 0 0 z BDFChar: 2288 2353 6 0 0 0 0 z BDFChar: 2289 2354 6 0 0 0 0 z BDFChar: 2290 2355 6 0 0 0 0 z BDFChar: 2291 2356 6 0 0 0 0 z BDFChar: 2292 2357 6 0 0 0 0 z BDFChar: 2293 2358 6 0 0 0 0 z BDFChar: 2294 2359 6 0 0 0 0 z BDFChar: 2295 2360 6 0 0 0 0 z BDFChar: 2296 2361 6 0 0 0 0 z BDFChar: 2297 2362 6 0 0 0 0 z BDFChar: 2298 2363 6 0 0 0 0 z BDFChar: 2299 2364 6 0 0 0 0 z BDFChar: 2300 2365 6 0 0 0 0 z BDFChar: 2301 2366 6 0 0 0 0 z BDFChar: 2302 2367 6 0 0 0 0 z BDFChar: 2303 2368 6 0 0 0 0 z BDFChar: 2304 2369 6 0 0 0 0 z BDFChar: 2305 2370 6 0 0 0 0 z BDFChar: 2306 2371 6 0 0 0 0 z BDFChar: 2307 2372 6 0 0 0 0 z BDFChar: 2308 2373 6 0 0 0 0 z BDFChar: 2309 2374 6 0 0 0 0 z BDFChar: 2310 2375 6 0 0 0 0 z BDFChar: 2311 2376 6 0 0 0 0 z BDFChar: 2312 2377 6 0 0 0 0 z BDFChar: 2313 2378 6 0 0 0 0 z BDFChar: 2314 2379 6 0 0 0 0 z BDFChar: 2315 2380 6 0 0 0 0 z BDFChar: 2316 2381 6 0 0 0 0 z BDFChar: 2317 2382 6 0 0 0 0 z BDFChar: 2318 2383 6 0 0 0 0 z BDFChar: 2319 2384 6 0 0 0 0 z BDFChar: 2320 2385 6 0 0 0 0 z BDFChar: 2321 2386 6 0 0 0 0 z BDFChar: 2322 2387 6 0 0 0 0 z BDFChar: 2323 2388 6 0 0 0 0 z BDFChar: 2324 2389 6 0 0 0 0 z BDFChar: 2325 2390 6 0 0 0 0 z BDFChar: 2326 2391 6 0 0 0 0 z BDFChar: 2327 2392 6 0 0 0 0 z BDFChar: 2328 2393 6 0 0 0 0 z BDFChar: 2329 2394 6 0 0 0 0 z BDFChar: 2330 2395 6 0 0 0 0 z BDFChar: 2331 2396 6 0 0 0 0 z BDFChar: 2332 2397 6 0 0 0 0 z BDFChar: 2333 2398 6 0 0 0 0 z BDFChar: 2334 2399 6 0 0 0 0 z BDFChar: 2335 2400 6 0 0 0 0 z BDFChar: 2336 2401 6 0 0 0 0 z BDFChar: 2337 2402 6 0 0 0 0 z BDFChar: 2338 2403 6 0 0 0 0 z BDFChar: 2339 2404 6 0 0 0 0 z BDFChar: 2340 2405 6 0 0 0 0 z BDFChar: 2341 2406 6 0 0 0 0 z BDFChar: 2342 2407 6 0 0 0 0 z BDFChar: 2343 2408 6 0 0 0 0 z BDFChar: 2344 2409 6 0 0 0 0 z BDFChar: 2345 2410 6 0 0 0 0 z BDFChar: 2346 2411 6 0 0 0 0 z BDFChar: 2347 2412 6 0 0 0 0 z BDFChar: 2348 2413 6 0 0 0 0 z BDFChar: 2349 2414 6 0 0 0 0 z BDFChar: 2350 2415 6 0 0 0 0 z BDFChar: 2351 2416 6 0 0 0 0 z BDFChar: 2352 2417 6 0 0 0 0 z BDFChar: 2353 2418 6 0 0 0 0 z BDFChar: 2354 2419 6 0 0 0 0 z BDFChar: 2355 2420 6 0 0 0 0 z BDFChar: 2356 2421 6 0 0 0 0 z BDFChar: 2357 2422 6 0 0 0 0 z BDFChar: 2358 2423 6 0 0 0 0 z BDFChar: 2359 2424 6 0 0 0 0 z BDFChar: 2360 2425 6 0 0 0 0 z BDFChar: 2361 2426 6 0 0 0 0 z BDFChar: 2362 2427 6 0 0 0 0 z BDFChar: 2363 2428 6 0 0 0 0 z BDFChar: 2364 2429 6 0 0 0 0 z BDFChar: 2365 2430 6 0 0 0 0 z BDFChar: 2366 2431 6 0 0 0 0 z BDFChar: 2367 2432 6 0 0 0 0 z BDFChar: 2368 2433 6 0 0 0 0 z BDFChar: 2369 2434 6 0 0 0 0 z BDFChar: 2370 2435 6 0 0 0 0 z BDFChar: 2371 2436 6 0 0 0 0 z BDFChar: 2372 2437 6 0 0 0 0 z BDFChar: 2373 2438 6 0 0 0 0 z BDFChar: 2374 2439 6 0 0 0 0 z BDFChar: 2375 2440 6 0 0 0 0 z BDFChar: 2376 2441 6 0 0 0 0 z BDFChar: 2377 2442 6 0 0 0 0 z BDFChar: 2378 2443 6 0 0 0 0 z BDFChar: 2379 2444 6 0 0 0 0 z BDFChar: 2380 2445 6 0 0 0 0 z BDFChar: 2381 2446 6 0 0 0 0 z BDFChar: 2382 2447 6 0 0 0 0 z BDFChar: 2383 2448 6 0 0 0 0 z BDFChar: 2384 2449 6 0 0 0 0 z BDFChar: 2385 2450 6 0 0 0 0 z BDFChar: 2386 2451 6 0 0 0 0 z BDFChar: 2387 2452 6 0 0 0 0 z BDFChar: 2388 2453 6 0 0 0 0 z BDFChar: 2389 2454 6 0 0 0 0 z BDFChar: 2390 2455 6 0 0 0 0 z BDFChar: 2391 2456 6 0 0 0 0 z BDFChar: 2392 2457 6 0 0 0 0 z BDFChar: 2393 2458 6 0 0 0 0 z BDFChar: 2394 2459 6 0 0 0 0 z BDFChar: 2395 2460 6 0 4 0 7 pkX`^Lkpl^ EndBitmapFont BitmapFont: 13 2804 11 2 1 xos4 BDFStartProperties: 38 FONT 1 "-xos4-Gambas-Bold-R-Normal--13-120-75-75-P-70-ISO10646-1" SIZE 1 "12 75 75" FONTBOUNDINGBOX 1 "7 14 0 -2" COMMENT 0 "Generated by fontforge, http://fontforge.sourceforge.net" COMMENT 0 "Copyright (C) 2013 Benoit Minisini" FOUNDRY 16 "xos4" FAMILY_NAME 16 "Gambas" WEIGHT_NAME 16 "Bold" SLANT 16 "R" SETWIDTH_NAME 16 "Normal" ADD_STYLE_NAME 16 "" PIXEL_SIZE 18 13 POINT_SIZE 18 120 RESOLUTION_X 19 75 RESOLUTION_Y 19 75 SPACING 16 "P" AVERAGE_WIDTH 18 70 CHARSET_REGISTRY 16 "ISO10646" CHARSET_ENCODING 16 "1" FONTNAME_REGISTRY 16 "" CHARSET_COLLECTIONS 16 "ASCII ISOLatin1Encoding ISO8859-2 ISO8859-5 ISO8859-7 ISO8859-9 ISO8859-6 ISO8859-4 ISO10646-1" FONT_NAME 16 "Gambas" FACE_NAME 16 "Gambas Bold" FONT_VERSION 16 "001.000" FONT_ASCENT 18 11 FONT_DESCENT 18 2 UNDERLINE_POSITION 18 -1 UNDERLINE_THICKNESS 18 1 X_HEIGHT 18 6 CAP_HEIGHT 18 8 RAW_ASCENT 18 846 RAW_DESCENT 18 154 NORM_SPACE 18 7 RELATIVE_WEIGHT 19 50 RELATIVE_SETWIDTH 19 50 FIGURE_WIDTH 18 7 AVG_LOWERCASE_WIDTH 18 70 AVG_UPPERCASE_WIDTH 18 70 BDFEndProperties BDFChar: 0 0 7 0 4 0 8 fSBN`L]@F2fDkmO BDFChar: 1 32 7 6 6 -2 -2 z BDFChar: 2 33 7 2 3 0 8 ^qdb$^q]rc^]4?7 BDFChar: 3 34 7 1 5 7 9 f\"gV BDFChar: 4 35 7 1 5 1 8 ;#'f^;#'f^ BDFChar: 5 36 7 0 5 -1 9 0JImi^j$7rpb4B% BDFChar: 6 37 7 0 5 -1 9 @*mD>(bf@MZnrU" BDFChar: 7 38 7 0 5 0 8 E7if^E;\A@HiO-H BDFChar: 8 39 7 2 3 7 10 ^qdb$ BDFChar: 9 40 7 1 4 -1 9 0OV]3^qdb$^gJhr BDFChar: 10 41 7 1 4 -1 9 ^gJiM0JG170OVZr BDFChar: 11 42 7 1 5 2 6 fPpV)fDkmO BDFChar: 12 43 7 0 5 2 6 0JNDY0E;(Q BDFChar: 13 44 7 1 3 -2 1 ?smBX BDFChar: 14 45 7 0 5 4 4 qu?]s BDFChar: 15 46 7 2 3 0 1 ^q]pM BDFChar: 16 47 7 0 5 0 9 $k*si0JHmB^q]pM BDFChar: 17 48 7 0 5 0 8 Gg+Cer9VYOGQ7^D BDFChar: 18 49 7 0 5 0 8 0Q?M80JG17qu?]s BDFChar: 19 50 7 0 5 0 8 Gg$R)(bf@5qu?]s BDFChar: 20 51 7 0 5 0 8 Gg$R)GRP#)GQ7^D BDFChar: 21 52 7 0 5 0 8 #T,OGf_cR'(]XO9 BDFChar: 22 53 7 0 5 0 8 r4p,C$k*QgGQ7^D BDFChar: 23 54 7 0 5 0 8 3+0P;prpt+GQ7^D BDFChar: 24 55 7 0 5 0 8 r!WuN(bdXO?iU0, BDFChar: 25 56 7 0 5 0 8 Gg+CUGg+CUGQ7^D BDFChar: 26 57 7 0 5 0 8 Gg+CUHjgE#Du]k< BDFChar: 27 58 7 2 3 0 5 ^q]pM^q]pM BDFChar: 28 59 7 1 3 -2 5 ?sis7?smBX BDFChar: 29 60 7 0 5 0 8 $lC[+^gJi5$ig8- BDFChar: 30 61 7 0 5 2 5 qu?`p BDFChar: 31 62 7 0 5 0 8 ^gJi5$lC[+^]4?7 BDFChar: 32 63 7 1 5 0 8 n/)ur?sitB?iU0, BDFChar: 33 64 7 0 5 0 8 3,IC:m-NA42uipY BDFChar: 34 65 7 0 5 0 8 Gg+CUr63C/bQ%VC BDFChar: 35 66 7 0 5 0 8 prpt+prpt+p](9o BDFChar: 36 67 7 0 5 0 8 I)*P5^qdb$HiO-H BDFChar: 37 68 7 0 5 0 8 nCYt/bfn;`n,NFg BDFChar: 38 69 7 0 5 0 8 r4p+`pqX\\qu?]s BDFChar: 39 70 7 0 5 0 8 r4p+`nA)iT^]4?7 BDFChar: 40 71 7 0 5 0 8 I)*P5gs"!dGQ7^D BDFChar: 41 72 7 0 5 0 8 bfn;Tr63C/bQ%VC BDFChar: 42 73 7 0 5 0 8 r%KfY0JG17qu?]s BDFChar: 43 74 7 1 5 0 8 GVCg*0JG17huE`W BDFChar: 44 75 7 0 5 0 8 bh2FC^u4_7bQ%VC BDFChar: 45 76 7 0 5 0 8 ^qdb$^qdb$qu?]s BDFChar: 46 77 7 0 5 0 8 `5M$/eC;FT_uKc; BDFChar: 47 78 7 0 5 0 8 N6LYdr;>?o_uKc; BDFChar: 48 79 7 0 5 0 8 Gg+CUbfn;TGQ7^D BDFChar: 49 80 7 0 5 0 8 prpt+pqX\\^]4?7 BDFChar: 50 81 7 0 5 0 8 Gg+CUbfnShC]FG8 BDFChar: 51 82 7 0 5 0 8 prpt+pu(YobQ%VC BDFChar: 52 83 7 0 5 0 8 I)*P5GROuhp](9o BDFChar: 53 84 7 0 5 0 8 r%KfY0JG170E;(Q BDFChar: 54 85 7 0 5 0 8 bfn;Tbfn;TGQ7^D BDFChar: 55 86 7 0 5 0 8 bfn:UG^(nr0E;(Q BDFChar: 56 87 7 0 5 0 8 `5KUDeElP?_uKc; BDFChar: 57 88 7 0 5 0 8 bfn:U0R1gcbQ%VC BDFChar: 58 89 7 0 5 0 8 bfk BDFChar: 61 92 7 0 5 0 9 ^qa>c0JF=\$k*+9 BDFChar: 62 93 7 1 4 -1 9 n1ZOM0JG170JMtr BDFChar: 63 94 7 0 5 7 9 0R1eA BDFChar: 64 95 7 0 5 0 0 qu?]s BDFChar: 65 96 7 2 4 7 10 ^qd`n BDFChar: 66 97 7 0 5 0 6 GRP".bfkG7 BDFChar: 67 98 7 0 5 0 8 ^qf`hbfn;Tp](9o BDFChar: 68 99 7 0 5 0 6 I)*P5^qb3 BDFChar: 100 165 7 0 5 0 8 bfkPg21]RLU BDFChar: 118 183 7 2 4 4 5 i8=S8 BDFChar: 119 184 7 0 3 -2 0 0JMDb BDFChar: 120 185 7 1 3 6 10 @,PF#?iU0, BDFChar: 121 186 7 0 5 4 10 Gg+CUGQ@XA BDFChar: 122 187 7 0 6 2 6 fPEH^fDkmO BDFChar: 123 188 7 0 5 -2 10 0Q8^"0ED"N(cYWB(]XO9 BDFChar: 124 189 7 0 5 -2 10 0Q8^"0ED"NE#:9:GQ7^D BDFChar: 125 190 7 0 5 -2 10 E#:8GDufe9(cYWB(]XO9 BDFChar: 126 191 7 1 5 0 8 0JEJ\0OV]3GQ7^D BDFChar: 127 192 7 0 5 0 10 ?nciLbfp"/bfn92 BDFChar: 128 193 7 0 5 0 10 (bg3Ybfp"/bfn92 BDFChar: 129 194 7 0 5 0 10 0N\="bfp"/bfn92 BDFChar: 130 195 7 0 5 0 10 A@.^(Gg-*0bfn92 BDFChar: 131 196 7 0 5 0 10 C]J_(bfp"/bfn92 BDFChar: 132 197 7 0 5 0 10 0N^"/Gg-*0bfn92 BDFChar: 133 198 7 0 6 0 8 Ib<<*rn,lUh>dNU BDFChar: 134 199 7 0 5 -2 8 I)*P5^qdb$HnaIY BDFChar: 135 200 7 0 5 0 10 ?nhMo^qf`\^qfjJ BDFChar: 136 201 7 0 5 0 10 (bkm'^qf`\^qfjJ BDFChar: 137 202 7 0 5 0 10 0N\>Q^qf`\^qfjJ BDFChar: 138 203 7 0 5 0 10 C]OCK^qf`\^qfjJ BDFChar: 139 204 7 0 5 0 10 ?nhL40JG170JND) BDFChar: 140 205 7 0 5 0 10 (bkkA0JG170JND) BDFChar: 141 206 7 0 5 0 10 0N\>Q0JG170JND) BDFChar: 142 207 7 0 5 0 10 C]OAe0JG170JND) BDFChar: 143 208 7 0 6 0 8 G\gu(p1@oQGQ7^D BDFChar: 144 209 7 0 5 0 10 A@.^(bj=]ogt^*R BDFChar: 145 210 7 0 5 0 10 ?nciLbfn;Tbfk;3 BDFChar: 146 211 7 0 5 0 10 (bg3Ybfn;Tbfk;3 BDFChar: 147 212 7 0 5 0 10 0N\="bfn;Tbfk;3 BDFChar: 148 213 7 0 5 0 10 A@.^(Gg+CUbfk;3 BDFChar: 149 214 7 0 5 0 10 C]J_(bfn;Tbfk;3 BDFChar: 150 215 7 0 5 2 6 b]kgdbQ%VC BDFChar: 151 216 7 0 5 -1 9 "F//Gh#-O*b]nX< BDFChar: 152 217 7 0 5 0 10 ?nfgKbfn;Tbfk;3 BDFChar: 153 218 7 0 5 0 10 (bj1Xbfn;Tbfk;3 BDFChar: 154 219 7 0 5 0 10 0N\>!bfn;Tbfk;3 BDFChar: 155 220 7 0 5 0 10 C]M]'bfn;Tbfk;3 BDFChar: 156 221 7 0 5 0 10 (bj1XG^(nr0JG0\ BDFChar: 157 222 7 0 5 0 8 ^qf`hbfojt^]4?7 BDFChar: 158 223 7 0 5 0 8 E7ih!bfn;Tb^9Bj BDFChar: 187 252 7 0 5 0 8 C]M]'bfn;THiO-H BDFChar: 188 253 7 0 5 -2 9 (bbs6bfn;Tb^9hD BDFChar: 189 254 7 0 5 -2 8 ^qf`hbfn;TpqXZF BDFChar: 190 255 7 0 5 -2 8 C]M]'bfn;THjk6" BDFChar: 191 256 7 0 5 0 10 GQ0`&^qdb$^jH+^ BDFChar: 205 270 7 0 5 0 10 =>0aEfZ_R`bh2Cb BDFChar: 206 271 7 0 5 0 10 =>1-lI*BgYbfkG7 BDFChar: 207 272 7 0 6 0 8 G\gu(p1@oQGQ7^D BDFChar: 208 273 7 0 6 0 8 $m#h)bfn;THiO-H BDFChar: 209 274 7 0 5 0 10 GQ@ZW^qf`\^qfjJ BDFChar: 210 275 7 0 5 0 8 GQ0aQ^qf`\^qfjJ BDFChar: 218 283 7 0 5 0 9 =>0`"bfp"#^jH+^ BDFChar: 219 284 7 0 5 0 10 0N\=&^qeaLbfk;3 BDFChar: 220 285 7 0 5 -2 9 0N\=&bfn;Tb^9hD BDFChar: 221 286 7 0 5 0 10 b]j,8^qeaLbfk;3 BDFChar: 222 287 7 0 5 -2 9 b]j,8bfn;Tb^9hD BDFChar: 223 288 7 0 5 0 10 0E?L9^qeaLbfk;3 BDFChar: 224 289 7 0 5 -2 8 0E?LEbfn;THjk6" BDFChar: 225 290 7 0 5 -2 8 I)*P5gs"!dGVJ%U BDFChar: 226 291 7 0 5 -2 8 *&)cabfn;THjk6" BDFChar: 227 292 7 0 5 0 10 0N\>!bfp"/bfn92 BDFChar: 228 293 7 0 5 0 10 0N\=j_"c-tbfn92 BDFChar: 229 294 7 0 6 0 8 bl5i1r63C/bQ%VC BDFChar: 230 295 7 0 5 0 8 @/+,SCi!p(C]FG8 BDFChar: 231 296 7 0 5 0 10 A@.^(r%KfY0JND) BDFChar: 232 297 7 0 5 0 10 A@.^(E%it"0JI_O BDFChar: 233 298 7 0 5 0 10 GQ@Xq0JG170JND) BDFChar: 234 299 7 1 4 0 8 n,VBS?smAMn,NFg BDFChar: 235 300 7 0 5 0 10 b]j-c0JG170JND) BDFChar: 236 301 7 0 5 0 9 b]j,,0JG170R*Qt BDFChar: 237 302 7 0 5 -2 8 r%KfY0JG17r"'8: BDFChar: 238 303 7 1 5 -2 9 ?sium?smAM@.59U BDFChar: 239 304 7 0 5 0 10 0ED#)0JG170JND) BDFChar: 240 305 7 1 4 0 6 i*]r#?srI( BDFChar: 241 306 7 0 6 0 8 p1@oKAnGXequ?]s BDFChar: 242 307 7 0 6 -2 9 AnD&2AnGXeB(cEK BDFChar: 243 308 7 0 5 0 10 (b>YL(`4),(`;`B BDFChar: 244 309 7 0 4 -2 9 0N\7P+^qdb$^qfjJ BDFChar: 253 318 7 1 4 0 10 Y[@Ih?smAM?skYg BDFChar: 254 319 7 0 5 0 8 ^qdb7tCm-OZ*gs!tB BDFChar: 263 328 7 0 5 0 9 =>0aMbfn;Tbfg%e BDFChar: 264 329 7 0 5 0 10 ?spbMprpt+bfn92 BDFChar: 265 330 7 0 5 -2 8 bfoG?r7p)ObR>(]XO9 BDFChar: 267 332 7 0 5 0 10 GQhuE`W BDFChar: 279 344 7 0 5 0 10 =>0aMbfok?nCYqb BDFChar: 280 345 7 0 5 0 9 =>0`&^qdb$^q]pM BDFChar: 281 346 7 0 5 0 10 (bg?Q^qb1'%#fE2 BDFChar: 282 347 7 0 5 0 9 (bbr;^qb1'%/9f& BDFChar: 283 348 7 0 5 0 10 0N\=&^qb1'$k2n2 BDFChar: 284 349 7 0 5 0 9 0N\=&^qb1'%/9f& BDFChar: 285 350 7 0 5 -2 8 I)*P5GROuhpb:V+ BDFChar: 286 351 7 0 5 -2 6 I)*OB$k2nbhuE`W BDFChar: 287 352 7 0 5 0 10 =>0`&^qb1'$k2n2 BDFChar: 288 353 7 0 5 0 9 =>0`&^q_o<%/9f& BDFChar: 289 354 7 0 5 -2 8 r%KfY0JG170JMDb BDFChar: 290 355 7 1 5 -2 8 ^qf`\^qdb$GVJ%U BDFChar: 291 356 7 0 5 0 10 =>0aQ0JG170JG0\ BDFChar: 292 357 7 1 5 0 10 Y[@IH_"b^\^qb0p BDFChar: 293 358 7 0 5 0 8 r%KgL0JG170E;(Q BDFChar: 294 359 7 0 5 0 8 ?sn@in6fX349,?] BDFChar: 295 360 7 0 5 0 10 A@.^(bfn;Tbfk;3 BDFChar: 296 361 7 0 5 0 10 A@.^(bfn;TbfkG7 BDFChar: 297 362 7 0 5 0 10 GQ>t3bfn;Tbfk;3 BDFChar: 298 363 7 0 5 0 8 GQ>t3bfn;THiO-H BDFChar: 299 364 7 0 5 0 10 b]j-3bfn;Tbfk;3 BDFChar: 300 365 7 0 5 0 9 b]j-3bfn;Tb^9Bj BDFChar: 301 366 7 0 5 0 10 0N^$Qbfn;Tbfk;3 BDFChar: 302 367 7 0 5 0 10 0N^"/bfn;TbfkG7 BDFChar: 303 368 7 0 5 0 10 CtJa3bfn;Tbfk;3 BDFChar: 304 369 7 0 5 0 9 CtJa3bfn;Tb^9Bj BDFChar: 305 370 7 0 5 -2 8 bfn;Tbfn;TGRt8` BDFChar: 306 371 7 0 6 -2 6 bfn;TbfkG?"onW' BDFChar: 307 372 7 0 5 0 10 0N\=n`73<'m)6gB BDFChar: 308 373 7 0 5 0 9 0N\=n`5L0Tm)/l( BDFChar: 309 374 7 0 5 0 10 0N\>!b]n@d0JG0\ BDFChar: 310 375 7 0 5 -2 9 0N\>!bfn;Tb^9hD BDFChar: 311 376 7 0 5 0 10 C]M]'G^(nr0JG0\ BDFChar: 312 377 7 0 5 0 10 (bkjr(`4r7@)2[? BDFChar: 313 378 7 0 5 0 9 (bbsf$lC[+_#+04 BDFChar: 314 379 7 0 5 0 10 0ED"Z(`4r7@)2[? BDFChar: 315 380 7 0 5 0 8 0ED"Z(bf@5qu?]s BDFChar: 316 381 7 0 5 0 10 =>0aQ$lCZP@)2[? BDFChar: 317 382 7 0 5 0 9 =>0aQ$lC[+_#+04 BDFChar: 318 383 7 1 4 0 8 E599)^qdb$^]4?7 BDFChar: 319 384 7 0 6 0 8 @.7QOAnGXeHiO-H BDFChar: 320 385 7 0 6 0 8 I'tpk4>o)U49,?] BDFChar: 321 386 7 0 5 0 9 pqX]?bfn;TbkM/< BDFChar: 322 387 7 0 5 0 8 pqZ[Kbfn;Tp](9o BDFChar: 323 388 7 0 6 0 8 @,QEEAnGXeHiO-H BDFChar: 324 389 7 0 6 0 7 @,PF?AnGY& BDFChar: 325 390 7 0 5 0 8 p^@Q>$k*OQp](9o BDFChar: 326 391 7 0 6 0 10 "pfUl^qdb$^qbpm2E!HO4?*<@ BDFChar: 330 395 7 0 5 0 9 HjgF2bfn;Tb^9Bj BDFChar: 331 396 7 0 5 0 8 HjkDHbfn;THiO-H BDFChar: 332 397 7 0 5 0 8 Gg+CUGVBsCGQ7^D BDFChar: 333 398 7 0 5 0 8 r!WuBHjgDlqu?]s BDFChar: 334 399 7 0 5 0 8 p^@Q>r63C/GQ7^D BDFChar: 335 400 7 0 5 0 8 I)*P5Geh,1HiO-H BDFChar: 336 401 7 0 6 -1 8 IUHPkHsg>i@))aB BDFChar: 337 402 7 0 5 -2 8 *&''k0JG170JMDb BDFChar: 338 403 7 0 6 0 9 !dqf!^td/Xb]j*f BDFChar: 339 404 7 0 5 0 8 bfk;cGg+CUGQ7^D BDFChar: 340 405 7 0 6 0 8 ^qen%f%/F/bQ%VC BDFChar: 341 406 7 0 5 0 8 n6fX3?smAM49,?] BDFChar: 342 407 7 0 5 0 8 r%KfYGVCg*qu?]s BDFChar: 343 408 7 0 6 0 10 "piH*nDM+?nCYqb BDFChar: 344 409 7 0 6 0 9 ^rFI>f^RhgfZX$ig8- BDFChar: 350 415 7 0 5 0 8 Gg+CUr63C/GQ7^D BDFChar: 351 416 7 0 6 0 9 !d`)7bfn;Tb]j*f BDFChar: 352 417 7 0 6 0 7 !d`)7bfn:U BDFChar: 353 418 7 0 6 0 8 D#W/Bg=k97EW?(> BDFChar: 354 419 7 0 6 -2 6 D#W/Bg=gQK!WW3# BDFChar: 355 420 7 0 6 0 10 ^`\#:AnHEu?sm@B BDFChar: 356 421 7 0 6 -2 8 ^`\#:AnGXeHsg=^ BDFChar: 357 422 7 0 5 -1 8 _"c-tbkU,cfF.`[ BDFChar: 358 423 7 0 5 0 8 p^@Q>Geh,1HiO-H BDFChar: 359 424 7 0 5 0 6 p^@RU^qb0`"bfp"/bfn92 BDFChar: 397 462 7 0 5 0 9 =>0`"$k.O-b^9Bj BDFChar: 398 463 7 0 5 0 10 =>0aQ0JG170JND) BDFChar: 399 464 7 1 4 0 9 Y[@Ih?smAM?sis7 BDFChar: 400 465 7 0 5 0 10 =>0`"bfn;Tbfk;3 BDFChar: 401 466 7 0 5 0 9 =>0`"bfn;Tb]j*f BDFChar: 402 467 7 0 5 0 10 =>0a!bfn;Tbfk;3 BDFChar: 403 468 7 0 5 0 9 =>0a!bfn;Tb^9Bj BDFChar: 404 469 7 0 5 0 10 GQ;O[bfn;Tbfk;3 BDFChar: 405 470 7 0 5 0 10 GQ;O[bfn;TbfkG7 BDFChar: 406 471 7 0 5 0 10 (bbr+!6i[2bfk;3 BDFChar: 407 472 7 0 5 0 10 (bbr+!6i[2bfkG7 BDFChar: 408 473 7 0 5 0 10 =>0_k!6i[2bfk;3 BDFChar: 409 474 7 0 5 0 10 =>0_k!6i[2bfkG7 BDFChar: 410 475 7 0 5 0 10 ?n_Rs!6i[2bfk;3 BDFChar: 411 476 7 0 5 0 10 ?n_Rs!6i[2bfkG7 BDFChar: 412 477 7 0 5 0 6 p^@T/bfk;3 BDFChar: 413 478 7 0 5 0 10 GQ;O[Gg+D0bfn92 BDFChar: 414 479 7 0 5 0 10 GQ;O[GRP".bfkG7 BDFChar: 415 480 7 0 5 0 10 GQ9DtGg+D0bfn92 BDFChar: 416 481 7 0 5 0 10 GQ9DtGRP".bfkG7 BDFChar: 417 482 7 0 6 0 10 490i_f`'OUf\#$\ BDFChar: 418 483 7 0 6 0 8 490aI)LU2iIK0?J BDFChar: 419 484 7 0 6 0 8 I)*P5gs"X!GQ7^D BDFChar: 420 485 7 0 6 -2 6 I*BgkbfkGCGQ7^D BDFChar: 421 486 7 0 5 0 10 =>0`&^qeaLbfk;3 BDFChar: 422 487 7 0 5 -2 9 =>0`&bfn;Tb^9hD BDFChar: 423 488 7 0 5 0 10 =>7tOnDM+?nCYqb BDFChar: 424 489 7 0 5 0 10 =>7P+bh2FCnCYqb BDFChar: 425 490 7 0 5 -2 8 Gg+CUbfn;TGVC*; BDFChar: 426 491 7 0 5 -2 6 Gg+CUbfk;c)uos= BDFChar: 427 492 7 0 5 -2 10 GQ0aQ$lCr4$k2n2 BDFChar: 430 495 7 0 5 -2 9 =>0aQ$lC[C$k*R> BDFChar: 431 496 7 0 4 -2 9 =>0_o0JG170JG3= BDFChar: 432 497 7 0 6 0 8 maft?hV?oAmJm4e BDFChar: 433 498 7 0 6 0 8 i6^?3fmJm4e BDFChar: 434 499 7 0 6 0 8 &.j3"-3(38ac: BDFChar: 476 541 7 0 5 -2 6 GRP!?$k*P(huE`W BDFChar: 477 542 7 0 5 0 10 =>0a!bfp"/bfn92 BDFChar: 478 543 7 0 5 0 10 =>7P+prpt+bfn92 BDFChar: 479 544 7 0 5 -2 8 prpt+bfn;TbR=m[ BDFChar: 480 545 7 0 6 -2 8 &.ig-d*US%Hl*\# BDFChar: 481 546 7 0 5 0 8 bfn:Ubfn;TGQ7^D BDFChar: 482 547 7 0 5 0 6 bfk=Ubfk;3 BDFChar: 483 548 7 0 5 -2 8 r!XDZ0OS;(r!XDB BDFChar: 484 549 7 0 5 -2 6 r!XDr@)2[K(]XO9 BDFChar: 485 550 7 0 5 0 10 0E?@Abfp"/bfn92 BDFChar: 486 551 7 0 5 0 8 0E?>+I*BgYHiO-H BDFChar: 487 552 7 0 5 -2 8 r4p+`pqX\\r%R%/ BDFChar: 488 553 7 0 5 -2 6 Gg+D0^qb=OhuE`W BDFChar: 489 554 7 0 5 0 10 GQ;O[Gg+CUbfk;3 BDFChar: 490 555 7 0 5 0 9 GQ;O[Gg+CUb]j*f BDFChar: 491 556 7 0 5 0 10 GQ;jt3G^(nr0JG0\ BDFChar: 498 563 7 0 5 -2 8 GQ>t3bfn;THjk6" BDFChar: 499 564 7 0 5 -2 8 i*]r#?sn5$3&!#d BDFChar: 500 565 7 0 6 -2 8 i6]itd*US%g_^k. BDFChar: 501 566 7 0 5 -2 8 ^qfHT^qe%`GVCfO BDFChar: 502 567 7 0 3 -2 6 E%it"0JG17huE`W BDFChar: 503 568 7 0 5 0 8 0JIaY['[3IGQ7^D BDFChar: 504 569 7 0 5 -2 6 GdOib['Y'30E;(Q BDFChar: 505 570 7 0 5 -1 9 "F//Gh#-O*bfkS; BDFChar: 506 571 7 0 5 -1 9 #^j_7d*U.di-ZXI BDFChar: 507 572 7 0 5 -1 7 #^j_?d*U]u+92BA BDFChar: 508 573 7 0 6 0 8 ?smC3?smAMIK0?J BDFChar: 509 574 7 0 5 0 8 r%Kf]3&!%*YQ+Y' BDFChar: 510 575 7 0 5 -2 6 I)*OB$k2o=2uipY BDFChar: 511 576 7 0 5 -2 6 r!XDr@)0Qc2uipY BDFChar: 512 577 7 1 5 0 8 n/)ur?smAM?iU0, BDFChar: 513 578 7 1 5 0 6 n/)ur?sm@B BDFChar: 514 579 7 0 6 0 8 HtHu&HtN(aHiO-H BDFChar: 515 580 7 0 6 0 8 bfn<1bfn;TGQ7^D BDFChar: 516 581 7 0 5 0 8 0JG2*G^.HVbQ%VC BDFChar: 517 582 7 0 5 -1 9 #lMcbd.ku7i;=\t BDFChar: 518 583 7 0 5 -1 7 #^FSKr6XAL+92BA BDFChar: 519 584 7 0 5 0 8 4;\nt(`4),n,NFg BDFChar: 520 585 7 0 4 -2 9 0JEKG0JI`*0JG3= BDFChar: 521 586 7 0 6 -2 8 I*BgYbfkGC$k*=? BDFChar: 522 587 7 0 6 -2 6 I*BgYb^9g-"onW' BDFChar: 523 588 7 0 6 0 8 HtHu&r,?msAcMf2 BDFChar: 524 589 7 0 6 0 6 5%%dn?sm@B BDFChar: 525 590 7 0 5 0 8 bfk BDFChar: 530 595 7 0 5 0 10 E599)prpt+bfoh^ BDFChar: 531 596 7 0 5 0 6 p^@Q>$k2n2 BDFChar: 532 597 7 0 5 -2 6 I)*P5f^sDB0E;(Q BDFChar: 533 598 7 0 6 -2 8 $k.O-bfn;THjg2Z BDFChar: 534 599 7 0 6 0 10 "q1nKI*BgYbfkG7 BDFChar: 535 600 7 0 5 0 6 Gg+D0$k2n2 BDFChar: 536 601 7 0 5 0 6 p^@T/bfk;3 BDFChar: 537 602 7 0 6 0 6 oGT]*bfk;3 BDFChar: 538 603 7 0 5 0 6 I)*OB^qb2uipY BDFChar: 551 616 7 1 4 0 9 ?sium?srJ3?sis7 BDFChar: 552 617 7 1 5 0 6 i*]r#?skqo BDFChar: 553 618 7 0 5 0 6 r%KfY0JND) BDFChar: 554 619 7 0 5 0 8 E%itf[(%eD(]XO9 BDFChar: 555 620 7 0 5 0 8 E%itbY^A,Y(]XO9 BDFChar: 556 621 7 1 5 -2 8 i*]r#?smAM?skqo BDFChar: 557 622 7 0 6 -2 8 i*_"GCj9c.2?l8D BDFChar: 558 623 7 0 5 0 6 `5KUDeC8:7 BDFChar: 559 624 7 0 5 -2 6 `5KUDeC8:;"98E% BDFChar: 560 625 7 0 5 -2 6 psdgC`5KRs(]XO9 BDFChar: 561 626 7 0 6 -2 6 HtHu&AnGX_^]4?7 BDFChar: 562 627 7 0 6 -2 6 prpt+bfn9>"onW' BDFChar: 563 628 7 0 5 0 6 bfoGOgs!tB BDFChar: 564 629 7 0 5 0 6 Gg+D0bfk;3 BDFChar: 565 630 7 0 6 0 6 Ib<<0f[tWQ BDFChar: 566 631 7 0 5 0 6 Gf8+]eC8^C BDFChar: 567 632 7 0 5 -2 8 &.j*9eC$k2n2 BDFChar: 651 716 7 0 5 0 6 I)*PM^qb$ig8- BDFChar: 703 768 7 0 5 0 8 Gg+CUr63C/GQ7^D BDFChar: 704 769 7 1 5 0 6 i*]r#?skqo BDFChar: 705 770 7 0 5 0 6 bh2FCnCYqb BDFChar: 706 771 7 0 5 0 8 ?skZBG^.HVbQ%VC BDFChar: 707 772 7 0 5 -2 6 bfn;Tbfojt^]4?7 BDFChar: 708 773 7 0 5 0 6 bfn:UGVCfO BDFChar: 709 774 7 0 5 -2 8 I)*P5Geh,1GRQP3 BDFChar: 710 775 7 0 5 0 6 Gg+CUbfk;3 BDFChar: 711 776 7 0 5 0 6 r63C/bfn92 BDFChar: 712 777 7 0 5 -2 6 Gg+CUbfojt^]4?7 BDFChar: 713 778 7 0 5 -2 6 I)*P5^qb1'2uipY BDFChar: 714 779 7 0 6 0 6 Ia$$[bfk;3 BDFChar: 715 780 7 0 5 0 6 r%KfY0JFIH BDFChar: 716 781 7 0 5 0 6 bfn;Tbfk;3 BDFChar: 717 782 7 0 5 -2 6 (ppZW['Y'30E;(Q BDFChar: 718 783 7 0 5 0 6 bfk;cGg+A3 BDFChar: 719 784 7 0 5 -2 6 eC8HC0JMDb BDFChar: 741 806 7 0 5 0 8 ^gLu+r:nn]$ig8- BDFChar: 742 807 7 0 5 0 8 ?spdcr!WuN(]XO9 BDFChar: 743 808 7 0 5 -2 8 phXaT4D\hMC^_-\ BDFChar: 744 809 7 0 5 -2 6 i%Q!-Ctq,]$ig8- BDFChar: 745 810 7 0 5 -2 8 BZ/EMeC(bf@5^gK8) BDFChar: 752 817 7 0 5 -2 6 p^@QJ0OV\(49,?] BDFChar: 753 818 7 0 5 0 8 bfn:U0R1gcqu?]s BDFChar: 754 819 7 0 5 0 6 bfk;cGg-'c BDFChar: 755 820 7 0 5 0 8 I)*Pmbfn;TGQ7^D BDFChar: 756 821 7 1 5 0 8 Geh,af\"j/Du]k< BDFChar: 757 822 7 0 5 -2 8 0JNF30JG170JG0\ BDFChar: 758 823 7 0 5 -2 8 0JNF30JG170JG0\ BDFChar: 759 824 7 0 5 0 6 bh2FCnCYqb BDFChar: 760 825 7 0 5 -2 6 Gg+CUbfojtHiO-H BDFChar: 761 826 7 0 5 0 6 I)*P5^qb$k*OQp](9o BDFChar: 773 838 7 0 5 0 8 I)*P5f\"!THiO-H BDFChar: 774 839 7 0 5 0 8 p^@Q>ChsLgp](9o BDFChar: 775 840 7 0 5 0 10 ?nhMo^qf`\^qfjJ BDFChar: 776 841 7 0 5 0 10 C]OCK^qf`\^qfjJ BDFChar: 777 842 7 0 5 -2 8 n6fXKCi!p(C^_-\ BDFChar: 778 843 7 0 5 0 10 (bkm'^qdb$^qd_c BDFChar: 779 844 7 0 5 0 8 I)*P5pqX\\HiO-H BDFChar: 780 845 7 0 5 0 8 I)*P5GROuhp](9o BDFChar: 781 846 7 0 5 0 8 r%KfY0JG17qu?]s BDFChar: 782 847 7 0 5 0 10 C]OAe0JG170JND) BDFChar: 783 848 7 0 5 0 8 4;\nP(`4),n,NFg BDFChar: 784 849 7 0 6 0 8 G\Cc(Chd^"bQ%VC BDFChar: 785 850 7 0 6 0 8 f\"j/r7]lYg].GROuhp](9o BDFChar: 799 864 7 0 5 0 8 bfnktr9WdobQ%VC BDFChar: 800 865 7 0 5 0 10 b]j-3bhV"Om-Mpr BDFChar: 801 866 7 0 5 0 8 bh2FC^u4_7bQ%VC BDFChar: 802 867 7 0 5 0 8 Hu*V8Ci!p(bQ%VC BDFChar: 803 868 7 0 5 0 8 KZsAlr63C/bQ%VC BDFChar: 804 869 7 0 5 0 8 bfn;Tr63C/bQ%VC BDFChar: 805 870 7 0 5 0 8 Gg+CUbfn;TGQ7^D BDFChar: 806 871 7 0 5 0 8 r63C/bfn;TbQ%VC BDFChar: 807 872 7 0 5 0 8 prpt+pqX\\^]4?7 BDFChar: 808 873 7 0 5 0 8 I)*P5^qdb$HiO-H BDFChar: 809 874 7 0 5 0 8 r%KfY0JG170E;(Q BDFChar: 810 875 7 0 5 0 8 bfn;TbfkGCGQ7^D BDFChar: 811 876 7 0 5 -1 9 0R3N&['[3Ir-0mq BDFChar: 812 877 7 0 5 0 8 bfn:U0R1gcbQ%VC BDFChar: 813 878 7 0 6 -2 8 bfn;Tbfn;TrWWQ, BDFChar: 814 879 7 0 5 0 8 bfn;THjgDl$ig8- BDFChar: 815 880 7 0 5 0 8 eCHjgDlp](9o BDFChar: 821 886 7 0 6 0 8 S@5l7p9qErRh BDFChar: 885 950 7 1 5 -2 10 :`oc-(`73/(`75-Du]k< BDFChar: 886 951 7 1 5 -2 9 :`oc-(`73/(i[90 BDFChar: 887 952 7 0 5 0 8 ['[3I['Y'30E;(Q BDFChar: 888 953 7 0 5 -2 6 0XS3o['Y'30E;(Q BDFChar: 889 954 7 0 5 0 8 Gg+CUr63C/GQ7^D BDFChar: 890 955 7 0 5 0 6 Gg+D0bfk;3 BDFChar: 891 956 7 0 6 0 8 `luYOG^(nr0E;(Q BDFChar: 892 957 7 0 6 0 6 `luYOGVCfO BDFChar: 893 958 7 0 6 0 10 fPCQ-b]nAW0JG0\ BDFChar: 894 959 7 0 6 0 9 fPCQ-bfk`5L0Te9Crn BDFChar: 903 968 7 0 5 -2 8 I)*P5^qdb$HjgD` BDFChar: 904 969 7 0 5 -2 6 I)*P5^qb=+$ig8- BDFChar: 905 970 7 1 5 0 5 (iVImE52GR BDFChar: 906 971 7 0 6 -2 10 b]j-3bhV"Om-Mpt"98E% BDFChar: 907 972 7 0 6 -2 9 b]j-3gt_hom*#M6 BDFChar: 908 973 7 0 5 0 8 @.7QKCi!p(GQ7^D BDFChar: 909 974 7 0 5 0 6 @.7QKCi"=r BDFChar: 910 975 7 0 5 0 8 prpt;prL7d^]4?7 BDFChar: 911 976 7 0 5 -2 6 prpt+bhW!7^]4?7 BDFChar: 912 977 7 0 5 0 10 "9eY<^qdb$^qd_c BDFChar: 913 978 7 0 5 0 8 "9eY<^qdb$^]4?7 BDFChar: 914 979 7 0 5 0 8 Hsg>ipg@K;?iU0, BDFChar: 915 980 7 0 5 0 6 Hsg@W?sm@B BDFChar: 916 981 7 0 5 -2 8 r4p+`prpt+bR>(]XO9 BDFChar: 918 983 7 0 6 -2 8 ['[3IGdOib[K6L1 BDFChar: 919 984 7 0 6 -2 6 ['[2b['[7C!WW3# BDFChar: 920 985 7 0 5 -2 8 p^@Q>GROuhp^du: BDFChar: 921 986 7 0 5 -2 6 p^@RU$k2nB&-)\1 BDFChar: 922 987 7 0 5 -2 8 bh2FC^u4_7bQJ%K BDFChar: 923 988 7 0 5 -2 6 bh2FCnCYqf"98E% BDFChar: 924 989 7 0 6 0 8 `n&_rptXHO`W,u= BDFChar: 925 990 7 0 6 0 6 `n&r?gt'IF BDFChar: 926 991 7 0 6 0 8 B(g%cE-Q22AcMf2 BDFChar: 927 992 7 0 6 0 6 B(g%cCh@8Z BDFChar: 928 993 7 0 6 0 8 k%8FSE-Q22AcMf2 BDFChar: 929 994 7 0 6 0 6 k%8FSCh@8Z BDFChar: 930 995 7 0 6 -2 8 bfn;Tr63C/c2n%I BDFChar: 931 996 7 0 6 -2 6 bfni49,?] BDFChar: 957 1022 7 0 5 0 6 3,Ir/?sl(s BDFChar: 958 1023 7 0 5 -2 8 3,EEtHsg>i4:i&( BDFChar: 959 1024 7 0 5 -2 6 3,Ir/?sl).&-)\1 BDFChar: 960 1025 7 0 5 0 8 r%KfY0JG17qu?]s BDFChar: 961 1026 7 0 5 0 10 b]j,p['Y(b['[1? BDFChar: 962 1027 7 0 5 0 9 6oY1R['Y(b['Tf5 BDFChar: 963 1028 7 0 5 -2 8 bh2FC^u4_7bQJa_ BDFChar: 964 1029 7 0 5 -2 6 bh2FCnCYqf(]XO9 BDFChar: 965 1030 7 0 6 -2 8 Hu*V8Ci!p(bQ7nI BDFChar: 966 1031 7 0 6 -2 6 Hu*V8Ci%;s"98E% BDFChar: 967 1032 7 0 5 -2 8 bfn;Tr63C/bQJa_ BDFChar: 968 1033 7 0 5 -2 6 bfndNU BDFChar: 981 1046 7 0 6 0 6 Hlr63C/GQ7^D BDFChar: 985 1050 7 0 5 0 6 GRP#Ybfk;3 BDFChar: 986 1051 7 0 5 0 10 C]O5=$k3'Xbfk;3 BDFChar: 987 1052 7 0 5 0 8 C]O5=%/e>nGQ7^D BDFChar: 988 1053 7 0 5 0 10 C]LiL['Y(b['[1? BDFChar: 989 1054 7 0 5 0 8 C]LiL[!8sbZiC(+ BDFChar: 990 1055 7 0 5 0 10 C]O5=$k.@h$k2n2 BDFChar: 991 1056 7 0 5 0 8 C]O5=%!W0hp](9o BDFChar: 992 1057 7 0 5 0 8 r!XDrGROuhp](9o BDFChar: 993 1058 7 0 5 -2 6 r!XDrGROuhp](9o BDFChar: 994 1059 7 0 5 0 10 GQ>t3gt_hom**ZR BDFChar: 995 1060 7 0 5 0 8 GQ>t3h#-N_bQ%VC BDFChar: 996 1061 7 0 5 0 10 C]M]'gt_hom**ZR BDFChar: 997 1062 7 0 5 0 8 -ihK8h#-N_bQ%VC BDFChar: 998 1063 7 0 5 0 10 C]J_(bfn;Tbfk;3 BDFChar: 999 1064 7 0 5 0 8 C]J_(bfn;TGQ7^D BDFChar: 1000 1065 7 0 5 0 8 Gg+CUr63C/GQ7^D BDFChar: 1001 1066 7 0 5 0 6 Gg+D0bfk;3 BDFChar: 1002 1067 7 0 5 0 10 C]J_(bfp"/bfk;3 BDFChar: 1003 1068 7 0 5 0 8 C]J_(bl#]/GQ7^D BDFChar: 1004 1069 7 0 5 0 10 C]O5=$k.Ll$k2n2 BDFChar: 1005 1070 7 0 5 0 8 C]O5=%"&Hlp](9o BDFChar: 1006 1071 7 0 5 0 10 GQ>t3bfn;THjk6" BDFChar: 1007 1072 7 0 5 -2 8 GQ>t3bfn;THjk6" BDFChar: 1008 1073 7 0 5 0 10 C]M]'bfn;THjk6" BDFChar: 1009 1074 7 0 5 -2 8 C]M]'bfn;dC^bOg BDFChar: 1010 1075 7 0 5 0 10 CtJa3bfn;THjk6" BDFChar: 1011 1076 7 0 5 -2 9 CtJa3bfn;Tb^9hD BDFChar: 1012 1077 7 0 5 0 10 C]M]'bfkGC$k*OE BDFChar: 1013 1078 7 0 5 0 8 C]M]'b^9g-$ig8- BDFChar: 1014 1079 7 0 5 -2 8 r4p+`^qdb$i#j-B BDFChar: 1015 1080 7 0 5 -2 6 r4p+`^qekN+92BA BDFChar: 1016 1081 7 0 5 0 10 C]M]'bfoG/gt_5r BDFChar: 1017 1082 7 0 5 0 8 C]M]'bj=-?li7"c BDFChar: 1018 1083 7 0 5 -2 8 Hsg>ipg@K;?spbM BDFChar: 1019 1084 7 0 5 -2 6 Hsg@W?smAM^]4?7 BDFChar: 1020 1085 7 0 5 -2 8 bfn:U0R1gcbQJ1O BDFChar: 1021 1086 7 0 5 -2 6 bfk;cGg+A7#QOi) BDFChar: 1022 1087 7 0 5 0 8 bfn:Ur-6H0bQ%VC BDFChar: 1023 1088 7 0 5 0 6 bfk>0Gg+A3 BDFChar: 1024 1089 7 0 5 0 8 $k*Plbfn;THiO-H BDFChar: 1025 1090 7 0 5 0 6 $k*PlbfkG7 BDFChar: 1026 1091 7 0 5 0 8 &/969eC<"'BE/#4 BDFChar: 1027 1092 7 0 5 0 8 &.fBeFO\gqBE/#4 BDFChar: 1028 1093 7 0 5 0 8 i%R"K1c.$G(]XO9 BDFChar: 1029 1094 7 0 5 0 6 i%R"K1c-$L BDFChar: 1030 1095 7 0 5 -2 8 n/*!](`4),*!?BE BDFChar: 1031 1096 7 0 5 -2 6 n/*!](`44q"98E% BDFChar: 1032 1097 7 0 6 0 8 G\Uu.C2.L$_uKc; BDFChar: 1033 1098 7 0 6 0 6 G\Uu.C2Uri BDFChar: 1034 1099 7 0 5 0 8 d+$Rpo[MCGa8c2? BDFChar: 1035 1100 7 0 5 0 6 d+$S;eD/+F BDFChar: 1036 1101 7 0 5 0 8 I)*P5gs"!dGQ7^D BDFChar: 1037 1102 7 0 5 0 6 I)*PQbfk;3 BDFChar: 1038 1103 7 0 5 0 8 r%Kf]1c.$O(]XO9 BDFChar: 1039 1104 7 0 5 0 6 r%Kf]1cuTT BDFChar: 1040 1105 7 0 5 0 8 I)*P5Geh,1HiO-H BDFChar: 1041 1106 7 0 5 0 6 I)*OB^qb720A85joaoDDA BDFChar: 1045 1110 7 0 6 0 6 H>72*C21lk BDFChar: 1046 1111 7 0 5 0 8 m+g7GnCZC;bQ%VC BDFChar: 1047 1112 7 0 5 -2 6 m+g7?f\Gi/^]4?7 BDFChar: 1048 1113 7 0 6 0 8 Ib<<*IQ2T)h>dNU BDFChar: 1049 1114 7 0 6 0 6 I+m;'3,$;3 BDFChar: 1050 1115 7 0 5 -1 8 Gg+CUbfn;TGROQP BDFChar: 1051 1116 7 0 5 -2 6 I*BgYbfkGC$ig8- BDFChar: 1052 1117 7 0 5 0 8 `5KUDeElP?_uKc; BDFChar: 1053 1118 7 0 5 0 6 `5KUDeEk*R BDFChar: 1054 1119 7 0 5 0 9 &Brf!i5":?fZXT^qf`\^qd_c BDFChar: 1150 1215 7 1 5 0 10 5QEcO@/+,;?sm@B BDFChar: 1151 1216 7 0 5 0 10 GQ<-,^qeaLbfk;3 BDFChar: 1152 1217 7 0 5 -2 8 GQ<-8bfn;THjk6" BDFChar: 1153 1218 7 0 5 0 10 +99X0bfp"/bfn92 BDFChar: 1154 1219 7 0 5 0 10 +993mprpt+bfn92 BDFChar: 1155 1220 7 0 5 -2 8 bfn;Tr63C/bQ&ac BDFChar: 1156 1221 7 0 5 -2 8 ^qf`hbfn;TbQ&ac BDFChar: 1157 1222 7 0 5 0 10 C]M]'bfp"/bfn92 BDFChar: 1158 1223 7 0 5 0 10 C]M8dprpt+bfn92 BDFChar: 1159 1224 7 0 5 -2 8 bfn;Tr63C/b[A3d BDFChar: 1160 1225 7 0 5 -2 8 ^qf`hbfn;Tb[A3d BDFChar: 1161 1226 7 0 5 -2 8 bfn BDFChar: 1174 1239 7 1 4 -2 8 i*]r#?smAM0E<3q BDFChar: 1175 1240 7 0 5 -2 10 GQ>Op^qdb$^qfjJ+92BA BDFChar: 1176 1241 7 1 4 -2 10 n,VBS?smAM?skYg+92BA BDFChar: 1177 1242 7 0 5 -2 8 ^qdb$^qdb$quCsA BDFChar: 1178 1243 7 1 4 -2 8 i*]r#?smAM0ECSB BDFChar: 1179 1244 7 0 5 -2 8 ^qdb$^qdb`!&.LT BDFChar: 1180 1245 7 1 4 -2 8 i*]r#?sm@r!+<#2 BDFChar: 1181 1246 7 0 5 0 10 (binHm-N6O`5KRo BDFChar: 1182 1247 7 0 5 0 9 (bbsbeC?o_uLn[ BDFChar: 1190 1255 7 0 5 -2 6 prpt+bfn92+92BA BDFChar: 1191 1256 7 0 5 -2 8 N6LYdr;>?o_uP#^ BDFChar: 1192 1257 7 0 5 -2 6 prpt+bfn92GQ7^D BDFChar: 1193 1258 7 0 5 -2 8 N6LYdr;>?o`%Y9n BDFChar: 1194 1259 7 0 5 -2 6 prpt+bfn9b=9&=$ BDFChar: 1195 1260 7 0 5 0 10 (bg'A!-l`3bfk;3 BDFChar: 1196 1261 7 0 5 0 10 (bbr3\,^ctbfk;3 BDFChar: 1197 1262 7 0 5 0 10 C]JRe!-l`3bfk;3 BDFChar: 1198 1263 7 0 5 0 9 C]JRe!-l`3b]j*f BDFChar: 1199 1264 7 0 5 0 10 ?ncg*Gg+CUbfk;3 BDFChar: 1200 1265 7 0 5 0 10 ?n_S*!-l`3bfk;3 BDFChar: 1201 1266 7 0 5 0 10 (bg17Gg+CUbfk;3 BDFChar: 1202 1267 7 0 5 0 10 (bbr7!-l`3bfk;3 BDFChar: 1203 1268 7 0 5 0 10 (bka/bfojt^qd_c BDFChar: 1204 1269 7 0 5 -2 9 (bbsbbfn;TbkSuh BDFChar: 1205 1270 7 0 5 0 10 +9;2\bfojt^qd_c BDFChar: 1206 1271 7 0 5 -2 8 +9;2\bfn;TpqXZF BDFChar: 1207 1272 7 0 5 0 10 +9;2\bfok?nCYqb BDFChar: 1208 1273 7 0 5 0 8 +96f)^qdb$^]4?7 BDFChar: 1209 1274 7 0 5 -2 8 prpt+pu(YobQ&ac BDFChar: 1210 1275 7 0 5 -2 6 I)*P5^qd_c+92BA BDFChar: 1211 1276 7 0 5 -2 10 GQ@N_bfok?nCYqb+92BA BDFChar: 1212 1277 7 0 5 -2 8 GQ<-,^qdb$^]5JW BDFChar: 1213 1278 7 0 5 -2 8 prpt+pu(YobQ)kf BDFChar: 1214 1279 7 0 5 -2 6 I)*P5^qd_cGQ7^D BDFChar: 1215 1280 7 0 5 0 10 +96f)^qb1'$k2n2 BDFChar: 1216 1281 7 0 5 0 8 +96f)^j$7rp](9o BDFChar: 1217 1282 7 0 5 -2 8 I)*P5GROuhp])E: BDFChar: 1218 1283 7 0 5 -2 6 I)*OB$k2n2+92BA BDFChar: 1219 1284 7 0 5 0 10 $s3LW^qb1'$k2n2 BDFChar: 1220 1285 7 0 5 0 9 $s3LW^qb1'%/9f& BDFChar: 1221 1286 7 0 5 0 10 fQ7+@^qb1'$k2n2 BDFChar: 1222 1287 7 0 5 0 9 fQ7+@^qb1'%/9f& BDFChar: 1223 1288 7 0 5 -2 10 +96f)^qb1'$k2n2+92BA BDFChar: 1224 1289 7 0 5 -2 8 +96f)^j$7rp])E: BDFChar: 1225 1290 7 0 5 0 10 +9;Q$k*t,@)2[? BDFChar: 1264 1329 7 0 5 0 9 0N\>Q$lC[+_#+04 BDFChar: 1265 1330 7 0 5 -2 8 r!WuN0OV]3qu@i> BDFChar: 1266 1331 7 0 5 -2 6 r!XDr@)2[?+92BA BDFChar: 1267 1332 7 0 5 -2 8 r!WuN0OV]3quCsA BDFChar: 1268 1333 7 0 5 -2 6 r!XDr@)2[?GQ7^D BDFChar: 1269 1334 7 0 5 -2 8 ^qf`hbfn;TbQ)kf BDFChar: 1270 1335 7 1 5 0 10 fDo;en6fX3?skqo BDFChar: 1271 1336 7 0 5 0 9 b]j-+`5L0Tm)/l( BDFChar: 1272 1337 7 0 5 -2 9 b]j-3bfn;Tb^9hD BDFChar: 1273 1338 7 0 6 0 10 "9JW-GRP".bfkG7 BDFChar: 1274 1339 7 0 4 0 10 +94B/@,PF#?sm@B BDFChar: 1275 1340 7 0 5 0 8 *&)=o3,n@@0E;(Q BDFChar: 1276 1341 7 0 4 0 8 3+25`i*]r#?iU0, BDFChar: 1277 1342 7 0 5 0 8 Gg+Cad+HRdfDkmO BDFChar: 1278 1343 7 0 5 0 8 Geh+>bfn;TGQ7^D BDFChar: 1279 1344 7 0 5 -2 8 Gg+CUr63C/bQ&ac BDFChar: 1280 1345 7 0 5 -2 6 GRP".bfkG7+92BA BDFChar: 1281 1346 7 0 5 0 10 i%TE"bfp"/bfn92 BDFChar: 1282 1347 7 0 5 0 9 i%P.U$k.O-b^9Bj BDFChar: 1283 1348 7 0 5 0 10 @+["1Gg+D0bfn92 BDFChar: 1284 1349 7 0 5 0 10 @+["1GRP".bfkG7 BDFChar: 1285 1350 7 0 5 0 10 (i6DVGg+D0bfn92 BDFChar: 1286 1351 7 0 5 0 10 (i6DVGRP".bfkG7 BDFChar: 1287 1352 7 0 5 0 10 0F0@7!-l`cbfn92 BDFChar: 1288 1353 7 0 5 0 10 0F0@7!-ep"bfkG7 BDFChar: 1289 1354 7 0 5 0 10 1fuG6!-l`cbfn92 BDFChar: 1290 1355 7 0 5 0 10 1fuG6!-ep"bfkG7 BDFChar: 1291 1356 7 0 5 -2 10 0N\="bfp"/bfn92+92BA BDFChar: 1292 1357 7 0 5 -2 9 0N\="$k.O-b^9C5 BDFChar: 1293 1358 7 0 5 0 10 (bj0Y!-l`cbfn92 BDFChar: 1294 1359 7 0 5 0 10 (bj0Y!-ep"bfkG7 BDFChar: 1295 1360 7 0 5 0 10 ?nffL!-l`cbfn92 BDFChar: 1296 1361 7 0 5 0 10 ?nffL!-ep"bfkG7 BDFChar: 1297 1362 7 0 5 0 10 ^`^jG!-l`cbfn92 BDFChar: 1298 1363 7 0 5 0 10 ^`^jG!-ep"bfkG7 BDFChar: 1299 1364 7 0 5 0 10 A=1Sc!-l`cbfn92 BDFChar: 1300 1365 7 0 5 0 10 A=1Sc!-ep"bfkG7 BDFChar: 1301 1366 7 0 5 -2 10 b]j,4bfp"/bfn92+92BA BDFChar: 1302 1367 7 0 5 -2 9 b]j,4$k.O-b^9C5 BDFChar: 1303 1368 7 0 5 -2 8 r4p+`pqX\\qu@i> BDFChar: 1304 1369 7 0 5 -2 6 Gg+D0^qbK^qf`\^qfjJ BDFChar: 1308 1373 7 0 5 0 10 A@.^(Gg+D0^qbQ^qf`\^qfjJ+92BA BDFChar: 1318 1383 7 0 5 -2 9 0N\="bfp"#^jH,) BDFChar: 1319 1384 7 0 5 0 10 ?kE5i0JG170JND) BDFChar: 1320 1385 7 1 4 0 9 ^`WX8?smAM@.4-r BDFChar: 1321 1386 7 0 5 -2 8 r%KfY0JG17qu@i> BDFChar: 1322 1387 7 1 4 -2 9 ?sium?smAM@.4.] BDFChar: 1323 1388 7 0 5 -2 8 Gg+CUbfn;TGQ8id BDFChar: 1324 1389 7 0 5 -2 6 Gg+CUbfk;3+92BA BDFChar: 1325 1390 7 0 5 0 10 ?k@S,bfn;Tbfk;3 BDFChar: 1326 1391 7 0 5 0 9 ?k<<_bfn;Tb]j*f BDFChar: 1327 1392 7 0 5 0 10 @+["1Gg+CUbfk;3 BDFChar: 1328 1393 7 0 5 0 10 @+["1Gg+CUbfk;3 BDFChar: 1329 1394 7 0 5 0 10 (i6DVGg+CUbfk;3 BDFChar: 1330 1395 7 0 5 0 10 (i6DVGg+CUbfk;3 BDFChar: 1331 1396 7 0 5 0 10 ^bAjjGg+CUbfk;3 BDFChar: 1332 1397 7 0 5 0 10 ^bAjjGg+CUbfk;3 BDFChar: 1333 1398 7 0 5 0 10 FLX#,!-l`3bfk;3 BDFChar: 1334 1399 7 0 5 0 10 FLX#,!-l`3bfk;3 BDFChar: 1335 1400 7 0 5 -2 10 0N\="bfn;Tbfk;3+92BA BDFChar: 1336 1401 7 0 5 -2 9 0N\="bfn;Tb]j+1 BDFChar: 1337 1402 7 0 6 0 10 (c$E]bfn;Tbfk;3 BDFChar: 1338 1403 7 0 6 0 9 (bc#;bfn;Tb]j*f BDFChar: 1339 1404 7 0 6 0 10 ?o!&Pbfn;Tbfk;3 BDFChar: 1340 1405 7 0 6 0 9 ?n_Y.bfn;Tb]j*f BDFChar: 1341 1406 7 0 6 0 10 ?kRe0bfn;Tbfk;3 BDFChar: 1342 1407 7 0 6 0 9 ?kSBP;'m1]RLU BDFChar: 1371 1436 7 0 5 0 8 3+0P;fZ_R`GQ7^D BDFChar: 1372 1437 7 0 5 0 6 3+0PSbfk;3 BDFChar: 1373 1438 7 0 5 -1 8 bfk$ig8- BDFChar: 1404 1469 7 0 5 -2 10 0H^o,prpt+bfn9>$ig8- BDFChar: 1405 1470 7 0 5 -2 10 ^fZNqprpt+bfn9>$ig8- BDFChar: 1406 1471 7 0 5 -2 10 ^mIdqprpt+bfn9>$ig8- BDFChar: 1407 1472 7 0 5 -2 10 ^eC*qprpt+bfn9>$ig8- BDFChar: 1408 1473 7 0 5 -2 10 ^l2@qprpt+bfn9>$ig8- BDFChar: 1409 1474 7 0 5 -2 10 Gg%iQ+Sa1)bfn9>$ig8- BDFChar: 1410 1475 7 0 5 -2 10 Gg%ia&GXJnbfn9>$ig8- BDFChar: 1411 1476 7 0 5 0 10 ^d*Fobfp"/bfn92 BDFChar: 1412 1477 7 0 5 0 10 ^jn\obfp"/bfn92 BDFChar: 1413 1478 7 0 5 0 10 fM$h>bfp"/bfn92 BDFChar: 1414 1479 7 0 5 0 10 fSi)>bfp"/bfn92 BDFChar: 1415 1480 7 0 5 0 10 bZKD>bfp"/bfn92 BDFChar: 1416 1481 7 0 5 0 10 ba:Z>bfp"/bfn92 BDFChar: 1417 1482 7 0 5 0 10 Gg%iQ+O&(-bfn92 BDFChar: 1418 1483 7 0 5 0 10 Gg%ia&BrArbfn92 BDFChar: 1419 1484 7 1 5 0 10 ?m%]7i*]r#?skqo BDFChar: 1420 1485 7 1 5 0 10 ?pGh7i*]r#?skqo BDFChar: 1421 1486 7 0 5 0 10 ^fZNqE%it"0JFIH BDFChar: 1422 1487 7 0 5 0 10 ^mIdqE%it"0JFIH BDFChar: 1423 1488 7 0 5 0 10 ^eC*qE%it"0JFIH BDFChar: 1424 1489 7 0 5 0 10 ^l2@qE%it"0JFIH BDFChar: 1425 1490 7 0 5 0 10 Gg%iQ+E0"g0JFIH BDFChar: 1426 1491 7 0 5 0 10 Gg%ia&9'b]n@d0JG0\ BDFChar: 1457 1522 7 0 5 0 10 ba:Z>b]n@d0JG0\ BDFChar: 1458 1523 7 0 5 0 10 Gg%ia&Br@C0JG0\ BDFChar: 1459 1524 7 0 5 0 10 0G#?,bfn BDFChar: 1460 1525 7 0 5 0 10 0H^o,bfn BDFChar: 1461 1526 7 0 5 0 10 ^fZNqbfn BDFChar: 1462 1527 7 0 5 0 10 ^mIdqbfn BDFChar: 1463 1528 7 0 5 0 10 ^eC*qbfn BDFChar: 1464 1529 7 0 5 0 10 ^l2@qbfn BDFChar: 1465 1530 7 0 5 0 10 Gg%iQ+O&'Rr;:d> BDFChar: 1466 1531 7 0 5 0 10 Gg%ia&BrABr;:d> BDFChar: 1467 1532 7 0 5 0 10 0G#@Obfn;TbXfqX BDFChar: 1468 1533 7 0 5 0 10 0H^pObfn;TbXfqX BDFChar: 1469 1534 7 0 5 0 10 fM$g?bfn;TbXfqX BDFChar: 1470 1535 7 0 5 0 10 fSi(?bfn;TbXfqX BDFChar: 1471 1536 7 0 5 0 10 bZKC?bfn;TbXfqX BDFChar: 1472 1537 7 0 5 0 10 ba:Y?bfn;TbXfqX BDFChar: 1473 1538 7 0 5 0 10 Gg%iQ+F),SbXfqX BDFChar: 1474 1539 7 0 5 0 10 Gg%ia&9uFCbXfqX BDFChar: 1475 1540 7 0 5 0 9 ?n_Rsgs"!dghZrj BDFChar: 1476 1541 7 0 5 0 9 (bbr+gs"!dghZrj BDFChar: 1477 1542 7 0 5 0 9 ?n_S.^qb31^jH+^ BDFChar: 1478 1543 7 0 5 0 9 (bbr;^qb31^jH+^ BDFChar: 1479 1544 7 0 5 -2 9 ?n_TUbfn;TbfgJ( BDFChar: 1480 1545 7 0 5 -2 9 (bbsbbfn;TbfgJ( BDFChar: 1481 1546 7 1 5 0 9 ^gI0#?smAM?oS,d BDFChar: 1482 1547 7 1 5 0 9 0OOn=?smAM?oS,d BDFChar: 1483 1548 7 0 5 0 9 ?n_S*bfn;Tb]j*f BDFChar: 1484 1549 7 0 5 0 9 (bbr7bfn;Tb]j*f BDFChar: 1485 1550 7 0 5 0 9 ?n_T)bfn;Tb]j*f BDFChar: 1486 1551 7 0 5 0 9 (bbs6bfn;Tb]j*f BDFChar: 1487 1552 7 0 5 0 9 ?n_T)bfp"_r-/2A BDFChar: 1488 1553 7 0 5 0 9 (bbs6bfp"_r-/2A BDFChar: 1489 1554 7 0 5 -2 10 0G#?,Cu!7YbhRS"(]XO9 BDFChar: 1490 1555 7 0 5 -2 10 0H^o,Cu!7YbhRS"(]XO9 BDFChar: 1491 1556 7 0 5 -2 10 ^fZNqCu!7YbhRS"(]XO9 BDFChar: 1492 1557 7 0 5 -2 10 ^mIdqCu!7YbhRS"(]XO9 BDFChar: 1493 1558 7 0 5 -2 10 ^eC*qCu!7YbhRS"(]XO9 BDFChar: 1494 1559 7 0 5 -2 10 ^l2@qCu!7YbhRS"(]XO9 BDFChar: 1495 1560 7 0 5 -2 10 Gg%iQ+DfiWbhRS"(]XO9 BDFChar: 1496 1561 7 0 5 -2 10 Gg%ia&8^.GbhRS"(]XO9 BDFChar: 1497 1562 7 0 5 -2 10 0G#@Obfp"/bfn9b(]XO9 BDFChar: 1498 1563 7 0 5 -2 10 0H^pObfp"/bfn9b(]XO9 BDFChar: 1499 1564 7 0 5 -2 10 fM$g?bfnC]FG8 BDFChar: 1506 1571 7 0 5 -2 10 0H^o,prpt+bfgL>C]FG8 BDFChar: 1507 1572 7 0 5 -2 10 ^fZNqprpt+bfgL>C]FG8 BDFChar: 1508 1573 7 0 5 -2 10 ^mIdqprpt+bfgL>C]FG8 BDFChar: 1509 1574 7 0 5 -2 10 ^eC*qprpt+bfgL>C]FG8 BDFChar: 1510 1575 7 0 5 -2 10 ^l2@qprpt+bfgL>C]FG8 BDFChar: 1511 1576 7 0 5 -2 10 Gg%iQ+Sa1)bfgL>C]FG8 BDFChar: 1512 1577 7 0 5 -2 10 Gg%ia&GXJnbfgL>C]FG8 BDFChar: 1513 1578 7 0 5 -2 10 ^d*Fobfp"/bfn9b(]XO9 BDFChar: 1514 1579 7 0 5 -2 10 ^jn\obfp"/bfn9b(]XO9 BDFChar: 1515 1580 7 0 5 -2 10 fM$h>bfp"/bfn9b(]XO9 BDFChar: 1516 1581 7 0 5 -2 10 fSi)>bfp"/bfn9b(]XO9 BDFChar: 1517 1582 7 0 5 -2 10 bZKD>bfp"/bfn9b(]XO9 BDFChar: 1518 1583 7 0 5 -2 10 ba:Z>bfp"/bfn9b(]XO9 BDFChar: 1519 1584 7 0 5 -2 10 Gg%iQ+O&(-bfn9b(]XO9 BDFChar: 1520 1585 7 0 5 -2 10 Gg%ia&BrArbfn9b(]XO9 BDFChar: 1521 1586 7 0 5 -2 10 0G#?,bfnC]FG8 BDFChar: 1556 1621 7 0 5 -2 9 (bbsbbfn;TbRD^3 BDFChar: 1557 1622 7 0 5 -2 9 Gg$0_bfn;TbfgJ( BDFChar: 1558 1623 7 0 5 -2 9 Gg$0_bfn;TbRD^3 BDFChar: 1559 1624 7 0 5 0 10 ?nhMo^qf`\^qfjJ BDFChar: 1560 1625 7 0 5 0 10 (bkm'^qf`\^qfjJ BDFChar: 1561 1626 7 0 5 0 10 ?nfgKbfp"/bfn92 BDFChar: 1562 1627 7 0 5 0 10 (bj1Xbfp"/bfn92 BDFChar: 1563 1628 7 0 5 -2 8 bfn;Tr63C/bV0k6 BDFChar: 1564 1629 7 0 5 8 10 ^fZNq BDFChar: 1565 1630 7 0 5 8 10 ^fZNq BDFChar: 1566 1631 7 0 5 6 10 Gg%iQ+92BA BDFChar: 1567 1632 7 0 5 0 9 b]j,,0JG170H:&m BDFChar: 1568 1633 7 1 5 0 8 n,VBS?smAM2uipY BDFChar: 1569 1634 7 1 5 0 10 ^gI/p!8q6m?skqo BDFChar: 1570 1635 7 1 5 0 10 0OOn5!8q6m?skqo BDFChar: 1571 1636 7 0 5 0 9 Gg$/,0JG170H:&m BDFChar: 1572 1637 7 0 5 0 10 Gg$/(!,sVG0JFIH BDFChar: 1573 1638 7 0 5 0 10 b]j-c0JG170JND) BDFChar: 1574 1639 7 0 5 0 10 GQ@Xq0JG170JND) BDFChar: 1575 1640 7 0 5 0 10 ?nhL40JG170JND) BDFChar: 1576 1641 7 0 5 0 10 (bkkA0JG170JND) BDFChar: 1577 1642 7 0 5 8 10 ^mIdq BDFChar: 1578 1643 7 0 5 8 10 ^l2@q BDFChar: 1579 1644 7 0 5 6 10 Gg%ia&-)\1 BDFChar: 1580 1645 7 0 5 0 9 b]j-3bfn;Tb^9Bj BDFChar: 1581 1646 7 0 5 0 10 GQ>t3bfn;Tbfk;3 BDFChar: 1582 1647 7 0 5 0 10 ?n_Rs!6i[2bfkG7 BDFChar: 1583 1648 7 0 5 0 10 (bbr+!6i[2bfkG7 BDFChar: 1584 1649 7 0 5 -2 10 0G#?,Gg+CUbfojt^]4?7 BDFChar: 1585 1650 7 0 5 -2 10 0H^o,Gg+CUbfojt^]4?7 BDFChar: 1586 1651 7 0 5 0 9 Gg$03bfn;Tb^9Bj BDFChar: 1587 1652 7 0 5 0 10 Gg$/(!6i[2bfkG7 BDFChar: 1588 1653 7 0 5 0 10 b]j-3b]n@d0JG0\ BDFChar: 1589 1654 7 0 5 0 10 GQ>t3G^(nr0JG0\ BDFChar: 1590 1655 7 0 5 0 10 ?nfgKG^(nr0JG0\ BDFChar: 1591 1656 7 0 5 0 10 (bj1XG^(nr0JG0\ BDFChar: 1592 1657 7 0 5 0 10 0H^r%bfn<+^qd_c BDFChar: 1593 1658 7 1 5 7 10 ^gI/p BDFChar: 1594 1659 7 1 5 7 10 0OOn5 BDFChar: 1595 1660 7 1 3 9 10 ^gI-B BDFChar: 1596 1661 7 0 5 -2 9 ?n_T)bfp"_r-0n4 BDFChar: 1597 1662 7 0 5 -2 6 bfnum+92BA BDFChar: 1742 1807 7 0 6 3 7 #_[Y[#QOi) BDFChar: 1743 1808 7 0 6 3 7 +@?&o+92BA BDFChar: 1744 1809 7 1 5 2 8 +E48%+jAd%Kk. BDFChar: 1788 1853 7 0 6 3 7 +@,3W+92BA BDFChar: 1789 1854 7 1 5 2 8 +E47Z+93Ma BDFChar: 1790 1855 7 0 6 3 7 #R%:5#QOi) BDFChar: 1791 1856 7 1 5 2 8 +93MaW,NjZ BDFChar: 1792 1857 7 0 6 3 7 OJ)TGO8o7\ BDFChar: 1793 1858 7 0 6 3 7 &dnUF&c_n3 BDFChar: 1794 1859 7 0 6 3 7 +F_1V+92BA BDFChar: 1795 1860 7 1 5 2 8 +E5t0:f)*2 BDFChar: 1796 1861 7 0 6 3 7 #lKGT#QOi) BDFChar: 1797 1862 7 1 5 2 8 E)9A-fPhr5 BDFChar: 1798 1863 7 1 5 2 8 +E5t0fPhr5 BDFChar: 1799 1864 7 0 6 2 8 -p/t-W-B]j BDFChar: 1800 1865 7 1 5 2 8 &GQh3&GQe: BDFChar: 1801 1866 7 0 5 0 8 bfn&0JEJ, BDFChar: 1833 1898 7 0 5 1 6 Gg+CUbfg%e BDFChar: 1834 1899 7 0 5 1 6 bfn;Tb]j*f BDFChar: 1835 1900 7 0 5 -2 10 *&''#0JG170JG17huE`W BDFChar: 1836 1901 7 0 6 -2 10 5&>%OCi!p(Ci!p(p](9o BDFChar: 1837 1902 7 1 5 -2 10 &0N)%/9f& BDFChar: 1860 1925 7 0 5 0 7 #^j_?d*R._ BDFChar: 1861 1926 7 0 5 0 7 &GR4r/1gQ] BDFChar: 1862 1927 7 0 5 0 7 I)*P5^jH.[ BDFChar: 1863 1928 7 0 5 0 7 p^@Q>%/9i# BDFChar: 1864 1929 7 0 5 -1 8 #^j_?d*R._r#bt> BDFChar: 1865 1930 7 0 5 -1 8 &GR4r/1gQ]r'15^ BDFChar: 1866 1931 7 0 5 -1 7 I)*P5^jH^k+92BA BDFChar: 1867 1932 7 0 5 -1 7 p^@Q>%/:D3+92BA BDFChar: 1868 1933 7 0 5 2 6 ^qfl`^]4?7 BDFChar: 1869 1934 7 0 5 2 6 $k3%B$ig8- BDFChar: 1870 1935 7 0 5 2 6 r%KfY0E;(Q BDFChar: 1871 1936 7 0 5 2 6 0JG17qu?]s BDFChar: 1872 1937 7 0 5 2 7 ":Q8,AGcE- BDFChar: 1873 1938 7 0 5 1 6 0JI0R`5DWU BDFChar: 1874 1939 7 0 5 1 6 `5H>&0JEJ, BDFChar: 1875 1940 7 0 5 1 6 Gf7P=`5DWU BDFChar: 1876 1941 7 0 5 1 6 `5KU4`-;7^ BDFChar: 1877 1942 7 0 6 2 8 `pUF$]'dQ< BDFChar: 1878 1943 7 0 6 2 8 _WJLu]]R'2 BDFChar: 1879 1944 7 0 6 2 8 LPH3,HS7 BDFChar: 1881 1946 7 0 6 2 8 !X9&M3,HS7 BDFChar: 1882 1947 7 0 5 2 6 (pmZNqu?]s BDFChar: 1883 1948 7 0 5 0 5 0R1gcbkqG@ BDFChar: 1884 1949 7 0 5 2 5 r4p+` BDFChar: 1885 1950 7 0 6 1 9 3(/pmRY$,Z2uipY BDFChar: 1886 1951 7 0 6 1 9 rdo_i6r^bsrVuou BDFChar: 1887 1952 7 2 5 -2 10 @*m99^qdb$^qdb$^]4?7 BDFChar: 1888 1953 7 0 3 -2 10 0JG170JG170JK`8?iU0, BDFChar: 1889 1954 7 0 6 10 10 rVuou BDFChar: 1890 1955 7 0 6 7 7 rVuou BDFChar: 1891 1956 7 0 6 3 3 rVuou BDFChar: 1892 1957 7 0 6 0 0 rVuou BDFChar: 1893 1958 7 0 5 -1 9 n;-Rin,PR93!=I+ BDFChar: 1894 1959 7 0 5 -1 9 Lkth^L]Df6&.fBQ BDFChar: 1895 1960 7 0 5 -1 9 J:N0#p],\,GX+Lo BDFChar: 1896 1961 7 0 5 -1 9 Lkpj`+96d#&.fBQ BDFChar: 1897 1962 7 0 5 -1 9 pjh:QJ,js^E'QYg BDFChar: 1898 1963 7 0 5 -1 9 G^tJ:N.M BDFChar: 1910 1975 7 3 6 -2 4 nF1sYJ:N.M BDFChar: 1911 1976 7 3 6 -2 4 nA)iT^qd_c BDFChar: 1912 1977 7 3 6 -2 4 nF46/^qd_c BDFChar: 1913 1978 7 0 3 -2 4 n.6-B&.fBQ BDFChar: 1914 1979 7 0 3 -2 4 nF-u#&.fBQ BDFChar: 1915 1980 7 0 4 -2 4 p_Xhb(`4(i BDFChar: 1916 1981 7 0 4 -2 4 q"P[C(`4(i BDFChar: 1917 1982 7 3 6 4 10 J:N0#J:R+h BDFChar: 1918 1983 7 3 6 3 10 J:N0#J:R.Y BDFChar: 1919 1984 7 3 6 4 10 ^qdb$^qfF> BDFChar: 1920 1985 7 3 6 3 10 ^qdb$^qfI/ BDFChar: 1921 1986 7 0 3 4 10 &.fBa&.n=2 BDFChar: 1922 1987 7 0 3 3 10 &.fBa&.n@# BDFChar: 1923 1988 7 0 4 4 10 (`4),(`<#J BDFChar: 1924 1989 7 0 4 3 10 (`4),(`<&C BDFChar: 1925 1990 7 3 6 -2 10 J:N0#J:R->J:N0#J,fQL BDFChar: 1926 1991 7 3 6 -2 10 J:N0#J:R.YJ:N0#J,fQL BDFChar: 1927 1992 7 3 6 -2 10 ^qdb$^qfGiJ:N0#J,fQL BDFChar: 1928 1993 7 3 6 -2 10 J:N0#J:R.Y^qdb$^]4?7 BDFChar: 1929 1994 7 3 6 -2 10 ^qdb$^qfHT^qdb$^]4?7 BDFChar: 1930 1995 7 3 6 -2 10 ^qdb$^qfI/J:N0#J,fQL BDFChar: 1931 1996 7 3 6 -2 10 J:N0#J:R.Y^qdb$^]4?7 BDFChar: 1932 1997 7 3 6 -2 10 ^qdb$^qfI/^qdb$^]4?7 BDFChar: 1933 1998 7 0 3 -2 10 &.fBa&.n=B&.fBa&-)\1 BDFChar: 1934 1999 7 0 3 -2 10 &.fBa&.n@#&.fBa&-)\1 BDFChar: 1935 2000 7 0 4 -2 10 (`4),(`<#Z&.fBa&-)\1 BDFChar: 1936 2001 7 0 4 -2 10 &.fBa&.nUR(`4),(]XO9 BDFChar: 1937 2002 7 0 4 -2 10 (`4),(`<#b(`4),(]XO9 BDFChar: 1938 2003 7 0 4 -2 10 (`4),(`<&C&.fBa&-)\1 BDFChar: 1939 2004 7 0 4 -2 10 &.fBa&.nX3(`4),(]XO9 BDFChar: 1940 2005 7 0 4 -2 10 (`4),(`<&C(`4),(]XO9 BDFChar: 1941 2006 7 0 6 -2 4 rX]VP&.fBQ BDFChar: 1942 2007 7 0 6 -2 4 rpUI1&.fBQ BDFChar: 1943 2008 7 0 6 -2 4 rZ2U^&.fBQ BDFChar: 1944 2009 7 0 6 -2 4 rr*H?&.fBQ BDFChar: 1945 2010 7 0 6 -2 4 rYQIh(`4(i BDFChar: 1946 2011 7 0 6 -2 4 rqI(#&.fBa BDFChar: 1979 2044 7 0 4 -2 4 pa@O=-n$JD BDFChar: 1980 2045 7 0 4 -2 5 p^$(3-n$Jl BDFChar: 1981 2046 7 3 6 3 10 J:N0#JFJ*Y BDFChar: 1982 2047 7 2 6 4 10 TV.sNTV2&[ BDFChar: 1983 2048 7 2 6 3 10 TV.sNTX]OI BDFChar: 1984 2049 7 0 3 3 10 &.fBa&F^8# BDFChar: 1985 2050 7 0 4 4 10 -n$Jl-n+ij BDFChar: 1986 2051 7 0 4 3 10 -n$Jl.-Ls3 BDFChar: 1987 2052 7 3 6 -2 10 J:N0#JFJ*YJ:N0#J,fQL BDFChar: 1988 2053 7 2 6 -2 10 TV.sNTV/ffTV.sNTE"rl BDFChar: 1989 2054 7 2 6 -2 10 TV.sNTX]N^TV.sNTE"rl BDFChar: 1990 2055 7 0 3 -2 10 &.fBa&F^8#&.fBa&-)\1 BDFChar: 1991 2056 7 0 4 -2 10 -n$Jl-n+:--n$Jl-ia5I BDFChar: 1992 2057 7 0 4 -2 10 -n$Jl.-Ls#-n$Jl-ia5I BDFChar: 1993 2058 7 0 6 -2 5 rW)p/&.fBa BDFChar: 1994 2059 7 0 6 -2 4 r[90C-n$JD BDFChar: 1995 2060 7 0 6 -2 5 rW)@7-n$Jl BDFChar: 1996 2061 7 0 6 3 10 &.fBa&H2\/ BDFChar: 1997 2062 7 0 6 4 10 -n$Jl-n,&p BDFChar: 1998 2063 7 0 6 3 10 -n$Jl...*7 BDFChar: 1999 2064 7 0 6 -2 10 &.fBa&H37?&.fBa&-)\1 BDFChar: 2000 2065 7 0 6 -2 10 -n$Jl-n,'C-n$Jl-ia5I BDFChar: 2001 2066 7 0 6 -2 10 -n$Jl...*'-n$Jl-ia5I BDFChar: 2002 2067 7 3 6 -2 4 0L1/=J:N.M BDFChar: 2003 2068 7 0 3 -2 4 ^`X1"&.fBQ BDFChar: 2004 2069 7 0 3 4 10 &.fBa&0Sag BDFChar: 2005 2070 7 3 6 4 10 J:N0#J3Ydg BDFChar: 2006 2071 7 0 6 -2 10 !WiK-#RCta+@&2BJ,fQL BDFChar: 2007 2072 7 0 6 -2 10 J:KmM+ BDFChar: 2018 2083 7 3 4 -2 10 J:N0#J:PGN^qdb$^]4?7 BDFChar: 2019 2084 7 0 6 3 4 rpTmf BDFChar: 2020 2085 7 3 4 -2 10 ^qdb$^qda9J:N0#J,fQL BDFChar: 2021 2086 7 0 6 4 10 rr2orrr2ls BDFChar: 2022 2087 7 0 6 -2 -2 rVuou BDFChar: 2023 2088 7 0 6 -2 0 rr2ls BDFChar: 2024 2089 7 0 6 -2 1 rr2or BDFChar: 2025 2090 7 0 6 -2 4 rr2orrr2ls BDFChar: 2026 2091 7 0 6 -2 5 rr2orrr2or BDFChar: 2027 2092 7 0 5 -2 7 r;?Kjr;?Kjr;6Np BDFChar: 2028 2093 7 0 6 -2 8 rr2orrr2orrr2ls BDFChar: 2029 2094 7 0 6 -2 10 rr2orrr2orrr2orrVuou BDFChar: 2030 2095 7 0 5 -2 10 r;?Kjr;?Kjr;?Kjqu?]s BDFChar: 2031 2096 7 0 4 -2 10 q"XXZq"XXZq"XXZp](9o BDFChar: 2032 2097 7 0 3 -2 10 nF5r:nF5r:nF5r:n,NFg BDFChar: 2033 2098 7 0 3 -2 10 nF5r:nF5r:nF5r:n,NFg BDFChar: 2034 2099 7 0 2 -2 10 i8EPOi8EPOi8EPOhuE`W BDFChar: 2035 2100 7 0 1 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2036 2101 7 0 0 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2037 2102 7 3 6 -2 10 nF5r:nF5r:nF5r:n,NFg BDFChar: 2038 2103 7 0 6 -2 10 L`d$i'S%G/8cXqU+92BA BDFChar: 2039 2104 7 0 6 -2 10 <2rot<2rot<2rot;ucmu BDFChar: 2040 2105 7 0 6 -2 10 DVG#koNpgqmbE!P\c;^1 BDFChar: 2041 2106 7 0 3 -2 4 nF5r:nF5oI BDFChar: 2042 2107 7 3 6 -2 4 nF5r:nF5oI BDFChar: 2043 2108 7 0 3 4 10 nF5r:nF5oI BDFChar: 2044 2109 7 0 6 -2 10 i8EPOi8FV6rr2orrVuou BDFChar: 2045 2110 7 0 6 -2 10 nF5r:nF6Du*Zc@D*WQ0? BDFChar: 2046 2111 7 0 6 -2 10 rr2orrr2odnF5r:n,NFg BDFChar: 2047 2112 7 0 6 -2 10 rr2orrr2m<*Zc@D*WQ0? BDFChar: 2048 2113 7 3 6 4 10 nF5r:nF5oI BDFChar: 2049 2114 7 0 6 -2 10 *Zc@D*Zk=MnF5r:n,NFg BDFChar: 2050 2115 7 0 6 -2 10 *Zc@D*Zk=[rr2orrVuou BDFChar: 2051 2116 7 0 5 2 7 r;?Kjr;6Np BDFChar: 2052 2117 7 0 5 2 7 r.K`VK_tfM BDFChar: 2053 2118 7 0 5 2 7 G_Ca'KQmIs BDFChar: 2054 2119 7 0 5 2 7 r.MGaK_tfM BDFChar: 2055 2120 7 2 4 3 5 i8EMn BDFChar: 2056 2121 7 2 4 3 5 i1T!. BDFChar: 2057 2122 7 0 5 3 5 r;?Hm BDFChar: 2058 2123 7 0 5 3 5 r.OtJ BDFChar: 2059 2124 7 2 4 0 8 i8EPOi8EPOhuE`W BDFChar: 2060 2125 7 2 4 0 8 i1Qa9TV.sNhuE`W BDFChar: 2061 2126 7 0 6 3 5 5(*,* BDFChar: 2062 2127 7 0 6 3 5 5",/G BDFChar: 2063 2128 7 0 6 1 7 &.gf\I!knn BDFChar: 2064 2129 7 0 6 1 7 &.g6<6q%"S BDFChar: 2065 2130 7 1 5 3 5 +E7)U BDFChar: 2066 2131 7 1 5 3 5 +Ahh5 BDFChar: 2067 2132 7 0 6 1 7 JDg5%pu$Z& BDFChar: 2068 2133 7 0 6 1 7 JDcfLR,EJp BDFChar: 2069 2134 7 2 4 2 6 JAC*YJ,fQL BDFChar: 2070 2135 7 2 4 2 6 JA@hnJ,fQL BDFChar: 2071 2136 7 0 5 2 6 _!q9k^]4?7 BDFChar: 2072 2137 7 0 5 2 6 ^p&d%^]4?7 BDFChar: 2073 2138 7 0 6 1 7 rd9)Q3"QW$ BDFChar: 2074 2139 7 0 6 1 7 r^9.&-kHpi BDFChar: 2075 2140 7 1 5 3 5 pi%>U BDFChar: 2076 2141 7 1 5 3 5 peW(5 BDFChar: 2077 2142 7 0 6 1 7 !Y.En4q7Vo BDFChar: 2078 2143 7 0 6 1 7 !Y.!&1(F?c BDFChar: 2079 2144 7 2 4 2 6 +CO,8+92BA BDFChar: 2080 2145 7 2 4 2 6 +CLjM+92BA BDFChar: 2081 2146 7 0 5 2 6 $p=GM$ig8- BDFChar: 2082 2147 7 0 5 2 6 $oGmZ$ig8- BDFChar: 2083 2148 7 0 6 1 7 &3,(:HoMZ; BDFChar: 2084 2149 7 0 6 1 7 &1Bqu6mrTH BDFChar: 2085 2150 7 0 6 1 7 &1CMh<%&:X BDFChar: 2086 2151 7 1 5 0 9 +o] BDFChar: 2113 2178 7 0 6 1 7 rr2cbikkZp BDFChar: 2114 2179 7 0 6 1 7 re?H)^Ae*3 BDFChar: 2115 2180 7 0 6 1 7 rfWG-P*5eE BDFChar: 2116 2181 7 0 6 1 8 &.g6<6r\d; BDFChar: 2117 2182 7 0 6 1 8 &.gf\FEI*Q BDFChar: 2118 2183 7 0 6 1 8 &.gf\>[3m" BDFChar: 2119 2184 7 0 6 1 7 3(/@MJj_Qu BDFChar: 2120 2185 7 0 6 1 7 rfWH8JqEt% BDFChar: 2121 2186 7 0 6 1 7 rdoamP*5eE BDFChar: 2122 2187 7 0 6 1 7 rdo`nP*5eE BDFChar: 2123 2188 7 0 6 1 7 rfWG9JqEt% BDFChar: 2124 2189 7 0 6 1 7 3)l(3Jj_Qu BDFChar: 2125 2190 7 0 6 1 7 3(/AhP#OC@ BDFChar: 2126 2191 7 0 6 1 7 3(/@iP#OC@ BDFChar: 2127 2192 7 0 6 1 7 3)l'4Jj_Qu BDFChar: 2128 2193 7 0 6 1 7 re-)hTYQ'X BDFChar: 2129 2194 7 0 6 1 7 r^%eA$3gP3 BDFChar: 2130 2195 7 0 6 1 7 JA@h>LkPa- BDFChar: 2131 2196 7 0 6 1 7 rdo`RJqEt% BDFChar: 2132 2197 7 0 6 1 7 rr2orrr2ls BDFChar: 2133 2198 7 1 5 2 6 pkX`^p](9o BDFChar: 2134 2199 7 1 5 2 6 q"XXZp](9o BDFChar: 2135 2200 7 0 6 1 7 !X8uE,!u8/ BDFChar: 2136 2201 7 0 6 1 7 3(/@]Jj_Qu BDFChar: 2137 2202 7 0 6 0 8 3(/@MJjcW=6i[2e BDFChar: 2138 2203 7 0 6 0 8 7&m7TJqASB2uipY BDFChar: 2139 2204 7 0 6 0 8 rdo`RJqAT+rVuou BDFChar: 2140 2205 7 0 6 0 8 rdp#bP1$(VrVuou BDFChar: 2141 2206 7 0 6 0 8 rdr.iP,cNRrVuou BDFChar: 2142 2207 7 0 6 0 8 3(0dHJs*-%2uipY BDFChar: 2143 2208 7 0 6 0 8 3(0dHK#YAi2uipY BDFChar: 2144 2209 7 0 6 0 8 3.0<.rjp*s2uipY BDFChar: 2145 2210 7 0 6 0 8 &<^!PmPn1/&-)\1 BDFChar: 2146 2211 7 1 5 0 8 i(tgM-n$K?huE`W BDFChar: 2147 2212 7 1 5 0 8 3)H9@TV.rS2uipY BDFChar: 2148 2213 7 1 5 -1 8 Lkp#+Lkp!mE$,,\ BDFChar: 2149 2214 7 1 5 0 7 E/9=+E$0*B BDFChar: 2150 2215 7 1 5 1 8 +E/HBLkpk+ BDFChar: 2151 2216 7 1 6 1 8 *"3O#Lkpk+ BDFChar: 2152 2217 7 0 5 0 8 "D!`2,l@cJ"98E% BDFChar: 2153 2218 7 0 5 0 8 5i=n0A4/gR8,rVi BDFChar: 2154 2219 7 0 6 0 8 el7#reds5X&-)\1 BDFChar: 2155 2220 7 0 6 -1 9 &3(5#el5U.&3(4$ BDFChar: 2156 2221 7 1 5 0 8 n;)mVn:6%>p](9o BDFChar: 2157 2222 7 1 5 0 8 :oL=k+>2d+Y6huE`W BDFChar: 2190 2255 7 1 5 -2 8 J:O#caG?4^a9W%O BDFChar: 2191 2256 7 1 5 -1 9 &5ZJJcqmh`cqlt- BDFChar: 2192 2257 7 0 6 0 8 rdo`RP(J:;rVuou BDFChar: 2193 2258 7 0 6 0 8 rdp#ZJqB_KrVuou BDFChar: 2194 2259 7 0 6 0 8 rdp#ZP(KE[rVuou BDFChar: 2195 2260 7 0 6 0 8 rdq/%JqC"SrVuou BDFChar: 2196 2261 7 0 6 0 8 rdq/%P(K]crVuou BDFChar: 2197 2262 7 0 6 0 8 rdq/%We.7&rVuou BDFChar: 2198 2263 7 0 5 0 8 0JNDY0JG170E;(Q BDFChar: 2199 2264 7 0 6 0 9 I"INeP*1ukJp[Ou BDFChar: 2200 2265 7 0 6 0 9 I"JY]MNX^FJp[Ou BDFChar: 2201 2266 7 0 6 0 9 I"JY]ZAOOFJp[Ou BDFChar: 2202 2267 7 0 6 0 9 I"I6EWk+(FJp[Ou BDFChar: 2203 2268 7 0 6 0 9 I"Jr(ZAOOFJp[Ou BDFChar: 2204 2269 7 0 6 0 9 I"If]ZDspfJp[Ou BDFChar: 2205 2270 7 0 6 0 9 I"JqeMNX-cJp[Ou BDFChar: 2206 2271 7 0 6 0 9 I"IN]P,bOFJp[Ou BDFChar: 2207 2272 7 0 6 0 9 I"IN]Wg\gNJp[Ou BDFChar: 2208 2273 7 0 6 0 9 I"JBl[^NWEJp[Ou BDFChar: 2209 2274 7 0 6 0 9 I/`QZmdBN2rd4\G BDFChar: 2210 2275 7 0 6 0 9 I/_Fbp?peWrd4\G BDFChar: 2211 2276 7 0 6 0 9 I/_FbcM$tWrd4\G BDFChar: 2212 2277 7 0 6 0 9 I/`j%f#IFWrd4\G BDFChar: 2213 2278 7 0 6 0 9 I/_.BcM$tWrd4\G BDFChar: 2214 2279 7 0 6 0 9 I/`9bcIUS7rd4\G BDFChar: 2215 2280 7 0 6 0 9 I/_.Zp?qA:rd4\G BDFChar: 2216 2281 7 0 6 0 9 I/`QbmaftWrd4\G BDFChar: 2217 2282 7 0 6 0 9 I/`Qbf&l\Ord4\G BDFChar: 2218 2283 7 0 6 0 9 I/_]Sb0%lXrd4\G BDFChar: 2219 2284 7 0 6 1 7 &/b?Er"otF BDFChar: 2220 2285 7 0 4 0 9 (he_=(r3A3YeU5= BDFChar: 2221 2286 7 0 4 3 7 -toPm-ia5I BDFChar: 2222 2287 7 0 4 3 7 TWkB!TE"rl BDFChar: 2223 2288 7 0 4 3 7 LtLqDL]@DT BDFChar: 2224 2289 7 0 4 3 7 LtK5iL]@DT BDFChar: 2225 2290 7 0 4 3 7 LtMLTL]@DT BDFChar: 2226 2291 7 0 4 3 7 LsY),L]@DT BDFChar: 2227 2292 7 0 4 3 7 LfcW=L]@DT BDFChar: 2228 2293 7 0 4 3 7 peW)0p](9o BDFChar: 2229 2294 7 0 4 3 7 pi%?pp](9o BDFChar: 2230 2295 7 1 5 2 6 E/:HKDu]k< BDFChar: 2231 2296 7 1 5 2 6 E2`Q1Du]k< BDFChar: 2232 2297 7 1 5 2 6 E7h,ADu]k< BDFChar: 2233 2298 7 1 5 2 6 Lkr!cDu]k< BDFChar: 2234 2299 7 1 5 2 6 W;*sg3 BDFChar: 2257 2322 7 0 6 1 7 &3*pd>W<8p BDFChar: 2258 2323 7 0 6 1 7 &3,(:6mrTH BDFChar: 2259 2324 7 0 6 1 7 &1BsGHoMZ; BDFChar: 2260 2325 7 0 6 2 6 I/a-EHiO-H BDFChar: 2261 2326 7 0 6 2 6 I"Hs%HiO-H BDFChar: 2262 2327 7 1 5 1 7 E;95'q"Se. BDFChar: 2263 2328 7 1 5 1 7 E/9=+Lkp!M BDFChar: 2264 2329 7 0 4 1 6 pjhjaJ:IV" BDFChar: 2265 2330 7 0 4 1 6 G^s`=#k.fo BDFChar: 2266 2331 7 0 0 0 0 z BDFChar: 2267 2332 7 0 0 0 0 z BDFChar: 2268 2333 7 0 0 0 0 z BDFChar: 2269 2334 7 0 0 0 0 z BDFChar: 2270 2335 7 0 0 0 0 z BDFChar: 2271 2336 7 0 0 0 0 z BDFChar: 2272 2337 7 0 0 0 0 z BDFChar: 2273 2338 7 0 0 0 0 z BDFChar: 2274 2339 7 0 0 0 0 z BDFChar: 2275 2340 7 0 0 0 0 z BDFChar: 2276 2341 7 0 0 0 0 z BDFChar: 2277 2342 7 0 0 0 0 z BDFChar: 2278 2343 7 0 0 0 0 z BDFChar: 2279 2344 7 0 0 0 0 z BDFChar: 2280 2345 7 0 0 0 0 z BDFChar: 2281 2346 7 0 0 0 0 z BDFChar: 2282 2347 7 0 0 0 0 z BDFChar: 2283 2348 7 0 0 0 0 z BDFChar: 2284 2349 7 0 0 0 0 z BDFChar: 2285 2350 7 0 0 0 0 z BDFChar: 2286 2351 7 0 0 0 0 z BDFChar: 2287 2352 7 0 0 0 0 z BDFChar: 2288 2353 7 0 0 0 0 z BDFChar: 2289 2354 7 0 0 0 0 z BDFChar: 2290 2355 7 0 0 0 0 z BDFChar: 2291 2356 7 0 0 0 0 z BDFChar: 2292 2357 7 0 0 0 0 z BDFChar: 2293 2358 7 0 0 0 0 z BDFChar: 2294 2359 7 0 0 0 0 z BDFChar: 2295 2360 7 0 0 0 0 z BDFChar: 2296 2361 7 0 0 0 0 z BDFChar: 2297 2362 7 0 0 0 0 z BDFChar: 2298 2363 7 0 0 0 0 z BDFChar: 2299 2364 7 0 0 0 0 z BDFChar: 2300 2365 7 0 0 0 0 z BDFChar: 2301 2366 7 0 0 0 0 z BDFChar: 2302 2367 7 0 0 0 0 z BDFChar: 2303 2368 7 0 0 0 0 z BDFChar: 2304 2369 7 0 0 0 0 z BDFChar: 2305 2370 7 0 0 0 0 z BDFChar: 2306 2371 7 0 0 0 0 z BDFChar: 2307 2372 7 0 0 0 0 z BDFChar: 2308 2373 7 0 0 0 0 z BDFChar: 2309 2374 7 0 0 0 0 z BDFChar: 2310 2375 7 0 0 0 0 z BDFChar: 2311 2376 7 0 0 0 0 z BDFChar: 2312 2377 7 0 0 0 0 z BDFChar: 2313 2378 7 0 0 0 0 z BDFChar: 2314 2379 7 0 0 0 0 z BDFChar: 2315 2380 7 0 0 0 0 z BDFChar: 2316 2381 7 0 0 0 0 z BDFChar: 2317 2382 7 0 0 0 0 z BDFChar: 2318 2383 7 0 0 0 0 z BDFChar: 2319 2384 7 0 0 0 0 z BDFChar: 2320 2385 7 0 0 0 0 z BDFChar: 2321 2386 7 0 0 0 0 z BDFChar: 2322 2387 7 0 0 0 0 z BDFChar: 2323 2388 7 0 0 0 0 z BDFChar: 2324 2389 7 0 0 0 0 z BDFChar: 2325 2390 7 0 0 0 0 z BDFChar: 2326 2391 7 0 0 0 0 z BDFChar: 2327 2392 7 0 0 0 0 z BDFChar: 2328 2393 7 0 0 0 0 z BDFChar: 2329 2394 7 0 0 0 0 z BDFChar: 2330 2395 7 0 0 0 0 z BDFChar: 2331 2396 7 0 0 0 0 z BDFChar: 2332 2397 7 0 0 0 0 z BDFChar: 2333 2398 7 0 0 0 0 z BDFChar: 2334 2399 7 0 0 0 0 z BDFChar: 2335 2400 7 0 0 0 0 z BDFChar: 2336 2401 7 0 0 0 0 z BDFChar: 2337 2402 7 0 0 0 0 z BDFChar: 2338 2403 7 0 0 0 0 z BDFChar: 2339 2404 7 0 0 0 0 z BDFChar: 2340 2405 7 0 0 0 0 z BDFChar: 2341 2406 7 0 0 0 0 z BDFChar: 2342 2407 7 0 0 0 0 z BDFChar: 2343 2408 7 0 0 0 0 z BDFChar: 2344 2409 7 0 0 0 0 z BDFChar: 2345 2410 7 0 0 0 0 z BDFChar: 2346 2411 7 0 0 0 0 z BDFChar: 2347 2412 7 0 0 0 0 z BDFChar: 2348 2413 7 0 0 0 0 z BDFChar: 2349 2414 7 0 0 0 0 z BDFChar: 2350 2415 7 0 0 0 0 z BDFChar: 2351 2416 7 0 0 0 0 z BDFChar: 2352 2417 7 0 0 0 0 z BDFChar: 2353 2418 7 0 0 0 0 z BDFChar: 2354 2419 7 0 0 0 0 z BDFChar: 2355 2420 7 0 0 0 0 z BDFChar: 2356 2421 7 0 0 0 0 z BDFChar: 2357 2422 7 0 0 0 0 z BDFChar: 2358 2423 7 0 0 0 0 z BDFChar: 2359 2424 7 0 0 0 0 z BDFChar: 2360 2425 7 0 0 0 0 z BDFChar: 2361 2426 7 0 0 0 0 z BDFChar: 2362 2427 7 0 0 0 0 z BDFChar: 2363 2428 7 0 0 0 0 z BDFChar: 2364 2429 7 0 0 0 0 z BDFChar: 2365 2430 7 0 0 0 0 z BDFChar: 2366 2431 7 0 0 0 0 z BDFChar: 2367 2432 7 0 0 0 0 z BDFChar: 2368 2433 7 0 0 0 0 z BDFChar: 2369 2434 7 0 0 0 0 z BDFChar: 2370 2435 7 0 0 0 0 z BDFChar: 2371 2436 7 0 0 0 0 z BDFChar: 2372 2437 7 0 0 0 0 z BDFChar: 2373 2438 7 0 0 0 0 z BDFChar: 2374 2439 7 0 0 0 0 z BDFChar: 2375 2440 7 0 0 0 0 z BDFChar: 2376 2441 7 0 0 0 0 z BDFChar: 2377 2442 7 0 0 0 0 z BDFChar: 2378 2443 7 0 0 0 0 z BDFChar: 2379 2444 7 0 0 0 0 z BDFChar: 2380 2445 7 0 0 0 0 z BDFChar: 2381 2446 7 0 0 0 0 z BDFChar: 2382 2447 7 0 0 0 0 z BDFChar: 2383 2448 7 0 0 0 0 z BDFChar: 2384 2449 7 0 0 0 0 z BDFChar: 2385 2450 7 0 0 0 0 z BDFChar: 2386 2451 7 0 0 0 0 z BDFChar: 2387 2452 7 0 0 0 0 z BDFChar: 2388 2453 7 0 0 0 0 z BDFChar: 2389 2454 7 0 0 0 0 z BDFChar: 2390 2455 7 0 0 0 0 z BDFChar: 2391 2456 7 0 0 0 0 z BDFChar: 2392 2457 7 0 0 0 0 z BDFChar: 2393 2458 7 0 0 0 0 z BDFChar: 2394 2459 7 0 0 0 0 z BDFChar: 2395 2460 7 0 4 0 8 pkX`^LkpkCp](9o BDFChar: 2396 160 7 6 6 -2 -2 z BDFChar: 2397 2461 7 0 5 0 9 ^hdh'Ci!oM$k*+9 BDFChar: 2398 2462 7 0 6 -2 9 ^hdh'Ci!oM$k*OK BDFChar: 2399 2463 7 0 0 0 0 z BDFChar: 2400 2464 7 0 0 0 0 z BDFChar: 2401 2465 7 0 0 0 0 z BDFChar: 2402 2466 7 0 0 0 0 z BDFChar: 2403 2467 7 0 0 0 0 z BDFChar: 2404 2468 7 0 0 0 0 z BDFChar: 2405 2469 0 0 0 0 0 z BDFChar: 2406 2470 7 0 6 2 8 &4@q0-q"UH BDFChar: 2407 2471 7 2 5 3 7 :sdS9:]LIq BDFChar: 2408 2472 7 1 4 3 7 TWkZ)TE"rl BDFChar: 2409 2473 7 1 5 3 7 W,VNNVuQet BDFChar: 2410 2474 7 1 4 3 7 &-.4\&-)\1 BDFChar: 2411 2475 7 1 5 3 7 +972t+92BA BDFChar: 2412 2476 7 1 5 3 7 L]AOtL]@DT BDFChar: 2413 2477 7 3 3 2 8 J,fQL!!%NL BDFChar: 2414 2478 7 1 5 2 8 +92Ct!!",A BDFChar: 2415 2479 7 0 6 2 8 &6'5?&6'2@ BDFChar: 2416 2480 7 3 3 2 8 J,fS"!!%NL BDFChar: 2417 2481 7 3 3 2 8 J,k*"J,k*" BDFChar: 2418 2482 7 0 6 0 8 E5:>_f\Uii*WQ0? BDFChar: 2419 2483 7 0 5 -1 9 &3Ne9d*U.d:co9h BDFChar: 2420 2484 7 0 5 0 8 4@$^+f\"hA49,?] BDFChar: 2421 2485 7 0 5 0 8 Hsg>iG[OqK?iU0, BDFChar: 2422 2486 7 1 5 0 8 3+-.`@.7Q3p](9o BDFChar: 2423 2487 7 0 6 0 6 G^NOsFOX7i BDFChar: 2424 2488 7 0 6 0 8 9Pf+UI/\M0A,lT0 BDFChar: 2425 2489 7 0 6 0 8 i6^?5q!@_&g].-ia5I BDFChar: 2471 2535 7 1 5 2 8 +E48uW$!2_ BDFChar: 2472 2536 7 0 6 3 7 -kuXp-ia5I BDFChar: 2473 2537 7 1 5 2 8 +<[V%W,NjZ BDFChar: 2474 2538 7 0 6 3 8 "=d%A814H< BDFChar: 2475 2539 7 0 6 3 8 5cCK-,U`Wm BDFChar: 2476 2540 7 0 5 2 8 quCtL:e1]h BDFChar: 2477 2541 7 0 6 2 8 &3`AY5X#_Z BDFChar: 2478 2542 7 0 6 2 8 &GQD-"S`N. BDFChar: 2479 2543 7 1 5 1 8 +E5t0:iK6M BDFChar: 2480 2544 7 1 5 1 8 +E5t0:tUU! BDFChar: 2481 2545 7 0 6 3 7 ke)Y_kPtS_ BDFChar: 2482 2546 7 0 6 2 8 rd_YcW2+qD BDFChar: 2483 2547 7 0 6 2 8 !_Op\H34'G BDFChar: 2484 2548 7 0 6 3 7 -qO>.-ia5I BDFChar: 2485 2549 7 0 6 3 7 -m\d;-ia5I BDFChar: 2486 2550 7 0 6 3 7 <0I6D;ucmu BDFChar: 2487 2551 7 0 6 3 7 .SB\4.KBGK BDFChar: 2488 2552 7 0 6 3 7 W20EgVuQet BDFChar: 2489 2553 7 0 6 3 7 +CMok+92BA BDFChar: 2490 2554 7 0 6 3 7 #RpP<#QOi) BDFChar: 2491 2555 7 0 6 3 7 -u?J2-ia5I BDFChar: 2492 2556 7 1 5 0 6 q"XXZq"XUa BDFChar: 2493 2557 7 0 5 0 8 bfn;Tbfn;Tqu?]s BDFChar: 2494 2558 7 0 5 0 9 $k*si0JHmB^q]pM BDFChar: 2495 2559 7 0 5 0 9 ^qa>c0JF=\$k*+9 BDFChar: 2496 2560 7 1 5 2 6 fPpV)fDkmO BDFChar: 2497 2561 7 0 4 2 5 E7if^ BDFChar: 2498 2562 7 0 6 -2 10 5#bK\<)cgr<)cgrp](9o BDFChar: 2499 2563 7 0 6 -2 10 'IY@XI&a3HHmgBk:]LIq BDFChar: 2500 2564 7 1 5 3 7 +92BAL]@DT BDFChar: 2501 2565 7 1 5 3 7 L]@DT+92BA BDFChar: 2502 2566 7 3 3 3 7 J,fQLJ,fQL BDFChar: 2503 2567 7 1 5 3 7 L]@DTL]@DT BDFChar: 2504 2568 7 1 5 4 6 +9;0: BDFChar: 2505 2569 7 1 5 2 6 #QX>o#QOi) BDFChar: 2506 2570 7 1 5 2 6 L]I2ML]@DT BDFChar: 2507 2571 7 0 5 1 6 &--7.!"],1 BDFChar: 2508 2572 7 0 5 3 5 A@.^( BDFChar: 2509 2573 7 0 5 3 5 R'^B( BDFChar: 2510 2574 7 0 6 3 7 $te)7?iU0, BDFChar: 2511 2575 7 0 5 2 8 @'Hjh1c-$L BDFChar: 2512 2576 7 2 4 0 7 ^gLPX^qd`n BDFChar: 2513 2577 7 0 5 2 6 #\^R^+92BA BDFChar: 2514 2578 7 0 5 1 7 #\^R^+T+J) BDFChar: 2515 2579 7 0 5 0 7 #\^R^@'j$$ BDFChar: 2516 2580 7 0 5 0 7 @'gbYZkrf@ BDFChar: 2517 2581 7 0 5 0 8 @'gbYZl!2X(]XO9 BDFChar: 2518 2582 7 0 5 1 7 (pmZNquHWp BDFChar: 2519 2583 7 0 5 0 9 *,r]4*8idb38ac: BDFChar: 2520 2584 7 0 5 0 9 i&D-)i#H^OE#\iX BDFChar: 2521 2585 7 0 5 1 6 r4p+`_#+04 BDFChar: 2522 2586 7 0 5 1 6 r!WuB%/^)* BDFChar: 2523 2587 7 0 5 0 7 r4p+`_#+31 BDFChar: 2524 2588 7 0 5 0 7 r!WuB%/^,' BDFChar: 2525 2589 7 0 5 1 6 r63C/bfg%e BDFChar: 2526 2590 7 0 5 1 6 bfn;TbkqG@ BDFChar: 2527 2591 7 0 6 1 7 I)_>\P/_kL BDFChar: 2528 2592 7 0 6 1 7 I)^cLK#W0< BDFChar: 2529 2593 7 0 6 1 7 I)`1LWlBDd BDFChar: 2530 2594 7 0 6 1 7 I)_&,U;hQ\ BDFChar: 2531 2595 7 0 6 1 7 I)^c$K#W0< BDFChar: 2532 2596 7 0 6 1 7 I)_>LP/_kL BDFChar: 2533 2597 7 0 6 1 7 I)`aL]#K*t BDFChar: 2534 2598 7 0 6 1 7 I)^cLK#W0< BDFChar: 2535 2599 7 0 6 1 7 rdp&0JEM) BDFChar: 2555 2619 7 0 5 1 8 quAE)BP>?& BDFChar: 2556 2620 7 0 5 1 8 quF[RBP9(R BDFChar: 2557 2621 7 0 6 1 7 &3+LGCcDt+ BDFChar: 2558 2622 7 3 3 4 4 J,fQL BDFChar: 2559 2623 7 1 5 2 6 +K07X+92BA BDFChar: 2560 2624 7 0 6 1 7 &4@rG-q"UH BDFChar: 2561 2625 7 0 5 1 6 `+Wgt0JEJ, BDFChar: 2562 2626 7 0 5 1 6 0JI0RBZ'lN BDFChar: 2563 2627 7 0 2 8 10 i.-=X BDFChar: 2564 2628 7 4 6 8 10 i#j-B BDFChar: 2565 2629 7 0 2 -2 0 J:QPX BDFChar: 2566 2630 7 4 6 -2 0 +<]SB BDFChar: 2567 2631 7 2 6 -2 10 (bf?*^qdb$^qdb$^]4?7 BDFChar: 2568 2632 7 2 3 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2569 2633 7 2 6 -2 10 ^qdb$^qdb$^gLP((]XO9 BDFChar: 2570 2634 7 0 3 -2 10 JA>Q#0JG170JG170E;(Q BDFChar: 2571 2635 7 2 3 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2572 2636 7 0 3 -2 10 0JG170JG170OS;(J,fQL BDFChar: 2573 2637 7 2 6 -2 10 pqX\\^qdb$^qdb$^]4?7 BDFChar: 2574 2638 7 2 3 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2575 2639 7 2 6 -2 10 ^qdb$^qdb$^qdb$p](9o BDFChar: 2576 2640 7 0 3 -2 10 n1ZOM0JG170JG170E;(Q BDFChar: 2577 2641 7 2 3 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2578 2642 7 0 3 -2 10 0JG170JG170JG17n,NFg BDFChar: 2579 2643 7 2 6 -2 10 3+0P;^qdb$^qdb$^]4?7 BDFChar: 2580 2644 7 0 3 -2 10 0JG170OV\(0JG170E;(Q BDFChar: 2581 2645 7 2 6 -2 10 ^qdb$^qdb$^qd`n2uipY BDFChar: 2582 2646 7 2 3 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2583 2647 7 0 3 -2 10 ^gJiM0JG170JG170E;(Q BDFChar: 2584 2648 7 2 6 -2 10 ^qdb$^gK-0^qdb$^]4?7 BDFChar: 2585 2649 7 0 3 -2 10 0JG170JG170JG1g^]4?7 BDFChar: 2586 2650 7 2 3 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2587 2651 7 0 5 -1 9 G^s`=n,PF96ps!7 BDFChar: 2588 2652 7 0 4 -1 9 G^s`=n,PEZ&.gf$ BDFChar: 2589 2653 7 0 5 4 4 ZiC(+ BDFChar: 2590 2654 7 0 5 3 4 ['Tf5 BDFChar: 2591 2655 7 3 3 -2 10 J:N.M!.]TM!!%P"J,fQL BDFChar: 2592 2656 7 2 3 -2 10 ^qd_c!5QCc!!'gM^]4?7 BDFChar: 2593 2657 7 0 6 9 10 rr)lt BDFChar: 2594 2658 7 6 6 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2595 2659 7 0 6 1 7 3,GUpWbaWp BDFChar: 2596 2660 7 0 6 1 7 3(/q0P!h80 BDFChar: 2597 2661 7 0 6 2 9 &.gi#HoPq1 BDFChar: 2598 2662 7 0 6 2 9 &.g806n!FN BDFChar: 2599 2663 7 0 5 0 8 3+0PCgrR9=2uipY BDFChar: 2600 2664 7 0 6 0 8 Cm'C%Jj`!T&-)\1 BDFChar: 2601 2665 7 0 6 0 8 &1Bq7Jj`!T&-)\1 BDFChar: 2602 2666 7 0 6 0 8 &1BquP.FU(2uipY BDFChar: 2603 2667 7 0 6 0 8 &1Ar+]"1iP2uipY BDFChar: 2604 2668 7 0 6 0 8 rkumrrkQ=b^]4?7 BDFChar: 2605 2669 7 0 6 0 8 rquQhrkQ=b^]4?7 BDFChar: 2606 2670 7 0 6 0 9 I/`QZmdBN2rd4\G BDFChar: 2607 2671 7 0 6 0 9 I/_Fbp?peWrd4\G BDFChar: 2608 2672 7 0 6 0 9 I/_FbcM$tWrd4\G BDFChar: 2609 2673 7 0 6 0 9 I/`j%f#IFWrd4\G BDFChar: 2610 2674 7 0 6 0 9 I/_.BcM$tWrd4\G BDFChar: 2611 2675 7 0 6 0 9 I/`9bcIUS7rd4\G BDFChar: 2612 2676 7 0 6 0 9 I/_.Zp?qA:rd4\G BDFChar: 2613 2677 7 0 6 0 9 I/`QbmaftWrd4\G BDFChar: 2614 2678 7 0 6 0 9 I/`Qbf&l\Ord4\G BDFChar: 2615 2679 7 0 6 0 9 I/_]Sb0%lXrd4\G BDFChar: 2616 2680 7 0 5 2 6 &.&1>&-)\1 BDFChar: 2617 2681 7 1 5 2 6 +<^G%+92BA BDFChar: 2618 2682 7 1 5 4 4 p](9o BDFChar: 2619 2683 7 1 5 2 6 +9;0:+92BA BDFChar: 2620 2684 7 1 5 0 4 J4M(*GQ7^D BDFChar: 2621 2685 7 1 5 2 6 +;";Z+92BA BDFChar: 2622 2686 7 1 5 0 4 GShi"J,fQL BDFChar: 2623 2687 7 0 5 2 6 &.&1>&-)\1 BDFChar: 2624 2688 7 0 5 2 6 &.&1>&-)\1 BDFChar: 2625 2689 7 0 5 2 6 &/b<^&-)\1 BDFChar: 2626 2690 7 0 5 2 6 &/b<^&-)\1 BDFChar: 2627 2691 7 0 5 2 6 &/`%s&-)\1 BDFChar: 2628 2692 7 0 6 1 7 &/`'o]GM1[ BDFChar: 2629 2693 7 0 6 1 7 WW7VNJcMeN BDFChar: 2630 2694 7 0 6 1 7 rr2orrr2ls BDFChar: 2631 2695 7 0 6 1 7 rdo`RJqEt% BDFChar: 2632 2696 7 0 5 0 8 ?smC3@.7Q3HiO-H BDFChar: 2633 2697 7 1 4 0 8 n6fYn@.7Q3n,NFg BDFChar: 2634 2698 7 0 5 0 8 0JG2&\1fTj49,?] BDFChar: 2635 2699 7 0 5 0 8 G\m:oG[Ooe?iU0, BDFChar: 2636 2700 7 0 5 -1 8 prpt+pu(Yob[:DN EndBitmapFont BitmapFont: 16 2804 13 3 1 xos4 BDFStartProperties: 39 FONT 1 "-xos4-Gambas-Bold-R-Normal--16-150-75-75-P-89-ISO10646-1" SIZE 1 "15 75 75" FONTBOUNDINGBOX 1 "9 18 0 -3" COMMENT 0 "Generated by fontforge, http://fontforge.sourceforge.net" COMMENT 0 "Copyright (C) 2012 Benoit Minisini" FOUNDRY 16 "xos4" FAMILY_NAME 16 "Gambas" WEIGHT_NAME 16 "Bold" SLANT 16 "R" SETWIDTH_NAME 16 "Normal" ADD_STYLE_NAME 16 "" PIXEL_SIZE 18 16 POINT_SIZE 18 150 RESOLUTION_X 19 75 RESOLUTION_Y 19 75 SPACING 16 "P" AVERAGE_WIDTH 18 89 CHARSET_REGISTRY 16 "ISO10646" CHARSET_ENCODING 16 "1" FONTNAME_REGISTRY 16 "" CHARSET_COLLECTIONS 16 "ASCII ISOLatin1Encoding ISO8859-2 ISO8859-5 ISO8859-7 ISO8859-9 ISO8859-6 ISO8859-4 ISO10646-1" FONT_NAME 16 "Gambas" FACE_NAME 16 "Gambas Bold" COPYRIGHT 16 "Copyright (c) Benoit Minisini" FONT_VERSION 16 "001.000" FONT_ASCENT 18 13 FONT_DESCENT 18 3 UNDERLINE_POSITION 18 -2 UNDERLINE_THICKNESS 18 1 X_HEIGHT 18 7 CAP_HEIGHT 18 10 RAW_ASCENT 18 846 RAW_DESCENT 18 154 NORM_SPACE 18 9 RELATIVE_WEIGHT 19 50 RELATIVE_SETWIDTH 19 50 FIGURE_WIDTH 18 9 AVG_LOWERCASE_WIDTH 18 89 AVG_UPPERCASE_WIDTH 18 90 BDFEndProperties BDFChar: 0 0 9 1 7 0 10 WW7VNJcLB&JcMeN BDFChar: 1 32 9 8 8 -2 -2 z BDFChar: 2 33 9 3 4 0 10 ^qdb$^qdb$!5QAM BDFChar: 3 34 9 2 6 9 11 f\"gV BDFChar: 4 35 9 1 7 0 10 Ci!qeCi!qeCi!nf BDFChar: 5 36 9 1 6 -1 11 0JImi^qb1'$k2nb0E;(Q BDFChar: 6 37 9 0 8 0 11 Eraqph>h^!$ig\9(]YBQ2ZQ!kD1H7! BDFChar: 7 38 9 0 7 0 10 3,EDI3&#F1bhdC@ BDFChar: 8 39 9 3 4 9 11 ^qd_c BDFChar: 9 40 9 2 5 -1 11 0OS;(^qdb$^qa>c0E;(Q BDFChar: 10 41 9 2 5 -1 11 ^gLP(0JG170JHmB^]4?7 BDFChar: 11 42 9 0 7 2 8 (u'KVIbP\> BDFChar: 12 43 9 0 7 2 8 (`4+i(`4(i BDFChar: 13 44 9 3 4 -2 1 ^q`3c BDFChar: 14 45 9 0 7 5 5 rr<$! BDFChar: 15 46 9 3 4 0 1 ^q]pM BDFChar: 16 47 9 1 7 0 11 "pPJE(`4q\?spdc BDFChar: 17 48 9 1 7 0 10 I)a1OhY-*O`l>rX928 BDFChar: 22 53 9 1 7 0 10 rkQ=bp^@?2"q:8, BDFChar: 23 54 9 1 7 0 10 4CGt?r5Qar`l+ BDFChar: 34 65 9 1 7 0 10 I)a1G`r`l8 BDFChar: 45 76 9 1 7 0 10 ^qdb$^qdb$^qfpL BDFChar: 46 77 9 0 7 0 10 _o([#s4c;G_o'@l BDFChar: 47 78 9 1 7 0 10 `l@0'p=A*GcGmj( BDFChar: 48 79 9 1 7 0 10 I)a1G`l?$<`l8 BDFChar: 52 83 9 1 7 0 10 I_`b7^jH=j"pXu* BDFChar: 53 84 9 0 7 0 10 rtlRi(`4),(`4(i BDFChar: 54 85 9 1 7 0 10 `l?$<`l?$<`l(`4q\?srs6 BDFChar: 60 91 9 2 6 -1 11 pqX\\^qdb$^qdb$p](9o BDFChar: 61 92 9 1 7 0 11 ^qa>c0JF=\$k*=E BDFChar: 62 93 9 2 6 -1 11 p_Xhb(`4),(`4),p](9o BDFChar: 63 94 9 2 7 7 12 0JI`rbfg%e BDFChar: 64 95 9 0 7 0 0 rr<$! BDFChar: 65 96 9 3 5 10 11 ^gI-B BDFChar: 66 97 9 1 7 0 7 Hj0e(`l?#I BDFChar: 67 98 9 1 7 0 10 ^qdb``l?$<`l@oV BDFChar: 68 99 9 1 7 0 7 I_`b7^qda7 BDFChar: 69 100 9 1 7 0 10 "pP9\`l?$<`l8 BDFChar: 77 108 9 2 6 0 10 i*]r#?smAM?skqo BDFChar: 78 109 9 0 7 0 7 rnH2^gY:K; BDFChar: 79 110 9 1 7 0 7 r5Qar`l?$< BDFChar: 80 111 9 1 7 0 7 I)a1G`l?#G BDFChar: 81 112 9 1 7 -3 7 r5Qar`l?$r^qd_c BDFChar: 82 113 9 1 7 -3 7 I`BCI`l?#I"pP83 BDFChar: 83 114 9 1 7 0 7 hVc2b^qdb$ BDFChar: 84 115 9 1 7 0 7 I_`a<*!QWF BDFChar: 85 116 9 1 7 0 10 ?smC??smAM?sl.u BDFChar: 86 117 9 1 7 0 7 `l?$<`l?#G BDFChar: 87 118 9 0 7 0 7 _o$(u4?OGt BDFChar: 88 119 9 0 7 0 7 _o(6`s8Q\C BDFChar: 89 120 9 1 7 0 7 `l;gS3,HUS BDFChar: 90 121 9 1 7 -3 7 `l?$<`l?#I"pXu* BDFChar: 91 122 9 1 7 0 7 rWWcJ0OV]q BDFChar: 92 123 9 2 7 -1 11 *&''#0JME=0JG17)uos= BDFChar: 93 124 9 3 4 -3 10 ^qdb$^qdb$^qdb$^q]pM BDFChar: 94 125 9 2 7 -1 11 i%Qi=0JFJ#0JG17huE`W BDFChar: 95 126 9 0 7 9 11 F5+t? BDFChar: 96 161 9 3 4 0 10 ^q]pM^qdb$^qd_c BDFChar: 97 162 9 1 7 -2 9 (`7_;^qdb$^j[+; BDFChar: 98 163 9 1 7 0 10 *\^u0@/+,;?srs6 BDFChar: 99 164 9 0 7 1 7 gLe@@_e.X' BDFChar: 100 165 9 0 7 0 10 _o$(u4?S'0IM`n% BDFChar: 101 166 9 3 4 0 12 ^qdb$^q]rc^qdb$^]4?7 BDFChar: 102 167 9 1 7 -3 10 I_`b7Gg+1IAip8%#5eH$ BDFChar: 103 168 9 2 6 11 11 fDkmO BDFChar: 104 169 9 0 7 1 10 I`%_]Z*CR)_gVRc BDFChar: 105 170 9 1 6 5 10 GRSuDb^9Bj BDFChar: 106 171 9 0 7 2 8 )`DNbCc344 BDFChar: 107 172 9 1 7 3 7 rWWQ2"onW' BDFChar: 108 173 9 1 6 5 5 qu?]s BDFChar: 109 174 9 0 7 0 11 I`$`I[Cs,a[=Q5E BDFChar: 110 175 9 2 5 12 12 n,NFg BDFChar: 111 176 9 1 5 7 10 E7if^ BDFChar: 112 177 9 0 7 1 9 (`4+i(`4(irr<$! BDFChar: 113 178 9 2 6 6 11 n/)ur@/'^% BDFChar: 114 179 9 2 6 6 11 n/-*])"7M* BDFChar: 115 180 9 2 4 10 11 @))aB BDFChar: 116 181 9 0 7 -3 7 `l?$<`l?$q^qd_c BDFChar: 117 182 9 1 7 0 10 IeNL/p@`Yf2E!Gn BDFChar: 118 183 9 3 4 4 5 ^q]pM BDFChar: 119 184 9 2 5 -3 -1 ?ngL= BDFChar: 120 185 9 2 5 6 11 0Q?M80JEJ, BDFChar: 121 186 9 1 6 6 10 Gg+CUGQ7^D BDFChar: 122 187 9 0 7 2 8 fPEGb2Jh"G BDFChar: 123 188 9 0 7 -3 12 0Q?M80erk;&0O`.()@tr BDFChar: 124 189 9 0 7 -3 12 0Q?M80erk;&0P;3!sT/U BDFChar: 125 190 9 0 7 -3 12 n/-*])=dn9&0O`.()@tr BDFChar: 126 191 9 1 7 0 10 0JEJ\0OV]3^rCa% BDFChar: 127 192 9 1 7 0 12 ?n_S.`l?$t`l?$<`W,u= BDFChar: 128 193 9 1 7 0 12 $lAtl`l?$t`l?$<`W,u= BDFChar: 129 194 9 1 7 0 12 &3+J+I)a1Grl2st`W,u= BDFChar: 130 195 9 1 7 0 12 G2*(F`l?$t`l?$<`W,u= BDFChar: 131 196 9 1 7 0 12 C]Jk&`l?$t`l?$<`W,u= BDFChar: 132 197 9 1 7 0 12 3,CPSI)a1Grl2st`W,u= BDFChar: 133 198 9 0 7 0 10 J'?-\bl>o2bfnB5 BDFChar: 134 199 9 1 7 -3 10 I_`b7^qdb$^qbC9$oe4e BDFChar: 135 200 9 1 7 0 12 0Gjfh^qdb`^qdb$rVuou BDFChar: 136 201 9 1 7 0 12 $lB!D^qdb`^qdb$rVuou BDFChar: 137 202 9 1 7 0 12 &3+J+rkQ=br4p+`rVuou BDFChar: 138 203 9 1 7 0 12 C]OIM^qdb`^qdb$rVuou BDFChar: 139 204 9 1 6 0 12 ?n_TY0JG170JG17qu?]s BDFChar: 140 205 9 1 6 0 12 (bbsf0JG170JG17qu?]s BDFChar: 141 206 9 1 6 0 12 +E5s5r%KfY0JG17qu?]s BDFChar: 142 207 9 1 6 0 12 fDth'0JG170JG17qu?]s BDFChar: 143 208 9 0 7 0 10 HtHkuA,BbG@qL)g BDFChar: 144 209 9 1 7 0 12 G2*);k2uC2hVQQ'`W,u= BDFChar: 145 210 9 1 7 0 12 ?n_S.`l?$<`l?$P(bbpi BDFChar: 246 311 9 1 7 -3 10 ^qdt6f^RhgfZ_>P(bbpi BDFChar: 247 312 9 1 7 0 7 `m!*)nCYt) BDFChar: 248 313 9 1 7 0 12 @))cX^qdb$^qdb$rVuou BDFChar: 249 314 9 2 6 0 12 0OOn=?smAM?smAM2uipY BDFChar: 250 315 9 1 7 -3 10 ^qdb$^qdb$^qfpd(bbpi BDFChar: 251 316 9 2 6 -3 10 i*]r#?smAM?skrJ0OOk\ BDFChar: 252 317 9 1 7 0 10 bfn_T^qdb$^qfpL BDFChar: 253 318 9 1 7 0 10 k%8F;?smAM?skqo BDFChar: 254 319 9 1 7 0 10 ^qdb$fYG;<^qfpL BDFChar: 255 320 9 2 7 0 10 i*]r#?u04Y?skqo BDFChar: 256 321 9 0 7 0 10 ?smAME+%U3?snHa BDFChar: 257 322 9 2 6 0 10 i*]r#E8Y,3?skqo BDFChar: 258 323 9 1 7 0 12 (bbs0k2uC2hVQQ'`W,u= BDFChar: 259 324 9 1 7 0 11 $lAsEr5Qar`l?$< BDFChar: 260 325 9 1 7 -3 10 `l@0'p=A*GcGmj@(bbpi BDFChar: 261 326 9 1 7 -3 7 r5Qar`l?$<(`4q, BDFChar: 262 327 9 1 7 0 12 CcE!Gk2uC2hVQQ'`W,u= BDFChar: 263 328 9 1 7 0 11 CcDt+r5Qar`l?$< BDFChar: 264 329 9 0 7 0 10 ?spc61G^gC1G^fe BDFChar: 265 330 9 1 7 -3 10 `l@0'p=A*GcGmj."q1J3 BDFChar: 266 331 9 1 7 -3 7 r5Qar`l?$<"pQ%I BDFChar: 267 332 9 1 7 0 12 HiSQ6`l?$<`l?$P(bbpi BDFChar: 278 343 9 1 7 -3 7 hVc2b^qdb$(`4q, BDFChar: 279 344 9 1 7 0 12 CcDt+r5Qarr:&@_`W,u= BDFChar: 280 345 9 1 7 0 11 CcDt+hVc2b^qdb$ BDFChar: 281 346 9 1 7 0 12 $lAtn^qda5"pP89qu?]s BDFChar: 282 347 9 1 7 0 11 $lAsEI_`a<*!QWF BDFChar: 283 348 9 1 7 0 12 &3+J+I_`b7Hj0cZqu?]s BDFChar: 284 349 9 1 7 0 11 &3+J+I_`a<*!QWF BDFChar: 285 350 9 1 7 -3 10 I_`b7^jH=j"pXuB$oe4e BDFChar: 286 351 9 1 7 -3 7 I_`a<*!QWF(^rA( BDFChar: 287 352 9 1 7 0 12 CcDt+I_`b7Hj0cZqu?]s BDFChar: 288 353 9 1 7 0 11 CcDt+I_`a<*!QWF BDFChar: 289 354 9 0 7 -3 10 rtlRi(`4),(`4),$oe4e BDFChar: 290 355 9 1 7 -3 10 ?smC??smAM?sl/8$oe4e BDFChar: 291 356 9 0 7 0 12 2B2u&rtlRi(`4),(]XO9 BDFChar: 292 357 9 1 7 0 12 "pSmO@/OD??smAM4obQ_ BDFChar: 293 358 9 0 7 0 10 rtlRi(k*;=(`4(i BDFChar: 294 359 9 1 7 0 10 ?smC??srn??sl.u BDFChar: 295 360 9 1 7 0 12 G2*);`l?$<`l?$q BDFChar: 330 395 9 1 7 0 10 IKfu\#(FS3`l8 BDFChar: 344 409 9 1 7 0 11 E599)`m!*)nCYt) BDFChar: 345 410 9 1 6 0 10 E%it"0`3UY0JFIH BDFChar: 346 411 9 0 7 0 10 BJ;,B(d'omB#DLd BDFChar: 347 412 9 0 7 0 10 gY:K;gY:K;gY72X BDFChar: 348 413 9 0 7 -2 10 @q0S$HY[P4B4GFZ^]4?7 BDFChar: 349 414 9 1 7 -3 7 r5Qar`l?$<"pP83 BDFChar: 350 415 9 1 7 0 10 I)a1G`r)#c3C?srs6 BDFChar: 373 438 9 1 7 0 7 rWWf10OV]q BDFChar: 374 439 9 1 7 0 10 rWWcJ3",uq#0_;l BDFChar: 375 440 9 1 7 0 10 rkMnq3+0P;^h,\/ BDFChar: 376 441 9 1 7 -3 7 rkMnq3+0P;^h,\/ BDFChar: 377 442 9 1 7 -3 7 rWWcJ49c";^qbe'ldsf%/X3mf3=f BDFChar: 388 453 9 0 7 0 10 jjMN5e'ln!gt_>u BDFChar: 389 454 9 0 7 0 10 'bV(-e'ln!gt[AZ BDFChar: 390 455 9 0 7 0 10 a2>g4_o'C0_o)HR BDFChar: 391 456 9 0 7 -3 10 ^qmh,_o'C0_o)KV!tG;2 BDFChar: 392 457 9 0 7 -3 10 i*p),@q0"Y@q.S&!tG;2 BDFChar: 393 458 9 0 7 0 10 S"&0eqtp9FgWRkB BDFChar: 394 459 9 0 7 -3 10 R$u[bqtp9FgWRbB!tG;2 BDFChar: 395 460 9 0 7 -3 9 !W_iHgY:K;gY2f4%KHJ/ BDFChar: 396 461 9 1 7 0 12 CcDt+I)a1Grl2st`W,u= BDFChar: 397 462 9 1 7 0 11 CcDt+Hj0e(`l?#I BDFChar: 398 463 9 1 6 0 12 fPhr5r%KfY0JG17qu?]s BDFChar: 399 464 9 2 7 0 11 fPhr5n1ZOM0JG3Y BDFChar: 400 465 9 1 7 0 12 CcDt+I)a1G`l?$u BDFChar: 433 498 9 0 7 0 10 i6]j.e'ln!gt_>u BDFChar: 434 499 9 0 7 0 10 &.fD&e'ln!gt[AZ BDFChar: 435 500 9 1 7 0 12 (bbr=^qdbB`l?$ BDFChar: 440 505 9 1 7 0 11 0JF=Dr5Qar`l?$< BDFChar: 441 506 9 0 7 0 12 E8,O95%A)4Iq)tu@fQK/ BDFChar: 442 507 9 0 7 0 11 E8,O94p(mO@q0"5 BDFChar: 443 508 9 0 7 0 12 $lAtobfn<2bfn;TcN!qF BDFChar: 444 509 9 0 7 0 11 "q1J3IN'5QhUpJ1 BDFChar: 445 510 9 0 7 0 12 $lAs]4_A;DG%P@!(]XO9 BDFChar: 446 511 9 0 7 0 11 $lAsE4_A;DG%P@! BDFChar: 447 512 9 1 7 0 12 fPCP8`l?$t`l?$<`W,u= BDFChar: 448 513 9 1 7 0 11 fPCNfHj0e(`l?#I BDFChar: 449 514 9 1 7 0 12 3,ASB`l?$t`l?$<`W,u= BDFChar: 450 515 9 1 7 0 10 3,ASB"pTOr`l(`4q\?srs<)uos= BDFChar: 484 549 9 1 7 -2 7 rWWcJ0OV]q"rmUC BDFChar: 485 550 9 1 7 0 12 0E?L?`l?$t`l?$<`W,u= BDFChar: 486 551 9 1 7 0 9 0E?J)#(FS3`dRmf BDFChar: 487 552 9 1 7 -3 10 rkQ=b_#2!`^qfpd$oe4e BDFChar: 488 553 9 1 7 -3 7 I)a1GrkQ$k*Oc BDFChar: 575 640 9 1 7 0 7 r5Qarr7K65 BDFChar: 576 641 9 1 7 0 7 `m!*5`l?$r BDFChar: 577 642 9 1 7 -3 7 I_`a<*!QWF^qamh BDFChar: 578 643 9 1 6 -3 10 *&''#0JG170JG170]2p2 BDFChar: 579 644 9 2 7 -3 10 *&')90JG3Y0JG170]2p2 BDFChar: 580 645 9 1 6 -3 7 i%Qi=0JG170JFIH BDFChar: 581 646 9 1 6 -3 10 *&''#0JG170JG2*TKiJW BDFChar: 582 647 9 1 7 0 10 p^@Q>$k*Pn$k*OE BDFChar: 583 648 9 1 6 -3 10 ?smC??smAM?smAM?p"Dh BDFChar: 584 649 9 0 7 0 7 AnGXes(5k* BDFChar: 585 650 9 0 7 0 7 k9OZW_o$(K BDFChar: 586 651 9 1 7 0 7 bf7ZB`l?5I BDFChar: 587 652 9 0 7 0 7 (`5@tAnJru BDFChar: 588 653 9 0 7 0 7 AnM)CgY9W` BDFChar: 589 654 9 1 7 0 10 r!!@S`l?$<`l?!u BDFChar: 590 655 9 0 7 0 7 _e)"J(`4), BDFChar: 591 656 9 1 8 -3 7 rWWcJ0OV]q"pP/0 BDFChar: 592 657 9 1 7 -1 7 rWWcJ0P&?(#QOi) BDFChar: 593 658 9 1 7 -3 7 rWWcJ3",uq#0_;l BDFChar: 594 659 9 1 7 -3 7 rWWcJ3",uqG0G+0 BDFChar: 595 660 9 1 7 0 10 I)Z?p"rogY:TAgt[AZ BDFChar: 611 676 9 0 7 -3 10 (`4*>gYUfBhV3AZ)\)iJ BDFChar: 612 677 9 0 7 -2 10 &.fD%f%/F-gu!Ma"98E% BDFChar: 613 678 9 0 7 0 10 ?smC:Ci!]n@q.\& BDFChar: 614 679 9 0 7 -3 10 B5DD^Ci!p(Chu3B$oe4e BDFChar: 615 680 9 0 7 -1 10 ?smC9D/=$)DJ_Q? BDFChar: 616 681 9 0 7 -3 10 4CDRrD/F-,D/F+j!(`4q\?srs6 BDFChar: 671 736 9 1 7 0 10 `l?$<`r8 BDFChar: 675 740 9 0 7 0 10 (`5@t4D&2;_o'@l BDFChar: 676 741 9 0 7 0 10 _o([#s4c;G_o'@l BDFChar: 677 742 9 1 7 0 10 `l@0'p=A*GcGmj( BDFChar: 678 743 9 1 7 0 10 rVuou!.4bH!!)uu BDFChar: 679 744 9 1 7 0 10 I)a1G`l?$<`l BDFChar: 689 754 9 1 6 0 12 bQ.Pp0JG170JG17qu?]s BDFChar: 690 755 9 0 7 0 12 AcT`dAnF.f*#KM0(]XO9 BDFChar: 691 756 9 0 7 0 11 $k*sQF5Gctbhh2t BDFChar: 692 757 9 1 7 0 11 (`4q,I_`aH^qda7 BDFChar: 693 758 9 1 7 -3 11 (`4q,r5Qar`l?$<"pP83 BDFChar: 694 759 9 2 6 0 11 0JHl7i*]r#?smA% BDFChar: 695 760 9 1 7 0 12 (bbs6!6iI&`l?$BGQ7^D BDFChar: 696 761 9 0 7 0 7 F5Gctbhh2t BDFChar: 697 762 9 1 7 -3 10 4D)UQbkTE%`oc'l^q]pM BDFChar: 698 763 9 1 7 -3 7 `b&gF4?OGt(bdWD BDFChar: 699 764 9 1 7 0 10 4CDPVCrXK7`b[U7 BDFChar: 700 765 9 1 7 0 7 I_`aH^qda7 BDFChar: 701 766 9 1 7 -3 10 rX9Vt?spdc^gK8/"q1J3 BDFChar: 702 767 9 1 7 -3 7 r5Qar`l?$<"pP83 BDFChar: 703 768 9 1 7 0 10 3,EEN`r=OXgY70>(`4(i BDFChar: 718 783 9 0 7 -3 7 _e*LC4;^1CAnJp\ BDFChar: 719 784 9 0 7 -3 7 gY:K;gOFZ7(`4(i BDFChar: 720 785 9 0 7 0 7 B#DO(gY:Ip BDFChar: 721 786 9 2 7 0 10 fDknj0JG170JFIH BDFChar: 722 787 9 1 7 0 10 C]FIZ`l?$<`lrZ- BDFChar: 723 788 9 1 7 0 11 (`4q,I)a1G`l?#G BDFChar: 724 789 9 1 7 0 11 (`4q,bf7ZB`l?5I BDFChar: 725 790 9 0 7 0 11 $k*sQB#DO(gY:Ip BDFChar: 726 791 9 1 7 -2 10 `m!*)i5":?fZ_>D(]XO9 BDFChar: 727 792 9 1 7 0 10 I)a1GbkTE%`l+ BDFChar: 753 818 9 0 7 0 10 k<(jD(`5@tAnM&C BDFChar: 754 819 9 0 7 0 7 k<'Ru4?R6U BDFChar: 755 820 9 0 7 0 10 "$U,.gucMl_e)"2 BDFChar: 756 821 9 1 7 0 10 #!?;/f^-Vt`b[U7 BDFChar: 757 822 9 0 7 0 10 (`<;-(`4),(`4(i BDFChar: 758 823 9 1 6 0 10 0JNF30JG170JG0\ BDFChar: 759 824 9 0 7 0 7 A%!?o(cZ?P BDFChar: 760 825 9 1 7 -3 7 3,HUS`l@At^gK>+ BDFChar: 761 826 9 1 7 0 7 I_`b7^qda7 BDFChar: 762 827 9 2 5 -3 10 0E;+B0JG170JG170]2p2 BDFChar: 763 828 9 1 7 0 10 I)a1G`rA BDFChar: 765 830 9 1 7 0 7 p^@@U"pPM2 BDFChar: 766 831 9 1 7 0 10 ^qf`h`l?$BpqXZF BDFChar: 767 832 9 1 7 -3 10 ^qdb+ BDFChar: 769 834 9 0 7 0 10 _rq'S_o'C0_o'@l BDFChar: 770 835 9 0 7 -3 7 _rq'S_o'C0^qd_c BDFChar: 771 836 9 0 7 -3 7 *&_;:@q0[u@.7P( BDFChar: 772 837 9 1 7 0 10 r!!?0"pP89"pXu* BDFChar: 773 838 9 1 7 0 10 I_`b7^t?H<^qbC! BDFChar: 774 839 9 1 7 0 10 r!!?0"uZYi"pXu* BDFChar: 775 840 9 1 7 0 12 0Gjfh^qdb`^qdb$rVuou BDFChar: 776 841 9 1 7 0 12 C]OIM^qdb`^qdb$rVuou BDFChar: 777 842 9 0 7 -3 10 r%KfY0Kq9K1G^fh"!.FB BDFChar: 778 843 9 1 7 0 12 (bbsh^qdb$^qdb$^]4?7 BDFChar: 779 844 9 1 7 0 10 5%)1A_#2!`^gK>+ BDFChar: 780 845 9 1 7 0 10 I_`b7^jH=j"pXu* BDFChar: 781 846 9 1 6 0 10 r%KfY0JG170JND) BDFChar: 782 847 9 1 6 0 12 bQ.Pp0JG170JG17qu?]s BDFChar: 783 848 9 2 7 0 10 4;\nP(`4),(`;`B BDFChar: 784 849 9 0 7 0 10 Hu*V8Ci4*,D/IPu BDFChar: 785 850 9 0 7 0 10 bfn;Tbl5l3c-=N6 BDFChar: 786 851 9 0 7 0 10 r%KfY2EN]N1G^fe BDFChar: 787 852 9 1 7 0 12 (bitRf^Rh7i:,CC`W,u= BDFChar: 788 853 9 1 7 0 12 0GqgLcHb:tp?(MW`W,u= BDFChar: 789 854 9 1 7 -3 10 CcDF7`l?$<`l8 BDFChar: 802 867 9 0 7 0 10 Iq)tu@q0"Y@q3CV BDFChar: 803 868 9 0 7 0 10 _o([#s4c;G_o'@l BDFChar: 804 869 9 1 7 0 10 `l?$<`rA BDFChar: 860 925 9 1 7 0 7 I_`a<*!QWF BDFChar: 861 926 9 2 7 0 10 0E;+B0JG170JND) BDFChar: 862 927 9 2 7 0 10 fDkp@0JG170JND) BDFChar: 863 928 9 2 5 -3 10 0E;+B0JG170JG170]2p2 BDFChar: 864 929 9 0 7 0 7 Hu*V:D/F.8 BDFChar: 865 930 9 0 7 0 7 bfn<1c-=MY BDFChar: 866 931 9 0 7 0 10 0JNDY4u4uN1G^fe BDFChar: 867 932 9 1 7 0 11 (`4q,`m!*)nCYt) BDFChar: 868 933 9 1 7 0 11 ?n_Q\cHb;'p@dY2 BDFChar: 869 934 9 1 7 -3 10 CcDF7`l?$<`lb509 BDFChar: 883 948 9 0 7 0 10 hqQ>"pP&- BDFChar: 923 988 9 1 7 -2 7 `m!*)nCYt)"pP&- BDFChar: 924 989 9 0 7 0 10 _q*VqnF5r"gt'@C BDFChar: 925 990 9 1 7 0 7 f%epInCZOI BDFChar: 926 991 9 0 7 0 10 A+j_`E+!X0Ch@/W BDFChar: 927 992 9 0 7 0 10 ?srJ6Ao)^:Ch@/W BDFChar: 928 993 9 0 7 0 10 j'u\;G]7nDAn,!s8`- BDFChar: 936 1001 9 0 7 0 10 0OW,Yg=k97g2&\J BDFChar: 937 1002 9 1 7 0 7 @*$jIeC8.i BDFChar: 938 1003 9 1 7 -3 10 I_`b7^qdb$^qbC9$oe4e BDFChar: 939 1004 9 1 7 -3 7 I_`b7^qda7(^rA( BDFChar: 940 1005 9 0 7 -3 10 rtlRi(`4),(`44q"9\]) BDFChar: 941 1006 9 0 7 -2 7 rtlRi(`4)0"9\]) BDFChar: 942 1007 9 0 7 0 10 _o$(u4?OGt(`4(i BDFChar: 943 1008 9 0 7 -3 7 _o$(u4?OGt(`4(i BDFChar: 944 1009 9 0 7 0 10 _o$(u4?WW\(`4(i BDFChar: 945 1010 9 0 7 -3 7 _o$(u4?OI0(`4(i BDFChar: 946 1011 9 0 7 -3 10 _o$(K4;^1CB#DLe!o2bfnB5 BDFChar: 981 1046 9 0 7 0 7 IN'5QhUpJ1 BDFChar: 982 1047 9 1 7 0 12 CcDFo^qdb`^qdb$rVuou BDFChar: 983 1048 9 1 7 0 10 CcDEB`l?$t^qb(/RrITkJ+ BDFChar: 990 1055 9 1 7 0 12 C]OA;"pP9Z"pP89qu?]s BDFChar: 991 1056 9 1 7 0 10 C]FJ5"pTGZ"pXu* BDFChar: 992 1057 9 1 7 0 10 rWWcJ3",uq#0_;l BDFChar: 993 1058 9 1 7 -3 7 rWWcJ3",uq#0_;l BDFChar: 994 1059 9 1 7 0 12 HiV1+cHb:tp?(MW`W,u= BDFChar: 995 1060 9 1 7 0 10 HiO/lcJIFOp?(K; BDFChar: 996 1061 9 1 7 0 12 C]MJpcHb:tp?(MW`W,u= BDFChar: 997 1062 9 1 7 0 10 C]FI\cJIFOp?(K; BDFChar: 998 1063 9 1 7 0 12 C]Jk&`l?$<`l?$ogY7/W BDFChar: 1027 1092 9 0 7 0 7 (`43=gY:J3 BDFChar: 1028 1093 9 0 7 0 10 n/)u])flr;)]K7e BDFChar: 1029 1094 9 0 7 0 7 o,AWi)]K_+ BDFChar: 1030 1095 9 1 7 -2 10 p^@Q>%!W0h$k*UI!WW3# BDFChar: 1031 1096 9 1 7 -2 7 p^@Qj$k*OS!Wi?% BDFChar: 1032 1097 9 0 7 0 10 G\Cc+CMR^$CMUoi BDFChar: 1033 1098 9 0 7 0 7 G\Cl.CMR_* BDFChar: 1034 1099 9 0 7 0 10 f\"j2g\]a[gY:!R BDFChar: 1035 1100 9 0 7 0 7 f\"sUgY:K. BDFChar: 1036 1101 9 1 7 0 10 I_`b7^rFC6`l?dQs BDFChar: 1045 1110 9 0 7 0 7 HWs65:/5#_ BDFChar: 1046 1111 9 0 7 0 10 o@r-Yh#,C9`l#[o BDFChar: 1047 1112 9 0 7 -3 7 n_;pUgtpfU^qd_c BDFChar: 1048 1113 9 0 7 0 10 J'?-\b^V`kCs:3* BDFChar: 1049 1114 9 0 7 0 7 IbWW3IlM]! BDFChar: 1050 1115 9 1 7 0 10 I)a1G`l?$8 BDFChar: 1055 1120 9 1 7 0 8 f$)e=i:,CC`W,u= BDFChar: 1056 1121 9 0 7 -3 10 GZ\'M=C,39>?dR!!sS`* BDFChar: 1057 1122 9 0 7 -3 7 GZ\'S>?b=$!s8`- BDFChar: 1058 1123 9 0 7 -3 10 f\"j/f`'X[gY:Hb!sS`* BDFChar: 1059 1124 9 0 7 -3 7 f\"jUgY:K;!s8`- BDFChar: 1060 1125 9 1 7 -2 10 r63C/bfn;Tbfn?6!WW3# BDFChar: 1061 1126 9 1 7 -2 7 r63C/bfn;V!Wi?% BDFChar: 1062 1127 9 1 7 -2 10 ^qdb$_"c-tbfn?6!WW3# BDFChar: 1063 1128 9 1 7 -2 7 ^qdb\bfn;V!Wi?% BDFChar: 1064 1129 8 1 5 1 11 G^t$ BDFChar: 1079 1144 8 1 6 1 7 #Qt85"9eK" BDFChar: 1080 1145 8 1 6 0 9 0E;(Y"9\i1"S_rs BDFChar: 1081 1146 8 1 6 1 7 "9\i1":4Js BDFChar: 1082 1147 8 1 6 0 9 "98Q-"9\i5#k.fo BDFChar: 1083 1148 8 0 6 -1 4 8replLi<=o BDFChar: 1084 1149 8 0 6 -1 9 #Qau3!(r93NehWS BDFChar: 1085 1150 8 0 8 -1 5 $33d#M1CE_NW=k8Du]k< BDFChar: 1086 1151 8 0 8 -2 7 "98E%!!!?+9n8(NNW=k8L]DAo BDFChar: 1087 1152 8 0 6 1 11 5X7S"5X8"`@Uf<: BDFChar: 1088 1153 8 0 6 1 11 5X7S"83fjh@Uf<: BDFChar: 1089 1154 8 1 6 -1 9 E.EIhG^tE*KS4RM!!#Oi BDFChar: 1102 1167 8 2 2 6 7 J:IV" BDFChar: 1103 1168 8 1 4 1 11 J:KmM5VOlG0JG0\ BDFChar: 1104 1169 8 1 5 1 11 Lkp"X5VOlG0JG0\ BDFChar: 1105 1170 8 0 5 1 11 ['Y(&5VOlG0JG0\ BDFChar: 1106 1171 8 0 5 1 11 E.EIhE.EIhJ:r.I BDFChar: 1107 1172 8 0 5 1 11 0M"`*KS5#3KS4RM BDFChar: 1108 1173 8 0 5 1 10 p]q-2#RCP9"9\]) BDFChar: 1109 1174 8 0 5 1 11 KS2le84YEg0JG0\ BDFChar: 1110 1175 8 0 5 1 11 0JG170M"`*8;)Wr BDFChar: 1111 1176 8 0 5 1 10 E/9=;GR+ET"9\]) BDFChar: 1112 1177 8 0 5 0 9 KS0U:0JGbFKS0=* BDFChar: 1113 1178 8 1 5 0 4 #RCta^]4?7 BDFChar: 1114 1179 8 2 3 11 14 5X9jM BDFChar: 1115 1180 8 0 5 1 5 #_[kaGQ7^D BDFChar: 1116 1181 8 0 5 1 6 #S`5VKQmIs BDFChar: 1117 1182 9 0 8 0 8 O+<#dL]E52s*tB*#_322pj`>E BDFChar: 1118 1183 9 0 8 0 8 pj`X##_322s+#n*L]E52O+731 BDFChar: 1119 1184 9 1 7 -3 10 I)a1G`r8&-)\1 BDFChar: 1170 1235 9 1 7 -2 10 ^qdb*bh2FSfZ_>8&-)\1 BDFChar: 1171 1236 9 1 7 -2 10 `m!*)i5":?fZ_>8HiO-H BDFChar: 1172 1237 9 1 7 -2 10 ^qdb*bh2FSfZ_>8HiO-H BDFChar: 1173 1238 9 1 7 -2 10 ^qdb$^qdb$^qfpL&-)\1 BDFChar: 1174 1239 9 2 6 -2 10 i*]r#?smAM?skqo+92BA BDFChar: 1175 1240 9 1 7 -2 12 HiUst^qdb$^qdb$rW!K0 BDFChar: 1176 1241 9 2 6 -2 12 p]05[?smAM?smAM2uk'$ BDFChar: 1177 1242 9 1 7 -2 10 ^qdb$^qdb$^qfpLHiO-H BDFChar: 1178 1243 9 2 6 -2 10 i*]r#?smAM?skqop](9o BDFChar: 1179 1244 9 1 7 -3 10 ^qdb$^qdb$^qfp\3,AQp BDFChar: 1180 1245 9 2 6 -3 10 i*]r#?smAM?skr:E7b-j BDFChar: 1181 1246 9 0 7 0 12 $lHn"kNDmFgY9W`_Z0Z: BDFChar: 1182 1247 9 0 7 0 11 $k*sQrnH2^gY:K; BDFChar: 1183 1248 9 0 7 0 12 #QVc[kNDmFgY9W`_Z0Z: BDFChar: 1184 1249 9 0 7 0 10 #QOl(gY:K;gY:H_ BDFChar: 1185 1250 9 0 7 -2 10 _o([#s8Uj._o'@l#QOi) BDFChar: 1186 1251 9 0 7 -2 7 rnH2^gY:K;!!iQ) BDFChar: 1187 1252 9 1 7 0 12 &-0_ik2uBghTjEd`W,u= BDFChar: 1188 1253 9 1 7 0 10 &-)_.`l?$<`l?!u BDFChar: 1189 1254 9 1 7 -2 10 `l@0'p=A*GcGmj(&-)\1 BDFChar: 1190 1255 9 1 7 -2 7 r5Qar`l?$8&-)\1 BDFChar: 1210 1275 9 1 7 -2 7 hVc2b^qdb$!"],1 BDFChar: 1211 1276 9 1 7 -2 12 HiX)a`l?$ri:,CC`W-PM BDFChar: 1212 1277 9 1 7 -2 9 HiW$]^qdb$^q]p] BDFChar: 1213 1278 9 1 7 -2 10 r5Qar`r+cafZ_>8HiO-H BDFChar: 1214 1279 9 1 7 -2 7 hVc2b^qdb$!.4bH BDFChar: 1215 1280 9 1 7 0 12 &-.0p^qda5"pP89qu?]s BDFChar: 1216 1281 9 1 7 0 10 &-)]Z^qan/"pXu* BDFChar: 1217 1282 9 1 7 -2 10 I_`b7^jH=j"pXu*&-)\1 BDFChar: 1218 1283 9 1 7 -2 7 I_`a<*!QWF!"],1 BDFChar: 1219 1284 9 1 7 0 12 -4Bm'^qda5"pP89qu?]s BDFChar: 1220 1285 9 1 7 0 11 $s3K0I_`a<*!QWF BDFChar: 1221 1286 9 1 7 0 12 &8X<;!.M`!Hj0cZqu?]s BDFChar: 1222 1287 9 1 7 0 12 &--N+&-.0p^jH=jqu?]s BDFChar: 1223 1288 9 1 7 -2 12 &-.0p^qda5"pP89qu@9. BDFChar: 1224 1289 9 1 7 -2 10 &-)]Z^qan/"pXu*&-)\1 BDFChar: 1225 1290 9 0 7 0 12 #QXlA(`4),(`4),(]XO9 BDFChar: 1226 1291 9 1 7 0 12 +95eW@/OD??smAM4obQ_ BDFChar: 1227 1292 9 0 7 -2 10 rtlRi(`4),(`4(i#QOi) BDFChar: 1228 1293 9 1 7 -2 10 ?smC??smAM?sl.u#QOi) BDFChar: 1229 1294 9 0 7 -2 10 rtlRi(`4),(`4(iIK0?J BDFChar: 1230 1295 9 1 7 -2 10 ?smC??smAM?sl.uHiO-H BDFChar: 1231 1296 9 0 7 -3 10 rtlRi(`4),(`4(q*&[cs BDFChar: 1232 1297 9 1 7 -3 10 ?smC??smAM?sl/03,AQp BDFChar: 1233 1298 9 1 7 -2 10 `l?$<`l?$<`l(`4q\?srs6&-)\1 BDFChar: 1266 1331 9 1 7 -2 7 rWWcJ0OV]q!"],1 BDFChar: 1267 1332 9 1 7 -2 10 rWWc>(`4q\?srs6HiO-H BDFChar: 1268 1333 9 1 7 -2 7 rWWcJ0OV]q!.4bH BDFChar: 1269 1334 9 1 7 -2 10 ^qdb``l?$<`l?!uHiO-H BDFChar: 1270 1335 9 1 7 0 12 bQ)$Y@/OD??smAM4obQ_ BDFChar: 1271 1336 9 0 7 0 11 3,CPS_o(6`s8Q\C BDFChar: 1272 1337 9 1 7 -3 11 3,CPS`l?$<`l?#I"pTGT BDFChar: 1273 1338 9 1 7 0 11 $jHnEHj0e(`l?#I BDFChar: 1274 1339 9 3 7 0 12 +96Z%^qdb$^qdb$^]4?7 BDFChar: 1275 1340 9 1 7 0 10 *\]9%0KehY0JG0\ BDFChar: 1276 1341 9 2 7 0 10 4CIYd?smAM?sm@B BDFChar: 1277 1342 9 1 7 0 10 3,HU[f\"El`l?d6 BDFChar: 1278 1343 9 1 7 0 10 4CDPVCrXK7`b[U7 BDFChar: 1279 1344 9 0 7 -2 10 (`5@t4D&2S_o'@l#QOi) BDFChar: 1280 1345 9 1 7 -2 7 Hj0e(`l?#I!"],1 BDFChar: 1281 1346 9 0 7 0 12 E#:8G(d'oCAnHM0_Z0Z: BDFChar: 1282 1347 9 1 7 0 11 E#:8/Hj0e(`l?#I BDFChar: 1283 1348 9 0 7 0 12 ,Bh]>(`5@tAnM(\_Z0Z: BDFChar: 1284 1349 9 1 7 0 12 "tX`G!.4tTI`BCIIK0?J BDFChar: 1285 1350 9 0 8 0 12 _uOZT)ZTj<$ig\9*WR5]1B932It1sX@=S=X BDFChar: 1286 1351 9 0 7 0 12 ^h=]G!'UJe5@\2556(Z` BDFChar: 1287 1352 9 0 7 0 12 -?IoA(`5@tAnM(\_Z0Z: BDFChar: 1288 1353 9 1 7 0 12 $mp/M!.4tTI`BCIIK0?J BDFChar: 1289 1354 9 0 7 0 12 4)PThC`"!O4D'&[_Z0Z: BDFChar: 1290 1355 9 1 7 0 12 G2+3ZfDp:'#(FS3IK0?J BDFChar: 1291 1356 9 0 7 -2 12 #TP`>(d'oCAnHM0_Z0rB BDFChar: 1292 1357 9 1 7 -2 11 &3+J+Hj0e(`l?#I!"],1 BDFChar: 1293 1358 9 0 7 0 12 $lES=!#QP84D'&[_Z0Z: BDFChar: 1294 1359 9 1 7 0 12 (bj0Y!.4tTI`BCIIK0?J BDFChar: 1295 1360 9 0 7 0 12 0GnCa!#QP84D'&[_Z0Z: BDFChar: 1296 1361 9 1 7 0 12 ?nffL!.4tTI`BCIIK0?J BDFChar: 1297 1362 9 0 7 0 12 0F28Q!#QP84D'&[_Z0Z: BDFChar: 1298 1363 9 1 7 0 12 ?k@-6!.4tTI`BCIIK0?J BDFChar: 1299 1364 9 0 7 0 12 4)P%149-384=#Af_Z0Z: BDFChar: 1300 1365 9 1 7 0 12 G2*(62un=1#(FS3IK0?J BDFChar: 1301 1366 9 0 7 -2 12 Aip&1(d'oCAnHM0_Z0rB BDFChar: 1302 1367 9 1 7 -2 10 CcDEB"pTOr`liIfKHK BDFChar: 1312 1377 9 0 7 0 12 ^h=]G!'Xn&@t.lo56(Z` BDFChar: 1313 1378 9 1 7 0 12 "5%A)4@q0"Y4obQ_ BDFChar: 1328 1393 9 1 7 0 12 "tX`G!.;f+`l?$3I)a1G`l?$3I)a1G`l?#G BDFChar: 1343 1408 9 0 7 0 12 G230_@q0"Y@q0"Y4obQ_ BDFChar: 1344 1409 9 0 7 0 11 G2**!5%A)4@q0"4 BDFChar: 1345 1410 9 1 7 -2 12 !Wmbh`l?$<`l?$aF"sI2E!a/@fQK/ BDFChar: 1391 1456 9 1 7 0 11 (`4q,I_`aH^qda7 BDFChar: 1392 1457 9 1 7 0 11 0JF=DI_`aH^qda7 BDFChar: 1393 1458 9 1 7 0 11 ChCH_I_`aH^qda7 BDFChar: 1394 1459 9 1 7 0 11 bf4#jI_`aH^qda7 BDFChar: 1395 1460 9 1 7 0 11 Ao,6_I_`aH^qda7 BDFChar: 1396 1461 9 1 7 0 11 `lqfjI_`aH^qda7 BDFChar: 1397 1462 9 0 7 0 12 ?spbMIpcYlIUHPkIfKHK BDFChar: 1398 1463 9 0 7 0 12 ^qa=XIpcYlIUHPkIfKHK BDFChar: 1399 1464 9 0 7 0 12 ChCH_IpcYlIUHPkIfKHK BDFChar: 1400 1465 9 0 7 0 12 bf4#jIpcYlIUHPkIfKHK BDFChar: 1401 1466 9 0 7 0 12 Ao,6_IpcYlIUHPkIfKHK BDFChar: 1402 1467 9 0 7 0 12 `lqfjIpcYlIUHPkIfKHK BDFChar: 1403 1468 9 1 7 -3 11 (`4q,r5Qar`l?$<"pP83 BDFChar: 1404 1469 9 1 7 -3 11 0JF=Dr5Qar`l?$<"pP83 BDFChar: 1405 1470 9 1 7 -3 11 ChCH_r5Qar`l?$<"pP83 BDFChar: 1406 1471 9 1 7 -3 11 bf4#jr5Qar`l?$<"pP83 BDFChar: 1407 1472 9 1 7 -3 11 Ao,6_r5Qar`l?$<"pP83 BDFChar: 1408 1473 9 1 7 -3 11 `lqfjr5Qar`l?$<"pP83 BDFChar: 1409 1474 9 1 7 -3 12 G2+c*?i^,E`l?$<`WcVO BDFChar: 1410 1475 9 1 7 -3 12 G2+c*(]aKR`l?$<`WcVO BDFChar: 1411 1476 9 0 7 0 12 ?spbM@q0"YIq)tu@fQK/ BDFChar: 1412 1477 9 0 7 0 12 ^qa=X@q0"YIq)tu@fQK/ BDFChar: 1413 1478 9 0 7 0 12 ChCH_@q0"YIq)tu@fQK/ BDFChar: 1414 1479 9 0 7 0 12 bf4#j@q0"YIq)tu@fQK/ BDFChar: 1415 1480 9 0 7 0 12 Ao,6_@q0"YIq)tu@fQK/ BDFChar: 1416 1481 9 0 7 0 12 `lqfj@q0"YIq)tu@fQK/ BDFChar: 1417 1482 9 0 7 0 12 c.68&@q0"YIq)tu@fQK/ BDFChar: 1418 1483 9 0 7 0 12 D0E\p@q0"YIq)tu@fQK/ BDFChar: 1419 1484 9 2 6 0 11 ?spbMi*]r#?smA% BDFChar: 1420 1485 9 2 6 0 11 ^qa=Xi*]r#?smA% BDFChar: 1421 1486 9 1 7 0 11 ChCH_E%it"0JG1# BDFChar: 1422 1487 9 1 7 0 11 bf4#jE%it"0JG1# BDFChar: 1423 1488 9 1 7 0 11 Ao,6_E%it"0JG1# BDFChar: 1424 1489 9 1 7 0 11 `lqfjE%it"0JG1# BDFChar: 1425 1490 9 1 7 0 12 G2+c*?iY."0JG17)uos= BDFChar: 1426 1491 9 1 7 0 12 G2-J50E?&G0JG17)uos= BDFChar: 1427 1492 9 0 7 0 12 ?sq:b"pP89"pP89%fcS0 BDFChar: 1428 1493 9 0 7 0 12 ^qajm"pP89"pP89%fcS0 BDFChar: 1429 1494 9 0 6 0 12 ChCH_IM`n=(`4),IK0?J BDFChar: 1430 1495 9 0 6 0 12 bf4#jIM`n=(`4),IK0?J BDFChar: 1431 1496 9 0 6 0 12 Ao,6_IM`n=(`4),IK0?J BDFChar: 1432 1497 9 0 6 0 12 `lqfjIM`n=(`4),IK0?J BDFChar: 1433 1498 9 0 7 0 12 4)P%:B#Y#Z"pP89%fcS0 BDFChar: 1434 1499 9 0 7 0 12 4)P&E`b#DZ"pP89%fcS0 BDFChar: 1435 1500 9 1 7 0 11 (`4q,I)a1G`l?#G BDFChar: 1436 1501 9 1 7 0 11 0JF=DI)a1G`l?#G BDFChar: 1437 1502 9 1 7 0 11 ChCH_I)a1G`l?#G BDFChar: 1438 1503 9 1 7 0 11 bf4#jI)a1G`l?#G BDFChar: 1439 1504 9 1 7 0 11 Ao,6_I)a1G`l?#G BDFChar: 1440 1505 9 1 7 0 11 `lqfjI)a1G`l?#G BDFChar: 1441 1506 9 0 7 0 12 ?sqhI1G^gC1G^gC*WQ0? BDFChar: 1442 1507 9 0 7 0 12 ^qa>!1G^gC1G^gC*WQ0? BDFChar: 1443 1508 9 1 7 0 12 ChCH_I)a1G`l?$:`l?$BGQ7^D BDFChar: 1455 1520 9 0 7 0 12 ^qa=X_o$(K4;\nP(]XO9 BDFChar: 1456 1521 9 0 7 0 12 bf4#j_o$(K4;\nP(]XO9 BDFChar: 1457 1522 9 0 7 0 12 `lqfj_o$(K4;\nP(]XO9 BDFChar: 1458 1523 9 0 7 0 12 D0E]N1G^'n$k*OQ$ig8- BDFChar: 1459 1524 9 0 7 0 11 $k*sQB#DO(gY:Ip BDFChar: 1460 1525 9 0 7 0 11 0JF=DB#DO(gY:Ip BDFChar: 1461 1526 9 0 7 0 11 2D\_@B#DO(gY:Ip BDFChar: 1462 1527 9 0 7 0 11 An*LpB#DO(gY:Ip BDFChar: 1463 1528 9 0 7 0 11 1H&V@B#DO(gY:Ip BDFChar: 1464 1529 9 0 7 0 11 @qICpB#DO(gY:Ip BDFChar: 1465 1530 9 0 7 0 12 4)PlP0E>_&_qWr#AcMf2 BDFChar: 1466 1531 9 0 7 0 12 4)Q`+(]\0c_qWr#AcMf2 BDFChar: 1467 1532 9 0 7 0 12 ?spbi2Ig6,@q.D2G5qUC BDFChar: 1468 1533 9 0 7 0 12 ^qa=t2Ig6,@q.DTG5qUC BDFChar: 1469 1534 9 0 7 0 12 ChCI&2Ig6,@q.D2G5qUC BDFChar: 1470 1535 9 0 7 0 12 bf4$12Ig6,@q.D2G5qUC BDFChar: 1471 1536 9 0 7 0 12 Ao,7&2Ig6,@q.D2G5qUC BDFChar: 1472 1537 9 0 7 0 12 `lqg12Ig6,@q.D2G5qUC BDFChar: 1473 1538 9 0 7 0 12 c.68B2Ig6,@q.D2G5qUC BDFChar: 1474 1539 9 0 7 0 12 D0E]72Ig6,@q.D2G5qUC BDFChar: 1475 1540 9 0 7 0 11 0JF=DF5Gctbhh2t BDFChar: 1476 1541 9 0 7 0 11 $k*sQF5Gctbhh2t BDFChar: 1477 1542 9 1 7 0 11 0JF=DI_`aH^qda7 BDFChar: 1478 1543 9 1 7 0 11 (`4q,I_`aH^qda7 BDFChar: 1479 1544 9 1 7 -3 11 0JF=Dr5Qar`l?$<"pP83 BDFChar: 1480 1545 9 1 7 -3 11 (`4q,r5Qar`l?$<"pP83 BDFChar: 1481 1546 9 2 6 0 11 ^qa=Xi*]r#?smA% BDFChar: 1482 1547 9 2 6 0 11 ?spbMi*]r#?smA% BDFChar: 1483 1548 9 1 7 0 11 0JF=DI)a1G`l?#G BDFChar: 1484 1549 9 1 7 0 11 (`4q,I)a1G`l?#G BDFChar: 1485 1550 9 1 7 0 11 0JF=Dbf7ZB`l?5I BDFChar: 1486 1551 9 1 7 0 11 (`4q,bf7ZB`l?5I BDFChar: 1487 1552 9 0 7 0 11 0JF=DB#DO(gY:Ip BDFChar: 1488 1553 9 0 7 0 11 $k*sQB#DO(gY:Ip BDFChar: 1489 1554 9 0 7 -3 11 $k*sQF5Gctbhh2t!&,Am BDFChar: 1490 1555 9 0 7 -3 11 0JF=DF5Gctbhh2t!&,Am BDFChar: 1491 1556 9 0 7 -3 11 2D\_@F5Gctbhh2t!&,Am BDFChar: 1492 1557 9 0 7 -3 11 An*LpF5Gctbhh2t!&,Am BDFChar: 1493 1558 9 0 7 -3 11 1H&V@F5Gctbhh2t!&,Am BDFChar: 1494 1559 9 0 7 -3 11 @qICpF5Gctbhh2t!&,Am BDFChar: 1495 1560 9 0 7 -3 12 4)PlP0E?1NhTXj5Er[m6 BDFChar: 1496 1561 9 0 7 -3 12 4)PlP$ikA*hTXj5Er[m6 BDFChar: 1497 1562 9 0 7 -3 12 ?spbe(d'oCAnHM0_Z2A1 BDFChar: 1498 1563 9 0 7 -3 12 ^qa=p(d'oCAnHM0_Z2A1 BDFChar: 1499 1564 9 0 7 -3 12 ChCI"(d'oCAnHM0_Z2A1 BDFChar: 1500 1565 9 0 7 -3 12 fZ[_?(d'oCAnHM0_Z2A1 BDFChar: 1501 1566 9 0 7 -3 12 Ao,7"(d'oCAnHM0_Z2A1 BDFChar: 1502 1567 9 0 7 -3 12 `lqg-(d'oCAnHM0_Z2A1 BDFChar: 1503 1568 9 0 7 -3 12 4)P%3B\XRI2E!a/@fS2& BDFChar: 1504 1569 9 0 7 -3 12 4)P&>aF"sI2E!a/@fS2& BDFChar: 1505 1570 9 1 7 -3 11 (`4q,r5Qar`l?$<#0(fd BDFChar: 1506 1571 9 1 7 -3 11 0JF=Dr5Qar`l?$<#0(fd BDFChar: 1507 1572 9 1 7 -3 11 ChCH_r5Qar`l?$<#0(fd BDFChar: 1508 1573 9 1 7 -3 11 bf4#jr5Qar`l?$<#0(fd BDFChar: 1509 1574 9 1 7 -3 11 Ao,6_r5Qar`l?$<#0(fd BDFChar: 1510 1575 9 1 7 -3 11 `lqfjr5Qar`l?$<#0(fd BDFChar: 1511 1576 9 1 7 -3 12 G2+c*?i^,E`l?$<`WjG+ BDFChar: 1512 1577 9 1 7 -3 12 G2+c*(]aKR`l?$<`WjG+ BDFChar: 1513 1578 9 0 7 -3 12 ?spbM@q0"YIq)tu@fR>U BDFChar: 1514 1579 9 0 7 -3 12 ^qa=X@q0"YIq)tu@fR>U BDFChar: 1515 1580 9 0 7 -3 12 ChCH_@q0"YIq)tu@fR>U BDFChar: 1516 1581 9 0 7 -3 12 bf4#j@q0"YIq)tu@fR>U BDFChar: 1517 1582 9 0 7 -3 12 Ao,6_@q0"YIq)tu@fR>U BDFChar: 1518 1583 9 0 7 -3 12 `lqfj@q0"YIq)tu@fR>U BDFChar: 1519 1584 9 0 7 -3 12 c.68&@q0"YIq)tu@fR>U BDFChar: 1520 1585 9 0 7 -3 12 D0E\p@q0"YIq)tu@fR>U BDFChar: 1521 1586 9 0 7 -3 11 $k*sQB#DO(gY:Ip!#Q1G BDFChar: 1522 1587 9 0 7 -3 11 0JF=DB#DO(gY:Ip!#Q1G BDFChar: 1523 1588 9 0 7 -3 11 2D\_@B#DO(gY:Ip!#Q1G BDFChar: 1524 1589 9 0 7 -3 11 An*LpB#DO(gY:Ip!#Q1G BDFChar: 1525 1590 9 0 7 -3 11 1H&V@B#DO(gY:Ip!#Q1G BDFChar: 1526 1591 9 0 7 -3 11 @qICpB#DO(gY:Ip!#Q1G BDFChar: 1527 1592 9 0 7 -3 12 4)PlP0E>_&_qWr#AcNYX BDFChar: 1528 1593 9 0 7 -3 12 4)Q`+(]\0c_qWr#AcNYX BDFChar: 1529 1594 9 0 7 -3 12 ?spbi2Ig6,@q.D2G5rHi BDFChar: 1530 1595 9 0 7 -3 12 ^qa=t2Ig6,@q.DTG5rHi BDFChar: 1531 1596 9 0 7 -3 12 ChCI&2Ig6,@q.D2G5rHi BDFChar: 1532 1597 9 0 7 -3 12 bf4$12Ig6,@q.D2G5rHi BDFChar: 1533 1598 9 0 7 -3 12 Ao,7&2Ig6,@q.D2G5rHi BDFChar: 1534 1599 9 0 7 -3 12 `lqg12Ig6,@q.D2G5rHi BDFChar: 1535 1600 9 0 7 -3 12 c.68B2Ig6,@q.D2G5rHi BDFChar: 1536 1601 9 0 7 -3 12 D0E]72Ig6,@q.D2G5rHi BDFChar: 1537 1602 9 0 7 0 10 Aip'7hVQK#hVN;R BDFChar: 1538 1603 9 0 7 0 10 IK0@hhVQK#hVN;R BDFChar: 1539 1604 9 0 7 -3 11 0JF=DF5Gctbhh2t!&,Am BDFChar: 1540 1605 9 0 7 -3 7 F5Gctbhh2t!&,Am BDFChar: 1541 1606 9 0 7 -3 11 $k*sQF5Gctbhh2t!&,Am BDFChar: 1542 1607 9 0 7 0 10 4)P%>hVQK#hVN;R BDFChar: 1543 1608 9 0 7 -3 10 4)P%>hVQK#hVN;R(_-NG BDFChar: 1544 1609 9 0 7 0 12 Aip&1(d'oCAnHM0_Z0Z: BDFChar: 1545 1610 9 0 7 0 12 IK13%4?P`(_-NG BDFChar: 1606 1671 9 2 4 9 11 ?spbM BDFChar: 1607 1672 9 3 5 9 11 ^qa=X BDFChar: 1608 1673 9 2 5 5 5 n,NFg BDFChar: 1609 1674 9 2 5 5 5 n,NFg BDFChar: 1610 1675 9 1 5 5 5 p](9o BDFChar: 1611 1676 9 1 5 5 5 p](9o BDFChar: 1612 1677 9 0 6 5 5 rVuou BDFChar: 1613 1678 9 0 6 5 5 rVuou BDFChar: 1614 1679 9 2 4 -3 10 TV.sNTV.sNTV.sNTV)8b BDFChar: 1615 1680 9 0 7 -3 -1 rrE'! BDFChar: 1616 1681 9 3 4 9 12 5_-Yc BDFChar: 1617 1682 9 3 4 9 12 ^q`3c BDFChar: 1618 1683 9 3 4 -2 1 ^q`3c BDFChar: 1619 1684 9 3 4 9 12 ^qbIc BDFChar: 1620 1685 9 2 6 9 12 8mr BDFChar: 1697 1762 9 1 7 1 9 5%%dr@/OD?4obQ_ BDFChar: 1698 1763 9 0 7 0 10 rtlRi*dA`N(`4(i BDFChar: 1699 1764 9 0 7 0 10 J'cQhd*U.dd*R7B BDFChar: 1700 1765 9 0 7 0 11 5bPl20JG170JG1& BDFChar: 1701 1766 9 0 7 0 11 5d.7_$k*XT$k*OQ BDFChar: 1702 1767 9 0 7 0 10 o@)1;e)/X'e'mmg BDFChar: 1703 1768 9 1 7 0 10 ^qdb``l?$<`l?!u BDFChar: 1704 1769 9 0 7 0 10 @/+,;IUckt@q0!K BDFChar: 1705 1770 9 0 7 0 10 j3uKCldsb3bK%X' BDFChar: 1706 1771 9 0 7 0 10 S"&'bq"XX:fZ;,6 BDFChar: 1707 1772 9 0 7 0 10 rmT?Fe'm1#d*V7^ BDFChar: 1708 1773 9 0 7 0 10 4Ef3&e'ldph0(j[ BDFChar: 1709 1774 9 0 7 0 10 rmT?Fe)&m2f$j3j BDFChar: 1710 1775 9 0 7 6 10 q/:1cB`J,5 BDFChar: 1711 1776 9 0 7 0 10 rs]DU)Dj9aB[HbZ BDFChar: 1712 1777 9 0 7 0 10 k9OZW_o'C0_e)"2 BDFChar: 1713 1778 9 0 7 0 10 s3T->d*U.dd*V7^ BDFChar: 1714 1779 9 0 7 0 10 s3oHGe'ldpe'mmg BDFChar: 1715 1780 9 0 7 -3 12 0Q8^"0erk;&0P>4"pPJE BDFChar: 1716 1781 9 0 7 -3 12 0Q8^"0erk;&0O`;)\3#\ BDFChar: 1717 1782 9 0 7 -3 12 0Q8^"0erk;&0P;3%KceS BDFChar: 1718 1783 9 0 7 -3 12 n/)ur@JU*4&0P;3%KceS BDFChar: 1719 1784 9 0 7 -3 12 0Q8^"0erk;&0P>I*WlKc BDFChar: 1720 1785 9 0 7 -3 12 n/)ur@JU*4&0P>I*WlKc BDFChar: 1721 1786 9 0 7 -3 12 n/-*])=dn9&0P>I*WlKc BDFChar: 1722 1787 9 0 7 -3 12 E,`%cq(`'Y&0P>I*WlKc BDFChar: 1723 1788 9 0 7 -3 12 0Q8^"0erk;&0O`8*ZH%. BDFChar: 1724 1789 9 0 7 -3 12 pqZA9fl@3$&0O`8*ZH%. BDFChar: 1725 1790 9 0 7 -3 12 0Q8^"0erk;&0O`;%N?>s BDFChar: 1726 1791 9 0 7 -3 12 n/-*])=dn9&0O`;%N?>s BDFChar: 1727 1792 9 0 7 -3 12 pqZA9fl@3$&0O`;%N?>s BDFChar: 1728 1793 9 0 7 -3 12 p_Y\=@:B?F&0O`;%N?>s BDFChar: 1729 1794 9 0 7 1 12 0Q8^"0erk;&0O5g BDFChar: 1730 1795 9 0 7 -3 12 E7igqfl@3$&0P;3%KceS BDFChar: 1731 1796 9 0 6 3 7 +@,ok+92BA BDFChar: 1732 1797 9 1 5 2 8 +E48%+GTKiJW BDFChar: 1786 1851 9 1 6 2 7 5bM(-'Kc?q BDFChar: 1787 1852 9 1 6 2 7 #Sa5aT^Vp] BDFChar: 1788 1853 9 0 6 3 7 +@,3W+92BA BDFChar: 1789 1854 9 1 5 2 8 +E47Z+93Ma BDFChar: 1790 1855 9 0 6 3 7 #R%:5#QOi) BDFChar: 1791 1856 9 1 5 2 8 +93MaW,NjZ BDFChar: 1792 1857 9 0 7 3 7 OJ)WHO8o7\ BDFChar: 1793 1858 9 0 7 3 7 #mL>4#ljr* BDFChar: 1794 1859 9 0 6 3 7 0OB?;0E;(Q BDFChar: 1795 1860 9 1 5 2 8 +AdmH:f)*2 BDFChar: 1796 1861 9 0 6 3 7 )"`FP(]XO9 BDFChar: 1797 1862 9 1 5 2 8 E)9B`Leo2o BDFChar: 1798 1863 9 1 5 0 9 +AdmH:f,f#:`o`< BDFChar: 1799 1864 9 0 8 0 7 +oitj.Y&]C+onVCEW@9` BDFChar: 1800 1865 9 0 7 -1 11 "9ST)"9ST)"9ST)"98E% BDFChar: 1801 1866 9 0 7 0 10 _o'B@AnF.f4;\n8 BDFChar: 1802 1867 9 1 7 0 10 I_`b7^qdb$^qbC! BDFChar: 1803 1868 9 1 7 0 10 3"-3"2K$OS`b[U7 BDFChar: 1804 1869 9 1 7 0 10 rWWQ2#(?a\"pY&, BDFChar: 1805 1870 9 1 7 -1 11 &H3F\-740g-:UK(5QCca BDFChar: 1806 1871 9 0 7 1 9 4_DaXe'm>h]Dqp3 BDFChar: 1807 1872 9 0 7 1 9 s22`dAir0m(]XO9 BDFChar: 1808 1873 9 1 7 0 10 5%)1A_#D-b^gK>+ BDFChar: 1809 1874 9 1 7 -1 11 "?pA7aN4A%aO"li&-)\1 BDFChar: 1810 1875 9 1 7 1 7 5%)2*^gK>+ BDFChar: 1811 1876 9 1 7 0 10 p^@?2#6"f2"q:8, BDFChar: 1812 1877 9 1 7 -1 11 &GR4\-78^=-:U](5QCca BDFChar: 1813 1878 9 1 7 1 7 p^@B+"q:8, BDFChar: 1814 1879 9 1 7 0 10 rl2st`l?$<`l?!u BDFChar: 1815 1880 9 1 7 0 10 rkMnq(^q68@)2aA BDFChar: 1816 1881 9 0 7 5 5 rr<$! BDFChar: 1817 1882 9 0 7 1 9 rr8Fr8?Mki8EPO BDFChar: 1932 1997 9 3 8 -3 12 i8EPOi8FP2r8?Mki8EPO BDFChar: 1933 1998 9 0 4 -3 12 #RC\A#RC_2#RC\A#RC\A BDFChar: 1934 1999 9 0 4 -3 12 #RC\A#RL5#p]q-2#RC\A BDFChar: 1935 2000 9 0 5 -3 12 *#oq<*#osr#RC\A#RC\A BDFChar: 1936 2001 9 0 5 -3 12 #RC\A#RC_6*#oq<*#oq< BDFChar: 1937 2002 9 0 5 -3 12 *#oq<*#osr*#oq<*#oq< BDFChar: 1938 2003 9 0 5 -3 12 *#oq<*$"nSr!3Q6#RC\A BDFChar: 1939 2004 9 0 5 -3 12 #RC\A#RLA+r#?[r*#oq< BDFChar: 1940 2005 9 0 5 -3 12 *#oq<*$"nSr#?[r*#oq< BDFChar: 1941 2006 9 0 8 -3 5 s*t@T#QP,1#QP,1#QP,1#QOi) BDFChar: 1942 2007 9 0 8 -3 6 p]1>Ep](R"#QP,1#QP,1#QP,1 BDFChar: 1943 2008 9 0 8 -3 6 %tO\1%tFoc#QP,1#QP,1#QP,1 BDFChar: 1944 2009 9 0 8 -3 6 s+(-"s*t@T#QP,1#QP,1#QP,1 BDFChar: 1945 2010 9 0 8 -3 5 s*u'h)uprY)uprY)uprY)uos= BDFChar: 1946 2011 9 0 8 -3 6 quHbIqu@]:)uprY)uprY)uprY BDFChar: 1947 2012 9 0 8 -3 6 ++XBA++P=2)uprY)uprY)uprY BDFChar: 1948 2013 9 0 8 -3 6 s+(-"s*u'h)uprY)uprY)uprY BDFChar: 1949 2014 9 0 8 5 12 #QP,1#QP,1#QP,1#QXmT BDFChar: 1950 2015 9 0 8 4 12 #QP,1#QP,1#QP,1p]1>Ep](9o BDFChar: 1951 2016 9 0 8 4 12 #QP,1#QP,1#QP,1%tO\1%tFW[ BDFChar: 1952 2017 9 0 8 4 12 #QP,1#QP,1#QP,1s+(-"s*t(L BDFChar: 1953 2018 9 0 8 5 12 )uprY)uprY)uprY*!$"h BDFChar: 1954 2019 9 0 8 4 12 )uprY)uprY)uprYquHbIqu?]s BDFChar: 1955 2020 9 0 8 4 12 )uprY)uprY)uprY++XBA++O=k BDFChar: 1956 2021 9 0 8 4 12 )uprY)uprY)uprYs+(-"s*t(L BDFChar: 1957 2022 9 0 8 -3 12 #QP,1#QP,1#QP,1#QXmT#QP,1#QP,1#QP,1#QP,1 BDFChar: 1958 2023 9 0 8 -3 12 #QP,1#QP,1#QP,1p]1>Ep](R"#QP,1#QP,1#QP,1 BDFChar: 1959 2024 9 0 8 -3 12 #QP,1#QP,1#QP,1%tO\1%tFoc#QP,1#QP,1#QP,1 BDFChar: 1960 2025 9 0 8 -3 12 #QP,1#QP,1#QP,1s+(-"s*t@T#QP,1#QP,1#QP,1 BDFChar: 1961 2026 9 0 8 -3 12 )uprY)uprY)uprY*!$"h#QP,1#QP,1#QP,1#QP,1 BDFChar: 1962 2027 9 0 8 -3 12 #QP,1#QP,1#QP,1#QXmT)uprY)uprY)uprY)uprY BDFChar: 1963 2028 9 0 8 -3 12 )uprY)uprY)uprY*!$"h)uprY)uprY)uprY)uprY BDFChar: 1964 2029 9 0 8 -3 12 )uprY)uprY)uprYquHbIqu@!&#QP,1#QP,1#QP,1 BDFChar: 1965 2030 9 0 8 -3 12 )uprY)uprY)uprY++XBA++OUs#QP,1#QP,1#QP,1 BDFChar: 1966 2031 9 0 8 -3 12 #QP,1#QP,1#QP,1quHbIqu@]:)uprY)uprY)uprY BDFChar: 1967 2032 9 0 8 -3 12 #QP,1#QP,1#QP,1++XBA++P=2)uprY)uprY)uprY BDFChar: 1968 2033 9 0 8 -3 12 )uprY)uprY)uprYs+(-"s*t@T#QP,1#QP,1#QP,1 BDFChar: 1969 2034 9 0 8 -3 12 #QP,1#QP,1#QP,1s+(-"s*u'h)uprY)uprY)uprY BDFChar: 1970 2035 9 0 8 -3 12 )uprY)uprY)uprYquHbIqu@]:)uprY)uprY)uprY BDFChar: 1971 2036 9 0 8 -3 12 )uprY)uprY)uprY++XBA++P=2)uprY)uprY)uprY BDFChar: 1972 2037 9 0 8 -3 12 )uprY)uprY)uprYs+(-"s*u'h)uprY)uprY)uprY BDFChar: 1973 2038 9 0 8 4 6 s*t(Ls*t(L BDFChar: 1974 2039 9 3 5 -3 12 TV.sNTV.sNTV.sNTV.sN BDFChar: 1975 2040 9 4 8 -3 6 pji-iJ:N0#J:IV" BDFChar: 1976 2041 9 3 8 -3 5 r1K^UTV.sNTE"rl BDFChar: 1977 2042 9 3 8 -3 6 r.)GQTV.sNTV)8b BDFChar: 1978 2043 9 0 4 -3 6 p^$X##RC\A#RCD1 BDFChar: 1979 2044 9 0 5 -3 5 r"KhZ'GM5q'EA+5 BDFChar: 1980 2045 9 0 5 -3 6 qulX+'GM5q'GLNI BDFChar: 1981 2046 9 4 8 4 12 J:N0#J:REFp](9o BDFChar: 1982 2047 9 3 8 5 12 TV.sNTV.tU BDFChar: 1983 2048 9 3 8 4 12 TV.sNTV/rJqu?]s BDFChar: 1984 2049 9 0 4 4 12 #RC\A#RL22p](9o BDFChar: 1985 2050 9 0 5 5 12 'GM5q'GM8Z BDFChar: 1986 2051 9 0 5 4 12 'GM5q'GU0Bqu?]s BDFChar: 1987 2052 9 4 8 -3 12 J:N0#J:REFpjdmFJ:N0# BDFChar: 1988 2053 9 3 8 -3 12 TV.sNTV.sjTV.sNTV.sN BDFChar: 1989 2054 9 3 8 -3 12 TV.sNTV/rJ]V(pjTV.sN BDFChar: 1990 2055 9 0 4 -3 12 #RC\A#RL22p]q-2#RC\A BDFChar: 1991 2056 9 0 5 -3 12 'GM5q'GM8R'GM5q'GM5q BDFChar: 1992 2057 9 0 5 -3 12 'GM5q'GU0BoFquR'Ef*a BDFChar: 1993 2058 9 0 8 -3 6 s*t(Ls*t@T#QP,1#QP,1#QP,1 BDFChar: 1994 2059 9 0 8 -3 5 s*td`'EAgI'EAgI'EAgI'EA+5 BDFChar: 1995 2060 9 0 8 -3 6 s*t(LpOEqX'EAgI'EAgI'EAgI BDFChar: 1996 2061 9 0 8 4 12 #QP,1#QP,1#QP,1s*t(Ls*t(L BDFChar: 1997 2062 9 0 8 5 12 'EAgI'EAgI'EAgI'EJ/` BDFChar: 1998 2063 9 0 8 4 12 'EAgI'EAgI'EAgIpOE5Ds*t(L BDFChar: 1999 2064 9 0 8 -3 12 #QP,1#QP,1#QP,1s*t(Ls*t@T#QP,1#QP,1#QP,1 BDFChar: 2000 2065 9 0 8 -3 12 'EAgI'EAgI'EAgI'EIlX'EAgI'EAgI'EAgI'EAgI BDFChar: 2001 2066 9 0 8 -3 12 'EAgI'EAgI'EAgIpOE5DpOEqX'EAgI'EAgI'EAgI BDFChar: 2002 2067 9 4 8 -3 5 3'`"EJ:N0#J,fQL BDFChar: 2003 2068 9 0 4 -3 5 i"-/"#RC\A#QOi) BDFChar: 2004 2069 9 0 4 5 12 #RC\A#RD"" BDFChar: 2005 2070 9 4 8 5 12 J:N0#J:KmE BDFChar: 2006 2071 9 0 8 -3 12 !.Y'"!<<-#!WW?'"98]-#QPD9&-*gQ5QF%LJ,k*" BDFChar: 2007 2072 9 0 8 -3 12 J,k*"5QF%L+92rQ&-)t9#QOu-"98K'!<<-#!.Y'" BDFChar: 2008 2073 9 0 8 -3 12 J:N0#5la1N+oi;W'EAC=#QPP='EBEp](9o BDFChar: 2020 2085 9 3 5 -3 12 i8EPOi8EPO5X7S"5X7S" BDFChar: 2021 2086 9 0 8 5 12 s+(-"s+(-"s+(-"s+(-" BDFChar: 2022 2087 9 0 8 -3 -2 s+(-" BDFChar: 2023 2088 9 0 8 -3 0 s+(-"s+(-" BDFChar: 2024 2089 9 0 8 -3 2 s+(-"s+(-"s+(-" BDFChar: 2025 2090 9 0 8 -3 4 s+(-"s+(-"s+(-"s+(-" BDFChar: 2026 2091 9 0 8 -3 6 s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2027 2092 9 0 8 -3 8 s+(-"s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2028 2093 9 0 8 -3 10 s+(-"s+(-"s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2029 2094 9 0 8 -3 12 s+(-"s+(-"s+(-"s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2030 2095 9 0 7 -3 12 s8W-!s8W-!s8W-!s8W-! BDFChar: 2031 2096 9 0 6 -3 12 rr2orrr2orrr2orrr2or BDFChar: 2032 2097 9 0 5 -3 12 r;?Kjr;?Kjr;?Kjr;?Kj BDFChar: 2033 2098 9 0 4 -3 12 q"XXZq"XXZq"XXZq"XXZ BDFChar: 2034 2099 9 0 3 -3 12 nF5r:nF5r:nF5r:nF5r: BDFChar: 2035 2100 9 0 2 -3 12 i8EPOi8EPOi8EPOi8EPO BDFChar: 2036 2101 9 0 1 -3 12 ^qdb$^qdb$^qdb$^qdb$ BDFChar: 2037 2102 9 4 8 -3 12 q"XXZq"XXZq"XXZq"XXZ BDFChar: 2038 2103 9 0 7 -3 12 _\g9._\g9._\g9._\g9. BDFChar: 2039 2104 9 0 8 -3 12 gAiLLgAiLLgAiLLgAiLLgAiLLgAiLLgAiLLgAiLL BDFChar: 2040 2105 9 0 8 -3 12 4FlUF4FlUF4FlUF4FlUF4FlUF4FlUF4FlUF4FlUF BDFChar: 2041 2106 9 0 4 -3 4 q"XXZq"XXZ BDFChar: 2042 2107 9 4 8 -3 4 q"XXZq"XXZ BDFChar: 2043 2108 9 0 4 5 12 q"XXZq"XXZ BDFChar: 2044 2109 9 0 8 -3 12 p]1'hp]1'hp]1'hp]1'hs+(-"s+(-"s+(-"s+(-" BDFChar: 2045 2110 9 0 8 -3 12 p]1'hp]1'hp]1'hp]1'h%tG1@%tG1@%tG1@%tG1@ BDFChar: 2046 2111 9 0 8 -3 12 s+(-"s+(-"s+(-"s+(-"p]1'hp]1'hp]1'hp]1'h BDFChar: 2047 2112 9 0 8 -3 12 s+(-"s+(-"s+(-"s+(-"%tG1@%tG1@%tG1@%tG1@ BDFChar: 2048 2113 9 4 8 5 12 q"XXZq"XXZ BDFChar: 2049 2114 9 0 8 -3 12 %tG1@%tG1@%tG1@%tG1@p]1'hp]1'hp]1'hp]1'h BDFChar: 2050 2115 9 0 8 -3 12 %tG1@%tG1@%tG1@%tG1@s+(-"s+(-"s+(-"s+(-" BDFChar: 2051 2116 9 0 6 0 6 rr2orrr2ls BDFChar: 2052 2117 9 0 6 0 6 rdo`RJqEt% BDFChar: 2053 2118 9 0 6 0 6 I"Hs%JqA@M BDFChar: 2054 2119 9 0 6 0 6 rdq_m\q9n] BDFChar: 2055 2120 9 1 5 1 5 q"XXZp](9o BDFChar: 2056 2121 9 1 5 1 5 pkX`^p](9o BDFChar: 2057 2122 9 0 6 1 5 rr2orrVuou BDFChar: 2058 2123 9 0 6 1 5 rdo`RrVuou BDFChar: 2059 2124 9 1 5 0 6 q"XXZq"XUa BDFChar: 2060 2125 9 1 5 0 6 pkX`^Lktg+ BDFChar: 2061 2126 9 0 7 1 5 5LkPa- BDFChar: 2131 2196 9 1 6 2 7 r.K`VK_tfM BDFChar: 2132 2197 9 1 6 2 7 r;?Kjr;6Np BDFChar: 2133 2198 9 1 5 1 5 pkX`^p](9o BDFChar: 2134 2199 9 1 5 1 5 q"XXZp](9o BDFChar: 2135 2200 9 0 6 0 6 !X8uE,!u8/ BDFChar: 2136 2201 9 0 7 2 9 4@4UeR=R[e BDFChar: 2137 2202 9 0 7 1 10 4@4UMJUp.aV*Y.^ BDFChar: 2138 2203 9 0 7 1 10 6D^MFJUrB'69G5J BDFChar: 2139 2204 9 0 8 1 9 s+#WMJ:N0#J:N0#J:N0#s*t(L BDFChar: 2140 2205 9 0 8 1 9 s+#WMJq/N)W.9t[OFVk3s*t(L BDFChar: 2141 2206 9 0 8 1 9 s+#WMU4AJYLk(_?U4@cEs*t(L BDFChar: 2142 2207 9 0 8 0 10 4odkKJ:OAEJ:N0#S:I>aJ:Koc4obQ_ BDFChar: 2143 2208 9 0 8 0 10 4odkKJ:OAEJ:N0#U4AbaJ:Koc4obQ_ BDFChar: 2144 2209 9 0 8 0 10 4og'4s+&pUs+(-"h14O9s+#S!4obQ_ BDFChar: 2145 2210 9 0 8 1 9 #QREr.KC._j+%gD.KE$?#QOi) BDFChar: 2146 2211 9 1 6 0 10 i(tg9'GM5q-rAh% BDFChar: 2147 2212 9 1 6 0 10 *%4XVTV.sN:ad:` BDFChar: 2148 2213 9 1 7 -2 12 Jq?BM7"U#B6oY_hHk6hh BDFChar: 2149 2214 9 1 7 -2 9 3(/@MJj_R0&:>$# BDFChar: 2150 2215 9 1 7 0 11 &.j4#&3*(0Jq?BM BDFChar: 2151 2216 9 0 8 0 8 "+UE&3e0TuJcLB&JcJ1=2uipY BDFChar: 2152 2217 9 0 7 0 10 !HEr""U,54![fub5sdm< BDFChar: 2154 2219 9 0 8 -1 11 aacq_8H=5?8H;<^aaaWs)uq/_+oiee)uos= BDFChar: 2155 2220 9 0 8 0 12 #QPhE8HA(,8H;<^8H;<^.KCFg#QPhE#QOi) BDFChar: 2156 2221 9 1 6 0 10 n;)aNKS],JJ:ROt BDFChar: 2157 2222 9 0 8 0 10 5ldX0U4l]?S4odbH)ur/&5lcB7IfKHK BDFChar: 2177 2242 9 1 7 0 12 f)GY:I!g&1<49,?] BDFChar: 2202 2267 9 0 7 0 8 4@4mmWP+-T49,?] BDFChar: 2203 2268 9 0 7 0 8 4@6`T\V7R\49,?] BDFChar: 2204 2269 9 0 7 0 8 4@5U4\YY]\49,?] BDFChar: 2205 2270 9 0 7 0 8 4@6`8M33oe49,?] BDFChar: 2206 2271 9 0 7 0 8 4@5I4RAH<<49,?] BDFChar: 2207 2272 9 0 7 0 8 4@5I4SVI?349,?] BDFChar: 2213 2278 9 0 7 0 8 4FY3*a8Ja4od+49,?] BDFChar: 2215 2280 9 0 7 0 8 4FY3Fp[@R"49,?] BDFChar: 2216 2281 9 0 7 0 8 4FZJJkM,0K49,?] BDFChar: 2217 2282 9 0 7 0 8 4FZJJj88"g49,?] BDFChar: 2218 2283 9 0 7 0 8 4FZ%Me^`E'49,?] BDFChar: 2219 2284 9 0 7 3 7 "TJH#"98E% BDFChar: 2220 2285 8 0 5 1 12 %!7/UF:>t[R"Vub BDFChar: 2221 2286 8 0 5 5 10 1j$+3F>Nst BDFChar: 2222 2287 8 0 5 5 10 Ydh'I\?Gr5 BDFChar: 2223 2288 8 0 5 5 10 KZsAdb_,rr BDFChar: 2224 2289 8 0 5 5 10 KZsA,b_,rr BDFChar: 2225 2290 8 0 5 5 10 KZsAlb_,rr BDFChar: 2226 2291 8 0 5 5 10 KZNZPaFjNn BDFChar: 2227 2292 8 0 5 5 10 KM4Kj9SN04obQ_ BDFChar: 2233 2298 9 0 7 0 9 JUrB'JXMpW69G5J BDFChar: 2234 2299 9 1 7 0 9 JqAT+P.Hg.6oY/H BDFChar: 2235 2300 9 1 7 0 9 rdo`RJqAT+JqOb_ BDFChar: 2239 2304 9 0 7 1 8 plLa8`/'NM BDFChar: 2242 2307 9 0 8 2 8 'EC#k>l]D*>lZb_'EA+5 BDFChar: 2243 2308 9 0 7 2 8 &28V6IkVE6 BDFChar: 2244 2309 9 1 7 2 9 &3,(:3&ilW BDFChar: 2245 2310 9 1 7 2 9 3&ilWrd6[: BDFChar: 2246 2311 9 0 7 1 8 *tKGXIJ@b( BDFChar: 2247 2312 9 0 7 1 8 q!e(V^)mgf BDFChar: 2248 2313 9 0 7 1 8 +E7+(59CCX BDFChar: 2249 2314 9 0 7 1 8 ":cNfr:odV BDFChar: 2250 2315 9 0 8 2 8 'EC#kIfTM!IfMA,'EA+5 BDFChar: 2251 2316 9 1 7 0 9 &3,(:3&pnb3"Q&i BDFChar: 2252 2317 9 0 6 0 6 rr2nKJqEt% BDFChar: 2253 2318 9 0 6 0 6 rdo`Rrr2ls BDFChar: 2254 2319 9 0 6 0 6 rk=taL4]C) BDFChar: 2255 2320 9 0 6 0 6 rdr#Ho(r=c BDFChar: 2256 2321 9 0 6 0 6 &3+e&F>sg3 BDFChar: 2257 2322 9 0 6 0 6 &3*pd>W<8p BDFChar: 2258 2323 9 0 6 0 6 &3,(:6mrTH BDFChar: 2259 2324 9 0 6 0 6 &1BsGHoMZ; BDFChar: 2264 2329 8 1 6 0 8 r.'(?5f[tWQ BDFChar: 2421 2485 9 0 7 0 10 IpcYl@")Kkpg@J0 BDFChar: 2422 2486 9 1 7 0 10 *\^u0pgEl)?srs6 BDFChar: 2423 2487 9 0 7 0 7 CfXVDG1K\p BDFChar: 2424 2488 9 0 7 0 10 AnH40s*jucDJ!J\ BDFChar: 2425 2489 9 0 7 0 10 nCZCNh#-m;gY:!R BDFChar: 2426 2490 9 0 7 0 10 AnM'Ts(6_/IV(nH BDFChar: 2427 2491 9 0 7 0 7 q9?n/e^<'r BDFChar: 2428 2492 9 0 7 -2 10 "s4%u`l?$<`lFQQA BDFChar: 2453 2517 9 0 7 0 11 E59<,F9iF>>FQQA BDFChar: 2454 2518 9 1 7 0 10 5%)1A?p%i4^gK>+ BDFChar: 2455 2519 9 0 7 1 10 I`&_([CNQI_gVRc BDFChar: 2456 2520 9 0 7 6 10 H-^Chkl:\` BDFChar: 2457 2521 9 1 7 0 10 `m!*)i5":?fZ_>8 BDFChar: 2458 2522 9 1 7 0 12 3,CPSI)a1Grl2st`W,u= BDFChar: 2459 2523 9 0 7 0 10 s3PF91`A2-B[HbZ BDFChar: 2460 2524 9 0 7 0 10 r79?Ge'ldpe(4Es BDFChar: 2461 2525 9 0 7 0 10 %h/t2D9^>Mc##ZF BDFChar: 2462 2526 9 0 7 0 7 Iacd'd*U-h BDFChar: 2463 2527 9 2 5 0 10 ?iU2rd*U.dd*V7^ BDFChar: 2464 2528 9 1 7 -3 10 $ig8k)B'M4)B'M4)Z0R8 BDFChar: 2465 2529 9 0 7 -3 12 0Q8^"0erk;&0Ol['bqMt BDFChar: 2466 2530 9 0 6 3 7 +@Q3"+92BA BDFChar: 2467 2531 9 0 6 3 7 #XnY;#QOi) BDFChar: 2468 2532 9 0 7 4 7 nA(oh BDFChar: 2469 2533 9 0 7 4 7 %g-C2 BDFChar: 2470 2534 9 0 7 3 7 ,Y7r+,QIfE BDFChar: 2471 2535 9 1 5 1 8 +E48%E2Xm% BDFChar: 2472 2536 9 0 7 3 7 ,SL+i,QIfE BDFChar: 2473 2537 9 1 5 1 8 +<[V%+K06% BDFChar: 2474 2538 9 0 7 3 8 ![U;76m)I0 BDFChar: 2475 2539 9 0 7 3 8 5bt-(+p7lG BDFChar: 2476 2540 9 1 6 3 9 quH6%TTBEZ BDFChar: 2477 2541 9 0 7 1 7 &3iG[5X,e[ BDFChar: 2478 2542 9 0 7 1 7 #lFc(!rN<( BDFChar: 2479 2543 9 1 5 0 8 +AdmHDuaiRDu]k< BDFChar: 2480 2544 9 1 5 1 8 +AdmH:f)uC BDFChar: 2481 2545 9 0 7 3 7 bdrA:bQ%VC BDFChar: 2482 2546 9 0 6 3 9 rd_YcW2,"F BDFChar: 2483 2547 9 0 6 3 9 Jk@L2H34'G BDFChar: 2484 2548 9 0 6 3 7 -qO>.-ia5I BDFChar: 2485 2549 9 0 6 3 7 -m\d;-ia5I BDFChar: 2486 2550 9 0 8 3 7 .KE$?s+!Z@.KBGK BDFChar: 2487 2551 9 0 7 3 7 .SB_5.KBGK BDFChar: 2488 2552 9 0 7 3 7 <)W`o;ucmu BDFChar: 2489 2553 9 0 6 3 7 +CMok+92BA BDFChar: 2490 2554 9 0 6 3 7 #RpP<#QOi) BDFChar: 2491 2555 9 0 7 3 7 ,\F`%,QIfE BDFChar: 2492 2556 9 1 6 0 8 r;?Kjr;?Kjqu?]s BDFChar: 2493 2557 9 1 7 0 10 `l?$<`l?$<`l@uX BDFChar: 2494 2558 9 1 7 0 11 "pPJE(`4q\?spdc BDFChar: 2495 2559 9 1 7 0 11 ^qa>c0JF=\$k*=E BDFChar: 2496 2560 9 1 6 2 8 0XQ'YGdK.) BDFChar: 2497 2561 9 1 6 3 7 Gg+CUGQ7^D BDFChar: 2498 2562 9 0 8 -3 11 'n@b6.KCpu.KCpu.KCpu.KCpu.KCpu.KCpue,TIK BDFChar: 2499 2563 9 1 7 -3 11 (+:RZ."&%pWdH3C-n*FB BDFChar: 2500 2564 9 1 5 3 7 +92BAL]@DT BDFChar: 2501 2565 9 1 5 3 7 L]@DT+92BA BDFChar: 2502 2566 9 3 3 3 7 J,fQLJ,fQL BDFChar: 2503 2567 9 1 5 3 7 L]@DTL]@DT BDFChar: 2504 2568 9 1 5 5 7 +9;0: BDFChar: 2505 2569 9 1 6 3 7 "9A2s"98E% BDFChar: 2506 2570 9 1 5 3 7 L]I2ML]@DT BDFChar: 2507 2571 9 1 6 3 8 &--7.!$D7A BDFChar: 2508 2572 9 1 6 5 6 A=*>s BDFChar: 2509 2573 9 1 6 5 6 Qt-0s BDFChar: 2510 2574 9 0 7 4 7 @ZcL: BDFChar: 2511 2575 9 0 6 2 9 5bOd3&desK BDFChar: 2512 2576 9 3 4 0 9 J3Z@b5_+B8J3X)7 BDFChar: 2513 2577 9 1 6 4 7 &9PE) BDFChar: 2514 2578 9 1 6 3 8 &9O9^r#bt> BDFChar: 2515 2579 9 1 6 2 8 &9O9NA@N`^ BDFChar: 2516 2580 9 1 6 2 8 A=*@-QiR$a BDFChar: 2517 2581 9 1 6 1 8 A=*@-QiLZa BDFChar: 2518 2582 9 1 6 3 8 Qt-3p!;lfs BDFChar: 2519 2583 9 1 6 0 9 $o#IN%)=P*0YdYg BDFChar: 2520 2584 9 1 6 0 9 ^b?0N^^Mp40FRp] BDFChar: 2521 2585 9 1 6 1 6 r.' BDFChar: 2564 2628 9 4 7 7 10 n.6-B BDFChar: 2565 2629 9 0 3 0 3 J:N1> BDFChar: 2566 2630 9 4 7 0 3 &.fEB BDFChar: 2567 2631 9 4 8 -3 12 #S8+$5X7S"J:N0#J:N0# BDFChar: 2568 2632 9 4 4 -3 12 J:N0#J:N0#J:N0#J:N0# BDFChar: 2569 2633 9 4 8 -3 12 J:N0#J:N0#5X7S"+I?349,?] BDFChar: 2610 2674 9 0 7 0 8 4FY3*a8Ja4od+49,?] BDFChar: 2612 2676 9 0 7 0 8 4FY3Fp[@R"49,?] BDFChar: 2613 2677 9 0 7 0 8 4FZJJkM,0K49,?] BDFChar: 2614 2678 9 0 7 0 8 4FZJJj88"g49,?] BDFChar: 2615 2679 9 0 7 0 8 4FZ%Me^`E'49,?] BDFChar: 2616 2680 9 0 7 2 7 $jQb3"q1J3 BDFChar: 2617 2681 9 0 7 1 8 (`4+irtlRi BDFChar: 2618 2682 9 0 7 4 5 s8N'! BDFChar: 2619 2683 9 0 7 0 9 (`35Qs8N'!(`35Q BDFChar: 2620 2684 9 0 7 1 8 5i?]F*tLS# BDFChar: 2621 2685 9 0 7 1 8 #TO?Srsg"S BDFChar: 2622 2686 9 0 7 1 8 523 BDFChar: 2624 2688 9 0 7 1 8 (`X%crsg"c BDFChar: 2625 2689 9 0 7 1 7 #Rh4C%L`UC BDFChar: 2626 2690 9 0 7 1 8 #Rh4CrsfGC BDFChar: 2627 2691 9 0 7 3 7 "9u%6"98E% BDFChar: 2628 2692 9 0 7 3 7 "Knr2"98E% BDFChar: 2629 2693 9 0 6 0 6 WW7VNJcMeN BDFChar: 2630 2694 9 0 7 0 7 s8W-!s8W-! BDFChar: 2631 2695 9 0 7 0 7 s+,`PJUrCP BDFChar: 2632 2696 9 0 6 0 10 5X7S"pd"U>5X9bu BDFChar: 2633 2697 9 1 5 0 10 ?m$R7p`T>S+E BDFChar: 2647 2711 9 0 8 0 8 pj`X#.Y%eTs+#n*WW7hTO+731 BDFChar: 2648 2712 9 0 0 0 0 z BDFChar: 2649 2713 9 0 0 0 0 z BDFChar: 2650 2714 9 0 0 0 0 z BDFChar: 2651 2715 9 0 0 0 0 z BDFChar: 2652 2716 9 0 0 0 0 z BDFChar: 2653 2717 9 0 0 0 0 z BDFChar: 2654 2718 9 0 0 0 0 z BDFChar: 2655 2719 9 0 0 0 0 z BDFChar: 2656 2720 9 0 0 0 0 z BDFChar: 2657 2721 9 0 0 0 0 z BDFChar: 2658 2722 9 0 0 0 0 z BDFChar: 2659 2723 9 0 0 0 0 z BDFChar: 2660 2724 9 8 8 -2 -2 z BDFChar: 2661 2725 9 8 8 -2 -2 z BDFChar: 2662 2726 9 8 8 -2 -2 z BDFChar: 2663 2727 9 8 8 -2 -2 z BDFChar: 2664 2728 9 8 8 -2 -2 z BDFChar: 2665 2729 9 8 8 -2 -2 z BDFChar: 2666 2730 9 8 8 -2 -2 z BDFChar: 2667 2731 9 8 8 -2 -2 z BDFChar: 2668 2732 9 8 8 -2 -2 z BDFChar: 2669 2733 9 8 8 -2 -2 z BDFChar: 2670 2734 9 8 8 -2 -2 z BDFChar: 2671 2735 9 0 7 -3 -2 _gVRc BDFChar: 2672 2736 9 0 7 9 10 I_u-c BDFChar: 2673 2737 9 0 0 0 0 z BDFChar: 2674 2738 9 0 0 0 0 z BDFChar: 2675 2739 9 0 0 0 0 z BDFChar: 2676 2740 9 0 0 0 0 z BDFChar: 2677 2741 9 0 0 0 0 z BDFChar: 2678 2742 9 0 0 0 0 z BDFChar: 2679 2743 9 0 0 0 0 z BDFChar: 2680 2744 9 0 0 0 0 z BDFChar: 2681 2745 9 0 0 0 0 z BDFChar: 2682 2746 9 0 0 0 0 z BDFChar: 2683 2747 9 0 0 0 0 z BDFChar: 2684 2748 9 0 0 0 0 z BDFChar: 2685 2749 9 0 0 0 0 z BDFChar: 2686 2750 9 0 0 0 0 z BDFChar: 2687 2751 9 0 0 0 0 z BDFChar: 2688 2752 9 0 0 0 0 z BDFChar: 2689 2753 9 0 0 0 0 z BDFChar: 2690 2754 9 0 0 0 0 z BDFChar: 2691 2755 9 0 0 0 0 z BDFChar: 2692 2756 9 0 0 0 0 z BDFChar: 2693 2757 9 0 0 0 0 z BDFChar: 2694 2758 9 0 0 0 0 z BDFChar: 2695 2759 9 0 0 0 0 z BDFChar: 2696 2760 9 0 0 0 0 z BDFChar: 2697 2761 9 0 7 0 10 IUckt@q5LGpg@J0 BDFChar: 2698 2762 9 3 4 0 10 ^qdb$^qdb$^qd_c BDFChar: 2699 2763 9 2 6 0 10 f\"j/f\"j/f\"gV BDFChar: 2700 2764 9 0 7 0 10 gY:K;gY:K;gY:H_ BDFChar: 2701 2765 9 0 7 0 10 gY:K;cHa_\`5KRo BDFChar: 2702 2766 9 0 7 0 10 _o'B(AnF.f4;\n8 BDFChar: 2703 2767 9 0 7 0 10 gY:K;F)uDD,9nE5 BDFChar: 2704 2768 9 0 7 0 10 e^`4#e^`43AS#EQ BDFChar: 2705 2769 9 0 8 0 10 Wdq+"Wdq+"Wdq+"Wdq+"8q9Na8q6mA BDFChar: 2706 2770 9 0 7 0 10 gY:K.cG\#RgY:H_ BDFChar: 2707 2771 9 0 7 0 10 _e*LC4;^1CAnJp\ BDFChar: 2708 2772 9 0 7 0 10 gY:J(F!GaIgY:H_ BDFChar: 2709 2773 9 0 7 0 10 e^`4#AS#H'e^`1M BDFChar: 2710 2774 9 1 7 0 10 ^qdb$^qdb$^qfpL BDFChar: 2711 2775 9 1 7 0 10 I_`b7^qdb$^qbC! BDFChar: 2712 2776 9 1 7 0 10 prpat`l?$<`m"2X BDFChar: 2713 2777 9 0 7 0 10 _o([#s8Uj._o'@l BDFChar: 2714 2778 9 3 4 0 9 ^];0c^qdb$^q]pM BDFChar: 2715 2779 9 2 6 0 9 fDsRVf\"j/f[p0( BDFChar: 2716 2780 9 0 7 0 9 gAp!_gY:K;gY2]. BDFChar: 2717 2781 9 0 7 0 9 ^]<-DgWn*i`5DWU BDFChar: 2718 2782 9 0 7 0 7 _o$(u4?OGt BDFChar: 2719 2783 9 0 7 0 9 !s%*1gN.FW,9m0g BDFChar: 2720 2784 9 0 7 0 9 "T[*'e^`4#ARtiA BDFChar: 2721 2785 9 0 8 0 9 $@i*VWdq+"Wdq+"Wdq+"8q9Na BDFChar: 2722 2786 9 0 7 0 9 ^]<-DcHa_\gY2]. BDFChar: 2723 2787 9 0 7 0 7 _e)"J(d)EJ BDFChar: 2724 2788 9 0 7 0 9 !s%*1F)uDDgY2]. BDFChar: 2725 2789 9 0 7 0 9 "T[*'eR`=Be^XX" BDFChar: 2726 2790 9 2 6 0 10 i*]r#?smAM?skqo BDFChar: 2727 2791 9 1 7 0 7 I_`b7^qda7 BDFChar: 2728 2792 9 1 7 0 10 "pP9\`l?$<`l^\. BDFChar: 2732 2796 9 0 8 0 10 4of?uh134iWdq+"Wdqg6h108@4obQ_ BDFChar: 2733 2797 9 1 7 0 10 r!!?0"pP89"pXu* BDFChar: 2734 2798 9 1 7 0 7 r!!?0"pP;0 BDFChar: 2735 2799 9 1 7 -3 10 I_`b7^qdb$^qbC'"pP&- BDFChar: 2736 2800 9 1 6 1 9 J<7"^O:YAN&-)\1 BDFChar: 2737 2801 9 0 7 2 6 ,(IO\-ia5I BDFChar: 2738 2802 9 0 0 0 0 z BDFChar: 2739 2803 9 0 7 2 6 '`K?V6i[2e BDFChar: 2740 2804 9 0 7 3 7 +@,Tl+92BA BDFChar: 2741 2805 9 0 7 3 7 "B)E)"98E% BDFChar: 2742 2806 9 1 5 0 8 +E48%p`T>S+92BA BDFChar: 2743 2807 9 1 5 0 8 +<^G%p`QMS+92BA BDFChar: 2744 2808 9 1 5 1 8 +Admh:f)uC BDFChar: 2745 2809 9 1 5 2 10 +Af"5LtGO#Du]k< BDFChar: 2746 2810 9 1 5 0 10 +Af"5LtGO#fSK;& BDFChar: 2747 2811 9 0 7 3 7 ,Z=Y?,QIfE BDFChar: 2748 2812 9 0 7 2 10 (g&IGBP>?a"98E% BDFChar: 2749 2813 9 0 7 3 9 $P#;[4:V`! BDFChar: 2750 2814 9 0 8 -3 11 'n@b6.KCpu.KDX4CB/,MCB-Nu.KCpu.KCpue,TIK BDFChar: 2751 2815 9 1 6 2 8 A=*Ap&H!XN BDFChar: 2752 2816 9 1 6 2 9 #],k>r#ko& BDFChar: 2753 2817 9 1 6 2 8 #RiE60J"=H BDFChar: 2754 2818 9 1 6 2 8 #fn\>0]4&R BDFChar: 2755 2819 9 1 6 1 9 #Ri]>0J"@E5QCca BDFChar: 2756 2820 9 1 6 1 8 a>b.ni#qq_ BDFChar: 2757 2821 9 1 6 2 8 ":-]s0F.d] BDFChar: 2758 2822 9 0 6 0 10 TV.sRUqWe+TV.qX BDFChar: 2759 2823 9 0 6 0 10 TV/*V^8ScMYb7Wh BDFChar: 2760 2824 9 1 6 2 8 #Qu"&(^(*E BDFChar: 2761 2825 9 1 6 2 8 5_*5^@":KB BDFChar: 2762 2826 9 0 0 0 0 z BDFChar: 2763 2827 9 0 6 0 6 5!Y^4Sj5I> BDFChar: 2764 2828 9 0 6 0 6 p]U-pnc\^f BDFChar: 2765 2829 9 0 6 0 6 3(/q0WiE'! BDFChar: 2766 2830 9 0 6 0 6 WiE)!P!h80 BDFChar: 2767 2831 9 1 6 3 7 $o#UR$ig8- BDFChar: 2768 2832 9 1 6 3 7 ^bC^$^]4?7 BDFChar: 2769 2833 9 0 6 3 7 .TE?G.KBGK BDFChar: 2770 2834 9 0 6 3 7 W)P6GVuQet BDFChar: 2771 2835 9 1 6 -2 10 $o#IN$ip2*^b?0N^]4?7 BDFChar: 2772 2836 9 1 6 -2 10 ^b?0N^]=94$o#IN$ig8- BDFChar: 2773 2837 9 1 6 2 8 qu@-Z^b?/s BDFChar: 2774 2838 9 1 6 2 8 quFMd$o#Hs BDFChar: 2775 2839 9 1 6 1 9 ":-j*0Yf@J"98E% BDFChar: 2776 2840 9 1 6 1 9 J3^>40FTX#J,fQL BDFChar: 2777 2841 9 0 7 5 5 mf3=f BDFChar: 2778 2842 9 0 7 4 6 n*f]F BDFChar: 2779 2843 9 4 4 -2 12 J:N0#J:N.MJ:N0#J:N.M BDFChar: 2780 2844 9 3 5 -2 12 i8EPOi8EMni8EPOi8EMn BDFChar: 2781 2845 9 0 6 0 6 rdt-$rdt+L BDFChar: 2782 2846 9 0 6 0 6 ri2uuWiH$u BDFChar: 2783 2847 9 0 6 0 6 ri5stri5qt BDFChar: 2784 2848 9 0 6 0 6 rlV+$b,5.< BDFChar: 2785 2849 9 0 6 0 6 rhdi$VTSl< BDFChar: 2786 2850 9 0 6 0 6 rmn+#Wn..L BDFChar: 2787 2851 9 0 6 0 6 3(1?h\jSLX BDFChar: 2788 2852 9 0 8 1 9 #QREr.KCFgs*u'h.KE$?#QOi) BDFChar: 2789 2853 9 0 8 0 10 #QR$gIfTM!s*t@T#QP,1#QRBq0E;(Q BDFChar: 2790 2854 9 0 7 0 7 !BNW#Jq?BM BDFChar: 2791 2855 9 0 7 0 12 %M99b%LXk BDFChar: 18 49 6 1 3 0 7 +CLib+ BDFChar: 50 81 6 0 4 -2 7 E/9=+Lkpk+&-r79 BDFChar: 51 82 6 0 4 0 7 n;)mVn=Yl! BDFChar: 52 83 6 0 4 0 7 G^t<`#RC_* BDFChar: 53 84 6 0 4 0 7 p`L\%+J9V%o BDFChar: 71 102 6 1 3 0 7 @"N:aW2K[r BDFChar: 79 110 6 0 4 0 5 n;)mVLkl$2 BDFChar: 80 111 6 0 4 0 5 E/9=+Li<=o BDFChar: 81 112 6 0 4 -2 5 n;)mVM"#qF BDFChar: 82 113 6 0 4 -2 5 G_h03Lj012 BDFChar: 83 114 6 0 4 0 5 G^tqUM BDFChar: 96 160 6 5 5 -2 -2 z BDFChar: 97 161 6 2 2 0 7 J:IWMJ:N0# BDFChar: 98 162 6 0 4 -1 6 +F'QPTV-NP BDFChar: 99 163 6 0 4 0 7 3']au5X7U0 BDFChar: 100 164 6 1 4 1 6 OC403@#t?g BDFChar: 101 165 6 0 4 0 7 LknkME$0*B BDFChar: 102 166 6 2 2 -1 8 J:N0#!!%P"J:IV" BDFChar: 103 167 6 1 4 0 8 @$!XHOAI']?iU0, BDFChar: 104 168 6 1 3 9 9 TE"rl BDFChar: 105 169 6 0 5 0 7 G_EH"UpPf" BDFChar: 106 170 6 1 4 3 9 ?k@:=DufA- BDFChar: 107 171 6 0 4 1 5 -r?R5-ia5I BDFChar: 108 172 6 0 4 2 5 p]q-2 BDFChar: 109 173 6 1 4 3 3 n,NFg BDFChar: 110 174 6 0 5 0 7 G_EH*[&eq* BDFChar: 111 175 6 1 3 9 9 huE`W BDFChar: 112 176 6 1 3 6 8 5bL@B BDFChar: 113 177 6 0 4 0 6 +<^G%+9;0: BDFChar: 114 178 6 1 4 5 9 i"0:Hn,NFg BDFChar: 115 179 6 1 4 5 9 i"09-huE`W BDFChar: 116 180 6 2 3 8 9 5_&h7 BDFChar: 117 181 6 0 4 -2 5 LkpkCM"#qF BDFChar: 118 182 6 0 4 0 7 Gc7R>BIG8W BDFChar: 119 183 6 2 2 3 4 J:IV" BDFChar: 120 184 6 0 2 -2 0 +<\H" BDFChar: 121 185 6 1 2 5 9 5eoWM5QCca BDFChar: 122 186 6 1 4 5 9 @$$J3?iU0, BDFChar: 123 187 6 0 4 1 5 TMR%5TE"rl BDFChar: 124 188 6 0 5 -2 9 5eoWQ8.Zn3N"d67 BDFChar: 125 189 6 0 5 -2 9 5eoWQ8.ZnGKEr,/ BDFChar: 126 190 6 0 5 -2 9 ^`^EqVhLkth^Lkl$2 BDFChar: 132 196 6 0 4 0 9 :]PHjLkth^Lkl$2 BDFChar: 133 197 6 0 4 0 9 +Aa2"Lkth^Lkl$2 BDFChar: 134 198 6 0 5 0 7 I#sHfOH>Qo BDFChar: 135 199 6 0 4 -2 7 G^tqW+aN1qVhLkpkCLi<=o BDFChar: 150 214 6 0 4 0 9 :]PHjLkpkCLi<=o BDFChar: 151 215 6 0 4 1 5 Leo3jL]@DT BDFChar: 152 216 6 0 4 -1 8 #]Q/uW2ReYE.@og BDFChar: 153 217 6 0 4 0 9 5Tkl=LkpkCLi<=o BDFChar: 154 218 6 0 4 0 9 &0QdbLkpkCLi<=o BDFChar: 155 219 6 0 4 0 9 +AdlMLkpkCLi<=o BDFChar: 156 220 6 0 4 0 9 :]Q<-LkpkCLi<=o BDFChar: 157 221 6 0 4 0 9 &0Qdb:f&8W+qUME!U]ELj/n" BDFChar: 164 228 6 0 4 0 7 :]PG?G_h0# BDFChar: 165 229 6 0 4 0 9 +Aa0\E!U]ELj/n" BDFChar: 166 230 6 0 4 0 5 E%#D(TQgG: BDFChar: 167 231 6 0 4 -2 5 G^t BDFChar: 172 236 6 1 2 0 8 J3X*"5X7S"5QCca BDFChar: 173 237 6 2 3 0 8 5_&ibJ:N0#J,fQL BDFChar: 174 238 6 1 3 0 8 5bJ*B5X7S"5QCca BDFChar: 175 239 6 1 3 0 7 TE%5B5X7S" BDFChar: 176 240 6 0 4 0 8 +;cdqUMn;)mVLkl$2 BDFChar: 178 242 6 0 4 0 8 5Tg&GLkpkCDu]k< BDFChar: 179 243 6 0 4 0 8 &0LslLkpkCDu]k< BDFChar: 180 244 6 0 4 0 8 +A`&WLkpkCDu]k< BDFChar: 181 245 6 0 4 0 9 8>qUME/9=+Li<=o BDFChar: 182 246 6 0 4 0 7 :]PHjLkpk+ BDFChar: 183 247 6 0 4 0 6 + BDFChar: 198 262 6 0 4 0 9 &0Q4JJ:N0#J9V%o BDFChar: 199 263 6 0 4 0 8 &0LstJ:N0#GQ7^D BDFChar: 200 264 6 0 4 0 9 +Ad<5J:N0#J9V%o BDFChar: 201 265 6 0 4 0 8 +A`&_J:N0#GQ7^D BDFChar: 202 266 6 0 4 0 9 +96Y:J:N0#J9V%o BDFChar: 203 267 6 0 4 0 7 +96Y:J:N/p BDFChar: 204 268 6 0 4 0 9 :`t"5J:N0#J9V%o BDFChar: 205 269 6 0 4 0 8 :`oa_J:N0#GQ7^D BDFChar: 206 270 6 0 4 0 9 :a"\XLkpkCOPg*= BDFChar: 207 271 6 0 4 0 9 :`p#LG_h03Lj/n" BDFChar: 208 272 6 0 4 0 7 ?r0DX84ZQb BDFChar: 209 273 6 0 5 0 7 #WrB;Lkpk3 BDFChar: 210 274 6 0 4 0 9 DufZ`JG=YFJG9*E BDFChar: 211 275 6 0 4 0 7 Duaj5pjdm> BDFChar: 212 276 6 0 4 0 9 Li<@hJ:REFJG9*E BDFChar: 213 277 6 0 4 0 8 Li BDFChar: 216 280 6 0 5 -2 7 pjdniJ:N1F&.AO= BDFChar: 217 281 6 0 4 -2 5 E/=:>J9W1R BDFChar: 218 282 6 0 4 0 9 :a#O`JG=YFJG9*E BDFChar: 219 283 6 0 4 0 8 :`oaWM"lLNGQ7^D BDFChar: 220 284 6 0 4 0 9 +Ad<5J:O#CLi<=o BDFChar: 221 285 6 0 4 -2 8 +A`&_LkpkCGR/6g BDFChar: 222 286 6 0 4 0 9 LiqUm+qUM+:+:+QcO:Ye" BDFChar: 244 308 6 0 4 0 9 &1@Mi&.fBa&E!Ng BDFChar: 245 309 6 0 3 -2 8 +A`%\+QO BDFChar: 275 339 6 0 4 0 5 E2]_>TQgG: BDFChar: 276 340 6 0 4 0 9 &0UIuLktPnOGEl: BDFChar: 277 341 6 0 4 0 8 &0LstJ:N0#J,fQL BDFChar: 278 342 6 0 4 -2 7 n;)mVn=Yl!+M[sW BDFChar: 279 343 6 0 4 -2 5 G^tJ< BDFChar: 291 355 6 0 3 -2 7 5X99R5X7Rg+M[sW BDFChar: 292 356 6 0 4 0 9 :a#NU+qUMLkpkCLj/n" BDFChar: 298 362 6 0 4 0 9 Dub]MLkpkCLi<=o BDFChar: 299 363 6 0 4 0 7 Dub]MLkpk3 BDFChar: 300 364 6 0 4 0 9 Li_ULkpkCLi<=o BDFChar: 305 369 6 0 4 0 8 -r9o"LkpkCGQ7^D BDFChar: 306 370 6 0 4 -2 7 LkpkCLkpk++;b(Y BDFChar: 307 371 6 0 5 -2 5 LkpkCLj0I> BDFChar: 308 372 6 0 4 0 9 +AdlMLkr".fSBM- BDFChar: 309 373 6 0 4 0 8 +A`&oLo@8N:]LIq BDFChar: 310 374 6 0 4 0 9 +AdlM:f&8W+`&0O5gp](9o BDFChar: 319 383 6 2 4 0 7 @"5_&h7 BDFChar: 350 414 6 0 4 -2 5 n;)mVLklFLkpk+ BDFChar: 352 416 6 0 5 0 8 "E]HULkpkCDu]k< BDFChar: 353 417 6 0 5 0 6 "E]HULkp!M BDFChar: 354 418 6 0 5 0 7 A=SmKPa%DC BDFChar: 355 419 6 0 5 -2 5 A=SmKP[jn" BDFChar: 356 420 6 0 4 0 7 E2Y050H_J\ BDFChar: 357 421 6 0 4 -2 5 E2Y05-nlbd BDFChar: 358 422 6 0 4 -1 8 JFJANM"&3QO9bgd BDFChar: 359 423 6 0 4 0 7 n-B;=J:N/p BDFChar: 360 424 6 0 4 0 5 n-Eu`J9V%o BDFChar: 361 425 6 0 4 0 7 pcor5+@(JP BDFChar: 362 426 6 0 3 -2 9 5bML-+Lkpk3#]KbD BDFChar: 373 437 6 0 4 0 7 p]qH+5_+C[ BDFChar: 374 438 6 0 4 0 5 p^m3cJG9*E BDFChar: 375 439 6 0 4 0 7 p]qEb#RC_* BDFChar: 376 440 6 0 4 0 7 pjbV;J:N/p BDFChar: 377 441 6 0 4 -2 5 pjbV;J:N/p BDFChar: 378 442 6 0 4 -2 5 p]rPZ#k3@` BDFChar: 379 443 6 0 4 0 7 n-B:2pcsB) BDFChar: 380 444 6 0 4 0 7 pjdna#RC_* BDFChar: 381 445 6 0 4 -2 5 pjdna#RC_* BDFChar: 382 446 6 0 4 0 7 +E/G7#RC_* BDFChar: 383 447 6 0 4 -2 5 YfMWVOPkY> BDFChar: 384 448 6 2 2 0 7 J:N0#J:N0# BDFChar: 385 449 6 1 3 0 7 TV.sNTV.sN BDFChar: 386 450 6 0 4 0 7 +S['%p`L\% BDFChar: 387 451 6 2 2 0 7 J:N0#J,k+M BDFChar: 388 452 6 0 5 0 9 'FU$UW2QrU BDFChar: 390 454 6 0 5 0 7 1amaIW2QqJ BDFChar: 391 455 6 0 5 0 7 N.ck;KS5$2 BDFChar: 392 456 6 0 5 -2 8 "GD;YKS5#3oE6!2 BDFChar: 393 457 6 0 4 -2 8 #`+"eLkpkC8-gmL BDFChar: 394 458 6 0 5 0 7 Pa'\I['Z'b BDFChar: 395 459 6 0 5 -2 8 "I,"te?lTIPQVg' BDFChar: 396 460 6 0 5 -2 8 "9\_cPa%DsPQVg' BDFChar: 397 461 6 0 4 0 9 :`s_5Lkth^Lkl$2 BDFChar: 398 462 6 0 4 0 8 :`oaW#^D/]GQ7^D BDFChar: 399 463 6 1 3 0 9 TKiKB5X7S"5X5;L BDFChar: 400 464 6 1 3 0 8 TKiKB5X7S"5QCca BDFChar: 401 465 6 0 4 0 9 :`s_5LkpkCLi<=o BDFChar: 402 466 6 0 4 0 8 :`oaWLkpkCDu]k< BDFChar: 403 467 6 0 4 0 9 :`tRMLkpkCLi<=o BDFChar: 404 468 6 0 4 0 8 :`oaoLkpkCGQ7^D BDFChar: 405 469 6 0 4 0 9 Du`^jLkpkCLi<=o BDFChar: 406 470 6 0 4 0 9 Du`]7LkpkCLj/n" BDFChar: 407 471 6 0 4 0 9 &0LsL!/QGeLi<=o BDFChar: 408 472 6 0 4 0 9 &0LsL!/QGeLj/n" BDFChar: 409 473 6 0 4 0 9 :`oa7!/QGeLi<=o BDFChar: 410 474 6 0 4 0 9 :`oa7!/QGeLj/n" BDFChar: 411 475 6 0 4 0 9 5Tg&'!/QGeLi<=o BDFChar: 412 476 6 0 4 0 9 5Tg&'!/QGeLj/n" BDFChar: 413 477 6 0 4 0 5 n-BFLkl$2 BDFChar: 443 507 6 0 4 0 9 &0OdlE!U]ELj/n" BDFChar: 444 508 6 0 5 0 9 &0Q@^OSk3%OIQ:N BDFChar: 445 509 6 0 4 0 8 &0Lsl-toiXGQ7^D BDFChar: 446 510 6 0 4 -1 9 +@pI=R&Ht)aDcY0 BDFChar: 447 511 6 0 4 -1 7 +@pI=W2RdVJ,fQL BDFChar: 448 512 6 0 4 0 9 TMTT`Lkth^Lkl$2 BDFChar: 449 513 6 0 4 0 8 TMPW-#^D/]GQ7^D BDFChar: 450 514 6 0 4 0 9 E/8IhLkth^Lkl$2 BDFChar: 451 515 6 0 4 0 8 E/4L5#^D/]GQ7^D BDFChar: 452 516 6 0 4 0 9 TMYE6JG=YFJG9*E BDFChar: 453 517 6 0 4 0 8 TMPW-M"lLNGQ7^D BDFChar: 454 518 6 0 4 0 9 E/4MhJ:REFJG9*E BDFChar: 455 519 6 0 4 0 8 E/4L5M"lLNGQ7^D BDFChar: 456 520 6 0 3 0 9 TMPV2+J9W3P BDFChar: 490 554 6 0 4 0 9 Du`^RLkpkCLi<=o BDFChar: 491 555 6 0 4 0 9 Du`]7E/9=+Li<=o BDFChar: 492 556 6 0 4 0 9 DuaRU!-!aMLi<=o BDFChar: 493 557 6 0 4 0 9 DuaRU!-!aMLi<=o BDFChar: 494 558 6 0 4 0 9 +96A:LkpkCLi<=o BDFChar: 495 559 6 0 4 0 7 +96A:Lkpk+ BDFChar: 496 560 6 0 4 0 9 Du_#"LkpkCLi<=o BDFChar: 497 561 6 0 4 0 9 Du_!\E/9=+Li<=o BDFChar: 498 562 6 0 4 0 9 Dub]M:f&8W+=4845j* BDFChar: 615 679 6 0 4 -2 8 #Z1"e:f'tb0G#?, BDFChar: 616 680 6 0 5 -1 7 J:Q:JTW#5B&-)\1 BDFChar: 617 681 6 0 5 -2 7 0L/b4<)cgr":+u- BDFChar: 618 682 6 0 4 0 7 J:O#[OGJ^3 BDFChar: 619 683 6 0 4 0 7 J:P.cOH?,[ BDFChar: 620 684 6 0 4 0 8 LoAs^!/RT+L]@DT BDFChar: 621 685 6 0 4 0 8 pkX`^!;MA+L]@DT BDFChar: 622 699 6 2 3 8 9 5_&h7 BDFChar: 623 700 6 2 3 8 9 5_&h7 BDFChar: 624 701 6 2 3 8 9 J3X)7 BDFChar: 625 710 6 1 3 8 9 5bJ)W BDFChar: 626 711 6 1 3 8 9 TKiJW BDFChar: 627 728 6 0 4 8 9 Li<=o BDFChar: 628 729 6 2 2 8 9 J:IV" BDFChar: 629 730 6 1 3 7 9 5bL@B BDFChar: 630 731 6 3 5 -2 0 5_*5B BDFChar: 631 732 6 0 4 7 9 8>qUM BDFChar: 632 733 6 1 4 8 9 :nRdg BDFChar: 633 768 6 1 2 8 9 J3X)7 BDFChar: 634 769 6 2 3 8 9 5_&h7 BDFChar: 635 770 6 1 3 8 9 5bJ)W BDFChar: 636 771 6 0 4 7 9 8>qUM BDFChar: 637 774 6 0 4 8 9 Li<=o BDFChar: 638 775 6 2 2 9 9 J,fQL BDFChar: 639 776 6 1 3 9 9 TE"rl BDFChar: 640 780 6 1 3 8 9 TKiJW BDFChar: 641 809 6 2 2 -2 -1 J:IV" BDFChar: 642 880 6 0 4 0 7 J:N1FJ:N0# BDFChar: 643 881 6 0 4 0 5 J:REFJ:IV" BDFChar: 644 882 6 0 4 0 7 po(-i+aG9fr BDFChar: 650 890 7 2 3 -2 0 J:Klb BDFChar: 651 891 6 0 4 0 5 n-B:*#k.fo BDFChar: 652 892 6 0 4 0 5 G^uH[J9V%o BDFChar: 653 893 6 0 4 0 5 n-CEj#k.fo BDFChar: 654 894 6 1 2 -1 5 5X5;L5X9i" BDFChar: 655 900 6 0 1 8 9 5_&h7 BDFChar: 656 901 6 0 4 7 9 O<@'o BDFChar: 657 902 6 0 4 0 9 5_*g0Lkth^Lkl$2 BDFChar: 658 903 6 2 2 4 5 J:IV" BDFChar: 659 904 6 0 4 0 9 5_/W[JG=YFJG9*E BDFChar: 660 905 6 0 4 0 9 5_+ZHM"ld^Lkl$2 BDFChar: 661 906 6 0 2 0 9 5_'t"+FLkpk+ BDFChar: 674 921 6 2 2 0 7 J:N0#J:N0# BDFChar: 675 922 6 0 4 0 7 Lle:F^n?dF BDFChar: 676 923 6 0 4 0 7 + BDFChar: 683 931 6 0 4 0 7 pcor5&0O75 BDFChar: 684 932 6 0 4 0 7 p`L\%+OH>Q3 BDFChar: 705 953 6 2 4 0 5 J:N0#J7&?W BDFChar: 706 954 6 1 4 0 5 OJ'D)TTB-R BDFChar: 707 955 6 0 4 0 7 5X6G7:f)t( BDFChar: 708 957 6 0 4 0 5 Lknl(+>Lkpk+ BDFChar: 728 977 6 0 4 0 7 E/9<@3/EB0 BDFChar: 729 978 6 0 5 0 8 "Ghk1:`pl'+92BA BDFChar: 730 979 6 0 5 0 9 5_)6j-n#W<&.egA BDFChar: 731 980 6 0 5 0 9 :]uT1:f&8W+6Lkpk+ BDFChar: 756 1005 6 1 4 0 7 E.EJsOH>Q3 BDFChar: 757 1006 6 0 4 -2 7 +<^HX+ BDFChar: 761 1010 6 0 4 0 5 E/9$pLi<=o BDFChar: 762 1011 6 0 2 -2 8 +FLkpk+ BDFChar: 764 1013 6 0 4 0 5 G_#R>J9V%o BDFChar: 765 1014 6 0 4 0 5 n-Jdp#k.fo BDFChar: 766 1015 6 0 4 0 7 J:R-FM"#qF BDFChar: 767 1016 6 0 4 -2 5 J:R-FM"#qF BDFChar: 768 1017 6 0 4 0 7 G^tH BDFChar: 772 1021 6 0 4 0 7 n-B:*#RC_* BDFChar: 773 1022 6 0 4 0 7 G^t=;TR_Q; BDFChar: 774 1023 6 0 4 0 7 n-B:J-jU+J BDFChar: 775 1024 6 0 4 0 9 5ToiPJG=YFJG9*E BDFChar: 776 1025 6 0 4 0 9 :]U9@JG=YFJG9*E BDFChar: 777 1026 6 0 4 -2 7 i'9PH84Z9B#S6t9 BDFChar: 778 1027 6 0 4 0 9 &0UauJ:N0#J:IV" BDFChar: 779 1028 6 0 4 0 7 G^t>6J:N/p BDFChar: 780 1029 6 0 4 0 7 G^t<`#RC_* BDFChar: 781 1030 6 2 2 0 7 J:N0#J:N0# BDFChar: 782 1031 6 1 3 0 9 TE%5B5X7S"5X5;L BDFChar: 783 1032 6 0 3 0 7 &.fBa&.fE2 BDFChar: 784 1033 6 0 4 0 7 @%aa&W2QZ! BDFChar: 785 1034 6 0 4 0 7 TV.tIW2QZ! BDFChar: 786 1035 6 0 4 0 7 i'9PH84Z9B BDFChar: 787 1036 6 0 4 0 9 &0QdjTYS@9OGEl: BDFChar: 788 1037 6 0 4 0 9 5TklMR&Ht)aG9fr BDFChar: 789 1038 6 0 4 0 9 Li BDFChar: 808 1057 6 0 4 0 7 G^t BDFChar: 816 1065 6 0 5 -2 7 W2QYnW2QYB"9\]) BDFChar: 817 1066 6 0 4 0 7 ^d)j084Z9j BDFChar: 818 1067 6 0 4 0 7 Lks-NW2QZ9 BDFChar: 819 1068 6 1 4 0 7 J:QR>OH>R^ BDFChar: 820 1069 6 0 4 0 7 n-B;E#RC_* BDFChar: 821 1070 6 0 5 0 7 R&$P=UnjfR BDFChar: 822 1071 6 0 4 0 7 G_h03GUQ+= BDFChar: 823 1072 6 0 4 0 5 E!U]ELj/n" BDFChar: 824 1073 6 0 4 0 7 E.IG6LkplV BDFChar: 825 1074 6 0 4 0 5 n;-RiM!tBE BDFChar: 826 1075 6 0 4 0 5 pjdmFJ:IV" BDFChar: 827 1076 6 0 4 -2 5 G_h03Lj02E BDFChar: 828 1077 6 0 4 0 5 E/=:>J9V%o BDFChar: 829 1078 6 0 4 0 5 W2O[6W2K[r BDFChar: 830 1079 6 0 4 0 5 n-Et=#k.fo BDFChar: 831 1080 6 0 4 0 5 LmY->aG9fr BDFChar: 832 1081 6 0 4 0 8 LiOPg*= BDFChar: 852 1101 6 0 4 0 5 n-F7E#k.fo BDFChar: 853 1102 6 0 4 0 5 OJo,AW/puZ BDFChar: 854 1103 6 0 4 0 5 G_h0#-qF=< BDFChar: 855 1104 6 0 4 0 8 5Tg&GM"lLNGQ7^D BDFChar: 856 1105 6 0 4 0 7 :]PHjpjdm> BDFChar: 857 1106 6 0 4 -2 7 5k%$X84Z9B#S6t9 BDFChar: 858 1107 6 0 4 0 8 &0LuJJ:N0#J,fQL BDFChar: 859 1108 6 0 4 0 5 G_#:6J9V%o BDFChar: 860 1109 6 0 4 0 5 G^s`=#k.fo BDFChar: 861 1110 6 2 2 0 8 J:IWMJ:N0#J,fQL BDFChar: 862 1111 6 1 3 0 7 TE%5B5X7S" BDFChar: 863 1112 6 0 2 -2 8 +`;J-7 BDFChar: 880 1129 6 0 5 0 5 OJp+qeC4Hu BDFChar: 881 1130 6 0 4 0 7 pkV`hE2]_6 BDFChar: 882 1131 6 0 4 0 5 peW)PW2K[r BDFChar: 883 1132 6 0 5 0 7 \>Z@Q\CB$X BDFChar: 884 1133 6 0 5 0 5 \>[caeC4Hu BDFChar: 885 1134 6 0 4 -2 9 :a#65#]L%T#]P<5 BDFChar: 886 1135 6 0 4 -2 7 :a#65E!Q_gJ8bJg BDFChar: 887 1136 6 0 4 0 7 W2QYnW,Nk% BDFChar: 888 1137 6 0 4 -2 5 +K26;W,Nk% BDFChar: 889 1138 6 0 4 0 7 E/9>FLkpk+ BDFChar: 890 1139 6 0 4 0 5 E/=:FLi<=o BDFChar: 891 1140 6 0 5 0 7 N/39d:f&8W BDFChar: 892 1141 6 0 5 0 5 N/1;,+88 BDFChar: 899 1148 6 0 4 0 9 E/5X8Lkr".W)*Ho BDFChar: 900 1149 6 0 4 0 8 E/5X8Lo@8N:]LIq BDFChar: 901 1150 6 0 4 0 9 E$2*8Lo@8NW)*Ho BDFChar: 902 1151 6 0 4 0 7 E$2*8W2QXk BDFChar: 903 1152 6 0 4 -2 7 G^t* BDFChar: 905 1154 6 1 4 0 5 &7@3-@"84W BDFChar: 906 1162 6 0 4 -2 9 LiA0;R&Ht)aG:*5 BDFChar: 907 1163 6 0 4 -2 8 Li BDFChar: 932 1188 6 0 5 0 7 SQc BDFChar: 933 1189 6 0 5 0 5 S<36%OH9GB BDFChar: 934 1190 6 0 4 -2 7 i1R=?< BDFChar: 942 1198 6 0 4 0 7 Lknl(+LkpkC BDFChar: 955 1211 6 0 4 0 5 J:R-FLkl$2 BDFChar: 956 1212 6 0 4 0 7 0M'905X7Ro BDFChar: 957 1213 6 0 4 0 5 0Z\K(5WA`D BDFChar: 958 1214 6 0 4 -2 7 0M'905X7Ro&.egA BDFChar: 959 1215 6 0 4 -2 5 0Z\K(5WB;d BDFChar: 960 1216 6 2 2 0 7 J:N0#J:N0# BDFChar: 961 1217 6 0 4 0 9 Li BDFChar: 975 1231 6 2 2 0 7 J:N0#J:N0# BDFChar: 976 1232 6 0 4 0 9 LiQo BDFChar: 981 1237 6 0 4 0 5 E%#D(TQgG: BDFChar: 982 1238 6 0 4 0 9 Li<@hJ:REFJG9*E BDFChar: 983 1239 6 0 4 0 8 LiFLkpk+ BDFChar: 1001 1257 6 0 4 0 5 E/=:FLi<=o BDFChar: 1002 1258 6 0 4 0 9 :]PHjLkth^Li<=o BDFChar: 1003 1259 6 0 4 0 7 :]PHjpkX`F BDFChar: 1004 1260 6 0 4 0 9 :]Ttj#^?U\#k.fo BDFChar: 1005 1261 6 0 4 0 7 :]TtjGR+TE BDFChar: 1006 1262 6 0 4 0 9 Dub]MLkp9]#]KbD BDFChar: 1007 1263 6 0 4 -2 7 Dub]MLkpk3#]KbD BDFChar: 1008 1264 6 0 4 0 9 :]Q<-Lkp9]#]KbD BDFChar: 1009 1265 6 0 4 -2 7 :]Q<-Lkpk3#]KbD BDFChar: 1010 1266 6 0 4 0 9 -r>_ULkp9]#]KbD BDFChar: 1011 1267 6 0 4 -2 8 -r9o"LkpkCGR/6g BDFChar: 1012 1268 6 0 4 0 9 :]Q<-Lkp9]#RCD1 BDFChar: 1013 1269 6 0 4 0 7 :]Q<-Lj012 BDFChar: 1014 1270 6 0 4 -2 7 pjdmFJ:N0c5X5;L BDFChar: 1015 1271 6 0 4 -2 5 pjdmFJA=E8 BDFChar: 1016 1272 6 0 4 0 9 :]Q<-aJc&9W5nr= BDFChar: 1017 1273 6 0 4 0 7 :]Q<-aJc&Y BDFChar: 1018 1274 6 0 4 -2 7 GX+O`5X7S"5_&h7 BDFChar: 1019 1275 6 0 4 -2 5 GX1a`5X7Sb BDFChar: 1020 1276 6 0 4 -2 7 LknkM+AdlM#VZ5Y BDFChar: 1021 1277 6 0 4 -2 5 Leo3::l#B2 BDFChar: 1022 1278 6 0 4 0 7 Lknn&+AdlM BDFChar: 1023 1279 6 0 4 0 5 Lf!jh:l#)O BDFChar: 1024 1280 6 0 4 0 7 #RC]\Lkpk3 BDFChar: 1025 1281 6 0 4 0 7 #RG[2Lkpk3 BDFChar: 1026 1282 6 0 4 0 7 +=?< BDFChar: 1032 1288 6 0 4 0 7 i2ETQW2QYV BDFChar: 1033 1289 6 0 4 0 5 i2ETQW/puZ BDFChar: 1034 1290 6 0 4 0 7 TV/7IW2QYV BDFChar: 1035 1291 6 0 4 0 5 TW%(QW/puZ BDFChar: 1036 1292 6 0 4 0 7 G^t9d#a'> BDFChar: 1047 1303 6 0 4 -2 5 aJc>IW5sL> BDFChar: 1048 1304 6 0 4 0 7 GbC^S@%a1& BDFChar: 1049 1305 6 0 4 0 5 E2\#STU5]Z BDFChar: 1050 1306 6 0 4 -1 7 E/9=+Lkpk+#QOi) BDFChar: 1051 1307 6 0 4 -2 5 G_h03Lj012 BDFChar: 1052 1308 6 0 4 0 7 LkpkCW2S@) BDFChar: 1053 1309 6 0 4 0 5 Lkr".W)*Ho BDFChar: 1054 1310 6 0 4 0 7 W0!sn^n?dF BDFChar: 1055 1311 6 0 4 0 5 W0$5)Lkl$2 BDFChar: 1056 1312 6 0 4 -2 7 i1QaIW2QYn#VZ5Y BDFChar: 1057 1313 6 0 4 -2 5 i1QaIW2Kt5 BDFChar: 1058 1314 6 0 4 -2 7 TV.tIW2QYn#S6t9 BDFChar: 1059 1315 6 0 4 -2 5 TV1eQW2Kt5 BDFChar: 1060 1316 6 0 5 -2 7 pkX`^LkpkG"9\]) BDFChar: 1061 1317 6 0 5 -2 5 pkX`^Ll;H> BDFChar: 1062 1318 6 0 5 -2 7 J:R-FLkpkG"9\]) BDFChar: 1063 1319 6 0 5 -2 5 J:R-FLl;H> BDFChar: 1064 1567 6 0 0 0 0 z BDFChar: 1065 1569 6 0 0 0 0 z BDFChar: 1066 1570 6 0 0 0 0 z BDFChar: 1067 1571 6 0 0 0 0 z BDFChar: 1068 1572 6 0 0 0 0 z BDFChar: 1069 1573 6 0 0 0 0 z BDFChar: 1070 1574 6 0 0 0 0 z BDFChar: 1071 1575 6 0 0 0 0 z BDFChar: 1072 1576 6 0 0 0 0 z BDFChar: 1073 1577 6 0 0 0 0 z BDFChar: 1074 1578 6 0 0 0 0 z BDFChar: 1075 1579 6 0 0 0 0 z BDFChar: 1076 1580 6 0 0 0 0 z BDFChar: 1077 1581 6 0 0 0 0 z BDFChar: 1078 1582 6 0 0 0 0 z BDFChar: 1079 1583 6 0 0 0 0 z BDFChar: 1080 1584 6 0 0 0 0 z BDFChar: 1081 1585 6 0 0 0 0 z BDFChar: 1082 1586 6 0 0 0 0 z BDFChar: 1083 1587 6 0 0 0 0 z BDFChar: 1084 1588 6 0 0 0 0 z BDFChar: 1085 1589 6 0 0 0 0 z BDFChar: 1086 1590 6 0 0 0 0 z BDFChar: 1087 1591 6 0 0 0 0 z BDFChar: 1088 1592 6 0 0 0 0 z BDFChar: 1089 1593 6 0 0 0 0 z BDFChar: 1090 1594 6 0 0 0 0 z BDFChar: 1091 1600 6 0 0 0 0 z BDFChar: 1092 1601 6 0 0 0 0 z BDFChar: 1093 1602 6 0 0 0 0 z BDFChar: 1094 1603 6 0 0 0 0 z BDFChar: 1095 1604 6 0 0 0 0 z BDFChar: 1096 1605 6 0 0 0 0 z BDFChar: 1097 1606 6 0 0 0 0 z BDFChar: 1098 1607 6 0 0 0 0 z BDFChar: 1099 1608 6 0 0 0 0 z BDFChar: 1100 1609 6 0 0 0 0 z BDFChar: 1101 1610 6 0 0 0 0 z BDFChar: 1102 1632 6 0 0 0 0 z BDFChar: 1103 1633 6 0 0 0 0 z BDFChar: 1104 1634 6 0 0 0 0 z BDFChar: 1105 1635 6 0 0 0 0 z BDFChar: 1106 1636 6 0 0 0 0 z BDFChar: 1107 1637 6 0 0 0 0 z BDFChar: 1108 1638 6 0 0 0 0 z BDFChar: 1109 1639 6 0 0 0 0 z BDFChar: 1110 1640 6 0 0 0 0 z BDFChar: 1111 1641 6 0 0 0 0 z BDFChar: 1112 1642 6 0 0 0 0 z BDFChar: 1113 1643 6 0 0 0 0 z BDFChar: 1114 1644 6 0 0 0 0 z BDFChar: 1115 1646 6 0 0 0 0 z BDFChar: 1116 1647 6 0 0 0 0 z BDFChar: 1117 4053 6 0 4 2 6 \=iUFkPtS_ BDFChar: 1118 4054 6 0 4 2 6 kU?5!\,ZL/ BDFChar: 1119 7680 6 0 4 -2 7 E/9>FLkpj0:`o`< BDFChar: 1120 7681 6 0 4 -2 5 E!U]EGT]g* BDFChar: 1121 7682 6 0 4 0 9 +9:neM"$4VM!tBE BDFChar: 1122 7683 6 0 4 0 9 +96qBn;)mVM!tBE BDFChar: 1123 7684 6 0 4 -2 7 n;)niLkplV!$D7A BDFChar: 1124 7685 6 0 4 -2 7 J:R-FLkplV!$D7A BDFChar: 1125 7686 6 0 4 -2 7 n;)niLkplV!,qo< BDFChar: 1126 7687 6 0 4 -2 7 J:R-FLkplV!,qo< BDFChar: 1127 7688 6 0 4 -2 9 &0Q4JJ:N0#J9W3P BDFChar: 1128 7689 6 0 4 -2 8 &0LstJ:N0#GTad% BDFChar: 1129 7690 6 0 4 0 9 +9:>]LkpkCOPg*= BDFChar: 1130 7691 6 0 4 0 9 +92ZQG_h03Lj/n" BDFChar: 1131 7692 6 0 4 -2 7 i/ibNLkq/N!$D7A BDFChar: 1132 7693 6 0 4 -2 7 #RG[2Lkpk3!$D7A BDFChar: 1133 7694 6 0 4 -2 7 i/ibNLkq/N!,qo< BDFChar: 1134 7695 6 0 4 -2 7 #RG[2Lkpk3!,qo< BDFChar: 1135 7696 6 0 4 -2 7 i/ibNLkq/N+M[sW BDFChar: 1136 7697 6 0 4 -2 7 #RG[2Lkpk3+M[sW BDFChar: 1137 7698 6 0 4 -2 7 i/ibNLkq/N+A`%< BDFChar: 1138 7699 6 0 4 -2 7 #RG[2Lkpk3+A`%< BDFChar: 1139 7700 6 0 4 0 9 5Tk"Gpji-iJG9*E BDFChar: 1140 7701 6 0 4 0 9 5Tk"GE/=:>J9V%o BDFChar: 1141 7702 6 0 4 0 9 &0Polpji-iJG9*E BDFChar: 1142 7703 6 0 4 0 9 &0PolE/=:>J9V%o BDFChar: 1143 7704 6 0 4 -2 7 pjdniJ:N1F+A`%< BDFChar: 1144 7705 6 0 4 -2 5 E/=:>J9W25 BDFChar: 1145 7706 6 0 4 -2 7 pjdniJ:RCpBTN2o BDFChar: 1146 7707 6 0 4 -2 5 E/=:>GQ;E= BDFChar: 1147 7708 6 0 4 -2 9 LiE->JG=YFJG:8& BDFChar: 1148 7709 6 0 4 -2 8 LiN:aW2K\= BDFChar: 1187 7748 6 0 4 0 9 +975=aJc&)R"t_B BDFChar: 1188 7749 6 0 4 0 7 +9:neLkpkC BDFChar: 1189 7750 6 0 4 -2 7 LrdZ9W0is.!$D7A BDFChar: 1190 7751 6 0 4 -2 5 n;)mVLkl$R BDFChar: 1191 7752 6 0 4 -2 7 LrdZ9W0is.!,qo< BDFChar: 1192 7753 6 0 4 -2 5 n;)mVLkl%M BDFChar: 1193 7754 6 0 4 -2 7 LrdZ9W0is.+A`%< BDFChar: 1194 7755 6 0 4 -2 5 n;)mVLkm0M BDFChar: 1195 7756 6 0 4 0 9 5_*OP!-!aMLi<=o BDFChar: 1196 7757 6 0 4 0 9 5_*OP!-!aMLi<=o BDFChar: 1197 7758 6 0 4 0 9 :]P15!-!aMLi<=o BDFChar: 1198 7759 6 0 4 0 9 :]P15!-!aMLi<=o BDFChar: 1199 7760 6 0 4 0 9 5Tk"GE/9=+Li<=o BDFChar: 1200 7761 6 0 4 0 9 5Tk"GE/9=+Li<=o BDFChar: 1201 7762 6 0 4 0 9 &0PolE/9=+Li<=o BDFChar: 1202 7763 6 0 4 0 9 &0PolE/9=+Li<=o BDFChar: 1203 7764 6 0 4 0 9 &0UIuLktPNJ:IV" BDFChar: 1204 7765 6 0 4 -2 8 &0LuBLkpkCn:6#h BDFChar: 1205 7766 6 0 4 0 9 +9:neLktPNJ:IV" BDFChar: 1206 7767 6 0 4 -2 7 +9:neLkplVJ:IV" BDFChar: 1207 7768 6 0 4 0 9 +9:neLktPnOGEl: BDFChar: 1208 7769 6 0 4 0 7 +96Y:J:N0# BDFChar: 1209 7770 6 0 4 -2 7 n;)mVn=Yl!!$D7A BDFChar: 1210 7771 6 0 4 -2 5 G^tqUMLknl(+Y_\,) BDFChar: 1278 7839 6 0 4 0 7 0M"H:OGJ^3 BDFChar: 1279 7840 6 0 4 -2 7 E/9=+pkX`^!$D7A BDFChar: 1280 7841 6 0 4 -2 5 E!U]ELj/nB BDFChar: 1281 7842 6 0 4 0 9 ^`[TPLkth^Lkl$2 BDFChar: 1282 7843 6 0 4 0 8 ^`WVr#^D/]GQ7^D BDFChar: 1283 7844 6 0 4 0 9 5`dAoE/=:FLkl$2 BDFChar: 1284 7845 6 0 4 0 9 5`dAoE!U]ELj/n" BDFChar: 1285 7846 6 0 4 0 9 &4iGoE/=:FLkl$2 BDFChar: 1286 7847 6 0 4 0 9 &4iGoE!U]ELj/n" BDFChar: 1287 7848 6 0 4 0 9 ^`ZGRE/=:FLkl$2 BDFChar: 1288 7849 6 0 4 0 9 ^`ZGRE!U]ELj/n" BDFChar: 1289 7850 6 0 4 0 9 BWrUU!-!bhLkl$2 BDFChar: 1290 7851 6 0 4 0 9 BWrUU!,r3gLj/n" BDFChar: 1291 7852 6 0 4 -2 9 +A`&WLkth^Lkl$R BDFChar: 1292 7853 6 0 4 -2 8 +A`&W#^D/]GQ8id BDFChar: 1293 7854 6 0 4 0 9 &0QdJ!-!bhLkl$2 BDFChar: 1294 7855 6 0 4 0 9 &0QdJ!,r3gLj/n" BDFChar: 1295 7856 6 0 4 0 9 5Tkl%!-!bhLkl$2 BDFChar: 1296 7857 6 0 4 0 9 5Tkl%!,r3gLj/n" BDFChar: 1297 7858 6 0 4 0 9 ^`\GP!-!bhLkl$2 BDFChar: 1298 7859 6 0 4 0 9 ^`\GP!,r3gLj/n" BDFChar: 1299 7860 6 0 4 0 9 BX!;3!-!bhLkl$2 BDFChar: 1300 7861 6 0 4 0 9 BX!;3!,r3gLj/n" BDFChar: 1301 7862 6 0 4 -2 9 LiJ9V&: BDFChar: 1305 7866 6 0 4 0 9 ^``E&JG=YFJG9*E BDFChar: 1306 7867 6 0 4 0 8 ^`WVrM"lLNGQ7^D BDFChar: 1307 7868 6 0 4 0 9 BTN5hJ:REFJG9*E BDFChar: 1308 7869 6 0 4 0 9 8>qUME/=:>J9V%o BDFChar: 1309 7870 6 0 4 0 9 5`dAopji-iJG9*E BDFChar: 1310 7871 6 0 4 0 9 5`dAoE/=:>J9V%o BDFChar: 1311 7872 6 0 4 0 9 &4iGopji-iJG9*E BDFChar: 1312 7873 6 0 4 0 9 &4iGoE/=:>J9V%o BDFChar: 1313 7874 6 0 4 0 9 ^`ZGRpji-iJG9*E BDFChar: 1314 7875 6 0 4 0 9 ^`ZGRE/=:>J9V%o BDFChar: 1315 7876 6 0 4 0 9 BWrUU!;M*>JG9*E BDFChar: 1316 7877 6 0 4 0 9 BWrUU!-!bhJ9V%o BDFChar: 1317 7878 6 0 4 -2 9 +Ahi`JG=YFJG9*e BDFChar: 1318 7879 6 0 4 -2 8 +A`&WM"lLNGQ8id BDFChar: 1319 7880 6 1 3 0 9 ^`Ym-5X7S"5X5;L BDFChar: 1320 7881 6 0 2 -2 8 ^`WV"+: BDFChar: 1325 7886 6 0 4 0 9 ^`[TPLkpkCLi<=o BDFChar: 1326 7887 6 0 4 0 8 ^`WVrLkpkCDu]k< BDFChar: 1327 7888 6 0 4 0 9 5`dAoE/9=+Li<=o BDFChar: 1328 7889 6 0 4 0 9 5`dAoE/9=+Li<=o BDFChar: 1329 7890 6 0 4 0 9 &4iGoE/9=+Li<=o BDFChar: 1330 7891 6 0 4 0 9 &4iGoE/9=+Li<=o BDFChar: 1331 7892 6 0 4 0 9 ^`ZGRE/9=+Li<=o BDFChar: 1332 7893 6 0 4 0 9 ^`ZGRE/9=+Li<=o BDFChar: 1333 7894 6 0 4 0 9 BWrUU!-!aMLi<=o BDFChar: 1334 7895 6 0 4 0 9 BWrUU!-!aMLi<=o BDFChar: 1335 7896 6 0 4 -2 9 +Ad$5LkpkCLi<>: BDFChar: 1336 7897 6 0 4 -2 8 +A`&WLkpkCDu_!\ BDFChar: 1337 7898 6 0 5 0 9 &0u@RLkpkCLi<=o BDFChar: 1338 7899 6 0 5 0 8 &0M*tLkpkCDu]k< BDFChar: 1339 7900 6 0 5 0 9 5U:H-LkpkCLi<=o BDFChar: 1340 7901 6 0 5 0 8 5Tg2OLkpkCDu]k< BDFChar: 1341 7902 6 0 5 0 9 ^a+#XLkpkCLi<=o BDFChar: 1342 7903 6 0 5 0 8 ^`Wc%LkpkCDu]k< BDFChar: 1343 7904 6 0 5 0 9 BWqV]LkpkCLi<=o BDFChar: 1344 7905 6 0 5 0 9 8>qUQFGPa/Li<=o BDFChar: 1345 7906 6 0 5 -2 8 "E]HULkpkCDu_!\ BDFChar: 1346 7907 6 0 5 -2 6 "E]HULkp!M+92BA BDFChar: 1347 7908 6 0 4 -2 7 LkpkCLkpk+!$D7A BDFChar: 1348 7909 6 0 4 -2 5 LkpkCLj/nB BDFChar: 1349 7910 6 0 4 0 9 ^`\GhLkpkCLi<=o BDFChar: 1350 7911 6 0 4 0 7 ^`\GhLkpk3 BDFChar: 1351 7912 6 0 5 0 9 'I8KjLkpkCLi<=o BDFChar: 1352 7913 6 0 5 0 8 &0qC7LkpkCGQ7^D BDFChar: 1353 7914 6 0 5 0 9 6mRSELkpkCLi<=o BDFChar: 1354 7915 6 0 5 0 8 5U6JgLkpkCGQ7^D BDFChar: 1355 7916 6 0 5 0 9 `$C.pLkpkCLi<=o BDFChar: 1356 7917 6 0 5 0 8 ^a'&=LkpkCGQ7^D BDFChar: 1357 7918 6 0 5 0 9 BX@nuLkpkCLi<=o BDFChar: 1358 7919 6 0 5 0 9 8>qaULkpkCLj/n" BDFChar: 1359 7920 6 0 5 -2 9 "9aO:LkpkCLi<>: BDFChar: 1360 7921 6 0 5 -2 7 "9aO:Lkpk3!$D7A BDFChar: 1361 7922 6 0 4 0 9 5Tkl=:f&8W+qUMLkpkCLj02E BDFChar: 1369 7930 6 0 4 0 7 TV.sNTV.tQ BDFChar: 1370 7931 6 1 4 0 7 TV.sNTV.rS BDFChar: 1371 7932 6 0 4 0 7 0L1/=Lkpk+ BDFChar: 1372 7933 6 0 4 0 5 0L1/ELi<=o BDFChar: 1373 7934 6 0 4 -1 7 Lknl(+FLkl$2 BDFChar: 1390 7951 6 0 4 0 9 E2XljE/9>FLkl$2 BDFChar: 1391 7952 6 0 4 0 9 &.fraG^sa`J9V%o BDFChar: 1392 7953 6 0 4 0 9 5X6FlG^sa`J9V%o BDFChar: 1393 7954 6 0 4 0 9 5Z!7:G^sa`J9V%o BDFChar: 1394 7955 6 0 4 0 9 J<3;%G^sa`J9V%o BDFChar: 1395 7956 6 0 4 0 9 5Y-t:G^sa`J9V%o BDFChar: 1396 7957 6 0 4 0 9 J;@#%G^sa`J9V%o BDFChar: 1397 7960 6 0 4 0 9 &.fuZJ:REFJG9*E BDFChar: 1398 7961 6 0 4 0 9 5X6IeJ:REFJG9*E BDFChar: 1399 7962 6 0 4 0 9 :e6*:pji-iJG9*E BDFChar: 1400 7963 6 0 4 0 9 OGH.%pji-iJG9*E BDFChar: 1401 7964 6 0 4 0 9 85Og:pji-iJG9*E BDFChar: 1402 7965 6 0 4 0 9 Llak%pji-iJG9*E BDFChar: 1403 7968 6 0 4 -2 9 &.fran;)mVLklLkpkCLi<=o BDFChar: 1447 8016 6 0 4 0 9 &.fraLkpkCLj/n" BDFChar: 1448 8017 6 0 4 0 9 5X6FlLkpkCLj/n" BDFChar: 1449 8018 6 0 4 0 9 5Z!7:LkpkCLj/n" BDFChar: 1450 8019 6 0 4 0 9 J<3;%LkpkCLj/n" BDFChar: 1451 8020 6 0 4 0 9 5Y-t:LkpkCLj/n" BDFChar: 1452 8021 6 0 4 0 9 J;@#%LkpkCLj/n" BDFChar: 1453 8022 6 0 4 0 9 E2XmE!/QGeLj/n" BDFChar: 1454 8023 6 0 4 0 9 E2Xlj!/QGeLj/n" BDFChar: 1455 8025 6 0 4 0 9 5X6HJLepnj+J BDFChar: 1540 8115 6 0 4 -2 5 BUFU3QtV"8 BDFChar: 1541 8116 6 0 4 -2 8 &0LsdR#$QcBRi>J BDFChar: 1542 8118 6 0 4 0 8 E/4L-R#$QcBE/#4 BDFChar: 1543 8119 6 0 4 -2 8 LiJ BDFChar: 1544 8120 6 0 4 0 9 Li:+:+N:aYb7Y^ BDFChar: 1662 8270 6 0 4 0 4 :a#NU:]LIq BDFChar: 1663 8271 6 2 3 -1 5 J:IV"J:Klb BDFChar: 1664 8273 6 0 4 -2 8 :a#NU:]O<7p`NB5 BDFChar: 1665 8304 6 1 4 5 9 @'J">?iU0, BDFChar: 1666 8305 6 2 2 5 9 J,k+MJ,fQL BDFChar: 1667 8308 6 1 4 5 9 +CLl3+92BA BDFChar: 1668 8309 6 1 4 5 9 n:9F.huE`W BDFChar: 1669 8310 6 1 4 5 9 @"@0s?iU0, BDFChar: 1670 8311 6 1 4 5 9 n.6^-5QCca BDFChar: 1671 8312 6 1 4 5 9 @$"cX?iU0, BDFChar: 1672 8313 6 1 4 5 9 @$#==?iU0, BDFChar: 1673 8314 6 1 3 6 8 5i=m- BDFChar: 1674 8315 6 1 3 7 7 huE`W BDFChar: 1675 8316 6 1 3 6 8 huM[8 BDFChar: 1676 8317 6 2 3 5 9 5_+B85QCca BDFChar: 1677 8318 6 2 3 5 9 J3Z@bJ,fQL BDFChar: 1678 8319 6 1 4 5 8 i/j%^ BDFChar: 1679 8320 6 1 4 -2 2 @'J">?iU0, BDFChar: 1680 8321 6 2 3 -2 2 5eoWM5QCca BDFChar: 1681 8322 6 1 4 -2 2 i"0:Hn,NFg BDFChar: 1682 8323 6 1 4 -2 2 i"09-huE`W BDFChar: 1683 8324 6 1 4 -2 2 +CLl3+92BA BDFChar: 1684 8325 6 1 4 -2 2 n:9F.huE`W BDFChar: 1685 8326 6 1 4 -2 2 @"@0s?iU0, BDFChar: 1686 8327 6 1 4 -2 2 n.6^-5QCca BDFChar: 1687 8328 6 1 4 -2 2 @$"cX?iU0, BDFChar: 1688 8329 6 1 4 -2 2 @$#==?iU0, BDFChar: 1689 8330 6 1 3 -1 1 5i=m- BDFChar: 1690 8331 6 1 3 0 0 huE`W BDFChar: 1691 8332 6 1 3 -1 1 huM[8 BDFChar: 1692 8333 6 2 3 -2 2 5_+B85QCca BDFChar: 1693 8334 6 2 3 -2 2 J3Z@bJ,fQL BDFChar: 1694 8336 6 1 4 -2 2 ?k@:=Du]k< BDFChar: 1695 8337 6 1 4 -2 2 @$'l.Du]k< BDFChar: 1696 8338 6 1 4 -2 2 @$$J3?iU0, BDFChar: 1697 8339 6 0 4 -2 2 Leo3jL]@DT BDFChar: 1698 8340 6 1 4 -2 2 i"5C>?iU0, BDFChar: 1699 8341 6 1 4 -2 3 J:QR>OH9GB BDFChar: 1700 8342 6 1 4 -2 3 J<6G>TTB-R BDFChar: 1701 8343 6 2 3 -2 3 J:N0#J3X)7 BDFChar: 1702 8344 6 0 4 -2 2 d&N:aYb7ZI BDFChar: 1719 8474 6 0 4 -1 7 0PID`W2OA`#QOi) BDFChar: 1720 8477 6 0 4 0 7 n>N:iW2QZY BDFChar: 1721 8482 6 0 5 4 7 oNY?p BDFChar: 1722 8484 6 0 4 0 7 pa@Oe:nXKV BDFChar: 1723 8487 6 0 4 0 7 fMIB[Lkpk+ BDFChar: 1724 8510 6 0 4 0 7 pn4:QTV.t9 BDFChar: 1725 8511 6 0 4 0 7 po(-iW2QZY BDFChar: 1726 8528 6 0 5 -2 9 5eoWQ8.ZnKKEr,# BDFChar: 1727 8529 6 0 5 -2 9 5eoWQ8.Zn7PRI[3 BDFChar: 1728 8531 6 0 5 -2 9 5eoWQ8.ZnGKEq\t BDFChar: 1729 8532 6 0 5 -2 9 ^`YmqkR\k=KEq\t BDFChar: 1730 8533 6 0 5 -2 9 5eoWQ8.ZnKO;J*; BDFChar: 1731 8534 6 0 5 -2 9 ^`YmqkR\kAO;J*; BDFChar: 1732 8535 6 0 5 -2 9 ^`Ylfa:KJ!O;J*; BDFChar: 1733 8536 6 0 5 -2 9 +CLl'-kIM+O;J*; BDFChar: 1734 8537 6 0 5 -2 9 5eoWQ8.Zn;O;JZ; BDFChar: 1735 8538 6 0 5 -2 9 i./Tga:KIfO;JZ; BDFChar: 1736 8539 6 0 5 -2 9 5eoWQ8.Zn7PR%s/ BDFChar: 1737 8540 6 0 5 -2 9 ^`Ylfa:KIbPR%s/ BDFChar: 1738 8541 6 0 5 -2 9 i./Tga:KIbPR%s/ BDFChar: 1739 8542 6 0 5 -2 9 i#k:Li<=o BDFChar: 1772 8636 6 0 4 4 6 +@,]% BDFChar: 1773 8637 6 0 4 2 4 pcor% BDFChar: 1774 8638 6 2 4 2 7 JA@h.J:IV" BDFChar: 1775 8639 6 0 2 2 7 +CLib+R1<0 BDFChar: 1782 8646 6 0 4 2 7 5kmSUp^dE* BDFChar: 1783 8647 6 0 4 2 6 5kmV>5QCca BDFChar: 1784 8648 6 0 4 2 6 ;#!j`:]LIq BDFChar: 1785 8649 6 0 4 2 6 &GQh3&-)\1 BDFChar: 1786 8650 6 0 4 2 6 :f(!`:]LIq BDFChar: 1787 8651 6 0 4 2 6 5kk?S&-)\1 BDFChar: 1788 8652 6 0 4 2 6 &GQ8#5QCca BDFChar: 1789 8656 6 0 5 2 6 +FJ]e+92BA BDFChar: 1790 8657 6 0 4 2 7 +Ag]e:f%,l BDFChar: 1791 8658 6 0 5 2 6 &GQD'&-)\1 BDFChar: 1792 8659 6 0 4 2 7 :f(!@:`o`< BDFChar: 1793 8660 6 0 5 2 6 8Gn/=8,rVi BDFChar: 1794 8661 6 0 4 0 7 +Ag]e:tSSe BDFChar: 1795 8662 6 0 4 2 6 n=\.,&-)\1 BDFChar: 1796 8663 6 0 4 2 6 GUQ[m5QCca BDFChar: 1797 8664 6 0 4 2 6 5c@d5GQ7^D BDFChar: 1798 8665 6 0 4 2 6 &?*sKn,NFg BDFChar: 1799 8672 6 0 4 2 6 +@)kj+92BA BDFChar: 1800 8673 6 0 4 2 6 +Af!:+92BA BDFChar: 1801 8674 6 1 5 2 6 +:tI_+92BA BDFChar: 1802 8675 6 0 4 2 6 +98?:+92BA BDFChar: 1803 8676 6 0 4 2 6 TYU?GQ7^D BDFChar: 1822 8715 6 0 4 0 6 i"-1h#S>no BDFChar: 1823 8716 6 0 4 -1 7 &F^5ZpaAts5QCca BDFChar: 1824 8717 6 0 4 1 5 n-Jdpn,NFg BDFChar: 1825 8719 6 0 4 0 7 pkX`^LkpkC BDFChar: 1826 8721 6 0 4 0 7 pcor5&0O75 BDFChar: 1827 8722 6 0 4 3 3 p](9o BDFChar: 1828 8723 6 0 4 0 6 p])EZp`L[Z BDFChar: 1829 8724 6 0 4 0 6 +93N,p`L[Z BDFChar: 1830 8729 6 1 4 3 5 @.7P( BDFChar: 1831 8730 6 0 5 0 8 $j[+ELknSM(]XO9 BDFChar: 1832 8731 6 0 5 0 9 ^ar#)a9[Sm-l;pa BDFChar: 1833 8732 6 0 5 0 9 +De"?-jYW"-l;pa BDFChar: 1834 8733 6 0 4 2 6 BTS=;BE/#4 BDFChar: 1835 8734 6 0 4 3 6 :oLqUMp](9o BDFChar: 1852 8773 6 0 4 1 7 8>qUMp]1'h BDFChar: 1853 8776 6 0 4 1 7 8>qUM8>qUM BDFChar: 1854 8800 6 0 4 1 6 &GR@jpcnfZ BDFChar: 1855 8801 6 0 4 1 5 p]1'hp](9o BDFChar: 1856 8802 6 0 4 0 6 &GRCC+S\2% BDFChar: 1857 8803 6 0 4 0 6 p]1'hp]1'h BDFChar: 1858 8804 6 0 4 0 6 (gql%(]a=2 BDFChar: 1859 8805 6 0 4 0 6 ^b?$J^]=-0 BDFChar: 1860 8806 6 0 4 0 8 (gql%(]a=2p](9o BDFChar: 1861 8807 6 0 4 0 8 ^b?$J^]=-0p](9o BDFChar: 1862 8808 6 0 4 -1 8 (gql%(_HHbpcnfZ BDFChar: 1863 8809 6 0 4 -1 8 ^b?$J^_$8`pcnfZ BDFChar: 1864 8810 6 0 4 1 5 -r?R5-ia5I BDFChar: 1865 8811 6 0 4 1 5 TMR%5TE"rl BDFChar: 1866 8826 6 0 4 2 6 #Va%J#QOi) BDFChar: 1867 8827 6 0 4 2 6 J7'4%J,fQL BDFChar: 1868 8828 6 0 4 1 7 #Va%Ja=ml" BDFChar: 1869 8829 6 0 4 1 7 J7'4%QsbFE BDFChar: 1870 8834 6 0 4 1 5 G^t&.fBQ BDFChar: 1907 9226 6 0 5 -1 9 J:N0#n,PQn3$9=D BDFChar: 1908 9227 6 0 5 -1 9 Lkpj`+96d#&.fBQ BDFChar: 1909 9228 6 0 5 -1 9 n:9GIJ,h\S3$9=D BDFChar: 1910 9229 6 0 5 -1 9 E.EIhDu_jC3%-$P BDFChar: 1911 9248 6 0 5 -1 9 @";Vr?iW/33$9=D BDFChar: 1912 9252 6 0 5 -1 9 OO14nO8pCG+J:N.M BDFChar: 1926 9485 6 2 5 -2 4 nF1sYJ:N.M BDFChar: 1927 9486 6 2 5 -2 4 nA)iT^qd_c BDFChar: 1928 9487 6 2 5 -2 4 nF46/^qd_c BDFChar: 1929 9488 6 0 2 -2 4 i#j-b+_#+J:N0# BDFChar: 1942 9501 6 2 5 -2 9 J:N0#JFN&YJ:N0# BDFChar: 1943 9502 6 2 5 -2 9 ^qdb$_!ll)J:N0# BDFChar: 1944 9503 6 2 5 -2 9 J:N0#JFL@i^qdb$ BDFChar: 1945 9504 6 2 5 -2 9 ^qdb$_!o.T^qdb$ BDFChar: 1946 9505 6 2 5 -2 9 ^qdb$_!piDJ:N0# BDFChar: 1947 9506 6 2 5 -2 9 J:N0#JFN'D^qdb$ BDFChar: 1948 9507 6 2 5 -2 9 ^qdb$_!pj/^qdb$ BDFChar: 1949 9508 6 0 2 -2 9 + BDFChar: 1966 9525 6 0 5 3 9 +% BDFChar: 1968 9527 6 0 5 3 9 +E+U0JG17 BDFChar: 1984 9543 6 0 5 -2 9 0JG170`:hk+S BDFChar: 2004 9563 6 0 2 3 9 +Rp*#oq< BDFChar: 2066 9627 6 0 5 -2 9 r;?Kjr;>L2i8EPO BDFChar: 2067 9628 6 0 5 -2 9 r;?Kjr;7NS*#oq< BDFChar: 2068 9629 6 3 5 4 9 i8EPOi8=S8 BDFChar: 2069 9630 6 0 5 -2 9 *#oq<*$!npi8EPO BDFChar: 2070 9631 6 0 5 -2 9 *#oq<*$"nSr;?Kj BDFChar: 2071 9632 6 0 4 1 6 q"XXZq"Ogh BDFChar: 2072 9633 6 0 4 1 6 pkX`^M"grM BDFChar: 2073 9634 6 0 4 1 6 E/9=+Li<=o BDFChar: 2074 9635 6 0 4 1 6 pkYlIM"grM BDFChar: 2075 9642 6 1 3 3 5 i8EMn BDFChar: 2076 9643 6 1 3 3 5 i1T!. BDFChar: 2077 9644 6 0 4 0 2 q"XUa BDFChar: 2078 9645 6 0 4 0 2 pk\\F BDFChar: 2079 9646 6 0 4 0 7 q"XXZq"XXZ BDFChar: 2080 9647 6 0 4 0 7 pkX`^Lkpl^ BDFChar: 2081 9648 6 0 4 2 5 G^/`I BDFChar: 2082 9649 6 0 4 2 5 GY!qc BDFChar: 2083 9650 6 0 4 1 6 +U BDFChar: 2096 9663 6 0 4 3 5 peW(5 BDFChar: 2097 9664 6 0 5 2 6 $on#A$ig8- BDFChar: 2098 9665 6 0 5 2 6 $olm BDFChar: 2137 9709 6 0 4 1 6 +p](9o BDFChar: 2151 9723 6 0 4 2 6 pkX`^p](9o BDFChar: 2152 9724 6 0 4 2 6 q"XXZp](9o BDFChar: 2153 9725 6 1 4 2 5 n;rb$ BDFChar: 2154 9726 6 1 4 2 5 nF5r: BDFChar: 2155 9727 6 0 4 2 6 #T+s\p](9o BDFChar: 2156 9737 6 0 4 2 6 E/:HKDu]k< BDFChar: 2157 9738 6 0 5 1 7 G_Ca'8@1nf BDFChar: 2158 9739 6 0 5 1 7 8@1p@KS4RM BDFChar: 2159 9744 6 0 5 1 7 r.K`VKS97' BDFChar: 2160 9745 6 0 5 1 7 r.L$aoVDBb BDFChar: 2161 9746 6 0 5 1 7 r.N;$b_5lo BDFChar: 2162 9770 6 0 4 1 7 3+0PC^gK,% BDFChar: 2163 9785 6 0 5 0 7 G_F:o[*42J BDFChar: 2164 9786 6 0 5 0 7 G_F:obd<%J BDFChar: 2165 9787 6 0 5 0 7 Gl4rH[*8Gm BDFChar: 2166 9788 6 0 4 1 7 +K083E2XlZ BDFChar: 2167 9789 6 0 4 1 7 i(tgM-rAh% BDFChar: 2168 9790 6 0 4 1 7 3)H9@TMRTJ BDFChar: 2169 9791 6 0 4 0 9 Lkp#+Lkp!mE$,,\ BDFChar: 2170 9792 6 0 4 0 7 E/9=+E$0*B BDFChar: 2171 9793 6 0 4 0 7 +E/HBLkpk+ BDFChar: 2172 9794 6 0 5 0 7 *"3O#Lkpk+ BDFChar: 2173 9795 6 0 4 0 9 #REu"-qO+=#RCD1 BDFChar: 2174 9796 6 0 4 0 7 5i=nH84Z9J BDFChar: 2175 9797 6 0 4 1 8 fPkeKp`NBU BDFChar: 2176 9798 6 0 4 0 8 +K26;E$-9B+92BA BDFChar: 2177 9799 6 0 4 0 7 n;)mVn:6&a BDFChar: 2178 9800 6 0 4 0 7 :oL=k+'kcg_Q&-)\1 BDFChar: 2184 9806 6 0 4 1 7 E/9u BDFChar: 2209 9831 6 0 4 0 6 E)?>.p`OMU BDFChar: 2210 9833 6 1 3 0 8 +>2d+R1<0 BDFChar: 2213 9836 6 0 5 0 9 4=!$7,U=XOr($ef BDFChar: 2214 9837 6 0 3 0 7 J:N0Cd#ap9 BDFChar: 2215 9838 6 0 3 0 7 J:OlNYgGQ7^D BDFChar: 2231 10119 6 0 5 0 8 G_D<_PcU+&GQ7^D BDFChar: 2232 10120 6 0 5 0 8 G_DmB[$7A>GQ7^D BDFChar: 2233 10121 6 0 5 0 8 G_F;jeC;]qGQ7^D BDFChar: 2234 10122 6 0 5 0 8 Gl6pPm-O*:GQ7^D BDFChar: 2235 10123 6 0 5 0 8 Gl5dmm+d9lGQ7^D BDFChar: 2236 10124 6 0 5 0 8 Gl5dmm'P"7GQ7^D BDFChar: 2237 10125 6 0 5 0 8 Gl6pPXG#sUlGQ7^D BDFChar: 2242 10130 6 0 5 0 8 Gl5dm`:V:OGQ7^D BDFChar: 2243 10131 6 0 5 0 8 Gl4qMXK8f,GQ7^D BDFChar: 2244 10132 6 0 4 1 5 +;";Z+92BA BDFChar: 2245 10133 6 0 4 1 5 +<^G%+92BA BDFChar: 2246 10134 6 0 4 3 3 p](9o BDFChar: 2247 10135 6 0 4 1 5 +9;0:+92BA BDFChar: 2248 10136 6 0 4 0 4 J3YM"2uipY BDFChar: 2249 10137 6 0 4 1 5 +;";Z+92BA BDFChar: 2250 10138 6 0 4 1 5 3#F&/J,fQL BDFChar: 2251 10139 6 0 4 1 5 +;";Z+92BA BDFChar: 2252 10140 6 0 4 1 5 +;";Z+92BA BDFChar: 2253 10141 6 0 4 1 5 +>ERE+92BA BDFChar: 2254 10142 6 0 4 1 5 +Ro0q+92BA BDFChar: 2255 10143 6 0 4 1 5 +>C;Z+92BA BDFChar: 2256 10144 6 0 4 1 5 +L&A[+92BA BDFChar: 2257 10145 6 0 4 2 6 +Ro0q+92BA BDFChar: 2258 10702 6 0 4 0 9 (he_=(r3A3YeU5= BDFChar: 2259 10703 6 0 4 2 6 -toPm-ia5I BDFChar: 2260 10704 6 0 4 2 6 TWkB!TE"rl BDFChar: 2261 10705 6 0 4 2 6 LtLqDL]@DT BDFChar: 2262 10706 6 0 4 2 6 LtK5iL]@DT BDFChar: 2263 10707 6 0 4 2 6 LtMLTL]@DT BDFChar: 2264 10708 6 0 4 2 6 LsY),L]@DT BDFChar: 2265 10709 6 0 4 2 6 LfcW=L]@DT BDFChar: 2266 10710 6 0 4 2 6 peW)0p](9o BDFChar: 2267 10711 6 0 4 2 6 pi%?pp](9o BDFChar: 2268 10752 6 0 4 2 6 E/:HKDu]k< BDFChar: 2269 10753 6 0 4 2 6 E2`Q1Du]k< BDFChar: 2270 10754 6 0 4 2 6 E7h,ADu]k< BDFChar: 2271 10755 6 0 4 2 6 Lkr!cDu]k< BDFChar: 2272 10756 6 0 4 2 6 W;*L]@DT BDFChar: 45 76 7 1 5 0 8 J:N0#J:N0#p](9o BDFChar: 46 77 7 1 5 0 8 Lks^9W2PN.L]@DT BDFChar: 47 78 7 1 5 0 8 LrdZ9W0is.L]@DT BDFChar: 48 79 7 1 5 0 8 E/9=+LkpkCDu]k< BDFChar: 49 80 7 1 5 0 8 n;)mVn:6%>J,fQL BDFChar: 50 81 7 1 5 0 8 E/9=+Lkr!kBE/#4 BDFChar: 51 82 7 1 5 0 8 n;)mVnA(]YL]@DT BDFChar: 52 83 7 1 5 0 8 G^tFJ:MkE BDFChar: 71 102 7 2 5 0 8 E.EK.J:N0#J,fQL BDFChar: 72 103 7 1 5 -2 6 G_h03Lkp9]Du]k< BDFChar: 73 104 7 1 5 0 8 J:R-FLkpkCL]@DT BDFChar: 74 105 7 2 3 0 9 5X5=b5X7S"5X5;L BDFChar: 75 106 7 1 3 -2 9 +N:aW2QWp BDFChar: 79 110 7 1 5 0 6 n;)mVLkpie BDFChar: 80 111 7 1 5 0 6 E/9=+Lkp!M BDFChar: 81 112 7 1 5 -2 6 n;)mVLktPNJ,fQL BDFChar: 82 113 7 1 5 -2 6 G_h03Lkp9]#QOi) BDFChar: 83 114 7 1 5 0 6 G^tJ:N0#Du]k< BDFChar: 86 117 7 1 5 0 6 LkpkCLkp9U BDFChar: 87 118 7 1 5 0 6 Lkpj`:`pk\ BDFChar: 88 119 7 1 5 0 6 LkpkcW7Zn+ BDFChar: 89 120 7 1 5 0 6 LknkM:l'o- BDFChar: 90 121 7 1 5 -2 6 LkpkCLkp9]Du]k< BDFChar: 91 122 7 1 5 0 6 p]qER5_/V0 BDFChar: 92 123 7 1 4 -1 9 0L.lg5_)*b5X7"' BDFChar: 93 124 7 3 3 -1 9 J:N0#J:N0#J:N.M BDFChar: 94 125 7 2 5 -1 9 ^`XaB+:oY<+<\H" BDFChar: 95 126 7 1 5 7 9 8>qUM BDFChar: 97 161 7 3 3 0 8 J:IWMJ:N0#J,fQL BDFChar: 98 162 7 1 5 -1 9 +qUME/=:FLkpie BDFChar: 132 196 7 1 5 0 10 :]PHjLkth^Lkpie BDFChar: 133 197 7 1 5 0 10 +Aa0\E/=:FLkpie BDFChar: 134 198 7 0 5 0 8 I#sGOr/d#%S,`Nh BDFChar: 135 199 7 1 5 -2 8 G^tqUMLrdZ9R$`[0 BDFChar: 146 210 7 1 5 0 10 5Tk$%LkpkCLkp!M BDFChar: 147 211 7 1 5 0 10 &0PqJLkpkCLkp!M BDFChar: 148 212 7 1 5 0 10 +A`&WLkpkCLkp!M BDFChar: 149 213 7 1 5 0 10 8>qUME/9=+Lkp!M BDFChar: 150 214 7 1 5 0 10 :]PHjLkpkCLkp!M BDFChar: 151 215 7 1 5 2 6 Leo3jL]@DT BDFChar: 152 216 7 1 5 -1 9 #]Q/uW2QZ9aDcY0 BDFChar: 153 217 7 1 5 0 10 5Tkl=LkpkCLkp!M BDFChar: 154 218 7 1 5 0 10 &0QdbLkpkCLkp!M BDFChar: 155 219 7 1 5 0 10 +A`&oLkpkCLkp!M BDFChar: 156 220 7 1 5 0 10 :]Q<-LkpkCLkp!M BDFChar: 157 221 7 1 5 0 10 &0Qdb:f&8W+qUME!Q_oLkp9U BDFChar: 164 228 7 1 5 0 8 :]PG?#^D/]GQ7^D BDFChar: 165 229 7 1 5 0 10 +Aa0\E!Q_oLkp9U BDFChar: 166 230 7 0 5 0 6 GSCj:OH=hi BDFChar: 167 231 7 1 5 -2 6 G^tqUMn;)mVLkpie BDFChar: 178 242 7 1 5 0 9 5Tg&GLkpkCLi<=o BDFChar: 179 243 7 1 5 0 9 &0LslLkpkCLi<=o BDFChar: 180 244 7 1 5 0 9 +A`&WLkpkCLi<=o BDFChar: 181 245 7 1 5 0 10 8>qUME/9=+Lkp!M BDFChar: 182 246 7 1 5 0 8 :]PHjLkpkCDu]k< BDFChar: 183 247 7 1 5 1 7 +J:RCp BDFChar: 211 275 7 1 5 0 8 Duaj5M"lLNGQ7^D BDFChar: 212 276 7 1 5 0 10 Li<@hJ:R->J:RCp BDFChar: 213 277 7 1 5 0 9 LiJ:RCp BDFChar: 215 279 7 1 5 0 8 +96A:M"lLNGQ7^D BDFChar: 216 280 7 1 6 -2 8 pjdmFn:6%>p^di6 BDFChar: 217 281 7 1 6 -2 6 E/9>FJ:MkU$ig8- BDFChar: 218 282 7 1 5 0 10 :`oc5J:R->J:RCp BDFChar: 219 283 7 1 5 0 9 :`oaWLkthVJ9V%o BDFChar: 220 284 7 1 5 0 10 +A`&_J:O#CLkp!M BDFChar: 221 285 7 1 5 -2 9 +A`&_LkpkCLj02E BDFChar: 222 286 7 1 5 0 10 LiqUMp`L\%+<^FZ BDFChar: 233 297 7 1 5 0 10 8>qUM?m$R7+L`jJ5 BDFChar: 247 311 7 1 5 -2 8 J:NH;TYR4^L`jJ5 BDFChar: 248 312 7 1 5 0 6 Lle:FTTFs0 BDFChar: 249 313 7 1 5 0 10 &0QLRJ:N0#J:RCp BDFChar: 250 314 7 2 4 0 10 +@#qB5X7S"5X6Fl BDFChar: 251 315 7 1 5 -2 8 J:N0#J:N0#p`R?P BDFChar: 252 316 7 2 4 -2 8 ^d(.M5X7S"+<\H" BDFChar: 253 317 7 1 5 0 10 :`t:=J:N0#J:RCp BDFChar: 254 318 7 2 4 0 10 TKiLm5X7S"5X6Fl BDFChar: 255 319 7 1 5 0 8 J:N0SY^h7Sp](9o BDFChar: 256 320 7 1 5 0 8 ^d(.e=?o,:+92BA BDFChar: 257 321 7 0 5 0 8 5X7SB^d(.MHiO-H BDFChar: 258 322 7 2 4 0 8 ^d(.m^d(.M+92BA BDFChar: 259 323 7 1 5 0 10 &0QeMaJc&)R#$Ou BDFChar: 260 324 7 1 5 0 9 &0LuBLkpkCLkl$2 BDFChar: 261 325 7 1 5 -2 8 LrdZ9W0is.L`jJ5 BDFChar: 262 326 7 1 5 -2 6 n;)mVLkpj0^]4?7 BDFChar: 263 327 7 1 5 0 10 :`tS8aJc&)R#$Ou BDFChar: 264 328 7 1 5 0 9 :`oc-LkpkCLkl$2 BDFChar: 265 329 7 0 5 0 10 5X9i"GXOqf6psEC BDFChar: 266 330 7 1 5 -2 8 LrdZ9W0is.L^4Ol BDFChar: 267 331 7 1 5 -2 6 n;)mVLkpim&-)\1 BDFChar: 268 332 7 1 5 0 10 Duaj5LkpkCLkp!M BDFChar: 269 333 7 1 5 0 8 Duaj5LkpkCDu]k< BDFChar: 270 334 7 1 5 0 10 LiJ:N0#E$2pr BDFChar: 292 356 7 1 5 0 10 :`oc5+J:MS= BDFChar: 294 358 7 1 5 0 8 p`L\u+qUMLkpkCLkp!M BDFChar: 297 361 7 1 5 0 10 8>qUMLkpkCLkp9U BDFChar: 298 362 7 1 5 0 10 Dub]MLkpkCLkp!M BDFChar: 299 363 7 1 5 0 8 Dub]MLkpkCGQ7^D BDFChar: 300 364 7 1 5 0 10 LiJ:N0#E$.CG BDFChar: 364 428 7 0 5 0 8 I#nmN&.fBa&-)\1 BDFChar: 365 429 7 2 5 0 9 5_+CSJ:N0#J8bJg BDFChar: 366 430 7 1 5 -1 8 p`L\%+J,fQL BDFChar: 384 448 7 3 3 0 8 J:N0#J:N0#J,fQL BDFChar: 385 449 7 2 4 0 8 TV.sNTV.sNTE"rl BDFChar: 386 450 7 1 5 0 8 +FLkpie BDFChar: 415 479 7 1 5 0 10 Du`]7E!Q_oLkp9U BDFChar: 416 480 7 1 5 0 10 Du_!\E/9>FLkpie BDFChar: 417 481 7 1 5 0 10 Du_!\E!Q_oLkp9U BDFChar: 418 482 7 0 5 0 10 2un>fOSk3%OH>t4 BDFChar: 419 483 7 0 5 0 8 2un1;'R5_$HiO-H BDFChar: 420 484 7 1 6 0 8 G^tFLkpie BDFChar: 443 507 7 1 5 0 10 5c@KZE!Q_oLkp9U BDFChar: 444 508 7 0 5 0 10 #S6u`OHBC%OH>t4 BDFChar: 445 509 7 0 5 0 9 #S6u\'GPqVOF.$. BDFChar: 446 510 7 1 5 -1 10 +@pI=R&Hs^aN/=N BDFChar: 447 511 7 1 5 -1 9 &0M6tR&Hs^aDcY0 BDFChar: 448 512 7 1 5 0 10 O@T@jLkth^Lkpie BDFChar: 449 513 7 1 5 0 9 O@T@j#RG[2Lj/n" BDFChar: 450 514 7 1 5 0 10 E/4L5Lkth^Lkpie BDFChar: 451 515 7 1 5 0 9 E/4L5#RG[2Lj/n" BDFChar: 452 516 7 1 5 0 10 O@TBHJ:REFJ:RCp BDFChar: 453 517 7 1 5 0 9 O@T@jLkthVJ9V%o BDFChar: 454 518 7 1 5 0 10 E/4MhJ:REFJ:RCp BDFChar: 455 519 7 1 5 0 9 E/4L5LkthVJ9V%o BDFChar: 456 520 7 1 5 0 10 O@TBH+J:N0#E'SpR BDFChar: 476 540 7 1 5 -1 8 n-B:*0F.pi0YdYg BDFChar: 477 541 7 1 5 -2 6 E!Q_'#RC\i^]4?7 BDFChar: 478 542 7 1 5 0 10 :`oaoLkth^Lkpie BDFChar: 479 543 7 1 5 0 10 :`t:=n;)mVLkpie BDFChar: 480 544 7 1 5 -2 8 n;)mVLkpkCL^47d BDFChar: 481 545 7 0 5 -2 8 +FJ:Mke^]4?7 BDFChar: 490 554 7 1 5 0 10 Du`]7E/9=+Lkp!M BDFChar: 491 555 7 1 5 0 9 Du`]7E/9=+Li<=o BDFChar: 492 556 7 1 5 0 10 DuaRUE/9=+Lkp!M BDFChar: 493 557 7 1 5 0 10 DuaRU!-!aMLkp!M BDFChar: 494 558 7 1 5 0 10 +96A:LkpkCLkp!M BDFChar: 495 559 7 1 5 0 8 +96A:LkpkCDu]k< BDFChar: 496 560 7 1 5 0 10 Du_!\E/9=+Lkp!M BDFChar: 497 561 7 1 5 0 9 Du_!\E/9=+Li<=o BDFChar: 498 562 7 1 5 0 10 Dub]M:f&8W+J:N`[E$-8' BDFChar: 503 567 7 1 3 -2 6 ?m$R7+F#RKo" BDFChar: 537 601 7 1 5 0 6 n-BN:aW2QX#0E;(Q BDFChar: 562 626 7 0 5 -2 6 GXOqf6psF.J,fQL BDFChar: 563 627 7 1 6 -2 6 n;)mVLkpim"98E% BDFChar: 564 628 7 1 5 0 6 LrdZ9R$`[0 BDFChar: 565 629 7 1 5 0 6 E/9>FLkp!M BDFChar: 566 630 7 0 5 0 6 I#sG[OH=hi BDFChar: 567 631 7 1 5 0 6 E/:HkW2NMm BDFChar: 568 632 7 1 5 -2 8 +J:N0#J:MS= BDFChar: 585 649 7 0 6 0 6 6psHB6ps-; BDFChar: 586 650 7 1 5 0 6 fMIB[Lkp!M BDFChar: 587 651 7 1 6 0 7 "Ghki:f&8W BDFChar: 588 652 7 1 5 0 6 +ioGRtDd BDFChar: 617 681 7 0 5 -2 8 @">cJUnjf^U]^r' BDFChar: 618 682 7 0 5 0 8 ^d(Ri:e3uBp](9o BDFChar: 619 683 7 0 5 0 8 ^d)-m84Z9J49,?] BDFChar: 620 684 7 1 5 0 10 Lkr"^L]E6eW7Zn+ BDFChar: 621 685 7 1 5 0 10 pkX`^L]I4+Lkpie BDFChar: 622 699 7 2 3 9 10 5_&h7 BDFChar: 623 700 7 3 4 9 10 5_&h7 BDFChar: 624 701 7 2 3 9 10 J3X)7 BDFChar: 625 710 7 2 4 9 10 5bJ)W BDFChar: 626 711 7 2 4 9 10 TKiJW BDFChar: 627 728 7 1 5 9 10 Li<=o BDFChar: 628 729 7 3 3 9 10 J:IV" BDFChar: 629 730 7 2 4 8 10 5bL@B BDFChar: 630 731 7 2 4 -2 0 5_*5B BDFChar: 631 732 7 1 5 8 10 8>qUM BDFChar: 632 733 7 1 5 9 10 8<qUM BDFChar: 637 774 7 1 5 9 10 Li<=o BDFChar: 638 775 7 3 3 10 10 J,fQL BDFChar: 639 776 7 2 4 10 10 TE"rl BDFChar: 640 780 7 2 4 9 10 TKiJW BDFChar: 641 809 7 2 2 -1 0 J:IV" BDFChar: 642 880 7 1 5 0 8 J:N0#pjdmFJ,fQL BDFChar: 643 881 7 1 5 0 6 J:N1FJ:N.M BDFChar: 644 882 7 1 5 0 8 po(-i+L]@DT BDFChar: 676 923 7 1 5 0 8 +J,fQL BDFChar: 683 931 7 1 5 0 8 pjbUP&0O5gp](9o BDFChar: 684 932 7 1 5 0 8 p`L\%+L^4Ol BDFChar: 727 976 7 1 5 0 8 E/9=+n;)mVDu]k< BDFChar: 728 977 7 1 4 0 8 @$$J3n;r`n?iU0, BDFChar: 729 978 7 1 5 0 8 LepoE+6LkpkCDu]k< BDFChar: 756 1005 7 1 4 0 8 E.EJsOH>Qc?iU0, BDFChar: 757 1006 7 1 5 -2 8 +<^HX+>J:MkE BDFChar: 765 1014 7 1 5 0 6 n-BGQ7^D BDFChar: 780 1029 7 1 5 0 8 G^tQcplq#-QiI*d BDFChar: 786 1035 7 0 5 0 8 i'9PP6psF26i[2e BDFChar: 787 1036 7 1 5 0 10 &0QdjTYQ)nTTFs0 BDFChar: 788 1037 7 1 5 0 10 5TklMR&Ht)aG>WP BDFChar: 789 1038 7 1 5 0 10 Lin;)mVn,NFg BDFChar: 793 1042 7 1 5 0 8 n;)mVn;)mVn,NFg BDFChar: 794 1043 7 1 5 0 8 pjdmFJ:N0#J,fQL BDFChar: 795 1044 7 0 5 -2 8 3%-1'-qHmbr.K_' BDFChar: 796 1045 7 1 5 0 8 pjdmFpjdmFp](9o BDFChar: 797 1046 7 1 5 0 8 W2QYnE2]_6VuQet BDFChar: 798 1047 7 1 5 0 8 n-B:*E!Q^Tn,NFg BDFChar: 799 1048 7 1 5 0 8 LmXR.W6!&9L]@DT BDFChar: 800 1049 7 1 5 0 10 LiL]@DT BDFChar: 802 1051 7 0 5 0 8 Hpg@j6psF2KE(uP BDFChar: 803 1052 7 1 5 0 8 LtJZ)LkpkCL]@DT BDFChar: 804 1053 7 1 5 0 8 LkpkCpkX`^L]@DT BDFChar: 805 1054 7 1 5 0 8 E/9=+LkpkCDu]k< BDFChar: 806 1055 7 1 5 0 8 pkX`^LkpkCL]@DT BDFChar: 807 1056 7 1 5 0 8 n;)mVn:6%>J,fQL BDFChar: 808 1057 7 1 5 0 8 G^tFJ:MkE BDFChar: 829 1078 7 1 5 0 6 W2QY6W2QWp BDFChar: 830 1079 7 1 5 0 6 n-B;=#RKo" BDFChar: 831 1080 7 1 5 0 6 LmXR.aN0/; BDFChar: 832 1081 7 1 5 0 9 Li6J:MkE BDFChar: 860 1109 7 1 5 0 6 G^t<`#RKo" BDFChar: 861 1110 7 2 3 0 9 5X5=b5X7S"5X5;L BDFChar: 862 1111 7 2 4 0 8 TE)bm5X7S"5QCca BDFChar: 863 1112 7 2 4 -2 9 +rRh BDFChar: 885 1134 7 1 5 -2 10 :`oc-#RGAT#RGC"Du]k< BDFChar: 886 1135 7 1 5 -2 9 :`oaW#RGAT#]P<5 BDFChar: 887 1136 7 1 5 0 8 W2QYnW2OYX+92BA BDFChar: 888 1137 7 1 5 -2 6 +K26;W2OYX+92BA BDFChar: 889 1138 7 1 5 0 8 E/9=+pkX`^Du]k< BDFChar: 890 1139 7 1 5 0 6 E/9>FLkp!M BDFChar: 891 1140 7 0 6 0 8 L5:X^:f&8W+92BA BDFChar: 892 1141 7 0 6 0 6 L5:X^:`pk\ BDFChar: 893 1142 7 0 6 0 10 TMPiKLepoE+Qd"d BDFChar: 896 1145 7 0 5 -2 6 <4'$>['X'@2uipY BDFChar: 897 1146 7 1 5 -1 9 +E498LkpkCW,NjZ BDFChar: 898 1147 7 1 5 -1 7 +E498Lkr!K+92BA BDFChar: 899 1148 7 1 5 0 10 E/5X8Lkr".W2NMm BDFChar: 900 1149 7 1 5 0 9 E/5X8Lkr".W)*Ho BDFChar: 901 1150 7 1 5 0 10 E$2*8Lo@8NW2NMm BDFChar: 902 1151 7 1 5 0 9 E$-9ZLkr".W)*Ho BDFChar: 903 1152 7 1 5 -2 8 G^tL^47d BDFChar: 923 1179 7 1 5 -2 6 Lle:FTTFs8#QOi) BDFChar: 924 1180 7 0 5 0 8 KS6;.i39/5KE(uP BDFChar: 925 1181 7 0 5 0 6 KW)-5Yc*3T BDFChar: 926 1182 7 0 5 0 8 7-IHT5[[DZ6i[2e BDFChar: 927 1183 7 0 5 0 6 7-IHT:e3tS BDFChar: 928 1184 7 0 5 0 8 `(3^45[[DZ6i[2e BDFChar: 929 1185 7 0 5 0 6 `(3^4:e3tS BDFChar: 930 1186 7 1 6 -2 8 LkpkCpkX`^N!'7` BDFChar: 931 1187 7 1 6 -2 6 Lkpl^Lkpum"98E% BDFChar: 932 1188 7 1 6 0 8 N/3:GpkX`^L]@DT BDFChar: 933 1189 7 1 6 0 6 N/3;bLkpie BDFChar: 934 1190 7 1 5 -2 8 i1Qa9Yc+M!W!Eq7 BDFChar: 935 1191 7 1 5 -2 6 i1RL^5[7 BDFChar: 964 1220 7 1 5 -2 6 Lle:FTTFs80E;(Q BDFChar: 965 1221 7 0 6 -2 8 Hpg@j6psF2KE;8V BDFChar: 966 1222 7 1 6 -2 6 GXt@r84\O>#QOi) BDFChar: 967 1223 7 1 5 -2 8 LkpkCpkX`^L^5[7 BDFChar: 968 1224 7 1 5 -2 6 Lkpl^Lkpim0E;(Q BDFChar: 969 1225 7 1 6 -2 8 LkpkCpkX`^L]dt` BDFChar: 970 1226 7 1 6 -2 6 Lkpl^Lkpii#QOi) BDFChar: 971 1227 7 1 5 -2 8 LkpkCGR+Q\(_@5Y BDFChar: 972 1228 7 1 5 -2 6 Lkpk3#RD7Y&-)\1 BDFChar: 973 1229 7 1 6 -2 8 Lks^9W2PN.L]dt` BDFChar: 974 1230 7 1 6 -2 6 LtJZ)Lkpii#QOi) BDFChar: 975 1231 7 1 5 0 8 p`L\%+WP BDFChar: 995 1251 7 1 5 0 8 Dub]]R&J*IL]@DT BDFChar: 996 1252 7 1 5 0 10 :]Q<=R&Ht)aG>WP BDFChar: 997 1253 7 1 5 0 8 :]Q<=R&J*IL]@DT BDFChar: 998 1254 7 1 5 0 10 :]PHjLkpkCLkp!M BDFChar: 999 1255 7 1 5 0 8 :]PHjLkpkCDu]k< BDFChar: 1000 1256 7 1 5 0 8 E/9=+pkX`^Du]k< BDFChar: 1001 1257 7 1 5 0 6 E/9>FLkp!M BDFChar: 1002 1258 7 1 5 0 10 :]PHjLkth^Lkp!M BDFChar: 1003 1259 7 1 5 0 8 :]PHjM"ld^Du]k< BDFChar: 1004 1260 7 1 5 0 10 :]Ttj#RGY\#RKo" BDFChar: 1005 1261 7 1 5 0 8 :]Ttj#^?U\n,NFg BDFChar: 1006 1262 7 1 5 0 10 Dub]MLkpkCGR/6g BDFChar: 1007 1263 7 1 5 -2 8 Dub]MLkpkCGR/6g BDFChar: 1008 1264 7 1 5 0 10 :]Q<-LkpkCGR/6g BDFChar: 1009 1265 7 1 5 -2 8 :]Q<-LkpkCGR/6g BDFChar: 1010 1266 7 1 5 0 10 -r9o"LkpkCGR/6g BDFChar: 1011 1267 7 1 5 -2 9 -r9o"LkpkCLj02E BDFChar: 1012 1268 7 1 5 0 10 :]Q<-Lkp9]#RC\9 BDFChar: 1013 1269 7 1 5 0 8 :]Q<-Lj012#QOi) BDFChar: 1014 1270 7 1 5 -2 8 pjdmFJ:N0#^d(-b BDFChar: 1015 1271 7 1 5 -2 6 pjdmFJ:PF#5QCca BDFChar: 1016 1272 7 1 5 0 10 :]Q<-Lks-NW2Rc; BDFChar: 1017 1273 7 1 5 0 8 :]Q<-LrcNna8c2? BDFChar: 1018 1274 7 0 5 -2 8 HpBq^pcq)05X9i" BDFChar: 1019 1275 7 0 5 -2 6 HpBsl5X7S"J,fQL BDFChar: 1020 1276 7 1 5 -2 8 Lknl(+AbmjL^4Ol BDFChar: 1021 1277 7 1 5 -2 6 LknkM:l'o5&-)\1 BDFChar: 1022 1278 7 1 5 0 8 Lknl(peXeCL]@DT BDFChar: 1023 1279 7 1 5 0 6 Lknn&:l'o- BDFChar: 1024 1280 7 0 4 0 8 #RC]\LkpkCGQ7^D BDFChar: 1025 1281 7 0 4 0 6 #RC]\Lkp9U BDFChar: 1026 1282 7 0 5 0 8 &/95NPa%DsBE/#4 BDFChar: 1027 1283 7 0 5 0 8 &.fBeFHi#SBE/#4 BDFChar: 1028 1284 7 1 5 0 8 ^`Y&H-n$Jl&-)\1 BDFChar: 1029 1285 7 1 5 0 6 ^`Y&H-n#W, BDFChar: 1030 1286 7 1 5 -2 8 i"-H-&.fBa(^LBI BDFChar: 1031 1287 7 1 5 -2 6 i"-H-&.fZa#QOi) BDFChar: 1032 1288 7 0 5 0 8 E)]e9<)cgrL]@DT BDFChar: 1033 1289 7 0 5 0 6 E)]e9<)eYR BDFChar: 1034 1290 7 1 5 0 8 TW"ffkbtGYO8o7\ BDFChar: 1035 1291 7 1 5 0 6 TW"gQW2PdX BDFChar: 1036 1292 7 1 5 0 8 G^tIi/j%VL]@DT BDFChar: 1047 1303 7 1 5 -2 6 aJc>9Yc,WnJ,fQL BDFChar: 1048 1304 7 0 5 0 8 I#sGOHn\BYS,`Nh BDFChar: 1049 1305 7 0 5 0 6 Ga+G?0Mm]. BDFChar: 1050 1306 7 1 5 -1 8 E/9=+LkpkCE!QFD BDFChar: 1051 1307 7 1 5 -2 6 G_h03Lkp9]#QOi) BDFChar: 1052 1308 7 1 5 0 8 LkpkcW7]aYL]@DT BDFChar: 1053 1309 7 1 5 0 6 LkpkcW7Zn+ BDFChar: 1054 1310 7 1 5 0 8 W0!snJA@h>L]@DT BDFChar: 1055 1311 7 1 5 0 6 W0!snTTFs0 BDFChar: 1056 1312 7 0 5 -2 8 E)9A-=B&7!PQVg' BDFChar: 1057 1313 7 0 5 -2 6 E)9A5<)f(b(]XO9 BDFChar: 1058 1314 7 1 5 -2 8 TV.sNn>N:aW!G'W BDFChar: 1059 1315 7 1 5 -2 6 TV.tIW2QX#0E;(Q BDFChar: 1060 1316 7 1 6 -2 8 pkX`^LkpkCN!'7` BDFChar: 1061 1317 7 1 6 -2 6 pkX`^Lkpum"98E% BDFChar: 1062 1318 7 1 6 -2 8 J:R-FLkpkCN!'7` BDFChar: 1063 1319 7 1 6 -2 6 J:R-FLkpum"98E% BDFChar: 1064 1567 7 0 0 0 0 z BDFChar: 1065 1569 7 0 0 0 0 z BDFChar: 1066 1570 7 0 0 0 0 z BDFChar: 1067 1571 7 0 0 0 0 z BDFChar: 1068 1572 7 0 0 0 0 z BDFChar: 1069 1573 7 0 0 0 0 z BDFChar: 1070 1574 7 0 0 0 0 z BDFChar: 1071 1575 7 0 0 0 0 z BDFChar: 1072 1576 7 0 0 0 0 z BDFChar: 1073 1577 7 0 0 0 0 z BDFChar: 1074 1578 7 0 0 0 0 z BDFChar: 1075 1579 7 0 0 0 0 z BDFChar: 1076 1580 7 0 0 0 0 z BDFChar: 1077 1581 7 0 0 0 0 z BDFChar: 1078 1582 7 0 0 0 0 z BDFChar: 1079 1583 7 0 0 0 0 z BDFChar: 1080 1584 7 0 0 0 0 z BDFChar: 1081 1585 7 0 0 0 0 z BDFChar: 1082 1586 7 0 0 0 0 z BDFChar: 1083 1587 7 0 0 0 0 z BDFChar: 1084 1588 7 0 0 0 0 z BDFChar: 1085 1589 7 0 0 0 0 z BDFChar: 1086 1590 7 0 0 0 0 z BDFChar: 1087 1591 7 0 0 0 0 z BDFChar: 1088 1592 7 0 0 0 0 z BDFChar: 1089 1593 7 0 0 0 0 z BDFChar: 1090 1594 7 0 0 0 0 z BDFChar: 1091 1600 7 0 0 0 0 z BDFChar: 1092 1601 7 0 0 0 0 z BDFChar: 1093 1602 7 0 0 0 0 z BDFChar: 1094 1603 7 0 0 0 0 z BDFChar: 1095 1604 7 0 0 0 0 z BDFChar: 1096 1605 7 0 0 0 0 z BDFChar: 1097 1606 7 0 0 0 0 z BDFChar: 1098 1607 7 0 0 0 0 z BDFChar: 1099 1608 7 0 0 0 0 z BDFChar: 1100 1609 7 0 0 0 0 z BDFChar: 1101 1610 7 0 0 0 0 z BDFChar: 1102 1632 7 0 0 0 0 z BDFChar: 1103 1633 7 0 0 0 0 z BDFChar: 1104 1634 7 0 0 0 0 z BDFChar: 1105 1635 7 0 0 0 0 z BDFChar: 1106 1636 7 0 0 0 0 z BDFChar: 1107 1637 7 0 0 0 0 z BDFChar: 1108 1638 7 0 0 0 0 z BDFChar: 1109 1639 7 0 0 0 0 z BDFChar: 1110 1640 7 0 0 0 0 z BDFChar: 1111 1641 7 0 0 0 0 z BDFChar: 1112 1642 7 0 0 0 0 z BDFChar: 1113 1643 7 0 0 0 0 z BDFChar: 1114 1644 7 0 0 0 0 z BDFChar: 1115 1646 7 0 0 0 0 z BDFChar: 1116 1647 7 0 0 0 0 z BDFChar: 1117 4053 7 0 4 3 7 \=iUFkPtS_ BDFChar: 1118 4054 7 0 4 3 7 kU?5!\,ZL/ BDFChar: 1119 7680 7 1 5 -2 8 E/9>FLkpkC+Aa0\ BDFChar: 1120 7681 7 1 5 -2 7 E!Q_oLkp9u:`o`< BDFChar: 1121 7682 7 1 5 0 10 +9:neLktPVLktO# BDFChar: 1122 7683 7 1 5 0 10 +96qBn;)mVLktO# BDFChar: 1123 7684 7 1 5 -2 8 n;)mVn;)mVn,OR2 BDFChar: 1124 7685 7 1 5 -2 8 J:R-FLkpkCn,OR2 BDFChar: 1125 7686 7 1 5 -2 8 n;)mVn;)mVn,RD- BDFChar: 1126 7687 7 1 5 -2 8 J:R-FLkpkCn,RD- BDFChar: 1127 7688 7 1 5 -2 10 &0Q4JJ:N0#J:Mke^]4?7 BDFChar: 1128 7689 7 1 5 -2 9 &0LstJ:N0#J9W3P BDFChar: 1129 7690 7 1 5 0 10 +9:>]LkpkCLlgNp BDFChar: 1130 7691 7 1 5 0 10 +92ZQG_h03Lkp9U BDFChar: 1131 7692 7 1 5 -2 8 i/ibNLkpkKhuFl" BDFChar: 1132 7693 7 1 5 -2 8 #RG[2LkpkCGQ8id BDFChar: 1133 7694 7 1 5 -2 8 i/ibNLkpkKhuI]r BDFChar: 1134 7695 7 1 5 -2 8 #RG[2LkpkCGQ;[_ BDFChar: 1135 7696 7 1 5 -2 8 i/ibNLkpkKi#of8 BDFChar: 1136 7697 7 1 5 -2 8 #RG[2LkpkCGTad% BDFChar: 1137 7698 7 1 5 -2 8 i/ibNLkpkKi#khr BDFChar: 1138 7699 7 1 5 -2 8 #RG[2LkpkCGT]f_ BDFChar: 1139 7700 7 1 5 0 10 5Tk"GpjdniJ:RCp BDFChar: 1140 7701 7 1 5 0 10 5Tk"GE/9>FJ:MkE BDFChar: 1141 7702 7 1 5 0 10 &0PolpjdniJ:RCp BDFChar: 1142 7703 7 1 5 0 10 &0PolE/9>FJ:MkE BDFChar: 1143 7704 7 1 5 -2 8 pjdniJ:N1F!$G)< BDFChar: 1144 7705 7 1 5 -2 6 E/=:>J9V&::]LIq BDFChar: 1145 7706 7 1 5 -2 8 pjdniJ:N1F!,.Go BDFChar: 1146 7707 7 1 5 -2 6 E/=:>J9V'-O8o7\ BDFChar: 1147 7708 7 1 5 -2 10 Li<@hJ:REFJ:RD;^]4?7 BDFChar: 1148 7709 7 1 5 -2 9 LiL]AOt BDFChar: 1170 7731 7 1 5 -2 8 J:NH;TYR4^L]AOt BDFChar: 1171 7732 7 1 5 -2 8 Lle:FJA@h>L]DAo BDFChar: 1172 7733 7 1 5 -2 8 J:NH;TYR4^L]DAo BDFChar: 1173 7734 7 1 5 -2 8 J:N0#J:N0#p])E: BDFChar: 1174 7735 7 2 4 -2 8 ^d(.M5X7S"+94Y, BDFChar: 1175 7736 7 1 5 -2 10 DubE=J:N0#J:RCp+92BA BDFChar: 1176 7737 7 2 4 -2 10 huLPX5X7S"5X6Fl5QCca BDFChar: 1177 7738 7 1 5 -2 8 J:N0#J:N0#p],75 BDFChar: 1178 7739 7 2 4 -2 8 ^d(.M5X7S"+9:=" BDFChar: 1179 7740 7 1 5 -2 8 J:N0#J:N1F!$G)< BDFChar: 1180 7741 7 2 4 -2 8 ^d(.M5X7RW!'m1W BDFChar: 1181 7742 7 1 5 0 10 &0Qdbf\!.$Lkpie BDFChar: 1182 7743 7 1 5 0 9 &0LuBW2QYnW2K[r BDFChar: 1183 7744 7 1 5 0 10 +974Rf\!.$Lkpie BDFChar: 1184 7745 7 1 5 0 8 +9:o0W2QYnVuQet BDFChar: 1185 7746 7 1 5 -2 8 Lks^9W2PN.L]AOt BDFChar: 1186 7747 7 1 5 -2 6 n>N:aW2QWp+92BA BDFChar: 1187 7748 7 1 5 0 10 +975=aJc&)R#$Ou BDFChar: 1188 7749 7 1 5 0 8 +9:neLkpkCL]@DT BDFChar: 1189 7750 7 1 5 -2 8 LrdZ9W0is.L]AOt BDFChar: 1190 7751 7 1 5 -2 6 n;)mVLkpie+92BA BDFChar: 1191 7752 7 1 5 -2 8 LrdZ9W0is.L]DAo BDFChar: 1192 7753 7 1 5 -2 6 n;)mVLkpieDu]k< BDFChar: 1193 7754 7 1 5 -2 8 LrdZ9W0is.L`fLo BDFChar: 1194 7755 7 1 5 -2 6 n;)mVLkpj0:]LIq BDFChar: 1195 7756 7 1 5 0 10 5_*OP!-!aMLkp!M BDFChar: 1196 7757 7 1 5 0 10 5_*OP!-!aMLkp!M BDFChar: 1197 7758 7 1 5 0 10 :]P15!-!aMLkp!M BDFChar: 1198 7759 7 1 5 0 10 :]P15!-!aMLkp!M BDFChar: 1199 7760 7 1 5 0 10 5Tk"GE/9=+Lkp!M BDFChar: 1200 7761 7 1 5 0 10 5Tk"GE/9=+Lkp!M BDFChar: 1201 7762 7 1 5 0 10 &0PolE/9=+Lkp!M BDFChar: 1202 7763 7 1 5 0 10 &0PolE/9=+Lkp!M BDFChar: 1203 7764 7 1 5 0 10 &0UIuLktPNJ:N.M BDFChar: 1204 7765 7 1 5 -2 9 &0LuBLkpkCM"#qF BDFChar: 1205 7766 7 1 5 0 10 +9:neLktPNJ:N.M BDFChar: 1206 7767 7 1 5 -2 8 +9:neLkpkCn:6#h BDFChar: 1207 7768 7 1 5 0 10 +9:neLktQ9TTFs0 BDFChar: 1208 7769 7 1 5 0 8 +96Y:J:N0#J,fQL BDFChar: 1209 7770 7 1 5 -2 8 n;)mVnA(]YL]AOt BDFChar: 1210 7771 7 1 5 -2 6 G^tJ:MS= BDFChar: 1227 7788 7 1 5 -2 8 p`L\%+J:N0#Du`-' BDFChar: 1229 7790 7 1 5 -2 8 p`L\%+J:N0#Dueer BDFChar: 1231 7792 7 1 5 -2 8 p`L\%+J:N/h!'m1W BDFChar: 1233 7794 7 1 5 -2 8 LkpkCLkpkCDu`]7 BDFChar: 1234 7795 7 1 5 -2 6 LkpkCLkp9U:]LIq BDFChar: 1235 7796 7 1 5 -2 8 LkpkCLkpk+!,.Go BDFChar: 1236 7797 7 1 5 -2 6 LkpkCLj/o5O8o7\ BDFChar: 1237 7798 7 1 5 -2 8 LkpkCLkpk+!$G)< BDFChar: 1238 7799 7 1 5 -2 6 LkpkCLj/nB:]LIq BDFChar: 1239 7800 7 1 5 0 10 5_*OP!/QGeLkp!M BDFChar: 1240 7801 7 1 5 0 10 5_*OP!/QGeLkp9U BDFChar: 1241 7802 7 1 5 0 10 :]PG7LkpkCLkp!M BDFChar: 1242 7803 7 1 5 0 10 :]PG7LkpkCLkp9U BDFChar: 1243 7804 7 1 5 0 10 BTN4MLknl(:`pk\ BDFChar: 1244 7805 7 1 5 0 10 8>qUMLkpj`:`pk\ BDFChar: 1245 7806 7 1 5 -2 8 Lkpj`:f&8W+93Ma BDFChar: 1246 7807 7 1 5 -2 6 Lkpj`:`pk\+92BA BDFChar: 1247 7808 7 1 5 0 10 5Tkl=Lo@9)fSG=` BDFChar: 1248 7809 7 1 5 0 9 5Tg&_Lkr".W,M_: BDFChar: 1249 7810 7 1 5 0 10 &0QdbLo@9)fSG=` BDFChar: 1250 7811 7 1 5 0 9 &0Lt/Lkr".W,M_: BDFChar: 1251 7812 7 1 5 0 10 :]Q<-Lo@9)fSG=` BDFChar: 1252 7813 7 1 5 0 8 :]Q<-Lo@8NDu]k< BDFChar: 1253 7814 7 1 5 0 10 +974RLo@9)fSG=` BDFChar: 1254 7815 7 1 5 0 8 +974RLo@8NDu]k< BDFChar: 1255 7816 7 1 5 -2 8 LkpkcW7]aYL]AOt BDFChar: 1256 7817 7 1 5 -2 6 LkpkcW2OY8+92BA BDFChar: 1257 7818 7 1 5 0 10 +974R:f&92:l'o- BDFChar: 1258 7819 7 1 5 0 8 +974R:`rSjL]@DT BDFChar: 1259 7820 7 1 5 0 10 :]Q<-:f&92:l'o- BDFChar: 1260 7821 7 1 5 0 8 :]Q<-:`rSjL]@DT BDFChar: 1261 7822 7 1 5 0 10 +974R:f&8W+FLkpie BDFChar: 1286 7847 7 1 6 0 10 #UE4HE!Q_oLkp9U BDFChar: 1287 7848 7 1 5 0 10 ^`ZGRE/9>FLkpie BDFChar: 1288 7849 7 1 5 0 10 ^`ZGRE!Q_oLkp9U BDFChar: 1289 7850 7 0 5 0 10 BWqaV!'!Ao6psEC BDFChar: 1290 7851 7 0 5 0 10 BWqaV!&t*D6ps-; BDFChar: 1291 7852 7 1 5 -2 10 +A`&WLkth^Lkpie+92BA BDFChar: 1292 7853 7 1 5 -2 9 +A`&W#RG[2Lj/nB BDFChar: 1293 7854 7 1 5 0 10 &0QdJ!-!bhLkpie BDFChar: 1294 7855 7 1 5 0 10 &0QdJ!,r3gLkp9U BDFChar: 1295 7856 7 1 5 0 10 5Tkl%!-!bhLkpie BDFChar: 1296 7857 7 1 5 0 10 5Tkl%!,r3gLkp9U BDFChar: 1297 7858 7 1 5 0 10 ^`\GP!-!bhLkpie BDFChar: 1298 7859 7 1 5 0 10 ^`\GP!,r3gLkp9U BDFChar: 1299 7860 7 1 5 0 10 BX!;3!-!bhLkpie BDFChar: 1300 7861 7 1 5 0 10 BX!;3!,r3gLkp9U BDFChar: 1301 7862 7 1 5 -2 10 LiFJ:MkE+92BA BDFChar: 1305 7866 7 1 5 0 10 ^``E&J:REFJ:RCp BDFChar: 1306 7867 7 1 5 0 9 ^`WVrLkthVJ9V%o BDFChar: 1307 7868 7 1 5 0 10 BWqL3J:REFJ:RCp BDFChar: 1308 7869 7 1 5 0 10 8>qUME/9>FJ:MkE BDFChar: 1309 7870 7 0 5 0 10 5`dAoHpBrE5X9\s BDFChar: 1310 7871 7 0 5 0 10 5`dAo3(-/^5X7F3 BDFChar: 1311 7872 7 1 6 0 10 #UE4HpjdniJ:RCp BDFChar: 1312 7873 7 1 6 0 10 #UE4HE/9>FJ:MkE BDFChar: 1313 7874 7 1 5 0 10 ^`ZGRpjdnaJ:RCp BDFChar: 1314 7875 7 1 5 0 10 ^`ZGRE/9>FJ:MkE BDFChar: 1315 7876 7 0 5 0 10 BWqaV!.7%Z5X9\s BDFChar: 1316 7877 7 0 5 0 10 BWqaV!'!Ao5X7F3 BDFChar: 1317 7878 7 1 5 -2 10 +A`(5J:REFJ:RCp+92BA BDFChar: 1318 7879 7 1 5 -2 9 +A`&WLkthVJ9V&: BDFChar: 1319 7880 7 1 5 0 10 ^``Cp+: BDFChar: 1337 7898 7 1 6 0 10 &0u@RLkpkCLkp!M BDFChar: 1338 7899 7 1 6 0 9 &0M*tLkpkCLi<=o BDFChar: 1339 7900 7 1 6 0 10 5U:H-LkpkCLkp!M BDFChar: 1340 7901 7 1 6 0 9 5Tg2OLkpkCLi<=o BDFChar: 1341 7902 7 1 6 0 10 ^a+#XLkpkCLkp!M BDFChar: 1342 7903 7 1 6 0 9 ^`Wc%LkpkCLi<=o BDFChar: 1343 7904 7 1 6 0 10 BWqV]LkpkCLkp!M BDFChar: 1344 7905 7 1 6 0 10 8>qUQFGPa/Lkp!M BDFChar: 1345 7906 7 1 6 -2 9 "E]HULkpkCLi<>: BDFChar: 1346 7907 7 1 6 -2 7 "E]HULkpk+!$D7A BDFChar: 1347 7908 7 1 5 -2 8 LkpkCLkpkCDu_!\ BDFChar: 1348 7909 7 1 5 -2 6 LkpkCLkp9U+92BA BDFChar: 1349 7910 7 1 5 0 10 ^`\GhLkpkCLkp!M BDFChar: 1350 7911 7 1 5 0 8 ^`\GhLkpkCGQ7^D BDFChar: 1351 7912 7 1 6 0 10 &0qC7LkpkCLkp!M BDFChar: 1352 7913 7 1 6 0 9 &0qC7LkpkCLj/n" BDFChar: 1353 7914 7 1 6 0 10 5U6JgLkpkCLkp!M BDFChar: 1354 7915 7 1 6 0 9 5U6JgLkpkCLj/n" BDFChar: 1355 7916 7 1 6 0 10 `$C.pLkpkCLkp!M BDFChar: 1356 7917 7 1 6 0 9 ^a'&=LkpkCLj/n" BDFChar: 1357 7918 7 1 6 0 10 BX@nuLkpkCLkp!M BDFChar: 1358 7919 7 1 6 0 10 8>qaULkpkCLkp9U BDFChar: 1359 7920 7 1 6 -2 10 "9aO:LkpkCLkp!M+92BA BDFChar: 1360 7921 7 1 6 -2 8 "9aO:LkpkCGQ8id BDFChar: 1361 7922 7 1 5 0 10 5Tkl=:f&8W+Ba8c2? BDFChar: 1365 7926 7 1 5 0 10 ^`\Gh:f&8W+qUMLkpkCLkp9]Du]k< BDFChar: 1369 7930 7 1 5 0 8 TV.sNTV.sNp](9o BDFChar: 1370 7931 7 1 5 0 8 n5)qX:f'tb-ia5I BDFChar: 1371 7932 7 1 5 0 8 0L1/=OGJ^KDu]k< BDFChar: 1372 7933 7 1 5 0 6 0L1/MLkp!M BDFChar: 1373 7934 7 1 5 -1 8 Lknl(+tL BDFChar: 1530 8105 7 1 6 0 10 +tL BDFChar: 1531 8106 7 0 6 0 10 :e6*Z<)cgr<$ZJa BDFChar: 1532 8107 7 1 6 0 10 :e2]oW2QYnW(>tL BDFChar: 1533 8108 7 0 6 0 10 85OgZ<)cgr<$ZJa BDFChar: 1534 8109 7 1 6 0 10 6qAFcW2QYnW(>tL BDFChar: 1535 8110 7 0 6 0 10 E2XmE+B2<><$ZJa BDFChar: 1536 8111 7 1 6 0 10 E2Xlj5cCW[W(>tL BDFChar: 1537 8112 7 1 5 0 9 Li?iU0, BDFChar: 1666 8305 7 2 2 6 10 J,k+MJ,fQL BDFChar: 1667 8308 7 1 4 6 10 +CLl3+92BA BDFChar: 1668 8309 7 1 4 6 10 n:9F.huE`W BDFChar: 1669 8310 7 1 4 6 10 @"@0s?iU0, BDFChar: 1670 8311 7 1 4 6 10 n.6^-5QCca BDFChar: 1671 8312 7 1 4 6 10 @$"cX?iU0, BDFChar: 1672 8313 7 1 4 6 10 @$#==?iU0, BDFChar: 1673 8314 7 2 4 7 9 5i=m- BDFChar: 1674 8315 7 2 4 8 8 huE`W BDFChar: 1675 8316 7 2 4 7 9 huM[8 BDFChar: 1676 8317 7 3 4 6 10 5_+B85QCca BDFChar: 1677 8318 7 2 3 6 10 J3Z@bJ,fQL BDFChar: 1678 8319 7 1 4 6 9 i/j%^ BDFChar: 1679 8320 7 1 4 -1 3 @'J">?iU0, BDFChar: 1680 8321 7 2 3 -1 3 5eoWM5QCca BDFChar: 1681 8322 7 1 4 -1 3 @#uKrn,NFg BDFChar: 1682 8323 7 1 4 -1 3 i"09-huE`W BDFChar: 1683 8324 7 1 4 -1 3 +CLl3+92BA BDFChar: 1684 8325 7 1 4 -1 3 n:9F.huE`W BDFChar: 1685 8326 7 1 4 -1 3 @"@0s?iU0, BDFChar: 1686 8327 7 1 4 -1 3 n.6^-5QCca BDFChar: 1687 8328 7 1 4 -1 3 @$"cX?iU0, BDFChar: 1688 8329 7 1 4 -1 3 @$#==?iU0, BDFChar: 1689 8330 7 2 4 0 2 5i=m- BDFChar: 1690 8331 7 2 4 1 1 huE`W BDFChar: 1691 8332 7 2 4 0 2 huM[8 BDFChar: 1692 8333 7 3 4 -1 3 5_+B85QCca BDFChar: 1693 8334 7 2 3 -1 3 J3Z@bJ,fQL BDFChar: 1694 8336 7 1 4 -1 3 ?k@:=Du]k< BDFChar: 1695 8337 7 1 4 -1 3 @$'l.Du]k< BDFChar: 1696 8338 7 1 4 -1 3 @$$J3?iU0, BDFChar: 1697 8339 7 1 5 -1 3 Leo3jL]@DT BDFChar: 1698 8340 7 1 4 -1 3 i"5C>?iU0, BDFChar: 1699 8341 7 1 4 -1 4 J:QR>OH9GB BDFChar: 1700 8342 7 1 4 -1 4 J<6G>TTB-R BDFChar: 1701 8343 7 1 2 -1 4 ^d(.M5X5;L BDFChar: 1702 8344 7 0 4 -1 3 n>N:aVuQet BDFChar: 1703 8345 7 1 4 -1 3 i/j%^O8o7\ BDFChar: 1704 8346 7 1 4 -2 3 i/j&YJ:IV" BDFChar: 1705 8347 7 1 4 -1 3 E.D=-huE`W BDFChar: 1706 8348 7 2 4 -1 4 JDbs.J7&?W BDFChar: 1707 8359 7 0 5 0 8 ^n@X)gk^cBKE(uP BDFChar: 1708 8364 7 0 5 0 8 *$@N95k%#])uos= BDFChar: 1709 8366 7 1 5 0 8 p`L\5?nbt2+92BA BDFChar: 1710 8450 7 0 5 0 8 4CFhTTV.rc49,?] BDFChar: 1711 8451 7 0 5 0 8 5cdd)+*"Wqi(]XO9 BDFChar: 1734 8537 7 0 5 -2 10 5eoWM5R]?^$kO6i#QOi) BDFChar: 1735 8538 7 0 5 -2 10 i./Tc^^Mp4$kO6i#QOi) BDFChar: 1736 8539 7 0 5 -2 10 5eoWM5R]?^#S[OY#QOi) BDFChar: 1737 8540 7 0 5 -2 10 ^`Ylb^^Mp4#S[OY#QOi) BDFChar: 1738 8541 7 0 5 -2 10 i./Tc^^Mp4#S[OY#QOi) BDFChar: 1739 8542 7 0 5 -2 10 i#k:8J.+-I#S[OY#QOi) BDFChar: 1740 8543 7 0 5 3 10 5eoWM5R]?^ BDFChar: 1741 8585 7 0 5 -2 10 5bOdC5R]?^(^(*I(]XO9 BDFChar: 1742 8592 7 0 6 3 7 +@,ok+92BA BDFChar: 1743 8593 7 1 5 2 8 +E48%+um+92BA BDFChar: 1753 8611 7 0 6 3 7 #_[Y[#QOi) BDFChar: 1754 8612 7 0 6 3 7 +@?&o+92BA BDFChar: 1755 8613 7 1 5 2 8 +E48%+jAd%Kk. BDFChar: 1799 8672 7 0 6 3 7 +@,3W+92BA BDFChar: 1800 8673 7 1 5 2 8 +E47Z+93Ma BDFChar: 1801 8674 7 0 6 3 7 #R%:5#QOi) BDFChar: 1802 8675 7 1 5 2 8 +93MaW,NjZ BDFChar: 1803 8676 7 0 6 3 7 OJ)TGO8o7\ BDFChar: 1804 8677 7 0 6 3 7 &dnUF&c_n3 BDFChar: 1805 8678 7 0 6 3 7 +F_1V+92BA BDFChar: 1806 8679 7 1 5 2 8 +E5t0:f)*2 BDFChar: 1807 8680 7 0 6 3 7 #lKGT#QOi) BDFChar: 1808 8681 7 1 5 2 8 E)9A-fPhr5 BDFChar: 1809 8691 7 1 5 2 8 +E5t0fPhr5 BDFChar: 1810 8693 7 0 6 2 8 -p/t-W-B]j BDFChar: 1811 8694 7 1 5 2 8 &GQh3&GQe: BDFChar: 1812 8704 7 1 5 0 8 Lkpk+:f&8W+92BA BDFChar: 1813 8705 7 1 5 0 8 G^tGQ7^D BDFChar: 1822 8715 7 1 5 0 8 n-B:*p]q-2n,NFg BDFChar: 1823 8716 7 1 5 -1 9 &F^MR./52=8FSkE BDFChar: 1824 8717 7 1 5 2 6 n-Jdpn,NFg BDFChar: 1825 8719 7 1 5 0 8 pkX`^LkpkCL]@DT BDFChar: 1826 8721 7 1 5 0 8 pjbUP&0O5gp](9o BDFChar: 1827 8722 7 1 5 4 4 p](9o BDFChar: 1828 8723 7 1 5 1 7 p])EZp`L[Z BDFChar: 1829 8724 7 1 5 1 7 +93N,p`L[Z BDFChar: 1830 8729 7 2 3 3 4 ^q]pM BDFChar: 1831 8730 7 0 6 0 9 %L<=G#RH5W-l;pa BDFChar: 1832 8731 7 0 6 0 10 ^b3\Va9W'-815;T BDFChar: 1833 8732 7 0 6 0 10 +E".A-jU*7815;T BDFChar: 1834 8733 7 1 5 1 5 BTS=;BE/#4 BDFChar: 1835 8734 7 1 5 1 5 :oL=k:]LIq BDFChar: 1836 8735 7 1 5 3 7 J:N0#p](9o BDFChar: 1837 8736 7 1 5 3 7 #S8+Dp](9o BDFChar: 1838 8739 7 3 3 0 8 J:N0#J:N0#J,fQL BDFChar: 1839 8740 7 2 4 0 8 5X7SB^d(.M5QCca BDFChar: 1840 8741 7 2 4 0 8 TV.sNTV.sNTE"rl BDFChar: 1841 8742 7 1 5 0 8 :f'tjE6qEX:]LIq BDFChar: 1842 8743 7 1 5 1 6 +M5QCca BDFChar: 1901 9146 7 0 6 10 10 rVuou BDFChar: 1902 9147 7 0 6 7 7 rVuou BDFChar: 1903 9148 7 0 6 3 3 rVuou BDFChar: 1904 9149 7 0 6 0 0 rVuou BDFChar: 1905 9224 7 0 5 -1 9 n;-Rin,PR93!=I+ BDFChar: 1906 9225 7 0 5 -1 9 Lkth^L]Df6&.fBQ BDFChar: 1907 9226 7 0 5 -1 9 J:N0#p],\,GX+Lo BDFChar: 1908 9227 7 0 5 -1 9 Lkpj`+96d#&.fBQ BDFChar: 1909 9228 7 0 5 -1 9 pjh:QJ,js^E'QYg BDFChar: 1910 9229 7 0 5 -1 9 G^tJ:N.M BDFChar: 1926 9485 7 3 6 -2 4 nF1sYJ:N.M BDFChar: 1927 9486 7 3 6 -2 4 nA)iT^qd_c BDFChar: 1928 9487 7 3 6 -2 4 nF46/^qd_c BDFChar: 1929 9488 7 0 3 -2 4 n.6-B&.fBQ BDFChar: 1930 9489 7 0 3 -2 4 nF-u#&.fBQ BDFChar: 1931 9490 7 0 4 -2 4 p_Xhb(`4(i BDFChar: 1932 9491 7 0 4 -2 4 q"P[C(`4(i BDFChar: 1933 9492 7 3 6 4 10 J:N0#J:R+h BDFChar: 1934 9493 7 3 6 3 10 J:N0#J:R.Y BDFChar: 1935 9494 7 3 6 4 10 ^qdb$^qfF> BDFChar: 1936 9495 7 3 6 3 10 ^qdb$^qfI/ BDFChar: 1937 9496 7 0 3 4 10 &.fBa&.n=2 BDFChar: 1938 9497 7 0 3 3 10 &.fBa&.n@# BDFChar: 1939 9498 7 0 4 4 10 (`4),(`<#J BDFChar: 1940 9499 7 0 4 3 10 (`4),(`<&C BDFChar: 1941 9500 7 3 6 -2 10 J:N0#J:R->J:N0#J,fQL BDFChar: 1942 9501 7 3 6 -2 10 J:N0#J:R.YJ:N0#J,fQL BDFChar: 1943 9502 7 3 6 -2 10 ^qdb$^qfGiJ:N0#J,fQL BDFChar: 1944 9503 7 3 6 -2 10 J:N0#J:R.Y^qdb$^]4?7 BDFChar: 1945 9504 7 3 6 -2 10 ^qdb$^qfHT^qdb$^]4?7 BDFChar: 1946 9505 7 3 6 -2 10 ^qdb$^qfI/J:N0#J,fQL BDFChar: 1947 9506 7 3 6 -2 10 J:N0#J:R.Y^qdb$^]4?7 BDFChar: 1948 9507 7 3 6 -2 10 ^qdb$^qfI/^qdb$^]4?7 BDFChar: 1949 9508 7 0 3 -2 10 &.fBa&.n=B&.fBa&-)\1 BDFChar: 1950 9509 7 0 3 -2 10 &.fBa&.n@#&.fBa&-)\1 BDFChar: 1951 9510 7 0 4 -2 10 (`4),(`<#Z&.fBa&-)\1 BDFChar: 1952 9511 7 0 4 -2 10 &.fBa&.nUR(`4),(]XO9 BDFChar: 1953 9512 7 0 4 -2 10 (`4),(`<#b(`4),(]XO9 BDFChar: 1954 9513 7 0 4 -2 10 (`4),(`<&C&.fBa&-)\1 BDFChar: 1955 9514 7 0 4 -2 10 &.fBa&.nX3(`4),(]XO9 BDFChar: 1956 9515 7 0 4 -2 10 (`4),(`<&C(`4),(]XO9 BDFChar: 1957 9516 7 0 6 -2 4 rX]VP&.fBQ BDFChar: 1958 9517 7 0 6 -2 4 rpUI1&.fBQ BDFChar: 1959 9518 7 0 6 -2 4 rZ2U^&.fBQ BDFChar: 1960 9519 7 0 6 -2 4 rr*H?&.fBQ BDFChar: 1961 9520 7 0 6 -2 4 rYQIh(`4(i BDFChar: 1962 9521 7 0 6 -2 4 rqI(#&.fBa BDFChar: 1999 9558 7 0 4 -2 4 pa@O=-n$JD BDFChar: 2000 9559 7 0 4 -2 5 p^$(3-n$Jl BDFChar: 2001 9560 7 3 6 3 10 J:N0#JFJ*Y BDFChar: 2002 9561 7 2 6 4 10 TV.sNTV2&[ BDFChar: 2003 9562 7 2 6 3 10 TV.sNTX]OI BDFChar: 2004 9563 7 0 3 3 10 &.fBa&F^8# BDFChar: 2005 9564 7 0 4 4 10 -n$Jl-n+ij BDFChar: 2006 9565 7 0 4 3 10 -n$Jl.-Ls3 BDFChar: 2007 9566 7 3 6 -2 10 J:N0#JFJ*YJ:N0#J,fQL BDFChar: 2008 9567 7 2 6 -2 10 TV.sNTV/ffTV.sNTE"rl BDFChar: 2009 9568 7 2 6 -2 10 TV.sNTX]N^TV.sNTE"rl BDFChar: 2010 9569 7 0 3 -2 10 &.fBa&F^8#&.fBa&-)\1 BDFChar: 2011 9570 7 0 4 -2 10 -n$Jl-n+:--n$Jl-ia5I BDFChar: 2012 9571 7 0 4 -2 10 -n$Jl.-Ls#-n$Jl-ia5I BDFChar: 2013 9572 7 0 6 -2 5 rW)p/&.fBa BDFChar: 2014 9573 7 0 6 -2 4 r[90C-n$JD BDFChar: 2015 9574 7 0 6 -2 5 rW)@7-n$Jl BDFChar: 2016 9575 7 0 6 3 10 &.fBa&H2\/ BDFChar: 2017 9576 7 0 6 4 10 -n$Jl-n,&p BDFChar: 2018 9577 7 0 6 3 10 -n$Jl...*7 BDFChar: 2019 9578 7 0 6 -2 10 &.fBa&H37?&.fBa&-)\1 BDFChar: 2020 9579 7 0 6 -2 10 -n$Jl-n,'C-n$Jl-ia5I BDFChar: 2021 9580 7 0 6 -2 10 -n$Jl...*'-n$Jl-ia5I BDFChar: 2022 9581 7 3 6 -2 4 0L1/=J:N.M BDFChar: 2023 9582 7 0 3 -2 4 ^`X1"&.fBQ BDFChar: 2024 9583 7 0 3 4 10 &.fBa&0Sag BDFChar: 2025 9584 7 3 6 4 10 J:N0#J3Ydg BDFChar: 2026 9585 7 0 6 -2 10 !WiK-#RCta+@&2BJ,fQL BDFChar: 2027 9586 7 0 6 -2 10 J:KmM+ BDFChar: 2038 9597 7 3 4 -2 10 J:N0#J:PGN^qdb$^]4?7 BDFChar: 2039 9598 7 0 6 3 4 rpTmf BDFChar: 2040 9599 7 3 4 -2 10 ^qdb$^qda9J:N0#J,fQL BDFChar: 2041 9600 7 0 6 4 10 rr2orrr2ls BDFChar: 2042 9601 7 0 6 -2 -2 rVuou BDFChar: 2043 9602 7 0 6 -2 0 rr2ls BDFChar: 2044 9603 7 0 6 -2 1 rr2or BDFChar: 2045 9604 7 0 6 -2 4 rr2orrr2ls BDFChar: 2046 9605 7 0 6 -2 5 rr2orrr2or BDFChar: 2047 9606 7 0 5 -2 7 r;?Kjr;?Kjr;6Np BDFChar: 2048 9607 7 0 6 -2 8 rr2orrr2orrr2ls BDFChar: 2049 9608 7 0 6 -2 10 rr2orrr2orrr2orrVuou BDFChar: 2050 9609 7 0 5 -2 10 r;?Kjr;?Kjr;?Kjqu?]s BDFChar: 2051 9610 7 0 4 -2 10 q"XXZq"XXZq"XXZp](9o BDFChar: 2052 9611 7 0 3 -2 10 nF5r:nF5r:nF5r:n,NFg BDFChar: 2053 9612 7 0 3 -2 10 nF5r:nF5r:nF5r:n,NFg BDFChar: 2054 9613 7 0 2 -2 10 i8EPOi8EPOi8EPOhuE`W BDFChar: 2055 9614 7 0 1 -2 10 ^qdb$^qdb$^qdb$^]4?7 BDFChar: 2056 9615 7 0 0 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2057 9616 7 3 6 -2 10 nF5r:nF5r:nF5r:n,NFg BDFChar: 2058 9617 7 0 6 -2 10 La%X!La%X!La%X!L]@DT BDFChar: 2059 9618 7 0 6 -2 10 <2rot<2rot<2rot;ucmu BDFChar: 2060 9619 7 0 6 -2 10 gihIrgihIrgihIrg].U BDFChar: 2096 9663 7 1 5 3 5 peW(5 BDFChar: 2097 9664 7 0 6 1 7 !Y.En4q7Vo BDFChar: 2098 9665 7 0 6 1 7 !Y.!&1(F?c BDFChar: 2099 9666 7 2 4 2 6 +CO,8+92BA BDFChar: 2100 9667 7 2 4 2 6 +CLjM+92BA BDFChar: 2101 9668 7 0 5 2 6 $p=GM$ig8- BDFChar: 2102 9669 7 0 5 2 6 $oGmZ$ig8- BDFChar: 2103 9670 7 0 6 1 7 &3,(:HoMZ; BDFChar: 2104 9671 7 0 6 1 7 &1Bqu6mrTH BDFChar: 2105 9672 7 0 6 1 7 &1CMh<%&:X BDFChar: 2106 9674 7 1 5 0 9 +o] BDFChar: 2133 9705 7 0 6 1 7 rr2cbikkZp BDFChar: 2134 9706 7 0 6 1 7 re?H)^Ae*3 BDFChar: 2135 9707 7 0 6 1 7 rfWG-P*5eE BDFChar: 2136 9708 7 0 6 1 8 &.g6<6r\d; BDFChar: 2137 9709 7 0 6 1 8 &.gf\FEI*Q BDFChar: 2138 9710 7 0 6 1 8 &.gf\>[3m" BDFChar: 2139 9711 7 0 6 1 7 3(/@MJj_Qu BDFChar: 2140 9712 7 0 6 1 7 rfWH8JqEt% BDFChar: 2141 9713 7 0 6 1 7 rdoamP*5eE BDFChar: 2142 9714 7 0 6 1 7 rdo`nP*5eE BDFChar: 2143 9715 7 0 6 1 7 rfWG9JqEt% BDFChar: 2144 9716 7 0 6 1 7 3)l(3Jj_Qu BDFChar: 2145 9717 7 0 6 1 7 3(/AhP#OC@ BDFChar: 2146 9718 7 0 6 1 7 3(/@iP#OC@ BDFChar: 2147 9719 7 0 6 1 7 3)l'4Jj_Qu BDFChar: 2148 9720 7 0 6 1 7 re-)hTYQ'X BDFChar: 2149 9721 7 0 6 1 7 r^%eA$3gP3 BDFChar: 2150 9722 7 0 6 1 7 JA@h>LkPa- BDFChar: 2151 9723 7 0 6 1 7 rdo`RJqEt% BDFChar: 2152 9724 7 0 6 1 7 rr2orrr2ls BDFChar: 2153 9725 7 1 5 2 6 pkX`^p](9o BDFChar: 2154 9726 7 1 5 2 6 q"XXZp](9o BDFChar: 2155 9727 7 0 6 1 7 !X8uE,!u8/ BDFChar: 2156 9737 7 0 6 1 7 3(/@]Jj_Qu BDFChar: 2157 9738 7 0 6 0 8 3(/@MJjcW=6i[2e BDFChar: 2158 9739 7 0 6 0 8 7&m7TJqASB2uipY BDFChar: 2159 9744 7 0 6 0 8 rdo`RJqAT+rVuou BDFChar: 2160 9745 7 0 6 0 8 rdp#bP1$(VrVuou BDFChar: 2161 9746 7 0 6 0 8 rdr.iP,cNRrVuou BDFChar: 2162 9770 7 0 5 0 8 3+0PCgrR9=2uipY BDFChar: 2163 9785 7 0 6 0 8 3(0dHJs*-%2uipY BDFChar: 2164 9786 7 0 6 0 8 3(0dHK#YAi2uipY BDFChar: 2165 9787 7 0 6 0 8 3.0<.rjp*s2uipY BDFChar: 2166 9788 7 0 6 0 8 &<^!@`[FfL&-)\1 BDFChar: 2167 9789 7 1 5 0 8 i(tgM-n$K?huE`W BDFChar: 2168 9790 7 1 5 0 8 3)H9@TV.rS2uipY BDFChar: 2169 9791 7 1 5 -1 8 Lkp#+Lkp!mE$,,\ BDFChar: 2170 9792 7 1 5 0 7 E/9=+E$0*B BDFChar: 2171 9793 7 1 5 1 8 +E/HBLkpk+ BDFChar: 2172 9794 7 1 6 1 8 *"3O#Lkpk+ BDFChar: 2173 9795 7 0 5 0 8 "D!`2,l@cJ"98E% BDFChar: 2174 9796 7 0 5 0 8 5i=n0A4/gR8,rVi BDFChar: 2175 9797 7 0 6 0 8 el7#reds5X&-)\1 BDFChar: 2176 9798 7 0 6 -1 9 &3(5#el5U.&3(4$ BDFChar: 2177 9799 7 1 5 0 8 n;)mVn:6%>p](9o BDFChar: 2178 9800 7 1 5 0 8 :oL=k+>2d+Y6huE`W BDFChar: 2215 9838 7 1 5 -2 8 J:O#caG?4^a9W%O BDFChar: 2216 9839 7 1 5 -1 9 &5ZJJcqmh`cqlt- BDFChar: 2217 9856 7 0 6 0 8 rdo`RP(J:;rVuou BDFChar: 2218 9857 7 0 6 0 8 rdp#ZJqB_KrVuou BDFChar: 2219 9858 7 0 6 0 8 rdp#ZP(KE[rVuou BDFChar: 2220 9859 7 0 6 0 8 rdq/%JqC"SrVuou BDFChar: 2221 9860 7 0 6 0 8 rdq/%P(K]crVuou BDFChar: 2222 9861 7 0 6 0 8 rdq/%We.7&rVuou BDFChar: 2223 10013 7 1 5 0 8 +<^G%+&-)\1 BDFChar: 2245 10133 7 1 5 2 6 +<^G%+92BA BDFChar: 2246 10134 7 1 5 4 4 p](9o BDFChar: 2247 10135 7 1 5 2 6 +9;0:+92BA BDFChar: 2248 10136 7 1 5 0 4 J4M(*GQ7^D BDFChar: 2249 10137 7 1 5 2 6 +;";Z+92BA BDFChar: 2250 10138 7 1 5 0 4 GShi"J,fQL BDFChar: 2251 10139 7 0 5 2 6 &.&1>&-)\1 BDFChar: 2252 10140 7 0 5 2 6 &.&1>&-)\1 BDFChar: 2253 10141 7 0 5 2 6 &/b<^&-)\1 BDFChar: 2254 10142 7 0 5 2 6 &/b<^&-)\1 BDFChar: 2255 10143 7 0 5 2 6 &/`%s&-)\1 BDFChar: 2256 10144 7 0 6 1 7 &/`'o]GM1[ BDFChar: 2257 10145 7 0 6 1 7 &/b?Er"otF BDFChar: 2258 10702 7 0 4 0 9 (he_=(r3A3YeU5= BDFChar: 2259 10703 7 0 4 3 7 -toPm-ia5I BDFChar: 2260 10704 7 0 4 3 7 TWkB!TE"rl BDFChar: 2261 10705 7 0 4 3 7 LtLqDL]@DT BDFChar: 2262 10706 7 0 4 3 7 LtK5iL]@DT BDFChar: 2263 10707 7 0 4 3 7 LtMLTL]@DT BDFChar: 2264 10708 7 0 4 3 7 LsY),L]@DT BDFChar: 2265 10709 7 0 4 3 7 LfcW=L]@DT BDFChar: 2266 10710 7 0 4 3 7 peW)0p](9o BDFChar: 2267 10711 7 0 4 3 7 pi%?pp](9o BDFChar: 2268 10752 7 1 5 2 6 E/:HKDu]k< BDFChar: 2269 10753 7 1 5 2 6 E2`Q1Du]k< BDFChar: 2270 10754 7 1 5 2 6 E7h,ADu]k< BDFChar: 2271 10755 7 1 5 2 6 Lkr!cDu]k< BDFChar: 2272 10756 7 1 5 2 6 W;*sg3 BDFChar: 2295 11031 7 0 6 1 7 &3*pd>W<8p BDFChar: 2296 11032 7 0 6 1 7 &3,(:6mrTH BDFChar: 2297 11033 7 0 6 1 7 &1BsGHoMZ; BDFChar: 2298 11052 7 0 6 2 6 I/a-EHiO-H BDFChar: 2299 11053 7 0 6 2 6 I"Hs%HiO-H BDFChar: 2300 11054 7 1 5 1 7 E;95'q"Se. BDFChar: 2301 11055 7 1 5 1 7 E/9=+Lkp!M BDFChar: 2302 42800 7 1 5 0 6 pjdnaJ:N.M BDFChar: 2303 42801 7 1 5 0 6 G^t<`#RKo" BDFChar: 2304 65148 7 0 0 0 0 z BDFChar: 2305 65149 7 0 0 0 0 z BDFChar: 2306 65150 7 0 0 0 0 z BDFChar: 2307 65151 7 0 0 0 0 z BDFChar: 2308 65152 7 0 0 0 0 z BDFChar: 2309 65153 7 0 0 0 0 z BDFChar: 2310 65154 7 0 0 0 0 z BDFChar: 2311 65155 7 0 0 0 0 z BDFChar: 2312 65156 7 0 0 0 0 z BDFChar: 2313 65157 7 0 0 0 0 z BDFChar: 2314 65158 7 0 0 0 0 z BDFChar: 2315 65159 7 0 0 0 0 z BDFChar: 2316 65160 7 0 0 0 0 z BDFChar: 2317 65161 7 0 0 0 0 z BDFChar: 2318 65162 7 0 0 0 0 z BDFChar: 2319 65163 7 0 0 0 0 z BDFChar: 2320 65164 7 0 0 0 0 z BDFChar: 2321 65165 7 0 0 0 0 z BDFChar: 2322 65166 7 0 0 0 0 z BDFChar: 2323 65167 7 0 0 0 0 z BDFChar: 2324 65168 7 0 0 0 0 z BDFChar: 2325 65169 7 0 0 0 0 z BDFChar: 2326 65170 7 0 0 0 0 z BDFChar: 2327 65171 7 0 0 0 0 z BDFChar: 2328 65172 7 0 0 0 0 z BDFChar: 2329 65173 7 0 0 0 0 z BDFChar: 2330 65174 7 0 0 0 0 z BDFChar: 2331 65175 7 0 0 0 0 z BDFChar: 2332 65176 7 0 0 0 0 z BDFChar: 2333 65177 7 0 0 0 0 z BDFChar: 2334 65178 7 0 0 0 0 z BDFChar: 2335 65179 7 0 0 0 0 z BDFChar: 2336 65180 7 0 0 0 0 z BDFChar: 2337 65181 7 0 0 0 0 z BDFChar: 2338 65182 7 0 0 0 0 z BDFChar: 2339 65183 7 0 0 0 0 z BDFChar: 2340 65184 7 0 0 0 0 z BDFChar: 2341 65185 7 0 0 0 0 z BDFChar: 2342 65186 7 0 0 0 0 z BDFChar: 2343 65187 7 0 0 0 0 z BDFChar: 2344 65188 7 0 0 0 0 z BDFChar: 2345 65189 7 0 0 0 0 z BDFChar: 2346 65190 7 0 0 0 0 z BDFChar: 2347 65191 7 0 0 0 0 z BDFChar: 2348 65192 7 0 0 0 0 z BDFChar: 2349 65193 7 0 0 0 0 z BDFChar: 2350 65194 7 0 0 0 0 z BDFChar: 2351 65195 7 0 0 0 0 z BDFChar: 2352 65196 7 0 0 0 0 z BDFChar: 2353 65197 7 0 0 0 0 z BDFChar: 2354 65198 7 0 0 0 0 z BDFChar: 2355 65199 7 0 0 0 0 z BDFChar: 2356 65200 7 0 0 0 0 z BDFChar: 2357 65201 7 0 0 0 0 z BDFChar: 2358 65202 7 0 0 0 0 z BDFChar: 2359 65203 7 0 0 0 0 z BDFChar: 2360 65204 7 0 0 0 0 z BDFChar: 2361 65205 7 0 0 0 0 z BDFChar: 2362 65206 7 0 0 0 0 z BDFChar: 2363 65207 7 0 0 0 0 z BDFChar: 2364 65208 7 0 0 0 0 z BDFChar: 2365 65209 7 0 0 0 0 z BDFChar: 2366 65210 7 0 0 0 0 z BDFChar: 2367 65211 7 0 0 0 0 z BDFChar: 2368 65212 7 0 0 0 0 z BDFChar: 2369 65213 7 0 0 0 0 z BDFChar: 2370 65214 7 0 0 0 0 z BDFChar: 2371 65215 7 0 0 0 0 z BDFChar: 2372 65216 7 0 0 0 0 z BDFChar: 2373 65217 7 0 0 0 0 z BDFChar: 2374 65218 7 0 0 0 0 z BDFChar: 2375 65219 7 0 0 0 0 z BDFChar: 2376 65220 7 0 0 0 0 z BDFChar: 2377 65221 7 0 0 0 0 z BDFChar: 2378 65222 7 0 0 0 0 z BDFChar: 2379 65223 7 0 0 0 0 z BDFChar: 2380 65224 7 0 0 0 0 z BDFChar: 2381 65225 7 0 0 0 0 z BDFChar: 2382 65226 7 0 0 0 0 z BDFChar: 2383 65227 7 0 0 0 0 z BDFChar: 2384 65228 7 0 0 0 0 z BDFChar: 2385 65229 7 0 0 0 0 z BDFChar: 2386 65230 7 0 0 0 0 z BDFChar: 2387 65231 7 0 0 0 0 z BDFChar: 2388 65232 7 0 0 0 0 z BDFChar: 2389 65233 7 0 0 0 0 z BDFChar: 2390 65234 7 0 0 0 0 z BDFChar: 2391 65235 7 0 0 0 0 z BDFChar: 2392 65236 7 0 0 0 0 z BDFChar: 2393 65237 7 0 0 0 0 z BDFChar: 2394 65238 7 0 0 0 0 z BDFChar: 2395 65239 7 0 0 0 0 z BDFChar: 2396 65240 7 0 0 0 0 z BDFChar: 2397 65241 7 0 0 0 0 z BDFChar: 2398 65242 7 0 0 0 0 z BDFChar: 2399 65243 7 0 0 0 0 z BDFChar: 2400 65244 7 0 0 0 0 z BDFChar: 2401 65245 7 0 0 0 0 z BDFChar: 2402 65246 7 0 0 0 0 z BDFChar: 2403 65247 7 0 0 0 0 z BDFChar: 2404 65248 7 0 0 0 0 z BDFChar: 2405 65249 7 0 0 0 0 z BDFChar: 2406 65250 7 0 0 0 0 z BDFChar: 2407 65251 7 0 0 0 0 z BDFChar: 2408 65252 7 0 0 0 0 z BDFChar: 2409 65253 7 0 0 0 0 z BDFChar: 2410 65254 7 0 0 0 0 z BDFChar: 2411 65255 7 0 0 0 0 z BDFChar: 2412 65256 7 0 0 0 0 z BDFChar: 2413 65257 7 0 0 0 0 z BDFChar: 2414 65258 7 0 0 0 0 z BDFChar: 2415 65259 7 0 0 0 0 z BDFChar: 2416 65260 7 0 0 0 0 z BDFChar: 2417 65261 7 0 0 0 0 z BDFChar: 2418 65262 7 0 0 0 0 z BDFChar: 2419 65263 7 0 0 0 0 z BDFChar: 2420 65264 7 0 0 0 0 z BDFChar: 2421 65265 7 0 0 0 0 z BDFChar: 2422 65266 7 0 0 0 0 z BDFChar: 2423 65267 7 0 0 0 0 z BDFChar: 2424 65268 7 0 0 0 0 z BDFChar: 2425 65269 7 0 0 0 0 z BDFChar: 2426 65270 7 0 0 0 0 z BDFChar: 2427 65271 7 0 0 0 0 z BDFChar: 2428 65272 7 0 0 0 0 z BDFChar: 2429 65273 7 0 0 0 0 z BDFChar: 2430 65274 7 0 0 0 0 z BDFChar: 2431 65275 7 0 0 0 0 z BDFChar: 2432 65276 7 0 0 0 0 z BDFChar: 2433 65533 7 0 5 0 8 r62P?m+hNoqu?]s BDFChar: 2434 686 7 0 5 0 9 J4)dn6psF*"9\]) BDFChar: 2435 687 7 0 6 -2 9 J4)dn6psF*"9\i/ BDFChar: 2436 1320 7 0 5 -1 8 6psF2Hpg@j7">7; BDFChar: 2437 1321 7 0 5 -1 6 6psFj6psFn BDFChar: 2438 1326 7 0 6 -2 8 Hpg@j6psF2L&qDV BDFChar: 2439 1327 7 1 6 -2 6 GXt@r84\[B"98E% BDFChar: 2440 8251 7 0 6 2 8 &4@q0-q"UH BDFChar: 2441 8268 7 2 5 3 7 :sdS9:]LIq BDFChar: 2442 8269 7 1 4 3 7 TWkZ)TE"rl BDFChar: 2443 8277 7 1 5 3 7 W,VNNVuQet BDFChar: 2444 8278 7 1 4 3 7 &-.4\&-)\1 BDFChar: 2445 8280 7 1 5 3 7 +972t+92BA BDFChar: 2446 8281 7 1 5 3 7 L]AOtL]@DT BDFChar: 2447 8282 7 3 3 2 8 J,fQL!!%NL BDFChar: 2448 8283 7 1 5 2 8 +92Ct!!",A BDFChar: 2449 8284 7 0 6 2 8 &6'5?&6'2@ BDFChar: 2450 8285 7 3 3 2 8 J,fS"!!%NL BDFChar: 2451 8286 7 3 3 2 8 J,k*"J,k*" BDFChar: 2452 8352 7 0 5 0 8 @"=c/OIU8$)uos= BDFChar: 2453 8353 7 0 5 -1 9 &3NdNOH>Qc:co9h BDFChar: 2454 8354 7 0 5 0 8 4@"FUOH>Ph49,?] BDFChar: 2455 8355 7 0 5 0 8 HpBq^GX+OP5QCca BDFChar: 2456 8356 7 1 5 0 8 3']au5k%$(p](9o BDFChar: 2457 8357 7 0 6 0 6 -ra5PFOX7i BDFChar: 2458 8358 7 0 6 0 8 6ptSb<;oQZ6i[2e BDFChar: 2459 8360 7 0 6 0 8 i/j7lkes3YS,`Nh BDFChar: 2460 8361 7 0 6 0 8 7/fUR6r[-%6i[2e BDFChar: 2461 8362 7 0 6 0 8 nqr=)WiDefScA`j BDFChar: 2462 8363 7 1 6 -2 8 #TO+pLkpkCGQ@L= BDFChar: 2463 8365 7 0 5 0 8 6qC-^r*W>l6i[2e BDFChar: 2464 8367 7 0 6 -2 8 i)!6H:fLV%X9](3 BDFChar: 2465 8409 7 0 0 0 0 z BDFChar: 2466 8453 7 0 5 0 9 @"L]@DT BDFChar: 2472 8491 7 1 5 0 10 +Aa2"Lkth^Lkpie BDFChar: 2473 8512 7 0 5 0 8 r1Hk_-rN.YUnjfbn,NFg BDFChar: 2475 8518 7 0 5 0 8 *#*LZPa%DsHiO-H BDFChar: 2476 8519 7 0 5 0 6 Gbh.JTV-Z4 BDFChar: 2477 8520 7 2 4 0 9 5X5>-TV.sNT\oeM BDFChar: 2478 8521 7 1 5 -2 9 &.eh$-n$Jl-n$M5 BDFChar: 2479 8530 7 0 5 -2 10 5eoWM5R]?^8CUU<8,rVi BDFChar: 2480 8602 7 0 6 3 7 +@Q3"+92BA BDFChar: 2481 8603 7 0 6 3 7 #UKC;#QOi) BDFChar: 2482 8604 7 0 6 3 7 nAM?*&-)\1 BDFChar: 2483 8605 7 0 6 3 7 *_*.Z&-)\1 BDFChar: 2484 8606 7 0 6 3 7 -rBn>-ia5I BDFChar: 2485 8607 7 1 5 2 8 +E48uW$!2_ BDFChar: 2486 8608 7 0 6 3 7 -kuXp-ia5I BDFChar: 2487 8609 7 1 5 2 8 +<[V%W,NjZ BDFChar: 2488 8619 7 0 6 3 8 "=d%A814H< BDFChar: 2489 8620 7 0 6 3 8 5cCK-,U`Wm BDFChar: 2490 8632 7 0 5 2 8 quCtL:e1]h BDFChar: 2491 8666 7 0 6 2 8 &3`AY5X#_Z BDFChar: 2492 8667 7 0 6 2 8 &GQD-"S`N. BDFChar: 2493 8682 7 1 5 1 8 +E5t0:iK6M BDFChar: 2494 8683 7 1 5 1 8 +E5t0:tUU! BDFChar: 2495 8688 7 0 6 3 7 ke)Y_kPtS_ BDFChar: 2496 8689 7 0 6 2 8 rd_YcW2+qD BDFChar: 2497 8690 7 0 6 2 8 !_Op\H34'G BDFChar: 2498 8692 7 0 6 3 7 #UJ7P#QOi) BDFChar: 2499 8695 7 0 6 3 7 -qO>.-ia5I BDFChar: 2500 8696 7 0 6 3 7 -m\d;-ia5I BDFChar: 2501 8697 7 0 6 3 7 <0I6D;ucmu BDFChar: 2502 8698 7 0 6 3 7 .SB\4.KBGK BDFChar: 2503 8699 7 0 6 3 7 W20EgVuQet BDFChar: 2504 8701 7 0 6 3 7 +CMok+92BA BDFChar: 2505 8702 7 0 6 3 7 #RpP<#QOi) BDFChar: 2506 8703 7 0 6 3 7 -u?J2-ia5I BDFChar: 2507 8718 7 1 5 0 6 q"XXZq"XUa BDFChar: 2508 8720 7 1 5 0 8 LkpkCLkpkCp](9o BDFChar: 2509 8725 7 1 5 0 9 #RCtQ+o#QOi) BDFChar: 2521 8762 7 1 5 2 6 L]I2ML]@DT BDFChar: 2522 8763 7 0 5 1 6 &--7.!"],1 BDFChar: 2523 8764 7 0 5 3 4 A=*>s BDFChar: 2524 8765 7 0 5 3 4 Qt-0s BDFChar: 2525 8766 7 0 6 3 7 "CdOQ5QCca BDFChar: 2526 8767 7 1 5 2 8 5bObm-n#W, BDFChar: 2527 8768 7 2 3 0 7 J3Z@bJ:N/8 BDFChar: 2528 8769 7 0 5 2 5 &9PE) BDFChar: 2529 8772 7 0 5 1 6 &9PE)r'15^ BDFChar: 2530 8777 7 0 5 0 6 &9O9nA@N`^ BDFChar: 2531 8778 7 0 5 0 6 A=*@-QiR$a BDFChar: 2532 8779 7 0 5 0 7 A=*@-QiLZa BDFChar: 2533 8780 7 0 5 1 6 Qt-3p!;lfs BDFChar: 2534 8822 7 1 5 0 9 (gql%(r.g20YdYg BDFChar: 2535 8823 7 1 5 0 9 ^b?$J^_gI0?l/kD BDFChar: 2536 8847 7 1 5 1 6 pjdmFJG9*E BDFChar: 2537 8848 7 1 5 1 6 p]q-2#l"B" BDFChar: 2538 8849 7 1 5 0 7 pjdmFJG9-> BDFChar: 2539 8850 7 1 5 0 7 p]q-2#l"Dp BDFChar: 2540 8851 7 1 5 1 6 pkX`^Lkl$2 BDFChar: 2541 8852 7 1 5 1 6 LkpkCM"grM BDFChar: 2542 8853 7 0 6 1 7 3(/q@P!h80 BDFChar: 2543 8854 7 0 6 1 7 3(/A0Jj_Qu BDFChar: 2544 8855 7 0 6 1 7 3(0d0W^JfH BDFChar: 2545 8856 7 0 6 1 7 3(/XeU-ps@ BDFChar: 2546 8857 7 0 6 1 7 3(/@]Jj_Qu BDFChar: 2547 8858 7 0 6 1 7 3(/q0P!h80 BDFChar: 2548 8860 7 0 6 1 7 3(1?0\jSLX BDFChar: 2549 8861 7 0 6 1 7 3(/A0Jj_Qu BDFChar: 2550 8862 7 0 6 1 7 rdpJ:N.M BDFChar: 2555 8871 7 2 5 1 7 J:R->n:6#h BDFChar: 2556 8872 7 0 5 1 7 J:RQJr.':t BDFChar: 2557 8873 7 0 5 1 7 TV.sjTV.qX BDFChar: 2558 8874 7 0 6 1 7 W2QYtW2QWp BDFChar: 2559 8875 7 0 5 1 7 TV/rj]V(nt BDFChar: 2560 8876 7 0 5 1 7 Lkq/jOJ&6H BDFChar: 2561 8877 7 0 5 1 7 Lkttjr1K\_ BDFChar: 2562 8882 7 0 5 2 6 $oGmZ$ig8- BDFChar: 2563 8883 7 0 5 2 6 ^p&d%^]4?7 BDFChar: 2564 8884 7 0 5 0 6 $oGmZ$ip2* BDFChar: 2565 8885 7 0 5 0 6 ^p&d%^]=94 BDFChar: 2566 8886 7 0 6 3 5 7(u%h BDFChar: 2567 8887 7 0 6 3 5 7/B:O BDFChar: 2568 8888 7 0 6 3 5 "Sr6$ BDFChar: 2569 8891 7 0 4 1 8 Lknl(+J:N0#J:N0#J,fQL BDFChar: 2589 9122 7 3 3 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2590 9123 7 3 6 -2 10 J:N0#J:N0#J:N0#n,NFg BDFChar: 2591 9124 7 0 3 -2 10 n.6-B&.fBa&.fBa&-)\1 BDFChar: 2592 9125 7 3 3 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2593 9126 7 0 3 -2 10 &.fBa&.fBa&.fBan,NFg BDFChar: 2594 9127 7 3 6 -2 10 0L1/=J:N0#J:N0#J,fQL BDFChar: 2595 9128 7 0 3 -2 10 &.fBa&0Sb2&.fBa&-)\1 BDFChar: 2596 9129 7 3 6 -2 10 J:N0#J:N0#J:N/80E;(Q BDFChar: 2597 9130 7 3 3 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2598 9131 7 0 3 -2 10 ^`X1"&.fBa&.fBa&-)\1 BDFChar: 2599 9132 7 3 6 -2 10 J:N0#J3YeRJ:N0#J,fQL BDFChar: 2600 9133 7 0 3 -2 10 &.fBa&.fBa&.fBq^]4?7 BDFChar: 2601 9134 7 3 3 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2602 9230 7 0 5 -1 9 G^s`=n,PF96ps!7 BDFChar: 2603 9231 7 0 4 -1 9 G^s`=n,PEZ&.gf$ BDFChar: 2604 9620 7 0 6 9 10 rr)lt BDFChar: 2605 9621 7 6 6 -2 10 J:N0#J:N0#J:N0#J,fQL BDFChar: 2606 9673 7 0 6 1 7 3(1?h\jSLX BDFChar: 2607 9677 7 0 6 1 7 3,GUpWbaWp BDFChar: 2608 9678 7 0 6 1 7 3(/q0P!h80 BDFChar: 2609 9728 7 0 6 0 8 &<^!Pr]!l?&-)\1 BDFChar: 2610 9730 7 0 6 0 9 &:FKV&.fBa:`o`< BDFChar: 2611 9733 7 0 6 2 9 &.gi#HoPq1 BDFChar: 2612 9734 7 0 6 2 9 &.g806n!FN BDFChar: 2613 9742 7 0 6 0 8 I)`aFmagh*rVuou BDFChar: 2614 9743 7 0 6 0 8 I)``cP,a[srVuou BDFChar: 2615 9872 7 0 5 0 8 r.pGjr.'5I BDFChar: 60 91 9 2 5 -1 11 n:6%>J:N0#J:N0#n,NFg BDFChar: 61 92 9 1 6 0 11 J:KmM+J:N0#J:%n> BDFChar: 99 163 9 1 6 0 10 *$@L35k%$(5X>5I BDFChar: 100 164 9 0 6 1 7 \jV.%Jjd0M BDFChar: 101 165 9 0 6 0 10 Jq?BY-n'HSHk6hh BDFChar: 102 166 9 3 3 0 12 J:N0#J:IWMJ:N0#J,fQL BDFChar: 103 167 9 1 6 -3 10 I"6`tE/91#6oY;P"S_rs BDFChar: 104 168 9 2 5 11 11 O8o7\ BDFChar: 105 169 9 0 7 1 10 4@5U4TqS0N69G5J BDFChar: 106 170 9 1 5 5 10 E!U]ELj/n" BDFChar: 107 171 9 1 7 2 8 &gU#080efJ BDFChar: 108 172 9 1 6 3 7 qud-*"98E% BDFChar: 109 173 9 2 6 5 5 p](9o BDFChar: 110 174 9 0 7 1 10 4@6TTV7ES%69G5J BDFChar: 111 175 9 2 5 12 12 n,NFg BDFChar: 112 176 9 1 4 7 10 @$$IX BDFChar: 113 177 9 0 6 1 9 &.fEP&.fBQrVuou BDFChar: 114 178 9 2 5 6 11 i"-GB5k"aR BDFChar: 115 179 9 2 5 6 11 i"09-&E!Ng BDFChar: 116 180 9 2 3 10 11 5_&h7 BDFChar: 117 181 9 1 6 -3 7 KS5#3KS7RVJ:N.M BDFChar: 118 182 9 1 6 0 10 I.[('o^m5>'GM5] BDFChar: 119 183 9 3 4 4 5 ^q]pM BDFChar: 120 184 9 2 4 -3 -1 5TmiB BDFChar: 121 185 9 2 4 6 11 +CLib+Q[KS6jcJ,fQL BDFChar: 160 224 9 1 6 0 11 5Tg%,GQ\.sKS5#+ BDFChar: 161 225 9 1 6 0 11 #S6t9GQ\.sKS5#+ BDFChar: 162 226 9 1 6 0 11 &1@MYGQ\.sKS5#+ BDFChar: 163 227 9 1 6 0 10 A=*@A"9a+*KS4^Q BDFChar: 164 228 9 1 6 0 10 8,rX7"9a+*KS4^Q BDFChar: 165 229 9 1 6 0 11 0M!ktGQ\.sKS5#+ BDFChar: 166 230 9 0 6 0 7 HkI'>OH>QQ BDFChar: 167 231 9 1 6 -3 7 I"6`tJ:N/t&-sri BDFChar: 168 232 9 1 6 0 11 5Tg%,G_Ca'r.'LkLG7M"#qFJ,fQL BDFChar: 191 255 9 1 6 -3 10 8,rXCKS5#3KS4^U"S_rs BDFChar: 192 256 9 1 6 0 12 GQ;uAKS5$VKS5#3KE(uP BDFChar: 193 257 9 1 6 0 9 GQ;sk"FPlUKRJ:N0#J:N0#HiO-H BDFChar: 203 267 9 1 6 0 9 +96e>J:N0#J:%=s BDFChar: 204 268 9 1 6 0 12 -kHB+J:N0#J:N0#HiO-H BDFChar: 205 269 9 1 6 0 11 -kH@YI"6`tJ:N/t BDFChar: 206 270 9 1 6 0 12 :`oc-LkLG7KS5#7n,NFg BDFChar: 207 271 9 0 7 0 10 "U,'WKS5#3KS4^Q BDFChar: 208 272 9 0 6 0 10 GXOkb6LmH06:?%u BDFChar: 209 273 9 1 7 0 10 "KS98RJ:%=s BDFChar: 216 280 9 1 6 -3 10 r.'J:N0?KS5#3GQ7^D BDFChar: 225 289 9 1 6 -3 9 +96eBKS5#3KR$#&.fBQ BDFChar: 295 359 9 1 6 0 10 5X7U05X>*05X7F3 BDFChar: 296 360 9 1 6 0 12 A=*@MKS5#3KS5#3GQ7^D BDFChar: 297 361 9 1 6 0 10 A=*@MKS5#3KS4RM BDFChar: 298 362 9 1 6 0 12 GQZ,!7%n+sK,L BDFChar: 322 386 9 1 6 0 10 pjdmFJG=eNKS9+# BDFChar: 323 387 9 1 6 0 10 pjdniKS5#3KS9+# BDFChar: 324 388 9 0 6 0 10 5et0#5^Ymb6:-&" BDFChar: 325 389 9 0 6 0 10 5et0_6:+"*6:-&" BDFChar: 326 390 9 1 6 0 10 p]L^&"9\i1"9eK" BDFChar: 327 391 9 1 6 0 12 $kRf:J:N0#J:N0#HiO-H BDFChar: 328 392 9 1 6 0 9 $kRf:J:N0#J:%=s BDFChar: 329 393 9 0 6 0 10 GXOkb6LmH06:?%u BDFChar: 330 394 9 0 6 0 10 Gbh&X+sJ3T+s],J BDFChar: 331 395 9 1 6 0 10 HisQT"FPlUKS4^Q BDFChar: 332 396 9 1 6 0 10 HisS"KS5#3KS4^Q BDFChar: 333 397 9 1 6 0 10 G_Ca'KL@4"#RGAL BDFChar: 334 398 9 1 6 0 10 qud-*"FL=T"9eW& BDFChar: 335 399 9 1 6 0 10 p]L^&"T3q+KS4RM BDFChar: 336 400 9 1 6 0 10 I"6`tJ9ZTpJ:N"I BDFChar: 337 401 9 0 7 -2 10 59M'k+?gnj+c*KS5#3`41>JJ,fQL BDFChar: 358 422 9 1 6 -1 10 J:REJKS9-9TTFs4 BDFChar: 359 423 9 1 6 0 10 p]L^&#V\MoJ:N"I BDFChar: 360 424 9 1 6 0 7 p]L^:@"\KS5#3HisRs BDFChar: 373 437 9 1 6 0 10 qud92&H!Xn5X>5I BDFChar: 374 438 9 1 6 0 7 qud<'+@(JT BDFChar: 375 439 9 1 6 0 10 qud9:0F.da"Gh!s BDFChar: 376 440 9 1 6 0 10 r.%$T0L1/=J4)?s BDFChar: 377 441 9 1 6 -3 7 r.%$T0L1/=J4)?s BDFChar: 378 442 9 1 6 -3 7 qud9:3!9A/J:MkE BDFChar: 379 443 9 1 6 0 10 p]L^&#lGf1J:ROt BDFChar: 380 444 9 1 6 0 10 r.'He$ BDFChar: 395 459 9 0 7 -3 10 Ll'3rWMukbR>Hb$!T;ZKS5#3KS5#3GQ7^D BDFChar: 408 472 9 1 6 0 12 #S6u,!/-#YKS5#3GQ7^D BDFChar: 409 473 9 1 6 0 12 :`tPoKS5#3KS5#3GQ7^D BDFChar: 410 474 9 1 6 0 10 :`tPoKS5#3KS4RM BDFChar: 411 475 9 1 6 0 12 +HukZKS5#3KS5#3GQ7^D BDFChar: 412 476 9 1 6 0 12 5Tg%t!/-#YKS5#3GQ7^D BDFChar: 413 477 9 1 6 0 7 p]L`tKS5#' BDFChar: 414 478 9 1 6 0 12 GQ:87G_Ca'r.K`VKE(uP BDFChar: 415 479 9 1 6 0 11 GQ:87GQ\.sKS5#+ BDFChar: 416 480 9 1 6 0 12 GQ8idG_Ca'r.K`VKE(uP BDFChar: 417 481 9 1 6 0 11 GQ8idGQ\.sKS5#+ BDFChar: 418 482 9 0 7 0 12 490keLkpldLkpkCNrT.[ BDFChar: 419 483 9 0 6 0 9 HiSO,&q#e&OF@00 BDFChar: 420 484 9 1 7 0 10 I"6`tJ=M:aKS4RM BDFChar: 421 485 9 1 7 -3 7 I"[0+KS4^U*X)6< BDFChar: 422 486 9 1 6 0 12 :`oacJ:N0?KS5#3GQ7^D BDFChar: 423 487 9 1 6 -3 10 :`oacKS5#3KS4^U"S_rs BDFChar: 424 488 9 1 6 0 12 :`oakLle:F^n?dFKE(uP BDFChar: 425 489 9 1 6 0 12 :`oagJ:r`?T\tofKE(uP BDFChar: 426 490 9 1 6 -3 10 G_Ca'KS5#3KS4Rm5VN0< BDFChar: 427 491 9 1 6 -3 7 G_Ca'KS5#'+@%U\ BDFChar: 428 492 9 1 6 -3 12 GQ;uAKS5#3KS5#3GT]7* BDFChar: 429 493 9 1 6 -3 9 GQ;uAKS5#3KQnV)0E;(Q BDFChar: 430 494 9 1 6 0 12 :`oc9":,Pm#Qt9dDu]k< BDFChar: 431 495 9 1 6 -3 11 :`o`2 BDFChar: 434 498 9 0 7 0 10 i/j%eOcbfiPa(>2 BDFChar: 435 499 9 0 7 0 10 &.fCsOcbfiPa$@l BDFChar: 436 500 9 1 6 0 12 #S6u`J:N0?KS5#3GQ7^D BDFChar: 437 501 9 1 6 -3 11 #S6t9I"[0+KS5#+"9eK" BDFChar: 438 502 9 0 7 0 10 LkpnEM>OH>QQ BDFChar: 446 510 9 0 7 0 12 #S6tu6UF77;IVu049,?] BDFChar: 447 511 9 0 7 0 11 ":+u-4[MV1;IVu* BDFChar: 448 512 9 1 6 0 12 O@T@rKS5$VKS5#3KE(uP BDFChar: 449 513 9 1 6 0 11 O@T?OGQ\.sKS5#+ BDFChar: 450 514 9 1 6 0 12 0Lu1gKS5$VKS5#3KE(uP BDFChar: 451 515 9 1 6 0 10 0Lu1g"9a+*KS4^Q BDFChar: 452 516 9 1 6 0 12 O@TBLJ:N1FJ:N0#qu?]s BDFChar: 453 517 9 1 6 0 11 O@T?OG_Ca'r.'5M(]XO9 BDFChar: 485 549 9 1 6 -2 7 qud9:+@(JT";h+= BDFChar: 486 550 9 1 6 0 12 +96Y>KS5$VKS5#3KE(uP BDFChar: 487 551 9 1 6 0 9 +96Wh"FPlUKRKS5#3KS5#3GQ7^D BDFChar: 495 559 9 1 6 0 9 +96Y>KS5#3KQmIs BDFChar: 496 560 9 1 6 0 12 GQ8idG_Ca'KS5#3GQ7^D BDFChar: 497 561 9 1 6 0 11 GQ8idG_Ca'KS5#' BDFChar: 498 562 9 0 6 0 12 490tb6prFO&.fBa&-)\1 BDFChar: 499 563 9 1 6 -3 9 GQQsTV.s*5X5;L BDFChar: 508 572 9 1 6 -2 9 #RGg>OH?-.TR9!i BDFChar: 509 573 9 0 6 0 10 5X7S"5i=mm5X9bu BDFChar: 510 574 9 0 6 -1 11 !r`lN(_@640MkT-J,fQL BDFChar: 511 575 9 1 6 -3 7 I"6`T(^(!:+:nq] BDFChar: 512 576 9 1 6 -3 7 qud9:+@(Im+:nq] BDFChar: 513 577 9 1 6 0 10 G_?2&"9\ie+ BDFChar: 529 593 9 1 6 0 7 FGtm+KS5;+ BDFChar: 530 594 9 1 6 0 7 \AX&RKS7:R BDFChar: 531 595 9 1 6 0 10 @"QQ BDFChar: 567 631 9 0 6 0 7 3(/@MP*1uE BDFChar: 568 632 9 0 6 -3 10 &.fC4<0EE-P#OCP&.egA BDFChar: 569 633 9 1 6 0 7 "9\i1"9]/* BDFChar: 570 634 9 1 6 0 10 "9\i1"9\i1":Xo& BDFChar: 571 635 9 1 8 -3 7 "9\i1"9]/*"9\f, BDFChar: 572 636 9 1 6 -3 7 ]YK&JJ:N0#J:N.M BDFChar: 573 637 9 1 6 -3 7 ]YK&JJ:N0#J:M#- BDFChar: 574 638 9 1 6 0 7 4?u.s5X7Tm BDFChar: 575 639 9 1 6 0 7 n-B:*#RC\U BDFChar: 576 640 9 1 6 0 7 pk45I BDFChar: 672 919 9 1 6 0 10 KS5#3K`$LVKS5!Y BDFChar: 673 920 9 1 6 0 10 G_Ca'KX?DcKS4RM BDFChar: 674 921 9 1 5 0 10 p`L\%+!X&K' BDFChar: 744 993 9 1 6 -3 8 ^`X1"-n&%oU]^f' BDFChar: 745 994 9 0 6 -3 10 7"U#BJs):[P*0Va#VZ5Y BDFChar: 746 995 9 0 6 -3 7 7"U#BP*1uE":-[] BDFChar: 747 996 9 1 6 -3 10 7"g5HKS5#3KM43*"9\]) BDFChar: 748 997 9 1 6 -3 7 7"g5HKS3#U"9\i- BDFChar: 749 998 9 1 6 -3 10 J:N0SaFo5"KS5!]#VZ5Y BDFChar: 750 999 9 1 7 0 7 HA%6!"9_9" BDFChar: 751 1000 9 1 6 -3 10 n-B."":,8E+@(I-5Wf#H BDFChar: 752 1001 9 1 6 -3 7 p]L^*&0O5gJ3Z3s BDFChar: 753 1002 9 0 6 0 10 `[E5H&.g6<6q%"S BDFChar: 754 1003 9 0 6 0 7 `[DB0-n%L_ BDFChar: 755 1004 9 0 6 0 10 !^&_u\AWuNJj_Qu BDFChar: 756 1005 9 1 6 0 10 "?8YsYfMKNKLdcs BDFChar: 757 1006 9 0 6 0 10 &.ni(&.fBa&.fBQ BDFChar: 758 1007 9 1 5 0 10 +<^HX+LkLG7KS],JJ:IV" BDFChar: 768 1017 9 1 6 0 10 4@"FIJ:N0#J3Z3s BDFChar: 769 1018 9 0 6 0 10 JqD"^WiD5FJqARS BDFChar: 770 1019 9 0 6 -3 7 K#XgRJqAT+J:N.M BDFChar: 771 1020 9 0 6 -3 7 (aMF76:,3b5i=m- BDFChar: 772 1021 9 1 6 0 10 p]L^&"9\i1"9eK" BDFChar: 773 1022 9 1 6 0 10 I"6`tJ<5;3J:N"I BDFChar: 774 1023 9 1 6 0 10 p]L^&"=+*Q"9eK" BDFChar: 775 1024 9 1 6 0 12 5Tg()J:N1FJ:N0#qu?]s BDFChar: 776 1025 9 1 6 0 12 8-&R^n?dFKE(uP BDFChar: 788 1037 9 1 6 0 12 5Tk`=N0KR&Ur:3)KE(uP BDFChar: 789 1038 9 1 6 -3 10 82($sKS5#3KS4^U"S_rs BDFChar: 790 1039 9 0 6 -2 10 JqAT+JqAT+JqEt5&-)\1 BDFChar: 791 1040 9 0 6 0 10 &.g6<-q$INJqARS BDFChar: 792 1041 9 1 6 0 10 pjdmFJG=eNKS9+# BDFChar: 793 1042 9 1 6 0 10 pk4cG7/hdi BDFChar: 796 1045 9 1 6 0 10 r.')aPU>hoAU8".X BDFChar: 822 1071 9 1 6 0 10 I"[0+KR=1B,Xd:c BDFChar: 823 1072 9 1 6 0 7 GQ\.sKS5#+ BDFChar: 824 1073 9 1 6 0 10 3'`"EYfMKNKLdcs BDFChar: 825 1074 9 1 6 0 7 pk4=qKS5$R BDFChar: 826 1075 9 1 6 0 7 r.')b;U8"BP BDFChar: 854 1103 9 1 6 0 7 I"[0+HmD+5 BDFChar: 855 1104 9 1 6 0 11 5Tg%,G_Ca'r.'rTh BDFChar: 885 1134 9 1 6 -3 12 :`oc5"9\jP"9\i1G^t<)cgV&.fBQ BDFChar: 888 1137 9 0 6 -3 8 &.k"fP#PC[3"QW4 BDFChar: 889 1138 9 1 6 0 10 G_Ca'K`$LVKS4RM BDFChar: 890 1139 9 1 6 0 7 G_CbJKS5#' BDFChar: 891 1140 9 0 7 0 10 K7nnG6qA^S-kHpi BDFChar: 892 1141 9 0 7 0 7 K7lW\-n#W< BDFChar: 893 1142 9 0 7 0 12 80e1fKLA4!-n$JT&-)\1 BDFChar: 894 1143 9 0 7 0 10 80e1fKLA3V-kHpi BDFChar: 895 1144 9 0 7 -3 10 @$$J8Q'IW"Q'Gh[!gB"clcFU BDFChar: 906 1162 9 1 7 -3 12 82($sN/X!cUnkrIKE;8^ BDFChar: 907 1163 9 1 7 -3 10 82(%&N0KR&Ur:1Q":+u- BDFChar: 908 1164 9 0 6 0 10 5X=g(5^Ymb6:-&" BDFChar: 909 1165 9 0 6 0 7 5k%$d6:+"d BDFChar: 910 1166 9 1 6 0 10 pk4N.7 BDFChar: 926 1182 9 0 6 0 10 6KC[6?pJ*r845cE BDFChar: 927 1183 9 0 6 0 10 5X=6o6qC-n845cE BDFChar: 928 1184 9 0 7 0 10 i?BNq0H`%t,U+B3 BDFChar: 929 1185 9 0 7 0 7 i?BNq3$][k BDFChar: 930 1186 9 1 7 -3 10 KS5#3K`$LVKS5']!Wi?% BDFChar: 931 1187 9 1 7 -2 7 KS5$VKS5#5!Wi?% BDFChar: 932 1188 9 0 7 0 10 LP1>6K`$LVKS5!Y BDFChar: 933 1189 9 0 7 0 7 LP1?YKS5#3 BDFChar: 934 1190 9 0 7 -3 10 pkX`^LlR=KM2@&i!J< BDFChar: 1019 1275 9 0 6 -3 7 IR$0f5X7SR&.i4L BDFChar: 1020 1276 9 0 6 -3 10 Jq?B=-kIdT7"U!l!Xo&/ BDFChar: 1021 1277 9 1 6 -3 7 KS2lM0M$kM"9]PA BDFChar: 1022 1278 9 0 6 0 10 Jq?B=./kVC7"U!j BDFChar: 1023 1279 9 1 6 0 7 KS2lMr()Ko BDFChar: 1024 1280 9 1 6 0 10 "9\i14@FjUKL@p& BDFChar: 1025 1281 9 1 6 0 7 "9\jTKS5#+ BDFChar: 1026 1282 9 0 6 0 10 &.fBc&os.uP*0V] BDFChar: 1027 1283 9 0 6 0 7 &.fIpP*1uE BDFChar: 1028 1284 9 0 6 0 10 i"-G4&n2Id&eYTQ BDFChar: 1029 1285 9 0 6 0 7 iXul5&eYfc BDFChar: 1030 1286 9 1 7 -2 10 p]L^&"?6Me"9\o1!WW3# BDFChar: 1031 1287 9 1 7 -2 7 p]L^Z"9\i3!Wi?% BDFChar: 1032 1288 9 0 7 0 10 GXt@s8P)KF8P+X: BDFChar: 1033 1289 9 0 7 0 7 GXtCt8P)L. BDFChar: 1034 1290 9 0 7 0 10 LkpkDM>!E BDFChar: 1118 4054 9 0 8 0 8 pj`X##_322s+#n*L]E52O+731 BDFChar: 1119 7680 9 1 6 -3 10 G_Ca'K`$LVKS5"482(#D BDFChar: 1120 7681 9 1 6 -3 7 GQ\.sKS5#+0M!kt BDFChar: 1121 7682 9 1 6 0 12 +9;1iKS5$RKS5#3p](9o BDFChar: 1122 7683 9 1 6 0 12 &-.62JG=eNKS5#3p](9o BDFChar: 1123 7684 9 1 6 -2 10 pk4J< BDFChar: 1136 7697 9 1 6 -3 10 "9\jTKS5#3KS4^q&7>J< BDFChar: 1137 7698 9 1 6 -3 10 n;)aNKS5#3KS]*t+A`%< BDFChar: 1138 7699 9 1 6 -3 10 "9\jTKS5#3KS4^Q+A`%< BDFChar: 1139 7700 9 1 6 0 12 +:nNt!;q@tpjdmFqu?]s BDFChar: 1140 7701 9 1 6 0 12 +:nNt!-j0MK`$@NHiO-H BDFChar: 1141 7702 9 1 6 0 12 &0Lst!;q@tpjdmFqu?]s BDFChar: 1142 7703 9 1 6 0 12 &0Lst!-j0MK`$@NHiO-H BDFChar: 1143 7704 9 1 6 -3 10 r.'s BDFChar: 1146 7707 9 1 6 -3 7 G_Ca'r.'s BDFChar: 1164 7725 9 1 6 -3 10 &-)]L&.fBa&.j3hA=*>s BDFChar: 1165 7726 9 1 5 0 12 &0Qc/p`L\%+^n?dFKE(uP BDFChar: 1168 7729 9 1 6 0 12 &0QLRJ:r`?T\tofKE(uP BDFChar: 1169 7730 9 1 6 -2 10 KSY__^js4nOGJPi+92BA BDFChar: 1170 7731 9 1 6 -2 10 J:N0'Lle:fOGJPi+92BA BDFChar: 1171 7732 9 1 6 -2 10 KSY__^js4nOGJPiGQ7^D BDFChar: 1172 7733 9 1 6 -2 10 J:N0'Lle:fOGJPiGQ7^D BDFChar: 1173 7734 9 1 6 -2 10 J:N0#J:N0#J:ROt+92BA BDFChar: 1174 7735 9 2 5 -2 10 ^d(.M5X7S"5X7"'5QCca BDFChar: 1175 7736 9 1 6 -2 12 GQ<8EJ:N0#J:N0#qu@i> BDFChar: 1176 7737 9 2 5 -2 12 n,U6h5X7S"5X7S"0E=?< BDFChar: 1177 7738 9 1 6 -2 10 J:N0#J:N0#J:ROtGQ7^D BDFChar: 1178 7739 9 2 5 -2 10 ^d(.M5X7S"5X7"'n,NFg BDFChar: 1179 7740 9 1 6 -3 10 J:N0#J:N0#J:ROt+A`%< BDFChar: 1180 7741 9 2 5 -3 10 ^d(.M5X7S"5X7"'5bJ)W BDFChar: 1181 7742 9 0 6 0 12 #S;T>`l>$YP*1EKJcGcN BDFChar: 1182 7743 9 0 6 0 11 #S6t9r0!5+P*1uk BDFChar: 1183 7744 9 0 6 0 12 &-.<6`l>$YP*1EKJcGcN BDFChar: 1184 7745 9 0 6 0 10 &-)_.P*1ukP*1t. BDFChar: 1185 7746 9 0 6 -2 10 JqD"^WiD5FJqARS&-)\1 BDFChar: 1186 7747 9 0 6 -2 7 r0!5+P*1uk!"],1 BDFChar: 1187 7748 9 1 6 0 12 +97)5`2'2nP`1QSKE(uP BDFChar: 1188 7749 9 1 6 0 10 +92E:KS5#3KS5!Y BDFChar: 1189 7750 9 1 6 -2 10 KZ(g)Um.+&N.cia+92BA BDFChar: 1190 7751 9 1 6 -2 7 pk4ClJ:N0#J:IVB BDFChar: 1213 7774 9 1 6 -2 10 pk4J:N/p"9\i1p](9o BDFChar: 1216 7777 9 1 6 0 10 +92ChJ:M#E"9eK" BDFChar: 1217 7778 9 1 6 -2 10 I"6`tJ9V2""9eK"+92BA BDFChar: 1218 7779 9 1 6 -2 7 I"6`T(^(!:!$D7A BDFChar: 1219 7780 9 1 6 0 12 8.YcKJ:N/p"9\i1p](9o BDFChar: 1220 7781 9 1 6 0 11 #Z(L$I"6`T(^(!: BDFChar: 1221 7782 9 1 6 0 12 +954\!.9J:N/p"9\i1p])E: BDFChar: 1224 7785 9 1 6 -2 10 +92ChJ:M#E"9eK"+92BA BDFChar: 1225 7786 9 0 6 0 12 &-2\@&.fBa&.fBa&-)\1 BDFChar: 1226 7787 9 1 6 0 12 5QF&75kmT05X7S"49,?] BDFChar: 1227 7788 9 0 6 -2 10 rX]VP&.fBa&.fBQ&-)\1 BDFChar: 1228 7789 9 1 6 -2 10 5X7U05X7S"5X7F3&-)\1 BDFChar: 1229 7790 9 0 6 -2 10 rX]VP&.fBa&.fBQHiO-H BDFChar: 1230 7791 9 1 6 -2 10 5X7U05X7S"5X7F3GQ7^D BDFChar: 1231 7792 9 0 6 -3 10 rX]VP&.fBa&.fBQ&1@MY BDFChar: 1232 7793 9 1 6 -3 10 5X7U05X7S"5X7F3+A`%< BDFChar: 1233 7794 9 1 6 -2 10 KS5#3KS5#3KS4RM8,rVi BDFChar: 1234 7795 9 1 6 -2 7 KS5#3KS5#'!([(i BDFChar: 1235 7796 9 1 6 -3 10 KS5#3KS5#3KS4RMA=*>s BDFChar: 1236 7797 9 1 6 -3 7 KS5#3KS5#'!+_Gs BDFChar: 1237 7798 9 1 6 -3 10 KS5#3KS5#3KS4RM+A`%< BDFChar: 1238 7799 9 1 6 -3 7 KS5#3KS5#'!$G)< BDFChar: 1239 7800 9 0 8 0 12 9Rr<,!!#=c63'=P63'=P63'=P63'=P49,?] BDFChar: 1240 7801 9 0 6 0 12 5_(U`!('"=6:+"*49,?] BDFChar: 1241 7802 9 1 6 0 12 8-!l7KS5#3KS5#3GQ7^D BDFChar: 1242 7803 9 1 6 0 11 8-!l7KS5#3KS5#' BDFChar: 1243 7804 9 0 6 0 12 1/%\"Jj`!p-n$JT&-)\1 BDFChar: 1244 7805 9 0 6 0 10 1/%\"Jj`!T-kHpi BDFChar: 1245 7806 9 0 6 -2 10 JqASB6prFO-kHpi&-)\1 BDFChar: 1246 7807 9 0 6 -2 7 Jq?BY-n#WJs):sWlE&1JcGcN BDFChar: 1250 7811 9 0 6 0 11 #S6t9JqB/KWiAHT BDFChar: 1251 7812 9 0 6 0 12 -iejNJs):sWlE&1JcGcN BDFChar: 1252 7813 9 0 6 0 10 -ia7!Js):sW^K5T BDFChar: 1253 7814 9 0 6 0 12 &-.<6Js):sWlE&1JcGcN BDFChar: 1254 7815 9 0 6 0 10 &-)]^Js):sW^K5T BDFChar: 1255 7816 9 0 6 -2 10 JqAT;P,bP%`e&dB&-)\1 BDFChar: 1256 7817 9 0 6 -2 7 JqB/KWiAHT!"],1 BDFChar: 1257 7818 9 0 6 0 12 &-.;M6msGp-n%JOJcGcN BDFChar: 1258 7819 9 1 6 0 10 +92CpKLddN8;)Wr BDFChar: 1259 7820 9 0 6 0 12 -ieie6msGp-n%JOJcGcN BDFChar: 1260 7821 9 1 6 0 10 8,rXCKLddN8;)Wr BDFChar: 1261 7822 9 0 6 0 12 &-.<66prFO&.fBa&-)\1 BDFChar: 1262 7823 9 1 6 -3 10 +92CpKS5#3KS4^U"F'nH BDFChar: 1263 7824 9 1 6 0 12 +A`(9#RCtQ+5I+92BA BDFChar: 1266 7827 9 1 6 -2 7 qud9:+@(JT!$D7A BDFChar: 1267 7828 9 1 6 -2 10 qud92&.fs,5X>5IGQ7^D BDFChar: 1268 7829 9 1 6 -2 7 qud9:+@(JT!-eJD BDFChar: 1269 7830 9 1 6 -2 10 J:N1FKS5#3KS5!YGQ7^D BDFChar: 1270 7831 9 1 6 0 12 O8qO25kmT05X7S"49,?] BDFChar: 1271 7832 9 0 6 0 11 &1A(iJqB/KWiAHT BDFChar: 1272 7833 9 1 6 -3 11 +Aa0\KS5#3KS5#+"9`rL BDFChar: 1273 7834 9 1 7 0 11 "9JW-GQ\.sKS5#+ BDFChar: 1274 7835 9 3 6 0 12 +96A2J:N0#J:N0#J,fQL BDFChar: 1275 7836 9 1 6 0 10 *$?@H+?8:%+:]P_C"FPlUHiO-H BDFChar: 1291 7852 9 1 6 -2 12 +A`&_KS5$VKS5#3KE*+p BDFChar: 1292 7853 9 1 6 -2 11 +A`%#"FPlUHiO-H BDFChar: 1301 7862 9 1 6 -2 12 Li BDFChar: 1318 7879 9 1 6 -2 11 +A`%QcOH>QcOHBGA BDFChar: 1370 7931 9 1 6 0 10 84`YL84Z9B84Z8O BDFChar: 1371 7932 9 1 6 0 10 #S8+$5Y-Q]KLdcs BDFChar: 1372 7933 9 1 6 0 7 &0O5'R"U-; BDFChar: 1373 7934 9 1 6 0 10 KS5#3KS4^U7&5&- BDFChar: 1374 7935 9 1 6 -3 7 KS5#3KS4^U7&5&- BDFChar: 1375 7936 9 1 7 0 11 &.fra@[*+5Lm4-5 BDFChar: 1376 7937 9 1 7 0 11 +'&+sK3:5l^lb BDFChar: 1391 7952 9 1 6 0 11 &.fraI"6`lJ:N/t BDFChar: 1392 7953 9 1 6 0 11 +\;3;G4&J5Te&HDe2 BDFChar: 1419 7984 9 3 6 0 11 +qG"9\i1*rl9@ BDFChar: 1434 7999 9 0 7 0 12 )(#?UKL>qG"9\i1*rl9@ BDFChar: 1435 8000 9 1 6 0 11 &.fraG_Ca'KS5#' BDFChar: 1436 8001 9 1 6 0 11 +j BDFChar: 1498 8073 9 0 6 -3 12 J:LH--n$K37!sTj BDFChar: 1499 8074 9 0 6 -3 12 :e6*J&1AqT6puESJcH>j BDFChar: 1500 8075 9 0 6 -3 12 OGH.5&1AqT6puESJcH>j BDFChar: 1501 8076 9 0 6 -3 12 85OgJ&1AqT6puESJcH>j BDFChar: 1502 8077 9 0 6 -3 12 Llak5&1AqT6puESJcH>j BDFChar: 1503 8078 9 0 7 -3 12 1/%[=8'&+sK3:5l_/p BDFChar: 1505 8080 9 1 6 -3 11 &.frapk4\;3;G4&J5Te&HDq9 BDFChar: 1521 8096 9 0 6 -3 11 #RCtA7"U#BP*1uE!"]P= BDFChar: 1522 8097 9 0 6 -3 11 +s BDFChar: 1553 8129 9 1 6 9 12 A=*?f BDFChar: 1554 8130 9 1 6 -3 11 +QcOH>Qc!0E9B BDFChar: 1655 8253 9 1 6 0 10 GbcT1-nlbd!$EBa BDFChar: 1656 8254 9 0 7 12 12 rr<$! BDFChar: 1657 8259 9 2 5 4 6 nF5oI BDFChar: 1658 8263 9 0 7 0 10 Asj5C,"+ge!(93T BDFChar: 1659 8264 9 0 6 0 10 Ef(22&gAMD!$WTe BDFChar: 1660 8265 9 0 6 0 10 S>(UeKSYG?!/QF2 BDFChar: 1661 8267 9 1 6 0 10 pq48P]Y(bITV.qX BDFChar: 1662 8270 9 2 6 -3 1 +K07X+92BA BDFChar: 1663 8271 9 3 4 -2 6 ^q]pM!5QC#5QCca BDFChar: 1664 8273 9 2 6 -3 9 +K07X+92BA+K07X+92BA BDFChar: 1665 8304 9 2 5 6 11 @$$J3OC/%g BDFChar: 1666 8305 9 2 4 6 12 5QJSb5X=6- BDFChar: 1667 8308 9 2 5 6 11 ?soY#n/q]2 BDFChar: 1668 8309 9 2 5 6 11 n:9F.&E!Ng BDFChar: 1669 8310 9 2 5 6 11 @"@0sOC/%g BDFChar: 1670 8311 9 2 5 6 11 n.6]b5X5;L BDFChar: 1671 8312 9 2 5 6 11 @$"cXOC/%g BDFChar: 1672 8313 9 2 5 6 11 @$$Ih&7>J< BDFChar: 1673 8314 9 2 4 8 10 5i=m- BDFChar: 1674 8315 9 2 4 9 9 huE`W BDFChar: 1675 8316 9 2 4 8 10 huM[8 BDFChar: 1676 8317 9 3 4 6 11 5_+B8J3X)7 BDFChar: 1677 8318 9 2 3 6 11 J3Z@b5_&h7 BDFChar: 1678 8319 9 2 5 6 10 i/j%^O8o7\ BDFChar: 1679 8320 9 2 5 -3 2 @$$J3OC/%g BDFChar: 1680 8321 9 2 4 -3 2 +CLib+J< BDFChar: 1689 8330 9 2 4 -2 0 5i=m- BDFChar: 1690 8331 9 2 4 -2 -2 huE`W BDFChar: 1691 8332 9 2 4 -2 0 huM[8 BDFChar: 1692 8333 9 3 4 -3 2 5_+B8J3X)7 BDFChar: 1693 8334 9 2 3 -3 2 J3Z@b5_&h7 BDFChar: 1694 8336 9 2 5 -3 2 ?k@:=ODk1" BDFChar: 1695 8337 9 2 5 -3 2 @$$K>J8bJg BDFChar: 1696 8338 9 2 5 -3 2 @$$J3OC/%g BDFChar: 1697 8339 9 2 6 -3 2 Leo3::l#)O BDFChar: 1698 8340 9 2 5 -3 2 i"5C>OC/%g BDFChar: 1699 8341 9 2 5 -3 4 J:N1.OH>Qc BDFChar: 1700 8342 9 2 5 -3 4 J:N`S^qcV) BDFChar: 1701 8343 9 2 4 -3 4 ^d(.M5X7Tm BDFChar: 1702 8344 9 1 5 -3 2 n>N:aW2K[r BDFChar: 1703 8345 9 2 5 -3 2 i/j%^OH9GB BDFChar: 1704 8346 9 2 5 -3 2 i/j%^i.(e- BDFChar: 1705 8347 9 2 5 -3 2 E.D=-&E!Ng BDFChar: 1706 8348 9 2 5 -3 4 5X=6m5X7Rg BDFChar: 1707 8359 9 0 7 0 10 jHPn#Pa(6^KS4sX BDFChar: 1708 8364 9 1 6 0 8 4?u1,5kmT049,?] BDFChar: 1709 8366 9 0 6 0 10 rX]VP*,lm:&.fBQ BDFChar: 1710 8450 9 0 6 0 10 I\<@,TV.sNTV-`6 BDFChar: 1711 8451 9 0 7 0 11 5d.Cg&.fBa&.fB` BDFChar: 1712 8457 9 0 7 0 11 5d.+W#RCqH#RC\A BDFChar: 1713 8461 9 0 6 0 10 ihE0AU;!@rU8$WI BDFChar: 1714 8462 9 1 6 0 10 J:N1FKS5#3KS5!Y BDFChar: 1715 8463 9 0 6 0 10 5k%$(HpU.d6:+!= BDFChar: 1716 8469 9 1 6 0 10 `2'3Ye?#a9P`1P$ BDFChar: 1717 8470 9 0 7 0 10 Mi5["W2QY^R#$Ou BDFChar: 1718 8473 9 0 6 0 10 r1]p[U8#;nTV13C BDFChar: 1719 8474 9 0 6 0 10 I%m@0U8"BVWhaq@ BDFChar: 1720 8477 9 0 6 0 10 r1]p[U:d_/UnZiK BDFChar: 1721 8482 9 0 7 6 10 nQT!j;#gRr BDFChar: 1722 8484 9 0 6 0 10 rX&uH'IYA+:n[df BDFChar: 1723 8487 9 0 6 0 10 mO1JTJqAT+Jj_Qu BDFChar: 1724 8510 9 0 6 0 10 rh,pWTV.sNTV13C BDFChar: 1725 8511 9 0 6 0 10 rh?-]U8"BVU8$WI BDFChar: 1726 8528 9 0 7 -3 12 +CH<7+X.$p&0Oc"!WiK- BDFChar: 1727 8529 9 0 7 -3 12 +CH<7+X.$p&0OH!#mUJ8 BDFChar: 1728 8531 9 0 7 -3 12 +CH<7+X.$p&0O`!"p"`7 BDFChar: 1729 8532 9 0 7 -3 12 i"-GB61P-a&0O`!"p"`7 BDFChar: 1730 8533 9 0 7 -3 12 +CH<7+X.$p&0Oc)%KQS? BDFChar: 1731 8534 9 0 7 -3 12 i"-GB61P-a&0Oc)%KQS? BDFChar: 1732 8535 9 0 7 -3 12 i"09-&`Np!&0Oc)%KQS? BDFChar: 1733 8536 9 0 7 -3 12 ?soY#nKJ)A&0Oc)%KQS? BDFChar: 1734 8537 9 0 7 -3 12 +CH<7+X.$p&0OGu%LEFG BDFChar: 1735 8538 9 0 7 -3 12 n:9F.&`Np!&0OGu%LEFG BDFChar: 1736 8539 9 0 7 -3 12 +CH<7+X.$p&0OH!"pkS? BDFChar: 1737 8540 9 0 7 -3 12 i"09-&`Np!&0OH!"pkS? BDFChar: 1738 8541 9 0 7 -3 12 n:9F.&`Np!&0OH!"pkS? BDFChar: 1739 8542 9 0 7 -3 12 n.6]b5sb\[&0OH!"pkS? BDFChar: 1740 8543 9 0 7 1 12 +CH<7+X.$p&0O5g BDFChar: 1741 8585 9 0 7 -3 12 @$$J3O^\G!&0O`!"p"`7 BDFChar: 1742 8592 9 0 6 3 7 +@,ok+92BA BDFChar: 1743 8593 9 1 5 2 8 +E48%+GTKiJW BDFChar: 1797 8664 9 1 6 2 7 5bM(-'Kc?q BDFChar: 1798 8665 9 1 6 2 7 #Sa5aT^Vp] BDFChar: 1799 8672 9 0 6 3 7 +@,3W+92BA BDFChar: 1800 8673 9 1 5 2 8 +E47Z+93Ma BDFChar: 1801 8674 9 0 6 3 7 #R%:5#QOi) BDFChar: 1802 8675 9 1 5 2 8 +93MaW,NjZ BDFChar: 1803 8676 9 0 7 3 7 OJ)WHO8o7\ BDFChar: 1804 8677 9 0 7 3 7 #mL>4#ljr* BDFChar: 1805 8678 9 0 6 3 7 0OB?;0E;(Q BDFChar: 1806 8679 9 1 5 2 8 +AdmH:f)*2 BDFChar: 1807 8680 9 0 6 3 7 )"`FP(]XO9 BDFChar: 1808 8681 9 1 5 2 8 E)9B`Leo2o BDFChar: 1809 8691 9 1 5 0 9 +AdmH:f,f#:`o`< BDFChar: 1810 8693 9 0 8 0 7 +oitj.Y&]C+onVCEW@9` BDFChar: 1811 8694 9 0 7 -1 11 "9ST)"9ST)"9ST)"98E% BDFChar: 1812 8704 9 0 6 0 10 JqAT%6prFO-kHpi BDFChar: 1813 8705 9 1 6 0 10 I"6`tJ:N0#J:N"I BDFChar: 1814 8706 9 1 6 0 10 0F.pe1e`RUKLdcs BDFChar: 1815 8707 9 1 6 0 10 qud-*"FL=T"9eW& BDFChar: 1816 8708 9 1 6 -1 11 &H!4V,U@a_,Xb&u5QCca BDFChar: 1817 8709 9 0 6 1 9 3^ej_P+n[=\,ZL/ BDFChar: 1818 8711 9 0 6 1 9 rdo_i6msGp&-)\1 BDFChar: 1819 8712 9 1 6 0 10 4@"FIJGaqJJ3Z3s BDFChar: 1820 8713 9 1 6 -1 11 #WtY6OHBC%OJ#uD+92BA BDFChar: 1821 8714 9 1 6 1 7 4@"GpJ3Z3s BDFChar: 1822 8715 9 1 6 0 10 n-B.""T/B*":4Js BDFChar: 1823 8716 9 1 6 -1 11 &F^MN,UE:5,Xb2m5QCca BDFChar: 1824 8717 9 1 6 1 7 n-B0p":4Js BDFChar: 1825 8719 9 1 6 0 10 r.K`VKS5#3KS5!Y BDFChar: 1826 8721 9 1 6 0 10 r.%$T&-rgi5_/b4 BDFChar: 1827 8722 9 0 6 5 5 rVuou BDFChar: 1828 8723 9 0 6 1 9 rW!K@&H34P&-)\1 BDFChar: 1829 8724 9 0 6 2 10 &-*7Q&H34P&-)\1 BDFChar: 1830 8729 9 1 5 3 7 E;95'Du]k< BDFChar: 1831 8730 9 0 7 0 10 #6Y/8#`+R=:`pk\ BDFChar: 1832 8731 9 0 7 0 12 i"0N8j9Q$IOAJar+92BA BDFChar: 1833 8732 9 0 7 0 12 @%aFi,R=[3OAJar+92BA BDFChar: 1834 8733 9 1 7 0 7 @[*+5Lm4-5 BDFChar: 1835 8734 9 0 6 1 6 7&lE5W^Hge BDFChar: 1836 8735 9 1 7 3 9 J:N0#J:RV! BDFChar: 1837 8736 9 1 7 3 10 &.fs,5X9l! BDFChar: 1838 8739 9 3 3 -3 10 J:N0#J:N0#J:N0#J:IV" BDFChar: 1839 8740 9 1 5 -3 10 +n:6#h BDFChar: 1908 9227 9 2 6 1 11 Lknl(+9;0Z+8Fr8?Mki8EPO BDFChar: 1948 9507 9 3 8 -3 12 i8EPOi8FP2r8?Mki8EPO BDFChar: 1949 9508 9 0 4 -3 12 #RC\A#RC_2#RC\A#RC\A BDFChar: 1950 9509 9 0 4 -3 12 #RC\A#RL5#p]q-2#RC\A BDFChar: 1951 9510 9 0 5 -3 12 *#oq<*#osr#RC\A#RC\A BDFChar: 1952 9511 9 0 5 -3 12 #RC\A#RC_6*#oq<*#oq< BDFChar: 1953 9512 9 0 5 -3 12 *#oq<*#osr*#oq<*#oq< BDFChar: 1954 9513 9 0 5 -3 12 *#oq<*$"nSr!3Q6#RC\A BDFChar: 1955 9514 9 0 5 -3 12 #RC\A#RLA+r#?[r*#oq< BDFChar: 1956 9515 9 0 5 -3 12 *#oq<*$"nSr#?[r*#oq< BDFChar: 1957 9516 9 0 8 -3 5 s*t@T#QP,1#QP,1#QP,1#QOi) BDFChar: 1958 9517 9 0 8 -3 6 p]1>Ep](R"#QP,1#QP,1#QP,1 BDFChar: 1959 9518 9 0 8 -3 6 %tO\1%tFoc#QP,1#QP,1#QP,1 BDFChar: 1960 9519 9 0 8 -3 6 s+(-"s*t@T#QP,1#QP,1#QP,1 BDFChar: 1961 9520 9 0 8 -3 5 s*u'h)uprY)uprY)uprY)uos= BDFChar: 1962 9521 9 0 8 -3 6 quHbIqu@]:)uprY)uprY)uprY BDFChar: 1963 9522 9 0 8 -3 6 ++XBA++P=2)uprY)uprY)uprY BDFChar: 1964 9523 9 0 8 -3 6 s+(-"s*u'h)uprY)uprY)uprY BDFChar: 1965 9524 9 0 8 5 12 #QP,1#QP,1#QP,1#QXmT BDFChar: 1966 9525 9 0 8 4 12 #QP,1#QP,1#QP,1p]1>Ep](9o BDFChar: 1967 9526 9 0 8 4 12 #QP,1#QP,1#QP,1%tO\1%tFW[ BDFChar: 1968 9527 9 0 8 4 12 #QP,1#QP,1#QP,1s+(-"s*t(L BDFChar: 1969 9528 9 0 8 5 12 )uprY)uprY)uprY*!$"h BDFChar: 1970 9529 9 0 8 4 12 )uprY)uprY)uprYquHbIqu?]s BDFChar: 1971 9530 9 0 8 4 12 )uprY)uprY)uprY++XBA++O=k BDFChar: 1972 9531 9 0 8 4 12 )uprY)uprY)uprYs+(-"s*t(L BDFChar: 1973 9532 9 0 8 -3 12 #QP,1#QP,1#QP,1#QXmT#QP,1#QP,1#QP,1#QP,1 BDFChar: 1974 9533 9 0 8 -3 12 #QP,1#QP,1#QP,1p]1>Ep](R"#QP,1#QP,1#QP,1 BDFChar: 1975 9534 9 0 8 -3 12 #QP,1#QP,1#QP,1%tO\1%tFoc#QP,1#QP,1#QP,1 BDFChar: 1976 9535 9 0 8 -3 12 #QP,1#QP,1#QP,1s+(-"s*t@T#QP,1#QP,1#QP,1 BDFChar: 1977 9536 9 0 8 -3 12 )uprY)uprY)uprY*!$"h#QP,1#QP,1#QP,1#QP,1 BDFChar: 1978 9537 9 0 8 -3 12 #QP,1#QP,1#QP,1#QXmT)uprY)uprY)uprY)uprY BDFChar: 1979 9538 9 0 8 -3 12 )uprY)uprY)uprY*!$"h)uprY)uprY)uprY)uprY BDFChar: 1980 9539 9 0 8 -3 12 )uprY)uprY)uprYquHbIqu@!&#QP,1#QP,1#QP,1 BDFChar: 1981 9540 9 0 8 -3 12 )uprY)uprY)uprY++XBA++OUs#QP,1#QP,1#QP,1 BDFChar: 1982 9541 9 0 8 -3 12 #QP,1#QP,1#QP,1quHbIqu@]:)uprY)uprY)uprY BDFChar: 1983 9542 9 0 8 -3 12 #QP,1#QP,1#QP,1++XBA++P=2)uprY)uprY)uprY BDFChar: 1984 9543 9 0 8 -3 12 )uprY)uprY)uprYs+(-"s*t@T#QP,1#QP,1#QP,1 BDFChar: 1985 9544 9 0 8 -3 12 #QP,1#QP,1#QP,1s+(-"s*u'h)uprY)uprY)uprY BDFChar: 1986 9545 9 0 8 -3 12 )uprY)uprY)uprYquHbIqu@]:)uprY)uprY)uprY BDFChar: 1987 9546 9 0 8 -3 12 )uprY)uprY)uprY++XBA++P=2)uprY)uprY)uprY BDFChar: 1988 9547 9 0 8 -3 12 )uprY)uprY)uprYs+(-"s*u'h)uprY)uprY)uprY BDFChar: 1989 9548 9 0 7 5 5 mf3=f BDFChar: 1990 9549 9 0 7 4 6 n*f]F BDFChar: 1991 9550 9 4 4 -2 12 J:N0#J:N.MJ:N0#J:N.M BDFChar: 1992 9551 9 3 5 -2 12 i8EPOi8EMni8EPOi8EMn BDFChar: 1993 9552 9 0 8 4 6 s*t(Ls*t(L BDFChar: 1994 9553 9 3 5 -3 12 TV.sNTV.sNTV.sNTV.sN BDFChar: 1995 9554 9 4 8 -3 6 pji-iJ:N0#J:IV" BDFChar: 1996 9555 9 3 8 -3 5 r1K^UTV.sNTE"rl BDFChar: 1997 9556 9 3 8 -3 6 r.)GQTV.sNTV)8b BDFChar: 1998 9557 9 0 4 -3 6 p^$X##RC\A#RCD1 BDFChar: 1999 9558 9 0 5 -3 5 r"KhZ'GM5q'EA+5 BDFChar: 2000 9559 9 0 5 -3 6 qulX+'GM5q'GLNI BDFChar: 2001 9560 9 4 8 4 12 J:N0#J:REFp](9o BDFChar: 2002 9561 9 3 8 5 12 TV.sNTV.tU BDFChar: 2003 9562 9 3 8 4 12 TV.sNTV/rJqu?]s BDFChar: 2004 9563 9 0 4 4 12 #RC\A#RL22p](9o BDFChar: 2005 9564 9 0 5 5 12 'GM5q'GM8Z BDFChar: 2006 9565 9 0 5 4 12 'GM5q'GU0Bqu?]s BDFChar: 2007 9566 9 4 8 -3 12 J:N0#J:REFpjdmFJ:N0# BDFChar: 2008 9567 9 3 8 -3 12 TV.sNTV.sjTV.sNTV.sN BDFChar: 2009 9568 9 3 8 -3 12 TV.sNTV/rJ]V(pjTV.sN BDFChar: 2010 9569 9 0 4 -3 12 #RC\A#RL22p]q-2#RC\A BDFChar: 2011 9570 9 0 5 -3 12 'GM5q'GM8R'GM5q'GM5q BDFChar: 2012 9571 9 0 5 -3 12 'GM5q'GU0BoFquR'Ef*a BDFChar: 2013 9572 9 0 8 -3 6 s*t(Ls*t@T#QP,1#QP,1#QP,1 BDFChar: 2014 9573 9 0 8 -3 5 s*td`'EAgI'EAgI'EAgI'EA+5 BDFChar: 2015 9574 9 0 8 -3 6 s*t(LpOEqX'EAgI'EAgI'EAgI BDFChar: 2016 9575 9 0 8 4 12 #QP,1#QP,1#QP,1s*t(Ls*t(L BDFChar: 2017 9576 9 0 8 5 12 'EAgI'EAgI'EAgI'EJ/` BDFChar: 2018 9577 9 0 8 4 12 'EAgI'EAgI'EAgIpOE5Ds*t(L BDFChar: 2019 9578 9 0 8 -3 12 #QP,1#QP,1#QP,1s*t(Ls*t@T#QP,1#QP,1#QP,1 BDFChar: 2020 9579 9 0 8 -3 12 'EAgI'EAgI'EAgI'EIlX'EAgI'EAgI'EAgI'EAgI BDFChar: 2021 9580 9 0 8 -3 12 'EAgI'EAgI'EAgIpOE5DpOEqX'EAgI'EAgI'EAgI BDFChar: 2022 9581 9 4 8 -3 5 3'`"EJ:N0#J,fQL BDFChar: 2023 9582 9 0 4 -3 5 i"-/"#RC\A#QOi) BDFChar: 2024 9583 9 0 4 5 12 #RC\A#RD"" BDFChar: 2025 9584 9 4 8 5 12 J:N0#J:KmE BDFChar: 2026 9585 9 0 8 -3 12 !.Y'"!<<-#!WW?'"98]-#QPD9&-*gQ5QF%LJ,k*" BDFChar: 2027 9586 9 0 8 -3 12 J,k*"5QF%L+92rQ&-)t9#QOu-"98K'!<<-#!.Y'" BDFChar: 2028 9587 9 0 8 -3 12 J:N0#5la1N+oi;W'EAC=#QPP='EBEp](9o BDFChar: 2040 9599 9 3 5 -3 12 i8EPOi8EPO5X7S"5X7S" BDFChar: 2041 9600 9 0 8 5 12 s+(-"s+(-"s+(-"s+(-" BDFChar: 2042 9601 9 0 8 -3 -2 s+(-" BDFChar: 2043 9602 9 0 8 -3 0 s+(-"s+(-" BDFChar: 2044 9603 9 0 8 -3 2 s+(-"s+(-"s+(-" BDFChar: 2045 9604 9 0 8 -3 4 s+(-"s+(-"s+(-"s+(-" BDFChar: 2046 9605 9 0 8 -3 6 s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2047 9606 9 0 8 -3 8 s+(-"s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2048 9607 9 0 8 -3 10 s+(-"s+(-"s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2049 9608 9 0 8 -3 12 s+(-"s+(-"s+(-"s+(-"s+(-"s+(-"s+(-"s+(-" BDFChar: 2050 9609 9 0 7 -3 12 s8W-!s8W-!s8W-!s8W-! BDFChar: 2051 9610 9 0 6 -3 12 rr2orrr2orrr2orrr2or BDFChar: 2052 9611 9 0 5 -3 12 r;?Kjr;?Kjr;?Kjr;?Kj BDFChar: 2053 9612 9 0 4 -3 12 q"XXZq"XXZq"XXZq"XXZ BDFChar: 2054 9613 9 0 3 -3 12 nF5r:nF5r:nF5r:nF5r: BDFChar: 2055 9614 9 0 2 -3 12 i8EPOi8EPOi8EPOi8EPO BDFChar: 2056 9615 9 0 1 -3 12 ^qdb$^qdb$^qdb$^qdb$ BDFChar: 2057 9616 9 4 8 -3 12 q"XXZq"XXZq"XXZq"XXZ BDFChar: 2058 9617 9 0 7 -3 12 _\g9._\g9._\g9._\g9. BDFChar: 2059 9618 9 0 8 -3 12 gAiLLgAiLLgAiLLgAiLLgAiLLgAiLLgAiLLgAiLL BDFChar: 2060 9619 9 0 8 -3 12 4FlUF4FlUF4FlUF4FlUF4FlUF4FlUF4FlUF4FlUF BDFChar: 2061 9622 9 0 4 -3 4 q"XXZq"XXZ BDFChar: 2062 9623 9 4 8 -3 4 q"XXZq"XXZ BDFChar: 2063 9624 9 0 4 5 12 q"XXZq"XXZ BDFChar: 2064 9625 9 0 8 -3 12 p]1'hp]1'hp]1'hp]1'hs+(-"s+(-"s+(-"s+(-" BDFChar: 2065 9626 9 0 8 -3 12 p]1'hp]1'hp]1'hp]1'h%tG1@%tG1@%tG1@%tG1@ BDFChar: 2066 9627 9 0 8 -3 12 s+(-"s+(-"s+(-"s+(-"p]1'hp]1'hp]1'hp]1'h BDFChar: 2067 9628 9 0 8 -3 12 s+(-"s+(-"s+(-"s+(-"%tG1@%tG1@%tG1@%tG1@ BDFChar: 2068 9629 9 4 8 5 12 q"XXZq"XXZ BDFChar: 2069 9630 9 0 8 -3 12 %tG1@%tG1@%tG1@%tG1@p]1'hp]1'hp]1'hp]1'h BDFChar: 2070 9631 9 0 8 -3 12 %tG1@%tG1@%tG1@%tG1@s+(-"s+(-"s+(-"s+(-" BDFChar: 2071 9632 9 0 6 0 6 rr2orrr2ls BDFChar: 2072 9633 9 1 7 0 6 rdo`RJqEt% BDFChar: 2073 9634 9 1 7 0 6 I"Hs%JqA@M BDFChar: 2074 9635 9 1 7 0 6 rdq_m\q9n] BDFChar: 2075 9642 9 2 6 1 5 q"XXZp](9o BDFChar: 2076 9643 9 2 6 1 5 pkX`^p](9o BDFChar: 2077 9644 9 1 7 1 5 rr2orrVuou BDFChar: 2078 9645 9 1 7 1 5 rdo`RrVuou BDFChar: 2079 9646 9 2 6 0 6 q"XXZq"XUa BDFChar: 2080 9647 9 2 6 0 6 pkX`^Lktg+ BDFChar: 2081 9648 9 0 7 1 5 5$ij+./[s*t(L BDFChar: 2120 9692 9 0 3 3 6 0L1/= BDFChar: 2121 9693 9 3 6 3 6 ^`X1" BDFChar: 2122 9694 9 3 6 0 3 &.fu" BDFChar: 2123 9695 9 0 3 0 3 J:Km= BDFChar: 2124 9696 9 0 6 3 6 3(/@M BDFChar: 2125 9697 9 0 6 0 3 Jq?BM BDFChar: 2126 9698 9 0 6 0 6 !X9,U5(LkPa- BDFChar: 2151 9723 9 1 6 2 7 r.K`VK_tfM BDFChar: 2152 9724 9 1 6 2 7 r;?Kjr;6Np BDFChar: 2153 9725 9 1 5 1 5 pkX`^p](9o BDFChar: 2154 9726 9 1 5 1 5 q"XXZp](9o BDFChar: 2155 9727 9 1 7 0 6 !X8uE,!u8/ BDFChar: 2156 9737 9 0 7 2 9 4@4UeR=R[e BDFChar: 2157 9738 9 0 7 1 10 4@4UMJUp.aV*Y.^ BDFChar: 2158 9739 9 0 7 1 10 6D^MFJUrB'69G5J BDFChar: 2159 9744 9 0 8 1 9 s+#WMJ:N0#J:N0#J:N0#s*t(L BDFChar: 2160 9745 9 0 8 1 9 s+#WMJq/N)W.9t[OFVk3s*t(L BDFChar: 2161 9746 9 0 8 1 9 s+#WMU4AJYLk(_?U4@cEs*t(L BDFChar: 2162 9770 9 0 6 0 10 %PV;+`6Q<:?n`&j BDFChar: 2163 9785 9 0 8 0 10 4odkKJ:OAEJ:N0#S:I>aJ:Koc4obQ_ BDFChar: 2164 9786 9 0 8 0 10 4odkKJ:OAEJ:N0#J:OAES:Em*4obQ_ BDFChar: 2165 9787 9 0 8 0 10 4og'4s+&pUs+(-"s+&pUj+)UZ4obQ_ BDFChar: 2166 9788 9 0 8 1 9 #QREr.KC._j+%gD.KE$?#QOi) BDFChar: 2167 9789 9 1 6 0 10 i(tg9'GM5q-rAh% BDFChar: 2168 9790 9 1 6 0 10 *%4XVTV.sN:ad:` BDFChar: 2169 9791 9 1 7 -2 12 Jq?BM7"U#B6oY_hHk6hh BDFChar: 2170 9792 9 1 7 -2 9 3(/@MJj_R0&:>$# BDFChar: 2171 9793 9 1 7 0 11 &.j4#&3*(0Jq?BM BDFChar: 2172 9794 9 0 8 0 8 "+UE&3e0TuJcLB&JcJ1=2uipY BDFChar: 2173 9795 9 0 7 0 10 !HEr""U,54![fub5sdm< BDFChar: 2175 9797 9 0 8 -1 11 aacq_8H=5?8H;<^aaaWs)uq/_+oiee)uos= BDFChar: 2176 9798 9 0 8 0 12 #QPhE8HA(,8H;<^8H;<^.KCFg#QPhE#QOi) BDFChar: 2177 9799 9 1 6 0 10 n;)aNKS],JJ:ROt BDFChar: 2178 9800 9 0 8 0 10 5ldX0U4l]?S4odbH)ur/&5lcB7IfKHK BDFChar: 2198 9820 9 1 7 0 12 f)GY:I!g&1<49,?] BDFChar: 2227 10115 9 0 7 0 8 4@4mmWP+-T49,?] BDFChar: 2228 10116 9 0 7 0 8 4@6`T\V7R\49,?] BDFChar: 2229 10117 9 0 7 0 8 4@5U4\YY]\49,?] BDFChar: 2230 10118 9 0 7 0 8 4@6`8M33oe49,?] BDFChar: 2231 10119 9 0 7 0 8 4@5I4RAH<<49,?] BDFChar: 2232 10120 9 0 7 0 8 4@5I4SVI?349,?] BDFChar: 2238 10126 9 0 7 0 8 4FY3*a8Ja4od+49,?] BDFChar: 2240 10128 9 0 7 0 8 4FY3Fp[@R"49,?] BDFChar: 2241 10129 9 0 7 0 8 4FZJJkM,0K49,?] BDFChar: 2242 10130 9 0 7 0 8 4FZJJj88"g49,?] BDFChar: 2243 10131 9 0 7 0 8 4FZ%Me^`E'49,?] BDFChar: 2244 10132 9 0 7 2 7 $jQb3"q1J3 BDFChar: 2245 10133 9 0 7 1 8 (`4+irtlRi BDFChar: 2246 10134 9 0 7 4 5 s8N'! BDFChar: 2247 10135 9 0 7 0 9 (`35Qs8N'!(`35Q BDFChar: 2248 10136 9 0 7 1 8 5i?]F*tLS# BDFChar: 2249 10137 9 0 7 1 8 #TO?Srsg"S BDFChar: 2250 10138 9 0 7 1 8 523 BDFChar: 2252 10140 9 0 7 1 8 (`X%crsg"c BDFChar: 2253 10141 9 0 7 1 7 #Rh4C%L`UC BDFChar: 2254 10142 9 0 7 1 8 #Rh4CrsfGC BDFChar: 2255 10143 9 0 7 3 7 "9u%6"98E% BDFChar: 2256 10144 9 0 7 3 7 "Knr2"98E% BDFChar: 2257 10145 9 0 7 3 7 "TJH#"98E% BDFChar: 2258 10702 9 0 7 -2 10 ^p&cMN3L2/0u5RR!rr<$ BDFChar: 2259 10703 9 0 8 1 7 !e:c214[5l14Tjb!e:7N BDFChar: 2260 10704 9 0 8 1 7 TE)J%V?!N04obQ_ BDFChar: 2271 10755 9 0 7 0 9 JUrB'JXMpW69G5J BDFChar: 2272 10756 9 1 7 0 9 JqAT+P.Hg.6oY/H BDFChar: 2273 10757 9 1 7 0 9 rdo`RJqAT+JqOb_ BDFChar: 2277 11009 9 0 7 1 8 plLa8`/'NM BDFChar: 2280 11012 9 0 8 2 8 'EC#k>l]D*>lZb_'EA+5 BDFChar: 2281 11013 9 0 7 2 8 &28V6IkVE6 BDFChar: 2282 11014 9 1 7 2 9 &3,(:3&ilW BDFChar: 2283 11015 9 1 7 2 9 3&ilWrd6[: BDFChar: 2284 11016 9 0 7 1 8 *tKGXIJ@b( BDFChar: 2285 11017 9 0 7 1 8 q!e(V^)mgf BDFChar: 2286 11018 9 0 7 1 8 +E7+(59CCX BDFChar: 2287 11019 9 0 7 1 8 ":cNfr:odV BDFChar: 2288 11020 9 0 8 2 8 'EC#kIfTM!IfMA,'EA+5 BDFChar: 2289 11021 9 1 7 0 9 &3,(:3&pnb3"Q&i BDFChar: 2290 11026 9 0 6 0 6 rr2nKJqEt% BDFChar: 2291 11027 9 0 6 0 6 rdo`Rrr2ls BDFChar: 2292 11028 9 0 6 0 6 rk=taL4]C) BDFChar: 2293 11029 9 0 6 0 6 rdr#Ho(r=c BDFChar: 2294 11030 9 0 6 0 6 &3+e&F>sg3 BDFChar: 2295 11031 9 0 6 0 6 &3*pd>W<8p BDFChar: 2296 11032 9 0 6 0 6 &3,(:6mrTH BDFChar: 2297 11033 9 0 6 0 6 &1BsGHoMZ; BDFChar: 2298 11052 9 0 8 0 6 )utHgs+(-"s+#S!)uos= BDFChar: 2299 11053 9 0 8 0 6 )usIKJ:N0#J:M,0)uos= BDFChar: 2300 11054 9 1 7 0 8 3.-,Qrr.:m2uipY BDFChar: 2301 11055 9 1 7 0 8 3(-/dJq?BY2uipY BDFChar: 2302 42800 8 1 6 0 7 r.'=mJ:N0# BDFChar: 2303 42801 8 1 6 0 7 I"6`l"9\l& BDFChar: 2433 65533 9 1 7 0 10 rr0pKqY'@Vmf*1c BDFChar: 2434 686 9 0 7 -3 10 ^`XaC+X&!P+X%p.!5I BDFChar: 2457 8357 9 0 8 0 7 IK2q>8UsS:GlYqd8H;<^ BDFChar: 2458 8358 9 0 7 0 10 6=OD%s%<;\7RBEA BDFChar: 2459 8360 9 0 7 0 10 i/j%eR-:E@OcbY( BDFChar: 2460 8361 9 0 6 0 10 JqAT;ri5t;`e&dB BDFChar: 2461 8362 9 1 7 0 7 nqsHIWiDeb BDFChar: 2462 8363 9 1 7 -2 10 ")"9\]) BDFChar: 2465 8409 0 1 1 0 0 z BDFChar: 2466 8453 9 0 7 0 11 E.ELkF9iF)8Vm`X BDFChar: 2467 8454 9 0 7 0 11 E.ELkF9iF,8Vm`X BDFChar: 2468 8455 9 1 6 0 10 4@"FI5WD#ZJ3Z3s BDFChar: 2469 8471 9 0 7 1 10 4@6TTV7E:n69G5J BDFChar: 2470 8480 9 0 7 6 10 ELTr_d/X.H BDFChar: 2471 8490 9 1 6 0 10 KSY__^js4nOGJPi BDFChar: 2472 8491 9 1 6 0 12 0M!ktG_Ca'r.K`VKE(uP BDFChar: 2473 8512 9 0 6 0 10 rh*(9-kn'X:n[df BDFChar: 2474 8517 9 0 6 0 10 pnXXYU8"BVU87Pa BDFChar: 2475 8518 9 0 6 0 10 %LNP(8rAL`MFp&4 BDFChar: 2476 8519 9 0 6 0 7 I%m@LTV.s, BDFChar: 2477 8520 9 2 4 0 10 5QCfBTV.sNTV13C BDFChar: 2478 8521 9 1 6 -3 10 #QOie'GM5q'GM5q'_hY. BDFChar: 2479 8530 9 0 7 -3 12 +CH<7+X.$p&0OlY'bqGr BDFChar: 2480 8602 9 0 6 3 7 +@Q3"+92BA BDFChar: 2481 8603 9 0 6 3 7 #XnY;#QOi) BDFChar: 2482 8604 9 0 7 4 7 nA(oh BDFChar: 2483 8605 9 0 7 4 7 %g-C2 BDFChar: 2484 8606 9 0 7 3 7 ,Y7r+,QIfE BDFChar: 2485 8607 9 1 5 1 8 +E48%E2Xm% BDFChar: 2486 8608 9 0 7 3 7 ,SL+i,QIfE BDFChar: 2487 8609 9 1 5 1 8 +<[V%+K06% BDFChar: 2488 8619 9 0 7 3 8 ![U;76m)I0 BDFChar: 2489 8620 9 0 7 3 8 5bt-(+p7lG BDFChar: 2490 8632 9 1 6 3 9 quH6%TTBEZ BDFChar: 2491 8666 9 0 7 1 7 &3iG[5X,e[ BDFChar: 2492 8667 9 0 7 1 7 #lFc(!rN<( BDFChar: 2493 8682 9 1 5 0 8 +AdmHDuaiRDu]k< BDFChar: 2494 8683 9 1 5 1 8 +AdmH:f)uC BDFChar: 2495 8688 9 0 7 3 7 bdrA:bQ%VC BDFChar: 2496 8689 9 0 6 3 9 rd_YcW2,"F BDFChar: 2497 8690 9 0 6 3 9 Jk@L2H34'G BDFChar: 2498 8692 9 0 7 3 7 ,Z=Y?,QIfE BDFChar: 2499 8695 9 0 6 3 7 -qO>.-ia5I BDFChar: 2500 8696 9 0 6 3 7 -m\d;-ia5I BDFChar: 2501 8697 9 0 8 3 7 .KE$?s+!Z@.KBGK BDFChar: 2502 8698 9 0 7 3 7 .SB_5.KBGK BDFChar: 2503 8699 9 0 7 3 7 <)W`o;ucmu BDFChar: 2504 8701 9 0 6 3 7 +CMok+92BA BDFChar: 2505 8702 9 0 6 3 7 #RpP<#QOi) BDFChar: 2506 8703 9 0 7 3 7 ,\F`%,QIfE BDFChar: 2507 8718 9 1 6 0 8 r;?Kjr;?Kjqu?]s BDFChar: 2508 8720 9 1 6 0 10 KS5#3KS5#3KS97' BDFChar: 2509 8725 9 1 6 0 11 "9\u9&.fs,5X9jM BDFChar: 2510 8726 9 1 6 0 11 J:KmM+s BDFChar: 2524 8765 9 1 6 5 6 Qt-0s BDFChar: 2525 8766 9 0 7 4 7 @ZcL: BDFChar: 2526 8767 9 0 6 2 9 5bOd3&desK BDFChar: 2527 8768 9 3 4 0 9 J3Z@b5_+B8J3X)7 BDFChar: 2528 8769 9 1 6 4 7 &9PE) BDFChar: 2529 8772 9 1 6 3 8 &9O9^r#bt> BDFChar: 2530 8777 9 1 6 2 8 &9O9NA@N`^ BDFChar: 2531 8778 9 1 6 2 8 A=*@-QiR$a BDFChar: 2532 8779 9 1 6 1 8 A=*@-QiLZa BDFChar: 2533 8780 9 1 6 3 8 Qt-3p!;lfs BDFChar: 2534 8822 9 1 6 0 9 $o#IN%)=P*0YdYg BDFChar: 2535 8823 9 1 6 0 9 ^b?0N^^Mp40FRp] BDFChar: 2536 8847 9 1 6 1 6 r.' BDFChar: 2579 8989 9 4 7 7 10 n.6-B BDFChar: 2580 8990 9 0 3 0 3 J:N1> BDFChar: 2581 8991 9 4 7 0 3 &.fEB BDFChar: 2582 9115 9 4 8 -3 12 #S8+$5X7S"J:N0#J:N0# BDFChar: 2583 9116 9 4 4 -3 12 J:N0#J:N0#J:N0#J:N0# BDFChar: 2584 9117 9 4 8 -3 12 J:N0#J:N0#5X7S"+I?349,?] BDFChar: 2621 10106 9 0 7 0 8 4FY3*a8Ja4od+49,?] BDFChar: 2623 10108 9 0 7 0 8 4FY3Fp[@R"49,?] BDFChar: 2624 10109 9 0 7 0 8 4FZJJkM,0K49,?] BDFChar: 2625 10110 9 0 7 0 8 4FZJJj88"g49,?] BDFChar: 2626 10111 9 0 7 0 8 4FZ%Me^`E'49,?] BDFChar: 2627 11034 9 0 6 0 6 WW7VNJcMeN BDFChar: 2628 11035 9 0 7 0 7 s8W-!s8W-! BDFChar: 2629 11036 9 0 7 0 7 s+,`PJUrCP BDFChar: 2630 11360 9 0 6 0 10 5X7S"pd"U>5X9bu BDFChar: 2631 11361 9 1 5 0 10 ?m$R7p`T>S+E BDFChar: 2641 4056 9 0 8 0 8 pj`X#.Y%eTs+#n*WW7hTO+731 BDFChar: 2642 7620 9 0 0 0 0 z BDFChar: 2643 7621 9 0 0 0 0 z BDFChar: 2644 7622 9 0 0 0 0 z BDFChar: 2645 7623 9 0 0 0 0 z BDFChar: 2646 7624 9 0 0 0 0 z BDFChar: 2647 7625 9 0 0 0 0 z BDFChar: 2648 7626 9 0 0 0 0 z BDFChar: 2649 7627 9 0 0 0 0 z BDFChar: 2650 7628 9 0 0 0 0 z BDFChar: 2651 7629 9 0 0 0 0 z BDFChar: 2652 7630 9 0 0 0 0 z BDFChar: 2653 7631 9 0 0 0 0 z BDFChar: 2654 8255 9 0 7 -3 -1 JO2I! BDFChar: 2655 8256 9 0 7 8 10 4@4T! BDFChar: 2656 8266 9 0 0 0 0 z BDFChar: 2657 8272 9 0 0 0 0 z BDFChar: 2658 8274 9 0 0 0 0 z BDFChar: 2659 8275 9 0 0 0 0 z BDFChar: 2660 8276 9 0 0 0 0 z BDFChar: 2661 8287 9 0 0 0 0 z BDFChar: 2662 8288 9 0 0 0 0 z BDFChar: 2663 8289 9 0 0 0 0 z BDFChar: 2664 8290 9 0 0 0 0 z BDFChar: 2665 8291 9 0 0 0 0 z BDFChar: 2666 8292 9 0 0 0 0 z BDFChar: 2667 8293 9 0 0 0 0 z BDFChar: 2668 8294 9 0 0 0 0 z BDFChar: 2669 8295 9 0 0 0 0 z BDFChar: 2670 8296 9 0 0 0 0 z BDFChar: 2671 8297 9 0 0 0 0 z BDFChar: 2672 8298 9 0 0 0 0 z BDFChar: 2673 8299 9 0 0 0 0 z BDFChar: 2674 8300 9 0 0 0 0 z BDFChar: 2675 8301 9 0 0 0 0 z BDFChar: 2676 8302 9 0 0 0 0 z BDFChar: 2677 8303 9 0 0 0 0 z BDFChar: 2678 8306 9 0 0 0 0 z BDFChar: 2679 8307 9 0 0 0 0 z BDFChar: 2680 8381 9 1 7 0 10 HpU.d6Ms+<5X7R7 BDFChar: 2681 8400 0 0 0 0 0 z BDFChar: 2682 8544 9 3 3 0 10 J:N0#J:N0#J:N.M BDFChar: 2683 8545 9 2 4 0 10 TV.sNTV.sNTV.qX BDFChar: 2684 8546 9 1 5 0 10 W2QYnW2QYnW2QWp BDFChar: 2685 8547 9 0 6 0 10 U8"BVPa%DsLkpie BDFChar: 2686 8548 9 0 6 0 10 JqASB6prFO-kHpi BDFChar: 2687 8549 9 0 6 0 10 MMd:K;GpCj+sJ32 BDFChar: 2688 8550 9 0 6 0 10 WiE)!WiE)!8kM\U BDFChar: 2689 8551 9 0 8 0 10 Wdq+"Wdq+"Wdq+"Wdq+"8q9Na8q6mA BDFChar: 2690 8552 9 0 6 0 10 U8!m:LkpkOPbOlP BDFChar: 2691 8553 9 0 6 0 10 Jj`!T-kIdT6puV, BDFChar: 2692 8554 9 0 6 0 10 MMb;0+sJ4/;Mp>3 BDFChar: 2693 8555 9 0 6 0 10 WiE)!8kM^UWiE'! BDFChar: 2694 8556 9 1 6 0 10 J:N0#J:N0#J:ROt BDFChar: 2695 8557 9 1 6 0 10 I"6`tJ:N0#J:N"I BDFChar: 2696 8558 9 1 6 0 10 n;)aNKS5#3KS]*t BDFChar: 2697 8559 9 0 6 0 10 JqD"^WiD5FJqARS BDFChar: 2698 8560 9 3 3 0 9 J,k+MJ:N0#J:IV" BDFChar: 2699 8561 9 2 4 0 9 TE(XXTV.sNTV)8b BDFChar: 2700 8562 9 1 5 0 9 VuWcpW2QYnW2K[r BDFChar: 2701 8563 9 0 6 0 9 J,l=M+sI!e BDFChar: 2704 8566 9 0 6 0 9 $37*+WiE)!8kK'` BDFChar: 2705 8567 9 0 8 0 9 $@i*VWdq+"Wdq+"Wdq+"8q9Na BDFChar: 2706 8568 9 0 6 0 9 J,l=S+92BA BDFChar: 2726 8671 9 1 5 0 8 +<^G%p`QMS+92BA BDFChar: 2727 8684 9 1 5 1 8 +Admh:f)uC BDFChar: 2728 8686 9 1 5 2 10 +Af"5LtGO#Du]k< BDFChar: 2729 8687 9 1 5 0 10 +Af"5LtGO#fSK;& BDFChar: 2730 8737 9 1 7 2 10 &.i4l:f)uI#QOi) BDFChar: 2731 8738 9 0 7 3 9 $Oel11^j`l BDFChar: 2732 8774 9 1 6 2 8 A=*Ap&H!XN BDFChar: 2733 8775 9 1 6 2 9 #],k>r#ko& BDFChar: 2734 8814 9 1 6 2 8 #RiE60J"=H BDFChar: 2735 8815 9 1 6 2 8 #fn\>0]4&R BDFChar: 2736 8816 9 1 6 1 9 #Ri]>0J"@E5QCca BDFChar: 2737 8817 9 1 6 1 8 a>b.ni#qq_ BDFChar: 2738 8818 9 1 6 1 8 $o#IN$ijh* BDFChar: 2739 8819 9 1 6 1 8 ^b?0N^]7o4 BDFChar: 2740 8820 9 1 6 0 9 #Ri]60H:XG\0(bO BDFChar: 2741 8821 9 1 6 0 9 #fntF0[LAQ\0(bO BDFChar: 2742 8830 9 1 6 0 7 "?=1V"9;u" BDFChar: 2743 8831 9 1 6 0 7 J8bp9J,j,I BDFChar: 2744 8878 9 0 6 0 10 TV.sRUqWe+TV.qX BDFChar: 2745 8879 9 0 6 0 10 TV/*V^8ScMYb7Wh BDFChar: 2746 8880 9 1 6 2 8 #Qu"&(^(*E BDFChar: 2747 8881 9 1 6 2 8 5_*5^@":KB BDFChar: 2748 8894 9 0 0 0 0 z BDFChar: 2749 8912 9 0 6 0 6 5!Y^4Sj5I> BDFChar: 2750 8913 9 0 6 0 6 p]U-pnc\^f BDFChar: 2751 8914 9 0 6 0 6 3(/q0WiE'! BDFChar: 2752 8915 9 0 6 0 6 WiE)!P!h80 BDFChar: 2753 8918 9 1 6 3 7 $o#UR$ig8- BDFChar: 2754 8919 9 1 6 3 7 ^bC^$^]4?7 BDFChar: 2755 8920 9 0 6 3 7 .TE?G.KBGK BDFChar: 2756 8921 9 0 6 3 7 W)P6GVuQet BDFChar: 2757 8922 9 1 6 -2 10 $o#IN$ip2*^b?0N^]4?7 BDFChar: 2758 8923 9 1 6 -2 10 ^b?0N^]=94$o#IN$ig8- BDFChar: 2759 8924 9 1 6 2 8 qu@-Z^b?/s BDFChar: 2760 8925 9 1 6 2 8 quFMd$o#Hs BDFChar: 2761 8926 9 1 6 1 9 ":-j*0Yf@J"98E% BDFChar: 2762 8927 9 1 6 1 9 J3^>40FTX#J,fQL BDFChar: 2763 9135 9 0 8 -3 -3 s*t(L BDFChar: 2764 9204 9 2 6 0 8 #T,OGpinb8#QOi) BDFChar: 2765 9205 9 2 6 0 8 JAC+4q!d4WJ,fQL BDFChar: 2766 9206 9 0 8 2 6 #QPhE4og'4s*t(L BDFChar: 2767 9207 9 0 8 2 6 s+#S!4ocQ&#QOi) BDFChar: 2768 9208 9 2 6 1 7 f\"j/f\"gV BDFChar: 2769 9209 9 1 7 1 7 rr2orrr2ls BDFChar: 2770 9210 9 1 7 1 7 I/a-Err.9F BDFChar: 2771 9216 9 2 6 -3 12 LrcN^L]E6eLiJFJ*a BDFChar: 2780 9233 9 2 6 -3 12 n;)mVn,R]`J9V&:?m$S2 BDFChar: 2781 9234 9 2 6 -3 12 n;)mVn,R]`J9V(`#]P=h BDFChar: 2782 9235 9 2 6 -3 12 n;)mVn,R]`J9V(`#]L(= BDFChar: 2783 9236 9 2 6 -3 12 n;)mVn,R]`J9V&J:ltG` BDFChar: 2784 9237 9 2 6 -3 12 LrcN^L]DCMpkSp+OPl4V BDFChar: 2785 9238 9 2 6 -3 12 G^s`=n,S8@+U BDFChar: 2816 10005 9 1 7 1 7 Jj_!u-q&Xe BDFChar: 2817 10006 9 1 7 1 7 `pS46I."uS BDFChar: 2818 10692 9 0 8 0 8 s+#ZNJq/N)Lk(S;TRah.s*t(L BDFChar: 2819 10693 9 0 8 0 8 s+%n8TR`,SLk(//Jq/E&s*t(L BDFChar: 2820 10694 9 0 8 0 8 s+#WMLk)LUS:IViLk(#+s*t(L BDFChar: 2821 10695 9 0 8 0 8 s+#WMS:I>aU4AtgS:H-?s*t(L BDFChar: 2822 10696 9 0 8 0 8 s+#WM^4;r.U4Atg^4:`as*t(L BDFChar: 2823 10697 9 0 8 0 8 quDBMKE.WpP^r[^&:b=B++O=k BDFChar: 2824 10728 9 0 6 0 7 ro.I!-n#W< BDFChar: 2825 10729 9 0 6 0 7 rf0ZG-n#W< BDFChar: 2826 11037 9 3 5 3 5 i8EMn BDFChar: 2827 11038 9 3 5 3 5 i1T!. BDFChar: 2828 11044 9 0 7 0 7 4F[>1s8RO1 BDFChar: 2829 11157 9 0 7 2 8 #Rp_4rX9&4 BDFChar: 2830 11160 9 0 7 0 7 !tI*)r&tSm BDFChar: 2831 11161 9 0 7 0 7 (`5(dEdHo" BDFChar: 2832 11162 9 0 7 0 7 ^i2sl5C@Fc BDFChar: 2833 11163 9 0 7 0 7 J`g?7/1_VT BDFChar: 2834 11164 9 0 7 0 7 !tINmr&tSm BDFChar: 2835 11165 9 0 7 0 7 (`5@tIX^I2 BDFChar: 2836 11166 9 0 7 0 7 ^i4Zc5C@Fc BDFChar: 2837 11167 9 0 7 0 7 J`hK24?OGt BDFChar: 2838 11194 9 0 8 0 8 ++OoQ&:j\/P^oBVKE-Z*qu?]s BDFChar: 2839 11195 9 0 8 0 8 ++PG`++XBAT7EPaKE-Z*qu?]s BDFChar: 2840 11196 9 0 8 0 8 ++PG`++XBAs+(-"quHWpqu?]s BDFChar: 2841 11205 9 1 7 0 7 &.gf\I!kqm BDFChar: 2842 11206 9 1 7 0 7 rr.:m3&hH\ BDFChar: 2843 11207 9 0 7 1 7 !tRWr57[hr BDFChar: 2844 11208 9 0 7 1 7 _!q:%r:%K% BDFChar: 2845 916 9 0 6 0 10 &.g6<-q$HkJqEt% BDFChar: 2846 937 9 0 6 0 10 3(/@MJqAT+6n%I' BDFChar: 2847 956 9 1 6 -3 7 KS5#3KS5$RJ:N.M EndBitmapFont EndSplineFont gambas-3.16.3/app/src/gambas3/.hidden/font/LICENSE000066400000000000000000000105521411575327000212160ustar00rootroot00000000000000Copyright (c) 2012 Dimitar Toshkov Zhekov, with Reserved Font Name "Terminus Font". Copyright (c) Benoît Minisini, with Reserved Font Name "Gambas Font" This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. gambas-3.16.3/app/src/gambas3/.hidden/font/gambasb12.otb000066400000000000000000001003401411575327000224510ustar00rootroot00000000000000pBDF qk-HEBDTu;0\OEBLC<&(FFTM ԯGDEF-,OS/2vkx`cmapN$Fglyf+head6hhea 4$hmtx "loca+maxp X name ^+post2- ._< );f`HH`Z@1" PfEdH`ZH` MM< |~ )w~':JloEMWY[]} ' : > C I K O Q q !! !!!!!"!$!'!?!Q!_!!!!!!!!!" """ ","."C"E"H"k"}""""####!#$ $ $$%%K%%%%%%& &&`&c&f&o&''')** + ++/1  )pz!@`n HPY[]_  0 < C G K N Q p t !! ! !!!!"!$!&!>!P!S!!!!!!!!!"""""#"."B"E"H"`"z""""#### #$$ $$%%%P%%%%%& &&9&c&e&i&''')** +++,0zxuY  a_][YXWVUSRQONLK:21-*)'&ued;5-('$ [NEA_MJokge_^\ZQM'%$"{ ޸޶ݼݪa~h      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aZqcdh\wojui4"r89fv -k{bmS3l|`MNVWRS(9kl[xTXbrxptuvyyws<hy#!@ :  Z o F~      2Copyright (c) Benoit MinisiniCopyright (c) Benoit MinisiniGambasGambasBoldBoldFontForge 2.0 : Gambas : 30-10-2020FontForge 2.0 : Gambas : 30-10-2020GambasGambasVersion 001.000 Version 001.000 GambasGambas2  >CL\fn$Zfkqs ~xHH<  FONT-xos4-Gambas-Bold-R-Normal--12-120-72-72-C-60-ISO10646-1SIZE12 72 72FONTBOUNDINGBOX6 12 0 -2COMMENTGenerated by fontforge, http://fontforge.sourceforge.net ter-u12bFAMILY_NAMEGambasFOUNDRYxos4SETWIDTH_NAMENormalADD_STYLE_NAMECOPYRIGHTCopyright (c) Benoit MinisiniNOTICELicensed under the SIL Open Font License, Version 1.1WEIGHT_NAMEBoldSLANTRPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGCAVERAGE_WIDTHCHARSET_REGISTRYISO10646CHARSET_ENCODING1MIN_SPACEFONT_ASCENTFONT_DESCENTDEFAULT_CHAR  c1A; 00m>E>@6,`x ca`aϜ000006 009`Ͷa6Ͷ6g1000010`>0`ca66o`6Ͷ 04mӀ00 ` 0 0a <` 0 0` 6m6o06m6o6`0 0 m gp o p` y 00aa 0a ` 0 06`pg 0m{ 0{msoa{m 0m`aa0 08 08` 0 0``m`smm0{m{ 0{y`mmpo@g`mcc a 0 0 0a0 0{ 0cc6sm pp 0 0͘g`pgx%$ax͜ 3 g0gm۬0릊(01 0smpfchBchBc B 0@6o`6o`!Bo`jo`P6o`!Bo`p 00@00!O0P0@ 0 0 0 0!@ 0 0P 0 04ӀJo @6m6m!G6mjmP6m'6@mm!MmP mq 0'so 0so0soP0Bso!G {mᜉ '{m  {m 0{m!M`!L0m` ` <Ͷ`J 0 0J0 0p 0 00 0 0 0'0 0 0 00 0  0 00 0 <`mmaa0 08 0Ȁs/@ 0 00 0r# 0 0Ȁ0 0G6msmr'6mȀsmO6o6`{ 0r 08 00 1 1 yamlMmp!6`S`s6m70cccacka 0aa`sjo6sg{ 6o`p 1 8` 0B{m `2` <`ik ` `6mm`6o0 00 0 gǿm p` mA g` Aqy `qy m`g`pg0mo6 0{mso>go`'o`8`9[`o`o`smm`m0{ 0 0ms`mm`Aym`ayc꺺@{m{`soso <ͶaB 0{0{0 00 00 08c.> <Ͷ`8`o`mm6@Sj@ 8Ͷ 06 ,`Ϭ`q;!; $PPp>g KP.PPg m^02m 6so  g @7 g 8aCa6msmpr"*@Ȉ*@p@*@ 0{ 0øs̶c'ocA>Ag '> <`<`YeZ`ByeZ`B `o` coc g`Bo`B 0 0o`'pgP6o`pgpp>0'sooaPoaP >>Pc1gp `mP `mP6msm6soP6osoPcp gmP gm)MgmP g`m` 0 0ÂP `m`ca0ya0 p`g` s`ψs`{mw]uݠGuݠ k&hɬh 3 0 05]u ]u 4u _u  { 6ih0JsoBBBBso**sosoj>j̾!O0so`C 0 00 0 0 00 06msm6m smBBsmBBsm*sm*smsmsmjͶjͶ!G6msmvmBwm@vmwmvmwmj]mJwmvmwm mmm mmBAmDmAmĝmAmjvmJAmmAm@y 0m y 0m:y 0mj30Jm m mٰ 96 y rmkBkm٠Akm٠AHkm٠Dkm٠A)km٠%km٠r٠r٠Ao`Ao`Q(o`Q"o`IHo`IBo`rsm`rsm`B{0A{0AH{0D{0A){0%{0B>A>Q($IHDBmaAmaAHmaDmaA)ma%marͶarͶaB6o`A6o`Q(o`$o`IHo`Do`ro`ro`Ba`Aa`AHa`Da`A)a`%a`ra`ra`A 0 0 0 0Q( 0 0$ 0 0IH 0 0D 0 0r0 0r0 0BsmAsmAHsmDsmA)sm%smAmAmQ(mQ"mIHmE"mBmAmAHmDmA)m%mrmrmA30Q"30D70r70Bo@Ao@AHo@Do@A)o@%o@rm@rm@AmS`AmS`Q(mS`Q"mS`IHmS`IBmS`rsmS`rsmS`km٠Bkm٠{0B{0maBmaa`Ba`smBsmmBmo@Bo@Bkm٨Akm٨AHkm٨Dkm٨A)km٨%km٨r٨r٨A_uP _uPQ(_uPQ"_uPIH_uPE"c_uPr}Prc]}PBmiAmiAHmiDmiA)mi%mirͶirͶiA_uP_uPQ(_uP$_uPIH_uPD_uPrM}PrM}PBoHAoHAHoHDoHA)oH%oHrmHrmHA]ugc]ugQ(]ug$c]ugIH]ugDc]ugrugrc]ug'km٠km٠km٨km٨Bkm٨Ȁkm٠'km٨o`p6o`@6o`B6o`4_uP  r r mimiBmiȀmaȀmi@00@`` 4uPAHA)r'a`a`@``Ȁa`r ` 0 0p 0 0 0 0! 0 0D%r'mm@mm sm0 sm0Ȁmr m3 0p y 0@y 0y 0` 0DmdmH0 00 x1a Q@C3 |C3P mE !@10`0`c m`80*Ϫ om` o<0m`.(g>s`00g>s`6s6sop0 09s6pc`sg6psgpnj10` `Ͷ p ><{o>͜>͜c a 0m6p6< 0m 66a <am u<@:8:뮺::]P98 m8뮺cdf/ 1cdf&,pcdf. `0f. `cdf/00f/0 f/01<4f/0chBF BFchBcF BcF BcFhBcFchBcM4df. `c3#> <8 H<kƈk##kc 3( k(#`$ G((c 83 #>8QE>@OEOQOEQ@QE>p?E>ppQE8@>>6p 0g>o>9or> c`sOp{x80o38qosom`0ac??0 ?01qm8`<1> 0 0 0 0 m` ` `g m`6mc 0 0yycx>>?`??;0pw0380?s>3813s3%$f; 8;{ 0xa{N8y <aӎC<C #<a#00>  `g m`6m"ڭ"ҍ""X @"",>!Ͷ 0xsxy'ia0 0,??o68wo0 0ym 00y{ 0xyspyoa   0 0 0   0 0    0 0    0  0   0 00 0 # #0 30 3     0 0   0 0 0 0 0 0   0 0 00 #  # 0 3  # 0 0 3 0 0 3  # 0 0 3 0      0  0 0 0 # # # #0 30 30 30 3 #  #  #  # 0 3  # 0 0 3 0 0 3 0 3  # 0 #0 0 3  #0 0 3 0 0 30 0 30 QEQEQE< QE}QE QEMQE <QEQQE] QESQEO < QEQuQEQE]QE  QESEQEQEMQE QE QE QESQE  QESQEQE QE1   B 0BA   A0 I(a   0 0 0   0 0 0 ?<<<888 0 0 0 0 0 0   qqqLjZZZwwwwwwwww88q888q88qqpq~88q>>mmp>qqG>>my<ym< 1 11100}a@aG@00u?0?0? ? 1 1G ? ? s))RR% (뮜 8ss   ( Ï>> >x1$>뮾>>(>k>!> 1 1esx>>>>> >H ‰>>(>y$yo7 {ps AA pAA p0${\ <$[  $ K4@sEooo 0eYemZomXe_eoe}ieZiis]sϾsθ{?c;s;ss& j(("ۭ"""Ӎ""X>P>>p>ڭ"*>("("P"9jqϜ >>>>.srsS{{< y0 y$00{(8d     0@P    ڇo);fgambas-3.16.3/app/src/gambas3/.hidden/font/gambasb13.otb000066400000000000000000001310641411575327000224610ustar00rootroot00000000000000pBDF 88EBDT Qȵ<t/EBLCɈVFFTM ԯGDEF8OS/2vkx`cmap1'vglyf6head6hhea q4$hmtx,h%loca6maxp X name ^6post27 d_< );f`HH`Z ( @1" PfEdH`ZH` MM l Pt~ )w~':JloEMWY[]} ' > C I O Q V ^ q !!! !!!!! !"!$!'!+!@!I!_!!!!!!!" "/"E"L"k"w"}""""""###!##$$ $$%K%%%%&& &&*&g&o&&'')** + ++/,d1  )p{!@`n HPY[]_  0 C G K Q U X p t !!! ! !!!! !"!$!&!*!>!E!P!!!!!!!!"#"4"H"`"v"z""""""#####$$ $$%%P%%%&& &&*&9&i&&''v)** +++,,`0{yvZ  a_][YXWVUSRQONLK:-*&&;[NMJ_XOK` y޶޴ݾݨKa8p .,Jfpzfbcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnobcdefghijklmnotuv                              ! " # $ !"#$%&'()*+,-. %/ & ' ( ) * + , - . / 0 1 2 3 401 523 6 7 8 9 H I J K L MNOPQ N O P Q R S T URSTUV ` a b cWXYZ[\ d e_` f g h iabghijkl ~ opqr stuvwxyz{|}~ ()* +,-./0123^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aZrdei\xpkvj4"s89gw -l|cnT3m}`bMNVWRS(:kl[yTXbsyquvwzzxt<hy#!@ :  Z o F~      2Copyright (c) Benoit MinisiniCopyright (c) Benoit MinisiniGambasGambasBoldBoldFontForge 2.0 : Gambas : 30-10-2020FontForge 2.0 : Gambas : 30-10-2020GambasGambasVersion 001.000 Version 001.000 GambasGambas2 ~ %>CL\fn'( 3x>KKKX`bFp#-4>JW_ kxN22FFFONT-xos4-Gambas-Bold-R-Normal--13-120-75-75-P-70-ISO10646-1SIZE12 75 75FONTBOUNDINGBOX7 14 0 -2COMMENTGenerated by fontforge, http://fontforge.sourceforge.net Copyright (C) 2013 Benoit MinisiniFOUNDRYxos4FAMILY_NAMEGambasWEIGHT_NAMEBoldSLANTRSETWIDTH_NAMENormalADD_STYLE_NAMEPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGPAVERAGE_WIDTHCHARSET_REGISTRYISO10646CHARSET_ENCODING1FONTNAME_REGISTRYCHARSET_COLLECTIONSASCII ISOLatin1Encoding ISO8859-2 ISO8859-5 ISO8859-7 ISO8859-9 ISO8859-6 ISO8859-4 ISO10646-1FONT_NAMEGambasFACE_NAMEGambas BoldFONT_VERSION001.000FONT_ASCENTFONT_DESCENTUNDERLINE_POSITIONUNDERLINE_THICKNESSX_HEIGHTCAP_HEIGHTRAW_ASCENTRAW_DESCENTNORM_SPACERELATIVE_WEIGHTRELATIVE_SETWIDTHFIGURE_WIDTHAVG_LOWERCASE_WIDTHAVG_UPPERCASE_WIDTH    A `ٳ` >|P` F 0h͎~ٱ0`0 0` 0l?0`?`0 0alۿv͙Ï 0c`a` Ï6~0`  >f͙`0lٞf͙lٟ 1 ` `0 00000 0` `mݻvlٿf͛0lپf͛ 0`ٳfͳ >` <` 7f͙6lٿf͛0 0c 160p0 0`.ݵjŋ6n߿~ݛlٳf͙lپ`lٳfձlپp0   0`6lٳf͙6l<0`,Zv6l <͛06g 0`a 0a 0` 0` 0ca`0`>͙f͛0`0gٳf͙~0`ٳf͙gf͛0` 0a0` 0` `c >`0>`l >``c 0cc 0c0 0cl 0cflfej` ݻ~ݻ0`alٳf͙alٳf͙0ٳf͙ej`f͙llٳf͙ < mۿv`c6lٳf͙c6lٳf͙0lٳf͙l6lٳf͙c6g 0`f͟3f͛>͙0>͙a`>͙ej`>͙>͙0>͙Fٱ0`~0~a`~~ 0`a 0`a` 0` 0`qϳf͙ej`f͛0f͙0f͙a`f͙ej`f͙f͙?0`'~ ٳf͙0 ٳf͙a` ٳf͙ ٳf͙0 ٳf͙gf͛  ٳf͙gxlٿf͛0>͙ٳ~͛0>͙lٿf͛0@`>͙@`a 0`00`00`a`0`0 0`0`0`0`X`fͳX`0gٳf͙flf0ϳf͙x >`~>`~0 >`~ >`@`~@`X`>`~07f͙a`ٳf͙g7f͙ٳf͙g0 7f͙ٳf͙g 7f͙qٳf͙g0lٿf͛00 3f͛07ٿf͛06lٰej` 0cej` 0ax 0c 0a 0c 0a 0c` 0a0 0c 0a6lٳf͘ٳf1X 3a` 0`60p1    f  0`f͛6lٰ~0` ` znݻݻPݹvlٳf͛6 ٳf͛c͛6lczׯpzׯX1 ׯX1X`ٿf͛0>͙X` 0c 0`X`ٳf͙f͙X`lٳf͙ ٳf͙x ٳf͙x ٳf͙``f͙``f͙X``f͙X``f͙```f͙```f͙~͙x~͛0x>͙x~͛0x>͙<͟lٳxFٱ 7fߙٳo͙gX`7f͙ٳf͙gXc60p0Xc `~y>`0~ 0c 0`y 0c0 0`ٳf͙f͙yٳf͙0f͙پp00`yپp000`lٳf͙ ٳf͙ylٳf͙0 ٳf͙  0<  0`0``  1X`lٿf͛0Xcf͛0lٳf͛0`@4hݵ6l3f͙ ٞf͙a 0aaaa0lٿf͛0f͙ >`~xf͙`3f͙xǙf͙x3f͙0lٳf͙f͙xf͙3f͙x6g 0` ٳf͙g 0x4hݷp0` 0`ZiZi mۿv4L4hG4h0`00< a` 0` 0`6l36lf͙<͛0L>hG~ 3` <0`lٳf|0``ٳf0``6l8x٘|`6g ~0` ٳ͹g|[f͹ fqf͛ 0`0gٳf͙``0gٳf͙~ ~͙CN6͙0<< CF83l͙ <0`7ٳf͙gٳf͙g0n͙ <͙6lp ٳf͙`qf͛0qf͛0c` <0` 0`p 0c\0``,>0`` 0`f͛6l ٞ0`amx0oxg` 0` 0`  0`Ǎ|͛6͙00n͙ ٳ~͛0` 0a3cÏ60 0`gٳf͙`` x` x`@ݹ@׭1@ݵ@6fǍoٳf͙aylݵ@ v۷h@6f6lŋWl@1b6l?f͛0`0`0``0X`00Aej`m```0ej`0lX` ?` 0~V0`֭0`0a6mۿv0 ۷~0 0l6  ``aaf͟6lٰ a 0`af͟6lٰa 0caf͛6lal0`aٳf̓0a 0`plٿf͛0lپf͛ 0`3f >`a 0a6lٿf͛0lٿf͙ 0c60p0<͛0.ݵjŋ6nݿnݛ0lٳf͙lٳf͛0lپ`a 0`6g 0`VZ6l <͛0իV<0`lٳf̓0l 0cl6g 0`0۳f͹00<0f͛0` 0`pa ٳf͙۳f͹͞6f͛ ٳ`q0`Ͽ|00 ? 0`f6lٰam`-Zjթ#jթ#6lٳf͙` ٳf͙`f͛06>3`a 06l <͛ ٞy 3f͙6l֌0`֌0` f͛  0`.ݵjŋ ]jՋ 6l`  6l`6 `c >`l >`6lٰac 0` >`   0cl 0c 3F5j0f͛?m۷p6lٰc60p0`c6mۿv0lٳnl6lٳf͛lٿf͛0 >f͛lپf͛ 0`bŋ6m<` >`իVZj` 6mۿv0l۷~060p0f͛6l0o߿f͛06lٿf͛0lٳf͙lٳf͛0lپ` 0` 0`6lٳf|aVZ6l <͛06lٳf͛0`6lٟ 0VZjիVZjի0`6lvn۷nݻf͛` uv۷nplٟ<0>͙f͙|͛0`ŋl<`~ V 0 Zjիjի0` 6l ٻnݻ >f͛>  npٳ><0~~6lٰa00`0|0< ` 0`` 0`` 0`5j0 ?m۷p6lٰ0 ׯX͎}XӺNV tV(  P@ իVZx`Zilٿf͙~͙l<0` y0`|` >f͛0a0|͛0aիVZj Vlٿf͛0 ~͛pƍ7kׯX07kׯX0 Zi၀6Zi၀ 0`0` 0`@ 0`@6g 0` ٞ 8 f͛0f͛0fݟ0`>`fݟ0`>` 0cVZj V pmZbŋ@ ]jŋ@ 0cٿf͛0>͙llٿf͛0>͙͛?ٳxFٱ>`~`f͙~͙l`f͙~͙lիVZj V x6lٳf| ٳf͙gl6lٳf| ٳf͹gmlٳf|` ٳf͙gl6lٟ 0 ٳ> 0 0`0`l6lٻnݻ ٳvݻ >0` |` 6l <͛0 ٞy0 6l?<͛0 ٞ~y00`ϳf͙>͙@Zjչ@jչ\4h` r4h` 0p @80p @VZjZjFZjջ zջ  7f͙0n͙4x` 4x` `0<f͛6l0a͛6l0aVY5j(Zj(f͛8 H@ 0( @0 @ $HO @D $DDD@@@#*TR*T r r4h4h 8G 8GBD @$G $IbD $D $Hp' D @"C @G @ @"D$E  @ ($ @! XD tB(\l߳f͘AAfAA lپf͛ f͛lپf͛f͛lپf͛f͛a 0`00` ٳfͳ 0gٳf͙ٳfͳ0gٳf͙ٳfͳ0gٳf͙ٳfͳ0gٳf͙ٳfͳ0gٳf͙`a0|`a~a0|a~ 0`` 0``>`~  >` q0`x 7f͙ٳf͙g 6lٿf͛0 f͛06lٿf͛0f͛0l6lٿf͛0lf͛06lٿf͛3 f͛3 6l߳f͘gf͘g 1` 0``0c`` 0ac60p0c ͙ 0`q8` 80`l4l͛` 3f͙lٿf͛0>͙alٿf͛0>͙a~͛0a>͙~͛0>͙03~͛00>͙43~͛04>͙0ٿf͛0a`>͙c33~͛0c3>͙`c33~͛0`c3>͙C33~͛0C3>͙e333~͛0e33>͙ٿf͛0>͙ >`~`# >`@~up>`ej`~a0|a~0|~a`0|a`~up|up3~0>`a`~`# 0c@ 0a 0c` 0alٳf͙f͙`!lٳf͙@f͙af͙af͙f͙f͙a`f͙a`f͙up3f͙up3f͙0ٳf͙a`f͙elٳf͙0f͙`elٳf͙f͙`%lٳf͙@f͙up ٳf͙ej`f͙lٳf͙f͙6lٳf͙ ٳf͙`#6lٳf͙@ ٳf͙dlٳf͙0ٳf͙`dlٳf͙ٳf͙b'6lٳf͙Hٳf͙utlٳf͙ejhٳf͙6lٳf͙ٳf͙`c6g 0` ٳf͙g6g 0` ٳfg@`#6g 0`@ ٳf͙gupl0`ej` ٳf͙gF4hѣF4h 6f͙0l͙6g 0C ٳf|0 ۳f͹0@@۳f͹0۳f͹10۳f͹`۳f͹`۳f͹y f͹y f͹0 ٿf͛00@Cٿf͛0ؚٳ~͛0ٳ~͛0̲ٿf͛01ٿf͛0y3~͛0y3~͛00 0<0@@0<00<100<`0<`0<0 >`0@G>`ؚ0|0|̲0|10|0 f͛0`0@@f͛0`0f͛0`10f͛0``f͛0``f͛0`y3f͛0`y3f͛0`lٿf͛0lٿf͛0ؚlٿf͛0lٿf͛0̲lٿf͛01lٿf͛0y~͛0y~͛00  0`p0@@ 0`p0 0`p10 0`p` 0`p` 0`py 0`py 0`p0  0c0@G 0cؚ 0c 0c̲ 0c1 0cy0cy0c0 f͙0@@f͙0f͙10f͙`f͙`f͙0 ٳf͙0@Cٳfؚ͙ٳf͙ٳf͙̲ٳf͙1ٳf͙0 ٳf͙0@@ ٳf͙0 ٳf͙10 ٳf͙` ٳf͙` ٳf͙yf͙yf͙0@Fl0`l0`1l0`y<0`0 ٳ~0@@ ٳ~0 ٳ~10 ٳ~` ٳ~` ٳ~yfyf0 ٳf̓00@Cٳf̓0ؚٳf̓0ٳf̓0̲ٳf̓01ٳf̓0y3f̓0y3f̓0۳f͹0۳f͹0<00<f͛0`0f͛0` 0`p0 0`pf͙0f͙ ٳf͙0 ٳf͙ ٳ~0 ٳ~0 ۳f͹0@@۳f͹0۳f͹10۳f͹`۳f͹`۳f͹y f͹y f͹0 ٿf͛10@Cٿf͛1ؚٳ~͛1ٳ~͛1̲ٿf͛11ٿf͛1y3~͛1y3~͛10 f͘6f0@@f͘6f0f͘6f10f͘6f`f͘6f`f͘6fy3f͘6fy3f͘6flٿf͛1lٿf͛1ؚlٿf͛1lٿf͛1̲lٿf͛11lٿf͛1y~͛1y~͛10 ٳ~၀0@@ ٳ~၀0 ٳ~၀10 ٳ~၀` ٳ~၀` ٳ~၀yf၀yf၀0 ٳf̓10@Cٳf̓1ؚٳf̓1ٳf̓1̲ٳf̓11ٳf̓1y3f̓1y3f̓1۳f͹۳f͹۳f͹۳f͹0۳f͹0۳f͹0۳f͹ٳ~͛0xlٿf͛0`alٿf͛0alٿf͛0lٿf͛10 0 yy`f͘6ff͘6f0f͘6f0f͛0`0f͘6f`c >`c >``c6lٿf͛0c6lٿf͛06lٿf͛100y 0`p 0`p``` 0`p`` 0`p0 0`py` 0`p 0cx 0c`c 0cc 0c10`y ٳf͙x6lٳf͙```f͙``f͙0 f͛ 0@@f͛ 0 ٳf͙y`f͙l0`x6g 0``c6g 0`c6g 0`0@Gٳ|``````` ٳ~၀ ٳ~၀0 ٳ~၀0 ٳ~0 ٳ~၀`alٳf͙alٳf͙`alٳf̓0alٳf̓0lٳf̓1`0@@???PB (PB`0``0`mflٶٳmٳc`` 0`` ~0`ϟ0 @PP0Ii 0UUP0`lٶTU@0`ٳc`R 000`f͛6ٰ `|cfͶl`Ǜ6ٰlٶl`۶hѣ@>P `PCA@q`8gÀq0qqa```f̀8cp`xxgy|g8c|a8c8c0x 0`00`8c88ٳcfxa`xc0`f0l80`xfxٳfxٳ 6l߳f 0`f͙` #ſLc֭Zl0 ?`L?h?`| 3#ſLlٳf͛0a? ~0` ~0` <`lxp`_1l6<80 ޷b6<80 l -Z 0~a~ 0`0`f͛6lٰfvlٰ4ň X40`f͘ ٳf` 0`>ٳf͛6lٳo @*8 @Z C~00?~~!?08s8s c8 cm66 8 8cv8nq0` G4h-0`|#4h|CGŋ0`|## ?`  0  Í24ň X40`bň Xb{n;/sw^606f͛`q3`Dp H]hу 0`0` 0bņ'@p'ȑ> @>@$E> @>@ 0`>|0` @ @0`0` @< @0`>| @ @ @ @0` @ @0`0`0`0` @ @0`0`0` @< @ @ @ @> 0`0`> 0`0`>| @ @>|0`0`>|0`? @? @? @? @?0`?0`?0`?0` @? @? @? @?0`?0`?0`?0`? @? @ @? @ @? @ @? @0`? @ @?0`0`?0`0`? @0`? @ @?0` @?0`0`? @ @?0`0`?0`0`?0`0`?0`(PB (PB @(PB(PBx @>(PBt(PB @(PB(PB @x(PB>(PB| @ @(PB (PB(PB(PB @x @(PB:(PB(PBt(PB @?(PBw(PB @(PB?(PB @ @(PB?(PB(PBw(PB @0 @ @0 @   "( < @ @|πǏ} "E> >?!   ?x #Xώ H p  ǿ Ʊ 8 ( ( AB( @P`Dp@ D |p^|tp\pP|pDpDp|p|ϟ|q2dɓ@*@:@.P`Dp2|0|ɓ0gɓ2gR|DpP|TpPgTpRgDpQ$P$D $D0`ȑ"|ϟ>|aDCPdDp(0`UZ0`dud*`ɪ*`㺈zDG;U$@AB QqE (PPp#"8 Hp@A"Dp80"Dp)B~ "D Zʵ(P@ Z*8 $H @J @$E"Dc (qJH$H4UիVC@$H6EJ*TR0Q  (U*B(QpAEJ*8BE*8T 8QSH8P#$J88pAʕ>(BG.8T(q&ώ8P͗(8AT AÊT |p@AϿ|p@ @p0Pp0x"Drp@0xřrp@ "Dʙ"L @c 8С0d`d`dj 0` 2dɓ dѻ bų Ynŋ 6bų 6jՓ رdɓ jՓ fų _v۫|~yz==?~}}}zr 1F0XcF ,PM6DM6DM6DM4DED||"8*868H"8O"8ٳf ٳf <‹*`*  <ʚ(x(0 8pÇ?8 ϻ>n .Ϗ>8x(A|p@0LJ<|8 8 ( 8 |`|ϟ>|pH"Dp<@ H"Df͛6<0f͛6<0``B"J"F (*@ "@@B*@@ 6ox0x 4hР l؀ 0aq <0auP3g|ِ>vp>|صjգ~x0Ǜ6lg?8x٘ *^@7 6407 =40l`+5lѢu9Q@60p00ٿf͛0 4iZjճpZjթnѡ`4h0`ƍ4hѯ0?۷m_B_UjuJEAGA_@GTJO$AG_|A (pA 6DKt *R R^DB_?TҕJ_T@CF[ϟ>|6lٳf͛0 0a 0l6lp>RJ*TRPGj|PE"  "@@DL L-2fz0 0``- FF0 CZ- ah`L~9 sc8p0` 0`ٳf͘ ٳfrnpnudqdpdrjw`pn2nɃ0n5dՃ0d 0`>` ~͛7ٰJ+ԩP͛oٰ,Y?Ѡ,_ѠƱ #XƱ  #X& 4ň X40`8  *E?D M40`4i` 0`0` 0`0` 00``` 0`0` 0`0` 0>` 0`0` 0`0` 0`` 0`0` 0`0` 0`0 0`0` 000`0` 0`0` 0` 0`0`0`0` 0` 0` 0`D A--Z @@0`  @ jlpRjDp A6D ALh>D 7d0`DP@ADHDP@ADPdT ABT ,|~yz==?~}}}zr?I??? ? /  P@AT0`x` <0a0`o͞0`lپp38    @P`[p\\]     4K4Q  k}k  ڇo);fgambas-3.16.3/app/src/gambas3/.hidden/font/gambasb16.otb000066400000000000000000001775441411575327000225010ustar00rootroot00000000000000pBDF %+@EBDT EEBLC7FUGPFFTMheHGDEF@OS/2vkx`cmap-d +`0glyf>head6hhea 4$hmtxH)loca>maxp X named>post2@ #ͧ_< );f`HH`Z ^ f@1" PfEdH`ZH` MM2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222& l~ )_w/:JloEMWY[]} ' * @ C U !!! !!!!! !"!$!'!+!@!I!!!!!"0"L"k"q"w"}""""""###!##$$ $$%&&&&&*&7&g&o&&'')** + +,d1  )_p{!@`n HPY[]_  * 0 C G _ !!! ! !!!! !"!$!&!*!>!E!P!!!!!"4"`"n"v"z""""""#####$$ $$%%&&& &*&/&9&i&&''v)** ++,`0{yvZ{ a_][YXWVUSRQONLK:-?";l[NMJVp.!z޷޵ݿ[a`lffh   $ \ J >bcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'() _` bcdefghijklmno qrs tuv w  xy z{|}~                              ! "           #  $ % & ! ' ( ) * " # + , - $ % & .  ' ( ) * + , - .    / 0 1 2 3 4 !"#$ / 0%&'()*+,-. 5/ 6 1 7 8 9 : ; < = > ? @ A B C D01 E2 2 33 F G H I X Y Z [ \ ]NOPQ ^ _ ` a b c d e 9 : ; < f g h i j k l m n o =RSTUV p q r sWXYZ[\ t u > ? @ A_` v w x yabghijkl opqr stuvwxyz{|}~ L M N O  P Q R S T U      !"#$%&' V()* +,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX WYZ[ Y Z [ \\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aZrdei\xpkvj4"s89gw -l|cnT3m}`bMNVWRS(:kl[yTXbsyquvwzzxt<hy"= :  Z o D~      /Copyright (c) Benoit MinisiniCopyright (c) Benoit MinisiniGambasGambasBoldBoldFontForge 2.0 : Gambas : 15-4-2021FontForge 2.0 : Gambas : 15-4-2021GambasGambasVersion 001.000 Version 001.000 GambasGambas2 &>CL\fn'(3>KKKX`bYp#-4>JTr  N 2 2 ,Y@ZFONT-xos4-Gambas-Bold-R-Normal--16-150-75-75-P-89-ISO10646-1SIZE15 75 75FONTBOUNDINGBOX9 18 0 -3COMMENTGenerated by fontforge, http://fontforge.sourceforge.net Copyright (C) 2012 Benoit MinisiniFOUNDRYxos4FAMILY_NAMEGambasWEIGHT_NAMEBoldSLANTRSETWIDTH_NAMENormalADD_STYLE_NAMEPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGPAVERAGE_WIDTHCHARSET_REGISTRYISO10646CHARSET_ENCODING1FONTNAME_REGISTRYCHARSET_COLLECTIONSASCII ISOLatin1Encoding ISO8859-2 ISO8859-5 ISO8859-7 ISO8859-9 ISO8859-6 ISO8859-4 ISO10646-1FONT_NAMEGambasFACE_NAMEGambas BoldCOPYRIGHTCopyright (c) Benoit MinisiniFONT_VERSION001.000FONT_ASCENTFONT_DESCENTUNDERLINE_POSITIONUNDERLINE_THICKNESSX_HEIGHTCAP_HEIGHTRAW_ASCENTRAW_DESCENTNORM_SPACERELATIVE_WEIGHTRELATIVE_SETWIDTHFIGURE_WIDTHAVG_LOWERCASE_WIDTHAVG_UPPERCASE_WIDTH     `0  cl6?` x9``00mp ``so30 `0 ``0 0~ma @@``00 f39s1c`0 `0 `0 <glf3` c1c`00 f3|c1cf3?`0`0@@0 ~``0 f39o3f3c1f0f3c1g`0  3c1`0 `0 c1cf3c1f0?`0 `0 p< 0 `0 0nw;al0g3o3f0f3c1cf3~0 f3c1Lðf3p< 0|g?`0 f3c1c0l31<0l6msl00a0<00fc0x ``00  `0 0` `0`0 a 1  ?1c c1g`0 `1c1cc? `0 c1c  c1f00 0 `0p x< 0`0 mmmc1f0c1cc1gc1c y`0 8g `0 c1c f `l f0c1c  `0p 8`0 `0`0 9`0 `0 `00 ٙa`0fc0x~  0 c10 iՊbN1|l ?0+rZXg< 0 `0 3c1϶g; a00p`0 c0 `666608<`| 08<`000> `| ```0 c0 3c1f03c1f0 1f0;73c1f06f3c1f01f0ٌc1f3`0 `8`0 `0  ~0 6`0 0 `0  `0 `0 l`0  3c1;7 g3o700 3c1c3c1c c1c;73c1c6f3c1c 300<30fs9k9c f3c1c f3c1c 3c1c6f3c1c l31x<  1c3  c1l3f ?1c ?1c ?1c ?1c  ?1c  ?1cl6~l6`0 0pc? c? c?  c?  0 0 0  0  `|c1cc1f0c1cc1cc1cc1c c1ck5cc1cc1cc1c c1cc1c | c1 c1c >f3c1f0 ?1c63c1f0  ?1cf3c1f000 ?1c00 `0 `0  `0 `0 `0 `0 6`0 `0 61c1A1f3 3c1cc1>`0 c? 6`0  c? `0 c? `0 00c? 006~0 c?  o1cc1c 6o1c c1c c1cc1c c1c`00c1c  31f0 c1f0gf3`c1f0;7`0 0 ~`0 0 6`0  0 `0 80 ```0 0 =f3c1o `9c1o0l0 0 `0pp< 0`00 31p< 0`00x< 000 `0  `0  `0 `00`0 `00`0 ca`0  `0 `6  0 pp  g3o70c1f0g3o3f0`00c1f0`006 g3o70c1f0 f3c0g3o3f0 c1f0 >f3c1cc1c63c1c c1c3c1cc1cٌc1f3mo 3~< 0y`0 f3p< 0`00y`0 `006~< 0y`0 |g8g >g8g|g`88g`86>g8g?`0 0p `0 `86`0 `0 ?`  `~ ;7 f3c1cc1c>f3c1cc1c6 f3c1c c1c3c1c c1c f3c1c c1cf3c1c``c1c`` 6 0  ` 6x< c1c l0fc0x  `00  ``00  6  `0 c1gk1|3cc1gc1gc1gc1g`0 g`0 `A`0  3c11f3`0 ~c1c`1c1cf3f`0 ~g`0 c1c|`0 `0 `0 c1c0`0<0 mml`0 ` 1x6` x< 0` `x<3l06mmmgg3o3f3c1f0 f3c1cXf3c1c1mmmg0mmg0 k1f> c1g03p< 0`0 |`0   0 86`0 ` `0   `0  `0 ?`0 83Yc1f3k5f39Ćf a cc10`x fk5f3`1``00   ```p p``0a` < c|`0  `>`0`cqc1`0 `0 al6 al` `0`086Mk79ZMMk7BAMk71l6 ao0,; ao 8 F9c1c &mml&Mml @mmm 61f0 ?1cl`0 0 6c1cc1c63c1cc1c> 3c1cc1c 3c1cc1c6 `c1c`c1c3c1c0 c1c 1c> 1f0 ?1c~1f0? ?1c>ٌc1f3l6{o6 oc1`6o1cc1c 6 fcap< 06 x< 0f3c1c8c1c8>f3c1c8c1c868 `0x0 `0p;m6Yn78 Mk7Mk7 c1cc1c 6 mmlf3f60 8o7gp c1f0pm1f086 ?1c c1f3l6{o6 1v3n;l3c1f06  ?1c3c1f0 ?1cl`0 6 c? `0 c? l`0 6 0 <3`0 0 l3c1c6 c1c3c1cc1cl3p< 06 y`0 3p< 0y`0 l f3c1c6 c1c f3c1cc1c|g008g00?`0 `` `0 00`0`00p`00p6 f3c1f06 c1f0f3c1f0 1f3 f3c1c>1c``00 8 8f3c1f0 ?1c`0 `8c? `8> c1cc1c>c1cfc1cf3c1cc1c>c1cc1c~0fc0x c1c `0A@1f3  `0C@0 `0pmmf`3mmg`0fsYc1f0FC!h8 h4  `0 ?A`0 8g0 0`0  f3c}gc1f3f30l0FC!p8 s? `00 `0pf3c10c10f3p< 0`x 0fgx 130c? ٜc1qc1f c1g c`0 cc10c9c1`c?g 1cl3 >0  >g |n1c0 `0p;c10c1c `7cx< 1xxf3c`0 c1f0 c1f0p0 0 p`0 ` > `0 88 l>c8mmgmmg mmm f3c1c1`0{7p1cal6ᙆmf`m`0 c`0 c0 0`0 `0 p`0  c? 0~1g8gp`0 `0 `0p`0 ``0 @@`0 ` `0 <1f8a1c1`x<3l01ml0`1c1f0x     `0x `1٘v`0  fp `c`0 >f3c1c~1g;1c`@`7a1f00 pax<631`0`0 pcc10 `0  fp mo7mn7glYn70 f1c͆l6 `0p l6  m6M 8 9f1c8 f6fc5`c1?c0``KKDQFآF `KFآ `0 0 ?ml0 Eh0  `01{}yn09o=g0 gl0  g`0@  ```f?0l00```0 `` f3c1f0```0 `` 6 a``l31x< `` 6 ap 0 pf3c1f0f3c1g`0 fa`0 ``00 f3c1f0f3c1c?`0 p< 0f30l00nw;al0g3o3f0|f3c1cf3c1f0f3~0 0 ?`0 0fc0x mm0a0<06mm? 6 apf`0 f0fc0x yf70>0 c1f0 `0  1c1yf70f3f1ff``0c1>0 ``0 c1f0 cc10 px< 0`0< f03c1Ͷ1f3<00 c1cl6 0c1`0  c1`0 1c1smm`0<1mm`03 mf` 0 p 1c1c1c1c13 mf`p< 000f3f1c1lc10Qp0 ``Qp0 f0Qp0 m`0mf`8  p f3c1c@ c1c@ `0p `0p `0 `0 `n;0 `a a00 e0 l6 mf`00p3 mf`00p f3c1 c1  ac1f08~0 > >9ǃ`0<80 qac1`0 `0 8  pc1>`0 0 `0pf3c1c~0? 1c3  ac1`00 al0al6c1`0 g`0 `0 6g`0 6`0 ?|3c0 < `0 `0|g`0 f`0 `0  am6M3c1fY?v3c0 p< 0fs9{9f0 c1c |0l6 ao`f3c1f0c1gf3c1g`0  af3?l0`0 6gxc mo0~1g?sm}lcf0c?  c?  n9f0 `0 ~08g0  0 0 `0pn6Mc1fY f3c0x< 09o=g0 c1c  ao`l6mmf`3 mf` |3c `0 c3 al6 {al6 f?6m`x<3m1Fs)oڭP#e7P?fa`x~?6mxm7lsќjZPmg7ڭP60 |c|c|m~m?`0f3c1c1c0c1<fllc1<f un[p kun[p Yc1@c5<3 M6 af`<33 af`* 6 mf`?3 mf`f`0 0 `0 0 l fv{=yn0 9o=g0 c1g~1gf3}0 c1`0 `3`0 `0 0 f1f08`>f086gxg`8p< 0 x< 0 0l70Yx< ưp< 0 x< 08fcax6f0x< 0c1f3p1~3p3ٌc1f3{1f3> amm ao6m im6pj5`0 `8`0 `8?`0  `0  0fc0x  f`00fc0x  f`00fa0<l0l f0=c1f3f3c1|p1fpf3Y~ `0k`0 c1f0~1f0c10 f?c10  f? `0 fmxg```p  `0x>fs9{9f09o=g06fs9{9f0 9o=g06f3c1c c1cf3c1c1c6f3c1c 1c60 ~ ?>f3ccc1c |6f3cc c1c | f3cc c1c |6f3~`0 c`0`0 @`0 @60l6 mo0  mo0`0 `0 `0a0<0 l f0 0a<0l?f0`0c1c ?1clmg`6{mg<l `l6s ``0xp p Yk5l`k5l`6 mmlamlc1c`1c?f3a`3ax`0 80 f3c1l0 c1l0 eq8N'ilD'i@ B! A `0   H$!@@ `0 !@Z axXB!B!D""f3c1f08 ?1c8f3c1g c1gf3c1g  c1g f3c1g c1g`0 `8`0 `8 3c1`1c1c 3c1 `1c1c  3c1`1c1c 3c10p`1c1c0x 3c1@pl`1c1c@pl~0 c?  ~0  c? `0 @plc? @pl`0 c? 6`0 `8 c? `8`0 `0 >c1cc1c |f3c1f0 c1f0f3c1f0  c1f0 6f3c1f06 c1f0f3c1f3 c1f3f3c1f08 c1f08`0 0  `0 `0  p< 0  x< 0p< 0  x< 0 p< 0 x< 0 `0  `0  > `0  >`0   `0 `0  `0 @pl`0 @pl 0nw;ml0mmm0nw;ml0mmm0nw;ml0 mmm g3o3f0c1f0g3o3f0 c1f0 g3o3f0c1f0g3o3f0@plc1f0@plmk3c1c``c1c6c1cfc1c0 c1cc1c c1c c1c 3c? c1gf3~0 c1gf3p< 0y`0 f3p< 0 y`0  >f3p< 0 y`0  f3p< 0y`0 |g8g|g 8g |g 8g>g `g|g 8g ?`0  `0 ?`0  `0 ?`0  `0 ?`0 @pl `0 @plf3c1cc1cf3c1cc1cf3c1c@plc1c@plmk f3c1c``c1c63c1cc1c;7l31< f0l31<  f 0 0l6msl0  ` 0l6msl0 ͆f0l6msl0 `0l6msl0 `0l6msl0@ `@0a0<0l f0f0a0<0 l f00fc0x c1c | 00  ``00    ``00   c1f0f `0  ` c1c |`a ?1c`0 `0  >0  >0 3>0 >0 1>0 `00~0 `~0 l30~0 c~0 f60~0 f~0 c1f0  c1f0  c1f0 3c1f0 c1f0 1c1f0 ;7c1f0 ;7c1f0 `0031f0`31f0l3031f0c31f0f6031f0f31f0k31f0m;031f0 `0  `0  `0 3`0 `0 1`0 ;70 ;7 0 `03`0 ``0 l30`0 c`0 f60`0 f`0 ;7 f0 ;7c0 c1c c1c c1c3c1cc1c1c1c`07c1f3a`1f3a6c1ccc1cf603c1ccc1c1c1 1c1 1c131c11c111c1;7c1;7 c1` 6x< c 6x< f 6x< m;0c1x< 3 mf` 3 mf` 3 mf`33 mf`3 mf`13 mf`;7mf`;7 mf``00cc1p`cc1pl30cc1pccc1pf60cc1pfcc1pkcc1pm;0cc1p yf70yf70 >0 >0  c1f0 c1f0  `0  `0  c1cc1c 1c11c1 3 mf`3 mf`yf708 yf708 yf7083yf708yf7081yf708;7ͼf708;7ͼf708`00xf3l08`xf3l08l30xf3l08fxf3l08f60xf3l08fxf3l08;7 p86f08;7 p86f08c1f0v c1f0v c1f0v3c1f0vc1f0v1c1f0v;7c1f0v;7c1f0v`0031f0``31f0`l3031f0`c31f0`f6031f0`f31f0`k31f0`m;031f0`3 mf`` 3 mf`` 3 mf``33 mf``3 mf``13 mf``;7mf``;7 mf```00cc1p``cc1p`l30cc1p`ccc1p`f60cc1p`fcc1p`kcc1p`m;0cc1p`yf70yf70 yf708yf708yf708yf70yf70`fxf3l0~f?0l0`xf3l0`00xf3l0f?0l0``;7 c1f0vc1f0vc1f0vc1f0 c1f0v0`0 ```0 0 f3c1f0`` f3c1f0f3c1f0` ;7`0 `0 0 `0  `0 `0 ;7 `0 f`0 ~`0 0 `0  `0 31;7 1c11c10 1c1 1c1c1 c11c1;71c1f0fc0x ~0fc0x 0l31x< ``l31x< `7al6 0  3 mf``3 mf``3 mf``3 mf`3 mf``0f a``f a0f ap``f ap 6 ap`  xx @P( @P @@  l6 ! 6 @`0 `0 `0`x< x0`m 0,Vf`````k*a`0+*e`  6m 3`mͰ@pl` al6`x8 x<all6 afc1 f03l6f?}l6 h0`0 h0h0 ap0 `0 ap` ap 0p0aa8`0```|0x`0x8``08`8`` ``<a<a8 l80 al0 l8 `x?mmala`0x `9fYc10`~ ?x< Ah4 (`0  +Մ`0 MI?hh449Ćf a? Ah4?m6Mio008 ``0008 ax 08 ` < ` <08  <  <  >@>|`00`` ? 0`?` ? 0`?Hؐ6@6$ `` @@0d @0&,@  H$A @ AH(($@ @ @@ @  08$2? H$!H  P( B @`0H @P(  P( @P( x&2$c &" b "0$*#  (" (" `~1(a  8q3`Dp  " *l i x"CD"@>@ >D" >| >< < < <D2 @ @ @ p8p8ZV@ @ pp@ >@ ?p8~?p8@ @ p8p8@ @>p?~?@!Cq@ @ @>@ p?@ @ ?p8p?p8~?@ @~?p8~?p8@!@ C@ q@ @!p8qp8@ Cp8p8@ @ ?@ @ p8p8p8p8@!C@?Cq@!@ C@ @?@ C@ q@ @!p8qp8@ @ Cp8@p8@ Cp8p8p8p8 @P( @P(>@ ? @P(~ @P(@  @P( @P(@> @P? @^ C @Q @@>@  @P/ @P( @^ @P(C@  @Q @P( @ @ P(@  @P(@P(C @Q @C@  @Q @P( @@P(@ @ @A@@@ @@@PH" P D @ @ p8>8p8?@ 8p8p8@ ????~?~?|>|>x<x<p8p8`0 `0 |>|> 0 0 0 0 0 0vĝ'lIvĝ'lI<<<<<<|>|>|>|>|>|>|>|>|>|>|>|>?A OA G].O|>D"?A |>D"~>?~"!@p8>@P("O@ 8@ ( `A x? X# A|D 8( ?0 1`A0 ? 1?9`@@p|@PDA@PT]@D A @A?q8G#A?A พO G?x<`8B3@`@ AA  x>x8> `H$ q8OG#y8O O/$I$O@P("O@P(2O@P(& `(#$y Oy$OO$O$O O਒y y$O$਒O H("  H"B!~?D"|> O$ e2!H BRH@R@ `? Q`? S`?( `(#( `(#PQA@P( @P( A " "@ " "@ @pDA DA8 ꈂA N(( @ pA HD dI'I%B ]tI$*"x TZ(P( ($pDA DA OA H$ A fXD"ȔJ0BTU*JP4$sBPT* H0*$ ("( X  UPT*@ HD! $HĒI$*H'*URDH'k*CD"H'%H|"H'(D)0H'!8"H'Ēt*O*U|Ok?C|>O3D>O('8"Op o?@ H$ pD"^&8< |"` c1 3yc1f0 ql6a`0 h0 h0hhh0 %2DHC HHC BHC%2^HCBBHCuBRHC HHCeJRHCeJBHCjZHC{w}a }m wm}m*j#   at<> 5mt m ? ? ? /< 3N  k  {PsAQ#ATYLFSEA@P(eBA H$$" H$ A A H$ A? B"2* |$ EDQD*&"! (  p8p |<|| (| $ 9 &8x8(#8     ~ x~  aa 003333333  al6` f<0` lVW^vVV  ffvv~nnff   ffff~~~fB  ~~~  cflxppxlfc lllllnmmm 80,# .-`80,# ;-`<00krXYˤp< 01f0?44?6Mi鵚fMMh4h4 4 Ah408 P\$HA$Lx ʙ!!HP 8* IPp*!)D""H C?A8A(bfPADPhA!H@$Q%IQ)JIR*|`@1 !zf~?f3c1g``00 0` `00<-f ʅBPT* BP@U*@P"  " "ȘȘ0dEF @$ @ @0 ~02."`dL"`dL ?` `  0` `@ @ B!@B!"It"" t""$"")$"" $""IT"""" t"ItA? tA?$A? $A?| @> @ ( |P( * B^T* ( @P(  |( D#H$0h`X0`ш4`>ffH"!P(@P("H D ( p8" " ("$P(@P(" < @ @ @@ @ @ @ @   @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @!@ @  @ @ @ @ @ @ @ @ @ @ @ @ < A< m@ @ p8p`0 `0 تU*U$>`@"L`` iLFA AAAZ!PƀZ!#@ ?@ {w}a }m wm}m*j`a v9<>;9@ 9@0`9 ^"^ @P/   |p 'x D"`("``0  c1~3c1f?c1JR\W+ZVT^+ZV!rx>18> c1f3pf3pBJD* `f30> `0  al6 `6mmmm6m9g1@0l31<6ms9b05ZVUrLP*ZVURT6ms9g6m0a0<06mFs9m5ZVejZP `0 `0  3c10nw;ml0`0 l6 ``mmmmg3@ f`ms9b0UjLPPVUjTmg3mx  0`ls9mUe2ZP`0 `0 `1c1cmmmlO'mc?6mmmUwmc`0 g g`0  ?Q#J!I^P | |A(AA(AA(!IR `x ʅBPk5BP"`?b` ?@0` C `8`0@80p `( "|T( ( E"PX, @0 0 P'<U*JTU$0``0QQPTAPTTT~``~0` 0 @@ѐ0` @0 @ @ ppA?OTU*OTU?OI2LI)Ok*].PqA 舂A B @` pD"vfa JVؐZ^S/&8  eop)(*-<.[X\^l_\]bc   e $ + %+29AHNTZbiou{,O I ".J) M7MP , #2?Lx ",6@JT^h | &9NTZ`flrx/<N^q E);fgambas-3.16.3/app/src/gambas3/.hidden/font/gambasr12.otb000066400000000000000000001003441411575327000224750ustar00rootroot00000000000000pBDF D-42EBDT0hO`EBLC\ FFTMWGDEF-OS/2U?#x`cmapWW% glyf*headڞ6hhea 4$hmtx#Hloca*maxp X namejv*post2, >ft_< #s4`HH`Z@(1 PfEdH`ZH` MM22GG22222h~ )w'EMWY[]} ' : > C I K O Q q !! !!!!!"!$!'!?!Q!_!!!!!!!!!" """ ","/"C"E"H"k"}""""####!#$ $ $$%%%%%%& &&*&g&o&'')** + ++/1  )pz HPY[]_  0 < C G K N Q p t !! ! !!!!"!$!&!>!P!S!!!!!!!!!"""""#"."B"E"H"`"z""""#### #$$ $$%%%%%%& &&*&9&i&'')** +++,0{yvZ W.,*(&%$#"  {vsnljfedN>=nj6) :(%JHBA?=40 cޭޫݵݱݟa   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a2rdei4xpkvjsgwl|cnTm}8b%&./*+ :{CD3y,0:syquvwzzxt<h"'F :  Z o D      8Copyright (c) Benoit MinisiniCopyright (c) Benoit MinisiniGambasGambasRegularRegularFontForge 2.0 : Gambas : 15-3-2021FontForge 2.0 : Gambas : 15-3-2021GambasGambasVersion 001.000 Version 001.000 GambasGambas2  @EN^hp9@v xHH< )FONT-xos4-Gambas-Medium-R-Normal--12-120-72-72-C-60-ISO10646-1SIZE12 72 72FONTBOUNDINGBOX6 12 0 -2COMMENTGenerated by fontforge, http://fontforge.sourceforge.net Copyright (C) 2012 Benoit MinisiniFAMILY_NAMEGambasFOUNDRYxos4SETWIDTH_NAMENormalADD_STYLE_NAMECOPYRIGHTCopyright (c) Benoit MinisiniNOTICELicensed under the SIL Open Font License, Version 1.1WEIGHT_NAMEMediumSLANTRPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGCAVERAGE_WIDTHCHARSET_REGISTRYISO10646CHARSET_ENCODING1MIN_SPACEFONT_ASCENTFONT_DESCENTDEFAULT_CHAR  A; EE>Q@ + $(@PBA@APP  BA" PA@B )(  ȢA "Ȣ"' ! @> @!B ""/ "Ȣ $(   袊   A (    ʪ "("/ "("/(    (E * P QB  AA  AG"@p' (z z(r/AAz( (     0IFQ   @򪪪( r(( z(z z q@(% *@BR (Bb!    F* z(CC1$HPp  ĈQ"HPm0#8)J( kp#p#xp#p( (0! 1$0BCHBQCHB! BQ @"/ "/ !G"/ J/ P"/ !B/ $p 0@  !O P @    !@  P  KQJ"* @"("(!G"(J(P"(B'&@((!H(P(QB <($Ȣp'Bp'p'Jp'p'!Bp'pz 0r/Br/r/r/  B     袉J( r(Br(r(Jr(r(  rj(B(((B( ( (p"/ p'/ 'p'"/!p' Bz !G z  z P Bz P$(Pz(KQ 袉p r/>'r/  r/ r/P Br/!G z( 'z(  z( 0z(!H袊 !H ( II   -馪p jpJ~a``aF(( e[m`d[mPF@YePFP"/ Bp'P  B  P"(Br(P(B(p"(p(((P(P(@(@( p/ pp'p/ pp'p$pphz(P Bz(P ( PIFQ "(r(p"(r(P B!  B  0 馪p (p~ Bz( (@"N @ʪ ( r( p'$pBp!'&rjG"/ p'r'"/ Ȁp'O r/r >Ȁr/@    r"  Ȁ  G"(r(r'"(Ȁr(O"/( z r I$H(jh(B ( z$z( z(r/ `vz ' ' r+"AAz(z(z&BP ( B ( B (  `  ! @b @   Ҫq$I$ I$A* r/~Ir*@r!   z  z ##( O"z   0AA  !`A8 I/HH%  R r"(B BB!  ! B @@  A@r(/"r&z./ AAb  Bz(Bp@8@~~~8MDD%'r// P/ P **P '  # p (P (P"(r("袉r/P"/r/P ' p' (P' ()H' (P' (   Pʪ , CA yA P BR S OR 袉z(j@ @ +"(@Ȭ(@ #  *@⪪@ (@@ z&((@< (@ z I$J y$J I*$ $ ʫ,( (r`"(z(* *@ ( N (ʪ, (ʪ*(0A(0A (0A"0A.:+."袈p'x "Ȣ  ("Ȣ ("Ȣ ( 0Bz 0 $( z($(z($(z($(0z(0$(z(@@r/r/ r/ r/xϠ 0'r/0  8 p z( 袊  ( 袊  ( P袊 P ( II"0q$I"0袈 (       ( IFQ  ( IFQ  ( IFQ     @p  p  @    @    B򪪪  򪪪 򪪪 ʪ ( ʪ ( ʪ ( ʪ"("BȢBȢPȢPȢ@r(@r(r(r("/ B( "/ ( "/( z "/( z p"/( z "/( z   z  z  @ %z  z  z    q@  q@  q@  q@(((p(x((B(B(P(P(j@"E J% E % @* ** B*P* * * ** * P BR PP BR QB (!O B B B ( Pq@'*'(t' A0A A" "A""/ p'"/ p'BBr/ BBp'*r/ *p'r/ p'jȾ j!@/ p'Ⱦ @Ⱦ @Ⱦ jȜȾ jȜ/ 'p' r/ r/j@>Jr/BBBBr/**r/r/j>jȾ!O r/`B        "(r("(r(BBr(BBr(*r(*r(r(r(jȢjȢ!G"(r(b(Bv(@b(v(b(v(j](Jv(b(v(((( ((BA(D(A(Ę(A(jb(JA((A(@QB (QB (:QB (j@"B J( ((QEP1"QBb( *BjhAjhAHjhDjhA)jh%jhrrA/ A/ Q(/ Q"/ IH/ IB/ rr( rr( Bz Az AHz Dz A)z %z B>A>Q($IHDB( A( AH( D( A)( %( rȢ rȢ B"/ A"/ Q(/ $"/ IH/ D"/ r/ r/ B  `A  `AH  `D  `A)  `%  `r  `r  `A    Q(  $  IH  D  r  r  Br(Ar(AHr(Dr(A)r(%r(A(A(Q((Q"(IH(E"(B(A(AH(D(A)(%(r(r(A"E Q""E D"E r% B*@A*@AH*@D*@A)*@%*@r(@r(@A(S`A(S`Q((S`Q"(S`IH(S`IB(S`rr(S`rr(S`jhBjhz Bz ( B(   `B  `r(Br((B(*@B*@BjhAjhAHjhDjhA)jh%jhrrA Q(Q"IHE"r*rBB((A((AH((D((A)((%((rȢ(rȢ(AQ($IHDrrB*HA*HAH*HD*HA)*H%*Hr(Hr(HAKBKQ(K$BKIHKDBKrKrBK'jhjhjhjhBjhȀjh'jh/ p"/ @"/ B"/ (  r r ((((B((Ȁ( Ȁ((@  袊 袊 (AHA)r'  `  `@ ` `Ȁ  `r  `  p  B  !  D%r'((@(( r( r( Ȁ(r ("B pQB @QB QB !@ B>!@#1f0  yp10x! 1#01#0 A ĒH Y0A1GA AČB HČ H!p A  I I$"P" q$Q 4I$I@  ()C<@1 (`BA@B ꪫ ( :I%>@OEOQO~ESeE6P>"  '>/ >Kr!E">E B@RAzx8/<S/(  AC>> > 10 ((`((`!(((`I >>    QEQ@YQ@  % ( "(B  QEQJBpmqJ>*@>>@>>b00#0f ``>3>f `a>#3>#)J(B3 `f ̌z x zJ(y< C<C#< #  >  >  % ( "("ڭ"ҍ""X @""$ >!H exaxR1' (   (??/"8O$A 8( A 8r p8@b`8K$    0 0 0  000  0 0    0 0    0  0   0 00 0 # #0 30 3     0 0   0 0 0 0 0 0   0 0 00 #  # 0 3  # 0 0 3 0 0 3  # 0 0 3 0      0  0 0 0 # # # #0 30 30 30 3 #  #  #  # 0 3  # 0 0 3 0 0 3 0 3  # 0 #0 0 3  #0 0 3 0 0 30 0 30 `m   0 0 0QEQEQE< QE}QE QEMQE <QEQQE] QESQEO < QEQuQEQE]QE  QESEQEQEMQE QE QE QESQE  QESQEQE QE1   B 0BA   A0 I(a   0 0 0   0 0 0 ??<<<<<<888 0 0 0      qqqLjZZZwwwwwwwww88q888q88qqpq~88q>>((p>qqG>>(y<y)<!>!E"!π!O000;0aaF0q00q70> >E B;;#11C?7CsR%RR% (뮜 81$(   ( Ï>> >x1$>뮾>>(>k>!E*!E2!E&ax>>>>> >H ‰>>(>y$yHJaxai,8ss*sg* (8'"'p"'p!ȢȢ$)/ 8AĒI@gs p"/ * "Ȣ QEpĒ)` 8󮬢"M 8(( (ʪ1*SRq*rQE!G*E媊r(sq*sq!6ss!*(PR( s!R*!>ps S!AA pAA p0${\ <$[  $ K4@sEooo eYemZomXe_eoe}ieZiis]sϾsθ{?c;s;ss O     O 8b O O ό #ϼ ˌ "ˬ  " j(("ۭ"""Ӎ""X>P>>p>ڭ"*>("("P")jqϜ >>>>.srsS{z^oi=@|?{8    8HXh|      O# )2=E#s4gambas-3.16.3/app/src/gambas3/.hidden/font/gambasr13.otb000066400000000000000000001243401411575327000225000ustar00rootroot00000000000000pBDF ^0@EBDT5rEBLC\@nFFTMGDEF0$OS/2U?#x`cmap,Ꙁ(,glyf.headڞ6hhea 4$hmtxs&Tloca.maxp X name|t.post20 ?_< #s4`HH`Z  @(1 PfEdH`ZH` MM2GG22222h~ )w)/EMWY[]} ' > C I O Q V ^ q !!! !!!!! !"!$!'!+!@!I!_!!!!!!" "0"E"L"k"w"}""""""###!##$$ $$%K%%&&&& &&*&g&o&&'')** + ++/,d1  )p{. HPY[]_  0 C G K Q U X p t !!! ! !!!! !"!$!&!*!>!E!P!!!!!!!"#"4"H"`"v"z""""""#####$$ $$%%P%%&&& &&*&9&i&&''v)** +++,,`0|zw[ [20.,*)('&$#"  soi@:740,+)&$5*ߐhfpl]-bb    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a6qcdh8wojuiqIruvfv-<:Tk{bmESl1l|<)*23./9GH7x04>tzpvwxy{yu<h"'F :  Z o D      8Copyright (c) Benoit MinisiniCopyright (c) Benoit MinisiniGambasGambasRegularRegularFontForge 2.0 : Gambas : 9-11-2020FontForge 2.0 : Gambas : 9-11-2020GambasGambasVersion 001.000 Version 001.000 GambasGambas2  &@EN^hp+, 7xBKOK\dfFt ,6Tai uN22F"FFONT-xos4-Gambas-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1SIZE12 75 75FONTBOUNDINGBOX7 14 0 -2COMMENTGenerated by fontforge, http://fontforge.sourceforge.net Copyright (C) 2012 Benoit MinisiniFOUNDRYxos4FAMILY_NAMEGambasWEIGHT_NAMEMediumSLANTRSETWIDTH_NAMENormalADD_STYLE_NAMEPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGCAVERAGE_WIDTHCHARSET_REGISTRYISO10646CHARSET_ENCODING1FONTNAME_REGISTRYCHARSET_COLLECTIONS-xos4-Gambas-Medium-R-Normal--12-120-72-72-C-60-ISO10646-1FONT_NAMEGambasFACE_NAMEGambas MediumCOPYRIGHTCopyright (c) Benoit MinisiniFONT_VERSION001.000FONT_ASCENTFONT_DESCENTUNDERLINE_POSITIONUNDERLINE_THICKNESSX_HEIGHTCAP_HEIGHTRAW_ASCENTRAW_DESCENTNORM_SPACERELATIVE_WEIGHTRELATIVE_SETWIDTHFIGURE_WIDTHAVG_LOWERCASE_WIDTHAVG_UPPERCASE_WIDTH  aa  " @ @P@G >(P A@$$( D* @A @@@@@@A( @ @@ $I2DA! @ @ ‰"~ a"D A@$H"D$H @ @A|A A @)ԩR$H"D$H"D @DH"D @ @"D$H"D!p@E 0P @&͕*D&J&L$H"D$H @$H"T$H0P  @$H"D$E  @$J6l"(" @  p @p @! @@D"D @#ȑ"D>@q @ȑ"D#"D @ @ @ @I0P @*TP"D"D"Dȑ"D @ @  @pH"DH( @H*TH(H"D# 0 @ @ @` @!IR@@ @ A (Px@q A#"8">@ @ @ ()hњ0CI$$$+5lժ80!ppG H"DN (P @ 0"C $A`0A`8a!`0@@ $H"D@$H"DPH"D$ "D($H"DP@"D?H"p @ ! @! @P @( @ !!!!P!(!DH"D$ L*L $H"D $H"DPH"D$ "D($H"DEDdʕ*d !$H"D!$H"DP$H"D($H"D!" @"xD"D@@D@D D$ DDP@D@@>@ >@>@@@ @  @  @ @`0G"D$ "D@@"D@"D "D$ "D"D #*T@@H"D@H"D H"DH"D@H"D#"DH"D#8$H"DDDpH>DD$H"D@`D@`  @@ @P @  @ @@ @(  @P@ @( "D( #ȑ"DDH"DpG"D8 @>@Dp @>@ @@>@ @@`>@@`(  @P@>@P"D ȑ"D#Dp"Dȑ"D#"D@ȑ"D#"D0ȑ"D#P$H"DP"DH"D"D$ !$  @8! @Dp! @ @ @! @$H"DHĉ$H!(P CE 0PI0PI0P! @   @ C(! @(    @ @@ 0 @  !&J&L@"D&J&L"D(!&J&LP@"D@"D&J&L "D 8$H"D"DDpH"D"D$H"DI "D'H!L!!$H0P@ @$H0P @( H0PP@ @  @ P    (  P@  @C @pC(  @(  @p @ @p$ H"D$ H"D8$H"DH"DDp$H"DH"DPB$H"DP@H"D$$H"DI H"D$H"DH"D@`P$J6l H*TP$E  @ H"D#(" @!  @   @ ( A P@ a @"D"D$H"D"D"D "D @  @C @DH"D"D$Px#ȑ"D#ȑ"D$H @  @"D @ @q @"D" "D *T  @p!E 0PDI0P @(RJ*T&J&L "D @$H"D$H"D"DRJ)SJ) @A$H @"DH<`  @ @@ D @@ @pA @  @p @`$H"DH"DDH"D$E  @" @DH"D#  >    @8   A@ <  "H@ @B (P@> @@ @u*U*Tcp+% ԪTcp(ԪTa4(PB СB ! ĉ$I!TZZ*` TZZ*P!ҥJ*P!( H"DP@"D( !P@ @( H"DP@"D( $H"DP@H"D8H"D8H"D @"D @"D( @"D( @"D @"D @"D>D8>D8D8@>D8@D8H"pD D ?H"p@>!Hdʕ*d@#*THHH"DD8H"DqDHH @>@8 @q>@HH! @8!q @HHH"D"D8H"Dq"DHHH0P @8H0Pq @HH$H"DH"D8$H"DqH"D   @ @p @c ( $H"D(!"D$H"D @(Pi$G"DH"D   $H"D@D @>@8"Dp@"D8È"D8"D$H"D@"D8@"Dp"D8" @H"D#(h` (Pj H @@*T*Tdʟ*TɑD(PC(P @0@   A @ @$H"$_"D@ DD(PC>Pp@ @ @$H"< ȑ"Dx $H0P "> @HD#<@I"D"D`0"D  H#ȑ"D #ȑ"D> >DAFD@ AB,D Cȑ"D#ȑ"D#&DED ( H"D @0"D0"D! @ @ 0!,   @Ȓ(H#J*TJ*T @*TP!"D"D L*L>D$N!*T@*T@ @@  @ @!!D C!AD @#ȑ"D @ A8 @8 @ԪTaԩTI!ԪTu@$D N"DA$H) RJ $DȒ$HDSd@"T|$@"D$H"<$H"< @ P( Dp P@A$ $  P$ Dp((  @>@J @ʕ @ @dʕ2dI*d $@  @p@ `H A$H"DA @A$H"DA A$H"DA" @A$H"(QH  0$H"D$H"D @@ D @  $H"D$J*D!E 0P@ D&͕*D&J&L$H"D$H"D$H @  @" @AJ*Tp@"(RJ*8 @$H"DQ(!(" @@I"D@@@"D @@ 0H H"DI"DD"DH( A$"D@A @ "D @D$H 0I0P DH"DH( @ @!"Dȑ"D"D @!"D 0H"D*TH(J*T*T 0H"D@"D@H"D@*TE 0P $H"DD$HB @AB @(B @@*8 @*TI0P $H"D"D @! @! @0 @E4H "D (P  $P @%J*T!H*T!$H"D @H"D @"D  @ A$EDH("D$H@ʄ @@ʄ @I0P"D @  C$H"D>@> "x"D @&͕*DM*D"D @  @ @ ! @( @"D ! @ @ !(!p@… *T`D>J*`"D!E 0P !dʕ2dDp$H&4$H"D$H"D"D$H"D @B $I(@ @RJ*TP @ dʕ2dDp$ɕ*dE 0P$H"DeJ"D$H"D$H"D$H"D$H @ @ @$H"< J*T$ED$H"D $HRJ*TRJ*T "D2&J*T"D @ e*TRJ`$HID"D@JTP I*dI*dI0Pĉ$IM*DH>D"Dȑ"D"D @ @H"D#*TH(H"D HJ*T *T "Dș*T"D :T ȑI@@>@>@"D @ @<@ @ @ @  C *T` >J*`"D@I0P@@I*dH"D#H"D$J*T*T"DPBp (|Bp@>TP>TP$IR߫VV"TPȊ8PRNV etV( @P@RJ*8 @ *T$H"D>DH( @q"(P@H( @q"(P@ VZip#VZip# H"D"D8BH*TqH*T8!R$J*Tp@H*T @ @ @ @ `aDp$ɕ*d@I*d@"DD $H"Dh>D… *TP  *TP a*T*T @ @ `@ `@" @H( @" @H( $ED H( "D$H D$H $H H $J H"D"D$X @>@$X @>@!DpJ*TPJTPE 0P!I0P!$H"D@ĉ$I@$H"D!H>D!$H"D@H>D@$H0@H0@&͕*D@M*D@!DpH"DD($H"DD?H"p>!Dp @>@ @"D>D( @"D>D(RJ*TPJTP( @    8'8dʕ2dI*d(dʕ2dI*d($H"D"D$H"D>D($H"D>D( @  8$H"<H"D#($H"<H"D#P$H"<(H"D#($HH @ @($H*TH2T> @|@"( H( "(H>( @"D<@RJ)@J)L ( 2( @0 @0 @¥J*T  *T BJ*T  :T "D&D$H`$H` @@$H"D ȑ"D ҥJ*TPJ$TP$HJ(XQ"p>00$H"D ȑ"D @$J6lH*TREL0PI0P… *TP! ,TP!B *TP! D$H"D ĉ$I  tB(\$O"DAA@"DxAA$H"D"D$H"D"D$H"D"D  @@ @DH"D#ȑ"DDH"D#ȑ"DDH"D#ȑ"DDH"D#ȑ"DDH"D#ȑ"D >@ >@ >@ >@ @ @x @ @xDp @>@ @0 @8"Dȑ"D#$H"D"D$H"D"D($H"D("D$H"D "D $O"D#"D# @  !  @!E 0P!I0PE 0PI0PE 0PI0P @ 8 @8  @  @!&͕*D@*TP&͕*D@*TP&͕*D*TP&J&L@"D&J&L"D&J&L"D&J&L"D "D "D("D("D "D "D "D "D!$H @@"D$H @@"D$H0P@ @$H0P @8$H0P @$H0P @ @   P  PH   @  @  @p @ @p @ @p  8$H"DH"D$H"DpH"Dx$H"DpH"Dx "D "D(H"D(H"D4$H( @$ H( @$E  @H( @ !$J6l@@H*T!$J6l@H*T($J6lH*T$J6l@H*T$J6lH*T"(@H(("(H(" @@H"D#PA        "D(@ 0P@H*TP@H"D##Da  @a 0 @a @$$D`"D$H"DD` $H"D@DA >DA D$>D$D` >D` Di` >Di` DPH"D D!>D!D !>D !D`!>D`!D4>D4DDpH"DD @>@`! @@>@4 @$ >@A >@A >@$>@$>@` <@` >@i` >@i` >@P @ >@`!!@ @! @ @$H"D"D` $H"D@"DA "DA "D$"D$"D` "D` "Di` "Di` "DPH"D "D$$H"D@"D $$H"D@@"D`$$H"D@"D4 H"D$ "D$H"D"D$H"DH"D`!$H"DH"D$ $H"DHH"D $ $H"D@HH"Db%$H"DHH"D4 $H"D$(H"D$H"DH"D !" @@@H"D#" @H"Dh @`!" @@H"D#4$E  @$ H"D#B (PB (PPa"D$D"aAH"<@I"D @@I"D QI"D@I"D I I"D@I"D8A"D8@@"D AH"DH"DPH"DH"DHH"D!H"DqP>DqP>D@@ @@@ Q@@@ I @@@C @ @C @P>@<@H>@!>@@"D @ @@"D @ Q"D @@"D @ I "D @@"D @8A"D @8@@"D @@$H"D@$H"DP$H"DP$H"DD$H"DD$H"D8AH>D8@DH>D@ 0 @@ 0 Q 0@ 0 I  0@ 08A 08@@ 0@!!P!!H!!!qP!qP!@"D @@"D Q"D@"D I "D@"DAH"D @AH"DPH"DH"DHH"D!H"D@H"D @@H"D QH"D@H"D I H"D@H"D8AH"D8@DH"D @B$E  @(HB$E  @D$E  @8@DH @@H*T @@H*T QH*T@H*T I H*T@H*T8AH*T8@DH*T@H"DQH"DQPH"DQH"DQHH"DQ!H"DQ8A"DQ8@C"DQ@@I"D@I"D@@@@@@@"D @@"D @@@ 0@ 0@@"D@"D@@H"D@H"D@@H*T@H*T@I"D @@I"D QI"D@I"D I I"D@I"D8A"D8@@"D AJ*TH !J*THPJ*TH(HAJ*THHJ*TH"HAJ*THqPJ:THqPJ:TH@"D"@ @@"D"@ Q"D"@@"D"@ I "D"@@"D"@8A"D"@8@@"D"@ A :TH  :THP :TH(H@ :THH :TH"H@ :TH8A :TH8@E :TH@H*T @@H*T QH*T@H*T I H*T@H*T8AH*T8@DH*T AJ*TI !J*TIPJ*TI(HAJ*TIHJ*TI"HAJ*TIqP *TI8@B *TII"DI"D@@I"DI"D@I"DqI"DqI"DDpH>D8$H"D $H"D $H"DJ*TH  88@@@"D"@"D"@@"D"@q"D @q"D"@ ! @! @ !$H"D!$H"DBJ*TH Q Q8@ 0 0 @ 0 @ 0q 08@ 0Dp!8! !!!!@@8@@H"D8$H"D @"D @"D "D "DqH"D8@"DDp$E  @8" @ !" @!" @ @CH<@ @ @ @@H*TH*T@H*TqH*TqH*T $H"D $H"D $H"(Q $H"(QJ*TI @@???PB (PB@ A@ @@(@PPA@ C @ @> @ϟ0 @PP0Ii 0UUP @P@R @@PQPAD@ B"J"B PC @|a"D$ BHb$H$ ˖(P@F (>P @PCA@*@ "@@B*@@0C aCxG0CxA0C0C p @ @"DX!0 @H 8`#0<@#@!< Ha!Hp!p@p8 @@ Aq!HH!"( 8! p"@$PB@ @xR@8H"@8H@`# @ $Np p $HH Aq< AuP&_L 7Ds:b&p_*TXjգFxpG"Dqx@@pE ?0P 0 @ *Z@ (Pe 0&$( &*(  @ @*TRK"D"D*ZJ \X"@+5lѢ*TPC*TRQ*TXKu9Q@R@(C$H"(QB"DE 0PPAH"D (PC*TRK (QCJTRSpRJ)^A @ (P … (PA` A`(0!A`IRA` !A` !A` `!A` `!A ` `! ‡` `!A` ` ` `A`( A `(  `( A`( A`AB` !AB@_@D_ *8  ‰ B$<_B_UjuJEAGA_@G?HO?АAB8H_ *8 ?HOTJOA$@Q @$P@@! @( $*8  $C H:h`8*0`8@BA@_@ @E@@ʅ (AA@@ (AB*(? /? AF (OBG_AF xQeTP@EQU4PAG_|PA@@U@H‰_A 8OBA (pA 6DKt *R R^AB[*<(#>DB_?TҕJ_T@CF[$G  @ @@@"D @ `Ÿ $Iʕ*dq@"|$E q @@pqD(P@ < @ `Ÿ Ixϟ>|$H"D$H"D > > @ ($0  @DHP`_!LDHP` ާBDHP`$Hh*TP> >@ @@  @B (PB4(P DH "DH"Dp @ @PB (PO>RJ*TR @*8 @PGj|PE>R|R"  "@@DL L&2&2c   @@\ 2 S~ e0epS2)L` ~|@>>|  `1|C|1|!C|!EP 1`!@`0C @!2&0 @xC(PxG  <@x!( @>@$E> @>@ 0`>|0` @ @0`0` @< @0`>| @ @ @ @0` @ @0`0`0`0` @ @0`0`0` @< @ @ @ @> 0`0`> 0`0`>| @ @>|0`0`>|0`? @? @? @? @?0`?0`?0`?0` @? @? @? @?0`?0`?0`?0`? @? @ @? @ @? @ @? @0`? @ @?0`0`?0`0`? @0`? @ @?0` @?0`0`? @ @?0`0`?0`0`?0`0`?0`(PB (PB @(PB(PBx @>(PBt(PB @(PB(PB @x(PB>(PB| @ @(PB (PB(PB(PB @x @(PB:(PB(PBt(PB @?(PBw(PB @(PB?(PB @ @(PB?(PB(PBw(PB @0 @ @0 @   "( < @ @|πǏ} "E> >?!   ?x #Xώ H p  ǿ Ʊ 8 ( ( WnDp AB( @P`Dp@ D jlpRjDp|p^|tp\pP|pDpDp|p @@0 @@`P` Dpaǟ <||ϟ|q2dɓ@*@:@.P`Dp2|0|ɓ0gɓ2gR|DpP|TpPgTpRgDpQ$P$D $D0`ȑ"|ϟ>|aDCDG?U$@! A6D ALh>DPdDp(0`UZ;;Փ0`dud 7d*`ɪ*`㺈zDE1U$@AB QqE (PPp#"8 Hp@A"Dp80"Dp)B~ "D Zʵ(P@ Z*8 $H @J @$E"Dc (qJH$H4UիVC@$H6EJ*TR0Q  (U*B(QpAEJ*8BE*8T 8QSH8P#$J88pAʕ>(BG.8T(q&ώ8P͗(8AT 0`DP@ADHDP@AÊT ADPdT |p@AϿ|p@ABT  @p0Pp0x"Drp@0xřrp@ "Dʙ"L @c 8С0d`d`djI?@?@@ @|~yz==?~}}}zr 2dɓ dѻ bų Ynŋ 6bų 6jՓ رdɓ jՓ fų _v۫|~yz==?~}}}zr?I??? ? /   1F0XcF ,PM6DM6DM6DM4DED||"8*868H"8O"8ȑ"DH"|ED‹* * <(x(0 8pÇ?8 ϻ>n .Ϗ>8x(A|p@0LJ<|8 8 ( 8 P@AT0`|`|ϟ>|pH"Dpx@  , @.H @$H0P<@ k^n8    0@P`t   !    ڇo#s4gambas-3.16.3/app/src/gambas3/.hidden/font/gambasr16.otb000066400000000000000000001716541411575327000225150ustar00rootroot00000000000000pBDF 3x3lEBDTs=448(EBLC˕FFTMWGDEF3POS/2U?#x`cmapJg+hglyf14headڞ6hhea 4$hmtxLt)loca10maxp X namejw14post230 I O_< #s4`HH`Z d d@(1 PfEdH`ZH` MM22GG22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222d~ )w/EMWY[]} ' @ C U !!! !!!!! !"!$!'!+!@!I!!!!!!"0"L"k"w""""""###!###$!$$%&&&&&*&7&o&&''')))** + ++$+/++++,d1  )pz HPY[]_  0 C G _ !!! ! !!!! !"!$!&!*!>!E!P!!!!!!"4"`"n"z"""""######$$$%%&&& &*&/&9&&'''v)))** +++$+,++++,`0}{x\ avFDB@>=<;:8764310/*" mkigdca_=0'nignjiYOpNJ:$",(#޷޵ޛޓc1 f   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aJrdeiLxpkvjsgwl|cnTm}Pb=>FGBC V:[\KyDHRu{qwxyz|zv<h"'F :  Z o D      8Copyright (c) Benoit MinisiniCopyright (c) Benoit MinisiniGambasGambasRegularRegularFontForge 2.0 : Gambas : 15-4-2021FontForge 2.0 : Gambas : 15-4-2021GambasGambasVersion 001.000 Version 001.000 GambasGambas2 &@EN^hp&'2=KJKW_aZo'1O\d p} N 22  ZZFONT-xos4-Gambas-Medium-R-Normal--16-150-75-75-P-89-ISO10646-1SIZE15 75 75FONTBOUNDINGBOX9 17 0 -3COMMENTGenerated by fontforge, http://fontforge.sourceforge.net Copyright (C) Benoit MinisiniFOUNDRYxos4FAMILY_NAMEGambasWEIGHT_NAMEMediumSLANTRSETWIDTH_NAMENormalADD_STYLE_NAMEPIXEL_SIZEPOINT_SIZERESOLUTION_XRESOLUTION_YSPACINGPAVERAGE_WIDTHCHARSET_REGISTRYISO10646CHARSET_ENCODING1FONTNAME_REGISTRYCHARSET_COLLECTIONS-xos4-Gambas-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1FONT_NAMEGambasFACE_NAMEGambas MediumCOPYRIGHTCopyright (c) Benoit MinisiniFONT_VERSION001.000FONT_ASCENTFONT_DESCENTUNDERLINE_POSITIONUNDERLINE_THICKNESSX_HEIGHTCAP_HEIGHTRAW_ASCENTRAW_DESCENTNORM_SPACERELATIVE_WEIGHTRELATIVE_SETWIDTHFIGURE_WIDTHAVG_LOWERCASE_WIDTHAVG_UPPERCASE_WIDTH     @   CH$? @8@@@  D@A@@ (%@ @@  8*A@@@@ D"1(b!C@ @ @ 8G@HD"@B!C@ D"xB!CD">`0`0@@ >@@ D"qHR'D"B!D D"B!G@ "B!@ @ B!CD"B!D @ @ `( @  Lf2TI H F"HJ#D D"B!CD"| D"B!D"`( xG?@ D"B!C H"!(  H$ITc1H A@ ( DB P@@ @  @@ @ AA>!CB!G@ @!B!CB?@ B!CB!D   @ `P8 @ I$I$I B!D B!CB!GB!C@ 0G@ B!CD  $U*@H D B!C@ `0@ @ @ H@ @ @  A@ DB P| B! I BN!x$ @|K*rR<  @ B!ŢG:@0 `@ B  H 0(P< 0( P<@@@ C "B!D "B!D "~!D 2&"B!D $D"B!D ~!D A H$ D@ C@0 @ @ @ $@  @ @ @ (@ " B!2&F#HJ% "B!C"B!C"B!C2&"B!C$D"B!CP@HD"1(R1KD"B!CD"B!CD"B!C$D"B!CH"!P(!B"B! H"E>!C>!C>!C >!C >!C >!CH$|H$@ @0B?B? B? B?     |B!C B!D B!CB!C B!C B!C B!CJ)KB!CB!C B!C B!CB!CB! B!C<D"B!D >!C$ "B!D >!CD"B!D >!C @ @  @ @ @ @ @  @ (BB!@SB!" B!!B!C<@ B?$ @  B?@ B?@  B? (@ B? B!C B!C$ N!C B!CB!CB!CB!C@0B!CD"B!D  B!D D'B!D B!D 2&@   <@  $ @   @ 0 @@@  B!D"G@0D"G H@   @ ``( @ "! `( @ P8 @ @ @ @ @ @ @  A@@  @  @(@  ``F#HJ% B!D F"HJ#D @ B!D @ (F#HJ% B!D B!D"F"HJ#D B!D <D"B!CB!C$ "B!C B!C"B!CB!CA H$ $I' "|( @ D"`( @ @ @ ("`( @ xG0GxG 0GxG@00G@0(xG0G?@  `@ @0(@  @ ?@@|2&D"B!C B!C<D"B!CB!C$ D"B!C B!CD"B!C B!CD"B!C B!CD"B!C@@B!C H$ITc1H   $U*@H"!P( B!C( DB P@ @@ (@ @ B!GJ!x"CB!GB!G B!G B!G@ G@ @ " B!!D"@ |B!C@!B!CD"D@ |G@ B!Cx@ | @ DB!C @@ ( "I$I$H@ @`( P8 @@P("H $I$I$I$FF#HJ%"B!D D"B!CPd"B! B!CȤR)E"HE"H*B>ሄB!E|0 @@ 0    @ @@ @  @ ?@ 0!Pd"B!* B!;D A BB! ЄB P4"B! @@ ~@@@``@@ A@ 8Cx@ @<@ @CሄB! @ @ @P( @P@@ @ 8I$J%p E"I%pE"I%p!H$ A N (@P/ "B!D! ",JRLQ(",ZRLQ( %DQ( ("B!D >!C(@  ("B!CB!C(D"B!CB!C< "B!CB!C)D"B!CB!C("B!C @B!C%D"B!C B!C~!C< ~!D >!C<~!D >!C<B!D"H$|H$B'CB! x(B!C B!C(DBA@`( (P8 D"B!C0B!C0<D"B!C0B!C0( 0 @ p @ `9)I$J%p8 E"I%pE"I%pB!CB!C"J%DQ(` D"D$  F"HJ#D B!D "*~!D >!CB!D"H$|H$2R1CJ)KH"B!D $ >!C"B!D >!CH@ $ B?@ B?H@ $  8"@  H"B!C$ B!C"B!CB!CH"`( $ @ "`( @ HD"B!C$ B!CD"B!CB!CxG 0G ?@ @@@  @ @ ` @ `(D"B!D B!D D"B!D AD" D"B!C!!C@ @0B?@0< B!CB!C< B!CDB!CD"B!CB!C<B!CB!C< DB PB!C @ A@D"` @  A@ @ `I$I$FbI$I$G@ ĢQHb1L$A P( A H( @ ?@ 0 0G  @ D"ByGD" B!C@D" H A@`0J? @  @ `D"B!CB!CD" `( @p DGPBCB>B!àሄB!E B!GG@  C@@!B!C`@!B!CB?G~!CA< <G <G\!C @ `B!CB!C@'CP(!pPD"B@ B!D B!D `  `@  @hX < @ 0D$!HI$I$GI$I$GI$I$I B!D"B!D R%`~!C N$ I$FQ$I$@ Ǡ@ ǠǠ@ @ `@ B> |!G0G`@ @ @ `@ @@ @@@ @@ 0BCpA !B!@P("H !TI$H @!B!D P  @ p @!t@ D8pC@ <D"B!C|!G:!C`AN!C~!D   `A p($"!@ @ 0!B!C@ D`E$J%E$J$'$ I$J&g0 F H#ȄGD" 0$H$ $I$I$ 8P&D!0yB" BP" @B!>B 0B!D!0D"A``KKDQFآF `KFآ@ ~ ?I$H  BP @ bQ(R1D 1J)F @GH G`0@@@ @@@@D> H 0@@@ @@D"B!D @@@ @@D"B!C DB P@@$ A `@D> H D"B!G@ @D" O@ @@ D"B!D D"B!C@ `( @D" H Lf2TI H F"HJ#D xD"B!CD"B!D D"|  ?@  DB PDI$I A@ ( $I$I$*$ A$@ H DB P(D"C< B!D @ !B!(D"CD"D!ED @@ B!< @@ B!D BB!  `P8 @ (D B!G!D" 8 B!CH$ @B!G@ D"@ !B!bI$I$@ (!I$I @ " I$F ` !B!B!C!B!A$I#``( D"D!C!HB!! B@ @@@PH! B@ Q$I$@ I$F2X8L`D"B!C@ B!C@ D@ 0 @ 0@ @ @LZ2 @ ! A   E H$ $I$F `" I$F `D"B!B!B!D 0: <<1@ (0  ሂA `B!@  @ !0T* B!<@  @ `D"B!C| >!B"B!@  Lf2TI H TA H$B!@ G@ @ $G @ $@ >x"B 8@ @ xG@ $@ @  A I$I("B!DQ(>d"B `( bQ(R1D B!C H$ A O@@D> H B!GD"B!G@  A D"?H @ $EBp8*I @ 8GbQ(R1D $ Db1(R)D `( D"B!H Lf2TI H D"B!D D"B!CD"B!D D"| @ ?@ D"BC $I$* DA@ (H D"B!GD"|@ $I$I$I$O$I$I$I$O8x"C H$ E"O B!G |%DQ(J$D"|D >!C`B!|!G@ D"!O B?P8 G1J)F 1J)F P8 B!H U$H ~!D B!CB!D B!G@ @ B!CxI$I$G@ H D B!GB@ I$I$OI$I$O@<C E"O |!G>DQ(IBD B? B?\1D @ | 0G    @ ` N$I(B!DQ(B!D"P8 1J)F B!C A O@H$I$I$F" I$F|!D#@ D## P(@P( @D>$I @P("I "BQ_*JB!(J/J?DA@@pT*$I PI /ID8U*J(N*J( xCx CxI$PTI$* @ D"B!C~!C ЈB!( D HhB!( D  U*JR0 *U*JR0 D A QA B!DQ(!G"Q(ĒI$I$0J%@ @0@ @0?@ @ @ @ DB PD @ DB PD @ DA@ (H0H D0>B!D"CЈD"CD"|@0B@0D"H| @ R@ B!D |!D " B?"  B? @ DI"Pp8*I "P8 |!D P>D D"B!H B!H D"B!D ~!D D"B!D ~!D D"|@` B@`  Lf2TI H U$H @ $ "B!D >!C$D"B!D >!CB!D"`H$rN$$ @  B?@ B!C~!C$@ B!C ~!C$$EBp8*I P8 $@ xG <G@@@` @ p<bQ(R1D 1J)F $bQ(R1D 1J)F $D"B!C B!CD"B!C~!C$D"B!C ~!C$ | ><D"BGB!C$D"BG B!CD"BG B!C$D"|@ B@ @ @ ( H$ E"O  E"O @ @ @ DA@ (H H D  DA@(H H? D @ xDB!A>!CHI$F@$rI$F8H @H$b @@ 8@0@0 I$I$I(` I$I(`"J%DQ(`B!DQ(`B!C@!C?D"B @ B p@ 8 "B!D, B!H J%Q(J%J)DD")O1(2GD"B!H0B!H0B!B!D""BJD*D"B!D 0>!C0D"B!GB!GD"B!G@B!G D"B!GB!G@ @0@ @0"B!@!B!C"B!@@!B!C@"B!@!B!C"B! `@!B!C `"B!@P@!B!C@P| B?| B?@ @PB?@P@ ȘB?Ș$ @ @0 B?@0@ @ <B!CB!CxD"B!D B!D D"B!D @B!D @$D"B!D $B!D D"B!D"B!D"D"B!D 0B!D 0@ Ș Ș@ @ `( P8 `( @P8 @`( P8 @ @ @ @<@ @< @ @@  @ @ @P @ @P Lf2TI H I$I$I  Lf2TI H I$I$I Lf2TI H @I$I$I @F"HJ#D B!D F"HJ#D @B!D @F"HJ#D B!D F"HJ#D @PB!D @PLɀ"B!C@@ B!C$ B!CDB!C B!CB!CB!CB!C"| B!GD"| B!GD"`( @ D"`( @@ @<D"`( @@ @D"`( @ xG0GxG@0G@$xG 0G <G @GxG@0G@?@  @ ?@ @@  ?@ @ ?@ @P@ @PD"B!CB!CD"B!CȘB!CȘD"B!C@PB!C@PLɀD"B!C@@ B!C$"B!CB!C2&H"!(  D  H"!( @D @  H$ITc1H  $U*@ H$ITc1H  $U*@( H$ITc1H  $U*@ H$ITc1H  $U*@ H$ITc1H @ $U*@@ A@ ( H D ( A@ ( H D  DB PB!Cx@  @@ @@@@ B!D H@   $U*@ B!Cx@ !>!C@ @8p@ "a@H"EB!D"B!D @>!C@`D"B!D >!C"B!D  >!C*"B!D $>!CG"B!D @>!C2&~!D 2&C"B!D @ >!C@~!D >!C ~!D >!C`~!D `>!C2&B?D 2&CD"B!D @ >!C@@ @B?@@  B?2&@  B?@  B?*@ $B?@| @B?2&| 2&B?@ @ B?@0@   @ @  D"B!C@B!C@0B!C B!C"B!CB!C*"B!C@B!CG"B!CB!C2&B!CB!C"B!C@B!C@G"B!CB!C G"B!CB!C0#B!CB!CdLG"B!C B!CHD"B!C@B!C@D"B!C@B!C@0D"B!C B!CPd"B!*B! Pd"B! *B!`Pd"B!*B!dLPd"B!*B!PD"B!*B!  DB PB!Cx DB P@!D" r0H"!P( B!Cx2&H"!P( B!Cx$ A H$  H$ @HB!@@@ &CD">CB!!Hx(D"C(D"C (D"C(D"C (D"C (D"CĔJ"C2&ĔJ"C@ $@D> H @@D> H P$ @PD"H D@PD"H H( @PD"H H@PD"H 2& P("$2&P("$< <  < <  <  < @ | @| P$ | D| H( | H| B!D B!D  B!D $B!D  B!D "B!D 2&B!D 2&B!D @ "~!D @"~!D P$ "~!D D"~!D H( "~!D H"~!D )D>B! %D>B! ` `  ` `  `  `2&``2&``@ '@ @@ P$ @ D@ H( @ H@ B B B!CB!C B!C$B!C B!C"B!C@ '"B!D!@B!D!P$ "B!CDB!CH( "B!CDB!C!B!!B! !B!$!B! !B!"!B!2&B!2&B!$R%(@D(H( %(@" I$F" I$F " I$F$" I$F " I$F"" I$F2&I$F2&I$F@ #BB!C0@BB!C0P$ " A pD" A pH( " A pH" A pdLD"AdL D"A(D"C(D"C< < B!D B!D  ` `B!CB!C!B!!B!" I$F" I$F(D"C@(D"C@ (D"C@(D"C@ (D"C@ (D"C@ĔJ"C@2&ĔJ"C@@ $@D> H @@@D> H @P$ @PD"H @D@PD"H @H( @PD"H @H@PD"H @2& P("$ 2&P("$ B!D dB!D d B!D d$B!D d B!D d"B!D d2&B!D d2&B!D d@ "~!D @@"~!D @P$ "~!D @D"~!D @H( "~!D @H"~!D @)D>B! %D>B!" I$F@" I$F@ " I$F@$" I$F@ " I$F@"" I$F@2&I$F@2&I$F@@ #BB!C0 @BB!C0 P$ " A p D" A p H( " A p H" A p dLD"AdL D"A(D"C(D"C(D"C@(D"C@(D"C@ (D"C (D"C@D@PD"H |@D> H @@D> H @ $@D> H @D> H @@2&B!D dB!D dB!D d B!D  B!D d @ @@@  D"B!D @@D"B!D D"B!D @  2&  ` `@ `@ ` `2& `D@ |@  @ @ $"2& !B!!B!!B!!B!B!B! !B!2&!B!D DB P| DB P H"!P(@@H"!P(@'!D"" I$F@" I$F@" I$F@" I$F" I$F@ "B!C@@D"B!C D A@@$ A$ A@xx @P( @P @@  l6 ! 6 @@ @ @ `x< x0`m ($ %%B J  @ @*@@ " $("$ A H$@ A P0 xHx<!D"@@PHD"B 'H$D x\( }|_?`0 @8 A `   @ A `@ A `  ` A A 0@ @@@x p@ p 0@@  0@0@@@@ 8A8A 0@PD 0 A H  H0@p BPA HA @ p@z!<BPT* XP( @ <@x$O`( ?p8< A J&I " < @P( +@ 8 (# &$A `8 (# )$A `8  +@ 8J%|Q(N B!D B!D E#QV%`"lZPL&K*rP?J%DP(J%DQ*?J%xT)N SeQD%DQ(@)E"CDP(P( ( @P( 0  0 8 0PT$ 0 ` ` 0`0( 0H$ @8H$ 0 `H$  `H$ @8 `H$  `H$ 0@  @P(  BPT* @(J%Q(J" H"!( "HQHR)B *JRTUD*ZVURT(ID!J%J A@ ( "E"D")H*JQ(JU*J@ @ "B! Lf2TI H @ @P(  PT* @DJ%D @R)R)B @RTU*DPVUjT(D%J H D @R("H@RTJ%*J @ @ @!B!CI$I$I (F#b)#"Q(J%)VUg)#@ GG@ `H$  `@P @@ T! BP *H0($ ( ! `<HA$Lx ʙ!!HP 8* IPp* B!~BB BP BD@ TP *! @"!)D""$@ C@ @ H"A@! Pp@*H @R@@@P @ @@  @ P@$ ?T" $?@@ ?U"B @?@@D"* ?@@??Q#?P( @P(6? P(6@T(,*(@T (h( C?J!I^P | |@P@\@THHy^A( @DA8A(A(AA(AA(bfPADPh!P(6!IRU"*B   A!H@$Q%IQ)JIR*|`@1 !zf H#( @ @hLB!@ |G@H| GDDR)$Q@DA $(@ BA H$~  H ~~?D"B!D D"B!G @ A@@  @@  8*D|@@!(Ž@@!(`P)ނ@@!((D"CTI*@?@@?PD?`h @ @ @(@ @P( @P @P,@P@P("H D A H  A @ @ `@P( @P BPT* BP@pT*@ `@U*@P BP|k5BP"  " "ȘȘ0dEF @$ @ @dL0~0 ~"`?"`?b` ?02&02."`dL"`dL ?A >>@>|`00`` ? 0`?` ? 0`?Hؐ6@6$@0` C `8`0@80p`0 0` `0@80h` `  0` ` `` @@0d @0&,pD 8 D@  H$A @ AH(($@ @ @ B!@B!"It"" t""$"")$"" $""IT"""" t"ItA? tA?$A? $A?@ @@ @ | @> @ ( |P( * B^T* ( @P( B!H  D#H$( "|T( ( E"PX, @0 0 0h`X0`ш4`>ffH"!P(@P("H D  0($"? H$!H  P( B @`0H @P(  P( @P( x( p8" " ("$&2$c &" b "0$*#  (" (" `~P(@P(" P'<U*JTU$0``0QQPTAPTTT~``~0` 0 @@ѐ0` @0 1(a  8q3`Dp  " *l     i @@ @ @ @ @   @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @!@ @  @ @ @ @ @ @ @ @ @ @ @ @  08<> x> 8>?>l6 ??" D"|CpD"B!DCA@@PD>A@@PD>pD"@ >T&!4B x@ BAD<C@<|!< !|| @@|| x" @!8"!8<C@ |<Cx@ @ 8<Cx@  |<Cx@  x<Cx@ A " pD>BADC(C!PD>!x|"C!PDD6@CD"!x>x@<<  < !< B < !x"<C@<| Ba@ @ @ p8p8m@ @ p8pZV@ @ pp@ >@ ?p8~?p8@ @ p8p8@ @>p?~?@!Cq@ @ @>@ p?@ @ ?p8p?p8~?@ @~?p8~?p8@!@ C@ q@ @!p8qp8@ Cp8p8@ @ ?@ @ p8p8p8p8@!C@?Cq@!@ C@ @?@ C@ q@ @!p8qp8@ @ Cp8@p8@ Cp8p8p8p8@ @ pp @P( @P(>@ ? @P(~ @P(@  @P( @P(@> @P? @^ C @Q @@>@  @P/ @P( @^ @P(C@  @Q @P( @ @ P(@  @P(@P(C @Q @C@  @Q @P( @@P(@ @ @A@@@ @@@PH" P D @ @ p8>8p8?@ 8p8p8@ ????~?~?|>|>x<x<p8p8`0 `0 |>|> 0 0 0 0 0 0vĝ'lIvĝ'lI<<<<<<`0 `0 |>|>|>|>|>|>|>|>|>|>|>|>?A H'A H#].H'A?OTU*OTU?OI2LI)Ok*|>|"?A O|>D"C~>?~"!@ 8@ ('    `A x? X# A|D 8( ?0 1`A0 ? 1?9`@ 8>? (" (*.].PD" pDA DA D @تU*U$p|?pdq8FApLG#pDA p| DAp\O'DApLG#`px<0Z3o?@`@ AA  x>x8> `H$ q8N'G#}D'PqA >`@"L`$ e2!H BRH@R@舂A B @` pD"vfa JVؐZ^S/ `? Q`? S`?`&( `(#( g(#PQA@P( @P( A " "@ " "@ @pDA DA8 ꈂA N(( @ pA HD dI'I%B ]tI$*"x TZ(P( ($pDA DA OA H$ A fXD"ȔJ0BTU*JP4$sBPT* H0*$ ("( X  UPT*@ HD! $HĒI$*H'*URDH'k*CD"H'%H|"H'(D)0H'!8"H'Ēt*O*U|Ok?C|>O3D>O('8"O iLFA AApAZ o?!PƀZ@ H$ pD"^&8< |"`pB!1hB!F aH$ A`0 h0 h0hhh@?HDB@ @?@ (|(  |`0 {w}a }m wm}m*j%2DHC HHC BHC%2^HCBBHCuBRHC HHCeJRHCeJBHCjZHC{w}a }m wm}m*j`a v9<>;9@ 9@0`9 ^"^# h8!`?#Ub0sEg0Eo"?D"01`X#h :e™CPL.r >S s r0 > 00d 8L  9`(# #b(# )h#( LHC$ ]$DA A H$$ A H'P@HDFED! #C@PEDD$Au]8p>x|~}|?@p}||<A8?A OA?|G!Oq<~`~<   |p D'| D"`("`> ~~  ߾8  cXhxqr > ?H4I `h a c| $ + %+29AHNTZbiou{,s x x ] #29@GN[h u %E#s4gambas-3.16.3/app/src/gambas3/.hidden/make-help-archive000066400000000000000000000002161411575327000224440ustar00rootroot00000000000000#!/bin/sh cd ~/wiki tar cfj gambas-wiki.tar.bz2 --exclude=passwd\* --exclude=\*.log --exclude=~page.\* gambas mv gambas-wiki.tar.bz2 ~/cgi-bingambas-3.16.3/app/src/gambas3/.hidden/report-ng.sh000066400000000000000000000076231411575327000215210ustar00rootroot00000000000000#!/bin/bash # System Report script for Gambas # Joshua Higgins # GPL'd # 20/01/2010 - Integration into Gambas IDE # 17/01/2011 - Add detected desktop # 05/09/2011 - Support for LXDE # echo "System Report for Gambas" # ---------------- DETECT DISTRIBUTION VERSION # Detection of following distro's is supported # To add dectection of your favourite distro, format as follows: # distroshortname:/path/to/version/file # (generic:/etc/issue should be the LAST entry in the list, as this is the fallback) distros="lsb-release:/etc/lsb-release vector:/etc/vector-version slackware:/etc/slackware-version debian:/etc/debian_version redhat:/etc/redhat-release arch:/etc/arch-release SuSE:/etc/SuSE-release gentoo:/etc/gentoo-release conectiva:/etc/conectiva-release mandriva:/etc/mandriva-release mandrake:/etc/mandrake-release pardus:/etc/pardus-release kanotix:/etc/kanotix-release generic-undetected:/etc/issue" for distro in $distros do path="`echo $distro | awk -F: '{print $2}'`" vendor="`echo $distro | awk -F: '{print $1}'`" # Ubuntu and Mandriva now give lsb-release files, which needs the info extracting from if [ "$vendor" = "lsb-release" ]; then release="`cat $path 2>/dev/null | grep DESCRIPTION | awk -F= '{print $2}'`" # this is a bit ugly, because we overwrite the vendor variable, but I can't see any other way vendor="`cat $path 2>/dev/null | grep DISTRIB_ID | awk -F= '{print $2}'`" else release="`cat $path 2>/dev/null`" fi if [ "$release" = "" ]; then message="Still not here..." # Check if we've missed Arch if [ -e /etc/arch-release ]; then vendor="arch" release="n/a" #echo "Detected distro: $vendor" break fi else #echo "Found distro information at $path!" #echo "Detected distro: $vendor" break fi done # ---------------- DETECT OS DETAILS OS=$(uname) KERNEL=$(uname -r) # ---------------- DETECT SYSTEM DETAILS if [ "$OS" = "FreeBSD" ]; then # Added for FreeBSD RAM detection RAM=$(echo `sysctl -n hw.physmem` / 1024 | bc -l | cut -d . -f1)" Kb" else RAM="`cat /proc/meminfo | grep MemTotal | awk -F: '{print $2}' | sed -e 's/^[ \t]*//'`" fi ARCH=$(uname -m) # ---------------- DETECT GAMBAS DETAILS GAMBAS=$(gbx -V 2>/dev/null) GAMBAS2=$(gbx2 -V 2>/dev/null) GAMBAS3=$(gbx3 -V 2>/dev/null) GAMBASPATH=$(which gbx 2>/dev/null) GAMBAS2PATH=$(which gbx2 2>/dev/null) GAMBAS3PATH=$(which gbx3 2>/dev/null) # ---------------- DETECT CURRENT DESKTOP DESKTOP=Unknown if [ x"$KDE_FULL_SESSION" = x"true" ]; then DESKTOP=KDE3; if [ x"$KDE_SESSION_VERSION" = x"4" ]; then DESKTOP=KDE4 fi elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DESKTOP=Gnome; elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DESKTOP=Gnome; # enhance xfce detection as seen in http://unix.stackexchange.com/questions/116539/how-to-detect-the-desktop-environment-in-a-bash-script elif [ xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1 ] || \ [ -n "$(echo $XDG_DATA_DIRS | grep -Eo 'xfce')" ]; then DESKTOP=Xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DESKTOP=LXDE; elif [ x"$E_BIN_DIR" != x"" ]; then DESKTOP=Enlightenment; elif [ x"$WMAKER_BIN_NAME" != x"" ]; then DESKTOP=WindowMaker; fi # ---------------- PRINT ALL TO FILE echo "[System]" echo "OperatingSystem=$OS" echo "Kernel=$KERNEL" echo "Architecture=$ARCH" echo "Memory=$RAM" echo "DistributionVendor=$vendor" echo "DistributionRelease=$release" echo "Desktop=$DESKTOP" echo "Language=$LANG" echo "" if [ "$GAMBAS" != "" ]; then echo "[Gambas 1]" echo "Version=$GAMBAS" echo "Path=$GAMBASPATH" echo fi if [ "$GAMBAS2" != "" ]; then echo "[Gambas 2]" echo "Version=$GAMBAS2" echo "Path=$GAMBAS2PATH" echo fi if [ "$GAMBAS3" != "" ]; then echo "[Gambas 3]" echo "Version=$GAMBAS3" echo "Path=$GAMBAS3PATH" echo fi gambas-3.16.3/app/src/gambas3/.icon.png000066400000000000000000000277201411575327000174530ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+ IDATxwŝU7J+$ $$p`m}𞍏 w9N3 ;;^sc GBUXmgggwB>t/U@AAAAAAAAAAAAAAAAAAAAAAAD`n XscHJF-RZtf󳌝ɞ}F̐e$)W9"# Q)_wSJ{{~_3m}]`:BF%L";%,,=958^Yu)MBKȬcNG#N,[00hl!ivMm~Gbt~V H{lʌR,g]&sG>uLr!7ٽ=|F@=~@dEc&`5~oofd f3;gq2΄z{4 %5 Q  MuG> 3< ?6/93 Fu[ބU@Hp9VHV-)dwNgt# H) M߄V͒Hd- ΥCH;:'UcfB!#nt:KJ_Rq=tKC"d4c4j54̘]2dN.Ld7Ãk]vjnHEW?-roHw[]@E}goIϹe3T1NO'e &X*C2In<[4~ֽy:h YqQ $  [L@BA$"2T(䡴jub0 Lk) i:fY^aj%,9HV=d'yޘT2`@w[{k-&_ a & DPݻ͎O~$@3HkNGNqƶTYIsdHPڴHjL$%D*t˨8o 9+Bä#jgnD!&,ݞ)V21{~O H:)aHjrM6V(k I28ȒU9׎MON0G WN ̌P #3w͐^(5X| 4)`8mB}َ[!ifHk`g0!L##BEiA&j'wA;_F/7>hQ,}fIreDT`.nL!D=oySy2yGc6<75vkLL)B";'*,> 969[ϟlvA9IcN!uaz~bjPg:4{oV dz5ngZ0nH'ˢ L`b88fv;r3֘eY}d$SAT:SBPs.}XvL%X8e3h*dl$%H *^34 DT jĚ.<3ϙ`9o`*0ʶi ?jdJib.Hc"H"WE`A+/@Z23{~)Ȕ,Ls@°-7&olVh,?38O])ϔ,TЍ$t\{>,ҹV.Ijm`hM=?1 Z7s|:qjDzQ%Li 3ˤ&`wjViv- H=``p0 S[ H @3%z )Cty050p3rUǔ3(1Ɵ|$'d9è T}Lit>RHJ)j57=x~KHY3qM " nZw͖,8sFm̀}hAHH$  3+ JLUkv,ϾL8\ӄa@ ಋ]՞ JC"=7Q}B 4z8qbAnM%f4|3`oСF-X}I0wP䐨xjFpL + .|@QW$rP{@_J nh)u߂g"AtzWA(!5)tބpvVXsr7DL HȣidRԴ )IɨSCĽ>`ɋF#R'A> ´~2SD p-"F܋zL957bYDՇ 4"+ |GҐA @^~A?1!P V,Q~(zlDp}T40ZDQ%2rS5{c)A$P  ATdD C j£dT6K&! @0$H΅jM2s S|q(>`*U8RQ="`-!m?EJstKzJ& P<ȡ#0!0Ր1 ,V&#*`D~| zJZiM) G%aYA3IM"ѯ j=ڨBc$ E uh^)$!ڐ2*| |͕ 9+#*`蘪W> zfj2"2 0F {4qkplNJ?M@]@ @5`D{TN@ A F0ِDdB">Z ?#&C`!0 H {4ZN/_i*gjAN2cD ĺf0_Ӡ C!h2!%P=oD`j ? 2ʀ ;0'F!"~J = %?"!A*@ w'LT u͕9KH@7 1E <|# 8D̛ߍfl"fsqЉiG#F~bm 2# X} Oc]VWM̌Kp`d}1?yHxP~ܠ'71 _<7lQF܂oF$RHȡ~0ľla*V߂hoyR1ԉ @.v3:pHGjݿi ڙ(?37G=)OilCewbƗA`񹞔 MKkt~ KTEF= n #~b,ub0G6WvAzdǫ3|qlvq/:XY.ji+ @֠ yC?/~vfwIL.Œ[Che C?pPfFh4`xW:|݌VCt1\ Gw<Ԍs1Է 5ws!={X4HͿ(\I$ `!aJ5~ŷ qX/|ҕ?嘢An.6oZIgʾ&`$WɮGKXݞu<qlPe_6 J$DD h{S/;f<ᢼCݞh$rA aJ[2!c@@5?C<͸1͟4eMjyJ PLwZ,_4.Nrs:0Ck+U=̱1xĹS)MጣBO9 p;e .vҝ48D=¸yw KpL3v]=3^;7\l&B>ge\EU?Fx+}vSQ@CU 0h~Ox>g~k7^KVN5#1mxaK'D)[|#q=?́1=C ӫ tk]iW.xqkG5JHYahb߯ K  }XG!+t9'b~k71?뱧?(o/_uc @s؟dC1 84'7Ⱥ_ƨB)I ru1aj@-Fp %)^NO"vvNx|GyeP;" L_ 4$,( עk-iW,{#M9cp>~q[WF)q<{XK xB5@ 5 c$W,%GpiȮX5Ď[Htф /$IH$1b֏ s[&S_4d`zQ]I7ouۺ>1@ kMwًݙ/1w>魈+d9 Qm߷JIL@0V\&+bhG3s; fؙ @n S"xF_'O~jy Oe&(xIjPL0q(,~%+%8ȻJaܛ%0;FbrS4H_Vyv[psڛCe'\z4f= ;>r G&s.H{Y\ZYW8qFfďZ\~؉7awFqu~,Q3S+L6 5w%q\55ּzvL8oǍ-n:Xtvaz~tTS@J Y",2!$d7Bw hq+h[u;,a&'d'`k@]Dq]G6w῅3m{ɤ,-\<<ˁnw]?=#qX]^Q3ڠ) | $dU.Ss`[0?Ķ2f+(gN`*l)Q\fּA+!*{~8@QB<'٥.pK;ۍqcqy% fSu{[+71M DX] ?o?v|8V,Ոo8P[;a_詪$hoaY߾  cOڽ6sݯS-\b&5ނ]R>|,qly)'~zOc5$$[18 ]FbHyр2,>RqAWe0ƪ}.rܳo|tԇI]@%+ ~ U\ 5o<ԾV&D\r6~b؝CIG)_t\{>pU9﫝n q,ed^d"X/T35r;0ϳ!{n8s~޵]a*i5%vb^jBb^K-B! ǤGd3>|(Iֵ2 TIDATnRןWnxZ~\ur{bH'脻4 oѐ=*֧M&^(=M!>(L) sUDZ杀qg!Pֺcy-x2. | VNmDIL*-a}ϸ+J@A5˅B&(|\/X >ĒŸ\S}񜅨RmyULWр)x@[3' =lN߂?;~hoaO(]U!\ L/Ct*W U %F9C,|E{t(Mc_:{z+^Z3j EqΒXpF0]ßEyU[ГH9>\:F9APt"X>u~Oĺ=.܄} >MǙ [pz=YGBJ|3~'ӌKW9={r؄>Z)xP{ah8:Xw-՟bG ƠiG-X11K]xѥO-5@{  b֜ᑡ1pɊٸxy6v 7ov]Mrs[BXބ6cZlvx߽{u]:e.nt3#cAzӰ "]oށh{2p:q/ƫ;{ D,Ga ZX:Kg5`i[ViDKw{q-d=rD蕷COAM{C8mAT\r6.]9RJ`l?:ݣApR 13/)T/zp,7^PKFP*B鿙P:T:=|2M<;-Io] DtC|דyRA ̧XG{o}?-VUĨ( `֧{` ]旅xmWjM*!𽧷G/Lnk ;u9Cs-'T#$ƁTD!A$p&\.Bo.&/L3իИӎls)7 Y;R9>)238ຜr~\szrq1͎}bRyr.8QYBOԒU0 q*M$?y\8 ڊ_P.tCWvcͺOq6iGC_L AWʗ]n{=T]]#^/kk/[Icѯ@;'`z-EVSS(!!x1֡Qsp .bIuC$_~S|J)0gXVs*D )!q|ѓ27S1mĥ~g!>;!_|lHGX1W~S:9r0(!+) ~l|d׮ـ<)X 9-kORCq VO? օo4<~J( k {d0/-䥝jn' -\sOOn:yyr\tVjvd gԽT%rSנ'tTEE+nbDyin p9hyV7<1f`cua_ÚNb98qNj_G1=`L龦w zYHHh#N?*齚C>:g7bь:iaF}xn`4ag$8Fg%qB w]-7C > {03ǃ&5 dC~\},[]{ D5 /m*=&׫OL-,C  P$j]!qk!llaqu'ce{]|滞WMˢ( Ԇ/1[wJ,Qo<'4D17K@mZX%0MN^<Yx33Qy!pp3UA=J~$sX܍ok?G/2Wq;{o.8TGyCiÂ.ظ_ŭ8fLvJ\y`([B3gO{ s( uhý]&nZ Ue|, IA8#HphEq1.Nv @?5AiC`$b܅0ʦ^ )\WӚq ~@)` JC,ÅѷROq6]CåO^>F[`~(u4G PBx8( fxE5Ӯ+V|(HqaRW"( 9K aD"8_g<cU޼3e.bC3&gr(PB "4 *ԆF(ŋ\gY=;C~h8]~O8b2l<޳@&@`TH!#+2>-_xz% =2}>F"!q*T 1Q.x < Vɝ8 ;T~ >Q\88K@y؇9`ЉiCQBСC|рZ1|ىcqpM5?dBNɄ)P5F,،ӱ;SPRM5HO꫇4X£%+ dç^@`>\a㐉7\|``'* X*U  sb 3~/eӻSyH`BA tDHh̦|>0U%KHt B M^E]UJ0H0 K!0) ϥwcATq0{օ4 H! RJH!)L!`όq$`֦(4WBd׃xHD C jrD CA0$!@5 M F5 9 рQÐ jQlq H5 QÐ                         !\kIENDB`gambas-3.16.3/app/src/gambas3/.lang/000077500000000000000000000000001411575327000167265ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.lang/ar.po000066400000000000000000005304661411575327000177060ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FLocal.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FWatch.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.62/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2021-03-28 16:17 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 "Gambas 3" msgstr "جامباس 3" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "بيئة تطوير متكاملة لجامباس" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 msgid "Static properties" msgstr "" #: CClassInfo.class:616 msgid "Static variables" msgstr "" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "الثوابت" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr " الملكيّات" #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "الطرق" #: CClassInfo.class:638 msgid "Events" msgstr "الأحداث" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "" #: CClassInfo.class:681 msgid "creatable" msgstr "" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:694 msgid "function" msgstr "" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "" #: CClassInfo.class:699 msgid "write" msgstr "" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "قراءة فقط" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 msgid "static function" msgstr "" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "معلومات الحزمة" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr " الطّبقات" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr " الطّبقه" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr " الوصف" #: CComponent.class:598 #, fuzzy msgid "This component is not stable yet." msgstr "هذا المشروع غير موجود." #: CComponent.class:600 #, fuzzy msgid "This component is deprecated." msgstr "المشروع للقراءة فقط." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "المؤلف" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "المؤلفون" #: CComponent.class:621 msgid "Implements" msgstr "" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:648 msgid "Excludes" msgstr "استثنائات" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "Terminal emulator" msgstr "الطرفية" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 #, fuzzy msgid "QT/GTK+ web browser switcher component" msgstr "عن المكون" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:95 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "عن المكون" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:133 #, fuzzy msgid "QT5 WebKit component" msgstr "عن المكون" #: CDocumentation.class:134 #, fuzzy msgid "QT5 web browser component" msgstr "عن المكون" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:137 msgid "Report designer" msgstr "" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr " العنصر" #: CDocumentation.class:143 #, fuzzy msgid "SDL2 audio component" msgstr "عن المكون" #: CDocumentation.class:144 msgid "Application settings management" msgstr "" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr " التّرتيب" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "عن المكون" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "عن المكون" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "فورم" #: CModule.class:29 msgid "Forms" msgstr "الفورمات" #: CModule.class:29 msgid "Gambas forms" msgstr "فورمات جامباس" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "فورمات جامباس" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "فورم" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "الفورمات" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "فورمات جامباس" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "فورم" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "الفورمات" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr " ألغاء" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:560 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "المشروع تم إنشاؤه بنجاح." #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr " المشروع" #: CProjectTree.class:373 msgid "Sources" msgstr "المصادر" #: CProjectTree.class:375 msgid "Connections" msgstr "الاتصالات" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "البيانات" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "اليوم" #: CRecentProject.class:70 msgid "Yesterday" msgstr "الأمس" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "إنشاء أرشيف للمصدر" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 #, fuzzy msgid "Unable to compile the project." msgstr "لا يمكن حفظ المشروع." #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "لا يمكن إنشاء ملف تنفيذي." #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "لا يمكن حفظ المشروع." #: CSoftware.class:664 #, fuzzy msgid "yesterday" msgstr "الأمس" #: CSoftware.class:666 msgid "&1 days ago" msgstr "" #: CSoftware.class:672 msgid "last week" msgstr "" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 msgid "last month" msgstr "" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 msgid "on &1" msgstr "" #: CVersionControlGit.class:341 #, fuzzy msgid "Unable to push the project." msgstr "لا يمكن حفظ المشروع." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "السطر الحاليّ" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "لا يمكن إنشاء المشروع!" #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "لا يمكن إنشاء المشروع!" #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "مشاريع حديثة" #: CVersionControlGit.class:394 #, fuzzy msgid "Status" msgstr "إحصائيات" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 #, fuzzy msgid "Remote repository URL" msgstr "المستودع" #: CVersionControlGit.class:448 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "الدليل سيتم إزالته في الإيداع القادم." #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr " الموافقة" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "التاريخ" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "" #: Design.module:229 Project.module:2325 msgid "second" msgstr "" #: Design.module:231 Project.module:2327 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 #, fuzzy msgid "The program has been terminated." msgstr "المشروع تم إنشاؤه بنجاح." #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "هذا المشروع غير موجود." #: Design.module:1064 msgid "Output terminal" msgstr "" #: Design.module:1092 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "عن جامباس" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "المدخلات" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "إعادة تعيين" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "جري (شغل)" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr " اغلق" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "اللون" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "اختر لون" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "النظام" #: FColorChooser.form:40 msgid "Free" msgstr "خالى" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "تجريبي" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "هذه المكونات غير متوافقة:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "المكون &1 يحتاج الى المكونات التالية:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "المكون &1 يحتاج إلى المكون التالي &2 ." #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr " اختر مشروعًا" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr " أعد التحميل" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "صغّر" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "كبّر" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&تحرير" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "نّصوص" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "صورة" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "قطع" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "انسخ" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "الصق" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "تراجع" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr " أعد" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "افتح" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr " احفظ" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "تّعليق" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "انزع التعليق" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "اختر الجميع" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr " اذهب إلى السطر" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr " أوجد بعد ذلك" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr " أوجد سابق" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "اعرض" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 #, fuzzy msgid "Automatic word wrap" msgstr "التنفيذ التلقائي" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "نهاية السطر" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "كود" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "السابق" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr " التّحرّك" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr " النّوع" #: FConnectionEditor.class:61 msgid "Length" msgstr "المدة" #: FConnectionEditor.class:66 msgid "Default value" msgstr "القيمة المبدئية" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "تصريف" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr " الفهرس" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "مجال" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "غير محدود" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "بولياني" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "عشري" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "طويل" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "تسلسلي" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "سلسلة" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "أزل" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "أعد التسمية" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "ا&ستورد" #: FConnectionEditor.form:217 msgid "Run query" msgstr "" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr " جديد" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "احذف" #: FConnectionEditor.form:309 msgid "Fields" msgstr "" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "أضف" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "أسفل" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "أعلى" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "" #: FConnectionEditor.form:389 msgid "New index" msgstr "" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "تحرير" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "صدّر" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr " احذف" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr " اختر الكلّ" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "لا يمكن إضافة الملف." #: FCreateFile.form:37 msgid "New file" msgstr "ملف جديد" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr " الخيارات" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "العرض" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "الإرتفاع" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "التنفيذ التلقائي" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "غير قابلة للترجمة" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "لا يمكن إنشاء المشروع!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "الرجاء اختيار موقع في القائمة." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "الرجاء إدخال موقع المستودع." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr " المشروع الجديد" #: FCreateProject.form:46 msgid "Project type" msgstr "نوع المشروع" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr " الدّليل" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "خصائص المشروع" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr " المشروع ممكن ترجمته" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "فتح في نافذة أخرى" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "المستودع" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "تنقيح" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr " لوحة التّحكّم" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr " نقاط التوقف" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr " القيمة" #: FDebugExpr.class:511 msgid "Key" msgstr "مفتاح" #: FDebugExpr.class:517 msgid "Symbol" msgstr "رمز" #: FDebugExpr.form:33 msgid "Watch" msgstr "" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "سطر" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "وظيفة" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "ملف" #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "رسالة" #: FDebugInfo.class:125 msgid "native code" msgstr " الاسم" #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "انظر الي التعبير" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr " هل تريد مسح قائمة التّعبير ؟" #: FDebugInfo.class:1112 #, fuzzy msgid "File not loaded" msgstr "الملف غير موجود!" #: FDebugInfo.class:1255 msgid "Current object" msgstr "" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr " صحّح" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:137 msgid "Add expression" msgstr "" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "تبديل نقطة التوقف" #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "تبديل نقطة التوقف" #: FDebugInfo.form:220 #, fuzzy msgid "Disable" msgstr "جدول" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "تبديل نقطة التوقف" #: FDebugInfo.form:228 #, fuzzy msgid "Enable" msgstr "جدول" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "أودع" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:474 msgid "Show search window" msgstr "" #: FDebugInfo.form:481 msgid "Search again" msgstr "" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "المتغير الحرفي لا يمكن أن يُوجَد ." #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "الحالي: %1" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "" #: FEditor.form:202 msgid "Sort procedures" msgstr "" #: FEditor.form:232 msgid "Go to" msgstr " اذهب إلى" #: FEditor.form:251 msgid "Find definition" msgstr "" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "تنفيذ حتى السطر الحالي" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "تبديل نقطة التوقف" #: FEditor.form:322 msgid "Watch expression" msgstr "انظر الي التعبير" #: FEditor.form:331 msgid "Open form" msgstr "فتح نافذة" #: FEditor.form:338 FMain.form:1139 #, fuzzy msgid "Run this class" msgstr "نفذ هذا الأمر بعد" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "اطبع" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr " المحرّر" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr " احفظ عدّل الملفّات" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 #, fuzzy msgid "Previous modification" msgstr "السابق" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "المستعمل" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "كلمة السر" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "تذكر كلمة السر" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "الرجاء إدخال بريدك الإلكتروني." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "لا يمكن حفظ المشروع." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "تذكر كلمة السر" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "اتصال" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "جدول" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr " استمرّ" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "ستقوم بإلغاء تغييراتك!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "تغييرات" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr " الدّليل" #: FFileInfoVC.form:64 #, fuzzy msgid "Undo changes" msgstr "تغييرات" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr " مركبات جامباس" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "حرر خاصية القائمة" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:136 msgid "Bad form file" msgstr " ملفّ فورم خاطئ" #: FForm.class:284 #, fuzzy msgid "Unknown control: &1" msgstr "خطأ مجهول" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "لا يمكن إنشاء ملف تنفيذي." #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "اختار" #: FForm.form:232 msgid "Select parent" msgstr "" #: FForm.form:245 msgid "Arrangement" msgstr " التّرتيب" #: FForm.form:249 msgid "Bring to foreground" msgstr " أحضر إلى الأماميّة" #: FForm.form:256 msgid "Send to background" msgstr " أرسل إلى الخلفيّة" #: FForm.form:266 msgid "Horizontal" msgstr "أفقي" #: FForm.form:273 msgid "Rows" msgstr "صفوف" #: FForm.form:279 msgid "Vertical" msgstr "رأسي" #: FForm.form:286 msgid "Columns" msgstr "الحالي: %1" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "" #: FForm.form:311 msgid "Align to left" msgstr "" #: FForm.form:317 msgid "Align to right" msgstr "" #: FForm.form:323 msgid "Align to top" msgstr "" #: FForm.form:329 msgid "Align to bottom" msgstr "" #: FForm.form:338 msgid "Same width" msgstr "" #: FForm.form:344 msgid "Same height" msgstr "" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "السابق" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "تالي" #: FForm.form:387 msgid "Last" msgstr "" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr " محرّر القائمة" #: FForm.form:407 msgid "Event" msgstr " الحدث" #: FForm.form:421 #, fuzzy msgid "Run this form" msgstr "نفذ هذا الأمر بعد" #: FForm.form:601 msgid "Toggle grid" msgstr "" #: FForm.form:610 FImageEditor.form:514 #, fuzzy msgid "Toggle information tooltip" msgstr "معلومات الحزمة" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "عريض" #: FForm.form:786 msgid "Italic" msgstr "مائل" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "تسطير" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr " الخلفيّة" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "التحريك للأعلى" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "أنقل إلى الأسفل" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "اللغة الافتراضية" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "متصفح المساعدة" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr " التّرجمة" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "الخيار" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr " التّفضيلات" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "الخيار" #: FImageEditor.form:284 #, fuzzy msgid "Exclusive or" msgstr "استثنائات" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "ارسم" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr " المستطيل" #: FImageEditor.form:608 msgid "Ellipse" msgstr " قطع النّاقص" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "بكسل" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 #, fuzzy msgid "Select gradient stop color" msgstr "اختر لون" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 #, fuzzy msgid "Colorize" msgstr "اللون" #: FImageProperty.form:400 msgid "Desaturate" msgstr "" #: FImageProperty.form:408 #, fuzzy msgid "Make transparent" msgstr "احفظ الترجمة" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "سطر" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "سطر" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr " الحجم" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "ترجمة" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "معاينة" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "طبقات جامباس" #: FImportFile.class:23 msgid "Gambas modules" msgstr " مركبات جامباس" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr " مركبات جامباس" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "ملفات HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr " ملفّات الصّورة" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "لا يمكن فتح الملف." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "استيراد سيمة" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "كل الملفات" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "المصدر" #: FImportTable.form:78 msgid "Charset" msgstr "طقم المحارف" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "المقصد" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "الرجاء إدخال تغييرات مشروعك." #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr " يتواجد هذا المشروع بالفعل ." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "حفظ الكل" #: FLayout.form:22 #, fuzzy msgid "Layout name" msgstr "أعد التسمية" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "حرر خاصية القائمة" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr " هل تريد حذف هذا الدّليل فعلاً ؟" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr " لا يمكن أن يحذف الملفّ أو الدّليل" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:773 msgid "Sort history" msgstr "" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "ترتيب حسب المسار" #: FMain.class:789 msgid "&Clear history" msgstr "&حذف التاريخ" #: FMain.class:969 msgid "New folder" msgstr "مجلد جديد" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "أدوات GNU للترجمة ليست منصبة على نظامك.\n" "\n" "الرجاء تنصيب هذه الأدوات حتى تتمكن من الترجمة." #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "جميع النسخ الاحتياطية والملفات المنشأة ستزال من دليل المشروع." #: FMain.class:1904 msgid "Clean" msgstr "تنظيف" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "افتح مشروع" #: FMain.form:313 msgid "Open recent" msgstr "فتح حديث" #: FMain.form:321 msgid "Open example" msgstr "افتح مثال" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr " احفظ المشروع" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "حفظ المشروع بإسم" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr " اختر مشروعًا" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "انهاء" #: FMain.form:402 Project.module:6969 msgid "Save as" msgstr "" #: FMain.form:442 msgid "Compile" msgstr "تصريف" #: FMain.form:449 msgid "Compile All" msgstr "تجميع الكل" #: FMain.form:459 msgid "Translate" msgstr "ترجمة" #: FMain.form:468 msgid "Make" msgstr "إنشاء" #: FMain.form:472 msgid "Executable" msgstr "ملف تنفيذي" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "أرشيف للمصدر" #: FMain.form:486 msgid "Installation package" msgstr "حزمة تركيب" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "إنشاء" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "تنظيف" #: FMain.form:570 msgid "Refresh" msgstr "انعش" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr " توقّف" #: FMain.form:630 msgid "Stop" msgstr "تّوقّف" #: FMain.form:637 msgid "Step" msgstr "خطوة" #: FMain.form:644 msgid "Forward" msgstr " إلى الأمام" #: FMain.form:651 msgid "Finish" msgstr "إنهاء" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "" #: FMain.form:713 msgid "Current desktop" msgstr "" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "مسح جميع نقاط التوقف" #: FMain.form:770 msgid "Close all debug windows" msgstr "إغلاق جميع نوافذ التصحيح" #: FMain.form:808 msgid "Status bar" msgstr "" #: FMain.form:815 msgid "Hide menubar" msgstr "" #: FMain.form:839 msgid "Close all windows" msgstr "اغلق الجميع" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr " أوجد" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "استبدل" #: FMain.form:866 msgid "Browse project" msgstr "استعراض المشروع" #: FMain.form:873 msgid "Open a terminal" msgstr "افتح الطرفية" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "اختصارات" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr " التّفضيلات" #: FMain.form:924 msgid "Directory" msgstr " الدّليل" #: FMain.form:929 msgid "Project link" msgstr "" #: FMain.form:938 msgid "Module" msgstr "المركبة" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr " مركبات جامباس" #: FMain.form:1004 msgid "HTML file" msgstr "ملف HTML" #: FMain.form:1011 msgid "Style sheet" msgstr "Style sheet" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "آخر" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "حديث" #: FMain.form:1059 msgid "Open in file manager" msgstr "" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "افتح مشروع" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "" #: FMain.form:1132 msgid "Startup class" msgstr "فصل البدايه" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr " احفظ عدّل الملفّات" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr " ملفّات التّرجمة" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr " احفظ عدّل الملفّات" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "ترجمة" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "لا يمكن إنشاء ملف تنفيذي." #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr " تلميحات اليوم" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "خصائص المشروع" #: FMain.form:1429 msgid "Refresh project" msgstr "تحديث المشروع" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "إنشاء ملف تنفيذي" #: FMain.form:1471 msgid "Make source archive" msgstr "إنشاء أرشيف للمصدر" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "إنشاء حزمة تركيب" #: FMain.form:1500 msgid "Properties sheet" msgstr " ملاءة الخصائص" #: FMain.form:1509 msgid "Toolbox" msgstr " صندوق الأدوات" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "" #: FMain.form:1551 msgid "Compile all" msgstr "تجميع الكل" #: FMain.form:1600 msgid "Finish current function" msgstr "" #: FMain.form:1616 #, fuzzy msgid "Show menubar" msgstr "عرض أرقام الأسطر" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "&ملف" #: FMain.form:1730 msgid "&Project" msgstr "&المشروع" #: FMain.form:1742 msgid "&Debug" msgstr "تصحيح" #: FMain.form:1754 msgid "&View" msgstr "-" #: FMain.form:1766 msgid "&Tools" msgstr "&الأدوات" #: FMain.form:1778 msgid "&?" msgstr "-" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "استعراض المشروع" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr " ملاءة الخصائص" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "عرض تلميحات" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:60 #, fuzzy msgid "Increment version" msgstr "قيمة خاصية خاطئة." #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "ابق معلومات التصحيح في الملف التّنفيذى" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "أنشاء اختصار على سطح المكتب" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 #, fuzzy msgid "Run this shell command after" msgstr "نفذ هذا الأمر بعد" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "الرزمة" #: FMakeInstall.class:137 msgid "Min. version" msgstr "" #: FMakeInstall.class:138 msgid "Max. version" msgstr "" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "إنشاء حزمة..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "الحزمة تم إنشاؤها بنجاح." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "الرجاء إدخال اسمك." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "الرجاء إدخال بريدك الإلكتروني." #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "الرجاء إدخال اسمك." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "لا يوجد تغييرات لهذه الإصداره." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "الرجاء إدخال التغييرات." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "الرجاء اختيار توزيعة واحدة على الاقل." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "الرجاء اختيار مجموعة الحزمة لكل توزيعة." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "الرجاء اختيار مجموعة الحزمة." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "الرجاء اختيار موقع في القائمة لكل توزيعة." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "الرجاء اختيار موقع في القائمة." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "الحزمة لا يمكن أن تخزن داخل دليل المشروع." #: FMakeInstall.class:558 msgid "Initial release" msgstr "" #: FMakeInstall.class:814 msgid "Menus" msgstr "" #: FMakeInstall.class:882 msgid "Groups" msgstr "المجموعات" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "معلومات الحزمة" #: FMakeInstall.form:160 msgid "Package name" msgstr "اسم الحزمة" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "اسم البائع" #: FMakeInstall.form:241 FOption.form:378 #, fuzzy msgid "Vendor prefix" msgstr "اسم البائع" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "سجل التغييرات" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "التوزيعة الهدف" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "التصنيفات" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "خلق مجموعه المصدر" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "مصدر الحزمة" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "خلق مجموعه المصدر" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "" #: FMenu.class:346 msgid "Bad menu name !" msgstr "" #: FMenu.class:352 msgid "Bad group name !" msgstr "" #: FMenu.class:661 msgid "This menu is too deep !" msgstr " هذه القائمة عميقة جدًّا !" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr " عدّل" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 msgid "Insert separator" msgstr "" #: FMenu.form:104 msgid "Insert menu before" msgstr "" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "&ادخال" #: FMenu.form:113 msgid "Delete menu" msgstr "" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "&ادخال" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "اضغط ادخال لاضافة قائمه جديده" #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "قاعدة البيانات" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "قاعدة البيانات" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "المضيف" #: FNewConnection.form:124 msgid "Path" msgstr "المسار" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "تذكر كلمة السر" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "قاعدة البيانات" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "ترجمة جديدة" #: FOpenProject.form:22 msgid "Select a project" msgstr " اختر مشروعًا" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "أمثلة" #: FOption.class:4 msgid "Amber" msgstr "Amber" #: FOption.class:4 msgid "Amethyst" msgstr "Amethyst" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Emerald" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidian" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "الصق" #: FOption.class:4 msgid "Quest" msgstr "Quest" #: FOption.class:4 msgid "Quick" msgstr "Quick" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "Sapphire" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(افتراضي)" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "سطح المكتب" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(افتراضي)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:267 msgid "Export a theme file" msgstr "تصدير ملف سيمة" #: FOption.class:498 msgid "Select a theme file" msgstr "اختر ملف السيمة" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "تحتاج إلى إعادة تشغيل التطبيق لترى التغيرات." #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:863 #, fuzzy msgid "Unable to clear documentation cache." msgstr "لا يمكن إنشاء اختصار لسطح المكتب." #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 msgid "Network is not available." msgstr "" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "لا يمكن إضافة الملف." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 #, fuzzy msgid "Unable to install documentation." msgstr "لا يمكن إنشاء اختصار لسطح المكتب." #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "تصريف" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "السطر الحاليّ" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr " هل تريد حذف هذه التّرجمة فعلاً ؟" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 msgid "Identity" msgstr "" #: FOption.form:350 #, fuzzy msgid "Package maintainer" msgstr "اسم الحزمة" #: FOption.form:395 #, fuzzy msgid "Default license" msgstr "القيمة المبدئية" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "لا" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "نعم" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr " المشروع" #: FOption.form:456 msgid "Default tab size" msgstr "حجم جدولة افتراضي" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "المسافات" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 msgid "Activate version control" msgstr "" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "تصريف" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr " أرسل إلى الخلفيّة" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "صورة" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "التنفيذ التلقائي" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr " ملفّات التّرجمة" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "مساعدة" #: FOption.form:670 msgid "Show documentation in popups" msgstr "" #: FOption.form:687 msgid "Always display optional messages" msgstr "" #: FOption.form:699 #, fuzzy msgid "Documentation" msgstr "المقصد" #: FOption.form:710 #, fuzzy msgid "Use offline documentation" msgstr "لا يمكن إنشاء اختصار لسطح المكتب." #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "" #: FOption.form:787 msgid "Applications" msgstr "البرامج" #: FOption.form:798 msgid "Browser" msgstr "استعرض" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "الطرفية" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "" #: FOption.form:875 msgid "Highlight modified lines" msgstr "" #: FOption.form:892 msgid "Show line numbers" msgstr "عرض أرقام الأسطر" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:960 #, fuzzy msgid "Show Preview" msgstr "معاينة" #: FOption.form:978 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Code formatting" msgstr "" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 msgid "Control structure completion" msgstr "" #: FOption.form:1021 msgid "Local variable declaration" msgstr "" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "اتصال" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "اغلق الجميع" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "" #: FOption.form:1155 msgid "Code snippets" msgstr "" #: FOption.form:1171 msgid "Activate code snippets" msgstr "" #: FOption.form:1232 msgid "Interface" msgstr "تعشيق" #: FOption.form:1249 msgid "Activate animations" msgstr "" #: FOption.form:1266 msgid "Show shadows" msgstr "" #: FOption.form:1283 msgid "Show tooltips" msgstr "عرض تلميحات" #: FOption.form:1300 msgid "Use utility windows" msgstr "" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 #, fuzzy msgid "Message style" msgstr "رسائل" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 #, fuzzy msgid "Debugger size" msgstr "تنقيح" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "طباعة" #: FOption.form:1588 #, fuzzy msgid "Fixed font" msgstr "استخدم خط ثابت" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 #, fuzzy msgid "Themes" msgstr "سمة" #: FOption.form:1698 msgid "Icon theme" msgstr "أيقونة سيمة" #: FOption.form:1714 msgid "Highlighting theme" msgstr "" #: FOption.form:1728 msgid "Import theme" msgstr "استيراد سيمة" #: FOption.form:1734 msgid "Export theme" msgstr "تصدير سيمة" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "افتح الطرفية" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "فتح حديث" #: FOutput.form:130 msgid "Use system charset" msgstr "استخدم محارف النظام" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "خصائص المشروع" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "معاينة" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "خصائص المشروع" #: FProjectProperty.class:55 msgid "Variable" msgstr "متغير" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr " انهيار القيمة (Snapping) خطأ." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:1000 msgid "Modules" msgstr "المركبات" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr " مركبات جامباس" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "وظيفة" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 #, fuzzy msgid "Executable size" msgstr "ملف تنفيذي" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 #, fuzzy msgid "Information about component" msgstr "عن المكون" #: FProjectProperty.class:1039 msgid "Information about library" msgstr "" #: FProjectProperty.class:1419 #, fuzzy msgid "Select a Gambas executable" msgstr "لا يمكن إنشاء ملف تنفيذي." #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "إنشاء ملف تنفيذي" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "تصريف" #: FProjectProperty.form:300 msgid "General" msgstr "عام" #: FProjectProperty.form:366 msgid "Component" msgstr " العنصر" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "عادي" #: FProjectProperty.form:373 #, fuzzy msgid "Vendor" msgstr "اسم البائع" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr " النّسخة" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:418 msgid "Title" msgstr " الاسم" #: FProjectProperty.form:452 #, fuzzy msgid "Information" msgstr "معلومات الحزمة" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "منتهي و مستقر" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 #, fuzzy msgid "Include information from" msgstr "معلومات الحزمة" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 #, fuzzy msgid "Exclude" msgstr "استثنائات" #: FProjectProperty.form:642 msgid "Remove All" msgstr "أحذف الكلّ" #: FProjectProperty.form:649 msgid "Components" msgstr " العناصر" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr " التّفضيلات" #: FProjectProperty.form:748 msgid "Environment" msgstr "البيئة" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "النسخة" #: FProjectProperty.form:827 msgid "Tab size" msgstr "حجم جدولة" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "عناصر التحكم بالفورم عامة" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 #, fuzzy msgid "Add branch to version number" msgstr "قيمة خاصية خاطئة." #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "إحصائيات" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "حدّث" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "" #: FProperty.class:383 msgid "This name is already in use." msgstr "هذا الاسم مستخدم مسبقا." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "" #: FProperty.class:469 msgid "Incorrect property value." msgstr "قيمة خاصية خاطئة." #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "لا شيئ" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "المشروع تم إنشاؤه بنجاح." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "لا يمكن حفظ المشروع." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "قيمة خاصية خاطئة." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr " هل تريد إعادة تحميل هذه التّرجمة فعلاً ؟" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "اختر ملف السيمة" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr " ملفّات الصّورة" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr " الوصف" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "حجم جدولة" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr " احفظ عدّل الملفّات" #: FSave.form:43 msgid "Save All" msgstr "حفظ الكل" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "لا يمكن حفظ المشروع." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "المتغير الحرفي استبدل مرّة واحدة." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "المتغير الحرفي استبدل &1 مره." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "السطر الحاليّ" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "أنواع البيانات" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 msgid "Highlight search" msgstr "" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:40 msgid "Image files" msgstr "" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr " اختر صورةً" #: FSelectIcon.form:45 msgid "Stock" msgstr "" #: FSelectIcon.form:73 #, fuzzy msgid "Size preview" msgstr "معاينة" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "مجهول" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "اختر لون" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "الألعاب" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "النسخة" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "مرئي" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "تعشيق" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr " التّعبير" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr " ألغاء" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr " غير قادر أن تعيد تسمية &1" #: FSoftwareFarm.class:568 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "المشروع تم إنشاؤه بنجاح." #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr " غير قادر أن تعيد تسمية &1" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "المشروع تم إنشاؤه بنجاح." #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr " غير قادر أن تعيد تسمية &1" #: FSoftwareFarm.class:609 #, fuzzy msgid "&1 has been successfully installed." msgstr "المشروع تم إنشاؤه بنجاح." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr " هل تريد حذف هذا الملفّ فعلاً ؟" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr " غير قادر أن تعيد تسمية &1" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "فورمات جامباس" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "فتح حديث" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "عرض تلميحات" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "عرض تلميحات" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "أسفل" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "لا يمكن حفظ المشروع." #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr " يتواجد هذا المشروع بالفعل ." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "لا يمكن حفظ المشروع." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr " هل تريد إعادة تحميل هذه التّرجمة فعلاً ؟" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "قاعدة البيانات" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr " اختر الكلّ" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr " اختر الكلّ" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "حرر خاصية القائمة" #: FText.form:29 msgid "Use a fixed font" msgstr "استخدم خط ثابت" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "القيمة المبدئية" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "أمثلة" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "تبديل نقطة التوقف" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr " غير قادر أن اقرأ تلميح اليوم !" #: FTips.form:70 msgid "Show tips on startup" msgstr "اعرض التلميحات عند البداية" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr " استمرّ" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Network" msgstr "شبكات" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "افتح مشروع" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "صغير" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "" #: FTranslate.class:74 msgid "Language" msgstr "اللغة" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "ترجمة" #: FTranslate.class:169 msgid "Translation files" msgstr " ملفّات التّرجمة" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr " لا يمكن أن يقرأ ملفّ التّرجمة لللّغة &1" #: FTranslate.class:566 msgid "Cannot save translation." msgstr " لا يمكن حفظ التّرجمة." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr " هل تريد حذف هذه التّرجمة فعلاً ؟" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr " هل تريد إعادة تحميل هذه التّرجمة فعلاً ؟" #: FTranslate.class:802 msgid "Export a translation" msgstr " صدّر ترجمةً" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "لا يمكن استيراد ملف الترجمة." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr " كل شيئ يبدو صحيحا." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "لا تلائم رموز الحرفيات المترجمة رموز الحرفيات الغير المترجمة " #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "لا يمكن استيراد ملف الترجمة." #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr " هل تريد حذف هذه التّرجمة فعلاً ؟" #: FTranslate.form:77 msgid "Project translation" msgstr "ترجمة المشروع" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "التنفيذ التلقائي" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "ترجمة جديدة" #: FTranslate.form:232 msgid "Save translation" msgstr "احفظ الترجمة" #: FTranslate.form:240 msgid "Verify the translation" msgstr " تحقّق من التّرجمة" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "نسخ الحرفى غير مترجم" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "نسخ الحرفى غير مترجم" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "" #: FTranslate.form:340 msgid "Clear this translation" msgstr "امسح هذه التّرجمة" #: FTranslate.form:346 msgid "This string must not be translated" msgstr " هذا المتغير الحرفي لا يجب أن يُتَرْجَم" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "نسخ الحرفى غير مترجم" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "امسح هذه التّرجمة" #: FTranslate.form:480 msgid "Import a translation file" msgstr "استيراد من ملف ترجمة." #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "ترجمة جديدة" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "الخيار" #: FWelcome.class:69 msgid "New project..." msgstr " المشروع الجديد ..." #: FWelcome.class:71 msgid "Recent projects" msgstr "مشاريع حديثة" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "أهلا بك في جامباس 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "تحديث المشروع" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "عربي (مصر)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "عربي (تونس)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr " البلغاريّ ( بلغاريا )" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr " اللّغة الدّنماركيّة ( الدّنمارك )" #: Language.module:34 msgid "German (Germany)" msgstr " الألمانيّ ( ألمانيا )" #: Language.module:35 msgid "German (Belgium)" msgstr " الألمانيّ ( بلجيكا )" #: Language.module:38 msgid "Greek (Greece)" msgstr " اليونانيّ ( اليونان )" #: Language.module:41 msgid "English (common)" msgstr "" #: Language.module:42 msgid "English (United Kingdom)" msgstr " الإنجليزيّة ( المملكة المتّحدة )" #: Language.module:43 msgid "English (U.S.A.)" msgstr " الإنجليزيّة ( الولايات المتّحدة الأمريكيّة )" #: Language.module:44 msgid "English (Australia)" msgstr " الإنجليزيّة ( أستراليا )" #: Language.module:45 msgid "English (Canada)" msgstr " الإنجليزيّة ( كندا )" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr " الأسبانيّ ( أسبانيا )" #: Language.module:52 msgid "Spanish (Spain)" msgstr " الأسبانيّ ( أسبانيا )" #: Language.module:53 msgid "Spanish (Argentina)" msgstr " الأسبانيّ ( الأرجنتين )" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr " فرنسيّ ( فرنسا )" #: Language.module:69 msgid "French (Belgium)" msgstr " اللّغة الفرنسيّة ( بلجيكا )" #: Language.module:70 msgid "French (Canada)" msgstr " فرنسيّ ( كندا )" #: Language.module:71 msgid "French (Switzerland)" msgstr " اللّغة الفرنسيّة ( سويسرا )" #: Language.module:74 msgid "Galician (Spain)" msgstr "" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr " المجريّ ( المجر )" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "كرواتى" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr " الإندونيسيّ ( أندونيسيا )" #: Language.module:92 msgid "Irish (Ireland)" msgstr " الأيرلنديّ ( أيرلندا )" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr " الإيطاليّ ( إيطاليا )" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr " اللّغة الهولنديّة ( هولندا )" #: Language.module:123 msgid "Dutch (Belgium)" msgstr " اللّغة الهولنديّة ( بلجيكا )" #: Language.module:126 msgid "Norwegian (Norway)" msgstr " النّرويجيّ ( النّرويج )" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "بولندى ( بولندا )" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr " البرتغاليّ ( البرتغال )" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr " البرتغاليّ ( البرازيل )" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr " روسيّ ( روسيا )" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr " اللّغة السّويديّة ( السّويد )" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "تركى" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr " والون ( بلجيكا )" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "" #: Language.module:220 msgid "Unknown" msgstr "مجهول" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr " ملفّات التّرجمة" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "لا يمكن حفظ الملف!" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "لا يمكن حفظ الملف!" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "الملف موجود من قبل" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "تاريخ غير صحيح" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "مسار غير صحيح" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "قراءة فقط" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "فيضان المكدّس" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "خطأ صياغي" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "خطأ مجهول" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "خطأ مجهول" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "نص صِرْف" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr " أرسل إلى الخلفيّة" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr " التّعليقات" #: MTheme.module:6 msgid "Current line" msgstr "السطر الحاليّ" #: MTheme.module:6 msgid "Data types" msgstr "أنواع البيانات" #: MTheme.module:6 msgid "Editing line" msgstr "" #: MTheme.module:6 msgid "Errors" msgstr "أخطاء" #: MTheme.module:6 msgid "Highlighting" msgstr "" #: MTheme.module:6 msgid "Keywords" msgstr " الكلمات الرّئيسيّة" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr " النّصّ العاديّ" #: MTheme.module:6 msgid "Numbers" msgstr " الأعداد" #: MTheme.module:6 msgid "Operators" msgstr " العمّال (+ - * / ...)" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "متغيرات حرفيه" #: MTheme.module:6 msgid "Subroutines" msgstr " البرامج الفرعية" #: MTheme.module:6 msgid "Symbols" msgstr " الرّموز" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1' مفقود." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1' و '&2' مفقودة." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "حفظ ملف CHANGELOG ." #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "" #: Package.module:830 msgid "The package build has failed." msgstr "" #: Package.module:903 msgid "Making build directory." msgstr "" #: Package.module:962 msgid "Creating desktop file..." msgstr "إنشاء ملف سطح مكتب..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "" #: Package.module:1175 msgid "Creating package..." msgstr "إنشاء حزمة..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' فشل." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "" #: Package.module:1483 msgid "Creating source package." msgstr "إنشاء حزمة المصدر." #: Package.module:1507 msgid "Creating .spec file." msgstr "إنشاء ملف .spec ." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' أعاد كود الخطأ التالي:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' أعاد كود الخطأ التالي:" #: Package.module:2441 #, fuzzy msgid "'makepkg' has failed." msgstr "'dpkg-buildpackage' فشل." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 #, fuzzy msgid "Unsupported source archive format." msgstr "إنشاء أرشيف للمصدر" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "التنفيذ التلقائي" #: Project.module:239 msgid "Basic" msgstr "بسيط" #: Project.module:241 msgid "Drawing" msgstr "رسم" #: Project.module:244 msgid "Miscellaneous" msgstr " متنوّع" #: Project.module:245 msgid "Networking" msgstr "شبكات" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "صوتيات" #: Project.module:250 msgid "Controls" msgstr "تحكم" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "الملف غير موجود!" #: Project.module:545 msgid "This project does not exist." msgstr "هذا المشروع غير موجود." #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "هذا ليس مشروع جامباس." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "لا تفتح" #: Project.module:600 msgid "Open after all" msgstr "" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "يبدو أن المشروع مفتوح.\n" "\n" "فتح المشروع مرتين يمكن أن يسبب فقط للبينات." #: Project.module:606 msgid "It cannot be converted." msgstr "" #: Project.module:606 msgid "This project is read-only." msgstr "المشروع للقراءة فقط." #: Project.module:614 #, fuzzy msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "جميع النسخ الاحتياطية والملفات المنشأة ستزال من دليل المشروع." #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "هذا المشروع غير موجود." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr " لا يمكن أن يفتح ملفّ المشروع: \n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "لا يمكن إضافة الملف." #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "" #: Project.module:2171 msgid "Cannot open file." msgstr "لا يمكن فتح الملف." #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "بعض ملفات مصدر المشروع متعارضة.\n" "الرجاء حلها إذا كنت تريد تصريف المشروع." #: Project.module:2575 msgid "Compiling project" msgstr "جارى تجميع المشروع" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "الملفّ بالفعل متواجد ." #: Project.module:2876 msgid "Directory already exists." msgstr " يتواجد الدّليل بالفعل ." #: Project.module:2888 msgid "Cannot link template file." msgstr "" #: Project.module:2894 msgid "Cannot copy template file." msgstr " لا يمكن أن ينسخ ملفّ القالب." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr " الدّليل" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 #, fuzzy msgid "Cannot install library in &1." msgstr "لا يمكن إنشاء الرابط &1." #: Project.module:3181 msgid "Making executable..." msgstr "جاري عمل ملف تنفيذى ..." #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr " هل تريد حذف هذا الدّليل فعلاً ؟" #: Project.module:3191 #, fuzzy msgid "No change has been detected." msgstr "المشروع تم إنشاؤه بنجاح." #: Project.module:3292 msgid "Cannot make executable." msgstr "لا يمكن إنشاء ملف تنفيذي." #: Project.module:3774 msgid "Some components are missing: &1" msgstr "بعض المكونات مفقودة: &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "لا يمكن كتابة ملف المشروع." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "لا يمكن إنشاء اختصار لسطح المكتب." #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "الدليل سيتم إزالته في الإيداع القادم." #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "يجب تعريف نافذة أو صنف للبداية!" #: Project.module:4351 msgid "Please type a name." msgstr " من فضلك اطبع اسمًا ." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "هذا الاسم يحتوى على حرف ممنوع:" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr " هذا الاسم مستعمل بالفعل . اختر واحد آخر ." #: Project.module:4399 #, fuzzy msgid "Space" msgstr "المسافات" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "اسم الصنف لا بد أن يبدأ بحرف أو شرطة سفلية, متبوعة بحرف او رقم." #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr " غير قادر أن تعيد تسمية &1" #: Project.module:4714 msgid "Please type a project name." msgstr "من فضلك اطبع اسم مشروع ." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "اسم المشروع لا يمكن أن يبدأ بنقطة." #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "المحارف غير محارف ASCII ممنوعة في اسم المشروع." #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "الأحرف التالية ممنوعة في اسم المشروع: ? * / \\ SPACE" #: Project.module:4733 msgid "This project already exists." msgstr " يتواجد هذا المشروع بالفعل ." #: Project.module:4736 msgid "The project directory already exists." msgstr "دليل المشروع موجود مسبقا." #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "دليل المشروع لا يمكن إنشاؤه لان هناك ملف بنفس الاسم موجود مسبقا." #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr " لا يمكن أن ينسخ ملفّ &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "لا يمكن إنشاء الرابط &1." #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "لا يمكن نقل الدليل داخل نفسة." #: Project.module:5265 msgid "Cannot move file &1." msgstr "لا يمكن أن ينقل ملفّ &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "" #: Project.module:5966 msgid "Project files conversion..." msgstr "" #: Project.module:5996 msgid "Unable to convert &1" msgstr "" #: Project.module:6276 #, fuzzy msgid "Unable to update forms." msgstr "لا يمكن حفظ المشروع." #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 #, fuzzy msgid "Unable to read component description file." msgstr "لا يمكن كتابة ملف وصف المكون." #: Project.module:6520 msgid "Cannot write component description file." msgstr "لا يمكن كتابة ملف وصف المكون." #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "نوع المشروع" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr " غير قادر أن تعيد تسمية &1" #: Save.module:57 msgid "Cannot save file !" msgstr "لا يمكن حفظ الملف!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 #, fuzzy msgid "Incorrect format" msgstr "قيمة خاصية خاطئة." #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 #, fuzzy msgid "Please check your network connection." msgstr "الرجاء اختيار موقع في القائمة." #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr " هل تريد حذف هذا الدّليل فعلاً ؟" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "&ادخال" #, fuzzy #~ msgid "'wget' is not found." #~ msgstr "الملف غير موجود!" #~ msgid "$(FILE) will be replaced by the path of the executable" #~ msgstr "$(FILE) سيتم استبداله بمسار الملف التنفيذي" #~ msgid "

Authors

\n" #~ msgstr "-\n" #~ msgid "About Gambas..." #~ msgstr "عن جامباس ..." #~ msgid "Arguments" #~ msgstr "المدخلات" #~ msgid "Author(s)" #~ msgstr "المؤلف/ون" #~ msgid "Background color" #~ msgstr "اللون الخلفي" #~ msgid "Blend" #~ msgstr "الخليط" #, fuzzy #~ msgid "Display expression" #~ msgstr "انظر الي التعبير" #, fuzzy #~ msgid "Do not push to remote repository" #~ msgstr "الرجاء إدخال موقع المستودع." #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr " هل تريد مسح قائمة التّعبير ؟" #~ msgid "Edit text property" #~ msgstr "حرر خاصية الكتابة" #~ msgid "Environment variables" #~ msgstr "متغيرات البيئة" #~ msgid "Existing" #~ msgstr "متواجد" #~ msgid "Expression" #~ msgstr " التّعبير" #~ msgid "Foreground color" #~ msgstr "اللون الخلفي" #~ msgid "Loading &1..." #~ msgstr "تحميل &1..." #, fuzzy #~ msgid "N" #~ msgstr "لا" #, fuzzy #~ msgid "No argument" #~ msgstr "المدخلات" #~ msgid "Select a theme" #~ msgstr "اختر سيمة" #~ msgid "Show only components used in project" #~ msgstr " أظهر فقط العناصر التي استخدمت في المشروع" #~ msgid "Thanks to" #~ msgstr "شكر إلى" #~ msgid "The project has been successfully created." #~ msgstr "المشروع تم إنشاؤه بنجاح." #~ msgid "Toolbox size" #~ msgstr "حجم شريط الأدوات" #, fuzzy #~ msgid "Translator" #~ msgstr " التّرجمة" #, fuzzy #~ msgid "U" #~ msgstr "أعلى" gambas-3.16.3/app/src/gambas3/.lang/ca.po000066400000000000000000005644761411575327000176770ustar00rootroot00000000000000# Catalan translation of Gambas3 # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as Gambas3 package. # Jordi Sayol , 2007-2010. # # msgid "" msgstr "" "Project-Id-Version: Gambas3\n" "POT-Creation-Date: 2021-03-28 16:17 UTC\n" "PO-Revision-Date: 2011-04-07 05: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 "Gambas 3" msgstr "-" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Entorn de desenvolupament integrat del Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 msgid "Static properties" msgstr "" #: CClassInfo.class:616 msgid "Static variables" msgstr "Variables estàtiques" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "-" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Propietats" #: CClassInfo.class:636 msgid "Variables" msgstr "-" #: CClassInfo.class:637 msgid "Methods" msgstr "Mètodes" #: CClassInfo.class:638 msgid "Events" msgstr "Esdeveniments" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "Aquesta classe és &1." #: CClassInfo.class:681 msgid "creatable" msgstr "creable" #: CClassInfo.class:686 msgid "This class is static." msgstr "Aquesta classe és estàtica." #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "Aquesta classe no és creable." #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "Aquesta classe pot ser usada com a &1." #: CClassInfo.class:694 msgid "function" msgstr "funció" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "Aquesta classe actua com una matriu &1 / &2." #: CClassInfo.class:699 msgid "read" msgstr "llegeix" #: CClassInfo.class:699 msgid "write" msgstr "escriu" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "Aquesta classe actua com una matriu &1." #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "només lectura" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "enumerable" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "Aquesta classe reimplementa" #: CClassInfo.class:869 msgid "This class inherits" msgstr "Aquesta classe hereta" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Aquesta classe pot ser usada com un objecte tot creant una instància oculta sota demanda." #: CClassInfo.class:911 msgid "static function" msgstr "" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "Aquesta classe és &1 amb la paraula clau &2." #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "Carregant informació del component &1..." #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "Carregant informació del component &1..." #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Classes" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Classe" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descripció" #: CComponent.class:598 #, fuzzy msgid "This component is not stable yet." msgstr "Aquest component està ocult" #: CComponent.class:600 #, fuzzy msgid "This component is deprecated." msgstr "Aquest component està ocult" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Autors" #: CComponent.class:621 msgid "Implements" msgstr "Implementa" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Requereix" #: CComponent.class:648 msgid "Excludes" msgstr "Exclou" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "Classes natives internes" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Biblioteca gràfica Cairo" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "Gràfic" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "Compressió i descompressió" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "Accés a bases de dades" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "Controls de bases de dades" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "Controlador de base de dades de MySQL" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "Controlador de base de dades de l'ODBC" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "Controlador de base de dades del PostgreSQL" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "Controlador de base de dades de l'SQLite 2" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "Controlador de base de dades de l'SQLite 3" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "Depurador d'aplicacions" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "Interfície D-Bus" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "Avaluador d'expressions" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "Rutines de marcador de sintaxi " #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "Més controls per a components gràfics" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "Diàlegs estàndards millorats" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "Interfície de document múltiple" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "Terminal emulator" msgstr "Useu un emulador de terminal" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "-" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL amb el joc d'eines GTK+" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 #, fuzzy msgid "GTK+3 web browser component" msgstr "Commutador de component QT/GTK+" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "Commutador de component QT/GTK+" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 #, fuzzy msgid "QT/GTK+ web browser switcher component" msgstr "Commutador de component QT/GTK+" #: CDocumentation.class:94 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "Commutador de component QT/GTK+" #: CDocumentation.class:95 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "Commutador de component QT/GTK+" #: CDocumentation.class:96 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "Commutador de component QT/GTK+" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "Gestió d'imatges" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "Component de filtrat d'imatge" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "Rutines d'imatge de la biblioteca Imlib2" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "Càrrega i desat d'imatges" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "Eines XML basades en libxml" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "Rutines específiques de MySQL" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "Programació de xarxa" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "Gestió de protocols de xarxa d'alt nivell" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "Client SMTP" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "Programació 3D amb OpenGL" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "Component d'utilitat OpenGL" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "Gestió de l'OpenGL shaders" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "Analitzador d'opció d'ordre GNU" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Gestor d'expressions regulars compatible amb Perl" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "Representador PDF basat en la biblioteca Poppler" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "Joc d'eines QT4" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "Extensió del joc d'eines QT4" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "Component QT4 WebKit" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL amb el joc d'eines QT4" #: CDocumentation.class:132 #, fuzzy msgid "QT5 toolkit" msgstr "Joc d'eines QT4" #: CDocumentation.class:133 #, fuzzy msgid "QT5 WebKit component" msgstr "Component QT4 WebKit" #: CDocumentation.class:134 #, fuzzy msgid "QT5 web browser component" msgstr "Component QT4 WebKit" #: CDocumentation.class:135 #, fuzzy msgid "OpenGL with QT5 toolkit" msgstr "OpenGL amb el joc d'eines QT4" #: CDocumentation.class:136 #, fuzzy msgid "QT5 toolkit extension" msgstr "Extensió del joc d'eines QT4" #: CDocumentation.class:137 msgid "Report designer" msgstr "Dissenyador d'informes" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "Biblioteca SDL" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "So SDL i gestió de CD-ROM" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "Component" #: CDocumentation.class:143 #, fuzzy msgid "SDL2 audio component" msgstr "Component d'utilitat OpenGL" #: CDocumentation.class:144 msgid "Application settings management" msgstr "Gestió de configuracions d'aplicació" #: CDocumentation.class:145 msgid "Signals management" msgstr "Gestor de senyals" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "Gestor de senyals" #: CDocumentation.class:147 #, fuzzy msgid "Graphical terminal applications development" msgstr "Aplicació gràfica" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "Component d'utilitat OpenGL" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "Component d'utilitat OpenGL" #: CDocumentation.class:150 #, fuzzy msgid "Web applications utility component" msgstr "Eines d'aplicacions web" #: CDocumentation.class:151 msgid "Video capture" msgstr "Captura de vídeo" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Compatibilitat amb Visual Basic" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "Protocol XML-RPC" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Eines d'aplicacions web" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 #, fuzzy msgid "Web application development" msgstr "Eines d'aplicacions web" #: CDocumentation.class:160 #, fuzzy msgid "Web application development using processes as session" msgstr "Eines d'aplicacions web" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "Gestió gràfica de formularis" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "Gestió del bucle d'esdeveniments" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "Pantalla OpenGL" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "Insereix color" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "Emplaçament" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "Avís! No s'ha trobat la biblioteca." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Proveeix" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "Formulari" #: CModule.class:29 msgid "Forms" msgstr "Formularis" #: CModule.class:29 msgid "Gambas forms" msgstr "Formularis Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Pàgines web del Gambas" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "Pàgina Web" #: CModule.class:30 msgid "WebPages" msgstr "Pàgines Web" #: CModule.class:31 msgid "Gambas reports" msgstr "Informes del Gambas" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "Informe" #: CModule.class:31 msgid "Reports" msgstr "Informes" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Formularis Gambas" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "Formulari" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Formularis" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Formularis Gambas" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "Formulari" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Formularis" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 #, fuzzy msgid "IDE extensions" msgstr "Extensió automàtica" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "Canceŀla" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Esteu segur que voleu esborrar aquest fitxer?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 #, fuzzy msgid "Unable to uninstall software:" msgstr "No es pot connectar a la base de dades." #: CProjectList.class:560 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "El projecte s'ha creat correctament." #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Projecte" #: CProjectTree.class:373 msgid "Sources" msgstr "Fonts" #: CProjectTree.class:375 msgid "Connections" msgstr "Connexions" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Dades" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "Avui" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Ahir" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Fa dos dies" #: CRecentProject.class:74 msgid "This week" msgstr "Aquesta setmana" #: CRecentProject.class:76 msgid "This month" msgstr "Aquest mes" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "No s'ha pogut comprimir el fitxer." #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "Ignora" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "Les següents classes tenen herència circular:" #: CSoftware.class:389 #, fuzzy msgid "Unable to compile the project." msgstr "No s'ha pogut desar el projecte." #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "No es pot crear l'executable." #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "No es pot crear el directori temporal" #: CSoftware.class:664 #, fuzzy msgid "yesterday" msgstr "Ahir" #: CSoftware.class:666 #, fuzzy msgid "&1 days ago" msgstr "Fa dos dies" #: CSoftware.class:672 #, fuzzy msgid "last week" msgstr "Aquesta setmana" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 #, fuzzy msgid "last month" msgstr "Aquest mes" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 #, fuzzy msgid "on &1" msgstr "a &1." #: CVersionControlGit.class:341 #, fuzzy msgid "Unable to push the project." msgstr "No s'ha pogut desar el projecte." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 #, fuzzy msgid "Last commit" msgstr "Enganxa com a comentari" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "Objecte actual" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "No s'ha pogut crear el projecte!" #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "No s'ha pogut crear el projecte!" #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "Projectes recents" #: CVersionControlGit.class:394 #, fuzzy msgid "Status" msgstr "Barra d'estat" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 #, fuzzy msgid "Remote repository URL" msgstr "Repositori" #: CVersionControlGit.class:448 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "El directori serà suprimit en la propera publicació de canvis." #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "D'acord" #: CVersionControlGit.class:486 #, fuzzy msgid "Solve conflict." msgstr "Conflicte de versió" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Data" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 #, fuzzy msgid "Remote revision" msgstr "Suprimeix totes les expressions" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "primer" #: Design.module:229 Project.module:2325 msgid "second" msgstr "segon" #: Design.module:231 Project.module:2327 msgid "third" msgstr "tercer" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 #, fuzzy msgid "The program has been terminated." msgstr "El projecte s'ha creat correctament." #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" "El programa ha retornat\n" "el valor: &1" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "Aquest projecte no existeix." #: Design.module:1064 msgid "Output terminal" msgstr "Terminal de sortida" #: Design.module:1092 msgid "No terminal emulator found." msgstr "No s'ha trobat un emulador de terminal." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Llicència" #: FAbout.class:241 msgid "Financial support" msgstr "Suport financer" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Quant al Gambas" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "" "

Llicència

\n" "\n" "

Aquest programa és PROGRAMARI LLIURE; podeu distribuir-lo I/O modificar-lo 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ó 2 de la llicència, o bé (si ho preferiu) qualsevol versió posterior.

\n" "\n" "

Aquest 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" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "Argument incorrecte" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "Reinicialitza" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Executa" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Tanca" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "-" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "Seleccioneu un color" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:40 msgid "Free" msgstr "Lliure" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "Inacabat però estable" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "Experimental" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "Elimina-ho tot" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Aquests components son incompatibles:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "El component &1 necessita un dels components següents:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "El component &1 necessita el component &2." #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Seleccioneu una font" #: FComponentChooser.form:55 #, fuzzy msgid "Show deprecated components" msgstr "Mostra les classes exportades" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "Recarregar" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "Apropa" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "Allunya" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "Sense ampliació" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "E&dita" #: FConflict.class:14 #, fuzzy msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "Aquest fitxer està en conflicte amb la revisió #&1.\n" "Heu de resoldre el conflicte si voleu fer servir el fitxer." #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Text" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "Imatge" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "S'ha modificat el fitxer.\n" "Realment voleu tancar el diàleg?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Alguns conflictes encare no s'han resolt." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "No es pot resoldre el conflicte." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "S'ha modificat el fitxer.\n" "Realment voleu obrir un altre fitxer?" #: FConflict.class:267 msgid "Conflict files" msgstr "Fitxers conflictius" #: FConflict.form:31 msgid "Version conflict" msgstr "Conflicte de versió" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "Retalla" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "Copia" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "Enganxa" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "Desfés" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "Refés" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "Sagnar" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "Desagnar" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Obriu" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "Desa" #: FConflict.form:160 msgid "Solve" msgstr "Resol" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(Declaracions)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "Avançat" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "Majúscules" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "Minúscules" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "Comenta" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "Descomenta" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "Enganxa especial" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "Selecciona-ho tot" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "Ves a la línia" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "Cerca el següent" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "Cerca l'anterior" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "Visualitzar" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 #, fuzzy msgid "Automatic word wrap" msgstr "Automatització" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "Sense divisió" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "Divisió horitzontal" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "Divisió vertical" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "Final de línia" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "Obre el codi" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "Enganxa com a cadena" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "Enganxa com a cadena multi-línia" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "Enganxa com a comentari" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "Editor de text" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "Codi" #: FConflictEditor.form:377 #, fuzzy msgid "Conflict solved" msgstr "Fitxers conflictius" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Conflicte de versió" #: FConflictEditor.form:518 #, fuzzy msgid "Next conflict" msgstr "Conflicte de versió" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "Nom" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "Tipus" #: FConnectionEditor.class:61 msgid "Length" msgstr "Durada" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valor per omissió" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Compilació" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Índex" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Únic" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Camp" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "No es pot connectar a la base de dades." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "No el deseu" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "S'ha modificat la taula '&1'. Voleu desar-la?" #: FConnectionEditor.class:498 #, fuzzy msgid "No record" msgstr "No s'han importat registres." #: FConnectionEditor.class:500 #, fuzzy msgid "One record" msgstr "S'ha importat un registre." #: FConnectionEditor.class:502 #, fuzzy msgid "&1 records" msgstr "S'han importat &1 registres." #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "No s'ha pogut carregar la taula '&1'." #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "No s'ha pogut executar la consulta." #: FConnectionEditor.class:722 Project.module:2643 #, fuzzy msgid "(in &1 s)" msgstr "a &1." #: FConnectionEditor.class:755 msgid "unlimited" msgstr "sense límit" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "-" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "Booleà" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "Flotant" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "Enter" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "Llarg" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "Sèrie" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "Cadena" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "Aquest nom ja s'està fent servir." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "Introduïu un número." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "La longitud ha de ser superior a 1 i inferior a 255." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "Discordança dels tipus." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "Aquest nom ja existeix." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "Aquest camp s'està utilitzant en un índex." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "La taula '&1' no té clau primària." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "No es pot escriure la taula '&1'." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "Segur que voleu suprimir la taula '&1'?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "No es pot suprimir la taula '&1'." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "Segur que voleu suprimir les files seleccionades?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editor de connexió" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Mostra les taules del sistema" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Taula nova" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Esborra la taula" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "&Suprimeix" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Canvia el nom de la taula" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Reanomena" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Copia la taula" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Enganxa la taula" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importa fitxer de text" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "Importa" #: FConnectionEditor.form:217 msgid "Run query" msgstr "Executa la consulta" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "Nou" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Suprimir" #: FConnectionEditor.form:309 msgid "Fields" msgstr "Camps" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Afegeix" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Avall" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Puja" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "Copia la llista de camps" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "Índexs" #: FConnectionEditor.form:389 msgid "New index" msgstr "Índex nou" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "Edita" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exporta a un fitxer CSV" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exporta" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Suprimeix" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Selecciona-ho tot" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Deselecciona-ho tot" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Conversió del projecte a Gambas 3" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Cap pare)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "No es pot afegit el fitxer" #: FCreateFile.form:37 msgid "New file" msgstr "Fitxer nou" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "Opcions" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Amplada" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Alçada" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Gestió de caixes de diàleg" #: FCreateFile.form:155 msgid "Parent class" msgstr "Classe pare" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportat" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "Extensió automàtica" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "creable" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Extensió automàtica" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "La verificació del projecte ha fallat." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "No s'ha pogut crear el projecte!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Trieu una localització al menú." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Introduïu la ubicació del repositori." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Projecte nou" #: FCreateProject.form:46 msgid "Project type" msgstr "Tipus de projecte" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "Directori del projecte" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Propietats del projecte" #: FCreateProject.form:99 msgid "Project name" msgstr "Nom del projecte" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "Projecte traduïble" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "Obre en una altra finestra" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repositori" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "Depuració" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Consola" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "Punts d'interrupció" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 #, fuzzy msgid "Search result" msgstr "Cerca la llista" #: FDebugExpr.class:4 msgid "not available" msgstr "no disponible" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Valor" #: FDebugExpr.class:511 msgid "Key" msgstr "Clau" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Símbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Observar" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "Desacobla consola" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "Cap element" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "Línia" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "Funció" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Fitxer" #: FDebugInfo.class:53 msgid "Col." msgstr "-" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "Missatge" #: FDebugInfo.class:125 msgid "native code" msgstr "codi nadiu" #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "Observa expressió" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "Voleu suprimir la llista d'expressions?" #: FDebugInfo.class:1112 #, fuzzy msgid "File not loaded" msgstr "No s'ha trobat el fitxer!" #: FDebugInfo.class:1255 msgid "Current object" msgstr "Objecte actual" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "Variables locals" #: FDebugInfo.class:1563 #, fuzzy msgid "Test has failed." msgstr "La verificació del projecte ha fallat." #: FDebugInfo.class:1568 #, fuzzy msgid "Test has succeeded." msgstr "La verificació del projecte ha fallat." #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "Depuració" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "Suprimeix l'expressió actual" #: FDebugInfo.form:137 msgid "Add expression" msgstr "Afegir expressió" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "Elimina tots els punts d'interrupció" #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "Commuta punt de ruptura" #: FDebugInfo.form:220 #, fuzzy msgid "Disable" msgstr "Taula" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "Commuta punt de ruptura" #: FDebugInfo.form:228 #, fuzzy msgid "Enable" msgstr "Taula" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "Elimina tots els punts d'interrupció" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "Neteja la consola" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "Publicació de canvis" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Sincronitza" #: FDebugInfo.form:397 FMain.form:532 #, fuzzy msgid "Revert all changes" msgstr "Elimina tots els punts d'interrupció" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "Canceŀla la cerca actual" #: FDebugInfo.form:474 msgid "Show search window" msgstr "Mostra la finestra de cerca" #: FDebugInfo.form:481 msgid "Search again" msgstr "Cerca un altre cop" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "La cadena buscada no s'ha trobat." #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "Columnes" #: FEditor.class:411 #, fuzzy msgid "Overwrite" msgstr "S&obreescriu" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "Formateja el codi" #: FEditor.form:202 msgid "Sort procedures" msgstr "Ordena els procediments" #: FEditor.form:232 msgid "Go to" msgstr "Anar a" #: FEditor.form:251 msgid "Find definition" msgstr "Cerca definició" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "Executa fins la línia actual" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "Commuta punt de ruptura" #: FEditor.form:322 msgid "Watch expression" msgstr "Observa expressió" #: FEditor.form:331 msgid "Open form" msgstr "Obrir formulari" #: FEditor.form:338 FMain.form:1139 #, fuzzy msgid "Run this class" msgstr "Classe pare" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "Imprimeix" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Editor" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "Desa els fitxers modificats" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 #, fuzzy msgid "Previous modification" msgstr "Conflicte de versió" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 #, fuzzy msgid "Next modification" msgstr "Conflicte de versió" #: FEditor.form:572 FTextEditor.form:589 #, fuzzy msgid "Insert special character" msgstr "Caractères incorrects" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "Feu el codi agradable" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "Llista de procediments" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Fitxers CSV" #: FExportData.class:113 msgid "Unable to export data." msgstr "No s'ha pogut exportar les dades." #: FExportData.class:126 msgid "&Overwrite" msgstr "S&obreescriu" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Aquest arxiu ja existeix. \n" "\n" "Voleu sobreescriure'l?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Caràcter delimitador" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Caràcter de tancament" #: FExportData.form:54 msgid "Export field names" msgstr "Exporta els noms dels camps" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exporta només els registres seleccionats" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Usuari" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Contrasenya" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Recorda la contrasenya" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Introduïu la vostra adreça de correu electrònic." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "No s'ha pogut executar la consulta." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Configura la vora" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "No s'ha pogut obrir la connexió." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "No es poden obtenir els camps de la taula." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Edita la llista de camps" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Seleccioneu un camp" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Connexió" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Taula" #: FFileInfoVC.class:30 #, fuzzy msgid "'&1' version control" msgstr "Poseu en el control de versions" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "Aquest fitxer està bloquejat i serà eliminat en la propera publicació de canvis." #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "Aquest fitxer no està versionat, i s'ha d'afegir al dipòsit." #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "Aquest fitxer no s'ha modificat des de l'última publicació de canvis." #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "Continua" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "Esteu a punt de canceŀlar els vostres canvis!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Canvis" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "Ordena l'historial" #: FFileInfoVC.form:64 #, fuzzy msgid "Undo changes" msgstr "Canvis" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Mòduls Gambas" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "Ordena propietats" #: FFontChooser.form:12 msgid "Select a font" msgstr "Seleccioneu una font" #: FForm.class:136 msgid "Bad form file" msgstr "Fitxer de formulari incorrecte" #: FForm.class:284 #, fuzzy msgid "Unknown control: &1" msgstr "Identificador desconegut: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "Manca el component del control &1" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "No s'ha pogut crear la taula '&1'." #: FForm.form:178 msgid "Copy at the same place" msgstr "Copia al mateix lloc" #: FForm.form:198 msgid "Delete container only" msgstr "Esborrar només el contenidor" #: FForm.form:205 msgid "Embed into a container" msgstr "Incrusta en un contenidor" #: FForm.form:211 msgid "Change into" msgstr "Canvia a" #: FForm.form:219 msgid "Select" msgstr "Selecciona" #: FForm.form:232 msgid "Select parent" msgstr "" #: FForm.form:245 msgid "Arrangement" msgstr "Alineament" #: FForm.form:249 msgid "Bring to foreground" msgstr "Posa en primer pla" #: FForm.form:256 msgid "Send to background" msgstr "Posa al fons" #: FForm.form:266 msgid "Horizontal" msgstr "Horitzontal" #: FForm.form:273 msgid "Rows" msgstr "Files" #: FForm.form:279 msgid "Vertical" msgstr "Vertical" #: FForm.form:286 msgid "Columns" msgstr "Columnes" #: FForm.form:295 msgid "Center horizontally" msgstr "Centra horitzontalment" #: FForm.form:301 msgid "Center vertically" msgstr "Centra verticalment" #: FForm.form:307 msgid "Alignment" msgstr "Alineació" #: FForm.form:311 msgid "Align to left" msgstr "Alinea a l'esquerra" #: FForm.form:317 msgid "Align to right" msgstr "Alinea a la dreta" #: FForm.form:323 msgid "Align to top" msgstr "Alinea a dalt" #: FForm.form:329 msgid "Align to bottom" msgstr "Alinea a baix" #: FForm.form:338 msgid "Same width" msgstr "La mateixa amplada" #: FForm.form:344 msgid "Same height" msgstr "La mateixa alçada" #: FForm.form:353 msgid "Show tab" msgstr "Mostra les pestanyes" #: FForm.form:361 msgid "Move tab" msgstr "Mou la pestanya" #: FForm.form:366 msgid "First" msgstr "Primer" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "Previ" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "Següent" #: FForm.form:387 msgid "Last" msgstr "Últim" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "Editor del menú" #: FForm.form:407 msgid "Event" msgstr "Esdeveniment" #: FForm.form:421 #, fuzzy msgid "Run this form" msgstr "Executa aquesta ordre després" #: FForm.form:601 msgid "Toggle grid" msgstr "Commuta la graella" #: FForm.form:610 FImageEditor.form:514 #, fuzzy msgid "Toggle information tooltip" msgstr "Informació del paquet" #: FForm.form:729 msgid "Move tab first" msgstr "Mou la pestanya al principi" #: FForm.form:736 msgid "Move tab left" msgstr "Mou la pestanya a l'esquerra" #: FForm.form:743 msgid "Move tab right" msgstr "Mou la pestanya a la dreta" #: FForm.form:750 msgid "Move tab last" msgstr "Mou la pestanya al final" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "Negreta" #: FForm.form:786 msgid "Italic" msgstr "Cursiva" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "Subratllat" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Ba" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "Jerarquia" #: FFormStack.form:24 msgid "Move top" msgstr "Mou a dalt de tot" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "Mou a dalt" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "Mou a baix" #: FFormStack.form:42 msgid "Move bottom" msgstr "Mou a baix de tot" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "Idioma predeterminat" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Navegador d'ajuda" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "Mostra l'arbre d'ajuda" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Vés enrere" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "Avança" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "Traducció" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "Inverteix horitzontalment" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "Inverteix verticalment" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "Gira cap a l'esquerra" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "Gira cap a la dreta" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selecció" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "Preferències" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "Selecció" #: FImageEditor.form:284 #, fuzzy msgid "Exclusive or" msgstr "Exclou" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "Editor d'imatges" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Dibuix" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Rectangle" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Eŀlipse" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "-" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "Vora" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Degradat lineal" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Degradat radial" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "Afegir punt de degradat" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "Treure punt de degradat" #: FImageProperty.form:232 FReportBrushChooser.form:99 #, fuzzy msgid "Select gradient stop color" msgstr "Seleccioneu el color del punt de degradat..." #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "Inverteix el gradiant" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "Radi" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 #, fuzzy msgid "Colorize" msgstr "-" #: FImageProperty.form:400 #, fuzzy msgid "Desaturate" msgstr "Característiques" #: FImageProperty.form:408 #, fuzzy msgid "Make transparent" msgstr "Desa la traducció" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "Línia" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "Línia" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Mida" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "Traducció" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "Vista prèvia" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Classes Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Mòduls Gambas" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Mòduls Gambas" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Fulls d'estil en cascada" #: FImportFile.class:33 msgid "HTML files" msgstr "Fitxers HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "Fitxers d'imatges" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "No es pot obrir el fitxer." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importa el fitxer" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "Tots els fitxers" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Clau automàtica)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Camp_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "No hi ha prou valors" #: FImportTable.class:393 msgid "Too many values" msgstr "Hi ha massa valors" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Canceŀlat per l'usuari" #: FImportTable.class:427 msgid "No record imported." msgstr "No s'han importat registres." #: FImportTable.class:429 msgid "One record imported." msgstr "S'ha importat un registre." #: FImportTable.class:431 msgid "&1 records imported." msgstr "S'han importat &1 registres." #: FImportTable.form:35 msgid "Import file" msgstr "Importa el fitxer" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Seleccioneu el fitxer a importar" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Origen" #: FImportTable.form:78 msgid "Charset" msgstr "Joc de caràcters" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Elimina els espais blancs innecessaris" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignora les primeres línies" #: FImportTable.form:139 msgid "Line(s)" msgstr "Línia(es)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destí" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "La primera línia conté els noms de camp" #: FImportTable.form:176 msgid "Key field" msgstr "Camp clau" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Introduïu el nom de la base de dades." #: FLayout.class:30 FOption.class:1716 #, fuzzy msgid "Override" msgstr "S&obreescriu" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Aquest nom ja existeix." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Desa-ho tot" #: FLayout.form:22 #, fuzzy msgid "Layout name" msgstr "Nom del projecte" #: FList.class:103 msgid "Item &1" msgstr "Element &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Segur que vols esborrar la llista?" #: FList.form:25 msgid "Edit list property" msgstr "Edita la llista de propietats" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Converteix" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Segur que voleu esborrar aquest enllaç?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Esteu segur que voleu esborrar aquest directori?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Esteu segur que voleu esborrar aquest fitxer?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "No s'ha pogut suprimir el fitxer o directori" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "El fitxer o directori ja no existeix." #: FMain.class:773 msgid "Sort history" msgstr "Ordena l'historial" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "Ordena per data" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "Ordena per nom" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "Ordena per camí" #: FMain.class:789 msgid "&Clear history" msgstr "&Neteja l'historial" #: FMain.class:969 msgid "New folder" msgstr "Carpeta nova" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "Les eines de traducció del GNU no estan instaŀlades al vostre sistema.\n" "\n" "Instaŀleu-les per a poder fer les traduccions." #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "No s'ha pogut deixar anar el fitxer al projecte." #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "Totes les còpies de seguretat i els fitxers generats se suprimiran del directori del projecte." #: FMain.class:1904 msgid "Clean" msgstr "Neteja" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "Seleccioneu un fitxer" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "El fitxer s'ha modificat.\n" "\n" "Tots els vostres canvis es perdran." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Obre projecte" #: FMain.form:313 msgid "Open recent" msgstr "Obre recent" #: FMain.form:321 msgid "Open example" msgstr "Obre exemple" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "Desa projecte" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Anomena i desa projecte" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "Seleccioneu un projecte" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Surt" #: FMain.form:402 Project.module:6969 msgid "Save as" msgstr "" #: FMain.form:442 msgid "Compile" msgstr "Compila" #: FMain.form:449 msgid "Compile All" msgstr "Compila-ho tot" #: FMain.form:459 msgid "Translate" msgstr "Traducció" #: FMain.form:468 msgid "Make" msgstr "Crea" #: FMain.form:472 msgid "Executable" msgstr "Executable" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "Fitxer font" #: FMain.form:486 msgid "Installation package" msgstr "Paquet d'instaŀlació" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "Crea" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 #, fuzzy msgid "Put under version control" msgstr "Poseu en el control de versions" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "Neteja" #: FMain.form:570 msgid "Refresh" msgstr "Refresca" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Pausa" #: FMain.form:630 msgid "Stop" msgstr "Atura" #: FMain.form:637 msgid "Step" msgstr "Pas" #: FMain.form:644 msgid "Forward" msgstr "Endavant" #: FMain.form:651 msgid "Finish" msgstr "Acaba " #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 #, fuzzy msgid "Invert language orientation" msgstr "Inverteix el gradiant" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 #, fuzzy msgid "Show database requests" msgstr "Ignora el joc de caràcters de la base de dades" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "" #: FMain.form:713 msgid "Current desktop" msgstr "" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "Neteja tots els punt de ruptura" #: FMain.form:770 msgid "Close all debug windows" msgstr "Tanca totes les finestres de depuració" #: FMain.form:808 msgid "Status bar" msgstr "Barra d'estat" #: FMain.form:815 msgid "Hide menubar" msgstr "Amaga la barra de menús" #: FMain.form:839 msgid "Close all windows" msgstr "Tanca totes les finestres" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "Cerca" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Reemplaçar" #: FMain.form:866 msgid "Browse project" msgstr "Navega el projecte" #: FMain.form:873 msgid "Open a terminal" msgstr "Obre un terminal" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "Dreceres" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Preferències" #: FMain.form:924 msgid "Directory" msgstr "Directori" #: FMain.form:929 msgid "Project link" msgstr "Enllaç del projecte" #: FMain.form:938 msgid "Module" msgstr "Mòdul" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr "Mòduls Gambas" #: FMain.form:1004 msgid "HTML file" msgstr "Fitxer HTML" #: FMain.form:1011 msgid "Style sheet" msgstr "Fulla d'estil" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "Altres" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Recent" #: FMain.form:1059 #, fuzzy msgid "Open in file manager" msgstr "Gestió de fitxers de configuració" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "Obre projecte" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "Copia el camí del fitxer" #: FMain.form:1132 msgid "Startup class" msgstr "Classe d'inici" #: FMain.form:1147 msgid "Add to repository" msgstr "Afegeix al dipòsit " #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "Mostra les classes exportades" #: FMain.form:1160 msgid "Show added files" msgstr "Desa els fitxers afegits" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr "Desa els fitxers modificats" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "Desa els fitxers afegits" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "Descomprimeix el fitxer" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "No traduïble" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "No es pot crear l'executable." #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "Comprimeix el fitxer" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "Nova connexió" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Consells del dia" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "Informació del sistema" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Propietats del projecte" #: FMain.form:1429 msgid "Refresh project" msgstr "Refresca projecte" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "Crea executable" #: FMain.form:1471 msgid "Make source archive" msgstr "Crea fitxer font" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "Crea paquet d'instaŀlació" #: FMain.form:1500 msgid "Properties sheet" msgstr "Fulla de propietats" #: FMain.form:1509 msgid "Toolbox" msgstr "Caixa d'eines" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "Cerca" #: FMain.form:1551 msgid "Compile all" msgstr "Compila-ho tot" #: FMain.form:1600 msgid "Finish current function" msgstr "Acaba la funció actual" #: FMain.form:1616 #, fuzzy msgid "Show menubar" msgstr "Mostra nombres de línia" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "&Fitxer" #: FMain.form:1730 msgid "&Project" msgstr "&Projecte" #: FMain.form:1742 msgid "&Debug" msgstr "&Depuració" #: FMain.form:1754 msgid "&View" msgstr "&Visualitza" #: FMain.form:1766 msgid "&Tools" msgstr "&Eines" #: FMain.form:1778 msgid "&?" msgstr "-" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "Mostra l'arbre d'ajuda" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "Fulla de propietats" #: FMain.form:1987 #, fuzzy msgid "Show property help" msgstr "Mostra l'ajuda de la propietat" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "Mostra consells" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Aplicacions Gambas" #: FMakeExecutable.form:60 #, fuzzy msgid "Increment version" msgstr "Valor incorrecte." #: FMakeExecutable.form:71 #, fuzzy msgid "Set version to" msgstr "Poseu en el control de versions" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Mantenir informació de depuració en l'executable" #: FMakeExecutable.form:109 #, fuzzy msgid "Compress files in executable" msgstr "Comprimeix el fitxer" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "Crea un enllaç a l'escriptori" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 #, fuzzy msgid "Run this shell command after" msgstr "Executa aquesta ordre després" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "Paquet" #: FMakeInstall.class:137 msgid "Min. version" msgstr "Versió min." #: FMakeInstall.class:138 msgid "Max. version" msgstr "Versió max." #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "Creant paquet..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Els paquets s'han creat satisfactòriament." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Introduïu el vostre nom." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Introduïu la vostra adreça de correu electrònic." #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "Introduïu un nom de menú." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "No hi ha entrada al CHANGELOG per aquest llançament." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Introduïu la primera entrada del REGISTRE DE CANVIS." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "Trieu almenys una distribució de destinació." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "Trieu el grup del paquet per a cada distribució de destinació." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "Trieu un grup del paquet." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "Trieu la localització al menú per a cada distribució de destinació." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "Trieu una localització al menú." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "El paquet no es pot emmagatzemar dins el directori del projecte." #: FMakeInstall.class:558 msgid "Initial release" msgstr "Llançament inicial" #: FMakeInstall.class:814 msgid "Menus" msgstr "Menús" #: FMakeInstall.class:882 msgid "Groups" msgstr "Grups" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "Caractères incorrects" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "Esteu segur que voleu suprimir totes les dependències extres?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "Esteu segur que voleu suprimir tots els fitxers extres?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "Trieu el directori de destinació" #: FMakeInstall.form:151 msgid "Create package" msgstr "Crea el paquet" #: FMakeInstall.form:154 msgid "Package information" msgstr "Informació del paquet" #: FMakeInstall.form:160 msgid "Package name" msgstr "Nom del paquet" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "Nom del proveïdor" #: FMakeInstall.form:241 FOption.form:378 #, fuzzy msgid "Vendor prefix" msgstr "Nom del proveïdor" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Informació del mantenidor" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Registre de canvis" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Distribució destí" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "Grup del paquet" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Entrada de menú" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categories" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Fitxer de configuració d'escriptori" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "Tipus mime" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Configuració addicional" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "El que segueix s'afegirà al final del fitxer de configuració d'escriptori." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Dépendances supplémentaires" #: FMakeInstall.form:714 #, fuzzy msgid "Minimum Gambas version" msgstr "Versió min." #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Les mateixes dependències per a tots els objectius" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Fitxers extres" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Els mateixos fitxers per atots els objectius" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Proves extres de l'autoconf" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Afegiu proves extres durant el procés de configuració.\n" "

Deixeu-ho en blanc si no ho necessiteu, o si no sabeu res d'scripts de l'autoconf." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Directori de destinació" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Crea directoris per a cada distribució" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "Crea el paquet" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "Directori del projecte" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Paquets font" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "Crea paquet font" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "S'han modificat els menús!" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "Introduïu un nom de menú." #: FMenu.class:346 msgid "Bad menu name !" msgstr "Nom de menú incorrecte !" #: FMenu.class:352 msgid "Bad group name !" msgstr "Nom de grup incorrecte !" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Aquest menú té masses nivells !" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "modificat" #: FMenu.form:86 msgid "Insert menu" msgstr "Insereix el menú" #: FMenu.form:95 #, fuzzy msgid "Insert separator" msgstr "Insereix color" #: FMenu.form:104 #, fuzzy msgid "Insert menu before" msgstr "Insereix el menú" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "Insereix color" #: FMenu.form:113 msgid "Delete menu" msgstr "" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "Insereix color" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Feu clic a insereix per afegir un menú." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Introduïu el nom de la base de dades." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Introduïu la contrasenya" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Propietats de la connexió" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Trieu un directori" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Creeu la base de dades '&1'" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Esborreu la base de dades '&1'" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "No s'ha pogut crear la base de dades." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Segur que voleu esborrar la base de dades '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "No s'ha pogut esborrar la base de dades." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Màquina" #: FNewConnection.form:124 msgid "Path" msgstr "Ruta" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Configura la vora" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Base de dades" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignora el joc de caràcters de la base de dades" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "Crea una taula" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Introduïu el nom de la taula nova." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "La taula '&1' ja existeix." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nova traducció" #: FOpenProject.form:22 msgid "Select a project" msgstr "Seleccioneu un projecte" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Exemples" #: FOption.class:4 msgid "Amber" msgstr "Ambre" #: FOption.class:4 msgid "Amethyst" msgstr "Ametista" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Maragda" #: FOption.class:4 msgid "Gambas" msgstr "-" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidiana" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Enganxa" #: FOption.class:4 msgid "Quest" msgstr "Recerca" #: FOption.class:4 msgid "Quick" msgstr "Ràpid" #: FOption.class:4 msgid "Ruby" msgstr "Robí" #: FOption.class:4 msgid "Sapphire" msgstr "Safir" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(Per defecte)" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "Escriptori" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(Per defecte)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "Fitxers de temes ressaltats del Gambas" #: FOption.class:267 msgid "Export a theme file" msgstr "Exporteu un fitxer de tema" #: FOption.class:498 msgid "Select a theme file" msgstr "Trieu un fitxer de tema" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "Heu de reiniciar l'aplicació per veure els vostres canvis." #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "Segur que voleu netejar la memòria cau de la documentació?" #: FOption.class:863 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Neteja la memòria cau de la documentació" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "Segur que voleu esborrar aquest fragment de codi?" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Esteu segur que voleu esborrar aquest fitxer?" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 msgid "Network is not available." msgstr "" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "No es pot suprimir la taula '&1'." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 #, fuzzy msgid "Unable to install documentation." msgstr "No s'ha pogut obrir la connexió." #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "Compilació" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "Fitxer actual" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "Segur que vols esborrar la llista?" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "Segur que voleu esborrar aquest enllaç?" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 #, fuzzy msgid "Identity" msgstr "Sagnar" #: FOption.form:350 #, fuzzy msgid "Package maintainer" msgstr "Nom del paquet" #: FOption.form:395 #, fuzzy msgid "Default license" msgstr "Valor per omissió" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "No" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "Sí" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "Projecte" #: FOption.form:456 msgid "Default tab size" msgstr "Mida de tabulació predeterminada" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "espai(s)" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 #, fuzzy msgid "Activate version control" msgstr "Poseu en el control de versions" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Compilació" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "Posa al fons" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Imatge" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Extensió automàtica" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Fitxers de traducció" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Ajuda" #: FOption.form:670 msgid "Show documentation in popups" msgstr "Mostra la documentació en finestres emergents" #: FOption.form:687 msgid "Always display optional messages" msgstr "Mostra sempre els missatges opcionals" #: FOption.form:699 #, fuzzy msgid "Documentation" msgstr "Emplaçament" #: FOption.form:710 #, fuzzy msgid "Use offline documentation" msgstr "No s'ha pogut obrir la connexió." #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "Neteja la memòria cau de la documentació" #: FOption.form:787 msgid "Applications" msgstr "Aplicacions" #: FOption.form:798 msgid "Browser" msgstr "Navegador" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "Terminal" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "Ressalta la línia actual" #: FOption.form:875 msgid "Highlight modified lines" msgstr "Ressalta les línies modificades" #: FOption.form:892 msgid "Show line numbers" msgstr "Mostra nombres de línia" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "Separació de procediments" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "Mostra els espais al final de la línia amb punts" #: FOption.form:960 #, fuzzy msgid "Show Preview" msgstr "Vista prèvia" #: FOption.form:978 msgid "Keywords in upper case" msgstr "Paraules clau en majúscules" #: FOption.form:987 msgid "Code formatting" msgstr "formatat del codi" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 #, fuzzy msgid "Control structure completion" msgstr "Auto-completat d'estructura de control" #: FOption.form:1021 #, fuzzy msgid "Local variable declaration" msgstr "Sagna la declaració local de variables" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "Connexió" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "Ignora les cadenes" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "Formateja en obrir i en desar" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "Sagna la declaració local de variables" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "Treure els espais inútils a la final de la línia" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "Mantingues les successives línies buides" #: FOption.form:1155 msgid "Code snippets" msgstr "Fragments de codi" #: FOption.form:1171 msgid "Activate code snippets" msgstr "Activa el fragmentat de codi" #: FOption.form:1232 msgid "Interface" msgstr "Interfície" #: FOption.form:1249 #, fuzzy msgid "Activate animations" msgstr "Activa el fragmentat de codi" #: FOption.form:1266 #, fuzzy msgid "Show shadows" msgstr "Mostra la finestra de cerca" #: FOption.form:1283 msgid "Show tooltips" msgstr "Mostra consells" #: FOption.form:1300 msgid "Use utility windows" msgstr "Fer servir finestres d'utilitat" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 #, fuzzy msgid "Message style" msgstr "Missatges" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "-" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 #, fuzzy msgid "Debugger size" msgstr "Depuració" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Impressió" #: FOption.form:1588 #, fuzzy msgid "Fixed font" msgstr "Usar una font fixa" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 #, fuzzy msgid "Themes" msgstr "Tema" #: FOption.form:1698 msgid "Icon theme" msgstr "Tema d'icones" #: FOption.form:1714 #, fuzzy msgid "Highlighting theme" msgstr "Ressaltat" #: FOption.form:1728 msgid "Import theme" msgstr "Importa tema" #: FOption.form:1734 msgid "Export theme" msgstr "Exporta tema" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Consola - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Desacobla consola" #: FOutput.form:72 msgid "Keep above" msgstr "Sempre per sobre" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "Obre un terminal" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Obre recent" #: FOutput.form:130 msgid "Use system charset" msgstr "Usa el joc de caràcters del sistema" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "No s'ha pogut enganxar el text." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Contingut del porta-retalls" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Enganxa normal" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Enganxa amb PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Introduïu un nom de taula." #: FPasteTable.class:133 msgid "Table already exists" msgstr "La taula ja existeix" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Copia també el contingut de la taula" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Desfer" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "Propietats del projecte" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "Processament d'imatges" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "Ordena propietats" #: FProjectProperty.class:55 msgid "Variable" msgstr "Variable" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "Els valors d'ajustament son incorrectes." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "&1 no exporta cap classe." #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "&1 ja s'utilitza com a biblioteca." #: FProjectProperty.class:1000 msgid "Modules" msgstr "Mòduls" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "Mòduls Gambas" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "Funció" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 #, fuzzy msgid "Average number of lines by function" msgstr "Nombre de dimensions incorrecte" #: FProjectProperty.class:1016 #, fuzzy msgid "Executable size" msgstr "Executable" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 #, fuzzy msgid "Information about component" msgstr "Carregant informació del component &1..." #: FProjectProperty.class:1039 msgid "Information about library" msgstr "" #: FProjectProperty.class:1419 #, fuzzy msgid "Select a Gambas executable" msgstr "Trieu una aplicació Gambas" #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "Crea executable" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "Compila" #: FProjectProperty.form:300 msgid "General" msgstr "General" #: FProjectProperty.form:366 msgid "Component" msgstr "Component" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:373 #, fuzzy msgid "Vendor" msgstr "Nom del proveïdor" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versió" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "Obtingut de l'arxiu «VERSION»" #: FProjectProperty.form:418 msgid "Title" msgstr "Títol" #: FProjectProperty.form:452 #, fuzzy msgid "Information" msgstr "Informació del sistema" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "Acabat i estable" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "Aquest component està ocult" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 #, fuzzy msgid "Include information from" msgstr "Informació del paquet" #: FProjectProperty.form:547 #, fuzzy msgid "Required features" msgstr "Requereix" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 #, fuzzy msgid "Require" msgstr "Requereix" #: FProjectProperty.form:630 #, fuzzy msgid "Exclude" msgstr "Exclou" #: FProjectProperty.form:642 msgid "Remove All" msgstr "Esborra-ho tot" #: FProjectProperty.form:649 msgid "Components" msgstr "Components" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Biblioteques" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "Preferències" #: FProjectProperty.form:748 msgid "Environment" msgstr "Entorn" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Edició" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Mida de tabulació" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "Els símbols de mòdul son públics per defecte" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Els controls de formulari son públics" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 #, fuzzy msgid "Add branch to version number" msgstr "Valor incorrecte." #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "Estadístiques" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Aquesta línia i les següents seran ignorades" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "No s'ha pogut fer la publicació de canvis del projecte" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "No s'ha pogut actualitzar el projecte des del dipòsit." #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "El projecte s'ha actualitzat correctament des del dipòsit." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Actualitza" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Alguns fitxers no estan versionats i s'han d'afegir manualment al dipòsit." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Descripció prèvia" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Caràcters no permesos en el nom del control." #: FProperty.class:383 msgid "This name is already in use." msgstr "Aquest nom ja està sent utilitzat." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Caràcters no permesos en el grup del control." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valor incorrecte de la propietat" #: FProperty.class:631 msgid "The name of the control." msgstr "El nom del control." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "El grup d'esdeveniments al que pertany el control." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Si les dimensions del formulari i els controls han de seguir la mida de les fonts per defecte." #: FProperty.class:661 msgid "If the control is public." msgstr "Si el control és públic." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Aquesta propietat és virtual: Només està implementada dins de l'IDE, i no existeix en temps d'execució." #: FProperty.class:814 msgid "None" msgstr "Cap" #: FProperty.form:51 msgid "Lock property" msgstr "Bloca la propietat" #: FProperty.form:58 msgid "Sort properties" msgstr "Ordena propietats" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "El projecte s'ha creat correctament." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "No s'ha pogut desar el projecte." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Valor incorrecte." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Esteu segur que voleu suprimir tots els fitxers extres?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Trieu un fitxer de tema" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Fitxer actual" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "Descripció prèvia" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "Mida de tabulació" #: FPublish.form:113 #, fuzzy msgid "Create menu entry" msgstr "Entrada de menú" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 #, fuzzy msgid "Dependencies" msgstr "Dépendances supplémentaires" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configura la vora" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Cantonada" #: FReportBoxShadowChooser.form:23 #, fuzzy msgid "Configure shadow" msgstr "Configuració del pinzell" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configuració del pinzell" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "Trieu una imatge dins del projecte" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Valor incorrecte." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Trieu una dimensió" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configuració de l'espai" #: FSave.form:15 msgid "Save modified files" msgstr "Desa els fitxers modificats" #: FSave.form:43 msgid "Save All" msgstr "Desa-ho tot" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "Aquests fitxers s'han modificat. Voleu desar-los?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "No es pot desar un projecte dins el seu propi directori." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "No s'ha pogut desar el projecte." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "La cadena buscada s'ha reemplaçat un cop." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "La cadena buscada s'ha reemplaçat &1 cops." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "Cap element" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Implementa" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Segur que voleu canviar totes les cadenes?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Cerca i reemplaça" #: FSearch.form:105 msgid "Case sensitive" msgstr "Sensible a caixa" #: FSearch.form:110 msgid "Words only" msgstr "Només paraules" #: FSearch.form:115 msgid "Regular expression" msgstr "Expressió regular" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignora les cadenes" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignora els comentaris" #: FSearch.form:140 msgid "Search in" msgstr "Cerca a" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Acaba la funció actual" #: FSearch.form:153 msgid "Current file" msgstr "Fitxer actual" #: FSearch.form:160 msgid "Source files" msgstr "Fitxers font" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Fitxers extres" #: FSearch.form:197 msgid "Browse" msgstr "Navega" #: FSearch.form:209 msgid "Replace all" msgstr "Reemplaça-ho tot" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "Ressalta el resultat" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Trieu un fitxer extra" #: FSelectIcon.class:40 msgid "Image files" msgstr "Fitxers d'imatges" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "Fitxers d'imatge SVG" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Seleccioneu una imatge" #: FSelectIcon.form:45 msgid "Stock" msgstr "Estoc" #: FSelectIcon.form:73 #, fuzzy msgid "Size preview" msgstr "Vista prèvia" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Desconegut" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Trieu un directori" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Introduïu una cadena d'activació." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Aquesta cadena d'activació ja està sent utilitzada." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Edita el fragment de codi" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nou fragment de codi" #: FSnippet.form:26 msgid "Trigger string" msgstr "Cadena d'activació" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Jocs" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "Edició" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "Vídeo" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 #, fuzzy msgid "Accessories" msgstr "Accés prohibit" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "Interfície" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "Expressió" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 #, fuzzy msgid "No software found." msgstr "No s'ha trobat l'ajuda." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "Canceŀlat per l'usuari" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr "Segur que voleu suprimir la taula '&1'?" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr "No s'ha pogut carregar la taula '&1'." #: FSoftwareFarm.class:568 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "El projecte s'ha creat correctament." #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Segur que voleu suprimir la taula '&1'?" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "No s'ha pogut canviar el nom de «&1»" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Segur que voleu suprimir la taula '&1'?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to uninstall &1:" msgstr "No s'ha pogut convertir &1" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "El projecte s'ha creat correctament." #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr "Segur que voleu suprimir la taula '&1'?" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr "No s'ha pogut convertir &1" #: FSoftwareFarm.class:609 #, fuzzy msgid "&1 has been successfully installed." msgstr "El projecte s'ha creat correctament." #: FSoftwareFarm.class:629 #, fuzzy msgid "Unable to modify your vote." msgstr "No s'ha pogut exportar les dades." #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Esteu segur que voleu esborrar aquest fitxer?" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr "No s'ha pogut canviar el nom de «&1»" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Formularis Gambas" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 #, fuzzy msgid "Show" msgstr "Mostra les pestanyes" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "Obre recent" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "Desa els fitxers afegits" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "Mostra consells" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "Avall" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "Copia aquestes informacions a tots els teus informes d'error." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Tria una taula" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "No s'ha pogut carregar la taula '&1'." #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Aquest nom ja existeix." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "No s'ha pogut desar el projecte." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Segur que voleu suprimir les files seleccionades?" #: FTestSuite.form:63 #, fuzzy msgid "New test suite" msgstr "Nou fragment de codi" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 #, fuzzy msgid "Rename test suite" msgstr "Canvia el nom de la taula" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "Esborreu la base de dades '&1'" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "Selecciona-ho tot" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr "Deselecciona-ho tot" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Edita la llista de propietats" #: FText.form:29 msgid "Use a fixed font" msgstr "Usar una font fixa" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "Valor per omissió" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "Exemples" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "Commuta la graella" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "Consell del dia núm.&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "No s'ha pogut llegir el consell del dia !" #: FTips.form:70 msgid "Show tips on startup" msgstr "Mostra consells a l'inici" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "Continua" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Network" msgstr "Xarxes" #: FToolBox.class:36 #, fuzzy msgid "Special" msgstr "Enganxa especial" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "Objecte actual" #: FToolBox.form:34 #, fuzzy msgid "Button size" msgstr "Mida de la caixa d'eines" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "Petit" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 #, fuzzy msgid "Deprecated controls" msgstr "Controls de bases de dades" #: FToolBox.form:112 #, fuzzy msgid "Change button size" msgstr "Mida de la caixa d'eines" #: FToolBox.form:120 #, fuzzy msgid "Show deprecated controls" msgstr "Mostra les classes exportades" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "El projecte és buit. No hi ha res a traduir." #: FTranslate.class:74 msgid "Language" msgstr "Idioma" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "No traduïble" #: FTranslate.class:169 msgid "Translation files" msgstr "Fitxers de traducció" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "No es pot llegir el fitxer de traducció per a l'idioma «&1»" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "No es pot desar la traducció." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "Realment voleu suprimir aquesta traducció ?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "Realment voleu recarregar aquesta traducció ?" #: FTranslate.class:802 msgid "Export a translation" msgstr "Exporta una traducció" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "Trieu el fitxer de traducció a importar." #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "No s'ha triat cap traducció." #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "S'ha triat una traducció." #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "S'ha triat &1 traducció." #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "No es pot importar el fitxer de traducció." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "Tot sembla ser correcte." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "Els símbols de les cadenes traduïdes no concorden amb els de les cadenes sense traduir." #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "&1 cadenes de text. Tot està traduït!" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 cadenes de text. Una no traduïda. &3% acabat." #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 cadenes de text. &2 no traduïdes. &3% acabat." #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "No es pot importar el fitxer de traducció." #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Realment voleu suprimir aquesta traducció ?" #: FTranslate.form:77 msgid "Project translation" msgstr "Traducció del projecte" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Extensió automàtica" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Nova traducció" #: FTranslate.form:232 msgid "Save translation" msgstr "Desa la traducció" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verifica la traducció" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Cerca la propera cadena sense traduir" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Cerca la cadena prèvia sense traduir" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Cerca la cadena prèvia sense traduir" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Cerca la propera cadena sense traduir" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Neteja aquesta traducció" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Aquesta cadena no s'ha de traduir" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copia cadena no traduïda" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importar totes les traduccions de manera recursiva" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "Neteja aquesta traducció" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importa un fitxer de traducció" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "Nova traducció" #: FVersionControl.form:99 #, fuzzy msgid "There is nothing to commit." msgstr "No s'ha pogut fer la publicació de canvis del projecte" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Seleccioneu una font" #: FWelcome.class:69 msgid "New project..." msgstr "Projecte nou..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Projectes recents" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Benvinguts al Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Refresca projecte" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 #, fuzzy msgid "Delete software" msgstr "Esborra la taula" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Àrab (Egipte)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Àrab (Tunísia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Àzeri (Azerbaidjan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Búlgar (Bulgària)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Català (Països Catalans)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Gaŀlès (Regne Unit)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Txec (República Txeca)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danès (Dinamarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Alemany (Alemanya)" #: Language.module:35 msgid "German (Belgium)" msgstr "Alemany (Bèlgica)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grec (Grècia)" #: Language.module:41 msgid "English (common)" msgstr "Anglès (comú)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Anglès (Regne Unit)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Anglès (Estats Units d'Amèrica)" #: Language.module:44 msgid "English (Australia)" msgstr "Anglès (Austràlia)" #: Language.module:45 msgid "English (Canada)" msgstr "Anglès (Canadà)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (A qualsevol lloc!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Anglès (comú)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Castellà (Espanya)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Castellà (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonià (Estònia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basc (País Basc)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Persa (Iran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finès (Finlàndia)" #: Language.module:68 msgid "French (France)" msgstr "Francès (França)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francès (Bèlgica)" #: Language.module:70 msgid "French (Canada)" msgstr "Francès (Canadà)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francès (Suïssa)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Gallec (Espanya)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebreu (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (Índia)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Hongarès (Hongria)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croat (Croàcia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesi (Indonèsia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandès (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italià (Itàlia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonès (Japó)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Cambodja)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Coreà (Corea)" #: Language.module:110 msgid "Latin" msgstr "Llatí" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Lituà (Lituània)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (Inde)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedònic (República de Macedònia)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Neerlandès (Països Baixos)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Neerlandès (Bèlgica)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Noruec (Noruega)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Panjabi (Índia)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polonès (Polònia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portuguès (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portuguès (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "-" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Romanès (Romania)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Rus (Rússia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Eslovè (Eslovènia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanès (Albània)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbi (Sèrbia i Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Suec (Suècia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turc (Turquia)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ucraïnès (Ucraïna)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamita (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Való (Bèlgica)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Xinès simplificat (Xina)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Xinès tradicional (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Desconegut" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "No s'ha pogut comprimir el fitxer." #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "No s'ha pogut crear la taula '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 no pot ser estàtic" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "La declaració &1 no coincideix" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "S'ha declarat &1, però no és una funció" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 no és una estructura" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "No s'ha declarat &1" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 ha de ser estàtic" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: no és en l'arxiu" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: error de sintaxi" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: error de sintaxi al fitxer de formulari" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: massa contenidors niuads" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' ja està declarat" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' erròniament anul.lat a la classe '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' no és una propietat" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' no és estàtic" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' és de només lectura" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' és estàtic" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' és de només escriptura" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Un mòdul no pot provocar esdeveniments" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Una implementació de propietat no pot ser pública" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Una propietat ha de ser pública" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Accés prohibit" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "l'Àlies ha de ser una cadena" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Expressió ambigua. Useu parèntesis" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "L'argument no pot ser passat per referència" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "No es permet matrius d'estructures" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Fitxers de traducció" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Arxiu incorrecte: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Argument incorrecte" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Constant de caràcter incorrecte a la cadena" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Tipus de constant incorrecte" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Gestor d'esdeveniment incorrecte a &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Expressió incorrecta: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Versió de fitxer de formulari incorrecte" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Format de cadena incorrecte" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Nombre de dimensions incorrecte" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Fitxer de projecte incorrecte: línia &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Expressió regular incorrecte: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Conversió de cadena incorrecte" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Rang de subíndex incorrecte" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Us incorrecte de la classe virtual" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Cadena de versió incorrecte" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "No s'ha pogut canviar el directori actual per '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "No s'ha pogut crear el fitxer .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "No s'ha pogut crear el fitxer d'acció: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "No s'ha pogut crear la crida de retorn: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "No s'ha pogut crear la informació de la classe: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "No s'ha pogut crear el fitxer: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "No s'ha pogut crear l'arxiu temporal: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "No s'ha trobat la biblioteca dinàmica '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "No s'ha trobat el símbol '&2' a la biblioteca dinàmica '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "No es pot heretar dues vegades" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "No es pot crear instàncies de tipus nadius" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "No s'ha pogut carregar la classe '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "No s'ha pogut carregar el component: '&1': &2&3" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "No s'ha pogut carregar el fitxer font: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "No s'ha pogut crear l'executable: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "No es pot barrejar NEW i la matriu incrustada" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "No es pot barrejar NEW i l'estructura incrustada" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "No s'ha pogut obrir el fitxer '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "No s'ha pogut obrir el fitxer: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "No es pot provocar esdeveniments en una funció estàtica" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "No s'ha pogut llegir el fitxer: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "No s'ha pogut registrar la classe '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "No s'ha pogut suprimir el fitxer '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "No s'ha pogut canviar el nom del fitxer '&1': &2" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "No s'ha pogut executar el procés fill: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "No s'ha pogut establir el propietari del fitxer: &1: &2" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "No es pot fer servir TRY dos cops" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "No es pot fer servir TRY dos cops" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Aquí no s'ha pogut fer servir l'operador NEW" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "La classe '&1' no s'ha pogut crear" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "S'esperava un operador de comparació" #: MErrorMessage.module:79 #, fuzzy msgid "Component name must be a string" msgstr "l'Àlies ha de ser una cadena" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "No s'ha trobat el component: &1" #: MErrorMessage.module:81 #, fuzzy msgid "Constant string expected" msgstr "S'esperava una cadena de text" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "El cas per defecte ja s'ha definit" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "El cas per defecte ha de ser l'últim" #: MErrorMessage.module:85 msgid "Device is full" msgstr "El dispositiu està ple" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "El directori no està buit" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Divisió per zero" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Els símbols dinàmics no es poden fer servir en una funció estàtica" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Matrius incrustades estan prohibides aquí" #: MErrorMessage.module:90 msgid "End of file" msgstr "Final de fitxer" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "S'esperava un operador d'igualtat o desigualtat" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Expressió massa complexa" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Expressió massa complexa. Masses operands" #: MErrorMessage.module:94 #, fuzzy msgid "Extern library name must be a string" msgstr "El nom de la biblioteca ha de ser una cadena" #: MErrorMessage.module:95 msgid "File already exists" msgstr "El fitxer ja existeix" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "El fitxer és un directori" #: MErrorMessage.module:97 msgid "File is locked" msgstr "El fitxer està bloquejat" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "El nom del fitxer és massa llarg" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "El fitxer o directori no existeix" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "GOTO prohibit" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Instrucció iŀlegal" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Assignació invàlida" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Data no vàlida" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Objecte invàlid" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Camí invàlid" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "L'etiqueta '&1' no ha estat declarada" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "El nom de la biblioteca ha de ser una cadena" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "La variable recursiva ja està en us" #: MErrorMessage.module:114 #, fuzzy msgid "Loop variable cannot be an argument" msgstr "La variable recursiva ja està en us" #: MErrorMessage.module:115 #, fuzzy msgid "Loop variable cannot be global" msgstr "La variable recursiva ha de ser local" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "No es pot fer servir ME en una funció estàtica" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Error matemàtic" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Manca #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Manca l'operador" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Manca la clau dreta" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW no pot tenir arguments passats per referència" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Cap mètode d'instància" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Sense classe pare" #: MErrorMessage.module:127 msgid "No return value" msgstr "Sense valor de retorn" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Sense mètode d'inici" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Cadena no acabada" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "No és un directori: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "No és una funció" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "No és una matriu" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "No és una numeració" #: MErrorMessage.module:135 msgid "Not an object" msgstr "No és un objecte" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Li manquen arguments al New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Manquen arguments" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Li manquen arguments a &()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "Objecte nul" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 #, fuzzy msgid "Number or Date expected" msgstr "S'esperava un operador de comparació" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Fora de límits" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Sense memòria" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Fora de rang" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Desbordament" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "Error de lectura" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "només lectura" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "El tipus de valor de retorn no s'ha especificat a la declaració de la funció" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "S'ha trobat la instrucció STOP" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER no es pot utilitzar sol" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Error de serialització" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Sobreeiximent de pila" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "El flux està tancat" #: MErrorMessage.module:162 msgid "String expected" msgstr "S'esperava una cadena de text" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Les estructures han de ser públiques" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Els arguments de la subrutina no es poden passar per referència" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Error de sintaxi" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Error de sintaxi a la declaració de la funció" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Error de sintaxi al nom de l'esdeveniment" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Error de sintaxi al mode d'obrir el fitxer" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Error de sintaxi al tipus de retorn" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Error de sintaxi. S'esperava &1" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Error de sintaxi. '...' ha de ser l'últim argument" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Error de sintaxi. S'esperava CASE o DEFAULT després de SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Error de sintaxi. CLASS necessita un identificador" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Error de sintaxi. No es pot fer servir aquesta sintaxi en assignacions" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Error de sintaxi. A l'INHERITS li cal un nom de classe" #: MErrorMessage.module:176 #, fuzzy msgid "Syntax error. Identifier expected" msgstr "Error de sintaxi. S'esperava un identificador." #: MErrorMessage.module:177 #, fuzzy msgid "Syntax error. Identifier expected for property name" msgstr "Error de sintaxi. S'esperava un identificador." #: MErrorMessage.module:178 #, fuzzy msgid "Syntax error. Identifier expected for property synonymous" msgstr "Error de sintaxi. S'esperava un identificador." #: MErrorMessage.module:179 #, fuzzy msgid "Syntax error. Identifier expected for property variable" msgstr "Error de sintaxi. S'esperava un identificador." #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Error de sintaxi. Identificador invàlid al nom de la funció" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Error de sintaxi. Paràmetre opcional invàlid" #: MErrorMessage.module:182 #, fuzzy msgid "Syntax error. Invalid property type" msgstr "Error de sintaxi. Tipus de propietat incorrecte" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Error de sintaxi. Tipus de retorn invàlid" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Error de sintaxi. Tipus de descripció invàlid de l'argument &1" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Error de sintaxi. Tipus de descripció invàlid del camp &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Error de sintaxi. Arguments innecessaris" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Error de sintaxi. Sintaxi de punt usada fora de WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Error de sintaxi. STRUCT necessita un identificador" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Erro9r de sintaxi. L'argument &1 no és un identificador vàlid" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Error de sintaxi. El camp &1 no és un identificador vàlid" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Error de sintaxi. VarPtr() pren només un identificador" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Error de sistema Número &1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "L'operador '!' ha d'anar seguit d'un identificador" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "L'operador '.' ha d'anar seguit d'un identificador" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "El mètode especial &1 no pot ser una funció" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "El mètode especial &1 no pot ser implementat" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "El mètode especial &1 no pot ser estàtic" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "El mètode especial &1 ha de ser una funció" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "El mètode especial &1 ha de ser públic" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "El mètode especial &1 ha de ser estàtic" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "El m`etode especial &1 ha de tornar un boleà" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "El mètode especial &1 només ha d'agafar un nombre variable d'arguments" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "El mètode especial &1 ha d'agafar un argument com a mínim" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "El mètode especial &1 no pren arguments" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "El mètode especial ha de retornar un enter" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "El mètode especial ha de prendre exactament un argument" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "El mètode especial ha de prendre exactament dos arguments" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "La signatura del mètode especial és incorrecte" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Aquesta expressió no pot ser una sentència" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Aquesta expressió no es pot passar per referència" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Massa arguments" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Massa arguments per a &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Massa declaracions de matrius" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Massa constants" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Usades massa classes diferents" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Massa dimensions" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Massa variables dinàmiques" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Massa esdeveniments" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Massa expressions al CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Massa funcions externes" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Massa funcions" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Massa #If...#Endif imbricats" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Massa estructures de controls niuades." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Massa cadenes noves simultànies" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Massa variables estàtiques" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Massa símbols desconeguts" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Discordança dels tipus" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Discordança de tipus: es requereix &1, però s'ha obtingut &2" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "&1 inesperat" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Final de línia inesperat" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Cadena inesperada" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Identificador desconegut: &1" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Error desconegut" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Extensió de fitxer desconeguda" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Identificador desconegut: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Operador desconegut" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Usuari o grup desconegut" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Conversió de cadena no suportada" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "LOCK inútil" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "L'argument per a VarPtr() ha de ser una variable dinàmica, estàtica o local" #: MErrorMessage.module:252 #, fuzzy msgid "Void identifier" msgstr "Identificador desconegut: &1" #: MErrorMessage.module:253 msgid "Void key" msgstr "Clau buida" #: MErrorMessage.module:254 msgid "Write error" msgstr "Error d'escriptura" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "No s'ha trobat l'ajuda." #: MMime.module:17 msgid "Plain text" msgstr "Text net" #: MMime.module:18 msgid "HTML text" msgstr "Text HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Dades de formulari Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Dades del menú Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Camí de fitxer del projecte Gambas" #: MMime.module:22 msgid "URI list" msgstr "Llista d'URIs" #: MMime.module:33 msgid "Unknown format" msgstr "Format desconegut" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Posa al fons" #: MTheme.module:6 #, fuzzy msgid "Characters" msgstr "Caractères incorrects" #: MTheme.module:6 msgid "Comments" msgstr "Comentaris" #: MTheme.module:6 msgid "Current line" msgstr "Línia actual" #: MTheme.module:6 msgid "Data types" msgstr "Tipus de dades" #: MTheme.module:6 msgid "Editing line" msgstr "Editant línia" #: MTheme.module:6 msgid "Errors" msgstr "-" #: MTheme.module:6 msgid "Highlighting" msgstr "Ressaltat" #: MTheme.module:6 msgid "Keywords" msgstr "Paraules clau" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Text normal" #: MTheme.module:6 msgid "Numbers" msgstr "Nombres" #: MTheme.module:6 msgid "Operators" msgstr "Operadors" #: MTheme.module:6 msgid "Preprocessor" msgstr "Preprocessador" #: MTheme.module:6 msgid "Strings" msgstr "Cadenes" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutines" #: MTheme.module:6 msgid "Symbols" msgstr "Símbols" #: Package.module:85 msgid "'&1' is missing." msgstr "Manca '&1'." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "Manquen '&1' i '&2'." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "Desant el fitxer CHANGELOG" #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "Creant paquet per a &1." #: Package.module:830 msgid "The package build has failed." msgstr "La creació del paquet ha fallat." #: Package.module:903 msgid "Making build directory." msgstr "Creant el directori de construcció." #: Package.module:962 msgid "Creating desktop file..." msgstr "Creant el fitxer d'escriptori..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "S'estan debianitzant les fonts." #: Package.module:1175 msgid "Creating package..." msgstr "Creant paquet..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' ha fallat." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "Inicialitzant el directori ~/RPM." #: Package.module:1483 msgid "Creating source package." msgstr "Creant paquet font." #: Package.module:1507 msgid "Creating .spec file." msgstr "Creant fitxer .spec." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "«rpmbuild» ha retornat el següent codi d'error:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "«tar» ha retornat el següent codi d'error:" #: Package.module:2441 #, fuzzy msgid "'makepkg' has failed." msgstr "'dpkg-buildpackage' ha fallat." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 #, fuzzy msgid "Unsupported source archive format." msgstr "No s'ha pogut comprimir el fitxer." #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "Automatització" #: Project.module:239 msgid "Basic" msgstr "Bàsic" #: Project.module:241 msgid "Drawing" msgstr "Dibuix" #: Project.module:244 msgid "Miscellaneous" msgstr "Varis" #: Project.module:245 msgid "Networking" msgstr "Xarxes" #: Project.module:246 msgid "OpenGL" msgstr "-" #: Project.module:248 msgid "Sound" msgstr "So" #: Project.module:250 msgid "Controls" msgstr "Controls" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "No s'ha trobat el fitxer!" #: Project.module:545 msgid "This project does not exist." msgstr "Aquest projecte no existeix." #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "No és un projecte Gambas." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Aquest és un projecte de Gambas 1.0. Feu servir Gambas 2 per a convertir-lo." #: Project.module:582 msgid "Convert" msgstr "Converteix" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Aquest és un projecte de Gambas 2.0.\n" "\n" "El voleu convertir?" #: Project.module:600 msgid "Do not open" msgstr "No l'obris" #: Project.module:600 msgid "Open after all" msgstr "Obre de totes maneres" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Aquest projecte sembla que ja està obert.\n" "\n" "Obrint el mateix projecte dues vegades pot fer que es perdin dades." #: Project.module:606 msgid "It cannot be converted." msgstr "No pot ser convertit." #: Project.module:606 msgid "This project is read-only." msgstr "Aquest projecte és de només lectura." #: Project.module:614 #, fuzzy msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "Totes les còpies de seguretat i els fitxers generats se suprimiran del directori del projecte." #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "Aquest projecte no existeix." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "Copiant el projecte dins un directori temporal..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "No es pot crear el directori temporal" #: Project.module:668 msgid "Converting project structure..." msgstr "Convertint l'estructura del projecte..." #: Project.module:698 msgid "Applying conversion..." msgstr "Aplicant la conversió..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "No es pot aplicar la conversió" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr "No es pot obrir el fitxer de projecte :\n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "No es pot afegit el fitxer" #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "No s'ha pogut obrir un fitxer binari." #: Project.module:2171 msgid "Cannot open file." msgstr "No es pot obrir el fitxer." #: Project.module:2329 msgid "&1th" msgstr "&1è" #: Project.module:2395 msgid "in form definition" msgstr "a la definició del formulari" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Alguns fitxers font del projecte estan en conflicte.\n" "Solucioneu-los si voleu compilar el projecte." #: Project.module:2575 msgid "Compiling project" msgstr "Compilant projecte" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "El fitxer ja existeix." #: Project.module:2876 msgid "Directory already exists." msgstr "El directori ja existeix." #: Project.module:2888 msgid "Cannot link template file." msgstr "No s'ha pogut enllaçar el fitxer de plantilla." #: Project.module:2894 msgid "Cannot copy template file." msgstr "No es pot copiar el fitxer de plantilla." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "Caràcters no permesos en el nom del control." #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 #, fuzzy msgid "Cannot install library in &1." msgstr "No s'ha trobat la biblioteca dinàmica '&1': &2" #: Project.module:3181 msgid "Making executable..." msgstr "Creant executable..." #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr "Esteu segur que voleu esborrar aquest directori?" #: Project.module:3191 #, fuzzy msgid "No change has been detected." msgstr "El projecte s'ha creat correctament." #: Project.module:3292 msgid "Cannot make executable." msgstr "No es pot crear l'executable." #: Project.module:3774 msgid "Some components are missing: &1" msgstr "Manquen alguns components: &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "No es pot desar el fitxer de projecte." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "No s'ha pogut crear una drecera a l'escriptori." #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "El directori serà suprimit en la propera publicació de canvis." #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "Heu de definir una classe o un formulari d'inici!" #: Project.module:4351 msgid "Please type a name." msgstr "Indiqueu un nom." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "Aquest nom conté un caràcter no permès:" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "El nom no pot començar amb un punt." #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "Aquest nom ja està en us. Trieu-ne un altre." #: Project.module:4399 #, fuzzy msgid "Space" msgstr "espai(s)" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Un nom de classe ha de començar amb una lletra o un guió baix, seguit de qualsevol lletra o dígit." #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "No s'ha pogut canviar el nom de «&1»" #: Project.module:4714 msgid "Please type a project name." msgstr "Indiqueu un nom de projecte." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "El nom de projecte no pot començar amb un punt." #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Els caràcters no ASCII no estan permesos en un nom de projecte." #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "Els següents caràcters no estan permesos en un nom de projecte: ? * / \\ ESPAI" #: Project.module:4733 msgid "This project already exists." msgstr "Aquest projecte ja existeix." #: Project.module:4736 msgid "The project directory already exists." msgstr "El directori de projecte ja existeix." #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "No es pot crear el directori per què ja existeix un fitxer amb el mateix nom." #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "No es pot copiar el fitxer &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "No es pot crear l'enllaç &1." #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "No es pot moure un directori dins d'ell." #: Project.module:5265 msgid "Cannot move file &1." msgstr "No es pot moure el fitxer &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "Neteja del projecte..." #: Project.module:5966 msgid "Project files conversion..." msgstr "Conversió dels fitxers del projecte..." #: Project.module:5996 msgid "Unable to convert &1" msgstr "No s'ha pogut convertir &1" #: Project.module:6276 #, fuzzy msgid "Unable to update forms." msgstr "No s'ha pogut enganxar el text." #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 #, fuzzy msgid "Unable to read component description file." msgstr "No es pot escriure el fitxer de descripció del component." #: Project.module:6520 msgid "Cannot write component description file." msgstr "No es pot escriure el fitxer de descripció del component." #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "Tipus de projecte" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr "No s'ha pogut executar la consulta." #: Save.module:57 msgid "Cannot save file !" msgstr "No es pot desar el fitxer !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 #, fuzzy msgid "Incorrect format" msgstr "Caractères incorrects" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 #, fuzzy msgid "Please check your network connection." msgstr "Trieu una localització al menú." #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Esteu segur que voleu esborrar aquest directori?" #: VersionControl.module:567 #, fuzzy msgid "The project could not be put under version control." msgstr "No s'ha pogut fer la publicació de canvis del projecte" #: VersionControl.module:652 #, fuzzy msgid "Unable to switch to branch `&1`." msgstr "No s'ha pogut convertir &1" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Hi han &1 classes i &2 símbols en els components del Gambas." #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "&Insereix" #, fuzzy #~ msgid "'wget' is not found." #~ msgstr "No s'ha trobat el fitxer!" #~ msgid "$(FILE) will be replaced by the path of the executable" #~ msgstr "$(FILE) serà reemplaçat pel camí de l'executable" #~ msgid "WARNING! The project executable and the libraries it depends on must be stored inside the same directory. Otherwise the libraries will not be found." #~ msgstr "Avís L'executable del projecte i les biblioteques que en depèn han d'estar dins els mateix directori. En cas contrari no trobarà les biblioteques." #~ msgid "

Authors

\n" #~ msgstr "

Autors

\n" #~ msgid "About Gambas..." #~ msgstr "Quant al Gambas..." #~ msgid "About component" #~ msgstr "Quant al component" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "S'ha recollit tota la informació necessària. Ara podeu crear el paquet d'instaŀlació per la vostra aplicació...\n" #~ "

Feu clic al botó D'acord per a crear els paquets.\n" #~ "

Feu clic al botó Enrere si heu comès algun error.\n" #~ "

Feu clic al botó Canceŀla per canceŀlar l'operació.\n" #~ "\n" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "" #~ "Aplicació emmagatzemada al\n" #~ "Repositori subversion" #~ msgid "Arguments" #~ msgstr "Arguments" #~ msgid "Author(s)" #~ msgstr "Autor(s)" #~ msgid "Background color" #~ msgstr "Color de fons" #~ msgid "Blend" #~ msgstr "Combina" #~ msgid "Browse project..." #~ msgstr "Navega el projecte..." #~ msgid "CGI Web application" #~ msgstr "Aplicació Web CGI" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Feu clic al formulari per mostrar la jerarquia dels seus controls..." #~ msgid "Command-line application" #~ msgstr "Aplicació de línia d'ordres" #~ msgid "Component advancement" #~ msgstr "Progrés del component" #~ msgid "Component programming" #~ msgstr "Programació d'un component" #~ msgid "Component properties" #~ msgstr "Propietats del component" #, fuzzy #~ msgid "Compressed at &1" #~ msgstr "Comprimeix el fitxer" #~ msgid "Current procedure" #~ msgstr "Procediment actual" #~ msgid "Define..." #~ msgstr "Defineix..." #~ msgid "Display" #~ msgstr "Mostra" #~ msgid "Display ME" #~ msgstr "Mostra ME" #, fuzzy #~ msgid "Display expression" #~ msgstr "Expressió regular" #, fuzzy #~ msgid "Do not push to remote repository" #~ msgstr "Introduïu la ubicació del repositori." #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr "Voleu suprimir la llista d'expressions?" #~ msgid "Dynamic variables" #~ msgstr "Variables dinàmiques" #~ msgid "Edit text property" #~ msgstr "Editar propietat del text" #~ msgid "Embedded array" #~ msgstr "Matriu incrustada" #~ msgid "Environment variables" #~ msgstr "Variables d'entorn" #~ msgid "Existing" #~ msgstr "Existent" #~ msgid "Exported classes" #~ msgstr "Classes exportades" #~ msgid "Expression" #~ msgstr "Expressió" #~ msgid "Fold procedures by default" #~ msgstr "Plegar procediments per defecte" #~ msgid "Foreground color" #~ msgstr "Color de primer pla" #~ msgid "GTK+ graphical application" #~ msgstr "Aplicació gràfica GTK+" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "Graphical application" #~ msgstr "Aplicació gràfica" #~ msgid "Internationalization" #~ msgstr "Internacionalització" #~ msgid "Loading &1..." #~ msgstr "Carregant &1..." #~ msgid "Minimize at runtime" #~ msgstr "Minimitza en executar" #, fuzzy #~ msgid "N" #~ msgstr "No" #, fuzzy #~ msgid "No argument" #~ msgstr "Argument incorrecte" #~ msgid "OpenGL programming" #~ msgstr "Programació OpenGL" #~ msgid "Original file has been saved in the Project folder." #~ msgstr "El fitxer original s'ha desat dins la carpeta del Projecte." #~ msgid "Please enter the changes of your project." #~ msgstr "Introduïu els canvis del vostre projecte." #~ msgid "Prefix package name with the vendor name" #~ msgstr "Prefixe per al nom del paquet amb el nom del proveïdor" #~ msgid "Project information" #~ msgstr "Informació del projecte" #~ msgid "QT graphical application" #~ msgstr "Aplicació gràfica QT" #~ msgid "Quiet external commands" #~ msgstr "Ordres externes ocultes" #~ msgid "Regular expressions" #~ msgstr "Expressions regulars" #~ msgid "Remove current breakpoint" #~ msgstr "Elimina el punt d'interrupció actual" #~ msgid "Reset filter" #~ msgstr "Reinicia el filtre" #~ msgid "SDL application" #~ msgstr "Aplicació SDL" #~ msgid "Select a theme" #~ msgstr "Seleccioneu un tema" #~ msgid "Select gradient stop color..." #~ msgstr "Seleccioneu el color del punt de degradat..." #~ msgid "Settings files management" #~ msgstr "Gestió de fitxers de configuració" #~ msgid "Show only components used in project" #~ msgstr "Mostra només els components usats en el projecte" #~ msgid "Stack backtrace" #~ msgstr "Pila del traçat de crides" #~ msgid "Syntax error. Invalid identifier in property name" #~ msgstr "Error de sintaxi. Identificador invàlid al nom de la propietat" #~ msgid "System informations" #~ msgstr "Informacions del sistema" #~ msgid "Thanks to" #~ msgstr "Gràcies a" #~ msgid "The file has been compressed from &1 to &2 bytes (&3)." #~ msgstr "S'ha comprimit el fitxer de &1 a &2 octets (&3)." #~ msgid "The following classes have circular inheritance:" #~ msgstr "Les següents classes tenen herència circular:" #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "El formulari s'ha modificat.\n" #~ "\n" #~ "Tots els canvis es perdran." #~ msgid "The project has been successfully created." #~ msgstr "El projecte s'ha creat correctament." #~ msgid "To show the menu bar again, hit the following keys:

&1" #~ msgstr "Per tornar a mostrar la barra de menú, prem les tecles següents:

&1" #, fuzzy #~ msgid "U" #~ msgstr "Puja" #~ msgid "Versioning" #~ msgstr "Versionat" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Ajuda per a la conversió de Visual Basic™" #~ msgid "XML / XSLT programming" #~ msgstr "Programació XML / XSLT" #~ msgid "in &1:&2." #~ msgstr "a &1:&2." gambas-3.16.3/app/src/gambas3/.lang/cs.po000066400000000000000000005637141411575327000177130ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Config.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/Config.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/install/Gambas/gambas-1.0.4/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.10.90\n" "POT-Creation-Date: 2020-06-06 18:03 UTC\n" "PO-Revision-Date: 2018-02-14 22:46 UTC\n" "Last-Translator: geniv \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 "Gambas 3" msgstr "-" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Integrované vývojové prostředí pro Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Nastavit záložku" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Vyčistit všechny záložky" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Předchozí záložka" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Další záložka" #: CClassInfo.class:608 msgid "Static properties" msgstr "Statické vlastnosti" #: CClassInfo.class:609 msgid "Static variables" msgstr "Statická proměnná" #: CClassInfo.class:610 msgid "Static methods" msgstr "Statické metody" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "Konstanty" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Vlastnosti" #: CClassInfo.class:629 msgid "Variables" msgstr "Proměnné" #: CClassInfo.class:630 msgid "Methods" msgstr "Metody" #: CClassInfo.class:631 msgid "Events" msgstr "Události" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "Tato třída reimplemenuje &1" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "Tato třída dědí &1" #: CClassInfo.class:661 msgid "in &1" msgstr "v &1" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Tato třída nemůže být použita jako objekt vytvořný ze skryté instance na vyžádání." #: CClassInfo.class:674 msgid "This class is &1." msgstr "Tato třída je &1." #: CClassInfo.class:674 msgid "creatable" msgstr "vytvořitelné" #: CClassInfo.class:679 msgid "This class is static." msgstr "Tato třída je statická." #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "Tato třída může být použita jako &1." #: CClassInfo.class:687 msgid "function" msgstr "funkce" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "Tato třída se chová jako &1 / &2 pole." #: CClassInfo.class:692 msgid "read" msgstr "číst" #: CClassInfo.class:692 msgid "write" msgstr "zapsat" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "Tato třída se chová jako &1 pole." #: CClassInfo.class:694 msgid "write-only" msgstr "pouze pro zápis" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "pouze ke čtení" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "Tato třída je &1 s pro FOR EACH výraz." #: CClassInfo.class:702 msgid "enumerable" msgstr "výčtový" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "" #: CClassInfo.class:855 msgid "This class inherits" msgstr "" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "" #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:897 msgid "static function" msgstr "" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:918 msgid "statically enumerable" msgstr "" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "Načítání informací o komponentě &1..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Třídy" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Třída" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Popis" #: CComponent.class:1669 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1671 msgid "This component is deprecated." msgstr "" #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "" #: CComponent.class:1692 msgid "Implements" msgstr "" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Vyžaduje" #: CComponent.class:1719 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Vnitřní nativní třídy" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "Parser programových argumentů" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Grafická knihovna Cairo" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Kreslení grafů" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "Polygon ovladač založený na Clipper knihovně" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "Správa komplexních čísel" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Komprese & dekomprese" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "MD5/DES/SHA kryptování" #: CDocumentation.class:58 msgid "More data containers" msgstr "Více data kontejnerů" #: CDocumentation.class:59 msgid "Database access" msgstr "Přístup k databázím" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Formuláře vázané na databázi" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "Ovladač databáze MySQL" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "Ovladač databáze ODBC" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "Ovladač databaze PostgreSQL" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "Ovladač databaze SQLite 2" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "Ovladač databaze SQLite 3" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Pomocník při ladění aplikace" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "Komponenta správy plochy " #: CDocumentation.class:69 msgid "X-Window library support" msgstr "Knihovna podpory X-Window" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "Podpora Gnome klíčenky pro komponentu správa desktopů" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "D-Bus rozhranní" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Vykonávač výrazů" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Rutiny zvýrazňování syntaxe" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Více možností pro grafické komponenty" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Rozšíření standardních dialogů" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "MDI rozhranní" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "Výchozí ikony tématu" #: CDocumentation.class:80 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "Aritmetická knihovna GNU Multiple Precision" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "Vědecká GNU knihovna" #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "GTK+2 nástroje" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL s GTK+ nástroji" #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "GTK+3 nástroje" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "Přepínač komponent QT/GTK+" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "Přepínač komponent OpenGL s QT/GTK+" #: CDocumentation.class:88 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:90 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "Vložený HTTP server" #: CDocumentation.class:93 msgid "Image management" msgstr "Správa obrázku" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "Komponenta obrázkových filtrů" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "Rutiny obrazku z knihovny Imlib2" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "Načítání a ukládání obrázku" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "Monitoring událostí souborového systému" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "Nástroje XML založené na libxml" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "Flexibilní logovací systém" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "Online prohlížeč map" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "Gambas značkovací syntaxe Markdown" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "Multimediální komponenta GStreamer" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:104 msgid "Memcached client" msgstr "Memcached klient" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "Správa MIME formátu založeného na GMime knihovně" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "Speciální rutiny MySQL" #: CDocumentation.class:107 msgid "NCurses library" msgstr "NCurses knihovna" #: CDocumentation.class:108 msgid "Network programming" msgstr "Síťové programování" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "Vysoko-úrovňová správa síťových protokolů" #: CDocumentation.class:110 msgid "POP3 client" msgstr "POP3 klient" #: CDocumentation.class:111 msgid "SMTP client" msgstr "SMTP klient" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "OpenAL 3D audio knihovna" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "3D programování s OpenGL" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "OpenGL utility" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "Řízení shaderu OpenGL" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Jednoduchý OpenGL herní engine založený na formátu MD2" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "OpenSSL knihovní rutiny" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "Parser GNU argumentů" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "Regulární výrazy kompatibilní s Perlem" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "PDF generátor založený na knihovně Poppler" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "Nástroje QT4" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "Rozšířené nástroje QT4" #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "Komponenta QT4 WebKit" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL s QT4 nástroji" #: CDocumentation.class:125 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:126 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:128 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:129 msgid "Report designer" msgstr "Návrhář reportů" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:132 msgid "SDL library" msgstr "Knihovna SDL" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "Správa SDL zvuku & CD-ROM" #: CDocumentation.class:134 msgid "SDL2 component" msgstr "" #: CDocumentation.class:135 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:136 msgid "Application settings management" msgstr "Správa nastavení aplikace " #: CDocumentation.class:137 msgid "Signals management" msgstr "Správa signálů" #: CDocumentation.class:138 msgid "Terminal management" msgstr "" #: CDocumentation.class:139 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:140 #, fuzzy msgid "Unit tests component" msgstr "GUI komponenta" #: CDocumentation.class:141 msgid "Utility component" msgstr "" #: CDocumentation.class:142 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:143 msgid "Video capture" msgstr "Zachytávání videa" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Kompatibilita s Visual Basic" #: CDocumentation.class:145 msgid "XML tools" msgstr "XML nástroje" #: CDocumentation.class:146 msgid "HTML generator" msgstr "HTML generátor" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "Protokol XML-RPC" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "XSLT nástroje založené na libxslt a libxml" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "Nástroje webových aplikací" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:151 msgid "Web application development" msgstr "" #: CDocumentation.class:152 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "Správa grafického formuláře" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "Správa cyklických událostí" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "Zobrazování OpenGL" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "Komplexní čísla" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "Správa XML" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "Vložit barvu" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "-" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "Umístění" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "VAROVÁNÍ! Knihovna nebyla nalezena." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Poskytuje" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Formlulář" #: CModule.class:29 msgid "Forms" msgstr "Formuláře" #: CModule.class:29 msgid "Gambas forms" msgstr "Formuláře Gambasu" #: CModule.class:30 msgid "Gambas web pages" msgstr "Webové stránky Gambasu" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "Webová stránka" #: CModule.class:30 msgid "WebPages" msgstr "Webové stránky" #: CModule.class:31 msgid "Gambas reports" msgstr "Reporty Gambasu" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "Report" #: CModule.class:31 msgid "Reports" msgstr "Reporty" #: CModule.class:32 msgid "Gambas web forms" msgstr "" #: CModule.class:32 FMain.form:967 msgid "WebForm" msgstr "" #: CModule.class:32 msgid "WebForms" msgstr "" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "" #: CModule.class:33 FMain.form:974 msgid "TermForm" msgstr "" #: CModule.class:33 msgid "TermForms" msgstr "" #: CProfile.class:114 msgid "Evaluator" msgstr "Vyhodnocovač" #: CProfile.class:116 msgid "Event loop" msgstr "Cyklické události" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "Zrušit" #: CProjectList.class:554 msgid "Do you really want to uninstall this software?" msgstr "" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:561 msgid "The software has been successfully uninstalled." msgstr "" #: CProjectTree.class:97 msgid "Files" msgstr "Soubory" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "Projekt" #: CProjectTree.class:360 msgid "Sources" msgstr "Zdroje" #: CProjectTree.class:362 msgid "Connections" msgstr "Spojení" #: CProjectTree.class:363 msgid "Public" msgstr "Veřejný" #: CProjectTree.class:364 msgid "Data" msgstr "Data" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Dnes" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "Ignorovat" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:395 msgid "Unable to make executable." msgstr "" #: CSoftware.class:464 msgid "Unable to install source directory" msgstr "" #: CSoftware.class:663 msgid "yesterday" msgstr "" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 #, fuzzy msgid "&1 months ago" msgstr "&1 shody" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 #, fuzzy msgid "on &1" msgstr "v &1" #: CVersionControlGit.class:291 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "" #: CVersionControlGit.class:308 msgid "Last commit" msgstr "" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:317 msgid "Current branch" msgstr "" #: CVersionControlGit.class:318 msgid "Origin" msgstr "" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:336 #, fuzzy msgid "None in the current project." msgstr "Záplata aktuálního projektu" #: CVersionControlGit.class:338 #, fuzzy msgid "One in the current project." msgstr "Záplata aktuálního projektu" #: CVersionControlGit.class:340 #, fuzzy msgid "&1 in the current project." msgstr "Záplata aktuálního projektu" #: CVersionControlGit.class:344 #, fuzzy msgid "Status" msgstr "Stavový řádek" #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:398 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "-" #: CVersionControlGit.class:436 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "-" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "Revize" #: CVersionControlSubversion.class:319 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Gambas písmo je zveřejněno pod licení SIL Open Font License." #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "Tento program je zveřejněn pod licencí GNU General Public License." #: Design.module:227 Project.module:2231 msgid "first" msgstr "první" #: Design.module:229 Project.module:2233 msgid "second" msgstr "druhý" #: Design.module:231 Project.module:2235 msgid "third" msgstr "třetí" #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "v &1:&2." #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:445 msgid "The program has been terminated." msgstr "" #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Program vrátil hodnotu:\n" " &1" #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "Tento projekt neexistuje." #: Design.module:1039 msgid "Output terminal" msgstr "Výstupní terminál" #: Design.module:1067 msgid "No terminal emulator found." msgstr "Emulátor terminálu nenalezen." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licence" #: FAbout.class:241 msgid "Financial support" msgstr "Finanční podpora" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "O aplikaci Gambas" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "" "

Licence

\n" "\n" "

Tento program je svobodný software; můžete jej šířit a/nebo upravovat podle podmínek GNU General Public License, vydávané Free Software Foundation; buď ve verzi 2 nebo (podle vašeho uvážení) kterékoli pozdější verze.

\n" "\n" "

Tento program je rozšiřován v naději, že bude užitečný, ale BEZ JAKÉKOLIV ZÁRUKY; i bez odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO URČITÝ ÚČEL. Podívejte se na GNU General Public License pro bližší informace.

\n" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "Nedostatek argumentů" #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "Obnovit" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "Spustit" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Zavřít" #: FColorChooser.form:15 msgid "Select a color" msgstr "Vyber barvu" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Systémová" #: FColorChooser.form:35 msgid "Free" msgstr "Volná" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "" #: FComponentChooser.class:355 msgid "Stable" msgstr "Stabilní" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "Zastaralé" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Odstranit vše" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Komponenty
&1
jsou neslučitelné." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "Komponenta &1 potřebuje jednu z následujících komponent:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "Komponenta &1 potřebuje &2 komponentu." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "Obnovit" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Přiblížit" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Oddálit" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "Původní velikost" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Upravit" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "Nelze načíst soubor:" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Text" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Obrázek" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Soubor byl změněn.\n" "Opravdu chcete zavřít dialog?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Některé konflikty jsou dosud vyřešeny." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Nelze vyřešit konflikt." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Soubor byl změněn.\n" "Opravdu chcete otevřít jiný soubor?" #: FConflict.class:267 msgid "Conflict files" msgstr "Konflikt souborů" #: FConflict.form:31 msgid "Version conflict" msgstr "Konfliktu verze" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Vyjmout" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Kopírovat" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Vložit" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Zpět" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Znovu" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Odsazení" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Neodsazený" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Otevřít" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Uložit" #: FConflict.form:160 msgid "Solve" msgstr "Vyřešit" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(Deklarace)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "Rozšířené" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "Velká písmena" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "Malá písmena" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Zakomentovat" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Odkomentovat" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "Vložit jinak" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Vybrat vše" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Přejít na řádek" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "Záložky" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "Najít další" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "Najít předchozí" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Pohled" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "Nerozdělovat" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "Horizontální rozdělení" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "Vertikální rozdělení" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Konec řádku" #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "Otevří kód" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "Vložit jako řetězec" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "Vložit jako víceřádkový řetězec" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "Vložit jako komentář" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "Textu editor" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Zdrojový kód" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Název projektu" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Typ" #: FConnectionEditor.class:61 msgid "Length" msgstr "Délka" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Výchozí hodnota" #: FConnectionEditor.class:71 msgid "Collation" msgstr "" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Index" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Unikátní" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Pole" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Nelze se připojit k databázi." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Neukládat" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "Tabulka '&1' byla upravena. Chcete ji uložit?" #: FConnectionEditor.class:498 #, fuzzy msgid "No record" msgstr "Žádný záznam importován." #: FConnectionEditor.class:500 #, fuzzy msgid "One record" msgstr "Jeden záznam importován." #: FConnectionEditor.class:502 #, fuzzy msgid "&1 records" msgstr "&1 záznamů importováno." #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Nelze načíst tabulku '&1'." #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "Nelze spustit dotaz." #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "bez limitu" #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "-" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "-" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "-" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "-" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "-" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "-" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "-" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "Jméno je již používáno." #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "Prosím, zadejte číslo." #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "Délka musí být vetší jak 1 a menší jak 255." #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "Neshoda typu." #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "Název již existuje." #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "Toto pole se používá v indexu." #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "Tabulka '&1' nemá primární klíč." #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "Nelze zapsat tabulku '&1'." #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "Opravdu chcete smazat tabulku '&1'?" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "Nelze smazat tabulku '&1'." #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "Opravdu chcete odstranit vybraný řádek?" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "Opravdu chcete odstranit tento dotaz?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editor připojení" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Zobrazit systémové tabulky" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nová tabulka" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Smazat tabulku" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Odstranit" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Přejmenovat tabulku" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Přejmenovat" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Kopírovat tabulku" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Vložit tabulku" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importovat textový soubor" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Importovat" #: FConnectionEditor.form:213 msgid "Fields" msgstr "Pole" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Přidat" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Dolů" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Nahoru" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Kopírovat pole seznamu" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Indexy" #: FConnectionEditor.form:293 msgid "New index" msgstr "Nový index" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Spustit dotaz" #: FConnectionEditor.form:359 msgid "New query" msgstr "Nový dotaz" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Nový" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "Odebrat dotaz" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Vyčistit" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "Upravit" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exportovat do CSV souboru" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportovat" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Smazat" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Vybrat vše" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Odznačit vše" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Konvertor projektů Gambas 3" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "Příkaz '&1' je chybný." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Nelze odesílat zprávy o chybě." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "Program neočekávaně ukončen!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Havárie Gambas interpreta" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "Odeslat zprávu o chybě e-mailem" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "Nepoužívejte k projektu připojí k e-mailu" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Žádný rodič)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Nelze přidat soubor." #: FCreateFile.form:37 msgid "New file" msgstr "Nový soubor" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Volby" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Šířka" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Výška" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Správa dialogových boxů" #: FCreateFile.form:155 msgid "Parent class" msgstr "Rodičovská třída" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportováno" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Automatické rozšíření" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Kontrola projektu selhala." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Projekt nelze vytvořit!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Prosím, zadejte umístění repositáře." #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Nový projekt" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "Typ projektu" #: FCreateProject.form:82 msgid "Parent directory" msgstr "" #: FCreateProject.form:90 msgid "Project details" msgstr "" #: FCreateProject.form:99 msgid "Project name" msgstr "Název projektu" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Název projektu je název adresáře projektu." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "Konečný adresář projektu je:" #: FCreateProject.form:134 msgid "Project title" msgstr "Jméno projektu" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "Jméno projektu je pravý název aplikace." #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Přeložitelný projekt" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "Otevři v novém okně" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "SVN repositář" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Projekt repositáže je přímo poslán příkazem 'svn checkout'." #: FDebugButton.class:104 #, fuzzy msgid "Test has failed." msgstr "Kontrola projektu selhala." #: FDebugButton.form:21 FDebugInfo.form:94 #, fuzzy msgid "Debugging" msgstr "Ladit" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Konzole" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Body přerušení" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "Varování" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "Správa verzí" #: FDebugButton.form:84 FDebugInfo.form:398 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "Nedostupné" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Hodnota" #: FDebugExpr.class:511 msgid "Key" msgstr "Klíč" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Symbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Hlídat" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Zobrazit všechny symboly" #: FDebugExpr.form:88 msgid "No element" msgstr "Žádný element" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Linka" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Funkce" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "Soubor" #: FDebugInfo.class:49 msgid "Col." msgstr "-" #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "Zpráva" #: FDebugInfo.class:120 msgid "native code" msgstr "přirozený kód" #: FDebugInfo.class:187 #, fuzzy msgid "Watch expressions" msgstr "Hlídat výraz" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Opravdu chcete vyčistit seznam výrazů ?" #: FDebugInfo.class:1091 #, fuzzy msgid "File not loaded" msgstr "Soubor nebyl nenalezen!" #: FDebugInfo.class:1230 msgid "Current object" msgstr "Aktuální objekt" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "Lokální proměnné" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Ladit" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "Odstranit aktuální výraz" #: FDebugInfo.form:130 msgid "Add expression" msgstr "Přidat výraz" #: FDebugInfo.form:190 #, fuzzy msgid "Remove breakpoint" msgstr "Odstranit všechny breakpointy" #: FDebugInfo.form:198 #, fuzzy msgid "Disable breakpoint" msgstr "Nastavit breakpoint" #: FDebugInfo.form:200 #, fuzzy msgid "Disable" msgstr "Tabulka" #: FDebugInfo.form:206 #, fuzzy msgid "Enable breakpoint" msgstr "Nastavit breakpoint" #: FDebugInfo.form:208 #, fuzzy msgid "Enable" msgstr "Tabulka" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "Odstranit všechny breakpointy" #: FDebugInfo.form:264 msgid "Tasks" msgstr "-" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "Vyčistit konzoli" #: FDebugInfo.form:300 msgid "Run test" msgstr "" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "-" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Synchronizovat" #: FDebugInfo.form:346 FMain.form:525 #, fuzzy msgid "Revert all changes" msgstr "Odstranit všechny breakpointy" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "Přidat vše do repozitáře" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "Zrušit aktuální hledání" #: FDebugInfo.form:422 msgid "Show search window" msgstr "Zobrazit okno hledání" #: FDebugInfo.form:429 msgid "Search again" msgstr "Hledat znovu" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "Hledaný řetězec nenalezen." #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "(Deklarace)" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "Formátování kódu" #: FEditor.form:201 msgid "Sort procedures" msgstr "Seřaďit procedůry" #: FEditor.form:230 msgid "Go to" msgstr "Přejít na" #: FEditor.form:249 msgid "Find definition" msgstr "Najdi definici" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Spustit do aktuální řádky" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Nastavit breakpoint" #: FEditor.form:320 msgid "Watch expression" msgstr "Hlídat výraz" #: FEditor.form:329 msgid "Open form" msgstr "Otevřít formulář" #: FEditor.form:336 FMain.form:1133 msgid "Run this class" msgstr "" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Tisk" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "Editor" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 msgid "Show modifications" msgstr "" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 #, fuzzy msgid "Previous modification" msgstr "Předchozí popis" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "" #: FEditor.form:570 FTextEditor.form:546 #, fuzzy msgid "Insert special character" msgstr "Nekorektní znaky" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "Zpřehledni kód" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "Seznam procedur" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV soubory" #: FExportData.class:113 msgid "Unable to export data." msgstr "Nelze exportovat data." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Přepsat" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Tento soubor již existuje.\n" "\n" "Chcete jej opravdu přepsat?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Oddělovač" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Uzavírací znak" #: FExportData.form:54 msgid "Export field names" msgstr "Exportuj pole názvů" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exportuj pouze vybrané záznamy" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Uživatel" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Heslo" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Zapamatuj si heslo" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "" #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "-" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Nelze otevřít připojení." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Nelze získat tabulku polí." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Editační pole seznamu" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Vyber pole" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Připojení" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabulka" #: FFileInfoVC.class:23 #, fuzzy msgid "'&1' version control" msgstr "Správa verzí" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "Tento soubor je uzamčen, a bude smazán s příštím commit-em." #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "Tento soubor není na svn, a musí být přidány do repositáře." #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "Tento soubor se nezměnil od posledního commit-u." #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "Pokračovat" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "Chystáte se zrušit změny!" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Změny" #: FFileInfoVC.form:41 FVersionControl.form:55 #, fuzzy msgid "History" msgstr "Řadit historii" #: FFileInfoVC.form:59 msgid "Undo changes" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "-" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Modul Gambasu" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Modul Gambasu" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Třída Gambasu" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "&1 vlastnosti" #: FFontChooser.form:12 msgid "Select a font" msgstr "Vybrat font" #: FForm.class:136 msgid "Bad form file" msgstr "Chybný soubor formuláře" #: FForm.class:268 msgid "Unknown control: &1" msgstr "" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "Chybí komponenta pro kontolu &1" #: FForm.class:1876 msgid "Cannot paste data." msgstr "" #: FForm.form:178 msgid "Copy at the same place" msgstr "Kopírovat na to samé místo" #: FForm.form:198 msgid "Delete container only" msgstr "Smazat pouze kontejner" #: FForm.form:205 msgid "Embed into a container" msgstr "Vložit do kontejneru" #: FForm.form:211 msgid "Change into" msgstr "Změňit v" #: FForm.form:219 msgid "Select" msgstr "Výběř" #: FForm.form:232 msgid "Select parent" msgstr "" #: FForm.form:245 msgid "Arrangement" msgstr "Uspořádání" #: FForm.form:249 msgid "Bring to foreground" msgstr "Přenést do popředí" #: FForm.form:256 msgid "Send to background" msgstr "Přenést do pozadí" #: FForm.form:266 msgid "Horizontal" msgstr "Horizontální" #: FForm.form:273 msgid "Rows" msgstr "Řádky" #: FForm.form:279 msgid "Vertical" msgstr "Vertikální" #: FForm.form:286 msgid "Columns" msgstr "Sloupce" #: FForm.form:295 msgid "Center horizontally" msgstr "Centrovat horizontálně" #: FForm.form:301 msgid "Center vertically" msgstr "Centrovat vertikálně" #: FForm.form:307 msgid "Alignment" msgstr "Zarovnání" #: FForm.form:311 msgid "Align to left" msgstr "Zarovnat vlevo" #: FForm.form:317 msgid "Align to right" msgstr "Zarovnat vpravo" #: FForm.form:323 msgid "Align to top" msgstr "Zarovnat nahoru" #: FForm.form:329 msgid "Align to bottom" msgstr "Zarovnat dolů" #: FForm.form:338 msgid "Same width" msgstr "Stejná šířka" #: FForm.form:344 msgid "Same height" msgstr "Stejná výška" #: FForm.form:353 msgid "Show tab" msgstr "Zobrazit kartu" #: FForm.form:361 msgid "Move tab" msgstr "Přesunout panel" #: FForm.form:366 msgid "First" msgstr "První" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Předchozí" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Další" #: FForm.form:387 msgid "Last" msgstr "Poslední" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Editor menu" #: FForm.form:407 msgid "Event" msgstr "Událost" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "Přepínač mřížky" #: FForm.form:610 FImageEditor.form:515 #, fuzzy msgid "Toggle information tooltip" msgstr "Informace o balíku" #: FForm.form:729 msgid "Move tab first" msgstr "Přesunout první panel" #: FForm.form:736 msgid "Move tab left" msgstr "Přesunout panel vlevo" #: FForm.form:743 msgid "Move tab right" msgstr "Přesunout panel vpravo" #: FForm.form:750 msgid "Move tab last" msgstr "Přesunout poslední panel" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Tučné" #: FForm.form:786 msgid "Italic" msgstr "Kurzíva" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Podtržené" #: FForm.form:802 msgid "Bigger font" msgstr "Vetší font" #: FForm.form:810 msgid "Smaller font" msgstr "Menší písmo" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "Výchozí písmo" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Pozadí" #: FForm.form:834 msgid "Foreground" msgstr "Popředí" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Hierarchie" #: FFormStack.form:24 msgid "Move top" msgstr "Přesunout nahoru" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Nahoru" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Dolů" #: FFormStack.form:42 msgid "Move bottom" msgstr "Přesunout na dno" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "Výchozí jazyk" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Prohlížeč nápovědy" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "Zobrazit strom nápovědy" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Přejít zpět" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Přejít vpřed" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "Překlad" #: FImageEditor.form:159 msgid "Action" msgstr "Akce" #: FImageEditor.form:164 msgid "Crop" msgstr "Oříznout" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Horizontální překlopení" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Vertikální překlopení" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Rotace v protisměru" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Rotace ve směru" #: FImageEditor.form:205 msgid "Resize" msgstr "Změna velikosti" #: FImageEditor.form:212 msgid "Rotate" msgstr "Otočení" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Skrýt výběr" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Výběr" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Obrátit výběr" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Duplikovat výběr" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "Offset výběru" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 msgid "Difference" msgstr "" #: FImageEditor.form:278 msgid "Intersection" msgstr "" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Tvar mřížky" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Normání přiblížení" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Nejlepší přiblížení" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "Uložit jako JPEG" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "Uložit jako PNG" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "Uložit jako BMP" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "Uložit jako TIFF" #: FImageEditor.form:428 msgid "Image editor" msgstr "Editor obrázků" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "Kreslení mřížky" #: FImageEditor.form:558 msgid "Move" msgstr "Pohyb" #: FImageEditor.form:569 msgid "Draw" msgstr "Kreslit" #: FImageEditor.form:579 msgid "Erase" msgstr "Vymazat" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Obdélník" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Elipsa" #: FImageEditor.form:629 msgid "Magic wand" msgstr "Magická hůlka" #: FImageEditor.form:646 msgid "Edit selection" msgstr "Upravit výběr" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "Změna velikosti nebo roztažení obrázku" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "Otočit obrázek" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "-" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "Duplikovat" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Systémová schránka" #: FImageProperty.class:1267 msgid "Arrow" msgstr "Šipka" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "Šipka #2" #: FImageProperty.class:1270 msgid "Triangle" msgstr "Trojúhelník" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "Čtverec trojúhelník" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "Pětiúhelník" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "Šestiúhelník" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "Barva" #: FImageProperty.form:172 msgid "Gradient" msgstr "Přechod" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Lineární přechod" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Radiální přechod" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "Přidej zarážku přechodu" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "Odebrat zarážku přechodu" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "Invertovat přechod" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Poloměr" #: FImageProperty.form:326 msgid "Clipboard" msgstr "Schránka" #: FImageProperty.form:338 msgid "Shapes" msgstr "Tvary" #: FImageProperty.form:363 msgid "Stroke" msgstr "Přešrtnuté" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "Vyplnit" #: FImageProperty.form:391 msgid "Colorize" msgstr "" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 msgid "Line cap" msgstr "" #: FImageProperty.form:422 msgid "Line join" msgstr "" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "Průhlednost" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Velikost" #: FImageProperty.form:481 msgid "Tolerance" msgstr "Tolerance" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "Efekty" #: FImageProperty.form:535 msgid "Brightness" msgstr "Jas" #: FImageProperty.form:554 msgid "Contrast" msgstr "Kontrast" #: FImageProperty.form:573 msgid "Gamma" msgstr "-" #: FImageProperty.form:592 msgid "Lightness" msgstr "Lehkost" #: FImageProperty.form:611 msgid "Hue" msgstr "Odstín" #: FImageProperty.form:630 msgid "Saturation" msgstr "Nasycení" #: FImageProperty.form:649 msgid "Blur" msgstr "Rozmazat" #: FImageProperty.form:666 msgid "Transparency" msgstr "" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Náhled" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "Aplikovat" #: FImageProperty.form:735 msgid "Centered" msgstr "Centrováno" #: FImageProperty.form:745 msgid "Right align" msgstr "Zarovnat vpravo" #: FImageProperty.form:754 msgid "Left align" msgstr "Zarovnat vlevo" #: FImageProperty.form:767 msgid "Top align" msgstr "Zarovnat nahoru" #: FImageProperty.form:776 msgid "Middle align" msgstr "Zarovnat na střed" #: FImageProperty.form:786 msgid "Baseline align" msgstr "Základní zarovnání" #: FImageProperty.form:795 msgid "Bottom align" msgstr "Zarovnat dolů" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "Rozlišení rastru" #: FImageProperty.form:849 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "Kvalita obrazu" #: FImageResize.form:25 msgid "Resize image" msgstr "Změna velikosti obrázku" #: FImageResize.form:65 msgid "Resize and center" msgstr "Změna velikosti a střed" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "Změna velikosti a střed vodorovně" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "Změna velikosti a střed svisle" #: FImageResize.form:86 msgid "Stretch image" msgstr "Roztáhnout obrázek" #: FImageResize.form:111 msgid "Add a border" msgstr "Přidat ohraničení" #: FImageResize.form:116 msgid "Ratio" msgstr "Poměr" #: FImageRotate.form:21 msgid "°" msgstr "-" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Třídy Gambasu" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Moduly Gambasu" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Moduly Gambasu" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Kaskádové styly" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML soubory" #: FImportFile.class:33 msgid "Javascript files" msgstr "Javascript soubory" #: FImportFile.class:33 msgid "Picture files" msgstr "Obrázkové soubory" #: FImportFile.class:188 msgid "Cannot import file." msgstr "" #: FImportFile.form:9 msgid "Import files" msgstr "" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Všechny soubory" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Automatický klíč)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Pole_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Nedostatek Hodnot" #: FImportTable.class:393 msgid "Too many values" msgstr "Příliš mnoho hodnot" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Zrušeno uživatelem" #: FImportTable.class:427 msgid "No record imported." msgstr "Žádný záznam importován." #: FImportTable.class:429 msgid "One record imported." msgstr "Jeden záznam importován." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 záznamů importováno." #: FImportTable.form:35 msgid "Import file" msgstr "Importovat soubor" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Vyber CSV soubor pro import" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Zdroj" #: FImportTable.form:78 msgid "Charset" msgstr "Znaková sada" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Zbytečný proužek mezery" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignorovat první řádky" #: FImportTable.form:139 msgid "Line(s)" msgstr "Řádky" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Cíl" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "První řádek obsahuje názvy polí" #: FImportTable.form:176 msgid "Key field" msgstr "Pole klíčů" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Prosím, zadejte jméno databáze." #: FLayout.class:30 FOption.class:1694 #, fuzzy msgid "Override" msgstr "&Přepsat" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Název již existuje." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Uložit vše" #: FLayout.form:22 #, fuzzy msgid "Layout name" msgstr "Název projektu" #: FList.class:103 msgid "Item &1" msgstr "Položka &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Opravdu chcete vyčistit seznam?" #: FList.form:25 msgid "Edit list property" msgstr "Upravit vlastnosti seznamu" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "Vložit" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Opravdu chcete smazat tento odkaz ?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Skutečně chcete smazat tento adresář ?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Skutečně chcete smazat tento soubor ?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Soubor nebo adresář nelze smazat" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "Soubor nebo adresář už neexistuje." #: FMain.class:759 msgid "Sort history" msgstr "Řadit historii" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "Seřadit podle data" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "Seřadit podle jména" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "Seřadit podle cesty" #: FMain.class:775 msgid "&Clear history" msgstr "&Vyčisti historii" #: FMain.class:959 msgid "New folder" msgstr "Nová složka" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "GNU překladatelské nástroje nejsou nainstalovány ve vašem systému.\n" "\n" "Prosím nainstalujte je, aby jste byly schopni dělat překlad." #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "Nelze upustit soubor do projektu." #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "Všechny zálohy nebo vytvořené soubory budou odstraněny z adresáře projektu." #: FMain.class:1872 msgid "Clean" msgstr "Ukliď" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "Opravdu chcete přidat všechny soubory do repozitáře?" #: FMain.class:2329 msgid "Choose a profile" msgstr "Výběr profilu" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "Profil pro projekt &1" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "Vyber soubor" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "Tento soubor je umístěn uvnitř projektu." #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Soubory byly změněny.\n" "\n" "Všechny vaše změny budou ztraceny." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Otevřít projekt" #: FMain.form:306 msgid "Open recent" msgstr "Otevřít poslední" #: FMain.form:314 msgid "Open example" msgstr "Otevřít příklad" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "Otevřít soubor" #: FMain.form:332 msgid "Save project" msgstr "Uložit projekt" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Uložit projekt jako" #: FMain.form:351 msgid "Reload project" msgstr "" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Ukončit" #: FMain.form:395 msgid "Save as" msgstr "" #: FMain.form:435 msgid "Compile" msgstr "Kompilovat" #: FMain.form:442 msgid "Compile All" msgstr "Kompilovat vše" #: FMain.form:452 msgid "Translate" msgstr "Přeložit" #: FMain.form:461 msgid "Make" msgstr "Vytvořit" #: FMain.form:465 msgid "Executable" msgstr "Spustitelný" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "Zdrojový archiv" #: FMain.form:479 msgid "Installation package" msgstr "Instalační balíček" #: FMain.form:486 msgid "Patch" msgstr "Záplata" #: FMain.form:489 msgid "Create" msgstr "Vytvořit" #: FMain.form:518 msgid "Undo synchronization" msgstr "" #: FMain.form:537 msgid "Branch" msgstr "" #: FMain.form:542 msgid "Put under version control" msgstr "" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "Uklidit" #: FMain.form:563 msgid "Refresh" msgstr "Obnovit" #: FMain.form:592 msgid "Run with" msgstr "" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "Pozastavit" #: FMain.form:620 msgid "Stop" msgstr "-" #: FMain.form:627 msgid "Step" msgstr "Krok" #: FMain.form:634 msgid "Forward" msgstr "Dopředu" #: FMain.form:641 msgid "Finish" msgstr "Dokončit" #: FMain.form:650 msgid "Use terminal emulator" msgstr "Použít emulátor terminálu" #: FMain.form:656 msgid "Redirect standard error output" msgstr "Přesměrování standardního chybového výstupu" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "Použít vestavěný HTTP server" #: FMain.form:668 msgid "Activate profiling" msgstr "Aktivovat profilování" #: FMain.form:677 #, fuzzy msgid "Invert language orientation" msgstr "Invertovat přechod" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 #, fuzzy msgid "Show database requests" msgstr "Ignorovat znakovou sadu databáze" #: FMain.form:705 msgid "GUI component" msgstr "GUI komponenta" #: FMain.form:709 msgid "Current desktop" msgstr "Aktuální plocha" #: FMain.form:746 msgid "Open profile" msgstr "Otevřít profil" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "Vyčisti všechy breakpointy" #: FMain.form:757 msgid "Close all debug windows" msgstr "Zavřít všechy ladící okna" #: FMain.form:795 msgid "Status bar" msgstr "Stavový řádek" #: FMain.form:802 msgid "Hide menubar" msgstr "Schovat menu" #: FMain.form:826 msgid "Close all windows" msgstr "Zavřít všechna okna" #: FMain.form:833 msgid "Tools" msgstr "Nástroje" #: FMain.form:837 msgid "Find" msgstr "Najít" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Nahradit" #: FMain.form:853 msgid "Browse project" msgstr "Prohlížet projekt" #: FMain.form:860 msgid "Open a terminal" msgstr "Otevřít terminál" #: FMain.form:867 msgid "Send project by mail" msgstr "Poslat projektu e-mailem" #: FMain.form:873 msgid "Update all forms" msgstr "Aktualizovat všechny formuláře" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:891 msgid "Shortcuts" msgstr "Zkratky" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Možnosti" #: FMain.form:911 msgid "Directory" msgstr "Adresář" #: FMain.form:916 msgid "Project link" msgstr "Odkaz projektu" #: FMain.form:925 msgid "Module" msgstr "Modul" #: FMain.form:932 #, fuzzy msgid "Test module" msgstr "Modul Gambasu" #: FMain.form:991 msgid "HTML file" msgstr "HTML soubor" #: FMain.form:998 msgid "Style sheet" msgstr "Kaskádový styl" #: FMain.form:1005 msgid "Javascript file" msgstr "Javascript soubor" #: FMain.form:1013 msgid "Other" msgstr "Jiné" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Nedávné" #: FMain.form:1047 msgid "Open in file manager" msgstr "" #: FMain.form:1052 msgid "Open in project" msgstr "" #: FMain.form:1056 msgid "Open with" msgstr "Otevřít s" #: FMain.form:1064 msgid "Compress all" msgstr "Komprimace všeho" #: FMain.form:1070 msgid "Uncompress all" msgstr "Rozbalit vše" #: FMain.form:1117 msgid "Copy file path" msgstr "Kopírovat cestu souboru" #: FMain.form:1126 msgid "Startup class" msgstr "Hlavní třída" #: FMain.form:1141 msgid "Add to repository" msgstr "Přidat do repositáře" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtr" #: FMain.form:1149 msgid "Show exported classes" msgstr "Zobrazit exportované třídy" #: FMain.form:1154 msgid "Show added files" msgstr "Zobrazit přidávné soubory" #: FMain.form:1159 msgid "Show modified files" msgstr "" #: FMain.form:1164 msgid "Show files in conflict" msgstr "Zobrazit soubory v konfliktu" #: FMain.form:1172 msgid "Show all" msgstr "Zobrazit vše" #: FMain.form:1184 msgid "Do not translate" msgstr "" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "Nové spojení" #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "-" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Tipy dne" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "Informace o systému" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Vlastnosti projektu" #: FMain.form:1386 msgid "Refresh project" msgstr "Obnovit projekt" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Vytvoř spustitelný program" #: FMain.form:1428 msgid "Make source archive" msgstr "Vytvořit archiv zdrojů" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "Vytvořit instalační balíček" #: FMain.form:1457 msgid "Properties sheet" msgstr "Seznam vlastností" #: FMain.form:1466 msgid "Toolbox" msgstr "Panel nástrojů" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "Hledat" #: FMain.form:1508 msgid "Compile all" msgstr "Kompilovat vše" #: FMain.form:1557 msgid "Finish current function" msgstr "Dokonči aktuální funkci" #: FMain.form:1573 msgid "Show menubar" msgstr "" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1663 msgid "&File" msgstr "&Soubor" #: FMain.form:1687 msgid "&Project" msgstr "&Projekt" #: FMain.form:1699 msgid "&Debug" msgstr "&Ladit" #: FMain.form:1711 msgid "&View" msgstr "&Zobrazit" #: FMain.form:1723 msgid "&Tools" msgstr "&Nástroje" #: FMain.form:1735 msgid "&?" msgstr "-" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1866 #, fuzzy msgid "Show properties sheet" msgstr "Seznam vlastností" #: FMain.form:1874 #, fuzzy msgid "Show project tree" msgstr "Zobrazit strom nápovědy" #: FMain.form:1944 #, fuzzy msgid "Show property help" msgstr "Zobrazit vlastní nápovědu" #: FMain.form:1952 #, fuzzy msgid "Show controls" msgstr "Zobrazit bublinovou nápovědu" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas aplikace" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "Spusťte tento příkaz po" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) bude nahrazen cestou spustitelného" #: FMakeExecutable.form:57 #, fuzzy msgid "Increment version" msgstr "Verze balíčku" #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Ponechat ladící informace v programu" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "Vytvořit zástupce na ploše" #: FMakeInstall.class:137 msgid "Package" msgstr "Balíček" #: FMakeInstall.class:138 msgid "Min. version" msgstr "Min. verze" #: FMakeInstall.class:139 msgid "Max. version" msgstr "Max. verze" #: FMakeInstall.class:145 msgid "File or directory" msgstr "Soubor nebo adresář" #: FMakeInstall.class:279 msgid "Creating packages..." msgstr "" #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "Instalační balíky byly úspěšně vytvořeny." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Prosím, zadejte vaše jméno." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Prosím, zadejte vaši e-mailovou adresu." #: FMakeInstall.class:345 msgid "Please enter the vendor name." msgstr "" #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "Neexistuje žádný CHANGELOG záznam pro tuto verzi." #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Prosím, zadejte první položku CHANGELOGU." #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "Prosím, vyberte alespoň jednu cílovou distribuci." #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "Vyberte si prosím balíček skupiny pro jednotlivé cílové distribuce." #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "Vyberte si prosím balíček skupiny." #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "Prosím, vyberte menu umístění pro každou cílovou distribuci." #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "Prosím, vyberte umístění menu." #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "Nelze najít soubor navíc: &1" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "Prosím, vyberte adresář pro každý soubor navíc." #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "Balíček nesmí být uložen uvnitř adresáře projektu." #: FMakeInstall.class:542 msgid "Initial release" msgstr "-" #: FMakeInstall.class:802 msgid "Menus" msgstr "Menu" #: FMakeInstall.class:870 msgid "Groups" msgstr "Skupiny" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "Nekorektní znaky" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "Opravdu chcete odstranit všechny další závislosti?" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "Opravdu chcete odstranit všechny další soubory?" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "Zvolit cílový adresář" #: FMakeInstall.form:151 msgid "Create package" msgstr "Vytvořit balíček" #: FMakeInstall.form:154 msgid "Package information" msgstr "Informace o balíku" #: FMakeInstall.form:160 msgid "Package name" msgstr "Název balíčku" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "Verze balíčku" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "Výstupní jméno" #: FMakeInstall.form:241 FOption.form:377 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Správcovské informace" #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "-" #: FMakeInstall.form:344 msgid "Changelog" msgstr "-" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Cílová distribuce" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Samo-vyjímatelné" #: FMakeInstall.form:612 msgid "Package group" msgstr "Skupiny balíčků" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Položka menu" #: FMakeInstall.form:654 msgid "Categories" msgstr "Kategorie" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Konfigurační soubor plochy" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "-" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" "Zadejte MIME typy zpracovávané vaší aplikací.\n" "Prosím zadejte jeden mimetyp na řádek.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Další konfigurace" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Následující bude přidán na konec konfiguračního souboru plochy." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Další závislosti" #: FMakeInstall.form:714 #, fuzzy msgid "Minimum Gambas version" msgstr "Min. verze" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Stejné závislostí pro všechny cíle" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Další soubory" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Stejné soubory pro všechny cíle" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Extra soubory musí být umístěny ve složce Project aktuálního projektu, tedy adresář .hidden v projektu na disku." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Další autoconf testy" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Přidat další testy pro konfigurační proces.\n" "

Ponechte prázdné, pokud nepotřebujete, nebo pokud nic o autoconf skriptech nevíte." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Cílový adresář" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Vytvořit adresáře pro jednotlivé distribuce" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 msgid "Create package now" msgstr "" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Prosím, vyberte původní archiv." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Prosím, vyberte původní projekt." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Prosím, zadejte jméno souboru záplaty." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "Záplata byla úspěšně vygenegována." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Nelze generovat záplatu." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Generovat záplatu" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Vyber záplatu originálu" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Originální záplata" #: FMakePatch.form:59 msgid "Project directory" msgstr "Adresář projektu" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Automatické jméno záplaty" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Tento průvodce bude generovat záplatu mezi původním projektem a aktuálním projektem." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Vyberte zdrojový archiv" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "-" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "Zdrojové balíčky" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Vyber adresář projektu" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Výběr názvu souboru záplaty" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "-" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Záplata/Rozdílné soubory" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "Menu bylo změněno!" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Prosím, zadejte název nabídky." #: FMenu.class:332 msgid "Bad menu name !" msgstr "Chybné jméno menu!" #: FMenu.class:338 msgid "Bad group name !" msgstr "Chybné jméno skupiny!" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Toto menu má příliš mnoho úrovní!" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "modifikován" #: FMenu.form:84 msgid "Insert menu" msgstr "Vložit menu" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "Vložit barvu" #: FMenu.form:100 #, fuzzy msgid "Insert menu before" msgstr "Vložit menu" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "Vložit barvu" #: FMenu.form:108 msgid "Delete menu" msgstr "" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Kliknutím na Vložit přidat nové menu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Prosím, zadejte jméno databáze." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Zadejte prosím heslo" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Vlastnosti připojení" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Vybrat adresář" #: FNewConnection.class:229 msgid "Create database" msgstr "" #: FNewConnection.class:241 msgid "Delete database" msgstr "" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Nelze vytvořit databázi." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Opravdu chcete smazat databázi '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Nelze smazat databázi." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Zdroj" #: FNewConnection.form:124 msgid "Path" msgstr "Cesta" #: FNewConnection.form:154 msgid "No password" msgstr "" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "Databáze" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignorovat znakovou sadu databáze" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Zobrazit metadata" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "Vytvořit tabulku" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Prosím, zadejte jméno nové tabulky." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Tabulka '&1' již existuje." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nový překlad" #: FOpenProject.form:22 msgid "Select a project" msgstr "Vybrat projekt" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Příklady" #: FOption.class:4 msgid "Amber" msgstr "-" #: FOption.class:4 msgid "Amethyst" msgstr "-" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "-" #: FOption.class:4 msgid "Gambas" msgstr "-" #: FOption.class:4 msgid "Obsidian" msgstr "-" #: FOption.class:4 msgid "Pastel" msgstr "" #: FOption.class:4 msgid "Quest" msgstr "-" #: FOption.class:4 msgid "Quick" msgstr "-" #: FOption.class:4 msgid "Ruby" msgstr "-" #: FOption.class:4 msgid "Sapphire" msgstr "-" #: FOption.class:4 msgid "Visual" msgstr "-" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:87 msgid "Custom" msgstr "" #: FOption.class:89 msgid "Desktop" msgstr "Pracovní plocha" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(Výchozí)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "Gambas zvýrazňovací téma souborů" #: FOption.class:242 msgid "Export a theme file" msgstr "Exportovat soubor tématu" #: FOption.class:467 msgid "Select a theme file" msgstr "Vybrat soubor tematu" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "Aby byli změny vidět, musíte restartovat aplikaci." #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "Opravdu chcete vyčistit cache dokumentace?" #: FOption.class:829 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "Opravdu chcete smazat tento úryvek?" #: FOption.class:1190 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Opravdu chcete instalovat Gambas písmo do vašeho domovského adresáře?" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "Instalovat" #: FOption.class:1275 msgid "Network is not available." msgstr "" #: FOption.class:1280 msgid "Documentation is up to date." msgstr "" #: FOption.class:1285 msgid "A new documentation is available!" msgstr "" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "" #: FOption.class:1486 #, fuzzy msgid "Cannot download '&1'." msgstr "Nelze smazat tabulku '&1'." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1528 msgid "Unable to install documentation." msgstr "" #: FOption.class:1636 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(Výchozí)" #: FOption.class:1637 #, fuzzy msgid "Compact" msgstr "Kompilace" #: FOption.class:1652 #, fuzzy msgid "Current" msgstr "Aktuální soubor" #: FOption.class:1694 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "Opravdu chcete vyčistit seznam?" #: FOption.class:1796 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "Opravdu chcete smazat tento odkaz ?" #: FOption.form:294 msgid "Dotted" msgstr "" #: FOption.form:305 msgid "Identity" msgstr "" #: FOption.form:349 msgid "Package maintainer" msgstr "" #: FOption.form:394 msgid "Default license" msgstr "" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "Ne" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Ano" #: FOption.form:438 msgid "Projects" msgstr "" #: FOption.form:455 msgid "Default tab size" msgstr "Standardní velikost odsazení" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "mezery" #: FOption.form:480 msgid "Indent with tab by default" msgstr "" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:515 msgid "Fold procedures by default" msgstr "Procedury jsou v standartně sbaleny" #: FOption.form:532 msgid "Activate version control" msgstr "" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "Obnovit soubory při načítání projektu" #: FOption.form:561 #, fuzzy msgid "Images" msgstr "Obrázek" #: FOption.form:573 msgid "Compress PNG images with " msgstr "" #: FOption.form:607 #, fuzzy msgid "Automatic translation with " msgstr "Automatické rozšíření" #: FOption.form:636 #, fuzzy msgid "Translation engine" msgstr "Soubory s překladem" #: FOption.form:645 msgid "Help & applications" msgstr "Nápověda & aplikace" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Nápověda" #: FOption.form:662 msgid "Show documentation in popups" msgstr "Zobrazit dokumentaci v bulbině" #: FOption.form:679 msgid "Always display optional messages" msgstr "Vždy zobrazit volitelné zprávy" #: FOption.form:691 #, fuzzy msgid "Documentation" msgstr "Umístění" #: FOption.form:702 #, fuzzy msgid "Use offline documentation" msgstr "Vyčistit cache dokumentace" #: FOption.form:732 msgid "Download documentation" msgstr "" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "Konfigurace proxy sítě" #: FOption.form:771 msgid "Clear documentation cache" msgstr "Vyčistit cache dokumentace" #: FOption.form:779 msgid "Applications" msgstr "Aplikace" #: FOption.form:790 msgid "Browser" msgstr "Prohlížeč" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Terminál" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:850 msgid "Highlight current line" msgstr "Zvýraznit aktuální řádek" #: FOption.form:867 msgid "Highlight modified lines" msgstr "Podbarvení změněné oblasti" #: FOption.form:884 msgid "Show line numbers" msgstr "Zobrazit čísla řádků" #: FOption.form:901 msgid "Procedure folding" msgstr "Skládání procedur" #: FOption.form:918 msgid "Procedure separation" msgstr "Oddělování funkcí" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "Zobrazit mezery na konci řádku tečkami" #: FOption.form:952 msgid "Show Preview" msgstr "" #: FOption.form:970 msgid "Keywords in upper case" msgstr "Slova velkými písmeny" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:996 msgid "Code formatting" msgstr "Formátování kódu" #: FOption.form:1002 msgid "Automatic formatting" msgstr "Automatické formátování" #: FOption.form:1013 msgid "Control structure completion" msgstr "" #: FOption.form:1030 msgid "Local variable declaration" msgstr "" #: FOption.form:1047 msgid "Comments insertion" msgstr "" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "" #: FOption.form:1081 #, fuzzy msgid "Close strings" msgstr "Všechny řetězce" #: FOption.form:1093 msgid "Explicit formating" msgstr "Explicitní formátování" #: FOption.form:1104 msgid "Format on load & save" msgstr "Formátovat při načtení & ukládání" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "Odsazovat deklarace lokální proměnné" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "Odstrani zbytečné mezery na konci řádku" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "Ponechat po sobě jdoucí prázdné řádky" #: FOption.form:1164 msgid "Code snippets" msgstr "Úryvky kódu" #: FOption.form:1180 msgid "Activate code snippets" msgstr "Aktivovat úryvky kódu" #: FOption.form:1241 msgid "Interface" msgstr "Rozhraní" #: FOption.form:1258 #, fuzzy msgid "Activate animations" msgstr "Aktivovat varování" #: FOption.form:1275 #, fuzzy msgid "Show shadows" msgstr "Zobrazit okno hledání" #: FOption.form:1292 msgid "Show tooltips" msgstr "Zobrazit bublinovou nápovědu" #: FOption.form:1309 msgid "Use utility windows" msgstr "Použít služby oken" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1343 msgid "Show file name in window title" msgstr "" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "Fonty" #: FOption.form:1444 msgid "Global size" msgstr "Globální rozměr" #: FOption.form:1466 msgid "Title size" msgstr "Velikost nadpisu" #: FOption.form:1488 msgid "Debugger size" msgstr "" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Tisk" #: FOption.form:1580 #, fuzzy msgid "Fixed font" msgstr "Použít font s pevnou šířkou" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "Instalovat Gambas písmo pro kodovací editor" #: FOption.form:1673 #, fuzzy msgid "Themes" msgstr "Motiv" #: FOption.form:1690 msgid "Icon theme" msgstr "Téma ikon" #: FOption.form:1706 #, fuzzy msgid "Highlighting theme" msgstr "Zvýrazňování" #: FOption.form:1720 msgid "Import theme" msgstr "Importovat téma" #: FOption.form:1726 msgid "Export theme" msgstr "Exportovat téma" #: FOption.form:1745 msgid "Invert colors for dark themes" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Konzole - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Odpojit konzole" #: FOutput.form:72 msgid "Keep above" msgstr "Ponechat navrchu" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "Otevřít terminál" #: FOutput.form:104 msgid "Entered text echo" msgstr "Zadaný text echo" #: FOutput.form:106 msgid "Echo" msgstr "-" #: FOutput.form:117 msgid "Open contents" msgstr "" #: FOutput.form:130 msgid "Use system charset" msgstr "Použití systémové znakové sady" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Nelze vložit text." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Obsah schránky" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Vložit normálně" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Vložit s PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Prosím, zadejte jmého tabulky." #: FPasteTable.class:133 msgid "Table already exists" msgstr "Tabulka již existuje" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Také kopírovat data tabulky" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Tento soubor nevypadá jako souboru opravy!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Záplata aktuálního projektu" #: FPatch.form:31 msgid "Select patch" msgstr "Vyber záplatu" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Vrátit" #: FProfile.class:175 msgid "Bad profile file format" msgstr "Chybný formát soubor profilu" #: FProfile.class:407 msgid "&1 Mb" msgstr "-" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "Celkový čas &1 μs" #: FProfile.class:430 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:647 msgid "Calls" msgstr "Volání" #: FProfile.class:650 msgid "Duration" msgstr "Prodleva" #: FProfile.class:653 msgid "Average" msgstr "Průměr" #: FProfile.class:656 msgid "Self" msgstr "Vlastní" #: FProfile.class:1055 msgid "Profile files" msgstr "Soubor profilu" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "Nelze uložit profil." #: FProfile.form:60 msgid "Show relative durations" msgstr "Zobrazit relativní prodlevu" #: FProfile.form:67 msgid "Show average" msgstr "Zobrazit průměr" #: FProfile.form:74 msgid "Save profile" msgstr "Uložit profil" #: FProfile.form:126 msgid "Callees" msgstr "Volaný" #: FProfile.form:138 msgid "Callers" msgstr "Volající" #: FProjectProperty.class:160 msgid "Variable" msgstr "Proměnná" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Sdělovací hodnota je nesprávná." #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "&1 neexportuje žádnou třídu." #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "Knihovna &1 je již použivaná." #: FProjectProperty.class:927 msgid "Modules" msgstr "Moduly" #: FProjectProperty.class:928 #, fuzzy msgid "Test modules" msgstr "Moduly Gambasu" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "Funkce" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "Řádky kódu" #: FProjectProperty.class:940 #, fuzzy msgid "Average number of lines by function" msgstr "Chybný rozměr čísla" #: FProjectProperty.class:943 msgid "Executable size" msgstr "" #: FProjectProperty.class:943 msgid "bytes" msgstr "" #: FProjectProperty.class:960 msgid "Information about component" msgstr "" #: FProjectProperty.class:966 msgid "Information about library" msgstr "" #: FProjectProperty.class:1345 #, fuzzy msgid "Select a Gambas executable" msgstr "Zvolte další soubor" #: FProjectProperty.class:1346 #, fuzzy msgid "Gambas executable" msgstr "Vytvoř spustitelný program" #: FProjectProperty.form:273 msgid "General" msgstr "Obecně" #: FProjectProperty.form:328 msgid "Component" msgstr "Komponenta" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "Knihovna" #: FProjectProperty.form:328 msgid "Normal" msgstr "Normální" #: FProjectProperty.form:335 msgid "Vendor" msgstr "" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Verze" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "Získat z 'VERSION' souboru" #: FProjectProperty.form:380 msgid "Title" msgstr "Titulek" #: FProjectProperty.form:413 msgid "Information" msgstr "" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:496 msgid "Include information from" msgstr "" #: FProjectProperty.form:508 msgid "Required features" msgstr "" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:585 msgid "Require" msgstr "" #: FProjectProperty.form:591 msgid "Exclude" msgstr "" #: FProjectProperty.form:603 msgid "Remove All" msgstr "" #: FProjectProperty.form:610 msgid "Components" msgstr "Komponenty" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Knihovny" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:697 #, fuzzy msgid "Additional references" msgstr "Možnosti" #: FProjectProperty.form:707 msgid "Environment" msgstr "Prostředí" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Vložit" #: FProjectProperty.form:760 msgid "Edition" msgstr "Vydání" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Velikost odsazení" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Kompilace" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "Symboly modulů jsou defaultně veřejné" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "Ovládací prvky formuláře jsou veřejné" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "Aktivovat varování" #: FProjectProperty.form:916 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Statistiky" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Tento řádek a následující budou ignorovány" #: FProjectVersion.class:36 msgid "Local" msgstr "Lokální" #: FProjectVersion.class:37 msgid "Remote" msgstr "Vzdálený" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Zadejte prosím uživatelské jméno." #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "Prosím, upravy do přehledu." #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "Commit nemohl být proveden, aktualizujte jej nejprve z svn, až potom proveďte commit." #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "Nelze aktualizovat projekt z repositáře." #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "Update projektu z svn byl úspěšný." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Verzování projektu" #: FProjectVersion.form:65 msgid "Update" msgstr "Aktualizovat" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Ověření pravosti" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Aktualizovat informace" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "Přehled" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Některé soubory nejsou verzované, a měly by být ručně přidány do repositáře." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Předchozí popis" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Nepovolené znaky ve jménu ovládacího prvku." #: FProperty.class:383 msgid "This name is already in use." msgstr "Toto jméno se již používý." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Nepovolené znaky ve skupině ovládacích prvků." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Nekorektní hodnota vlastnosti." #: FProperty.class:631 msgid "The name of the control." msgstr "Název ovládacího prvku." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Událost skupiny, na které patří kontroly." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Když formulář a kontrola rozměrů odpovídají velikosti výchozího písma." #: FProperty.class:661 msgid "If the control is public." msgstr "Pokud je ovládací prvek veřejný." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Když je textová vlastnost musí být přeložena." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Tato vlastnost je virtuální: je realizován pouze v IDE, a za běhu neexistence." #: FProperty.class:814 msgid "None" msgstr "Žádné" #: FProperty.form:51 msgid "Lock property" msgstr "Zámek vlastnosti" #: FProperty.form:58 msgid "Sort properties" msgstr "Řadit vlastnosti" #: FProxy.form:37 msgid "Port" msgstr "-" #: FProxy.form:76 msgid "Default proxy" msgstr "Výchozí proxy" #: FProxy.form:76 msgid "HTTP proxy" msgstr "-" #: FProxy.form:76 msgid "No proxy" msgstr "Zádná proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "-" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "" #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 msgid "Incorrect version number." msgstr "" #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "" #: FPublish.class:329 msgid "Screenshot files" msgstr "" #: FPublish.form:67 msgid "Software description" msgstr "" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Konfigurace okraje" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Okraj" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Roh" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Konfigurace štětce" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "Vyber obrázek uvnitř projektu" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Nekorektní hodnota." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Vyberte rozměr" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Konfigurace okraje" #: FSave.form:14 msgid "Save modified files" msgstr "Uložit upravené soubory" #: FSave.form:42 msgid "Save All" msgstr "Uložit vše" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "Následující soubory byly změněny. Chcete je uložit?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Nelze uložit projekt v rámci vlastního adresáře." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Nelze uložit projekt." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Nový rodičovský adresář projektu" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nový název projektu" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Hledaný řetězec byl jednou nahrazen." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Hledaný řetězec byl nahrazen &1 krát." #: FSearch.class:630 msgid "One match" msgstr "Jedna shoda" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 shody" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "Žádný element" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Žádný element" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Opravdu chcete nahradit všechny řetězce?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Najít & Nahradit" #: FSearch.form:105 msgid "Case sensitive" msgstr "Rozlišovat velikost" #: FSearch.form:110 msgid "Words only" msgstr "Pouze slova" #: FSearch.form:115 msgid "Regular expression" msgstr "Regulární výraz" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignoruj řetězce" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignorovat komentáře" #: FSearch.form:140 msgid "Search in" msgstr "Hedej v" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Dokonči aktuální funkci" #: FSearch.form:153 msgid "Current file" msgstr "Aktuální soubor" #: FSearch.form:160 msgid "Source files" msgstr "Zdrojové soubory" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Další soubory" #: FSearch.form:197 msgid "Browse" msgstr "Prohlížet" #: FSearch.form:209 msgid "Replace all" msgstr "Nahradit vše" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "Zvýrazni výsledek" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Zvolte další soubor" #: FSelectIcon.class:37 msgid "Image files" msgstr "Soubory obrázků" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "SVG obrázky" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Vybrat obrázek" #: FSelectIcon.form:41 msgid "Stock" msgstr "Sklad" #: FSelectLibrary.class:64 msgid "unknown" msgstr "" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Prosím, zadejte spouštěcí řetězec." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Tento spouštěcí řetězec je již použit." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Upravit kód úryvku" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nový úryvek kódu" #: FSnippet.form:26 msgid "Trigger string" msgstr "Spouštěcí řetězec" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Hry" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 msgid "Education" msgstr "" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "-" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:372 msgid "Cancel my vote" msgstr "" #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:559 msgid "Do you really want to download &1?" msgstr "" #: FSoftwareFarm.class:562 msgid "Unable to download &1:" msgstr "" #: FSoftwareFarm.class:564 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:579 msgid "Do you really want to upgrade to &1?" msgstr "" #: FSoftwareFarm.class:582 msgid "Unable to upgrade to &1:" msgstr "" #: FSoftwareFarm.class:589 msgid "Do you really want to uninstall &1?" msgstr "" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:594 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:600 msgid "Do you really want to install &1?" msgstr "" #: FSoftwareFarm.class:603 msgid "Unable to install &1:" msgstr "" #: FSoftwareFarm.class:605 msgid "&1 has been successfully installed." msgstr "" #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:661 msgid "Do you really want to delete &1 from the farm server?" msgstr "" #: FSoftwareFarm.class:665 msgid "Unable to remove &1:" msgstr "" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "" #: FSoftwareFarm.form:397 msgid "Download" msgstr "" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "Prosím, zkopírujte tyto informace ve všech chybových hlášení." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Výběr tabulky" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Nelze načíst soubor třídy" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Název již existuje." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Nelze uložit projekt." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Opravdu chcete odstranit tento dotaz?" #: FTestSuite.form:60 #, fuzzy msgid "New test suite" msgstr "Nový úryvek kódu" #: FTestSuite.form:67 #, fuzzy msgid "Duplicate test suite" msgstr "Duplikovat výběr" #: FTestSuite.form:74 #, fuzzy msgid "Rename test suite" msgstr "Přejmenovat tabulku" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "Smazat tabulku" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "Vybrat vše" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "Odznačit vše" #: FTestSuite.form:145 #, fuzzy msgid "Test with" msgstr "Otevřít s" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Upravit vlastnosti seznamu" #: FText.form:29 msgid "Use a fixed font" msgstr "Použít font s pevnou šířkou" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "Nelze komprimovat soubor." #: FTextEditor.class:1888 #, fuzzy msgid "Compressed at &1" msgstr "Komprimace všeho" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "" #: FTextEditor.form:175 msgid "Sort descent" msgstr "" #: FTextEditor.form:221 msgid "Compress file" msgstr "Komprimace souboru" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "Tip dne #&1" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Nelze načíst tipy dne!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Zobrazit tipy při startu" #: FToolBox.class:397 Project.module:606 #, fuzzy msgid "Current project" msgstr "Aktuální objekt" #: FToolBox.form:58 #, fuzzy msgid "Toolbox button size" msgstr "Velikost panelu nástrojů" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Tento projekt je prázdný. Není zde nic k přeložení." #: FTranslate.class:74 msgid "Language" msgstr "Jazyk" #: FTranslate.class:77 msgid "Not translated" msgstr "" #: FTranslate.class:169 msgid "Translation files" msgstr "Soubory s překladem" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Nelze načíst soubor s přeladem pro jazyk '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Překlad nelze uložit." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Skutečně chcete smazat tento překlad?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Skutečně chcete obnovit tento překlad?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Exportovat preklad" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "Prosím, vyberte překlad pro import." #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "Žádný překlad nebyl zadržen." #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "Jeden překlad byl zadržen." #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "&1 překladů bylo zadrženo." #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Nelze importovat soubor s překladem." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Zdá se že je vše v pořádku." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "Symboly v přeloženém řetězci neodpovídají originálu." #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "&1 řetězců. Vše je přeloženo!" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 řetězců. Jeden je nepřeložen. &3% hotovo." #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 řetězců. &2 nepřeloženy. &3% hotovo." #: FTranslate.class:1741 #, fuzzy msgid "Automatic translation has failed." msgstr "Nelze importovat soubor s překladem." #: FTranslate.class:1753 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Skutečně chcete smazat tento překlad?" #: FTranslate.form:77 msgid "Project translation" msgstr "Překlad projektu" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Automatické rozšíření" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Nepřeložené řetězce" #: FTranslate.form:122 msgid "Translated strings" msgstr "Přeložené řetězce" #: FTranslate.form:126 msgid "All strings" msgstr "Všechny řetězce" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Nový překlad" #: FTranslate.form:232 msgid "Save translation" msgstr "Uložit překlad" #: FTranslate.form:240 msgid "Verify the translation" msgstr "" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Nepřeložené řetězce" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Nepřeložené řetězce" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "" #: FTranslate.form:340 msgid "Clear this translation" msgstr "" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importovat rekurzivně všechny překlady" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importovat přeložený soubor" #: FVersionControl.class:16 msgid "Do you want to push the repository?" msgstr "" #: FVersionControl.class:16 msgid "Push" msgstr "" #: FVersionControl.form:51 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:81 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 msgid "Select font" msgstr "" #: FWelcome.class:69 msgid "New project..." msgstr "Nový projekt..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Poslední projekty" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Vítejte v Gambasu 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 msgid "Publish project" msgstr "" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Afrikánština (Jižní Afrika)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabsky (Egypt)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabsky (Tunisko)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Ázerbájdžánsky (Ázerbájdžán)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulharsky (Bulharsko)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalánsky (Katalánsko, Španělsko)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Velšsky (Velká Británie)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Česky (Česká republika)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Dánsky (Dánsko)" #: Language.module:34 msgid "German (Germany)" msgstr "Německy (Německo)" #: Language.module:35 msgid "German (Belgium)" msgstr "Něměcky (Belgie)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Řecky (Řecko)" #: Language.module:41 msgid "English (common)" msgstr "Anglicky (obecná anličtina)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Anglicky (Velká Británie)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Anglicky (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Anglicky (Austrálie)" #: Language.module:45 msgid "English (Canada)" msgstr "Anglicky (Kanada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (kdekoli!)" #: Language.module:51 msgid "Spanish (common)" msgstr "" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Španělsky (Španělsko)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Španělsky (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonsky (Estonsko)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basque (Baskicko)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Perština (Írán)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finsky (Finsko)" #: Language.module:68 msgid "French (France)" msgstr "Francouzsky (Francie)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francouzsky (Belgie)" #: Language.module:70 msgid "French (Canada)" msgstr "Francouzsky (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francouzsky (Švýcarsko)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galsky (Španělsko)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebrejština (Izrael)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindština (Indie)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Maďarsky (Maďarsko)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Chorvatsky (Chorvatsko)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonésky (Indonézie)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irsky (Irsko)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Islandsky (Island)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italsky (Itálie)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonsky (Japonsko)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Kambodža)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Korejština (Korea)" #: Language.module:110 msgid "Latin" msgstr "Latina" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Litevsky (Litva)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (Indie)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Makedonsky (Republika Makedonie)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Holandsky (Nizozemí)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Holandsky (Belgie)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norsky (Norsko)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (Indie)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polsky (Polsko)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugalsky (Portugalsko)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugalsky (Brazílie)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valencian (Valencian Community, Spain)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Rumunsky (Rumunsko)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Rusky (Rusko)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovinsky (Slovinsko)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albánský (Albánie)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Srbská (Srbsko & Černá Hora)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Švédsky (Švédsko)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turecky (Turecko)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ukrajinsky (Ukrajina)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamsky (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallon (Belgie)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Zjednodušená činština (Čína)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Tradiční čínština (Thajsko)" #: Language.module:220 msgid "Unknown" msgstr "Neznámý" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Nelze získat heslo." #: MConnection.module:91 msgid "Unable to save password." msgstr "Nelze uložit heslo." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Nelze vytvořit tabulku '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Nelze vytvořit metadata tabulku." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 nemůže být statická" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "Deklarace &1 neodpovídá" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 je deklarován ale není funkční" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 není struktura" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 není deklarován" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 musí být statická" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: není v archivu" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "Syntaktická chyba &1" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "Syntaktická chyba &1 v souboru formuláře" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: příliš mnoho vnořených kontejnerů" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' je již deklarováno" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' je nekorektní přepis v třídě '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' není vlastnost" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' není statická" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' je pouze pro čtení" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' je statická" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' je pouze pro zápis" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' nebo ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Modul nemůže získat události" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Implementované vlastnosti musí být veřejné" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Vlastnosti musí být veřejné" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Přístup zakázán" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Alias jméno musí být řetězec" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Nejednoznačný výraz. Prosím, použijte závorky" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Tento argument nemůže být předán odkazem" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Pole struktury nejsou podporovány" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Soubory s překladem" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Chybný archív: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Chybný argument" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Chybný znak v řetězci" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Chybný typ konstanty" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Chybné zpracování události v &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Chybný výraz: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Chybná verze souboru formuláře" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Chybný formát i sekci: " #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Chybný formát řetězce" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Chybný rozměr čísla" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Chybný soubor projektu: řádek &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Chybný regulárný výraz: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Chybný převáděný řetězec" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Chybný rozsah indexu" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Chybné použití virtuální třídy" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Chybná verze řetězce" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Nelze změnit aktuální adresář na '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Nelze vytvořit soubor .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Nelze vytvořit akční soubor: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Nelze vytvořit callback: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Nelze vytvořit informační třídu: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Nelze vytořit soubor: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Nelze vytvořit dočasný soubor archivu: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Nelze najít dynamickou knihovnu '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Nezle najít symbol '&2' v dynamické knihovně '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Nelze dědit sebe" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Nelze dědit dvakrát" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Nelze vytvořit instanci nativních typů" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Nelze načíst třídy '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Nelze načíst komponentu '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Nelze načíst zdrojový soubor: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Spustitelný soubor &1: &2 nelze vytvořit" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Nelze kombinovat NEW a vložené pole" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Nelze kombinovat NEW a vloženou struktůru" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Soubor '&1': &2 nezle otevřít" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Soubor &1 nelze otevřít" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Nelze získat události ve statické funkci" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Soubor &1: &2 nelze číst" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Třída '&1' nelze registrovat" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Nelze odstranit soubor '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Nelze přejmenovat soubor '&1' na '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Nelze spustit potomka procesu: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Nelze nastavit vlastníka souboru: &1: &2" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "Nelze použít TRY dvakrát" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "Nelze použít TRY s &1" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Nelze použít operátor NEW" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "Třída '&1' není vytvořitelna" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Očekáván operátor porovnávaní" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Komponenta &1 nebyla nalezena" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Obsah již deklarován" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Default case je již definován" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Default case musí být poslední" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Zařízení je plné" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Adresář není prazdný" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Dělení nulou" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Dynamické symboly nelze ve statické funkci použít" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Vložené pole je zde zakázáno" #: MErrorMessage.module:90 msgid "End of file" msgstr "Konec souboru" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Je očekáván operátor rovnosti nebo nerovnosti" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Výraz je příliš složitý" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Výraz je příliš složitý. Příliš mnoho operandů" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Soubor již existuje" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Soubor je adresář" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Soubor je uzamčen" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Název souboru je příliš dlouhý" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Soubor nebo adresář neexistuje" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "Zakázané GOSUB" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "Zakázané GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Neplatná instrukce" #: MErrorMessage.module:104 #, fuzzy msgid "Internal compiler error" msgstr "Vnitřní chyba kompilátoru: špatné použití vypočtu zásobníku!" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Neplatné přiřazení" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Neplatné datum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Neplatný objekt" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Neplatná cesta" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Skok je příliš daleko" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Label '&1' není deklarován" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Jméno knihovny musí být řetězec" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Proměnná cyklu je již v použita" #: MErrorMessage.module:114 #, fuzzy msgid "Loop variable cannot be an argument" msgstr "Proměnná cyklu je již v použita" #: MErrorMessage.module:115 #, fuzzy msgid "Loop variable cannot be global" msgstr "Proměnná cyklu musí být místní" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME nelze použít ve statické funkce" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Matematická chyba" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Chybí #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Chybí ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Chybí '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Chybí operátor" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Chybí pravá závorka" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW nemůže mít argumenty předané odkazem" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Žádná metoda instance" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Žádná rodičovská třída" #: MErrorMessage.module:127 msgid "No return value" msgstr "Žádná návratová hodnota" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Žádná spoštěcí metoda" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Neukončený řetězec" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "&1 není adresář " #: MErrorMessage.module:131 msgid "Not a function" msgstr "Není funkce" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Není procedura" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Není pole" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Není enum výčet" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Není objekt" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Nedostatek argumentů v New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Nedostatek argumentů" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Nedostatek argumentů v &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Neimplementovaný" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Nepodporovaný" #: MErrorMessage.module:141 msgid "Null object" msgstr "Objekt Null" #: MErrorMessage.module:142 msgid "Number" msgstr "Číslo" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Číslo nebo datum" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Číslo, datum nebo řetězec" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Číslo, řetězec nebo objekt" #: MErrorMessage.module:147 msgid "Object" msgstr "Objekt" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Mimo meze" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Nedostatek paměti" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Mimo rozsah" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Přetečení" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Překrytí již zděděné třídy je zakázáno" #: MErrorMessage.module:153 msgid "Read error" msgstr "Chyba při čtení" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "pouze ke čtení" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Datový typ návratové hodnoty, které není uvedeny v deklaraci funkce" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Došlo k instrukci STOP" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER nelze použít samostatně" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Chyba serializace" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Přetečení zásobníku" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Standartní typy" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Stream je uzavřen" #: MErrorMessage.module:162 msgid "String expected" msgstr "Očekáván řetězec" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Struktury musí být veřejné" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Argumenty podprogramu nemohou být předány odkazem" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Syntaktická chyba" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Syntaktická chyba v deklaraci funkce" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Syntaktická chyba v názvu události" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Syntaktická chyba v módu otevírání souboru" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Syntaktická chyba v návratovém typu" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Syntaktická chyba. Očekáváno &1" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Syntaktická chyba. '...' musí být poslední argument" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Syntaktická chyba. Po SELECT je očekáváno CASE nebo DEFAULT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Syntaktická chyba. CLASS potřebuje identifikátor" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Syntaktická chyba. Nemůže být použita syntaxe přiřazení" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Syntaktická chyba. INHERITS potřebuje název třídy" #: MErrorMessage.module:176 #, fuzzy msgid "Syntax error. Identifier expected" msgstr "Syntaktická chyba. Očekáván identifikátor." #: MErrorMessage.module:177 #, fuzzy msgid "Syntax error. Identifier expected for property name" msgstr "Syntaktická chyba. Očekáván identifikátor." #: MErrorMessage.module:178 #, fuzzy msgid "Syntax error. Identifier expected for property synonymous" msgstr "Syntaktická chyba. Očekáván identifikátor." #: MErrorMessage.module:179 #, fuzzy msgid "Syntax error. Identifier expected for property variable" msgstr "Syntaktická chyba. Očekáván identifikátor." #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Syntaktická chyba. Neplatný identifikátor v názvu funkce" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Syntaktická chyba. Neplatný volitelný parametr" #: MErrorMessage.module:182 #, fuzzy msgid "Syntax error. Invalid property type" msgstr "Syntaktická chyba. Špatný typ vlastnosti" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Syntaktická chyba. Neplatný návratový typ" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Syntaktická chyba. Neplatný typ popisu argumentu &1" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Syntaktická chyba. Neplatný typ popisu pole &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Syntaktická chyba. Nepotřebné argumenty" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Syntaktická chyba. Bod syntaxe používá misto WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Syntaktická chyba. STRUCT potřebuje identifikátor" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Syntaktická chyba. Argument &1 není platný identifikátor" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Syntaktická chyba. Pole &1 není platný identifikátor" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Syntaktická chyba. VarPtr() má jen jeden identifikátor" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Systémová chyba #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "Operátor '!' musí následovat za identifikátorem" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "Operátor '.' musí následovat za identifikátorem" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "Funkce musí mít pevný počet argumentů" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "Speciální metoda &1 nemůže být funkce" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "Speciální metoda &1 nemůže být implementována" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "Speciální metoda &1 nesmůže být statická" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "Speciální metoda &1 musí být funkce" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "Speciální metoda &1 musí být veřejná" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "Speciální metoda &1 musí být statická" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "Speciální metoda &1 musí vracet boolean" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "Speciální metoda &1 musí mít proměnný počet parametrů" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "Speciální metoda &1 musí mít alespoň jeden parametr" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "Speciální metoda &1 neakceptuje žádné argumenty" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "Speciální metoda musí vracet integer" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "Speciální metoda musí mít přesně jeden parametr" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "Speciální metoda musí mít přesně dva parametry" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "Popis speciální metody je nesprávný" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Tento výraz nemůže být prohlášen" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Tento výraz nemůže být předány odkazem" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Příliš mnoho argumentů" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Příliš mnoho argumentů pro &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Příliš mnoho deklarací pole" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Příliš mnoho konstant" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Příliš mnoho různě užitých tříd" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Příliš mnoho rozměrů" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Příliš mnoho dynamických proměnných" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Příliš mnoho událostí" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Příliš mnoho výrazů v CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Příliš mnoho externích funkcí" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Příliš mnoho funkcí" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Příliš mnoho maker #If...#Endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Přiliš mnoho popisků" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Příliš mnoho lokální proměnných" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Příliš mnoho vnořených řídící struktury." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Příliš mnoho podobných vlastností" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Příliš mnoho současně nových řetězců" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Příliš mnoho statických proměnných" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Příliš mnoho neznámých symbolů" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Koncové zpětné lomítko" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Neshoda typu" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Neshoda typu: Dostal jsem &2, místo očekávaného &1" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Nelze vytvořit uzavření" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Nelze získat pozici v souboru" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Nelze načíst soubor třídy" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Nelze připravit popis funkce" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "Nečekané &1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Nečekaný konec řádku" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Nečekaný řetězec" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Neznámý symbol '&2' ve třídě '&1'" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Neznámá chyba" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Neznámá přípona souboru" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Neznámý identifikátor: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Neznámý operátor" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Neznámý symbol '&2' ve třídě '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Neznámý uživatel nebo skupina" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Nepodporovaný datový typ" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Nepodporovaná konverze řetězce" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "Zbytečný LOCK" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "Argument VarPtr() musí být dynamická, statická nebo lokální proměnná" #: MErrorMessage.module:252 #, fuzzy msgid "Void identifier" msgstr "Neznámý identifikátor: &1" #: MErrorMessage.module:253 msgid "Void key" msgstr "Prázdný kíč" #: MErrorMessage.module:254 msgid "Write error" msgstr "Chyba při zápisu" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "Nelze najít komponentu" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "Nelze najít knihovnu" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "skrytá konstanta z lokální deklarace: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "externí skrytá funkce z lokální deklarace: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "skrytá funkce z lokální deklarace: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "skrytá globální proměnná z lokání deklarace: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "neznámá chyba" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "nepoužitý argument: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "nepoužitá externí funkce: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "nepoužitá funkce: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "nepoužitá globální proměnná: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "nepoužitá proměnná: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "nelze otevřít pomocný pseudo-terminál: " #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "nelze inicializovat pseudo-terminal:" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "nelze připojit standardní vstup: " #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "nelze připojit standardní výstup a standardní chybový výstup: " #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "nelze spustit spustitelný soubor: " #: MHelp.module:313 msgid "No help found." msgstr "Nápověda nenalezena." #: MHelp.module:1006 Wiki.module:799 msgid "This page does not exist." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "Prostý text" #: MMime.module:18 msgid "HTML text" msgstr "HTML text" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas data formuláře" #: MMime.module:20 msgid "Gambas menu data" msgstr "Data menu Gambasu" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas cesta k souboru projektu" #: MMime.module:22 msgid "URI list" msgstr "URI seznam" #: MMime.module:33 msgid "Unknown format" msgstr "Neznámý formát" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Přenést do pozadí" #: MTheme.module:6 #, fuzzy msgid "Characters" msgstr "Nekorektní znaky" #: MTheme.module:6 msgid "Comments" msgstr "Komentáře" #: MTheme.module:6 msgid "Current line" msgstr "Aktuální řádek" #: MTheme.module:6 msgid "Data types" msgstr "Typy dat" #: MTheme.module:6 msgid "Editing line" msgstr "Upravován řádek" #: MTheme.module:6 msgid "Errors" msgstr "Chyby" #: MTheme.module:6 msgid "Highlighting" msgstr "Zvýrazňování" #: MTheme.module:6 msgid "Keywords" msgstr "Klíčová slova" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Normální text" #: MTheme.module:6 msgid "Numbers" msgstr "Čísla" #: MTheme.module:6 msgid "Operators" msgstr "Operátory" #: MTheme.module:6 msgid "Preprocessor" msgstr "Preprocesor" #: MTheme.module:6 msgid "Strings" msgstr "Řetězce" #: MTheme.module:6 msgid "Subroutines" msgstr "Podprogramy" #: MTheme.module:6 msgid "Symbols" msgstr "Symboly" #: Package.module:83 msgid "'&1' is missing." msgstr "'&1' chybí." #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "'&1' a '&2' chybí." #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Uložit SOUBOR ZMĚN." #: Package.module:735 msgid "Making &1 support package..." msgstr "Tvorba podpůrného balíčku &1..." #: Package.module:790 msgid "Creating package for &1." msgstr "Vytvořit balíček pro &1." #: Package.module:822 msgid "The package build has failed." msgstr "Chyba při vytváření balíku." #: Package.module:894 msgid "Making build directory." msgstr "Vytvořit kompilační adresář." #: Package.module:953 msgid "Creating desktop file..." msgstr "Vytvořit zástupce na ploše..." #: Package.module:961 msgid "Sources are being debianizated." msgstr "Zdroje jsou debianizovány." #: Package.module:1168 msgid "Creating package..." msgstr "Vytvořit balíček..." #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' selhalo." #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "Inicializuji adresář ~/RPM." #: Package.module:1476 msgid "Creating source package." msgstr "Vytvořit zdrojový balíček." #: Package.module:1500 msgid "Creating .spec file." msgstr "Vytvořit .spec soubor." #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' vrací následující kód chyby:" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "'tar' vrací následující kód chyby:" #: Package.module:2442 #, fuzzy msgid "'makepkg' has failed." msgstr "'dpkg-buildpackage' selhalo." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "Adresář není Gambas projekt" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "Nepodporovaný formát zdrojového archivu" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "Záplata nebyla aplikována:\n" #: Project.module:231 msgid "Automation" msgstr "Automatizace" #: Project.module:232 msgid "Basic" msgstr "Základní" #: Project.module:234 msgid "Drawing" msgstr "Kreslení" #: Project.module:237 msgid "Miscellaneous" msgstr "Různé" #: Project.module:238 msgid "Networking" msgstr "Síťové nástroje" #: Project.module:239 msgid "OpenGL" msgstr "-" #: Project.module:241 msgid "Sound" msgstr "Zvuk" #: Project.module:243 msgid "Controls" msgstr "Řízení" #: Project.module:244 msgid "Multimedia" msgstr "-" #: Project.module:245 msgid "Web" msgstr "-" #: Project.module:422 msgid "File not found!" msgstr "Soubor nebyl nenalezen!" #: Project.module:534 msgid "This project does not exist." msgstr "Tento projekt neexistuje." #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "Nelze najít spustitelný Gambas IDE v adresáři:\n" "\n" "&1" #: Project.module:565 msgid "This is not a Gambas project." msgstr "Nejedná se o projekt Gambasu." #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Jde o projekt Gambas 1.0. Použijte Gambas 2 pro převedení." #: Project.module:571 msgid "Convert" msgstr "Převod" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Jde o projekt Gambasu 2.0.\n" "\n" "Chcete jej převést?" #: Project.module:589 msgid "Do not open" msgstr "Neotvírat" #: Project.module:589 msgid "Open after all" msgstr "Přesto otevřít" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Tento projekt vypadá že je již otevřeny.\n" "\n" "Otevření stejného projektu dvakrát může vést ke ztrátě dat." #: Project.module:595 msgid "It cannot be converted." msgstr "Nelze zkonvertovat." #: Project.module:595 msgid "This project is read-only." msgstr "Tento projekt je pouze ke čtení." #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "Kopírovat projekt dovniř odkládacího adresáře..." #: Project.module:616 msgid "Unable to create temporary directory" msgstr "Nelze vytvořit dočasný adresář" #: Project.module:646 msgid "Converting project structure..." msgstr "Převodová struktura projektu..." #: Project.module:679 msgid "Applying conversion..." msgstr "Uplatni konverzi..." #: Project.module:685 msgid "Unable to apply conversion" msgstr "Nelze aplikovat konverzi" #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "Některé knihovny použité v projektu chybý." #: Project.module:824 #, fuzzy msgid "Cannot open project file :" msgstr "Projekt nelze otevřít:\n" #: Project.module:876 msgid "Cannot reload file." msgstr "" #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "ALFA VERZE, POUŽITÍ NA VLASTNÍ RIZIKO!" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "VÝVOJOVÁ VERZE, POUŽITÍ NA VLASTNÍ NEBEZPEČÍ!" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "Binární soubor nelze otevřít." #: Project.module:2079 msgid "Cannot open file." msgstr "Soubor nelze otevřít." #: Project.module:2237 msgid "&1th" msgstr "-" #: Project.module:2290 msgid "in form definition" msgstr "ve formě definice" #: Project.module:2297 msgid "in &1." msgstr "v &1." #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Některé projekty zdrojové soubory jsou v konfliktu. \n" "Prosím, vyřešte je, pokud chcete kompilovat projekt." #: Project.module:2462 msgid "Compiling project" msgstr "Kompiluji projekt" #: Project.module:2720 msgid "File already exists." msgstr "Soubor již existuje." #: Project.module:2753 msgid "Directory already exists." msgstr "Adresář již existuje." #: Project.module:2765 msgid "Cannot link template file." msgstr "Nelze odkazát na soubor šablony." #: Project.module:2771 msgid "Cannot copy template file." msgstr "Šablonu nelze zkopírovat." #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2999 msgid "Cannot install library in &1." msgstr "" #: Project.module:3041 msgid "Making executable..." msgstr "Vytvářím spustitelný soubor..." #: Project.module:3099 msgid "Cannot make executable." msgstr "Spustitelný soubor nelze vytvořit." #: Project.module:3555 msgid "Some components are missing: &1" msgstr "Nekteré komponenty chybějí: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "Projekt nelze uložit." #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "Nelze vytvořit zástupce na ploše." #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "Adresář bude odstraněn až v dalším commitu." #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "Musíte definovat hlavní třídu nebo formulář!" #: Project.module:4120 msgid "Please type a name." msgstr "Prosím, napište jméno." #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "This name contains a forbidden character:" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "Název nesmí začínat tečkou." #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "Toto jméno se již používá. Vyberte jiné." #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Název třídy musí začínat písmenem nebo podtržítkem, následovaným libovolným písmenem nebo číslici." #: Project.module:4211 msgid "Destination already exists." msgstr "Cíl již existuje." #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "Soubor &1 nelze přejmenovat" #: Project.module:4480 msgid "Please type a project name." msgstr "Prosím, napište jméno projektu." #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "Název projektu nemůže začít s tečkou." #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Ne-ASCII znaky jsou zakázány v názevu projektu." #: Project.module:4492 msgid "SPACE" msgstr "" #: Project.module:4492 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "Následující znaky jsou zakázány ve název projektu: ? * / \\ SPACE" #: Project.module:4499 msgid "This project already exists." msgstr "Tento projekt už existuje." #: Project.module:4502 msgid "The project directory already exists." msgstr "Adresář projektu již existuje." #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Adresář projektu nelze vytvořit, protože soubor se stejným názvem již existuje." #: Project.module:4552 msgid "Unable to create source archive." msgstr "Nelze vytvořit zdrojový archiv." #: Project.module:4579 msgid "Create source package" msgstr "Vytvořit zdrojový balíček" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "Soubor &1 nelze kopírovat." #: Project.module:4914 msgid "Cannot create link &1." msgstr "Nelze vytvořit odkaz &1." #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "Nelze přesunout adresář uvnitř sebe." #: Project.module:4993 msgid "Cannot move file &1." msgstr "Soubor &1 nejde přesunout." #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "Následující soubory nemohly být odstraněny:" #: Project.module:5686 msgid "Project cleanup..." msgstr "Projekt vyčištěn..." #: Project.module:5692 msgid "Project files conversion..." msgstr "Konverze souborů projektu..." #: Project.module:5722 msgid "Unable to convert &1" msgstr "Nelze konvertovat &1" #: Project.module:6002 msgid "Unable to update forms." msgstr "" #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6186 msgid "Unable to read component description file." msgstr "" #: Project.module:6247 msgid "Cannot write component description file." msgstr "" #: Project.module:6308 msgid "Project templates" msgstr "" #: Project.module:6354 msgid "Unable to run terminal." msgstr "" #: Save.module:57 msgid "Cannot save file !" msgstr "Soubor nelze uložit!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "-" #: Util.module:41 msgid "&1 KiB" msgstr "-" #: Util.module:43 msgid "&1 MiB" msgstr "-" #: Util.module:45 msgid "&1 GiB" msgstr "-" #: VersionControl.module:139 #, fuzzy msgid "Command timeout." msgstr "timeout příkaz" #: VersionControl.module:139 #, fuzzy msgid "Please check your network connection." msgstr "Prosím, vyberte umístění menu." #: VersionControl.module:521 msgid "Do you really want to put this project under version control with &1?" msgstr "" #: VersionControl.module:535 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:642 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Variant" #~ msgstr "Variantní" #~ msgid "Pointer" #~ msgstr "Ukazatel" #~ msgid "Edit text property" #~ msgstr "Upravit vlatnosti textu" #~ msgid "WARNING! The project executable and the libraries it depends on must be stored inside the same directory. Otherwise the libraries will not be found." #~ msgstr "UPOZORNĚNÍ: Tento spustitelný projekt závisí na knihovnách, které musí být uloženy ve stejném adresáři. V opačném případě nebudou knihovny nalezeny." #~ msgid "These files will be ignored when making source archives." #~ msgstr "Tyto soubory budou ignorovány při vytváření zdrojového archivu." #~ msgid "Source archives" #~ msgstr "Zdrojové archivy" #~ msgid "Color theme" #~ msgstr "Barevný motiv" #~ msgid "Do you really want to reset the list to its default value?" #~ msgstr "Opravdu chcete obnovit seznam na výchozí hodnoty?" #~ msgid "System informations" #~ msgstr "Informace o systému" #~ msgid "Subdivision" #~ msgstr "Pododdělení" #~ msgid "Stack backtrace" #~ msgstr "Poslední kroky zásobníku" #~ msgid "Remove current breakpoint" #~ msgstr "Odstranit akuální breakpoint" #~ msgid "Display ME" #~ msgstr "Zobrazit ME" #~ msgid "Display" #~ msgstr "Zobrazit" #~ msgid "Remove all expressions" #~ msgstr "Odstranit všechny výrazy" #~ msgid "Copy local variables" #~ msgstr "Kopírovat lokální proměnné" #~ msgid "Copy to clipboard" #~ msgstr "Kopírovat do schránky" #~ msgid "Column view" #~ msgstr "Pohled sloupce" #~ msgid "Dynamic variables" #~ msgstr "Dynamické proměnné" #~ msgid "Procedure" #~ msgstr "Procedura" #~ msgid "Expression" #~ msgstr "Výraz" #~ msgid "Syntax error. Invalid identifier in property name" #~ msgstr "Syntaktická chyba. Neplatný identifikátor v názvu vlastnosti" #~ msgid "Embedded array" #~ msgstr "Vložené pole" #~ msgid "Uncompress file" #~ msgstr "Rozbalit soubor" #~ msgid "The file has been compressed from &1 to &2 bytes (&3)." #~ msgstr "Soubor byl komprimován od &1 do &2 bytů (&3)." #~ msgid "Original file has been saved in the Project folder." #~ msgstr "Původní soubor byl uložen ve složce projektu." #~ msgid "Current procedure" #~ msgstr "Aktuální procedura" #~ msgid "Arguments" #~ msgstr "Argumenty" #~ msgid "Quiet external commands" #~ msgstr "Tiché externí příkazy" #~ msgid "Minimize at runtime" #~ msgstr "Minimalizovat za běhu" #~ msgid "Small" #~ msgstr "Malá" #~ msgid "Define..." #~ msgstr "Definovat..." gambas-3.16.3/app/src/gambas3/.lang/cy.po000066400000000000000000005003761411575327000177140ustar00rootroot00000000000000# translation of cy.po to Cymraeg # translation of .pot.po to Cymraeg # #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CClassInfo.class # Generated by Gambas compiler # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CComponent.class # Generated by Gambas compiler # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CControl.class # Generated by Gambas compiler # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CCoolButton.class # Generated by Gambas compiler # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CCoolTabs.class # Generated by Gambas compiler # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CMenu.class # Generated by Gambas compiler # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CSplit.class # Generated by Gambas compiler # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FAbout.class # Generated by Gambas compiler # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FDebug.class # Generated by Gambas compiler # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FEditor.class # Generated by Gambas compiler # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FExplorer.class # Generated by Gambas compiler # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FFind.class # Generated by Gambas compiler # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FForm.class # Generated by Gambas compiler # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FGambas.class # Generated by Gambas compiler # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FGetIcon.class # Generated by Gambas compiler # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FGotoLine.class # Generated by Gambas compiler # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FIconEditor.class # Generated by Gambas compiler # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FIconTool.class # Generated by Gambas compiler # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FLanguage.class # Generated by Gambas compiler # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FList.class # Generated by Gambas compiler # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FLocal.class # Generated by Gambas compiler # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FMain.class # Generated by Gambas compiler # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FMenu.class # Generated by Gambas compiler # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewClass.class # Generated by Gambas compiler # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewDirectory.class # Generated by Gambas compiler # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewForm.class # Generated by Gambas compiler # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewIcon.class # Generated by Gambas compiler # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewModule.class # Generated by Gambas compiler # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewProject.class # Generated by Gambas compiler # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FNewText.class # Generated by Gambas compiler # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FOpenProject.class # Generated by Gambas compiler # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FOption.class # Generated by Gambas compiler # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FOutput.class # Generated by Gambas compiler # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FPropertyFile.class # Generated by Gambas compiler # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FProperty.class # Generated by Gambas compiler # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FPropertyProject.class # Generated by Gambas compiler # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FRename.class # Generated by Gambas compiler # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FSave.class # Generated by Gambas compiler # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FSelector.class # Generated by Gambas compiler # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FStack.class # Generated by Gambas compiler # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FSupSelector.class # Generated by Gambas compiler # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FTest.class # Generated by Gambas compiler # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FTextEditor.class # Generated by Gambas compiler # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FText.class # Generated by Gambas compiler # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FTips.class # Generated by Gambas compiler # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FToolBar.class # Generated by Gambas compiler # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FToolBox.class # Generated by Gambas compiler # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FTranslate.class # Generated by Gambas compiler # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FWatch.class # Generated by Gambas compiler # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/FWelcome.class # Generated by Gambas compiler # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/Language.module # Generated by Gambas compiler # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/Project.module # Generated by Gambas compiler # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # KD at KGyfieithu , 2004. # msgid "" msgstr "" "Project-Id-Version: cy\n" "POT-Creation-Date: 2021-03-28 16:17 UTC\n" "PO-Revision-Date: 2004-01-03 21:28+0000\n" "Last-Translator: KD at KGyfieithu \n" "Language-Team: Cymraeg \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.2\n" #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 #, fuzzy msgid "Static properties" msgstr "Priodweddau'r cywaith" #: CClassInfo.class:616 msgid "Static variables" msgstr "" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Priodweddau" #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "" #: CClassInfo.class:638 msgid "Events" msgstr "" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "" #: CClassInfo.class:681 msgid "creatable" msgstr "" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:694 msgid "function" msgstr "" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "" #: CClassInfo.class:699 msgid "write" msgstr "" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 msgid "static function" msgstr "" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "Cadw'r wybodaeth ddad-namu yn yr gweithredadwyn" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Dosbarthiadau" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Dosbarth" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Disgrifiad" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "" #: CComponent.class:600 msgid "This component is deprecated." msgstr "" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "" #: CComponent.class:621 msgid "Implements" msgstr "" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:648 msgid "Excludes" msgstr "" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:137 msgid "Report designer" msgstr "" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "Cydran" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:144 msgid "Application settings management" msgstr "" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "Trefniad" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "Cydran" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "Cydran" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "Ffurflen" #: CModule.class:29 msgid "Forms" msgstr "Ffurflenni" #: CModule.class:29 msgid "Gambas forms" msgstr "Ffurflenni Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Ffurflenni Gambas" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "Ffurflen" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Ffurflenni" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Ffurflenni Gambas" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "Ffurflen" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Ffurflenni" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "Diddymu" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "" #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Cywaith" #: CProjectTree.class:373 msgid "Sources" msgstr "" #: CProjectTree.class:375 msgid "Connections" msgstr "" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Data" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "Yn gwneud y gweithredadwyn" #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "Methu dileu ffeil neu gyfeiriadur" #: CSoftware.class:664 msgid "yesterday" msgstr "" #: CSoftware.class:666 msgid "&1 days ago" msgstr "" #: CSoftware.class:672 msgid "last week" msgstr "" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 msgid "last month" msgstr "" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 msgid "on &1" msgstr "" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "Llinell gyfredol" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "Cyweithiau diweddar" #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "Cyweithiau diweddar" #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "Cyweithiau diweddar" #: CVersionControlGit.class:394 msgid "Status" msgstr "" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "Iawn" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "" #: Design.module:229 Project.module:2325 msgid "second" msgstr "" #: Design.module:231 Project.module:2327 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 #, fuzzy msgid "The program has been terminated." msgstr "" "Mae'r rhaglen wedi dychwelyd\n" "y gwerth: &1" #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Mae'r rhaglen wedi dychwelyd\n" "y gwerth: &1" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "" "Mae'r rhaglen wedi dychwelyd\n" "y gwerth: &1" #: Design.module:1064 msgid "Output terminal" msgstr "" #: Design.module:1092 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Trwydded" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Ynglyn â Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "Ymresymiadau" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Rhedeg" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Cau" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "Lliw" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "System Ffeiliau" #: FColorChooser.form:40 msgid "Free" msgstr "" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Dewis cywaith" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "Ail-lwytho" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Golygu" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Testun" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "Torri" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "Copïo" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "Gludo" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "Dadwneud" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "Ailwneud" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "Cadw" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "Sylwi" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "Dad-sylwi" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "Dewis Popeth" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "Mynd i linell" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "Côd" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "Enw" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "Math" #: FConnectionEditor.class:61 msgid "Length" msgstr "" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Crynhoi" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Mynegai" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Tynnu" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Ailenwi" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "" #: FConnectionEditor.form:217 msgid "Run query" msgstr "" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "Newydd" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Gwaredu" #: FConnectionEditor.form:309 msgid "Fields" msgstr "" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "I _Lawr" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "I _Fyny" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "" #: FConnectionEditor.form:389 msgid "New index" msgstr "" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Dileu" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Dewis popeth" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "Mae'r rhaglen wedi dychwelyd\n" "y gwerth: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "Dewisiadau" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Rhowch enw." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Cywaith newydd" #: FCreateProject.form:46 msgid "Project type" msgstr "" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "Cyfeiriadur" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Priodweddau'r cywaith" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "Mae'r cywaith yn gyfieithadwy" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Terfynell" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "Torbwyntiau" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Gwerth" #: FDebugExpr.class:511 msgid "Key" msgstr "" #: FDebugExpr.class:517 msgid "Symbol" msgstr "" #: FDebugExpr.form:33 msgid "Watch" msgstr "" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "Llinell" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Ffeil" #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:125 msgid "native code" msgstr "côd brodorol" #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "Gwylio mynegiad" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "Ydych eisiau gwaredu'r rhestr fynegiannau?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1255 msgid "Current object" msgstr "" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "Dad-namu" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:137 msgid "Add expression" msgstr "" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "Gosod/Dadosod torbwynt" #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "Gosod/Dadosod torbwynt" #: FDebugInfo.form:220 msgid "Disable" msgstr "" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "Gosod/Dadosod torbwynt" #: FDebugInfo.form:228 msgid "Enable" msgstr "" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:474 msgid "Show search window" msgstr "" #: FDebugInfo.form:481 msgid "Search again" msgstr "" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "Ni ellir canfod y llinyn chwilio." #: FEditor.class:409 msgid "Column" msgstr "" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "" #: FEditor.form:202 msgid "Sort procedures" msgstr "" #: FEditor.form:232 msgid "Go to" msgstr "Mynd i" #: FEditor.form:251 msgid "Find definition" msgstr "" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "Gosod/Dadosod torbwynt" #: FEditor.form:322 msgid "Watch expression" msgstr "Gwylio mynegiad" #: FEditor.form:331 msgid "Open form" msgstr "" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "Argraffu" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Golygydd" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "Cadw ffeiliau a newidwyd" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 msgid "Previous modification" msgstr "" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "" #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Methau ailenwi '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "Parhau" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "Cyfeiriadur" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Modiwlau Gambas" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "Golygu priodweddau'r rhestr" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:136 msgid "Bad form file" msgstr "Ffeil ffurflen llygredig" #: FForm.class:284 msgid "Unknown control: &1" msgstr "" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "Methu cadw'r cyfieithiad." #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "Dewis" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "Dewis cywaith" #: FForm.form:245 msgid "Arrangement" msgstr "Trefniad" #: FForm.form:249 msgid "Bring to foreground" msgstr "Codi i'r blaendir" #: FForm.form:256 msgid "Send to background" msgstr "Anfon i'r cefndir" #: FForm.form:266 msgid "Horizontal" msgstr "" #: FForm.form:273 msgid "Rows" msgstr "" #: FForm.form:279 msgid "Vertical" msgstr "" #: FForm.form:286 msgid "Columns" msgstr "" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "Aliniad" #: FForm.form:311 msgid "Align to left" msgstr "Alinio i'r chwith" #: FForm.form:317 msgid "Align to right" msgstr "Alinio i'r dde" #: FForm.form:323 msgid "Align to top" msgstr "Alinio i'r pen" #: FForm.form:329 msgid "Align to bottom" msgstr "Alinio i'r gwaelod" #: FForm.form:338 msgid "Same width" msgstr "Yr un lled" #: FForm.form:344 msgid "Same height" msgstr "Yr un uchder" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "Nesaf" #: FForm.form:387 msgid "Last" msgstr "" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "Golygydd dewislen" #: FForm.form:407 msgid "Event" msgstr "Digwyddiad" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "" #: FForm.form:786 msgid "Italic" msgstr "" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Cefndir" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Porydd cymorth" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 #, fuzzy msgid "Debugger" msgstr "Dad-namu" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "Cyfieithiad" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Dewisiad" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "Hoffterau" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "Dewisiad" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Lluniadu" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Petryal" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Hirgylch" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 #, fuzzy msgid "Colorize" msgstr "Lliw" #: FImageProperty.form:400 msgid "Desaturate" msgstr "" #: FImageProperty.form:408 msgid "Make transparent" msgstr "" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "Llinell" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "Llinell" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Maint" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "Cyfieithu" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Dosbarthiadau Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Modiwlau Gambas" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Modiwlau Gambas" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "Ffeiliau delwedd" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "Methu symud ffeil &1." #: FImportFile.form:9 msgid "Import files" msgstr "" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "Pob ffeil" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:78 msgid "Charset" msgstr "" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Rhowch enw." #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Mae'r cywaith yma yn bodoli eisoes." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Cadw" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Golygu priodweddau'r rhestr" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Ydych wir eisiau dileu'r cyfeiriadur yma?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Methu dileu ffeil neu gyfeiriadur" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:773 msgid "Sort history" msgstr "" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "" #: FMain.class:789 msgid "&Clear history" msgstr "&Gwagu'r hanes" #: FMain.class:969 msgid "New folder" msgstr "" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1904 msgid "Clean" msgstr "" #: FMain.class:2221 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Ydych wir eisiau dileu'r cyfeiriadur yma?" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Mae'r ffeil wedi'i newid.\n" "\n" "Byd pob un o'ch newidiadau yn cael eu colli." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Agor cywaith" #: FMain.form:313 msgid "Open recent" msgstr "Agor diweddar" #: FMain.form:321 msgid "Open example" msgstr "Agor enghraifft" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "Cadw cywaith" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "Dewis cywaith" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Terfynu" #: FMain.form:402 Project.module:6969 #, fuzzy msgid "Save as" msgstr "Cadw" #: FMain.form:442 msgid "Compile" msgstr "Crynhoi" #: FMain.form:449 msgid "Compile All" msgstr "Crynhoi Popeth" #: FMain.form:459 msgid "Translate" msgstr "Cyfieithu" #: FMain.form:468 msgid "Make" msgstr "" #: FMain.form:472 msgid "Executable" msgstr "" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "" #: FMain.form:486 msgid "Installation package" msgstr "" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:570 msgid "Refresh" msgstr "Ailfywio" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Seibio" #: FMain.form:630 msgid "Stop" msgstr "Aros" #: FMain.form:637 msgid "Step" msgstr "Camu" #: FMain.form:644 msgid "Forward" msgstr "Ymlaen" #: FMain.form:651 msgid "Finish" msgstr "" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 #, fuzzy msgid "GUI component" msgstr "Cydran" #: FMain.form:713 #, fuzzy msgid "Current desktop" msgstr "Llinell gyfredol" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "" #: FMain.form:770 msgid "Close all debug windows" msgstr "" #: FMain.form:808 msgid "Status bar" msgstr "" #: FMain.form:815 msgid "Hide menubar" msgstr "" #: FMain.form:839 msgid "Close all windows" msgstr "Cau pob ffenest" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "Canfod" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Amnewid" #: FMain.form:866 msgid "Browse project" msgstr "" #: FMain.form:873 msgid "Open a terminal" msgstr "" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Hoffterau" #: FMain.form:924 msgid "Directory" msgstr "Cyfeiriadur" #: FMain.form:929 msgid "Project link" msgstr "" #: FMain.form:938 msgid "Module" msgstr "Modiwl" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr "Modiwlau Gambas" #: FMain.form:1004 msgid "HTML file" msgstr "" #: FMain.form:1011 msgid "Style sheet" msgstr "" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Diweddar" #: FMain.form:1059 msgid "Open in file manager" msgstr "" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "Agor cywaith" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "" #: FMain.form:1132 msgid "Startup class" msgstr "Dosbarth cychwyn" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr "Cadw ffeiliau a newidwyd" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "Ffeiliau cyfieithiad" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "Cadw ffeiliau a newidwyd" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "Cyfieithu" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "Yn gwneud y gweithredadwyn" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Cynghorion y diwrnod" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Priodweddau'r cywaith" #: FMain.form:1429 msgid "Refresh project" msgstr "" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "" #: FMain.form:1471 msgid "Make source archive" msgstr "" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "" #: FMain.form:1500 msgid "Properties sheet" msgstr "Dalen priodweddau" #: FMain.form:1509 msgid "Toolbox" msgstr "Blwch Offer" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "" #: FMain.form:1551 msgid "Compile all" msgstr "Crynhoi popeth" #: FMain.form:1600 msgid "Finish current function" msgstr "" #: FMain.form:1616 msgid "Show menubar" msgstr "" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "&Ffeil" #: FMain.form:1730 msgid "&Project" msgstr "&Cywaith" #: FMain.form:1742 msgid "&Debug" msgstr "" #: FMain.form:1754 msgid "&View" msgstr "&Gweld" #: FMain.form:1766 msgid "&Tools" msgstr "&Offer" #: FMain.form:1778 msgid "&?" msgstr "&?" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "Cywaith newydd" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "Dalen priodweddau" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "Dangos cynghorion" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Cadw'r wybodaeth ddad-namu yn yr gweithredadwyn" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "" #: FMakeInstall.class:137 msgid "Min. version" msgstr "" #: FMakeInstall.class:138 msgid "Max. version" msgstr "" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "Creu pecyn tarddiad" #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "" #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "" #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "" #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "Rhowch enw." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "" #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:558 msgid "Initial release" msgstr "" #: FMakeInstall.class:814 msgid "Menus" msgstr "" #: FMakeInstall.class:882 msgid "Groups" msgstr "" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "Creu pecyn tarddiad" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Pecynnau tarddiad" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "Creu pecyn tarddiad" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "" #: FMenu.class:346 msgid "Bad menu name !" msgstr "Enw dewislen annilys!" #: FMenu.class:352 msgid "Bad group name !" msgstr "Enw grŵp annilys!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Mae'r ddewislen yma yn rhy ddwfn!" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "newidwyd" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 msgid "Insert separator" msgstr "" #: FMenu.form:104 msgid "Insert menu before" msgstr "" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "&Mewnosod" #: FMenu.form:113 #, fuzzy msgid "Delete menu" msgstr "Dileu" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "&Mewnosod" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Cliciwch ar Mewnosod i ychwanegu dewislen newydd." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 msgid "Create database" msgstr "" #: FNewConnection.class:241 msgid "Delete database" msgstr "" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 msgid "No password" msgstr "" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Dewis cywaith" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Enghreifftiau" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Gludo" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "Penbwrdd" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:267 msgid "Export a theme file" msgstr "" #: FOption.class:498 msgid "Select a theme file" msgstr "" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 msgid "Network is not available." msgstr "" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "Methu copïo ffeil &1." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 msgid "Unable to install documentation." msgstr "" #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "Crynhoi" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "Llinell gyfredol" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "Ydych wir eisiau dileu'r cyfieithiad yma?" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 msgid "Identity" msgstr "" #: FOption.form:350 msgid "Package maintainer" msgstr "" #: FOption.form:395 msgid "Default license" msgstr "" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "Cywaith" #: FOption.form:456 msgid "Default tab size" msgstr "" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 msgid "Activate version control" msgstr "" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Crynhoi" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "Anfon i'r cefndir" #: FOption.form:569 msgid "Images" msgstr "" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Gwaredu'r cyfieithiad yma" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Ffeiliau cyfieithiad" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "" #: FOption.form:670 msgid "Show documentation in popups" msgstr "" #: FOption.form:687 msgid "Always display optional messages" msgstr "" #: FOption.form:699 msgid "Documentation" msgstr "" #: FOption.form:710 msgid "Use offline documentation" msgstr "" #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "" #: FOption.form:787 msgid "Applications" msgstr "" #: FOption.form:798 msgid "Browser" msgstr "" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "" #: FOption.form:875 msgid "Highlight modified lines" msgstr "" #: FOption.form:892 msgid "Show line numbers" msgstr "" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:960 msgid "Show Preview" msgstr "" #: FOption.form:978 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Code formatting" msgstr "" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 msgid "Control structure completion" msgstr "" #: FOption.form:1021 msgid "Local variable declaration" msgstr "" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "Sylwadau" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "Cau pob ffenest" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "" #: FOption.form:1155 msgid "Code snippets" msgstr "" #: FOption.form:1171 msgid "Activate code snippets" msgstr "" #: FOption.form:1232 msgid "Interface" msgstr "" #: FOption.form:1249 msgid "Activate animations" msgstr "" #: FOption.form:1266 msgid "Show shadows" msgstr "" #: FOption.form:1283 msgid "Show tooltips" msgstr "Dangos cynghorion" #: FOption.form:1300 msgid "Use utility windows" msgstr "" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 msgid "Message style" msgstr "" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 msgid "Debugger size" msgstr "" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Wrthi'n argraffu %d" #: FOption.form:1588 msgid "Fixed font" msgstr "" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 msgid "Themes" msgstr "" #: FOption.form:1698 msgid "Icon theme" msgstr "" #: FOption.form:1714 msgid "Highlighting theme" msgstr "" #: FOption.form:1728 msgid "Import theme" msgstr "" #: FOption.form:1734 msgid "Export theme" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Agor diweddar" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Methau ailenwi '&1'" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "Priodweddau'r cywaith" #: FProjectEditor.form:77 msgid "Image preview" msgstr "" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "Priodweddau'r cywaith" #: FProjectProperty.class:55 msgid "Variable" msgstr "" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "Mae'r gwerth neidio yn anghywir." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:1000 msgid "Modules" msgstr "Modiwlau" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "Modiwlau Gambas" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "Golygiad" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 msgid "Executable size" msgstr "" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "" #: FProjectProperty.class:1039 #, fuzzy msgid "Information about library" msgstr "Gwybodaeth" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "Yn gwneud y gweithredadwyn" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "Crynhoi" #: FProjectProperty.form:300 msgid "General" msgstr "Cyffredinol" #: FProjectProperty.form:366 msgid "Component" msgstr "Cydran" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "" #: FProjectProperty.form:373 msgid "Vendor" msgstr "" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Fersiwn" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:418 msgid "Title" msgstr "Teitl" #: FProjectProperty.form:452 msgid "Information" msgstr "Gwybodaeth" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 #, fuzzy msgid "Include information from" msgstr "Gwybodaeth" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 msgid "Exclude" msgstr "" #: FProjectProperty.form:642 msgid "Remove All" msgstr "" #: FProjectProperty.form:649 msgid "Components" msgstr "Cydrannau" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "Hoffterau" #: FProjectProperty.form:748 msgid "Environment" msgstr "" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Golygiad" #: FProjectProperty.form:827 msgid "Tab size" msgstr "" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Mae rheolyddion y ffurflen yn gyhoeddus" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "" #: FProperty.class:383 msgid "This name is already in use." msgstr "" #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "" #: FProperty.class:469 msgid "Incorrect property value." msgstr "" #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "Dim" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "" #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 msgid "Incorrect version number." msgstr "" #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Ydych wir eisiau ail-lwytho'r cyfieithiad yma?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Dewis cywaith" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Ffeiliau delwedd" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "Disgrifiad" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr "Cadw ffeiliau a newidwyd" #: FSave.form:43 msgid "Save All" msgstr "" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Amnewidwyd y llinyn chwilio unwaith." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Amnewidwyd y llinyn chwilio &1 o weithiau." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Llinell gyfredol" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Mathau data" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 msgid "Highlight search" msgstr "" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:40 msgid "Image files" msgstr "" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Dewis llun" #: FSelectIcon.form:45 msgid "Stock" msgstr "" #: FSelectIcon.form:73 msgid "Size preview" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Anhysbys" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Dewis popeth" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "Golygiad" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "Mynegiant" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "Diddymu" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr "Methau ailenwi '&1'" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Methau ailenwi '&1'" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr "Methau ailenwi '&1'" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "" #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Ydych wir eisiau dileu'r ffeil yma?" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr "Methau ailenwi '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Ffurflenni Gambas" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "Agor diweddar" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "Dangos cynghorion" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "Dangos cynghorion" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "I _Lawr" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Methau ailenwi '&1'" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Mae'r cywaith yma yn bodoli eisoes." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Yn gwneud y gweithredadwyn" #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Ydych wir eisiau ail-lwytho'r cyfieithiad yma?" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "Dileu" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "Dewis popeth" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr "Dewis popeth" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Golygu priodweddau'r rhestr" #: FText.form:29 msgid "Use a fixed font" msgstr "" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "Enghreifftiau" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "Gosod/Dadosod torbwynt" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "Methud darllen cynghoryn y diwrnod!" #: FTips.form:70 msgid "Show tips on startup" msgstr "Dangos cynghorion wrth gychwyn" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "Parhau" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 msgid "Network" msgstr "" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "Agor cywaith" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Mae'r cywaith yn wag. Does dim i'w gyfieithu." #: FTranslate.class:74 msgid "Language" msgstr "" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Cyfieithu" #: FTranslate.class:169 msgid "Translation files" msgstr "Ffeiliau cyfieithiad" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "Methu darllen y ffeil cyfieithiad ar gyfer iaith '&1'" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "Methu cadw'r cyfieithiad." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "Ydych wir eisiau dileu'r cyfieithiad yma?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "Ydych wir eisiau ail-lwytho'r cyfieithiad yma?" #: FTranslate.class:802 msgid "Export a translation" msgstr "Allforio cyfieithiad" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "" #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "Mae popeth yn edrych yn gywir." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "Nid yw'r symbolau llinynnau wedi'u cyfieithu yn cydweddu â'r rhai llinynnau heb eu cyfieithu." #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "Ffeiliau cyfieithiad" #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Ydych wir eisiau dileu'r cyfieithiad yma?" #: FTranslate.form:77 msgid "Project translation" msgstr "" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Gwaredu'r cyfieithiad yma" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Allforio cyfieithiad" #: FTranslate.form:232 msgid "Save translation" msgstr "" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Gwririo'r cyfieithiad" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Canfod y llinyn nesaf heb ei gyfieithu" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Canfod y llinyn nesaf heb ei gyfieithu" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Canfod y llinyn nesaf heb ei gyfieithu" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Gwaredu'r cyfieithiad yma" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Rhaid peidio â chyfieithu'r llinyn yma" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copïo llinyn heg ei gyfieithu" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "Gwaredu'r cyfieithiad yma" #: FTranslate.form:480 msgid "Import a translation file" msgstr "" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "Ffeiliau cyfieithiad" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Dewisiad" #: FWelcome.class:69 msgid "New project..." msgstr "Cywaith newydd..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Cyweithiau diweddar" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Cywaith Gambas" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: HelpView.class:39 Wiki.module:816 #, fuzzy msgid "This page does not exist." msgstr "Mae'r cywaith yma yn bodoli eisoes." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabeg (yr Aifft)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabeg (Twnisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bwlgaria" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Cymraeg (Teyrnas Unedig)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Daneg (Denmarc)" #: Language.module:34 msgid "German (Germany)" msgstr "Almaeneg (Almaen)" #: Language.module:35 msgid "German (Belgium)" msgstr "Almaeneg (Gwlad Belg)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Groeg (Groeg)" #: Language.module:41 msgid "English (common)" msgstr "Saesneg (cyffredin)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Saesneg (Teyrnas Unedig)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Saesneg (U.D.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Saesneg (Awstralia)" #: Language.module:45 msgid "English (Canada)" msgstr "Saesneg (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Saesneg (cyffredin)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Sbaeneg (Sbaen)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Sbaeneg (Ariannin)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Ffrangeg (Ffrainc)" #: Language.module:69 msgid "French (Belgium)" msgstr "Ffrangeg (Gwlad Belg)" #: Language.module:70 msgid "French (Canada)" msgstr "Ffrangeg (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Ffrangeg (Swistir)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galiseg (Sbaen)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Hwngareg (Hwngari)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croateg (Croatia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indoneseg (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Gwyddeleg (Iwerddon)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Eidaleg (Eidal)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Iseldireg (Iseldiroedd)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Iseldireg (Gwlad Belg)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norwyeg (Norwy)" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "Pwyleg (Gwlad Pwyl)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portiwgaleg (Portiwgal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portiwgaleg (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Rwsieg (Rwsia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Swedeg (Sweden)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Twrceg (Twrci)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Walwn (Gwlad Belg)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "" #: Language.module:220 msgid "Unknown" msgstr "Anhysbys" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Ffeiliau cyfieithiad" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "Methu cadw'r ffeil!" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "Methu cadw'r ffeil!" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Gorlifodd y stac" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Methu copïo ffeil &1." #: MErrorMessage.module:242 msgid "Unknown error" msgstr "" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Anfon i'r cefndir" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Sylwadau" #: MTheme.module:6 msgid "Current line" msgstr "Llinell gyfredol" #: MTheme.module:6 msgid "Data types" msgstr "Mathau data" #: MTheme.module:6 msgid "Editing line" msgstr "" #: MTheme.module:6 msgid "Errors" msgstr "" #: MTheme.module:6 msgid "Highlighting" msgstr "" #: MTheme.module:6 msgid "Keywords" msgstr "Allweddeiriau" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Testun arferol" #: MTheme.module:6 msgid "Numbers" msgstr "Rhifau" #: MTheme.module:6 msgid "Operators" msgstr "Gweithredyddion" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Llinynnau" #: MTheme.module:6 msgid "Subroutines" msgstr "Is-reolweithiau" #: MTheme.module:6 msgid "Symbols" msgstr "Symbolau" #: Package.module:85 msgid "'&1' is missing." msgstr "" #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "" #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "" #: Package.module:830 msgid "The package build has failed." msgstr "" #: Package.module:903 msgid "Making build directory." msgstr "" #: Package.module:962 msgid "Creating desktop file..." msgstr "" #: Package.module:970 msgid "Sources are being debianizated." msgstr "" #: Package.module:1175 msgid "Creating package..." msgstr "" #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "" #: Package.module:1483 msgid "Creating source package." msgstr "" #: Package.module:1507 msgid "Creating .spec file." msgstr "" #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "" #: Project.module:239 msgid "Basic" msgstr "" #: Project.module:241 msgid "Drawing" msgstr "" #: Project.module:244 msgid "Miscellaneous" msgstr "Amrywiol" #: Project.module:245 msgid "Networking" msgstr "" #: Project.module:246 msgid "OpenGL" msgstr "" #: Project.module:248 msgid "Sound" msgstr "" #: Project.module:250 msgid "Controls" msgstr "" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "" #: Project.module:545 msgid "This project does not exist." msgstr "" #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "" #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "Peidio ag agor" #: Project.module:600 msgid "Open after all" msgstr "Agor serch hynny" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:606 msgid "It cannot be converted." msgstr "" #: Project.module:606 msgid "This project is read-only." msgstr "" #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "Mae'r cywaith yma yn bodoli eisoes." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr "Methu agor'r ffeil cywaith: \n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "Methu copïo ffeil &1." #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "" #: Project.module:2171 msgid "Cannot open file." msgstr "" #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2575 msgid "Compiling project" msgstr "Yn crynhoi'r cywaith" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "Mae'r ffeil yn bodoli eisoes." #: Project.module:2876 msgid "Directory already exists." msgstr "Mae'r cyfeiriadur yn bodoli eisoes." #: Project.module:2888 msgid "Cannot link template file." msgstr "" #: Project.module:2894 msgid "Cannot copy template file." msgstr "Methu copïo ffeil patrymlun." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "Cyfeiriadur" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 msgid "Cannot install library in &1." msgstr "" #: Project.module:3181 msgid "Making executable..." msgstr "Yn gwneud y gweithredadwyn" #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr "Ydych wir eisiau dileu'r cyfeiriadur yma?" #: Project.module:3191 #, fuzzy msgid "No change has been detected." msgstr "" "Mae'r rhaglen wedi dychwelyd\n" "y gwerth: &1" #: Project.module:3292 msgid "Cannot make executable." msgstr "" #: Project.module:3774 msgid "Some components are missing: &1" msgstr "" #: Project.module:3990 msgid "Cannot write project file." msgstr "" #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "" #: Project.module:4351 msgid "Please type a name." msgstr "Rhowch enw." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "Mae'r enw yma ar ddefnydd eisoes. Dewiswch un arall." #: Project.module:4399 msgid "Space" msgstr "" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "Methau ailenwi '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "Rhowch enw cywaith." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4733 msgid "This project already exists." msgstr "Mae'r cywaith yma yn bodoli eisoes." #: Project.module:4736 msgid "The project directory already exists." msgstr "" #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "Methu copïo ffeil &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "" #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:5265 msgid "Cannot move file &1." msgstr "Methu symud ffeil &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "" #: Project.module:5966 msgid "Project files conversion..." msgstr "" #: Project.module:5996 msgid "Unable to convert &1" msgstr "" #: Project.module:6276 msgid "Unable to update forms." msgstr "" #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 msgid "Unable to read component description file." msgstr "" #: Project.module:6520 msgid "Cannot write component description file." msgstr "" #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "Priodweddau'r cywaith" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr "Methau ailenwi '&1'" #: Save.module:57 msgid "Cannot save file !" msgstr "Methu cadw'r ffeil!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 msgid "Incorrect format" msgstr "" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Ydych wir eisiau dileu'r cyfeiriadur yma?" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Mae'r cywaith yma yn bodoli eisoes." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "&Mewnosod" #~ msgid "

Authors

\n" #~ msgstr "

Awduron

\n" #~ msgid "About Gambas..." #~ msgstr "Ynglyn â Gambas..." #~ msgid "Arguments" #~ msgstr "Ymresymiadau" #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr "Ydych eisiau gwaredu'r rhestr fynegiannau?" #~ msgid "Edit text property" #~ msgstr "Golygu priodweddau'r testun" #~ msgid "Existing" #~ msgstr "Cyfredol" #, fuzzy #~ msgid "No argument" #~ msgstr "Ymresymiadau" #~ msgid "Open project..." #~ msgstr "Agor cywaith..." #~ msgid "Picture" #~ msgstr "Llun" #~ msgid "Show only components used in project" #~ msgstr "Dangos cydrannau a ddefnyddir yn y cywaith yn unig" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Croeso i derfynell Gambas.\n" #~ " Er mwyn gwerthuso unrhyw mynegiant, teipiwch '?' wedi'i ddilyn gan\n" #~ " y fynegiant , ac wedyn gwasgwch dychwelyd.\n" #~ "\n" gambas-3.16.3/app/src/gambas3/.lang/de.po000066400000000000000000006147041411575327000176720ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FLocal.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FWatch.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/marco/Documents/gambas-0.63/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.15.90\n" "POT-Creation-Date: 2021-05-22 02:15 UTC\n" "PO-Revision-Date: 2021-03-28 16:19 UTC\n" "Last-Translator: Laurent Carlier \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Integrierte Entwicklungsumgebung für Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Lesezeichen definieren" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Alle Lesezeichen löschen" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Vorheriges Lesezeichen" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Nächstes Lesezeichen" #: CClassInfo.class:615 msgid "Static properties" msgstr "Statische Eigenschaft" #: CClassInfo.class:616 msgid "Static variables" msgstr "Statische Variablen" #: CClassInfo.class:617 msgid "Static methods" msgstr "Statische Methode" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "Konstanten" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Eigenschaften" #: CClassInfo.class:636 msgid "Variables" msgstr "Variablen" #: CClassInfo.class:637 msgid "Methods" msgstr "Methoden" #: CClassInfo.class:638 msgid "Events" msgstr "Ereignisse" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "Diese Klasse reimplementiert &1" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "Diese Klasse erbt von &1" # gb-ignore #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Diese Klasse kann wie ein Objekt genutzt werden, indem auf Anforderung eine versteckte Instanz erstellt wird." #: CClassInfo.class:681 msgid "This class is &1." msgstr "Diese Klasse ist &1." #: CClassInfo.class:681 msgid "creatable" msgstr "erstellbar" #: CClassInfo.class:686 msgid "This class is static." msgstr "Diese Klasse ist statisch." #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "Diese Klasse kann nicht erzeugt werden." #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "Diese Klasse kann als &1 genutzt werden." #: CClassInfo.class:694 msgid "function" msgstr "Funktion" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "Diese Klasse verhält sich wie ein &1 / &2 Array." #: CClassInfo.class:699 msgid "read" msgstr "lesen" #: CClassInfo.class:699 msgid "write" msgstr "schreiben" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "Diese Klasse verhält sich wie ein &1 Array." #: CClassInfo.class:701 msgid "write-only" msgstr "nur-schreiben" #: CClassInfo.class:704 Project.module:1750 msgid "read-only" msgstr "schreibgeschützt" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "Diese Klasse ist &1 mit dem FOR EACH Befehl." #: CClassInfo.class:709 msgid "enumerable" msgstr "enumerierbar" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "Diese Klasse reimplementiert" #: CClassInfo.class:869 msgid "This class inherits" msgstr "Diese Klasse beerbt" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "Diese Klasse ist virtuell." #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Diese Klasse kann als Objekt benutzt werden, indem man bei Bedarf eine versteckte Instanz erstellt." #: CClassInfo.class:911 msgid "static function" msgstr "statische Funktion" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "Die Klasse verhält sich wie ein statisches &1 / &2 Array." #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "Die Klasse verhält sich wie ein statisches &1 Array." #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "Mit dem &2-Schlüsselwort ist diese Klasse &1." #: CClassInfo.class:932 msgid "statically enumerable" msgstr "statisch aufzählbar" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "Informationen über die Komponente &1 werden geladen..." #: CComponent.class:151 msgid "Loading information on project..." msgstr "" #: CComponent.class:525 FProjectProperty.class:1004 msgid "Classes" msgstr "Klassen" #: CComponent.class:569 FDebugInfo.class:45 FMain.form:952 msgid "Class" msgstr "Klasse" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:328 msgid "Description" msgstr "Beschreibung" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "Diese Komponente ist noch nicht stabil." #: CComponent.class:600 msgid "This component is deprecated." msgstr "Diese Komponente ist veraltet." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Autoren" #: CComponent.class:621 msgid "Implements" msgstr "Implementierungen" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Abhängig von" #: CComponent.class:648 msgid "Excludes" msgstr "Ausgeschlossen" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "Eingebaute Basisklassen" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "Programm-Argument-Parser" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Cairo Grafikbibliothek" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "Diagramm zeichnen" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "Polygon-Verwaltung basierend auf der Clipper-Bibliothek" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "Verwaltung komplexer Zahlen" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "Komprimierung & Dekomprimierung" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "bzlib2-Komprimierungstreiber" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "zlib-Komprimierungstreiber" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "zstd-Komprimierungstreiber" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "MD5/DES/SHA Verschlüsselung" #: CDocumentation.class:62 msgid "More data containers" msgstr "Mehr Datencontainer" #: CDocumentation.class:63 msgid "Database access" msgstr "Datenbankzugriff" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "Datenbank-Steuerelemente" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "MySQL Datenbanktreiber" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "ODBC-Datenbanktreiber" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "PostgreSQL-Datenbanktreiber" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "SQLite 2-Datenbanktreiber" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "SQLite 3-Datenbanktreiber" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "Assistent für den Anwendungs-Debugger" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "Komponente zur Desktopverwaltung" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "Unterstützung für die X-Window Bibliothek" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "Gnome-Keyring-Unterstützung für die Desktopverwaltungskomponente" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "D-Bus-Interface" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "Auswertung des Ausdrucks" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "Funktionen für Syntax-Hervorhebung" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "Weitere Steuerelemente für grafische Komponenten" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "Erweiterte Standarddialoge" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "Texteditor mit Syntax-Highlighting" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "Multidokument-Schnittstelle" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "Generisches Vorschau- und Druckelement" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "Standard-Iconthema" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "Terminal Emulator" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "GNU Multiple Precision Arithmetic Bibliothek" # gb-ignore #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "GTK+2 Toolkit" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL mit dem GTK+ Toolkit" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "GTK+3 Toolkit" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ Wechselkomponente" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "OpenGL mit QT/GTK+ Wechselkomponente" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "QT4/QT5 Wechselkomponente" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "QT4/QT5 OpenGL Wechselkomponente" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "QT4/QT5 Webkit Wechselkomponente" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "Verwaltungskomponente für System-Tray-Icons" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "Eingebetteter HTTP-Server" #: CDocumentation.class:99 msgid "Image management" msgstr "Bilderverwaltung" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "Komponente zur Filterung von Bildern" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "Bildroutinen aus der Imlib2 library" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "Laden und Speichern von Bildern" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "Dateisystem-Ereignisse überwachen" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "XML-Tools basierend auf libxml." #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "Flexibles Logging-System" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "Online Karten-Betrachter" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "Gambas Markdown-Auszeichnungssyntax" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "GStreamer Multimedia-Komponente" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "Multimedia-Steuerelemente" #: CDocumentation.class:110 msgid "Memcached client" msgstr "Memcached-Client" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "MIME-Formatverwaltung basierend auf der GMime-Bibliothek" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "MySQL-spezifische Routinen" #: CDocumentation.class:113 msgid "NCurses library" msgstr "NCurses-Bibliothek" #: CDocumentation.class:114 msgid "Network programming" msgstr "Netzwerkprogrammierung" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "Verwaltung von Netzwerk-Highlevel-Protokollen" #: CDocumentation.class:116 msgid "POP3 client" msgstr "POP3 Client" #: CDocumentation.class:117 msgid "SMTP client" msgstr "SMTP-Client" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "OpenAL 3D Audiobibliothek" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "3D-Programmierung mit OpenGL" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "Komponente der OpenGL utility" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "Verwaltung der OpenGL-Shader" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Einfache OpenGL-Spieleengine basierend auf dem MD2-Format" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "Routinen der OpenSSL-Bibliothek" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "GNU Kommandozeilen-Parser" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Abgleich Perl-kompatibler regulärer Ausdrücke" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "PDF-Wiedergabe basierend auf der Poppler-Bibliothek" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "QT4-Toolkit" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "QT4-Toolkit Erweiterung" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "QT4 WebKit Komponente" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL mit dem QT4-Toolkit" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "QT5-Toolkit" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "QT5 Webkit Komponente" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL mit QT5-Toolkit" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "QT5-Toolkit Erweiterung" #: CDocumentation.class:137 msgid "Report designer" msgstr "Bericht-Designer" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "Scanner-Verwaltungsbibliothek basierend auf SANE" #: CDocumentation.class:140 msgid "SDL library" msgstr "SDL-Bibliothek" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "SDL-Sound & CD-ROM-Verwaltung" #: CDocumentation.class:142 msgid "SDL2 component" msgstr "SDL2 Komponente" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "SDL2 Audio Komponente" #: CDocumentation.class:144 msgid "Application settings management" msgstr "Verwaltung der Anwendungseinstellungen" #: CDocumentation.class:145 msgid "Signals management" msgstr "Benachrichtigungsmanagement" #: CDocumentation.class:146 msgid "Terminal management" msgstr "Terminal-Verwaltung" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "Grafische Terminal-Anwendungsentwicklung" #: CDocumentation.class:148 msgid "Unit tests component" msgstr "" #: CDocumentation.class:149 msgid "Utility component" msgstr "Komponente für Hilfsroutinen" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "Hilfsroutinen für Webanwendungen" #: CDocumentation.class:151 msgid "Video capture" msgstr "Videoerfassung" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Kompatibilität zu Visual Basic " #: CDocumentation.class:153 msgid "XML tools" msgstr "XML-Tools" #: CDocumentation.class:154 msgid "HTML generator" msgstr "HTML-Generator" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "XML-RPC Protokoll" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "XSLT-Tools basierend auf libxslt und libxml" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Werkzeuge für Webanwendungen" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "Webfeed-Parser und -Generator" #: CDocumentation.class:159 msgid "Web application development" msgstr "Entwicklung von Webanwendungen" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "Grafisches Formularmanagement" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "Verwaltung der Ereignisabläufe" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "OpenGL-Anzeige" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "Komplexe Zahlen" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "XML-Management" #: CInsertColor.class:295 FEditor.form:213 FTextEditor.form:244 msgid "Insert color" msgstr "Farbe einfügen" #: CInsertDate.class:58 FEditor.form:567 FTextEditor.form:588 msgid "Insert today's date" msgstr "Heutiges Datum einfügen" # gb-ignore #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:52 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "Ort" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "WARNUNG! Bibliothek nicht gefunden." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Enthält" #: CModule.class:29 FEditor.form:420 FForm.form:472 FMain.form:959 #: FToolBox.class:26 msgid "Form" msgstr "Formular" #: CModule.class:29 msgid "Forms" msgstr "Formulare" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas Formulare" #: CModule.class:30 msgid "Gambas web pages" msgstr "Gambas Webseiten" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "Webseite" #: CModule.class:30 msgid "WebPages" msgstr "Webseiten" #: CModule.class:31 msgid "Gambas reports" msgstr "Gambas Berichte" #: CModule.class:31 FMain.form:973 FToolBox.class:26 msgid "Report" msgstr "Bericht" #: CModule.class:31 msgid "Reports" msgstr "Berichte" #: CModule.class:32 msgid "Gambas web forms" msgstr "Gambas Webformulare" #: CModule.class:32 FMain.form:980 FToolBox.class:26 msgid "WebForm" msgstr "Webformular" #: CModule.class:32 msgid "WebForms" msgstr "Webformulare" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Gambas Terminalformulare" #: CModule.class:33 FMain.form:987 FToolBox.class:26 msgid "TermForm" msgstr "Terminalformular" #: CModule.class:33 msgid "TermForms" msgstr "Terminalformulare" #: CProfile.class:114 msgid "Evaluator" msgstr "Auswerter" #: CProfile.class:116 msgid "Event loop" msgstr "Ereignisfolge" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Beispiele werden auf dem Gambas-Farm-Server gespeichert. Klicken Sie &1 um auf den Farm-Server zuzugreifen und sie herunterzuladen..." #: CProjectList.class:108 msgid "here" msgstr "hier" #: CProjectList.class:234 msgid "IDE extensions" msgstr "IDE Erweiterungen" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:456 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:260 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:855 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:64 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:949 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:292 #: FText.form:40 FTranslate.class:688 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:432 msgid "Cancel" msgstr "Abbrechen" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "Möchten Sie diese Software wirklich deinstallieren?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "Deinstallieren" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "Kann Software nicht deinstallieren:" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "Die Software wurde erfolgreich deinstalliert." #: CProjectTree.class:98 msgid "Files" msgstr "Dateien" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:128 FSelectIcon.form:32 msgid "Project" msgstr "Projekt" #: CProjectTree.class:373 msgid "Sources" msgstr "Quellen" #: CProjectTree.class:375 msgid "Connections" msgstr "Verbindungen" # gb-ignore #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:26 msgid "Data" msgstr "Daten" #: CRecentProject.class:68 FMain.class:754 msgid "Today" msgstr "Heute" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Gestern" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Vor zwei Tagen" #: CRecentProject.class:74 msgid "This week" msgstr "Diese Woche" #: CRecentProject.class:76 msgid "This month" msgstr "Diesen Monat" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Download abgebrochen" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "Die Prüfsumme des heruntergeladenen Pakets ist ungültig." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Kann Quellarchiv nicht dekomprimieren." #: CSoftware.class:361 msgid "Abort" msgstr "Abbrechen" #: CSoftware.class:361 FMain.class:2787 FMenu.class:99 msgid "Ignore" msgstr "Ignorieren" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Die folgenden Komponenten werden benötigt:" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "Kann Projekt nicht kompilieren." #: CSoftware.class:396 msgid "Unable to make executable." msgstr "Kann ausführbare Datei nicht erstellen." #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "Kann Quellenverzeichnis nicht installieren" #: CSoftware.class:675 msgid "yesterday" msgstr "gestern" #: CSoftware.class:677 msgid "&1 days ago" msgstr "vor &1 Tagen" #: CSoftware.class:683 msgid "last week" msgstr "letzte Woche" #: CSoftware.class:685 msgid "&1 weeks ago" msgstr "vor &1 Wochen" #: CSoftware.class:691 msgid "last month" msgstr "letzten Monat" #: CSoftware.class:693 msgid "&1 months ago" msgstr "vor &1 Monaten" #: CSoftware.class:699 msgid "last year" msgstr "letztes Jahr" #: CSoftware.class:701 msgid "on &1" msgstr "am &1" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "Kann Projekt nicht übertragen." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "Lokales Wurzelverzeichnins" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "Letzte Übertragung" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "Autor der letzten Übertragung" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "Datum der letzten Übertragung" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "Aktueller Zweig" #: CVersionControlGit.class:368 msgid "Origin" msgstr "Ursprung" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "Die aktuelle Branch is auf dem neusten Stand." #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "Eine zu übertragende Datei in der aktuellen Branch." #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "&1 zu übertragende Dateien in der aktuellen Branch." #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "Keine im aktuellen Projekt." #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "Eine im aktuellen Projekt." #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "&1 im aktuellen Projekt." #: CVersionControlGit.class:394 msgid "Status" msgstr "Status" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "URL des entfernten Repositoriums" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "Für dieses Projekt wird ein neues Git Repositorium angelegt." # gb-ignore #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2642 msgid "OK" msgstr "" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "Konflikt lösen." #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Datum" # gb-ignore #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "Remote-Revision" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "Autor des letzten Remote-Commits" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "Datum des letzten Remote-Commits" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Die Gambas Schriftart ist unter der SIL Open Font License veröffentlicht." #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "Dieses Programm ist unter der GNU General Public License veröffentlicht." #: Design.module:227 Project.module:2324 msgid "first" msgstr "erster" #: Design.module:229 Project.module:2326 msgid "second" msgstr "zweiter" #: Design.module:231 Project.module:2328 msgid "third" msgstr "dritter" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "Das Programm wurde durch CTRL+C unterbrochen." #: Design.module:464 msgid "The program has been terminated." msgstr "Das Programm wurde beendet." #: Design.module:473 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Das Programm hat den Wert\n" "&1 zurückgegeben" #: Design.module:745 msgid "The project has no test module." msgstr "" #: Design.module:1064 msgid "Output terminal" msgstr "Ausgabeterminal" #: Design.module:1092 msgid "No terminal emulator found." msgstr "Keine Terminalemulation gefunden." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Lizenz" #: FAbout.class:241 msgid "Financial support" msgstr "Finanzielle Unterstützung" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Über Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "-\n" #: FArguments.form:13 FMain.form:1799 msgid "Run with arguments" msgstr "" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:161 msgid "Reset" msgstr "Zurücksetzen" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Ausführen" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:463 FEditor.form:378 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:455 FImageEditor.form:395 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:154 FTextEditor.form:407 FTips.form:87 FTranslate.form:409 msgid "Close" msgstr "Schließen" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "Farbe" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "Farbe auswählen" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "System" #: FColorChooser.form:40 msgid "Free" msgstr "Frei" #: FComponentChooser.class:352 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "Noch nicht fertiggestellt, aber stabil" #: FComponentChooser.class:354 FProjectProperty.form:479 msgid "Experimental" msgstr "Experimentell" #: FComponentChooser.class:356 msgid "Stable" msgstr "Stabil" #: FComponentChooser.class:358 FProjectProperty.form:479 FToolBox.class:26 msgid "Deprecated" msgstr "Veraltet" #: FComponentChooser.class:578 msgid "This component is required by the following library:

&1" msgstr "Diese Komponente wird durch folgende Bibliothek benötigt:

&1" #: FComponentChooser.class:580 msgid "This component is required by the following libraries:

&1" msgstr "Diese Komponente wird durch folgende Bibliotheken benötigt:

&1" #: FComponentChooser.class:589 msgid "This component is required by:

&1" msgstr "Diese Komponente wird benötigt durch:

&1" #: FComponentChooser.class:590 msgid "Keep" msgstr "Behalten" #: FComponentChooser.class:590 FDebugInfo.form:235 msgid "Remove all" msgstr "Alle entfernen" #: FComponentChooser.class:695 msgid "These components are incompatible:
&1." msgstr "Diese Komponenten sind inkompatibel:
&1." #: FComponentChooser.class:708 msgid "The &1 component needs one of the following components:
&2." msgstr "Die &1 Komponente benötigt eine der folgenden Komponenten:
&2." #: FComponentChooser.class:715 msgid "The &1 component needs the &2 component." msgstr "Die &1 Komponente benötigt die &2 Komponente." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Komponente auswählen" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Veraltete Komponenten anzeigen" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:362 FForm.form:439 #: FHelpBrowser.form:78 FImageEditor.form:378 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:391 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "Neu laden" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:336 #: FTextEditor.form:782 msgid "Zoom in" msgstr "Vergrößern" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:344 #: FTextEditor.form:789 msgid "Zoom out" msgstr "Verkleinern" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:796 msgid "No zoom" msgstr "Kein Zoom" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Bearbeiten" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Diese Datei hat ein Problem, welches gelöst werden muss, um die Datei weiter zu verwenden." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Datei konnte nicht geladen werden:" # gb-ignore #: FConflict.class:139 FDebugInfo.class:55 FImageEditor.form:622 msgid "Text" msgstr "" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "Bild" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Die Datei wurde verändert.\n" "Wollen Sie den Dialog wirklich schließen?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Einige Konflikte sind noch nicht aufgelöst." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Der Konflikt kann nicht aufgelöst werden." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Die Datei wurde verändert!\n" "Wollen Sie wirklich eine andere Datei öffnen?" #: FConflict.class:267 msgid "Conflict files" msgstr "Konfligierende Dateien" #: FConflict.form:31 msgid "Version conflict" msgstr "Versionskonflikt" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:132 FForm.form:165 FImageEditor.form:139 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:147 msgid "Cut" msgstr "Ausschneiden" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:139 FForm.form:172 FImageEditor.form:147 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:154 FTranslate.form:114 msgid "Copy" msgstr "Kopieren" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:146 FForm.form:185 FImageEditor.form:154 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:161 msgid "Paste" msgstr "Einfügen" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:115 FFieldChooser.form:127 FForm.form:148 FImageEditor.form:120 #: FList.form:111 FOption.form:1741 FProjectVersion.form:252 #: FTextEditor.form:130 msgid "Undo" msgstr "Rückgängig" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:122 FForm.form:155 FImageEditor.form:128 #: FProjectVersion.form:258 FTextEditor.form:137 msgid "Redo" msgstr "Wiederholen" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:586 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:607 msgid "Indent" msgstr "Einrücken" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:594 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:615 msgid "Unindent" msgstr "Ausrücken" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:70 msgid "Open" msgstr "Öffnen" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:368 FForm.form:445 FImageEditor.form:385 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:397 #: FTranslate.form:232 msgid "Save" msgstr "Speichern" #: FConflict.form:160 msgid "Solve" msgstr "Auflösen" #: FConflictEditor.class:962 FEditor.class:2749 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(Deklarationen)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "Diese Datei enthält noch Konflikte." #: FConflictEditor.form:134 FEditor.form:152 FTextEditor.form:167 msgid "Advanced" msgstr "Fortgeschritten" #: FConflictEditor.form:138 FEditor.form:156 FTextEditor.form:171 msgid "Upper case" msgstr "Großschreibung" #: FConflictEditor.form:145 FEditor.form:163 FTextEditor.form:178 msgid "Lower case" msgstr "Kleinbuchstaben" #: FConflictEditor.form:155 FEditor.form:173 FTextEditor.form:203 msgid "Comment" msgstr "Auskommentieren" #: FConflictEditor.form:162 FEditor.form:180 FTextEditor.form:210 msgid "Uncomment" msgstr "Auskommentierung aufheben" #: FConflictEditor.form:172 FEditor.form:190 FPasteSpecial.form:19 #: FTextEditor.form:220 msgid "Paste special" msgstr "Spezielles Einfügen" #: FConflictEditor.form:183 FEditor.form:224 FImageEditor.form:223 #: FTextEditor.form:255 msgid "Select All" msgstr "Alles Auswählen" #: FConflictEditor.form:193 FEditor.form:239 FGotoLine.form:12 #: FTextEditor.form:265 msgid "Go to line" msgstr "Gehe zu Zeile" #: FConflictEditor.form:198 FEditor.form:244 FTextEditor.form:270 msgid "Bookmarks" msgstr "Lesezeichen" #: FConflictEditor.form:206 FEditor.form:259 FTextEditor.form:278 msgid "Find next" msgstr "Weitersuchen" #: FConflictEditor.form:213 FEditor.form:266 FTextEditor.form:285 msgid "Find previous" msgstr "Rückwärts Suchen" #: FConflictEditor.form:222 FEditor.form:275 FImageEditor.form:331 #: FMain.form:776 FTextEditor.form:294 FToolBox.class:26 msgid "View" msgstr "Ansicht" #: FConflictEditor.form:226 FEditor.form:279 FTextEditor.form:298 msgid "Automatic word wrap" msgstr "Automatischer Zeilenumbruch" #: FConflictEditor.form:233 FTextEditor.form:305 msgid "Indent with tab" msgstr "Mit TAB einrücken" #: FConflictEditor.form:240 FEditor.form:286 FTextEditor.form:315 msgid "No split" msgstr "Keine Teilung" #: FConflictEditor.form:246 FEditor.form:292 FTextEditor.form:321 msgid "Horizontal split" msgstr "Horizontal teilen" #: FConflictEditor.form:253 FEditor.form:299 FTextEditor.form:328 msgid "Vertical split" msgstr "Vertikal teilen" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:345 msgid "End of line" msgstr "Zeilenende" # gb-ignore #: FConflictEditor.form:263 FTextEditor.form:348 msgid "Unix" msgstr "" # gb-ignore #: FConflictEditor.form:268 FTextEditor.form:353 msgid "Windows" msgstr "" # gb-ignore #: FConflictEditor.form:273 FTextEditor.form:358 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:415 FMain.form:1054 FTextEditor.form:368 msgid "Open code" msgstr "Code öffnen" #: FConflictEditor.form:316 FEditor.form:388 FPasteSpecial.form:60 #: FTextEditor.form:417 msgid "Paste as string" msgstr "Als Zeichenkette einfügen" #: FConflictEditor.form:321 FEditor.form:393 FPasteSpecial.form:65 #: FTextEditor.form:422 msgid "Paste as multi-line string" msgstr "Als mehrzeilige Zeichenkette einfügen" #: FConflictEditor.form:326 FEditor.form:398 FPasteSpecial.form:50 #: FTextEditor.form:427 msgid "Paste as comments" msgstr "Als Kommentar einfügen" #: FConflictEditor.form:342 FTextEditor.form:455 msgid "Text editor" msgstr "Texteditor" # gb-ignore #: FConflictEditor.form:348 FForm.form:478 FTextEditor.form:461 msgid "Code" msgstr "" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Konflikt gelöst" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Vorheriger Konflikt" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Nächster Konflikt" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Meine Änderungen behalten" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Änderungen Anderer behalten" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Alle meine Änderungen behalten" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Alle Änderungen Anderer behalten" # gb-ignore #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:59 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "Typ" #: FConnectionEditor.class:61 msgid "Length" msgstr "Länge" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Standardwert" # gb-ignore #: FConnectionEditor.class:71 msgid "Collation" msgstr "" # gb-ignore #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Eindeutig" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Feld" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "SQL-Anfragen" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Verbindung zur Datenbank nicht möglich." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "Nicht speichern" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "Die Tabelle '&1' wurde verändert. Wollen Sie sie speichern?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Kein Datensatz" #: FConnectionEditor.class:500 msgid "One record" msgstr "Ein Datensatz" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 Datensätze" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Tabelle '&1' konnte nicht geladen werden." #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "Abfrage kann nicht ausgeführt werden." #: FConnectionEditor.class:722 Project.module:2644 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "unbegrenzt" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "Gleitkommazahl" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "Ganzzahl" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "Lange Ganzzahl" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "Seriell" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "Zeichenkette" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "Dieser Name wird bereits verwendet." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "Bitte geben Sie eine Zahl ein." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "Die Länge muss größer als 1 und kleiner als 255 sein." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "Typenunverträglichkeit." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "Dieser Name existiert bereits." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "Dieses Feld wird als Index verwendet." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "Die Tabelle '&1' hat keinen Primärschlüssel." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "Kann Tabelle '&1' nicht speichern." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "Wollen Sie Tabelle '&1' wirklich löschen?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "Kann Tabelle '&1' nicht löschen." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "Wollen Sie wirklich alle ausgewählten Zeilen löschen?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "Wollen Sie diese Abfrage wirklich löschen?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Verbindungseditor" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Systemtabellen anzeigen" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Neue Tabelle" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Tabelle löschen" #: FConnectionEditor.form:134 FDebugInfo.form:211 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:427 FTestSuite.class:292 msgid "Remove" msgstr "Entfernen" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Tabelle umbenennen" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Umbenennen " #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Tabelle kopieren" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Tabelle einfügen" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Textdatei importieren" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:429 msgid "Import" msgstr "Importieren" #: FConnectionEditor.form:217 msgid "Run query" msgstr "Abfrage ausführen" #: FConnectionEditor.form:223 msgid "New query" msgstr "Neue Abfrage" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "Neu" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "Abfrage entfernen" #: FConnectionEditor.form:239 FDebugInfo.class:279 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:855 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Löschen" #: FConnectionEditor.form:309 msgid "Fields" msgstr "Felder" #: FConnectionEditor.form:325 FMain.class:2227 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Hinzufügen" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Nach &unten" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Nach oben" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "Feldliste kopieren" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "Indizes" #: FConnectionEditor.form:389 msgid "New index" msgstr "Neuer Index" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "Bearbeiten" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "In eine CSV-Datei exportieren" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportieren" #: FConnectionEditor.form:492 FForm.form:192 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Löschen" #: FConnectionEditor.form:500 FForm.form:226 msgid "Select all" msgstr "Alles Auswählen" #: FConnectionEditor.form:508 FForm.form:238 msgid "Unselect all" msgstr "Alle abwählen" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Gambas 3 Projektkonvertierung" #: FCrash.class:73 FTranslate.class:251 Project.module:4814 msgid "The '&1' command has failed." msgstr "Das '&1'-Kommando schlug fehl." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Fehlerbericht konnte nicht gesendet werden." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "Das Programm wurde unvorhergesehen beendet!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Bitten beschreiben Sie hier, wie der Absturz zu reproduzieren ist." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Gambas-Interpreter-Absturz" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "Fehlerbericht per Mail senden" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "Projekt nicht an die Mail anhängen" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Keine Eltern)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Kann Datei nicht hinzufügen." #: FCreateFile.form:37 msgid "New file" msgstr "Neue Datei" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:107 msgid "Options" msgstr "Optionen" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Breite" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Höhe" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Verwaltung von Dialogboxen" #: FCreateFile.form:155 msgid "Parent class" msgstr "Elternklasse" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportiert" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Automatische Instanz" #: FCreateFile.form:180 msgid "Not creatable" msgstr "Nicht erstellbar" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Automatische Erweiterung" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Die Projekt-Diagnose ist fehlgeschlagen." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Kann Projekt nicht anlegen!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a project template." msgstr "Bitte wählen Sie ein Template aus" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Bitte geben Sie den Ort des Repositories an." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Neues Projekt" #: FCreateProject.form:46 msgid "Project type" msgstr "Projekttyp" #: FCreateProject.form:82 FProjectEditor.form:43 msgid "Parent directory" msgstr "Elternverzeichnis" #: FCreateProject.form:90 msgid "Project details" msgstr "Projektdetails" #: FCreateProject.form:99 msgid "Project name" msgstr "Projektname" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Der Projektname ist der Name des Projektverzeichnisses." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "Das endgültige Verzeichnis des Projekts ist: " #: FCreateProject.form:134 msgid "Project title" msgstr "Projekttitel" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "Der Projekttitel ist der Name der Anwendung." #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "Projekt kann übersetzt werden" #: FCreateProject.form:159 FProjectChooser.form:77 ProjectBox.class:307 msgid "Open in another window" msgstr "In neuem Fenster öffnen" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Archiv" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Der Projektspeicher wird direkt an den 'svn checkout'-Befehl gesendet." #: FDebugButton.form:33 FDebugInfo.form:100 msgid "Debugging" msgstr "Fehlersuche" #: FDebugButton.form:42 FDebugInfo.form:194 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Konsole" #: FDebugButton.form:51 FDebugInfo.form:202 MTheme.module:6 msgid "Breakpoints" msgstr "Haltepunkte" #: FDebugButton.form:60 FDebugInfo.form:264 msgid "Warnings" msgstr "Warnungen" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:305 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:365 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "Versionskontrolle" #: FDebugButton.form:96 FDebugInfo.form:446 msgid "Search result" msgstr "Suchergebnis" #: FDebugExpr.class:4 msgid "not available" msgstr "nicht verfügbar" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Wert" #: FDebugExpr.class:511 msgid "Key" msgstr "Schlüssel" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Symbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Überwachung" #: FDebugExpr.form:38 msgid "Print to console" msgstr "In Konsole schreiben" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Alle Symbole anzeigen" #: FDebugExpr.form:88 msgid "No element" msgstr "Kein Element" #: FDebugInfo.class:46 FEditor.class:411 FImageEditor.form:592 #: FImportTable.class:66 msgid "Line" msgstr "Zeile" #: FDebugInfo.class:47 FProfile.class:711 msgid "Function" msgstr "Funktion" #: FDebugInfo.class:51 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Datei" #: FDebugInfo.class:54 msgid "Col." msgstr "Spalte" #: FDebugInfo.class:69 FImportTable.class:68 msgid "Message" msgstr "Nachricht" #: FDebugInfo.class:126 msgid "native code" msgstr "Nativer Code" #: FDebugInfo.class:206 msgid "Watch expressions" msgstr "Ausdrücke überwachen" #: FDebugInfo.class:279 msgid "Do you want to clear the expression list ?" msgstr "Wollen Sie die Liste wirklich leeren ?" #: FDebugInfo.class:1113 msgid "File not loaded" msgstr "Datei nicht geladen" #: FDebugInfo.class:1256 msgid "Current object" msgstr "Aktuelles Objekt" #: FDebugInfo.class:1307 msgid "Local variables" msgstr "Lokale Variablen" #: FDebugInfo.class:1566 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1572 #, fuzzy msgid "Test has been aborted." msgstr "Das Programm wurde beendet." #: FDebugInfo.class:1578 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:80 FMain.form:587 msgid "Debug" msgstr "Debuggen" #: FDebugInfo.form:130 msgid "Remove current expression" msgstr "Aktuellen Ausdruck entfernen" #: FDebugInfo.form:136 msgid "Add expression" msgstr "Ausdruck hinzufügen" #: FDebugInfo.form:209 msgid "Remove breakpoint" msgstr "Haltepunkt entfernen" #: FDebugInfo.form:217 msgid "Disable breakpoint" msgstr "Haltepunkt deaktivieren" #: FDebugInfo.form:219 msgid "Disable" msgstr "Deaktivieren" #: FDebugInfo.form:225 msgid "Enable breakpoint" msgstr "Haltepunkt aktivieren" #: FDebugInfo.form:227 msgid "Enable" msgstr "Aktivieren" #: FDebugInfo.form:233 msgid "Remove all breakpoints" msgstr "Alle Haltepunkte entfernen" #: FDebugInfo.form:283 msgid "Tasks" msgstr "Aufgaben" #: FDebugInfo.form:312 FOutput.form:78 msgid "Clear console" msgstr "Konsole löschen" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:379 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "Übermitteln" #: FDebugInfo.form:386 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Synchronisieren" #: FDebugInfo.form:393 FMain.form:532 msgid "Revert all changes" msgstr "Alle Änderungen zurücksetzen" #: FDebugInfo.form:400 FMain.form:538 msgid "Add everything to repository" msgstr "Alles zum Repositorium hinzufügen" #: FDebugInfo.form:454 msgid "Cancel current search" msgstr "Laufende Suche abbrechen" #: FDebugInfo.form:470 msgid "Show search window" msgstr "Suchfenster anzeigen" #: FDebugInfo.form:477 msgid "Search again" msgstr "Neue Suche" #: FDebugInfo.form:527 FSearch.class:527 FTranslate.class:650 msgid "Search string cannot be found." msgstr "Suchstring wurde nicht gefunden." #: FEditor.class:410 msgid "Column" msgstr "" #: FEditor.class:412 msgid "Overwrite" msgstr "" #: FEditor.form:197 FTextEditor.form:227 msgid "Format code" msgstr "Code formatieren" #: FEditor.form:203 msgid "Sort procedures" msgstr "Prozeduren sortieren" #: FEditor.form:233 msgid "Go to" msgstr "Gehe zu" #: FEditor.form:252 msgid "Find definition" msgstr "Definition suchen" #: FEditor.form:309 FMain.form:1608 msgid "Run until current line" msgstr "Bis zur aktuellen Zeile ausführen" #: FEditor.form:316 msgid "Toggle breakpoint" msgstr "Haltepunkt setzen/löschen" #: FEditor.form:323 msgid "Watch expression" msgstr "Ausdruck überwachen" #: FEditor.form:332 msgid "Open form" msgstr "Formular öffnen" #: FEditor.form:339 FMain.form:1139 msgid "Run this class" msgstr "Klasse ausführen" #: FEditor.form:349 FForm.form:432 FImageEditor.form:370 FTextEditor.form:378 msgid "Locked" msgstr "Gesperrt" #: FEditor.form:355 FHelpBrowser.form:119 FTextEditor.form:384 msgid "Print" msgstr "Drucken" # gb-ignore #: FEditor.form:414 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "" #: FEditor.form:427 FForm.form:485 FTextEditor.form:468 msgid "Show modifications" msgstr "Änderungen anzeigen" #: FEditor.form:436 FForm.form:494 FTextEditor.form:477 msgid "Previous modification" msgstr "Vorherige Änderung" #: FEditor.form:443 FForm.form:501 FTextEditor.form:484 msgid "Next modification" msgstr "Nächste Änderung" #: FEditor.form:576 FTextEditor.form:597 msgid "Insert special character" msgstr "Spezielles Zeichen einfügen" #: FEditor.form:619 FTextEditor.form:640 msgid "Make code pretty" msgstr "Code ordentlich gestalten" #: FEditor.form:684 FTextEditor.form:684 msgid "Procedure list" msgstr "Prozedurliste" #: FEditor.form:708 FImageEditor.form:773 FTextEditor.form:727 msgid "Lock / unlock file" msgstr "Datei sperren / entsperren" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV-Dateien" #: FExportData.class:113 msgid "Unable to export data." msgstr "Daten konnten nicht exportiert werden." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Überschreiben" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Diese Datei existiert bereits.\n" "\n" "Wollen Sie sie überschreiben?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Trennerzeichen" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Zeichen einschließen" #: FExportData.form:54 msgid "Export field names" msgstr "Feldnamen exportieren" #: FExportData.form:60 msgid "Export selected records only" msgstr "Nur ausgewählte Datensätze exportieren" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Farm-Server" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Authentifizierung fehlgeschlagen." # gb-ignore #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" # gb-ignore #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Benutzer" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Passwort" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Passwort merken" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Anonym sein" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Bitte geben Sie eine valide EMail-Adresse an." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Passwörter stimmt nicht überein." #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Benutzer konnte nicht registriert werden." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" "Sie wurden erfolgreich registriert.\n" "\n" "Sie werden bald eine Bestätigungsmail erhalten." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Registrieren" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Passwort bestätigen" # gb-ignore #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" "Eine Bestätigungsmail wird an die angegebene EMail-Adresse gesandt. Klicken Sie auf den enthaltenen Link um Ihren Account zu aktivieren.\n" "

\n" "Ihre EMail-Adresse wird nicht auf dem Publishing-Server gespeichert." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Verbindung konnte nciht geöffnet werden." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Tabellenfelder konnten nicht gelesen werden." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Feldliste bearbeiten" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Ein Feld auswählen" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Verbindung" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabelle" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "Diese Datei ist gesperrt und wird bei der nächsten Übermittlung gelöscht." #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "Diese Datei hat keine Versions-Nr. und muss zum Repository hinzugefügt werden." #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "Diese Datei wurde seit der letzten Übermittlung nicht verändert." #: FFileInfoVC.class:88 FMain.class:1252 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:432 msgid "Continue" msgstr "Fortsetzen" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:432 msgid "You are going to cancel your changes!" msgstr "Sie verwerfen jetzt Ihre Änderungen!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Änderungen" #: FFileInfoVC.form:44 FVersionControl.form:52 msgid "History" msgstr "Geschichte" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "Änderungen rückgängig machen" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" # gb-ignore #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Gambas Modul" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "Gambas Testmodul" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Gambas-Klasse" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "'&1' eigenschaften" #: FFontChooser.form:12 msgid "Select a font" msgstr "Schriftart auswählen" #: FForm.class:136 msgid "Bad form file" msgstr "Die Formulardatei ist defekt" #: FForm.class:284 msgid "Unknown control: &1" msgstr "Unbekanntes Steuerelement: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "Für das Steuerelement &1 fehlt eine Komponente" #: FForm.class:1923 msgid "Cannot paste data." msgstr "Kann Daten nicht einfügen." #: FForm.form:179 msgid "Copy at the same place" msgstr "An denselben Platz kopieren" #: FForm.form:199 msgid "Delete container only" msgstr "Nur den Container löschen" #: FForm.form:206 msgid "Embed into a container" msgstr "In einen Container einbetten" #: FForm.form:212 msgid "Change into" msgstr "Transformieren nach" #: FForm.form:220 msgid "Select" msgstr "Auswählen" #: FForm.form:233 msgid "Select parent" msgstr "Elter auswählen" #: FForm.form:246 msgid "Arrangement" msgstr "Anordnung" #: FForm.form:250 msgid "Bring to foreground" msgstr "In den Vordergrund" #: FForm.form:257 msgid "Send to background" msgstr "In den Hintergrund" # gb-ignore #: FForm.form:267 msgid "Horizontal" msgstr "" #: FForm.form:274 msgid "Rows" msgstr "Zeilen" #: FForm.form:280 msgid "Vertical" msgstr "Vertikal" #: FForm.form:287 msgid "Columns" msgstr "Spalten" #: FForm.form:296 msgid "Center horizontally" msgstr "Horizontal zentrieren" #: FForm.form:302 msgid "Center vertically" msgstr "Vertikal zentrieren" #: FForm.form:308 msgid "Alignment" msgstr "Ausrichtung" #: FForm.form:312 msgid "Align to left" msgstr "Nach links ausrichten" #: FForm.form:318 msgid "Align to right" msgstr "Nach rechts ausrichten" #: FForm.form:324 msgid "Align to top" msgstr "Nach oben ausrichten" #: FForm.form:330 msgid "Align to bottom" msgstr "Nach unten ausrichten" #: FForm.form:339 msgid "Same width" msgstr "Gleiche Breite" #: FForm.form:345 msgid "Same height" msgstr "Gleiche Höhe" #: FForm.form:354 msgid "Show tab" msgstr "Tab anzeigen" #: FForm.form:362 msgid "Move tab" msgstr "Tab verschieben" #: FForm.form:367 msgid "First" msgstr "Anfang" #: FForm.form:374 FSearch.form:197 FTips.form:75 msgid "Previous" msgstr "Vorheriger" #: FForm.form:381 FSearch.form:191 FTips.form:81 msgid "Next" msgstr "Nächster" #: FForm.form:388 msgid "Last" msgstr "Letzte Stelle" #: FForm.form:399 FMenu.form:70 msgid "Menu editor" msgstr "Menüeditor" #: FForm.form:408 msgid "Event" msgstr "Ereignis" #: FForm.form:422 msgid "Run this form" msgstr "Form ausführen" #: FForm.form:605 msgid "Toggle grid" msgstr "Raster ein/aus" #: FForm.form:614 FImageEditor.form:518 msgid "Toggle information tooltip" msgstr "Informationstooltip ein/aus" #: FForm.form:733 msgid "Move tab first" msgstr "Tab an den Anfang verschieben" #: FForm.form:740 msgid "Move tab left" msgstr "Tab nach links verschieben" #: FForm.form:747 msgid "Move tab right" msgstr "Tab nach rechts verschieben" #: FForm.form:754 msgid "Move tab last" msgstr "Tab ans Ende verschieben" #: FForm.form:782 FOption.form:285 msgid "Bold" msgstr "Fett" #: FForm.form:790 msgid "Italic" msgstr "Kursiv" #: FForm.form:798 FOption.form:290 msgid "Underline" msgstr "Unterstrichen" #: FForm.form:806 msgid "Bigger font" msgstr "Größere Schrift" #: FForm.form:814 msgid "Smaller font" msgstr "Kleinere Schrift" #: FForm.form:822 FOption.form:1436 msgid "Default font" msgstr "Standardschriftart" #: FForm.form:830 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Hintergrund" #: FForm.form:838 msgid "Foreground" msgstr "Vordergrund" #: FForm.form:849 msgid "Lock / unlock form" msgstr "Formular sperren / entsperren" #: FFormStack.form:14 FMain.form:1979 msgid "Hierarchy" msgstr "Hierarchie" #: FFormStack.form:24 msgid "Move top" msgstr "Nach ganz oben verschieben" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "Nach oben verschieben" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "Nach unten verschieben" #: FFormStack.form:42 msgid "Move bottom" msgstr "Ans Ende verschieben" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "Standardsprache" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Hilfe Browser" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "Zeige Hilfeverzeichnis" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Zurück" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "Vorwärts" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "IDE-Tastenkürzel" # gb-ignore #: FHelpShortcut.form:25 msgid "Debugger" msgstr "" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "Übersetzung" #: FImageEditor.form:160 msgid "Action" msgstr "Aktion" #: FImageEditor.form:165 msgid "Crop" msgstr "Abschneiden" #: FImageEditor.form:173 FImageProperty.form:305 msgid "Horizontal flip" msgstr "Horizontal spiegeln" #: FImageEditor.form:180 FImageProperty.form:299 msgid "Vertical flip" msgstr "Vertikal spiegeln" #: FImageEditor.form:187 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "Entgegen Uhrzeigersinn drehen" #: FImageEditor.form:195 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "Im Uhrzeigersinn drehen" #: FImageEditor.form:206 msgid "Resize" msgstr "Größe ändern" #: FImageEditor.form:213 msgid "Rotate" msgstr "Rotieren" #: FImageEditor.form:230 msgid "Hide selection" msgstr "Auswahl verstecken" #: FImageEditor.form:236 MTheme.module:6 msgid "Selection" msgstr "Auswahl" #: FImageEditor.form:241 msgid "Invert selection" msgstr "Auswahl invertieren" #: FImageEditor.form:249 msgid "Duplicate selection" msgstr "Auswahl duplizieren" #: FImageEditor.form:257 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "Offset-Auswahl" #: FImageEditor.form:267 msgid "Union" msgstr "Vereinigung" #: FImageEditor.form:273 msgid "Difference" msgstr "Unterschied" #: FImageEditor.form:279 msgid "Intersection" msgstr "Überschneidung" #: FImageEditor.form:285 msgid "Exclusive or" msgstr "Exklusiv-Oder" #: FImageEditor.form:294 msgid "Shape grid" msgstr "Formgitter" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Zoom normal" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Zoom anpassen" #: FImageEditor.form:405 msgid "Save as JPEG" msgstr "Speichern als JPEG" #: FImageEditor.form:411 msgid "Save as PNG" msgstr "Speichern als PNG" #: FImageEditor.form:417 msgid "Save as BMP" msgstr "Speichern als BMP" #: FImageEditor.form:424 msgid "Save as TIFF" msgstr "Speichern als TIFF" #: FImageEditor.form:431 msgid "Image editor" msgstr "Bildeditor" #: FImageEditor.form:509 msgid "Drawing grid" msgstr "Zeichengitter" #: FImageEditor.form:561 msgid "Move" msgstr "Bewegen" #: FImageEditor.form:572 msgid "Draw" msgstr "Zeichnen" #: FImageEditor.form:582 msgid "Erase" msgstr "Löschen" #: FImageEditor.form:602 msgid "Rectangle" msgstr "Rechteck" # gb-ignore #: FImageEditor.form:612 msgid "Ellipse" msgstr "" #: FImageEditor.form:632 msgid "Magic wand" msgstr "Zauberstab" #: FImageEditor.form:649 msgid "Edit selection" msgstr "Auswahl ändern" #: FImageEditor.form:752 msgid "Resize or stretch image" msgstr "Bildgröße ändern oder stretchen" #: FImageEditor.form:761 FImageRotate.form:11 msgid "Rotate image" msgstr "Bild rotieren" # gb-ignore #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "Rand" #: FImageProperty.class:790 msgid "System clipboard" msgstr "System-Clipboard" #: FImageProperty.class:1269 msgid "Arrow" msgstr "Pfeil" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "Pfeil #2" #: FImageProperty.class:1272 msgid "Triangle" msgstr "Dreieck" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "Rechtwinkliges Dreieck" # gb-ignore #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" # gb-ignore #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "Gradient" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Linearer Gradient" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Radialer Gradient" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "Gradient-Haltepunkt hinzufügen" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "Gradienten-Haltepunkt entfernen" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "Farbe für Gradienten-Haltepunkt wählen" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "Gradient umkehren" # gb-ignore #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" # gb-ignore #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "Formen" #: FImageProperty.form:364 msgid "Stroke" msgstr "Zeichnen" #: FImageProperty.form:372 FTranslate.class:1766 msgid "Fill" msgstr "Füllen" #: FImageProperty.form:392 msgid "Colorize" msgstr "Färben" #: FImageProperty.form:400 msgid "Desaturate" msgstr "Entsättigen" #: FImageProperty.form:408 msgid "Make transparent" msgstr "Transparent machen" #: FImageProperty.form:416 FOption.form:1754 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 msgid "Line cap" msgstr "Linienabschluss" #: FImageProperty.form:431 msgid "Line join" msgstr "Linie verbinden" #: FImageProperty.form:436 msgid "Fill rule" msgstr "Füllregel" #: FImageProperty.form:454 msgid "Opacity" msgstr "Undurchsichtigkeit" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Größe" #: FImageProperty.form:490 msgid "Tolerance" msgstr "Toleranz" #: FImageProperty.form:509 msgid "Roundness" msgstr "Rundheit" #: FImageProperty.form:535 msgid "Effects" msgstr "Effekte" #: FImageProperty.form:545 msgid "Brightness" msgstr "Helligkeit" #: FImageProperty.form:564 msgid "Contrast" msgstr "Kontrast" # gb-ignore #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "Helligkeit" # gb-ignore #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "Sättigung" #: FImageProperty.form:659 msgid "Blur" msgstr "Verblassen" #: FImageProperty.form:676 msgid "Transparency" msgstr "Transparenz" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:338 msgid "Preview" msgstr "Vorschau" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "Anwenden" #: FImageProperty.form:745 msgid "Centered" msgstr "Zentriert" #: FImageProperty.form:755 msgid "Right align" msgstr "Rechtsausrichtung" #: FImageProperty.form:764 msgid "Left align" msgstr "Linksausrichtung" #: FImageProperty.form:777 msgid "Top align" msgstr "Oben-Ausrichtung" #: FImageProperty.form:786 msgid "Middle align" msgstr "Mittenausrichtung" #: FImageProperty.form:796 msgid "Baseline align" msgstr "Grundlinien-Ausrichtung" #: FImageProperty.form:805 msgid "Bottom align" msgstr "Unten-Ausrichtung" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "Gitterauflösung" #: FImageProperty.form:859 msgid "Grid snap" msgstr "Gitter einrasten" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "Diagonalen zeichnen" #: FImageQuality.form:10 msgid "Image quality" msgstr "Bildqualität" #: FImageResize.form:25 msgid "Resize image" msgstr "Bildgröße ändern" #: FImageResize.form:64 msgid "Resize and center" msgstr "Größe ändern und zentrieren" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "Größe ändern und horizontal zentrieren" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "Größe ändern und vertikal zentrieren" #: FImageResize.form:85 msgid "Stretch image" msgstr "Image stretchen" #: FImageResize.form:113 msgid "Add a border" msgstr "Rahmen hinzufügen" #: FImageResize.form:118 msgid "Ratio" msgstr "Verhältnis" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas-Klassen" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas Module" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "Gambas Testmodule" # gb-ignore #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML-Dateien" #: FImportFile.class:33 msgid "Javascript files" msgstr "Javascript-Dateien" #: FImportFile.class:33 msgid "Picture files" msgstr "Bilddateien" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Kann Datei nicht importieren." #: FImportFile.form:9 msgid "Import files" msgstr "Dateien importieren" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Symbolische Links erstellen" #: FImportTable.class:58 FSearch.form:179 FTranslate.class:1383 msgid "All files" msgstr "Alle Dateien" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Automatischer Schlüssel)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Feld_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Zu wenige Werte" #: FImportTable.class:393 msgid "Too many values" msgstr "Zu viele Werte" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Durch Anwender abgebrochen" #: FImportTable.class:427 msgid "No record imported." msgstr "Kein Datensatz importiert." #: FImportTable.class:429 msgid "One record imported." msgstr "Ein Datensatz importiert." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 Datensätze importiert" #: FImportTable.form:35 msgid "Import file" msgstr "Datei importieren" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Zu importierende CSV-Datei auswählen" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Quelle" #: FImportTable.form:78 msgid "Charset" msgstr "Zeichensatz" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Entferne überflüssige Leerstellen und Tabs" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Erste Zeilen ignorieren" #: FImportTable.form:139 msgid "Line(s)" msgstr "Zeile(n)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Ziel" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "Die erste Zeile enthält Feldnamen." #: FImportTable.form:176 msgid "Key field" msgstr "Schlüsselfeld" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "" #: FLayout.class:30 FOption.class:1717 msgid "Override" msgstr "Überschreiben" #: FLayout.class:30 msgid "This layout already exists." msgstr "" #: FLayout.form:14 msgid "Save layout" msgstr "" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "Element &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Wollen Sie die Liste wirklich löschen?" #: FList.form:25 msgid "Edit list property" msgstr "Listeneigenschaften bearbeiten" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "Einfügen" #: FList.form:87 msgid "Invert" msgstr "Umkehren" #: FMain.class:260 msgid "Do you really want to delete this link ?" msgstr "Wollen Sie diesen Link wirklich löschen?" #: FMain.class:263 msgid "Do you really want to delete this directory ?" msgstr "Wollen Sie dieses Verzeichnis wirklich löschen ?" #: FMain.class:275 msgid "Do you really want to delete this file ?" msgstr "Wollen Sie diese Datei wirklich löschen ?" #: FMain.class:282 msgid "Cannot delete file or directory" msgstr "Datei oder Verzeichnis kann nicht gelöscht werden" #: FMain.class:300 msgid "File or directory does not exist anymore." msgstr "Datei oder Verzeichnis existiert nicht mehr." #: FMain.class:775 msgid "Sort history" msgstr "Verlauf sortieren" #: FMain.class:779 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "Nach Datum sortieren" #: FMain.class:779 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "Nach Namen sortieren" #: FMain.class:779 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "Nach Pfad sortieren" #: FMain.class:791 msgid "&Clear history" msgstr "&Verlauf leeren" #: FMain.class:971 msgid "New folder" msgstr "Neuer Ordner" #: FMain.class:1042 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "Die GNU-Übersetzungstools sind nicht auf Ihrem System installiert.\n" "\n" "Bitte installieren Sie diese, um Übersetzungen durchzuführen." #: FMain.class:1781 msgid "Unable to drop file into the project." msgstr "Datei konnte nicht ins Projekt eingefügt werden." #: FMain.class:1906 msgid "All backup or generated files will be removed from the project directory." msgstr "Alle Backup- oder generierte Dateien werden aus dem Projektverzeichnis gelöscht." #: FMain.class:1906 msgid "Clean" msgstr "Aufräumen" #: FMain.class:2227 msgid "Do you really want to add every file to the repository?" msgstr "Wollen Sie wirklich jede Datei zum Repositorium hinzufügen?" #: FMain.class:2365 msgid "Choose a profile" msgstr "Profil wählen" #: FMain.class:2366 msgid "Profile for &1 project" msgstr "Profil für Projekt &1" #: FMain.class:2614 FProperty.class:1034 msgid "Select a file" msgstr "Wählen Sie eine Datei" #: FMain.class:2629 msgid "This file is located inside the project." msgstr "Diese Datei ist innerhalb des Projekts." #: FMain.class:2787 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Die Datei wurde modifiziert.\n" "\n" "Alle Änderungen gehen verloren." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Projekt öffnen" #: FMain.form:313 msgid "Open recent" msgstr "Zuletzt geöffnet" #: FMain.form:321 msgid "Open example" msgstr "Beispiel öffnen" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "Datei öffnen" #: FMain.form:339 msgid "Save project" msgstr "Projekt speichern" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Projekt speichern als" #: FMain.form:358 msgid "Reload project" msgstr "Projekt neu laden" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Beenden" #: FMain.form:402 Project.module:6991 msgid "Save as" msgstr "Speichern unter" #: FMain.form:442 msgid "Compile" msgstr "Kompilieren" #: FMain.form:449 msgid "Compile All" msgstr "Alles Kompilieren" #: FMain.form:459 msgid "Translate" msgstr "Übersetzen" #: FMain.form:468 msgid "Make" msgstr "Erstellen" #: FMain.form:472 msgid "Executable" msgstr "Ausführbare Datei" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "Quellarchiv" #: FMain.form:486 msgid "Installation package" msgstr "Installationspaket" # gb-ignore #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "Anlegen" #: FMain.form:525 msgid "Undo synchronization" msgstr "Synchronisation zurücknehmen" #: FMain.form:544 msgid "Branch" msgstr "Zweig" #: FMain.form:549 msgid "Put under version control" msgstr "Unter Versionskontrolle stellen" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "Veröffentlichen" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "Aufräumen" #: FMain.form:570 msgid "Refresh" msgstr "Aktualisieren" #: FMain.form:599 msgid "Run with" msgstr "Ausführen mit" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:29 msgid "Test suites" msgstr "" # gb-ignore #: FMain.form:623 msgid "Pause" msgstr "" # gb-ignore #: FMain.form:630 msgid "Stop" msgstr "" #: FMain.form:637 msgid "Step" msgstr "Einzelschritt" #: FMain.form:644 msgid "Forward" msgstr "Prozedurschritt" #: FMain.form:651 msgid "Finish" msgstr "Abschließen" #: FMain.form:660 msgid "Use terminal emulator" msgstr "Terminalemulator benutzen" #: FMain.form:666 msgid "Redirect standard error output" msgstr "Standardfehlerausgabe umleiten" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "Eingebetteten HTTP-Server benutzen" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "GUI-Komponente" #: FMain.form:713 msgid "Current desktop" msgstr "Aktueller Desktop" #: FMain.form:750 msgid "Activate profiling" msgstr "Profilierung aktivieren" #: FMain.form:756 msgid "Open profile" msgstr "Profil öffnen" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "Alle Haltepunkte löschen" #: FMain.form:770 msgid "Close all debug windows" msgstr "Alle Debug-Fenster schließen" #: FMain.form:790 msgid "Properties sheet" msgstr "Eigenschaftenfenster" #: FMain.form:808 msgid "Status bar" msgstr "Statusleiste" #: FMain.form:815 msgid "Hide menubar" msgstr "Menüleiste verbergen" #: FMain.form:839 msgid "Close all windows" msgstr "Alle Fenster schließen" #: FMain.form:846 msgid "Tools" msgstr "Werkzeuge" #: FMain.form:850 msgid "Find" msgstr "Suchen" #: FMain.form:856 FSearch.form:82 msgid "Replace" msgstr "Ersetzen" #: FMain.form:866 msgid "Browse project" msgstr "Projekt durchsuchen" #: FMain.form:873 msgid "Open a terminal" msgstr "Ein Terminal öffnen" #: FMain.form:880 msgid "Send project by mail" msgstr "Projekt per Mail senden" #: FMain.form:886 msgid "Update all forms" msgstr "Alle Formulare aktualisieren" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "Software-Farm" #: FMain.form:904 msgid "Shortcuts" msgstr "Kurzbefehle" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Einstellungen" #: FMain.form:924 msgid "Directory" msgstr "Verzeichnis" #: FMain.form:929 msgid "Project link" msgstr "Verknüpfung zum Projekt" #: FMain.form:938 msgid "Module" msgstr "Modul" #: FMain.form:945 msgid "Test module" msgstr "Testmodul" #: FMain.form:1004 msgid "HTML file" msgstr "HTML-Datei" #: FMain.form:1011 msgid "Style sheet" msgstr "Stilvorlage" #: FMain.form:1018 msgid "Javascript file" msgstr "Javascript-Datei" #: FMain.form:1025 msgid "Other" msgstr "Sonstige " #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Kürzlich" #: FMain.form:1059 msgid "Open in file manager" msgstr "In Dateimanager öffnen" #: FMain.form:1064 msgid "Open in project" msgstr "Im Projekt öffnen" #: FMain.form:1068 msgid "Open with" msgstr "Öffnen mit" #: FMain.form:1100 msgid "Duplicate" msgstr "Duplizieren" #: FMain.form:1123 msgid "Copy file path" msgstr "Dateipfad kopieren" #: FMain.form:1132 msgid "Startup class" msgstr "Startklasse" #: FMain.form:1147 msgid "Add to repository" msgstr "Zum Repository hinzufügen" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtern" #: FMain.form:1155 msgid "Show exported classes" msgstr "Exportierte Klassen anzeigen" #: FMain.form:1160 msgid "Show added files" msgstr "Zeige hinzugefügte Dateien an" #: FMain.form:1165 msgid "Show modified files" msgstr "Geänderte Dateien anzeigen" #: FMain.form:1170 msgid "Show files in conflict" msgstr "Dateikonflikte anzeigen" #: FMain.form:1175 msgid "Show untranslatable files" msgstr "" #: FMain.form:1180 msgid "Show compressed files" msgstr "" #: FMain.form:1188 msgid "Show all" msgstr "Alles anzeigen" #: FMain.form:1200 msgid "Do not translate" msgstr "Nicht übersetzen" #: FMain.form:1207 msgid "Compress all" msgstr "Alle komprimieren" #: FMain.form:1213 msgid "Uncompress all" msgstr "Alles entpacken" #: FMain.form:1219 msgid "Compress file into the executable" msgstr "" #: FMain.form:1226 FTextEditor.form:234 msgid "Compress file" msgstr "Datei komprimieren" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "Neue Verbindung" # gb-ignore #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Tipps des Tages" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "Tastenkürzel" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "Systeminformation" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Projekteigenschaften" #: FMain.form:1429 msgid "Refresh project" msgstr "Projekt aktualisieren" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3197 msgid "Make executable" msgstr "Ausführbare Datei erstellen" #: FMain.form:1471 msgid "Make source archive" msgstr "Quellarchiv erstellen" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "Installationspaket erstellen" #: FMain.form:1509 msgid "Toolbox" msgstr "Werkzeugsammlung" #: FMain.form:1527 FSearch.form:68 msgid "Search" msgstr "Suchen" #: FMain.form:1551 msgid "Compile all" msgstr "Alles Kompilieren" #: FMain.form:1600 msgid "Finish current function" msgstr "Aktuelle Funktion abschließen" #: FMain.form:1616 msgid "Show menubar" msgstr "Menuleiste anzeigen" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "Software veröffentlichen" #: FMain.form:1706 msgid "&File" msgstr "&Datei" #: FMain.form:1730 msgid "&Project" msgstr "&Projekt" #: FMain.form:1742 msgid "&Debug" msgstr "&Debuggen" #: FMain.form:1754 msgid "&View" msgstr "&Ansicht" #: FMain.form:1766 msgid "&Tools" msgstr "&Werkzeuge" # gb-ignore #: FMain.form:1778 msgid "&?" msgstr "" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1907 msgid "Show project tree" msgstr "Projektbaum anzeigen" #: FMain.form:1915 msgid "Show properties sheet" msgstr "Eigenschaftenblatt anzeigen" #: FMain.form:1986 msgid "Show property help" msgstr "Immobilienhilfe anzeigen" #: FMain.form:1994 msgid "Show controls" msgstr "Steuerelemente anzeigen" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas-Anwendungen" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "Version inkrementieren" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Debugging-Informationen in der ausführbaren Datei behalten" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "Verknüpfung auf dem Desktop erzeugen" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "Paket" #: FMakeInstall.class:137 msgid "Min. version" msgstr "Min. Version" #: FMakeInstall.class:138 msgid "Max. version" msgstr "Max. Version" #: FMakeInstall.class:144 msgid "File or directory" msgstr "Datei oder Verzeichnis" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "Pakete erstellen..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Die Pakete wurden erfolgreich erstellt." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Bitte geben Sie Ihren Namen ein." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Bitte geben Sie Ihre E-Mail-Adresse ein." #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "Bitte geben Sie den Namen des Herstellers ein." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "Es gibt keinen Changelog-Eintrag für diese Version." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Bitte nehmen Sie den ersten Eintrag im CHANGELOG vor." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "Bitte wählen Sie mindestens eine Zieldistribution." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "Bitte wählen Sie die Paketgruppe für jede Zieldistribution." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "Bitte wählen Sie eine Paketgruppe." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "Bitte wählen Sie den Ort des Menüs für jede Zieldistribution." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "Bitte wählen Sie einen Ort für das Menü." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "Kann die Extra-Datei &1 nicht finden" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "Bitte wählen Sie ein Zielverzeichnis für jede Extra-Datei." #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Debian-Paketsystem kann Leerzeichen in Dateinamen nicht händeln." #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Debian-Paketsystem kann Leerzeichen in Verzeichnisnamen nicht händeln." #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "Das Paket darf nicht im Projektverzeichnis gespeichert werden." #: FMakeInstall.class:558 msgid "Initial release" msgstr "Erstes Release" #: FMakeInstall.class:814 msgid "Menus" msgstr "Menüs" #: FMakeInstall.class:882 msgid "Groups" msgstr "Gruppen" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "Unzuässige Zeichen" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "Wollen Sie wirklich alle Extra-Abhängigkeiten löschen?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "Wollen Sie wirklich alle Extra-Dateien löschen?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "Zielverzeichnis auswählen" #: FMakeInstall.form:151 msgid "Create package" msgstr "Paket erstellen" #: FMakeInstall.form:154 msgid "Package information" msgstr "Paketinformation" #: FMakeInstall.form:160 msgid "Package name" msgstr "Paketname" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "Anbieterpräfix zum Paketnamen hinzufügen" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "Paketversion" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "Anbietername" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "Anbieterpräfix" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Bearbeiterinformationen" # gb-ignore #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Änderungsprotokoll" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Zieldistribution" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Selbstextrahierend" #: FMakeInstall.form:612 msgid "Package group" msgstr "Paketgruppe" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Menüeintrag" #: FMakeInstall.form:654 msgid "Categories" msgstr "Kategorien" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Desktop-Konfigurationsdatei" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "MIME-Typen" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" "Geben Sie die Mimetypes ein, die von Ihrem Programm verwaltet werden.\n" "Bitte einen Mimetype pro Zeile.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Zusätzliche Konfiguration" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Folgendes wird ans Ende der Desktop-Konfigurationsdatei angehängt." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Extra Abhängigkeiten" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Gambas Mindestversion" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Gleiche Abhängigkeiten für alle Ziele" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Zusätzliche Dateien" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Gleiche Dateien für alle Ziele" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Zusätzliche Dateien müssen im Project-Verzeichnis des Projekts angelegt werden, d.h. das .hidden-Verzeichnis des Projekts auf der Festplatte." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Extra autoconf Tests" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Extra Tests für die Konfiguration hinzufügen.\n" "

Leer lassen, wenn Sie das nicht benötigen, oder wenn Sie sich nicht mit autoconf scripts auskennen." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Zielverzeichnis" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Verzeichnisse für jede Distribution erstellen" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Kommando-Ausgabe" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Paket jetzt erstellen" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Bitte wählen Sie ein Ausgangs-Archiv aus." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Bitte wählen Sie ein Ausgangs-Projekt." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Bitte geben Sie einen Patch-Dateinamen ein." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "Patch wurde erfolgreich erstellt." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Patch konnte nicht generiert werden." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Patch erzeugen" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Patch-Ausgangspunkt auswählen" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Patch-Ausgangspunkt" #: FMakePatch.form:59 msgid "Project directory" msgstr "Projektverzeichnis" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Automatischer Patchname" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Patch ändern" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Dieser Dialog generiert einen Patch zwischen einem Ausgangsprojekt und dem aktuellen Projekt." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Quellarchiv auswählen" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Quellpakete" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Projektverzeichnis auswählen" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Patch-Dateinamen auswählen" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Patch/Diff-Dateien" #: FMakeSourceArchive.form:9 Project.module:4875 msgid "Create source package" msgstr "Quellpaket erstellen" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "Die Menüs wurden verändert!" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "Bitte geben Sie einen Menünamen ein." #: FMenu.class:346 msgid "Bad menu name !" msgstr "Unzulässiger Menuname !" #: FMenu.class:352 msgid "Bad group name !" msgstr "Unzulässiger Gruppenname !" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Dieses Menü ist zu tief verschachtelt !" #: FMenu.class:1155 Project.module:5753 msgid "modified" msgstr "geändert" #: FMenu.form:86 msgid "Insert menu" msgstr "Menü einfügen" #: FMenu.form:95 msgid "Insert separator" msgstr "Trenner einfügen" #: FMenu.form:104 msgid "Insert menu before" msgstr "Menü davor einfügen" #: FMenu.form:107 msgid "Insert before" msgstr "Davor einfügen" #: FMenu.form:113 msgid "Delete menu" msgstr "Menu löschen" #: FMenu.form:179 msgid "Paste before" msgstr "" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Klicken Sie auf Einfügen, um ein neues Menü einzufügen." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Bitte geben Sie den Datenbanknamen ein." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Bitte geben Sie das Passwort ein." #: FNewConnection.class:147 msgid "Connection properties" msgstr "Verbindungseigenschaften" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Wählen Sie ein Verzeichnis" #: FNewConnection.class:229 msgid "Create database" msgstr "Datenbank erstellen" #: FNewConnection.class:241 msgid "Delete database" msgstr "Datenbank löschen" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Datenbank konnte nicht erstellt werden." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Wollen Sie die Datenbank '&1' wirklich löschen?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Datenbank konnte nicht gelöscht werden." # gb-ignore #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "Pfad" #: FNewConnection.form:154 msgid "No password" msgstr "Kein Passwort" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Datenbank" #: FNewConnection.form:241 msgid "From" msgstr "Von" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Zeichensatz der Datenbank ignorieren" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Metadaten anzeigen" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Datenbankstruktur merken" #: FNewTable.class:33 msgid "Create table" msgstr "Tabelle erstellen" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Bitte geben Sie den Namen der neuen Tabelle ein." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Tabelle '&1' existiert bereits." #: FNewTranslation.form:10 msgid "New translation" msgstr "Neue Übersetzung" #: FOpenProject.form:22 msgid "Select a project" msgstr "Projekt auswählen" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Beispiele" #: FOption.class:4 msgid "Amber" msgstr "Bernstein" # gb-ignore #: FOption.class:4 msgid "Amethyst" msgstr "" # gb-ignore #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Smaragd" # gb-ignore #: FOption.class:4 msgid "Gambas" msgstr "" # gb-ignore #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 msgid "Pastel" msgstr "Pastel" #: FOption.class:4 msgid "Quest" msgstr "Suche" #: FOption.class:4 msgid "Quick" msgstr "Schnell" #: FOption.class:4 msgid "Ruby" msgstr "Rubin" #: FOption.class:4 msgid "Sapphire" msgstr "Saphir" #: FOption.class:4 msgid "Visual" msgstr "Visuell" # gb-ignore #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "Standard" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "Benutzerdefiniert" #: FOption.class:91 msgid "Desktop" msgstr "Arbeitsfläche" #: FOption.class:92 FTranslate.class:151 msgid "(Default)" msgstr "(Standard)" #: FOption.class:267 msgid "Gambas highlight theme files" msgstr "Gambas Designdateien" #: FOption.class:268 msgid "Export a theme file" msgstr "Designdatei exportieren" #: FOption.class:499 msgid "Select a theme file" msgstr "Designdatei auswählen" #: FOption.class:522 msgid "You need to restart the application to see your changes." msgstr "Um Ihre Änderungen zu sehen, müssen Sie die Anwendung neu starten." #: FOption.class:855 msgid "Do you really want to clear the documentation cache?" msgstr "Wollen Sie den Dokumentations-Cache wirklich löschen?" #: FOption.class:864 msgid "Unable to clear documentation cache." msgstr "Dokumentationscache konnte nicht geleert werden." #: FOption.class:1024 msgid "Do you really want to delete this snippet?" msgstr "Wollen Sie diesen Kurzbefehl wirklich löschen?" #: FOption.class:1225 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1225 FSoftwareFarm.class:604 msgid "Install" msgstr "Installieren" #: FOption.class:1311 msgid "Network is not available." msgstr "Netzwerk nicht erreichbar." #: FOption.class:1316 msgid "Documentation is up to date." msgstr "Dokumentation ist aktuell." #: FOption.class:1321 msgid "A new documentation is available!" msgstr "Eine neue Dokumentation ist verfügbar!" #: FOption.class:1326 MHelp.module:933 msgid "Documentation is not available." msgstr "Dokumentation nicht verfügbar." #: FOption.class:1508 msgid "Cannot download '&1'." msgstr "Kann '&1' nicht herunterladen." #: FOption.class:1539 msgid "Unable to uncompress documentation." msgstr "Kann Dokumentation nicht dekomprimieren." #: FOption.class:1550 msgid "Unable to install documentation." msgstr "Kann Dokumentation nicht installieren." #: FOption.class:1660 msgid "Compact" msgstr "" #: FOption.class:1675 msgid "Current" msgstr "Aktuell" #: FOption.class:1717 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1815 msgid "Do you really want to delete that layout?" msgstr "" #: FOption.form:295 msgid "Dotted" msgstr "Gepunktet" #: FOption.form:306 msgid "Identity" msgstr "Identität" #: FOption.form:350 msgid "Package maintainer" msgstr "Paketverwalter" #: FOption.form:395 msgid "Default license" msgstr "Standardlizenz" #: FOption.form:435 VersionControl.module:555 msgid "No" msgstr "Nein" #: FOption.form:435 VersionControl.module:555 msgid "Yes" msgstr "Ja" #: FOption.form:439 msgid "Projects" msgstr "Projekte" #: FOption.form:456 msgid "Default tab size" msgstr "Tabulator-Abstand" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "Leerstelle(n)" #: FOption.form:482 msgid "Indent with tab by default" msgstr "Einrücken standardmäßig mit TAB" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "Automatischer Zeilenumbruch per Default" #: FOption.form:516 msgid "Activate version control" msgstr "Versionskontrolle aktivieren" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "Beim Laden eines Projektes Dateien wiederherstellen" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Kompilation" #: FOption.form:556 msgid "Number of background jobs" msgstr "" #: FOption.form:569 msgid "Images" msgstr "Bilder" #: FOption.form:581 msgid "Compress PNG images with " msgstr "Komprimiere PNG-Bilder mit " #: FOption.form:615 msgid "Automatic translation with " msgstr "Automatische Übersetzung mit " #: FOption.form:644 msgid "Translation engine" msgstr "Übersetzungsengine" #: FOption.form:653 msgid "Help & applications" msgstr "Hilfe & Anwendungen" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Hilfe" #: FOption.form:670 msgid "Show documentation in popups" msgstr "Zeige Dokumentation in Popup-Fenstern" #: FOption.form:687 msgid "Always display optional messages" msgstr "Optionale Meldungen immer anzeigen" #: FOption.form:699 msgid "Documentation" msgstr "Dokumentation" #: FOption.form:710 msgid "Use offline documentation" msgstr "Verwende Offline-Dokumentation" #: FOption.form:740 msgid "Download documentation" msgstr "Dokumentation herunterladen" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "Proxy-Konfiguration" #: FOption.form:779 msgid "Clear documentation cache" msgstr "Dokumentations-Cache löschen" #: FOption.form:787 msgid "Applications" msgstr "Anwendungen" # gb-ignore #: FOption.form:798 msgid "Browser" msgstr "" # gb-ignore #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "Einrückung durch vertikale Linien kennzeichnen" #: FOption.form:858 msgid "Highlight current line" msgstr "Aktuelle Zeile hervorheben" #: FOption.form:875 msgid "Highlight modified lines" msgstr "Geänderte Zeilen hervorheben" #: FOption.form:892 msgid "Show line numbers" msgstr "Zeilennummern anzeigen" #: FOption.form:909 msgid "Procedure folding" msgstr "Prozeduren einklappen" #: FOption.form:926 msgid "Procedure separation" msgstr "Prozedurtrennung" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "Leerstellen am Ende der Zeile mit Punkten kennzeichnen" #: FOption.form:960 msgid "Show Preview" msgstr "Vorschau anzeigen" #: FOption.form:978 msgid "Keywords in upper case" msgstr "Schlüsselfeld in Großschreibung" #: FOption.form:987 msgid "Code formatting" msgstr "Code-Formatierung" #: FOption.form:993 msgid "Automatic formatting" msgstr "Automatische Formatierung" #: FOption.form:1004 msgid "Control structure completion" msgstr "Vervollständigung der Kontrollstruktur" #: FOption.form:1021 msgid "Local variable declaration" msgstr "Lokale Variablendeklaration" #: FOption.form:1038 msgid "Comments insertion" msgstr "Kommentare einfügen" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "Klammern schließen" #: FOption.form:1072 msgid "Close strings" msgstr "Strings schließen" #: FOption.form:1084 msgid "Explicit formating" msgstr "Explizite Formatierung" #: FOption.form:1095 msgid "Format on load & save" msgstr "Beim Laden & Speichern formatieren" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "Deklaration lokaler Variablen einrücken" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "Unnötige Leerstellen am Zeilenende entfernen" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "Aufeinanderfolgende leere Zeilen behalten" #: FOption.form:1155 msgid "Code snippets" msgstr "Code-Kurzbefehle" #: FOption.form:1171 msgid "Activate code snippets" msgstr "Code-Kurzbefehle aktivieren" #: FOption.form:1232 msgid "Interface" msgstr "Schnittstelle" #: FOption.form:1249 msgid "Activate animations" msgstr "Animationen aktivieren" #: FOption.form:1266 msgid "Show shadows" msgstr "Schatten anzeigen" #: FOption.form:1283 msgid "Show tooltips" msgstr "Tooltipps anzeigen" #: FOption.form:1300 msgid "Use utility windows" msgstr "Hilfsfenster verwenden" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "Reiter mit Mittelklick schließen" #: FOption.form:1334 msgid "Show file name in window title" msgstr "Dateiname in Fenstertitel anzeigen" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "Debugging-Panel anzeigen wenn nötig" #: FOption.form:1368 msgid "Message style" msgstr "" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "Schriften" #: FOption.form:1452 msgid "Global size" msgstr "Globale Größe" #: FOption.form:1474 msgid "Title size" msgstr "Größe des Titels" #: FOption.form:1496 msgid "Debugger size" msgstr "Debugger-Größe" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Drucken" #: FOption.form:1588 msgid "Fixed font" msgstr "Dicktengleiche Schrift" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "Zoom (benötigt Browser)" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "Gambas Font für Codeeditor installieren" #: FOption.form:1682 msgid "Themes" msgstr "Themen" #: FOption.form:1699 msgid "Icon theme" msgstr "Icon-Stil" #: FOption.form:1715 msgid "Highlighting theme" msgstr "Hervorhebungsthema" #: FOption.form:1729 msgid "Import theme" msgstr "Design importieren" #: FOption.form:1735 msgid "Export theme" msgstr "Design exportieren" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Konsole - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Konsole in separatem Fenster" #: FOutput.form:72 msgid "Keep above" msgstr "Im Vordergrund" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Terminal pausieren" #: FOutput.form:104 msgid "Entered text echo" msgstr "Eingegebenen Text echoen" #: FOutput.form:106 msgid "Echo" msgstr "Echo" #: FOutput.form:117 msgid "Open contents" msgstr "Inhalte öffnen" #: FOutput.form:130 msgid "Use system charset" msgstr "Verwende System-Zeichensatz" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Text konnte nicht eingefügt werden." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Inhalt der Zwischenablage" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Normales Einfügen" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Mit PRINT einfügen" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Bitte geben Sie einen Tabellennamen ein." #: FPasteTable.class:133 msgid "Table already exists" msgstr "Tabelle existiert bereits" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Auch die Daten der Tabelle einfügen" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Diese Datei sieht nicht wie ein Patch aus!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Aktuelles Projekt patchen" #: FPatch.form:31 msgid "Select patch" msgstr "Patch auswählen" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Zurücksetzen" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "Unzulässiges Format der Profildatei" #: FProfile.class:421 msgid "&1 Mb" msgstr "&1 MB" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "Gesamtzeit &1 μs" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "Kann Profile-Datei nicht laden: &1" #: FProfile.class:713 msgid "Calls" msgstr "Aufrufe" #: FProfile.class:716 msgid "Duration" msgstr "Dauer" #: FProfile.class:719 msgid "Average" msgstr "Durchschnitt" #: FProfile.class:722 msgid "Self" msgstr "Selbst" #: FProfile.class:1121 msgid "Profile files" msgstr "Profildateien" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "Profil kann nicht gespeichert werden." #: FProfile.form:60 msgid "Show relative durations" msgstr "Relative Dauer anzeigen" #: FProfile.form:67 msgid "Show average" msgstr "Durchschnitt anzeigen" #: FProfile.form:74 msgid "Save profile" msgstr "Profil speichern" #: FProfile.form:126 msgid "Callees" msgstr "Angerufene" #: FProfile.form:138 msgid "Callers" msgstr "Aufrufer" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "Projekteigenschaften" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "Bilddateien" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "Statische Eigenschaft" # gb-ignore #: FProjectProperty.class:55 msgid "Variable" msgstr "" #: FProjectProperty.class:293 msgid "Snapping value is incorrect." msgstr "Raster-Wert ist inkorrekt." #: FProjectProperty.class:826 msgid "&1 does not export any class." msgstr "&1 exportiert keine Klasse." #: FProjectProperty.class:834 msgid "&1 is already used as a library." msgstr "&1 wird bereits als Bibliothek benutzt." #: FProjectProperty.class:1002 msgid "Modules" msgstr "Module" #: FProjectProperty.class:1003 msgid "Test modules" msgstr "Testmodule" #: FProjectProperty.class:1013 msgid "Functions" msgstr "" #: FProjectProperty.class:1014 msgid "Lines of code" msgstr "Codezeilen" #: FProjectProperty.class:1015 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1018 msgid "Executable size" msgstr "Programmgröße" #: FProjectProperty.class:1018 msgid "bytes" msgstr "Bytes" #: FProjectProperty.class:1035 msgid "Information about component" msgstr "Informationen über Komponente" #: FProjectProperty.class:1041 msgid "Information about library" msgstr "Informationen über Bibliothek" #: FProjectProperty.class:1421 msgid "Select a Gambas executable" msgstr "Gambas-Programm auswählen" #: FProjectProperty.class:1422 msgid "Gambas executable" msgstr "Gambas-Programm" #: FProjectProperty.form:250 msgid "JIT compiler" msgstr "" #: FProjectProperty.form:300 msgid "General" msgstr "Allgemein" #: FProjectProperty.form:366 msgid "Component" msgstr "Komponente" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "Bibliothek" #: FProjectProperty.form:366 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:373 msgid "Vendor" msgstr "Hersteller" # gb-ignore #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "Aus der 'VERSION'-Datei übernehmen" #: FProjectProperty.form:418 msgid "Title" msgstr "Titel" # gb-ignore #: FProjectProperty.form:452 msgid "Information" msgstr "" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "Fortschritt" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "Abgeschlossen und stabil" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "Diese Komponente ist versteckt" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "Kompatibel bis Version" #: FProjectProperty.form:535 msgid "Include information from" msgstr "Informationen einbinden von" #: FProjectProperty.form:547 msgid "Required features" msgstr "Benötigte Features" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "Benötigte und ausgeschlossene Komponenten" #: FProjectProperty.form:624 msgid "Require" msgstr "Benötige" #: FProjectProperty.form:630 msgid "Exclude" msgstr "Ausschließen" #: FProjectProperty.form:642 msgid "Remove All" msgstr "Alle entfernen" #: FProjectProperty.form:649 msgid "Components" msgstr "Komponenten" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Bibliotheken" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "Suchpfad für Laufzeitbibliothek" #: FProjectProperty.form:737 msgid "Additional references" msgstr "Weitere Referenzen" #: FProjectProperty.form:748 msgid "Environment" msgstr "Umgebung" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Editor" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Tabulatorabstand" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "Veraltete Komponenten und Steuerelemente anzeigen" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "Modulvariablen sind standardmäßig public" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Formular-Steuerelemente sind öffentlich" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "Warnungen aktivieren" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:979 FTranslate.form:415 msgid "Statistics" msgstr "Statistiken" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Diese Zeile und alles Folgende wird ignoriert." #: FProjectVersion.class:36 msgid "Local" msgstr "Lokal" # gb-ignore #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Bitte geben Sie einen Benutzernamen ein." #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "Bitte geben Sie das Journal an." #: FProjectVersion.class:116 VersionControl.module:373 msgid "The project could not be committed." msgstr "Das Projekt konnte nicht übermittelt werden." #: FProjectVersion.class:196 VersionControl.module:397 msgid "Unable to update project from repository." msgstr "Das Projekt konnte nicht aus dem Repository aktualisiert werden." #: FProjectVersion.class:198 VersionControl.module:399 msgid "Project has been updated from repository successfully." msgstr "Projekt wurde erfolgreich aus Repository aktualisiert." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Projekt-Versionskontrolle" # gb-ignore #: FProjectVersion.form:65 msgid "Update" msgstr "" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Authentifizierung" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Informationen erneuern" # gb-ignore #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Einige Dateien haben noch keine Versions-Nr. und sollten dem Repository manuell hinzugefügt werden." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Vorherige Beschreibung" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Der Name des Steuerelements enthält unzulässige Zeichen." #: FProperty.class:383 msgid "This name is already in use." msgstr "Dieser Name wird bereits verwendet." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Der Gruppenname enthält unzulässige Zeichen." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Unzulässiger Eigenschaftswert." #: FProperty.class:631 msgid "The name of the control." msgstr "Name des Steuerelements." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Die Ereignisgruppe, zu der das Steuerelement gehört." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Wenn die Größe des Formulars und der Steuerelemente abhängig von der Größe der Standardschrift sein soll." #: FProperty.class:661 msgid "If the control is public." msgstr "Wenn das Steuerelement public ist." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Falls die Texteigenschaft übersetzt werden soll." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Diese Eigenschaft ist virtuell: Sie ist nur in der IDE vorhanden und ist zur Laufzeit nicht mehr existent." #: FProperty.class:814 msgid "None" msgstr "Keine" #: FProperty.form:51 msgid "Lock property" msgstr "Eigenschaft sperren" #: FProperty.form:58 msgid "Sort properties" msgstr "Eigenschaften sortieren" # gb-ignore #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "Standard Proxy" #: FProxy.form:76 msgid "HTTP proxy" msgstr "HTTP-Proxy" #: FProxy.form:76 msgid "No proxy" msgstr "Kein Proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "SOCKS5-Proxy" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "Sie können keine Software mit Version \"0.0\" veröffentlichen." # gb-ignore #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "Das Projekt wurde erfolgreich veröffentlicht." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Konnte Projekt nicht veröffentlichen" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Leerzeichen sind nicht erlaubt." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Inkorrekte Versionsnummer." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Wollen Sie wirklich alle Tags entfernen?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Screenshot-Datei auswählen" #: FPublish.class:329 msgid "Screenshot files" msgstr "Screenshot-Dateien" #: FPublish.form:67 msgid "Software description" msgstr "Software-Beschreibung" #: FPublish.form:98 FSoftwareFarm.form:346 msgid "Web site" msgstr "Webseite" #: FPublish.form:113 msgid "Create menu entry" msgstr "Menüeintrag erstellen" # gb-ignore #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "Sortieren" # gb-ignore #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Screenshot auf dem Server behalten" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Screenshot vom Server entfernen" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Neuen Screenshot von der Zwischenablage hochladen" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Neuen Screenshot aus der folgenden Datei hochladen:" #: FPublish.form:222 msgid "Dependencies" msgstr "Abhängigkeiten" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Gambas-Version verlangen" #: FPublish.form:295 msgid "Publish as" msgstr "Veröffentlichen als" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Rand konfigurieren" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Ecke" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Schatten konfigurieren" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Schatten" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Pinsel konfigurieren" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "Ein Bild im Projekt auswählen" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Unzulässiger Wert." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Dimension auswählen" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Füllung konfigurieren" #: FSave.form:15 msgid "Save modified files" msgstr "Geänderte Dateien speichern" #: FSave.form:43 msgid "Save All" msgstr "Alles speichern" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "Folgende Dateien wurden geändert. Wollen Sie sie speichern?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Ein Projekt kann nicht in seinem eigenen Verzeichnis gespeichert werden." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Das Projekt kann nicht gespeichert werden." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Neues Projekt-Oberverzeichnis" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Neuer Projektname" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Screenshot schießen" #: FSearch.class:529 msgid "Search string replaced once." msgstr "Suchstring wurde einmal ersetzt." #: FSearch.class:531 msgid "Search string replaced &1 times." msgstr "Suchstring wurde &1mal ersetzt." #: FSearch.class:636 msgid "One match" msgstr "Ein Treffer" #: FSearch.class:638 msgid "&1 matches" msgstr "&1 Treffer" #: FSearch.class:644 msgid "One replacement" msgstr "" #: FSearch.class:646 msgid "&1 replacements" msgstr "" #: FSearch.class:949 msgid "Do you really want to replace every string?" msgstr "Wollen Sie wirklich alle Zeichenketten ersetzen?" #: FSearch.form:44 msgid "Search & Replace" msgstr "Suchen & Ersetzen" #: FSearch.form:112 msgid "Case sensitive" msgstr "Großschreibung beachten" #: FSearch.form:117 msgid "Words only" msgstr "Nur ganze Wörter" #: FSearch.form:122 msgid "Regular expression" msgstr "Regulärer Ausdruck" #: FSearch.form:127 msgid "Ignore strings" msgstr "Zeichenketten ignorieren" #: FSearch.form:132 msgid "Ignore comments" msgstr "Kommentare ignorieren" #: FSearch.form:148 msgid "Search in" msgstr "Suchen in" #: FSearch.form:154 msgid "Current function" msgstr "" #: FSearch.form:160 msgid "Current file" msgstr "Aktuelle Datei" #: FSearch.form:167 msgid "Source files" msgstr "Quelldateien" #: FSearch.form:173 msgid "Data files" msgstr "Datendateien" #: FSearch.form:204 msgid "Browse" msgstr "Durchsuchen" #: FSearch.form:216 msgid "Replace all" msgstr "Alle ersetzen" #: FSearch.form:227 msgid "Highlight search" msgstr "Suche hervorheben" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Eine weitere Datei auswählen" #: FSelectIcon.class:40 msgid "Image files" msgstr "Bilddateien" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "SVG-Bilddateien" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Bild auswählen" #: FSelectIcon.form:45 msgid "Stock" msgstr "Bestand" #: FSelectIcon.form:73 msgid "Size preview" msgstr "" #: FSelectLibrary.class:64 msgid "unknown" msgstr "unbekannt" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Bibliothek wählen" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "Es wurde keine Bibliothek auf Ihrem System gefunden." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Bitte geben Sie einen Kurzbefehl ein." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Dieser Kurzbefehl wird bereits verwendet." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Code-Kurzbefehl bearbeiten" #: FSnippet.class:67 msgid "New code snippet" msgstr "Neuer Code-Kurzbefehl" #: FSnippet.form:26 msgid "Trigger string" msgstr "Kurzbefehl" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Spiele" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Entwicklung" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Bildung" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Grafik" # gb-ignore #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" # gb-ignore #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Büro" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Zubehör" # gb-ignore #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Erweiterungen" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Meine Software" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Andere Software von" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Alle Software" #: FSoftwareFarm.class:210 msgid "No software found." msgstr "Keine Software gefunden." #: FSoftwareFarm.class:229 msgid "Request cancelled." msgstr "Anfrage abgebrochen." #: FSoftwareFarm.class:376 msgid "Cancel my vote" msgstr "Votierung löschen" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "Aktualisieren" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "Veröffentlicht &1 (am &2)" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "Wollen Sie &1 wirklich herunterladen?" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "Kann &1 nicht herunterladen: " #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "&1 erfolgreich heruntergeladen." #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "Wollen Sie &1 wirklich aktualisieren?" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "Kann &1 nicht aktualisieren: " #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "Wollen Sie &1 wirklich deinstallieren?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "Kann &1 nicht deinstallieren:" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "&1 wurde erfolgreich deinstalliert." #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "Wollen Sie &1 wirklich installieren?" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "Kann &1 nicht installieren: " #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "&1 erfolgreich installiert." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "Kann Ihre Votierung nicht ändern." #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "Wollen Sie &1 wirklich vom Farm-Server entfernen?" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "Kann &1 nicht entfernen: " #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Gambas Software-Farm" #: FSoftwareFarm.form:159 FToolBox.form:31 FTranslate.form:206 msgid "Show" msgstr "Anzeigen" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Installiert" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Am meisten heruntergeladen" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Am neusten" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Filter anzeigen" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Alte Versionen anzeigen" # gb-ignore #: FSoftwareFarm.form:398 msgid "Download" msgstr "" #: FSoftwareFarm.form:406 msgid "Download and install" msgstr "Herunterladen und installieren" #: FSoftwareFarm.form:414 msgid "Vote" msgstr "Votieren" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "Bitte kopieren Sie diese Informationen in jede Ihrer Fehlermeldungen." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Wählen Sie eine Tabelle aus" #: FTestSuite.class:87 msgid "Unable to load test suites." msgstr "" #: FTestSuite.class:168 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:206 msgid "This test suite already exists." msgstr "" #: FTestSuite.class:282 msgid "Unable to save test suites." msgstr "" #: FTestSuite.class:292 msgid "Do you really want to remove this test suite?" msgstr "" #: FTestSuite.form:41 msgid "Test with" msgstr "" #: FTestSuite.form:78 msgid "New test suite" msgstr "" #: FTestSuite.form:85 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:92 msgid "Rename test suite" msgstr "" #: FTestSuite.form:99 msgid "Delete test suite" msgstr "" #: FTestSuite.form:132 msgid "Select all tests" msgstr "" #: FTestSuite.form:139 msgid "Unselect all tests" msgstr "" #: FText.class:12 msgid "Edit '&1' property" msgstr "Eigenschaft '&1' editieren" #: FText.form:29 msgid "Use a fixed font" msgstr "Schrift fester Länge" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "Konsolenausgabe #&1" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "" #: FTextEditor.class:1938 msgid "Example" msgstr "" #: FTextEditor.form:188 msgid "Sort ascent" msgstr "Aufsteigend sortieren" #: FTextEditor.form:194 msgid "Sort descent" msgstr "Absteigend sortieren" #: FTextEditor.form:735 msgid "Toggle preview" msgstr "" #: FTextEditor.form:815 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "Tipp des Tages #&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "Tipp des Tages konnte nicht gelesen werden." #: FTips.form:70 msgid "Show tips on startup" msgstr "Tipps beim &Start anzeigen" #: FToolBox.class:26 msgid "Chooser" msgstr "" #: FToolBox.class:26 msgid "Container" msgstr "" #: FToolBox.class:26 msgid "Dialog" msgstr "" #: FToolBox.class:26 msgid "Network" msgstr "" #: FToolBox.class:26 msgid "Special" msgstr "" #: FToolBox.class:350 Project.module:865 msgid "Current project" msgstr "Aktuelles Projekt" #: FToolBox.class:380 #, fuzzy msgid "Help on &1" msgstr "am &1" #: FToolBox.form:35 msgid "Button size" msgstr "" #: FToolBox.form:40 msgid "Tiny" msgstr "" #: FToolBox.form:47 msgid "Small" msgstr "" #: FToolBox.form:54 msgid "Medium" msgstr "" #: FToolBox.form:61 msgid "Large" msgstr "" #: FToolBox.form:68 msgid "Deprecated controls" msgstr "" #: FToolBox.form:119 msgid "Change button size" msgstr "" #: FToolBox.form:125 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Das Projekt ist leer. Es gibt nichts zu übersetzen." #: FTranslate.class:74 msgid "Language" msgstr "Sprache" #: FTranslate.class:77 msgid "Not translated" msgstr "Nicht übersetzt" #: FTranslate.class:175 msgid "Translation files" msgstr "Übersetzungsdateien" #: FTranslate.class:336 msgid "Cannot read translation file for language '&1'" msgstr "Übersetzung für die Sprache '&1' kann nicht gelesen werden" #: FTranslate.class:575 msgid "Cannot save translation." msgstr "Kann Übersetzung nicht speichern." #: FTranslate.class:688 msgid "Do you really want to delete this translation ?" msgstr "Wollen Sie diese Übersetzung wirklich löschen ?" #: FTranslate.class:797 msgid "Do you really want to reload this translation ?" msgstr "Wollen Sie diese Übersetzung wirklich erneut laden ?" #: FTranslate.class:811 msgid "Export a translation" msgstr "Übersetzung exportieren" #: FTranslate.class:1026 msgid "Please select the translation file to import." msgstr "Bitte wählen Sie die zu importierende Übersetzungsdatei." #: FTranslate.class:1064 msgid "No translation were picked up." msgstr "Keine Übersetzung wurde aufgenommen." #: FTranslate.class:1066 msgid "One translation was picked up." msgstr "Eine Übersetzung wurde aufgenommen." #: FTranslate.class:1068 msgid "&1 translations were picked up." msgstr "&1 Übersetzungen wurden eingelesen." #: FTranslate.class:1076 msgid "Cannot import translation file." msgstr "Kann Übersetzungsdatei nicht importieren." #: FTranslate.class:1125 msgid "Everything seems to be correct." msgstr "Alles scheint in Ordnung zu sein." #: FTranslate.class:1135 msgid "Translated string symbols do not match untranslated string ones." msgstr "Übersetzte Zeichenketten passen nicht zu den unübersetzten." #: FTranslate.class:1161 msgid "&1 strings. Everything is translated!" msgstr "&1 Strings. Alles ist übersetzt!" #: FTranslate.class:1163 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 Strings. Einer ist unübersetzt. &3% erledigt." #: FTranslate.class:1165 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 Strings. &2 unübersetzt. &3% erledigt." #: FTranslate.class:1754 msgid "Automatic translation has failed." msgstr "Automatische Übersetzung schlug fehl." #: FTranslate.class:1766 msgid "Do you want to fill the translation automatically?" msgstr "Wollen Sie die Übersetzung automatisch befüllen?" #: FTranslate.form:77 msgid "Project translation" msgstr "Projektübersetzung" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Automatische Übersetzung" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Unübersetzte Zeichenketten" #: FTranslate.form:122 msgid "Translated strings" msgstr "Übersetzte Zeichenketten" #: FTranslate.form:126 msgid "All strings" msgstr "Alle Zeichenketten" #: FTranslate.form:195 msgid "Add a new translation" msgstr "Neue Übersetzung hinzufügen" #: FTranslate.form:230 msgid "Save translation" msgstr "Übersetzung speichern" #: FTranslate.form:238 msgid "Verify the translation" msgstr "Übersetzung überprüfen" #: FTranslate.form:240 msgid "Verify" msgstr "Prüfen" #: FTranslate.form:310 msgid "Find next translated string" msgstr "Suche nächsten übersetzten Ausdruck" #: FTranslate.form:316 msgid "Find previous translated string" msgstr "Suche vorherigen übersetzten Ausdruck" #: FTranslate.form:322 msgid "Find previous untranslated string" msgstr "Suche vorherigen nicht übersetzten Ausdruck" #: FTranslate.form:328 msgid "Find next untranslated string" msgstr "Suche nächsten nicht übersetzten Ausdruck" #: FTranslate.form:338 msgid "Clear this translation" msgstr "Diese Übersetzung löschen" #: FTranslate.form:344 msgid "This string must not be translated" msgstr "Diese Zeichenkette darf nicht übersetzt werden." #: FTranslate.form:350 msgid "Copy untranslated string" msgstr "Unübersetzten Ausdruck kopieren" #: FTranslate.form:456 msgid "Import all translations recursively" msgstr "Alle Übersetzungen rekursiv importieren" #: FTranslate.form:462 msgid "Replace existing translations" msgstr "Existierende Übersetzungen ersetzen" #: FTranslate.form:478 msgid "Import a translation file" msgstr "Übersetzungsdatei importieren" #: FVersionControl.form:81 msgid "Hide translation changes" msgstr "" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "Es gibt nichts zu übertragen." #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "Übertragen" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Schriftart wählen" #: FWelcome.class:69 msgid "New project..." msgstr "Neues Projekt..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Kürzlich geöffnete Projekte" #: FWelcome.class:73 Project.module:6601 msgid "Installed software" msgstr "Installierte Software" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Willkommen zu Gambas 3" # gb-ignore #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "Keine Antwort." #: FarmRequest.class:167 msgid "Register user" msgstr "Benutzer registrieren" #: FarmRequest.class:242 msgid "Publish project" msgstr "Projekt veröffentlichen" #: FarmRequest.class:363 msgid "Download software" msgstr "Software herunterladen" #: FarmRequest.class:389 msgid "Delete software" msgstr "Software entfernen" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "Diese Seite existiert nicht." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Afrikaans (Südafrika)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabisch (Ägypten)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabisch (Tunesien)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Aserbaidschanisch (Aserbaidschan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgarisch (Bulgarien)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalanisch (Katalonien, Spanien)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Walisisch (UK)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Tschechisch (Tschechische Republik)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Dänisch (Dänemark)" #: Language.module:34 msgid "German (Germany)" msgstr "Deutsch (Deutschland)" #: Language.module:35 msgid "German (Belgium)" msgstr "Deutsch (Belgien)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Griechisch (Griechenland)" #: Language.module:41 msgid "English (common)" msgstr "Englisch (allgemein)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Englisch (UK)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Englisch (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Englisch (Australien)" #: Language.module:45 msgid "English (Canada)" msgstr "Englisch (Kanada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (überall!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Spanisch (Allgemein)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spanisch (Spanien)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spanisch (Argentinien)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estnisch (Estland)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Baskisch (Baskenland)" # gb-ignore #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finnisch (Finnland)" #: Language.module:68 msgid "French (France)" msgstr "Französisch (Frankreich)" #: Language.module:69 msgid "French (Belgium)" msgstr "Französisch (Belgien)" #: Language.module:70 msgid "French (Canada)" msgstr "Französisch (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Französisch (Schweiz)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galizisch (Spanien)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebräisch (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (Indien)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Ungarisch (Ungarn)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Kroatisch (Kroatien)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesisch (Indonesien)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irisch (Irland)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Isländisch (Island)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italienisch (Italien)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japanisch (Japan)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Kambodscha)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Koreanisch (Korea)" # gb-ignore #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Litauisch (Litauen)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (Indien)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Mazedonisch (Republik von Mazedonien)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Niederländisch (Niederlande)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Niederländisch (Belgien)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norwegisch (Norwegen)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (Indien)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polnisch (Polen)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugiesisch (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugiesisch (Brasilien)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valencianisch (Valencia, Spanien)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Rumänisch (Rumänien)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russisch (Russland)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slowenisch (Slowenien)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanisch (Albanien)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbisch (Serbien & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Schwedisch (Schweden)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Türkisch (Türkei)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ukrainisch (Ukraine)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamesisch (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallonisch (Belgien)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Vereinfachtes Chinesisch (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Traditionelles Chinesisch (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Unbekannt" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "Datei kann nicht komprimiert werden." #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Konnte Passwort nicht abrufen." #: MConnection.module:91 msgid "Unable to save password." msgstr "Konnte Passwort nicht speichern." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Kann Tabelle '&1' nicht anlegen." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Kann Metadaten-Tabelle nicht erstellen." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 darf nicht statisch sein" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "Die Deklaration von &1 stimmt nicht überein" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 ist deklariert, ist aber keine Funktion" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 ist keine Struktur" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 ist nicht deklariert" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 muss statisch sein" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: nicht im Archiv" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: Syntaxfehler" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: Syntaxfehler in Formulardatei" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: zu viele verschachtelte Container" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' ist bereits deklariert" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' wird in der Klasse '&3' inkorrekt redefiniert" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' ist keine Eigenschaft" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' ist nicht statisch" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' ist nur lesbar" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' ist statisch" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' kann nur geschrieben werden" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' oder ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Module können keine Ereignisse auslösen" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Implementierung einer Eigenschaft kann nicht PUBLIC sein." #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Eine Eigenschaft muss PUBLIC sein." #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Zugriff nicht erlaubt" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Aliasname muss ein String sein" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Unklarer Ausdruck. Bitte setzen Sie Klammern." #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Argumente können nicht per Referenz (BYREF) übergeben werden." #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Arrays von Strukturen werden nicht unterstützt" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "Assertion fehlgeschlagen" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Unzulässiges Archiv: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Unzulässiges Argument" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Unzulässige Zeichenkonstante im Ausdruck" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Unzulässiger Typ für Konstante" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Unzulässiger Eventhandler in &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Unzulässiger Ausdruck: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Unzulässige Version der Formulardatei" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Unzulässiges Format in Sektion: " #: MErrorMessage.module:39 msgid "Bad format string" msgstr "String in unzulässigem Format" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Unzulässige Anzahl von Dimensionen" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Defekte Projektdatei: Zeile &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Unzulässiger regulärer Ausdruck: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Unzulässige String-Konvertierung." #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Unzulässiger Indexbereich" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Unzulässiger Gebrauch einer virtuellen Klasse" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Unzulässige Versionsbezeichnung" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Kann das aktuelle Verzeichnis nicht in '&1' ändern: &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Kann .startup-Datei nicht anlegen" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Kann die Verlaufsdatei '&1' nicht anlegen." #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Rückmeldung kann nicht erzeugt werden: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Kann Klasseninformation nicht erzeugen: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Kann Datei '&1' nicht anlegen." #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Kann temporäre Archvidatei '&1' nicht anlegen." #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Dynamic library '&1' nicht gefunden: &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Symbol '&2' in dynamic library '&1' nicht gefunden" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Kann sich nicht selbst beerben" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Kann nicht zweimal ableiten" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Kann native Typen nicht instanziieren" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Klasse '&1' konnte nicht geladen werden: &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Komponente '&1' konnte nicht geladen werden: &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Kann die Quelldatei &1 nicht laden" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Ausführbare Datei kann nicht erstellt werden: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "NEW und eingebetteter Array kann nicht kombiniert werden" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "NEW und eingebettete Struktur kann nicht kombiniert werden" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Kann Datei '&1' nicht öffnen: &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Kann Datei '&1' nicht öffnen." #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Innerhalb einer statischen Funktion können keine Ereignisse ausgelöst werden." #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Kann Datei '&1' nicht lesen: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Klasse '&1' kann nicht registriert werden" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Datei '&1' kann nicht entfernt werden: &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Datei '&1' kann nicht nach '&2' umbenannt werden: &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Kann den Kind-Prozess nicht ausführen: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Kann Dateibesitzer nicht ändern: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "Kann &1 nicht zweimal verwenden" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "Kann &1 nicht mit &2 verwenden" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Der Operator NEW kann hier nicht verwendet werden" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "Die Klasse '&1' ist nicht erstellbar" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Vergleichsoperator erwartet" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "Komponentenname muss ein String sein" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Komponente nicht gefunden: '&1'" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Konstanten String erwartet" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Inhalte wurden bereits deklariert" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Standardfall ist bereits definiert" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Standardfall muss der letzte sein" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Gerät ist voll" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Das Verzeichnis ist nicht leer" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Division durch Null" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Dynamische Symbole können in einer statischen Funktion nicht verwendet werden." #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Eingebettete Arrays sind hier unzulässig" #: MErrorMessage.module:90 msgid "End of file" msgstr "Dateiende" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Gleichheits- oder Ungleichheitsoperator erwartet" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Ausdruck zu komplex" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Ausdruck zu komplex. Zu viele Operanden." #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "Name der externen Bibliothek muss ein String sein" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Die Datei existiert bereits." #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Datei ist ein Verzeichnis" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Datei ist gesperrt" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Dateiname ist zu lang" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Datei oder Verzeichnis existiert nicht" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "Unzulässiges GOSUB" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "Unzulässiges GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Gelöschtes Objekt referenziert" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Unzulässige Anweisung" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Interner Compiler-Fehler" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Ungültige Zuweisung" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Ungültiges Datum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Ungültiges Objekt" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Ungültiger Pfad" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() benötigt ein Funktionsargument" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Sprung ist zu weit" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Das Label '&1' ist nicht deklariert" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Der Bibliotheksname muss ein String sein" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Laufvariable wird bereits benutzt" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "Schleifenvariable kann kein Argument sein" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "Schleifenvariable kann nicht global sein" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME darf in einer statischen Funktion nicht verwendet werden." #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Mathematischer Fehler" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Fehlendes #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Fehlende ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Fehlende '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Fehlender Operator" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Fehlende rechte Klammer" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "Mehrdimensionales Array" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW darf keine Argumente per Referenz übergeben bekommen." #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Keine Instanziierungsmethode" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Keine Elternklasse" #: MErrorMessage.module:127 msgid "No return value" msgstr "Kein Rückgabewert" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Keine Startmethode" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Nicht abgeschlossener String" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "&1 ist kein Verzeichnis" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Keine Funktion" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Keine Prozedur" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Kein Array" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Keine Aufzählung" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Kein Objekt" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Zu wenige Argumente für New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Zu wenige Argumente" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Zu wenige Argumente für &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Noch nicht implementiert" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Nicht unterstützt" #: MErrorMessage.module:141 msgid "Null object" msgstr "Null Objekt" #: MErrorMessage.module:142 msgid "Number" msgstr "Zahl" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Zahl oder Datum erwartet" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Zahl oder Datum" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Zahl, Datum oder String" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Zahl, String oder Objekt" #: MErrorMessage.module:147 msgid "Object" msgstr "Objekt" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Außerhalb der Array-Grenzen" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Speicherkapazität überschritten" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Außerhalb des Bereichs" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Überlauf" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Eine vererbte Klasse mit dem gleichen Namen zu definieren ist unzulässig" #: MErrorMessage.module:153 msgid "Read error" msgstr "Lesefehler" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "Schreibgeschütztes Array" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Datentyp des Rückgabewertes fehlt in der Deklaration der Funktion" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "STOP-Anweisung erhalten" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER kann nicht alleine benutzt werden." #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Serialisierungsfehler" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Stapelüberlauf" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Standardtyp" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Stream ist geschlossen" #: MErrorMessage.module:162 msgid "String expected" msgstr "String erwartet" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Strukturen müssen public sein" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Argumente für Subroutinen können nicht per Referenz übergeben werden." #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Syntaxfehler" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Syntaxfehler in Deklaration der Funktion" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Syntaxfehler in Ereignisname" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Syntaxfehler in Modus für Dateizugriff." #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Syntaxfehler in Rückgabetyp" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Syntaxfehler: &1 erwartet" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Syntaxfehler: '...' muss das letzte Argument sein." #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Syntaxfehler: Nach SELECT wird CASE oder DEFAULT erwartet." #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Syntaxfehler: Klasse muss einen Bezeichner haben." #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Syntaxfehler: Diese Syntax ist in einer Zuweisung nicht erlaubt." #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Syntaxfehler: INHERITS benötigt einen Klassennamen." #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Syntaxfehler: Bezeichner erwartet" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "Syntaxfehler: Bezeichner für Eigenschaftsnamen erwartet" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "Syntaxfehler: Bezeichner für Eigenschaftssynonym erwartet" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "Syntaxfehler: Bezeichner für Eigenschaftsvariable erwartet" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Syntaxfehler: Ungültiger Bezeichner in Funktionsname" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Syntaxfehler: Ungültiger optionaler Parameter." #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "Syntaxfehler: Ungültiger Eigenschaftstyp" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Syntaxfehler: Ungültiger Rückgabetyp" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Syntaxfehler: Ungültige Typenbeschreibung des Arguments &1" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Syntaxfehler. Ungültige Typenbeschreibung des Felds &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Syntaxfehler: Überflüssige Argumente." #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Syntaxfehler: Punkt-Syntax nur innerhalb WITH / END WITH erlaubt." #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Syntaxfehler. STRUCT benötigt einen Bezeichner" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Syntaxfehler: Das Argument &1 ist kein gültger Bezeichner." #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Syxntaxfehler. Das Feld &1 ist kein gültiger Bezeichner." #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Syntaxfehler: VarPtr() übernimmt nur einen Bezeichner." #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Systemfehler #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "Auf den '!'-Operator muss ein Bezeichner folgen." #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "Auf den '.'-Operator muss ein Bezeichner folgen." #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "Die Funktion muss eine bestimmte Anzahl von Argumenten erhalten" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "Spezielle Methode &1 darf keine Funktion sein." #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "Spezielle Methode &1 kann nicht implementiert werden." #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "Spezielle Methode &1 darf nicht STATIC sein." #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "Spezielle Methode &1 muss eine Funktion sein." #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "Spezielle Methode &1 muss PUBLIC sein." #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "Spezielle Methode &1 muss STATIC sein." #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "Spezielle Methode &1 muss einen Wahrheitswert zurückgeben" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "Spezielle Methode &1 darf nur eine variable Anzahl von Argumenten übernehmen." #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "Spezielle Methode &1 muss mindestens ein Argument übernehmen." #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "Spezielle Methode &1 übernimmt keine Argumente" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "Die spezielle Methode muss einen Integer-Wert zurückgeben." #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "Spezielle Methode darf genau ein Argument übernehmen" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "Spezielle Methode darf genau zwei Argumente übernehmen" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "Die Signatur der speziellen Methode ist ungültig." #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Dieser Ausdruck darf kein Statement sein." #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Dieser Ausdruck darf nicht per Referenz übergeben werden." #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Zu viele Argumente" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Zu viele Argumente für &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Zu viele Array-Deklarationen." #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Zu viele Konstanten" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Zu viele verschiedene Klassen verwendet" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Zu viele Dimensionen" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Zu viele dynamische Variablen" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Zu viele Ereignisse" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Zu viele Ausdrücke in CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Zu viele externe Funktionen" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Zu viele Funktionen" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Zu viele #If...#Endif-Verschachtelungen" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Zu viele Labels" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Zu viele lokale Variablen" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Zu viele verschachtelte Steuerelementstrukturen" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Zu viele Eigenschaften-Synonyme" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Zu viele gleichzeitig erzeugte Zeichenketten" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Zu viele statische Variablen" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Zu viele unbekannte Symbole" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Folgender Backslash" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Typenunverträglichkeit" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Typenunverträglichkeit: Erwartet &1, stattdessen &2 erhalten" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Abschluss konnte nicht erzeugt werden" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Kann Dateiposition nicht ermitteln" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Klassendatei kann nicht geladen werden" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Funktionsbeschreibung kann nicht vorbereitet werden" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "Unerwartet &1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Unerwartetes Zeilenende" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Unerwartete Zeichenkette" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "Unbekannte Klasse '&1'" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Unbekannter Fehler" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Unbekannte Dateierweiterung" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Unbekannter Bezeichner: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Unbekannter Operator" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Unbekanntes Symbol '&2' in der Klasse '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Unbekannter Benutzer oder Gruppe" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Datentyp wird nicht unterstützt" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Nicht unterstützte String-Konvertierung" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "Überflüssige Sperrung (LOCK)" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "Das VarPtr()-Argument muss eine dynamische, statische oder lokale Variable sein" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Leerer Bezeichner" #: MErrorMessage.module:253 msgid "Void key" msgstr "Leerer Schlüssel" #: MErrorMessage.module:254 msgid "Write error" msgstr "Schreibfehler" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "Kann Komponente nicht finden" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "Kann Bibliothek nicht finden" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "Klassenname versteckt durch globale Deklaration: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "Klassenname versteckt durch lokale Deklaration: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "Konstante wird durch lokale Deklaration verborgen: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "Externe Funktion wird durch lokale Deklaration überschrieben: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "Funktion wird durch lokale Deklaration überschrieben: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "Globale Variable wird durch lokale Deklaration überschrieben: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "Integer und Boolean mit '&1' Operator vermischt" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "nicht-initialisierte globale Variable: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "nicht-initialisierte Variable: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "unbekannter Fehler" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "ungenutztes Argument: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "ungenutzte externe Funktion: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "ungenutzte Funktion: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "ungenutzte globale Variable: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "ungenutzte Variable: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "Kann Slave-Pseudoterminal nicht initialisieren:" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "Kann Pseudoterminal nicht initialisieren:" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "Kann Standardeingabe nicht umleiten:" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "Kann Standardausgabe und -fehlerausgabe nicht umlaiten:" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "Kann Programm nicht ausführen:" #: MHelp.module:316 msgid "No help found." msgstr "Keine Hilfe gefunden." #: MMime.module:17 msgid "Plain text" msgstr "Einfacher Text" #: MMime.module:18 msgid "HTML text" msgstr "HTML-Text" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas Formulardaten" #: MMime.module:20 msgid "Gambas menu data" msgstr "Gambas Menüdaten" #: MMime.module:21 msgid "Gambas project file path" msgstr "Pfad der Gambas Projektdatei" #: MMime.module:22 msgid "URI list" msgstr "URI-Liste" #: MMime.module:33 msgid "Unknown format" msgstr "Unbekanntes Format" #: MTheme.module:6 msgid "Alternate background" msgstr "Alternativer Hintergrund" #: MTheme.module:6 msgid "Characters" msgstr "Zeichen" #: MTheme.module:6 msgid "Comments" msgstr "Kommentare" #: MTheme.module:6 msgid "Current line" msgstr "Aktuelle Zeile" #: MTheme.module:6 msgid "Data types" msgstr "Datentypen" #: MTheme.module:6 msgid "Editing line" msgstr "Zeile wird bearbeitet" #: MTheme.module:6 msgid "Errors" msgstr "Fehler" #: MTheme.module:6 msgid "Highlighting" msgstr "Hervorhebung" #: MTheme.module:6 msgid "Keywords" msgstr "Schlüsselwörter" #: MTheme.module:6 msgid "Labels" msgstr "Labels" #: MTheme.module:6 msgid "Normal text" msgstr "Normaler Text" #: MTheme.module:6 msgid "Numbers" msgstr "Zahlen" #: MTheme.module:6 msgid "Operators" msgstr "Operatoren" #: MTheme.module:6 msgid "Preprocessor" msgstr "Präprozessor" #: MTheme.module:6 msgid "Strings" msgstr "Zeichenketten" #: MTheme.module:6 msgid "Subroutines" msgstr "Subroutinen" #: MTheme.module:6 msgid "Symbols" msgstr "Symbole" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1' fehlt." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1' und '&2' nicht vorhanden." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "Speichere CHANGELOG Datei." #: Package.module:743 msgid "Making &1 support package..." msgstr "&1-Unterstützungspacket wird erstellt..." #: Package.module:798 msgid "Creating package for &1." msgstr "Erstelle Paket für &1." #: Package.module:830 msgid "The package build has failed." msgstr "Die Paketerstellung ist fehlgeschlagen." #: Package.module:903 msgid "Making build directory." msgstr "Erstelle Build-Verzeichnis." #: Package.module:962 msgid "Creating desktop file..." msgstr "Erstelle Desktop-Datei..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "Quelldateien werden ins Debian-Format überführt." #: Package.module:1175 msgid "Creating package..." msgstr "Erstelle Paket..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' ist fehlgeschlagen." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "Initialisierung des ~/RPM Verzeichnisses." #: Package.module:1483 msgid "Creating source package." msgstr "Erstelle Quell-Paket." #: Package.module:1507 msgid "Creating .spec file." msgstr "Erstelle .spec-Datei." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' hat folgende Fehlermeldung zurückgegeben:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' hat folgende Fehlermeldung zurückgegeben:" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "'makepkg' ist fehlgeschlagen." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "Das Verzeichnis ist kein Gambas-Projekt" #: Patch.class:52 Project.module:4832 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "Patchen fehlgeschlagen:\n" #: Project.module:238 msgid "Automation" msgstr "Automatisierung" # gb-ignore #: Project.module:239 msgid "Basic" msgstr "" #: Project.module:241 msgid "Drawing" msgstr "Zeichnen" #: Project.module:244 msgid "Miscellaneous" msgstr "Verschiedenes" #: Project.module:245 msgid "Networking" msgstr "Netzwerkbetrieb" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "Klang" #: Project.module:250 msgid "Controls" msgstr "Steuerelemente" # gb-ignore #: Project.module:251 msgid "Multimedia" msgstr "" # gb-ignore #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "Datei nicht gefunden!" #: Project.module:545 msgid "This project does not exist." msgstr "Dieses Projekt existiert nicht." #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "Im Vereichnis\n" "\n" "&1\n" "\n" "konnte keine Gambas IDE Programmdatei gefunden werden." #: Project.module:576 msgid "This is not a Gambas project." msgstr "Dies ist kein Gambas-Projekt." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Dies ist ein Gambas 1.0 Projekt. Konvertieren Sie es mit Gambas 2." #: Project.module:582 msgid "Convert" msgstr "Konvertieren" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Dies ist ein Gambas 2.0 Projekt.\n" "\n" "Möchten Sie es konvertieren?" #: Project.module:600 msgid "Do not open" msgstr "Nicht öffnen" #: Project.module:600 msgid "Open after all" msgstr "Trotzdem öffnen" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Dieses Projekt scheint bereits geöffnet zu sein.\n" "\n" "Ein Projekt nochmal zu öffnen, kann zu Datenverlust führen." #: Project.module:606 msgid "It cannot be converted." msgstr "Das kann nicht konvertiert werden." #: Project.module:606 msgid "This project is read-only." msgstr "Dieses Projekt ist schreibgeschützt." #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 msgid "This project includes compressed files." msgstr "" #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "Projekt wird in ein temporäres Verzeichnis kopiert..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "Temporäres Verzeichnis kann nicht angelegt werden" #: Project.module:668 msgid "Converting project structure..." msgstr "Konvertiere Projektstruktur..." #: Project.module:698 msgid "Applying conversion..." msgstr "Konvertierung durchführen..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "Konvertierung kann nicht durchgeführt werden" #: Project.module:749 msgid "Cannot open project file :" msgstr "Kann Projektdatei nicht öffnen :" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "Einige vom Projekt benutzte Bibliotheken fehlen." #: Project.module:938 msgid "Cannot reload file." msgstr "Kann Datei nicht neu laden." #: Project.module:1759 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "ALPHA-VERSION, BENUTZUNG AUF EIGENE GEFAHR!" #: Project.module:1761 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "ENTWICKLERVERSION, BENUTZUNG AUF EIGENE GEFAHR!" #: Project.module:2134 msgid "Cannot open a binary file." msgstr "Eine Binärdatei kann nicht geöffnet werden." #: Project.module:2172 msgid "Cannot open file." msgstr "Kann Datei nicht öffnen." #: Project.module:2330 msgid "&1th" msgstr "&1." #: Project.module:2396 msgid "in form definition" msgstr "in der Formulardefinition" #: Project.module:2572 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Einige Quelldateien des Projekts stehen in Konflikt.\n" " Bitte lösen Sie diese bevor Sie das Projekt kompilieren." #: Project.module:2576 msgid "Compiling project" msgstr "Kompiliere Projekt" #: Project.module:2601 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2845 msgid "File already exists." msgstr "Die Datei existiert beeits." #: Project.module:2879 msgid "Directory already exists." msgstr "Verzeichnis existiert bereits." #: Project.module:2891 msgid "Cannot link template file." msgstr "Kann Vorlagendatei nicht einbinden." #: Project.module:2897 msgid "Cannot copy template file." msgstr "Vorlage kann nicht kopiert werden." #: Project.module:2952 msgid "Forbidden directory name." msgstr "" #: Project.module:3120 msgid "The contents of VERSION file is incorrect." msgstr "Der Inhalt der VERSION-Datei ist falsch." #: Project.module:3142 msgid "Cannot install library in &1." msgstr "Kann Bibliothek &1 nicht installieren." #: Project.module:3187 msgid "Making executable..." msgstr "Ausführbare Datei wird erstellt..." #: Project.module:3197 msgid "Do you really want to increment the project version and make the executable again?" msgstr "" #: Project.module:3197 msgid "No change has been detected." msgstr "" #: Project.module:3298 msgid "Cannot make executable." msgstr "Ausführbare Datei kann nicht erstellt werden." #: Project.module:3780 msgid "Some components are missing: &1" msgstr "Einige Komponenten fehlen: &1" #: Project.module:3996 msgid "Cannot write project file." msgstr "Projektdatei kann nicht geschrieben werden." #: Project.module:4048 msgid "Unable to create desktop shortcut." msgstr "Desktopverknüpfung konnte nicht erstellt werden." #: Project.module:4309 msgid "The directory will be removed at the next commit." msgstr "Das Verzeichnis wird bei der nächsten Übermittlung gelöscht." #: Project.module:4327 msgid "You must define a startup class or form!" msgstr "Sie müssen eine Startklasse oder ein Startformular definieren!" #: Project.module:4358 msgid "Please type a name." msgstr "Bitte einen Namen eingeben." #: Project.module:4362 msgid "This name contains a forbidden character:" msgstr "Dieser Name enthält ein unzulässiges Zeichen:" #: Project.module:4366 msgid "The name cannot begins with a dot." msgstr "Der Name darf nicht mit einem Punkt beginnen." #: Project.module:4370 msgid "This name is already used. Choose another one." msgstr "Dieser Name wird bereits verwendet. Wählen Sie einen anderen." #: Project.module:4406 msgid "Space" msgstr "" #: Project.module:4408 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Ein Klassenname muss mit einem Buchstaben oder einem Unterstrich beginnen, gefolgt von einem Buchstaben oder einer Ziffer." #: Project.module:4451 msgid "Destination already exists." msgstr "Ziel existiert bereits." #: Project.module:4609 msgid "Unable to rename '&1'" msgstr "'&1' kann nicht umbenannt werden" #: Project.module:4726 msgid "Please type a project name." msgstr "Bitte geben Sie einen Projektnamen ein." #: Project.module:4734 msgid "The project name cannot begin with a dot." msgstr "Der Projektname darf nicht mit einem Punkt beginnen." #: Project.module:4737 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Projektname darf nur aus ASCII-Zeichen bestehen." #: Project.module:4738 msgid "SPACE" msgstr "LEERZEICHEN" #: Project.module:4738 msgid "The following characters are forbidden in a project name:" msgstr "Die folgenden Zeichen sind in Projektnamen verboten: " #: Project.module:4745 msgid "This project already exists." msgstr "Dieses Projekt existiert bereits." #: Project.module:4748 msgid "The project directory already exists." msgstr "Das Projektverzeichnis existiert bereits." #: Project.module:4750 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Projektverzeichnis konnte nicht angelegt werden, weil bereits eine Datei mit dem selben Namen existiert." #: Project.module:4838 msgid "Unable to create source archive." msgstr "Quellarchiv konnte nicht erstellt werden." #: Project.module:5156 msgid "Cannot copy file &1." msgstr "Kann Datei &1 nicht kopieren." #: Project.module:5204 msgid "Cannot create link &1." msgstr "Kann Link '&1' nicht anlegen." #: Project.module:5219 msgid "Cannot move a directory inside itself." msgstr "Verzeichnisse können nicht in sich selbst verschoben werden." #: Project.module:5283 msgid "Cannot move file &1." msgstr "Kann die Datei &1 nicht verschieben." #: Project.module:5496 msgid "The following files couldn't be removed:" msgstr "Die folgenden Dateien konnte nicht entfernt werden:" #: Project.module:5980 msgid "Project cleanup..." msgstr "Bereinigung des Projekts..." #: Project.module:5986 msgid "Project files conversion..." msgstr "Konvertierung der Projektdateien..." #: Project.module:6016 msgid "Unable to convert &1" msgstr "&1 konnte nicht konvertiert werden" #: Project.module:6296 msgid "Unable to update forms." msgstr "Kann Formulare nicht aktualisieren." #: Project.module:6386 msgid "The &1 program is not installed on your system." msgstr "Das &1-Programm ist nicht auf Ihrem System installiert." #: Project.module:6388 msgid "The following programs are not installed on your system: &1." msgstr "Die folgenden Programme sind nicht auf Ihrem System installiert: &1" #: Project.module:6479 msgid "Unable to read component description file." msgstr "Konnte Komponenten-Beschreibungsdatei nicht lesen." #: Project.module:6540 msgid "Cannot write component description file." msgstr "Beschreibungsdatei für Komponente kann nicht geschrieben werden." #: Project.module:6601 msgid "Project templates" msgstr "Projekttemplates" #: Project.module:6647 msgid "Unable to run terminal." msgstr "Kann Terminal nicht starten." #: Save.module:57 msgid "Cannot save file !" msgstr "Datei kann nicht gespeichert werden !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Veröffentlicht &1" # gb-ignore #: Util.module:6 msgid "&1 B" msgstr "" # gb-ignore #: Util.module:8 msgid "&1 KiB" msgstr "" # gb-ignore #: Util.module:10 msgid "&1 MiB" msgstr "" # gb-ignore #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 msgid "Incorrect format" msgstr "" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "Kommando-Timeout" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "Bitte prüfen Sie Ihre Netzwerkverbindung." #: VersionControl.module:555 msgid "Do you really want to put this project under version control with &1?" msgstr "Möchten Sie dieses Projekt wirklich mit &1 unter Versionskontrolle stellen?" #: VersionControl.module:569 msgid "The project could not be put under version control." msgstr "Dieses Projekt kann nicht unter Versionskontrolle gestellt werden." #: VersionControl.module:654 msgid "Unable to switch to branch `&1`." msgstr "Kann nicht zu Zweig '&1' wechseln." #: VersionControl.module:676 msgid "With &1" msgstr "Mit &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Es gibt &1 Klassen und &2 Symbole in allen Gambas-Komponenten." #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "Diese Seite existiert nicht in dieser Sprache." #: WikiMarkdown.class:142 msgid "Since" msgstr "Seit" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Diese Komponente existiert nicht." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Diese Klasse existiert nicht." #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Das Symbol existiert nicht." #, fuzzy #~ msgid "Audio files" #~ msgstr "Alle Dateien" #, fuzzy #~ msgid "OpenGL with GTK+3 toolkit" #~ msgstr "OpenGL mit dem GTK+ Toolkit" gambas-3.16.3/app/src/gambas3/.lang/el.po000066400000000000000000005765101411575327000177040ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 msgid "Static properties" msgstr "" #: CClassInfo.class:604 msgid "Static variables" msgstr "Στατικές μεταβλητές" #: CClassInfo.class:605 msgid "Static methods" msgstr "" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "Σταθερές" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Ιδιότητες" #: CClassInfo.class:624 msgid "Variables" msgstr "Μεταβλητές" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "Γεγονότα" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 #, fuzzy msgid "This class is not creatable." msgstr "Η κλάση '&1' δεν μπορεί να δημιουργηθεί" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "Μόνο-ανάγνωση" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 #, fuzzy msgid "static function" msgstr "Δεν είναι συνάρτηση" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "Φόρτωμα πληροφορίας στο στοιχείο &1..." #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Κλάσεις" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Κλάση" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Περιγραφή" #: CComponent.class:1667 #, fuzzy msgid "This component is not stable yet." msgstr "Αυτό το έργο δεν υπάρχει." #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Αυτό το έργο είναι μόνο ανάγνωσης." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "Δημιουργός" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "Δημιουργοί" #: CComponent.class:1690 msgid "Implements" msgstr "Υλοποιεί" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Απαιτεί" #: CComponent.class:1717 msgid "Excludes" msgstr "Αποκλείει" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Εσωτερική αυτόχθονη κλάση" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Γραφική βιβλιοθήκη Cairo" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Σχεδιασμός διαγράμματος" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Συμπίεση & Αποσυμπίεση" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "Πρόσβαση σε βάση δεδομένων" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Στοιχεία ελέγχου ορίων δεδομένων" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "MySQL οδηγός βάσης " #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "ODBC οδηγός βάσης" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "PostgreSQL οδηγός βάσης" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "SQLite 2 οδηγός βάσης" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "SQLite 3 οδηγός βάσης" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Βοήθεια εφαρμογής αποσφαλμάτωσης" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "Διασύνδεση" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Αποτιμητής έκφρασης" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Ρουτίνες υποσημείωσης συντακτικού" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Περισσότερα στοιχεία ελέγχου για γραφικά στοιχεία" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Διάλογοι επαυξημένου προτύπου" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Διασύνδεση Multi Document" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 #, fuzzy msgid "Terminal emulator" msgstr "Χρησιμοποίησε εξομοιωτή τερματικού" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ στοιχείο εναλλαγής" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "QT/GTK+ στοιχείο εναλλαγής" #: CDocumentation.class:88 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "QT/GTK+ στοιχείο εναλλαγής" #: CDocumentation.class:89 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "QT/GTK+ στοιχείο εναλλαγής" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "Διαχείριση εικόνας" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "Στοιχείο φιλτραρίσματος εικόνας" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "Ρουτίνες εικόνας από τη βιβλιοθήκη lmlib2" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "Αποθήκευση και φόρτωση εικόνας" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "XML εργαλεία που βασίζονται σε libxml" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 #, fuzzy msgid "Multimedia controls" msgstr "Πολυμέσα" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "MySQL ειδικές ρουτίνες" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "Προγραμματισμός δικτύωσης" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "Διαχείριση πρωτόκολλων δικτύωσης υψηλού επιπέδου" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "SMTP πελάτης" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "Τρισδιάστατος προγραμματισμός μ OpenGL" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "GNU αναλυτής επιλογών εντολών" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "Ταίριασμα Κανονικών εκφράσεων συμβατών με Perl" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "PDF απόδοση βασισμένη στη βιβλιόθηκη Poppler" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "QT4 εργαλειοθήκη" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "QT4 επέκταση εργαλειοθήκης" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "QT4 στοιχείο WebKit" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL με QT4 εργαλειοθήκη" #: CDocumentation.class:124 #, fuzzy msgid "QT5 toolkit" msgstr "QT4 εργαλειοθήκη" #: CDocumentation.class:125 #, fuzzy msgid "QT5 WebKit component" msgstr "QT4 στοιχείο WebKit" #: CDocumentation.class:126 #, fuzzy msgid "OpenGL with QT5 toolkit" msgstr "OpenGL με QT4 εργαλειοθήκη" #: CDocumentation.class:127 #, fuzzy msgid "QT5 toolkit extension" msgstr "QT4 επέκταση εργαλειοθήκης" #: CDocumentation.class:128 msgid "Report designer" msgstr "Αναφορά σχεδιαστή" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "SDL βιβλιοθήκη" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "SDL ήχος και διαχείριση CD-ROM" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Στοιχείο" #: CDocumentation.class:134 #, fuzzy msgid "SDL2 audio component" msgstr "Σχετικά με to αντικείμενο" #: CDocumentation.class:135 msgid "Application settings management" msgstr "Διαχείριση ρυθμίσεων εφαρμόγής" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Διαχείριση εικόνας" #: CDocumentation.class:138 #, fuzzy msgid "Graphical terminal applications development" msgstr "Γραφική εφαρμογή" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Σχετικά με to αντικείμενο" #: CDocumentation.class:140 #, fuzzy msgid "Web applications utility component" msgstr "Εργαλεία εφαρμογών παγκόσμιου ιστού" #: CDocumentation.class:141 msgid "Video capture" msgstr "Λήψη βίντεο" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "Συμβατότητα Visual Basic" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "Πρωτόκολο XML-RPC" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "Εργαλεία εφαρμογών παγκόσμιου ιστού" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 #, fuzzy msgid "Web application development" msgstr "Εργαλεία εφαρμογών παγκόσμιου ιστού" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "Διαχείριση γραφικής φόρμας" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "Διαχείριση βρόχου γεγονότος" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "OpenGL εμφάνιση" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 #, fuzzy msgid "Insert today's date" msgstr "&Εισαγωγή" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "Χώρα" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Παρέχει" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Φόρμα" #: CModule.class:28 msgid "Forms" msgstr "Φόρμες" #: CModule.class:28 msgid "Gambas forms" msgstr "Gambas φόρμες" #: CModule.class:29 msgid "Gambas web pages" msgstr "Gambas ιστοσελίδες" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "Ιστοσελίδα" #: CModule.class:29 msgid "WebPages" msgstr "Ιστοσελίδες" #: CModule.class:30 msgid "Gambas reports" msgstr "Gambas αναφορές" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "Αναφορά" #: CModule.class:30 msgid "Reports" msgstr "Αναφορές" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Gambas φόρμες" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Φόρμα" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Φόρμες" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas φόρμες" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Φόρμα" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Φόρμες" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 #, fuzzy msgid "IDE extensions" msgstr "Αυτόματη επέκταση" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Ακύρωση" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Θέλεις πράγματι να διαγράψεις αυτό το αρχείο ;" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 #, fuzzy msgid "Unable to uninstall software:" msgstr "Αδυναμία σύνδεσης στη βάση δεδομένων." #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Το έργο δημιουργήθηκε με επιτυχία." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Έργο" #: CProjectTree.class:346 msgid "Sources" msgstr "Πηγαία" #: CProjectTree.class:348 msgid "Connections" msgstr "Συνδέσεις" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Δεδομένα" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "Σήμερα" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Χθες" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "Δημιούργησε πηγαία αρχειοθήκη" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "Παράβλεψη" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "Οι ακόλουθες κλάσεις έχουν κυκλική κληρονομικότητα:" #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "Αδυναμία αποθήκευσης έργου." #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Δεν μπορεί να δημιουργηθεί το εκτελέσιμο." #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Αδυναμία αποθήκευσης έργου." #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Χθες" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 #, fuzzy msgid "Unable to push the project." msgstr "Αδυναμία αποθήκευσης έργου." #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 #, fuzzy msgid "Last commit" msgstr "Επικόλλησε σαν σχόλια" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Τρέχων αντικείμενο" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Δεν μπορεί να δημιουργηθεί το έργο!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Δεν μπορεί να δημιουργηθεί το έργο!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Πρόσφατα έργα" #: CVersionControlGit.class:319 #, fuzzy msgid "Status" msgstr "Γραμμή κατάστασης" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 #, fuzzy msgid "Remote repository URL" msgstr "Αποθετήριο" #: CVersionControlGit.class:373 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "Ο κατάλογος θα αφαιρεθεί στην επόμενη υποβολή." #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "Εντάξει" #: CVersionControlGit.class:411 #, fuzzy msgid "Solve conflict." msgstr "Σύγκρουση έκδοσης" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 #, fuzzy msgid "Remote revision" msgstr "Αφαίρεσε όλες τις εκφράσεις" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "πρώτο" #: Design.module:223 Project.module:2235 msgid "second" msgstr "δευτερόλεπτο" #: Design.module:225 Project.module:2237 msgid "third" msgstr "τρίτο" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "Το έργο δημιουργήθηκε με επιτυχία." #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Το πρόγραμμα έχει επιστρέψει\n" "την τιμή: &1" #: Design.module:968 msgid "Output terminal" msgstr "Τερματικό εξόδου" #: Design.module:996 msgid "No terminal emulator found." msgstr "Δεν βρέθηκε εξομοιωτής τερματικού." #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "Σχετικά με το Gambas" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "" "

Άδεια

\n" "\n" "

Αυτό το λογισμικό είναι ΕΛΕΥΘΕΡΟ ΛΟΓΙΣΜΙΚΟ. Μπορείς να το αναδιανέμειςΚΑΙ/Η τροποποιήσεις υπό τους όρους της άδειας GNU General Public License του Ιδρύματος Ελεύθερου Λογισμικού , είτε έκδοση 2, ή (κατά την επιλογή σου) μετέπειτα έκδοση.

\n" "\n" "

Αυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ. Δες την άδεια GNU General Public License για περισσότερες λεπτομέρειες .

\n" #: FColorChooser.form:15 msgid "Select a color" msgstr "Επιλογή χρώματος" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "Σύστημα" #: FColorChooser.form:35 msgid "Free" msgstr "Ελεύθερο" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "Δεν τερμάτισε αλλά είναι σταθερό" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "Πειραματικό" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "Αφαίρεσε τα όλα" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "Τα στοιχεία είναι ασύμβατα:
&1." #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "Το &1 στοιχείο χρειάζεται ένα από τα ακόλουθα στοιχεία:
&2." #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "Το &1 στοιχείο χρειάζεται το &2 στοιχείο. " #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Επιλογή γραμματοσειράς" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Επαναφόρτωση" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "Σμίκρυνση" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "Μεγένθυση" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "&Επεξεργασία" #: FConflict.class:14 #, fuzzy msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "Αυτό το αρχείο έρχεται σε σύγκρουση με την αναθεώρηση #&1.\n" "Πρέπει να επιλύσεις τη σύγκρουση για να μπορέσεις να χρησιμοποιήσεις το αρχείο." #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Κείμενο" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "Εικόνα" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Αυτό το αρχείο έχει τροποποιηθεί.\n" "Θέλεις πράγματι να κλείσεις το διάλογο;" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Δεν έχουν επιλυθεί μερικές συγκρούσεις." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Αδυναμία επίλυσης σύγκρουσης." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Αυτό το αρχείο έχει τροποποιηθεί.\n" "Θέλεις πράγματι να ανοίξεις άλλο αρχείο;" #: FConflict.class:267 msgid "Conflict files" msgstr "Συγκρουόμενα αρχεία" #: FConflict.form:31 msgid "Version conflict" msgstr "Σύγκρουση έκδοσης" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Αποκοπή" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Αντιγραφή" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Επικόλληση" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Αναίρεση" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Επανέλαβε" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Εσοχή" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "Αφαίρεση εσοχης" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Άνοιγμα" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Αποθήκευση" #: FConflict.form:160 msgid "Solve" msgstr "Επίλυσε" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Κλείσε" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "(Δηλώσεις)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "Προχωρημένα" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Σχόλιο" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Αφαίρεση σχολίου" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "Ειδική επικόλληση" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Επιλογή όλων" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Πήγαινε στη γραμμή" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "Αναζήτηση επομένου" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "Αναζήτηση προηγούμενου" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Προβολή" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 #, fuzzy msgid "Automatic word wrap" msgstr "Αυτοματοποίηση" #: FConflictEditor.form:233 FTextEditor.form:284 #, fuzzy msgid "Indent with tab" msgstr "Εσοχή" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "Κανένας διαχωρισμός" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "Οριζόντιος διαχωρισμός" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "Κάθετος διαχωρισμός" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "Τέλος γραμμής" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "Άνοιξε κώδικα" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "Επικόλλησε σαν αλφαριθμητικό" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "Επικόλλησε σαν αλφαριθμητικό πολλών γραμμών" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "Επικόλλησε σαν σχόλια" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "Επεξεργαστής κειμένου" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Κώδικας" #: FConflictEditor.form:377 #, fuzzy msgid "Conflict solved" msgstr "Συγκρουόμενα αρχεία" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Σύγκρουση έκδοσης" #: FConflictEditor.form:518 #, fuzzy msgid "Next conflict" msgstr "Σύγκρουση έκδοσης" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Όνομα" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Τύπος" #: FConnectionEditor.class:61 msgid "Length" msgstr "Μήκος" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Προκαθορισμένη τιμή" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Μεταγλώττιση" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Ευρετήριο" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Μοναδικό" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Πεδίο" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Αδυναμία σύνδεσης στη βάση δεδομένων." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Μην αποθηκεύεις" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "Ο πίνακας '&1' έχει τροποποιηθεί. Θέλετε να τον αποθηκεύσετε;" #: FConnectionEditor.class:596 #, fuzzy msgid "No record" msgstr "Καμία εισαγώμενη εγγραφή," #: FConnectionEditor.class:598 #, fuzzy msgid "One record" msgstr "Εισήχθει μια εγγραφή." #: FConnectionEditor.class:600 #, fuzzy msgid "&1 records" msgstr "&1 εισαγωγή εγγραφών" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "Αδυναμία φόρτωσης πίνακα '&1'." #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "Αδυναμία εκτέλεσης ερωτήματος." #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "απεριόριστο" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "Blob" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "Λογική" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Ημερομηνία" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "Πραγματικος" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "Ακέραιος" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "-" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "Σειριακό" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "Αλφαριθμητικό" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "Το όνομα αυτό χρησιμοποιείται ήδη." #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "Παρακαλώ εισήγαγε αριθμό." #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "Το μήκος πρέπει να είναι μεγαλύτερο από 1 και μικρότερο από 255." #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "Αταίριαστοι τύποι." #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "Το όνομα αυτό υπάρχει ήδη." #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "Το πεδίο χρησιμοποιείται σε ένα ευρετήριο." #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "Ο πίνακας '&1' δεν έχει πρωταρχικό κλειδί." #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "Δεν μπορεί να γραφτεί ο πίνακας '&1'." #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "Θέλεις πράγματι να διαγράψεις τον πίνακα '&1';" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "Δεν μπορεί να γίνει η διαγραφή του πίνακα '&1'." #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "Θελεις πραγματικά να αφαιρέσεις τις επιλεγμένες γραμμές;" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Επεξεργαστής σύνδεσης" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Νέος πίνακας" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Διαγραφή πίνακα" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Αφαίρεση" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Μετονομασία πίνακα" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Μετονομασία" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Εισαγωγή αρχείου κειμένου" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "Εισαγωγή " #: FConnectionEditor.form:213 msgid "Fields" msgstr "Πεδία" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Πρόσθηκη" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "Κάτω" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "Πάνω" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Αντιγραφή λίστας πεδίων" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Ευρετήρια" #: FConnectionEditor.form:293 msgid "New index" msgstr "Νέο ευρετήριο" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Εκτέλεση ερωτήματος" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Νέο" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Καθάρισε" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "Επεξεργασία" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Εξαγωγή" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Διαγραφή" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Επιλογή όλων" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "Αποεπιλογή όλων" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "(Κανένας γονέας)" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "Δεν μπορεί να προστεθεί το αρχείο." #: FCreateFile.form:37 msgid "New file" msgstr "Νέο αρχείο" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Επιλογές" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Πλάτος" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Ύψος" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Διαχείριση κουτίου διαλόγου" #: FCreateFile.form:155 msgid "Parent class" msgstr "Γονική κλαση" #: FCreateFile.form:168 msgid "Exported" msgstr "Εξαγώμενο" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "Αυτόματη επέκταση" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "Δεν μεταφράζεται" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Αυτόματη επέκταση" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Απέτυχε ή έξοδος του έργου." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Δεν μπορεί να δημιουργηθεί το έργο!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Παρακαλώ επέλεξε τοποθεσία μενού" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Παρακαλώ εισήγαγε την τοποθεσία του αποθετηρίου." #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Νέο έργο" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "Τύπος έργου" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Επιλογή καταλόγου" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Ιδιότητες έργου" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Το έργο είναι μεταφράσιμο" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "Άνοιξε σε άλλο παράθυρο" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Αποθετήριο" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "Αποσφαλμάτωση σε εξέλιξη" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Κονσόλα" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Σημεία διακοπής" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 #, fuzzy msgid "Search result" msgstr "Λίστα αναζήτησης" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "δεν είναι διαθέσιμο" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Τιμή" #: FDebugExpr.class:508 msgid "Key" msgstr "Κλειδί" #: FDebugExpr.class:514 msgid "Symbol" msgstr "Σύμβολο" #: FDebugExpr.form:33 msgid "Watch" msgstr "Παρακολούθησε" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "Αποπροσάρτηση κονσόλας" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Γραμμή" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Συνάρτηση" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Αρχείο" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "Μήνυμα" #: FDebugInfo.class:126 msgid "native code" msgstr "Αυτόχθωνος κώδικας" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Παρακολοθούμενη έκφραση" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Θελεις πραγματικά να καθαρίσεις τη λίστα των εκφράσεων;" #: FDebugInfo.class:1070 #, fuzzy msgid "File not loaded" msgstr "Δεν βρέθηκα το αρχείο!" #: FDebugInfo.class:1209 msgid "Current object" msgstr "Τρέχων αντικείμενο" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "Τοπικές μεταβλητές" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "Αποσφαλμάτωση" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "Αφαίρεσε τρέχων έκφραση " #: FDebugInfo.form:124 msgid "Add expression" msgstr "Πρόσθηκη έκφρασης" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "ΑΑφαίρεσε όλα τα σημεία διακοπής" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Εναλλαγή σημείου διακοπής" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Πίνακας" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Εναλλαγή σημείου διακοπής" #: FDebugInfo.form:201 #, fuzzy msgid "Enable" msgstr "Πίνακας" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "ΑΑφαίρεσε όλα τα σημεία διακοπής" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "Αλφαριθμητικό αναζήτησης δεν μπορεί να βρεθεί." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "Υποβολή" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Συγχρονισμός" #: FDebugInfo.form:379 FMain.form:508 #, fuzzy msgid "Revert all changes" msgstr "ΑΑφαίρεσε όλα τα σημεία διακοπής" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Πήγαινε" #: FEditor.form:243 msgid "Find definition" msgstr "Αναζήτηση ορισμού" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Εκτέλεση μέχρι τρέχουσα γραμμή" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Εναλλαγή σημείου διακοπής" #: FEditor.form:314 msgid "Watch expression" msgstr "Παρακολοθούμενη έκφραση" #: FEditor.form:323 msgid "Open form" msgstr "Άνοιξε φόρμα" #: FEditor.form:330 FMain.form:1067 #, fuzzy msgid "Run this class" msgstr "Γονική κλαση" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Επεξεργαστής κειμένου" #: FEditor.form:523 FTextEditor.form:507 #, fuzzy msgid "Insert special character" msgstr "Λανθασμένοι χαρακτήρες" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "Λίστα διαδικασιών" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Αρχεία CVS" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "&Αντικατάσταση" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "Χαρακτήρας οριοθέτησης" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "Χαρακτήρας που περικλείει" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Χρήστης" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Συνθηματικό" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Θυμίσου συνθηματικό" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Παρακαλώ εισήγαγε την διεύθυνση σου ηλεκτρονικής αλληλογραφίας." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Αδυναμία εκτέλεσης ερωτήματος." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Θυμίσου συνθηματικό" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Αδυναμία άνοιγματος σύνδεσης." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Επεξεργασία πεδίου λίστας" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Σύνδεση" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "Πίνακας" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "Αλλαγές" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "Στατιστικά" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "Το αρχείο είναι κλειδωμένο και θα αφαιρεθεί στην επόμενη υποβολή." #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "Το αρχείο αυτό δεν έχει έκδοση και πρέπει να προστεθεί στο αποθετήριο." #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "Αυτό το αρχείο δεν έχει τροποποιηθεί από την τελαυταία υποβολή." #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Συνέχισε" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "Θα ακυρώσεις τις αλλαγές σου!" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Μονάδες" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 #, fuzzy msgid "Undo changes" msgstr "Αλλαγές" #: FFontChooser.form:12 msgid "Select a font" msgstr "Επιλογή γραμματοσειράς" #: FForm.class:134 msgid "Bad form file" msgstr "Κακή μορφή αρχείου" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Άγνωστο αναγνωριστικό: &1" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Δεν μπορεί να δημιουργηθεί ο πίνακας '&1'." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "Αλλαγή σε" #: FForm.form:213 msgid "Select" msgstr "Επιλογή" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Επιλογή γραμματοσειράς" #: FForm.form:239 msgid "Arrangement" msgstr "Διευθέτηση" #: FForm.form:243 msgid "Bring to foreground" msgstr "Φέρε στο προσκήνιο" #: FForm.form:250 msgid "Send to background" msgstr "Στείλε στο παρασκήνιο" #: FForm.form:260 msgid "Horizontal" msgstr "Οριζόντια" #: FForm.form:267 msgid "Rows" msgstr "Σειρές" #: FForm.form:273 msgid "Vertical" msgstr "Κάθετα" #: FForm.form:280 msgid "Columns" msgstr "Στήλες" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Ευθυγράμμιση" #: FForm.form:305 msgid "Align to left" msgstr "Ευθυγράμμιση αριστερά" #: FForm.form:311 msgid "Align to right" msgstr "Ευθυγράμμιση δεξιά" #: FForm.form:317 msgid "Align to top" msgstr "Ευθυγράμμιση πάνω" #: FForm.form:323 msgid "Align to bottom" msgstr "Ευθυγράμμιση κάτω" #: FForm.form:332 msgid "Same width" msgstr "Ίδιο πλάτος" #: FForm.form:338 msgid "Same height" msgstr "Ίδιο ύψος" #: FForm.form:347 msgid "Show tab" msgstr "Δείξε στηλοθέτες" #: FForm.form:355 msgid "Move tab" msgstr "Μετακίνηση στηλοθέτη" #: FForm.form:360 msgid "First" msgstr "πρώτο" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Προηγούμενο" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Επόμενο" #: FForm.form:381 msgid "Last" msgstr "Τελευταίο" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Επεξεργαστής μενού" #: FForm.form:401 msgid "Event" msgstr "Συμβάν" #: FForm.form:415 #, fuzzy msgid "Run this form" msgstr "Εκτέλεσε αυτή την εντολή μετά" #: FForm.form:568 msgid "Toggle grid" msgstr "Εναλλαγή πλέγματος" #: FForm.form:577 FImageEditor.form:514 #, fuzzy msgid "Toggle information tooltip" msgstr "Πληροφορίες πακέτου" #: FForm.form:696 msgid "Move tab first" msgstr "Μετακίνηση στηλοθέτη πρώτο" #: FForm.form:703 msgid "Move tab left" msgstr "Μετακίνηση στηλοθέτη αριστερά" #: FForm.form:710 msgid "Move tab right" msgstr "Μετακίνηση στηλοθέτη δεξιά" #: FForm.form:717 msgid "Move tab last" msgstr "Μετακίνηση στηλοθέτη τελευταίο" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "Έντονα " #: FForm.form:753 msgid "Italic" msgstr "Πλάγια" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "Υπογράμμιση" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Υποβαθρο" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 #, fuzzy msgid "Lock / unlock form" msgstr "Κλείδωσε τη φόρμα" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Ιεραρχία" #: FFormStack.form:24 msgid "Move top" msgstr "Μετακίνηση στο πάνω μέρος" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Μετακίνηση πάνω" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Μετακίνηση κάτω" #: FFormStack.form:42 msgid "Move bottom" msgstr "Μετακίνηση στο κάτω μέρος" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "Προκαθορισμένη γλώσσα" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Πλοηγός βοήθειας" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Πήγαινε πίσω" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "Μετάβαση εμπρός" #: FHelpBrowser.form:120 msgid "Print" msgstr "Εκτύπωση" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Μετάφραση" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Οριζόντια αναστροφή" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Κάθετη εναλλαγή" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Περιστρόφή αριστερόστροφα" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Περιστροφή δεξιόστροφα" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Επιλογή" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Προτιμήσεις" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Επιλογή" #: FImageEditor.form:283 #, fuzzy msgid "Exclusive or" msgstr "Αποκλείει" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Σχεδίαση" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Ορθογώνιο" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Έλλειψη" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "-" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "Χρώμα" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 #, fuzzy msgid "Select gradient stop color" msgstr "Επιλογή χρώματος" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Ακτίνα" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 #, fuzzy msgid "Colorize" msgstr "Χρώμα" #: FImageProperty.form:399 #, fuzzy msgid "Desaturate" msgstr "Χαρακτηριστικά" #: FImageProperty.form:407 #, fuzzy msgid "Make transparent" msgstr "Αποθήκευση μετάφρασης" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Γραμμή" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Γραμμή" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Μέγεθος" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Μετάφραση" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "Προεπισκόπηση" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Μηδενισμός" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 msgid "Right align" msgstr "" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas κλάσεις" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas μονάδες" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "Διαδοχικά Φύλλα Στυλ (CSS)" #: FImportFile.class:32 msgid "HTML files" msgstr "Αρχεία HTML" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Αρχεία εικόνων" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Δεν μπορεί να ανοίξει το αρχείο" #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Εισαγωγή αρχείου" #: FImportFile.form:24 #, fuzzy msgid "Create symbolic links" msgstr "Δημιούργησε έναν συμβολικό σύνδεσμό" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Όλα τα αρχεία" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Αυτόματο κλειδί)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Πεδίο_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Όχι αρκετές τιμές" #: FImportTable.class:393 msgid "Too many values" msgstr "Πάρα πολλές τιμές" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Ακυρώθηκε από το χρήστη" #: FImportTable.class:427 msgid "No record imported." msgstr "Καμία εισαγώμενη εγγραφή," #: FImportTable.class:429 msgid "One record imported." msgstr "Εισήχθει μια εγγραφή." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 εισαγωγή εγγραφών" #: FImportTable.form:35 msgid "Import file" msgstr "Εισαγωγή αρχείου" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "Επέλεξε το CVS αρχείο προς εισαγωγή" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "Πηγαίο" #: FImportTable.form:79 msgid "Charset" msgstr "Σύνολο χαρακτήρων" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "Σβήσε άχρηστα λευκά κενά" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "Προορισμός" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "Η πρώτη γραμμή περιέχει ονόματα πεδίων" #: FImportTable.form:177 msgid "Key field" msgstr "Πεδία κλειδίου" #: FList.class:103 msgid "Item &1" msgstr "Αντικείμενο &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Θέλεις πράγματι να καθαρίσεις τη λιστα;" #: FList.form:25 msgid "Edit list property" msgstr "Ιδιότητα επεξεργασίας λίστας" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Μετατροπή" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Θέλεις πράγματι να διαγράψεις τον κατάλογο ;" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Θέλεις πράγματι να διαγράψεις αυτό το αρχείο ;" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Δεν μπορεί να γίνει η διαγραφή αρχείου ή καταλόγου" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "Ταξινόμηση στο μονοπάτι" #: FMain.class:751 msgid "&Clear history" msgstr "&Καθάρισε το ιστορικό" #: FMain.class:935 msgid "New folder" msgstr "Νέος κατάλογος" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "Τα εργαλεία μετάφρασης GNU δεν είναι εγκατεστημένα στο σύστημά σου.\n" "\n" "Εγκαταστήστε τα σας παρακαλούμε για μπορείτενα κάνετε τη μετάφραση." #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "Όλα τα εφεδρικά αρχεία ή παραγόμενα αρχεία πρέπει να αφαιρεθούν από τον κατάλλογο του εγχειρήματος" #: FMain.class:1847 msgid "Clean" msgstr "Καθαρισμός" #: FMain.class:2164 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Αυτό το αρχείο έχει τροποποιηθεί.\n" "\n" "Όλες οι αλλαγές θα χαθούν." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Κακό όρισμα" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Άνοιγμα έργου" #: FMain.form:289 msgid "Open recent" msgstr "Άνοιξε πρόσφατο" #: FMain.form:297 msgid "Open example" msgstr "Άνοιξε παράδειγμα" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Αποθήκευση έργου" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Αποθήκευση έργου ως" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Επέλεξε ένα έργο" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Τερματισμός" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Αποθήκευση" #: FMain.form:418 msgid "Compile" msgstr "Μεταγλώττισε" #: FMain.form:425 msgid "Compile All" msgstr "Μεταγλώττισε τα όλα" #: FMain.form:435 msgid "Translate" msgstr "Μετάφραση" #: FMain.form:444 msgid "Make" msgstr "Δημιούργησε" #: FMain.form:448 msgid "Executable" msgstr "Εκτελέσιμο" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "Πηγαία αρχειοθήκη" #: FMain.form:462 msgid "Installation package" msgstr "Εγκατάσταση πακέτου" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "Καθαρισμός" #: FMain.form:546 msgid "Refresh" msgstr "Ανανέωση" #: FMain.form:568 msgid "Run" msgstr "Εκτέλεση" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Κακό όρισμα" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 msgid "GUI component" msgstr "" #: FMain.form:615 msgid "Current desktop" msgstr "" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Παύση" #: FMain.form:658 msgid "Stop" msgstr "Σταμάτημα" #: FMain.form:665 msgid "Step" msgstr "Βήμα" #: FMain.form:672 msgid "Forward" msgstr "Μπροστά" #: FMain.form:679 msgid "Finish" msgstr "Τερματισμός" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "Καθάρισε όλα τα σημεία διακοπής" #: FMain.form:699 msgid "Close all debug windows" msgstr "Κλείσε όλα τα παράθυρα αποσφαλμάτωσης" #: FMain.form:738 msgid "Status bar" msgstr "Γραμμή κατάστασης" #: FMain.form:745 msgid "Hide menubar" msgstr "Απόκρυψη γραμμής μενού" #: FMain.form:769 msgid "Close all windows" msgstr "Κλείσε όλα τα παράθυρα" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "Αναζήτηση" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Αντικατάσταση" #: FMain.form:796 msgid "Browse project" msgstr "Πλοήγηση στο έργο" #: FMain.form:803 msgid "Open a terminal" msgstr "Ανοιξε τερματικό" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "Συντομεύσεις" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Προτιμήσεις" #: FMain.form:854 msgid "Directory" msgstr "Κατάλογος" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Μονάδα" #: FMain.form:927 msgid "HTML file" msgstr "Αρχείο HTML" #: FMain.form:934 msgid "Style sheet" msgstr "Φύλλο στυλ" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "Άλλα" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Πρόσφατα" #: FMain.form:981 #, fuzzy msgid "Open in file manager" msgstr "Ρυθμίσεις διαχείρισης αρχείων" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Άνοιγμα έργου" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "Αντιγραφή αρχείου επιρράματος (patch)" #: FMain.form:1060 msgid "Startup class" msgstr "Κλάση Εκκίνησης" #: FMain.form:1075 msgid "Add to repository" msgstr "Προσθήκη στο αποθετήριο" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Αποθήκευση τροποποιημένων αρχείων" #: FMain.form:1098 msgid "Show files in conflict" msgstr "" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Μην αποθηκεύεις" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "Νέα σύνδεση" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Συμβουλές της ημέρας" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Ιδιότητες έργου" #: FMain.form:1311 msgid "Refresh project" msgstr "Ανανέωση έργου" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Δημιούργησε εκτελέσιμο" #: FMain.form:1353 msgid "Make source archive" msgstr "Δημιούργησε πηγαία αρχειοθήκη" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "Δημιούργησε πακέτο εγκατάστασης" #: FMain.form:1382 msgid "Properties sheet" msgstr "Φύλλο ιδιοτήτων" #: FMain.form:1391 msgid "Toolbox" msgstr "Εργαλειοθήκη" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "Αναζήτηση" #: FMain.form:1433 msgid "Compile all" msgstr "Μεταγλώττισε τα όλα" #: FMain.form:1476 msgid "Finish current function" msgstr "Τερματισμός τρέχουσας συνάρτησης" #: FMain.form:1492 #, fuzzy msgid "Show menubar" msgstr "Δείξε αριθμούς γραμμών" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Αρχείο" #: FMain.form:1606 msgid "&Project" msgstr "&Εργο" #: FMain.form:1618 msgid "&Debug" msgstr "Απο&σφαλμάτωση" #: FMain.form:1630 msgid "&View" msgstr "&Προβολή" #: FMain.form:1642 msgid "&Tools" msgstr "Ερ&γαλεία" #: FMain.form:1654 msgid "&?" msgstr "-" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas εφαρμογές" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "Εκτέλεσε αυτή την εντολή μετά" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) θα αντικαταστεθεί από το μονοπάτι του εκτελέσιμου" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Κράτησε τις πληροφορίες αποσφαλμάτωσης στο εκτελέσιμο" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "Δημιούργησε μια συντόμευση στην επιφάνεια εργασίας" #: FMakeInstall.class:123 msgid "Package" msgstr "Πακέτο" #: FMakeInstall.class:124 msgid "Min. version" msgstr "Ελαχ. έκδοση" #: FMakeInstall.class:125 msgid "Max. version" msgstr "Μέγ. έκδοση" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Δημιουργία πακέτου..." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Τα πακέτα δημιουργήθηκαν με επιτυχία." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Παρακαλώ εισήγαγε το ονομά σου." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Παρακαλώ εισήγαγε την διεύθυνση σου ηλεκτρονικής αλληλογραφίας." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Παρακαλώ εισήγαγε όνομα μενού." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "Δεν υπάρχει CHANGELOG καταχώριση για αυτή την έκδοση." #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Παρακαλώ εισήγαγε την πρώτη καταχώρηση του CHANGELOG." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "Παρακαλώ επέλεξε τουλάχιστον μια διανομή στόχο." #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "Παρακαλώ επέλεξε την ομάδα πακέτου για κάθε διανομή στόχο." #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "Παρακαλώ επέλεξε ομάδα πακέτου." #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "Παρακαλώ επέλεξε την τοποθεσία μενού για κάθε διανομή στόχο." #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "Παρακαλώ επέλεξε τοποθεσία μενού" #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "Το πακέτο δεν μπορεί να αποθηκευτεί μέσα στον κατάλογο του έργου." #: FMakeInstall.class:518 msgid "Initial release" msgstr "Αρχική έκδοση" #: FMakeInstall.class:778 msgid "Menus" msgstr "Μενού" #: FMakeInstall.class:846 msgid "Groups" msgstr "Ομάδες" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "Λανθασμένοι χαρακτήρες" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "Θέλεις πράγματι να αφαιρέσεις όλες τις επιπλέον εξαρτήσεις ;" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "Θελεις πραγματικά να διαγράψεις όλα τα επιπλέον αρχεία;" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "Επέλεξε τον κατάλογο προορισμού" #: FMakeInstall.form:143 msgid "Create package" msgstr "Δημιούργησε πακέτο" #: FMakeInstall.form:146 msgid "Package information" msgstr "Πληροφορίες πακέτου" #: FMakeInstall.form:152 msgid "Package name" msgstr "Όνομα πακέτου" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "Όνομα πωλητή" #: FMakeInstall.form:214 FOption.form:380 #, fuzzy msgid "Vendor prefix" msgstr "Όνομα πωλητή" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "Πληροφορίες συντηρητή" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "URL" #: FMakeInstall.form:317 msgid "Changelog" msgstr "Ημερολόγιοαλλαγών" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "Διανομή στόχου" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "Ομάδα πακέτου" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "Εγγραφή μενού" #: FMakeInstall.form:627 msgid "Categories" msgstr "Κατηγορίες" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "Τύποι mime" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "Επιπλέον εξαρτήσεις" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "Ίδιες εξαρτήσεις για όλους τους στόχους" #: FMakeInstall.form:738 msgid "Extra files" msgstr "Επιπλέον αρχεία." #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "Ίδια αρχεία για όλους τους στόχους" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "Έπιπλεον δοκιμές autoconf" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Πρόσθεσε επιπλέον δοκιμαστικά στη διαδικασία διαμόρφωσης\n" "

" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "Κατάλογος προορισμού" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "Δημιούργησε καταλόγους για κάθε διανομή" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Δημιούργησε πακέτο" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Πακέτα πηγαίου κώδικα" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "Παρακαλώ εισήγαγε όνομα μενού." #: FMenu.class:318 msgid "Bad menu name !" msgstr "Κακό όνομα μενού!" #: FMenu.class:324 msgid "Bad group name !" msgstr "Κακό όνομα ομάδας !" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Αυτό το μενού είναι πολύ βαθύ !" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "τροποποιημένο" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "&Εισαγωγή" #: FMenu.form:100 #, fuzzy msgid "Insert menu before" msgstr "&Εισαγωγή" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Εισαγωγή" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Διαγραφή" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Κάνε κλικ στην Εισαγωγή για να προσθέσεις νεο μενού." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Παρακαλώ εισήγαγε το όνομα της βάσης δεδομένων." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Παρακαλώ εισήγαγε συνθηματικό." #: FNewConnection.class:147 msgid "Connection properties" msgstr "Ιδιότητες σύνδεσης" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Επιλογή καταλόγου" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Δημιούργησε βάση δεδομένων '&1'" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Διαγραφή βάσης δεδομένων '&1'" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Αδυναμία δημιουργίας βάσης δεδομένων." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Θέλεις πράγματι να διαγράψεις τη βάση δεδομένων '&1';" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Αδυναμία διαγραφής βάσης." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Υπολογιστής" #: FNewConnection.form:124 msgid "Path" msgstr "Μονοπάτι" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Θυμίσου συνθηματικό" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "Βάση δεδομένων" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Αγνόηση τη γραμματοσειρά της βάσης δεδομένων" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "Δημιούργησε πίνακα" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Παρακαλώ εισήγαγε το όνομα του νέου πίνακα." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Ο πίνακας '&1' υπάρχει ήδη." #: FNewTranslation.form:10 msgid "New translation" msgstr "Νέα μετάφραση" #: FOpenProject.form:22 msgid "Select a project" msgstr "Επέλεξε ένα έργο" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Παραδείγματα" #: FOption.class:4 msgid "Amber" msgstr "-" #: FOption.class:4 msgid "Amethyst" msgstr "-" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "" #: FOption.class:4 msgid "Gambas" msgstr "-" #: FOption.class:4 msgid "Obsidian" msgstr "-" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Επικόλληση" #: FOption.class:4 msgid "Quest" msgstr "Αναζήτηση" #: FOption.class:4 msgid "Quick" msgstr "Γρήγορα" #: FOption.class:4 msgid "Ruby" msgstr "-" #: FOption.class:4 msgid "Sapphire" msgstr "-" #: FOption.class:4 msgid "Visual" msgstr "Εικονικός" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Επιφάνεια εργασίας" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "(Προκαθορισμένη)" #: FOption.class:187 msgid "Define..." msgstr "Όρισε..." #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "Gambas επισήμανση αρχείων θεμάτων" #: FOption.class:237 msgid "Export a theme file" msgstr "Εξαγωγή αρχείου θέματος" #: FOption.class:462 msgid "Select a theme file" msgstr "Επέλεξε αρχείο θέματος" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "Πρέπει να επανεκκινήσεις την εφαρμογή για να δείς τις αλλαγές." #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Αδυναμία δημιουργίας βάσης δεδομένων." #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 #, fuzzy msgid "Network is not available." msgstr "δεν είναι διαθέσιμο" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Δεν μπορεί να γίνει η διαγραφή του πίνακα '&1'." #: FOption.class:1558 #, fuzzy msgid "Unable to uncompress documentation." msgstr "Αδυναμία άνοιγματος σύνδεσης." #: FOption.class:1569 #, fuzzy msgid "Unable to install documentation." msgstr "Αδυναμία άνοιγματος σύνδεσης." #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Εσοχή" #: FOption.form:352 #, fuzzy msgid "Package maintainer" msgstr "Όνομα πακέτου" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Προκαθορισμένη τιμή" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Όχι" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Ναι" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Έργο" #: FOption.form:458 msgid "Default tab size" msgstr "Προκαθορισμένο μέγεθος στηλοθέτη" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "κενό(ά)" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "Προκαθορισμένες διαδικασίες αναδίπλωσης" #: FOption.form:540 #, fuzzy msgid "Activate version control" msgstr "Στοιχεία ελέγχου ορίων δεδομένων" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Εικόνα" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Αυτόματη επέκταση" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Αρχεία μετάφρασης" #: FOption.form:653 msgid "Interface" msgstr "Διασύνδεση" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 #, fuzzy msgid "Show shadows" msgstr "Δείξε στηλοθέτες" #: FOption.form:704 msgid "Show tooltips" msgstr "Δείξε υποδείξεις" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "Μέγεθος εργαλειοθήκης" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "Κανονικό" #: FOption.form:778 msgid "Small" msgstr "Μικρό" #: FOption.form:790 msgid "Sort properties" msgstr "Ταξινόμηση ιδιοτήτων" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "Ελαχιστοποίηση κατά το χρόνο εκτέλεσης" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "Σιωπηλές εξωτερικές εντολές" #: FOption.form:867 msgid "Fonts" msgstr "Γραμματοσειρές" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 #, fuzzy msgid "Debugger size" msgstr "Αποσφαλμάτωση σε εξέλιξη" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "Βοήθεια" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Χρησιμοποίησε fixed γραμματοσειρά" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 #, fuzzy msgid "Themes" msgstr "Θέμα" #: FOption.form:1087 msgid "Icon theme" msgstr "Θέμα εικονιδίων" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Επισήμανση" #: FOption.form:1117 msgid "Import theme" msgstr "Εισαγωγή θέματος" #: FOption.form:1123 msgid "Export theme" msgstr "Εξαγωγή θέματος" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Επισήμανση τρέχουσας γραμμή" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "Επισήμανε τροποποιημένες γραμμές" #: FOption.form:1230 msgid "Show line numbers" msgstr "Δείξε αριθμούς γραμμών" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "Διαχωρισμός διαδικασιών" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 #, fuzzy msgid "Show Preview" msgstr "Προεπισκόπηση" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "ΛέξειςΚλειδίου με κεφαλαία" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 #, fuzzy msgid "Local variable declaration" msgstr "Τοπικές μεταβλητές" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Σύνδεση" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Επικόλλησε σαν αλφαριθμητικό" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "Εμφάνιση βοήθειας ιδιότητας" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 #, fuzzy msgid "Documentation" msgstr "Χώρα" #: FOption.form:1667 #, fuzzy msgid "Use offline documentation" msgstr "Αδυναμία άνοιγματος σύνδεσης." #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "Εφαρμογές" #: FOption.form:1755 msgid "Browser" msgstr "Πλοηγός" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "Τερματικό" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Κονσόλα - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Αποπροσάρτηση κονσόλας" #: FOutput.form:72 msgid "Keep above" msgstr "Κράτησε τα παραπάνω" #: FOutput.form:78 msgid "Clear console" msgstr "Καθάρισε τη κονσόλα" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "Ανοιξε τερματικό" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Άνοιξε πρόσφατο" #: FOutput.form:130 msgid "Use system charset" msgstr "Χρήση σύνολου χαρακτήρων συστήματος " #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Αδυναμία επικόλλησης κειμένου." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Περιεχόμενα πρόχειρου" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Επικόλλησε κανονικά" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Επικόλλησε με PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Επαναφορά" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Αδυναμία φόρτωσης πίνακα '&1'." #: FProfile.class:647 msgid "Calls" msgstr "κλήσεις" #: FProfile.class:650 msgid "Duration" msgstr "Διάρκεια" #: FProfile.class:653 msgid "Average" msgstr "Μεσαίος" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "Κληθέντα" #: FProfile.form:138 msgid "Callers" msgstr "Κλήσεις" #: FProjectProperty.class:159 msgid "Variable" msgstr "Μεταβλητή" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Η τιμή προσκόλλησης είναι λάθος" #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Εκτελέσιμο" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 #, fuzzy msgid "Information about component" msgstr "Φόρτωμα πληροφορίας στο στοιχείο &1..." #: FProjectProperty.class:964 msgid "Information about library" msgstr "" #: FProjectProperty.class:1454 #, fuzzy msgid "Select a Gambas executable" msgstr "Δεν μπορεί να δημιουργηθεί το εκτελέσιμο." #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Δημιούργησε εκτελέσιμο" #: FProjectProperty.form:267 msgid "General" msgstr "Γενικά" #: FProjectProperty.form:304 msgid "Component" msgstr "Στοιχείο" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "Βιβλιοθήκη" #: FProjectProperty.form:311 #, fuzzy msgid "Vendor" msgstr "Όνομα πωλητή" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Έκδοση" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Τίτλος" #: FProjectProperty.form:389 #, fuzzy msgid "Information" msgstr "Πληροφορίες έργου" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "Τερματισμένο και σταθερό" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 #, fuzzy msgid "Include information from" msgstr "Πληροφορίες πακέτου" #: FProjectProperty.form:484 #, fuzzy msgid "Required features" msgstr "Απαιτεί" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 #, fuzzy msgid "Require" msgstr "Απαιτεί" #: FProjectProperty.form:567 #, fuzzy msgid "Exclude" msgstr "Αποκλείει" #: FProjectProperty.form:579 msgid "Remove All" msgstr "Αφαίρεσε Όλα" #: FProjectProperty.form:586 msgid "Components" msgstr "Στοιχεία" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "Βιβλιοθήκες" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Προτιμήσεις" #: FProjectProperty.form:664 msgid "Environment" msgstr "Περιβάλλον" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Εισαγωγή" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Παράμετροι" #: FProjectProperty.form:746 msgid "Edition" msgstr "Έκδοση" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Μέγεθος στηλοθέτη" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Μεταγλώττιση" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "Τα σύμβολα της μονάδας είναι εξ'ορισμού δημόσια." #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Οι φόρμες ελέγχου είναι δημόσιεε" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Αυτή η γραμμή και η επόμενη θα αγνοηθούν" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "Δεν κατέστη δυνατή η υποβολή του έργου." #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "Αδυναμία ανανέωσης του έργου από το αποθετήριο." #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "Το έργο ανανεώθηκε με επιτυχία από το αποθετήριο." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Ανανέωση" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Μερικά αρχεία δεν έχουν αριθμό έκδοσης και πρέπει να τοποθετηθούν στο αποθετήριο με το χέρι." #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Απογορευμένοι χαρακτήρες στο όνομα ελέγχου." #: FProperty.class:389 msgid "This name is already in use." msgstr "Το όνομα αυτό χρησιμοποιείται ήδη." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Απογορευμένοι χαρακτήρες στην ομάδα ελέγχου." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Λανθασμένη ιδιότητα τιμής" #: FProperty.class:637 msgid "The name of the control." msgstr "Το όνομα του στοιχείου ελέγχου." #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "Η ομάδα συμβάντων στην οποία ανήκει το στοιχείο ελέγχου," #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Αν οι διαστάσεις της φόρμας και του αντικειμένου ελέγχου πρέπει να ακολουθούν την προκαθορισμένη γραμματοσειρά." #: FProperty.class:667 msgid "If the control is public." msgstr "Αν το αντικείμενο ελέγχου είναι δημόσιο(public)" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Κανένα" #: FProperty.form:47 msgid "Lock property" msgstr "Κλείδωσε την ιδιότητα" #: FProxy.form:37 msgid "Port" msgstr "Θύρα" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Το έργο δημιουργήθηκε με επιτυχία." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "Αδυναμία αποθήκευσης έργου." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Λανθασμένη ιδιότητα τιμής" #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Θελεις πραγματικά να διαγράψεις όλα τα επιπλέον αρχεία;" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Επέλεξε αρχείο θέματος" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Αρχεία εικόνων" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Περιγραφή" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Μέγεθος στηλοθέτη" #: FPublish.form:114 #, fuzzy msgid "Create menu entry" msgstr "Εγγραφή μενού" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 #, fuzzy msgid "Dependencies" msgstr "Επιπλέον εξαρτήσεις" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Περίγραμμα" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Αποθήκευση τροποποιημένων αρχείων" #: FSave.form:42 msgid "Save All" msgstr "Αποθήκευση Όλα" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Αδυναμία αποθήκευσης έργου." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "Αλφαριθμητικό αναζήτησης αντικαταστάθηκε μια φορά." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "Αλφαριθμητικό αναζήτησης αντικαταστάθηκε &1 φορές." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "Αναζήτηση & αντικατάσταση" #: FSearch.form:104 msgid "Case sensitive" msgstr "Διάκριση πεζών/κεφαλαίων" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "Κανονική έκφραση" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Επιπλέον αρχεία." #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Επισήμανση" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Επέλεξε ένα επιπλέον αρχείο" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Επέλεξε μια εικόνα" #: FSelectIcon.form:41 msgid "Stock" msgstr "Στοκ" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Άγνωστο" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Επιλογή καταλόγου" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Παιχνίδια" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Έκδοση" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "Βίντεο" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 #, fuzzy msgid "Accessories" msgstr "Απαγορευμένη πρόσβαση" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Διασύνδεση" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Έκφραση" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 #, fuzzy msgid "No software found." msgstr "Δεν βρέθηκε βοήθεια" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Ακυρώθηκε από το χρήστη" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Θέλεις πράγματι να διαγράψεις τον πίνακα '&1';" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Αδυναμία φόρτωσης πίνακα '&1'." #: FSoftwareFarm.class:557 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "Το έργο δημιουργήθηκε με επιτυχία." #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Θέλεις πράγματι να διαγράψεις τον πίνακα '&1';" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Αδυναμία μετονομασίας '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Θέλεις πράγματι να διαγράψεις τον πίνακα '&1';" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "Το έργο δημιουργήθηκε με επιτυχία." #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Θέλεις πράγματι να διαγράψεις τον πίνακα '&1';" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Αδυναμία μετονομασίας '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Το έργο δημιουργήθηκε με επιτυχία." #: FSoftwareFarm.class:618 #, fuzzy msgid "Unable to modify your vote." msgstr "Αδυναμία φόρτωσης πίνακα '&1'." #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Θέλεις πράγματι να διαγράψεις αυτό το αρχείο ;" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Αδυναμία μετονομασίας '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas φόρμες" #: FSoftwareFarm.form:155 FTranslate.form:200 #, fuzzy msgid "Show" msgstr "Δείξε στηλοθέτες" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Άνοιξε πρόσφατο" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Αρχεία CVS" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Δείξε υποδείξεις" #: FSoftwareFarm.form:393 #, fuzzy msgid "Download" msgstr "Κάτω" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "Επέλεξε πίνακα" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Ιδιότητα επεξεργασίας λίστας" #: FText.form:29 msgid "Use a fixed font" msgstr "Χρησιμοποίησε fixed γραμματοσειρά" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 msgid "Sort ascent" msgstr "" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Αδυναμία ανάγνωσης συμβουλής της ημέρας !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Δείξε συμβουλές στην εκκίνηση" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Το έργο είναι κενό. Δεν υπάρχει τίποτα για μετάφραση." #: FTranslate.class:74 msgid "Language" msgstr "Γλώσσα" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Μετάφραση" #: FTranslate.class:167 msgid "Translation files" msgstr "Αρχεία μετάφρασης" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Δεν μπορεί να γίνει η ανάγνωση του αρχείου μετάφρασης για τη γλώσσα '&1'" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Δεν μπορεί να αποθηκευτεί η μετάφραση." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Θέλεις πράγματι να διαγράψεις αυτή τη μετάφραση ;" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Θέλεις πράγματι να ξαναφορτώσεις αυτή τη μετάφραση ;" #: FTranslate.class:793 msgid "Export a translation" msgstr "Εξαγωγή μετάφρασης" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "Δεν μαζεύτηκαν μεταφράσεις." #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "Μαζεύτηκε μια μετάφραση." #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "&1 μεταφράσεις μαζεύτηκαν" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Δεν μπορεί να εισαχθεί το αρχείο μετάφρασης" #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Όλα φαίνεται να είναι εντάξει." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Μεταφρασμένα αλφαριθμητικά σύμβολα δεν ταιριάζουν με τα αμετάφραστα αλφαριθμητικά." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Δεν μπορεί να εισαχθεί το αρχείο μετάφρασης" #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Θέλεις πράγματι να διαγράψεις αυτή τη μετάφραση ;" #: FTranslate.form:76 msgid "Project translation" msgstr "Μετάφραση έργου" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Αυτόματη επέκταση" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "Αποθήκευση μετάφρασης" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Επαλήθευση τη μετάφραση" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Αναζήτηση επόμενου αμετάφραστου αλφαρηθμητικού" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Αναζήτηση προηγούμενου αμετάφραστου αλφαριθμητικού" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "Αναζήτηση προηγούμενου αμετάφραστου αλφαριθμητικού" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Αναζήτηση επόμενου αμετάφραστου αλφαρηθμητικού" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Έλεγξε αυτή τη μετάφραση " #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Αυτό το αλφαριθμητικό πρέπει να μεταφραστεί" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Αντιγραφή μη μεταφρασμένου αλφαριθμητικού" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Έλεγξε αυτή τη μετάφραση " #: FTranslate.form:472 msgid "Import a translation file" msgstr "Εισαγωγή αρχείου μετάφρασης" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Θελεις πραγματικά να καθαρίσεις τη λίστα των εκφράσεων;" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "There is nothing to commit." msgstr "Δεν κατέστη δυνατή η υποβολή του έργου." #: FVersionControl.form:61 #, fuzzy msgid "Do not push to remote repository" msgstr "Παρακαλώ εισήγαγε την τοποθεσία του αποθετηρίου." #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Επιλογή γραμματοσειράς" #: FWelcome.class:68 msgid "New project..." msgstr "Νέο έργο..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Πρόσφατα έργα" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "Καλώς ήρθατε στο Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Ανανέωση έργου" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 #, fuzzy msgid "Delete software" msgstr "Διαγραφή πίνακα" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Αραβικά (Αίγυπτος)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Αραβικά (Τυνησία)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Βουλγάρικα (Βουλγαρία)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Ουαλικά (Ηνωμένο Βασίλειο)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Τσέχικα (Δημοκρατία της Τσεχίας)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Δανέζικα (Δανία)" #: Language.module:34 msgid "German (Germany)" msgstr "Γερμανικά (Γερμανία)" #: Language.module:35 msgid "German (Belgium)" msgstr "" #: Language.module:38 msgid "Greek (Greece)" msgstr "Ελληνικά (Ελλάδα)" #: Language.module:41 msgid "English (common)" msgstr "" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Αγγλικά (Ηνωμένο Βασίλειο)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "" #: Language.module:44 msgid "English (Australia)" msgstr "Αγγλικά (Αυστραλία)" #: Language.module:45 msgid "English (Canada)" msgstr "Αγγλικά (Καναδάς)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Ισπανικά (Ισπανία)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Ισπανικά (Ισπανία)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Ισπανικά (Αργεντινή)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Εσθονικά (Εσθονία)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Φινλανδικά (Φινλανδία)" #: Language.module:68 msgid "French (France)" msgstr "Γαλλικά (Γαλλία)" #: Language.module:69 msgid "French (Belgium)" msgstr "Γαλλικά (Βέλγιο)" #: Language.module:70 msgid "French (Canada)" msgstr "Γαλλικά (Καναδάς)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Γαλλικά (Ελβετία)" #: Language.module:74 msgid "Galician (Spain)" msgstr "" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Εβραϊκά (Ισραήλ)" #: Language.module:80 msgid "Hindi (India)" msgstr "Ίντι (Ινδία)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Ουγγρικά (Ουγγαρία)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Κροατικά (Κροατία)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Ιρλανδός (Ιρλανδία)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Ιταλικά (Ιταλία)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Ιαπωνικά (Ιαπωνία)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Χμερ (Καμπότζη)" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "Latin" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Λιθουανικά (Λιθουανία)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Μαλέιγιαλαμ (Ινδία)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "FYROM" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Ολλανδικά (Ολλανδία)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Ολλανδικά (Βέλγιο)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "" #: Language.module:129 msgid "Punjabi (India)" msgstr "Πουντζάμπι (Ινδία)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Πολωνικά (Πολωνία)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Πορτογαλικά (Πορτογαλία)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Πορτογαλικά (Βραζιλία)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Ρουμάνικα (Ρουμανία)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ρώσικα (Ρωσία)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Σλοβένικα (Σλοβενία)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Αλβανός (Αλβανία)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Σουηδικά (Σουηδία)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Τουρκικά (Τουρκία)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Βιετναμέζικα (Βιετνάμ)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "" #: Language.module:220 msgid "Unknown" msgstr "Άγνωστο" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Δεν μπορεί να δημιουργηθεί ο πίνακας '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 δεν μπορεί να είναι στατική" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 δήλωση δεν ταιριάζει" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 είναι δηλωμένη αλλά δεν είναι συνάρτηση" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 δεν είναι δηλωμένο" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 πρέπει να είναι στατική" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: δεν βρίσκεται στην αρχειοθήκη" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: συντακτικό λάθος" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: συντακτικό λάθος σε αρχείο φόρμας" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: πολλοί εμφωλευμένοι υποδοχείς" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' είναι ήδη δηλωμένο" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' δεν είναι ιδιότητα" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' δεν είναι στατική" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' είναι μόνο ανάγνωσης" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' είναι στατική" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' είναι μόνο εγγραφής" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Μια μονάδα δεν μπορεί να δημιουργήσει γεγονότα" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Μια υλοποίηση ιδιότητας δεν μπορεί να είναι δημόσια (public)" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Μια ιδιότητα πρέπει να είναι (public)" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Απαγορευμένη πρόσβαση" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Το ψευδόνυμο πρέπει να είναι αλφαρηθμιτικό" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Ασαφής έκφραση. Χρησιμοποίησε αγκύλες '[' ']'" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Δεν μπορεί να περαστεί η παράμετρος με αναφορά" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "Κακή αρχειοθήκη: &1: &2" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "Κακό όρισμα" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "Κακή σταθερά χαρακτήρα στο αλφαριθμητικό" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "Κακός τύπος σταθεράς" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "Κακός χειριστής συμβάντος στο &1.&2(): &3" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "Κακή έκφραση: &1" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "Κακή μορφή έκδοσης αρχείου" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "Κακή μορφοποίηση αλφαριθμητικού" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "Κακός αριθμός διαστάσεων" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "Κακό αρχείο έργου: γραμμή &1: &2" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "Κακή κανονική έκφραση: &1" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "Κακή μετατροπή αλφαριθμητικού" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "Κακό εύρος κάτω δείκτη" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "Κακή χρήση εικονικής κλάσης" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "Δεν μπορεί να δημιουργηθεί το αρχείο .startup" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "Δεν μπορεί να δημιουργηθεί το αρχείο ενεργειών: &1" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "Δεν μπορεί να δημιουργηθεί η πληροφορία της κλάσης: &1: &2" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "Δεν μπορεί να δημιουργηθεί το αρχείο: &1" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "Δεν μπορεί να δημιουργηθεί η προσωρινή αρχειοθήκη: &1 " #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "Δεν μπορεί να βρεθεί η δυναμική βιβλιοθήκη '&1': &2" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Δεν μπορεί να βρεθεί το σύμβολο '&2' στη δυναμική βιβλιοθήκη '&1'" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "Δεν γίνεται διπλή κληρονόμηση " #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "Δεν μπορεί να φορτωθεί η κλαση '&1': &2&3" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "Δεν μπορεί να φορτωθεί στο στοιχείο '&1': &2" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "Δεν μπορεί να ανοίξει το αρχείο '&1': &2" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "Δεν μπορεί να ανοίξει το αρχείο: &1" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "Δεν γίνεται να δημιουργηθούν συμβάντα σε στατικές συναρτήσεις" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "Δεν μπορεί να γίνει η ανάγνωση του αρχείου: &1: &2" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "Δεν μπορεί να γίνει η καταχώριση της κλάσης '&1'" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "Δεν μπορούν να τεθεί ο ιδιοκτήτης του αρχείου: &1: &2" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "Δεν μπορεί να χρησιμοποιηθεί ο τελεστής NEW εκεί" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "Δεν μπορεί να χρησιμοποιήσεις TRY δυο φορές" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "Η κλάση '&1' δεν μπορεί να δημιουργηθεί" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 #, fuzzy msgid "Component name must be a string" msgstr "Το ψευδόνυμο πρέπει να είναι αλφαρηθμιτικό" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "Η συσκευή είναι γεμάτη" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "Διαίρεση με μήδεν" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "Δεν μπορούν να χρησιμοποιηθούν δυναμικά σύμβολα σε στατική συνάρτηση" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "Τέλος αρχείου" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Πολύ πολύπλοκη έκφραση " #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Πολύ πολύπλοκη έκφραση. Πολύ τελεστές" #: MErrorMessage.module:94 #, fuzzy msgid "Extern library name must be a string" msgstr "Το όνομα της βιβλιοθήκης πρέπει να είναι αλφαριθμητικό" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Το αρχείο υπάρχει" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Το αρχείο είναι κατάλογος" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Το αρχείο είναι κλειδωμένο" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Πολύ μεγάλο όνομα αρχείου" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Το αρχείο ή ο κατάλογος δεν υπάρχει" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "Απαγορευμένο GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Μη επιτρεπή εντολή" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Μη έγκυρη ανάθεση" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Μη έγκυρη ημερομηνία" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Μη έγκυρο αντικείμενο" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Μη έγκυρο μονοπάτι" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Η ετικέτα '&1' δεν είναι δηλωμένη" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Το όνομα της βιβλιοθήκης πρέπει να είναι αλφαριθμητικό" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Η μεταβλητή βρόχου χρησιμοποιείται ήδη" #: MErrorMessage.module:114 #, fuzzy msgid "Loop variable cannot be an argument" msgstr "Η μεταβλητή βρόχου χρησιμοποιείται ήδη" #: MErrorMessage.module:115 #, fuzzy msgid "Loop variable cannot be global" msgstr "Η μεταβλητή βρόχου πρέπει να είναι τοπική" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME δεν μπορεί να χρησιμοποιηθεί σε στατική συνάρτηση" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Μαθηματικό σφάλμα" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "NEW δεν μπορεί να δεχτεί παραμέτρους με αναφορά" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "Καμία γονικη κλάσση" #: MErrorMessage.module:126 msgid "No return value" msgstr "Καμιά τιμή επιστρόφης" #: MErrorMessage.module:127 msgid "No startup method" msgstr "Καμία μέθοδος εκκίνησης" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "Μη τερματισμένο αλφαρηθμητικό" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "Δεν είναι κατάλογος: &1" #: MErrorMessage.module:130 msgid "Not a function" msgstr "Δεν είναι συνάρτηση" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "Δεν είναι πίνακας" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "Δεν είναι απαρίθμηση" #: MErrorMessage.module:134 msgid "Not an object" msgstr "Δεν είναι αντικείμενο" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "Όχι αρκετά ορίσματα σε New()" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "Όχι αρκετά ορίσματα" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "Όχι αρκετά ορίσματα στο &1()" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "Κενό αντικείμενο (null)" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "Εκτός ορίων" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "Εκτός μνήμης" #: MErrorMessage.module:149 msgid "Out of range" msgstr "Εκτός εύρους" #: MErrorMessage.module:150 msgid "Overflow" msgstr "Υπερχείλιση" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "Λάθος ανάγνωσης" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "Τύπος τιμής επιστροφής μη καθορισμένος στη δήλωση της συνάρτησης" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "Συναντήθηκε εντολή STOP" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "Δεν μπορεί να χρησιμοποιηθεί μόνο της η λέξη SUPER" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "Υπερχείλιση στοίβας" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "Το ρεύμα είναι κλειστό" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "Οι παράμετροι της υπορουτίνας δεν μπορούν να περαστούν με αναφορά" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "Συντακτικό λάθος" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "Συντακτικό λάθος σε δήλωση συνάρτησης" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "Συντακτικό λάθος σε όνομα συμβάντος" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "Συντακτικό λάθος σε τρόπο ανοίγματος αρχείου" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "Συντακτικό λάθος σε τύπο επιστροφής" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "Συντακτικό λάθος. Αναμένοταν &1 " #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "Συντακτικό λάθος. '...' πρέπει να είναι τελευταιά παράμετρος" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "Συντακτικό λάθος. Κακή ιδιότητα τύπου" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Συντακτικό λάθος.CASE ή DEFAULT αναμένεται μετά από SELECT" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "Συντακτικό λάθος. CLASS χρειάζεται ένα αναγνωριστικό" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Συντακτικό λάθος. Δεν μπορεί να χρησιμοποιηθεί αυτό το συντακτικό σε ανάθεση" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "Συντακτικό λάθος. INHERITS απαιτεί όνομα κλάσης" #: MErrorMessage.module:175 #, fuzzy msgid "Syntax error. Identifier expected" msgstr "Συντακτικό λάθος. Αναμένοταν &1 " #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "Συντακτικό λάθος. Μη έγκυρο αναγνωριστικό σε όνομα συνάρτησης" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "Συντακτικό λάθος. Μη έγκυρο αναγνωριστικό σε ιδιότητα ονόματος" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "Συντακτικό λάθος. Μη έγκυρη προαιρετική παράμετρος" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "Συντακτικό λάθος. Μη έγκυρος τύπος επιστροφής" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Συντακτικό λάθος. Μη έγκυρος τύπος περιγραφής της &1 παραμέτρου" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "Συντακτικό λάθος. Άχρειαστοι παράμετροι" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Συντακτικό λάθος. Συντακτικό σημείο χρησιμοποιήθηκε εκτός WITH / END WITH" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Συντακτικό λάθος. Η &1 παράμετρος δεν είναι έγκυρο αναγνωριστικό" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Συντακτικό λάθος. VarPtr() δέχεται μόνο ένα αναγνωριστικό" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "Σφάλμα συστήματος #&1: &2" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "Το τελεστής '!' πρέπει να ακολουθείται από αναγνωριστικό." #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "Το τελεστής '.' πρέπει να ακολουθείται από αναγνωριστικό." #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "Η ειδική μέθοδος &1 δεν μπορεί να είναι συνάρτηση" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "Η ειδική μέθοδος &1 δεν μπορεί να υλοποιηθεί" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "Η ειδική μέθοδος &1 δεν μπορεί να είναι στατική" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "Η ειδική μέθοδος &1 πρέπει να είναι συνάρτηση" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "Η ειδική μέθοδος &1 πρέπει να είναι δημόσια (public)" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "Η ειδική μέθοδος &1 πρέπει να είναι στατική (static)" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "Η ειδική μέθοδος &1 πρέπει να πέρνει μόνο μεταβλητό αριθμό παραμέτρων" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "Η ειδική μέθοδος &1 πρέπει να πέρνει τουλάχιστον μια παράμετρο" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "Η ειδική μέθοδος &1 δεν πέρνει παραμέτρους " #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "Η ειδική μέθοδος &1 πρέπει να επιστρέψει ακέραιο" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "Η ειδική μέθοδος &1 πρέπει να πέρνει ακριβώς μια παράμετρο" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "Η ειδική μέθοδος &1 πρέπει να πάρει ακριβώς δύο παράμετρους" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "Η υπογραφή της ειδικής μέθοδου δεν είναι σωστή" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "Αυτή η έκφραση δεν μπορεί να είναι εντολή" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "Αυτή η έκφραση δεν μπορεί να περαστεί με αναφορά" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "Πάρα πολλά ορίσματα" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "Πάρα πολλά ορίσματα στην &1()" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "Πάρα πολλές δηλώσεις πινάκων" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "Πάρα πολλές σταθερές" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "Χρησιμοποιούνται πάρα πολλές διαφορετικές κλάσεις " #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "Πάρα πολλές διαστάσεις" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "Πάρα πολλές δυναμικές μεταβλητές" #: MErrorMessage.module:215 msgid "Too many events" msgstr "Πάρα πολλά συμβάντα" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "Πάρα πολλές εκφράσεις σε CASE" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "Πάρα πολλές εξωτερικές συναρτήσεις" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "Πάρα πολλές συναρτήσεις" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "Πάρα πολλές εμφωλευμένες δομές ελέγχου" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "Πάρα πολλά ταυτόχρονα νέα αλφαριθμητικά" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "Πάρα πολλές στατικές μεταβλητές" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "Πάρα πολλά άγνωστα σύμβολα." #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "Αταίριαστοι τύποι" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Αταίριαστοι τύποι: Χρειάζονταν &1, ενώ πήρε &2" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "Μη προσδοκόμενο &1" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "Άγνωστο λάθος" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "Άγνωστη επέκταση αρχείου" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "Άγνωστο αναγνωριστικό: &1" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "Άγνωστος τελεστής" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "Μη υποστηριζόμενη μετατροπή αλφαριθμητικού" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "Άχρηστο LOCK" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "Η παράμετρος της VarPtr() πρέπει να είναι δυναμική , ή στατική ή τοπική μεταβλητή " #: MErrorMessage.module:247 #, fuzzy msgid "Void identifier" msgstr "Άγνωστο αναγνωριστικό: &1" #: MErrorMessage.module:248 msgid "Void key" msgstr "Κενό κλειδί" #: MErrorMessage.module:249 msgid "Write error" msgstr "Σφάλμα εγγραφής" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "Δεν βρέθηκε βοήθεια" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Αυτό το έργο δεν υπάρχει." #: MMime.module:17 msgid "Plain text" msgstr "Απλό κείμενο" #: MMime.module:18 msgid "HTML text" msgstr "Κείμενο HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas δεδομένα φορμών" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas μονοπάτι αρχείου έργου" #: MMime.module:22 msgid "URI list" msgstr "Λίστα URI" #: MMime.module:33 msgid "Unknown format" msgstr "Άγνωστο φορμάτ" #: MTheme.module:6 #, fuzzy msgid "Characters" msgstr "Λανθασμένοι χαρακτήρες" #: MTheme.module:6 msgid "Comments" msgstr "Σχόλια" #: MTheme.module:6 msgid "Current line" msgstr "Τρέχουσα γραμμή" #: MTheme.module:6 msgid "Data types" msgstr "Τύποι δεδομένων" #: MTheme.module:6 msgid "Editing line" msgstr "Επεξεργασία γραμμής" #: MTheme.module:6 msgid "Errors" msgstr "Σφάλματα" #: MTheme.module:6 msgid "Highlighting" msgstr "Επισήμανση" #: MTheme.module:6 msgid "Keywords" msgstr "ΛέξειςΚλειδίου" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Κανονικό κείμενο" #: MTheme.module:6 msgid "Numbers" msgstr "Αριθμοί" #: MTheme.module:6 msgid "Operators" msgstr "Τελεστές" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Αλφαριθμητικά" #: MTheme.module:6 msgid "Subroutines" msgstr "Υπορουτίνες" #: MTheme.module:6 msgid "Symbols" msgstr "Σύμβολα" #: Package.module:79 msgid "'&1' is missing." msgstr "'&1' λείπει" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "'&1' και '&2' λείπουν" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Αποθήκευση αρχείου CHANGELOG" #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Δημιουργία πακέτου για &1" #: Package.module:744 msgid "The package build has failed." msgstr "Το χτίσιμο του πακέτου απέτυχε." #: Package.module:812 msgid "Making build directory." msgstr "Δημιουργία καταλόγου κατασκευής" #: Package.module:867 msgid "Creating desktop file..." msgstr "Δημιουργία αρχείου επιφάνειας εργασίας..." #: Package.module:875 msgid "Sources are being debianizated." msgstr "Τα πηγαία μετατρέπονται για το Debian." #: Package.module:1080 msgid "Creating package..." msgstr "Δημιουργία πακέτου..." #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' απότυχε." #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Αρχικοποίηση καταλόγου ~/RPM" #: Package.module:1390 msgid "Creating source package." msgstr "Δημιουργία πηγαίου πακέτου" #: Package.module:1414 msgid "Creating .spec file." msgstr "Δημιουργία αρχείο .spec" #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' επέστρεψε το ακόλουθο λάθος κώδικα:" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "Το 'tar' επέστρεψε τον ακόλουθο κώδικα σφάλματος:" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "Αυτοματοποίηση" #: Project.module:228 msgid "Basic" msgstr "Βasic" #: Project.module:230 msgid "Drawing" msgstr "Σχεδιάζω" #: Project.module:233 msgid "Miscellaneous" msgstr "Διάφορα" #: Project.module:234 msgid "Networking" msgstr "Δικτύωση" #: Project.module:235 msgid "OpenGL" msgstr "OpenGL" #: Project.module:236 msgid "Printing" msgstr "Εκτύπωση" #: Project.module:237 msgid "Sound" msgstr "Ήχος" #: Project.module:239 msgid "Controls" msgstr "Στοιχεία ελέγχου" #: Project.module:240 msgid "Multimedia" msgstr "Πολυμέσα" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "Δεν βρέθηκα το αρχείο!" #: Project.module:518 msgid "This project does not exist." msgstr "Αυτό το έργο δεν υπάρχει." #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "Αυτό δεν είναι Gambas έργο." #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "Μετατροπή" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Μην ανοίγεις" #: Project.module:573 msgid "Open after all" msgstr "Άνοιγμα μετά από όλα" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Αυτό το έργο φαίνεται να είναι ήδη άνοιχτό..\n" "\n" "Αν ξανανοιχτεί πάλι υπάρχει κίνδυνος για απώλεια δεδομένων." #: Project.module:579 msgid "It cannot be converted." msgstr "Δεν μπορεί να μετατραπεί." #: Project.module:579 msgid "This project is read-only." msgstr "Αυτό το έργο είναι μόνο ανάγνωσης." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Δεν μπορεί να ανοίξει το αρχείο του έργου :\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Δεν μπορεί να προστεθεί το αρχείο." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Δεν μπορεί να ανοίξει το αρχείο" #: Project.module:2239 msgid "&1th" msgstr "&1ος" #: Project.module:2292 msgid "in form definition" msgstr "ορισμός μέσα στη φόρμα" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Μερικά πηγαία αρχεία έργου βρίσκονται σε σύγκρουση.\n" "Παρακαλών επίλυσε τες αν θες να μεταγλωττιστεί το έργο." #: Project.module:2464 msgid "Compiling project" msgstr "Μεταγλώττιση έργου" #: Project.module:2715 msgid "File already exists." msgstr "Το αρχείο υπάρχει." #: Project.module:2747 msgid "Directory already exists." msgstr "Ο κατάλογος υπάρχει ήδη" #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Δεν αντιγράφετε το αρχείο υπόδειγμα." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 #, fuzzy msgid "Cannot install library in &1." msgstr "Δεν μπορεί να βρεθεί η δυναμική βιβλιοθήκη '&1': &2" #: Project.module:3031 msgid "Making executable..." msgstr "Δημιουργία εκτελέσιμου..." #: Project.module:3083 msgid "Cannot make executable." msgstr "Δεν μπορεί να δημιουργηθεί το εκτελέσιμο." #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Λείπουν μερικά στοιχεία: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Δεν μπορεί να γραφτεί το αρχείο του έργου." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "Αδυναμία δημιουργίας συντόμευσης επιφάνειας εργασίας." #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "Ο κατάλογος θα αφαιρεθεί στην επόμενη υποβολή." #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Πρέπει να ορίσεις μια φόρμα ή κλάση!" #: Project.module:4080 msgid "Please type a name." msgstr "Παρακαλώ πληκτρολόγησε ένα όνομα." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "Το όνομα αυτό περιέχει απαγορευμένο χαρακτήρα:" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "Το όνομα δεν μπορεί να αρχίζει με τελεία." #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Το όνομα αυτό χρησιμοποιείται ήδη. Επέλεξε ένα άλλο." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Το όνομα μιας κλάσης πρέπει να αρχίζει με γράμμα , κάτω παύλα, ακολοθούμενο από οποιοδήποτε γράμμα ή αριθμητικό ψηφίο." #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Αδυναμία μετονομασίας '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Παρακαλώ πληκτρολόγησε το όνομα του έργου." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "Το όνομα του έργου δεν μπορεί να αρχίζει με τελεία." #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Χαρακτήρες μη-ASCII δεν επιτρέπονται στο όνομα έργου," #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "Απαγορεύεται να χρησιμοποιηθούν οι ακόλουθοι χαρακτήρες στο όνομα του έργου: ? * / \\ SPACE" #: Project.module:4488 msgid "This project already exists." msgstr "Αυτό το έργο υπάρχει ήδη." #: Project.module:4491 msgid "The project directory already exists." msgstr "Ο κατάλογος του έργου υπάρχει ήδη." #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Ο κατάλογος του έργου δεν μπορεί να δημιουργηθεί γιατί υπάρχει ήδη ένα αρχείο με το ίδιο όνομα." #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Δημιούργησε πακέτο πηγαίου κώδικα" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Δεν αντιγράφετε το αρχείο &1." #: Project.module:4881 msgid "Cannot create link &1." msgstr "Δεν μπορεί να δημιουργηθεί ο σύνδεσμος &1." #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "Δεν μπορεί να μετακινηθεί ένας κατάλογος μέσα στον ευατό του." #: Project.module:4960 msgid "Cannot move file &1." msgstr "Δεν μπορεί να μετακινηθεί το αρχείο &1" #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 #, fuzzy msgid "Unable to update forms." msgstr "Αδυναμία επικόλλησης κειμένου." #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 #, fuzzy msgid "Unable to read component description file." msgstr "Δεν μπορεί να γραφτεί το αρχείο περιγραφής του στοιχείου" #: Project.module:6171 msgid "Cannot write component description file." msgstr "Δεν μπορεί να γραφτεί το αρχείο περιγραφής του στοιχείου" #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Τύπος έργου" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Αδυναμία εκτέλεσης ερωτήματος." #: Save.module:51 msgid "Cannot save file !" msgstr "Δεν μπορεί να αποθηκευτεί το αρχείο !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 #, fuzzy msgid "Please check your network connection." msgstr "Παρακαλώ επέλεξε τοποθεσία μενού" #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Θέλεις πράγματι να διαγράψεις τον κατάλογο ;" #: VersionControl.module:506 #, fuzzy msgid "The project could not be put under version control." msgstr "Δεν κατέστη δυνατή η υποβολή του έργου." #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 #, fuzzy msgid "This page does not exist in that language." msgstr "Αυτό το έργο δεν υπάρχει." #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Αυτό το έργο δεν υπάρχει." #: WikiMarkdown.class:174 #, fuzzy msgid "This class does not exist." msgstr "Αυτό το έργο δεν υπάρχει." #: WikiMarkdown.class:187 #, fuzzy msgid "This symbol does not exist." msgstr "Αυτό το έργο δεν υπάρχει." #~ msgid "Open project..." #~ msgstr "Άνοιγμα έργου..." #~ msgid "Exported classes" #~ msgstr "Εξαγώμενη κλάση" #~ msgid "Component advancement" #~ msgstr "Προαγωγή στοιχείου" #~ msgid "Show only components used in project" #~ msgstr "Δείξε μόνο τα στοιχεία που χρησιμοποιούνται στο έργο" #~ msgid "Environment variables" #~ msgstr "Μεταβλητές περιβάλλοντος" #~ msgid "Author(s)" #~ msgstr "Δημιουργός(οι)" #~ msgid "Blend" #~ msgstr "Συγχώνευση" #~ msgid "Background color" #~ msgstr "Χρώμα υποβάθρου" #~ msgid "Foreground color" #~ msgstr "Χρώμα προσκηνίου" #~ msgid "Select a theme" #~ msgstr "Επέλεξε ένα θέμα" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "Όλη η αναγκαία πληροφορία έχει συλλεχθεί. Μπορείς τώρα να δημιουργήσεις τα πακέτα εγκατάστασης για τη εφαρμογή σου..\n" #~ "

Κάνε κλικ στο κουμπί Εντάξει για να δημιουργηθούν τα πακέτα.\n" #~ "

Κάνε κλικ στο κουμπίΠίσω αν έχεις κάνει λάθος.\n" #~ "

Κάνε κλικ στο κουμπίΑκύρωσηγια να ακυρώσεις τη λειτουργία.\n" #~ "\n" #~ msgid "Please enter the changes of your project." #~ msgstr "Παρακαλώ εισήγαγε τις αλλαγές του έργου." #~ msgid "Prefix package name with the vendor name" #~ msgstr "Πρόσθεσε στο όνομα πακέτου πρόθεμα με το όνομα του πωλητή" #~ msgid "Messages" #~ msgstr "Μηνύματα" #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "Έχει τροποιηθεί η φόρμα.\n" #~ "\n" #~ ".Όλες οι αλλαγές θα χαθούν." #~ msgid "Existing" #~ msgstr "Υπάρχων" #~ msgid "

Authors

\n" #~ msgstr "

Δημιουργοί

\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "About Gambas..." #~ msgstr "Σχετικά με το Gambas" #~ msgid "Thanks to" #~ msgstr "Ευχαριστούμε τον " #~ msgid "Loading &1..." #~ msgstr "Φόρτωμα &1..." #~ msgid "The following classes have circular inheritance:" #~ msgstr "Οι ακόλουθες κλάσεις έχουν κυκλική κληρονομικότητα:" #, fuzzy #~ msgid "U" #~ msgstr "Πάνω" #, fuzzy #~ msgid "N" #~ msgstr "Όχι" #~ msgid "Edit text property" #~ msgstr "Ιδιότητα επεξεργασίας κειμένου" #~ msgid "Use a terminal emulator" #~ msgstr "Χρησιμοποίησε εξομοιωτή τερματικού" #, fuzzy #~ msgid "'wget' is not found." #~ msgstr "Δεν βρέθηκα το αρχείο!" #, fuzzy #~ msgid "Unable to download documentation." #~ msgstr "Αδυναμία άνοιγματος σύνδεσης." #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Κάνε κλικ σε μια φόρμα για να εμφανίσεις την ιεραρχία των στοιχείων ελέγχου της..." #~ msgid "Versioning" #~ msgstr "Ανάθεση έκδοσης" #~ msgid "Stack backtrace" #~ msgstr "Ίχνος στοίβας" #~ msgid "Remove current breakpoint" #~ msgstr "Αφαίρεσε τρέχων σημείο διακοπής" #~ msgid "Display ME" #~ msgstr "Εμφάνιση ME" #~ msgid "Display" #~ msgstr "Εμφάνιση" #, fuzzy #~ msgid "Display expression" #~ msgstr "Κανονική έκφραση" #~ msgid "Dynamic variables" #~ msgstr "Δυναμικές μεταβλητές" #~ msgid "Expression" #~ msgstr "Έκφραση" #~ msgid "Project information" #~ msgstr "Πληροφορίες έργου" #~ msgid "Component programming" #~ msgstr "Προγραμματισμός στοιχείων" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Βοήθεια μετατροπής Visual Basic™" #~ msgid "Image processing" #~ msgstr "Επεξεργασία εικόνας" #~ msgid "OpenGL programming" #~ msgstr "OpenGL προγραμματισμός" #~ msgid "XML / XSLT programming" #~ msgstr "Προγραμματισμός XML / XSLT" #~ msgid "Regular expressions" #~ msgstr "Κανονικές εκφράσεις" #~ msgid "Settings files management" #~ msgstr "Ρυθμίσεις διαχείρισης αρχείων" #~ msgid "Internationalization" #~ msgstr "Διεθνοποίηση" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "" #~ "Εφαρμόγη αποθηκευμένη σε αποθετήριο \n" #~ "Subversion" #~ msgid "CGI Web application" #~ msgstr "CGI εφαρμογή παγκόσμιου ιστού " #~ msgid "SDL application" #~ msgstr "SDL εφαρμογή" #~ msgid "Command-line application" #~ msgstr "Εφαρμογή γραμμής εντολών" #~ msgid "GTK+ graphical application" #~ msgstr "GTK+ γραφική εφαρμογή" #~ msgid "QT graphical application" #~ msgstr "QT γραφική εφαρμογή" #~ msgid "Graphical application" #~ msgstr "Γραφική εφαρμογή" #~ msgid "The project has been successfully created." #~ msgstr "Το έργο δημιουργήθηκε με επιτυχία." gambas-3.16.3/app/src/gambas3/.lang/es.po000066400000000000000000005646331411575327000177160ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.15.90\n" "PO-Revision-Date: 2021-03-28 16:20 UTC\n" "Last-Translator: Laurent Carlier \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" # gb-ignore #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Definir marcador" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Limpiar marcadores" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Marcador anterior" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Marcador siguiente" #: CClassInfo.class:615 msgid "Static properties" msgstr "Propiedades estáticas" #: CClassInfo.class:616 msgid "Static variables" msgstr "Variables estáticas" #: CClassInfo.class:617 msgid "Static methods" msgstr "Métodos estáticos" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "Constantes" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Propiedades" # gb-ignore #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "Métodos" #: CClassInfo.class:638 msgid "Events" msgstr "Eventos" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "Esta clase reimplementa &1" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "Esta clase hereda de &1" #: CClassInfo.class:668 msgid "in &1" msgstr "en &1" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Esta clase puede ser utilizada como un objeto creando una instancia oculta a demanda." #: CClassInfo.class:681 msgid "This class is &1." msgstr "Esta clase es &1." #: CClassInfo.class:681 msgid "creatable" msgstr "instanciable" #: CClassInfo.class:686 msgid "This class is static." msgstr "Esta clase es estática." #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "Esta clase no es instanciable." #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "Esta clase puede ser utilizada como &1." #: CClassInfo.class:694 msgid "function" msgstr "función" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "Esta clase actúa como una matriz &1/&2." #: CClassInfo.class:699 msgid "read" msgstr "Lectura" #: CClassInfo.class:699 msgid "write" msgstr "Escritura" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "Esta clase actúa como una matriz &1." #: CClassInfo.class:701 msgid "write-only" msgstr "solo escritura" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "Sólo lectura" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "Esta clase es &1 con la palabra clave FOR EACH." #: CClassInfo.class:709 msgid "enumerable" msgstr "enumerable" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "Esta clase reimplementa" #: CClassInfo.class:869 msgid "This class inherits" msgstr "Esta clase proviene de" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "Esta clase es virtual" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Esta clase puede ser utilizada como un objeto creando una instancia oculta a demanda." #: CClassInfo.class:911 msgid "static function" msgstr "función estática" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "Esta clase actúa como una matriz estática &1/&2." #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "Esta clase actúa como una matriz estática &1." #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "Esta clase es &1 con la palabra clave &2." #: CClassInfo.class:932 msgid "statically enumerable" msgstr "estáticamente enumerable" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "Cargando información en componente &1..." #: CComponent.class:151 msgid "Loading information on project..." msgstr "" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Clases" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Clase" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descripción" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "Este componente no es estable todavía." #: CComponent.class:600 msgid "This component is deprecated." msgstr "Este componente es obsoleto." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Autores" #: CComponent.class:621 msgid "Implements" msgstr "Implementa" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Requiere" #: CComponent.class:648 msgid "Excludes" msgstr "Excluir" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "Clases nativas internas" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "Analizador de argumentos" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Librería gráfica Cairo" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "Dibujo de gráficos" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "Administración de polígonos basado en la librería Clipper" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "Gestión de números complejos" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "Compresión & descompresión" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "Driver de compresión bzlib2" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "Driver de compresión zlib" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "Driver de compresión zstd" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "Encriptado MD5/DES/SHA" #: CDocumentation.class:62 msgid "More data containers" msgstr "Más contenedores de datos" #: CDocumentation.class:63 msgid "Database access" msgstr "Acceso a bases de datos" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "Controles de bases de datos" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "Controlador de base de datos MySQL" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "Controlador de base de datos ODBC" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "Controlador de base de datos PostgreSQL" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "Controlador de base de datos SQLite 2" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "Controlador de base de datos SQLite 3" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "Depurador de aplicaciones" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "Compomente de administración de escritorio" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "Soporte para la librería X-Windows" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "Componente de soporte Gnome keyring para administración de escritorio" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "Interfaz D-Bus" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "Evaluador de expresiones" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "Rutinas de resaltado de sintaxis" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "Más controles para componentes gráficos" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "Diálogos estándar mejorados" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "Editor de texto con resaltado de sintaxis" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "Interfaz multidocumento" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "Vista previa genérica y formulario de impresión" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "Tema de iconos por defecto" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "Emulador de terminal" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "Librería GNU de Múltiple Precisión Aritmética" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "Librería Científica GNU" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "Conjunto de herramientas GTK+2" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL con el kit de herramientas GTK+" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "Conjunto de herramientas GTK+3" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "Intercambiador de componente QT/GTK+" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "Componente OpenGL con intercambiador de QT/GTK+" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "Intercambiador de componente QT4/QT5" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "Componente de conmutador OpenGL QT4 / QT5" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "Intercambiador de componente Webkit QT4/QT5" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "Componente de gestión del icono de la bandeja del sistema" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "Servidor empotrado HTTP" #: CDocumentation.class:99 msgid "Image management" msgstr "Manejo de imágenes" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "Componente de filtrado de imagen" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "Rutinas de imagen de biblioteca Imlib2" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "Cargado y guardado de imágenes" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "Monitoreo de eventos del sistema de archivos" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "Herramientas XML basadas en libxml" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "Sistema de registro flexible" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "Visor de mapas en linea" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "Marcador de sintaxis Gambas" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "Componente multimedia GStreamer" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "Controles multimedia" #: CDocumentation.class:110 msgid "Memcached client" msgstr "Cliente memcached" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "Gestion del formato MIME basado en la libreria GMime" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "Rutinas específicas de MySQL" #: CDocumentation.class:113 msgid "NCurses library" msgstr "Libreria de NCurses" #: CDocumentation.class:114 msgid "Network programming" msgstr "Programación de red" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "Gestión de protocolos de red de alto nivel" #: CDocumentation.class:116 msgid "POP3 client" msgstr "Cliente POP3" #: CDocumentation.class:117 msgid "SMTP client" msgstr "Cliente SMTP" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "Librería de audio OpenAL 3D" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "Programación 3D con OpenGL" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "Utilidades del componente OpenGL" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "Manejo de OpenGL shaders" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Motor de juegos simple OpenGL basado en formato MD2" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "Librería de rutinas OpenSSL" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "las opciones de la línea de órdenes de GNU" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Gestor de expresiones regulares compatible con Perl" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "Renderizador PDF basado en la librería Poppler" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "Kit de herramientas QT4" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "Kit de herramientas extendido QT4" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "Componente QT4 WebKit" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL con el kit de herramientas QT4" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "Kit de herramientas QT5" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "Componente Webkit QT5" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL con el kit de herramientas QT5" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "Extensión del kit de herramientas QT5" #: CDocumentation.class:137 msgid "Report designer" msgstr "Diseñador de reportes" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "Librería de gestión de Escaner basada en SANE" #: CDocumentation.class:140 msgid "SDL library" msgstr "Librería SDL" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "Sonido SDL & gestión de CD-ROM" #: CDocumentation.class:142 msgid "SDL2 component" msgstr "Componente SDL2" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "Componente de audio SDL2" #: CDocumentation.class:144 msgid "Application settings management" msgstr "Gestión de configuración de la aplicación" #: CDocumentation.class:145 msgid "Signals management" msgstr "Gestión de señales" #: CDocumentation.class:146 msgid "Terminal management" msgstr "Gestión de terminales" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "Desarrollo de aplicaciones gráficas de terminales." #: CDocumentation.class:148 msgid "Unit tests component" msgstr "" #: CDocumentation.class:149 msgid "Utility component" msgstr "Componente de utilidades" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "Componente de utilidades para aplicaciones web" #: CDocumentation.class:151 msgid "Video capture" msgstr "Captura de vídeo" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Compatibilidad con Visual Basic" #: CDocumentation.class:153 msgid "XML tools" msgstr "Herramientas XML" #: CDocumentation.class:154 msgid "HTML generator" msgstr "Generador de HTML" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "Protocolo XML-RPC" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "Herramientas XSLT basadas en libxml y libxslt" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Herramientas de aplicaciones web" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "Analizador y generador de feeds Web" #: CDocumentation.class:159 msgid "Web application development" msgstr "Desarrollo de aplicaciones Web" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "Gestión gráfica de formularios" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "Gestión del bucle de eventos" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "Display OpenGL" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "Números complejos" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "Gestión de documentos XML" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "Insertar color" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "Insertar la fecha de hoy" # gb-ignore #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "Ubicación" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "¡ADVERTENCIA! Libreria no encontrada." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Provee" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 FToolBox.class:36 msgid "Form" msgstr "Formulario" #: CModule.class:29 msgid "Forms" msgstr "Formularios" #: CModule.class:29 msgid "Gambas forms" msgstr "Formularios Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Páginas web de Gambas" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "WebPage" #: CModule.class:30 msgid "WebPages" msgstr "WebPages" #: CModule.class:31 msgid "Gambas reports" msgstr "Reportes Gambas" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "Reporte" #: CModule.class:31 msgid "Reports" msgstr "Reportes" #: CModule.class:32 msgid "Gambas web forms" msgstr "Formularios web Gambas" # gb-ignore #: CModule.class:32 FMain.form:980 FToolBox.class:36 msgid "WebForm" msgstr "" # gb-ignore #: CModule.class:32 msgid "WebForms" msgstr "" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Formas terminales de Gambas" # gb-ignore #: CModule.class:33 FMain.form:987 FToolBox.class:36 msgid "TermForm" msgstr "" # gb-ignore #: CModule.class:33 msgid "TermForms" msgstr "" #: CProfile.class:114 msgid "Evaluator" msgstr "Evaluador" #: CProfile.class:116 msgid "Event loop" msgstr "Bucle de eventos" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Los ejemplos están ubicados en el servidor de la Granja de Gambas. Clic &1 para acceder a la Granja y poder descargarlos..." #: CProjectList.class:108 msgid "here" msgstr "aquí" #: CProjectList.class:234 msgid "IDE extensions" msgstr "Extensiones IDE" #: CProjectList.class:553 CVersionControlGit.class:448 CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 FText.form:40 FTranslate.class:679 FVersionControl.form:130 FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "Cancelar" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "¿Realmente quieres desinstalar este software?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "Desinstalar" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "No se puede desinstalar el software:" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "El software se ha desinstalado correctamente." #: CProjectTree.class:98 msgid "Files" msgstr "Archivos" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Proyecto" #: CProjectTree.class:373 msgid "Sources" msgstr "Fuentes" #: CProjectTree.class:375 msgid "Connections" msgstr "Conexiones" #: CProjectTree.class:376 msgid "Public" msgstr "Público" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Datos" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "Hoy" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Ayer" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Hace dos días" #: CRecentProject.class:74 msgid "This week" msgstr "Esta semana" #: CRecentProject.class:76 msgid "This month" msgstr "Este mes" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Descarga cancelada" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "La suma de comprobación del paquete descargado es inválida." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Imposible descomprimir el archivo fuente." #: CSoftware.class:361 msgid "Abort" msgstr "Abortar" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "Ignorar" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Se requieren los siguientes componentes:" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "Imposible compilar el proyecto." #: CSoftware.class:396 msgid "Unable to make executable." msgstr "Imposible crear el ejecutable." #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "Imposible instalar el directorio de fuentes" #: CSoftware.class:664 msgid "yesterday" msgstr "ayer" #: CSoftware.class:666 msgid "&1 days ago" msgstr "&1 días atrás" #: CSoftware.class:672 msgid "last week" msgstr "la semana pasada" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "&1 semanas atrás" #: CSoftware.class:680 msgid "last month" msgstr "el mes pasado" #: CSoftware.class:682 msgid "&1 months ago" msgstr "&1 meses atrás" #: CSoftware.class:688 msgid "last year" msgstr "el año pasado" #: CSoftware.class:690 msgid "on &1" msgstr "en &1" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "No se puede insertar el proyecto." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "Ruta raíz local" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "Último compromiso" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "Último autor de compromiso" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "Última fecha de confirmación" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "Rama actual" #: CVersionControlGit.class:368 msgid "Origin" msgstr "Origen" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "La rama actual está actualizada." #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "Un archivo para confirmar en la rama actual." #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "&1 archivos para confirmar en la rama actual." #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "Ninguno en el proyecto actual." #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "Uno en el proyecto actual." #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "&1 en el proyecto actual." #: CVersionControlGit.class:394 msgid "Status" msgstr "Estado" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "URL del repositorio remoto" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "Se creará un nuevo repositorio de Git para este proyecto." # gb-ignore #: CVersionControlGit.class:448 FColorChooser.form:67 FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 FReportCoordChooser.form:32 FReportPaddingChooser.form:69 FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "Resuelve el conflicto." #: CVersionControlGit.class:511 FConnectionEditor.class:842 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Fecha" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "Revisión" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "Revisión remota" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "Remoto último autor autor" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "Última fecha de confirmación remota" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "La fuente de Gambas es publicada bajo la licencia SIL Open Font License." #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "Este programa es publicado bajo la GNU General Public License." #: Design.module:227 Project.module:2323 msgid "first" msgstr "primero" #: Design.module:229 Project.module:2325 msgid "second" msgstr "segundo" #: Design.module:231 Project.module:2327 msgid "third" msgstr "tercero" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "El programa ha sido interrumpido por CTRL+C." #: Design.module:464 msgid "The program has been terminated." msgstr "El programa ha sido cancelado." #: Design.module:472 msgid "The program has returned\nthe value: &1" msgstr "El programa retornó\nel valor: &1" #: Design.module:753 msgid "The project has no test module." msgstr "" #: Design.module:1064 msgid "Output terminal" msgstr "Terminal de salida" #: Design.module:1092 msgid "No terminal emulator found." msgstr "No se encontró emulador de terminal." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licencia" #: FAbout.class:241 msgid "Financial support" msgstr "Apoyo económico" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Acerca de Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "Este programa es SOFTWARE LIBRE; puede redistribuirlo y/o modificarlo bajo los términos de la licencia pública general de GNU publicada por la Free Software Foundation; versión 2, o (a su opción) cualquier versión posterior.

Este programa se distribuye con la esperanza de que será útil pero sin ninguna garantía; sin ni siquiera la garantía implícita de comerciabilidad o adecuación para un propósito PARTICULAR. Consulte la licencia pública general de GNU para obtener más detalles.\n" #: FArguments.form:13 FMain.form:1799 msgid "Run with arguments" msgstr "" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 FTestSuite.form:164 msgid "Reset" msgstr "Restablecer" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Ejecutar" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Cerrar" # gb-ignore #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "Selecciona un color" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:40 msgid "Free" msgstr "Libre" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "No terminado pero estable" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "Experimental" #: FComponentChooser.class:355 msgid "Stable" msgstr "Estable" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "En desuso" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "Este componente es requerido por las siguientes librería:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "Este componente es requerido por las siguientes librerías:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "Este componente es requerido por:

&1" #: FComponentChooser.class:589 msgid "Keep" msgstr "Mantener" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "Eliminar todo" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Estos componentes son incompatibles:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "El componente &1 necesita uno de los siguientes componentes:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "El componente &1 necesita el componente &2." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Selecciona un componente" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Mostrar componentes obsoletos" #: FComponentChooser.form:103 FConflictEditor.form:293 FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 FTextEditor.form:393 FTranslate.form:93 Project.module:924 msgid "Reload" msgstr "Recargar" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 FTextEditor.form:774 msgid "Zoom in" msgstr "Acercarse" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 FTextEditor.form:781 msgid "Zoom out" msgstr "Alejarse" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "Sin zoom" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Editar" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Este archivo está en conflicto. Debe resolver el conflicto para poder volver a utilizar el archivo." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Incapaz de cargar el archivo:" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Texto" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 Project.module:243 msgid "Image" msgstr "Imagen" #: FConflict.class:197 msgid "The file has been modified.\nDo you really want to close the dialog?" msgstr "Los archivos han sido modificados.\n¿Realmente quiere cerrar el dialogo?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Algunos conflictos aún no están resueltos." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Incapaz de resolver conflicto." #: FConflict.class:259 msgid "The file has been modified.\nDo you really want to open another file?" msgstr "Los archivos han sido modificados.\n¿Realmente quiere abrir otro archivo?" #: FConflict.class:267 msgid "Conflict files" msgstr "Archivos en conflicto" #: FConflict.form:31 msgid "Version conflict" msgstr "Conflicto de versión" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 FMenu.form:158 FProjectVersion.form:234 FTextEditor.form:145 msgid "Cut" msgstr "Cortar" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 FProjectVersion.form:240 FSystemInfo.form:38 FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "Copiar" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "Pegar" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 FList.form:111 FOption.form:1740 FProjectVersion.form:252 FTextEditor.form:128 msgid "Undo" msgstr "Deshacer" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 FEditor.form:121 FForm.form:154 FImageEditor.form:127 FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "Rehacer" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "Indentar" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "Desindentar" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 FProjectChooser.form:85 msgid "Open" msgstr "Abrir" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 FTranslate.form:234 msgid "Save" msgstr "Guardar" #: FConflict.form:160 msgid "Solve" msgstr "Resolver" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(Declaraciones)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "Todavía hay conflictos en este archivo." #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "Avanzado" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "Mayúscula" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "Minúscula" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "Comentar" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "Descomentar" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 FTextEditor.form:218 msgid "Paste special" msgstr "Pegado especial" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 FTextEditor.form:250 msgid "Select All" msgstr "Seleccionar Todo" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 FTextEditor.form:260 msgid "Go to line" msgstr "Ir a línea" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "Marcadores" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "Encontrar siguiente" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "Encontrar anterior" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "Vista" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "Ajuste de línea automático" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "Sangría con pestaña" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "No dividir" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "División horizontal" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "División vertical" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "Fin de línea" # gb-ignore #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "Ventanas" # gb-ignore #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "Abrir código" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 FTextEditor.form:409 msgid "Paste as string" msgstr "Pegar como cadena" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "Pegar como cadena multilíneas" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 FTextEditor.form:419 msgid "Paste as comments" msgstr "Pegar como comentarios" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "Editor de texto" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "Código" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Conflicto resuelto" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Conflicto anterior" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Próximo conflicto" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Mantener mis cambios" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Tome sus cambios" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Guarda todos mis cambios" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Tome todos sus cambios" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 FNewConnection.form:70 FNewTable.form:33 FOption.form:323 FProjectProperty.form:320 msgid "Name" msgstr "Nombre" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 FProxy.form:27 msgid "Type" msgstr "Tipo" #: FConnectionEditor.class:61 msgid "Length" msgstr "Largo" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valor predeterminado" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Cotejamiento" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Índice" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Único" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Campo" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "Solicitudes SQL" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Incapaz de conectar con la base de datos." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "No guardar" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "La tabla '&1' ha sido modificada. ¿Desea salvarla?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Sin registro" #: FConnectionEditor.class:500 msgid "One record" msgstr "Un registro" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 registros" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Incapaz de cargar la tabla '&1'." #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "Incapaz de ejecutar la consulta." #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "ilimitado" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "Blob" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "Boolean" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "Flotante" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "Entero" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "Largo" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "Serial" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "Cadena" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "Este nombre ya está en uso." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "Ingrese un número." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "La longitud debe ser mayor que 1 y menor que 255." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "No coinciden los tipos." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "El nombre ya existe." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "El campo es usado en un índice." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "La tabla '&1' no tiene llave primaria." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "No es posible escribir la tabla &1." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "¿Realmente quiere borrar la tabla '&1'?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "No es posible borrar la tabla &1." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "¿Realmente quiere eliminar las filas seleccionadas?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "¿Realmente quiere remover esta consulta?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editor de conexiones" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Mostrar tablas del sistema" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nueva tabla" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Borrar tabla" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Eliminar" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Renombrar tabla" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Renombrar" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Copiar tabla" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Pegar tabla" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importar archivo de texto" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "Importar" #: FConnectionEditor.form:217 msgid "Run query" msgstr "Correr consulta" #: FConnectionEditor.form:223 msgid "New query" msgstr "Nueva consulta" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 FTranslate.form:88 msgid "New" msgstr "Nuevo" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "Eliminar consulta" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 FPublish.form:170 msgid "Clear" msgstr "Limpiar" #: FConnectionEditor.form:309 msgid "Fields" msgstr "Campos" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Añadir" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 FPublish.form:280 msgid "Down" msgstr "Abajo" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 FPublish.form:274 msgid "Up" msgstr "Arriba" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "Copiar lista de campos" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "Índices" #: FConnectionEditor.form:389 msgid "New index" msgstr "Nuevo índice" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 FOption.form:1218 msgid "Edit" msgstr "Editar" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exportar a un archivo CSV" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportar" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 FMenu.form:116 FNewConnection.class:402 FOption.form:1413 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Borrar" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Seleccionar todo" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Deseleccionar todo" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Conversión de proyectos Gambas 3" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "El comando '&1' ha fallado." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Incapaz de mandar el reporte de pulga." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "¡El programa se ha detenido inesperadamente!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Por favor, describe aquí cómo reproducir el fallo." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "El intérprete de Gambas colapsó" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "Enviar un reporte de errores por correo" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "No unir el proyecto al correo" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Sin padre)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "No es posible añadir el archivo." #: FCreateFile.form:37 msgid "New file" msgstr "Nuevo archivo" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "Opciones" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Ancho" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Altura" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Gestión de cuadros de diálogo" #: FCreateFile.form:155 msgid "Parent class" msgstr "Clase padre" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportado" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Instancia automática" #: FCreateFile.form:180 msgid "Not creatable" msgstr "No creable" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Extensión automática" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Revisión del proyecto ha fallado." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "¡No es posible crear el proyecto!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "Por favor, elige una plantilla" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Ingrese la localización del repositorio." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Nuevo proyecto" #: FCreateProject.form:46 msgid "Project type" msgstr "Tipo de proyecto" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Directorio padre" #: FCreateProject.form:90 msgid "Project details" msgstr "Detalles del proyecto" #: FCreateProject.form:99 msgid "Project name" msgstr "Nombre del proyecto" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "El nombre del proyecto es el nombre del directorio del proyecto." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "El directorio final del proyecto es :" #: FCreateProject.form:134 msgid "Project title" msgstr "Titulo del proyecto" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "El titulo del proyecto es el verdadero nombre de la aplicación." #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "El proyecto es traducible" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "Abrir en otra ventana" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repositorio" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "El repositorio del proyecto es enviado directamente al comando 'svn checkout'." #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "Depuración" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Consola" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "Puntos de interrupción" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "Advertencias" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "Control de versiones" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "Resultado de la búsqueda" #: FDebugExpr.class:4 msgid "not available" msgstr "no disponible" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Valor" #: FDebugExpr.class:511 msgid "Key" msgstr "Clave" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Símbolo" #: FDebugExpr.form:33 msgid "Watch" msgstr "Observar" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Imprimir en consola" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Mostrar todos los símbolos" #: FDebugExpr.form:88 msgid "No element" msgstr "No hay elemento" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Línea" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "Función" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Archivo" # gb-ignore #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "Mensage" #: FDebugInfo.class:125 msgid "native code" msgstr "código nativo" #: FDebugInfo.class:205 msgid "Watch expressions" msgstr "Analizar expresiones" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "¿Quiere limpiar la lista de expresiones?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "Archivo no cargado" #: FDebugInfo.class:1255 msgid "Current object" msgstr "Objeto actual" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "Variables locales" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "Depuración" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "Eliminar la expresión actual" #: FDebugInfo.form:137 msgid "Add expression" msgstr "Añadir expresión" #: FDebugInfo.form:210 msgid "Remove breakpoint" msgstr "Quitar punto de interrupción" #: FDebugInfo.form:218 msgid "Disable breakpoint" msgstr "Desactivar punto de interrupción" #: FDebugInfo.form:220 msgid "Disable" msgstr "Inhabilitar" #: FDebugInfo.form:226 msgid "Enable breakpoint" msgstr "Habilitar punto de interrupción" #: FDebugInfo.form:228 msgid "Enable" msgstr "Habilitar" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "Eliminar todos los puntos de interrupción" #: FDebugInfo.form:284 msgid "Tasks" msgstr "Tareas" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "Limpiar consola" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 FVersionControl.form:110 msgid "Commit" msgstr "Consignar" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Sincronizar" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "Agregar todo al repositorio" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "Cancelar la búsqueda actual" #: FDebugInfo.form:474 msgid "Show search window" msgstr "Mostrar ventana de búsqueda" #: FDebugInfo.form:481 msgid "Search again" msgstr "Buscar otra vez" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "La cadena buscada no se encontró." #: FEditor.class:409 msgid "Column" msgstr "" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "Formatear código" #: FEditor.form:202 msgid "Sort procedures" msgstr "Ordenar procedimientos" #: FEditor.form:232 msgid "Go to" msgstr "Ir a" #: FEditor.form:251 msgid "Find definition" msgstr "Encontrar definición" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "Ejecutar hasta la línea actual" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "Intercambiar punto de Interrupción" #: FEditor.form:322 msgid "Watch expression" msgstr "Analizar expresion" #: FEditor.form:331 msgid "Open form" msgstr "Abrir formulario" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "Correr esta clase" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "Bloqueado" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "Imprimir" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Editor" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 msgid "Show modifications" msgstr "" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 msgid "Previous modification" msgstr "" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "Insertar caracter especial" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "Hacer el código bonito" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "Lista de procedimientos" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "Bloquear / desbloquear fichero" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Archivos CSV" #: FExportData.class:113 msgid "Unable to export data." msgstr "Incapaz de exportar datos." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Sobrescribir" #: FExportData.class:126 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Este archivo ya existe.\n\n¿Realmente quiere sobrescribirlo?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Caracter delimitador" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Caracter de cierre" #: FExportData.form:54 msgid "Export field names" msgstr "Exportar nombres de campo" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exportar solo los registros seleccionados" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Granjas" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Fallo de autenticación." #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "Iniciar sesión" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Servidor" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Usuario" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Contraseña" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Recordar contraseña" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Ser anónimo" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Por favor, introduce un e-mail válido." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Las contraseñas no coinciden" #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Imposible registrar el usuario." #: FFarmRegister.class:40 msgid "You have been successfully registered.\n\nYou will receive a confirmation e-mail soon." msgstr "Has sido registrado correctamente.\n\nRecibirás un e-mail de confirmación en breve." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Registrar" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Confirmar contraseña" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "Correo Electrónico" #: FFarmRegister.form:121 msgid "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n

\nYour e-mail will not be stored on the publishing server." msgstr "Se ha enviado un correo de confirmación al e-mail especificado. Haz clic en el enlace incluido en el correo para activar tu cuenta.\n

\nLos e-mail no se almacenan en el servidor." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Incapaz de abrir la conexión." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Incapaz de obtener los campos de la tabla." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Editar lista de campos" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Seleccione un campo" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Conexión" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabla" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "Este archivo está bloqueado, y se eliminará en el siguiente commit." #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "Este archivo no está versionado, y debe ser añadido al repositorio." #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "Este archivo no ha sido modificado desde el último commit." #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 FProjectVersion.class:211 FSave.form:22 Project.module:614 VersionControl.module:430 msgid "Continue" msgstr "Continuar" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "¡Va a cancelar sus cambios!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Cambios" #: FFileInfoVC.form:44 FVersionControl.form:52 msgid "History" msgstr "" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "Deshacer cambios" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" # gb-ignore #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Modulo de Gambas" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Clase de Gambas" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "Propiedades '&1'" #: FFontChooser.form:12 msgid "Select a font" msgstr "Seleccione una fuente" #: FForm.class:136 msgid "Bad form file" msgstr "Archivo de formulario incorrecto" #: FForm.class:284 msgid "Unknown control: &1" msgstr "Control desconocido: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "Componente desaparecido para el control &1" #: FForm.class:1923 msgid "Cannot paste data." msgstr "No se pueden pegar datos." #: FForm.form:178 msgid "Copy at the same place" msgstr "Copiar en el mismo lugar" #: FForm.form:198 msgid "Delete container only" msgstr "Borrar sólo el contenedor" #: FForm.form:205 msgid "Embed into a container" msgstr "Incrustrar en un contenedor" #: FForm.form:211 msgid "Change into" msgstr "Cambiar en" #: FForm.form:219 msgid "Select" msgstr "Seleccionar" #: FForm.form:232 msgid "Select parent" msgstr "Seleccionar padre" #: FForm.form:245 msgid "Arrangement" msgstr "Alineamiento" #: FForm.form:249 msgid "Bring to foreground" msgstr "Mandar al frente" #: FForm.form:256 msgid "Send to background" msgstr "Enviar al fondo" #: FForm.form:266 msgid "Horizontal" msgstr "Horizontal" #: FForm.form:273 msgid "Rows" msgstr "Filas" #: FForm.form:279 msgid "Vertical" msgstr "Vertical" #: FForm.form:286 msgid "Columns" msgstr "Columnas" #: FForm.form:295 msgid "Center horizontally" msgstr "Centrar horizontalmente" #: FForm.form:301 msgid "Center vertically" msgstr "Centrar verticalmente" #: FForm.form:307 msgid "Alignment" msgstr "Alineación" #: FForm.form:311 msgid "Align to left" msgstr "Alinear hacia la izquierda" #: FForm.form:317 msgid "Align to right" msgstr "Alinear hacia la derecha" #: FForm.form:323 msgid "Align to top" msgstr "Alinear hacia arriba" #: FForm.form:329 msgid "Align to bottom" msgstr "Alinear hacia abajo" #: FForm.form:338 msgid "Same width" msgstr "El mismo ancho" #: FForm.form:344 msgid "Same height" msgstr "La misma altura" #: FForm.form:353 msgid "Show tab" msgstr "Mostrar pestaña" #: FForm.form:361 msgid "Move tab" msgstr "Mover pestaña" #: FForm.form:366 msgid "First" msgstr "Primero" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "Previo" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "Siguiente" #: FForm.form:387 msgid "Last" msgstr "Último" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "Editor de menú" #: FForm.form:407 msgid "Event" msgstr "Evento" #: FForm.form:421 msgid "Run this form" msgstr "Correr este formulario" #: FForm.form:601 msgid "Toggle grid" msgstr "Intercambiar parrilla" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "Alternar información sobre herramientas" #: FForm.form:729 msgid "Move tab first" msgstr "Mover pestaña al principio" #: FForm.form:736 msgid "Move tab left" msgstr "Mover pestaña a la izquierda" #: FForm.form:743 msgid "Move tab right" msgstr "Mover pestaña a la derecha" #: FForm.form:750 msgid "Move tab last" msgstr "Mover pestaña al final" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "Negrita" #: FForm.form:786 msgid "Italic" msgstr "Cursiva" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "Subrayado" #: FForm.form:802 msgid "Bigger font" msgstr "Fuente mas grande" #: FForm.form:810 msgid "Smaller font" msgstr "Fuente mas pequeña" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "Fuente por defecto" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Fondo" #: FForm.form:834 msgid "Foreground" msgstr "Primer plano" #: FForm.form:845 msgid "Lock / unlock form" msgstr "Bloquear / desbloquear formulario" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "Jerarquía" #: FFormStack.form:24 msgid "Move top" msgstr "Mover a la parte superior" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "Mover arriba" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "Mover abajo" #: FFormStack.form:42 msgid "Move bottom" msgstr "Mover al fondo" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "Lenguaje por defecto" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Navegador de ayuda" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "Mostrar árbol de ayuda" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Ir atrás" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "Adelante" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "Atajos de teclado del IDE" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "Depurador" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 FTranslate.form:154 msgid "Translation" msgstr "Traducción" #: FImageEditor.form:159 msgid "Action" msgstr "Acción" #: FImageEditor.form:164 msgid "Crop" msgstr "Recortar" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "Reflejo horizontal" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "Espejo vertical" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "Rotar en sentido antihorario" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "Rotar en sentido horario" #: FImageEditor.form:205 msgid "Resize" msgstr "Cambiar el tamaño" #: FImageEditor.form:212 msgid "Rotate" msgstr "Rotar" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Ocultar selección" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selección" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Invertir selección" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Duplicar selección" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "Selección de desplazamiento" #: FImageEditor.form:266 msgid "Union" msgstr "Unión" #: FImageEditor.form:272 msgid "Difference" msgstr "Diferencia" #: FImageEditor.form:278 msgid "Intersection" msgstr "Intersección" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "Exclusivo o" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Formar cuadrícula" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "Acercamiento normal" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "Ajustar acercamiento" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "Guardar como JPG" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "Guardar como PNG" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "Guardar como BMP" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "Guardar como TIFF" #: FImageEditor.form:427 msgid "Image editor" msgstr "Editor de imágenes" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "Dibujar cuadrícula" #: FImageEditor.form:557 msgid "Move" msgstr "Mover" #: FImageEditor.form:568 msgid "Draw" msgstr "Dibujar" #: FImageEditor.form:578 msgid "Erase" msgstr "Borrar" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Rectángulo" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipse" #: FImageEditor.form:628 msgid "Magic wand" msgstr "Vara mágica" #: FImageEditor.form:645 msgid "Edit selection" msgstr "Editar selección" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "Cambiar el tamaño o estirar la imagen" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "Rotar imagen" # gb-ignore #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "Borde" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Portapapeles del sistema" #: FImageProperty.class:1269 msgid "Arrow" msgstr "Flecha" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "Flecha #2" #: FImageProperty.class:1272 msgid "Triangle" msgstr "Triángulo" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "Triángulo cuadrado" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "Pentágono" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "Hexágono" #: FImageProperty.form:173 msgid "Gradient" msgstr "Degradado" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Degradación lineal" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Degradación radial" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "Agregar punto de degradado" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "Eliminar punto de degradado" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "Seleccionar color de parada de degradado" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "Invertir gradiente" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "Radio" #: FImageProperty.form:327 msgid "Clipboard" msgstr "Portapepeles" #: FImageProperty.form:339 msgid "Shapes" msgstr "Formas" #: FImageProperty.form:364 msgid "Stroke" msgstr "Trazo" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "Llenar" #: FImageProperty.form:392 msgid "Colorize" msgstr "Colorear" #: FImageProperty.form:400 msgid "Desaturate" msgstr "Desaturar" #: FImageProperty.form:408 msgid "Make transparent" msgstr "Hacer transparente" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 msgid "Line cap" msgstr "Tapa de línea" #: FImageProperty.form:431 msgid "Line join" msgstr "Unión de línea" #: FImageProperty.form:436 msgid "Fill rule" msgstr "Regla de relleno" #: FImageProperty.form:454 msgid "Opacity" msgstr "Opacidad" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Tamaño" #: FImageProperty.form:490 msgid "Tolerance" msgstr "Tolerancia" #: FImageProperty.form:509 msgid "Roundness" msgstr "Redondez" #: FImageProperty.form:535 msgid "Effects" msgstr "Efectos" #: FImageProperty.form:545 msgid "Brightness" msgstr "Brillo" #: FImageProperty.form:564 msgid "Contrast" msgstr "Contraste" #: FImageProperty.form:583 msgid "Gamma" msgstr "Gamma" #: FImageProperty.form:602 msgid "Lightness" msgstr "Suavisado" #: FImageProperty.form:621 msgid "Hue" msgstr "Matriz" #: FImageProperty.form:640 msgid "Saturation" msgstr "Saturación" #: FImageProperty.form:659 msgid "Blur" msgstr "Difuminar" #: FImageProperty.form:676 msgid "Transparency" msgstr "Transparencia" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "Preliminar" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "Aplicar" #: FImageProperty.form:745 msgid "Centered" msgstr "Centrado" #: FImageProperty.form:755 msgid "Right align" msgstr "Alinear a la derecha" #: FImageProperty.form:764 msgid "Left align" msgstr "Alinear a la izquierda" #: FImageProperty.form:777 msgid "Top align" msgstr "Alineacón superior" #: FImageProperty.form:786 msgid "Middle align" msgstr "Alinear al medio" #: FImageProperty.form:796 msgid "Baseline align" msgstr "Alineamiento con la línea base" #: FImageProperty.form:805 msgid "Bottom align" msgstr "Alineamiento inferior" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "Resolución de la cuadrícula" #: FImageProperty.form:859 msgid "Grid snap" msgstr "Ajuste de rejilla" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "Dibujar diagonales" #: FImageQuality.form:10 msgid "Image quality" msgstr "Calidad de la imagen" #: FImageResize.form:25 msgid "Resize image" msgstr "Cambiar el tamaño de la imagen" #: FImageResize.form:64 msgid "Resize and center" msgstr "Cambiar el tamaño y centrar" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "Cambiar el tamaño y centrar horizontalmente" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "Cambiar el tamaño y centrar verticalmente" #: FImageResize.form:85 msgid "Stretch image" msgstr "Estirar imágen" #: FImageResize.form:113 msgid "Add a border" msgstr "Añadir un borde" #: FImageResize.form:118 msgid "Ratio" msgstr "Radio" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Clases Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Módulos Gambas" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Hojas de estilo en cascada" #: FImportFile.class:33 msgid "HTML files" msgstr "Archivos HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "Archivos Javascript" #: FImportFile.class:33 msgid "Picture files" msgstr "Archivos de imagen" #: FImportFile.class:188 msgid "Cannot import file." msgstr "No se puede importar el archivo." #: FImportFile.form:9 msgid "Import files" msgstr "Importar archivos" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Crear enlaces simbólicos" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "Todos los Archivos" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Llave automática)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Campo_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "No hay suficientes valores" #: FImportTable.class:393 msgid "Too many values" msgstr "Demasiados valores" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Cancelado por el usuario" #: FImportTable.class:427 msgid "No record imported." msgstr "Registros no importados." #: FImportTable.class:429 msgid "One record imported." msgstr "Un registro importado." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 registros importados." #: FImportTable.form:35 msgid "Import file" msgstr "Importar archivo" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Seleccione el archivo CSV para importar" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Fuente" #: FImportTable.form:78 msgid "Charset" msgstr "Codificación de caracteres" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Elimiar espacios en blanco" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignorar primeras líneas" #: FImportTable.form:139 msgid "Line(s)" msgstr "Línea(s)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destino" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "La primera línea contiene los nombre de campos" #: FImportTable.form:176 msgid "Key field" msgstr "Campo llave" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "" #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 msgid "This layout already exists." msgstr "" #: FLayout.form:14 msgid "Save layout" msgstr "" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "Ítem &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "¿Realmente quiere limpiar la lista?" #: FList.form:25 msgid "Edit list property" msgstr "Editar lista de propiedades" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "Insertar" #: FList.form:87 msgid "Invert" msgstr "Invertir" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "¿Realmente quiere borrar este vínculo?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "¿Realmente quiere borrar este directorio?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "¿Realmente quiere borrar este archivo?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "No es posible borrar el archivo o el directorio" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "El archivo o directorio ya no existe." #: FMain.class:773 msgid "Sort history" msgstr "Ordenar historial" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "Ordenar por fecha" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "Ordenar por nombre" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "Ordenar por ruta" #: FMain.class:789 msgid "&Clear history" msgstr "&Limpiar historial" #: FMain.class:969 msgid "New folder" msgstr "Nueva carpeta" #: FMain.class:1040 msgid "The GNU translation tools are not installed on your system.\n\nPlease install them to be able to do the translation." msgstr "Las herramientas de traducción de GNU no están instaladas en su sistema.\n\nInstalelas para poder hacer la traducción." #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "Incapaz de borrar el archivo en el proyecto." #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "Todas las copias de seguridad o archivos generados se borrarán en el directorio del proyecto." #: FMain.class:1904 msgid "Clean" msgstr "Limpiar" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "¿Realmente desea agregar cada archivo al repositorio?" #: FMain.class:2359 msgid "Choose a profile" msgstr "Elija un perfil" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "Perfil para el proyecto &1" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "Seleccione un archivo" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "El archivo está ubicado dentro del proyecto." #: FMain.class:2781 Project.module:924 msgid "The file has been modified.\n\nAll your changes will be lost." msgstr "El archivo ha sido modificado.\n\nTodos sus cambios se perderán." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Abrir proyecto" #: FMain.form:313 msgid "Open recent" msgstr "Abrir reciente" #: FMain.form:321 msgid "Open example" msgstr "Abrir ejemplo" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "Abrir archivo" #: FMain.form:339 msgid "Save project" msgstr "Guardar proyecto" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Guardar proyecto como" #: FMain.form:358 msgid "Reload project" msgstr "Proyecto de recarga" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Salir" #: FMain.form:402 Project.module:6969 msgid "Save as" msgstr "Guardar como" #: FMain.form:442 msgid "Compile" msgstr "Compilar" #: FMain.form:449 msgid "Compile All" msgstr "Compilar todo" #: FMain.form:459 msgid "Translate" msgstr "Traducir" #: FMain.form:468 msgid "Make" msgstr "Crear" #: FMain.form:472 msgid "Executable" msgstr "Ejecutable" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "Archivo fuente" #: FMain.form:486 msgid "Installation package" msgstr "Paquete de instalación" #: FMain.form:493 msgid "Patch" msgstr "Parchear" #: FMain.form:496 msgid "Create" msgstr "Crear" #: FMain.form:525 msgid "Undo synchronization" msgstr "Deshacer sincronización" #: FMain.form:544 msgid "Branch" msgstr "Rama" #: FMain.form:549 msgid "Put under version control" msgstr "Poner bajo control de versiones" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "Publicar" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "Limpiar" #: FMain.form:570 msgid "Refresh" msgstr "Refrescar" #: FMain.form:599 msgid "Run with" msgstr "Ejecutar con" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Pausa" #: FMain.form:630 msgid "Stop" msgstr "Parar" #: FMain.form:637 msgid "Step" msgstr "Paso" #: FMain.form:644 msgid "Forward" msgstr "Adelante" #: FMain.form:651 msgid "Finish" msgstr "Terminar" #: FMain.form:660 msgid "Use terminal emulator" msgstr "Usar emulador de terminal" #: FMain.form:666 msgid "Redirect standard error output" msgstr "Redireccionar a la salida estándar de errores" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "Usar el servidor HTTP incrustado" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "Compomente GUI" #: FMain.form:713 msgid "Current desktop" msgstr "Escritorio actual" #: FMain.form:750 msgid "Activate profiling" msgstr "Activar perfilado" #: FMain.form:756 msgid "Open profile" msgstr "Abrir perfil" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "Limpiar todos los puntos de interrupción" #: FMain.form:770 msgid "Close all debug windows" msgstr "Cerrar todas ventanas del depurador" #: FMain.form:808 msgid "Status bar" msgstr "Barra de estado" #: FMain.form:815 msgid "Hide menubar" msgstr "Ocultar la barra de menú" #: FMain.form:839 msgid "Close all windows" msgstr "Cerrar todas las ventanas" #: FMain.form:846 msgid "Tools" msgstr "Herramientas" #: FMain.form:850 msgid "Find" msgstr "Encontrar" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Reemplazar" #: FMain.form:866 msgid "Browse project" msgstr "Navegar proyecto" #: FMain.form:873 msgid "Open a terminal" msgstr "Abrir una Terminal" #: FMain.form:880 msgid "Send project by mail" msgstr "Enviar projecto por mail" #: FMain.form:886 msgid "Update all forms" msgstr "Actualizar todos los formularios" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "Granja de software" #: FMain.form:904 msgid "Shortcuts" msgstr "Atajos" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Preferencias" #: FMain.form:924 msgid "Directory" msgstr "Directorio" #: FMain.form:929 msgid "Project link" msgstr "Vínculo del proyecto" #: FMain.form:938 msgid "Module" msgstr "Módulo" #: FMain.form:945 msgid "Test module" msgstr "" #: FMain.form:1004 msgid "HTML file" msgstr "Archivo HTML" #: FMain.form:1011 msgid "Style sheet" msgstr "Hoja de estilo" #: FMain.form:1018 msgid "Javascript file" msgstr "Archivo Javascript" #: FMain.form:1025 msgid "Other" msgstr "Otros" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Reciente" #: FMain.form:1059 msgid "Open in file manager" msgstr "Abrir en administrador de archivos" #: FMain.form:1064 msgid "Open in project" msgstr "Abierto en proyecto" #: FMain.form:1068 msgid "Open with" msgstr "Abrir con" #: FMain.form:1100 msgid "Duplicate" msgstr "Duplicar" #: FMain.form:1123 msgid "Copy file path" msgstr "Copiar ruta de archivo" #: FMain.form:1132 msgid "Startup class" msgstr "Clase de inicio" #: FMain.form:1147 msgid "Add to repository" msgstr "Agregar al repositorio" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtrar" #: FMain.form:1155 msgid "Show exported classes" msgstr "Mostrar clases exportadas" #: FMain.form:1160 msgid "Show added files" msgstr "Mostrar archivos agregados" #: FMain.form:1165 msgid "Show modified files" msgstr "Mostrar archivos modificados" #: FMain.form:1170 msgid "Show files in conflict" msgstr "Mostrar archivos en conflicto" #: FMain.form:1175 msgid "Show untranslatable files" msgstr "" #: FMain.form:1180 msgid "Show compressed files" msgstr "" #: FMain.form:1188 msgid "Show all" msgstr "Mostrar todo" #: FMain.form:1200 msgid "Do not translate" msgstr "No traducir" #: FMain.form:1207 msgid "Compress all" msgstr "Comprimir todo" #: FMain.form:1213 msgid "Uncompress all" msgstr "Descomprimir todo" #: FMain.form:1219 msgid "Compress file into the executable" msgstr "" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "Comprimir archivo" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "Nueva conexión" # gb-ignore #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Consejos del día" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "Información del Sistema" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Propiedades del proyecto" #: FMain.form:1429 msgid "Refresh project" msgstr "Refrescar proyecto" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "Crear Ejecutable" #: FMain.form:1471 msgid "Make source archive" msgstr "Crear archivo fuente" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "Crear paquete de instalación" #: FMain.form:1500 msgid "Properties sheet" msgstr "Hoja de propiedades" #: FMain.form:1509 msgid "Toolbox" msgstr "Caja de herramientas" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "Buscar" #: FMain.form:1551 msgid "Compile all" msgstr "Compilar todo" #: FMain.form:1600 msgid "Finish current function" msgstr "Terminar la función actual" #: FMain.form:1616 msgid "Show menubar" msgstr "Mostrar barra de menú" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "Publicar software" #: FMain.form:1706 msgid "&File" msgstr "&Archivo" #: FMain.form:1730 msgid "&Project" msgstr "&Proyecto" #: FMain.form:1742 msgid "&Debug" msgstr "&Depuración" #: FMain.form:1754 msgid "&View" msgstr "&Ver" #: FMain.form:1766 msgid "&Tools" msgstr "&Herramientas" # gb-ignore #: FMain.form:1778 msgid "&?" msgstr "" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 msgid "Show project tree" msgstr "" #: FMain.form:1916 msgid "Show properties sheet" msgstr "" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 msgid "Show controls" msgstr "" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Aplicaciones Gambas" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "Versión incremental" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Mantener información de depuración en el ejecutable" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "Crear un acceso directo en el escritorio" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "The following patterns will be substituted in the command :
\n• $(FILE) will be replaced by the executable path.
\n• $(DIR) by the project directory.
\n• $(NAME) by the project name.
\n• $(TITLE) by the project title.
\n• $(VERSION) by the project version.
\n
\nNote : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "Paquete" #: FMakeInstall.class:137 msgid "Min. version" msgstr "Versión Mín." #: FMakeInstall.class:138 msgid "Max. version" msgstr "Versión Máx." #: FMakeInstall.class:144 msgid "File or directory" msgstr "Archivo o directorio" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "Creando paquetes ..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Los paquetes han sido creados con éxito." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Ingrese introduzca su nombre." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Ingrese su dirección de correo electrónico." #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "Por favor, introduzca el nombre del proveedor." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "No hay entrada de CHANGELOG para este lanzamiento." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Ingrese la primera entrada del archivo CHANGELOG." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "Elija al menos una distribución de destino." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "Elija la ubicación del paquete para cada distribución de destino." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "Elija un grupo de paquetes." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "Elija la ubicación del menú para cada distribución de destino." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "Elija una ubicación para el menú." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "No es posible encontrar el archivo extra: &1" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "Elija un directorio objetivo para cada archivo extra." #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "El sistema de paquetes Debian no permite espacios en nombres de archivo." #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "El sistema de paquetes Debian no permite espacios en nombres de directorios." #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "El paquete no puede ser almacenado dentro del directorio del proyecto." #: FMakeInstall.class:558 msgid "Initial release" msgstr "Lanzamiento inicial" #: FMakeInstall.class:814 msgid "Menus" msgstr "Menús" #: FMakeInstall.class:882 msgid "Groups" msgstr "Grupos" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "Caracteres incorrectos" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "¿Realmente quiere eliminar todas las dependencias extra?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "¿Realmente quiere eliminar todas los archivos extra?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "Seleccione un directorio destino" #: FMakeInstall.form:151 msgid "Create package" msgstr "Crear paquetes" #: FMakeInstall.form:154 msgid "Package information" msgstr "Información del paquete" #: FMakeInstall.form:160 msgid "Package name" msgstr "Nombre del paquete" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "Añadir prefijo 'vendor' al nombre del paquete" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "Versión de paquete" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "Nombre del vendedor" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "Prefijo de vendedor" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Información del mantenedor" # gb-ignore #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Registro de cambios" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Distribución objetivo" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Autoextraíble" #: FMakeInstall.form:612 msgid "Package group" msgstr "Grupo de paquetes" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Entrada al menú" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categorías" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Archivo de configuración de escritorio" # gb-ignore #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "Enter the mimetypes handled by your application there.\nPlease enter one mimetype by line.\n" msgstr "Ingrese el tipo MIME manejado por su aplicación.\nIngrese un tipo MIME por línea.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Configuración adicional" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Lo siguiente será agregado al final del archivo de configuración de escritorio." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Dependencias extra" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Versión mínima de Gambas" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Mismas dependencias para todos los paquetes" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Archivos extra" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Mismos archivos para todas los paquetes" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Los archivos extra deben ser situados en la carpeta Proyecto del proyecto actual, por ejemplo, el directorio .hidden del proyecto en el disco." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Pruebas adicionales de autoconf" #: FMakeInstall.form:867 msgid "Add extra tests for the configuration process.\n

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "Agregar pruebas extra para el proceso de configuración.\n

Deje esto en blanco si no lo necesita, o si no conoce nada sobre scripts autoconf." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Directorio destino" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Crear directorios para cada distribución" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Salida de comandos" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Crear paquete ahora" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Seleccione el archivo de origen." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Seleccione el proyecto de origen." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Ingrese el nombre del parche." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "El parche se ha generado correctamente." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Incapaz de generar el parche." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Generar parche" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Seleccione origen del parche" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Origen del parche" #: FMakePatch.form:59 msgid "Project directory" msgstr "Directorio del proyecto" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Nombre de parche automático" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Editar parche" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "El asistente generará un parche entre el proyecto de origen y el proyecto actual." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Seleccione un archivo fuente" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Paquetes fuente" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Seleccione el directorio del proyecto" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Elija un nombre para el parche" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Parches/Ficheros de diferencias" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "Crear paquete fuente" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "¡Los menús han sido modificados!" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "Ingrese un nombre de menú." #: FMenu.class:346 msgid "Bad menu name !" msgstr "¡Nombre de menú incorrecto!" #: FMenu.class:352 msgid "Bad group name !" msgstr "¡Nombre de grupo incorrecto!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "¡El menú tiene demasiados niveles!" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "modificado" #: FMenu.form:86 msgid "Insert menu" msgstr "Insertar menú" #: FMenu.form:95 msgid "Insert separator" msgstr "Insertar separador" #: FMenu.form:104 msgid "Insert menu before" msgstr "Insertar menú antes" #: FMenu.form:107 msgid "Insert before" msgstr "Insertar antes" #: FMenu.form:113 msgid "Delete menu" msgstr "Borrar menú" #: FMenu.form:179 msgid "Paste before" msgstr "" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Haga click en Insertar para añadir un menú nuevo." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Ingrese el nombre de la base de datos." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Ingrese una contraseña" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Propiedades de conexión" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Seleccione un directorio" #: FNewConnection.class:229 msgid "Create database" msgstr "Crear base de datos" #: FNewConnection.class:241 msgid "Delete database" msgstr "Eliminar base de datos" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Incapaz de crear la base de datos." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "¿Realmente quiere borrar la base de datos '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Incapaz de borrar la base de datos." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Servidor" #: FNewConnection.form:124 msgid "Path" msgstr "Ruta" #: FNewConnection.form:154 msgid "No password" msgstr "Sin contraseña" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Base de datos" #: FNewConnection.form:241 msgid "From" msgstr "Desde" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignorar codificación de caracteres de la base de datos" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Mostrar metadatos" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Recordar estructura de la base de datos" #: FNewTable.class:33 msgid "Create table" msgstr "Crear tabla" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Ingrese el nombre de la nueva tabla." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "La tabla '&1' ya existe." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nueva traducción" #: FOpenProject.form:22 msgid "Select a project" msgstr "Seleccione un proyecto" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Ejemplos" #: FOption.class:4 msgid "Amber" msgstr "Ámbar" #: FOption.class:4 msgid "Amethyst" msgstr "Amatista" #: FOption.class:4 msgid "Blues" msgstr "Azules" #: FOption.class:4 msgid "Emerald" msgstr "Esmeralda" # gb-ignore #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidiana" #: FOption.class:4 msgid "Pastel" msgstr "Pastel" #: FOption.class:4 msgid "Quest" msgstr "Búsqueda" #: FOption.class:4 msgid "Quick" msgstr "Rápido" # gb-ignore #: FOption.class:4 msgid "Ruby" msgstr "" #: FOption.class:4 msgid "Sapphire" msgstr "Zafiro" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "Zen" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "Personalizado" #: FOption.class:91 msgid "Desktop" msgstr "Escritorio" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(Por defecto)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "Archivos de temas de resaltado de Gambas" #: FOption.class:267 msgid "Export a theme file" msgstr "Exportar un archivo de tema" #: FOption.class:498 msgid "Select a theme file" msgstr "Seleccione un archivo de tema" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "Necesita reiniciar la aplicación para ver los cambios." #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "¿Realmante quiere borrar la caché de documentación?" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "Imposible eliminar la caché de documentación" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "¿Realmente quiere borrar este fragmento de código?" #: FOption.class:1224 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "Instalar" #: FOption.class:1310 msgid "Network is not available." msgstr "Red no disponible" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "Documentación actualizada" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "Nueva documentación disponible" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "Documentación no disponible" #: FOption.class:1507 msgid "Cannot download '&1'." msgstr "No se puede descargar '&1'." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "Incapaz de descomprimir documentación." #: FOption.class:1549 msgid "Unable to install documentation." msgstr "Imposible instalar la documentación." #: FOption.class:1659 msgid "Compact" msgstr "" #: FOption.class:1674 msgid "Current" msgstr "" #: FOption.class:1716 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1814 msgid "Do you really want to delete that layout?" msgstr "" #: FOption.form:295 msgid "Dotted" msgstr "Punteado" #: FOption.form:306 msgid "Identity" msgstr "Identidad" #: FOption.form:350 msgid "Package maintainer" msgstr "Mantenedor del paquete" #: FOption.form:395 msgid "Default license" msgstr "Licencia por defecto" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "No" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "Sí" #: FOption.form:439 msgid "Projects" msgstr "Proyectos" #: FOption.form:456 msgid "Default tab size" msgstr "Anchura de tabulador por defecto" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "espacio(s)" #: FOption.form:482 msgid "Indent with tab by default" msgstr "Sangría con pestaña por defecto" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "Ajuste de línea automático por defecto" #: FOption.form:516 msgid "Activate version control" msgstr "Activar control de versiones" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "Restaurar archivos al cargar un proyecto" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Compilación" #: FOption.form:556 msgid "Number of background jobs" msgstr "" #: FOption.form:569 msgid "Images" msgstr "Imágenes" #: FOption.form:581 msgid "Compress PNG images with " msgstr "Comprime imágenes PNG con" #: FOption.form:615 msgid "Automatic translation with " msgstr "Traducción automática con" #: FOption.form:644 msgid "Translation engine" msgstr "Motor de traducción" #: FOption.form:653 msgid "Help & applications" msgstr "Ayuda & aplicaciones" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Ayuda" #: FOption.form:670 msgid "Show documentation in popups" msgstr "Mostrar la documentación en ventanas emergentes" #: FOption.form:687 msgid "Always display optional messages" msgstr "Mostrar siempre mensajes opcionales" #: FOption.form:699 msgid "Documentation" msgstr "Documentación" #: FOption.form:710 msgid "Use offline documentation" msgstr "Usar documentación sin conexión" #: FOption.form:740 msgid "Download documentation" msgstr "Descargar documentación" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "Configuración de Proxy" #: FOption.form:779 msgid "Clear documentation cache" msgstr "Borrar la caché de documentación" #: FOption.form:787 msgid "Applications" msgstr "Aplicaciones" #: FOption.form:798 msgid "Browser" msgstr "Navegador" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "Terminal" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "Mostrar sangría con líneas verticales" #: FOption.form:858 msgid "Highlight current line" msgstr "Resaltar línea actual" #: FOption.form:875 msgid "Highlight modified lines" msgstr "Resaltar líneas modificadas" #: FOption.form:892 msgid "Show line numbers" msgstr "Mostrar números de línea" #: FOption.form:909 msgid "Procedure folding" msgstr "Plegado de procedimientos" #: FOption.form:926 msgid "Procedure separation" msgstr "Separación de procedimientos" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "Mostrar espacios y finales de línea con puntos" #: FOption.form:960 msgid "Show Preview" msgstr "Mostrar vista previa" #: FOption.form:978 msgid "Keywords in upper case" msgstr "Palabras clave en mayúscula" #: FOption.form:987 msgid "Code formatting" msgstr "Formateo de código" #: FOption.form:993 msgid "Automatic formatting" msgstr "Formato automático" #: FOption.form:1004 msgid "Control structure completion" msgstr "Control de terminación de estructura" #: FOption.form:1021 msgid "Local variable declaration" msgstr "Declaración de variable local" #: FOption.form:1038 msgid "Comments insertion" msgstr "Inserción de comentarios" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "Cerrar llaves, soportes" #: FOption.form:1072 msgid "Close strings" msgstr "Cuerdas cerradas" #: FOption.form:1084 msgid "Explicit formating" msgstr "Formato explicito" #: FOption.form:1095 msgid "Format on load & save" msgstr "Formatear al cargar y guardar" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "Indentar declaración local de variables" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "Eliminar espacios vacíos al final de la línea" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "Mantener las líneas sucesivas vacías" #: FOption.form:1155 msgid "Code snippets" msgstr "Fragmentos de código" #: FOption.form:1171 msgid "Activate code snippets" msgstr "Activar fragmentos de código" #: FOption.form:1232 msgid "Interface" msgstr "Interfaz" #: FOption.form:1249 msgid "Activate animations" msgstr "Activar animaciones" #: FOption.form:1266 msgid "Show shadows" msgstr "Mostrar sombras" #: FOption.form:1283 msgid "Show tooltips" msgstr "Mostrar consejos" #: FOption.form:1300 msgid "Use utility windows" msgstr "Usar ventanas de utilidad" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "Cierre las pestañas con el clic central del mouse" #: FOption.form:1334 msgid "Show file name in window title" msgstr "Mostrar nombre de archivo en título de ventana" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "Mostrar panel de depuración si es necesario" #: FOption.form:1368 msgid "Message style" msgstr "" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "Fuentes" #: FOption.form:1452 msgid "Global size" msgstr "Tamaño global" #: FOption.form:1474 msgid "Title size" msgstr "Tamaño del titulo" #: FOption.form:1496 msgid "Debugger size" msgstr "Tamaño del depurador" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Impresión" #: FOption.form:1588 msgid "Fixed font" msgstr "Fuente fija" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "Zoom (exceptuado el navegador)" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "Instalar la fuente de Gambas para la edición de código" #: FOption.form:1681 msgid "Themes" msgstr "Temas" #: FOption.form:1698 msgid "Icon theme" msgstr "Tema de iconos" #: FOption.form:1714 msgid "Highlighting theme" msgstr "Destacando el tema" #: FOption.form:1728 msgid "Import theme" msgstr "Importar tema" #: FOption.form:1734 msgid "Export theme" msgstr "Exportar tema" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Consola - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Desbloquear consola" #: FOutput.form:72 msgid "Keep above" msgstr "Mantener por encima" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Suspender terminal" #: FOutput.form:104 msgid "Entered text echo" msgstr "Entró eco texto" #: FOutput.form:106 msgid "Echo" msgstr "Echo" #: FOutput.form:117 msgid "Open contents" msgstr "Contenidos abiertos" #: FOutput.form:130 msgid "Use system charset" msgstr "Usar codificación de caracteres del sistema" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Incapaz de pegar texto." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Contenido del portapapeles" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Pegar normalmente" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Pegar con PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Ingrese un nombre de tabla." #: FPasteTable.class:133 msgid "Table already exists" msgstr "La tabla ya existe" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "También copiar los datos de la tabla" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Ese archivo no luce como un archivo patch!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Parchear el proyecto actual" #: FPatch.form:31 msgid "Select patch" msgstr "Seleccione un parche" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Revertir" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "Formato del archivo de perfil incorrecto" # gb-ignore #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "Tiempo total &1 μs" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "Incapaz de cargar perfil: &1" #: FProfile.class:713 msgid "Calls" msgstr "Ejecuciones" #: FProfile.class:716 msgid "Duration" msgstr "Duración" #: FProfile.class:719 msgid "Average" msgstr "Promedio" #: FProfile.class:722 msgid "Self" msgstr "Sí mismo" #: FProfile.class:1121 msgid "Profile files" msgstr "Archivos de perfil" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "Incapaz de guardar perfil." #: FProfile.form:60 msgid "Show relative durations" msgstr "Mostrar duraciones relativas" #: FProfile.form:67 msgid "Show average" msgstr "Mostrar promedio" #: FProfile.form:74 msgid "Save profile" msgstr "Guardar perfil" #: FProfile.form:126 msgid "Callees" msgstr "Métodos ejecutados" #: FProfile.form:138 msgid "Callers" msgstr "Ejecutado por" #: FProjectProperty.class:55 msgid "Variable" msgstr "Variable" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "Snapping value is incorrect." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "&1 no exporta ninguna clase." #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "&1 ya está usado como librería." #: FProjectProperty.class:1000 msgid "Modules" msgstr "Módulos" #: FProjectProperty.class:1001 msgid "Test modules" msgstr "" #: FProjectProperty.class:1011 msgid "Functions" msgstr "" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "Líneas de código" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 msgid "Executable size" msgstr "Tamaño del ejecutable" #: FProjectProperty.class:1016 msgid "bytes" msgstr "bytes" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "Información sobre el componente" #: FProjectProperty.class:1039 msgid "Information about library" msgstr "Información sobre la librería" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1420 msgid "Gambas executable" msgstr "Gambas ejecutable" #: FProjectProperty.form:250 msgid "JIT compiler" msgstr "" #: FProjectProperty.form:300 msgid "General" msgstr "General" #: FProjectProperty.form:366 msgid "Component" msgstr "Componente" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "Librería" #: FProjectProperty.form:366 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:373 msgid "Vendor" msgstr "Proveedor" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versión" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "Obtener del archivo 'VERSION' " #: FProjectProperty.form:418 msgid "Title" msgstr "Título" #: FProjectProperty.form:452 msgid "Information" msgstr "Información" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "Progreso" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "Terminado y estable" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "Este componente está oculto" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "Compatible hasta la versión" #: FProjectProperty.form:535 msgid "Include information from" msgstr "Incluye información de" #: FProjectProperty.form:547 msgid "Required features" msgstr "Características requeridas" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "Componentes requeridos y excluidos" #: FProjectProperty.form:624 msgid "Require" msgstr "Requiere" #: FProjectProperty.form:630 msgid "Exclude" msgstr "Excluir" #: FProjectProperty.form:642 msgid "Remove All" msgstr "Eliminar todo" #: FProjectProperty.form:649 msgid "Components" msgstr "Componentes" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Librerías" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "Ruta de búsqueda de biblioteca en tiempo de ejecución" #: FProjectProperty.form:737 msgid "Additional references" msgstr "Referencias adicionales" #: FProjectProperty.form:748 msgid "Environment" msgstr "Entorno" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Edición" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Tamaño del tabulador" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "Mostrar los componentes y controles obsoletos" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "Símbolos en módulos son públicos por defecto" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Los controles de formulario son públicos" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "Activar advertencias" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "Estadísticas" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Esta línea y las siguientes serán ignoradas" #: FProjectVersion.class:36 msgid "Local" msgstr "Local" #: FProjectVersion.class:37 msgid "Remote" msgstr "Remoto" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Ingrese un nombre de usuario." #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "Ingrese los cambios." #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "No se ha podido hacer commit del proyecto." #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "Incapaz de actualizar el proyecto desde el repositorio." #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "El proyecto ha sido actualizado correctamente desde el repositorio." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Control de versiones del proyecto" #: FProjectVersion.form:65 msgid "Update" msgstr "Actualizar" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Autenticación" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Refrescar información" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "Cambios" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Algunos archivos no están versionados y deben ser añadidos manualmente al repositorio." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Descripción previa" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Caracteres no permitidos en el nombre del control." #: FProperty.class:383 msgid "This name is already in use." msgstr "Este nombre ya está en uso." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Caracteres no permitidos en el grupo del control." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valor incorrecto de la propiedad." #: FProperty.class:631 msgid "The name of the control." msgstr "El nombre del control." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "El grupo de eventos al que el control pertenece." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Si las dimensiones del formulario y los controles deben seguir el tamaño de la fuente por defecto." #: FProperty.class:661 msgid "If the control is public." msgstr "Si el control es público." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Si la propiedad Text debe ser traducida." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Esta propiedad es virtual: está sólo implementa en el IDE, y no tiene existencia en tiempo de ejecución." #: FProperty.class:814 msgid "None" msgstr "Ninguno" #: FProperty.form:51 msgid "Lock property" msgstr "Bloquear propiedad" #: FProperty.form:58 msgid "Sort properties" msgstr "Ordenar propiedades" #: FProxy.form:37 msgid "Port" msgstr "Puerto" #: FProxy.form:76 msgid "Default proxy" msgstr "Proxy por defecto" #: FProxy.form:76 msgid "HTTP proxy" msgstr "Proxy HTTP" #: FProxy.form:76 msgid "No proxy" msgstr "Sin Proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "Proxy SOCKS5" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "No se puede publicar software cuya versión sea \"0.0\"." # gb-ignore #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "El proyecto ha sido publicado correctamente." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Imposible publicar el proyecto." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "No se permiten espacios." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Número de versión incorrecto." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "¿Realmente quieres eliminar todas las etiquetas?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Selecciona un fichero de captura de pantalla" #: FPublish.class:329 msgid "Screenshot files" msgstr "Ficheros de captura de pantalla" #: FPublish.form:67 msgid "Software description" msgstr "Descripción del software" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "Sitio web" #: FPublish.form:113 msgid "Create menu entry" msgstr "Crear entrada de menú" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Etiquetas" #: FPublish.form:164 msgid "Sort" msgstr "Ordenar" #: FPublish.form:176 msgid "Screenshot" msgstr "Captura de pantalla" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Mantener la captura almacenada en el servidor" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Eliminar captura de pantalla almacenada en el servidor" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Cargar una nueva captura desde el portapapeles" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Cargar nueva captura desde fichero siguiente:" #: FPublish.form:222 msgid "Dependencies" msgstr "Dependencias" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Requiere versión de Gambas" #: FPublish.form:295 msgid "Publish as" msgstr "Publicar como" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configurar borde" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Esquina" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Configurar sombra" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Sombra" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configurar pincel" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "Seleccione una imagen dentro del proyecto" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Valor incorrecto." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Seleccione una dimensión" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configurar el relleno" #: FSave.form:15 msgid "Save modified files" msgstr "Guardar archivos modificados" #: FSave.form:43 msgid "Save All" msgstr "Guardar Todo" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "Los siguientes archivos han sido modificados. ¿Quiere guardarlos?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "No es posible guardar un proyecto dentro de su propio directorio." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Incapaz de guardar el proyecto." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Nuevo directorio padre del proyecto" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nuevo nombre del proyecto" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Capturar pantalla" #: FSearch.class:523 msgid "Search string replaced once." msgstr "La cadena se reemplazó una vez." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "La cadena buscada se reemplazó &1 veces." #: FSearch.class:630 msgid "One match" msgstr "Una coincidencia" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 coincidencias" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "¿Realmente quiere reemplazar cada cadena?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Buscar & reemplazar" #: FSearch.form:105 msgid "Case sensitive" msgstr "Sensible a mayúsculas y minúsculas" #: FSearch.form:110 msgid "Words only" msgstr "Sólo palabras" #: FSearch.form:115 msgid "Regular expression" msgstr "Expresión regular" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignorar cadenas" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignorar comentarios" #: FSearch.form:140 msgid "Search in" msgstr "Buscar en" #: FSearch.form:147 msgid "Current function" msgstr "" #: FSearch.form:153 msgid "Current file" msgstr "Archivo actual" #: FSearch.form:160 msgid "Source files" msgstr "Archivos fuente" #: FSearch.form:166 msgid "Data files" msgstr "Archivos de información" #: FSearch.form:197 msgid "Browse" msgstr "Navegar" #: FSearch.form:209 msgid "Replace all" msgstr "Reemplazar todo" #: FSearch.form:220 msgid "Highlight search" msgstr "Destacar búsqueda" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Seleccionar un archivo extra" #: FSelectIcon.class:40 msgid "Image files" msgstr "Archivos de imagenes" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "Archivos de imagen SVG" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Seleccione una imagen" #: FSelectIcon.form:45 msgid "Stock" msgstr "Stock" #: FSelectIcon.form:73 msgid "Size preview" msgstr "" #: FSelectLibrary.class:64 msgid "unknown" msgstr "desconocido" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Seleccione una biblioteca" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "No se ha encontrado ninguna biblioteca en su sistema." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Ingrese una cadena de disparo." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Esta cadena de activación ya está en uso." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Editar fragmento de código" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nuevo fragmento de código" #: FSnippet.form:26 msgid "Trigger string" msgstr "Cadena de disparo" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Juegos" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Desarrollo" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Educación" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Gráficos" # gb-ignore #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "Vídeo" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Oficina" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Accesorios" # gb-ignore #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Extensiones" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Mi software" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Otro software de" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Todo el software" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "No se encuentra el software." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "Petición cancelada." #: FSoftwareFarm.class:376 msgid "Cancel my vote" msgstr "Cancelar mi voto" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "Actualizar" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "Publicado &1 (en &2)" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "¿Realmente quieres descargar &1?" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "Imposible descargar &1:" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "&1 se ha descargado correctamente." #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "¿Realmente quieres actualizar a &1?" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "Imposible actualizar a &1:" #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "¿Realmente quieres desinstalar &1?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "No se puede desinstalar &1:" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr " &1 se desinstaló correctamente." #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "¿Realmente quieres instalar &1?" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "Imposible instalar &1:" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "&1 se ha instalado correctamente." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "Imposible modificar tu voto." #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "¿Realmente quieres eliminar &1 de la granja?" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "Imposible eliminar &1:" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Granja de software Gambas" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "Mostrar" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Instalado" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Más descargados" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Más recientes" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Mostrar filtros" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Mostrar versiones antiguas" #: FSoftwareFarm.form:397 msgid "Download" msgstr "Descargar" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "Descargar e instalar" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "Votar" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "Copie esta información en todos sus reportes de errores." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Seleccione una tabla" #: FTestSuite.class:90 msgid "Unable to load test suites." msgstr "" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 msgid "This test suite already exists." msgstr "" #: FTestSuite.class:394 msgid "Unable to save test suites." msgstr "" #: FTestSuite.class:404 msgid "Do you really want to remove this test suite?" msgstr "" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 msgid "Delete test suite" msgstr "" #: FTestSuite.form:117 msgid "Select all tests" msgstr "" #: FTestSuite.form:124 msgid "Unselect all tests" msgstr "" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 msgid "Edit '&1' property" msgstr "Editar la propiedad '&1'" #: FText.form:29 msgid "Use a fixed font" msgstr "Usar una fuente de tamaño fijo" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "Salida de consola # &1" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "" #: FTextEditor.class:1938 msgid "Example" msgstr "" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "Ordenar ascendente" #: FTextEditor.form:192 msgid "Sort descent" msgstr "Ordenar descendente" #: FTextEditor.form:727 msgid "Toggle preview" msgstr "" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "Consejo del día #&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "¡Incapaz de leer el consejo del día!" #: FTips.form:70 msgid "Show tips on startup" msgstr "Mostrar consejos al inicio" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 msgid "Container" msgstr "" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 msgid "Network" msgstr "" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 msgid "Current project" msgstr "" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "El proyecto está vacío. No hay nada que traducir." #: FTranslate.class:74 msgid "Language" msgstr "Languaje" #: FTranslate.class:77 msgid "Not translated" msgstr "No traducido" #: FTranslate.class:169 msgid "Translation files" msgstr "Archivos de traducción" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "No es posible cargar el archivo de traducción del idioma '&1'" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "No es posible guardar la traducción." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "¿Realmente quiere borrar esta traducción?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "¿Realmente quiere recargar esta traducción?" #: FTranslate.class:802 msgid "Export a translation" msgstr "Exportar una traducción" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "Seleccione el archivo de traducción a importar." #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "No fue seleccionada ninguna traducción." #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "Una traducción fue seleccionada." #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "Se han importado &1 traducciones." #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "No es posible importar el archivo de traducción." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "Todo parece estar correcto." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "Los símbolos de las cadenas traducidas no concuerdan con los de las cadenas sin traducir." #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "&1 cadenas. ¡Todo está traducido!" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 cadenas. Una no está traducida. &3% listo." #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 cadenas. &2 no están traducidas. &3% listo." #: FTranslate.class:1745 msgid "Automatic translation has failed." msgstr "La traducción automática ha fallado." #: FTranslate.class:1757 msgid "Do you want to fill the translation automatically?" msgstr "¿Quieres completar la traducción automáticamente?" #: FTranslate.form:77 msgid "Project translation" msgstr "Traducción del proyecto" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Traducción automática" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Cadenas no traducidas" #: FTranslate.form:122 msgid "Translated strings" msgstr "Cadenas traducidas" #: FTranslate.form:126 msgid "All strings" msgstr "Todas las cadenas" #: FTranslate.form:197 msgid "Add a new translation" msgstr "Agregar una nueva traducción" #: FTranslate.form:232 msgid "Save translation" msgstr "Guardar traducción" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verificar la traducción" #: FTranslate.form:242 msgid "Verify" msgstr "Verificar" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Encuentra la siguiente cadena traducida" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Buscar cadena traducida anterior" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Encontrar la cadena sin traducción previa" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Encontrar la siguiente cadena sin traducir" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Limpiar esta traducción" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "La cadena no debe ser traducida" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copiar cadena no traducida" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importar todas las traducciones recursivamente" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Reemplazar traducciones existentes" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importar un archivo de traducción" #: FVersionControl.form:81 msgid "Hide translation changes" msgstr "" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "No hay nada que cometer." #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "empujar" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Seleccionar fuente" #: FWelcome.class:69 msgid "New project..." msgstr "Nuevo proyecto..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Proyectos recientes" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "Software instalado" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Bienvenido a Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anónimo" #: FarmRequest.class:125 msgid "No answer." msgstr "Sin respuesta." #: FarmRequest.class:167 msgid "Register user" msgstr "Registrar usuario" #: FarmRequest.class:242 msgid "Publish project" msgstr "Publicar proyecto" #: FarmRequest.class:363 msgid "Download software" msgstr "Descargar software" #: FarmRequest.class:389 msgid "Delete software" msgstr "Eliminar software" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "Esta página no existe." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Africano (Sudáfrica)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arábico (Egipto)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arábico (Tunicia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbayano (Azerbayán)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Búlgaro (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalán (Cataluña, España)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Galeico (Reino Unido)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Checo (República Checa)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danés (Dinamarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Alemán (Alemania)" #: Language.module:35 msgid "German (Belgium)" msgstr "Alemán (Bélgica)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Griego (Grecia)" #: Language.module:41 msgid "English (common)" msgstr "Inglés (común)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inglés (Reino Unido)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inglés (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Inglés (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Inglés (Canadá)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (¡En todo el mundo!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Español (común)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Español (España)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Español (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonio (Estonia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basco (País Basco)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Irán)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finlandés (Finlandia)" #: Language.module:68 msgid "French (France)" msgstr "Francés (Francia)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francés (Bélgica)" #: Language.module:70 msgid "French (Canada)" msgstr "Francés (Canadá)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francés (Suiza)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Gallego (España)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebreo (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (India)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Húngaro (Hungría)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croata (Croacia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesio (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Galéico (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Islandés (Islandia)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiano (Italia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonés (Japón)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Jemer (Camboya)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Koreano (Korea)" #: Language.module:110 msgid "Latin" msgstr "Latín" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Lituano (Lituania)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malabar (India)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedonio (Republica de Macedonia)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Flamenco (Holanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Flamenco (Bélgica)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Noruego (noruega)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (India)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polaco (Polonia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugués (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugués (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valenciano (Comunidad Valenciana, España)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Rumano (Rumania)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ruso (Rusia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Esloveno (Eslovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanés (Albania)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbio (Serbia & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Sueco (Suecia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turco (Turquía)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ucrania (Ucraniano)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamita (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valón (Bélgica)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Chino simplificado (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Chino tradicional (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Desconocido" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "Incapaz de comprimir archivo." #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Incapaz de obtener la clave." #: MConnection.module:91 msgid "Unable to save password." msgstr "Incapaz de guardar la clave." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "No es posible crear la table &1." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "No es posible crear la tabla de metadatos." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 no puede ser static" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 declaración no coincide" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 está declarado pero no es una función" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 no es una estructura" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 no está declarado" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 debe ser static" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: no en el archivo" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: error de sintaxis" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: error de sintaxis en el archivo form" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: muchos contenedores anidados" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' ya fue declarada" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' está mal sobrescrita en la clase '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' no es una propiedad" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' no es static" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' es sólo de lectura" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' es static" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' es sólo de escritura" # gb-ignore #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Un módulo no puede disparar eventos" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Una implementación de propiedad no puede ser pública" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Una propiedad debe ser pública" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Acceso prohibido" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "El alias debe ser una cadena" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Expresión ambigua. Use paréntesis" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "El argumento no puede ser pasado por referencia" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Matrices de estructuras no están soportados" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "Error de aserción" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Archivo incorrecto: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Argumento incorrecto" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Caracter constante en cadena incorrecto" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Tipo de constante incorrecto" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Manejador de eventos en &1.&2(): &3 incorrecto" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Expresión incorrecta: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Versión de archivo de formulario incorrecto" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Formato incorrecto en la sección:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Formato de cadena incorrecto" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Incorrecto número de dimensiones" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Archivo project incorrecto: línea &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Expresión regular incorrecta: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Conversión a cadena incorrecta" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Rango de subscript incorrecto" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Uso incorrecto de la clase virtual" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Cadena de versión incorrecta" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "No es posible cambiar el directorio actual de '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "No es posible crear el archivo .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "No es posible crear el archivo action: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "No es posible crear la llamada: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "No es posible crear la información de la clase: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "No es posible crear el archivo: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "No es posible crear el archivo temporal: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "No es posible encontrar la librería dinámica '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "No es posible encontrar el símbolo '&2' en la librería dinámica '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "No puede heredarse a si misma" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "No es posible heredar doble" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "No es posible instanciar tipos nativos" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "No es posible cargar clase '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "No es posible cargar el componente '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "No es posible cargar el archivo fuente: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "No es posible crear el ejecutable: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "No es posible mezclar NEW y una matriz incrustada" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "No es posible mezclar NEW y una estructura incrustada" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "No es posible abrir el archivo'&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "No es posible abrir el archivo: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "No es posible levantar eventos en funciones estáticas" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "No es posible leer el archivo: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "No es posible registrar la clase '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "No es posible eliminar el archivo '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "No es posible renombrar el archivo '&1' a '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "No es posible ejecutar el proceso hijo: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "No es posible establecer el dueño del archivo: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "No se puede usar &1 dos veces" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "No se puede usar &1 con &2" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "No es posible usar el operador NEW aquí" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "La clase '&1' no es creable" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Se esperaba operador de comparación" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "El nombre del componente debe ser una cadena" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Componente no encontrado: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Se esperaba una constante de tipo cadena " #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Contenido ya declarado" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Caso por defecto ya definido" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "El caso por defecto debe ser el último" #: MErrorMessage.module:85 msgid "Device is full" msgstr "El dispositivo está lleno" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "El directorio no esta vació" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "División por cero" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Símbolos dinámicos no se pueden utilizar en una función estática" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Matrices inscrustados están prohibidas aquí" #: MErrorMessage.module:90 msgid "End of file" msgstr "Final de archivo" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Operador de igualdad o desigualdad esperado" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Expresión muy compleja" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Expresión muy compleja. Demasiados operandos" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "El nombre de la librería externa debe ser una cadena" #: MErrorMessage.module:95 msgid "File already exists" msgstr "El archivo ya existe" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "El archivo es un directorio" #: MErrorMessage.module:97 msgid "File is locked" msgstr "El archivo está bloqueado" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "El nombre de archivo es muy largo" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "El archivo o directorio no existe" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "GOSUB no permitido" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "GOTO no permitido" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Objeto libre referenciado" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Instrucción ilegal" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Error interno del compilador" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Asignación inválida" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Fecha inválida" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Objeto inválido" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Ruta inválida" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() requiere un argumento de función" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "El salto es muy lejor" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Etiqueta '&1' no declarada" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "El nombre de la librería debe ser una cadena" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Variable Loop ya está en uso" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "La variable de bucle no puede ser un argumento" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "La variable de bucle no puede ser global" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "No es posible usar ME en una función estática" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Error matemático" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Falta #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Falta ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Falta '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Falta operador" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Falta la llave derecha" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "Matriz multidimensional" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW no puede tener argumentos pasados por referencia" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "No hay método de instanciación" #: MErrorMessage.module:126 msgid "No parent class" msgstr "No hay clase padre" #: MErrorMessage.module:127 msgid "No return value" msgstr "No retorna valor" #: MErrorMessage.module:128 msgid "No startup method" msgstr "No hay método de inicio" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Cadena no terminada" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "No es un directorio: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "No es una función" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "No es un procedimiento" #: MErrorMessage.module:133 msgid "Not an array" msgstr "No es una matriz" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "No es una enumeración" #: MErrorMessage.module:135 msgid "Not an object" msgstr "No es un objeto" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "No hay suficientes para NEW()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "No hay suficientes argumentos" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "No hay suficientes argumentos para &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "No ha sido implementado" #: MErrorMessage.module:140 msgid "Not supported" msgstr "No soportado" #: MErrorMessage.module:141 msgid "Null object" msgstr "Objeto Nulo" #: MErrorMessage.module:142 msgid "Number" msgstr "Número" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Número o fecha esperada" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Número o fecha" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Número, fecha o cadena" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Número, cadena u objeto" #: MErrorMessage.module:147 msgid "Object" msgstr "Objeto" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Fuera de los límites" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Fuera de memoria" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Fuera de rango" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Desbordamiento" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Invalidar una clase ya heredada no esta permitido" #: MErrorMessage.module:153 msgid "Read error" msgstr "Error de lectura" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Tipo de valor retorno no especificado en la declaración de la función" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Instruccion STOP encontrada" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER no puede ser usado solo" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Error de serialización" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Desbordamiento de la pila" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Tipo estándar" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "El flujo está cerrado" #: MErrorMessage.module:162 msgid "String expected" msgstr "Se esperaba una cadena" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Las estructuras deben ser públicas" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Argumentos de subrutina no pueden ser pasados por referencia" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Error de sintaxis" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Error de sintaxis en la declaración de la función" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Error de sintaxis en el nombre del evento" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Error de sintaxis en el modo de abrir archivos" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Error de sintaxis en el tipo de retorno" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Error de sintaxis. &1 esperado" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Error de sintaxis. '...' debe ser el último argumento" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Error de sintaxis. CASE o DEFAULT esperado después de SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Error de sintaxis. CLASS necesita un identificador" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Error de sintaxis. No se puede usar ésta sintaxis en asignaciones" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Error de sintaxis. INHERITS necesita un nombre de clase" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Error de sintaxis. Identificador esperado" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Error de sintaxis. Identificador inválido en el nombre de la función" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Error de sintaxis. Parámetro opcional inválido" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Error de sintaxis. Tipo de retorno inválido" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Error de sintaxis. Descripción de tipo de &1 inválido" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Error de sintaxis. Descripción de tipo inválida para el campo &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Error de sintaxis. Argumentos innecesarios" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Error de sintaxis. Sintaxis de Punto usada fuera de WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Error de sintaxis. STRUCT necesita un identificador" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Error de sintaxis. El argumento &1 no es un identificador válido" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Error de sintaxis. El campo &1 no es un identificador válido" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Error de sintaxis. VarPtr() toma sólo un identificador" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Error de sistema #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "El '!' operador debe estar seguido de un identificador" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "El '.' operador debe estar seguido de un identificador" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "Esta función debe tomar un número fijo de argumentos" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "El método especial &1 no puede ser una función" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "El método especial &1 no puede ser implementado" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "El método especial &1 no puede ser estático" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "El método especial &1 debe ser una función" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "El método especial &1 debe ser público" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "El método especial &1 debe ser estático" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "El método especial &1 debe retornar un boolean" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "El método especial &1 debe tomar sólo un número variable de argumentos" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "El método especial &1 debe tomar por lo menos un argumento" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "El método especial &1 no toma argumentos" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "El método especial debe retornar un entero" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "El método especial debe tomar exactamente un argumento" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "El método especial debe tomar exactamente dos argumentos" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "La firma del método especual es incorrecta" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Esta expresión no puede ser una sentencia" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Esta expresión no puede ser pasada por referencia" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Demasiados argumentos" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Demasiados argumentos para &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Demasiadas declaraciones de matrices" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Demasiadas constantes" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Demasiadas clases diferentes usadas" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Demasiadas dimensiones" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Demasiadas variables dinamicas" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Demasiados eventos" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Demasiadas expresiones en CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Demasiadas funciones externas" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Demasiadas funciones" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Demasiados imbricados # If ... # endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Demasiadas etiquetas" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Demasiadas variables locales" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Demasiadas estructuras de control anidadas." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Demasiados sinónimos para la Propiedad" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Demasiadas cadenas nuevas simultáneas" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Demasiadas variables estáticas" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Demasiados símbolos desconocidos" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Barra diagonal invertida" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "No coinciden los tipos" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "No coinciden los tipos: requerido &1, obtenido &2 en cambio" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Incapaz de crear closure" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Incapaz de obtener la posición del archivo" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Incapaz de cargar el archivo de la clase" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Incapaz de preparar la descripción de la función" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "&1 Inesperado" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Fin de archivo inesperado" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Cadena inesperada" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Error desconocido" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Extensión de archivo desconocido" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Identificador desconocido: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Operado desconocido" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Simbolo '&2' desconocido en la clase '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Usuario o grupo desconocido" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Tipo de datos no soportado" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Conversión de cadenas no compatibles" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "LOCK inútil" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "El argumento para VarPtr() debe ser dinamico, estático o una variable local" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Identificador de void" #: MErrorMessage.module:253 msgid "Void key" msgstr "Llave vacía" #: MErrorMessage.module:254 msgid "Write error" msgstr "Error de escritura" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "No es posible encontrar el componente" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "no es posible encontrar la librería " #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "nombre de clase oculto por declaración global: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "nombre de clase oculto por declaración local: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "constante ocultada por declaración local: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "función externa ocultada por declaración local: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "función ocultada por declaración local: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "variable global ocultada por declaración local: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "entero y booleano mezclado con el operador `&1 '" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "variable global no inicializada: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "variable no inicializada: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "error desconocido" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "argumento no utilizado: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "función externa no utilizada: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "función no utilizada: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "variable global no utilizada: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "variable no utilizada: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "no es posible abrir la pseudo-terminal esclava:" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "no es posible inicializar la pseudo-terminal:" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "no es posible conectar la entrada estándar:" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "no es posible conectar la salida estándar ni la salida estándar de error:" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "No es posible correr el ejecutable:" #: MHelp.module:316 msgid "No help found." msgstr "No se encontró ayuda." #: MMime.module:17 msgid "Plain text" msgstr "Texto plano" #: MMime.module:18 msgid "HTML text" msgstr "Texto HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Datos de formularios Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Datos de menu Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Ruta de archivo del proyecto Gambas" #: MMime.module:22 msgid "URI list" msgstr "Lista URI" #: MMime.module:33 msgid "Unknown format" msgstr "Formato desconocido" #: MTheme.module:6 msgid "Alternate background" msgstr "Fondo alternativo" #: MTheme.module:6 msgid "Characters" msgstr "Caracteres" #: MTheme.module:6 msgid "Comments" msgstr "Comentarios" #: MTheme.module:6 msgid "Current line" msgstr "Línea actual" #: MTheme.module:6 msgid "Data types" msgstr "Tipos de datos" #: MTheme.module:6 msgid "Editing line" msgstr "Editando línea" #: MTheme.module:6 msgid "Errors" msgstr "Errores" #: MTheme.module:6 msgid "Highlighting" msgstr "Resaltado" #: MTheme.module:6 msgid "Keywords" msgstr "Palabras clave" #: MTheme.module:6 msgid "Labels" msgstr "Etiquetas" #: MTheme.module:6 msgid "Normal text" msgstr "Texto normal" #: MTheme.module:6 msgid "Numbers" msgstr "Números" #: MTheme.module:6 msgid "Operators" msgstr "Operadores" #: MTheme.module:6 msgid "Preprocessor" msgstr "Prepocesador" #: MTheme.module:6 msgid "Strings" msgstr "Cadenas" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutinas" #: MTheme.module:6 msgid "Symbols" msgstr "Símbolos" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1' es requerido." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1' y '&2' son requeridos." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "Guardando archivo CHANGELOG." #: Package.module:743 msgid "Making &1 support package..." msgstr "Creando el paquete de soporte &1..." #: Package.module:798 msgid "Creating package for &1." msgstr "Creando paquete para &1." #: Package.module:830 msgid "The package build has failed." msgstr "La creación del paquete ha fallado." #: Package.module:903 msgid "Making build directory." msgstr "Creando el directorio de construcción." #: Package.module:962 msgid "Creating desktop file..." msgstr "Creando archivo de escritorio..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "Se están debianizando los fuentes." #: Package.module:1175 msgid "Creating package..." msgstr "Creando paquete..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' ha fallado." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "Inicializando directorio ~/RPM." #: Package.module:1483 msgid "Creating source package." msgstr "Creando paquete fuente." #: Package.module:1507 msgid "Creating .spec file." msgstr "Creando archivo .spec." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' ha devuelto el siguiente código de error:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' ha devuelto el siguiente código de error:" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "El directorio no es un proyecto Gambas" #: Patch.class:52 Project.module:4816 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "El parche no se aplicó.\n" #: Project.module:238 msgid "Automation" msgstr "Automatización" #: Project.module:239 msgid "Basic" msgstr "Básico" #: Project.module:241 msgid "Drawing" msgstr "Dibujo" #: Project.module:244 msgid "Miscellaneous" msgstr "Varios" #: Project.module:245 msgid "Networking" msgstr "Redes" # gb-ignore #: Project.module:246 msgid "OpenGL" msgstr "" #: Project.module:248 msgid "Sound" msgstr "Sonido" #: Project.module:250 msgid "Controls" msgstr "Controles" # gb-ignore #: Project.module:251 msgid "Multimedia" msgstr "" # gb-ignore #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "Archivo no encontrado!" #: Project.module:545 msgid "This project does not exist." msgstr "Este proyecto no existe." #: Project.module:557 msgid "Unable to find Gambas IDE executable in directory:\n\n&1" msgstr "Incapaz de encontrar el ejecutable de la IDE de Gambas en el directorio:\n\n&1" #: Project.module:576 msgid "This is not a Gambas project." msgstr "Este no es un proyecto Gambas." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Este es un proyecto Gambas 1.0. Use Gambas 2 para convertirlo." #: Project.module:582 msgid "Convert" msgstr "Convertir" #: Project.module:582 msgid "This is a Gambas 2.0 project.\n\nDo you want to convert it?" msgstr "Este es un proyecto Gambas 2.0\n\n¿Desea convertirlo?" #: Project.module:600 msgid "Do not open" msgstr "No abrir" #: Project.module:600 msgid "Open after all" msgstr "Abrir de todos modos" #: Project.module:600 msgid "This project seems to be already opened.\n\nOpening the same project twice can lead to data loss." msgstr "Este proyecto parece estar ya abierto.\n\nAbrir el proyecto dos veces puede hacer que se pierdan datos." #: Project.module:606 msgid "It cannot be converted." msgstr "No puede ser convertido." #: Project.module:606 msgid "This project is read-only." msgstr "Este proyecto es de sólo lectura." #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 msgid "This project includes compressed files." msgstr "" #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "Copiando proyecto dentro de un directorio temporal..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "Incapaz de crear el directorio temporal" #: Project.module:668 msgid "Converting project structure..." msgstr "Convirtiendo estructura del proyecto..." #: Project.module:698 msgid "Applying conversion..." msgstr "Aplicando conversión..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "Incapaz de aplicar conversión" #: Project.module:749 msgid "Cannot open project file :" msgstr "No se puede abrir el archivo del proyecto:" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "Faltan algunas las librerías utilizadas por el proyecto." #: Project.module:937 msgid "Cannot reload file." msgstr "No se puede recargar el archivo." # gb-ignore #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" # gb-ignore #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "No es posible abrir un archivo binario." #: Project.module:2171 msgid "Cannot open file." msgstr "No es posible abrir el archivo." # gb-ignore #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "en la definición del formulario" #: Project.module:2571 msgid "Some project source files are in conflict.\nPlease solve them if you want to compile the project." msgstr "Algunos archivos fuente del proyecto están en conflicto.\nSolucionelos si quiere compilar el proyecto." #: Project.module:2575 msgid "Compiling project" msgstr "Compilando proyecto" #: Project.module:2600 msgid "

The compiler has crashed!

\nPlease report it to the Gambas bugtracker at:\n\nhttps://gambaswiki.org/bugtracker\n\nDo not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "El archivo ya existe." #: Project.module:2876 msgid "Directory already exists." msgstr "El directirio ya existe." #: Project.module:2888 msgid "Cannot link template file." msgstr "No es posible vincular el archivo de plantilla." #: Project.module:2894 msgid "Cannot copy template file." msgstr "No es posible copiar el archivo de plantilla." #: Project.module:2948 msgid "Forbidden directory name." msgstr "" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "El contenido del archivo VERSION es incorrecto." #: Project.module:3136 msgid "Cannot install library in &1." msgstr "No se puede instalar la biblioteca en &1." #: Project.module:3181 msgid "Making executable..." msgstr "Creando ejecutable..." #: Project.module:3191 msgid "Do you really want to increment the project version and make the executable again?" msgstr "" #: Project.module:3191 msgid "No change has been detected." msgstr "" #: Project.module:3292 msgid "Cannot make executable." msgstr "No es posible crear ejecutable." #: Project.module:3774 msgid "Some components are missing: &1" msgstr "Faltan algunos componentes: &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "No es posible escribir el archivo de proyecto." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "Incapaz de crear un icono en el escritorio." #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "El directorio se borrará en el próximo commit." #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "¡Debe definir una clase o formulario de inicio!" #: Project.module:4351 msgid "Please type a name." msgstr "Ingrese un nombre." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "Este nombre contiene un carácter prohibido:" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "Los nombres no pueden iniciar con un punto." #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "Este nombre ya está en uso. Elija otro." #: Project.module:4399 msgid "Space" msgstr "" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "El nombre de una clase debe empezar con una letra o un signo de subrayado, seguido de cualquier letra o dígito." #: Project.module:4444 msgid "Destination already exists." msgstr "El destino ya existe." #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "Incapaz de renombrar '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "Ingrese un nombre para el proyecto." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "El nombre de proyecto no puede comenzar con un punto." #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Caracteres no ASCII no están permitidos en el nombre del proyecto." #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "Los siguientes caracteres están prohibidos en un nombre de proyecto:" #: Project.module:4733 msgid "This project already exists." msgstr "Este proyecto ya existe." #: Project.module:4736 msgid "The project directory already exists." msgstr "El directorio del proyecto ya existe." #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "La carpeta de proyecto no puede ser creada porque un archivo con el mismo nombre ya existe." #: Project.module:4822 msgid "Unable to create source archive." msgstr "Incapaz de crear archivo fuente." #: Project.module:5138 msgid "Cannot copy file &1." msgstr "No es posible copiar el archivo &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "No es posible crear el enlace &1." #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "No es posible mover un directorio dentro de sí mismo." #: Project.module:5265 msgid "Cannot move file &1." msgstr "No es posible mover el archivo &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "Los siguientes archivos no pueden ser removidos:" #: Project.module:5960 msgid "Project cleanup..." msgstr "Limpieza del proyecto..." #: Project.module:5966 msgid "Project files conversion..." msgstr "Conversión de archivos del proyecto..." #: Project.module:5996 msgid "Unable to convert &1" msgstr "Incapaz de convertir &1" #: Project.module:6276 msgid "Unable to update forms." msgstr "No se puede actualizar los formularios." #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "El programa &1 no está instalado en el sistema" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "Los siguientes programas no están instalados en el sistema: &1." #: Project.module:6459 msgid "Unable to read component description file." msgstr "Incapaz de leer el fichero de descripción de componente." #: Project.module:6520 msgid "Cannot write component description file." msgstr "No es posible escribir el archivo de descripción del componente." #: Project.module:6581 msgid "Project templates" msgstr "Plantillas de proyecto" #: Project.module:6627 msgid "Unable to run terminal." msgstr "No se puede ejecutar el terminal." #: Save.module:57 msgid "Cannot save file !" msgstr "¡No es posible guardar el archivo!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Publicado &1" # gb-ignore #: Util.module:6 msgid "&1 B" msgstr "" # gb-ignore #: Util.module:8 msgid "&1 KiB" msgstr "" # gb-ignore #: Util.module:10 msgid "&1 MiB" msgstr "" # gb-ignore #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 msgid "Incorrect format" msgstr "" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "Comando de tiempo de espera." #: VersionControl.module:170 msgid "Please check your network connection." msgstr "Por favor verifique su conexión de red." #: VersionControl.module:553 msgid "Do you really want to put this project under version control with &1?" msgstr "¿Realmente quieres poner este proyecto bajo control de versiones con &1?" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "El proyecto no se pudo poner bajo control de versiones." #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "No se puede cambiar a la rama '&1'." #: VersionControl.module:674 msgid "With &1" msgstr "Con &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Existen &1 clases y &2 símbolos en todos los componentes de Gambas." #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "Esta página no existe en este lenguaje." #: WikiMarkdown.class:142 msgid "Since" msgstr "Desde" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Este componente no existe." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Esta clase no existe" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Este símbolo no existe." gambas-3.16.3/app/src/gambas3/.lang/es_ES.po000066400000000000000000005640441411575327000203010ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.15.90\n" "PO-Revision-Date: 2021-03-28 16:19 UTC\n" "Last-Translator: Laurent Carlier \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" # gb-ignore #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Definir marcador" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Limpiar marcadores" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Marcador anterior" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Marcador siguiente" #: CClassInfo.class:615 msgid "Static properties" msgstr "Propiedades estáticas" #: CClassInfo.class:616 msgid "Static variables" msgstr "Variables estáticas" #: CClassInfo.class:617 msgid "Static methods" msgstr "Métodos estáticos" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "Constantes" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Propiedades" # gb-ignore #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "Métodos" #: CClassInfo.class:638 msgid "Events" msgstr "Eventos" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "Esta clase reimplementa &1" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "Esta clase hereda de &1" #: CClassInfo.class:668 msgid "in &1" msgstr "en &1" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Esta clase puede ser utilizada como un objeto creando una instancia oculta a demanda." #: CClassInfo.class:681 msgid "This class is &1." msgstr "Esta clase es &1." #: CClassInfo.class:681 msgid "creatable" msgstr "instanciable" #: CClassInfo.class:686 msgid "This class is static." msgstr "Esta clase es estática." #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "Esta clase no es instanciable." #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "Esta clase puede ser utilizada como &1." #: CClassInfo.class:694 msgid "function" msgstr "función" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "Esta clase actúa como una matriz &1/&2." #: CClassInfo.class:699 msgid "read" msgstr "Lectura" #: CClassInfo.class:699 msgid "write" msgstr "Escritura" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "Esta clase actúa como una matriz &1." #: CClassInfo.class:701 msgid "write-only" msgstr "solo escritura" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "Sólo lectura" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "Esta clase es &1 con la palabra clave FOR EACH." #: CClassInfo.class:709 msgid "enumerable" msgstr "enumerable" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "Esta clase reimplementa" #: CClassInfo.class:869 msgid "This class inherits" msgstr "Esta clase proviene de" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "Esta clase es virtual" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Esta clase puede ser utilizada como un objeto creando una instancia oculta a demanda." #: CClassInfo.class:911 msgid "static function" msgstr "función estática" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "Esta clase actúa como una matriz estática &1/&2." #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "Esta clase actúa como una matriz estática &1." #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "Esta clase es &1 con la palabra clave &2." #: CClassInfo.class:932 msgid "statically enumerable" msgstr "estáticamente enumerable" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "Cargando información en componente &1..." #: CComponent.class:151 msgid "Loading information on project..." msgstr "" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Clases" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Clase" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descripción" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "Este componente no es estable todavía." #: CComponent.class:600 msgid "This component is deprecated." msgstr "Este componente es obsoleto." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Autores" #: CComponent.class:621 msgid "Implements" msgstr "Implementa" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Requiere" #: CComponent.class:648 msgid "Excludes" msgstr "Excluir" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "Clases nativas internas" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "Analizador de argumentos" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Librería gráfica Cairo" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "Dibujo de gráficos" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "Administración de polígonos basado en la librería Clipper" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "Gestión de números complejos" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "Compresión & descompresión" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "Driver de compresión bzlib2" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "Driver de compresión zlib" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "Driver de compresión zstd" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "Encriptado MD5/DES/SHA" #: CDocumentation.class:62 msgid "More data containers" msgstr "Más contenedores de datos" #: CDocumentation.class:63 msgid "Database access" msgstr "Acceso a bases de datos" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "Controles de bases de datos" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "Controlador de base de datos MySQL" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "Controlador de base de datos ODBC" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "Controlador de base de datos PostgreSQL" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "Controlador de base de datos SQLite 2" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "Controlador de base de datos SQLite 3" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "Depurador de aplicaciones" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "Compomente de administración de escritorio" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "Soporte para la librería X-Windows" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "Componente de soporte Gnome keyring para administración de escritorio" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "Interfaz D-Bus" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "Evaluador de expresiones" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "Rutinas de resaltado de sintaxis" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "Más controles para componentes gráficos" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "Diálogos estándar mejorados" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "Editor de texto con resaltado de sintaxis" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "Interfaz multidocumento" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "Tema de iconos por defecto" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "Emulador de terminal" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "Librería GNU de Múltiple Precisión Aritmética" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "Librería Científica GNU" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "Conjunto de herramientas GTK+2" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL con el kit de herramientas GTK+" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "Conjunto de herramientas GTK+3" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "Intercambiador de componente QT/GTK+" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "Componente OpenGL con intercambiador de QT/GTK+" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "Intercambiador de componente QT4/QT5" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "Componente de conmutador OpenGL QT4 / QT5" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "Intercambiador de componente Webkit QT4/QT5" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "Componente de gestión del icono de la bandeja del sistema" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "Servidor empotrado HTTP" #: CDocumentation.class:99 msgid "Image management" msgstr "Manejo de imágenes" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "Componente de filtrado de imagen" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "Rutinas de imagen de biblioteca Imlib2" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "Cargado y guardado de imágenes" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "Monitoreo de eventos del sistema de archivos" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "Herramientas XML basadas en libxml" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "Sistema flexible de ingreso" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "Visor de mapas en linea" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "Marcador de sintaxis Gambas" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "Componente multimedia GStreamer" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "Controles multimedia" #: CDocumentation.class:110 msgid "Memcached client" msgstr "Cliente memcached" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "Gestion del formato MIME basado en la libreria GMime" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "Rutinas específicas de MySQL" #: CDocumentation.class:113 msgid "NCurses library" msgstr "Libreria de NCurses" #: CDocumentation.class:114 msgid "Network programming" msgstr "Programación de red" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "Gestión de protocolos de red de alto nivel" #: CDocumentation.class:116 msgid "POP3 client" msgstr "Cliente POP3" #: CDocumentation.class:117 msgid "SMTP client" msgstr "Cliente SMTP" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "Librería de audio OpenAL 3D" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "Programación 3D con OpenGL" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "Utilidades del componente OpenGL" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "Manejo de OpenGL shaders" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Motor de juegos simple OpenGL basado en formato MD2" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "Librería de rutinas OpenSSL" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "las opciones de la línea de órdenes de GNU" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Gestor de expresiones regulares compatible con Perl" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "Renderizador PDF basado en la librería Poppler" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "Kit de herramientas QT4" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "Kit de herramientas extendido QT4" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "Componente QT4 WebKit" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL con el kit de herramientas QT4" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "Kit de herramientas QT5" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "Componente Webkit QT5" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL con el kit de herramientas QT5" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "Extensión del kit de herramientas QT5" #: CDocumentation.class:137 msgid "Report designer" msgstr "Diseñador de reportes" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "Librería de gestión de Escaner basada en SANE" #: CDocumentation.class:140 msgid "SDL library" msgstr "Librería SDL" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "Sonido SDL & gestión de CD-ROM" #: CDocumentation.class:142 msgid "SDL2 component" msgstr "Componente SDL2" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "Componente de audio SDL2" #: CDocumentation.class:144 msgid "Application settings management" msgstr "Gestión de configuración de la aplicación" #: CDocumentation.class:145 msgid "Signals management" msgstr "Gestión de señales" #: CDocumentation.class:146 msgid "Terminal management" msgstr "Gestión de terminales" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "Desarrollo de aplicaciones gráficas de terminales" #: CDocumentation.class:148 msgid "Unit tests component" msgstr "" #: CDocumentation.class:149 msgid "Utility component" msgstr "Componente de utilidades" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "Componente de utilidades para aplicaciones web" #: CDocumentation.class:151 msgid "Video capture" msgstr "Captura de vídeo" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Compatibilidad con Visual Basic" #: CDocumentation.class:153 msgid "XML tools" msgstr "Herramientas XML" #: CDocumentation.class:154 msgid "HTML generator" msgstr "Generador de HTML" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "Protocolo XML-RPC" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "Herramientas XSLT basadas en libxml y libxslt" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Herramientas de aplicaciones web" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "Analizador y generador de feeds Web" #: CDocumentation.class:159 msgid "Web application development" msgstr "Desarrollo de aplicaciones Web" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "Gestión gráfica de formularios" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "Gestión del bucle de eventos" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "Display OpenGL" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "Números complejos" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "Gestión de documentos XML" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "Insertar color" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "Inserte la fecha de hoy" # gb-ignore #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "Ubicación" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "¡ADVERTENCIA! Libreria no encontrada." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Provee" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 FToolBox.class:36 msgid "Form" msgstr "Formulario" #: CModule.class:29 msgid "Forms" msgstr "Formularios" #: CModule.class:29 msgid "Gambas forms" msgstr "Formularios Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Páginas web de Gambas" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "WebPage" #: CModule.class:30 msgid "WebPages" msgstr "WebPages" #: CModule.class:31 msgid "Gambas reports" msgstr "Reportes Gambas" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "Reporte" #: CModule.class:31 msgid "Reports" msgstr "Reportes" #: CModule.class:32 msgid "Gambas web forms" msgstr "Formularios Web Gambas" # gb-ignore #: CModule.class:32 FMain.form:980 FToolBox.class:36 msgid "WebForm" msgstr "" # gb-ignore #: CModule.class:32 msgid "WebForms" msgstr "" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Formularios terminales Gambas" # gb-ignore #: CModule.class:33 FMain.form:987 FToolBox.class:36 msgid "TermForm" msgstr "" # gb-ignore #: CModule.class:33 msgid "TermForms" msgstr "" #: CProfile.class:114 msgid "Evaluator" msgstr "Evaluador" #: CProfile.class:116 msgid "Event loop" msgstr "Bucle de eventos" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Los ejemplos están ubicados en el servidor de la Granja de Gambas. Clic &1 para acceder a la Granja y poder descargarlos..." #: CProjectList.class:108 msgid "here" msgstr "aquí" #: CProjectList.class:234 msgid "IDE extensions" msgstr "Extensiones IDE" #: CProjectList.class:553 CVersionControlGit.class:448 CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 FText.form:40 FTranslate.class:679 FVersionControl.form:130 FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "Cancelar" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "¿Realmente desea desinstalar este software?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "Desinstalar" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "No se puede desinstalar el software:" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "El software se ha desinstalado correctamente." #: CProjectTree.class:98 msgid "Files" msgstr "Archivos" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Proyecto" #: CProjectTree.class:373 msgid "Sources" msgstr "Fuentes" #: CProjectTree.class:375 msgid "Connections" msgstr "Conexiones" #: CProjectTree.class:376 msgid "Public" msgstr "Público" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Datos" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "Hoy" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Ayer" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Hace dos días" #: CRecentProject.class:74 msgid "This week" msgstr "Esta semana" #: CRecentProject.class:76 msgid "This month" msgstr "Este mes" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Descarga cancelada" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "La suma de comprobación del paquete descargado es inválida." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Imposible descomprimir el archivo fuente." #: CSoftware.class:361 msgid "Abort" msgstr "Abortar" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "Ignorar" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Se requieren los siguientes componentes:" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "Imposible compilar el proyecto." #: CSoftware.class:396 msgid "Unable to make executable." msgstr "Imposible crear el ejecutable." #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "Imposible instalar el directorio de fuentes" #: CSoftware.class:664 msgid "yesterday" msgstr "ayer" #: CSoftware.class:666 msgid "&1 days ago" msgstr "&1 días atrás" #: CSoftware.class:672 msgid "last week" msgstr "la semana pasada" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "&1 semanas atrás" #: CSoftware.class:680 msgid "last month" msgstr "el mes pasado" #: CSoftware.class:682 msgid "&1 months ago" msgstr "&1 meses atrás" #: CSoftware.class:688 msgid "last year" msgstr "el año pasado" #: CSoftware.class:690 msgid "on &1" msgstr "en &1" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "No se puede insertar el proyecto." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "Ruta de acceso raíz local" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "Última confirmación" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "Último autor de la confirmación" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "Última fecha de confirmación" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "Rama actual" #: CVersionControlGit.class:368 msgid "Origin" msgstr "Origen" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "La rama actual está actualizada." #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "Un archivo para confirmar en la rama actual." #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "&1 archivos para confirmar en la rama actual." #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "Ninguno en el proyecto actual." #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "Uno en el proyecto actual." #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "&1 en el proyecto actual." #: CVersionControlGit.class:394 msgid "Status" msgstr "Estado" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "URL del repositorio remoto" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "Se creará un nuevo repositorio Git para este proyecto." # gb-ignore #: CVersionControlGit.class:448 FColorChooser.form:67 FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 FReportCoordChooser.form:32 FReportPaddingChooser.form:69 FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "Resuelve el conflicto." #: CVersionControlGit.class:511 FConnectionEditor.class:842 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Fecha" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "Revisión" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "Revisión remota" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "Remoto último autor autor" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "Última fecha de confirmación remota" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "La fuente de Gambas es publicada bajo la licencia SIL Open Font License." #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "Este programa es publicado bajo la GNU General Public License." #: Design.module:227 Project.module:2323 msgid "first" msgstr "primero" #: Design.module:229 Project.module:2325 msgid "second" msgstr "segundo" #: Design.module:231 Project.module:2327 msgid "third" msgstr "tercero" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "El programa ha sido interrumpido por CTRL+C." #: Design.module:464 msgid "The program has been terminated." msgstr "El programa ha sido cancelado." #: Design.module:472 msgid "The program has returned\nthe value: &1" msgstr "El programa retornó\nel valor: &1" #: Design.module:753 msgid "The project has no test module." msgstr "" #: Design.module:1064 msgid "Output terminal" msgstr "Terminal de salida" #: Design.module:1092 msgid "No terminal emulator found." msgstr "No se encontró emulador de terminal." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licencia" #: FAbout.class:241 msgid "Financial support" msgstr "Apoyo económico" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Acerca de Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "Este programa es SOFTWARE LIBRE; puede redistribuirlo y/o modificarlo bajo los términos de la licencia pública general de GNU publicada por la Free Software Foundation; versión 2 o (a su opción) cualquier versión posterior.

Este programa se distribuye con la esperanza de que será útil pero sin ninguna garantía; sin ni siquiera la garantía implícita de comerciabilidad o adecuación para un propósito PARTICULAR. Consulte la licencia pública general de GNU para obtener más detalles.\n" #: FArguments.form:13 FMain.form:1799 msgid "Run with arguments" msgstr "" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 FTestSuite.form:164 msgid "Reset" msgstr "Restablecer" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Ejecutar" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Cerrar" # gb-ignore #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "Selecciona un color" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:40 msgid "Free" msgstr "Libre" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "No terminado pero estable" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "Experimental" #: FComponentChooser.class:355 msgid "Stable" msgstr "Estable" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "En desuso" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "Este componente es requerido por las siguientes librería:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "Este componente es requerido por las siguientes librerías:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "Este componente es requerido por:

&1" #: FComponentChooser.class:589 msgid "Keep" msgstr "Mantener" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "Eliminar todo" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Estos componentes son incompatibles:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "El componente &1 necesita uno de los siguientes componentes:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "El componente &1 necesita el componente &2." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Selecciona un componente" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Mostrar componentes obsoletos" #: FComponentChooser.form:103 FConflictEditor.form:293 FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 FTextEditor.form:393 FTranslate.form:93 Project.module:924 msgid "Reload" msgstr "Recargar" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 FTextEditor.form:774 msgid "Zoom in" msgstr "Acercarse" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 FTextEditor.form:781 msgid "Zoom out" msgstr "Alejarse" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "Sin zoom" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Editar" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Este archivo está en conflicto. Debe resolver el conflicto para poder volver a utilizar el archivo." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Incapaz de cargar el archivo:" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Texto" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 Project.module:243 msgid "Image" msgstr "Imagen" #: FConflict.class:197 msgid "The file has been modified.\nDo you really want to close the dialog?" msgstr "Los archivos han sido modificados.\n¿Realmente quiere cerrar el dialogo?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Algunos conflictos aún no están resueltos." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Incapaz de resolver conflicto." #: FConflict.class:259 msgid "The file has been modified.\nDo you really want to open another file?" msgstr "Los archivos han sido modificados.\n¿Realmente quiere abrir otro archivo?" #: FConflict.class:267 msgid "Conflict files" msgstr "Archivos en conflicto" #: FConflict.form:31 msgid "Version conflict" msgstr "Conflicto de versión" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 FMenu.form:158 FProjectVersion.form:234 FTextEditor.form:145 msgid "Cut" msgstr "Cortar" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 FProjectVersion.form:240 FSystemInfo.form:38 FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "Copiar" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "Pegar" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 FList.form:111 FOption.form:1740 FProjectVersion.form:252 FTextEditor.form:128 msgid "Undo" msgstr "Deshacer" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 FEditor.form:121 FForm.form:154 FImageEditor.form:127 FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "Rehacer" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "Indentar" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "Desindentar" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 FProjectChooser.form:85 msgid "Open" msgstr "Abrir" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 FTranslate.form:234 msgid "Save" msgstr "Guardar" #: FConflict.form:160 msgid "Solve" msgstr "Resolver" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(Declaraciones)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "Todavía hay conflictos en este archivo." #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "Avanzado" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "Mayúscula" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "Minúscula" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "Comentar" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "Descomentar" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 FTextEditor.form:218 msgid "Paste special" msgstr "Pegado especial" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 FTextEditor.form:250 msgid "Select All" msgstr "Seleccionar Todo" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 FTextEditor.form:260 msgid "Go to line" msgstr "Ir a línea" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "Marcadores" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "Encontrar siguiente" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "Encontrar anterior" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "Vista" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "Ajuste de línea automático" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "Sangría con tabulación" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "No dividir" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "División horizontal" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "División vertical" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "Fin de línea" # gb-ignore #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "Ventanas" # gb-ignore #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "Abrir código" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 FTextEditor.form:409 msgid "Paste as string" msgstr "Pegar como cadena" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "Pegar como cadena multilíneas" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 FTextEditor.form:419 msgid "Paste as comments" msgstr "Pegar como comentarios" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "Editor de texto" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "Código" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Conflicto resuelto" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Conflicto anterior" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Siguiente conflicto" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Mantener mis cambios" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Tome sus cambios" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Mantén todos mis cambios" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Tome todos sus cambios" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 FNewConnection.form:70 FNewTable.form:33 FOption.form:323 FProjectProperty.form:320 msgid "Name" msgstr "Nombre" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 FProxy.form:27 msgid "Type" msgstr "Tipo" #: FConnectionEditor.class:61 msgid "Length" msgstr "Largo" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valor predeterminado" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Cotejamiento" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Índice" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Único" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Campo" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "Solicitudes SQL" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Incapaz de conectar con la base de datos." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "No guardar" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "La tabla '&1' ha sido modificada. ¿Desea salvarla?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Sin registro" #: FConnectionEditor.class:500 msgid "One record" msgstr "Un registro" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 registros" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Incapaz de cargar la tabla '&1'." #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "Incapaz de ejecutar la consulta." #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "ilimitado" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "Blob" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "Boolean" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "Flotante" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "Entero" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "Largo" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "Serial" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "Cadena" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "Este nombre ya está en uso." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "Ingrese un número." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "La longitud debe ser mayor que 1 y menor que 255." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "No coinciden los tipos." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "El nombre ya existe." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "El campo es usado en un índice." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "La tabla '&1' no tiene llave primaria." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "No es posible escribir la tabla &1." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "¿Realmente quiere borrar la tabla '&1'?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "No es posible borrar la tabla &1." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "¿Realmente quiere eliminar las filas seleccionadas?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "¿Realmente quiere remover esta consulta?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editor de conexiones" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Mostrar tablas del sistema" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nueva tabla" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Borrar tabla" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Eliminar" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Renombrar tabla" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Renombrar" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Copiar tabla" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Pegar tabla" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importar archivo de texto" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "Importar" #: FConnectionEditor.form:217 msgid "Run query" msgstr "Correr consulta" #: FConnectionEditor.form:223 msgid "New query" msgstr "Nueva consulta" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 FTranslate.form:88 msgid "New" msgstr "Nuevo" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "Eliminar consulta" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 FPublish.form:170 msgid "Clear" msgstr "Limpiar" #: FConnectionEditor.form:309 msgid "Fields" msgstr "Campos" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Añadir" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 FPublish.form:280 msgid "Down" msgstr "Abajo" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 FPublish.form:274 msgid "Up" msgstr "Arriba" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "Copiar lista de campos" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "Índices" #: FConnectionEditor.form:389 msgid "New index" msgstr "Nuevo índice" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 FOption.form:1218 msgid "Edit" msgstr "Editar" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exportar a un archivo CSV" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportar" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 FMenu.form:116 FNewConnection.class:402 FOption.form:1413 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Borrar" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Seleccionar todo" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Deseleccionar todo" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Conversión de proyectos Gambas 3" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "El comando '&1' ha fallado." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Incapaz de mandar el reporte de pulga." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "¡El programa se ha detenido inesperadamente!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Por favor, describe aquí cómo reproducir el fallo." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "El intérprete de Gambas colapsó" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "Enviar un reporte de errores por correo" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "No unir el proyecto al correo" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Sin padre)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "No es posible añadir el archivo." #: FCreateFile.form:37 msgid "New file" msgstr "Nuevo archivo" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "Opciones" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Ancho" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Altura" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Gestión de cuadros de diálogo" #: FCreateFile.form:155 msgid "Parent class" msgstr "Clase padre" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportado" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Instancia automática" #: FCreateFile.form:180 msgid "Not creatable" msgstr "No creable" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Extensión automática" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Revisión del proyecto ha fallado." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "¡No es posible crear el proyecto!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "Por favor, elige una plantilla" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Ingrese la localización del repositorio." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Nuevo proyecto" #: FCreateProject.form:46 msgid "Project type" msgstr "Tipo de proyecto" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Directorio padre" #: FCreateProject.form:90 msgid "Project details" msgstr "Detalles del proyecto" #: FCreateProject.form:99 msgid "Project name" msgstr "Nombre del proyecto" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "El nombre del proyecto es el nombre del directorio del proyecto." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "El directorio final del proyecto es :" #: FCreateProject.form:134 msgid "Project title" msgstr "Titulo del proyecto" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "El titulo del proyecto es el verdadero nombre de la aplicación." #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "El proyecto es traducible" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "Abrir en otra ventana" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repositorio" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "El repositorio del proyecto es enviado directamente al comando 'svn checkout'." #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "Depurado" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Consola" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "Puntos de interrupción" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "Advertencias" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "Control de versiones" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "Resultado de la búsqueda" #: FDebugExpr.class:4 msgid "not available" msgstr "no disponible" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Valor" #: FDebugExpr.class:511 msgid "Key" msgstr "Clave" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Símbolo" #: FDebugExpr.form:33 msgid "Watch" msgstr "Observar" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Imprimir en consola" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Mostrar todos los símbolos" #: FDebugExpr.form:88 msgid "No element" msgstr "No hay elemento" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Línea" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "Función" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Archivo" # gb-ignore #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "Mensage" #: FDebugInfo.class:125 msgid "native code" msgstr "código nativo" #: FDebugInfo.class:205 msgid "Watch expressions" msgstr "Analizar expresiones" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "¿Quiere limpiar la lista de expresiones?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "Archivo no cargado" #: FDebugInfo.class:1255 msgid "Current object" msgstr "Objeto actual" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "Variables locales" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "Depuración" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "Eliminar la expresión actual" #: FDebugInfo.form:137 msgid "Add expression" msgstr "Añadir expresión" #: FDebugInfo.form:210 msgid "Remove breakpoint" msgstr "Quitar punto de interrupción" #: FDebugInfo.form:218 msgid "Disable breakpoint" msgstr "Deshabilitar punto de interrupción" #: FDebugInfo.form:220 msgid "Disable" msgstr "Desactivar" #: FDebugInfo.form:226 msgid "Enable breakpoint" msgstr "Habilitar punto de interrupción" #: FDebugInfo.form:228 msgid "Enable" msgstr "Permitir" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "Eliminar todos los puntos de interrupción" #: FDebugInfo.form:284 msgid "Tasks" msgstr "Tareas" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "Limpiar consola" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 FVersionControl.form:110 msgid "Commit" msgstr "Consignar" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Sincronizar" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "Agregar todo al repositorio" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "Cancelar la búsqueda actual" #: FDebugInfo.form:474 msgid "Show search window" msgstr "Mostrar ventana de búsqueda" #: FDebugInfo.form:481 msgid "Search again" msgstr "Buscar otra vez" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "La cadena buscada no se encontró." #: FEditor.class:409 msgid "Column" msgstr "" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "Formatear código" #: FEditor.form:202 msgid "Sort procedures" msgstr "Ordenar procedimientos" #: FEditor.form:232 msgid "Go to" msgstr "Ir a" #: FEditor.form:251 msgid "Find definition" msgstr "Encontrar definición" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "Ejecutar hasta la línea actual" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "Intercambiar punto de Interrupción" #: FEditor.form:322 msgid "Watch expression" msgstr "Analizar expresion" #: FEditor.form:331 msgid "Open form" msgstr "Abrir formulario" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "Correr esta clase" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "Bloqueado" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "Imprimir" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Editor" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 msgid "Show modifications" msgstr "" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 msgid "Previous modification" msgstr "" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "Insertar carácter especial" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "Hacer el código bonito" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "Lista de procedimientos" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "Bloquear / desbloquear fichero" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Archivos CSV" #: FExportData.class:113 msgid "Unable to export data." msgstr "Incapaz de exportar datos." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Sobrescribir" #: FExportData.class:126 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Este archivo ya existe.\n\n¿Realmente quiere sobrescribirlo?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Caracter delimitador" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Caracter de cierre" #: FExportData.form:54 msgid "Export field names" msgstr "Exportar nombres de campo" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exportar solo los registros seleccionados" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Granjas" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Fallo de autenticación." #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "Iniciar sesión" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Servidor" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Usuario" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Contraseña" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Recordar contraseña" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Ser anónimo" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Por favor, introduce un e-mail válido." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Las contraseñas no coinciden" #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Imposible registrar el usuario." #: FFarmRegister.class:40 msgid "You have been successfully registered.\n\nYou will receive a confirmation e-mail soon." msgstr "Has sido registrado correctamente.\n\nRecibirás un e-mail de confirmación en breve." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Registrar" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Confirmar contraseña" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "Correo Electrónico" #: FFarmRegister.form:121 msgid "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n

\nYour e-mail will not be stored on the publishing server." msgstr "Se ha enviado un correo de confirmación al e-mail especificado. Haz clic en el enlace incluido en el correo para activar tu cuenta.\n

\nLos e-mail no se almacenan en el servidor." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Incapaz de abrir la conexión." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Incapaz de obtener los campos de la tabla." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Editar lista de campos" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Seleccione un campo" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Conexión" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabla" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "Este archivo está bloqueado, y se eliminará en el siguiente commit." #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "Este archivo no está versionado, y debe ser añadido al repositorio." #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "Este archivo no ha sido modificado desde el último commit." #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 FProjectVersion.class:211 FSave.form:22 Project.module:614 VersionControl.module:430 msgid "Continue" msgstr "Continuar" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "¡Va a cancelar sus cambios!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Cambios" #: FFileInfoVC.form:44 FVersionControl.form:52 msgid "History" msgstr "" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "Deshacer cambios" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" # gb-ignore #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Modulo de Gambas" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Clase de Gambas" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "Propiedades '&1'" #: FFontChooser.form:12 msgid "Select a font" msgstr "Seleccione una fuente" #: FForm.class:136 msgid "Bad form file" msgstr "Archivo de formulario incorrecto" #: FForm.class:284 msgid "Unknown control: &1" msgstr "Control desconocido: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "Componente desaparecido para el control &1" #: FForm.class:1923 msgid "Cannot paste data." msgstr "No se pueden pegar datos." #: FForm.form:178 msgid "Copy at the same place" msgstr "Copiar en el mismo lugar" #: FForm.form:198 msgid "Delete container only" msgstr "Borrar sólo el contenedor" #: FForm.form:205 msgid "Embed into a container" msgstr "Incrustrar en un contenedor" #: FForm.form:211 msgid "Change into" msgstr "Cambiar en" #: FForm.form:219 msgid "Select" msgstr "Seleccionar" #: FForm.form:232 msgid "Select parent" msgstr "Seleccionar padre" #: FForm.form:245 msgid "Arrangement" msgstr "Alineamiento" #: FForm.form:249 msgid "Bring to foreground" msgstr "Mandar al frente" #: FForm.form:256 msgid "Send to background" msgstr "Enviar al fondo" #: FForm.form:266 msgid "Horizontal" msgstr "Horizontal" #: FForm.form:273 msgid "Rows" msgstr "Filas" #: FForm.form:279 msgid "Vertical" msgstr "Vertical" #: FForm.form:286 msgid "Columns" msgstr "Columnas" #: FForm.form:295 msgid "Center horizontally" msgstr "Centrar horizontalmente" #: FForm.form:301 msgid "Center vertically" msgstr "Centrar verticalmente" #: FForm.form:307 msgid "Alignment" msgstr "Alineación" #: FForm.form:311 msgid "Align to left" msgstr "Alinear hacia la izquierda" #: FForm.form:317 msgid "Align to right" msgstr "Alinear hacia la derecha" #: FForm.form:323 msgid "Align to top" msgstr "Alinear hacia arriba" #: FForm.form:329 msgid "Align to bottom" msgstr "Alinear hacia abajo" #: FForm.form:338 msgid "Same width" msgstr "El mismo ancho" #: FForm.form:344 msgid "Same height" msgstr "La misma altura" #: FForm.form:353 msgid "Show tab" msgstr "Mostrar pestaña" #: FForm.form:361 msgid "Move tab" msgstr "Mover pestaña" #: FForm.form:366 msgid "First" msgstr "Primero" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "Previo" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "Siguiente" #: FForm.form:387 msgid "Last" msgstr "Último" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "Editor de menú" #: FForm.form:407 msgid "Event" msgstr "Evento" #: FForm.form:421 msgid "Run this form" msgstr "Correr este formulario" #: FForm.form:601 msgid "Toggle grid" msgstr "Intercambiar parrilla" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "Alternar información sobre herramientas" #: FForm.form:729 msgid "Move tab first" msgstr "Mover pestaña al principio" #: FForm.form:736 msgid "Move tab left" msgstr "Mover pestaña a la izquierda" #: FForm.form:743 msgid "Move tab right" msgstr "Mover pestaña a la derecha" #: FForm.form:750 msgid "Move tab last" msgstr "Mover pestaña al final" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "Negrita" #: FForm.form:786 msgid "Italic" msgstr "Cursiva" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "Subrayado" #: FForm.form:802 msgid "Bigger font" msgstr "Fuente mas grande" #: FForm.form:810 msgid "Smaller font" msgstr "Fuente mas pequeña" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "Fuente por defecto" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Fondo" #: FForm.form:834 msgid "Foreground" msgstr "Primer plano" #: FForm.form:845 msgid "Lock / unlock form" msgstr "Bloquear / desbloquear formulario" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "Jerarquía" #: FFormStack.form:24 msgid "Move top" msgstr "Mover a la parte superior" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "Mover arriba" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "Mover abajo" #: FFormStack.form:42 msgid "Move bottom" msgstr "Mover al fondo" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "Lenguaje por defecto" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Navegador de ayuda" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "Mostrar árbol de ayuda" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Ir atrás" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "Adelante" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "Atajos de teclado del IDE" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "Depurador" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 FTranslate.form:154 msgid "Translation" msgstr "Traducción" #: FImageEditor.form:159 msgid "Action" msgstr "Acción" #: FImageEditor.form:164 msgid "Crop" msgstr "Recortar" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "Reflejo horizontal" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "Espejo vertical" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "Rotar en sentido antihorario" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "Rotar en sentido horario" #: FImageEditor.form:205 msgid "Resize" msgstr "Cambiar el tamaño" #: FImageEditor.form:212 msgid "Rotate" msgstr "Rotar" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Ocultar selección" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selección" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Invertir selección" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Duplicar selección" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "Selección de desplazamiento" #: FImageEditor.form:266 msgid "Union" msgstr "Unión" #: FImageEditor.form:272 msgid "Difference" msgstr "Diferencia" #: FImageEditor.form:278 msgid "Intersection" msgstr "Intersección" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "Exclusivo o" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Formar cuadrícula" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "Acercamiento normal" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "Ajustar acercamiento" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "Guardar como JPG" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "Guardar como PNG" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "Guardar como BMP" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "Guardar como TIFF" #: FImageEditor.form:427 msgid "Image editor" msgstr "Editor de imágenes" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "Dibujar cuadrícula" #: FImageEditor.form:557 msgid "Move" msgstr "Mover" #: FImageEditor.form:568 msgid "Draw" msgstr "Dibujar" #: FImageEditor.form:578 msgid "Erase" msgstr "Borrar" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Rectángulo" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipse" #: FImageEditor.form:628 msgid "Magic wand" msgstr "Vara mágica" #: FImageEditor.form:645 msgid "Edit selection" msgstr "Editar selección" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "Cambiar el tamaño o estirar la imagen" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "Rotar imagen" # gb-ignore #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "Borde" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Portapapeles del sistema" #: FImageProperty.class:1269 msgid "Arrow" msgstr "Flecha" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "Flecha #2" #: FImageProperty.class:1272 msgid "Triangle" msgstr "Triángulo" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "Triángulo cuadrado" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "Pentágono" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "Hexágono" #: FImageProperty.form:173 msgid "Gradient" msgstr "Degradado" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Degradación lineal" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Degradación radial" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "Agregar punto de degradado" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "Eliminar punto de degradado" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "Seleccionar color de parada de degradado" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "Invertir gradiente" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "Radio" #: FImageProperty.form:327 msgid "Clipboard" msgstr "Portapepeles" #: FImageProperty.form:339 msgid "Shapes" msgstr "Formas" #: FImageProperty.form:364 msgid "Stroke" msgstr "Trazo" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "Llenar" #: FImageProperty.form:392 msgid "Colorize" msgstr "Colorear" #: FImageProperty.form:400 msgid "Desaturate" msgstr "Desaturar" #: FImageProperty.form:408 msgid "Make transparent" msgstr "Hacer transparente" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 msgid "Line cap" msgstr "Casquillo de la línea" #: FImageProperty.form:431 msgid "Line join" msgstr "Unir línea" #: FImageProperty.form:436 msgid "Fill rule" msgstr "Regla de relleno" #: FImageProperty.form:454 msgid "Opacity" msgstr "Opacidad" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Tamaño" #: FImageProperty.form:490 msgid "Tolerance" msgstr "Tolerancia" #: FImageProperty.form:509 msgid "Roundness" msgstr "Redondez" #: FImageProperty.form:535 msgid "Effects" msgstr "Efectos" #: FImageProperty.form:545 msgid "Brightness" msgstr "Brillo" #: FImageProperty.form:564 msgid "Contrast" msgstr "Contraste" #: FImageProperty.form:583 msgid "Gamma" msgstr "Gamma" #: FImageProperty.form:602 msgid "Lightness" msgstr "Suavisado" #: FImageProperty.form:621 msgid "Hue" msgstr "Matriz" #: FImageProperty.form:640 msgid "Saturation" msgstr "Saturación" #: FImageProperty.form:659 msgid "Blur" msgstr "Difuminar" #: FImageProperty.form:676 msgid "Transparency" msgstr "Transparencia" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "Preliminar" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "Aplicar" #: FImageProperty.form:745 msgid "Centered" msgstr "Centrado" #: FImageProperty.form:755 msgid "Right align" msgstr "Alinear a la derecha" #: FImageProperty.form:764 msgid "Left align" msgstr "Alinear a la izquierda" #: FImageProperty.form:777 msgid "Top align" msgstr "Alineacón superior" #: FImageProperty.form:786 msgid "Middle align" msgstr "Alinear al medio" #: FImageProperty.form:796 msgid "Baseline align" msgstr "Alineamiento con la línea base" #: FImageProperty.form:805 msgid "Bottom align" msgstr "Alineamiento inferior" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "Resolución de la cuadrícula" #: FImageProperty.form:859 msgid "Grid snap" msgstr "Snap de rejilla" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "Dibujar diagonales" #: FImageQuality.form:10 msgid "Image quality" msgstr "Calidad de la imagen" #: FImageResize.form:25 msgid "Resize image" msgstr "Cambiar el tamaño de la imagen" #: FImageResize.form:64 msgid "Resize and center" msgstr "Cambiar el tamaño y centrar" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "Cambiar el tamaño y centrar horizontalmente" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "Cambiar el tamaño y centrar verticalmente" #: FImageResize.form:85 msgid "Stretch image" msgstr "Estirar imágen" #: FImageResize.form:113 msgid "Add a border" msgstr "Añadir un borde" #: FImageResize.form:118 msgid "Ratio" msgstr "Radio" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Clases Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Módulos Gambas" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Hojas de estilo en cascada" #: FImportFile.class:33 msgid "HTML files" msgstr "Archivos HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "Archivos Javascript" #: FImportFile.class:33 msgid "Picture files" msgstr "Archivos de imagen" #: FImportFile.class:188 msgid "Cannot import file." msgstr "No se puede importar el archivo." #: FImportFile.form:9 msgid "Import files" msgstr "Importar archivos" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Crear enlaces simbólicos" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "Todos los Archivos" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Llave automática)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Campo_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "No hay suficientes valores" #: FImportTable.class:393 msgid "Too many values" msgstr "Demasiados valores" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Cancelado por el usuario" #: FImportTable.class:427 msgid "No record imported." msgstr "Registros no importados." #: FImportTable.class:429 msgid "One record imported." msgstr "Un registro importado." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 registros importados." #: FImportTable.form:35 msgid "Import file" msgstr "Importar archivo" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Seleccione el archivo CSV para importar" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Fuente" #: FImportTable.form:78 msgid "Charset" msgstr "Codificación de caracteres" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Elimiar espacios en blanco" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignorar primeras líneas" #: FImportTable.form:139 msgid "Line(s)" msgstr "Línea(s)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destino" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "La primera línea contiene los nombre de campos" #: FImportTable.form:176 msgid "Key field" msgstr "Campo llave" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "" #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 msgid "This layout already exists." msgstr "" #: FLayout.form:14 msgid "Save layout" msgstr "" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "Ítem &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "¿Realmente quiere limpiar la lista?" #: FList.form:25 msgid "Edit list property" msgstr "Editar lista de propiedades" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "Insertar" #: FList.form:87 msgid "Invert" msgstr "Invertir" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "¿Realmente quiere borrar este vínculo?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "¿Realmente quiere borrar este directorio?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "¿Realmente quiere borrar este archivo?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "No es posible borrar el archivo o el directorio" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "El archivo o directorio ya no existe." #: FMain.class:773 msgid "Sort history" msgstr "Ordenar historial" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "Ordenar por fecha" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "Ordenar por nombre" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "Ordenar por ruta" #: FMain.class:789 msgid "&Clear history" msgstr "&Limpiar historial" #: FMain.class:969 msgid "New folder" msgstr "Nueva carpeta" #: FMain.class:1040 msgid "The GNU translation tools are not installed on your system.\n\nPlease install them to be able to do the translation." msgstr "Las herramientas de traducción de GNU no están instaladas en su sistema.\n\nInstalelas para poder hacer la traducción." #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "Incapaz de borrar el archivo en el proyecto." #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "Todas las copias de seguridad o archivos generados se borrarán en el directorio del proyecto." #: FMain.class:1904 msgid "Clean" msgstr "Limpiar" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "¿Realmente desea agregar cada archivo al repositorio?" #: FMain.class:2359 msgid "Choose a profile" msgstr "Elija un perfil" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "Perfil para el proyecto &1" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "Seleccione un archivo" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "El archivo está ubicado dentro del proyecto." #: FMain.class:2781 Project.module:924 msgid "The file has been modified.\n\nAll your changes will be lost." msgstr "El archivo ha sido modificado.\n\nTodos sus cambios se perderán." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Abrir proyecto" #: FMain.form:313 msgid "Open recent" msgstr "Abrir reciente" #: FMain.form:321 msgid "Open example" msgstr "Abrir ejemplo" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "Abrir archivo" #: FMain.form:339 msgid "Save project" msgstr "Guardar proyecto" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Guardar proyecto como" #: FMain.form:358 msgid "Reload project" msgstr "Proyecto de recarga" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Salir" #: FMain.form:402 Project.module:6969 msgid "Save as" msgstr "Guardar como" #: FMain.form:442 msgid "Compile" msgstr "Compilar" #: FMain.form:449 msgid "Compile All" msgstr "Compilar todo" #: FMain.form:459 msgid "Translate" msgstr "Traducir" #: FMain.form:468 msgid "Make" msgstr "Crear" #: FMain.form:472 msgid "Executable" msgstr "Ejecutable" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "Archivo fuente" #: FMain.form:486 msgid "Installation package" msgstr "Paquete de instalación" #: FMain.form:493 msgid "Patch" msgstr "Parchear" #: FMain.form:496 msgid "Create" msgstr "Crear" #: FMain.form:525 msgid "Undo synchronization" msgstr "Deshacer sincronización" #: FMain.form:544 msgid "Branch" msgstr "Rama" #: FMain.form:549 msgid "Put under version control" msgstr "Poner bajo control de versiones" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "Publicar" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "Limpiar" #: FMain.form:570 msgid "Refresh" msgstr "Refrescar" #: FMain.form:599 msgid "Run with" msgstr "Ejecutar con" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Pausa" #: FMain.form:630 msgid "Stop" msgstr "Parar" #: FMain.form:637 msgid "Step" msgstr "Paso" #: FMain.form:644 msgid "Forward" msgstr "Adelante" #: FMain.form:651 msgid "Finish" msgstr "Terminar" #: FMain.form:660 msgid "Use terminal emulator" msgstr "Usar emulador de terminal" #: FMain.form:666 msgid "Redirect standard error output" msgstr "Redireccionar a la salida estándar de errores" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "Usar el servidor HTTP incrustado" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "Compomente GUI" #: FMain.form:713 msgid "Current desktop" msgstr "Escritorio actual" #: FMain.form:750 msgid "Activate profiling" msgstr "Activar perfilado" #: FMain.form:756 msgid "Open profile" msgstr "Abrir perfil" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "Limpiar todos los puntos de interrupción" #: FMain.form:770 msgid "Close all debug windows" msgstr "Cerrar todas ventanas del depurador" #: FMain.form:808 msgid "Status bar" msgstr "Barra de estado" #: FMain.form:815 msgid "Hide menubar" msgstr "Ocultar la barra de menú" #: FMain.form:839 msgid "Close all windows" msgstr "Cerrar todas las ventanas" #: FMain.form:846 msgid "Tools" msgstr "Herramientas" #: FMain.form:850 msgid "Find" msgstr "Encontrar" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Reemplazar" #: FMain.form:866 msgid "Browse project" msgstr "Navegar proyecto" #: FMain.form:873 msgid "Open a terminal" msgstr "Abrir una Terminal" #: FMain.form:880 msgid "Send project by mail" msgstr "Enviar projecto por mail" #: FMain.form:886 msgid "Update all forms" msgstr "Actualizar todos los formularios" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "Granja de software" #: FMain.form:904 msgid "Shortcuts" msgstr "Atajos" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Preferencias" #: FMain.form:924 msgid "Directory" msgstr "Directorio" #: FMain.form:929 msgid "Project link" msgstr "Vínculo del proyecto" #: FMain.form:938 msgid "Module" msgstr "Módulo" #: FMain.form:945 msgid "Test module" msgstr "" #: FMain.form:1004 msgid "HTML file" msgstr "Archivo HTML" #: FMain.form:1011 msgid "Style sheet" msgstr "Hoja de estilo" #: FMain.form:1018 msgid "Javascript file" msgstr "Archivo Javascript" #: FMain.form:1025 msgid "Other" msgstr "Otros" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Reciente" #: FMain.form:1059 msgid "Open in file manager" msgstr "Abrir en administrador de archivos" #: FMain.form:1064 msgid "Open in project" msgstr "Abrir en proyecto" #: FMain.form:1068 msgid "Open with" msgstr "Abrir con" #: FMain.form:1100 msgid "Duplicate" msgstr "Duplicar" #: FMain.form:1123 msgid "Copy file path" msgstr "Copiar ruta de archivo" #: FMain.form:1132 msgid "Startup class" msgstr "Clase de inicio" #: FMain.form:1147 msgid "Add to repository" msgstr "Agregar al repositorio" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtrar" #: FMain.form:1155 msgid "Show exported classes" msgstr "Mostrar clases exportadas" #: FMain.form:1160 msgid "Show added files" msgstr "Mostrar archivos agregados" #: FMain.form:1165 msgid "Show modified files" msgstr "Mostrar archivos modificados" #: FMain.form:1170 msgid "Show files in conflict" msgstr "Mostrar archivos en conflicto" #: FMain.form:1175 msgid "Show untranslatable files" msgstr "" #: FMain.form:1180 msgid "Show compressed files" msgstr "" #: FMain.form:1188 msgid "Show all" msgstr "Mostrar todo" #: FMain.form:1200 msgid "Do not translate" msgstr "No traducir" #: FMain.form:1207 msgid "Compress all" msgstr "Comprimir todo" #: FMain.form:1213 msgid "Uncompress all" msgstr "Descomprimir todo" #: FMain.form:1219 msgid "Compress file into the executable" msgstr "" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "Comprimir archivo" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "Nueva conexión" # gb-ignore #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Consejos del día" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "Información del Sistema" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Propiedades del proyecto" #: FMain.form:1429 msgid "Refresh project" msgstr "Refrescar proyecto" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "Crear Ejecutable" #: FMain.form:1471 msgid "Make source archive" msgstr "Crear archivo fuente" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "Crear paquete de instalación" #: FMain.form:1500 msgid "Properties sheet" msgstr "Hoja de propiedades" #: FMain.form:1509 msgid "Toolbox" msgstr "Caja de herramientas" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "Buscar" #: FMain.form:1551 msgid "Compile all" msgstr "Compilar todo" #: FMain.form:1600 msgid "Finish current function" msgstr "Terminar la función actual" #: FMain.form:1616 msgid "Show menubar" msgstr "Mostrar barra de menú" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "Publicar software" #: FMain.form:1706 msgid "&File" msgstr "&Archivo" #: FMain.form:1730 msgid "&Project" msgstr "&Proyecto" #: FMain.form:1742 msgid "&Debug" msgstr "&Depuración" #: FMain.form:1754 msgid "&View" msgstr "&Ver" #: FMain.form:1766 msgid "&Tools" msgstr "&Herramientas" # gb-ignore #: FMain.form:1778 msgid "&?" msgstr "" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 msgid "Show project tree" msgstr "" #: FMain.form:1916 msgid "Show properties sheet" msgstr "" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 msgid "Show controls" msgstr "" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Aplicaciones Gambas" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Mantener información de depuración en el ejecutable" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "Crear un acceso directo en el escritorio" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "The following patterns will be substituted in the command :
\n• $(FILE) will be replaced by the executable path.
\n• $(DIR) by the project directory.
\n• $(NAME) by the project name.
\n• $(TITLE) by the project title.
\n• $(VERSION) by the project version.
\n
\nNote : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "Paquete" #: FMakeInstall.class:137 msgid "Min. version" msgstr "Versión Mín." #: FMakeInstall.class:138 msgid "Max. version" msgstr "Versión Máx." #: FMakeInstall.class:144 msgid "File or directory" msgstr "Archivo o directorio" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "Creando paquetes..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Los paquetes han sido creados con éxito." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Ingrese introduzca su nombre." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Ingrese su dirección de correo electrónico." #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "Por favor ingrese el nombre del vendedor." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "No hay entrada de CHANGELOG para este lanzamiento." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Ingrese la primera entrada del archivo CHANGELOG." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "Elija al menos una distribución de destino." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "Elija la ubicación del paquete para cada distribución de destino." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "Elija un grupo de paquetes." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "Elija la ubicación del menú para cada distribución de destino." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "Elija una ubicación para el menú." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "No es posible encontrar el archivo extra: &1" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "Elija un directorio objetivo para cada archivo extra." #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "El sistema de paquetes Debian no permite espacios en nombres de archivo." #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "El sistema de paquetes Debian no permite espacios en nombres de directorios." #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "El paquete no puede ser almacenado dentro del directorio del proyecto." #: FMakeInstall.class:558 msgid "Initial release" msgstr "Lanzamiento inicial" #: FMakeInstall.class:814 msgid "Menus" msgstr "Menús" #: FMakeInstall.class:882 msgid "Groups" msgstr "Grupos" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "Caracteres incorrectos" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "¿Realmente quiere eliminar todas las dependencias extra?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "¿Realmente quiere eliminar todas los archivos extra?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "Seleccione un directorio destino" #: FMakeInstall.form:151 msgid "Create package" msgstr "Crear paquetes" #: FMakeInstall.form:154 msgid "Package information" msgstr "Información del paquete" #: FMakeInstall.form:160 msgid "Package name" msgstr "Nombre del paquete" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "Añadir prefijo 'vendor' al nombre del paquete" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "Versión de paquete" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "Nombre del vendedor" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "Prefijo de vendedor" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Información del mantenedor" # gb-ignore #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Registro de cambios" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Distribución objetivo" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Autoextraíble" #: FMakeInstall.form:612 msgid "Package group" msgstr "Grupo de paquetes" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Entrada al menú" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categorías" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Archivo de configuración de escritorio" # gb-ignore #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "Enter the mimetypes handled by your application there.\nPlease enter one mimetype by line.\n" msgstr "Ingrese el tipo MIME manejado por su aplicación.\nIngrese un tipo MIME por línea.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Configuración adicional" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Lo siguiente será agregado al final del archivo de configuración de escritorio." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Dependencias extra" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Mismas dependencias para todos los paquetes" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Archivos extra" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Mismos archivos para todas los paquetes" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Los archivos extra deben ser situados en la carpeta Proyecto del proyecto actual, por ejemplo, el directorio .hidden del proyecto en el disco." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Pruebas adicionales de autoconf" #: FMakeInstall.form:867 msgid "Add extra tests for the configuration process.\n

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "Agregar pruebas extra para el proceso de configuración.\n

Deje esto en blanco si no lo necesita, o si no conoce nada sobre scripts autoconf." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Directorio destino" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Crear directorios para cada distribución" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Salida de comandos" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Crear paquete ahora" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Seleccione el archivo de origen." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Seleccione el proyecto de origen." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Ingrese el nombre del parche." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "El parche se ha generado correctamente." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Incapaz de generar el parche." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Generar parche" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Seleccione origen del parche" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Origen del parche" #: FMakePatch.form:59 msgid "Project directory" msgstr "Directorio del proyecto" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Nombre de parche automático" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Editar parche" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "El asistente generará un parche entre el proyecto de origen y el proyecto actual." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Seleccione un archivo fuente" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Paquetes fuente" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Seleccione el directorio del proyecto" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Elija un nombre para el parche" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Parches/Ficheros de diferencias" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "Crear paquete fuente" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "¡Los menús han sido modificados!" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "Ingrese un nombre de menú." #: FMenu.class:346 msgid "Bad menu name !" msgstr "¡Nombre de menú incorrecto!" #: FMenu.class:352 msgid "Bad group name !" msgstr "¡Nombre de grupo incorrecto!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "¡El menú tiene demasiados niveles!" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "modificado" #: FMenu.form:86 msgid "Insert menu" msgstr "Insertar menú" #: FMenu.form:95 msgid "Insert separator" msgstr "Separador de inserción" #: FMenu.form:104 msgid "Insert menu before" msgstr "Insertar menú antes de" #: FMenu.form:107 msgid "Insert before" msgstr "Inserte antes de" #: FMenu.form:113 msgid "Delete menu" msgstr "Borrar menú" #: FMenu.form:179 msgid "Paste before" msgstr "" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Haga click en Insertar para añadir un menú nuevo." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Ingrese el nombre de la base de datos." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Ingrese una contraseña" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Propiedades de conexión" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Seleccione un directorio" #: FNewConnection.class:229 msgid "Create database" msgstr "Crear base de datos" #: FNewConnection.class:241 msgid "Delete database" msgstr "Eliminar base de datos" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Incapaz de crear la base de datos." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "¿Realmente quiere borrar la base de datos '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Incapaz de borrar la base de datos." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Servidor" #: FNewConnection.form:124 msgid "Path" msgstr "Ruta" #: FNewConnection.form:154 msgid "No password" msgstr "Sin contraseña" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Base de datos" #: FNewConnection.form:241 msgid "From" msgstr "De" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignorar codificación de caracteres de la base de datos" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Mostrar metadatos" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Recordar estructura de la base de datos" #: FNewTable.class:33 msgid "Create table" msgstr "Crear tabla" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Ingrese el nombre de la nueva tabla." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "La tabla '&1' ya existe." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nueva traducción" #: FOpenProject.form:22 msgid "Select a project" msgstr "Seleccione un proyecto" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Ejemplos" #: FOption.class:4 msgid "Amber" msgstr "Ámbar" #: FOption.class:4 msgid "Amethyst" msgstr "Amatista" #: FOption.class:4 msgid "Blues" msgstr "Azules" #: FOption.class:4 msgid "Emerald" msgstr "Esmeralda" # gb-ignore #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidiana" #: FOption.class:4 msgid "Pastel" msgstr "Pastel" #: FOption.class:4 msgid "Quest" msgstr "Búsqueda" #: FOption.class:4 msgid "Quick" msgstr "Rápido" # gb-ignore #: FOption.class:4 msgid "Ruby" msgstr "" #: FOption.class:4 msgid "Sapphire" msgstr "Zafiro" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "Zen" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "Personalizado" #: FOption.class:91 msgid "Desktop" msgstr "Escritorio" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(Por defecto)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "Archivos de temas de resaltado de Gambas" #: FOption.class:267 msgid "Export a theme file" msgstr "Exportar un archivo de tema" #: FOption.class:498 msgid "Select a theme file" msgstr "Seleccione un archivo de tema" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "Necesita reiniciar la aplicación para ver los cambios." #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "¿Realmante quiere borrar la caché de documentación?" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "Imposible eliminar la caché de documentación" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "¿Realmente quiere borrar este fragmento de código?" #: FOption.class:1224 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "Instalar" #: FOption.class:1310 msgid "Network is not available." msgstr "Red no disponible" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "Documentación actualizada" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "Nueva documentación disponible" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "Documentación no disponible" #: FOption.class:1507 msgid "Cannot download '&1'." msgstr "No se puede descargar '&1'." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "Incapaz de descomprimir documentación." #: FOption.class:1549 msgid "Unable to install documentation." msgstr "Imposible instalar la documentación." #: FOption.class:1659 msgid "Compact" msgstr "" #: FOption.class:1674 msgid "Current" msgstr "" #: FOption.class:1716 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1814 msgid "Do you really want to delete that layout?" msgstr "" #: FOption.form:295 msgid "Dotted" msgstr "Puntos" #: FOption.form:306 msgid "Identity" msgstr "Identidad" #: FOption.form:350 msgid "Package maintainer" msgstr "Mantenedor del paquete" #: FOption.form:395 msgid "Default license" msgstr "Licencia por defecto" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "No" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "Sí" #: FOption.form:439 msgid "Projects" msgstr "Proyectos" #: FOption.form:456 msgid "Default tab size" msgstr "Anchura de tabulador por defecto" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "espacio(s)" #: FOption.form:482 msgid "Indent with tab by default" msgstr "Sangría con tabulación de forma predeterminada" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "Ajuste de línea automático por defecto" #: FOption.form:516 msgid "Activate version control" msgstr "Activar el control de versiones" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "Restaurar archivos al cargar un proyecto" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Compilación" #: FOption.form:556 msgid "Number of background jobs" msgstr "" #: FOption.form:569 msgid "Images" msgstr "" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 msgid "Automatic translation with " msgstr "" #: FOption.form:644 msgid "Translation engine" msgstr "Motor de traducción" #: FOption.form:653 msgid "Help & applications" msgstr "Ayuda & aplicaciones" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Ayuda" #: FOption.form:670 msgid "Show documentation in popups" msgstr "Mostrar la documentación en ventanas emergentes" #: FOption.form:687 msgid "Always display optional messages" msgstr "Mostrar siempre mensajes opcionales" #: FOption.form:699 msgid "Documentation" msgstr "Documentación" #: FOption.form:710 msgid "Use offline documentation" msgstr "Usar documentación sin conexión" #: FOption.form:740 msgid "Download documentation" msgstr "Descargar documentación" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "Configuración de Proxy" #: FOption.form:779 msgid "Clear documentation cache" msgstr "Borrar la caché de documentación" #: FOption.form:787 msgid "Applications" msgstr "Aplicaciones" #: FOption.form:798 msgid "Browser" msgstr "Navegador" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "Terminal" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "Mostrar sangría con líneas verticales" #: FOption.form:858 msgid "Highlight current line" msgstr "Resaltar línea actual" #: FOption.form:875 msgid "Highlight modified lines" msgstr "Resaltar líneas modificadas" #: FOption.form:892 msgid "Show line numbers" msgstr "Mostrar números de línea" #: FOption.form:909 msgid "Procedure folding" msgstr "Plegado de procedimientos" #: FOption.form:926 msgid "Procedure separation" msgstr "Separación de procedimientos" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "Mostrar espacios y finales de línea con puntos" #: FOption.form:960 msgid "Show Preview" msgstr "Mostrar vista previa" #: FOption.form:978 msgid "Keywords in upper case" msgstr "Palabras clave en mayúscula" #: FOption.form:987 msgid "Code formatting" msgstr "Formateo de código" #: FOption.form:993 msgid "Automatic formatting" msgstr "Formato automático" #: FOption.form:1004 msgid "Control structure completion" msgstr "Finalización de la estructura de control." #: FOption.form:1021 msgid "Local variable declaration" msgstr "Declaración de variable local" #: FOption.form:1038 msgid "Comments insertion" msgstr "Inserción de comentarios" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "Cierre corchetes, soportes" #: FOption.form:1072 msgid "Close strings" msgstr "Cerrar cuerdas" #: FOption.form:1084 msgid "Explicit formating" msgstr "Formato explicito" #: FOption.form:1095 msgid "Format on load & save" msgstr "Formatear al cargar y guardar" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "Indentar declaración local de variables" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "Eliminar espacios vacíos al final de la línea" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "Mantener las líneas sucesivas vacías" #: FOption.form:1155 msgid "Code snippets" msgstr "Fragmentos de código" #: FOption.form:1171 msgid "Activate code snippets" msgstr "Activar fragmentos de código" #: FOption.form:1232 msgid "Interface" msgstr "Interfaz" #: FOption.form:1249 msgid "Activate animations" msgstr "Activar animaciones" #: FOption.form:1266 msgid "Show shadows" msgstr "Mostrar sombras" #: FOption.form:1283 msgid "Show tooltips" msgstr "Mostrar consejos" #: FOption.form:1300 msgid "Use utility windows" msgstr "Usar ventanas de utilidad" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "Cerrar pestañas con el botón central del ratón" #: FOption.form:1334 msgid "Show file name in window title" msgstr "Mostrar nombre de archivo en título de ventana" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "Mostrar panel de depuración si es necesario" #: FOption.form:1368 msgid "Message style" msgstr "" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "Fuentes" #: FOption.form:1452 msgid "Global size" msgstr "Tamaño global" #: FOption.form:1474 msgid "Title size" msgstr "Tamaño del titulo" #: FOption.form:1496 msgid "Debugger size" msgstr "Tamaño del depurador" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Impresión" #: FOption.form:1588 msgid "Fixed font" msgstr "Fuente fija" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "Zoom (exceptuado el navegador)" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "Instalar la fuente de Gambas para la edición de código" #: FOption.form:1681 msgid "Themes" msgstr "Temas" #: FOption.form:1698 msgid "Icon theme" msgstr "Tema de iconos" #: FOption.form:1714 msgid "Highlighting theme" msgstr "Resaltar tema" #: FOption.form:1728 msgid "Import theme" msgstr "Importar tema" #: FOption.form:1734 msgid "Export theme" msgstr "Exportar tema" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Consola - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Desbloquear consola" #: FOutput.form:72 msgid "Keep above" msgstr "Mantener por encima" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Suspender terminal" #: FOutput.form:104 msgid "Entered text echo" msgstr "Entró eco texto" #: FOutput.form:106 msgid "Echo" msgstr "Echo" #: FOutput.form:117 msgid "Open contents" msgstr "Contenidos abiertos" #: FOutput.form:130 msgid "Use system charset" msgstr "Usar codificación de caracteres del sistema" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Incapaz de pegar texto." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Contenido del portapapeles" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Pegar normalmente" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Pegar con PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Ingrese un nombre de tabla." #: FPasteTable.class:133 msgid "Table already exists" msgstr "La tabla ya existe" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "También copiar los datos de la tabla" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Ese archivo no luce como un archivo patch!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Parchear el proyecto actual" #: FPatch.form:31 msgid "Select patch" msgstr "Seleccione un parche" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Revertir" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "Formato del archivo de perfil incorrecto" # gb-ignore #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "Tiempo total &1 μs" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "Incapaz de cargar perfil: &1" #: FProfile.class:713 msgid "Calls" msgstr "Ejecuciones" #: FProfile.class:716 msgid "Duration" msgstr "Duración" #: FProfile.class:719 msgid "Average" msgstr "Promedio" #: FProfile.class:722 msgid "Self" msgstr "Sí mismo" #: FProfile.class:1121 msgid "Profile files" msgstr "Archivos de perfil" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "Incapaz de guardar perfil." #: FProfile.form:60 msgid "Show relative durations" msgstr "Mostrar duraciones relativas" #: FProfile.form:67 msgid "Show average" msgstr "Mostrar promedio" #: FProfile.form:74 msgid "Save profile" msgstr "Guardar perfil" #: FProfile.form:126 msgid "Callees" msgstr "Métodos ejecutados" #: FProfile.form:138 msgid "Callers" msgstr "Ejecutado por" #: FProjectProperty.class:55 msgid "Variable" msgstr "Variable" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "Snapping value is incorrect." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "&1 no exporta ninguna clase." #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "&1 ya está usado como librería." #: FProjectProperty.class:1000 msgid "Modules" msgstr "Módulos" #: FProjectProperty.class:1001 msgid "Test modules" msgstr "" #: FProjectProperty.class:1011 msgid "Functions" msgstr "" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "Líneas de código" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 msgid "Executable size" msgstr "Tamaño del ejecutable" #: FProjectProperty.class:1016 msgid "bytes" msgstr "bytes" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "Información sobre el componente" #: FProjectProperty.class:1039 msgid "Information about library" msgstr "Información sobre la librería" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1420 msgid "Gambas executable" msgstr "" #: FProjectProperty.form:250 msgid "JIT compiler" msgstr "" #: FProjectProperty.form:300 msgid "General" msgstr "General" #: FProjectProperty.form:366 msgid "Component" msgstr "Componente" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "Librería" #: FProjectProperty.form:366 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:373 msgid "Vendor" msgstr "Proveedor" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versión" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "Obtener del archivo 'VERSION' " #: FProjectProperty.form:418 msgid "Title" msgstr "Título" #: FProjectProperty.form:452 msgid "Information" msgstr "Información" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "Progreso" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "Terminado y estable" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "Este componente está oculto" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "Compatible hasta la versión" #: FProjectProperty.form:535 msgid "Include information from" msgstr "Incluye información de" #: FProjectProperty.form:547 msgid "Required features" msgstr "Características requeridas" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "Componentes requeridos y excluidos" #: FProjectProperty.form:624 msgid "Require" msgstr "Requiere" #: FProjectProperty.form:630 msgid "Exclude" msgstr "Excluir" #: FProjectProperty.form:642 msgid "Remove All" msgstr "Eliminar todo" #: FProjectProperty.form:649 msgid "Components" msgstr "Componentes" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Librerías" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "Ruta de búsqueda de biblioteca en tiempo de ejecución" #: FProjectProperty.form:737 msgid "Additional references" msgstr "" #: FProjectProperty.form:748 msgid "Environment" msgstr "Entorno" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Edición" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Tamaño del tabulador" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "Mostrar los componentes y controles obsoletos" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "Símbolos en módulos son públicos por defecto" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Los controles de formulario son públicos" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "Activar advertencias" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "Estadísticas" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Esta línea y las siguientes serán ignoradas" #: FProjectVersion.class:36 msgid "Local" msgstr "Local" #: FProjectVersion.class:37 msgid "Remote" msgstr "Remoto" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Ingrese un nombre de usuario." #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "Ingrese los cambios." #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "No se ha podido hacer commit del proyecto." #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "Incapaz de actualizar el proyecto desde el repositorio." #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "El proyecto ha sido actualizado correctamente desde el repositorio." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Control de versiones del proyecto" #: FProjectVersion.form:65 msgid "Update" msgstr "Actualizar" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Autenticación" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Refrescar información" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "Cambios" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Algunos archivos no están versionados y deben ser añadidos manualmente al repositorio." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Descripción previa" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Caracteres no permitidos en el nombre del control." #: FProperty.class:383 msgid "This name is already in use." msgstr "Este nombre ya está en uso." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Caracteres no permitidos en el grupo del control." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valor incorrecto de la propiedad." #: FProperty.class:631 msgid "The name of the control." msgstr "El nombre del control." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "El grupo de eventos al que el control pertenece." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Si las dimensiones del formulario y los controles deben seguir el tamaño de la fuente por defecto." #: FProperty.class:661 msgid "If the control is public." msgstr "Si el control es público." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Si la propiedad Text debe ser traducida." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Esta propiedad es virtual: está sólo implementa en el IDE, y no tiene existencia en tiempo de ejecución." #: FProperty.class:814 msgid "None" msgstr "Ninguno" #: FProperty.form:51 msgid "Lock property" msgstr "Bloquear propiedad" #: FProperty.form:58 msgid "Sort properties" msgstr "Ordenar propiedades" #: FProxy.form:37 msgid "Port" msgstr "Puerto" #: FProxy.form:76 msgid "Default proxy" msgstr "Proxy por defecto" #: FProxy.form:76 msgid "HTTP proxy" msgstr "Proxy HTTP" #: FProxy.form:76 msgid "No proxy" msgstr "Sin Proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "Proxy SOCKS5" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "No se puede publicar software cuya versión sea \"0.0\"." # gb-ignore #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "El proyecto ha sido publicado correctamente." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Imposible publicar el proyecto." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "No se permiten espacios." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Número de versión incorrecto." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "¿Realmente quieres eliminar todas las etiquetas?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Selecciona un fichero de captura de pantalla" #: FPublish.class:329 msgid "Screenshot files" msgstr "Ficheros de captura de pantalla" #: FPublish.form:67 msgid "Software description" msgstr "Descripción del software" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "Sitio web" #: FPublish.form:113 msgid "Create menu entry" msgstr "Crear entrada de menú" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Etiquetas" #: FPublish.form:164 msgid "Sort" msgstr "Ordenar" #: FPublish.form:176 msgid "Screenshot" msgstr "Captura de pantalla" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Mantener la captura almacenada en el servidor" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Eliminar captura de pantalla almacenada en el servidor" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Cargar una nueva captura desde el portapapeles" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Cargar nueva captura desde fichero siguiente:" #: FPublish.form:222 msgid "Dependencies" msgstr "Dependencias" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Requiere versión de Gambas" #: FPublish.form:295 msgid "Publish as" msgstr "Publicar como" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configurar borde" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Esquina" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Configurar sombra" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Sombra" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configurar pincel" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "Seleccione una imagen dentro del proyecto" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Valor incorrecto." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Seleccione una dimensión" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configurar el relleno" #: FSave.form:15 msgid "Save modified files" msgstr "Guardar archivos modificados" #: FSave.form:43 msgid "Save All" msgstr "Guardar Todo" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "Los siguientes archivos han sido modificados. ¿Quiere guardarlos?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "No es posible guardar un proyecto dentro de su propio directorio." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Incapaz de guardar el proyecto." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Nuevo directorio padre del proyecto" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nuevo nombre del proyecto" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Capturar pantalla" #: FSearch.class:523 msgid "Search string replaced once." msgstr "La cadena se reemplazó una vez." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "La cadena buscada se reemplazó &1 veces." #: FSearch.class:630 msgid "One match" msgstr "Una coincidencia" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 coincidencias" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "¿Realmente quiere reemplazar cada cadena?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Buscar & reemplazar" #: FSearch.form:105 msgid "Case sensitive" msgstr "Sensible a mayúsculas y minúsculas" #: FSearch.form:110 msgid "Words only" msgstr "Sólo palabras" #: FSearch.form:115 msgid "Regular expression" msgstr "Expresión regular" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignorar cadenas" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignorar comentarios" #: FSearch.form:140 msgid "Search in" msgstr "Buscar en" #: FSearch.form:147 msgid "Current function" msgstr "" #: FSearch.form:153 msgid "Current file" msgstr "Archivo actual" #: FSearch.form:160 msgid "Source files" msgstr "Archivos fuente" #: FSearch.form:166 msgid "Data files" msgstr "Archivos de datos" #: FSearch.form:197 msgid "Browse" msgstr "Navegar" #: FSearch.form:209 msgid "Replace all" msgstr "Reemplazar todo" #: FSearch.form:220 msgid "Highlight search" msgstr "Resaltar búsqueda" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Seleccionar un archivo extra" #: FSelectIcon.class:40 msgid "Image files" msgstr "Archivos de imagenes" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "Archivos de imagen SVG" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Seleccione una imagen" #: FSelectIcon.form:45 msgid "Stock" msgstr "Stock" #: FSelectIcon.form:73 msgid "Size preview" msgstr "" #: FSelectLibrary.class:64 msgid "unknown" msgstr "desconocido" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Seleccione una biblioteca" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "No se ha encontrado ninguna biblioteca en su sistema." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Ingrese una cadena de disparo." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Esta cadena de activación ya está en uso." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Editar fragmento de código" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nuevo fragmento de código" #: FSnippet.form:26 msgid "Trigger string" msgstr "Cadena de disparo" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Juegos" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Desarrollo" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Educación" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Gráficos" # gb-ignore #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "Vídeo" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Oficina" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Accesorios" # gb-ignore #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Extensiones" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Mi software" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Otro software de" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Todo el software" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "No se encuentra el software." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "Petición cancelada." #: FSoftwareFarm.class:376 msgid "Cancel my vote" msgstr "Cancelar mi voto" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "Actualizar" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "Publicado &1 (en &2)" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "¿Realmente quieres descargar &1?" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "Imposible descargar &1:" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "&1 se ha descargado correctamente." #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "¿Realmente quieres actualizar a &1?" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "Imposible actualizar a &1:" #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "¿Realmente quieres desinstalar &1?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "No se puede desinstalar &1:" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "&1 se ha desinstalado correctamente." #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "¿Realmente quieres instalar &1?" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "Imposible instalar &1:" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "&1 se ha instalado correctamente." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "Imposible modificar tu voto." #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "¿Realmente quieres eliminar &1 de la granja?" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "Imposible eliminar &1:" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Granja de software Gambas" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "Mostrar" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Instalado" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Más descargados" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Más recientes" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Mostrar filtros" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Mostrar versiones antiguas" #: FSoftwareFarm.form:397 msgid "Download" msgstr "Descargar" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "Descargar e instalar" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "Votar" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "Copie esta información en todos sus reportes de errores." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Seleccione una tabla" #: FTestSuite.class:90 msgid "Unable to load test suites." msgstr "" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 msgid "This test suite already exists." msgstr "" #: FTestSuite.class:394 msgid "Unable to save test suites." msgstr "" #: FTestSuite.class:404 msgid "Do you really want to remove this test suite?" msgstr "" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 msgid "Delete test suite" msgstr "" #: FTestSuite.form:117 msgid "Select all tests" msgstr "" #: FTestSuite.form:124 msgid "Unselect all tests" msgstr "" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 msgid "Edit '&1' property" msgstr "" #: FText.form:29 msgid "Use a fixed font" msgstr "Usar una fuente de tamaño fijo" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "Salida de consola #&1" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "" #: FTextEditor.class:1938 msgid "Example" msgstr "" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "Ordenar ascendente" #: FTextEditor.form:192 msgid "Sort descent" msgstr "Ordenar descendente" #: FTextEditor.form:727 msgid "Toggle preview" msgstr "" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "Consejo del día #&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "¡Incapaz de leer el consejo del día!" #: FTips.form:70 msgid "Show tips on startup" msgstr "Mostrar consejos al inicio" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 msgid "Container" msgstr "" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 msgid "Network" msgstr "" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 msgid "Current project" msgstr "" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "El proyecto está vacío. No hay nada que traducir." #: FTranslate.class:74 msgid "Language" msgstr "Languaje" #: FTranslate.class:77 msgid "Not translated" msgstr "No traducido" #: FTranslate.class:169 msgid "Translation files" msgstr "Archivos de traducción" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "No es posible cargar el archivo de traducción del idioma '&1'" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "No es posible guardar la traducción." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "¿Realmente quiere borrar esta traducción?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "¿Realmente quiere recargar esta traducción?" #: FTranslate.class:802 msgid "Export a translation" msgstr "Exportar una traducción" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "Seleccione el archivo de traducción a importar." #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "No fue seleccionada ninguna traducción." #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "Una traducción fue seleccionada." #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "Se han importado &1 traducciones." #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "No es posible importar el archivo de traducción." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "Todo parece estar correcto." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "Los símbolos de las cadenas traducidas no concuerdan con los de las cadenas sin traducir." #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "&1 cadenas. ¡Todo está traducido!" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 cadenas. Una no está traducida. &3% listo." #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 cadenas. &2 no están traducidas. &3% listo." #: FTranslate.class:1745 msgid "Automatic translation has failed." msgstr "La traducción automática ha fallado." #: FTranslate.class:1757 msgid "Do you want to fill the translation automatically?" msgstr "¿Desea rellenar la traducción automáticamente?" #: FTranslate.form:77 msgid "Project translation" msgstr "Traducción del proyecto" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Traducción automática" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Cadenas no traducidas" #: FTranslate.form:122 msgid "Translated strings" msgstr "Cadenas traducidas" #: FTranslate.form:126 msgid "All strings" msgstr "Todas las cadenas" #: FTranslate.form:197 msgid "Add a new translation" msgstr "" #: FTranslate.form:232 msgid "Save translation" msgstr "Guardar traducción" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verificar la traducción" #: FTranslate.form:242 msgid "Verify" msgstr "Verificar" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Encontrar la siguiente cadena traducida" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Encontrar la cadena traducida anteriormente" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Encontrar la cadena sin traducción previa" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Encontrar la siguiente cadena sin traducir" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Limpiar esta traducción" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "La cadena no debe ser traducida" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copiar cadena no traducida" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importar todas las traducciones recursivamente" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Reemplazar traducciones existentes" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importar un archivo de traducción" #: FVersionControl.form:81 msgid "Hide translation changes" msgstr "" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "No hay nada que cometer." #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "empujar" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Seleccionar fuente" #: FWelcome.class:69 msgid "New project..." msgstr "Nuevo proyecto..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Proyectos recientes" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "Software instalado" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Bienvenido a Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anónimo" #: FarmRequest.class:125 msgid "No answer." msgstr "Sin respuesta." #: FarmRequest.class:167 msgid "Register user" msgstr "Registrar usuario" #: FarmRequest.class:242 msgid "Publish project" msgstr "Publicar proyecto" #: FarmRequest.class:363 msgid "Download software" msgstr "Descargar software" #: FarmRequest.class:389 msgid "Delete software" msgstr "Eliminar software" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "Esta página no existe." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Africano (Sudáfrica)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arábico (Egipto)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arábico (Tunicia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbayano (Azerbayán)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Búlgaro (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalán (Cataluña, España)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Galeico (Reino Unido)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Checo (República Checa)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danés (Dinamarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Alemán (Alemania)" #: Language.module:35 msgid "German (Belgium)" msgstr "Alemán (Bélgica)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Griego (Grecia)" #: Language.module:41 msgid "English (common)" msgstr "Inglés (común)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inglés (Reino Unido)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inglés (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Inglés (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Inglés (Canadá)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (¡En todo el mundo!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Español (común)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Español (España)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Español (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonio (Estonia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basco (País Basco)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Irán)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finlandés (Finlandia)" #: Language.module:68 msgid "French (France)" msgstr "Francés (Francia)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francés (Bélgica)" #: Language.module:70 msgid "French (Canada)" msgstr "Francés (Canadá)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francés (Suiza)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Gallego (España)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebreo (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (India)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Húngaro (Hungría)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croata (Croacia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesio (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Galéico (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Islandés (Islandia)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiano (Italia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonés (Japón)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Jemer (Camboya)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Koreano (Korea)" #: Language.module:110 msgid "Latin" msgstr "Latín" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Lituano (Lituania)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malabar (India)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedonio (Republica de Macedonia)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Flamenco (Holanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Flamenco (Bélgica)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Noruego (noruega)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (India)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polaco (Polonia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugués (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugués (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valenciano (Comunidad Valenciana, España)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Rumano (Rumania)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ruso (Rusia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Esloveno (Eslovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanés (Albania)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbio (Serbia & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Sueco (Suecia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turco (Turquía)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ucrania (Ucraniano)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamita (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valón (Bélgica)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Chino simplificado (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Chino tradicional (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Desconocido" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "Incapaz de comprimir archivo." #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Incapaz de obtener la clave." #: MConnection.module:91 msgid "Unable to save password." msgstr "Incapaz de guardar la clave." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "No es posible crear la table &1." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "No es posible crear la tabla de metadatos." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 no puede ser static" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 declaración no coincide" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 está declarado pero no es una función" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 no es una estructura" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 no está declarado" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 debe ser static" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: no en el archivo" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: error de sintaxis" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: error de sintaxis en el archivo form" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: muchos contenedores anidados" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' ya fue declarada" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' está mal sobrescrita en la clase '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' no es una propiedad" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' no es static" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' es sólo de lectura" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' es static" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' es sólo de escritura" # gb-ignore #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Un módulo no puede disparar eventos" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Una implementación de propiedad no puede ser pública" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Una propiedad debe ser pública" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Acceso prohibido" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "El alias debe ser una cadena" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Expresión ambigua. Use paréntesis" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "El argumento no puede ser pasado por referencia" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Matrices de estructuras no están soportados" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Archivo incorrecto: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Argumento incorrecto" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Caracter constante en cadena incorrecto" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Tipo de constante incorrecto" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Manejador de eventos en &1.&2(): &3 incorrecto" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Expresión incorrecta: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Versión de archivo de formulario incorrecto" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Formato incorrecto en la sección:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Formato de cadena incorrecto" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Incorrecto número de dimensiones" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Archivo project incorrecto: línea &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Expresión regular incorrecta: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Conversión a cadena incorrecta" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Rango de subscript incorrecto" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Uso incorrecto de la clase virtual" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Cadena de versión incorrecta" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "No es posible cambiar el directorio actual de '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "No es posible crear el archivo .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "No es posible crear el archivo action: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "No es posible crear la llamada: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "No es posible crear la información de la clase: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "No es posible crear el archivo: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "No es posible crear el archivo temporal: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "No es posible encontrar la librería dinámica '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "No es posible encontrar el símbolo '&2' en la librería dinámica '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "No puede heredarse a si misma" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "No es posible heredar doble" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "No es posible instanciar tipos nativos" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "No es posible cargar clase '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "No es posible cargar el componente '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "No es posible cargar el archivo fuente: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "No es posible crear el ejecutable: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "No es posible mezclar NEW y una matriz incrustada" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "No es posible mezclar NEW y una estructura incrustada" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "No es posible abrir el archivo'&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "No es posible abrir el archivo: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "No es posible levantar eventos en funciones estáticas" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "No es posible leer el archivo: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "No es posible registrar la clase '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "No es posible eliminar el archivo '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "No es posible renombrar el archivo '&1' a '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "No es posible ejecutar el proceso hijo: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "No es posible establecer el dueño del archivo: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "No es posible usar el operador NEW aquí" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "La clase '&1' no es creable" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Se esperaba operador de comparación" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "El nombre del componente debe ser una cadena" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Componente no encontrado: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Se esperaba una constante de tipo cadena " #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Contenido ya declarado" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Caso por defecto ya definido" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "El caso por defecto debe ser el último" #: MErrorMessage.module:85 msgid "Device is full" msgstr "El dispositivo está lleno" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "El directorio no esta vació" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "División por cero" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Símbolos dinámicos no se pueden utilizar en una función estática" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Matrices inscrustados están prohibidas aquí" #: MErrorMessage.module:90 msgid "End of file" msgstr "Final de archivo" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Operador de igualdad o desigualdad esperado" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Expresión muy compleja" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Expresión muy compleja. Demasiados operandos" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "El nombre de la librería externa debe ser una cadena" #: MErrorMessage.module:95 msgid "File already exists" msgstr "El archivo ya existe" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "El archivo es un directorio" #: MErrorMessage.module:97 msgid "File is locked" msgstr "El archivo está bloqueado" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "El nombre de archivo es muy largo" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "El archivo o directorio no existe" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "GOSUB no permitido" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "GOTO no permitido" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Objeto gratuito al que se hace referencia" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Instrucción ilegal" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Error interno del compilador" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Asignación inválida" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Fecha inválida" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Objeto inválido" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Ruta inválida" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() requiere un argumento de función" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "El salto es muy lejor" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Etiqueta '&1' no declarada" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "El nombre de la librería debe ser una cadena" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Variable Loop ya está en uso" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "La variable de bucle no puede ser un argumento" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "La variable de bucle no puede ser global" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "No es posible usar ME en una función estática" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Error matemático" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Falta #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Falta ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Falta '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Falta operador" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Falta la llave derecha" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW no puede tener argumentos pasados por referencia" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "No hay método de instanciación" #: MErrorMessage.module:126 msgid "No parent class" msgstr "No hay clase padre" #: MErrorMessage.module:127 msgid "No return value" msgstr "No retorna valor" #: MErrorMessage.module:128 msgid "No startup method" msgstr "No hay método de inicio" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Cadena no terminada" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "No es un directorio: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "No es una función" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "No es un procedimiento" #: MErrorMessage.module:133 msgid "Not an array" msgstr "No es una matriz" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "No es una enumeración" #: MErrorMessage.module:135 msgid "Not an object" msgstr "No es un objeto" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "No hay suficientes para NEW()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "No hay suficientes argumentos" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "No hay suficientes argumentos para &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "No ha sido implementado" #: MErrorMessage.module:140 msgid "Not supported" msgstr "No soportado" #: MErrorMessage.module:141 msgid "Null object" msgstr "Objeto Nulo" #: MErrorMessage.module:142 msgid "Number" msgstr "Número" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Número o fecha esperada" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Número o fecha" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Número, fecha o cadena" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Número, cadena u objeto" #: MErrorMessage.module:147 msgid "Object" msgstr "Objeto" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Fuera de los límites" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Fuera de memoria" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Fuera de rango" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Desbordamiento" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Invalidar una clase ya heredada no esta permitido" #: MErrorMessage.module:153 msgid "Read error" msgstr "Error de lectura" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Tipo de valor retorno no especificado en la declaración de la función" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Instruccion STOP encontrada" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER no puede ser usado solo" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Error de serialización" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Desbordamiento de la pila" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Tipo estándar" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "El flujo está cerrado" #: MErrorMessage.module:162 msgid "String expected" msgstr "Se esperaba una cadena" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Las estructuras deben ser públicas" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Argumentos de subrutina no pueden ser pasados por referencia" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Error de sintaxis" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Error de sintaxis en la declaración de la función" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Error de sintaxis en el nombre del evento" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Error de sintaxis en el modo de abrir archivos" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Error de sintaxis en el tipo de retorno" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Error de sintaxis. &1 esperado" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Error de sintaxis. '...' debe ser el último argumento" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Error de sintaxis. CASE o DEFAULT esperado después de SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Error de sintaxis. CLASS necesita un identificador" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Error de sintaxis. No se puede usar ésta sintaxis en asignaciones" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Error de sintaxis. INHERITS necesita un nombre de clase" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Error de sintaxis. Identificador esperado" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Error de sintaxis. Identificador inválido en el nombre de la función" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Error de sintaxis. Parámetro opcional inválido" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Error de sintaxis. Tipo de retorno inválido" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Error de sintaxis. Descripción de tipo de &1 inválido" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Error de sintaxis. Descripción de tipo inválida para el campo &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Error de sintaxis. Argumentos innecesarios" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Error de sintaxis. Sintaxis de Punto usada fuera de WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Error de sintaxis. STRUCT necesita un identificador" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Error de sintaxis. El argumento &1 no es un identificador válido" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Error de sintaxis. El campo &1 no es un identificador válido" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Error de sintaxis. VarPtr() toma sólo un identificador" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Error de sistema #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "El '!' operador debe estar seguido de un identificador" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "El '.' operador debe estar seguido de un identificador" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "Esta función debe tomar un número fijo de argumentos" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "El método especial &1 no puede ser una función" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "El método especial &1 no puede ser implementado" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "El método especial &1 no puede ser estático" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "El método especial &1 debe ser una función" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "El método especial &1 debe ser público" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "El método especial &1 debe ser estático" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "El método especial &1 debe retornar un boolean" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "El método especial &1 debe tomar sólo un número variable de argumentos" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "El método especial &1 debe tomar por lo menos un argumento" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "El método especial &1 no toma argumentos" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "El método especial debe retornar un entero" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "El método especial debe tomar exactamente un argumento" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "El método especial debe tomar exactamente dos argumentos" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "La firma del método especual es incorrecta" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Esta expresión no puede ser una sentencia" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Esta expresión no puede ser pasada por referencia" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Demasiados argumentos" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Demasiados argumentos para &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Demasiadas declaraciones de matrices" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Demasiadas constantes" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Demasiadas clases diferentes usadas" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Demasiadas dimensiones" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Demasiadas variables dinamicas" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Demasiados eventos" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Demasiadas expresiones en CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Demasiadas funciones externas" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Demasiadas funciones" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Demasiados imbricados # If ... # endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Demasiadas etiquetas" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Demasiadas variables locales" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Demasiadas estructuras de control anidadas." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Demasiados sinónimos para la Propiedad" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Demasiadas cadenas nuevas simultáneas" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Demasiadas variables estáticas" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Demasiados símbolos desconocidos" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Barra diagonal invertida" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "No coinciden los tipos" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "No coinciden los tipos: requerido &1, obtenido &2 en cambio" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Incapaz de crear closure" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Incapaz de obtener la posición del archivo" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Incapaz de cargar el archivo de la clase" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Incapaz de preparar la descripción de la función" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "&1 Inesperado" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Fin de archivo inesperado" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Cadena inesperada" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Error desconocido" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Extensión de archivo desconocido" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Identificador desconocido: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Operado desconocido" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Simbolo '&2' desconocido en la clase '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Usuario o grupo desconocido" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Tipo de datos no soportado" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Conversión de cadenas no compatibles" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "LOCK inútil" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "El argumento para VarPtr() debe ser dinamico, estático o una variable local" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Identificador de void" #: MErrorMessage.module:253 msgid "Void key" msgstr "Llave vacía" #: MErrorMessage.module:254 msgid "Write error" msgstr "Error de escritura" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "No es posible encontrar el componente" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "no es posible encontrar la librería " #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "nombre de clase oculto por declaración global: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "nombre de clase oculto por declaración local: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "constante ocultada por declaración local: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "función externa ocultada por declaración local: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "función ocultada por declaración local: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "variable global ocultada por declaración local: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "integer y boolean mezclados con el operador `&1'" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "variable global no inicializada: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "variable no inicializada: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "error desconocido" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "argumento no utilizado: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "función externa no utilizada: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "función no utilizada: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "variable global no utilizada: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "variable no utilizada: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "no es posible abrir la pseudo-terminal esclava:" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "no es posible inicializar la pseudo-terminal:" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "no es posible conectar la entrada estándar:" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "no es posible conectar la salida estándar ni la salida estándar de error:" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "No es posible correr el ejecutable:" #: MHelp.module:316 msgid "No help found." msgstr "No se encontró ayuda." #: MMime.module:17 msgid "Plain text" msgstr "Texto plano" #: MMime.module:18 msgid "HTML text" msgstr "Texto HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Datos de formularios Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Datos de menu Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Ruta de archivo del proyecto Gambas" #: MMime.module:22 msgid "URI list" msgstr "Lista URI" #: MMime.module:33 msgid "Unknown format" msgstr "Formato desconocido" #: MTheme.module:6 msgid "Alternate background" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "Caracteres" #: MTheme.module:6 msgid "Comments" msgstr "Comentarios" #: MTheme.module:6 msgid "Current line" msgstr "Línea actual" #: MTheme.module:6 msgid "Data types" msgstr "Tipos de datos" #: MTheme.module:6 msgid "Editing line" msgstr "Editando línea" #: MTheme.module:6 msgid "Errors" msgstr "Errores" #: MTheme.module:6 msgid "Highlighting" msgstr "Resaltado" #: MTheme.module:6 msgid "Keywords" msgstr "Palabras clave" #: MTheme.module:6 msgid "Labels" msgstr "Etiquetas" #: MTheme.module:6 msgid "Normal text" msgstr "Texto normal" #: MTheme.module:6 msgid "Numbers" msgstr "Números" #: MTheme.module:6 msgid "Operators" msgstr "Operadores" #: MTheme.module:6 msgid "Preprocessor" msgstr "Prepocesador" #: MTheme.module:6 msgid "Strings" msgstr "Cadenas" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutinas" #: MTheme.module:6 msgid "Symbols" msgstr "Símbolos" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1' es requerido." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1' y '&2' son requeridos." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "Guardando archivo CHANGELOG." #: Package.module:743 msgid "Making &1 support package..." msgstr "Creando el paquete de soporte &1..." #: Package.module:798 msgid "Creating package for &1." msgstr "Creando paquete para &1." #: Package.module:830 msgid "The package build has failed." msgstr "La creación del paquete ha fallado." #: Package.module:903 msgid "Making build directory." msgstr "Creando el directorio de construcción." #: Package.module:962 msgid "Creating desktop file..." msgstr "Creando archivo de escritorio..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "Se están debianizando los fuentes." #: Package.module:1175 msgid "Creating package..." msgstr "Creando paquete..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' ha fallado." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "Inicializando directorio ~/RPM." #: Package.module:1483 msgid "Creating source package." msgstr "Creando paquete fuente." #: Package.module:1507 msgid "Creating .spec file." msgstr "Creando archivo .spec." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' ha devuelto el siguiente código de error:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' ha devuelto el siguiente código de error:" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "El directorio no es un proyecto Gambas" #: Patch.class:52 Project.module:4816 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "El parche no se aplicó.\n" #: Project.module:238 msgid "Automation" msgstr "Automatización" #: Project.module:239 msgid "Basic" msgstr "Básico" #: Project.module:241 msgid "Drawing" msgstr "Dibujo" #: Project.module:244 msgid "Miscellaneous" msgstr "Varios" #: Project.module:245 msgid "Networking" msgstr "Redes" # gb-ignore #: Project.module:246 msgid "OpenGL" msgstr "" #: Project.module:248 msgid "Sound" msgstr "Sonido" #: Project.module:250 msgid "Controls" msgstr "Controles" # gb-ignore #: Project.module:251 msgid "Multimedia" msgstr "" # gb-ignore #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "Archivo no encontrado!" #: Project.module:545 msgid "This project does not exist." msgstr "Este proyecto no existe." #: Project.module:557 msgid "Unable to find Gambas IDE executable in directory:\n\n&1" msgstr "Incapaz de encontrar el ejecutable de la IDE de Gambas en el directorio:\n\n&1" #: Project.module:576 msgid "This is not a Gambas project." msgstr "Este no es un proyecto Gambas." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Este es un proyecto Gambas 1.0. Use Gambas 2 para convertirlo." #: Project.module:582 msgid "Convert" msgstr "Convertir" #: Project.module:582 msgid "This is a Gambas 2.0 project.\n\nDo you want to convert it?" msgstr "Este es un proyecto Gambas 2.0\n\n¿Desea convertirlo?" #: Project.module:600 msgid "Do not open" msgstr "No abrir" #: Project.module:600 msgid "Open after all" msgstr "Abrir de todos modos" #: Project.module:600 msgid "This project seems to be already opened.\n\nOpening the same project twice can lead to data loss." msgstr "Este proyecto parece estar ya abierto.\n\nAbrir el proyecto dos veces puede hacer que se pierdan datos." #: Project.module:606 msgid "It cannot be converted." msgstr "No puede ser convertido." #: Project.module:606 msgid "This project is read-only." msgstr "Este proyecto es de sólo lectura." #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 msgid "This project includes compressed files." msgstr "" #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "Copiando proyecto dentro de un directorio temporal..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "Incapaz de crear el directorio temporal" #: Project.module:668 msgid "Converting project structure..." msgstr "Convirtiendo estructura del proyecto..." #: Project.module:698 msgid "Applying conversion..." msgstr "Aplicando conversión..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "Incapaz de aplicar conversión" #: Project.module:749 msgid "Cannot open project file :" msgstr "No se puede abrir el archivo de proyecto:" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "Faltan algunas las librerías utilizadas por el proyecto." #: Project.module:937 msgid "Cannot reload file." msgstr "No se puede volver a cargar el archivo." # gb-ignore #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" # gb-ignore #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "No es posible abrir un archivo binario." #: Project.module:2171 msgid "Cannot open file." msgstr "No es posible abrir el archivo." # gb-ignore #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "en la definición del formulario" #: Project.module:2571 msgid "Some project source files are in conflict.\nPlease solve them if you want to compile the project." msgstr "Algunos archivos fuente del proyecto están en conflicto.\nSolucionelos si quiere compilar el proyecto." #: Project.module:2575 msgid "Compiling project" msgstr "Compilando proyecto" #: Project.module:2600 msgid "

The compiler has crashed!

\nPlease report it to the Gambas bugtracker at:\n\nhttps://gambaswiki.org/bugtracker\n\nDo not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "El archivo ya existe." #: Project.module:2876 msgid "Directory already exists." msgstr "El directirio ya existe." #: Project.module:2888 msgid "Cannot link template file." msgstr "No es posible vincular el archivo de plantilla." #: Project.module:2894 msgid "Cannot copy template file." msgstr "No es posible copiar el archivo de plantilla." #: Project.module:2948 msgid "Forbidden directory name." msgstr "" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "El contenido del archivo VERSION es incorrecto." #: Project.module:3136 msgid "Cannot install library in &1." msgstr "No se puede instalar la biblioteca en &1." #: Project.module:3181 msgid "Making executable..." msgstr "Creando ejecutable..." #: Project.module:3191 msgid "Do you really want to increment the project version and make the executable again?" msgstr "" #: Project.module:3191 msgid "No change has been detected." msgstr "" #: Project.module:3292 msgid "Cannot make executable." msgstr "No es posible crear ejecutable." #: Project.module:3774 msgid "Some components are missing: &1" msgstr "Faltan algunos componentes: &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "No es posible escribir el archivo de proyecto." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "Incapaz de crear un icono en el escritorio." #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "El directorio se borrará en el próximo commit." #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "¡Debe definir una clase o formulario de inicio!" #: Project.module:4351 msgid "Please type a name." msgstr "Ingrese un nombre." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "Este nombre contiene un carácter prohibido:" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "Los nombres no pueden iniciar con un punto." #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "Este nombre ya está en uso. Elija otro." #: Project.module:4399 msgid "Space" msgstr "" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "El nombre de una clase debe empezar con una letra o un signo de subrayado, seguido de cualquier letra o dígito." #: Project.module:4444 msgid "Destination already exists." msgstr "El destino ya existe." #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "Incapaz de renombrar '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "Ingrese un nombre para el proyecto." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "El nombre de proyecto no puede comenzar con un punto." #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Caracteres no ASCII no están permitidos en el nombre del proyecto." #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "Los siguientes caracteres están prohibidos en un nombre de proyecto:" #: Project.module:4733 msgid "This project already exists." msgstr "Este proyecto ya existe." #: Project.module:4736 msgid "The project directory already exists." msgstr "El directorio del proyecto ya existe." #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "La carpeta de proyecto no puede ser creada porque un archivo con el mismo nombre ya existe." #: Project.module:4822 msgid "Unable to create source archive." msgstr "Incapaz de crear archivo fuente." #: Project.module:5138 msgid "Cannot copy file &1." msgstr "No es posible copiar el archivo &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "No es posible crear el enlace &1." #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "No es posible mover un directorio dentro de sí mismo." #: Project.module:5265 msgid "Cannot move file &1." msgstr "No es posible mover el archivo &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "Los siguientes archivos no pueden ser removidos:" #: Project.module:5960 msgid "Project cleanup..." msgstr "Limpieza del proyecto..." #: Project.module:5966 msgid "Project files conversion..." msgstr "Conversión de archivos del proyecto..." #: Project.module:5996 msgid "Unable to convert &1" msgstr "Incapaz de convertir &1" #: Project.module:6276 msgid "Unable to update forms." msgstr "No se puede actualizar los formularios." #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "El programa &1 no está instalado en el sistema" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "Los siguientes programas no están instalados en el sistema: &1." #: Project.module:6459 msgid "Unable to read component description file." msgstr "Incapaz de leer el fichero de descripción de componente." #: Project.module:6520 msgid "Cannot write component description file." msgstr "No es posible escribir el archivo de descripción del componente." #: Project.module:6581 msgid "Project templates" msgstr "Plantillas de proyecto" #: Project.module:6627 msgid "Unable to run terminal." msgstr "No se puede ejecutar el terminal." #: Save.module:57 msgid "Cannot save file !" msgstr "¡No es posible guardar el archivo!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Publicado &1" # gb-ignore #: Util.module:6 msgid "&1 B" msgstr "" # gb-ignore #: Util.module:8 msgid "&1 KiB" msgstr "" # gb-ignore #: Util.module:10 msgid "&1 MiB" msgstr "" # gb-ignore #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 msgid "Incorrect format" msgstr "" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:553 msgid "Do you really want to put this project under version control with &1?" msgstr "¿Realmente desea poner este proyecto bajo control de versiones con &1?" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "El proyecto no se pudo poner bajo control de versiones." #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "No se puede cambiar a la rama '&1'." #: VersionControl.module:674 msgid "With &1" msgstr "Con &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Existen &1 clases y &2 símbolos en todos los componentes de Gambas." #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "Esta página no existe en este lenguaje." #: WikiMarkdown.class:142 msgid "Since" msgstr "Desde" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Este componente no existe." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Esta clase no existe" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Este símbolo no existe." gambas-3.16.3/app/src/gambas3/.lang/fa.po000066400000000000000000005331151411575327000176640ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CFrmToForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CFrmToForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CVbpToProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CVbpToProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# Design.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/Design.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FColorChooser.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FColorChooser.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FComponent.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FCreateProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FCreateProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FFindList.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FFindList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FFontChooser.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FFontChooser.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FMakeExecutable.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FMakeExecutable.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FSelectIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FSelectIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# MColor.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/MColor.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.# # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /root/Desktop/gambas2-1.9.38/gambas2-1.9.38/app/src/gambas2/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2021-03-28 16:17 UTC\n" "PO-Revision-Date: 2006-10-10 07:02+0330\n" "Last-Translator: Nima Mohammadi \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "محیط توسعه یافته مجتمع برای گامباس" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 msgid "Static properties" msgstr "" #: CClassInfo.class:616 msgid "Static variables" msgstr "" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "ثابت ها" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "خصوصیات" #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "متد ها" #: CClassInfo.class:638 msgid "Events" msgstr "رویداد ها" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "این کلاس &1 هست." #: CClassInfo.class:681 msgid "creatable" msgstr "ساختنی" #: CClassInfo.class:686 msgid "This class is static." msgstr "این کلاس استاتیک می باشد." #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "این کلاس ساختنی نمی باشد." #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "این کلاس می تواند به عنوان یک &1 استفاده شود." #: CClassInfo.class:694 msgid "function" msgstr "تابع" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "خواندن" #: CClassInfo.class:699 msgid "write" msgstr "نوشتن" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "فقط خواندنی" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "شمارشی (enumerable)" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "این کلاس هست وارث" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 msgid "static function" msgstr "" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "بارگذاری اطلاعات از کامپوننت &1..." #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "بارگذاری اطلاعات از کامپوننت &1..." #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "کلاس ها" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "کلاس" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "توضیحات" #: CComponent.class:598 #, fuzzy msgid "This component is not stable yet." msgstr "این کلاس ساختنی نمی باشد." #: CComponent.class:600 #, fuzzy msgid "This component is deprecated." msgstr "این پروژه فقط خواندنی می باشد" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "نویسندگان" #: CComponent.class:621 msgid "Implements" msgstr "" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:648 msgid "Excludes" msgstr "" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "دسترسی پایگاه داده" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "برنامه نویسی شبکه" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:137 msgid "Report designer" msgstr "" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "کامپوننت" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:144 msgid "Application settings management" msgstr "" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "چیدمان" #: CDocumentation.class:147 #, fuzzy msgid "Graphical terminal applications development" msgstr "نرم افزار گرافیکی +GTK" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "کامپوننت" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "کامپوننت" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "فرم" #: CModule.class:29 msgid "Forms" msgstr "فرم ها" #: CModule.class:29 msgid "Gambas forms" msgstr "فرم های گامباس" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "فرم های گامباس" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "فرم" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "فرم ها" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "فرم های گامباس" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "فرم" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "فرم ها" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "لغو" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:560 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "بسته به خوبی ساخته شد." #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "پروژه" #: CProjectTree.class:373 msgid "Sources" msgstr "" #: CProjectTree.class:375 msgid "Connections" msgstr "" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "داده" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "ساخت منبع آرشیو" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "ساخت اجرایی" #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "فایل یا پوشه را نمی توان حذف کرد" #: CSoftware.class:664 msgid "yesterday" msgstr "" #: CSoftware.class:666 msgid "&1 days ago" msgstr "" #: CSoftware.class:672 msgid "last week" msgstr "" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 msgid "last month" msgstr "" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 msgid "on &1" msgstr "" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "خط جاری" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "پروژه ساخته نمی شود!" #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "پروژه ساخته نمی شود!" #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "آخرین پروژه ها" #: CVersionControlGit.class:394 msgid "Status" msgstr "" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 #, fuzzy msgid "Remote repository URL" msgstr "مخزن" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "تائید" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 #, fuzzy msgid "Remote revision" msgstr "حذف نمام عبارات" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "" #: Design.module:229 Project.module:2325 msgid "second" msgstr "" #: Design.module:231 Project.module:2327 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 msgid "The program has been terminated." msgstr "" #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "این پروژه موجود نیست." #: Design.module:1064 msgid "Output terminal" msgstr "" #: Design.module:1092 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "مجوز" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "درباره گامباس" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "آرگومان ها" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "بازنشانی‌" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "اجرا" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "بستن" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "انتخاب رنگ" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "سیستم" #: FColorChooser.form:40 msgid "Free" msgstr "آزاد" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "انتخاب قلم" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "بارگذاری مجدد" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&ویرایش" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "متن" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "تصویر" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "بریدن" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "کپی" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "چسباندن" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "بازگشت" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "دوباره" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "فرورفتگی" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "بدون فرورفتگی" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "باز" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "ذخیره" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "توضیح" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "بدون توضیح" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "انتخاب همه" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "برو به خط" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "یافتن بعدی" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "یافتن قبلی" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "نما" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "کد" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "قبلی" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "-" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "نوع" #: FConnectionEditor.class:61 msgid "Length" msgstr "" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "کامپایل کردن" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "نمایه" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "حذف‌" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "تغییر نام" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "واردات...‌" #: FConnectionEditor.form:217 msgid "Run query" msgstr "" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "جدید" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "پاک کردن" #: FConnectionEditor.form:309 msgid "Fields" msgstr "" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "افزودن‌" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "_پایین" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "بالا" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "" #: FConnectionEditor.form:389 msgid "New index" msgstr "" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "ویرایش" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "حذف" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "انتخاب همه" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "در آوردن از حالت انتخاب" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "تنظیمات" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "عرض" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "ارتفاع" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "ساختنی" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "پروژه ساخته نمی شود!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "لطفاً یک نام را تایپ کنید." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "پروژه جدید" #: FCreateProject.form:46 msgid "Project type" msgstr "" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "پوشه" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "خصوصیات پروژه" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "پروژه ترجمه پذیر می باشد." #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "مخزن" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "کنسول" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "-" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "مقدار" #: FDebugExpr.class:511 msgid "Key" msgstr "" #: FDebugExpr.class:517 msgid "Symbol" msgstr "نماد" #: FDebugExpr.form:33 msgid "Watch" msgstr "تماشا" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "خط" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "پرونده" #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "پیام" #: FDebugInfo.class:125 msgid "native code" msgstr "" #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "مشاهده عبارت" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "آیا می خواهید لیست عبارات را پاک کنید ؟" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1255 msgid "Current object" msgstr "" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "" #: FDebugInfo.class:1563 #, fuzzy msgid "Test has failed." msgstr "ساخت بسته شکست با شکست مواجه شد." #: FDebugInfo.class:1568 #, fuzzy msgid "Test has succeeded." msgstr "ساخت بسته شکست با شکست مواجه شد." #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "اشکال زدایی" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "حذف عبارت جاری" #: FDebugInfo.form:137 msgid "Add expression" msgstr "اضافه کردن عبارت" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "حذف تمام breakpoint ها" #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "-" #: FDebugInfo.form:220 #, fuzzy msgid "Disable" msgstr "متغیر" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "-" #: FDebugInfo.form:228 #, fuzzy msgid "Enable" msgstr "شمارشی (enumerable)" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "حذف تمام breakpoint ها" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:397 FMain.form:532 #, fuzzy msgid "Revert all changes" msgstr "حذف تمام breakpoint ها" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:474 msgid "Show search window" msgstr "" #: FDebugInfo.form:481 msgid "Search again" msgstr "" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "رشته جستجو شده یافت نشد." #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "ستون ها" #: FEditor.class:411 #, fuzzy msgid "Overwrite" msgstr "نوشتن" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "" #: FEditor.form:202 msgid "Sort procedures" msgstr "" #: FEditor.form:232 msgid "Go to" msgstr "برو به" #: FEditor.form:251 msgid "Find definition" msgstr "" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "اجرا تا خط جاری" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "-" #: FEditor.form:322 msgid "Watch expression" msgstr "مشاهده عبارت" #: FEditor.form:331 msgid "Open form" msgstr "" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "_چاپ" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "ویرایشگر" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "ذخیره فایل های اصلاح شده" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 #, fuzzy msgid "Previous modification" msgstr "قبلی" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "کاربر" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "اسم رمز" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "لطفاً آدرس پست الکترونیکی خود را وارد کنید." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "ناتوان در تغییر نام '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "ادامه" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "پوشه" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "پیمانه های گامباس" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "ویرایش خصوصیت لیست" #: FFontChooser.form:12 msgid "Select a font" msgstr "انتخاب قلم" #: FForm.class:136 msgid "Bad form file" msgstr "فرم فایل مناسب نمی باشد." #: FForm.class:284 msgid "Unknown control: &1" msgstr "" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "فایل باز نمی شود." #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "انتخاب" #: FForm.form:232 msgid "Select parent" msgstr "" #: FForm.form:245 msgid "Arrangement" msgstr "چیدمان" #: FForm.form:249 msgid "Bring to foreground" msgstr "ارسال به پس زمینه" #: FForm.form:256 msgid "Send to background" msgstr "ارسال به پیش زمینه" #: FForm.form:266 msgid "Horizontal" msgstr "افقی" #: FForm.form:273 msgid "Rows" msgstr "سطر ها" #: FForm.form:279 msgid "Vertical" msgstr "عمودی" #: FForm.form:286 msgid "Columns" msgstr "ستون ها" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "تراز بندی" #: FForm.form:311 msgid "Align to left" msgstr "تراز به چپ" #: FForm.form:317 msgid "Align to right" msgstr "تراز به راست" #: FForm.form:323 msgid "Align to top" msgstr "تراز به بالا" #: FForm.form:329 msgid "Align to bottom" msgstr "تراز به پایین" #: FForm.form:338 msgid "Same width" msgstr "هم پهنا" #: FForm.form:344 msgid "Same height" msgstr "هم ارتفاع" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "اولین‌" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "قبلی" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "بعدی" #: FForm.form:387 msgid "Last" msgstr "آخرین‌" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "ویرایشگر منو" #: FForm.form:407 msgid "Event" msgstr "رویداد" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "grid چرخشی" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "" #: FForm.form:786 msgid "Italic" msgstr "کج" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "خط زیر" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "پیش زمینه" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "سلسله مراتب" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "حرکت به بالا" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "حرکت به پایین" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "کاوشگر راهنما" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "ترجمه" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "معکوس افقی" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "معکوس عمودی" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "چرخش در عکس جهت ساعت" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "چرخش در جهت ساعت" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "انتخاب" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "ترجیحات" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "انتخاب" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "ترسیم" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "مستطیل" #: FImageEditor.form:608 msgid "Ellipse" msgstr "بیضی" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "تصویردانه" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 #, fuzzy msgid "Select gradient stop color" msgstr "انتخاب رنگ" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 msgid "Colorize" msgstr "" #: FImageProperty.form:400 #, fuzzy msgid "Desaturate" msgstr "ویژگیها" #: FImageProperty.form:408 msgid "Make transparent" msgstr "" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "خط" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "خط" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "اندازه" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "ترجمه" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "کلاس های گامباس" #: FImportFile.class:23 msgid "Gambas modules" msgstr "پیمانه های گامباس" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "پیمانه های گامباس" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "فایل های Picture" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "فایل باز نمی شود." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "ورود theme" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "همه فایل ها" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:78 msgid "Charset" msgstr "" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "لطفاً یک نام منو وارد کنید." #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "این پروژه در حال حاضر موجود است." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "ذخیره پروژه" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "ویرایش خصوصیت لیست" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "آیا از حذف این پوشه اطمینان دارید ؟" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "فایل یا پوشه را نمی توان حذف کرد" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:773 msgid "Sort history" msgstr "" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "" #: FMain.class:789 msgid "&Clear history" msgstr "&پاک کردن تاریخچه" #: FMain.class:969 msgid "New folder" msgstr "" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1904 msgid "Clean" msgstr "تمییز" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "فایل اصلاح شده است.\n" "\n" "تمام تغییرات شما از بین خواهد رفت." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "باز کردن پروژه" #: FMain.form:313 msgid "Open recent" msgstr "باز کردن آخرین ها" #: FMain.form:321 msgid "Open example" msgstr "باز کردن مثال" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "ذخیره پروژه" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "انتخاب پروژه" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "خروج" #: FMain.form:402 Project.module:6969 msgid "Save as" msgstr "" #: FMain.form:442 msgid "Compile" msgstr "کامپایل" #: FMain.form:449 msgid "Compile All" msgstr "کامپایل همه" #: FMain.form:459 msgid "Translate" msgstr "ترجمه" #: FMain.form:468 msgid "Make" msgstr "ساخت" #: FMain.form:472 msgid "Executable" msgstr "" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "" #: FMain.form:486 msgid "Installation package" msgstr "" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "ساخت" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:570 msgid "Refresh" msgstr "بازسازی" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "ایست" #: FMain.form:630 msgid "Stop" msgstr "توقف" #: FMain.form:637 msgid "Step" msgstr "مرحله" #: FMain.form:644 msgid "Forward" msgstr "به طرف جلو" #: FMain.form:651 msgid "Finish" msgstr "" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "" #: FMain.form:713 msgid "Current desktop" msgstr "" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "" #: FMain.form:770 msgid "Close all debug windows" msgstr "" #: FMain.form:808 msgid "Status bar" msgstr "" #: FMain.form:815 msgid "Hide menubar" msgstr "" #: FMain.form:839 msgid "Close all windows" msgstr "بستن تمام پنجره ها" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "جایگزینی" #: FMain.form:866 msgid "Browse project" msgstr "" #: FMain.form:873 msgid "Open a terminal" msgstr "" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "ترجیحات" #: FMain.form:924 msgid "Directory" msgstr "پوشه" #: FMain.form:929 msgid "Project link" msgstr "" #: FMain.form:938 msgid "Module" msgstr "پیمانه" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr "پیمانه های گامباس" #: FMain.form:1004 msgid "HTML file" msgstr "" #: FMain.form:1011 msgid "Style sheet" msgstr "" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "غیره...‌" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "اخیر" #: FMain.form:1059 msgid "Open in file manager" msgstr "" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "باز کردن پروژه" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "کپی مسیر فایل" #: FMain.form:1132 msgid "Startup class" msgstr "کلاس شروع شونده" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr "ذخیره فایل های اصلاح شده" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "فایل های ترجمه" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "ذخیره فایل های اصلاح شده" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "ترجمه" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "ساخت اجرایی" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "نکته روز" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "خصوصیات پروژه" #: FMain.form:1429 msgid "Refresh project" msgstr "بازسازی پروژه" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "ساخت اجرایی" #: FMain.form:1471 msgid "Make source archive" msgstr "ساخت منبع آرشیو" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "" #: FMain.form:1500 msgid "Properties sheet" msgstr "برگه خصوصیات" #: FMain.form:1509 msgid "Toolbox" msgstr "جعبه ابزار" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "" #: FMain.form:1551 msgid "Compile all" msgstr "کامپایل همه" #: FMain.form:1600 msgid "Finish current function" msgstr "" #: FMain.form:1616 #, fuzzy msgid "Show menubar" msgstr "نمایش شماره خطوط" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "&پرونده" #: FMain.form:1730 msgid "&Project" msgstr "&پروژه" #: FMain.form:1742 msgid "&Debug" msgstr "&اشکال زدایی" #: FMain.form:1754 msgid "&View" msgstr "&نمایش" #: FMain.form:1766 msgid "&Tools" msgstr "&ابزار" #: FMain.form:1778 msgid "&?" msgstr "&راهنما" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "پروژه جدید" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "برگه خصوصیات" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "نمایش tooltip هال" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "نرم افزارهای گامباس" #: FMakeExecutable.form:60 #, fuzzy msgid "Increment version" msgstr "مقدار خصوصیت صحیح نیست." #: FMakeExecutable.form:71 #, fuzzy msgid "Set version to" msgstr "مقدار خصوصیت صحیح نیست." #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "قرار دادن اطلاعات خطایابی در اجرایی" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "ساخت میان بر در دسکتاپ" #: FMakeExecutable.form:119 #, fuzzy msgid "Exclude test modules" msgstr "پیمانه های گامباس" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "" #: FMakeInstall.class:137 msgid "Min. version" msgstr "" #: FMakeInstall.class:138 msgid "Max. version" msgstr "" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "ساخت بسته برای &1" #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "بسته به خوبی ساخته شد." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "لطفاً نام خود را وارد کنید." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "لطفاً آدرس پست الکترونیکی خود را وارد کنید." #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "لطفاً یک نام منو وارد کنید." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "لطفاً محتوا اولین CHANGELOG را وارد کنید." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:558 msgid "Initial release" msgstr "" #: FMakeInstall.class:814 msgid "Menus" msgstr "" #: FMakeInstall.class:882 msgid "Groups" msgstr "گروهها" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "دسته‌ها" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "ساخت بسته منبع" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "بسته منبع" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "ساخت بسته منبع" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "لطفاً یک نام منو وارد کنید." #: FMenu.class:346 msgid "Bad menu name !" msgstr "نام منو مناسب نیست!" #: FMenu.class:352 msgid "Bad group name !" msgstr "نام گروه مناسب نیست!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "این منو خیلی طولانی است !" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "اصلاح شده" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 #, fuzzy msgid "Insert separator" msgstr "جداکننده پردازه ها" #: FMenu.form:104 msgid "Insert menu before" msgstr "" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "&درج" #: FMenu.form:113 msgid "Delete menu" msgstr "" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "&درج" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "بر روی درج برای اضافه کردن منو جدید کلیک کنید." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "دادگان" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "دادگان" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "اسم رمز" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "دادگان" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "انتخاب پروژه" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "مثال ها" #: FOption.class:4 msgid "Amber" msgstr "-" #: FOption.class:4 msgid "Amethyst" msgstr "-" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "-" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "چسباندن" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "-" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "بصری" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr ")پیش‌فرض(" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "رومیزی" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr ")پیش‌فرض(" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:267 msgid "Export a theme file" msgstr "" #: FOption.class:498 msgid "Select a theme file" msgstr "" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "شما نیاز به اجرا مجدد برنامه برای مشاهده تغییرات دارید." #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 msgid "Network is not available." msgstr "" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "فایل &1 را کپی نمی شود." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 msgid "Unable to install documentation." msgstr "" #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "کامپایل کردن" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "خط جاری" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "آیا از حذف این ترجمه اطمینان دارید ؟" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 #, fuzzy msgid "Identity" msgstr "فرورفتگی" #: FOption.form:350 msgid "Package maintainer" msgstr "" #: FOption.form:395 #, fuzzy msgid "Default license" msgstr "اندازه برگه پیش فرض" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "نه" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "بله" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "پروژه" #: FOption.form:456 msgid "Default tab size" msgstr "اندازه برگه پیش فرض" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "فضا(ها)" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 msgid "Activate version control" msgstr "" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "کامپایل کردن" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "ارسال به پیش زمینه" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "تصویر" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "پاک کردن این ترجمه" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "فایل های ترجمه" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "" #: FOption.form:670 msgid "Show documentation in popups" msgstr "" #: FOption.form:687 msgid "Always display optional messages" msgstr "" #: FOption.form:699 msgid "Documentation" msgstr "" #: FOption.form:710 msgid "Use offline documentation" msgstr "" #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "" #: FOption.form:787 msgid "Applications" msgstr "" #: FOption.form:798 msgid "Browser" msgstr "" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "برجسته کردن خط جاری" #: FOption.form:875 msgid "Highlight modified lines" msgstr "برجسته سازی خطوط ویرایش شده" #: FOption.form:892 msgid "Show line numbers" msgstr "نمایش شماره خطوط" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "جداکننده پردازه ها" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:960 msgid "Show Preview" msgstr "" #: FOption.form:978 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Code formatting" msgstr "" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 msgid "Control structure completion" msgstr "" #: FOption.form:1021 msgid "Local variable declaration" msgstr "" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "توضیحات" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "بستن تمام پنجره ها" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "" #: FOption.form:1155 msgid "Code snippets" msgstr "" #: FOption.form:1171 msgid "Activate code snippets" msgstr "" #: FOption.form:1232 msgid "Interface" msgstr "واسط" #: FOption.form:1249 msgid "Activate animations" msgstr "" #: FOption.form:1266 msgid "Show shadows" msgstr "" #: FOption.form:1283 msgid "Show tooltips" msgstr "نمایش tooltip هال" #: FOption.form:1300 msgid "Use utility windows" msgstr "" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 #, fuzzy msgid "Message style" msgstr "پیام" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 msgid "Debugger size" msgstr "" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "چاپ" #: FOption.form:1588 #, fuzzy msgid "Fixed font" msgstr "استفاده از یک فونت معین" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 #, fuzzy msgid "Themes" msgstr "چهره" #: FOption.form:1698 msgid "Icon theme" msgstr "تم icon ها" #: FOption.form:1714 #, fuzzy msgid "Highlighting theme" msgstr "برجسته سازی" #: FOption.form:1728 msgid "Import theme" msgstr "ورود theme" #: FOption.form:1734 msgid "Export theme" msgstr "صدور theme" #: FOutput.form:29 msgid "Console - Gambas" msgstr "کنسول - گامباس" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "باز کردن آخرین ها" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "خصوصیات پروژه" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "پردازش تصویر" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "ویرایش خصوصیت لیست" #: FProjectProperty.class:55 msgid "Variable" msgstr "متغیر" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "" #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:1000 msgid "Modules" msgstr "پیمانه" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "پیمانه های گامباس" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "تابع" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 #, fuzzy msgid "Executable size" msgstr "اندازه برگه پیش فرض" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 #, fuzzy msgid "Information about component" msgstr "بارگذاری اطلاعات از کامپوننت &1..." #: FProjectProperty.class:1039 msgid "Information about library" msgstr "" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "ساخت اجرایی" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "کامپایل" #: FProjectProperty.form:300 msgid "General" msgstr "عمومی" #: FProjectProperty.form:366 msgid "Component" msgstr "کامپوننت" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "عادی" #: FProjectProperty.form:373 msgid "Vendor" msgstr "" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "نگارش" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:418 msgid "Title" msgstr "-" #: FProjectProperty.form:452 #, fuzzy msgid "Information" msgstr "کامپایل کردن" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 msgid "Include information from" msgstr "" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 msgid "Exclude" msgstr "" #: FProjectProperty.form:642 msgid "Remove All" msgstr "حذف همه" #: FProjectProperty.form:649 msgid "Components" msgstr "کامپوننت ها" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "ترجیحات" #: FProjectProperty.form:748 msgid "Environment" msgstr "محیط" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "" #: FProjectProperty.form:827 msgid "Tab size" msgstr "اندازه سربرگ" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "کنترل های فرم public عمومی باشد." #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 #, fuzzy msgid "Add branch to version number" msgstr "مقدار خصوصیت صحیح نیست." #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "به‌روزرسانی" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "کاراکترهای ممنوعه در نام کنترل های می باشد." #: FProperty.class:383 msgid "This name is already in use." msgstr "این نام استفاده شده است." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "کاراکترهای ممنوعه در گروه کنترل ها می باشد." #: FProperty.class:469 msgid "Incorrect property value." msgstr "مقدار خصوصیت صحیح نیست." #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "هیچ" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "بسته به خوبی ساخته شد." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "مقدار خصوصیت صحیح نیست." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "آیا از بارگذاری مجدد این ترجمه اطمینان دارید ؟" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "انتخاب رنگ" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "فایل های Picture" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "توضیحات" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "اندازه سربرگ" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr "ذخیره فایل های اصلاح شده" #: FSave.form:43 msgid "Save All" msgstr "" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "رشته جستجو شده یک بار جایگزین شد." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "رشته جستجو شده &1 بار جایگزین شد." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "خط جاری" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "انواع داده" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "برجسته سازی" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:40 msgid "Image files" msgstr "" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "انتخاب picture" #: FSelectIcon.form:45 msgid "Stock" msgstr "موجودی" #: FSelectIcon.form:73 msgid "Size preview" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "ناشناس" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "انتخاب رنگ" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "بازیها" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "تابع" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "ویدیو" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "واسط" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "عبارت" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "لغو" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr "ناتوان در تغییر نام '&1'" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "ناتوان در تغییر نام '&1'" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr "ناتوان در تغییر نام '&1'" #: FSoftwareFarm.class:609 #, fuzzy msgid "&1 has been successfully installed." msgstr "بسته به خوبی ساخته شد." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "آیا از حذف این فایل اطمینان دارید ؟" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr "ناتوان در تغییر نام '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "فرم های گامباس" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "باز کردن آخرین ها" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "نمایش tooltip هال" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "نمایش tooltip هال" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "_پایین" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "ناتوان در تغییر نام '&1'" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "این پروژه در حال حاضر موجود است." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "ساخت اجرایی" #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "آیا از بارگذاری مجدد این ترجمه اطمینان دارید ؟" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "دادگان" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "انتخاب همه" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr "در آوردن از حالت انتخاب" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "ویرایش خصوصیت لیست" #: FText.form:29 msgid "Use a fixed font" msgstr "استفاده از یک فونت معین" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "اندازه برگه پیش فرض" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "مثال ها" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "grid چرخشی" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "ناتوان در خواندن نکته روز!" #: FTips.form:70 msgid "Show tips on startup" msgstr "نمایش نکته ها زمان شروع" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "ادامه" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Network" msgstr "شبکه‌بندی" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "باز کردن پروژه" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "کوچک" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 #, fuzzy msgid "Show deprecated controls" msgstr "نمایش tooltip هال" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "این پروژه خالی می باشد. چیزی برای ترجمه وجود ندارد." #: FTranslate.class:74 msgid "Language" msgstr "زبان" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "ترجمه" #: FTranslate.class:169 msgid "Translation files" msgstr "فایل های ترجمه" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "فایل ترجمه برای زبان '&1' خوانده نمی شود" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "ترجمه ذخیره نمی شود." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "آیا از حذف این ترجمه اطمینان دارید ؟" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "آیا از بارگذاری مجدد این ترجمه اطمینان دارید ؟" #: FTranslate.class:802 msgid "Export a translation" msgstr "صدور ترجمه" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "فایل ترجمه را نمی توان وارد کرد." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "همه چیز درست به نظر می رسد." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "" #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "فایل ترجمه را نمی توان وارد کرد." #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "آیا از حذف این ترجمه اطمینان دارید ؟" #: FTranslate.form:77 msgid "Project translation" msgstr "" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "پاک کردن این ترجمه" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "صدور ترجمه" #: FTranslate.form:232 msgid "Save translation" msgstr "" #: FTranslate.form:240 msgid "Verify the translation" msgstr "" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "یافتن رشته ترجمه نشده بعدی" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "یافتن رشته ترجمه نشده بعدی" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "یافتن رشته ترجمه نشده بعدی" #: FTranslate.form:340 msgid "Clear this translation" msgstr "پاک کردن این ترجمه" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "این رشته نباید ترجمه شود" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "کپی رشته ترجمه نشده" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "پاک کردن این ترجمه" #: FTranslate.form:480 msgid "Import a translation file" msgstr "" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "فایل های ترجمه" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "انتخاب قلم" #: FWelcome.class:69 msgid "New project..." msgstr "پروژه جدید..." #: FWelcome.class:71 msgid "Recent projects" msgstr "آخرین پروژه ها" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "بازسازی پروژه" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabic (مصر)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabic (تونس)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbaijani (آذربایجان)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgarian (بلغارستان)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalan (کاتالونیا - اسپانیا)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Welsh (انگلستان)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Czech (جمهوری چک)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danish (دانمارک)" #: Language.module:34 msgid "German (Germany)" msgstr "German (آلمان)" #: Language.module:35 msgid "German (Belgium)" msgstr "German (بلژیک)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Greek (یونان)" #: Language.module:41 msgid "English (common)" msgstr "English (معمول)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "English (انگلستان)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "English (ایالات متحده آمریکا)" #: Language.module:44 msgid "English (Australia)" msgstr "English (استرالیا)" #: Language.module:45 msgid "English (Canada)" msgstr "English (کانادا)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (هر جا!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "English (معمول)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spanish (اسپانیا)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spanish (آرژانتین)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (ایران)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "French (فرانسه)" #: Language.module:69 msgid "French (Belgium)" msgstr "French (بلژیک)" #: Language.module:70 msgid "French (Canada)" msgstr "French (کانادا)" #: Language.module:71 msgid "French (Switzerland)" msgstr "French (سوئیس)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galician (اسپانیا)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Hungarian (مجارستان)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croatian (کرواسی)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesian (اندونزی)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irish (ایرلند)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italian (ایتالیا)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japanese (ژاپن)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "Korean (کره)" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Dutch (هلند)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Dutch (بلژیک)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norwegian (نروژ)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (هند)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polish (لهستان)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portuguese (پرتغال)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portuguese (برزیل)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russian (روسیه)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovenian (اسلوانی)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbian (صربستان و مونتنگرو)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Swedish (سوئد)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turkish (ترکیه ای)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamese (ویتنامی)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallon (بلژیکی)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Simplified chinese (چین)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Traditional chinese (تایوان)" #: Language.module:220 msgid "Unknown" msgstr "ناشناس" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "فایل های ترجمه" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "فایل ذخیره نمی شود." #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "فایل ذخیره نمی شود." #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 #, fuzzy msgid "Component name must be a string" msgstr "برنامه نویسی کامپوننت" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "فقط خواندنی" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "سرریز پشته" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "فایل &1 را کپی نمی شود." #: MErrorMessage.module:242 msgid "Unknown error" msgstr "" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "ارسال به پیش زمینه" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "توضیحات" #: MTheme.module:6 msgid "Current line" msgstr "خط جاری" #: MTheme.module:6 msgid "Data types" msgstr "انواع داده" #: MTheme.module:6 msgid "Editing line" msgstr "خط در حال ویرایش" #: MTheme.module:6 msgid "Errors" msgstr "خطاها" #: MTheme.module:6 msgid "Highlighting" msgstr "برجسته سازی" #: MTheme.module:6 msgid "Keywords" msgstr "لغات کلیدی" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "متن معمولی" #: MTheme.module:6 msgid "Numbers" msgstr "اعداد" #: MTheme.module:6 msgid "Operators" msgstr "عملگرها" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "رشته ها" #: MTheme.module:6 msgid "Subroutines" msgstr "زیر روال ها" #: MTheme.module:6 msgid "Symbols" msgstr "علائم" #: Package.module:85 msgid "'&1' is missing." msgstr "" #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "ذخیره فایل CHANGELOG" #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "ساخت بسته برای &1" #: Package.module:830 msgid "The package build has failed." msgstr "ساخت بسته شکست با شکست مواجه شد." #: Package.module:903 msgid "Making build directory." msgstr "" #: Package.module:962 msgid "Creating desktop file..." msgstr "" #: Package.module:970 msgid "Sources are being debianizated." msgstr "" #: Package.module:1175 msgid "Creating package..." msgstr "" #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "" #: Package.module:1483 msgid "Creating source package." msgstr "ساخت بسته منبع" #: Package.module:1507 msgid "Creating .spec file." msgstr "ساخت فایل spec." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "" #: Package.module:2441 #, fuzzy msgid "'makepkg' has failed." msgstr "ساخت بسته شکست با شکست مواجه شد." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 #, fuzzy msgid "Unsupported source archive format." msgstr "ساخت منبع آرشیو" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "" #: Project.module:239 msgid "Basic" msgstr "پایه‌ای" #: Project.module:241 msgid "Drawing" msgstr "" #: Project.module:244 msgid "Miscellaneous" msgstr "متفرقه" #: Project.module:245 msgid "Networking" msgstr "شبکه‌بندی" #: Project.module:246 msgid "OpenGL" msgstr "" #: Project.module:248 msgid "Sound" msgstr "صوت" #: Project.module:250 msgid "Controls" msgstr "" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "" #: Project.module:545 msgid "This project does not exist." msgstr "این پروژه موجود نیست." #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "" #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "باز نکن" #: Project.module:600 msgid "Open after all" msgstr "باز کردن بعد از همه" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:606 msgid "It cannot be converted." msgstr "" #: Project.module:606 msgid "This project is read-only." msgstr "این پروژه فقط خواندنی می باشد" #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "این پروژه موجود نیست." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr "فایل های پروژه باز نمی شود: \n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "فایل باز نمی شود." #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "" #: Project.module:2171 msgid "Cannot open file." msgstr "فایل باز نمی شود." #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2575 msgid "Compiling project" msgstr "کامپایل پروژه" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "فایل در حال حاضر موجود می باشد." #: Project.module:2876 msgid "Directory already exists." msgstr "پوشه در حال حاضر موجود می باشد" #: Project.module:2888 msgid "Cannot link template file." msgstr "" #: Project.module:2894 msgid "Cannot copy template file." msgstr "فایل قالب کپی نمی شود." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "کاراکترهای ممنوعه در نام کنترل های می باشد." #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 msgid "Cannot install library in &1." msgstr "" #: Project.module:3181 msgid "Making executable..." msgstr "ساخت اجرایی..." #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr "آیا از حذف این پوشه اطمینان دارید ؟" #: Project.module:3191 msgid "No change has been detected." msgstr "" #: Project.module:3292 msgid "Cannot make executable." msgstr "" #: Project.module:3774 msgid "Some components are missing: &1" msgstr "بعضی از کامپوننت ها موجود نیستند : &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "فایل های پروژه نوشته نمی شوند." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "شما باید یک کلاس یا یک فرم شروع شونده تعریف کنید." #: Project.module:4351 msgid "Please type a name." msgstr "لطفاً یک نام را تایپ کنید." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "در حال حاضر این نام استفاده شده است.نام دیگری انتخاب کنید." #: Project.module:4399 #, fuzzy msgid "Space" msgstr "فضا(ها)" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "ناتوان در تغییر نام '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "لطفاً یک نام پروژه را وارد کنید." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "نام پروژه نمی تواند با یک نقطه شروع شود." #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "کاراکترهای غیر اسکی در نام پروژه ممنوع می باشند." #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "وجود این کاراکترها در نام پروژه ممنوع می باشد : ? * / \\ SPACE" #: Project.module:4733 msgid "This project already exists." msgstr "این پروژه در حال حاضر موجود است." #: Project.module:4736 msgid "The project directory already exists." msgstr "پوشه پروژه در حال حاضر موجود می باشد." #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "پوشه پروژه نمی تواند ساخته شود زیرا یک فایل با همان نام در حال حاضر موجود می باشد." #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "فایل &1 را کپی نمی شود." #: Project.module:5186 msgid "Cannot create link &1." msgstr "" #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:5265 msgid "Cannot move file &1." msgstr "فایل &1 جا به جا نمی شود." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "" #: Project.module:5966 msgid "Project files conversion..." msgstr "" #: Project.module:5996 msgid "Unable to convert &1" msgstr "" #: Project.module:6276 msgid "Unable to update forms." msgstr "" #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 msgid "Unable to read component description file." msgstr "" #: Project.module:6520 msgid "Cannot write component description file." msgstr "" #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "خصوصیات پروژه" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr "ناتوان در تغییر نام '&1'" #: Save.module:57 msgid "Cannot save file !" msgstr "فایل ذخیره نمی شود." #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 #, fuzzy msgid "Incorrect format" msgstr "مقدار خصوصیت صحیح نیست." #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "آیا از حذف این پوشه اطمینان دارید ؟" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "&درج" #~ msgid "

Authors

\n" #~ msgstr "

پدیدآورندگان

\n" #~ msgid "About Gambas..." #~ msgstr "درباره گامباس" #~ msgid "Arguments" #~ msgstr "آرگومان ها" #~ msgid "Author(s)" #~ msgstr "نویسنده)گان(" #~ msgid "Blend" #~ msgstr "ترکیب کردن" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "بر روی یک فرم جهت نمایش سلسله مراتب کنترل های آن کلیک کنید." #~ msgid "Command-line application" #~ msgstr "نرم افزار خط فرمان" #, fuzzy #~ msgid "Declarations" #~ msgstr "توضیحات" #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr "آیا می خواهید لیست عبارات را پاک کنید ؟" #~ msgid "Edit text property" #~ msgstr "ویرایش خصوصیت متن" #~ msgid "Existing" #~ msgstr "موجودی" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "Internationalization" #~ msgstr "محلی سازی" #, fuzzy #~ msgid "No argument" #~ msgstr "آرگومان ها" #~ msgid "OpenGL programming" #~ msgstr "برنامه نویسی OpenGL" #~ msgid "QT graphical application" #~ msgstr "نرم افزار گرافیکی QT" #~ msgid "Regular expressions" #~ msgstr "عبارات با قاعده" #~ msgid "Remove current breakpoint" #~ msgstr "حذف breakpoint جاری" #~ msgid "SDL application" #~ msgstr "نرم افزار SDL" #~ msgid "Select a theme" #~ msgstr "انتخاب یک theme" #~ msgid "Show only components used in project" #~ msgstr "تنها کامپوننت هایی را نمایش بده که در این پروژه استفاده شده اند." #~ msgid "Thanks to" #~ msgstr "با تشکر از" #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "فرم اصلاح شده است.\n" #~ "\n" #~ "تمام تغییرات شما از بین خواهد رفت." #~ msgid "Visual Basic™ conversion help" #~ msgstr "راهنمای تبدیلات ویژوال بیسیک" #~ msgid "XML / XSLT programming" #~ msgstr "برنامه نویسی XML / XSLT" gambas-3.16.3/app/src/gambas3/.lang/fr.po000066400000000000000000006253771411575327000177210ustar00rootroot00000000000000# #-#-#-#-# CClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CConfig.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.16.90\n" "PO-Revision-Date: 2021-07-05 23:36 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Environnement de développement intégré pour Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Définir un signet" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Effacer tous les signets" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Signet précédent" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Signet suivant" #: CClassInfo.class:616 msgid "Static properties" msgstr "Propriétés statiques" #: CClassInfo.class:617 msgid "Static variables" msgstr "Variables statiques" #: CClassInfo.class:618 msgid "Static methods" msgstr "Méthodes statiques" #: CClassInfo.class:619 MTheme.module:6 msgid "Constants" msgstr "Constantes" #: CClassInfo.class:636 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Propriétés" #: CClassInfo.class:637 msgid "Variables" msgstr "Variables" #: CClassInfo.class:638 msgid "Methods" msgstr "Méthodes" #: CClassInfo.class:639 msgid "Events" msgstr "Evènements" #: CClassInfo.class:661 msgid "This class reimplements &1" msgstr "Cette class réimplémente &1" #: CClassInfo.class:663 msgid "This class inherits &1" msgstr "Cette class hérite de &1" #: CClassInfo.class:669 msgid "in &1" msgstr "dans &1" #: CClassInfo.class:677 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Cette classe peut être utilisée comme un objet en créant une instance cachée à la demande." #: CClassInfo.class:682 msgid "This class is &1." msgstr "Cette classe est &1." #: CClassInfo.class:682 msgid "creatable" msgstr "instanciable" #: CClassInfo.class:687 msgid "This class is static." msgstr "Cette classe est statique." #: CClassInfo.class:689 msgid "This class is not creatable." msgstr "Cette classe n'est pas instanciable." #: CClassInfo.class:695 msgid "This class can be used as a &1." msgstr "Cette classe peut être utilisée comme &1." #: CClassInfo.class:695 msgid "function" msgstr "fonction" #: CClassInfo.class:700 msgid "This class acts like a &1 / &2 array." msgstr "Cette classe se comporte comme un tableau accessible en &1 / &2." #: CClassInfo.class:700 msgid "read" msgstr "lecture" #: CClassInfo.class:700 msgid "write" msgstr "écriture" #: CClassInfo.class:702 msgid "This class acts like a &1 array." msgstr "Cette classe se comporte comme un tableau accessible en &1." #: CClassInfo.class:702 msgid "write-only" msgstr "écriture seule" #: CClassInfo.class:705 Project.module:1750 msgid "read-only" msgstr "lecture seule" #: CClassInfo.class:710 msgid "This class is &1 with the FOR EACH keyword." msgstr "Cette classe est &1 à l'aide du mot-clef FOR EACH." #: CClassInfo.class:710 msgid "enumerable" msgstr "énumérable" #: CClassInfo.class:868 msgid "This class reimplements" msgstr "Cette classe réimplémente" #: CClassInfo.class:870 msgid "This class inherits" msgstr "Cette classe hérite de" #: CClassInfo.class:885 msgid "This class is virtual." msgstr "Cette class est virtuelle." #: CClassInfo.class:887 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Cette classe peut s'utiliser comme un objet, auquel cas une instance cachée sera créée automatiquement." #: CClassInfo.class:912 msgid "static function" msgstr "fonction statique" #: CClassInfo.class:919 msgid "This class acts like a &1 / &2 static array." msgstr "Cette classe se comporte comme un tableau statique en &1 / &2." #: CClassInfo.class:921 msgid "This class acts like a &1 static array." msgstr "Cette classe se comporte comme un tableau statique en &1." #: CClassInfo.class:933 msgid "This class is &1 with the &2 keyword." msgstr "Cette classe est &1 à l'aide du mot-clef &2." #: CClassInfo.class:933 msgid "statically enumerable" msgstr "énumérable statiquement" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "Chargement des informations sur le composant &1..." #: CComponent.class:151 msgid "Loading information on project..." msgstr "Chargement des informations sur le projet..." #: CComponent.class:525 FProjectProperty.class:1004 msgid "Classes" msgstr "Classes" #: CComponent.class:569 FDebugInfo.class:45 FMain.form:952 msgid "Class" msgstr "Classe" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:328 msgid "Description" msgstr "Description" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "Ce composant n'est pas encore stable." #: CComponent.class:600 msgid "This component is deprecated." msgstr "Ce composant est déprécié." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Auteur" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Auteurs" #: CComponent.class:621 msgid "Implements" msgstr "Implémente" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Nécessite" #: CComponent.class:648 msgid "Excludes" msgstr "Exclut" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "Classes natives internes" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "Analyseur des arguments du programme" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Bibliothèque graphique Cairo" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "Dessin de graphes" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "Gestion des polygones basée sur la bibliothèque Clipper" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "Gestion des nombres complexes" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "Compression et décompression" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "Pilote de compression bzlib2" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "Pilote de compression zlib" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "Pilote de compression zstd" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "Chiffrement MD5/DES/SHA" #: CDocumentation.class:62 msgid "More data containers" msgstr "Conteneurs de données supplémentaires" #: CDocumentation.class:63 msgid "Database access" msgstr "Accès aux bases de données" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "Contrôles liés aux données" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "Pilote de base de données MySQL" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "Pilote de base de données ODBC" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "Pilote de base de données PostgreSQL" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "Pilote de base de données SQLite 2" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "Pilote de base de données SQLite 3" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "Debogueur intégré" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "Composant de gestion de bureau" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "Support de la bibliothèque X-Window" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "Support du coffre-fort Gnome pour le composant de gestion de bureau" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "Interfaçage avec D-Bus" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "Evaluateur d'expressions" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "Routines de coloration syntaxique" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "Controles supplémentaires pour les composants graphiques" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "Boîtes de dialogue standard améliorées" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "Éditeur de texte avec coloration syntaxique" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "Interface multi-documents" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "Formulaire de prévisualisation et d'impression générique" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "Thème d'icônes par défaut" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "Emulateur de terminal" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "Bibliothèque d'arithmétique multi-précision GNU" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "Bibliothèque scientifique GNU" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "Bibliothèque GTK+2" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL avec GTK+" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "Bibliothèque GTK+3" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "Composant de navigateur web pour GTK+3" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "Sélection du composant graphique selon le bureau" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "Sélection du composant graphique OpenGL selon le bureau" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "Sélection du composant de navigateur web selon le bureau" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "Sélection du composant QT4 ou QT5" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "Sélection du composant OpenGL selon le bureau" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "Sélection du composant WebKit QT4 ou QT5" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "Composant de gestion des icônes de notifications système" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "Server HTTP embarqué" #: CDocumentation.class:99 msgid "Image management" msgstr "Gestion des images" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "Composant de filtrage d'images" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "Gestion des images basée sur la bibliothèque Imlib2" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "Chargement et sauvegarde d'images" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "Surveillance des évènements du système de fichier" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "Outils XML basés sur la bibliothèque libxml" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "Système de log flexible" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "Afficheur de plans depuis le réseau" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "Syntaxe de balisage Markdown Gambas" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "Composant multimedia GStreamer" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "Contrôles multimedia" #: CDocumentation.class:110 msgid "Memcached client" msgstr "Client Memcached" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "Gestion du format MIME basée sur la bibliothèque GMime" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "Routines spécifiques pour MySQL" #: CDocumentation.class:113 msgid "NCurses library" msgstr "Bibliothèque NCurses" #: CDocumentation.class:114 msgid "Network programming" msgstr "Programmation réseau" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "Gestion de protocoles réseaux de haut-niveau" #: CDocumentation.class:116 msgid "POP3 client" msgstr "Client POP3" #: CDocumentation.class:117 msgid "SMTP client" msgstr "Client SMTP" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "Bibliothèque audio 3D OpenAL" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "Programmation 3D avec OpenGL" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "Composant utilitaire OpenGL" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "Gestion des shaders OpenGL" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Moteur OpenGL simplifié basé sur le format MD2" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "Routines de la bibliothèque OpenSSL" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "Analyseur d'options de ligne de commande GNU" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Expression rationnelles compatibles avec Perl" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "Lecture de PDF basée sur la bibliothèque Poppler" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "Bibliothèque QT4" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "Contrôles supplémentaires pour le composant QT4" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "Composant WebKit de QT4" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL avec QT4" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "Bibliothèque QT5" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "Composant WebKit de QT5" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "Composant de navigateur web pour QT5" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL avec QT5" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "Contrôles supplémentaires pour le composant QT5" #: CDocumentation.class:137 msgid "Report designer" msgstr "Générateur d'états" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "Bibliothèque de gestion des scanners basée sur SANE" #: CDocumentation.class:140 msgid "SDL library" msgstr "Bibliothèque SDL" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "Gestion du son et du CD-ROM basé sur la bibliothèque SDL" #: CDocumentation.class:142 msgid "SDL2 component" msgstr "Composant SDL2" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "Composant audio SDL2" #: CDocumentation.class:144 msgid "Application settings management" msgstr "Gestion des fichiers de configuration" #: CDocumentation.class:145 msgid "Signals management" msgstr "Gestion des signaux" #: CDocumentation.class:146 msgid "Terminal management" msgstr "Gestion du terminal" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "Développement d'application graphiques pour terminaux" #: CDocumentation.class:148 msgid "Unit tests component" msgstr "Réalisation de tests unitaires" #: CDocumentation.class:149 msgid "Utility component" msgstr "Routines utilitaires" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "Routines utilitaires pour les applications Web" #: CDocumentation.class:151 msgid "Video capture" msgstr "Capture vidéo" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Compatibilité avec Visual Basic" #: CDocumentation.class:153 msgid "XML tools" msgstr "Outils XML" #: CDocumentation.class:154 msgid "HTML generator" msgstr "Générateur HTML" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "Protocole XML-RPC" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "Outils XSLT basés sur libxslt et libxml" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Outils pour les applications Web" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "Générateur et analyseur de flux web" #: CDocumentation.class:159 msgid "Web application development" msgstr "Développement d'applications Web" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "Développement d'applications Web utilisant des processus comme sessions" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "Gestion de formulaires graphiques" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "Gestion de la boucle d'évènements" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "Affichage OpenGL" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "Nombres complexes" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "Gestion du XML" #: CInsertColor.class:295 FEditor.form:213 FTextEditor.form:244 msgid "Insert color" msgstr "Insérer une couleur" #: CInsertDate.class:58 FEditor.form:567 FTextEditor.form:588 msgid "Insert today's date" msgstr "Insérer la date du jour" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "&1 : &2" #: CLibraryInfo.class:206 FDebugInfo.class:52 FMakeExecutable.form:43 FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "Emplacement" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "ATTENTION ! Bibliothèque introuvable." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Fournit" #: CModule.class:29 FEditor.form:420 FForm.form:472 FMain.form:959 FToolBox.class:26 msgid "Form" msgstr "Formulaire" #: CModule.class:29 msgid "Forms" msgstr "Formulaires" #: CModule.class:29 msgid "Gambas forms" msgstr "Formulaires Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Pages web Gambas" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "Page Web" #: CModule.class:30 msgid "WebPages" msgstr "Pages Web" #: CModule.class:31 msgid "Gambas reports" msgstr "États Gambas" #: CModule.class:31 FMain.form:973 FToolBox.class:26 msgid "Report" msgstr "État" #: CModule.class:31 msgid "Reports" msgstr "États" #: CModule.class:32 msgid "Gambas web forms" msgstr "Formulaires Web Gambas" #: CModule.class:32 FMain.form:980 FToolBox.class:26 msgid "WebForm" msgstr "Formulaire Web" #: CModule.class:32 msgid "WebForms" msgstr "Formulaires Web" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Formulaires de terminal Gambas" #: CModule.class:33 FMain.form:987 FToolBox.class:26 msgid "TermForm" msgstr "Formulaire de terminal" #: CModule.class:33 msgid "TermForms" msgstr "Formulaires de terminal" #: CProfile.class:114 msgid "Evaluator" msgstr "Évaluateur" #: CProfile.class:116 msgid "Event loop" msgstr "Boucle d'évènements" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Les exemples sont stockés sur le serveur de la logithèque de Gambas. Cliquez &1 pour accéder à la logithèque et les télécharger..." #: CProjectList.class:108 msgid "here" msgstr "ici" #: CProjectList.class:234 msgid "IDE extensions" msgstr "Extension de l'EDI" #: CProjectList.class:553 CVersionControlGit.class:448 CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:456 FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 FMain.class:260 FMakeExecutable.form:172 FMakeInstall.class:376 FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 FOption.class:855 FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:64 FProjectProperty.form:1021 FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 FSearch.class:950 FSelectComponent.form:39 FSelectExtraFile.form:43 FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:292 FText.form:40 FTranslate.class:688 FVersionControl.form:130 FWebFontChooser.form:129 Project.module:582 VersionControl.module:432 msgid "Cancel" msgstr "Annuler" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "Voulez-vous vraiment désinstaller ce logiciel ?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "Désinstaller" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "Impossible de désinstaller le logiciel :" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "Le logiciel a été désinstallé avec succès." #: CProjectTree.class:98 msgid "Files" msgstr "Fichiers" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 FSearch.class:129 FSelectIcon.form:32 msgid "Project" msgstr "Projet" #: CProjectTree.class:373 msgid "Sources" msgstr "Sources" #: CProjectTree.class:375 msgid "Connections" msgstr "Connexions" #: CProjectTree.class:376 msgid "Public" msgstr "Public" #: CProjectTree.class:377 FToolBox.class:26 msgid "Data" msgstr "Données" #: CRecentProject.class:68 FMain.class:754 msgid "Today" msgstr "Aujourd'hui" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Hier" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Avant-hier" #: CRecentProject.class:74 msgid "This week" msgstr "Cette semaine" #: CRecentProject.class:76 msgid "This month" msgstr "Ce mois-ci" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Téléchargement annulé" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "La somme de contrôle du paquet téléchargé est invalide." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Impossible de décompresser l'archive source." #: CSoftware.class:361 msgid "Abort" msgstr "Abandonner" #: CSoftware.class:361 FMain.class:2793 FMenu.class:99 msgid "Ignore" msgstr "Ignorer" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Les composants suivants sont nécessaires :" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "Impossible de compiler le projet." #: CSoftware.class:396 msgid "Unable to make executable." msgstr "Impossible de générer l'exécutable." #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "Impossible d'installer le répertoire source" #: CSoftware.class:675 msgid "yesterday" msgstr "hier" #: CSoftware.class:677 msgid "&1 days ago" msgstr "Il y a &1 jours" #: CSoftware.class:683 msgid "last week" msgstr "la semaine dernière" #: CSoftware.class:685 msgid "&1 weeks ago" msgstr "il y a &1 semaines" #: CSoftware.class:691 msgid "last month" msgstr "le mois dernier" #: CSoftware.class:693 msgid "&1 months ago" msgstr "il y a &1 mois" #: CSoftware.class:699 msgid "last year" msgstr "l'année dernière" #: CSoftware.class:701 msgid "on &1" msgstr "en &1" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "Impossible d'envoyer le projet." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "Répertoire racine local" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "Dernière publication" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "Auteur de la dernière publication" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "Date de la dernière publication" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "Branche courante" #: CVersionControlGit.class:368 msgid "Origin" msgstr "Origine" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "La branche courante est à-jour." #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "Un fichier à publier dans la branche courante." #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "&1 fichiers à publier dans la branche courante." #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "Aucun dans le projet courant." #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "Un dans le projet courant" #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "&1 dans le projet courant." #: CVersionControlGit.class:394 msgid "Status" msgstr "État" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "URL du référentiel distant" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "Un nouveau référentiel Git sera créé pour ce projet." #: CVersionControlGit.class:448 FColorChooser.form:67 FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 FReportCoordChooser.form:32 FReportPaddingChooser.form:69 FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 FWebFontChooser.form:123 Project.module:2645 msgid "OK" msgstr "OK" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "Résolution du conflit." #: CVersionControlGit.class:511 FConnectionEditor.class:842 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Date" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "Révision" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "Révision distante" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "Auteur de la dernière publication distante" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "Date de la dernière publication distante" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "La police Gambas est publiée sous licence « SIL Open Font License »." #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "Ce programme est publié sous la « Licence Publique Générale GNU »." #: Design.module:227 Project.module:2324 msgid "first" msgstr "premier" #: Design.module:229 Project.module:2326 msgid "second" msgstr "deuxième" #: Design.module:231 Project.module:2328 msgid "third" msgstr "troisième" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "Le programme a été interrompu par CTRL+C." #: Design.module:464 msgid "The program has been terminated." msgstr "Le programme a été terminé." #: Design.module:473 msgid "The program has returned\nthe value: &1" msgstr "Le programme a retourné\nla valeur : &1" #: Design.module:745 msgid "The project has no test module." msgstr "Le projet n'a pas de module de test." #: Design.module:1065 msgid "Output terminal" msgstr "Terminal de sortie" #: Design.module:1098 msgid "No terminal emulator found." msgstr "Aucun émulateur de terminal n'a été trouvé." #: Design.module:1098 msgid "Unable to start project." msgstr "Impossible de démarrer le projet." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licence" #: FAbout.class:241 msgid "Financial support" msgstr "Aide financière" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "À propos de Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "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 publiée par la Free Software Foundation; soit la version 2, soit (à votre choix) toute version ultérieure.

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" #: FArguments.form:13 FMain.form:1799 msgid "Run with arguments" msgstr "Démarrer avec des arguments" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 FTestSuite.form:161 msgid "Reset" msgstr "Réinitialiser" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Démarrer" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:463 FEditor.form:378 FFileInfoVC.form:81 FFileProperty.form:46 FForm.form:455 FImageEditor.form:395 FMain.form:412 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 FTestSuite.form:154 FTextEditor.form:407 FTips.form:87 FTranslate.form:409 msgid "Close" msgstr "Fermer" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 FReportBrushChooser.form:49 msgid "Color" msgstr "Couleur" #: FColorChooser.class:86 msgid "R" msgstr "R" #: FColorChooser.class:87 msgid "G" msgstr "V" #: FColorChooser.class:88 msgid "B" msgstr "B" #: FColorChooser.form:15 msgid "Select a color" msgstr "Choisissez une couleur" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Système" #: FColorChooser.form:40 msgid "Free" msgstr "Libre" #: FComponentChooser.class:352 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "Non terminé mais stable" #: FComponentChooser.class:354 FProjectProperty.form:479 msgid "Experimental" msgstr "Expérimental" #: FComponentChooser.class:356 msgid "Stable" msgstr "Stable" #: FComponentChooser.class:358 FProjectProperty.form:479 FToolBox.class:26 msgid "Deprecated" msgstr "Déprécié" #: FComponentChooser.class:578 msgid "This component is required by the following library:

&1" msgstr "Ce composant est requis par la bibliothèque suivante :

&1" #: FComponentChooser.class:580 msgid "This component is required by the following libraries:

&1" msgstr "Ce composant est requis par les bibliothèques suivantes :

&1" #: FComponentChooser.class:589 msgid "This component is required by:

&1" msgstr "Ce composant est requis par :

&1" #: FComponentChooser.class:590 msgid "Keep" msgstr "Conserver" #: FComponentChooser.class:590 FDebugInfo.form:235 msgid "Remove all" msgstr "Tout supprimer" #: FComponentChooser.class:695 msgid "These components are incompatible:
&1." msgstr "Ces composants sont incompatibles entre eux:
&1." #: FComponentChooser.class:708 msgid "The &1 component needs one of the following components:
&2." msgstr "Le composant &1 nécessite un des composants suivants:
&2." #: FComponentChooser.class:715 msgid "The &1 component needs the &2 component." msgstr "Le composant &1 nécessite le composant &2." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Choisissez un composant" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Afficher les composants dépréciés" #: FComponentChooser.form:103 FConflictEditor.form:293 FConnectionEditor.form:120 FEditor.form:362 FForm.form:439 FHelpBrowser.form:78 FImageEditor.form:378 FMain.form:387 FTextEditor.form:391 FTranslate.form:93 Project.module:924 msgid "Reload" msgstr "Recharger" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:336 FTextEditor.form:782 msgid "Zoom in" msgstr "Zoom avant" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:344 FTextEditor.form:789 msgid "Zoom out" msgstr "Zoom arrière" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:796 msgid "No zoom" msgstr "Taille normale" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Editer" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Ce fichier est en conflit. Vous devez résoudre ce conflit afin de pouvoir l'utiliser de nouveau." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Impossible de charger le fichier :" #: FConflict.class:139 FDebugInfo.class:55 FImageEditor.form:622 msgid "Text" msgstr "Texte" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 Project.module:243 msgid "Image" msgstr "Image" #: FConflict.class:197 msgid "The file has been modified.\nDo you really want to close the dialog?" msgstr "Le fichier a été modifié.\nDésirez-vous réellement fermer la boite de dialogue ?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Tous les conflits ne sont pas résolus." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Impossible de résoudre le conflit." #: FConflict.class:259 msgid "The file has been modified.\nDo you really want to open another file?" msgstr "Le fichier a été modifié.\nDésirez-vous réellement ouvrir un autre fichier ?" #: FConflict.class:267 msgid "Conflict files" msgstr "Fichiers en conflits" #: FConflict.form:31 msgid "Version conflict" msgstr "Conflit de version" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 FEditor.form:132 FForm.form:165 FImageEditor.form:139 FMain.form:1079 FMenu.form:158 FProjectVersion.form:234 FTextEditor.form:147 msgid "Cut" msgstr "Couper" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 FEditor.form:139 FForm.form:172 FImageEditor.form:147 FList.form:99 FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 FProjectVersion.form:240 FSystemInfo.form:38 FTextEditor.form:154 FTranslate.form:114 msgid "Copy" msgstr "Copier" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 FEditor.form:146 FForm.form:185 FImageEditor.form:154 FList.form:105 FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 FProjectVersion.form:246 FTextEditor.form:161 msgid "Paste" msgstr "Coller" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 FEditor.form:115 FFieldChooser.form:127 FForm.form:148 FImageEditor.form:120 FList.form:111 FOption.form:1741 FProjectVersion.form:252 FTextEditor.form:130 msgid "Undo" msgstr "Annuler" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 FEditor.form:122 FForm.form:155 FImageEditor.form:128 FProjectVersion.form:258 FTextEditor.form:137 msgid "Redo" msgstr "Rétablir" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:586 FMenu.form:126 FProjectVersion.form:264 FTextEditor.form:607 msgid "Indent" msgstr "Indenter" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:594 FMenu.form:133 FProjectVersion.form:270 FTextEditor.form:615 msgid "Unindent" msgstr "Désindenter" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 FProjectChooser.form:70 msgid "Open" msgstr "Ouvrir" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 FEditor.form:368 FForm.form:445 FImageEditor.form:385 FMain.form:396 FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:397 FTranslate.form:232 msgid "Save" msgstr "Enregistrer" #: FConflict.form:160 msgid "Solve" msgstr "Résoudre" #: FConflictEditor.class:962 FEditor.class:2749 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(Déclarations)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "Il reste des conflits dans ce fichier." #: FConflictEditor.form:134 FEditor.form:152 FTextEditor.form:167 msgid "Advanced" msgstr "Avancé" #: FConflictEditor.form:138 FEditor.form:156 FTextEditor.form:171 msgid "Upper case" msgstr "Majuscules" #: FConflictEditor.form:145 FEditor.form:163 FTextEditor.form:178 msgid "Lower case" msgstr "Minuscules" #: FConflictEditor.form:155 FEditor.form:173 FTextEditor.form:203 msgid "Comment" msgstr "Mettre en commentaire" #: FConflictEditor.form:162 FEditor.form:180 FTextEditor.form:210 msgid "Uncomment" msgstr "Retirer les commentaires" #: FConflictEditor.form:172 FEditor.form:190 FPasteSpecial.form:19 FTextEditor.form:220 msgid "Paste special" msgstr "Collage spécial" #: FConflictEditor.form:183 FEditor.form:224 FImageEditor.form:223 FTextEditor.form:255 msgid "Select All" msgstr "Tout sélectionner" #: FConflictEditor.form:193 FEditor.form:239 FGotoLine.form:12 FTextEditor.form:265 msgid "Go to line" msgstr "Aller à la ligne" #: FConflictEditor.form:198 FEditor.form:244 FTextEditor.form:270 msgid "Bookmarks" msgstr "Signets" #: FConflictEditor.form:206 FEditor.form:259 FTextEditor.form:278 msgid "Find next" msgstr "Poursuivre la recherche" #: FConflictEditor.form:213 FEditor.form:266 FTextEditor.form:285 msgid "Find previous" msgstr "Recherche en arrière" #: FConflictEditor.form:222 FEditor.form:275 FImageEditor.form:331 FMain.form:776 FTextEditor.form:294 FToolBox.class:26 msgid "View" msgstr "Affichage" #: FConflictEditor.form:226 FEditor.form:279 FTextEditor.form:298 msgid "Automatic word wrap" msgstr "Retour à la ligne automatique" #: FConflictEditor.form:233 FTextEditor.form:305 msgid "Indent with tab" msgstr "Indenter avec des tabulations" #: FConflictEditor.form:240 FEditor.form:286 FTextEditor.form:315 msgid "No split" msgstr "Affichage complet" #: FConflictEditor.form:246 FEditor.form:292 FTextEditor.form:321 msgid "Horizontal split" msgstr "Séparation horizontale" #: FConflictEditor.form:253 FEditor.form:299 FTextEditor.form:328 msgid "Vertical split" msgstr "Séparation verticale" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:345 msgid "End of line" msgstr "Fin de ligne" # gb-ignore #: FConflictEditor.form:263 FTextEditor.form:348 msgid "Unix" msgstr "" # gb-ignore #: FConflictEditor.form:268 FTextEditor.form:353 msgid "Windows" msgstr "" # gb-ignore #: FConflictEditor.form:273 FTextEditor.form:358 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:415 FMain.form:1054 FTextEditor.form:368 msgid "Open code" msgstr "Ouvrir le code" #: FConflictEditor.form:316 FEditor.form:388 FPasteSpecial.form:60 FTextEditor.form:417 msgid "Paste as string" msgstr "Coller comme chaîne" #: FConflictEditor.form:321 FEditor.form:393 FPasteSpecial.form:65 FTextEditor.form:422 msgid "Paste as multi-line string" msgstr "Coller comme chaîne sur plusieurs lignes" #: FConflictEditor.form:326 FEditor.form:398 FPasteSpecial.form:50 FTextEditor.form:427 msgid "Paste as comments" msgstr "Coller comme commentaires" #: FConflictEditor.form:342 FTextEditor.form:455 msgid "Text editor" msgstr "Éditeur de texte" #: FConflictEditor.form:348 FForm.form:478 FTextEditor.form:461 msgid "Code" msgstr "Code" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Conflit résolu" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Conflit précédent" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Conflit suivant" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Conserver mes changements" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Prendre leurs changements" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Conserver tous mes changements" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Prendre tous leurs changements" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 FNewConnection.form:70 FNewTable.form:33 FOption.form:323 FProjectProperty.form:320 msgid "Name" msgstr "Nom" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:59 FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 FProxy.form:27 msgid "Type" msgstr "Type" #: FConnectionEditor.class:61 msgid "Length" msgstr "Longueur" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valeur par défaut" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Collation" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Index" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Unique" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Champ" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "Requêtes SQL" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Impossible de se connecter à la base de données." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "Ne pas enregistrer" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "La table « &1 » a été modifiée. Voulez-vous l'enregistrer ?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Aucun enregistrement" #: FConnectionEditor.class:500 msgid "One record" msgstr "Un enregistrement" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 enregistrements" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Impossible de charger la table « &1 »." #: FConnectionEditor.class:700 msgid "Running request" msgstr "Exécution de la requête" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "Impossible d'exécuter la requête." #: FConnectionEditor.class:722 Project.module:2647 msgid "(in &1 s)" msgstr "(en &1 s)" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "illimité" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "Blob" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "Booléen" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "Décimal" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "Entier" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "Entier long" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "Série" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "Chaîne" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "Ce nom est déjà utilisé." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "Veuillez saisir un nombre." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "La longueur doit être comprise entre 1 et 255." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "Type de données incorrect." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "Ce nom existe déjà." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "Le champ est utilisé dans un index." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "La table « &1 » n'a pas de clef primaire." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "Impossible d'écrire la table « &1 »." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "Voulez-vous vraiment supprimer la table « &1 » ?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "Impossible de supprimer la table « &1 »." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "Voulez-vous vraiment supprimer les lignes sélectionnées ?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "Voulez-vous vraiment supprimer cette requête ?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editeur de connexion" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Afficher les tables système" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nouvelle table" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Supprimer la table" #: FConnectionEditor.form:134 FDebugInfo.form:211 FMain.form:1273 FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 FPublish.form:268 FSoftwareFarm.form:427 FTestSuite.class:292 msgid "Remove" msgstr "Supprimer" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Renommer la table" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Renommer" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Copier la table" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Copier la table" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importer un fichier texte" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 FOption.form:1204 FTranslate.form:429 msgid "Import" msgstr "Importer" #: FConnectionEditor.form:217 msgid "Run query" msgstr "Exécuter la requête" #: FConnectionEditor.form:223 msgid "New query" msgstr "Nouvelle requête" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 FTranslate.form:88 msgid "New" msgstr "Nouveau" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "Supprimer la requête" #: FConnectionEditor.form:239 FDebugInfo.class:279 FImageProperty.form:380 FList.form:93 FMakeInstall.form:780 FOption.class:855 FOutput.form:54 FPublish.form:170 msgid "Clear" msgstr "Effacer" #: FConnectionEditor.form:309 msgid "Fields" msgstr "Champs" #: FConnectionEditor.form:325 FMain.class:2233 FMakeInstall.form:756 FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Ajouter" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 FPublish.form:280 msgid "Down" msgstr "Descendre" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 FPublish.form:274 msgid "Up" msgstr "Monter" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "Copier la liste des champs" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "Index" #: FConnectionEditor.form:389 msgid "New index" msgstr "Nouvel index" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 FOption.form:1218 msgid "Edit" msgstr "Editer" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exporter vers un fichier CSV" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exporter" #: FConnectionEditor.form:492 FForm.form:192 FList.form:65 FMain.form:1113 FMenu.form:116 FNewConnection.class:402 FOption.form:1413 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Supprimer" #: FConnectionEditor.form:500 FForm.form:226 msgid "Select all" msgstr "Sélectionner tout" #: FConnectionEditor.form:508 FForm.form:238 msgid "Unselect all" msgstr "Déselectionner tout" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Conversion en projet Gambas 3" #: FCrash.class:73 FTranslate.class:251 Project.module:4817 msgid "The '&1' command has failed." msgstr "La commande '&1' a échoué." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Impossible d'envoyer le rapport d'erreur." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "Le programme s'est arrêté de manière inattendue !" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Veuillez décrire comment reproduire le plantage ici." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Plantage de l'interpréteur Gambas" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "Envoyer un rapport d'erreur par mail" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "Ne pas joindre le projet au mail" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Aucun parent)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Impossible d'ajouter le fichier." #: FCreateFile.form:37 msgid "New file" msgstr "Nouveau fichier" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:107 msgid "Options" msgstr "Options" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Largeur" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Hauteur" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Gestion de boîte de dialogue" #: FCreateFile.form:155 msgid "Parent class" msgstr "Classe parente" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportée" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Instance automatique" #: FCreateFile.form:180 msgid "Not creatable" msgstr "Non instanciable" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Extension automatique" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "La récupération du projet a échoué." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Impossible de créer le projet !" #: FCreateProject.class:172 msgid "Please choose a project template." msgstr "Veuillez choisir un modèle de projet." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Veuillez saisir l'emplacement du référentiel." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Nouveau projet" #: FCreateProject.form:46 msgid "Project type" msgstr "Type de projet" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Répertoire parent" #: FCreateProject.form:90 msgid "Project details" msgstr "Détails du projet" #: FCreateProject.form:99 msgid "Project name" msgstr "Nom du projet" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Le nom du projet est le nom du répertoire du projet." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "Le répertoire final du projet est :" #: FCreateProject.form:134 msgid "Project title" msgstr "Titre du projet" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "Le titre du projet est le nom complet de l'application." #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "Le projet est traduisible" #: FCreateProject.form:159 FProjectChooser.form:77 ProjectBox.class:299 msgid "Open in another window" msgstr "Ouvrir dans une nouvelle fenêtre" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Référentiel" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Le référentiel du projet est directement envoyé à la commande 'svn checkout'." #: FDebugButton.form:33 FDebugInfo.form:100 msgid "Debugging" msgstr "Débogage" #: FDebugButton.form:42 FDebugInfo.form:194 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Console" #: FDebugButton.form:51 FDebugInfo.form:202 MTheme.module:6 msgid "Breakpoints" msgstr "Points d'arrêt" #: FDebugButton.form:60 FDebugInfo.form:264 msgid "Warnings" msgstr "Avertissements" #: FDebugButton.form:69 msgid "Notes" msgstr "Notes" #: FDebugButton.form:78 FDebugInfo.form:305 msgid "Unit tests" msgstr "Tests unitaires" #: FDebugButton.form:87 FDebugInfo.form:365 FMain.form:508 FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "Suivi de version" #: FDebugButton.form:96 FDebugInfo.form:446 msgid "Search result" msgstr "Résultat de la recherche" #: FDebugExpr.class:4 msgid "not available" msgstr "non disponible" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Valeur" #: FDebugExpr.class:511 msgid "Key" msgstr "Clef" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Symbole" #: FDebugExpr.form:33 msgid "Watch" msgstr "Surveiller" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Imprimer dans la console" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Afficher tous les symboles" #: FDebugExpr.form:88 msgid "No element" msgstr "Aucun élément" #: FDebugInfo.class:46 FEditor.class:411 FImageEditor.form:592 FImportTable.class:66 msgid "Line" msgstr "Ligne" #: FDebugInfo.class:47 FProfile.class:711 msgid "Function" msgstr "Fonction" #: FDebugInfo.class:51 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Fichier" #: FDebugInfo.class:54 msgid "Col." msgstr "Col." #: FDebugInfo.class:69 FImportTable.class:68 msgid "Message" msgstr "Message" #: FDebugInfo.class:126 msgid "native code" msgstr "code natif" #: FDebugInfo.class:206 msgid "Watch expressions" msgstr "Surveiller des expressions" #: FDebugInfo.class:279 msgid "Do you want to clear the expression list ?" msgstr "Voulez-vous effacer la liste des expressions ?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "Fichier non chargé" #: FDebugInfo.class:1255 msgid "Current object" msgstr "Objet courant" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "Variables locales" #: FDebugInfo.class:1565 msgid "Test has failed." msgstr "Le test a échoué." #: FDebugInfo.class:1571 msgid "Test has been aborted." msgstr "Le test a été interrompu." #: FDebugInfo.class:1577 msgid "Test has succeeded." msgstr "Le test a réussi." #: FDebugInfo.form:80 FMain.form:587 msgid "Debug" msgstr "Débogage" #: FDebugInfo.form:130 msgid "Remove current expression" msgstr "Supprimer l'expression sélectionnée" #: FDebugInfo.form:136 msgid "Add expression" msgstr "Ajouter une expression" #: FDebugInfo.form:209 msgid "Remove breakpoint" msgstr "Supprimer le point d'arrêt" #: FDebugInfo.form:217 msgid "Disable breakpoint" msgstr "Désactiver le point d'arrêt" #: FDebugInfo.form:219 msgid "Disable" msgstr "Désactiver" #: FDebugInfo.form:225 msgid "Enable breakpoint" msgstr "Activer le point d'arrêt" #: FDebugInfo.form:227 msgid "Enable" msgstr "Activer" #: FDebugInfo.form:233 msgid "Remove all breakpoints" msgstr "Supprimer tous les points d'arrêts" #: FDebugInfo.form:283 msgid "Tasks" msgstr "Tâches" #: FDebugInfo.form:312 FOutput.form:78 msgid "Clear console" msgstr "Effacer la console" #: FDebugInfo.form:320 msgid "Run test" msgstr "Démarrer le test" #: FDebugInfo.form:379 FMain.form:513 FProjectVersion.form:89 FVersionControl.form:110 msgid "Commit" msgstr "Publier" #: FDebugInfo.form:386 FMain.form:519 FReportBorderChooser.form:60 FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Synchroniser" #: FDebugInfo.form:393 FMain.form:532 msgid "Revert all changes" msgstr "Annuler tous les changements" #: FDebugInfo.form:400 FMain.form:538 msgid "Add everything to repository" msgstr "Tout ajouter au référentiel" #: FDebugInfo.form:454 msgid "Cancel current search" msgstr "Annuler la recherche en cours" #: FDebugInfo.form:470 msgid "Show search window" msgstr "Afficher la fenêtre de recherche" #: FDebugInfo.form:477 msgid "Search again" msgstr "Rechercher de nouveau" #: FDebugInfo.form:527 FSearch.class:528 FTranslate.class:650 msgid "Search string cannot be found." msgstr "La chaîne recherchée est introuvable." #: FEditor.class:410 msgid "Column" msgstr "Colonne" #: FEditor.class:412 msgid "Overwrite" msgstr "Écrasement" #: FEditor.form:197 FTextEditor.form:227 msgid "Format code" msgstr "Formater le code" #: FEditor.form:203 msgid "Sort procedures" msgstr "Trier les procédures" #: FEditor.form:233 msgid "Go to" msgstr "Aller à" #: FEditor.form:252 msgid "Find definition" msgstr "Trouver la définition" #: FEditor.form:309 FMain.form:1608 msgid "Run until current line" msgstr "Exécuter jusqu'à la ligne courante" #: FEditor.form:316 msgid "Toggle breakpoint" msgstr "Basculer un point d'arrêt" #: FEditor.form:323 msgid "Watch expression" msgstr "Surveiller des expressions" #: FEditor.form:332 msgid "Open form" msgstr "Ouvrir le formulaire" #: FEditor.form:339 FMain.form:1139 msgid "Run this class" msgstr "Exécuter cette classe" #: FEditor.form:349 FForm.form:432 FImageEditor.form:370 FTextEditor.form:378 msgid "Locked" msgstr "Verrouillé" #: FEditor.form:355 FHelpBrowser.form:119 FTextEditor.form:384 msgid "Print" msgstr "Imprimer" #: FEditor.form:414 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Éditeur" #: FEditor.form:427 FForm.form:485 FTextEditor.form:468 msgid "Show modifications" msgstr "Afficher les modifications" #: FEditor.form:436 FForm.form:494 FTextEditor.form:477 msgid "Previous modification" msgstr "Modification précédente" #: FEditor.form:443 FForm.form:501 FTextEditor.form:484 msgid "Next modification" msgstr "Modification suivante" #: FEditor.form:576 FTextEditor.form:597 msgid "Insert special character" msgstr "Insérer un caractère spécial" #: FEditor.form:619 FTextEditor.form:640 msgid "Make code pretty" msgstr "Réindenter le code" #: FEditor.form:684 FTextEditor.form:684 msgid "Procedure list" msgstr "Liste des procédures" #: FEditor.form:708 FImageEditor.form:773 FTextEditor.form:727 msgid "Lock / unlock file" msgstr "Vérrouiller / déverrouiller le fichier" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Fichiers CSV" #: FExportData.class:113 msgid "Unable to export data." msgstr "Impossible d'exporter les données." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Remplacer" #: FExportData.class:126 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Ce fichier existe déjà.\n\nDésirez-vous le remplacer ?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Caractère délimiteur" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Caractère d'échappement" #: FExportData.form:54 msgid "Export field names" msgstr "Exporter les noms des champs" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exporter les enregistrements sélectionnés uniquement" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Logithèques" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "L'authentification a échoué." #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "S'identifier" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Serveur" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Utilisateur" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Mot de passe" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Se souvenir du mot de passe" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Être anonyme" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Veuillez saisir une adresse e-mail valide." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Le mot de passe de confirmation ne correspond pas." #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Impossible d'enregistrer l'utilisateur." #: FFarmRegister.class:40 msgid "You have been successfully registered.\n\nYou will receive a confirmation e-mail soon." msgstr "Vous avez été enregistré avec succès.\n\nVous recevrez un courriel de confirmation bientôt." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "S'enregistrer" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Confirmer le mot de passe" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "E-mail" #: FFarmRegister.form:121 msgid "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n

\nYour e-mail will not be stored on the publishing server." msgstr "Un mail de confirmation sera envoyé à l'adresse spécifiée. Cliquez sur le lien contenu dans ce mail pour activer votre compte.\n

\nVotre e-mail ne sera pas stocké sur le serveur de publication." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Impossible d'ouvrir la connexion." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Impossible de récupérer les champs de la table." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Éditer la liste des champs" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Choisissez un champ" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Connexion" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Table" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "Suivi de version de « &1 »" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "Le fichier est verrouillé, et sera supprimé à la prochaine publication." #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "Le fichier n'est pas versionné, et doit être ajouté au référentiel." #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "Ce fichier est inchangé depuis la dernière publication." #: FFileInfoVC.class:88 FMain.class:1252 FMakeInstall.class:376 FProjectVersion.class:211 FSave.form:22 Project.module:614 VersionControl.module:432 msgid "Continue" msgstr "Continuer" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:432 msgid "You are going to cancel your changes!" msgstr "Tous les changements vont être annulés !" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Modifications" #: FFileInfoVC.form:44 FVersionControl.form:52 msgid "History" msgstr "Historique" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "Annuler les changements" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "Afficher les changements dans l'historique" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "&1 Gambas" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Module Gambas" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "Module de test Gambas" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Classe Gambas" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "Propriétés de « &1 »" #: FFontChooser.form:12 msgid "Select a font" msgstr "Choisissez une police" #: FForm.class:136 msgid "Bad form file" msgstr "Fichier formulaire incorrect" #: FForm.class:284 msgid "Unknown control: &1" msgstr "Contrôle inconnu : &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "Composant introuvable pour le contrôle &1" #: FForm.class:1923 msgid "Cannot paste data." msgstr "Impossible de coller les données." #: FForm.form:179 msgid "Copy at the same place" msgstr "Copier au même emplacement" #: FForm.form:199 msgid "Delete container only" msgstr "Supprimer le conteneur uniquement" #: FForm.form:206 msgid "Embed into a container" msgstr "Imbriquer dans un conteneur" #: FForm.form:212 msgid "Change into" msgstr "Transformer en" #: FForm.form:220 msgid "Select" msgstr "Sélectionner" #: FForm.form:233 msgid "Select parent" msgstr "Sélectionner le parent" #: FForm.form:246 msgid "Arrangement" msgstr "Disposition" #: FForm.form:250 msgid "Bring to foreground" msgstr "Au premier plan" #: FForm.form:257 msgid "Send to background" msgstr "A l'arrière-plan" #: FForm.form:267 msgid "Horizontal" msgstr "Horizontal" #: FForm.form:274 msgid "Rows" msgstr "Lignes" #: FForm.form:280 msgid "Vertical" msgstr "Vertical" #: FForm.form:287 msgid "Columns" msgstr "Colonnes" #: FForm.form:296 msgid "Center horizontally" msgstr "Centrer horizontalement" #: FForm.form:302 msgid "Center vertically" msgstr "Centrer verticalement" #: FForm.form:308 msgid "Alignment" msgstr "Alignement" #: FForm.form:312 msgid "Align to left" msgstr "Aligner sur la gauche" #: FForm.form:318 msgid "Align to right" msgstr "Aligner sur la droite" #: FForm.form:324 msgid "Align to top" msgstr "Aligner sur le haut" #: FForm.form:330 msgid "Align to bottom" msgstr "Aligner sur le bas" #: FForm.form:339 msgid "Same width" msgstr "Même largeur" #: FForm.form:345 msgid "Same height" msgstr "Même hauteur" #: FForm.form:354 msgid "Show tab" msgstr "Afficher l'onglet" #: FForm.form:362 msgid "Move tab" msgstr "Déplacer l'onglet" #: FForm.form:367 msgid "First" msgstr "Début" #: FForm.form:374 FSearch.form:197 FTips.form:75 msgid "Previous" msgstr "Précédent" #: FForm.form:381 FSearch.form:191 FTips.form:81 msgid "Next" msgstr "Suivant" #: FForm.form:388 msgid "Last" msgstr "Fin" #: FForm.form:399 FMenu.form:70 msgid "Menu editor" msgstr "Éditeur de menu" #: FForm.form:408 msgid "Event" msgstr "Evènement" #: FForm.form:422 msgid "Run this form" msgstr "Exécuter ce formulaire" #: FForm.form:605 msgid "Toggle grid" msgstr "Bascule l'affichage de la grille" #: FForm.form:614 FImageEditor.form:518 msgid "Toggle information tooltip" msgstr "Basculer l'affichage des informations" #: FForm.form:733 msgid "Move tab first" msgstr "Déplacer l'onglet au début" #: FForm.form:740 msgid "Move tab left" msgstr "Déplacer l'onglet à gauche" #: FForm.form:747 msgid "Move tab right" msgstr "Déplacer l'onglet à droite" #: FForm.form:754 msgid "Move tab last" msgstr "Déplacer l'onglet à la fin" #: FForm.form:782 FOption.form:285 msgid "Bold" msgstr "Gras" #: FForm.form:790 msgid "Italic" msgstr "Italique" #: FForm.form:798 FOption.form:290 msgid "Underline" msgstr "Souligné" #: FForm.form:806 msgid "Bigger font" msgstr "Police plus grande" #: FForm.form:814 msgid "Smaller font" msgstr "Police plus petite" #: FForm.form:822 FOption.form:1436 msgid "Default font" msgstr "Police par défaut" #: FForm.form:830 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Arrière-plan" #: FForm.form:838 msgid "Foreground" msgstr "Avant-plan" #: FForm.form:849 msgid "Lock / unlock form" msgstr "Vérrouiller / déverrouiller le formulaire" #: FFormStack.form:14 FMain.form:1979 msgid "Hierarchy" msgstr "Hiérarchie" #: FFormStack.form:24 msgid "Move top" msgstr "Déplacer tout en haut" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "Déplacer vers le haut" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "Déplacer vers le bas" #: FFormStack.form:42 msgid "Move bottom" msgstr "Déplacer tout en bas" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "Langage par défaut" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Navigateur d'aide" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "Afficher l'arborescence de l'aide" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Revenir en arrière" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "Aller en avant" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "Raccourcis claviers de l'EDI" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "Débogueur" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 FTranslate.form:154 msgid "Translation" msgstr "Traduction" #: FImageEditor.form:160 msgid "Action" msgstr "Action" #: FImageEditor.form:165 msgid "Crop" msgstr "Découper" #: FImageEditor.form:173 FImageProperty.form:305 msgid "Horizontal flip" msgstr "Miroir horizontal" #: FImageEditor.form:180 FImageProperty.form:299 msgid "Vertical flip" msgstr "Miroir vertical" #: FImageEditor.form:187 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "Rotation de 90° vers la gauche" #: FImageEditor.form:195 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "Rotation de 90° vers la droite" #: FImageEditor.form:206 msgid "Resize" msgstr "Redimensionner" #: FImageEditor.form:213 msgid "Rotate" msgstr "Rotation" #: FImageEditor.form:230 msgid "Hide selection" msgstr "Cacher la sélection" #: FImageEditor.form:236 MTheme.module:6 msgid "Selection" msgstr "Sélection" #: FImageEditor.form:241 msgid "Invert selection" msgstr "Inverser la sélection" #: FImageEditor.form:249 msgid "Duplicate selection" msgstr "Dupliquer la sélection" #: FImageEditor.form:257 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "Agrandir ou rétrécir la sélection" #: FImageEditor.form:267 msgid "Union" msgstr "Union" #: FImageEditor.form:273 msgid "Difference" msgstr "Différence" #: FImageEditor.form:279 msgid "Intersection" msgstr "Intersection" #: FImageEditor.form:285 msgid "Exclusive or" msgstr "Ou exclusif" #: FImageEditor.form:294 msgid "Shape grid" msgstr "Grille de la forme" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Zoom normal" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Zoom ajusté" #: FImageEditor.form:405 msgid "Save as JPEG" msgstr "Enregistrer comme JPEG" #: FImageEditor.form:411 msgid "Save as PNG" msgstr "Enregistrer comme PNG" #: FImageEditor.form:417 msgid "Save as BMP" msgstr "Enregistrer comme BMP" #: FImageEditor.form:424 msgid "Save as TIFF" msgstr "Enregistrer comme TIFF" #: FImageEditor.form:431 msgid "Image editor" msgstr "Editeur d'image" #: FImageEditor.form:509 msgid "Drawing grid" msgstr "Grille de dessin" #: FImageEditor.form:561 msgid "Move" msgstr "Déplacer" #: FImageEditor.form:572 msgid "Draw" msgstr "Dessiner" #: FImageEditor.form:582 msgid "Erase" msgstr "Gommer" #: FImageEditor.form:602 msgid "Rectangle" msgstr "Rectangle" #: FImageEditor.form:612 msgid "Ellipse" msgstr "Ellipse" #: FImageEditor.form:632 msgid "Magic wand" msgstr "Baguette magique" #: FImageEditor.form:649 msgid "Edit selection" msgstr "Modifier la sélection" #: FImageEditor.form:752 msgid "Resize or stretch image" msgstr "Redimensionner ou étirer l'image" #: FImageEditor.form:761 FImageRotate.form:11 msgid "Rotate image" msgstr "Rotation de l'image" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "px" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "Rétrécir" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "Agrandir" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "Bordure" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Presse-papier système" #: FImageProperty.class:1269 msgid "Arrow" msgstr "Flèche" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "Flèche n°2" #: FImageProperty.class:1272 msgid "Triangle" msgstr "Triangle" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "Triangle rectangle" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "Pentagone" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "Hexagone" #: FImageProperty.form:173 msgid "Gradient" msgstr "Dégradé" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Dégradé linéaire" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Dégradé circulaire" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "Ajouter une couleur de dégradé" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "Supprimer une couleur de dégradé" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "Sélectionnez la couleur du point d'arrêt du dégradé" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "Inverser le dégradé" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "Rayon" #: FImageProperty.form:327 msgid "Clipboard" msgstr "Presse-papier" #: FImageProperty.form:339 msgid "Shapes" msgstr "Formes" #: FImageProperty.form:364 msgid "Stroke" msgstr "Tracer" #: FImageProperty.form:372 FTranslate.class:1766 msgid "Fill" msgstr "Remplir" #: FImageProperty.form:392 msgid "Colorize" msgstr "Colorier" #: FImageProperty.form:400 msgid "Desaturate" msgstr "Désaturer" #: FImageProperty.form:408 msgid "Make transparent" msgstr "Rendre transparent" #: FImageProperty.form:416 FOption.form:1754 msgid "Invert colors for dark themes" msgstr "Inverser les couleurs pour les thèmes sombres" #: FImageProperty.form:426 msgid "Line cap" msgstr "Extrêmités des lignes" #: FImageProperty.form:431 msgid "Line join" msgstr "Jointure des lignes" #: FImageProperty.form:436 msgid "Fill rule" msgstr "Règle de remplissage" #: FImageProperty.form:454 msgid "Opacity" msgstr "Opacité" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Taille" #: FImageProperty.form:490 msgid "Tolerance" msgstr "Tolérance" #: FImageProperty.form:509 msgid "Roundness" msgstr "Arrondi" #: FImageProperty.form:535 msgid "Effects" msgstr "Effets" #: FImageProperty.form:545 msgid "Brightness" msgstr "Luminosité" #: FImageProperty.form:564 msgid "Contrast" msgstr "Contraste" #: FImageProperty.form:583 msgid "Gamma" msgstr "Gamma" #: FImageProperty.form:602 msgid "Lightness" msgstr "Clarté" #: FImageProperty.form:621 msgid "Hue" msgstr "Teinte" #: FImageProperty.form:640 msgid "Saturation" msgstr "Saturation" #: FImageProperty.form:659 msgid "Blur" msgstr "Flou" #: FImageProperty.form:676 msgid "Transparency" msgstr "Transparence" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:338 msgid "Preview" msgstr "Aperçu" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "Appliquer" #: FImageProperty.form:745 msgid "Centered" msgstr "Centré" #: FImageProperty.form:755 msgid "Right align" msgstr "Aligner à droite" #: FImageProperty.form:764 msgid "Left align" msgstr "Aligner à gauche" #: FImageProperty.form:777 msgid "Top align" msgstr "Aligner en haut" #: FImageProperty.form:786 msgid "Middle align" msgstr "Aligner au milieu" #: FImageProperty.form:796 msgid "Baseline align" msgstr "Aligner sur la ligne de base" #: FImageProperty.form:805 msgid "Bottom align" msgstr "Aligner en bas" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "Résolution de la grille" #: FImageProperty.form:859 msgid "Grid snap" msgstr "Alignement de la grille" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "Dessiner les diagonales" # gb-ignore #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "Redimensionner l'image" #: FImageResize.form:64 msgid "Resize and center" msgstr "Redimensionner et centrer" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "Redimensionner et centrer horizontalement" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "Redimensionner et centrer verticalement" #: FImageResize.form:85 msgid "Stretch image" msgstr "Etirer l'image" #: FImageResize.form:113 msgid "Add a border" msgstr "Ajouter une bordure" #: FImageResize.form:118 msgid "Ratio" msgstr "Rapport" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Classes Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Modules Gambas" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "Modules de test Gambas" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Feuilles de style en cascade" #: FImportFile.class:33 msgid "HTML files" msgstr "Fichiers HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "Fichiers Javascript" #: FImportFile.class:33 msgid "Picture files" msgstr "Fichiers image" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Impossible d'importer le fichier." #: FImportFile.form:9 msgid "Import files" msgstr "Importer des fichiers" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Créer des liens symboliques" #: FImportTable.class:58 FSearch.form:179 FTranslate.class:1383 msgid "All files" msgstr "Tous les fichiers" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Clef automatique)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Champ_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Pas assez de valeurs" #: FImportTable.class:393 msgid "Too many values" msgstr "Trop de valeurs" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Annulé par l'utilisateur" #: FImportTable.class:427 msgid "No record imported." msgstr "Aucun enregistrement importé." #: FImportTable.class:429 msgid "One record imported." msgstr "Un enregistrement importé." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 enregistrements importés." #: FImportTable.form:35 msgid "Import file" msgstr "Importer un fichier" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Choisissez le fichier CSV à importer" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Source" #: FImportTable.form:78 msgid "Charset" msgstr "Jeu de caractères" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Supprimer les espaces inutiles" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignorer les premières lignes" #: FImportTable.form:139 msgid "Line(s)" msgstr "Ligne(s)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destination" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "La première ligne contient les noms des champs" #: FImportTable.form:176 msgid "Key field" msgstr "Champ clef" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "Veuillez saisir le nom de la disposition" #: FLayout.class:30 FOption.class:1717 msgid "Override" msgstr "Écraser" #: FLayout.class:30 msgid "This layout already exists." msgstr "Cette disposition existe déjà." #: FLayout.form:14 msgid "Save layout" msgstr "Enregistrer la disposition" #: FLayout.form:22 msgid "Layout name" msgstr "Nom de la disposition" #: FList.class:103 msgid "Item &1" msgstr "Élément &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Voulez-vous vraiment vider la liste ?" #: FList.form:25 msgid "Edit list property" msgstr "Éditer la liste des propriétés" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "Insérer" #: FList.form:87 msgid "Invert" msgstr "Inverser" #: FMain.class:260 msgid "Do you really want to delete this link ?" msgstr "Voulez-vous vraiment supprimer ce lien ?" #: FMain.class:263 msgid "Do you really want to delete this directory ?" msgstr "Voulez-vous vraiment supprimer ce répertoire ?" #: FMain.class:275 msgid "Do you really want to delete this file ?" msgstr "Voulez-vous vraiment supprimer ce fichier ?" #: FMain.class:282 msgid "Cannot delete file or directory" msgstr "Impossible de supprimer le fichier ou le répertoire" #: FMain.class:300 msgid "File or directory does not exist anymore." msgstr "Le fichier ou le répertoire n'existe plus." #: FMain.class:775 msgid "Sort history" msgstr "Trier l'historique" #: FMain.class:779 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "Trier par date" #: FMain.class:779 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "Trier par nom" #: FMain.class:779 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "Trier dans l'ordre des chemins" #: FMain.class:791 msgid "&Clear history" msgstr "&Effacer l'historique" #: FMain.class:971 msgid "New folder" msgstr "Nouveau dossier" #: FMain.class:1042 msgid "The GNU translation tools are not installed on your system.\n\nPlease install them to be able to do the translation." msgstr "Les outils de traduction GNU ne sont pas installés sur votre système.\n\nVeuillez les installer pour pouvoir effectuer la traduction." #: FMain.class:1781 msgid "Unable to drop file into the project." msgstr "Impossible de déposer le fichier à l'intérieur du projet." #: FMain.class:1906 msgid "All backup or generated files will be removed from the project directory." msgstr "Les fichiers de sauvegarde et les fichiers générés du projet vont être supprimés." #: FMain.class:1906 msgid "Clean" msgstr "Nettoyer" #: FMain.class:2233 msgid "Do you really want to add every file to the repository?" msgstr "Voulez-vous vraiment ajouter tous les fichiers au référentiel ?" #: FMain.class:2371 msgid "Choose a profile" msgstr "Choisissez un profilage" #: FMain.class:2372 msgid "Profile for &1 project" msgstr "Profilage pour le projet &1" #: FMain.class:2620 FProperty.class:1034 msgid "Select a file" msgstr "Choisissez un fichier" #: FMain.class:2635 msgid "This file is located inside the project." msgstr "Le fichier est situé à l'intérieur du projet." #: FMain.class:2793 Project.module:924 msgid "The file has been modified.\n\nAll your changes will be lost." msgstr "Le fichier a été modifié.\n\nToutes les modifications seront perdues." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Ouvrir un projet" #: FMain.form:313 msgid "Open recent" msgstr "Ouvrir un projet récent" #: FMain.form:321 msgid "Open example" msgstr "Ouvrir un exemple" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "Ouvrir un fichier" #: FMain.form:339 msgid "Save project" msgstr "Enregistrer le projet" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Enregistrer le projet sous" #: FMain.form:358 msgid "Reload project" msgstr "Recharger le projet" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Quitter" #: FMain.form:402 Project.module:6994 msgid "Save as" msgstr "Enregistrer sous" #: FMain.form:442 msgid "Compile" msgstr "Compiler" #: FMain.form:449 msgid "Compile All" msgstr "Tout compiler" #: FMain.form:459 msgid "Translate" msgstr "Traduire" #: FMain.form:468 msgid "Make" msgstr "Générer" #: FMain.form:472 msgid "Executable" msgstr "Exécutable" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "Archive source" #: FMain.form:486 msgid "Installation package" msgstr "Paquet d'installation" #: FMain.form:493 msgid "Patch" msgstr "Patch" #: FMain.form:496 msgid "Create" msgstr "Créer" #: FMain.form:525 msgid "Undo synchronization" msgstr "Annuler la synchronisation" #: FMain.form:544 msgid "Branch" msgstr "Branche" #: FMain.form:549 msgid "Put under version control" msgstr "Mettre sous suivi de version" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "Publier" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "Nettoyer" #: FMain.form:570 msgid "Refresh" msgstr "Rafraîchir" #: FMain.form:599 msgid "Run with" msgstr "Démarrer avec" #: FMain.form:607 msgid "Test" msgstr "Tester" #: FMain.form:614 FTestSuite.form:29 msgid "Test suites" msgstr "Suites de tests" #: FMain.form:623 msgid "Pause" msgstr "Pause" #: FMain.form:630 msgid "Stop" msgstr "Arrêter" #: FMain.form:637 msgid "Step" msgstr "Pas-à-pas" #: FMain.form:644 msgid "Forward" msgstr "Avancer" #: FMain.form:651 msgid "Finish" msgstr "Terminer" #: FMain.form:660 msgid "Use terminal emulator" msgstr "Utiliser un émulateur de terminal" #: FMain.form:666 msgid "Redirect standard error output" msgstr "Rediriger la sortie erreur standard" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "Utiliser le serveur HTTP embarqué" #: FMain.form:681 msgid "Invert language orientation" msgstr "Inverser l'orientation de la langue" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "Désactiver le compilateur « just-in-time »" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "Afficher les messages de débogage du compilateur « just-in-time »" #: FMain.form:702 msgid "Show database requests" msgstr "Afficher les requêtes de bases de données" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "Composant graphique" #: FMain.form:713 msgid "Current desktop" msgstr "Bureau courant" #: FMain.form:750 msgid "Activate profiling" msgstr "Activer le profilage" #: FMain.form:756 msgid "Open profile" msgstr "Ouvrir un profilage" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "Effacer tous les points d'arrêts" #: FMain.form:770 msgid "Close all debug windows" msgstr "Fermer toutes les fenêtres de débogage" #: FMain.form:790 msgid "Properties sheet" msgstr "Feuille de propriétés" #: FMain.form:808 msgid "Status bar" msgstr "Barre d'état" #: FMain.form:815 msgid "Hide menubar" msgstr "Cacher la barre de menus" #: FMain.form:839 msgid "Close all windows" msgstr "Fermer toutes les fenêtres" #: FMain.form:846 msgid "Tools" msgstr "Outils" #: FMain.form:850 msgid "Find" msgstr "Rechercher" #: FMain.form:856 FSearch.form:82 msgid "Replace" msgstr "Remplacer" #: FMain.form:866 msgid "Browse project" msgstr "Parcourir le projet" #: FMain.form:873 msgid "Open a terminal" msgstr "Ouvrir un terminal" #: FMain.form:880 msgid "Send project by mail" msgstr "Envoyer le projet par courriel" #: FMain.form:886 msgid "Update all forms" msgstr "Mettre à-jour tous les formulaires" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "Logithèque" #: FMain.form:904 msgid "Shortcuts" msgstr "Raccourcis" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Préférences" #: FMain.form:924 msgid "Directory" msgstr "Répertoire" #: FMain.form:929 msgid "Project link" msgstr "Lien vers un projet" #: FMain.form:938 msgid "Module" msgstr "Module" #: FMain.form:945 msgid "Test module" msgstr "Module de test" #: FMain.form:1004 msgid "HTML file" msgstr "Fichier HTML" #: FMain.form:1011 msgid "Style sheet" msgstr "Feuille de style" #: FMain.form:1018 msgid "Javascript file" msgstr "Fichier Javascript" #: FMain.form:1025 msgid "Other" msgstr "Autre" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Récent" #: FMain.form:1059 msgid "Open in file manager" msgstr "Ouvrir dans le gestionnaire de fichiers" #: FMain.form:1064 msgid "Open in project" msgstr "Ouvir dans le projet" #: FMain.form:1068 msgid "Open with" msgstr "Ouvrir avec" #: FMain.form:1100 msgid "Duplicate" msgstr "Dupliquer" #: FMain.form:1123 msgid "Copy file path" msgstr "Copier le chemin du fichier" #: FMain.form:1132 msgid "Startup class" msgstr "Classe de démarrage" #: FMain.form:1147 msgid "Add to repository" msgstr "Ajouter au référentiel" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtrer" #: FMain.form:1155 msgid "Show exported classes" msgstr "Afficher les classes exportées" #: FMain.form:1160 msgid "Show added files" msgstr "Afficher les fichier ajoutés" #: FMain.form:1165 msgid "Show modified files" msgstr "Afficher les fichiers modifiés" #: FMain.form:1170 msgid "Show files in conflict" msgstr "Afficher les fichiers en conflit" #: FMain.form:1175 msgid "Show untranslatable files" msgstr "Afficher les fichiers non traduisibles" #: FMain.form:1180 msgid "Show compressed files" msgstr "Afficher les fichiers compressés" #: FMain.form:1188 msgid "Show all" msgstr "Afficher tout" #: FMain.form:1200 msgid "Do not translate" msgstr "Ne pas traduire" #: FMain.form:1207 msgid "Compress all" msgstr "Tout compresser" #: FMain.form:1213 msgid "Uncompress all" msgstr "Tout décompresser" #: FMain.form:1219 msgid "Compress file into the executable" msgstr "Compresser le fichier dans l'exécutable" #: FMain.form:1226 FTextEditor.form:234 msgid "Compress file" msgstr "Compresser le fichier" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "Nouvelle connexion" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "?" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Astuces du jour" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "Raccourcis claviers" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "Informations système" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Propriétés du projet" #: FMain.form:1429 msgid "Refresh project" msgstr "Rafraîchir le projet" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3200 msgid "Make executable" msgstr "Générer l'exécutable" #: FMain.form:1471 msgid "Make source archive" msgstr "Générer une archive des sources" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "Créer un paquet d'installation" #: FMain.form:1509 msgid "Toolbox" msgstr "Boîte à outils" #: FMain.form:1527 FSearch.form:68 msgid "Search" msgstr "Rechercher" #: FMain.form:1551 msgid "Compile all" msgstr "Tout compiler" #: FMain.form:1600 msgid "Finish current function" msgstr "Terminer la fonction courante" #: FMain.form:1616 msgid "Show menubar" msgstr "Afficher la barre des menus" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "Publier un logiciel" #: FMain.form:1706 msgid "&File" msgstr "&Fichier" #: FMain.form:1730 msgid "&Project" msgstr "&Projet" #: FMain.form:1742 msgid "&Debug" msgstr "&Débogage" #: FMain.form:1754 msgid "&View" msgstr "&Affichage" #: FMain.form:1766 msgid "&Tools" msgstr "&Outils" #: FMain.form:1778 msgid "&?" msgstr "&?" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "Disposer les fichiers classes selon l'héritage" #: FMain.form:1907 msgid "Show project tree" msgstr "Afficher l'arbre du projet" #: FMain.form:1915 msgid "Show properties sheet" msgstr "Afficher la feuille de propriétés" #: FMain.form:1986 msgid "Show property help" msgstr "Afficher l'aide sur les propriétés" #: FMain.form:1994 msgid "Show controls" msgstr "Afficher les contrôles" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Applications Gambas" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "Incrémenter la version" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "Fixer la version à" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Conserver les informations de débogage dans l'exécutable" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "Compresser les fichiers dans l'exécutable" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "Créer un raccourci sur le bureau" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "Exclure les modules de tests" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "Exécuter cette commande « shell » ensuite" #: FMakeExecutable.form:149 msgid "The following patterns will be substituted in the command :
\n• $(FILE) will be replaced by the executable path.
\n• $(DIR) by the project directory.
\n• $(NAME) by the project name.
\n• $(TITLE) by the project title.
\n• $(VERSION) by the project version.
\n
\nNote : all substitutions will be quoted." msgstr "Les motifs suivants seront substitués dans la commande :
\n• $(FILE) sera remplacé par le chemin de l'exécutable.
\n• $(DIR) par le répertoire du projet.
\n• $(NAME) par le nom du projet.
\n• $(TITLE) par le titre du projet.
\n• $(VERSION) par la version du projet.
\n
\nNote : toutes les substitutions seront « échappées »." #: FMakeInstall.class:136 msgid "Package" msgstr "Paquet" #: FMakeInstall.class:137 msgid "Min. version" msgstr "Version min." #: FMakeInstall.class:138 msgid "Max. version" msgstr "Version max." #: FMakeInstall.class:144 msgid "File or directory" msgstr "Fichier ou répertoire" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "Creation des paquets..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Les paquets ont été créés avec succès." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Veuillez saisir votre nom." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Veuillez saisir votre adresse e-mail." #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "Veuillez saisir le nom du fournisseur." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "Il n'y aucune information de changement pour cette version." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Veuillez saisir la première entrée du CHANGELOG." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "Veuillez sélectionner au moins une distribution cible." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "Veuillez sélectionner un groupe de paquet pour chaque distribution cible." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "Veuillez sélectionner un groupe de paquet." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "Veuillez sélectionner un emplacement de menu pour chaque distribution cible." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "Veuillez sélectionner un emplacement de menu." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "Impossible de trouver le fichier supplémentaire : &1" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "Veuillez choisir un répertoire de destination pour chaque fichier supplémentaire." #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Le système de gestion de paquets de Debian ne peut gérer les noms de fichiers contenant un caractère d'espacement." #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Le système de gestion de paquets de Debian ne peut gérer les noms de répertoires contenant un caractère d'espacement." #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "Le paquet ne peut être créé à l'intérieur du répertoire du projet." #: FMakeInstall.class:558 msgid "Initial release" msgstr "Version initiale" #: FMakeInstall.class:814 msgid "Menus" msgstr "Menus" #: FMakeInstall.class:882 msgid "Groups" msgstr "Groupes" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "Caractères incorrects" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "Voulez-vous vraiment retirer toutes les dépendances supplémentaires ?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "Voulez-vous vraiment retirer tous les fichiers supplémentaires ?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "Sélectionnez le répertoire destination" #: FMakeInstall.form:151 msgid "Create package" msgstr "Créer le paquet" #: FMakeInstall.form:154 msgid "Package information" msgstr "Information sur le paquet" #: FMakeInstall.form:160 msgid "Package name" msgstr "Nom du paquet" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "Ajouter le préfixe ou le nom du vendeur aux noms des paquets" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "Ajouter le numéro de version majeure aux noms des paquets" #: FMakeInstall.form:205 msgid "Package version" msgstr "Version du paquet" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "Nom du fournisseur" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "Prefixe du fournisseur" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Informations sur le mainteneur" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "URL" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Liste des changements" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Distribution cible" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Auto-extractible" #: FMakeInstall.form:612 msgid "Package group" msgstr "Groupe de paquet" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Entrée de menu" #: FMakeInstall.form:654 msgid "Categories" msgstr "Catégories" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Fichier de configuration du bureau" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "Types MIME" #: FMakeInstall.form:677 msgid "Enter the mimetypes handled by your application there.\nPlease enter one mimetype by line.\n" msgstr "Saisissez les types MIME gérés par votre application.\nVeuillez saisir un type MIME par ligne.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Configuration additionnelle" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Le texte suivant sera ajouté à la fin du fichier de configuration du bureau." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Dépendances supplémentaires" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Version de Gambas minimale" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Mêmes dépendances pour toutes les cibles" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Fichiers supplémentaires" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Mêmes fichiers pour toutes les cibles" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Les fichiers supplémentaires doivent être situés dans le dossier Projet du projet en cours, correspondant au répertoire .hidden du projet sur le disque." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Tests autoconf supplémentaires" #: FMakeInstall.form:867 msgid "Add extra tests for the configuration process.\n

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "Ajout de tests supplémentaires au processus de configuration.\n

Laissez ce champ vide si vous n'en avez pas besoin, ou si vous ne connaissez rien aux scripts autoconf." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Répertoire de destination" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Créer des répertoires pour chaque distribution" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Sortie des commandes" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Créer le paquet maintenant" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Veuillez sélectionner l'archive d'origine." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Veuillez sélectionner le projet d'origine." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Veuillez saisir le nom du fichier patch." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "Le patch a été généré avec succès." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Impossible de générer le patch." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Générer un patch" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Sélectionnez l'origine du patch" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Origine du patch" #: FMakePatch.form:59 msgid "Project directory" msgstr "Répertoire du projet" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Choix du nom de patch automatique" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Éditer le patch" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Cet assistant va générer un patch entre un projet d'origine et le projet courant." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Selectionnez l'archive source" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Paquets sources" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Selectionnez le répertoire du projet" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Choisissez le nom du fichier patch" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Fichiers Patch/Diff" #: FMakeSourceArchive.form:9 Project.module:4878 msgid "Create source package" msgstr "Générer une archive des sources du projet" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "Transformer en une archive « *.gmail.txt » qui trompe GMail" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "Les menus ont été modifiés !" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "Veuillez entrer un nom de menu." #: FMenu.class:346 msgid "Bad menu name !" msgstr "Nom de menu incorrect !" #: FMenu.class:352 msgid "Bad group name !" msgstr "Nom de groupe incorrect !" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Ce menu est trop profond !" #: FMenu.class:1155 Project.module:5756 msgid "modified" msgstr "modifié" #: FMenu.form:86 msgid "Insert menu" msgstr "Insérer un menu" #: FMenu.form:95 msgid "Insert separator" msgstr "Insérer un séparateur" #: FMenu.form:104 msgid "Insert menu before" msgstr "Insérer un menu avant" #: FMenu.form:107 msgid "Insert before" msgstr "Insérer avant" #: FMenu.form:113 msgid "Delete menu" msgstr "Supprimer le menu" #: FMenu.form:179 msgid "Paste before" msgstr "Coller avant" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Cliquez sur Insérer pour ajouter un nouveau menu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Veuillez saisir le nom de la base de données." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Veuillez saisir le mot de passe" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Propriétés de la connexion" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Choisissez un répertoire" #: FNewConnection.class:229 msgid "Create database" msgstr "Créer la base de données" #: FNewConnection.class:241 msgid "Delete database" msgstr "Supprimer la base de données" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Impossible de créer la base de données." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Voulez-vous vraiment supprimer la base de données « &1 » ?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Impossible de supprimer la base de données." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Hôte" #: FNewConnection.form:124 msgid "Path" msgstr "Emplacement" #: FNewConnection.form:154 msgid "No password" msgstr "Pas de mot de passe" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Bases de données" #: FNewConnection.form:241 msgid "From" msgstr "À partir de" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignorer le jeu de caractères de la base de données" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Afficher les métadonnées" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Mémoriser la structure de la base de données" #: FNewTable.class:33 msgid "Create table" msgstr "Nouvelle table" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Veuillez saisir le nom de la nouvelle table." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "La table « &1 » existe déjà." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nouvelle traduction" #: FOpenProject.form:22 msgid "Select a project" msgstr "Sélectionnez un projet" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Exemples" #: FOption.class:4 msgid "Amber" msgstr "Ambre" #: FOption.class:4 msgid "Amethyst" msgstr "Améthiste" #: FOption.class:4 msgid "Blues" msgstr "Blues" #: FOption.class:4 msgid "Emerald" msgstr "Emeraude" #: FOption.class:4 msgid "Gambas" msgstr "Gambas" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidienne" #: FOption.class:4 msgid "Pastel" msgstr "Pastel" #: FOption.class:4 msgid "Quest" msgstr "Quête" #: FOption.class:4 msgid "Quick" msgstr "Rapide" #: FOption.class:4 msgid "Ruby" msgstr "Rubis" #: FOption.class:4 msgid "Sapphire" msgstr "Saphir" #: FOption.class:4 msgid "Visual" msgstr "Visuel" #: FOption.class:4 msgid "Zen" msgstr "Zen" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "Par défaut" #: FOption.class:9 msgid "Flat" msgstr "Plat" #: FOption.class:89 msgid "Custom" msgstr "Personnel" #: FOption.class:91 msgid "Desktop" msgstr "Bureau" #: FOption.class:92 FTranslate.class:151 msgid "(Default)" msgstr "(Défaut)" #: FOption.class:267 msgid "Gambas highlight theme files" msgstr "Fichiers thèmes de coloration de Gambas" #: FOption.class:268 msgid "Export a theme file" msgstr "Exporter un fichier thème" #: FOption.class:499 msgid "Select a theme file" msgstr "Choisissez un fichier thème" #: FOption.class:522 msgid "You need to restart the application to see your changes." msgstr "Vous devez redémarrer l'application pour que vos changements prennent effet." #: FOption.class:855 msgid "Do you really want to clear the documentation cache?" msgstr "Voulez-vous réellement vider le cache de la documentation ?" #: FOption.class:864 msgid "Unable to clear documentation cache." msgstr "Impossible de vider le cache de la documentation." #: FOption.class:1024 msgid "Do you really want to delete this snippet?" msgstr "Voulez-vous vraiment supprimer ce fragment ?" #: FOption.class:1225 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Voulez-vous vraiment installer la police « Gambas »\ndans votre répertoire personnel de polices ?" #: FOption.class:1225 FSoftwareFarm.class:604 msgid "Install" msgstr "Installer" #: FOption.class:1311 msgid "Network is not available." msgstr "Le réseau est indisponible." #: FOption.class:1316 msgid "Documentation is up to date." msgstr "La documentation est à-jour." #: FOption.class:1321 msgid "A new documentation is available!" msgstr "Une nouvelle documentation est disponible !" #: FOption.class:1326 MHelp.module:933 msgid "Documentation is not available." msgstr "La documentation n'est pas disponible." #: FOption.class:1508 msgid "Cannot download '&1'." msgstr "Impossible de télécharger « &1 »." #: FOption.class:1539 msgid "Unable to uncompress documentation." msgstr "Impossible de décompresser la documentation." #: FOption.class:1550 msgid "Unable to install documentation." msgstr "Impossible d'installer la documentation." #: FOption.class:1660 msgid "Compact" msgstr "Compacte" #: FOption.class:1675 msgid "Current" msgstr "Courante" #: FOption.class:1717 msgid "Do you really want to override the existing layout?" msgstr "Voulez-vous vraiment écraser la disposition existante ?" #: FOption.class:1815 msgid "Do you really want to delete that layout?" msgstr "Voulez-vous vraiment supprimer cette disposition ?" #: FOption.form:295 msgid "Dotted" msgstr "Pointillé" #: FOption.form:306 msgid "Identity" msgstr "Identité" #: FOption.form:350 msgid "Package maintainer" msgstr "Mainteneur du paquet" #: FOption.form:395 msgid "Default license" msgstr "License par défaut" #: FOption.form:435 VersionControl.module:555 msgid "No" msgstr "Non" #: FOption.form:435 VersionControl.module:555 msgid "Yes" msgstr "Oui" #: FOption.form:439 msgid "Projects" msgstr "Projets" #: FOption.form:456 msgid "Default tab size" msgstr "Tabulation par défaut" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "espace(s)" #: FOption.form:482 msgid "Indent with tab by default" msgstr "Indenter avec des tabulations par défaut" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "Retour à la ligne automatique par défaut" #: FOption.form:516 msgid "Activate version control" msgstr "Activer le suivi de version" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "Restaurer les fichiers à l'ouverture du projet" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Compilation" #: FOption.form:556 msgid "Number of background jobs" msgstr "Nombre de tâches d'arrière-plan" #: FOption.form:569 msgid "Images" msgstr "Images" #: FOption.form:581 msgid "Compress PNG images with " msgstr "Compresser les images PNG avec" #: FOption.form:615 msgid "Automatic translation with " msgstr "Traduction automatique avec" #: FOption.form:644 msgid "Translation engine" msgstr "Moteur de traduction" #: FOption.form:653 msgid "Help & applications" msgstr "Aide et applications" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Aide" #: FOption.form:670 msgid "Show documentation in popups" msgstr "Afficher la documentation dans les popups" #: FOption.form:687 msgid "Always display optional messages" msgstr "Toujours afficher les messages optionnels" #: FOption.form:699 msgid "Documentation" msgstr "Documentation" #: FOption.form:710 msgid "Use offline documentation" msgstr "Utiliser la documentation hors-ligne" #: FOption.form:740 msgid "Download documentation" msgstr "Télécharger la documentation" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "Configuration du proxy" #: FOption.form:779 msgid "Clear documentation cache" msgstr "Vider le cache de la documentation" #: FOption.form:787 msgid "Applications" msgstr "Applications" #: FOption.form:798 msgid "Browser" msgstr "Navigateur" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "Terminal" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "Afficher l'indentation avec des lignes verticales" #: FOption.form:858 msgid "Highlight current line" msgstr "Surligner la ligne courante" #: FOption.form:875 msgid "Highlight modified lines" msgstr "Indiquer les lignes modifiées" #: FOption.form:892 msgid "Show line numbers" msgstr "Afficher les numéros de lignes" #: FOption.form:909 msgid "Procedure folding" msgstr "Repliage des procédures" #: FOption.form:926 msgid "Procedure separation" msgstr "Séparation des procédures" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "Afficher les espaces en fin de ligne avec des points" #: FOption.form:960 msgid "Show Preview" msgstr "Afficher la prévisualisation" #: FOption.form:978 msgid "Keywords in upper case" msgstr "Mots-clefs en majuscule" #: FOption.form:987 msgid "Code formatting" msgstr "Formatage du code" #: FOption.form:993 msgid "Automatic formatting" msgstr "Formatage automatique" #: FOption.form:1004 msgid "Control structure completion" msgstr "Compléter les structures de contrôles" #: FOption.form:1021 msgid "Local variable declaration" msgstr "Déclaration des variables locales" #: FOption.form:1038 msgid "Comments insertion" msgstr "Insertion des commentaires" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "Fermer les parenthèses, les crochets" #: FOption.form:1072 msgid "Close strings" msgstr "Fermer les chaînes de caractères" #: FOption.form:1084 msgid "Explicit formating" msgstr "Formatage explicite" #: FOption.form:1095 msgid "Format on load & save" msgstr "Formater au chargement et à l'enregistrement" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "Indenter les déclarations de variables locales" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "Supprimer les espaces inutiles en fin de ligne" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "Conserver les lignes vides successives" #: FOption.form:1155 msgid "Code snippets" msgstr "Fragments de code" #: FOption.form:1171 msgid "Activate code snippets" msgstr "Activer les fragments de code" #: FOption.form:1232 msgid "Interface" msgstr "Interface" #: FOption.form:1249 msgid "Activate animations" msgstr "Activer les animations" #: FOption.form:1266 msgid "Show shadows" msgstr "Afficher les ombres" #: FOption.form:1283 msgid "Show tooltips" msgstr "Afficher les bulles d'aide" #: FOption.form:1300 msgid "Use utility windows" msgstr "Utiliser des fenêtres utilitaires" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "Fermer les onglets avec le bouton du milieu de la souris" #: FOption.form:1334 msgid "Show file name in window title" msgstr "Afficher le nom de fichier dans le titre de la fenêtre" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "Afficher le panneau de débogage si nécessaire" #: FOption.form:1368 msgid "Message style" msgstr "Style de message" #: FOption.form:1384 msgid "Layout" msgstr "Disposition" #: FOption.form:1419 msgid "Fonts" msgstr "Polices" #: FOption.form:1452 msgid "Global size" msgstr "Taille globale" #: FOption.form:1474 msgid "Title size" msgstr "Taille des titres" #: FOption.form:1496 msgid "Debugger size" msgstr "Taille du débogueur" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Impression" #: FOption.form:1588 msgid "Fixed font" msgstr "Police non-proportionnelle" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "Zoom (sauf le navigateur)" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "Installer la police Gambas dédiée à l'édition de code" #: FOption.form:1682 msgid "Themes" msgstr "Thèmes" #: FOption.form:1699 msgid "Icon theme" msgstr "Thème d'icône" #: FOption.form:1715 msgid "Highlighting theme" msgstr "Thème de coloration syntaxique" #: FOption.form:1729 msgid "Import theme" msgstr "Importer un thème" #: FOption.form:1735 msgid "Export theme" msgstr "Exporter le thème" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Console - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Console flottante" #: FOutput.form:72 msgid "Keep above" msgstr "Conserver au premier plan" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Suspendre le terminal" #: FOutput.form:104 msgid "Entered text echo" msgstr "Echo du texte saisi" #: FOutput.form:106 msgid "Echo" msgstr "Echo" #: FOutput.form:117 msgid "Open contents" msgstr "Ouvrir le contenu" #: FOutput.form:130 msgid "Use system charset" msgstr "Utiliser le jeu de caractères du système" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Impossible de coller le texte." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Contenu du presse-papiers" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Coller normalement" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Coller avec PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Veuillez entrer le nom de la table." #: FPasteTable.class:133 msgid "Table already exists" msgstr "La table existe déjà" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Copier aussi le contenu de la table" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Ce fichier ne ressemble pas à un fichier patch !" #: FPatch.form:18 msgid "Patch the current project" msgstr "Patcher le projet courant" #: FPatch.form:31 msgid "Select patch" msgstr "Sélectionnez un patch" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Revenir" #: FProfile.class:50 msgid "Profile #&1" msgstr "Profilage n°&1" #: FProfile.class:190 msgid "Bad profile file format" msgstr "Format de fichier de profilage incorrect" #: FProfile.class:421 msgid "&1 Mb" msgstr "&1 Mo" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "Durée totale &1 μs" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "Impossible de charger le fichier de profilage : &1" #: FProfile.class:713 msgid "Calls" msgstr "Appels" #: FProfile.class:716 msgid "Duration" msgstr "Durée" #: FProfile.class:719 msgid "Average" msgstr "Moyenne" #: FProfile.class:722 msgid "Self" msgstr "Propre" #: FProfile.class:1121 msgid "Profile files" msgstr "Fichiers de profilage" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "Impossible d'enregistrer le profilage." #: FProfile.form:60 msgid "Show relative durations" msgstr "Afficher des durées relatives" #: FProfile.form:67 msgid "Show average" msgstr "Afficher la moyenne" #: FProfile.form:74 msgid "Save profile" msgstr "Enregistrer le profilage" #: FProfile.form:126 msgid "Callees" msgstr "Fonctions appelées" #: FProfile.form:138 msgid "Callers" msgstr "Fonctions appelantes" #: FProjectProperty.class:55 msgid "Variable" msgstr "Variable" #: FProjectProperty.class:293 msgid "Snapping value is incorrect." msgstr "Le pas de la grille est incorrecte." #: FProjectProperty.class:826 msgid "&1 does not export any class." msgstr "&1 ne contient aucune classe exportée." #: FProjectProperty.class:834 msgid "&1 is already used as a library." msgstr "&1 est déjà utilisé comme bibliothèque." #: FProjectProperty.class:1002 msgid "Modules" msgstr "Modules" #: FProjectProperty.class:1003 msgid "Test modules" msgstr "Modules de test" #: FProjectProperty.class:1013 msgid "Functions" msgstr "Fonctions" #: FProjectProperty.class:1014 msgid "Lines of code" msgstr "Lignes de code" #: FProjectProperty.class:1015 msgid "Average number of lines by function" msgstr "Nombre moyen de lignes par fonction" #: FProjectProperty.class:1018 msgid "Executable size" msgstr "Taille de l'exécutable" #: FProjectProperty.class:1018 msgid "bytes" msgstr "octets" #: FProjectProperty.class:1035 msgid "Information about component" msgstr "Information sur le composant" #: FProjectProperty.class:1041 msgid "Information about library" msgstr "Information sur la bibliothèque" #: FProjectProperty.class:1421 msgid "Select a Gambas executable" msgstr "Choisissez un exécutable Gambas" #: FProjectProperty.class:1422 msgid "Gambas executable" msgstr "Exécutable Gambas" #: FProjectProperty.form:250 msgid "JIT compiler" msgstr "Compilateur « just-in-time »" #: FProjectProperty.form:300 msgid "General" msgstr "Général" #: FProjectProperty.form:366 msgid "Component" msgstr "Composant" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "Bibliothèque" #: FProjectProperty.form:366 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:373 msgid "Vendor" msgstr "Fournisseur" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Version" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "Obtenir depuis un fichier 'VERSION'" #: FProjectProperty.form:418 msgid "Title" msgstr "Titre" #: FProjectProperty.form:452 msgid "Information" msgstr "Information" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "Avancement" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "Terminé et stable" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "Ce composant est caché" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "Compatible jusqu'à la version" #: FProjectProperty.form:535 msgid "Include information from" msgstr "Inclure les informations de" #: FProjectProperty.form:547 msgid "Required features" msgstr "Fonctionnalités nécessaires" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "Composants nécessaires ou exclus" #: FProjectProperty.form:624 msgid "Require" msgstr "Nécessiter" #: FProjectProperty.form:630 msgid "Exclude" msgstr "Exclure" #: FProjectProperty.form:642 msgid "Remove All" msgstr "Tout supprimer" #: FProjectProperty.form:649 msgid "Components" msgstr "Composants" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Bibliothèques" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "Chemin de recherche des bibliothèques à l'exécution" #: FProjectProperty.form:737 msgid "Additional references" msgstr "Références supplémentaires" #: FProjectProperty.form:748 msgid "Environment" msgstr "Environnement" #: FProjectProperty.form:777 msgid "&Add" msgstr "Ajouter" #: FProjectProperty.form:817 msgid "Edition" msgstr "Édition" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Taille des tabulations" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "Afficher les composants et les contrôles dépréciés" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "Les modules sont publics par défaut" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Les contrôles des formulaires sont publics" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "Activer les avertissements" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "Ajouter la branche au numéro de version" #: FProjectProperty.form:979 FTranslate.form:415 msgid "Statistics" msgstr "Statistiques" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Cette ligne et les suivantes seront ignorées" #: FProjectVersion.class:36 msgid "Local" msgstr "Local" #: FProjectVersion.class:37 msgid "Remote" msgstr "Distant" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Veuillez saisir un nom d'utilisateur." #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "Veuillez saisir le journal." #: FProjectVersion.class:116 VersionControl.module:373 msgid "The project could not be committed." msgstr "Le projet n'a pu être publié." #: FProjectVersion.class:196 VersionControl.module:397 msgid "Unable to update project from repository." msgstr "Impossible de mettre à-jour le projet à partir du référentiel." #: FProjectVersion.class:198 VersionControl.module:399 msgid "Project has been updated from repository successfully." msgstr "Le projet a été mis à-jour depuis le référentiel avec succès." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Suivi de version du projet" #: FProjectVersion.form:65 msgid "Update" msgstr "Mise-à-jour" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Authentification" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Rafraîchir les informations" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "Journal" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Certains fichiers ne sont pas versionnés et doivent être ajoutés manuellement au référentiel." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Description précédente" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Le nom du contrôle contient des caractères interdits." #: FProperty.class:383 msgid "This name is already in use." msgstr "Ce nom de contrôle est déjà utilisé." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Le nom du groupe contient des caractères interdits." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valeur de propriété incorrecte." #: FProperty.class:631 msgid "The name of the control." msgstr "Le nom du controle." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Le groupe d'évènements auquel le control appartient." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Si les dimensions du formulaire et des contrôles doivent suivre la taille de la police par défaut." #: FProperty.class:661 msgid "If the control is public." msgstr "Si le contrôle est public." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Si la propriété Text doit être traduite." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Cette propriété est virtuelle: elle est implémentée par l'environnement de développement uniquement, et n'a pas d'existence pendant l'exécution du programme." #: FProperty.class:814 msgid "None" msgstr "Aucun" #: FProperty.form:51 msgid "Lock property" msgstr "Verrouiller la propriété" #: FProperty.form:58 msgid "Sort properties" msgstr "Trier les propriétés" #: FProxy.form:37 msgid "Port" msgstr "Port" #: FProxy.form:76 msgid "Default proxy" msgstr "Proxy par défaut" #: FProxy.form:76 msgid "HTTP proxy" msgstr "Proxy HTTP" #: FProxy.form:76 msgid "No proxy" msgstr "Aucun proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "Proxy SOCKS5" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "Vous ne pouvez publier un logiciel dont la version est \"0.0\"." #: FPublish.class:89 msgid "Software" msgstr "Logiciel" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "Le projet a été publié avec succès." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Impossible de publier le projet." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Les espaces ne sont pas autorisés." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Numéro de version incorrect." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Voulez-vous vraiment retirer toutes les étiquettes ?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Choisissez un fichier de capture d'écran" #: FPublish.class:329 msgid "Screenshot files" msgstr "Fichiers de capture d'écran" #: FPublish.form:67 msgid "Software description" msgstr "Description du logiciel" #: FPublish.form:98 FSoftwareFarm.form:346 msgid "Web site" msgstr "Site web" #: FPublish.form:113 msgid "Create menu entry" msgstr "Créer une entrée de menu" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Étiquettes" #: FPublish.form:164 msgid "Sort" msgstr "Trier" #: FPublish.form:176 msgid "Screenshot" msgstr "Capture d'écran" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Conserver la capture d'écran stockée sur le serveur" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Supprimer la capture d'écran stockée sur le serveur" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Envoyer une nouvelle capture d'écran récupérée depuis le presse-papiers" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Envoyer une nouvelle capture d'écran récupérée depuis le fichier suivant :" #: FPublish.form:222 msgid "Dependencies" msgstr "Dépendences" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Version de Gambas nécessaire" #: FPublish.form:295 msgid "Publish as" msgstr "Publier en tant que" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configuration de la bordure" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Coins" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Configuration de l'ombre" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Ombre" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configuration du pinceau" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "Sélectionnez une image située à l'intérieur du projet" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Valeur incorrecte." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Choisissez une dimension" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configuration de l'espacement" #: FSave.form:15 msgid "Save modified files" msgstr "Enregistrer les fichiers modifiés" #: FSave.form:43 msgid "Save All" msgstr "Tout enregistrer" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "Les fichiers suivants ont été modifiés. Désirez-vous les enregistrer ?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Impossible d'enregistrer un projet à l'intérieur de son propre répertoire." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Impossible d'enregistrer le projet." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Nouveau répertoire parent du projet" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nouveau nom du projet" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Capture d'écran" #: FSearch.class:530 msgid "Search string replaced once." msgstr "La chaîne de caractères recherchée à été remplacée une fois." #: FSearch.class:532 msgid "Search string replaced &1 times." msgstr "La chaîne de caractères a été remplacée &1 fois." #: FSearch.class:637 msgid "One match" msgstr "Une correspondance" #: FSearch.class:639 msgid "&1 matches" msgstr "&1 correspondances" #: FSearch.class:645 msgid "One replacement" msgstr "Un remplacement" #: FSearch.class:647 msgid "&1 replacements" msgstr "&1 remplacements" #: FSearch.class:950 msgid "Do you really want to replace every string?" msgstr "Voulez-vous vraiment remplacer l'ensemble des chaînes ?" #: FSearch.form:44 msgid "Search & Replace" msgstr "Rechercher & Remplacer" #: FSearch.form:112 msgid "Case sensitive" msgstr "Tenir compte de la casse" #: FSearch.form:117 msgid "Words only" msgstr "Mots seulements" #: FSearch.form:122 msgid "Regular expression" msgstr "Expression rationnelle" #: FSearch.form:127 msgid "Ignore strings" msgstr "Ignorer les chaînes" #: FSearch.form:132 msgid "Ignore comments" msgstr "Ignorer les commentaires" #: FSearch.form:148 msgid "Search in" msgstr "Rechercher dans" #: FSearch.form:154 msgid "Current function" msgstr "Fonction courante" #: FSearch.form:160 msgid "Current file" msgstr "Fichier courant" #: FSearch.form:167 msgid "Source files" msgstr "Fichiers sources" #: FSearch.form:173 msgid "Data files" msgstr "Fichiers de données" #: FSearch.form:204 msgid "Browse" msgstr "Parcourir" #: FSearch.form:216 msgid "Replace all" msgstr "Tout remplacer" #: FSearch.form:227 msgid "Highlight search" msgstr "Surligner la recherche" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Choisissez un fichier supplémentaire" #: FSelectIcon.class:40 msgid "Image files" msgstr "Fichiers images" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "Fichiers images SVG" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Sélectionnez une image" #: FSelectIcon.form:45 msgid "Stock" msgstr "Stock" #: FSelectIcon.form:73 msgid "Size preview" msgstr "Aperçu de la taille" #: FSelectLibrary.class:64 msgid "unknown" msgstr "inconnu" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Choisissez une bibliothèque" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "Aucune bibliothèque n'a été trouvée sur votre système." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Veuillez saisir une chaîne de déclenchement." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Cette chaîne de déclenchement est déjà utilisée." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Édition d'un fragment de code" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nouveau fragment de code" #: FSnippet.form:26 msgid "Trigger string" msgstr "Chaîne de déclenchement" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Jeux" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Développement" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Éducation" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Graphique" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "Son" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "Vidéo" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Bureautique" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Accessoires" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "Internet" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Extensions" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Mes logiciels" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Autres logiciels de" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Tous les logiciels" #: FSoftwareFarm.class:210 msgid "No software found." msgstr "Aucun logiciel n'a été trouvé." #: FSoftwareFarm.class:229 msgid "Request cancelled." msgstr "Requête annulée." #: FSoftwareFarm.class:376 msgid "Cancel my vote" msgstr "Annuler mon vote" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "Mettre à-jour" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "Publié &1 (&2)" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "Voulez-vous vraiment télécharger &1 ?" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "Impossible de télécharger &1 :" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "&1 a été téléchargé avec succès." #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "Voulez-vous vraiment mettre à-jour vers &1 ?" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "Impossible de mettre à-jour vers &1 :" #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "Voulez-vous vraiment désinstaller &1 ?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "Impossible de désinstaller &1 :" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "&1 a été désinstallé avec succès." #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "Voulez-vous vraiment installer &1 ?" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "Impossible d'installer &1 :" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "&1 a été installé avec succès." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "Impossible de modifier votre vote." #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "Désirez-vous vraiment supprimer &1 du serveur de publication ?" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "Impossible de supprimer &1 :" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Logithèque Gambas" #: FSoftwareFarm.form:159 FToolBox.form:31 FTranslate.form:206 msgid "Show" msgstr "Afficher" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Installés" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Les plus téléchargés" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Les plus récents" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Afficher les filtres" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Afficher les anciennes versions" #: FSoftwareFarm.form:398 msgid "Download" msgstr "Télécharger" #: FSoftwareFarm.form:406 msgid "Download and install" msgstr "Télécharger et installer" #: FSoftwareFarm.form:414 msgid "Vote" msgstr "Voter" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "Veuillez recopier ces informations dans tous vos rapports de bugs." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Choisissez une table" #: FTestSuite.class:87 msgid "Unable to load test suites." msgstr "Impossible de charger les suites de tests." #: FTestSuite.class:168 msgid "Test suite #&1" msgstr "Suite de tests n°&1" #: FTestSuite.class:206 msgid "This test suite already exists." msgstr "Cette suite de tests existe déjà." #: FTestSuite.class:282 msgid "Unable to save test suites." msgstr "Impossible d'enregistrer les suites de tests." #: FTestSuite.class:292 msgid "Do you really want to remove this test suite?" msgstr "Désirez-vous vraiment supprimer cette suite de tests ?" #: FTestSuite.form:41 msgid "Test with" msgstr "Tester avec" #: FTestSuite.form:78 msgid "New test suite" msgstr "Nouvelle série de tests" #: FTestSuite.form:85 msgid "Duplicate test suite" msgstr "Dupliquer la série de tests" #: FTestSuite.form:92 msgid "Rename test suite" msgstr "Renommer la série de tests" #: FTestSuite.form:99 msgid "Delete test suite" msgstr "Supprimer la série de tests" #: FTestSuite.form:132 msgid "Select all tests" msgstr "Sélectionner tous les tests" #: FTestSuite.form:139 msgid "Unselect all tests" msgstr "Déselectionner tous les tests" #: FText.class:12 msgid "Edit '&1' property" msgstr "Éditer la propriété « &1 »" #: FText.form:29 msgid "Use a fixed font" msgstr "Utiliser une police non proportionnelle" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "Sortie de console n°&1" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "Rafraîchissement de l'aperçu..." #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "Feuille de style par défaut" #: FTextEditor.class:1938 msgid "Example" msgstr "Exemple" #: FTextEditor.form:188 msgid "Sort ascent" msgstr "Tri ascendant" #: FTextEditor.form:194 msgid "Sort descent" msgstr "Tri descendant" #: FTextEditor.form:735 msgid "Toggle preview" msgstr "Basculer l'affichage de l'aperçu" #: FTextEditor.form:815 msgid "Load images" msgstr "Charger les images" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "Astuce du jour n°&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "Impossible de lire l'astuce du jour !" #: FTips.form:70 msgid "Show tips on startup" msgstr "Afficher les astuces au démarrage" #: FToolBox.class:26 msgid "Chooser" msgstr "Sélecteur" #: FToolBox.class:26 msgid "Container" msgstr "Conteneur" #: FToolBox.class:26 msgid "Dialog" msgstr "Dialogue" #: FToolBox.class:26 msgid "Network" msgstr "Réseau" #: FToolBox.class:26 msgid "Special" msgstr "Spécial" #: FToolBox.class:350 Project.module:865 msgid "Current project" msgstr "Projet courant" #: FToolBox.class:380 msgid "Help on &1" msgstr "Aide sur &1" #: FToolBox.form:35 msgid "Button size" msgstr "Taille des boutons" #: FToolBox.form:40 msgid "Tiny" msgstr "Minuscule" #: FToolBox.form:47 msgid "Small" msgstr "Petit" #: FToolBox.form:54 msgid "Medium" msgstr "Moyen" #: FToolBox.form:61 msgid "Large" msgstr "Large" #: FToolBox.form:68 msgid "Deprecated controls" msgstr "Contrôles dépréciés" #: FToolBox.form:119 msgid "Change button size" msgstr "Changer la taille des boutons" #: FToolBox.form:125 msgid "Show deprecated controls" msgstr "Afficher les contrôles dépréciés" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Le projet est vide. Il n'y a rien à traduire." #: FTranslate.class:74 msgid "Language" msgstr "Langage" #: FTranslate.class:77 msgid "Not translated" msgstr "Non traduit" #: FTranslate.class:175 msgid "Translation files" msgstr "Fichiers de traduction" #: FTranslate.class:336 msgid "Cannot read translation file for language '&1'" msgstr "Impossible de lire le fichier de traduction pour la langue « &1 »" #: FTranslate.class:575 msgid "Cannot save translation." msgstr "Impossible de sauvegarder la traduction." #: FTranslate.class:688 msgid "Do you really want to delete this translation ?" msgstr "Voulez-vous vraiment supprimer cette traduction ?" #: FTranslate.class:797 msgid "Do you really want to reload this translation ?" msgstr "Voulez-vous vraiment recharger cette traduction ?" #: FTranslate.class:811 msgid "Export a translation" msgstr "Exporter une traduction" #: FTranslate.class:1026 msgid "Please select the translation file to import." msgstr "Veuillez sélectionner le fichier de traduction à importer." #: FTranslate.class:1064 msgid "No translation were picked up." msgstr "Aucune traduction n'a été récupérée." #: FTranslate.class:1066 msgid "One translation was picked up." msgstr "Une traduction a été récupérée." #: FTranslate.class:1068 msgid "&1 translations were picked up." msgstr "&1 traductions ont été récupérées." #: FTranslate.class:1076 msgid "Cannot import translation file." msgstr "Impossible d'importer le fichier de traduction." #: FTranslate.class:1125 msgid "Everything seems to be correct." msgstr "Tout semble correct." #: FTranslate.class:1135 msgid "Translated string symbols do not match untranslated string ones." msgstr "Les symboles de la chaîne traduite ne correspondent pas à ceux de la chaîne non traduite." #: FTranslate.class:1161 msgid "&1 strings. Everything is translated!" msgstr "&1 chaînes de caractères. Tout est traduit !" #: FTranslate.class:1163 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 chaînes de caractères. Une n'est pas traduite. &3% effectué." #: FTranslate.class:1165 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 chaînes de caractères. &2 ne sont pas traduites. &3% effectué." #: FTranslate.class:1754 msgid "Automatic translation has failed." msgstr "La traduction automatique a échoué." #: FTranslate.class:1766 msgid "Do you want to fill the translation automatically?" msgstr "Voulez-vous remplir la traduction automatiquement ?" #: FTranslate.form:77 msgid "Project translation" msgstr "Traduction du projet" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Traduction automatique" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Chaînes non traduites" #: FTranslate.form:122 msgid "Translated strings" msgstr "Chaînes traduites" #: FTranslate.form:126 msgid "All strings" msgstr "Toutes les chaînes" #: FTranslate.form:195 msgid "Add a new translation" msgstr "Ajouter une nouvelle traduction" #: FTranslate.form:230 msgid "Save translation" msgstr "Enregistrer la traduction" #: FTranslate.form:238 msgid "Verify the translation" msgstr "Vérifier la traduction" #: FTranslate.form:240 msgid "Verify" msgstr "Vérifier" #: FTranslate.form:310 msgid "Find next translated string" msgstr "Trouver la prochaine chaîne traduite" #: FTranslate.form:316 msgid "Find previous translated string" msgstr "Trouver la chaîne traduite précédente" #: FTranslate.form:322 msgid "Find previous untranslated string" msgstr "Trouver la chaîne précédente non traduite" #: FTranslate.form:328 msgid "Find next untranslated string" msgstr "Trouver la prochaine chaîne non traduite" #: FTranslate.form:338 msgid "Clear this translation" msgstr "Effacer cette traduction" #: FTranslate.form:344 msgid "This string must not be translated" msgstr "Cette chaîne ne doit pas être traduite" #: FTranslate.form:350 msgid "Copy untranslated string" msgstr "Copier la chaîne non traduite" #: FTranslate.form:456 msgid "Import all translations recursively" msgstr "Importer toutes les traductions récursivement" #: FTranslate.form:462 msgid "Replace existing translations" msgstr "Remplacer les traductions existantes" #: FTranslate.form:478 msgid "Import a translation file" msgstr "Importer un fichier de traduction" #: FVersionControl.form:81 msgid "Hide translation changes" msgstr "Cacher les modifications des traductions" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "Il n'y a rien à publier." #: FVersionControl.form:117 msgid "Commit and push" msgstr "Publier et envoyer" #: FVersionControl.form:124 msgid "Push" msgstr "Envoyer" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Choisissez une police" #: FWelcome.class:69 msgid "New project..." msgstr "Nouveau projet..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Projets récents" #: FWelcome.class:73 Project.module:6604 msgid "Installed software" msgstr "Logiciels installés" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Bienvenue dans Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anonyme" #: FarmRequest.class:125 msgid "No answer." msgstr "Aucune réponse." #: FarmRequest.class:167 msgid "Register user" msgstr "Enregistrer un utilisateur" #: FarmRequest.class:242 msgid "Publish project" msgstr "Publier un projet" #: FarmRequest.class:363 msgid "Download software" msgstr "Télécharger le logiciel" #: FarmRequest.class:389 msgid "Delete software" msgstr "Supprimer le logiciel" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "Cette page n'existe pas." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Afrikaans (Afrique du Sud)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabe (Egypte)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabe (Tunisie)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azéri (Azerbaïdjan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgare (Bulgarie)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalan (Catalogne, Espagne)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Gallois (Royaume-Uni)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Tchèque (République Tchèque)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danois (Danemark)" #: Language.module:34 msgid "German (Germany)" msgstr "Allemand (Allemagne)" #: Language.module:35 msgid "German (Belgium)" msgstr "Allemand (Belgique)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grec (Grèce)" #: Language.module:41 msgid "English (common)" msgstr "Anglais (commun)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Anglais (Royaume Uni)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Anglais (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Anglais (Australie)" #: Language.module:45 msgid "English (Canada)" msgstr "Anglais (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Partout!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Espagnol (commun)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Espagnol (Espagne)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Espagnol (Argentine)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonien (Estonie)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basque (Pays basque)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Iran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finlandais (Finlande)" #: Language.module:68 msgid "French (France)" msgstr "Français (France)" #: Language.module:69 msgid "French (Belgium)" msgstr "Français (Belgique)" #: Language.module:70 msgid "French (Canada)" msgstr "Français (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Français (Suisse)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galicien (Espagne)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hébreu (Israël)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (Inde)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Hongrois (Hongrie)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croate (Croatie)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonésien (Indonésie)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandais (Irlande)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Islandais (Islande)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italien (Italie)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonais (Japon)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Cambodge)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Coréen (Corée)" #: Language.module:110 msgid "Latin" msgstr "Latin" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Lithuanien (Lithuanie)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (Inde)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macédonien (République de Macédoine)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Hollandais (Pays-bas)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Hollandais (Belgique)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norvégien (Norvège)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (Inde)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polonais (Pologne)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugais (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugais (Brésil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valencien (Communauté Valencienne, Espagne)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Roumain (Roumanie)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russe (Russie)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovénien (Slovénie)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanais (Albanie)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbe (Serbie & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Suèdois (Suède)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turque (Turquie)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ukrainien (Ukraine)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamien (Viet-nâm)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallon (Belgique)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Chinois simplifié (Chine)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Chinois traditionnel (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Inconnu" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "Impossible de compresser le fichier." #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Impossible de récupérer le mot de passe." #: MConnection.module:91 msgid "Unable to save password." msgstr "Impossible d'enregistrer le mot de passe." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Impossible de créer la table « &1 »." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Impossible de créer la table des métadonnées." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 ne peut pas être statique" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "La déclaration de &1 ne correspond pas" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 est déclaré mais n'est pas une fonction" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 n'est pas une structure" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 n'est pas déclaré" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 doit être statique" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: introuvable dans l'archive" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: erreur de syntaxe" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: erreur de syntaxe dans le fichier formulaire" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: trop de conteneurs imbriqués" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' est déjà déclaré" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' est surchargé incorrectement dans la classe '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' n'est pas une propriété" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' n'est pas statique" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' est en lecture seule" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' est statique" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' est en écriture seule" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' ou ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Un module ne peut pas émettre d'evènements" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Une implémentation de propriété ne peut pas être publique" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Une propriété doit être publique" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Accès interdit" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "L'alias doit être une chaîne de caractères" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Expression ambigüe. Veuillez utiliser des parenthèses" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "L'argument ne peut être passé en référence" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Les tableaux de structures ne sont pas supportés" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "L'assertion a échoué" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Archive incorrecte: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Argument incorrect" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Constante de caractère incorrecte au sein de la chaîne" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Type de constante incorrect" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Gestionnaire d'évènement incorrect dans &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Expression incorrecte: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Format du fichier de formulaire incorrect" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Format incorrect dans la section:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Chaîne de formatage incorrecte" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Nombre de dimensions incorrect" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Fichier projet incorrect à la ligne &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Expression rationnelle incorrecte: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Conversion de chaîne impossible" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Index de tableau incorrect" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Utilisation de classe virtuelle incorrecte" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Mauvaise chaîne de version" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Impossible de changer le répertoire courant vers '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Impossible de créer le fichier .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Impossible de créer le fichier des actions: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Impossible de créer le callback: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Impossible de créer le fichier des informations sur la classe: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Impossible de créer le fichier: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Impossible de créer le fichier d'archive temporaire: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Impossible de trouver la bibliothèque dynamique '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Impossible de trouver le symbole '&2' dans la bibliothèque dynamque '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Impossible d'hériter de soi-même" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Impossible d'hériter deux fois" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Impossible d'instancier les types natifs" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Impossible de charger la classe '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Impossible de charger le composant '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Impossible de charger le fichier source: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Impossible de créer l'exécutable: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Impossible de mélanger NEW et les tableaux incorporés" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Impossible de mélanger NEW et les structures incorporées" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Impossible d'ouvrir le fichier '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Imposible d'ouvrir le fichier: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Impossible d'émettre des évènements depuis une fonction statique" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Impossible de lire le fichier: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Impossible d'enregistrer la classe '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Impossible de supprimer le fichier '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Impossible de renommer le fichier '&1' en '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Impossible d'exécuter le processus enfant: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Impossible de changer le propriétaire du fichier: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "Impossible d'utiliser &1 plusieurs fois" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "Impossible d'utiliser &1 avec &2" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Impossible d'utiliser l'opérateur NEW ici" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "La classe '&1' n'est pas instanciable" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Opérateur de comparaison attendu" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "Le nom de composant doit être une chaîne" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Composant introuvable: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Chaîne de caractrères constante attendue" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Contenu déjà déclaré" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Le cas par défaut est déjà défini" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Le cas par défaut doit être le dernier" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Périphérique plein" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Le répertoire n'est pas vide" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Division par zéro" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Les symboles dynamiques ne peuvent être utilisées au sein d'une fonction statique" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Les tableaux incorporés sont interdits ici" #: MErrorMessage.module:90 msgid "End of file" msgstr "Fin de fichier atteinte" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Opérateur d'égalité ou d'inégalité attendu" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Expression trop complexe" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Expression trop complexe. Trop d'opérandes" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "Le nom de la bibliothèque externe doit être une chaîne" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Le fichier existe déjà" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Le fichier est un répertoire" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Le fichier est verrouillé" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Le nom de fichier est trop long" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Le fichier ou le répertoire n'existe pas" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "GOSUB interdit" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "GOTO interdit" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Référencement d'un objet libre" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Instruction illégale" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Erreur interne du compilateur" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Affectation invalide" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Date invalide" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Object invalide" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Chemin invalide" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() nécessite un argument de fonction" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Saut trop éloigné" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "L'étiquette '&1' n'est pas déclarée" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Le nom de la bibliothèque doit être une chaîne de caractères" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Variable de boucle déjà utilisée" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "Une variable de boucle ne peut être un argument" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "Une variable de boucle ne peut être globale" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME ne peut être utilisé au sein d'une fonction statique" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Erreur mathématique" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "#Endif manquant" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "']' manquant" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "'}' manquant" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Opérateur manquant" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Parenthèse fermante manquante" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "Tableau multidimensionnel" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "Les arguments de NEW ne peuvent être passés par référence" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Aucune méthode d'instanciation" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Classe parente introuvable" #: MErrorMessage.module:127 msgid "No return value" msgstr "Aucune valeur de retour" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Méthode de démarrage introuvable" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Chaîne de caractères non terminée" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "'&1' n'est pas un répertoire" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Fonction attendue" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Procédure attendue" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Tableau attendu" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Enumération attendue" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Objet attendu" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Pas assez d'arguments à New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Pas assez d'arguments" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Pas assez d'arguments à &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Fonctionnalité non encore implémentée" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Fonctionnalité non supportée" #: MErrorMessage.module:141 msgid "Null object" msgstr "Référence d'objet NULL" #: MErrorMessage.module:142 msgid "Number" msgstr "Nombre" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Nombre ou date attendu" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Nombre ou date" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Nombre, Date ou String" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Nombre, String ou Object" #: MErrorMessage.module:147 msgid "Object" msgstr "Object" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Dépassement de tableau" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Mémoire pleine" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Dépassement de capacité" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Dépassement de capacité" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Réimplémenter une classe déjà héritée est interdit" #: MErrorMessage.module:153 msgid "Read error" msgstr "Erreur de lecture" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "Tableau en lecture-seule" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Le type de la valeur de retour n'a pas été spécifié dans la déclaration de la fonction" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Instruction STOP rencontrée" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER ne peut être utilisé seul" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Erreur de sérialisation" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Débordement de pile" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Type standard" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Flux déjà fermé" #: MErrorMessage.module:162 msgid "String expected" msgstr "Chaîne de caractères attendue" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Les structures doivent être publiques" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Les arguments des routines prédéfinies ne peuvent être passées par référence" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Erreur de syntaxe" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Erreur de syntaxe dans la déclaration de fonction" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Erreur de syntaxe dans le nom d'évènement" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Erreur de syntaxe dans le mode d'ouverture du fichier" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Erreur de syntaxe dans le type de retour" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Erreur de syntaxe. &1 attendu" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Erreur de syntaxe. '...' doit être le dernier argument" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Erreur de syntaxe. CASE ou DEFAULT attendu après SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Erreur de syntaxe. CLASS doit être suivi d'un identificateur" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Erreur de syntaxe. Impossible d'utiliser cette syntaxe au sein d'une affection" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Erreur de syntaxe. INHERITS doit être suivi d'un nom de classe" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Erreur de syntaxe. Identificateur attendu" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "Erreur de syntaxe. Identificateur attendu pour le nom de la propriété" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "Erreur de syntaxe. Identificateur attendu pour le synonyme de la propriété" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "Erreur de syntaxe. Identificateur attendu pour la variable associée à la propriété" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Erreur de syntaxe. Le nom de fonction est un identificateur invalide" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Erreur de syntaxe. Paramètre optionnel invalide" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "Erreur de syntaxe. Type de propriété invalide" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Erreur de syntaxe. Type de retour invalide" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Erreur de syntaxe. Description du type du &1 argument incorrecte" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Erreur de syntaxe. Description du type du &1 champ incorrecte" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Erreur de syntaxe. Argument inutile" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Erreur de syntaxe. Une expression ne peut commencer par un point en dehors d'un bloc WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Erreur de syntaxe. STRUCT doit être suivi d'un identificateur" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Erreur de syntaxe. Le &1 argument n'est pas un identificateur valide" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Erreur de syntaxe. Le &1 champ n'est pas un identificateur valide" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Erreur de syntaxe. VarPtr() ne prend qu'un seul identificateur" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Erreur système n°&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "L'opérateur '!' doit être suivi d'un identificateur" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "L'opérateur '.' doit être suivi d'un identificateur" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "La fonction doit prendre un nombre d'arguments fixe" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "La méthode spéciale &1 ne peut être une fonction" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "La méthode spéciale &1 ne peut être implémentée" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "La méthode spéciale &1 ne peut être statique" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "La méthode spéciale &1 doit être une fonction" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "La méthode spéciale &1 doit être publique" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "La méthode spéciale &1 doit être statique" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "La méthode spéciale &1 doit retourner un Boolean" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "La méthode spéciale &1 doit prendre un nombre variable d'arguments" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "La méthode spéciale &1 doit prendre au moins un argument" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "La méthode spéciale &1 ne prend pas d'arguments" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "La méthode spéciale doit retourner un Integer" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "La méthode spéciale doit prendre un argument et un seul" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "La méthode spéciale doit prendre deux arguments exactement" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "La signature de la méthode spéciale est incorrecte" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Cette expression ne peut être une instruction" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Cette expression ne peut pas être passée par référence" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Trop d'arguments" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Trop d'arguments à &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Trop de déclarations de tableaux" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Trop de constantes" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Trop de classes différentes utilisées" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Trop de dimensions" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Trop de variables dynamiques" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Trop d'évènements" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Trop d'expressions dans CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Trop de fonctions externes" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Trop de fonctions" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Trop d'imbrications de #If...#Endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Trop d'étiquettes" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Trop de variables locales" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Trop de structure de contrôles imbriquées" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Trop de synonymes à la propriété" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Trop de créations simultanées de chaînes de caractères" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Trop de variables statiques" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Trop de symboles inconnus" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "'\\' en fin de chaîne" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Type incorrect" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Type incorrect: &1 attendu à la place de &2" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Impossible de créer la fermeture" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Impossible de lire la position du fichier" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Impossible de charger le fichier classe" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Impossible de préparer la description de la fonction" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "&1 inattendu" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Fin de ligne inattendue" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Chaîne de caractères inattendue" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "Classe '&1' inconnue" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Erreur inconnue" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Extension de fichier inconnue" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Identificateur inconnu: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Opérateur inconnu" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Symbole '&2' inconnu dans la classe '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Utilisateur ou groupe inconnu" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Type de donnée non supporté" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Conversion de chaîne de caractères non supportée" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "LOCK inutile" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "L'argument de VarPtr() doit être une variable dynamique, une variable statique ou bien une variable locale" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Identificateur vide" #: MErrorMessage.module:253 msgid "Void key" msgstr "Clef vide" #: MErrorMessage.module:254 msgid "Write error" msgstr "Erreur d'écriture" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "impossible de trouver le composant" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "impossible de trouver la bibliothèque" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "Nom de classe masqué par une déclaration globale : &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "Nom de classe masqué par une déclaration locale : &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "Contante masquée par une déclaration locale : &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "Fonction externe masquée par une déclaration locale : &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "Fonction masquée par une déclaration locale : &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "variable globale masquée par une déclaration locale : &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "Mélange d'entier et de booléen avec l'opérateur `&1'" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "variable globale non initialisée: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "variable non initialisée: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "erreur inconnue" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "argument inutilisé : &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "fonction externe inutilisée : &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "fonction inutilisée : &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "variable globale inutilisée : &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "variable inutilisée : &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "impossible d'ouvrir le pseudo-terminal esclave: " #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "impossible d'initialiser le pseudo-terminal: " #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "impossible de connecter l'entrée standard: " #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "impossible de connecter la sortie standard et la sortie d'erreur: " #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "impossible de démarrer l'exécutable: " #: MHelp.module:316 msgid "No help found." msgstr "Aide introuvable." #: MMime.module:17 msgid "Plain text" msgstr "Texte brut" #: MMime.module:18 msgid "HTML text" msgstr "Texte HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Données de formulaires Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Données de menus Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Chemin de fichier projet Gambas" #: MMime.module:22 msgid "URI list" msgstr "Liste d'URIs" #: MMime.module:33 msgid "Unknown format" msgstr "Format inconnu" #: MTheme.module:6 msgid "Alternate background" msgstr "Arrière-plan alternatif" #: MTheme.module:6 msgid "Characters" msgstr "Caractères" #: MTheme.module:6 msgid "Comments" msgstr "Commentaires" #: MTheme.module:6 msgid "Current line" msgstr "Ligne courante" #: MTheme.module:6 msgid "Data types" msgstr "Types de données" #: MTheme.module:6 msgid "Editing line" msgstr "Ligne en édition" #: MTheme.module:6 msgid "Errors" msgstr "Erreurs" #: MTheme.module:6 msgid "Highlighting" msgstr "Mise en évidence" #: MTheme.module:6 msgid "Keywords" msgstr "Mots-clés" #: MTheme.module:6 msgid "Labels" msgstr "Étiquettes" #: MTheme.module:6 msgid "Normal text" msgstr "Texte normal" #: MTheme.module:6 msgid "Numbers" msgstr "Nombres" #: MTheme.module:6 msgid "Operators" msgstr "Opérateurs" #: MTheme.module:6 msgid "Preprocessor" msgstr "Préprocesseur" #: MTheme.module:6 msgid "Strings" msgstr "Chaînes" #: MTheme.module:6 msgid "Subroutines" msgstr "Routines" #: MTheme.module:6 msgid "Symbols" msgstr "Symboles" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1' est introuvable." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1' et '&2' sont introuvables." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "Sauvegarde du fichier CHANGELOG." #: Package.module:743 msgid "Making &1 support package..." msgstr "Création du paquet de support &1..." #: Package.module:798 msgid "Creating package for &1." msgstr "Création du paquet pour &1." #: Package.module:830 msgid "The package build has failed." msgstr "La construction des paquets a échoué." #: Package.module:903 msgid "Making build directory." msgstr "Fabrication du répertoire de construction." #: Package.module:962 msgid "Creating desktop file..." msgstr "Création du fichier *.desktop..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "\"Debianisation\" des sources..." #: Package.module:1175 msgid "Creating package..." msgstr "Création du paquet..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' a échoué." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "Initialisation du répertoire ~/RPM." #: Package.module:1483 msgid "Creating source package." msgstr "Création du paquet des sources." #: Package.module:1507 msgid "Creating .spec file." msgstr "Creation du fichier .spec." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' a retourné le code d'erreur suivant :" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' a retourné le code d'erreur suivant:" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "'makepkg' a échoué." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "Le répertoire n'est pas un projet Gambas" #: Patch.class:52 Project.module:4835 msgid "Unsupported source archive format." msgstr "Format d'archive source non supporté." #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "Le patch n'a pas été appliqué :\n" #: Project.module:238 msgid "Automation" msgstr "Automatisation" #: Project.module:239 msgid "Basic" msgstr "Exemples de base" #: Project.module:241 msgid "Drawing" msgstr "Dessin" #: Project.module:244 msgid "Miscellaneous" msgstr "Divers" #: Project.module:245 msgid "Networking" msgstr "Programmation réseau" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "Son" #: Project.module:250 msgid "Controls" msgstr "Contrôles" #: Project.module:251 msgid "Multimedia" msgstr "Multimedia" #: Project.module:252 msgid "Web" msgstr "Web" #: Project.module:430 msgid "File not found!" msgstr "Fichier introuvable !" #: Project.module:545 msgid "This project does not exist." msgstr "Ce projet n'existe pas." #: Project.module:557 msgid "Unable to find Gambas IDE executable in directory:\n\n&1" msgstr "Impossible de trouver l'exécutable de l'EDI Gambas dans le répertoire :\n\n&1" #: Project.module:576 msgid "This is not a Gambas project." msgstr "Ce n'est pas un projet Gambas." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Ceci est un projet Gambas 1.0. Utilisez Gambas 2 pour le convertir." #: Project.module:582 msgid "Convert" msgstr "Convertir" #: Project.module:582 msgid "This is a Gambas 2.0 project.\n\nDo you want to convert it?" msgstr "Ceci est un projet Gambas 2.0.\n\nDésirez-vous le convertir ?" #: Project.module:600 msgid "Do not open" msgstr "Ne pas ouvrir" #: Project.module:600 msgid "Open after all" msgstr "Ouvrir malgré tout" #: Project.module:600 msgid "This project seems to be already opened.\n\nOpening the same project twice can lead to data loss." msgstr "Il semble que ce projet soit déjà ouvert.\n\nOuvrir le même projet deux fois peut provoquer des pertes de données." #: Project.module:606 msgid "It cannot be converted." msgstr "Il ne peut être converti." #: Project.module:606 msgid "This project is read-only." msgstr "Le projet est en lecture seule." #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "Les fichiers compressés sont maintenant générés avec l'exécutable. Par conséquent ils seront supprimés du projet." #: Project.module:614 msgid "This project includes compressed files." msgstr "Ce projet contient des fichiers compressés." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "Copie du projet dans un répertoire temporaire..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "Impossible de créer le répertoire temporaire" #: Project.module:668 msgid "Converting project structure..." msgstr "Conversion de la structure du projet..." #: Project.module:698 msgid "Applying conversion..." msgstr "Application de la conversion..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "Impossible d'appliquer la conversion" #: Project.module:749 msgid "Cannot open project file :" msgstr "Impossible d'ouvrir le projet :" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "Ce projet possède des fichiers classes dupliqués !" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "Des bibliothèques utilisées par le projet sont manquantes." #: Project.module:938 msgid "Cannot reload file." msgstr "Impossible de recharger le fichier." #: Project.module:1759 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "VERSION ALPHA, À UTILISER À VOS RISQUES ET PÉRILS !" #: Project.module:1761 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "VERSION DE DÉVELOPPEMENT, À UTILISER À VOS RISQUES ET PÉRILS !" #: Project.module:2134 msgid "Cannot open a binary file." msgstr "Impossible d'ouvrir un fichier binaire." #: Project.module:2172 msgid "Cannot open file." msgstr "Impossible d'ouvrir le fichier." #: Project.module:2330 msgid "&1th" msgstr "&1ème" #: Project.module:2396 msgid "in form definition" msgstr "dans la définition du formulaire" #: Project.module:2575 msgid "Some project source files are in conflict.\nPlease solve them if you want to compile the project." msgstr "Certains fichiers sources du projet sont en conflit.\nVeuillez résoudre ces conflits pour pouvoir compiler le projet." #: Project.module:2579 msgid "Compiling project" msgstr "Compilation du projet" #: Project.module:2604 msgid "

The compiler has crashed!

\nPlease report it to the Gambas bugtracker at:\n\nhttps://gambaswiki.org/bugtracker\n\nDo not forget to provide the full project so that the crash can be reproduced." msgstr "

Le compilateur a planté !

\nVeuillez le signaler sur le bugtracker de Gambas à l'adresse:\n\nhttps://gambaswiki.org/bugtracker\n\nN'oubliez-pas de fournir la projet complet afin de pouvoir reproduire le plantage." #: Project.module:2848 msgid "File already exists." msgstr "Ce fichier existe déja." #: Project.module:2882 msgid "Directory already exists." msgstr "Le répertoire existe déja." #: Project.module:2894 msgid "Cannot link template file." msgstr "Impossible de créer le lien vers le fichier modèle." #: Project.module:2900 msgid "Cannot copy template file." msgstr "Impossible de copier le fichier modèle." #: Project.module:2955 msgid "Forbidden directory name." msgstr "Ce nom de répertoire est interdit." #: Project.module:3123 msgid "The contents of VERSION file is incorrect." msgstr "Le contenu du fichier VERSION est incorrect." #: Project.module:3145 msgid "Cannot install library in &1." msgstr "Impossible d'installer la bibliothèque dans &1." #: Project.module:3190 msgid "Making executable..." msgstr "Génération de l'exécutable..." #: Project.module:3200 msgid "Do you really want to increment the project version and make the executable again?" msgstr "Voulez-vous vraiment incrémenter la version du projet et générer de nouveau l'exécutable ?" #: Project.module:3200 msgid "No change has been detected." msgstr "Aucun changement n'a été détecté." #: Project.module:3301 msgid "Cannot make executable." msgstr "Impossible de créer l'exécutable." #: Project.module:3783 msgid "Some components are missing: &1" msgstr "Certains composants ne sont pas installés : &1" #: Project.module:3999 msgid "Cannot write project file." msgstr "Impossible d'écrire le fichier projet." #: Project.module:4051 msgid "Unable to create desktop shortcut." msgstr "Imposible de créer le raccourci sur le bureau." #: Project.module:4312 msgid "The directory will be removed at the next commit." msgstr "Le répertoire sera supprimé à la prochaine publication." #: Project.module:4330 msgid "You must define a startup class or form!" msgstr "Vous devez définir une classe ou un formulaire de démarrage !" #: Project.module:4361 msgid "Please type a name." msgstr "Veuillez saisir un nom." #: Project.module:4365 msgid "This name contains a forbidden character:" msgstr "Ce nom contient un caractère interdit:" #: Project.module:4369 msgid "The name cannot begins with a dot." msgstr "Le nom ne peut pas commencer par un point." #: Project.module:4373 msgid "This name is already used. Choose another one." msgstr "Ce nom est déjà utilisé. Choisissez-en un autre." #: Project.module:4409 msgid "Space" msgstr "Espace" #: Project.module:4411 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Un nom de classe doit commencer par une lettre ou un caractère '_', et être suivi par des lettres ou des chiffres. " #: Project.module:4454 msgid "Destination already exists." msgstr "La destination existe déjà." #: Project.module:4612 msgid "Unable to rename '&1'" msgstr "Impossible de renommer « &1 »" #: Project.module:4729 msgid "Please type a project name." msgstr "Veuillez saisir un nom de projet." #: Project.module:4737 msgid "The project name cannot begin with a dot." msgstr "Un nom de projet ne peut commencer par un point." #: Project.module:4740 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Un nom de projet ne peut contenir que des caractères ASCII." #: Project.module:4741 msgid "SPACE" msgstr "ESPACE" #: Project.module:4741 msgid "The following characters are forbidden in a project name:" msgstr "Les caractères suivants sont interdits dans un nom de projet :" #: Project.module:4748 msgid "This project already exists." msgstr "Ce projet existe déjà." #: Project.module:4751 msgid "The project directory already exists." msgstr "Le répertoire du projet existe déjà." #: Project.module:4753 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Le répertoire du projet ne peut être créé car un fichier avec le même nom existe déjà." #: Project.module:4841 msgid "Unable to create source archive." msgstr "Impossible de créer l'archive source." #: Project.module:5159 msgid "Cannot copy file &1." msgstr "Impossible de copier le fichier &1." #: Project.module:5207 msgid "Cannot create link &1." msgstr "Impossible de créer le lien &1." #: Project.module:5222 msgid "Cannot move a directory inside itself." msgstr "Impossible de déplacer un répertoire à l'intérieur de lui-même." #: Project.module:5286 msgid "Cannot move file &1." msgstr "Impossible de déplacer le fichier &1." #: Project.module:5499 msgid "The following files couldn't be removed:" msgstr "Les fichiers suivants n'ont pu être supprimés :" #: Project.module:5983 msgid "Project cleanup..." msgstr "Nettoyage du projet..." #: Project.module:5989 msgid "Project files conversion..." msgstr "Conversion des fichiers du projet..." #: Project.module:6019 msgid "Unable to convert &1" msgstr "Impossible de convertir &1" #: Project.module:6299 msgid "Unable to update forms." msgstr "Impossible de mettre à-jour les formulaires." #: Project.module:6389 msgid "The &1 program is not installed on your system." msgstr "Le programme &1 n'est pas installé sur votre système." #: Project.module:6391 msgid "The following programs are not installed on your system: &1." msgstr "Les programmes suivants ne sont pas installés sur votre système : &1." #: Project.module:6482 msgid "Unable to read component description file." msgstr "Impossible de lire le fichier de description du composant." #: Project.module:6543 msgid "Cannot write component description file." msgstr "Impossible d'écrire le fichier de description du composant." #: Project.module:6604 msgid "Project templates" msgstr "Modèles de projet" #: Project.module:6650 msgid "Unable to run terminal." msgstr "Impossible de démarrer le terminal." #: Save.module:57 msgid "Cannot save file !" msgstr "Impossible d'enregistrer le fichier !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Publié &1" #: Util.module:6 msgid "&1 B" msgstr "&1 o" #: Util.module:8 msgid "&1 KiB" msgstr "&1 Kio" #: Util.module:10 msgid "&1 MiB" msgstr "&1 Mio" #: Util.module:12 msgid "&1 GiB" msgstr "&1 Gio" #: Util.module:46 msgid "Incorrect format" msgstr "Format incorrect" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "Veuillez définir la variable d'environnement $EDITOR avec votre éditeur de texte graphique favori. Les commandes de suivi de version en ont besoin." #: VersionControl.module:170 msgid "Command timeout." msgstr "La commande ne répond pas." #: VersionControl.module:170 msgid "Please check your network connection." msgstr "Veuillez vérifier votre connexion réseau." #: VersionControl.module:555 msgid "Do you really want to put this project under version control with &1?" msgstr "Voulez-vous vraiment mettre ce projet sous suivi de version avec &1 ?" #: VersionControl.module:569 msgid "The project could not be put under version control." msgstr "Impossible de mettre le projet sous suivi de version." #: VersionControl.module:654 msgid "Unable to switch to branch `&1`." msgstr "Impossible de basculer sur la branche `&1`." #: VersionControl.module:676 msgid "With &1" msgstr "Avec &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Il y a &1 classes et &2 symboles dans l'ensemble des composants de Gambas." #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "Cette page n'existe pas dans le langage courant." #: WikiMarkdown.class:142 msgid "Since" msgstr "Depuis la version" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Ce composant n'existe pas." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Cette classe n'existe pas." #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Ce symbole n'existe pas." gambas-3.16.3/app/src/gambas3/.lang/gl_ES.po000066400000000000000000005005641411575327000202710ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FLocal.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FWatch.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/david/gambas-0.90/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2021-03-28 16:17 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 msgid "Static properties" msgstr "" #: CClassInfo.class:616 msgid "Static variables" msgstr "" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Propiedades" #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "" #: CClassInfo.class:638 msgid "Events" msgstr "" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "" #: CClassInfo.class:681 msgid "creatable" msgstr "" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:694 msgid "function" msgstr "" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "" #: CClassInfo.class:699 msgid "write" msgstr "" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 msgid "static function" msgstr "" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "Manter información da depuración no executable" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Clases" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Clase" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descrición" #: CComponent.class:598 #, fuzzy msgid "This component is not stable yet." msgstr "Este proxecto xa existe." #: CComponent.class:600 #, fuzzy msgid "This component is deprecated." msgstr "Este proxecto xa existe." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "" #: CComponent.class:621 msgid "Implements" msgstr "" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:648 msgid "Excludes" msgstr "" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:137 msgid "Report designer" msgstr "" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "Compoñente" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:144 msgid "Application settings management" msgstr "" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "Alineamento" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "Compoñente" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "Compoñente" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 #, fuzzy msgid "Insert today's date" msgstr "&Insertar" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "Formulario" #: CModule.class:29 msgid "Forms" msgstr "Formularios" #: CModule.class:29 msgid "Gambas forms" msgstr "Formularios de Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Formularios de Gambas" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "Formulario" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Formularios" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Formularios de Gambas" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "Formulario" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Formularios" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "Cancelar" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "¿Realmente quere borrar este ficheiro?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "" #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Proxecto" #: CProjectTree.class:373 msgid "Sources" msgstr "" #: CProjectTree.class:375 msgid "Connections" msgstr "" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Daos" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "Facer o executable..." #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "Non se pode borrar o ficheiro ou directorio" #: CSoftware.class:664 msgid "yesterday" msgstr "" #: CSoftware.class:666 msgid "&1 days ago" msgstr "" #: CSoftware.class:672 msgid "last week" msgstr "" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 msgid "last month" msgstr "" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 msgid "on &1" msgstr "" #: CVersionControlGit.class:341 #, fuzzy msgid "Unable to push the project." msgstr "Non se pode renomear '&1'" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "Liña actual" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "Proxectos recentes" #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "Proxectos recentes" #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "Proxectos recentes" #: CVersionControlGit.class:394 msgid "Status" msgstr "" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "OK" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "" #: Design.module:229 Project.module:2325 msgid "second" msgstr "" #: Design.module:231 Project.module:2327 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 #, fuzzy msgid "The program has been terminated." msgstr "" "O probrama retornou\n" "o valor: &1" #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" "O probrama retornou\n" "o valor: &1" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "" "O probrama retornou\n" "o valor: &1" #: Design.module:1064 msgid "Output terminal" msgstr "" #: Design.module:1092 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licenza" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Acerca de Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "Argumentos" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Executar" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Pechar" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "Cor" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:40 msgid "Free" msgstr "" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Elixa un proxecto" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "Recargar" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Editar" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Texto" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "Cortar" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "Copiar" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "Pegar" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "Desfacer" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "Refacer" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "Gardar" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "Comentario" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "Sen comentar" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "Seleccionar todo" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "Ir a liña" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "Código" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "Nome" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "Tipo" #: FConnectionEditor.class:61 msgid "Length" msgstr "" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Compilación" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Índice" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Eliminar" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Renomear" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "" #: FConnectionEditor.form:217 msgid "Run query" msgstr "" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "Novo" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Limpar" #: FConnectionEditor.form:309 msgid "Fields" msgstr "" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Abaixo" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Arriba" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "" #: FConnectionEditor.form:389 msgid "New index" msgstr "" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Borrar" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Seleccionar todo" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "Opcións" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "Non dispoñible" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Por favor introduza un nome." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Novo proxecto" #: FCreateProject.form:46 msgid "Project type" msgstr "" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "Directorio" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Propiedades do proxecto" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "O proxecto é traducible" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 #, fuzzy msgid "Debugging" msgstr "Depuración" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Consola" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "Puntos de interrupción" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 #, fuzzy msgid "Search result" msgstr "Buscar" #: FDebugExpr.class:4 msgid "not available" msgstr "Non dispoñible" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Valor" #: FDebugExpr.class:511 msgid "Key" msgstr "" #: FDebugExpr.class:517 msgid "Symbol" msgstr "" #: FDebugExpr.form:33 msgid "Watch" msgstr "" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "Liña" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Ficheiro" #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:125 msgid "native code" msgstr "Código nativo" #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "Analizar expresion" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "¿Desexa limpar a lista de expresións?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1255 msgid "Current object" msgstr "" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "Depuración" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:137 msgid "Add expression" msgstr "" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "Cambiar punto de interrupción" #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "Cambiar punto de interrupción" #: FDebugInfo.form:220 msgid "Disable" msgstr "" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "Cambiar punto de interrupción" #: FDebugInfo.form:228 msgid "Enable" msgstr "" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:474 msgid "Show search window" msgstr "" #: FDebugInfo.form:481 msgid "Search again" msgstr "" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "Non se atopou a cadea buscada" #: FEditor.class:409 msgid "Column" msgstr "" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "" #: FEditor.form:202 msgid "Sort procedures" msgstr "" #: FEditor.form:232 msgid "Go to" msgstr "Ir a" #: FEditor.form:251 msgid "Find definition" msgstr "" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "Cambiar punto de interrupción" #: FEditor.form:322 msgid "Watch expression" msgstr "Analizar expresion" #: FEditor.form:331 msgid "Open form" msgstr "" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "Imprimir" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Editor" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "Gardar ficheiros modificados" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 msgid "Previous modification" msgstr "" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 #, fuzzy msgid "Insert special character" msgstr "&Insertar" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "" #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Non se pode renomear '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "Continuar" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "Directorio" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Módulos de Gambas" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "Editar a lista de propiedades" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:136 msgid "Bad form file" msgstr "Ficheiro de formulario incorrecto" #: FForm.class:284 msgid "Unknown control: &1" msgstr "" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "Non se pode gardar a tradución." #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "Seleccionar" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "Elixa un proxecto" #: FForm.form:245 msgid "Arrangement" msgstr "Alineamento" #: FForm.form:249 msgid "Bring to foreground" msgstr "Enviar o frente" #: FForm.form:256 msgid "Send to background" msgstr "Enviar o fondo" #: FForm.form:266 msgid "Horizontal" msgstr "" #: FForm.form:273 msgid "Rows" msgstr "" #: FForm.form:279 msgid "Vertical" msgstr "" #: FForm.form:286 msgid "Columns" msgstr "" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "Aliñamento" #: FForm.form:311 msgid "Align to left" msgstr "Aliñamento a esquerda" #: FForm.form:317 msgid "Align to right" msgstr "Aliñamento a dereita" #: FForm.form:323 msgid "Align to top" msgstr "Aliñamento superior" #: FForm.form:329 msgid "Align to bottom" msgstr "Aliñamento inferior" #: FForm.form:338 msgid "Same width" msgstr "Mesmo ancho" #: FForm.form:344 msgid "Same height" msgstr "Mesma altura" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "Seguinte" #: FForm.form:387 msgid "Last" msgstr "" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "Edior de menú" #: FForm.form:407 msgid "Event" msgstr "Evento" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "" #: FForm.form:786 msgid "Italic" msgstr "" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Fondo" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Buscar axuda" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "Tradución" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selección" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "Preferencias" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "Selección" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Debuxar" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Rectángulo" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipse" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 #, fuzzy msgid "Colorize" msgstr "Cor" #: FImageProperty.form:400 msgid "Desaturate" msgstr "" #: FImageProperty.form:408 msgid "Make transparent" msgstr "" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "Liña" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "Liña" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Tamaño" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "Traducir" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Classes de Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Módulos de Gambas" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Módulos de Gambas" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "Ficheiros de imaxes" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "Non se pode mover o ficheiro &1." #: FImportFile.form:9 msgid "Import files" msgstr "" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "Todos os ficheiros" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:78 msgid "Charset" msgstr "" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Por favor introduza un nome." #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Este proxecto xa existe." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Gardar" #: FLayout.form:22 #, fuzzy msgid "Layout name" msgstr "Renomear" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Editar a lista de propiedades" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "¿Realmente quere borrar este directorio?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "¿Realmente quere borrar este ficheiro?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Non se pode borrar o ficheiro ou directorio" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:773 msgid "Sort history" msgstr "" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "" #: FMain.class:789 msgid "&Clear history" msgstr "&Limpar historial" #: FMain.class:969 msgid "New folder" msgstr "Novo cartafol" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1904 msgid "Clean" msgstr "" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Abrir proxecto" #: FMain.form:313 msgid "Open recent" msgstr "Abrir recente" #: FMain.form:321 msgid "Open example" msgstr "Abrir exemplo" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "Gardar proxecto" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "Elixa un proxecto" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Sair" #: FMain.form:402 Project.module:6969 #, fuzzy msgid "Save as" msgstr "Gardar" #: FMain.form:442 msgid "Compile" msgstr "Compilar" #: FMain.form:449 msgid "Compile All" msgstr "Compilar todo" #: FMain.form:459 msgid "Translate" msgstr "Traducir" #: FMain.form:468 msgid "Make" msgstr "" #: FMain.form:472 msgid "Executable" msgstr "" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "" #: FMain.form:486 msgid "Installation package" msgstr "" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:570 msgid "Refresh" msgstr "Refrescar" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Pausar" #: FMain.form:630 msgid "Stop" msgstr "Parada" #: FMain.form:637 msgid "Step" msgstr "Paso" #: FMain.form:644 msgid "Forward" msgstr "Adiante" #: FMain.form:651 msgid "Finish" msgstr "" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "" #: FMain.form:713 msgid "Current desktop" msgstr "" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "" #: FMain.form:770 msgid "Close all debug windows" msgstr "" #: FMain.form:808 msgid "Status bar" msgstr "" #: FMain.form:815 msgid "Hide menubar" msgstr "" #: FMain.form:839 msgid "Close all windows" msgstr "Pechar todas as fiestras" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "Buscar" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Substituír" #: FMain.form:866 msgid "Browse project" msgstr "" #: FMain.form:873 msgid "Open a terminal" msgstr "" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Preferencias" #: FMain.form:924 msgid "Directory" msgstr "Directorio" #: FMain.form:929 msgid "Project link" msgstr "" #: FMain.form:938 msgid "Module" msgstr "Módulo" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr "Módulos de Gambas" #: FMain.form:1004 msgid "HTML file" msgstr "" #: FMain.form:1011 msgid "Style sheet" msgstr "" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Recente" #: FMain.form:1059 msgid "Open in file manager" msgstr "" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "Abrir proxecto" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "" #: FMain.form:1132 msgid "Startup class" msgstr "Clase de inicio" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr "Gardar ficheiros modificados" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "Ficheiros de tradución" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "Gardar ficheiros modificados" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "Traducir" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "Facer o executable..." #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Trucos do dia" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Propiedades do proxecto" #: FMain.form:1429 msgid "Refresh project" msgstr "" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "" #: FMain.form:1471 msgid "Make source archive" msgstr "" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "" #: FMain.form:1500 msgid "Properties sheet" msgstr "Folla de propiedades" #: FMain.form:1509 msgid "Toolbox" msgstr "Caixa de ferramentas" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "Buscar" #: FMain.form:1551 msgid "Compile all" msgstr "Compilar todo" #: FMain.form:1600 msgid "Finish current function" msgstr "" #: FMain.form:1616 msgid "Show menubar" msgstr "" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "&Ficheiro" #: FMain.form:1730 msgid "&Project" msgstr "&Proxecto" #: FMain.form:1742 msgid "&Debug" msgstr "" #: FMain.form:1754 msgid "&View" msgstr "&Vista" #: FMain.form:1766 msgid "&Tools" msgstr "&Ferramentas" #: FMain.form:1778 msgid "&?" msgstr "&?" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "Novo proxecto" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "Folla de propiedades" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "Amosar trucos" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Manter información da depuración no executable" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "" #: FMakeInstall.class:137 msgid "Min. version" msgstr "" #: FMakeInstall.class:138 msgid "Max. version" msgstr "" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "Crear paquete do código" #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "" #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "" #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "" #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "Por favor introduza un nome." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "" #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:558 msgid "Initial release" msgstr "" #: FMakeInstall.class:814 msgid "Menus" msgstr "" #: FMakeInstall.class:882 msgid "Groups" msgstr "" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "Crear paquete do código" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Paquetes fonte" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "Crear paquete do código" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "" #: FMenu.class:346 msgid "Bad menu name !" msgstr "¡ Nome de menú incorrecto !" #: FMenu.class:352 msgid "Bad group name !" msgstr "¡ Nome de grupo incorrecto !" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Este menu é demasiado profundo !" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "Modificado" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 #, fuzzy msgid "Insert separator" msgstr "&Insertar" #: FMenu.form:104 #, fuzzy msgid "Insert menu before" msgstr "&Insertar" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "&Insertar" #: FMenu.form:113 #, fuzzy msgid "Delete menu" msgstr "Borrar" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "&Insertar" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Premer en insertar para engadir un novo menú." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 msgid "Create database" msgstr "" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Borrar" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 msgid "No password" msgstr "" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Elixa un proxecto" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Exemplos" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Pegar" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "Escritorio" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:267 msgid "Export a theme file" msgstr "" #: FOption.class:498 msgid "Select a theme file" msgstr "" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "¿Realmente quere borrar este ficheiro?" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 #, fuzzy msgid "Network is not available." msgstr "Non dispoñible" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "Non se pode copiar o ficheiro &1." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 msgid "Unable to install documentation." msgstr "" #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "Compilación" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "Liña actual" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "¿Realmente quere borrar esta traducción?" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "¿Realmente quere borrar este ficheiro?" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 msgid "Identity" msgstr "" #: FOption.form:350 msgid "Package maintainer" msgstr "" #: FOption.form:395 msgid "Default license" msgstr "" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "Proxecto" #: FOption.form:456 msgid "Default tab size" msgstr "" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 msgid "Activate version control" msgstr "" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Compilación" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "Enviar o fondo" #: FOption.form:569 msgid "Images" msgstr "" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Limpar esta tradución" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Ficheiros de tradución" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "" #: FOption.form:670 msgid "Show documentation in popups" msgstr "" #: FOption.form:687 msgid "Always display optional messages" msgstr "" #: FOption.form:699 msgid "Documentation" msgstr "" #: FOption.form:710 msgid "Use offline documentation" msgstr "" #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "" #: FOption.form:787 msgid "Applications" msgstr "" #: FOption.form:798 msgid "Browser" msgstr "" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "" #: FOption.form:875 msgid "Highlight modified lines" msgstr "" #: FOption.form:892 msgid "Show line numbers" msgstr "" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:960 msgid "Show Preview" msgstr "" #: FOption.form:978 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Code formatting" msgstr "" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 msgid "Control structure completion" msgstr "" #: FOption.form:1021 msgid "Local variable declaration" msgstr "" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "Comentarios" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "Pechar todas as fiestras" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "" #: FOption.form:1155 msgid "Code snippets" msgstr "" #: FOption.form:1171 msgid "Activate code snippets" msgstr "" #: FOption.form:1232 msgid "Interface" msgstr "" #: FOption.form:1249 msgid "Activate animations" msgstr "" #: FOption.form:1266 msgid "Show shadows" msgstr "" #: FOption.form:1283 msgid "Show tooltips" msgstr "Amosar trucos" #: FOption.form:1300 msgid "Use utility windows" msgstr "" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 msgid "Message style" msgstr "" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 msgid "Debugger size" msgstr "" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Imprimir" #: FOption.form:1588 msgid "Fixed font" msgstr "" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 msgid "Themes" msgstr "" #: FOption.form:1698 msgid "Icon theme" msgstr "" #: FOption.form:1714 msgid "Highlighting theme" msgstr "" #: FOption.form:1728 msgid "Import theme" msgstr "" #: FOption.form:1734 msgid "Export theme" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Abrir recente" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Non se pode renomear '&1'" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "Propiedades do proxecto" #: FProjectEditor.form:77 msgid "Image preview" msgstr "" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "Propiedades do proxecto" #: FProjectProperty.class:55 msgid "Variable" msgstr "" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "Valor actual incorrecto" #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:1000 msgid "Modules" msgstr "Módulos" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "Módulos de Gambas" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "Edicion" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 msgid "Executable size" msgstr "" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "" #: FProjectProperty.class:1039 msgid "Information about library" msgstr "" #: FProjectProperty.class:1419 #, fuzzy msgid "Select a Gambas executable" msgstr "Facer o executable..." #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "Facer o executable..." #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "Compilar" #: FProjectProperty.form:300 msgid "General" msgstr "Xeral" #: FProjectProperty.form:366 msgid "Component" msgstr "Compoñente" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "" #: FProjectProperty.form:373 msgid "Vendor" msgstr "" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versión" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:418 msgid "Title" msgstr "Título" #: FProjectProperty.form:452 #, fuzzy msgid "Information" msgstr "Compilación" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 msgid "Include information from" msgstr "" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 msgid "Exclude" msgstr "" #: FProjectProperty.form:642 msgid "Remove All" msgstr "" #: FProjectProperty.form:649 msgid "Components" msgstr "Compoñentes" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "Preferencias" #: FProjectProperty.form:748 msgid "Environment" msgstr "" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Edicion" #: FProjectProperty.form:827 msgid "Tab size" msgstr "" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Os controis do formulario son públicos" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "" #: FProperty.class:383 msgid "This name is already in use." msgstr "" #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "" #: FProperty.class:469 msgid "Incorrect property value." msgstr "" #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "ningún" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "" #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 msgid "Incorrect version number." msgstr "" #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "¿Realmente quere recargar esta traducción?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Elixa un proxecto" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Ficheiros de imaxes" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "Descrición" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr "Gardar ficheiros modificados" #: FSave.form:43 msgid "Save All" msgstr "" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "A cadea buscada reemplazouse unha vez" #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "A cadea buscada reemplazouse &1 veces" #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Liña actual" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Tipos de datos" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 msgid "Highlight search" msgstr "" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:40 msgid "Image files" msgstr "" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Seleccionar un" #: FSelectIcon.form:45 msgid "Stock" msgstr "" #: FSelectIcon.form:73 msgid "Size preview" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Descoñecido" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Seleccionar todo" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "Edicion" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "Expresión" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "Cancelar" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr "¿Realmente quere borrar este ficheiro?" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr "Non se pode renomear '&1'" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "¿Realmente quere borrar este ficheiro?" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Non se pode renomear '&1'" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "¿Realmente quere borrar este ficheiro?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr "¿Realmente quere borrar este ficheiro?" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr "Non se pode renomear '&1'" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "" #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "¿Realmente quere borrar este ficheiro?" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr "Non se pode renomear '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Formularios de Gambas" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "Abrir recente" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "Amosar trucos" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "Amosar trucos" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "Abaixo" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Non se pode renomear '&1'" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Este proxecto xa existe." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Facer o executable..." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "¿Realmente quere recargar esta traducción?" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "Borrar" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "Seleccionar todo" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr "Seleccionar todo" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Editar a lista de propiedades" #: FText.form:29 msgid "Use a fixed font" msgstr "" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "Exemplos" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "Cambiar punto de interrupción" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "¡ Non se pode leer o truco do dia !" #: FTips.form:70 msgid "Show tips on startup" msgstr "Mostrar trucos o principio" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "Continuar" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 msgid "Network" msgstr "" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "Abrir proxecto" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "O proxecto está vacio. Non hai nada que traducir." #: FTranslate.class:74 msgid "Language" msgstr "" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Traducir" #: FTranslate.class:169 msgid "Translation files" msgstr "Ficheiros de tradución" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "Non se pode leer o ficheiro da tradución da linguaxe '&1'" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "Non se pode gardar a tradución." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "¿Realmente quere borrar esta traducción?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "¿Realmente quere recargar esta traducción?" #: FTranslate.class:802 msgid "Export a translation" msgstr "Exportar unha traducción" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "" #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "Todo parece estar correcto." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "Os símbolos das cadeas traducidas non coinciden cos das cadeas sen traducir." #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "Ficheiros de tradución" #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "¿Realmente quere borrar esta traducción?" #: FTranslate.form:77 msgid "Project translation" msgstr "" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Limpar esta tradución" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Exportar unha traducción" #: FTranslate.form:232 msgid "Save translation" msgstr "" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verificar a traducción" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Buscar a seguinte liña sen traducir" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Buscar a seguinte liña sen traducir" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Buscar a seguinte liña sen traducir" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Limpar esta tradución" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Esta cadea non debe ser traducida" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copiar cadea sen traducir" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "Limpar esta tradución" #: FTranslate.form:480 msgid "Import a translation file" msgstr "" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "Ficheiros de tradución" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Selección" #: FWelcome.class:69 msgid "New project..." msgstr "Novo proxecto..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Proxectos recentes" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Proxecto" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 #, fuzzy msgid "Delete software" msgstr "Borrar" #: HelpView.class:39 Wiki.module:816 #, fuzzy msgid "This page does not exist." msgstr "Este proxecto xa existe." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arábico (Exipto)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arábico (Tunicia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Búlgaro (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Galeico (Reino Unido)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danés (Dinamarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Alemán (Alemania)" #: Language.module:35 msgid "German (Belgium)" msgstr "Alemán (Bélxica)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grego (Grecia)" #: Language.module:41 msgid "English (common)" msgstr "Inglés (común)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inglés (Reino Unido)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inglés (U.S.A)" #: Language.module:44 msgid "English (Australia)" msgstr "Inglés (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Inglés (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Inglés (común)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Español (España)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Español (Arxentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Frances (Francia)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francés (Bélxica)" #: Language.module:70 msgid "French (Canada)" msgstr "Francés (Canadá)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francés (Suiza)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galego (España)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Húngaro (Hungría)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croata (Croacia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesio (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Galéico (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Iataliano (Italia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Flamenco (Holanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Alemán (Bélgica)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Noruego (noruega)" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polaco (Polonia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugués (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugés (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ruso (Rusia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Sueco (Suecia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turco (Turquía)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valón (Belxica)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "" #: Language.module:220 msgid "Unknown" msgstr "Descoñecido" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Ficheiros de tradución" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "¡ Non se pode gardar o ficheiro !" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "¡ Non se pode gardar o ficheiro !" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Camiño non válido" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Desbordamento da pila" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Non se pode copiar o ficheiro &1." #: MErrorMessage.module:242 msgid "Unknown error" msgstr "" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Enviar o fondo" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Comentarios" #: MTheme.module:6 msgid "Current line" msgstr "Liña actual" #: MTheme.module:6 msgid "Data types" msgstr "Tipos de datos" #: MTheme.module:6 msgid "Editing line" msgstr "" #: MTheme.module:6 msgid "Errors" msgstr "" #: MTheme.module:6 msgid "Highlighting" msgstr "" #: MTheme.module:6 msgid "Keywords" msgstr "Teclados" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Texto normal" #: MTheme.module:6 msgid "Numbers" msgstr "Números" #: MTheme.module:6 msgid "Operators" msgstr "Operadores" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Cadeas" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutinas" #: MTheme.module:6 msgid "Symbols" msgstr "Símbolos" #: Package.module:85 msgid "'&1' is missing." msgstr "" #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "" #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "" #: Package.module:830 msgid "The package build has failed." msgstr "" #: Package.module:903 msgid "Making build directory." msgstr "" #: Package.module:962 msgid "Creating desktop file..." msgstr "" #: Package.module:970 msgid "Sources are being debianizated." msgstr "" #: Package.module:1175 msgid "Creating package..." msgstr "" #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "" #: Package.module:1483 msgid "Creating source package." msgstr "" #: Package.module:1507 msgid "Creating .spec file." msgstr "" #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "" #: Project.module:239 msgid "Basic" msgstr "" #: Project.module:241 msgid "Drawing" msgstr "" #: Project.module:244 msgid "Miscellaneous" msgstr "Varios" #: Project.module:245 msgid "Networking" msgstr "" #: Project.module:246 msgid "OpenGL" msgstr "" #: Project.module:248 msgid "Sound" msgstr "" #: Project.module:250 msgid "Controls" msgstr "" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "" #: Project.module:545 msgid "This project does not exist." msgstr "" #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "" #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "Non abrir" #: Project.module:600 msgid "Open after all" msgstr "Abrir despois" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:606 msgid "It cannot be converted." msgstr "" #: Project.module:606 msgid "This project is read-only." msgstr "" #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "Este proxecto xa existe." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr "Non se pode abrir o ficheiro do proxecto :\n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "Non se pode copiar o ficheiro &1." #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "" #: Project.module:2171 msgid "Cannot open file." msgstr "" #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2575 msgid "Compiling project" msgstr "Compilando proxecto" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "Ficheiro xa existente." #: Project.module:2876 msgid "Directory already exists." msgstr "O directorio xa existe." #: Project.module:2888 msgid "Cannot link template file." msgstr "" #: Project.module:2894 msgid "Cannot copy template file." msgstr "Non se pode copiar a plantilla do ficheiro." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "Directorio" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 msgid "Cannot install library in &1." msgstr "" #: Project.module:3181 msgid "Making executable..." msgstr "Facer o executable..." #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr "¿Realmente quere borrar este directorio?" #: Project.module:3191 #, fuzzy msgid "No change has been detected." msgstr "" "O probrama retornou\n" "o valor: &1" #: Project.module:3292 msgid "Cannot make executable." msgstr "" #: Project.module:3774 msgid "Some components are missing: &1" msgstr "" #: Project.module:3990 msgid "Cannot write project file." msgstr "" #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "" #: Project.module:4351 msgid "Please type a name." msgstr "Por favor introduza un nome." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "Este nome xa está usado. Elixa outro." #: Project.module:4399 msgid "Space" msgstr "" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "Non se pode renomear '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "Por favor introduza o nome do proxecto." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4733 msgid "This project already exists." msgstr "Este proxecto xa existe." #: Project.module:4736 msgid "The project directory already exists." msgstr "" #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "Non se pode copiar o ficheiro &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "" #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:5265 msgid "Cannot move file &1." msgstr "Non se pode mover o ficheiro &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "" #: Project.module:5966 msgid "Project files conversion..." msgstr "" #: Project.module:5996 msgid "Unable to convert &1" msgstr "" #: Project.module:6276 msgid "Unable to update forms." msgstr "" #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 msgid "Unable to read component description file." msgstr "" #: Project.module:6520 msgid "Cannot write component description file." msgstr "" #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "Propiedades do proxecto" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr "Non se pode renomear '&1'" #: Save.module:57 msgid "Cannot save file !" msgstr "¡ Non se pode gardar o ficheiro !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 msgid "Incorrect format" msgstr "" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "¿Realmente quere borrar este directorio?" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Este proxecto xa existe." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "&Insertar" #~ msgid "

Authors

\n" #~ msgstr "

Autores

\n" #~ msgid "About Gambas..." #~ msgstr "Acerca de Gambas..." #~ msgid "Arguments" #~ msgstr "Argumentos" #, fuzzy #~ msgid "Display expression" #~ msgstr "Analizar expresion" #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr "¿Desexa limpar a lista de expresións?" #~ msgid "Edit text property" #~ msgstr "Editar as propiedades do texto" #~ msgid "Existing" #~ msgstr "Existente" #~ msgid "Expression" #~ msgstr "Expresión" #, fuzzy #~ msgid "No argument" #~ msgstr "Argumentos" #~ msgid "Open project..." #~ msgstr "Abrir proxecto..." #~ msgid "Show only components used in project" #~ msgstr "Mostrar ficheiros ocultos" #, fuzzy #~ msgid "Translator" #~ msgstr "Tradución" #, fuzzy #~ msgid "U" #~ msgstr "Arriba" gambas-3.16.3/app/src/gambas3/.lang/hr.po000066400000000000000000005063541411575327000177140ustar00rootroot00000000000000# translation of hr.po to # translation of hr.po to # translation of hr.po to # #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CClassInfo.class # Generated by Gambas compiler # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CComponent.class # Generated by Gambas compiler # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CConfig.class # Generated by Gambas compiler # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CControl.class # Generated by Gambas compiler # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CCoolButton.class # Generated by Gambas compiler # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CMenu.class # Generated by Gambas compiler # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CSplit.class # Generated by Gambas compiler # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FAbout.class # Generated by Gambas compiler # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FDebug.class # Generated by Gambas compiler # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FEditor.class # Generated by Gambas compiler # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FExplorer.class # Generated by Gambas compiler # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FFind.class # Generated by Gambas compiler # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FForm.class # Generated by Gambas compiler # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FGambas.class # Generated by Gambas compiler # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FGetIcon.class # Generated by Gambas compiler # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FGotoLine.class # Generated by Gambas compiler # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FIconEditor.class # Generated by Gambas compiler # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FLanguage.class # Generated by Gambas compiler # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FList.class # Generated by Gambas compiler # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FLocal.class # Generated by Gambas compiler # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FMain.class # Generated by Gambas compiler # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FMenu.class # Generated by Gambas compiler # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewClass.class # Generated by Gambas compiler # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewDirectory.class # Generated by Gambas compiler # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewForm.class # Generated by Gambas compiler # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewIcon.class # Generated by Gambas compiler # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewModule.class # Generated by Gambas compiler # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewProject.class # Generated by Gambas compiler # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FNewText.class # Generated by Gambas compiler # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FOpenProject.class # Generated by Gambas compiler # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FOption.class # Generated by Gambas compiler # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FOutput.class # Generated by Gambas compiler # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FProject.class # Generated by Gambas compiler # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FProperty.class # Generated by Gambas compiler # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FRename.class # Generated by Gambas compiler # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FSave.class # Generated by Gambas compiler # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FSelector.class # Generated by Gambas compiler # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FStack.class # Generated by Gambas compiler # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FTest.class # Generated by Gambas compiler # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FTextEditor.class # Generated by Gambas compiler # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FText.class # Generated by Gambas compiler # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FTips.class # Generated by Gambas compiler # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FToolBar.class # Generated by Gambas compiler # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FToolBox.class # Generated by Gambas compiler # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FTranslate.class # Generated by Gambas compiler # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FWatch.class # Generated by Gambas compiler # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/FWelcome.class # Generated by Gambas compiler # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/Language.module # Generated by Gambas compiler # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/rado/temp/gambas-0.61/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # FIRST AUTHOR , YEAR.#. # Radoslav Dejanovic , 2004. # msgid "" msgstr "" "Project-Id-Version: hr\n" "POT-Creation-Date: 2021-03-28 16:17 UTC\n" "PO-Revision-Date: 2004-11-08 11:35+0100\n" "Last-Translator: Radoslav Dejanovic \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.3.1\n" #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Integrated Development Environment za Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 #, fuzzy msgid "Static properties" msgstr "Svojstva projekta" #: CClassInfo.class:616 msgid "Static variables" msgstr "" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Svojstva" #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "" #: CClassInfo.class:638 msgid "Events" msgstr "" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "" #: CClassInfo.class:681 msgid "creatable" msgstr "" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:694 msgid "function" msgstr "" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "" #: CClassInfo.class:699 msgid "write" msgstr "" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "samo za čitanje" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 #, fuzzy msgid "static function" msgstr "Odredište" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "Čuvaj podatke za uklanjanje grešaka u programu" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Klase" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Klasa" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Opis" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "" #: CComponent.class:600 #, fuzzy msgid "This component is deprecated." msgstr "Projekt je read-only." #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Autori" #: CComponent.class:621 msgid "Implements" msgstr "" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:648 msgid "Excludes" msgstr "" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "Terminal emulator" msgstr "Konzola" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:137 msgid "Report designer" msgstr "" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "Komponenta" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:144 msgid "Application settings management" msgstr "" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "Posloži" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "Komponenta" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "Komponenta" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "Forma" #: CModule.class:29 msgid "Forms" msgstr "Forme" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas forme" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Gambas forme" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "Forma" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Forme" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas forme" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "Forma" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Forme" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "Otkaži" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "želite li zbilja obrisati ovu datoteku?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:560 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Paketi su uspješno napravljeni." #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Projekt" #: CProjectTree.class:373 msgid "Sources" msgstr "Izvorni kod" #: CProjectTree.class:375 msgid "Connections" msgstr "Veza" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Podatak" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "Danas" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Jučer" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "Načini izvršnu datoteku" #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "Ne mogu obrisati datoteku ili direktorij" #: CSoftware.class:664 #, fuzzy msgid "yesterday" msgstr "Jučer" #: CSoftware.class:666 msgid "&1 days ago" msgstr "" #: CSoftware.class:672 msgid "last week" msgstr "" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 msgid "last month" msgstr "" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 msgid "on &1" msgstr "" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "Trenutna linija" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "Ne mogu načiniti projekt! " #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "Ne mogu načiniti projekt! " #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "Zadnji projekti" #: CVersionControlGit.class:394 #, fuzzy msgid "Status" msgstr "Statistike" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "-" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Datum" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "" #: Design.module:229 Project.module:2325 msgid "second" msgstr "" #: Design.module:231 Project.module:2327 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 #, fuzzy msgid "The program has been terminated." msgstr "" "Program je vratio\n" "vrijednost: &1" #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Program je vratio\n" "vrijednost: &1" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "Paketi su uspješno napravljeni." #: Design.module:1064 msgid "Output terminal" msgstr "" #: Design.module:1092 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "O Gambasu" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "Argumenti" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "Poništi" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Pokreni" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Zatvori" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistem" #: FColorChooser.form:40 msgid "Free" msgstr "Slobodno" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Izaberite projekt" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "Ponovo učitaj" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "Uvećaj" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "Umanji" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Uredi" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Tekst" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "Slika" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "Izreži" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "Kopiraj" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "Umetni" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "Vrati" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "Ponovi" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "Uvlačenje" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "Poništi uvlačenje" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Otvori &datoteku" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "Spremi" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "Komentar" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "Ukloni komentar" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "Izaberi Sve" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "Idi na liniju" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "Traži slijedeći" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "Traži prethodni" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "Pokaži" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "Kraj reda" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "Kod" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Prethodno" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "Naziv" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "Tip" #: FConnectionEditor.class:61 msgid "Length" msgstr "Duljina" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Uobičajna vrijednost" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Prevođenje" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "Indeks" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "neograničeno" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "Dugačko" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "Serijski" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "Znakovni niz" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "U&kloni" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Promjeni ime" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "Uvoz" #: FConnectionEditor.form:217 msgid "Run query" msgstr "" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "Novo" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Obriši" #: FConnectionEditor.form:309 msgid "Fields" msgstr "" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Dodaj..." #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Dolje" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Gore" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "" #: FConnectionEditor.form:389 msgid "New index" msgstr "" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Izvoz " #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Obriši" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Izaberi sve" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "Program je vratio\n" "vrijednost: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "Opcije" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Širina" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Visina" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Ne mogu načiniti projekt! " #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Molim unesite naziv." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Novi projekt" #: FCreateProject.form:46 msgid "Project type" msgstr "" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "Direktorij" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Svojstva projekta" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "Projekt je moguće prevesti" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "Otklanjanje pogrešaka (debugiranje)" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Konzola" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "Točke prekida" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Vrijednost" #: FDebugExpr.class:511 msgid "Key" msgstr "Ključ" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Simbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Pazi" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "Linijia" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "Funkcija" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Datoteka" #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:125 msgid "native code" msgstr "prirodni kod " #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "Promatraj izraz" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "Želite li obrisai popis izraza?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1255 msgid "Current object" msgstr "" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "" #: FDebugInfo.class:1563 #, fuzzy msgid "Test has failed." msgstr "Izrada paketa neuspješna." #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "Uklanjanje grešaka" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:137 msgid "Add expression" msgstr "" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "Uklj/isklj prekidnu točku." #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "Uklj/isklj prekidnu točku." #: FDebugInfo.form:220 #, fuzzy msgid "Disable" msgstr "Tablica" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "Uklj/isklj prekidnu točku." #: FDebugInfo.form:228 #, fuzzy msgid "Enable" msgstr "Tablica" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "Pošalji " #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:474 msgid "Show search window" msgstr "" #: FDebugInfo.form:481 msgid "Search again" msgstr "" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "Traženi niz nije pronađen." #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "Stupci" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "" #: FEditor.form:202 msgid "Sort procedures" msgstr "" #: FEditor.form:232 msgid "Go to" msgstr "Idi na " #: FEditor.form:251 msgid "Find definition" msgstr "" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "Izvrši do trenutne linije" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "Uklj/isklj prekidnu točku." #: FEditor.form:322 msgid "Watch expression" msgstr "Promatraj izraz" #: FEditor.form:331 msgid "Open form" msgstr "" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "Ispis" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Uređivač teksta" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "Spremi promjenjene datoteke" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 #, fuzzy msgid "Previous modification" msgstr "Prethodno" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Korisnik" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Zaporka" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "&Zapamti zaporku" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Molim unesite svoju e-mail adresu." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Ne mogu promjeniti naziv '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "&Zapamti zaporku" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Veza" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tablica" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "Nastavi" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Promjene" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "Direktorij" #: FFileInfoVC.form:64 #, fuzzy msgid "Undo changes" msgstr "Promjene" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Gambas moduli" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "Uredi vrijednsti popisa" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:136 msgid "Bad form file" msgstr "Neispravna datoteka forme" #: FForm.class:284 #, fuzzy msgid "Unknown control: &1" msgstr "Nepoznata greška" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "Ne mogu otvoriti datoteku." #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "Izaberi" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "Izaberite projekt" #: FForm.form:245 msgid "Arrangement" msgstr "Posloži" #: FForm.form:249 msgid "Bring to foreground" msgstr "Pozovi u prvi plan" #: FForm.form:256 msgid "Send to background" msgstr "Pošalji u pozadinu" #: FForm.form:266 msgid "Horizontal" msgstr "Vodoravno" #: FForm.form:273 msgid "Rows" msgstr "réci" #: FForm.form:279 msgid "Vertical" msgstr "Vertikalno" #: FForm.form:286 msgid "Columns" msgstr "Stupci" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "Poravnanje" #: FForm.form:311 msgid "Align to left" msgstr "Poravnaj lijevo" #: FForm.form:317 msgid "Align to right" msgstr "Poravnaj desno" #: FForm.form:323 msgid "Align to top" msgstr "Poravnaj s vrhom" #: FForm.form:329 msgid "Align to bottom" msgstr "Poravnaj s dnom" #: FForm.form:338 msgid "Same width" msgstr "Ista širina" #: FForm.form:344 msgid "Same height" msgstr "Ista veličina" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "Prethodno" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "Slijedeći" #: FForm.form:387 msgid "Last" msgstr "" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "Uređivač izbornika" #: FForm.form:407 msgid "Event" msgstr "Događaj" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "Masno" #: FForm.form:786 msgid "Italic" msgstr "Kurziv" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "Podcrtan" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Pozadina" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "Hijerarhija" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Pretraživač pomoći" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Idi nazad" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "Idi naprijed" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 #, fuzzy msgid "Debugger" msgstr "Uklanjanje grešaka" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "Prevođenje" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Izbor" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "Svojstva" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "Izbor" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Crtaj" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Četverokut" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipsa" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "px" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 msgid "Colorize" msgstr "" #: FImageProperty.form:400 msgid "Desaturate" msgstr "" #: FImageProperty.form:408 msgid "Make transparent" msgstr "" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "Linijia" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "Linijia" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Veličina" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "Prevedi" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "Pregled" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 #, fuzzy msgid "Right align" msgstr "Osvjetljavanje" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas klase" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas moduli" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Gambas moduli" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "Datoteke slika" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "Ne mogu otvoriti datoteku." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Uvoz" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "Sve datoteke" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Izvor" #: FImportTable.form:78 msgid "Charset" msgstr "Skup znakova" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Odredište" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Molim unesite svoje ime." #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Ovaj projekt već postoji. " #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Spremi" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Uredi vrijednsti popisa" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Želite li zbilja obrisati ovaj direktorij?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Ne mogu obrisati datoteku ili direktorij" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:773 msgid "Sort history" msgstr "" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "" #: FMain.class:789 msgid "&Clear history" msgstr "&Obriši povijest" #: FMain.class:969 msgid "New folder" msgstr "Nova mapa" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1904 msgid "Clean" msgstr "Čist" #: FMain.class:2221 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Želite li zbilja obrisati ovaj direktorij?" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Datoteka je mijenjana.\n" "\n" "Sve promjene bit će izgubljene." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Otvori projekt" #: FMain.form:313 msgid "Open recent" msgstr "Otvori nedavni" #: FMain.form:321 msgid "Open example" msgstr "Otvori primjer" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "Spremi projekt" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "Izaberite projekt" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Završi" #: FMain.form:402 Project.module:6969 #, fuzzy msgid "Save as" msgstr "Spremi" #: FMain.form:442 msgid "Compile" msgstr "Prevedi" #: FMain.form:449 msgid "Compile All" msgstr "Prevedi sve" #: FMain.form:459 msgid "Translate" msgstr "Prevedi" #: FMain.form:468 msgid "Make" msgstr "Načini" #: FMain.form:472 msgid "Executable" msgstr "" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "" #: FMain.form:486 msgid "Installation package" msgstr "" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:570 msgid "Refresh" msgstr "Osvježi" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Stanka" #: FMain.form:630 msgid "Stop" msgstr "Stani" #: FMain.form:637 msgid "Step" msgstr "Korak" #: FMain.form:644 msgid "Forward" msgstr "Naprijed" #: FMain.form:651 msgid "Finish" msgstr "" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 #, fuzzy msgid "GUI component" msgstr "Komponenta" #: FMain.form:713 #, fuzzy msgid "Current desktop" msgstr "Trenutna linija" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "" #: FMain.form:770 msgid "Close all debug windows" msgstr "" #: FMain.form:808 msgid "Status bar" msgstr "" #: FMain.form:815 msgid "Hide menubar" msgstr "" #: FMain.form:839 msgid "Close all windows" msgstr "Zatvori sve prozore" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "Traži" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Zamjeni" #: FMain.form:866 msgid "Browse project" msgstr "" #: FMain.form:873 msgid "Open a terminal" msgstr "" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "Prečaci" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Svojstva" #: FMain.form:924 msgid "Directory" msgstr "Direktorij" #: FMain.form:929 msgid "Project link" msgstr "" #: FMain.form:938 msgid "Module" msgstr "Modul" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr "Gambas moduli" #: FMain.form:1004 msgid "HTML file" msgstr "" #: FMain.form:1011 msgid "Style sheet" msgstr "" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "Ostalo " #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Nedavni" #: FMain.form:1059 msgid "Open in file manager" msgstr "" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "Otvori projekt" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "" #: FMain.form:1132 msgid "Startup class" msgstr "Početna klasa" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr "Spremi promjenjene datoteke" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "Datoteke za prevođenje" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "Spremi promjenjene datoteke" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "Prevedi" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "Načini izvršnu datoteku" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Trikovi dana" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Svojstva projekta" #: FMain.form:1429 msgid "Refresh project" msgstr "" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "Načini izvršnu datoteku" #: FMain.form:1471 msgid "Make source archive" msgstr "" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "" #: FMain.form:1500 msgid "Properties sheet" msgstr "Popis svojstava" #: FMain.form:1509 msgid "Toolbox" msgstr "Kutija s alatima" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "" #: FMain.form:1551 msgid "Compile all" msgstr "Prevedi sve" #: FMain.form:1600 msgid "Finish current function" msgstr "" #: FMain.form:1616 msgid "Show menubar" msgstr "" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "&Datoteka" #: FMain.form:1730 msgid "&Project" msgstr "&Projekt" #: FMain.form:1742 msgid "&Debug" msgstr "&Otkrivač grešaka" #: FMain.form:1754 msgid "&View" msgstr "Po&gled" #: FMain.form:1766 msgid "&Tools" msgstr "&Alati" #: FMain.form:1778 msgid "&?" msgstr "&?" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "Novi projekt" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "Popis svojstava" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "Pokaži savjete" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:60 #, fuzzy msgid "Increment version" msgstr "Neispravna vrijednost." #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Čuvaj podatke za uklanjanje grešaka u programu" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "Paket" #: FMakeInstall.class:137 msgid "Min. version" msgstr "" #: FMakeInstall.class:138 msgid "Max. version" msgstr "" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "Izrađujem paket za &1." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Paketi su uspješno napravljeni." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Molim unesite svoje ime." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Molim unesite svoju e-mail adresu." #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "Molim unesite svoje ime." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Molim unesite prvi unos u CHANGELOG." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:558 msgid "Initial release" msgstr "" #: FMakeInstall.class:814 msgid "Menus" msgstr "" #: FMakeInstall.class:882 msgid "Groups" msgstr "Grupe" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Dnevnik promjena" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "Kategorije" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "Napravi paket s izvornim kodom" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Izvorni paketi" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "Napravi paket s izvornim kodom" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "" #: FMenu.class:346 msgid "Bad menu name !" msgstr "Neispravan naziv izbornika!" #: FMenu.class:352 msgid "Bad group name !" msgstr "Neispravan naziv grupe!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Ovaj izbornik je predubok !" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "mijenjan" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 msgid "Insert separator" msgstr "" #: FMenu.form:104 msgid "Insert menu before" msgstr "" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "&Umetni" #: FMenu.form:113 #, fuzzy msgid "Delete menu" msgstr "Obriši" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "&Umetni" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Kliknite na Umetni da biste dodali novi izibornik" #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Baza podataka" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Baza podataka" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Računalo" #: FNewConnection.form:124 msgid "Path" msgstr "Putanja" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Zaporka" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Baza podataka" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Izaberite projekt" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Primjeri" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Dijamant" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Umetni" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Vizualno" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(Zadano)" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "Radna površina" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(Zadano)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:267 msgid "Export a theme file" msgstr "" #: FOption.class:498 msgid "Select a theme file" msgstr "" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 msgid "Network is not available." msgstr "" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "Ne mogu kopirati &1." #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 msgid "Unable to install documentation." msgstr "" #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "Prevođenje" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "Trenutna linija" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "Želite li zbilja obrisati ovaj prijevod?" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 #, fuzzy msgid "Identity" msgstr "Uvlačenje" #: FOption.form:350 msgid "Package maintainer" msgstr "" #: FOption.form:395 #, fuzzy msgid "Default license" msgstr "Uobičajna vrijednost" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "Naso" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "Da" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "Projekt" #: FOption.form:456 msgid "Default tab size" msgstr "Uobičajena veličina tabulatora" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 msgid "Activate version control" msgstr "" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Prevođenje" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "Pošalji u pozadinu" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Slika" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Obriši ovaj prijevod" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Datoteke za prevođenje" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Pomoć" #: FOption.form:670 msgid "Show documentation in popups" msgstr "" #: FOption.form:687 msgid "Always display optional messages" msgstr "" #: FOption.form:699 #, fuzzy msgid "Documentation" msgstr "Odredište" #: FOption.form:710 msgid "Use offline documentation" msgstr "" #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "" #: FOption.form:787 msgid "Applications" msgstr "Aplikacije" #: FOption.form:798 msgid "Browser" msgstr "Preglednik" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "Konzola" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "Osvjetli trenutnu liniju" #: FOption.form:875 msgid "Highlight modified lines" msgstr "" #: FOption.form:892 msgid "Show line numbers" msgstr "" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:960 #, fuzzy msgid "Show Preview" msgstr "Pregled" #: FOption.form:978 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Code formatting" msgstr "" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 msgid "Control structure completion" msgstr "" #: FOption.form:1021 msgid "Local variable declaration" msgstr "" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "Veza" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "Zatvori sve prozore" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "" #: FOption.form:1155 msgid "Code snippets" msgstr "" #: FOption.form:1171 msgid "Activate code snippets" msgstr "" #: FOption.form:1232 msgid "Interface" msgstr "Sučelje" #: FOption.form:1249 msgid "Activate animations" msgstr "" #: FOption.form:1266 msgid "Show shadows" msgstr "" #: FOption.form:1283 msgid "Show tooltips" msgstr "Pokaži savjete" #: FOption.form:1300 msgid "Use utility windows" msgstr "" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 msgid "Message style" msgstr "" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 #, fuzzy msgid "Debugger size" msgstr "Otklanjanje pogrešaka (debugiranje)" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Ispisivanje" #: FOption.form:1588 #, fuzzy msgid "Fixed font" msgstr "Koristi jednoobrazni font (fixed)" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 #, fuzzy msgid "Themes" msgstr "Tema" #: FOption.form:1698 msgid "Icon theme" msgstr "" #: FOption.form:1714 #, fuzzy msgid "Highlighting theme" msgstr "Osvjetljavanje" #: FOption.form:1728 msgid "Import theme" msgstr "" #: FOption.form:1734 msgid "Export theme" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Otvori nedavni" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Ne mogu promjeniti naziv '&1'" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "Svojstva projekta" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "Pregled" #: FProjectEditor.form:86 #, fuzzy msgid "Detailed view" msgstr "Detalji" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "Svojstva projekta" #: FProjectProperty.class:55 msgid "Variable" msgstr "Varijabla" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "Vrijednost ljepljenja je netočna." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:1000 msgid "Modules" msgstr "Moduli" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "Gambas moduli" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "Funkcija" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 #, fuzzy msgid "Executable size" msgstr "Uobičajena veličina tabulatora" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "" #: FProjectProperty.class:1039 #, fuzzy msgid "Information about library" msgstr "Informacije" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "Načini izvršnu datoteku" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "Prevedi" #: FProjectProperty.form:300 msgid "General" msgstr "Općenito" #: FProjectProperty.form:366 msgid "Component" msgstr "Komponenta" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "Obično" #: FProjectProperty.form:373 msgid "Vendor" msgstr "" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Verzija" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:418 msgid "Title" msgstr "Naziv" #: FProjectProperty.form:452 msgid "Information" msgstr "Informacije" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 #, fuzzy msgid "Include information from" msgstr "Informacije" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 msgid "Exclude" msgstr "" #: FProjectProperty.form:642 msgid "Remove All" msgstr "" #: FProjectProperty.form:649 msgid "Components" msgstr "Komponente" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "Svojstva" #: FProjectProperty.form:748 msgid "Environment" msgstr "" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "Edicija" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Veličina tabulatora" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Kontrole forme su javne" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 #, fuzzy msgid "Add branch to version number" msgstr "Neispravna vrijednost." #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "Statistike" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Ažuriraj" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Zabranjeni znakovi u nazivu kontrole." #: FProperty.class:383 msgid "This name is already in use." msgstr "Taj naziv je već u upotrebi." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Zabranjeni znakovi u kontrolnoj grupi" #: FProperty.class:469 msgid "Incorrect property value." msgstr "Neispravna vrijednost." #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "Nijedan" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Paketi su uspješno napravljeni." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Neispravna vrijednost." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Želite li zbilja ponovo učitati ovaj prijevod?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Izaberite projekt" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Datoteke slika" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "Opis" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "Veličina tabulatora" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr "Spremi promjenjene datoteke" #: FSave.form:43 msgid "Save All" msgstr "Spremi sve" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Traženi niz zamjenjen jednom." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Traženi niz zamjenjen &1 puta." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "Osjetljivost na veličinu slova" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Trenutna linija" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Vrste podataka" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "Osvjetljavanje" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:40 msgid "Image files" msgstr "" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Izaberite sliku" #: FSelectIcon.form:45 msgid "Stock" msgstr "" #: FSelectIcon.form:73 #, fuzzy msgid "Size preview" msgstr "Pregled" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Nepoznat" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Izaberi sve" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Igre" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "Edicija" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "Video" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "Sučelje" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "Izraz" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "Otkaži" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr "Ne mogu promjeniti naziv '&1'" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Ne mogu promjeniti naziv '&1'" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr "Ne mogu promjeniti naziv '&1'" #: FSoftwareFarm.class:609 #, fuzzy msgid "&1 has been successfully installed." msgstr "Paketi su uspješno napravljeni." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "želite li zbilja obrisati ovu datoteku?" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr "Ne mogu promjeniti naziv '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas forme" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "Otvori nedavni" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "Pokaži savjete" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "Pokaži savjete" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "Dolje" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Ne mogu promjeniti naziv '&1'" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Ovaj projekt već postoji. " #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Načini izvršnu datoteku" #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Želite li zbilja ponovo učitati ovaj prijevod?" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "Obriši" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "Izaberi sve" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr "Izaberi sve" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Uredi vrijednsti popisa" #: FText.form:29 msgid "Use a fixed font" msgstr "Koristi jednoobrazni font (fixed)" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "Uobičajna vrijednost" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "Primjeri" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "Uklj/isklj prekidnu točku." #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "Ne mogu čitati trik dana !" #: FTips.form:70 msgid "Show tips on startup" msgstr "Prikaži trikove pri pokretanju" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "Nastavi" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 msgid "Network" msgstr "" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "Otvori projekt" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "Malena" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Projekt je prazan. Nema ničega za prevesti." #: FTranslate.class:74 msgid "Language" msgstr "Jezik" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Prevedi" #: FTranslate.class:169 msgid "Translation files" msgstr "Datoteke za prevođenje" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "Ne mogu pročitati prijevod za '&1' jezik" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "Ne mogu snimiti prijevod." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "Želite li zbilja obrisati ovaj prijevod?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "Želite li zbilja ponovo učitati ovaj prijevod?" #: FTranslate.class:802 msgid "Export a translation" msgstr "Izvezi prijevod" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "Ne mogu importirati datoteku s prijevodima." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "Sve se čini u redu." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "Prevedeni simboli nizova ne odgovaraju neprevedenima. " #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "Ne mogu importirati datoteku s prijevodima." #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Želite li zbilja obrisati ovaj prijevod?" #: FTranslate.form:77 msgid "Project translation" msgstr "" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Obriši ovaj prijevod" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Izvezi prijevod" #: FTranslate.form:232 msgid "Save translation" msgstr "" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Provjeri prijevod" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Nađi slijedeći neprevedeni izraz" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Nađi slijedeći neprevedeni izraz" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Nađi slijedeći neprevedeni izraz" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Obriši ovaj prijevod" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Ovaj niz se ne smije prevoditi" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Kopiraj neprevedeni niz" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "Obriši ovaj prijevod" #: FTranslate.form:480 msgid "Import a translation file" msgstr "" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "Datoteke za prevođenje" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Izbor" #: FWelcome.class:69 msgid "New project..." msgstr "Novi projekt..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Zadnji projekti" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Gambas projekt" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: HelpView.class:39 Wiki.module:816 #, fuzzy msgid "This page does not exist." msgstr "Ovaj projekt već postoji. " #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arapski (Egipt)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arapki (Tunis)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bugarski (Bugarska)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalonski (Katalonija, Španjolska)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Velški (UK)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danski (Danska)" #: Language.module:34 msgid "German (Germany)" msgstr "Njemački (Njemačka)" #: Language.module:35 msgid "German (Belgium)" msgstr "Njemački (Belgija)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grčki (Grčka)" #: Language.module:41 msgid "English (common)" msgstr "Engleski (zajednički)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Engleski (Velika Britanija)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Engleski (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Engleski (Australija)" #: Language.module:45 msgid "English (Canada)" msgstr "Engleski (Kanada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Engleski (zajednički)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Španjolski (Španjolska)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Španjolski (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Francuski (Francuska)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francuski (Belgija)" #: Language.module:70 msgid "French (Canada)" msgstr "Francuski (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francuska (Švicarska)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galicijski (Španjolska)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Mađarski (Mađarska)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Hrvatski (Hrvatska)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonezijski (Indonezija)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irski (Irska)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Talijanski (Italija)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Nizozemski (Nizozemska)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Nizozemski (Belgija)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norveški (Norveška)" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "Poljski (Poljska)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "portugalski (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugalski (Brazil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ruski (Rusija)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovenski (Slovenija)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Švedski (Švedska)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turski (Turska)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valonski (Belgija)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Pojednostavljeni kineski (Kina)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Tradicionalni kineski (Tajvan)" #: Language.module:220 msgid "Unknown" msgstr "Nepoznat" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Datoteke za prevođenje" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "Ne mogu spremiti datoteku!" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "Ne mogu spremiti datoteku!" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Neispravan datum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "samo za čitanje" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Pogreška sintakse" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Nepoznata greška" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Nepoznata greška" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "Čisti tekst" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Pošalji u pozadinu" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Komentari" #: MTheme.module:6 msgid "Current line" msgstr "Trenutna linija" #: MTheme.module:6 msgid "Data types" msgstr "Vrste podataka" #: MTheme.module:6 msgid "Editing line" msgstr "Uređivanje linije" #: MTheme.module:6 msgid "Errors" msgstr "Greške" #: MTheme.module:6 msgid "Highlighting" msgstr "Osvjetljavanje" #: MTheme.module:6 msgid "Keywords" msgstr "Ključne riječi" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Uobičajeni tekst" #: MTheme.module:6 msgid "Numbers" msgstr "Brojevi" #: MTheme.module:6 msgid "Operators" msgstr "Operatori" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Nizovi" #: MTheme.module:6 msgid "Subroutines" msgstr "Potprogrami" #: MTheme.module:6 msgid "Symbols" msgstr "Simboli" #: Package.module:85 msgid "'&1' is missing." msgstr "" #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "Spremam CHANGELOG datoteku." #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "Izrađujem paket za &1." #: Package.module:830 msgid "The package build has failed." msgstr "Izrada paketa neuspješna." #: Package.module:903 msgid "Making build directory." msgstr "" #: Package.module:962 msgid "Creating desktop file..." msgstr "" #: Package.module:970 msgid "Sources are being debianizated." msgstr "" #: Package.module:1175 msgid "Creating package..." msgstr "" #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "Inicijaliziram ~/RPM direktorij." #: Package.module:1483 msgid "Creating source package." msgstr "Izrađujem paket izvornog koda." #: Package.module:1507 msgid "Creating .spec file." msgstr "Izrađujem .spec datoteku." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "" #: Package.module:2441 #, fuzzy msgid "'makepkg' has failed." msgstr "Izrada paketa neuspješna." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "" #: Project.module:239 msgid "Basic" msgstr "Osnovno" #: Project.module:241 msgid "Drawing" msgstr "" #: Project.module:244 msgid "Miscellaneous" msgstr "Razno" #: Project.module:245 msgid "Networking" msgstr "" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "Zvučni &datoteka:" #: Project.module:250 msgid "Controls" msgstr "" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "" #: Project.module:545 msgid "This project does not exist." msgstr "" #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "" #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "Ne otvaraj" #: Project.module:600 msgid "Open after all" msgstr "Otvori nakon svega" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:606 msgid "It cannot be converted." msgstr "" #: Project.module:606 msgid "This project is read-only." msgstr "Projekt je read-only." #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "Projekt je read-only." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr "Ne mogu otvoriti projekt:\n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "Ne mogu otvoriti datoteku." #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "" #: Project.module:2171 msgid "Cannot open file." msgstr "Ne mogu otvoriti datoteku." #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2575 msgid "Compiling project" msgstr "Prevođenje projekta" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "Datoteka već postoji." #: Project.module:2876 msgid "Directory already exists." msgstr "Direktorij već postoji." #: Project.module:2888 msgid "Cannot link template file." msgstr "" #: Project.module:2894 msgid "Cannot copy template file." msgstr "Ne mogu kopirati predložak." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "Zabranjeni znakovi u nazivu kontrole." #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 msgid "Cannot install library in &1." msgstr "" #: Project.module:3181 msgid "Making executable..." msgstr "Radim aplikaciju..." #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr "Želite li zbilja obrisati ovaj direktorij?" #: Project.module:3191 #, fuzzy msgid "No change has been detected." msgstr "" "Program je vratio\n" "vrijednost: &1" #: Project.module:3292 msgid "Cannot make executable." msgstr "" #: Project.module:3774 msgid "Some components are missing: &1" msgstr "Neke komponente nedostaju: &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "Ne mogu zapisati projektnu datoteku." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "Morate definirati početnu klasu ili formu!" #: Project.module:4351 msgid "Please type a name." msgstr "Molim unesite naziv." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "Ovaj naziv već postoji. Izaberite neki drugi." #: Project.module:4399 msgid "Space" msgstr "" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "Ne mogu promjeniti naziv '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "Molim upišite naziv projekta." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4733 msgid "This project already exists." msgstr "Ovaj projekt već postoji. " #: Project.module:4736 msgid "The project directory already exists." msgstr "" #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "Ne mogu kopirati &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "" #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:5265 msgid "Cannot move file &1." msgstr "Ne mogu premjestiti datoteku &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "" #: Project.module:5966 msgid "Project files conversion..." msgstr "" #: Project.module:5996 msgid "Unable to convert &1" msgstr "" #: Project.module:6276 msgid "Unable to update forms." msgstr "" #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 msgid "Unable to read component description file." msgstr "" #: Project.module:6520 msgid "Cannot write component description file." msgstr "" #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "Svojstva projekta" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr "Ne mogu promjeniti naziv '&1'" #: Save.module:57 msgid "Cannot save file !" msgstr "Ne mogu spremiti datoteku!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 #, fuzzy msgid "Incorrect format" msgstr "Neispravna vrijednost." #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Želite li zbilja obrisati ovaj direktorij?" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Ovaj projekt već postoji. " #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "&Umetni" #~ msgid "

Authors

\n" #~ msgstr "-\n" #~ msgid "About Gambas..." #~ msgstr "O Gambasu..." #~ msgid "Arguments" #~ msgstr "Argumenti" #~ msgid "Blend" #~ msgstr "Miješanje" #~ msgid "ChangeLog" #~ msgstr "ChangeLog" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Kliknite na formu da biste dobili prikaz hijerarhije kontrola..." #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr "Želite li obrisai popis izraza?" #~ msgid "Edit text property" #~ msgstr "Uredi vrijednosti teksta" #~ msgid "Existing" #~ msgstr "Postojeći" #, fuzzy #~ msgid "No argument" #~ msgstr "Argumenti" #~ msgid "Open project..." #~ msgstr "Otvori projekt..." #~ msgid "Picture" #~ msgstr "Slika" #~ msgid "Show only components used in project" #~ msgstr "Prikaži samo komponente korištene u projektu" #~ msgid "Text file" #~ msgstr "Tekstualna datoteka" #~ msgid "Thanks to" #~ msgstr "Zahvaljujemo: " #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Dobrodošli u Gambas konzolu.\n" #~ "Da biste izvršili neki zraz, utipkajte '?' praćen \n" #~ " izrazom, zatim pritisnite tipku Return.\n" #~ "\n" gambas-3.16.3/app/src/gambas3/.lang/hu.po000066400000000000000000004712541411575327000177170ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Config.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/Config.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/bb/teszt/development/basic/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Integrált fejlesztési környezet a Gambas-hoz" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 #, fuzzy msgid "Static properties" msgstr "Projekt tulajdonságai" #: CClassInfo.class:604 msgid "Static variables" msgstr "" #: CClassInfo.class:605 msgid "Static methods" msgstr "" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "Konstansok" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Tulajdonságok" #: CClassInfo.class:624 msgid "Variables" msgstr "Változók" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "Események" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "csak olvasható" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 #, fuzzy msgid "static function" msgstr "Célmappa" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Osztályok" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Osztály" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Leírás" #: CComponent.class:1667 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Ez a projekt csak olvasható." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "Szerző" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "Szerzők" #: CComponent.class:1690 msgid "Implements" msgstr "Implementálja" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:1717 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 #, fuzzy msgid "Terminal emulator" msgstr "Terminál" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:88 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 #, fuzzy msgid "Multimedia controls" msgstr "Multimédia" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:125 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:128 msgid "Report designer" msgstr "" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Komponens" #: CDocumentation.class:134 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:135 msgid "Application settings management" msgstr "" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Elrendezés" #: CDocumentation.class:138 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Komponens" #: CDocumentation.class:140 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:141 msgid "Video capture" msgstr "" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 msgid "Web application development" msgstr "" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "Hely" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Űrlap" #: CModule.class:28 msgid "Forms" msgstr "Űrlapok" #: CModule.class:28 msgid "Gambas forms" msgstr "Gambas űrlapok" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Gambas űrlapok" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Űrlap" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Űrlapok" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas űrlapok" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Űrlap" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Űrlapok" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Mégsem" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 #, fuzzy msgid "Unable to uninstall software:" msgstr "Nem sikerült csatlakozni az adatbázishoz." #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "A csomag sikeresen létre lett hozva." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Projekt" #: CProjectTree.class:346 msgid "Sources" msgstr "Források" #: CProjectTree.class:348 msgid "Connections" msgstr "Kapcsolatok" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Adat" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "Ma" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Tegnap" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "Kihagyás" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "Nem sikerült csatlakozni az adatbázishoz." #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Futtatható program létrehozása" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Nem tudom letörölni a fájlt vagy a könyvtárat" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Tegnap" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Aktív sor" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Nem tudom létrehozni a projektet!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Nem tudom létrehozni a projektet!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Újabb keletű projektek" #: CVersionControlGit.class:319 #, fuzzy msgid "Status" msgstr "Statisztika" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 #, fuzzy msgid "Remote repository URL" msgstr "Adattár" #: CVersionControlGit.class:373 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:411 msgid "Solve conflict." msgstr "" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "" "A program a következő értéket\n" " adta vissza: &1" #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "A program a következő értéket\n" " adta vissza: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "A Gambas névjegye" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "Válasszon ki egy színt" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "Rendszer" #: FColorChooser.form:35 msgid "Free" msgstr "Szabad" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "Kísérleti" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "Minden eltávolítása" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Válasszon ki egy betűtípust" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Újratöltés" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "Nagyítás" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "Kicsinyítés" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "&Szerkesztés" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Szöveg" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "kép" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Kivágás" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Másolás" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Beillesztés" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Visszavonás" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Ismétlés" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Behúzás" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "Behúzás visszavonása" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Megnyitás" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Mentés" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Bezárás" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "Speciális" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Megjegyzés" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Megjegyzés eltávolítása" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Mindent kijelöl" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Ugrás sorra" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Megtekintés" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:284 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "Sor vége" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Programkód" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Előző" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Név" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Típus" #: FConnectionEditor.class:61 msgid "Length" msgstr "Hossz" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Alapértelmezett érték" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Fordítás" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Index" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Egyedülálló" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Mező" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Nem sikerült csatlakozni az adatbázishoz." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "korlátlan" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "Logikai" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Dátum" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "Lebegő" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "Egész" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "Hosszú" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "soros" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "Sztring" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Eltávolítás" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Átnevezés" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "Importálás" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Hozzáadás" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "Le" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "Fel" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Lekérdezés futtatása" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Új" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Ürítés" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "Szerkesztés" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Exportálás" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Törlés" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Mindent kijelöl" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "A program a következő értéket\n" " adta vissza: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Beállítások" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Szélesség" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Magasság" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "nem érhető el" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Nem tudom létrehozni a projektet!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Legyen szíves, adjon meg egy nevet." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Új projekt" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Könyvtár" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Projekt tulajdonságai" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "A projekt lefordítható" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Adattár" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "Nyomkövetés" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Konzol" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Töréspontok" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 #, fuzzy msgid "Search result" msgstr "Keresés" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "nem érhető el" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Érték" #: FDebugExpr.class:508 msgid "Key" msgstr "Kulcs" #: FDebugExpr.class:514 msgid "Symbol" msgstr "Szimbólum" #: FDebugExpr.form:33 msgid "Watch" msgstr "Követés" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Sor" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Funkció" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Fájl" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "Üzenet" #: FDebugInfo.class:126 msgid "native code" msgstr "gépi kód" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Kifejezés értékének követése" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Ki akarja üríteni a kifejezések listáját?" #: FDebugInfo.class:1070 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1209 msgid "Current object" msgstr "" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "Hibakeresés" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:124 msgid "Add expression" msgstr "" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "Töréspont ki/bekapcsolása" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Töréspont ki/bekapcsolása" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Táblázat" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Töréspont ki/bekapcsolása" #: FDebugInfo.form:201 #, fuzzy msgid "Enable" msgstr "Táblázat" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "A keresett szöveg nem található." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "Eltárolás" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Szinkronizálás" #: FDebugInfo.form:379 FMain.form:508 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Ugrás" #: FEditor.form:243 msgid "Find definition" msgstr "" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Futtatás az aktív sorig" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Töréspont ki/bekapcsolása" #: FEditor.form:314 msgid "Watch expression" msgstr "Kifejezés értékének követése" #: FEditor.form:323 msgid "Open form" msgstr "" #: FEditor.form:330 FMain.form:1067 msgid "Run this class" msgstr "" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Szerkesztő" #: FEditor.form:523 FTextEditor.form:507 msgid "Insert special character" msgstr "" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "Fe&lülírás" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Felhasználó" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Jelszó" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "A jelszó megjegyzése" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Legyen szíves, adja be az e-mail címét." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Nem tudom ezt átnevezni: '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "A jelszó megjegyzése" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Kapcsolat" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "Táblázat" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "Változások" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "Statisztika" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Folytatás" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Modulok" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 #, fuzzy msgid "Undo changes" msgstr "Változások" #: FFontChooser.form:12 msgid "Select a font" msgstr "Válasszon ki egy betűtípust" #: FForm.class:134 msgid "Bad form file" msgstr "Rossz űrlapfájl" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Ismeretlen hiba" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Nem tudom kinyitni a fájlt." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Kiválasztás" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Válasszon ki egy betűtípust" #: FForm.form:239 msgid "Arrangement" msgstr "Elrendezés" #: FForm.form:243 msgid "Bring to foreground" msgstr "Előtérbe helyezés" #: FForm.form:250 msgid "Send to background" msgstr "Háttérbe helyezés" #: FForm.form:260 msgid "Horizontal" msgstr "Vízszintes" #: FForm.form:267 msgid "Rows" msgstr "Sorok" #: FForm.form:273 msgid "Vertical" msgstr "Függőleges" #: FForm.form:280 msgid "Columns" msgstr "Oszlopok" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Igazítás" #: FForm.form:305 msgid "Align to left" msgstr "Bal oldal igazítása" #: FForm.form:311 msgid "Align to right" msgstr "Jobb oldal igazítása" #: FForm.form:317 msgid "Align to top" msgstr "Fölső oldal igazítása" #: FForm.form:323 msgid "Align to bottom" msgstr "Alsó oldal igazítása" #: FForm.form:332 msgid "Same width" msgstr "Azonos szélesség" #: FForm.form:338 msgid "Same height" msgstr "Azonos magasság" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "" #: FForm.form:360 msgid "First" msgstr "Első" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Előző" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Következő" #: FForm.form:381 msgid "Last" msgstr "Utolsó" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Menüszerkesztő" #: FForm.form:401 msgid "Event" msgstr "Esemény" #: FForm.form:415 msgid "Run this form" msgstr "" #: FForm.form:568 msgid "Toggle grid" msgstr "" #: FForm.form:577 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:696 msgid "Move tab first" msgstr "" #: FForm.form:703 msgid "Move tab left" msgstr "" #: FForm.form:710 msgid "Move tab right" msgstr "" #: FForm.form:717 msgid "Move tab last" msgstr "" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "Félkövér" #: FForm.form:753 msgid "Italic" msgstr "Dőlt" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "Aláhúzott" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Háttér" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Hierarchia" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Felfelé" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Lefelé" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Súgó-böngésző" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Vissza" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "Előre" #: FHelpBrowser.form:120 msgid "Print" msgstr "Nyomtatás" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 #, fuzzy msgid "Debugger" msgstr "Hibakeresés" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Fordítás" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Kijelölés" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Beállítások" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Kijelölés" #: FImageEditor.form:283 msgid "Exclusive or" msgstr "" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Rajzolás" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Téglalap" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Ellipszis" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr " képpont" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "Szín" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 #, fuzzy msgid "Select gradient stop color" msgstr "Válasszon ki egy színt" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Sugár" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 #, fuzzy msgid "Colorize" msgstr "Szín" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Sor" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Sor" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Méret" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Lefordítás" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "Előnézet" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Alapállapot" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 #, fuzzy msgid "Right align" msgstr "Kiemelés" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas osztályok" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas modulok" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Képfájlok" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Nem tudom kinyitni a fájlt." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importálás" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Minden fájl" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "Forrás" #: FImportTable.form:79 msgid "Charset" msgstr "Karakterkészlet" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "Célmappa" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Lista formájú tulajdonság szerkesztése" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Konvertálás" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Biztos, hogy le akarja törölni ezt a könyvtárat?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Nem tudom letörölni a fájlt vagy a könyvtárat" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "" #: FMain.class:751 msgid "&Clear history" msgstr "Előzmények ürí&tése" #: FMain.class:935 msgid "New folder" msgstr "Új mappa" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1847 msgid "Clean" msgstr "tiszta" #: FMain.class:2164 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Biztos, hogy le akarja törölni ezt a könyvtárat?" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "A fájl megváltozott.\n" "\n" "A változtatásai el fognak veszni." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Paraméterek" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Projekt megnyitása" #: FMain.form:289 msgid "Open recent" msgstr "Újabb keletű projekt betöltése" #: FMain.form:297 msgid "Open example" msgstr "Példa megnyitása" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Projekt mentése" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Válasszon ki egy projektet" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Kilépés" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Mentés" #: FMain.form:418 msgid "Compile" msgstr "Fordítás" #: FMain.form:425 msgid "Compile All" msgstr "Minden fordítása" #: FMain.form:435 msgid "Translate" msgstr "Lefordítás" #: FMain.form:444 msgid "Make" msgstr "Gyártó" #: FMain.form:448 msgid "Executable" msgstr "" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "" #: FMain.form:462 msgid "Installation package" msgstr "" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:546 msgid "Refresh" msgstr "Frissítés" #: FMain.form:568 msgid "Run" msgstr "Futtatás" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Paraméterek" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 #, fuzzy msgid "GUI component" msgstr "Komponens" #: FMain.form:615 #, fuzzy msgid "Current desktop" msgstr "Aktív sor" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Szünet" #: FMain.form:658 msgid "Stop" msgstr "Megállítás" #: FMain.form:665 msgid "Step" msgstr "Lépés" #: FMain.form:672 msgid "Forward" msgstr "Előre" #: FMain.form:679 msgid "Finish" msgstr "" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "" #: FMain.form:699 msgid "Close all debug windows" msgstr "" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Minden ablak bezárása" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "Keresés" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Csere" #: FMain.form:796 msgid "Browse project" msgstr "" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "Billentyűparancsok" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Beállítások" #: FMain.form:854 msgid "Directory" msgstr "Könyvtár" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Modul" #: FMain.form:927 msgid "HTML file" msgstr "" #: FMain.form:934 msgid "Style sheet" msgstr "Stíluslap" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "Egyéb" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Legutóbbi" #: FMain.form:981 msgid "Open in file manager" msgstr "" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Projekt megnyitása" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "" #: FMain.form:1060 msgid "Startup class" msgstr "Induló osztály" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Megváltozott fájlok mentése" #: FMain.form:1098 msgid "Show files in conflict" msgstr "" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Lefordítás" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "A nap tippjei" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Projekt tulajdonságai" #: FMain.form:1311 msgid "Refresh project" msgstr "" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Futtatható program létrehozása" #: FMain.form:1353 msgid "Make source archive" msgstr "" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "" #: FMain.form:1382 msgid "Properties sheet" msgstr "Tulajdonság-lap" #: FMain.form:1391 msgid "Toolbox" msgstr "Eszköztár" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "Keresés" #: FMain.form:1433 msgid "Compile all" msgstr "Minden fordítása" #: FMain.form:1476 msgid "Finish current function" msgstr "" #: FMain.form:1492 #, fuzzy msgid "Show menubar" msgstr "Sorszámok megjelenítése" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Fájl" #: FMain.form:1606 msgid "&Project" msgstr "&Projekt" #: FMain.form:1618 msgid "&Debug" msgstr "&Hibakeresés" #: FMain.form:1630 msgid "&View" msgstr "&Nézet" #: FMain.form:1642 msgid "&Tools" msgstr "&Eszközök" #: FMain.form:1654 msgid "&?" msgstr "-" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "A hibakeresési információk maradjanak a futtatható programban" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeInstall.class:123 msgid "Package" msgstr "Csomag" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Csomag létrehozása ehhez: &1." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "A csomag sikeresen létre lett hozva." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Legyen szíves, adja be a nevét." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Legyen szíves, adja be az e-mail címét." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Legyen szíves, adja meg a menü nevét." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Legyen szíves, adja be az első CHANGELOG-bejegyzést." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:518 msgid "Initial release" msgstr "" #: FMakeInstall.class:778 msgid "Menus" msgstr "" #: FMakeInstall.class:846 msgid "Groups" msgstr "Csoportok" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "" #: FMakeInstall.form:214 FOption.form:380 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "Cím" #: FMakeInstall.form:317 msgid "Changelog" msgstr "Változási napló" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "Kategóriák" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "MIME-típusok" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Forráscsomag létrehozása" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Forráscsomagok" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "Legyen szíves, adja meg a menü nevét." #: FMenu.class:318 msgid "Bad menu name !" msgstr "Rossz a menü neve!" #: FMenu.class:324 msgid "Bad group name !" msgstr "Rossz a csoport neve!" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Ez a menü túl mély!" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "megváltozott" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 msgid "Insert separator" msgstr "" #: FMenu.form:100 msgid "Insert menu before" msgstr "" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Beillesztés" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Törlés" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Kattintson a Beszúrás parancsra az új menü hozzáadásához." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Adatbázis" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Adatbázis" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Gépnév" #: FNewConnection.form:124 msgid "Path" msgstr "Elérési út" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Jelszó" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "Adatbázis" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Válasszon ki egy projektet" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Példák" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "-" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Beillesztés" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "Gyors" #: FOption.class:4 msgid "Ruby" msgstr "-" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Vizuális" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Asztal" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "(Alapértelmezés)" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:237 msgid "Export a theme file" msgstr "" #: FOption.class:462 msgid "Select a theme file" msgstr "" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Nem sikerült csatlakozni az adatbázishoz." #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 #, fuzzy msgid "Network is not available." msgstr "nem érhető el" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Nem tudom átmásolni a &1 fájlt." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 msgid "Unable to install documentation." msgstr "" #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Behúzás" #: FOption.form:352 msgid "Package maintainer" msgstr "" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Alapértelmezett érték" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Nem" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Igen" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Projekt" #: FOption.form:458 msgid "Default tab size" msgstr "Alapértelmezett tabulátor-távolság" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 msgid "Activate version control" msgstr "" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "kép" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Fordítás ürítése" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Fordításfájlok" #: FOption.form:653 msgid "Interface" msgstr "Felület" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Eszköz-tippek megmutatása" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "Normál" #: FOption.form:778 msgid "Small" msgstr "Kicsi" #: FOption.form:790 msgid "Sort properties" msgstr "" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "" #: FOption.form:867 msgid "Fonts" msgstr "Betűtípus" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 #, fuzzy msgid "Debugger size" msgstr "Nyomkövetés" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "Súgó" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Fix szélességű betűtípus használata" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 #, fuzzy msgid "Themes" msgstr "Téma" #: FOption.form:1087 msgid "Icon theme" msgstr "" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Kiemelés" #: FOption.form:1117 msgid "Import theme" msgstr "" #: FOption.form:1123 msgid "Export theme" msgstr "" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Az aktív sor kiemelése" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "" #: FOption.form:1230 msgid "Show line numbers" msgstr "Sorszámok megjelenítése" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 #, fuzzy msgid "Show Preview" msgstr "Előnézet" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 msgid "Local variable declaration" msgstr "" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Kapcsolat" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Minden ablak bezárása" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 #, fuzzy msgid "Documentation" msgstr "Hely" #: FOption.form:1667 msgid "Use offline documentation" msgstr "" #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "Alkalmazások" #: FOption.form:1755 msgid "Browser" msgstr "Böngésző" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "Terminál" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:78 msgid "Clear console" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Újabb keletű projekt betöltése" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "A vágólap tartalma" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Nem tudom ezt átnevezni: '&1'" #: FProfile.class:647 msgid "Calls" msgstr "Hívások" #: FProfile.class:650 msgid "Duration" msgstr "Időtartam" #: FProfile.class:653 msgid "Average" msgstr "Közepes" #: FProfile.class:656 msgid "Self" msgstr "Saját maga" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "Hívók" #: FProfile.form:138 msgid "Callers" msgstr "Hívók" #: FProjectProperty.class:159 msgid "Variable" msgstr "Változó" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "A rácshoz illesztés paramétere nem jó." #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Alapértelmezett tabulátor-távolság" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 msgid "Information about component" msgstr "" #: FProjectProperty.class:964 #, fuzzy msgid "Information about library" msgstr "Információ" #: FProjectProperty.class:1454 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Futtatható program létrehozása" #: FProjectProperty.form:267 msgid "General" msgstr "Általános" #: FProjectProperty.form:304 msgid "Component" msgstr "Komponens" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "Programkönyvtár" #: FProjectProperty.form:311 msgid "Vendor" msgstr "" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Verzió" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Cím" #: FProjectProperty.form:389 msgid "Information" msgstr "Információ" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 #, fuzzy msgid "Include information from" msgstr "Információ" #: FProjectProperty.form:484 msgid "Required features" msgstr "" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 msgid "Require" msgstr "" #: FProjectProperty.form:567 msgid "Exclude" msgstr "" #: FProjectProperty.form:579 msgid "Remove All" msgstr "Minden eltávolítása" #: FProjectProperty.form:586 msgid "Components" msgstr "Komponensek" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "Programkönyvtárak" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Beállítások" #: FProjectProperty.form:664 msgid "Environment" msgstr "" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Beillesztés" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Paraméterek" #: FProjectProperty.form:746 msgid "Edition" msgstr "Kiadás" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Tabulátor-távolság" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Fordítás" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Az űrlap űrlapelemei publikusak." #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Frissítés" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Tiltott karakterek vannak az űrlapelem nevében." #: FProperty.class:389 msgid "This name is already in use." msgstr "Ez a név már használatban van." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Tiltott karakterek vannak az űrlapelem-csoportban." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Nem megfelelő tulajdonságérték." #: FProperty.class:637 msgid "The name of the control." msgstr "" #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Nincs" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "Port" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "A csomag sikeresen létre lett hozva." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Nem megfelelő tulajdonságérték." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Biztos, hogy újra be akarja tölteni ezt a fordítást?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Válasszon ki egy színt" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Képfájlok" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Leírás" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Tabulátor-távolság" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Szegély" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Megváltozott fájlok mentése" #: FSave.form:42 msgid "Save All" msgstr "Minden mentése" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "A keresett szöveg egy helyen lett cserélve." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "A keresett szöveg &1 helyen lett cserélve." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "Keresés és csere" #: FSearch.form:104 msgid "Case sensitive" msgstr "Nagybetűérzékeny" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "Reguláris kifejezésként" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Adattípusok" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Kiemelés" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Válasszon ki egy képet" #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Ismeretlen" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Válasszon ki egy színt" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Játékok" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Kiadás" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "Videó" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 #, fuzzy msgid "Accessories" msgstr "Hozzáférés megtiltva" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Felület" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Kifejezés" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 msgid "No software found." msgstr "" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Mégsem" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Nem tudom ezt átnevezni: '&1'" #: FSoftwareFarm.class:557 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Nem tudom ezt átnevezni: '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Nem tudom ezt átnevezni: '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "A csomag sikeresen létre lett hozva." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Biztos, hogy le akarja törölni ezt a fájlt?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Nem tudom ezt átnevezni: '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas űrlapok" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Újabb keletű projekt betöltése" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Eszköz-tippek megmutatása" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Eszköz-tippek megmutatása" #: FSoftwareFarm.form:393 #, fuzzy msgid "Download" msgstr "Le" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Lista formájú tulajdonság szerkesztése" #: FText.form:29 msgid "Use a fixed font" msgstr "Fix szélességű betűtípus használata" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 msgid "Sort ascent" msgstr "" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Nem lehet beolvasni a \"nap tippje\" fájlt!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Tippek mutatása a program indításakor" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "A projekt üres. Nincs lefordítható szöveg." #: FTranslate.class:74 msgid "Language" msgstr "Nyelv" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Lefordítás" #: FTranslate.class:167 msgid "Translation files" msgstr "Fordításfájlok" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Nem tudom beolvasni a(z) '&1' nyelvhez tartozó fordításfájlt." #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Nem tudom a fordítást kimenteni." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Biztos, hogy le akarja törölni ezt a fordítást?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Biztos, hogy újra be akarja tölteni ezt a fordítást?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Fordítás exportálása" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Nem tudom importálni a fordításfájlt." #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Úgy látszik, minden rendben van." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "A lefordított szövegben a jelek nem illenek a lefordítatlanban találhatókhoz." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Nem tudom importálni a fordításfájlt." #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Biztos, hogy le akarja törölni ezt a fordítást?" #: FTranslate.form:76 msgid "Project translation" msgstr "" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Fordítás ürítése" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "" #: FTranslate.form:232 msgid "Verify the translation" msgstr "A fordítás ellenőrzése" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Következő lefordítatlan sztring keresése" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Következő lefordítatlan sztring keresése" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Következő lefordítatlan sztring keresése" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Fordítás ürítése" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Ez a szöveg nem lefordítható" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Lefordítatlan szöveg másolása" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Fordítás ürítése" #: FTranslate.form:472 msgid "Import a translation file" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Ki akarja üríteni a kifejezések listáját?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:61 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Válasszon ki egy betűtípust" #: FWelcome.class:68 msgid "New project..." msgstr "Új projekt..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Újabb keletű projektek" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Gambas projekt" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arab (Egyiptom)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arab (Tunézia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bolgár (Bulgária)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalán (Katalónia, Spanyolország)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Velszi (Egyesült Királyság)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Cseh (Cseh Köztársaság)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Dán (Dánia)" #: Language.module:34 msgid "German (Germany)" msgstr "Német (Németország)" #: Language.module:35 msgid "German (Belgium)" msgstr "Német (Belgium)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Görög (Görögország)" #: Language.module:41 msgid "English (common)" msgstr "Angol (közös)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Angol (Egyesült Királyság)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Angol (Amerikai Egyesült Államok)" #: Language.module:44 msgid "English (Australia)" msgstr "Angol (Ausztrália)" #: Language.module:45 msgid "English (Canada)" msgstr "Angol (Kanada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Eszperantó (mindenhol!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Angol (közös)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spanyol (Spanyolország)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spanyol (Argentína)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Észt (Észtország)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Fárszi (Irán)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finn (Finnország)" #: Language.module:68 msgid "French (France)" msgstr "Francia (Franciaország)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francia (Belgium)" #: Language.module:70 msgid "French (Canada)" msgstr "Francia (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francia (Svájc)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galíciai (Spanyolország)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Héber (Izrael)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (India)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Magyar (Magyarország)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Horvát (Horvátország)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonéz (Indonézia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Ír (Írország)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Olasz (Olaszország)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japán (Japán)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Kambodzsa)" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "Latin" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Litván (Litvánia)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (India)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Holland (Hollandia)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Holland (Belgium)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norvég (Norvégia)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Pandzsábi (India)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Lengyel (Lengyelország)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugál (Portugália)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugál (Brazília)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Román (Románia)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Orosz (Oroszország)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Szlovén (Szlovénia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albán (Albánia)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Szerb (Szerbia és Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Svéd (Svédország)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Török (Törökország)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnami (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Vallon (Belgium)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Egyszerűsített kínai (Kína)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Hagyományos kínai (Tajvan)" #: Language.module:220 msgid "Unknown" msgstr "Ismeretlen" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Hozzáférés megtiltva" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Már létezik ilyen nevű fájl" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Illegális utasítás" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Érvénytelen dátum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "Nincs több memória" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "Túlcsordulás" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "Olvasási hiba" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "Veremtúlcsordulás" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "Szintaktikai hiba" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "Ismeretlen hiba" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "Írási hiba" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Ez a projekt már létezik." #: MMime.module:17 msgid "Plain text" msgstr "Egyszerű szöveg" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Megjegyzések" #: MTheme.module:6 msgid "Current line" msgstr "Aktív sor" #: MTheme.module:6 msgid "Data types" msgstr "Adattípusok" #: MTheme.module:6 msgid "Editing line" msgstr "Sor szerkesztése" #: MTheme.module:6 msgid "Errors" msgstr "Hibák" #: MTheme.module:6 msgid "Highlighting" msgstr "Kiemelés" #: MTheme.module:6 msgid "Keywords" msgstr "Kulcsszavak" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Egyszerű szöveg" #: MTheme.module:6 msgid "Numbers" msgstr "Számok" #: MTheme.module:6 msgid "Operators" msgstr "Operátorok" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Sztringek" #: MTheme.module:6 msgid "Subroutines" msgstr "Szubrutinok" #: MTheme.module:6 msgid "Symbols" msgstr "Szimbólumok" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "CHANGELOG fájl mentése." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Csomag létrehozása ehhez: &1." #: Package.module:744 msgid "The package build has failed." msgstr "A csomag létrehozása nem sikerült." #: Package.module:812 msgid "Making build directory." msgstr "" #: Package.module:867 msgid "Creating desktop file..." msgstr "" #: Package.module:875 msgid "Sources are being debianizated." msgstr "" #: Package.module:1080 msgid "Creating package..." msgstr "" #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "~/RPM könyvtár előkészítése." #: Package.module:1390 msgid "Creating source package." msgstr "Forráscsomag létrehozása." #: Package.module:1414 msgid "Creating .spec file." msgstr ".spec fájl létrehozása." #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "" #: Project.module:228 msgid "Basic" msgstr "Egyszerű" #: Project.module:230 msgid "Drawing" msgstr "" #: Project.module:233 msgid "Miscellaneous" msgstr "Egyéb" #: Project.module:234 msgid "Networking" msgstr "" #: Project.module:235 msgid "OpenGL" msgstr "OpenGL" #: Project.module:236 msgid "Printing" msgstr "Nyomtatás" #: Project.module:237 msgid "Sound" msgstr "Hang" #: Project.module:239 msgid "Controls" msgstr "" #: Project.module:240 msgid "Multimedia" msgstr "Multimédia" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "" #: Project.module:518 msgid "This project does not exist." msgstr "" #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "Konvertálás" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Ne nyissa ki" #: Project.module:573 msgid "Open after all" msgstr "Mégis nyissa ki" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Ez a projekt csak olvasható." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Nem tudom kinyitni a projekt-fájlt:\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Nem tudom kinyitni a fájlt." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Nem tudom kinyitni a fájlt." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2464 msgid "Compiling project" msgstr "Projekt fordítása" #: Project.module:2715 msgid "File already exists." msgstr "A fájl már létezik." #: Project.module:2747 msgid "Directory already exists." msgstr "A könyvtár már létezik." #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Nem tudom átmásolni a sablonfájlt." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 msgid "Cannot install library in &1." msgstr "" #: Project.module:3031 msgid "Making executable..." msgstr "Futtatható program létrehozása..." #: Project.module:3083 msgid "Cannot make executable." msgstr "" #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Néhány komponens hiányzik: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Nem tudom kiírni a projekt-fájlt." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Ki kell választani egy indító osztályt vagy űrlapot!" #: Project.module:4080 msgid "Please type a name." msgstr "Legyen szíves, adjon meg egy nevet." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Ez a név már használatban van. Válasszon más nevet." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Nem tudom ezt átnevezni: '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Legyen szíves, adja meg a projekt nevét." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4488 msgid "This project already exists." msgstr "Ez a projekt már létezik." #: Project.module:4491 msgid "The project directory already exists." msgstr "" #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Forráscsomag létrehozása" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Nem tudom átmásolni a &1 fájlt." #: Project.module:4881 msgid "Cannot create link &1." msgstr "" #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:4960 msgid "Cannot move file &1." msgstr "Nem tudom áthelyezni a &1 fájlt." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 msgid "Unable to update forms." msgstr "" #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 msgid "Unable to read component description file." msgstr "" #: Project.module:6171 msgid "Cannot write component description file." msgstr "" #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Projekt tulajdonságai" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Nem tudom ezt átnevezni: '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Nem tudom kimenteni a fájlt!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 msgid "Please check your network connection." msgstr "" #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Biztos, hogy le akarja törölni ezt a könyvtárat?" #: VersionControl.module:506 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Ez a projekt már létezik." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Open project..." #~ msgstr "Projekt megnyitása..." #~ msgid "Edit text property" #~ msgstr "Szöveges tulajdonság szerkesztése" #~ msgid "Show only components used in project" #~ msgstr "Csak a projektben használt komponensek megmutatása" #~ msgid "Environment variables" #~ msgstr "Környezeti változók" #~ msgid "Author(s)" #~ msgstr "Szerző(k)" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Üdvözli a Gambas konzol.\n" #~ "Ha egy kifejezés eredményét akarja látni, írja be, hogy\n" #~ "'?' és a kifejezést, és nyomja meg az Entert.\n" #~ "\n" #~ msgid "Blend" #~ msgstr "Összeolvasztás" #~ msgid "Last modified" #~ msgstr "Utolsó módosítás" #~ msgid "ChangeLog" #~ msgstr "ChangeLog" #~ msgid "Text file" #~ msgstr "Szövegfájl" #~ msgid "Picture" #~ msgstr "Kép" #~ msgid "Messages" #~ msgstr "Üzenetek" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Kattintson egy űrlapra, hogy megjelenjen az űrlapelemek hierarchiája." #~ msgid "Display" #~ msgstr "Képernyő" #~ msgid "Existing" #~ msgstr "Létező" #~ msgid "Details" #~ msgstr "Részletek" #~ msgid "

Authors

\n" #~ msgstr "

Szerzők

\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "About Gambas..." #~ msgstr "A Gambas névjegye..." #~ msgid "Thanks to" #~ msgstr "Köszönet: " gambas-3.16.3/app/src/gambas3/.lang/id.po000066400000000000000000004526431411575327000177000ustar00rootroot00000000000000# #-#-#-#-# CClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CConfig.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 #, fuzzy msgid "Static properties" msgstr "Properti proyek" #: CClassInfo.class:604 msgid "Static variables" msgstr "" #: CClassInfo.class:605 msgid "Static methods" msgstr "" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Properti" #: CClassInfo.class:624 msgid "Variables" msgstr "" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 msgid "static function" msgstr "" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Klas" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Kelas" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Penjelasan" #: CComponent.class:1667 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Proyek ini hanya dapat dibaca." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "Penulis" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "" #: CComponent.class:1690 msgid "Implements" msgstr "" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:1717 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 #, fuzzy msgid "Terminal emulator" msgstr "Terminal" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:88 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:125 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:128 msgid "Report designer" msgstr "" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Komponen" #: CDocumentation.class:134 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:135 msgid "Application settings management" msgstr "" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Pengaturan" #: CDocumentation.class:138 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Komponen" #: CDocumentation.class:140 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:141 msgid "Video capture" msgstr "" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 msgid "Web application development" msgstr "" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Form" #: CModule.class:28 msgid "Forms" msgstr "Form" #: CModule.class:28 msgid "Gambas forms" msgstr "Form Gambas" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Form Gambas" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Form" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Form" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Form Gambas" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Form" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Form" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Batal" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Yakin akan menghapus file ini ?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Paket telah dibuat dengan sukses." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Proyek" #: CProjectTree.class:346 msgid "Sources" msgstr "" #: CProjectTree.class:348 msgid "Connections" msgstr "" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Data" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "Hari Ini" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Kemarin" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Buat executable" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "File atau direktori tidak dapat dihapus" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Kemarin" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Baris saat ini" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "TIdak dapat membuat proyek!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "TIdak dapat membuat proyek!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Proyek terkini" #: CVersionControlGit.class:319 msgid "Status" msgstr "" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:373 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "-" #: CVersionControlGit.class:411 msgid "Solve conflict." msgstr "" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "" "Program mengembalikan \n" "nilai: &1" #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Program mengembalikan \n" "nilai: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "Tentang Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "Sistem" #: FColorChooser.form:35 msgid "Free" msgstr "" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Pilih proyek" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Muati kembali" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "&Edit" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Teks" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "Gambar" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "-" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Salin" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "-" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Batal" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Ulangi" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "-" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "-" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Buka" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Simpan" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Tutup" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Komentar" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Bukan komentar" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Pilih Semua" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Menuju ke baris" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Tampilan" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:284 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Kode" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Sebelumnya" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Nama" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tipe" #: FConnectionEditor.class:61 msgid "Length" msgstr "Panjang" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Kompilasi" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Indeks" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "tak terbatas" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Tanggal" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "Panjang" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Hapus" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Ganti Nama" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "Impor" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Tambah" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "Down" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "Up" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Baru" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Bersihkan" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Ekspor" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Hapus" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Pilih semua" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "Program mengembalikan \n" "nilai: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Opsi" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Lebar" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Tinggi" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "TIdak dapat membuat proyek!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Silahkan ketik sebuah nama." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Proyek baru" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Direktori" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Properti proyek" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Proyek dapat diterjemahkan" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "Mengawakutu" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Konsol" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Breakpoint" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 msgid "Search result" msgstr "" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Nilai" #: FDebugExpr.class:508 msgid "Key" msgstr "Tombol" #: FDebugExpr.class:514 msgid "Symbol" msgstr "" #: FDebugExpr.form:33 msgid "Watch" msgstr "Lihat" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Baris" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "-" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:126 msgid "native code" msgstr "-" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Pengamat ekspresi" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Ingin membersihkan daftar ekspresi ini ?" #: FDebugInfo.class:1070 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1209 msgid "Current object" msgstr "" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "-" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:124 msgid "Add expression" msgstr "" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "-" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "-" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Tabel" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "-" #: FDebugInfo.form:201 #, fuzzy msgid "Enable" msgstr "Tabel" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "String yang dicari tidak dapat ditemukan." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:379 FMain.form:508 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Menuju" #: FEditor.form:243 msgid "Find definition" msgstr "" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Jalankan sampai baris ini" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "-" #: FEditor.form:314 msgid "Watch expression" msgstr "Pengamat ekspresi" #: FEditor.form:323 msgid "Open form" msgstr "" #: FEditor.form:330 FMain.form:1067 msgid "Run this class" msgstr "" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Editor" #: FEditor.form:523 FTextEditor.form:507 msgid "Insert special character" msgstr "" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Pengguna" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Sandi" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Ingat sandi" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Masukan alamat e-mail Anda." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Tidak dapat mengganti nama '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Ingat sandi" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "Tabel" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Lanjutkan" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Modul" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 msgid "Undo changes" msgstr "" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:134 msgid "Bad form file" msgstr "File form rusak" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Galat tak diketahui" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Tidak dapat membuka file." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Pilih" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Pilih proyek" #: FForm.form:239 msgid "Arrangement" msgstr "Pengaturan" #: FForm.form:243 msgid "Bring to foreground" msgstr "Bawa ke latar depan" #: FForm.form:250 msgid "Send to background" msgstr "Kirim ke latar belakang" #: FForm.form:260 msgid "Horizontal" msgstr "Horisontal" #: FForm.form:267 msgid "Rows" msgstr "Baris" #: FForm.form:273 msgid "Vertical" msgstr "Vertikal" #: FForm.form:280 msgid "Columns" msgstr "Kolom" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Perataan" #: FForm.form:305 msgid "Align to left" msgstr "Rata kiri" #: FForm.form:311 msgid "Align to right" msgstr "Rata kanan" #: FForm.form:317 msgid "Align to top" msgstr "Rata atas" #: FForm.form:323 msgid "Align to bottom" msgstr "Rata bawah" #: FForm.form:332 msgid "Same width" msgstr "Sama lebar" #: FForm.form:338 msgid "Same height" msgstr "Sama tinggi" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "" #: FForm.form:360 msgid "First" msgstr "" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Sebelumnya" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Berikut" #: FForm.form:381 msgid "Last" msgstr "" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Menu editor" #: FForm.form:401 msgid "Event" msgstr "-" #: FForm.form:415 msgid "Run this form" msgstr "" #: FForm.form:568 msgid "Toggle grid" msgstr "" #: FForm.form:577 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:696 msgid "Move tab first" msgstr "" #: FForm.form:703 msgid "Move tab left" msgstr "" #: FForm.form:710 msgid "Move tab right" msgstr "" #: FForm.form:717 msgid "Move tab last" msgstr "" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "Tebal" #: FForm.form:753 msgid "Italic" msgstr "Miring" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "Garis Bawah" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Latar belakang" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Hirarki" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Bantuan" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Kembali" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "Maju" #: FHelpBrowser.form:120 msgid "Print" msgstr "Cetak" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 #, fuzzy msgid "Debugger" msgstr "-" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Terjemahan" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Seleksi" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Preferensi" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Seleksi" #: FImageEditor.form:283 msgid "Exclusive or" msgstr "" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Gambar" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Persegi empat" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elips" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "px" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "Warna" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 #, fuzzy msgid "Colorize" msgstr "Warna" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Baris" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Baris" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Ukuran" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Terjemah" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "Pratilik" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Atur Ulang" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 #, fuzzy msgid "Right align" msgstr "Ditandai" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "-" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Modul Gambas" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "File gambar" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Tidak dapat membuka file." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Impor" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Semua file" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:79 msgid "Charset" msgstr "" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Edit daftar properti" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Yakin akan menghapus direktori ini ?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Yakin akan menghapus file ini ?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "File atau direktori tidak dapat dihapus" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "" #: FMain.class:751 msgid "&Clear history" msgstr "&Bersihkan histori" #: FMain.class:935 msgid "New folder" msgstr "" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1847 msgid "Clean" msgstr "" #: FMain.class:2164 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Yakin akan menghapus direktori ini ?" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "File telah dimodifikasi.\n" "\n" "Semua perubahan tidak akan disimpan." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Argumen" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Buka proyek" #: FMain.form:289 msgid "Open recent" msgstr "Buka proyek terakhir" #: FMain.form:297 msgid "Open example" msgstr "Buka proyek contoh" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Simpan proyek" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Pilih proyek" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Keluar" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Simpan" #: FMain.form:418 msgid "Compile" msgstr "Kompilasi" #: FMain.form:425 msgid "Compile All" msgstr "Kompilasi Semua" #: FMain.form:435 msgid "Translate" msgstr "Terjemah" #: FMain.form:444 msgid "Make" msgstr "" #: FMain.form:448 msgid "Executable" msgstr "" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "" #: FMain.form:462 msgid "Installation package" msgstr "" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:546 msgid "Refresh" msgstr "Refresh" #: FMain.form:568 msgid "Run" msgstr "Jalankan" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Argumen" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 #, fuzzy msgid "GUI component" msgstr "Komponen" #: FMain.form:615 #, fuzzy msgid "Current desktop" msgstr "Baris saat ini" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "-" #: FMain.form:658 msgid "Stop" msgstr "Berhenti" #: FMain.form:665 msgid "Step" msgstr "Langkah" #: FMain.form:672 msgid "Forward" msgstr "Maju" #: FMain.form:679 msgid "Finish" msgstr "" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "" #: FMain.form:699 msgid "Close all debug windows" msgstr "" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Tutup semua jendela" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "Cari" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Ganti" #: FMain.form:796 msgid "Browse project" msgstr "" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "Jalan Pintas" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Preferensi" #: FMain.form:854 msgid "Directory" msgstr "Direktori" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Modul" #: FMain.form:927 msgid "HTML file" msgstr "" #: FMain.form:934 msgid "Style sheet" msgstr "" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "-" #: FMain.form:981 msgid "Open in file manager" msgstr "" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Buka proyek" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "" #: FMain.form:1060 msgid "Startup class" msgstr "Startup klas" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Simpan file yang telah diubah" #: FMain.form:1098 msgid "Show files in conflict" msgstr "" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Terjemah" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Tips hari ini" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Properti proyek" #: FMain.form:1311 msgid "Refresh project" msgstr "" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Buat executable" #: FMain.form:1353 msgid "Make source archive" msgstr "" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "" #: FMain.form:1382 msgid "Properties sheet" msgstr "Lembar properti" #: FMain.form:1391 msgid "Toolbox" msgstr "Kotak alat" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "" #: FMain.form:1433 msgid "Compile all" msgstr "Kompilasi semua" #: FMain.form:1476 msgid "Finish current function" msgstr "" #: FMain.form:1492 msgid "Show menubar" msgstr "" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&File" #: FMain.form:1606 msgid "&Project" msgstr "&Proyek" #: FMain.form:1618 msgid "&Debug" msgstr "&Debug" #: FMain.form:1630 msgid "&View" msgstr "&Lihat" #: FMain.form:1642 msgid "&Tools" msgstr "Per&alatan" #: FMain.form:1654 msgid "&?" msgstr "&Bantuan" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Sertakan informasi debug di dalam executable" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeInstall.class:123 msgid "Package" msgstr "" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Membuat paket untuk &1." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Paket telah dibuat dengan sukses." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Masukan nama Anda." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Masukan alamat e-mail Anda." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Masukan nama Anda." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Masukan perubahan pertama kali." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:518 msgid "Initial release" msgstr "" #: FMakeInstall.class:778 msgid "Menus" msgstr "" #: FMakeInstall.class:846 msgid "Groups" msgstr "" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "" #: FMakeInstall.form:214 FOption.form:380 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "" #: FMakeInstall.form:317 msgid "Changelog" msgstr "Log Perubahan" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Buat paket sumber" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Paket sumber" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "" #: FMenu.class:318 msgid "Bad menu name !" msgstr "Nama menu tidak valid !" #: FMenu.class:324 msgid "Bad group name !" msgstr "Nama group tidak valid !" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Menu ini terlalu dalam !" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "modifikasi" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 msgid "Insert separator" msgstr "" #: FMenu.form:100 msgid "Insert menu before" msgstr "" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Insert" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Hapus" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Klik tombol 'Insert' untuk tambah menu baru." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 msgid "Create database" msgstr "" #: FNewConnection.class:241 msgid "Delete database" msgstr "" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Host" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Sandi" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Pilih proyek" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Contoh" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Emerald" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "-" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Desktop" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:237 msgid "Export a theme file" msgstr "" #: FOption.class:462 msgid "Select a theme file" msgstr "" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 msgid "Network is not available." msgstr "" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "File &1 tidak dapat disalin." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 msgid "Unable to install documentation." msgstr "" #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "-" #: FOption.form:352 msgid "Package maintainer" msgstr "" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Ukuran tab default" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Tidak" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Ya" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Proyek" #: FOption.form:458 msgid "Default tab size" msgstr "Ukuran tab default" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 msgid "Activate version control" msgstr "" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Gambar" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Bersihkan terjemahan ini" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "File terjemahan" #: FOption.form:653 msgid "Interface" msgstr "Antarmuka" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Tampilkan tooltips" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "Normal" #: FOption.form:778 msgid "Small" msgstr "Kecil" #: FOption.form:790 msgid "Sort properties" msgstr "" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "" #: FOption.form:867 msgid "Fonts" msgstr "" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 #, fuzzy msgid "Debugger size" msgstr "Mengawakutu" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "Bantuan" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Gunakan font fixed" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 #, fuzzy msgid "Themes" msgstr "Tema" #: FOption.form:1087 msgid "Icon theme" msgstr "" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Ditandai" #: FOption.form:1117 msgid "Import theme" msgstr "" #: FOption.form:1123 msgid "Export theme" msgstr "" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Tandai baris ini" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "" #: FOption.form:1230 msgid "Show line numbers" msgstr "" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 #, fuzzy msgid "Show Preview" msgstr "Pratilik" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 msgid "Local variable declaration" msgstr "" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Komentar" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Tutup semua jendela" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 msgid "Documentation" msgstr "" #: FOption.form:1667 msgid "Use offline documentation" msgstr "" #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "Aplikasi" #: FOption.form:1755 msgid "Browser" msgstr "" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "Terminal" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:78 msgid "Clear console" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Buka proyek terakhir" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Tidak dapat mengganti nama '&1'" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:159 msgid "Variable" msgstr "" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Nilai tidak valid" #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Ukuran tab default" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 msgid "Information about component" msgstr "" #: FProjectProperty.class:964 #, fuzzy msgid "Information about library" msgstr "Informasi" #: FProjectProperty.class:1454 #, fuzzy msgid "Select a Gambas executable" msgstr "Buat executable" #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Buat executable" #: FProjectProperty.form:267 msgid "General" msgstr "Umum" #: FProjectProperty.form:304 msgid "Component" msgstr "Komponen" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:311 msgid "Vendor" msgstr "" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versi" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Judul" #: FProjectProperty.form:389 msgid "Information" msgstr "Informasi" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 #, fuzzy msgid "Include information from" msgstr "Informasi" #: FProjectProperty.form:484 msgid "Required features" msgstr "" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 msgid "Require" msgstr "" #: FProjectProperty.form:567 msgid "Exclude" msgstr "" #: FProjectProperty.form:579 msgid "Remove All" msgstr "" #: FProjectProperty.form:586 msgid "Components" msgstr "Komponen" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Preferensi" #: FProjectProperty.form:664 msgid "Environment" msgstr "" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Insert" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Argumen" #: FProjectProperty.form:746 msgid "Edition" msgstr "Edisi" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Ukuran Tab" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Kompilasi" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Form kontrol bersifat publik" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Mutakhirkan" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Karakter terlarang di kontrol nama." #: FProperty.class:389 msgid "This name is already in use." msgstr "Nama ini sudah pernah digunakan." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Karakter terlarang di kontrol grup." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Nilai properti tidak sesuai." #: FProperty.class:637 msgid "The name of the control." msgstr "" #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Tak Ada" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Paket telah dibuat dengan sukses." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Nilai properti tidak sesuai." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Yakin akan memuat kembali terjemahan ini ?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Pilih proyek" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "File gambar" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Penjelasan" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Ukuran Tab" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Simpan file yang telah diubah" #: FSave.form:42 msgid "Save All" msgstr "" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "String yang dicari telah diganti sekali." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "String yang dicari telah diganti &1 kali." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "" #: FSearch.form:104 msgid "Case sensitive" msgstr "" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Tipe data" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Ditandai" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Pilih gambar" #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Tidak dikenal" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Pilih semua" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Permainan" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Edisi" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "Video" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Antarmuka" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Ekspresi" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 msgid "No software found." msgstr "" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Batal" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Yakin akan menghapus file ini ?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Tidak dapat mengganti nama '&1'" #: FSoftwareFarm.class:557 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Yakin akan menghapus file ini ?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Tidak dapat mengganti nama '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Yakin akan menghapus file ini ?" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Yakin akan menghapus file ini ?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Tidak dapat mengganti nama '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Paket telah dibuat dengan sukses." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Yakin akan menghapus file ini ?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Tidak dapat mengganti nama '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Form Gambas" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Buka proyek terakhir" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Tampilkan tooltips" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Tampilkan tooltips" #: FSoftwareFarm.form:393 #, fuzzy msgid "Download" msgstr "Down" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Edit daftar properti" #: FText.form:29 msgid "Use a fixed font" msgstr "Gunakan font fixed" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 msgid "Sort ascent" msgstr "" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Tidak dapat membaca tips hari ini !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Tampilkan tips pada saat startup" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Tidak ada yang perlu di terjemahkan." #: FTranslate.class:74 msgid "Language" msgstr "" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Terjemah" #: FTranslate.class:167 msgid "Translation files" msgstr "File terjemahan" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "File terjemahan untuk bahasa '&1' tidak dapat dibaca" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Terjemahan tidak dapat disimpan." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Yakin akan menghapus terjemahan ini ?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Yakin akan memuat kembali terjemahan ini ?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Eksport terjemahan" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Tidak dapat meng-import file terjemahan" #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Segalanya tampak sudah benar." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Simbol string terjemahan tidak cocok dengan string yang tidak diterjemahkan ini." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Tidak dapat meng-import file terjemahan" #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Yakin akan menghapus terjemahan ini ?" #: FTranslate.form:76 msgid "Project translation" msgstr "" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Bersihkan terjemahan ini" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Verifikasi terjemahan" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Cari kata berikutnya yang belum diterjemahkan" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Cari kata berikutnya yang belum diterjemahkan" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Cari kata berikutnya yang belum diterjemahkan" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Bersihkan terjemahan ini" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "String ini seharusnya tidak diterjemahkan" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Salin string yang tidak diterjemahkan" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Bersihkan terjemahan ini" #: FTranslate.form:472 msgid "Import a translation file" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Ingin membersihkan daftar ekspresi ini ?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:61 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Seleksi" #: FWelcome.class:68 msgid "New project..." msgstr "Proyek baru..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Proyek terkini" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Proyek Gambas" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arab (Mesir)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arab (Tunisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgaria (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalan (Catalonia, Spain)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "-" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danish (Denmark)" #: Language.module:34 msgid "German (Germany)" msgstr "German (Germany)" #: Language.module:35 msgid "German (Belgium)" msgstr "German (Belgium)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Greek (Greece)" #: Language.module:41 msgid "English (common)" msgstr "Inggris (umum)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inggris (United Kingdom)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inggris (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Inggris (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Inggris (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Inggris (umum)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spanish (Spain)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spanish (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "French (France)" #: Language.module:69 msgid "French (Belgium)" msgstr "French (Belgium)" #: Language.module:70 msgid "French (Canada)" msgstr "French (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "French (Switzerland)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galicia (Spanyol)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Hungarian (Hungary)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Kroasia (Kroasia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesian (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irish (Irlandia)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italian (Itali)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Dutch (Netherlands)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Dutch (Belgium)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norwegian (Norway)" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polish (Poland)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugis (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugis (Brazil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russian (Rusia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovenia (Slovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Swedish (Sweden)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turkish (Turkey)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallon (Belgia)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Cina" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Taiwan" #: Language.module:220 msgid "Unknown" msgstr "Tidak dikenal" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "Stack meluap" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "Galat sintaksis" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "Galat tak diketahui" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Proyek ini sudah ada." #: MMime.module:17 msgid "Plain text" msgstr "" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Komentar" #: MTheme.module:6 msgid "Current line" msgstr "Baris saat ini" #: MTheme.module:6 msgid "Data types" msgstr "Tipe data" #: MTheme.module:6 msgid "Editing line" msgstr "Mengedit baris" #: MTheme.module:6 msgid "Errors" msgstr "Galat" #: MTheme.module:6 msgid "Highlighting" msgstr "Ditandai" #: MTheme.module:6 msgid "Keywords" msgstr "Keyword" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Teks normal" #: MTheme.module:6 msgid "Numbers" msgstr "Angka" #: MTheme.module:6 msgid "Operators" msgstr "Operator" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "String" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutin" #: MTheme.module:6 msgid "Symbols" msgstr "Simbol" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Menyimpan file perubahan." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Membuat paket untuk &1." #: Package.module:744 msgid "The package build has failed." msgstr "Gagal membuat paket." #: Package.module:812 msgid "Making build directory." msgstr "" #: Package.module:867 msgid "Creating desktop file..." msgstr "" #: Package.module:875 msgid "Sources are being debianizated." msgstr "" #: Package.module:1080 msgid "Creating package..." msgstr "" #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Membuat ~/RPM direktori" #: Package.module:1390 msgid "Creating source package." msgstr "Membuat paket sumber." #: Package.module:1414 msgid "Creating .spec file." msgstr "-" #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "" #: Project.module:228 msgid "Basic" msgstr "Dasar" #: Project.module:230 msgid "Drawing" msgstr "" #: Project.module:233 msgid "Miscellaneous" msgstr "Lain-lain" #: Project.module:234 msgid "Networking" msgstr "" #: Project.module:235 msgid "OpenGL" msgstr "OpenGL" #: Project.module:236 msgid "Printing" msgstr "Mencetak %d" #: Project.module:237 msgid "Sound" msgstr "" #: Project.module:239 msgid "Controls" msgstr "" #: Project.module:240 msgid "Multimedia" msgstr "" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "" #: Project.module:518 msgid "This project does not exist." msgstr "" #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Jangan dibuka" #: Project.module:573 msgid "Open after all" msgstr "Buka" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Proyek ini hanya dapat dibaca." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Tidak dapat membuka file proyek :\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Tidak dapat membuka file." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Tidak dapat membuka file." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2464 msgid "Compiling project" msgstr "Kompilasi proyek" #: Project.module:2715 msgid "File already exists." msgstr "File sudah ada." #: Project.module:2747 msgid "Directory already exists." msgstr "Direktori sudah ada." #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "File template tidak dapat disalin." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 msgid "Cannot install library in &1." msgstr "" #: Project.module:3031 msgid "Making executable..." msgstr "Buat executable..." #: Project.module:3083 msgid "Cannot make executable." msgstr "" #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Beberapa komponen hilang: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Tidak dapat menulis file proyek." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Anda harus mendefinisikan kelas startup atau form!" #: Project.module:4080 msgid "Please type a name." msgstr "Silahkan ketik sebuah nama." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Nama ini sudah digunakan. Pilih nama yang lain." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Tidak dapat mengganti nama '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Silahkan ketik nama proyek." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4488 msgid "This project already exists." msgstr "Proyek ini sudah ada." #: Project.module:4491 msgid "The project directory already exists." msgstr "" #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Buat paket sumber" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "File &1 tidak dapat disalin." #: Project.module:4881 msgid "Cannot create link &1." msgstr "" #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:4960 msgid "Cannot move file &1." msgstr "File &1 tidak dapat dipindahkan." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 msgid "Unable to update forms." msgstr "" #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 msgid "Unable to read component description file." msgstr "" #: Project.module:6171 msgid "Cannot write component description file." msgstr "" #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Properti proyek" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Tidak dapat mengganti nama '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Tidak dapat menyimpan file !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 msgid "Please check your network connection." msgstr "" #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Yakin akan menghapus direktori ini ?" #: VersionControl.module:506 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Proyek ini sudah ada." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Thanks to" #~ msgstr "Terima kasih kepada" #~ msgid "About Gambas..." #~ msgstr "Tentang Gambas......" #~ msgid "

Authors

\n" #~ msgstr "

Authors

\n" #~ msgid "Details" #~ msgstr "Detail" #~ msgid "Existing" #~ msgstr "Keberadaan" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Klik pada form untuk menampilkan hirarkinya..." #~ msgid "Picture" #~ msgstr "Gambar" #~ msgid "Text file" #~ msgstr "Berkas teks" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Selamat datang di Gambas konsol.\n" #~ "Untuk evaluasi ekspresi, ketik '?' diikuti dengan\n" #~ "ekspresi, lalu tekan Enter.\n" #~ "\n" #~ msgid "Show only components used in project" #~ msgstr "Tampilkan hanya komponen yang digunakan di dalam proyek" #~ msgid "Open project..." #~ msgstr "Buka proyek..." #, fuzzy #~ msgid "U" #~ msgstr "Up" #, fuzzy #~ msgid "N" #~ msgstr "Tidak" #~ msgid "Edit text property" #~ msgstr "Edit properti teks" gambas-3.16.3/app/src/gambas3/.lang/it.po000066400000000000000000006011151411575327000177060ustar00rootroot00000000000000# #-#-#-#-# CClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CConfig.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/user/Documents/gambas-0.52/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.14.90\n" "POT-Creation-Date: 2020-06-06 18:03 UTC\n" "PO-Revision-Date: 2020-02-29 12:29 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Gambas 3" msgstr "Gambas 3" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Ambiente di sviluppo integrato per Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Imposta un segnalibro" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Cancella tutti i segnalibri" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Segnalibro precedente" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Segnalibro successivo" #: CClassInfo.class:608 msgid "Static properties" msgstr "Proprietà statiche" #: CClassInfo.class:609 msgid "Static variables" msgstr "Variabili statiche" #: CClassInfo.class:610 msgid "Static methods" msgstr "Metodi statici" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "Costanti" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Proprietà" #: CClassInfo.class:629 msgid "Variables" msgstr "Variabili" #: CClassInfo.class:630 msgid "Methods" msgstr "Metodi" #: CClassInfo.class:631 msgid "Events" msgstr "Eventi" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "Questa classe reimplementa &1" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "Questa classe eredita &1" #: CClassInfo.class:661 msgid "in &1" msgstr "nel &1" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Questa classe può essere usata come un oggetto creando un'istanza nascosta su richiesta." #: CClassInfo.class:674 msgid "This class is &1." msgstr "Questa classe è &1." #: CClassInfo.class:674 msgid "creatable" msgstr "creabile" #: CClassInfo.class:679 msgid "This class is static." msgstr "Questa classe è statica." #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "Questa classe non è creabile." #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "Questa classe può essere usata come un &1." #: CClassInfo.class:687 msgid "function" msgstr "funzione" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "Questa classe si comporta come un array di &1 / &2." #: CClassInfo.class:692 msgid "read" msgstr "lettura" #: CClassInfo.class:692 msgid "write" msgstr "scrittura" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "Questa classe si comporta come un array di &1." #: CClassInfo.class:694 msgid "write-only" msgstr "sola scrittura" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "sola lettura" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "Questa classe è &1 con la parola chiave FOR EACH." #: CClassInfo.class:702 msgid "enumerable" msgstr "enumerabile" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "Questa classe reimplementa" #: CClassInfo.class:855 msgid "This class inherits" msgstr "Questa classe riceve" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "Questa classe è virtuale." #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Questa classe può essere usata come un oggetto creando un istanza nascosta a richiesta." #: CClassInfo.class:897 msgid "static function" msgstr "funzione statica" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "Questa classe si comporta come un array statico di &1 / &2." #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "Questa classe si comporta come un array statico di &1." #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "Questa classe è &1 con la parola chiave &2." #: CClassInfo.class:918 msgid "statically enumerable" msgstr "enumerabile staticamente" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "Caricamento informazioni sul componente &1..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Classi" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Classe" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descrizione" #: CComponent.class:1669 msgid "This component is not stable yet." msgstr "Questo componente non è ancora stabile." #: CComponent.class:1671 msgid "This component is deprecated." msgstr "Questo componente è deprecato." #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "Autore" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "Autori" #: CComponent.class:1692 msgid "Implements" msgstr "Implementa" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Richiede" #: CComponent.class:1719 msgid "Excludes" msgstr "Escludi" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Classi native interne" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "Parser degli argomenti del programma" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Libreria grafica Cairo" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Disegno grafici" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "Gestione dei poligoni basata sulla libreria Clipper" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "Gestione dei numeri complessi" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Compressione & decompressione" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "driver di compressione bzlib2" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "driver di compressione zlib" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "Crypting MD5/DES/SHA" #: CDocumentation.class:58 msgid "More data containers" msgstr "Altri contenitori di dati" #: CDocumentation.class:59 msgid "Database access" msgstr "Accesso Database" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Controlli relativi ai dati " #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "Driver del database MySQL" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "Driver del database ODBC" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "Driver del database PostgreSQL" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "Driver del database SQLite 2" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "Driver del database SQLite 3" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Aiutante per il debugger dell'applicazione" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "Componente per la gestione del desktop" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "Supporto della libreria X-Window" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "Supporto per portachiavi Gnome per componente di gestione desktop" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "Interfaccia D-Bus" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Valutatore dell'espressione" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Sintassi delle routine per i colori evidenziati" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Altri controlli per i componenti grafici" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Dialoghi standard avanzati" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "Editor di testo con sintassi per i colori evidenziati" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Interfaccia multi-documento" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "Finestra generica anteprima e stampa" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "Tema icona predefinito" #: CDocumentation.class:80 msgid "Terminal emulator" msgstr "Emulatore di terminale" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "Libreria aritmetica di precisione multipla GNU" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "Libreria scientifica GNU" #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "Kit degli strumenti GTK+2" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL con kit degli strumenti GTK+" #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "Kit degli strumenti GTK+3" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "Componente switcher QT/GTK+" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "OpenGL con interruttore componenti QT/GTK+" #: CDocumentation.class:88 msgid "QT4/QT5 switcher component" msgstr "Interruttore componenti QT4/QT5" #: CDocumentation.class:89 msgid "QT4/QT5 OpenGL switcher component" msgstr "Interruttore componenti QT4/QT5 OpenGL" #: CDocumentation.class:90 msgid "QT4/QT5 WebKit switcher component" msgstr "Interruttore componenti QT4/QT5 WebKit" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "Componente di gestione delle icone nella barra di sistema" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "Server HTTP incorporato" #: CDocumentation.class:93 msgid "Image management" msgstr "Gestione delle immagini" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "Componente di filtraggio dell'immagine" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "Routine di immagine dalla libreria Imlib2" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "Caricamento e salvataggio dell'immagine" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "Monitoraggio degli eventi del filesystem" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "Strumenti XML basati su libxml" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "Sistema di registrazione flessibile" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "Visualizzatore mappe online" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "Sintassi dei marcatori del Markdown di Gambas" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "Componente multimedia GStreamer" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "Controlli multimediali" #: CDocumentation.class:104 msgid "Memcached client" msgstr "Client memcached" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "Gestione del formato MIME basata sulla libreria GMime" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "Routine specifiche MySQL" #: CDocumentation.class:107 msgid "NCurses library" msgstr "Libreria NCurses" #: CDocumentation.class:108 msgid "Network programming" msgstr "Programmazione servizi di rete" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "Gestione protocolli di alto livello della rete" #: CDocumentation.class:110 msgid "POP3 client" msgstr "Client POP3" #: CDocumentation.class:111 msgid "SMTP client" msgstr "Client SMTP" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "Libreria audio 3D OpenAL" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "Programmazione 3D con OpenGL" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "Componente di utilità OpenGL" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "Gestione degli shader di OpenGL" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Semplice motore di gioco OpenGL basato sul formato MD2" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "Routine della libreria OpenSSL" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "Opzioni del parser GNU" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "Espressione regolare compatibile con Perl" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "Renderer PDF basato sulle librerie Poppler" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "Kit degli strumenti QT4" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "Estensione del kit degli strumenti QT4" #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "Componente WebKit QT4" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL con kit degli strumenti QT4" #: CDocumentation.class:125 msgid "QT5 toolkit" msgstr "Kit degli strumenti QT5" #: CDocumentation.class:126 msgid "QT5 WebKit component" msgstr "Componente WebKit QT5" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL con kit degli strumenti QT5" #: CDocumentation.class:128 msgid "QT5 toolkit extension" msgstr "Estensione del kit degli strumenti QT5" # gb-ignore #: CDocumentation.class:129 msgid "Report designer" msgstr "" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "Libreria di gestione dello scanner basata su SANE" #: CDocumentation.class:132 msgid "SDL library" msgstr "Libreria SDL" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "Gestione suono SDL e CD-ROM" #: CDocumentation.class:134 msgid "SDL2 component" msgstr "Componente SDL2" #: CDocumentation.class:135 msgid "SDL2 audio component" msgstr "Componente audio SDL2" #: CDocumentation.class:136 msgid "Application settings management" msgstr "Gestione impostazioni dell'applicazione" #: CDocumentation.class:137 msgid "Signals management" msgstr "Gestione dei segnali" #: CDocumentation.class:138 msgid "Terminal management" msgstr "Gestione del terminale" #: CDocumentation.class:139 msgid "Graphical terminal applications development" msgstr "Sviluppo di applicazioni grafiche per terminale" #: CDocumentation.class:140 msgid "Unit tests component" msgstr "Componente dei test di unità" #: CDocumentation.class:141 msgid "Utility component" msgstr "Componente di utilità" #: CDocumentation.class:142 msgid "Web applications utility component" msgstr "Componente di utilità per applicazioni web" #: CDocumentation.class:143 msgid "Video capture" msgstr "Cattura video" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Compatibilità con Visual Basic" #: CDocumentation.class:145 msgid "XML tools" msgstr "Strumenti XML" #: CDocumentation.class:146 msgid "HTML generator" msgstr "Generatore HTML" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "Protocollo XML-RPC" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "Strumenti XML basati su libxslt e libxml" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "Strumenti per applicazioni web" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "Parser e generatore di feed Web" #: CDocumentation.class:151 msgid "Web application development" msgstr "Sviluppo di applicazioni Web" #: CDocumentation.class:152 #, fuzzy msgid "Web application development using processes as session" msgstr "Sviluppo di applicazioni Web" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "Gestione grafica della form" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "Gestione del ciclo degli eventi" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "Display OpenGL" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "Numeri complessi" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "Gestore XML" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "Inserisci il colore" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "Inserisci la data odierna" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "&1: &2" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "Posizione" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "ATTENZIONE! Libreria non trovata." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Fornisce" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Form" #: CModule.class:29 msgid "Forms" msgstr "Forms" #: CModule.class:29 msgid "Gambas forms" msgstr "I Form di Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Pagine web Gambas" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "Pagina web" #: CModule.class:30 msgid "WebPages" msgstr "Pagine web" #: CModule.class:31 msgid "Gambas reports" msgstr "Report di Gambas" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "Report" #: CModule.class:31 msgid "Reports" msgstr "Report" #: CModule.class:32 msgid "Gambas web forms" msgstr "Form web Gambas" #: CModule.class:32 FMain.form:967 msgid "WebForm" msgstr "WebForm" #: CModule.class:32 msgid "WebForms" msgstr "WebForm" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Form terminale Gambas" #: CModule.class:33 FMain.form:974 msgid "TermForm" msgstr "Finestra terminale" #: CModule.class:33 msgid "TermForms" msgstr "Finestre terminale" #: CProfile.class:114 msgid "Evaluator" msgstr "Valutatore" #: CProfile.class:116 msgid "Event loop" msgstr "Loop degli eventi" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Gli esempi sono memorizzati sul server della farm di Gambas. Fai clic su &1 per accedere al server della farm e scaricarli..." #: CProjectList.class:111 msgid "here" msgstr "qui" #: CProjectList.class:235 msgid "IDE extensions" msgstr "Estensioni IDE" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "Annulla" #: CProjectList.class:554 msgid "Do you really want to uninstall this software?" msgstr "Vuoi veramente disinstallare questo software?" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "Disinstalla" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "Impossibile disinstallare il software" #: CProjectList.class:561 msgid "The software has been successfully uninstalled." msgstr "Il software è stato disinstallato con successo." #: CProjectTree.class:97 msgid "Files" msgstr "File" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "Progetto" #: CProjectTree.class:360 msgid "Sources" msgstr "Sorgenti" #: CProjectTree.class:362 msgid "Connections" msgstr "Connessioni" #: CProjectTree.class:363 msgid "Public" msgstr "Pubblico" #: CProjectTree.class:364 msgid "Data" msgstr "Dati" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Oggi" #: CRecentProject.class:70 msgid "Yesterday" msgstr "ieri" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Due giorni fa" #: CRecentProject.class:74 msgid "This week" msgstr "Questa settimana" #: CRecentProject.class:76 msgid "This month" msgstr "Questo mese" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Download cancellato" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "Il checksum del pacchetto scaricato non è valido." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Impossibile decomprimere l'archivio del sorgente." #: CSoftware.class:361 msgid "Abort" msgstr "Abortito" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "Ignora" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Sono richiesti i seguenti componenti:" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "Impossibile compilare il progetto." #: CSoftware.class:395 msgid "Unable to make executable." msgstr "Impossibile creare eseguibile." #: CSoftware.class:464 msgid "Unable to install source directory" msgstr "Impossibile installare la directory del sorgente" #: CSoftware.class:663 msgid "yesterday" msgstr "ieri" #: CSoftware.class:665 msgid "&1 days ago" msgstr "&1 giorni fa" #: CSoftware.class:671 msgid "last week" msgstr "ultima settimana" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "&1 settimane fa" #: CSoftware.class:679 msgid "last month" msgstr "ultimo mese" #: CSoftware.class:681 msgid "&1 months ago" msgstr "&1 mesi fa" #: CSoftware.class:687 msgid "last year" msgstr "ultimo anno" #: CSoftware.class:689 msgid "on &1" msgstr "il &1" #: CVersionControlGit.class:291 msgid "Unable to push the project." msgstr "Impossibile aggiungere il progetto." #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "Percorso root locale" #: CVersionControlGit.class:308 msgid "Last commit" msgstr "Ultimo commit" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "Ultimo autore del commit" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "Ultima data del commit" #: CVersionControlGit.class:317 msgid "Current branch" msgstr "Branch corrente" #: CVersionControlGit.class:318 msgid "Origin" msgstr "Origine" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "Il branch attuale è aggiornato." #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "Un file per il commit nel ramo corrente." #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "&1 file per il commit nel ramo corrente." #: CVersionControlGit.class:336 msgid "None in the current project." msgstr "Nessuno nel progetto corrente." #: CVersionControlGit.class:338 msgid "One in the current project." msgstr "Uno nel progetto attuale." #: CVersionControlGit.class:340 msgid "&1 in the current project." msgstr "&1 nel progetto corrente." #: CVersionControlGit.class:344 msgid "Status" msgstr "Stato" #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 msgid "Remote repository URL" msgstr "URL del repository remoto" #: CVersionControlGit.class:398 msgid "A new Git repository will be created for this project." msgstr "Un nuovo repository Git verrà creato per questo progetto." #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:436 msgid "Solve conflict." msgstr "Conflitto risolto." #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Data" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "Revisione" #: CVersionControlSubversion.class:319 msgid "Remote revision" msgstr "Revisione remota" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "Autore dell'ultimo commit in remoto" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "Data dell'ultimo commit in remoto" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Il font Gambas è pubblicato sotto la licenza SIL Open Font." #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "Questo programma è pubblicato sotto la GNU General Public License." #: Design.module:227 Project.module:2231 msgid "first" msgstr "primo" #: Design.module:229 Project.module:2233 msgid "second" msgstr "secondo" #: Design.module:231 Project.module:2235 msgid "third" msgstr "terzo" #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "nel &1:&2." #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "Il programma è stato interrotto da CTRL+C." #: Design.module:445 msgid "The program has been terminated." msgstr "Il programma è stato chiuso." #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Il programma ha restituito \n" "il valore : &1" #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "Questo progetto non esiste." #: Design.module:1039 msgid "Output terminal" msgstr "Terminale di uscita" #: Design.module:1067 msgid "No terminal emulator found." msgstr "Nessun emulatore di terminale trovato." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licenza" #: FAbout.class:241 msgid "Financial support" msgstr "Supporto finanziario" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "Informazioni su Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "Questo programma è SOFTWARE LIBERO; è possibile ridistribuirlo e/o modificarlo secondo i termini della licenza pubblica generica GNU pubblicata dalla Free Software Foundation; versione 2 o (a tua discrezione) qualsiasi versione successiva.

Questo programma è distribuito nella speranza che sarà utile ma senza alcuna garanzia; senza nemmeno la garanzia implicita di commerciabilità o idoneità per uno scopo particolare. Per maggiori dettagli, consulta la GNU General Public License.\n" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "Modifica argomenti" # gb-ignore #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "Esegui" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Chiudi" #: FColorChooser.form:15 msgid "Select a color" msgstr "Seleziona un colore" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:35 msgid "Free" msgstr "Libero" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "Non finito ma stabile" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "Sperimentale" #: FComponentChooser.class:355 msgid "Stable" msgstr "Stabile" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "Deprecato" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "Questo componente è richiesto dalla seguente libreria:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "Questo componente è richiesto dalle seguenti librerie:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "Questo componente è richiesto da:

&1" #: FComponentChooser.class:589 msgid "Keep" msgstr "Mantieni" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Rimuovi tutte" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Questi componenti sono incompatibili:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "Il componente &1 richiede uno dei seguenti componenti:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "Il componente &1 richiede il componente &2." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Seleziona un componente" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Mostra i componenti deprecati" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "Ricarica" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Ingrandisci" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Rimpicciolisci" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "Nessun zoom" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Modifica" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Questo file è in conflitto. È necessario risolvere il conflitto per poter utilizzare nuovamente il file." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Impossibile caricare il file:" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Testo" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Immagine" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Il file è stato modificato.\n" "Vuoi veramente chiudere la finestra di dialogo?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Alcuni conflitti non sono ancora stati risolti." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Impossibile risolvere il conflitto." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Il file è stato modificato.\n" "Vuoi veramente aprire un altro file?" #: FConflict.class:267 msgid "Conflict files" msgstr "File in conflitto" #: FConflict.form:31 msgid "Version conflict" msgstr "Conflitto di versione" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Taglia" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Copia" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Incolla" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Annulla" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Ripristina" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Indenta" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Togli Indentazione" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Apri" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Salva" #: FConflict.form:160 msgid "Solve" msgstr "Risolto" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(Dichiarazioni)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "Ci sono ancora dei conflitti in questo file." #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "Avanzato" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "Maiuscolo" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "Minuscolo" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Commento" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Togli commento" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "Incolla speciale" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Seleziona Tutto" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Vai alla linea" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "Segnalibri" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "Trova successivo" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "Trova precedente" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Visualizza" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 msgid "Automatic word wrap" msgstr "Accapo automatico" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "Indenta con tab" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "Nessuna divisione" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "Dividi orizzontalmente" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "Dividi verticalmente" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Fine riga" #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "Unix" #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "Finestre" #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "MAC" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "Apri codice" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "Incolla come stringa" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "Incolla come stringa multilinea" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "Incolla come commento" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "Editor di testo" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Codice" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Conflitto risolto" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Conflitto precedente" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Conflitto successivo" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Mantieni i miei cambiamenti" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Prendi le loro modifiche" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Mantieni tutti i miei cambiamenti" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Prendi tutte le loro modifiche" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Nome" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tipo" #: FConnectionEditor.class:61 msgid "Length" msgstr "Lunghezza" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valore predefinito" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Collation" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Indice" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Unico" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Campo" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "Richieste SQL" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Impossibile connettersi al database." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Non salvare" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "La tabella '&1' è stata modificata. Vuoi salvarla?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Nessun record" #: FConnectionEditor.class:500 msgid "One record" msgstr "Un record" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 record" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Impossibile caricare la tabella '&1'." #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "Impossibile eseguire la query." # gb-ignore #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "illimitata" #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "Blob" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "Booleano" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "Mobile" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "Intero" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "Lungo" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "Seriale" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "Stringa" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "Questo nome è già in uso." #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "Si prega di inserire un numero." #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "La lunghezza deve essere maggiore di 1 e inferiore a 255." #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "Tipo non corrispondente." #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "Questo nome esiste già." #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "Questo campo è utilizzato in un indice." #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "La tabella '&1' non ha una chiave primaria." #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "Impossibile scrivere la tabella '&1'." #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "Vuoi veramente eliminare la tabella '&1'?" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "Impossibile eliminare la tabella '&1'." #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "Vuoi veramente rimuovere tutte le righe selezionate?" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "Vuoi veramente rimuovere questa query?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editor di connessione" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Mostra le tabelle di sistema" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nuova tabella" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Elimina la tabella" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Rimuovi" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Rinomina la tabella" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Rinomina" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Copia tabella" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Incolla tabella" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importa file di testo" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Importa" #: FConnectionEditor.form:213 msgid "Fields" msgstr "Campi" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Aggiungi" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Giù" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Su" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Copia l'elenco dei campi" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Indici" #: FConnectionEditor.form:293 msgid "New index" msgstr "Nuovo indice" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Esegui la query" #: FConnectionEditor.form:359 msgid "New query" msgstr "Nuova query" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Nuovo" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "Rimuovi una query" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Cancella" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "Modifica" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Esporta in un file CSV" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Esporta" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Elimina" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Seleziona tutto" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Deseleziona tutti" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Conversione progetto in Gambas 3" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "Il comando &1 ha fallito." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Impossibile inviare il report del bug." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "Il programma si è fermato inaspettatamente!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Si prega di descrivere come riprodurre qui il crash." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Crash dell'interprete di Gambas" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "Invia una segnalazione di bug per e-mail" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "Non unire il progetto alla mail" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Nessun Genitore)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Impossibile aggiungere file." #: FCreateFile.form:37 msgid "New file" msgstr "Nuovo file" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Opzioni" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Larghezza" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Altezza" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Gestione della finestra di dialogo" #: FCreateFile.form:155 msgid "Parent class" msgstr "Classe genitrice" #: FCreateFile.form:168 msgid "Exported" msgstr "Esportato" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Istanza automatica" #: FCreateFile.form:180 msgid "Not creatable" msgstr "Non creabile" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Estensione automatica" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Il controllo del progetto è fallito." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Impossibile creare il progetto!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "Si prega di scegliere un template" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Per favore, inserisci l'indirizzo dell'archivio." #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Nuovo progetto" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "Tipo di progetto" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Directory genitore" #: FCreateProject.form:90 msgid "Project details" msgstr "Dettagli del progetto" #: FCreateProject.form:99 msgid "Project name" msgstr "Nome del progetto" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Il nome del progetto è il nome della directory del progetto." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "La directory finale del progetto è:" #: FCreateProject.form:134 msgid "Project title" msgstr "Titolo del progetto" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "Il titolo del progetto è il vero nome dell'applicazione." #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Il progetto è traducibile" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "Apri in un'altra finestra" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Archivio" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Il repository del progetto viene inviato direttamente al comando 'svn checkout'." #: FDebugButton.class:104 #, fuzzy msgid "Test has failed." msgstr "'makepkg' ha fallito." #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "Debug" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Console" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Punti di interruzione" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "Avvertimenti" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 #, fuzzy msgid "Unit tests" msgstr "Componente dei test di unità" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "Controllo della versione" #: FDebugButton.form:84 FDebugInfo.form:398 msgid "Search result" msgstr "Risultato della ricerca" #: FDebugExpr.class:4 msgid "not available" msgstr "non disponibile" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Valore" #: FDebugExpr.class:511 msgid "Key" msgstr "Chiave" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Simbolo" #: FDebugExpr.form:33 msgid "Watch" msgstr "Guarda" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Stampa su console" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Mostra tutti i simboli" #: FDebugExpr.form:88 msgid "No element" msgstr "Nessun elemento" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Linea" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Funzione" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "File" #: FDebugInfo.class:49 msgid "Col." msgstr "Col." #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "Messaggio" #: FDebugInfo.class:120 msgid "native code" msgstr "codice nativo" #: FDebugInfo.class:187 msgid "Watch expressions" msgstr "Mostra espressioni" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Vuoi eliminare la lista di espressioni ?" #: FDebugInfo.class:1091 msgid "File not loaded" msgstr "File non scaricato" #: FDebugInfo.class:1230 msgid "Current object" msgstr "Oggetto corrente" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "Variabili locali" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Debug" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "Rimuovi l'espressione corrente" #: FDebugInfo.form:130 msgid "Add expression" msgstr "Aggiungi espressione" #: FDebugInfo.form:190 msgid "Remove breakpoint" msgstr "Rimuovi il punto di interruzione" #: FDebugInfo.form:198 msgid "Disable breakpoint" msgstr "Disattiva il punto di interruzione" #: FDebugInfo.form:200 msgid "Disable" msgstr "Disattivato" #: FDebugInfo.form:206 msgid "Enable breakpoint" msgstr "Attiva il punto di interruzione" #: FDebugInfo.form:208 msgid "Enable" msgstr "Attiva" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "Rimuovi tutti i punti di interruzione" #: FDebugInfo.form:264 msgid "Tasks" msgstr "Task" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "Pulisci la console" #: FDebugInfo.form:300 #, fuzzy msgid "Run test" msgstr "Esegui con" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "Inoltra" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Sincronizza" #: FDebugInfo.form:346 FMain.form:525 msgid "Revert all changes" msgstr "Annulla tutte le modifiche" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "Aggiungi tutto al repository" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "Annulla l'attuale ricerca" #: FDebugInfo.form:422 msgid "Show search window" msgstr "Mostra la finestra di ricerca" #: FDebugInfo.form:429 msgid "Search again" msgstr "Cerca ancora" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "La stringa cercata non è stata trovata." #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "(Dichiarazioni)" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "Formatta il codice" #: FEditor.form:201 msgid "Sort procedures" msgstr "Ordina le procedure" #: FEditor.form:230 msgid "Go to" msgstr "Vai a" #: FEditor.form:249 msgid "Find definition" msgstr "Trova la definizione" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Esegui fino alla linea corrente" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Inverti i punti di interruzione" #: FEditor.form:320 msgid "Watch expression" msgstr "Mostra espressione" #: FEditor.form:329 msgid "Open form" msgstr "Apri form" #: FEditor.form:336 FMain.form:1133 msgid "Run this class" msgstr "Esegui questa classe" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "Bloccato" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Stampa" # gb-ignore #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 msgid "Show modifications" msgstr "Mostra le modifiche" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 msgid "Previous modification" msgstr "Modifica precedente" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "Modifica successiva" #: FEditor.form:570 FTextEditor.form:546 msgid "Insert special character" msgstr "Inserisci un carattere speciale" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "Rendi il codice carino" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "Lista delle procedure" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "File bloccato/sbloccato" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "File CSV" #: FExportData.class:113 msgid "Unable to export data." msgstr "Impossibile esportare i dati." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Sovrascrivi" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Questo file esiste già.\n" "\n" "Vuoi sovrascriverlo?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Carattere delimitatore" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Carattere di chiusura" #: FExportData.form:54 msgid "Export field names" msgstr "Esporta i nomi di campo" #: FExportData.form:60 msgid "Export selected records only" msgstr "Esporta solo i record selezionati" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Server farm" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Autenticazione fallita." #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "Login" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Server" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Utente" # gb-ignore #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Ricorda password" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Essere anonimi" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Si prega di inserire un indirizzo e-mail valido." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Conferma password non corrispondente." #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Impossibile registrare l'utente." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" "Sei stato registrato con successo.\n" "\n" "Riceverai presto un'e-mail di conferma." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Registrarsi" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Conferma la password" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "E-mail" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" "Una mail di conferma verrà inviata all'indirizzo e-mail specificato. Fai clic sul link incluso nella posta per attivare il tuo account.\n" "

\n" "La tua e-mail non verrà archiviata sul server di pubblicazione." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Impossibile aprire la connessione." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Impossibile ottenere i campi della tabella." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Modifica l'elenco dei campi" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Seleziona un campo" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Connessione" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabella" #: FFileInfoVC.class:23 #, fuzzy msgid "'&1' version control" msgstr "Controllo della versione" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "Questo file è bloccato e verrà eliminato al prossimo commit." #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "Questo file non è versionato e deve essere aggiunto al repository." #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "Questo file non è stato modificato dall'ultimo commit." #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "Continua" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "Stai per annullare le tue modifiche!" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Modifiche" #: FFileInfoVC.form:41 FVersionControl.form:55 msgid "History" msgstr "" #: FFileInfoVC.form:59 msgid "Undo changes" msgstr "Ripristina i cambiamenti" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "Gambas &1" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Modulo di Gambas" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Classe Gambas" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "Proprietà '&1'" #: FFontChooser.form:12 msgid "Select a font" msgstr "Seleziona un font" #: FForm.class:136 msgid "Bad form file" msgstr "Form non valido" #: FForm.class:268 msgid "Unknown control: &1" msgstr "Controllo sconosciuto: &1" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "Componente introvabile per il controllo &1" #: FForm.class:1876 msgid "Cannot paste data." msgstr "Impossibile incollare i dati." #: FForm.form:178 msgid "Copy at the same place" msgstr "Copia nello stesso posto" #: FForm.form:198 msgid "Delete container only" msgstr "Elimina il solo contenitore" #: FForm.form:205 msgid "Embed into a container" msgstr "Incorporato in un contenitore" #: FForm.form:211 msgid "Change into" msgstr "Cambia in" #: FForm.form:219 msgid "Select" msgstr "Seleziona" #: FForm.form:232 msgid "Select parent" msgstr "Seleziona il genitore" #: FForm.form:245 msgid "Arrangement" msgstr "Disposizione" #: FForm.form:249 msgid "Bring to foreground" msgstr "Porta in primo piano" #: FForm.form:256 msgid "Send to background" msgstr "Manda allo sfondo" #: FForm.form:266 msgid "Horizontal" msgstr "Orizzontale" #: FForm.form:273 msgid "Rows" msgstr "Righe" #: FForm.form:279 msgid "Vertical" msgstr "Verticale" #: FForm.form:286 msgid "Columns" msgstr "Colonne" #: FForm.form:295 msgid "Center horizontally" msgstr "Centra orizzontalmente" #: FForm.form:301 msgid "Center vertically" msgstr "Centra verticalmente" #: FForm.form:307 msgid "Alignment" msgstr "Allineamento" #: FForm.form:311 msgid "Align to left" msgstr "Allineamento a sinistra" #: FForm.form:317 msgid "Align to right" msgstr "Allineamento a destra" #: FForm.form:323 msgid "Align to top" msgstr "Allineamento in alto" #: FForm.form:329 msgid "Align to bottom" msgstr "Allineamento in fondo" #: FForm.form:338 msgid "Same width" msgstr "Medesima larghezza" #: FForm.form:344 msgid "Same height" msgstr "Medesima altezza" #: FForm.form:353 msgid "Show tab" msgstr "Mostra la scheda" #: FForm.form:361 msgid "Move tab" msgstr "Sposta tab" #: FForm.form:366 msgid "First" msgstr "Primo" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Precedente" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Successivo" #: FForm.form:387 msgid "Last" msgstr "Ultimo" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Editor Menu" #: FForm.form:407 msgid "Event" msgstr "Evento" #: FForm.form:421 msgid "Run this form" msgstr "Esegui questa form" #: FForm.form:601 msgid "Toggle grid" msgstr "Attiva/disattiva la griglia" #: FForm.form:610 FImageEditor.form:515 msgid "Toggle information tooltip" msgstr "Attiva o disattiva il tooltip delle informazioni" #: FForm.form:729 msgid "Move tab first" msgstr "Sposta tab all'inizio" #: FForm.form:736 msgid "Move tab left" msgstr "Sposta tab a sinistra" #: FForm.form:743 msgid "Move tab right" msgstr "Sposta tab a destra" #: FForm.form:750 msgid "Move tab last" msgstr "Sposta tab alla fine" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Grassetto" #: FForm.form:786 msgid "Italic" msgstr "Corsivo" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Sottolineato" #: FForm.form:802 msgid "Bigger font" msgstr "Font più grande" #: FForm.form:810 msgid "Smaller font" msgstr "Font più piccolo" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "Font predefinito" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Sfondo" #: FForm.form:834 msgid "Foreground" msgstr "Primo piano" #: FForm.form:845 msgid "Lock / unlock form" msgstr "Finestra bloccata/sbloccata" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Gerarchia" #: FFormStack.form:24 msgid "Move top" msgstr "Muovi all'inizio" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Muovi su" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Muovi giù" #: FFormStack.form:42 msgid "Move bottom" msgstr "Muovi alla fine" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "Lingua predefinita" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Navigazione Help" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "Mostra l'albero dell'aiuto" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Indietro" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Avanti" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "Scorciatoie da tastiera IDE" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "Debugger" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "Traduzione" #: FImageEditor.form:159 msgid "Action" msgstr "Action" #: FImageEditor.form:164 msgid "Crop" msgstr "Taglio" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Scambia orizzontalmente" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Scambia verticalmente" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Ruota in senso antiorario" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Ruota in senso orario" #: FImageEditor.form:205 msgid "Resize" msgstr "Ridimensiona" #: FImageEditor.form:212 msgid "Rotate" msgstr "Ruota" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Nascondi selezione" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selezione" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Inverti la selezione" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Duplica la selezione" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "Selezione offset" #: FImageEditor.form:266 msgid "Union" msgstr "Unione" #: FImageEditor.form:272 msgid "Difference" msgstr "Differenze" #: FImageEditor.form:278 msgid "Intersection" msgstr "Intersezione" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "Esclusivo o" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Griglia della forma" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Zoom normale" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Adatta lo zoom" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "Salva come JPEG" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "Salva come PNG" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "Salva come BMP" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "Salva come TIFF" #: FImageEditor.form:428 msgid "Image editor" msgstr "Editor di immagine" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "Griglia di disegno" #: FImageEditor.form:558 msgid "Move" msgstr "Sposta" #: FImageEditor.form:569 msgid "Draw" msgstr "Disegna" #: FImageEditor.form:579 msgid "Erase" msgstr "Cancella" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Rettangolo" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Ellisse" #: FImageEditor.form:629 msgid "Magic wand" msgstr "Bacchetta magica" #: FImageEditor.form:646 msgid "Edit selection" msgstr "Modifica la selezione" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "Ridimensiona e allunga l'immagine" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "Ruota l'immagine" # gb-ignore #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "Duplica" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Appunti di sistema" #: FImageProperty.class:1267 msgid "Arrow" msgstr "Freccia" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "Freccia #2" #: FImageProperty.class:1270 msgid "Triangle" msgstr "Triangolo" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "Triangolo quadrato" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "Pentagono" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "Esagono" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "Colore" #: FImageProperty.form:172 msgid "Gradient" msgstr "Gradiente" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Gradiente lineare" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Gradiente radiale" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "Aggiungi un colore sfumato" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "Rimuovi un colore sfumato" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "Seleziona il colore sfumato" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "Inverti il gradiente" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Raggio" #: FImageProperty.form:326 msgid "Clipboard" msgstr "Appunti" #: FImageProperty.form:338 msgid "Shapes" msgstr "Forme" #: FImageProperty.form:363 msgid "Stroke" msgstr "Traccia" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "Riempi" #: FImageProperty.form:391 msgid "Colorize" msgstr "Colora" #: FImageProperty.form:399 msgid "Desaturate" msgstr "Desatura" #: FImageProperty.form:407 msgid "Make transparent" msgstr "Rendi trasparente" #: FImageProperty.form:417 msgid "Line cap" msgstr "Estremità della linea" #: FImageProperty.form:422 msgid "Line join" msgstr "Unione della linea" #: FImageProperty.form:427 msgid "Fill rule" msgstr "Regola di riempimento" #: FImageProperty.form:445 msgid "Opacity" msgstr "Opacità" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Dimensione" #: FImageProperty.form:481 msgid "Tolerance" msgstr "Tolleranza" #: FImageProperty.form:500 msgid "Roundness" msgstr "Arrotonda" #: FImageProperty.form:526 msgid "Effects" msgstr "Effetti" #: FImageProperty.form:535 msgid "Brightness" msgstr "Luminosità" #: FImageProperty.form:554 msgid "Contrast" msgstr "Contrasto" #: FImageProperty.form:573 msgid "Gamma" msgstr "Gamma" #: FImageProperty.form:592 msgid "Lightness" msgstr "Leggerezza" #: FImageProperty.form:611 msgid "Hue" msgstr "Colore" #: FImageProperty.form:630 msgid "Saturation" msgstr "Saturazione" #: FImageProperty.form:649 msgid "Blur" msgstr "Sfocatura" #: FImageProperty.form:666 msgid "Transparency" msgstr "Trasparenza" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Anteprima" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "Applica" #: FImageProperty.form:735 msgid "Centered" msgstr "Centrato" #: FImageProperty.form:745 msgid "Right align" msgstr "Allineamento a destra" #: FImageProperty.form:754 msgid "Left align" msgstr "Allineamento a sinistra" #: FImageProperty.form:767 msgid "Top align" msgstr "Allineamento in alto" #: FImageProperty.form:776 msgid "Middle align" msgstr "Allineamento centrale" #: FImageProperty.form:786 msgid "Baseline align" msgstr "Allineamento sulla linea di base" #: FImageProperty.form:795 msgid "Bottom align" msgstr "Allineamento in baso" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "Risoluzione della griglia" #: FImageProperty.form:849 msgid "Grid snap" msgstr "Snap della griglia" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "Disegna le diagonali" #: FImageQuality.form:10 msgid "Image quality" msgstr "Qualità dell'immagine" #: FImageResize.form:25 msgid "Resize image" msgstr "Ridimensiona l'immagine" #: FImageResize.form:65 msgid "Resize and center" msgstr "Ridimensiona e centra" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "Ridimensiona e centra orizzontalmente" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "Ridimensiona e centra verticalmente" #: FImageResize.form:86 msgid "Stretch image" msgstr "Immagine allungata" #: FImageResize.form:111 msgid "Add a border" msgstr "Aggiungi un bordo" #: FImageResize.form:116 msgid "Ratio" msgstr "Rapporto" #: FImageRotate.form:21 msgid "°" msgstr "°" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Classi di Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Moduli di Gambas" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Fogli di stile" #: FImportFile.class:33 msgid "HTML files" msgstr "File HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "File javascript" #: FImportFile.class:33 msgid "Picture files" msgstr "File Immagini" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Impossibile importare il file." #: FImportFile.form:9 msgid "Import files" msgstr "Importa file" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Crea link simbolici" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Tutti i Files" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Chiave automatica)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Campo_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Valori non sufficienti" #: FImportTable.class:393 msgid "Too many values" msgstr "Troppi valori" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Annullato dall'utente" #: FImportTable.class:427 msgid "No record imported." msgstr "Nessun record importato." #: FImportTable.class:429 msgid "One record imported." msgstr "Un record importato." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 record importati." #: FImportTable.form:35 msgid "Import file" msgstr "Importa file" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Seleziona il file CSV da importare" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Sorgente" #: FImportTable.form:78 msgid "Charset" msgstr "Codifica" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Togli spazi bianchi inutili" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignora le prime righe" #: FImportTable.form:139 msgid "Line(s)" msgstr "Linea(e)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destinazione" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "La prima riga contiene i nomi dei campi" #: FImportTable.form:176 msgid "Key field" msgstr "Campo chiave" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "Si prega di inserire il nome del layout." #: FLayout.class:30 FOption.class:1694 msgid "Override" msgstr "Sovrascrivi" #: FLayout.class:30 msgid "This layout already exists." msgstr "Questo layout esiste già." #: FLayout.form:14 msgid "Save layout" msgstr "Salva il layout" #: FLayout.form:22 msgid "Layout name" msgstr "Nome del layout" #: FList.class:103 msgid "Item &1" msgstr "Item &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Vuoi veramente cancellare la lista?" #: FList.form:25 msgid "Edit list property" msgstr "Modifica lista proprietà" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "Inserisci" #: FList.form:87 msgid "Invert" msgstr "Inverti" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Vuoi veramente eliminare questo link?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Vuoi veramente eliminare questa cartella?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Vuoi veramente eliminare questo file ?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Impossibile eliminare il file o la cartella" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "Il file o la directory non esiste più." #: FMain.class:759 msgid "Sort history" msgstr "Ordina la cronologia" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "Ordina per data" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "Ordina per nome" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "Ordina per path" #: FMain.class:775 msgid "&Clear history" msgstr "&Cancella cronologia" #: FMain.class:959 msgid "New folder" msgstr "Nuova cartella" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "Gli strumenti di traduzione GNU non sono installati sul tuo sistema.\n" "\n" "Si prega di installarli per poter eseguire la traduzione." #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "Impossibile rilasciare il file nel progetto." #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "Tutti i file di backup o generati saranno rimossi dalla cartella del progetto." #: FMain.class:1872 msgid "Clean" msgstr "Pulisci" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "Vuoi veramente aggiungere ogni file al repository?" #: FMain.class:2329 msgid "Choose a profile" msgstr "Scegli un profilo" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "Profilo per il progetto &1" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "Seleziona un file" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "Questo file si trova all'interno del progetto." #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Il file è stato modificato.\n" "\n" "Tutte le tue modifiche andranno perse." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Apri progetto" #: FMain.form:306 msgid "Open recent" msgstr "Apri recente" #: FMain.form:314 msgid "Open example" msgstr "Apri esempio" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "Apri file" #: FMain.form:332 msgid "Save project" msgstr "Salva progetto" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Salva progetto come" #: FMain.form:351 msgid "Reload project" msgstr "Ricarica il progetto" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Uscita" #: FMain.form:395 msgid "Save as" msgstr "Salva come" #: FMain.form:435 msgid "Compile" msgstr "Compila" #: FMain.form:442 msgid "Compile All" msgstr "Compila Tutto" #: FMain.form:452 msgid "Translate" msgstr "Traduci" #: FMain.form:461 msgid "Make" msgstr "Crea" #: FMain.form:465 msgid "Executable" msgstr "Eseguibile" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "Pacchetto sorgenti" #: FMain.form:479 msgid "Installation package" msgstr "Pacchetto d'installazione" # gb-ignore #: FMain.form:486 msgid "Patch" msgstr "" #: FMain.form:489 msgid "Create" msgstr "Crea" #: FMain.form:518 msgid "Undo synchronization" msgstr "Ripristina la sincronizzazione" #: FMain.form:537 msgid "Branch" msgstr "Ramo" #: FMain.form:542 msgid "Put under version control" msgstr "Metti sotto controllo di versione" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "Pubblica" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "Pulisci" #: FMain.form:563 msgid "Refresh" msgstr "Ricarica" #: FMain.form:592 msgid "Run with" msgstr "Esegui con" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "Pausa" #: FMain.form:620 msgid "Stop" msgstr "Ferma" #: FMain.form:627 msgid "Step" msgstr "Passo" #: FMain.form:634 msgid "Forward" msgstr "Avanti" #: FMain.form:641 msgid "Finish" msgstr "Finito" #: FMain.form:650 msgid "Use terminal emulator" msgstr "Usa un emulatore di terminale" #: FMain.form:656 msgid "Redirect standard error output" msgstr "Reindirizza l'output di errore standard" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "Usa il server HTTP incorporato" #: FMain.form:668 msgid "Activate profiling" msgstr "Attiva il profiling" #: FMain.form:677 #, fuzzy msgid "Invert language orientation" msgstr "Inverti il gradiente" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 #, fuzzy msgid "Show database requests" msgstr "Ignora il set di caratteri del database" #: FMain.form:705 msgid "GUI component" msgstr "Componente GUI" #: FMain.form:709 msgid "Current desktop" msgstr "Desktop corrente" #: FMain.form:746 msgid "Open profile" msgstr "Apri profilo" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "Cancella tutti i punti di interruzione" #: FMain.form:757 msgid "Close all debug windows" msgstr "Chiudi tutte le finestre di debug" #: FMain.form:795 msgid "Status bar" msgstr "Barra di stato" #: FMain.form:802 msgid "Hide menubar" msgstr "Nascondi la barra del menu" #: FMain.form:826 msgid "Close all windows" msgstr "Chiudi tutte le finestre" #: FMain.form:833 msgid "Tools" msgstr "Strumenti" #: FMain.form:837 msgid "Find" msgstr "Trova" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Rimpiazza" #: FMain.form:853 msgid "Browse project" msgstr "Esplora il progetto" #: FMain.form:860 msgid "Open a terminal" msgstr "Apri un terminale" #: FMain.form:867 msgid "Send project by mail" msgstr "Invia il progetto per e-mail" #: FMain.form:873 msgid "Update all forms" msgstr "Aggiorna tutte le form" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "Software farm" #: FMain.form:891 msgid "Shortcuts" msgstr "Scorciatoie da tastiera" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Preferenze" #: FMain.form:911 msgid "Directory" msgstr "Cartella" #: FMain.form:916 msgid "Project link" msgstr "Link al progetto" #: FMain.form:925 msgid "Module" msgstr "Modulo" #: FMain.form:932 msgid "Test module" msgstr "" #: FMain.form:991 msgid "HTML file" msgstr "File HTML" #: FMain.form:998 msgid "Style sheet" msgstr "Foglio di stile" #: FMain.form:1005 msgid "Javascript file" msgstr "File javascript" #: FMain.form:1013 msgid "Other" msgstr "Altro" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Recente" #: FMain.form:1047 msgid "Open in file manager" msgstr "Apri nel file manager" #: FMain.form:1052 msgid "Open in project" msgstr "Apri nel progetto" #: FMain.form:1056 msgid "Open with" msgstr "Apri con" #: FMain.form:1064 msgid "Compress all" msgstr "Comprimi tutto" #: FMain.form:1070 msgid "Uncompress all" msgstr "Decomprimi tutto" #: FMain.form:1117 msgid "Copy file path" msgstr "Copia il percorso del file" #: FMain.form:1126 msgid "Startup class" msgstr "Classe di avvio" #: FMain.form:1141 msgid "Add to repository" msgstr "Aggiungi al repository" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtro" #: FMain.form:1149 msgid "Show exported classes" msgstr "Mostra le classi esportate" #: FMain.form:1154 msgid "Show added files" msgstr "Mostra i file aggiunti" #: FMain.form:1159 msgid "Show modified files" msgstr "Mostra i file modificati" #: FMain.form:1164 msgid "Show files in conflict" msgstr "Mostra i file in conflitto" #: FMain.form:1172 msgid "Show all" msgstr "Mostra tutto" #: FMain.form:1184 msgid "Do not translate" msgstr "Non tradurre" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "Nuova connessione" #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "?" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Suggerimenti del giorno" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "Scorciatoie da tastiera" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "Informazioni di sistema" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Proprietà Progetto" #: FMain.form:1386 msgid "Refresh project" msgstr "Ricarica il progetto" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Crea eseguibile" #: FMain.form:1428 msgid "Make source archive" msgstr "Crea il pacchetto sorgenti" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "Crea un pacchetto d'installazione" #: FMain.form:1457 msgid "Properties sheet" msgstr "Foglio delle proprietà" # gb-ignore #: FMain.form:1466 msgid "Toolbox" msgstr "" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "Cerca" #: FMain.form:1508 msgid "Compile all" msgstr "Compila tutto" #: FMain.form:1557 msgid "Finish current function" msgstr "Termina funzione corrente" #: FMain.form:1573 msgid "Show menubar" msgstr "Mostra la barra dei menu" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "Pubblica un software" #: FMain.form:1663 msgid "&File" msgstr "&File" #: FMain.form:1687 msgid "&Project" msgstr "&Progetto" #: FMain.form:1699 msgid "&Debug" msgstr "&Debug" #: FMain.form:1711 msgid "&View" msgstr "&Vista" #: FMain.form:1723 msgid "&Tools" msgstr "&Strumenti" # gb-ignore #: FMain.form:1735 msgid "&?" msgstr "" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "Dispone i file di classe in base all'ereditarietà" #: FMain.form:1866 msgid "Show properties sheet" msgstr "Mostra le proprietà" #: FMain.form:1874 msgid "Show project tree" msgstr "Mostra l'albero del progetto" #: FMain.form:1944 msgid "Show property help" msgstr "Mostra l'aiuto della proprietà" #: FMain.form:1952 msgid "Show controls" msgstr "Mostra i controlli" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Applicazioni Gambas" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "Esegui questo comando dopo" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) verrà sostituito dal percorso dell'eseguibile" #: FMakeExecutable.form:57 msgid "Increment version" msgstr "Incrementa la versione" #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Mantieni le informazioni di debug nell'eseguibile" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "Crea un collegamento sul desktop" #: FMakeInstall.class:137 msgid "Package" msgstr "Pacchetto" #: FMakeInstall.class:138 msgid "Min. version" msgstr "Min. version" #: FMakeInstall.class:139 msgid "Max. version" msgstr "Max. version" #: FMakeInstall.class:145 msgid "File or directory" msgstr "File o directory" #: FMakeInstall.class:279 msgid "Creating packages..." msgstr "Creazione pacchetti..." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "I pcchetti sono stati creati in modo corretto." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Per favore inserisci il tuo nome." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Per favore inserisci il tuo indirizzo e-mail." #: FMakeInstall.class:345 msgid "Please enter the vendor name." msgstr "Si prega di inserire il nome del vendor." #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "Non c'è una voce nel CHANGELOG per questa versione." #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Per favore inserisci la prima voce del log delle modifiche (CHANGELOG)." #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "Per favore, scegli almeno una distribuzione." #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "Per favore, scegli il gruppo del pacchetto per ciascuna distribuzione." #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "Per favore, scegli un gruppo per il pacchetto." #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "Per favore, scegli la voce nel menu per ciascuna distribuzione." #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "Per favore, scegli una voce nel menu." #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "Impossibile trovare il file extra: &1" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "Si prega di scegliere una directory di destinazione per ogni file extra." #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Il sistema di packaging Debian non può gestire gli spazi nei nomi." #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Il sistema di packaging Debian non può gestire gli spazi nelle directory." #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "Il pacchetto non può essere memorizzato all'interno della directory del progetto." #: FMakeInstall.class:542 msgid "Initial release" msgstr "Versione iniziale" #: FMakeInstall.class:802 msgid "Menus" msgstr "Menu" #: FMakeInstall.class:870 msgid "Groups" msgstr "Gruppi" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "Caratteri errati" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "Vuoi veramente rimuovere tutte le dipendenze extra?" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "Vuoi veramente rimuovere tutti i file extra?" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "Seleziona la directory di destinazione" #: FMakeInstall.form:151 msgid "Create package" msgstr "Crea il pacchetto" #: FMakeInstall.form:154 msgid "Package information" msgstr "Informazione sul pacchetto" #: FMakeInstall.form:160 msgid "Package name" msgstr "Nome del pacchetto" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "Aggiungi il prefisso o il nome del fornitore al nome del pacchetto" #: FMakeInstall.form:190 #, fuzzy msgid "Add major version number to package names" msgstr "Aggiungi il prefisso o il nome del fornitore al nome del pacchetto" #: FMakeInstall.form:205 msgid "Package version" msgstr "Versione pacchetto" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "Nome venditore" #: FMakeInstall.form:241 FOption.form:377 msgid "Vendor prefix" msgstr "Prefisso del venditore" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Informazioni sul maintainer" #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "URL" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Changelog" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Distribuzione target" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Auto estraibile" #: FMakeInstall.form:612 msgid "Package group" msgstr "Gruppo pacchetto" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Voce di menu" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categorie" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "File di configurazione del desktop" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "Tipo MIME" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" "Inserisci qui i tipi mime gestiti dalla tua applicazione.\n" "Inserisci un tipo mime per riga.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Configurazione aggiuntiva" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Quanto segue verrà aggiunto alla fine del file di configurazione del desktop." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Dipendenze extra" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Versione minima di Gambas" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Stesse dipendenze per tutti i target" #: FMakeInstall.form:786 msgid "Extra files" msgstr "File extra" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Stessi file per tutti i targhet" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "I file extra devono trovarsi nella cartella Progetto del progetto corrente, per esempio la directory .hidden del progetto sul disco." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Test di autoconf extra" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Aggiungi i test extra per il processo di configurazione.\n" "

Lascia questo vuoto se non ti serve, o se non sai nulla degli script di autoconfigurazione." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Directory di destinazione" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Crea le directory per ogni distribuzione" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Uscita dei comandi" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Crea il pacchetto ora" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Si prega di selezionare l'archivio di origine." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Si prega di selezionare il progetto di origine." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Si prega di inserire il nome della patch." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "La patch è stata generata con successo." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Impossibile generare la patch." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Genera patch" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Seleziona l'origine patch" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Origine della patch" #: FMakePatch.form:59 msgid "Project directory" msgstr "Directory del progetto" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Nome patch automatico" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Modifica la patch" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Questa procedura guidata genererà una patch tra un progetto di origine e il progetto corrente." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Seleziona l'archivio sorgente" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "*.gz;*.bz2;*.xz" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "Pacchetti sorgenti" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Seleziona la directory del progetto" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Scegli il nome del file patch" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "*.patch;*.diff" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "File patch/Diff" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "I menu sono stati modificati!" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Per favore, inserisci un nome per il menu." #: FMenu.class:332 msgid "Bad menu name !" msgstr "Nome menu non valido!" #: FMenu.class:338 msgid "Bad group name !" msgstr "Nome gruppo non valido!" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Questo menu è troppo profondo !" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "modificato" #: FMenu.form:84 msgid "Insert menu" msgstr "Inserisci il menu" #: FMenu.form:92 msgid "Insert separator" msgstr "Inserisci un separatore" #: FMenu.form:100 msgid "Insert menu before" msgstr "Inserisci il menu prima" #: FMenu.form:102 msgid "Insert before" msgstr "Inserisci prima" #: FMenu.form:108 msgid "Delete menu" msgstr "Elimina il menu" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Clicca su Inserisci per aggiungere un nuovo menu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Si prega di inserire il nome del database." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Si prega di inserire la password." #: FNewConnection.class:147 msgid "Connection properties" msgstr "Proprietà della connessione" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Seleziona una directory" #: FNewConnection.class:229 msgid "Create database" msgstr "Crea il database" #: FNewConnection.class:241 msgid "Delete database" msgstr "Elimina il database" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Impossibile creare il database." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Vuoi veramente eliminare il database '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Impossibile eliminare il database." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Host" #: FNewConnection.form:124 msgid "Path" msgstr "Percorso" #: FNewConnection.form:154 msgid "No password" msgstr "Nessuna password" # gb-ignore #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "" #: FNewConnection.form:241 msgid "From" msgstr "Da" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignora il set di caratteri del database" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Mostra i metadati" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Memorizza la struttura del database" #: FNewTable.class:33 msgid "Create table" msgstr "Crea tabella" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Si prega di inserire il nome della nuova tabella." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "La tabella '&1' già esiste" #: FNewTranslation.form:10 msgid "New translation" msgstr "Nuova traduzione" #: FOpenProject.form:22 msgid "Select a project" msgstr "Seleziona un progetto" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Esempi" #: FOption.class:4 msgid "Amber" msgstr "Ambra" #: FOption.class:4 msgid "Amethyst" msgstr "Ametista" #: FOption.class:4 msgid "Blues" msgstr "Blues" #: FOption.class:4 msgid "Emerald" msgstr "Smeraldo" #: FOption.class:4 msgid "Gambas" msgstr "Gambas" #: FOption.class:4 msgid "Obsidian" msgstr "Ossidiano" #: FOption.class:4 msgid "Pastel" msgstr "Pastello" #: FOption.class:4 msgid "Quest" msgstr "Ricerca" #: FOption.class:4 msgid "Quick" msgstr "Veloce" #: FOption.class:4 msgid "Ruby" msgstr "Rubino" #: FOption.class:4 msgid "Sapphire" msgstr "Zaffiro" #: FOption.class:4 msgid "Visual" msgstr "Visuale" #: FOption.class:4 msgid "Zen" msgstr "Zen" #: FOption.class:87 msgid "Custom" msgstr "Personale" # gb-ignore #: FOption.class:89 msgid "Desktop" msgstr "" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(Predefinito)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "File del tema di Gambas ad alto contrasto" #: FOption.class:242 msgid "Export a theme file" msgstr "Esporta il file di un tema" #: FOption.class:467 msgid "Select a theme file" msgstr "Seleziona il file di un tema" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "Devi riavviare l'applicazione per vedere le tue modifiche." #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "Vuoi veramente cancellare la cache della documentazione?" #: FOption.class:829 msgid "Unable to clear documentation cache." msgstr "Impossibile cancellare la cache della documentazione." #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "Vuoi veramente eliminare questo frammento di codice?" #: FOption.class:1190 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "Installa" #: FOption.class:1275 msgid "Network is not available." msgstr "La rete non è disponibile." #: FOption.class:1280 msgid "Documentation is up to date." msgstr "La documentazione è aggiornata." #: FOption.class:1285 msgid "A new documentation is available!" msgstr "È disponibile nuova documentazione!" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "Documentazione non disponibile." #: FOption.class:1486 msgid "Cannot download '&1'." msgstr "Impossibile scaricare '&1'." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "Impossibile decomprimere la documentazione." #: FOption.class:1528 msgid "Unable to install documentation." msgstr "Impossibile installare la documentazione." # gb-ignore #: FOption.class:1636 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:1637 msgid "Compact" msgstr "Compatta" #: FOption.class:1652 msgid "Current" msgstr "Attuale" #: FOption.class:1694 msgid "Do you really want to override the existing layout?" msgstr "Vuoi veramente sovrascrivere il layout esistente?" #: FOption.class:1796 msgid "Do you really want to delete that layout?" msgstr "Vuoi veramente eliminare questo layout?" #: FOption.form:294 msgid "Dotted" msgstr "Punteggiato" #: FOption.form:305 msgid "Identity" msgstr "Identità" #: FOption.form:349 msgid "Package maintainer" msgstr "Manutentore del pacchetto" #: FOption.form:394 msgid "Default license" msgstr "Licenza predefinita" # gb-ignore #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Sì" #: FOption.form:438 msgid "Projects" msgstr "Progetti" #: FOption.form:455 msgid "Default tab size" msgstr "Dimensione tab predefinita" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "Spazi(o)" #: FOption.form:480 msgid "Indent with tab by default" msgstr "Indenta con tab di default" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "Accapo automatico di default" #: FOption.form:515 msgid "Fold procedures by default" msgstr "Ripiega la procedura di default" #: FOption.form:532 msgid "Activate version control" msgstr "Attiva il controllo della versione" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "Ripristina i file durante il caricamento di un progetto" #: FOption.form:561 msgid "Images" msgstr "Immagini" #: FOption.form:573 msgid "Compress PNG images with " msgstr "Comprimi le immagini PNG con " #: FOption.form:607 msgid "Automatic translation with " msgstr "Traduzione automatica con " #: FOption.form:636 msgid "Translation engine" msgstr "Motore di traduzione" #: FOption.form:645 msgid "Help & applications" msgstr "Help & Applicazioni" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Aiuto" #: FOption.form:662 msgid "Show documentation in popups" msgstr "Mostra la documentazione in una finestra popup" #: FOption.form:679 msgid "Always display optional messages" msgstr "Mostra sempre messaggi opzionali" #: FOption.form:691 msgid "Documentation" msgstr "Documentazione" #: FOption.form:702 msgid "Use offline documentation" msgstr "Usa la documentazione offline" #: FOption.form:732 msgid "Download documentation" msgstr "Scarica la documentazione" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "Configurazione del proxy" #: FOption.form:771 msgid "Clear documentation cache" msgstr "Cancella la cache della documentazione" #: FOption.form:779 msgid "Applications" msgstr "Applicazioni" # gb-ignore #: FOption.form:790 msgid "Browser" msgstr "" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Terminale" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "Mostra l'indentazione con linee verticali" #: FOption.form:850 msgid "Highlight current line" msgstr "Evidenzia la linea corrente" #: FOption.form:867 msgid "Highlight modified lines" msgstr "Evidenzia le linee modificate" #: FOption.form:884 msgid "Show line numbers" msgstr "Mostra i numeri di linea" #: FOption.form:901 msgid "Procedure folding" msgstr "Ripiega le procedure" #: FOption.form:918 msgid "Procedure separation" msgstr "Separa procedure" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "Mostra spazi alla fine della linea con punti" #: FOption.form:952 msgid "Show Preview" msgstr "Mostra l'anteprima" #: FOption.form:970 msgid "Keywords in upper case" msgstr "Parole chiave in maiuscolo" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "Separa i simboli statici nel selettore dei metodi" #: FOption.form:996 msgid "Code formatting" msgstr "Formattazione del codice" #: FOption.form:1002 msgid "Automatic formatting" msgstr "Formattazione automatica" #: FOption.form:1013 msgid "Control structure completion" msgstr "Completa le strutture di controllo" #: FOption.form:1030 msgid "Local variable declaration" msgstr "Dichiarazione variabile locale" #: FOption.form:1047 msgid "Comments insertion" msgstr "Inserimento dei commenti" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "Chiudi parentesi e parentesi graffe" #: FOption.form:1081 msgid "Close strings" msgstr "Chiudi le stringhe" #: FOption.form:1093 msgid "Explicit formating" msgstr "Formattazione esplicita" #: FOption.form:1104 msgid "Format on load & save" msgstr "Formatta su caricamento e salvataggio" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "Indenta la dichiarazione della variabile locale" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "Rimuovi gli spazi inutili alla fine della riga" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "Mantieni le linee vuote successive" #: FOption.form:1164 msgid "Code snippets" msgstr "Frammenti di codice" #: FOption.form:1180 msgid "Activate code snippets" msgstr "Attiva i frammenti di codice" #: FOption.form:1241 msgid "Interface" msgstr "Interfaccia" #: FOption.form:1258 msgid "Activate animations" msgstr "Attiva le animazioni" #: FOption.form:1275 msgid "Show shadows" msgstr "Mostra le ombre" #: FOption.form:1292 msgid "Show tooltips" msgstr "Mostra tooltips" #: FOption.form:1309 msgid "Use utility windows" msgstr "Usa le finestre di utilità" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "Chiudi le schede con il tasto centrale del mouse" #: FOption.form:1343 msgid "Show file name in window title" msgstr "Mostra il nome del file nel titolo della finestra" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "Mostra il pannello di debug se necessario" # gb-ignore #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "Font" #: FOption.form:1444 msgid "Global size" msgstr "Dimensione globale" #: FOption.form:1466 msgid "Title size" msgstr "Dimensioni del titolo" #: FOption.form:1488 msgid "Debugger size" msgstr "Dimensione del debugger" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Stampa" #: FOption.form:1580 msgid "Fixed font" msgstr "Font fisso" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "Zoom (escluso il browser)" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "Installa il font Gambas per la scrittura del codice" #: FOption.form:1673 msgid "Themes" msgstr "Temi" #: FOption.form:1690 msgid "Icon theme" msgstr "Tema delle icone" #: FOption.form:1706 msgid "Highlighting theme" msgstr "Tema dei colori evidenziati" #: FOption.form:1720 msgid "Import theme" msgstr "Importa un tema" #: FOption.form:1726 msgid "Export theme" msgstr "Esporta il tema" #: FOption.form:1745 #, fuzzy msgid "Invert colors for dark themes" msgstr "Adatta i colori ai temi dark" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Console - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Console integrata/separata" #: FOutput.form:72 msgid "Keep above" msgstr "Tieni sopra" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Sospendi il terminale" #: FOutput.form:104 msgid "Entered text echo" msgstr "Testo eco inserito" #: FOutput.form:106 msgid "Echo" msgstr "Eco" #: FOutput.form:117 msgid "Open contents" msgstr "Apri i contenuti" #: FOutput.form:130 msgid "Use system charset" msgstr "Usa la tabella caratteri del sistema" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Impossibile incollare il testo." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Contenuto degli appunti" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Incolla normalmente" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Incolla con PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Si prega di inserire un nome di tabella." #: FPasteTable.class:133 msgid "Table already exists" msgstr "La tabella già esiste" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Copia anche i dati della tabella" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Questo file non sembra un file di patch!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Applica la patch al progetto corrente" #: FPatch.form:31 msgid "Select patch" msgstr "Seleziona la patch" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Annulla" #: FProfile.class:175 msgid "Bad profile file format" msgstr "Formato profilo file non valido" #: FProfile.class:407 msgid "&1 Mb" msgstr "&1 Mb" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "Tempo totale &1 μs" #: FProfile.class:430 msgid "Unable to load profile file: &1" msgstr "Impossibile caricare il file del profilo: &1" #: FProfile.class:647 msgid "Calls" msgstr "Chiamate" #: FProfile.class:650 msgid "Duration" msgstr "Durata" #: FProfile.class:653 msgid "Average" msgstr "Media" #: FProfile.class:656 msgid "Self" msgstr "Auto" #: FProfile.class:1055 msgid "Profile files" msgstr "File di profilo" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "Impossibile salvare il profilo." #: FProfile.form:60 msgid "Show relative durations" msgstr "Mostra durate relative" #: FProfile.form:67 msgid "Show average" msgstr "Mostra la media" #: FProfile.form:74 msgid "Save profile" msgstr "Salva profilo" #: FProfile.form:126 msgid "Callees" msgstr "Funzioni di chiamata" #: FProfile.form:138 msgid "Callers" msgstr "Funzione di chiamata" #: FProjectProperty.class:160 msgid "Variable" msgstr "Variabile" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Valore di allineamento non corretto." #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "&1 non esporta alcuna classe." #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "&1 è già in uso come libreria." #: FProjectProperty.class:927 msgid "Modules" msgstr "Moduli" #: FProjectProperty.class:928 msgid "Test modules" msgstr "" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "Funzione" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "Linee di codice" #: FProjectProperty.class:940 #, fuzzy msgid "Average number of lines by function" msgstr "Numero delle dimensioni non valido" #: FProjectProperty.class:943 msgid "Executable size" msgstr "Dimensione dell'eseguibile" #: FProjectProperty.class:943 msgid "bytes" msgstr "bytes" #: FProjectProperty.class:960 msgid "Information about component" msgstr "Informazione sul componente" #: FProjectProperty.class:966 msgid "Information about library" msgstr "Informazione sulla libreria" #: FProjectProperty.class:1345 msgid "Select a Gambas executable" msgstr "Seleziona un eseguibile di Gambas" #: FProjectProperty.class:1346 msgid "Gambas executable" msgstr "Eseguibile di Gambas" #: FProjectProperty.form:273 msgid "General" msgstr "Generale" #: FProjectProperty.form:328 msgid "Component" msgstr "Componente" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "Libreria" #: FProjectProperty.form:328 msgid "Normal" msgstr "Normale" #: FProjectProperty.form:335 msgid "Vendor" msgstr "Venditore" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versione" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "Ottieni dal file 'VERSION'" #: FProjectProperty.form:380 msgid "Title" msgstr "Titolo" #: FProjectProperty.form:413 msgid "Information" msgstr "Informazione" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "Avanzamento" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "Finito e stabile" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "Questo componente è nascosto" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "Compatibile fino alla versione" #: FProjectProperty.form:496 msgid "Include information from" msgstr "Includi informazioni da" #: FProjectProperty.form:508 msgid "Required features" msgstr "Caratteristiche richieste" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "Componenti richiesti ed esclusi" #: FProjectProperty.form:585 msgid "Require" msgstr "Richiedere" #: FProjectProperty.form:591 msgid "Exclude" msgstr "Escludi" #: FProjectProperty.form:603 msgid "Remove All" msgstr "Rimuovi Tutto" #: FProjectProperty.form:610 msgid "Components" msgstr "Componenti" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Librerie" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "Percorso di ricerca della libreria di runtime" #: FProjectProperty.form:697 msgid "Additional references" msgstr "Riferimenti aggiuntivi" #: FProjectProperty.form:707 msgid "Environment" msgstr "Ambiente" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Inserisci" #: FProjectProperty.form:760 msgid "Edition" msgstr "Edizione" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Dimensione Tab" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "Mostra i componenti e i controlli deprecati" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Compilazione" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "I simboli dei moduli sono \"public\" di default" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "I controlli del form sono \"public\"" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "Attiva gli avvisi" #: FProjectProperty.form:916 msgid "Add branch to version number" msgstr "Aggiungi ramo (branch) al numero di versione" #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Statistiche" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Questa linea e la seguente saranno ignorate" #: FProjectVersion.class:36 msgid "Local" msgstr "Locale" #: FProjectVersion.class:37 msgid "Remote" msgstr "In remoto" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Si prega di inserire un nome utente." #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "Si prega di inserire il journal." #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "Non si è potuto inoltrare il progetto." #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "Impossibile aggiornare il progetto dal repository." #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "Il progetto è stato aggiornato correttamente dal repository." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Controllo della versione del progetto" #: FProjectVersion.form:65 msgid "Update" msgstr "Aggiorna" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Autenticazione" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Ricarica le informazioni" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "Journal" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Alcuni file non sono versionati e dovrebbero essere aggiunti manualmente al repository." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Descrizione precedente" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Caratteri proibiti nel control name." #: FProperty.class:383 msgid "This name is already in use." msgstr "Questo nome è già in uso." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Caratteri proibiti nel control group." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valore della proprietà non corretto." #: FProperty.class:631 msgid "The name of the control." msgstr "Il nome del controllo." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Il gruppo di eventi a cui appartiene il controllo." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Se le dimensioni del form e dei controlli devono seguire la dimensione del carattere predefinito." #: FProperty.class:661 msgid "If the control is public." msgstr "Se il controllo è pubblico." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Se la proprietà Text deve essere tradotta." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Questa proprietà è virtuale: è implementata solo nell'IDE e non esiste in fase di runtime." #: FProperty.class:814 msgid "None" msgstr "Nessuno" #: FProperty.form:51 msgid "Lock property" msgstr "Proprietà blocco" #: FProperty.form:58 msgid "Sort properties" msgstr "Ordina proprietà" #: FProxy.form:37 msgid "Port" msgstr "Port" #: FProxy.form:76 msgid "Default proxy" msgstr "Proxy di default" #: FProxy.form:76 msgid "HTTP proxy" msgstr "Proxy HTTP" #: FProxy.form:76 msgid "No proxy" msgstr "Nessun proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "Proxy SOCKS5" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "Non è possibile pubblicare un software la cui versione è \"0.0\"." #: FPublish.class:89 msgid "Software" msgstr "Software" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "Il progetto è stato pubblicato con successo." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Impossibile pubblicare il progetto." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Gli spazi non sono ammessi." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Numero di versione errato." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Vuoi veramente rimuovere tutti i tag?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Seleziona un file screenshot" #: FPublish.class:329 msgid "Screenshot files" msgstr "File screenshot" #: FPublish.form:67 msgid "Software description" msgstr "Descrizione del software" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "Sito web" #: FPublish.form:113 msgid "Create menu entry" msgstr "Crea voce di menu" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Tag" #: FPublish.form:164 msgid "Sort" msgstr "Ordina" #: FPublish.form:176 msgid "Screenshot" msgstr "Screenshot" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Mantieni lo screenshot memorizzato sul server" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Elimina lo screenshot memorizzato sul server" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Carica un nuovo screenshot ottenuto dagli appunti" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Carica un nuovo screenshot ottenuto dal seguente file:" #: FPublish.form:222 msgid "Dependencies" msgstr "Dipendenze" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Richiedi la versione di Gambas" #: FPublish.form:295 msgid "Publish as" msgstr "Pubblica come" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configurazione del bordo" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Bordo" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Angolo" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Configurazione ombra" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Shadow" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configurazione pennello" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "Seleziona un'immagine all'interno del progetto" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Valore errato." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Seleziona una dimensione" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configurazione distanziamento" #: FSave.form:14 msgid "Save modified files" msgstr "Salva file modificati" #: FSave.form:42 msgid "Save All" msgstr "Salva tutto" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "I seguenti file sono stati modificati. Vuoi salvarli?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Impossibile salvare un progetto nella sua stessa directory." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Non riesco a salvare il progetto." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Nuova directory padre del progetto" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nuovo nome del progetto" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Fai uno screenshot" #: FSearch.class:523 msgid "Search string replaced once." msgstr "La stringa cercata è stata sostituita una volta." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "La stringa cercata è stata sostituita &1 volte." #: FSearch.class:630 msgid "One match" msgstr "Una corrispondenza" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 corrisponde" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "Nessun elemento" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Implementa" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Vuoi veramente rimpiazzare ogni stringa?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Cerca e Rimpiazza" #: FSearch.form:105 msgid "Case sensitive" msgstr "Case sensitive" #: FSearch.form:110 msgid "Words only" msgstr "Solo parole" #: FSearch.form:115 msgid "Regular expression" msgstr "Espressione regolare" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignora le stringhe" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignora i commenti" #: FSearch.form:140 msgid "Search in" msgstr "Cerca in" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Termina funzione corrente" #: FSearch.form:153 msgid "Current file" msgstr "File corrente" #: FSearch.form:160 msgid "Source files" msgstr "File sorgenti" #: FSearch.form:166 msgid "Data files" msgstr "File di dati" #: FSearch.form:197 msgid "Browse" msgstr "Esplora" #: FSearch.form:209 msgid "Replace all" msgstr "Sostituisci tutto" #: FSearch.form:220 msgid "Highlight search" msgstr "Evidenzia la ricerca" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Seleziona un file extra" #: FSelectIcon.class:37 msgid "Image files" msgstr "File di immagine" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "File di immagine SVG" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Seleziona un'immagine" #: FSelectIcon.form:41 msgid "Stock" msgstr "Stock" #: FSelectLibrary.class:64 msgid "unknown" msgstr "sconosciuto" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Seleziona una libreria" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "Nessuna libreria è stata trovata sul tuo sistema." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Si prega di inserire una stringa di trigger." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Questa stringa di trigger è già in uso." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Modifica il frammento di codice" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nuovo frammento di codice" #: FSnippet.form:26 msgid "Trigger string" msgstr "Stringa trigger" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Giochi" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Sviluppo" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Istruzione" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Grafica" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "Audio" # gb-ignore #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Ufficio" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Accessori" # gb-ignore #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Estensioni" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Il mio software" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Altro software da" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Tutto il software" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "Nessun software trovato." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "Richiesta annullata." #: FSoftwareFarm.class:372 msgid "Cancel my vote" msgstr "Annulla il mio voto" #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "Aggiorna" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "Pubblicato &1 (&2)" #: FSoftwareFarm.class:559 msgid "Do you really want to download &1?" msgstr "Vuoi veramente scaricare &1?" #: FSoftwareFarm.class:562 msgid "Unable to download &1:" msgstr "Impossibile scaricare &1:" #: FSoftwareFarm.class:564 msgid "&1 has been successfully downloaded." msgstr "&1 è stato scaricato con successo." #: FSoftwareFarm.class:579 msgid "Do you really want to upgrade to &1?" msgstr "Vuoi veramente aggiornare a &1?" #: FSoftwareFarm.class:582 msgid "Unable to upgrade to &1:" msgstr "Impossibile aggiornare a &1:" #: FSoftwareFarm.class:589 msgid "Do you really want to uninstall &1?" msgstr "Vuoi veramente disinstallare &1?" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "Impossibile disinstallare &1:" #: FSoftwareFarm.class:594 msgid "&1 has been successfully uninstalled." msgstr "&1 è stato disinstallato con successo." #: FSoftwareFarm.class:600 msgid "Do you really want to install &1?" msgstr "Vuoi veramente installare &1?" #: FSoftwareFarm.class:603 msgid "Unable to install &1:" msgstr "Impossibile installare &1:" #: FSoftwareFarm.class:605 msgid "&1 has been successfully installed." msgstr "&1 è stato installato con successo." #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "Impossibile modificare il tuo voto." #: FSoftwareFarm.class:661 msgid "Do you really want to delete &1 from the farm server?" msgstr "Vuoi veramente eliminare &1 dal server della farm?" #: FSoftwareFarm.class:665 msgid "Unable to remove &1:" msgstr "Impossibile rimuovere &1:" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Gambas Software Farm" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "Mostra" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Installato" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Il più scaricato" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Il più recente" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Mostra i filtri" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Mostra le vecchie versioni" #: FSoftwareFarm.form:397 msgid "Download" msgstr "Download" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "Scarica e installa" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "Vota" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "Si prega di copiare queste informazioni in tutte le segnalazioni di bug." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Scegli una tabella" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Impossibile caricare il file di classe" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Questo layout esiste già." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Non riesco a salvare il progetto." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Vuoi veramente rimuovere questa query?" #: FTestSuite.form:60 #, fuzzy msgid "New test suite" msgstr "Nuovo frammento di codice" #: FTestSuite.form:67 #, fuzzy msgid "Duplicate test suite" msgstr "Duplica la selezione" #: FTestSuite.form:74 #, fuzzy msgid "Rename test suite" msgstr "Rinomina la tabella" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "Elimina il menu" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "Seleziona tutto" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "Deseleziona tutti" #: FTestSuite.form:145 #, fuzzy msgid "Test with" msgstr "Apri con" #: FText.class:12 msgid "Edit '&1' property" msgstr "Modifica la proprietà '&1'" #: FText.form:29 msgid "Use a fixed font" msgstr "Usa un font monospazio" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "Output della console #&1" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "Impossibile comprimere il file." #: FTextEditor.class:1888 msgid "Compressed at &1" msgstr "" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "Ordine ascendente" #: FTextEditor.form:175 msgid "Sort descent" msgstr "Ordine discendente" #: FTextEditor.form:221 msgid "Compress file" msgstr "Comprimi il file" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "Suggerimento del giorno #&1" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Non riesco a leggere il suggerimento del giorno !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Mostra suggerimenti all'avvio" #: FToolBox.class:397 Project.module:606 msgid "Current project" msgstr "Progetto corrente" #: FToolBox.form:58 msgid "Toolbox button size" msgstr "Dimensione cassetta degli attrezzi" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Il progetto è vuoto. Non c'è nulla da tradurre." #: FTranslate.class:74 msgid "Language" msgstr "Lingua" #: FTranslate.class:77 msgid "Not translated" msgstr "Non tradotto" #: FTranslate.class:169 msgid "Translation files" msgstr "File di traduzione" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Impossibile leggere il file di traduzione per la lingua '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Impossibile salvare la traduzione." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Vuoi veramente eliminare questa traduzione ?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Vuoi veramente ricaricare questa traduzione ?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Esporta una traduzione" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "Si prega di selezionare il file di traduzione da importare." #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "Nessuna traduzione è stata rilevata." #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "Una traduzione è stata rilevata." #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "&1 le traduzioni sono state raccolte." #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Impossibile importare il file traduzione." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Tutto sembra essere corretto." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "I simboli nella stringa tradotta non combaciano con la stringa originale. " #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "&1 stringhe. Tutte le frasi tradotte!" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 stringhe. Una non è tradotta. &3% fatto." #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 stringhe. &2 non sono tradotte. &3% fatto." #: FTranslate.class:1741 msgid "Automatic translation has failed." msgstr "La traduzione automatica è fallita." #: FTranslate.class:1753 msgid "Do you want to fill the translation automatically?" msgstr "Vuoi riempire la traduzione automaticamente?" #: FTranslate.form:77 msgid "Project translation" msgstr "Traduzione Progetto" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Traduzione automatica" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Stringhe non traducibili" #: FTranslate.form:122 msgid "Translated strings" msgstr "Stringhe tradotte" #: FTranslate.form:126 msgid "All strings" msgstr "Tutte le stringhe" #: FTranslate.form:197 msgid "Add a new translation" msgstr "Aggiungi una nuova traduzione" #: FTranslate.form:232 msgid "Save translation" msgstr "Salva traduzione" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verifica la traduzione" #: FTranslate.form:242 msgid "Verify" msgstr "Verificare" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Trova la prossima stringa tradotta" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Trova la precedente stringa tradotta" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Trova la precedente stringa non tradotta " #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Trova la prossima stringa non tradotta" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Cancella questa traduzione" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Questa stringa non deve essere tradotta" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copia la stringa non tradotta" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importa tutte le traduzioni ricorsivamente" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Sostituisci le traduzioni esistenti" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importa un file di traduzione" #: FVersionControl.class:16 msgid "Do you want to push the repository?" msgstr "Vuoi inviare il repository?" #: FVersionControl.class:16 msgid "Push" msgstr "Invia" #: FVersionControl.form:51 msgid "There is nothing to commit." msgstr "Non c'è nulla per il commit." #: FVersionControl.form:81 msgid "Do not push to remote repository" msgstr "Non inviare al repository remoto" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Seleziona il font" #: FWelcome.class:69 msgid "New project..." msgstr "Nuovo progetto..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Progetti recenti" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "Software installato" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Benvenuti in Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anonimo" #: FarmRequest.class:125 msgid "No answer." msgstr "Nessuna risposta." #: FarmRequest.class:167 msgid "Register user" msgstr "Registra un utente" #: FarmRequest.class:242 msgid "Publish project" msgstr "Pubblica un progetto" #: FarmRequest.class:363 msgid "Download software" msgstr "Scarica il software" #: FarmRequest.class:389 msgid "Delete software" msgstr "Elimina il software" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Afrikaans (Sudafrica)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabo (Egitto)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabo (Tunisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbaigiano (Azerbaijan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgaro (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalano (Catalano, Spagna)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Gallese (UK)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Ceco (Repubblica Ceca)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danese (Danimarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Tedesco (Germania)" #: Language.module:35 msgid "German (Belgium)" msgstr "Tedesco (Belgio)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Greco (Grecia)" #: Language.module:41 msgid "English (common)" msgstr "Inglese (Internazionale)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inglese (Regno Unito)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inglese (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Inglese (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Inglese (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Ovunque!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Spagnolo (comune)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spagnolo (Spagna)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spagnolo (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estone (Estonia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basco (Regione Basca)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Iran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finnico (Finlandia)" #: Language.module:68 msgid "French (France)" msgstr "Francese (Francia)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francese (Belgio)" #: Language.module:70 msgid "French (Canada)" msgstr "Francese (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francese (Svizzera)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galiziano (Spagna)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Ebraico (Israele)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (India)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Ungherese (Ungheria)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croato (Croazia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesiano (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandese (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Islandese (Islanda)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiano (Italia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Giapponese (Giappone)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Cambogia)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Coreano (Corea)" #: Language.module:110 msgid "Latin" msgstr "Latino" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Lituano (Lituania)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (India)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedone (Repubblica di Macedonia)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Danese (Olanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Danese (Belgio)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norvegese (Norvegia)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (India)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polacco (Polonia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portoghese (Portogallo)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portoghese (Brasile)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valenzano (Comunità Valenzana, Spagna)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Rumeno (Romania)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russo (Russia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovacco (Slovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanese (Albania)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbo (Serbia e Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Svedese (Svezia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turco (Turchia)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ucraino (Ucraina)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamita (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Vallone (Belgio)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Cinese semplificato (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Cinese tradizionale (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Sconosciuto" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Impossibile recuperare la password." #: MConnection.module:91 msgid "Unable to save password." msgstr "Impossibile salvare la password." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Impossibile creare la tabella '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Impossibile creare la tabella dei metadati." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 non può essere statico" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 la dichiarazione non corrisponde" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 è dichiarate ma non è una funzione" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 non è una struttura" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 non è dichiarata" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 deve essere statico" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: non in archivio" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: errore di sintassi" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: errore di sintassi nel file della form" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: troppi contenitori nidificati" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' già dichiarato" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' è erroneamente sovrascritto nella classe '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' non è una proprietà" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' non è statica" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' è di sola lettura" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' è statica" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' è di sola lettura" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' o ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Un modulo non può generare eventi" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Un'implementazione della proprietà non può essere pubblica" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Una proprietà deve essere pubblica" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Accesso negato" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "L'alias deve essere una stringa" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Espressione ambigua. Si prega di utilizzare le parentesi" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "L'argomento non può essere passato per riferimento" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Le matrici di struttura non sono supportate" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "Asserzione non riuscita" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Archivio errato: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Argomento sbagliato" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Costante di carattere non valido nella stringa" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Tipo non valido di costante" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Gestore di eventi non valido in &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Espressione non valida: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Versione del file non valida" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Formato non valido nella sezione:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Stringa di formato non valido" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Numero delle dimensioni non valido" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Progetto file non valido: linea &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Espressione regolare non valida: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Conversione stringa non valida" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Intervallo di indice non valido" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Uso non valido di una classe virtuale" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Versione della stringa non valida" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Impossibile cambiare la directory corrente da '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Impossibile creare il file .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Impossibile creare il file action: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Impossibile creare il callback: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Impossibile creare il file di informazione sulla classe: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Impossibile creare il file: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Impossibile creare il file dell'archivio temporaneo: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Impossibile trovare la libreria dinamica '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Impossibile trovare il simbolo '&2' nella libreria dinamica '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Impossibile ereditare se stessi" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Impossibile ereditare due volte" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Impossibile istanziare tipi nativi" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Impossibile caricare la classe '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Impossibile caricare il componente '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Impossibile caricare il file del codice sorgente: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Impossibile creare l'eseguibile: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Impossibile mischiare NEW e array incorporato" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Impossibile mischiare NEW e struttura incorporata" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "impossibile aprire il file '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Impossibile aprire il file: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Impossibile generare eventi nella funzione statica" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Impossibile leggere il file: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Impossibile registrare la classe '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Impossibile rimuovere il file '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Impossibile rinominare il file '&1' to '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Impossibile eseguire il processo figlio: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Impossibile impostare il proprietario del file: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "Impossibile utilizzare &1 due volte" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "Impossibile utilizzare &1 con &2" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Impossibile usare l'operatore NEW" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "La classe '&1' non è creabile" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Previsto operatore di confronto" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "Il nome del componente deve essere una stringa" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Componente non trovato: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Attesa una costante di tipo stringa" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Contenuto già dichiarato" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Caso già definito di default" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Il caso di default deve essere l'ultimo" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Periferica piena" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "La directory non è vuota" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Divisione per zero" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Simboli dinamici non possono essere usati in funzioni statiche" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Le array incorporate qui sono vietate" #: MErrorMessage.module:90 msgid "End of file" msgstr "Fine del file" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Atteso un operatore di uguaglianza o disuguaglianza" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Espressione troppo complessa" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Espressione troppo complessa. Troppi operandi" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "Il nome della libreria esterna deve essere una stringa" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Il file esiste già" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Il file è una directory" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Il file è bloccato" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Il nome del file è troppo lungo" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Il file o la directory non esiste" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "Proibito GOSUB" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "Proibito GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Riferimento ad un oggetto libero" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Istruzione illegale" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Errore interno del compilatore" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Assegnazione non valida" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Data non valida" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Oggetto non valido" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Percorso non valido" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() richiede un argomento di funzione" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Il salto è troppo lontano" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Etichetta '&1' non dichiarata" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Il nome della libreria deve essere una stringa" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Variabile di loop già in uso" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "Una variabile di loop non può essere un argomento" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "Una variabile di loop non può essere globale" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME non può essere usato in una funzione statica" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Errore matematico" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "#Endif mancante" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "']' mancante" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "'}' mancante" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Operatore mancante" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Parentesi destra mancante" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "Array multidimensionale" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW non può avere argomenti passati per referenza" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Nessun metodo di istanziazione" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Nessuna classe genitore" #: MErrorMessage.module:127 msgid "No return value" msgstr "Nessun valore di ritorno" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Nessun metodo di avvio" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Stringa non terminata" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "'&1' non è una directory" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Non è una funzione" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Non è una procedura" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Non è un array" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Non è un elenco" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Non è un oggetto" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Argomento non sufficiente per New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Argomenti non sufficienti" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Argomenti non sufficienti per &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Non ancora implementato" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Non supportato" #: MErrorMessage.module:141 msgid "Null object" msgstr "Oggetto nullo" #: MErrorMessage.module:142 msgid "Number" msgstr "Numero" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Attesi Numero o Data" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Numero o data" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Numero, data o stringa" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Numero, stringa o oggetto" #: MErrorMessage.module:147 msgid "Object" msgstr "Oggetto" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Fuori dai limiti" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Memoria terminata" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Fuori dall'intervallo" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Overflow" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "È vietato sovrascrivere una classe già ereditata" #: MErrorMessage.module:153 msgid "Read error" msgstr "Errore di lettura" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "Array di sola lettura" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Datatype del valore di ritorno non specificato nella dichiarazione di funzione" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Istruzione STOP incontrata" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER non può essere usato da solo" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Errore di serializzazione" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Overflow dello stack" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Tipo standard" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Lo stream è chiuso" #: MErrorMessage.module:162 msgid "String expected" msgstr "Attesa una stringa" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Le strutture devono essere pubbliche" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Gli argomenti della subroutine non possono essere passati per riferimento" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Errore di sintassi" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Errore di sintassi nella dichiarazione di funzione" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Errore di sintassi nel nome dell'evento" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Errore di sintassi in modalità file aperto" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Errore di sintassi nel tipo di ritorno" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Errore di sintassi. Atteso &1" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Errore di sintassi. '...' deve essere l'ultimo argomento" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Errore di sintassi. CASE o DEFAULT previsti dopo SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Errore di sintassi. CLASS ha bisogno di un identificatore" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Errore di sintassi. Non si può usare questa sintassi nell'assegnazione" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Errore di sintassi. INHERITS necessita di un nome di classe" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Errore di sintassi. Previsto identificatore" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "Errore di sintassi. Previsto identificatore per il nome della proprietà" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "Errore di sintassi. Previsto identificatore per il sinonimo della proprietà" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "Errore di sintassi. Previsto identificatore per la variabile della proprietà" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Errore di sintassi. Identificatore non valido nel nome della funzione" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Errore di sintassi. Parametro opzionale non valido" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "Errore di sintassi. Tipo di proprietà non valido" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Errore di sintassi. Tipo di ritorno non valido" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Errore di sintassi. Descrizione del tipo non valida per l'argomento &1" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Errore di sintassi. Descrizione del tipo del campo &1 non valida" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Errore di sintassi. Argomenti superflui" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Errore di sintassi. Un'espressione non può iniziare con un punto all'esterno di un blocco WITH/END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Errore di sintassi. STRUCT ha bisogno di un identificatore" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Errore di sintassi. L'argomento &1 non è un identificatore valido" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Errore di sintassi. Il campo &1 non è un identificatore valido" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Errore di sintassi. VarPtr() accetta un solo identificatore" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Errore di sistema #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "L'operatore '!' deve essere seguito da un identificatore" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "L'operatore '.' deve essere seguito da un identificatore" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "La funzione deve prendere un numero fisso di argomenti" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "Il metodo speciale &1 non può essere una funzione" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "Il metodo speciale &1 non può essere implementato" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "Il metodo speciale &1 non può essere statico" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "Il metodo speciale &1 deve essere una funzione" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "Il metodo speciale &1 deve essere pubblico" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "Il metodo speciale &1 deve essere statico" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "Il metodo speciale &1 deve ritornare un booleano" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "Il metodo speciale &1 deve prendere solo un numero variabile di argomenti" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "Il metodo speciale &1 deve prendere almeno un argomento" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "Il metodo speciale &1 non accetta argomenti" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "Il metodo speciale deve restituire un numero intero" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "Il metodo speciale deve prendere esattamente un argomento" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "Il metodo speciale deve prendere esattamente due argomento" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "La firma del metodo speciale non è corretta" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Questa espressione non può essere uno statement" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Questa espressione non può essere passata per riferimento" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Troppi argomenti" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Troppi argomenti da &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Troppe dichiarazioni di array" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Troppe costanti" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Troppe classi diverse utilizzate" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Troppe dimensioni" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Troppe variabili dinamiche" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Troppi eventi" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Troppe espressioni in CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Troppe funzioni esterne" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Troppe funzioni" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Troppe sovrapposizioni di #If...#Endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Troppe label" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Troppe variabili locali" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Troppe strutture di controllo annidate." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Troppi sinonimi alle proprietà" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Troppe nuove stringhe simultanee" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Troppe variabili statiche" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Troppi simboli unknown" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Backslash finale" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Tipo non corrispondente" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Tipo non corrispondente: cercato &1, ottenuto &2 al suo posto" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Impossibile creare la chiusura" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Impossibile ottenere la posizione del file" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Impossibile caricare il file di classe" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Impossibile preparare la descrizione della funzione" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "&1 inaspettato" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Fine linea inaspettata" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Stringa inaspettata" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "'&1' classe sconosciuta" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Errore sconosciuto" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Estensione del file sconosciuta" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Identificatore sconosciuto: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Operatore sconosciuto" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Simbolo sconosciuto '&2' nella classe '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Utente o gruppo sconosciuto" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Tipo dati non supportato" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Conversione stringa non supportata" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "LOCK inutile" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "L'argomento VarPtr() deve essere una variabile dinamica, statica o locale" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Identificatore vuoto" #: MErrorMessage.module:253 msgid "Void key" msgstr "Chiave vuota" #: MErrorMessage.module:254 msgid "Write error" msgstr "Errore di scrittura" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "impossibile trovare il componente" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "impossibile trovare la libreria" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "nome della classe nascosto dalla dichiarazione globale: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "nome della classe nascosto dalla dichiarazione locale: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "costante nascosta dalla dichiarazione locale: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "funzione esterna nascosta dalla dichiarazione locale: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "funzione nascosta dalla dichiarazione locale: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "variabile globale nascosta dalla dichiarazione locale: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "intero e booleano mischiati con l'operatore `&1'" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "variabile globale non inizializzata: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "variabile non inizializzata: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "errore sconosciuto" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "argomento non utilizzato: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "funzione esterna non utilizzata: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "funzione non utilizzata: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "variabile globale non utilizzata: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "variabile non utilizzata: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "impossibile aprire lo pseudo-terminale slave: " #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "impossibile inizializzare lo pseudo-terminal: " #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "impossibile collegare l'input standard: " #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "impossibile collegare l'output e l'errore standard: " #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "impossibile avviare l'eseguibile: " #: MHelp.module:313 msgid "No help found." msgstr "Nessun aiuto trovato." #: MHelp.module:1006 Wiki.module:799 msgid "This page does not exist." msgstr "Questa pagina non esiste." #: MMime.module:17 msgid "Plain text" msgstr "Testo semplice" #: MMime.module:18 msgid "HTML text" msgstr "Testo HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Dati di form Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Dati del menu di Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Percorso del file di progetto Gambas" #: MMime.module:22 msgid "URI list" msgstr "Lista URI" #: MMime.module:33 msgid "Unknown format" msgstr "Formato sconosciuto" #: MTheme.module:6 msgid "Alternate background" msgstr "Sfondo alternato" #: MTheme.module:6 msgid "Characters" msgstr "Caratteri" #: MTheme.module:6 msgid "Comments" msgstr "Commenti" #: MTheme.module:6 msgid "Current line" msgstr "Linea corrente" #: MTheme.module:6 msgid "Data types" msgstr "Tipi di dati" #: MTheme.module:6 msgid "Editing line" msgstr "Modifica linea" #: MTheme.module:6 msgid "Errors" msgstr "Errori" #: MTheme.module:6 msgid "Highlighting" msgstr "Evidenza" #: MTheme.module:6 msgid "Keywords" msgstr "Parole chiave" #: MTheme.module:6 msgid "Labels" msgstr "Etichette" #: MTheme.module:6 msgid "Normal text" msgstr "Testo normale" #: MTheme.module:6 msgid "Numbers" msgstr "Numeri" #: MTheme.module:6 msgid "Operators" msgstr "Operatori" #: MTheme.module:6 msgid "Preprocessor" msgstr "Preprocessore" #: MTheme.module:6 msgid "Strings" msgstr "Stringa" #: MTheme.module:6 msgid "Subroutines" msgstr "Sottoprogrammi" #: MTheme.module:6 msgid "Symbols" msgstr "Simboli" #: Package.module:83 msgid "'&1' is missing." msgstr "'&1' manca." #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "'&1' e '&2' mancano." #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Salva il file CHANGELOG/Modifiche." #: Package.module:735 msgid "Making &1 support package..." msgstr "Sto creando il pacchetto di supporto &1..." #: Package.module:790 msgid "Creating package for &1." msgstr "Creazione pacchetto per &1." #: Package.module:822 msgid "The package build has failed." msgstr "La creazione del pacchetto è fallita." #: Package.module:894 msgid "Making build directory." msgstr "Sto creando la directory." #: Package.module:953 msgid "Creating desktop file..." msgstr "Creazione file desktop..." #: Package.module:961 msgid "Sources are being debianizated." msgstr "\"Debianizzazione\" dei sorgenti..." #: Package.module:1168 msgid "Creating package..." msgstr "Creazione pacchetto..." #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' ha fallito." #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "Inizializzazione cartella ~/RPM." #: Package.module:1476 msgid "Creating source package." msgstr "Creazione pacchetto sorgente." #: Package.module:1500 msgid "Creating .spec file." msgstr "Creazione .spec file." #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' ha restituito il seguente codice errore:" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "'tar' ha restituito il seguente codice di errore:" #: Package.module:2442 msgid "'makepkg' has failed." msgstr "'makepkg' ha fallito." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "La directory non è un progetto Gambas" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "Formato di archivio sorgente non supportato" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "La patch non è stata applicata:\n" #: Project.module:231 msgid "Automation" msgstr "Automazione" # gb-ignore #: Project.module:232 msgid "Basic" msgstr "" #: Project.module:234 msgid "Drawing" msgstr "Disegno" #: Project.module:237 msgid "Miscellaneous" msgstr "Varie" #: Project.module:238 msgid "Networking" msgstr "Rete" # gb-ignore #: Project.module:239 msgid "OpenGL" msgstr "" #: Project.module:241 msgid "Sound" msgstr "Suono" #: Project.module:243 msgid "Controls" msgstr "Controlli" #: Project.module:244 msgid "Multimedia" msgstr "Multimedia" #: Project.module:245 msgid "Web" msgstr "Web" #: Project.module:422 msgid "File not found!" msgstr "File non trovato!" #: Project.module:534 msgid "This project does not exist." msgstr "Questo progetto non esiste." #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "Impossibile trovare l'eseguibile della IDE di Gambas nella directory:\n" "\n" "&1" #: Project.module:565 msgid "This is not a Gambas project." msgstr "Questo non è un progetto di Gambas." #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Questo è un progetto di Gambas 1.0. Usa Gambas 2 per convertirlo." #: Project.module:571 msgid "Convert" msgstr "Convertire" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Questo è un progetto Gambas 2.0.\n" "\n" "Vuoi convertirlo?" #: Project.module:589 msgid "Do not open" msgstr "Non aprire" #: Project.module:589 msgid "Open after all" msgstr "Apri alla fine" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Sembra che questo progetto sia già aperto.\n" "\n" "Aprire lo stesso progetto due volte può causare la perdita di dati." #: Project.module:595 msgid "It cannot be converted." msgstr "Non può essere convertito." #: Project.module:595 msgid "This project is read-only." msgstr "Questo progetto è di sola lettura." #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "Sto copiando il progetto in una directory temporanea..." #: Project.module:616 msgid "Unable to create temporary directory" msgstr "Impossibile creare la directory temporanea" #: Project.module:646 msgid "Converting project structure..." msgstr "Conversione della struttura del progetto..." #: Project.module:679 msgid "Applying conversion..." msgstr "Applicazione della conversione..." #: Project.module:685 msgid "Unable to apply conversion" msgstr "Impossibile applicare la conversione" #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "Mancano alcune librerie utilizzate dal progetto." #: Project.module:824 msgid "Cannot open project file :" msgstr "Impossibile aprire il file di progetto :" #: Project.module:876 msgid "Cannot reload file." msgstr "Impossibile ricaricare il file." #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "VERSIONE ALFA, L'USO È A TUO RISCHIO!" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "VERSIONE DI SVILUPPO, L'UTILIZZO È A VOSTRO ESCLUSIVO RISCHIO E PERICOLO!" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "Impossibile aprire un file binario." #: Project.module:2079 msgid "Cannot open file." msgstr "Impossibile aprire il file." #: Project.module:2237 msgid "&1th" msgstr "&1°" #: Project.module:2290 msgid "in form definition" msgstr "nella definizione della form" #: Project.module:2297 msgid "in &1." msgstr "nel &1." #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Alcuni file sorgenti del progetto sono in conflitto fra loro.\n" "Si prega di risolvere i conflitti per poter compilare il progetto." #: Project.module:2462 msgid "Compiling project" msgstr "Sto compilando il progetto" #: Project.module:2720 msgid "File already exists." msgstr "File già esistente." #: Project.module:2753 msgid "Directory already exists." msgstr "Cartella già esistente." #: Project.module:2765 msgid "Cannot link template file." msgstr "Impossibile collegare il file di template." #: Project.module:2771 msgid "Cannot copy template file." msgstr "Impossibile copiare il file template." #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "Il contenuto del file VERSION non è corretto." #: Project.module:2999 msgid "Cannot install library in &1." msgstr "Impossibile installare la libreria in &1." #: Project.module:3041 msgid "Making executable..." msgstr "Sto creando l'eseguibile..." #: Project.module:3099 msgid "Cannot make executable." msgstr "Impossibile creare l'eseguibile." #: Project.module:3555 msgid "Some components are missing: &1" msgstr "Mancano alcuni componenti: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "Impossibile aprire il file progetto." #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "Non riesco a creare un collegamento sul desktop. " #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "La cartella verrà eliminata al prossimo inoltro." #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "Devi definire una classe o form di avvio!" #: Project.module:4120 msgid "Please type a name." msgstr "Per favore scegli un nome." #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "Questo nome contiene un carattere vietato:" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "Il nome non può iniziare con un punto." #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "Questo nome è già in uso. Scegline un altro." #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Il nome di una classe deve cominciare con una lettera o con un underscore, seguito da qualsiasi lettera o numero." #: Project.module:4211 msgid "Destination already exists." msgstr "La destinazione già esiste." #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "Non riesco a rinominare '&1'" #: Project.module:4480 msgid "Please type a project name." msgstr "Per favore scegli un nome per il progetto." #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "Il nome del progetto non può iniziare con un punto." #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "I caratteri non ASCII sono vietati nel nome del progetto." #: Project.module:4492 msgid "SPACE" msgstr "SPAZIO" #: Project.module:4492 msgid "The following characters are forbidden in a project name:" msgstr "I seguenti caratteri sono vietati in un nome di progetto:" #: Project.module:4499 msgid "This project already exists." msgstr "Questo progetto è già esistente." #: Project.module:4502 msgid "The project directory already exists." msgstr "La cartella del progetto esiste già." #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "La cartella del progetto non può essere creata perché c'è già un file con lo stesso nome." #: Project.module:4552 msgid "Unable to create source archive." msgstr "Impossibile creare l'archivio del sorgente." #: Project.module:4579 msgid "Create source package" msgstr "Crea il pacchetto sorgente" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "Impossibile copiare il file &1." #: Project.module:4914 msgid "Cannot create link &1." msgstr "Impossibile creare il link &1." #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "Impossibile spostare una cartella dentro se stessa." #: Project.module:4993 msgid "Cannot move file &1." msgstr "Impossibile spostare il file &1." #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "I seguenti file non possono essere rimossi:" #: Project.module:5686 msgid "Project cleanup..." msgstr "Pulizia del progetto..." #: Project.module:5692 msgid "Project files conversion..." msgstr "Conversione dei file del progetto..." #: Project.module:5722 msgid "Unable to convert &1" msgstr "Impossibile convertire &1" #: Project.module:6002 msgid "Unable to update forms." msgstr "Impossibile aggiornare le form." #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "Il programma &1 non è installato sul tuo sistema." #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "I seguenti programmi non sono installati sul tuo sistema: &1." #: Project.module:6186 msgid "Unable to read component description file." msgstr "Impossibile leggere il file di descrizione del componente." #: Project.module:6247 msgid "Cannot write component description file." msgstr "Impossibile scrivere il file per la descrizione del componente." #: Project.module:6308 msgid "Project templates" msgstr "Modelli di progetto" #: Project.module:6354 msgid "Unable to run terminal." msgstr "Impossibile eseguire il terminale." #: Save.module:57 msgid "Cannot save file !" msgstr "Impossibile salvare il file !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Pubblicato &1" #: Util.module:39 msgid "&1 B" msgstr "&1 B" #: Util.module:41 msgid "&1 KiB" msgstr "&1 KiB" #: Util.module:43 msgid "&1 MiB" msgstr "&1 MiB" #: Util.module:45 msgid "&1 GiB" msgstr "&1 GiB" #: VersionControl.module:139 msgid "Command timeout." msgstr "Timeout del comando." #: VersionControl.module:139 msgid "Please check your network connection." msgstr "Si prega di verificare la connessione di rete." #: VersionControl.module:521 msgid "Do you really want to put this project under version control with &1?" msgstr "Vuoi veramente mettere questo progetto sotto controllo di versione con &1?" #: VersionControl.module:535 msgid "The project could not be put under version control." msgstr "Il progetto non può essere messo sotto controllo di versione." #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "Impossibile passare al ramo `&1`." #: VersionControl.module:642 msgid "With &1" msgstr "Con &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Ci sono &1 classi e &2 simboli in tutti i componenti di Gambas." #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "Questa pagina non esiste in quella lingua." #: WikiMarkdown.class:142 msgid "Since" msgstr "Dopo" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Questo componente non esiste." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Questa classe non esiste." #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Questo simbolo non esiste." #~ msgid "Current procedure" #~ msgstr "Procedura corrente" #~ msgid "Arguments" #~ msgstr "Argomenti" #~ msgid "QT5" #~ msgstr "QT5" #~ msgid "No argument" #~ msgstr "Nessun argomento" gambas-3.16.3/app/src/gambas3/.lang/ja.po000066400000000000000000005463011411575327000176710ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Config.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/Config.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/kazu/downloads/gambas-1.0.4/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2020-06-06 18:03 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:608 #, fuzzy msgid "Static properties" msgstr "ソートのプロパティ" #: CClassInfo.class:609 msgid "Static variables" msgstr "静的変数" #: CClassInfo.class:610 #, fuzzy msgid "Static methods" msgstr "静的変数" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "プロパティ" #: CClassInfo.class:629 msgid "Variables" msgstr "" #: CClassInfo.class:630 msgid "Methods" msgstr "" #: CClassInfo.class:631 msgid "Events" msgstr "" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:661 msgid "in &1" msgstr "" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:674 msgid "This class is &1." msgstr "" #: CClassInfo.class:674 msgid "creatable" msgstr "" #: CClassInfo.class:679 msgid "This class is static." msgstr "" #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:687 msgid "function" msgstr "" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:692 msgid "read" msgstr "" #: CClassInfo.class:692 msgid "write" msgstr "" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:694 msgid "write-only" msgstr "" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "読み込み専用" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:702 msgid "enumerable" msgstr "" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "" #: CClassInfo.class:855 msgid "This class inherits" msgstr "" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "" #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:897 #, fuzzy msgid "static function" msgstr "保存先" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:918 msgid "statically enumerable" msgstr "" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "&1 コンポーネントの情報を読み込み中..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "クラス" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "クラス" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "説明" #: CComponent.class:1669 #, fuzzy msgid "This component is not stable yet." msgstr "このプロジェクトは存在しません。" #: CComponent.class:1671 #, fuzzy msgid "This component is deprecated." msgstr "このプロジェクトは読み込み専用です。" #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "作者" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "作者" #: CComponent.class:1692 msgid "Implements" msgstr "実装" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "-" #: CComponent.class:1719 msgid "Excludes" msgstr "除外" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "組込みクラス" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "グラフの作図" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "圧縮と解凍" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 #, fuzzy msgid "MD5/DES/SHA crypting" msgstr "MD5/DES 暗号化" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "データベースを使用" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "データバウンドコントロール" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "アプリケーションデバッガヘルパー" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "式の評価機" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "グラフィカルコンポーネント用の追加コントロール" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "拡張された標準ダイアログ" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "MDI (Multi Document Interface)" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "" #: CDocumentation.class:80 #, fuzzy msgid "Terminal emulator" msgstr "端末エミュレータを使う" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:83 #, fuzzy msgid "GTK+2 toolkit" msgstr "GTK+ ツールキット" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:85 #, fuzzy msgid "GTK+3 toolkit" msgstr "GTK+ ツールキット" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ を切り替えるコンポーネント" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:88 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "QT/GTK+ を切り替えるコンポーネント" #: CDocumentation.class:89 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "QT/GTK+ を切り替えるコンポーネント" #: CDocumentation.class:90 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "QT/GTK+ を切り替えるコンポーネント" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:93 msgid "Image management" msgstr "" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "libxml ベースの XML ツール" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:104 msgid "Memcached client" msgstr "" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:107 msgid "NCurses library" msgstr "" #: CDocumentation.class:108 msgid "Network programming" msgstr "ネットワークを使用" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "高度なネットワークプロトコルの管理" #: CDocumentation.class:110 msgid "POP3 client" msgstr "" #: CDocumentation.class:111 msgid "SMTP client" msgstr "" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "OpenGL による 3D プログラム" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "GNU コマンド" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "Perl 互換の正規表現照合" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "Poppler ライブラリベースの PDF 描画" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:125 #, fuzzy msgid "QT5 toolkit" msgstr "GTK+ ツールキット" #: CDocumentation.class:126 #, fuzzy msgid "QT5 WebKit component" msgstr "コンポーネントについて(C)" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:128 #, fuzzy msgid "QT5 toolkit extension" msgstr "GTK+ ツールキットの拡張" #: CDocumentation.class:129 msgid "Report designer" msgstr "レポートデザイナ" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:132 msgid "SDL library" msgstr "SDL ライブラリ" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "SDL サウンドと CD-ROM の管理" #: CDocumentation.class:134 #, fuzzy msgid "SDL2 component" msgstr "コンポーネント" #: CDocumentation.class:135 #, fuzzy msgid "SDL2 audio component" msgstr "コンポーネントについて(C)" #: CDocumentation.class:136 msgid "Application settings management" msgstr "アプリケーション設定の管理" #: CDocumentation.class:137 msgid "Signals management" msgstr "" #: CDocumentation.class:138 #, fuzzy msgid "Terminal management" msgstr "イベントループ管理" #: CDocumentation.class:139 #, fuzzy msgid "Graphical terminal applications development" msgstr "グラフィカルなアプリケーション" #: CDocumentation.class:140 #, fuzzy msgid "Unit tests component" msgstr "コンポーネントについて(C)" #: CDocumentation.class:141 #, fuzzy msgid "Utility component" msgstr "コンポーネントについて(C)" #: CDocumentation.class:142 #, fuzzy msgid "Web applications utility component" msgstr "ウェブアプリケーションツール" #: CDocumentation.class:143 msgid "Video capture" msgstr "ビデオキャプチャ" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Visual Basic との互換機能" #: CDocumentation.class:145 msgid "XML tools" msgstr "" #: CDocumentation.class:146 msgid "HTML generator" msgstr "" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "XML-RPC プロトコル" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "ウェブアプリケーションツール" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:151 #, fuzzy msgid "Web application development" msgstr "ウェブアプリケーションツール" #: CDocumentation.class:152 #, fuzzy msgid "Web application development using processes as session" msgstr "ウェブアプリケーションツール" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "グラフィカルフォームの管理" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "イベントループ管理" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "OpenGL の表示" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "色を挿入します" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "-" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "フォームを開きます" #: CModule.class:29 msgid "Forms" msgstr "フォーム" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas フォーム" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "レポート(R)" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Gambas フォーム" #: CModule.class:32 FMain.form:967 #, fuzzy msgid "WebForm" msgstr "フォームを開きます" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "フォーム" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas フォーム" #: CModule.class:33 FMain.form:974 #, fuzzy msgid "TermForm" msgstr "フォームを開きます" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "フォーム" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 #, fuzzy msgid "IDE extensions" msgstr "自動拡張" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "キャンセル" #: CProjectList.class:554 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "本当にこのファイルを削除しますか?" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:561 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "プロジェクトは無事作成されました。" #: CProjectTree.class:97 msgid "Files" msgstr "" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "プロジェクト" #: CProjectTree.class:360 msgid "Sources" msgstr "ソース" #: CProjectTree.class:362 msgid "Connections" msgstr "接続" #: CProjectTree.class:363 msgid "Public" msgstr "" #: CProjectTree.class:364 msgid "Data" msgstr "データ" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "今日" #: CRecentProject.class:70 msgid "Yesterday" msgstr "昨日" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "ソースアーカイブを作成" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "次のクラスに循環継承(circular inheritance)があります: " #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "プロジェクトが保存できません。" #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "実行ファイルを作成できません。" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "プロジェクトが保存できません。" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "昨日" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:291 #, fuzzy msgid "Unable to push the project." msgstr "プロジェクトが保存できません。" #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "" #: CVersionControlGit.class:308 #, fuzzy msgid "Last commit" msgstr "コメントとして貼り付け" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:317 #, fuzzy msgid "Current branch" msgstr "現在のオブジェクト" #: CVersionControlGit.class:318 msgid "Origin" msgstr "" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:336 #, fuzzy msgid "None in the current project." msgstr "プロジェクトを作成できません!" #: CVersionControlGit.class:338 #, fuzzy msgid "One in the current project." msgstr "プロジェクトを作成できません!" #: CVersionControlGit.class:340 #, fuzzy msgid "&1 in the current project." msgstr "最近のプロジェクト" #: CVersionControlGit.class:344 #, fuzzy msgid "Status" msgstr "ステータスバー" #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 #, fuzzy msgid "Remote repository URL" msgstr "リポジトリ" #: CVersionControlGit.class:398 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "次のコミットでフォルダは削除されます。" #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "-" #: CVersionControlGit.class:436 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "日付" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:319 #, fuzzy msgid "Remote revision" msgstr "全ての式を削除" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2231 msgid "first" msgstr "" #: Design.module:229 Project.module:2233 msgid "second" msgstr "" #: Design.module:231 Project.module:2235 msgid "third" msgstr "" #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "" #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:445 #, fuzzy msgid "The program has been terminated." msgstr "プロジェクトは無事作成されました。" #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "プログラムは次の値を返しました: &1" #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "このプロジェクトは存在しません。" #: Design.module:1039 msgid "Output terminal" msgstr "" #: Design.module:1067 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "ライセンス" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "Gambas について(A)" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "-\n" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "引数" #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "リセット(R)" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "プログラム実行します" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "閉じる" #: FColorChooser.form:15 msgid "Select a color" msgstr "色を選択" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "システム" #: FColorChooser.form:35 msgid "Free" msgstr "フリー" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "安定版(開発中)" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "試験的" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "すべて削除" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "これらのコンポーネントは同時に利用できません:
&1。" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "&1 コンポーネントは以下のいずれかのコンポーネントを必要としています:
&2。" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "&1 コンポーネントは &2 コンポーネントを必要としています。" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "フォントを選択" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "再読み込みします" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "拡大" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "縮小" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "編集(&E)" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "テキスト" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "イメージ" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "選択範囲を切り取ります" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "クリップボードにコピーします" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "クリップボードから貼り付けします" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "元に戻します" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "やり直します" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "インデントを増やす" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "インデントを減らす" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "開く" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "保存します" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(宣言)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "コメント化します" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "コメントを解除します" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "全て選択(A)" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "指定行へ移動" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "次を検索" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "前を検索" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "表示" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 #, fuzzy msgid "Automatic word wrap" msgstr "自動処理" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "行末" #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "コードを開く" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "文字列として貼り付け" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "複数行の文字列として貼り付け" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "コメントとして貼り付け" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "テキストエディタ" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "コードを開きます" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "前へ(P)" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "名前" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "種類" #: FConnectionEditor.class:61 msgid "Length" msgstr "長さ" #: FConnectionEditor.class:66 msgid "Default value" msgstr "標準値" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "コンパイル" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "インデックス" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "フィールド" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "保存しない(N)" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "無制限" #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "論理値" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "フロート" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "整数" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "長い" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "シリアル" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "文字列" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "テーブルを削除します" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "削除" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "名前を変更(R)" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "インポート" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "追加" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "下へ" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "上へ" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "新規" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "クリア" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "編集(E)" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "エクスポート(E)" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "削除" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "全て選択" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "全選択を解除" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 #, fuzzy msgid "Unable to send bug report." msgstr "プロジェクトが保存できません。" #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "プログラムは次の値を返しました: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(最上位)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "ファイルを追加できません。" #: FCreateFile.form:37 msgid "New file" msgstr "新規作成" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "オプション" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "幅" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "高さ" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "ダイアログ画面" #: FCreateFile.form:155 msgid "Parent class" msgstr "ひとつ上のクラス" #: FCreateFile.form:168 msgid "Exported" msgstr "エクスポート完了" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "自動拡張" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "翻訳不可" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "自動拡張" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "プロジェクトのチェックアウトに失敗しました。" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "プロジェクトを作成できません!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "メニューの場所を選択してください。" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "リポジトリの場所を入力してください。" #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "新規プロジェクトを作成します" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "フォルダ" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "プロジェクトのプロパティ" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "プロジェクトを翻訳可能にする" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "別のウィンドウに開く" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "リポジトリ" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.class:104 #, fuzzy msgid "Test has failed." msgstr "プロジェクトのチェックアウトに失敗しました。" #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "デバッグ" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "コンソール" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "ブレークポイント" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "" #: FDebugButton.form:84 FDebugInfo.form:398 #, fuzzy msgid "Search result" msgstr "検索リスト" #: FDebugExpr.class:4 msgid "not available" msgstr "有効ではない" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "値" #: FDebugExpr.class:511 msgid "Key" msgstr "キー" #: FDebugExpr.class:517 msgid "Symbol" msgstr "シンボル" #: FDebugExpr.form:33 msgid "Watch" msgstr "ウォッチ" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "コンソールを分離します" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "線" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "機能" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "ファイル" #: FDebugInfo.class:49 msgid "Col." msgstr "" #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:120 msgid "native code" msgstr "ネイティブコード" #: FDebugInfo.class:187 #, fuzzy msgid "Watch expressions" msgstr "ウォッチ式" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "式のリストをクリアしますか?" #: FDebugInfo.class:1091 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1230 msgid "Current object" msgstr "現在のオブジェクト" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "ローカル変数" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "デバッグ" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "現在行の式を削除" #: FDebugInfo.form:130 msgid "Add expression" msgstr "式を追加" #: FDebugInfo.form:190 #, fuzzy msgid "Remove breakpoint" msgstr "全てのブレークポイントを削除" #: FDebugInfo.form:198 #, fuzzy msgid "Disable breakpoint" msgstr "ブレークポイントを切替えます" #: FDebugInfo.form:200 #, fuzzy msgid "Disable" msgstr "テーブル" #: FDebugInfo.form:206 #, fuzzy msgid "Enable breakpoint" msgstr "ブレークポイントを切替えます" #: FDebugInfo.form:208 #, fuzzy msgid "Enable" msgstr "テーブル" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "全てのブレークポイントを削除" #: FDebugInfo.form:264 msgid "Tasks" msgstr "" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "コンソールをクリアします" #: FDebugInfo.form:300 msgid "Run test" msgstr "" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "コミット(C)" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:346 FMain.form:525 #, fuzzy msgid "Revert all changes" msgstr "全てのブレークポイントを削除" #: FDebugInfo.form:353 FMain.form:531 #, fuzzy msgid "Add everything to repository" msgstr "リポジトリに追加(A)" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:422 msgid "Show search window" msgstr "検索ウィンドウを表示" #: FDebugInfo.form:429 msgid "Search again" msgstr "もう一度検索" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "検索文字列がみつかりません。" #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "(宣言)" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "" #: FEditor.form:201 msgid "Sort procedures" msgstr "" #: FEditor.form:230 msgid "Go to" msgstr "移動" #: FEditor.form:249 msgid "Find definition" msgstr "" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "現在の行まで実行" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "ブレークポイントを切替えます" #: FEditor.form:320 msgid "Watch expression" msgstr "ウォッチ式" #: FEditor.form:329 msgid "Open form" msgstr "フォームを開く" #: FEditor.form:336 FMain.form:1133 #, fuzzy msgid "Run this class" msgstr "ひとつ上のクラス" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "印刷" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "エディタ" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 #, fuzzy msgid "Show modifications" msgstr "変更したフィルを保存" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 #, fuzzy msgid "Previous modification" msgstr "前へ(P)" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "" #: FEditor.form:570 FTextEditor.form:546 msgid "Insert special character" msgstr "" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "ユーザ" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "パスワード" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "パスワードを保存する" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "あたなの e-mail アドレスを入力してください。" #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "プロジェクトが保存できません。" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "パスワードを保存する" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "接続" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "テーブル" #: FFileInfoVC.class:23 #, fuzzy msgid "'&1' version control" msgstr "データバウンドコントロール" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "続ける" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "変更を破棄しようとしています。" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "変更点" #: FFileInfoVC.form:41 FVersionControl.form:55 #, fuzzy msgid "History" msgstr "フォルダ" #: FFileInfoVC.form:59 #, fuzzy msgid "Undo changes" msgstr "変更点" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Gambas モジュール" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "ソートのプロパティ" #: FFontChooser.form:12 msgid "Select a font" msgstr "フォントを選択" #: FForm.class:136 msgid "Bad form file" msgstr "誤ったフォームファイルです。" #: FForm.class:268 #, fuzzy msgid "Unknown control: &1" msgstr "未知のエラー" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "" #: FForm.class:1876 #, fuzzy msgid "Cannot paste data." msgstr "実行ファイルを作成できません。" #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "選択" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "フォントを選択" #: FForm.form:245 msgid "Arrangement" msgstr "配置" #: FForm.form:249 msgid "Bring to foreground" msgstr "前面に移動します" #: FForm.form:256 msgid "Send to background" msgstr "背面に移動します" #: FForm.form:266 msgid "Horizontal" msgstr "水平" #: FForm.form:273 msgid "Rows" msgstr "行" #: FForm.form:279 msgid "Vertical" msgstr "垂直" #: FForm.form:286 msgid "Columns" msgstr "列" #: FForm.form:295 msgid "Center horizontally" msgstr "水平方向に中央で揃えます" #: FForm.form:301 msgid "Center vertically" msgstr "垂直方向に中央で揃えます" #: FForm.form:307 msgid "Alignment" msgstr "位置合わせ" #: FForm.form:311 msgid "Align to left" msgstr "左に揃える" #: FForm.form:317 msgid "Align to right" msgstr "右に揃える" #: FForm.form:323 msgid "Align to top" msgstr "上に揃える" #: FForm.form:329 msgid "Align to bottom" msgstr "下に揃える" #: FForm.form:338 msgid "Same width" msgstr "同じ横幅" #: FForm.form:344 msgid "Same height" msgstr "同じ高さ" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "タブを移動" #: FForm.form:366 msgid "First" msgstr "最初(F)" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "前へ(P)" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "次へ(N)" #: FForm.form:387 msgid "Last" msgstr "最後(L)" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "メニューエディタ" #: FForm.form:407 msgid "Event" msgstr "イベント" #: FForm.form:421 #, fuzzy msgid "Run this form" msgstr "このコマンドを後で実行" #: FForm.form:601 msgid "Toggle grid" msgstr "グリッドを切り替え" #: FForm.form:610 FImageEditor.form:515 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "タブを最初に移動" #: FForm.form:736 msgid "Move tab left" msgstr "タブを左に移動" #: FForm.form:743 msgid "Move tab right" msgstr "タブを右に移動" #: FForm.form:750 msgid "Move tab last" msgstr "タブを最後に移動" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "ボールド" #: FForm.form:786 msgid "Italic" msgstr "イタリック" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "下線" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "背景" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 #, fuzzy msgid "Lock / unlock form" msgstr "フォームをロックします" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "階層ツリー" #: FFormStack.form:24 msgid "Move top" msgstr "一番上に移動します" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "上に移動します" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "下に移動します" #: FFormStack.form:42 msgid "Move bottom" msgstr "一番下に移動します" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "デフォルトの言語" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "ヘルプブラウザ" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "戻る" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "進む" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 #, fuzzy msgid "Debugger" msgstr "デバッグ" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "翻訳" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "水平に反転" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "垂直に反転" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "左回りに回転" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "右回りに回転" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "選択範囲" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "IDE の設定" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "選択範囲" #: FImageEditor.form:284 #, fuzzy msgid "Exclusive or" msgstr "除外" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:428 msgid "Image editor" msgstr "イメージエディタ" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "" #: FImageEditor.form:558 msgid "Move" msgstr "" #: FImageEditor.form:569 msgid "Draw" msgstr "描画" #: FImageEditor.form:579 msgid "Erase" msgstr "" #: FImageEditor.form:599 msgid "Rectangle" msgstr "四角" #: FImageEditor.form:609 msgid "Ellipse" msgstr "楕円" #: FImageEditor.form:629 msgid "Magic wand" msgstr "" #: FImageEditor.form:646 msgid "Edit selection" msgstr "" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "-" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1267 msgid "Arrow" msgstr "" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1270 msgid "Triangle" msgstr "" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "色" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 #, fuzzy msgid "Select gradient stop color" msgstr "色を選択" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "" #: FImageProperty.form:391 #, fuzzy msgid "Colorize" msgstr "色" #: FImageProperty.form:399 #, fuzzy msgid "Desaturate" msgstr "特徴" #: FImageProperty.form:407 #, fuzzy msgid "Make transparent" msgstr "翻訳を保存します" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "線" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "線" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "サイズ" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:535 msgid "Brightness" msgstr "" #: FImageProperty.form:554 msgid "Contrast" msgstr "" #: FImageProperty.form:573 msgid "Gamma" msgstr "" #: FImageProperty.form:592 msgid "Lightness" msgstr "" #: FImageProperty.form:611 msgid "Hue" msgstr "" #: FImageProperty.form:630 msgid "Saturation" msgstr "" #: FImageProperty.form:649 msgid "Blur" msgstr "" #: FImageProperty.form:666 #, fuzzy msgid "Transparency" msgstr "プロジェクトを翻訳します" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "プレビュー" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 #, fuzzy msgid "Right align" msgstr "ハイライト" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:849 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas クラス" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas モジュール" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Gambas モジュール" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML ファイル" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "画像ファイル" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "ファイルを開けません。" #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "テーマをインポートします" #: FImportFile.form:24 #, fuzzy msgid "Create symbolic links" msgstr "シンボリックリンクを作成" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "全てのファイル" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "転送元" #: FImportTable.form:78 msgid "Charset" msgstr "文字セット" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "無駄な空白を取り除く" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "線" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "保存先" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "プロジェクトの変更点を入力してください。" #: FLayout.class:30 FOption.class:1694 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "このプロジェクトは既に存在します。" #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "保存します" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "リストプロパティを編集" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "元に戻す(R)" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "本当にこのフォルダを削除しますか?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "本当にこのファイルを削除しますか?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "フォルダ又はファイルを削除できません。" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:759 msgid "Sort history" msgstr "" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "パス名でソートする" #: FMain.class:775 msgid "&Clear history" msgstr "履歴をクリア(&C)" #: FMain.class:959 msgid "New folder" msgstr "新規フォルダ" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "全てのバックアップや生成されたファイルを削除します。" #: FMain.class:1872 msgid "Clean" msgstr "消去" #: FMain.class:2189 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "本当にこのフォルダを削除しますか?" #: FMain.class:2329 msgid "Choose a profile" msgstr "" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "" #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "ファイルは変更されています。変更は全て失われます。" #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "プロジェクトを開きます" #: FMain.form:306 msgid "Open recent" msgstr "最近のプロジェクト(R)" #: FMain.form:314 msgid "Open example" msgstr "サンプルを開く(E)" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:332 msgid "Save project" msgstr "プロジェクトを保存します" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "プロジェクトを別名で保存します" #: FMain.form:351 #, fuzzy msgid "Reload project" msgstr "プロジェクトを選択" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "終了" #: FMain.form:395 #, fuzzy msgid "Save as" msgstr "保存します" #: FMain.form:435 msgid "Compile" msgstr "コンパイルします" #: FMain.form:442 msgid "Compile All" msgstr "全てコンパイル(A)" #: FMain.form:452 msgid "Translate" msgstr "プロジェクトを翻訳します" #: FMain.form:461 msgid "Make" msgstr "作成" #: FMain.form:465 msgid "Executable" msgstr "実行ファイル(E)" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "ソースアーカイブ(S)" #: FMain.form:479 msgid "Installation package" msgstr "インストールパッケージ(I)" #: FMain.form:486 msgid "Patch" msgstr "" #: FMain.form:489 msgid "Create" msgstr "" #: FMain.form:518 msgid "Undo synchronization" msgstr "" #: FMain.form:537 msgid "Branch" msgstr "" #: FMain.form:542 msgid "Put under version control" msgstr "" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "不要なファイルを消去(C)" #: FMain.form:563 msgid "Refresh" msgstr "更新(R)" #: FMain.form:592 msgid "Run with" msgstr "" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "プログラムを一時停止します" #: FMain.form:620 msgid "Stop" msgstr "プログラムを停止します" #: FMain.form:627 msgid "Step" msgstr "プログラムをステップイン(1行ずつ)実行します" #: FMain.form:634 msgid "Forward" msgstr "プログラムをステップオーバー(関数内に入らずに次の行まで)実行します" #: FMain.form:641 msgid "Finish" msgstr "ステップアウト(H)" #: FMain.form:650 msgid "Use terminal emulator" msgstr "" #: FMain.form:656 msgid "Redirect standard error output" msgstr "" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:668 msgid "Activate profiling" msgstr "" #: FMain.form:677 msgid "Invert language orientation" msgstr "" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 msgid "Show database requests" msgstr "" #: FMain.form:705 #, fuzzy msgid "GUI component" msgstr "コンポーネント" #: FMain.form:709 #, fuzzy msgid "Current desktop" msgstr "現在のオブジェクト" #: FMain.form:746 msgid "Open profile" msgstr "" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "全てのブレークポイントをクリア(A)" #: FMain.form:757 msgid "Close all debug windows" msgstr "すべてのデバッグウィンドウを閉じる(D)" #: FMain.form:795 msgid "Status bar" msgstr "ステータスバー" #: FMain.form:802 msgid "Hide menubar" msgstr "メニューバーを隠す" #: FMain.form:826 msgid "Close all windows" msgstr "全てのウィンドウを閉じる(A)" #: FMain.form:833 msgid "Tools" msgstr "" #: FMain.form:837 msgid "Find" msgstr "検索(F)" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "置換" #: FMain.form:853 msgid "Browse project" msgstr "プロジェクトフォルダを参照(B)" #: FMain.form:860 msgid "Open a terminal" msgstr "端末を開く(O)" #: FMain.form:867 msgid "Send project by mail" msgstr "" #: FMain.form:873 msgid "Update all forms" msgstr "全てのフォームを更新(U)" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:891 msgid "Shortcuts" msgstr "ショートカット" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "IDE の設定" #: FMain.form:911 msgid "Directory" msgstr "フォルダ" #: FMain.form:916 msgid "Project link" msgstr "" #: FMain.form:925 msgid "Module" msgstr "モジュール" #: FMain.form:932 #, fuzzy msgid "Test module" msgstr "Gambas モジュール" #: FMain.form:991 msgid "HTML file" msgstr "HTML ファイル" #: FMain.form:998 msgid "Style sheet" msgstr "スタイルシート" #: FMain.form:1005 msgid "Javascript file" msgstr "" #: FMain.form:1013 msgid "Other" msgstr "その他(O)" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "最近" #: FMain.form:1047 #, fuzzy msgid "Open in file manager" msgstr "設定ファイルを使用" #: FMain.form:1052 #, fuzzy msgid "Open in project" msgstr "プロジェクトを開きます" #: FMain.form:1056 msgid "Open with" msgstr "" #: FMain.form:1064 msgid "Compress all" msgstr "" #: FMain.form:1070 msgid "Uncompress all" msgstr "" #: FMain.form:1117 msgid "Copy file path" msgstr "ファイルパスをコピー(H)" #: FMain.form:1126 msgid "Startup class" msgstr "スタートアップクラス(S)" #: FMain.form:1141 msgid "Add to repository" msgstr "リポジトリに追加(A)" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1149 msgid "Show exported classes" msgstr "" #: FMain.form:1154 msgid "Show added files" msgstr "" #: FMain.form:1159 #, fuzzy msgid "Show modified files" msgstr "変更したフィルを保存" #: FMain.form:1164 msgid "Show files in conflict" msgstr "" #: FMain.form:1172 msgid "Show all" msgstr "" #: FMain.form:1184 #, fuzzy msgid "Do not translate" msgstr "翻訳不可" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "今日の tips" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "システム情報" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "プロジェクトのプロパティ" #: FMain.form:1386 msgid "Refresh project" msgstr "プロジェクトを更新" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "実行ファイルを作成します" #: FMain.form:1428 msgid "Make source archive" msgstr "ソースアーカイブを作成" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "インストールパッケージを作成" #: FMain.form:1457 msgid "Properties sheet" msgstr "プロパティシート" #: FMain.form:1466 msgid "Toolbox" msgstr "ツールボックス" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "検索" #: FMain.form:1508 msgid "Compile all" msgstr "全てコンパイルします" #: FMain.form:1557 msgid "Finish current function" msgstr "プログラムをステップアウト(現在の関数を終了)実行します" #: FMain.form:1573 #, fuzzy msgid "Show menubar" msgstr "行番号を表示する" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1663 msgid "&File" msgstr "ファイル(&F)" #: FMain.form:1687 msgid "&Project" msgstr "プロジェクト(&P)" #: FMain.form:1699 msgid "&Debug" msgstr "デバッグ(&D)" #: FMain.form:1711 msgid "&View" msgstr "表示(&V)" #: FMain.form:1723 msgid "&Tools" msgstr "ツール(&T)" #: FMain.form:1735 msgid "&?" msgstr "ヘルプ(&H)" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1866 #, fuzzy msgid "Show properties sheet" msgstr "プロパティシート" #: FMain.form:1874 #, fuzzy msgid "Show project tree" msgstr "プロジェクトフォルダを参照(B)" #: FMain.form:1944 #, fuzzy msgid "Show property help" msgstr "プロパティのヘルプを表示する" #: FMain.form:1952 #, fuzzy msgid "Show controls" msgstr "ツールチップを表示する" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas アプリケーション" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "このコマンドを後で実行" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) は実行ファイルのパスで置き換えられます" #: FMakeExecutable.form:57 #, fuzzy msgid "Increment version" msgstr "誤ったプロパティ値です。" #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "実行ファイルにデバッグ情報を残す" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "デスクトップにショートカットを作成" #: FMakeInstall.class:137 msgid "Package" msgstr "パッケージ" #: FMakeInstall.class:138 msgid "Min. version" msgstr "" #: FMakeInstall.class:139 msgid "Max. version" msgstr "" #: FMakeInstall.class:145 msgid "File or directory" msgstr "" #: FMakeInstall.class:279 #, fuzzy msgid "Creating packages..." msgstr "パッケージの作成中..." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "パッケージの作成に成功しました。" #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "あなたの名前を入力してください。" #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "あたなの e-mail アドレスを入力してください。" #: FMakeInstall.class:345 #, fuzzy msgid "Please enter the vendor name." msgstr "メニュー名を入力してください。" #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "このリリース用の CHANGELOG には何も含まれていません。" #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "最初の CHANGELOG を入力してください。" #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "対象ディストリビューションを選択してください。" #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "各ディストリビューション用のパッケージのグループを選択してください。" #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "パッケージのグループを選択してください。" #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "各ディストリビューション用のメニューの場所を選択してください。" #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "メニューの場所を選択してください。" #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:542 msgid "Initial release" msgstr "-" #: FMakeInstall.class:802 msgid "Menus" msgstr "メニュー" #: FMakeInstall.class:870 msgid "Groups" msgstr "グループ" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "パッケージ名" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "ベンダー名" #: FMakeInstall.form:241 FOption.form:377 #, fuzzy msgid "Vendor prefix" msgstr "ベンダー名" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "メンテナの情報" #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "更新履歴" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "カテゴリ" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "ソースアーカイブを作成" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "ソースパッケージ" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "メニュー名を入力してください。" #: FMenu.class:332 msgid "Bad menu name !" msgstr "誤ったメニュー名です!" #: FMenu.class:338 msgid "Bad group name !" msgstr "誤ったグループ名です!" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "このメニューは深過ぎです!" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "変更済み" #: FMenu.form:84 msgid "Insert menu" msgstr "メニューを追加します" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "色を挿入します" #: FMenu.form:100 #, fuzzy msgid "Insert menu before" msgstr "メニューを追加します" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "色を挿入します" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "削除" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "追加ボタンをクリックして新しいメニューを作成します" #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "データベース" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "テーブルを削除します" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "ホスト" #: FNewConnection.form:124 msgid "Path" msgstr "パス" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "パスワード" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "データベース" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "新しく翻訳を開始します" #: FOpenProject.form:22 msgid "Select a project" msgstr "プロジェクトを選択" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "サンプル" #: FOption.class:4 msgid "Amber" msgstr "アンバー" #: FOption.class:4 msgid "Amethyst" msgstr "アメジスト" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "エメラルド" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "オブシディアン" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "クリップボードから貼り付けします" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "素早く" #: FOption.class:4 msgid "Ruby" msgstr "ルビー" #: FOption.class:4 msgid "Sapphire" msgstr "サファイア" #: FOption.class:4 msgid "Visual" msgstr "ビジュアル" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:87 msgid "Custom" msgstr "" #: FOption.class:89 msgid "Desktop" msgstr "デスクトップ" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(デフォルト)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "Gambas ハイライトテーマファイル" #: FOption.class:242 msgid "Export a theme file" msgstr "テーマファイルをエクスポート" #: FOption.class:467 msgid "Select a theme file" msgstr "テーマファイルを選択" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "変更を確認するためにはアプリケーションを再起動する必要があります" #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:829 #, fuzzy msgid "Unable to clear documentation cache." msgstr "ドキュメントのキャッシュを消去する" #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "本当にこのコードスニペットを削除しますか?" #: FOption.class:1190 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "本当にこのファイルを削除しますか?" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "" #: FOption.class:1275 #, fuzzy msgid "Network is not available." msgstr "有効ではない" #: FOption.class:1280 #, fuzzy msgid "Documentation is up to date." msgstr "ポップアップにドキュメントを表示する" #: FOption.class:1285 #, fuzzy msgid "A new documentation is available!" msgstr "ドキュメントのキャッシュを消去する" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "" #: FOption.class:1486 #, fuzzy msgid "Cannot download '&1'." msgstr "ファイル &1 をコピーできません。" #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1528 msgid "Unable to install documentation." msgstr "" #: FOption.class:1636 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(デフォルト)" #: FOption.class:1637 #, fuzzy msgid "Compact" msgstr "コンパイル" #: FOption.class:1652 #, fuzzy msgid "Current" msgstr "現在行" #: FOption.class:1694 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "本当にこの翻訳を削除しますか?" #: FOption.class:1796 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "本当にこのファイルを削除しますか?" #: FOption.form:294 msgid "Dotted" msgstr "" #: FOption.form:305 #, fuzzy msgid "Identity" msgstr "インデントを増やす" #: FOption.form:349 #, fuzzy msgid "Package maintainer" msgstr "パッケージ名" #: FOption.form:394 #, fuzzy msgid "Default license" msgstr "標準値" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "いいえ" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "はい" #: FOption.form:438 #, fuzzy msgid "Projects" msgstr "プロジェクト" #: FOption.form:455 msgid "Default tab size" msgstr "タブの幅" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "桁" #: FOption.form:480 msgid "Indent with tab by default" msgstr "" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:515 msgid "Fold procedures by default" msgstr "デフォルトでプロシージャを折り畳んで表示する" #: FOption.form:532 #, fuzzy msgid "Activate version control" msgstr "データバウンドコントロール" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "" #: FOption.form:561 #, fuzzy msgid "Images" msgstr "イメージ" #: FOption.form:573 msgid "Compress PNG images with " msgstr "" #: FOption.form:607 #, fuzzy msgid "Automatic translation with " msgstr "自動拡張" #: FOption.form:636 #, fuzzy msgid "Translation engine" msgstr "翻訳ファイル" #: FOption.form:645 msgid "Help & applications" msgstr "" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "ヘルプ" #: FOption.form:662 msgid "Show documentation in popups" msgstr "ポップアップにドキュメントを表示する" #: FOption.form:679 msgid "Always display optional messages" msgstr "オプションのメッセージを常に表示する" #: FOption.form:691 #, fuzzy msgid "Documentation" msgstr "保存先" #: FOption.form:702 #, fuzzy msgid "Use offline documentation" msgstr "ドキュメントのキャッシュを消去する" #: FOption.form:732 #, fuzzy msgid "Download documentation" msgstr "ドキュメントのキャッシュを消去する" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:771 msgid "Clear documentation cache" msgstr "ドキュメントのキャッシュを消去する" #: FOption.form:779 msgid "Applications" msgstr "アプリケーション" #: FOption.form:790 msgid "Browser" msgstr "ブラウザ" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "端末" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:850 msgid "Highlight current line" msgstr "現在行をハイライトする" #: FOption.form:867 msgid "Highlight modified lines" msgstr "変更した行をハイライトする" #: FOption.form:884 msgid "Show line numbers" msgstr "行番号を表示する" #: FOption.form:901 msgid "Procedure folding" msgstr "" #: FOption.form:918 msgid "Procedure separation" msgstr "プロシージャの区切り表示" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:952 #, fuzzy msgid "Show Preview" msgstr "プレビュー" #: FOption.form:970 msgid "Keywords in upper case" msgstr "キーワードを大文字で表示する" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:996 msgid "Code formatting" msgstr "" #: FOption.form:1002 msgid "Automatic formatting" msgstr "" #: FOption.form:1013 msgid "Control structure completion" msgstr "" #: FOption.form:1030 #, fuzzy msgid "Local variable declaration" msgstr "ローカル変数" #: FOption.form:1047 #, fuzzy msgid "Comments insertion" msgstr "接続" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "" #: FOption.form:1081 #, fuzzy msgid "Close strings" msgstr "文字列を無視する(I)" #: FOption.form:1093 msgid "Explicit formating" msgstr "" #: FOption.form:1104 msgid "Format on load & save" msgstr "" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "" #: FOption.form:1164 msgid "Code snippets" msgstr "コードスニペット" #: FOption.form:1180 msgid "Activate code snippets" msgstr "コードスニペットを有効にする" #: FOption.form:1241 msgid "Interface" msgstr "インターフェース" #: FOption.form:1258 #, fuzzy msgid "Activate animations" msgstr "コードスニペットを有効にする" #: FOption.form:1275 #, fuzzy msgid "Show shadows" msgstr "検索ウィンドウを表示" #: FOption.form:1292 msgid "Show tooltips" msgstr "ツールチップを表示する" #: FOption.form:1309 msgid "Use utility windows" msgstr "ユーティリティウィンドウを使用する" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1343 msgid "Show file name in window title" msgstr "" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "フォント" #: FOption.form:1444 msgid "Global size" msgstr "" #: FOption.form:1466 msgid "Title size" msgstr "" #: FOption.form:1488 #, fuzzy msgid "Debugger size" msgstr "デバッグ" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "印刷" #: FOption.form:1580 #, fuzzy msgid "Fixed font" msgstr "固定幅のフォントを使用" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1673 #, fuzzy msgid "Themes" msgstr "テーマ" #: FOption.form:1690 msgid "Icon theme" msgstr "アイコンテーマ" #: FOption.form:1706 #, fuzzy msgid "Highlighting theme" msgstr "ハイライト" #: FOption.form:1720 msgid "Import theme" msgstr "テーマをインポートします" #: FOption.form:1726 msgid "Export theme" msgstr "テーマをエクスポートします" #: FOption.form:1745 msgid "Invert colors for dark themes" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "コンソール - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "コンソールを分離します" #: FOutput.form:72 msgid "Keep above" msgstr "上記を保存" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "端末を開く(O)" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "最近のプロジェクト(R)" #: FOutput.form:130 msgid "Use system charset" msgstr "システムの文字セットを使用" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "クリップボードの内容" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "元に戻す(R)" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "'&1'の名前が変更できません。" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:160 msgid "Variable" msgstr "変数" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "誤ったスナップ値です。" #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:927 msgid "Modules" msgstr "モジュール" #: FProjectProperty.class:928 #, fuzzy msgid "Test modules" msgstr "Gambas モジュール" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "機能" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "" #: FProjectProperty.class:940 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:943 #, fuzzy msgid "Executable size" msgstr "実行ファイル(E)" #: FProjectProperty.class:943 msgid "bytes" msgstr "" #: FProjectProperty.class:960 #, fuzzy msgid "Information about component" msgstr "&1 コンポーネントの情報を読み込み中..." #: FProjectProperty.class:966 #, fuzzy msgid "Information about library" msgstr "情報" #: FProjectProperty.class:1345 #, fuzzy msgid "Select a Gambas executable" msgstr "実行ファイルを作成できません。" #: FProjectProperty.class:1346 #, fuzzy msgid "Gambas executable" msgstr "実行ファイルを作成します" #: FProjectProperty.form:273 msgid "General" msgstr "一般" #: FProjectProperty.form:328 msgid "Component" msgstr "コンポーネント" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:328 msgid "Normal" msgstr "標準" #: FProjectProperty.form:335 #, fuzzy msgid "Vendor" msgstr "ベンダー名" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "バージョン" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:380 msgid "Title" msgstr "タイトル" #: FProjectProperty.form:413 msgid "Information" msgstr "情報" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "安定版(開発完了)" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:496 #, fuzzy msgid "Include information from" msgstr "情報" #: FProjectProperty.form:508 #, fuzzy msgid "Required features" msgstr "-" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:585 #, fuzzy msgid "Require" msgstr "-" #: FProjectProperty.form:591 #, fuzzy msgid "Exclude" msgstr "除外" #: FProjectProperty.form:603 msgid "Remove All" msgstr "全て削除" #: FProjectProperty.form:610 msgid "Components" msgstr "コンポーネント" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "ライブラリ" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:697 #, fuzzy msgid "Additional references" msgstr "IDE の設定" #: FProjectProperty.form:707 msgid "Environment" msgstr "環境設定" #: FProjectProperty.form:735 msgid "&Insert" msgstr "挿入(&I)" #: FProjectProperty.form:760 msgid "Edition" msgstr "版" #: FProjectProperty.form:771 msgid "Tab size" msgstr "タブサイズ" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:807 msgid "Compilation" msgstr "コンパイル" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "デフォルトでモジュールのシンボルを PUBLIC とする" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "フォームとコントロールを PUBLIC とする" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:916 #, fuzzy msgid "Add branch to version number" msgstr "誤ったプロパティ値です。" #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "統計情報" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "この行から下は無視されます。" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "プロジェクトをコミットできません。" #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "更新" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "コントロール名に禁止文字が含まれています。" #: FProperty.class:383 msgid "This name is already in use." msgstr "この名前は既に使用されています。" #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "コントロールグループに禁止文字が含まれています。" #: FProperty.class:469 msgid "Incorrect property value." msgstr "誤ったプロパティ値です。" #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "なし" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "ソートのプロパティ" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "プロジェクトは無事作成されました。" #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "プロジェクトが保存できません。" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "誤ったプロパティ値です。" #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "本当にこの翻訳を再読み込みしますか?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "テーマファイルを選択" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "画像ファイル" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "説明" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "タブサイズ" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "変更したフィルを保存" #: FSave.form:42 msgid "Save All" msgstr "すべて保存(A)" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "次のファイルが変更されています。保存しますか?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "プロジェクトが保存できません。" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "検索文字列は1回置換されました。" #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "検索文字列は&1回置換されました。" #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "実装" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "検索と置換" #: FSearch.form:105 msgid "Case sensitive" msgstr "大文字/小文字を区別する(C)" #: FSearch.form:110 msgid "Words only" msgstr "単語単位で検索する(W)" #: FSearch.form:115 msgid "Regular expression" msgstr "正規表現を使う(X)" #: FSearch.form:120 msgid "Ignore strings" msgstr "文字列を無視する(I)" #: FSearch.form:125 msgid "Ignore comments" msgstr "コメントを無視する(G)" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "プログラムをステップアウト(現在の関数を終了)実行します" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "データ型" #: FSearch.form:197 msgid "Browse" msgstr "参照(B)" #: FSearch.form:209 msgid "Replace all" msgstr "全て置換" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "結果をハイライト表示する(H)" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:37 msgid "Image files" msgstr "" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "画像を選択" #: FSelectIcon.form:41 msgid "Stock" msgstr "ストック" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "不明" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "色を選択" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "コードスニペットの編集" #: FSnippet.class:67 msgid "New code snippet" msgstr "コードスニペットの新規作成" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "ゲーム" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "版" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "ビデオ" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "インターフェース" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "式" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:372 #, fuzzy msgid "Cancel my vote" msgstr "キャンセル" #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:559 #, fuzzy msgid "Do you really want to download &1?" msgstr "本当にこのファイルを削除しますか?" #: FSoftwareFarm.class:562 #, fuzzy msgid "Unable to download &1:" msgstr "'&1'の名前が変更できません。" #: FSoftwareFarm.class:564 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "プロジェクトは無事作成されました。" #: FSoftwareFarm.class:579 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "本当にこのファイルを削除しますか?" #: FSoftwareFarm.class:582 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "'&1'の名前が変更できません。" #: FSoftwareFarm.class:589 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "本当にこのファイルを削除しますか?" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:594 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "プロジェクトは無事作成されました。" #: FSoftwareFarm.class:600 #, fuzzy msgid "Do you really want to install &1?" msgstr "本当にこのファイルを削除しますか?" #: FSoftwareFarm.class:603 #, fuzzy msgid "Unable to install &1:" msgstr "'&1'の名前が変更できません。" #: FSoftwareFarm.class:605 #, fuzzy msgid "&1 has been successfully installed." msgstr "プロジェクトは無事作成されました。" #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:661 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "本当にこのファイルを削除しますか?" #: FSoftwareFarm.class:665 #, fuzzy msgid "Unable to remove &1:" msgstr "'&1'の名前が変更できません。" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas フォーム" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "最近のプロジェクト(R)" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "ツールチップを表示する" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "ツールチップを表示する" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "下へ" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "プロジェクトが保存できません。" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "このプロジェクトは既に存在します。" #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "プロジェクトが保存できません。" #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "本当にこの翻訳を再読み込みしますか?" #: FTestSuite.form:60 #, fuzzy msgid "New test suite" msgstr "コードスニペットの新規作成" #: FTestSuite.form:67 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:74 msgid "Rename test suite" msgstr "" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "削除" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "全て選択" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "全選択を解除" #: FTestSuite.form:145 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "リストプロパティを編集" #: FText.form:29 msgid "Use a fixed font" msgstr "固定幅のフォントを使用" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "" #: FTextEditor.class:1888 msgid "Compressed at &1" msgstr "" #: FTextEditor.form:169 #, fuzzy msgid "Sort ascent" msgstr "パス名でソートする" #: FTextEditor.form:175 msgid "Sort descent" msgstr "" #: FTextEditor.form:221 msgid "Compress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "今日の Tips が読み込めません!" #: FTips.form:66 msgid "Show tips on startup" msgstr "起動時に tips を表示" #: FToolBox.class:397 Project.module:606 #, fuzzy msgid "Current project" msgstr "現在のオブジェクト" #: FToolBox.form:58 #, fuzzy msgid "Toolbox button size" msgstr "ツールボックスサイズ" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "プロジェクトは無効です。翻訳すべき内容がありません。" #: FTranslate.class:74 msgid "Language" msgstr "言語" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "翻訳不可" #: FTranslate.class:169 msgid "Translation files" msgstr "翻訳ファイル" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "&1 用の翻訳ファイルが開けません。" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "翻訳を保存できません。" #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "本当にこの翻訳を削除しますか?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "本当にこの翻訳を再読み込みしますか?" #: FTranslate.class:800 msgid "Export a translation" msgstr "翻訳をエクスポート" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "翻訳のファイルをインポートできません。" #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "全て正しく見えます。" #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "翻訳後のシンボルが翻訳前の文字列のシンボルと一致しません。" #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1741 #, fuzzy msgid "Automatic translation has failed." msgstr "翻訳のファイルをインポートできません。" #: FTranslate.class:1753 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "本当にこの翻訳を削除しますか?" #: FTranslate.form:77 msgid "Project translation" msgstr "プロジェクトの翻訳" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "自動拡張" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "新しく翻訳を開始します" #: FTranslate.form:232 msgid "Save translation" msgstr "翻訳を保存します" #: FTranslate.form:240 msgid "Verify the translation" msgstr "翻訳をチェックします" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "次の未訳メッセージに移動します" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "前の未訳メッセージに移動します" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "前の未訳メッセージに移動します" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "次の未訳メッセージに移動します" #: FTranslate.form:340 msgid "Clear this translation" msgstr "翻訳をクリアします" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "メッセージを翻訳対象外にします" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "原文のメッセージをコピーします" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "翻訳をクリアします" #: FTranslate.form:480 msgid "Import a translation file" msgstr "翻訳をファイルからインポートします" #: FVersionControl.class:16 #, fuzzy msgid "Do you want to push the repository?" msgstr "式のリストをクリアしますか?" #: FVersionControl.class:16 msgid "Push" msgstr "" #: FVersionControl.form:51 #, fuzzy msgid "There is nothing to commit." msgstr "プロジェクトをコミットできません。" #: FVersionControl.form:81 #, fuzzy msgid "Do not push to remote repository" msgstr "リポジトリの場所を入力してください。" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "フォントを選択" #: FWelcome.class:69 msgid "New project..." msgstr "新規プロジェクト..." #: FWelcome.class:71 msgid "Recent projects" msgstr "最近のプロジェクト" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Gambas プロジェクト" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 #, fuzzy msgid "Delete software" msgstr "テーブルを削除します" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "アラビア語 (エジプト)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "アラビア語 (チュニジア)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "アゼルバイジャン語(アゼルバイジャン)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "ブルガリア (ブルガリア語)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "カタロニア語 (カタロニア、スペイン)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "ウェールズ (イギリス)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "チェコ語 (チェコ共和国)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "デンマーク語 (デンマーク)" #: Language.module:34 msgid "German (Germany)" msgstr "ドイツ語 (ドイツ)" #: Language.module:35 msgid "German (Belgium)" msgstr "ドイツ語 (ベルギー)" #: Language.module:38 msgid "Greek (Greece)" msgstr "ギリシャ語 (ギリシャ)" #: Language.module:41 msgid "English (common)" msgstr "英語 (共通)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "英語 (イギリス)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "英語 (アメリカ)" #: Language.module:44 msgid "English (Australia)" msgstr "英語 (オーストラリア)" #: Language.module:45 msgid "English (Canada)" msgstr "英語 (カナダ)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "エスペラント語(どこでも!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "英語 (共通)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "スペイン語 (スペイン)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "スペイン語 (アルゼンチン)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "エストニア語 (エストニア)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "近代ペルシャ語(イラン)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "フランス語 (フランス)" #: Language.module:69 msgid "French (Belgium)" msgstr "フランス語 (ベルギー)" #: Language.module:70 msgid "French (Canada)" msgstr "フランス語 (カナダ)" #: Language.module:71 msgid "French (Switzerland)" msgstr "フランス語 (スイス)" #: Language.module:74 msgid "Galician (Spain)" msgstr "ガリシア語 (スペイン)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "ヘブライ語 (イスラエル)" #: Language.module:80 msgid "Hindi (India)" msgstr "ヒンディー語 (インド)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "ハンガリー語 (ハンガリー)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "クロアチア (クロアチア語)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "インドネシア語 (インドネシア)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "アイルランド語 (アイルランド)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "イタリア語 (イタリア)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "日本語 (日本)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "クメール語 (カンボジア)" #: Language.module:107 msgid "Korean (Korea)" msgstr "韓国語(韓国)" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "マラヤーラム語 (インド)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "オランダ語 (オランダ)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "オランダ語 (ベルギー)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "ノルウェー語 (ノルウェー)" #: Language.module:129 msgid "Punjabi (India)" msgstr "パンジャブ語(インド)" #: Language.module:132 msgid "Polish (Poland)" msgstr "ポーランド語 (ポーランド)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "ポルトガル語 (ポルトガル)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "ポルトガル語 (ブラジル)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "ロシア語 (ロシア)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "スロベニア語 (スロベニア)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "アルバニア語 (アルバニア)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "セルビア語(セルビア・モンテネグロ)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "スウェーデン語 (スウェーデン)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "トルコ語 (トルコ)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "ベトナム語(ベトナム)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "ワロン語 (ベルギー)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "簡体字中国語 (中国)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "繁体字中国語 (台湾)" #: Language.module:220 msgid "Unknown" msgstr "不明" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "翻訳ファイル" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "ファイルを保存できません!" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "ファイルを保存できません!" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 #, fuzzy msgid "Component name must be a string" msgstr "コンポーネントプログラムを作成" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "コンポーネントが見つかりません: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "ファイルは既に存在します" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "無効な日付" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "パスが間違っています" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "読み取りエラー" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "読み込み専用" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "スタックオーバーフロー" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "構文エラー" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "システムエラー #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 #, fuzzy msgid "Too many local variables" msgstr "ローカル変数" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "未知のエラー" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "未知のエラー" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "書き込みエラー" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:1006 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "このプロジェクトは存在しません。" #: MMime.module:17 msgid "Plain text" msgstr "普通の文字列" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "背面に移動します" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "コメント" #: MTheme.module:6 msgid "Current line" msgstr "現在行" #: MTheme.module:6 msgid "Data types" msgstr "データ型" #: MTheme.module:6 msgid "Editing line" msgstr "編集行" #: MTheme.module:6 msgid "Errors" msgstr "エラー" #: MTheme.module:6 msgid "Highlighting" msgstr "ハイライト" #: MTheme.module:6 msgid "Keywords" msgstr "キーワード" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "通常のテキスト" #: MTheme.module:6 msgid "Numbers" msgstr "数字" #: MTheme.module:6 msgid "Operators" msgstr "演算子" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "文字列" #: MTheme.module:6 msgid "Subroutines" msgstr "サブルーチン" #: MTheme.module:6 msgid "Symbols" msgstr "シンボル" #: Package.module:83 msgid "'&1' is missing." msgstr "" #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "CHANGELOG を保存中。" #: Package.module:735 msgid "Making &1 support package..." msgstr "" #: Package.module:790 msgid "Creating package for &1." msgstr "&1 用パッケージを作成中。" #: Package.module:822 msgid "The package build has failed." msgstr "パッケージのビルドに失敗しました。" #: Package.module:894 msgid "Making build directory." msgstr "ビルド用のフォルダを作成。" #: Package.module:953 msgid "Creating desktop file..." msgstr "デスクトップファイルの作成中..." #: Package.module:961 msgid "Sources are being debianizated." msgstr "ソースを Debian 向けに変換中です。" #: Package.module:1168 msgid "Creating package..." msgstr "パッケージの作成中..." #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' コマンドが失敗しました。" #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "~/RPM フォルダを初期化中。" #: Package.module:1476 msgid "Creating source package." msgstr "ソースパッケージを作成中。" #: Package.module:1500 msgid "Creating .spec file." msgstr ".spec ファイルを作成中。" #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' コマンドが次のエラーを返しました:" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "'tar' コマンドが次のエラーを返しました:" #: Package.module:2442 #, fuzzy msgid "'makepkg' has failed." msgstr "'dpkg-buildpackage' コマンドが失敗しました。" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:231 msgid "Automation" msgstr "自動処理" #: Project.module:232 msgid "Basic" msgstr "基本" #: Project.module:234 msgid "Drawing" msgstr "描画" #: Project.module:237 msgid "Miscellaneous" msgstr "その他" #: Project.module:238 msgid "Networking" msgstr "ネットワーク" #: Project.module:239 msgid "OpenGL" msgstr "-" #: Project.module:241 msgid "Sound" msgstr "サウンド" #: Project.module:243 msgid "Controls" msgstr "コントロール" #: Project.module:244 msgid "Multimedia" msgstr "" #: Project.module:245 msgid "Web" msgstr "" #: Project.module:422 msgid "File not found!" msgstr "" #: Project.module:534 msgid "This project does not exist." msgstr "このプロジェクトは存在しません。" #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:565 msgid "This is not a Gambas project." msgstr "" #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:571 msgid "Convert" msgstr "" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:589 msgid "Do not open" msgstr "開かない" #: Project.module:589 msgid "Open after all" msgstr "とにかく開く" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "プロジェクトは既に開かれているようです。\n" "\n" "同じプロジェクトを同時に複数開くとデータを破壊する恐れがあります。" #: Project.module:595 msgid "It cannot be converted." msgstr "" #: Project.module:595 msgid "This project is read-only." msgstr "このプロジェクトは読み込み専用です。" #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:616 msgid "Unable to create temporary directory" msgstr "" #: Project.module:646 msgid "Converting project structure..." msgstr "" #: Project.module:679 msgid "Applying conversion..." msgstr "" #: Project.module:685 msgid "Unable to apply conversion" msgstr "" #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:824 #, fuzzy msgid "Cannot open project file :" msgstr "プロジェクトファイルを開けません :\n" #: Project.module:876 #, fuzzy msgid "Cannot reload file." msgstr "ファイルを追加できません。" #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "" #: Project.module:2079 msgid "Cannot open file." msgstr "ファイルを開けません。" #: Project.module:2237 msgid "&1th" msgstr "" #: Project.module:2290 msgid "in form definition" msgstr "フォーム定義において" #: Project.module:2297 msgid "in &1." msgstr "" #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2462 msgid "Compiling project" msgstr "プロジェクトをコンパイル中" #: Project.module:2720 msgid "File already exists." msgstr "ファイルは既に存在します。" #: Project.module:2753 msgid "Directory already exists." msgstr "フォルダは既に存在します。" #: Project.module:2765 msgid "Cannot link template file." msgstr "" #: Project.module:2771 msgid "Cannot copy template file." msgstr "テンプレートファイルをコピーできません。" #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2999 #, fuzzy msgid "Cannot install library in &1." msgstr "&1 のリンクを作成できません。" #: Project.module:3041 msgid "Making executable..." msgstr "実行ファイルを作成中..." #: Project.module:3099 msgid "Cannot make executable." msgstr "実行ファイルを作成できません。" #: Project.module:3555 msgid "Some components are missing: &1" msgstr "いくつかのコンポーネントが見つかりません: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "プロジェクトファイルを書き込めません。" #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "デスクトップのショートカットが作成できません。" #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "次のコミットでフォルダは削除されます。" #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "スタートアップのクラスまたはフォームを定義してください!" #: Project.module:4120 msgid "Please type a name." msgstr "名前を入力してください。" #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "名前に使用できない文字が含まれています。" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "この名前は既に使用されています。別の名前を選んでください。" #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "クラス名は必ず英字またはアンダースコアから始まる必要があります。" #: Project.module:4211 msgid "Destination already exists." msgstr "" #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "'&1'の名前が変更できません。" #: Project.module:4480 msgid "Please type a project name." msgstr "プロジェクト名を入力してください" #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "プロジェクト名は . (ドット)で始められません。" #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "ASCII 以外の文字はプロジェクト名に使用できません。" #: Project.module:4492 msgid "SPACE" msgstr "" #: Project.module:4492 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "次の文字はプロジェクト名に使用できません: ? * / \\ SPACE" #: Project.module:4499 msgid "This project already exists." msgstr "このプロジェクトは既に存在します。" #: Project.module:4502 msgid "The project directory already exists." msgstr "プロジェクトフォルダは既に存在しています。" #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "同じ名前のファイルが既にあるため、プロジェクトフォルダを作成できません。" #: Project.module:4552 msgid "Unable to create source archive." msgstr "" #: Project.module:4579 msgid "Create source package" msgstr "ソースアーカイブを作成" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "ファイル &1 をコピーできません。" #: Project.module:4914 msgid "Cannot create link &1." msgstr "&1 のリンクを作成できません。" #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "フォルダをそれ自身の中には移動できません。" #: Project.module:4993 msgid "Cannot move file &1." msgstr "ファイル &1 を移動できません。" #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5686 msgid "Project cleanup..." msgstr "" #: Project.module:5692 msgid "Project files conversion..." msgstr "" #: Project.module:5722 msgid "Unable to convert &1" msgstr "" #: Project.module:6002 #, fuzzy msgid "Unable to update forms." msgstr "プロジェクトが保存できません。" #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6186 #, fuzzy msgid "Unable to read component description file." msgstr "コンポーネントの説明ファイルに書き込めません。" #: Project.module:6247 msgid "Cannot write component description file." msgstr "コンポーネントの説明ファイルに書き込めません。" #: Project.module:6308 #, fuzzy msgid "Project templates" msgstr "プロジェクトのプロパティ" #: Project.module:6354 #, fuzzy msgid "Unable to run terminal." msgstr "'&1'の名前が変更できません。" #: Save.module:57 msgid "Cannot save file !" msgstr "ファイルを保存できません!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:139 msgid "Command timeout." msgstr "" #: VersionControl.module:139 #, fuzzy msgid "Please check your network connection." msgstr "メニューの場所を選択してください。" #: VersionControl.module:521 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "本当にこのフォルダを削除しますか?" #: VersionControl.module:535 #, fuzzy msgid "The project could not be put under version control." msgstr "プロジェクトをコミットできません。" #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:642 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 #, fuzzy msgid "This page does not exist in that language." msgstr "このプロジェクトは存在しません。" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "このプロジェクトは存在しません。" #: WikiMarkdown.class:174 #, fuzzy msgid "This class does not exist." msgstr "このプロジェクトは存在しません。" #: WikiMarkdown.class:187 #, fuzzy msgid "This symbol does not exist." msgstr "このプロジェクトは存在しません。" #~ msgid "GTK+ SVG renderer" #~ msgstr "GTK+ SVG レンダラ" #~ msgid "OpenLDAP client" #~ msgstr "OpenLDAP クライアント" #~ msgid "Thanks to" #~ msgstr "謝辞" #~ msgid "About Gambas..." #~ msgstr "Gambas について.." #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "

Authors

\n" #~ msgstr "

作者

\n" #~ msgid "Details" #~ msgstr "詳細" #~ msgid "Existing" #~ msgstr "ファイルを開く" #~ msgid "QT graphical application" #~ msgstr "QT グラフィカルアプリケーション" #~ msgid "GTK+ graphical application" #~ msgstr "GTK+ グラフィカルアプリケーション" #~ msgid "Command-line application" #~ msgstr "コマンドラインアプリケーション" #~ msgid "SDL application" #~ msgstr "SDL アプリケーション" #~ msgid "CGI Web application" #~ msgstr "CGI ウェブアプリケーション" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "" #~ "SVN リポジトリに格納された\n" #~ "アプリケーション" #~ msgid "Internationalization" #~ msgstr "翻訳可能" #~ msgid "Regular expressions" #~ msgstr "正規表現を使用" #~ msgid "XML / XSLT programming" #~ msgstr "XML / XSLT を使用" #~ msgid "OpenGL programming" #~ msgstr "OpenGL を使用" #~ msgid "Image processing" #~ msgstr "イメージ処理を使用" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Visual Basic からの変換をサポート" #~ msgid "Dynamic variables" #~ msgstr "動的変数" #~ msgid "Remove current breakpoint" #~ msgstr "現在行のブレークポイントを削除" #~ msgid "Stack backtrace" #~ msgstr "スタックのバックトレース" #~ msgid "Versioning" #~ msgstr "バージョン管理" #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "フォームは変更されました。\n" #~ "\n" #~ "全ての変更は失われます。" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "フォームをクリックしてコントロールの階層ツリーを表示..." #~ msgid "Messages" #~ msgstr "メッセージ" #~ msgid "Lines of code: &1" #~ msgstr "コードの行数: &1" #~ msgid "Picture" #~ msgstr "画像" #~ msgid "Text file" #~ msgstr "テキストファイル" #~ msgid "CSS file" #~ msgstr "CSS ファイル" #~ msgid "XML file" #~ msgstr "XML ファイル" #~ msgid "ChangeLog" #~ msgstr "ChangeLog" #~ msgid "Last modified" #~ msgstr "最終更新日時" #~ msgid "Component properties" #~ msgstr "コンポーネントのプロパティ" #~ msgid "Browse project..." #~ msgstr "プロジェクトを参照..." #~ msgid "Prefix package name with the vendor name" #~ msgstr "ベンダー名をパッケージ名の頭に付ける" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "必要な情報は全て集まりました。あなたのアプリケーションのインストール用パッケージが作成できます。\n" #~ "

パッケージを作成する場合は OK ボタンを押してください。\n" #~ "

戻って修正する場合は 前へ ボタンを押してください。\n" #~ "

キャンセルする場合は キャンセル ボタンを押してください。\n" #~ "\n" #~ msgid "Next menu" #~ msgstr "次のメニューに移動します" #~ msgid "Select a theme" #~ msgstr "テーマを選択" #~ msgid "Background color" #~ msgstr "背景色" #~ msgid "Blend" #~ msgstr "グラデーション" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Gambas コンソールへようこそ。\n" #~ " 式を評価する場合は、'?'の後に式を入力して\n" #~ "リターンキーを押してください。\n" #~ "\n" #~ msgid "Author(s)" #~ msgstr "作者" #~ msgid "Environment variables" #~ msgstr "環境変数" #~ msgid "Show only components used in project" #~ msgstr "プロジェクトで使用しているコンポーネントのみを表示" #~ msgid "Component advancement" #~ msgstr "コンポーネントの開発状況" #~ msgid "Edit text property" #~ msgstr "テキストプロパティを編集" #~ msgid "Open project..." #~ msgstr "プロジェクトを開く..." #~ msgid "Loading &1..." #~ msgstr "&1 を読み込み中..." #~ msgid "Arguments" #~ msgstr "引数" #~ msgid "Quiet external commands" #~ msgstr "外部コマンドの出力を抑制する" #~ msgid "Minimize at runtime" #~ msgstr "実行時に最小化する" #~ msgid "Small" #~ msgstr "小" #~ msgid "Define..." #~ msgstr "設定..." #, fuzzy #~ msgid "No argument" #~ msgstr "引数" gambas-3.16.3/app/src/gambas3/.lang/ko.po000066400000000000000000004456411411575327000177150ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2021-03-28 16:17 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 #, fuzzy msgid "Static properties" msgstr "속성" #: CClassInfo.class:616 msgid "Static variables" msgstr "" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "속성" #: CClassInfo.class:636 msgid "Variables" msgstr "" #: CClassInfo.class:637 msgid "Methods" msgstr "" #: CClassInfo.class:638 msgid "Events" msgstr "" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "" #: CClassInfo.class:681 msgid "creatable" msgstr "" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:694 msgid "function" msgstr "" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "" #: CClassInfo.class:699 msgid "write" msgstr "" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "읽기 전용" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 #, fuzzy msgid "static function" msgstr "대상" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:151 msgid "Loading information on project..." msgstr "" #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "클래스" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "클래스" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "설명" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "" #: CComponent.class:600 msgid "This component is deprecated." msgstr "" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "작성자" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "저작자" #: CComponent.class:621 msgid "Implements" msgstr "" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:648 msgid "Excludes" msgstr "" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "Terminal emulator" msgstr "터미널" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:137 msgid "Report designer" msgstr "" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "구성 요소" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:144 msgid "Application settings management" msgstr "" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "정렬" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "구성 요소" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "구성 요소" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "형식" #: CModule.class:29 msgid "Forms" msgstr "" #: CModule.class:29 msgid "Gambas forms" msgstr "" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 msgid "Gambas web forms" msgstr "" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "형식" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "형식" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "형식" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "형식" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "취소" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "" #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "프로젝트" #: CProjectTree.class:373 msgid "Sources" msgstr "소스" #: CProjectTree.class:375 msgid "Connections" msgstr "연결" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "데이터" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "오늘" #: CRecentProject.class:70 msgid "Yesterday" msgstr "어제" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:396 msgid "Unable to make executable." msgstr "" #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "" #: CSoftware.class:664 #, fuzzy msgid "yesterday" msgstr "어제" #: CSoftware.class:666 msgid "&1 days ago" msgstr "" #: CSoftware.class:672 msgid "last week" msgstr "" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 msgid "last month" msgstr "" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 msgid "on &1" msgstr "" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "" #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "" #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "" #: CVersionControlGit.class:394 #, fuzzy msgid "Status" msgstr "통계" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 #, fuzzy msgid "Remote repository URL" msgstr "저장소" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "확인" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "날짜" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "" #: Design.module:229 Project.module:2325 msgid "second" msgstr "" #: Design.module:231 Project.module:2327 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 msgid "The program has been terminated." msgstr "" #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" #: Design.module:753 msgid "The project has no test module." msgstr "" #: Design.module:1064 msgid "Output terminal" msgstr "" #: Design.module:1092 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "인자" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "초기화(R)" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "실행" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "닫기" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "색" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "시스템" #: FColorChooser.form:40 msgid "Free" msgstr "남은 공간" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "실험적" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "전체 제거" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "새로 고침" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "확대" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "축소" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "편집(&E)" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "텍스트" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "이미지" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "잘라내기" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "복사" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "붙여넣기" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "실행 취소" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "다시 실행" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "열기" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "저장" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "설명" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "모두 선택(A)" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "보기" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "줄 끝" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "코드" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "이전(P)" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "이름" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "유형" #: FConnectionEditor.class:61 msgid "Length" msgstr "길이" #: FConnectionEditor.class:66 msgid "Default value" msgstr "기본값" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "연결" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "영역" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:722 Project.module:2643 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "무제한" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "떠다님" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "길게" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "직렬" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "문자열" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "삭제" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "이름 바꾸기(R)" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "가져오기" #: FConnectionEditor.form:217 msgid "Run query" msgstr "" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "새로운 메일" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "삭제" #: FConnectionEditor.form:309 msgid "Fields" msgstr "" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "추가" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "아래" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "위로" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "" #: FConnectionEditor.form:389 msgid "New index" msgstr "" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "내보내기(E)" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "삭제" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "설정" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "너비" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "높이" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "" #: FCreateProject.form:46 msgid "Project type" msgstr "" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "디렉터리" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "프로젝트" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "저장소" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "디버깅" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "콘솔" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "값" #: FDebugExpr.class:511 msgid "Key" msgstr "키" #: FDebugExpr.class:517 msgid "Symbol" msgstr "표시" #: FDebugExpr.form:33 msgid "Watch" msgstr "" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "라인 입력" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "함수" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "파일" #: FDebugInfo.class:53 msgid "Col." msgstr "" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:125 msgid "native code" msgstr "" #: FDebugInfo.class:205 msgid "Watch expressions" msgstr "" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1255 msgid "Current object" msgstr "" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1568 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "디버그" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:137 msgid "Add expression" msgstr "" #: FDebugInfo.form:210 msgid "Remove breakpoint" msgstr "" #: FDebugInfo.form:218 msgid "Disable breakpoint" msgstr "" #: FDebugInfo.form:220 #, fuzzy msgid "Disable" msgstr "표" #: FDebugInfo.form:226 msgid "Enable breakpoint" msgstr "" #: FDebugInfo.form:228 #, fuzzy msgid "Enable" msgstr "표" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "쓰기(C)" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:474 msgid "Show search window" msgstr "" #: FDebugInfo.form:481 msgid "Search again" msgstr "" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "" #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "열: %1" #: FEditor.class:411 msgid "Overwrite" msgstr "" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "" #: FEditor.form:202 msgid "Sort procedures" msgstr "" #: FEditor.form:232 msgid "Go to" msgstr "" #: FEditor.form:251 msgid "Find definition" msgstr "" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "" #: FEditor.form:322 msgid "Watch expression" msgstr "" #: FEditor.form:331 msgid "Open form" msgstr "" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "인쇄" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "편집기" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "풍선 도움말 보이기" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 #, fuzzy msgid "Previous modification" msgstr "이전(P)" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "사용자" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "암호:" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "비밀번호 기억" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "" #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "비밀번호 기억" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "연결" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "표" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "계속" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "변경 사항" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "디렉터리" #: FFileInfoVC.form:64 #, fuzzy msgid "Undo changes" msgstr "변경 사항" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "속성" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:136 msgid "Bad form file" msgstr "" #: FForm.class:284 #, fuzzy msgid "Unknown control: &1" msgstr "알 수 없는 오류" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "" #: FForm.class:1923 msgid "Cannot paste data." msgstr "" #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "구분:" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "선택" #: FForm.form:245 msgid "Arrangement" msgstr "정렬" #: FForm.form:249 msgid "Bring to foreground" msgstr "" #: FForm.form:256 msgid "Send to background" msgstr "" #: FForm.form:266 msgid "Horizontal" msgstr "지평면" #: FForm.form:273 msgid "Rows" msgstr "행" #: FForm.form:279 msgid "Vertical" msgstr "수직" #: FForm.form:286 msgid "Columns" msgstr "열: %1" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "" #: FForm.form:311 msgid "Align to left" msgstr "" #: FForm.form:317 msgid "Align to right" msgstr "" #: FForm.form:323 msgid "Align to top" msgstr "" #: FForm.form:329 msgid "Align to bottom" msgstr "" #: FForm.form:338 msgid "Same width" msgstr "" #: FForm.form:344 msgid "Same height" msgstr "" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "이전(P)" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "다음(N)" #: FForm.form:387 msgid "Last" msgstr "" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "" #: FForm.form:407 msgid "Event" msgstr "이벤트" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "굵게" #: FForm.form:786 msgid "Italic" msgstr "기울임꼴" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "밑줄" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "배경" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "위로 이동" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "아래로 이동" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "뒤로 가기" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "앞으로 가기" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 #, fuzzy msgid "Debugger" msgstr "디버그" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "번역" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "선택" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "환경 설정" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "선택" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "직사각형" #: FImageEditor.form:608 msgid "Ellipse" msgstr "타원" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "픽셀" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 #, fuzzy msgid "Colorize" msgstr "색" #: FImageProperty.form:400 msgid "Desaturate" msgstr "" #: FImageProperty.form:408 msgid "Make transparent" msgstr "" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "라인 입력" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "라인 입력" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "크기" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "번역" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "미리 보기" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 #, fuzzy msgid "Right align" msgstr "강조" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "" #: FImportFile.class:23 msgid "Gambas modules" msgstr "" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "" #: FImportFile.class:188 msgid "Cannot import file." msgstr "" #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "가져오기" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "모든 파일" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "원본" #: FImportTable.form:78 msgid "Charset" msgstr "문자 인코딩" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "대상" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "" #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "파일이 이미 존재함" #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "저장" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:773 msgid "Sort history" msgstr "" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "" #: FMain.class:789 msgid "&Clear history" msgstr "" #: FMain.class:969 msgid "New folder" msgstr "" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1904 msgid "Clean" msgstr "깨끗함" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "프로젝트 열기" #: FMain.form:313 msgid "Open recent" msgstr "" #: FMain.form:321 msgid "Open example" msgstr "" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "프로젝트 열기" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "종료" #: FMain.form:402 Project.module:6969 #, fuzzy msgid "Save as" msgstr "저장" #: FMain.form:442 msgid "Compile" msgstr "" #: FMain.form:449 msgid "Compile All" msgstr "" #: FMain.form:459 msgid "Translate" msgstr "번역" #: FMain.form:468 msgid "Make" msgstr "메이커" #: FMain.form:472 msgid "Executable" msgstr "" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "" #: FMain.form:486 msgid "Installation package" msgstr "" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:570 msgid "Refresh" msgstr "새로고침(R)" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "일시 정지" #: FMain.form:630 msgid "Stop" msgstr "정지" #: FMain.form:637 msgid "Step" msgstr "단계" #: FMain.form:644 msgid "Forward" msgstr "전달(&f):" #: FMain.form:651 msgid "Finish" msgstr "" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 msgid "Show database requests" msgstr "" #: FMain.form:709 FProjectProperty.form:164 #, fuzzy msgid "GUI component" msgstr "구성 요소" #: FMain.form:713 msgid "Current desktop" msgstr "" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "" #: FMain.form:770 msgid "Close all debug windows" msgstr "" #: FMain.form:808 msgid "Status bar" msgstr "" #: FMain.form:815 msgid "Hide menubar" msgstr "" #: FMain.form:839 msgid "Close all windows" msgstr "" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "찾기" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "바꾸기" #: FMain.form:866 msgid "Browse project" msgstr "" #: FMain.form:873 msgid "Open a terminal" msgstr "" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "바로 가기" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "환경 설정" #: FMain.form:924 msgid "Directory" msgstr "디렉터리" #: FMain.form:929 msgid "Project link" msgstr "" #: FMain.form:938 msgid "Module" msgstr "" #: FMain.form:945 msgid "Test module" msgstr "" #: FMain.form:1004 msgid "HTML file" msgstr "" #: FMain.form:1011 msgid "Style sheet" msgstr "" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "기타(O)" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "최근" #: FMain.form:1059 msgid "Open in file manager" msgstr "" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "프로젝트 열기" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "" #: FMain.form:1132 msgid "Startup class" msgstr "" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "" #: FMain.form:1165 msgid "Show modified files" msgstr "" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 msgid "Show untranslatable files" msgstr "" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "풍선 도움말 보이기" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "번역" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 msgid "Compress file into the executable" msgstr "" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "" #: FMain.form:1429 msgid "Refresh project" msgstr "" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "" #: FMain.form:1471 msgid "Make source archive" msgstr "" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "" #: FMain.form:1500 msgid "Properties sheet" msgstr "" #: FMain.form:1509 msgid "Toolbox" msgstr "" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "" #: FMain.form:1551 msgid "Compile all" msgstr "" #: FMain.form:1600 msgid "Finish current function" msgstr "" #: FMain.form:1616 msgid "Show menubar" msgstr "" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "파일(&F)" #: FMain.form:1730 msgid "&Project" msgstr "프로젝트(&P)" #: FMain.form:1742 msgid "&Debug" msgstr "디버그(&D)" #: FMain.form:1754 msgid "&View" msgstr "보기(&V)" #: FMain.form:1766 msgid "&Tools" msgstr "도구(&T)" #: FMain.form:1778 msgid "&?" msgstr "" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 msgid "Show project tree" msgstr "" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "속성" #: FMain.form:1987 msgid "Show property help" msgstr "" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "풍선 도움말 보이기" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "패키지" #: FMakeInstall.class:137 msgid "Min. version" msgstr "" #: FMakeInstall.class:138 msgid "Max. version" msgstr "" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "" #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "" #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "" #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "" #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "" #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "" #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:558 msgid "Initial release" msgstr "" #: FMakeInstall.class:814 msgid "Menus" msgstr "" #: FMakeInstall.class:882 msgid "Groups" msgstr "그룹" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "변경 기록" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "분류" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 msgid "Create package now" msgstr "" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "" #: FMenu.class:346 msgid "Bad menu name !" msgstr "" #: FMenu.class:352 msgid "Bad group name !" msgstr "" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "수정됨" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 msgid "Insert separator" msgstr "" #: FMenu.form:104 msgid "Insert menu before" msgstr "" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "삽입(&I)" #: FMenu.form:113 #, fuzzy msgid "Delete menu" msgstr "삭제" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "삽입(&I)" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "" #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "데이타베이스" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "데이타베이스" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "호스트" #: FNewConnection.form:124 msgid "Path" msgstr "경로" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "암호:" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "데이타베이스" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "예제" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "붙여넣기" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "시각 효과" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(기본값)" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "데스크톱 " #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(기본값)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:267 msgid "Export a theme file" msgstr "" #: FOption.class:498 msgid "Select a theme file" msgstr "" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1224 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 msgid "Network is not available." msgstr "" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 msgid "Cannot download '&1'." msgstr "" #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1549 msgid "Unable to install documentation." msgstr "" #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "구성 요소" #: FOption.class:1674 msgid "Current" msgstr "" #: FOption.class:1716 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1814 msgid "Do you really want to delete that layout?" msgstr "" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 msgid "Identity" msgstr "" #: FOption.form:350 msgid "Package maintainer" msgstr "" #: FOption.form:395 #, fuzzy msgid "Default license" msgstr "기본값" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "아니오" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "예" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "프로젝트" #: FOption.form:456 msgid "Default tab size" msgstr "" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 msgid "Activate version control" msgstr "" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "" #: FOption.form:556 msgid "Number of background jobs" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "이미지" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 msgid "Automatic translation with " msgstr "" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "번역" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "도움말" #: FOption.form:670 msgid "Show documentation in popups" msgstr "" #: FOption.form:687 msgid "Always display optional messages" msgstr "" #: FOption.form:699 #, fuzzy msgid "Documentation" msgstr "대상" #: FOption.form:710 msgid "Use offline documentation" msgstr "" #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "" #: FOption.form:787 msgid "Applications" msgstr "프로그램" #: FOption.form:798 msgid "Browser" msgstr "" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "터미널" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "" #: FOption.form:875 msgid "Highlight modified lines" msgstr "" #: FOption.form:892 msgid "Show line numbers" msgstr "" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:960 #, fuzzy msgid "Show Preview" msgstr "미리 보기" #: FOption.form:978 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Code formatting" msgstr "" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 msgid "Control structure completion" msgstr "" #: FOption.form:1021 msgid "Local variable declaration" msgstr "" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "연결" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "문자열" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "" #: FOption.form:1155 msgid "Code snippets" msgstr "" #: FOption.form:1171 msgid "Activate code snippets" msgstr "" #: FOption.form:1232 msgid "Interface" msgstr "인터페이스" #: FOption.form:1249 msgid "Activate animations" msgstr "" #: FOption.form:1266 msgid "Show shadows" msgstr "" #: FOption.form:1283 msgid "Show tooltips" msgstr "풍선 도움말 보이기" #: FOption.form:1300 msgid "Use utility windows" msgstr "" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 #, fuzzy msgid "Message style" msgstr "메시지" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 #, fuzzy msgid "Debugger size" msgstr "디버깅" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "인쇄하는 중" #: FOption.form:1588 msgid "Fixed font" msgstr "" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 #, fuzzy msgid "Themes" msgstr "테마" #: FOption.form:1698 msgid "Icon theme" msgstr "" #: FOption.form:1714 #, fuzzy msgid "Highlighting theme" msgstr "강조" #: FOption.form:1728 msgid "Import theme" msgstr "" #: FOption.form:1734 msgid "Export theme" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "프로젝트 열기" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "프로젝트" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "미리 보기" #: FProjectEditor.form:86 #, fuzzy msgid "Detailed view" msgstr "자세한 정보" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "속성" #: FProjectProperty.class:55 msgid "Variable" msgstr "변수" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "" #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:1000 msgid "Modules" msgstr "모듈" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "모듈" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "함수" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:1016 msgid "Executable size" msgstr "" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "" #: FProjectProperty.class:1039 #, fuzzy msgid "Information about library" msgstr "정보" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1420 msgid "Gambas executable" msgstr "" #: FProjectProperty.form:250 msgid "JIT compiler" msgstr "" #: FProjectProperty.form:300 msgid "General" msgstr "일반" #: FProjectProperty.form:366 msgid "Component" msgstr "구성 요소" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "보통" #: FProjectProperty.form:373 msgid "Vendor" msgstr "" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "버전" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:418 msgid "Title" msgstr "제목" #: FProjectProperty.form:452 msgid "Information" msgstr "정보" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 #, fuzzy msgid "Include information from" msgstr "정보" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 msgid "Exclude" msgstr "" #: FProjectProperty.form:642 msgid "Remove All" msgstr "모두 제거" #: FProjectProperty.form:649 msgid "Components" msgstr "구성 요소" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "환경 설정" #: FProjectProperty.form:748 msgid "Environment" msgstr "" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "" #: FProjectProperty.form:827 msgid "Tab size" msgstr "" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "통계" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "업데이트" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "" #: FProperty.class:383 msgid "This name is already in use." msgstr "" #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "" #: FProperty.class:469 msgid "Incorrect property value." msgstr "" #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "없음" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "" #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 msgid "Incorrect version number." msgstr "" #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "" #: FPublish.class:329 msgid "Screenshot files" msgstr "" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "설명" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr "" #: FSave.form:43 msgid "Save All" msgstr "모두 저장하기(A)" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "" #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "" #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "대소문자 구분" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "대상" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "모든 파일" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "강조" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:40 msgid "Image files" msgstr "" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "" #: FSelectIcon.form:45 msgid "Stock" msgstr "" #: FSelectIcon.form:73 #, fuzzy msgid "Size preview" msgstr "미리 보기" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "알 수 없음" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "모두 선택(A)" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "게임" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "함수" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "비디오" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "인터페이스" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "취소" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "" #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "" #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "풍선 도움말 보이기" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "풍선 도움말 보이기" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "아래" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 msgid "Unable to load test suites." msgstr "" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "파일이 이미 존재함" #: FTestSuite.class:394 msgid "Unable to save test suites." msgstr "" #: FTestSuite.class:404 msgid "Do you really want to remove this test suite?" msgstr "" #: FTestSuite.form:63 msgid "New test suite" msgstr "" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "삭제" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "모두 선택(A)" #: FTestSuite.form:124 msgid "Unselect all tests" msgstr "" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 msgid "Edit '&1' property" msgstr "" #: FText.form:29 msgid "Use a fixed font" msgstr "" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "기본값" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "예제" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "미리 보기" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "" #: FTips.form:70 msgid "Show tips on startup" msgstr "" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "계속" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 msgid "Network" msgstr "" #: FToolBox.class:36 msgid "Special" msgstr "" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "프로젝트 열기" #: FToolBox.form:34 msgid "Button size" msgstr "" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "작음" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 msgid "Deprecated controls" msgstr "" #: FToolBox.form:112 msgid "Change button size" msgstr "" #: FToolBox.form:120 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "" #: FTranslate.class:74 msgid "Language" msgstr "언어" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "번역" #: FTranslate.class:169 msgid "Translation files" msgstr "" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "" #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "" #: FTranslate.class:802 msgid "Export a translation" msgstr "" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "" #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "" #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "" #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1745 msgid "Automatic translation has failed." msgstr "" #: FTranslate.class:1757 msgid "Do you want to fill the translation automatically?" msgstr "" #: FTranslate.form:77 msgid "Project translation" msgstr "" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "번역" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "번역" #: FTranslate.form:232 msgid "Save translation" msgstr "" #: FTranslate.form:240 msgid "Verify the translation" msgstr "" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 msgid "Find next translated string" msgstr "" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "" #: FTranslate.form:340 msgid "Clear this translation" msgstr "" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "" #: FTranslate.form:480 msgid "Import a translation file" msgstr "" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "번역" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "선택" #: FWelcome.class:69 msgid "New project..." msgstr "" #: FWelcome.class:71 msgid "Recent projects" msgstr "" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "프로젝트" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "아랍어 (이집트)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "아랍어 (튀니지)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "불가리아어 (불가리아)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "웨일즈어 (영국)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "체코어 (체코 공화국)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "덴마크어 (덴마크)" #: Language.module:34 msgid "German (Germany)" msgstr "독일어 (독일)" #: Language.module:35 msgid "German (Belgium)" msgstr "" #: Language.module:38 msgid "Greek (Greece)" msgstr "그리스어 (그리스)" #: Language.module:41 msgid "English (common)" msgstr "" #: Language.module:42 msgid "English (United Kingdom)" msgstr "영어 (영국)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "" #: Language.module:44 msgid "English (Australia)" msgstr "영어 (오스트레일리아)" #: Language.module:45 msgid "English (Canada)" msgstr "영어 (캐나다)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "스페인어 (스페인)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "스페인어 (스페인)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "스페인어 (아르헨티나)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "에스토니아어 (에스토니아)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "프랑스어 (프랑스)" #: Language.module:69 msgid "French (Belgium)" msgstr "프랑스어 (벨기에)" #: Language.module:70 msgid "French (Canada)" msgstr "프랑스어 (캐나다)" #: Language.module:71 msgid "French (Switzerland)" msgstr "프랑스어 (스위스)" #: Language.module:74 msgid "Galician (Spain)" msgstr "" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "히브리어 (이스라엘)" #: Language.module:80 msgid "Hindi (India)" msgstr "힌디어 (인도)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "헝가리어 (헝가리)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "크로아티아어 (크로아티아)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "" #: Language.module:92 msgid "Irish (Ireland)" msgstr "아일랜드어 (아일랜드)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "이탈리아어 (이탈리아)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "일본어 (일본)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "크메르어 (캄보디아)" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "말라얄람어 (인도)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "네덜란드어 (네덜란드)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "네덜란드어 (벨기에)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "" #: Language.module:129 msgid "Punjabi (India)" msgstr "펀자브어 (인도)" #: Language.module:132 msgid "Polish (Poland)" msgstr "폴란드어 (폴란드)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "포르투갈어 (포르투갈)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "포르투갈어 (브라질)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "러시아어 (러시아)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "슬로베니아어 (슬로베니아)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "알바니아어 (알바니아)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "스웨덴어 (스웨덴)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "터키어 (터키)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "베트남어 (베트남)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "" #: Language.module:220 msgid "Unknown" msgstr "알 수 없음" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "파일이 이미 존재함" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "올바르지 않은 경로" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "읽기 전용" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "스택 오버플로우" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "구문 오류" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "알 수 없는 오류" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "알 수 없는 오류" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "배경" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "설명" #: MTheme.module:6 msgid "Current line" msgstr "" #: MTheme.module:6 msgid "Data types" msgstr "" #: MTheme.module:6 msgid "Editing line" msgstr "" #: MTheme.module:6 msgid "Errors" msgstr "오류" #: MTheme.module:6 msgid "Highlighting" msgstr "강조" #: MTheme.module:6 msgid "Keywords" msgstr "키워드" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "일반 텍스트" #: MTheme.module:6 msgid "Numbers" msgstr "" #: MTheme.module:6 msgid "Operators" msgstr "" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "문자열" #: MTheme.module:6 msgid "Subroutines" msgstr "서브루틴" #: MTheme.module:6 msgid "Symbols" msgstr "기호 목록" #: Package.module:85 msgid "'&1' is missing." msgstr "" #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "" #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "" #: Package.module:830 msgid "The package build has failed." msgstr "" #: Package.module:903 msgid "Making build directory." msgstr "" #: Package.module:962 msgid "Creating desktop file..." msgstr "" #: Package.module:970 msgid "Sources are being debianizated." msgstr "" #: Package.module:1175 msgid "Creating package..." msgstr "" #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "" #: Package.module:1483 msgid "Creating source package." msgstr "" #: Package.module:1507 msgid "Creating .spec file." msgstr "" #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 msgid "Unsupported source archive format." msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "" #: Project.module:239 msgid "Basic" msgstr "기본" #: Project.module:241 msgid "Drawing" msgstr "" #: Project.module:244 msgid "Miscellaneous" msgstr "기타" #: Project.module:245 msgid "Networking" msgstr "" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "소리" #: Project.module:250 msgid "Controls" msgstr "" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "" #: Project.module:545 msgid "This project does not exist." msgstr "" #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "" #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "" #: Project.module:600 msgid "Open after all" msgstr "" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:606 msgid "It cannot be converted." msgstr "" #: Project.module:606 msgid "This project is read-only." msgstr "" #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 msgid "This project includes compressed files." msgstr "" #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 msgid "Cannot open project file :" msgstr "" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 msgid "Cannot reload file." msgstr "" #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "" #: Project.module:2171 msgid "Cannot open file." msgstr "" #: Project.module:2329 msgid "&1th" msgstr "" #: Project.module:2395 msgid "in form definition" msgstr "" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2575 msgid "Compiling project" msgstr "" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "" #: Project.module:2876 msgid "Directory already exists." msgstr "" #: Project.module:2888 msgid "Cannot link template file." msgstr "" #: Project.module:2894 msgid "Cannot copy template file." msgstr "" #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "디렉터리" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 msgid "Cannot install library in &1." msgstr "" #: Project.module:3181 msgid "Making executable..." msgstr "" #: Project.module:3191 msgid "Do you really want to increment the project version and make the executable again?" msgstr "" #: Project.module:3191 msgid "No change has been detected." msgstr "" #: Project.module:3292 msgid "Cannot make executable." msgstr "" #: Project.module:3774 msgid "Some components are missing: &1" msgstr "" #: Project.module:3990 msgid "Cannot write project file." msgstr "" #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "" #: Project.module:4351 msgid "Please type a name." msgstr "" #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "" #: Project.module:4399 msgid "Space" msgstr "" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "" #: Project.module:4714 msgid "Please type a project name." msgstr "" #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4733 msgid "This project already exists." msgstr "" #: Project.module:4736 msgid "The project directory already exists." msgstr "" #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "" #: Project.module:5186 msgid "Cannot create link &1." msgstr "" #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:5265 msgid "Cannot move file &1." msgstr "" #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "" #: Project.module:5966 msgid "Project files conversion..." msgstr "" #: Project.module:5996 msgid "Unable to convert &1" msgstr "" #: Project.module:6276 msgid "Unable to update forms." msgstr "" #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 msgid "Unable to read component description file." msgstr "" #: Project.module:6520 msgid "Cannot write component description file." msgstr "" #: Project.module:6581 msgid "Project templates" msgstr "" #: Project.module:6627 msgid "Unable to run terminal." msgstr "" #: Save.module:57 msgid "Cannot save file !" msgstr "" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 msgid "Incorrect format" msgstr "" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:553 msgid "Do you really want to put this project under version control with &1?" msgstr "" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "&Insert" #~ msgstr "삽입(&I)" #~ msgid "Arguments" #~ msgstr "인자" #~ msgid "Author(s)" #~ msgstr "제작자(들)" #~ msgid "Blend" #~ msgstr "반영하기" #~ msgid "ChangeLog" #~ msgstr "변경사항" #, fuzzy #~ msgid "No argument" #~ msgstr "인자" #~ msgid "Picture" #~ msgstr "그림" #~ msgid "Text file" #~ msgstr "텍스트 파일" gambas-3.16.3/app/src/gambas3/.lang/lt.po000066400000000000000000004630751411575327000177240ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 #, fuzzy msgid "Static properties" msgstr "Rūšiuoti savybes" #: CClassInfo.class:604 msgid "Static variables" msgstr "Statiniai kintamieji" #: CClassInfo.class:605 #, fuzzy msgid "Static methods" msgstr "Statiniai kintamieji" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Savybės" #: CClassInfo.class:624 msgid "Variables" msgstr "" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "tik-skaitomas" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 msgid "static function" msgstr "" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "Kraunama informatcija apie komponenta &1..." #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Klasės" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Klasė" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Aprašymas" #: CComponent.class:1667 #, fuzzy msgid "This component is not stable yet." msgstr "Šis projektas neegzistuoja." #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Šis projektas yra tik-skaitomas." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "Autoriai" #: CComponent.class:1690 msgid "Implements" msgstr "Realizacija" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Saugyklos" #: CComponent.class:1717 msgid "Excludes" msgstr "Nepaimti" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Vidaus savosios klases" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Diagramos paišymas" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Suspaudimas ir išskleidimas" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 #, fuzzy msgid "MD5/DES/SHA crypting" msgstr "MD5/DES kodavimas" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "Duomenu bazės prieiga" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "MySQL duomenų bazės draiveriai" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "ODBC duomenų bazės driaiveriai" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "PostgreSQL duomenų bazės draiveriai" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "SQLite 2 duomenų bazės draiveriai" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "SQLite 3 duomenų bazės draiveriai" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Programos klaidų tvarkyklės pagalbininkas" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Išraiška vertintojas" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Daugiau valdiklių grafiniams komponentams" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Glaudesni standartiniai dialogai" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Multi Documento sąsaja" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 #, fuzzy msgid "GTK+2 toolkit" msgstr "GTK+ įrankių rinkinys" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "GTK+3 toolkit" msgstr "GTK+ įrankių rinkinys" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ jungiklio komponentas" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "QT/GTK+ jungiklio komponentas" #: CDocumentation.class:88 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "QT/GTK+ jungiklio komponentas" #: CDocumentation.class:89 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "QT/GTK+ jungiklio komponentas" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "XML įrankiai pagrįsti libxml" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "Tinklo programavimas" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "Tinklo aukšto-lygio protokolų valdymas" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "3D programavimas su OpenGL" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "GNU komandos parinkties analizatorius" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "Perl-suderinamas Pastovios Išraiškos Atitikmuo" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "PDF atvaizdavimas paremtas Poppler biblioteka" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 #, fuzzy msgid "QT5 toolkit" msgstr "GTK+ įrankių rinkinys" #: CDocumentation.class:125 #, fuzzy msgid "QT5 WebKit component" msgstr "Apie component" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 #, fuzzy msgid "QT5 toolkit extension" msgstr "GTK+ įrankių rinkinio plėtinys" #: CDocumentation.class:128 msgid "Report designer" msgstr "Pranešti projektuotojas" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "SDL biblioteka" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "SDL garso ir CD-ROM valdymas" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Komponentas" #: CDocumentation.class:134 #, fuzzy msgid "SDL2 audio component" msgstr "Apie component" #: CDocumentation.class:135 msgid "Application settings management" msgstr "Programos nustatymų valdymas" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Įvykio ciklo valdymas" #: CDocumentation.class:138 #, fuzzy msgid "Graphical terminal applications development" msgstr "Grafinė programa" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Apie component" #: CDocumentation.class:140 #, fuzzy msgid "Web applications utility component" msgstr "Web programos įrankiai" #: CDocumentation.class:141 msgid "Video capture" msgstr "Video įrašymas" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "Visual Basic suderinamumas" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "XML-RPC protokolas" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "Web programos įrankiai" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 #, fuzzy msgid "Web application development" msgstr "Web programos įrankiai" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "Grafinės formos valdymas" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "Įvykio ciklo valdymas" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "OpenGL rodymas" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Teikia" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Forma" #: CModule.class:28 msgid "Forms" msgstr "Formos" #: CModule.class:28 msgid "Gambas forms" msgstr "Gambas formos" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Gambas formos" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Forma" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Formos" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas formos" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Forma" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Formos" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 #, fuzzy msgid "IDE extensions" msgstr "Automatinis pratęsimas" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Atšaukti" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 #, fuzzy msgid "Unable to uninstall software:" msgstr "Nepavyko įdėti teksto." #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Projektas buvo sėkmingai sukurtas." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Projektas" #: CProjectTree.class:346 msgid "Sources" msgstr "" #: CProjectTree.class:348 msgid "Connections" msgstr "" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Duomenys" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "Padaryti šaltinio archyvą" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "Šių klasių sukamaisiais paveldėjimas:" #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "Nepavyko išsaugoti projekto." #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Nepavyko sukurti vykdomosios bylos." #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Nepavyko išsaugoti projekto." #: CSoftware.class:663 msgid "yesterday" msgstr "" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 #, fuzzy msgid "Unable to push the project." msgstr "Nepavyko išsaugoti projekto." #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Esamas objektas" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Nepavyko sukurti projekto !" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Nepavyko sukurti projekto !" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Paskutiniai projektai" #: CVersionControlGit.class:319 msgid "Status" msgstr "" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 #, fuzzy msgid "Remote repository URL" msgstr "Saugykla" #: CVersionControlGit.class:373 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "Katalogas bus pašalintas kitame veiksme." #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "Gerai" #: CVersionControlGit.class:411 #, fuzzy msgid "Solve conflict." msgstr "Išspręsti konflikta su" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 #, fuzzy msgid "Remote revision" msgstr "Pašalinti visas išraiškas" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "Projektas buvo sėkmingai sukurtas." #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Programa gražino\n" "vertę: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "Apie Gambas" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "-\n" #: FColorChooser.form:15 msgid "Select a color" msgstr "Pasirinkti spalvą" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "Sistema" #: FColorChooser.form:35 msgid "Free" msgstr "Laisva" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "Nėra baigtas, tačiau stabilus" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "Šie komponentai yra nesuderinami:
&1." #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "&1 komponentui reikalingi komponentai:
&2." #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "&1 komponentui reikia &2 komponento." #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Pasirinkti šriftą" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Perkrauti" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "Priartinti" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "Atitolinti" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "&Redaguoti" #: FConflict.class:14 #, fuzzy msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "Ši byla konfliktuoja su revision #&1.\n" "Jūs turite išspręsti konfliktą, kad galėtomete naudoti byla." #: FConflict.class:97 #, fuzzy msgid "Unable to load file:" msgstr "Nepavyko įdėti teksto." #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Tekstas" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "paveikslas" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Byla buvo pakeista.\n" "Ar tikrai norite uždaryti dialoga ?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Kai kurie konfliktai dar nėra išspręsti." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Nepavyko išspręsti konflikto." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Byla buvo pakeista.\n" "Ar tikrai norite atidaryti kita bylą ?" #: FConflict.class:267 msgid "Conflict files" msgstr "Nesuderinamos bylos" #: FConflict.form:31 msgid "Version conflict" msgstr "Versijos konfliktas" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Iškirpti" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Kopijuoti" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Įdėti" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Atšaukti" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Atstatyti" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Įtrauka" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "šalinti įtraukas" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Atidaryti" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Išsaugoti" #: FConflict.form:160 msgid "Solve" msgstr "išspręsti" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Užverti" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "(Aprašymai)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Komentuoti" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Naikinti komentarą" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "Įdėti specialų" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Pasirinkti Viska" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Eiti į eilute" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "Rasti sekanti" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "Rasti ankstesnį" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Rodymas" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 #, fuzzy msgid "Automatic word wrap" msgstr "Automatika" #: FConflictEditor.form:233 FTextEditor.form:284 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "Ne padalintas" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "Horizontalus skaidymas" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "Vertikalus išskaidymas" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "Atidaryti koda" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Kodas" #: FConflictEditor.form:377 #, fuzzy msgid "Conflict solved" msgstr "Nesuderinamos bylos" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Versijos konfliktas" #: FConflictEditor.form:518 #, fuzzy msgid "Next conflict" msgstr "Versijos konfliktas" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Vardas" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tipas" #: FConnectionEditor.class:61 msgid "Length" msgstr "" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Kompiliacija" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Indeksas" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Pašalinti" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Pervadinti" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "importuoti" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Pridėti" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Naujas" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Valyti" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Eksportuoti" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Ištrinti" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Pasirinkti viska" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "Atžymėti visus" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 #, fuzzy msgid "Unable to send bug report." msgstr "Nepavyko įdėti teksto." #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "Programa gražino\n" "vertę: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 #, fuzzy msgid "Gambas interpreter crash" msgstr "Gambas projekto bylos kelias" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "(Nėra tėvinio)" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "Nepavyko pridėti bylą." #: FCreateFile.form:37 msgid "New file" msgstr "Nauja byla" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Parinktys" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Plotis" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Aukštis" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Dialogo lango valdymas" #: FCreateFile.form:155 msgid "Parent class" msgstr "Tėvinė klasė" #: FCreateFile.form:168 msgid "Exported" msgstr "Eksportuota" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "Automatinis pratęsimas" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "Neverčiama" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Automatinis pratęsimas" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Projekto patikra nepavyko." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Nepavyko sukurti projekto !" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Prašome pasirinkti meniu vietą." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Prašome įvesti saugyklos vietą." #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Naujas projektas" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Katalogas" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Projekto savybės" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Projektas yra išverčiamas" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "Atidaryti kitame lange" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Saugykla" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Konsolė" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Lūžiotaškai" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 #, fuzzy msgid "Search result" msgstr "Paieškos sąrašas" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "neprieinamas" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Vertė" #: FDebugExpr.class:508 msgid "Key" msgstr "Raktas" #: FDebugExpr.class:514 msgid "Symbol" msgstr "Ženklas" #: FDebugExpr.form:33 msgid "Watch" msgstr "Stebėti" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "Undock konsolę" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Eilutė" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Byla" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:126 msgid "native code" msgstr "savasis kodas" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Stebėti išraiška" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Ar norite išvalyti išraiška sąrašą ?" #: FDebugInfo.class:1070 #, fuzzy msgid "File not loaded" msgstr "Byla nerasta !" #: FDebugInfo.class:1209 msgid "Current object" msgstr "Esamas objektas" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "Vietiniai kintamieji" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "Derinimas" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "Pašalinti esama išraiška" #: FDebugInfo.form:124 msgid "Add expression" msgstr "Pridėti išraiška" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "Pašalinti visus lūžiotaškus" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Perjungti lūžiotašką" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Kintamieji" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Perjungti lūžiotašką" #: FDebugInfo.form:201 #, fuzzy msgid "Enable" msgstr "Vykdomasis" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "Pašalinti visus lūžiotaškus" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "Iškomas stringas nerastas" #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "įsipareigoti" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:379 FMain.form:508 #, fuzzy msgid "Revert all changes" msgstr "Pašalinti visus lūžiotaškus" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Eiti į" #: FEditor.form:243 msgid "Find definition" msgstr "Ieškoti apibrėžimo" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Paleisti iki esamos eilutės" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Perjungti lūžiotašką" #: FEditor.form:314 msgid "Watch expression" msgstr "Stebėti išraiška" #: FEditor.form:323 msgid "Open form" msgstr "Atidaryti forma" #: FEditor.form:330 FMain.form:1067 #, fuzzy msgid "Run this class" msgstr "Tėvinė klasė" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Redaktorius" #: FEditor.form:523 FTextEditor.form:507 msgid "Insert special character" msgstr "" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Vartotojas" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Slaptažodis" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Prašome įvesti savo e-pašto adresą." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Nepavyko įdėti teksto." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Testi" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "Jūs ketinate atšaukti savo pakeitimus !" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Moduliai" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 #, fuzzy msgid "Undo changes" msgstr "Undock konsolę" #: FFontChooser.form:12 msgid "Select a font" msgstr "Pasirinkti šriftą" #: FForm.class:134 msgid "Bad form file" msgstr "Blogos formos bylą" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Nežinomas formatas" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Nepavyko sukurti vykdomosios bylos." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Pasirinkti" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Pasirinkti šriftą" #: FForm.form:239 msgid "Arrangement" msgstr "Išsidėstymas" #: FForm.form:243 msgid "Bring to foreground" msgstr "Perkelti į priekį" #: FForm.form:250 msgid "Send to background" msgstr "Siųsti į fone" #: FForm.form:260 msgid "Horizontal" msgstr "Horizontalus" #: FForm.form:267 msgid "Rows" msgstr "Eilutės" #: FForm.form:273 msgid "Vertical" msgstr "Vertikalus" #: FForm.form:280 msgid "Columns" msgstr "Stulpeliai" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Lygiavimas" #: FForm.form:305 msgid "Align to left" msgstr "Lygiuoti į kairę" #: FForm.form:311 msgid "Align to right" msgstr "Lygiuoti į dešinę" #: FForm.form:317 msgid "Align to top" msgstr "Lygiuoti į viršų" #: FForm.form:323 msgid "Align to bottom" msgstr "Lygiuoti į apačią" #: FForm.form:332 msgid "Same width" msgstr "Vienodas plotis" #: FForm.form:338 msgid "Same height" msgstr "Vienodas aukštis" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "Perkelti kortelę" #: FForm.form:360 msgid "First" msgstr "Pirma" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Ankstesnis" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Sekantis" #: FForm.form:381 msgid "Last" msgstr "Paskutinis" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Meniu tvarkyklė" #: FForm.form:401 msgid "Event" msgstr "Įvykis" #: FForm.form:415 #, fuzzy msgid "Run this form" msgstr "Paleisti šią komanda po" #: FForm.form:568 msgid "Toggle grid" msgstr "Perjungti tinklelį" #: FForm.form:577 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:696 msgid "Move tab first" msgstr "Perkelti kortelę į priekį" #: FForm.form:703 msgid "Move tab left" msgstr "Perkelti kortelę kairėn" #: FForm.form:710 msgid "Move tab right" msgstr "Perkelti kortelę dešinėn" #: FForm.form:717 msgid "Move tab last" msgstr "Perkelti kortelę į galą" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "" #: FForm.form:753 msgid "Italic" msgstr "" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Fonas" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 #, fuzzy msgid "Lock / unlock form" msgstr "Užrakinti forma" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Hierarchiškas" #: FFormStack.form:24 msgid "Move top" msgstr "Perkelti į viršų" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Perkelti aukštyn" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Perkelti žemyn" #: FFormStack.form:42 msgid "Move bottom" msgstr "Perkelti apačion" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "Numatytoji kalba" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Pagalbos naršyklė" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Grįžti atgal" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpBrowser.form:120 msgid "Print" msgstr "" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 #, fuzzy msgid "Debugger" msgstr "Derinimas" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Vertimas" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Horizontalus pavertimas" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Vertikalus pavertimas" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Pasukti prieš laikrodžio rodyklę" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Pasukti pagal laikrodžio rodyklę" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Pasirinkimas" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Nustatymai" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Pasirinkimas" #: FImageEditor.form:283 #, fuzzy msgid "Exclusive or" msgstr "Nepaimti" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Piešimas" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Stačiakampis" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipsė" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "-" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 #, fuzzy msgid "Select gradient stop color" msgstr "Pasirinkti spalvą" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 msgid "Colorize" msgstr "" #: FImageProperty.form:399 #, fuzzy msgid "Desaturate" msgstr "Galimybės" #: FImageProperty.form:407 #, fuzzy msgid "Make transparent" msgstr "Išsaugoti vertima" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Eilutė" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Eilutė" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Dydis" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Išversti" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Anuluoti" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 #, fuzzy msgid "Right align" msgstr "Pabraukiama" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas klasės" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas moduliai" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "HTML bylos" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Nuotraukos byla" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Nepavyko atverti bylos." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importuoti temą" #: FImportFile.form:24 #, fuzzy msgid "Create symbolic links" msgstr "Sukurti simbolinę nuoroda" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Visos bylos" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:79 msgid "Charset" msgstr "" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Redaguoti sąrašo savybęs" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Sugrįžti" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Ar tikrai norite ištrinti šį katalogą ?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Nepavyko ištrinti bylos ar katalogo" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "Rūšiuoti pagal kelia" #: FMain.class:751 msgid "&Clear history" msgstr "&Valyti įstoriją" #: FMain.class:935 msgid "New folder" msgstr "Naujas katalogas" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "GNU vertimo įrankiai nėra įdiegti jūsų sistemoje.\n" "\n" "Prašome įdiegti juos nuorėdami atlikti vertimus." #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "Visos atsarginės kopijos ar sukurtos bylos bus pašalintos iš projekto katalogo." #: FMain.class:1847 msgid "Clean" msgstr "Valyti" #: FMain.class:2164 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Ar tikrai norite ištrinti šį katalogą ?" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Byla buvo pakeista.\n" "\n" "Visi jūsų pakeitimai bus prarasti." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Argumentai" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Atidaryti projekta" #: FMain.form:289 msgid "Open recent" msgstr "Atidaryti paskutinius" #: FMain.form:297 msgid "Open example" msgstr "Atidaryti pavyzdi" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Išsaugoti projekta" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Išsaugoti projekta kaip" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Pasirinkti projekta" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Baigti" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Išsaugoti" #: FMain.form:418 msgid "Compile" msgstr "Kompiliuoti" #: FMain.form:425 msgid "Compile All" msgstr "Kompiliuoti Viska" #: FMain.form:435 msgid "Translate" msgstr "Išversti" #: FMain.form:444 msgid "Make" msgstr "Padaryti" #: FMain.form:448 msgid "Executable" msgstr "Vykdomasis" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "Šaltinio archyvas" #: FMain.form:462 msgid "Installation package" msgstr "Įdiegimo paketas" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "Įšvalyti" #: FMain.form:546 msgid "Refresh" msgstr "Atnaujinti" #: FMain.form:568 msgid "Run" msgstr "Paleisti" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Argumentai" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 #, fuzzy msgid "GUI component" msgstr "Komponentas" #: FMain.form:615 #, fuzzy msgid "Current desktop" msgstr "Esamas objektas" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Pauzė" #: FMain.form:658 msgid "Stop" msgstr "Sustabdyti" #: FMain.form:665 msgid "Step" msgstr "Žengti" #: FMain.form:672 msgid "Forward" msgstr "Pirmys" #: FMain.form:679 msgid "Finish" msgstr "Baigtih" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "Valyti visus lūžiotaškus" #: FMain.form:699 msgid "Close all debug windows" msgstr "Užverti visus derinimo langus" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Užverti visus langus" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Pakeisti" #: FMain.form:796 msgid "Browse project" msgstr "Naršyti projektą" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Nustatymai" #: FMain.form:854 msgid "Directory" msgstr "Katalogas" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Modulis" #: FMain.form:927 msgid "HTML file" msgstr "HTML byla" #: FMain.form:934 msgid "Style sheet" msgstr "Stilius lapas" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "Kita" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Paskutiniai" #: FMain.form:981 #, fuzzy msgid "Open in file manager" msgstr "Nustatomi bylų valdymas" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Atidaryti projekta" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "Kopijuoti bylos kelią" #: FMain.form:1060 msgid "Startup class" msgstr "Paleisties klasė" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Išsaugoti pakeistas bylas" #: FMain.form:1098 #, fuzzy msgid "Show files in conflict" msgstr "Versijos konfliktas" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Neverčiama" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Dienos patarimai" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Projekto savybės" #: FMain.form:1311 msgid "Refresh project" msgstr "Atnaujinti projekta" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Padaryti vykdomają bylą" #: FMain.form:1353 msgid "Make source archive" msgstr "Padaryti šaltinio archyvą" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "Padaryti įdiegimo paketą" #: FMain.form:1382 msgid "Properties sheet" msgstr "Savybių lapas" #: FMain.form:1391 msgid "Toolbox" msgstr "Įrankių dėžė" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "" #: FMain.form:1433 msgid "Compile all" msgstr "Kompiliuoti Viska" #: FMain.form:1476 msgid "Finish current function" msgstr "Baigti dabartinę funkciją" #: FMain.form:1492 #, fuzzy msgid "Show menubar" msgstr "rodyti eilutės numerius" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Byla" #: FMain.form:1606 msgid "&Project" msgstr "&Projektas" #: FMain.form:1618 msgid "&Debug" msgstr "&Derinimas" #: FMain.form:1630 msgid "&View" msgstr "&Rodymas" #: FMain.form:1642 msgid "&Tools" msgstr "&Įrankiai" #: FMain.form:1654 msgid "&?" msgstr "-" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas programos" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "Paleisti šią komanda po" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) bus pakeista executable takeliu" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Laikyti derinimo informaciją vykdomojoje byloje" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "Sukurti nuorodą ant Darbastalio" #: FMakeInstall.class:123 msgid "Package" msgstr "" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Kuriamas paketas..." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Paketai buvo sėkmingai sukurti." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Prašome įvesti savo vardą." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Prašome įvesti savo e-pašto adresą." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Prašome įvesti meniu vardą." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "Nėra PAKEITIMŲSĄRAŠO įrašo šiam leidimui." #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Prašome įvesti pirma PAKEITIMŲSĄRAŠO įrašą." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "Prašome pasirinkti bent vieną distributą." #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "Prašome pasirinkti paketo grupę kiekvienam distributui." #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "Prašome pasirinkti paketo grupę." #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "Prašome pasirinkti meniu vieta kiekvienam distributui." #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "Prašome pasirinkti meniu vietą." #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "Paketas negali būti saugomas vidineme projekto kataloge." #: FMakeInstall.class:518 msgid "Initial release" msgstr "Pradinis leidimas" #: FMakeInstall.class:778 msgid "Menus" msgstr "Meniu" #: FMakeInstall.class:846 msgid "Groups" msgstr "Grupės" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "Paketo vardas" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "Kurėjo pavadinimas" #: FMakeInstall.form:214 FOption.form:380 #, fuzzy msgid "Vendor prefix" msgstr "Kurėjo pavadinimas" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "Maintainer informatcija" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "" #: FMakeInstall.form:317 msgid "Changelog" msgstr "" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "Kategorijos" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "Sukurti katalogus kiekvienai distribucijai" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Sukurti source paketą" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Šaltinis paketai" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "Prašome įvesti meniu vardą." #: FMenu.class:318 msgid "Bad menu name !" msgstr "Blogas meniu pavadinimas!" #: FMenu.class:324 msgid "Bad group name !" msgstr "Blogas grupės pavadinimas!" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Šis meniu yra pernelyg giliai !" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "pakeista" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "Procedūros atskirimas" #: FMenu.form:100 msgid "Insert menu before" msgstr "" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Įterpti" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Ištrinti" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Paspauskite ant Įterpti norėdami pridėti naują meniu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Duomenubazė" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Duomenubazė" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Slaptažodis" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "Duomenubazė" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "Naujas vertimas" #: FOpenProject.form:22 msgid "Select a project" msgstr "Pasirinkti projekta" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Pavyzdžiai" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Smaragdinis" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidianas" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Įdėti" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "-" #: FOption.class:4 msgid "Sapphire" msgstr "Safyras" #: FOption.class:4 msgid "Visual" msgstr "Vizualus" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Darbastalis" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "(Numatyta)" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "Gambas išryškintos temos bylos" #: FOption.class:237 msgid "Export a theme file" msgstr "Eksportuoti temos bylą" #: FOption.class:462 msgid "Select a theme file" msgstr "Pasirinkti temos byla" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "Jums reikia perkrauti programą kad matytumėte savo pakeitimus." #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Neįmanoma sukurti darbalaukio nuorodą." #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 #, fuzzy msgid "Network is not available." msgstr "neprieinamas" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Nepavyko kopijuoti bylos &1." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 #, fuzzy msgid "Unable to install documentation." msgstr "Nepavyko įdėti teksto." #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Įtrauka" #: FOption.form:352 #, fuzzy msgid "Package maintainer" msgstr "Paketo vardas" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Numatytoji kalba" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Ne" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Taip" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Projektas" #: FOption.form:458 msgid "Default tab size" msgstr "Numatytasis kortelės dydis" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "tapas(ai)" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 msgid "Activate version control" msgstr "" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "paveikslas" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Automatinis pratęsimas" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Vertimo byla" #: FOption.form:653 msgid "Interface" msgstr "Sąsaja" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Rodyti patarimus apie įrankius" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "Įrankių dėžės dydis" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "" #: FOption.form:778 msgid "Small" msgstr "" #: FOption.form:790 msgid "Sort properties" msgstr "Rūšiuoti savybes" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "Tylios išorinės komandos" #: FOption.form:867 msgid "Fonts" msgstr "" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 msgid "Debugger size" msgstr "" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Naudoti fiksuoto pločio šriftą" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 msgid "Themes" msgstr "" #: FOption.form:1087 msgid "Icon theme" msgstr "piktogramų tema" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Pabraukiama" #: FOption.form:1117 msgid "Import theme" msgstr "Importuoti temą" #: FOption.form:1123 msgid "Export theme" msgstr "Eksportuoti temą" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Pabraukti esama eilutę" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "Pabraukti pakeistas eilutes" #: FOption.form:1230 msgid "Show line numbers" msgstr "rodyti eilutės numerius" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "Procedūros atskirimas" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 msgid "Show Preview" msgstr "" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 #, fuzzy msgid "Local variable declaration" msgstr "Vietiniai kintamieji" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Komentarai" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Užverti visus langus" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "Rodyti savybės pagalba" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 #, fuzzy msgid "Documentation" msgstr "Automatika" #: FOption.form:1667 msgid "Use offline documentation" msgstr "" #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "" #: FOption.form:1755 msgid "Browser" msgstr "Naršyti" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Konsolė - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Undock konsolę" #: FOutput.form:72 msgid "Keep above" msgstr "Laikyti virš" #: FOutput.form:78 msgid "Clear console" msgstr "Valyti konsolę" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Atidaryti paskutinius" #: FOutput.form:130 msgid "Use system charset" msgstr "Naudoti sistemos ženklų koduotę" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Nepavyko įdėti teksto." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Mainų srities turinys" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Įdėti paprastai" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Įdėti su PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Sugrįžti" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Nepavyko pervadinti '&1'" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:159 msgid "Variable" msgstr "Kintamieji" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Snapping vertė yra neteisinga." #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Vykdomasis" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 #, fuzzy msgid "Information about component" msgstr "Kraunama informatcija apie komponenta &1..." #: FProjectProperty.class:964 #, fuzzy msgid "Information about library" msgstr "Informacija" #: FProjectProperty.class:1454 #, fuzzy msgid "Select a Gambas executable" msgstr "Nepavyko sukurti vykdomosios bylos." #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Padaryti vykdomają bylą" #: FProjectProperty.form:267 msgid "General" msgstr "Bendra" #: FProjectProperty.form:304 msgid "Component" msgstr "Komponentas" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:311 #, fuzzy msgid "Vendor" msgstr "Kurėjo pavadinimas" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versija" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Pavadinimas" #: FProjectProperty.form:389 msgid "Information" msgstr "Informacija" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "Baigta ir stabilu" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 #, fuzzy msgid "Include information from" msgstr "Informacija" #: FProjectProperty.form:484 #, fuzzy msgid "Required features" msgstr "Saugyklos" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 #, fuzzy msgid "Require" msgstr "Saugyklos" #: FProjectProperty.form:567 #, fuzzy msgid "Exclude" msgstr "Nepaimti" #: FProjectProperty.form:579 msgid "Remove All" msgstr "Pašalinti Viską" #: FProjectProperty.form:586 msgid "Components" msgstr "Komponentai" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Nustatymai" #: FProjectProperty.form:664 msgid "Environment" msgstr "Aplinka" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Įterpti" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Argumentai" #: FProjectProperty.form:746 msgid "Edition" msgstr "Laida" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Kortelės dydis" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Kompiliacija" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "Modulio simboliai yra vieši pagal numatytaji" #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Formos valdikliiai yra vieši" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Ši eilutė ir sekanti bus ignoruojama" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "Projektas negali būti įvykdytas." #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Atnaujinti" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Draudžiami simboliai valdiklio varde." #: FProperty.class:389 msgid "This name is already in use." msgstr "Šis vardas jau naudojamas." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Draudžiami simboliai valdiklių grupėj." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Neteisinga savybės vertė." #: FProperty.class:637 msgid "The name of the control." msgstr "Valdiklio vardas" #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "Įvikių grupė kuriai priklauso valdiklis." #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Jei formos ir valdiklių matmenys turi atitikti numatytąjį šriftą." #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Joks" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Projektas buvo sėkmingai sukurtas." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "Nepavyko išsaugoti projekto." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Neteisinga savybės vertė." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Ar tikrai norite perkrauti šį vertimą ?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Pasirinkti temos byla" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Nuotraukos byla" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Aprašymas" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Kortelės dydis" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Išsaugoti pakeistas bylas" #: FSave.form:42 msgid "Save All" msgstr "" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Nepavyko išsaugoti projekto." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "Iškomas stringas pakeistas viena karta." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "Iškomas stringas pakeistas &1 kartus." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "" #: FSearch.form:104 msgid "Case sensitive" msgstr "" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Duomenų tipai" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Pabraukiama" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Pasirinkite nuotrauką" #: FSelectIcon.form:41 msgid "Stock" msgstr "Ištekliai" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Nežinomas" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Pasirinkti spalvą" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Žaidimai" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Laida" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "-" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Sąsaja" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Išraiška" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 #, fuzzy msgid "No software found." msgstr "Pagalba nerasta." #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Atšaukti" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Nepavyko pervadinti '&1'" #: FSoftwareFarm.class:557 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "Projektas buvo sėkmingai sukurtas." #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Nepavyko pervadinti '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "Projektas buvo sėkmingai sukurtas." #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Nepavyko pervadinti '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Projektas buvo sėkmingai sukurtas." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Ar tikrai norite ištrinti šią bylą ?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Nepavyko pervadinti '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas formos" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Atidaryti paskutinius" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Rodyti patarimus apie įrankius" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Rodyti patarimus apie įrankius" #: FSoftwareFarm.form:393 msgid "Download" msgstr "" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Redaguoti sąrašo savybęs" #: FText.form:29 msgid "Use a fixed font" msgstr "Naudoti fiksuoto pločio šriftą" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 #, fuzzy msgid "Sort ascent" msgstr "Rūšiuoti pagal kelia" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Nepavyko perskaityti dienos Patarimo !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Rodyti patarimus paleidžiant" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Projektas yra tuščias. Nėra nieko verčiamo." #: FTranslate.class:74 msgid "Language" msgstr "Kalba" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Neverčiama" #: FTranslate.class:167 msgid "Translation files" msgstr "Vertimo byla" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Nepavyko nuskaityti vertimo bylos kalbai '&1'" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Nepavyko išsaugoti vertimo." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Ar tikrai norite ištrinti šį vertimą ?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Ar tikrai norite perkrauti šį vertimą ?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Eksportuoti vertimą" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Nepavyko įkelti vertimo bylos." #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Viskas atrodo teisingai." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Išverstų stringų ženklai neatitinka neverstų stringų ženklų." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Nepavyko įkelti vertimo bylos." #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Ar tikrai norite ištrinti šį vertimą ?" #: FTranslate.form:76 msgid "Project translation" msgstr "Projekto vertimas" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Automatinis pratęsimas" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "Išsaugoti vertima" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Patikrinkite vertimą" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Rasti Sekanti neišversta stringą" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Rasti ankstesnį neišversta stringą" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "Rasti ankstesnį neišversta stringą" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Rasti Sekanti neišversta stringą" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Valyti šį vertimą" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Šis stringas neturi būti išverstas" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Kopijuoti neišverta stringą" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Valyti šį vertimą" #: FTranslate.form:472 msgid "Import a translation file" msgstr "Importuoti vertimo bylą" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Ar norite išvalyti išraiška sąrašą ?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "There is nothing to commit." msgstr "Projektas negali būti įvykdytas." #: FVersionControl.form:61 #, fuzzy msgid "Do not push to remote repository" msgstr "Prašome įvesti saugyklos vietą." #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Pasirinkti šriftą" #: FWelcome.class:68 msgid "New project..." msgstr "Naujas projektas..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Paskutiniai projektai" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Gambas" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "-" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "-" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "-" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "-" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "-" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "-" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "-" #: Language.module:31 msgid "Danish (Denmark)" msgstr "-" #: Language.module:34 msgid "German (Germany)" msgstr "-" #: Language.module:35 msgid "German (Belgium)" msgstr "-" #: Language.module:38 msgid "Greek (Greece)" msgstr "-" #: Language.module:41 msgid "English (common)" msgstr "-" #: Language.module:42 msgid "English (United Kingdom)" msgstr "-" #: Language.module:43 msgid "English (U.S.A.)" msgstr "-" #: Language.module:44 msgid "English (Australia)" msgstr "-" #: Language.module:45 msgid "English (Canada)" msgstr "-" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "-" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "-" #: Language.module:52 msgid "Spanish (Spain)" msgstr "-" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "-" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "-" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Baskų (Baskų kraštas)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "-" #: Language.module:65 msgid "Finnish (Finland)" msgstr "-" #: Language.module:68 msgid "French (France)" msgstr "-" #: Language.module:69 msgid "French (Belgium)" msgstr "-" #: Language.module:70 msgid "French (Canada)" msgstr "-" #: Language.module:71 msgid "French (Switzerland)" msgstr "-" #: Language.module:74 msgid "Galician (Spain)" msgstr "-" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "-" #: Language.module:80 msgid "Hindi (India)" msgstr "-" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "-" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "-" #: Language.module:92 msgid "Irish (Ireland)" msgstr "-" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "-" #: Language.module:101 msgid "Japanese (Japan)" msgstr "-" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "-" #: Language.module:107 msgid "Korean (Korea)" msgstr "-" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "-" #: Language.module:116 msgid "Malayalam (India)" msgstr "-" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "-" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "-" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "-" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "-" #: Language.module:129 msgid "Punjabi (India)" msgstr "-" #: Language.module:132 msgid "Polish (Poland)" msgstr "-" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "-" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "-" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "-" #: Language.module:142 msgid "Romanian (Romania)" msgstr "-" #: Language.module:145 msgid "Russian (Russia)" msgstr "-" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "-" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanian (Albanų)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "-" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "-" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "-" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "-" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "-" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "-" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "-" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "-" #: Language.module:220 msgid "Unknown" msgstr "Nežinomas" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 #, fuzzy msgid "Component name must be a string" msgstr "Komponentų programavimas" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 #, fuzzy msgid "Too many local variables" msgstr "Vietiniai kintamieji" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "Pagalba nerasta." #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Šis projektas neegzistuoja." #: MMime.module:17 msgid "Plain text" msgstr "Paprastas tekstas" #: MMime.module:18 msgid "HTML text" msgstr "HTML tekstas" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas formų duomenys" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas projekto bylos kelias" #: MMime.module:22 msgid "URI list" msgstr "URI sąrašas" #: MMime.module:33 msgid "Unknown format" msgstr "Nežinomas formatas" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Komentarai" #: MTheme.module:6 msgid "Current line" msgstr "Esama linija" #: MTheme.module:6 msgid "Data types" msgstr "Duomenų tipai" #: MTheme.module:6 msgid "Editing line" msgstr "Redaguojama linija" #: MTheme.module:6 msgid "Errors" msgstr "" #: MTheme.module:6 msgid "Highlighting" msgstr "Pabraukiama" #: MTheme.module:6 msgid "Keywords" msgstr "Raktažodžiai" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Normalus tekstas" #: MTheme.module:6 msgid "Numbers" msgstr "Skaičiai" #: MTheme.module:6 msgid "Operators" msgstr "Operatoriai" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Stringai" #: MTheme.module:6 msgid "Subroutines" msgstr "Paprogrames" #: MTheme.module:6 msgid "Symbols" msgstr "Ženklai" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Išsaugojama PAKEITIMŲSĄRAŠO byla." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Kuriamas paketas &1." #: Package.module:744 msgid "The package build has failed." msgstr "Paketą sukurti nepavyko." #: Package.module:812 msgid "Making build directory." msgstr "Daromas konstrukcijos katalogas." #: Package.module:867 msgid "Creating desktop file..." msgstr "Kuriama darbastalio byla..." #: Package.module:875 msgid "Sources are being debianizated." msgstr "Šaltiniai yra debianizuoti." #: Package.module:1080 msgid "Creating package..." msgstr "Kuriamas paketas..." #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-paketokurimas' nepavyko." #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Inicijuojamas ~/RPM katalogas." #: Package.module:1390 msgid "Creating source package." msgstr "Kuriamas šaltinio paketas." #: Package.module:1414 msgid "Creating .spec file." msgstr "Kuriama .spec byla." #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' gražino šį klaidos kodą:" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "'tar' grąžino klaidos kodą:" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "Automatika" #: Project.module:228 msgid "Basic" msgstr "-" #: Project.module:230 msgid "Drawing" msgstr "Piešiama" #: Project.module:233 msgid "Miscellaneous" msgstr "Įvairūs" #: Project.module:234 msgid "Networking" msgstr "Tinklai" #: Project.module:235 msgid "OpenGL" msgstr "-" #: Project.module:236 msgid "Printing" msgstr "Spausdinama" #: Project.module:237 msgid "Sound" msgstr "Garsas" #: Project.module:239 msgid "Controls" msgstr "Valdikliai" #: Project.module:240 msgid "Multimedia" msgstr "" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "Byla nerasta !" #: Project.module:518 msgid "This project does not exist." msgstr "Šis projektas neegzistuoja." #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Neatidaryti" #: Project.module:573 msgid "Open after all" msgstr "Atidaryti nepaisant nieko" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Šis projektas atrodo tarsi jau atidarytas.\n" "\n" "To paties projakto atidarymas du kartus gali privesti prie duomenų praradimo." #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Šis projektas yra tik-skaitomas." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Nepavyko atverti projekto bylos :\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Nepavyko pridėti bylą." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Nepavyko atverti bylos." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "formos apibrėžime" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Kai kurių projektų šaltinio bylos konfliktuoja.\n" "Prašome juos išspręsti, jei norite sukompiliuoti projektą." #: Project.module:2464 msgid "Compiling project" msgstr "Kompilijamas projektas" #: Project.module:2715 msgid "File already exists." msgstr "Byla jau yra." #: Project.module:2747 msgid "Directory already exists." msgstr "Katalogas jau yra" #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Nepavyko kopijuoti šablono bylos." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 #, fuzzy msgid "Cannot install library in &1." msgstr "Nepavyko sukurti nuorodos &1." #: Project.module:3031 msgid "Making executable..." msgstr "Daroma vykdomoji byla..." #: Project.module:3083 msgid "Cannot make executable." msgstr "Nepavyko sukurti vykdomosios bylos." #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Trūksta kai kurių komponentų: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Nepavyko įrašyti projekto bylos." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "Neįmanoma sukurti darbalaukio nuorodą." #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "Katalogas bus pašalintas kitame veiksme." #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Jūs turite nustatyti paleisties klasę ar formą !" #: Project.module:4080 msgid "Please type a name." msgstr "Prašome įvesti vardą." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "Šis pavadinimas turi uždrausta ženklą:" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Šis pavadinimas jau naudojamas. Pasirinkite kitą." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Klasės pavadinimas turi prasidėti raide ar pabraukimu, po kurio seka bet kokia raidė arba skaitmuo." #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Nepavyko pervadinti '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Prašome įvesti projekto vardą." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "Projekto pavadinimas negali prasidėti tašku." #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Ne ASCII simboliais yra draudžiami projekto pavadinime." #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "Šie ženklai yra draudžiama projekto pavadinime: ? * / \\ SPACE" #: Project.module:4488 msgid "This project already exists." msgstr "Šis projektas jau egzistuoja." #: Project.module:4491 msgid "The project directory already exists." msgstr "Projekto kataloge jau egzistuoja." #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Projekto kataloge negali būti sukurta, nes su tuo pačiu pavadinimu byla jau egzistuoja." #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Sukurti source paketą" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Nepavyko kopijuoti bylos &1." #: Project.module:4881 msgid "Cannot create link &1." msgstr "Nepavyko sukurti nuorodos &1." #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "Nepavyko perkelti katalogo viduje paties saves." #: Project.module:4960 msgid "Cannot move file &1." msgstr "Nepavyko perkelti bylos &1." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 #, fuzzy msgid "Unable to update forms." msgstr "Nepavyko įdėti teksto." #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 #, fuzzy msgid "Unable to read component description file." msgstr "Nepavyko įrašyti komponento aprašymo bylos." #: Project.module:6171 msgid "Cannot write component description file." msgstr "Nepavyko įrašyti komponento aprašymo bylos." #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Projekto savybės" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Nepavyko pervadinti '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Nepavyko išsaugoti bylos !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 #, fuzzy msgid "Please check your network connection." msgstr "Prašome pasirinkti meniu vietą." #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Ar tikrai norite ištrinti šį katalogą ?" #: VersionControl.module:506 #, fuzzy msgid "The project could not be put under version control." msgstr "Projektas negali būti įvykdytas." #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 #, fuzzy msgid "This page does not exist in that language." msgstr "Šis projektas neegzistuoja." #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Šis projektas neegzistuoja." #: WikiMarkdown.class:174 #, fuzzy msgid "This class does not exist." msgstr "Šis projektas neegzistuoja." #: WikiMarkdown.class:187 #, fuzzy msgid "This symbol does not exist." msgstr "Šis projektas neegzistuoja." #~ msgid "Loading &1..." #~ msgstr "Kraunama &1..." #~ msgid "Open project..." #~ msgstr "Open project..." #~ msgid "Edit text property" #~ msgstr "Redakuoti teksto savybę" #~ msgid "Exported classes" #~ msgstr "Eksportuotos klasėsi" #~ msgid "Component advancement" #~ msgstr "Komponentų patobulinimas" #~ msgid "Show only components used in project" #~ msgstr "Rodyti tik sudedamųjų dalių, naudojamų projekto" #~ msgid "Environment variables" #~ msgstr "Aplinkos versija" #~ msgid "Author(s)" #~ msgstr "Autorius(iai)" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Sveikiname pasileidus Gambas konsolę.\n" #~ "Norėdami įvertinti išraiška, rašykite '?' po \n" #~ " išraiškos, tada spauskite enter.\n" #~ "\n" #~ msgid "Blend" #~ msgstr "Susilieti" #~ msgid "Select a theme" #~ msgstr "Pasirinkti tema" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "Visa reikalinga informacija buvo surinkta. Dabar galite sukurti įdiegimo paketą savo programai...\n" #~ "

Spauskite ant OK myktuką norėdami sukurti paketą.\n" #~ "

Spauskite ant Ankstestins mygtuko jai padarėte klaidą.\n" #~ "

Spauskite ant Atšaukti mygtuko norėdami atšaukti operaciją.\n" #~ "\n" #~ msgid "Please enter the changes of your project." #~ msgstr "Prašome įvesti savo projekto pakeitimus." #~ msgid "Prefix package name with the vendor name" #~ msgstr "Priešdėlis su paketo pavadinimu ir gamintojo vardu" #~ msgid "Last modified" #~ msgstr "Paskutinis pakeitimas" #~ msgid "Link to" #~ msgstr "Nuoroda į" #~ msgid "ChangeLog" #~ msgstr "PakeitimųSąrašas" #~ msgid "XML file" #~ msgstr "XML byla" #~ msgid "CSS file" #~ msgstr "CSS byla" #~ msgid "Text file" #~ msgstr "Tekstinė byla" #~ msgid "Picture" #~ msgstr "Nuotrauka" #~ msgid "&1: &2" #~ msgstr "-" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Paspauskite ant formos, kad būtų rodomas jos kontrolės hierarchiškai ..." #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "Forma buvo pakeista.\n" #~ "\n" #~ "Visi jūsų pakeitimai bus prarasti." #~ msgid "Versioning" #~ msgstr "Versijos" #~ msgid "Stack backtrace" #~ msgstr "Krūvos pėdsakai" #~ msgid "Remove current breakpoint" #~ msgstr "Pašalinti esama lūliotašką" #~ msgid "Dynamic variables" #~ msgstr "Dinaminiai kintamieji" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Visual Basic™ pakeitimų pagalba" #~ msgid "Image processing" #~ msgstr "Paveikslo apdorojimas" #~ msgid "OpenGL programming" #~ msgstr "OpenGL programavimas" #~ msgid "XML / XSLT programming" #~ msgstr "XML / XSLT programavimas" #~ msgid "Regular expressions" #~ msgstr "Reguliarūs išsireiškos" #~ msgid "Internationalization" #~ msgstr "Internacionalizacija" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "" #~ "Programa patalpinta į a\n" #~ "Subversion saugykloje" #~ msgid "CGI Web application" #~ msgstr "CGI Web programa" #~ msgid "SDL application" #~ msgstr "SDL programa" #~ msgid "Command-line application" #~ msgstr "Komandinės-eilutės programa" #~ msgid "GTK+ graphical application" #~ msgstr "GTK+ grafinė programa" #~ msgid "QT graphical application" #~ msgstr "QT grafinė programa" #~ msgid "Existing" #~ msgstr "Esamas" #~ msgid "Details" #~ msgstr "Išsamiau" #~ msgid "

Authors

\n" #~ msgstr "-\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "About Gambas..." #~ msgstr "Apie Gambas..." #~ msgid "Thanks to" #~ msgstr "Dėkojame" #~ msgid "OpenLDAP client" #~ msgstr "OpenLDAP klientas" #~ msgid "GTK+ SVG renderer" #~ msgstr "GTK+ SVG atvaizdavimas" #~ msgid "Firebird database driver" #~ msgstr "Firebird duomenubazės draiveriai" gambas-3.16.3/app/src/gambas3/.lang/nl.po000066400000000000000000005517051411575327000177140ustar00rootroot00000000000000# Fabrice Mous < fabrice@kde.nl >, 2003 # Willy Raets < gbWilly@openmailbox.org >, 2013 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.14.90\n" "POT-Creation-Date: 2020-06-06 18:03 UTC\n" "PO-Revision-Date: 2020-02-29 12:30 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Geïntegreerde onwikkelomgeving voor Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Definieer bladwijzer" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Wis alle bladwijzers" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Vorige bladwijzer" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Volgende bladwijzer" #: CClassInfo.class:608 msgid "Static properties" msgstr "Statische eigenschappen" #: CClassInfo.class:609 msgid "Static variables" msgstr "Statische variabelen" #: CClassInfo.class:610 msgid "Static methods" msgstr "Statische methode" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "Constante" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Eigenschappen" #: CClassInfo.class:629 msgid "Variables" msgstr "Variabelen" #: CClassInfo.class:630 msgid "Methods" msgstr "Methoden" #: CClassInfo.class:631 msgid "Events" msgstr "Gebeurtenissen" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "Deze klasse herimplementeert &1" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "Deze klasse erft &1" # gb-ignore #: CClassInfo.class:661 msgid "in &1" msgstr "" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Deze klasse kan gebruikt worden zoals een object door een verborgen instatie te creëren op verzoek" #: CClassInfo.class:674 msgid "This class is &1." msgstr "Deze klasse is &1" #: CClassInfo.class:674 msgid "creatable" msgstr "creëerbaar" #: CClassInfo.class:679 msgid "This class is static." msgstr "Deze klasse is statisch." #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "Deze klasse kan niet aangemaakt worden." #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "Deze klasse kan gebruikt worden als een &1" #: CClassInfo.class:687 msgid "function" msgstr "functie" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "Deze klasse fungeert als een &1 / &2 reeks." #: CClassInfo.class:692 msgid "read" msgstr "lezen" #: CClassInfo.class:692 msgid "write" msgstr "schrijf" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "Deze klasse fungeert als een &1 reeks." #: CClassInfo.class:694 msgid "write-only" msgstr "Enkel schrijven" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "alleen-lezen" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "Deze klasse is &1 met het FOREACH trefwoord." #: CClassInfo.class:702 msgid "enumerable" msgstr "Opsombaar" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "Deze klasse herimplementeert" #: CClassInfo.class:855 msgid "This class inherits" msgstr "Deze klasse erft" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "Deze klasse is virtueel." #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Deze klasse kan gebruikt worden zoals een object door een verborgen instatie te creëren op verzoek" #: CClassInfo.class:897 msgid "static function" msgstr "statische functie" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "Deze klasse fungeert als een &1 / &2 statische reeks." #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "Deze klasse fungeert als een &1 statische reeks." #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "Deze klass is &1 met sleutelwoord &2. " #: CClassInfo.class:918 msgid "statically enumerable" msgstr "statisch opsombaar" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "Informatie laden voor component &1..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Klassen" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Klasse" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Beschrijving" #: CComponent.class:1669 msgid "This component is not stable yet." msgstr "Dit component is nog niet stabiel." #: CComponent.class:1671 msgid "This component is deprecated." msgstr "Dit component is vervallen." #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "Auteur" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "Auteurs" #: CComponent.class:1692 msgid "Implements" msgstr "Werktuigen" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Vereist" #: CComponent.class:1719 msgid "Excludes" msgstr "Uitzonderingen" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Interne inheemse klassen" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "Programma argumenten parser" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Cairo grafische bibliotheek" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Grafiek tekenen" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "Polygoon beheer op basis van Clipper bibliotheek" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "Complex nummer beheer" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Comprimeren & decomprimeren" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "bzlib2 compressie stuurprogramma" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "zlib compressie stuurprogramma" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "MD5/DES/SHA cryptie" #: CDocumentation.class:58 msgid "More data containers" msgstr "Meer data containers" #: CDocumentation.class:59 msgid "Database access" msgstr "Database toegang" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Data gebonden controls" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "MySQL database stuurprogramma" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "ODBC database stuurprogramma" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "PostgreSQL database stuurprogramma" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "SQLite 2 database stuurprogramma" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "SQLite 3 database stuurprogramma" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Applicatie debugger helper" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "Desktopbeheer component" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "X-Window bibliotheek ondersteuning" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "Gnome keyring ondersteuning voor desktop management component" # gb-ignore #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Expressie evaluator" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Syntaxis accentueer routines" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Meer controles voor grafisch component" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Verbeterde standaard dialoog" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "Teksteditor met syntaxis markering" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Multi Document Interface" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "Standaard icoon thema" # gb-ignore #: CDocumentation.class:80 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "GNU Multi Precisie Rekenbiblioteek" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "GNU Wetenschappelijke bibliotheek" #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "GTK+2 gereedschapskist" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL met GTK+ gereedschapskist" #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "GTK+3 gereedschapskist" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ wissel component" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "OpenGL met QT/GTK+ wissel component" #: CDocumentation.class:88 msgid "QT4/QT5 switcher component" msgstr "QT4/QT5 wissel component" #: CDocumentation.class:89 msgid "QT4/QT5 OpenGL switcher component" msgstr "QT4/QT5 OpenGL wissel component" #: CDocumentation.class:90 msgid "QT4/QT5 WebKit switcher component" msgstr "QT4/QT5 WebKit wissel component" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "System tray icoon beheer component" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "Ingebedde HTTP server" #: CDocumentation.class:93 msgid "Image management" msgstr "Afbeeldingen beheer" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "Beeldfilterbewerking component" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "Afbeeldingsroutines van de lmlib2 bibliotheek" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "Afbeeldingen laden en opslaan" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "Bestandsysteem gebeurtenis monitoring" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "XML gereedschappen gebaseerd op libxml" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "Flexibel logsysteem" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "Online kaart weergave" # gb-ignore #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "GStreamer multimedia component" # gb-ignore #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "" # gb-ignore #: CDocumentation.class:104 msgid "Memcached client" msgstr "" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "MIME formaat beheer gebaseerd op GMime bibliotheek" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "MySQL specifieke routines" #: CDocumentation.class:107 msgid "NCurses library" msgstr "NCurses bibliotheek" #: CDocumentation.class:108 msgid "Network programming" msgstr "Netwerk programmeren" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "Netwerk high-level protocol beheer" #: CDocumentation.class:110 msgid "POP3 client" msgstr "POP3 cliënt" #: CDocumentation.class:111 msgid "SMTP client" msgstr "SMTP cliënt" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "OpenAL 3D audio bibliotheek" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "3D programmeren met OpenGL" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "OpenGL hulpprogramma component" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "OpenGL shaders beheer" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Eenvoudige OpenGL game engine gebaseerd op MD2 formaat" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "OpenSSL bibliotheek routines" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "GNU commando optie parser" # gb-ignore #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "PDF genereren op basis van de Poppler bibliotheek" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "QT4 gereedschapskist" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "QT4 gereedschapskist uitbreiding" # gb-ignore #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL met QT4 gereedschapskist" #: CDocumentation.class:125 msgid "QT5 toolkit" msgstr "QT5 gereedschapskist" # gb-ignore #: CDocumentation.class:126 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL met QT5 gereedschapskist" #: CDocumentation.class:128 msgid "QT5 toolkit extension" msgstr "QT5 gereedschapskist uitbreiding" #: CDocumentation.class:129 msgid "Report designer" msgstr "Rapport ontwerper" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "Scannerbeheer bibliotheek gebaseerd op SANE" #: CDocumentation.class:132 msgid "SDL library" msgstr "SDL bibliotheek" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "SDL geluid & CD-ROM beheer" # gb-ignore #: CDocumentation.class:134 msgid "SDL2 component" msgstr "" # gb-ignore #: CDocumentation.class:135 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:136 msgid "Application settings management" msgstr "Applicatie instellingen beheer" #: CDocumentation.class:137 msgid "Signals management" msgstr "Signaal beheer" #: CDocumentation.class:138 msgid "Terminal management" msgstr "Terminal beheer" #: CDocumentation.class:139 msgid "Graphical terminal applications development" msgstr "Grafische terminal applicatie ontwikkeling" #: CDocumentation.class:140 msgid "Unit tests component" msgstr "" #: CDocumentation.class:141 msgid "Utility component" msgstr "Utiliteitscomponent" #: CDocumentation.class:142 msgid "Web applications utility component" msgstr "Web applicatie utiliteitscomponent" #: CDocumentation.class:143 msgid "Video capture" msgstr "Video opname" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Visual Basic compatibiliteit" #: CDocumentation.class:145 msgid "XML tools" msgstr "XML gereedschappen" #: CDocumentation.class:146 msgid "HTML generator" msgstr "HTML generator" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "XML-RPC protocol" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "XSLT gereedschappen gebaseerd op libxslt en libxml" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "Web applicatie gereedschappen" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "Web feed parser en generator" #: CDocumentation.class:151 msgid "Web application development" msgstr "Webapplicatie ontwikkeling" #: CDocumentation.class:152 #, fuzzy msgid "Web application development using processes as session" msgstr "Webapplicatie ontwikkeling" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "Grafisch formulier beheer" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "Gebeurtenis lussen beheer" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "OpenGL weergave" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "Complexe nummers" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "XML beheer" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "Invoegen kleur" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "Huidige datum invoegen" # gb-ignore #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "Locatie" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "WAARSCHUWING! Biblioteek niet gevonden" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Voorziet in" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Formulier" #: CModule.class:29 msgid "Forms" msgstr "Formulieren" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas formulieren" #: CModule.class:30 msgid "Gambas web pages" msgstr "Gambas web pagina's" # gb-ignore #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "" # gb-ignore #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "Gambas rapporten" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "Rapport" #: CModule.class:31 msgid "Reports" msgstr "Rapporten" #: CModule.class:32 msgid "Gambas web forms" msgstr "Gambas webformulieren" #: CModule.class:32 FMain.form:967 msgid "WebForm" msgstr "Webformulier" #: CModule.class:32 msgid "WebForms" msgstr "Webformulieren" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Gambas terminal formulieren" # gb-ignore #: CModule.class:33 FMain.form:974 msgid "TermForm" msgstr "" # gb-ignore #: CModule.class:33 msgid "TermForms" msgstr "" # gb-ignore #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "Gebeurtenis lus" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Voorbeelden zijn opgeslagen op de Gambas farm server. Klik &1 voor toegang tot de farm server on ze te downloaden..." #: CProjectList.class:111 msgid "here" msgstr "hier" #: CProjectList.class:235 msgid "IDE extensions" msgstr "IDE extenties" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "Annuleren" #: CProjectList.class:554 msgid "Do you really want to uninstall this software?" msgstr "Weet je zeker dat je deze software wil deïnstalleren?" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "Deïnstalleer" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "Niet in staat om software te deïnstalleren:" #: CProjectList.class:561 msgid "The software has been successfully uninstalled." msgstr "De software is succesvol gedeïnstalleerd" #: CProjectTree.class:97 msgid "Files" msgstr "Bestanden" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "Project" #: CProjectTree.class:360 msgid "Sources" msgstr "Bronnen" #: CProjectTree.class:362 msgid "Connections" msgstr "Verbindingen" # gb-ignore #: CProjectTree.class:363 msgid "Public" msgstr "" #: CProjectTree.class:364 msgid "Data" msgstr "Gegevens" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Vandaag" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Gisteren" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Twee dagen geleden" #: CRecentProject.class:74 msgid "This week" msgstr "Deze week" #: CRecentProject.class:76 msgid "This month" msgstr "Deze maand" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Download geannuleerd" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "De controle som van het gedownload pakket is ongeldig." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Niet in staat om bron archief te decomprimeren." #: CSoftware.class:361 msgid "Abort" msgstr "Afbreken" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "Negeer" #: CSoftware.class:361 msgid "The following components are required:" msgstr "De volgende componenten zijn vereist:" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "Niet in staat om het project te compileren." #: CSoftware.class:395 msgid "Unable to make executable." msgstr "Niet in staat om een uitvoeringsbestand te maken." #: CSoftware.class:464 msgid "Unable to install source directory" msgstr "Niet in staat on de bron folder te installeren" #: CSoftware.class:663 msgid "yesterday" msgstr "gisteren" #: CSoftware.class:665 msgid "&1 days ago" msgstr "&1 dag geleden" #: CSoftware.class:671 msgid "last week" msgstr "laatste week" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "&1 weken geleden" #: CSoftware.class:679 msgid "last month" msgstr "laatste maand" #: CSoftware.class:681 msgid "&1 months ago" msgstr "&1 maanden geleden" #: CSoftware.class:687 msgid "last year" msgstr "laatste jaar" #: CSoftware.class:689 msgid "on &1" msgstr "op &1" #: CVersionControlGit.class:291 msgid "Unable to push the project." msgstr "Niet in staat op het project te pushen" #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "Lokaal root pad" #: CVersionControlGit.class:308 msgid "Last commit" msgstr "Laatste commit" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "Auteur laatste commit" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "Datum laatste commit" #: CVersionControlGit.class:317 msgid "Current branch" msgstr "Huidige branch" # gb-ignore #: CVersionControlGit.class:318 msgid "Origin" msgstr "" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "De huidige branch is up to date." #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "Een bestand om te commiten in de huidige branch" #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "&1 bestanden voor commit in de huidige branch." #: CVersionControlGit.class:336 msgid "None in the current project." msgstr "Geen in het huidige project" #: CVersionControlGit.class:338 msgid "One in the current project." msgstr "Een in het huidige project." #: CVersionControlGit.class:340 msgid "&1 in the current project." msgstr "&1 in het huidige project." # gb-ignore #: CVersionControlGit.class:344 msgid "Status" msgstr "" # gb-ignore #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:398 msgid "A new Git repository will be created for this project." msgstr "Een nieuw Git repository wordt gecreeëerd voor dit project" #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:436 msgid "Solve conflict." msgstr "Conflict oplossen" #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Datum" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "Revisie" # gb-ignore #: CVersionControlSubversion.class:319 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "Remote laatste commit auteur" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "Remote laatste commit datum" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Het Gambas lettertype is gepubliceerd onder de SIL Open Font License." #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "Dit programma is gepubliceert onder de GNU General Public License." #: Design.module:227 Project.module:2231 msgid "first" msgstr "eerste" #: Design.module:229 Project.module:2233 msgid "second" msgstr "tweede" #: Design.module:231 Project.module:2235 msgid "third" msgstr "derde" # gb-ignore #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "" #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "Het programma is onderbroken door CTRL+C." #: Design.module:445 msgid "The program has been terminated." msgstr "Het programma is beëindigt." #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Het programma geeft terug\n" "de waarde: &1 " #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "Dit project bestaat niet." #: Design.module:1039 msgid "Output terminal" msgstr "Uitvoer terminal" #: Design.module:1067 msgid "No terminal emulator found." msgstr "Geen terminal emulator gevonden." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licentie" #: FAbout.class:241 msgid "Financial support" msgstr "Financiële steun" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "Over Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "Dit programma is VRIJE SOFTWARE; u het herdistribueren en/of wijzigen onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation; ofwel versie 2, of (naar uw keuze) een latere versie.

Dit programma wordt verspreid in de hoop dat het nuttig zal zijn, maar zonder enige garantie; zonder zelfs de impliciete garantie van verkoopbaarheid of geschiktheid voor een bepaald doel. Zie de GNU General Public License voor meer details.\n" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "Bewerk argumenten" # gb-ignore #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "Uitvoeren" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Sluiten" #: FColorChooser.form:15 msgid "Select a color" msgstr "Selecteer een kleur" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Systeem" #: FColorChooser.form:35 msgid "Free" msgstr "Vrij" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "Nog niet klaar maar stabiel" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "Experimenteel" #: FComponentChooser.class:355 msgid "Stable" msgstr "Stabiel" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "Verouderd" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "Dit component is vereist door volgende bibiotheek:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "Dit component is vereist door volgende bibiotheken:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "Dit component is vereist door:

&1" #: FComponentChooser.class:589 msgid "Keep" msgstr "Houden" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Alles verwijderen" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Deze componenten zijn niet compatibel:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "Het &1 component heeft een van de volgende componenten nodig:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "Het &1 component vereist het &2 component." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Selecteer een component" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Toon vervallen componenten" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "Herladen" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Inzoomen" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Uitzoomen" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "Geen zoom" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Bewerken" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Dit bestand is in conflict. Je dient dit conflict op te lossen indien je het bestand opnieuw wil gebruiken." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Niet in staat om bestand te laden:" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Tekst" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Afbeelding" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Het bestand is veranderd.\n" "Wilt u het dialoogvenster echt sluiten?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Sommige conflicten zijn nog niet opgelost." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Niet in staat om het conflict op te lossen." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Het bestand is veranderd.\n" "Wilt u echt een ander bestand openen?" #: FConflict.class:267 msgid "Conflict files" msgstr "Bestandsconflicten" #: FConflict.form:31 msgid "Version conflict" msgstr "Versieconflict" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Knippen" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Kopiëren" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Plakken" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Ongedaan maken" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Herstel" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Inspringen" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Inspringen verwijderen" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Openen" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Opslaan" #: FConflict.form:160 msgid "Solve" msgstr "Oplossen" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(Declaraties)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "Er zijn nog steeds conflicten in dit bestand." #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "Gevorderd" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "Hoofdletters" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "Kleine letters" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Toelichting" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Toelichting verwijderen." #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "Plakken speciaal" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Selecteer Alles" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Ga naar regel" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "Bladwijzers" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "Volgende zoeken" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "Vorige zoeken" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Weergeven" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 msgid "Automatic word wrap" msgstr "Automatische terugloop" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "Inspringen met tab" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "Geen splitsing" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "Horizontale splitsing" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "Verticale splitsing" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Einde van regel" # gb-ignore #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "" # gb-ignore #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "" # gb-ignore #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "Open code" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "Plakken als string" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "Plakken als multi-regel string" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "Plakken als commentaar" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "Tekstbewerker" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Code" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Conflict opgelost" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Vorig conflict" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Volgende conflict" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Bewaar mijn wijzigingen" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Neem hun wijzigingen over" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Bewaar al mijn wijzigingen" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Neem al hun wijzigingen over" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Naam" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Type" #: FConnectionEditor.class:61 msgid "Length" msgstr "Lengte" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Standaardwaarde" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Collatie" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Inhoud" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Uniek" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Veld" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "SQL aaanvragen" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Niet in staat om connectie met database te maken." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Niet opslaan" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "De tabel '&1' is gewijzigd. Wil je deze opslaan?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Geen record" #: FConnectionEditor.class:500 msgid "One record" msgstr "Een record" # gb-ignore #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Niet in staat om tabel '&1' te laden." #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "Niet in staat om query uit te voeren." # gb-ignore #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "oneindig" # gb-ignore #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "Booleaans" # gb-ignore #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "Integer" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "Lang" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "Serieel" # gb-ignore #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "Deze naam is al in gebruik." #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "Voer een nummer in." #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "De lengte moet groter dan 1 en kleiner dan 255 zijn." #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "Verkeerde type combinatie." #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "Deze naam bestaat reeds." #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "Dit veld is gebruikt in een index." #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "De tabel '&1' heeft geen primaire sleutel." #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "Kan tabel ' &1' niet maken." #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "Weet je zeker dat je tabel '&1' wilt verwijderen ?" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "Kan tabel '&1' niet verwijderen." #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "Weet je zeker dat je geselcteerde rijen wilt verwijderen?" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "Weet je zeker dat je deze query wilt verwijderen?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Connectie editor" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Toon systeem tabellen" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nieuwe tabel" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Verwijder tabel" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Verwijderen" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Hernoem tabel" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Hernoemen" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Kopieer tabel" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Plakken tabel" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importeer text bestand" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Importeren" #: FConnectionEditor.form:213 msgid "Fields" msgstr "Velden" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Toevoegen" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Omlaag" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Omhoog" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Kopieer veld lijst" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Indexen" #: FConnectionEditor.form:293 msgid "New index" msgstr "Nieuwe index" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Voer query uit" #: FConnectionEditor.form:359 msgid "New query" msgstr "Nieuwe query" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Nieuw" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "Verwijder query" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Wissen" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "Bewerken" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exporteer naar CSV bestand" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exporteren" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Verwijder" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Selecteer alles" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Deselekteer alles" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Gambas 3 project conversie" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "Het '&1' commando heeft gefaald." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Niet in staat om foutenrapport te verzenden" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "Het programma is onverwacht gestopt!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Beschrijf hier a.u.b hoe de crash te reproduceren. " # gb-ignore #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "Stuur een foutenrapport per mail" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "Project niet aan de mail toevoegen" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Geen ouder)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Kan bestand niet toevoegen." #: FCreateFile.form:37 msgid "New file" msgstr "Nieuw bestand" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Opties" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Breedte" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Hoogte" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Dialoogvenster beheer" #: FCreateFile.form:155 msgid "Parent class" msgstr "Ouder klasse" #: FCreateFile.form:168 msgid "Exported" msgstr "Geëxporteerd" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Automatische instantie" #: FCreateFile.form:180 msgid "Not creatable" msgstr "Niet creëerbaar" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Automatische extensie" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Project 'checkout' faalde." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Kan project niet creëren" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "Kies a.u.b. een sjabloon" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Voer de locatie van het repository in." #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Nieuw project" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "Project type" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Ouder folder" #: FCreateProject.form:90 msgid "Project details" msgstr "Project details" #: FCreateProject.form:99 msgid "Project name" msgstr "Project naam" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "De project naam is de naam van de project map." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "De uiteindelijke project map is:" #: FCreateProject.form:134 msgid "Project title" msgstr "Project titel" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "De project titel is de ware naam van de applicatie." #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Project is vertaalbaar" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "Openen in een ander venster" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repository" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Het project repository wordt direct naar het 'svn checkout' commando gestuurd" #: FDebugButton.class:104 #, fuzzy msgid "Test has failed." msgstr "Project 'checkout' faalde." #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "Foutopsporing" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Konsole" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Breekpunten" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "Waarschuwingen" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "Versiecontrole" #: FDebugButton.form:84 FDebugInfo.form:398 msgid "Search result" msgstr "Zoek resultaat" #: FDebugExpr.class:4 msgid "not available" msgstr "niet beschikbaar" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Waarde" #: FDebugExpr.class:511 msgid "Key" msgstr "Sleutel" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Symbool" #: FDebugExpr.form:33 msgid "Watch" msgstr "Bekijk" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Afdrukken naar console" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Toon alle symbolen" #: FDebugExpr.form:88 msgid "No element" msgstr "Geen element" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Lijn" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Functie" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "Bestand" #: FDebugInfo.class:49 msgid "Col." msgstr "Kol." #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "Bericht" #: FDebugInfo.class:120 msgid "native code" msgstr "inheemse kode" #: FDebugInfo.class:187 msgid "Watch expressions" msgstr "Expressies bekijken" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Weet je zeker dat je deze expressie lijst wilt wissen ?" #: FDebugInfo.class:1091 msgid "File not loaded" msgstr "Bestand niet geladen" #: FDebugInfo.class:1230 msgid "Current object" msgstr "Huidig object" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "Lokale variabelen" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Fouten opsporen" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "Verwijder huidige expressie" #: FDebugInfo.form:130 msgid "Add expression" msgstr "Expressie toevoegen" #: FDebugInfo.form:190 msgid "Remove breakpoint" msgstr "Verwijder breekpunt" #: FDebugInfo.form:198 msgid "Disable breakpoint" msgstr "Schakel breekpunt uit" #: FDebugInfo.form:200 msgid "Disable" msgstr "Uitschakelen" #: FDebugInfo.form:206 msgid "Enable breakpoint" msgstr "Breekpunt inschakelen" #: FDebugInfo.form:208 msgid "Enable" msgstr "Inschakelen" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "Alle breekpunten verwijderen" #: FDebugInfo.form:264 msgid "Tasks" msgstr "Taken" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "Wis konsole" #: FDebugInfo.form:300 #, fuzzy msgid "Run test" msgstr "Uitvoeren met" # gb-ignore #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Synchroniseren" #: FDebugInfo.form:346 FMain.form:525 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "Alles toevoegen aan repository" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "Annuleer huidige zoekopdracht" #: FDebugInfo.form:422 msgid "Show search window" msgstr "Toon zoek venster" #: FDebugInfo.form:429 msgid "Search again" msgstr "Opnieuw zoeken" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "Zoekwoord kan niet worden gevonden" #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "(Declaraties)" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "Code opmaken" #: FEditor.form:201 msgid "Sort procedures" msgstr "Sorteer procedures" #: FEditor.form:230 msgid "Go to" msgstr "Ga naar" #: FEditor.form:249 msgid "Find definition" msgstr "Zoek definitie" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Uitvoeren tot huidige regel" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Omzetten breekpunt" #: FEditor.form:320 msgid "Watch expression" msgstr "Expressie bekijken" #: FEditor.form:329 msgid "Open form" msgstr "Open formulier" #: FEditor.form:336 FMain.form:1133 msgid "Run this class" msgstr "Voer deze klasse uit" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "Vergrendelt" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Afdrukken" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "Editor" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 msgid "Show modifications" msgstr "" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 msgid "Previous modification" msgstr "" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "" #: FEditor.form:570 FTextEditor.form:546 msgid "Insert special character" msgstr "Speciaal karakter invoegen" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "Maak code mooi" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "Procedure lijst" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "Vergrendel / ontgrendel bestand" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV bestanden" #: FExportData.class:113 msgid "Unable to export data." msgstr "Niet in staat om data te exporteren." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Overschrijf" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Dit bestand bestaat reeds.\n" "\n" "Wil je het overschrijven?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Scheidings teken" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Karakter insluiten" #: FExportData.form:54 msgid "Export field names" msgstr "Exporteer veld namen" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exporteer alleen geselecteerde records" # gb-ignore #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Authenticatie mislukt." # gb-ignore #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" # gb-ignore #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Gebruiker" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Wachtwoord" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Wachtwoord onthouden" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Ben anoniem" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Voer een geldig e-mail adres in." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Bevestigd wachtwoord komt niet overeen." #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Niet in staat om gebruiker te registreren." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" "Je bent succesvol geregistreerd.\n" "\n" "Je ontvangt snel een bevesigingsmail." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Registreer" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Bevestig wachtwoord" # gb-ignore #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" "Een bevestigingsmail wordt naar het gespecificeerde e-mail adres verzonden. Klik op de link in deze mail om je account te activeren. \n" "

\n" "Jou e-mail zal niet op een publieke server worden opgeslagen." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Niet in staat om connectie te openen." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Niet in staat om tabel velden op te halen." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Lijst \"Velden\" bewerken" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Selecteer een veld" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Verbinding" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabel" #: FFileInfoVC.class:23 #, fuzzy msgid "'&1' version control" msgstr "Versiecontrole" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "Dit bestand is vergrendeld en zal bij de volgende 'commit' worden verwijdert." #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "Dit bestand heeft geen versie en moet aan het repository worden toegevoegd." #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "Dit bestand is niet gewijzigd sinds de laatste 'commit'." #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "Doorgaan" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "Je gaat je veranderingen annuleren!" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Wijzigingen" #: FFileInfoVC.form:41 FVersionControl.form:55 msgid "History" msgstr "" #: FFileInfoVC.form:59 msgid "Undo changes" msgstr "Wijzigingen ongedaan maken" # gb-ignore #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Gambas module" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Gambas klasse" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "'&1' eigenschappen" #: FFontChooser.form:12 msgid "Select a font" msgstr "Selecteer een karakterset" #: FForm.class:136 msgid "Bad form file" msgstr "Incorrect formulier bestand" #: FForm.class:268 msgid "Unknown control: &1" msgstr "Onbekende control: &1" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "Component mist voor control &1" #: FForm.class:1876 msgid "Cannot paste data." msgstr "Kan gegevens niet plakken." #: FForm.form:178 msgid "Copy at the same place" msgstr "Kopieer op zelfde plaats" #: FForm.form:198 msgid "Delete container only" msgstr "Enkel container verwijderen" #: FForm.form:205 msgid "Embed into a container" msgstr "Inbedden in een container" #: FForm.form:211 msgid "Change into" msgstr "Wijzig naar" #: FForm.form:219 msgid "Select" msgstr "Selecteer" #: FForm.form:232 msgid "Select parent" msgstr "Selecteer ouder" #: FForm.form:245 msgid "Arrangement" msgstr "Plaatsen" #: FForm.form:249 msgid "Bring to foreground" msgstr "Naar voorgrond brengen" #: FForm.form:256 msgid "Send to background" msgstr "Naar achtergrond sturen" #: FForm.form:266 msgid "Horizontal" msgstr "Horizontaal" #: FForm.form:273 msgid "Rows" msgstr "Rijen" #: FForm.form:279 msgid "Vertical" msgstr "Vertikaal" #: FForm.form:286 msgid "Columns" msgstr "Kolommen" #: FForm.form:295 msgid "Center horizontally" msgstr "Horizontaal centreren" #: FForm.form:301 msgid "Center vertically" msgstr "Vertikaal centreren" #: FForm.form:307 msgid "Alignment" msgstr "Uitlijning" #: FForm.form:311 msgid "Align to left" msgstr "Links uitlijnen" #: FForm.form:317 msgid "Align to right" msgstr "Rechts uitlijnen" #: FForm.form:323 msgid "Align to top" msgstr "Boven uitlijnen" #: FForm.form:329 msgid "Align to bottom" msgstr "Onder uitlijnen" #: FForm.form:338 msgid "Same width" msgstr "Zelfde breedte" #: FForm.form:344 msgid "Same height" msgstr "Zelfde hoogte" #: FForm.form:353 msgid "Show tab" msgstr "Toon tab" #: FForm.form:361 msgid "Move tab" msgstr "Verplaatst tab" #: FForm.form:366 msgid "First" msgstr "Eerste" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Vorige" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Volgende" #: FForm.form:387 msgid "Last" msgstr "Laatste" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Menu-editor" #: FForm.form:407 msgid "Event" msgstr "Gebeurtenis" #: FForm.form:421 msgid "Run this form" msgstr "Voer dit formulier uit" #: FForm.form:601 msgid "Toggle grid" msgstr "Omzetten rooster" #: FForm.form:610 FImageEditor.form:515 msgid "Toggle information tooltip" msgstr "Omzetten informatie tooltip" #: FForm.form:729 msgid "Move tab first" msgstr "Verplaatst eerste tab" #: FForm.form:736 msgid "Move tab left" msgstr "Verplaats tab naar links" #: FForm.form:743 msgid "Move tab right" msgstr "Verplaats tab naar rechts" #: FForm.form:750 msgid "Move tab last" msgstr "Verplaatst laatste tab" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Vet" #: FForm.form:786 msgid "Italic" msgstr "Cursief" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Onderstrepen" #: FForm.form:802 msgid "Bigger font" msgstr "Grotere lettertype" #: FForm.form:810 msgid "Smaller font" msgstr "Kleiner lettertype" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "Standaard lettertype" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Achtergrond" #: FForm.form:834 msgid "Foreground" msgstr "Voorgrond" #: FForm.form:845 msgid "Lock / unlock form" msgstr "Vergrendel / ontgrendel formulier" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Hierarchy" #: FFormStack.form:24 msgid "Move top" msgstr "Verplaats naar top" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Verplaats omhoog " #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Verplaats omlaag" #: FFormStack.form:42 msgid "Move bottom" msgstr "Verplaats naar bodem" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "Standaard taal" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Help browser" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "Toon helpboom" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Ga terug" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Ga verder" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "IDE toetsenbord snelkoppelingen" # gb-ignore #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "Vertaling" #: FImageEditor.form:159 msgid "Action" msgstr "Actie" #: FImageEditor.form:164 msgid "Crop" msgstr "Afknippen" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Horizontaal spiegelen" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Verticaal spiegelen" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Linksom draaien" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Rechtsom draaien" #: FImageEditor.form:205 msgid "Resize" msgstr "Formaat wijzigen" #: FImageEditor.form:212 msgid "Rotate" msgstr "Draaien" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Verberg selectie" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selectie" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Selectie omkeren" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Dupliceer selectie" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "Selectie compenseren" #: FImageEditor.form:266 msgid "Union" msgstr "Unie" #: FImageEditor.form:272 msgid "Difference" msgstr "Verschil" #: FImageEditor.form:278 msgid "Intersection" msgstr "Intersectie" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "Exclusieve of" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Raster vormgeven" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Zoom normaal" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Passend zoomen" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "Opslaan als JPEG" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "Opslaan als PNG" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "Opslaan als BMP" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "Opslaan als TIFF" #: FImageEditor.form:428 msgid "Image editor" msgstr "Afbeeldingseditor" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "Tekenraster" #: FImageEditor.form:558 msgid "Move" msgstr "Verplaats" #: FImageEditor.form:569 msgid "Draw" msgstr "Tekenen" #: FImageEditor.form:579 msgid "Erase" msgstr "Wissen" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Rechthoek" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Ellipsvormig" #: FImageEditor.form:629 msgid "Magic wand" msgstr "Toverstaf" #: FImageEditor.form:646 msgid "Edit selection" msgstr "Selectie bewerken" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "Afbeeldingsformaat wijzigen of rekken" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "Afbeelding draaien" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "px" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "Dupliceer" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Systeem klembord" #: FImageProperty.class:1267 msgid "Arrow" msgstr "Pijl" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "Pijl #2" #: FImageProperty.class:1270 msgid "Triangle" msgstr "Driehoek" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "Vierkante driehoek" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "Vijfhoek" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "Zeshoek" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "Kleur" #: FImageProperty.form:172 msgid "Gradient" msgstr "Verloop" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Lineaire verloop" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Stralend verloop" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "Verloop stop toevoegen" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "Verwijder verloop stop" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "Selecteer gradient stop kleur" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "Verloop omkeren" # gb-ignore #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "Klembord" #: FImageProperty.form:338 msgid "Shapes" msgstr "Vormen" #: FImageProperty.form:363 msgid "Stroke" msgstr "Strelen" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "Vullen" #: FImageProperty.form:391 msgid "Colorize" msgstr "Inkleuren" #: FImageProperty.form:399 msgid "Desaturate" msgstr "Onverzadigen" #: FImageProperty.form:407 msgid "Make transparent" msgstr "Maak transparant" #: FImageProperty.form:417 msgid "Line cap" msgstr "Lijn doppen" #: FImageProperty.form:422 msgid "Line join" msgstr "Lijn samenvoegen" #: FImageProperty.form:427 msgid "Fill rule" msgstr "Vul regel" #: FImageProperty.form:445 msgid "Opacity" msgstr "Ondoorzichtigheid" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Grootte" #: FImageProperty.form:481 msgid "Tolerance" msgstr "Tolerantie" #: FImageProperty.form:500 msgid "Roundness" msgstr "Rondheid" #: FImageProperty.form:526 msgid "Effects" msgstr "Effecten" #: FImageProperty.form:535 msgid "Brightness" msgstr "Helderheid" # gb-ignore #: FImageProperty.form:554 msgid "Contrast" msgstr "" # gb-ignore #: FImageProperty.form:573 msgid "Gamma" msgstr "" #: FImageProperty.form:592 msgid "Lightness" msgstr "Lichtheid" #: FImageProperty.form:611 msgid "Hue" msgstr "Tint" #: FImageProperty.form:630 msgid "Saturation" msgstr "Verzadiging" # gb-ignore #: FImageProperty.form:649 msgid "Blur" msgstr "" #: FImageProperty.form:666 msgid "Transparency" msgstr "Transparantie" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Voorbeeld" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "Toepassen" #: FImageProperty.form:735 msgid "Centered" msgstr "Gecentreerd" #: FImageProperty.form:745 msgid "Right align" msgstr "Rechts uitlijnen" #: FImageProperty.form:754 msgid "Left align" msgstr "Links uitlijnen" #: FImageProperty.form:767 msgid "Top align" msgstr "Boven uitlijnen" #: FImageProperty.form:776 msgid "Middle align" msgstr "Midden uitlijning" #: FImageProperty.form:786 msgid "Baseline align" msgstr "Basis uitlijning" #: FImageProperty.form:795 msgid "Bottom align" msgstr "Onder uitlijnen" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "Raster resolutie" #: FImageProperty.form:849 msgid "Grid snap" msgstr "Raster snap" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "Teken diagonalen" #: FImageQuality.form:10 msgid "Image quality" msgstr "Afbeeldingskwaliteit" #: FImageResize.form:25 msgid "Resize image" msgstr "Afbeeldingsformaat wijzigen" #: FImageResize.form:65 msgid "Resize and center" msgstr "Formaat wijzigen en centreren" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "Formaat wijzigen en horizontaal centreren" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "Formaat wijzigen en verticaal centreren" #: FImageResize.form:86 msgid "Stretch image" msgstr "Afbeelding rekken" #: FImageResize.form:111 msgid "Add a border" msgstr "Rand toevoegen" # gb-ignore #: FImageResize.form:116 msgid "Ratio" msgstr "" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas klassen" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas modulen" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Cascading stijlbladen..." #: FImportFile.class:33 msgid "HTML files" msgstr "HTML bestanden" #: FImportFile.class:33 msgid "Javascript files" msgstr "Javascript bestanden" #: FImportFile.class:33 msgid "Picture files" msgstr "Afbeeldingsbestanden" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Kan bestand niet importeren" #: FImportFile.form:9 msgid "Import files" msgstr "Importeer bestanden" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Creëer symbolische links" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Alle bestanden" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Automatische sleutel)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Veld_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Niet voldoende waarden" #: FImportTable.class:393 msgid "Too many values" msgstr "Teveel waarden" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Geannuleerd door gebruiker" #: FImportTable.class:427 msgid "No record imported." msgstr "Geen record geïmporteerd." #: FImportTable.class:429 msgid "One record imported." msgstr "Een record is geïmporteerd." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 records geïmporteerd." #: FImportTable.form:35 msgid "Import file" msgstr "Importeer bestand" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Selecteer het CSV bestand voor import" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Bron" #: FImportTable.form:78 msgid "Charset" msgstr "Tekenset" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Strip overbodige lege ruimtes" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Negeer eerste regels" #: FImportTable.form:139 msgid "Line(s)" msgstr "Lijn(en)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Bestemming" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "De eerste regel bevat de veld namen" #: FImportTable.form:176 msgid "Key field" msgstr "Sleutelveld" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "" #: FLayout.class:30 FOption.class:1694 msgid "Override" msgstr "" #: FLayout.class:30 msgid "This layout already exists." msgstr "" #: FLayout.form:14 msgid "Save layout" msgstr "" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "Element &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Weet je zeker dat je deze lijst wilt wissen ?" #: FList.form:25 msgid "Edit list property" msgstr "Lijst \"Eigenschappen\" bewerken" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "Invoegen" #: FList.form:87 msgid "Invert" msgstr "Omkeren" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Weet je zeker dat je deze link wilt verwijderen ?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Weet je zeker dat je deze map wilt verwijderen?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Weet je zeker dat je dit bestand wil verwijderen ?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Kan bestand of map niet verwijderen" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "Bestand of map bestaat niet meer." #: FMain.class:759 msgid "Sort history" msgstr "Sorteer geschiedenis" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "Sorteer op datum" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "Sorteer op naam" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "Sorteren per pad" #: FMain.class:775 msgid "&Clear history" msgstr "&Geschiedenis wissen" #: FMain.class:959 msgid "New folder" msgstr "Nieuwe map" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "De GNU vertaalgereedschappen zijn niet op je systeem geïnstalleerd.\n" "\n" "Installeer deze om in staat te zijn de vertaling te doen." #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "Niet in staat om bestand te 'droppen' in het project." #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "Alle backup of aangemaakte bestanden worden verwijderd uit de project directorie." #: FMain.class:1872 msgid "Clean" msgstr "Schoon" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "Weet je zeker dat je elk bestand aan het repository wilt toevoegen?" #: FMain.class:2329 msgid "Choose a profile" msgstr "Kies een profiel" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "Profiel voor project &1 " #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "Selecteer een bestand" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "Dit bestand bevind zich in het project." #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Het bestand is gewijzigd.\n" "\n" "All uw veranderingen gaan verloren." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Project openen" #: FMain.form:306 msgid "Open recent" msgstr "Recent geopend" #: FMain.form:314 msgid "Open example" msgstr "Open voorbeeld" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "Open bestand" #: FMain.form:332 msgid "Save project" msgstr "Project opslaan" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Project opslaan als" #: FMain.form:351 msgid "Reload project" msgstr "Herlaad project" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Afsluiten" #: FMain.form:395 msgid "Save as" msgstr "Opslaan als" #: FMain.form:435 msgid "Compile" msgstr "Compileren" #: FMain.form:442 msgid "Compile All" msgstr "Alles compileren" #: FMain.form:452 msgid "Translate" msgstr "Vertalen" #: FMain.form:461 msgid "Make" msgstr "Maken" #: FMain.form:465 msgid "Executable" msgstr "Uitvoeringsbestand" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "Broncode archief" #: FMain.form:479 msgid "Installation package" msgstr "Installatiepakket" # gb-ignore #: FMain.form:486 msgid "Patch" msgstr "" #: FMain.form:489 msgid "Create" msgstr "Creëren" #: FMain.form:518 msgid "Undo synchronization" msgstr "Synchronizatie ongedaan maken" # gb-ignore #: FMain.form:537 msgid "Branch" msgstr "" #: FMain.form:542 msgid "Put under version control" msgstr "Onder versie controle plaatsen" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "Publiceer" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "Opschonen" #: FMain.form:563 msgid "Refresh" msgstr "Verversen" #: FMain.form:592 msgid "Run with" msgstr "Uitvoeren met" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "Pauze" #: FMain.form:620 msgid "Stop" msgstr "Stop" #: FMain.form:627 msgid "Step" msgstr "Stap" #: FMain.form:634 msgid "Forward" msgstr "Voorwaarts" #: FMain.form:641 msgid "Finish" msgstr "Beëindigen" #: FMain.form:650 msgid "Use terminal emulator" msgstr "Gebruik terminal emulator" #: FMain.form:656 msgid "Redirect standard error output" msgstr "Standaard fouten uitvoer omleiden" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "Gebruik ingebedde HTTP server" #: FMain.form:668 msgid "Activate profiling" msgstr "Activeer profilering" #: FMain.form:677 #, fuzzy msgid "Invert language orientation" msgstr "Verloop omkeren" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 #, fuzzy msgid "Show database requests" msgstr "Negeer database karakterset" #: FMain.form:705 msgid "GUI component" msgstr "GUI component" #: FMain.form:709 msgid "Current desktop" msgstr "Huidige desktop" #: FMain.form:746 msgid "Open profile" msgstr "Open profiel" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "Wis alle breekpunten" #: FMain.form:757 msgid "Close all debug windows" msgstr "Sluit alle debug vensters" #: FMain.form:795 msgid "Status bar" msgstr "Status balk" #: FMain.form:802 msgid "Hide menubar" msgstr "Verberg menubalk" #: FMain.form:826 msgid "Close all windows" msgstr "Sluiten alle vensters" #: FMain.form:833 msgid "Tools" msgstr "Gereedschap" #: FMain.form:837 msgid "Find" msgstr "Zoek" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Vervangen" #: FMain.form:853 msgid "Browse project" msgstr "Blader project" #: FMain.form:860 msgid "Open a terminal" msgstr "Open een terminal" #: FMain.form:867 msgid "Send project by mail" msgstr "Verzend project per mail" #: FMain.form:873 msgid "Update all forms" msgstr "Alle formulieren bijwerken" # gb-ignore #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:891 msgid "Shortcuts" msgstr "Sneltoetsen" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Voorkeuren" #: FMain.form:911 msgid "Directory" msgstr "Map" # gb-ignore #: FMain.form:916 msgid "Project link" msgstr "" # gb-ignore #: FMain.form:925 msgid "Module" msgstr "" #: FMain.form:932 msgid "Test module" msgstr "" #: FMain.form:991 msgid "HTML file" msgstr "HTML bestand" #: FMain.form:998 msgid "Style sheet" msgstr "Stijlblad" #: FMain.form:1005 msgid "Javascript file" msgstr "Javascript bestand" #: FMain.form:1013 msgid "Other" msgstr "Overig" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Recent" #: FMain.form:1047 msgid "Open in file manager" msgstr "Openen in bestandbeheer" #: FMain.form:1052 msgid "Open in project" msgstr "Openen in project" #: FMain.form:1056 msgid "Open with" msgstr "Openen met" #: FMain.form:1064 msgid "Compress all" msgstr "Alles comprimeren" #: FMain.form:1070 msgid "Uncompress all" msgstr "Decomprimeer alles" #: FMain.form:1117 msgid "Copy file path" msgstr "Kopier bestandspad" #: FMain.form:1126 msgid "Startup class" msgstr "Startklasse" #: FMain.form:1141 msgid "Add to repository" msgstr "Aan repository toevoegen" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filter" #: FMain.form:1149 msgid "Show exported classes" msgstr "Toon geëxporteerde klassen" #: FMain.form:1154 msgid "Show added files" msgstr "Toon toegevoegde bestanden" #: FMain.form:1159 msgid "Show modified files" msgstr "Toon gewijzigde bestanden" #: FMain.form:1164 msgid "Show files in conflict" msgstr "Toon bestanden in conflict" #: FMain.form:1172 msgid "Show all" msgstr "Toon alles" #: FMain.form:1184 msgid "Do not translate" msgstr "Niet vertalen" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "Nieuwe connectie" # gb-ignore #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Tips van de dag" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "Toetsenbord snelkoppelingen" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "Systeeminformatie" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Project eigenschappen" #: FMain.form:1386 msgid "Refresh project" msgstr "Project verversen" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Maak uitvoerings bestand" #: FMain.form:1428 msgid "Make source archive" msgstr "Maak broncode archief" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "Maak installatie pakket" #: FMain.form:1457 msgid "Properties sheet" msgstr "Eigenschappen werkblad" #: FMain.form:1466 msgid "Toolbox" msgstr "Toolbox" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "Zoeken" #: FMain.form:1508 msgid "Compile all" msgstr "Alles compileren" #: FMain.form:1557 msgid "Finish current function" msgstr "Beëindig huidige functie" #: FMain.form:1573 msgid "Show menubar" msgstr "Toon menubalk" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "Publiceer software" #: FMain.form:1663 msgid "&File" msgstr "&Bestand" #: FMain.form:1687 msgid "&Project" msgstr "&Project" #: FMain.form:1699 msgid "&Debug" msgstr "&Fouten opsporen" #: FMain.form:1711 msgid "&View" msgstr "&Weergeven" #: FMain.form:1723 msgid "&Tools" msgstr "&Gereedschap" #: FMain.form:1735 msgid "&?" msgstr "&?" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1866 msgid "Show properties sheet" msgstr "" #: FMain.form:1874 msgid "Show project tree" msgstr "" #: FMain.form:1944 msgid "Show property help" msgstr "" #: FMain.form:1952 msgid "Show controls" msgstr "" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas applicaties" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "Voer dit commando uit na" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) wordt vervangen door het pad van het uitvoeringsbestand" #: FMakeExecutable.form:57 msgid "Increment version" msgstr "" #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Debugging-informatie behouden in het uitvoerbare bestand" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "Maak een snelkoppeling op het bureaublad" #: FMakeInstall.class:137 msgid "Package" msgstr "Pakket" #: FMakeInstall.class:138 msgid "Min. version" msgstr "Min. versie" #: FMakeInstall.class:139 msgid "Max. version" msgstr "Max. versie" #: FMakeInstall.class:145 msgid "File or directory" msgstr "Bestand of map" #: FMakeInstall.class:279 msgid "Creating packages..." msgstr "Pakketten maken..." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "De pakketten zijn succesvol gemaakt." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Geef je naam a.u.b." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Geef je email adres a.u.b." #: FMakeInstall.class:345 msgid "Please enter the vendor name." msgstr "Voer de naam van de verkoper in." #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "Er is geen WIJZIGINGSLOG opgegeven voor deze uitgave." #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Geef de eerste WIJZIGINGSLOG vermelding." #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "Kies a.u.b. minstens één doeldistributie." #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "Kies a.u.b. de pakketgroep voor elke doel distributie." #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "Kies a.u.b. een pakketgroep" #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "Kies a.u.b. de menu locatie voor elke doel distributie." #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "Kies a.u.b. een menulokatie." #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "Kan extra bestand niet vinden: &1" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "Kies a.u.b een doelmap voor ieder extra bestand." #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Debian pakketsysteem kan niet overweg met spaties in bestandsnamen." #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Debian pakketsysteem kan niet overweg met spaties in de folders." #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "Het pakket kan niet worden opgeslagen in de project map." #: FMakeInstall.class:542 msgid "Initial release" msgstr "Initiële uitgave" #: FMakeInstall.class:802 msgid "Menus" msgstr "Menus" #: FMakeInstall.class:870 msgid "Groups" msgstr "Groepen" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "Verkeerde karakters" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "Weet je zeker dat je alle extra afhankelijkheden wilt verwijderen?" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "Weet je zeker dat je alle extra bestanden wilt verwijderen?" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "Selecteer de doel map" #: FMakeInstall.form:151 msgid "Create package" msgstr "Creëer pakket" #: FMakeInstall.form:154 msgid "Package information" msgstr "Pakket informatie" #: FMakeInstall.form:160 msgid "Package name" msgstr "Pakketnaam" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "Voorvoegsel verkoper of naam toevoegen aan pakketnamen" #: FMakeInstall.form:190 #, fuzzy msgid "Add major version number to package names" msgstr "Voorvoegsel verkoper of naam toevoegen aan pakketnamen" #: FMakeInstall.form:205 msgid "Package version" msgstr "Pakketversie" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "Naam verkoper" #: FMakeInstall.form:241 FOption.form:377 msgid "Vendor prefix" msgstr "Voorvoegsel verkoper" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Onderhouderinformatie" # gb-ignore #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Wijzigingslog" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Doel distributie" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Zelf-extraheerbaar" #: FMakeInstall.form:612 msgid "Package group" msgstr "Pakket groep" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Menu ingang" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categorieën" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Bureaublad configuratie bestanden" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "Mimetypen" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" "Voer het mimetype behandelt door je applicatie hier in.\n" "Voer een mimetype per regel in.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Additionele configuratie" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Het volgende wordt toegevoegd aan het einde van het desktop configuratie bestand." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Extra afhankelijkheden" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Zelfde afhankelijkheden voor alle doelen" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Extra bestanden" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Zelfde bestanden voor alle doelen" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Extra bestanden horen in de Project map van het huidige project, m.a.w. in de .hidden map van het project op de schijf." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Extra autoconf testen" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Extra testen toevoegen voor het configuratie proces.\n" "

Laat dit leeg als je het niet nodig hebt of als je niets weet over autoconf scripts." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Doelmap" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Creëer map voor iedere distributie" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Uitvoer commando's" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Creeëer pakket nu" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Selecteer het oorspronkelijke archief." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Selecteer het oorspronkelijke project." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Voer de naam van het patch bestand in." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "Patch is succesvol gegenereerd." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Niet in staat om een patch te genereren." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Genereer patch" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Selecteer patch oorsprong" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Patch oorsprong" #: FMakePatch.form:59 msgid "Project directory" msgstr "Project map" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Automatische patch naam" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Patch bewerken" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Deze ' wizard' genereert een patch tussen een oorspronkelijk project en het huidige project." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Selecteer broncode bestand" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "Broncode pakketten" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Selecteer project map" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Kies een naam voor het patch bestand" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Patch/Diff bestanden" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "Menus zijn gewijzigd!" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Voer een menu naam in. " #: FMenu.class:332 msgid "Bad menu name !" msgstr "Incorrecte menunaam !" #: FMenu.class:338 msgid "Bad group name !" msgstr "Incorrecte groepnaam !" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Dit menu is te diep!" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "gewijzigd" #: FMenu.form:84 msgid "Insert menu" msgstr "Invoegen menu" #: FMenu.form:92 msgid "Insert separator" msgstr "Scheiding invoegen" #: FMenu.form:100 msgid "Insert menu before" msgstr "Voor menu invoegen" #: FMenu.form:102 msgid "Insert before" msgstr "Vooraf invoegen" #: FMenu.form:108 msgid "Delete menu" msgstr "Verwijder menu" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Klik op Invoegen voor een nieuw menu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Voer de naam van de database in." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Voer je wachtwoord in" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Connectie eigenschappen" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Selecteer een map" #: FNewConnection.class:229 msgid "Create database" msgstr "Creëer database" #: FNewConnection.class:241 msgid "Delete database" msgstr "Verwijder database" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Niet in staat om database te creëren." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Weet je zeker dat je database '&1' wilt verwijderen ?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Niet in staat om database te wissen." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Host" #: FNewConnection.form:124 msgid "Path" msgstr "Pad" #: FNewConnection.form:154 msgid "No password" msgstr "Geen wachtwoord" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "Database" #: FNewConnection.form:241 msgid "From" msgstr "Van" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Negeer database karakterset" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Metadata weergeven" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Database structuur onthouden" #: FNewTable.class:33 msgid "Create table" msgstr "Creëer tabel" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Voer de naam van de nieuwe tabel in." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Tabel '&1' bestaat reeds." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nieuwe vertaling" #: FOpenProject.form:22 msgid "Select a project" msgstr "Project selecteren" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Voorbeelden" #: FOption.class:4 msgid "Amber" msgstr "Amber" #: FOption.class:4 msgid "Amethyst" msgstr "Amethyst" # gb-ignore #: FOption.class:4 msgid "Blues" msgstr "" # gb-ignore #: FOption.class:4 msgid "Emerald" msgstr "" # gb-ignore #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidiaan" # gb-ignore #: FOption.class:4 msgid "Pastel" msgstr "" #: FOption.class:4 msgid "Quest" msgstr "Zoektocht" #: FOption.class:4 msgid "Quick" msgstr "Snel" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "Sapphire" # gb-ignore #: FOption.class:4 msgid "Visual" msgstr "" # gb-ignore #: FOption.class:4 msgid "Zen" msgstr "" # gb-ignore #: FOption.class:87 msgid "Custom" msgstr "" #: FOption.class:89 msgid "Desktop" msgstr "Bureaublad" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(Standaard)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "Gambas accentueer thema bestanden" #: FOption.class:242 msgid "Export a theme file" msgstr "Exporteer een thema bestand" #: FOption.class:467 msgid "Select a theme file" msgstr "Selecteer een thema bestand" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "Je dient de applicatie te herstarten om je wijzigingen te zien." #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "Weet je zeker dat je de document cache wilt wissen ?" #: FOption.class:829 msgid "Unable to clear documentation cache." msgstr "Niet in staat om documentatie cache te wissen " #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "Weet je zeker dat je dit snippet wilt verwijderen ?" #: FOption.class:1190 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "Installeer" #: FOption.class:1275 msgid "Network is not available." msgstr "Netwerk is niet beschikbaar." #: FOption.class:1280 msgid "Documentation is up to date." msgstr "Documentatie is actueel" #: FOption.class:1285 msgid "A new documentation is available!" msgstr "Een nieuw document is beschikbaar!" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "Documentatie is niet beschikbaar" #: FOption.class:1486 msgid "Cannot download '&1'." msgstr "Kan '&1' niet downloaden." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "Niet in staat om documentatie te comprimeren." #: FOption.class:1528 msgid "Unable to install documentation." msgstr "Niet in staat om documentatie te installeren." #: FOption.class:1636 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:1637 msgid "Compact" msgstr "" #: FOption.class:1652 msgid "Current" msgstr "" #: FOption.class:1694 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1796 msgid "Do you really want to delete that layout?" msgstr "" # gb-ignore #: FOption.form:294 msgid "Dotted" msgstr "" #: FOption.form:305 msgid "Identity" msgstr "Identiteit" #: FOption.form:349 msgid "Package maintainer" msgstr "Pakket onderhouder" #: FOption.form:394 msgid "Default license" msgstr "Standaard licentie" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "Nee" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Ja" #: FOption.form:438 msgid "Projects" msgstr "Projecten" #: FOption.form:455 msgid "Default tab size" msgstr "Standaard tab grootte" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "spatie(s)" #: FOption.form:480 msgid "Indent with tab by default" msgstr "Standaard inspringen met tab " #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "Standaard automatische terugloop" #: FOption.form:515 msgid "Fold procedures by default" msgstr "Procedures standaard inklappen" #: FOption.form:532 msgid "Activate version control" msgstr "Activeer versie controle" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "Herstel bestanden bij laden van een project" #: FOption.form:561 msgid "Images" msgstr "Afbeeldingen" #: FOption.form:573 msgid "Compress PNG images with " msgstr "Comprimeer PNG afbeeldingen met" #: FOption.form:607 msgid "Automatic translation with " msgstr "Automatische vertaling met" #: FOption.form:636 msgid "Translation engine" msgstr "Vertalings engine" #: FOption.form:645 msgid "Help & applications" msgstr "Help & applicaties" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Help" #: FOption.form:662 msgid "Show documentation in popups" msgstr "Toon documentatie in popups" #: FOption.form:679 msgid "Always display optional messages" msgstr "Optionele boodschappen altijd laten zien" #: FOption.form:691 msgid "Documentation" msgstr "Documentatie" #: FOption.form:702 msgid "Use offline documentation" msgstr "Gebruik offline documentatie" #: FOption.form:732 msgid "Download documentation" msgstr "Documentatie downloaden" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "Proxy configuratie" #: FOption.form:771 msgid "Clear documentation cache" msgstr "Wis documentatie cache" #: FOption.form:779 msgid "Applications" msgstr "Toepassingen" #: FOption.form:790 msgid "Browser" msgstr "Browser" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Terminal" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "Toon inspringen met verticale lijnen" #: FOption.form:850 msgid "Highlight current line" msgstr "Accentueer huidige regel" #: FOption.form:867 msgid "Highlight modified lines" msgstr "Accentueer veranderde regels" #: FOption.form:884 msgid "Show line numbers" msgstr "Toon lijnnummers" #: FOption.form:901 msgid "Procedure folding" msgstr "Procedure inklappen" #: FOption.form:918 msgid "Procedure separation" msgstr "Procedure afscheiding" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "Toon spaties aan het einde van een regel met punten" #: FOption.form:952 msgid "Show Preview" msgstr "Toon voorvertoning" #: FOption.form:970 msgid "Keywords in upper case" msgstr "Sleutelwoorden in hoofdletters" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "Scheid statische symbolen in methode selector" #: FOption.form:996 msgid "Code formatting" msgstr "Code formatering" #: FOption.form:1002 msgid "Automatic formatting" msgstr "Automatische formatering" #: FOption.form:1013 msgid "Control structure completion" msgstr "Control structuur vervollediging" #: FOption.form:1030 msgid "Local variable declaration" msgstr "Lokale variabele declaratie" #: FOption.form:1047 msgid "Comments insertion" msgstr "Toelichtingen invoeging" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "Sluit braces, brackets" #: FOption.form:1081 msgid "Close strings" msgstr "Sluit strings" #: FOption.form:1093 msgid "Explicit formating" msgstr "Expliciete formatering" #: FOption.form:1104 msgid "Format on load & save" msgstr "Formaat bij laden & opslaan" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "Lokale variabele declaratie inspringen" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "Verwijder overbodige spaties aan het einde van de regel" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "Hou opeenvolgende lege regels" # gb-ignore #: FOption.form:1164 msgid "Code snippets" msgstr "" #: FOption.form:1180 msgid "Activate code snippets" msgstr "Activeer code snippets" #: FOption.form:1241 msgid "Interface" msgstr "Interface" #: FOption.form:1258 msgid "Activate animations" msgstr "Activeer animaties" #: FOption.form:1275 msgid "Show shadows" msgstr "Toon schaduwen" #: FOption.form:1292 msgid "Show tooltips" msgstr "Toon tooltips" #: FOption.form:1309 msgid "Use utility windows" msgstr "Gebruik utility venster" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "Sluit tabs met middelste muisklik" #: FOption.form:1343 msgid "Show file name in window title" msgstr "Toon bestandsnaam in venster titel" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "Toon debugging paneel indien nodig" #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "Lettertypen" #: FOption.form:1444 msgid "Global size" msgstr "Globale grootte" #: FOption.form:1466 msgid "Title size" msgstr "Afmeting titel" #: FOption.form:1488 msgid "Debugger size" msgstr "Debugger grootte" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Afdrukken" #: FOption.form:1580 msgid "Fixed font" msgstr "Vast lettertype" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "Zoom (browser uitgezondert)" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "Installeer Gambas lettertype voor code editie" #: FOption.form:1673 msgid "Themes" msgstr "Themas" #: FOption.form:1690 msgid "Icon theme" msgstr "Icoon thema" #: FOption.form:1706 msgid "Highlighting theme" msgstr "Thema accentueren" #: FOption.form:1720 msgid "Import theme" msgstr "Importeer thema" #: FOption.form:1726 msgid "Export theme" msgstr "Exporteer thema" #: FOption.form:1745 #, fuzzy msgid "Invert colors for dark themes" msgstr "Kleuren aanpassen voor donkere thema's" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Konsole - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Ontkoppel konsole" #: FOutput.form:72 msgid "Keep above" msgstr "Bovenop houden" # gb-ignore #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "Ingevoerde tekst echo" # gb-ignore #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 msgid "Open contents" msgstr "Open inhoud" #: FOutput.form:130 msgid "Use system charset" msgstr "Gebruik systeem karakterset" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Niet in staat om tekst te plakken." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Klembordinhoud" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Plakken normaal" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Plakken met PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Voer een tabelnaam in." #: FPasteTable.class:133 msgid "Table already exists" msgstr "Tabel bestaat reeds" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Kopiëer ook tabel data" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Dat bestand lijkt niet op een patch bestand!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Patch het huidige project" #: FPatch.form:31 msgid "Select patch" msgstr "Selecteer patch" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Terugkeren" #: FProfile.class:175 msgid "Bad profile file format" msgstr "Incorrect profiel bestand formaat" # gb-ignore #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "Totale tijd &1 μs" #: FProfile.class:430 msgid "Unable to load profile file: &1" msgstr "Niet in staat om profiel bestand te laden: &1" #: FProfile.class:647 msgid "Calls" msgstr "Oproepen" #: FProfile.class:650 msgid "Duration" msgstr "Duur" #: FProfile.class:653 msgid "Average" msgstr "Gemiddeld" #: FProfile.class:656 msgid "Self" msgstr "Zelf" #: FProfile.class:1055 msgid "Profile files" msgstr "Profiel bestanden" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "Niet in staat om profiel op te slaan." #: FProfile.form:60 msgid "Show relative durations" msgstr "Toon relatieve duur" #: FProfile.form:67 msgid "Show average" msgstr "Toon gemiddelde" #: FProfile.form:74 msgid "Save profile" msgstr "Profiel opslaan" #: FProfile.form:126 msgid "Callees" msgstr "Gebelden" #: FProfile.form:138 msgid "Callers" msgstr "Bellers" #: FProjectProperty.class:160 msgid "Variable" msgstr "Variabele" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Magnetische waarden is onjuist" #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "&1 exporteert geen enkele klasse." #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "&1 is reeds gebruikt als bibliotheek" #: FProjectProperty.class:927 msgid "Modules" msgstr "Modulen" #: FProjectProperty.class:928 msgid "Test modules" msgstr "" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "Functie" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "Regels code" #: FProjectProperty.class:940 #, fuzzy msgid "Average number of lines by function" msgstr "Incorrecte hoeveelheid dimensies" #: FProjectProperty.class:943 msgid "Executable size" msgstr "Grootte uitvoeringsbestand" # gb-ignore #: FProjectProperty.class:943 msgid "bytes" msgstr "" #: FProjectProperty.class:960 msgid "Information about component" msgstr "Informatie over component" #: FProjectProperty.class:966 msgid "Information about library" msgstr "Informatie over bibliotheek" #: FProjectProperty.class:1345 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1346 msgid "Gambas executable" msgstr "" #: FProjectProperty.form:273 msgid "General" msgstr "Algemeen" #: FProjectProperty.form:328 msgid "Component" msgstr "Component" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "Bibliotheek" #: FProjectProperty.form:328 msgid "Normal" msgstr "Normaal" #: FProjectProperty.form:335 msgid "Vendor" msgstr "Verkoper" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versie" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "Haal uit 'VERSION' bestand" #: FProjectProperty.form:380 msgid "Title" msgstr "Titel" #: FProjectProperty.form:413 msgid "Information" msgstr "Informatie" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "Voortgang" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "Beëindigd en stabiel" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "Dit component is verborgen" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "Compatibel tot versie" #: FProjectProperty.form:496 msgid "Include information from" msgstr "Bijsluiten van informatie van" #: FProjectProperty.form:508 msgid "Required features" msgstr "Vereiste kenmerken" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "Vereiste en uitgesloten componenten" #: FProjectProperty.form:585 msgid "Require" msgstr "Eis" #: FProjectProperty.form:591 msgid "Exclude" msgstr "Uitsluiten" #: FProjectProperty.form:603 msgid "Remove All" msgstr "Alles verwijderen" #: FProjectProperty.form:610 msgid "Components" msgstr "Componenten" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Bibliotheken" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "Zoekpad bibliotheek uitvoeringsbestanden" #: FProjectProperty.form:697 msgid "Additional references" msgstr "" #: FProjectProperty.form:707 msgid "Environment" msgstr "Omgeving" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Invoegen" #: FProjectProperty.form:760 msgid "Edition" msgstr "Bewerking" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Tab grootte" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "Toon vervallen componenten en controls" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Compilatie" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "Symbolen van modulen zijn standaard publiek" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "Formulier controls zijn publiek" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "Activeer waarschuwingen" #: FProjectProperty.form:916 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Statistieken" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Deze regel en de rest zal genegeerd worden." #: FProjectVersion.class:36 msgid "Local" msgstr "Lokaal" #: FProjectVersion.class:37 msgid "Remote" msgstr "Extern" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Voer een gebruikersnaam in." #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "Voer het journaal in." #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "Het project kon niet worden 'committed'." #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "Niet in staat om project bij te werken vanaf repository." #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "Project is succesvol bijgewerkt uit het repository" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Project Versie Controle" #: FProjectVersion.form:65 msgid "Update" msgstr "Bijwerken" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Authenticatie" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Ververs informatie" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "Journaal" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Sommige bestanden hebben geen versie en dienen manueel aan het repository worden toegevoegd." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Vorige beschrijving" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Verboden karakters in control naam." #: FProperty.class:383 msgid "This name is already in use." msgstr "Deze naam is al in gebruik." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Verboden karakters in control groep." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Verkeerde eigenschap waarde." #: FProperty.class:631 msgid "The name of the control." msgstr "De naam van de control." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "De gebeurtenis groep waar de control bij hoort." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Of het formulier en controle dimensies de grootte van het standaard lettertype dienen te volgen." #: FProperty.class:661 msgid "If the control is public." msgstr "Of de controle publiek is." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Of de text eigenschap vertaald dient te worden." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Deze eigenschap is virtueel: het is enkel in de IDE geïmplementeerd en kent geen bestaan tijdens uitvoering." #: FProperty.class:814 msgid "None" msgstr "Geen" #: FProperty.form:51 msgid "Lock property" msgstr "Vergrendel eigenschap" #: FProperty.form:58 msgid "Sort properties" msgstr "Sorteer eigenschappen" #: FProxy.form:37 msgid "Port" msgstr "Poort" #: FProxy.form:76 msgid "Default proxy" msgstr "Standaard proxy" #: FProxy.form:76 msgid "HTTP proxy" msgstr "HTTP proxy" #: FProxy.form:76 msgid "No proxy" msgstr "Geen proxy" # gb-ignore #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "Je kunt geen software publiceren wiens versie \"0.0\" is." # gb-ignore #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "Het project is succesvol gepubliceerd." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Niet in staat om project te publiceren." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Spaties zijn niet toegestaan" #: FPublish.class:241 msgid "Incorrect version number." msgstr "Incorrect versie nummer." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Weet je zeker dat je alle tags will verwijderen?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Selecteer een screenshot bestand" #: FPublish.class:329 msgid "Screenshot files" msgstr "Screenshot bestanden" #: FPublish.form:67 msgid "Software description" msgstr "Software beschrijving" # gb-ignore #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "" #: FPublish.form:113 msgid "Create menu entry" msgstr "Creëer menu ingang" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Tags" #: FPublish.form:164 msgid "Sort" msgstr "Sorteer" # gb-ignore #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Hou de screenshot opgeslagen op de server" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Verwijder de screenshot opgeslagen op de server" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Upload een nieuwe screenshot vanuit het klipbord" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Upload een nieuwe screenshot uit volgend bestand:" #: FPublish.form:222 msgid "Dependencies" msgstr "Afhankelijkheden" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Eis Gambas versie" #: FPublish.form:295 msgid "Publish as" msgstr "Publiceer als" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configureer rand" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Rand" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Hoek" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Configureer schaduw" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Schaduw" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configureer borstel" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "Selecteer een afbeelding binnen dit project" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Verkeerde waarde" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Selecteer een dimensie" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configureer opvulling" #: FSave.form:14 msgid "Save modified files" msgstr "Gewijzigde bestanden opslaan" #: FSave.form:42 msgid "Save All" msgstr "Alles opslaan" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "De volgende bestanden zijn gewijzigd. Wil je ze opslaan?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Kan geen project opslaan in zijn eigen map." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Niet mogelijk om project op te slaan." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Nieuwe project ouder map" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nieuwe project naam" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Maak een screenshot" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Zoekwoord eenmaal vervangen" #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Zoekwoord &1 keer vervangen" #: FSearch.class:630 msgid "One match" msgstr "Een overeenkomst" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 overeenkomsten" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "Geen element" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Werktuigen" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Weet je zeker dat je alle strings wilt vervangen?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Zoeken en vervangen" #: FSearch.form:105 msgid "Case sensitive" msgstr "Hoofdlettergevoelig" #: FSearch.form:110 msgid "Words only" msgstr "Enkel woorden" #: FSearch.form:115 msgid "Regular expression" msgstr "Reguliere expressie" #: FSearch.form:120 msgid "Ignore strings" msgstr "Negeer strings" #: FSearch.form:125 msgid "Ignore comments" msgstr "Negeer commentaar" #: FSearch.form:140 msgid "Search in" msgstr "Zoeken in" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Beëindig huidige functie" #: FSearch.form:153 msgid "Current file" msgstr "Huidig bestand" #: FSearch.form:160 msgid "Source files" msgstr "Broncode bestanden" #: FSearch.form:166 msgid "Data files" msgstr "Data bestanden" #: FSearch.form:197 msgid "Browse" msgstr "Bladeren" #: FSearch.form:209 msgid "Replace all" msgstr "Vervang alles" #: FSearch.form:220 msgid "Highlight search" msgstr "Zoeken accentueren" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Selecteer een extra bestand" #: FSelectIcon.class:37 msgid "Image files" msgstr "Afbeeldingsbestanden" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "SVG beeldbestand" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Foto selecteren" # gb-ignore #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 msgid "unknown" msgstr "onbekend" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Selecteer een bibliotheek" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "Geen bibliotheek is gevonden op jouw systeem." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Voer een trigger string in." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Deze trigger string is reeds in gebruik." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Code snippets bewerken" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nieuwe code snippet" # gb-ignore #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Spellen" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Ontwikkeling" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Onderwijs" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Grafisch" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "Audio" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "Video" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Kantoor" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Hulpmiddelen" # gb-ignore #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Extenties" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Mijn software" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Andere software van" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Alle software" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "Geen software gevonden." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "Verzoek geannuleerd." #: FSoftwareFarm.class:372 msgid "Cancel my vote" msgstr "Annuleer mijn stem" # gb-ignore #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "Gepubliceerd &1 (op &2)" #: FSoftwareFarm.class:559 msgid "Do you really want to download &1?" msgstr "Weet je zeker dat je &1 wil downloaden?" #: FSoftwareFarm.class:562 msgid "Unable to download &1:" msgstr "Niet in staat om &1 te downloaden." #: FSoftwareFarm.class:564 msgid "&1 has been successfully downloaded." msgstr "&1 is succesvol gedownload." #: FSoftwareFarm.class:579 msgid "Do you really want to upgrade to &1?" msgstr "Weet je zeker dat je wil upgraden naar &1?" #: FSoftwareFarm.class:582 msgid "Unable to upgrade to &1:" msgstr "Niet in staat om &1 te upgraden:" #: FSoftwareFarm.class:589 msgid "Do you really want to uninstall &1?" msgstr "Weet je zeker dat je &1 wil deïnstalleren?" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "Niet in staat om &1 te deïnstalleren:" #: FSoftwareFarm.class:594 msgid "&1 has been successfully uninstalled." msgstr "&1 is succesvol gedeïnstalleerd." #: FSoftwareFarm.class:600 msgid "Do you really want to install &1?" msgstr "Weet je zeker dat je &1 wil installeren?" #: FSoftwareFarm.class:603 msgid "Unable to install &1:" msgstr "Niet in staat om &1 te installeren:" #: FSoftwareFarm.class:605 msgid "&1 has been successfully installed." msgstr "&1 is succesvol geïnstalleerd." #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "Niet in staat om stem te wijzigen." #: FSoftwareFarm.class:661 msgid "Do you really want to delete &1 from the farm server?" msgstr "Weet je zeker dat je &1 wil verwijderen van de farm server?" #: FSoftwareFarm.class:665 msgid "Unable to remove &1:" msgstr "Niet in staat om &1 te verwijderen:" # gb-ignore #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "Weergeven" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Geïnstalleerd" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Meest gedownload" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Meest recent" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Toon filters" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Toon oude versies" # gb-ignore #: FSoftwareFarm.form:397 msgid "Download" msgstr "" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "Downloaden en installeren" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "Stem" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "Kopiëer a.u.b. deze informatie in al je bug rapporten." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Kies een tabel" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Niet in staat om klasse bestand te laden." #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Deze naam bestaat reeds." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Niet mogelijk om project op te slaan." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Weet je zeker dat je deze query wilt verwijderen?" #: FTestSuite.form:60 #, fuzzy msgid "New test suite" msgstr "Nieuwe code snippet" #: FTestSuite.form:67 #, fuzzy msgid "Duplicate test suite" msgstr "Dupliceer selectie" #: FTestSuite.form:74 #, fuzzy msgid "Rename test suite" msgstr "Hernoem tabel" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "Verwijder menu" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "Selecteer alles" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "Deselekteer alles" #: FTestSuite.form:145 #, fuzzy msgid "Test with" msgstr "Openen met" #: FText.class:12 msgid "Edit '&1' property" msgstr "Bewerk '&1'eigenschap" #: FText.form:29 msgid "Use a fixed font" msgstr "Gebruik vaste breedte font" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "Konsole uitvoer #&1" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "Niet in staat om bestand te comprimeren." #: FTextEditor.class:1888 msgid "Compressed at &1" msgstr "" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "Sorteer oplopend" #: FTextEditor.form:175 msgid "Sort descent" msgstr "Sorteer aflopend" #: FTextEditor.form:221 msgid "Compress file" msgstr "Comprimeer bestand" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "Tip van de dag #&1" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Niet in staat om tip van de dag te lezen !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Tips tonen tijden starten" #: FToolBox.class:397 Project.module:606 msgid "Current project" msgstr "" #: FToolBox.form:58 msgid "Toolbox button size" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Het project is 'leeg'. Er is niets te vertalen." #: FTranslate.class:74 msgid "Language" msgstr "Taal" #: FTranslate.class:77 msgid "Not translated" msgstr "Niet vertaald" #: FTranslate.class:169 msgid "Translation files" msgstr "Vertalingsbestanden" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Kan het vertaalbestand niet lezen voor de taal '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Kan vertaling niet opslaan." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Weet je zeker dat je deze vertaling wilt verwijderen ?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Weet u zeker dat u deze vertaling wilt herladen?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Exporteren vertaling" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "Selecteer het te importeren vertaalbestand." #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "Geen vertalingen zijn opgepikt." #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "Een vertaling is opgepikt." #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "&1 vertalingen werden opgepikt." #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Kan vertaalbestand niet laden." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Alles lijkt correct te zijn." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "Vertaalde en onvertaalde string symbolen komen niet overeen." #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "&1 strings. Alles is vertaald!" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 strings. Een is niet vertaald. &3% klaar." #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 strings. &2 zijn niet vertaald. &3% klaar." #: FTranslate.class:1741 msgid "Automatic translation has failed." msgstr "Automatische vertaling heeft gefaald." #: FTranslate.class:1753 msgid "Do you want to fill the translation automatically?" msgstr "Weet je zeker dat je de vertaling automatisch wil vullen?" #: FTranslate.form:77 msgid "Project translation" msgstr "Project vertaling" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Automatische vertaling" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Onvertaalde strings" #: FTranslate.form:122 msgid "Translated strings" msgstr "Vertaalde strings" #: FTranslate.form:126 msgid "All strings" msgstr "Alle strings" #: FTranslate.form:197 msgid "Add a new translation" msgstr "" #: FTranslate.form:232 msgid "Save translation" msgstr "Bewaar vertaling" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Kontroleer de vertaling" #: FTranslate.form:242 msgid "Verify" msgstr "Verifiëren" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Volgende vertaalde tekst zoeken" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Vorige vertaalde tekst zoeken" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Zoek vorige onvertaalde tekst" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Zoek volgende niet vertaalde tekst" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Wis deze vertaling" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Deze string moet niet vertaald worden" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Onvertaalde string kopiëren" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importeer alle vertalingen recursief" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Vervang bestaande vertalingen" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importeer een vertalingsbestand" #: FVersionControl.class:16 msgid "Do you want to push the repository?" msgstr "Weet je zeker dat je het repository wil pushen?" # gb-ignore #: FVersionControl.class:16 msgid "Push" msgstr "" #: FVersionControl.form:51 msgid "There is nothing to commit." msgstr "Er is niets om te commiten." #: FVersionControl.form:81 msgid "Do not push to remote repository" msgstr "Niet naar remote repository pushen" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Selecteer lettertype" #: FWelcome.class:69 msgid "New project..." msgstr "Nieuw project..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Recente projecten" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "Geïnstalleerde software" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Welkom bij Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anoniem" #: FarmRequest.class:125 msgid "No answer." msgstr "Geen antwoord." #: FarmRequest.class:167 msgid "Register user" msgstr "Registreer gebruiker" #: FarmRequest.class:242 msgid "Publish project" msgstr "Publiceer project" # gb-ignore #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "Verwijder software" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Afrikaans (Zuid Afrika)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabisch (Egypte)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabisch (Tunesië)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbaijaans (Azerbaijaan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgaars (Bulgarije)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalaans (Catalonie, Spanje)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Welsh (Verinigd Koninkrijk)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Tsjechisch (Tsjechische Republiek)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Deens (Denemarken)" #: Language.module:34 msgid "German (Germany)" msgstr "Duits (Duitsland)" #: Language.module:35 msgid "German (Belgium)" msgstr "Duits (België)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grieks (Griekenland)" #: Language.module:41 msgid "English (common)" msgstr "Engels (algemeen)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Engels (Verenigd Koninkrijk)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Engels (V.S.)" #: Language.module:44 msgid "English (Australia)" msgstr "Engels (Australië)" #: Language.module:45 msgid "English (Canada)" msgstr "Engels (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Wereldwijd!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Spanish (algemeen)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spaans (Spanje)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spaans (Argentinië)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonees (Estonië)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Baskisch (Baskenland)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Iran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Fins (Finland)" #: Language.module:68 msgid "French (France)" msgstr "Frans (Frankrijk)" #: Language.module:69 msgid "French (Belgium)" msgstr "Frans (België)" #: Language.module:70 msgid "French (Canada)" msgstr "Frans (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Frans (Zwitserland)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galiciaans (Spanje)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebreeuws (Israël)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (India)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Hongaars (Hongarije)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Kroatisch (Kroatie)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesies (Indonesië)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Iers (Ierland)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Ijslands (Ijsland)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiaans (Italië)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japans (Japan)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Cambodja)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Koreaans (Korea)" #: Language.module:110 msgid "Latin" msgstr "Latijn" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Litouws (Litouwen)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (India)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedonisch (Republiek Macedonië)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Nederlands (Nederland)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Nederlands (België)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Noors (Noorwegen)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjab (Indië)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Pools (Polen)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugees (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugees (Brazilië)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valentiaans (Valentiaanse Gemeenschap, Spanje)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Roemeens (Roemenië)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russisch (Rusland)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slowaaks (Slowenie)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanees (Albanië)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Servisch (Servië & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Zweeds (Zweden)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turks (Turkije)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Oekraïend (Oekraïne)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamees (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallonië (België)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Simpel chinees (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Traditioneel chinees (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Onbekend" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Niet in staat om het wachtwoord op te halen." #: MConnection.module:91 msgid "Unable to save password." msgstr "Niet in staat om het wachtwoord op te slaan." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Kan tabel '&1' niet creëren." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Kan metadata tabel niet creëren." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 kan niet statisch zijn" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 declaratie komt niet overeen" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 is gedeclareerd maar is geen functie" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 is geen structuur" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 is niet gedeclareerd" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 moet statisch zijn" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: niet in archief" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: syntaxis fout" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: syntaxis fout in formulier bestand" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: teveel geneste containers" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' is reeds gedeclareerd" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' is incorrect overschreven in klasse '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' is geen eigenschap" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' is niet statisch" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' is alleen lezen" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' is statisch" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' is alleen schrijven" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' of ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Een module kan geen gebeurtenis doen rijzen" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Een eigenschap implementatie kan niet publiek zijn" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Een eigenschap moet PUBLIC zijn" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Toegang verboden" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Alias naam moet een string zijn" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Dubbelzinnige expressie. Gebruik brackets" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Argument kan niet per referentie worden overgenomen" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Reeksen van structuren zijn niet ondersteund" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Incorrect archief: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Incorrect argument" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Incorrect karakter constante in string" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Incorrect constante type" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Incorrecte gebeurtenis afhandeling in &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Incorrecte expressie: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Incorrecte formulier bestand versie" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Incorrect formaat in sectie:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Incorrect string formaat" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Incorrecte hoeveelheid dimensies" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Incorrect project bestand: lijn &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Incorrecte reguliere expressie: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Incorrecte string conversie" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Incorrect subscript bereik" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Incorrect gebruik van virtuele klasse" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Incorrecte string versie" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Kan huidige directory niet wijzigen naar '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Kan geen .startup bestand creëren" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Kan geen actie bestand creëren: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Kan geen callback creëren: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Kan klasse informatie niet creëren: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Kan bestand niet creëren: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Kan tijdelijk archief niet creëren: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Kan dynamische bibliotheek '&1' niet vinden: &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Kan symbool '&2' niet vinden in dynamische bibliotheek '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Kan zichzelf niet overerven" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Kan geen twee keer overerven" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Kan geen inheemse typen instantiëren" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Kan klasse '&1' niet laden: &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Kan component '&1' niet laden: &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Kan broncode bestand niet laden: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Kan geen uitvoerbaar bestand maken: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Kan NEW en embedded reeks niet mixen" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Kan NEW en embedded structuur niet mixen" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Kan bestand '&1' niet openen: &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Kan bestand niet openen: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Kan geen gebeurtenis rijzen in statische functie" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Kan bestand niet lezen: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Kan klasse '&1' niet registreren" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Kan bestand '&1' niet verwijderen: &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Kan bestand '&1' niet hernoemen naar '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Kan kind proces niet uitvoeren: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Kan bestandseigenaar niet instellen: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Operator NEW kan hier niet gebruikt worden" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "Klasse '&1' is niet creëerbaar" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Vergelijkings operator verwacht" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "Component naam dient een string te zijn" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Component niet gevonden: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Constante string verwacht" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Inhoud reeds gewist" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Standaard case al gedefinieerd" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Standaard case dient de laatste te zijn" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Apparaat is vol" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Map is niet leeg" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Delen door nul" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Dynamische symbolen kunnen niet in een statisch functie gebruikt worden" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Ingebedde reeksen zijn verboden hier" #: MErrorMessage.module:90 msgid "End of file" msgstr "Einde van bestand" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Gelijke of ongelijke operator verwacht" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Expressie te complex" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Expressie te complex. Teveel operanden" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "Externe bibliotheek naam dient een string te zijn" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Bestand bestaat reeds" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Bestand is een map" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Bestand is vergrendelt" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Bestandsnaam is te lang" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Bestand of map bestaat niet" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "Verboden GOSUB" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "Verboden GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Vrij object gerefereerd" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Illegale instructie" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Interne compile error" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Ongeldige toewijzing" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Ongeldige datum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Ongeldig object" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Ongeldig pad" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() vereist een functie argument" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Sprong is te ver" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Label '&1' niet gedeclareert" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Bibliotheek naam dient een string te zijn" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Lus variabele reeds in gebruik" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "Lus variable kan geen argument zijn" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "Lus variable kan niet globaal zijn" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME kan niet worden gebruikt in een statische functie" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Rekenfout" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Missende #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Missende ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Missende '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Missende operator" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Missende rechter brace" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW kan geen argumenten per referentie overnemen." #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Geen instantiatie methode" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Geen ouder klasse" #: MErrorMessage.module:127 msgid "No return value" msgstr "Geen retourneer waarde" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Geen startup methode" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Niet beëindigde string" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "Geen map: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Geen functie" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Geen procedure" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Geen reeks" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Geen opsomming" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Geen object" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Niet voldoende argumenten voor New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Niet voldoende argumenten" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Niet voldoende argumenten voor &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Nog niet geïmplementeerd" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Niet ondersteund" #: MErrorMessage.module:141 msgid "Null object" msgstr "Null object" #: MErrorMessage.module:142 msgid "Number" msgstr "Number" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Nummer of Datume verwacht" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Nummer of datum" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Number, Date of String" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Number, String of Object" # gb-ignore #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Buiten de grenzen" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Onvoldoende geheugen" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Buiten bereik" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Overloop" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Overschrijven van een reeds overgeërfde klasse is verboden" #: MErrorMessage.module:153 msgid "Read error" msgstr "Leesfout" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Datatype van retourneer waarde niet gespecificeerd in functie declarartie" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "STOP instructie ontmoet" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER kan niet alleen worden gebruikt" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Serialisatie fout" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Stapelregister is vol" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Standaard type" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Stream is gesloten" #: MErrorMessage.module:162 msgid "String expected" msgstr "String verwacht" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Structuren dienen PUBLIC te zijn" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Subroutine argumenten kunnen niet per referentie worden doorgegeven" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Syntaxisfout" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Syntaxis fout bij functie declaratie" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Syntaxis fout in gebeurtenis naam" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Syntaxis fout in bestand openen modus" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Syntaxis fout in retourneer type" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Syntaxis fout. &1 verwacht" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Syntaxis fout. '...' moet het laatste argument zijn" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Syntaxis fout. CASE or DEFAULT verwacht na SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Syntaxis fout. CLASS heeft een identifier nodig" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Syntaxis fout. Kan deze syntaxis niet gebruiken in toewijzing" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Syntaxis fout. INHERITS heeft een klasse naam nodig" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Syntaxis fout. Identifier verwacht" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Syntaxis fout. Ongeldige identifier in functie naam" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Syntaxis fout. Ongeldige optionele parameter" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Syntaxis fout. Ongeldig retourneer type" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Syntaxis fout. Ongeldige type beschrijving van argument &1" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Syntaxis fout. Ongeldige type beschrijving van veld &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Syntaxis fout. Overbodige argumenten" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Syntaxis fout. Punt syntaxis gebruikt buiten WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Syntaxis fout. STRUCT heeft een identifier nodig" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Syntaxis fout. Het &1 argument is geen geldige identifier" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Syntaxis fout. Het &1 veld is geen geldige identifier" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Syntaxis fout. VarPrt() neemt maar een identifier over" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Systeem fout #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "De '!' operator moet worden gevolgd door een identifier" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "De '.' operator moet worden gevolgd door een identifier" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "De functie moet een vast aantal argumenten overnemen" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "De speciale methode &1 kan geen functie zijn" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "De speciale methode &1 kan niet worden geïmplementeerd" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "De speciale methode &1 kan niet STATIC zijn" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "De speciale methode &1 moet een functie zijn" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "De speciale methode &1 moet PUBLIC zijn" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "De speciale methode &1 moet STATIC zijn" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "De speciale methode &1 moet een boolean retourneren" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "De speciale methode &1 moet enkel een variable aantal argumenten overnemen " #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "De speciale methode &1 moet minstens een argument overnemen" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "De speciale methode &1 neemt geen argumenten over" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "De speciale methode moet een integer retourneren" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "De speciale methode moet precies een argument overnemen" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "De speciale methode moet precies twee argumenten overnemen" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "De handtekening van de speciale methode is incorrect" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Deze expressie kan geen statement zijn" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Deze expressie kan niet per referentie worden gepasseerd" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Teveel argumenten" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Teveel argumenten voor &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Teveel reeks declaraties" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Teveel constanten" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Teveel verschillende klassen gebruikt" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Teveel dimensies" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Teveel dynamische variabelen" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Teveel gebeurtenissen" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Teveel expressies in CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Teveel externe functies" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Teveel functies" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Teveel overlappende #If...#Endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Teveel labels" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Teveel locale variabelen" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Teveel geneste controle structuren." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Teveel eigenschap synoniemen" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Teveel simultane nieuwe strings" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Teveel statische variabelen" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Teveel onbekende symbolen" # gb-ignore #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Verkeerde type combinatie" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Verkeerde type combinatie: wilde &1, kreeg &2 in plaats daarvan" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Niet in staat om 'afsluiting' te creëren." #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Niet in staat om bestandspositie te bepalen" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Niet in staat om klasse bestand te laden." #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Niet in staat om functie beschrijving voor te bereiden." #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "Onverwacht &1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Onverwacht einde van regel" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Onverwachte string" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Onbekende fout" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Onbekende bestandsextensie" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Onbekende identifier: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Onbekende operator" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Onbekend symbool '&2' in klasse '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Onbekende gebruiker of groep" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Niet ondersteund datatype" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Niet ondersteunde string conversie" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "Nutteloze LOCK" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "VarPtr() argument moet een dynamische, statische of locale variabele zijn" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Lege identifier" #: MErrorMessage.module:253 msgid "Void key" msgstr "Lege sleutel" #: MErrorMessage.module:254 msgid "Write error" msgstr "Schrijffout" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "kan component niet vinden" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "kan bibliotheek niet vinden" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "klassenaam verborgen door globale declaratie: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "klassenaam verborgen door lokale declaratie: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "constante verborgen door locale declaratie: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "externe functie verborgen door lokale declaratie: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "functie verborgen door lokale declaratie: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "globale variabele verborgen door lokale declaratie: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "integer en boolean gemixed met '&1' operator" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "ongeïnitialiseerde globale variabele: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "ongeïnitialiseerde variable: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "onbekende fout" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "ongebruikt argument: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "ongebruikte externe functie: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "ongebruikte functie: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "ongebruikte globale variabele: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "ongebruikte variabele: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "kan geen slaaf pseudo-terminal openen:" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "kan geen pseudo-terminal initialiseren:" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "kan standaard invoer niet inpluggen:" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "kan standaard uitvoer en standaard fouten niet inpluggen:" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "kan uitvoerbaar bestand niet uitvoeren:" #: MHelp.module:313 msgid "No help found." msgstr "Geen hulp gevonden." #: MHelp.module:1006 Wiki.module:799 msgid "This page does not exist." msgstr "Deze pagina bestaat niet." #: MMime.module:17 msgid "Plain text" msgstr "Platte tekst" #: MMime.module:18 msgid "HTML text" msgstr "HTML tekst" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas formulier data" # gb-ignore #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas project bestand pad" #: MMime.module:22 msgid "URI list" msgstr "URI lijst" #: MMime.module:33 msgid "Unknown format" msgstr "Onbekend formaat" #: MTheme.module:6 msgid "Alternate background" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "Karakters" #: MTheme.module:6 msgid "Comments" msgstr "Toelichtingen" #: MTheme.module:6 msgid "Current line" msgstr "Huidige regel" #: MTheme.module:6 msgid "Data types" msgstr "Gegevens typen" #: MTheme.module:6 msgid "Editing line" msgstr "Bewerken regel" #: MTheme.module:6 msgid "Errors" msgstr "Fouten" #: MTheme.module:6 msgid "Highlighting" msgstr "Accentueren" #: MTheme.module:6 msgid "Keywords" msgstr "Sleutelwoorden" # gb-ignore #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Normale tekst" #: MTheme.module:6 msgid "Numbers" msgstr "Getallen" #: MTheme.module:6 msgid "Operators" msgstr "Operatoren" # gb-ignore #: MTheme.module:6 msgid "Preprocessor" msgstr "" # gb-ignore #: MTheme.module:6 msgid "Strings" msgstr "" #: MTheme.module:6 msgid "Subroutines" msgstr "Subroutines" #: MTheme.module:6 msgid "Symbols" msgstr "Symbolen" #: Package.module:83 msgid "'&1' is missing." msgstr "'&1' mist." #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "'&1' en '&2' missen." #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Opslaan WIJZIGINGSLOG bestand." #: Package.module:735 msgid "Making &1 support package..." msgstr "&1 ondersteuningspakke maken..." #: Package.module:790 msgid "Creating package for &1." msgstr "Pakket aanmaken voor &1." #: Package.module:822 msgid "The package build has failed." msgstr "Het pakket maken is mislukt." #: Package.module:894 msgid "Making build directory." msgstr "Bouwdirectorie maken." #: Package.module:953 msgid "Creating desktop file..." msgstr "Bureaublad bestand aanmaken..." #: Package.module:961 msgid "Sources are being debianizated." msgstr "Broncode wordt ge'debianizated'." #: Package.module:1168 msgid "Creating package..." msgstr "Pakket aanmaken..." #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' faalde." #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "Gereed maken ~/RPM map." #: Package.module:1476 msgid "Creating source package." msgstr "Broncode pakket aanmaken." #: Package.module:1500 msgid "Creating .spec file." msgstr ".spec bestand aanmaken." #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' heeft de volgende foutcode teruggestuurd:" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "'tar' heeft de volgende foutcode teruggestuurd:" #: Package.module:2442 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "De map is geen Gambas project" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "Niet ondersteund formaat broncode archief" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "Patch niet toegepast:\n" #: Project.module:231 msgid "Automation" msgstr "Automatisering" #: Project.module:232 msgid "Basic" msgstr "Basis" #: Project.module:234 msgid "Drawing" msgstr "Tekening" #: Project.module:237 msgid "Miscellaneous" msgstr "Diversen" #: Project.module:238 msgid "Networking" msgstr "Netwerken" #: Project.module:239 msgid "OpenGL" msgstr "OpenGL" #: Project.module:241 msgid "Sound" msgstr "Geluid" # gb-ignore #: Project.module:243 msgid "Controls" msgstr "" # gb-ignore #: Project.module:244 msgid "Multimedia" msgstr "" # gb-ignore #: Project.module:245 msgid "Web" msgstr "" #: Project.module:422 msgid "File not found!" msgstr "Bestand niet gevonden!" #: Project.module:534 msgid "This project does not exist." msgstr "Dit project bestaat niet." #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "Niet in staat om Gambas IDE uitvoerbaar bestand te vinden in map:\n" "\n" "&1" #: Project.module:565 msgid "This is not a Gambas project." msgstr "Dit is geen Gambas project." #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Dit is een Gambas 1.0 project. Gebruik Gambas 2 om het te converteren." #: Project.module:571 msgid "Convert" msgstr "Converteren" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Dit is een Gambas 2.0 project.\n" "\n" "Wil je het converteren?" #: Project.module:589 msgid "Do not open" msgstr "Niet openen" #: Project.module:589 msgid "Open after all" msgstr "Openen ondanks alles" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Dit project lijkt al geopend te zijn.\n" "\n" "Hetzelfde project twee keer openen kan leiden tot gegevensverlies." #: Project.module:595 msgid "It cannot be converted." msgstr "Het kan niet geconverteert worden" #: Project.module:595 msgid "This project is read-only." msgstr "Het project is in alleen lees mode." #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "Kopieer project in een tijdelijke directory..." #: Project.module:616 msgid "Unable to create temporary directory" msgstr "Niet in staat om tijdelijke map te creëren" #: Project.module:646 msgid "Converting project structure..." msgstr "Converteer project structuur..." #: Project.module:679 msgid "Applying conversion..." msgstr "Conversie toepassen..." #: Project.module:685 msgid "Unable to apply conversion" msgstr "Niet in staat om conversie toe te passen." #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "Sommige door het project gebruikte bibliotheken missen. " #: Project.module:824 msgid "Cannot open project file :" msgstr "Kan project bestand niet openen:" #: Project.module:876 msgid "Cannot reload file." msgstr "Kan bestand niet herladen" #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "ALPHA VERSIE, GEBRUIK OP EIGEN RISICO" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "ONTWIKKEL VERSIE, GEBRUIK OP EIGEN RISICO!" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "Kan geen binair bestand openen." #: Project.module:2079 msgid "Cannot open file." msgstr "Kan bestand niet openen." #: Project.module:2237 msgid "&1th" msgstr "&1ste" #: Project.module:2290 msgid "in form definition" msgstr "in formulier definitie" # gb-ignore #: Project.module:2297 msgid "in &1." msgstr "" #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Sommige project broncode bestanden zijn in conflict.\n" "Los deze eerst op indien je het project wil compileren." #: Project.module:2462 msgid "Compiling project" msgstr "Compileren project" #: Project.module:2720 msgid "File already exists." msgstr "Bestand bestaat reeds." #: Project.module:2753 msgid "Directory already exists." msgstr "Map bestaat al." #: Project.module:2765 msgid "Cannot link template file." msgstr "Kan sjabloonbestand niet linken" #: Project.module:2771 msgid "Cannot copy template file." msgstr "Kan sjabloonbestand niet kopiëren" #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "The inhoud van het VERSION bestand is incorrect." #: Project.module:2999 msgid "Cannot install library in &1." msgstr "Kan bibliotheek niet installeren in &1." #: Project.module:3041 msgid "Making executable..." msgstr "Uitvoerbaar bestand maken..." #: Project.module:3099 msgid "Cannot make executable." msgstr "Kan geen uitvoerbaar bestand maken." #: Project.module:3555 msgid "Some components are missing: &1" msgstr "Sommige componenten worde gemist: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "Kan bestand niet schrijf beveiligen." #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "Niet in staat om snelkoppeling op bureaublad aan te maken." #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "De map wordt verwijdert bij de volgende 'commit'." #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "Je dient een startup klass of formulier op te geven!" #: Project.module:4120 msgid "Please type a name." msgstr "Voer aub een naam in." #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "Deze naam bevat een verboden karakter:" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "De naam kan niet met een punt beginnen." #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "Deze naam is reeds in gebruik. Kies een andere." #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Een klasse naam moet beginnen met een letter of een _-teken, gevolgd door elke letter of getal." #: Project.module:4211 msgid "Destination already exists." msgstr "Bestemming bestaat reeds." #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "Niet in staat om '&1' te hernoemen" #: Project.module:4480 msgid "Please type a project name." msgstr "Voer aub een projectnaam in." #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "De projectnaam kan niet met een punt beginnen." #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Niet-ASCII karakters zijn verboden in een projectnaam." #: Project.module:4492 msgid "SPACE" msgstr "" #: Project.module:4492 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4499 msgid "This project already exists." msgstr "Dit project bestaat al." #: Project.module:4502 msgid "The project directory already exists." msgstr "De project map bestaat al." #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "De project map kan niet worden aangemaakt om er al een bestand bestaat met dezelfde naam." #: Project.module:4552 msgid "Unable to create source archive." msgstr "Niet in staat om broncode archief te creëren." #: Project.module:4579 msgid "Create source package" msgstr "Creëer broncode pakket" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "Kan bestand &1 niet kopiëren." #: Project.module:4914 msgid "Cannot create link &1." msgstr "Kan koppeling &1 niet creëren." #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "Kan een directorie niet in zichzelf verplaatsen." #: Project.module:4993 msgid "Cannot move file &1." msgstr "Kan bestand &1 niet verplaatsen." #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "Volgende bestanden konden niet verwijdert worden:" #: Project.module:5686 msgid "Project cleanup..." msgstr "Project opschonen..." #: Project.module:5692 msgid "Project files conversion..." msgstr "Project bestanden conversie..." #: Project.module:5722 msgid "Unable to convert &1" msgstr "Niet in staat om &1 te converteren." #: Project.module:6002 msgid "Unable to update forms." msgstr "Niet in staat om formulieren te updaten." #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "Het &1 programma is niet geïnstalleerd op je systeem." #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "De volgende applicaties zijn niet geïnstalleerd op je systeem: &1" #: Project.module:6186 msgid "Unable to read component description file." msgstr "Niet in staat om omschrijvingsbestand van component te lezen." #: Project.module:6247 msgid "Cannot write component description file." msgstr "Kan omschrijvingsbestand van component niet maken." #: Project.module:6308 msgid "Project templates" msgstr "Project sjablonen" #: Project.module:6354 msgid "Unable to run terminal." msgstr "Niet in staat om terminal uit te voeren." #: Save.module:57 msgid "Cannot save file !" msgstr "Kan bestand niet opslaan !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Gepubliceerd &1" # gb-ignore #: Util.module:39 msgid "&1 B" msgstr "" # gb-ignore #: Util.module:41 msgid "&1 KiB" msgstr "" # gb-ignore #: Util.module:43 msgid "&1 MiB" msgstr "" # gb-ignore #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:139 msgid "Command timeout." msgstr "" #: VersionControl.module:139 msgid "Please check your network connection." msgstr "" #: VersionControl.module:521 msgid "Do you really want to put this project under version control with &1?" msgstr "Weet je zeker dat je dit project onder versie controle wil plaatsen met &1?" #: VersionControl.module:535 msgid "The project could not be put under version control." msgstr "Het project kon niet onder versie controle worden geplaatst." #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "Niet in staat om te veranderen naar branch '&1'." #: VersionControl.module:642 msgid "With &1" msgstr "Met &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Er zijn &1 klassen en &2 symbolen in alle Gambas componenten." #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "Deze pagina bestaat niet in die taal." #: WikiMarkdown.class:142 msgid "Since" msgstr "Sinds" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Dit component bestaat niet." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Deze klasse bestaat niet" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Dit symbool bestaat niet." #~ msgid "Current procedure" #~ msgstr "Huidige procedure" #~ msgid "Arguments" #~ msgstr "Argumenten" #~ msgid "No argument" #~ msgstr "Geen argument" gambas-3.16.3/app/src/gambas3/.lang/no.po000066400000000000000000004545471411575327000177250ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FLocal.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FWatch.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/knut/download/gambas-0.71/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 msgid "Static properties" msgstr "" #: CClassInfo.class:604 msgid "Static variables" msgstr "" #: CClassInfo.class:605 msgid "Static methods" msgstr "" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Egenskaper" #: CClassInfo.class:624 msgid "Variables" msgstr "" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 msgid "static function" msgstr "" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Klasser" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Klasse" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Beskrivelse" #: CComponent.class:1667 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Dette prosjektet har kun lesetilgang." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "" #: CComponent.class:1690 msgid "Implements" msgstr "" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:1717 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:88 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:125 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:128 msgid "Report designer" msgstr "" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Komponent" #: CDocumentation.class:134 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:135 msgid "Application settings management" msgstr "" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Oppstilling" #: CDocumentation.class:138 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Komponent" #: CDocumentation.class:140 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:141 msgid "Video capture" msgstr "" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 msgid "Web application development" msgstr "" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 #, fuzzy msgid "Insert today's date" msgstr "&Sett inn" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "" #: CModule.class:28 msgid "Forms" msgstr "" #: CModule.class:28 msgid "Gambas forms" msgstr "Gambas former" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Gambas former" #: CModule.class:31 FMain.form:903 msgid "WebForm" msgstr "" #: CModule.class:31 msgid "WebForms" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas former" #: CModule.class:32 FMain.form:910 msgid "TermForm" msgstr "" #: CModule.class:32 msgid "TermForms" msgstr "" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Avbryt" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Ønsker du å denne filen ?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 #, fuzzy msgid "Unable to uninstall software:" msgstr "Kan ikke slette fil eller katalog" #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Pakkene er opprettet uten feil." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Prosjekt" #: CProjectTree.class:346 msgid "Sources" msgstr "" #: CProjectTree.class:348 msgid "Connections" msgstr "" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Lag eksekverbar" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Kan ikke slette fil eller katalog" #: CSoftware.class:663 msgid "yesterday" msgstr "" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 #, fuzzy msgid "Unable to push the project." msgstr "Kan ikke døpe om '&1'" #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Gjeldende linje" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Kan ikke lage prosjektet!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Kan ikke lage prosjektet!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Nylige prosjekter" #: CVersionControlGit.class:319 msgid "Status" msgstr "" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:373 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "" #: CVersionControlGit.class:411 msgid "Solve conflict." msgstr "" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "" "Programmet har returnert\n" "verdien: &1" #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Programmet har returnert\n" "verdien: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "Om Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "" #: FColorChooser.form:35 msgid "Free" msgstr "" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Velg et prosjekt" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Last igjen" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "&Rediger" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Tekst" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "Bilde" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Klipp" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Kopier" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Lim inn" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Angre" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Gjør igjen" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Rykk inn" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "Rykk tilbake" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Lagre" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Lukk" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Kommentar" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Ukommenter" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Velg Alt" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Gå til linje" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:284 #, fuzzy msgid "Indent with tab" msgstr "Rykk inn" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Kode" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Navn" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "" #: FConnectionEditor.class:61 msgid "Length" msgstr "" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Kompilering" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Indeks" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Døp om" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Ny" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Rens" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Slett" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Velg alt" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Valg" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Kan ikke lage prosjektet!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Tast inn et navn." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Nytt prosjekt" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Katalog" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Prosjekt egenskaper" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Prosjektet kan oversettes" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Konsoll" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Stoppunkt" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 msgid "Search result" msgstr "" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Verdi" #: FDebugExpr.class:508 msgid "Key" msgstr "" #: FDebugExpr.class:514 msgid "Symbol" msgstr "" #: FDebugExpr.form:33 msgid "Watch" msgstr "Overvåk" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Linje" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Fil" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:126 msgid "native code" msgstr "native kode" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Overvåk uttrykk" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Ønsker du å rense uttrykkslisten ?" #: FDebugInfo.class:1070 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1209 msgid "Current object" msgstr "" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:124 msgid "Add expression" msgstr "" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "Veksle avbruddspunkt" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Veksle avbruddspunkt" #: FDebugInfo.form:193 msgid "Disable" msgstr "" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Veksle avbruddspunkt" #: FDebugInfo.form:201 msgid "Enable" msgstr "" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "Søkestrengen ble ikke funnet." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:379 FMain.form:508 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Gå til" #: FEditor.form:243 msgid "Find definition" msgstr "" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Kjør til gjeldende linje" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Veksle avbruddspunkt" #: FEditor.form:314 msgid "Watch expression" msgstr "Overvåk uttrykk" #: FEditor.form:323 msgid "Open form" msgstr "" #: FEditor.form:330 FMain.form:1067 msgid "Run this class" msgstr "" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Editor" #: FEditor.form:523 FTextEditor.form:507 #, fuzzy msgid "Insert special character" msgstr "&Sett inn" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Fyll inn e-postadressen din." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Kan ikke døpe om '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Fortsett" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Moduler" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 msgid "Undo changes" msgstr "" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:134 msgid "Bad form file" msgstr "Feil i form fil" #: FForm.class:264 msgid "Unknown control: &1" msgstr "" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Kan ikke åpne filen." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Velg" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Velg et prosjekt" #: FForm.form:239 msgid "Arrangement" msgstr "Oppstilling" #: FForm.form:243 msgid "Bring to foreground" msgstr "Hent til forgrunn" #: FForm.form:250 msgid "Send to background" msgstr "Send til bakgrunn" #: FForm.form:260 msgid "Horizontal" msgstr "Horisontal" #: FForm.form:267 msgid "Rows" msgstr "" #: FForm.form:273 msgid "Vertical" msgstr "Vertikal" #: FForm.form:280 msgid "Columns" msgstr "" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Justering" #: FForm.form:305 msgid "Align to left" msgstr "Juster til venstre" #: FForm.form:311 msgid "Align to right" msgstr "Juster til høyre" #: FForm.form:317 msgid "Align to top" msgstr "Juster til toppen" #: FForm.form:323 msgid "Align to bottom" msgstr "Juster til bunnen" #: FForm.form:332 msgid "Same width" msgstr "Samme bredde" #: FForm.form:338 msgid "Same height" msgstr "Samme høyde" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "" #: FForm.form:360 msgid "First" msgstr "" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Neste" #: FForm.form:381 msgid "Last" msgstr "" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Meny editor" #: FForm.form:401 msgid "Event" msgstr "Hendelse" #: FForm.form:415 msgid "Run this form" msgstr "" #: FForm.form:568 msgid "Toggle grid" msgstr "" #: FForm.form:577 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:696 msgid "Move tab first" msgstr "" #: FForm.form:703 msgid "Move tab left" msgstr "" #: FForm.form:710 msgid "Move tab right" msgstr "" #: FForm.form:717 msgid "Move tab last" msgstr "" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "" #: FForm.form:753 msgid "Italic" msgstr "" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Bakgrunn" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Hierarki" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Hjelp browser" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpBrowser.form:120 msgid "Print" msgstr "" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Oversettelse" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Utvalg" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Preferanser" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Utvalg" #: FImageEditor.form:283 msgid "Exclusive or" msgstr "" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Skriv" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Rektangel" #: FImageEditor.form:608 msgid "Ellipse" msgstr "" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 msgid "Colorize" msgstr "" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Linje" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Linje" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Størrelse" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Oversett" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 msgid "Right align" msgstr "" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas klasser" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas moduler" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Bilde filer" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Kan ikke åpne filen." #: FImportFile.form:9 msgid "Import files" msgstr "" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Alle filer" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:79 msgid "Charset" msgstr "" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Rediger liste egenskaper" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Ønsker du å slette denne katalogen ?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Ønsker du å denne filen ?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Kan ikke slette fil eller katalog" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "" #: FMain.class:751 msgid "&Clear history" msgstr "&Rens historien" #: FMain.class:935 msgid "New folder" msgstr "" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1847 msgid "Clean" msgstr "" #: FMain.class:2164 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Filen er endret.\n" "\n" "Alle endringene dine vil gå tapt." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Argumenter" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Åpne prosjekt" #: FMain.form:289 msgid "Open recent" msgstr "Åpne nylig" #: FMain.form:297 msgid "Open example" msgstr "Åpne eksempel" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Lagre prosjekt" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Velg et prosjekt" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Avslutt" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Lagre" #: FMain.form:418 msgid "Compile" msgstr "Kompiler" #: FMain.form:425 msgid "Compile All" msgstr "Kompiler alt" #: FMain.form:435 msgid "Translate" msgstr "Oversett" #: FMain.form:444 msgid "Make" msgstr "" #: FMain.form:448 msgid "Executable" msgstr "" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "" #: FMain.form:462 msgid "Installation package" msgstr "" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:546 msgid "Refresh" msgstr "Oppfrisk" #: FMain.form:568 msgid "Run" msgstr "Kjør" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Argumenter" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 msgid "GUI component" msgstr "" #: FMain.form:615 msgid "Current desktop" msgstr "" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Pause" #: FMain.form:658 msgid "Stop" msgstr "Stopp" #: FMain.form:665 msgid "Step" msgstr "Steg" #: FMain.form:672 msgid "Forward" msgstr "Forover" #: FMain.form:679 msgid "Finish" msgstr "" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "" #: FMain.form:699 msgid "Close all debug windows" msgstr "" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Lukk alle vinduer" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "Finn" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Erstatt" #: FMain.form:796 msgid "Browse project" msgstr "" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Preferanser" #: FMain.form:854 msgid "Directory" msgstr "Katalog" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Modul" #: FMain.form:927 msgid "HTML file" msgstr "" #: FMain.form:934 msgid "Style sheet" msgstr "" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Nylig" #: FMain.form:981 msgid "Open in file manager" msgstr "" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Åpne prosjekt" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "" #: FMain.form:1060 msgid "Startup class" msgstr "Oppstartsklasse" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Lagre endrede filer" #: FMain.form:1098 msgid "Show files in conflict" msgstr "" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Oversett" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Dagens tips" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Prosjekt egenskaper" #: FMain.form:1311 msgid "Refresh project" msgstr "" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Lag eksekverbar" #: FMain.form:1353 msgid "Make source archive" msgstr "" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "" #: FMain.form:1382 msgid "Properties sheet" msgstr "Egenskapsark" #: FMain.form:1391 msgid "Toolbox" msgstr "Verktøysboks" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "" #: FMain.form:1433 msgid "Compile all" msgstr "Kompiler alt" #: FMain.form:1476 msgid "Finish current function" msgstr "" #: FMain.form:1492 msgid "Show menubar" msgstr "" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Fil" #: FMain.form:1606 msgid "&Project" msgstr "&Prosjekt" #: FMain.form:1618 msgid "&Debug" msgstr "" #: FMain.form:1630 msgid "&View" msgstr "&Se på" #: FMain.form:1642 msgid "&Tools" msgstr "&Verktøy" #: FMain.form:1654 msgid "&?" msgstr "" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Behold debugging informasjon i den eksekverbare" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeInstall.class:123 msgid "Package" msgstr "" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Lager pakke for &1." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Pakkene er opprettet uten feil." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Fyll inn navnet ditt." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Fyll inn e-postadressen din." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Fyll inn navnet ditt." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Skriv inn første linje i ENDRINGSLOGGEN." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:518 msgid "Initial release" msgstr "" #: FMakeInstall.class:778 msgid "Menus" msgstr "" #: FMakeInstall.class:846 msgid "Groups" msgstr "" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "" #: FMakeInstall.form:214 FOption.form:380 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "" #: FMakeInstall.form:317 msgid "Changelog" msgstr "" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Lag kildekode pakke" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Kildekodepakker" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "" #: FMenu.class:318 msgid "Bad menu name !" msgstr "Feil i meny navn !" #: FMenu.class:324 msgid "Bad group name !" msgstr "Feil i gruppe navn !" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Menyen er for dyp !" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "modifisert" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "&Sett inn" #: FMenu.form:100 #, fuzzy msgid "Insert menu before" msgstr "&Sett inn" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Sett inn" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Slett" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Klikk på Sett inn for å legge til en ny meny." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 msgid "Create database" msgstr "" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Slett" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 msgid "No password" msgstr "" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Velg et prosjekt" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Eksempler" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Smaragdgrønn" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Lim inn" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Visuell" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:237 msgid "Export a theme file" msgstr "" #: FOption.class:462 msgid "Select a theme file" msgstr "" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 msgid "Network is not available." msgstr "" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Kan ikke åpne filen." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 msgid "Unable to install documentation." msgstr "" #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Rykk inn" #: FOption.form:352 msgid "Package maintainer" msgstr "" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Standard tab størrelse" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Prosjekt" #: FOption.form:458 msgid "Default tab size" msgstr "Standard tab størrelse" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 msgid "Activate version control" msgstr "" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Bilde" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Fjern denne oversettelsen" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Oversettelsesfiler" #: FOption.form:653 msgid "Interface" msgstr "" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Vis verktøytips" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "" #: FOption.form:778 msgid "Small" msgstr "" #: FOption.form:790 msgid "Sort properties" msgstr "" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "" #: FOption.form:867 msgid "Fonts" msgstr "" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 msgid "Debugger size" msgstr "" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Bruk en fast font" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 msgid "Themes" msgstr "" #: FOption.form:1087 msgid "Icon theme" msgstr "" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Utheving" #: FOption.form:1117 msgid "Import theme" msgstr "" #: FOption.form:1123 msgid "Export theme" msgstr "" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Uthev gjeldende linje" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "" #: FOption.form:1230 msgid "Show line numbers" msgstr "" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 msgid "Show Preview" msgstr "" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 msgid "Local variable declaration" msgstr "" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Kommentarer" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Lukk alle vinduer" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 msgid "Documentation" msgstr "" #: FOption.form:1667 msgid "Use offline documentation" msgstr "" #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "" #: FOption.form:1755 msgid "Browser" msgstr "" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:78 msgid "Clear console" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Åpne nylig" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Kan ikke døpe om '&1'" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:159 msgid "Variable" msgstr "" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Justeringsverdi er ukorrekt." #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Standard tab størrelse" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 msgid "Information about component" msgstr "" #: FProjectProperty.class:964 msgid "Information about library" msgstr "" #: FProjectProperty.class:1454 #, fuzzy msgid "Select a Gambas executable" msgstr "Lag eksekverbar" #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Lag eksekverbar" #: FProjectProperty.form:267 msgid "General" msgstr "Generell" #: FProjectProperty.form:304 msgid "Component" msgstr "Komponent" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:311 msgid "Vendor" msgstr "" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versjon" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Tittel" #: FProjectProperty.form:389 #, fuzzy msgid "Information" msgstr "Kompilering" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 msgid "Include information from" msgstr "" #: FProjectProperty.form:484 msgid "Required features" msgstr "" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 msgid "Require" msgstr "" #: FProjectProperty.form:567 msgid "Exclude" msgstr "" #: FProjectProperty.form:579 msgid "Remove All" msgstr "" #: FProjectProperty.form:586 msgid "Components" msgstr "Komponenter" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Preferanser" #: FProjectProperty.form:664 msgid "Environment" msgstr "" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Sett inn" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Argumenter" #: FProjectProperty.form:746 msgid "Edition" msgstr "Utgave" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Tabulatorstørrelse" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Kompilering" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Form kontroller er public" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Ugyldige karakterer i kontrollnavn." #: FProperty.class:389 msgid "This name is already in use." msgstr "Dette navnet er allerede i bruk." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Ugyldige karakterer i kontrollgruppe." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Feil egenskapsverdi." #: FProperty.class:637 msgid "The name of the control." msgstr "" #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Pakkene er opprettet uten feil." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Feil egenskapsverdi." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Ønsker du å laste denne oversettelsen på nytt ?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Velg et prosjekt" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Bilde filer" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Beskrivelse" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Tabulatorstørrelse" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Lagre endrede filer" #: FSave.form:42 msgid "Save All" msgstr "" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "Søkestrengen ble erstattet en gang." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "Søkestrengen ble erstattet &1 ganger." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "" #: FSearch.form:104 msgid "Case sensitive" msgstr "" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Data typer" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Utheving" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Velg et bilde" #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Ukjent" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Velg alt" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Utgave" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:51 msgid "Internet" msgstr "" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Uttrykk" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 msgid "No software found." msgstr "" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Avbryt" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Ønsker du å denne filen ?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Kan ikke døpe om '&1'" #: FSoftwareFarm.class:557 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Ønsker du å denne filen ?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Kan ikke døpe om '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Ønsker du å denne filen ?" #: FSoftwareFarm.class:585 #, fuzzy msgid "Unable to uninstall &1:" msgstr "Kan ikke døpe om '&1'" #: FSoftwareFarm.class:587 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "Pakkene er opprettet uten feil." #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Ønsker du å denne filen ?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Kan ikke døpe om '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Pakkene er opprettet uten feil." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Ønsker du å denne filen ?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Kan ikke døpe om '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas former" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Åpne nylig" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Vis verktøytips" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Vis verktøytips" #: FSoftwareFarm.form:393 msgid "Download" msgstr "" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Rediger liste egenskaper" #: FText.form:29 msgid "Use a fixed font" msgstr "Bruk en fast font" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 msgid "Sort ascent" msgstr "" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Kan ikke lese dagens tips !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Vis tips ved oppstart" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Prosjektet er utilgjengelig. Det er ikke noe å oversette." #: FTranslate.class:74 msgid "Language" msgstr "" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Oversett" #: FTranslate.class:167 msgid "Translation files" msgstr "Oversettelsesfiler" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Kan ikke lese oversettelsesfil for språk '&1'" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Kan ikke lagre oversettelsen." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Ønsker du å slette denne oversettelsen ?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Ønsker du å laste denne oversettelsen på nytt ?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Eksporter en oversettelse" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Kan ikke importere oversettelsen." #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Alt ser ut til å være korrekt." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Oversatte streng symboler stemmer ikke med de uoversatte." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Kan ikke importere oversettelsen." #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Ønsker du å slette denne oversettelsen ?" #: FTranslate.form:76 msgid "Project translation" msgstr "" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Fjern denne oversettelsen" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Verifisert oversettelsen" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Finn neste uoversatt streng" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Finn neste uoversatt streng" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Finn neste uoversatt streng" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Fjern denne oversettelsen" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Denne strengen må ikke oversettes" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Kopier uoversatt streng" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Fjern denne oversettelsen" #: FTranslate.form:472 msgid "Import a translation file" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Ønsker du å rense uttrykkslisten ?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:61 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Utvalg" #: FWelcome.class:68 msgid "New project..." msgstr "Nytt prosjekt..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Nylige prosjekter" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Prosjekt" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabisk (Egypt)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabisk (Tunis)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgarsk (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalansk (Katalonia, Spain)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Walisisk (Storbrittania)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Dansk (Danmark)" #: Language.module:34 msgid "German (Germany)" msgstr "Tysk (Tyskland)" #: Language.module:35 msgid "German (Belgium)" msgstr "Tysk (Belgia)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Gresk (Hellas)" #: Language.module:41 msgid "English (common)" msgstr "Engelsk (vanlig)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Engelsk (Storbrittania)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Engelsk (USA)" #: Language.module:44 msgid "English (Australia)" msgstr "Engelsk (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Engelsk (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Engelsk (vanlig)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spansk (Spania)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spansk (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Fransk (Frankrike)" #: Language.module:69 msgid "French (Belgium)" msgstr "Fransk (Belgia)" #: Language.module:70 msgid "French (Canada)" msgstr "Fransk (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Fransk (Sveits)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Gallisk (Spania)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Ungarsk (Ungarn)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Kroatisk (Kroatia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesisk (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irsk (Irland)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiensk (Italia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Hollandsk (Nederland)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Hollandsk (Belgia)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norsk (Norge)" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polsk (Polen)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugisisk (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugisisk (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russisk (Russland)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovensk (Slovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Svensk (Sverige)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Tyrkisk (Tyrkia)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Walloonsk (Belgia)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Forenklet kinesisk (Kina)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Tradisjonell kinesisk (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Ukjent" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Dette prosjektet finnes allerede." #: MMime.module:17 msgid "Plain text" msgstr "" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Kommentarer" #: MTheme.module:6 msgid "Current line" msgstr "Gjeldende linje" #: MTheme.module:6 msgid "Data types" msgstr "Data typer" #: MTheme.module:6 msgid "Editing line" msgstr "Redigerer linje" #: MTheme.module:6 msgid "Errors" msgstr "" #: MTheme.module:6 msgid "Highlighting" msgstr "Utheving" #: MTheme.module:6 msgid "Keywords" msgstr "Nøkkelord" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Normal tekst" #: MTheme.module:6 msgid "Numbers" msgstr "Tall" #: MTheme.module:6 msgid "Operators" msgstr "Operatorer" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Strenger" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutiner" #: MTheme.module:6 msgid "Symbols" msgstr "Symboler" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Lagrer ENDRINGSLOGGEN." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Lager pakke for &1." #: Package.module:744 msgid "The package build has failed." msgstr "Pakkebyggingen feilet." #: Package.module:812 msgid "Making build directory." msgstr "" #: Package.module:867 msgid "Creating desktop file..." msgstr "" #: Package.module:875 msgid "Sources are being debianizated." msgstr "" #: Package.module:1080 msgid "Creating package..." msgstr "" #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Initialiserer ~/RPM katalog." #: Package.module:1390 msgid "Creating source package." msgstr "Lager kildekodepakke." #: Package.module:1414 msgid "Creating .spec file." msgstr "Lager .spec fil." #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "" #: Project.module:228 msgid "Basic" msgstr "" #: Project.module:230 msgid "Drawing" msgstr "" #: Project.module:233 msgid "Miscellaneous" msgstr "Forskjellig" #: Project.module:234 msgid "Networking" msgstr "" #: Project.module:235 msgid "OpenGL" msgstr "" #: Project.module:236 msgid "Printing" msgstr "" #: Project.module:237 msgid "Sound" msgstr "" #: Project.module:239 msgid "Controls" msgstr "" #: Project.module:240 msgid "Multimedia" msgstr "" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "" #: Project.module:518 msgid "This project does not exist." msgstr "" #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Ikke åpne" #: Project.module:573 msgid "Open after all" msgstr "Åpne etter alle" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Dette prosjektet har kun lesetilgang." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Kan ikke åpne prosjekt fil :\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Kan ikke åpne filen." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Kan ikke åpne filen." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2464 msgid "Compiling project" msgstr "Kompilerer prosjekt" #: Project.module:2715 msgid "File already exists." msgstr "Filen finnes allerede." #: Project.module:2747 msgid "Directory already exists." msgstr "Katalogen finnes allerede." #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Kan ikke kopiere mal fil." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 msgid "Cannot install library in &1." msgstr "" #: Project.module:3031 msgid "Making executable..." msgstr "Lager eksekverbar..." #: Project.module:3083 msgid "Cannot make executable." msgstr "" #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Noen komponenter mangler: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Kan ikke skrive prosjektfilen." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Du må definere en oppstartsklasse eller -form!" #: Project.module:4080 msgid "Please type a name." msgstr "Tast inn et navn." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Dette navnet er allerede i bruk. Velg et annet." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Kan ikke døpe om '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Tast inn et prosjekt navn." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4488 msgid "This project already exists." msgstr "Dette prosjektet finnes allerede." #: Project.module:4491 msgid "The project directory already exists." msgstr "" #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Lag kildekode pakke" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Kan ikke kopiere fil &1." #: Project.module:4881 msgid "Cannot create link &1." msgstr "" #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:4960 msgid "Cannot move file &1." msgstr "Kan ikke flytte fil &1." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 #, fuzzy msgid "Unable to update forms." msgstr "Kan ikke døpe om '&1'" #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 msgid "Unable to read component description file." msgstr "" #: Project.module:6171 msgid "Cannot write component description file." msgstr "" #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Prosjekt egenskaper" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Kan ikke døpe om '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Kan ikke lagre filen!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 msgid "Please check your network connection." msgstr "" #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Ønsker du å slette denne katalogen ?" #: VersionControl.module:506 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Dette prosjektet finnes allerede." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Thanks to" #~ msgstr "Takk til" #~ msgid "About Gambas..." #~ msgstr "Om Gambas..." #~ msgid "

Authors

\n" #~ msgstr "

Forfattere

\n" #~ msgid "Open project..." #~ msgstr "Åpne prosjekt..." #~ msgid "Edit text property" #~ msgstr "Rediger tekst egenskaper" #, fuzzy #~ msgid "&1 has been successfully removed." #~ msgstr "Pakkene er opprettet uten feil." #~ msgid "Show only components used in project" #~ msgstr "Vis kun komponenter brukt i prosjekt" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Klikk på en form for å vise kontrollhierarkiet..." #, fuzzy #~ msgid "Display expression" #~ msgstr "Overvåk uttrykk" #~ msgid "Existing" #~ msgstr "Eksisterende" #, fuzzy #~ msgid "Text file" #~ msgstr "Tekst" gambas-3.16.3/app/src/gambas3/.lang/pl.po000066400000000000000000004370651411575327000177200ustar00rootroot00000000000000# Wojciech Saltarski , 2003. # msgid "" msgstr "" "Project-Id-Version: pl\n" "POT-Creation-Date: 2019-05-25 21:40 UTC\n" "PO-Revision-Date: 2004-11-24 23:55\n" "Last-Translator: Wojciech Saltarski \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0\n" #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Zintegrowane środowisko programistyczne (IDE) Gambasa" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 msgid "Static properties" msgstr "" #: CClassInfo.class:604 msgid "Static variables" msgstr "" #: CClassInfo.class:605 msgid "Static methods" msgstr "" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Właściwości" #: CClassInfo.class:624 msgid "Variables" msgstr "" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "tylko do odczytu" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 #, fuzzy msgid "static function" msgstr "Cel" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Klasy" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Klasa" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Opis" #: CComponent.class:1667 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Ten projekt jest tylko do odczytu." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "Autorzy" #: CComponent.class:1690 msgid "Implements" msgstr "Implementuje" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:1717 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 #, fuzzy msgid "Terminal emulator" msgstr "Konsola" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:88 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:125 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:128 msgid "Report designer" msgstr "" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Komponent" #: CDocumentation.class:134 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:135 msgid "Application settings management" msgstr "" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Układ" #: CDocumentation.class:138 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Komponent" #: CDocumentation.class:140 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:141 msgid "Video capture" msgstr "" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 msgid "Web application development" msgstr "" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Formularz" #: CModule.class:28 msgid "Forms" msgstr "Formularze" #: CModule.class:28 msgid "Gambas forms" msgstr "Formularze Gambas" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Formularze Gambas" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Formularz" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Formularze" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Formularze Gambas" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Formularz" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Formularze" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Anuluj" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Naprawdę chcesz usunąć ten plik?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Tworzenie pakietów zakończyło się sukcesem." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Projekt" #: CProjectTree.class:346 msgid "Sources" msgstr "Źródła" #: CProjectTree.class:348 msgid "Connections" msgstr "Połączenia" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Zasoby" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "Dzisiaj" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Wczoraj" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Utwórz plik uruchamialny" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Nie mogę usunąć pliku lub katalogu" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Wczoraj" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Wiersz bieżący" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Nie mogę utworzyć projektu!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Nie mogę utworzyć projektu!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Ostatnie projekty" #: CVersionControlGit.class:319 #, fuzzy msgid "Status" msgstr "Statystyka" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 #, fuzzy msgid "Remote repository URL" msgstr "Repozytorium" #: CVersionControlGit.class:373 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "-" #: CVersionControlGit.class:411 msgid "Solve conflict." msgstr "" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "" "Program zwrócił\n" "wartość: &1" #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Program zwrócił\n" "wartość: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "O Gambasie" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "System" #: FColorChooser.form:35 msgid "Free" msgstr "Wolne" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "Eksperymentalne" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "Usuń wszystko" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Wybierz projekt" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Odczytaj ponownie" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "Powiększ" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "Pomniejsz" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "E&dytuj" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Tekst" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "Obraz" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Wytnij" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Kopiuj" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Wklej" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Cofnij" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Przywróć" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Zwiększ wcięcie" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "Zmniejsz wcięcie" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Otwórz" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Zapisz" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Zamknij" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Komentarz" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Usuń komentarz" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Zaznacz Wszystko" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Idź do wiersza" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Pokaż" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:284 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "Koniec wiersza" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Kod" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Poprzedni " #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Nazwa" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Typ" #: FConnectionEditor.class:61 msgid "Length" msgstr "Długość" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Domyślna wartość" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Kompilacja" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Indeks" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Pole" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "bez ograniczeń" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "Boolowska" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Data" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "Uwolnij" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "Liczba całkowita" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "Długi" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "Szeregowy" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "Ciąg" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Usuń" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Zmień nazwę" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "Importuj" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Dodaj" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "W dół" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "W górę" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Nowy(a)" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Wyczyść" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Eksportuj" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Usuń" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Zaznacz wszystko" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Ustawienia" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Szerokość" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Wysokość" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "niedostępne" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Nie mogę utworzyć projektu!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Wpisz nazwę." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Nowy projekt" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Katalog" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Właściwości projektu" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Projekt został przetłumaczony" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repozytorium" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "Debugowanie" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Konsola" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Punkt zatrzymania" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 msgid "Search result" msgstr "" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "niedostępne" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Wartość" #: FDebugExpr.class:508 msgid "Key" msgstr "Klucz" #: FDebugExpr.class:514 msgid "Symbol" msgstr "Symbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Czujka" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Wiersz" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Funkcja" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Plik" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:126 msgid "native code" msgstr "kod macierzysty" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Wyrażenie czujki" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Chcesz wyczyścić listę wyrażeń?" #: FDebugInfo.class:1070 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1209 msgid "Current object" msgstr "" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "Debugger" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:124 msgid "Add expression" msgstr "" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "Ustaw punkt zatrzymania" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Ustaw punkt zatrzymania" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Tabela" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Ustaw punkt zatrzymania" #: FDebugInfo.form:201 #, fuzzy msgid "Enable" msgstr "Tabela" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "Szukane wyrażenie nie zostało znalezione." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "Wyślij" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:379 FMain.form:508 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Idź do" #: FEditor.form:243 msgid "Find definition" msgstr "" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Uruchom do bieżącego wiersza." #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Ustaw punkt zatrzymania" #: FEditor.form:314 msgid "Watch expression" msgstr "Wyrażenie czujki" #: FEditor.form:323 msgid "Open form" msgstr "" #: FEditor.form:330 FMain.form:1067 msgid "Run this class" msgstr "" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Edytor" #: FEditor.form:523 FTextEditor.form:507 msgid "Insert special character" msgstr "" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Użytkownik" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Hasło" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Zapamiętaj hasło" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Proszę wpisać swój adres e-mail." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Nie mogę zmienić nazwy '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Zapamiętaj hasło" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Połączenie" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "Tabela" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "Zmiany" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "Statystyka" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Kontynuacja" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Moduły" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 #, fuzzy msgid "Undo changes" msgstr "Zmiany" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:134 msgid "Bad form file" msgstr "Uszkodzony plik formularza" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Nieznany błąd" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Nie moge otworzyć pliku." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Zaznacz" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Wybierz projekt" #: FForm.form:239 msgid "Arrangement" msgstr "Układ" #: FForm.form:243 msgid "Bring to foreground" msgstr "Przesuń na wierzch" #: FForm.form:250 msgid "Send to background" msgstr "Przesuń pod spód" #: FForm.form:260 msgid "Horizontal" msgstr "Poziomy" #: FForm.form:267 msgid "Rows" msgstr "Wiersze" #: FForm.form:273 msgid "Vertical" msgstr "Pionowy" #: FForm.form:280 msgid "Columns" msgstr "Kolumny" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Wyrównanie" #: FForm.form:305 msgid "Align to left" msgstr "Wyrównaj do lewej" #: FForm.form:311 msgid "Align to right" msgstr "Wyrównaj do prawej" #: FForm.form:317 msgid "Align to top" msgstr "Wyrównaj do góry" #: FForm.form:323 msgid "Align to bottom" msgstr "Wyrównaj do dołu" #: FForm.form:332 msgid "Same width" msgstr "Taka sama szerokość" #: FForm.form:338 msgid "Same height" msgstr "Taka sama wysokość" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "" #: FForm.form:360 msgid "First" msgstr "" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Poprzedni " #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Następny" #: FForm.form:381 msgid "Last" msgstr "" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Edytor menu" #: FForm.form:401 msgid "Event" msgstr "Zdarzenie" #: FForm.form:415 msgid "Run this form" msgstr "" #: FForm.form:568 msgid "Toggle grid" msgstr "" #: FForm.form:577 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:696 msgid "Move tab first" msgstr "" #: FForm.form:703 msgid "Move tab left" msgstr "" #: FForm.form:710 msgid "Move tab right" msgstr "" #: FForm.form:717 msgid "Move tab last" msgstr "" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "Pogrubienie" #: FForm.form:753 msgid "Italic" msgstr "Kursywa" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "Podkreślenie" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Tło" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Hierarchia" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "W górę" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "W dół" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Przeglądarka komponentów" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Idź wstecz" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "Idź naprzód" #: FHelpBrowser.form:120 msgid "Print" msgstr "Drukuj" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Lokalizacja" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Zaznaczenie" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Ustawienia" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Zaznaczenie" #: FImageEditor.form:283 msgid "Exclusive or" msgstr "" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Rysowanie" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Prostokąt" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipsa" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "px" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 msgid "Colorize" msgstr "" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Wiersz" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Wiersz" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Rozmiar" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Lokalizacja projektu" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "Podgląd" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Przywróć" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 msgid "Right align" msgstr "" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Klasy Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Moduły Gambas" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Pliki obrazków" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Nie moge otworzyć pliku." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importuj" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Wszystkie pliki" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "Źródło" #: FImportTable.form:79 msgid "Charset" msgstr "Układ klawiatury" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "Cel" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Zmień właściwości listy" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Naprawdę chcesz usunąć ten katalog?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Naprawdę chcesz usunąć ten plik?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Nie mogę usunąć pliku lub katalogu" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "" #: FMain.class:751 msgid "&Clear history" msgstr "&Czyszczenie historii" #: FMain.class:935 msgid "New folder" msgstr "Nowy folder" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1847 msgid "Clean" msgstr "Czysty" #: FMain.class:2164 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Plik został zmodyfikowany\n" "\n" "Wszystkie Twoje zmiany zostaną utracone." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Argumenty" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Otwórz projekt" #: FMain.form:289 msgid "Open recent" msgstr "Ostatnio otwierane" #: FMain.form:297 msgid "Open example" msgstr "Otwórz przykład" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Zapisz projekt" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Wybierz projekt" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Zakończ" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Zapisz" #: FMain.form:418 msgid "Compile" msgstr "Kompiluj" #: FMain.form:425 msgid "Compile All" msgstr "Kompiluj wszystko" #: FMain.form:435 msgid "Translate" msgstr "Lokalizacja projektu" #: FMain.form:444 msgid "Make" msgstr "Wytworzony" #: FMain.form:448 msgid "Executable" msgstr "" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "" #: FMain.form:462 msgid "Installation package" msgstr "" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:546 msgid "Refresh" msgstr "Odśwież" #: FMain.form:568 msgid "Run" msgstr "Uruchom" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Argumenty" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 msgid "GUI component" msgstr "" #: FMain.form:615 msgid "Current desktop" msgstr "" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Pauza" #: FMain.form:658 msgid "Stop" msgstr "-" #: FMain.form:665 msgid "Step" msgstr "Krok" #: FMain.form:672 msgid "Forward" msgstr "Przejdź przez" #: FMain.form:679 msgid "Finish" msgstr "" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "" #: FMain.form:699 msgid "Close all debug windows" msgstr "" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Zamknij wszystkie okna" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "Znajdź" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Zastąp" #: FMain.form:796 msgid "Browse project" msgstr "" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "Skróty" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Ustawienia" #: FMain.form:854 msgid "Directory" msgstr "Katalog" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Moduł" #: FMain.form:927 msgid "HTML file" msgstr "" #: FMain.form:934 msgid "Style sheet" msgstr "Arkusz stylów" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "Inny" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Ostatnio otwarte" #: FMain.form:981 msgid "Open in file manager" msgstr "" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Otwórz projekt" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "" #: FMain.form:1060 msgid "Startup class" msgstr "Klasa startowa" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Zapisz zmodyfikowane pliki" #: FMain.form:1098 msgid "Show files in conflict" msgstr "" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Lokalizacja projektu" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Porady dnia" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Właściwości projektu" #: FMain.form:1311 msgid "Refresh project" msgstr "" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Utwórz plik uruchamialny" #: FMain.form:1353 msgid "Make source archive" msgstr "" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "" #: FMain.form:1382 msgid "Properties sheet" msgstr "Właściwości komponentów" #: FMain.form:1391 msgid "Toolbox" msgstr "Pasek narzędzi" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "" #: FMain.form:1433 msgid "Compile all" msgstr "Kompiluj wszystko" #: FMain.form:1476 msgid "Finish current function" msgstr "" #: FMain.form:1492 #, fuzzy msgid "Show menubar" msgstr "Pokaż numerację wierszy" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Plik" #: FMain.form:1606 msgid "&Project" msgstr "&Projekt" #: FMain.form:1618 msgid "&Debug" msgstr "&Debuguj" #: FMain.form:1630 msgid "&View" msgstr "&Okno" #: FMain.form:1642 msgid "&Tools" msgstr "&Narzędzia" #: FMain.form:1654 msgid "&?" msgstr "-" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Umieść w pliku wykonywalnym informacje dla debuggera" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeInstall.class:123 msgid "Package" msgstr "Pakiet" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Tworzenie pakietu dla &1." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Tworzenie pakietów zakończyło się sukcesem." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Proszę wpisać swoje imię i nazwisko." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Proszę wpisać swój adres e-mail." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Proszę wpisać swoje imię i nazwisko." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Proszę dodać pierwszy wpis do pliku CHANGELOG." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:518 msgid "Initial release" msgstr "" #: FMakeInstall.class:778 msgid "Menus" msgstr "" #: FMakeInstall.class:846 msgid "Groups" msgstr "Grupy" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "" #: FMakeInstall.form:214 FOption.form:380 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "" #: FMakeInstall.form:317 msgid "Changelog" msgstr "Plik zmian" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "Kategorie" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Tworzenie pakietu źródłowego" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Pakiety źródłowe" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "" #: FMenu.class:318 msgid "Bad menu name !" msgstr "Niepoprawna nazwa menu!" #: FMenu.class:324 msgid "Bad group name !" msgstr "Niepoprawna nazwa grupy!" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Menu jest zbyt głębokie!" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "modyfikacja" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 msgid "Insert separator" msgstr "" #: FMenu.form:100 msgid "Insert menu before" msgstr "" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Wstaw" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Usuń" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Aby dodać nowe menu, kliknij przycisk Wstaw." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Baza danych" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Baza danych" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Komputer" #: FNewConnection.form:124 msgid "Path" msgstr "Ścieżka" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Hasło" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "Baza danych" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Wybierz projekt" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Przykłady" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Szmaragdowy" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Wklej" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "Szybko" #: FOption.class:4 msgid "Ruby" msgstr "Rubinowy" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "VB" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Pulpit" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "(Domyślne)" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:237 msgid "Export a theme file" msgstr "" #: FOption.class:462 msgid "Select a theme file" msgstr "" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 #, fuzzy msgid "Network is not available." msgstr "niedostępne" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Nie mogę skopiować pliku &1." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 msgid "Unable to install documentation." msgstr "" #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Zwiększ wcięcie" #: FOption.form:352 msgid "Package maintainer" msgstr "" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Domyślna wartość" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Nie" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Tak" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Projekt" #: FOption.form:458 msgid "Default tab size" msgstr "Domyślny rozmiar wcięcia" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 msgid "Activate version control" msgstr "" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Obraz" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Wyczyść tłumaczenie" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Plik tłumaczenia" #: FOption.form:653 msgid "Interface" msgstr "Interfejs" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Pokazuj dymki" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "Normalny" #: FOption.form:778 msgid "Small" msgstr "Mała" #: FOption.form:790 msgid "Sort properties" msgstr "" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "" #: FOption.form:867 msgid "Fonts" msgstr "" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 #, fuzzy msgid "Debugger size" msgstr "Debugowanie" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "Pomoc" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Użyj czcionki o stałej szerokości" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 #, fuzzy msgid "Themes" msgstr "Motyw" #: FOption.form:1087 msgid "Icon theme" msgstr "" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Podświetlenie" #: FOption.form:1117 msgid "Import theme" msgstr "" #: FOption.form:1123 msgid "Export theme" msgstr "" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Podświetl bieżący wiersz" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "" #: FOption.form:1230 msgid "Show line numbers" msgstr "Pokaż numerację wierszy" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 #, fuzzy msgid "Show Preview" msgstr "Podgląd" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 msgid "Local variable declaration" msgstr "" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Połączenie" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Zamknij wszystkie okna" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 #, fuzzy msgid "Documentation" msgstr "Cel" #: FOption.form:1667 msgid "Use offline documentation" msgstr "" #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "Programy" #: FOption.form:1755 msgid "Browser" msgstr "Przeglądarka" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "Konsola" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:78 msgid "Clear console" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Ostatnio otwierane" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Zawartość schowka" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Nie mogę zmienić nazwy '&1'" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:159 msgid "Variable" msgstr "Zmienna" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Wartość przyciągania do siatki jest błędna." #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Domyślny rozmiar wcięcia" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 msgid "Information about component" msgstr "" #: FProjectProperty.class:964 msgid "Information about library" msgstr "" #: FProjectProperty.class:1454 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Utwórz plik uruchamialny" #: FProjectProperty.form:267 msgid "General" msgstr "Ogólne" #: FProjectProperty.form:304 msgid "Component" msgstr "Komponent" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:311 msgid "Vendor" msgstr "" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Wersja" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Tytuł" #: FProjectProperty.form:389 #, fuzzy msgid "Information" msgstr "Kompilacja" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 msgid "Include information from" msgstr "" #: FProjectProperty.form:484 msgid "Required features" msgstr "" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 msgid "Require" msgstr "" #: FProjectProperty.form:567 msgid "Exclude" msgstr "" #: FProjectProperty.form:579 msgid "Remove All" msgstr "Usuń wszystkie" #: FProjectProperty.form:586 msgid "Components" msgstr "Komponenty" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Ustawienia" #: FProjectProperty.form:664 msgid "Environment" msgstr "" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Wstaw" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Argumenty" #: FProjectProperty.form:746 msgid "Edition" msgstr "Edycja" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Rozmiar wcięcia" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Kompilacja" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Publiczne kontrolki formularza" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Odśwież" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Niedozwolony znak w nazwie kontrolki." #: FProperty.class:389 msgid "This name is already in use." msgstr "Ta nazwa jest już używana." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Niedozwolony znak w nazwie grupy." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Niepoprawna wartość właściwości." #: FProperty.class:637 msgid "The name of the control." msgstr "" #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Żadne" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Tworzenie pakietów zakończyło się sukcesem." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Niepoprawna wartość właściwości." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Naprawdę chcesz odczytać ponownie to tłumaczenie?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Wybierz projekt" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Pliki obrazków" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Opis" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Rozmiar wcięcia" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Zapisz zmodyfikowane pliki" #: FSave.form:42 msgid "Save All" msgstr "Zapisz wszystkie" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "Szukany tekst zastąpiono jeden raz." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "Szukany tekst zastąpiono &1 raz(y)." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "" #: FSearch.form:104 msgid "Case sensitive" msgstr "Uwzględnij wielkość liter" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Typ danych" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Podświetlenie" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Wybierz obrazek" #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Nieznany" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Zaznacz wszystko" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Gry" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Edycja" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "Wideo" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Interfejs" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Wyrażenie" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 msgid "No software found." msgstr "" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Anuluj" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Naprawdę chcesz usunąć ten plik?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Nie mogę zmienić nazwy '&1'" #: FSoftwareFarm.class:557 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Naprawdę chcesz usunąć ten plik?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Nie mogę zmienić nazwy '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Naprawdę chcesz usunąć ten plik?" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Naprawdę chcesz usunąć ten plik?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Nie mogę zmienić nazwy '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Tworzenie pakietów zakończyło się sukcesem." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Naprawdę chcesz usunąć ten plik?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Nie mogę zmienić nazwy '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Formularze Gambas" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Ostatnio otwierane" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Pokazuj dymki" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Pokazuj dymki" #: FSoftwareFarm.form:393 #, fuzzy msgid "Download" msgstr "W dół" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Zmień właściwości listy" #: FText.form:29 msgid "Use a fixed font" msgstr "Użyj czcionki o stałej szerokości" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 msgid "Sort ascent" msgstr "" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Nie mogę wczytać porady dnia!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Pokaż porady przy starcie programu" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Ten projekt jest pusty. Nie ma nic do tłumaczenia." #: FTranslate.class:74 msgid "Language" msgstr "Język" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Lokalizacja projektu" #: FTranslate.class:167 msgid "Translation files" msgstr "Plik tłumaczenia" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Nie mogę odczytać pliku z tłumaczeniem z języka '&1'" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Nie mogę zapisać tłumaczenia." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Naprawdę chcesz usunąć to tłumaczenie?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Naprawdę chcesz odczytać ponownie to tłumaczenie?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Eksportuj tłumaczenie" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Nie mogę importować pliku tłumaczenia." #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Wydaje się, że wszystko jest w porządku." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Symbole w przetłumaczonej frazie nie są zgodne z oryginałem." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Nie mogę importować pliku tłumaczenia." #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Naprawdę chcesz usunąć to tłumaczenie?" #: FTranslate.form:76 msgid "Project translation" msgstr "" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Wyczyść tłumaczenie" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Weryfikacja tłumaczenia" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Znajdź następny nieprzetłumaczony" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Znajdź następny nieprzetłumaczony" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Znajdź następny nieprzetłumaczony" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Wyczyść tłumaczenie" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Tego tekstu nie wolno tłumaczyć" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Kopiuj nieprzetłumaczony tekst" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Wyczyść tłumaczenie" #: FTranslate.form:472 msgid "Import a translation file" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Chcesz wyczyścić listę wyrażeń?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:61 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Zaznaczenie" #: FWelcome.class:68 msgid "New project..." msgstr "Nowy projekt..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Ostatnie projekty" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Projekt" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabski (Egypt)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabski (Tunisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bułgarski (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Kataloński (Catalonia, Spain)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Walijski (United Kingdom)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Czeski (Czech Republic)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Duński (Denmark)" #: Language.module:34 msgid "German (Germany)" msgstr "Niemiecki (Germany)" #: Language.module:35 msgid "German (Belgium)" msgstr "Niemiecki (Belgium)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grecki (Greece)" #: Language.module:41 msgid "English (common)" msgstr "Angielski (ogólny)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Angielski (United Kingdom)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Angielski (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Angielski (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Angielski (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Angielski (ogólny)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Hiszpański (Spain)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Hiszpański (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estoński (Estonia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Francuski (France)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francuski (Belgium)" #: Language.module:70 msgid "French (Canada)" msgstr "Francuski (Canada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francuski (Switzerland)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galicyjski (Spain)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebrajski (Izrael)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (Indie)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Węgierski (Hungary)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Chorwacki (Croatia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonezyjski (Indonesia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandzki (Ireland)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Włoski (Italy)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japoński (Japonia)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Mon-Khmer (Kambodża)" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malajalam (Indie)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Holenderski (Netherlands)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Holenderski (Belgium)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norweski (Norway)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Pendżabski (Indie)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polski (Poland)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugalski (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugalski (Brazil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Rosyjski (Russia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Słoweński (Slovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albański (Albania)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Szwedzki (Sweden)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turecki (Turkey)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Wietnamski (Wietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Waloński (Belgium)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Uproszczony chiński (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Tradycyjny chiński (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Nieznany" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Plik już istnieje" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Niepoprawna data" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "Brak pamięci" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "Błąd odczytu" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "Przepełnienie stosu" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "Błąd składni" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "Nieznany błąd" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "Błąd zapisu" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Ten projekt już istnieje." #: MMime.module:17 msgid "Plain text" msgstr "Zwykły tekst" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Komentarze" #: MTheme.module:6 msgid "Current line" msgstr "Wiersz bieżący" #: MTheme.module:6 msgid "Data types" msgstr "Typ danych" #: MTheme.module:6 msgid "Editing line" msgstr "Edytowana linia" #: MTheme.module:6 msgid "Errors" msgstr "Błędy" #: MTheme.module:6 msgid "Highlighting" msgstr "Podświetlenie" #: MTheme.module:6 msgid "Keywords" msgstr "Słowa kluczowe" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Zwykły tekst" #: MTheme.module:6 msgid "Numbers" msgstr "Liczby" #: MTheme.module:6 msgid "Operators" msgstr "Operatory" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Napisy" #: MTheme.module:6 msgid "Subroutines" msgstr "Funkcje" #: MTheme.module:6 msgid "Symbols" msgstr "Symbole" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Zapisywanie pliku CHANGELOG." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Tworzenie pakietu dla &1." #: Package.module:744 msgid "The package build has failed." msgstr "Tworzenie pakietu nie powiodło się." #: Package.module:812 msgid "Making build directory." msgstr "" #: Package.module:867 msgid "Creating desktop file..." msgstr "" #: Package.module:875 msgid "Sources are being debianizated." msgstr "" #: Package.module:1080 msgid "Creating package..." msgstr "" #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Inicjacja katalogu ~/RPM." #: Package.module:1390 msgid "Creating source package." msgstr "Tworzenie pakietu źródłowego." #: Package.module:1414 msgid "Creating .spec file." msgstr "Tworzenie pliku .spec." #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "" #: Project.module:228 msgid "Basic" msgstr "Podstawowe" #: Project.module:230 msgid "Drawing" msgstr "" #: Project.module:233 msgid "Miscellaneous" msgstr "Różne" #: Project.module:234 msgid "Networking" msgstr "" #: Project.module:235 msgid "OpenGL" msgstr "OpenGL" #: Project.module:236 msgid "Printing" msgstr "Drukowanie" #: Project.module:237 msgid "Sound" msgstr "Dźwięk" #: Project.module:239 msgid "Controls" msgstr "" #: Project.module:240 msgid "Multimedia" msgstr "" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "" #: Project.module:518 msgid "This project does not exist." msgstr "" #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Nie otwieraj" #: Project.module:573 msgid "Open after all" msgstr "Otwórz mimo wszystko" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Ten projekt jest tylko do odczytu." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Nie mogę otworzyć pliku z projektem:\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Nie moge otworzyć pliku." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Nie moge otworzyć pliku." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2464 msgid "Compiling project" msgstr "Kompiluję projekt" #: Project.module:2715 msgid "File already exists." msgstr "Plik już istnieje." #: Project.module:2747 msgid "Directory already exists." msgstr "Katalog już istnieje." #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Nie mogę skopiować przykładowego pliku." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 msgid "Cannot install library in &1." msgstr "" #: Project.module:3031 msgid "Making executable..." msgstr "Tworzę plik uruchamialny..." #: Project.module:3083 msgid "Cannot make executable." msgstr "" #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Brakuje komponentów: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Nie moge zapisać pliku." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Musisz wskazać klasę lub formularz startowy!" #: Project.module:4080 msgid "Please type a name." msgstr "Wpisz nazwę." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Taka nazwa już istnieje. Wybierz inną." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Nie mogę zmienić nazwy '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Wpisz nazwę projektu." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4488 msgid "This project already exists." msgstr "Ten projekt już istnieje." #: Project.module:4491 msgid "The project directory already exists." msgstr "" #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Tworzenie pakietu źródłowego" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Nie mogę skopiować pliku &1." #: Project.module:4881 msgid "Cannot create link &1." msgstr "" #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:4960 msgid "Cannot move file &1." msgstr "Nie mogę przenieść pliku &1." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 msgid "Unable to update forms." msgstr "" #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 msgid "Unable to read component description file." msgstr "" #: Project.module:6171 msgid "Cannot write component description file." msgstr "" #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Właściwości projektu" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Nie mogę zmienić nazwy '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Nie mogę zapisać pliku!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 msgid "Please check your network connection." msgstr "" #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Naprawdę chcesz usunąć ten katalog?" #: VersionControl.module:506 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Ten projekt już istnieje." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Open project..." #~ msgstr "Otwórz projekt..." #~ msgid "Edit text property" #~ msgstr "Zmień właściwości tekstu" #~ msgid "Show only components used in project" #~ msgstr "Pokazuj tylko komponenty użyte w projekcie" #~ msgid "Author(s)" #~ msgstr "Autorzy" #~ msgid "Blend" #~ msgstr "Połącz" #~ msgid "Messages" #~ msgstr "Wiadomości" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Kliknij formularz aby wyświetlić hierarchię jego kontrolek..." #~ msgid "Existing" #~ msgstr "Istniejący(a)" #~ msgid "

Authors

\n" #~ msgstr "

Autorzy

\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "About Gambas..." #~ msgstr "O Gambasie..." #~ msgid "Thanks to" #~ msgstr "Podziękowania dla" gambas-3.16.3/app/src/gambas3/.lang/pt.po000066400000000000000000004720551411575327000177260ustar00rootroot00000000000000# #-#-#-#-# CClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CConfig.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Gambas 1.0.1\n" "POT-Creation-Date: 2020-06-06 18:03 UTC\n" "PO-Revision-Date: 2005-01-04 17:50+0000\n" "Last-Translator: Lopo Lencastre de Almeida \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:608 msgid "Static properties" msgstr "" #: CClassInfo.class:609 msgid "Static variables" msgstr "" #: CClassInfo.class:610 msgid "Static methods" msgstr "" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Propriedades" #: CClassInfo.class:629 msgid "Variables" msgstr "" #: CClassInfo.class:630 msgid "Methods" msgstr "" #: CClassInfo.class:631 msgid "Events" msgstr "" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:661 msgid "in &1" msgstr "" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:674 msgid "This class is &1." msgstr "" #: CClassInfo.class:674 msgid "creatable" msgstr "" #: CClassInfo.class:679 msgid "This class is static." msgstr "" #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:687 msgid "function" msgstr "" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:692 msgid "read" msgstr "" #: CClassInfo.class:692 msgid "write" msgstr "" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:694 msgid "write-only" msgstr "" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "só para leitura" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:702 msgid "enumerable" msgstr "" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "" #: CClassInfo.class:855 msgid "This class inherits" msgstr "" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "" #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:897 #, fuzzy msgid "static function" msgstr "Destino" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:918 msgid "statically enumerable" msgstr "" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Classes" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Classe" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descrição" #: CComponent.class:1669 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1671 #, fuzzy msgid "This component is deprecated." msgstr "Este projecto só pode ser lido" #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "Autoria" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "Autores" #: CComponent.class:1692 msgid "Implements" msgstr "Implementa" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:1719 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "" #: CDocumentation.class:80 #, fuzzy msgid "Terminal emulator" msgstr "Terminal" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:88 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:90 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:93 msgid "Image management" msgstr "" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:104 msgid "Memcached client" msgstr "" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:107 msgid "NCurses library" msgstr "" #: CDocumentation.class:108 msgid "Network programming" msgstr "" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:110 msgid "POP3 client" msgstr "" #: CDocumentation.class:111 msgid "SMTP client" msgstr "" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:125 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:126 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:128 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:129 msgid "Report designer" msgstr "" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:132 msgid "SDL library" msgstr "" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:134 #, fuzzy msgid "SDL2 component" msgstr "Componente" #: CDocumentation.class:135 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:136 msgid "Application settings management" msgstr "" #: CDocumentation.class:137 msgid "Signals management" msgstr "" #: CDocumentation.class:138 #, fuzzy msgid "Terminal management" msgstr "Distribuição" #: CDocumentation.class:139 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:140 #, fuzzy msgid "Unit tests component" msgstr "Componente" #: CDocumentation.class:141 #, fuzzy msgid "Utility component" msgstr "Componente" #: CDocumentation.class:142 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:143 msgid "Video capture" msgstr "" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:145 msgid "XML tools" msgstr "" #: CDocumentation.class:146 msgid "HTML generator" msgstr "" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:151 msgid "Web application development" msgstr "" #: CDocumentation.class:152 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Formulário" #: CModule.class:29 msgid "Forms" msgstr "Formulários" #: CModule.class:29 msgid "Gambas forms" msgstr "Formulários Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "" #: CModule.class:30 msgid "WebPages" msgstr "" #: CModule.class:31 msgid "Gambas reports" msgstr "" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "" #: CModule.class:31 msgid "Reports" msgstr "" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Formulários Gambas" #: CModule.class:32 FMain.form:967 #, fuzzy msgid "WebForm" msgstr "Formulário" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Formulários" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Formulários Gambas" #: CModule.class:33 FMain.form:974 #, fuzzy msgid "TermForm" msgstr "Formulário" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Formulários" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "Cancelar" #: CProjectList.class:554 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Você realmente quer excluir este ficheiro" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "" #: CProjectList.class:561 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Os pacotes foram criados com sucesso." #: CProjectTree.class:97 msgid "Files" msgstr "" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "projecto" #: CProjectTree.class:360 msgid "Sources" msgstr "Fontes" #: CProjectTree.class:362 msgid "Connections" msgstr "Ligações" #: CProjectTree.class:363 msgid "Public" msgstr "" #: CProjectTree.class:364 msgid "Data" msgstr "Dados" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Hoje" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Ontem" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "" #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Criar executável" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Não foi possível excluir o ficheiro ou directoria" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Ontem" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:291 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "" #: CVersionControlGit.class:308 msgid "Last commit" msgstr "" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:317 #, fuzzy msgid "Current branch" msgstr "Linha atual" #: CVersionControlGit.class:318 msgid "Origin" msgstr "" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:336 #, fuzzy msgid "None in the current project." msgstr "Não foi possível criar o projecto!" #: CVersionControlGit.class:338 #, fuzzy msgid "One in the current project." msgstr "Não foi possível criar o projecto!" #: CVersionControlGit.class:340 #, fuzzy msgid "&1 in the current project." msgstr "Projectos recentes" #: CVersionControlGit.class:344 #, fuzzy msgid "Status" msgstr "Estatísticas" #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 #, fuzzy msgid "Remote repository URL" msgstr "Repositório" #: CVersionControlGit.class:398 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:436 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Data" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:319 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2231 msgid "first" msgstr "" #: Design.module:229 Project.module:2233 msgid "second" msgstr "" #: Design.module:231 Project.module:2235 msgid "third" msgstr "" #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "" #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:445 #, fuzzy msgid "The program has been terminated." msgstr "" "O programa retornou\n" "o valor: &1" #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "O programa retornou\n" "o valor: &1" #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "Os pacotes foram criados com sucesso." #: Design.module:1039 msgid "Output terminal" msgstr "" #: Design.module:1067 msgid "No terminal emulator found." msgstr "" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "" #: FAbout.class:241 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "Acerca do Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "Argumentos" #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "Reiniciar" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "Executar" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Fechar" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:35 msgid "Free" msgstr "Livre" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "Experimental" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Remover tudo" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Selecione um projecto" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "Recarregar" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Ampliar" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Reduzir" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Editar" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Texto" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Imagem" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Recortar" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Copiar" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Colar" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Desfazer" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Refazer" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Indentar" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Desfazer indentação" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Abrir" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Salvar" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Comentário" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Desfazer comentários" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Selecionar Tudo" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Ir para linha" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Ver" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Fim da linha" #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Código" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Anterior" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Nome" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tipo" #: FConnectionEditor.class:61 msgid "Length" msgstr "Tamanho" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valor por omissão" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Compilação" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Índice" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Campo" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "ilimitado" #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "Booleano" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "Real" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "Inteiro" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "Longo" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "Série" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "Texto" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Remover" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Renomear" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Importar" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Adicionar" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Descer" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Subir" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Novo" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Limpar" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportar" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Remover" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Selecionar tudo" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Opções" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Largura" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Altura" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "não disponível" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Não foi possível criar o projecto!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Por favor digite um nome." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Novo projecto" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Directoria" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Propriedades do projecto" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Projecto é traduzível" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repositório" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.class:104 msgid "Test has failed." msgstr "" #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "Depuração" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Consola" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Breakpoints" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "" #: FDebugButton.form:84 FDebugInfo.form:398 msgid "Search result" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "não disponível" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Valor" #: FDebugExpr.class:511 msgid "Key" msgstr "Chave" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Símbolo" #: FDebugExpr.form:33 msgid "Watch" msgstr "Observar" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Linha" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Função" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "ficheiro" #: FDebugInfo.class:49 msgid "Col." msgstr "" #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:120 msgid "native code" msgstr "código nativo" #: FDebugInfo.class:187 #, fuzzy msgid "Watch expressions" msgstr "Observar expressão" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Você deseja limpar a lista de expressões?" #: FDebugInfo.class:1091 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1230 msgid "Current object" msgstr "" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Depurar" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:130 msgid "Add expression" msgstr "" #: FDebugInfo.form:190 #, fuzzy msgid "Remove breakpoint" msgstr "Ponto de Parada" #: FDebugInfo.form:198 #, fuzzy msgid "Disable breakpoint" msgstr "Ponto de Parada" #: FDebugInfo.form:200 #, fuzzy msgid "Disable" msgstr "Tabela" #: FDebugInfo.form:206 #, fuzzy msgid "Enable breakpoint" msgstr "Ponto de Parada" #: FDebugInfo.form:208 #, fuzzy msgid "Enable" msgstr "Tabela" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:264 msgid "Tasks" msgstr "" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "" #: FDebugInfo.form:300 msgid "Run test" msgstr "" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "Enviar" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:346 FMain.form:525 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:422 msgid "Show search window" msgstr "" #: FDebugInfo.form:429 msgid "Search again" msgstr "" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "Frase de pesquisa não encontrada." #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "Descrição" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "" #: FEditor.form:201 msgid "Sort procedures" msgstr "" #: FEditor.form:230 msgid "Go to" msgstr "Ir para" #: FEditor.form:249 msgid "Find definition" msgstr "" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Executar até a linha actual" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Ponto de Parada" #: FEditor.form:320 msgid "Watch expression" msgstr "Observar expressão" #: FEditor.form:329 msgid "Open form" msgstr "" #: FEditor.form:336 FMain.form:1133 msgid "Run this class" msgstr "" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Imprimir" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "Editor" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 #, fuzzy msgid "Show modifications" msgstr "Salvar ficheiros modificados" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 #, fuzzy msgid "Previous modification" msgstr "Anterior" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "" #: FEditor.form:570 FTextEditor.form:546 msgid "Insert special character" msgstr "" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Utilizador" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Senha" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Recordar a senha" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Por favor, introduza seu endereço de correio eletrónico (e-mail)." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Não foi possível renomear '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Recordar a senha" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Ligação" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabela" #: FFileInfoVC.class:23 msgid "'&1' version control" msgstr "" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "" #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "Continuar" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Alterações" #: FFileInfoVC.form:41 FVersionControl.form:55 #, fuzzy msgid "History" msgstr "Directoria" #: FFileInfoVC.form:59 #, fuzzy msgid "Undo changes" msgstr "Alterações" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Módulos Gambas" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "Editar propriedade de lista" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:136 msgid "Bad form file" msgstr "ficheiro de formulário inválido" #: FForm.class:268 #, fuzzy msgid "Unknown control: &1" msgstr "Erro desconhecido" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "" #: FForm.class:1876 #, fuzzy msgid "Cannot paste data." msgstr "Não foi possível abrir o ficheiro." #: FForm.form:178 msgid "Copy at the same place" msgstr "" #: FForm.form:198 msgid "Delete container only" msgstr "" #: FForm.form:205 msgid "Embed into a container" msgstr "" #: FForm.form:211 msgid "Change into" msgstr "" #: FForm.form:219 msgid "Select" msgstr "Selecionar" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "Selecione um projecto" #: FForm.form:245 msgid "Arrangement" msgstr "Distribuição" #: FForm.form:249 msgid "Bring to foreground" msgstr "Trazer para frente" #: FForm.form:256 msgid "Send to background" msgstr "Enviar para trás" #: FForm.form:266 msgid "Horizontal" msgstr "Horizontal" #: FForm.form:273 msgid "Rows" msgstr "Linhas" #: FForm.form:279 msgid "Vertical" msgstr "Vertical" #: FForm.form:286 msgid "Columns" msgstr "Colunas" #: FForm.form:295 msgid "Center horizontally" msgstr "" #: FForm.form:301 msgid "Center vertically" msgstr "" #: FForm.form:307 msgid "Alignment" msgstr "Alinhamento" #: FForm.form:311 msgid "Align to left" msgstr "Alinhar à direita" #: FForm.form:317 msgid "Align to right" msgstr "Alinhar à esquerda" #: FForm.form:323 msgid "Align to top" msgstr "Alinhar em cima" #: FForm.form:329 msgid "Align to bottom" msgstr "Alinhar em baixo" #: FForm.form:338 msgid "Same width" msgstr "Mesma largura" #: FForm.form:344 msgid "Same height" msgstr "Mesma altura" #: FForm.form:353 msgid "Show tab" msgstr "" #: FForm.form:361 msgid "Move tab" msgstr "" #: FForm.form:366 msgid "First" msgstr "" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Anterior" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Próximo" #: FForm.form:387 msgid "Last" msgstr "" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Editor de menu" #: FForm.form:407 msgid "Event" msgstr "Evento" #: FForm.form:421 msgid "Run this form" msgstr "" #: FForm.form:601 msgid "Toggle grid" msgstr "" #: FForm.form:610 FImageEditor.form:515 msgid "Toggle information tooltip" msgstr "" #: FForm.form:729 msgid "Move tab first" msgstr "" #: FForm.form:736 msgid "Move tab left" msgstr "" #: FForm.form:743 msgid "Move tab right" msgstr "" #: FForm.form:750 msgid "Move tab last" msgstr "" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Negrito" #: FForm.form:786 msgid "Italic" msgstr "Itálico" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Sublinhado" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Fundo" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Hierarquia" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Subir" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Descer" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Navegador de ajuda" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Recuar" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Avançar" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "Tradução" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Selecção" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "Preferências" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "Selecção" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:428 msgid "Image editor" msgstr "" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "" #: FImageEditor.form:558 msgid "Move" msgstr "" #: FImageEditor.form:569 msgid "Draw" msgstr "Desenhar" #: FImageEditor.form:579 msgid "Erase" msgstr "" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Rectângulo" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Elipse" #: FImageEditor.form:629 msgid "Magic wand" msgstr "" #: FImageEditor.form:646 msgid "Edit selection" msgstr "" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "px" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1267 msgid "Arrow" msgstr "" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1270 msgid "Triangle" msgstr "" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "" #: FImageProperty.form:391 msgid "Colorize" msgstr "" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Linha" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Linha" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Tamanho" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:535 msgid "Brightness" msgstr "" #: FImageProperty.form:554 msgid "Contrast" msgstr "" #: FImageProperty.form:573 msgid "Gamma" msgstr "" #: FImageProperty.form:592 msgid "Lightness" msgstr "" #: FImageProperty.form:611 msgid "Hue" msgstr "" #: FImageProperty.form:630 msgid "Saturation" msgstr "" #: FImageProperty.form:649 msgid "Blur" msgstr "" #: FImageProperty.form:666 #, fuzzy msgid "Transparency" msgstr "Traduzir" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Antevisão" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 msgid "Right align" msgstr "" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:849 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Classes Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Módulos Gambas" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Módulos Gambas" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "ficheiros de imagem" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "Não foi possível abrir o ficheiro." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importar" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Todos os ficheiros" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Origem" #: FImportTable.form:78 msgid "Charset" msgstr "Codificação" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destino" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "" #: FImportTable.form:176 msgid "Key field" msgstr "" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Por favor introduza o nome do menu" #: FLayout.class:30 FOption.class:1694 msgid "Override" msgstr "" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Este projecto já existe." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Salvar" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Editar propriedade de lista" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "" #: FList.form:87 msgid "Invert" msgstr "" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Você realmente quer excluir este directoria ?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Você realmente quer excluir este ficheiro" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Não foi possível excluir o ficheiro ou directoria" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:759 msgid "Sort history" msgstr "" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "" #: FMain.class:775 msgid "&Clear history" msgstr "&Limpar histórico" #: FMain.class:959 msgid "New folder" msgstr "Nova pasta" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1872 msgid "Clean" msgstr "Limpo" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2329 msgid "Choose a profile" msgstr "" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "" #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "O ficheiro foi modificado.\n" "\n" "Todas as mudanças serão perdidas." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Abrir projecto" #: FMain.form:306 msgid "Open recent" msgstr "Abrir recente" #: FMain.form:314 msgid "Open example" msgstr "Abrir exemplo" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:332 msgid "Save project" msgstr "Salvar projecto" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:351 #, fuzzy msgid "Reload project" msgstr "Selecione um projecto" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Sair" #: FMain.form:395 #, fuzzy msgid "Save as" msgstr "Salvar" #: FMain.form:435 msgid "Compile" msgstr "Compilar" #: FMain.form:442 msgid "Compile All" msgstr "Compilar Tudo" #: FMain.form:452 msgid "Translate" msgstr "Traduzir" #: FMain.form:461 msgid "Make" msgstr "Marca" #: FMain.form:465 msgid "Executable" msgstr "" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "" #: FMain.form:479 msgid "Installation package" msgstr "" #: FMain.form:486 msgid "Patch" msgstr "" #: FMain.form:489 msgid "Create" msgstr "" #: FMain.form:518 msgid "Undo synchronization" msgstr "" #: FMain.form:537 msgid "Branch" msgstr "" #: FMain.form:542 msgid "Put under version control" msgstr "" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:563 msgid "Refresh" msgstr "Actualizar" #: FMain.form:592 msgid "Run with" msgstr "" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "Pausa" #: FMain.form:620 msgid "Stop" msgstr "Parar" #: FMain.form:627 msgid "Step" msgstr "Passo" #: FMain.form:634 msgid "Forward" msgstr "Próximo" #: FMain.form:641 msgid "Finish" msgstr "" #: FMain.form:650 msgid "Use terminal emulator" msgstr "" #: FMain.form:656 msgid "Redirect standard error output" msgstr "" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:668 msgid "Activate profiling" msgstr "" #: FMain.form:677 msgid "Invert language orientation" msgstr "" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 msgid "Show database requests" msgstr "" #: FMain.form:705 msgid "GUI component" msgstr "" #: FMain.form:709 msgid "Current desktop" msgstr "" #: FMain.form:746 msgid "Open profile" msgstr "" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "" #: FMain.form:757 msgid "Close all debug windows" msgstr "" #: FMain.form:795 msgid "Status bar" msgstr "" #: FMain.form:802 msgid "Hide menubar" msgstr "" #: FMain.form:826 msgid "Close all windows" msgstr "Fechar todas as janelas" #: FMain.form:833 msgid "Tools" msgstr "" #: FMain.form:837 msgid "Find" msgstr "Localizar" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Substituir" #: FMain.form:853 msgid "Browse project" msgstr "" #: FMain.form:860 msgid "Open a terminal" msgstr "" #: FMain.form:867 msgid "Send project by mail" msgstr "" #: FMain.form:873 msgid "Update all forms" msgstr "" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:891 msgid "Shortcuts" msgstr "Atalhos" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Preferências" #: FMain.form:911 msgid "Directory" msgstr "Directoria" #: FMain.form:916 msgid "Project link" msgstr "" #: FMain.form:925 msgid "Module" msgstr "Módulo" #: FMain.form:932 #, fuzzy msgid "Test module" msgstr "Módulos Gambas" #: FMain.form:991 msgid "HTML file" msgstr "" #: FMain.form:998 msgid "Style sheet" msgstr "Folha de estilo" #: FMain.form:1005 msgid "Javascript file" msgstr "" #: FMain.form:1013 msgid "Other" msgstr "Outro" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Recente" #: FMain.form:1047 msgid "Open in file manager" msgstr "" #: FMain.form:1052 #, fuzzy msgid "Open in project" msgstr "Abrir projecto" #: FMain.form:1056 msgid "Open with" msgstr "" #: FMain.form:1064 msgid "Compress all" msgstr "" #: FMain.form:1070 msgid "Uncompress all" msgstr "" #: FMain.form:1117 msgid "Copy file path" msgstr "" #: FMain.form:1126 msgid "Startup class" msgstr "Classe inicial" #: FMain.form:1141 msgid "Add to repository" msgstr "" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1149 msgid "Show exported classes" msgstr "" #: FMain.form:1154 msgid "Show added files" msgstr "" #: FMain.form:1159 #, fuzzy msgid "Show modified files" msgstr "Salvar ficheiros modificados" #: FMain.form:1164 msgid "Show files in conflict" msgstr "" #: FMain.form:1172 msgid "Show all" msgstr "" #: FMain.form:1184 #, fuzzy msgid "Do not translate" msgstr "Traduzir" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Dicas do dia" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Propriedades do projecto" #: FMain.form:1386 msgid "Refresh project" msgstr "" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Criar executável" #: FMain.form:1428 msgid "Make source archive" msgstr "" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "" #: FMain.form:1457 msgid "Properties sheet" msgstr "Página de propriedades" #: FMain.form:1466 msgid "Toolbox" msgstr "Caixa de ferramentas" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "" #: FMain.form:1508 msgid "Compile all" msgstr "Compilar tudo" #: FMain.form:1557 msgid "Finish current function" msgstr "" #: FMain.form:1573 #, fuzzy msgid "Show menubar" msgstr "Mostrar os números de linha" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1663 msgid "&File" msgstr "&ficheiro" #: FMain.form:1687 msgid "&Project" msgstr "&projecto" #: FMain.form:1699 msgid "&Debug" msgstr "&Depurar" #: FMain.form:1711 msgid "&View" msgstr "&Vêr" #: FMain.form:1723 msgid "&Tools" msgstr "&Ferramentas" #: FMain.form:1735 msgid "&?" msgstr "&?" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1866 #, fuzzy msgid "Show properties sheet" msgstr "Página de propriedades" #: FMain.form:1874 #, fuzzy msgid "Show project tree" msgstr "Novo projecto" #: FMain.form:1944 msgid "Show property help" msgstr "" #: FMain.form:1952 #, fuzzy msgid "Show controls" msgstr "Exibir Barra de Dicas" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "" #: FMakeExecutable.form:57 #, fuzzy msgid "Increment version" msgstr "Valor inválido da propriedade." #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Incluir informações de depuração no executável" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeInstall.class:137 msgid "Package" msgstr "Pacote" #: FMakeInstall.class:138 msgid "Min. version" msgstr "" #: FMakeInstall.class:139 msgid "Max. version" msgstr "" #: FMakeInstall.class:145 msgid "File or directory" msgstr "" #: FMakeInstall.class:279 #, fuzzy msgid "Creating packages..." msgstr "Criando pacotes para &1." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "Os pacotes foram criados com sucesso." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Por favor, introduza seu nome." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Por favor, introduza seu endereço de correio eletrónico (e-mail)." #: FMakeInstall.class:345 #, fuzzy msgid "Please enter the vendor name." msgstr "Por favor introduza o nome do menu" #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Por favor, introduza o primeiro item do CHANGELOG" #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:542 msgid "Initial release" msgstr "" #: FMakeInstall.class:802 msgid "Menus" msgstr "" #: FMakeInstall.class:870 msgid "Groups" msgstr "Grupos" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:151 msgid "Create package" msgstr "" #: FMakeInstall.form:154 msgid "Package information" msgstr "" #: FMakeInstall.form:160 msgid "Package name" msgstr "" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "" #: FMakeInstall.form:241 FOption.form:377 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Registo de alterações" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categorias" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:786 msgid "Extra files" msgstr "" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "Criar pacote de código-fonte" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "Pacotes Fontes (source packages)" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Por favor introduza o nome do menu" #: FMenu.class:332 msgid "Bad menu name !" msgstr "Nome de menu inválido !" #: FMenu.class:338 msgid "Bad group name !" msgstr "Nome de grupo inválido !" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Este menu está profundo demais !" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "modificado" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 msgid "Insert separator" msgstr "" #: FMenu.form:100 msgid "Insert menu before" msgstr "" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Inserir" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Remover" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Clique em Inserir para adicionar um novo menu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Base de Dados" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Base de Dados" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Máquina" #: FNewConnection.form:124 msgid "Path" msgstr "Localização" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Senha" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "Base de Dados" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Selecione um projecto" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Exemplos" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Esmeralda" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Colar" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "Rápido" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:87 msgid "Custom" msgstr "" #: FOption.class:89 msgid "Desktop" msgstr "Ecrã" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(Por omissão)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:242 msgid "Export a theme file" msgstr "" #: FOption.class:467 msgid "Select a theme file" msgstr "" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:829 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1190 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Você realmente quer excluir este ficheiro" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "" #: FOption.class:1275 #, fuzzy msgid "Network is not available." msgstr "não disponível" #: FOption.class:1280 msgid "Documentation is up to date." msgstr "" #: FOption.class:1285 msgid "A new documentation is available!" msgstr "" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "" #: FOption.class:1486 #, fuzzy msgid "Cannot download '&1'." msgstr "Não foi possível copiar ficheiro &1." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1528 msgid "Unable to install documentation." msgstr "" #: FOption.class:1636 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(Por omissão)" #: FOption.class:1637 #, fuzzy msgid "Compact" msgstr "Compilação" #: FOption.class:1652 #, fuzzy msgid "Current" msgstr "Linha atual" #: FOption.class:1694 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "Você realmente quer excluir esta tradução?" #: FOption.class:1796 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "Você realmente quer excluir este ficheiro" #: FOption.form:294 msgid "Dotted" msgstr "" #: FOption.form:305 #, fuzzy msgid "Identity" msgstr "Indentar" #: FOption.form:349 msgid "Package maintainer" msgstr "" #: FOption.form:394 #, fuzzy msgid "Default license" msgstr "Valor por omissão" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "Não" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Sim" #: FOption.form:438 #, fuzzy msgid "Projects" msgstr "projecto" #: FOption.form:455 msgid "Default tab size" msgstr "Tamanho padrão da tabulação" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "" #: FOption.form:480 msgid "Indent with tab by default" msgstr "" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:515 msgid "Fold procedures by default" msgstr "" #: FOption.form:532 msgid "Activate version control" msgstr "" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "" #: FOption.form:561 #, fuzzy msgid "Images" msgstr "Imagem" #: FOption.form:573 msgid "Compress PNG images with " msgstr "" #: FOption.form:607 #, fuzzy msgid "Automatic translation with " msgstr "Limpar esta tradução" #: FOption.form:636 #, fuzzy msgid "Translation engine" msgstr "Ficheiros de tradução" #: FOption.form:645 msgid "Help & applications" msgstr "" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Ajuda" #: FOption.form:662 msgid "Show documentation in popups" msgstr "" #: FOption.form:679 msgid "Always display optional messages" msgstr "" #: FOption.form:691 #, fuzzy msgid "Documentation" msgstr "Destino" #: FOption.form:702 msgid "Use offline documentation" msgstr "" #: FOption.form:732 msgid "Download documentation" msgstr "" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:771 msgid "Clear documentation cache" msgstr "" #: FOption.form:779 msgid "Applications" msgstr "Aplicações" #: FOption.form:790 msgid "Browser" msgstr "Navegador" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Terminal" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:850 msgid "Highlight current line" msgstr "Destaque linha atual" #: FOption.form:867 msgid "Highlight modified lines" msgstr "" #: FOption.form:884 msgid "Show line numbers" msgstr "Mostrar os números de linha" #: FOption.form:901 msgid "Procedure folding" msgstr "" #: FOption.form:918 msgid "Procedure separation" msgstr "" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:952 #, fuzzy msgid "Show Preview" msgstr "Antevisão" #: FOption.form:970 msgid "Keywords in upper case" msgstr "" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:996 msgid "Code formatting" msgstr "" #: FOption.form:1002 msgid "Automatic formatting" msgstr "" #: FOption.form:1013 msgid "Control structure completion" msgstr "" #: FOption.form:1030 msgid "Local variable declaration" msgstr "" #: FOption.form:1047 #, fuzzy msgid "Comments insertion" msgstr "Ligação" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "" #: FOption.form:1081 #, fuzzy msgid "Close strings" msgstr "Fechar todas as janelas" #: FOption.form:1093 msgid "Explicit formating" msgstr "" #: FOption.form:1104 msgid "Format on load & save" msgstr "" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "" #: FOption.form:1164 msgid "Code snippets" msgstr "" #: FOption.form:1180 msgid "Activate code snippets" msgstr "" #: FOption.form:1241 msgid "Interface" msgstr "Interface" #: FOption.form:1258 msgid "Activate animations" msgstr "" #: FOption.form:1275 msgid "Show shadows" msgstr "" #: FOption.form:1292 msgid "Show tooltips" msgstr "Exibir Barra de Dicas" #: FOption.form:1309 msgid "Use utility windows" msgstr "" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1343 msgid "Show file name in window title" msgstr "" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "" #: FOption.form:1444 msgid "Global size" msgstr "" #: FOption.form:1466 msgid "Title size" msgstr "" #: FOption.form:1488 #, fuzzy msgid "Debugger size" msgstr "Depuração" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Impressão" #: FOption.form:1580 #, fuzzy msgid "Fixed font" msgstr "Usar uma fonte de tamanho fixo (monoespacado)" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1673 #, fuzzy msgid "Themes" msgstr "Tema" #: FOption.form:1690 msgid "Icon theme" msgstr "" #: FOption.form:1706 #, fuzzy msgid "Highlighting theme" msgstr "A destacar" #: FOption.form:1720 msgid "Import theme" msgstr "" #: FOption.form:1726 msgid "Export theme" msgstr "" #: FOption.form:1745 msgid "Invert colors for dark themes" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Abrir recente" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Conteúdo da área de transferência" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Não foi possível renomear '&1'" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:160 msgid "Variable" msgstr "Variável" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Valor de ajuste incorrecto." #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:927 msgid "Modules" msgstr "Módulos" #: FProjectProperty.class:928 #, fuzzy msgid "Test modules" msgstr "Módulos Gambas" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "Função" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "" #: FProjectProperty.class:940 msgid "Average number of lines by function" msgstr "" #: FProjectProperty.class:943 #, fuzzy msgid "Executable size" msgstr "Tamanho padrão da tabulação" #: FProjectProperty.class:943 msgid "bytes" msgstr "" #: FProjectProperty.class:960 msgid "Information about component" msgstr "" #: FProjectProperty.class:966 msgid "Information about library" msgstr "" #: FProjectProperty.class:1345 msgid "Select a Gambas executable" msgstr "" #: FProjectProperty.class:1346 #, fuzzy msgid "Gambas executable" msgstr "Criar executável" #: FProjectProperty.form:273 msgid "General" msgstr "Geral" #: FProjectProperty.form:328 msgid "Component" msgstr "Componente" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:328 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:335 msgid "Vendor" msgstr "" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versão" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:380 msgid "Title" msgstr "Título" #: FProjectProperty.form:413 #, fuzzy msgid "Information" msgstr "Compilação" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:496 msgid "Include information from" msgstr "" #: FProjectProperty.form:508 msgid "Required features" msgstr "" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:585 msgid "Require" msgstr "" #: FProjectProperty.form:591 msgid "Exclude" msgstr "" #: FProjectProperty.form:603 msgid "Remove All" msgstr "Remover Tudo" #: FProjectProperty.form:610 msgid "Components" msgstr "Componentes" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:697 #, fuzzy msgid "Additional references" msgstr "Preferências" #: FProjectProperty.form:707 msgid "Environment" msgstr "" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Inserir" #: FProjectProperty.form:760 msgid "Edition" msgstr "Edição" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Tamanho da Tabulação" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Compilação" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "Componentes do Formulário são públicos" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:916 #, fuzzy msgid "Add branch to version number" msgstr "Valor inválido da propriedade." #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Estatísticas" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Actualizar" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Caracteres inválidos no nome do componente." #: FProperty.class:383 msgid "This name is already in use." msgstr "Este nome já está em uso." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Caracteres inválidos no grupo do componente." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valor inválido da propriedade." #: FProperty.class:631 msgid "The name of the control." msgstr "" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:661 msgid "If the control is public." msgstr "" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "Nenhum" #: FProperty.form:51 msgid "Lock property" msgstr "" #: FProperty.form:58 msgid "Sort properties" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Os pacotes foram criados com sucesso." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Valor inválido da propriedade." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Você realmente quer recarregar esta tradução?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Selecione um projecto" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "ficheiros de imagem" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "Descrição" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "Tamanho da Tabulação" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Salvar ficheiros modificados" #: FSave.form:42 msgid "Save All" msgstr "Gravar Tudo" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Frase substituida uma vez." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Frase substituida &1 vezes." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Implementa" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "Distinguir capitalização" #: FSearch.form:110 msgid "Words only" msgstr "" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "" #: FSearch.form:125 msgid "Ignore comments" msgstr "" #: FSearch.form:140 msgid "Search in" msgstr "" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Linha atual" #: FSearch.form:153 msgid "Current file" msgstr "" #: FSearch.form:160 msgid "Source files" msgstr "" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Tipos de dados" #: FSearch.form:197 msgid "Browse" msgstr "" #: FSearch.form:209 msgid "Replace all" msgstr "" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "A destacar" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:37 msgid "Image files" msgstr "" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Selecione uma imagem" #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Desconhecido" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Selecionar tudo" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Jogos" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "Edição" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "Vídeo" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "Interface" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "Expressão" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:372 #, fuzzy msgid "Cancel my vote" msgstr "Cancelar" #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:559 #, fuzzy msgid "Do you really want to download &1?" msgstr "Você realmente quer excluir este ficheiro" #: FSoftwareFarm.class:562 #, fuzzy msgid "Unable to download &1:" msgstr "Não foi possível renomear '&1'" #: FSoftwareFarm.class:564 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:579 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Você realmente quer excluir este ficheiro" #: FSoftwareFarm.class:582 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Não foi possível renomear '&1'" #: FSoftwareFarm.class:589 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Você realmente quer excluir este ficheiro" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:594 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:600 #, fuzzy msgid "Do you really want to install &1?" msgstr "Você realmente quer excluir este ficheiro" #: FSoftwareFarm.class:603 #, fuzzy msgid "Unable to install &1:" msgstr "Não foi possível renomear '&1'" #: FSoftwareFarm.class:605 #, fuzzy msgid "&1 has been successfully installed." msgstr "Os pacotes foram criados com sucesso." #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:661 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Você realmente quer excluir este ficheiro" #: FSoftwareFarm.class:665 #, fuzzy msgid "Unable to remove &1:" msgstr "Não foi possível renomear '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Formulários Gambas" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "Abrir recente" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "Exibir Barra de Dicas" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "Exibir Barra de Dicas" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "Descer" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Não foi possível renomear '&1'" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Este projecto já existe." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Criar executável" #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Você realmente quer recarregar esta tradução?" #: FTestSuite.form:60 msgid "New test suite" msgstr "" #: FTestSuite.form:67 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:74 msgid "Rename test suite" msgstr "" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "Remover" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "Selecionar tudo" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "Selecionar tudo" #: FTestSuite.form:145 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Editar propriedade de lista" #: FText.form:29 msgid "Use a fixed font" msgstr "Usar uma fonte de tamanho fixo (monoespacado)" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "" #: FTextEditor.class:1888 msgid "Compressed at &1" msgstr "" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "" #: FTextEditor.form:175 msgid "Sort descent" msgstr "" #: FTextEditor.form:221 msgid "Compress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Não foi possível lêr a dica do dia!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Exibir dicas ao iniciar" #: FToolBox.class:397 Project.module:606 #, fuzzy msgid "Current project" msgstr "Abrir projecto" #: FToolBox.form:58 msgid "Toolbox button size" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "O projecto está vazio. Não há nada a ser traduzido." #: FTranslate.class:74 msgid "Language" msgstr "Linguagem" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Traduzir" #: FTranslate.class:169 msgid "Translation files" msgstr "Ficheiros de tradução" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Não foi possível ler o ficheiro de tradução para o idioma '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Não foi possível gravar a tradução." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Você realmente quer excluir esta tradução?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Você realmente quer recarregar esta tradução?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Exportar uma tradução" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Não foi possivel importar o ficheiro de tradução." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Tudo parece estar bem." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "Símbolos da string traduzida não correspondem aos da não traduzida." #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1741 #, fuzzy msgid "Automatic translation has failed." msgstr "Não foi possivel importar o ficheiro de tradução." #: FTranslate.class:1753 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Você realmente quer excluir esta tradução?" #: FTranslate.form:77 msgid "Project translation" msgstr "" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Limpar esta tradução" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Exportar uma tradução" #: FTranslate.form:232 msgid "Save translation" msgstr "" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verifique a tradução" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Localizar próxima frase não traduzida" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Localizar próxima frase não traduzida" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Localizar próxima frase não traduzida" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Limpar esta tradução" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Estas string não deve ser traduzida." #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copiar frase não traduzida" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "Limpar esta tradução" #: FTranslate.form:480 msgid "Import a translation file" msgstr "" #: FVersionControl.class:16 #, fuzzy msgid "Do you want to push the repository?" msgstr "Você deseja limpar a lista de expressões?" #: FVersionControl.class:16 msgid "Push" msgstr "" #: FVersionControl.form:51 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:81 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Selecção" #: FWelcome.class:69 msgid "New project..." msgstr "Novo projecto..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Projectos recentes" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "projecto" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Árabe (Egipto)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Árabe (Tunisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Búlgaro (Bulgária)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalão (Catalúnia, Espanha)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Welsh (Reino Unido)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Checo (República Checa)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Dinamarquês (Dinamarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Alemão (Alemanha)" #: Language.module:35 msgid "German (Belgium)" msgstr "Alemão (Bélgica)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grego (Grécia)" #: Language.module:41 msgid "English (common)" msgstr "Inglês (comun)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inglês (Reino Unido)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inglês (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Inglês (Austrália)" #: Language.module:45 msgid "English (Canada)" msgstr "Inglês (Canadá)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Qualquer lado!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Inglês (comun)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Espanhol (Espanha)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Espanhol (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estónio (Estónia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Irão)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Francês (França)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francês (Bélgica)" #: Language.module:70 msgid "French (Canada)" msgstr "Francês (Canadá)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francês (Suíça)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galês (Espanha)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebraico (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindu (Índia)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Húngaro (Hungria)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croata (Croácia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonésio (Indonésia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandês (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiano (Itália)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonês (Japão)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Camboja)" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (Índia)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Holandês (Holanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Holandês (Bélgica)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norueguês (Noruega)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (Índia)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Poláco (Polónia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Português (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Português (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russo (Rússia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Eslovaco (Eslovênia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanês (Albânia)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Sérvio (Servia & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Sueco (Suécia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turco (Turquia)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamita (Vietname)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallon (Bélgica)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Chinês simplificado (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Chinês tradicional (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Desconhecido" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Ficheiros de tradução" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "Não foi possível gravar o ficheiro !" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "Não foi possível gravar o ficheiro !" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "O ficheiro já existe" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Data inválida" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Sem memória" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Esgotamento" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "Erro de leitura" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "só para leitura" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Estoiro da pilha" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Erro de sintaxe" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Erro desconhecido" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Erro desconhecido" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "Erro de escrita" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:1006 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Este projecto já existe." #: MMime.module:17 msgid "Plain text" msgstr "Texto Simples" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Enviar para trás" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Comentários" #: MTheme.module:6 msgid "Current line" msgstr "Linha atual" #: MTheme.module:6 msgid "Data types" msgstr "Tipos de dados" #: MTheme.module:6 msgid "Editing line" msgstr "Editando linha" #: MTheme.module:6 msgid "Errors" msgstr "Erros" #: MTheme.module:6 msgid "Highlighting" msgstr "A destacar" #: MTheme.module:6 msgid "Keywords" msgstr "Palavras-chave" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Texto normal" #: MTheme.module:6 msgid "Numbers" msgstr "Números" #: MTheme.module:6 msgid "Operators" msgstr "Operadores" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Strings" #: MTheme.module:6 msgid "Subroutines" msgstr "Sub-rotinas" #: MTheme.module:6 msgid "Symbols" msgstr "Símbolos" #: Package.module:83 msgid "'&1' is missing." msgstr "" #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Salvando ficheiro de alterações (CHANGELOG)." #: Package.module:735 msgid "Making &1 support package..." msgstr "" #: Package.module:790 msgid "Creating package for &1." msgstr "Criando pacotes para &1." #: Package.module:822 msgid "The package build has failed." msgstr "" #: Package.module:894 msgid "Making build directory." msgstr "" #: Package.module:953 msgid "Creating desktop file..." msgstr "" #: Package.module:961 msgid "Sources are being debianizated." msgstr "" #: Package.module:1168 msgid "Creating package..." msgstr "" #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "Inicializando a directoria ~/RPM." #: Package.module:1476 msgid "Creating source package." msgstr "Criando pacote de código-fonte." #: Package.module:1500 msgid "Creating .spec file." msgstr "Criando ficheiro .spec." #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "" #: Package.module:2442 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:231 msgid "Automation" msgstr "" #: Project.module:232 msgid "Basic" msgstr "Básico" #: Project.module:234 msgid "Drawing" msgstr "" #: Project.module:237 msgid "Miscellaneous" msgstr "Miscelânea" #: Project.module:238 msgid "Networking" msgstr "" #: Project.module:239 msgid "OpenGL" msgstr "OpenGL" #: Project.module:241 msgid "Sound" msgstr "Som" #: Project.module:243 msgid "Controls" msgstr "" #: Project.module:244 msgid "Multimedia" msgstr "" #: Project.module:245 msgid "Web" msgstr "" #: Project.module:422 msgid "File not found!" msgstr "" #: Project.module:534 msgid "This project does not exist." msgstr "" #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:565 msgid "This is not a Gambas project." msgstr "" #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:571 msgid "Convert" msgstr "" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:589 msgid "Do not open" msgstr "Não abrir" #: Project.module:589 msgid "Open after all" msgstr "Abrir depois de todos" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:595 msgid "It cannot be converted." msgstr "" #: Project.module:595 msgid "This project is read-only." msgstr "Este projecto só pode ser lido" #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:616 msgid "Unable to create temporary directory" msgstr "" #: Project.module:646 msgid "Converting project structure..." msgstr "" #: Project.module:679 msgid "Applying conversion..." msgstr "" #: Project.module:685 msgid "Unable to apply conversion" msgstr "" #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:824 #, fuzzy msgid "Cannot open project file :" msgstr "Não foi possível abrir o ficheiro de projecto:\n" #: Project.module:876 #, fuzzy msgid "Cannot reload file." msgstr "Não foi possível abrir o ficheiro." #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "" #: Project.module:2079 msgid "Cannot open file." msgstr "Não foi possível abrir o ficheiro." #: Project.module:2237 msgid "&1th" msgstr "" #: Project.module:2290 msgid "in form definition" msgstr "" #: Project.module:2297 msgid "in &1." msgstr "" #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2462 msgid "Compiling project" msgstr "Compilando o projecto" #: Project.module:2720 msgid "File already exists." msgstr "ficheiro já existe." #: Project.module:2753 msgid "Directory already exists." msgstr "Directoria já existe." #: Project.module:2765 msgid "Cannot link template file." msgstr "" #: Project.module:2771 msgid "Cannot copy template file." msgstr "Não foi possível copiar ficheiro template." #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2999 msgid "Cannot install library in &1." msgstr "" #: Project.module:3041 msgid "Making executable..." msgstr "Criando executável..." #: Project.module:3099 msgid "Cannot make executable." msgstr "" #: Project.module:3555 msgid "Some components are missing: &1" msgstr "Faltam alguns componentes: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "Não foi possível gravar o ficheiro de projecto." #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "Você deve definir uma classe ou formulário inicial!" #: Project.module:4120 msgid "Please type a name." msgstr "Por favor digite um nome." #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "Este nome já está em uso. Escolha um outro." #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4211 msgid "Destination already exists." msgstr "" #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "Não foi possível renomear '&1'" #: Project.module:4480 msgid "Please type a project name." msgstr "Por favor digite um nome de projecto." #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4492 msgid "SPACE" msgstr "" #: Project.module:4492 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4499 msgid "This project already exists." msgstr "Este projecto já existe." #: Project.module:4502 msgid "The project directory already exists." msgstr "" #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4552 msgid "Unable to create source archive." msgstr "" #: Project.module:4579 msgid "Create source package" msgstr "Criar pacote de código-fonte" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "Não foi possível copiar ficheiro &1." #: Project.module:4914 msgid "Cannot create link &1." msgstr "" #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:4993 msgid "Cannot move file &1." msgstr "Não foi possível mover o ficheiro &1." #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5686 msgid "Project cleanup..." msgstr "" #: Project.module:5692 msgid "Project files conversion..." msgstr "" #: Project.module:5722 msgid "Unable to convert &1" msgstr "" #: Project.module:6002 msgid "Unable to update forms." msgstr "" #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6186 msgid "Unable to read component description file." msgstr "" #: Project.module:6247 msgid "Cannot write component description file." msgstr "" #: Project.module:6308 #, fuzzy msgid "Project templates" msgstr "Propriedades do projecto" #: Project.module:6354 #, fuzzy msgid "Unable to run terminal." msgstr "Não foi possível renomear '&1'" #: Save.module:57 msgid "Cannot save file !" msgstr "Não foi possível gravar o ficheiro !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:139 msgid "Command timeout." msgstr "" #: VersionControl.module:139 msgid "Please check your network connection." msgstr "" #: VersionControl.module:521 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Você realmente quer excluir este directoria ?" #: VersionControl.module:535 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:642 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Este projecto já existe." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Open project..." #~ msgstr "Abrir projecto..." #~ msgid "Edit text property" #~ msgstr "Editar propriedade de texto" #~ msgid "Show only components used in project" #~ msgstr "Exibir somente componentes usados no projecto" #~ msgid "Author(s)" #~ msgstr "Autor(es)" #~ msgid "Blend" #~ msgstr "Misturar" #~ msgid "Messages" #~ msgstr "Mensagens" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Clique no formulário para visualizar a hierarquia dos componentes..." #~ msgid "Existing" #~ msgstr "Existente" #~ msgid "

Authors

\n" #~ msgstr "

Autores

\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "Gambas Almost Means Basic!" #~ msgid "About Gambas..." #~ msgstr "Acerca do Gambas..." #~ msgid "Thanks to" #~ msgstr "Agradecimentos a" #~ msgid "Arguments" #~ msgstr "Argumentos" #~ msgid "Small" #~ msgstr "Pequeno" #, fuzzy #~ msgid "No argument" #~ msgstr "Argumentos" gambas-3.16.3/app/src/gambas3/.lang/pt_BR.po000066400000000000000000006005711411575327000203050ustar00rootroot00000000000000# #-#-#-#-# CClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CConfig.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.14.90\n" "POT-Creation-Date: 2020-06-12 00:06 UTC\n" "PO-Revision-Date: 2020-06-11 23:43 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Ambiente de Desenvolvimento Integrado para Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Definir marcador" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Limpar todos os marcadores" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Marcador anterior" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Próximo marcador" #: CClassInfo.class:608 msgid "Static properties" msgstr "Propriedades estáticas" #: CClassInfo.class:609 msgid "Static variables" msgstr "Variáveis estáticas" #: CClassInfo.class:610 msgid "Static methods" msgstr "Métodos estáticos" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "Constantes" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Propriedades" #: CClassInfo.class:629 msgid "Variables" msgstr "Variáveis" #: CClassInfo.class:630 msgid "Methods" msgstr "Métodos" #: CClassInfo.class:631 msgid "Events" msgstr "Eventos" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "Esta classe reimplementa &1" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "Este classe herda &1" #: CClassInfo.class:661 msgid "in &1" msgstr "em &1" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Esta classe pode ser usada como um objeto através da criação de uma instância oculta sob demanda." #: CClassInfo.class:674 msgid "This class is &1." msgstr "Esta classe é &1." #: CClassInfo.class:674 msgid "creatable" msgstr "criável" #: CClassInfo.class:679 msgid "This class is static." msgstr "Esta classe é estática." #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "Esta classe não é instanciável." #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "Esta classe pode ser usada como um &1." #: CClassInfo.class:687 msgid "function" msgstr "função" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "Esta classe funciona como um array &1 / &2." #: CClassInfo.class:692 msgid "read" msgstr "ler" #: CClassInfo.class:692 msgid "write" msgstr "escrever" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "Esta classe funciona como um array &1." #: CClassInfo.class:694 msgid "write-only" msgstr "apenas-escrita" #: CClassInfo.class:697 Project.module:1687 msgid "read-only" msgstr "somente leitura" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "Esta classe é &1 com a palavra chave FOR EACH." #: CClassInfo.class:702 msgid "enumerable" msgstr "enumerável" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "Esta classe reimplementa" #: CClassInfo.class:855 msgid "This class inherits" msgstr "Esta classe herda" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "Esta classe é virtual." #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Esta classe pode ser usada como um objeto através da criação de uma instância escondida sob demanda." #: CClassInfo.class:897 msgid "static function" msgstr "função estática" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "Esta classe funciona como um array estático &1 / &2." #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "Esta classe funciona como um array estático &1." #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "Esta classe é &1 com &2 palavras chaves." #: CClassInfo.class:918 msgid "statically enumerable" msgstr "enumerável estaticamente" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "Carregando informações no componente &1..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Classes" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Classe" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Descrição" #: CComponent.class:1669 msgid "This component is not stable yet." msgstr "Este componente ainda não é estável." #: CComponent.class:1671 msgid "This component is deprecated." msgstr "Este componente é obsoleto." #: CComponent.class:1680 CVersionControlGit.class:479 FProjectVersion.class:287 msgid "Author" msgstr "Autor" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "Autores" #: CComponent.class:1692 msgid "Implements" msgstr "Implementa" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Requer" #: CComponent.class:1719 msgid "Excludes" msgstr "Exclui" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Classes internas nativa" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "Parser de argumentos de programa" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Biblioteca gráfica Cairo" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Desenho de gráficos" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "Gerenciamento Polygon baseado na biblioteca Clipper" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "Gerenciamento de números complexos" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Compactação & descompactação" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "Driver de compressão bzlib2" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "Diver de compressão zlib" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "Criptografia MD5/DES/SHA" #: CDocumentation.class:58 msgid "More data containers" msgstr "Mais contêineres de dado" #: CDocumentation.class:59 msgid "Database access" msgstr "Acesso a banco de dados" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Controles ligados a dados" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "Driver do banco de dados MySQL" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "Driver de banco de dados ODBC" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "Driver de banco de dados PostgreSQL" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "Driver de banco de dados SQLite 2" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "Driver de banco de dados SQLite 3" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Assistente de depuração de aplicação" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "Componente de gerenciamento de área de trabalho" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "Suporte a biblioteca X-Window" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "Suporte ao chaveiro Gnome para componentes de gerenciamento de área de trabalho" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "Interface D-Bus" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Validador de expressões" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Rotinas de destaque de sintaxe" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Mais controles para componentes gráficos" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Caixas de dialogos padrões melhoradas" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "Editor de texto com destaque de sintaxe" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Interface Multipla de Documentos" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "Pré-visualização genérica e formulário de impressão" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "Tema de ícone padrão" #: CDocumentation.class:80 msgid "Terminal emulator" msgstr "Emulador de terminal" # gb-ignore #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" # gb-ignore #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "" # gb-ignore #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL com GTK+" # gb-ignore #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "Componente de troca QT/GTK+" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "OpenGL com componente de troca QT/GTK+" #: CDocumentation.class:88 msgid "QT4/QT5 switcher component" msgstr "Componente de troca QT4/QT5" #: CDocumentation.class:89 msgid "QT4/QT5 OpenGL switcher component" msgstr "Componente de troca QT4/QT5 OpenGL" #: CDocumentation.class:90 msgid "QT4/QT5 WebKit switcher component" msgstr "Componente de troca QT4/QT5 WebKit" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "Componente de gerencimanto de ícone da bandeja do sistema" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "Servidor HTTP embutido" #: CDocumentation.class:93 msgid "Image management" msgstr "Gerênciamento de imagem" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "Componente de filtragem de imagens" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "Rotinas de imagem da biblioteca lmlib2" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "Carregamento e salvamento de imagem" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "Monitoramento de eventos do sistema de arquivos" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "Ferramentas XML baseadas na libxml" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "Sistema de log flexível" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "Visualizador de mapa online" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "Sintaxe de marcação Markdown Gambas" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "Componente multimídia GStreamer" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "Controles multimídia" #: CDocumentation.class:104 msgid "Memcached client" msgstr "Cliente Memcached" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "Formato MIME baseado na biblioteca GMime" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "Rotinas específicas do MySQL" #: CDocumentation.class:107 msgid "NCurses library" msgstr "Biblioteca NCurses" #: CDocumentation.class:108 msgid "Network programming" msgstr "Programação de rede" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "Gerênciamento de protocolos de rede de alto-nível" #: CDocumentation.class:110 msgid "POP3 client" msgstr "Cliente POP3" #: CDocumentation.class:111 msgid "SMTP client" msgstr "Cliente SMTP" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "Biblioteca de áudio OpenAL 3D" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "Programação 3D com OpenGL" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "Componente utilitário OpenGL" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "Gerenciamento de shaders OpenGL" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Motor de jogos OpenGL simples baseado no formado MD2" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "Rotinas de biblioteca OpenSSL" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "Analizador de opções de comando GNU" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "Expressões Regulares compatíveis com Perl" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "Renderizador PDF baseado na biblioteca Poppler" # gb-ignore #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "" # gb-ignore #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "" # gb-ignore #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL com QT4" # gb-ignore #: CDocumentation.class:125 msgid "QT5 toolkit" msgstr "" # gb-ignore #: CDocumentation.class:126 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL com QT5" # gb-ignore #: CDocumentation.class:128 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:129 msgid "Report designer" msgstr "Designer de Relatórios" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "Biblioteca de Scanner baseada na SANE" #: CDocumentation.class:132 msgid "SDL library" msgstr "Biblioteca SDL" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "Gerênciamento de som SDL & CD-ROM" #: CDocumentation.class:134 msgid "SDL2 component" msgstr "Componente SDL2" #: CDocumentation.class:135 msgid "SDL2 audio component" msgstr "Componente de audio SDL2" #: CDocumentation.class:136 msgid "Application settings management" msgstr "Gerênciamento de configurações de aplicação" #: CDocumentation.class:137 msgid "Signals management" msgstr "Gerenciamento de sinais" #: CDocumentation.class:138 msgid "Terminal management" msgstr "Gerenciamento de terminal" #: CDocumentation.class:139 msgid "Graphical terminal applications development" msgstr "Desenvolvimento de aplicações terminal gráficos" #: CDocumentation.class:140 msgid "Unit tests component" msgstr "Componentes de teste de unit" #: CDocumentation.class:141 msgid "Utility component" msgstr "Componente utilitário" #: CDocumentation.class:142 msgid "Web applications utility component" msgstr "Componente utilitário de aplicações Web" #: CDocumentation.class:143 msgid "Video capture" msgstr "Captura de vídeo" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Compatibilidade com Visual Basic" #: CDocumentation.class:145 msgid "XML tools" msgstr "Ferramentas XML" #: CDocumentation.class:146 msgid "HTML generator" msgstr "Gerador HTML" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "Protocolo XML-RPC" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "Ferramentas XSLT baseadas na libxslt e libxml" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "Ferramentas de aplicações Web" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "Analizador e gerador de Web feed" #: CDocumentation.class:151 msgid "Web application development" msgstr "Desenvolvimento de aplicação Web" #: CDocumentation.class:152 msgid "Web application development using processes as session" msgstr "Desenvolvimento de aplicação Web usando processos como sessão" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "Gerênciamento de formulários gráficos" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "Gerênciamento de eventos" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "Exibição OpenGL" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "Números complexos" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "Gerenciamento XML" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "Inserir cor" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "Inserir data de hoje" # gb-ignore #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "Local" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "ATENÇÃO! Biblioteca não encontrada." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Provê" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Formulário" #: CModule.class:29 msgid "Forms" msgstr "Formulários" #: CModule.class:29 msgid "Gambas forms" msgstr "Formulários Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Páginas web Gambas" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "Página Web" #: CModule.class:30 msgid "WebPages" msgstr "Páginas Web" #: CModule.class:31 msgid "Gambas reports" msgstr "Relatórios Gambas" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "Relatório" #: CModule.class:31 msgid "Reports" msgstr "Relatórios" #: CModule.class:32 msgid "Gambas web forms" msgstr "Formulários web Gambas" #: CModule.class:32 FMain.form:967 msgid "WebForm" msgstr "Formulário Web" #: CModule.class:32 msgid "WebForms" msgstr "Formulários Web" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Formulários terminal Gambas" # gb-ignore #: CModule.class:33 FMain.form:974 msgid "TermForm" msgstr "" # gb-ignore #: CModule.class:33 msgid "TermForms" msgstr "" #: CProfile.class:114 msgid "Evaluator" msgstr "Avaliador" #: CProfile.class:116 msgid "Event loop" msgstr "Loop de evento" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Exemplos são armazenados no servidor Gambas. Clique &1 para acessar o servidor e baixar eles..." #: CProjectList.class:111 msgid "here" msgstr "aqui" #: CProjectList.class:235 msgid "IDE extensions" msgstr "Extensões para IDE" #: CProjectList.class:554 CVersionControlGit.class:416 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:573 #: VersionControl.module:398 msgid "Cancel" msgstr "Cancelar" #: CProjectList.class:554 msgid "Do you really want to uninstall this software?" msgstr "Você realmente deseja desinstalar este software?" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "Desinstalar" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "Não é possível desinstalar o software:" #: CProjectList.class:561 msgid "The software has been successfully uninstalled." msgstr "O software foi desinstalado com sucesso." #: CProjectTree.class:97 msgid "Files" msgstr "Arquivos" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "Projeto" #: CProjectTree.class:360 msgid "Sources" msgstr "Fontes" #: CProjectTree.class:362 msgid "Connections" msgstr "Conexões" #: CProjectTree.class:363 msgid "Public" msgstr "Público" #: CProjectTree.class:364 msgid "Data" msgstr "Dados" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Hoje" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Ontem" #: CRecentProject.class:72 msgid "Two days ago" msgstr "A dois dias" #: CRecentProject.class:74 msgid "This week" msgstr "Esta semana" #: CRecentProject.class:76 msgid "This month" msgstr "Este mês" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Download cancelado" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "A checksum do pacote baixado é inválido." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Não é possível descompactar o arquivo de origem." #: CSoftware.class:361 msgid "Abort" msgstr "Abortar" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "Ignorar" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Os seguintes componentes são requeridos:" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "Não é possível compilar o projeto." #: CSoftware.class:395 msgid "Unable to make executable." msgstr "Não é possível construir executável." #: CSoftware.class:464 msgid "Unable to install source directory" msgstr "Não é possível instalar o diretório source" #: CSoftware.class:663 msgid "yesterday" msgstr "ontem" #: CSoftware.class:665 msgid "&1 days ago" msgstr "&1 dias atrás" #: CSoftware.class:671 msgid "last week" msgstr "Última semana" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "&1 semanas atrás" #: CSoftware.class:679 msgid "last month" msgstr "último mês" #: CSoftware.class:681 msgid "&1 months ago" msgstr "&1 meses atrás" #: CSoftware.class:687 msgid "last year" msgstr "Último ano" #: CSoftware.class:689 msgid "on &1" msgstr "em &1" #: CVersionControlGit.class:309 msgid "Unable to push the project." msgstr "Não é possível dar push no projeto." #: CVersionControlGit.class:323 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "Caminho raiz local" #: CVersionControlGit.class:326 msgid "Last commit" msgstr "Último commit" #: CVersionControlGit.class:327 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "Autor do último commit" #: CVersionControlGit.class:328 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "Data do último commit" #: CVersionControlGit.class:335 msgid "Current branch" msgstr "Ramificação corrente" #: CVersionControlGit.class:336 msgid "Origin" msgstr "Origem" #: CVersionControlGit.class:343 msgid "The current branch is up to date." msgstr "A ramificação corrente está atualizada." #: CVersionControlGit.class:345 msgid "One file to commit in the current branch." msgstr "Um arquivo para commit na ramificação corrente." #: CVersionControlGit.class:347 msgid "&1 files to commit in the current branch." msgstr "&1 arquivos para commit na Ramificação corrente." #: CVersionControlGit.class:354 msgid "None in the current project." msgstr "Nenhum no projeto corrente." #: CVersionControlGit.class:356 msgid "One in the current project." msgstr "Um no projeto corrente." #: CVersionControlGit.class:358 msgid "&1 in the current project." msgstr "&1 no projeto corrente." # gb-ignore #: CVersionControlGit.class:362 msgid "Status" msgstr "" #: CVersionControlGit.class:365 CVersionControlSubversion.class:318 msgid "Remote repository URL" msgstr "URL do repositório remoto" #: CVersionControlGit.class:416 msgid "A new Git repository will be created for this project." msgstr "Um novo repositório Git será criado para este projeto." #: CVersionControlGit.class:416 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:454 msgid "Solve conflict." msgstr "Resolver conflito." #: CVersionControlGit.class:479 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Data" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "Revisão" #: CVersionControlSubversion.class:319 msgid "Remote revision" msgstr "Revisão remota" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "Último autor de commit remoto" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "Última data de commit remoto" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "A fonte Gambas é publicada sob licença SIL Open Font license." #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "Este programa é publicado sob a licença GNU General Public License." #: Design.module:227 Project.module:2247 msgid "first" msgstr "primeiro" #: Design.module:229 Project.module:2249 msgid "second" msgstr "segundo" #: Design.module:231 Project.module:2251 msgid "third" msgstr "terceiro" #: Design.module:325 Project.module:2310 msgid "in &1:&2." msgstr "em &1:&2." #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "O programa foi interrompido por CTRL+C." #: Design.module:445 msgid "The program has been terminated." msgstr "O programa foi finalizado." #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "O programa retornou\n" "o valor: &1" #: Design.module:735 msgid "The project has no test module." msgstr "O projeto não possui módulo de teste." #: Design.module:1039 msgid "Output terminal" msgstr "Saída para terminal" #: Design.module:1067 msgid "No terminal emulator found." msgstr "Emulador de terminal não encontrado." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licença" #: FAbout.class:241 msgid "Financial support" msgstr "Suporte financeiro" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "Sobre Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "Este programa é SOFTWARE LIVRE; Você pode redistribuí-lo e/ou modificá-lo os termos da GNU General Public License, conforme publicado pela Free Software Foundation; versão 2, ou (a sua opção) qualquer versão posterior.

Este programa é distribuído na esperança de que será útil, mas sem qualquer garantia; mesmo sem a garantia implícita de comercialização ou adequação para um fim específico. Consulte a licença pública geral GNU para obter mais detalhes.\n" #: FArguments.form:14 FMain.form:1756 msgid "Run with arguments" msgstr "Executar com argumentos" #: FArguments.form:35 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "Redefinir" #: FArguments.form:45 FMain.form:585 msgid "Run" msgstr "Executar" #: FArguments.form:51 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Fechar" #: FColorChooser.form:15 msgid "Select a color" msgstr "Selecione uma cor" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistema" #: FColorChooser.form:35 msgid "Free" msgstr "Livre" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "Não finalizado mas estável" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "Experimental" #: FComponentChooser.class:355 msgid "Stable" msgstr "Estável" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "Obsoleto" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "Este componente é requerido pelo pela seguinte biblioteca:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "Este componente é requerido pelas seguintes bibliotecas:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "Este componente é requerido por:

&1" #: FComponentChooser.class:589 msgid "Keep" msgstr "Manter" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Remover todos" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Esses componentes são incompatíveis:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "O componete &1 precisa de um dos seguintes componentes:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "O componente &1 precisa do componente &2." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Selecione um componente" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Exibir componentes obsoletos" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:879 msgid "Reload" msgstr "Recarregar" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Ampliar" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Reduzir" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "Zoom No" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Editar" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "Este arquivo está em conflito. Você deve resolver o conflito para usar o arquivo novamente." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Não é possível carregar o arquivo:" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Texto" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Imagem" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "O arquivo foi modificado.\n" "Você realmente deseja fechar esta caixa de diálogo?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Algums conflitos ainda não foram resolvidos." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Não é possível resolver o conflito." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "O arquivo foi modificado.\n" "Você realmente quer abrir outro arquivo?" #: FConflict.class:267 msgid "Conflict files" msgstr "Arquivos em conflito" #: FConflict.form:31 msgid "Version conflict" msgstr "Versão do conflito" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Recortar" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Copiar" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Colar" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Desfazer" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Refazer" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Indentar" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Não endentar" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Abrir" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Salvar" #: FConflict.form:160 msgid "Solve" msgstr "Resolver" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(Declarações)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "Ainda há conflitos neste arquivo." #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "Avançado" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "Maiúsculo" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "Minúscula" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Comentário" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Descomentar" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "Colar especial" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Selecionar Tudo" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Ir para linha" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "Marcadores" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "Localizar próximo" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "Localizar anterior" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Exibir" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 msgid "Automatic word wrap" msgstr "Quebra automática de linha" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "Indentar com tab" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "Não dividir" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "Divisão horizontal" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "Divisão vertical" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Fim da linha" # gb-ignore #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "" # gb-ignore #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "" # gb-ignore #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "Abrir código" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "Colar como string" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "Colar como uma string multi-linha" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "Colar como comentário" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "Editor de texto" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Código" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Conflito resolvido" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Conflito anterior" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Próximo conflito" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Manter minhas alterações" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Tomar mudanças" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Manter todas minhas alterações" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Tomar todas as mudanças" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Nome" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tipo" #: FConnectionEditor.class:61 msgid "Length" msgstr "Duração" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Valor padrão" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Collation" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Índice" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Único" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Campo" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "Requisições SQL" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Não é possível conectar ao banco de dados." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Não salvar" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "A tabela '&1' foi modificada. Você deseja salvar?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Sem registro" #: FConnectionEditor.class:500 msgid "One record" msgstr "Um registro" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 registros" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Não é possível carregar a tabela '&1'." #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "Não é possível executar a consulta." # gb-ignore #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "ilimitada" # gb-ignore #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "Booleano" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "Real" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "Inteiros" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "Longo" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "Serial" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "String" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "Este nome já está sendo usado." #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "Por favor informe um número." #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "O comprimento deve ser maior que 1 e menor que 255." #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "Tipo incompatível." #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "Este nome já existe." #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "Este campo é usado em um índice." #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "A tabela '&1' não tem chave primária." #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "Não é possível gravar a tabela '&1'." #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "Você realmente deseja excluir a tabela '&1'?" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "Não é possível excluir a tabela '&1'." #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "Você realmente deseja remover as linhas selecionadas?" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "Você realmente deseja remover esta consulta?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Editor de conexão" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Exibir tabelas de sistema" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Nova tabela" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Excluir tabela" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Remover" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Renomear tabela" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Renomear" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Copiar tabela" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Colar tabela" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importar arquivo texto" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Importar" #: FConnectionEditor.form:213 msgid "Fields" msgstr "Campos" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Adicionar" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Para baixo" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Para cima" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Copiar lista de campos" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Índices" #: FConnectionEditor.form:293 msgid "New index" msgstr "Novo índice" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Executar a consulta" #: FConnectionEditor.form:359 msgid "New query" msgstr "Nova consulta" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Novo" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "Remover a consulta" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Limpar" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "Editar" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exportar para arquivo CSV" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportar" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Excluir" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Selecionar tudo" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Descelecionar tudo" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Conversão de projetos Gambas 3" #: FCrash.class:73 FTranslate.class:244 Project.module:4557 msgid "The '&1' command has failed." msgstr "O comando '&1' falhou." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Não é possível enviar o bug report." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "O programa parou inesperadamente!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Por favor descreva como reproduzir o problema aqui." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Falha no interpretador do Gambas" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "Enviar um bug report por e-mail" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "Não participar do projeto para o e-mail" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Sem parente)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Não pode adicionar arquivo." #: FCreateFile.form:37 msgid "New file" msgstr "Novo arquivo" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Opções" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Largura" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Altura" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Gerênciamento de caixa de diálogo" #: FCreateFile.form:155 msgid "Parent class" msgstr "Classe pai" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportado" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Instância automática" #: FCreateFile.form:180 msgid "Not creatable" msgstr "Não criável" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Extensão automática" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Falha ao obter o projeto." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Não é possível criar o projeto!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "Por favor escolha um modelo" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Por favor informe a localização do repositório." #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Novo projeto" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "Tipo do projeto" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Diretório pai" #: FCreateProject.form:90 msgid "Project details" msgstr "Detalhes do projeto" #: FCreateProject.form:99 msgid "Project name" msgstr "Nome do projeto" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "O nome do projeto é o nome do diretório do projeto." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "O diretório final do projeto é:" #: FCreateProject.form:134 msgid "Project title" msgstr "Título do projeto" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "O título do projeto é o verdadeiro nome da aplicação." #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Projeto é traduzível" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "Abrir em outra janela" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Repositório" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "O repositório do projeto é enviado diretamente ao comando 'svn checkout'." #: FDebugButton.class:104 msgid "Test has failed." msgstr "Teste falhou." #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "Depuração" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Console" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Ponto de parada" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "Avisos" #: FDebugButton.form:57 msgid "Notes" msgstr "Notas" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "Testes de unit" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "Controle de versão" #: FDebugButton.form:84 FDebugInfo.form:398 msgid "Search result" msgstr "Resultado da busca" #: FDebugExpr.class:4 msgid "not available" msgstr "Não disponível" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Valor" #: FDebugExpr.class:511 msgid "Key" msgstr "Chave" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Símbolo" #: FDebugExpr.form:33 msgid "Watch" msgstr "Observar" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Imprimir no console" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Exibir todos os símbolos" #: FDebugExpr.form:88 msgid "No element" msgstr "Sem elemento" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Linha" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Função" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "Arquivo" # gb-ignore #: FDebugInfo.class:49 msgid "Col." msgstr "" #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "Mensagem" #: FDebugInfo.class:120 msgid "native code" msgstr "código nativo" #: FDebugInfo.class:187 msgid "Watch expressions" msgstr "Observar expressões" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Você deseja limpar a lista de expressões?" #: FDebugInfo.class:1091 msgid "File not loaded" msgstr "Arquivo não carregado" #: FDebugInfo.class:1230 msgid "Current object" msgstr "Objeto atual" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "Variáveis locais" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Depurar" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "Remover a expressão atual" #: FDebugInfo.form:130 msgid "Add expression" msgstr "Adicionar expressão" #: FDebugInfo.form:190 msgid "Remove breakpoint" msgstr "Remover ponto de interrupção" #: FDebugInfo.form:198 msgid "Disable breakpoint" msgstr "Desativar ponto de interrupção" #: FDebugInfo.form:200 msgid "Disable" msgstr "Desativar" #: FDebugInfo.form:206 msgid "Enable breakpoint" msgstr "Habilitar ponto de interrupção" #: FDebugInfo.form:208 msgid "Enable" msgstr "Habilitar" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "Remover todos os pontos de paradas" #: FDebugInfo.form:264 msgid "Tasks" msgstr "Tarefas" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "Limpar console" #: FDebugInfo.form:300 msgid "Run test" msgstr "Executar teste" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "Enviar" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Sincronizar" #: FDebugInfo.form:346 FMain.form:525 msgid "Revert all changes" msgstr "Reverter todas as mudanças" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "Adicionar tudo ao repositório" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "Cancelar a busca atual" #: FDebugInfo.form:422 msgid "Show search window" msgstr "Exibir a janela de procura" #: FDebugInfo.form:429 msgid "Search again" msgstr "Localizar novamente" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "String não encontrada." #: FEditor.class:3361 msgid "Declarations" msgstr "Declarações" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "Formatar código" #: FEditor.form:201 msgid "Sort procedures" msgstr "Ordenar procedimentos" #: FEditor.form:230 msgid "Go to" msgstr "Ir para" #: FEditor.form:249 msgid "Find definition" msgstr "Localizar definição" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Executar até a linha atual" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Ponto de Parada" #: FEditor.form:320 msgid "Watch expression" msgstr "Observar expressão" #: FEditor.form:329 msgid "Open form" msgstr "Abrir formulário" #: FEditor.form:336 FMain.form:1133 msgid "Run this class" msgstr "Executar esta classe" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "Trancado" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Imprimir" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "Editor" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 msgid "Show modifications" msgstr "Exibir modificações" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 msgid "Previous modification" msgstr "Modificação anterior" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "Próxima modificação" #: FEditor.form:570 FTextEditor.form:546 msgid "Insert special character" msgstr "Inserir caracter especial" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "Tornar o código bonito" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "Lista de procedimentos" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "Trancar / destrancar arquivo" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Arquivos CVS" #: FExportData.class:113 msgid "Unable to export data." msgstr "Não é possível exportar os dados." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Sobrescrever" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Este arquivo já existe.\n" "\n" "Você deseja sobrescreve-lo?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Caractere delimitador" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Caractere de fechamento" #: FExportData.form:54 msgid "Export field names" msgstr "Exportar os nomes de campo" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exportar apenas os registros selecionados" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Servidores" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Autenticação falhou." # gb-ignore #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Servidor" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Usuário" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Senha" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Lembrar senha" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Seja anônimo" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Por favor informe um endereço de e-mail válido." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Senha confirmada não confere." #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Não é possível registrar usuário." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" "Você foi registrado com sucesso.\n" "\n" "Você receberá em breve um e-mail de confirmação." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Registrar" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Confirmar senha" # gb-ignore #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" "Um e-mail de confirmação será enviado para o endereço especificado. Clique no link incluído na mensagem para ativar a sua conta.\n" "

\n" "O seu e-mail não será armazenado no servidor." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Não é possível abrir a conexão." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Não é possível obter os campos da tabela." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Editar lista de campo" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Selecione um campo" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Conexão" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabela" #: FFileInfoVC.class:23 msgid "'&1' version control" msgstr "Controle de versão '&1'" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "O arquivo está trancado e será excluído na próxima gravação." #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "Este arquivo não está versionado e precisa ser adicionado no repositório." #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "Esse arquivo não foi modificado desde a última gravação." #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3572 VersionControl.module:398 msgid "Continue" msgstr "Continuar" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "Você irá cancelar as suas modificações!" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Alterações" #: FFileInfoVC.form:41 FVersionControl.form:55 msgid "History" msgstr "Histórico" #: FFileInfoVC.form:59 msgid "Undo changes" msgstr "Desfazer alterações" # gb-ignore #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Módulo Gambas" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "Módulo de teste Gambas" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Classe Gambas" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "Propriedades '&1'" #: FFontChooser.form:12 msgid "Select a font" msgstr "Selecione uma fonte" #: FForm.class:136 msgid "Bad form file" msgstr "Arquivo de formulário inválido" #: FForm.class:268 msgid "Unknown control: &1" msgstr "Controle desconhecido: &1" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "Componente faltando para o controle &1" #: FForm.class:1876 msgid "Cannot paste data." msgstr "Não é possível colar o dado." #: FForm.form:178 msgid "Copy at the same place" msgstr "Copiar para o mesmo lugar" #: FForm.form:198 msgid "Delete container only" msgstr "Exclui apenas o contêiner" #: FForm.form:205 msgid "Embed into a container" msgstr "Embutir em um contêiner" #: FForm.form:211 msgid "Change into" msgstr "Alterar para" #: FForm.form:219 msgid "Select" msgstr "Selecionar" #: FForm.form:232 msgid "Select parent" msgstr "Selecionar pai" #: FForm.form:245 msgid "Arrangement" msgstr "Distribuição" #: FForm.form:249 msgid "Bring to foreground" msgstr "Trazer para frente" #: FForm.form:256 msgid "Send to background" msgstr "Enviar para trás" #: FForm.form:266 msgid "Horizontal" msgstr "Horizontal" #: FForm.form:273 msgid "Rows" msgstr "Linhas" #: FForm.form:279 msgid "Vertical" msgstr "Vertical" #: FForm.form:286 msgid "Columns" msgstr "Colunas" #: FForm.form:295 msgid "Center horizontally" msgstr "Centralizar horizontalmente" #: FForm.form:301 msgid "Center vertically" msgstr "Centralizar verticalmente" #: FForm.form:307 msgid "Alignment" msgstr "Alinhamento" #: FForm.form:311 msgid "Align to left" msgstr "Alinhar à direita" #: FForm.form:317 msgid "Align to right" msgstr "Alinhar à esquerda" #: FForm.form:323 msgid "Align to top" msgstr "Alinhar em cima" #: FForm.form:329 msgid "Align to bottom" msgstr "Alinhar em baixo" #: FForm.form:338 msgid "Same width" msgstr "Mesma largura" #: FForm.form:344 msgid "Same height" msgstr "Mesma altura" #: FForm.form:353 msgid "Show tab" msgstr "Exibir tabulação" #: FForm.form:361 msgid "Move tab" msgstr "Mover tab" #: FForm.form:366 msgid "First" msgstr "Primeiro" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Anterior" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Próximo" #: FForm.form:387 msgid "Last" msgstr "Último" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Editor de menu" #: FForm.form:407 msgid "Event" msgstr "Evento" #: FForm.form:421 msgid "Run this form" msgstr "Executar este formulário" #: FForm.form:601 msgid "Toggle grid" msgstr "Alternar grade" #: FForm.form:610 FImageEditor.form:515 msgid "Toggle information tooltip" msgstr "Alternar dica de informações" #: FForm.form:729 msgid "Move tab first" msgstr "Mover tab primeiro" #: FForm.form:736 msgid "Move tab left" msgstr "Mover tab esquerda" #: FForm.form:743 msgid "Move tab right" msgstr "Mover tab direita" #: FForm.form:750 msgid "Move tab last" msgstr "Mover tab último" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Negrito" #: FForm.form:786 msgid "Italic" msgstr "Itálico" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Sublinhado" #: FForm.form:802 msgid "Bigger font" msgstr "Fonte maior" #: FForm.form:810 msgid "Smaller font" msgstr "Fonte menor" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "Fonte padrão" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Fundo" #: FForm.form:834 msgid "Foreground" msgstr "Primeiro plano" #: FForm.form:845 msgid "Lock / unlock form" msgstr "Trancar / destrancar formulário" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Hierarquia" #: FFormStack.form:24 msgid "Move top" msgstr "Mover para topo" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Subir" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Descer" #: FFormStack.form:42 msgid "Move bottom" msgstr "Mover para fundo" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "Idioma padrão" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Navegador de Ajuda" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "Exibir árvore de ajuda" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Voltar" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Avançar" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "Teclas de atalho da IDE" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "Depurador" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "tradução" #: FImageEditor.form:159 msgid "Action" msgstr "Ação" #: FImageEditor.form:164 msgid "Crop" msgstr "Recortar" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Inversão horizontal" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Troca vertical" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Griar sentido anti-horário" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Girar sentido horário" #: FImageEditor.form:205 msgid "Resize" msgstr "Redimensionar" #: FImageEditor.form:212 msgid "Rotate" msgstr "Girar" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Esconder seleção" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Seleção" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Inverter seleção" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Duplicar seleção" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "Seleção offset" #: FImageEditor.form:266 msgid "Union" msgstr "União" #: FImageEditor.form:272 msgid "Difference" msgstr "Diferença" #: FImageEditor.form:278 msgid "Intersection" msgstr "Interseção" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "Ou exclusivo" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Grade de forma" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Normal" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Caber tudo" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "Salvar como JPEG" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "Salvar como PNG" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "Salvar como BMP" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "Salvar como TIFF" #: FImageEditor.form:428 msgid "Image editor" msgstr "Editor de imagem" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "Grade de desenho" #: FImageEditor.form:558 msgid "Move" msgstr "Mover" #: FImageEditor.form:569 msgid "Draw" msgstr "Desenhar" #: FImageEditor.form:579 msgid "Erase" msgstr "Apagar" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Retângulo" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Elipse" #: FImageEditor.form:629 msgid "Magic wand" msgstr "Varinha mágica" #: FImageEditor.form:646 msgid "Edit selection" msgstr "Editar seleção" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "Redimensionar ou esticar a imagem" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "Girar imagem" # gb-ignore #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "Duplicar" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Área de transferência do sistema" #: FImageProperty.class:1267 msgid "Arrow" msgstr "Seta" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "Seta #2" #: FImageProperty.class:1270 msgid "Triangle" msgstr "Triângulo" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "Triângulo retângulo" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "Pentágono" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "Hexágono" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "Cor" #: FImageProperty.form:172 msgid "Gradient" msgstr "Gradiente" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Gradiente linear" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Gradiente radial" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "Adicionar parada de gradiente" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "Remover parada do gradiente" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "Selecione a cor de parada do gradiente" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "Inverter gradiente" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Raio" #: FImageProperty.form:326 msgid "Clipboard" msgstr "Área de transferência" #: FImageProperty.form:338 msgid "Shapes" msgstr "Formas" #: FImageProperty.form:363 msgid "Stroke" msgstr "Golpe" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "Preencher" #: FImageProperty.form:391 msgid "Colorize" msgstr "Colorir" #: FImageProperty.form:399 msgid "Desaturate" msgstr "Dessaturar" #: FImageProperty.form:407 msgid "Make transparent" msgstr "Tornar transparente" #: FImageProperty.form:417 msgid "Line cap" msgstr "Extremos de linha" #: FImageProperty.form:422 msgid "Line join" msgstr "Juntar linha" #: FImageProperty.form:427 msgid "Fill rule" msgstr "Regra de preenchimento" #: FImageProperty.form:445 msgid "Opacity" msgstr "Opacidade" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Tamanho" #: FImageProperty.form:481 msgid "Tolerance" msgstr "Tolerância" #: FImageProperty.form:500 msgid "Roundness" msgstr "Circularidade" #: FImageProperty.form:526 msgid "Effects" msgstr "Efeitos" #: FImageProperty.form:535 msgid "Brightness" msgstr "Brilho" #: FImageProperty.form:554 msgid "Contrast" msgstr "Contraste" #: FImageProperty.form:573 msgid "Gamma" msgstr "Gama" #: FImageProperty.form:592 msgid "Lightness" msgstr "Luminosidade" #: FImageProperty.form:611 msgid "Hue" msgstr "Tonalidade" #: FImageProperty.form:630 msgid "Saturation" msgstr "Saturação" #: FImageProperty.form:649 msgid "Blur" msgstr "Borrar" #: FImageProperty.form:666 msgid "Transparency" msgstr "Transparência" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Visualização" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "Aplicar" #: FImageProperty.form:735 msgid "Centered" msgstr "Centralizado" #: FImageProperty.form:745 msgid "Right align" msgstr "Alinhar a direita" #: FImageProperty.form:754 msgid "Left align" msgstr "Alinhar a esquerda" #: FImageProperty.form:767 msgid "Top align" msgstr "Alinhar ao topo" #: FImageProperty.form:776 msgid "Middle align" msgstr "Alinhar ao meio" #: FImageProperty.form:786 msgid "Baseline align" msgstr "Alinhar a linha de base" #: FImageProperty.form:795 msgid "Bottom align" msgstr "Alinhar em baixo" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "Resolução da grade" #: FImageProperty.form:849 msgid "Grid snap" msgstr "Alinhar à grade" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "Desenhar diagonais" #: FImageQuality.form:10 msgid "Image quality" msgstr "Qualidade da imagem" #: FImageResize.form:25 msgid "Resize image" msgstr "Redimensionar imagem" #: FImageResize.form:65 msgid "Resize and center" msgstr "Redimensionar e centralizar" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "Redimensionar e centralizar horizontalmente" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "Redimensionar e centralizar verticalmente" #: FImageResize.form:86 msgid "Stretch image" msgstr "Esticar imagem" #: FImageResize.form:111 msgid "Add a border" msgstr "Adicionar uma borda" #: FImageResize.form:116 msgid "Ratio" msgstr "Proporção" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Classes Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Módulos Gambas" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "Módulos de teste Gambas" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Folha de estilo em cascata" #: FImportFile.class:33 msgid "HTML files" msgstr "Arquivos HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "Arquivos Javascript" #: FImportFile.class:33 msgid "Picture files" msgstr "Arquivos de figura" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Não é possível importar arquivo." #: FImportFile.form:9 msgid "Import files" msgstr "Importar arquivos" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Criar vínculos simbólicos" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Todos os arquivos" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Chave automática)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Campo_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Valores insuficientes" #: FImportTable.class:393 msgid "Too many values" msgstr "Muitos valores" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Cancelado pelo usuário" #: FImportTable.class:427 msgid "No record imported." msgstr "Registro não importado." #: FImportTable.class:429 msgid "One record imported." msgstr "Um registro importado." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 registros importados." #: FImportTable.form:35 msgid "Import file" msgstr "Importar arquivo" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Selecione o arquivo do CVS para importar" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Origem" #: FImportTable.form:78 msgid "Charset" msgstr "Codificação de caracteres" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Retirar os espaços em branco" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignorar primeira linha" #: FImportTable.form:139 msgid "Line(s)" msgstr "Linha(s)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Destino" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "A primeira linha contém o nomes de campo" #: FImportTable.form:176 msgid "Key field" msgstr "Campo chave" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "Por favor entre com o nome do layout." #: FLayout.class:30 FOption.class:1694 msgid "Override" msgstr "Sobrepor" #: FLayout.class:30 msgid "This layout already exists." msgstr "Este layout já existe." #: FLayout.form:14 msgid "Save layout" msgstr "Salvar layout" #: FLayout.form:22 msgid "Layout name" msgstr "Nome do Layout" #: FList.class:103 msgid "Item &1" msgstr "Item &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Você realmente deseja limpar a lista?" #: FList.form:25 msgid "Edit list property" msgstr "Editar propriedade de lista" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "Inserir" #: FList.form:87 msgid "Invert" msgstr "Inverter" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Você realmente deseja excluir este vínculo?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Você realmente deseja excluir este diretório?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Você realmente deseja excluir este arquivo?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Não é possível excluir arquivo ou diretório" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "O arquivo ou diretório não existe mais." #: FMain.class:759 msgid "Sort history" msgstr "Ordenar por histórico" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "Ordenar por data" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "Ordenar por nome" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "Ordenar por caminho" #: FMain.class:775 msgid "&Clear history" msgstr "&Limpar histórico" #: FMain.class:959 msgid "New folder" msgstr "Nova pasta" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "As ferramentas de tradução GNU não está instalados no sistema.\n" "\n" "Por favor instale-as para que seja possível fazer a tradução." #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "Não é possível remover o arquivo do projeto." #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "Todo backup ou arquivos gerados serão removidos do diretório do projeto." #: FMain.class:1872 msgid "Clean" msgstr "Limpo" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "Você realmenter deseja adicionar todos os arquivos ao repositório?" #: FMain.class:2329 msgid "Choose a profile" msgstr "Escolha um perfil" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "Perfil para o projeto &1" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "Selecione um arquivo" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "Este arquivo está localizado dentro do projeto." #: FMain.class:2751 Project.module:879 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "O arquivo foi modificado.\n" "\n" "Todas as mudanças serão perdidas." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Abrir projeto" #: FMain.form:306 msgid "Open recent" msgstr "Abrir recente" #: FMain.form:314 msgid "Open example" msgstr "Abrir exemplo" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "Abrir arquivo" #: FMain.form:332 msgid "Save project" msgstr "Salvar projeto" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Salvar projeto como" #: FMain.form:351 msgid "Reload project" msgstr "Recarregar projeto" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Sair" #: FMain.form:395 msgid "Save as" msgstr "Salvar como" #: FMain.form:435 msgid "Compile" msgstr "Compilar" #: FMain.form:442 msgid "Compile All" msgstr "Compilar Tudo" #: FMain.form:452 msgid "Translate" msgstr "Traduzir" #: FMain.form:461 msgid "Make" msgstr "Criar" #: FMain.form:465 msgid "Executable" msgstr "Executável" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "Pacote de código fonte" #: FMain.form:479 msgid "Installation package" msgstr "Pacote de instalação" #: FMain.form:486 msgid "Patch" msgstr "Patch" #: FMain.form:489 msgid "Create" msgstr "Criar" #: FMain.form:518 msgid "Undo synchronization" msgstr "Desfazer sincronização" #: FMain.form:537 msgid "Branch" msgstr "Ramificação" #: FMain.form:542 msgid "Put under version control" msgstr "Colocar sub controle de versão" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "Publicar" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "Limpar" #: FMain.form:563 msgid "Refresh" msgstr "Atualizar" #: FMain.form:592 msgid "Run with" msgstr "Executar com" #: FMain.form:597 msgid "Test" msgstr "Teste" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "Suítes de teste" #: FMain.form:613 msgid "Pause" msgstr "Pausa" #: FMain.form:620 msgid "Stop" msgstr "Parar" #: FMain.form:627 msgid "Step" msgstr "Passo" #: FMain.form:634 msgid "Forward" msgstr "Próximo" #: FMain.form:641 msgid "Finish" msgstr "Finalizar" #: FMain.form:650 msgid "Use terminal emulator" msgstr "Usar emulador de terminal" #: FMain.form:656 msgid "Redirect standard error output" msgstr "Redirecionar a saída de erro padrão" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "Usar servidor HTTP embutido" #: FMain.form:668 msgid "Activate profiling" msgstr "Ativar análise" #: FMain.form:677 msgid "Invert language orientation" msgstr "Inverter orientação da linguagem" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "Desativar compilador just-in-time" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "Exibir mensagens de depuração do compilador just-in-time" #: FMain.form:698 msgid "Show database requests" msgstr "Exibir chamadas a bancos de dados" #: FMain.form:705 msgid "GUI component" msgstr "Componente GUI" #: FMain.form:709 msgid "Current desktop" msgstr "Área de trabalho corrente" #: FMain.form:746 msgid "Open profile" msgstr "Abrir perfil" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "Limpar todos os pontos de paradas" #: FMain.form:757 msgid "Close all debug windows" msgstr "Fechar todas as janelas de depuração" #: FMain.form:795 msgid "Status bar" msgstr "Barra de status" #: FMain.form:802 msgid "Hide menubar" msgstr "Esconder barra de menu" #: FMain.form:826 msgid "Close all windows" msgstr "Fechar todas as janelas" #: FMain.form:833 msgid "Tools" msgstr "Ferramentas" #: FMain.form:837 msgid "Find" msgstr "Localizar" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Substituir" #: FMain.form:853 msgid "Browse project" msgstr "Navegar projeto" #: FMain.form:860 msgid "Open a terminal" msgstr "Abrir terminal" #: FMain.form:867 msgid "Send project by mail" msgstr "Enviar projeto por e-mail" #: FMain.form:873 msgid "Update all forms" msgstr "Atualizar todos os formulários" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "Fazenda de software" #: FMain.form:891 msgid "Shortcuts" msgstr "Atalhos" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Preferências" #: FMain.form:911 msgid "Directory" msgstr "Diretório" #: FMain.form:916 msgid "Project link" msgstr "Vínculo do projeto" #: FMain.form:925 msgid "Module" msgstr "Módulo" #: FMain.form:932 msgid "Test module" msgstr "Módulo de teste" #: FMain.form:991 msgid "HTML file" msgstr "Arquivo HTML" #: FMain.form:998 msgid "Style sheet" msgstr "Folha de estilos" #: FMain.form:1005 msgid "Javascript file" msgstr "Arquivo Javascript" #: FMain.form:1013 msgid "Other" msgstr "Outro" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Recentes" #: FMain.form:1047 msgid "Open in file manager" msgstr "Abrir no gerenciador de arquivos" #: FMain.form:1052 msgid "Open in project" msgstr "Abrir no projeto" #: FMain.form:1056 msgid "Open with" msgstr "Abrir com" #: FMain.form:1064 msgid "Compress all" msgstr "Compactar tudo" #: FMain.form:1070 msgid "Uncompress all" msgstr "Descompactar tudo" #: FMain.form:1117 msgid "Copy file path" msgstr "Copiar caminho do arquivo" #: FMain.form:1126 msgid "Startup class" msgstr "Classe inicial" #: FMain.form:1141 msgid "Add to repository" msgstr "Adicionar no repositório" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtro" #: FMain.form:1149 msgid "Show exported classes" msgstr "Exibir classes exportadas" #: FMain.form:1154 msgid "Show added files" msgstr "Exibir arquivos adicionados" #: FMain.form:1159 msgid "Show modified files" msgstr "Exibir arquivos modificados" #: FMain.form:1164 msgid "Show files in conflict" msgstr "Exibir arquivos em conflito" #: FMain.form:1172 msgid "Show all" msgstr "Exibir tudo" #: FMain.form:1184 msgid "Do not translate" msgstr "Não traduzir" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "Nova conexão" # gb-ignore #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Dicas do dia" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "Teclas de atalho" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "Informação do sistema" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Propriedades do projeto" #: FMain.form:1386 msgid "Refresh project" msgstr "Atualizar projeto" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Criar executável" #: FMain.form:1428 msgid "Make source archive" msgstr "Criar arquivos fontes" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "Criar pacote de instalação" #: FMain.form:1457 msgid "Properties sheet" msgstr "Folha de propriedades" #: FMain.form:1466 msgid "Toolbox" msgstr "Caixa de ferramentas" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "Localizar" #: FMain.form:1508 msgid "Compile all" msgstr "Compilar tudo" #: FMain.form:1557 msgid "Finish current function" msgstr "Finalizar função atual" #: FMain.form:1573 msgid "Show menubar" msgstr "Exibir barra de menu" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "Publicar software" #: FMain.form:1663 msgid "&File" msgstr "&Arquivo" #: FMain.form:1687 msgid "&Project" msgstr "&Projeto" #: FMain.form:1699 msgid "&Debug" msgstr "&Depurar" #: FMain.form:1711 msgid "&View" msgstr "&Ver" #: FMain.form:1723 msgid "&Tools" msgstr "&Ferramentas" #: FMain.form:1735 msgid "&?" msgstr "&?" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "Ordenar arquivos de classes de acordo com herança" #: FMain.form:1866 msgid "Show properties sheet" msgstr "Exibir folha de propriedades" #: FMain.form:1874 msgid "Show project tree" msgstr "Exibir árvore do projeto" #: FMain.form:1944 msgid "Show property help" msgstr "Exibir ajuda de propriedades" #: FMain.form:1952 msgid "Show controls" msgstr "Exibir controles" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Aplicações Gambas" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "Executar este comando depois" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) será substituido pelo caminho do executável" #: FMakeExecutable.form:57 msgid "Increment version" msgstr "Incrementar versão" #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Incluir informações de depuração no executável" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "Criar atalho na área de trabalho" #: FMakeInstall.class:137 msgid "Package" msgstr "Pacote" #: FMakeInstall.class:138 msgid "Min. version" msgstr "Versão min." #: FMakeInstall.class:139 msgid "Max. version" msgstr "Versão max." #: FMakeInstall.class:145 msgid "File or directory" msgstr "Arquivo ou diretório" #: FMakeInstall.class:279 msgid "Creating packages..." msgstr "Criando pacotes..." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "Os pacotes foram criados com sucesso." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Por favor informe seu nome." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Por favor informe seu endereço de e-mail." #: FMakeInstall.class:345 msgid "Please enter the vendor name." msgstr "Por favor informe o nome do fornecedor." #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "Não há um entrada de CHANGELOG para esse lançamento." #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Por favor informe o primeiro item do CHANGELOG." #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "Por favor escolha pelo menus uma distribuição." #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "Por favor escolha o grupo de pacote para cada distribuição." #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "Por favor escolha o grupo do pacote." #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "Por favor escolha o local do menu para cada distribuição." #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "Por favor escolha o local do menu." #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "Não é possível encontrar o arquivo extra: &1" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "Por favor escolha o diretório alvo para cada arquivo extra." #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Sistema de empacotamento Debian não consegue manipular nomes de arquivos com espaços." #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Sistema de empacotamento Debian não consegue manipular diretórios com espaços." #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "O pacote não pode ser armazenado dentro do diretório do projeto." #: FMakeInstall.class:542 msgid "Initial release" msgstr "Liberação inicial" #: FMakeInstall.class:802 msgid "Menus" msgstr "Menus" #: FMakeInstall.class:870 msgid "Groups" msgstr "Grupos" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "Caracteres incorretos" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "Você realmente deseja remover todas as dependências extras?" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "Você realmente deseja remover todos os arquivos extras?" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "Selecione um diretório de destino" #: FMakeInstall.form:151 msgid "Create package" msgstr "Criar pacote" #: FMakeInstall.form:154 msgid "Package information" msgstr "Informação do pacote" #: FMakeInstall.form:160 msgid "Package name" msgstr "Nome do pacote" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "Adiciona prefixo do distribuidor ou nome aos nomes de pacote" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "Adicionar número de versão principal ao nome dos pacotes" #: FMakeInstall.form:205 msgid "Package version" msgstr "Versão do pacote" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "Nome do fornecedor" #: FMakeInstall.form:241 FOption.form:377 msgid "Vendor prefix" msgstr "Prefixo do fornecedor" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Informação do mantenedor" # gb-ignore #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Log de alterações" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Distribuição alvo" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Auto descompactar" #: FMakeInstall.form:612 msgid "Package group" msgstr "Grupo de pacote" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Entrada de menu" #: FMakeInstall.form:654 msgid "Categories" msgstr "Categorias" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Arquivo de configuração de área de trabalho" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "Mimetypes" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" "Informe os mimetypes manipulados pela sua aplicação ali.\n" "Por favor informe um mimetype por linha.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Configurações adicionais" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "O seguinte será adicionado no final do arquivo de configuração de área de trabalho." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Dependências extras" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Versão Mínima do Gambas" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Mesma dependẽncias para todos os alvos" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Arquivos extras" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Mesmo arquivos para todos os alvos" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Arquivos extras devem estar localizados na pasta Projeto do projeto corrente, ex.: o diretório .hidden do projeto no disco." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Testes extras de autoconf" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Adiciona testes extras para o processo de configuração.\n" "

Deixe isto em branco se você não precisa ou se não sabe nada a respeito de scripts autoconf." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Diretório de destino" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Criar diretórios para cada distribuição" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Saída de comandos" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Criar pacote agora" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Por favor selecione o arquivo origem." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Por favor selecione o projeto origem." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Por favor informe o nome do arquivo patch." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "O Patch foi gerador com sucesso." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Não é possível gerar o patch." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Gerar patch" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Selecionar origem do patch" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Origem do Patch" #: FMakePatch.form:59 msgid "Project directory" msgstr "Diretório de projeto" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Nome de patch automático" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Editar patch" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Este assistente irá gerar um patch entre o projeto origem e o projeto atual." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Selecionar arquivo fonte" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 Project.module:4596 msgid "Source packages" msgstr "Pacotes fontes" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Selecionar diretório do projeto" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Escolha o nome do arquivo patch" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Arquivos Patch/Diff" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "Os menus foram modificados!" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Por favor informe um nome de menu." #: FMenu.class:332 msgid "Bad menu name !" msgstr "Nome de menu inválido !" #: FMenu.class:338 msgid "Bad group name !" msgstr "Nome de grupo inválido !" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Este menu está profundo demais!" #: FMenu.class:1077 Project.module:5479 msgid "modified" msgstr "modificado" #: FMenu.form:84 msgid "Insert menu" msgstr "Inserir menu" #: FMenu.form:92 msgid "Insert separator" msgstr "Inserir separador" #: FMenu.form:100 msgid "Insert menu before" msgstr "Inserir menu antes" #: FMenu.form:102 msgid "Insert before" msgstr "Inserir antes" #: FMenu.form:108 msgid "Delete menu" msgstr "Excluir menu" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Clique em Inserir para adicionar um novo menu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Por favor informe o nome do banco de dados." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Por favor informe uma senha" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Propriedades de conexão" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Selecione um diretório" #: FNewConnection.class:229 msgid "Create database" msgstr "Criar banco de dados" #: FNewConnection.class:241 msgid "Delete database" msgstr "Excluir banco de dados" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Não é possível criar o banco de dados." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Você realmente deseja excluir o banco de dados '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Não é possível excluir o banco de dados." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Máquina" #: FNewConnection.form:124 msgid "Path" msgstr "Caminho" #: FNewConnection.form:154 msgid "No password" msgstr "Sem senha" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "Banco de dados" #: FNewConnection.form:241 msgid "From" msgstr "De" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Ignorar o conjunto de caracteres do banco de dados" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Exibir metadado" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Lembrar da estrutura do banco de dados" #: FNewTable.class:33 msgid "Create table" msgstr "Criar tabela" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Por favor informe o nome da nova tabela." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Tabela '&1' já existe." #: FNewTranslation.form:10 msgid "New translation" msgstr "Nova tradução" #: FOpenProject.form:22 msgid "Select a project" msgstr "Selecione um projeto" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Exemplos" # gb-ignore #: FOption.class:4 msgid "Amber" msgstr "" # gb-ignore #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "Blues" #: FOption.class:4 msgid "Emerald" msgstr "Esmeralda" # gb-ignore #: FOption.class:4 msgid "Gambas" msgstr "" # gb-ignore #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 msgid "Pastel" msgstr "Pastel" #: FOption.class:4 msgid "Quest" msgstr "Indagação" #: FOption.class:4 msgid "Quick" msgstr "Rápido" # gb-ignore #: FOption.class:4 msgid "Ruby" msgstr "" # gb-ignore #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Visual" # gb-ignore #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:87 msgid "Custom" msgstr "Personalizado" #: FOption.class:89 msgid "Desktop" msgstr "Desktop" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(Padrão)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "Arquivos de temas de destaque Gambas" #: FOption.class:242 msgid "Export a theme file" msgstr "Exportar um arquivo de tema" #: FOption.class:467 msgid "Select a theme file" msgstr "Selecione um arquivo de tema" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "Você deve reinicar a aplicação para ver as modificações." #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "Você realmente deseja excluir o cache de documentação?" #: FOption.class:829 msgid "Unable to clear documentation cache." msgstr "Não é possível limpar o cache de documentação." #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "Você realmente deseja excluir este fragmento de código?" #: FOption.class:1190 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Você realmente deseja instalar a fonte Gambas em sua pasta pessoal de fontes?" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "Instalar" #: FOption.class:1275 msgid "Network is not available." msgstr "Rede não disponível." #: FOption.class:1280 msgid "Documentation is up to date." msgstr "Documentação atualizada." #: FOption.class:1285 msgid "A new documentation is available!" msgstr "Uma nova documentação está disponível!" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "Documentação não disponível." #: FOption.class:1486 msgid "Cannot download '&1'." msgstr "Não é possível baixar '&1'." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "Não é possível descompactar a documentação." #: FOption.class:1528 msgid "Unable to install documentation." msgstr "Não é possível instalar a documentação." #: FOption.class:1636 FTestSuite.class:32 msgid "Default" msgstr "Padrão" #: FOption.class:1637 msgid "Compact" msgstr "Compactar" #: FOption.class:1652 msgid "Current" msgstr "Atual" #: FOption.class:1694 msgid "Do you really want to override the existing layout?" msgstr "Você realmente deseja sobrescrever o layout existente?" #: FOption.class:1796 msgid "Do you really want to delete that layout?" msgstr "Você realmente deseja excluir esse layout?" #: FOption.form:294 msgid "Dotted" msgstr "Pontilhado" #: FOption.form:305 msgid "Identity" msgstr "Identidade" #: FOption.form:349 msgid "Package maintainer" msgstr "Mantenedor do pacote" #: FOption.form:394 msgid "Default license" msgstr "Licença padrão" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "Não" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Sim" #: FOption.form:438 msgid "Projects" msgstr "Projetos" #: FOption.form:455 msgid "Default tab size" msgstr "Tamanho padrão da tabulação" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "espaço(s)" #: FOption.form:480 msgid "Indent with tab by default" msgstr "Indentar com tab por padrão" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "Quebra automática de linha por padrão" #: FOption.form:515 msgid "Fold procedures by default" msgstr "Dobrar procedimentos por padrão" #: FOption.form:532 msgid "Activate version control" msgstr "Ativar controle de versão" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "Restaurar arquivos quando carregar o projeto" #: FOption.form:561 msgid "Images" msgstr "Imagens" #: FOption.form:573 msgid "Compress PNG images with " msgstr "Comprimir imagens PNG com" #: FOption.form:607 msgid "Automatic translation with " msgstr "Tradução automática com" #: FOption.form:636 msgid "Translation engine" msgstr "Mecanismo de tradução" #: FOption.form:645 msgid "Help & applications" msgstr "Ajuda & aplicações" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Ajuda" #: FOption.form:662 msgid "Show documentation in popups" msgstr "Exibir documentação nas janelas popups" #: FOption.form:679 msgid "Always display optional messages" msgstr "Sempre exibir mensagens opcionais" #: FOption.form:691 msgid "Documentation" msgstr "Documentação" #: FOption.form:702 msgid "Use offline documentation" msgstr "Usar documentação offline" #: FOption.form:732 msgid "Download documentation" msgstr "Baixar documentação" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "Configuração do proxy" #: FOption.form:771 msgid "Clear documentation cache" msgstr "Limpar cache de documentação" #: FOption.form:779 msgid "Applications" msgstr "Aplicativos" #: FOption.form:790 msgid "Browser" msgstr "Navegador" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Terminal" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "Exibir indentação com linhas verticais" #: FOption.form:850 msgid "Highlight current line" msgstr "Destaque linha atual" #: FOption.form:867 msgid "Highlight modified lines" msgstr "Destaque de linhas modificadas" #: FOption.form:884 msgid "Show line numbers" msgstr "Exibir os números de linhas" #: FOption.form:901 msgid "Procedure folding" msgstr "Dobramento de procedimento" #: FOption.form:918 msgid "Procedure separation" msgstr "Separação de procedimentos" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "Exibir os espaços do final com pontos" #: FOption.form:952 msgid "Show Preview" msgstr "Exibir Previsão" #: FOption.form:970 msgid "Keywords in upper case" msgstr "Palavras chaves em maiúsculo" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "Separar símbolos estáticos no seletor do método" #: FOption.form:996 msgid "Code formatting" msgstr "Formatação de código" #: FOption.form:1002 msgid "Automatic formatting" msgstr "Formatação automática" #: FOption.form:1013 msgid "Control structure completion" msgstr "Conclusão de estruturas de controle" #: FOption.form:1030 msgid "Local variable declaration" msgstr "Declaração de variável local" #: FOption.form:1047 msgid "Comments insertion" msgstr "Inserção de comentários" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "Fechar chaves, colchetes" #: FOption.form:1081 msgid "Close strings" msgstr "Fechar strings" #: FOption.form:1093 msgid "Explicit formating" msgstr "Formatação explícita" #: FOption.form:1104 msgid "Format on load & save" msgstr "Formatar ao salvar & carregar" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "Indentar a declaração de variável local" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "Remover espaços inúteis ao final da linha" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "Manter linhas vazias seguidas" #: FOption.form:1164 msgid "Code snippets" msgstr "Fragmentos de código" #: FOption.form:1180 msgid "Activate code snippets" msgstr "Ativar fragmentos de código" #: FOption.form:1241 msgid "Interface" msgstr "Interface" #: FOption.form:1258 msgid "Activate animations" msgstr "Ativar animações" #: FOption.form:1275 msgid "Show shadows" msgstr "Exibir sombras" #: FOption.form:1292 msgid "Show tooltips" msgstr "Exibir Barra de Dicas" #: FOption.form:1309 msgid "Use utility windows" msgstr "Usar janela de utilidades" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "Fechar abas com clique do meio do mouse" #: FOption.form:1343 msgid "Show file name in window title" msgstr "Exibir nome do arquivo no título da janela" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "Exibir painel de depuração se necessário" # gb-ignore #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "Fontes" #: FOption.form:1444 msgid "Global size" msgstr "Tamanho global" #: FOption.form:1466 msgid "Title size" msgstr "Tamanho do título" #: FOption.form:1488 msgid "Debugger size" msgstr "Tamanho do depurador" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Impressão" #: FOption.form:1580 msgid "Fixed font" msgstr "Fonte fixa" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "Zoom (exceto navegador)" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "Instalar a fonte Gambas para edição de código" #: FOption.form:1673 msgid "Themes" msgstr "Temas" #: FOption.form:1690 msgid "Icon theme" msgstr "Tema de ícones" #: FOption.form:1706 msgid "Highlighting theme" msgstr "Tema de destaque" #: FOption.form:1720 msgid "Import theme" msgstr "Importar tema" #: FOption.form:1726 msgid "Export theme" msgstr "Exportar tema" #: FOption.form:1745 msgid "Invert colors for dark themes" msgstr "Inverter cores para temas escuros" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Console- Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Desencaixar console" #: FOutput.form:72 msgid "Keep above" msgstr "Mater acima" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Suspender terminal" #: FOutput.form:104 msgid "Entered text echo" msgstr "Texto echo informado" # gb-ignore #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 msgid "Open contents" msgstr "Abrir conteúdos" #: FOutput.form:130 msgid "Use system charset" msgstr "Usar conjunto de caracteres do sistema" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Não é possível colar o texto." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Conteúdo da área de transferência" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Colar normalmente" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Colar com PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Por favor informe um nome de tabela." #: FPasteTable.class:133 msgid "Table already exists" msgstr "A tabela já existe" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Também copiar dados da tabela" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "O arquivo não parece um arquivo de patch!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Aplicar patch no projeto atual" #: FPatch.form:31 msgid "Select patch" msgstr "Selecionar patch" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Reverter" #: FProfile.class:175 msgid "Bad profile file format" msgstr "Formato de arquivo de profile inválido" # gb-ignore #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "Tempo total &1 μs" #: FProfile.class:430 msgid "Unable to load profile file: &1" msgstr "Não é possível carregar o arquivo de perfil: &1" #: FProfile.class:647 msgid "Calls" msgstr "Chamadas" #: FProfile.class:650 msgid "Duration" msgstr "Duração" #: FProfile.class:653 msgid "Average" msgstr "Média" #: FProfile.class:656 msgid "Self" msgstr "Próprio" #: FProfile.class:1055 msgid "Profile files" msgstr "Arquivos de perfil" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "Não é possível salvar o perfil." #: FProfile.form:60 msgid "Show relative durations" msgstr "Exibir durações relativas" #: FProfile.form:67 msgid "Show average" msgstr "Exibir média" #: FProfile.form:74 msgid "Save profile" msgstr "Salvar perfil" #: FProfile.form:126 msgid "Callees" msgstr "Chamados" #: FProfile.form:138 msgid "Callers" msgstr "Chamadores" #: FProjectProperty.class:160 msgid "Variable" msgstr "Variável" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Valor de ajuste incorreto." #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "&1 não exporta nenhuma classe." #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "&1 já está sendo usado como biblioteca." #: FProjectProperty.class:927 msgid "Modules" msgstr "Módulos" #: FProjectProperty.class:928 msgid "Test modules" msgstr "Módulos de teste" #: FProjectProperty.class:938 msgid "Functions" msgstr "Funções" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "Linhas de código" #: FProjectProperty.class:940 msgid "Average number of lines by function" msgstr "Número médio de linhas por função" #: FProjectProperty.class:943 msgid "Executable size" msgstr "Tamanho do executável" #: FProjectProperty.class:943 msgid "bytes" msgstr "bytes" #: FProjectProperty.class:960 msgid "Information about component" msgstr "Informação sobre o componente" #: FProjectProperty.class:966 msgid "Information about library" msgstr "Informação sobre a biblioteca" #: FProjectProperty.class:1345 msgid "Select a Gambas executable" msgstr "Selecione um executável Gambas" #: FProjectProperty.class:1346 msgid "Gambas executable" msgstr "Executável Gambas" #: FProjectProperty.form:273 msgid "General" msgstr "Geral" #: FProjectProperty.form:328 msgid "Component" msgstr "Componente" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "Biblioteca" #: FProjectProperty.form:328 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:335 msgid "Vendor" msgstr "Fornecedor" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versão" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "Obter do arquivo 'VERSION'" #: FProjectProperty.form:380 msgid "Title" msgstr "Título" #: FProjectProperty.form:413 msgid "Information" msgstr "Informação" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "Progresso" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "Finalizado e estável" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "Este componente está oculto" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "Compatível até a versão" #: FProjectProperty.form:496 msgid "Include information from" msgstr "Incluir informação de" #: FProjectProperty.form:508 msgid "Required features" msgstr "Recursos requeridos" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "Componentes requiridos e excluídos" #: FProjectProperty.form:585 msgid "Require" msgstr "Requer" #: FProjectProperty.form:591 msgid "Exclude" msgstr "Excluir" #: FProjectProperty.form:603 msgid "Remove All" msgstr "Remover tudo" #: FProjectProperty.form:610 msgid "Components" msgstr "Componentes" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Bibliotecas" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "Caminho de pesquisa da biblioteca de execução" #: FProjectProperty.form:697 msgid "Additional references" msgstr "Referências adicionais" #: FProjectProperty.form:707 msgid "Environment" msgstr "Ambiente" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Inserir" #: FProjectProperty.form:760 msgid "Edition" msgstr "Edição" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Tamanho da tabulação" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "Exibir componentes e controles descontinuados" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Compilação" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "Símbolos de módulos são por padrão público" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "Controles de formulários são públicos" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "Ativar avisos" #: FProjectProperty.form:916 msgid "Add branch to version number" msgstr "Adicionar branch ao número de versão" #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Estatísticas" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Esta linha e a seguinte serão ignoradas" #: FProjectVersion.class:36 msgid "Local" msgstr "Local" #: FProjectVersion.class:37 msgid "Remote" msgstr "Remoto" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Por favor informe um nome de usuário." #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "Por favor informe o jornal." #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "O projeto não pôde ser gravado." #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "Não é possível atualizar o projeto do repositório." #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "Projeto atualizado do repositório com sucesso." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Controle de Versão do Projeto" #: FProjectVersion.form:65 msgid "Update" msgstr "Atualizar" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Autenticação" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Atualizar informações" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "Jornal" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Algums arquivos não estão versionados e devem ser adicionados manualmente no repositório." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Descrição anterior" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Caracteres inválidos em nome de controle." #: FProperty.class:383 msgid "This name is already in use." msgstr "Este nome já está em uso." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Caracteres inválidos em grupo do controle." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Valor inválido da propriedade." #: FProperty.class:631 msgid "The name of the control." msgstr "O nome do controle." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "O grupo de evento que o controle pertece." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Se as dimensões do formulário e controles devem seguir o tamanho da fonte padrão." #: FProperty.class:661 msgid "If the control is public." msgstr "Se o controle é público." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Se a propriedade Text precisa ser traduzida." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Esta propriedade é virtual: só poderá ser implementada na IDE e não há existirá no tempo de execução." #: FProperty.class:814 msgid "None" msgstr "nenhum" #: FProperty.form:51 msgid "Lock property" msgstr "Trancar propriedade" #: FProperty.form:58 msgid "Sort properties" msgstr "Ordenar propriedades" #: FProxy.form:37 msgid "Port" msgstr "Porta" #: FProxy.form:76 msgid "Default proxy" msgstr "Proxy padrão" #: FProxy.form:76 msgid "HTTP proxy" msgstr "Proxy HTTP" #: FProxy.form:76 msgid "No proxy" msgstr "Sem proxy" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "Proxy SOCKS5" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "Você não pode publicar um software cuja a versão é \"0.0\"." # gb-ignore #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "O projeto foi publicado com sucesso." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Não é possível publicar projeto." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Espaços não são permitidos." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Número de versão incorreto." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Você realmente deseja remover todas as tags?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Selecione uma captura de tela" #: FPublish.class:329 msgid "Screenshot files" msgstr "Arquivos de captura de tela" #: FPublish.form:67 msgid "Software description" msgstr "Descrição do software" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "Site Web" #: FPublish.form:113 msgid "Create menu entry" msgstr "Criar entrada de menu" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Rótulos" #: FPublish.form:164 msgid "Sort" msgstr "Ordenar" #: FPublish.form:176 msgid "Screenshot" msgstr "Captura de tela" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Manter a captura de tela armazenada no servidor" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Excluir captura de tela armazenada no servidor" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Enviar uma nova captura de tela a partir da área de transferência" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Enviar uma nova captura de tela a partir do seguinte arquivo:" #: FPublish.form:222 msgid "Dependencies" msgstr "Dependências" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Versão requirida do Gambas" #: FPublish.form:295 msgid "Publish as" msgstr "Publicar como" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Configurar borda" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Borda" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Canto" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Configurar sombra" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Sombra" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Configurar pincél" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "Seleciona uma imagem dentro do projeto" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Valor incorreto." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Seleciona uma dimensão" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Configurar preenchimento" #: FSave.form:14 msgid "Save modified files" msgstr "Salvar arquivos modificados" #: FSave.form:42 msgid "Save All" msgstr "Salvar Tudo" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "O seguintes arquivos foram modificados. Você deseja salva-los?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Não é possível salvar o projeto dentro do próprio diretório." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Não é possível salvar o projeto." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Novo diretório pai do projeto" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Novo nome do projeto" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Capturar tela" #: FSearch.class:523 msgid "Search string replaced once." msgstr "String substituida uma vez." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "String substituida &1 vezes." #: FSearch.class:630 msgid "One match" msgstr "Uma combinação" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 correspondências" #: FSearch.class:638 msgid "One replacement" msgstr "Uma substituição" #: FSearch.class:640 msgid "&1 replacements" msgstr "&1 substituições" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Você realmente deseja substituir todas as strings?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Localizar & Substituir" #: FSearch.form:105 msgid "Case sensitive" msgstr "Sensível a caixa alta e baixa" #: FSearch.form:110 msgid "Words only" msgstr "Apenas palavras" #: FSearch.form:115 msgid "Regular expression" msgstr "Expressões regulares" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignorar strings" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignorar comentários" #: FSearch.form:140 msgid "Search in" msgstr "Localizar em" #: FSearch.form:147 msgid "Current function" msgstr "Função atual" #: FSearch.form:153 msgid "Current file" msgstr "Arquivo atual" #: FSearch.form:160 msgid "Source files" msgstr "Arquivos fonte" #: FSearch.form:166 msgid "Data files" msgstr "Arquivos de dados" #: FSearch.form:197 msgid "Browse" msgstr "Navegar" #: FSearch.form:209 msgid "Replace all" msgstr "Substituir tudo" #: FSearch.form:220 msgid "Highlight search" msgstr "Destaque de busca" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Selecionar um arquivo extra" #: FSelectIcon.class:37 msgid "Image files" msgstr "Arquivos de imagem" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "Arquivos de imagem SVG" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Selecione uma figura" #: FSelectIcon.form:41 msgid "Stock" msgstr "Estoque" #: FSelectLibrary.class:64 msgid "unknown" msgstr "desconhecido" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Selecione uma biblioteca" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "Nenhuma biblioteca foi encontrada no seu sistema." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Por favor informe uma string de disparo." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Esta string de gatilho já está em uso." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Editar fragmento de código" #: FSnippet.class:67 msgid "New code snippet" msgstr "Novo fragmento de código" #: FSnippet.form:26 msgid "Trigger string" msgstr "String gatilho" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Jogos" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Desenvolvimento" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Educação" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Gráficos" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "Audio" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "Vídeo" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Escritório" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Acessórios" # gb-ignore #: FSoftwareFarm.class:58 msgid "Internet" msgstr "" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Extensões" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Meus softwares" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Outros softwares de" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Todo software" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "Nenhum software encontrado." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "Requisição cancelada." #: FSoftwareFarm.class:372 msgid "Cancel my vote" msgstr "Cancelar meu voto" # gb-ignore #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "Publicado &1 (em &2)" #: FSoftwareFarm.class:559 msgid "Do you really want to download &1?" msgstr "Você realmente deseja baixar &1?" #: FSoftwareFarm.class:562 msgid "Unable to download &1:" msgstr "Não é possível baixar &1:" #: FSoftwareFarm.class:564 msgid "&1 has been successfully downloaded." msgstr "&1 foi baixado com sucesso." #: FSoftwareFarm.class:579 msgid "Do you really want to upgrade to &1?" msgstr "Você realmente deseja atualizar para &1?" #: FSoftwareFarm.class:582 msgid "Unable to upgrade to &1:" msgstr "Não é possível atualizar para &1:" #: FSoftwareFarm.class:589 msgid "Do you really want to uninstall &1?" msgstr "Você realmente deseja desinstalar &1?" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "Não é possível desinstalar &1:" #: FSoftwareFarm.class:594 msgid "&1 has been successfully uninstalled." msgstr "&1 foi desinstalado com sucesso." #: FSoftwareFarm.class:600 msgid "Do you really want to install &1?" msgstr "Você realmente deseja instalar &1?" #: FSoftwareFarm.class:603 msgid "Unable to install &1:" msgstr "Não é possível instalar &1:" #: FSoftwareFarm.class:605 msgid "&1 has been successfully installed." msgstr "&1 foi instalado com sucesso." #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "Não é possível modificar o seu voto." #: FSoftwareFarm.class:661 msgid "Do you really want to delete &1 from the farm server?" msgstr "Você realmente deseja excluir &1 do servidor?" #: FSoftwareFarm.class:665 msgid "Unable to remove &1:" msgstr "Não é possível remover &1:" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Fazenda de Software Gambas" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "Exibir" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Instalado" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Mais baixado" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Mais recente" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Exibir filtros" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Exibir versões antigas" #: FSoftwareFarm.form:397 msgid "Download" msgstr "Baixar" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "Baixar e instalar" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "Votar" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "Por favor copie estas informações em todos os seus relatórios de bugs." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Escolha a tabela" #: FTestSuite.class:90 msgid "Unable to load test suites." msgstr "Não é possível carregar suítes de teste." #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "Suíte de teste #&1" #: FTestSuite.class:247 msgid "This test suite already exists." msgstr "Esta suíte de teste já existe." #: FTestSuite.class:394 msgid "Unable to save test suites." msgstr "Não é possível salvar suítes de teste." #: FTestSuite.class:404 msgid "Do you really want to remove this test suite?" msgstr "Você realmente deseja remover esta suíte de teste?" #: FTestSuite.form:60 msgid "New test suite" msgstr "Nova suíte de teste" #: FTestSuite.form:67 msgid "Duplicate test suite" msgstr "Suíte de teste duplicada" #: FTestSuite.form:74 msgid "Rename test suite" msgstr "Renomear suíte de teste" #: FTestSuite.form:81 msgid "Delete test suite" msgstr "Excluir suíte de teste" #: FTestSuite.form:114 msgid "Select all tests" msgstr "Selecionar todos os testes" #: FTestSuite.form:121 msgid "Unselect all tests" msgstr "Descelecionar todos os testes" #: FTestSuite.form:145 msgid "Test with" msgstr "Testar com" #: FText.class:12 msgid "Edit '&1' property" msgstr "Editar propriedade '&1'" #: FText.form:29 msgid "Use a fixed font" msgstr "Usar uma fonte de tamanho fixo" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "Saída do console #&1" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "Não é possível compactar o arquivo." #: FTextEditor.class:1888 msgid "Compressed at &1" msgstr "Comprimido em &1" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "Ordenar ascendente" #: FTextEditor.form:175 msgid "Sort descent" msgstr "Ordenar decrescente" #: FTextEditor.form:221 msgid "Compress file" msgstr "Compactar arquivo" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "Dica do dia #&1" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Não é possível ler a dica do dia!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Exibir dicas ao iniciar" #: FToolBox.class:397 Project.module:820 msgid "Current project" msgstr "Projeto atual" #: FToolBox.form:58 msgid "Toolbox button size" msgstr "Tamanho do botão da Caixa de Ferramentas" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "O projeto está vazio. No há nada a ser traduzido." #: FTranslate.class:74 msgid "Language" msgstr "Idioma" #: FTranslate.class:77 msgid "Not translated" msgstr "Não traduzido" #: FTranslate.class:169 msgid "Translation files" msgstr "Arquivos de tradução" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Não é possível ler arquivo de tradução para o idioma '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Não é possível salvar a tradução." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Você realmente deseja excluir esta tradução?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Você realmente deseja recarregar esta tradução?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Exportar uma tradução" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "Por favor, selecione um arquivo de tradução para importar." #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "Nenhuma tradução foi escolhida." #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "Uma tradução foi escolhida." #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "&1 traduções foram selecionadas." #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Não é possível importar arquivo de tradução." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Tudo parece estar ok." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "Símbolos da string traduzida não correspondem aos da não traduzida." #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "&1 strings. Tudo foi traduzido!" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 strings. Uma não foi tratuzida. &3% concluído." #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 strings. &2 não foi tratuzido. &3% concluído." #: FTranslate.class:1741 msgid "Automatic translation has failed." msgstr "Tradução automática falhou." #: FTranslate.class:1753 msgid "Do you want to fill the translation automatically?" msgstr "Você deseja preencher a tradução automaticamente?" #: FTranslate.form:77 msgid "Project translation" msgstr "Tradução do projeto" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Tradução automática" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Strings não traduzidas" #: FTranslate.form:122 msgid "Translated strings" msgstr "Strings traduzidas" #: FTranslate.form:126 msgid "All strings" msgstr "Todas as strings" #: FTranslate.form:197 msgid "Add a new translation" msgstr "Adicionar nova tradução" #: FTranslate.form:232 msgid "Save translation" msgstr "Salvar tradução" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verifique a tradução" #: FTranslate.form:242 msgid "Verify" msgstr "Verificar" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Localizar próxima string traduzida" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Localizar string traduzida anterior" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Localizar string não traduzida anterior" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Localizar próxima string não traduzida" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Limpar esta tradução" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Esta string não deve ser traduzida" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Copiar string não traduzida" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importar todas as traduções recursivamente" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Substituir traduções existentes" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importar arquivo de tradução" #: FVersionControl.class:16 msgid "Do you want to push the repository?" msgstr "Você quer submeter o repositório?" # gb-ignore #: FVersionControl.class:16 msgid "Push" msgstr "" #: FVersionControl.form:51 msgid "There is nothing to commit." msgstr "Não há nada para commit." #: FVersionControl.form:81 msgid "Do not push to remote repository" msgstr "Não submeter ao repositório remoto" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Selecionar fonte" #: FWelcome.class:69 msgid "New project..." msgstr "Novo projeto..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Projetos recentes" #: FWelcome.class:73 Project.module:6324 msgid "Installed software" msgstr "Software instalado" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Bem-vindo ao Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anônimo" #: FarmRequest.class:125 msgid "No answer." msgstr "Sem resposta." #: FarmRequest.class:167 msgid "Register user" msgstr "Registrar usuário" #: FarmRequest.class:242 msgid "Publish project" msgstr "Publicar projeto" #: FarmRequest.class:363 msgid "Download software" msgstr "Baixar software" #: FarmRequest.class:389 msgid "Delete software" msgstr "Excluir software" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Africanês (Áfica do Sul)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Árabe (Egito)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Árabe (Tunisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbaijano (Azerbaijão)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Búlgaro (Bulgária)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalão (Catalúnia, Espanha)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Welsh (Reino Unido)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Tcheco (República Tcheca)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Dinamarquês (Dinamarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Alemão (Alemanha)" #: Language.module:35 msgid "German (Belgium)" msgstr "Alemão (Bélgica)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grego (Grécia)" #: Language.module:41 msgid "English (common)" msgstr "Inglês (comun)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Inglês (Reino Unido)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Inglês (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Inglês (Austrália)" #: Language.module:45 msgid "English (Canada)" msgstr "Inglês (Canadá)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Qualquer lugar!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Espanhol (comum)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Espanhol (Espanha)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Espanhol (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estoniano (Estônia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Basco (País Basco)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Irã)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finlandês (Finlândia)" #: Language.module:68 msgid "French (France)" msgstr "Francês (França)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francês (Bélgica)" #: Language.module:70 msgid "French (Canada)" msgstr "Francês (Canadá)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francês (Suíça)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galês (Espanha)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebraico (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (Índia)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Húngaro (Hungria)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croata (Croácia)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonésio (Indonésia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandês (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Islândico (Islândia)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiano (Itália)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonês (Japão)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Camboja)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Corano (Coréia)" #: Language.module:110 msgid "Latin" msgstr "Latin" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Lituano (Lituânia)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malaiala (Índia)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedônio (República da Macedónia)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Holandês (Holanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Holandês (Bélgica)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norueguês (Noruega)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Panjabi (Índia)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polonês (Polônia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Português (Portugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Português (Brasil)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valencian (Comunicade Valenciana, Espanha)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Romeno (Romania)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Russo (Rússia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovaco (Eslovênia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanês (Albânia)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Sérvio (Sérvia & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Sueco (Suécia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turco (Turquia)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ucraniano (Ucrânia)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamita (Vietnã)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Wallon (Bélgica)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Chinês simplificado (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Chinês tradicional (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Desconhecido" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Não é possível recuperar a senha." #: MConnection.module:91 msgid "Unable to save password." msgstr "Não é possível salvar a senha." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Não é possível criar a tabela '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Não é possível criar a tabela de metadados." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 não pode ser estático" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "desclaração &1 não corresponde" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 foi declarado mas não é uma função" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 não é uma estrutura" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 não foi delcarado" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 precisa ser estático" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: não está no arquivo" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: erro de sintaxe" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: erro de sintaxe no arquivo de formulário" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: muito contêiners aninhados" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' já foi declarado" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' está incorretamente sobrescrita na classe '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' não é uma propriedade" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' não é estático" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' é apenas leitura" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' é estático" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' é apenas escrita" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' ou ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Um módulo não pode disparar eventos" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Uma implementação de propriedade não pode ser pública" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Uma propriedade precisa ser pública" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Acesso proibido" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "O pseudônimo precisa ser uma string" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Expressão ambígua. Por favor utilize parênteses" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Argumento não pode ser passado por referência" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Arrays de estrutura não é suportado" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "Assertion falhou" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Arquivo inválido: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Argumento inválido" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Caractere constante inválido na string" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Tipo de constante inválida" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Manipulador de evento inválido em &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Expressão inválida: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Versão de arquivo de formulário inválido" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Formato inválido na seção:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Formato de string inválido" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Número de dimensões inválido" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Arquivo de projeto inválido: linha &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Expressão regular inválida: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Conversão de string inválida" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Intervalo inválido" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Uso inválido de classe virtual" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "String de versão inválida" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Não é possível alterar o diretório corrente para '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Não é possível criar o arquivo .startup" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Não é possível criar o arquivo de ação: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Não é possível criar o callback: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Não é possível criar as informações de classe: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Não é possível criar o arquivo: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Não é possível criar o arquivo temporário: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Não é possível encontrar a biblioteca dinâmica '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Não é possível encontrar o símbolo '&2' na biblioteca dinâmica '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Não é possível herdar de si mesmo" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Não é possível herdar duas vezes" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Não é possível instanciar tipos nativos" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Não é possível carregar a classe '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Não é possível carregar o componente '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Não é possível carregar o arquivo fonte: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Não é possível criar o executável: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Não é possível misturar NEW com arrays embutidos" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Não é possível misturar NEW e estruturas embutidas" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Não é possível abrir o arquivo '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Não é possível abrir o arquivo: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Não é possível disparar eventos em funções estáticas" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Não é possível ler o arquivo: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Não é possível registrar a classe '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Não é possível remover o arquivo '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Não é possível renomear o arquivo '&1' para '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Não é possível executar o processo filho: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Não é possível definir o dono do arquivo: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "Não é possível usar &1 duas vezes" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "Não é possível usar &1 com &2" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Não é possível utilizar o operador NEW ali" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "Classe '&1' não é instanciável" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Operador de comparação esperado" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "Nome do componente precisa ser uma string" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Componente não encontrado: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "String constante esperada" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Conteúdo já foi declarado" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Case padrão já definido" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Case padrão deve ser o último" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Dispositivo está cheio" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Diretório não está vazio" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Divisão por zero" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Símbolos dinâmicos não podem ser usados em funções estáticas" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Arrays embutidos não são permitidos aqui" #: MErrorMessage.module:90 msgid "End of file" msgstr "Final de arquivo" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Operador de igualdade ou desigualdade esperado" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Expressão muito complexa" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Expressão muito complexa. Muitos operandos" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "Nome de biblioteca externa precisa ser uma string" #: MErrorMessage.module:95 msgid "File already exists" msgstr "O arquivo já existe" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Arquivo é um diretório" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Arquivo está trancado" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Nome do arquivo é muito extenso" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Arquivo ou diretório não existe" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "GOSUB proibido" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "GOTO proibido" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Objeto livre referenciado" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Instrução ilegal" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Erro interno do compilador" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Atribuição inválida" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Data inválida" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Objeto inválido" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Caminho inválido" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() requer um argumento função" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Salto é muito longo" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Rótulo '&1' não declarado" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "O nome da biblioteca precisa ser uma string" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Variável de laço já está em uso" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "Variável de laço não pode ser um argumento" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "Variável de laço não pode ser global" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME não pode ser usado em uma função estática" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Erro matemático" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Faltando #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Faltando ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Faltando '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Faltando operador" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Faltando colchete direito" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "Vetor multidimensional" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW não pode conter argumentos passados por referência" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Sem método de instanciação" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Sem classe parente" #: MErrorMessage.module:127 msgid "No return value" msgstr "Sem valor de retorno" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Sem método de inicialização" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "String não terminada" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "Não é um diretório: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Não é uma função" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Não é um procedimento" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Não é um array" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Não é uma enumeração" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Não é um objeto" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Argumentos insuficientes para New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Argumentos insuficientes" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Argumentos insuficientes para &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Ainda não foi implementado" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Não suportado" #: MErrorMessage.module:141 msgid "Null object" msgstr "Objeto nulo" #: MErrorMessage.module:142 msgid "Number" msgstr "Número" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "esperado Número ou Data" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Número ou data" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Número, Data ou String" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Número, String ou Objeto" #: MErrorMessage.module:147 msgid "Object" msgstr "Objeto" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Fora de limite" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Memória insuficiente" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Fora de intervalo" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Esgotamento" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Sobrescrever uma classe já herdada é proibido" #: MErrorMessage.module:153 msgid "Read error" msgstr "Erro de leitura" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "Vetor somente para leitura" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Tipo de dado de retorno não especificado na declaração da função" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Instrução STOP econtrada" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER não pode ser usada sozinho" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Erro de serialização" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Estouro de pilha" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Tipo padrão" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Stream foi fechado" #: MErrorMessage.module:162 msgid "String expected" msgstr "String esperada" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Estruturas devem ser públicas" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Argumentos de subrotinas não podem ser passados por referência" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Erro de sintaxe" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Erro de sintaxe na declaração da função" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Erro de sintaxe no nome do evento" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Erro de sintaxe no modo de abertura do arquivo" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Erro de sintaxe no tipo de retorno" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Erro de sintaxe. &1 esperado" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Erro de sintaxe. '...' precisa ser o último argumento" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Erro de sintaxe. CASE ou DEFAULT esperado após o SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Erro de sintaxe. CLASS precisa de um identificador" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Erro de sintaxe. Não se pode usar esta sintaxe na atribuição" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Erro de sintaxe. INHERITS precisa de um nome de classe" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Erro de sintaxe. Identificador esperado" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "Erro de sintaxe. Identificador esperado para nome de propriedade" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "Erro de sintaxe. Identificador esperado para sinônimo de propriedade" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "Erro de sintaxe. Identificador esperado para variável de propriedade" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Erro de sintaxe. Identificador inválido no nome da função" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Erro de sintaxe. Parâmetro opcional inválido" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "Erro de sintaxe. Tipo de propriedade inválido" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Erro de sintaxe. Tipo de retorno inválido" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Erro de sintaxe. Tipo de descrição inválido para o argumento &1" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Erro de sintaxe. Tipo de descrição inválido para o campo &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Erro de sintaxe. Argumentos desnecessários" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Erro de sintaxe. Sintaxe de ponto utilizada fora de WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Erro de sintaxe. STRUCT precisa de uma identificador" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Erro de sintaxe. O argumento &1 não é um identificador válido" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Erro de sintaxe. O campo &1 não é um identificador válido" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Erro de sintaxe. VarPtr() aceita apenas um identificador" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Erro de sistema #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "O operador '!' precisa ser seguido por um identificador" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "O operador '.' precisa ser seguido por um identificador" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "A funão precisa ter um número fixo de argumentos" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "O método especial &1 não pode ser uma função" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "O método especial &1 não pode ser implementado" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "O método especial &1 não pode ser estático" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "O método especial &1 precisa ser uma função" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "O método especial &1 precisa ser público" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "O método especial &1 precisa ser estático" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "O método especial &1 precisa retonar um boleano" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "O método especial &1 precisa ter apenas um número variável de argumentos" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "O método especial &1 precisa ter pelo menos um argumento" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "O método especial &1 não pode ter argumentos" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "O método especial precisa retornar um integer" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "O método especial precisa ter exatamente um argumento" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "O método especial precisa ter exatamente dois argumentos" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "Assinatura do método especial incorreta" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Essa expressão não pode ser uma declaração" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Essa expressão não pode ser passada por referẽncia" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Muitos argumentos" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Muitos argumentos em &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Muitas declarações de array" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Muitas constantes" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Muitas classes diferentes usadas" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Muitas dimensões" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Muitas variáveis dinâmicas" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Muitos eventos" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Muitas expressões no CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Muitas funções externas" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Muitas funções" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Muitos #If...#Endif encadeados" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Muitos rótulos" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Muitas variáveis locais" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Muitas estruturas de controles encadeadas." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Muitas propriedades sinônimas" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Muitas string simultaneas novas" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Muitas variáveis estáticas" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Muitos símbolos desconhecidos" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Barra invertidas do final" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Tipo incompatível" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Tipo incompatível: esperado &1, mas econtrado &2" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Não é possível criar closure" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Não é possível obter a posição do arquivo" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Não é possível carregar o arquivo class" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Não é possível preparar a descrição da função" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "&1 inesperado" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Fim de arquivo inesperado" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "String inesperada" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "Classe '&1' desconhecida" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Erro desconhecido" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Extensão desconhecida" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Idendificador desconhecido: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Operador desconhecido" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Símbolo '&2' desconhecido na classe '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Usuário ou grupo desconhecido" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Tipo de dado não suportado" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Conversão de string não suportada" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "LOCK desnecessário" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "O argumento VarPtr() precisa ser dinâmico, estático ou uma variável local" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Identificador nulo" #: MErrorMessage.module:253 msgid "Void key" msgstr "Chave nula" #: MErrorMessage.module:254 msgid "Write error" msgstr "Erro de gravação" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "não é possível contrar o componente" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "não é possível encontrar a biblioteca" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "nome da classe escondida pela declaração global: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "nome da classe escondida pela declaração local: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "constante escondida pela declaração local: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "função externa escondida pela declaração local: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "função escondida pela declaração local: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "variável global escondida pela declaração local: &1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "inteiro e booleano misturados com operador '&1'" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "Variável global não inicializada: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "Variável não inicializada: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "erro desconhecido" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "argumento não utilizado: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "funão externa não utilizada: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "função não utilizada: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "variável global não utilizada: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "variável não utilizada: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "não é possível abrir um pseudo-terminal escravo: " #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "não é possível inicializar o pseudo-terminal: " #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "não é possível conectar a entrada padrão: " #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "não é possível conectar a saída padrão e erro padrão: " #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "não é possível rodar o executável: " #: MHelp.module:313 msgid "No help found." msgstr "Ajuda não econtrada." #: MHelp.module:1006 Wiki.module:799 msgid "This page does not exist." msgstr "Esta página não existe." #: MMime.module:17 msgid "Plain text" msgstr "Texto sem formatação" #: MMime.module:18 msgid "HTML text" msgstr "Texto HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Dados de formulário Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Dados de menus Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Caminho de arquivo de projeto Gambas" #: MMime.module:22 msgid "URI list" msgstr "Lista de URI" #: MMime.module:33 msgid "Unknown format" msgstr "Formato desconhecido" #: MTheme.module:6 msgid "Alternate background" msgstr "Alternar segundo plano" #: MTheme.module:6 msgid "Characters" msgstr "Caracteres" #: MTheme.module:6 msgid "Comments" msgstr "Comentários" #: MTheme.module:6 msgid "Current line" msgstr "Linha atual" #: MTheme.module:6 msgid "Data types" msgstr "Tipos de dados" #: MTheme.module:6 msgid "Editing line" msgstr "Editando linha" #: MTheme.module:6 msgid "Errors" msgstr "Erros" #: MTheme.module:6 msgid "Highlighting" msgstr "Destaque" #: MTheme.module:6 msgid "Keywords" msgstr "Palavras-chave" #: MTheme.module:6 msgid "Labels" msgstr "Rótulos" #: MTheme.module:6 msgid "Normal text" msgstr "Texto normal" #: MTheme.module:6 msgid "Numbers" msgstr "Números" #: MTheme.module:6 msgid "Operators" msgstr "Operadores" #: MTheme.module:6 msgid "Preprocessor" msgstr "Préprocessador" #: MTheme.module:6 msgid "Strings" msgstr "Strings" #: MTheme.module:6 msgid "Subroutines" msgstr "Sub-rotinas" #: MTheme.module:6 msgid "Symbols" msgstr "Símbolos" #: Package.module:83 msgid "'&1' is missing." msgstr "'&1' faltando." #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "'&1' e '&2' estão faltando." #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Salvando arquivo CHANGELOG." #: Package.module:733 msgid "Making &1 support package..." msgstr "Criando o pacote de suporte &1..." #: Package.module:788 msgid "Creating package for &1." msgstr "Criando pacotes para &1." #: Package.module:820 msgid "The package build has failed." msgstr "A montagem do pacote falhou." #: Package.module:892 msgid "Making build directory." msgstr "Criando diretório de construção." #: Package.module:951 msgid "Creating desktop file..." msgstr "Criando arquivo de área de trabalho..." #: Package.module:959 msgid "Sources are being debianizated." msgstr "Fontes foram debianizados." #: Package.module:1166 msgid "Creating package..." msgstr "Criando pacote..." #: Package.module:1174 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' falhou." #: Package.module:1454 msgid "Initializing ~/RPM directory." msgstr "Inicializando diretório ~/RPM." #: Package.module:1474 msgid "Creating source package." msgstr "Criando pacote de código-fonte." #: Package.module:1498 msgid "Creating .spec file." msgstr "Criando arquivo .spec." #: Package.module:1743 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' retornou o seguinte código de erro:" #: Package.module:2168 msgid "'tar' has returned the following error code:" msgstr "'tar' retornou o seguinte código de erro:" #: Package.module:2440 msgid "'makepkg' has failed." msgstr "'makepkg' falhou." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "O diretório não é um projeto Gambas" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "Formato de pacote de código fonte não suportado" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "Patch não se aplica:\n" #: Project.module:231 msgid "Automation" msgstr "Automação" #: Project.module:232 msgid "Basic" msgstr "Básico" #: Project.module:234 msgid "Drawing" msgstr "Desenho" #: Project.module:237 msgid "Miscellaneous" msgstr "Miscelânea" #: Project.module:238 msgid "Networking" msgstr "Redes" #: Project.module:239 msgid "OpenGL" msgstr "OpenGL" #: Project.module:241 msgid "Sound" msgstr "Som" #: Project.module:243 msgid "Controls" msgstr "Controles" #: Project.module:244 msgid "Multimedia" msgstr "Multimídia" # gb-ignore #: Project.module:245 msgid "Web" msgstr "" #: Project.module:422 msgid "File not found!" msgstr "Arquivo não econtrado!" #: Project.module:536 msgid "This project does not exist." msgstr "Este projeto não existe." #: Project.module:548 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "Não é possível encontrar o executável da IDE do Gambas no diretório:\n" "\n" "&1" #: Project.module:567 msgid "This is not a Gambas project." msgstr "Este não é um projeto Gambas." #: Project.module:570 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Este é um projeto Gambas 1.0. Utilize o Gambas 2 para converte-lo." #: Project.module:573 msgid "Convert" msgstr "Converter" #: Project.module:573 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Este é um projeto Gambas 2.0.\n" "\n" "Você deseja converte-lo?" #: Project.module:591 msgid "Do not open" msgstr "Não abrir" #: Project.module:591 msgid "Open after all" msgstr "Abrir depois de todos" #: Project.module:591 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Este projeto aparenta já estar aberto.\n" "\n" "Abrir o mesmo projeto duas vezes pode levar a perda de dados." #: Project.module:597 msgid "It cannot be converted." msgstr "Não pode ser convertido." #: Project.module:597 msgid "This project is read-only." msgstr "Este projeto é apenas leitura." #: Project.module:614 msgid "Copying project inside a temporary directory..." msgstr "Copiando o projeto dentro de um diretório temporário..." #: Project.module:617 msgid "Unable to create temporary directory" msgstr "Não é possível criar o diretório temporário" #: Project.module:647 msgid "Converting project structure..." msgstr "Convertendo estrutura do projeto..." #: Project.module:677 msgid "Applying conversion..." msgstr "Aplicando conversão..." #: Project.module:683 msgid "Unable to apply conversion" msgstr "Não é possível aplicar a conversão" #: Project.module:728 msgid "Cannot open project file :" msgstr "Não é possível abrir arquivo do projeto :" #: Project.module:728 msgid "This project has duplicated class files!" msgstr "Este projeto possui arquivos de classe duplicados!" #: Project.module:810 msgid "Some libraries used by the project are missing." msgstr "Algumas bibliotecas usadas por este projeto estão faltando." #: Project.module:892 msgid "Cannot reload file." msgstr "Não é possível recarregar o arquivo." #: Project.module:1696 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "VERSÃO ALPHA, USE POR SUA CONTA E RISCO!" #: Project.module:1698 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "VERSÃO DE DESENVOLVIMENTO, USE POR SUA CONTA E RISCO!" #: Project.module:2057 msgid "Cannot open a binary file." msgstr "Não é possível abrir o arquivo binário." #: Project.module:2095 msgid "Cannot open file." msgstr "Não é possível abrir o arquivo." #: Project.module:2253 msgid "&1th" msgstr "&1º" #: Project.module:2306 msgid "in form definition" msgstr "na definição do formulário" #: Project.module:2313 msgid "in &1." msgstr "em &1." #: Project.module:2474 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Algums arquivos fontes do projeto estão em conflito.\n" "Por favor resolva-os se você deseja compilar o projeto." #: Project.module:2478 msgid "Compiling project" msgstr "Compilando projeto" #: Project.module:2736 msgid "File already exists." msgstr "Arquivo já existe." #: Project.module:2769 msgid "Directory already exists." msgstr "Diretório já existe." #: Project.module:2781 msgid "Cannot link template file." msgstr "Não é possível fazer ligação de arquivos de modelo." #: Project.module:2787 msgid "Cannot copy template file." msgstr "Não é possível copiar o arquivo de template." #: Project.module:2993 msgid "The contents of VERSION file is incorrect." msgstr "O conteúdo do arquivo VERSION está incorreto." #: Project.module:3015 msgid "Cannot install library in &1." msgstr "Não é possível instalar biblioteca em &1." #: Project.module:3057 msgid "Making executable..." msgstr "Criando executável..." #: Project.module:3115 msgid "Cannot make executable." msgstr "Não é possível criar o executável." #: Project.module:3571 msgid "Some components are missing: &1" msgstr "Faltam alguns componentes: &1" #: Project.module:3774 msgid "Cannot write project file." msgstr "Não é possível gravar o arquivo de projeto." #: Project.module:3823 msgid "Unable to create desktop shortcut." msgstr "Não é possível criar o atalho de área de trabalho." #: Project.module:4088 msgid "The directory will be removed at the next commit." msgstr "O diretório será removido na próxima gravação." #: Project.module:4105 msgid "You must define a startup class or form!" msgstr "Você deve definir uma classe ou formulário inicial!" #: Project.module:4136 msgid "Please type a name." msgstr "Por favor digite um nome." #: Project.module:4140 msgid "This name contains a forbidden character:" msgstr "Este nome contém caracteres proibidos:" #: Project.module:4144 msgid "The name cannot begins with a dot." msgstr "O nome não pode iniciar com ponto." #: Project.module:4148 msgid "This name is already used. Choose another one." msgstr "Este nome já está em uso. Escolha um outro." #: Project.module:4184 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "O nome da classe deve iniciar com uma letra ou underscore, seguido de qualquer letra ou digito." #: Project.module:4227 msgid "Destination already exists." msgstr "Destino já existe." #: Project.module:4380 msgid "Unable to rename '&1'" msgstr "Não é possível renomear '&1'" #: Project.module:4496 msgid "Please type a project name." msgstr "Por favor digite um nome de projeto." #: Project.module:4504 msgid "The project name cannot begin with a dot." msgstr "O nome do projeto não pode iniciar com um ponto." #: Project.module:4507 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Não é permitido utilizar caracteres não-ASCII no nome do projeto." # gb-ignore #: Project.module:4508 msgid "SPACE" msgstr "" #: Project.module:4508 msgid "The following characters are forbidden in a project name:" msgstr "Os seguintes caracteres são proibidos em um nome de projeto:" #: Project.module:4515 msgid "This project already exists." msgstr "Este projeto já existe." #: Project.module:4518 msgid "The project directory already exists." msgstr "O diretório do projeto já existe." #: Project.module:4520 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "O diretório do projeto não pode ser criado por que um arquivo com o mesmo nome já existe." #: Project.module:4568 msgid "Unable to create source archive." msgstr "Não é possível criar o pacote de fontes." #: Project.module:4595 msgid "Create source package" msgstr "Criar pacote de código-fonte" #: Project.module:4882 msgid "Cannot copy file &1." msgstr "Não é possível copiar o arquivo &1." #: Project.module:4930 msgid "Cannot create link &1." msgstr "Não é possível criar o vínculo &1." #: Project.module:4945 msgid "Cannot move a directory inside itself." msgstr "Não é possível mover um diretório para dentro de si mesmo." #: Project.module:5009 msgid "Cannot move file &1." msgstr "Não é possível mover o arquivo &1." #: Project.module:5222 msgid "The following files couldn't be removed:" msgstr "Os seguintes arquivos não puderam ser removidos:" #: Project.module:5702 msgid "Project cleanup..." msgstr "Limpeza de projeto..." #: Project.module:5708 msgid "Project files conversion..." msgstr "Conversão de arquivos de projeto..." #: Project.module:5738 msgid "Unable to convert &1" msgstr "Não é possível coverter &1" #: Project.module:6018 msgid "Unable to update forms." msgstr "Não é possível atualizar os formulários." #: Project.module:6108 msgid "The &1 program is not installed on your system." msgstr "O programa &1 não está instalado no seu sistema." #: Project.module:6110 msgid "The following programs are not installed on your system: &1." msgstr "Os seguintes programas não estão instalados no seu sistema: &1." #: Project.module:6202 msgid "Unable to read component description file." msgstr "Não é possível ler o arquivo de descrição do componente." #: Project.module:6263 msgid "Cannot write component description file." msgstr "Não é possível gravar o arquivo de descrição de componente." #: Project.module:6324 msgid "Project templates" msgstr "Modelos do projeto" #: Project.module:6370 msgid "Unable to run terminal." msgstr "Não é possível executar o terminal." #: Save.module:57 msgid "Cannot save file !" msgstr "Não é possível salvar o arquivo !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Publicado &1" # gb-ignore #: Util.module:39 msgid "&1 B" msgstr "" # gb-ignore #: Util.module:41 msgid "&1 KiB" msgstr "" # gb-ignore #: Util.module:43 msgid "&1 MiB" msgstr "" # gb-ignore #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:139 msgid "Command timeout." msgstr "Tempo esgotado para o comando" #: VersionControl.module:139 msgid "Please check your network connection." msgstr "Por favor verifique sua conexão de rede." #: VersionControl.module:521 msgid "Do you really want to put this project under version control with &1?" msgstr "Você realmente deseja colocar este projeto sub controle de versão com &1?" #: VersionControl.module:535 msgid "The project could not be put under version control." msgstr "O projeto não pôde ser posto sub controle de versão." #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "Não é possível alternar para a ramificação `&1`." #: VersionControl.module:642 msgid "With &1" msgstr "Com &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Existem &1 classes e &2 símbolos em todos os componentes Gambas." #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "Esta página não existe nesse idioma." #: WikiMarkdown.class:142 msgid "Since" msgstr "Desde" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Este componente não existe." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Esta classe não existe." #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Este símbolo não existe." gambas-3.16.3/app/src/gambas3/.lang/ro.po000066400000000000000000004676371411575327000177350ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 #, fuzzy msgid "Static properties" msgstr "Sortează proprietățiile" #: CClassInfo.class:604 msgid "Static variables" msgstr "Variabile statice" #: CClassInfo.class:605 #, fuzzy msgid "Static methods" msgstr "Variabile statice" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Proprietăți" #: CClassInfo.class:624 msgid "Variables" msgstr "" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "doar-citire" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 msgid "static function" msgstr "" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "Se încarcă informații despre componenta &1..." #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Clase" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Clasă" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Descriere" #: CComponent.class:1667 #, fuzzy msgid "This component is not stable yet." msgstr "Acest proiect nu există." #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Acest proiect este doar-citire." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "Autori" #: CComponent.class:1690 msgid "Implements" msgstr "Implementări" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Necesități" #: CComponent.class:1717 msgid "Excludes" msgstr "Excluderi" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Clase native interne" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Desenare grafic" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Compresie & decompresie" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 #, fuzzy msgid "MD5/DES/SHA crypting" msgstr "Criptare MD5/DES" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "Acces bazădate" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Controale dependente de date" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "Driver bazădate MySQL" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "Driver bazădate ODBC" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "Driver bazădate PostgreSQL" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "Dtiver bazădate SQLite 2" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "Dtiver bazădate SQLite 3" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Ajutor depanator aplicație" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Evaluator expresie" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Mai multe controale pentru componente grafice." #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Dialoguri standard îmbunătățite" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Interfață Multi-Document" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 msgid "Terminal emulator" msgstr "" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 #, fuzzy msgid "GTK+2 toolkit" msgstr "Toolkit GTK+" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "GTK+3 toolkit" msgstr "Toolkit GTK+" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "Componentă comutare QT/GTK+" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "Componentă comutare QT/GTK+" #: CDocumentation.class:88 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "Componentă comutare QT/GTK+" #: CDocumentation.class:89 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "Componentă comutare QT/GTK+" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "Unelte XML bazate pe libxml" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "Programare de rețea" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "Management protocoale de nivel înalt rețea" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "Programare 3D cu OpenGL" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "Parser opțiuni comandă GNU" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "Potrivire Expresie Regulară compatibilă Perl" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "Aplicație randare PDF bazat pe librăria Poppler" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 #, fuzzy msgid "QT5 toolkit" msgstr "Toolkit GTK+" #: CDocumentation.class:125 #, fuzzy msgid "QT5 WebKit component" msgstr "Despre componentă" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 #, fuzzy msgid "QT5 toolkit extension" msgstr "Extensie toolkit GTK+" #: CDocumentation.class:128 msgid "Report designer" msgstr "Întocmitor de raport" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "Librărie SDL" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "Sunet SDL & management CD-ROM" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Componentă" #: CDocumentation.class:134 #, fuzzy msgid "SDL2 audio component" msgstr "Despre componentă" #: CDocumentation.class:135 msgid "Application settings management" msgstr "Mangement setări aplicație" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Management buclă evenimente" #: CDocumentation.class:138 #, fuzzy msgid "Graphical terminal applications development" msgstr "Aplicție grafică" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Despre componentă" #: CDocumentation.class:140 #, fuzzy msgid "Web applications utility component" msgstr "Unelte aplicații web" #: CDocumentation.class:141 msgid "Video capture" msgstr "Captură video" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "Compatibilitate Visual Basic" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "Protocol XML-RPC" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "Unelte aplicații web" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 #, fuzzy msgid "Web application development" msgstr "Unelte aplicații web" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "Management grafic formular" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "Management buclă evenimente" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "Afișaj OpenGL" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Prevede" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Formular" #: CModule.class:28 msgid "Forms" msgstr "Formulare" #: CModule.class:28 msgid "Gambas forms" msgstr "Formulare Gambas" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Formulare Gambas" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Formular" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Formulare" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Formulare Gambas" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Formular" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Formulare" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 #, fuzzy msgid "IDE extensions" msgstr "Extensie automată" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Anulează" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 #, fuzzy msgid "Unable to uninstall software:" msgstr "Nu se poate lipi textul." #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Proiectul a fost creat cu succes." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Proiect" #: CProjectTree.class:346 msgid "Sources" msgstr "" #: CProjectTree.class:348 msgid "Connections" msgstr "" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Date" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "" #: CRecentProject.class:70 msgid "Yesterday" msgstr "" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "Generează arhivă cu sursă" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "Următoarele clase au moșteniri circulare:" #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "Nu se poate salva proiectul." #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Nu se poate face executabilul." #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Nu se poate salva proiectul." #: CSoftware.class:663 msgid "yesterday" msgstr "" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 #, fuzzy msgid "Unable to push the project." msgstr "Nu se poate salva proiectul." #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Obiect curent" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Nu se poate crea proiectul!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Nu se poate crea proiectul!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Proiecte recente" #: CVersionControlGit.class:319 msgid "Status" msgstr "" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 #, fuzzy msgid "Remote repository URL" msgstr "Depozit" #: CVersionControlGit.class:373 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "Directorul va fi eliminat la urmatoarea operare." #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:411 #, fuzzy msgid "Solve conflict." msgstr "Rezolvă conflict cu" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 #, fuzzy msgid "Remote revision" msgstr "Înlătură toate expresiile" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "Proiectul a fost creat cu succes." #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Programul a returnat\n" "valoarea: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "Despre Gambas" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "" "

Licență

\n" "\n" "

Acest program este software liber (FREE SOFTWARE); poate fi distribuit ȘI/SAU modificat , cu respectarea prevederilor Licenței Publice Generale GNU (\"GNU General Public License\") , așa cum este aceasta publicată de către Fundația pentru Software Liber ( Free Software Foundation ); fie versiunea 2, sau (la alegere) oricare alta versiune ulteriară a licenței.

\n" "\n" "

Acest program deste distribuit în speranța că va fi util, dar FARĂ NICI O GARANȚIE; chiar și fara garanția implicită de vandabilitate sau CONFORMITATE UNUI ANUMIT SCOP. Vezi Licența Publică Generală GNU(\"GNU General Public License\") pentru mai multe detalii.

\n" #: FColorChooser.form:15 msgid "Select a color" msgstr "Selectează o culoare" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "Sistem" #: FColorChooser.form:35 msgid "Free" msgstr "Liber" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "Neterminat dar stabil" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "Aceste componente nu sunt compatibile:
&1." #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "Componenta &1 are nevoie de următoarele componente:
&2." #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "Componenta &1 are nevoie de componenta &2 ." #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Selectează un font" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Reîncarcă" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "Zoom in" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "Zoom out" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "&Editează" #: FConflict.class:14 #, fuzzy msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "Acest fișier este în conflict cu revizia #&1.\n" "Trebuie să rezolvi conflictul pentru a putea utiliza fișierul." #: FConflict.class:97 #, fuzzy msgid "Unable to load file:" msgstr "Nu se poate lipi textul." #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Text" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "Imagine" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Fișierul a fost modificat.\n" "Ești sigur că vrei să închizi căseta de dialog?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Unele conflicte sunt încă nerezolvate." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Nu se poate rezolva conflictul." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Fișierul a fost modificat.\n" "Ești sigur că vrei să deschizi un alt fișier?" #: FConflict.class:267 msgid "Conflict files" msgstr "Fișiere conflictuale" #: FConflict.form:31 msgid "Version conflict" msgstr "Conflict versiune" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Taie" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Copiază" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Lipește" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Desfă" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Refacere" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Aliniat" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "Dealinează" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Deschide" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Salvează" #: FConflict.form:160 msgid "Solve" msgstr "Resolvă" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Închide" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "(Declarații)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "Comentariu" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Decomentează" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "Lipește special" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Selectează Toate" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Du-te la linia" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "Caută următoarea" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "Caută precedenta" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Aspect" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 #, fuzzy msgid "Automatic word wrap" msgstr "Automatizare" #: FConflictEditor.form:233 FTextEditor.form:284 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "Fără divizare" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "Divizare orizontală" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "Divizare verticală" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "Deschide " #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Cod" #: FConflictEditor.form:377 #, fuzzy msgid "Conflict solved" msgstr "Fișiere conflictuale" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Conflict versiune" #: FConflictEditor.form:518 #, fuzzy msgid "Next conflict" msgstr "Conflict versiune" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Nume" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tip" #: FConnectionEditor.class:61 msgid "Length" msgstr "" #: FConnectionEditor.class:66 msgid "Default value" msgstr "" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Compilare" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Index" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "" #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Înlătură" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Renumește" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "Import" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Adaugă" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Nou" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Eliberează" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Export" #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Șterge" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Selectează toate" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "Deselectează toate" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 #, fuzzy msgid "Unable to send bug report." msgstr "Nu se poate lipi textul." #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "Programul a returnat\n" "valoarea: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 #, fuzzy msgid "Gambas interpreter crash" msgstr "Adresă fișier proiect Gambas" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "(Nici un părinte)" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "Nu se poate adăuga fișierul." #: FCreateFile.form:37 msgid "New file" msgstr "Nou fișier" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Opțiuni" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Lățime" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Înălțime" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Management casete-dialog" #: FCreateFile.form:155 msgid "Parent class" msgstr "Clasă părinte" #: FCreateFile.form:168 msgid "Exported" msgstr "Exportat" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "Extensie automată" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "Netraductibil" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Extensie automată" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Checkout-ul proiectului a eșuat." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Nu se poate crea proiectul!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Te rog alege o locație pentru meniu." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Te rog să scrii locația depozitului." #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Nou proiect" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Director" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Proprieteți proiect" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Proiectul este traductibil" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "Deschide în altă fereastră" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Depozit" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Consolă" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Puncte de întrerupere" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 #, fuzzy msgid "Search result" msgstr "Listă căutări" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "nedisponibil" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Valoare" #: FDebugExpr.class:508 msgid "Key" msgstr "Cheie" #: FDebugExpr.class:514 msgid "Symbol" msgstr "Simbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Urmărire" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "Detașează consolă" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Linie" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Fișier" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "" #: FDebugInfo.class:126 msgid "native code" msgstr "cod nativ" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Urmărire expresie" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Vrei să eliberezi lista de expresii ?" #: FDebugInfo.class:1070 #, fuzzy msgid "File not loaded" msgstr "Fișierul nu a fost găsit!" #: FDebugInfo.class:1209 msgid "Current object" msgstr "Obiect curent" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "Variabile locale" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "Depanare" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "Înlătură expresie curentă" #: FDebugInfo.form:124 msgid "Add expression" msgstr "Adaugă expresie" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "Înlătură toate puncte de întrerupere" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Comutare punct de întrerupere" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Variabilă" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Comutare punct de întrerupere" #: FDebugInfo.form:201 #, fuzzy msgid "Enable" msgstr "Executabil" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "Înlătură toate puncte de întrerupere" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "Șirul căutat nu poate fi găsit." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "Operare" #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:379 FMain.form:508 #, fuzzy msgid "Revert all changes" msgstr "Înlătură toate puncte de întrerupere" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Du-te la" #: FEditor.form:243 msgid "Find definition" msgstr "Caută definiție" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Execută până la linie curentă" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Comutare punct de întrerupere" #: FEditor.form:314 msgid "Watch expression" msgstr "Urmărire expresie" #: FEditor.form:323 msgid "Open form" msgstr "Deschide formular" #: FEditor.form:330 FMain.form:1067 #, fuzzy msgid "Run this class" msgstr "Clasă părinte" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Editor" #: FEditor.form:523 FTextEditor.form:507 msgid "Insert special character" msgstr "" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Utilizator" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Parolă" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Te rog să îți scrii adresa de e-mail." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Nu se poate lipi textul." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Continuă" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "Ești pe cale să îți anulezi modificările!" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Module" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 #, fuzzy msgid "Undo changes" msgstr "Detașează consolă" #: FFontChooser.form:12 msgid "Select a font" msgstr "Selectează un font" #: FForm.class:134 msgid "Bad form file" msgstr "Fișier formular defect" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Format necunoscut" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Nu se poate face executabilul." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Selectează" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Selectează un font" #: FForm.form:239 msgid "Arrangement" msgstr "Aranjament" #: FForm.form:243 msgid "Bring to foreground" msgstr "Adu în față" #: FForm.form:250 msgid "Send to background" msgstr "Trimite în spate" #: FForm.form:260 msgid "Horizontal" msgstr "Orizontală" #: FForm.form:267 msgid "Rows" msgstr "Rânduri" #: FForm.form:273 msgid "Vertical" msgstr "Vertical" #: FForm.form:280 msgid "Columns" msgstr "Coloane" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Aliniere" #: FForm.form:305 msgid "Align to left" msgstr "Aliniază stânga" #: FForm.form:311 msgid "Align to right" msgstr "Aliniază dreapta" #: FForm.form:317 msgid "Align to top" msgstr "Aliniază sus" #: FForm.form:323 msgid "Align to bottom" msgstr "Aliniază jos" #: FForm.form:332 msgid "Same width" msgstr "Aceeași lățime" #: FForm.form:338 msgid "Same height" msgstr "Aceeași înălțime" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "Mută tab" #: FForm.form:360 msgid "First" msgstr "Primul" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Anterior" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Următor" #: FForm.form:381 msgid "Last" msgstr "Ultim" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Editor meniu" #: FForm.form:401 msgid "Event" msgstr "Eveniment" #: FForm.form:415 #, fuzzy msgid "Run this form" msgstr "Execută această comandă după" #: FForm.form:568 msgid "Toggle grid" msgstr "Comutare grilă" #: FForm.form:577 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "" #: FForm.form:696 msgid "Move tab first" msgstr "Mută tab la început" #: FForm.form:703 msgid "Move tab left" msgstr "Mută tab stanga" #: FForm.form:710 msgid "Move tab right" msgstr "Mută tab dreapta" #: FForm.form:717 msgid "Move tab last" msgstr "Mută tab la sfârșit" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "" #: FForm.form:753 msgid "Italic" msgstr "" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Fundal" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 #, fuzzy msgid "Lock / unlock form" msgstr "Blochează formular" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Ierarhie" #: FFormStack.form:24 msgid "Move top" msgstr "Mută sus" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Mută în sus" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Mută în jos" #: FFormStack.form:42 msgid "Move bottom" msgstr "Mută jos" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "Limbă predefinită" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Ajutor navigator" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Înapoi" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "" #: FHelpBrowser.form:120 msgid "Print" msgstr "" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 #, fuzzy msgid "Debugger" msgstr "Depanare" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Traducere" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Răsturnare orizontală" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Răsturnare verticală" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Rotește antiorar" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Rotește orar" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Selecție" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Preferințe" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Selecție" #: FImageEditor.form:283 #, fuzzy msgid "Exclusive or" msgstr "Excluderi" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Desenează" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Dreptunghi" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipsă" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "px" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 #, fuzzy msgid "Select gradient stop color" msgstr "Selectează o culoare" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 msgid "Colorize" msgstr "" #: FImageProperty.form:399 #, fuzzy msgid "Desaturate" msgstr "Caracteristici" #: FImageProperty.form:407 #, fuzzy msgid "Make transparent" msgstr "Salvează traducere" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Linie" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Linie" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Dimensiune" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Traducere" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Reset" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 #, fuzzy msgid "Right align" msgstr "Evidențiere" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Clase Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Module gambas" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "Fișiere HTML" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Fișiere poză" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Nu se poate deschide fișierul." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importă temă" #: FImportFile.form:24 #, fuzzy msgid "Create symbolic links" msgstr "Creează un link simbolic" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Toate fișierele" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "" #: FImportTable.form:79 msgid "Charset" msgstr "" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Ediează listă proprietăți" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Revenire" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Ești sigur că vrei să ștergi acest director ?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Nu se poate șterge fișierul sau directorul" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "Sortează după adresă" #: FMain.class:751 msgid "&Clear history" msgstr "&Eliberează istoria" #: FMain.class:935 msgid "New folder" msgstr "Nou director" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "Uneltele de traducere GNU nu sunt instalate pe sistemul tău.\n" "\n" "Te rog să le instalezi pentru a putea efectua traducerea." #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "Toate asigurările sau fișierele generate vor fi șterse din directorul proiectului." #: FMain.class:1847 msgid "Clean" msgstr "Curățare" #: FMain.class:2164 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Ești sigur că vrei să ștergi acest director ?" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Fișierul a fost modificat.\n" "\n" "Toate modificările se vor pierde." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Argumente" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Deschide proiect" #: FMain.form:289 msgid "Open recent" msgstr "Deschide recent" #: FMain.form:297 msgid "Open example" msgstr "Deschide exemplu" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Salvează proiect" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Salvează proiect drept" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Selectează un proiect" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Ieșire" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Salvează" #: FMain.form:418 msgid "Compile" msgstr "Compilează" #: FMain.form:425 msgid "Compile All" msgstr "Compilează Toate" #: FMain.form:435 msgid "Translate" msgstr "Traducere" #: FMain.form:444 msgid "Make" msgstr "Generează" #: FMain.form:448 msgid "Executable" msgstr "Executabil" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "Arhivă Sursă" #: FMain.form:462 msgid "Installation package" msgstr "Instalare pachet" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "Curățare" #: FMain.form:546 msgid "Refresh" msgstr "Reîncarcă" #: FMain.form:568 msgid "Run" msgstr "Execută" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Argumente" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 #, fuzzy msgid "GUI component" msgstr "Componentă" #: FMain.form:615 #, fuzzy msgid "Current desktop" msgstr "Obiect curent" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Pauză" #: FMain.form:658 msgid "Stop" msgstr "Stop" #: FMain.form:665 msgid "Step" msgstr "Pas" #: FMain.form:672 msgid "Forward" msgstr "Îninte" #: FMain.form:679 msgid "Finish" msgstr "Terminare" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "Eliberează toate punctele de întrerupere" #: FMain.form:699 msgid "Close all debug windows" msgstr "Închide toate depanare ferestrele" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Închide toate ferestrele" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "" #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Înlocuiește" #: FMain.form:796 msgid "Browse project" msgstr "Navighează proiect" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Preferințe" #: FMain.form:854 msgid "Directory" msgstr "Director" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Modul" #: FMain.form:927 msgid "HTML file" msgstr "Fișier HTML" #: FMain.form:934 msgid "Style sheet" msgstr "Foi de stil" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "Altele" #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Recent" #: FMain.form:981 #, fuzzy msgid "Open in file manager" msgstr "Management fișiere cu setări" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Deschide proiect" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "Copiază adresă fișier" #: FMain.form:1060 msgid "Startup class" msgstr "Clasă Pornire" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Salvează fișierele modificate" #: FMain.form:1098 #, fuzzy msgid "Show files in conflict" msgstr "Conflict versiune" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Netraductibil" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Indicii de zi" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Proprieteți proiect" #: FMain.form:1311 msgid "Refresh project" msgstr "Reîncarcă proiect" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Generează executabil" #: FMain.form:1353 msgid "Make source archive" msgstr "Generează arhivă cu sursă" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "Generează pachet de instalare" #: FMain.form:1382 msgid "Properties sheet" msgstr "Foaie proprietăți" #: FMain.form:1391 msgid "Toolbox" msgstr "Casetă unelte" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "" #: FMain.form:1433 msgid "Compile all" msgstr "Compilează toate" #: FMain.form:1476 msgid "Finish current function" msgstr "Termina funcția curentă" #: FMain.form:1492 #, fuzzy msgid "Show menubar" msgstr "Arată numere de linii" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Fișier" #: FMain.form:1606 msgid "&Project" msgstr "&Proiect" #: FMain.form:1618 msgid "&Debug" msgstr "&Depanare" #: FMain.form:1630 msgid "&View" msgstr "&Aspect" #: FMain.form:1642 msgid "&Tools" msgstr "&Unelte" #: FMain.form:1654 msgid "&?" msgstr "&?" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Aplicații Gambas" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "Execută această comandă după" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) va fi înlocuit de adresa executabilului" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Pastrează informațiile de depanare în executabil" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "Creează o scurtătură pe desktop" #: FMakeInstall.class:123 msgid "Package" msgstr "" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Se crează pachet..." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Pachetele au fost create cu succes." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Te rog să îți scrii numele." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Te rog să îți scrii adresa de e-mail." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Te rog sa scrii un nume de meniu." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "Nu există nici o intrare tip jurnal de modificări (CHANGELOG) pentru această versiune." #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Te rog să scrii prima intrare în jurnalul de modificări (CHANGELOG)." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "Te rog alege cel puțin o distribuție țintă." #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "Te rog alege grupul de pachete pentru fiecare distribuție țintă." #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "Te rog alege un grup de pachete." #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "Te rog alege locația meniului pentru fiecare distribuție țintă." #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "Te rog alege o locație pentru meniu." #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "Pachetul nu poate fi stocat înăuntrul directorului de proiect." #: FMakeInstall.class:518 msgid "Initial release" msgstr "Versiune inițială" #: FMakeInstall.class:778 msgid "Menus" msgstr "Meniuri" #: FMakeInstall.class:846 msgid "Groups" msgstr "Grupuri" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "Nume pachet" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "Nume vânzător" #: FMakeInstall.form:214 FOption.form:380 #, fuzzy msgid "Vendor prefix" msgstr "Nume vânzător" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "Informații despre responsabilul de mentenanță" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "" #: FMakeInstall.form:317 msgid "Changelog" msgstr "" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "Categorii" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "Creează directoare pentru fiecare distribuție" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Creează pachet cu sursă" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Pachete sursă" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "Te rog sa scrii un nume de meniu." #: FMenu.class:318 msgid "Bad menu name !" msgstr "Nume meniu defect !" #: FMenu.class:324 msgid "Bad group name !" msgstr "Nume grup defect !" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Meniul este prea adânc !" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "modificat" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "Separare a procedurilor" #: FMenu.form:100 msgid "Insert menu before" msgstr "" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Inserează" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Șterge" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Apasă pe Inserează pentru a adăuga un nou meniu." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Bazădate" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Bazădate" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "" #: FNewConnection.form:124 msgid "Path" msgstr "" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Parolă" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "Bazădate" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "Traducere nouă" #: FOpenProject.form:22 msgid "Select a project" msgstr "Selectează un proiect" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Exemple" #: FOption.class:4 msgid "Amber" msgstr "Chihlimbar" #: FOption.class:4 msgid "Amethyst" msgstr "Ametist" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Smarald" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidian" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Lipește" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "Ruby" #: FOption.class:4 msgid "Sapphire" msgstr "Safir" #: FOption.class:4 msgid "Visual" msgstr "Vizual" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Desktop" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "(Predefinit)" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "Fișiere cu temă de culoare Gambas" #: FOption.class:237 msgid "Export a theme file" msgstr "Exportă un fișier temă" #: FOption.class:462 msgid "Select a theme file" msgstr "Selecetază fișier cu temă" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "Trebuie să repornești aplicația pentru a vedea modificările." #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Nu se poate crea scurtătură desktop." #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 #, fuzzy msgid "Network is not available." msgstr "nedisponibil" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Nu se poate copia fișierul &1." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 #, fuzzy msgid "Unable to install documentation." msgstr "Nu se poate lipi textul." #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Aliniat" #: FOption.form:352 #, fuzzy msgid "Package maintainer" msgstr "Nume pachet" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Limbă predefinită" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Nu" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Da" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Proiect" #: FOption.form:458 msgid "Default tab size" msgstr "Dimensiune tab predefinită" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "spațiu(ii)" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 #, fuzzy msgid "Activate version control" msgstr "Controale dependente de date" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Imagine" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Extensie automată" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Fișiere de traducere" #: FOption.form:653 msgid "Interface" msgstr "Interfață" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Arată ponturi" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "Dimensiuni casetă unelte" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "" #: FOption.form:778 msgid "Small" msgstr "" #: FOption.form:790 msgid "Sort properties" msgstr "Sortează proprietățiile" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "Comenzi externe tăcute" #: FOption.form:867 msgid "Fonts" msgstr "" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 msgid "Debugger size" msgstr "" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Folosește font fix" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 msgid "Themes" msgstr "" #: FOption.form:1087 msgid "Icon theme" msgstr "Temă pictograme" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Evidențiere" #: FOption.form:1117 msgid "Import theme" msgstr "Importă temă" #: FOption.form:1123 msgid "Export theme" msgstr "Exportă temă" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Evidențiează linia curentă" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "Evidențiează liniile modificate" #: FOption.form:1230 msgid "Show line numbers" msgstr "Arată numere de linii" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "Separare a procedurilor" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 msgid "Show Preview" msgstr "" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 #, fuzzy msgid "Local variable declaration" msgstr "Variabile locale" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Comentarii" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Închide toate ferestrele" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "Afișează ajutor proprietate" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 #, fuzzy msgid "Documentation" msgstr "Automatizare" #: FOption.form:1667 msgid "Use offline documentation" msgstr "" #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "" #: FOption.form:1755 msgid "Browser" msgstr "Navigator" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Consolă - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Detașează consolă" #: FOutput.form:72 msgid "Keep above" msgstr "Păstrează deasupra" #: FOutput.form:78 msgid "Clear console" msgstr "Eliberează consola" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Deschide recent" #: FOutput.form:130 msgid "Use system charset" msgstr "Folosește set caractere ale sistemului" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Nu se poate lipi textul." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Conținut mapă memorie" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Lipește normal" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Lipește cu PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Revenire" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Nu se poate redenumi '&1'" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:159 msgid "Variable" msgstr "Variabilă" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Pasul grilei de ghidaj este incorect" #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Executabil" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 #, fuzzy msgid "Information about component" msgstr "Se încarcă informații despre componenta &1..." #: FProjectProperty.class:964 #, fuzzy msgid "Information about library" msgstr "Informație" #: FProjectProperty.class:1454 #, fuzzy msgid "Select a Gambas executable" msgstr "Nu se poate face executabilul." #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Generează executabil" #: FProjectProperty.form:267 msgid "General" msgstr "General" #: FProjectProperty.form:304 msgid "Component" msgstr "Componentă" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:311 #, fuzzy msgid "Vendor" msgstr "Nume vânzător" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Versiune" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Titlu" #: FProjectProperty.form:389 msgid "Information" msgstr "Informație" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "Terminat și stabil" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 #, fuzzy msgid "Include information from" msgstr "Informație" #: FProjectProperty.form:484 #, fuzzy msgid "Required features" msgstr "Necesități" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 #, fuzzy msgid "Require" msgstr "Necesități" #: FProjectProperty.form:567 #, fuzzy msgid "Exclude" msgstr "Excluderi" #: FProjectProperty.form:579 msgid "Remove All" msgstr "Înlătură toate" #: FProjectProperty.form:586 msgid "Components" msgstr "Componente" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Preferințe" #: FProjectProperty.form:664 msgid "Environment" msgstr "Mediu de lucru" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Inserează" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Argumente" #: FProjectProperty.form:746 msgid "Edition" msgstr "Ediție" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Dimensiune tab" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Compilare" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "Simbolurile modulelor sunt publice predefinit." #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Controalele formularului sunt publice" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Această linie și următoarele vor fi ignorate" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "Nu s-a putut efectua operarea de proiect." #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Actualizează" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Caractere interzise in numele controlului." #: FProperty.class:389 msgid "This name is already in use." msgstr "Numele este folosit deja." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Caractere intezise înn umele grupul de controale." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Valoare a proprietății incorectă." #: FProperty.class:637 msgid "The name of the control." msgstr "Numele controlului." #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "Grupul de evenimente de care aparține controlul." #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Dacă dimensiunile formularelor și controalelor trebuie să urmeze dimensiunile fontului predefinit." #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Nimic" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Proiectul a fost creat cu succes." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "Nu se poate salva proiectul." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Valoare a proprietății incorectă." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Ești sigur că vrei să reîncarci această traducere ?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Selecetază fișier cu temă" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Fișiere poză" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Descriere" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Dimensiune tab" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Salvează fișierele modificate" #: FSave.form:42 msgid "Save All" msgstr "" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Nu se poate salva proiectul." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "Șirul căutat înlocuit o singură dată." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "Șirul căutat înlocuit &1 ori." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "" #: FSearch.form:104 msgid "Case sensitive" msgstr "" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Tipuri de date" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "Înlocuiește toate" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Evidențiere" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Selectează o poză" #: FSelectIcon.form:41 msgid "Stock" msgstr "Stoc" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Necunoscut" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Selectează o culoare" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Jocuri" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Ediție" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "Video" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Interfață" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Expresie" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 #, fuzzy msgid "No software found." msgstr "Nu a fost găsit ajutor" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Anulează" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Nu se poate redenumi '&1'" #: FSoftwareFarm.class:557 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "Proiectul a fost creat cu succes." #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Nu se poate redenumi '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "Proiectul a fost creat cu succes." #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Nu se poate redenumi '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Proiectul a fost creat cu succes." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Ești sigur că vrei să ștergi acest fișier ?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Nu se poate redenumi '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Formulare Gambas" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Deschide recent" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Arată ponturi" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Arată ponturi" #: FSoftwareFarm.form:393 msgid "Download" msgstr "" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Ediează listă proprietăți" #: FText.form:29 msgid "Use a fixed font" msgstr "Folosește font fix" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 #, fuzzy msgid "Sort ascent" msgstr "Sortează după adresă" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Nu se poate citi indiciul de zi !" #: FTips.form:66 msgid "Show tips on startup" msgstr "Arată indicii la pornire" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Proiectul este gol. Nu este nimic de tradus." #: FTranslate.class:74 msgid "Language" msgstr "Limbă" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Netraductibil" #: FTranslate.class:167 msgid "Translation files" msgstr "Fișiere de traducere" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Nu se poate citi fișierul de traducere pentru limba '&1'" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Nu se poate salva traducerea." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Ești sigur că vrei să ștergi această traducere ?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Ești sigur că vrei să reîncarci această traducere ?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Exportă o traducere" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Nu se poate importa fișierul de traducere." #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Totul pare a fi corect." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Simbolurile șir traduse nu se potrivesc cu cele șir netraduse." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Nu se poate importa fișierul de traducere." #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Ești sigur că vrei să ștergi această traducere ?" #: FTranslate.form:76 msgid "Project translation" msgstr "Traducere proiect" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Extensie automată" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "Salvează traducere" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Verifică treaducerea" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Caută urmatorul șir netradus" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Caută precedentul șir netradus" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "Caută precedentul șir netradus" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Caută urmatorul șir netradus" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Eliberează această traducere" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Acest șir nu trebuie să fie tradus" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Copiază șir netradus" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Eliberează această traducere" #: FTranslate.form:472 msgid "Import a translation file" msgstr "Importă un fișier cu traducere" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Vrei să eliberezi lista de expresii ?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "There is nothing to commit." msgstr "Nu s-a putut efectua operarea de proiect." #: FVersionControl.form:61 #, fuzzy msgid "Do not push to remote repository" msgstr "Te rog să scrii locația depozitului." #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Selectează un font" #: FWelcome.class:68 msgid "New project..." msgstr "Nou proiect..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Proiecte recente" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Proiect Gambas" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabică (Egipt)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabică (Tunisia)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbaidjană (Azerbaidjan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgară (Bulgaria)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Catalană (Catalonia, Spania)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Galeză (Marea Britanie)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Cehă (Cehia)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Daneză (Danemarca)" #: Language.module:34 msgid "German (Germany)" msgstr "Germană (Germania)" #: Language.module:35 msgid "German (Belgium)" msgstr "Germană (Belgia)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Greacă (Grecia)" #: Language.module:41 msgid "English (common)" msgstr "Engleză (general)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Engleză (Marea Britanie)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Engleză (Statele Unite)" #: Language.module:44 msgid "English (Australia)" msgstr "Engleză (Australia)" #: Language.module:45 msgid "English (Canada)" msgstr "Engleză (Canada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Oriunde!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Engleză (general)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spaniolă (Spania)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spaniolă (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonă (Estonia)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Bască (Țara Bascilor)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Persană (Iran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finlandeză (Finlanda)" #: Language.module:68 msgid "French (France)" msgstr "Franceză (Franța)" #: Language.module:69 msgid "French (Belgium)" msgstr "Franceză (Belgia)" #: Language.module:70 msgid "French (Canada)" msgstr "Franceză (Canasa)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Franceză (Elveția)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galiciană (Spania)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Ebraică (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindusă (India)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Maghiară (Ungaria)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Croată (Croația)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indoneziană (Indonezia)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irlandeză (Irlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italiană (Italia)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japoneză (Japonia)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmeră (Cambogia)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Coreeană (Coreea)" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (India)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Macedoneană (Macedonia)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Olandeză (Olanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Olandeză (Belgia)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norvegiană (Norvegia)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (India)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Poloneză (Polonia)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugheză (Portugalia)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugheză (Brazilia)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valenciană (Comunitatea Valenciană, Spania)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Română (România)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Rusă (Rusia)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovenă (Slovenia)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albaneză (Albania)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Sârbă (Serbia & Muntenegru)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Suedeză (Suedia)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turcă (Turcia)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Ucraineană (Ucraina)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnameză (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valonă (Belgia)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Chineză simplificată (China)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Chineză tradițională (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Necunoscut" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 #, fuzzy msgid "Component name must be a string" msgstr "Programare componentă" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 #, fuzzy msgid "Too many local variables" msgstr "Variabile locale" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "Nu a fost găsit ajutor" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Acest proiect nu există." #: MMime.module:17 msgid "Plain text" msgstr "Text brut" #: MMime.module:18 msgid "HTML text" msgstr "Text HTML" #: MMime.module:19 msgid "Gambas form data" msgstr "Date formular Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "Adresă fișier proiect Gambas" #: MMime.module:22 msgid "URI list" msgstr "Listă URI" #: MMime.module:33 msgid "Unknown format" msgstr "Format necunoscut" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Comentarii" #: MTheme.module:6 msgid "Current line" msgstr "Linie curentă" #: MTheme.module:6 msgid "Data types" msgstr "Tipuri de date" #: MTheme.module:6 msgid "Editing line" msgstr "Linie editare" #: MTheme.module:6 msgid "Errors" msgstr "" #: MTheme.module:6 msgid "Highlighting" msgstr "Evidențiere" #: MTheme.module:6 msgid "Keywords" msgstr "Cuvinte cheie" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Text normal" #: MTheme.module:6 msgid "Numbers" msgstr "Numere" #: MTheme.module:6 msgid "Operators" msgstr "Operatori" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Șiruri" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutine" #: MTheme.module:6 msgid "Symbols" msgstr "Simboluri" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Salvează fișier jurnal de modificări (CHANGELOG)." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Se creează pachet pentru &1." #: Package.module:744 msgid "The package build has failed." msgstr "Generarea pachetului a eșuat." #: Package.module:812 msgid "Making build directory." msgstr "Se crează directorul de generare." #: Package.module:867 msgid "Creating desktop file..." msgstr "Se creează fișier desktop..." #: Package.module:875 msgid "Sources are being debianizated." msgstr "Sursele se debian-izează" #: Package.module:1080 msgid "Creating package..." msgstr "Se crează pachet..." #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' a dat-o în bară." #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Inițializare director ~/RPM." #: Package.module:1390 msgid "Creating source package." msgstr "Se creează pachet cu sursă." #: Package.module:1414 msgid "Creating .spec file." msgstr "Se creează fișier .spec ." #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' a returnat următorul cod de eroare:" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "'tar' a returnat următorul cod de eroare:" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "Automatizare" #: Project.module:228 msgid "Basic" msgstr "-" #: Project.module:230 msgid "Drawing" msgstr "Desen" #: Project.module:233 msgid "Miscellaneous" msgstr "Diverse" #: Project.module:234 msgid "Networking" msgstr "Rețelistică" #: Project.module:235 msgid "OpenGL" msgstr "OpenGL" #: Project.module:236 msgid "Printing" msgstr "Se printează" #: Project.module:237 msgid "Sound" msgstr "Sunet" #: Project.module:239 msgid "Controls" msgstr "Controale" #: Project.module:240 msgid "Multimedia" msgstr "" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "Fișierul nu a fost găsit!" #: Project.module:518 msgid "This project does not exist." msgstr "Acest proiect nu există." #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Nu deschide" #: Project.module:573 msgid "Open after all" msgstr "Deschide oricum" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Acest proiect pare sa fie deja deschis.\n" "\n" "Deschizând același proiect de două ori poate duce la pierderi de date." #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Acest proiect este doar-citire." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Nu se poate deschide fișierul proiectului :\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Nu se poate adăuga fișierul." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Nu se poate deschide fișierul." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "în definiția formularului" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Unele fișiere sursă din proiect sunt în conflict .\n" "Te rog să le rezolvi pentru a putea compila proiectul." #: Project.module:2464 msgid "Compiling project" msgstr "Se compilează proiectul" #: Project.module:2715 msgid "File already exists." msgstr "Fișierul există deja." #: Project.module:2747 msgid "Directory already exists." msgstr "Directorul există deja." #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Nu se poate copia fișierul șablon." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 #, fuzzy msgid "Cannot install library in &1." msgstr "Nu se poate crea link-ul &1." #: Project.module:3031 msgid "Making executable..." msgstr "Se generează executabilul..." #: Project.module:3083 msgid "Cannot make executable." msgstr "Nu se poate face executabilul." #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Unele componente lipsesc: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Nu se poate scrie fișierul proiectului." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "Nu se poate crea scurtătură desktop." #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "Directorul va fi eliminat la urmatoarea operare." #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Trebuie să definești o clasă de pornire sau un formular!" #: Project.module:4080 msgid "Please type a name." msgstr "Te rog să scrii un nume." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "Numele conține un caracter interzis:" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "Numele este folosit deja. Alegeți un altul." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Un nume de clasă trebuie să înceapa cu un underscore, urmat de orice literă sau cifră." #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Nu se poate redenumi '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Te rog să scrii un nume de proiect." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "Numele proiectului nu poate începe cu punct." #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Caractere non-ASCII sunt interzise în numele proiectului." #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "Următoarele caractere sunt interzise ăn numele unui proiect: ? * / \\ SPACE" #: Project.module:4488 msgid "This project already exists." msgstr "Acest proiect există deja." #: Project.module:4491 msgid "The project directory already exists." msgstr "Directorul proiectului există deja." #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Directorul proiectului nu s-a putut crea datorită faptului că există un fișier cu același nume." #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Creează pachet cu sursă" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Nu se poate copia fișierul &1." #: Project.module:4881 msgid "Cannot create link &1." msgstr "Nu se poate crea link-ul &1." #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "Nu se poate muta un director în el însuși." #: Project.module:4960 msgid "Cannot move file &1." msgstr "Nu se poate muta fișierul &1." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 #, fuzzy msgid "Unable to update forms." msgstr "Nu se poate lipi textul." #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 #, fuzzy msgid "Unable to read component description file." msgstr "Nu se poate scrie fișierul cu descrierea componentei." #: Project.module:6171 msgid "Cannot write component description file." msgstr "Nu se poate scrie fișierul cu descrierea componentei." #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Proprieteți proiect" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Nu se poate redenumi '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Nu se poate salva fișierul !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 #, fuzzy msgid "Please check your network connection." msgstr "Te rog alege o locație pentru meniu." #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Ești sigur că vrei să ștergi acest director ?" #: VersionControl.module:506 #, fuzzy msgid "The project could not be put under version control." msgstr "Nu s-a putut efectua operarea de proiect." #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 #, fuzzy msgid "This page does not exist in that language." msgstr "Acest proiect nu există." #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Acest proiect nu există." #: WikiMarkdown.class:174 #, fuzzy msgid "This class does not exist." msgstr "Acest proiect nu există." #: WikiMarkdown.class:187 #, fuzzy msgid "This symbol does not exist." msgstr "Acest proiect nu există." #~ msgid "Loading &1..." #~ msgstr "Se încarcă &1..." #~ msgid "Open project..." #~ msgstr "Deschide proiect..." #~ msgid "Edit text property" #~ msgstr "Editează proprietățiile textului" #~ msgid "Exported classes" #~ msgstr "Clase exportate" #~ msgid "Component advancement" #~ msgstr "Avansare componentă" #~ msgid "Show only components used in project" #~ msgstr "Arată doar componente folosite în proiect" #~ msgid "Environment variables" #~ msgstr "Variabile mediu de lucru" #~ msgid "Author(s)" #~ msgstr "Autor(i)" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Bine ai venit în consola Gambas.\n" #~ "Pentru a evalua o expresie, scrie '?' urmat de\n" #~ "expresie, apoi apasă return.\n" #~ "\n" #~ msgid "Blend" #~ msgstr "Amestec" #~ msgid "Select a theme" #~ msgstr "Selectează o temă" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "Toate informațiile necesare au fost colectate. Acum se pot creea pachetele de instalare pentru aplicația ta...\n" #~ "

Apasă butonul OK pentru a crea pachetele.\n" #~ "

Apasă butonul Înapoi daca ai făcut vreo greșeală.\n" #~ "

Apasă butonul Anulează pentru a anula operațiunea.\n" #~ "\n" #~ msgid "Please enter the changes of your project." #~ msgstr "Te rog să scrii modificările proiectului tău." #~ msgid "Prefix package name with the vendor name" #~ msgstr "Prefixează numele pachetului cu numele vânzătorului" #~ msgid "Last modified" #~ msgstr "Modificat ultimul" #~ msgid "Link to" #~ msgstr "Realizare link la" #~ msgid "ChangeLog" #~ msgstr "Jurnal modificări" #~ msgid "XML file" #~ msgstr "Fișier XML" #~ msgid "CSS file" #~ msgstr "Fișier CSS" #~ msgid "Text file" #~ msgstr "Fișier text" #~ msgid "Picture" #~ msgstr "Poză" #~ msgid "&1: &2" #~ msgstr "&1: &2" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Apasă pe un formular pentru a afișa ierarhia controalelor acestuia..." #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "Formularul a fost modificat.\n" #~ "\n" #~ "Toate modificările vor fi pierdute." #~ msgid "Versioning" #~ msgstr "Punere sub versiuni" #~ msgid "Stack backtrace" #~ msgstr "Backtrace stivă" #~ msgid "Remove current breakpoint" #~ msgstr "Înlătură punct de întrerupere curent" #~ msgid "Dynamic variables" #~ msgstr "Variabile dinamice" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Ajutor conversie Visual Basic™ " #~ msgid "Image processing" #~ msgstr "Procesare imagine" #~ msgid "OpenGL programming" #~ msgstr "Programare OpenGL" #~ msgid "XML / XSLT programming" #~ msgstr "Programare XML / XSLT" #~ msgid "Regular expressions" #~ msgstr "Expresii regulare" #~ msgid "Internationalization" #~ msgstr "Internaționalizare" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "" #~ "Aplicație stocată într-un\n" #~ "depozit Subversion" #~ msgid "CGI Web application" #~ msgstr "Aplicație web CGI" #~ msgid "SDL application" #~ msgstr "Aplicație SDL" #~ msgid "Command-line application" #~ msgstr "Aplicație la linia de comandă" #~ msgid "GTK+ graphical application" #~ msgstr "Aplicație grafică GTK+" #~ msgid "QT graphical application" #~ msgstr "Aplicație grafica QT" #~ msgid "Existing" #~ msgstr "Existent" #~ msgid "Details" #~ msgstr "Detalii" #~ msgid "

Authors

\n" #~ msgstr "

Autori

\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "Gambas aproape însemnă (almost means) Basic!" #~ msgid "About Gambas..." #~ msgstr "Despre Gambas..." #~ msgid "Thanks to" #~ msgstr "Mulțumiri lui" #~ msgid "OpenLDAP client" #~ msgstr "Client OpenLDAP" #~ msgid "GTK+ SVG renderer" #~ msgstr "Aplicație randare SVG GTK+" #~ msgid "Firebird database driver" #~ msgstr "Driver bazădate Firebird" gambas-3.16.3/app/src/gambas3/.lang/ru.po000066400000000000000000006672101411575327000177300ustar00rootroot00000000000000# 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: # AlexL , 2019 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.14.90\n" "POT-Creation-Date: 2020-06-06 18:03 UTC\n" "PO-Revision-Date: 2020-02-29 12:30 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Gambas 3" msgstr "Gambas 3" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Интегрированная среда разработки для Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Обозначить закладку" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Очистить все закладки" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Предыдущая закладка" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Следующая закладка" #: CClassInfo.class:608 msgid "Static properties" msgstr "Статические свойства" #: CClassInfo.class:609 msgid "Static variables" msgstr "Статические переменные" #: CClassInfo.class:610 msgid "Static methods" msgstr "Статические методы" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "Константы" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Свойства" #: CClassInfo.class:629 msgid "Variables" msgstr "Переменные" #: CClassInfo.class:630 msgid "Methods" msgstr "Методы" #: CClassInfo.class:631 msgid "Events" msgstr "События" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "Этот класс реализуем повторно &1" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "Этот класс наследует &1" #: CClassInfo.class:661 msgid "in &1" msgstr "в &1" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "Этот класс может быть использован как объект при создании скрытого экземпляра по требованию." #: CClassInfo.class:674 msgid "This class is &1." msgstr "Этот класс &1." #: CClassInfo.class:674 msgid "creatable" msgstr "создаваемый" #: CClassInfo.class:679 msgid "This class is static." msgstr "Этот класс статический." #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "Этот класс несоздаваемый." #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "Этот класс может быть использован как &1." #: CClassInfo.class:687 msgid "function" msgstr "функция" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "Этот класс представлен как &1 / &2 массив." #: CClassInfo.class:692 msgid "read" msgstr "чтение" #: CClassInfo.class:692 msgid "write" msgstr "запись" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "Этот класс представлен как &1 массив." #: CClassInfo.class:694 msgid "write-only" msgstr "только для записи" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "только для чтения" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "Этот класс &1 существует для ключевого слова FOR EACH." #: CClassInfo.class:702 msgid "enumerable" msgstr "перечисляемый" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "Этот класс реализуем повторно" #: CClassInfo.class:855 msgid "This class inherits" msgstr "Этот класс наследуемый" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "Этот класс виртуальный." #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Этот класс может быть использован как объект при создании скрытого экземпляра по требованию." #: CClassInfo.class:897 msgid "static function" msgstr "статическая функция" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "Этот класс представлен как &1 / &2 статический массив." #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "Этот класс представлен как &1 статический массив." #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "Этот класс &1 с ключевым словом &2." #: CClassInfo.class:918 msgid "statically enumerable" msgstr "статически перечисляемый" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "Загрузка информации в компонент &1..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Классы" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Класс" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Описание" #: CComponent.class:1669 msgid "This component is not stable yet." msgstr "Этот компонент ещё нестабилен." #: CComponent.class:1671 msgid "This component is deprecated." msgstr "Этот компонент устарел." #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "Автор" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "Авторы" #: CComponent.class:1692 msgid "Implements" msgstr "Реализации" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Требования" #: CComponent.class:1719 msgid "Excludes" msgstr "Исключения" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Родной внутренний класс" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "Анализатор аргументов программы" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Графическая библиотека Cairo" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Рисование диаграмм" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "Оперирование многоугольниками на основе библиотеки Clipper" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "Оперирование комплексными числами" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Сжатие и распаковка" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "драйвер сжатия bzlib2" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "драйвер сжатия zlib" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "MD5/DES/SHA шифрование" #: CDocumentation.class:58 msgid "More data containers" msgstr "Больше контейнеров данных" #: CDocumentation.class:59 msgid "Database access" msgstr "Доступ к БД" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Элементы управления границами данных" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "Драйвер базы данных MySQL" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "Драйвер базы данных ODBC" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "Драйвер базы данных PostgreSQL" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "Драйвер базы данных SQLite 2" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "Драйвер базы данных SQLite 3" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Помощник отладки приложения" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "Компонент управления рабочего стола" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "Поддержка библиотеки X-Window" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "Поддержка Gnome keyring для компонента управления рабочего стола" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "Интерфейс D-Bus" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Вычислитель выражений" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Подпрограммы подсветки синтаксиса" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Больше элементов управления для графических компонентов" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Расширенные стандартные диалоги" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "Текстовый редактор с подсветкой синтаксиса" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Многооконный интерфейс" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "Общий предпросмотр и форма печати" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "Тема значков по умолчанию" #: CDocumentation.class:80 msgid "Terminal emulator" msgstr "Эмулятор терминала" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "Многофункциональная арифметическая библиотека GNU" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "Научная библиотека GNU" #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "GTK+2 инструментарий" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL и GTK+ инструментарий" #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "GTK+3 инструментарий" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "Переключатель компонентов QT/GTK+" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "Переключатель компонентов OpenGL и QT/GTK+" #: CDocumentation.class:88 msgid "QT4/QT5 switcher component" msgstr "Переключатель компонентов QT4/QT5" #: CDocumentation.class:89 msgid "QT4/QT5 OpenGL switcher component" msgstr "Переключатель компонентов QT4/QT5 OpenGL" #: CDocumentation.class:90 msgid "QT4/QT5 WebKit switcher component" msgstr "Переключатель компонентов QT4/QT5 WebKit" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "Компонент управления значками в системном трее" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "Встроенный HTTP-сервер" #: CDocumentation.class:93 msgid "Image management" msgstr "Управление изображениями" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "Компонент фильтрации изображений" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "Процедуры для изображений из библиотеки Imlib2" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "Загрузка и сохранение изображений" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "Мониторинг событий файловой системы" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "Инструменты XML на основе libxml" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "Гибкая система залогинивания" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "Онлайн просмотрщик карт" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "Синтаксис разметки Markdown Gambas" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "Мультимедийный компонент GStreamer" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "Элементы управления мультимедиа" #: CDocumentation.class:104 msgid "Memcached client" msgstr "Клиент в кэше памяти" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "Формат управления MIME, основанный на библиотеке GMime" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "Специальные процедуры MySQL" #: CDocumentation.class:107 msgid "NCurses library" msgstr "Библиотека NCurses" #: CDocumentation.class:108 msgid "Network programming" msgstr "Сетевое программирование" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "Управление высокоуровневыми сетевыми протоколами" #: CDocumentation.class:110 msgid "POP3 client" msgstr "POP3 клиент" #: CDocumentation.class:111 msgid "SMTP client" msgstr "SMTP клиент" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "3D аудио библиотека OpenAL" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "3D программирование с OpenGL" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "Сервисный компонент OpenGL" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "Управление шейдерами OpenGL" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "Простой игровой движок OpenGL, основанный на формате MD2" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "Подпрограммы библиотеки OpenSSL" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "Анализатор параметров команды GNU" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "Согласование с Perl-совместимыми регулярными выражениями" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "Рендер PDF на основе библиотеки Poppler" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "QT4 инструментарий" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "Расширение инструментария QT4" #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "Компонент QT4 WebKit" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL и QT4 инструментарий" #: CDocumentation.class:125 msgid "QT5 toolkit" msgstr "QT5 инструментарий" #: CDocumentation.class:126 msgid "QT5 WebKit component" msgstr "Компонент QT5 WebKit" #: CDocumentation.class:127 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL и QT5 инструментарий" #: CDocumentation.class:128 msgid "QT5 toolkit extension" msgstr "Расширение инструментария QT5" #: CDocumentation.class:129 msgid "Report designer" msgstr "Дизайнер отчётов" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "Библиотека управления сканером на основе SANE" #: CDocumentation.class:132 msgid "SDL library" msgstr "Библиотека SDL" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "Звук SDL и управление CD-ROM" #: CDocumentation.class:134 msgid "SDL2 component" msgstr "Компонент SDL2" #: CDocumentation.class:135 msgid "SDL2 audio component" msgstr "Аудио компонент SDL2" #: CDocumentation.class:136 msgid "Application settings management" msgstr "Управление настройками приложений" #: CDocumentation.class:137 msgid "Signals management" msgstr "Управление сигналами" #: CDocumentation.class:138 msgid "Terminal management" msgstr "Управление терминалом" #: CDocumentation.class:139 msgid "Graphical terminal applications development" msgstr "Разработка графических терминальных приложений" #: CDocumentation.class:140 msgid "Unit tests component" msgstr "" #: CDocumentation.class:141 msgid "Utility component" msgstr "Сервисный компонент" #: CDocumentation.class:142 msgid "Web applications utility component" msgstr "Сервисный компонент веб-приложений" #: CDocumentation.class:143 msgid "Video capture" msgstr "Захват видео" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Совместимость с Visual Basic" #: CDocumentation.class:145 msgid "XML tools" msgstr "Инструменты XML" #: CDocumentation.class:146 msgid "HTML generator" msgstr "Генератор HTML" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "Протокол XML-RPC" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "XSLT инструменты на основе LibXSLT и LibXML" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "Инструменты веб-приложений" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "Веб анализатор каналов и генератор" #: CDocumentation.class:151 msgid "Web application development" msgstr "Разработка веб-приложений" #: CDocumentation.class:152 #, fuzzy msgid "Web application development using processes as session" msgstr "Разработка веб-приложений" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "Управление графическими формами" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "Управление циклом событий" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "Дисплей OpenGL" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "Комплексные числа" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "Управление XML" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "Вставить цвет" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "Вставить сегодняшнюю дату" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "&1: &2" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "Расположение" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "ВНИМАНИЕ! Библиотека не найдена." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Предоставляет" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Форма" #: CModule.class:29 msgid "Forms" msgstr "Формы" #: CModule.class:29 msgid "Gambas forms" msgstr "Формы Gambas" #: CModule.class:30 msgid "Gambas web pages" msgstr "Веб-страницы Gambas" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "Веб-страница" #: CModule.class:30 msgid "WebPages" msgstr "Веб-страницы" #: CModule.class:31 msgid "Gambas reports" msgstr "Отчёты Gambas" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "Отчёт" #: CModule.class:31 msgid "Reports" msgstr "Отчёты" #: CModule.class:32 msgid "Gambas web forms" msgstr "Веб-формы Gambas" #: CModule.class:32 FMain.form:967 msgid "WebForm" msgstr "Веб-форма" #: CModule.class:32 msgid "WebForms" msgstr "Веб-формы" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Терминальные формы Gambas" #: CModule.class:33 FMain.form:974 msgid "TermForm" msgstr "Терминальная форма" #: CModule.class:33 msgid "TermForms" msgstr "Терминальные формы" #: CProfile.class:114 msgid "Evaluator" msgstr "Вычислитель" #: CProfile.class:116 msgid "Event loop" msgstr "Цикл событий" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Примеры хранятся на сервере фермы Gambas. Нажмите &1, чтобы получить доступ к серверу фермы и загрузить их..." #: CProjectList.class:111 msgid "here" msgstr "здесь" #: CProjectList.class:235 msgid "IDE extensions" msgstr "Расширения IDE" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "Отмена" #: CProjectList.class:554 msgid "Do you really want to uninstall this software?" msgstr "Вы действительно хотите деинсталлировать это ПО?" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "Деинсталлировать" #: CProjectList.class:557 msgid "Unable to uninstall software:" msgstr "Невозможно деинсталлировать ПО:" #: CProjectList.class:561 msgid "The software has been successfully uninstalled." msgstr "ПО было успешно деинсталлировано." #: CProjectTree.class:97 msgid "Files" msgstr "Файлы" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "Проект" #: CProjectTree.class:360 msgid "Sources" msgstr "Исходники" #: CProjectTree.class:362 msgid "Connections" msgstr "Соединения" #: CProjectTree.class:363 msgid "Public" msgstr "Общедоступный" #: CProjectTree.class:364 msgid "Data" msgstr "Данные" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Сегодня" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Вчера" #: CRecentProject.class:72 msgid "Two days ago" msgstr "Два дня назад" #: CRecentProject.class:74 msgid "This week" msgstr "На этой неделе" #: CRecentProject.class:76 msgid "This month" msgstr "В этом месяце" #: CSoftware.class:317 msgid "Download cancelled" msgstr "Загрузка отменена" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "Контрольная сумма загруженного пакета недействительна." #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "Невозможно распаковать архив исходников." #: CSoftware.class:361 msgid "Abort" msgstr "Прервать" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "Игнорировать" #: CSoftware.class:361 msgid "The following components are required:" msgstr "Требуются следующие компоненты:" #: CSoftware.class:388 msgid "Unable to compile the project." msgstr "Невозможно скомпилировать проект." #: CSoftware.class:395 msgid "Unable to make executable." msgstr "Невозможно создать исполняемый файл." #: CSoftware.class:464 msgid "Unable to install source directory" msgstr "Невозможно установить директорию исходников" #: CSoftware.class:663 msgid "yesterday" msgstr "вчера" #: CSoftware.class:665 msgid "&1 days ago" msgstr "&1 дней назад" #: CSoftware.class:671 msgid "last week" msgstr "на прошлой неделе" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "&1 недель назад" #: CSoftware.class:679 msgid "last month" msgstr "в прошлом месяце" #: CSoftware.class:681 msgid "&1 months ago" msgstr "&1 месяцев назад" #: CSoftware.class:687 msgid "last year" msgstr "в прошлом году" #: CSoftware.class:689 msgid "on &1" msgstr "в &1" #: CVersionControlGit.class:291 msgid "Unable to push the project." msgstr "Невозможно протолкнуть проект." #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "Локальный корневой путь" #: CVersionControlGit.class:308 msgid "Last commit" msgstr "Последний коммит" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "Автор последнего коммита" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "Дата последнего коммита" #: CVersionControlGit.class:317 msgid "Current branch" msgstr "Текущая ветвь" #: CVersionControlGit.class:318 msgid "Origin" msgstr "Оригинал" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "Текущая ветвь актуальна." #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "Один файл для коммита в текущей ветви." #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "&1 файлов для коммита в текущей ветви." #: CVersionControlGit.class:336 msgid "None in the current project." msgstr "Нет ничего в текущем проекте." #: CVersionControlGit.class:338 msgid "One in the current project." msgstr "Один в текущем проекте." #: CVersionControlGit.class:340 msgid "&1 in the current project." msgstr "&1 в текущем проекте." #: CVersionControlGit.class:344 msgid "Status" msgstr "Статус" #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 msgid "Remote repository URL" msgstr "URL удалённого репозитория" #: CVersionControlGit.class:398 msgid "A new Git repository will be created for this project." msgstr "Для этого проекта будет создан новый Git-репозиторий." #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "ОК" #: CVersionControlGit.class:436 msgid "Solve conflict." msgstr "Разрешить конфликт." #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Дата" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "Ревизия" #: CVersionControlSubversion.class:319 msgid "Remote revision" msgstr "Удалённая ревизия" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "Автор последнего удалённого коммита" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "Дата последнего удалённого коммита" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Шрифты Gambas используются в соответствии с лицензией SIL Open Font." #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "Данная программа опубликована под лицензией GNU General Public License." #: Design.module:227 Project.module:2231 msgid "first" msgstr "первый" #: Design.module:229 Project.module:2233 msgid "second" msgstr "второй" #: Design.module:231 Project.module:2235 msgid "third" msgstr "третий" #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "в &1:&2." #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "Программа была прервана по CTRL+C." #: Design.module:445 msgid "The program has been terminated." msgstr "Программа была прекращена." #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Программа возвратила\n" "значение: &1" #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "Этот проект не существует." #: Design.module:1039 msgid "Output terminal" msgstr "Выходной терминал" #: Design.module:1067 msgid "No terminal emulator found." msgstr "Эмулятор терминала не найден." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Лицензия" #: FAbout.class:241 msgid "Financial support" msgstr "Финансовая поддержка" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "О Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "Эта программа ― свободное программное обеспечение. Вы можете распространять или изменять её при условиях соответствия GNU General Public License, опубликованной Free Software Foundation; либо версии 2 лицензии, либо (на ваше усмотрение) любой более поздней версии.

Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. Смотрите GNU General Public License для более подробной информации.\n" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "Редактировать аргументы" #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "Сброс" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "Запуск" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Закрыть" #: FColorChooser.form:15 msgid "Select a color" msgstr "Выбрать цвет" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Система" #: FColorChooser.form:35 msgid "Free" msgstr "Свободно" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "Не закончен, но стабилен" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "Экспериментально" #: FComponentChooser.class:355 msgid "Stable" msgstr "Стабильный" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "Устаревшее" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "Этот компонент необходим для библиотеки:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "Этот компонент необходим для библиотек:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "Этот компонент необходим для:

&1" #: FComponentChooser.class:589 msgid "Keep" msgstr "Хранить" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Удалить все" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Этот компонент несовместим:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "Компоненту &1 нужен один из следующих компонентов:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "Компоненту &1 нужен компонент &2." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Выбрать компонент" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "Показать устаревшие компоненты" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "Перезагрузить" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Увеличить" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Уменьшить" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "Нет масштаба" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Редактировать" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "Этот файл конфликтует.\n" "Вы должны устранить конфликт перед использованием файла снова." #: FConflict.class:97 msgid "Unable to load file:" msgstr "Невозможно загрузить файл:" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Текст" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Изображение" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Файл был изменён.\n" "Вы действительно хотите закрыть диалоговое окно?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Некоторые конфликты ещё не разрешены." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Невозможно разрешить конфликт." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Файл был изменён. \n" "Вы действительно хотите открыть другой файл?" #: FConflict.class:267 msgid "Conflict files" msgstr "Конфликтующие файлы" #: FConflict.form:31 msgid "Version conflict" msgstr "Конфликт версий" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Вырезать" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Копировать" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Вставить" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Откатить" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Вернуть" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Отступ" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Отменить отступ" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Открыть" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Сохранить" #: FConflict.form:160 msgid "Solve" msgstr "Решить" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(Объявления)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "В этом файле всё ещё есть конфликты." #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "Расширенный" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "Верхний регистр" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "Нижний регистр" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Комментарий" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Без комментария" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "Специальная вставка" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Выбрать все" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Перейти к строке" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "Закладки" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "Найти следующее" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "Найти предыдущее" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Просмотр" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 msgid "Automatic word wrap" msgstr "Автоматический перенос слов" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "Отступ для табуляции" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "Не разбивать" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "Горизонтальный разрыв" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "Вертикальный разрыв" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Конец строки" #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "Unix" #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "Windows" #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "MAC" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "Открыть код" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "Вставить как строку" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "Вставить как многострочную строку" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "Вставить как комментарий" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "Текстовой редактор" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Код" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "Конфликт разрешён" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "Предыдущий конфликт" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "Следующий конфликт" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "Сохранить мои изменения" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "Принять их изменения" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "Сохранить все мои изменения" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "Принять все их изменения" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Имя" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Тип" #: FConnectionEditor.class:61 msgid "Length" msgstr "Длина" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Значение по умолчанию" #: FConnectionEditor.class:71 msgid "Collation" msgstr "Упорядочение" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Индекс" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Уникальный" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Поле" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "SQL запросы" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Невозможно соединиться с базой данных." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Не сохранять" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "Таблица '&1' была изменена. Вы хотите сохранить её?" #: FConnectionEditor.class:498 msgid "No record" msgstr "Нет записей" #: FConnectionEditor.class:500 msgid "One record" msgstr "Одна запись" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 записей" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Невозможно загрузить таблицу '&1'." #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "Невозможно выполнить запрос." #: FConnectionEditor.class:717 msgid "&1 s" msgstr "&1 с" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "неограничено" #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "Блоб" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "Булевый" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "Плавающий" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "Целое число" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "Длинный" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "Последовательный" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "Строка" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "Это имя уже используется." #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "Пожалуйста, введите число." #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "Длина должна быть больше чем 1, но и меньше, чем 255." #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "Несоответствие типов." #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "Это имя уже существует." #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "Это поле используется в качестве индекса." #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "В таблице '&1' отсутствует первичный ключ." #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "Невозможно записать таблицу '&1'." #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "Вы действительно хотите удалить таблицу '&1'?" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "Невозможно удалить таблицу '&1'." #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "Вы действительно хотите удалить выбранные строки?" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "Вы действительно хотите удалить этот запрос?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Редактор соединений" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Показать системные таблицы" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Новая таблица" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Удалить таблицу" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Удалить" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Переименовать таблицу" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Переименовать" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Копировать таблицу" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Вставить таблицу" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Импортировать текстовый файл" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Импорт" #: FConnectionEditor.form:213 msgid "Fields" msgstr "Поля" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Добавить" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Вниз" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Вверх" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Копировать список полей" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Индексы" #: FConnectionEditor.form:293 msgid "New index" msgstr "Новый индекс" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Выполнить запрос" #: FConnectionEditor.form:359 msgid "New query" msgstr "Новый запрос" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Новый" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "Удалить запрос" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Очистить" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "Редактировать" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Экспортировать в CSV файл" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Экспорт" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Удалить" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Выбрать все" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Отменить выбор всего" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Конвертирование проекта Gambas 3" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "Команда '&1' не удалась." #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Невозможно отправить отчёт об ошибке." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "Программа неожиданно остановилась!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "Пожалуйста, опишите здесь как воспроизвести сбой." #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Сбой интерпретатора Gambas" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "Отправить сообщение об ошибке по почте" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "Не присоединять проект к почте" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Нет родителя)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Невозможно добавить файл." #: FCreateFile.form:37 msgid "New file" msgstr "Новый файл" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Опции" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Ширина" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Высота" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Управление диалоговыми окнами" #: FCreateFile.form:155 msgid "Parent class" msgstr "Родительский класс" #: FCreateFile.form:168 msgid "Exported" msgstr "Экспортировано" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "Автоматический экземпляр" #: FCreateFile.form:180 msgid "Not creatable" msgstr "Несоздаваемый" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Автоматическое расширение" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Проверка проекта завершилась неудачей." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Невозможно создать проект!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "Пожалуйста, выберите шаблон" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Пожалуйста, введите местоположение репозитория." #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Новый проект" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "Тип проекта" #: FCreateProject.form:82 msgid "Parent directory" msgstr "Родительская директория" #: FCreateProject.form:90 msgid "Project details" msgstr "Детали проекта" #: FCreateProject.form:99 msgid "Project name" msgstr "Имя проекта" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Имя проекта это имя директории проекта." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "Окончательной директорией проекта является:" #: FCreateProject.form:134 msgid "Project title" msgstr "Заголовок проекта" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "Заголовок проекта является истинным именем приложения." #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Проект является переводимым" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "Открыть другое окно" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Репозиторий" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Репозиторий проекта напрямую отправляется команде 'svn checkout'." #: FDebugButton.class:104 #, fuzzy msgid "Test has failed." msgstr "Проверка проекта завершилась неудачей." #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "Отладка" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Консоль" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Точки останова" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "Предупреждения" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "Контроль версий" #: FDebugButton.form:84 FDebugInfo.form:398 msgid "Search result" msgstr "Результат поиска" #: FDebugExpr.class:4 msgid "not available" msgstr "не доступно" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Значение" #: FDebugExpr.class:511 msgid "Key" msgstr "Ключ" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Символ" #: FDebugExpr.form:33 msgid "Watch" msgstr "Следить" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Печатать в консоль" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Показать все символы" #: FDebugExpr.form:88 msgid "No element" msgstr "Нет элемента" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Строка" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Функция" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "Файл" #: FDebugInfo.class:49 msgid "Col." msgstr "Кол." #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "Сообщение" #: FDebugInfo.class:120 msgid "native code" msgstr "родной код" #: FDebugInfo.class:187 msgid "Watch expressions" msgstr "Следить за выражениями" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Вы действительно хотите очистить список выражений?" #: FDebugInfo.class:1091 msgid "File not loaded" msgstr "Файл не загружен" #: FDebugInfo.class:1230 msgid "Current object" msgstr "Текущий объект" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "Локальные переменные" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Отладка" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "Удалить текущее выражение" #: FDebugInfo.form:130 msgid "Add expression" msgstr "Добавить выражение" #: FDebugInfo.form:190 msgid "Remove breakpoint" msgstr "Удалить точку останова" #: FDebugInfo.form:198 msgid "Disable breakpoint" msgstr "Отключить точку останова" #: FDebugInfo.form:200 msgid "Disable" msgstr "Выключить" #: FDebugInfo.form:206 msgid "Enable breakpoint" msgstr "Включить точку останова" #: FDebugInfo.form:208 msgid "Enable" msgstr "Включить" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "Удалить все точки останова" #: FDebugInfo.form:264 msgid "Tasks" msgstr "Задачи" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "Очистить консоль" #: FDebugInfo.form:300 #, fuzzy msgid "Run test" msgstr "Запустить с" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "Коммитить" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Синхронизировать" #: FDebugInfo.form:346 FMain.form:525 msgid "Revert all changes" msgstr "Обратить все изменения" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "Добавить все в репозиторий" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "Отменить текущий поиск" #: FDebugInfo.form:422 msgid "Show search window" msgstr "Показать окно поиска" #: FDebugInfo.form:429 msgid "Search again" msgstr "Возобновить поиск" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "Искомая строка не может быть найдена." #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "(Объявления)" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "Формат кода" #: FEditor.form:201 msgid "Sort procedures" msgstr "Сортировать процедуры" #: FEditor.form:230 msgid "Go to" msgstr "Перейти" #: FEditor.form:249 msgid "Find definition" msgstr "Найти определение" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Запустить до текущей строки" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Переключить точку останова" #: FEditor.form:320 msgid "Watch expression" msgstr "Следить за выражением" #: FEditor.form:329 msgid "Open form" msgstr "Открыть форму" #: FEditor.form:336 FMain.form:1133 msgid "Run this class" msgstr "Запустить этот класс" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "Заблокирован" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Печать" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "Редактор" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 msgid "Show modifications" msgstr "" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 msgid "Previous modification" msgstr "" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 msgid "Next modification" msgstr "" #: FEditor.form:570 FTextEditor.form:546 msgid "Insert special character" msgstr "Вставить специальный символ" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "Сделать код красивым" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "Список процедур" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "Заблокировать/разблокировать файл" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "Файлы CSV" #: FExportData.class:113 msgid "Unable to export data." msgstr "Невозможно экспортировать данные." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Перезаписать" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Этот файл уже существует.\n" "\n" "Хотите перезаписать его?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Символ разделителя" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Вложенный символ" #: FExportData.form:54 msgid "Export field names" msgstr "Экспорт имён полей" #: FExportData.form:60 msgid "Export selected records only" msgstr "Экспорт только выбранных записей" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Сервера фермы" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Ошибка аутентификации." #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "Логин" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Сервер" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Пользователь" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Пароль" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Запомнить пароль" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Быть анонимным" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Пожалуйста, введите действительный адрес электронной почты." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "Подтверждение пароля не совпадает." #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Невозможно зарегистрировать пользователя." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" "Вы были успешно зарегистрированы.\n" "\n" "Вы получите подтверждение по электронной почте в ближайшее время." #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Регистрация" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "Подтвердить пароль" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "E-mail" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" "Письмо с подтверждением будет отправлено на указанный адрес электронной почты. Нажмите на ссылку в этом письме, чтобы активировать свою учётную запись.\n" "

\n" "Ваша электронная почта не будет храниться на сервере публикации." #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Невозможно открыть соединение." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Невозможно получить поля таблицы." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Редактировать список полей" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Выбрать поле" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Соединение" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Таблица" #: FFileInfoVC.class:23 #, fuzzy msgid "'&1' version control" msgstr "Контроль версий" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "Этот файл заблокирован и будет удалён при следующем коммите." #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "Этот файл не является версионным и должен быть добавлен в репозиторий." #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "Этот файл не был изменён с момента последнего коммита." #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "Продолжить" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "Вы собираетесь отменить все свои изменения!" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Изменения" #: FFileInfoVC.form:41 FVersionControl.form:55 msgid "History" msgstr "" #: FFileInfoVC.form:59 msgid "Undo changes" msgstr "Откатить изменения" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "Gambas &1" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Модуль Gambas" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Класс Gambas" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "'&1' свойства" #: FFontChooser.form:12 msgid "Select a font" msgstr "Выбрать шрифт" #: FForm.class:136 msgid "Bad form file" msgstr "Плохой файл формы" #: FForm.class:268 msgid "Unknown control: &1" msgstr "Неизвестный элемент управления: &1" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "Отсутствует компонент для элемента управления &1" #: FForm.class:1876 msgid "Cannot paste data." msgstr "Невозможно вставить данные." #: FForm.form:178 msgid "Copy at the same place" msgstr "Скопировать на то же место" #: FForm.form:198 msgid "Delete container only" msgstr "Удалить только контейнер" #: FForm.form:205 msgid "Embed into a container" msgstr "Встроить в контейнер" #: FForm.form:211 msgid "Change into" msgstr "Изменить на" #: FForm.form:219 msgid "Select" msgstr "Выбрать" #: FForm.form:232 msgid "Select parent" msgstr "Выбрать родителя" #: FForm.form:245 msgid "Arrangement" msgstr "Выравнивание" #: FForm.form:249 msgid "Bring to foreground" msgstr "Переместить на передний план" #: FForm.form:256 msgid "Send to background" msgstr "Переместить на задний план" #: FForm.form:266 msgid "Horizontal" msgstr "Горизонтально" #: FForm.form:273 msgid "Rows" msgstr "Строки" #: FForm.form:279 msgid "Vertical" msgstr "Вертикально" #: FForm.form:286 msgid "Columns" msgstr "Колонки" #: FForm.form:295 msgid "Center horizontally" msgstr "Центрировать по горизонтали" #: FForm.form:301 msgid "Center vertically" msgstr "Центрировать по вертикали" #: FForm.form:307 msgid "Alignment" msgstr "Выравнивание" #: FForm.form:311 msgid "Align to left" msgstr "Разместить слева" #: FForm.form:317 msgid "Align to right" msgstr "Разместить справа" #: FForm.form:323 msgid "Align to top" msgstr "Разместить сверху" #: FForm.form:329 msgid "Align to bottom" msgstr "Разместить снизу" #: FForm.form:338 msgid "Same width" msgstr "Единая ширина" #: FForm.form:344 msgid "Same height" msgstr "Единая высота" #: FForm.form:353 msgid "Show tab" msgstr "Показать вкладку" #: FForm.form:361 msgid "Move tab" msgstr "Переместить вкладку" #: FForm.form:366 msgid "First" msgstr "Начало" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Предыдущий" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Следующий" #: FForm.form:387 msgid "Last" msgstr "Конец" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Редактор меню" #: FForm.form:407 msgid "Event" msgstr "Событие" #: FForm.form:421 msgid "Run this form" msgstr "Запустить эту форму" #: FForm.form:601 msgid "Toggle grid" msgstr "Переключить сетку" #: FForm.form:610 FImageEditor.form:515 msgid "Toggle information tooltip" msgstr "Переключить всплывающую информационную подсказку" #: FForm.form:729 msgid "Move tab first" msgstr "Переместить вкладку в начало" #: FForm.form:736 msgid "Move tab left" msgstr "Переместить вкладку влево" #: FForm.form:743 msgid "Move tab right" msgstr "Переместить вкладку вправо" #: FForm.form:750 msgid "Move tab last" msgstr "Переместить вкладку в конец" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Полужирный" #: FForm.form:786 msgid "Italic" msgstr "Курсив" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Подчёркнутый" #: FForm.form:802 msgid "Bigger font" msgstr "Громадный шрифт" #: FForm.form:810 msgid "Smaller font" msgstr "Наименьший шрифт" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "Шрифт по умолчанию" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Фон" #: FForm.form:834 msgid "Foreground" msgstr "Передний план" #: FForm.form:845 msgid "Lock / unlock form" msgstr "Заблокировать/разблокировать форму" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Иерархия" #: FFormStack.form:24 msgid "Move top" msgstr "Переместить на верх" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Переместить вверх" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Переместить вниз" #: FFormStack.form:42 msgid "Move bottom" msgstr "Переместить в низ" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "Язык по умолчанию" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Обозреватель справки" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "Показать дерево справки" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Назад" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Вперёд" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "Комбинации клавиш IDE" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "Отладчик" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "Перевод" #: FImageEditor.form:159 msgid "Action" msgstr "Действие" #: FImageEditor.form:164 msgid "Crop" msgstr "Кадрирование" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Поворот по горизонтали" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Поворот по вертикали" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Вращать против часовой стрелки" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Вращать по часовой стрелке" #: FImageEditor.form:205 msgid "Resize" msgstr "Изменение размера" #: FImageEditor.form:212 msgid "Rotate" msgstr "Вращение" #: FImageEditor.form:229 msgid "Hide selection" msgstr "Скрыть выбор" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Выбор" #: FImageEditor.form:240 msgid "Invert selection" msgstr "Инвертировать выбор" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "Дублировать выбор" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "Сместить выбор" #: FImageEditor.form:266 msgid "Union" msgstr "Объединить" #: FImageEditor.form:272 msgid "Difference" msgstr "Разница" #: FImageEditor.form:278 msgid "Intersection" msgstr "Пересечение" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "Исключающее ИЛИ" #: FImageEditor.form:293 msgid "Shape grid" msgstr "Форма сетки" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "Обычный масштаб" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "Вместить в окно" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "Сохранить как JPEG" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "Сохранить как PNG" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "Сохранить как BMP" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "Сохранить как TIFF" #: FImageEditor.form:428 msgid "Image editor" msgstr "Редактор изображений" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "Рисование сетки" #: FImageEditor.form:558 msgid "Move" msgstr "Переместить" #: FImageEditor.form:569 msgid "Draw" msgstr "Рисовать" #: FImageEditor.form:579 msgid "Erase" msgstr "Стирание" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Прямоугольник" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Эллипс" #: FImageEditor.form:629 msgid "Magic wand" msgstr "Волшебная палочка" #: FImageEditor.form:646 msgid "Edit selection" msgstr "Редактировать выбранное" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "Изменить размер или растянуть изображение" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "Повернуть изображение" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "пикс" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "Дублировать" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Системный буфер обмена" #: FImageProperty.class:1267 msgid "Arrow" msgstr "Стрелка" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "Стрелка #2" #: FImageProperty.class:1270 msgid "Triangle" msgstr "Треугольник" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "Площадь треугольника" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "Пятиугольник" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "Шестиугольник" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "Цвет" #: FImageProperty.form:172 msgid "Gradient" msgstr "Градиент" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Линейный градиент" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Радиальный градиент" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "Добавить опорную точку в градиент" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "Удалить опорную точку градиента" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "Выбрать цвет ограничения градиента" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "Инвертировать градиент" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Радиус" #: FImageProperty.form:326 msgid "Clipboard" msgstr "Буфер обмена" #: FImageProperty.form:338 msgid "Shapes" msgstr "Фигуры" #: FImageProperty.form:363 msgid "Stroke" msgstr "Обводка" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "Заливка" #: FImageProperty.form:391 msgid "Colorize" msgstr "Оцвечивание" #: FImageProperty.form:399 msgid "Desaturate" msgstr "Обесцвечивание" #: FImageProperty.form:407 msgid "Make transparent" msgstr "Сделать прозрачным" #: FImageProperty.form:417 msgid "Line cap" msgstr "Конец строк" #: FImageProperty.form:422 msgid "Line join" msgstr "Соединение строк" #: FImageProperty.form:427 msgid "Fill rule" msgstr "Заполнить правило" #: FImageProperty.form:445 msgid "Opacity" msgstr "Непрозрачность" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Размер" #: FImageProperty.form:481 msgid "Tolerance" msgstr "Допуск" #: FImageProperty.form:500 msgid "Roundness" msgstr "Скруглённость" #: FImageProperty.form:526 msgid "Effects" msgstr "Эффекты" #: FImageProperty.form:535 msgid "Brightness" msgstr "Яркость" #: FImageProperty.form:554 msgid "Contrast" msgstr "Контраст" #: FImageProperty.form:573 msgid "Gamma" msgstr "Гамма" #: FImageProperty.form:592 msgid "Lightness" msgstr "Освещение" #: FImageProperty.form:611 msgid "Hue" msgstr "Тон" #: FImageProperty.form:630 msgid "Saturation" msgstr "Насыщенность" #: FImageProperty.form:649 msgid "Blur" msgstr "Размытие" #: FImageProperty.form:666 msgid "Transparency" msgstr "Прозрачность" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Предпросмотр" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "Применить" #: FImageProperty.form:735 msgid "Centered" msgstr "По центру" #: FImageProperty.form:745 msgid "Right align" msgstr "Выравнивание справа" #: FImageProperty.form:754 msgid "Left align" msgstr "Выравнивание слева" #: FImageProperty.form:767 msgid "Top align" msgstr "Выравнивание сверху" #: FImageProperty.form:776 msgid "Middle align" msgstr "Выравнивание по середине" #: FImageProperty.form:786 msgid "Baseline align" msgstr "Выравнивание по базисной линии" #: FImageProperty.form:795 msgid "Bottom align" msgstr "Выравнивание снизу" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "Разрешение сетки" #: FImageProperty.form:849 msgid "Grid snap" msgstr "Привязка к сетке" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "Рисовать диагонали" #: FImageQuality.form:10 msgid "Image quality" msgstr "Качество изображения" #: FImageResize.form:25 msgid "Resize image" msgstr "Изменить размер изображения" #: FImageResize.form:65 msgid "Resize and center" msgstr "Изменить размер и центрировать" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "Изменить размер и центрировать по горизонтали" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "Изменить размер и центрировать по вертикали" #: FImageResize.form:86 msgid "Stretch image" msgstr "Растянуть изображение" #: FImageResize.form:111 msgid "Add a border" msgstr "Добавить границу" #: FImageResize.form:116 msgid "Ratio" msgstr "Соотношение" #: FImageRotate.form:21 msgid "°" msgstr "°" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Классы Gambas" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Модули Gambas" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Каскадируемые таблицы стилей" #: FImportFile.class:33 msgid "HTML files" msgstr "Файлы HTML" #: FImportFile.class:33 msgid "Javascript files" msgstr "Файлы Javascript" #: FImportFile.class:33 msgid "Picture files" msgstr "Файлы изображений" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Невозможно импортировать файл." #: FImportFile.form:9 msgid "Import files" msgstr "Импортировать файлы" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Создать символические ссылки" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Все файлы" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Автоматический ключ)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Поле_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Недостаточно значений" #: FImportTable.class:393 msgid "Too many values" msgstr "Слишком много значений" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Отменено пользователем" #: FImportTable.class:427 msgid "No record imported." msgstr "Нет импортированных записей." #: FImportTable.class:429 msgid "One record imported." msgstr "Одна запись импортирована." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 записей импортировано." #: FImportTable.form:35 msgid "Import file" msgstr "Импорт файла" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Выбрать CSV-файл для импорта" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Исходник" #: FImportTable.form:78 msgid "Charset" msgstr "Кодировка" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Удаление лишних пробелов" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Игнорировать первые строки" #: FImportTable.form:139 msgid "Line(s)" msgstr "Строка(и)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Назначение" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "Первая строка содержит имена полей" #: FImportTable.form:176 msgid "Key field" msgstr "Ключевое поле" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "" #: FLayout.class:30 FOption.class:1694 msgid "Override" msgstr "" #: FLayout.class:30 msgid "This layout already exists." msgstr "" #: FLayout.form:14 msgid "Save layout" msgstr "" #: FLayout.form:22 msgid "Layout name" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "Пункт &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Вы действительно хотите очистить список?" #: FList.form:25 msgid "Edit list property" msgstr "Редактировать свойство списка" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "Вставить" #: FList.form:87 msgid "Invert" msgstr "Инвертировать" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Вы действительно хотите удалить эту ссылку?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Вы действительно хотите удалить эту директорию?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Вы действительно хотите удалить этот файл?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Невозможно удалить файл или директорию" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "Файл или директория больше не существуют." #: FMain.class:759 msgid "Sort history" msgstr "Сортировать историю" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "Сортировать по дате" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "Сортировать по имени" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "Сортировать по пути" #: FMain.class:775 msgid "&Clear history" msgstr "&Очистить историю" #: FMain.class:959 msgid "New folder" msgstr "Новая директория" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "Инструменты перевода GNU не установлены в вашей системе.\n" "\n" "Пожалуйста, установите их, чтобы иметь возможность перевода." #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "Невозможно добавить файл в проект." #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "Все резервные копии или сгенерированные файлы будут удалены из директории проекта." #: FMain.class:1872 msgid "Clean" msgstr "Очистить" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "Вы действительно хотите добавить каждый файл в репозиторий?" #: FMain.class:2329 msgid "Choose a profile" msgstr "Выбрать профиль" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "Профиль для &1 проекта" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "Выбрать файл" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "Этот файл находится внутри проекта." #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Файл был изменён.\n" "\n" "Все Ваши изменения будут потеряны." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Открыть проект" #: FMain.form:306 msgid "Open recent" msgstr "Открыть последние" #: FMain.form:314 msgid "Open example" msgstr "Открыть пример" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "Открыть файл" #: FMain.form:332 msgid "Save project" msgstr "Сохранить проект" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Сохранить проект как" #: FMain.form:351 msgid "Reload project" msgstr "Перезагрузить проект" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Выход" #: FMain.form:395 msgid "Save as" msgstr "Сохранить как" #: FMain.form:435 msgid "Compile" msgstr "Компилировать" #: FMain.form:442 msgid "Compile All" msgstr "Компилировать все" #: FMain.form:452 msgid "Translate" msgstr "Перевести" #: FMain.form:461 msgid "Make" msgstr "Собрать" #: FMain.form:465 msgid "Executable" msgstr "Исполняемый файл" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "Архив исходников" #: FMain.form:479 msgid "Installation package" msgstr "Инсталляционный пакет" #: FMain.form:486 msgid "Patch" msgstr "Патч" #: FMain.form:489 msgid "Create" msgstr "Создать" #: FMain.form:518 msgid "Undo synchronization" msgstr "Откатить синхронизацию" #: FMain.form:537 msgid "Branch" msgstr "Ветвь" #: FMain.form:542 msgid "Put under version control" msgstr "Поставить под контроль версий" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "Опубликовать" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "Прибраться" #: FMain.form:563 msgid "Refresh" msgstr "Освежить" #: FMain.form:592 msgid "Run with" msgstr "Запустить с" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "Пауза" #: FMain.form:620 msgid "Stop" msgstr "Стоп" #: FMain.form:627 msgid "Step" msgstr "Шаг" #: FMain.form:634 msgid "Forward" msgstr "Вперёд" #: FMain.form:641 msgid "Finish" msgstr "Окончание" #: FMain.form:650 msgid "Use terminal emulator" msgstr "Использовать эмулятор терминала" #: FMain.form:656 msgid "Redirect standard error output" msgstr "Перенаправить стандартный вывод ошибок" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "Использовать встроенный сервер HTTP" #: FMain.form:668 msgid "Activate profiling" msgstr "Активировать профилирование" #: FMain.form:677 #, fuzzy msgid "Invert language orientation" msgstr "Инвертировать градиент" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 #, fuzzy msgid "Show database requests" msgstr "Игнорировать кодировку БД" #: FMain.form:705 msgid "GUI component" msgstr "Компонент графического интерфейса" #: FMain.form:709 msgid "Current desktop" msgstr "Текущий рабочий стол" #: FMain.form:746 msgid "Open profile" msgstr "Открыть профиль" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "Очистить все точки останова" #: FMain.form:757 msgid "Close all debug windows" msgstr "Закрыть все окна отладки" #: FMain.form:795 msgid "Status bar" msgstr "Строка статуса" #: FMain.form:802 msgid "Hide menubar" msgstr "Скрыть панель меню" #: FMain.form:826 msgid "Close all windows" msgstr "Закрыть все окна" #: FMain.form:833 msgid "Tools" msgstr "Инструменты" #: FMain.form:837 msgid "Find" msgstr "Найти" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Заменить" #: FMain.form:853 msgid "Browse project" msgstr "Обзор проекта" #: FMain.form:860 msgid "Open a terminal" msgstr "Открыть терминал" #: FMain.form:867 msgid "Send project by mail" msgstr "Отправить проект по почте" #: FMain.form:873 msgid "Update all forms" msgstr "Обновить все формы" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "Ферма ПО" #: FMain.form:891 msgid "Shortcuts" msgstr "Комбинации клавиш" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Предпочтения" #: FMain.form:911 msgid "Directory" msgstr "Директория" #: FMain.form:916 msgid "Project link" msgstr "Ссылка на проект" #: FMain.form:925 msgid "Module" msgstr "Модуль" #: FMain.form:932 msgid "Test module" msgstr "" #: FMain.form:991 msgid "HTML file" msgstr "Файл HTML" #: FMain.form:998 msgid "Style sheet" msgstr "Таблица стилей" #: FMain.form:1005 msgid "Javascript file" msgstr "Файл Javascript" #: FMain.form:1013 msgid "Other" msgstr "Другое" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Недавнее" #: FMain.form:1047 msgid "Open in file manager" msgstr "Открыть в файловом менеджере" #: FMain.form:1052 msgid "Open in project" msgstr "Открыть в проекте" #: FMain.form:1056 msgid "Open with" msgstr "Открыть с" #: FMain.form:1064 msgid "Compress all" msgstr "Сжать все" #: FMain.form:1070 msgid "Uncompress all" msgstr "Распаковать все" #: FMain.form:1117 msgid "Copy file path" msgstr "Скопировать путь файла" #: FMain.form:1126 msgid "Startup class" msgstr "Класс запуска" #: FMain.form:1141 msgid "Add to repository" msgstr "Добавить в репозиторий" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "Фильтр" #: FMain.form:1149 msgid "Show exported classes" msgstr "Показать экспортированные классы" #: FMain.form:1154 msgid "Show added files" msgstr "Показать добавленные файлы" #: FMain.form:1159 msgid "Show modified files" msgstr "Показать изменённые файлы" #: FMain.form:1164 msgid "Show files in conflict" msgstr "Показать конфликтные файлы" #: FMain.form:1172 msgid "Show all" msgstr "Показать все" #: FMain.form:1184 msgid "Do not translate" msgstr "Не переводить" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "Новое соединение" #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "?" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Полезный совет" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "Комбинации клавиш" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "Системная информация" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Свойства проекта" #: FMain.form:1386 msgid "Refresh project" msgstr "Освежить проект" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Создать исполняемый файл" #: FMain.form:1428 msgid "Make source archive" msgstr "Создать архив исходников" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "Сделать инсталляционный пакет" #: FMain.form:1457 msgid "Properties sheet" msgstr "Лист свойств" #: FMain.form:1466 msgid "Toolbox" msgstr "Палитра компонентов" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "Поиск" #: FMain.form:1508 msgid "Compile all" msgstr "Компилировать все" #: FMain.form:1557 msgid "Finish current function" msgstr "Завершить текущую функцию" #: FMain.form:1573 msgid "Show menubar" msgstr "Показать панель меню" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "Опубликовать ПО" #: FMain.form:1663 msgid "&File" msgstr "&Файл" #: FMain.form:1687 msgid "&Project" msgstr "&Проект" #: FMain.form:1699 msgid "&Debug" msgstr "&Отладка" #: FMain.form:1711 msgid "&View" msgstr "&Просмотр" #: FMain.form:1723 msgid "&Tools" msgstr "&Инструменты" #: FMain.form:1735 msgid "&?" msgstr "&?" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1866 msgid "Show properties sheet" msgstr "" #: FMain.form:1874 msgid "Show project tree" msgstr "" #: FMain.form:1944 msgid "Show property help" msgstr "" #: FMain.form:1952 msgid "Show controls" msgstr "" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Приложения Gambas" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "Запустить эту команду после" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE)будет заменён путём исполняемого файла" #: FMakeExecutable.form:57 msgid "Increment version" msgstr "Инкрементная версия" #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Хранить отладочную информацию в исполняемом файле" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "Создать ярлык на рабочем столе" #: FMakeInstall.class:137 msgid "Package" msgstr "Пакет" #: FMakeInstall.class:138 msgid "Min. version" msgstr "Мин. версия" #: FMakeInstall.class:139 msgid "Max. version" msgstr "Макс. версия" #: FMakeInstall.class:145 msgid "File or directory" msgstr "Файл или директория" #: FMakeInstall.class:279 msgid "Creating packages..." msgstr "Создание пакетов..." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "Пакеты были успешно созданы." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Пожалуйста, введите своё имя." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Пожалуйста, введите свой e-mail адрес." #: FMakeInstall.class:345 msgid "Please enter the vendor name." msgstr "Пожалуйста, введите имя вендора." #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "Нет записей CHANGELOG для этого релиза." #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Пожалуйста, внесите первую запись CHANGELOG." #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "Пожалуйста, выберите как минимум один целевой дистрибутив." #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "Пожалуйста, выберите группу пакета для каждого целевого дистрибутива." #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "Пожалуйста, выберите группу пакета." #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "Пожалуйста, выберите расположение меню для каждого целевого дистрибутива." #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "Пожалуйста, выберите расположение меню." #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "Невозможно найти дополнительный файл: &1" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "Пожалуйста, выберите целевую директорию для каждого дополнительного файла." #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Система упаковки Debian не может обрабатывать пробелы в именах файлов." #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Система упаковки Debian не может обрабатывать пробелы в директориях." #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "Пакет не может быть сохранён внутри директории проекта." #: FMakeInstall.class:542 msgid "Initial release" msgstr "Первоначальный релиз" #: FMakeInstall.class:802 msgid "Menus" msgstr "Меню" #: FMakeInstall.class:870 msgid "Groups" msgstr "Группы" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "Некорректные символы" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "Вы действительно хотите удалить все лишние зависимости?" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "Вы действительно хотите удалить все лишние файлы?" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "Выбрать директорию назначения" #: FMakeInstall.form:151 msgid "Create package" msgstr "Создать пакет" #: FMakeInstall.form:154 msgid "Package information" msgstr "Информация о пакете" #: FMakeInstall.form:160 msgid "Package name" msgstr "Имя пакета" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "Добавить префикс вендора или имя в имена пакетов" #: FMakeInstall.form:190 #, fuzzy msgid "Add major version number to package names" msgstr "Добавить префикс вендора или имя в имена пакетов" #: FMakeInstall.form:205 msgid "Package version" msgstr "Версия пакета" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "Имя вендора" #: FMakeInstall.form:241 FOption.form:377 msgid "Vendor prefix" msgstr "Префикс вендора" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Информация о мэйнтейнере" #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "URL" #: FMakeInstall.form:344 msgid "Changelog" msgstr "История изменений" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Целевой дистрибутив" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Самораспаковывающийся" #: FMakeInstall.form:612 msgid "Package group" msgstr "Группа пакета" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Пункт меню" #: FMakeInstall.form:654 msgid "Categories" msgstr "Категории" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Файл конфигурации рабочего стола" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "MIME-типы" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" "Введите mime-типы, обрабатываемые вашим приложением.\n" "Пожалуйста, введите один mime-тип в строке.\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Дополнительная настройка" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Следующее будет добавлено в конец файла конфигурации рабочего стола." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Дополнительные зависимости" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Минимальная версия Gambas" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Те же зависимости для всех заданий" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Дополнительные файлы" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Те же файлы для всех целей" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "Дополнительные файлы должны быть расположены в директории Проект текущего проекта; а именно, в директории .hidden проекта на диске." #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Дополнительные тесты autoconf" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Добавить дополнительные тесты для конфигурации процесса.\n" "

Оставьте это поле пустым, если вам это не нужно; или, если вы ничего не знаете о скриптах autoconf." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Директория назначения" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Для каждого дистрибутива создать свои директории" #: FMakeInstall.form:915 msgid "Commands output" msgstr "Вывод команд" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Создать пакет сейчас" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "Пожалуйста, выберите оригинальный архив." #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "Пожалуйста, выберите оригинальный проект." #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Пожалуйста, введите имя для файла патча." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "Патч был успешно создан." #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "Невозможно создать патч." #: FMakePatch.form:21 msgid "Generate patch" msgstr "Создать патч" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "Выбрать оригинал для патча" #: FMakePatch.form:46 msgid "Patch origin" msgstr "Оригинал для патча" #: FMakePatch.form:59 msgid "Project directory" msgstr "Директория проекта" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Именовать патч автоматически" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Редактировать патч" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "Эта мастер-программа создаст патч между оригинальным проектом и его настоящим состоянием." #: FMakePatch.form:91 msgid "Select source archive" msgstr "Выбрать архив исходников" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "*.gz;*.bz2;*.xz" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "Пакеты исходников" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Выбрать директорию проекта" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "Выбрать имя файла для патча" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "*.patch;*.diff" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "Patch/Diff файлы" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "Меню было изменено!" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Пожалуйста, введите имя меню." #: FMenu.class:332 msgid "Bad menu name !" msgstr "Плохое имя меню !" #: FMenu.class:338 msgid "Bad group name !" msgstr "Плохое имя группы !" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Это меню слишком глубокое !" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "изменено" #: FMenu.form:84 msgid "Insert menu" msgstr "Вставить меню" #: FMenu.form:92 msgid "Insert separator" msgstr "Вставить разделитель" #: FMenu.form:100 msgid "Insert menu before" msgstr "Вставить меню до" #: FMenu.form:102 msgid "Insert before" msgstr "Вставить до" #: FMenu.form:108 msgid "Delete menu" msgstr "Удалить меню" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Щёлкнуть по Вставить для добавления нового меню." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Пожалуйста, введите имя базы данных." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Пожалуйста, введите пароль" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Свойства соединений" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Выбрать директорию" #: FNewConnection.class:229 msgid "Create database" msgstr "Создать базу данных" #: FNewConnection.class:241 msgid "Delete database" msgstr "Удалить базу данных" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Невозможно создать базу данных." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "Вы действительно хотите удалить БД '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Невозможно удалить базу данных." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Хост" #: FNewConnection.form:124 msgid "Path" msgstr "Путь" #: FNewConnection.form:154 msgid "No password" msgstr "Нет пароля" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "База данных" #: FNewConnection.form:241 msgid "From" msgstr "Из" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Игнорировать кодировку БД" #: FNewConnection.form:279 msgid "Display metadata" msgstr "Показать метаданные" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "Запомнить структуру базы данных" #: FNewTable.class:33 msgid "Create table" msgstr "Создать таблицу" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Пожалуйста, введите имя новой таблицы." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Таблица '&1' уже существует." #: FNewTranslation.form:10 msgid "New translation" msgstr "Новый перевод" #: FOpenProject.form:22 msgid "Select a project" msgstr "Выбрать проект" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Примеры" #: FOption.class:4 msgid "Amber" msgstr "Янтарь" #: FOption.class:4 msgid "Amethyst" msgstr "Аметист" #: FOption.class:4 msgid "Blues" msgstr "Блюз" #: FOption.class:4 msgid "Emerald" msgstr "Изумруд" #: FOption.class:4 msgid "Gambas" msgstr "Gambas" #: FOption.class:4 msgid "Obsidian" msgstr "Обсидиан" #: FOption.class:4 msgid "Pastel" msgstr "Пастель" #: FOption.class:4 msgid "Quest" msgstr "Поиск" #: FOption.class:4 msgid "Quick" msgstr "Быстро" #: FOption.class:4 msgid "Ruby" msgstr "Рубин" #: FOption.class:4 msgid "Sapphire" msgstr "Сапфир" #: FOption.class:4 msgid "Visual" msgstr "Видимый" #: FOption.class:4 msgid "Zen" msgstr "Дзэн" #: FOption.class:87 msgid "Custom" msgstr "Пользовательский" #: FOption.class:89 msgid "Desktop" msgstr "Рабочий стол" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(По умолчанию)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "Файлы тем подсветки синтаксиса Gambas" #: FOption.class:242 msgid "Export a theme file" msgstr "Экспорт файла тем" #: FOption.class:467 msgid "Select a theme file" msgstr "Выбрать файл темы" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "Вам необходимо перегрузить приложение, чтобы изменения вступили в силу." #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "Вы действительно хотите очистить кэш документации?" #: FOption.class:829 msgid "Unable to clear documentation cache." msgstr "Невозможно очистить кэш документации." #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "Вы действительно хотите удалить этот фрагмент?" #: FOption.class:1190 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "Установить" #: FOption.class:1275 msgid "Network is not available." msgstr "Сеть недоступна." #: FOption.class:1280 msgid "Documentation is up to date." msgstr "Документация в актуальном состоянии." #: FOption.class:1285 msgid "A new documentation is available!" msgstr "Новая документация доступна!" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "Документация недоступна." #: FOption.class:1486 msgid "Cannot download '&1'." msgstr "Невозможно загрузить '&1'." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "Невозможно распаковать документацию." #: FOption.class:1528 msgid "Unable to install documentation." msgstr "Невозможно установить документацию." #: FOption.class:1636 FTestSuite.class:32 msgid "Default" msgstr "" #: FOption.class:1637 msgid "Compact" msgstr "" #: FOption.class:1652 msgid "Current" msgstr "" #: FOption.class:1694 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1796 msgid "Do you really want to delete that layout?" msgstr "" #: FOption.form:294 msgid "Dotted" msgstr "Пунктир" #: FOption.form:305 msgid "Identity" msgstr "Идентичность" #: FOption.form:349 msgid "Package maintainer" msgstr "Мэйнтейнер пакета" #: FOption.form:394 msgid "Default license" msgstr "Лицензия по умолчанию" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "Нет" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Да" #: FOption.form:438 msgid "Projects" msgstr "Проекты" #: FOption.form:455 msgid "Default tab size" msgstr "Размер табуляции по умолчанию" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "пробелов" #: FOption.form:480 msgid "Indent with tab by default" msgstr "Отступ для табуляции по умолчанию" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "Автоматический перенос слов по умолчанию" #: FOption.form:515 msgid "Fold procedures by default" msgstr "Свернуть процедуры по умолчанию" #: FOption.form:532 msgid "Activate version control" msgstr "Активировать контроль версий" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "Восстановление файлов при загрузке проекта" #: FOption.form:561 msgid "Images" msgstr "Изображения" #: FOption.form:573 msgid "Compress PNG images with " msgstr "Сжатие изображений PNG через " #: FOption.form:607 msgid "Automatic translation with " msgstr "Автоматический перевод через " #: FOption.form:636 msgid "Translation engine" msgstr "Механизм перевода" #: FOption.form:645 msgid "Help & applications" msgstr "Справка и приложения" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Справка" #: FOption.form:662 msgid "Show documentation in popups" msgstr "Показать документацию во всплывающих окнах" #: FOption.form:679 msgid "Always display optional messages" msgstr "Всегда отображать опциональные сообщения" #: FOption.form:691 msgid "Documentation" msgstr "Документация" #: FOption.form:702 msgid "Use offline documentation" msgstr "Использовать автономную документацию" #: FOption.form:732 msgid "Download documentation" msgstr "Скачать документацию" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "Конфигурация прокси" #: FOption.form:771 msgid "Clear documentation cache" msgstr "Очистить кэш документации" #: FOption.form:779 msgid "Applications" msgstr "Приложения" #: FOption.form:790 msgid "Browser" msgstr "Браузер" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Терминал" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "Показать отступ с вертикальными линиями" #: FOption.form:850 msgid "Highlight current line" msgstr "Подсветка текущей строки" #: FOption.form:867 msgid "Highlight modified lines" msgstr "Подсветка изменённых строк" #: FOption.form:884 msgid "Show line numbers" msgstr "Показать номера строк" #: FOption.form:901 msgid "Procedure folding" msgstr "Свёртывание процедур" #: FOption.form:918 msgid "Procedure separation" msgstr "Разделение процедур" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "Показать пробелы в конце строки с точками" #: FOption.form:952 msgid "Show Preview" msgstr "Показать предпросмотр" #: FOption.form:970 msgid "Keywords in upper case" msgstr "Ключевые слова в верхнем регисре" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "Отделять статические символы в селекторе методов" #: FOption.form:996 msgid "Code formatting" msgstr "Форматирование кода" #: FOption.form:1002 msgid "Automatic formatting" msgstr "Автоматическое форматирование" #: FOption.form:1013 msgid "Control structure completion" msgstr "Завершение управляющей структуры" #: FOption.form:1030 msgid "Local variable declaration" msgstr "Объявление локальной переменной" #: FOption.form:1047 msgid "Comments insertion" msgstr "Вставка комментариев" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "Закрыть круглые, квадратные скобки" #: FOption.form:1081 msgid "Close strings" msgstr "Закрыть строки" #: FOption.form:1093 msgid "Explicit formating" msgstr "Явно заданное форматирование" #: FOption.form:1104 msgid "Format on load & save" msgstr "Форматировать при загрузке и сохранении" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "Отступ для объявления локальной переменной" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "Удалить ненужные пробелы в конце строки" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "Сохранить последовательные пустые строки" #: FOption.form:1164 msgid "Code snippets" msgstr "Фрагменты кода" #: FOption.form:1180 msgid "Activate code snippets" msgstr "Активировать фрагменты кода" #: FOption.form:1241 msgid "Interface" msgstr "Интерфейс" #: FOption.form:1258 msgid "Activate animations" msgstr "Активировать анимации" #: FOption.form:1275 msgid "Show shadows" msgstr "Показать тени" #: FOption.form:1292 msgid "Show tooltips" msgstr "Показать всплывающие подсказки" #: FOption.form:1309 msgid "Use utility windows" msgstr "Использовать служебные окна" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "Закрыть вкладки средним щелчком мыши" #: FOption.form:1343 msgid "Show file name in window title" msgstr "Показать имя файла в заголовке окна" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "Показать панель отладки, если это необходимо" #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "Шрифты" #: FOption.form:1444 msgid "Global size" msgstr "Глобальный размер" #: FOption.form:1466 msgid "Title size" msgstr "Размер заголовка" #: FOption.form:1488 msgid "Debugger size" msgstr "Размер отладчика" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Печать" #: FOption.form:1580 msgid "Fixed font" msgstr "Фиксированный шрифт" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "Масштабирование (кроме обзора)" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "Установить шрифт Gambas для редактирования кода" #: FOption.form:1673 msgid "Themes" msgstr "Темы" #: FOption.form:1690 msgid "Icon theme" msgstr "Тема значков" #: FOption.form:1706 msgid "Highlighting theme" msgstr "Тема с подсветкой" #: FOption.form:1720 msgid "Import theme" msgstr "Импорт темы" #: FOption.form:1726 msgid "Export theme" msgstr "Экспорт темы" #: FOption.form:1745 #, fuzzy msgid "Invert colors for dark themes" msgstr "Адаптировать цвета к тёмным темам" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Консоль - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Отсоединить консоль" #: FOutput.form:72 msgid "Keep above" msgstr "Держать над" #: FOutput.form:85 msgid "Suspend terminal" msgstr "Приостановить терминал" #: FOutput.form:104 msgid "Entered text echo" msgstr "Введённое эхо текста" #: FOutput.form:106 msgid "Echo" msgstr "Эхо" #: FOutput.form:117 msgid "Open contents" msgstr "Открыть содержимое" #: FOutput.form:130 msgid "Use system charset" msgstr "Использовать системную кодировку" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Невозможно вставить текст." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Содержимое буфера обмена" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Вставить обычно" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Вставить с PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Пожалуйста, введите имя таблицы." #: FPasteTable.class:133 msgid "Table already exists" msgstr "Таблица уже существует" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Скопировать также табличные данные" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "Этот файл не похож на файл патча!" #: FPatch.form:18 msgid "Patch the current project" msgstr "Пропатчить текущий проект" #: FPatch.form:31 msgid "Select patch" msgstr "Выбрать патч" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Возврат" #: FProfile.class:175 msgid "Bad profile file format" msgstr "Плохой формат файла профиля" #: FProfile.class:407 msgid "&1 Mb" msgstr "&1 МБ" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "Общее время &1 мкс" #: FProfile.class:430 msgid "Unable to load profile file: &1" msgstr "Невозможно загрузить файл профиля: &1" #: FProfile.class:647 msgid "Calls" msgstr "Вызовы" #: FProfile.class:650 msgid "Duration" msgstr "Длительность" #: FProfile.class:653 msgid "Average" msgstr "Усреднение" #: FProfile.class:656 msgid "Self" msgstr "Само" #: FProfile.class:1055 msgid "Profile files" msgstr "Файлы профиля" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "Невозможно сохранить профиль." #: FProfile.form:60 msgid "Show relative durations" msgstr "Показать относительные длительности" #: FProfile.form:67 msgid "Show average" msgstr "Показать усреднённо" #: FProfile.form:74 msgid "Save profile" msgstr "Сохранить профиль" #: FProfile.form:126 msgid "Callees" msgstr "Вызываемые методы" #: FProfile.form:138 msgid "Callers" msgstr "Вызывающие" #: FProjectProperty.class:160 msgid "Variable" msgstr "Переменная" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Значение привязки некорректно." #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "&1 не экспортирует никакой класс." #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "&1 уже используется в качестве библиотеки." #: FProjectProperty.class:927 msgid "Modules" msgstr "Модули" #: FProjectProperty.class:928 msgid "Test modules" msgstr "" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "Функция" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "Строки кода" #: FProjectProperty.class:940 #, fuzzy msgid "Average number of lines by function" msgstr "Плохое число измерений" #: FProjectProperty.class:943 msgid "Executable size" msgstr "Размер исполняемого файла" #: FProjectProperty.class:943 msgid "bytes" msgstr "байтов" #: FProjectProperty.class:960 msgid "Information about component" msgstr "Информация о компоненте" #: FProjectProperty.class:966 msgid "Information about library" msgstr "Информация о библиотеке" #: FProjectProperty.class:1345 msgid "Select a Gambas executable" msgstr "Выбрать исполняемый файл Gambas" #: FProjectProperty.class:1346 msgid "Gambas executable" msgstr "Исполняемый файл Gambas" #: FProjectProperty.form:273 msgid "General" msgstr "Основное" #: FProjectProperty.form:328 msgid "Component" msgstr "Компонент" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "Библиотека" #: FProjectProperty.form:328 msgid "Normal" msgstr "Нормальный" #: FProjectProperty.form:335 msgid "Vendor" msgstr "Вендор" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Версия" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "Получить из файла 'VERSION'" #: FProjectProperty.form:380 msgid "Title" msgstr "Заголовок" #: FProjectProperty.form:413 msgid "Information" msgstr "Информация" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "Прогресс" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "Закончен и стабилен" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "Этот компонент скрыт" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "Совместимость до версии" #: FProjectProperty.form:496 msgid "Include information from" msgstr "Включить информацию из" #: FProjectProperty.form:508 msgid "Required features" msgstr "Требуемые характеристики" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "Требуемые и исключённые компоненты" #: FProjectProperty.form:585 msgid "Require" msgstr "Требование" #: FProjectProperty.form:591 msgid "Exclude" msgstr "Исключение" #: FProjectProperty.form:603 msgid "Remove All" msgstr "Удалить все" #: FProjectProperty.form:610 msgid "Components" msgstr "Компоненты" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Библиотеки" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "Путь поиска библиотеки времени выполнения" #: FProjectProperty.form:697 msgid "Additional references" msgstr "Дополнительные ссылки" #: FProjectProperty.form:707 msgid "Environment" msgstr "Окружение" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Вставить" #: FProjectProperty.form:760 msgid "Edition" msgstr "Редакция" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Размер табуляции" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "Показать устаревшие компоненты и элементы управления" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Компиляция" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "Символы модуля по умолчанию общедоступны" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "Элементы управления форм являются общедоступными" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "Активировать предупреждения" #: FProjectProperty.form:916 msgid "Add branch to version number" msgstr "" #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Статистика" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Эта строка и последующие будут проигнорированы" #: FProjectVersion.class:36 msgid "Local" msgstr "Локальный" #: FProjectVersion.class:37 msgid "Remote" msgstr "Удалённый" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Пожалуйста, введите имя пользователя." #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "Пожалуйста, введите имя журнала." #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "Проект не может быть закоммитен." #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "Невозможно обновить проект из репозитория." #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "Проект был успешно обновлён из репозитория." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Контроль версий проекта" #: FProjectVersion.form:65 msgid "Update" msgstr "Обновить" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Аутентификация" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Освежить информацию" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "Журнал" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Некоторые файлы не являются версионными и должны быть добавлены в репозиторий вручную." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Предыдущее описание" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Запрещённые символы в имени элемента управления." #: FProperty.class:383 msgid "This name is already in use." msgstr "Это имя уже используется." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Запрещённые символы в группе элемента управления." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Неверное значение свойства." #: FProperty.class:631 msgid "The name of the control." msgstr "Имя элемента управления." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Группа событий, относящаяся к элементу управления." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Если размер формы и элементов управления должны соответствовать размеру шрифта по умолчанию." #: FProperty.class:661 msgid "If the control is public." msgstr "Если элемент управления является общедоступным." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "Если свойство Текст должно быть переведено." #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Это свойство является виртуальным: оно реализовано лишь в IDE и не существует во время выполнения." #: FProperty.class:814 msgid "None" msgstr "Нет" #: FProperty.form:51 msgid "Lock property" msgstr "Заблокировать свойство" #: FProperty.form:58 msgid "Sort properties" msgstr "Сортировка свойств" #: FProxy.form:37 msgid "Port" msgstr "Порт" #: FProxy.form:76 msgid "Default proxy" msgstr "Прокси по умолчанию" #: FProxy.form:76 msgid "HTTP proxy" msgstr "HTTP-прокси" #: FProxy.form:76 msgid "No proxy" msgstr "Без прокси" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "SOCKS5-прокси" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "Вы не можете публиковать ПО с версией \"0.0\"." #: FPublish.class:89 msgid "Software" msgstr "ПО" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "Проект был успешно опубликован." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Невозможно опубликовать проект." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Пробелы не допускаются." #: FPublish.class:241 msgid "Incorrect version number." msgstr "Неверный номер версии." #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Вы действительно хотите удалить все теги?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Выбрать файл скриншота" #: FPublish.class:329 msgid "Screenshot files" msgstr "Файлы скриншотов" #: FPublish.form:67 msgid "Software description" msgstr "Описание ПО" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "Веб-сайт" #: FPublish.form:113 msgid "Create menu entry" msgstr "Создать пункт меню" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Теги" #: FPublish.form:164 msgid "Sort" msgstr "Сортировать" #: FPublish.form:176 msgid "Screenshot" msgstr "Скриншот" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "Хранить скриншот, хранящийся на сервере" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "Удалить скриншот, хранящийся на сервере" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "Выгрузить новый скриншот, взятый из буфера обмена" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "Выгрузить новый скриншот, взятый из следующего файла:" #: FPublish.form:222 msgid "Dependencies" msgstr "Зависимости" #: FPublish.form:230 msgid "Require Gambas version" msgstr "Требуется версия Gambas" #: FPublish.form:295 msgid "Publish as" msgstr "Опубликовать как" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Настройка границ" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Граница" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Угол" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "Настроить тень" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "Тень" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Настройка кисти" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "Выбрать изображение внутри проекта" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Неверное значение." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Выбрать размер" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Настройка отступов" #: FSave.form:14 msgid "Save modified files" msgstr "Сохранить изменённые файлы" #: FSave.form:42 msgid "Save All" msgstr "Сохранить все" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "Следующие файлы были изменены. Вы хотите их сохранить?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Невозможно сохранить проект внутри его собственной директории." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Невозможно сохранить проект." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Новый проект родительской директории" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Новое имя проекта" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Сделать скриншот" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Искомая строка заменена 1 раз." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Искомая строка заменена &1 раз." #: FSearch.class:630 msgid "One match" msgstr "Одно совпадение" #: FSearch.class:632 msgid "&1 matches" msgstr "&1 совпадений" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "Нет элемента" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Реализации" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Вы действительно хотите заменить каждую строку?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Поиск и замена" #: FSearch.form:105 msgid "Case sensitive" msgstr "С учётом регистра" #: FSearch.form:110 msgid "Words only" msgstr "Только слова" #: FSearch.form:115 msgid "Regular expression" msgstr "Регулярное выражение" #: FSearch.form:120 msgid "Ignore strings" msgstr "Игнорировать строки" #: FSearch.form:125 msgid "Ignore comments" msgstr "Игнорировать комментарии" #: FSearch.form:140 msgid "Search in" msgstr "Где искать" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Завершить текущую функцию" #: FSearch.form:153 msgid "Current file" msgstr "Текущий файл" #: FSearch.form:160 msgid "Source files" msgstr "Файлы исходников" #: FSearch.form:166 msgid "Data files" msgstr "Файлы с данными" #: FSearch.form:197 msgid "Browse" msgstr "Обзор" #: FSearch.form:209 msgid "Replace all" msgstr "Заменить все" #: FSearch.form:220 msgid "Highlight search" msgstr "Поиск с подсветкой" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Выбрать дополнительный файл" #: FSelectIcon.class:37 msgid "Image files" msgstr "Файлы изображений" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "Файлы изображений SVG" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Выбрать изображение" #: FSelectIcon.form:41 msgid "Stock" msgstr "Источник" #: FSelectLibrary.class:64 msgid "unknown" msgstr "неизвестно" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Выбрать библиотеку" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "В вашей системе не найдено ни одной библиотеки." #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Пожалуйста, введите строку триггера." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Эта строка триггера уже используется." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Редактировать фрагмент кода" #: FSnippet.class:67 msgid "New code snippet" msgstr "Новый фрагмент кода" #: FSnippet.form:26 msgid "Trigger string" msgstr "Строка триггера" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Игры" #: FSoftwareFarm.class:50 msgid "Development" msgstr "Разработка" #: FSoftwareFarm.class:52 msgid "Education" msgstr "Образование" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Графика" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "Аудио" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "Видео" #: FSoftwareFarm.class:56 msgid "Office" msgstr "Офис" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Аксессуары" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "Интернет" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Расширения" #: FSoftwareFarm.class:71 msgid "My software" msgstr "Моё ПО" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Другое ПО от" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Всё ПО" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "ПО не найдено." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "Запрос отменён." #: FSoftwareFarm.class:372 msgid "Cancel my vote" msgstr "Отменить мой голос" #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "Обновиться" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "Опубликовано &1 (на &2)" #: FSoftwareFarm.class:559 msgid "Do you really want to download &1?" msgstr "Вы действительно хотите загрузить &1?" #: FSoftwareFarm.class:562 msgid "Unable to download &1:" msgstr "Невозможно загрузить &1:" #: FSoftwareFarm.class:564 msgid "&1 has been successfully downloaded." msgstr "&1 было успешно загружено." #: FSoftwareFarm.class:579 msgid "Do you really want to upgrade to &1?" msgstr "Вы действительно хотите обновиться на &1?" #: FSoftwareFarm.class:582 msgid "Unable to upgrade to &1:" msgstr "Невозможно обновиться на &1:" #: FSoftwareFarm.class:589 msgid "Do you really want to uninstall &1?" msgstr "Вы действительно хотите деинсталлировать &1?" #: FSoftwareFarm.class:592 msgid "Unable to uninstall &1:" msgstr "Невозможно деинсталлировать &1:" #: FSoftwareFarm.class:594 msgid "&1 has been successfully uninstalled." msgstr "&1 было успешно деинсталлировано." #: FSoftwareFarm.class:600 msgid "Do you really want to install &1?" msgstr "Вы действительно хотите установить &1?" #: FSoftwareFarm.class:603 msgid "Unable to install &1:" msgstr "Невозможно установить &1:" #: FSoftwareFarm.class:605 msgid "&1 has been successfully installed." msgstr "&1 было успешно установлено." #: FSoftwareFarm.class:625 msgid "Unable to modify your vote." msgstr "Невозможно изменить ваш голос." #: FSoftwareFarm.class:661 msgid "Do you really want to delete &1 from the farm server?" msgstr "Вы действительно хотите удалить &1 с сервера фермы?" #: FSoftwareFarm.class:665 msgid "Unable to remove &1:" msgstr "Невозможно удалить &1:" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Ферма ПО Gambas" #: FSoftwareFarm.form:159 FTranslate.form:208 msgid "Show" msgstr "Показать" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Установлено" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "Самые скачиваемые" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "Самые последние" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Показать фильтры" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Показать старые версии" #: FSoftwareFarm.form:397 msgid "Download" msgstr "Загрузить" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "Загрузить и установить" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "Голос" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "Пожалуйста, скопируйте эту информацию во все отчёты об ошибках." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Выбрать таблицу" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Невозможно загрузить файл класса" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Это имя уже существует." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Невозможно сохранить проект." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Вы действительно хотите удалить этот запрос?" #: FTestSuite.form:60 #, fuzzy msgid "New test suite" msgstr "Новый фрагмент кода" #: FTestSuite.form:67 #, fuzzy msgid "Duplicate test suite" msgstr "Дублировать выбор" #: FTestSuite.form:74 #, fuzzy msgid "Rename test suite" msgstr "Переименовать таблицу" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "Удалить меню" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "Выбрать все" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "Отменить выбор всего" #: FTestSuite.form:145 #, fuzzy msgid "Test with" msgstr "Открыть с" #: FText.class:12 msgid "Edit '&1' property" msgstr "Редактировать свойство '&1'" #: FText.form:29 msgid "Use a fixed font" msgstr "Использовать фиксированный шрифт" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "Консольный вывод #&1" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "Невозможно сжать файл." #: FTextEditor.class:1888 msgid "Compressed at &1" msgstr "" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "Сортировать по возрастанию" #: FTextEditor.form:175 msgid "Sort descent" msgstr "Сортировать по убыванию" #: FTextEditor.form:221 msgid "Compress file" msgstr "Сжатие файла" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "Полезный совет #&1" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Невозможно прочесть полезный совет!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Показать советы при старте" #: FToolBox.class:397 Project.module:606 msgid "Current project" msgstr "" #: FToolBox.form:58 msgid "Toolbox button size" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Проект пуст. Нет ничего, что можно перевести." #: FTranslate.class:74 msgid "Language" msgstr "Язык" #: FTranslate.class:77 msgid "Not translated" msgstr "Не переведено" #: FTranslate.class:169 msgid "Translation files" msgstr "Файлы переводов" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Невозможно прочесть файл перевода для языка '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Невозможно сохранить перевод." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Вы действительно хотите удалить этот перевод?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Вы действительно хотите перезагрузить этот перевод?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Экспортировать перевод" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "Пожалуйста, выберите файл переводов для импорта." #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "Нет поднятых переводов." #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "Один перевод был поднят." #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "&1 перевода(ов) было поднято." #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Невозможно импортировать перевод." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Кажется, всё правильно." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "Символы переведённой строки не соответствуют исходной непереведённой строке." #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "&1 строк(и). Всё переведено!" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 строк(и). Одна не переведена. &3% выполнено." #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 строк(и). &2 не переведено. &3% выполнено." #: FTranslate.class:1741 msgid "Automatic translation has failed." msgstr "Автоматический перевод не удался." #: FTranslate.class:1753 msgid "Do you want to fill the translation automatically?" msgstr "Вы хотите заполнить перевод автоматически?" #: FTranslate.form:77 msgid "Project translation" msgstr "Перевод проекта" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Автоматический перевод" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Непереведённые строки" #: FTranslate.form:122 msgid "Translated strings" msgstr "Переведённые строки" #: FTranslate.form:126 msgid "All strings" msgstr "Все строки" #: FTranslate.form:197 msgid "Add a new translation" msgstr "Добавить новый перевод" #: FTranslate.form:232 msgid "Save translation" msgstr "Сохранить перевод" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Проверить перевод" #: FTranslate.form:242 msgid "Verify" msgstr "Проверить" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Найти следующую переведённую строку" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Найти предыдущую переведённую строку" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Найти предыдущую непереведённую строку" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Найти следующую непереведённую строку" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Очистить этот перевод" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Эта строка не должна быть переведена" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Копировать непереведённую строку" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Импортировать все переводы рекурсивно" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Заменить существующие переводы" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Импортировать файл перевода" #: FVersionControl.class:16 msgid "Do you want to push the repository?" msgstr "Вы хотите протолкнуть репозиторий?" #: FVersionControl.class:16 msgid "Push" msgstr "Протолкнуть" #: FVersionControl.form:51 msgid "There is nothing to commit." msgstr "Нечего коммитить." #: FVersionControl.form:81 msgid "Do not push to remote repository" msgstr "Не проталкивать в удалённый репозиторий" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Выбрать шрифт" #: FWelcome.class:69 msgid "New project..." msgstr "Новый проект..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Последние проекты" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "Установленное ПО" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Добро пожаловать в Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Аноним" #: FarmRequest.class:125 msgid "No answer." msgstr "Нет ответа." #: FarmRequest.class:167 msgid "Register user" msgstr "Зарегистрировать пользователя" #: FarmRequest.class:242 msgid "Publish project" msgstr "Опубликовать проект" #: FarmRequest.class:363 msgid "Download software" msgstr "Загрузить ПО" #: FarmRequest.class:389 msgid "Delete software" msgstr "Удалить ПО" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Африкаанс (Южная Африка)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Арабский (Египет)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Арабский (Тунис)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Азербайджанский (Азербайджан)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Болгарский (Болгария)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Каталонский (Каталония, Испания)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Валлийский (Великобритания)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Чешский (Чехия)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Датский (Дания)" #: Language.module:34 msgid "German (Germany)" msgstr "Немецкий (Германия)" #: Language.module:35 msgid "German (Belgium)" msgstr "Немецкий (Бельгия)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Греческий (Греция)" #: Language.module:41 msgid "English (common)" msgstr "Английский (общий)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Английский (Великобритания)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Английский (США)" #: Language.module:44 msgid "English (Australia)" msgstr "Английский (Австралия)" #: Language.module:45 msgid "English (Canada)" msgstr "Английский (Канада)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Эсперанто (Где угодно!)" #: Language.module:51 msgid "Spanish (common)" msgstr "Испанский (общий)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Испанский (Испания)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Испанский (Аргентина)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Эстонский (Эстония)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Баскский (Страна Басков)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Фарси (Иран)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Финский (Финляндия)" #: Language.module:68 msgid "French (France)" msgstr "Французский (Франция)" #: Language.module:69 msgid "French (Belgium)" msgstr "Французский (Бельгия)" #: Language.module:70 msgid "French (Canada)" msgstr "Французский (Канада)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Французский (Швейцария)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Галицийский (Испания)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Иврит (Израиль)" #: Language.module:80 msgid "Hindi (India)" msgstr "Хинди (Индия)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Венгерский (Венгрия)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Хорватский (Хорватия)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Индонезийский (Индонезия)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Ирландский (Ирландия)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "Исландский (Исландия)" #: Language.module:98 msgid "Italian (Italy)" msgstr "Итальянский (Италия)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Японский (Япония)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Кхмерский (Камбоджа)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Корейский (Корея)" #: Language.module:110 msgid "Latin" msgstr "Латиница" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Литовский (Литва)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Малаялам (Индия)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Македонский (Македония)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Голландский (Нидерланды)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Голландский (Бельгия)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Норвежский (Норвегия)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Панджаби (Индия)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Польский (Польша)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Португальский (Португалия)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Португальский (Бразилия)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Валенсийский (Валенсия, Испания)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Румынский (Румыния)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Русский (Россия)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Словенский (Словения)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Албанский (Албания)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Сербский (Сербия и Черногория)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Швецкий (Швеция)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Турецкий (Турция)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Украинский (Украина)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Вьетнамский (Вьетнам)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Валлонский (Бельгия)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Упрощённый китайский (Китай)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Традиционный китайский (Тайвань)" #: Language.module:220 msgid "Unknown" msgstr "Неизвестно" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "Невозможно получить пароль." #: MConnection.module:91 msgid "Unable to save password." msgstr "Невозможно сохранить пароль." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Невозможно создать таблицу '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "Невозможно создать таблицу метаданных." #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 не может быть статичным" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 объявление не соответствует" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 объявлен, но не является функцией" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 не является структурой" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 не объявлен" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 должен быть статическим" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: в архиве нет" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: синтаксическая ошибка" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: синтаксическая ошибка в файле формы" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: слишком много вложенных контейнеров" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' уже объявлено" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' неправильно переопределено в классе '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' не является свойством" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' не статический" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' только для чтения" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' статический" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' только для записи" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' или ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "Модуль не может вызывать события" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "Реализация свойств не может быть общедоступной" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "Свойство должно быть общедоступным" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Доступ запрещён" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Имя псевдонима должно быть строкой" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Неоднозначное выражение. Пожалуйста, используйте квадратные скобки" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Аргумент не может быть передан по ссылке" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Массивы структур не поддерживаются" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Плохой архив: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Плохой аргумент" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Плохая символьная константа в строке" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Плохой тип константы" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Плохой обработчик событий в &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Плохое выражение: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Плохая версия файла формы" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "Плохой формат в разделе: " #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Плохая строка формата" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Плохое число измерений" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Плохой файл проекта: строка &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Плохое регулярное выражение: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Плохое конвертирование строки" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Плохой диапазон индекса" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Плохое использование виртуального класса" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Плохая строка версии" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Невозможно изменить текущую директорию на '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Невозможно создать .startup файл" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Невозможно создать файл действий: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Невозможно создать обратный вызов: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Невозможно создать класс информации: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Невозможно создать файл: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Невозможно создать временный файл архива: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Невозможно найти динамическую библиотеку '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Невозможно найти символ '&2' в динамической библиотеке '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "Невозможно наследовать самого себя" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Невозможно наследовать дважды" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "Невозможно создать собственные типы" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Невозможно загрузить класс '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Невозможно загрузить компонент '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Невозможно загрузить файл исходников: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Невозможно создать исполняемый файл: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Невозможно смешивать NEW и встроенный массив" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Невозможно смешивать NEW и встроенную структуру" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Невозможно открыть файл '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Невозможно открыть файл: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Невозможно вызывать события в статической функции" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Невозможно прочитать файл: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Невозможно зарегистрировать класс '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Невозможно удалить файл '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Невозможно переименовать файл '&1' в '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Невозможно запустить дочерний процесс: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Невозможно установить владельца файла: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Невозможно использовать оператор NEW там" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "Класс '&1' несоздаваемый" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Ожидается оператор сравнения" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "Имя компонента должно быть строкой" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Компонент не найден: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "Ожидается строка константы" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "Содержание уже объявлено" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "По умолчанию случай уже определён" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "По умолчанию случай должен быть последним" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Устройство заполнено" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Директория не является пустой" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Деление на ноль" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Динамические символы не могут быть использованы в статической функции" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Встроенные массивы здесь запрещены" #: MErrorMessage.module:90 msgid "End of file" msgstr "Конец файла" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Ожидается оператор равенства или неравенства" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Слишком сложное выражение" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Выражение слишком сложное. Слишком много операндов" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "Внешнее имя библиотеки должно быть строкой" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Файл уже существует" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Файл является директорией" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Файл заблокирован" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Имя файла слишком длинное" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Файл или директория не существует" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "GOSUB запрещён" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "GOTO запрещён" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "Ссылка на свободный объект" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Запрещённая команда" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "Внутренняя ошибка компилятора" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Неверное назначение" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Неверная дата" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Неверный объект" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Неверный путь" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() требует аргумент функции" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "Слишком дальний переход" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Метка '&1' не была объявлена" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Имя библиотеки должно быть строкой" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Переменная цикла уже используется" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "Переменная цикла не может быть аргументом" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "Переменная цикла не может быть глобальной" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME не может быть использован в статической функции" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Математическая ошибка" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Отсутствует #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "Отсутствует ']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "Отсутствует '}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Отсутствует оператор" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Отсутствует правая круглая скобка" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW не может иметь аргументы, переданные по ссылке" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Метод не конкретизирован" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Нет родительского класса" #: MErrorMessage.module:127 msgid "No return value" msgstr "Нет возвращаемого значения" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Нет метода запуска" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Незавершённая строка" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "Не директория: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Не функция" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "Не процедура" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Не массив" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Не перечисление" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Не объект" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Не хватает аргументов для New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Недостаточно аргументов" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Не хватает аргументов для &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "Пока не реализовано" #: MErrorMessage.module:140 msgid "Not supported" msgstr "Не поддерживается" #: MErrorMessage.module:141 msgid "Null object" msgstr "Нулевой объект" #: MErrorMessage.module:142 msgid "Number" msgstr "Число" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "Ожидается число или дата" #: MErrorMessage.module:144 msgid "Number or date" msgstr "Число или дата" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "Число, дата или строка" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "Число, строка или объект" #: MErrorMessage.module:147 msgid "Object" msgstr "Объект" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Вне границ" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Недостаточно памяти" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Вне диапазона" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Переполнение" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "Переопределение унаследованного класса запрещено" #: MErrorMessage.module:153 msgid "Read error" msgstr "Ошибка чтения" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Возвращаемый тип данных не указан в объявлении функции" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "Обнаружена инструкция STOP" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER нельзя использовать в одиночку" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Ошибка сериализации" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Переполнение стека" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Стандартный тип" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Поток закрыт" #: MErrorMessage.module:162 msgid "String expected" msgstr "Ожидается строка" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Структуры должны быть общедоступными" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Подпрограммные аргументы не могут быть переданы по ссылке" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Синтаксическая ошибка" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Синтаксическая ошибка при объявлении функции" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Синтаксическая ошибка в имени события" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Синтаксическая ошибка в режиме открытия файла" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Синтаксическая ошибка в возвращаемом типе" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Синтаксическая ошибка. Ожидается &1" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Синтаксическая ошибка. '...' должен быть последним аргументом" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Синтаксическая ошибка. После SELECT ожидается CASE или DEFAULT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Синтаксическая ошибка. CLASS нуждается в идентификаторе" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Синтаксическая ошибка. Невозможно использовать этот синтаксис при назначении" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Синтаксическая ошибка. INHERITS нуждается в имени класса" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "Синтаксическая ошибка. Ожидается идентификатор" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Синтаксическая ошибка. Неверный идентификатор в имени функции" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Синтаксическая ошибка. Неверный опциональный параметр" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Синтаксическая ошибка. Неверный возвращаемый тип" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Синтаксическая ошибка. Неверный тип описания &1 аргумента" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Синтаксическая ошибка. Неверное описание типа поля &1" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Синтаксическая ошибка. Лишние аргументы" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Синтаксическая ошибка. Точечный синтаксис, используемый вне WITH / END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Синтаксическая ошибка. Для STRUCT необходим идентификатор" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Синтаксическая ошибка. &1 аргумент не является допустимым идентификатором" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Синтаксическая ошибка. &1 поле не является допустимым идентификатором" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Синтаксическая ошибка. VarPtr() принимает только один идентификатор" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Системная ошибка #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "Оператор '!' должен следовать за идентификатором" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "Оператор '.' должен следовать за идентификатором" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "Функция должна принимать фиксированное количество аргументов" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "Специальный метод &1 не может быть функцией" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "Специальный метод &1 реализован быть не может" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "Специальный метод &1 статичным быть не может" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "Специальный метод &1 должен быть функцией" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "Специальный метод &1 должен быть общедоступным" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "Специальный метод &1 должен быть статическим" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "Специальный метод &1 должен возвращать логическое значение" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "Специальный метод &1 должен принимать только переменное число аргументов" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "Специальный метод &1 должен принимать по крайней мере один аргумент" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "Специальный метод &1 не может принимать никаких аргументов" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "Специальный метод должен возвращать целое число" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "Специальный метод должен принимать лишь один аргумент" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "Специальный метод должен принимать лишь два аргумента" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "Подпись специального метода неверна" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Это выражение не может быть оператором" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Это выражение не может быть передано по ссылке" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Слишком много аргументов" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Слишком много аргументов для &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "Слишком много объявлений массива" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "Слишком много констант" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "Используется слишком много различных классов" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "Слишком много размеров" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "Слишком много динамических переменных" #: MErrorMessage.module:219 msgid "Too many events" msgstr "Слишком много событий" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "Слишком много выражений в CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "Слишком много внешних функций" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "Слишком много функций" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "Слишком много нахлёстано #If...#Endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "Слишком много меток" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "Слишком много локальных переменных" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "Слишком много вложенных управляющих структур." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "Слишком много синонимичных свойств" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "Слишком много одновременных новых строк" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "Слишком много статических переменных" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "Слишком много неизвестных символов" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "Обратный слэш" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Несоответствие типов" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Несоответствие типов: хотелось бы &1, получен &2 вместо этого" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "Невозможно создать смыкание" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "Невозможно получить позицию файла" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "Невозможно загрузить файл класса" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "Невозможно подготовить описание функции" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "Неожиданный &1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Неожиданный конец строки" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Неожиданная строка" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Неизвестная ошибка" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Неизвестное расширение файла" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Неизвестный идентификатор: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Неизвестный оператор" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "Неизвестный символ '&2' в классе '&1'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Неизвестный пользователь или группа" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Неподдерживаемый тип данных" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Неподдерживаемое конвертирование строк" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "Бесполезный LOCK" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "Аргумент у VarPtr() должен быть динамической, статической или локальной переменной" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "Пустой идентификатор" #: MErrorMessage.module:253 msgid "Void key" msgstr "Пустой ключ" #: MErrorMessage.module:254 msgid "Write error" msgstr "Ошибка записи" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "невозможно найти компонент" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "невозможно найти библиотеку" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "имя класса, скрытое глобальным объявлением: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "имя класса, скрытое локальным объявлением: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "константа, скрытая локальным объявлением: &1" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "внешняя функция, скрытая локальным объявлением: &1" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "функция, скрытая локальным объявлением: &1" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "глобальная переменная, скрытая локальным объявлением: & 1" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "целое и булевое смешаны с оператором `&1'" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "неинициализированная глобальная переменная: &1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "неинициализированная переменная: &1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "неизвестная ошибка" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "неиспользованный аргумент: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "неспользованная внешняя функция: &1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "неиспользованная функция: &1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "неиспользованная глобальная переменная: &1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "неиспользованная переменная: &1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "невозможно открыть подчинённый псевдотерминал: " #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "невозможно инициализировать псевдотерминал: " #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "невозможно подключить стандартный ввод: " #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "невозможно подключить стандартный вывод и стандартную ошибку: " #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "невозможно запустить исполняемый файл: " #: MHelp.module:313 msgid "No help found." msgstr "Справка не найдена." #: MHelp.module:1006 Wiki.module:799 msgid "This page does not exist." msgstr "Эта страница не существует." #: MMime.module:17 msgid "Plain text" msgstr "Обычный текст" #: MMime.module:18 msgid "HTML text" msgstr "HTML текст" #: MMime.module:19 msgid "Gambas form data" msgstr "Данные формы Gambas" #: MMime.module:20 msgid "Gambas menu data" msgstr "Данные меню Gambas" #: MMime.module:21 msgid "Gambas project file path" msgstr "Путь к файлу проекта Gambas" #: MMime.module:22 msgid "URI list" msgstr "Список URI" #: MMime.module:33 msgid "Unknown format" msgstr "Неизвестный формат" #: MTheme.module:6 msgid "Alternate background" msgstr "Альтернативный фон" #: MTheme.module:6 msgid "Characters" msgstr "Символы" #: MTheme.module:6 msgid "Comments" msgstr "Комментарии" #: MTheme.module:6 msgid "Current line" msgstr "Текущая строка" #: MTheme.module:6 msgid "Data types" msgstr "Типы данных" #: MTheme.module:6 msgid "Editing line" msgstr "Редактирование строки" #: MTheme.module:6 msgid "Errors" msgstr "Ошибки" #: MTheme.module:6 msgid "Highlighting" msgstr "Подсветка" #: MTheme.module:6 msgid "Keywords" msgstr "Ключевые слова" #: MTheme.module:6 msgid "Labels" msgstr "Метки" #: MTheme.module:6 msgid "Normal text" msgstr "Обычный текст" #: MTheme.module:6 msgid "Numbers" msgstr "Числа" #: MTheme.module:6 msgid "Operators" msgstr "Операторы" #: MTheme.module:6 msgid "Preprocessor" msgstr "Препроцессор" #: MTheme.module:6 msgid "Strings" msgstr "Строки" #: MTheme.module:6 msgid "Subroutines" msgstr "Подпрограммы" #: MTheme.module:6 msgid "Symbols" msgstr "Символы" #: Package.module:83 msgid "'&1' is missing." msgstr "'&1' отсутствует." #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "Отсутствуют '&1' и '&2'." #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Сохранение CHANGELOG файла." #: Package.module:735 msgid "Making &1 support package..." msgstr "Создание пакета поддержки &1..." #: Package.module:790 msgid "Creating package for &1." msgstr "Создание пакета для &1." #: Package.module:822 msgid "The package build has failed." msgstr "Сборка пакета завершилась ошибкой." #: Package.module:894 msgid "Making build directory." msgstr "Создание директории сборки." #: Package.module:953 msgid "Creating desktop file..." msgstr "Создание ярлыка рабочего стола..." #: Package.module:961 msgid "Sources are being debianizated." msgstr "Исходники будут переведены в deb." #: Package.module:1168 msgid "Creating package..." msgstr "Создание пакета..." #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' завершился с ошибкой." #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "Инициализация директории ~/RPM." #: Package.module:1476 msgid "Creating source package." msgstr "Создание пакета исходников." #: Package.module:1500 msgid "Creating .spec file." msgstr "Создание .spec файла." #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' вернул следующий код ошибки:" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "'tar' вернул следующий код ошибки:" #: Package.module:2442 msgid "'makepkg' has failed." msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "Директория не является проектом Gambas" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "Неподдерживаемый формат архива исходников" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "Патч не применён:\n" #: Project.module:231 msgid "Automation" msgstr "Автоматизация" #: Project.module:232 msgid "Basic" msgstr "Основы" #: Project.module:234 msgid "Drawing" msgstr "Рисование" #: Project.module:237 msgid "Miscellaneous" msgstr "Разное" #: Project.module:238 msgid "Networking" msgstr "Сеть" #: Project.module:239 msgid "OpenGL" msgstr "OpenGL" #: Project.module:241 msgid "Sound" msgstr "Звук" #: Project.module:243 msgid "Controls" msgstr "Элементы управления" #: Project.module:244 msgid "Multimedia" msgstr "Мультимедиа" #: Project.module:245 msgid "Web" msgstr "Веб" #: Project.module:422 msgid "File not found!" msgstr "Файл не найден!" #: Project.module:534 msgid "This project does not exist." msgstr "Этот проект не существует." #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "Невозможно найти исполняемый файл в директории Gambas IDE:\n" "\n" "&1" #: Project.module:565 msgid "This is not a Gambas project." msgstr "Это не проект Gambas." #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Это проект Gambas 1.0 .Используйте Gambas 2 для его конвертации." #: Project.module:571 msgid "Convert" msgstr "Конвертировать" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Это проект Gambas 2.0\n" "\n" "Вы хотите сконвертировать его?" #: Project.module:589 msgid "Do not open" msgstr "Не открывать" #: Project.module:589 msgid "Open after all" msgstr "Открыть просле всех" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Этот проект, кажется, уже открыт.\n" "\n" "Открытие одного и того же проекта дважды может привести к потере данных." #: Project.module:595 msgid "It cannot be converted." msgstr "Это не может быть сконвертировано." #: Project.module:595 msgid "This project is read-only." msgstr "Этот проект только для чтения." #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "Копирование проекта внутри временной директории..." #: Project.module:616 msgid "Unable to create temporary directory" msgstr "Невозможно создать временную директорию" #: Project.module:646 msgid "Converting project structure..." msgstr "Конвертирование структуры проекта..." #: Project.module:679 msgid "Applying conversion..." msgstr "Применение конвертирования..." #: Project.module:685 msgid "Unable to apply conversion" msgstr "Невозможно применить это конвертирование" #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "Некоторые библиотеки, используемые в проекте, отсутствуют." #: Project.module:824 msgid "Cannot open project file :" msgstr "Невозможно открыть файл проекта:" #: Project.module:876 msgid "Cannot reload file." msgstr "Невозможно перезагрузить файл." #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "Альфа-версия, Запуск — на свой СТРАХ и РИСК!" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "Разрабатываемая версия. Запуск — на свой СТРАХ и РИСК!" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "Невозможно открыть бинарный файл." #: Project.module:2079 msgid "Cannot open file." msgstr "Невозможно открыть файл." #: Project.module:2237 msgid "&1th" msgstr "&1ый" #: Project.module:2290 msgid "in form definition" msgstr "в описании формы" #: Project.module:2297 msgid "in &1." msgstr "в &1." #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Часть файлов исходников проекта конфликтует.\n" "Пожалуйста, исправьте это, если вы хотите скомпилировать проект." #: Project.module:2462 msgid "Compiling project" msgstr "Компиляция проекта" #: Project.module:2720 msgid "File already exists." msgstr "Файл уже есть." #: Project.module:2753 msgid "Directory already exists." msgstr "Директория уже существует." #: Project.module:2765 msgid "Cannot link template file." msgstr "Невозможно слинковать файл шаблона." #: Project.module:2771 msgid "Cannot copy template file." msgstr "Невозможно скопировать файл шаблона." #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "Содержимое файла VERSION неверно." #: Project.module:2999 msgid "Cannot install library in &1." msgstr "Невозможно установить библиотеку в &1." #: Project.module:3041 msgid "Making executable..." msgstr "Создание исполняемого файла..." #: Project.module:3099 msgid "Cannot make executable." msgstr "Невозможно создать исполняемый файл." #: Project.module:3555 msgid "Some components are missing: &1" msgstr "Некоторые компоненты отсутствуют: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "Невозможно записать файл проекта." #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "Невозможно создать ярлык рабочего стола." #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "Директория будет удалена при следующем коммите." #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "Вы должны определить класс запуска или форму!" #: Project.module:4120 msgid "Please type a name." msgstr "Пожалуйста, введите имя." #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "Это имя содержит запрещённые символы:" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "Имя не может начинаться с точки." #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "Это имя уже используется. Выберите другое." #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Имя класса должно начинаться с буквы или подчёркивания с последующей буквой или цифрой." #: Project.module:4211 msgid "Destination already exists." msgstr "Назначение уже существует." #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "Невозможно переименовать '&1'" #: Project.module:4480 msgid "Please type a project name." msgstr "Пожалуйста, введите имя проекта." #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "Имя проекта не может начинаться с точки." #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Не ASCII-символы запрещены для имени проекта." #: Project.module:4492 msgid "SPACE" msgstr "ПРОБЕЛ" #: Project.module:4492 msgid "The following characters are forbidden in a project name:" msgstr "В имени проекта нельзя использовать символы:" #: Project.module:4499 msgid "This project already exists." msgstr "Этот проект уже существует." #: Project.module:4502 msgid "The project directory already exists." msgstr "Директория проекта уже существует." #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Директория проекта не может быть создана, так как существует файл с таким же именем." #: Project.module:4552 msgid "Unable to create source archive." msgstr "Невозможно создать архив исходников." #: Project.module:4579 msgid "Create source package" msgstr "Создать пакет исходников" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "Невозможно скопировать файл &1." #: Project.module:4914 msgid "Cannot create link &1." msgstr "Невозможно создать ссылку &1." #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "Невозможно переместить директорию в себя." #: Project.module:4993 msgid "Cannot move file &1." msgstr "Невозможно переместить файл &1." #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "Следующие файлы не могут быть удалены:" #: Project.module:5686 msgid "Project cleanup..." msgstr "Приборка проекта..." #: Project.module:5692 msgid "Project files conversion..." msgstr "Конвертирование файлов проекта..." #: Project.module:5722 msgid "Unable to convert &1" msgstr "Невозможно сконвертировать &1" #: Project.module:6002 msgid "Unable to update forms." msgstr "Невозможно обновить формы." #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "Программа &1 в вашей системе не установлена." #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "Следующие программы в вашей системе не установлены: &1." #: Project.module:6186 msgid "Unable to read component description file." msgstr "Невозможно прочитать файл описания компонентов." #: Project.module:6247 msgid "Cannot write component description file." msgstr "Невозможно записать файл описания компонента." #: Project.module:6308 msgid "Project templates" msgstr "Шаблоны проекта" #: Project.module:6354 msgid "Unable to run terminal." msgstr "Невозможно запустить терминал." #: Save.module:57 msgid "Cannot save file !" msgstr "Невозможно сохранить файл !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Опубликован &1" #: Util.module:39 msgid "&1 B" msgstr "&1 Б" #: Util.module:41 msgid "&1 KiB" msgstr "&1 кБ" #: Util.module:43 msgid "&1 MiB" msgstr "&1 МБ" #: Util.module:45 msgid "&1 GiB" msgstr "&1 ГБ" #: VersionControl.module:139 msgid "Command timeout." msgstr "Тайм-аут команды." #: VersionControl.module:139 msgid "Please check your network connection." msgstr "Пожалуйста, проверьте ваше сетевое соединение." #: VersionControl.module:521 msgid "Do you really want to put this project under version control with &1?" msgstr "Вы действительно хотите поставить этот проект под контроль версий с &1?" #: VersionControl.module:535 msgid "The project could not be put under version control." msgstr "Проект не может быть поставлен под контроль версий." #: VersionControl.module:620 msgid "Unable to switch to branch `&1`." msgstr "Невозможно переключиться на ветвь `&1`." #: VersionControl.module:642 msgid "With &1" msgstr "С &1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Имеется &1 классов и &2 символов во всех компонентах Gambas." #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "Эта страница на этом языке не существует." #: WikiMarkdown.class:142 msgid "Since" msgstr "Поскольку" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Этот компонент не существует." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Этот класс не существует." #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Этот символ не существует." #~ msgid "Current procedure" #~ msgstr "Текущая процедура" #~ msgid "Arguments" #~ msgstr "Аргументы" #~ msgid "QT5" #~ msgstr "QT5" #~ msgid "No argument" #~ msgstr "Нет аргумента" gambas-3.16.3/app/src/gambas3/.lang/sl.po000066400000000000000000004647061411575327000177250ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLocal.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FLocal.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FStack.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWatch.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FWatch.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /usr/install/gambas-0.93b/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2019-05-25 21:40 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 "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Integrirano razvojno okolje za Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:603 #, fuzzy msgid "Static properties" msgstr "Lastnosti projekta" #: CClassInfo.class:604 msgid "Static variables" msgstr "" #: CClassInfo.class:605 msgid "Static methods" msgstr "" #: CClassInfo.class:606 MTheme.module:6 msgid "Constants" msgstr "Konstante" #: CClassInfo.class:623 FMain.form:555 FProperty.form:23 msgid "Properties" msgstr "Lastnosti" #: CClassInfo.class:624 msgid "Variables" msgstr "Spremenljivke" #: CClassInfo.class:625 msgid "Methods" msgstr "" #: CClassInfo.class:626 msgid "Events" msgstr "Dogodki" #: CClassInfo.class:648 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:650 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:656 msgid "in &1" msgstr "" #: CClassInfo.class:664 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:669 msgid "This class is &1." msgstr "" #: CClassInfo.class:669 msgid "creatable" msgstr "" #: CClassInfo.class:674 msgid "This class is static." msgstr "" #: CClassInfo.class:676 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:682 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:682 msgid "function" msgstr "" #: CClassInfo.class:687 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:687 msgid "read" msgstr "" #: CClassInfo.class:687 msgid "write" msgstr "" #: CClassInfo.class:689 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:689 msgid "write-only" msgstr "" #: CClassInfo.class:692 Project.module:1638 msgid "read-only" msgstr "samo za branje" #: CClassInfo.class:697 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:697 msgid "enumerable" msgstr "" #: CClassInfo.class:848 msgid "This class reimplements" msgstr "" #: CClassInfo.class:850 msgid "This class inherits" msgstr "" #: CClassInfo.class:865 msgid "This class is virtual." msgstr "" #: CClassInfo.class:867 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:892 #, fuzzy msgid "static function" msgstr "Cilj" #: CClassInfo.class:899 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:901 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:913 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:913 msgid "statically enumerable" msgstr "" #: CComponent.class:489 msgid "Loading information on component &1..." msgstr "" #: CComponent.class:1594 FFileProperty.class:164 FProjectProperty.class:931 msgid "Classes" msgstr "Razredi" #: CComponent.class:1638 FDebugInfo.class:40 FMain.form:875 msgid "Class" msgstr "Razred" #: CComponent.class:1640 FConnectionEditor.class:320 FMakeInstall.form:288 #: FProjectProperty.form:367 FPublish.form:126 FSoftwareFarm.form:323 msgid "Description" msgstr "Opis" #: CComponent.class:1667 msgid "This component is not stable yet." msgstr "" #: CComponent.class:1669 #, fuzzy msgid "This component is deprecated." msgstr "Ta projekt je na voljo samo za branje." #: CComponent.class:1678 FProjectVersion.class:287 msgid "Author" msgstr "Avtor" #: CComponent.class:1680 FAbout.class:210 FProjectProperty.form:379 msgid "Authors" msgstr "Avtorji" #: CComponent.class:1690 msgid "Implements" msgstr "" #: CComponent.class:1702 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "" #: CComponent.class:1717 msgid "Excludes" msgstr "" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "" #: CDocumentation.class:78 msgid "Default icon theme" msgstr "" #: CDocumentation.class:79 #, fuzzy msgid "Terminal emulator" msgstr "Terminal" #: CDocumentation.class:80 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:81 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:82 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:83 msgid "OpenGL with GTK+ toolkit" msgstr "" #: CDocumentation.class:84 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:85 msgid "QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:86 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:87 msgid "QT4/QT5 switcher component" msgstr "" #: CDocumentation.class:88 msgid "QT4/QT5 OpenGL switcher component" msgstr "" #: CDocumentation.class:89 msgid "QT4/QT5 WebKit switcher component" msgstr "" #: CDocumentation.class:90 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:91 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:92 msgid "Image management" msgstr "" #: CDocumentation.class:93 msgid "Image filtering component" msgstr "" #: CDocumentation.class:94 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:95 FProjectProperty.form:511 msgid "Image loading and saving" msgstr "" #: CDocumentation.class:96 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:97 msgid "XML tools based on libxml" msgstr "" #: CDocumentation.class:98 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:99 msgid "Online map viewer" msgstr "" #: CDocumentation.class:100 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:101 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:102 #, fuzzy msgid "Multimedia controls" msgstr "Večpredstavnost" #: CDocumentation.class:103 msgid "Memcached client" msgstr "" #: CDocumentation.class:104 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:105 msgid "MySQL specific routines" msgstr "" #: CDocumentation.class:106 msgid "NCurses library" msgstr "" #: CDocumentation.class:107 msgid "Network programming" msgstr "" #: CDocumentation.class:108 msgid "Network high-level protocols management" msgstr "" #: CDocumentation.class:109 msgid "POP3 client" msgstr "" #: CDocumentation.class:110 msgid "SMTP client" msgstr "" #: CDocumentation.class:111 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:112 msgid "3D programming with OpenGL" msgstr "" #: CDocumentation.class:113 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:114 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:115 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:116 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:117 msgid "GNU command option parser" msgstr "" #: CDocumentation.class:118 msgid "Perl-compatible Regular Expression Matching" msgstr "" #: CDocumentation.class:119 msgid "PDF renderer based on Poppler library" msgstr "" #: CDocumentation.class:120 msgid "QT4 toolkit" msgstr "" #: CDocumentation.class:121 msgid "QT4 toolkit extension" msgstr "" #: CDocumentation.class:122 msgid "QT4 WebKit component" msgstr "" #: CDocumentation.class:123 msgid "OpenGL with QT4 toolkit" msgstr "" #: CDocumentation.class:124 msgid "QT5 toolkit" msgstr "" #: CDocumentation.class:125 msgid "QT5 WebKit component" msgstr "" #: CDocumentation.class:126 msgid "OpenGL with QT5 toolkit" msgstr "" #: CDocumentation.class:127 msgid "QT5 toolkit extension" msgstr "" #: CDocumentation.class:128 msgid "Report designer" msgstr "" #: CDocumentation.class:130 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:131 msgid "SDL library" msgstr "" #: CDocumentation.class:132 msgid "SDL sound & CD-ROM management" msgstr "" #: CDocumentation.class:133 #, fuzzy msgid "SDL2 component" msgstr "Komponenta" #: CDocumentation.class:134 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:135 msgid "Application settings management" msgstr "" #: CDocumentation.class:136 msgid "Signals management" msgstr "" #: CDocumentation.class:137 #, fuzzy msgid "Terminal management" msgstr "Razvrstitev" #: CDocumentation.class:138 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:139 #, fuzzy msgid "Utility component" msgstr "Komponenta" #: CDocumentation.class:140 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:141 msgid "Video capture" msgstr "" #: CDocumentation.class:142 msgid "Visual Basic compatibility" msgstr "" #: CDocumentation.class:143 msgid "XML tools" msgstr "" #: CDocumentation.class:144 msgid "HTML generator" msgstr "" #: CDocumentation.class:145 msgid "XML-RPC protocol" msgstr "" #: CDocumentation.class:146 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:147 msgid "Web applications tools" msgstr "" #: CDocumentation.class:148 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:149 msgid "Web application development" msgstr "" #: CDocumentation.class:155 FProjectProperty.form:499 msgid "Graphical form management" msgstr "" #: CDocumentation.class:156 FProjectProperty.form:505 msgid "Event loop management" msgstr "" #: CDocumentation.class:158 FProjectProperty.form:522 msgid "OpenGL display" msgstr "" #: CDocumentation.class:159 msgid "Complex numbers" msgstr "" #: CDocumentation.class:160 FProjectProperty.form:528 msgid "XML management" msgstr "" #: CInsertColor.class:238 FEditor.form:205 FTextEditor.form:205 msgid "Insert color" msgstr "" #: CInsertDate.class:58 FEditor.form:514 FTextEditor.form:498 #, fuzzy msgid "Insert today's date" msgstr "&Vstavi" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:50 LibraryItem.class:54 msgid "Location" msgstr "Lokacija" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "" #: CModule.class:28 FEditor.form:402 FForm.form:462 FMain.form:882 msgid "Form" msgstr "Forma" #: CModule.class:28 msgid "Forms" msgstr "Forme" #: CModule.class:28 msgid "Gambas forms" msgstr "Gambas forme" #: CModule.class:29 msgid "Gambas web pages" msgstr "" #: CModule.class:29 FMain.form:889 msgid "WebPage" msgstr "" #: CModule.class:29 msgid "WebPages" msgstr "" #: CModule.class:30 msgid "Gambas reports" msgstr "" #: CModule.class:30 FMain.form:896 msgid "Report" msgstr "" #: CModule.class:30 msgid "Reports" msgstr "" #: CModule.class:31 #, fuzzy msgid "Gambas web forms" msgstr "Gambas forme" #: CModule.class:31 FMain.form:903 #, fuzzy msgid "WebForm" msgstr "Forma" #: CModule.class:31 #, fuzzy msgid "WebForms" msgstr "Forme" #: CModule.class:32 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas forme" #: CModule.class:32 FMain.form:910 #, fuzzy msgid "TermForm" msgstr "Forma" #: CModule.class:32 #, fuzzy msgid "TermForms" msgstr "Forme" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 msgid "IDE extensions" msgstr "" #: CProjectList.class:544 CVersionControlGit.class:373 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:289 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileProperty.class:144 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FList.form:128 FMain.class:245 #: FMakeInstall.class:345 FMenu.form:414 FNewConnection.form:318 #: FNewTable.form:86 FNewTranslation.form:21 FOption.class:863 #: FPasteSpecial.form:86 FPasteTable.form:105 FProjectChooser.form:73 #: FProjectProperty.form:932 FProjectVersion.class:211 FProxy.form:57 #: FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:946 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:87 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:552 FTableChooser.form:68 FText.form:40 #: FTranslate.class:670 FVersionControl.form:78 FWebFontChooser.form:129 #: Project.module:555 VersionControl.module:383 msgid "Cancel" msgstr "Prekini" #: CProjectList.class:544 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: CProjectList.class:544 FSelectLibrary.form:48 FSoftwareFarm.class:377 msgid "Uninstall" msgstr "" #: CProjectList.class:547 #, fuzzy msgid "Unable to uninstall software:" msgstr "Povezava s podatkovno zbirko ni uspela." #: CProjectList.class:551 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Paketi so bili uspešno izdelani." #: CProjectTree.class:96 msgid "Files" msgstr "" #: CProjectTree.class:343 FHelpShortcut.form:22 FMain.form:413 #: FSearch.class:111 FSelectIcon.form:31 msgid "Project" msgstr "Projekt" #: CProjectTree.class:346 msgid "Sources" msgstr "Izvorne kode" #: CProjectTree.class:348 msgid "Connections" msgstr "Povezave" #: CProjectTree.class:349 msgid "Public" msgstr "" #: CProjectTree.class:350 msgid "Data" msgstr "Podatki" #: CRecentProject.class:68 FMain.class:714 msgid "Today" msgstr "Danes" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Včeraj" #: CRecentProject.class:72 msgid "Two days ago" msgstr "" #: CRecentProject.class:74 msgid "This week" msgstr "" #: CRecentProject.class:76 msgid "This month" msgstr "" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2710 FMenu.class:74 msgid "Ignore" msgstr "Prezri" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "Povezava s podatkovno zbirko ni uspela." #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Izdelava izvršljive datoteke" #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Ne morem izbrisati datoteke ali mape" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Včeraj" #: CSoftware.class:665 msgid "&1 days ago" msgstr "" #: CSoftware.class:671 msgid "last week" msgstr "" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 msgid "last month" msgstr "" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 msgid "on &1" msgstr "" #: CVersionControlGit.class:266 #, fuzzy msgid "Unable to push the project." msgstr "Povezava s podatkovno zbirko ni uspela." #: CVersionControlGit.class:280 CVersionControlSubversion.class:296 msgid "Local root path" msgstr "" #: CVersionControlGit.class:283 msgid "Last commit" msgstr "" #: CVersionControlGit.class:284 CVersionControlSubversion.class:298 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:285 CVersionControlSubversion.class:299 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:292 #, fuzzy msgid "Current branch" msgstr "Trenutna vrstica" #: CVersionControlGit.class:293 msgid "Origin" msgstr "" #: CVersionControlGit.class:300 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:302 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:304 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:311 #, fuzzy msgid "None in the current project." msgstr "Ne morem ustvariti projekta!" #: CVersionControlGit.class:313 #, fuzzy msgid "One in the current project." msgstr "Ne morem ustvariti projekta!" #: CVersionControlGit.class:315 #, fuzzy msgid "&1 in the current project." msgstr "Nedavni projekti" #: CVersionControlGit.class:319 #, fuzzy msgid "Status" msgstr "Statistika" #: CVersionControlGit.class:322 CVersionControlSubversion.class:314 #, fuzzy msgid "Remote repository URL" msgstr "Skladišče" #: CVersionControlGit.class:373 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:373 Design.module:508 FColorChooser.form:62 #: FConnectionEditor.class:700 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FList.form:122 FMenu.form:409 FNewConnection.form:312 FNewTable.form:80 #: FNewTranslation.form:15 FPasteSpecial.form:80 FProjectProperty.form:926 #: FProxy.form:63 FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:82 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:69 #: FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:411 msgid "Solve conflict." msgstr "" #: CVersionControlSubversion.class:297 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:315 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:316 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:317 msgid "Remote last commit date" msgstr "" #: CWelcome.class:116 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:116 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:221 Project.module:2233 msgid "first" msgstr "" #: Design.module:223 Project.module:2235 msgid "second" msgstr "" #: Design.module:225 Project.module:2237 msgid "third" msgstr "" #: Design.module:319 Project.module:2296 msgid "in &1:&2." msgstr "" #: Design.module:432 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:436 #, fuzzy msgid "The program has been terminated." msgstr "" "Program je vrnil\n" "vrednost: &1" #: Design.module:442 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Program je vrnil\n" "vrednost: &1" #: Design.module:968 msgid "Output terminal" msgstr "" #: Design.module:996 msgid "No terminal emulator found." msgstr "" #: FAbout.class:205 FMakeInstall.form:306 msgid "License" msgstr "" #: FAbout.class:229 msgid "Financial support" msgstr "" #: FAbout.form:12 FMain.form:1250 FWelcome.class:75 msgid "About Gambas" msgstr "O Gambasu" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "" #: FColorChooser.form:27 FSoftwareFarm.class:52 msgid "System" msgstr "Sistem" #: FColorChooser.form:35 msgid "Free" msgstr "Prosto" #: FComponentChooser.class:331 FProjectProperty.form:416 msgid "Not finished but stable" msgstr "" #: FComponentChooser.class:333 FProjectProperty.form:416 msgid "Experimental" msgstr "Poskusno" #: FComponentChooser.class:335 msgid "Stable" msgstr "" #: FComponentChooser.class:337 FProjectProperty.form:416 msgid "Deprecated" msgstr "" #: FComponentChooser.class:551 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:553 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:562 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:563 msgid "Keep" msgstr "" #: FComponentChooser.class:563 FDebugInfo.form:209 msgid "Remove all" msgstr "" #: FComponentChooser.class:668 msgid "These components are incompatible:
&1." msgstr "" #: FComponentChooser.class:681 msgid "The &1 component needs one of the following components:
&2." msgstr "" #: FComponentChooser.class:688 msgid "The &1 component needs the &2 component." msgstr "" #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Izberi projekt" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:354 FForm.form:439 #: FHelpBrowser.form:79 FImageEditor.form:377 FMain.form:363 #: FTextEditor.form:351 FTranslate.form:92 Project.module:846 msgid "Reload" msgstr "Ponovno naloži" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:335 msgid "Zoom in" msgstr "Po&večaj" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:343 msgid "Zoom out" msgstr "Zmanjšaj" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1594 msgid "&Edit" msgstr "Ur&edi" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:56 FImageEditor.form:618 msgid "Text" msgstr "Besedilo" #: FConflict.class:141 FMain.form:920 FReportBrushChooser.form:49 #: Project.module:232 msgid "Image" msgstr "Slika" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "" #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" #: FConflict.class:267 msgid "Conflict files" msgstr "" #: FConflict.form:31 msgid "Version conflict" msgstr "" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:124 FForm.form:158 FImageEditor.form:138 FMain.form:1013 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:125 msgid "Cut" msgstr "Izreži" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:131 FForm.form:165 FImageEditor.form:146 FList.form:99 #: FMain.form:1020 FMakeInstall.form:873 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:62 FTextEditor.form:132 #: FTranslate.form:113 msgid "Copy" msgstr "Kopiraj" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:138 FForm.form:178 FImageEditor.form:153 FList.form:105 #: FMain.form:1027 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:139 msgid "Paste" msgstr "Prilepi" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:107 FFieldChooser.form:127 FForm.form:141 FImageEditor.form:119 #: FList.form:111 FOption.form:1129 FProjectVersion.form:252 #: FTextEditor.form:108 msgid "Undo" msgstr "Razveljavi" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:114 FForm.form:148 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:115 msgid "Redo" msgstr "Ponovno uveljavi" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:533 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:517 msgid "Indent" msgstr "Zamik" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:541 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:525 msgid "Unindent" msgstr "Primik" #: FConflict.form:141 FMain.form:356 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Odpri" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:360 FForm.form:445 FImageEditor.form:384 FMain.form:372 #: FMenu.class:74 FSaveProjectAs.form:87 FTextEditor.form:357 #: FTranslate.form:226 msgid "Save" msgstr "Shrani" #: FConflict.form:160 msgid "Solve" msgstr "" #: FConflict.form:166 FConflictEditor.form:306 FDebugInfo.form:296 #: FEditor.form:347 FFileProperty.form:76 FForm.form:432 FImageEditor.form:391 #: FMain.form:388 FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:68 #: FTextEditor.form:364 FTips.form:83 FTranslate.form:403 msgid "Close" msgstr "Zapri" #: FConflictEditor.class:956 FEditor.class:2675 FTextEditor.class:1119 msgid "(Declarations)" msgstr "" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:144 FTextEditor.form:145 msgid "Advanced" msgstr "Napredno" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:149 msgid "Upper case" msgstr "" #: FConflictEditor.form:145 FEditor.form:148 FTextEditor.form:156 msgid "Lower case" msgstr "" #: FConflictEditor.form:155 FEditor.form:165 FTextEditor.form:181 msgid "Comment" msgstr "V komentar" #: FConflictEditor.form:162 FEditor.form:172 FTextEditor.form:188 msgid "Uncomment" msgstr "Iz komentarja" #: FConflictEditor.form:172 FEditor.form:182 FPasteSpecial.form:19 #: FTextEditor.form:198 msgid "Paste special" msgstr "" #: FConflictEditor.form:183 FEditor.form:215 FImageEditor.form:222 #: FTextEditor.form:234 msgid "Select All" msgstr "Izberi vse" #: FConflictEditor.form:193 FEditor.form:230 FGotoLine.form:12 #: FTextEditor.form:244 msgid "Go to line" msgstr "Pojdi na vrstico" #: FConflictEditor.form:198 FEditor.form:235 FTextEditor.form:249 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:250 FTextEditor.form:257 msgid "Find next" msgstr "" #: FConflictEditor.form:213 FEditor.form:257 FTextEditor.form:264 msgid "Find previous" msgstr "" #: FConflictEditor.form:222 FEditor.form:266 FImageEditor.form:330 #: FMain.form:705 FTextEditor.form:273 msgid "View" msgstr "Prikaži" #: FConflictEditor.form:226 FEditor.form:270 FTextEditor.form:277 msgid "Automatic word wrap" msgstr "" #: FConflictEditor.form:233 FTextEditor.form:284 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:277 FTextEditor.form:291 msgid "No split" msgstr "" #: FConflictEditor.form:246 FEditor.form:283 FTextEditor.form:297 msgid "Horizontal split" msgstr "" #: FConflictEditor.form:253 FEditor.form:290 FTextEditor.form:304 msgid "Vertical split" msgstr "" #: FConflictEditor.form:260 FImportTable.form:90 FTextEditor.form:311 msgid "End of line" msgstr "Konec vrstice" #: FConflictEditor.form:263 FTextEditor.form:314 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:319 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:324 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:408 FMain.form:976 FTextEditor.form:334 msgid "Open code" msgstr "" #: FConflictEditor.form:316 FEditor.form:370 FPasteSpecial.form:60 #: FTextEditor.form:374 msgid "Paste as string" msgstr "" #: FConflictEditor.form:321 FEditor.form:375 FPasteSpecial.form:65 #: FTextEditor.form:379 msgid "Paste as multi-line string" msgstr "" #: FConflictEditor.form:326 FEditor.form:380 FPasteSpecial.form:50 #: FTextEditor.form:384 msgid "Paste as comments" msgstr "" #: FConflictEditor.form:342 FTextEditor.form:400 msgid "Text editor" msgstr "" #: FConflictEditor.form:348 FForm.form:468 FTextEditor.form:406 msgid "Code" msgstr "Koda" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Prejšnji" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:238 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:325 msgid "Name" msgstr "Ime" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:60 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Tip" #: FConnectionEditor.class:61 msgid "Length" msgstr "Dolžina" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Privzeta vrednost" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Prevajanje" #: FConnectionEditor.class:82 FDebugExpr.class:502 FHelpBrowser.form:49 msgid "Index" msgstr "Indeks" #: FConnectionEditor.class:87 msgid "Unique" msgstr "" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Povezava s podatkovno zbirko ni uspela." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "" #: FConnectionEditor.class:596 msgid "No record" msgstr "" #: FConnectionEditor.class:598 msgid "One record" msgstr "" #: FConnectionEditor.class:600 msgid "&1 records" msgstr "" #: FConnectionEditor.class:637 msgid "Unable to load table '&1'." msgstr "" #: FConnectionEditor.class:708 msgid "Unable to run query." msgstr "" #: FConnectionEditor.class:710 msgid "&1 s" msgstr "" #: FConnectionEditor.class:743 msgid "unlimited" msgstr "neomejeno" #: FConnectionEditor.class:830 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:830 MConnection.module:143 msgid "Boolean" msgstr "Logična vrednost" #: FConnectionEditor.class:830 FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Datum" #: FConnectionEditor.class:830 MConnection.module:139 msgid "Float" msgstr "Naj lebdi" #: FConnectionEditor.class:830 MConnection.module:135 msgid "Integer" msgstr "Celo število" #: FConnectionEditor.class:830 MConnection.module:137 msgid "Long" msgstr "Dolgo" #: FConnectionEditor.class:830 MConnection.module:147 msgid "Serial" msgstr "Zaporedna" #: FConnectionEditor.class:830 MConnection.module:145 msgid "String" msgstr "Niz" #: FConnectionEditor.class:919 msgid "This name is already in used." msgstr "" #: FConnectionEditor.class:944 msgid "Please enter a number." msgstr "" #: FConnectionEditor.class:949 msgid "The length must be greater than 1 and lower than 255." msgstr "" #: FConnectionEditor.class:973 msgid "Type mismatch." msgstr "" #: FConnectionEditor.class:1025 msgid "This name already exists." msgstr "" #: FConnectionEditor.class:1113 msgid "This field is used in an index." msgstr "" #: FConnectionEditor.class:1467 msgid "The table '&1' has no primary key." msgstr "" #: FConnectionEditor.class:1603 msgid "Cannot write table '&1'." msgstr "" #: FConnectionEditor.class:1700 msgid "Do you really want to delete table '&1'?" msgstr "" #: FConnectionEditor.class:1712 msgid "Cannot delete table '&1'." msgstr "" #: FConnectionEditor.class:1765 msgid "Do you really want to remove the selected rows?" msgstr "" #: FConnectionEditor.class:1927 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "" #: FConnectionEditor.form:134 FDebugInfo.form:185 FMain.form:1157 #: FMakeInstall.form:714 FOption.form:1563 FProjectProperty.form:573 #: FPublish.form:269 FSoftwareFarm.form:422 msgid "Remove" msgstr "Odstrani" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "" #: FConnectionEditor.form:143 FMain.form:1034 msgid "Rename" msgstr "Preimenuj" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:956 #: FOption.form:1549 FTranslate.form:423 msgid "Import" msgstr "Uvozi" #: FConnectionEditor.form:213 msgid "Fields" msgstr "" #: FConnectionEditor.form:229 FMain.class:2164 FMakeInstall.form:708 #: FProjectProperty.form:628 FPublish.form:159 msgid "Add" msgstr "Dodaj" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:726 #: FPublish.form:281 msgid "Down" msgstr "Dol" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:720 #: FPublish.form:275 msgid "Up" msgstr "Gor" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "" #: FConnectionEditor.form:293 msgid "New index" msgstr "" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Zaženi poizvedbo" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:851 FOption.form:1541 #: FTranslate.form:87 msgid "New" msgstr "Novo" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:270 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:732 FOption.class:863 FOutput.form:54 #: FPublish.form:171 msgid "Clear" msgstr "Počisti" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:404 #: FOption.form:1556 msgid "Edit" msgstr "Uredi " #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:130 msgid "Export" msgstr "Izvozi " #: FConnectionEditor.form:492 FForm.form:185 FList.form:65 FMain.form:1041 #: FMenu.form:110 FNewConnection.class:402 FOption.class:1032 #: FSoftwareFarm.class:654 FTranslate.form:97 msgid "Delete" msgstr "Izbriši" #: FConnectionEditor.form:500 FForm.form:219 msgid "Select all" msgstr "Izberi vse" #: FConnectionEditor.form:508 FForm.form:231 msgid "Unselect all" msgstr "" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:242 Project.module:4530 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 #, fuzzy msgid "The program has stopped unexpectedly!" msgstr "" "Program je vrnil\n" "vrednost: &1" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:85 msgid "(No parent)" msgstr "" #: FCreateFile.class:293 msgid "Cannot add file." msgstr "" #: FCreateFile.form:37 msgid "New file" msgstr "" #: FCreateFile.form:72 FImportTable.form:59 FMakePatch.form:66 #: FProjectProperty.form:736 FSearch.form:98 msgid "Options" msgstr "Možnosti" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Širina" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Višina" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "" #: FCreateFile.form:155 msgid "Parent class" msgstr "" #: FCreateFile.form:168 msgid "Exported" msgstr "" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "ni na voljo" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Ne morem ustvariti projekta!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Prosim vtipkaj ime." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "" #: FCreateProject.form:31 FMain.form:276 msgid "New project" msgstr "Nov projekt" #: FCreateProject.form:46 FProjectProperty.form:294 msgid "Project type" msgstr "" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Mapa" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Lastnosti projekta" #: FCreateProject.form:99 msgid "Project name" msgstr "" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:860 msgid "Project is translatable" msgstr "Projekt omogoča prevod" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:303 msgid "Open in another window" msgstr "" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Skladišče" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:20 FDebugInfo.form:87 msgid "Debugging" msgstr "Razhroščevanje" #: FDebugButton.form:29 FDebugInfo.form:168 FMain.form:728 FOption.form:982 msgid "Console" msgstr "Konzola" #: FDebugButton.form:38 FDebugInfo.form:176 MTheme.module:6 msgid "Breakpoints" msgstr "Prekinitvene točke" #: FDebugButton.form:47 FDebugInfo.form:238 msgid "Warnings" msgstr "" #: FDebugButton.form:56 FDebugInfo.form:257 msgid "Tasks" msgstr "" #: FDebugButton.form:65 FDebugInfo.form:279 #, fuzzy msgid "Search result" msgstr "Poišči" #: FDebugButton.form:74 FDebugInfo.form:357 FMain.form:484 #: FProjectProperty.form:897 msgid "Version control" msgstr "" #: FDebugExpr.class:4 msgid "not available" msgstr "ni na voljo" #: FDebugExpr.class:504 FProjectProperty.class:161 msgid "Value" msgstr "Vrednost" #: FDebugExpr.class:508 msgid "Key" msgstr "Ključ" #: FDebugExpr.class:514 msgid "Symbol" msgstr "Simbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Spremljaj" #: FDebugExpr.form:38 msgid "Print to console" msgstr "" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:41 FImageEditor.form:588 FImportTable.class:66 msgid "Line" msgstr "Vrstica" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Funkcija" #: FDebugInfo.class:48 FMain.form:272 FTranslate.class:78 msgid "File" msgstr "Datoteka" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:72 FImportTable.class:68 msgid "Message" msgstr "Sporočilo" #: FDebugInfo.class:126 msgid "native code" msgstr "naravna koda" #: FDebugInfo.class:193 #, fuzzy msgid "Watch expressions" msgstr "Spremljaj izraz" #: FDebugInfo.class:270 msgid "Do you want to clear the expression list ?" msgstr "Ali želiš počistiti seznam izrazov?" #: FDebugInfo.class:1070 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1209 msgid "Current object" msgstr "" #: FDebugInfo.class:1255 msgid "Local variables" msgstr "" #: FDebugInfo.form:67 FMain.form:563 msgid "Debug" msgstr "Razhroščevanje" #: FDebugInfo.form:118 msgid "Remove current expression" msgstr "" #: FDebugInfo.form:124 msgid "Add expression" msgstr "" #: FDebugInfo.form:183 #, fuzzy msgid "Remove breakpoint" msgstr "Preklopi prekinitveno točko" #: FDebugInfo.form:191 #, fuzzy msgid "Disable breakpoint" msgstr "Preklopi prekinitveno točko" #: FDebugInfo.form:193 #, fuzzy msgid "Disable" msgstr "Spremenljivka" #: FDebugInfo.form:199 #, fuzzy msgid "Enable breakpoint" msgstr "Preklopi prekinitveno točko" #: FDebugInfo.form:201 msgid "Enable" msgstr "" #: FDebugInfo.form:207 msgid "Remove all breakpoints" msgstr "" #: FDebugInfo.form:287 msgid "Cancel current search" msgstr "" #: FDebugInfo.form:303 msgid "Search again" msgstr "" #: FDebugInfo.form:310 msgid "Show search window" msgstr "" #: FDebugInfo.form:353 FSearch.class:546 FTranslate.class:632 msgid "Search string cannot be found." msgstr "Ne najdem iskanega niza." #: FDebugInfo.form:365 FMain.form:489 FProjectVersion.form:89 #: FVersionControl.form:16 msgid "Commit" msgstr "Udejani " #: FDebugInfo.form:372 FMain.form:495 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "" #: FDebugInfo.form:379 FMain.form:508 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:386 FMain.form:514 msgid "Add everything to repository" msgstr "" #: FEditor.form:189 FTextEditor.form:211 msgid "Format code" msgstr "" #: FEditor.form:195 msgid "Sort procedures" msgstr "" #: FEditor.form:224 msgid "Go to" msgstr "Pojdi na" #: FEditor.form:243 msgid "Find definition" msgstr "" #: FEditor.form:300 FMain.form:1484 msgid "Run until current line" msgstr "Poženi do trenutne vrstice" #: FEditor.form:307 msgid "Toggle breakpoint" msgstr "Preklopi prekinitveno točko" #: FEditor.form:314 msgid "Watch expression" msgstr "Spremljaj izraz" #: FEditor.form:323 msgid "Open form" msgstr "" #: FEditor.form:330 FMain.form:1067 msgid "Run this class" msgstr "" #: FEditor.form:340 FForm.form:425 FImageEditor.form:369 FTextEditor.form:344 msgid "Locked" msgstr "" #: FEditor.form:396 FHelpShortcut.form:24 FOption.form:966 msgid "Editor" msgstr "Urejevalnik" #: FEditor.form:523 FTextEditor.form:507 #, fuzzy msgid "Insert special character" msgstr "&Vstavi" #: FEditor.form:566 FTextEditor.form:550 msgid "Make code pretty" msgstr "" #: FEditor.form:631 FTextEditor.form:614 msgid "Procedure list" msgstr "" #: FEditor.form:653 FImageEditor.form:769 FTextEditor.form:655 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "&Nadomesti" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:102 msgid "Delimiter character" msgstr "" #: FExportData.form:42 FImportTable.form:113 msgid "Enclose character" msgstr "" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:313 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Uporabnik" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Geslo" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Zapomni si geslo" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Prosim, vnesi svoj elektronski naslov." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Ne morem preimenovati '&1'" #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:320 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Zapomni si geslo" #: FFarmRegister.form:108 FMakeInstall.form:253 FOption.form:341 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "" #: FFieldChooser.class:70 msgid "Select a field" msgstr "" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Povezava" #: FFieldChooser.form:51 FImportTable.form:157 FPasteTable.form:67 msgid "Table" msgstr "" #: FFileProperty.class:31 msgid "Gambas &1" msgstr "" #: FFileProperty.class:38 msgid "Gambas module" msgstr "" #: FFileProperty.class:40 msgid "Gambas class" msgstr "" #: FFileProperty.class:80 msgid "&1 properties" msgstr "" #: FFileProperty.class:84 FProjectVersion.form:299 FVersionControl.form:35 msgid "Changes" msgstr "Spremembe" #: FFileProperty.class:92 FProjectProperty.form:888 FTranslate.form:409 msgid "Statistics" msgstr "Statistika" #: FFileProperty.class:127 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileProperty.class:129 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileProperty.class:132 msgid "This file has not been modified since the last commit." msgstr "" #: FFileProperty.class:144 FMakeInstall.class:345 FProjectVersion.class:211 #: FSave.form:21 Project.module:3528 VersionControl.module:383 msgid "Continue" msgstr "Nadaljuj" #: FFileProperty.class:144 FProjectVersion.class:211 VersionControl.module:383 msgid "You are going to cancel your changes!" msgstr "" #: FFileProperty.class:163 FProjectProperty.class:930 msgid "Modules" msgstr "Moduli" #: FFileProperty.class:168 FProjectProperty.class:938 msgid "Lines of code" msgstr "" #: FFileProperty.form:65 #, fuzzy msgid "Undo changes" msgstr "Spremembe" #: FFontChooser.form:12 msgid "Select a font" msgstr "" #: FForm.class:134 msgid "Bad form file" msgstr "Neustrezna dateka s formo" #: FForm.class:264 #, fuzzy msgid "Unknown control: &1" msgstr "Neznana napaka" #: FForm.class:1327 msgid "Component missing for control &1" msgstr "" #: FForm.class:1866 #, fuzzy msgid "Cannot paste data." msgstr "Ne morem odpreti datoteke." #: FForm.form:172 msgid "Copy at the same place" msgstr "" #: FForm.form:192 msgid "Delete container only" msgstr "" #: FForm.form:199 msgid "Embed into a container" msgstr "" #: FForm.form:205 msgid "Change into" msgstr "" #: FForm.form:213 msgid "Select" msgstr "Izberi" #: FForm.form:226 #, fuzzy msgid "Select parent" msgstr "Izberi projekt" #: FForm.form:239 msgid "Arrangement" msgstr "Razvrstitev" #: FForm.form:243 msgid "Bring to foreground" msgstr "Spravi v ospredje" #: FForm.form:250 msgid "Send to background" msgstr "Potisni v ozadje" #: FForm.form:260 msgid "Horizontal" msgstr "Vodoravno" #: FForm.form:267 msgid "Rows" msgstr "Vrstice" #: FForm.form:273 msgid "Vertical" msgstr "Navpično" #: FForm.form:280 msgid "Columns" msgstr "Stolpci" #: FForm.form:289 msgid "Center horizontally" msgstr "" #: FForm.form:295 msgid "Center vertically" msgstr "" #: FForm.form:301 msgid "Alignment" msgstr "Poravnava" #: FForm.form:305 msgid "Align to left" msgstr "Poravnaj levo" #: FForm.form:311 msgid "Align to right" msgstr "Poravnaj desno" #: FForm.form:317 msgid "Align to top" msgstr "Poravnaj navzgor" #: FForm.form:323 msgid "Align to bottom" msgstr "Poravnaj navzdol" #: FForm.form:332 msgid "Same width" msgstr "Ista širina" #: FForm.form:338 msgid "Same height" msgstr "Ista višina" #: FForm.form:347 msgid "Show tab" msgstr "" #: FForm.form:355 msgid "Move tab" msgstr "" #: FForm.form:360 msgid "First" msgstr "Prvi" #: FForm.form:367 FSearch.form:189 FTips.form:71 msgid "Previous" msgstr "Prejšnji" #: FForm.form:374 FSearch.form:183 FTips.form:77 msgid "Next" msgstr "Naslednji" #: FForm.form:381 msgid "Last" msgstr "Zadnji" #: FForm.form:392 FMenu.form:69 msgid "Menu editor" msgstr "Urejevalnik izbirnikov" #: FForm.form:401 msgid "Event" msgstr "Dogodek" #: FForm.form:415 msgid "Run this form" msgstr "" #: FForm.form:568 msgid "Toggle grid" msgstr "" #: FForm.form:577 FImageEditor.form:514 #, fuzzy msgid "Toggle information tooltip" msgstr "Podrobnosti" #: FForm.form:696 msgid "Move tab first" msgstr "" #: FForm.form:703 msgid "Move tab left" msgstr "" #: FForm.form:710 msgid "Move tab right" msgstr "" #: FForm.form:717 msgid "Move tab last" msgstr "" #: FForm.form:745 FOption.form:287 msgid "Bold" msgstr "Polkrepko" #: FForm.form:753 msgid "Italic" msgstr "Ležeče" #: FForm.form:761 FOption.form:292 msgid "Underline" msgstr "Podčrtaj" #: FForm.form:769 msgid "Bigger font" msgstr "" #: FForm.form:777 msgid "Smaller font" msgstr "" #: FForm.form:785 FOption.form:884 msgid "Default font" msgstr "" #: FForm.form:793 FOption.form:1570 MTheme.module:6 msgid "Background" msgstr "Ozadje" #: FForm.form:801 msgid "Foreground" msgstr "" #: FForm.form:812 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1818 msgid "Hierarchy" msgstr "Hierarhija" #: FFormStack.form:24 msgid "Move top" msgstr "" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Premakni navzgor" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Premakni navzdol" #: FFormStack.form:42 msgid "Move bottom" msgstr "" #: FHelpBrowser.class:24 FProjectProperty.form:876 msgid "Default language" msgstr "" #: FHelpBrowser.form:30 FMain.form:1221 msgid "Help browser" msgstr "Brskalnik po pomoči" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:61 FMain.form:755 FProfile.form:48 msgid "Go back" msgstr "Pojdi nazaj" #: FHelpBrowser.form:67 FMain.form:762 FProfile.form:54 msgid "Go forward" msgstr "Pojdi naprej" #: FHelpBrowser.form:120 msgid "Print" msgstr "Natisni" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 #, fuzzy msgid "Debugger" msgstr "Razhroščevanje" #: FHelpShortcut.form:28 FOption.form:604 FProjectProperty.form:849 #: FTranslate.form:153 msgid "Translation" msgstr "Prevod" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:228 msgid "Hide selection" msgstr "" #: FImageEditor.form:234 MTheme.module:6 msgid "Selection" msgstr "Izbira" #: FImageEditor.form:239 msgid "Invert selection" msgstr "" #: FImageEditor.form:247 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:255 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:265 msgid "Union" msgstr "" #: FImageEditor.form:271 #, fuzzy msgid "Difference" msgstr "Nastavitve" #: FImageEditor.form:277 #, fuzzy msgid "Intersection" msgstr "Izbira" #: FImageEditor.form:283 msgid "Exclusive or" msgstr "" #: FImageEditor.form:292 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "Riši" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "Pravokotnik" #: FImageEditor.form:608 msgid "Ellipse" msgstr "Elipsa" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:788 msgid "System clipboard" msgstr "" #: FImageProperty.class:1251 msgid "Arrow" msgstr "" #: FImageProperty.class:1253 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1254 msgid "Triangle" msgstr "" #: FImageProperty.class:1255 msgid "Square triangle" msgstr "" #: FImageProperty.class:1256 msgid "Pentagon" msgstr "" #: FImageProperty.class:1257 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:279 FReportBrushChooser.form:49 msgid "Color" msgstr "Barva" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:231 FReportBrushChooser.form:123 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Polmer" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1744 msgid "Fill" msgstr "" #: FImageProperty.form:391 #, fuzzy msgid "Colorize" msgstr "Barva" #: FImageProperty.form:399 msgid "Desaturate" msgstr "" #: FImageProperty.form:407 msgid "Make transparent" msgstr "" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Vrstica" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Vrstica" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Velikost" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:536 msgid "Brightness" msgstr "" #: FImageProperty.form:555 msgid "Contrast" msgstr "" #: FImageProperty.form:574 msgid "Gamma" msgstr "" #: FImageProperty.form:593 msgid "Lightness" msgstr "" #: FImageProperty.form:612 msgid "Hue" msgstr "" #: FImageProperty.form:631 msgid "Saturation" msgstr "" #: FImageProperty.form:650 msgid "Blur" msgstr "" #: FImageProperty.form:667 #, fuzzy msgid "Transparency" msgstr "Prevod" #: FImageProperty.form:690 FImportTable.form:189 msgid "Preview" msgstr "Ogled" #: FImageProperty.form:702 FProjectProperty.form:920 msgid "Reset" msgstr "Ponastavi" #: FImageProperty.form:709 FMain.form:477 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 #, fuzzy msgid "Right align" msgstr "Označevanje" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:850 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas razredi" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas moduli" #: FImportFile.class:32 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:32 msgid "HTML files" msgstr "" #: FImportFile.class:32 msgid "Javascript files" msgstr "" #: FImportFile.class:32 msgid "Picture files" msgstr "Datoteke s slikami" #: FImportFile.class:183 #, fuzzy msgid "Cannot import file." msgstr "Ne morem odpreti datoteke." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Uvozi" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:171 FTranslate.class:1364 msgid "All files" msgstr "Vse datoteke" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "" #: FImportTable.class:276 msgid "Field_&1" msgstr "" #: FImportTable.class:391 msgid "Not enough values" msgstr "" #: FImportTable.class:393 msgid "Too many values" msgstr "" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "" #: FImportTable.class:427 msgid "No record imported." msgstr "" #: FImportTable.class:429 msgid "One record imported." msgstr "" #: FImportTable.class:431 msgid "&1 records imported." msgstr "" #: FImportTable.form:35 msgid "Import file" msgstr "" #: FImportTable.form:52 msgid "Select the CSV file to import" msgstr "" #: FImportTable.form:69 FPasteTable.form:40 msgid "Source" msgstr "Vir" #: FImportTable.form:79 msgid "Charset" msgstr "Nabor znakov" #: FImportTable.form:125 msgid "Strip useless white spaces" msgstr "" #: FImportTable.form:130 msgid "Ignore first lines" msgstr "" #: FImportTable.form:140 msgid "Line(s)" msgstr "" #: FImportTable.form:147 FPasteTable.form:51 msgid "Destination" msgstr "Cilj" #: FImportTable.form:172 msgid "The first line contains field names" msgstr "" #: FImportTable.form:177 msgid "Key field" msgstr "" #: FList.class:103 msgid "Item &1" msgstr "" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "" #: FList.form:25 msgid "Edit list property" msgstr "Urejanje lastnosti v obliki seznama" #: FList.form:59 FMenu.form:86 FProjectProperty.form:712 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Pretvori" #: FMain.class:245 msgid "Do you really want to delete this link ?" msgstr "" #: FMain.class:248 msgid "Do you really want to delete this directory ?" msgstr "Ali res želiš izbrisati izbrano mapo?" #: FMain.class:260 msgid "Do you really want to delete this file ?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: FMain.class:267 msgid "Cannot delete file or directory" msgstr "Ne morem izbrisati datoteke ali mape" #: FMain.class:285 msgid "File or directory does not exist anymore." msgstr "" #: FMain.class:735 msgid "Sort history" msgstr "" #: FMain.class:739 FOpenProject.form:77 FWelcome.form:33 msgid "Sort by date" msgstr "" #: FMain.class:739 FOpenProject.form:86 FWelcome.form:41 msgid "Sort by name" msgstr "" #: FMain.class:739 FOpenProject.form:94 FWelcome.form:48 msgid "Sort by path" msgstr "" #: FMain.class:751 msgid "&Clear history" msgstr "&Briši zgodovino" #: FMain.class:935 msgid "New folder" msgstr "Nova mapa" #: FMain.class:1006 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" #: FMain.class:1722 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1847 msgid "All backup or generated files will be removed from the project directory." msgstr "" #: FMain.class:1847 msgid "Clean" msgstr "Počisti" #: FMain.class:2164 #, fuzzy msgid "Do you really want to add every file to the repository?" msgstr "Ali res želiš izbrisati izbrano mapo?" #: FMain.class:2304 msgid "Choose a profile" msgstr "" #: FMain.class:2305 msgid "Profile for &1 project" msgstr "" #: FMain.class:2561 FProperty.class:1046 msgid "Select a file" msgstr "" #: FMain.class:2576 msgid "This file is located inside the project." msgstr "" #: FMain.class:2710 Project.module:846 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Datoteka je bila spremenjena.\n" "\n" "Vse spremembe bodo izgubljene." #: FMain.class:2821 #, fuzzy msgid "Edit arguments" msgstr "Argumenti" #: FMain.form:283 FWelcome.class:69 msgid "Open project" msgstr "Odpri projekt" #: FMain.form:289 msgid "Open recent" msgstr "Nedavni projekti" #: FMain.form:297 msgid "Open example" msgstr "Primeri" #: FMain.form:306 FWelcome.class:74 msgid "Open file" msgstr "" #: FMain.form:315 msgid "Save project" msgstr "Shrani projekt" #: FMain.form:323 FSaveProjectAs.form:19 msgid "Save project as" msgstr "" #: FMain.form:334 #, fuzzy msgid "Reload project" msgstr "Izberi projekt" #: FMain.form:343 FSave.class:28 FWelcome.class:76 msgid "Quit" msgstr "Zapusti" #: FMain.form:378 #, fuzzy msgid "Save as" msgstr "Shrani" #: FMain.form:418 msgid "Compile" msgstr "Prevedi" #: FMain.form:425 msgid "Compile All" msgstr "Prevedi vse" #: FMain.form:435 msgid "Translate" msgstr "Prevod" #: FMain.form:444 msgid "Make" msgstr "Znamka" #: FMain.form:448 msgid "Executable" msgstr "" #: FMain.form:455 FMakePatch.form:53 msgid "Source archive" msgstr "" #: FMain.form:462 msgid "Installation package" msgstr "" #: FMain.form:469 msgid "Patch" msgstr "" #: FMain.form:472 msgid "Create" msgstr "" #: FMain.form:501 msgid "Undo synchronization" msgstr "" #: FMain.form:520 msgid "Branch" msgstr "" #: FMain.form:525 msgid "Put under version control" msgstr "" #: FMain.form:531 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:540 FProjectVersion.form:95 msgid "Clean up" msgstr "" #: FMain.form:546 msgid "Refresh" msgstr "Osveži" #: FMain.form:568 msgid "Run" msgstr "Poženi" #: FMain.form:574 msgid "Run with" msgstr "" #: FMain.form:577 #, fuzzy msgid "No argument" msgstr "Argumenti" #: FMain.form:587 msgid "Use terminal emulator" msgstr "" #: FMain.form:593 msgid "Redirect standard error output" msgstr "" #: FMain.form:599 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:605 msgid "Activate profiling" msgstr "" #: FMain.form:611 #, fuzzy msgid "GUI component" msgstr "Komponenta" #: FMain.form:615 #, fuzzy msgid "Current desktop" msgstr "Trenutna vrstica" #: FMain.form:629 msgid "QT5" msgstr "" #: FMain.form:651 msgid "Pause" msgstr "Prekini" #: FMain.form:658 msgid "Stop" msgstr "Ustavi" #: FMain.form:665 msgid "Step" msgstr "Korak" #: FMain.form:672 msgid "Forward" msgstr "Naprej" #: FMain.form:679 msgid "Finish" msgstr "" #: FMain.form:688 msgid "Open profile" msgstr "" #: FMain.form:694 msgid "Clear all breakpoints" msgstr "" #: FMain.form:699 msgid "Close all debug windows" msgstr "" #: FMain.form:738 msgid "Status bar" msgstr "" #: FMain.form:745 msgid "Hide menubar" msgstr "" #: FMain.form:769 msgid "Close all windows" msgstr "Zapri vsa okna" #: FMain.form:776 msgid "Tools" msgstr "" #: FMain.form:780 msgid "Find" msgstr "Najdi " #: FMain.form:786 FSearch.form:74 msgid "Replace" msgstr "Nadomesti" #: FMain.form:796 msgid "Browse project" msgstr "" #: FMain.form:803 msgid "Open a terminal" msgstr "" #: FMain.form:810 msgid "Send project by mail" msgstr "" #: FMain.form:816 msgid "Update all forms" msgstr "" #: FMain.form:825 FWelcome.class:73 msgid "Software farm" msgstr "" #: FMain.form:834 msgid "Shortcuts" msgstr "Bližnjice" #: FMain.form:840 FOption.form:267 msgid "Preferences" msgstr "Nastavitve" #: FMain.form:854 msgid "Directory" msgstr "Mapa" #: FMain.form:859 msgid "Project link" msgstr "" #: FMain.form:868 msgid "Module" msgstr "Modul" #: FMain.form:927 msgid "HTML file" msgstr "" #: FMain.form:934 msgid "Style sheet" msgstr "Slogovna predloga" #: FMain.form:941 msgid "Javascript file" msgstr "" #: FMain.form:949 msgid "Other" msgstr "Ostalo " #: FMain.form:960 FOpenProject.form:44 msgid "Recent" msgstr "Nedavni" #: FMain.form:981 msgid "Open in file manager" msgstr "" #: FMain.form:986 #, fuzzy msgid "Open in project" msgstr "Odpri projekt" #: FMain.form:990 msgid "Open with" msgstr "" #: FMain.form:998 msgid "Compress all" msgstr "" #: FMain.form:1004 msgid "Uncompress all" msgstr "" #: FMain.form:1051 msgid "Copy file path" msgstr "" #: FMain.form:1060 msgid "Startup class" msgstr "Zagonski razred" #: FMain.form:1075 msgid "Add to repository" msgstr "" #: FMain.form:1080 FSoftwareFarm.form:203 msgid "Filter" msgstr "" #: FMain.form:1083 msgid "Show exported classes" msgstr "" #: FMain.form:1088 msgid "Show added files" msgstr "" #: FMain.form:1093 #, fuzzy msgid "Show modified files" msgstr "Shrani spremenjene datoteke" #: FMain.form:1098 msgid "Show files in conflict" msgstr "" #: FMain.form:1106 msgid "Show all" msgstr "" #: FMain.form:1118 #, fuzzy msgid "Do not translate" msgstr "Prevod" #: FMain.form:1135 FNewConnection.class:159 msgid "New connection" msgstr "" #: FMain.form:1211 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1229 FTips.form:18 msgid "Tips of the day" msgstr "Nasveti dneva" #: FMain.form:1235 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1244 FSystemInfo.form:15 msgid "System information" msgstr "" #: FMain.form:1303 FProjectProperty.form:140 msgid "Project properties" msgstr "Lastnosti projekta" #: FMain.form:1311 msgid "Refresh project" msgstr "" #: FMain.form:1338 FMakeExecutable.form:15 msgid "Make executable" msgstr "Izdelava izvršljive datoteke" #: FMain.form:1353 msgid "Make source archive" msgstr "" #: FMain.form:1361 FMakeInstall.form:129 msgid "Make installation package" msgstr "" #: FMain.form:1382 msgid "Properties sheet" msgstr "Seznam lastnosti" #: FMain.form:1391 msgid "Toolbox" msgstr "Orodjarna" #: FMain.form:1409 FSearch.form:60 msgid "Search" msgstr "Poišči" #: FMain.form:1433 msgid "Compile all" msgstr "Prevedi vse" #: FMain.form:1476 msgid "Finish current function" msgstr "" #: FMain.form:1492 #, fuzzy msgid "Show menubar" msgstr "Prikaži številke vrstic" #: FMain.form:1552 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1582 msgid "&File" msgstr "&Datoteka" #: FMain.form:1606 msgid "&Project" msgstr "&Projekt" #: FMain.form:1618 msgid "&Debug" msgstr "Razhroščevanje" #: FMain.form:1630 msgid "&View" msgstr "&Pogled" #: FMain.form:1642 msgid "&Tools" msgstr "&Orodja" #: FMain.form:1654 msgid "&?" msgstr "-" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "" #: FMakeExecutable.form:39 msgid "Run this command after" msgstr "" #: FMakeExecutable.form:44 msgid "$(FILE) will be replaced by the path of the executable" msgstr "" #: FMakeExecutable.form:56 msgid "Keep debugging information in executable" msgstr "Pusti razhroščevalne informacije v izvršljivi datoteki" #: FMakeExecutable.form:62 msgid "Create a shortcut on the desktop" msgstr "" #: FMakeInstall.class:123 msgid "Package" msgstr "Paket" #: FMakeInstall.class:124 msgid "Min. version" msgstr "" #: FMakeInstall.class:125 msgid "Max. version" msgstr "" #: FMakeInstall.class:131 msgid "File or directory" msgstr "" #: FMakeInstall.class:265 #, fuzzy msgid "Creating packages..." msgstr "Izdelujem paket za &1." #: FMakeInstall.class:268 Package.module:296 msgid "The packages have been successfully created." msgstr "Paketi so bili uspešno izdelani." #: FMakeInstall.class:318 msgid "Please enter your name." msgstr "Prosim, vnesi svoje ime." #: FMakeInstall.class:323 msgid "Please enter your e-mail address." msgstr "Prosim, vnesi svoj elektronski naslov." #: FMakeInstall.class:330 #, fuzzy msgid "Please enter the vendor name." msgstr "Prosim, vnesi svoje ime." #: FMakeInstall.class:345 msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:352 msgid "Please enter the first CHANGELOG entry." msgstr "Prosim, vnesi prvi vnos v dnevniku sprememb." #: FMakeInstall.class:363 msgid "Please choose at least one target distribution." msgstr "" #: FMakeInstall.class:401 msgid "Please choose the package group for each target distribution." msgstr "" #: FMakeInstall.class:403 msgid "Please choose a package group." msgstr "" #: FMakeInstall.class:413 msgid "Please choose the menu location for each target distribution." msgstr "" #: FMakeInstall.class:415 msgid "Please choose a menu location." msgstr "" #: FMakeInstall.class:434 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:440 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:448 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:454 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:470 msgid "The package cannot be stored inside the project directory." msgstr "" #: FMakeInstall.class:518 msgid "Initial release" msgstr "" #: FMakeInstall.class:778 msgid "Menus" msgstr "" #: FMakeInstall.class:846 msgid "Groups" msgstr "Skupine" #: FMakeInstall.class:970 msgid "Incorrect characters" msgstr "" #: FMakeInstall.class:1043 msgid "Do you really want to remove all extra dependencies?" msgstr "" #: FMakeInstall.class:1142 msgid "Do you really want to remove all extra files?" msgstr "" #: FMakeInstall.class:1190 msgid "Select the destination directory" msgstr "" #: FMakeInstall.form:143 msgid "Create package" msgstr "" #: FMakeInstall.form:146 msgid "Package information" msgstr "" #: FMakeInstall.form:152 msgid "Package name" msgstr "" #: FMakeInstall.form:173 FOption.form:431 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:180 msgid "Package version" msgstr "" #: FMakeInstall.form:198 FOption.form:363 FPublish.form:84 msgid "Vendor name" msgstr "" #: FMakeInstall.form:214 FOption.form:380 msgid "Vendor prefix" msgstr "" #: FMakeInstall.form:228 msgid "Maintainer information" msgstr "" #: FMakeInstall.form:268 FOption.form:415 msgid "URL" msgstr "URL" #: FMakeInstall.form:317 msgid "Changelog" msgstr "Zapisnik sprememb" #: FMakeInstall.form:337 msgid "Target distribution" msgstr "" #: FMakeInstall.form:580 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:585 msgid "Package group" msgstr "" #: FMakeInstall.form:605 msgid "Menu entry" msgstr "" #: FMakeInstall.form:627 msgid "Categories" msgstr "Kategorije" #: FMakeInstall.form:636 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:642 msgid "Mimetypes" msgstr "Zvrsti MIME" #: FMakeInstall.form:650 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:662 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:670 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:678 msgid "Extra dependencies" msgstr "" #: FMakeInstall.form:682 msgid "Same dependencies for all targets" msgstr "" #: FMakeInstall.form:738 msgid "Extra files" msgstr "" #: FMakeInstall.form:742 msgid "Same files for all targets" msgstr "" #: FMakeInstall.form:755 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:813 msgid "Extra autoconf tests" msgstr "" #: FMakeInstall.form:819 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" #: FMakeInstall.form:827 msgid "Destination directory" msgstr "" #: FMakeInstall.form:836 msgid "Create directories for each distribution" msgstr "" #: FMakeInstall.form:867 msgid "Commands output" msgstr "" #: FMakeInstall.form:913 #, fuzzy msgid "Create package now" msgstr "Izdelaj paket izvorne kode" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:38 msgid "Select patch origin" msgstr "" #: FMakePatch.form:47 msgid "Patch origin" msgstr "" #: FMakePatch.form:60 msgid "Project directory" msgstr "" #: FMakePatch.form:71 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:77 msgid "Edit patch" msgstr "" #: FMakePatch.form:88 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:92 msgid "Select source archive" msgstr "" #: FMakePatch.form:98 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:98 Project.module:4569 msgid "Source packages" msgstr "Paketi izvorne kode" #: FMakePatch.form:102 msgid "Select project directory" msgstr "" #: FMakePatch.form:119 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:124 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:124 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:74 msgid "Menus have been modified!" msgstr "" #: FMenu.class:312 msgid "Please enter a menu name." msgstr "" #: FMenu.class:318 msgid "Bad menu name !" msgstr "Neustrezno ime izbirnika!" #: FMenu.class:324 msgid "Bad group name !" msgstr "Neustrezno ime skupine!" #: FMenu.class:624 msgid "This menu is too deep !" msgstr "Nivo izbirnika je preglobok!" #: FMenu.class:1063 Project.module:5428 msgid "modified" msgstr "spremenjeno" #: FMenu.form:84 msgid "Insert menu" msgstr "" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "&Vstavi" #: FMenu.form:100 #, fuzzy msgid "Insert menu before" msgstr "&Vstavi" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "&Vstavi" #: FMenu.form:108 #, fuzzy msgid "Delete menu" msgstr "Izbriši" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Klikni Vstavi za dodajanje novega izbirnika." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "" #: FNewConnection.class:145 msgid "Please enter password" msgstr "" #: FNewConnection.class:147 msgid "Connection properties" msgstr "" #: FNewConnection.class:178 msgid "Select a directory" msgstr "" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Zbirka podatkov" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Zbirka podatkov" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Gostitelj" #: FNewConnection.form:124 msgid "Path" msgstr "Pot" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Zapomni si geslo" #: FNewConnection.form:189 Project.module:229 msgid "Database" msgstr "Zbirka podatkov" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "" #: FNewTranslation.form:10 msgid "New translation" msgstr "" #: FOpenProject.form:22 msgid "Select a project" msgstr "Izberi projekt" #: FOpenProject.form:109 FSoftwareFarm.class:44 FWelcome.class:71 msgid "Examples" msgstr "Primeri" #: FOption.class:4 msgid "Amber" msgstr "" #: FOption.class:4 msgid "Amethyst" msgstr "" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Smaragd" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Prilepi" #: FOption.class:4 msgid "Quest" msgstr "" #: FOption.class:4 msgid "Quick" msgstr "Hitro" #: FOption.class:4 msgid "Ruby" msgstr "Rubin" #: FOption.class:4 msgid "Sapphire" msgstr "" #: FOption.class:4 msgid "Visual" msgstr "Vizualno" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:83 msgid "Custom" msgstr "" #: FOption.class:85 msgid "Desktop" msgstr "Namizje" #: FOption.class:86 FTranslate.class:149 msgid "(Default)" msgstr "(Privzeti)" #: FOption.class:187 msgid "Define..." msgstr "" #: FOption.class:236 msgid "Gambas highlight theme files" msgstr "" #: FOption.class:237 msgid "Export a theme file" msgstr "" #: FOption.class:462 msgid "Select a theme file" msgstr "" #: FOption.class:492 msgid "You need to restart the application to see your changes." msgstr "" #: FOption.class:863 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:872 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Povezava s podatkovno zbirko ni uspela." #: FOption.class:1032 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1231 msgid "Do you really want to install the Gambas font to your personal font directory?" msgstr "" #: FOption.class:1231 FSoftwareFarm.class:593 msgid "Install" msgstr "" #: FOption.class:1316 #, fuzzy msgid "Network is not available." msgstr "ni na voljo" #: FOption.class:1321 msgid "Documentation is up to date." msgstr "" #: FOption.class:1326 msgid "A new documentation is available!" msgstr "" #: FOption.class:1331 MHelp.module:904 msgid "Documentation is not available." msgstr "" #: FOption.class:1527 #, fuzzy msgid "Cannot download '&1'." msgstr "Ne morem odpreti datoteke." #: FOption.class:1558 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1569 msgid "Unable to install documentation." msgstr "" #: FOption.form:297 msgid "Dotted" msgstr "" #: FOption.form:308 #, fuzzy msgid "Identity" msgstr "Zamik" #: FOption.form:352 msgid "Package maintainer" msgstr "" #: FOption.form:397 #, fuzzy msgid "Default license" msgstr "Privzeta vrednost" #: FOption.form:437 VersionControl.module:492 msgid "No" msgstr "Ne" #: FOption.form:437 VersionControl.module:492 msgid "Yes" msgstr "Da" #: FOption.form:441 #, fuzzy msgid "Projects" msgstr "Projekt" #: FOption.form:458 msgid "Default tab size" msgstr "Privzeta širina tabulatorja" #: FOption.form:475 FProjectProperty.form:769 msgid "space(s)" msgstr "" #: FOption.form:488 msgid "Indent with tab by default" msgstr "" #: FOption.form:505 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:523 msgid "Fold procedures by default" msgstr "" #: FOption.form:540 msgid "Activate version control" msgstr "" #: FOption.form:557 msgid "Restore files when loading a project" msgstr "" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "Slika" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "Počisti ta prevod" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "Datoteke s prevodi" #: FOption.form:653 msgid "Interface" msgstr "Vmesnik" #: FOption.form:670 msgid "Activate animations" msgstr "" #: FOption.form:687 msgid "Show shadows" msgstr "" #: FOption.form:704 msgid "Show tooltips" msgstr "Prikazuj sprotne nasvete" #: FOption.form:721 msgid "Use utility windows" msgstr "" #: FOption.form:738 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:755 msgid "Show file name in window title" msgstr "" #: FOption.form:772 msgid "Toolbox size" msgstr "" #: FOption.form:778 msgid "Large" msgstr "" #: FOption.form:778 FProjectProperty.form:304 msgid "Normal" msgstr "Običajno" #: FOption.form:778 msgid "Small" msgstr "Majhna" #: FOption.form:790 msgid "Sort properties" msgstr "" #: FOption.form:807 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:824 msgid "Minimize at runtime" msgstr "" #: FOption.form:841 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:858 msgid "Quiet external commands" msgstr "" #: FOption.form:867 msgid "Fonts" msgstr "Pisave" #: FOption.form:900 msgid "Global size" msgstr "" #: FOption.form:922 msgid "Title size" msgstr "" #: FOption.form:944 #, fuzzy msgid "Debugger size" msgstr "Razhroščevanje" #: FOption.form:993 MTheme.module:6 msgid "Help" msgstr "Pomoč" #: FOption.form:1020 #, fuzzy msgid "Fixed font" msgstr "Uporabi pisavo stalne širine" #: FOption.form:1036 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1066 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1070 #, fuzzy msgid "Themes" msgstr "Tema" #: FOption.form:1087 msgid "Icon theme" msgstr "" #: FOption.form:1103 #, fuzzy msgid "Highlighting theme" msgstr "Označevanje" #: FOption.form:1117 msgid "Import theme" msgstr "" #: FOption.form:1123 msgid "Export theme" msgstr "" #: FOption.form:1142 msgid "Adapt colors to dark themes" msgstr "" #: FOption.form:1179 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:1196 msgid "Highlight current line" msgstr "Označi trenutno vstico" #: FOption.form:1213 msgid "Highlight modified lines" msgstr "" #: FOption.form:1230 msgid "Show line numbers" msgstr "Prikaži številke vrstic" #: FOption.form:1247 msgid "Procedure folding" msgstr "" #: FOption.form:1264 msgid "Procedure separation" msgstr "" #: FOption.form:1281 msgid "Show spaces at end of line with dots" msgstr "" #: FOption.form:1298 #, fuzzy msgid "Show Preview" msgstr "Ogled" #: FOption.form:1316 msgid "Keywords in upper case" msgstr "" #: FOption.form:1325 msgid "Code formatting" msgstr "" #: FOption.form:1331 msgid "Automatic formatting" msgstr "" #: FOption.form:1342 msgid "Control structure completion" msgstr "" #: FOption.form:1359 msgid "Local variable declaration" msgstr "" #: FOption.form:1376 #, fuzzy msgid "Comments insertion" msgstr "Povezava" #: FOption.form:1393 msgid "Close braces, brackets" msgstr "" #: FOption.form:1410 #, fuzzy msgid "Close strings" msgstr "Zapri vsa okna" #: FOption.form:1422 msgid "Explicit formating" msgstr "" #: FOption.form:1433 msgid "Format on load & save" msgstr "" #: FOption.form:1450 msgid "Indent local variable declaration" msgstr "" #: FOption.form:1467 msgid "Remove useless spaces at end of line" msgstr "" #: FOption.form:1484 msgid "Keep successive void lines" msgstr "" #: FOption.form:1493 msgid "Code snippets" msgstr "" #: FOption.form:1509 msgid "Activate code snippets" msgstr "" #: FOption.form:1593 msgid "Help & applications" msgstr "" #: FOption.form:1610 msgid "Display property help" msgstr "" #: FOption.form:1627 msgid "Show documentation in popups" msgstr "" #: FOption.form:1644 msgid "Always display optional messages" msgstr "" #: FOption.form:1656 #, fuzzy msgid "Documentation" msgstr "Lokacija" #: FOption.form:1667 #, fuzzy msgid "Use offline documentation" msgstr "Povezava s podatkovno zbirko ni uspela." #: FOption.form:1697 msgid "Download documentation" msgstr "" #: FOption.form:1723 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:1736 msgid "Clear documentation cache" msgstr "" #: FOption.form:1744 msgid "Applications" msgstr "Programi" #: FOption.form:1755 msgid "Browser" msgstr "Brskalnik" #: FOption.form:1772 FVersionControl.form:45 msgid "Terminal" msgstr "Terminal" #: FOutput.form:29 msgid "Console - Gambas" msgstr "" #: FOutput.form:65 msgid "Undock console" msgstr "" #: FOutput.form:72 msgid "Keep above" msgstr "" #: FOutput.form:78 msgid "Clear console" msgstr "" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Nedavni projekti" #: FOutput.form:130 msgid "Use system charset" msgstr "" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Vsebina odložišča" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 #, fuzzy msgid "Unable to load profile file: &1" msgstr "Ne morem preimenovati '&1'" #: FProfile.class:647 msgid "Calls" msgstr "Klici" #: FProfile.class:650 msgid "Duration" msgstr "Trajanje" #: FProfile.class:653 msgid "Average" msgstr "Povprečnež" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:159 msgid "Variable" msgstr "Spremenljivka" #: FProjectProperty.class:292 msgid "Snapping value is incorrect." msgstr "Velikost koraka ni pravilna." #: FProjectProperty.class:761 msgid "&1 does not export any class." msgstr "" #: FProjectProperty.class:769 msgid "&1 is already used as a library." msgstr "" #: FProjectProperty.class:941 #, fuzzy msgid "Executable size" msgstr "Privzeta širina tabulatorja" #: FProjectProperty.class:941 msgid "bytes" msgstr "" #: FProjectProperty.class:958 msgid "Information about component" msgstr "" #: FProjectProperty.class:964 #, fuzzy msgid "Information about library" msgstr "Podrobnosti" #: FProjectProperty.class:1454 #, fuzzy msgid "Select a Gambas executable" msgstr "Izdelava izvršljive datoteke" #: FProjectProperty.class:1455 #, fuzzy msgid "Gambas executable" msgstr "Izdelava izvršljive datoteke" #: FProjectProperty.form:267 msgid "General" msgstr "Splošno" #: FProjectProperty.form:304 msgid "Component" msgstr "Komponenta" #: FProjectProperty.form:304 FSelectLibrary.class:101 msgid "Library" msgstr "Knjižnica" #: FProjectProperty.form:311 msgid "Vendor" msgstr "" #: FProjectProperty.form:323 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Različica" #: FProjectProperty.form:349 msgid "Get from 'VERSION' file" msgstr "" #: FProjectProperty.form:356 msgid "Title" msgstr "Naslov" #: FProjectProperty.form:389 msgid "Information" msgstr "Podrobnosti" #: FProjectProperty.form:410 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:416 msgid "Finished and stable" msgstr "" #: FProjectProperty.form:427 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:443 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:472 #, fuzzy msgid "Include information from" msgstr "Podrobnosti" #: FProjectProperty.form:484 msgid "Required features" msgstr "" #: FProjectProperty.form:540 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:561 msgid "Require" msgstr "" #: FProjectProperty.form:567 msgid "Exclude" msgstr "" #: FProjectProperty.form:579 msgid "Remove All" msgstr "" #: FProjectProperty.form:586 msgid "Components" msgstr "Komponente" #: FProjectProperty.form:594 FSoftwareFarm.class:58 msgid "Libraries" msgstr "knjižnice" #: FProjectProperty.form:607 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:655 #, fuzzy msgid "Additional references" msgstr "Nastavitve" #: FProjectProperty.form:664 msgid "Environment" msgstr "" #: FProjectProperty.form:680 msgid "&Insert" msgstr "&Vstavi" #: FProjectProperty.form:692 msgid "Arguments" msgstr "Argumenti" #: FProjectProperty.form:746 msgid "Edition" msgstr "Urejevalnik" #: FProjectProperty.form:757 msgid "Tab size" msgstr "Širina tabulatorja" #: FProjectProperty.form:780 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:793 msgid "Compilation" msgstr "Prevajanje" #: FProjectProperty.form:804 msgid "Module symbols are public by default" msgstr "" #: FProjectProperty.form:820 msgid "Form controls are public" msgstr "Kontrole na formi so javne" #: FProjectProperty.form:836 msgid "Activate warnings" msgstr "" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:29 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:325 msgid "The project could not be committed." msgstr "" #: FProjectVersion.class:196 VersionControl.module:347 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:349 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Posodobi" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:28 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:384 msgid "Forbidden characters in control name." msgstr "Prepovedani znaki v imenu kontrole." #: FProperty.class:389 msgid "This name is already in use." msgstr "To ime je že uporabljeno." #: FProperty.class:399 msgid "Forbidden characters in control group." msgstr "Prepovedani znaki v skupini kontrol." #: FProperty.class:475 msgid "Incorrect property value." msgstr "Napačna vrednost lastnosti." #: FProperty.class:637 msgid "The name of the control." msgstr "" #: FProperty.class:649 msgid "The event group that the control belongs to." msgstr "" #: FProperty.class:663 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "" #: FProperty.class:667 msgid "If the control is public." msgstr "" #: FProperty.class:671 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:693 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:827 msgid "None" msgstr "Noben" #: FProperty.form:47 msgid "Lock property" msgstr "" #: FProxy.form:37 msgid "Port" msgstr "Vrata" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Paketi so bili uspešno izdelani." #: FPublish.class:164 msgid "Unable to publish project." msgstr "" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Napačna vrednost lastnosti." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Ali res želiš ponovno naložiti trenutni prevod?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Izberi projekt" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Datoteke s slikami" #: FPublish.form:68 #, fuzzy msgid "Software description" msgstr "Opis" #: FPublish.form:99 FSoftwareFarm.form:341 #, fuzzy msgid "Web site" msgstr "Širina tabulatorja" #: FPublish.form:114 msgid "Create menu entry" msgstr "" #: FPublish.form:135 FSoftwareFarm.form:188 msgid "Tags" msgstr "" #: FPublish.form:165 msgid "Sort" msgstr "" #: FPublish.form:177 msgid "Screenshot" msgstr "" #: FPublish.form:182 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:189 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:195 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:201 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:223 msgid "Dependencies" msgstr "" #: FPublish.form:231 msgid "Require Gambas version" msgstr "" #: FPublish.form:296 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Rob" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:14 msgid "Save modified files" msgstr "Shrani spremenjene datoteke" #: FSave.form:42 msgid "Save All" msgstr "Shrani vse" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:548 msgid "Search string replaced once." msgstr "Iskani niz nadomeščen enkrat." #: FSearch.class:550 msgid "Search string replaced &1 times." msgstr "Iskani niz nadomeščen &1-krat." #: FSearch.class:647 msgid "One match" msgstr "" #: FSearch.class:649 msgid "&1 matches" msgstr "" #: FSearch.class:946 msgid "Do you really want to replace every string?" msgstr "" #: FSearch.form:41 msgid "Search & Replace" msgstr "" #: FSearch.form:104 msgid "Case sensitive" msgstr "Občutljiv na velikost črk" #: FSearch.form:109 msgid "Words only" msgstr "" #: FSearch.form:114 msgid "Regular expression" msgstr "Regularen izraz" #: FSearch.form:119 msgid "Ignore strings" msgstr "" #: FSearch.form:124 msgid "Ignore comments" msgstr "" #: FSearch.form:139 msgid "Search in" msgstr "" #: FSearch.form:146 msgid "Current procedure" msgstr "" #: FSearch.form:152 msgid "Current file" msgstr "" #: FSearch.form:159 msgid "Source files" msgstr "" #: FSearch.form:165 #, fuzzy msgid "Data files" msgstr "Tipi podatkov" #: FSearch.form:196 msgid "Browse" msgstr "" #: FSearch.form:208 msgid "Replace all" msgstr "" #: FSearch.form:219 #, fuzzy msgid "Highlight search" msgstr "Označevanje" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "" #: FSelectIcon.class:35 msgid "Image files" msgstr "" #: FSelectIcon.class:36 msgid "SVG image files" msgstr "" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Izberi sliko" #: FSelectIcon.form:41 msgid "Stock" msgstr "" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Neznano" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Izberi vse" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:42 Project.module:231 msgid "Games" msgstr "Igre" #: FSoftwareFarm.class:43 msgid "Development" msgstr "" #: FSoftwareFarm.class:45 #, fuzzy msgid "Education" msgstr "Urejevalnik" #: FSoftwareFarm.class:46 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:47 msgid "Audio" msgstr "" #: FSoftwareFarm.class:48 Project.module:238 msgid "Video" msgstr "Video" #: FSoftwareFarm.class:49 msgid "Office" msgstr "" #: FSoftwareFarm.class:50 msgid "Accessories" msgstr "" #: FSoftwareFarm.class:51 #, fuzzy msgid "Internet" msgstr "Vmesnik" #: FSoftwareFarm.class:59 #, fuzzy msgid "Extensions" msgstr "Izraz" #: FSoftwareFarm.class:64 msgid "My software" msgstr "" #: FSoftwareFarm.class:68 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:71 msgid "All software" msgstr "" #: FSoftwareFarm.class:202 msgid "No software found." msgstr "" #: FSoftwareFarm.class:221 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:365 #, fuzzy msgid "Cancel my vote" msgstr "Prekini" #: FSoftwareFarm.class:372 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:409 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:552 #, fuzzy msgid "Do you really want to download &1?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: FSoftwareFarm.class:555 #, fuzzy msgid "Unable to download &1:" msgstr "Ne morem preimenovati '&1'" #: FSoftwareFarm.class:557 msgid "&1 has been successfully downloaded." msgstr "" #: FSoftwareFarm.class:572 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: FSoftwareFarm.class:575 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Ne morem preimenovati '&1'" #: FSoftwareFarm.class:582 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: FSoftwareFarm.class:585 msgid "Unable to uninstall &1:" msgstr "" #: FSoftwareFarm.class:587 msgid "&1 has been successfully uninstalled." msgstr "" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to install &1?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to install &1:" msgstr "Ne morem preimenovati '&1'" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully installed." msgstr "Paketi so bili uspešno izdelani." #: FSoftwareFarm.class:618 msgid "Unable to modify your vote." msgstr "" #: FSoftwareFarm.class:654 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Ali res želiš izbrisati izbrano datoteko?" #: FSoftwareFarm.class:658 #, fuzzy msgid "Unable to remove &1:" msgstr "Ne morem preimenovati '&1'" #: FSoftwareFarm.form:65 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas forme" #: FSoftwareFarm.form:155 FTranslate.form:200 msgid "Show" msgstr "" #: FSoftwareFarm.form:161 msgid "Installed" msgstr "" #: FSoftwareFarm.form:161 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:161 #, fuzzy msgid "Most recent" msgstr "Nedavni projekti" #: FSoftwareFarm.form:167 #, fuzzy msgid "Show filters" msgstr "Prikazuj sprotne nasvete" #: FSoftwareFarm.form:173 #, fuzzy msgid "Show old versions" msgstr "Prikazuj sprotne nasvete" #: FSoftwareFarm.form:393 #, fuzzy msgid "Download" msgstr "Dol" #: FSoftwareFarm.form:401 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:409 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "" #: FTableChooser.form:16 msgid "Choose a table" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Urejanje lastnosti v obliki seznama" #: FText.form:29 msgid "Use a fixed font" msgstr "Uporabi pisavo stalne širine" #: FTextEditor.class:214 msgid "Console output #&1" msgstr "" #: FTextEditor.class:909 msgid "Original file has been saved in the Project folder." msgstr "" #: FTextEditor.class:909 msgid "The file has been compressed from &1 to &2 bytes (&3)." msgstr "" #: FTextEditor.class:917 msgid "Unable to compress file." msgstr "" #: FTextEditor.form:166 msgid "Sort ascent" msgstr "" #: FTextEditor.form:172 msgid "Sort descent" msgstr "" #: FTextEditor.form:218 msgid "Compress file" msgstr "" #: FTextEditor.form:224 msgid "Uncompress file" msgstr "" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Ne morem prebrati nasveta dneva!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Prikaži nasvete pri zagonu" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Projekt je prazen. Prevajanje ni možno." #: FTranslate.class:74 msgid "Language" msgstr "Jezik" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Prevod" #: FTranslate.class:167 msgid "Translation files" msgstr "Datoteke s prevodi" #: FTranslate.class:326 msgid "Cannot read translation file for language '&1'" msgstr "Ne morem prebrati datotek s prevodom v jezik '&1'" #: FTranslate.class:557 msgid "Cannot save translation." msgstr "Ne morem shraniti prevoda." #: FTranslate.class:670 msgid "Do you really want to delete this translation ?" msgstr "Ali res želiš izbrisati izbrani prevod?" #: FTranslate.class:779 msgid "Do you really want to reload this translation ?" msgstr "Ali res želiš ponovno naložiti trenutni prevod?" #: FTranslate.class:793 msgid "Export a translation" msgstr "Izvozi prevod" #: FTranslate.class:1008 msgid "Please select the translation file to import." msgstr "" #: FTranslate.class:1046 msgid "No translation were picked up." msgstr "" #: FTranslate.class:1048 msgid "One translation was picked up." msgstr "" #: FTranslate.class:1050 msgid "&1 translations were picked up." msgstr "" #: FTranslate.class:1058 msgid "Cannot import translation file." msgstr "Ne morem uvoziti datoteke s prevodom." #: FTranslate.class:1107 msgid "Everything seems to be correct." msgstr "Vse je videti pravilno." #: FTranslate.class:1117 msgid "Translated string symbols do not match untranslated string ones." msgstr "Simboli v prevedenem nizu ne ustrezajo tistim v neprevedenem." #: FTranslate.class:1143 msgid "&1 strings. Everything is translated!" msgstr "" #: FTranslate.class:1145 msgid "&1 strings. One is not translated. &3% done." msgstr "" #: FTranslate.class:1147 msgid "&1 strings. &2 are not translated. &3% done." msgstr "" #: FTranslate.class:1734 #, fuzzy msgid "Automatic translation has failed." msgstr "Ne morem uvoziti datoteke s prevodom." #: FTranslate.class:1744 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Ali res želiš izbrisati izbrani prevod?" #: FTranslate.form:76 msgid "Project translation" msgstr "" #: FTranslate.form:105 #, fuzzy msgid "Automatic translation" msgstr "Počisti ta prevod" #: FTranslate.form:117 msgid "Untranslated strings" msgstr "" #: FTranslate.form:121 msgid "Translated strings" msgstr "" #: FTranslate.form:125 msgid "All strings" msgstr "" #: FTranslate.form:224 msgid "Save translation" msgstr "" #: FTranslate.form:232 msgid "Verify the translation" msgstr "Preveri prevod" #: FTranslate.form:234 msgid "Verify" msgstr "" #: FTranslate.form:304 #, fuzzy msgid "Find next translated string" msgstr "Išči naslednji neprevedeni niz" #: FTranslate.form:310 #, fuzzy msgid "Find previous translated string" msgstr "Išči naslednji neprevedeni niz" #: FTranslate.form:316 msgid "Find previous untranslated string" msgstr "" #: FTranslate.form:322 msgid "Find next untranslated string" msgstr "Išči naslednji neprevedeni niz" #: FTranslate.form:332 msgid "Clear this translation" msgstr "Počisti ta prevod" #: FTranslate.form:338 msgid "This string must not be translated" msgstr "Tega niza se ne sme prevajati" #: FTranslate.form:344 msgid "Copy untranslated string" msgstr "Kopiraj neprevedeni niz" #: FTranslate.form:450 msgid "Import all translations recursively" msgstr "" #: FTranslate.form:456 #, fuzzy msgid "Replace existing translations" msgstr "Počisti ta prevod" #: FTranslate.form:472 msgid "Import a translation file" msgstr "" #: FVersionControl.class:71 #, fuzzy msgid "Do you want to push the repository?" msgstr "Ali res želiš izbrisati izbrano mapo?" #: FVersionControl.class:71 msgid "Push" msgstr "" #: FVersionControl.class:71 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:61 msgid "Do not push to remote repository" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Izbira" #: FWelcome.class:68 msgid "New project..." msgstr "Nov projekt..." #: FWelcome.class:70 msgid "Recent projects" msgstr "Nedavni projekti" #: FWelcome.class:72 Project.module:6232 msgid "Installed software" msgstr "" #: FWelcome.form:25 msgid "Welcome to Gambas 3" msgstr "" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Gambas projekt" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 msgid "Delete software" msgstr "" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabski (Egipt)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabski (Tunizija)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bolgarski (Bolgarija)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalonski (Katalonija, Španija)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Valižanski (Združeno kraljestvo)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danski (Danska)" #: Language.module:34 msgid "German (Germany)" msgstr "Nemški (Nemčija)" #: Language.module:35 msgid "German (Belgium)" msgstr "Nemški (Belgija)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grški (Grčija)" #: Language.module:41 msgid "English (common)" msgstr "Angleški (splošno)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Angleški (Velika Britanija)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Angleški (ZDA)" #: Language.module:44 msgid "English (Australia)" msgstr "Angleški (Avstralija)" #: Language.module:45 msgid "English (Canada)" msgstr "Angleški (Kanada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Angleški (splošno)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Španski (Španija)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Španski (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "" #: Language.module:59 msgid "Basque (Basque country)" msgstr "" #: Language.module:62 msgid "Farsi (Iran)" msgstr "" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Francoski (Francija)" #: Language.module:69 msgid "French (Belgium)" msgstr "Francoski (Belgija)" #: Language.module:70 msgid "French (Canada)" msgstr "Francoski (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Francoski (Švica)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galicijski (Španija)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "" #: Language.module:80 msgid "Hindi (India)" msgstr "" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Madžarski (Madžarska)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Hrvaški (Hrvaška)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonezijski (Indonezija)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irski (Irska)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italijanski (Italija)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "" #: Language.module:107 msgid "Korean (Korea)" msgstr "" #: Language.module:110 msgid "Latin" msgstr "Latin" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Nizozemski (Nizozemska)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Nizozemski (Belgija)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norveški (Norveška)" #: Language.module:129 msgid "Punjabi (India)" msgstr "" #: Language.module:132 msgid "Polish (Poland)" msgstr "Poljski (Poljska)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugalski (Portugalska)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugalski (Brazilija)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ruski (Rusija)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovenski (Slovenija)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Švedski (Švedska)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turški (Turčija)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valonski (Belgija)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Poenostavljena kitajščina (Kitajska)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Tradicionalna kitajščina (Tajvan)" #: Language.module:220 msgid "Unknown" msgstr "Neznano" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Bad archive: &1: &2" msgstr "" #: MErrorMessage.module:31 msgid "Bad argument" msgstr "" #: MErrorMessage.module:32 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:33 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:34 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:35 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:36 msgid "Bad form file version" msgstr "" #: MErrorMessage.module:37 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:38 msgid "Bad format string" msgstr "" #: MErrorMessage.module:39 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:40 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:41 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:42 msgid "Bad string conversion" msgstr "" #: MErrorMessage.module:43 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:44 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:45 msgid "Bad version string" msgstr "" #: MErrorMessage.module:46 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:47 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot find dynamic library '&1': &2" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:55 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:57 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:58 msgid "Cannot load class '&1': &2&3" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:60 msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:61 msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:64 msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:66 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:72 msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:74 msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use TRY with &1" msgstr "" #: MErrorMessage.module:76 msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:77 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:78 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:79 msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:80 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:81 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:82 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:83 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:84 msgid "Device is full" msgstr "" #: MErrorMessage.module:85 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:86 msgid "Division by zero" msgstr "" #: MErrorMessage.module:87 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:88 msgid "Embedded array" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Datoteka že obstaja" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "" #: MErrorMessage.module:97 msgid "File is locked" msgstr "" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Napačen datum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Neveljavna pot" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:124 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:125 msgid "No parent class" msgstr "" #: MErrorMessage.module:126 msgid "No return value" msgstr "" #: MErrorMessage.module:127 msgid "No startup method" msgstr "" #: MErrorMessage.module:128 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:129 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:130 msgid "Not a function" msgstr "" #: MErrorMessage.module:131 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:132 msgid "Not an array" msgstr "" #: MErrorMessage.module:133 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:134 msgid "Not an object" msgstr "" #: MErrorMessage.module:135 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:136 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:138 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:139 msgid "Not supported" msgstr "" #: MErrorMessage.module:140 msgid "Null object" msgstr "" #: MErrorMessage.module:141 msgid "Number" msgstr "" #: MErrorMessage.module:142 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:143 msgid "Number or date" msgstr "" #: MErrorMessage.module:144 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:145 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:146 msgid "Object" msgstr "" #: MErrorMessage.module:147 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:148 msgid "Out of memory" msgstr "Premalo pomnilnika" #: MErrorMessage.module:149 msgid "Out of range" msgstr "" #: MErrorMessage.module:150 msgid "Overflow" msgstr "Prekoračitev zgornje meje" #: MErrorMessage.module:151 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:152 msgid "Read error" msgstr "Napaka pri branju" #: MErrorMessage.module:153 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:154 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:155 msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:156 msgid "Serialization error" msgstr "" #: MErrorMessage.module:157 msgid "Stack overflow" msgstr "Prekoračitev sklada" #: MErrorMessage.module:158 msgid "Standard type" msgstr "" #: MErrorMessage.module:159 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:160 msgid "String expected" msgstr "" #: MErrorMessage.module:161 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:162 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:163 msgid "Syntax error" msgstr "Skladenjska napaka" #: MErrorMessage.module:164 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:166 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:174 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:188 msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:189 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:190 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:191 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:192 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:193 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:194 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:195 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:202 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:203 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:204 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:205 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:206 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:207 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:208 msgid "Too many arguments" msgstr "" #: MErrorMessage.module:209 msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:210 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:211 msgid "Too many constants" msgstr "" #: MErrorMessage.module:212 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:213 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:214 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:215 msgid "Too many events" msgstr "" #: MErrorMessage.module:216 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:217 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:218 msgid "Too many functions" msgstr "" #: MErrorMessage.module:219 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:220 msgid "Too many labels" msgstr "" #: MErrorMessage.module:221 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:222 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:223 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:224 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:225 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:227 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:228 msgid "Type mismatch" msgstr "" #: MErrorMessage.module:229 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:230 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:231 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:232 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:233 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:234 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:235 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:236 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:237 msgid "Unknown error" msgstr "Neznana napaka" #: MErrorMessage.module:238 msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:239 msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:240 msgid "Unknown operator" msgstr "" #: MErrorMessage.module:241 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:242 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:243 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:244 msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:245 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:246 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:247 msgid "Void identifier" msgstr "" #: MErrorMessage.module:248 msgid "Void key" msgstr "" #: MErrorMessage.module:249 msgid "Write error" msgstr "Napaka pisanja" #: MErrorMessage.module:250 msgid "cannot find component" msgstr "" #: MErrorMessage.module:251 msgid "cannot find library" msgstr "" #: MErrorMessage.module:252 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:253 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:254 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:255 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:256 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:257 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:259 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:260 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:261 msgid "unknown error" msgstr "" #: MErrorMessage.module:262 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:263 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:264 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:265 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:270 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:271 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:272 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:273 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:274 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "" #: MHelp.module:983 Wiki.module:799 #, fuzzy msgid "This page does not exist." msgstr "Ta projekt že obstaja." #: MMime.module:17 msgid "Plain text" msgstr "Navadno besedilo" #: MMime.module:18 msgid "HTML text" msgstr "" #: MMime.module:19 msgid "Gambas form data" msgstr "" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "" #: MMime.module:22 msgid "URI list" msgstr "" #: MMime.module:33 msgid "Unknown format" msgstr "" #: MTheme.module:6 msgid "Characters" msgstr "" #: MTheme.module:6 msgid "Comments" msgstr "Komentarji" #: MTheme.module:6 msgid "Current line" msgstr "Trenutna vrstica" #: MTheme.module:6 msgid "Data types" msgstr "Tipi podatkov" #: MTheme.module:6 msgid "Editing line" msgstr "Urejevana vrstica" #: MTheme.module:6 msgid "Errors" msgstr "Napake" #: MTheme.module:6 msgid "Highlighting" msgstr "Označevanje" #: MTheme.module:6 msgid "Keywords" msgstr "Ključne besede" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Navadno besedilo" #: MTheme.module:6 msgid "Numbers" msgstr "Števila" #: MTheme.module:6 msgid "Operators" msgstr "Operatorji" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Nizi" #: MTheme.module:6 msgid "Subroutines" msgstr "Podprogrami" #: MTheme.module:6 msgid "Symbols" msgstr "Simboli" #: Package.module:79 msgid "'&1' is missing." msgstr "" #: Package.module:88 msgid "'&1' and '&2' are missing." msgstr "" #: Package.module:268 msgid "Saving CHANGELOG file." msgstr "Zapisujem datoteko z dnevnikom sprememb." #: Package.module:657 msgid "Making &1 support package..." msgstr "" #: Package.module:712 msgid "Creating package for &1." msgstr "Izdelujem paket za &1." #: Package.module:744 msgid "The package build has failed." msgstr "Izdelava paketa je spodletela." #: Package.module:812 msgid "Making build directory." msgstr "" #: Package.module:867 msgid "Creating desktop file..." msgstr "" #: Package.module:875 msgid "Sources are being debianizated." msgstr "" #: Package.module:1080 msgid "Creating package..." msgstr "" #: Package.module:1088 msgid "'dpkg-buildpackage' has failed." msgstr "" #: Package.module:1370 msgid "Initializing ~/RPM directory." msgstr "Inicializiram ~/RPM mapo." #: Package.module:1390 msgid "Creating source package." msgstr "Izdelujem paket z izvirno kodo." #: Package.module:1414 msgid "Creating .spec file." msgstr "Izdelujem .spec datoteko." #: Package.module:1652 msgid "'rpmbuild' has returned the following error code:" msgstr "" #: Package.module:2067 msgid "'tar' has returned the following error code:" msgstr "" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:227 msgid "Automation" msgstr "" #: Project.module:228 msgid "Basic" msgstr "Osnovno" #: Project.module:230 msgid "Drawing" msgstr "" #: Project.module:233 msgid "Miscellaneous" msgstr "Razno" #: Project.module:234 msgid "Networking" msgstr "" #: Project.module:235 msgid "OpenGL" msgstr "OpenGL" #: Project.module:236 msgid "Printing" msgstr "Tiskanje" #: Project.module:237 msgid "Sound" msgstr "Zvok" #: Project.module:239 msgid "Controls" msgstr "" #: Project.module:240 msgid "Multimedia" msgstr "Večpredstavnost" #: Project.module:241 msgid "Web" msgstr "" #: Project.module:406 msgid "File not found!" msgstr "" #: Project.module:518 msgid "This project does not exist." msgstr "" #: Project.module:530 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:549 msgid "This is not a Gambas project." msgstr "" #: Project.module:552 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:555 msgid "Convert" msgstr "Pretvori" #: Project.module:555 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:573 msgid "Do not open" msgstr "Ne odpiraj" #: Project.module:573 msgid "Open after all" msgstr "Vseeno odpri" #: Project.module:573 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" #: Project.module:579 msgid "It cannot be converted." msgstr "" #: Project.module:579 msgid "This project is read-only." msgstr "Ta projekt je na voljo samo za branje." #: Project.module:596 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:599 msgid "Unable to create temporary directory" msgstr "" #: Project.module:629 msgid "Converting project structure..." msgstr "" #: Project.module:662 msgid "Applying conversion..." msgstr "" #: Project.module:668 msgid "Unable to apply conversion" msgstr "" #: Project.module:788 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:807 #, fuzzy msgid "Cannot open project file :" msgstr "Ne morem odpreti projektne datoteke :\n" #: Project.module:859 #, fuzzy msgid "Cannot reload file." msgstr "Ne morem odpreti datoteke." #: Project.module:1647 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1649 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2043 msgid "Cannot open a binary file." msgstr "" #: Project.module:2081 msgid "Cannot open file." msgstr "Ne morem odpreti datoteke." #: Project.module:2239 msgid "&1th" msgstr "" #: Project.module:2292 msgid "in form definition" msgstr "" #: Project.module:2299 msgid "in &1." msgstr "" #: Project.module:2460 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" #: Project.module:2464 msgid "Compiling project" msgstr "Prevajam projekt" #: Project.module:2715 msgid "File already exists." msgstr "Datoteka že obstaja." #: Project.module:2747 msgid "Directory already exists." msgstr "Mapa že obstaja." #: Project.module:2759 msgid "Cannot link template file." msgstr "" #: Project.module:2765 msgid "Cannot copy template file." msgstr "Ne morem prekopirati datoteke s predlogo." #: Project.module:2971 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2993 msgid "Cannot install library in &1." msgstr "" #: Project.module:3031 msgid "Making executable..." msgstr "Izdelujem izvršljivo datoteko..." #: Project.module:3083 msgid "Cannot make executable." msgstr "" #: Project.module:3527 msgid "Some components are missing: &1" msgstr "Nekatere komponente manjkajo: &1" #: Project.module:3719 msgid "Cannot write project file." msgstr "Ne morem zapisati datoteke s projektom." #: Project.module:3768 msgid "Unable to create desktop shortcut." msgstr "" #: Project.module:4032 msgid "The directory will be removed at the next commit." msgstr "" #: Project.module:4049 msgid "You must define a startup class or form!" msgstr "Določiti moraš zagonsko formo!" #: Project.module:4080 msgid "Please type a name." msgstr "Prosim vtipkaj ime." #: Project.module:4084 msgid "This name contains a forbidden character:" msgstr "" #: Project.module:4088 msgid "The name cannot begins with a dot." msgstr "" #: Project.module:4092 msgid "This name is already used. Choose another one." msgstr "To ime je že uporabljeno. Prosim, izberi drugega." #: Project.module:4128 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "" #: Project.module:4171 msgid "Destination already exists." msgstr "" #: Project.module:4353 msgid "Unable to rename '&1'" msgstr "Ne morem preimenovati '&1'" #: Project.module:4469 msgid "Please type a project name." msgstr "Prosim vtipkaj ime projekta." #: Project.module:4477 msgid "The project name cannot begin with a dot." msgstr "" #: Project.module:4480 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" #: Project.module:4481 msgid "SPACE" msgstr "" #: Project.module:4481 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4488 msgid "This project already exists." msgstr "Ta projekt že obstaja." #: Project.module:4491 msgid "The project directory already exists." msgstr "" #: Project.module:4493 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "" #: Project.module:4541 msgid "Unable to create source archive." msgstr "" #: Project.module:4568 msgid "Create source package" msgstr "Izdelaj paket izvorne kode" #: Project.module:4833 msgid "Cannot copy file &1." msgstr "Ne morem prekopirati datoteke &1." #: Project.module:4881 msgid "Cannot create link &1." msgstr "" #: Project.module:4896 msgid "Cannot move a directory inside itself." msgstr "" #: Project.module:4960 msgid "Cannot move file &1." msgstr "Ne morem premakniti datoteke &1." #: Project.module:5173 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5639 msgid "Project cleanup..." msgstr "" #: Project.module:5645 msgid "Project files conversion..." msgstr "" #: Project.module:5675 msgid "Unable to convert &1" msgstr "" #: Project.module:5926 msgid "Unable to update forms." msgstr "" #: Project.module:6016 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6018 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6110 msgid "Unable to read component description file." msgstr "" #: Project.module:6171 msgid "Cannot write component description file." msgstr "" #: Project.module:6232 #, fuzzy msgid "Project templates" msgstr "Lastnosti projekta" #: Project.module:6278 #, fuzzy msgid "Unable to run terminal." msgstr "Ne morem preimenovati '&1'" #: Save.module:51 msgid "Cannot save file !" msgstr "Ne morem shraniti datoteke!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:137 msgid "Command timeout." msgstr "" #: VersionControl.module:137 msgid "Please check your network connection." msgstr "" #: VersionControl.module:492 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Ali res želiš izbrisati izbrano mapo?" #: VersionControl.module:506 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:591 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:611 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "Ta projekt že obstaja." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "About Gambas..." #~ msgstr "O Gambasu..." #~ msgid "

Authors

\n" #~ msgstr "

Avtorji

\n" #~ msgid "Details" #~ msgstr "Podrobnosti" #~ msgid "Existing" #~ msgstr "Obstoječe" #~ msgid "Messages" #~ msgstr "Sporočila" #~ msgid "Picture" #~ msgstr "Slika" #~ msgid "Text file" #~ msgstr "Besedilna datoteka" #~ msgid "ChangeLog" #~ msgstr "ChangeLog" #~ msgid "Last modified" #~ msgstr "Zadnja sprememba" #~ msgid "Blend" #~ msgstr "Zmešaj" #~ msgid "" #~ "Welcome to the Gambas console.\n" #~ "To evaluate any expression, type '?' followed by\n" #~ "the expression, then hit return.\n" #~ "\n" #~ msgstr "" #~ "Dobrodošli v Gambas konzoli.\n" #~ "Za ovrednotenje izraza vtipkaj '?' nato izraz in potrdi z 'Enter'.\n" #~ "\n" #~ msgid "Show only components used in project" #~ msgstr "Prikaži samo v projektu uporabljene komponente" #~ msgid "Open project..." #~ msgstr "Odpri projekt..." #, fuzzy #~ msgid "U" #~ msgstr "Gor" #, fuzzy #~ msgid "N" #~ msgstr "Ne" #~ msgid "Edit text property" #~ msgstr "Urejanje lastnosti v obliki besedila" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Klikni na formo za prikaz hierarhije njenih kontrol..." #~ msgid "Display" #~ msgstr "Prikaži" #, fuzzy #~ msgid "Display expression" #~ msgstr "Regularen izraz" #~ msgid "Expression" #~ msgstr "Izraz" gambas-3.16.3/app/src/gambas3/.lang/sv.po000066400000000000000000005635131411575327000177330ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Config.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/Config.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/peter/Documents/versttningar/gambas/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2020-06-06 18:03 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 "Gambas 3" msgstr "Gambas 3" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Integrerad utvecklingsmiljö för Gambas" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:608 msgid "Static properties" msgstr "" #: CClassInfo.class:609 msgid "Static variables" msgstr "Statiska variabler" #: CClassInfo.class:610 msgid "Static methods" msgstr "" #: CClassInfo.class:611 MTheme.module:6 msgid "Constants" msgstr "Konstanter" #: CClassInfo.class:628 FMain.form:572 FProperty.form:28 msgid "Properties" msgstr "Egenskaper" #: CClassInfo.class:629 msgid "Variables" msgstr "Variabler" #: CClassInfo.class:630 msgid "Methods" msgstr "Metoder" #: CClassInfo.class:631 msgid "Events" msgstr "Händelser" #: CClassInfo.class:653 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:655 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:661 msgid "in &1" msgstr "" #: CClassInfo.class:669 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:674 msgid "This class is &1." msgstr "Denna klass är &1." #: CClassInfo.class:674 msgid "creatable" msgstr "möjlig att skapa" #: CClassInfo.class:679 msgid "This class is static." msgstr "Denna klass är statisk." #: CClassInfo.class:681 msgid "This class is not creatable." msgstr "Denna klass ärver." #: CClassInfo.class:687 msgid "This class can be used as a &1." msgstr "Denna klass kan användas som &1." #: CClassInfo.class:687 msgid "function" msgstr "funktion" #: CClassInfo.class:692 msgid "This class acts like a &1 / &2 array." msgstr "Denna klass fungerar som ett &1/&2-fält." #: CClassInfo.class:692 msgid "read" msgstr "läs" #: CClassInfo.class:692 msgid "write" msgstr "skriv" #: CClassInfo.class:694 msgid "This class acts like a &1 array." msgstr "Denna klass fungerar som ett &1-fält." #: CClassInfo.class:694 msgid "write-only" msgstr "" #: CClassInfo.class:697 Project.module:1671 msgid "read-only" msgstr "skrivskyddat" #: CClassInfo.class:702 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:702 msgid "enumerable" msgstr "uppräkningsbar" #: CClassInfo.class:853 msgid "This class reimplements" msgstr "Denna klass återimplementerar" #: CClassInfo.class:855 msgid "This class inherits" msgstr "Denna klass ärver" #: CClassInfo.class:870 msgid "This class is virtual." msgstr "" #: CClassInfo.class:872 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "Denna klass kan användas som ett objekt genom att skapa en gömd instans på begäran." #: CClassInfo.class:897 msgid "static function" msgstr "" #: CClassInfo.class:904 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:906 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:918 msgid "This class is &1 with the &2 keyword." msgstr "Denna klass är &1 med &2 nyckelord." #: CClassInfo.class:918 msgid "statically enumerable" msgstr "" #: CComponent.class:491 msgid "Loading information on component &1..." msgstr "Laddar information om komponent &1..." #: CComponent.class:1596 FProjectProperty.class:929 msgid "Classes" msgstr "Klasser" #: CComponent.class:1640 FDebugInfo.class:40 FMain.form:939 msgid "Class" msgstr "Klass" #: CComponent.class:1642 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:391 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "Beskrivning" #: CComponent.class:1669 #, fuzzy msgid "This component is not stable yet." msgstr "Denna komponent är gömd" #: CComponent.class:1671 #, fuzzy msgid "This component is deprecated." msgstr "Denna komponent är gömd" #: CComponent.class:1680 CVersionControlGit.class:461 FProjectVersion.class:287 msgid "Author" msgstr "Författare" #: CComponent.class:1682 FAbout.class:218 FProjectProperty.form:403 msgid "Authors" msgstr "Författare" #: CComponent.class:1692 msgid "Implements" msgstr "Implementerar" #: CComponent.class:1704 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Kräver" #: CComponent.class:1719 msgid "Excludes" msgstr "Utesluter" #: CDocumentation.class:48 msgid "Internal native classes" msgstr "Interna inhemska klasser" #: CDocumentation.class:49 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:50 msgid "Cairo graphic library" msgstr "Cairos grafiska bibliotek" #: CDocumentation.class:51 msgid "Chart drawing" msgstr "Diagramritning" #: CDocumentation.class:52 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:53 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:54 msgid "Compression & decompression" msgstr "Packning & uppackning" #: CDocumentation.class:55 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:56 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:57 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:58 msgid "More data containers" msgstr "" #: CDocumentation.class:59 msgid "Database access" msgstr "Databastillgång" #: CDocumentation.class:61 msgid "Data bound controls" msgstr "Datagränsvärdeskontroller" #: CDocumentation.class:62 msgid "MySQL database driver" msgstr "MySQL database driver" #: CDocumentation.class:63 msgid "ODBC database driver" msgstr "ODBC database driver" #: CDocumentation.class:64 msgid "PostgreSQL database driver" msgstr "PostgreSQL database driver" #: CDocumentation.class:65 msgid "SQLite 2 database driver" msgstr "SQLite 2 database driver" #: CDocumentation.class:66 msgid "SQLite 3 database driver" msgstr "SQLite 3 database driver" #: CDocumentation.class:67 msgid "Application debugger helper" msgstr "Hjälp vid avlusning av tillämpning" #: CDocumentation.class:68 msgid "Desktop management component" msgstr "" #: CDocumentation.class:69 msgid "X-Window library support" msgstr "" #: CDocumentation.class:70 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:71 msgid "D-Bus interface" msgstr "D-buss-snitt" #: CDocumentation.class:72 msgid "Expression evaluator" msgstr "Exportera en utvärderare" #: CDocumentation.class:73 msgid "Syntax highlighter routines" msgstr "Rutiner för markering av syntax" #: CDocumentation.class:74 msgid "More controls for graphical components" msgstr "Flera kontroller för grafiska komponenter" #: CDocumentation.class:75 msgid "Enhanced standard dialogs" msgstr "Utökada standarddialoger" #: CDocumentation.class:76 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:77 msgid "Multi Document Interface" msgstr "Mång-dokumentsnitt" #: CDocumentation.class:78 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:79 msgid "Default icon theme" msgstr "" #: CDocumentation.class:80 #, fuzzy msgid "Terminal emulator" msgstr "Använd en terminalemulator" #: CDocumentation.class:81 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:82 msgid "GNU Scientific Library" msgstr "GNU Scientific Library" #: CDocumentation.class:83 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:84 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL med GTK+ verktygslåda" #: CDocumentation.class:85 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:86 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ switcher component" #: CDocumentation.class:87 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:88 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "QT/GTK+ switcher component" #: CDocumentation.class:89 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "QT/GTK+ switcher component" #: CDocumentation.class:90 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "QT/GTK+ switcher component" #: CDocumentation.class:91 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:92 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:93 msgid "Image management" msgstr "Bildhantering" #: CDocumentation.class:94 msgid "Image filtering component" msgstr "Bildfilterkomponent" #: CDocumentation.class:95 msgid "Image routines from the Imlib2 library" msgstr "Bildrutiner från Imlib3-biblioteket" #: CDocumentation.class:96 FProjectProperty.form:535 msgid "Image loading and saving" msgstr "Laddning och sparning av bilder" #: CDocumentation.class:97 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:98 msgid "XML tools based on libxml" msgstr "XML-verktyg baserade på libxml" #: CDocumentation.class:99 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:100 msgid "Online map viewer" msgstr "" #: CDocumentation.class:101 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:102 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:103 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:104 msgid "Memcached client" msgstr "" #: CDocumentation.class:105 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:106 msgid "MySQL specific routines" msgstr "Särskilda rutiner för MySQL" #: CDocumentation.class:107 msgid "NCurses library" msgstr "" #: CDocumentation.class:108 msgid "Network programming" msgstr "Närverksprogrammering" #: CDocumentation.class:109 msgid "Network high-level protocols management" msgstr "Hantering av högnivånätverksprotokoll" #: CDocumentation.class:110 msgid "POP3 client" msgstr "" #: CDocumentation.class:111 msgid "SMTP client" msgstr "SMTP-klient" #: CDocumentation.class:112 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:113 msgid "3D programming with OpenGL" msgstr "3D programmering med OpenGL" #: CDocumentation.class:114 msgid "OpenGL utility component" msgstr "OpenGL hjälp-komponent" #: CDocumentation.class:115 msgid "OpenGL shaders management" msgstr "OpenGL skuggningshantering" #: CDocumentation.class:116 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:117 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:118 msgid "GNU command option parser" msgstr "GNU-kommandalternativstolkare" #: CDocumentation.class:119 msgid "Perl-compatible Regular Expression Matching" msgstr "Perl-kompatibel reguljäruttrycksmatchning" #: CDocumentation.class:120 msgid "PDF renderer based on Poppler library" msgstr "PDF-återgivare grundad på Poppler-bibliotek" #: CDocumentation.class:121 msgid "QT4 toolkit" msgstr "QT4-verktyg" #: CDocumentation.class:122 msgid "QT4 toolkit extension" msgstr "QT4-verktygskomplettering" #: CDocumentation.class:123 msgid "QT4 WebKit component" msgstr "QT4 WebKit-komponent" #: CDocumentation.class:124 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL med QT4-verktyg" #: CDocumentation.class:125 #, fuzzy msgid "QT5 toolkit" msgstr "QT4-verktyg" #: CDocumentation.class:126 #, fuzzy msgid "QT5 WebKit component" msgstr "QT4 WebKit-komponent" #: CDocumentation.class:127 #, fuzzy msgid "OpenGL with QT5 toolkit" msgstr "OpenGL med QT4-verktyg" #: CDocumentation.class:128 #, fuzzy msgid "QT5 toolkit extension" msgstr "QT4-verktygskomplettering" #: CDocumentation.class:129 msgid "Report designer" msgstr "Rapportkonstruktör" #: CDocumentation.class:131 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:132 msgid "SDL library" msgstr "SDL-bibliotek" #: CDocumentation.class:133 msgid "SDL sound & CD-ROM management" msgstr "Hantering av SDL-ljud & CD-ROM" #: CDocumentation.class:134 #, fuzzy msgid "SDL2 component" msgstr "Komponent" #: CDocumentation.class:135 #, fuzzy msgid "SDL2 audio component" msgstr "OpenGL hjälp-komponent" #: CDocumentation.class:136 msgid "Application settings management" msgstr "Hantering av inställningar förtillämpning" #: CDocumentation.class:137 msgid "Signals management" msgstr "Signalhantering" #: CDocumentation.class:138 #, fuzzy msgid "Terminal management" msgstr "Signalhantering" #: CDocumentation.class:139 #, fuzzy msgid "Graphical terminal applications development" msgstr "Grafisk tillämpning" #: CDocumentation.class:140 #, fuzzy msgid "Unit tests component" msgstr "OpenGL hjälp-komponent" #: CDocumentation.class:141 #, fuzzy msgid "Utility component" msgstr "OpenGL hjälp-komponent" #: CDocumentation.class:142 #, fuzzy msgid "Web applications utility component" msgstr "Web-tillämpningsverktyg" #: CDocumentation.class:143 msgid "Video capture" msgstr "Videofångst" #: CDocumentation.class:144 msgid "Visual Basic compatibility" msgstr "Kompatibilitet med Visual Basic" #: CDocumentation.class:145 msgid "XML tools" msgstr "" #: CDocumentation.class:146 msgid "HTML generator" msgstr "" #: CDocumentation.class:147 msgid "XML-RPC protocol" msgstr "XML-RPC-protokoll" #: CDocumentation.class:148 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:149 msgid "Web applications tools" msgstr "Web-tillämpningsverktyg" #: CDocumentation.class:150 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:151 #, fuzzy msgid "Web application development" msgstr "Web-tillämpningsverktyg" #: CDocumentation.class:152 #, fuzzy msgid "Web application development using processes as session" msgstr "Web-tillämpningsverktyg" #: CDocumentation.class:158 FProjectProperty.form:523 msgid "Graphical form management" msgstr "hantering av grafiskt formulär" #: CDocumentation.class:159 FProjectProperty.form:529 msgid "Event loop management" msgstr "Hantering av händelse slinga" #: CDocumentation.class:161 FProjectProperty.form:546 msgid "OpenGL display" msgstr "OpenGL display" #: CDocumentation.class:162 msgid "Complex numbers" msgstr "" #: CDocumentation.class:163 FProjectProperty.form:552 msgid "XML management" msgstr "" #: CInsertColor.class:268 FEditor.form:211 FTextEditor.form:208 msgid "Insert color" msgstr "Skjut in färg" #: CInsertDate.class:58 FEditor.form:561 FTextEditor.form:537 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:47 LibraryItem.class:54 msgid "Location" msgstr "Plats" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "VARNING! Bibliotek hittades ej." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Levererar" #: CModule.class:29 FEditor.form:414 FForm.form:468 FMain.form:946 msgid "Form" msgstr "Formulär" #: CModule.class:29 msgid "Forms" msgstr "Formulär" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas formulär" #: CModule.class:30 msgid "Gambas web pages" msgstr "Gambas webbsidor" #: CModule.class:30 FMain.form:953 msgid "WebPage" msgstr "Webb-sida" #: CModule.class:30 msgid "WebPages" msgstr "Webb-sidor" #: CModule.class:31 msgid "Gambas reports" msgstr "Gambas rapporter" #: CModule.class:31 FMain.form:960 msgid "Report" msgstr "Rapport" #: CModule.class:31 msgid "Reports" msgstr "Rapporter" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Gambas formulär" #: CModule.class:32 FMain.form:967 #, fuzzy msgid "WebForm" msgstr "Formulär" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Formulär" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas formulär" #: CModule.class:33 FMain.form:974 #, fuzzy msgid "TermForm" msgstr "Formulär" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Formulär" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:111 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:111 msgid "here" msgstr "" #: CProjectList.class:235 #, fuzzy msgid "IDE extensions" msgstr "Automatisk utvidgning" #: CProjectList.class:554 CVersionControlGit.class:398 #: CWaitingAnimation.class:63 FColorChooser.form:68 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:97 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:408 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:82 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:73 FImageOffsetSelection.form:33 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeInstall.class:361 FMenu.form:414 #: FNewConnection.form:318 FNewTable.form:86 FNewTranslation.form:21 #: FOption.class:820 FPasteSpecial.form:86 FPasteTable.form:105 #: FProjectChooser.form:73 FProjectProperty.form:968 FProjectVersion.class:211 #: FProxy.form:57 FPublish.class:273 FReportBorderChooser.form:48 #: FReportBoxShadowChooser.form:27 FReportBrushChooser.form:36 #: FReportCoordChooser.form:26 FReportPaddingChooser.form:75 FSave.form:28 #: FSaveProjectAs.form:81 FSearch.class:942 FSelectComponent.form:39 #: FSelectExtraFile.form:43 FSelectIcon.form:89 FSelectLibrary.form:66 #: FSnippet.form:57 FSoftwareFarm.class:559 FTableChooser.form:68 #: FTestSuite.class:404 FText.form:40 FTranslate.class:677 #: FVersionControl.form:98 FWebFontChooser.form:129 Project.module:571 #: VersionControl.module:398 msgid "Cancel" msgstr "Avbryt" #: CProjectList.class:554 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "Vill du verkligen ta bort denna fil?" #: CProjectList.class:554 FSelectLibrary.form:48 FSoftwareFarm.class:384 msgid "Uninstall" msgstr "" #: CProjectList.class:557 #, fuzzy msgid "Unable to uninstall software:" msgstr "Kan ej ansluta till databas." #: CProjectList.class:561 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "Projektet har lyckligt skapats." #: CProjectTree.class:97 msgid "Files" msgstr "" #: CProjectTree.class:357 FHelpShortcut.form:22 FMain.form:430 #: FSearch.class:124 FSelectIcon.form:31 msgid "Project" msgstr "Projekt" #: CProjectTree.class:360 msgid "Sources" msgstr "Källor" #: CProjectTree.class:362 msgid "Connections" msgstr "Anslutningar" #: CProjectTree.class:363 msgid "Public" msgstr "" #: CProjectTree.class:364 msgid "Data" msgstr "Data" #: CRecentProject.class:68 FMain.class:738 msgid "Today" msgstr "Idag" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Igår" #: CRecentProject.class:72 msgid "Two days ago" msgstr "I förrgår" #: CRecentProject.class:74 msgid "This week" msgstr "Denna vecka" #: CRecentProject.class:76 msgid "This month" msgstr "Denna månad" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "Kan ej packa fil." #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2751 FMenu.class:88 msgid "Ignore" msgstr "Ignorera" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "Följande klasser har cirkulärt arv:" #: CSoftware.class:388 #, fuzzy msgid "Unable to compile the project." msgstr "Kunde ej spara projektet." #: CSoftware.class:395 #, fuzzy msgid "Unable to make executable." msgstr "Kan ej göra körbart program." #: CSoftware.class:464 #, fuzzy msgid "Unable to install source directory" msgstr "Kan ej skapa temporär katalog" #: CSoftware.class:663 #, fuzzy msgid "yesterday" msgstr "Igår" #: CSoftware.class:665 #, fuzzy msgid "&1 days ago" msgstr "I förrgår" #: CSoftware.class:671 #, fuzzy msgid "last week" msgstr "Denna vecka" #: CSoftware.class:673 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:679 #, fuzzy msgid "last month" msgstr "Denna månad" #: CSoftware.class:681 msgid "&1 months ago" msgstr "" #: CSoftware.class:687 msgid "last year" msgstr "" #: CSoftware.class:689 #, fuzzy msgid "on &1" msgstr "i &1." #: CVersionControlGit.class:291 #, fuzzy msgid "Unable to push the project." msgstr "Kunde ej spara projektet." #: CVersionControlGit.class:305 CVersionControlSubversion.class:300 msgid "Local root path" msgstr "" #: CVersionControlGit.class:308 #, fuzzy msgid "Last commit" msgstr "Klistra in som kommentar" #: CVersionControlGit.class:309 CVersionControlSubversion.class:302 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:310 CVersionControlSubversion.class:303 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:317 #, fuzzy msgid "Current branch" msgstr "Aktuellt objekt" #: CVersionControlGit.class:318 msgid "Origin" msgstr "" #: CVersionControlGit.class:325 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:327 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:329 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:336 #, fuzzy msgid "None in the current project." msgstr "Kan ej skapa projekt!" #: CVersionControlGit.class:338 #, fuzzy msgid "One in the current project." msgstr "Kan ej skapa projekt!" #: CVersionControlGit.class:340 #, fuzzy msgid "&1 in the current project." msgstr "Aktuella projekt" #: CVersionControlGit.class:344 #, fuzzy msgid "Status" msgstr "Statusrad" #: CVersionControlGit.class:347 CVersionControlSubversion.class:318 #, fuzzy msgid "Remote repository URL" msgstr "Arkiv" #: CVersionControlGit.class:398 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "Mappen kommer att tas bort vid nästa inlämning." #: CVersionControlGit.class:398 Design.module:525 FColorChooser.form:62 #: FConnectionEditor.class:707 FCrash.form:91 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:27 #: FImageQuality.form:24 FImageResize.form:103 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMenu.form:409 FNewConnection.form:312 #: FNewTable.form:80 FNewTranslation.form:15 FPasteSpecial.form:80 #: FProjectProperty.form:962 FProxy.form:63 FReportBorderChooser.form:54 #: FReportBoxShadowChooser.form:33 FReportBrushChooser.form:42 #: FReportCoordChooser.form:32 FReportPaddingChooser.form:69 #: FSelectComponent.form:34 FSelectExtraFile.form:37 FSelectIcon.form:84 #: FSelectLibrary.form:60 FSnippet.form:51 FTableChooser.form:62 FText.form:34 #: FVersionError.form:57 FWebFontChooser.form:123 msgid "OK" msgstr "OK" #: CVersionControlGit.class:436 #, fuzzy msgid "Solve conflict." msgstr "Konfliktversion" #: CVersionControlGit.class:461 FConnectionEditor.class:837 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Datum" #: CVersionControlSubversion.class:301 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:319 #, fuzzy msgid "Remote revision" msgstr "Tag bort alla uttryck" #: CVersionControlSubversion.class:320 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:321 msgid "Remote last commit date" msgstr "" #: CWelcome.class:152 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:152 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2231 msgid "first" msgstr "första" #: Design.module:229 Project.module:2233 msgid "second" msgstr "andra" #: Design.module:231 Project.module:2235 msgid "third" msgstr "tredje" #: Design.module:325 Project.module:2294 msgid "in &1:&2." msgstr "i &1:&2." #: Design.module:441 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:445 #, fuzzy msgid "The program has been terminated." msgstr "Projektet har lyckligt skapats." #: Design.module:454 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Programmet returnerade\n" "värdet: &1" #: Design.module:735 #, fuzzy msgid "The project has no test module." msgstr "Projektet finns ej." #: Design.module:1039 msgid "Output terminal" msgstr "Utdataterminal" #: Design.module:1067 msgid "No terminal emulator found." msgstr "Ingen terminalemulator hittad." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Licens" #: FAbout.class:241 msgid "Financial support" msgstr "Finansiellt stöd" #: FAbout.form:12 FMain.form:1325 FWelcome.class:76 msgid "About Gambas" msgstr "Om Gambas" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "" "

Licence

\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 2, 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" #: FArguments.form:13 FMain.form:1756 #, fuzzy msgid "Run with arguments" msgstr "Fel argument" #: FArguments.form:30 FImageProperty.form:702 FProjectProperty.form:956 #: FTestSuite.form:166 msgid "Reset" msgstr "Återställ" #: FArguments.form:40 FMain.form:585 msgid "Run" msgstr "Kör" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:415 FEditor.form:346 FFileInfoVC.form:70 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:392 FMain.form:405 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:67 #: FTestSuite.form:172 FTextEditor.form:342 FTips.form:83 FTranslate.form:411 msgid "Close" msgstr "Stäng" #: FColorChooser.form:15 msgid "Select a color" msgstr "Välj en färg" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "System" #: FColorChooser.form:35 msgid "Free" msgstr "Fri" #: FComponentChooser.class:351 FProjectProperty.form:440 msgid "Not finished but stable" msgstr "Ej avslutad, men stabil" #: FComponentChooser.class:353 FProjectProperty.form:440 msgid "Experimental" msgstr "Experimentell" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:440 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:216 msgid "Remove all" msgstr "Tab bort allt" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "Dessa komponenter är ej kompatibla:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "&1-komponenten behöver en av följande komponenter:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "&1-komponenten behöver &2-kcomponenten." #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "Välj ett typsnitt" #: FComponentChooser.form:55 #, fuzzy msgid "Show deprecated components" msgstr "Visa exporterade klasser" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:366 FForm.form:445 #: FHelpBrowser.form:79 FImageEditor.form:378 FMain.form:380 #: FTextEditor.form:362 FTranslate.form:93 Project.module:863 msgid "Reload" msgstr "Ladda om" #: FComponentChooser.form:114 FHelpBrowser.form:89 FImageEditor.form:336 msgid "Zoom in" msgstr "Zooma in" #: FComponentChooser.form:120 FHelpBrowser.form:95 FImageEditor.form:344 msgid "Zoom out" msgstr "Zooma ut" #: FComponentChooser.form:126 FHelpBrowser.form:101 msgid "No zoom" msgstr "Ingen zoom" #: FConflict.class:14 FMain.form:1675 msgid "&Edit" msgstr "&Redigera" #: FConflict.class:14 #, fuzzy msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "Denn fil är i konflikt med utgåva #&1.\n" "Du måste lösa konflikten för att kunna använda filen." #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:50 FImageEditor.form:619 msgid "Text" msgstr "Text" #: FConflict.class:141 FMain.form:984 FReportBrushChooser.form:49 #: Project.module:236 msgid "Image" msgstr "Bild" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Filen har ändrats.\n" " Vill du verkligen avsluta dialogen?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Några konflikter är fortfarande olösta." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Kan ej lösa konflikten." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Filen har ändrats.\n" "Vill du verkligen öppna en annan fil?" #: FConflict.class:267 msgid "Conflict files" msgstr "Filer med konflikter" #: FConflict.form:31 msgid "Version conflict" msgstr "Konfliktversion" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:382 #: FEditor.form:130 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:120 FProjectVersion.form:234 FTextEditor.form:128 msgid "Cut" msgstr "Klipp ut" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:137 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:126 FOutput.form:40 #: FProjectVersion.form:240 FSystemInfo.form:61 FTextEditor.form:135 #: FTranslate.form:114 msgid "Copy" msgstr "Kopiera" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:144 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:132 FOutput.form:47 FPasteTable.form:99 #: FProjectVersion.form:246 FTextEditor.form:142 msgid "Paste" msgstr "Klistra in" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:403 #: FEditor.form:113 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1732 FProjectVersion.form:252 #: FTextEditor.form:111 msgid "Undo" msgstr "Ångra" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:410 #: FEditor.form:120 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:118 msgid "Redo" msgstr "Gör om" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:580 FMenu.form:142 #: FProjectVersion.form:264 FTextEditor.form:556 msgid "Indent" msgstr "Indragning" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:588 FMenu.form:148 #: FProjectVersion.form:270 FTextEditor.form:564 msgid "Unindent" msgstr "Ångra indragning" #: FConflict.form:141 FMain.form:373 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "Öppna" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:372 FForm.form:451 FImageEditor.form:385 FMain.form:389 #: FMenu.class:88 FOption.form:1398 FSaveProjectAs.form:87 FTextEditor.form:368 #: FTranslate.form:234 msgid "Save" msgstr "Spara" #: FConflict.form:160 msgid "Solve" msgstr "Lös" #: FConflictEditor.class:956 FEditor.class:2716 FTextEditor.class:1140 msgid "(Declarations)" msgstr "(Deklarationer)" #: FConflictEditor.class:1145 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:150 FTextEditor.form:148 msgid "Advanced" msgstr "Avancerat" #: FConflictEditor.form:138 FEditor.form:154 FTextEditor.form:152 msgid "Upper case" msgstr "Stora bokstäver" #: FConflictEditor.form:145 FEditor.form:161 FTextEditor.form:159 msgid "Lower case" msgstr "Små bokstäver" #: FConflictEditor.form:155 FEditor.form:171 FTextEditor.form:184 msgid "Comment" msgstr "Kommentar" #: FConflictEditor.form:162 FEditor.form:178 FTextEditor.form:191 msgid "Uncomment" msgstr "Avkommentera" #: FConflictEditor.form:172 FEditor.form:188 FPasteSpecial.form:19 #: FTextEditor.form:201 msgid "Paste special" msgstr "Klistra in special" #: FConflictEditor.form:183 FEditor.form:221 FImageEditor.form:222 #: FTextEditor.form:232 msgid "Select All" msgstr "Välj allt" #: FConflictEditor.form:193 FEditor.form:236 FGotoLine.form:12 #: FTextEditor.form:242 msgid "Go to line" msgstr "Gå till rad" #: FConflictEditor.form:198 FEditor.form:241 FTextEditor.form:247 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:256 FTextEditor.form:255 msgid "Find next" msgstr "Hitta nästa" #: FConflictEditor.form:213 FEditor.form:263 FTextEditor.form:262 msgid "Find previous" msgstr "Hitta föregående" #: FConflictEditor.form:222 FEditor.form:272 FImageEditor.form:331 #: FMain.form:763 FTextEditor.form:271 msgid "View" msgstr "Vy" #: FConflictEditor.form:226 FEditor.form:276 FTextEditor.form:275 #, fuzzy msgid "Automatic word wrap" msgstr "Automatisering" #: FConflictEditor.form:233 FTextEditor.form:282 msgid "Indent with tab" msgstr "" #: FConflictEditor.form:240 FEditor.form:283 FTextEditor.form:289 msgid "No split" msgstr "Ingen delning" #: FConflictEditor.form:246 FEditor.form:289 FTextEditor.form:295 msgid "Horizontal split" msgstr "Horisontell delning" #: FConflictEditor.form:253 FEditor.form:296 FTextEditor.form:302 msgid "Vertical split" msgstr "Vertikal delning" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:309 msgid "End of line" msgstr "Radslut" #: FConflictEditor.form:263 FTextEditor.form:312 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:317 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:322 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1042 FTextEditor.form:332 msgid "Open code" msgstr "Öppna kod" #: FConflictEditor.form:316 FEditor.form:382 FPasteSpecial.form:60 #: FTextEditor.form:378 msgid "Paste as string" msgstr "Klistra in som sträng" #: FConflictEditor.form:321 FEditor.form:387 FPasteSpecial.form:65 #: FTextEditor.form:383 msgid "Paste as multi-line string" msgstr "Klistra in som flerradig sträng" #: FConflictEditor.form:326 FEditor.form:392 FPasteSpecial.form:50 #: FTextEditor.form:388 msgid "Paste as comments" msgstr "Klistra in som kommentar" #: FConflictEditor.form:342 FTextEditor.form:404 msgid "Text editor" msgstr "Textredigerare" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:410 msgid "Code" msgstr "Kod" #: FConflictEditor.form:377 #, fuzzy msgid "Conflict solved" msgstr "Filer med konflikter" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "Konfliktversion" #: FConflictEditor.form:518 #, fuzzy msgid "Next conflict" msgstr "Konfliktversion" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:322 msgid "Name" msgstr "Namn" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:54 #: FNewConnection.form:84 FNewTable.form:48 FProxy.form:27 msgid "Type" msgstr "Typ" #: FConnectionEditor.class:61 msgid "Length" msgstr "Längd" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Standardvärde" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "Samling" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:49 msgid "Index" msgstr "Index" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Unik" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Fält" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Kan ej ansluta till databas." #: FConnectionEditor.class:470 FSave.form:35 msgid "Do not save" msgstr "Spara ej" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "Tabell '&1' har ändrats. Vill du spara den?" #: FConnectionEditor.class:498 #, fuzzy msgid "No record" msgstr "Ingen post importerad." #: FConnectionEditor.class:500 #, fuzzy msgid "One record" msgstr "En post importerad." #: FConnectionEditor.class:502 #, fuzzy msgid "&1 records" msgstr "&1 poster importerade." #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Kan ej ladda tabell '&1'." #: FConnectionEditor.class:715 msgid "Unable to run query." msgstr "Kan ej köra förfrågan." #: FConnectionEditor.class:717 msgid "&1 s" msgstr "" #: FConnectionEditor.class:750 msgid "unlimited" msgstr "obegränsad" #: FConnectionEditor.class:837 MConnection.module:149 msgid "Blob" msgstr "Droppe" #: FConnectionEditor.class:837 MConnection.module:143 msgid "Boolean" msgstr "Booleansk" #: FConnectionEditor.class:837 MConnection.module:139 msgid "Float" msgstr "Flyttal" #: FConnectionEditor.class:837 MConnection.module:135 msgid "Integer" msgstr "Heltal" #: FConnectionEditor.class:837 MConnection.module:137 msgid "Long" msgstr "Lång" #: FConnectionEditor.class:837 MConnection.module:147 msgid "Serial" msgstr "Seriell" #: FConnectionEditor.class:837 MConnection.module:145 msgid "String" msgstr "Sträng" #: FConnectionEditor.class:926 msgid "This name is already in used." msgstr "Detta namn används redan." #: FConnectionEditor.class:951 msgid "Please enter a number." msgstr "Skriv in ett tal." #: FConnectionEditor.class:956 msgid "The length must be greater than 1 and lower than 255." msgstr "Längden måste vara större än 1 och mindre än 255." #: FConnectionEditor.class:980 msgid "Type mismatch." msgstr "Felaktig matchning av typ." #: FConnectionEditor.class:1032 msgid "This name already exists." msgstr "Namnet finns redan." #: FConnectionEditor.class:1120 msgid "This field is used in an index." msgstr "Detta fält används som index." #: FConnectionEditor.class:1474 msgid "The table '&1' has no primary key." msgstr "Tabe '&1' har ingen primär nyckel." #: FConnectionEditor.class:1610 msgid "Cannot write table '&1'." msgstr "Kan ej skriva tabell '&1'." #: FConnectionEditor.class:1707 msgid "Do you really want to delete table '&1'?" msgstr "Vill du verkligen ta bort tabell '&1'?" #: FConnectionEditor.class:1719 msgid "Cannot delete table '&1'." msgstr "Kan ej ta bort '&1'." #: FConnectionEditor.class:1772 msgid "Do you really want to remove the selected rows?" msgstr "Vill du verkligen ta bort de valda raderna?" #: FConnectionEditor.class:1936 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Anslutningsredigerare" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Visa systemtabeller" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Ny tabell" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Tag bort tabell" #: FConnectionEditor.form:134 FDebugInfo.form:192 FMain.form:1232 #: FMakeInstall.form:762 FOption.form:1234 FProjectProperty.form:597 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "Tag bort" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Döp on tabell" #: FConnectionEditor.form:143 FMain.form:1100 msgid "Rename" msgstr "Döp om" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Kopiera tabell" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Klistra in tabell" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Importera textfil" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1020 #: FOption.form:1220 FTranslate.form:431 msgid "Import" msgstr "Importera" #: FConnectionEditor.form:213 msgid "Fields" msgstr "Fält" #: FConnectionEditor.form:229 FMain.class:2189 FMakeInstall.form:756 #: FProjectProperty.form:664 FPublish.form:158 msgid "Add" msgstr "Lägg till" #: FConnectionEditor.form:243 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Ner" #: FConnectionEditor.form:250 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Upp" #: FConnectionEditor.form:258 msgid "Copy field list" msgstr "Kopiera fältlista" #: FConnectionEditor.form:276 msgid "Indexes" msgstr "Index" #: FConnectionEditor.form:293 msgid "New index" msgstr "Nytt index" #: FConnectionEditor.form:353 msgid "Run query" msgstr "Kör fråga" #: FConnectionEditor.form:359 msgid "New query" msgstr "" #: FConnectionEditor.form:361 FMain.form:908 FOption.form:1212 #: FTranslate.form:88 msgid "New" msgstr "Nytt" #: FConnectionEditor.form:367 msgid "Remove query" msgstr "" #: FConnectionEditor.form:375 FDebugInfo.class:264 FImageProperty.form:379 #: FList.form:93 FMakeInstall.form:780 FOption.class:820 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Töm" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:421 #: FOption.form:1227 msgid "Edit" msgstr "Redigera" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "Exportera till CSV-fil" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Exportera" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1107 #: FMenu.form:110 FNewConnection.class:402 FOption.form:1405 #: FSoftwareFarm.class:661 FTranslate.form:98 msgid "Delete" msgstr "Tag bort" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "Välj allt" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "Avmarkera allt" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Gambas 3 projektomvadnling" #: FCrash.class:73 FTranslate.class:244 Project.module:4541 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:58 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:64 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Ingen förälder)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Kan ej lägga till fil." #: FCreateFile.form:37 msgid "New file" msgstr "Ny fil" #: FCreateFile.form:72 FImportTable.form:58 FMakePatch.form:65 #: FProjectProperty.form:750 FSearch.form:99 msgid "Options" msgstr "Val" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Bredd" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Höjd" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "Hantering av dialogrutor" #: FCreateFile.form:155 msgid "Parent class" msgstr "Föräldraklass" #: FCreateFile.form:168 msgid "Exported" msgstr "Exporterade" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "Automatisk utvidgning" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "möjlig att skapa" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Automatisk utvidgning" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Projektutkopiering har misslyckats." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Kan ej skapa projekt!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "Välj en plats för menyn." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Mata in platsen för arkivet." #: FCreateProject.form:31 FMain.form:293 msgid "New project" msgstr "Nytt projekt" #: FCreateProject.form:46 FProjectProperty.form:318 msgid "Project type" msgstr "Projekttyp" #: FCreateProject.form:82 #, fuzzy msgid "Parent directory" msgstr "Projektets föräldrakatalog" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "Projekttitel" #: FCreateProject.form:99 msgid "Project name" msgstr "Projektnamn" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Projektnamnet är namnet av projektkatalogen." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "Den slutgiltiga projektkatalogen är:" #: FCreateProject.form:134 msgid "Project title" msgstr "Projekttitel" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "Projekttiteln är det riktiga namnet på applikationen." #: FCreateProject.form:154 FProjectProperty.form:874 msgid "Project is translatable" msgstr "Projekt är översättningsbart" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:305 msgid "Open in another window" msgstr "Öppna i annat fönster" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Arkiv" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "Projektarkivet skickas direkt till kommandot 'svn checkout'." #: FDebugButton.class:104 #, fuzzy msgid "Test has failed." msgstr "Projektutkopiering har misslyckats." #: FDebugButton.form:21 FDebugInfo.form:94 msgid "Debugging" msgstr "Avlusning" #: FDebugButton.form:30 FDebugInfo.form:175 FMain.form:785 FOption.form:1526 msgid "Console" msgstr "Konsol" #: FDebugButton.form:39 FDebugInfo.form:183 MTheme.module:6 msgid "Breakpoints" msgstr "Brytpunkter" #: FDebugButton.form:48 FDebugInfo.form:245 msgid "Warnings" msgstr "" #: FDebugButton.form:57 msgid "Notes" msgstr "" #: FDebugButton.form:66 FDebugInfo.form:286 msgid "Unit tests" msgstr "" #: FDebugButton.form:75 FDebugInfo.form:318 FMain.form:501 #: FProjectProperty.form:905 FVersionControl.class:64 msgid "Version control" msgstr "" #: FDebugButton.form:84 FDebugInfo.form:398 #, fuzzy msgid "Search result" msgstr "Söklista" #: FDebugExpr.class:4 msgid "not available" msgstr "ej tillgängligt" #: FDebugExpr.class:507 FProjectProperty.class:161 msgid "Value" msgstr "Värde" #: FDebugExpr.class:511 msgid "Key" msgstr "Nyckel" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Symbol" #: FDebugExpr.form:33 msgid "Watch" msgstr "Bevakning" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "Koppla loss konsol" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "Inget element" #: FDebugInfo.class:41 FImageEditor.form:589 FImportTable.class:66 msgid "Line" msgstr "Rad" #: FDebugInfo.class:42 FProfile.class:645 msgid "Function" msgstr "Funktion" #: FDebugInfo.class:46 FMain.form:289 FTranslate.class:78 msgid "File" msgstr "Fil" #: FDebugInfo.class:49 msgid "Col." msgstr "Kol." #: FDebugInfo.class:64 FImportTable.class:68 msgid "Message" msgstr "Meddelande" #: FDebugInfo.class:120 msgid "native code" msgstr "native code" #: FDebugInfo.class:187 #, fuzzy msgid "Watch expressions" msgstr "Bevakningsuttryck" #: FDebugInfo.class:264 msgid "Do you want to clear the expression list ?" msgstr "Vill du sudda denna uttryckslista?" #: FDebugInfo.class:1091 #, fuzzy msgid "File not loaded" msgstr "Fil ej hittad!" #: FDebugInfo.class:1230 msgid "Current object" msgstr "Aktuellt objekt" #: FDebugInfo.class:1276 msgid "Local variables" msgstr "Lokala variabler" #: FDebugInfo.form:74 FMain.form:580 msgid "Debug" msgstr "Avlusa" #: FDebugInfo.form:124 msgid "Remove current expression" msgstr "Tag bort aktuellt uttryck" #: FDebugInfo.form:130 msgid "Add expression" msgstr "Lägg till uttryck" #: FDebugInfo.form:190 #, fuzzy msgid "Remove breakpoint" msgstr "Tag bort alla brytpunkter" #: FDebugInfo.form:198 #, fuzzy msgid "Disable breakpoint" msgstr "Växla brytpunkt" #: FDebugInfo.form:200 #, fuzzy msgid "Disable" msgstr "Tabell" #: FDebugInfo.form:206 #, fuzzy msgid "Enable breakpoint" msgstr "Växla brytpunkt" #: FDebugInfo.form:208 #, fuzzy msgid "Enable" msgstr "Tabell" #: FDebugInfo.form:214 msgid "Remove all breakpoints" msgstr "Tag bort alla brytpunkter" #: FDebugInfo.form:264 msgid "Tasks" msgstr "" #: FDebugInfo.form:293 FOutput.form:78 msgid "Clear console" msgstr "Rensa konsol" #: FDebugInfo.form:300 msgid "Run test" msgstr "" #: FDebugInfo.form:332 FMain.form:506 FProjectVersion.form:89 #: FVersionControl.form:91 msgid "Commit" msgstr "Lämna in" #: FDebugInfo.form:339 FMain.form:512 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Synkronisera" #: FDebugInfo.form:346 FMain.form:525 #, fuzzy msgid "Revert all changes" msgstr "Tag bort alla brytpunkter" #: FDebugInfo.form:353 FMain.form:531 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:406 msgid "Cancel current search" msgstr "Avbryt aktuell sökning" #: FDebugInfo.form:422 msgid "Show search window" msgstr "Visa sökfönster" #: FDebugInfo.form:429 msgid "Search again" msgstr "Sök igen" #: FDebugInfo.form:478 FSearch.class:521 FTranslate.class:639 msgid "Search string cannot be found." msgstr "Söksträng kan ej hittas." #: FEditor.class:3361 #, fuzzy msgid "Declarations" msgstr "(Deklarationer)" #: FEditor.form:195 FTextEditor.form:214 msgid "Format code" msgstr "Formatera kod" #: FEditor.form:201 msgid "Sort procedures" msgstr "Sortera procedurer" #: FEditor.form:230 msgid "Go to" msgstr "Gå till" #: FEditor.form:249 msgid "Find definition" msgstr "Leta efter definition" #: FEditor.form:306 FMain.form:1565 msgid "Run until current line" msgstr "Kör till aktuell rad" #: FEditor.form:313 msgid "Toggle breakpoint" msgstr "Växla brytpunkt" #: FEditor.form:320 msgid "Watch expression" msgstr "Bevakningsuttryck" #: FEditor.form:329 msgid "Open form" msgstr "Öppna formulär" #: FEditor.form:336 FMain.form:1133 #, fuzzy msgid "Run this class" msgstr "Föräldraklass" #: FEditor.form:353 FForm.form:431 FImageEditor.form:370 FTextEditor.form:349 msgid "Locked" msgstr "" #: FEditor.form:359 FHelpBrowser.form:120 FTextEditor.form:355 msgid "Print" msgstr "Skriv ut" #: FEditor.form:408 FHelpShortcut.form:24 FOption.form:816 msgid "Editor" msgstr "Redigerare" #: FEditor.form:421 FForm.form:481 FTextEditor.form:417 #, fuzzy msgid "Show modifications" msgstr "Spara ändrade filer" #: FEditor.form:430 FForm.form:490 FTextEditor.form:426 #, fuzzy msgid "Previous modification" msgstr "Konfliktversion" #: FEditor.form:437 FForm.form:497 FTextEditor.form:433 #, fuzzy msgid "Next modification" msgstr "Konfliktversion" #: FEditor.form:570 FTextEditor.form:546 #, fuzzy msgid "Insert special character" msgstr "Felaktiga tecken" #: FEditor.form:613 FTextEditor.form:589 msgid "Make code pretty" msgstr "Snygga upp kod" #: FEditor.form:678 FTextEditor.form:644 msgid "Procedure list" msgstr "Procedurlista" #: FEditor.form:700 FImageEditor.form:770 FTextEditor.form:685 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV-filer" #: FExportData.class:113 msgid "Unable to export data." msgstr "Kunde ej exportera data." #: FExportData.class:126 msgid "&Overwrite" msgstr "&Skriv över" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Filen finns redan.\n" "\n" "Vill du skriva över den?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Åtskillnadstecken" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Omslut tecken" #: FExportData.form:54 msgid "Export field names" msgstr "Exportera fältnamn" #: FExportData.form:60 msgid "Export selected records only" msgstr "Exportera endast valda poster" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Användare" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Lösenord" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Kom ihåg lösenord" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "Skriv in din e-postadress." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "Kan ej köra förfrågan." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "Konfigurere kant" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:338 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Kan öppna anslutning." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "Kunde ej ladda tabellens fält." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Redigera fältlista" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Välj ett fält" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Anslutning" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tabell" #: FFileInfoVC.class:23 #, fuzzy msgid "'&1' version control" msgstr "Slå på versionskontroll" #: FFileInfoVC.class:63 msgid "This file is locked, and will be deleted on the next commit." msgstr "Denna fil är låst och kommer att tas bort vid nästa inlämning." #: FFileInfoVC.class:65 msgid "This file is not versioned, and must be added to the repository." msgstr "Denna fil är ej versionshanterad och måste läggas till filarkivet." #: FFileInfoVC.class:68 msgid "This file has not been modified since the last commit." msgstr "Denna fil har ej ändrats sedan senast inskickning." #: FFileInfoVC.class:82 FMakeInstall.class:361 FProjectVersion.class:211 #: FSave.form:21 Project.module:3556 VersionControl.module:398 msgid "Continue" msgstr "Fortsätt" #: FFileInfoVC.class:82 FProjectVersion.class:211 VersionControl.module:398 msgid "You are going to cancel your changes!" msgstr "Då skall till att saka dina ändringar!" #: FFileInfoVC.form:25 FProjectVersion.form:299 FVersionControl.form:36 msgid "Changes" msgstr "Ändringar" #: FFileInfoVC.form:41 FVersionControl.form:55 #, fuzzy msgid "History" msgstr "Sortera historia" #: FFileInfoVC.form:59 #, fuzzy msgid "Undo changes" msgstr "Ändringar" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Gambas moduler" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "Sortera egenskaper" #: FFontChooser.form:12 msgid "Select a font" msgstr "Välj ett typsnitt" #: FForm.class:136 msgid "Bad form file" msgstr "Felaktig förmulärsfil" #: FForm.class:268 #, fuzzy msgid "Unknown control: &1" msgstr "Okänf identifierare: &1" #: FForm.class:1333 msgid "Component missing for control &1" msgstr "Komponent saknas för kontrol &1" #: FForm.class:1876 #, fuzzy msgid "Cannot paste data." msgstr "Kan ej skapa tabell '&1'." #: FForm.form:178 msgid "Copy at the same place" msgstr "Kopiera på samma plats" #: FForm.form:198 msgid "Delete container only" msgstr "Tag endast bort behållare" #: FForm.form:205 msgid "Embed into a container" msgstr "Inkapsla i en behållare" #: FForm.form:211 msgid "Change into" msgstr "Byt till" #: FForm.form:219 msgid "Select" msgstr "Välj" #: FForm.form:232 msgid "Select parent" msgstr "" #: FForm.form:245 msgid "Arrangement" msgstr "Uppställning" #: FForm.form:249 msgid "Bring to foreground" msgstr "Hämta tiil förgrund" #: FForm.form:256 msgid "Send to background" msgstr "Skicka till bakgrund" #: FForm.form:266 msgid "Horizontal" msgstr "Horisontell" #: FForm.form:273 msgid "Rows" msgstr "Rader" #: FForm.form:279 msgid "Vertical" msgstr "Vertikal" #: FForm.form:286 msgid "Columns" msgstr "Kolumner" #: FForm.form:295 msgid "Center horizontally" msgstr "Centrera horisontellt" #: FForm.form:301 msgid "Center vertically" msgstr "Centrera vertikalt" #: FForm.form:307 msgid "Alignment" msgstr "Placering i linje" #: FForm.form:311 msgid "Align to left" msgstr "Vänsterjustera" #: FForm.form:317 msgid "Align to right" msgstr "Högerjustera" #: FForm.form:323 msgid "Align to top" msgstr "Justera mot toppen" #: FForm.form:329 msgid "Align to bottom" msgstr "Justera mot botten" #: FForm.form:338 msgid "Same width" msgstr "Samma bredd" #: FForm.form:344 msgid "Same height" msgstr "Samma höjd" #: FForm.form:353 msgid "Show tab" msgstr "Visa flik" #: FForm.form:361 msgid "Move tab" msgstr "Flytta flik" #: FForm.form:366 msgid "First" msgstr "Första" #: FForm.form:373 FSearch.form:190 FTips.form:71 msgid "Previous" msgstr "Föregående" #: FForm.form:380 FSearch.form:184 FTips.form:77 msgid "Next" msgstr "Nästa" #: FForm.form:387 msgid "Last" msgstr "Sista" #: FForm.form:398 FMenu.form:69 msgid "Menu editor" msgstr "Menyredigerare" #: FForm.form:407 msgid "Event" msgstr "Händelse" #: FForm.form:421 #, fuzzy msgid "Run this form" msgstr "Kör detta kommndo efter" #: FForm.form:601 msgid "Toggle grid" msgstr "Växla rutnät" #: FForm.form:610 FImageEditor.form:515 #, fuzzy msgid "Toggle information tooltip" msgstr "Paketinformation" #: FForm.form:729 msgid "Move tab first" msgstr "Flytta flik främst" #: FForm.form:736 msgid "Move tab left" msgstr "Flytta flik till vänster" #: FForm.form:743 msgid "Move tab right" msgstr "Flytta flik till höger" #: FForm.form:750 msgid "Move tab last" msgstr "Flytta flik sist" #: FForm.form:778 FOption.form:284 msgid "Bold" msgstr "Fetstil" #: FForm.form:786 msgid "Italic" msgstr "Kursiv" #: FForm.form:794 FOption.form:289 msgid "Underline" msgstr "Understrykning" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1428 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1630 MTheme.module:6 msgid "Background" msgstr "Bakgrund" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 msgid "Lock / unlock form" msgstr "" #: FFormStack.form:14 FMain.form:1937 msgid "Hierarchy" msgstr "Hierarki" #: FFormStack.form:24 msgid "Move top" msgstr "Flytta toppen" #: FFormStack.form:30 FMenu.form:154 msgid "Move up" msgstr "Flytta uppåt" #: FFormStack.form:36 FMenu.form:160 msgid "Move down" msgstr "Flytta neråt" #: FFormStack.form:42 msgid "Move bottom" msgstr "Flytta botten" #: FHelpBrowser.class:24 FProjectProperty.form:890 msgid "Default language" msgstr "Standardspråk" #: FHelpBrowser.form:30 FMain.form:1296 msgid "Help browser" msgstr "Hjälpbläddrare" #: FHelpBrowser.form:42 msgid "Show help tree" msgstr "Visa hjälpträd" #: FHelpBrowser.form:61 FMain.form:812 FProfile.form:48 msgid "Go back" msgstr "Gå tillbaka" #: FHelpBrowser.form:67 FMain.form:819 FProfile.form:54 msgid "Go forward" msgstr "Gå framåt" #: FHelpShortcut.form:11 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:26 msgid "Debugger" msgstr "" #: FHelpShortcut.form:28 FOption.form:596 FProjectProperty.form:863 #: FTranslate.form:154 msgid "Translation" msgstr "Översättning" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:304 msgid "Horizontal flip" msgstr "Horisontell vikning" #: FImageEditor.form:179 FImageProperty.form:298 msgid "Vertical flip" msgstr "Vertikal vikning" #: FImageEditor.form:186 FImageProperty.form:292 msgid "Rotate counter-clockwise" msgstr "Rotera medsols" #: FImageEditor.form:194 FImageProperty.form:286 msgid "Rotate clockwise" msgstr "Rotera motsols" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "Urval" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:12 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "Preferenser" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "Urval" #: FImageEditor.form:284 #, fuzzy msgid "Exclusive or" msgstr "Utesluter" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "" #: FImageEditor.form:402 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:408 msgid "Save as PNG" msgstr "" #: FImageEditor.form:414 msgid "Save as BMP" msgstr "" #: FImageEditor.form:421 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:428 msgid "Image editor" msgstr "Bildredigerare" #: FImageEditor.form:506 msgid "Drawing grid" msgstr "" #: FImageEditor.form:558 msgid "Move" msgstr "" #: FImageEditor.form:569 msgid "Draw" msgstr "Rita" #: FImageEditor.form:579 msgid "Erase" msgstr "" #: FImageEditor.form:599 msgid "Rectangle" msgstr "Rektangel" #: FImageEditor.form:609 msgid "Ellipse" msgstr "Ellips" #: FImageEditor.form:629 msgid "Magic wand" msgstr "" #: FImageEditor.form:646 msgid "Edit selection" msgstr "" #: FImageEditor.form:749 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:758 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:22 FImageResize.form:127 msgid "px" msgstr "px" #: FImageOffsetSelection.form:40 msgid "Duplicate" msgstr "" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1267 msgid "Arrow" msgstr "" #: FImageProperty.class:1269 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1270 msgid "Triangle" msgstr "" #: FImageProperty.class:1271 msgid "Square triangle" msgstr "" #: FImageProperty.class:1272 msgid "Pentagon" msgstr "" #: FImageProperty.class:1273 msgid "Hexagon" msgstr "" #: FImageProperty.form:142 FOption.form:276 FReportBrushChooser.form:49 msgid "Color" msgstr "Färg" #: FImageProperty.form:172 msgid "Gradient" msgstr "" #: FImageProperty.form:188 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "Linjär gradient" #: FImageProperty.form:195 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "Radiell gradient" #: FImageProperty.form:219 FReportBrushChooser.form:111 msgid "Add gradient stop" msgstr "Lägg till gradient-stopp" #: FImageProperty.form:225 FReportBrushChooser.form:117 msgid "Remove gradient stop" msgstr "Tag bort gradient-stopp" #: FImageProperty.form:231 FReportBrushChooser.form:123 #, fuzzy msgid "Select gradient stop color" msgstr "Välj gradientstoppfärg..." #: FImageProperty.form:237 FReportBrushChooser.form:129 msgid "Invert gradient" msgstr "Invertera gradient" #: FImageProperty.form:259 FReportBrushChooser.form:145 msgid "Radius" msgstr "Radie" #: FImageProperty.form:326 msgid "Clipboard" msgstr "" #: FImageProperty.form:338 msgid "Shapes" msgstr "" #: FImageProperty.form:363 msgid "Stroke" msgstr "" #: FImageProperty.form:371 FTranslate.class:1753 msgid "Fill" msgstr "" #: FImageProperty.form:391 #, fuzzy msgid "Colorize" msgstr "Färg" #: FImageProperty.form:399 #, fuzzy msgid "Desaturate" msgstr "Egenskaper" #: FImageProperty.form:407 #, fuzzy msgid "Make transparent" msgstr "Spara översättning" #: FImageProperty.form:417 #, fuzzy msgid "Line cap" msgstr "Rad" #: FImageProperty.form:422 #, fuzzy msgid "Line join" msgstr "Rad" #: FImageProperty.form:427 msgid "Fill rule" msgstr "" #: FImageProperty.form:445 msgid "Opacity" msgstr "" #: FImageProperty.form:464 FSelectIcon.form:54 FTranslate.class:79 msgid "Size" msgstr "Storlek" #: FImageProperty.form:481 msgid "Tolerance" msgstr "" #: FImageProperty.form:500 msgid "Roundness" msgstr "" #: FImageProperty.form:526 msgid "Effects" msgstr "" #: FImageProperty.form:535 msgid "Brightness" msgstr "" #: FImageProperty.form:554 msgid "Contrast" msgstr "" #: FImageProperty.form:573 msgid "Gamma" msgstr "" #: FImageProperty.form:592 msgid "Lightness" msgstr "" #: FImageProperty.form:611 msgid "Hue" msgstr "" #: FImageProperty.form:630 msgid "Saturation" msgstr "" #: FImageProperty.form:649 msgid "Blur" msgstr "" #: FImageProperty.form:666 #, fuzzy msgid "Transparency" msgstr "Översätt" #: FImageProperty.form:690 FImportTable.form:188 msgid "Preview" msgstr "Förhandsgranskning" #: FImageProperty.form:709 FMain.form:494 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:735 msgid "Centered" msgstr "" #: FImageProperty.form:745 msgid "Right align" msgstr "" #: FImageProperty.form:754 msgid "Left align" msgstr "" #: FImageProperty.form:767 msgid "Top align" msgstr "" #: FImageProperty.form:776 msgid "Middle align" msgstr "" #: FImageProperty.form:786 msgid "Baseline align" msgstr "" #: FImageProperty.form:795 msgid "Bottom align" msgstr "" #: FImageProperty.form:831 msgid "Grid resolution" msgstr "" #: FImageProperty.form:849 msgid "Grid snap" msgstr "" #: FImageProperty.form:863 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:65 msgid "Resize and center" msgstr "" #: FImageResize.form:72 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:79 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:86 msgid "Stretch image" msgstr "" #: FImageResize.form:111 msgid "Add a border" msgstr "" #: FImageResize.form:116 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas klasser" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas moduler" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Gambas moduler" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "Cascading style sheets" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML-filer" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "Bildfiler" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "Kan ej öppna fil." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "Importera fil" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1371 msgid "All files" msgstr "Alla filer" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Automatisk nyckel)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Fält_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Inte tillräckligt med värden" #: FImportTable.class:393 msgid "Too many values" msgstr "För många värden" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Avbrutet av användare" #: FImportTable.class:427 msgid "No record imported." msgstr "Ingen post importerad." #: FImportTable.class:429 msgid "One record imported." msgstr "En post importerad." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 poster importerade." #: FImportTable.form:35 msgid "Import file" msgstr "Importera fil" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "Välj CSV-fil för import" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Källa" #: FImportTable.form:78 msgid "Charset" msgstr "Teckenuppsättning" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "Tag bort onödiga vita mellanslag" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "Ignorera första raderna" #: FImportTable.form:139 msgid "Line(s)" msgstr "Rad(er)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Mål" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "Första raden innehåller fältnamn" #: FImportTable.form:176 msgid "Key field" msgstr "Nyckelfält" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "Skriv in databasnamnet" #: FLayout.class:30 FOption.class:1694 #, fuzzy msgid "Override" msgstr "&Skriv över" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "Namnet finns redan." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "Spara allt" #: FLayout.form:22 #, fuzzy msgid "Layout name" msgstr "Projektnamn" #: FList.class:103 msgid "Item &1" msgstr "Term &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Vill du verkligen tömma listan?" #: FList.form:25 msgid "Edit list property" msgstr "Redigera listegenskaper" #: FList.form:59 FMenu.form:86 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "Omvandla" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "Vill du verkligen ta bort denna länk?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "Vill du verkligen ta bort denna katalog?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "Vill du verkligen ta bort denna fil?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "Kan ej ta bort fil eller mapp" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "Fil eller mapp finns inte längre." #: FMain.class:759 msgid "Sort history" msgstr "Sortera historia" #: FMain.class:763 FOpenProject.form:77 FWelcome.form:35 msgid "Sort by date" msgstr "Sortera på datum" #: FMain.class:763 FOpenProject.form:86 FWelcome.form:43 msgid "Sort by name" msgstr "Sortera på namn" #: FMain.class:763 FOpenProject.form:94 FWelcome.form:50 msgid "Sort by path" msgstr "Sortera sökvägsvis" #: FMain.class:775 msgid "&Clear history" msgstr "&Töm historik" #: FMain.class:959 msgid "New folder" msgstr "Ny mapp" #: FMain.class:1030 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "GNU's översättningshjälpmedel är ej installerade på ditt system.\n" "\n" "Installera dem så kan du göra översättningar." #: FMain.class:1747 msgid "Unable to drop file into the project." msgstr "Kan ej droppa fil in i projektet." #: FMain.class:1872 msgid "All backup or generated files will be removed from the project directory." msgstr "Samliga säkerhetskopior och skapade filer kommer att tas bort från projektmappen." #: FMain.class:1872 msgid "Clean" msgstr "Ren" #: FMain.class:2189 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2329 msgid "Choose a profile" msgstr "" #: FMain.class:2330 msgid "Profile for &1 project" msgstr "" #: FMain.class:2582 FProperty.class:1033 msgid "Select a file" msgstr "Välj en fil" #: FMain.class:2597 msgid "This file is located inside the project." msgstr "" #: FMain.class:2751 Project.module:863 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Filen har ändrats.\n" "\n" "Alla dina ändringar kommer att förloras." #: FMain.form:300 FWelcome.class:70 msgid "Open project" msgstr "Öppna projekt" #: FMain.form:306 msgid "Open recent" msgstr "Öppna senaste" #: FMain.form:314 msgid "Open example" msgstr "Öppna exempel" #: FMain.form:323 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:332 msgid "Save project" msgstr "Spara projekt" #: FMain.form:340 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Spara projekt som" #: FMain.form:351 #, fuzzy msgid "Reload project" msgstr "Välj ett projekt" #: FMain.form:360 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Avsluta" #: FMain.form:395 msgid "Save as" msgstr "" #: FMain.form:435 msgid "Compile" msgstr "Kompilera" #: FMain.form:442 msgid "Compile All" msgstr "Kompilera Allt" #: FMain.form:452 msgid "Translate" msgstr "Översätt" #: FMain.form:461 msgid "Make" msgstr "Gör" #: FMain.form:465 msgid "Executable" msgstr "Exekverbara" #: FMain.form:472 FMakePatch.form:52 msgid "Source archive" msgstr "Källarkiv" #: FMain.form:479 msgid "Installation package" msgstr "Installationspaket" #: FMain.form:486 msgid "Patch" msgstr "" #: FMain.form:489 msgid "Create" msgstr "Skapa" #: FMain.form:518 msgid "Undo synchronization" msgstr "" #: FMain.form:537 msgid "Branch" msgstr "" #: FMain.form:542 #, fuzzy msgid "Put under version control" msgstr "Slå på versionskontroll" #: FMain.form:548 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:557 FProjectVersion.form:95 msgid "Clean up" msgstr "Städa upp" #: FMain.form:563 msgid "Refresh" msgstr "Friska upp" #: FMain.form:592 msgid "Run with" msgstr "" #: FMain.form:597 msgid "Test" msgstr "" #: FMain.form:604 FTestSuite.form:32 msgid "Test suites" msgstr "" #: FMain.form:613 msgid "Pause" msgstr "Paus" #: FMain.form:620 msgid "Stop" msgstr "Stopp" #: FMain.form:627 msgid "Step" msgstr "Steg" #: FMain.form:634 msgid "Forward" msgstr "Framåt" #: FMain.form:641 msgid "Finish" msgstr "Avsluta" #: FMain.form:650 msgid "Use terminal emulator" msgstr "" #: FMain.form:656 msgid "Redirect standard error output" msgstr "" #: FMain.form:662 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:668 msgid "Activate profiling" msgstr "" #: FMain.form:677 #, fuzzy msgid "Invert language orientation" msgstr "Invertera gradient" #: FMain.form:684 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:691 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:698 #, fuzzy msgid "Show database requests" msgstr "Strunta i databasteckenuppstättning" #: FMain.form:705 msgid "GUI component" msgstr "" #: FMain.form:709 msgid "Current desktop" msgstr "" #: FMain.form:746 msgid "Open profile" msgstr "" #: FMain.form:752 msgid "Clear all breakpoints" msgstr "Rensa alla brytpunkter" #: FMain.form:757 msgid "Close all debug windows" msgstr "Stäng alla avlusningsfönster" #: FMain.form:795 msgid "Status bar" msgstr "Statusrad" #: FMain.form:802 msgid "Hide menubar" msgstr "Dölj menyrad" #: FMain.form:826 msgid "Close all windows" msgstr "Stänga alla fönster" #: FMain.form:833 msgid "Tools" msgstr "" #: FMain.form:837 msgid "Find" msgstr "Leta" #: FMain.form:843 FSearch.form:75 msgid "Replace" msgstr "Byt ut" #: FMain.form:853 msgid "Browse project" msgstr "Bläddra i projekt" #: FMain.form:860 msgid "Open a terminal" msgstr "Öppna en terminal" #: FMain.form:867 msgid "Send project by mail" msgstr "" #: FMain.form:873 msgid "Update all forms" msgstr "" #: FMain.form:882 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:891 msgid "Shortcuts" msgstr "Genvägar" #: FMain.form:897 FOption.form:264 msgid "Preferences" msgstr "Preferenser" #: FMain.form:911 msgid "Directory" msgstr "Katalog" #: FMain.form:916 msgid "Project link" msgstr "Projektlänk" #: FMain.form:925 msgid "Module" msgstr "Modul" #: FMain.form:932 #, fuzzy msgid "Test module" msgstr "Gambas moduler" #: FMain.form:991 msgid "HTML file" msgstr "HTML-fil" #: FMain.form:998 msgid "Style sheet" msgstr "Stilark" #: FMain.form:1005 msgid "Javascript file" msgstr "" #: FMain.form:1013 msgid "Other" msgstr "Annat" #: FMain.form:1024 FOpenProject.form:44 msgid "Recent" msgstr "Tidigare" #: FMain.form:1047 #, fuzzy msgid "Open in file manager" msgstr "Hantering av inställningsfiler" #: FMain.form:1052 #, fuzzy msgid "Open in project" msgstr "Öppna projekt" #: FMain.form:1056 msgid "Open with" msgstr "" #: FMain.form:1064 msgid "Compress all" msgstr "" #: FMain.form:1070 msgid "Uncompress all" msgstr "" #: FMain.form:1117 msgid "Copy file path" msgstr "Kopiera filsökväg" #: FMain.form:1126 msgid "Startup class" msgstr "Startklass" #: FMain.form:1141 msgid "Add to repository" msgstr "Lägg till i filförråd" #: FMain.form:1146 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1149 msgid "Show exported classes" msgstr "Visa exporterade klasser" #: FMain.form:1154 msgid "Show added files" msgstr "Visa tillagda filer" #: FMain.form:1159 #, fuzzy msgid "Show modified files" msgstr "Spara ändrade filer" #: FMain.form:1164 msgid "Show files in conflict" msgstr "" #: FMain.form:1172 msgid "Show all" msgstr "" #: FMain.form:1184 #, fuzzy msgid "Do not translate" msgstr "Ej översättningsbart" #: FMain.form:1210 FNewConnection.class:159 msgid "New connection" msgstr "Ny anslutning" #: FMain.form:1286 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1304 FTips.form:18 msgid "Tips of the day" msgstr "Dagens tips" #: FMain.form:1310 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1319 FSystemInfo.form:15 msgid "System information" msgstr "Systeminformation" #: FMain.form:1378 FProjectProperty.form:146 msgid "Project properties" msgstr "Projektegenskaper" #: FMain.form:1386 msgid "Refresh project" msgstr "Friska upp projekt" #: FMain.form:1413 FMakeExecutable.form:16 msgid "Make executable" msgstr "Gör exekverbar" #: FMain.form:1428 msgid "Make source archive" msgstr "Gör källarkiv" #: FMain.form:1436 FMakeInstall.form:137 msgid "Make installation package" msgstr "Gör installationspaket" #: FMain.form:1457 msgid "Properties sheet" msgstr "Egenskapsblad" #: FMain.form:1466 msgid "Toolbox" msgstr "Verktygslåda" #: FMain.form:1484 FSearch.form:61 msgid "Search" msgstr "Sök" #: FMain.form:1508 msgid "Compile all" msgstr "Kompilera allt" #: FMain.form:1557 msgid "Finish current function" msgstr "Avsluta aktuell funktion" #: FMain.form:1573 #, fuzzy msgid "Show menubar" msgstr "Visa radnummer" #: FMain.form:1633 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1663 msgid "&File" msgstr "&Arkiv" #: FMain.form:1687 msgid "&Project" msgstr "&Projekt" #: FMain.form:1699 msgid "&Debug" msgstr "Av&lusa" #: FMain.form:1711 msgid "&View" msgstr "&Visa" #: FMain.form:1723 msgid "&Tools" msgstr "Verk&tyg" #: FMain.form:1735 msgid "&?" msgstr "&?" #: FMain.form:1796 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1866 #, fuzzy msgid "Show properties sheet" msgstr "Egenskapsblad" #: FMain.form:1874 #, fuzzy msgid "Show project tree" msgstr "Visa hjälpträd" #: FMain.form:1944 #, fuzzy msgid "Show property help" msgstr "Visa egenskapshjälp" #: FMain.form:1952 #, fuzzy msgid "Show controls" msgstr "Visa verktygstips" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas tillämpning" #: FMakeExecutable.form:40 msgid "Run this command after" msgstr "Kör detta kommndo efter" #: FMakeExecutable.form:45 msgid "$(FILE) will be replaced by the path of the executable" msgstr "$(FILE) kommer att bytas ut mot det körbara programmets sökväg" #: FMakeExecutable.form:57 #, fuzzy msgid "Increment version" msgstr "Fel värde." #: FMakeExecutable.form:63 msgid "Keep debugging information in executable" msgstr "Behåll avlusningsinformation i det exekverbara programmet" #: FMakeExecutable.form:69 msgid "Create a shortcut on the desktop" msgstr "Skapa en genväg på skrivbordet" #: FMakeInstall.class:137 msgid "Package" msgstr "Paket" #: FMakeInstall.class:138 msgid "Min. version" msgstr "Min. version" #: FMakeInstall.class:139 msgid "Max. version" msgstr "Max. version" #: FMakeInstall.class:145 msgid "File or directory" msgstr "" #: FMakeInstall.class:279 #, fuzzy msgid "Creating packages..." msgstr "Skapar paket..." #: FMakeInstall.class:282 Package.module:311 msgid "The packages have been successfully created." msgstr "Paketen har skapats." #: FMakeInstall.class:333 msgid "Please enter your name." msgstr "Skriv in ditt namn." #: FMakeInstall.class:338 msgid "Please enter your e-mail address." msgstr "Skriv in din e-postadress." #: FMakeInstall.class:345 #, fuzzy msgid "Please enter the vendor name." msgstr "Skriv in ett menynamn." #: FMakeInstall.class:361 msgid "There is no CHANGELOG entry for this release." msgstr "Det finns ingen ÄNDRINGSLOGs uppgift för denna utgåva." #: FMakeInstall.class:368 msgid "Please enter the first CHANGELOG entry." msgstr "Skriv in den första raden i ÄNDRINGSLOGGEN." #: FMakeInstall.class:379 msgid "Please choose at least one target distribution." msgstr "Välj minst en måldistribution." #: FMakeInstall.class:417 msgid "Please choose the package group for each target distribution." msgstr "Välj paketgrupp för varje måldistribution." #: FMakeInstall.class:419 msgid "Please choose a package group." msgstr "Välj en paketgrupp." #: FMakeInstall.class:429 msgid "Please choose the menu location for each target distribution." msgstr "Välj menyplats för varje måldistribution." #: FMakeInstall.class:431 msgid "Please choose a menu location." msgstr "Välj en plats för menyn." #: FMakeInstall.class:458 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:464 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:472 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:478 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:494 msgid "The package cannot be stored inside the project directory." msgstr "Paketet kan ej lagras inuti projektmappen." #: FMakeInstall.class:542 msgid "Initial release" msgstr "Första utgåva" #: FMakeInstall.class:802 msgid "Menus" msgstr "Menyer" #: FMakeInstall.class:870 msgid "Groups" msgstr "Grupper" #: FMakeInstall.class:995 msgid "Incorrect characters" msgstr "Felaktiga tecken" #: FMakeInstall.class:1068 msgid "Do you really want to remove all extra dependencies?" msgstr "Vill du verkligen avlägsna alla extra beroenden?" #: FMakeInstall.class:1168 msgid "Do you really want to remove all extra files?" msgstr "Vill du verkligen ta bort alla extra filer?" #: FMakeInstall.class:1216 msgid "Select the destination directory" msgstr "Välj målmapp" #: FMakeInstall.form:151 msgid "Create package" msgstr "Skapa paket" #: FMakeInstall.form:154 msgid "Package information" msgstr "Paketinformation" #: FMakeInstall.form:160 msgid "Package name" msgstr "Paketnamn" #: FMakeInstall.form:185 FOption.form:428 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:360 FPublish.form:83 msgid "Vendor name" msgstr "Tillverkarnamn" #: FMakeInstall.form:241 FOption.form:377 #, fuzzy msgid "Vendor prefix" msgstr "Tillverkarnamn" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Information om underhållare" #: FMakeInstall.form:295 FOption.form:412 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Ändringslogg" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Måldistribution" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "Paketgrupp" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Menyrad" #: FMakeInstall.form:654 msgid "Categories" msgstr "Kategorier" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "Skrivbordskonfigurationsfil" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "Mimetyper" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "Ytterligare konfigoration" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "Följand kommer att läggas till i slutet av skrivbordskonfigurationsfilen." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "Extra beroenden" #: FMakeInstall.form:714 #, fuzzy msgid "Minimum Gambas version" msgstr "Min. version" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Lika beroenden för alla mål" #: FMakeInstall.form:786 msgid "Extra files" msgstr "Extra filer" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Lika filer för alla mål" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "Extra autoconftester" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Lägg till extra tester för konfigurationsprocess.\n" "

Lämna blank om det inte behövs ellr omf du inte vet någontinmg om autoconf skript." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Målmapp" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Skapa mappar för varje distribution" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "Skapa paket" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 Project.module:4580 msgid "Source packages" msgstr "Källpaket" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMenu.class:88 msgid "Menus have been modified!" msgstr "Menyer har modifierats!" #: FMenu.class:326 msgid "Please enter a menu name." msgstr "Skriv in ett menynamn." #: FMenu.class:332 msgid "Bad menu name !" msgstr "Felaktigt menynamn!" #: FMenu.class:338 msgid "Bad group name !" msgstr "Felaktigt gruppnamn!" #: FMenu.class:638 msgid "This menu is too deep !" msgstr "Denna mey är för djup!" #: FMenu.class:1077 Project.module:5463 msgid "modified" msgstr "ändrad" #: FMenu.form:84 msgid "Insert menu" msgstr "Skjut in meny" #: FMenu.form:92 #, fuzzy msgid "Insert separator" msgstr "Skjut in färg" #: FMenu.form:100 #, fuzzy msgid "Insert menu before" msgstr "Skjut in meny" #: FMenu.form:102 #, fuzzy msgid "Insert before" msgstr "Skjut in färg" #: FMenu.form:108 msgid "Delete menu" msgstr "" #: FMenu.form:201 msgid "Click on Insert to add a new menu." msgstr "Klicka på Insätt för att lägga till en ny meny." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Skriv in databasnamnet" #: FNewConnection.class:145 msgid "Please enter password" msgstr "Skriv lösenord" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Anslutningsegenskaper" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Välj en mapp" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "Skapa databas '&1'" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "Tag bort databas '&1'" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Kunde ej skapa databas." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "ill du verkligen ta bort databasen: '&1'?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Kunde ej ta bort databas." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Värd" #: FNewConnection.form:124 msgid "Path" msgstr "Sökväg" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "Lösenord" #: FNewConnection.form:189 Project.module:233 msgid "Database" msgstr "Databas" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Strunta i databasteckenuppstättning" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "Skapa tabell" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Skriv in den nya tabellens namn." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Tabell '&1' finns redan." #: FNewTranslation.form:10 msgid "New translation" msgstr "Ny översättning" #: FOpenProject.form:22 msgid "Select a project" msgstr "Välj ett projekt" #: FOpenProject.form:109 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Exempel" #: FOption.class:4 msgid "Amber" msgstr "Bärnsten" #: FOption.class:4 msgid "Amethyst" msgstr "Ametist" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Smaragd" #: FOption.class:4 msgid "Gambas" msgstr "Gambas" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidian" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "Klistra in" #: FOption.class:4 msgid "Quest" msgstr "Sök" #: FOption.class:4 msgid "Quick" msgstr "Snabb" #: FOption.class:4 msgid "Ruby" msgstr "Rubin" #: FOption.class:4 msgid "Sapphire" msgstr "Safir" #: FOption.class:4 msgid "Visual" msgstr "Synlig" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:87 msgid "Custom" msgstr "" #: FOption.class:89 msgid "Desktop" msgstr "Skrivbord" #: FOption.class:90 FTranslate.class:149 msgid "(Default)" msgstr "(Standard)" #: FOption.class:241 msgid "Gambas highlight theme files" msgstr "Gambas \"highlight\" temafil" #: FOption.class:242 msgid "Export a theme file" msgstr "Exportera en temafil" #: FOption.class:467 msgid "Select a theme file" msgstr "Välj en temafil" #: FOption.class:490 msgid "You need to restart the application to see your changes." msgstr "Du måste starta om tillämpningen för att se dina ändringar." #: FOption.class:820 msgid "Do you really want to clear the documentation cache?" msgstr "Vill du verkligen rensa dokumentationsminnet?" #: FOption.class:829 #, fuzzy msgid "Unable to clear documentation cache." msgstr "Rensa dokumentminne" #: FOption.class:989 msgid "Do you really want to delete this snippet?" msgstr "Vill du verkligen ta bort detta kodavsnitt?" #: FOption.class:1190 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Vill du verkligen ta bort denna fil?" #: FOption.class:1190 FSoftwareFarm.class:600 msgid "Install" msgstr "" #: FOption.class:1275 msgid "Network is not available." msgstr "" #: FOption.class:1280 msgid "Documentation is up to date." msgstr "" #: FOption.class:1285 msgid "A new documentation is available!" msgstr "" #: FOption.class:1290 MHelp.module:927 msgid "Documentation is not available." msgstr "" #: FOption.class:1486 #, fuzzy msgid "Cannot download '&1'." msgstr "Kan ej ta bort '&1'." #: FOption.class:1517 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1528 #, fuzzy msgid "Unable to install documentation." msgstr "Kan öppna anslutning." #: FOption.class:1636 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(Standard)" #: FOption.class:1637 #, fuzzy msgid "Compact" msgstr "Samling" #: FOption.class:1652 #, fuzzy msgid "Current" msgstr "Aktuell fil" #: FOption.class:1694 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "Vill du verkligen tömma listan?" #: FOption.class:1796 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "Vill du verkligen ta bort denna länk?" #: FOption.form:294 msgid "Dotted" msgstr "" #: FOption.form:305 #, fuzzy msgid "Identity" msgstr "Indragning" #: FOption.form:349 #, fuzzy msgid "Package maintainer" msgstr "Paketnamn" #: FOption.form:394 #, fuzzy msgid "Default license" msgstr "Standardvärde" #: FOption.form:434 VersionControl.module:521 msgid "No" msgstr "Nej" #: FOption.form:434 VersionControl.module:521 msgid "Yes" msgstr "Ja" #: FOption.form:438 #, fuzzy msgid "Projects" msgstr "Projekt" #: FOption.form:455 msgid "Default tab size" msgstr "Standard för tab-storlek" #: FOption.form:468 FProjectProperty.form:783 msgid "space(s)" msgstr "mellanslag" #: FOption.form:480 msgid "Indent with tab by default" msgstr "" #: FOption.form:497 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:515 msgid "Fold procedures by default" msgstr "Fold procedures by default" #: FOption.form:532 #, fuzzy msgid "Activate version control" msgstr "Slå på versionskontroll" #: FOption.form:549 msgid "Restore files when loading a project" msgstr "" #: FOption.form:561 #, fuzzy msgid "Images" msgstr "Bild" #: FOption.form:573 msgid "Compress PNG images with " msgstr "" #: FOption.form:607 #, fuzzy msgid "Automatic translation with " msgstr "Automatisk utvidgning" #: FOption.form:636 #, fuzzy msgid "Translation engine" msgstr "Översättningfil" #: FOption.form:645 msgid "Help & applications" msgstr "" #: FOption.form:651 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Hjälp" #: FOption.form:662 msgid "Show documentation in popups" msgstr "Vias dikumentation i 'popups'" #: FOption.form:679 msgid "Always display optional messages" msgstr "Visa alltid alternativa meddelanden" #: FOption.form:691 #, fuzzy msgid "Documentation" msgstr "Plats" #: FOption.form:702 #, fuzzy msgid "Use offline documentation" msgstr "Rensa dokumentminne" #: FOption.form:732 msgid "Download documentation" msgstr "" #: FOption.form:758 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:771 msgid "Clear documentation cache" msgstr "Rensa dokumentminne" #: FOption.form:779 msgid "Applications" msgstr "Tillämpningar" #: FOption.form:790 msgid "Browser" msgstr "Bläddrare" #: FOption.form:807 FVersionControl.form:65 msgid "Terminal" msgstr "Terminal" #: FOption.form:833 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:850 msgid "Highlight current line" msgstr "Markera gällande rad" #: FOption.form:867 msgid "Highlight modified lines" msgstr "Markera ändrade rader" #: FOption.form:884 msgid "Show line numbers" msgstr "Visa radnummer" #: FOption.form:901 msgid "Procedure folding" msgstr "" #: FOption.form:918 msgid "Procedure separation" msgstr "Proceduråtskillnad" #: FOption.form:935 msgid "Show spaces at end of line with dots" msgstr "Visa mellanslag vid radslut som punkter" #: FOption.form:952 #, fuzzy msgid "Show Preview" msgstr "Förhandsgranskning" #: FOption.form:970 msgid "Keywords in upper case" msgstr "Nyckelord med stora bokstäver" #: FOption.form:987 msgid "Separate static symbols in method selector" msgstr "" #: FOption.form:996 msgid "Code formatting" msgstr "Kodformatering" #: FOption.form:1002 msgid "Automatic formatting" msgstr "" #: FOption.form:1013 #, fuzzy msgid "Control structure completion" msgstr "Automatisk komplettering av kontrollstruktur" #: FOption.form:1030 #, fuzzy msgid "Local variable declaration" msgstr "Indentera deklaration av lokala variabler" #: FOption.form:1047 #, fuzzy msgid "Comments insertion" msgstr "Anslutning" #: FOption.form:1064 msgid "Close braces, brackets" msgstr "" #: FOption.form:1081 #, fuzzy msgid "Close strings" msgstr "Ignorera strängar" #: FOption.form:1093 msgid "Explicit formating" msgstr "" #: FOption.form:1104 msgid "Format on load & save" msgstr "Formatera vid öppning och sparning" #: FOption.form:1121 msgid "Indent local variable declaration" msgstr "Indentera deklaration av lokala variabler" #: FOption.form:1138 msgid "Remove useless spaces at end of line" msgstr "Ta bort onödiga blanksteg i slutet av rader" #: FOption.form:1155 msgid "Keep successive void lines" msgstr "Behåll på varandra följande tomma rader" #: FOption.form:1164 msgid "Code snippets" msgstr "Kodavsnitt" #: FOption.form:1180 msgid "Activate code snippets" msgstr "Aktivera kodavsnitt" #: FOption.form:1241 msgid "Interface" msgstr "Snitt" #: FOption.form:1258 #, fuzzy msgid "Activate animations" msgstr "Aktivera kodavsnitt" #: FOption.form:1275 #, fuzzy msgid "Show shadows" msgstr "Visa sökfönster" #: FOption.form:1292 msgid "Show tooltips" msgstr "Visa verktygstips" #: FOption.form:1309 msgid "Use utility windows" msgstr "Använd hjälpfänster" #: FOption.form:1326 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1343 msgid "Show file name in window title" msgstr "" #: FOption.form:1360 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1376 msgid "Layout" msgstr "" #: FOption.form:1411 msgid "Fonts" msgstr "Teckensnitt" #: FOption.form:1444 msgid "Global size" msgstr "" #: FOption.form:1466 msgid "Title size" msgstr "" #: FOption.form:1488 #, fuzzy msgid "Debugger size" msgstr "Avlusning" #: FOption.form:1542 Project.module:240 msgid "Printing" msgstr "Utskrift" #: FOption.form:1580 #, fuzzy msgid "Fixed font" msgstr "Använd en fast font" #: FOption.form:1596 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1626 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1673 #, fuzzy msgid "Themes" msgstr "Tema" #: FOption.form:1690 msgid "Icon theme" msgstr "Ikontema" #: FOption.form:1706 #, fuzzy msgid "Highlighting theme" msgstr "Markerade" #: FOption.form:1720 msgid "Import theme" msgstr "Importtema" #: FOption.form:1726 msgid "Export theme" msgstr "Exportera tema" #: FOption.form:1745 msgid "Invert colors for dark themes" msgstr "" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Konsol - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Koppla loss konsol" #: FOutput.form:72 msgid "Keep above" msgstr "Behåll ovan" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "Öppna en terminal" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "Öppna senaste" #: FOutput.form:130 msgid "Use system charset" msgstr "Använd systemets teckensnitt" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Kan ej klistra in text." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Innehåll i urklipp" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Klistra in normalt" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "Klistra in med PRINT" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "Skriv in ett tabellnamn." #: FPasteTable.class:133 msgid "Table already exists" msgstr "Tabell finns redan" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Kopiera även tabell och data" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Återgå" #: FProfile.class:175 msgid "Bad profile file format" msgstr "" #: FProfile.class:407 msgid "&1 Mb" msgstr "" #: FProfile.class:407 msgid "Total time &1 μs" msgstr "" #: FProfile.class:430 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:647 msgid "Calls" msgstr "" #: FProfile.class:650 msgid "Duration" msgstr "" #: FProfile.class:653 msgid "Average" msgstr "" #: FProfile.class:656 msgid "Self" msgstr "" #: FProfile.class:1055 msgid "Profile files" msgstr "" #: FProfile.class:1062 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectProperty.class:160 msgid "Variable" msgstr "Variabel" #: FProjectProperty.class:282 msgid "Snapping value is incorrect." msgstr "Låsningsvärde är fel." #: FProjectProperty.class:751 msgid "&1 does not export any class." msgstr "&1 exporterar ingen klass." #: FProjectProperty.class:759 msgid "&1 is already used as a library." msgstr "&1 används redan som bibliotek." #: FProjectProperty.class:927 msgid "Modules" msgstr "Moduler" #: FProjectProperty.class:928 #, fuzzy msgid "Test modules" msgstr "Gambas moduler" #: FProjectProperty.class:938 #, fuzzy msgid "Functions" msgstr "Funktion" #: FProjectProperty.class:939 msgid "Lines of code" msgstr "" #: FProjectProperty.class:940 #, fuzzy msgid "Average number of lines by function" msgstr "Felaktigt antal dimensioner" #: FProjectProperty.class:943 #, fuzzy msgid "Executable size" msgstr "Exekverbara" #: FProjectProperty.class:943 msgid "bytes" msgstr "" #: FProjectProperty.class:960 #, fuzzy msgid "Information about component" msgstr "Laddar information om komponent &1..." #: FProjectProperty.class:966 msgid "Information about library" msgstr "" #: FProjectProperty.class:1345 #, fuzzy msgid "Select a Gambas executable" msgstr "Välj en Gambas-tillämpning" #: FProjectProperty.class:1346 #, fuzzy msgid "Gambas executable" msgstr "Gör exekverbar" #: FProjectProperty.form:273 msgid "General" msgstr "Allmänt" #: FProjectProperty.form:328 msgid "Component" msgstr "Komponent" #: FProjectProperty.form:328 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:328 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:335 #, fuzzy msgid "Vendor" msgstr "Tillverkarnamn" #: FProjectProperty.form:347 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Version" #: FProjectProperty.form:373 msgid "Get from 'VERSION' file" msgstr "Hämta från filen 'VERSION'" #: FProjectProperty.form:380 msgid "Title" msgstr "Titel" #: FProjectProperty.form:413 #, fuzzy msgid "Information" msgstr "Systeminformation" #: FProjectProperty.form:434 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:440 msgid "Finished and stable" msgstr "Avslutad och stabil" #: FProjectProperty.form:451 msgid "This component is hidden" msgstr "Denna komponent är gömd" #: FProjectProperty.form:467 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:496 #, fuzzy msgid "Include information from" msgstr "Paketinformation" #: FProjectProperty.form:508 #, fuzzy msgid "Required features" msgstr "Kräver" #: FProjectProperty.form:564 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:585 #, fuzzy msgid "Require" msgstr "Kräver" #: FProjectProperty.form:591 #, fuzzy msgid "Exclude" msgstr "Utesluter" #: FProjectProperty.form:603 msgid "Remove All" msgstr "Tag bort allt" #: FProjectProperty.form:610 msgid "Components" msgstr "Komponenter" #: FProjectProperty.form:618 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Bibliotek" #: FProjectProperty.form:631 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:697 #, fuzzy msgid "Additional references" msgstr "Preferenser" #: FProjectProperty.form:707 msgid "Environment" msgstr "Miljö" #: FProjectProperty.form:735 msgid "&Insert" msgstr "&Insättning" #: FProjectProperty.form:760 msgid "Edition" msgstr "Utgåva" #: FProjectProperty.form:771 msgid "Tab size" msgstr "Tabulatorstorlek" #: FProjectProperty.form:794 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:807 msgid "Compilation" msgstr "Samling" #: FProjectProperty.form:818 msgid "Module symbols are public by default" msgstr "Modulsymboler är publika som standard" #: FProjectProperty.form:834 msgid "Form controls are public" msgstr "Formulärskontroller är publika" #: FProjectProperty.form:850 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:916 #, fuzzy msgid "Add branch to version number" msgstr "Fel värde." #: FProjectProperty.form:926 FTranslate.form:417 msgid "Statistics" msgstr "Statistik" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Denna och följande rad kommer att ignoreras" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:41 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:339 msgid "The project could not be committed." msgstr "projektet kunde inte lämnas in." #: FProjectVersion.class:196 VersionControl.module:363 msgid "Unable to update project from repository." msgstr "Kunde ej uppdatera projekt från filarkiv." #: FProjectVersion.class:198 VersionControl.module:365 msgid "Project has been updated from repository successfully." msgstr "Projektet har lyckligt uppdaterats från filarkivet." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "Uppdatera" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:29 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "Några filer är ej versionshanterade och bör läggas till manuellt till filarkivet." #: FProjectVersion.form:283 msgid "Previous description" msgstr "Föregående beskrivning" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Ej tillåtna tecken i kontroll-namn." #: FProperty.class:383 msgid "This name is already in use." msgstr "Detta namn används redan." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Ej tillåtna tecken i control-grupp." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Felaktigt egenskapsvärde." #: FProperty.class:631 msgid "The name of the control." msgstr "Kontrollens namn." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Den händelsegrupp som kontrollen hör till." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Om formulärets och kontrollens dimensioner måste följa storleken på standardteckensnittet." #: FProperty.class:661 msgid "If the control is public." msgstr "Om kontrollen är publik." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "Denna egenskap är virtuell: den är enbart implemnterad i IDE och har existerar ej vid körning." #: FProperty.class:814 msgid "None" msgstr "Inga" #: FProperty.form:51 msgid "Lock property" msgstr "Låsegenskaper" #: FProperty.form:58 msgid "Sort properties" msgstr "Sortera egenskaper" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "Projektet har lyckligt skapats." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "Kunde ej spara projektet." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "Fel värde." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "Vill du verkligen ta bort alla extra filer?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "Välj en temafil" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "Aktuell fil" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "Föregående beskrivning" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "Tabulatorstorlek" #: FPublish.form:113 #, fuzzy msgid "Create menu entry" msgstr "Menyrad" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 #, fuzzy msgid "Dependencies" msgstr "Extra beroenden" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "Konfigurere kant" #: FReportBorderChooser.form:67 msgid "Border" msgstr "Kant" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "Hörn" #: FReportBoxShadowChooser.form:23 #, fuzzy msgid "Configure shadow" msgstr "Konfigurera pensel" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "Konfigurera pensel" #: FReportBrushChooser.form:69 msgid "Select an image inside the project" msgstr "Välj en bild inom projektet" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "Fel värde." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "Välj en storlek" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "Konfigurera padding" #: FSave.form:14 msgid "Save modified files" msgstr "Spara ändrade filer" #: FSave.form:42 msgid "Save All" msgstr "Spara allt" #: FSave.form:55 msgid "The following files have been modified. Do you want to save them?" msgstr "Följande filer har ändrats. Vill du spara dem?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "Kan ej spara ett projekt inuti den egna projektmappen." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Kunde ej spara projektet." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Ny katalog att lagra projektet i" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "Nytt projektnamn" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Söksträng utbytt en gång." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Söksträng utbytt &1 gånger." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "Inget element" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "Implementerar" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Vill du verkligen ersätta alla strängar?" #: FSearch.form:42 msgid "Search & Replace" msgstr "Sök och byt ut" #: FSearch.form:105 msgid "Case sensitive" msgstr "Skiftkänslig" #: FSearch.form:110 msgid "Words only" msgstr "Endast ord" #: FSearch.form:115 msgid "Regular expression" msgstr "Reguljärt uttryck" #: FSearch.form:120 msgid "Ignore strings" msgstr "Ignorera strängar" #: FSearch.form:125 msgid "Ignore comments" msgstr "Ignorera kommentarer" #: FSearch.form:140 msgid "Search in" msgstr "Sök i" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "Avsluta aktuell funktion" #: FSearch.form:153 msgid "Current file" msgstr "Aktuell fil" #: FSearch.form:160 msgid "Source files" msgstr "Källkodsfiler" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "Extra filer" #: FSearch.form:197 msgid "Browse" msgstr "Bläddra" #: FSearch.form:209 msgid "Replace all" msgstr "Byt ut allt" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "Markera resultat" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "Välj en extra fil" #: FSelectIcon.class:37 msgid "Image files" msgstr "Bildfiler" #: FSelectIcon.class:38 msgid "SVG image files" msgstr "SVG-bildfiler" #: FSelectIcon.form:18 msgid "Select a picture" msgstr "Välj en bild" #: FSelectIcon.form:41 msgid "Stock" msgstr "Lager" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "Okänd" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "Välj en mapp" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "Skriv in en trigg-sträng." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "Denna trigger-sträng används redan." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "Redigera kodavsnitt" #: FSnippet.class:67 msgid "New code snippet" msgstr "Nytt kodavsnitt" #: FSnippet.form:26 msgid "Trigger string" msgstr "Trigg-sträng" #: FSoftwareFarm.class:49 Project.module:235 msgid "Games" msgstr "Spel" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "Utgåva" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:242 msgid "Video" msgstr "Video" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 #, fuzzy msgid "Accessories" msgstr "Tillgång förbjudet" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "Snitt" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "Uttryck" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 #, fuzzy msgid "No software found." msgstr "Ingen hjälp funnen." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:372 #, fuzzy msgid "Cancel my vote" msgstr "Avbrutet av användare" #: FSoftwareFarm.class:379 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:416 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:559 #, fuzzy msgid "Do you really want to download &1?" msgstr "Vill du verkligen ta bort tabell '&1'?" #: FSoftwareFarm.class:562 #, fuzzy msgid "Unable to download &1:" msgstr "Kan ej ladda tabell '&1'." #: FSoftwareFarm.class:564 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "Projektet har lyckligt skapats." #: FSoftwareFarm.class:579 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "Vill du verkligen ta bort tabell '&1'?" #: FSoftwareFarm.class:582 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "Kan ej döpa '&1'" #: FSoftwareFarm.class:589 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "Vill du verkligen ta bort tabell '&1'?" #: FSoftwareFarm.class:592 #, fuzzy msgid "Unable to uninstall &1:" msgstr "Kan ej konvertera 61" #: FSoftwareFarm.class:594 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "Projektet har lyckligt skapats." #: FSoftwareFarm.class:600 #, fuzzy msgid "Do you really want to install &1?" msgstr "Vill du verkligen ta bort tabell '&1'?" #: FSoftwareFarm.class:603 #, fuzzy msgid "Unable to install &1:" msgstr "Kan ej konvertera 61" #: FSoftwareFarm.class:605 #, fuzzy msgid "&1 has been successfully installed." msgstr "Projektet har lyckligt skapats." #: FSoftwareFarm.class:625 #, fuzzy msgid "Unable to modify your vote." msgstr "Kunde ej exportera data." #: FSoftwareFarm.class:661 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "Vill du verkligen ta bort denna fil?" #: FSoftwareFarm.class:665 #, fuzzy msgid "Unable to remove &1:" msgstr "Kan ej döpa '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas formulär" #: FSoftwareFarm.form:159 FTranslate.form:208 #, fuzzy msgid "Show" msgstr "Visa flik" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "Öppna senaste" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "Visa tillagda filer" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "Visa verktygstips" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "Ner" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.form:35 msgid "Please copy these informations in all your bug reports." msgstr "Använd denna information i alla dina buggraporter." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Välj en tabell" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "Kan ej ladda tabell '&1'." #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "Namnet finns redan." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "Kunde ej spara projektet." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "Vill du verkligen ta bort de valda raderna?" #: FTestSuite.form:60 #, fuzzy msgid "New test suite" msgstr "Nytt kodavsnitt" #: FTestSuite.form:67 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:74 #, fuzzy msgid "Rename test suite" msgstr "Döp on tabell" #: FTestSuite.form:81 #, fuzzy msgid "Delete test suite" msgstr "Tag bort databas '&1'" #: FTestSuite.form:114 #, fuzzy msgid "Select all tests" msgstr "Välj allt" #: FTestSuite.form:121 #, fuzzy msgid "Unselect all tests" msgstr "Avmarkera allt" #: FTestSuite.form:145 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "Redigera listegenskaper" #: FText.form:29 msgid "Use a fixed font" msgstr "Använd en fast font" #: FTextEditor.class:253 msgid "Console output #&1" msgstr "" #: FTextEditor.class:968 msgid "Unable to compress file." msgstr "Kan ej packa fil." #: FTextEditor.class:1888 #, fuzzy msgid "Compressed at &1" msgstr "Packa fil" #: FTextEditor.form:169 msgid "Sort ascent" msgstr "" #: FTextEditor.form:175 msgid "Sort descent" msgstr "" #: FTextEditor.form:221 msgid "Compress file" msgstr "Packa fil" #: FTips.class:46 msgid "Tip of the day #&1" msgstr "Dagens tips #&1" #: FTips.class:104 msgid "Unable to read tip of the day !" msgstr "Kan ej läsa dagens tips!" #: FTips.form:66 msgid "Show tips on startup" msgstr "Visa tips vid start" #: FToolBox.class:397 Project.module:606 #, fuzzy msgid "Current project" msgstr "Aktuellt objekt" #: FToolBox.form:58 #, fuzzy msgid "Toolbox button size" msgstr "Storlek på verktygslåda" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Projektet är tomt. Det finns inget att översätta." #: FTranslate.class:74 msgid "Language" msgstr "Språk" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "Ej översättningsbart" #: FTranslate.class:169 msgid "Translation files" msgstr "Översättningfil" #: FTranslate.class:328 msgid "Cannot read translation file for language '&1'" msgstr "Kan ej läsa överstättningsfil för språket '&1'" #: FTranslate.class:564 msgid "Cannot save translation." msgstr "Kan ej spar översättning." #: FTranslate.class:677 msgid "Do you really want to delete this translation ?" msgstr "Vill du verkligen ta bort denna översättning?" #: FTranslate.class:786 msgid "Do you really want to reload this translation ?" msgstr "Vill du verkligen ladda om denna översättning?" #: FTranslate.class:800 msgid "Export a translation" msgstr "Exportera en översättning" #: FTranslate.class:1015 msgid "Please select the translation file to import." msgstr "Ange översättnningsfil för import." #: FTranslate.class:1053 msgid "No translation were picked up." msgstr "Ingen översättning hämtades in." #: FTranslate.class:1055 msgid "One translation was picked up." msgstr "En översättning hämtades in." #: FTranslate.class:1057 msgid "&1 translations were picked up." msgstr "&1 översättningar hämtades upp." #: FTranslate.class:1065 msgid "Cannot import translation file." msgstr "Kan ej importera översättningsfil." #: FTranslate.class:1114 msgid "Everything seems to be correct." msgstr "Allt tycks vara korrekt." #: FTranslate.class:1124 msgid "Translated string symbols do not match untranslated string ones." msgstr "Översatta strängsymboler matchar ej de oöversatta." #: FTranslate.class:1150 msgid "&1 strings. Everything is translated!" msgstr "&1 strängar. Allt är översatt!" #: FTranslate.class:1152 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 strängar. En är ej översatt. &3% klara." #: FTranslate.class:1154 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 strängar. &2 är ej översatta. &3% klara." #: FTranslate.class:1741 #, fuzzy msgid "Automatic translation has failed." msgstr "Kan ej importera översättningsfil." #: FTranslate.class:1753 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "Vill du verkligen ta bort denna översättning?" #: FTranslate.form:77 msgid "Project translation" msgstr "Projektöversättning" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "Automatisk utvidgning" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "Ny översättning" #: FTranslate.form:232 msgid "Save translation" msgstr "Spara översättning" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Verifiera översättningen" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "Hitta nästa oöversatta sträng" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "Hitta föregående oöversatta sträng" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Hitta föregående oöversatta sträng" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Hitta nästa oöversatta sträng" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Rensa denna översättning" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Denna sträng får ej översättas" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Kopiera oöversatt sträng" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Importera alla översättningar rekursivt" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "Rensa denna översättning" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Importera en översättningsfil" #: FVersionControl.class:16 #, fuzzy msgid "Do you want to push the repository?" msgstr "Vill du sudda denna uttryckslista?" #: FVersionControl.class:16 msgid "Push" msgstr "" #: FVersionControl.form:51 #, fuzzy msgid "There is nothing to commit." msgstr "projektet kunde inte lämnas in." #: FVersionControl.form:81 #, fuzzy msgid "Do not push to remote repository" msgstr "Mata in platsen för arkivet." #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "Välj ett typsnitt" #: FWelcome.class:69 msgid "New project..." msgstr "Nytt projekt..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Aktuella projekt" #: FWelcome.class:73 Project.module:6308 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Välkommen till Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "Friska upp projekt" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 #, fuzzy msgid "Delete software" msgstr "Tag bort tabell" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arabiska (Egypten)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arabiska (Tunisien)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerbajan (Azerbaijan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgariska (Bulgarien)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalanska(Katalonien, Spanien)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Walesiska (Storbrittanien)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Tjeckiska (Tjeckien)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danska (Danmark)" #: Language.module:34 msgid "German (Germany)" msgstr "Tyska (Tyskland)" #: Language.module:35 msgid "German (Belgium)" msgstr "Tyska (Belgien)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Grekiska (Grekland)" #: Language.module:41 msgid "English (common)" msgstr "Engelska (Allmän)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "Engelska (Storbrittanien)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "Engelska (U.S.A.)" #: Language.module:44 msgid "English (Australia)" msgstr "Engelska (Austarlien)" #: Language.module:45 msgid "English (Canada)" msgstr "Engelska (Kananda)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto (Överallt!)" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "Engelska (Allmän)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "Spanska (Spanien)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "Spanska (Argentina)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estniska (Estland)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Baskiska (Baskien)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsi (Iran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "Finska (Finland)" #: Language.module:68 msgid "French (France)" msgstr "Franska (Frankrike)" #: Language.module:69 msgid "French (Belgium)" msgstr "Franska (Belgien)" #: Language.module:70 msgid "French (Canada)" msgstr "Franska (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Franska (Schweitz)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galisiska(Spanien)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "Hebreiska (Israel)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hindi (Indien)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Ungerska (Ungern)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Kroatiska (Kroatioen)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Indonesiska (Indonesien)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "Irländska (Irland)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "Italienska (Italien)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japanska (Japan)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmer (Kambodja)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Koeranska (Korea)" #: Language.module:110 msgid "Latin" msgstr "Latin" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "Litauiska (Litauen)" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malaysiska (Indien)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Makedonska (Republiken Makedonien)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Dutch (Nederländerna)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Dutch (Belgien)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norska (Norge)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi (Indien)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polska (polen)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portugisiska (Porugal)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portugisiska (Brasilien)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valensiska (Spanien)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "Rumänska (Rumänien)" #: Language.module:145 msgid "Russian (Russia)" msgstr "Ryska (Ryssland)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovenska (Slovenien)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Albanska (Albaien)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Serbiska (Serbien & Montenegro)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "Svenska (Sverige)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Turkiska (Turkiet)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "Uktainska (Ukraina)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnamesiska (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Vallonska (Belgien)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Förenklad kinesiska (Kina)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Traditionell kinesiska (Taiwan)" #: Language.module:220 msgid "Unknown" msgstr "Okänd" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "Kan ej skapa tabell '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 kan ej vara statisk" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 deklaration matchar ej" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 är deklarerat men är ej en funktion" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 är ej en struktur" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 är ej deklarerat" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 måste vara statisk" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: saknas i arkiv" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: syntaxfel" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: syntaxfel i formulärsfil" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: för många inblandade behållare" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' är redan deklarerad" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' är ogiltigt överskuggad i klass '&3'" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' är ej en egenskap" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' är ej statiska" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' är skrivskyddade" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' är statiska" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' kan endast skrivas till" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "En modul kan ej avge händelser" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "En egenskapsimplementation kan ej vara publik" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "En egenskap måste vara publik" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Tillgång förbjudet" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Alias-namn måste vara en sträng" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "Tvetydigt uttryck. Använd parenteser" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Argument kan ej överföras som referens" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "Strukturer med fält stöds ej" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "Översättningfil" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Felaktigt arkiv: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Fel argument" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "Fel teckenkonstant i sträng" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "Fel konstanttyp" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "Felaktig händelsehanterare i &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "Felaktigt uttryck: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Felaktig version av formulärsfil" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Felaktig formatsträng" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "Felaktigt antal dimensioner" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "Felaktig projektfil: rad &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "Felaktigt reguljärt uttryck: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Felaktig strängomvandling" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "Felaktigt indexområde" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "Felaktig användning av virtuell klass" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Fel versionssträng" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "Kan ej ändra aktuell mapp till '&1':&2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "Kan ej skapa .startup-fil" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "Kan ej skapa åtgärdsfil: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "Kan ej skapa callback: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "Kan ej skapa klassinformation: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "Kan ej skapa fil:&1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "Kan ej skapa tillfällig arkivfil: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Kan ej hitta dynamiskt bibliotek '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "Kan ej hitta symbol '&2' i dynamiskt bibliotek '&1'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "Kan ej ärva två gånger" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "ikan ej instantiera grundtyper" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Kan ej ladda klass '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Kan ej ladda komponent '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Kan ej ladda källkodsfil: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Kan ej göra exekverbar: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "Kan ej blanda NY med inkapslade fält" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "Kan ej blanda NY med inkapslade struktur" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Kan ej öppna fil '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Kan ej öppna fil: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "Kan ej avge händelser i statisk funktion" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "Kan ej läsa fil: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "Kan ej registrera klass '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "Kan ej ta bort fil '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "kan ej döpa om fil '&1' till '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "Kan ej köra barnprocess: &1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Kan ej åsätta filägare: &1: &2" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "Kan ej använda TRY två gånger" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "Kan ej använda TRY med &1" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "Kan ej använda NEW-operatorn här" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "Klass '&1' är ej möjlig att skapa" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "Jämförelseoperator förväntad" #: MErrorMessage.module:79 #, fuzzy msgid "Component name must be a string" msgstr "Alias-namn måste vara en sträng" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Komponent ej funnen: &1" #: MErrorMessage.module:81 #, fuzzy msgid "Constant string expected" msgstr "Sträng förväntad" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "Defaultfallet är redan definierat" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "Defaultfallet måste vara det sista bland fallen" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Enhet är full" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Katalogen är ej tom" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "Division med noll" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "Dynamiska symboler kan ej användas i statisk funktion" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "Inkapslade fält ej tillåtna här" #: MErrorMessage.module:90 msgid "End of file" msgstr "Filslut" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "Lika- eller olika-operator förväntad" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "Uttrycket är för komplext" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "Uttrycket är för komplext. För många operander" #: MErrorMessage.module:94 #, fuzzy msgid "Extern library name must be a string" msgstr "Biblioteksnamn måste vara en sträng" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Fil finns redan" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Fil är en mapp" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Fil är låst" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Filnamn är för långt" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Fil eller mapp saknas" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "Förbjuden GOSUB" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "Förbjudet GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "Otillåten instruktion" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Otillåten tilldelning" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Otillåtet datum" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Otillåtet objekt" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Otillåten sökväg" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "Etikett '&1' ej deklarerad" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Biblioteksnamn måste vara en sträng" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "Slingvariable redan använd" #: MErrorMessage.module:114 #, fuzzy msgid "Loop variable cannot be an argument" msgstr "Slingvariable redan använd" #: MErrorMessage.module:115 #, fuzzy msgid "Loop variable cannot be global" msgstr "Slingvariabel måste vara lokal" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME kan ej användas i en statisk funktion" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "Matematikfel" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Saknad #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "Saknad operator" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "Saknad högerparentest" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW kan ej ha argument lämnade som reference" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "Ingen installationsmetod" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Ingen föräldraklass" #: MErrorMessage.module:127 msgid "No return value" msgstr "Inget svarsvärde" #: MErrorMessage.module:128 msgid "No startup method" msgstr "Inge startmetod" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "Icke avslutad sträng" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "Inte en mapp: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "Inte en funktion" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "Inte ett fält" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "Inte en numrering" #: MErrorMessage.module:135 msgid "Not an object" msgstr "Inte ett objekt" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "Ej tillräckligt med argument till New()" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "Ej tillräckligt med argument" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "Ej tillräckligt med argument till &1()" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "Noll-objekt" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 #, fuzzy msgid "Number or Date expected" msgstr "Jämförelseoperator förväntad" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "Utanför gränser" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Slut på minne" #: MErrorMessage.module:150 msgid "Out of range" msgstr "Utanför område" #: MErrorMessage.module:151 msgid "Overflow" msgstr "Spill" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "Läsfel" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "skrivskyddat" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "Svarsdatatyp ej specificerad i funktionsdeklaration" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "STOP-instruktion påträffad" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER kan ej användas ensamt" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "Serialization-fel" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Stackspill" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "Dataström är stängd" #: MErrorMessage.module:162 msgid "String expected" msgstr "Sträng förväntad" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "Strukturer måste vara publika" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "Subrutinsargument kan ej överföras som referens" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Syntaxfel" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "Syntaxfel vid funktionsdeklaration" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "Syntaxfel i händelsenamn" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "Syntaxfel i filöppningsläge" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "Syntaxfel i svarstyp" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "Syntaxfel. &1 förväntat" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "Syntaxfel. '...' måste vara det sista argumentet" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Syntaxfel. CASE eller DEFAULT förväntat efter SELECT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Syntaxfel. CLASS behöver en identifierare" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Syntaxfel. Kab ej denna syntax i tilldelning" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "Sybtaxfel. INHERITS behöver ett klassnamn" #: MErrorMessage.module:176 #, fuzzy msgid "Syntax error. Identifier expected" msgstr "Syntaxfel: Indentifierare förväntad" #: MErrorMessage.module:177 #, fuzzy msgid "Syntax error. Identifier expected for property name" msgstr "Syntaxfel: Indentifierare förväntad" #: MErrorMessage.module:178 #, fuzzy msgid "Syntax error. Identifier expected for property synonymous" msgstr "Syntaxfel: Indentifierare förväntad" #: MErrorMessage.module:179 #, fuzzy msgid "Syntax error. Identifier expected for property variable" msgstr "Syntaxfel: Indentifierare förväntad" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "Syntaxfel. Ogiltig identifierare i funktionsnamn" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "Syntaxfel. Ogiltigt valfri parameter" #: MErrorMessage.module:182 #, fuzzy msgid "Syntax error. Invalid property type" msgstr "Syntaxfel. Felaktig egenskapstyp" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "Syntaxfel. Ogiltig svarstyp" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Syntaxfel. Ogiltig typbeskrivning av &1-argument" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "Syntaxfel: Ogiltig typbeskrivning för &1-fältet" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "Syntaxfel. Onödiga argument" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Syntaxfel. Punktsyntax använd utanför WITH/END WITH" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "Syntaxfel: STRUCT måste ha en identifierare" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Syntaxfel. &1-argumentet är ej en giltig identifierare" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Syntaxfel: &!-fältet är ej en giltig identifierare" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Syntaxfel. VarPtr/( tar bara en idetifierare" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Systemfel #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "Operatorn '!' måste följas av en identifierare" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "Operatorn '.' måste följas av en identifierare" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "Specialmetoden &1 kan ej vara en funktion" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "Specialmetoden &1 kan ej implementeras" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "Specialmetoden &1 kan ej vara statisk" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "Specialmetoden &1 måste vara en funktion" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "Specialmetoden &1 måste vara publik" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "Specialmetoden &1 måste vara statisk" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "Specialmetoden &1 måste returnera en boolean" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "Specialmetoden &1 måste endast ta ett varialelt antal argument" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "Specialmetoden &1 måste ta minst ett argument" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "Specialmetoden & tar inga argument" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "Specialmetoden &1 måste svara med ett heltal" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "Specialmetoden måste ta exakt ett argument" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "Specialmetoden måste ta exakt två argument" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "Specialmetodens signatur är felaktigt" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "Detta uttryck kan ej utgöra en sats" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "Detta uttryck kan ej överföras som referens" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "För många argument" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "För många argument till &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "För många fältdeklarationer" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "För många konstanter" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "För många olika klasser används" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "För många dimensioner" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "För många dynamiskavariabler" #: MErrorMessage.module:219 msgid "Too many events" msgstr "För många händelser" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "För många uttryck in CASE" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "För många externa funktioner" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "För många funktioner" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "För mångaq överlagrade #if...#Endif" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "För många inbakade kontrollstrukturer" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "För många egenskapssynonymer" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "För många samtida nya strängar" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "För många statiska variabler" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "För många okända symboler" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Felaktig matchning av typ" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Felaktig matchning av typ: önskade &1, fick &2 i stället" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "Oväntat &1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "Oväntat radslut" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "Oväntad sträng" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "Okänf identifierare: &1" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Okänt fel" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Okänd fil" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Okänf identifierare: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Okänd operator" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Okänd användare eller grupp" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Ej stödd strängomvadling" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "Oanvändbart LOCK" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "VarPtr() argument måste vara en dynamisk, statisk eller lokal variable" #: MErrorMessage.module:252 #, fuzzy msgid "Void identifier" msgstr "Okänf identifierare: &1" #: MErrorMessage.module:253 msgid "Void key" msgstr "Tom nyckel" #: MErrorMessage.module:254 msgid "Write error" msgstr "Skrivfel" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:313 msgid "No help found." msgstr "Ingen hjälp funnen." #: MHelp.module:1006 Wiki.module:799 msgid "This page does not exist." msgstr "" #: MMime.module:17 msgid "Plain text" msgstr "Enkel text" #: MMime.module:18 msgid "HTML text" msgstr "HTML text" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas formulärsdata" #: MMime.module:20 msgid "Gambas menu data" msgstr "Gambas menydata" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas projektfilssökväg" #: MMime.module:22 msgid "URI list" msgstr "URI-lista" #: MMime.module:33 msgid "Unknown format" msgstr "Okänt format" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "Skicka till bakgrund" #: MTheme.module:6 #, fuzzy msgid "Characters" msgstr "Felaktiga tecken" #: MTheme.module:6 msgid "Comments" msgstr "Kommentarer" #: MTheme.module:6 msgid "Current line" msgstr "Aktuell rad" #: MTheme.module:6 msgid "Data types" msgstr "Datatyper" #: MTheme.module:6 msgid "Editing line" msgstr "Redigeringsrad" #: MTheme.module:6 msgid "Errors" msgstr "Fel" #: MTheme.module:6 msgid "Highlighting" msgstr "Markerade" #: MTheme.module:6 msgid "Keywords" msgstr "Nyckelord" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Normal text" #: MTheme.module:6 msgid "Numbers" msgstr "Tal" #: MTheme.module:6 msgid "Operators" msgstr "Operatorer" #: MTheme.module:6 msgid "Preprocessor" msgstr "Preprocessor" #: MTheme.module:6 msgid "Strings" msgstr "Strängar" #: MTheme.module:6 msgid "Subroutines" msgstr "Subrutiner" #: MTheme.module:6 msgid "Symbols" msgstr "Symboler" #: Package.module:83 msgid "'&1' is missing." msgstr "'&1' saknas." #: Package.module:93 msgid "'&1' and '&2' are missing." msgstr "'&1' och '&2' saknas." #: Package.module:284 msgid "Saving CHANGELOG file." msgstr "Spara fil med ÄNDRINGSLOGG." #: Package.module:735 msgid "Making &1 support package..." msgstr "" #: Package.module:790 msgid "Creating package for &1." msgstr "Skapar paket för &1." #: Package.module:822 msgid "The package build has failed." msgstr "Paketbygget har misslyckats." #: Package.module:894 msgid "Making build directory." msgstr "Gör byggkataloger." #: Package.module:953 msgid "Creating desktop file..." msgstr "Skapar skrivbordfil..." #: Package.module:961 msgid "Sources are being debianizated." msgstr "Källor debianiseras." #: Package.module:1168 msgid "Creating package..." msgstr "Skapar paket..." #: Package.module:1176 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' har misslyckats." #: Package.module:1456 msgid "Initializing ~/RPM directory." msgstr "Initierar ~/RPM-mapp." #: Package.module:1476 msgid "Creating source package." msgstr "Skapar käll-paket." #: Package.module:1500 msgid "Creating .spec file." msgstr "Skapar .spec-fil." #: Package.module:1745 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' har svarat med följande felkod:" #: Package.module:2170 msgid "'tar' has returned the following error code:" msgstr "'tar' har svarat med följande felkod:" #: Package.module:2442 #, fuzzy msgid "'makepkg' has failed." msgstr "'dpkg-buildpackage' har misslyckats." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 msgid "Unsupported source archive format" msgstr "" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:231 msgid "Automation" msgstr "Automatisering" #: Project.module:232 msgid "Basic" msgstr "Basic" #: Project.module:234 msgid "Drawing" msgstr "Ritning" #: Project.module:237 msgid "Miscellaneous" msgstr "Diverse" #: Project.module:238 msgid "Networking" msgstr "Nätverk" #: Project.module:239 msgid "OpenGL" msgstr "OpenGL" #: Project.module:241 msgid "Sound" msgstr "Ljud" #: Project.module:243 msgid "Controls" msgstr "Kontroller" #: Project.module:244 msgid "Multimedia" msgstr "" #: Project.module:245 msgid "Web" msgstr "" #: Project.module:422 msgid "File not found!" msgstr "Fil ej hittad!" #: Project.module:534 msgid "This project does not exist." msgstr "Projektet finns ej." #: Project.module:546 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:565 msgid "This is not a Gambas project." msgstr "Detta är inte ett Gambas-projekt." #: Project.module:568 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "Detta är ett projekt från Gambas 1.0. Använd Gambas 2 för att omvandla det." #: Project.module:571 msgid "Convert" msgstr "Omvandla" #: Project.module:571 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "Detta är ett projekt från gamas 2.\n" "\n" "Vill du omvandla det?" #: Project.module:589 msgid "Do not open" msgstr "Öppna ej" #: Project.module:589 msgid "Open after all" msgstr "Öppna ändå" #: Project.module:589 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Detta projekt varkar redan vara öppnat.\n" "\n" "Att öppna samma projekt två gånger kan leda till förlust av data." #: Project.module:595 msgid "It cannot be converted." msgstr "Kan ej omvandlas." #: Project.module:595 msgid "This project is read-only." msgstr "Detta projekt är skrivskyddat." #: Project.module:613 msgid "Copying project inside a temporary directory..." msgstr "Kopierar projektet till en temporär mapp..." #: Project.module:616 msgid "Unable to create temporary directory" msgstr "Kan ej skapa temporär katalog" #: Project.module:646 msgid "Converting project structure..." msgstr "Omvandla projektstruktur..." #: Project.module:679 msgid "Applying conversion..." msgstr "Genomför projektkonvertering..." #: Project.module:685 msgid "Unable to apply conversion" msgstr "Kan ej genomföra projektkonvertering" #: Project.module:805 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:824 #, fuzzy msgid "Cannot open project file :" msgstr "Kan ej öppna projektfil :\n" #: Project.module:876 #, fuzzy msgid "Cannot reload file." msgstr "Kan ej lägga till fil." #: Project.module:1680 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1682 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2041 msgid "Cannot open a binary file." msgstr "Kan ej öppna binär fil." #: Project.module:2079 msgid "Cannot open file." msgstr "Kan ej öppna fil." #: Project.module:2237 msgid "&1th" msgstr "&1:a" #: Project.module:2290 msgid "in form definition" msgstr "i formulärsdefinition" #: Project.module:2297 msgid "in &1." msgstr "i &1." #: Project.module:2458 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Några projektkällfiler är i konflikt.\n" "Lös dem om du vill kompilera projektet." #: Project.module:2462 msgid "Compiling project" msgstr "Kompilerar projekt" #: Project.module:2720 msgid "File already exists." msgstr "Fil finns redan." #: Project.module:2753 msgid "Directory already exists." msgstr "Katalog finns redan." #: Project.module:2765 msgid "Cannot link template file." msgstr "Kan ej länka mall-fil." #: Project.module:2771 msgid "Cannot copy template file." msgstr "Kan ej kopiera mallfil." #: Project.module:2977 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:2999 #, fuzzy msgid "Cannot install library in &1." msgstr "Kan ej hitta dynamiskt bibliotek '&1': &2" #: Project.module:3041 msgid "Making executable..." msgstr "Gör exekverbar..." #: Project.module:3099 msgid "Cannot make executable." msgstr "Kan ej göra körbart program." #: Project.module:3555 msgid "Some components are missing: &1" msgstr "Några komponenter saknas: &1" #: Project.module:3758 msgid "Cannot write project file." msgstr "Kan ej skriva projektfil." #: Project.module:3807 msgid "Unable to create desktop shortcut." msgstr "Kan ej skap genväg till skrivbordet." #: Project.module:4072 msgid "The directory will be removed at the next commit." msgstr "Mappen kommer att tas bort vid nästa inlämning." #: Project.module:4089 msgid "You must define a startup class or form!" msgstr "Du måste definiera startklass eller startformulär!" #: Project.module:4120 msgid "Please type a name." msgstr "Skriv ett namn." #: Project.module:4124 msgid "This name contains a forbidden character:" msgstr "Detta namn innehåller förbjudna tecken:" #: Project.module:4128 msgid "The name cannot begins with a dot." msgstr "Namnet kan ej böra med en punkt." #: Project.module:4132 msgid "This name is already used. Choose another one." msgstr "Detta namn används redan. Välj ett annat." #: Project.module:4168 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Ett klassnamn måste börja med bokstav eller understreck, följt av bokstäver eller siffror." #: Project.module:4211 msgid "Destination already exists." msgstr "" #: Project.module:4364 msgid "Unable to rename '&1'" msgstr "Kan ej döpa '&1'" #: Project.module:4480 msgid "Please type a project name." msgstr "Skriv ett projektnamn." #: Project.module:4488 msgid "The project name cannot begin with a dot." msgstr "projektnamnet kan ej börja med en punkt." #: Project.module:4491 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Icke-ASCII-tecken är förbjudna i projektnamn." #: Project.module:4492 msgid "SPACE" msgstr "" #: Project.module:4492 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "Följande tecken är förbjudna i projektnamn: ? * / \\ mellanslag" #: Project.module:4499 msgid "This project already exists." msgstr "Detta projekt finns redan." #: Project.module:4502 msgid "The project directory already exists." msgstr "Projektmappen finns redan." #: Project.module:4504 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Projektmappen kan ej skapas, ty det finns redan en fil med samma namn." #: Project.module:4552 msgid "Unable to create source archive." msgstr "" #: Project.module:4579 msgid "Create source package" msgstr "Skapa ett källkodspaket" #: Project.module:4866 msgid "Cannot copy file &1." msgstr "Kan ej kopiera fil &1." #: Project.module:4914 msgid "Cannot create link &1." msgstr "Kan ej skapa länk &1." #: Project.module:4929 msgid "Cannot move a directory inside itself." msgstr "Kan ej flytta en mapp inuti sig slälv." #: Project.module:4993 msgid "Cannot move file &1." msgstr "Kan ej flytta fil &1." #: Project.module:5206 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5686 msgid "Project cleanup..." msgstr "Projektstädning..." #: Project.module:5692 msgid "Project files conversion..." msgstr "Projektfilskonvertering..." #: Project.module:5722 msgid "Unable to convert &1" msgstr "Kan ej konvertera 61" #: Project.module:6002 #, fuzzy msgid "Unable to update forms." msgstr "Kan ej klistra in text." #: Project.module:6092 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6094 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6186 #, fuzzy msgid "Unable to read component description file." msgstr "Kan ej skriva komponentbeskrivningsfil." #: Project.module:6247 msgid "Cannot write component description file." msgstr "Kan ej skriva komponentbeskrivningsfil." #: Project.module:6308 #, fuzzy msgid "Project templates" msgstr "Projekttyp" #: Project.module:6354 #, fuzzy msgid "Unable to run terminal." msgstr "Kan ej köra förfrågan." #: Save.module:57 msgid "Cannot save file !" msgstr "Kan ej spara fil!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:39 msgid "&1 B" msgstr "" #: Util.module:41 msgid "&1 KiB" msgstr "" #: Util.module:43 msgid "&1 MiB" msgstr "" #: Util.module:45 msgid "&1 GiB" msgstr "" #: VersionControl.module:139 msgid "Command timeout." msgstr "" #: VersionControl.module:139 #, fuzzy msgid "Please check your network connection." msgstr "Välj en plats för menyn." #: VersionControl.module:521 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "Vill du verkligen ta bort denna katalog?" #: VersionControl.module:535 #, fuzzy msgid "The project could not be put under version control." msgstr "projektet kunde inte lämnas in." #: VersionControl.module:620 #, fuzzy msgid "Unable to switch to branch `&1`." msgstr "Kan ej konvertera 61" #: VersionControl.module:642 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "Det finns &1 klasser och &2 symboler i samtliga Gambas komponenter." #: Wiki.module:801 msgid "This page does not exist in that language." msgstr "" #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "" #~ msgid "Loading &1..." #~ msgstr "Laddar &1..." #~ msgid "Edit text property" #~ msgstr "Redigera textegenskaper" #~ msgid "Exported classes" #~ msgstr "Exporterade klasser" #~ msgid "Component advancement" #~ msgstr "Komponentbefordran" #~ msgid "Environment variables" #~ msgstr "Miljövariabler" #~ msgid "WARNING! The project executable and the libraries it depends on must be stored inside the same directory. Otherwise the libraries will not be found." #~ msgstr "VARNING! Projektets körbara fil och biblioteken det beror av måste ligga i samma katalog. Annars kommer inte biblioteken att hittas." #~ msgid "About component" #~ msgstr "Om komponent" #~ msgid "Show only components used in project" #~ msgstr "Visa endast komponenter, som används i projekt" #~ msgid "Author(s)" #~ msgstr "Författare" #~ msgid "Blend" #~ msgstr "Blandning" #~ msgid "Background color" #~ msgstr "Bakgrundsfärg" #~ msgid "Foreground color" #~ msgstr "Förgrundsfärg" #~ msgid "Do you really want to reset the list to its default value?" #~ msgstr "Vill du verkligen återställa listan till standardvärdet?" #~ msgid "Select a theme" #~ msgstr "Välj ett tema" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "All behövlig information har samlats in. Du kan nu skapa installationspaketet till din tillämpning...\n" #~ "

Klicka på OK-knappen för att skapa paketen.\n" #~ "

Klicka påFöregående-knappen om du gjort ett misstag.\n" #~ "

Klicka påAvbrytl-knappen för att avbryta uppgiften.\n" #~ "\n" #~ msgid "Please enter the changes of your project." #~ msgstr "Mata in ändringarna u ditt projekt." #~ msgid "Prefix package name with the vendor name" #~ msgstr "Sätt tillverkarnamnet främst i paketnamnet" #~ msgid "Reset filter" #~ msgstr "Återställ filter" #~ msgid "Browse project..." #~ msgstr "&Bläddra allt" #~ msgid "System informations" #~ msgstr "Systeminformation" #~ msgid "Component properties" #~ msgstr "Komponentegenskaper" #~ msgid "To show the menu bar again, hit the following keys:

&1" #~ msgstr "För att visa menyrade igen, tryck på följande tangenter:

&1" #~ msgid "Messages" #~ msgstr "Meddelande" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "Klicka på ett formulär för att visa dess kontroll-hierarki..." #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "Formuläret har ändrats.\n" #~ "\n" #~ " Alla dina ändringar kommer att förloras." #~ msgid "Versioning" #~ msgstr "Versionshantering" #~ msgid "Stack backtrace" #~ msgstr "Stackbakåtspårning" #~ msgid "Remove current breakpoint" #~ msgstr "Tag bort aktuell brytpunkt" #~ msgid "Display" #~ msgstr "Visa" #~ msgid "Display ME" #~ msgstr "Visa ME" #~ msgid "Dynamic variables" #~ msgstr "Dynamiska variabler" #~ msgid "Project information" #~ msgstr "Projektinformation" #~ msgid "Component programming" #~ msgstr "Komponentprogrammering" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Visual Basic™ konverteringshjälp" #~ msgid "Image processing" #~ msgstr "Bildbehandling" #~ msgid "OpenGL programming" #~ msgstr "OpenGL-programmering" #~ msgid "XML / XSLT programming" #~ msgstr "XML / XSLT programmering" #~ msgid "Regular expressions" #~ msgstr "Reguljära uttryck" #~ msgid "Internationalization" #~ msgstr "Internationalisering" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "" #~ "Tillämpning lagrad i ett\n" #~ "Subversion-arkiv" #~ msgid "CGI Web application" #~ msgstr "CGI Web-tillämpning" #~ msgid "SDL application" #~ msgstr "SDL tillämpning" #~ msgid "Command-line application" #~ msgstr "Kommandoradstillämpning" #~ msgid "GTK+ graphical application" #~ msgstr "GTK+ grafisk tillämpning" #~ msgid "QT graphical application" #~ msgstr "QT grafisk tillämpning" #~ msgid "Existing" #~ msgstr "Befintlig" #~ msgid "

Authors

\n" #~ msgstr "

Författare

\n" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "Gambas betyder nästan Basic!" #~ msgid "About Gambas..." #~ msgstr "Om Gambas..." #~ msgid "Thanks to" #~ msgstr "Tack till" #~ msgid "Syntax error. Invalid identifier in property name" #~ msgstr "Syntaxfel. Ogiltig identifierare i egenskapsnamn" #~ msgid "Embedded array" #~ msgstr "Inkapslat fält" #~ msgid "Uncompress file" #~ msgstr "Packa upp fil" #~ msgid "The file has been compressed from &1 to &2 bytes (&3)." #~ msgstr "Filen har packats från &1 till &2 byte (&3)." #~ msgid "Original file has been saved in the Project folder." #~ msgstr "Ursprunglig fil har sparats i mappen Projekt." #~ msgid "Current procedure" #~ msgstr "Aktuell procedur" #~ msgid "Arguments" #~ msgstr "Argument" #~ msgid "Quiet external commands" #~ msgstr "Kör externa kommandon tyst" #~ msgid "Minimize at runtime" #~ msgstr "Minimera vid körtillfälle" #~ msgid "Small" #~ msgstr "Liten" #~ msgid "Define..." #~ msgstr "Definiera..." #, fuzzy #~ msgid "No argument" #~ msgstr "Fel argument" gambas-3.16.3/app/src/gambas3/.lang/tr.po000066400000000000000000005433011411575327000177210ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /home/fasici/Projelerim/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.16.90\n" "POT-Creation-Date: 2021-05-08 20:52 UTC\n" "PO-Revision-Date: 2021-05-08 20:53 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Gambas için Entegre Edilmiş Geliştirme Ortamı" #: CBookmark.class:40 msgid "Define bookmark" msgstr "Yer imi tanımla" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "Tüm yer imlerini temizle" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "Önceki yer imleri" #: CBookmark.class:54 msgid "Next bookmark" msgstr "Sonraki yer imleri" #: CClassInfo.class:615 msgid "Static properties" msgstr "Statik özellikler" #: CClassInfo.class:616 msgid "Static variables" msgstr "Durağan değişkenler" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "Özellikler" #: CClassInfo.class:636 msgid "Variables" msgstr "Değişkenler" #: CClassInfo.class:637 msgid "Methods" msgstr "" #: CClassInfo.class:638 msgid "Events" msgstr "Olaylar" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "Bu sınıf bir &1." #: CClassInfo.class:681 msgid "creatable" msgstr "oluşturulabilir" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "Bu sınıf bir &1 olarak kullanılabilir." #: CClassInfo.class:694 msgid "function" msgstr "fonksiyon" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "oku" #: CClassInfo.class:699 msgid "write" msgstr "yaz" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1750 msgid "read-only" msgstr "salt-okunur" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 msgid "static function" msgstr "" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "&1 bileşenine ait bilgiler yükleniyor..." #: CComponent.class:151 msgid "Loading information on project..." msgstr "" #: CComponent.class:525 FProjectProperty.class:1004 msgid "Classes" msgstr "Sınıflar" #: CComponent.class:569 FDebugInfo.class:45 FMain.form:952 msgid "Class" msgstr "Sınıf" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:328 msgid "Description" msgstr "Açıklama" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "" #: CComponent.class:600 msgid "This component is deprecated." msgstr "" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "Yazar" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "Yazarlar" #: CComponent.class:621 msgid "Implements" msgstr "Gerçekleştirilenler" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "Gerekenler" #: CComponent.class:648 msgid "Excludes" msgstr "Hariciler" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "Dahili doğal sınıflar" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Cairo grafik kütüphanesi" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "Çizelge çizimi" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "Sıkıştırma & açma" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "Veritabanı erişimi" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "Veri bağlantılı denetimler" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "MySQL veritabanı sürücüsü" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "ODBC veritabanı sürücüsü" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "PostgreSQL veritabanı sürücüsü" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "SQLite 2 veritabanı sürücüsü" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "SQLite 3 veritabanı sürücüsü" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "Uygulama hata ayıklayıcı yardımcısı" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "D-Bus arayüzü" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "Deyim değerlendirici" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "Sözdizimi vurgulayıcı yordamları" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "Grafiksel bileşenler için daha fazla denetim" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "Geliştirilmiş standart diyaloglar" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "Çok Belgeli Arayüz" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "Varsayılan simge teması" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "Uçbirim emulatörü" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "GTK+ araç kiti ile OpenGL" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ değiştirici bileşeni" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "QT/GTK+ değiştirici araç kiti ile OpenGL" #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "QT/GTK+ web tarayıcı değiştirici birleşeni" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "QT4/QT5 değiştirici birleşeni" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "QT4/QT5 OpenGL değiştirici birleşeni" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "QT4/QT5 WebKit değiştirici birleşeni" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "Resim yönetimi" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "Resim yükleme ve kaydetme" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "libxml tabanlı XML araçları" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "MySQL'e özgü yordamlar" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "Ağ programlama" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "Yüksek-düzey ağ iletişim kuralları yönetimi" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "SMTP istemcisi" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "OpenGL ile 3B programlama" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "GNU komut seçenekleri ayrıştırıcısı" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Perl-uyumlu Düzenli İfade Eşleme" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "Poppler kitaplığını taban alan PDF karıştırıcısı" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "QT4 araç kiti" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "QT4 araç kiti uzantısı" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "QT4 WebKit bileşeni" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "QT4 araç kiti ile OpenGL" #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "QT5 araç kiti" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "QT5 WebKit birleşeni" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "QT5 web tarayıcı araç birleşeni" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "QT5 araç kiti ile OpenGL" #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "QT5 araç kiti uzantısı" #: CDocumentation.class:137 msgid "Report designer" msgstr "Rapor tasarlayıcısı" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "SDL kitaplığı" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "SDL ses & CD-ROM yönetimi" #: CDocumentation.class:142 msgid "SDL2 component" msgstr "" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "" #: CDocumentation.class:144 msgid "Application settings management" msgstr "Uygulama ayarları yönetimi" #: CDocumentation.class:145 msgid "Signals management" msgstr "" #: CDocumentation.class:146 msgid "Terminal management" msgstr "Uçbirim yönetimi" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "" #: CDocumentation.class:148 msgid "Unit tests component" msgstr "" #: CDocumentation.class:149 msgid "Utility component" msgstr "" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "" #: CDocumentation.class:151 msgid "Video capture" msgstr "Görüntü yakalama" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Visual Basic uyumluluğu" #: CDocumentation.class:153 msgid "XML tools" msgstr "XML araçları" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "XML-RPC iletişim kuralı" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Web uygulama araçları" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 msgid "Web application development" msgstr "Web uygulama geliştirme" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "Grafiksel form yönetimi" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "Olay döngüsü yönetimi" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "OpenGL görüntüsü" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:213 FTextEditor.form:244 msgid "Insert color" msgstr "Renk ekle" #: CInsertDate.class:58 FEditor.form:567 FTextEditor.form:588 msgid "Insert today's date" msgstr "" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:52 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "Konum" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "DİKKAT! Kütüphane bulunamadı." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "Sağlananlar" # gb-ignore #: CModule.class:29 FEditor.form:420 FForm.form:472 FMain.form:959 #: FToolBox.class:26 msgid "Form" msgstr "" #: CModule.class:29 msgid "Forms" msgstr "Formlar" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas formları" #: CModule.class:30 msgid "Gambas web pages" msgstr "Gambas web sayfaları" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "Web Sayfası" #: CModule.class:30 msgid "WebPages" msgstr "Web Sayfaları" #: CModule.class:31 msgid "Gambas reports" msgstr "Gambas Raporları" #: CModule.class:31 FMain.form:973 FToolBox.class:26 msgid "Report" msgstr "Rapor" #: CModule.class:31 msgid "Reports" msgstr "Raporlar" #: CModule.class:32 msgid "Gambas web forms" msgstr "Gambas web formları" #: CModule.class:32 FMain.form:980 FToolBox.class:26 msgid "WebForm" msgstr "Web Form" #: CModule.class:32 msgid "WebForms" msgstr "Web Formları" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Gambas Uçbirim formları" #: CModule.class:33 FMain.form:987 FToolBox.class:26 msgid "TermForm" msgstr "" #: CModule.class:33 msgid "TermForms" msgstr "" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "Olay döngüsü" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "Örnekler Gambas uygulama hazuru sunucusunda barınır. &1 tıklayarak ulaşın ve indirin..." #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 msgid "IDE extensions" msgstr "" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:456 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:260 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:855 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:64 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:292 #: FText.form:40 FTranslate.class:682 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:432 msgid "Cancel" msgstr "İptal" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "Bu yazılımı kaldırmak istediğinizden emin misiniz?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "Kaldır" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "Yazılım kaldırılamadı:" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "" #: CProjectTree.class:98 msgid "Files" msgstr "Dosyalar" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "Proje" #: CProjectTree.class:373 msgid "Sources" msgstr "Kaynaklar" #: CProjectTree.class:375 msgid "Connections" msgstr "Bağlantılar" #: CProjectTree.class:376 msgid "Public" msgstr "Genel" #: CProjectTree.class:377 FToolBox.class:26 msgid "Data" msgstr "Veri" #: CRecentProject.class:68 FMain.class:754 msgid "Today" msgstr "Bugün" #: CRecentProject.class:70 msgid "Yesterday" msgstr "Dün" #: CRecentProject.class:72 msgid "Two days ago" msgstr "İki gün önce" #: CRecentProject.class:74 msgid "This week" msgstr "Bu hafta" #: CRecentProject.class:76 msgid "This month" msgstr "Bu ay" #: CSoftware.class:317 msgid "Download cancelled" msgstr "İndirme iptal edildi" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "" #: CSoftware.class:361 msgid "Abort" msgstr "İptal" #: CSoftware.class:361 FMain.class:2787 FMenu.class:99 msgid "Ignore" msgstr "Yoksay" #: CSoftware.class:361 msgid "The following components are required:" msgstr "" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "Proje derlenemedi" #: CSoftware.class:396 msgid "Unable to make executable." msgstr "Yürütülebilir dosya oluşturulamadı." #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "Kaynak dizin yüklenemedi" #: CSoftware.class:675 msgid "yesterday" msgstr "dün" #: CSoftware.class:677 msgid "&1 days ago" msgstr "&1 gün önce" #: CSoftware.class:683 msgid "last week" msgstr "son hafta" #: CSoftware.class:685 msgid "&1 weeks ago" msgstr "&1 hafta önce" #: CSoftware.class:691 msgid "last month" msgstr "" #: CSoftware.class:693 msgid "&1 months ago" msgstr "&1 ay önce" #: CSoftware.class:699 msgid "last year" msgstr "son yıl" #: CSoftware.class:701 msgid "on &1" msgstr "&1'de" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "" #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "" #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "" #: CVersionControlGit.class:394 msgid "Status" msgstr "Durumlar" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2642 msgid "OK" msgstr "Tamam" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "Tarih" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Gambas yazı tipi SIL Açık Yazı Tipi Lisansı altında yayınlanmıştır." #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "Bu program GNU Genel Kamu Lisansı altında yayınlanmıştır." #: Design.module:227 Project.module:2324 msgid "first" msgstr "" #: Design.module:229 Project.module:2326 msgid "second" msgstr "saniye" #: Design.module:231 Project.module:2328 msgid "third" msgstr "" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 msgid "The program has been terminated." msgstr "" #: Design.module:473 msgid "" "The program has returned\n" "the value: &1" msgstr "" "Program bu değeri döndürdü:\n" " &1" #: Design.module:745 msgid "The project has no test module." msgstr "Projenin test modülü yok." #: Design.module:1064 msgid "Output terminal" msgstr "Uçbirim çıktısı" #: Design.module:1092 msgid "No terminal emulator found." msgstr "Uçbirim emulatörü bulunamadı." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "Lisans" #: FAbout.class:241 msgid "Financial support" msgstr "Maddi destek" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "Gambas Hakkında" #: FAbout.form:25 msgid "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, 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.\n" msgstr "" #: FArguments.form:13 FMain.form:1799 msgid "Run with arguments" msgstr "Parametrelerle aç" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:161 msgid "Reset" msgstr "Sıfırla" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "Çalıştır" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:463 FEditor.form:378 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:455 FImageEditor.form:395 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:154 FTextEditor.form:407 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "Kapat" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "Renk" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "Bir renk seçin" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "Sistem" #: FColorChooser.form:40 msgid "Free" msgstr "Sınırsız" #: FComponentChooser.class:352 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "Tamamlanmadı fakat kararlı" #: FComponentChooser.class:354 FProjectProperty.form:479 msgid "Experimental" msgstr "Deneme niteliğinde" #: FComponentChooser.class:356 msgid "Stable" msgstr "Stabil" #: FComponentChooser.class:358 FProjectProperty.form:479 FToolBox.class:26 msgid "Deprecated" msgstr "" #: FComponentChooser.class:578 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:580 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:589 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:590 msgid "Keep" msgstr "" #: FComponentChooser.class:590 FDebugInfo.form:235 msgid "Remove all" msgstr "Tümünü kaldır" #: FComponentChooser.class:695 msgid "These components are incompatible:
&1." msgstr "Bu bileşenler birbiri ile uyumsuz:
&1." #: FComponentChooser.class:708 msgid "The &1 component needs one of the following components:
&2." msgstr "&1 bileşeni şu bileşenlere ihtiyaç duyuyor:
&2." #: FComponentChooser.class:715 msgid "The &1 component needs the &2 component." msgstr "&1 bileşeni, &2 bileşenine ihtiyaç duyuyor." #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "Bir birleşen seçin" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:362 FForm.form:439 #: FHelpBrowser.form:78 FImageEditor.form:378 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:391 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "Yeniden yükle" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:336 #: FTextEditor.form:782 msgid "Zoom in" msgstr "Yaklaş" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:344 #: FTextEditor.form:789 msgid "Zoom out" msgstr "Uzaklaş" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:796 msgid "No zoom" msgstr "" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "&Düzenle" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:55 FImageEditor.form:622 msgid "Text" msgstr "Metin" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "Resim" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "Dosya değişirildi.\n" "Diyaloğu kapatmayı gerçekten istiyor musunuz?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "Bazı çelişkiler hala giderilemedi." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "Çakışma çözülemedi." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "Dosya değiştirildi.\n" "Başka bir dosya açmayı gerçekten istiyor musunuz?" #: FConflict.class:267 msgid "Conflict files" msgstr "Çelişen dosyalar" #: FConflict.form:31 msgid "Version conflict" msgstr "Sürüm çakışması" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:132 FForm.form:165 FImageEditor.form:139 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:147 msgid "Cut" msgstr "Kes" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:139 FForm.form:172 FImageEditor.form:147 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:154 FTranslate.form:114 msgid "Copy" msgstr "Kopyala" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:146 FForm.form:185 FImageEditor.form:154 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:161 msgid "Paste" msgstr "Yapıştır" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:115 FFieldChooser.form:127 FForm.form:148 FImageEditor.form:120 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:130 msgid "Undo" msgstr "Geri al" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:122 FForm.form:155 FImageEditor.form:128 #: FProjectVersion.form:258 FTextEditor.form:137 msgid "Redo" msgstr "Yenile" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:586 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:607 msgid "Indent" msgstr "Girintiyi büyüt" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:594 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:615 msgid "Unindent" msgstr "Girintiyi küçült" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:70 msgid "Open" msgstr "Aç" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:368 FForm.form:445 FImageEditor.form:385 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:397 #: FTranslate.form:234 msgid "Save" msgstr "Kaydet" #: FConflict.form:160 msgid "Solve" msgstr "Çöz" #: FConflictEditor.class:962 FEditor.class:2749 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(Bildirimler)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:152 FTextEditor.form:167 msgid "Advanced" msgstr "Gelişmiş" #: FConflictEditor.form:138 FEditor.form:156 FTextEditor.form:171 msgid "Upper case" msgstr "Büyük harf" #: FConflictEditor.form:145 FEditor.form:163 FTextEditor.form:178 msgid "Lower case" msgstr "Küçük harf" #: FConflictEditor.form:155 FEditor.form:173 FTextEditor.form:203 msgid "Comment" msgstr "Açıklama" #: FConflictEditor.form:162 FEditor.form:180 FTextEditor.form:210 msgid "Uncomment" msgstr "Açıklama işaretini kaldır" #: FConflictEditor.form:172 FEditor.form:190 FPasteSpecial.form:19 #: FTextEditor.form:220 msgid "Paste special" msgstr "Özel yapıştır" #: FConflictEditor.form:183 FEditor.form:224 FImageEditor.form:223 #: FTextEditor.form:255 msgid "Select All" msgstr "Hepsini Seç" #: FConflictEditor.form:193 FEditor.form:239 FGotoLine.form:12 #: FTextEditor.form:265 msgid "Go to line" msgstr "Satıra git" #: FConflictEditor.form:198 FEditor.form:244 FTextEditor.form:270 msgid "Bookmarks" msgstr "Yer imleri" #: FConflictEditor.form:206 FEditor.form:259 FTextEditor.form:278 msgid "Find next" msgstr "Sonrakini bul" #: FConflictEditor.form:213 FEditor.form:266 FTextEditor.form:285 msgid "Find previous" msgstr "Öncekini bul" #: FConflictEditor.form:222 FEditor.form:275 FImageEditor.form:331 #: FMain.form:776 FTextEditor.form:294 FToolBox.class:26 msgid "View" msgstr "Görünüm" #: FConflictEditor.form:226 FEditor.form:279 FTextEditor.form:298 msgid "Automatic word wrap" msgstr "Otomatik kelime kaydırma" #: FConflictEditor.form:233 FTextEditor.form:305 msgid "Indent with tab" msgstr "Sekmeyle girinti" #: FConflictEditor.form:240 FEditor.form:286 FTextEditor.form:315 msgid "No split" msgstr "Ayraç yok" #: FConflictEditor.form:246 FEditor.form:292 FTextEditor.form:321 msgid "Horizontal split" msgstr "Yatay ayraç" #: FConflictEditor.form:253 FEditor.form:299 FTextEditor.form:328 msgid "Vertical split" msgstr "Düşey ayraç" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:345 msgid "End of line" msgstr "Satır sonu" #: FConflictEditor.form:263 FTextEditor.form:348 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:353 msgid "Windows" msgstr "Pencereler" #: FConflictEditor.form:273 FTextEditor.form:358 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:415 FMain.form:1054 FTextEditor.form:368 msgid "Open code" msgstr "Kodu aç" #: FConflictEditor.form:316 FEditor.form:388 FPasteSpecial.form:60 #: FTextEditor.form:417 msgid "Paste as string" msgstr "Dizge olarak yapıştır" #: FConflictEditor.form:321 FEditor.form:393 FPasteSpecial.form:65 #: FTextEditor.form:422 msgid "Paste as multi-line string" msgstr "Çoklu-satır dizge olarak yapıştır" #: FConflictEditor.form:326 FEditor.form:398 FPasteSpecial.form:50 #: FTextEditor.form:427 msgid "Paste as comments" msgstr "Açıklama olarak yapıştır" #: FConflictEditor.form:342 FTextEditor.form:455 msgid "Text editor" msgstr "Metin düzenleyicisi" #: FConflictEditor.form:348 FForm.form:478 FTextEditor.form:461 msgid "Code" msgstr "Kod" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "Ad" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:59 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "Tür" #: FConnectionEditor.class:61 msgid "Length" msgstr "Uzunluk" #: FConnectionEditor.class:66 msgid "Default value" msgstr "Varsayılan değer" #: FConnectionEditor.class:71 msgid "Collation" msgstr "" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "İndeks" #: FConnectionEditor.class:87 msgid "Unique" msgstr "Benzersiz" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "Alan" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "Veritabanına bağlanılamadı." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "Kaydetme" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "'&1' tablosu değiştirildi. Kaydetmek ister misiniz?" #: FConnectionEditor.class:498 msgid "No record" msgstr "" #: FConnectionEditor.class:500 msgid "One record" msgstr "" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1 kayıt" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "Tablo '&1' yüklenemedi." #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "Sorgu çalıştırılamadı." #: FConnectionEditor.class:722 Project.module:2644 msgid "(in &1 s)" msgstr "" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "sınırsız" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "" # gb-ignore #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "String" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "Bu isim zaten kullanımda." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "Lütfen bir sayı girin." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "Uzunluk 1'den büyük ve 255'den küçük olmalıdır." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "Yazım hatası." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "Bu isim zaten var." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "Bu alan bir indeksde kullanılıyor." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "'&1' tablosunun birincil anahtarı yok." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "'&1' tablosuna yazılamıyor." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr " '&1' tablosunu gerçekten silmek istiyor musunuz?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "'&1' tablosu silinemiyor." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "Seçili satırları gerçekten kaldırmak istiyor musunuz?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "Bağlantı düzenleyicisi" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "Sistem tablolarını göster" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "Yeni tablo" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "Tabloyu sil" #: FConnectionEditor.form:134 FDebugInfo.form:211 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:427 FTestSuite.class:292 msgid "Remove" msgstr "Kaldır" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "Tabloyu yeniden adlandır" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "Yeniden adlandır" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "Tablo kopyala" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "Tablo yapıştır" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "Metin dosyası içe aktar" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "İçe Aktar" #: FConnectionEditor.form:217 msgid "Run query" msgstr "Sorguyu çalıştır" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "Yeni" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:279 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:855 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "Temizle" #: FConnectionEditor.form:309 msgid "Fields" msgstr "Alanlar" #: FConnectionEditor.form:325 FMain.class:2227 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "Ekle" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "Aşağı" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "Yukarı" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "Alan listesini kopyala" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "İndeksler" #: FConnectionEditor.form:389 msgid "New index" msgstr "Yeni indeks" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "Düzenle" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "Dışa aktar" #: FConnectionEditor.form:492 FForm.form:192 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "Sil" #: FConnectionEditor.form:500 FForm.form:226 msgid "Select all" msgstr "Hepsini seç" #: FConnectionEditor.form:508 FForm.form:238 msgid "Unselect all" msgstr "Tüm seçimi iptal et" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "" #: FCrash.class:73 FTranslate.class:245 Project.module:4814 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "Bug raporu gönderilemedi." #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "Bir hatayı mail kullanarak gönder" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(Üst yok)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "Dosya eklenemiyor." #: FCreateFile.form:37 msgid "New file" msgstr "Yeni dosya" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:100 msgid "Options" msgstr "Seçenekler" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "Genişlik" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "Yükseklik" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "İletişim kutusu yönetimi" #: FCreateFile.form:155 msgid "Parent class" msgstr "Üst sınıf" #: FCreateFile.form:168 msgid "Exported" msgstr "Dışa aktarıldı" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "" #: FCreateFile.form:180 msgid "Not creatable" msgstr "" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "Otomatik uzantı" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "Proje çekimi başarısız oldu." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "Proje oluşturulamıyor!" #: FCreateProject.class:172 msgid "Please choose a project template." msgstr "" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "Lütfen depo konumunu girin." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "Yeni proje" #: FCreateProject.form:46 msgid "Project type" msgstr "Proje tipi" #: FCreateProject.form:82 FProjectEditor.form:43 msgid "Parent directory" msgstr "Üst klasör" #: FCreateProject.form:90 msgid "Project details" msgstr "Proje detayları" #: FCreateProject.form:99 msgid "Project name" msgstr "Proje adı" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "Proje adı, proje dizininin adıdır." #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "Projenin final dizini :" #: FCreateProject.form:134 msgid "Project title" msgstr "Proje başlığı" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "Proje dili çevrilebilsin" #: FCreateProject.form:159 FProjectChooser.form:77 ProjectBox.class:307 msgid "Open in another window" msgstr "Başka bir pencerede aç" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "Depo" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:100 msgid "Debugging" msgstr "Hata Ayıklanıyor" #: FDebugButton.form:42 FDebugInfo.form:194 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "Uçbirim" #: FDebugButton.form:51 FDebugInfo.form:202 MTheme.module:6 msgid "Breakpoints" msgstr "Kesme noktaları" #: FDebugButton.form:60 FDebugInfo.form:264 msgid "Warnings" msgstr "Uyarılar" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:305 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:365 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "Sürüm kontrol" #: FDebugButton.form:96 FDebugInfo.form:446 msgid "Search result" msgstr "Arama sonucu" #: FDebugExpr.class:4 msgid "not available" msgstr "kullanılabilir değil" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "Değer" #: FDebugExpr.class:511 msgid "Key" msgstr "Anahtar" #: FDebugExpr.class:517 msgid "Symbol" msgstr "Simge" #: FDebugExpr.form:33 msgid "Watch" msgstr "İzle" #: FDebugExpr.form:38 msgid "Print to console" msgstr "Konsola yaz" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "Tüm sembolleri göster" #: FDebugExpr.form:88 msgid "No element" msgstr "" #: FDebugInfo.class:46 FEditor.class:411 FImageEditor.form:592 #: FImportTable.class:66 msgid "Line" msgstr "Çizgi" #: FDebugInfo.class:47 FProfile.class:711 msgid "Function" msgstr "Fonksiyon" #: FDebugInfo.class:51 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "Dosya" #: FDebugInfo.class:54 msgid "Col." msgstr "" #: FDebugInfo.class:69 FImportTable.class:68 msgid "Message" msgstr "Mesaj" #: FDebugInfo.class:126 msgid "native code" msgstr "doğal kod" #: FDebugInfo.class:206 msgid "Watch expressions" msgstr "" #: FDebugInfo.class:279 msgid "Do you want to clear the expression list ?" msgstr "İfade listesini temizlemek istiyor musunuz ?" #: FDebugInfo.class:1113 msgid "File not loaded" msgstr "" #: FDebugInfo.class:1256 msgid "Current object" msgstr "Geçerli nesne" #: FDebugInfo.class:1307 msgid "Local variables" msgstr "Yerel değişkenler" #: FDebugInfo.class:1566 msgid "Test has failed." msgstr "" #: FDebugInfo.class:1572 msgid "Test has been aborted." msgstr "" #: FDebugInfo.class:1578 msgid "Test has succeeded." msgstr "" #: FDebugInfo.form:80 FMain.form:587 msgid "Debug" msgstr "Hata ayıkla" #: FDebugInfo.form:130 msgid "Remove current expression" msgstr "Geçerli ifadeyi sil" #: FDebugInfo.form:136 msgid "Add expression" msgstr "Deyim ekle" #: FDebugInfo.form:209 msgid "Remove breakpoint" msgstr "" #: FDebugInfo.form:217 msgid "Disable breakpoint" msgstr "Kesme noktasını devre dışı bırak" #: FDebugInfo.form:219 msgid "Disable" msgstr "Devre dışı" #: FDebugInfo.form:225 msgid "Enable breakpoint" msgstr "" #: FDebugInfo.form:227 msgid "Enable" msgstr "Aktifleştir" #: FDebugInfo.form:233 msgid "Remove all breakpoints" msgstr "Tüm kesme noktalarını sil" #: FDebugInfo.form:283 msgid "Tasks" msgstr "Görevler" #: FDebugInfo.form:312 FOutput.form:78 msgid "Clear console" msgstr "Konsolu temizle" #: FDebugInfo.form:320 msgid "Run test" msgstr "Testi çalıştır" #: FDebugInfo.form:379 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "Gönder" #: FDebugInfo.form:386 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "Senkonize" #: FDebugInfo.form:393 FMain.form:532 msgid "Revert all changes" msgstr "" #: FDebugInfo.form:400 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:454 msgid "Cancel current search" msgstr "Şuan ki aramayı iptal et" #: FDebugInfo.form:470 msgid "Show search window" msgstr "Arama penceresini göster" #: FDebugInfo.form:477 msgid "Search again" msgstr "" #: FDebugInfo.form:527 FSearch.class:521 FTranslate.class:644 msgid "Search string cannot be found." msgstr "Arama dizgesi bulunamadı." #: FEditor.class:410 msgid "Column" msgstr "" #: FEditor.class:412 msgid "Overwrite" msgstr "Üzerine yaz" #: FEditor.form:197 FTextEditor.form:227 msgid "Format code" msgstr "" #: FEditor.form:203 msgid "Sort procedures" msgstr "Sıralama prosedürleri" #: FEditor.form:233 msgid "Go to" msgstr "Git" #: FEditor.form:252 msgid "Find definition" msgstr "Tanım bul" #: FEditor.form:309 FMain.form:1608 msgid "Run until current line" msgstr "Geçerli satıra kadar çalıştır" #: FEditor.form:316 msgid "Toggle breakpoint" msgstr "Kesme noktası ekle/kaldır" #: FEditor.form:323 msgid "Watch expression" msgstr "İfadeyi izle" #: FEditor.form:332 msgid "Open form" msgstr "Form aç" #: FEditor.form:339 FMain.form:1139 msgid "Run this class" msgstr "Bu sınıfı çalıştır" #: FEditor.form:349 FForm.form:432 FImageEditor.form:370 FTextEditor.form:378 msgid "Locked" msgstr "Kilitlendi" #: FEditor.form:355 FHelpBrowser.form:119 FTextEditor.form:384 msgid "Print" msgstr "Yazdır" #: FEditor.form:414 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "Düzenleyici" #: FEditor.form:427 FForm.form:485 FTextEditor.form:468 msgid "Show modifications" msgstr "Düzenlemeleri göster" #: FEditor.form:436 FForm.form:494 FTextEditor.form:477 msgid "Previous modification" msgstr "Önceki değişiklik" #: FEditor.form:443 FForm.form:501 FTextEditor.form:484 msgid "Next modification" msgstr "" #: FEditor.form:576 FTextEditor.form:597 msgid "Insert special character" msgstr "" #: FEditor.form:619 FTextEditor.form:640 msgid "Make code pretty" msgstr "" #: FEditor.form:684 FTextEditor.form:684 msgid "Procedure list" msgstr "" #: FEditor.form:708 FImageEditor.form:773 FTextEditor.form:727 msgid "Lock / unlock file" msgstr "Dosya kilitle / kilit aç" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV dosyaları" #: FExportData.class:113 msgid "Unable to export data." msgstr "" #: FExportData.class:126 msgid "&Overwrite" msgstr "Üzerine Yaz" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "Ayraç karakteri" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "Kapsama karakteri" #: FExportData.form:54 msgid "Export field names" msgstr "" #: FExportData.form:60 msgid "Export selected records only" msgstr "" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "Uygulama havuzu" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "Doğrulama başarısız." #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "Giriş" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "Sunucu" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "Kullanıcı" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "Parola" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "Parolayı hatırla" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "Anonim olun" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "Lütfen geçerli e-posta adresi girin." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "Kullanıcı kaydedilemiyor." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "Kaydol" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "E-Posta" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "Bağlantı açılamadı." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "Alan listesini düzenle" #: FFieldChooser.class:70 msgid "Select a field" msgstr "Bir alan seçin" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "Bağlantı" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "Tablo" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "'&1' sürüm kontrol" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "Bu dosya, son değişiklikten bu yana değiştirilmedi." #: FFileInfoVC.class:88 FMain.class:1252 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:432 msgid "Continue" msgstr "Devam et" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:432 msgid "You are going to cancel your changes!" msgstr "Değişikliklerinizi iptal edeceksiniz!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "Değişiklikler" #: FFileInfoVC.form:44 FVersionControl.form:52 msgid "History" msgstr "" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "Değişiklikleri geri al" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "Değişiklikleri geçmişte göster" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "Gambas test modülü" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "'&1' özellikleri" #: FFontChooser.form:12 msgid "Select a font" msgstr "Bir yazı tipi seçin" #: FForm.class:136 msgid "Bad form file" msgstr "Bozuk form dosyası" #: FForm.class:284 msgid "Unknown control: &1" msgstr "Bilinmeyen kontrol: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "&1 kontrolu için birleşen bulunamadı." #: FForm.class:1923 msgid "Cannot paste data." msgstr "Veri yapıştırılamadı." #: FForm.form:179 msgid "Copy at the same place" msgstr "Aynı yerde kopyalayın" #: FForm.form:199 msgid "Delete container only" msgstr "Sadece panelleri sil" #: FForm.form:206 msgid "Embed into a container" msgstr "" #: FForm.form:212 msgid "Change into" msgstr "Şuna değiştir" #: FForm.form:220 msgid "Select" msgstr "Seç" #: FForm.form:233 msgid "Select parent" msgstr "Üst seçim" #: FForm.form:246 msgid "Arrangement" msgstr "Düzen" #: FForm.form:250 msgid "Bring to foreground" msgstr "Önplana getir" #: FForm.form:257 msgid "Send to background" msgstr "Arkaplana gönder" #: FForm.form:267 msgid "Horizontal" msgstr "Yatay" #: FForm.form:274 msgid "Rows" msgstr "Satırlar" #: FForm.form:280 msgid "Vertical" msgstr "Dikey" #: FForm.form:287 msgid "Columns" msgstr "Sütunlar" #: FForm.form:296 msgid "Center horizontally" msgstr "Yatay ortala" #: FForm.form:302 msgid "Center vertically" msgstr "Dikey ortala" #: FForm.form:308 msgid "Alignment" msgstr "Hizalama" #: FForm.form:312 msgid "Align to left" msgstr "Sola hizala" #: FForm.form:318 msgid "Align to right" msgstr "Sağa hizala" #: FForm.form:324 msgid "Align to top" msgstr "Yukarı hizala" #: FForm.form:330 msgid "Align to bottom" msgstr "Aşağı hizala" #: FForm.form:339 msgid "Same width" msgstr "Aynı genişlik" #: FForm.form:345 msgid "Same height" msgstr "Aynı yükseklik" #: FForm.form:354 msgid "Show tab" msgstr "Sekmeyi göster" #: FForm.form:362 msgid "Move tab" msgstr "Sekmeyi taşı" #: FForm.form:367 msgid "First" msgstr "İlk" #: FForm.form:374 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "Önceki" #: FForm.form:381 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "İleri" #: FForm.form:388 msgid "Last" msgstr "Son" #: FForm.form:399 FMenu.form:70 msgid "Menu editor" msgstr "Menü düzenleyici" #: FForm.form:408 msgid "Event" msgstr "Olaylar" #: FForm.form:422 msgid "Run this form" msgstr "Bu forumu çalıştır" #: FForm.form:605 msgid "Toggle grid" msgstr "Izgara aç/kapat" #: FForm.form:614 FImageEditor.form:518 msgid "Toggle information tooltip" msgstr "Bilgi kutusunu aç veya kapat" #: FForm.form:733 msgid "Move tab first" msgstr "Sekmeyi başa taşı" #: FForm.form:740 msgid "Move tab left" msgstr "Sekmeyi sola taşı" #: FForm.form:747 msgid "Move tab right" msgstr "Sekmeyi sağa taşı" #: FForm.form:754 msgid "Move tab last" msgstr "Sekmeyi sona taşı" #: FForm.form:782 FOption.form:285 msgid "Bold" msgstr "Kalın" #: FForm.form:790 msgid "Italic" msgstr "İtalik" #: FForm.form:798 FOption.form:290 msgid "Underline" msgstr "Altıçizili" #: FForm.form:806 msgid "Bigger font" msgstr "Daha büyük yazı tipi" #: FForm.form:814 msgid "Smaller font" msgstr "Daha küçük yazı tipi" #: FForm.form:822 FOption.form:1436 msgid "Default font" msgstr "Varsayılan yazı tipi" #: FForm.form:830 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "Arkaplan" #: FForm.form:838 msgid "Foreground" msgstr "Ön plan" #: FForm.form:849 msgid "Lock / unlock form" msgstr "Form kilitle / kilit aç" #: FFormStack.form:14 FMain.form:1979 msgid "Hierarchy" msgstr "Hiyerarşi" #: FFormStack.form:24 msgid "Move top" msgstr "En üste taşı" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "Yukarı taşı" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "Aşağı taşı" #: FFormStack.form:42 msgid "Move bottom" msgstr "En alta taşı" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "Varsayılan Dil" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "Yardım gezgini" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "Geri dön" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "İleri git" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "IDE klavye kısayolları" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "Hata ayıklıyıcısı" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "Çeviri" #: FImageEditor.form:160 msgid "Action" msgstr "Eylem" #: FImageEditor.form:165 msgid "Crop" msgstr "Kırp" #: FImageEditor.form:173 FImageProperty.form:305 msgid "Horizontal flip" msgstr "Yatay çevir" #: FImageEditor.form:180 FImageProperty.form:299 msgid "Vertical flip" msgstr "Düşey çevir" #: FImageEditor.form:187 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "Saat yönünün tersinde döndür" #: FImageEditor.form:195 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "Saat yönünde döndür" #: FImageEditor.form:206 msgid "Resize" msgstr "Yeniden boyutlandır" #: FImageEditor.form:213 msgid "Rotate" msgstr "Döndür" #: FImageEditor.form:230 msgid "Hide selection" msgstr "Seçimi gizle" #: FImageEditor.form:236 MTheme.module:6 msgid "Selection" msgstr "Seçim" #: FImageEditor.form:241 msgid "Invert selection" msgstr "Seçimi ters çevir" #: FImageEditor.form:249 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:257 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:267 msgid "Union" msgstr "" #: FImageEditor.form:273 msgid "Difference" msgstr "" #: FImageEditor.form:279 msgid "Intersection" msgstr "" #: FImageEditor.form:285 msgid "Exclusive or" msgstr "" #: FImageEditor.form:294 msgid "Shape grid" msgstr "" #: FImageEditor.form:352 msgid "Zoom normal" msgstr "" #: FImageEditor.form:360 msgid "Zoom fit" msgstr "" #: FImageEditor.form:405 msgid "Save as JPEG" msgstr "JPEG olarak kaydet" #: FImageEditor.form:411 msgid "Save as PNG" msgstr "PNG olarak kaydet" #: FImageEditor.form:417 msgid "Save as BMP" msgstr "BMP olarak kaydet" #: FImageEditor.form:424 msgid "Save as TIFF" msgstr "TIFF olarak kaydet" #: FImageEditor.form:431 msgid "Image editor" msgstr "Resim düzenleyici" #: FImageEditor.form:509 msgid "Drawing grid" msgstr "" #: FImageEditor.form:561 msgid "Move" msgstr "" #: FImageEditor.form:572 msgid "Draw" msgstr "Çiz" #: FImageEditor.form:582 msgid "Erase" msgstr "Sil" #: FImageEditor.form:602 msgid "Rectangle" msgstr "Dörtgen" #: FImageEditor.form:612 msgid "Ellipse" msgstr "Elips" #: FImageEditor.form:632 msgid "Magic wand" msgstr "" #: FImageEditor.form:649 msgid "Edit selection" msgstr "Seçimi düzenle" #: FImageEditor.form:752 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:761 FImageRotate.form:11 msgid "Rotate image" msgstr "" # gb-ignore #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "Çerçeve" #: FImageProperty.class:790 msgid "System clipboard" msgstr "Sistem panosu" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "Yarıçap" #: FImageProperty.form:327 msgid "Clipboard" msgstr "Pano" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1760 msgid "Fill" msgstr "Doldur" #: FImageProperty.form:392 msgid "Colorize" msgstr "" #: FImageProperty.form:400 msgid "Desaturate" msgstr "" #: FImageProperty.form:408 msgid "Make transparent" msgstr "Şeffaflık oluştur" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "Renkleri karanlık mod için ters çevir" #: FImageProperty.form:426 msgid "Line cap" msgstr "" #: FImageProperty.form:431 msgid "Line join" msgstr "" #: FImageProperty.form:436 msgid "Fill rule" msgstr "Doldurma kuralı" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "Boyut" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "Efektler" #: FImageProperty.form:545 msgid "Brightness" msgstr "Parlaklık" #: FImageProperty.form:564 msgid "Contrast" msgstr "Kontrast" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "Bulanık" #: FImageProperty.form:676 msgid "Transparency" msgstr "Şeffaflık" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:338 msgid "Preview" msgstr "Önizleme" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "Uygula" #: FImageProperty.form:745 msgid "Centered" msgstr "Ortalanmış" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "Sola hizala" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "Resim kalitesi" #: FImageResize.form:25 msgid "Resize image" msgstr "Görüntüyü yeniden boyutlandır" #: FImageResize.form:64 msgid "Resize and center" msgstr "Yeniden boyutlandır ve ortala" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "Yatay olarak yeniden boyutlandır ve ortala" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "Dikey olarak yeniden boyutlandır ve ortala" #: FImageResize.form:85 msgid "Stretch image" msgstr "Resmi uzat" #: FImageResize.form:113 msgid "Add a border" msgstr "Bir çerçeve ekle" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas sınıfları" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas modülleri" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "Gambas test modülleri" # gb-ignore #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML dosyaları" #: FImportFile.class:33 msgid "Javascript files" msgstr "Javascript dosyaları" #: FImportFile.class:33 msgid "Picture files" msgstr "Resim dosyaları" #: FImportFile.class:188 msgid "Cannot import file." msgstr "Dosya içe aktarılamadı." #: FImportFile.form:9 msgid "Import files" msgstr "" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "Bağlantı oluştur" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1377 msgid "All files" msgstr "Tüm dosyalar" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(Otomatik anahtar)" #: FImportTable.class:276 msgid "Field_&1" msgstr "Alan_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "Yeteri kadar değer yok" #: FImportTable.class:393 msgid "Too many values" msgstr "Çok fazla değer" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "Kullanıcı tarafından iptal edildi" #: FImportTable.class:427 msgid "No record imported." msgstr "Kayıt içeri aktarılmadı." #: FImportTable.class:429 msgid "One record imported." msgstr "Bir kayıt içeri aktarıldı." #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 kayıt içe aktarıldı." #: FImportTable.form:35 msgid "Import file" msgstr "Dosya içe aktar" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "İçe aktarmak için CSV dosyasını seçin" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "Kaynak" #: FImportTable.form:78 msgid "Charset" msgstr "Karakter seti" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "İşe yaramayan beyaz boşlukları çıkart" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "" #: FImportTable.form:139 msgid "Line(s)" msgstr "Satır(lar)" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "Hedef" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "İlk satır, alan isimlerini içeriyor" #: FImportTable.form:176 msgid "Key field" msgstr "Anahtar alan" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "Lütfen düzenin adını girin." #: FLayout.class:30 FOption.class:1717 msgid "Override" msgstr "Geçersiz kıl" #: FLayout.class:30 msgid "This layout already exists." msgstr "" #: FLayout.form:14 msgid "Save layout" msgstr "" #: FLayout.form:22 msgid "Layout name" msgstr "Yerleşim adı" #: FList.class:103 msgid "Item &1" msgstr "Öğe &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "Listeyi gerçekten temizlemek istiyor musunuz ?" #: FList.form:25 msgid "Edit list property" msgstr "list özelliğini düzenle" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "Ekle" #: FList.form:87 msgid "Invert" msgstr "Ters çevir" #: FMain.class:260 msgid "Do you really want to delete this link ?" msgstr "Bu bağlantıyı silmek istediğinizden emin misiniz?" #: FMain.class:263 msgid "Do you really want to delete this directory ?" msgstr "Bu dizini gerçekten silmek istiyor musunuz ?" #: FMain.class:275 msgid "Do you really want to delete this file ?" msgstr "Bu dosyayı gerçekten silmek istiyor musunuz ?" #: FMain.class:282 msgid "Cannot delete file or directory" msgstr "Dosya ya da dizin silinemedi" #: FMain.class:300 msgid "File or directory does not exist anymore." msgstr "Dosya veya dizin artık mevcut değil" #: FMain.class:775 msgid "Sort history" msgstr "Geçmişi sırala" #: FMain.class:779 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "Tarihe göre sırala" #: FMain.class:779 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "İsime göre sırala" #: FMain.class:779 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "Yola göre sırala" #: FMain.class:791 msgid "&Clear history" msgstr "&Geçmişi temizle" #: FMain.class:971 msgid "New folder" msgstr "Yeni klasör" #: FMain.class:1042 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "GNU çeviri araçları sisteminizde yüklü değil.\n" "\n" "Lütfen çeviriyi yapabilmek için bu araçları kurunuz." #: FMain.class:1781 msgid "Unable to drop file into the project." msgstr "" #: FMain.class:1906 msgid "All backup or generated files will be removed from the project directory." msgstr "Tüm yedek veya üretilen dosyalar proje dizininden silinecektir." #: FMain.class:1906 msgid "Clean" msgstr "Temizle" #: FMain.class:2227 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2365 msgid "Choose a profile" msgstr "Bir profil seçin" #: FMain.class:2366 msgid "Profile for &1 project" msgstr "" #: FMain.class:2614 FProperty.class:1034 msgid "Select a file" msgstr "Bir dosya seçin" #: FMain.class:2629 msgid "This file is located inside the project." msgstr "Bu dosya proje içerisinde kilitlendi." #: FMain.class:2787 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "Dosya değiştirildi.\n" "\n" "Yaptığınız değişiklikler silinecek." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "Proje aç" #: FMain.form:313 msgid "Open recent" msgstr "Son açılanlar" #: FMain.form:321 msgid "Open example" msgstr "Örnek aç" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "Dosya aç" #: FMain.form:339 msgid "Save project" msgstr "Projeyi kaydet" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "Projeyi farklı kaydet" #: FMain.form:358 msgid "Reload project" msgstr "Projeyi yeniden yükle" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "Çık" #: FMain.form:402 Project.module:6989 msgid "Save as" msgstr "Farklı kaydet" #: FMain.form:442 msgid "Compile" msgstr "Derle" #: FMain.form:449 msgid "Compile All" msgstr "Tümünü Derle" #: FMain.form:459 msgid "Translate" msgstr "Çevir" #: FMain.form:468 msgid "Make" msgstr "Oluştur" #: FMain.form:472 msgid "Executable" msgstr "Çalıştırılabilir Dosya" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "Kaynak arşivi" #: FMain.form:486 msgid "Installation package" msgstr "Kurulum Paketi" #: FMain.form:493 msgid "Patch" msgstr "Paket" #: FMain.form:496 msgid "Create" msgstr "Oluştur" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 msgid "Put under version control" msgstr "Sürüm kontrolü altına al" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "Yayınla" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "Temizle" #: FMain.form:570 msgid "Refresh" msgstr "Yenile" #: FMain.form:599 msgid "Run with" msgstr "Birlikte aç" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:29 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "Duraklat" #: FMain.form:630 msgid "Stop" msgstr "Durdur" #: FMain.form:637 msgid "Step" msgstr "Adım" #: FMain.form:644 msgid "Forward" msgstr "İleri" #: FMain.form:651 msgid "Finish" msgstr "Bitir" #: FMain.form:660 msgid "Use terminal emulator" msgstr "Uçbirimi kullan" #: FMain.form:666 msgid "Redirect standard error output" msgstr "Standart hata çıktısını yönlendir" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 msgid "Invert language orientation" msgstr "Dil yönünü ters çevir" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "Tam zamanında derleyiciyi devre dışı bırak" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "Tam-zamanında derleyici hata ayıklama mesajlarını göster" #: FMain.form:702 msgid "Show database requests" msgstr "Veritabanı isteklerini göster" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "GUI birleşeni" #: FMain.form:713 msgid "Current desktop" msgstr "Geçerli masaüstü" #: FMain.form:750 msgid "Activate profiling" msgstr "Profilleştirmeyi aktifleştir" #: FMain.form:756 msgid "Open profile" msgstr "Profil aç" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "Tüm kesme noktalarını sil" #: FMain.form:770 msgid "Close all debug windows" msgstr "Bütün hata ayıklama pencerelerini kapat" #: FMain.form:790 msgid "Properties sheet" msgstr "Özellikler kağıdı" #: FMain.form:808 msgid "Status bar" msgstr "Durum çubuğu" #: FMain.form:815 msgid "Hide menubar" msgstr "Menü çubuğunu gizle" #: FMain.form:839 msgid "Close all windows" msgstr "Tüm pencereleri kapat" #: FMain.form:846 msgid "Tools" msgstr "Araçlar" #: FMain.form:850 msgid "Find" msgstr "Bul" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "Değiştir" #: FMain.form:866 msgid "Browse project" msgstr "Projeye Gözat" #: FMain.form:873 msgid "Open a terminal" msgstr "Uçbirim aç" #: FMain.form:880 msgid "Send project by mail" msgstr "Projeyi mail kullanarak gönder" #: FMain.form:886 msgid "Update all forms" msgstr "Tüm formları güncelle" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "Yazılım havuzu" #: FMain.form:904 msgid "Shortcuts" msgstr "Kısayollar" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "Tercihler" #: FMain.form:924 msgid "Directory" msgstr "Dizin" #: FMain.form:929 msgid "Project link" msgstr "Proje linki" #: FMain.form:938 msgid "Module" msgstr "Modül" #: FMain.form:945 msgid "Test module" msgstr "" #: FMain.form:1004 msgid "HTML file" msgstr "HTML dosyası" #: FMain.form:1011 msgid "Style sheet" msgstr "Stil şablonu" #: FMain.form:1018 msgid "Javascript file" msgstr "Javascript dosyası" #: FMain.form:1025 msgid "Other" msgstr "Diğer" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "Son açılanlar" #: FMain.form:1059 msgid "Open in file manager" msgstr "Dosya yöneticisinde aç" #: FMain.form:1064 msgid "Open in project" msgstr "Projede aç" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "Dosya yolunu kopyala" #: FMain.form:1132 msgid "Startup class" msgstr "Başlangıç sınıfı" #: FMain.form:1147 msgid "Add to repository" msgstr "" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "Filtrele" #: FMain.form:1155 msgid "Show exported classes" msgstr "" #: FMain.form:1160 msgid "Show added files" msgstr "Eklenen dosyaları göster" #: FMain.form:1165 msgid "Show modified files" msgstr "Düzenlenen dosyaları göster" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 msgid "Show untranslatable files" msgstr "" #: FMain.form:1180 msgid "Show compressed files" msgstr "" #: FMain.form:1188 msgid "Show all" msgstr "Hepsini göster" #: FMain.form:1200 msgid "Do not translate" msgstr "Çevirme" #: FMain.form:1207 msgid "Compress all" msgstr "Tümünü sıkıştır" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 msgid "Compress file into the executable" msgstr "Dosyayı yürütülebilir dosyaya sıkıştır" #: FMain.form:1226 FTextEditor.form:234 msgid "Compress file" msgstr "Dosya sıkıştır" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "Yeni bağlantı" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "Günün ipucu" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "Klavye kısayolları" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "Sistem bilgileri" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "Proje özellikleri" #: FMain.form:1429 msgid "Refresh project" msgstr "Projeyi yenile" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3197 msgid "Make executable" msgstr "Çalışabilir dosyayı oluştur" #: FMain.form:1471 msgid "Make source archive" msgstr "Kaynak arşivini oluştur" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "Kurulum paketini oluştur" #: FMain.form:1509 msgid "Toolbox" msgstr "Alet kutusu" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "Ara" #: FMain.form:1551 msgid "Compile all" msgstr "Tümünü derle" #: FMain.form:1600 msgid "Finish current function" msgstr "Geçerli işlevi bitir" #: FMain.form:1616 msgid "Show menubar" msgstr "Menü çubuğunu göster" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "Yazılımı yayınla" #: FMain.form:1706 msgid "&File" msgstr "&Dosya" #: FMain.form:1730 msgid "&Project" msgstr "&Proje" #: FMain.form:1742 msgid "&Debug" msgstr "&Hata ayıkla" #: FMain.form:1754 msgid "&View" msgstr "&Görünüm" #: FMain.form:1766 msgid "&Tools" msgstr "&Araçlar" # gb-ignore #: FMain.form:1778 msgid "&?" msgstr "" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1907 msgid "Show project tree" msgstr "Proje ağacı göster" #: FMain.form:1915 msgid "Show properties sheet" msgstr "" #: FMain.form:1986 msgid "Show property help" msgstr "" #: FMain.form:1994 msgid "Show controls" msgstr "Kontrolleri göster" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas uygulamaları" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "" #: FMakeExecutable.form:71 msgid "Set version to" msgstr "" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "Hata ayıklama bilgisini çalıştırılabilir dosyada sakla" #: FMakeExecutable.form:109 msgid "Compress files in executable" msgstr "" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "Masaüstünde kısayol oluştur" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "" #: FMakeExecutable.form:135 msgid "Run this shell command after" msgstr "" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "Paket" #: FMakeInstall.class:137 msgid "Min. version" msgstr "Min. sürüm" #: FMakeInstall.class:138 msgid "Max. version" msgstr "Maks. sürüm" #: FMakeInstall.class:144 msgid "File or directory" msgstr "Dosya veya dizin" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "Paketler oluşturuluyor..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "Paketler başarıyla oluşturuldu." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "Lütfen adınızı girin." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "Lütfen e-posta adresinizi girin." #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "Lütfen sahip ismi girin." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "Bu sürüm için değişiklik kaydı girişi yok." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "Lütfen ilk CHANGELOG girişini yapın." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "Lütfen en az bir hedef dağıtım seçin." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "Lütfen her dağıtım için paket grubunu seçin." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "Lütfen bir paket grubu seçin." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "Lütfen her dağıtım için menü konumunu seçin." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "Lütfen bir menü konumu seçin." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "Ekstra dosya bulunamadı: &1" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Debian paketleme sistemi dosya ismindeki boşlukları işleyemez." #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Debian paketleme sistemi dizinlerdeki boşlukları işleyemez." #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "Paket, proje dizininin içerisinde depolanamıyor." #: FMakeInstall.class:558 msgid "Initial release" msgstr "İlk sürüm" #: FMakeInstall.class:814 msgid "Menus" msgstr "Menüler" #: FMakeInstall.class:882 msgid "Groups" msgstr "Gruplar" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "Geçersiz karakterler" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "Tüm ilave bağımlılıkları kaldırmayı gerçekten istiyor musunuz?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "Tüm ilave dosyaları kaldırmayı gerçekten istiyor musunuz ?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "Hedef dizini seçin" #: FMakeInstall.form:151 msgid "Create package" msgstr "Paket oluştur" #: FMakeInstall.form:154 msgid "Package information" msgstr "Paket bilgisi" #: FMakeInstall.form:160 msgid "Package name" msgstr "Paket adı" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "Paket adlarına sahip öneki veya adı ekleyin" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "Pkaet sürümü" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "Sağlayıcı adı" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "Sağlayıcı öneki" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "Yetkili bilgisi" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "Değişiklikler" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "Hedef dağıtım" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "Kendi kendine çıkarılabilir" #: FMakeInstall.form:612 msgid "Package group" msgstr "Paket grubu" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "Menü girişi" #: FMakeInstall.form:654 msgid "Categories" msgstr "Kategoriler" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "İlave bağımlılıklar" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "Minimum Gambas sürümü" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "Tüm hedefler için aynı bağımlılıklar" #: FMakeInstall.form:786 msgid "Extra files" msgstr "İlave dosyalar" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "Tüm hedefler için aynı dosyalar" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "İlave autoconf testleri" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "Ayarlama işlemi için ekstra testler ekle.\n" "

Eğer ihtiyacınız yoksa veya autoconf scriptleri hakkında bilginiz yoksa,bunu boş bırakın." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "Hedef dizin" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "Her dağıtım için dizin oluştur" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 msgid "Create package now" msgstr "Şimdi paket oluştur" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "Lütfen yama ismi girin." #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "Paket oluştur" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "Proje dizini" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "Otomatik paket adı" #: FMakePatch.form:76 msgid "Edit patch" msgstr "Paketi düzenle" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "Kaynak arşiv seçin" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "Kaynak paketler" #: FMakePatch.form:101 msgid "Select project directory" msgstr "Proje dizini seçin" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4875 msgid "Create source package" msgstr "Kaynak paketi oluştur" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "Lütfen bir menü adı girin." #: FMenu.class:346 msgid "Bad menu name !" msgstr "Geçersiz menü adı !" #: FMenu.class:352 msgid "Bad group name !" msgstr "Geçersiz grup adı !" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "Bu menü çok derin !" #: FMenu.class:1155 Project.module:5753 msgid "modified" msgstr "değiştirildi" #: FMenu.form:86 msgid "Insert menu" msgstr "" #: FMenu.form:95 msgid "Insert separator" msgstr "" #: FMenu.form:104 msgid "Insert menu before" msgstr "" #: FMenu.form:107 msgid "Insert before" msgstr "" #: FMenu.form:113 msgid "Delete menu" msgstr "Menüyü sil" #: FMenu.form:179 msgid "Paste before" msgstr "" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "Yeni bir menü eklemek için Ekle'ye tıklayın." #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "Lütfen veritabanı adını girin." #: FNewConnection.class:145 msgid "Please enter password" msgstr "Lütfen şifreyi girin" #: FNewConnection.class:147 msgid "Connection properties" msgstr "Bağlantı özellikleri" #: FNewConnection.class:178 msgid "Select a directory" msgstr "Bir dizin seçin" #: FNewConnection.class:229 msgid "Create database" msgstr "Veritabanı oluştur" #: FNewConnection.class:241 msgid "Delete database" msgstr "Veritabanını sil" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "Veritabanı oluşturulamadı." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "'&1' veritabanını gerçekten silmek istiyor musunuz?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "Veritabanı silinemedi." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "Ana Bilgisayar" #: FNewConnection.form:124 msgid "Path" msgstr "Yol" #: FNewConnection.form:154 msgid "No password" msgstr "" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "Veritabanı" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "Veritabanı karakter setini yoksay" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "Tablo oluştur" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "Lütfen yeni tablonun adını girin." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "Tablo '&1' zaten var." #: FNewTranslation.form:10 msgid "New translation" msgstr "Yeni çeviri" #: FOpenProject.form:22 msgid "Select a project" msgstr "Bir proje seçin" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "Örnekler" #: FOption.class:4 msgid "Amber" msgstr "Kehribar" #: FOption.class:4 msgid "Amethyst" msgstr "Ametist" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "Zümrüt" #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "Obsidiyen" #: FOption.class:4 msgid "Pastel" msgstr "" #: FOption.class:4 msgid "Quest" msgstr "Görev" # gb-ignore #: FOption.class:4 msgid "Quick" msgstr "" #: FOption.class:4 msgid "Ruby" msgstr "Yakut" #: FOption.class:4 msgid "Sapphire" msgstr "Gökyakut" #: FOption.class:4 msgid "Visual" msgstr "Görsel" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "Varsayılan" #: FOption.class:9 msgid "Flat" msgstr "Düz" #: FOption.class:89 msgid "Custom" msgstr "Özel" #: FOption.class:91 msgid "Desktop" msgstr "Masaüstü" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(Öntanımlı)" #: FOption.class:267 msgid "Gambas highlight theme files" msgstr "Gambas renklendirme teması dosyaları" #: FOption.class:268 msgid "Export a theme file" msgstr "Tema dosyasını dışa aktar" #: FOption.class:499 msgid "Select a theme file" msgstr "Tema dosyası seç" #: FOption.class:522 msgid "You need to restart the application to see your changes." msgstr "Değişikliklerinizi görmek için uygulamayı yeniden başlatmalısınız." #: FOption.class:855 msgid "Do you really want to clear the documentation cache?" msgstr "" #: FOption.class:864 msgid "Unable to clear documentation cache." msgstr "" #: FOption.class:1024 msgid "Do you really want to delete this snippet?" msgstr "" #: FOption.class:1225 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "Gambas yazı tipini kişisel yazı tipi dizininize gerçekten yüklemek istiyor musunuz?" #: FOption.class:1225 FSoftwareFarm.class:604 msgid "Install" msgstr "Kur" #: FOption.class:1311 msgid "Network is not available." msgstr "Ağ bağlantısı mevcut değil." #: FOption.class:1316 msgid "Documentation is up to date." msgstr "" #: FOption.class:1321 msgid "A new documentation is available!" msgstr "" #: FOption.class:1326 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1508 msgid "Cannot download '&1'." msgstr "'&1' indirilemedi." #: FOption.class:1539 msgid "Unable to uncompress documentation." msgstr "" #: FOption.class:1550 msgid "Unable to install documentation." msgstr "" #: FOption.class:1660 msgid "Compact" msgstr "" #: FOption.class:1675 msgid "Current" msgstr "Geçerli" #: FOption.class:1717 msgid "Do you really want to override the existing layout?" msgstr "" #: FOption.class:1815 msgid "Do you really want to delete that layout?" msgstr "Bu yerleşimi gerçekten silmek istediğinizden emin misiniz?" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 msgid "Identity" msgstr "Kimlik" #: FOption.form:350 msgid "Package maintainer" msgstr "Paket oluşturucu" #: FOption.form:395 msgid "Default license" msgstr "Varsayılan lisans" #: FOption.form:435 VersionControl.module:555 msgid "No" msgstr "Hayır" #: FOption.form:435 VersionControl.module:555 msgid "Yes" msgstr "Evet" #: FOption.form:439 msgid "Projects" msgstr "Projeler" #: FOption.form:456 msgid "Default tab size" msgstr "Öntanımlı sekme boyutu" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "boşluk" #: FOption.form:482 msgid "Indent with tab by default" msgstr "Varsayılan olarak sekmeyle girinti" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "Varsayılan olarak otomatik kelime kaydırma" #: FOption.form:516 msgid "Activate version control" msgstr "Sürüm kontrolünü etkinleştir" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "Bir proje yüklerken dosyaları geri yükle" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "Derleme" #: FOption.form:556 msgid "Number of background jobs" msgstr "Arkaplanda çalışacak görev sayısı" #: FOption.form:569 msgid "Images" msgstr "Resimler" #: FOption.form:581 msgid "Compress PNG images with " msgstr "PNG fotoğraflarını bununla sıkıştır" #: FOption.form:615 msgid "Automatic translation with " msgstr "Bununla otomatik çevir" #: FOption.form:644 msgid "Translation engine" msgstr "Çeviri motoru" #: FOption.form:653 msgid "Help & applications" msgstr "Yardım & uygulamalar" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "Yardım" #: FOption.form:670 msgid "Show documentation in popups" msgstr "Popupda yardımı göster" #: FOption.form:687 msgid "Always display optional messages" msgstr "Her zaman isteğe bağlı mesajları görüntüle" #: FOption.form:699 msgid "Documentation" msgstr "Yardım" #: FOption.form:710 msgid "Use offline documentation" msgstr "Çevrimdışı yardım kullan" #: FOption.form:740 msgid "Download documentation" msgstr "" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "Yardım önbelleğini sil" #: FOption.form:787 msgid "Applications" msgstr "Uygulamalar" #: FOption.form:798 msgid "Browser" msgstr "Tarayıcı" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "Uçbirim" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "Dikey çizgilerle girintiyi göster" #: FOption.form:858 msgid "Highlight current line" msgstr "Geçerli satırı vurgula" #: FOption.form:875 msgid "Highlight modified lines" msgstr "Değiştirilen satırları vurgula" #: FOption.form:892 msgid "Show line numbers" msgstr "Satır numaralarını göster" #: FOption.form:909 msgid "Procedure folding" msgstr "Prosedür katlama" #: FOption.form:926 msgid "Procedure separation" msgstr "Yordam ayrımı" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "Satırın sonundaki boşlukları noktalarla göster" #: FOption.form:960 msgid "Show Preview" msgstr "Önizleme Göster" #: FOption.form:978 msgid "Keywords in upper case" msgstr "Anahtar sözcükler büyük harf" #: FOption.form:987 msgid "Code formatting" msgstr "Kod formatlaması" #: FOption.form:993 msgid "Automatic formatting" msgstr "Otomatik format" #: FOption.form:1004 msgid "Control structure completion" msgstr "Kontrol yapısının tamamla" #: FOption.form:1021 msgid "Local variable declaration" msgstr "Yerel değişken tanımı" #: FOption.form:1038 msgid "Comments insertion" msgstr "Yorumların yerleştirilmesi" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 msgid "Close strings" msgstr "Dizgeleri kapat" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "Kaydetme ve yüklemede biçimlendir" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "Sekmeli girinti" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "Satırın sonundaki gereksiz boşlukları kaldır" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "Birbirini izleyen boşluk satırlarını koruyun" #: FOption.form:1155 msgid "Code snippets" msgstr "Kod parçacıkları" #: FOption.form:1171 msgid "Activate code snippets" msgstr "Kod parçacıklarını etkinleştir" #: FOption.form:1232 msgid "Interface" msgstr "Arayüz" #: FOption.form:1249 msgid "Activate animations" msgstr "Animasyonları aktifleştir" #: FOption.form:1266 msgid "Show shadows" msgstr "Gölgeleri göster" #: FOption.form:1283 msgid "Show tooltips" msgstr "İpuçlarını göster" #: FOption.form:1300 msgid "Use utility windows" msgstr "Yararlı pencereler kullan" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "Fare tekerleğine bastığımda sekmeleri kapat" #: FOption.form:1334 msgid "Show file name in window title" msgstr "Dosya adını pencere çubuğunda göster" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "Hata ayıklama panelini gerekirse göster" #: FOption.form:1368 msgid "Message style" msgstr "Mesaj stili" #: FOption.form:1384 msgid "Layout" msgstr "Yerleşim" #: FOption.form:1419 msgid "Fonts" msgstr "Yazı tipleri" #: FOption.form:1452 msgid "Global size" msgstr "Evrensel boyut" #: FOption.form:1474 msgid "Title size" msgstr "Başlık boyutu" #: FOption.form:1496 msgid "Debugger size" msgstr "Hata ayıklama boyutu" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "Yazdırma" #: FOption.form:1588 msgid "Fixed font" msgstr "Sabit yazı tipi" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "Gambas yazı tipini kod düzenlemesi için kur" #: FOption.form:1681 msgid "Themes" msgstr "Temalar" #: FOption.form:1698 msgid "Icon theme" msgstr "Simge teması" #: FOption.form:1714 msgid "Highlighting theme" msgstr "Örnek temalar" #: FOption.form:1728 msgid "Import theme" msgstr "Tema içe aktar" #: FOption.form:1734 msgid "Export theme" msgstr "Temayı dışa aktar" #: FOutput.form:29 msgid "Console - Gambas" msgstr "Konsol - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "Gömülü konsolu çıkar" #: FOutput.form:72 msgid "Keep above" msgstr "Yukarıda tut" #: FOutput.form:85 msgid "Suspend terminal" msgstr "" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 msgid "Open contents" msgstr "İçerikleri aç" #: FOutput.form:130 msgid "Use system charset" msgstr "Sistem karakter kümesini kullan" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "Metin yapıştırılamadı." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "Pano içerikleri" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "Normal yapıştır" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "PRINT ile yapıştır" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "" #: FPasteTable.class:133 msgid "Table already exists" msgstr "" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "Tablo verilerini de kopyala" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "Yama seçin" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "Geri al" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "" #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "Kendi" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "Profil kaydedilemedi." #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "Profili kaydet" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "Proje özellikleri" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "Boyut önizleme" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "Statik özellikler" #: FProjectProperty.class:55 msgid "Variable" msgstr "Değişken" #: FProjectProperty.class:293 msgid "Snapping value is incorrect." msgstr "Girilen değer yanlış." #: FProjectProperty.class:826 msgid "&1 does not export any class." msgstr "&1 herhangi bir sınıf dışa aktarmıyor." #: FProjectProperty.class:834 msgid "&1 is already used as a library." msgstr "&1 zaten bir kütüphane olarak kullanıldı." #: FProjectProperty.class:1002 msgid "Modules" msgstr "Modüller" #: FProjectProperty.class:1003 msgid "Test modules" msgstr "Test modülleri" #: FProjectProperty.class:1013 msgid "Functions" msgstr "Fonksiyonlar" #: FProjectProperty.class:1014 msgid "Lines of code" msgstr "Kod Satırları" #: FProjectProperty.class:1015 msgid "Average number of lines by function" msgstr "İşleve göre ortalama satır sayısı" #: FProjectProperty.class:1018 msgid "Executable size" msgstr "Yürütülebilir dosya boyutu" #: FProjectProperty.class:1018 msgid "bytes" msgstr "" #: FProjectProperty.class:1035 msgid "Information about component" msgstr "" #: FProjectProperty.class:1041 msgid "Information about library" msgstr "" #: FProjectProperty.class:1421 msgid "Select a Gambas executable" msgstr "Bir yürütülebilir Gambas seçin" #: FProjectProperty.class:1422 msgid "Gambas executable" msgstr "" #: FProjectProperty.form:250 msgid "JIT compiler" msgstr "" #: FProjectProperty.form:300 msgid "General" msgstr "Genel" #: FProjectProperty.form:366 msgid "Component" msgstr "Bileşen" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "Kitaplık" #: FProjectProperty.form:366 msgid "Normal" msgstr "Normal" #: FProjectProperty.form:373 msgid "Vendor" msgstr "Sağlayıcı" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "Sürüm" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "VERSION dosyasından kontrol et" #: FProjectProperty.form:418 msgid "Title" msgstr "Başlık" #: FProjectProperty.form:452 msgid "Information" msgstr "Bilgi" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "İlerleme" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "Tamamlanmış ve kararlı" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 msgid "Include information from" msgstr "" #: FProjectProperty.form:547 msgid "Required features" msgstr "" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 msgid "Require" msgstr "" #: FProjectProperty.form:630 msgid "Exclude" msgstr "" #: FProjectProperty.form:642 msgid "Remove All" msgstr "Tümünü Sil" #: FProjectProperty.form:649 msgid "Components" msgstr "Bileşenler" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "Kitaplıklar" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 msgid "Additional references" msgstr "" #: FProjectProperty.form:748 msgid "Environment" msgstr "Çevre" #: FProjectProperty.form:777 msgid "&Add" msgstr "&Ekle" #: FProjectProperty.form:817 msgid "Edition" msgstr "Yayım" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Sekme boyutu" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "Modül sembolleri varsayılan olarak public (genel)." #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Form denetimleri genel (PUBLIC) olsun" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "Uyarıları aktifleştir" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "Sürüm numarasına şube ekle" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "İstatistikler" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "Bu ve aşağıdaki satırlar yok sayılacak" #: FProjectVersion.class:36 msgid "Local" msgstr "Yerel" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "Lütfen bir kullanıcı adı girin." #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:373 msgid "The project could not be committed." msgstr "Proje gönderilemedi." #: FProjectVersion.class:196 VersionControl.module:397 msgid "Unable to update project from repository." msgstr "" #: FProjectVersion.class:198 VersionControl.module:399 msgid "Project has been updated from repository successfully." msgstr "" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "Proje Sürüm Kontrolü" #: FProjectVersion.form:65 msgid "Update" msgstr "Güncelle" #: FProjectVersion.form:118 msgid "Authentication" msgstr "Doğrulama" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "Bilgiyi Yenile" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "" #: FProjectVersion.form:283 msgid "Previous description" msgstr "" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "Denetim adında yasak karakterler." #: FProperty.class:383 msgid "This name is already in use." msgstr "Bu ad zaten kullanımda." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "Denetim grubunda yasak karakterler." #: FProperty.class:469 msgid "Incorrect property value." msgstr "Geçersiz özellik değeri." #: FProperty.class:631 msgid "The name of the control." msgstr "Kontrolün adı." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "Kontrolün ait olduğu olay grubu." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "Eğer form ve kontrol boyutları, varsayılan yazıtipinin boyutlarına tabi olması gerekiyorsa." #: FProperty.class:661 msgid "If the control is public." msgstr "Eğer kontrol paylaşılıyorsa." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "" #: FProperty.class:814 msgid "None" msgstr "Yok" #: FProperty.form:51 msgid "Lock property" msgstr "Kilit özelliği" #: FProperty.form:58 msgid "Sort properties" msgstr "Sıralama özellikleri" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "Varsayılan proxy" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "Yazılım" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "Proje başarıyla yayınlandı." #: FPublish.class:164 msgid "Unable to publish project." msgstr "Proje paylaşılamadı." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "Boşluklar izin verilmedi." #: FPublish.class:241 msgid "Incorrect version number." msgstr "" #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "Tüm etiketleri kaldırmak istediğinizden emin misiniz?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "Bir ekran görüntü dosyası seçin" #: FPublish.class:329 msgid "Screenshot files" msgstr "Ekran görüntüsü dosyaları" #: FPublish.form:67 msgid "Software description" msgstr "Yazılım açıklaması" #: FPublish.form:98 FSoftwareFarm.form:346 msgid "Web site" msgstr "Web sitesi" #: FPublish.form:113 msgid "Create menu entry" msgstr "" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "Etiketler" #: FPublish.form:164 msgid "Sort" msgstr "Sırala" #: FPublish.form:176 msgid "Screenshot" msgstr "Ekran görüntüsü" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 msgid "Dependencies" msgstr "" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "Farklı yayınla" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "Bir proje içerisinden resim seçin" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "" #: FSave.form:15 msgid "Save modified files" msgstr "Değişen dosyaları kaydet" #: FSave.form:43 msgid "Save All" msgstr "Tümünü Kaydet" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "Proje kaydedilemedi." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "Yeni proje üst dizini" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "Ekran görüntüsü al" #: FSearch.class:523 msgid "Search string replaced once." msgstr "Arama dizgesi bir defa değiştirildi." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "Arama dizgesi &1 defa değiştirildi." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 msgid "One replacement" msgstr "" #: FSearch.class:640 msgid "&1 replacements" msgstr "" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "Tüm dizeleri değiştirmek istediğinizden emin misiniz?" #: FSearch.form:42 msgid "Search & Replace" msgstr "" #: FSearch.form:105 msgid "Case sensitive" msgstr "Büyük/küçük harf duyarlı" #: FSearch.form:110 msgid "Words only" msgstr "Sadece kelimeler" #: FSearch.form:115 msgid "Regular expression" msgstr "" #: FSearch.form:120 msgid "Ignore strings" msgstr "Dizgeleri yoksay" #: FSearch.form:125 msgid "Ignore comments" msgstr "Yorumları yoksay" #: FSearch.form:141 msgid "Search in" msgstr "Aranacak yer" #: FSearch.form:147 msgid "Current function" msgstr "Geçerli fonksiyon" #: FSearch.form:153 msgid "Current file" msgstr "Geçerli dosya" #: FSearch.form:160 msgid "Source files" msgstr "Kaynak dosyaları" #: FSearch.form:166 msgid "Data files" msgstr "Veri dosyaları" #: FSearch.form:197 msgid "Browse" msgstr "Gözat" #: FSearch.form:209 msgid "Replace all" msgstr "Tümünü değiştir" #: FSearch.form:220 msgid "Highlight search" msgstr "Aramayı vurgula" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "İlave bir dosya seç" #: FSelectIcon.class:40 msgid "Image files" msgstr "Resim dosyaları" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "Bir resim seçin" #: FSelectIcon.form:45 msgid "Stock" msgstr "Stok" #: FSelectIcon.form:73 msgid "Size preview" msgstr "Boyut önizleme" #: FSelectLibrary.class:64 msgid "unknown" msgstr "bilinmeyen" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "Bir kütüphane seçin" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "" #: FSnippet.class:67 msgid "New code snippet" msgstr "" #: FSnippet.form:26 msgid "Trigger string" msgstr "" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "Oyunlar" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 msgid "Education" msgstr "" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "Grafikler" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "Ses" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "Görüntü" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "Aksesuarlar" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "İnternet" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "Uzantılar" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "Başka yazılım havuzu" #: FSoftwareFarm.class:78 msgid "All software" msgstr "Tüm yazılımlar" #: FSoftwareFarm.class:210 msgid "No software found." msgstr "" #: FSoftwareFarm.class:229 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 msgid "Cancel my vote" msgstr "Oylamayı iptal et" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "Güncelleştir" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "&1 indirmek istediğinizden emin misiniz?" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "&1 başarıyla indirildi." #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "&1 güncellemek istediğinizden emin misiniz?" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "" #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "&1 kaldırmak istediğinizden emin misiniz?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "Kaldırma işlemi başarısız &1:" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "&1 başarıyla kaldırıldı." #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "&1 kurmak istediğinizden emin misiniz?" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "&1 başarıyla yüklendi." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "Oyalamnız düzenlenemedi." #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Gambas Yazılım havuzu" #: FSoftwareFarm.form:159 FToolBox.form:31 FTranslate.form:208 msgid "Show" msgstr "Göster" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "Kuruldu" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "Filtreleri göster" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "Eski sürümleri göster" #: FSoftwareFarm.form:398 msgid "Download" msgstr "İndir" #: FSoftwareFarm.form:406 msgid "Download and install" msgstr "İndir ve kur" #: FSoftwareFarm.form:414 msgid "Vote" msgstr "Oyla" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "Lütfen bu bilgileri hata bildirimi için kopyalayın." #: FTableChooser.form:16 msgid "Choose a table" msgstr "Bir tablo seçin" #: FTestSuite.class:87 msgid "Unable to load test suites." msgstr "" #: FTestSuite.class:168 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:206 msgid "This test suite already exists." msgstr "" #: FTestSuite.class:282 msgid "Unable to save test suites." msgstr "" #: FTestSuite.class:292 msgid "Do you really want to remove this test suite?" msgstr "" #: FTestSuite.form:41 msgid "Test with" msgstr "" #: FTestSuite.form:78 msgid "New test suite" msgstr "" #: FTestSuite.form:85 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:92 msgid "Rename test suite" msgstr "" #: FTestSuite.form:99 msgid "Delete test suite" msgstr "" #: FTestSuite.form:132 msgid "Select all tests" msgstr "Tüm testleri seç" #: FTestSuite.form:139 msgid "Unselect all tests" msgstr "Tüm test seçimini iptal et" #: FText.class:12 msgid "Edit '&1' property" msgstr "'&1' özelliklerini düzenle" #: FText.form:29 msgid "Use a fixed font" msgstr "Sabit bir yazı tipi kullan" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 msgid "Default style sheet" msgstr "" #: FTextEditor.class:1938 msgid "Example" msgstr "Örnek" #: FTextEditor.form:188 msgid "Sort ascent" msgstr "Yükselişi sırala" #: FTextEditor.form:194 msgid "Sort descent" msgstr "İnişi sırala" #: FTextEditor.form:735 msgid "Toggle preview" msgstr "" #: FTextEditor.form:815 msgid "Load images" msgstr "Resimleri yükle" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "Günün ipucu okunamıyor !" #: FTips.form:70 msgid "Show tips on startup" msgstr "Başlangıçta ipuçlarını göster" #: FToolBox.class:26 msgid "Chooser" msgstr "Seçici" #: FToolBox.class:26 msgid "Container" msgstr "Panel" #: FToolBox.class:26 msgid "Dialog" msgstr "İletişim kutusu" #: FToolBox.class:26 msgid "Network" msgstr "Ağ" #: FToolBox.class:26 msgid "Special" msgstr "Özel" #: FToolBox.class:350 Project.module:865 msgid "Current project" msgstr "Geçerli proje" #: FToolBox.class:380 msgid "Help on &1" msgstr "" #: FToolBox.form:35 msgid "Button size" msgstr "Buton boyutu" #: FToolBox.form:40 msgid "Tiny" msgstr "" #: FToolBox.form:47 msgid "Small" msgstr "Küçük" #: FToolBox.form:54 msgid "Medium" msgstr "" #: FToolBox.form:61 msgid "Large" msgstr "Büyük" #: FToolBox.form:68 msgid "Deprecated controls" msgstr "" #: FToolBox.form:119 msgid "Change button size" msgstr "Buton boyutunu değiştir" #: FToolBox.form:125 msgid "Show deprecated controls" msgstr "" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "Proje boş. Çevrilecek bir ileti yok." #: FTranslate.class:74 msgid "Language" msgstr "Dil" #: FTranslate.class:77 msgid "Not translated" msgstr "Çevrilmemiş" #: FTranslate.class:169 msgid "Translation files" msgstr "Çeviri dosyaları" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "'&1' dili için çeviri dosyası okunamadı" #: FTranslate.class:569 msgid "Cannot save translation." msgstr "Çeviri kaydedilemedi." #: FTranslate.class:682 msgid "Do you really want to delete this translation ?" msgstr "Bu çeviriyi gerçekten silmek istiyor musunuz ?" #: FTranslate.class:791 msgid "Do you really want to reload this translation ?" msgstr "Bu çeviriyi yeniden yüklemek istiyor musunuz ?" #: FTranslate.class:805 msgid "Export a translation" msgstr "Çeviriyi dışa aktar" #: FTranslate.class:1020 msgid "Please select the translation file to import." msgstr "Lütfen içe aktarılacak çeviri dosyasını seçin." #: FTranslate.class:1058 msgid "No translation were picked up." msgstr "Hiçbir çeviri alınmadı." #: FTranslate.class:1060 msgid "One translation was picked up." msgstr "Bir çeviri alındı." #: FTranslate.class:1062 msgid "&1 translations were picked up." msgstr "&1 çeviri alındı." #: FTranslate.class:1070 msgid "Cannot import translation file." msgstr "Çeviri dosyası içe aktarılamadı." #: FTranslate.class:1119 msgid "Everything seems to be correct." msgstr "Her şey düzgün görünüyor." #: FTranslate.class:1129 msgid "Translated string symbols do not match untranslated string ones." msgstr "Çevrilmiş dizge sembolleri çevrilmemişlere benzemiyor." #: FTranslate.class:1155 msgid "&1 strings. Everything is translated!" msgstr "&1 dizge. Her şey çevrildi!" #: FTranslate.class:1157 msgid "&1 strings. One is not translated. &3% done." msgstr "&1 dizge. Bir tanesi çevrilmedi. &3% tamamlandı." #: FTranslate.class:1159 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 dizge. Çevrilmemiş &2 dizge var. &3% tamamlandı." #: FTranslate.class:1748 msgid "Automatic translation has failed." msgstr "Otomatik çeviri hataya düştü." #: FTranslate.class:1760 msgid "Do you want to fill the translation automatically?" msgstr "" #: FTranslate.form:77 msgid "Project translation" msgstr "Proje çevirisi" #: FTranslate.form:106 msgid "Automatic translation" msgstr "Otomatik çeviri" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "Çevrilmeyen dizgeler" #: FTranslate.form:122 msgid "Translated strings" msgstr "Çevrilen dizgeler" #: FTranslate.form:126 msgid "All strings" msgstr "Tüm dizgeler" #: FTranslate.form:197 msgid "Add a new translation" msgstr "Bir yeni çeviri ekle" #: FTranslate.form:232 msgid "Save translation" msgstr "Çeviriyi kaydet" #: FTranslate.form:240 msgid "Verify the translation" msgstr "Çeviriyi doğrula" #: FTranslate.form:242 msgid "Verify" msgstr "Doğrula" #: FTranslate.form:312 msgid "Find next translated string" msgstr "Sonraki çevrilmiş dizeyi bul" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "Önceki çevrilmemiş dizgeyi bul" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "Önceki çevrilmemiş dizgeyi bul" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "Sonraki çevrilmemiş dizgeyi bul" #: FTranslate.form:340 msgid "Clear this translation" msgstr "Bu çeviriyi temizle" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "Dizge çevrilmemeli" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "Çevrilmemiş dizgeyi kopyala" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "Tüm çevirileri yinelemeli olarak içe aktarın" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "Varolan çevirilerle yer değiş" #: FTranslate.form:480 msgid "Import a translation file" msgstr "Çeviri dosyasını içe aktar" #: FVersionControl.form:81 msgid "Hide translation changes" msgstr "Çeviri değişikliklerini gizle" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 msgid "Select font" msgstr "Yazı tipi seçin" #: FWelcome.class:69 msgid "New project..." msgstr "Yeni proje..." #: FWelcome.class:71 msgid "Recent projects" msgstr "Son açılan projeler" #: FWelcome.class:73 Project.module:6599 msgid "Installed software" msgstr "Kurulan yazılım" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "Gambas 3'e hoşgeldiniz" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "Anonim" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "Kullanıcı kaydet" #: FarmRequest.class:242 msgid "Publish project" msgstr "PRojeyi yayınla" #: FarmRequest.class:363 msgid "Download software" msgstr "Yazılım indir" #: FarmRequest.class:389 msgid "Delete software" msgstr "Yazılımı sil" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "Bu sayfa mevcut değil." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "Afrika (Güney Afrika)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "Arapça (Mısır)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "Arapça (Tunus)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "Azerice (Azerbaycan)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "Bulgarca (Bulgaristan)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "Katalanca (Katalan, İspanya)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "Gal dili (Birleşik Krallık)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "Çek (Çek Cumhuriyeti)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "Danimarka dili (Danimarka)" #: Language.module:34 msgid "German (Germany)" msgstr "Almanca (Almanya)" #: Language.module:35 msgid "German (Belgium)" msgstr "Almanca (Belçika)" #: Language.module:38 msgid "Greek (Greece)" msgstr "Yunanca (Yunanistan)" #: Language.module:41 msgid "English (common)" msgstr "İngilizce (genel)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "İngilizce (Birleşik Krallık)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "İngilizce (A.B.D.)" #: Language.module:44 msgid "English (Australia)" msgstr "İngilizce (Avustralya)" #: Language.module:45 msgid "English (Canada)" msgstr "İngilizce (Kanada)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "Esperanto dili (Her yerde!)" #: Language.module:51 msgid "Spanish (common)" msgstr "İspanyolca (genel)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "İspanyolca (İspanya)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "İspanyolca (Arjantin)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "Estonyaca (Estonya)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "Baskça (Bask Ülkesi)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "Farsça (İran)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "" #: Language.module:68 msgid "French (France)" msgstr "Fransızca (Fransa)" #: Language.module:69 msgid "French (Belgium)" msgstr "Fransızca (Belçika)" #: Language.module:70 msgid "French (Canada)" msgstr "Fransızca (Kanada)" #: Language.module:71 msgid "French (Switzerland)" msgstr "Fransızca (İsviçre)" #: Language.module:74 msgid "Galician (Spain)" msgstr "Galiçya dili (İspanya)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "İbranice (İsrail)" #: Language.module:80 msgid "Hindi (India)" msgstr "Hintçe (Hİndistan)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "Macarca (Macaristan)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "Hırvatça (Hırvatistan)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "Endonezya dili (Endonezya)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "İrlanda dili (İrlanda)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "İtalyanca (İtalya)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "Japonca (Japonya)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "Khmerce (Kamboçya)" #: Language.module:107 msgid "Korean (Korea)" msgstr "Korece (Kore)" #: Language.module:110 msgid "Latin" msgstr "" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "" #: Language.module:116 msgid "Malayalam (India)" msgstr "Malayalam (Hindistan)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "Makedonca (Makedonya Cumhuriyeti)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "Hollanda dili (Hollanda)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "Hollanda dili (Belçika)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "Norveççe (Norveç)" #: Language.module:129 msgid "Punjabi (India)" msgstr "Punjabi dili (Hindistan)" #: Language.module:132 msgid "Polish (Poland)" msgstr "Polonya dili (Polonya)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "Portekizce (Portekiz)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "Portekizce (Brezilya)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "Valensiyaca (Valensiya Halkı, İspanya)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "" #: Language.module:145 msgid "Russian (Russia)" msgstr "Rusça (Rusya)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "Slovence (Slovenya)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "Arnavutça (Arnavutluk)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "Sırpça (Sırbistan & Karadağ)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "İsveççe (İsveç)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "Türkçe (Türkiye)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "Vietnam dili (Vietnam)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "Valonca (Belçika)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "Basitleştirilmiş Çince (Çin)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "Geleneksel Çince (Tayvan)" #: Language.module:220 msgid "Unknown" msgstr "Bilinmeyen" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "Parola kaydedilemedi." #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "'&1' tablosu oluşturulamıyor." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1 statik olamaz" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: arşivde değil" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: sözdizimi hatası" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: dosya içerisinde sözdizimi hatası" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' zaten tanımlanmış" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' statik değil" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' salt okunur" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' statik" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' sadece yazılabilir" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "',' veya ')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "Erişim engellendi" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "Takma ad bir dize olmalıdır" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "Bağımsız parametre referansla iletilemez" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "Onaylama başarısız" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "Kötü arşiv: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "Kötü parametre" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "Kötü form dosya sürümü" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "Kötü dizge formatı" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "Hatalı dizge dönüşümü" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "Kötü sürüm dizge" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "Dinamik kitaplık bulunamadı '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "Sınıf yüklenemedi '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "Kaynak birleşen yüklenemedi '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "Kaynak dosya yüklenemedi: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "Yürütülebilir dosya oluşturulamadı: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "Dosya açılamadı '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "Dosya açılamadı: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "Dosya sahipliği verilemedi: &1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "'&1' sınıfı oluşturulabilir değil" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "Birleşen bulunamadı: &1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "" #: MErrorMessage.module:85 msgid "Device is full" msgstr "Aygıt dolu" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "Dizin boş değil" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:90 msgid "End of file" msgstr "Dosya sonu" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "" #: MErrorMessage.module:95 msgid "File already exists" msgstr "Dosya zaten var" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "Dosya bir dizin" #: MErrorMessage.module:97 msgid "File is locked" msgstr "Dosya kilitli" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "Dosya ismi ço kuzun" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "Dosya veya dizin mevcut değil" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "Geçersiz görev" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "Geçersiz tarih" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "Geçersiz obje" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "Geçersiz yol" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() bir parametreye ihtiyacı var" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "Kitaplık adı bir dize olmalıdır" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "Kayıp #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "" #: MErrorMessage.module:126 msgid "No parent class" msgstr "Üst sınıf yok" #: MErrorMessage.module:127 msgid "No return value" msgstr "" #: MErrorMessage.module:128 msgid "No startup method" msgstr "" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:131 msgid "Not a function" msgstr "" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:135 msgid "Not an object" msgstr "" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "Bellek aşımı" #: MErrorMessage.module:150 msgid "Out of range" msgstr "" #: MErrorMessage.module:151 msgid "Overflow" msgstr "" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "Okuma hatası" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "Salt-okunur sıra" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER tek başına kullanılamaz" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "Yığın taşması" #: MErrorMessage.module:160 msgid "Standard type" msgstr "Standart tür" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "" #: MErrorMessage.module:162 msgid "String expected" msgstr "" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "Sözdizim hatası" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "Sözdizim hatası. Sınıfın bir tanımlıyıca ihtiyacı var." #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "" #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "Sistem hatası #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "Fazla parametre verildi" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "Fazla parametre verildi: &1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:219 msgid "Too many events" msgstr "" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "Yazım hatası" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Yazım hatası: &1 istenirken &2 değeri verildi." #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "Unknown sınıf '&1'" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "Bilinmeyen hata" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "Bilinmeyen dosya uzantısı" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "Bilinmeyen tanımlayıcı: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "Bilinmeyen işleç" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "bilinmeyen sembol '&2' , '&1' sınıfında " #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "Bilinmeye kullanıcı veya grup" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "Desteklenmeyen veri türü" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "Desteklenmeyen dizge dönüşümü" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "" #: MErrorMessage.module:253 msgid "Void key" msgstr "" #: MErrorMessage.module:254 msgid "Write error" msgstr "Yazma hatası" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "birleşen bulunamadı" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "kitaplık bulunamadı" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "bilinmeyen hata" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "kullanılmayan parametre: &1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "Yürütülebilir dosya çalıştırılamadı:" #: MHelp.module:316 msgid "No help found." msgstr "Yardım bulunamadı." #: MMime.module:17 msgid "Plain text" msgstr "Düz metin" #: MMime.module:18 msgid "HTML text" msgstr "HTML metni" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas form verisi" #: MMime.module:20 msgid "Gambas menu data" msgstr "" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas projesi dosya yolu" #: MMime.module:22 msgid "URI list" msgstr "URI listesi" #: MMime.module:33 msgid "Unknown format" msgstr "Bilinmeyen biçim" #: MTheme.module:6 msgid "Alternate background" msgstr "Alternatif arkaplan" #: MTheme.module:6 msgid "Characters" msgstr "Karakterler" #: MTheme.module:6 msgid "Comments" msgstr "Açıklamalar" #: MTheme.module:6 msgid "Current line" msgstr "Geçerli satır" #: MTheme.module:6 msgid "Data types" msgstr "Veri türleri" #: MTheme.module:6 msgid "Editing line" msgstr "Düzenlenen satır" #: MTheme.module:6 msgid "Errors" msgstr "Hatalar" #: MTheme.module:6 msgid "Highlighting" msgstr "Vurgulama" #: MTheme.module:6 msgid "Keywords" msgstr "Anahtar sözcükler" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "Normal metin" #: MTheme.module:6 msgid "Numbers" msgstr "Numaralar" #: MTheme.module:6 msgid "Operators" msgstr "İşleçler" #: MTheme.module:6 msgid "Preprocessor" msgstr "" #: MTheme.module:6 msgid "Strings" msgstr "Dizgeler" #: MTheme.module:6 msgid "Subroutines" msgstr "Altyordamlar" #: MTheme.module:6 msgid "Symbols" msgstr "Semboller" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1' mevcut değil." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1' ve '&2' mevcut değil" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "CHANGELOG dosyası kaydediliyor." #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "&1 için paket oluşturuluyor." #: Package.module:830 msgid "The package build has failed." msgstr "Paket inşası başarısız." #: Package.module:903 msgid "Making build directory." msgstr "İnşa dizini oluşturuluyor." #: Package.module:962 msgid "Creating desktop file..." msgstr "Masaüstü dosyası oluştur..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "Kaynaklar Debianlaştırılıyor." #: Package.module:1175 msgid "Creating package..." msgstr "Paket oluşturuluyor..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' başarısız oldu." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "~/RPM dizini hazırlanıyor." #: Package.module:1483 msgid "Creating source package." msgstr "Kaynak paket oluşturuluyor." #: Package.module:1507 msgid "Creating .spec file." msgstr ".spec dosyası oluşturuluyor." #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' aşağıdaki hata kodunu döndürdü:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' aşağıdaki hata kodunu döndürdü:" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "'makepkg' başarısız oldu." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4832 msgid "Unsupported source archive format." msgstr "Desteklenmeyen kaynak arşiv formatı." #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "Otomasyon" #: Project.module:239 msgid "Basic" msgstr "Temel" #: Project.module:241 msgid "Drawing" msgstr "Çizim" #: Project.module:244 msgid "Miscellaneous" msgstr "Çeşitli" #: Project.module:245 msgid "Networking" msgstr "Ağ" # gb-ignore #: Project.module:246 msgid "OpenGL" msgstr "" #: Project.module:248 msgid "Sound" msgstr "Ses" #: Project.module:250 msgid "Controls" msgstr "Kontroller" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "Dosya bulunamadı!" #: Project.module:545 msgid "This project does not exist." msgstr "Bu proje mevcut değil." #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "Bu, bir Gambas projesi değil." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "" #: Project.module:582 msgid "Convert" msgstr "Çevir" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" #: Project.module:600 msgid "Do not open" msgstr "Açma" #: Project.module:600 msgid "Open after all" msgstr "Yine de aç" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "Bu proje zaten açık görünüyor.\n" "\n" "Aynı projeyi iki defa açmak veri kaybına yol açabilir." #: Project.module:606 msgid "It cannot be converted." msgstr "Çevrilemiyor." #: Project.module:606 msgid "This project is read-only." msgstr "Proje salt-okunur." #: Project.module:614 msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "" #: Project.module:614 msgid "This project includes compressed files." msgstr "" #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "" #: Project.module:638 msgid "Unable to create temporary directory" msgstr "" #: Project.module:668 msgid "Converting project structure..." msgstr "" #: Project.module:698 msgid "Applying conversion..." msgstr "" #: Project.module:704 msgid "Unable to apply conversion" msgstr "" #: Project.module:749 msgid "Cannot open project file :" msgstr "Proje dosyası açılamadı :" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "Bu projenin kullandığı bazı kütüphaneler bulunamıyor." #: Project.module:938 msgid "Cannot reload file." msgstr "Dosya yeniden yüklenemedi." #: Project.module:1759 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "ALPHA SÜRÜMÜ, KULLANARAK SORUMLULUK SİZE AİT!" #: Project.module:1761 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2134 msgid "Cannot open a binary file." msgstr "" #: Project.module:2172 msgid "Cannot open file." msgstr "Dosya açılamıyor." #: Project.module:2330 msgid "&1th" msgstr "" #: Project.module:2396 msgid "in form definition" msgstr "form tanımı içinde" #: Project.module:2572 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "Bazı proje kaynak dosyaları çelişki içerisinde.\n" "Eğer projeyi derlemek istiyorsanız lütfen bunları çözün." #: Project.module:2576 msgid "Compiling project" msgstr "Proje Derleniyor" #: Project.module:2601 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" "

Derleyici çöktü!

\n" "Lütfen bu hatayı Gambas bugtracker'da bildirin:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Çökmenin yeniden üretilebilmesi için tam projeyi sağlamayı unutmayın." #: Project.module:2845 msgid "File already exists." msgstr "Dosya zaten var." #: Project.module:2879 msgid "Directory already exists." msgstr "Dizin zaten var." #: Project.module:2891 msgid "Cannot link template file." msgstr "" #: Project.module:2897 msgid "Cannot copy template file." msgstr "Şablon dosyası kopyalanamıyor." #: Project.module:2952 msgid "Forbidden directory name." msgstr "" #: Project.module:3120 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3142 msgid "Cannot install library in &1." msgstr "&1 içerisinde kütüphane yüklenemedi." #: Project.module:3187 msgid "Making executable..." msgstr "Çalışabilir dosya oluşturuluyor..." #: Project.module:3197 msgid "Do you really want to increment the project version and make the executable again?" msgstr "" #: Project.module:3197 msgid "No change has been detected." msgstr "" #: Project.module:3298 msgid "Cannot make executable." msgstr "Çalıştırılabilir dosya yapılamıyor." #: Project.module:3780 msgid "Some components are missing: &1" msgstr "Bazı bileşenler eksik: &1" #: Project.module:3996 msgid "Cannot write project file." msgstr "Proje dosyası yazılamıyor." #: Project.module:4048 msgid "Unable to create desktop shortcut." msgstr "Masaüstü kısayolu oluşturulamadı." #: Project.module:4309 msgid "The directory will be removed at the next commit." msgstr "Bir sonraki gönderimde dizin silinecek." #: Project.module:4327 msgid "You must define a startup class or form!" msgstr "Bir başlangıç sınıfı ya da formu belirlemelisiniz!" #: Project.module:4358 msgid "Please type a name." msgstr "Lütfen bir ad yazın." #: Project.module:4362 msgid "This name contains a forbidden character:" msgstr "Bu isim yasak bir karakter içeriyor:" #: Project.module:4366 msgid "The name cannot begins with a dot." msgstr "Ad, nokta ile başlayamaz." #: Project.module:4370 msgid "This name is already used. Choose another one." msgstr "Bu isim zaten kullanılıyor. Başka bir tane seçin." #: Project.module:4406 msgid "Space" msgstr "Boşluk" #: Project.module:4408 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "Sınıf adları bir harf veya alt çizgi ile başlayıp harf veya rakam karakterleri ile devam etmelidir." #: Project.module:4451 msgid "Destination already exists." msgstr "" #: Project.module:4609 msgid "Unable to rename '&1'" msgstr "'&1' yeniden adlandırılamıyor" #: Project.module:4726 msgid "Please type a project name." msgstr "Lütfen bir proje adı yazın." #: Project.module:4734 msgid "The project name cannot begin with a dot." msgstr "Proje adı nokta ile başlayamaz." #: Project.module:4737 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Proje adında ASCII olmayan karakterler kullanılamaz." #: Project.module:4738 msgid "SPACE" msgstr "BOŞLUK" #: Project.module:4738 msgid "The following characters are forbidden in a project name:" msgstr "" #: Project.module:4745 msgid "This project already exists." msgstr "Bu proje zaten var." #: Project.module:4748 msgid "The project directory already exists." msgstr "Proje dizini zaten var." #: Project.module:4750 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Proje dizini oluşturulamıyor; çünkü aynı ada sahip bir dosya zaten var." #: Project.module:4838 msgid "Unable to create source archive." msgstr "" #: Project.module:5156 msgid "Cannot copy file &1." msgstr "Dosya kopyalanamıyor: &1." #: Project.module:5204 msgid "Cannot create link &1." msgstr "&1 bağı oluşturulamadı." #: Project.module:5219 msgid "Cannot move a directory inside itself." msgstr "Dizin kendi içine taşınamaz." #: Project.module:5283 msgid "Cannot move file &1." msgstr "Dosya taşınamıyor: &1." #: Project.module:5496 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5978 msgid "Project cleanup..." msgstr "Proje temizliği..." #: Project.module:5984 msgid "Project files conversion..." msgstr "" #: Project.module:6014 msgid "Unable to convert &1" msgstr "" #: Project.module:6294 msgid "Unable to update forms." msgstr "Formlar güncellenemedi." #: Project.module:6384 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6386 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6477 msgid "Unable to read component description file." msgstr "" #: Project.module:6538 msgid "Cannot write component description file." msgstr "Bileşen tanımlama dosyası yazılamıyor." #: Project.module:6599 msgid "Project templates" msgstr "Proje taslakları" #: Project.module:6645 msgid "Unable to run terminal." msgstr "Uçbirim açılamadı." #: Save.module:57 msgid "Cannot save file !" msgstr "Dosya kaydedilemedi !" #: SoftwareBox.class:236 msgid "Published &1" msgstr "Yayınlandı &1" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "&1 KB" #: Util.module:10 msgid "&1 MiB" msgstr "&1 MB" #: Util.module:12 msgid "&1 GiB" msgstr "&1 GB" #: Util.module:46 msgid "Incorrect format" msgstr "Yanlış format" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "" #: VersionControl.module:555 msgid "Do you really want to put this project under version control with &1?" msgstr "Bu projeyi gerçekten &1 ile sürüm kontrolü altına almak istiyor musunuz?" #: VersionControl.module:569 msgid "The project could not be put under version control." msgstr "" #: VersionControl.module:654 msgid "Unable to switch to branch `&1`." msgstr "" #: VersionControl.module:676 msgid "With &1" msgstr "&1 kullanarak" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "Bu sayfa bu dilde mevcut değil." #: WikiMarkdown.class:142 msgid "Since" msgstr "Beri" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "Bu birleşen mevcut değil." #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "Bu sınıf mevcut değil." #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "Sembol mevcut değil." gambas-3.16.3/app/src/gambas3/.lang/zh.po000066400000000000000000005666051411575327000177310ustar00rootroot00000000000000# #-#-#-#-# CClassInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CClassInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CComponent.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CComponent.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolTabs.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CCoolTabs.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CPropertyInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CPropertyInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSymbolInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CSymbolInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CWizard.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/CWizard.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FCompletion.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FCompletion.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebugInfo.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FDebugInfo.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFormStack.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FFormStack.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconTool.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FIconTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMakeInstall.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FMakeInstall.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOutput.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FOutput.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyFile.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FPropertyFile.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FPropertyProject.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FPropertyProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSignature.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FSignature.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSupSelector.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FSupSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBar.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FToolBar.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FToolBox.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FToolBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Package.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/Package.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Save.pot (PACKAGE VERSION) #-#-#-#-# # /root/gambas-0.95/app/gambas/Save.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gambas3 3.15.90\n" "POT-Creation-Date: 2021-03-28 16:17 UTC\n" "PO-Revision-Date: 2020-11-18 18:22 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas 3" msgstr "" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Gambas集成开发环境" #: CBookmark.class:40 msgid "Define bookmark" msgstr "定义书签" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "清除所有书签" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "上一个书签" #: CBookmark.class:54 msgid "Next bookmark" msgstr "下一个书签" #: CClassInfo.class:615 msgid "Static properties" msgstr "静态属性" #: CClassInfo.class:616 msgid "Static variables" msgstr "静态变量" #: CClassInfo.class:617 msgid "Static methods" msgstr "静态方法" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "常量" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "属性" #: CClassInfo.class:636 msgid "Variables" msgstr "变量" #: CClassInfo.class:637 msgid "Methods" msgstr "方法" #: CClassInfo.class:638 msgid "Events" msgstr "事件" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "该类重载于&1" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "该类继承于&1" #: CClassInfo.class:668 msgid "in &1" msgstr "在&1中" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "在需要时,通过创建一个隐含的实例,该类可以像对象一样使用。" #: CClassInfo.class:681 msgid "This class is &1." msgstr "该类是&1。" #: CClassInfo.class:681 msgid "creatable" msgstr "可创建" #: CClassInfo.class:686 msgid "This class is static." msgstr "该类是静态类。" #: CClassInfo.class:688 msgid "This class is not creatable." msgstr "该类不可创建。" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "该类可以作为&1使用。" #: CClassInfo.class:694 msgid "function" msgstr "函数" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "该类的行为像一个&1/&2数组。" #: CClassInfo.class:699 msgid "read" msgstr "可读" #: CClassInfo.class:699 msgid "write" msgstr "可写" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "该类行为像一个&1数组。" #: CClassInfo.class:701 msgid "write-only" msgstr "只写" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "只读" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "用FOR EACH关键字&1该类。" #: CClassInfo.class:709 msgid "enumerable" msgstr "可枚举" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "该类重载于" #: CClassInfo.class:869 msgid "This class inherits" msgstr "该类继承于" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "该类是虚类" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "在需要时,通过创建一个隐含的实例,该类可以像对象一样使用。" #: CClassInfo.class:911 msgid "static function" msgstr "静态函数" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "该类的行为像一个&1/&2静态数组" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "该类的行为像一个&1静态数组" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "用&2关键字&1该类。" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "静态可枚举" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "正在加载&1组件信息..." #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "正在加载&1组件信息..." #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "类" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "类" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "描述" #: CComponent.class:598 msgid "This component is not stable yet." msgstr "该组件仍不稳定。" #: CComponent.class:600 msgid "This component is deprecated." msgstr "该组件已废弃。" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "作者" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "作者" #: CComponent.class:621 msgid "Implements" msgstr "实施" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "需要" #: CComponent.class:648 msgid "Excludes" msgstr "排除" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "内部本地类 " #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "程序参数分析" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Cairo图形库" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "绘制图表" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "基于Clipper库的多边形管理" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "复数管理" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "压缩和解压缩" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "bzlib2 压缩驱动" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "zlib 压缩驱动程序" #: CDocumentation.class:60 #, fuzzy msgid "zstd compression driver" msgstr "zlib 压缩驱动程序" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "MD5/DES/SHA加密" #: CDocumentation.class:62 msgid "More data containers" msgstr "更多数据容器" #: CDocumentation.class:63 msgid "Database access" msgstr "数据库存取" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "数据范围控制" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "MySQL数据库驱动" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "ODBC数据库驱动" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "PostgreSQL数据库驱动" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "SQLite 2数据库驱动" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "SQLite 3数据库驱动" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "应用程序调试助手" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "桌面管理组件" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "X-Window库支持" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "桌面管理组件的Gnome钥匙圈支持" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "D-Bus界面" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "表达式分析器" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "语法突出显示例程" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "图形组件的更多控件" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "标准对话框增强" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "带语法突出显示的文本编辑器" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "多文档界面" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "通用预览和打印窗口" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "默认图标主题" #: CDocumentation.class:84 msgid "Terminal emulator" msgstr "终端模仿器" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "GNU多倍精度运算库" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "GNU科学库" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "GTK+2工具箱" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL 编程(使用GTK+工具箱) " #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "GTK+3工具箱" #: CDocumentation.class:90 msgid "GTK+3 web browser component" msgstr "" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+切换组件" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "OpenGL 编程(QT/GTK+组件切换器) " #: CDocumentation.class:93 msgid "QT/GTK+ web browser switcher component" msgstr "" #: CDocumentation.class:94 msgid "QT4/QT5 switcher component" msgstr "QT4/QT5切换组件" #: CDocumentation.class:95 msgid "QT4/QT5 OpenGL switcher component" msgstr "QT4/QT5 OpenGL切换组件" #: CDocumentation.class:96 msgid "QT4/QT5 WebKit switcher component" msgstr "QT4/QT5 WebKit切换组件" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "系统托盘图标管理组件" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "嵌入式HTTP服务" #: CDocumentation.class:99 msgid "Image management" msgstr "图像管理" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "图像过滤组件" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "来自Imlib2库的图像程序" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "图像加载和保存" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "文件系统事件监视" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "基于libxml的XML工具" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "弹性日志系统" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "在线地图查看" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "Gambas简化标记语法" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "GStreamer多媒体组件" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "多媒体控件" #: CDocumentation.class:110 msgid "Memcached client" msgstr "Memcached客户端" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "基于GMime库的MIME格式管理" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "MySQL专用程序" #: CDocumentation.class:113 msgid "NCurses library" msgstr "NCurses库" #: CDocumentation.class:114 msgid "Network programming" msgstr "网络编程" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "高级网络协议管理" #: CDocumentation.class:116 msgid "POP3 client" msgstr "POP3客户端" #: CDocumentation.class:117 msgid "SMTP client" msgstr "SMTP客户机" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "OpenAL 3D音频库" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "OpenGL 3D编程" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "OpenGL公用组件" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "OpenGL渲染管理" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "基于MD2格式的简单OpenGL游戏引擎" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "OpenSSL库程序" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "GNU风格命令行参数分析程序" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "Perl兼容的正则表达式匹配" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "基于Poppler库的PDF演示器" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "QT4工具箱" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "QT4扩展工具箱" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "QT4 WebKit组件" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL 编程(使用QT4工具包) " #: CDocumentation.class:132 msgid "QT5 toolkit" msgstr "QT5工具箱" #: CDocumentation.class:133 msgid "QT5 WebKit component" msgstr "QT5 WebKit组件" #: CDocumentation.class:134 msgid "QT5 web browser component" msgstr "" #: CDocumentation.class:135 msgid "OpenGL with QT5 toolkit" msgstr "OpenGL 编程(使用QT5工具包) " #: CDocumentation.class:136 msgid "QT5 toolkit extension" msgstr "QT5工具箱扩展" #: CDocumentation.class:137 msgid "Report designer" msgstr "报表设计器" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "基于SANE的扫描仪管理库" #: CDocumentation.class:140 msgid "SDL library" msgstr "SDL库" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "SDL声音和CD-ROM管理" #: CDocumentation.class:142 msgid "SDL2 component" msgstr "SDL2组件" #: CDocumentation.class:143 msgid "SDL2 audio component" msgstr "SDL2音频组件" #: CDocumentation.class:144 msgid "Application settings management" msgstr "应用程序设置管理" #: CDocumentation.class:145 msgid "Signals management" msgstr "信号管理" #: CDocumentation.class:146 msgid "Terminal management" msgstr "终端管理" #: CDocumentation.class:147 msgid "Graphical terminal applications development" msgstr "图形终端应用开发" #: CDocumentation.class:148 msgid "Unit tests component" msgstr "单元测试组件" #: CDocumentation.class:149 msgid "Utility component" msgstr "公用组件" #: CDocumentation.class:150 msgid "Web applications utility component" msgstr "网页应用程序工具组件" #: CDocumentation.class:151 msgid "Video capture" msgstr "视频截取" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "Visual Basic兼容" #: CDocumentation.class:153 msgid "XML tools" msgstr "XML工具" #: CDocumentation.class:154 msgid "HTML generator" msgstr "HTML生成器" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "XML-RPC协议" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "基于libxslt和libxml的XSLT工具" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "Web应用程序工具" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "Web源解析器和生成器" #: CDocumentation.class:159 msgid "Web application development" msgstr "网页应用程序开发" #: CDocumentation.class:160 msgid "Web application development using processes as session" msgstr "使用进程作为会话的Web应用程序开发" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "图形化表单管理" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "事件循环管理" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "OpenGL显示" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "复数" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "XML管理" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "插入颜色" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 msgid "Insert today's date" msgstr "插入今天的日期" # gb-ignore #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "位置" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "警告!未找到库。" #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "提供" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "窗口" #: CModule.class:29 msgid "Forms" msgstr "窗口" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas窗口" #: CModule.class:30 msgid "Gambas web pages" msgstr "Gambas WEB页面" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "WEB页面" #: CModule.class:30 msgid "WebPages" msgstr "WEB页面" #: CModule.class:31 msgid "Gambas reports" msgstr "Gambas报表" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "报表" #: CModule.class:31 msgid "Reports" msgstr "报表" #: CModule.class:32 msgid "Gambas web forms" msgstr "Gambas 网页表单" #: CModule.class:32 FMain.form:980 FToolBox.class:36 msgid "WebForm" msgstr "Web窗体" #: CModule.class:32 msgid "WebForms" msgstr "Web窗体" #: CModule.class:33 msgid "Gambas terminal forms" msgstr "Gambas终端窗口" #: CModule.class:33 FMain.form:987 FToolBox.class:36 msgid "TermForm" msgstr "终端窗体" #: CModule.class:33 msgid "TermForms" msgstr "终端窗体" #: CProfile.class:114 msgid "Evaluator" msgstr "求值程序" #: CProfile.class:116 msgid "Event loop" msgstr "事件循环" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "示例文件都保存在Gambas农场服务器上。点击&1以访问农场服务器并下载它们..." #: CProjectList.class:108 msgid "here" msgstr "此处" #: CProjectList.class:234 msgid "IDE extensions" msgstr "IDE扩展" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "取消" #: CProjectList.class:553 msgid "Do you really want to uninstall this software?" msgstr "确定要卸载此软件吗?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "卸载" #: CProjectList.class:556 msgid "Unable to uninstall software:" msgstr "不能卸载软件:" #: CProjectList.class:560 msgid "The software has been successfully uninstalled." msgstr "软件被成功卸载。" #: CProjectTree.class:98 msgid "Files" msgstr "文件" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "项目" #: CProjectTree.class:373 msgid "Sources" msgstr "源代码" #: CProjectTree.class:375 msgid "Connections" msgstr "连接" #: CProjectTree.class:376 msgid "Public" msgstr "公共" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "数据" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "今天" #: CRecentProject.class:70 msgid "Yesterday" msgstr "昨日" #: CRecentProject.class:72 msgid "Two days ago" msgstr "前天" #: CRecentProject.class:74 msgid "This week" msgstr "本周" #: CRecentProject.class:76 msgid "This month" msgstr "本月" #: CSoftware.class:317 msgid "Download cancelled" msgstr "取消下载" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "下载包的校验无效。" #: CSoftware.class:342 msgid "Unable to uncompress source archive." msgstr "不能解压缩源码包。" #: CSoftware.class:361 msgid "Abort" msgstr "终止" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "忽略" #: CSoftware.class:361 msgid "The following components are required:" msgstr "需要下列组件:" #: CSoftware.class:389 msgid "Unable to compile the project." msgstr "不能编译项目。" #: CSoftware.class:396 msgid "Unable to make executable." msgstr "不能生成可执行文件。" #: CSoftware.class:465 msgid "Unable to install source directory" msgstr "不能安装源目录" #: CSoftware.class:664 msgid "yesterday" msgstr "昨日" #: CSoftware.class:666 msgid "&1 days ago" msgstr "&1天前" #: CSoftware.class:672 msgid "last week" msgstr "上周" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "&1周前" #: CSoftware.class:680 msgid "last month" msgstr "上个月" #: CSoftware.class:682 msgid "&1 months ago" msgstr "&1个月前" #: CSoftware.class:688 msgid "last year" msgstr "去年" #: CSoftware.class:690 msgid "on &1" msgstr "在&1" #: CVersionControlGit.class:341 msgid "Unable to push the project." msgstr "不能推送项目。" #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "本地根路径" #: CVersionControlGit.class:358 msgid "Last commit" msgstr "上次提交" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "上次提交作者" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "上次提交日期" #: CVersionControlGit.class:367 msgid "Current branch" msgstr "当前分支" #: CVersionControlGit.class:368 msgid "Origin" msgstr "源头" #: CVersionControlGit.class:375 msgid "The current branch is up to date." msgstr "当前分支是最新的。" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "提交到当前分支的一个文件。" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "提交&1文件到当前分支。" #: CVersionControlGit.class:386 msgid "None in the current project." msgstr "当前项目中没有。" #: CVersionControlGit.class:388 msgid "One in the current project." msgstr "在当前项目中。" #: CVersionControlGit.class:390 msgid "&1 in the current project." msgstr "&1在当前项目中。" #: CVersionControlGit.class:394 msgid "Status" msgstr "状态" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 msgid "Remote repository URL" msgstr "远程存储URL" #: CVersionControlGit.class:448 msgid "A new Git repository will be created for this project." msgstr "为此项目创建一个新的Git存储。" #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "确定" #: CVersionControlGit.class:486 msgid "Solve conflict." msgstr "解决冲突。" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "日期" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "修订版" #: CVersionControlSubversion.class:323 msgid "Remote revision" msgstr "远程修订" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "远程最近提交的作者" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "远程最近提交的日期" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "Gambas字体发布遵循SIL开放字体许可协议。" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "本程序发布遵循GNU通用公共许可协议。" #: Design.module:227 Project.module:2323 msgid "first" msgstr "第一步" #: Design.module:229 Project.module:2325 msgid "second" msgstr "第二步" #: Design.module:231 Project.module:2327 msgid "third" msgstr "第三步" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "程序被CTRL+C中断。" #: Design.module:464 msgid "The program has been terminated." msgstr "程序被终止。" #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" "程序返回\n" "值为:&1" #: Design.module:753 msgid "The project has no test module." msgstr "项目没有测试模块。" #: Design.module:1064 msgid "Output terminal" msgstr "输出终端" #: Design.module:1092 msgid "No terminal emulator found." msgstr "未找到终端仿真器。" #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "许可" #: FAbout.class:241 msgid "Financial support" msgstr "资金支持" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "(A)关于Gambas" #: FAbout.form:25 msgid "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, 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.\n" msgstr "本程序是自由软件;您可以根据自由软件基金会发布的GNU通用公共许可协议(第2版或者由您选择的任何更高版本)的条款重新发行或修改它。

发布此程序是希望它能有用,但不作任何责任担保;甚至没有对适销性或特定用途的适用性的默认责任担保。有关详细信息,请参阅GNU通用公共许可证。\n" #: FArguments.form:13 FMain.form:1799 msgid "Run with arguments" msgstr "带参数运行" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "重置" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "运行" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "关闭" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "颜色" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "选择颜色" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "系统" #: FColorChooser.form:40 msgid "Free" msgstr "剩余" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "稳定非最终版" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "实验性的" #: FComponentChooser.class:355 msgid "Stable" msgstr "稳定版" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "废弃" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "下列库需要该组件:

&1" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "下列库需要该组件:

&1" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "

&1需要该组件" #: FComponentChooser.class:589 msgid "Keep" msgstr "保留" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "全部移除" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "这些组件存在冲突:
&1。" #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr " &1组件需要下列组件之一 :
&2。" #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "&1组件需要&2组件。" #: FComponentChooser.form:26 FSelectComponent.form:12 msgid "Select a component" msgstr "选择组件" #: FComponentChooser.form:55 msgid "Show deprecated components" msgstr "显示不推荐的组件" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "重载" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "放大" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "缩小" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "无缩放" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "(&E)编辑" #: FConflict.class:14 msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "该文件冲突。必须解决冲突才能再次使用该文件。" #: FConflict.class:97 msgid "Unable to load file:" msgstr "不能加载文件:" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "文本" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "图像" #: FConflict.class:197 msgid "The file has been modified.\nDo you really want to close the dialog?" msgstr "文件已被修改。\n确定关闭对话框吗?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "一些冲突仍未解决。" #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "不能解决冲突。" #: FConflict.class:259 msgid "The file has been modified.\nDo you really want to open another file?" msgstr "文件已被修改。\n确定打开另一个文件吗?" #: FConflict.class:267 msgid "Conflict files" msgstr "冲突文件" #: FConflict.form:31 msgid "Version conflict" msgstr "版本冲突" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "剪切" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "复制" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "粘贴" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "撤消" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "重做" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "缩进" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "无缩进" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "打开" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "保存" #: FConflict.form:160 msgid "Solve" msgstr "(V)解决" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(声明)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "此文件中仍有冲突。" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "高级" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "大写" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "小写" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "注释" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "取消注释" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "特别粘贴" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "(A)全选" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "转到第...行" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "书签" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "查找下一个" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "查找上一个" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "查看" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 msgid "Automatic word wrap" msgstr "自动文字环绕" #: FConflictEditor.form:233 FTextEditor.form:300 msgid "Indent with tab" msgstr "用tab缩进" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "不拆分" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "水平拆分" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "垂直拆分" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "行结束符" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "视窗" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "MAC" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "打开代码" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "粘贴为字符串" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "粘贴为多行字符串" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "粘贴为注释" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "文本编辑器" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "代码" #: FConflictEditor.form:377 msgid "Conflict solved" msgstr "冲突已解决" #: FConflictEditor.form:510 msgid "Previous conflict" msgstr "上一个冲突" #: FConflictEditor.form:518 msgid "Next conflict" msgstr "下一个冲突" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "保留更改" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "接受改变" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "保留所有更改" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "接受所有改变" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "名称" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "类型" #: FConnectionEditor.class:61 msgid "Length" msgstr "长度" #: FConnectionEditor.class:66 msgid "Default value" msgstr "默认值" #: FConnectionEditor.class:71 msgid "Collation" msgstr "整理" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "索引" #: FConnectionEditor.class:87 msgid "Unique" msgstr "无重复" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "字段" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "SQL请求" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "不能连接到数据库。" #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "不要保存" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "表'&1'已被修改。是否保存?" #: FConnectionEditor.class:498 msgid "No record" msgstr "无记录" #: FConnectionEditor.class:500 msgid "One record" msgstr "一条记录" #: FConnectionEditor.class:502 msgid "&1 records" msgstr "&1条记录" #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "不能加载表'&1'。" #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "不能运行查询。" #: FConnectionEditor.class:722 Project.module:2643 #, fuzzy msgid "(in &1 s)" msgstr "在&1中" #: FConnectionEditor.class:755 msgid "unlimited" msgstr "无限制" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "布尔值" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "浮点数" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "整数" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "长整数" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "序列" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "字符串" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "该名称已经被使用。" #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "请输入一个数。" #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "长度必须大于1且小于255。" #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "类型错误。" #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "该名称已经存在。" #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "该字段被用于一个索引。" #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "表'&1'没有主键。" #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "不能写入表'&1'。" #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "确定要删除表'&1'吗?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "不能删除表'&1'。" #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "确定要删除选中的行吗?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "确定要删除该查询吗?" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "连接编辑器" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "显示系统表" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "新建表" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "删除表" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "移除" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "重命名表" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "(R)重命名" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "复制表" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "粘贴表" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "导入文本文件" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "导入" #: FConnectionEditor.form:217 msgid "Run query" msgstr "运行查询" #: FConnectionEditor.form:223 msgid "New query" msgstr "新建查询" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "新建" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "移除查询" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "清除" #: FConnectionEditor.form:309 msgid "Fields" msgstr "字段" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "添加" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "下" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "上" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "复制字段列表" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "索引" #: FConnectionEditor.form:389 msgid "New index" msgstr "新建索引" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "编辑(E)" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "导出到CSV文件" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "导出(E)" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "删除" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "全选" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "取消所选" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Gambas3项目转换" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "'&1'命令失败。" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "不能发送漏洞报告。" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "程序意外停止!" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "请描述如何复现这个崩溃。" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "Gambas解释器崩溃" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "通过电子邮件发送漏洞报告" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "不能将项目添加到电子邮件" #: FCreateFile.class:92 msgid "(No parent)" msgstr "无父类" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "不能添加文件。" #: FCreateFile.form:37 msgid "New file" msgstr "新建文件" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "选项" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "宽度" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "高度" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "对话框管理" #: FCreateFile.form:155 msgid "Parent class" msgstr "父类" #: FCreateFile.form:168 msgid "Exported" msgstr "导出" #: FCreateFile.form:174 msgid "Automatic instance" msgstr "自动线程" #: FCreateFile.form:180 msgid "Not creatable" msgstr "不能创建" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "自动扩展" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "项目校检失败。" #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "不能创建项目!" #: FCreateProject.class:172 msgid "Please choose a template" msgstr "请选择模板" #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "请输入存储的位置。" #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "新建项目" #: FCreateProject.form:46 msgid "Project type" msgstr "项目类型" #: FCreateProject.form:82 FProjectEditor.form:43 msgid "Parent directory" msgstr "父目录" #: FCreateProject.form:90 msgid "Project details" msgstr "项目细节" #: FCreateProject.form:99 msgid "Project name" msgstr "项目名" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "项目目录的名称为项目名。" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "项目最终目录为:" #: FCreateProject.form:134 msgid "Project title" msgstr "项目标题" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "应用程序的真实名称是项目名。" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "项目是可翻译的" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "在另一个窗口打开" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "存储于" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "项目软件库是使用'svn checkout'命令直接发送。" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "调试" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "控制台" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "断点" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "警告" #: FDebugButton.form:69 msgid "Notes" msgstr "注释" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "单元测试" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "版本控制" #: FDebugButton.form:96 FDebugInfo.form:450 msgid "Search result" msgstr "查找结果" #: FDebugExpr.class:4 msgid "not available" msgstr "不可用" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "值" # gb-ignore #: FDebugExpr.class:511 msgid "Key" msgstr "" #: FDebugExpr.class:517 msgid "Symbol" msgstr "符号" #: FDebugExpr.form:33 msgid "Watch" msgstr "监视" #: FDebugExpr.form:38 msgid "Print to console" msgstr "打印到控制台" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "显示所有标识" #: FDebugExpr.form:88 msgid "No element" msgstr "无元素" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "行" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "函数" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "文件" #: FDebugInfo.class:53 msgid "Col." msgstr "列。" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "消息" #: FDebugInfo.class:125 msgid "native code" msgstr "本地代码" #: FDebugInfo.class:205 msgid "Watch expressions" msgstr "监视表达式" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "确定要清除此表达式列表吗?" #: FDebugInfo.class:1112 msgid "File not loaded" msgstr "文件未加载" #: FDebugInfo.class:1255 msgid "Current object" msgstr "当前对象" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "局部变量" #: FDebugInfo.class:1563 msgid "Test has failed." msgstr "测试失败。" #: FDebugInfo.class:1568 #, fuzzy msgid "Test has succeeded." msgstr "测试失败。" #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "调试" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "移除当前表达式" #: FDebugInfo.form:137 msgid "Add expression" msgstr "添加表达式" #: FDebugInfo.form:210 msgid "Remove breakpoint" msgstr "移除断点" #: FDebugInfo.form:218 msgid "Disable breakpoint" msgstr "禁用断点" #: FDebugInfo.form:220 msgid "Disable" msgstr "禁用" #: FDebugInfo.form:226 msgid "Enable breakpoint" msgstr "断点可用" #: FDebugInfo.form:228 msgid "Enable" msgstr "可用" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "移除所有断点" #: FDebugInfo.form:284 msgid "Tasks" msgstr "任务" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "清除控制台" #: FDebugInfo.form:320 msgid "Run test" msgstr "运行测试" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "(C)提交" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "同步" #: FDebugInfo.form:397 FMain.form:532 msgid "Revert all changes" msgstr "还原所有修改" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "全部添加到软件库" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "取消当前搜索" #: FDebugInfo.form:474 msgid "Show search window" msgstr "显示查找窗口" #: FDebugInfo.form:481 msgid "Search again" msgstr "重新查找" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "未发现要查找的字符串。" #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "多列" #: FEditor.class:411 #, fuzzy msgid "Overwrite" msgstr "覆盖(&O)" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "格式化代码" #: FEditor.form:202 msgid "Sort procedures" msgstr "排序程序" #: FEditor.form:232 msgid "Go to" msgstr "转到" #: FEditor.form:251 msgid "Find definition" msgstr "查找定义" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "运行到当前行" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "切换断点" #: FEditor.form:322 msgid "Watch expression" msgstr "监视表达式" #: FEditor.form:331 msgid "Open form" msgstr "打开窗口" #: FEditor.form:338 FMain.form:1139 msgid "Run this class" msgstr "运行此类" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "锁定" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "打印" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "编辑器" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 msgid "Show modifications" msgstr "显示修改" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 msgid "Previous modification" msgstr "上一处修改" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 msgid "Next modification" msgstr "下一个修改" #: FEditor.form:572 FTextEditor.form:589 msgid "Insert special character" msgstr "插入特殊字符" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "美化代码" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "过程列表" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "锁定/解锁文件" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV文件" #: FExportData.class:113 msgid "Unable to export data." msgstr "不能导出数据。" #: FExportData.class:126 msgid "&Overwrite" msgstr "覆盖(&O)" #: FExportData.class:126 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "该文件已经存在。\n\n是否覆盖?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "定界字符" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "包围字符" #: FExportData.form:54 msgid "Export field names" msgstr "导出字段名" #: FExportData.form:60 msgid "Export selected records only" msgstr "仅导出选中的记录" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "农场服务器" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "验证失败。" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "登陆" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "服务器" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "用户" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "密码" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "记住口令" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "匿名" #: FFarmRegister.class:28 msgid "Please enter a valid e-mail address." msgstr "请输入有效的电子邮件地址。" #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "确认密码不匹配。" #: FFarmRegister.class:40 msgid "Unable to register user." msgstr "不能注册用户。" #: FFarmRegister.class:40 msgid "You have been successfully registered.\n\nYou will receive a confirmation e-mail soon." msgstr "已成功注册。\n\n马上会收到一封确认电子邮件。" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "注册" #: FFarmRegister.form:92 msgid "Confirm password" msgstr "确认密码" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "电子邮件" #: FFarmRegister.form:121 msgid "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n

\nYour e-mail will not be stored on the publishing server." msgstr "一封确认邮件将被发送到指定的电子邮箱地址。单击该邮件中的链接以便激活账户。\n

\n该电子邮箱将不会被存储于发布服务器。" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "不能打开连接。" #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "不能获取表的字段。" #: FFieldChooser.class:67 msgid "Edit field list" msgstr "编辑字段列表" #: FFieldChooser.class:70 msgid "Select a field" msgstr "选择字段" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "连接" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "表" #: FFileInfoVC.class:30 msgid "'&1' version control" msgstr "'&1'版本控制" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "该文件已被锁定,并将在下次提交时被删除。" #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "该文件未被版本记录,必须添加到软件库。" #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "该文件自最近的提交后没有被修改。" #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "继续" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "改变将被取消!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "改变" #: FFileInfoVC.form:44 FVersionControl.form:52 msgid "History" msgstr "历史" #: FFileInfoVC.form:64 msgid "Undo changes" msgstr "撤销变更" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" # gb-ignore #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "Gambas模块" #: FFileProperty.class:39 msgid "Gambas test module" msgstr "Gambas测试模块" #: FFileProperty.class:41 msgid "Gambas class" msgstr "Gambas类" #: FFileProperty.class:81 msgid "'&1' properties" msgstr "'&1'属性" #: FFontChooser.form:12 msgid "Select a font" msgstr "选择字体" #: FForm.class:136 msgid "Bad form file" msgstr "错误的表单文件" #: FForm.class:284 msgid "Unknown control: &1" msgstr "未知的控件: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "对于控件&1缺失组件" #: FForm.class:1923 msgid "Cannot paste data." msgstr "不能粘贴数据。" #: FForm.form:178 msgid "Copy at the same place" msgstr "复制到相同位置" #: FForm.form:198 msgid "Delete container only" msgstr "仅删除容器" #: FForm.form:205 msgid "Embed into a container" msgstr "嵌入容器" #: FForm.form:211 msgid "Change into" msgstr "变成" #: FForm.form:219 msgid "Select" msgstr "选择" #: FForm.form:232 msgid "Select parent" msgstr "选择父容器" #: FForm.form:245 msgid "Arrangement" msgstr "排列" #: FForm.form:249 msgid "Bring to foreground" msgstr "升到顶层" #: FForm.form:256 msgid "Send to background" msgstr "置于底层" #: FForm.form:266 msgid "Horizontal" msgstr "水平" #: FForm.form:273 msgid "Rows" msgstr "行数" #: FForm.form:279 msgid "Vertical" msgstr "竖直" #: FForm.form:286 msgid "Columns" msgstr "多列" #: FForm.form:295 msgid "Center horizontally" msgstr "横向居中" #: FForm.form:301 msgid "Center vertically" msgstr "纵向居中" #: FForm.form:307 msgid "Alignment" msgstr "对齐" #: FForm.form:311 msgid "Align to left" msgstr "左端对齐" #: FForm.form:317 msgid "Align to right" msgstr "右端对齐" #: FForm.form:323 msgid "Align to top" msgstr "顶端对齐" #: FForm.form:329 msgid "Align to bottom" msgstr "底端对齐" #: FForm.form:338 msgid "Same width" msgstr "同宽" #: FForm.form:344 msgid "Same height" msgstr "同高" #: FForm.form:353 msgid "Show tab" msgstr "显示标签页" #: FForm.form:361 msgid "Move tab" msgstr "移动标签页" #: FForm.form:366 msgid "First" msgstr "第一页(F)" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "上一个(P)" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "(N)下一个" #: FForm.form:387 msgid "Last" msgstr "最后一页(L)" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "菜单编辑器" #: FForm.form:407 msgid "Event" msgstr "事件" #: FForm.form:421 msgid "Run this form" msgstr "运行此窗体" #: FForm.form:601 msgid "Toggle grid" msgstr "切换网格" #: FForm.form:610 FImageEditor.form:514 msgid "Toggle information tooltip" msgstr "切换工具提示信息" #: FForm.form:729 msgid "Move tab first" msgstr "移动标签页到起始" #: FForm.form:736 msgid "Move tab left" msgstr "向左移动标签页" #: FForm.form:743 msgid "Move tab right" msgstr "向右移动标签页" #: FForm.form:750 msgid "Move tab last" msgstr "移动标签页到末尾" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "粗体" #: FForm.form:786 msgid "Italic" msgstr "斜体" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "下划线" #: FForm.form:802 msgid "Bigger font" msgstr "更大字体" #: FForm.form:810 msgid "Smaller font" msgstr "更小字体" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "默认字体" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "背景色" #: FForm.form:834 msgid "Foreground" msgstr "前景色" #: FForm.form:845 msgid "Lock / unlock form" msgstr "锁定/解锁窗体" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "层次" #: FFormStack.form:24 msgid "Move top" msgstr "升到顶层" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "上移" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "下移" #: FFormStack.form:42 msgid "Move bottom" msgstr "降到底层" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "默认语言" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "(H)帮助浏览器" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "显示帮助树" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "后退" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "前进" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "IDE快捷键" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "调试器" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "翻译成:" #: FImageEditor.form:159 msgid "Action" msgstr "动作" #: FImageEditor.form:164 msgid "Crop" msgstr "裁剪" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "水平翻转" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "垂直翻转" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "逆时针旋转" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "顺时针旋转" #: FImageEditor.form:205 msgid "Resize" msgstr "改变大小" #: FImageEditor.form:212 msgid "Rotate" msgstr "旋转" #: FImageEditor.form:229 msgid "Hide selection" msgstr "隐藏选中" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "选择" #: FImageEditor.form:240 msgid "Invert selection" msgstr "反转选中" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "复制选中" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "偏移选中" #: FImageEditor.form:266 msgid "Union" msgstr "联合" #: FImageEditor.form:272 msgid "Difference" msgstr "不同之处" #: FImageEditor.form:278 msgid "Intersection" msgstr "交集" #: FImageEditor.form:284 msgid "Exclusive or" msgstr "异或" #: FImageEditor.form:293 msgid "Shape grid" msgstr "形状栅格" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "正常缩放" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "自适应缩放" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "保存为JPEG" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "保存为PNG" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "保存为BMP" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "保存为TIFF" #: FImageEditor.form:427 msgid "Image editor" msgstr "图像编辑器" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "绘制栅格" #: FImageEditor.form:557 msgid "Move" msgstr "移动" #: FImageEditor.form:568 msgid "Draw" msgstr "绘图" #: FImageEditor.form:578 msgid "Erase" msgstr "擦除" #: FImageEditor.form:598 msgid "Rectangle" msgstr "矩形" #: FImageEditor.form:608 msgid "Ellipse" msgstr "椭圆形" #: FImageEditor.form:628 msgid "Magic wand" msgstr "魔杖" #: FImageEditor.form:645 msgid "Edit selection" msgstr "编辑选中" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "改变大小或拉伸图像" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "旋转图像" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "边界" #: FImageProperty.class:790 msgid "System clipboard" msgstr "系统剪贴板" #: FImageProperty.class:1269 msgid "Arrow" msgstr "箭头" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "箭头2" #: FImageProperty.class:1272 msgid "Triangle" msgstr "三角形" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "直角三角形" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "五边形" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "六边形" #: FImageProperty.form:173 msgid "Gradient" msgstr "梯度" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "线性梯度" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "径向梯度" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "添加梯度固定点" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "移除梯度固定点" #: FImageProperty.form:232 FReportBrushChooser.form:99 msgid "Select gradient stop color" msgstr "选择渐变终止色" #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "反转梯度" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "半径" #: FImageProperty.form:327 msgid "Clipboard" msgstr "剪贴板" #: FImageProperty.form:339 msgid "Shapes" msgstr "形状" #: FImageProperty.form:364 msgid "Stroke" msgstr "笔划" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "填充" #: FImageProperty.form:392 msgid "Colorize" msgstr "上色" #: FImageProperty.form:400 msgid "Desaturate" msgstr "饱和度" #: FImageProperty.form:408 msgid "Make transparent" msgstr "变透明" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "反转深色主题的颜色" #: FImageProperty.form:426 msgid "Line cap" msgstr "顶线" #: FImageProperty.form:431 msgid "Line join" msgstr "连接线" #: FImageProperty.form:436 msgid "Fill rule" msgstr "填充规则" #: FImageProperty.form:454 msgid "Opacity" msgstr "不透明" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "大小" #: FImageProperty.form:490 msgid "Tolerance" msgstr "容差" #: FImageProperty.form:509 msgid "Roundness" msgstr "圆度" #: FImageProperty.form:535 msgid "Effects" msgstr "效果" #: FImageProperty.form:545 msgid "Brightness" msgstr "亮度" #: FImageProperty.form:564 msgid "Contrast" msgstr "对比度" #: FImageProperty.form:583 msgid "Gamma" msgstr "反衬度" #: FImageProperty.form:602 msgid "Lightness" msgstr "明度" #: FImageProperty.form:621 msgid "Hue" msgstr "色调" #: FImageProperty.form:640 msgid "Saturation" msgstr "饱和度" #: FImageProperty.form:659 msgid "Blur" msgstr "模糊" #: FImageProperty.form:676 msgid "Transparency" msgstr "透明度" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "预览" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "应用" #: FImageProperty.form:745 msgid "Centered" msgstr "居中" #: FImageProperty.form:755 msgid "Right align" msgstr "右端对齐" #: FImageProperty.form:764 msgid "Left align" msgstr "左端对齐" #: FImageProperty.form:777 msgid "Top align" msgstr "顶端对齐" #: FImageProperty.form:786 msgid "Middle align" msgstr "居中对齐" #: FImageProperty.form:796 msgid "Baseline align" msgstr "基线对齐" #: FImageProperty.form:805 msgid "Bottom align" msgstr "底端对齐" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "网格分辨率" #: FImageProperty.form:859 msgid "Grid snap" msgstr "栅格捕捉" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "绘制对角线" #: FImageQuality.form:10 msgid "Image quality" msgstr "图像质量" #: FImageResize.form:25 msgid "Resize image" msgstr "调整图像大小" #: FImageResize.form:64 msgid "Resize and center" msgstr "调整图像大小并居中" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "调整图像大小并水平居中" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "调整图像大小并纵向居中" #: FImageResize.form:85 msgid "Stretch image" msgstr "拉伸图像" #: FImageResize.form:113 msgid "Add a border" msgstr "添加边框" #: FImageResize.form:118 msgid "Ratio" msgstr "比率" # gb-ignore #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas类" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas模块" #: FImportFile.class:24 msgid "Gambas test modules" msgstr "Gambas测试模块" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "级联式工作表" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML文件" #: FImportFile.class:33 msgid "Javascript files" msgstr "Java脚本文件" #: FImportFile.class:33 msgid "Picture files" msgstr "图片文件" #: FImportFile.class:188 msgid "Cannot import file." msgstr "不能导入文件。" #: FImportFile.form:9 msgid "Import files" msgstr "导入文件" #: FImportFile.form:24 msgid "Create symbolic links" msgstr "创建符号链接" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "所有文件" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(自动Key)" #: FImportTable.class:276 msgid "Field_&1" msgstr "字段_&1" #: FImportTable.class:391 msgid "Not enough values" msgstr "没有足够的值" #: FImportTable.class:393 msgid "Too many values" msgstr "太多的值" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "用户取消" #: FImportTable.class:427 msgid "No record imported." msgstr "无导入记录。" #: FImportTable.class:429 msgid "One record imported." msgstr "一条导入记录。" #: FImportTable.class:431 msgid "&1 records imported." msgstr "&1 记录已导入." #: FImportTable.form:35 msgid "Import file" msgstr "导入文件" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "选择导入的CSV文件" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "源" #: FImportTable.form:78 msgid "Charset" msgstr "字符集" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "剔除无用的空白" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "忽略首行" #: FImportTable.form:139 msgid "Line(s)" msgstr "行" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "目标" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "第一行包含字段名" #: FImportTable.form:176 msgid "Key field" msgstr "Key字段" #: FLayout.class:24 msgid "Please enter the name of the layout." msgstr "请输入布局名称。" #: FLayout.class:30 FOption.class:1716 msgid "Override" msgstr "覆盖" #: FLayout.class:30 msgid "This layout already exists." msgstr "该布局已经存在。" #: FLayout.form:14 msgid "Save layout" msgstr "保存布局" #: FLayout.form:22 msgid "Layout name" msgstr "布局名称" #: FList.class:103 msgid "Item &1" msgstr "条目&1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "确定要清除列表吗?" #: FList.form:25 msgid "Edit list property" msgstr "编辑列表属性" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "插入" #: FList.form:87 msgid "Invert" msgstr "反转" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "确定删除该链接吗?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "确定要删除此目录吗?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "确定要删除此文件吗?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "不能复制文件或目录" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "文件或目录不再存在。" #: FMain.class:773 msgid "Sort history" msgstr "排序历史" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "按日期排序" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "按名称排序" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "按路径排序" #: FMain.class:789 msgid "&Clear history" msgstr "(&C)清除历史" #: FMain.class:969 msgid "New folder" msgstr "新建目录" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "系统没有安装GNU翻译工具。\n" "\n" "请安装它们以便进行翻译。" #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "不能将文件拖入项目。" #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "从项目目录中删除所有备份文件和生成的文件。" #: FMain.class:1904 msgid "Clean" msgstr "清理" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "确定添加所有文件到软件库吗?" #: FMain.class:2359 msgid "Choose a profile" msgstr "选取一个profile" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "&1项目的profile" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "选择文件" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "该文件位于项目内部。" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "此文件己被修改。\n" "\n" "所做的改变将会丢失。" #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "打开项目" #: FMain.form:313 msgid "Open recent" msgstr "打开最近的" #: FMain.form:321 msgid "Open example" msgstr "(E)打开范例" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "打开文件" #: FMain.form:339 msgid "Save project" msgstr "保存项目" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "另存项目" #: FMain.form:358 msgid "Reload project" msgstr "重载项目" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "退出" #: FMain.form:402 Project.module:6969 msgid "Save as" msgstr "另存" #: FMain.form:442 msgid "Compile" msgstr "编译" #: FMain.form:449 msgid "Compile All" msgstr "(A)全部编译" #: FMain.form:459 msgid "Translate" msgstr "翻译" #: FMain.form:468 msgid "Make" msgstr "编译" #: FMain.form:472 msgid "Executable" msgstr "(X)可执行文件" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "(S)源归档文件" #: FMain.form:486 msgid "Installation package" msgstr "(I)安装包" #: FMain.form:493 msgid "Patch" msgstr "补丁" #: FMain.form:496 msgid "Create" msgstr "创建" #: FMain.form:525 msgid "Undo synchronization" msgstr "撤销同步" #: FMain.form:544 msgid "Branch" msgstr "分支" #: FMain.form:549 msgid "Put under version control" msgstr "置于版本控制之下" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "发布" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "清理" #: FMain.form:570 msgid "Refresh" msgstr "(R)刷新" #: FMain.form:599 msgid "Run with" msgstr "运行于" #: FMain.form:607 msgid "Test" msgstr "测试" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "测试套件" #: FMain.form:623 msgid "Pause" msgstr "暂停" #: FMain.form:630 msgid "Stop" msgstr "停止" #: FMain.form:637 msgid "Step" msgstr "步进" #: FMain.form:644 msgid "Forward" msgstr "前进" #: FMain.form:651 msgid "Finish" msgstr "(H)结束" #: FMain.form:660 msgid "Use terminal emulator" msgstr "使用终端仿真器" #: FMain.form:666 msgid "Redirect standard error output" msgstr "重定向标准错误输出" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "使用嵌入式HTTP服务" #: FMain.form:681 msgid "Invert language orientation" msgstr "颠倒语言方向" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "禁用实时编译器" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "显示实时编译器调试信息" #: FMain.form:702 msgid "Show database requests" msgstr "显示数据库请求" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "GUI组件" #: FMain.form:713 msgid "Current desktop" msgstr "当前桌面" #: FMain.form:750 msgid "Activate profiling" msgstr "激活profile" #: FMain.form:756 msgid "Open profile" msgstr "打开profile" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "(A)清除全部断点" #: FMain.form:770 msgid "Close all debug windows" msgstr "(D)关闭所有调试窗口" #: FMain.form:808 msgid "Status bar" msgstr "状态条" #: FMain.form:815 msgid "Hide menubar" msgstr "隐藏菜单条" #: FMain.form:839 msgid "Close all windows" msgstr "(A)关闭所有窗口" #: FMain.form:846 msgid "Tools" msgstr "工具" #: FMain.form:850 msgid "Find" msgstr "查找(F)" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "替换" #: FMain.form:866 msgid "Browse project" msgstr "(B)浏览项目" #: FMain.form:873 msgid "Open a terminal" msgstr "(O)打开一个终端" #: FMain.form:880 msgid "Send project by mail" msgstr "通过电子邮件发送项目" #: FMain.form:886 msgid "Update all forms" msgstr "刷新全部窗体" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "软件农场" #: FMain.form:904 msgid "Shortcuts" msgstr "快捷键" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "首选项" #: FMain.form:924 msgid "Directory" msgstr "目录" #: FMain.form:929 msgid "Project link" msgstr "项目链接" #: FMain.form:938 msgid "Module" msgstr "模块" #: FMain.form:945 msgid "Test module" msgstr "测试模块" #: FMain.form:1004 msgid "HTML file" msgstr "HTML文件" #: FMain.form:1011 msgid "Style sheet" msgstr "样式表" #: FMain.form:1018 msgid "Javascript file" msgstr "Java脚本文件" #: FMain.form:1025 msgid "Other" msgstr "其它(O)" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "最近" #: FMain.form:1059 msgid "Open in file manager" msgstr "在文件管理器中打开" #: FMain.form:1064 msgid "Open in project" msgstr "在项目中打开" #: FMain.form:1068 msgid "Open with" msgstr "用...打开" #: FMain.form:1100 msgid "Duplicate" msgstr "复制" #: FMain.form:1123 msgid "Copy file path" msgstr "(H)复制文件路径" #: FMain.form:1132 msgid "Startup class" msgstr "(S)启动类" #: FMain.form:1147 msgid "Add to repository" msgstr "添加到软件库" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "过滤器" #: FMain.form:1155 msgid "Show exported classes" msgstr "显示输出类" #: FMain.form:1160 msgid "Show added files" msgstr "显示添加的文件" #: FMain.form:1165 msgid "Show modified files" msgstr "显示被修改的文件" #: FMain.form:1170 msgid "Show files in conflict" msgstr "显示冲突文件" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "显示添加的文件" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "压缩文件" #: FMain.form:1188 msgid "Show all" msgstr "全部显示" #: FMain.form:1200 msgid "Do not translate" msgstr "不要翻译" #: FMain.form:1207 msgid "Compress all" msgstr "全部压缩" #: FMain.form:1213 msgid "Uncompress all" msgstr "全部解压缩" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "不能生成可执行文件。" #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "压缩文件" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "新建连接" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "帮助" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "今日知识" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "快捷键" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "系统信息" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "项目属性" #: FMain.form:1429 msgid "Refresh project" msgstr "刷新项目" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "制作可执行文件" #: FMain.form:1471 msgid "Make source archive" msgstr "生成源归档文件" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "生成安装包" #: FMain.form:1500 msgid "Properties sheet" msgstr "属性页" #: FMain.form:1509 msgid "Toolbox" msgstr "工具箱" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "查找" #: FMain.form:1551 msgid "Compile all" msgstr "全部编译" #: FMain.form:1600 msgid "Finish current function" msgstr "结束当前函数或过程" #: FMain.form:1616 msgid "Show menubar" msgstr "显示菜单条" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "发布软件" #: FMain.form:1706 msgid "&File" msgstr "(&F)文件" #: FMain.form:1730 msgid "&Project" msgstr "(&P)项目" #: FMain.form:1742 msgid "&Debug" msgstr "(&D)调试" #: FMain.form:1754 msgid "&View" msgstr "(&V)视图" #: FMain.form:1766 msgid "&Tools" msgstr "(&T)工具" #: FMain.form:1778 msgid "&?" msgstr "(&H)帮助" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "根据继承处理类文件" #: FMain.form:1908 msgid "Show project tree" msgstr "显示项目树" #: FMain.form:1916 msgid "Show properties sheet" msgstr "显示属性表" #: FMain.form:1987 msgid "Show property help" msgstr "显示属性帮助" #: FMain.form:1995 msgid "Show controls" msgstr "显示控件" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas应用程序" #: FMakeExecutable.form:60 msgid "Increment version" msgstr "增加版本号" #: FMakeExecutable.form:71 #, fuzzy msgid "Set version to" msgstr "项目版本控制" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "在可执行文件中保留调试信息" #: FMakeExecutable.form:109 #, fuzzy msgid "Compress files in executable" msgstr "压缩文件" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "创建桌面快捷方式" #: FMakeExecutable.form:119 msgid "Exclude test modules" msgstr "排除测试模块" #: FMakeExecutable.form:135 #, fuzzy msgid "Run this shell command after" msgstr "随后运行命令:" #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "包" #: FMakeInstall.class:137 msgid "Min. version" msgstr "最低版本" #: FMakeInstall.class:138 msgid "Max. version" msgstr "最大版本" #: FMakeInstall.class:144 msgid "File or directory" msgstr "文件或目录" #: FMakeInstall.class:294 msgid "Creating packages..." msgstr "正在创建代码包..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "建包成功。" #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "请输入你的姓名。" #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "请输入你的电子邮件地址。" #: FMakeInstall.class:360 msgid "Please enter the vendor name." msgstr "请输入厂商名。" #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "本次发布没有更新日志。" #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "请输入第一个更改记录项。" #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "请选择至少一个发行目标。" #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "请为每个发行目标选择包所属的组。" #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "请选择包所属的组。" #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "请为每个发行目标选择菜单位置。" #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "请选择菜单位置。" #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "不能找到附加文件:&1" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "请选择每个附加文件的目标目录。" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "Debian 安装包系统不能处理文件名中的空格。" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "Debian 安装包系统不能处理目录中的空格。" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "包不能保存在项目目录内。" #: FMakeInstall.class:558 msgid "Initial release" msgstr "首次发布" #: FMakeInstall.class:814 msgid "Menus" msgstr "菜单" #: FMakeInstall.class:882 msgid "Groups" msgstr "组" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "错误的字符" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "确定要移除所有附加从属部分吗?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "确定要移除所有附加文件吗?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "选择目的目录" #: FMakeInstall.form:151 msgid "Create package" msgstr "创建包" #: FMakeInstall.form:154 msgid "Package information" msgstr "包信息" #: FMakeInstall.form:160 msgid "Package name" msgstr "包名称" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "将厂家名作为包的前缀名" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "添加主版本号到包名称" #: FMakeInstall.form:205 msgid "Package version" msgstr "包版本" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "生产厂商名称" #: FMakeInstall.form:241 FOption.form:378 msgid "Vendor prefix" msgstr "生产厂商前缀" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "维护者信息" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "URL" #: FMakeInstall.form:344 msgid "Changelog" msgstr "变更日志" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "目标发行版" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "自解压缩" #: FMakeInstall.form:612 msgid "Package group" msgstr "包组" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "菜单条目" #: FMakeInstall.form:654 msgid "Categories" msgstr "类别" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "桌面配置文件" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "MIME 类型" #: FMakeInstall.form:677 msgid "Enter the mimetypes handled by your application there.\nPlease enter one mimetype by line.\n" msgstr "输入被应用程序处理的mime类型。\n请输入一个mimie类型行。\n" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "附加配置" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "下列内容将被添加到桌面配置文件末尾。" #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "附加从属部分" #: FMakeInstall.form:714 msgid "Minimum Gambas version" msgstr "最低Gambas版本" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "对所有目标使用相同的从属部分" #: FMakeInstall.form:786 msgid "Extra files" msgstr "附加文件" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "对所有目标使用相同的文件" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "附加文件必须被放在当前项目的项目文件夹中,例如磁盘上项目的.hidden目录。" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "附加autoconf测试" #: FMakeInstall.form:867 msgid "Add extra tests for the configuration process.\n

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "为配置进程添加附加测试。\n

如果你不需要或者对autoconf脚本一窍不通的就保留这个空白。" #: FMakeInstall.form:875 msgid "Destination directory" msgstr "目标目录" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "为每个发布创建目录" #: FMakeInstall.form:915 msgid "Commands output" msgstr "命令输出" #: FMakeInstall.form:961 msgid "Create package now" msgstr "立即创建包" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "请选择原始归档。" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "请选择原始项目。" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "请输入补丁文件名。" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "成功生成补丁。" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "不能生成补丁。" #: FMakePatch.form:21 msgid "Generate patch" msgstr "生成补丁" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "选择原始补丁" #: FMakePatch.form:46 msgid "Patch origin" msgstr "原始补丁" #: FMakePatch.form:59 msgid "Project directory" msgstr "项目目录" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "自动生成补丁名" #: FMakePatch.form:76 msgid "Edit patch" msgstr "编辑补丁" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "该向导将创建一个从原始项目到当前项目的补丁。" #: FMakePatch.form:91 msgid "Select source archive" msgstr "选择源归档" # gb-ignore #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "源代码包" #: FMakePatch.form:101 msgid "Select project directory" msgstr "选择项目目录" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "选取补丁文件名" # gb-ignore #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "补丁/差别文件" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "创建代码包" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "菜单已被修改!" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "请输入菜单名称。" #: FMenu.class:346 msgid "Bad menu name !" msgstr "错误的菜单名!" #: FMenu.class:352 msgid "Bad group name !" msgstr "错误的组名!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "此菜单太深!" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "已修改" #: FMenu.form:86 msgid "Insert menu" msgstr "插入菜单" #: FMenu.form:95 msgid "Insert separator" msgstr "插入分隔符" #: FMenu.form:104 msgid "Insert menu before" msgstr "在前面插入菜单" #: FMenu.form:107 msgid "Insert before" msgstr "在前面插入" #: FMenu.form:113 msgid "Delete menu" msgstr "删除菜单" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "在前面插入" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "点击插入以添加新菜单。" #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "请输入数据库的名称。" #: FNewConnection.class:145 msgid "Please enter password" msgstr "请输入口令" #: FNewConnection.class:147 msgid "Connection properties" msgstr "连接属性" #: FNewConnection.class:178 msgid "Select a directory" msgstr "选择目录" #: FNewConnection.class:229 msgid "Create database" msgstr "创建数据库" #: FNewConnection.class:241 msgid "Delete database" msgstr "删除数据库" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "不能创建数据库。" #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "确定要删除数据库'&1'吗?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "不能删除数据库。" #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "主机" #: FNewConnection.form:124 msgid "Path" msgstr "路径" #: FNewConnection.form:154 msgid "No password" msgstr "无口令" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "数据库" #: FNewConnection.form:241 msgid "From" msgstr "从" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "忽略数据库字符集" #: FNewConnection.form:279 msgid "Display metadata" msgstr "显示元数据" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "记住数据库结构" #: FNewTable.class:33 msgid "Create table" msgstr "创建表" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "请输入新建表的名称。" #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "表'&1'已经存在。" #: FNewTranslation.form:10 msgid "New translation" msgstr "新建翻译" #: FOpenProject.form:22 msgid "Select a project" msgstr "选择项目" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "例子" #: FOption.class:4 msgid "Amber" msgstr "琥珀" #: FOption.class:4 msgid "Amethyst" msgstr "紫水晶" #: FOption.class:4 msgid "Blues" msgstr "蓝调" #: FOption.class:4 msgid "Emerald" msgstr "祖母绿" # gb-ignore #: FOption.class:4 msgid "Gambas" msgstr "" #: FOption.class:4 msgid "Obsidian" msgstr "黑曜石" #: FOption.class:4 msgid "Pastel" msgstr "彩笔" #: FOption.class:4 msgid "Quest" msgstr "探索" #: FOption.class:4 msgid "Quick" msgstr "敏捷" #: FOption.class:4 msgid "Ruby" msgstr "红宝石" #: FOption.class:4 msgid "Sapphire" msgstr "蓝宝石" #: FOption.class:4 msgid "Visual" msgstr "可视化的" #: FOption.class:4 msgid "Zen" msgstr "禅" #: FOption.class:9 FTestSuite.class:32 msgid "Default" msgstr "默认" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "定制" #: FOption.class:91 msgid "Desktop" msgstr "桌面" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(默认)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "Gambas突出主题文件" #: FOption.class:267 msgid "Export a theme file" msgstr "导出主题到文件" #: FOption.class:498 msgid "Select a theme file" msgstr "选择主题文件" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "需要重启应用程序使改变生效。" #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "确定要清除文档缓存吗?" #: FOption.class:863 msgid "Unable to clear documentation cache." msgstr "不能清除文档缓存。" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "确定要删除该片段吗?" #: FOption.class:1224 msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "确定要安装Gambas字体到私人字体目录中吗?" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "安装" #: FOption.class:1310 msgid "Network is not available." msgstr "网络不可用。" #: FOption.class:1315 msgid "Documentation is up to date." msgstr "文档已是最新。" #: FOption.class:1320 msgid "A new documentation is available!" msgstr "有新文档可用!" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "文档不可用。" #: FOption.class:1507 msgid "Cannot download '&1'." msgstr "不能下载'&1'。" #: FOption.class:1538 msgid "Unable to uncompress documentation." msgstr "不能解压缩文档。" #: FOption.class:1549 msgid "Unable to install documentation." msgstr "不能安装说明文挡。" #: FOption.class:1659 msgid "Compact" msgstr "紧凑" #: FOption.class:1674 msgid "Current" msgstr "当前" #: FOption.class:1716 msgid "Do you really want to override the existing layout?" msgstr "确定要覆盖现有布局吗?" #: FOption.class:1814 msgid "Do you really want to delete that layout?" msgstr "确实要删除该布局吗?" #: FOption.form:295 msgid "Dotted" msgstr "点线" #: FOption.form:306 msgid "Identity" msgstr "身份" #: FOption.form:350 msgid "Package maintainer" msgstr "包维护者" #: FOption.form:395 msgid "Default license" msgstr "默认许可协议" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "否" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "是" #: FOption.form:439 msgid "Projects" msgstr "项目" #: FOption.form:456 msgid "Default tab size" msgstr "默认的TAB大小" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "个空格" #: FOption.form:482 msgid "Indent with tab by default" msgstr "默认用tab缩进" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "默认自动文字环绕" #: FOption.form:516 msgid "Activate version control" msgstr "激活版本控制" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "加载项目时恢复文件" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "编译" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "置于底层" #: FOption.form:569 msgid "Images" msgstr "图像" #: FOption.form:581 msgid "Compress PNG images with " msgstr "压缩PNG图像借助" #: FOption.form:615 msgid "Automatic translation with " msgstr "自动翻译借助" #: FOption.form:644 msgid "Translation engine" msgstr "翻译引擎" #: FOption.form:653 msgid "Help & applications" msgstr "帮助与应用" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "帮助" #: FOption.form:670 msgid "Show documentation in popups" msgstr "在弹出窗口显示文档" #: FOption.form:687 msgid "Always display optional messages" msgstr "总是显示可选信息" #: FOption.form:699 msgid "Documentation" msgstr "文档" #: FOption.form:710 msgid "Use offline documentation" msgstr "使用离线文档" #: FOption.form:740 msgid "Download documentation" msgstr "下载文档" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "代理配置" #: FOption.form:779 msgid "Clear documentation cache" msgstr "清除文档缓存" #: FOption.form:787 msgid "Applications" msgstr "程序" #: FOption.form:798 msgid "Browser" msgstr "浏览器" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "终端" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "用竖线显示缩进" #: FOption.form:858 msgid "Highlight current line" msgstr "突出显示当前行" #: FOption.form:875 msgid "Highlight modified lines" msgstr "突出显示已修改的行" #: FOption.form:892 msgid "Show line numbers" msgstr "显示行号" #: FOption.form:909 msgid "Procedure folding" msgstr "折叠过程" #: FOption.form:926 msgid "Procedure separation" msgstr "过程分隔" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "用点显示行尾空格" #: FOption.form:960 msgid "Show Preview" msgstr "显示预览" #: FOption.form:978 msgid "Keywords in upper case" msgstr "大写关键字" #: FOption.form:987 msgid "Code formatting" msgstr "代码格式化" #: FOption.form:993 msgid "Automatic formatting" msgstr "自动格式化" #: FOption.form:1004 msgid "Control structure completion" msgstr "控制结构完成" #: FOption.form:1021 msgid "Local variable declaration" msgstr "局部变量声明" #: FOption.form:1038 msgid "Comments insertion" msgstr "插入的注释" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "封闭括弧,括号" #: FOption.form:1072 msgid "Close strings" msgstr "封闭字符串" #: FOption.form:1084 msgid "Explicit formating" msgstr "显式格式化" #: FOption.form:1095 msgid "Format on load & save" msgstr "加载和保存时格式化" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "缩进局部变量声明" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "移除行尾无用空格。" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "保留连续的空行" #: FOption.form:1155 msgid "Code snippets" msgstr "代码片段" #: FOption.form:1171 msgid "Activate code snippets" msgstr "激活代码片段" #: FOption.form:1232 msgid "Interface" msgstr "接口" #: FOption.form:1249 msgid "Activate animations" msgstr "激活动画" #: FOption.form:1266 msgid "Show shadows" msgstr "显示阴影" #: FOption.form:1283 msgid "Show tooltips" msgstr "显示工具提示" #: FOption.form:1300 msgid "Use utility windows" msgstr "使用公用窗口" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "点击鼠标中键关闭选项卡" #: FOption.form:1334 msgid "Show file name in window title" msgstr "在窗口标题栏显示文件名" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "需要时显示调试面板" #: FOption.form:1368 #, fuzzy msgid "Message style" msgstr "消息" #: FOption.form:1384 msgid "Layout" msgstr "布局" #: FOption.form:1419 msgid "Fonts" msgstr "字体" #: FOption.form:1452 msgid "Global size" msgstr "全局尺寸" #: FOption.form:1474 msgid "Title size" msgstr "标题尺寸" #: FOption.form:1496 msgid "Debugger size" msgstr "调试器大小" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "打印" #: FOption.form:1588 msgid "Fixed font" msgstr "固定字体" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "缩放(浏览器除外)" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "为代码编辑器安装Gambas字体" #: FOption.form:1681 msgid "Themes" msgstr "主题" #: FOption.form:1698 msgid "Icon theme" msgstr "图标主题" #: FOption.form:1714 msgid "Highlighting theme" msgstr "突出显示主题" #: FOption.form:1728 msgid "Import theme" msgstr "导入主题" #: FOption.form:1734 msgid "Export theme" msgstr "导出主题" #: FOutput.form:29 msgid "Console - Gambas" msgstr "控制台 - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "分离控制台" #: FOutput.form:72 msgid "Keep above" msgstr "保留上面的" #: FOutput.form:85 msgid "Suspend terminal" msgstr "挂起终端" #: FOutput.form:104 msgid "Entered text echo" msgstr "回显输入的文本" #: FOutput.form:106 msgid "Echo" msgstr "回显" #: FOutput.form:117 msgid "Open contents" msgstr "打开内容" #: FOutput.form:130 msgid "Use system charset" msgstr "使用系统字符集" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "不能粘贴文本。" #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "剪贴板内容" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "正常粘贴" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "用PRINT粘贴" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "请输入表名。" #: FPasteTable.class:133 msgid "Table already exists" msgstr "表已经存在" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "总是复制表数据" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "文件看来不像是一个补丁文件!" #: FPatch.form:18 msgid "Patch the current project" msgstr "给当前项目打补丁" #: FPatch.form:31 msgid "Select patch" msgstr "选择补丁" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "(R)还原" #: FProfile.class:50 #, fuzzy msgid "Profile #&1" msgstr "profile文件" #: FProfile.class:190 msgid "Bad profile file format" msgstr "错误的profile文件格式" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "总计时间&1微秒(μs)" #: FProfile.class:444 msgid "Unable to load profile file: &1" msgstr "不能加载profile:&1" #: FProfile.class:713 msgid "Calls" msgstr "调用" #: FProfile.class:716 msgid "Duration" msgstr "持续时间" #: FProfile.class:719 msgid "Average" msgstr "普通" #: FProfile.class:722 msgid "Self" msgstr "自身" #: FProfile.class:1121 msgid "Profile files" msgstr "profile文件" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "不能保存profile" #: FProfile.form:60 msgid "Show relative durations" msgstr "显示相对持续时间" #: FProfile.form:67 msgid "Show average" msgstr "显示平均值" #: FProfile.form:74 msgid "Save profile" msgstr "保存profile" #: FProfile.form:126 msgid "Callees" msgstr "被调用方" #: FProfile.form:138 msgid "Callers" msgstr "调用方" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "项目属性" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "图像文件" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "静态属性" #: FProjectProperty.class:55 msgid "Variable" msgstr "变量" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "捕捉值不正确。" #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "&1未输出任何类。" #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "&1已经作为库使用。" #: FProjectProperty.class:1000 msgid "Modules" msgstr "模块" #: FProjectProperty.class:1001 msgid "Test modules" msgstr "测试模块" #: FProjectProperty.class:1011 msgid "Functions" msgstr "函数" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "代码行" #: FProjectProperty.class:1013 msgid "Average number of lines by function" msgstr "按函数列出的平均行数" #: FProjectProperty.class:1016 msgid "Executable size" msgstr "可执行文件大小" #: FProjectProperty.class:1016 msgid "bytes" msgstr "字节" #: FProjectProperty.class:1033 msgid "Information about component" msgstr "组件信息" #: FProjectProperty.class:1039 msgid "Information about library" msgstr "库信息" #: FProjectProperty.class:1419 msgid "Select a Gambas executable" msgstr "选择Gambas可执行文件" #: FProjectProperty.class:1420 msgid "Gambas executable" msgstr "Gambas可执行文件" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "编译" #: FProjectProperty.form:300 msgid "General" msgstr "通用" #: FProjectProperty.form:366 msgid "Component" msgstr "组件" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "库" #: FProjectProperty.form:366 msgid "Normal" msgstr "普通" #: FProjectProperty.form:373 msgid "Vendor" msgstr "生产厂商" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "版本" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "从'VERSION'文件获取" #: FProjectProperty.form:418 msgid "Title" msgstr "标题" #: FProjectProperty.form:452 msgid "Information" msgstr "信息" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "进度" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "稳定的最终版" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "该组件已隐含" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "兼容直到版本" #: FProjectProperty.form:535 msgid "Include information from" msgstr "包括信息来源于" #: FProjectProperty.form:547 msgid "Required features" msgstr "需要的功能" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "需要但被排除的组件" #: FProjectProperty.form:624 msgid "Require" msgstr "需要" #: FProjectProperty.form:630 msgid "Exclude" msgstr "排除" #: FProjectProperty.form:642 msgid "Remove All" msgstr "全部移除" #: FProjectProperty.form:649 msgid "Components" msgstr "组件" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "库" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "运行库搜索路径" #: FProjectProperty.form:737 msgid "Additional references" msgstr "其他参考资料" #: FProjectProperty.form:748 msgid "Environment" msgstr "环境" #: FProjectProperty.form:777 msgid "&Add" msgstr "(&A)添加" #: FProjectProperty.form:817 msgid "Edition" msgstr "版次" #: FProjectProperty.form:827 msgid "Tab size" msgstr "TAB大小" #: FProjectProperty.form:850 msgid "Show deprecated components and controls" msgstr "显示不推荐的组件和控件" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "模块符号缺省是公用的" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "窗口控件是公用的" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "激活警告" #: FProjectProperty.form:969 msgid "Add branch to version number" msgstr "添加分支到版本号" #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "统计" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "该行及其后内容将被忽略" #: FProjectVersion.class:36 msgid "Local" msgstr "局部" #: FProjectVersion.class:37 msgid "Remote" msgstr "远程" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "请输入用户名。" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "请输入日志。" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "项目不能被提交。" #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "不能从软件库更新项目。" #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "从软件库更新项目成功。" #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "项目版本控制" #: FProjectVersion.form:65 msgid "Update" msgstr "更新(U)" #: FProjectVersion.form:118 msgid "Authentication" msgstr "验证" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "更新信息" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "日志" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "一些文件未被版本记录,应手工添加进存储库。" #: FProjectVersion.form:283 msgid "Previous description" msgstr "过程描述" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "控件名中有禁止使用的字符。" #: FProperty.class:383 msgid "This name is already in use." msgstr "该名称己使用。" #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "控件组中有禁止使用的字符。" #: FProperty.class:469 msgid "Incorrect property value." msgstr "错误的属性值." #: FProperty.class:631 msgid "The name of the control." msgstr "控件名称。" #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "控件属于的事件组。" #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "是否窗体和控件面积必须符合缺省字体的大小。" #: FProperty.class:661 msgid "If the control is public." msgstr "是否控件是公共的。" #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "是否文本属性必须被翻译。" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "该属性是虚拟的:其仅在IDE中实现,并不存在于运行时。" #: FProperty.class:814 msgid "None" msgstr "无" #: FProperty.form:51 msgid "Lock property" msgstr "锁定属性" #: FProperty.form:58 msgid "Sort properties" msgstr "属性排序" #: FProxy.form:37 msgid "Port" msgstr "端口" #: FProxy.form:76 msgid "Default proxy" msgstr "默认代理" #: FProxy.form:76 msgid "HTTP proxy" msgstr "HTTP代理" #: FProxy.form:76 msgid "No proxy" msgstr "无代理" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "SOCKS5代理" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "你不能发布版本号为\"0.0\"的软件." #: FPublish.class:89 msgid "Software" msgstr "软件" #: FPublish.class:164 msgid "The project has been successfully published." msgstr "项目已成功发布。" #: FPublish.class:164 msgid "Unable to publish project." msgstr "不能发布项目。" #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "不允许空格。" #: FPublish.class:241 msgid "Incorrect version number." msgstr "错误的版本号。" #: FPublish.class:273 msgid "Do you really want to remove all tags?" msgstr "确定要移除所有标记吗?" #: FPublish.class:328 msgid "Select a screenshot file" msgstr "选择屏幕截图文件" #: FPublish.class:329 msgid "Screenshot files" msgstr "屏幕截图文件" #: FPublish.form:67 msgid "Software description" msgstr "软件描述" #: FPublish.form:98 FSoftwareFarm.form:345 msgid "Web site" msgstr "网站" #: FPublish.form:113 msgid "Create menu entry" msgstr "创建菜单项" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "标签" #: FPublish.form:164 msgid "Sort" msgstr "排序" #: FPublish.form:176 msgid "Screenshot" msgstr "屏幕截图" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "保留服务器上的截屏图" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "删除服务器上的截屏图" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "从剪切板上传一个新的屏幕截图" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "从文件上传一个新的屏幕截图" #: FPublish.form:222 msgid "Dependencies" msgstr "依赖" #: FPublish.form:230 msgid "Require Gambas version" msgstr "需要Gambas版本" #: FPublish.form:295 msgid "Publish as" msgstr "发布为" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "配置边框" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "边角" #: FReportBoxShadowChooser.form:23 msgid "Configure shadow" msgstr "配置阴影" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "阴影" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "配置刷子" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "选择项目内的图像" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "错误的值。" #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "选择维度" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "配置填充" #: FSave.form:15 msgid "Save modified files" msgstr "保存修改过的文件" #: FSave.form:43 msgid "Save All" msgstr "全部保存(A)" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "下列文件已被修改,是否保存?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "不能保存项目于其自身目录内部。" #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "不能保存项目。" #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "新项目父目录" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "新项目名" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "屏幕截图" #: FSearch.class:523 msgid "Search string replaced once." msgstr "查找的字符串被替换了一次。" #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "查找的字符串被替换了&1次。" #: FSearch.class:630 msgid "One match" msgstr "一个匹配" #: FSearch.class:632 msgid "&1 matches" msgstr "&1个匹配" #: FSearch.class:638 msgid "One replacement" msgstr "一处替换" #: FSearch.class:640 msgid "&1 replacements" msgstr "&1个替换" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "确定要替换所有字符串吗?" #: FSearch.form:42 msgid "Search & Replace" msgstr "查找和替换" #: FSearch.form:105 msgid "Case sensitive" msgstr "区分大小写(C)" #: FSearch.form:110 msgid "Words only" msgstr "仅按字" #: FSearch.form:115 msgid "Regular expression" msgstr "正则表达式(X)" #: FSearch.form:120 msgid "Ignore strings" msgstr "忽略字符串" #: FSearch.form:125 msgid "Ignore comments" msgstr "忽略注释" #: FSearch.form:140 msgid "Search in" msgstr "查找于" #: FSearch.form:147 msgid "Current function" msgstr "当前函数" #: FSearch.form:153 msgid "Current file" msgstr "当前文件" #: FSearch.form:160 msgid "Source files" msgstr "源文件" #: FSearch.form:166 msgid "Data files" msgstr "数据文件" #: FSearch.form:197 msgid "Browse" msgstr "浏览" #: FSearch.form:209 msgid "Replace all" msgstr "全部替换" #: FSearch.form:220 msgid "Highlight search" msgstr "突出显示搜索" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "选择附加文件" #: FSelectIcon.class:40 msgid "Image files" msgstr "图像文件" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "SVG图像文件" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "选择图片" #: FSelectIcon.form:45 msgid "Stock" msgstr "库存" #: FSelectIcon.form:73 #, fuzzy msgid "Size preview" msgstr "显示预览" #: FSelectLibrary.class:64 msgid "unknown" msgstr "未知的" #: FSelectLibrary.form:15 msgid "Select a library" msgstr "选择库" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "在系统中未找到库文件。" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "请输入触发字符串。" #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "该触发字符串已被使用。" #: FSnippet.class:64 msgid "Edit code snippet" msgstr "编辑代码片段" #: FSnippet.class:67 msgid "New code snippet" msgstr "新建代码片段" #: FSnippet.form:26 msgid "Trigger string" msgstr "触发字符串" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "游戏" #: FSoftwareFarm.class:50 msgid "Development" msgstr "开发" #: FSoftwareFarm.class:52 msgid "Education" msgstr "教育" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "图形" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "音频" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "视频" #: FSoftwareFarm.class:56 msgid "Office" msgstr "办公" #: FSoftwareFarm.class:57 msgid "Accessories" msgstr "附件" #: FSoftwareFarm.class:58 msgid "Internet" msgstr "互联网" #: FSoftwareFarm.class:66 msgid "Extensions" msgstr "扩展" #: FSoftwareFarm.class:71 msgid "My software" msgstr "我的软件" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "其它软件来自于" #: FSoftwareFarm.class:78 msgid "All software" msgstr "所有软件" #: FSoftwareFarm.class:209 msgid "No software found." msgstr "未找到软件。" #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "请求取消。" #: FSoftwareFarm.class:376 msgid "Cancel my vote" msgstr "取消投票" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "升级" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "发布&1(于&2之上)" #: FSoftwareFarm.class:563 msgid "Do you really want to download &1?" msgstr "确定要下载&1吗?" #: FSoftwareFarm.class:566 msgid "Unable to download &1:" msgstr "不能下载&1:" #: FSoftwareFarm.class:568 msgid "&1 has been successfully downloaded." msgstr "&1 has been successfully downloaded." #: FSoftwareFarm.class:583 msgid "Do you really want to upgrade to &1?" msgstr "确定要升级到&1吗?" #: FSoftwareFarm.class:586 msgid "Unable to upgrade to &1:" msgstr "不能升级至&1:" #: FSoftwareFarm.class:593 msgid "Do you really want to uninstall &1?" msgstr "确定要卸载&1吗?" #: FSoftwareFarm.class:596 msgid "Unable to uninstall &1:" msgstr "不能卸载&1:" #: FSoftwareFarm.class:598 msgid "&1 has been successfully uninstalled." msgstr "&1 己成功卸载." #: FSoftwareFarm.class:604 msgid "Do you really want to install &1?" msgstr "确定要安装&1吗?" #: FSoftwareFarm.class:607 msgid "Unable to install &1:" msgstr "不能安装&1:" #: FSoftwareFarm.class:609 msgid "&1 has been successfully installed." msgstr "&1 己成功安装." #: FSoftwareFarm.class:629 msgid "Unable to modify your vote." msgstr "不能修改投票。" #: FSoftwareFarm.class:665 msgid "Do you really want to delete &1 from the farm server?" msgstr "确定从软件农场服务器要删除&1吗?" #: FSoftwareFarm.class:669 msgid "Unable to remove &1:" msgstr "不能移除&1:" #: FSoftwareFarm.form:66 msgid "Gambas Software Farm" msgstr "Gambas软件农场" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 msgid "Show" msgstr "显示" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "已安装" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "最多下载" #: FSoftwareFarm.form:165 msgid "Most recent" msgstr "最新" #: FSoftwareFarm.form:171 msgid "Show filters" msgstr "显示过滤器" #: FSoftwareFarm.form:177 msgid "Show old versions" msgstr "显示旧版本" #: FSoftwareFarm.form:397 msgid "Download" msgstr "下载" #: FSoftwareFarm.form:405 msgid "Download and install" msgstr "下载并安装" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "选票" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "请将这些信息复制到每一个漏洞报告中。" #: FTableChooser.form:16 msgid "Choose a table" msgstr "选取一个表" #: FTestSuite.class:90 msgid "Unable to load test suites." msgstr "不能加载测试套件" #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "测试套件#&1" #: FTestSuite.class:247 msgid "This test suite already exists." msgstr "该测试套件已经存在。" #: FTestSuite.class:394 msgid "Unable to save test suites." msgstr "不能保存测试套件。" #: FTestSuite.class:404 msgid "Do you really want to remove this test suite?" msgstr "确定要删除此测试套件吗?" #: FTestSuite.form:63 msgid "New test suite" msgstr "新测试套件" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "复制测试套件" #: FTestSuite.form:77 msgid "Rename test suite" msgstr "重命名测试套件" #: FTestSuite.form:84 msgid "Delete test suite" msgstr "删除测试套件" #: FTestSuite.form:117 msgid "Select all tests" msgstr "选择所有测试" #: FTestSuite.form:124 msgid "Unselect all tests" msgstr "取消所选测试" #: FTestSuite.form:143 msgid "Test with" msgstr "测试借助于" #: FText.class:12 msgid "Edit '&1' property" msgstr "编辑'&1'属性" #: FText.form:29 msgid "Use a fixed font" msgstr "使用固定字体" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "控制台输出 #&1" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "默认许可协议" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "例子" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "升序" #: FTextEditor.form:192 msgid "Sort descent" msgstr "降序" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "切换网格" #: FTextEditor.form:807 #, fuzzy msgid "Load images" msgstr "旋转图像" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "今日知识#&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "不能读今日知识!" #: FTips.form:70 msgid "Show tips on startup" msgstr "显示今日知识" #: FToolBox.class:36 #, fuzzy msgid "Chooser" msgstr "选取一个profile" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "继续" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Network" msgstr "网络" #: FToolBox.class:36 #, fuzzy msgid "Special" msgstr "特别粘贴" #: FToolBox.class:360 Project.module:865 msgid "Current project" msgstr "当前项目" #: FToolBox.form:34 #, fuzzy msgid "Button size" msgstr "工具箱按钮大小" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 #, fuzzy msgid "Deprecated controls" msgstr "废弃" #: FToolBox.form:112 #, fuzzy msgid "Change button size" msgstr "工具箱按钮大小" #: FToolBox.form:120 #, fuzzy msgid "Show deprecated controls" msgstr "显示不推荐的组件" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "此项目无效,没什么可翻译的。" #: FTranslate.class:74 msgid "Language" msgstr "语言" #: FTranslate.class:77 msgid "Not translated" msgstr "未翻译" #: FTranslate.class:169 msgid "Translation files" msgstr "翻译文件" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "不能读'&1'语言的翻译文件" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "不能保存翻译!" #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "确定要删除此翻译吗?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "确定要加载此翻译吗?" #: FTranslate.class:802 msgid "Export a translation" msgstr "导出一个翻译" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "请选择导入的翻译文件。" #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "没有翻译被采纳。" #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "一个翻译被采纳。" #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "&1翻译被采纳。" #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "无法导入翻译文件." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "看起来一切正常。" #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "翻译后的字符串符号与未翻译的字符串不匹配。" #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "&1 个字符串.已完全翻译!" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "&1个字符串,尚有一个未翻译,已完成&3%。" #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "&1 个字符串. &2 未翻译. &3% 已完成." #: FTranslate.class:1745 msgid "Automatic translation has failed." msgstr "自动翻译失败。" #: FTranslate.class:1757 msgid "Do you want to fill the translation automatically?" msgstr "确定要自动填充翻译吗?" #: FTranslate.form:77 msgid "Project translation" msgstr "翻译项目" #: FTranslate.form:106 msgid "Automatic translation" msgstr "自动翻译" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "未翻译字符串" #: FTranslate.form:122 msgid "Translated strings" msgstr "已翻译字符串" #: FTranslate.form:126 msgid "All strings" msgstr "所有字符串" #: FTranslate.form:197 msgid "Add a new translation" msgstr "添加新的翻译" #: FTranslate.form:232 msgid "Save translation" msgstr "保存翻译" #: FTranslate.form:240 msgid "Verify the translation" msgstr "校验翻译" #: FTranslate.form:242 msgid "Verify" msgstr "校验" #: FTranslate.form:312 msgid "Find next translated string" msgstr "查找下一个已翻译字符串" #: FTranslate.form:318 msgid "Find previous translated string" msgstr "查找上一个已翻译字符串" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "查找上一个未翻译字符串" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "查找下一个未翻译字符串" #: FTranslate.form:340 msgid "Clear this translation" msgstr "清除该翻译" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "该字符串不必翻译" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "复制未翻译字符串" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "依次导入所有翻译" #: FTranslate.form:464 msgid "Replace existing translations" msgstr "替换己有翻译" #: FTranslate.form:480 msgid "Import a translation file" msgstr "导入翻译文件" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "新建翻译" #: FVersionControl.form:99 msgid "There is nothing to commit." msgstr "没有什么可以提交。" #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "推送" #: FWebFontChooser.form:24 msgid "Select font" msgstr "选择字体" #: FWelcome.class:69 msgid "New project..." msgstr "新建项目..." #: FWelcome.class:71 msgid "Recent projects" msgstr "最近的项目" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "己安装软件" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "欢迎使用Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "匿名" #: FarmRequest.class:125 msgid "No answer." msgstr "无回答。" #: FarmRequest.class:167 msgid "Register user" msgstr "注册用户" #: FarmRequest.class:242 msgid "Publish project" msgstr "发布项目" #: FarmRequest.class:363 msgid "Download software" msgstr "下载软件" #: FarmRequest.class:389 msgid "Delete software" msgstr "删除软件" #: HelpView.class:39 Wiki.module:816 msgid "This page does not exist." msgstr "该页面不存在。" #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "南非荷兰语(南非)" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "阿拉伯语(埃及) " #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "阿拉伯语(突尼斯)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "阿塞拜疆语(阿塞拜疆)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "保加利亚语(保加利亚)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "加泰罗尼亚语(加泰罗尼亚,西班牙)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "威尔士语(英国)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "捷克语(捷克共和国)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "丹麦语(丹麦)" #: Language.module:34 msgid "German (Germany)" msgstr "德语(德国)" #: Language.module:35 msgid "German (Belgium)" msgstr "德语(比利时)" #: Language.module:38 msgid "Greek (Greece)" msgstr "希腊语(希腊)" #: Language.module:41 msgid "English (common)" msgstr "英语(通用)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "英语(英国)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "英语(美国)" #: Language.module:44 msgid "English (Australia)" msgstr "英语(澳大利亚)" #: Language.module:45 msgid "English (Canada)" msgstr "英语(加拿大)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "世界语(任何地方)" #: Language.module:51 msgid "Spanish (common)" msgstr "西班牙语(普通的)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "西班牙语(西班牙)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "西班牙语(阿根廷)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "爱沙尼亚语(爱沙尼亚)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "巴斯克语(巴斯克地区)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "波斯语(伊朗)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "芬兰语(芬兰)" #: Language.module:68 msgid "French (France)" msgstr "法语(法国)" #: Language.module:69 msgid "French (Belgium)" msgstr "法语(比利时)" #: Language.module:70 msgid "French (Canada)" msgstr "法语(加拿大)" #: Language.module:71 msgid "French (Switzerland)" msgstr "法语(瑞士)" #: Language.module:74 msgid "Galician (Spain)" msgstr "加利西亚语(西班牙)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "希伯来语 (以色列)" #: Language.module:80 msgid "Hindi (India)" msgstr "印地语(印度)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "匈牙利语(匈牙利)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "克罗地亚语(克罗地亚)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "印度尼西亚语 (印度尼西亚)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "爱尔兰语(爱尔兰)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "冰岛语 (冰岛)" #: Language.module:98 msgid "Italian (Italy)" msgstr "意大利语(意大利)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "日本语(日本)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "高棉语(柬埔寨)" #: Language.module:107 msgid "Korean (Korea)" msgstr "朝鲜语(朝鲜)" #: Language.module:110 msgid "Latin" msgstr "拉丁语" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "立陶宛语(立陶宛)" #: Language.module:116 msgid "Malayalam (India)" msgstr "马拉雅拉姆语(印度)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "马其顿语(马其顿共和国)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "荷兰语(荷兰)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "荷兰语(比利时)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "挪威语(挪威)" #: Language.module:129 msgid "Punjabi (India)" msgstr "旁遮普语(印度)" #: Language.module:132 msgid "Polish (Poland)" msgstr "波兰语(波兰)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "葡萄牙语(葡萄牙) " #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "葡萄牙语(巴西) " #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "巴伦西亚语(巴伦西亚社区,西班牙)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "罗马尼亚语(罗马尼亚)" #: Language.module:145 msgid "Russian (Russia)" msgstr "俄语(俄罗斯)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "斯洛文尼亚语(斯洛文尼亚)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "阿尔巴尼亚语(阿尔巴尼亚)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "塞尔维亚语(塞尔维亚和黑山)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "瑞士语(瑞士)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "土耳其语(土耳其)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "乌克兰语(乌克兰)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "越语(越南)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "沃伦(比利时)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "简体中文(中华人民共和国)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "繁体中文(中华人民共和国台湾省)" #: Language.module:220 msgid "Unknown" msgstr "未知的" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "不能压缩文件。" #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "不能检索密码。" #: MConnection.module:91 msgid "Unable to save password." msgstr "不能保存口令。" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "不能创建表'&1'。" #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "不能创建元数据表。" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "&1不能是静态的" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1声明不匹配" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "声明的&1不是函数" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1不是结构体" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1不是声明" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1必须是静态的" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1:不在存档中" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1:语法错误" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1:窗体文件中语法错误" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1:太多的容器嵌套" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1'已经被声明" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "在‘&3’类中'&1.&2' 被错误的弃置" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' 不是属性" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2'不是静态的" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2'只读" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2'是静态的" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2'只写" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "','或')'" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "模块不能发生事件" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "属性实现不能是公共的" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "属性必须是公共的" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "禁止访问" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "别名必须是字符串" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "模糊的表达式,请使用括号" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "参数不能通过引用传递" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "不支持结构体数组" #: MErrorMessage.module:30 msgid "Assertion failed" msgstr "声明失败" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "错误归档: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "错误参数" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "字符串中错误的字符常量" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "错误常数类型" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "在&1.&2(): &3中错误的事件处理" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "错误的表达式:&1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "错误的窗体文件版本" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "段中格式错误:" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "错误的字符串格式" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "错误的维数" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "错误的项目文件:行 &1: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "错误的正则表达式:&1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "错误的字符串转换" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "错误的下标范围" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "错误的虚类用法" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "错误的版本字符串" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "不能改变当前目录到'&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "不能创建.startup文件" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "不能创建动作文件:&1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "不能创建回调:&1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "不能创建类信息:&1:&2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "不能创建文件:&1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "不能创建临时归档文件:&1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "不能找到动态库'&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "不能在动态库'&1'找到标识'&2'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "不能继承自己" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "不能继承两次" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "不能例示原生类型" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "不能加载类'&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "不能加载组件'&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "不能加载源文件:&1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "不能生成可执行文件:&1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "不能混杂NEW和嵌入式数组" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "不能混杂NEW和嵌入式结构体" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "不能打开文件'&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "不能打开文件:&1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "在静态函数中不能发生事件" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "不能读文件:&1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "不能注册类'&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "不能移除文件'&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "不能重命名文件'&1'为'&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "不能运行子进程:&1&2" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "不能设置文件属主:&1: &2" #: MErrorMessage.module:74 msgid "Cannot use &1 twice" msgstr "不能使用&1两次" #: MErrorMessage.module:75 msgid "Cannot use &1 with &2" msgstr "不能将&1与&2一起使用" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "不能使用NEW操作" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "'&1'类不可创建" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "要求比较操作" #: MErrorMessage.module:79 msgid "Component name must be a string" msgstr "组件名必须是字符串" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "组件未找到:&1" #: MErrorMessage.module:81 msgid "Constant string expected" msgstr "此处应为字符串常量" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "常量已经被声明" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "默认情况下已被定义" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "默认情况下必须是最新的" #: MErrorMessage.module:85 msgid "Device is full" msgstr "设备已满" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "目录非空" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "被零除" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "在静态函数中不能使用动态标识" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "这里禁止嵌入式数组" #: MErrorMessage.module:90 msgid "End of file" msgstr "文件结束" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "需要比较操作符" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "表达式太复杂" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "表达式太复杂,太多操作数。" #: MErrorMessage.module:94 msgid "Extern library name must be a string" msgstr "外部库名必须是字符串" #: MErrorMessage.module:95 msgid "File already exists" msgstr "文件已存在" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "文件是目录" #: MErrorMessage.module:97 msgid "File is locked" msgstr "文件已锁定" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "文件名太长" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "文件或目录不存在" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "禁止GOSUB" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "禁止GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "引用的自由对象" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "非法指令" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "内部编译器错误" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "无效的对齐" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "无效的日期" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "无效的对象" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "无效的路径" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "IsMissing() 需要一个函数参数" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "跳转太远" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "标签'&1'未找到" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "库名必须是字符串" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "循环变量已经使用" #: MErrorMessage.module:114 msgid "Loop variable cannot be an argument" msgstr "循环变量不能是参数" #: MErrorMessage.module:115 msgid "Loop variable cannot be global" msgstr "循环变量不能是全局变量" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME不能用于静态函数" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "数学错误" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "缺失#Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "缺失']'" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "缺失'}'" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "缺失操作符" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "缺失右括号" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "多维数组" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW不能通过引用传递参数" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "无方法实例" #: MErrorMessage.module:126 msgid "No parent class" msgstr "无父类" #: MErrorMessage.module:127 msgid "No return value" msgstr "无返回值" #: MErrorMessage.module:128 msgid "No startup method" msgstr "无启动方法" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "无结束字符串" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "不是目录:&1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "不是函数" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "不是过程" #: MErrorMessage.module:133 msgid "Not an array" msgstr "不是数组" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "不是枚举" #: MErrorMessage.module:135 msgid "Not an object" msgstr "不是对象" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "New()没有足够参数" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "没有足够参数" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "&1()没有足够参数" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "仍未实现" #: MErrorMessage.module:140 msgid "Not supported" msgstr "不支持" #: MErrorMessage.module:141 msgid "Null object" msgstr "空对象" #: MErrorMessage.module:142 msgid "Number" msgstr "数字" #: MErrorMessage.module:143 msgid "Number or Date expected" msgstr "需要编号或日期" #: MErrorMessage.module:144 msgid "Number or date" msgstr "数字或日期" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "数字、日期或字符串" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "数字、字符串或对象" #: MErrorMessage.module:147 msgid "Object" msgstr "对象" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "越界" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "内存耗尽" #: MErrorMessage.module:150 msgid "Out of range" msgstr "超出范围" #: MErrorMessage.module:151 msgid "Overflow" msgstr "溢出" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "禁止覆盖一个已经被继承的类" #: MErrorMessage.module:153 msgid "Read error" msgstr "读取出错" #: MErrorMessage.module:154 msgid "Read-only array" msgstr "只读数组" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "函数声明未指定返回值数据类型" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "遇到STOP指令" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER不能被单独使用" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "串行化错误" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "堆栈溢出" #: MErrorMessage.module:160 msgid "Standard type" msgstr "标准类型" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "流已关闭" #: MErrorMessage.module:162 msgid "String expected" msgstr "应为字符串" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "结构体必须是公共的" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "子程序参数不能被通过引用传递" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "语法错误" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "函数声明语法错误" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "事件名语法错误" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "文件打开模式语法错误" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "返回类型语法错误" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "语法错误,应为&1。" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "语法错误,'...'必须是最后的参数" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "语法错误,CASE或DEFAULT应于SELECT之后" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "语法错误,CLASS需要标识符" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "语法错误,不能在对齐中使用该语法" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "语法错误,INHERITS需要类名" #: MErrorMessage.module:176 msgid "Syntax error. Identifier expected" msgstr "语法错误,应为标识符" #: MErrorMessage.module:177 msgid "Syntax error. Identifier expected for property name" msgstr "语法错误,属性名应为标识符 " #: MErrorMessage.module:178 msgid "Syntax error. Identifier expected for property synonymous" msgstr "语法错误,同义属性应为标识符" #: MErrorMessage.module:179 msgid "Syntax error. Identifier expected for property variable" msgstr "语法错误,属性变量应为标识符" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "语法错误,函数名中有无效的标识符" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "语法错误,无效的可选参数" #: MErrorMessage.module:182 msgid "Syntax error. Invalid property type" msgstr "语法错误,无效的属性类型" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "语法错误,无效的返回类型" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "语法错误,&1参数的类型描述无效" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "语法错误,&1字段的类型描述无效" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "语法错误,不需要的参数" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "语法错误,点语法被用于WITH/END WITH之外" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "语法错误,STRUCT需要标识符" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "语法错误,&1参数不是有效标识符" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "语法错误,&1字段不是有效标识符" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "语法错误, VarPtr()仅接受一个标识符" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "系统错误#&1:&2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "'!'运算符必须紧跟一个标识符" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "'.'运算符必须紧跟一个标识符" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "函数必须接受固定数量的参数" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "指定的方法&1不能是函数" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "指定的方法&1不能被实现" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "指定的方法&1不能是静态的" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "指定的方法&1必须是函数" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "指定的方法&1必须是公共的" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "指定的方法&1必须是静态的" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "指定的方法&1必须是返回布尔值" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "指定的方法&1只能接受可变数量的参数" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "指定的方法&1必须接受至少一个参数" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "指定方法&1不接受参数" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "指定方法必须返回一个整数" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "指定方法只接受一个参数" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "指定方法只接受两个参数" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "指定的方法签名错误" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "表达式不能是一个语句" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "表达式不能被引用传递" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "太多的参数" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "太多的参数给&1()" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "太多的数组声明" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "太多的常量" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "使用太多不同的类" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "太多的维度" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "太多的动态变量" #: MErrorMessage.module:219 msgid "Too many events" msgstr "太多的事件" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "在CASE中太多的表达式" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "太多的外部函数" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "太多的函数" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "太多的#If...#Endif层疊" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "太多的标签" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "太多的局部变量" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "太多的嵌套控制结构。" #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "太多的同义属性" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "同时新建太多的字符串" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "太多的静态变量" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "太多的未知标识" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "反斜线" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "类型错误" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "类型错误:需要&1,却是&2" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "不能创建闭合" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "不能获取文件位置" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "不能加载类文件" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "不能准备函数说明" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "意外的&1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "意外的行结尾" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "意外的字符串" #: MErrorMessage.module:241 msgid "Unknown class '&1'" msgstr "未知的类'&1'" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "未知错误" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "未知文件扩展名" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "未知的标识符:&1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "未知操作" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "在‘&1’类中存在未知的标识:'&2'" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "未知用户或组" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "不支持的数据类型" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "不支持的字符串转换" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "不使用LOCK" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "VarPtr()参数必须是动态的、静态的或局部变量" #: MErrorMessage.module:252 msgid "Void identifier" msgstr "空标识符" #: MErrorMessage.module:253 msgid "Void key" msgstr "空键" #: MErrorMessage.module:254 msgid "Write error" msgstr "写入出错" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "不能找到组件" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "不能找到库" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "类名被此全局声明隐藏: &1" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "类名被此局域声明隐藏: &1" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "常量被局部声明:&1屏蔽" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "外部函数被局部声明:&1屏蔽" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "函数被局部声明:&1屏蔽" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "全局变量被局部变量:&1屏蔽" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "用`&1'操作混合整数和布尔值" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "未初始化的全局变量:&1" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "未初始化的变量:&1" #: MErrorMessage.module:266 msgid "unknown error" msgstr "未知错误" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "未使用的参数:&1" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "未使用的外部函数:&1" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "未使用的函数:&1" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "未使用的全局变量:&1" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "未使用的变量:&1" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "不能打开从属虚拟终端:" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "不能初始化虚拟终端:" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "不能阻塞标准输入:" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "不能阻塞标准输出和标准错误输出:" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "不能运行可执行文件:" #: MHelp.module:316 msgid "No help found." msgstr "未找到帮助。" #: MMime.module:17 msgid "Plain text" msgstr "无格式文本" #: MMime.module:18 msgid "HTML text" msgstr "HTML文本" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas窗体数据" #: MMime.module:20 msgid "Gambas menu data" msgstr "Gambas菜单数据" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas项目文件路径" #: MMime.module:22 msgid "URI list" msgstr "URI列表" #: MMime.module:33 msgid "Unknown format" msgstr "未知格式" #: MTheme.module:6 msgid "Alternate background" msgstr "间隔背景" #: MTheme.module:6 msgid "Characters" msgstr "字符" #: MTheme.module:6 msgid "Comments" msgstr "注释" #: MTheme.module:6 msgid "Current line" msgstr "当前行" #: MTheme.module:6 msgid "Data types" msgstr "数据类型" #: MTheme.module:6 msgid "Editing line" msgstr "编辑行" #: MTheme.module:6 msgid "Errors" msgstr "错误" #: MTheme.module:6 msgid "Highlighting" msgstr "突出显示" #: MTheme.module:6 msgid "Keywords" msgstr "关键词" #: MTheme.module:6 msgid "Labels" msgstr "标签" #: MTheme.module:6 msgid "Normal text" msgstr "普通文本" #: MTheme.module:6 msgid "Numbers" msgstr "数字" #: MTheme.module:6 msgid "Operators" msgstr "操作符" #: MTheme.module:6 msgid "Preprocessor" msgstr "预处理" #: MTheme.module:6 msgid "Strings" msgstr "字符串" #: MTheme.module:6 msgid "Subroutines" msgstr "子程序" #: MTheme.module:6 msgid "Symbols" msgstr "符号" #: Package.module:85 msgid "'&1' is missing." msgstr "'&1'丢失。" #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "'&1'和'&2'丢失。" #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "保存修改日志" #: Package.module:743 msgid "Making &1 support package..." msgstr "生成&1支持包..." #: Package.module:798 msgid "Creating package for &1." msgstr "正在为&1创建一个代码包。" #: Package.module:830 msgid "The package build has failed." msgstr "建包失败。" #: Package.module:903 msgid "Making build directory." msgstr "建立工作目录。" #: Package.module:962 msgid "Creating desktop file..." msgstr "正在创建桌面文件..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "源代码正被debian化。" #: Package.module:1175 msgid "Creating package..." msgstr "正在创建源代码包..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' 失败。" #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "初始化~/RPM目录" #: Package.module:1483 msgid "Creating source package." msgstr "正在创建源代码包。" #: Package.module:1507 msgid "Creating .spec file." msgstr "正在创建.spec文件。" #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild'返回错误代码:" #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' 返回错误代码:" #: Package.module:2441 msgid "'makepkg' has failed." msgstr "'makepkg'失败。" #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "目录不是Gambas项目" #: Patch.class:52 Project.module:4816 #, fuzzy msgid "Unsupported source archive format." msgstr "不支持的源码包格式" #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "补丁未应用:\n" #: Project.module:238 msgid "Automation" msgstr "自动" #: Project.module:239 msgid "Basic" msgstr "基本" #: Project.module:241 msgid "Drawing" msgstr "绘制" #: Project.module:244 msgid "Miscellaneous" msgstr "其它" #: Project.module:245 msgid "Networking" msgstr "网络" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "声音" #: Project.module:250 msgid "Controls" msgstr "控件" #: Project.module:251 msgid "Multimedia" msgstr "多媒体" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "文件未找到!" #: Project.module:545 msgid "This project does not exist." msgstr "该项目不存在。" #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" "不能找到Gambas IDE可执行文件于目录:\n" "\n" "&1" #: Project.module:576 msgid "This is not a Gambas project." msgstr "这不是一个Gambas项目。" #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "这是Gambas1.0项目。用Gambas2.0进行转换。" #: Project.module:582 msgid "Convert" msgstr "转换" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "这是Gambas2.0项目。\n" "是否转换?" #: Project.module:600 msgid "Do not open" msgstr "不要打开" #: Project.module:600 msgid "Open after all" msgstr "继续打开" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "该项目看来已经打开。\n" "\n" "两次打开同一项目将导致数据丢失。" #: Project.module:606 msgid "It cannot be converted." msgstr "不能被转换。" #: Project.module:606 msgid "This project is read-only." msgstr "该项目是只读的。" #: Project.module:614 #, fuzzy msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "从项目目录中删除所有备份文件和生成的文件。" #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "该项目有重复的类文件!" #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "复制项目到一个临时目录内..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "不能创建临时目录" #: Project.module:668 msgid "Converting project structure..." msgstr "转换项目结构..." #: Project.module:698 msgid "Applying conversion..." msgstr "应用转换..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "不能应用转换" #: Project.module:749 msgid "Cannot open project file :" msgstr "不能打开项目文件:" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "该项目有重复的类文件!" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "项目使用的某些库缺失。" #: Project.module:937 msgid "Cannot reload file." msgstr "不能重载文件。" #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "α版,用者自担风险!" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "开发版,用者自担风险!" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "不能打开二进制文件。" #: Project.module:2171 msgid "Cannot open file." msgstr "不能打开文件." #: Project.module:2329 msgid "&1th" msgstr "第&1" #: Project.module:2395 msgid "in form definition" msgstr "在窗体定义中" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "某些项目源文件冲突。\n" "请解决这个问题,以便编译项目。" #: Project.module:2575 msgid "Compiling project" msgstr "编译项目" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "文件己存在" #: Project.module:2876 msgid "Directory already exists." msgstr "目录己存在。" #: Project.module:2888 msgid "Cannot link template file." msgstr "不能链接模板文件。" #: Project.module:2894 msgid "Cannot copy template file." msgstr "不能复制模板文件" #: Project.module:2948 msgid "Forbidden directory name." msgstr "" #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "版本文件的内容不正确。" #: Project.module:3136 msgid "Cannot install library in &1." msgstr "不能在&1安装库文件." #: Project.module:3181 msgid "Making executable..." msgstr "制作可执行文件..." #: Project.module:3191 msgid "Do you really want to increment the project version and make the executable again?" msgstr "确定要增大项目版本号并再次生成可执行文件吗?" #: Project.module:3191 msgid "No change has been detected." msgstr "未检测到变化。" #: Project.module:3292 msgid "Cannot make executable." msgstr "不能生成可执行文件。" #: Project.module:3774 msgid "Some components are missing: &1" msgstr "部份组件缺失:&1" #: Project.module:3990 msgid "Cannot write project file." msgstr "不能写项目文件。" #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "不能创建桌面快捷方式。" #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "在下一次提交时目录将被移除。" #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "你必须定义一个自动运行的类或窗口" #: Project.module:4351 msgid "Please type a name." msgstr "请输入一个名字。" #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "该名称包含禁用字符:" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "名称不能用\".\"开头。" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "该名称己使用,请另外选择一个。" #: Project.module:4399 #, fuzzy msgid "Space" msgstr "个空格" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "类的名字必须用字母或者下划线开头,由字母和数字组成。" #: Project.module:4444 msgid "Destination already exists." msgstr "目标已经存在。" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "不能更名'&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "请输入一个项目名。" #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "项目名称不能用“.”开头。" #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "项目名称禁止使用非ASCII字符。" #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 msgid "The following characters are forbidden in a project name:" msgstr "项目名称中禁止使用以下字符:" #: Project.module:4733 msgid "This project already exists." msgstr "该项目己存在." #: Project.module:4736 msgid "The project directory already exists." msgstr "项目目录已经存在。" #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "由于有相同名称存在,无法创建项目目录。" #: Project.module:4822 msgid "Unable to create source archive." msgstr "不能创建源码包。" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "无法复制文件&1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "不能创建连接&1。" #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "不能将目录移动进它自己。" #: Project.module:5265 msgid "Cannot move file &1." msgstr "不能移动文件&1。" #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "不能移除下列文件:" #: Project.module:5960 msgid "Project cleanup..." msgstr "项目清理..." #: Project.module:5966 msgid "Project files conversion..." msgstr "项目文件转换..." #: Project.module:5996 msgid "Unable to convert &1" msgstr "不能转换&1" #: Project.module:6276 msgid "Unable to update forms." msgstr "不能更新窗体" #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "系统未安装&1程序" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "系统未安装下列程序:&1。" #: Project.module:6459 msgid "Unable to read component description file." msgstr "不能读取组件描述文件。" #: Project.module:6520 msgid "Cannot write component description file." msgstr "不能写组件描述文件。" #: Project.module:6581 msgid "Project templates" msgstr "项目模板" #: Project.module:6627 msgid "Unable to run terminal." msgstr "不能运行终端。" #: Save.module:57 msgid "Cannot save file !" msgstr "不能保存文件!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "发布&1" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "&1 KB" #: Util.module:10 msgid "&1 MiB" msgstr "&1 MB" #: Util.module:12 msgid "&1 GiB" msgstr "&1 GB" #: Util.module:46 #, fuzzy msgid "Incorrect format" msgstr "错误的字符" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "请设置$EDITOR环境变量为您偏爱的图形界面文本编辑器。一些版本控制命令需要它。 " #: VersionControl.module:170 msgid "Command timeout." msgstr "命令超时。" #: VersionControl.module:170 msgid "Please check your network connection." msgstr "请检查网络连接。" #: VersionControl.module:553 msgid "Do you really want to put this project under version control with &1?" msgstr "确定要使用&1对项目进行版本控制吗?" #: VersionControl.module:567 msgid "The project could not be put under version control." msgstr "项目不能被置于版本控制之下。" #: VersionControl.module:652 msgid "Unable to switch to branch `&1`." msgstr "不能切换到分支`&1`。" #: VersionControl.module:674 msgid "With &1" msgstr "用&1" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "&1类和&2代号位于所有Gambas组件中。" #: Wiki.module:800 msgid "This page does not exist in that language." msgstr "所要求语言的该页面不存在。" #: WikiMarkdown.class:142 msgid "Since" msgstr "自从" #: WikiMarkdown.class:149 msgid "This component does not exist." msgstr "该组件不存在。" #: WikiMarkdown.class:174 msgid "This class does not exist." msgstr "该类不存在。" #: WikiMarkdown.class:187 msgid "This symbol does not exist." msgstr "该标识不存在。" #~ msgid "&1 s" #~ msgstr "&1秒" #~ msgid "$(FILE) will be replaced by the path of the executable" #~ msgstr "$(FILE) 将被可执行文件的路径替换" #~ msgid "Compressed at &1" #~ msgstr "压缩为&1" #~ msgid "Fold procedures by default" #~ msgstr "默认折叠过程代码" #~ msgid "Separate static symbols in method selector" #~ msgstr "在方法选择器中分隔静态符号" #~ msgid "in &1." #~ msgstr "在&1中。" #~ msgid "in &1:&2." #~ msgstr "在&1:&2中。" gambas-3.16.3/app/src/gambas3/.lang/zh_TW.po000066400000000000000000005631171411575327000203360ustar00rootroot00000000000000# #-#-#-#-# CClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CConfig.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CConfig.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CControl.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CControl.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CCoolButton.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CCoolButton.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# CSplit.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/CSplit.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FAbout.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FAbout.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FDebug.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FDebug.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FExplorer.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FExplorer.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FFind.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FFind.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGambas.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGambas.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGetIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGetIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FGotoLine.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FGotoLine.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FIconEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FIconEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FLanguage.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FLanguage.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FList.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FList.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMenu.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FMenu.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewClass.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewClass.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewDirectory.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewDirectory.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewForm.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewForm.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewIcon.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewIcon.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewModule.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewModule.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FNewText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FNewText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOpenProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOpenProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FOption.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FOption.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProject.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProject.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FProperty.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FProperty.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FRename.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FRename.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSave.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSave.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FSelector.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FSelector.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTest.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTest.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTextEditor.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTextEditor.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FText.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FText.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTips.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTips.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTool.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTool.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FTranslate.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FTranslate.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FWelcome.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/FWelcome.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Language.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Language.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# Project.pot (PACKAGE VERSION) #-#-#-#-# # /home/gambas/gambas-0.50/app/gambas/Project.module # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2021-03-28 16:17 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 "Gambas 3" msgstr "-" #: .project:2 msgid "Integrated Development Environment for Gambas" msgstr "Gambas的整合發展環境" #: CBookmark.class:40 msgid "Define bookmark" msgstr "" #: CBookmark.class:45 msgid "Clear all bookmarks" msgstr "" #: CBookmark.class:49 msgid "Previous bookmark" msgstr "" #: CBookmark.class:54 msgid "Next bookmark" msgstr "" #: CClassInfo.class:615 msgid "Static properties" msgstr "" #: CClassInfo.class:616 msgid "Static variables" msgstr "靜態變數" #: CClassInfo.class:617 msgid "Static methods" msgstr "" #: CClassInfo.class:618 MTheme.module:6 msgid "Constants" msgstr "常數" #: CClassInfo.class:635 FMain.form:579 FProperty.form:28 msgid "Properties" msgstr "屬性" #: CClassInfo.class:636 msgid "Variables" msgstr "變數" #: CClassInfo.class:637 msgid "Methods" msgstr "方法" #: CClassInfo.class:638 msgid "Events" msgstr "事件" #: CClassInfo.class:660 msgid "This class reimplements &1" msgstr "" #: CClassInfo.class:662 msgid "This class inherits &1" msgstr "" #: CClassInfo.class:668 msgid "in &1" msgstr "" #: CClassInfo.class:676 msgid "This class can be used like an object by creating an hidden instance on demand." msgstr "" #: CClassInfo.class:681 msgid "This class is &1." msgstr "" #: CClassInfo.class:681 msgid "creatable" msgstr "" #: CClassInfo.class:686 msgid "This class is static." msgstr "" #: CClassInfo.class:688 #, fuzzy msgid "This class is not creatable." msgstr "類別 '&1' 不能被建立" #: CClassInfo.class:694 msgid "This class can be used as a &1." msgstr "" #: CClassInfo.class:694 msgid "function" msgstr "" #: CClassInfo.class:699 msgid "This class acts like a &1 / &2 array." msgstr "" #: CClassInfo.class:699 msgid "read" msgstr "" #: CClassInfo.class:699 msgid "write" msgstr "" #: CClassInfo.class:701 msgid "This class acts like a &1 array." msgstr "" #: CClassInfo.class:701 msgid "write-only" msgstr "" #: CClassInfo.class:704 Project.module:1749 msgid "read-only" msgstr "唯讀" #: CClassInfo.class:709 msgid "This class is &1 with the FOR EACH keyword." msgstr "" #: CClassInfo.class:709 msgid "enumerable" msgstr "" #: CClassInfo.class:867 msgid "This class reimplements" msgstr "" #: CClassInfo.class:869 msgid "This class inherits" msgstr "" #: CClassInfo.class:884 msgid "This class is virtual." msgstr "" #: CClassInfo.class:886 msgid "This class can be used like an object by creating a hidden instance on demand." msgstr "" #: CClassInfo.class:911 #, fuzzy msgid "static function" msgstr "不是函數" #: CClassInfo.class:918 msgid "This class acts like a &1 / &2 static array." msgstr "" #: CClassInfo.class:920 msgid "This class acts like a &1 static array." msgstr "" #: CClassInfo.class:932 msgid "This class is &1 with the &2 keyword." msgstr "" #: CClassInfo.class:932 msgid "statically enumerable" msgstr "" #: CComponent.class:149 msgid "Loading information on component &1..." msgstr "正在載入 &1 的資訊..." #: CComponent.class:151 #, fuzzy msgid "Loading information on project..." msgstr "正在載入 &1 的資訊..." #: CComponent.class:525 FProjectProperty.class:1002 msgid "Classes" msgstr "Classes" #: CComponent.class:569 FDebugInfo.class:44 FMain.form:952 msgid "Class" msgstr "Class" #: CComponent.class:571 FConnectionEditor.class:320 FMakeInstall.form:315 #: FProjectProperty.form:429 FPublish.form:125 FSoftwareFarm.form:327 msgid "Description" msgstr "描述" #: CComponent.class:598 #, fuzzy msgid "This component is not stable yet." msgstr "這個元件是隱藏的" #: CComponent.class:600 #, fuzzy msgid "This component is deprecated." msgstr "這個元件是隱藏的" #: CComponent.class:609 CVersionControlGit.class:511 FProjectVersion.class:287 msgid "Author" msgstr "作者" #: CComponent.class:611 FAbout.class:218 FProjectProperty.form:441 msgid "Authors" msgstr "作者群" #: CComponent.class:621 msgid "Implements" msgstr "實做" #: CComponent.class:633 CLibraryInfo.class:211 LibraryItem.class:60 msgid "Requires" msgstr "需求" #: CComponent.class:648 msgid "Excludes" msgstr "排除" #: CDocumentation.class:51 msgid "Internal native classes" msgstr "內部原生類別" #: CDocumentation.class:52 msgid "Program arguments parser" msgstr "" #: CDocumentation.class:53 msgid "Cairo graphic library" msgstr "Cairo 圖形函式庫" #: CDocumentation.class:54 msgid "Chart drawing" msgstr "繪製圖表" #: CDocumentation.class:55 msgid "Polygon management based on Clipper library" msgstr "" #: CDocumentation.class:56 msgid "Complex numbers management" msgstr "" #: CDocumentation.class:57 msgid "Compression & decompression" msgstr "壓縮 & 解壓縮" #: CDocumentation.class:58 msgid "bzlib2 compression driver" msgstr "" #: CDocumentation.class:59 msgid "zlib compression driver" msgstr "" #: CDocumentation.class:60 msgid "zstd compression driver" msgstr "" #: CDocumentation.class:61 msgid "MD5/DES/SHA crypting" msgstr "" #: CDocumentation.class:62 msgid "More data containers" msgstr "" #: CDocumentation.class:63 msgid "Database access" msgstr "資料庫存取" #: CDocumentation.class:65 msgid "Data bound controls" msgstr "資料繫結控制項" #: CDocumentation.class:66 msgid "MySQL database driver" msgstr "MySQL 資料庫驅動程式" #: CDocumentation.class:67 msgid "ODBC database driver" msgstr "ODBC 資料庫驅動程式" #: CDocumentation.class:68 msgid "PostgreSQL database driver" msgstr "PostgreSQL 資料庫驅動程式" #: CDocumentation.class:69 msgid "SQLite 2 database driver" msgstr "SQLite 2 資料庫驅動程式" #: CDocumentation.class:70 msgid "SQLite 3 database driver" msgstr "SQLite 3 資料庫驅動程式" #: CDocumentation.class:71 msgid "Application debugger helper" msgstr "應用程式除錯器助手" #: CDocumentation.class:72 msgid "Desktop management component" msgstr "" #: CDocumentation.class:73 msgid "X-Window library support" msgstr "" #: CDocumentation.class:74 msgid "Gnome keyring support for desktop management component" msgstr "" #: CDocumentation.class:75 msgid "D-Bus interface" msgstr "D-Bus 介面" #: CDocumentation.class:76 msgid "Expression evaluator" msgstr "表達式計算器" #: CDocumentation.class:77 msgid "Syntax highlighter routines" msgstr "語法標示程序" #: CDocumentation.class:78 msgid "More controls for graphical components" msgstr "更多圖形元件控制" #: CDocumentation.class:79 msgid "Enhanced standard dialogs" msgstr "強化標準對話視窗" #: CDocumentation.class:80 msgid "Text editor with syntax highlighting" msgstr "" #: CDocumentation.class:81 msgid "Multi Document Interface" msgstr "多重文件介面" #: CDocumentation.class:82 msgid "Generic preview and print form" msgstr "" #: CDocumentation.class:83 msgid "Default icon theme" msgstr "" #: CDocumentation.class:84 #, fuzzy msgid "Terminal emulator" msgstr "使用終端機模擬器" #: CDocumentation.class:85 msgid "GNU Multiple Precision Arithmetic Library" msgstr "" #: CDocumentation.class:86 msgid "GNU Scientific Library" msgstr "" #: CDocumentation.class:87 msgid "GTK+2 toolkit" msgstr "" #: CDocumentation.class:88 msgid "OpenGL with GTK+ toolkit" msgstr "OpenGL 與 GTK+ 工具箱" #: CDocumentation.class:89 msgid "GTK+3 toolkit" msgstr "" #: CDocumentation.class:90 #, fuzzy msgid "GTK+3 web browser component" msgstr "QT/GTK+ 切換元件" #: CDocumentation.class:91 msgid "QT/GTK+ switcher component" msgstr "QT/GTK+ 切換元件" #: CDocumentation.class:92 msgid "OpenGL with QT/GTK+ switcher component" msgstr "" #: CDocumentation.class:93 #, fuzzy msgid "QT/GTK+ web browser switcher component" msgstr "QT/GTK+ 切換元件" #: CDocumentation.class:94 #, fuzzy msgid "QT4/QT5 switcher component" msgstr "QT/GTK+ 切換元件" #: CDocumentation.class:95 #, fuzzy msgid "QT4/QT5 OpenGL switcher component" msgstr "QT/GTK+ 切換元件" #: CDocumentation.class:96 #, fuzzy msgid "QT4/QT5 WebKit switcher component" msgstr "QT/GTK+ 切換元件" #: CDocumentation.class:97 msgid "System tray icon management component" msgstr "" #: CDocumentation.class:98 FProjectProperty.form:266 msgid "Embedded HTTP server" msgstr "" #: CDocumentation.class:99 msgid "Image management" msgstr "圖片管理" #: CDocumentation.class:100 msgid "Image filtering component" msgstr "圖片濾鏡元件" #: CDocumentation.class:101 msgid "Image routines from the Imlib2 library" msgstr "取自 Imlib2 函式庫的影像處理函數" #: CDocumentation.class:102 FProjectProperty.form:574 msgid "Image loading and saving" msgstr "圖片載入與儲存" #: CDocumentation.class:103 msgid "Filesystem events monitoring" msgstr "" #: CDocumentation.class:104 msgid "XML tools based on libxml" msgstr "基於 libxml 的 XML 工具" #: CDocumentation.class:105 msgid "Flexible logging system" msgstr "" #: CDocumentation.class:106 msgid "Online map viewer" msgstr "" #: CDocumentation.class:107 msgid "Gambas Markdown markup syntax" msgstr "" #: CDocumentation.class:108 msgid "GStreamer multimedia component" msgstr "" #: CDocumentation.class:109 msgid "Multimedia controls" msgstr "" #: CDocumentation.class:110 msgid "Memcached client" msgstr "" #: CDocumentation.class:111 msgid "MIME format management based on GMime library" msgstr "" #: CDocumentation.class:112 msgid "MySQL specific routines" msgstr "屬於 MySQL 的程序" #: CDocumentation.class:113 msgid "NCurses library" msgstr "" #: CDocumentation.class:114 msgid "Network programming" msgstr "網路程式設計" #: CDocumentation.class:115 msgid "Network high-level protocols management" msgstr "網路高階協定管理" #: CDocumentation.class:116 msgid "POP3 client" msgstr "" #: CDocumentation.class:117 msgid "SMTP client" msgstr "SMTP 客戶端" #: CDocumentation.class:118 msgid "OpenAL 3D audio library" msgstr "" #: CDocumentation.class:119 msgid "3D programming with OpenGL" msgstr "OpenGL 3D 程式設計" #: CDocumentation.class:120 msgid "OpenGL utility component" msgstr "OpenGL 工具元件" #: CDocumentation.class:121 msgid "OpenGL shaders management" msgstr "OpenGL 繪圖器管理" #: CDocumentation.class:122 msgid "Simple OpenGL game engine based on MD2 format" msgstr "" #: CDocumentation.class:123 msgid "OpenSSL library routines" msgstr "" #: CDocumentation.class:124 msgid "GNU command option parser" msgstr "GNU 命令列參數分析器" #: CDocumentation.class:125 msgid "Perl-compatible Regular Expression Matching" msgstr "與 Perl 相容的規則表示式匹配" #: CDocumentation.class:126 msgid "PDF renderer based on Poppler library" msgstr "基於 Poppler 函式庫的 PDF 繪圖器" #: CDocumentation.class:128 msgid "QT4 toolkit" msgstr "QT4 工具箱" #: CDocumentation.class:129 msgid "QT4 toolkit extension" msgstr "QT4 工具箱擴充" #: CDocumentation.class:130 msgid "QT4 WebKit component" msgstr "QT4 WebKit 元件" #: CDocumentation.class:131 msgid "OpenGL with QT4 toolkit" msgstr "OpenGL 與 QT4 工具箱" #: CDocumentation.class:132 #, fuzzy msgid "QT5 toolkit" msgstr "QT4 工具箱" #: CDocumentation.class:133 #, fuzzy msgid "QT5 WebKit component" msgstr "QT4 WebKit 元件" #: CDocumentation.class:134 #, fuzzy msgid "QT5 web browser component" msgstr "QT4 WebKit 元件" #: CDocumentation.class:135 #, fuzzy msgid "OpenGL with QT5 toolkit" msgstr "OpenGL 與 QT4 工具箱" #: CDocumentation.class:136 #, fuzzy msgid "QT5 toolkit extension" msgstr "QT4 工具箱擴充" #: CDocumentation.class:137 msgid "Report designer" msgstr "報表設計器" #: CDocumentation.class:139 msgid "Scanner management library based on SANE" msgstr "" #: CDocumentation.class:140 msgid "SDL library" msgstr "SDL 函式庫" #: CDocumentation.class:141 msgid "SDL sound & CD-ROM management" msgstr "SDL 音效 & CD-ROM 管理" #: CDocumentation.class:142 #, fuzzy msgid "SDL2 component" msgstr "元件" #: CDocumentation.class:143 #, fuzzy msgid "SDL2 audio component" msgstr "OpenGL 工具元件" #: CDocumentation.class:144 msgid "Application settings management" msgstr "應用程式設定管理" #: CDocumentation.class:145 msgid "Signals management" msgstr "訊號管理" #: CDocumentation.class:146 #, fuzzy msgid "Terminal management" msgstr "訊號管理" #: CDocumentation.class:147 #, fuzzy msgid "Graphical terminal applications development" msgstr "圖形應用程式" #: CDocumentation.class:148 #, fuzzy msgid "Unit tests component" msgstr "OpenGL 工具元件" #: CDocumentation.class:149 #, fuzzy msgid "Utility component" msgstr "OpenGL 工具元件" #: CDocumentation.class:150 #, fuzzy msgid "Web applications utility component" msgstr "網頁應用程式工具" #: CDocumentation.class:151 msgid "Video capture" msgstr "錄影" #: CDocumentation.class:152 msgid "Visual Basic compatibility" msgstr "與 Visual Basic 的相容性" #: CDocumentation.class:153 msgid "XML tools" msgstr "" #: CDocumentation.class:154 msgid "HTML generator" msgstr "" #: CDocumentation.class:155 msgid "XML-RPC protocol" msgstr "XML-RPC 協定" #: CDocumentation.class:156 msgid "XSLT tools based on libxslt and libxml" msgstr "" #: CDocumentation.class:157 msgid "Web applications tools" msgstr "網頁應用程式工具" #: CDocumentation.class:158 msgid "Web feed parser and generator" msgstr "" #: CDocumentation.class:159 #, fuzzy msgid "Web application development" msgstr "網頁應用程式工具" #: CDocumentation.class:160 #, fuzzy msgid "Web application development using processes as session" msgstr "網頁應用程式工具" #: CDocumentation.class:166 FProjectProperty.form:562 msgid "Graphical form management" msgstr "圖形表單管理" #: CDocumentation.class:167 FProjectProperty.form:568 msgid "Event loop management" msgstr "事件迴圈管理" #: CDocumentation.class:169 FProjectProperty.form:585 msgid "OpenGL display" msgstr "OpenGL 顯示" #: CDocumentation.class:170 msgid "Complex numbers" msgstr "" #: CDocumentation.class:171 FProjectProperty.form:591 msgid "XML management" msgstr "" #: CInsertColor.class:295 FEditor.form:212 FTextEditor.form:225 msgid "Insert color" msgstr "插入顏色" #: CInsertDate.class:58 FEditor.form:563 FTextEditor.form:580 #, fuzzy msgid "Insert today's date" msgstr "插入選單" #: CLibraryInfo.class:194 msgid "&1: &2" msgstr "" #: CLibraryInfo.class:206 FDebugInfo.class:51 FMakeExecutable.form:43 #: FProjectProperty.form:332 LibraryItem.class:54 msgid "Location" msgstr "位置" #: CLibraryInfo.class:208 LibraryItem.class:56 msgid "WARNING! Library not found." msgstr "警告! 找不到函式庫." #: CLibraryInfo.class:210 LibraryItem.class:58 msgid "Provides" msgstr "提供" #: CModule.class:29 FEditor.form:416 FForm.form:468 FMain.form:959 #: FToolBox.class:36 msgid "Form" msgstr "Form" #: CModule.class:29 msgid "Forms" msgstr "Forms" #: CModule.class:29 msgid "Gambas forms" msgstr "Gambas forms" #: CModule.class:30 msgid "Gambas web pages" msgstr "Gambas 網頁" #: CModule.class:30 FMain.form:966 msgid "WebPage" msgstr "網頁" #: CModule.class:30 msgid "WebPages" msgstr "網頁" #: CModule.class:31 msgid "Gambas reports" msgstr "Gambas 報告" #: CModule.class:31 FMain.form:973 FToolBox.class:36 msgid "Report" msgstr "報表" #: CModule.class:31 msgid "Reports" msgstr "報表" #: CModule.class:32 #, fuzzy msgid "Gambas web forms" msgstr "Gambas forms" #: CModule.class:32 FMain.form:980 FToolBox.class:36 #, fuzzy msgid "WebForm" msgstr "Form" #: CModule.class:32 #, fuzzy msgid "WebForms" msgstr "Forms" #: CModule.class:33 #, fuzzy msgid "Gambas terminal forms" msgstr "Gambas forms" #: CModule.class:33 FMain.form:987 FToolBox.class:36 #, fuzzy msgid "TermForm" msgstr "Form" #: CModule.class:33 #, fuzzy msgid "TermForms" msgstr "Forms" #: CProfile.class:114 msgid "Evaluator" msgstr "" #: CProfile.class:116 msgid "Event loop" msgstr "" #: CProjectList.class:108 msgid "Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..." msgstr "" #: CProjectList.class:108 msgid "here" msgstr "" #: CProjectList.class:234 #, fuzzy msgid "IDE extensions" msgstr "自動加上副檔名" #: CProjectList.class:553 CVersionControlGit.class:448 #: CWaitingAnimation.class:63 FColorChooser.form:73 FComponentChooser.form:97 #: FConflict.class:197 FConnectionEditor.class:470 FCrash.form:100 #: FCreateFile.form:204 FDebugExpr.form:46 FDebugInfo.form:460 #: FExportData.class:126 FFarmConfig.form:38 FFarmLogin.form:126 #: FFarmRegister.form:141 FFarmRequest.form:43 FFieldChooser.form:144 #: FFileInfoVC.class:88 FFontChooser.form:40 FGotoLine.form:23 #: FHelpBrowser.form:72 FImageOffsetSelection.form:39 FImageQuality.form:30 #: FImageResize.form:49 FImageRotate.form:32 FLayout.form:50 FList.form:128 #: FMain.class:258 FMakeExecutable.form:172 FMakeInstall.class:376 #: FMenu.form:438 FNewConnection.form:318 FNewTable.form:86 #: FNewTranslation.form:21 FOption.class:854 FPasteSpecial.form:86 #: FPasteTable.form:105 FProjectChooser.form:73 FProjectProperty.form:1021 #: FProjectVersion.class:211 FProxy.form:57 FPublish.class:273 #: FReportBorderChooser.form:48 FReportBoxShadowChooser.form:27 #: FReportBrushChooser.form:36 FReportCoordChooser.form:26 #: FReportPaddingChooser.form:75 FSave.form:29 FSaveProjectAs.form:81 #: FSearch.class:942 FSelectComponent.form:39 FSelectExtraFile.form:43 #: FSelectIcon.form:99 FSelectLibrary.form:66 FSnippet.form:57 #: FSoftwareFarm.class:563 FTableChooser.form:68 FTestSuite.class:404 #: FText.form:40 FTranslate.class:679 FVersionControl.form:130 #: FWebFontChooser.form:129 Project.module:582 VersionControl.module:430 msgid "Cancel" msgstr "取消" #: CProjectList.class:553 #, fuzzy msgid "Do you really want to uninstall this software?" msgstr "你要刪除這個檔案嗎?" #: CProjectList.class:553 FSelectLibrary.form:48 FSoftwareFarm.class:388 msgid "Uninstall" msgstr "" #: CProjectList.class:556 #, fuzzy msgid "Unable to uninstall software:" msgstr "無法連接到資料庫." #: CProjectList.class:560 #, fuzzy msgid "The software has been successfully uninstalled." msgstr "專案建立成功." #: CProjectTree.class:98 msgid "Files" msgstr "" #: CProjectTree.class:370 FHelpShortcut.form:21 FMain.form:437 #: FSearch.class:124 FSelectIcon.form:32 msgid "Project" msgstr "專案" #: CProjectTree.class:373 msgid "Sources" msgstr "原始碼" #: CProjectTree.class:375 msgid "Connections" msgstr "連結" #: CProjectTree.class:376 msgid "Public" msgstr "" #: CProjectTree.class:377 FToolBox.class:36 msgid "Data" msgstr "Data" #: CRecentProject.class:68 FMain.class:752 msgid "Today" msgstr "今天" #: CRecentProject.class:70 msgid "Yesterday" msgstr "昨天" #: CRecentProject.class:72 msgid "Two days ago" msgstr "兩天前" #: CRecentProject.class:74 msgid "This week" msgstr "這個星期" #: CRecentProject.class:76 msgid "This month" msgstr "這個月" #: CSoftware.class:317 msgid "Download cancelled" msgstr "" #: CSoftware.class:326 msgid "The checksum of the downloaded package is invalid." msgstr "" #: CSoftware.class:342 #, fuzzy msgid "Unable to uncompress source archive." msgstr "無法壓縮檔案." #: CSoftware.class:361 msgid "Abort" msgstr "" #: CSoftware.class:361 FMain.class:2781 FMenu.class:99 msgid "Ignore" msgstr "忽略" #: CSoftware.class:361 #, fuzzy msgid "The following components are required:" msgstr "以下類別有循環繼承:" #: CSoftware.class:389 #, fuzzy msgid "Unable to compile the project." msgstr "無法儲存專案." #: CSoftware.class:396 #, fuzzy msgid "Unable to make executable." msgstr "無法產生執行檔." #: CSoftware.class:465 #, fuzzy msgid "Unable to install source directory" msgstr "無法建立暫存目錄" #: CSoftware.class:664 #, fuzzy msgid "yesterday" msgstr "昨天" #: CSoftware.class:666 #, fuzzy msgid "&1 days ago" msgstr "兩天前" #: CSoftware.class:672 #, fuzzy msgid "last week" msgstr "這個星期" #: CSoftware.class:674 msgid "&1 weeks ago" msgstr "" #: CSoftware.class:680 #, fuzzy msgid "last month" msgstr "這個月" #: CSoftware.class:682 msgid "&1 months ago" msgstr "" #: CSoftware.class:688 msgid "last year" msgstr "" #: CSoftware.class:690 #, fuzzy msgid "on &1" msgstr "於 &1." #: CVersionControlGit.class:341 #, fuzzy msgid "Unable to push the project." msgstr "無法儲存專案." #: CVersionControlGit.class:355 CVersionControlSubversion.class:304 msgid "Local root path" msgstr "" #: CVersionControlGit.class:358 #, fuzzy msgid "Last commit" msgstr "貼上為註解" #: CVersionControlGit.class:359 CVersionControlSubversion.class:306 msgid "Last commit author" msgstr "" #: CVersionControlGit.class:360 CVersionControlSubversion.class:307 msgid "Last commit date" msgstr "" #: CVersionControlGit.class:367 #, fuzzy msgid "Current branch" msgstr "目前的物件" #: CVersionControlGit.class:368 msgid "Origin" msgstr "" #: CVersionControlGit.class:375 #, fuzzy msgid "The current branch is up to date." msgstr "在彈出式視窗裝顯示文件" #: CVersionControlGit.class:377 msgid "One file to commit in the current branch." msgstr "" #: CVersionControlGit.class:379 msgid "&1 files to commit in the current branch." msgstr "" #: CVersionControlGit.class:386 #, fuzzy msgid "None in the current project." msgstr "無法建立專案!" #: CVersionControlGit.class:388 #, fuzzy msgid "One in the current project." msgstr "無法建立專案!" #: CVersionControlGit.class:390 #, fuzzy msgid "&1 in the current project." msgstr "最近的專案" #: CVersionControlGit.class:394 #, fuzzy msgid "Status" msgstr "狀態列" #: CVersionControlGit.class:397 CVersionControlSubversion.class:322 #, fuzzy msgid "Remote repository URL" msgstr "主目錄" #: CVersionControlGit.class:448 #, fuzzy msgid "A new Git repository will be created for this project." msgstr "下次提交之前, 此目錄會被移除." #: CVersionControlGit.class:448 FColorChooser.form:67 #: FConnectionEditor.class:721 FCrash.form:94 FCreateFile.form:210 #: FFarmConfig.form:33 FFarmLogin.form:121 FFieldChooser.form:138 #: FFontChooser.form:34 FGotoLine.form:17 FImageOffsetSelection.form:33 #: FImageQuality.form:24 FImageResize.form:105 FImageRotate.form:26 #: FLayout.form:44 FList.form:122 FMakeExecutable.form:166 FMenu.form:433 #: FNewConnection.form:312 FNewTable.form:80 FNewTranslation.form:15 #: FPasteSpecial.form:80 FProjectProperty.form:1015 FProxy.form:63 #: FReportBorderChooser.form:54 FReportBoxShadowChooser.form:33 #: FReportBrushChooser.form:42 FReportCoordChooser.form:32 #: FReportPaddingChooser.form:69 FSelectComponent.form:34 #: FSelectExtraFile.form:37 FSelectIcon.form:105 FSelectLibrary.form:60 #: FSnippet.form:51 FTableChooser.form:62 FText.form:34 FVersionError.form:53 #: FWebFontChooser.form:123 Project.module:2641 msgid "OK" msgstr "OK" #: CVersionControlGit.class:486 #, fuzzy msgid "Solve conflict." msgstr "版本衝突" #: CVersionControlGit.class:511 FConnectionEditor.class:842 #: FProjectVersion.class:290 MConnection.module:141 msgid "Date" msgstr "日期" #: CVersionControlSubversion.class:305 FProjectVersion.class:284 msgid "Revision" msgstr "" #: CVersionControlSubversion.class:323 #, fuzzy msgid "Remote revision" msgstr "移除所有表示式" #: CVersionControlSubversion.class:324 msgid "Remote last commit author" msgstr "" #: CVersionControlSubversion.class:325 msgid "Remote last commit date" msgstr "" #: CWelcome.class:164 msgid "The Gambas font is published under the SIL Open Font License." msgstr "" #: CWelcome.class:164 msgid "This program is published under the GNU General Public License." msgstr "" #: Design.module:227 Project.module:2323 msgid "first" msgstr "第一個" #: Design.module:229 Project.module:2325 msgid "second" msgstr "第二個" #: Design.module:231 Project.module:2327 msgid "third" msgstr "第三個" #: Design.module:460 msgid "The program has been interrupted by CTRL+C." msgstr "" #: Design.module:464 #, fuzzy msgid "The program has been terminated." msgstr "專案建立成功." #: Design.module:472 msgid "" "The program has returned\n" "the value: &1" msgstr "" "這程式回傳\n" "數值 : &1" #: Design.module:753 #, fuzzy msgid "The project has no test module." msgstr "此專案不存在." #: Design.module:1064 msgid "Output terminal" msgstr "輸出終端機" #: Design.module:1092 msgid "No terminal emulator found." msgstr "找不到終端機模擬器." #: FAbout.class:213 FMakeInstall.form:333 msgid "License" msgstr "授權合約" #: FAbout.class:241 msgid "Financial support" msgstr "金錢支援" #: FAbout.form:12 FMain.form:1367 FWelcome.class:76 msgid "About Gambas" msgstr "關於 Gambas(A)" #: FAbout.form:25 #, fuzzy msgid "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, 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.\n" msgstr "" "

授權條款

\n" "\n" "

本程式是自由軟體,您可以遵照自由軟體基金會 (Free Software Foundation)出版的 GNU 通用公共許可証條款 (GNU General Public License) 第二版來修改和重新發佈這一程式,或者自由選擇使用任何更新的版本。

\n" "\n" "

發佈這一程式的目的是希望它有用,但沒有任何擔保。甚至沒有適合特定目的而隱含的擔保。更詳細的情況請參閱 GNU 通用公共許可証。

\n" #: FArguments.form:13 FMain.form:1799 #, fuzzy msgid "Run with arguments" msgstr "不正確的引數" #: FArguments.form:30 FImageProperty.form:712 FProjectProperty.form:1009 #: FTestSuite.form:164 msgid "Reset" msgstr "重設" #: FArguments.form:40 FMain.form:592 msgid "Run" msgstr "執行" #: FArguments.form:46 FConflict.form:166 FConflictEditor.form:306 #: FDebugInfo.form:467 FEditor.form:348 FFileInfoVC.form:81 #: FFileProperty.form:46 FForm.form:438 FImageEditor.form:391 FMain.form:412 #: FPatch.form:88 FProjectVersion.form:322 FSystemInfo.form:44 #: FTestSuite.form:170 FTextEditor.form:373 FTips.form:87 FTranslate.form:411 msgid "Close" msgstr "關閉" #: FColorChooser.class:85 FImageProperty.form:143 FOption.form:277 #: FReportBrushChooser.form:49 msgid "Color" msgstr "顏色" #: FColorChooser.class:86 msgid "R" msgstr "" #: FColorChooser.class:87 msgid "G" msgstr "" #: FColorChooser.class:88 msgid "B" msgstr "" #: FColorChooser.form:15 msgid "Select a color" msgstr "選擇顏色" #: FColorChooser.form:27 FSoftwareFarm.class:59 msgid "System" msgstr "系統" #: FColorChooser.form:40 msgid "Free" msgstr "可用" #: FComponentChooser.class:351 FProjectProperty.form:479 msgid "Not finished but stable" msgstr "未完成但穩定" #: FComponentChooser.class:353 FProjectProperty.form:479 msgid "Experimental" msgstr "測試" #: FComponentChooser.class:355 msgid "Stable" msgstr "" #: FComponentChooser.class:357 FProjectProperty.form:479 FToolBox.class:36 msgid "Deprecated" msgstr "" #: FComponentChooser.class:577 msgid "This component is required by the following library:

&1" msgstr "" #: FComponentChooser.class:579 msgid "This component is required by the following libraries:

&1" msgstr "" #: FComponentChooser.class:588 msgid "This component is required by:

&1" msgstr "" #: FComponentChooser.class:589 msgid "Keep" msgstr "" #: FComponentChooser.class:589 FDebugInfo.form:236 msgid "Remove all" msgstr "全部移除" #: FComponentChooser.class:694 msgid "These components are incompatible:
&1." msgstr "不相容的元件:
&1." #: FComponentChooser.class:707 msgid "The &1 component needs one of the following components:
&2." msgstr "元件 &1 需要以下元件:
&2." #: FComponentChooser.class:714 msgid "The &1 component needs the &2 component." msgstr "元件 &1 需要元件 &2." #: FComponentChooser.form:26 FSelectComponent.form:12 #, fuzzy msgid "Select a component" msgstr "選擇字型" #: FComponentChooser.form:55 #, fuzzy msgid "Show deprecated components" msgstr "顯示會出的類別" #: FComponentChooser.form:103 FConflictEditor.form:293 #: FConnectionEditor.form:120 FEditor.form:368 FForm.form:445 #: FHelpBrowser.form:78 FImageEditor.form:377 FMain.form:387 #: FProjectEditor.form:35 FTextEditor.form:393 FTranslate.form:93 #: Project.module:924 msgid "Reload" msgstr "重新載入" #: FComponentChooser.form:114 FHelpBrowser.form:88 FImageEditor.form:335 #: FTextEditor.form:774 msgid "Zoom in" msgstr "放大" #: FComponentChooser.form:120 FHelpBrowser.form:94 FImageEditor.form:343 #: FTextEditor.form:781 msgid "Zoom out" msgstr "縮小" #: FComponentChooser.form:126 FHelpBrowser.form:100 FTextEditor.form:788 msgid "No zoom" msgstr "不要縮放" #: FConflict.class:14 FMain.form:1718 msgid "&Edit" msgstr "編輯(&E)" #: FConflict.class:14 #, fuzzy msgid "This file is in conflict. You must resolve the conflict in order to use the file again." msgstr "" "這個檔案與版本 #&1 衝突.\n" "您必須解決衝突以使用此檔案." #: FConflict.class:97 msgid "Unable to load file:" msgstr "" #: FConflict.class:139 FDebugInfo.class:54 FImageEditor.form:618 msgid "Text" msgstr "Text" #: FConflict.class:141 FMain.form:997 FReportBrushChooser.form:49 #: Project.module:243 msgid "Image" msgstr "影像" #: FConflict.class:197 msgid "" "The file has been modified.\n" "Do you really want to close the dialog?" msgstr "" "檔案已修改.\n" "您確定要關閉對話視窗嗎?" #: FConflict.class:225 msgid "Some conflicts are not yet resolved." msgstr "有一些衝突未解決." #: FConflict.class:231 msgid "Unable to resolve the conflict." msgstr "無法解決衝突." #: FConflict.class:259 msgid "" "The file has been modified.\n" "Do you really want to open another file?" msgstr "" "檔案已修改.\n" "您確定要開啟另一個檔案嗎?" #: FConflict.class:267 msgid "Conflict files" msgstr "衝突檔案" #: FConflict.form:31 msgid "Version conflict" msgstr "版本衝突" #: FConflict.form:70 FConflictEditor.form:114 FConnectionEditor.form:246 #: FEditor.form:131 FForm.form:164 FImageEditor.form:138 FMain.form:1079 #: FMenu.form:158 FProjectEditor.form:113 FProjectVersion.form:234 #: FTextEditor.form:145 msgid "Cut" msgstr "剪下" #: FConflict.form:76 FConflictEditor.form:121 FConnectionEditor.form:152 #: FEditor.form:138 FForm.form:171 FImageEditor.form:146 FList.form:99 #: FMain.form:1086 FMakeInstall.form:921 FMenu.form:165 FOutput.form:40 #: FProjectEditor.form:106 FProjectVersion.form:240 FSystemInfo.form:38 #: FTextEditor.form:152 FTranslate.form:114 msgid "Copy" msgstr "複製" #: FConflict.form:82 FConflictEditor.form:128 FConnectionEditor.form:161 #: FEditor.form:145 FForm.form:184 FImageEditor.form:153 FList.form:105 #: FMain.form:1093 FMenu.form:172 FOutput.form:47 FPasteTable.form:99 #: FProjectEditor.form:120 FProjectVersion.form:246 FTextEditor.form:159 msgid "Paste" msgstr "貼上" #: FConflict.form:88 FConflictEditor.form:97 FConnectionEditor.form:267 #: FEditor.form:114 FFieldChooser.form:127 FForm.form:147 FImageEditor.form:119 #: FList.form:111 FOption.form:1740 FProjectVersion.form:252 #: FTextEditor.form:128 msgid "Undo" msgstr "復原" #: FConflict.form:94 FConflictEditor.form:104 FConnectionEditor.form:274 #: FEditor.form:121 FForm.form:154 FImageEditor.form:127 #: FProjectVersion.form:258 FTextEditor.form:135 msgid "Redo" msgstr "取消復原" #: FConflict.form:100 FConflictEditor.form:441 FEditor.form:582 FMenu.form:126 #: FProjectVersion.form:264 FTextEditor.form:599 msgid "Indent" msgstr "縮排" #: FConflict.form:106 FConflictEditor.form:449 FEditor.form:590 FMenu.form:133 #: FProjectVersion.form:270 FTextEditor.form:607 msgid "Unindent" msgstr "取消縮排" #: FConflict.form:141 FMain.form:380 FOpenProject.form:35 #: FProjectChooser.form:85 msgid "Open" msgstr "開啟" #: FConflict.form:149 FConflictEditor.form:299 FConnectionEditor.form:112 #: FEditor.form:374 FForm.form:451 FImageEditor.form:384 FMain.form:396 #: FMenu.class:99 FOption.form:1406 FSaveProjectAs.form:87 FTextEditor.form:399 #: FTranslate.form:234 msgid "Save" msgstr "儲存" #: FConflict.form:160 msgid "Solve" msgstr "解決(v)" #: FConflictEditor.class:962 FEditor.class:2746 FTextEditor.class:1074 msgid "(Declarations)" msgstr "(宣告)" #: FConflictEditor.class:1151 msgid "There are still conflicts in this file." msgstr "" #: FConflictEditor.form:134 FEditor.form:151 FTextEditor.form:165 msgid "Advanced" msgstr "進階" #: FConflictEditor.form:138 FEditor.form:155 FTextEditor.form:169 msgid "Upper case" msgstr "大寫" #: FConflictEditor.form:145 FEditor.form:162 FTextEditor.form:176 msgid "Lower case" msgstr "小寫" #: FConflictEditor.form:155 FEditor.form:172 FTextEditor.form:201 msgid "Comment" msgstr "注解" #: FConflictEditor.form:162 FEditor.form:179 FTextEditor.form:208 msgid "Uncomment" msgstr "取消注解" #: FConflictEditor.form:172 FEditor.form:189 FPasteSpecial.form:19 #: FTextEditor.form:218 msgid "Paste special" msgstr "特殊貼上" #: FConflictEditor.form:183 FEditor.form:223 FImageEditor.form:222 #: FTextEditor.form:250 msgid "Select All" msgstr "選擇全部(A)" #: FConflictEditor.form:193 FEditor.form:238 FGotoLine.form:12 #: FTextEditor.form:260 msgid "Go to line" msgstr "前往指定行" #: FConflictEditor.form:198 FEditor.form:243 FTextEditor.form:265 msgid "Bookmarks" msgstr "" #: FConflictEditor.form:206 FEditor.form:258 FTextEditor.form:273 msgid "Find next" msgstr "尋找下一個" #: FConflictEditor.form:213 FEditor.form:265 FTextEditor.form:280 msgid "Find previous" msgstr "搜尋上一個" #: FConflictEditor.form:222 FEditor.form:274 FImageEditor.form:330 #: FMain.form:776 FTextEditor.form:289 FToolBox.class:36 msgid "View" msgstr "檢視" #: FConflictEditor.form:226 FEditor.form:278 FTextEditor.form:293 #, fuzzy msgid "Automatic word wrap" msgstr "自動化" #: FConflictEditor.form:233 FTextEditor.form:300 #, fuzzy msgid "Indent with tab" msgstr "縮排" #: FConflictEditor.form:240 FEditor.form:285 FTextEditor.form:310 msgid "No split" msgstr "不要分割" #: FConflictEditor.form:246 FEditor.form:291 FTextEditor.form:316 msgid "Horizontal split" msgstr "水平分割" #: FConflictEditor.form:253 FEditor.form:298 FTextEditor.form:323 msgid "Vertical split" msgstr "垂直分割" #: FConflictEditor.form:260 FImportTable.form:89 FTextEditor.form:340 msgid "End of line" msgstr "換行" #: FConflictEditor.form:263 FTextEditor.form:343 msgid "Unix" msgstr "" #: FConflictEditor.form:268 FTextEditor.form:348 msgid "Windows" msgstr "" #: FConflictEditor.form:273 FTextEditor.form:353 msgid "MAC" msgstr "" #: FConflictEditor.form:283 FForm.form:414 FMain.form:1054 FTextEditor.form:363 msgid "Open code" msgstr "開啟程式碼" #: FConflictEditor.form:316 FEditor.form:384 FPasteSpecial.form:60 #: FTextEditor.form:409 msgid "Paste as string" msgstr "貼上並加上引號" #: FConflictEditor.form:321 FEditor.form:389 FPasteSpecial.form:65 #: FTextEditor.form:414 msgid "Paste as multi-line string" msgstr "貼上為多行字串" #: FConflictEditor.form:326 FEditor.form:394 FPasteSpecial.form:50 #: FTextEditor.form:419 msgid "Paste as comments" msgstr "貼上為註解" #: FConflictEditor.form:342 FTextEditor.form:447 msgid "Text editor" msgstr "文字編輯器" #: FConflictEditor.form:348 FForm.form:474 FTextEditor.form:453 msgid "Code" msgstr "程式碼" #: FConflictEditor.form:377 #, fuzzy msgid "Conflict solved" msgstr "衝突檔案" #: FConflictEditor.form:510 #, fuzzy msgid "Previous conflict" msgstr "版本衝突" #: FConflictEditor.form:518 #, fuzzy msgid "Next conflict" msgstr "版本衝突" #: FConflictEditor.form:527 msgid "Keep my changes" msgstr "" #: FConflictEditor.form:535 msgid "Take their changes" msgstr "" #: FConflictEditor.form:543 msgid "Keep all my changes" msgstr "" #: FConflictEditor.form:552 msgid "Take all their changes" msgstr "" #: FConnectionEditor.class:51 FCreateFile.form:62 FMakeInstall.form:265 #: FNewConnection.form:70 FNewTable.form:33 FOption.form:323 #: FProjectProperty.form:320 msgid "Name" msgstr "名稱" #: FConnectionEditor.class:56 FCreateFile.form:113 FDebugInfo.class:58 #: FNewConnection.form:84 FNewTable.form:48 FProjectProperty.form:356 #: FProxy.form:27 msgid "Type" msgstr "類型" #: FConnectionEditor.class:61 msgid "Length" msgstr "長度" #: FConnectionEditor.class:66 msgid "Default value" msgstr "預設值" #: FConnectionEditor.class:71 #, fuzzy msgid "Collation" msgstr "編譯" #: FConnectionEditor.class:82 FDebugExpr.class:505 FHelpBrowser.form:48 msgid "Index" msgstr "索引" #: FConnectionEditor.class:87 msgid "Unique" msgstr "獨一" #: FConnectionEditor.class:92 FImportTable.class:363 msgid "Field" msgstr "欄位" #: FConnectionEditor.class:120 msgid "SQL requests" msgstr "" #: FConnectionEditor.class:351 msgid "Unable to connect to database." msgstr "無法連接到資料庫." #: FConnectionEditor.class:470 FSave.form:36 msgid "Do not save" msgstr "不儲存" #: FConnectionEditor.class:470 msgid "The table '&1' has been modified. Do you want to save it?" msgstr "表格 '&1' 已經更動. 您要儲存它嗎?" #: FConnectionEditor.class:498 #, fuzzy msgid "No record" msgstr "沒有紀錄被匯入." #: FConnectionEditor.class:500 #, fuzzy msgid "One record" msgstr "匯入了一筆紀錄." #: FConnectionEditor.class:502 #, fuzzy msgid "&1 records" msgstr "已匯入 &1 筆紀錄." #: FConnectionEditor.class:644 msgid "Unable to load table '&1'." msgstr "無法載入表格 '&1'." #: FConnectionEditor.class:700 msgid "Running request" msgstr "" #: FConnectionEditor.class:719 msgid "Unable to run query." msgstr "無法執行查詢." #: FConnectionEditor.class:722 Project.module:2643 #, fuzzy msgid "(in &1 s)" msgstr "於 &1." #: FConnectionEditor.class:755 msgid "unlimited" msgstr "無限制" #: FConnectionEditor.class:842 MConnection.module:149 msgid "Blob" msgstr "二進位物件" #: FConnectionEditor.class:842 MConnection.module:143 msgid "Boolean" msgstr "布林值" #: FConnectionEditor.class:842 MConnection.module:139 msgid "Float" msgstr "浮點數" #: FConnectionEditor.class:842 MConnection.module:135 msgid "Integer" msgstr "整數" #: FConnectionEditor.class:842 MConnection.module:137 msgid "Long" msgstr "長整數" #: FConnectionEditor.class:842 MConnection.module:147 msgid "Serial" msgstr "序列" #: FConnectionEditor.class:842 MConnection.module:145 msgid "String" msgstr "字串" #: FConnectionEditor.class:931 msgid "This name is already in used." msgstr "名稱已經被使用." #: FConnectionEditor.class:956 msgid "Please enter a number." msgstr "請輸入數字." #: FConnectionEditor.class:961 msgid "The length must be greater than 1 and lower than 255." msgstr "長度必須介在 1~255 之間." #: FConnectionEditor.class:985 msgid "Type mismatch." msgstr "型態不符合." #: FConnectionEditor.class:1037 msgid "This name already exists." msgstr "這個名稱已經存在." #: FConnectionEditor.class:1125 msgid "This field is used in an index." msgstr "這個欄位是作為索引使用." #: FConnectionEditor.class:1479 msgid "The table '&1' has no primary key." msgstr "表格 '&1' 沒有主要鍵值." #: FConnectionEditor.class:1615 msgid "Cannot write table '&1'." msgstr "無法寫入表格 '&1'." #: FConnectionEditor.class:1713 msgid "Do you really want to delete table '&1'?" msgstr "您確定要刪除表格 '&1' 嗎?" #: FConnectionEditor.class:1726 msgid "Cannot delete table '&1'." msgstr "無法刪除表格 '&1'." #: FConnectionEditor.class:1782 msgid "Do you really want to remove the selected rows?" msgstr "您確定要移除選取的列嗎?" #: FConnectionEditor.class:1946 msgid "Do you really want to remove this query?" msgstr "" #: FConnectionEditor.form:80 msgid "Connection editor" msgstr "連結編輯器" #: FConnectionEditor.form:91 msgid "Show system tables" msgstr "顯示系統表格" #: FConnectionEditor.form:102 FNewTable.form:19 msgid "New table" msgstr "新增表格" #: FConnectionEditor.form:131 msgid "Delete table" msgstr "刪除表格" #: FConnectionEditor.form:134 FDebugInfo.form:212 FMain.form:1273 #: FMakeInstall.form:762 FOption.form:1225 FProjectProperty.form:636 #: FPublish.form:268 FSoftwareFarm.form:426 FTestSuite.class:404 msgid "Remove" msgstr "移除" #: FConnectionEditor.form:140 FNewTable.class:30 msgid "Rename table" msgstr "重新命名表格" #: FConnectionEditor.form:143 FMain.form:1106 msgid "Rename" msgstr "重新命名(R)" #: FConnectionEditor.form:149 msgid "Copy table" msgstr "複製表格" #: FConnectionEditor.form:158 FPasteTable.form:22 msgid "Paste table" msgstr "貼上表格" #: FConnectionEditor.form:167 msgid "Import text file" msgstr "匯入文字檔" #: FConnectionEditor.form:170 FImportTable.form:48 FMain.form:1032 #: FOption.form:1204 FTranslate.form:431 msgid "Import" msgstr "匯入" #: FConnectionEditor.form:217 msgid "Run query" msgstr "執行查詢" #: FConnectionEditor.form:223 msgid "New query" msgstr "" #: FConnectionEditor.form:225 FMain.form:921 FOption.form:1211 #: FTranslate.form:88 msgid "New" msgstr "新的" #: FConnectionEditor.form:231 msgid "Remove query" msgstr "" #: FConnectionEditor.form:239 FDebugInfo.class:278 FImageProperty.form:380 #: FList.form:93 FMakeInstall.form:780 FOption.class:854 FOutput.form:54 #: FPublish.form:170 msgid "Clear" msgstr "清除" #: FConnectionEditor.form:309 msgid "Fields" msgstr "欄位" #: FConnectionEditor.form:325 FMain.class:2221 FMakeInstall.form:756 #: FProjectProperty.form:708 FPublish.form:158 msgid "Add" msgstr "新增" #: FConnectionEditor.form:339 FList.form:77 FMakeInstall.form:774 #: FPublish.form:280 msgid "Down" msgstr "下" #: FConnectionEditor.form:346 FList.form:71 FMakeInstall.form:768 #: FPublish.form:274 msgid "Up" msgstr "上" #: FConnectionEditor.form:354 msgid "Copy field list" msgstr "複製欄位清單" #: FConnectionEditor.form:372 msgid "Indexes" msgstr "索引" #: FConnectionEditor.form:389 msgid "New index" msgstr "新增索引" #: FConnectionEditor.form:455 FDebugExpr.form:28 FMain.form:428 #: FOption.form:1218 msgid "Edit" msgstr "編輯(E)" #: FConnectionEditor.form:462 FExportData.form:15 msgid "Export to CSV file" msgstr "匯出到CSV檔" #: FConnectionEditor.form:465 FTranslate.form:131 msgid "Export" msgstr "匯出(E)" #: FConnectionEditor.form:492 FForm.form:191 FList.form:65 FMain.form:1113 #: FMenu.form:116 FNewConnection.class:402 FOption.form:1413 #: FProjectEditor.form:127 FSoftwareFarm.class:665 FTranslate.form:98 msgid "Delete" msgstr "刪除" #: FConnectionEditor.form:500 FForm.form:225 msgid "Select all" msgstr "選擇全部" #: FConnectionEditor.form:508 FForm.form:237 msgid "Unselect all" msgstr "全部取消選取" #: FConvert.form:10 msgid "Gambas 3 project conversion" msgstr "Gambas 3 專案轉換" #: FCrash.class:73 FTranslate.class:245 Project.module:4798 msgid "The '&1' command has failed." msgstr "" #: FCrash.class:89 msgid "Unable to send bug report." msgstr "" #: FCrash.class:96 msgid "The program has stopped unexpectedly!" msgstr "" #: FCrash.class:132 msgid "Please describe how to reproduce the crash here." msgstr "" #: FCrash.form:22 msgid "Gambas interpreter crash" msgstr "" #: FCrash.form:61 msgid "Send a bug report by mail" msgstr "" #: FCrash.form:67 msgid "Don't join the project to the mail" msgstr "" #: FCreateFile.class:92 msgid "(No parent)" msgstr "(沒有上一層)" #: FCreateFile.class:315 msgid "Cannot add file." msgstr "無法加入檔案." #: FCreateFile.form:37 msgid "New file" msgstr "新增檔案" #: FCreateFile.form:72 FImportTable.form:58 FMakeExecutable.form:51 #: FMakePatch.form:65 FProjectProperty.form:805 FSearch.form:99 msgid "Options" msgstr "選項" #: FCreateFile.form:81 FImageResize.form:32 msgid "Width" msgstr "寬度" #: FCreateFile.form:94 FImageResize.form:44 msgid "Height" msgstr "高度" #: FCreateFile.form:139 msgid "Dialog box management" msgstr "對話視窗管理" #: FCreateFile.form:155 msgid "Parent class" msgstr "父類別" #: FCreateFile.form:168 msgid "Exported" msgstr "匯出" #: FCreateFile.form:174 #, fuzzy msgid "Automatic instance" msgstr "自動加上副檔名" #: FCreateFile.form:180 #, fuzzy msgid "Not creatable" msgstr "不可翻譯" #: FCreateFile.form:190 msgid "Automatic extension" msgstr "自動加上副檔名" #: FCreateProject.class:87 msgid "Project checkout has failed." msgstr "專案取出失敗." #: FCreateProject.class:145 msgid "Cannot create project!" msgstr "無法建立專案!" #: FCreateProject.class:172 #, fuzzy msgid "Please choose a template" msgstr "請選擇選單位置." #: FCreateProject.class:200 msgid "Please enter the location of the repository." msgstr "請輸入儲存庫的位置." #: FCreateProject.form:31 FMain.form:300 msgid "New project" msgstr "開啟新專案" #: FCreateProject.form:46 msgid "Project type" msgstr "專案類型" #: FCreateProject.form:82 FProjectEditor.form:43 #, fuzzy msgid "Parent directory" msgstr "專案目錄" #: FCreateProject.form:90 #, fuzzy msgid "Project details" msgstr "專案屬性" #: FCreateProject.form:99 msgid "Project name" msgstr "專案名稱" #: FCreateProject.form:110 FSaveProjectAs.form:49 msgid "The project name is the name of the project directory." msgstr "" #: FCreateProject.form:121 FSaveProjectAs.form:60 msgid "The project final directory is :" msgstr "" #: FCreateProject.form:134 msgid "Project title" msgstr "" #: FCreateProject.form:145 msgid "The project title is the true name of the application." msgstr "" #: FCreateProject.form:154 FProjectProperty.form:928 msgid "Project is translatable" msgstr "專案可被翻譯的" #: FCreateProject.form:159 FProjectChooser.form:80 ProjectBox.class:304 msgid "Open in another window" msgstr "在新視窗中開啟" #: FCreateProject.form:171 FProjectVersion.form:171 msgid "Repository" msgstr "主目錄" #: FCreateProject.form:182 msgid "The project repository is directly sent to the 'svn checkout' command." msgstr "" #: FDebugButton.form:33 FDebugInfo.form:101 msgid "Debugging" msgstr "除錯" #: FDebugButton.form:42 FDebugInfo.form:195 FMain.form:798 FOption.form:1534 msgid "Console" msgstr "控制台" #: FDebugButton.form:51 FDebugInfo.form:203 MTheme.module:6 msgid "Breakpoints" msgstr "中斷點" #: FDebugButton.form:60 FDebugInfo.form:265 msgid "Warnings" msgstr "" #: FDebugButton.form:69 msgid "Notes" msgstr "" #: FDebugButton.form:78 FDebugInfo.form:306 msgid "Unit tests" msgstr "" #: FDebugButton.form:87 FDebugInfo.form:369 FMain.form:508 #: FProjectProperty.form:959 FVersionControl.class:95 msgid "Version control" msgstr "" #: FDebugButton.form:96 FDebugInfo.form:450 #, fuzzy msgid "Search result" msgstr "搜尋清單" #: FDebugExpr.class:4 msgid "not available" msgstr "不可用" #: FDebugExpr.class:507 FProjectProperty.class:56 msgid "Value" msgstr "數值" #: FDebugExpr.class:511 msgid "Key" msgstr "鍵" #: FDebugExpr.class:517 msgid "Symbol" msgstr "符號" #: FDebugExpr.form:33 msgid "Watch" msgstr "監視" #: FDebugExpr.form:38 #, fuzzy msgid "Print to console" msgstr "浮出主控台" #: FDebugExpr.form:63 msgid "Show all symbols" msgstr "" #: FDebugExpr.form:88 msgid "No element" msgstr "沒有元素" #: FDebugInfo.class:45 FEditor.class:410 FImageEditor.form:588 #: FImportTable.class:66 msgid "Line" msgstr "直線" #: FDebugInfo.class:46 FProfile.class:711 msgid "Function" msgstr "函數" #: FDebugInfo.class:50 FMain.form:296 FTranslate.class:78 msgid "File" msgstr "檔案" #: FDebugInfo.class:53 msgid "Col." msgstr "欄" #: FDebugInfo.class:68 FImportTable.class:68 msgid "Message" msgstr "訊息" #: FDebugInfo.class:125 msgid "native code" msgstr "原生碼" #: FDebugInfo.class:205 #, fuzzy msgid "Watch expressions" msgstr "監視表達式" #: FDebugInfo.class:278 msgid "Do you want to clear the expression list ?" msgstr "你要清除這列表達式嗎?" #: FDebugInfo.class:1112 #, fuzzy msgid "File not loaded" msgstr "找不到檔案!" #: FDebugInfo.class:1255 msgid "Current object" msgstr "目前的物件" #: FDebugInfo.class:1306 msgid "Local variables" msgstr "區域變數" #: FDebugInfo.class:1563 #, fuzzy msgid "Test has failed." msgstr "專案取出失敗." #: FDebugInfo.class:1568 #, fuzzy msgid "Test has succeeded." msgstr "專案取出失敗." #: FDebugInfo.form:81 FMain.form:587 msgid "Debug" msgstr "除錯" #: FDebugInfo.form:131 msgid "Remove current expression" msgstr "移除目前的表示式" #: FDebugInfo.form:137 msgid "Add expression" msgstr "新增運算式" #: FDebugInfo.form:210 #, fuzzy msgid "Remove breakpoint" msgstr "刪除所有中斷點" #: FDebugInfo.form:218 #, fuzzy msgid "Disable breakpoint" msgstr "切換中斷點" #: FDebugInfo.form:220 #, fuzzy msgid "Disable" msgstr "表格" #: FDebugInfo.form:226 #, fuzzy msgid "Enable breakpoint" msgstr "切換中斷點" #: FDebugInfo.form:228 #, fuzzy msgid "Enable" msgstr "表格" #: FDebugInfo.form:234 msgid "Remove all breakpoints" msgstr "刪除所有中斷點" #: FDebugInfo.form:284 msgid "Tasks" msgstr "" #: FDebugInfo.form:313 FOutput.form:78 msgid "Clear console" msgstr "清除終端機內容" #: FDebugInfo.form:320 msgid "Run test" msgstr "" #: FDebugInfo.form:383 FMain.form:513 FProjectVersion.form:89 #: FVersionControl.form:110 msgid "Commit" msgstr "提交(C)" #: FDebugInfo.form:390 FMain.form:519 FReportBorderChooser.form:60 #: FReportPaddingChooser.form:64 msgid "Synchronize" msgstr "同步" #: FDebugInfo.form:397 FMain.form:532 #, fuzzy msgid "Revert all changes" msgstr "刪除所有中斷點" #: FDebugInfo.form:404 FMain.form:538 msgid "Add everything to repository" msgstr "" #: FDebugInfo.form:458 msgid "Cancel current search" msgstr "取消目前的搜尋" #: FDebugInfo.form:474 msgid "Show search window" msgstr "顯示搜尋視窗" #: FDebugInfo.form:481 msgid "Search again" msgstr "重新搜尋" #: FDebugInfo.form:531 FSearch.class:521 FTranslate.class:641 msgid "Search string cannot be found." msgstr "沒發現搜尋字串." #: FEditor.class:409 #, fuzzy msgid "Column" msgstr "欄" #: FEditor.class:411 #, fuzzy msgid "Overwrite" msgstr "覆寫(&O)" #: FEditor.form:196 FTextEditor.form:232 msgid "Format code" msgstr "格式化程式碼" #: FEditor.form:202 msgid "Sort procedures" msgstr "將程序排序" #: FEditor.form:232 msgid "Go to" msgstr "前往指定函式" #: FEditor.form:251 msgid "Find definition" msgstr "搜尋定義" #: FEditor.form:308 FMain.form:1608 msgid "Run until current line" msgstr "執行到目前這行" #: FEditor.form:315 msgid "Toggle breakpoint" msgstr "切換中斷點" #: FEditor.form:322 msgid "Watch expression" msgstr "監視表達式" #: FEditor.form:331 msgid "Open form" msgstr "開啟表單" #: FEditor.form:338 FMain.form:1139 #, fuzzy msgid "Run this class" msgstr "父類別" #: FEditor.form:355 FForm.form:431 FImageEditor.form:369 FTextEditor.form:380 msgid "Locked" msgstr "" #: FEditor.form:361 FHelpBrowser.form:119 FTextEditor.form:386 msgid "Print" msgstr "列印" #: FEditor.form:410 FHelpShortcut.form:23 FOption.form:824 msgid "Editor" msgstr "編輯器" #: FEditor.form:423 FForm.form:481 FTextEditor.form:460 #, fuzzy msgid "Show modifications" msgstr "儲存修改檔案" #: FEditor.form:432 FForm.form:490 FTextEditor.form:469 #, fuzzy msgid "Previous modification" msgstr "版本衝突" #: FEditor.form:439 FForm.form:497 FTextEditor.form:476 #, fuzzy msgid "Next modification" msgstr "版本衝突" #: FEditor.form:572 FTextEditor.form:589 #, fuzzy msgid "Insert special character" msgstr "不正確的字元" #: FEditor.form:615 FTextEditor.form:632 msgid "Make code pretty" msgstr "美化程式碼" #: FEditor.form:680 FTextEditor.form:676 msgid "Procedure list" msgstr "程序清單" #: FEditor.form:704 FImageEditor.form:769 FTextEditor.form:719 msgid "Lock / unlock file" msgstr "" #: FExportData.class:21 FImportTable.class:58 msgid "CSV files" msgstr "CSV 檔" #: FExportData.class:113 msgid "Unable to export data." msgstr "無法匯出資料." #: FExportData.class:126 msgid "&Overwrite" msgstr "覆寫(&O)" #: FExportData.class:126 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "檔案已存在.\n" "\n" "您要覆蓋它嗎?" #: FExportData.form:31 FImportTable.form:101 msgid "Delimiter character" msgstr "分隔字元" #: FExportData.form:42 FImportTable.form:112 msgid "Enclose character" msgstr "閉合字元" #: FExportData.form:54 msgid "Export field names" msgstr "匯出欄位名稱" #: FExportData.form:60 msgid "Export selected records only" msgstr "只匯出已選擇的紀錄" #: FFarmConfig.form:12 msgid "Farm servers" msgstr "" #: FFarmLogin.class:29 msgid "Authentication failed." msgstr "" #: FFarmLogin.form:26 FPublish.form:312 FSoftwareFarm.form:108 msgid "Login" msgstr "" #: FFarmLogin.form:38 FFarmRegister.form:40 msgid "Server" msgstr "" #: FFarmLogin.form:59 FFarmRegister.form:61 FNewConnection.form:144 #: FProjectVersion.form:127 FProxy.form:42 msgid "User" msgstr "使用者" #: FFarmLogin.form:74 FFarmRegister.form:76 FNewConnection.form:164 #: FProjectVersion.form:142 FProxy.form:47 msgid "Password" msgstr "密碼" #: FFarmLogin.form:95 FNewConnection.form:175 FProjectVersion.form:155 msgid "Remember password" msgstr "記住密碼" #: FFarmLogin.form:111 msgid "Be anonymous" msgstr "" #: FFarmRegister.class:28 #, fuzzy msgid "Please enter a valid e-mail address." msgstr "請輸入您的e-mail." #: FFarmRegister.class:34 msgid "Confirm password does not match." msgstr "" #: FFarmRegister.class:40 #, fuzzy msgid "Unable to register user." msgstr "無法執行查詢." #: FFarmRegister.class:40 msgid "" "You have been successfully registered.\n" "\n" "You will receive a confirmation e-mail soon." msgstr "" #: FFarmRegister.form:28 FPublish.form:319 FSoftwareFarm.form:115 msgid "Register" msgstr "" #: FFarmRegister.form:92 #, fuzzy msgid "Confirm password" msgstr "設定邊緣" #: FFarmRegister.form:108 FMakeInstall.form:280 FOption.form:339 msgid "E-mail" msgstr "" #: FFarmRegister.form:121 msgid "" "A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n" "

\n" "Your e-mail will not be stored on the publishing server." msgstr "" #: FFieldChooser.class:54 FTableChooser.class:66 msgid "Unable to open connection." msgstr "無法開啟連結." #: FFieldChooser.class:61 msgid "Unable to get table fields." msgstr "無法取得表格欄位." #: FFieldChooser.class:67 msgid "Edit field list" msgstr "編輯欄位清單" #: FFieldChooser.class:70 msgid "Select a field" msgstr "選擇欄位" #: FFieldChooser.form:39 FTableChooser.form:30 msgid "Connection" msgstr "連結" #: FFieldChooser.form:51 FImportTable.form:156 FPasteTable.form:67 msgid "Table" msgstr "表格" #: FFileInfoVC.class:30 #, fuzzy msgid "'&1' version control" msgstr "加入版本控制(v)" #: FFileInfoVC.class:69 msgid "This file is locked, and will be deleted on the next commit." msgstr "這個檔案已被鎖定, 下次提交的時候會被刪除." #: FFileInfoVC.class:71 msgid "This file is not versioned, and must be added to the repository." msgstr "這個檔案沒有被加入版本控制, 但必須被加入." #: FFileInfoVC.class:74 msgid "This file has not been modified since the last commit." msgstr "這個檔案自從上一次提交後已經更動." #: FFileInfoVC.class:88 FMain.class:1250 FMakeInstall.class:376 #: FProjectVersion.class:211 FSave.form:22 Project.module:614 #: VersionControl.module:430 msgid "Continue" msgstr "繼續" #: FFileInfoVC.class:88 FProjectVersion.class:211 VersionControl.module:430 msgid "You are going to cancel your changes!" msgstr "您將要取消您的修改!" #: FFileInfoVC.form:26 FProjectVersion.form:299 FVersionControl.form:41 msgid "Changes" msgstr "更動" #: FFileInfoVC.form:44 FVersionControl.form:52 #, fuzzy msgid "History" msgstr "排序紀錄" #: FFileInfoVC.form:64 #, fuzzy msgid "Undo changes" msgstr "更動" #: FFileInfoVC.form:71 msgid "Display changes in history" msgstr "" #: FFileProperty.class:30 msgid "Gambas &1" msgstr "" #: FFileProperty.class:37 msgid "Gambas module" msgstr "" #: FFileProperty.class:39 #, fuzzy msgid "Gambas test module" msgstr "Gambas modules" #: FFileProperty.class:41 msgid "Gambas class" msgstr "" #: FFileProperty.class:81 #, fuzzy msgid "'&1' properties" msgstr "將屬性排序" #: FFontChooser.form:12 msgid "Select a font" msgstr "選擇字型" #: FForm.class:136 msgid "Bad form file" msgstr "檔案損壞" #: FForm.class:284 #, fuzzy msgid "Unknown control: &1" msgstr "未知的識別項: &1" #: FForm.class:1361 msgid "Component missing for control &1" msgstr "控制項 &1 缺少元件" #: FForm.class:1923 #, fuzzy msgid "Cannot paste data." msgstr "無法建立表格 '&1'." #: FForm.form:178 msgid "Copy at the same place" msgstr "在相同位置複製" #: FForm.form:198 msgid "Delete container only" msgstr "只刪除容器" #: FForm.form:205 msgid "Embed into a container" msgstr "嵌入容器中" #: FForm.form:211 msgid "Change into" msgstr "轉換為" #: FForm.form:219 msgid "Select" msgstr "選擇" #: FForm.form:232 #, fuzzy msgid "Select parent" msgstr "選擇字型" #: FForm.form:245 msgid "Arrangement" msgstr "排列" #: FForm.form:249 msgid "Bring to foreground" msgstr "換到前景" #: FForm.form:256 msgid "Send to background" msgstr "送到背景" #: FForm.form:266 msgid "Horizontal" msgstr "水平排列" #: FForm.form:273 msgid "Rows" msgstr "列" #: FForm.form:279 msgid "Vertical" msgstr "垂直排列" #: FForm.form:286 msgid "Columns" msgstr "欄" #: FForm.form:295 msgid "Center horizontally" msgstr "水平置中" #: FForm.form:301 msgid "Center vertically" msgstr "垂直置中" #: FForm.form:307 msgid "Alignment" msgstr "對齊" #: FForm.form:311 msgid "Align to left" msgstr "靠左對齊" #: FForm.form:317 msgid "Align to right" msgstr "靠右對齊" #: FForm.form:323 msgid "Align to top" msgstr "對齊上方" #: FForm.form:329 msgid "Align to bottom" msgstr "對齊底部" #: FForm.form:338 msgid "Same width" msgstr "等寬" #: FForm.form:344 msgid "Same height" msgstr "等高" #: FForm.form:353 msgid "Show tab" msgstr "顯示 tab 字元" #: FForm.form:361 msgid "Move tab" msgstr "移動分頁" #: FForm.form:366 msgid "First" msgstr "第一(F)" #: FForm.form:373 FSearch.form:190 FTips.form:75 msgid "Previous" msgstr "上一頁(P)" #: FForm.form:380 FSearch.form:184 FTips.form:81 msgid "Next" msgstr "下一個(N)" #: FForm.form:387 msgid "Last" msgstr "最後一個" #: FForm.form:398 FMenu.form:70 msgid "Menu editor" msgstr "選單編輯器" #: FForm.form:407 msgid "Event" msgstr "事件" #: FForm.form:421 #, fuzzy msgid "Run this form" msgstr "然後執行命令: " #: FForm.form:601 msgid "Toggle grid" msgstr "切換格線" #: FForm.form:610 FImageEditor.form:514 #, fuzzy msgid "Toggle information tooltip" msgstr "套件資訊" #: FForm.form:729 msgid "Move tab first" msgstr "移動分頁到開頭" #: FForm.form:736 msgid "Move tab left" msgstr "向左移動分頁" #: FForm.form:743 msgid "Move tab right" msgstr "向右移動分頁" #: FForm.form:750 msgid "Move tab last" msgstr "移動分頁到結尾" #: FForm.form:778 FOption.form:285 msgid "Bold" msgstr "粗體" #: FForm.form:786 msgid "Italic" msgstr "斜體" #: FForm.form:794 FOption.form:290 msgid "Underline" msgstr "底線" #: FForm.form:802 msgid "Bigger font" msgstr "" #: FForm.form:810 msgid "Smaller font" msgstr "" #: FForm.form:818 FOption.form:1436 msgid "Default font" msgstr "" #: FForm.form:826 FOption.form:1638 MTheme.module:6 msgid "Background" msgstr "背景" #: FForm.form:834 msgid "Foreground" msgstr "" #: FForm.form:845 #, fuzzy msgid "Lock / unlock form" msgstr "鎖定表單" #: FFormStack.form:14 FMain.form:1980 msgid "Hierarchy" msgstr "階層表" #: FFormStack.form:24 msgid "Move top" msgstr "移到最上層" #: FFormStack.form:30 FMenu.form:140 msgid "Move up" msgstr "向上移動" #: FFormStack.form:36 FMenu.form:147 msgid "Move down" msgstr "下移" #: FFormStack.form:42 msgid "Move bottom" msgstr "移到底部" #: FHelpBrowser.class:24 FProjectProperty.form:944 msgid "Default language" msgstr "預設語言" #: FHelpBrowser.form:29 FMain.form:1337 msgid "Help browser" msgstr "說明瀏覽器" #: FHelpBrowser.form:41 msgid "Show help tree" msgstr "顯示說明樹" #: FHelpBrowser.form:60 FMain.form:825 FProfile.form:48 msgid "Go back" msgstr "返回" #: FHelpBrowser.form:66 FMain.form:832 FProfile.form:54 msgid "Go forward" msgstr "往前" #: FHelpShortcut.form:10 msgid "IDE keyboard shortcuts" msgstr "" #: FHelpShortcut.form:25 msgid "Debugger" msgstr "" #: FHelpShortcut.form:27 FOption.form:604 FProjectProperty.form:234 #: FTranslate.form:154 msgid "Translation" msgstr "翻譯" #: FImageEditor.form:159 msgid "Action" msgstr "" #: FImageEditor.form:164 msgid "Crop" msgstr "" #: FImageEditor.form:172 FImageProperty.form:305 msgid "Horizontal flip" msgstr "水平翻轉" #: FImageEditor.form:179 FImageProperty.form:299 msgid "Vertical flip" msgstr "垂直翻轉" #: FImageEditor.form:186 FImageProperty.form:293 msgid "Rotate counter-clockwise" msgstr "逆時鐘旋轉" #: FImageEditor.form:194 FImageProperty.form:287 msgid "Rotate clockwise" msgstr "順時鐘旋轉" #: FImageEditor.form:205 msgid "Resize" msgstr "" #: FImageEditor.form:212 msgid "Rotate" msgstr "" #: FImageEditor.form:229 msgid "Hide selection" msgstr "" #: FImageEditor.form:235 MTheme.module:6 msgid "Selection" msgstr "選定" #: FImageEditor.form:240 msgid "Invert selection" msgstr "" #: FImageEditor.form:248 msgid "Duplicate selection" msgstr "" #: FImageEditor.form:256 FImageOffsetSelection.form:15 msgid "Offset selection" msgstr "" #: FImageEditor.form:266 msgid "Union" msgstr "" #: FImageEditor.form:272 #, fuzzy msgid "Difference" msgstr "偏好設定" #: FImageEditor.form:278 #, fuzzy msgid "Intersection" msgstr "選定" #: FImageEditor.form:284 #, fuzzy msgid "Exclusive or" msgstr "排除" #: FImageEditor.form:293 msgid "Shape grid" msgstr "" #: FImageEditor.form:351 msgid "Zoom normal" msgstr "" #: FImageEditor.form:359 msgid "Zoom fit" msgstr "" #: FImageEditor.form:401 msgid "Save as JPEG" msgstr "" #: FImageEditor.form:407 msgid "Save as PNG" msgstr "" #: FImageEditor.form:413 msgid "Save as BMP" msgstr "" #: FImageEditor.form:420 msgid "Save as TIFF" msgstr "" #: FImageEditor.form:427 msgid "Image editor" msgstr "圖片編輯器" #: FImageEditor.form:505 msgid "Drawing grid" msgstr "" #: FImageEditor.form:557 msgid "Move" msgstr "" #: FImageEditor.form:568 msgid "Draw" msgstr "畫" #: FImageEditor.form:578 msgid "Erase" msgstr "" #: FImageEditor.form:598 msgid "Rectangle" msgstr "矩形" #: FImageEditor.form:608 msgid "Ellipse" msgstr "橢圓形" #: FImageEditor.form:628 msgid "Magic wand" msgstr "" #: FImageEditor.form:645 msgid "Edit selection" msgstr "" #: FImageEditor.form:748 msgid "Resize or stretch image" msgstr "" #: FImageEditor.form:757 FImageRotate.form:11 msgid "Rotate image" msgstr "" #: FImageOffsetSelection.form:28 FImageResize.form:129 msgid "px" msgstr "px" #: FImageOffsetSelection.form:52 msgid "Shrink" msgstr "" #: FImageOffsetSelection.form:60 msgid "Grow" msgstr "" #: FImageOffsetSelection.form:67 FReportBorderChooser.form:67 msgid "Border" msgstr "邊框" #: FImageProperty.class:790 msgid "System clipboard" msgstr "" #: FImageProperty.class:1269 msgid "Arrow" msgstr "" #: FImageProperty.class:1271 msgid "Arrow #2" msgstr "" #: FImageProperty.class:1272 msgid "Triangle" msgstr "" #: FImageProperty.class:1273 msgid "Square triangle" msgstr "" #: FImageProperty.class:1274 msgid "Pentagon" msgstr "" #: FImageProperty.class:1275 msgid "Hexagon" msgstr "" #: FImageProperty.form:173 msgid "Gradient" msgstr "" #: FImageProperty.form:189 FReportBrushChooser.form:49 msgid "Linear gradient" msgstr "線性漸層" #: FImageProperty.form:196 FReportBrushChooser.form:49 msgid "Radial gradient" msgstr "放射狀漸層" #: FImageProperty.form:220 FReportBrushChooser.form:87 msgid "Add gradient stop" msgstr "新增漸層參考點" #: FImageProperty.form:226 FReportBrushChooser.form:93 msgid "Remove gradient stop" msgstr "移除漸層參考點" #: FImageProperty.form:232 FReportBrushChooser.form:99 #, fuzzy msgid "Select gradient stop color" msgstr "選擇漸層參考點顏色..." #: FImageProperty.form:238 FReportBrushChooser.form:105 msgid "Invert gradient" msgstr "反轉漸層" #: FImageProperty.form:260 FReportBrushChooser.form:121 msgid "Radius" msgstr "半徑" #: FImageProperty.form:327 msgid "Clipboard" msgstr "" #: FImageProperty.form:339 msgid "Shapes" msgstr "" #: FImageProperty.form:364 msgid "Stroke" msgstr "" #: FImageProperty.form:372 FTranslate.class:1757 msgid "Fill" msgstr "" #: FImageProperty.form:392 #, fuzzy msgid "Colorize" msgstr "顏色" #: FImageProperty.form:400 #, fuzzy msgid "Desaturate" msgstr "功能特色" #: FImageProperty.form:408 #, fuzzy msgid "Make transparent" msgstr "儲存翻譯" #: FImageProperty.form:416 FOption.form:1753 msgid "Invert colors for dark themes" msgstr "" #: FImageProperty.form:426 #, fuzzy msgid "Line cap" msgstr "直線" #: FImageProperty.form:431 #, fuzzy msgid "Line join" msgstr "直線" #: FImageProperty.form:436 msgid "Fill rule" msgstr "" #: FImageProperty.form:454 msgid "Opacity" msgstr "" #: FImageProperty.form:473 FSelectIcon.form:63 FTranslate.class:79 msgid "Size" msgstr "大小" #: FImageProperty.form:490 msgid "Tolerance" msgstr "" #: FImageProperty.form:509 msgid "Roundness" msgstr "" #: FImageProperty.form:535 msgid "Effects" msgstr "" #: FImageProperty.form:545 msgid "Brightness" msgstr "" #: FImageProperty.form:564 msgid "Contrast" msgstr "" #: FImageProperty.form:583 msgid "Gamma" msgstr "" #: FImageProperty.form:602 msgid "Lightness" msgstr "" #: FImageProperty.form:621 msgid "Hue" msgstr "" #: FImageProperty.form:640 msgid "Saturation" msgstr "" #: FImageProperty.form:659 msgid "Blur" msgstr "" #: FImageProperty.form:676 #, fuzzy msgid "Transparency" msgstr "翻譯" #: FImageProperty.form:700 FImportTable.form:188 FTextEditor.form:333 msgid "Preview" msgstr "預覽" #: FImageProperty.form:719 FMain.form:501 FPatch.form:69 msgid "Apply" msgstr "" #: FImageProperty.form:745 msgid "Centered" msgstr "" #: FImageProperty.form:755 msgid "Right align" msgstr "" #: FImageProperty.form:764 msgid "Left align" msgstr "" #: FImageProperty.form:777 msgid "Top align" msgstr "" #: FImageProperty.form:786 msgid "Middle align" msgstr "" #: FImageProperty.form:796 msgid "Baseline align" msgstr "" #: FImageProperty.form:805 msgid "Bottom align" msgstr "" #: FImageProperty.form:841 msgid "Grid resolution" msgstr "" #: FImageProperty.form:859 msgid "Grid snap" msgstr "" #: FImageProperty.form:873 msgid "Draw diagonals" msgstr "" #: FImageQuality.form:10 msgid "Image quality" msgstr "" #: FImageResize.form:25 msgid "Resize image" msgstr "" #: FImageResize.form:64 msgid "Resize and center" msgstr "" #: FImageResize.form:71 msgid "Resize and center horizontally" msgstr "" #: FImageResize.form:78 msgid "Resize and center vertically" msgstr "" #: FImageResize.form:85 msgid "Stretch image" msgstr "" #: FImageResize.form:113 msgid "Add a border" msgstr "" #: FImageResize.form:118 msgid "Ratio" msgstr "" #: FImageRotate.form:21 msgid "°" msgstr "" #: FImportFile.class:23 msgid "Gambas classes" msgstr "Gambas classes" #: FImportFile.class:23 msgid "Gambas modules" msgstr "Gambas modules" #: FImportFile.class:24 #, fuzzy msgid "Gambas test modules" msgstr "Gambas modules" #: FImportFile.class:33 msgid "Cascading style sheets" msgstr "CSS" #: FImportFile.class:33 msgid "HTML files" msgstr "HTML 檔" #: FImportFile.class:33 msgid "Javascript files" msgstr "" #: FImportFile.class:33 msgid "Picture files" msgstr "影像檔" #: FImportFile.class:188 #, fuzzy msgid "Cannot import file." msgstr "無法開啟檔案." #: FImportFile.form:9 #, fuzzy msgid "Import files" msgstr "匯入檔案" #: FImportFile.form:24 #, fuzzy msgid "Create symbolic links" msgstr "建立符號連結" #: FImportTable.class:58 FSearch.form:172 FTranslate.class:1374 msgid "All files" msgstr "全部的檔案" #: FImportTable.class:138 msgid "(Automatic key)" msgstr "(自動編號)" #: FImportTable.class:276 msgid "Field_&1" msgstr "-" #: FImportTable.class:391 msgid "Not enough values" msgstr "值的數目不足" #: FImportTable.class:393 msgid "Too many values" msgstr "數值過多" #: FImportTable.class:418 msgid "Cancelled by user" msgstr "使用者取消" #: FImportTable.class:427 msgid "No record imported." msgstr "沒有紀錄被匯入." #: FImportTable.class:429 msgid "One record imported." msgstr "匯入了一筆紀錄." #: FImportTable.class:431 msgid "&1 records imported." msgstr "已匯入 &1 筆紀錄." #: FImportTable.form:35 msgid "Import file" msgstr "匯入檔案" #: FImportTable.form:51 msgid "Select the CSV file to import" msgstr "選擇要匯入的 CSV 檔" #: FImportTable.form:68 FPasteTable.form:40 msgid "Source" msgstr "原始碼" #: FImportTable.form:78 msgid "Charset" msgstr "字元集" #: FImportTable.form:124 msgid "Strip useless white spaces" msgstr "移除無用的空白字元" #: FImportTable.form:129 msgid "Ignore first lines" msgstr "互略開始的幾行" #: FImportTable.form:139 msgid "Line(s)" msgstr "行" #: FImportTable.form:146 FPasteTable.form:51 msgid "Destination" msgstr "目標" #: FImportTable.form:171 msgid "The first line contains field names" msgstr "第一行包含所有欄位名稱" #: FImportTable.form:176 msgid "Key field" msgstr "鍵值欄位" #: FLayout.class:24 #, fuzzy msgid "Please enter the name of the layout." msgstr "請輸入資料庫名稱." #: FLayout.class:30 FOption.class:1716 #, fuzzy msgid "Override" msgstr "覆寫(&O)" #: FLayout.class:30 #, fuzzy msgid "This layout already exists." msgstr "這個名稱已經存在." #: FLayout.form:14 #, fuzzy msgid "Save layout" msgstr "儲存" #: FLayout.form:22 #, fuzzy msgid "Layout name" msgstr "專案名稱" #: FList.class:103 msgid "Item &1" msgstr "項目 &1" #: FList.class:153 msgid "Do you really want to clear the list?" msgstr "您確定要清除清單嗎?" #: FList.form:25 msgid "Edit list property" msgstr "編輯列表屬性" #: FList.form:59 FMenu.form:89 msgid "Insert" msgstr "" #: FList.form:87 #, fuzzy msgid "Invert" msgstr "轉換" #: FMain.class:258 msgid "Do you really want to delete this link ?" msgstr "您確定要刪除這個連結嗎?" #: FMain.class:261 msgid "Do you really want to delete this directory ?" msgstr "你要刪除這個目錄嗎?" #: FMain.class:273 msgid "Do you really want to delete this file ?" msgstr "你要刪除這個檔案嗎?" #: FMain.class:280 msgid "Cannot delete file or directory" msgstr "無法刪除檔案或目錄" #: FMain.class:298 msgid "File or directory does not exist anymore." msgstr "檔案或目錄已不存在." #: FMain.class:773 msgid "Sort history" msgstr "排序紀錄" #: FMain.class:777 FOpenProject.form:76 FWelcome.form:35 msgid "Sort by date" msgstr "以日期排序" #: FMain.class:777 FOpenProject.form:85 FWelcome.form:43 msgid "Sort by name" msgstr "以名稱排序" #: FMain.class:777 FOpenProject.form:93 FWelcome.form:50 msgid "Sort by path" msgstr "以路徑排序" #: FMain.class:789 msgid "&Clear history" msgstr "清除紀錄(&C)" #: FMain.class:969 msgid "New folder" msgstr "新增資料夾" #: FMain.class:1040 msgid "" "The GNU translation tools are not installed on your system.\n" "\n" "Please install them to be able to do the translation." msgstr "" "您的系統並未安裝 GNU 翻譯工具.\n" "\n" "請安裝它們以進行翻譯." #: FMain.class:1779 msgid "Unable to drop file into the project." msgstr "無法將檔案拖入專案." #: FMain.class:1904 msgid "All backup or generated files will be removed from the project directory." msgstr "所有的備份檔以及輸出檔將會從專案目錄中移除." #: FMain.class:1904 msgid "Clean" msgstr "清理" #: FMain.class:2221 msgid "Do you really want to add every file to the repository?" msgstr "" #: FMain.class:2359 msgid "Choose a profile" msgstr "" #: FMain.class:2360 msgid "Profile for &1 project" msgstr "" #: FMain.class:2608 FProperty.class:1034 msgid "Select a file" msgstr "選擇檔案" #: FMain.class:2623 msgid "This file is located inside the project." msgstr "" #: FMain.class:2781 Project.module:924 msgid "" "The file has been modified.\n" "\n" "All your changes will be lost." msgstr "" "這個檔案已經被修改.\n" "\n" "全部您的異動將消失." #: FMain.form:307 FWelcome.class:70 msgid "Open project" msgstr "開啟專案" #: FMain.form:313 msgid "Open recent" msgstr "開啟最近的檔案(r)" #: FMain.form:321 msgid "Open example" msgstr "開啟範例(e)" #: FMain.form:330 FWelcome.class:75 msgid "Open file" msgstr "" #: FMain.form:339 msgid "Save project" msgstr "儲存專案" #: FMain.form:347 FSaveProjectAs.form:19 msgid "Save project as" msgstr "另存專案" #: FMain.form:358 #, fuzzy msgid "Reload project" msgstr "選擇一個專案" #: FMain.form:367 FSave.class:28 FWelcome.class:77 msgid "Quit" msgstr "結束" #: FMain.form:402 Project.module:6969 #, fuzzy msgid "Save as" msgstr "儲存" #: FMain.form:442 msgid "Compile" msgstr "編譯" #: FMain.form:449 msgid "Compile All" msgstr "全部編譯(A)" #: FMain.form:459 msgid "Translate" msgstr "翻譯" #: FMain.form:468 msgid "Make" msgstr "製作" #: FMain.form:472 msgid "Executable" msgstr "可執行檔...(x)" #: FMain.form:479 FMakePatch.form:52 msgid "Source archive" msgstr "原始碼歸檔(S)" #: FMain.form:486 msgid "Installation package" msgstr "可安裝套件...(I)" #: FMain.form:493 msgid "Patch" msgstr "" #: FMain.form:496 msgid "Create" msgstr "" #: FMain.form:525 msgid "Undo synchronization" msgstr "" #: FMain.form:544 msgid "Branch" msgstr "" #: FMain.form:549 #, fuzzy msgid "Put under version control" msgstr "加入版本控制(v)" #: FMain.form:555 FPublish.form:64 msgid "Publish" msgstr "" #: FMain.form:564 FProjectVersion.form:95 msgid "Clean up" msgstr "清理" #: FMain.form:570 msgid "Refresh" msgstr "刷新(R)" #: FMain.form:599 msgid "Run with" msgstr "" #: FMain.form:607 msgid "Test" msgstr "" #: FMain.form:614 FTestSuite.form:31 msgid "Test suites" msgstr "" #: FMain.form:623 msgid "Pause" msgstr "暫停" #: FMain.form:630 msgid "Stop" msgstr "終止" #: FMain.form:637 msgid "Step" msgstr "步進" #: FMain.form:644 msgid "Forward" msgstr "向前" #: FMain.form:651 msgid "Finish" msgstr "完成(h)" #: FMain.form:660 msgid "Use terminal emulator" msgstr "" #: FMain.form:666 msgid "Redirect standard error output" msgstr "" #: FMain.form:672 msgid "Use embedded HTTP server" msgstr "" #: FMain.form:681 #, fuzzy msgid "Invert language orientation" msgstr "反轉漸層" #: FMain.form:688 msgid "Disable just-in-time compiler" msgstr "" #: FMain.form:695 msgid "Show just-in-time compiler debugging messages" msgstr "" #: FMain.form:702 #, fuzzy msgid "Show database requests" msgstr "忽略資料庫字元集" #: FMain.form:709 FProjectProperty.form:164 msgid "GUI component" msgstr "" #: FMain.form:713 msgid "Current desktop" msgstr "" #: FMain.form:750 msgid "Activate profiling" msgstr "" #: FMain.form:756 msgid "Open profile" msgstr "" #: FMain.form:765 msgid "Clear all breakpoints" msgstr "清除所有中斷點(a)" #: FMain.form:770 msgid "Close all debug windows" msgstr "關閉所有除錯視窗(d)" #: FMain.form:808 msgid "Status bar" msgstr "狀態列" #: FMain.form:815 msgid "Hide menubar" msgstr "隱藏選單列" #: FMain.form:839 msgid "Close all windows" msgstr "關閉全部視窗(a)" #: FMain.form:846 msgid "Tools" msgstr "" #: FMain.form:850 msgid "Find" msgstr "搜尋...(F)" #: FMain.form:856 FSearch.form:75 msgid "Replace" msgstr "替換" #: FMain.form:866 msgid "Browse project" msgstr "瀏覽專案...(B)" #: FMain.form:873 msgid "Open a terminal" msgstr "開啟終端機...(O)" #: FMain.form:880 msgid "Send project by mail" msgstr "" #: FMain.form:886 msgid "Update all forms" msgstr "" #: FMain.form:895 FWelcome.class:74 msgid "Software farm" msgstr "" #: FMain.form:904 msgid "Shortcuts" msgstr "快捷鍵" #: FMain.form:910 FOption.form:265 msgid "Preferences" msgstr "偏好設定" #: FMain.form:924 msgid "Directory" msgstr "目錄" #: FMain.form:929 msgid "Project link" msgstr "專案連結...(P)" #: FMain.form:938 msgid "Module" msgstr "Module" #: FMain.form:945 #, fuzzy msgid "Test module" msgstr "Gambas modules" #: FMain.form:1004 msgid "HTML file" msgstr "HTML 檔" #: FMain.form:1011 msgid "Style sheet" msgstr "樣式表" #: FMain.form:1018 msgid "Javascript file" msgstr "" #: FMain.form:1025 msgid "Other" msgstr "其他(O)" #: FMain.form:1036 FOpenProject.form:44 msgid "Recent" msgstr "最近" #: FMain.form:1059 #, fuzzy msgid "Open in file manager" msgstr "設定檔管理" #: FMain.form:1064 #, fuzzy msgid "Open in project" msgstr "開啟專案" #: FMain.form:1068 msgid "Open with" msgstr "" #: FMain.form:1100 msgid "Duplicate" msgstr "" #: FMain.form:1123 msgid "Copy file path" msgstr "複製檔案路徑(h)" #: FMain.form:1132 msgid "Startup class" msgstr "起始 class(S)" #: FMain.form:1147 msgid "Add to repository" msgstr "加入儲存庫(A)" #: FMain.form:1152 FSoftwareFarm.form:207 msgid "Filter" msgstr "" #: FMain.form:1155 msgid "Show exported classes" msgstr "顯示會出的類別" #: FMain.form:1160 msgid "Show added files" msgstr "顯示加入的檔案" #: FMain.form:1165 #, fuzzy msgid "Show modified files" msgstr "儲存修改檔案" #: FMain.form:1170 msgid "Show files in conflict" msgstr "" #: FMain.form:1175 #, fuzzy msgid "Show untranslatable files" msgstr "顯示加入的檔案" #: FMain.form:1180 #, fuzzy msgid "Show compressed files" msgstr "解壓縮檔案" #: FMain.form:1188 msgid "Show all" msgstr "" #: FMain.form:1200 #, fuzzy msgid "Do not translate" msgstr "不儲存" #: FMain.form:1207 msgid "Compress all" msgstr "" #: FMain.form:1213 msgid "Uncompress all" msgstr "" #: FMain.form:1219 #, fuzzy msgid "Compress file into the executable" msgstr "無法產生執行檔." #: FMain.form:1226 FTextEditor.form:239 msgid "Compress file" msgstr "壓縮檔案" #: FMain.form:1251 FNewConnection.class:159 msgid "New connection" msgstr "新連結" #: FMain.form:1327 FOutput.form:161 msgid "?" msgstr "" #: FMain.form:1345 FTips.form:19 msgid "Tips of the day" msgstr "每日提示" #: FMain.form:1352 msgid "Keyboard shortcuts" msgstr "" #: FMain.form:1361 FSystemInfo.form:13 msgid "System information" msgstr "系統資訊" #: FMain.form:1421 FProjectProperty.form:153 msgid "Project properties" msgstr "專案屬性" #: FMain.form:1429 msgid "Refresh project" msgstr "刷新專案" #: FMain.form:1456 FMakeExecutable.form:30 Project.module:3191 msgid "Make executable" msgstr "製作執行檔" #: FMain.form:1471 msgid "Make source archive" msgstr "建置原始碼歸檔" #: FMain.form:1479 FMakeInstall.form:137 msgid "Make installation package" msgstr "建置可安裝套件" #: FMain.form:1500 msgid "Properties sheet" msgstr "屬性表" #: FMain.form:1509 msgid "Toolbox" msgstr "工具箱" #: FMain.form:1527 FSearch.form:61 msgid "Search" msgstr "搜尋" #: FMain.form:1551 msgid "Compile all" msgstr "全部編譯" #: FMain.form:1600 msgid "Finish current function" msgstr "完成目前的函數" #: FMain.form:1616 #, fuzzy msgid "Show menubar" msgstr "顯示行號" #: FMain.form:1676 FPublish.form:51 msgid "Publish software" msgstr "" #: FMain.form:1706 msgid "&File" msgstr "檔案(&F)" #: FMain.form:1730 msgid "&Project" msgstr "專案(&P)" #: FMain.form:1742 msgid "&Debug" msgstr "除錯(&D)" #: FMain.form:1754 msgid "&View" msgstr "顯示(&V)" #: FMain.form:1766 msgid "&Tools" msgstr "工具(&T)" #: FMain.form:1778 msgid "&?" msgstr "-" #: FMain.form:1838 msgid "Dispose class files according to inheritance" msgstr "" #: FMain.form:1908 #, fuzzy msgid "Show project tree" msgstr "顯示說明樹" #: FMain.form:1916 #, fuzzy msgid "Show properties sheet" msgstr "屬性表" #: FMain.form:1987 #, fuzzy msgid "Show property help" msgstr "顯示屬性說明" #: FMain.form:1995 #, fuzzy msgid "Show controls" msgstr "顯示工具提示" #: FMakeExecutable.class:18 msgid "Gambas applications" msgstr "Gambas 應用程式" #: FMakeExecutable.form:60 #, fuzzy msgid "Increment version" msgstr "不正確的值." #: FMakeExecutable.form:71 #, fuzzy msgid "Set version to" msgstr "加入版本控制(v)" #: FMakeExecutable.form:104 msgid "Keep debugging information in executable" msgstr "在執行中保留除錯訊息" #: FMakeExecutable.form:109 #, fuzzy msgid "Compress files in executable" msgstr "壓縮檔案" #: FMakeExecutable.form:114 msgid "Create a shortcut on the desktop" msgstr "在桌面上建立捷徑" #: FMakeExecutable.form:119 #, fuzzy msgid "Exclude test modules" msgstr "Gambas modules" #: FMakeExecutable.form:135 #, fuzzy msgid "Run this shell command after" msgstr "然後執行命令: " #: FMakeExecutable.form:149 msgid "" "The following patterns will be substituted in the command :
\n" "• $(FILE) will be replaced by the executable path.
\n" "• $(DIR) by the project directory.
\n" "• $(NAME) by the project name.
\n" "• $(TITLE) by the project title.
\n" "• $(VERSION) by the project version.
\n" "
\n" "Note : all substitutions will be quoted." msgstr "" #: FMakeInstall.class:136 msgid "Package" msgstr "套件" #: FMakeInstall.class:137 msgid "Min. version" msgstr "最低版本" #: FMakeInstall.class:138 msgid "Max. version" msgstr "最高版本" #: FMakeInstall.class:144 msgid "File or directory" msgstr "" #: FMakeInstall.class:294 #, fuzzy msgid "Creating packages..." msgstr "正在建立套件..." #: FMakeInstall.class:297 Package.module:313 msgid "The packages have been successfully created." msgstr "這軟件包已經成功產生." #: FMakeInstall.class:348 msgid "Please enter your name." msgstr "請輸入您的姓名." #: FMakeInstall.class:353 msgid "Please enter your e-mail address." msgstr "請輸入您的e-mail." #: FMakeInstall.class:360 #, fuzzy msgid "Please enter the vendor name." msgstr "請輸入選單名稱." #: FMakeInstall.class:376 msgid "There is no CHANGELOG entry for this release." msgstr "這個發行版沒有變更紀錄." #: FMakeInstall.class:383 msgid "Please enter the first CHANGELOG entry." msgstr "請輸入第一次的 CHANGELOG 本文." #: FMakeInstall.class:394 msgid "Please choose at least one target distribution." msgstr "請至少選擇一個目標 distribution." #: FMakeInstall.class:432 msgid "Please choose the package group for each target distribution." msgstr "請為每個 distribution 選擇套件群組." #: FMakeInstall.class:434 msgid "Please choose a package group." msgstr "請選擇套件群組." #: FMakeInstall.class:444 msgid "Please choose the menu location for each target distribution." msgstr "請為每個 distribution 選擇選單位置." #: FMakeInstall.class:446 msgid "Please choose a menu location." msgstr "請選擇選單位置." #: FMakeInstall.class:473 msgid "Cannot found extra file: &1" msgstr "" #: FMakeInstall.class:479 msgid "Please choose a target directory for each extra file." msgstr "" #: FMakeInstall.class:487 msgid "Debian packaging system cannot handle spaces in file names." msgstr "" #: FMakeInstall.class:493 msgid "Debian packaging system cannot handle spaces in directories." msgstr "" #: FMakeInstall.class:509 msgid "The package cannot be stored inside the project directory." msgstr "這個套件不能儲存於專案目錄下." #: FMakeInstall.class:558 msgid "Initial release" msgstr "初始發行版" #: FMakeInstall.class:814 msgid "Menus" msgstr "選單" #: FMakeInstall.class:882 msgid "Groups" msgstr "群組" #: FMakeInstall.class:1009 msgid "Incorrect characters" msgstr "不正確的字元" #: FMakeInstall.class:1082 msgid "Do you really want to remove all extra dependencies?" msgstr "您確定要移除所有額外的相依性嗎?" #: FMakeInstall.class:1167 msgid "Do you really want to remove all extra files?" msgstr "您確定要移除所有額外的檔案嗎?" #: FMakeInstall.class:1215 msgid "Select the destination directory" msgstr "選擇目標目錄" #: FMakeInstall.form:151 msgid "Create package" msgstr "建立套件" #: FMakeInstall.form:154 msgid "Package information" msgstr "套件資訊" #: FMakeInstall.form:160 msgid "Package name" msgstr "套件名稱" #: FMakeInstall.form:185 FOption.form:429 msgid "Add vendor prefix or name to package names" msgstr "" #: FMakeInstall.form:190 msgid "Add major version number to package names" msgstr "" #: FMakeInstall.form:205 msgid "Package version" msgstr "" #: FMakeInstall.form:225 FOption.form:361 FPublish.form:83 msgid "Vendor name" msgstr "開發商名稱" #: FMakeInstall.form:241 FOption.form:378 #, fuzzy msgid "Vendor prefix" msgstr "開發商名稱" #: FMakeInstall.form:255 msgid "Maintainer information" msgstr "維護者資訊" #: FMakeInstall.form:295 FOption.form:413 msgid "URL" msgstr "" #: FMakeInstall.form:344 msgid "Changelog" msgstr "-" #: FMakeInstall.form:364 msgid "Target distribution" msgstr "目標發行版" #: FMakeInstall.form:607 msgid "Self-extractible" msgstr "" #: FMakeInstall.form:612 msgid "Package group" msgstr "套件群組" #: FMakeInstall.form:632 msgid "Menu entry" msgstr "選單欄位" #: FMakeInstall.form:654 msgid "Categories" msgstr "類別" #: FMakeInstall.form:663 msgid "Desktop configuration file" msgstr "桌面設定檔" #: FMakeInstall.form:669 msgid "Mimetypes" msgstr "檔案型態" #: FMakeInstall.form:677 msgid "" "Enter the mimetypes handled by your application there.\n" "Please enter one mimetype by line.\n" msgstr "" #: FMakeInstall.form:689 msgid "Additional configuration" msgstr "額外設定" #: FMakeInstall.form:697 msgid "The following will be added to the end of the desktop configuration file." msgstr "以下將會被加入桌面設定檔的結尾." #: FMakeInstall.form:705 msgid "Extra dependencies" msgstr "額外的相依性" #: FMakeInstall.form:714 #, fuzzy msgid "Minimum Gambas version" msgstr "最低版本" #: FMakeInstall.form:730 msgid "Same dependencies for all targets" msgstr "所有的目標都使用相同的相依性" #: FMakeInstall.form:786 msgid "Extra files" msgstr "額外的檔案" #: FMakeInstall.form:790 msgid "Same files for all targets" msgstr "所有的目標都使用相同的檔案" #: FMakeInstall.form:803 msgid "Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk." msgstr "" #: FMakeInstall.form:861 msgid "Extra autoconf tests" msgstr "額外的 autoconf 測試" #: FMakeInstall.form:867 msgid "" "Add extra tests for the configuration process.\n" "

Leave this blank if you don't need it, or if you don't know anything about autoconf scripts." msgstr "" "為 configure 增加新的測試.\n" "

如果您不需要這個選項或是您不知道 autoconf 是甚麼, 請不要輸入." #: FMakeInstall.form:875 msgid "Destination directory" msgstr "目標目錄" #: FMakeInstall.form:884 msgid "Create directories for each distribution" msgstr "分別為各個 distribution 建立目錄" #: FMakeInstall.form:915 msgid "Commands output" msgstr "" #: FMakeInstall.form:961 #, fuzzy msgid "Create package now" msgstr "建立套件" #: FMakePatch.class:19 msgid "Please select the origin archive." msgstr "" #: FMakePatch.class:28 msgid "Please select the origin project." msgstr "" #: FMakePatch.class:66 msgid "Please enter the patch file name." msgstr "" #: FMakePatch.class:77 msgid "Patch has been successfully generated." msgstr "" #: FMakePatch.class:82 msgid "Unable to generate the patch." msgstr "" #: FMakePatch.form:21 msgid "Generate patch" msgstr "" #: FMakePatch.form:37 msgid "Select patch origin" msgstr "" #: FMakePatch.form:46 msgid "Patch origin" msgstr "" #: FMakePatch.form:59 msgid "Project directory" msgstr "專案目錄" #: FMakePatch.form:70 msgid "Automatic patch name" msgstr "" #: FMakePatch.form:76 msgid "Edit patch" msgstr "" #: FMakePatch.form:87 msgid "This wizard will generate a patch between an origin project and the current project." msgstr "" #: FMakePatch.form:91 msgid "Select source archive" msgstr "" #: FMakePatch.form:97 msgid "*.gz;*.bz2;*.xz" msgstr "" #: FMakePatch.form:97 FMakeSourceArchive.class:18 msgid "Source packages" msgstr "原始碼軟件包" #: FMakePatch.form:101 msgid "Select project directory" msgstr "" #: FMakePatch.form:118 msgid "Choose patch file name" msgstr "" #: FMakePatch.form:123 msgid "*.patch;*.diff" msgstr "" #: FMakePatch.form:123 FPatch.class:180 msgid "Patch/Diff files" msgstr "" #: FMakeSourceArchive.form:9 Project.module:4859 msgid "Create source package" msgstr "製作源碼軟件包" #: FMakeSourceArchive.form:23 msgid "Transform into a \".gmail.txt\" archive that fools GMail" msgstr "" #: FMenu.class:99 msgid "Menus have been modified!" msgstr "選單已更動!" #: FMenu.class:340 msgid "Please enter a menu name." msgstr "請輸入選單名稱." #: FMenu.class:346 msgid "Bad menu name !" msgstr "不適當的選單名稱!" #: FMenu.class:352 msgid "Bad group name !" msgstr "不適當的group名稱!" #: FMenu.class:661 msgid "This menu is too deep !" msgstr "這選單太多層 !" #: FMenu.class:1155 Project.module:5735 msgid "modified" msgstr "已修改" #: FMenu.form:86 msgid "Insert menu" msgstr "插入選單" #: FMenu.form:95 #, fuzzy msgid "Insert separator" msgstr "插入選單" #: FMenu.form:104 #, fuzzy msgid "Insert menu before" msgstr "插入選單" #: FMenu.form:107 #, fuzzy msgid "Insert before" msgstr "插入顏色" #: FMenu.form:113 #, fuzzy msgid "Delete menu" msgstr "刪除" #: FMenu.form:179 #, fuzzy msgid "Paste before" msgstr "插入顏色" #: FMenu.form:224 msgid "Click on Insert to add a new menu." msgstr "在插入鍵上按一下增加新的選單" #: FNewConnection.class:104 msgid "Please enter the name of the database." msgstr "請輸入資料庫名稱." #: FNewConnection.class:145 msgid "Please enter password" msgstr "請輸入密碼" #: FNewConnection.class:147 msgid "Connection properties" msgstr "連結屬性" #: FNewConnection.class:178 msgid "Select a directory" msgstr "選擇目錄" #: FNewConnection.class:229 #, fuzzy msgid "Create database" msgstr "建立資料庫 '1'(&C)" #: FNewConnection.class:241 #, fuzzy msgid "Delete database" msgstr "刪除資料庫 '1'(&D)" #: FNewConnection.class:393 msgid "Unable to create database." msgstr "無法建立資料庫." #: FNewConnection.class:402 msgid "Do you really want to delete the database '&1'?" msgstr "您確定要刪除資料庫 '&1' 嗎?" #: FNewConnection.class:413 msgid "Unable to delete database." msgstr "無法刪除資料庫." #: FNewConnection.form:99 FProxy.form:32 msgid "Host" msgstr "主機" #: FNewConnection.form:124 msgid "Path" msgstr "路徑" #: FNewConnection.form:154 #, fuzzy msgid "No password" msgstr "設定邊緣" #: FNewConnection.form:189 FProjectProperty.form:282 Project.module:240 msgid "Database" msgstr "資料庫" #: FNewConnection.form:241 msgid "From" msgstr "" #: FNewConnection.form:265 msgid "Ignore database charset" msgstr "忽略資料庫字元集" #: FNewConnection.form:279 msgid "Display metadata" msgstr "" #: FNewConnection.form:293 msgid "Remember database structure" msgstr "" #: FNewTable.class:33 msgid "Create table" msgstr "建立表格" #: FNewTable.class:53 msgid "Please enter the name of the new table." msgstr "請輸入新表格的名稱." #: FNewTable.class:59 MConnection.module:319 msgid "Table '&1' already exists." msgstr "表格 '&1' 已存在." #: FNewTranslation.form:10 msgid "New translation" msgstr "新增翻譯" #: FOpenProject.form:22 msgid "Select a project" msgstr "選擇一個專案" #: FOpenProject.form:108 FSoftwareFarm.class:51 FWelcome.class:72 msgid "Examples" msgstr "範例" #: FOption.class:4 msgid "Amber" msgstr "琥珀" #: FOption.class:4 msgid "Amethyst" msgstr "紫水晶" #: FOption.class:4 msgid "Blues" msgstr "" #: FOption.class:4 msgid "Emerald" msgstr "翡翠綠" #: FOption.class:4 msgid "Gambas" msgstr "-" #: FOption.class:4 msgid "Obsidian" msgstr "黑曜石" #: FOption.class:4 #, fuzzy msgid "Pastel" msgstr "貼上" #: FOption.class:4 msgid "Quest" msgstr "-" #: FOption.class:4 msgid "Quick" msgstr "-" #: FOption.class:4 msgid "Ruby" msgstr "寶石紅" #: FOption.class:4 msgid "Sapphire" msgstr "藍寶石" #: FOption.class:4 msgid "Visual" msgstr "Visual" #: FOption.class:4 msgid "Zen" msgstr "" #: FOption.class:9 FTestSuite.class:32 #, fuzzy msgid "Default" msgstr "(預設)" #: FOption.class:9 msgid "Flat" msgstr "" #: FOption.class:89 msgid "Custom" msgstr "" #: FOption.class:91 msgid "Desktop" msgstr "桌面" #: FOption.class:92 FTranslate.class:149 msgid "(Default)" msgstr "(預設)" #: FOption.class:266 msgid "Gambas highlight theme files" msgstr "Gambas 語法標示檔" #: FOption.class:267 msgid "Export a theme file" msgstr "匯出主題檔" #: FOption.class:498 msgid "Select a theme file" msgstr "選擇主題檔" #: FOption.class:521 msgid "You need to restart the application to see your changes." msgstr "您必須重新啟動應用程式以檢視您的修改." #: FOption.class:854 msgid "Do you really want to clear the documentation cache?" msgstr "您確定要清除文件快取嗎?" #: FOption.class:863 #, fuzzy msgid "Unable to clear documentation cache." msgstr "清除文件快取" #: FOption.class:1023 msgid "Do you really want to delete this snippet?" msgstr "您確定要刪除這個片段嗎?" #: FOption.class:1224 #, fuzzy msgid "Do you really want to install the Gambas font into your personal font directory?" msgstr "你要刪除這個檔案嗎?" #: FOption.class:1224 FSoftwareFarm.class:604 msgid "Install" msgstr "" #: FOption.class:1310 #, fuzzy msgid "Network is not available." msgstr "不可用" #: FOption.class:1315 #, fuzzy msgid "Documentation is up to date." msgstr "在彈出式視窗裝顯示文件" #: FOption.class:1320 #, fuzzy msgid "A new documentation is available!" msgstr "清除文件快取" #: FOption.class:1325 MHelp.module:933 msgid "Documentation is not available." msgstr "" #: FOption.class:1507 #, fuzzy msgid "Cannot download '&1'." msgstr "無法刪除表格 '&1'." #: FOption.class:1538 #, fuzzy msgid "Unable to uncompress documentation." msgstr "無法壓縮檔案." #: FOption.class:1549 #, fuzzy msgid "Unable to install documentation." msgstr "無法開啟連結." #: FOption.class:1659 #, fuzzy msgid "Compact" msgstr "編譯" #: FOption.class:1674 #, fuzzy msgid "Current" msgstr "目前的檔案 (f)" #: FOption.class:1716 #, fuzzy msgid "Do you really want to override the existing layout?" msgstr "您確定要清除清單嗎?" #: FOption.class:1814 #, fuzzy msgid "Do you really want to delete that layout?" msgstr "您確定要刪除這個連結嗎?" #: FOption.form:295 msgid "Dotted" msgstr "" #: FOption.form:306 #, fuzzy msgid "Identity" msgstr "縮排" #: FOption.form:350 #, fuzzy msgid "Package maintainer" msgstr "套件名稱" #: FOption.form:395 #, fuzzy msgid "Default license" msgstr "預設值" #: FOption.form:435 VersionControl.module:553 msgid "No" msgstr "否" #: FOption.form:435 VersionControl.module:553 msgid "Yes" msgstr "是" #: FOption.form:439 #, fuzzy msgid "Projects" msgstr "專案" #: FOption.form:456 msgid "Default tab size" msgstr "tab 內定值" #: FOption.form:470 FProjectProperty.form:839 msgid "space(s)" msgstr "空格" #: FOption.form:482 msgid "Indent with tab by default" msgstr "" #: FOption.form:499 msgid "Automatic word wrap by default" msgstr "" #: FOption.form:516 #, fuzzy msgid "Activate version control" msgstr "加入版本控制(v)" #: FOption.form:533 msgid "Restore files when loading a project" msgstr "" #: FOption.form:545 FProjectProperty.form:863 msgid "Compilation" msgstr "編譯" #: FOption.form:556 #, fuzzy msgid "Number of background jobs" msgstr "送到背景" #: FOption.form:569 #, fuzzy msgid "Images" msgstr "影像" #: FOption.form:581 msgid "Compress PNG images with " msgstr "" #: FOption.form:615 #, fuzzy msgid "Automatic translation with " msgstr "自動加上副檔名" #: FOption.form:644 #, fuzzy msgid "Translation engine" msgstr "翻譯檔" #: FOption.form:653 msgid "Help & applications" msgstr "" #: FOption.form:659 FProperty.form:142 MTheme.module:6 msgid "Help" msgstr "說明" #: FOption.form:670 msgid "Show documentation in popups" msgstr "在彈出式視窗裝顯示文件" #: FOption.form:687 msgid "Always display optional messages" msgstr "總是顯示選擇性訊息" #: FOption.form:699 #, fuzzy msgid "Documentation" msgstr "修改文件" #: FOption.form:710 #, fuzzy msgid "Use offline documentation" msgstr "無法開啟連結." #: FOption.form:740 #, fuzzy msgid "Download documentation" msgstr "修改文件" #: FOption.form:766 FProxy.form:20 msgid "Proxy configuration" msgstr "" #: FOption.form:779 msgid "Clear documentation cache" msgstr "清除文件快取" #: FOption.form:787 msgid "Applications" msgstr "應用程式" #: FOption.form:798 msgid "Browser" msgstr "瀏覽器" #: FOption.form:815 FVersionControl.form:63 msgid "Terminal" msgstr "終端機" #: FOption.form:841 msgid "Show indentation with vertical lines" msgstr "" #: FOption.form:858 msgid "Highlight current line" msgstr "反白游標所在行" #: FOption.form:875 msgid "Highlight modified lines" msgstr "標示修改過的行" #: FOption.form:892 msgid "Show line numbers" msgstr "顯示行號" #: FOption.form:909 msgid "Procedure folding" msgstr "" #: FOption.form:926 msgid "Procedure separation" msgstr "程序分隔" #: FOption.form:943 msgid "Show spaces at end of line with dots" msgstr "用 '.' 顯示行尾空白字元" #: FOption.form:960 #, fuzzy msgid "Show Preview" msgstr "預覽" #: FOption.form:978 msgid "Keywords in upper case" msgstr "自動將關鍵字轉成大寫" #: FOption.form:987 msgid "Code formatting" msgstr "格式化程式碼" #: FOption.form:993 msgid "Automatic formatting" msgstr "" #: FOption.form:1004 #, fuzzy msgid "Control structure completion" msgstr "自動完成控制結構" #: FOption.form:1021 #, fuzzy msgid "Local variable declaration" msgstr "縮排區域函數宣告" #: FOption.form:1038 #, fuzzy msgid "Comments insertion" msgstr "連結" #: FOption.form:1055 msgid "Close braces, brackets" msgstr "" #: FOption.form:1072 #, fuzzy msgid "Close strings" msgstr "忽略字串(I)" #: FOption.form:1084 msgid "Explicit formating" msgstr "" #: FOption.form:1095 msgid "Format on load & save" msgstr "載入及儲存時格式化程式碼" #: FOption.form:1112 msgid "Indent local variable declaration" msgstr "縮排區域函數宣告" #: FOption.form:1129 msgid "Remove useless spaces at end of line" msgstr "移除行尾空白字元" #: FOption.form:1146 msgid "Keep successive void lines" msgstr "保留連續的空行" #: FOption.form:1155 msgid "Code snippets" msgstr "程式碼片段" #: FOption.form:1171 msgid "Activate code snippets" msgstr "啟用程式碼片段" #: FOption.form:1232 msgid "Interface" msgstr "介面" #: FOption.form:1249 #, fuzzy msgid "Activate animations" msgstr "啟用程式碼片段" #: FOption.form:1266 #, fuzzy msgid "Show shadows" msgstr "顯示搜尋視窗" #: FOption.form:1283 msgid "Show tooltips" msgstr "顯示工具提示" #: FOption.form:1300 msgid "Use utility windows" msgstr "使用工具視窗" #: FOption.form:1317 msgid "Close tabs with middle mouse click" msgstr "" #: FOption.form:1334 msgid "Show file name in window title" msgstr "" #: FOption.form:1351 msgid "Show debugging panel if needed" msgstr "" #: FOption.form:1368 #, fuzzy msgid "Message style" msgstr "訊息" #: FOption.form:1384 msgid "Layout" msgstr "" #: FOption.form:1419 msgid "Fonts" msgstr "字型" #: FOption.form:1452 msgid "Global size" msgstr "" #: FOption.form:1474 msgid "Title size" msgstr "" #: FOption.form:1496 #, fuzzy msgid "Debugger size" msgstr "除錯" #: FOption.form:1550 Project.module:247 msgid "Printing" msgstr "列印" #: FOption.form:1588 #, fuzzy msgid "Fixed font" msgstr "使用固定字字形" #: FOption.form:1604 msgid "Zoom (browser excepted)" msgstr "" #: FOption.form:1634 msgid "Install Gambas font for code edition" msgstr "" #: FOption.form:1681 #, fuzzy msgid "Themes" msgstr "佈景主題" #: FOption.form:1698 msgid "Icon theme" msgstr "圖示主題" #: FOption.form:1714 #, fuzzy msgid "Highlighting theme" msgstr "反白" #: FOption.form:1728 msgid "Import theme" msgstr "匯入主題" #: FOption.form:1734 msgid "Export theme" msgstr "匯出主題" #: FOutput.form:29 msgid "Console - Gambas" msgstr "控制台 - Gambas" #: FOutput.form:65 msgid "Undock console" msgstr "浮出主控台" #: FOutput.form:72 msgid "Keep above" msgstr "保持最上層" #: FOutput.form:85 #, fuzzy msgid "Suspend terminal" msgstr "開啟終端機...(O)" #: FOutput.form:104 msgid "Entered text echo" msgstr "" #: FOutput.form:106 msgid "Echo" msgstr "" #: FOutput.form:117 #, fuzzy msgid "Open contents" msgstr "開啟最近的檔案(r)" #: FOutput.form:130 msgid "Use system charset" msgstr "使用系統字元集" #: FPasteSpecial.class:69 msgid "Unable to paste text." msgstr "無法貼上文字." #: FPasteSpecial.form:31 msgid "Clipboard contents" msgstr "剪貼簿內容" #: FPasteSpecial.form:44 msgid "Paste normally" msgstr "正常貼上" #: FPasteSpecial.form:55 msgid "Paste with PRINT" msgstr "與 PRINT 一起貼上" #: FPasteTable.class:57 msgid "Please enter a table name." msgstr "請輸入表格名稱." #: FPasteTable.class:133 msgid "Table already exists" msgstr "表格已存在" #: FPasteTable.form:78 msgid "Also copy table data" msgstr "也複製表格資料(d)" #: FPatch.class:186 msgid "That file does not look like a patch file!" msgstr "" #: FPatch.form:18 msgid "Patch the current project" msgstr "" #: FPatch.form:31 msgid "Select patch" msgstr "" #: FPatch.form:76 FProjectVersion.form:83 msgid "Revert" msgstr "還原...(R)" #: FProfile.class:50 msgid "Profile #&1" msgstr "" #: FProfile.class:190 msgid "Bad profile file format" msgstr "" #: FProfile.class:421 msgid "&1 Mb" msgstr "" #: FProfile.class:421 msgid "Total time &1 μs" msgstr "" #: FProfile.class:444 #, fuzzy msgid "Unable to load profile file: &1" msgstr "無法載入表格 '&1'." #: FProfile.class:713 msgid "Calls" msgstr "" #: FProfile.class:716 msgid "Duration" msgstr "" #: FProfile.class:719 msgid "Average" msgstr "" #: FProfile.class:722 msgid "Self" msgstr "" #: FProfile.class:1121 msgid "Profile files" msgstr "" #: FProfile.class:1128 msgid "Unable to save profile." msgstr "" #: FProfile.form:60 msgid "Show relative durations" msgstr "" #: FProfile.form:67 msgid "Show average" msgstr "" #: FProfile.form:74 msgid "Save profile" msgstr "" #: FProfile.form:126 msgid "Callees" msgstr "" #: FProfile.form:138 msgid "Callers" msgstr "" #: FProjectEditor.form:30 #, fuzzy msgid "Project browser" msgstr "專案屬性" #: FProjectEditor.form:77 #, fuzzy msgid "Image preview" msgstr "影像處理" #: FProjectEditor.form:86 msgid "Detailed view" msgstr "" #: FProjectEditor.form:95 #, fuzzy msgid "File properties" msgstr "將屬性排序" #: FProjectProperty.class:55 msgid "Variable" msgstr "變數" #: FProjectProperty.class:291 msgid "Snapping value is incorrect." msgstr "截到的值不正確." #: FProjectProperty.class:824 msgid "&1 does not export any class." msgstr "&1 沒有匯出類別." #: FProjectProperty.class:832 msgid "&1 is already used as a library." msgstr "&1 已被當作函式庫使用." #: FProjectProperty.class:1000 msgid "Modules" msgstr "Modules" #: FProjectProperty.class:1001 #, fuzzy msgid "Test modules" msgstr "Gambas modules" #: FProjectProperty.class:1011 #, fuzzy msgid "Functions" msgstr "函數" #: FProjectProperty.class:1012 msgid "Lines of code" msgstr "" #: FProjectProperty.class:1013 #, fuzzy msgid "Average number of lines by function" msgstr "維數不正確" #: FProjectProperty.class:1016 #, fuzzy msgid "Executable size" msgstr "可執行檔...(x)" #: FProjectProperty.class:1016 msgid "bytes" msgstr "" #: FProjectProperty.class:1033 #, fuzzy msgid "Information about component" msgstr "正在載入 &1 的資訊..." #: FProjectProperty.class:1039 msgid "Information about library" msgstr "" #: FProjectProperty.class:1419 #, fuzzy msgid "Select a Gambas executable" msgstr "選擇一個 Gambas 應用程式" #: FProjectProperty.class:1420 #, fuzzy msgid "Gambas executable" msgstr "製作執行檔" #: FProjectProperty.form:250 #, fuzzy msgid "JIT compiler" msgstr "編譯" #: FProjectProperty.form:300 msgid "General" msgstr "一般的" #: FProjectProperty.form:366 msgid "Component" msgstr "元件" #: FProjectProperty.form:366 FSelectLibrary.class:101 msgid "Library" msgstr "" #: FProjectProperty.form:366 msgid "Normal" msgstr "正常" #: FProjectProperty.form:373 #, fuzzy msgid "Vendor" msgstr "開發商名稱" #: FProjectProperty.form:385 FPublish.class:91 FSelectLibrary.class:103 msgid "Version" msgstr "版本" #: FProjectProperty.form:411 msgid "Get from 'VERSION' file" msgstr "從 'VERSION' 檔案取得" #: FProjectProperty.form:418 msgid "Title" msgstr "標題" #: FProjectProperty.form:452 #, fuzzy msgid "Information" msgstr "系統資訊" #: FProjectProperty.form:473 FTranslate.class:76 msgid "Progress" msgstr "" #: FProjectProperty.form:479 msgid "Finished and stable" msgstr "已完成而且穩定" #: FProjectProperty.form:490 msgid "This component is hidden" msgstr "這個元件是隱藏的" #: FProjectProperty.form:506 msgid "Compatible until version" msgstr "" #: FProjectProperty.form:535 #, fuzzy msgid "Include information from" msgstr "套件資訊" #: FProjectProperty.form:547 #, fuzzy msgid "Required features" msgstr "需求" #: FProjectProperty.form:603 msgid "Required and excluded components" msgstr "" #: FProjectProperty.form:624 #, fuzzy msgid "Require" msgstr "需求" #: FProjectProperty.form:630 #, fuzzy msgid "Exclude" msgstr "排除" #: FProjectProperty.form:642 msgid "Remove All" msgstr "全部移除" #: FProjectProperty.form:649 msgid "Components" msgstr "元件" #: FProjectProperty.form:657 FSoftwareFarm.class:65 msgid "Libraries" msgstr "函式庫" #: FProjectProperty.form:675 msgid "Runtime library search path" msgstr "" #: FProjectProperty.form:737 #, fuzzy msgid "Additional references" msgstr "偏好設定" #: FProjectProperty.form:748 msgid "Environment" msgstr "環境" #: FProjectProperty.form:777 msgid "&Add" msgstr "" #: FProjectProperty.form:817 msgid "Edition" msgstr "編輯" #: FProjectProperty.form:827 msgid "Tab size" msgstr "Tab大小" #: FProjectProperty.form:850 #, fuzzy msgid "Show deprecated components and controls" msgstr "顯示會出的類別" #: FProjectProperty.form:873 msgid "Module symbols are public by default" msgstr "模組中的符號預設為公用" #: FProjectProperty.form:889 msgid "Form controls are public" msgstr "Form控制項為public" #: FProjectProperty.form:905 msgid "Activate warnings" msgstr "" #: FProjectProperty.form:969 #, fuzzy msgid "Add branch to version number" msgstr "不正確的值." #: FProjectProperty.form:979 FTranslate.form:417 msgid "Statistics" msgstr "統計資料" #: FProjectVersion.class:7 VersionControl.module:29 msgid "This line and the following will be ignored" msgstr "以下數行將被忽略" #: FProjectVersion.class:36 msgid "Local" msgstr "" #: FProjectVersion.class:37 msgid "Remote" msgstr "" #: FProjectVersion.class:94 msgid "Please enter a user name." msgstr "" #: FProjectVersion.class:105 FVersionControl.class:63 msgid "Please enter the journal." msgstr "" #: FProjectVersion.class:116 VersionControl.module:371 msgid "The project could not be committed." msgstr "無法提交專案." #: FProjectVersion.class:196 VersionControl.module:395 msgid "Unable to update project from repository." msgstr "無法從儲存庫更新專案." #: FProjectVersion.class:198 VersionControl.module:397 msgid "Project has been updated from repository successfully." msgstr "專案已成功從儲存庫更新." #: FProjectVersion.form:53 msgid "Project Version Control" msgstr "" #: FProjectVersion.form:65 msgid "Update" msgstr "更新(U)" #: FProjectVersion.form:118 msgid "Authentication" msgstr "" #: FProjectVersion.form:197 msgid "Refresh information" msgstr "" #: FProjectVersion.form:202 FVersionControl.form:33 msgid "Journal" msgstr "" #: FProjectVersion.form:221 msgid "Some files are not versioned and should be added manually to the repository." msgstr "有一些檔案並未加入版本控制系統, 必須手動加入." #: FProjectVersion.form:283 msgid "Previous description" msgstr "上一個描述" #: FProperty.class:378 msgid "Forbidden characters in control name." msgstr "控制項名稱不可有禁用字元." #: FProperty.class:383 msgid "This name is already in use." msgstr "這名稱已經被使用." #: FProperty.class:393 msgid "Forbidden characters in control group." msgstr "控制項群組不可有禁用字元." #: FProperty.class:469 msgid "Incorrect property value." msgstr "不正確的屬性值." #: FProperty.class:631 msgid "The name of the control." msgstr "控制項的名稱." #: FProperty.class:643 msgid "The event group that the control belongs to." msgstr "控制項所屬群組." #: FProperty.class:657 msgid "If the form and controls dimensions must follow the size of the default font." msgstr "表單和控制項的大小隨著預設字型大小而改變." #: FProperty.class:661 msgid "If the control is public." msgstr "控制項是否為公用." #: FProperty.class:665 msgid "If the Text property must be translated." msgstr "" #: FProperty.class:687 msgid "This property is virtual: it is only implemented in the IDE, and has no existence at runtime." msgstr "這個屬性是 virtual: 它只在 IDE 中實作, 但不存在於執行時期." #: FProperty.class:814 msgid "None" msgstr "無" #: FProperty.form:51 msgid "Lock property" msgstr "鎖定屬性" #: FProperty.form:58 msgid "Sort properties" msgstr "將屬性排序" #: FProxy.form:37 msgid "Port" msgstr "" #: FProxy.form:76 msgid "Default proxy" msgstr "" #: FProxy.form:76 msgid "HTTP proxy" msgstr "" #: FProxy.form:76 msgid "No proxy" msgstr "" #: FProxy.form:76 msgid "SOCKS5 proxy" msgstr "" #: FPublish.class:12 msgid "You cannot publish a software whose version is \"0.0\"." msgstr "" #: FPublish.class:89 msgid "Software" msgstr "" #: FPublish.class:164 #, fuzzy msgid "The project has been successfully published." msgstr "專案建立成功." #: FPublish.class:164 #, fuzzy msgid "Unable to publish project." msgstr "無法儲存專案." #: FPublish.class:235 msgid "Spaces are not allowed." msgstr "" #: FPublish.class:241 #, fuzzy msgid "Incorrect version number." msgstr "不正確的值." #: FPublish.class:273 #, fuzzy msgid "Do you really want to remove all tags?" msgstr "您確定要移除所有額外的檔案嗎?" #: FPublish.class:328 #, fuzzy msgid "Select a screenshot file" msgstr "選擇主題檔" #: FPublish.class:329 #, fuzzy msgid "Screenshot files" msgstr "目前的檔案 (f)" #: FPublish.form:67 #, fuzzy msgid "Software description" msgstr "上一個描述" #: FPublish.form:98 FSoftwareFarm.form:345 #, fuzzy msgid "Web site" msgstr "Tab大小" #: FPublish.form:113 #, fuzzy msgid "Create menu entry" msgstr "選單欄位" #: FPublish.form:134 FSoftwareFarm.form:192 msgid "Tags" msgstr "" #: FPublish.form:164 msgid "Sort" msgstr "" #: FPublish.form:176 msgid "Screenshot" msgstr "" #: FPublish.form:181 msgid "Keep the screenshot stored on the server" msgstr "" #: FPublish.form:188 msgid "Delete the screenshot stored on the server" msgstr "" #: FPublish.form:194 msgid "Upload a new screenshot taken from the clipboard" msgstr "" #: FPublish.form:200 msgid "Upload a new screenshot taken from the following file:" msgstr "" #: FPublish.form:222 #, fuzzy msgid "Dependencies" msgstr "額外的相依性" #: FPublish.form:230 msgid "Require Gambas version" msgstr "" #: FPublish.form:295 msgid "Publish as" msgstr "" #: FReportBorderChooser.form:43 msgid "Configure border" msgstr "設定邊緣" #: FReportBorderChooser.form:141 msgid "Corner" msgstr "角落" #: FReportBoxShadowChooser.form:23 #, fuzzy msgid "Configure shadow" msgstr "設定筆刷" #: FReportBoxShadowChooser.form:40 msgid "Shadow" msgstr "" #: FReportBrushChooser.form:31 msgid "Configure brush" msgstr "設定筆刷" #: FReportBrushChooser.form:152 msgid "Select an image inside the project" msgstr "選擇一個專案中的圖片" #: FReportCoordChooser.class:22 msgid "Incorrect value." msgstr "不正確的值." #: FReportCoordChooser.form:12 msgid "Select a dimension" msgstr "選擇長寬" #: FReportPaddingChooser.form:18 msgid "Configure padding" msgstr "設定邊緣留白" #: FSave.form:15 msgid "Save modified files" msgstr "儲存修改檔案" #: FSave.form:43 msgid "Save All" msgstr "全部儲存(A)" #: FSave.form:57 msgid "The following files have been modified. Do you want to save them?" msgstr "以下檔案已更動, 您要儲存這些檔案嗎?" #: FSaveProjectAs.class:38 msgid "Cannot save a project inside its own directory." msgstr "無法將專案儲存於它自己的目錄." #: FSaveProjectAs.class:63 msgid "Unable to save the project." msgstr "無法儲存專案." #: FSaveProjectAs.form:28 msgid "New project parent directory" msgstr "" #: FSaveProjectAs.form:39 msgid "New project name" msgstr "" #: FScreenshot.form:12 msgid "Take screenshot" msgstr "" #: FSearch.class:523 msgid "Search string replaced once." msgstr "搜尋字串一次取代." #: FSearch.class:525 msgid "Search string replaced &1 times." msgstr "搜尋字串已取代 &1 次." #: FSearch.class:630 msgid "One match" msgstr "" #: FSearch.class:632 msgid "&1 matches" msgstr "" #: FSearch.class:638 #, fuzzy msgid "One replacement" msgstr "沒有元素" #: FSearch.class:640 #, fuzzy msgid "&1 replacements" msgstr "實做" #: FSearch.class:942 msgid "Do you really want to replace every string?" msgstr "您確定要取代所有的字串嗎?" #: FSearch.form:42 msgid "Search & Replace" msgstr "搜尋/取代" #: FSearch.form:105 msgid "Case sensitive" msgstr "區分大小寫(C)" #: FSearch.form:110 msgid "Words only" msgstr "只有完整單字(W)" #: FSearch.form:115 msgid "Regular expression" msgstr "規則表示式(x)" #: FSearch.form:120 msgid "Ignore strings" msgstr "忽略字串(I)" #: FSearch.form:125 msgid "Ignore comments" msgstr "忽略註解(g)" #: FSearch.form:140 msgid "Search in" msgstr "在...中搜尋" #: FSearch.form:147 #, fuzzy msgid "Current function" msgstr "完成目前的函數" #: FSearch.form:153 msgid "Current file" msgstr "目前的檔案 (f)" #: FSearch.form:160 msgid "Source files" msgstr "原始碼檔(S)" #: FSearch.form:166 #, fuzzy msgid "Data files" msgstr "額外的檔案" #: FSearch.form:197 msgid "Browse" msgstr "瀏覽(B)" #: FSearch.form:209 msgid "Replace all" msgstr "全部取代(a)" #: FSearch.form:220 #, fuzzy msgid "Highlight search" msgstr "標示結果(H)" #: FSelectExtraFile.form:12 msgid "Select an extra file" msgstr "選擇一個額外的檔案" #: FSelectIcon.class:40 msgid "Image files" msgstr "圖片檔" #: FSelectIcon.class:41 msgid "SVG image files" msgstr "SVG 圖片檔" #: FSelectIcon.form:20 msgid "Select a picture" msgstr "選擇一張圖片" #: FSelectIcon.form:45 msgid "Stock" msgstr "內建" #: FSelectIcon.form:73 #, fuzzy msgid "Size preview" msgstr "預覽" #: FSelectLibrary.class:64 #, fuzzy msgid "unknown" msgstr "未知" #: FSelectLibrary.form:15 #, fuzzy msgid "Select a library" msgstr "選擇目錄" #: FSelectLibrary.form:37 msgid "No library has been found on your system." msgstr "" #: FSnippet.class:23 msgid "Please enter a trigger string." msgstr "請輸入觸發字串." #: FSnippet.class:29 msgid "This trigger string is already in use." msgstr "這個觸發字串已被使用." #: FSnippet.class:64 msgid "Edit code snippet" msgstr "編輯程式碼片段" #: FSnippet.class:67 msgid "New code snippet" msgstr "新增程式碼片段" #: FSnippet.form:26 msgid "Trigger string" msgstr "觸發字串" #: FSoftwareFarm.class:49 Project.module:242 msgid "Games" msgstr "遊戲" #: FSoftwareFarm.class:50 msgid "Development" msgstr "" #: FSoftwareFarm.class:52 #, fuzzy msgid "Education" msgstr "編輯" #: FSoftwareFarm.class:53 msgid "Graphics" msgstr "" #: FSoftwareFarm.class:54 msgid "Audio" msgstr "" #: FSoftwareFarm.class:55 Project.module:249 msgid "Video" msgstr "視訊" #: FSoftwareFarm.class:56 msgid "Office" msgstr "" #: FSoftwareFarm.class:57 #, fuzzy msgid "Accessories" msgstr "拒絕存取" #: FSoftwareFarm.class:58 #, fuzzy msgid "Internet" msgstr "介面" #: FSoftwareFarm.class:66 #, fuzzy msgid "Extensions" msgstr "表達式" #: FSoftwareFarm.class:71 msgid "My software" msgstr "" #: FSoftwareFarm.class:75 msgid "Other software from" msgstr "" #: FSoftwareFarm.class:78 msgid "All software" msgstr "" #: FSoftwareFarm.class:209 #, fuzzy msgid "No software found." msgstr "找不到說明." #: FSoftwareFarm.class:228 msgid "Request cancelled." msgstr "" #: FSoftwareFarm.class:376 #, fuzzy msgid "Cancel my vote" msgstr "使用者取消" #: FSoftwareFarm.class:383 msgid "Upgrade" msgstr "" #: FSoftwareFarm.class:420 msgid "Published &1 (on &2)" msgstr "" #: FSoftwareFarm.class:563 #, fuzzy msgid "Do you really want to download &1?" msgstr "您確定要刪除表格 '&1' 嗎?" #: FSoftwareFarm.class:566 #, fuzzy msgid "Unable to download &1:" msgstr "無法載入表格 '&1'." #: FSoftwareFarm.class:568 #, fuzzy msgid "&1 has been successfully downloaded." msgstr "專案建立成功." #: FSoftwareFarm.class:583 #, fuzzy msgid "Do you really want to upgrade to &1?" msgstr "您確定要刪除表格 '&1' 嗎?" #: FSoftwareFarm.class:586 #, fuzzy msgid "Unable to upgrade to &1:" msgstr "無法重新命名 '&1'" #: FSoftwareFarm.class:593 #, fuzzy msgid "Do you really want to uninstall &1?" msgstr "您確定要刪除表格 '&1' 嗎?" #: FSoftwareFarm.class:596 #, fuzzy msgid "Unable to uninstall &1:" msgstr "無法轉換 &1" #: FSoftwareFarm.class:598 #, fuzzy msgid "&1 has been successfully uninstalled." msgstr "專案建立成功." #: FSoftwareFarm.class:604 #, fuzzy msgid "Do you really want to install &1?" msgstr "您確定要刪除表格 '&1' 嗎?" #: FSoftwareFarm.class:607 #, fuzzy msgid "Unable to install &1:" msgstr "無法轉換 &1" #: FSoftwareFarm.class:609 #, fuzzy msgid "&1 has been successfully installed." msgstr "專案建立成功." #: FSoftwareFarm.class:629 #, fuzzy msgid "Unable to modify your vote." msgstr "無法匯出資料." #: FSoftwareFarm.class:665 #, fuzzy msgid "Do you really want to delete &1 from the farm server?" msgstr "你要刪除這個檔案嗎?" #: FSoftwareFarm.class:669 #, fuzzy msgid "Unable to remove &1:" msgstr "無法重新命名 '&1'" #: FSoftwareFarm.form:66 #, fuzzy msgid "Gambas Software Farm" msgstr "Gambas forms" #: FSoftwareFarm.form:159 FToolBox.form:30 FTranslate.form:208 #, fuzzy msgid "Show" msgstr "顯示 tab 字元" #: FSoftwareFarm.form:165 msgid "Installed" msgstr "" #: FSoftwareFarm.form:165 msgid "Most downloaded" msgstr "" #: FSoftwareFarm.form:165 #, fuzzy msgid "Most recent" msgstr "開啟最近的檔案(r)" #: FSoftwareFarm.form:171 #, fuzzy msgid "Show filters" msgstr "顯示加入的檔案" #: FSoftwareFarm.form:177 #, fuzzy msgid "Show old versions" msgstr "顯示工具提示" #: FSoftwareFarm.form:397 #, fuzzy msgid "Download" msgstr "下" #: FSoftwareFarm.form:405 #, fuzzy msgid "Download and install" msgstr "修改文件" #: FSoftwareFarm.form:413 msgid "Vote" msgstr "" #: FSystemInfo.class:224 msgid "Please copy these informations in all your bug reports." msgstr "請在所有的錯誤回報中貼上這些資訊." #: FTableChooser.form:16 msgid "Choose a table" msgstr "選擇表格" #: FTestSuite.class:90 #, fuzzy msgid "Unable to load test suites." msgstr "無法載入表格 '&1'." #: FTestSuite.class:209 msgid "Test suite #&1" msgstr "" #: FTestSuite.class:247 #, fuzzy msgid "This test suite already exists." msgstr "這個名稱已經存在." #: FTestSuite.class:394 #, fuzzy msgid "Unable to save test suites." msgstr "無法儲存專案." #: FTestSuite.class:404 #, fuzzy msgid "Do you really want to remove this test suite?" msgstr "您確定要移除選取的列嗎?" #: FTestSuite.form:63 #, fuzzy msgid "New test suite" msgstr "新增程式碼片段" #: FTestSuite.form:70 msgid "Duplicate test suite" msgstr "" #: FTestSuite.form:77 #, fuzzy msgid "Rename test suite" msgstr "重新命名表格" #: FTestSuite.form:84 #, fuzzy msgid "Delete test suite" msgstr "刪除" #: FTestSuite.form:117 #, fuzzy msgid "Select all tests" msgstr "選擇全部" #: FTestSuite.form:124 #, fuzzy msgid "Unselect all tests" msgstr "全部取消選取" #: FTestSuite.form:143 msgid "Test with" msgstr "" #: FText.class:12 #, fuzzy msgid "Edit '&1' property" msgstr "編輯列表屬性" #: FText.form:29 msgid "Use a fixed font" msgstr "使用固定字字形" #: FTextEditor.class:240 msgid "Console output #&1" msgstr "" #: FTextEditor.class:1802 msgid "Preview refresh..." msgstr "" #: FTextEditor.class:1885 #, fuzzy msgid "Default style sheet" msgstr "預設值" #: FTextEditor.class:1938 #, fuzzy msgid "Example" msgstr "範例" #: FTextEditor.form:186 msgid "Sort ascent" msgstr "" #: FTextEditor.form:192 msgid "Sort descent" msgstr "" #: FTextEditor.form:727 #, fuzzy msgid "Toggle preview" msgstr "切換格線" #: FTextEditor.form:807 msgid "Load images" msgstr "" #: FTips.class:37 msgid "Tip of the day #&1" msgstr "每日提示 #&1" #: FTips.class:95 msgid "Unable to read tip of the day !" msgstr "無法讀取每日提示!" #: FTips.form:70 msgid "Show tips on startup" msgstr "在啟動時顯示提示" #: FToolBox.class:36 msgid "Chooser" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Container" msgstr "繼續" #: FToolBox.class:36 msgid "Dialog" msgstr "" #: FToolBox.class:36 #, fuzzy msgid "Network" msgstr "網路" #: FToolBox.class:36 #, fuzzy msgid "Special" msgstr "特殊貼上" #: FToolBox.class:360 Project.module:865 #, fuzzy msgid "Current project" msgstr "目前的物件" #: FToolBox.form:34 #, fuzzy msgid "Button size" msgstr "工具箱大小" #: FToolBox.form:38 msgid "Tiny" msgstr "" #: FToolBox.form:45 msgid "Small" msgstr "小型" #: FToolBox.form:52 msgid "Medium" msgstr "" #: FToolBox.form:59 msgid "Large" msgstr "" #: FToolBox.form:66 #, fuzzy msgid "Deprecated controls" msgstr "資料繫結控制項" #: FToolBox.form:112 #, fuzzy msgid "Change button size" msgstr "工具箱大小" #: FToolBox.form:120 #, fuzzy msgid "Show deprecated controls" msgstr "顯示會出的類別" #: FTranslate.class:42 msgid "The project is void. There is nothing to translate." msgstr "這專案是空的,沒有內容可翻譯." #: FTranslate.class:74 msgid "Language" msgstr "語言" #: FTranslate.class:77 #, fuzzy msgid "Not translated" msgstr "翻譯" #: FTranslate.class:169 msgid "Translation files" msgstr "翻譯檔" #: FTranslate.class:330 msgid "Cannot read translation file for language '&1'" msgstr "無法讀取語言檔支援語言 - '&1'" #: FTranslate.class:566 msgid "Cannot save translation." msgstr "無法儲存語言檔." #: FTranslate.class:679 msgid "Do you really want to delete this translation ?" msgstr "你要刪除這個翻譯嗎?" #: FTranslate.class:788 msgid "Do you really want to reload this translation ?" msgstr "你要重新載入這個翻譯嗎?" #: FTranslate.class:802 msgid "Export a translation" msgstr "輸出翻譯" #: FTranslate.class:1017 msgid "Please select the translation file to import." msgstr "請輸入要匯入的翻譯檔." #: FTranslate.class:1055 msgid "No translation were picked up." msgstr "沒有套用翻譯." #: FTranslate.class:1057 msgid "One translation was picked up." msgstr "已套用一個翻譯." #: FTranslate.class:1059 msgid "&1 translations were picked up." msgstr "已套用 &1 個翻譯." #: FTranslate.class:1067 msgid "Cannot import translation file." msgstr "無法匯入語言檔." #: FTranslate.class:1116 msgid "Everything seems to be correct." msgstr "全部似乎是正確的." #: FTranslate.class:1126 msgid "Translated string symbols do not match untranslated string ones." msgstr "翻譯字串符號與未翻譯字串不吻合." #: FTranslate.class:1152 msgid "&1 strings. Everything is translated!" msgstr "總共 &1 個字串. 所有字串都已翻譯完成!" #: FTranslate.class:1154 msgid "&1 strings. One is not translated. &3% done." msgstr "總共 &1 個字串. 一個字串未翻譯. 已完成 &3%." #: FTranslate.class:1156 msgid "&1 strings. &2 are not translated. &3% done." msgstr "總共 &1 個字串. &2 未翻譯. 已完成 &3%." #: FTranslate.class:1745 #, fuzzy msgid "Automatic translation has failed." msgstr "無法匯入語言檔." #: FTranslate.class:1757 #, fuzzy msgid "Do you want to fill the translation automatically?" msgstr "你要刪除這個翻譯嗎?" #: FTranslate.form:77 msgid "Project translation" msgstr "專案翻譯" #: FTranslate.form:106 #, fuzzy msgid "Automatic translation" msgstr "自動加上副檔名" #: FTranslate.form:118 msgid "Untranslated strings" msgstr "" #: FTranslate.form:122 msgid "Translated strings" msgstr "" #: FTranslate.form:126 msgid "All strings" msgstr "" #: FTranslate.form:197 #, fuzzy msgid "Add a new translation" msgstr "新增翻譯" #: FTranslate.form:232 msgid "Save translation" msgstr "儲存翻譯" #: FTranslate.form:240 msgid "Verify the translation" msgstr "翻譯校對" #: FTranslate.form:242 msgid "Verify" msgstr "" #: FTranslate.form:312 #, fuzzy msgid "Find next translated string" msgstr "搜尋下一個沒有翻譯的字串" #: FTranslate.form:318 #, fuzzy msgid "Find previous translated string" msgstr "搜尋上一個沒有翻譯的字串" #: FTranslate.form:324 msgid "Find previous untranslated string" msgstr "搜尋上一個沒有翻譯的字串" #: FTranslate.form:330 msgid "Find next untranslated string" msgstr "搜尋下一個沒有翻譯的字串" #: FTranslate.form:340 msgid "Clear this translation" msgstr "清除這個翻譯" #: FTranslate.form:346 msgid "This string must not be translated" msgstr "這個字串不可翻譯" #: FTranslate.form:352 msgid "Copy untranslated string" msgstr "複製未翻譯的字串" #: FTranslate.form:458 msgid "Import all translations recursively" msgstr "遞迴匯入所有的語言檔" #: FTranslate.form:464 #, fuzzy msgid "Replace existing translations" msgstr "清除這個翻譯" #: FTranslate.form:480 msgid "Import a translation file" msgstr "匯入翻譯檔" #: FVersionControl.form:81 #, fuzzy msgid "Hide translation changes" msgstr "新增翻譯" #: FVersionControl.form:99 #, fuzzy msgid "There is nothing to commit." msgstr "無法提交專案." #: FVersionControl.form:117 msgid "Commit and push" msgstr "" #: FVersionControl.form:124 msgid "Push" msgstr "" #: FWebFontChooser.form:24 #, fuzzy msgid "Select font" msgstr "選擇字型" #: FWelcome.class:69 msgid "New project..." msgstr "新專案..." #: FWelcome.class:71 msgid "Recent projects" msgstr "最近的專案" #: FWelcome.class:73 Project.module:6581 msgid "Installed software" msgstr "" #: FWelcome.form:27 msgid "Welcome to Gambas 3" msgstr "歡迎使用 Gambas 3" #: FarmIdentity.class:135 msgid "Anonymous" msgstr "" #: FarmRequest.class:125 msgid "No answer." msgstr "" #: FarmRequest.class:167 msgid "Register user" msgstr "" #: FarmRequest.class:242 #, fuzzy msgid "Publish project" msgstr "刷新專案" #: FarmRequest.class:363 msgid "Download software" msgstr "" #: FarmRequest.class:389 #, fuzzy msgid "Delete software" msgstr "刪除表格" #: HelpView.class:39 Wiki.module:816 #, fuzzy msgid "This page does not exist." msgstr "此專案不存在." #: Language.module:8 msgid "Afrikaans (South Africa)" msgstr "" #: Language.module:11 msgid "Arabic (Egypt)" msgstr "阿拉伯語 (埃及)" #: Language.module:12 msgid "Arabic (Tunisia)" msgstr "阿拉伯語 (突尼西亞)" #: Language.module:15 msgid "Azerbaijani (Azerbaijan)" msgstr "亞塞拜然語 (亞塞拜然)" #: Language.module:18 msgid "Bulgarian (Bulgaria)" msgstr "保加利亞語 (保加利亞)" #: Language.module:21 msgid "Catalan (Catalonia, Spain)" msgstr "加泰隆尼亞語 (加泰隆尼亞,西班牙)" #: Language.module:25 msgid "Welsh (United Kingdom)" msgstr "威爾斯 (大英國協)" #: Language.module:28 msgid "Czech (Czech Republic)" msgstr "捷克語 (捷克共和國)" #: Language.module:31 msgid "Danish (Denmark)" msgstr "丹麥語 (丹麥)" #: Language.module:34 msgid "German (Germany)" msgstr "德文 (德國)" #: Language.module:35 msgid "German (Belgium)" msgstr "德文 (比利時)" #: Language.module:38 msgid "Greek (Greece)" msgstr "希臘語 (希臘)" #: Language.module:41 msgid "English (common)" msgstr "英文 (一般)" #: Language.module:42 msgid "English (United Kingdom)" msgstr "英文 (大英國協)" #: Language.module:43 msgid "English (U.S.A.)" msgstr "英文 (美國)" #: Language.module:44 msgid "English (Australia)" msgstr "英文 (澳洲)" #: Language.module:45 msgid "English (Canada)" msgstr "英文 (加拿大)" #: Language.module:48 msgid "Esperanto (Anywhere!)" msgstr "世界語" #: Language.module:51 #, fuzzy msgid "Spanish (common)" msgstr "英文 (一般)" #: Language.module:52 msgid "Spanish (Spain)" msgstr "西班牙語 (西班牙)" #: Language.module:53 msgid "Spanish (Argentina)" msgstr "西班牙語( 阿根庭)" #: Language.module:56 msgid "Estonian (Estonia)" msgstr "愛沙尼亞語 (愛沙尼亞)" #: Language.module:59 msgid "Basque (Basque country)" msgstr "巴斯克語 (巴斯克)" #: Language.module:62 msgid "Farsi (Iran)" msgstr "波斯語 (伊朗)" #: Language.module:65 msgid "Finnish (Finland)" msgstr "芬蘭語 (芬蘭)" #: Language.module:68 msgid "French (France)" msgstr "法文 (法國)" #: Language.module:69 msgid "French (Belgium)" msgstr "法文 (比利時)" #: Language.module:70 msgid "French (Canada)" msgstr "法文 (加拿大)" #: Language.module:71 msgid "French (Switzerland)" msgstr "法文 (瑞士)" #: Language.module:74 msgid "Galician (Spain)" msgstr "加里西亞語 (西班牙)" #: Language.module:77 msgid "Hebrew (Israel)" msgstr "希伯來文 (以色列)" #: Language.module:80 msgid "Hindi (India)" msgstr "印地語 (印度)" #: Language.module:83 msgid "Hungarian (Hungary)" msgstr "匈牙利語 (匈牙利)" #: Language.module:86 msgid "Croatian (Croatia)" msgstr "克羅埃西亞語 (克羅埃西亞)" #: Language.module:89 msgid "Indonesian (Indonesia)" msgstr "印尼語 (印尼)" #: Language.module:92 msgid "Irish (Ireland)" msgstr "愛爾蘭語 (愛爾蘭)" #: Language.module:95 msgid "Icelandic (Iceland)" msgstr "" #: Language.module:98 msgid "Italian (Italy)" msgstr "義大利文 (義大利)" #: Language.module:101 msgid "Japanese (Japan)" msgstr "日語 (日本)" #: Language.module:104 msgid "Khmer (Cambodia)" msgstr "高棉語 (柬埔寨)" #: Language.module:107 msgid "Korean (Korea)" msgstr "韓語 (韓國)" #: Language.module:110 msgid "Latin" msgstr "拉丁語" #: Language.module:113 msgid "Lithuanian (Lithuania)" msgstr "立陶宛語 (立陶宛)" #: Language.module:116 msgid "Malayalam (India)" msgstr "馬拉雅拉姆語 (印度)" #: Language.module:119 msgid "Macedonian (Republic of Macedonia)" msgstr "馬其頓 (馬其頓共和國)" #: Language.module:122 msgid "Dutch (Netherlands)" msgstr "荷蘭語 (荷蘭)" #: Language.module:123 msgid "Dutch (Belgium)" msgstr "荷蘭語 (比利時)" #: Language.module:126 msgid "Norwegian (Norway)" msgstr "挪威語 (挪威)" #: Language.module:129 msgid "Punjabi (India)" msgstr "旁遮普語 (印度)" #: Language.module:132 msgid "Polish (Poland)" msgstr "波蘭語 (波蘭)" #: Language.module:135 msgid "Portuguese (Portugal)" msgstr "葡萄牙語 (葡萄牙)" #: Language.module:136 msgid "Portuguese (Brazil)" msgstr "葡萄牙語 (巴西)" #: Language.module:139 msgid "Valencian (Valencian Community, Spain)" msgstr "巴倫西亞語 (巴倫西亞自治區, 西班牙)" #: Language.module:142 msgid "Romanian (Romania)" msgstr "羅馬尼亞語 (羅馬尼亞)" #: Language.module:145 msgid "Russian (Russia)" msgstr "俄文 (俄國)" #: Language.module:148 msgid "Slovenian (Slovenia)" msgstr "斯洛法尼亞語 (斯洛法尼亞)" #: Language.module:151 msgid "Albanian (Albania)" msgstr "阿爾巴尼亞語 (阿爾巴尼亞)" #: Language.module:154 msgid "Serbian (Serbia & Montenegro)" msgstr "塞爾維亞語 (塞爾維亞 & 蒙特內哥羅)" #: Language.module:157 msgid "Swedish (Sweden)" msgstr "瑞典語 (瑞典)" #: Language.module:160 msgid "Turkish (Turkey)" msgstr "土耳其語 (土耳其)" #: Language.module:163 msgid "Ukrainian (Ukrain)" msgstr "烏克蘭語 (烏克蘭)" #: Language.module:166 msgid "Vietnamese (Vietnam)" msgstr "越南語 (越南)" #: Language.module:169 msgid "Wallon (Belgium)" msgstr "華隆語 (比利時)" #: Language.module:172 msgid "Simplified chinese (China)" msgstr "簡體中文 (中國)" #: Language.module:173 msgid "Traditional chinese (Taiwan)" msgstr "繁體中文 (台灣)" #: Language.module:220 msgid "Unknown" msgstr "未知" #: MCompressFile.module:600 msgid "Unable to compress file." msgstr "無法壓縮檔案." #: MConnection.module:76 msgid "Unable to retrieve password." msgstr "" #: MConnection.module:91 msgid "Unable to save password." msgstr "" #: MConnection.module:332 msgid "Cannot create table '&1'." msgstr "無法建立表格 '&1'." #: MConnection.module:517 msgid "Cannot create metadata table." msgstr "" #: MErrorMessage.module:4 msgid "&1 cannot be static" msgstr "'&1' 不能為靜態" #: MErrorMessage.module:5 msgid "&1 declaration does not match" msgstr "&1 和宣告不符合" #: MErrorMessage.module:6 msgid "&1 is declared but is not a function" msgstr "&1 已經宣告, 但是它不是函數" #: MErrorMessage.module:7 msgid "&1 is not a structure" msgstr "&1 不是結構" #: MErrorMessage.module:8 msgid "&1 is not declared" msgstr "&1 未宣告" #: MErrorMessage.module:9 msgid "&1 must be static" msgstr "&1 必須是靜態" #: MErrorMessage.module:10 msgid "&1: not in archive" msgstr "&1: 不在歸檔裡面" #: MErrorMessage.module:11 msgid "&1: syntax error" msgstr "&1: 語法錯誤" #: MErrorMessage.module:12 msgid "&1: syntax error in form file" msgstr "&1: 表單檔中存在語法錯誤" #: MErrorMessage.module:13 msgid "&1: too many nested containers" msgstr "&1: 容器太多層" #: MErrorMessage.module:14 msgid "'&1' already declared" msgstr "'&1' 已經宣告過了" #: MErrorMessage.module:15 msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "'&1.&2' 在類別 '&3' 中的覆載不正確" #: MErrorMessage.module:16 msgid "'&1.&2' is not a property" msgstr "'&1.&2' 不是屬性" #: MErrorMessage.module:17 msgid "'&1.&2' is not static" msgstr "'&1.&2' 不是靜態" #: MErrorMessage.module:18 msgid "'&1.&2' is read only" msgstr "'&1.&2' 是唯讀的" #: MErrorMessage.module:19 msgid "'&1.&2' is static" msgstr "'&1.&2' 是靜態" #: MErrorMessage.module:20 msgid "'&1.&2' is write only" msgstr "'&1.&2' 只能寫入" #: MErrorMessage.module:21 msgid "',' or ')'" msgstr "" #: MErrorMessage.module:22 msgid "A module cannot raise events" msgstr "模組不可發起事件" #: MErrorMessage.module:23 msgid "A property implementation cannot be public" msgstr "屬性實作不可為公用" #: MErrorMessage.module:24 msgid "A property must be public" msgstr "屬性必須是公用" #: MErrorMessage.module:25 msgid "Access forbidden" msgstr "拒絕存取" #: MErrorMessage.module:26 msgid "Alias name must be a string" msgstr "別名必須是字串" #: MErrorMessage.module:27 msgid "Ambiguous expression. Please use brackets" msgstr "運算式語意不清楚. 請使用括號" #: MErrorMessage.module:28 msgid "Argument cannot be passed by reference" msgstr "引數不能以傳址方式傳遞" #: MErrorMessage.module:29 msgid "Arrays of structure are not supported" msgstr "不支援結構的陣列" #: MErrorMessage.module:30 #, fuzzy msgid "Assertion failed" msgstr "翻譯檔" #: MErrorMessage.module:31 msgid "Bad archive: &1: &2" msgstr "不正確的歸檔: &1: &2" #: MErrorMessage.module:32 msgid "Bad argument" msgstr "不正確的引數" #: MErrorMessage.module:33 msgid "Bad character constant in string" msgstr "字串中不正確的字元常數" #: MErrorMessage.module:34 msgid "Bad constant type" msgstr "不正確的常數型別" #: MErrorMessage.module:35 msgid "Bad event handler in &1.&2(): &3" msgstr "不正確的事件處理程序 &1.&2(): &3" #: MErrorMessage.module:36 msgid "Bad expression: &1" msgstr "不正確的表達式: &1" #: MErrorMessage.module:37 msgid "Bad form file version" msgstr "表單檔案版本不正確" #: MErrorMessage.module:38 msgid "Bad format in section: " msgstr "" #: MErrorMessage.module:39 msgid "Bad format string" msgstr "不正確的字串格式" #: MErrorMessage.module:40 msgid "Bad number of dimensions" msgstr "維數不正確" #: MErrorMessage.module:41 msgid "Bad project file: line &1: &2" msgstr "不正確的專案檔: 第 &1 行: &2" #: MErrorMessage.module:42 msgid "Bad regular expression: &1" msgstr "不正確的規則表達式: &1" #: MErrorMessage.module:43 msgid "Bad string conversion" msgstr "不正確的字串轉換" #: MErrorMessage.module:44 msgid "Bad subscript range" msgstr "不正確的下標範圍" #: MErrorMessage.module:45 msgid "Bad use of virtual class" msgstr "虛擬類別的使用不正確" #: MErrorMessage.module:46 msgid "Bad version string" msgstr "不正確的版本字串" #: MErrorMessage.module:47 msgid "Cannot change current directory to '&1': &2" msgstr "無法切換目錄到 '&1': &2" #: MErrorMessage.module:48 msgid "Cannot create .startup file" msgstr "無法建立 .startup 檔案" #: MErrorMessage.module:49 msgid "Cannot create action file: &1" msgstr "無法建立動作檔: &1" #: MErrorMessage.module:50 msgid "Cannot create callback: &1" msgstr "無法建立 callback 函數: &1" #: MErrorMessage.module:51 msgid "Cannot create class information: &1: &2" msgstr "無法建立類別資訊: &1: &2" #: MErrorMessage.module:52 msgid "Cannot create file: &1" msgstr "無法建立檔案: &1" #: MErrorMessage.module:53 msgid "Cannot create temporary archive file: &1" msgstr "無法建立暫存歸檔: &1" #: MErrorMessage.module:54 msgid "Cannot find dynamic library '&1': &2" msgstr "找不到動態函式庫 '&1': &2" #: MErrorMessage.module:55 msgid "Cannot find symbol '&2' in dynamic library '&1'" msgstr "在動態函式庫 '&1' 中找不到符號 '&2'" #: MErrorMessage.module:56 msgid "Cannot inherit itself" msgstr "" #: MErrorMessage.module:57 msgid "Cannot inherit twice" msgstr "不能繼承兩次" #: MErrorMessage.module:58 msgid "Cannot instantiate native types" msgstr "無法具現化原生型別" #: MErrorMessage.module:59 msgid "Cannot load class '&1': &2&3" msgstr "無法載入類別 '&1': &2&3" #: MErrorMessage.module:60 msgid "Cannot load component '&1': &2" msgstr "無法載入元件 '&1': &2" #: MErrorMessage.module:61 msgid "Cannot load source file: &1" msgstr "無載入原始碼檔案: &1" #: MErrorMessage.module:62 msgid "Cannot make executable: &1: &2" msgstr "無法產生執行檔: &1: &2" #: MErrorMessage.module:63 msgid "Cannot mix NEW and embedded array" msgstr "NEW 不能和嵌入式陣列一起使用" #: MErrorMessage.module:64 msgid "Cannot mix NEW and embedded structure" msgstr "NEW 不能和嵌入式結構一起使用" #: MErrorMessage.module:65 msgid "Cannot open file '&1': &2" msgstr "無法開啟檔案 '&1': &2" #: MErrorMessage.module:66 msgid "Cannot open file: &1" msgstr "無法開啟檔案: &1" #: MErrorMessage.module:67 msgid "Cannot raise events in static function" msgstr "不能在靜態函數裡面啟動事件" #: MErrorMessage.module:68 msgid "Cannot read file: &1: &2" msgstr "無法讀取檔案: &1: &2" #: MErrorMessage.module:69 msgid "Cannot register class '&1'" msgstr "無法註冊類別 '&1'" #: MErrorMessage.module:70 msgid "Cannot remove file '&1': &2" msgstr "無法移除檔案 '&1': &2" #: MErrorMessage.module:71 msgid "Cannot rename file '&1' to '&2': &3" msgstr "無法重新命名檔案 '&1' 到 '&2': &3" #: MErrorMessage.module:72 msgid "Cannot run child process: &1&2" msgstr "" #: MErrorMessage.module:73 msgid "Cannot set file owner: &1: &2" msgstr "無法設定檔案擁有者: &1: &2" #: MErrorMessage.module:74 #, fuzzy msgid "Cannot use &1 twice" msgstr "不能連續兩次使用 TRY" #: MErrorMessage.module:75 #, fuzzy msgid "Cannot use &1 with &2" msgstr "不能連續兩次使用 TRY" #: MErrorMessage.module:76 msgid "Cannot use NEW operator there" msgstr "不能在這裡使用 NEW" #: MErrorMessage.module:77 msgid "Class '&1' is not creatable" msgstr "類別 '&1' 不能被建立" #: MErrorMessage.module:78 msgid "Comparison operator expected" msgstr "必須是比較運算子" #: MErrorMessage.module:79 #, fuzzy msgid "Component name must be a string" msgstr "別名必須是字串" #: MErrorMessage.module:80 msgid "Component not found: &1" msgstr "找不到元件: &1" #: MErrorMessage.module:81 #, fuzzy msgid "Constant string expected" msgstr "應該為字串" #: MErrorMessage.module:82 msgid "Contents already declared" msgstr "" #: MErrorMessage.module:83 msgid "Default case already defined" msgstr "已經定義了default case" #: MErrorMessage.module:84 msgid "Default case must be the last one" msgstr "default case 必須是最後一項" #: MErrorMessage.module:85 msgid "Device is full" msgstr "裝置已滿" #: MErrorMessage.module:86 msgid "Directory is not empty" msgstr "" #: MErrorMessage.module:87 msgid "Division by zero" msgstr "除以零" #: MErrorMessage.module:88 msgid "Dynamic symbols cannot be used in static function" msgstr "不能在靜態函數中使用動態符號" #: MErrorMessage.module:89 msgid "Embedded arrays are forbidden here" msgstr "這裡不能使用嵌入式陣列" #: MErrorMessage.module:90 msgid "End of file" msgstr "檔案結尾" #: MErrorMessage.module:91 msgid "Equality or inequality operator expected" msgstr "必須是等號或是不相等運算子" #: MErrorMessage.module:92 msgid "Expression too complex" msgstr "表達式過於複雜" #: MErrorMessage.module:93 msgid "Expression too complex. Too many operands" msgstr "表達式過於複雜, 含有太多運算元" #: MErrorMessage.module:94 #, fuzzy msgid "Extern library name must be a string" msgstr "函式庫名稱必須是字串" #: MErrorMessage.module:95 msgid "File already exists" msgstr "檔案已經存在" #: MErrorMessage.module:96 msgid "File is a directory" msgstr "這個檔案是一個目錄" #: MErrorMessage.module:97 msgid "File is locked" msgstr "檔案已被鎖定" #: MErrorMessage.module:98 msgid "File name is too long" msgstr "檔名過長" #: MErrorMessage.module:99 msgid "File or directory does not exist" msgstr "檔案或目錄不存在" #: MErrorMessage.module:100 msgid "Forbidden GOSUB" msgstr "" #: MErrorMessage.module:101 msgid "Forbidden GOTO" msgstr "這裡不能使用 GOTO" #: MErrorMessage.module:102 msgid "Free object referenced" msgstr "" #: MErrorMessage.module:103 msgid "Illegal instruction" msgstr "不正確的指令" #: MErrorMessage.module:104 msgid "Internal compiler error" msgstr "" #: MErrorMessage.module:105 msgid "Invalid assignment" msgstr "不正確的指定" #: MErrorMessage.module:106 msgid "Invalid date" msgstr "不正確的日期" #: MErrorMessage.module:107 msgid "Invalid object" msgstr "不正確的物件" #: MErrorMessage.module:108 msgid "Invalid path" msgstr "不正確的路徑" #: MErrorMessage.module:109 msgid "IsMissing() requires a function argument" msgstr "" #: MErrorMessage.module:110 msgid "Jump is too far" msgstr "" #: MErrorMessage.module:111 msgid "Label '&1' not declared" msgstr "標籤 '&1' 未宣告" #: MErrorMessage.module:112 msgid "Library name must be a string" msgstr "函式庫名稱必須是字串" #: MErrorMessage.module:113 msgid "Loop variable already in use" msgstr "迴圈變數已經在使用中" #: MErrorMessage.module:114 #, fuzzy msgid "Loop variable cannot be an argument" msgstr "迴圈變數已經在使用中" #: MErrorMessage.module:115 #, fuzzy msgid "Loop variable cannot be global" msgstr "迴圈變數必須是區域變數" #: MErrorMessage.module:116 msgid "ME cannot be used in a static function" msgstr "ME 不能用於靜態函數中" #: MErrorMessage.module:117 msgid "Mathematic error" msgstr "數學錯誤" #: MErrorMessage.module:118 msgid "Missing #Endif" msgstr "缺少 #Endif" #: MErrorMessage.module:119 msgid "Missing ']'" msgstr "" #: MErrorMessage.module:120 msgid "Missing '}'" msgstr "" #: MErrorMessage.module:121 msgid "Missing operator" msgstr "缺少運算子" #: MErrorMessage.module:122 msgid "Missing right brace" msgstr "缺少右括號" #: MErrorMessage.module:123 msgid "Multidimensional array" msgstr "" #: MErrorMessage.module:124 msgid "NEW cannot have arguments passed by reference" msgstr "NEW 的參數不能用傳址的方式傳遞" #: MErrorMessage.module:125 msgid "No instantiation method" msgstr "沒有具現化方法" #: MErrorMessage.module:126 msgid "No parent class" msgstr "沒有父類別" #: MErrorMessage.module:127 msgid "No return value" msgstr "沒有回傳值" #: MErrorMessage.module:128 msgid "No startup method" msgstr "沒有起始方法" #: MErrorMessage.module:129 msgid "Non terminated string" msgstr "沒有結尾的字串" #: MErrorMessage.module:130 msgid "Not a directory: &1" msgstr "不是目錄: &1" #: MErrorMessage.module:131 msgid "Not a function" msgstr "不是函數" #: MErrorMessage.module:132 msgid "Not a procedure" msgstr "" #: MErrorMessage.module:133 msgid "Not an array" msgstr "不是陣列" #: MErrorMessage.module:134 msgid "Not an enumeration" msgstr "不是列舉" #: MErrorMessage.module:135 msgid "Not an object" msgstr "不是物件" #: MErrorMessage.module:136 msgid "Not enough argument to New()" msgstr "New() 的引數數目不足" #: MErrorMessage.module:137 msgid "Not enough arguments" msgstr "引數數目不足" #: MErrorMessage.module:138 msgid "Not enough arguments to &1()" msgstr "&1() 的引數數目不足" #: MErrorMessage.module:139 msgid "Not implemented yet" msgstr "" #: MErrorMessage.module:140 msgid "Not supported" msgstr "" #: MErrorMessage.module:141 msgid "Null object" msgstr "空物件" #: MErrorMessage.module:142 msgid "Number" msgstr "" #: MErrorMessage.module:143 #, fuzzy msgid "Number or Date expected" msgstr "必須是比較運算子" #: MErrorMessage.module:144 msgid "Number or date" msgstr "" #: MErrorMessage.module:145 msgid "Number, Date or String" msgstr "" #: MErrorMessage.module:146 msgid "Number, String or Object" msgstr "" #: MErrorMessage.module:147 msgid "Object" msgstr "" #: MErrorMessage.module:148 msgid "Out of bounds" msgstr "超出範圍" #: MErrorMessage.module:149 msgid "Out of memory" msgstr "記憶體不足" #: MErrorMessage.module:150 msgid "Out of range" msgstr "超出範圍" #: MErrorMessage.module:151 msgid "Overflow" msgstr "溢位" #: MErrorMessage.module:152 msgid "Overriding an already inherited class is forbidden" msgstr "" #: MErrorMessage.module:153 msgid "Read error" msgstr "讀取錯誤" #: MErrorMessage.module:154 #, fuzzy msgid "Read-only array" msgstr "唯讀" #: MErrorMessage.module:155 msgid "Return value datatype not specified in function declaration" msgstr "函數宣告中未指定回傳型態" #: MErrorMessage.module:156 msgid "STOP instruction encountered" msgstr "碰到 STOP 指令" #: MErrorMessage.module:157 msgid "SUPER cannot be used alone" msgstr "SUPER 不能單獨使用" #: MErrorMessage.module:158 msgid "Serialization error" msgstr "序列化錯誤" #: MErrorMessage.module:159 msgid "Stack overflow" msgstr "堆疊溢出" #: MErrorMessage.module:160 msgid "Standard type" msgstr "" #: MErrorMessage.module:161 msgid "Stream is closed" msgstr "關閉串流" #: MErrorMessage.module:162 msgid "String expected" msgstr "應該為字串" #: MErrorMessage.module:163 msgid "Structures must be public" msgstr "結構必須為公用" #: MErrorMessage.module:164 msgid "Subroutine arguments cannot be passed by reference" msgstr "副程序的引數不能以傳址傳遞" #: MErrorMessage.module:165 msgid "Syntax error" msgstr "語法錯誤" #: MErrorMessage.module:166 msgid "Syntax error at function declaration" msgstr "函數宣告語法錯誤" #: MErrorMessage.module:167 msgid "Syntax error in event name" msgstr "事件名稱語法錯誤" #: MErrorMessage.module:168 msgid "Syntax error in file open mode" msgstr "開檔模式語法錯誤" #: MErrorMessage.module:169 msgid "Syntax error in return type" msgstr "回傳型別語法錯誤" #: MErrorMessage.module:170 msgid "Syntax error. &1 expected" msgstr "語法錯誤: 應該為 &1" #: MErrorMessage.module:171 msgid "Syntax error. '...' must be the last argument" msgstr "語法錯誤: '...' 必須為最後一個引數" #: MErrorMessage.module:172 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "語法錯誤: SELECT 後面應該接著 CASE 或 DEFAULT" #: MErrorMessage.module:173 msgid "Syntax error. CLASS needs an identifier" msgstr "語法錯誤: CLASS 必須有識別項" #: MErrorMessage.module:174 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "語法錯誤: 這種語法不能用在指定" #: MErrorMessage.module:175 msgid "Syntax error. INHERITS needs a class name" msgstr "語法錯誤: INHERITS 必須有類別名稱" #: MErrorMessage.module:176 #, fuzzy msgid "Syntax error. Identifier expected" msgstr "語法錯誤: 應該為識別項" #: MErrorMessage.module:177 #, fuzzy msgid "Syntax error. Identifier expected for property name" msgstr "語法錯誤: 應該為識別項" #: MErrorMessage.module:178 #, fuzzy msgid "Syntax error. Identifier expected for property synonymous" msgstr "語法錯誤: 應該為識別項" #: MErrorMessage.module:179 #, fuzzy msgid "Syntax error. Identifier expected for property variable" msgstr "語法錯誤: 應該為識別項" #: MErrorMessage.module:180 msgid "Syntax error. Invalid identifier in function name" msgstr "語法錯誤: 函數名稱中含有不正確的識別項" #: MErrorMessage.module:181 msgid "Syntax error. Invalid optional parameter" msgstr "語法錯誤: 不正確的選擇性參數" #: MErrorMessage.module:182 #, fuzzy msgid "Syntax error. Invalid property type" msgstr "語法錯誤: 不正確的屬性型別" #: MErrorMessage.module:183 msgid "Syntax error. Invalid return type" msgstr "語法錯誤: 不正確的回傳型態" #: MErrorMessage.module:184 msgid "Syntax error. Invalid type description of &1 argument" msgstr "語法錯誤: 引數 '&1' 中不正確的型態描述" #: MErrorMessage.module:185 msgid "Syntax error. Invalid type description of &1 field" msgstr "語法錯誤: 欄位 '&1' 中不正確的型態描述" #: MErrorMessage.module:186 msgid "Syntax error. Needless arguments" msgstr "語法錯誤: 不必要的引數" #: MErrorMessage.module:187 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "語法錯誤: 在 WITH ... END WITH 之外使用 '.' 開頭" #: MErrorMessage.module:188 msgid "Syntax error. STRUCT needs an identifier" msgstr "語法錯誤: STRUCT 需要一個識別項" #: MErrorMessage.module:189 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "語法錯誤: 引數 &1 不是正確的識別項" #: MErrorMessage.module:190 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "語法錯誤: 欄位 &1 不是正確的識別項" #: MErrorMessage.module:191 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "語法錯誤: VarPtr() 只需要一個參數" #: MErrorMessage.module:192 msgid "System error #&1: &2" msgstr "系統錯誤 #&1: &2" #: MErrorMessage.module:193 msgid "The '!' operator must be followed by an identifier" msgstr "'!' 必須接著一個識別項" #: MErrorMessage.module:194 msgid "The '.' operator must be followed by an identifier" msgstr "'.' 必須接著一個識別項" #: MErrorMessage.module:195 msgid "The function must take a fixed number of arguments" msgstr "" #: MErrorMessage.module:196 msgid "The special method &1 cannot be a function" msgstr "特殊方法 &1 不可為函數" #: MErrorMessage.module:197 msgid "The special method &1 cannot be implemented" msgstr "特殊方法 &1 不可被實作" #: MErrorMessage.module:198 msgid "The special method &1 cannot be static" msgstr "特殊方法 &1 不可為靜態" #: MErrorMessage.module:199 msgid "The special method &1 must be a function" msgstr "特殊方法 &1 一定要是函數" #: MErrorMessage.module:200 msgid "The special method &1 must be public" msgstr "特殊方法 &1 一定要是公用" #: MErrorMessage.module:201 msgid "The special method &1 must be static" msgstr "特殊方法 &1 一定要是靜態" #: MErrorMessage.module:202 msgid "The special method &1 must return a boolean" msgstr "特殊方法 &1 必須回傳布林值" #: MErrorMessage.module:203 msgid "The special method &1 must take a variable number of arguments only" msgstr "特殊方法 &1 必須要接受動態長度的引數" #: MErrorMessage.module:204 msgid "The special method &1 must take at least one argument" msgstr "特殊方法 &1 必須要接受至少一個引數" #: MErrorMessage.module:205 msgid "The special method &1 takes no arguments" msgstr "特殊方法 &1 沒有引數" #: MErrorMessage.module:206 msgid "The special method must return an integer" msgstr "此特殊方法必須要回傳整數" #: MErrorMessage.module:207 msgid "The special method must take exactly one argument" msgstr "此特殊方法必須要接受一個引數" #: MErrorMessage.module:208 msgid "The special method must take exactly two arguments" msgstr "此特殊方法必須要接受兩個引數" #: MErrorMessage.module:209 msgid "The special method signature is incorrect" msgstr "此特殊方法形式不正確" #: MErrorMessage.module:210 msgid "This expression cannot be a statement" msgstr "這個表達式不能當作一個敘述" #: MErrorMessage.module:211 msgid "This expression cannot be passed by reference" msgstr "這個表達式不能以傳址方式傳遞" #: MErrorMessage.module:212 msgid "Too many arguments" msgstr "引數過多" #: MErrorMessage.module:213 msgid "Too many arguments to &1()" msgstr "&1() 引數過多" #: MErrorMessage.module:214 msgid "Too many array declarations" msgstr "陣列宣告過多" #: MErrorMessage.module:215 msgid "Too many constants" msgstr "常數過多" #: MErrorMessage.module:216 msgid "Too many different classes used" msgstr "使用了過多不同的類別" #: MErrorMessage.module:217 msgid "Too many dimensions" msgstr "維數過高" #: MErrorMessage.module:218 msgid "Too many dynamic variables" msgstr "動態變數過多" #: MErrorMessage.module:219 msgid "Too many events" msgstr "事件過多" #: MErrorMessage.module:220 msgid "Too many expressions in CASE" msgstr "CASE 中表達式過多" #: MErrorMessage.module:221 msgid "Too many external functions" msgstr "外部函數過多" #: MErrorMessage.module:222 msgid "Too many functions" msgstr "函數過多" #: MErrorMessage.module:223 msgid "Too many imbricated #If...#Endif" msgstr "#If ... #Endif 層數過多" #: MErrorMessage.module:224 msgid "Too many labels" msgstr "" #: MErrorMessage.module:225 msgid "Too many local variables" msgstr "" #: MErrorMessage.module:226 msgid "Too many nested control structures." msgstr "控制結構層數過多." #: MErrorMessage.module:227 msgid "Too many property synonymous" msgstr "" #: MErrorMessage.module:228 msgid "Too many simultaneous new strings" msgstr "同時出現過多新字串" #: MErrorMessage.module:229 msgid "Too many static variables" msgstr "靜態變數過多" #: MErrorMessage.module:230 msgid "Too many unknown symbols" msgstr "未知符號過多" #: MErrorMessage.module:231 msgid "Trailing backslash" msgstr "" #: MErrorMessage.module:232 msgid "Type mismatch" msgstr "型態不符合" #: MErrorMessage.module:233 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "型態不符合: 應該要是 &1, 卻得到 &2" #: MErrorMessage.module:234 msgid "Unable to create closure" msgstr "" #: MErrorMessage.module:235 msgid "Unable to get file position" msgstr "" #: MErrorMessage.module:236 msgid "Unable to load class file" msgstr "" #: MErrorMessage.module:237 msgid "Unable to prepare function description" msgstr "" #: MErrorMessage.module:238 msgid "Unexpected &1" msgstr "未預期的 &1" #: MErrorMessage.module:239 msgid "Unexpected end of line" msgstr "未預期的換行" #: MErrorMessage.module:240 msgid "Unexpected string" msgstr "未預期的字串" #: MErrorMessage.module:241 #, fuzzy msgid "Unknown class '&1'" msgstr "未知的識別項: &1" #: MErrorMessage.module:242 msgid "Unknown error" msgstr "未知的錯誤" #: MErrorMessage.module:243 msgid "Unknown file extension" msgstr "未知的副檔名" #: MErrorMessage.module:244 msgid "Unknown identifier: &1" msgstr "未知的識別項: &1" #: MErrorMessage.module:245 msgid "Unknown operator" msgstr "未知的運算子" #: MErrorMessage.module:246 msgid "Unknown symbol '&2' in class '&1'" msgstr "" #: MErrorMessage.module:247 msgid "Unknown user or group" msgstr "" #: MErrorMessage.module:248 msgid "Unsupported datatype" msgstr "" #: MErrorMessage.module:249 msgid "Unsupported string conversion" msgstr "不支援的字串轉換" #: MErrorMessage.module:250 msgid "Useless LOCK" msgstr "無用的 LOCK" #: MErrorMessage.module:251 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "VarPtr() 的引數必須是動態、靜態或是區域變數" #: MErrorMessage.module:252 #, fuzzy msgid "Void identifier" msgstr "未知的識別項: &1" #: MErrorMessage.module:253 msgid "Void key" msgstr "空鍵值" #: MErrorMessage.module:254 msgid "Write error" msgstr "寫入錯誤" #: MErrorMessage.module:255 msgid "cannot find component" msgstr "" #: MErrorMessage.module:256 msgid "cannot find library" msgstr "" #: MErrorMessage.module:257 msgid "class name hidden by global declaration: &1" msgstr "" #: MErrorMessage.module:258 msgid "class name hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:259 msgid "constant hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:260 msgid "extern function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:261 msgid "function hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:262 msgid "global variable hidden by local declaration: &1" msgstr "" #: MErrorMessage.module:263 msgid "integer and boolean mixed with `&1' operator" msgstr "" #: MErrorMessage.module:264 msgid "uninitialized global variable: &1" msgstr "" #: MErrorMessage.module:265 msgid "uninitialized variable: &1" msgstr "" #: MErrorMessage.module:266 msgid "unknown error" msgstr "" #: MErrorMessage.module:267 msgid "unused argument: &1" msgstr "" #: MErrorMessage.module:268 msgid "unused extern function: &1" msgstr "" #: MErrorMessage.module:269 msgid "unused function: &1" msgstr "" #: MErrorMessage.module:270 msgid "unused global variable: &1" msgstr "" #: MErrorMessage.module:271 msgid "unused variable: &1" msgstr "" #: MErrorMessage.module:275 msgid "cannot open slave pseudo-terminal: " msgstr "" #: MErrorMessage.module:276 msgid "cannot initialize pseudo-terminal: " msgstr "" #: MErrorMessage.module:277 msgid "cannot plug standard input: " msgstr "" #: MErrorMessage.module:278 msgid "cannot plug standard output and standard error: " msgstr "" #: MErrorMessage.module:279 msgid "cannot run executable: " msgstr "" #: MHelp.module:316 msgid "No help found." msgstr "找不到說明." #: MMime.module:17 msgid "Plain text" msgstr "純文字" #: MMime.module:18 msgid "HTML text" msgstr "HTML 內文" #: MMime.module:19 msgid "Gambas form data" msgstr "Gambas 表單資料" #: MMime.module:20 msgid "Gambas menu data" msgstr "Gambas 選單資料" #: MMime.module:21 msgid "Gambas project file path" msgstr "Gambas 專案路徑" #: MMime.module:22 msgid "URI list" msgstr "URI 列表" #: MMime.module:33 msgid "Unknown format" msgstr "未知的格式" #: MTheme.module:6 #, fuzzy msgid "Alternate background" msgstr "送到背景" #: MTheme.module:6 #, fuzzy msgid "Characters" msgstr "不正確的字元" #: MTheme.module:6 msgid "Comments" msgstr "注解" #: MTheme.module:6 msgid "Current line" msgstr "游標所在的行" #: MTheme.module:6 msgid "Data types" msgstr "資料型態" #: MTheme.module:6 msgid "Editing line" msgstr "編輯行" #: MTheme.module:6 msgid "Errors" msgstr "錯誤" #: MTheme.module:6 msgid "Highlighting" msgstr "反白" #: MTheme.module:6 msgid "Keywords" msgstr "關鍵字" #: MTheme.module:6 msgid "Labels" msgstr "" #: MTheme.module:6 msgid "Normal text" msgstr "一般文字" #: MTheme.module:6 msgid "Numbers" msgstr "數字" #: MTheme.module:6 msgid "Operators" msgstr "運算符號" #: MTheme.module:6 msgid "Preprocessor" msgstr "預處理器" #: MTheme.module:6 msgid "Strings" msgstr "字串" #: MTheme.module:6 msgid "Subroutines" msgstr "副程序" #: MTheme.module:6 msgid "Symbols" msgstr "符號" #: Package.module:85 msgid "'&1' is missing." msgstr "缺少 '&1'." #: Package.module:95 msgid "'&1' and '&2' are missing." msgstr "缺少 '&1' 和 '&2'." #: Package.module:286 msgid "Saving CHANGELOG file." msgstr "儲存 CHANGELOG 檔." #: Package.module:743 msgid "Making &1 support package..." msgstr "" #: Package.module:798 msgid "Creating package for &1." msgstr "為 &1 製作軟件包." #: Package.module:830 msgid "The package build has failed." msgstr "這軟件包製造失敗." #: Package.module:903 msgid "Making build directory." msgstr "建立建置目錄." #: Package.module:962 msgid "Creating desktop file..." msgstr "正在建立 desktop 檔..." #: Package.module:970 msgid "Sources are being debianizated." msgstr "原始碼被轉換為 debian 形式." #: Package.module:1175 msgid "Creating package..." msgstr "正在建立套件..." #: Package.module:1183 msgid "'dpkg-buildpackage' has failed." msgstr "'dpkg-buildpackage' 失敗." #: Package.module:1463 msgid "Initializing ~/RPM directory." msgstr "初始化 ~/RPM 目錄." #: Package.module:1483 msgid "Creating source package." msgstr "製作源碼軟件包." #: Package.module:1507 msgid "Creating .spec file." msgstr "製作.spec 檔" #: Package.module:1748 msgid "'rpmbuild' has returned the following error code:" msgstr "'rpmbuild' 傳回錯誤碼: " #: Package.module:2169 msgid "'tar' has returned the following error code:" msgstr "'tar' 回傳錯誤碼: " #: Package.module:2441 #, fuzzy msgid "'makepkg' has failed." msgstr "'dpkg-buildpackage' 失敗." #: Patch.class:38 msgid "The directory is not a Gambas project" msgstr "" #: Patch.class:52 Project.module:4816 #, fuzzy msgid "Unsupported source archive format." msgstr "無法壓縮檔案." #: Patch.class:179 msgid "Patch didn't apply:\n" msgstr "" #: Project.module:238 msgid "Automation" msgstr "自動化" #: Project.module:239 msgid "Basic" msgstr "基礎" #: Project.module:241 msgid "Drawing" msgstr "繪圖" #: Project.module:244 msgid "Miscellaneous" msgstr "雜項" #: Project.module:245 msgid "Networking" msgstr "網路" #: Project.module:246 msgid "OpenGL" msgstr "OpenGL" #: Project.module:248 msgid "Sound" msgstr "聲音" #: Project.module:250 msgid "Controls" msgstr "控制項" #: Project.module:251 msgid "Multimedia" msgstr "" #: Project.module:252 msgid "Web" msgstr "" #: Project.module:430 msgid "File not found!" msgstr "找不到檔案!" #: Project.module:545 msgid "This project does not exist." msgstr "此專案不存在." #: Project.module:557 msgid "" "Unable to find Gambas IDE executable in directory:\n" "\n" "&1" msgstr "" #: Project.module:576 msgid "This is not a Gambas project." msgstr "這不是 Gambas 專案." #: Project.module:579 msgid "This is a Gambas 1.0 project. Use Gambas 2 to convert it." msgstr "這是 Gambas 1.0 專案. 用 Gambas 2 來轉換它." #: Project.module:582 msgid "Convert" msgstr "轉換" #: Project.module:582 msgid "" "This is a Gambas 2.0 project.\n" "\n" "Do you want to convert it?" msgstr "" "這是 Gambas 2.0 專案.\n" "\n" "您要轉換它嗎?" #: Project.module:600 msgid "Do not open" msgstr "不開啟" #: Project.module:600 msgid "Open after all" msgstr "決定開啟" #: Project.module:600 msgid "" "This project seems to be already opened.\n" "\n" "Opening the same project twice can lead to data loss." msgstr "" "此專案似乎已開啟.\n" "\n" "重複開啟同一個專案會導致資料損失." #: Project.module:606 msgid "It cannot be converted." msgstr "不能轉換." #: Project.module:606 msgid "This project is read-only." msgstr "這專案是唯讀的." #: Project.module:614 #, fuzzy msgid "Compressed files are now generated with the executable. Consequently they will be removed from the project." msgstr "所有的備份檔以及輸出檔將會從專案目錄中移除." #: Project.module:614 #, fuzzy msgid "This project includes compressed files." msgstr "此專案不存在." #: Project.module:635 msgid "Copying project inside a temporary directory..." msgstr "在暫存目錄下複製專案..." #: Project.module:638 msgid "Unable to create temporary directory" msgstr "無法建立暫存目錄" #: Project.module:668 msgid "Converting project structure..." msgstr "正在轉換專案結構..." #: Project.module:698 msgid "Applying conversion..." msgstr "正在套用轉換..." #: Project.module:704 msgid "Unable to apply conversion" msgstr "無法套用轉換" #: Project.module:749 #, fuzzy msgid "Cannot open project file :" msgstr "無法開啟專案檔 :\n" #: Project.module:749 msgid "This project has duplicated class files!" msgstr "" #: Project.module:855 msgid "Some libraries used by the project are missing." msgstr "" #: Project.module:937 #, fuzzy msgid "Cannot reload file." msgstr "無法加入檔案." #: Project.module:1758 msgid "ALPHA VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:1760 msgid "DEVELOPMENT VERSION, USE AT YOUR OWN RISK!" msgstr "" #: Project.module:2133 msgid "Cannot open a binary file." msgstr "無法開啟二進位檔." #: Project.module:2171 msgid "Cannot open file." msgstr "無法開啟檔案." #: Project.module:2329 msgid "&1th" msgstr "第 &1" #: Project.module:2395 msgid "in form definition" msgstr "表單內的定義" #: Project.module:2571 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" "專案中某些原始碼發生衝突.\n" "請解決這些衝突以編譯專案." #: Project.module:2575 msgid "Compiling project" msgstr "Compiling 專案" #: Project.module:2600 msgid "" "

The compiler has crashed!

\n" "Please report it to the Gambas bugtracker at:\n" "\n" "https://gambaswiki.org/bugtracker\n" "\n" "Do not forget to provide the full project so that the crash can be reproduced." msgstr "" #: Project.module:2843 msgid "File already exists." msgstr "檔案已經存在." #: Project.module:2876 msgid "Directory already exists." msgstr "目錄已經存在." #: Project.module:2888 msgid "Cannot link template file." msgstr "無法連結模板檔." #: Project.module:2894 msgid "Cannot copy template file." msgstr "無法複製模板(template)檔." #: Project.module:2948 #, fuzzy msgid "Forbidden directory name." msgstr "控制項名稱不可有禁用字元." #: Project.module:3114 msgid "The contents of VERSION file is incorrect." msgstr "" #: Project.module:3136 #, fuzzy msgid "Cannot install library in &1." msgstr "找不到動態函式庫 '&1': &2" #: Project.module:3181 msgid "Making executable..." msgstr "製作執行檔..." #: Project.module:3191 #, fuzzy msgid "Do you really want to increment the project version and make the executable again?" msgstr "你要刪除這個目錄嗎?" #: Project.module:3191 #, fuzzy msgid "No change has been detected." msgstr "專案建立成功." #: Project.module:3292 msgid "Cannot make executable." msgstr "無法產生執行檔." #: Project.module:3774 msgid "Some components are missing: &1" msgstr "有些元件失效: &1" #: Project.module:3990 msgid "Cannot write project file." msgstr "無法寫入專案檔." #: Project.module:4042 msgid "Unable to create desktop shortcut." msgstr "無法建立桌面捷徑." #: Project.module:4303 msgid "The directory will be removed at the next commit." msgstr "下次提交之前, 此目錄會被移除." #: Project.module:4320 msgid "You must define a startup class or form!" msgstr "您必需定義一個啟始的class或form" #: Project.module:4351 msgid "Please type a name." msgstr "請輸入一個名稱." #: Project.module:4355 msgid "This name contains a forbidden character:" msgstr "名稱含有不正確的字元:" #: Project.module:4359 msgid "The name cannot begins with a dot." msgstr "名稱不可以 '.' 開頭" #: Project.module:4363 msgid "This name is already used. Choose another one." msgstr "這名稱已經被使用.請選其他名稱." #: Project.module:4399 #, fuzzy msgid "Space" msgstr "空格" #: Project.module:4401 msgid "A class name must begin with a letter or an underscore, followed by any letter or digit." msgstr "類別名稱必須由英文字母或底線開頭, 後面再接著英文字母或數字." #: Project.module:4444 msgid "Destination already exists." msgstr "" #: Project.module:4597 msgid "Unable to rename '&1'" msgstr "無法重新命名 '&1'" #: Project.module:4714 msgid "Please type a project name." msgstr "請輸入一個專案名稱." #: Project.module:4722 msgid "The project name cannot begin with a dot." msgstr "專案名稱的第一個字元不可為 '.' (點)." #: Project.module:4725 msgid "Non-ASCII characters are forbidden in a project name." msgstr "專案名稱不可有非 ascii 字元." #: Project.module:4726 msgid "SPACE" msgstr "" #: Project.module:4726 #, fuzzy msgid "The following characters are forbidden in a project name:" msgstr "專案名稱不可含有以下字元: ? * / \\ SPACE" #: Project.module:4733 msgid "This project already exists." msgstr "這專案已經存在." #: Project.module:4736 msgid "The project directory already exists." msgstr "專案目錄已經存在." #: Project.module:4738 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "無法建立專案目錄, 因為已經有一個相同名稱的檔案存在." #: Project.module:4822 msgid "Unable to create source archive." msgstr "" #: Project.module:5138 msgid "Cannot copy file &1." msgstr "無法複製檔案 &1." #: Project.module:5186 msgid "Cannot create link &1." msgstr "無法建立連結 &1." #: Project.module:5201 msgid "Cannot move a directory inside itself." msgstr "不能將目錄放到它自己裡面." #: Project.module:5265 msgid "Cannot move file &1." msgstr "無法移動檔案 &1." #: Project.module:5478 msgid "The following files couldn't be removed:" msgstr "" #: Project.module:5960 msgid "Project cleanup..." msgstr "專案清理..." #: Project.module:5966 msgid "Project files conversion..." msgstr "專案檔案轉換..." #: Project.module:5996 msgid "Unable to convert &1" msgstr "無法轉換 &1" #: Project.module:6276 #, fuzzy msgid "Unable to update forms." msgstr "無法貼上文字." #: Project.module:6366 msgid "The &1 program is not installed on your system." msgstr "" #: Project.module:6368 msgid "The following programs are not installed on your system: &1." msgstr "" #: Project.module:6459 #, fuzzy msgid "Unable to read component description file." msgstr "無法寫入元件描述檔." #: Project.module:6520 msgid "Cannot write component description file." msgstr "無法寫入元件描述檔." #: Project.module:6581 #, fuzzy msgid "Project templates" msgstr "專案類型" #: Project.module:6627 #, fuzzy msgid "Unable to run terminal." msgstr "無法執行查詢." #: Save.module:57 msgid "Cannot save file !" msgstr "無法儲存檔案!" #: SoftwareBox.class:236 msgid "Published &1" msgstr "" #: Util.module:6 msgid "&1 B" msgstr "" #: Util.module:8 msgid "&1 KiB" msgstr "" #: Util.module:10 msgid "&1 MiB" msgstr "" #: Util.module:12 msgid "&1 GiB" msgstr "" #: Util.module:46 #, fuzzy msgid "Incorrect format" msgstr "不正確的字元" #: VersionControl.module:85 msgid "Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it." msgstr "" #: VersionControl.module:170 msgid "Command timeout." msgstr "" #: VersionControl.module:170 #, fuzzy msgid "Please check your network connection." msgstr "請選擇選單位置." #: VersionControl.module:553 #, fuzzy msgid "Do you really want to put this project under version control with &1?" msgstr "你要刪除這個目錄嗎?" #: VersionControl.module:567 #, fuzzy msgid "The project could not be put under version control." msgstr "無法提交專案." #: VersionControl.module:652 #, fuzzy msgid "Unable to switch to branch `&1`." msgstr "無法轉換 &1" #: VersionControl.module:674 msgid "With &1" msgstr "" #: Wiki.module:522 msgid "There are &1 classes and &2 symbols in all Gambas components." msgstr "" #: Wiki.module:800 #, fuzzy msgid "This page does not exist in that language." msgstr "此專案不存在." #: WikiMarkdown.class:142 msgid "Since" msgstr "" #: WikiMarkdown.class:149 #, fuzzy msgid "This component does not exist." msgstr "此專案不存在." #: WikiMarkdown.class:174 #, fuzzy msgid "This class does not exist." msgstr "此專案不存在." #: WikiMarkdown.class:187 #, fuzzy msgid "This symbol does not exist." msgstr "此專案不存在." #~ msgid "&Insert" #~ msgstr "插入(&I)" #, fuzzy #~ msgid "'wget' is not found." #~ msgstr "找不到檔案!" #~ msgid "$(FILE) will be replaced by the path of the executable" #~ msgstr "$(FILE) 會被取代成執行檔的路徑" #~ msgid "WARNING! The project executable and the libraries it depends on must be stored inside the same directory. Otherwise the libraries will not be found." #~ msgstr "警告! 專案執行檔和它所需的函式庫必須放在同一個目錄下, 否則將無法找到那些函式庫." #~ msgid "

Authors

\n" #~ msgstr "

作者

\n" #~ msgid "About Gambas..." #~ msgstr "關於 Gambas..." #~ msgid "About component" #~ msgstr "關於元件...(c)" #~ msgid "" #~ "All needed information have been collected. You can now create the installation packages for your application...\n" #~ "

Click on the OK button to create the packages.\n" #~ "

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

Click on the Cancel button to cancel the operation.\n" #~ "\n" #~ msgstr "" #~ "已經收集了所有必要的資訊, 現在已可為您的應用程式建立套件...

按下確定以建立套件.\n" #~ "

按下上一步以修改資訊.\n" #~ "

按下取消以取消此操作.\n" #~ "\n" #~ msgid "" #~ "Application stored in a\n" #~ "Subversion repository" #~ msgstr "存在於 Subversion 儲存庫中的應用程式" #~ msgid "Arguments" #~ msgstr "參數" #~ msgid "Author(s)" #~ msgstr "作者" #~ msgid "Background color" #~ msgstr "背景顏色" #~ msgid "Blend" #~ msgstr "混色" #~ msgid "Browse project..." #~ msgstr "瀏覽專案..." #~ msgid "CGI Web application" #~ msgstr "CGI 網頁應用程式" #~ msgid "Click on a form to display the hierarchy of its controls..." #~ msgstr "在form上點選就可顯示其控制項的階層圖..." #~ msgid "Command-line application" #~ msgstr "控制台應用程式" #~ msgid "Component advancement" #~ msgstr "元件晉升" #~ msgid "Component programming" #~ msgstr "元件程式設計" #~ msgid "Component properties" #~ msgstr "元件屬性" #, fuzzy #~ msgid "Compressed at &1" #~ msgstr "壓縮檔案" #~ msgid "Current procedure" #~ msgstr "目前的程序(u)" #, fuzzy #~ msgid "Declarations" #~ msgstr "(宣告)" #~ msgid "Define..." #~ msgstr "定義..." #~ msgid "Display" #~ msgstr "顯示" #~ msgid "Display ME" #~ msgstr "顯示 ME" #, fuzzy #~ msgid "Display expression" #~ msgstr "規則表示式(x)" #, fuzzy #~ msgid "Do not push to remote repository" #~ msgstr "請輸入儲存庫的位置." #, fuzzy #~ msgid "Do you want to push the repository?" #~ msgstr "你要清除這列表達式嗎?" #~ msgid "Dynamic variables" #~ msgstr "動態變數" #~ msgid "Edit text property" #~ msgstr "編輯文字屬性" #~ msgid "Embedded array" #~ msgstr "嵌入式陣列" #~ msgid "Environment variables" #~ msgstr "環境變數" #~ msgid "Existing" #~ msgstr "存在的" #~ msgid "Exported classes" #~ msgstr "已匯出的類別" #~ msgid "Expression" #~ msgstr "表達式" #~ msgid "Fold procedures by default" #~ msgstr "預設折疊程序" #~ msgid "Foreground color" #~ msgstr "前景顏色" #~ msgid "GTK+ graphical application" #~ msgstr "GTK+ 圖形應用程式" #~ msgid "Gambas Almost Means Basic!" #~ msgstr "-" #~ msgid "Graphical application" #~ msgstr "圖形應用程式" #~ msgid "Internationalization" #~ msgstr "國際化" #~ msgid "Loading &1..." #~ msgstr "正在載入 &1..." #~ msgid "Minimize at runtime" #~ msgstr "執行時最小化" #, fuzzy #~ msgid "N" #~ msgstr "否" #~ msgid "Next menu" #~ msgstr "下一個選單" #, fuzzy #~ msgid "No argument" #~ msgstr "不正確的引數" #~ msgid "Open project..." #~ msgstr "開啟專案..." #~ msgid "OpenGL programming" #~ msgstr "OpenGL 程式設計" #~ msgid "Original file has been saved in the Project folder." #~ msgstr "原來的檔案已儲存到專案目錄." #~ msgid "Please enter the changes of your project." #~ msgstr "請輸入您對專案的修改." #~ msgid "Prefix package name with the vendor name" #~ msgstr "在套件名稱前面加上廠商名稱" #~ msgid "Project information" #~ msgstr "專案資訊" #~ msgid "QT graphical application" #~ msgstr "Qt 圖形應用程式" #~ msgid "Quiet external commands" #~ msgstr "背景執行外部命令" #~ msgid "Regular expressions" #~ msgstr "規則表示式" #~ msgid "Remove current breakpoint" #~ msgstr "移除目前的中斷點" #~ msgid "Reset filter" #~ msgstr "重設篩選器" #~ msgid "SDL application" #~ msgstr "SDL 應用程式" #~ msgid "Select a theme" #~ msgstr "選擇主題" #~ msgid "Select gradient stop color..." #~ msgstr "選擇漸層參考點顏色..." #~ msgid "Settings files management" #~ msgstr "設定檔管理" #~ msgid "Show only components used in project" #~ msgstr "顯示使用在這專案中的元件" #~ msgid "Stack backtrace" #~ msgstr "堆疊回溯" #~ msgid "Syntax error. Invalid identifier in property name" #~ msgstr "語法錯誤: 屬性名稱含有不正確的識別項" #~ msgid "System informations" #~ msgstr "系統資訊...(S)" #~ msgid "Thanks to" #~ msgstr "鳴謝" #~ msgid "The file has been compressed from &1 to &2 bytes (&3)." #~ msgstr "檔案已從 &1 bytes 壓縮到 &2 bytes (&3)." #~ msgid "The following classes have circular inheritance:" #~ msgstr "以下類別有循環繼承:" #~ msgid "" #~ "The form has been modified.\n" #~ "\n" #~ "All your changes will be lost." #~ msgstr "" #~ "表單已修改.\n" #~ "\n" #~ "您的修改將會遺失." #~ msgid "The project has been successfully created." #~ msgstr "專案建立成功." #~ msgid "To show the menu bar again, hit the following keys:

&1" #~ msgstr "按下按鍵以重新顯示選單列:

&1 " #, fuzzy #~ msgid "U" #~ msgstr "上" #, fuzzy #~ msgid "Unable to download documentation." #~ msgstr "無法開啟連結." #~ msgid "Use a terminal emulator" #~ msgstr "使用終端機模擬器" #~ msgid "Versioning" #~ msgstr "版本控制" #~ msgid "Visual Basic™ conversion help" #~ msgstr "Visual Basic™ 轉換幫助" #~ msgid "XML / XSLT programming" #~ msgstr "XML / XSLT 程式設計" #~ msgid "in &1:&2." #~ msgstr "於 &1:&2." gambas-3.16.3/app/src/gambas3/.project000066400000000000000000000031711411575327000174000ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Gambas 3 Startup=Project Icon=img/logo/logo-ide.png Version=3.16.1 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.clipper Component=gb.db Component=gb.db.form Component=gb.debug Component=gb.desktop Component=gb.eval Component=gb.eval.highlight Component=gb.form.dialog Component=gb.util Component=gb.form.editor Component=gb.settings Component=gb.form.mdi Component=gb.net Component=gb.net.curl Component=gb.form.print Component=gb.form.stock Component=gb.term Component=gb.form.terminal Component=gb.gui.webview Component=gb.markdown Component=gb.signal Description="Integrated Development Environment for Gambas" Authors="Benoît Minisini\nFabien Bodard\nCharlie Reinl\nJosé Luis Redrejo\nRobert Rowe\nTobias Boege" Arguments=[["-L"],["-t","/home/benoit/gambas/git/master/app/src/gambas3"],["--help"]] Environment="GB_GUI=gb.gtk3\n GTK_DEBUG=interactive\nGB_NO_JIT=1" TabSize=2 Translate=1 Language=en Maintainer=gambas Vendor=gambas Address=gambas@users.sourceforge.net Url=www.endoftheinternet.com License=General Public License PackageName=gambas3-3.13.90 CreateEachDirectory=1 Packager=1 Systems=debian ExtraAutoconfTest="\n" Menus=debian:"Applications/Programming" Groups=debian:"devel" Menus=slackware:"Amusement" Categories=slackware:"Amusement" Groups=slackware:"Development/Languages" Menus=ubuntu:"Applications/Amateur Radio" Categories=ubuntu:"Audio;AudioVideo" Groups=ubuntu:"devel" Tags=Database,Development,GUIDesigner,IDE,MySQL,PostgreSQL,SQLite WebSite=http://gambas.sourceforge.net DoNotTranslate=".src/Debug/FTestSuiteOld.form",".src/Editor/Browse/FProjectEditor.form" gambas-3.16.3/app/src/gambas3/.src/000077500000000000000000000000001411575327000165745ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/CRecentProject.class000066400000000000000000000120561411575327000225010ustar00rootroot00000000000000' Gambas class file Public Enum SORT_BY_DATE, SORT_BY_NAME, SORT_BY_PATH Static Public All As New CRecentProject[] Static Public Sort As Integer Static Public LastLoad As Date Static Private $hSettings As Settings Public Const MAX_RECENT As Integer = 100 Public Path As String Public ({Date}) As Date Public Sub _new(sPath As String, dDate As Date) If IsNull(dDate) Then Try dDate = Stat(sPath &/ ".startup").LastModified If IsNull(dDate) Then Try dDate = Stat(sPath &/ ".project").LastModified If IsNull(dDate) Then Return If Not Exist(sPath &/ ".project") Then Return Path = sPath {Date} = dDate End Public Sub _compare(hRecentFile As CRecentProject) As Integer Select Case Sort Case SORT_BY_NAME Return Comp(File.Name(Path), File.Name(hRecentFile.Path), gb.Natural + gb.IgnoreCase) Case SORT_BY_PATH Return Comp(Path, hRecentFile.Path, gb.Natural + gb.IgnoreCase) Case Else Return Sgn(hRecentFile.Date - {Date}) End Select End Public Sub IsValid() As Boolean If Path And If Exist(Path) Then Return True End Public Sub GetTitle(iSort As Integer) As String Select Case iSort Case SORT_BY_NAME Return String.UCase(String.Left(File.Name(Path))) Case SORT_BY_PATH Return Replace(File.Dir(Path), User.Home, "~") Case Else Return GetDateTitle() End Select End Private Sub GetDateTitle() As String Dim dToday As Date = Date(Now) Dim dDate As Date = Date({Date}) Dim sText As String If dDate = dToday Then Return ("Today") Else If DateDiff(dDate, dToday, gb.Day) = 1 Then Return ("Yesterday") Else If DateDiff(dDate, dToday, gb.Day) = 2 Then Return ("Two days ago") Else If DateDiff(dDate, dToday, gb.Day) <= 7 Then Return ("This week") Else If Year(dToday) = Year(dDate) And If Month(dToday) = Month(dDate) Then Return ("This month") Else sText = Format(dDate, "mmmm yyyy") Return String.UCase(String.Left(sText)) & String.Mid$(sText, 2) Endif End Static Public Sub Clear() All.Clear Save End Static Public Sub Load() Dim nRecent As Integer Dim iInd As Integer Dim sPath As String Dim hRecentFile As CRecentProject If Not $hSettings Then $hSettings = New Settings("gambas3.recent") Endif If Not IsOutOfDate(LastLoad) Then Return $hSettings.Reload nRecent = $hSettings["/Recent/Count", 0] If nRecent = 0 Then nRecent = Settings["/Recent/Count", 0] If nRecent Then $hSettings["/Recent/Count"] = nRecent For iInd = 1 To nRecent $hSettings["/Recent/File[" & CStr(iInd) & "]"] = Settings["/Recent/File[" & CStr(iInd) & "]"] $hSettings["/Recent/Date[" & CStr(iInd) & "]"] = Settings["/Recent/Date[" & CStr(iInd) & "]"] Next Endif Endif All = New CRecentProject[] For iInd = 1 To nRecent sPath = $hSettings["/Recent/File[" & CStr(iInd) & "]"] If sPath Then hRecentFile = New CRecentProject(sPath, CDate($hSettings["/Recent/Date[" & CStr(iInd) & "]"])) If hRecentFile.IsValid() Then All.Add(hRecentFile) If All.Count >= MAX_RECENT Then Break Endif Endif Next Try LastLoad = Stat($hSettings.Path).LastModified End Static Private Sub Save() Dim iInd As Integer $hSettings.Clear $hSettings["/Recent/Count"] = All.Count Sort = SORT_BY_DATE All.Sort() For iInd = 0 To All.Max $hSettings["/Recent/File[" & CStr(iInd + 1) & "]"] = All[iInd].Path $hSettings["/Recent/Date[" & CStr(iInd + 1) & "]"] = CStr(All[iInd].Date) Next $hSettings.Save LastLoad = Stat($hSettings.Path).LastModified End Static Private Sub AddRemove(sPath As String, bAdd As Boolean) Dim iInd As Integer Dim hRecentFile As CRecentProject Load If Right$(sPath) = "/" Then sPath = Left$(sPath, -1) 'sPath = "(" & File.BaseName(sPath) & ") " & File.Dir(sPath) Sort = SORT_BY_DATE All.Sort() While iInd < All.Count If All[iInd].Path = sPath Then All.Remove(iInd) Else Inc iInd Endif Wend If bAdd Then hRecentFile = New CRecentProject(sPath, CStr(Now)) If hRecentFile.IsValid() Then All.Add(hRecentFile, 0) 'nMax = Settings["/Recent/Max", DEFAULT_MAX_RECENT] While All.Count > MAX_RECENT All.Remove(All.Max) Wend Endif Endif Save End Static Public Sub Add(sPath As String) AddRemove(sPath, True) End Static Public Sub Remove(sPath As String) AddRemove(sPath, False) End Static Public Sub Check() Dim I As Integer Dim hRecent As CRecentProject Dim bRemove As Boolean While I < All.Count hRecent = All[I] If hRecent.IsValid() Then Inc I Else All.Remove(I) bRemove = True Endif Wend If bRemove Then Save End Static Public Sub Get(Optional iSort As Integer) As CRecentProject[] Load Sort = iSort All.Sort() Return All End Static Public Sub Exit() All = Null End Static Public Sub IsOutOfDate(dDate As Date) As Boolean If dDate And If Stat($hSettings.Path).LastModified <= dDate Then Return Return True Catch End gambas-3.16.3/app/src/gambas3/.src/CStyle.class000066400000000000000000000024571411575327000210360ustar00rootroot00000000000000' Gambas class file Public Index As Integer Public Foreground As Integer Public Bold As Boolean Public Underline As Boolean Public Dotted As Boolean Static Public Sub _get((Style) As String) As CStyle Dim hStyle As New CStyle(Style) Return hStyle End Public Sub _new(Optional (Style) As String) Reset Foreground = Color.Black If Style Then FromString(Style) End Public Sub Reset() Foreground = Color.Default Bold = False Underline = False Dotted = False End Public Sub FromString(sStyle As String) Dim sStr As String Dim iColor As Integer Reset For Each sStr In Split(sStyle) If Left(sStr) = "#" Then iColor = Val("&H" & Mid$(sStr, 2) & "&") Foreground = iColor Else If sStr = "Bold" Then Bold = True Else If sStr = "Underline" Then Underline = True Dotted = False Else If sStr = "Dotted" Then Dotted = True Underline = False Else If sStr = "Normal" Then Bold = False Underline = False Dotted = False Endif Next End Public Sub ToString() As String Dim sStr As String sStr = "#" & Hex$(Foreground, 6) If Bold Then sStr &= ",Bold" 'If Italic Then sStr &= ",Italic" If Underline Then sStr &= ",Underline" If Dotted Then sStr &= ",Dotted" Return sStr End gambas-3.16.3/app/src/gambas3/.src/CWaitingAnimation.class000066400000000000000000000044401411575327000231720ustar00rootroot00000000000000' Gambas class file Property Read Cancelled As Boolean Private $hPanel As Panel Private $hLabel As Label Private $hButton As Button Private $bCancelled As Boolean Private $fLastWait As Float Private $hSpinner As Spinner Private Sub DisableWindow(hWindow As Window, bDisable As Boolean) Dim hCtrl As Control For Each hCtrl In hWindow.Children hCtrl.Enabled = Not bDisable Next End Public Sub _new(hWindow As Window, Optional bWithCancel As Boolean) DisableWindow(hWindow, True) $hPanel = New Panel(hWindow) With $hPanel .Ignore = True .Move((hWindow.ClientW - Desktop.Scale * 16) / 2, (hWindow.ClientH - Desktop.Scale * 16) / 2, Desktop.Scale * 16, Desktop.Scale * 16) '.Background = Color.LightForeground End With $hSpinner = New Spinner($hPanel) With $hSpinner .Move(8, 8, $hPanel.W - 16, $hPanel.H - 16) .Show .Start End With ' $hMovieBox = New MovieBox($hPanel) ' With $hMovieBox ' .Alignment = Align.Center ' .Background = Color.White ' .Path = "img/waiting.gif" ' .Playing = True ' .Move(8, 8, $hPanel.W - 16, $hPanel.H - 16) ' End With $hLabel = New Label($hPanel) With $hLabel .Move(($hPanel.W - Desktop.Scale * 5) / 2, ($hPanel.H - Desktop.Scale * 3) / 2, Desktop.Scale * 5, Desktop.Scale * 3) $hLabel.Foreground = Color.LightForeground $hLabel.Font = Font["7"] $hLabel.Alignment = Align.Center End With If bWithCancel Then $hPanel.H += Desktop.Scale * 5 $hButton = New Button($hPanel) As "Button" $hButton.Move(Desktop.Scale, $hPanel.H - Desktop.Scale * 5, $hPanel.W - Desktop.Scale * 2, Desktop.Scale * 4) $hButton.Text = ("Cancel") Endif End Public Sub _free() Try Stop() End Public Sub Stop() DisableWindow($hPanel.Parent, False) $hPanel.Delete End Public Sub SetValue(fProgress As Float) Dim sText As String = CStr(CInt(fProgress * 100)) & "%" If $hButton Then If $fLastWait = 0 Or If (Timer - $fLastWait) >= 0.2 Then Wait 0.05 $fLastWait = Timer Endif Endif If sText = $hLabel.Text Then Return $hLabel.Text = sText Wait End Public Sub Button_Click() $bCancelled = True End Private Function Cancelled_Read() As Boolean If $bCancelled Then Stop() Return True Endif End gambas-3.16.3/app/src/gambas3/.src/Component/000077500000000000000000000000001411575327000205365ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Component/CClassInfo.class000066400000000000000000000733061411575327000235620ustar00rootroot00000000000000' Gambas class file Public Documentation As CDocumentation Public Name As String Public Parent As String Public Symbols As Collection Public (Component) As String Public ParentComponent As String Public DefaultEvent As String Public Events As String[] Public PropertyList As String[] Public Properties As Collection Public Control As Boolean Public VirtualControl As Boolean Public DrawWith As String Public DefaultWidth As Short Public DefaultHeight As Short Public Group As String Public Family As String Public Similars As String[] Public Structure As Boolean Public DeclareIn As String Public DeclareAtLine As Integer Public Help As String Public Creatable As Boolean Public AutoCreatable As Boolean Public HasEvents As Boolean Public Container As Boolean Public (Form) As Boolean Public MultiContainer As Boolean Public DefaultText As String Public Sub _new(hDoc As CDocumentation, sName As String, sComp As String, Optional sParent As String) Dim hSym As CSymbolInfo Dim hParent As CClassInfo Documentation = hDoc Name = sName {Parent} = sParent Component = sComp Symbols = New Collection(gb.IgnoreCase) If sParent Then 'IF Parent = "GridView" THEN STOP 'IF ERROR THEN ' STOP ' Error.Raise(Error.Text) 'ENDIF hParent = Documentation.Classes[sComp &/ sParent] If Not hParent Then hParent = hDoc.Classes[sParent] ParentComponent = hParent.Component AutoCreatable = hParent.AutoCreatable For Each hSym In Documentation.GetClassSymbols(sParent, ParentComponent) Symbols[hSym.Name] = hSym Next HasEvents = hParent.HasEvents Endif End Public Sub CopyFrom(hClass As CClassInfo, sType As String, sNewType As String) Dim hSym As CSymbolInfo Dim hCopySym As CSymbolInfo With hClass Parent = .Parent Symbols = New Collection(gb.IgnoreCase) For Each hSym In .Symbols hCopySym = hSym.Copy(sType, sNewType) hCopySym.Class = Name Symbols[hSym.Name] = hCopySym Next Creatable = .Creatable AutoCreatable = .AutoCreatable Component = .Component ParentComponent = .ParentComponent If .Properties Then Error "gambas3: warning: cannot use "; hClass.Name; " as template class" Return Endif End With End Public Sub InitEvents() Dim hSym As CSymbolInfo If Not HasEvents Then Return Events = New String[] For Each hSym In Symbols If hSym.IsHidden Then Continue If hSym.IsEvent Then If Left$(hSym.Name) = ":" Then Events.Add(Mid$(hSym.Name, 2)) Else Events.Add(hSym.Name) Endif Endif Next Events.Sort End Public Sub InitControl() Dim sProp As String Dim sStr As String Dim sParent As String Dim hProp As CPropertyInfo Dim hSym As CSymbolInfo 'DIM hCtrl AS Object Dim sDefVal As String Dim iPos As Integer Dim iPos2 As Integer Dim bRemove As Boolean Dim aCont As String[] Dim sKind As String Dim bDoNotApply As Boolean Dim bTranslate As Boolean 'DEBUG Component;; Name Control = True hSym = Symbols["_Family"] If hSym Then Family = hSym.Value hSym = Symbols["_Group"] If hSym Then Group = hSym.Value If Not Group Then Group = Family hSym = Symbols["_IsForm"] If hSym Then Form = hSym.Value If Form Then CModule.Activate(Name) hSym = Symbols["_IsVirtual"] If hSym Then VirtualControl = hSym.Value hSym = Symbols["_IsContainer"] If hSym Then Container = hSym.Value hSym = Symbols["_IsMultiContainer"] If hSym Then MultiContainer = hSym.Value If MultiContainer Then hSym = Symbols["_DefaultText"] If hSym Then DefaultText = hSym.Value Endif hSym = Symbols["_Similar"] If hSym Then Similars = Split(hSym.Value, ",") If Similars Then For Each sStr In Similars Documentation.AddSimilar(Name, sStr) Next Endif hSym = Symbols["_Properties"] If hSym Then If hSym.Class = Name And If hSym.Component = Component Then sProp = hSym.Value Else sProp = "*" Endif Endif sParent = ParentComponent &/ Parent While Left$(sProp) = "*" sProp = Mid$(sProp, 3) sStr = "" Try sStr = Documentation.Classes[sParent].Symbols["_Properties"].Value If sStr Then If sProp Then sProp = sStr & "," & sProp Else sProp = sStr Endif Endif sParent = Documentation.Classes[sParent].ParentComponent &/ Documentation.Classes[sParent].Parent ' If Error Then ' Debug Error.Text; " !" ' Debug System.Backtrace.Join(" ") ' Debug Name;; Parent;; sParent ' Endif Wend ' IF Left$(sProp) = "*" THEN ' sProp = Mid$(sProp, 3) ' sParent = Classes[Parent].Symbols["_Properties"].Value ' IF Left(sParent, Len(CPropertyInfo.EVENT_NAME)) = CPropertyInfo.EVENT_NAME THEN ' sParent = Mid$(sParent, Len(CPropertyInfo.EVENT_NAME) + 2) ' ENDIF ' IF sParent THEN ' IF sProp THEN sProp = "," & sProp ' sProp = sParent & sProp ' ENDIF ' ENDIF Properties = New Collection For Each sProp In Split(sProp) ' Name can be "Name{Kind}=Default" iPos = InStr(sProp, "{") If iPos Then iPos2 = InStr(sProp, "}", iPos + 1) If iPos2 = 0 Then iPos2 = Len(sProp) sKind = Mid$(sProp, iPos + 1, iPos2 - iPos - 1) sProp = Left$(sProp, iPos - 1) & Mid$(sProp, iPos2 + 1) Else sKind = "" Endif iPos = InStr(sProp, "=") If iPos Then sDefVal = Mid$(sProp, iPos + 1) sProp = Left$(sProp, iPos - 1) Else sDefVal = "" Endif bRemove = Left(sProp) = "-" If bRemove Then sProp = Mid$(sProp, 2) If bRemove Then Properties[sProp] = Null Else If Component Then 'PRINT "? "; Component; ": "; Name; "."; sProp If Not Documentation.Classes[Component &/ Name].Symbols[sProp] Then Error Component; ": "; Name; "."; sProp; " declared but not implemented" Continue Endif Endif If Family <> "Form" Then If MultiContainer Then bDoNotApply = Not CPropertyInfo.ALLOWED_MULTI_CONTAINER_PROP.Exist(sProp) Else bDoNotApply = Not CPropertyInfo.ALLOWED_CONTROL_PROP.Exist(sProp) Endif Else bDoNotApply = VirtualControl Endif hProp = New CPropertyInfo(Documentation, Component, Name, sProp, sKind, False, bDoNotApply, sDefVal) Properties[sProp] = hProp Endif Next Try DefaultEvent = Symbols["_DefaultEvent"].Value ' Taille par défaut 'If Name = "Timer" Then Stop Try sStr = Symbols["_DefaultSize"].Value If sStr Then aCont = Split(sStr) Try DefaultWidth = Val(aCont[0]) * Desktop.Scale Try DefaultHeight = Val(aCont[1]) * Desktop.Scale Endif ' Modification des propriétés PropertyList = New String[] For Each hProp In Properties PropertyList.Add(hProp.Name) If hProp.Translate Then bTranslate = True Next Properties["#X"] = New CPropertyInfo(Documentation, "", Name, "#X", "", True, True) Properties["#Y"] = New CPropertyInfo(Documentation, "", Name, "#Y", "", True, True) If Not VirtualControl Then Properties["#Width"] = New CPropertyInfo(Documentation, "", Name, "#Width", "", True, True) Properties["#Height"] = New CPropertyInfo(Documentation, "", Name, "#Height", "", True, True) Endif If VirtualControl Then hProp = New CPropertyInfo(Documentation, "", Name, "X", "", True, True, "0") hProp.Exclude = True Properties["X"] = hProp PropertyList.Add("X") hProp = New CPropertyInfo(Documentation, "", Name, "Y", "", True, True, "0") hProp.Exclude = True Properties["Y"] = hProp PropertyList.Add("Y") Endif CPropertyInfo.CreatingSpecialProperty = True If bTranslate Then Properties[CPropertyInfo.TRANSLATE_NAME] = New CPropertyInfo(Documentation, Component, Name, CPropertyInfo.TRANSLATE_NAME, "") PropertyList.Add(CPropertyInfo.TRANSLATE_NAME, 0) Endif If {Form} Then If Family = "Form" Then Properties[CPropertyInfo.SCALE_NAME] = New CPropertyInfo(Documentation, Component, Name, CPropertyInfo.SCALE_NAME, "") PropertyList.Add(CPropertyInfo.SCALE_NAME, 0) Endif Else Properties[CPropertyInfo.PUBLIC_NAME] = New CPropertyInfo(Documentation, Component, Name, CPropertyInfo.PUBLIC_NAME, "") PropertyList.Add(CPropertyInfo.PUBLIC_NAME, 0) Endif Properties[CPropertyInfo.EVENT_NAME] = New CPropertyInfo(Documentation, Component, Name, CPropertyInfo.EVENT_NAME, "") PropertyList.Add(CPropertyInfo.EVENT_NAME, 0) CPropertyInfo.CreatingSpecialProperty = False 'IF Name = "Timer" THEN Try DrawWith = Symbols["_DrawWith"].Value If Family <> "Form" And If MultiContainer And If Not DrawWith Then DrawWith = "TabStrip" 'IF DrawWith THEN ?Me. <= CRASH! ' PRINT ME.Name;; "->";; DrawWith 'ENDIF ' IF hCtrl <> hWin THEN ' TRY hCtrl.Delete ' ENDIF If DefaultWidth = 0 Or If DefaultHeight = 0 Then If VirtualControl Then DefaultWidth = CControl.GetVirtualSize() * Desktop.Scale DefaultHeight = DefaultWidth Else DefaultWidth = 9 * Desktop.Scale DefaultHeight = 3 * Desktop.Scale Endif Endif End Public Function GetProperties() As Collection If Properties Then If Properties.Count Then Return Properties Endif Endif If {Parent} Then Return Documentation.Classes[ParentComponent &/ {Parent}].GetProperties() Endif End Public Function Inherits(sClass As String) As Boolean Dim hClass As CClassInfo If {Parent} = sClass Then Return True If Not Parent Then Return False hClass = Documentation.Classes[ParentComponent &/ Parent] Return hClass.Inherits(sClass) End Public Sub GetHelpURL() As String Dim sPath As String Dim sComp As String Dim hComp As CComponent If Component And If Component <> CComponent.PROJECT_NAME Then hComp = Documentation[Component] If hComp Then If hComp.Library Or If hComp.ThirdParty Then Return "gambas://library" &/ hComp.Key &/ Name Else sPath = MHelp.GetURL("comp") sComp = MHelp.ActualComponent(Component) sPath &/= LCase(sComp) sPath &/= LCase(Name) Return sPath & "?v&nh&l=" & MHelp.GetLanguage() Endif Else Return Subst("gambas://project/&1", Name) Endif End Public Sub GetSimilars() As String[] Dim cSimilar As New Collection(gb.IgnoreCase) Dim sSimilar As String Dim aSimilar As New String[] Dim hClass As CClassInfo For Each sSimilar In Documentation.GetSimilars(Name) cSimilar[sSimilar] = True Next If Similars Then For Each sSimilar In Similars cSimilar[sSimilar] = True For Each sSimilar In Documentation.GetSimilars(sSimilar) If sSimilar <> Name Then cSimilar[sSimilar] = True Next Next Endif For Each sSimilar In cSimilar hClass = Project.Documentation.Classes[cSimilar.Key] If Not hClass Then Continue If hClass.IsDeprecated() And If Not FToolBox.IsDeprecatedVisible() Then Continue aSimilar.Add(cSimilar.Key) Next aSimilar.Sort(gb.IgnoreCase) Return aSimilar End Public Sub GetHelpMarkup() As String Dim hForm As FEditor Dim hEdit As TextEditor Dim I As Integer Dim sLine As String Dim sMarkup As String If Help Then Return Help If Component And If Component <> CComponent.PROJECT_NAME Then Return If Structure Then hForm = Project.LoadFile(Project.FindPath(DeclareIn)) Try hEdit = hForm.GetEditor() If Not hEdit Then Return Return MHelp.FindMarkup(hEdit, DeclareAtLine) Else hForm = Project.LoadFile(Project.FindPath(Name)) Try hEdit = hForm.GetEditor() If Not hEdit Then Return For I = 0 To hEdit.Count - 1 sLine = Trim(hEdit[I].Text) If sLine Begins "''' " Then sMarkup &= Trim(Mid$(sLine, 4)) & "\n" Else If sMarkup Then Break If Not sLine Then Continue If sLine Not Begins "'" Then Break Endif Next Endif Return sMarkup End Private Sub SubstPart(sHtml As String, sPart As String, bShow As Boolean) As String If bShow Then sHtml = Replace(sHtml, sPart & "[", "") sHtml = Replace(sHtml, sPart & "]", "") Else sHtml = Replace(sHtml, sPart & "[", "") Endif Return sHtml End Private Sub GetSymbolLink(hSymbol As CSymbolInfo, sName As String) As String Return Subst("&2", Html(hSymbol.GetHelpURL()), sName) End Public Sub GetHelpHTML() As String Dim sClass As String = Name Dim sHelp, sHtml, sWhere, sSymbols, sInfo As String Dim hSymbol As CSymbolInfo Dim cClassSymbols As Collection Dim hClassInfo As CClassInfo Dim aProperty, aEvent, aMethod, aConst, aVar As New String[] Dim aStaticProperty, aStaticMethod, aStaticVar As New String[] Dim sComp, sSymbolName As String Dim hArray As String[] Dim sTitle As String Dim bHasDynamic As Boolean Dim bHasSymbol As Boolean Dim bHasDynamicVariable As Boolean Dim sParent As String Dim hParentClass As CClassInfo Dim sStr As String ' sHelp = GetHelpMarkup() ' sHelp &= "\n" & WikiGetSymbols().Join("\n") ' Return WikiMarkdown.ToHTML(sHelp) sHelp = Markup.Convert(GetHelpMarkup()) hClassInfo = Documentation.GetClassDescription(sClass) cClassSymbols = hClassInfo.Symbols 'CComponent.GetClassSymbols(sClass) 'If hClassInfo.Name = sClass Then hClassInfo.Name = hClassInfo.Parent ????? Do not modify the class info! If cClassSymbols.Count > 0 Then For Each hSymbol In cClassSymbols sSymbolName = hSymbol.Name If Left(sSymbolName) = ":" Then sSymbolName = Mid$(sSymbolName, 2) sComp = GetSymbolLink(hSymbol, sSymbolName) If hSymbol.NotPublic Or If hSymbol.IsHidden Then Continue If hSymbol.Class = sClass Then sComp = "" & sComp & "" If IsLetter(hSymbol.Kind) Then If hSymbol.IsStatic Then 'sComp = "" & sComp & "" Else bHasDynamic = True Endif Endif bHasSymbol = True Select Case hSymbol.Kind Case ":" aEvent.Add(sComp) Case "m" aMethod.Add(sComp) Case "M" aStaticMethod.Add(sComp) Case "p", "r" aProperty.Add(sComp) Case "P", "R" aStaticProperty.Add(sComp) Case "C" aConst.Add(sComp) Case "v" aVar.Add(sComp) bHasDynamicVariable = True Case "V" aStaticVar.Add(sComp) End Select Next For Each hArray In [aConst, aEvent, aMethod, aProperty, aVar, aStaticMethod, aStaticProperty, aStaticVar] hArray.Sort Next ' sParSymbols = "" ' If aParentProperty.Count + aParentMethod.Count + aParentEvent.Count + aParentVar.Count Then ' sParSymbols &= "" ' If aParentProperty.Count Then sParSymbols &= "" & ("Properties") & " " ' If aParentVar.Count Then sParSymbols &= "" & ("Variables") & " " ' If aParentMethod.Count Then sParSymbols &= "" & ("Methods") & " " ' If aParentEvent.Count Then sParSymbols &= "" & ("Events") & " " ' sParSymbols &= "" ' sParSymbols &= "" ' If aParentProperty.Count Then sParSymbols &= "" & aParentProperty.Join(" ") & " " ' If aParentVar.Count Then sParSymbols &= "" & aParentVar.Join(" ") & " " ' If aParentMethod.Count Then sParSymbols &= "" & aParentMethod.Join(" ") & " " ' If aParentEvent.Count Then sParSymbols &= "" & aParentEvent.Join(" ") & " " ' sParSymbols &= "" ' Endif sSymbols = "" If aStaticMethod.Count + aStaticProperty.Count + aStaticVar.Count + aConst.Count Then sSymbols &= "" If aStaticProperty.Count Then sSymbols &= "" If aStaticVar.Count Then sSymbols &= "" If aStaticMethod.Count Then sSymbols &= "" If aConst.Count Then sSymbols &= "" sSymbols &= "" If aStaticProperty.Count Then sSymbols &= "" If aStaticVar.Count Then sSymbols &= "" If aStaticMethod.Count Then sSymbols &= "" If aConst.Count Then sSymbols &= "" sSymbols &= "
" & ("Static properties") & " " & ("Static variables") & " " & ("Static methods") & " " & ("Constants") & " 
" & aStaticProperty.Join(" ") & " " & aStaticVar.Join(" ") & " " & aStaticMethod.Join(" ") & " " & aConst.Join(" ") & " 
" Endif If aProperty.Count + aVar.Count + aMethod.Count + aEvent.Count Then sSymbols &= "" If aProperty.Count Then sSymbols &= "" If aVar.Count Then sSymbols &= "" If aMethod.Count Then sSymbols &= "" If aEvent.Count Then sSymbols &= "" sSymbols &= "" If aProperty.Count Then sSymbols &= "" If aVar.Count Then sSymbols &= "" If aMethod.Count Then sSymbols &= "" If aEvent.Count Then sSymbols &= "" sSymbols &= "
" & ("Properties") & " " & ("Variables") & " " & ("Methods") & " " & ("Events") & " 
" & aProperty.Join(" ") & " " & aVar.Join(" ") & " " & aMethod.Join(" ") & " " & aEvent.Join(" ") & " 
" Endif Endif If hClassInfo.Parent Then sParent = hClassInfo.Parent hParentClass = Documentation.Classes[hClassInfo.ParentComponent &/ sParent] If Not hParentClass Then hParentClass = Documentation.GetClassDescription(sParent) If hClassInfo.Parent = hClassInfo.Name Then sStr = ("This class reimplements &1") Else sStr = ("This class inherits &1") Endif sInfo &= Subst(sStr, Subst("&2", Html(hParentClass.GetHelpURL()), hParentClass.Name)) If hClassInfo.ParentComponent <> hClassInfo.Component Then sInfo &= " " & Subst(("in &1"), Subst("&2", Html(Documentation[hClassInfo.ParentComponent].GetHelpURL()), hClassInfo.ParentComponent)) Endif sInfo &= "
" Endif If hClassInfo.AutoCreatable And If bHasDynamic Then sInfo &= ("This class can be used like an object by creating an hidden instance on demand.") & "
" Endif If hClassInfo.Creatable And If cClassSymbols.Exist("_new") Then hSymbol = cClassSymbols["_new"] sInfo &= Subst(("This class is &1."), GetSymbolLink(hSymbol, ("creatable"))) & "
" Else If hClassInfo.Creatable And If bHasDynamicVariable Then sInfo &= Subst(("This class is &1."), ("creatable")) & "
" Else If Not bHasDynamic Then sInfo &= ("This class is static.") & "
" Else sInfo &= ("This class is not creatable.") & "
" Endif Endif hSymbol = cClassSymbols["_call"] If hSymbol Then sInfo &= Subst(("This class can be used as a &1."), GetSymbolLink(hSymbol, ("function"))) & "
" Endif If cClassSymbols.Exist("_put") Then If cClassSymbols.Exist("_get") Then sInfo &= Subst(("This class acts like a &1 / &2 array."), GetSymbolLink(cClassSymbols["_get"], ("read")), GetSymbolLink(cClassSymbols["_put"], ("write"))) & "
" Else sInfo &= Subst(("This class acts like a &1 array."), GetSymbolLink(cClassSymbols["_put"], ("write-only"))) & "
" Endif Else If cClassSymbols.Exist("_get") Then sInfo &= Subst(("This class acts like a &1 array."), GetSymbolLink(cClassSymbols["_get"], ("read-only"))) & "
" Endif hSymbol = cClassSymbols["_next"] If hSymbol Then sInfo &= Subst(("This class is &1 with the FOR EACH keyword."), GetSymbolLink(hSymbol, ("enumerable"))) & "
" Endif If Not Component Or If Component = CComponent.PROJECT_NAME Then sWhere = "gambas://project/" & sClass & "?showfile" sTitle = sClass If sWhere Then sTitle = "" & sTitle & "" sHtml = MHelp.LoadCustom("class-help.html") sHtml = Replace(sHtml, "$(help)", sHelp) If sInfo Then sHtml = Replace(sHtml, "", sInfo) Endif ' If hClassInfo.Parent Then ' ' sParent = hClassInfo.Parent ' ' hParentClass = CComponent.Classes[hClassInfo.ParentComponent &/ sParent] ' If Not hParentClass Then hParentClass = CComponent.GetClassDescription(sParent) ' ' sHtml = SubstPart(sHtml, "ShowInherits", True) ' sHtml = SubstPart(sHtml, "ShowParConst", aParentConst.Count > 0) ' sHtml = Replace(sHtml, "$(ParConst)", aParentConst.Join(" ")) ' ' sHtml = Replace(sHtml, "$(Inherits)", Subst(("This class inherits &1."), Subst("&2", Html(hParentClass.GetHelpURL()), sParent))) ' sHtml = Replace(sHtml, "$(ParSymbols)", sParSymbols) ' ' Else ' ' sHtml = SubstPart(sHtml, "ShowInherits", False) ' ' Endif sHtml = Replace(sHtml, "$(title)", sTitle) sHtml = Replace(sHtml, "$(symbols)", sSymbols) sHtml = SubstPart(sHtml, "ShowSymbols", bHasSymbol) sHtml = Replace(sHtml, "$(hide-title)", "") Return sHtml End Public Function IsVirtual() As Boolean Return Left$(Name) = "." Or Left$(Name) = "_" End Public Sub IsDeprecated() As Boolean Return Group = "Deprecated" End Private Function GetSymbolType(aSym As String[]) As String Dim sRes As String Dim hSym As CSymbolInfo Dim sName As String If aSym.Count = 0 Then Return For Each sName In aSym hSym = Symbols[sName] sName = Replace(sName, ":", ".") If hSym.Class <> Name Or If hSym.Component <> Component Then sRes &= "[/comp" &/ LCase(hSym.Component &/ hSym.Class &/ sName) & "]  \n" Else If hSym.Class <> Wiki.Class Or If hSym.Component <> Wiki.Component Then sRes &= "~[/comp" &/ LCase(hSym.Component &/ hSym.Class &/ sName) & "]~  \n" Else sRes &= "~[./" & LCase(sName) & "]~  \n" Endif Next Return sRes End Public Function WikiGetSymbols() As String[] Dim aResult As New String[] Dim sSymbol As String Dim cSymbol As New Collection Dim hSym As CSymbolInfo Dim bDynamic As Boolean Dim bStatic As Boolean Dim sBreak As String Dim sPrefix As String = "" Dim aArray As String[] Dim bHasSymbols As Boolean Dim bHasDynamicVariable As Boolean Dim sCreatable As String If Symbols.Count Then For Each sSymbol In ["P", "C", "M", "p", "e", "m"] cSymbol[sSymbol] = New String[] cSymbol[">" & sSymbol] = New String[] Next For Each hSym In Symbols If hSym.IsHidden Then Continue If Right$(hSym.Name) = "$" Then Continue bHasSymbols = True Select Case hSym.Kind Case "r", "p", "v" cSymbol[sPrefix & "p"].Add(hSym.Name) If hSym.Kind = "v" Then bHasDynamicVariable = True Case "R", "P", "V" cSymbol[sPrefix & "P"].Add(hSym.Name) Case "C" cSymbol[sPrefix & "C"].Add(hSym.Name) Case ":", "e", "E" hSym.Kind = "e" cSymbol[sPrefix & "e"].Add(hSym.Name) Case "m" cSymbol[sPrefix & "m"].Add(hSym.Name) Case "M" cSymbol[sPrefix & "M"].Add(hSym.Name) Default Print hSym.Kind; " ?" End Select 'IF InStr("rpm", hSym.Kind) THEN bDynamic = TRUE If hSym.IsStatic Then 'If bParent Then ' bParentStatic = True 'Else bStatic = True 'Endif Else 'If bParent Then ' bParentDynamic = True 'Else bDynamic = True 'Endif Endif Next For Each aArray In cSymbol aArray.Sort Next Endif 'aResult.Add("### Symbols") aResult.Add("[[ desc") aResult.Add("==") sBreak = "\\\n" If Parent Then If Parent = Name Then aResult.Add(("This class reimplements")) Else aResult.Add(("This class inherits")) Endif 'sRes = sRes & " " & GetLink("/comp" &/ $hClass.ParentComponent &/ $hClass.Parent,,, "arrow") aResult.Add("[/comp" &/ ParentComponent &/ LCase(Parent) & "]") If ParentComponent <> Component Then aResult.Add(Subst(("in &1"), "[/comp" &/ ParentComponent & "]")) Endif aResult[aResult.Max] &= ".\\" Endif If IsVirtual() Then aResult.Add(("This class is virtual.") & "\\") Else If AutoCreatable Then aResult.Add(("This class can be used like an object by creating a hidden instance on demand.") & "\\") Endif sCreatable = "" If Creatable And If Not IsVirtual() Then If Symbols.Exist("_new") Then 'GetSymbolLink($hClass.Symbols["_new"], $hClass, ("creatable"))) & sBreak sCreatable = Subst(("This class is &1."), Wiki.GetSymbolLink(Me, "_new", ("creatable"))) & "\\" Else sCreatable = Subst(("This class is &1."), ("creatable")) & "\\" Endif Endif If Not sCreatable Then If Not bDynamic Then sCreatable = ("This class is static.") & "\\" Else sCreatable = ("This class is not creatable.") & "\\" Endif Endif aResult.Add(sCreatable) If Symbols.Exist("_call") Then aResult.Add(Subst(("This class can be used as a &1."), Wiki.GetSymbolLink(Me, "_call", ("function"), ("static function"))) & "\\") Endif hSym = Symbols["_get"] If hSym Then If hSym.IsStatic Then If Symbols.Exist("_put") Then aResult.Add(Subst(("This class acts like a &1 / &2 static array."), Wiki.GetSymbolLink(Me, "_get", ("read")), Wiki.GetSymbolLink(Me, "_put", ("write"))) & "\\") Else aResult.Add(Subst(("This class acts like a &1 static array."), Wiki.GetSymbolLink(Me, "_get", ("read-only"))) & "\\") Endif Else If Symbols.Exist("_put") Then aResult.Add(Subst(("This class acts like a &1 / &2 array."), Wiki.GetSymbolLink(Me, "_get", ("read")), Wiki.GetSymbolLink(Me, "_put", ("write"))) & "\\") Else aResult.Add(Subst(("This class acts like a &1 array."), Wiki.GetSymbolLink(Me, "_get", ("read-only"))) & "\\") Endif Endif Endif If Symbols.Exist("_next") Then aResult.Add(Subst(("This class is &1 with the &2 keyword."), Wiki.GetSymbolLink(Me, "_next", ("enumerable"), ("statically enumerable")), "[/lang/foreach]") & "\\") Endif 'If aResult[aResult.Max] <> "==" And If bHasSymbols Then aResult.Add("==") 'If bHasSymbols Then aResult.Add("\\") If bStatic Then aResult.Add("[[ symbols") If cSymbol["P"].Count Then aResult.Insert([Replace(("Static properties"), " ", " "), "--"]) If cSymbol["M"].Count Then aResult.Insert([Replace(("Static methods"), " ", " "), "--"]) 'IF cSymbol["E"].Count THEN sRes = sRes & "" & ("Events") & "" & sSpace & "\n" If cSymbol["C"].Count Then aResult.Insert([("Constants"), "--"]) aResult[aResult.Max] = "==" If cSymbol["P"].Count Then aResult.Add(GetSymbolType(cSymbol["P"])) aResult.Add("--") Endif If cSymbol["M"].Count Then aResult.Add(GetSymbolType(cSymbol["M"])) aResult.Add("--") Endif If cSymbol["C"].Count Then aResult.Add(GetSymbolType(cSymbol["C"])) aResult.Add("--") Endif aResult[aResult.Max] = "]]" Endif If bDynamic Then aResult.Add("[[ symbols") If cSymbol["p"].Count Then aResult.Insert([("Properties"), "--"]) If cSymbol["m"].Count Then aResult.Insert([("Methods"), "--"]) If cSymbol["e"].Count Then aResult.Insert([("Events"), "--"]) aResult[aResult.Max] = "==" If cSymbol["p"].Count Then aResult.Add(GetSymbolType(cSymbol["p"])) aResult.Add("--") Endif If cSymbol["m"].Count Then aResult.Add(GetSymbolType(cSymbol["m"])) aResult.Add("--") Endif If cSymbol["e"].Count Then aResult.Add(GetSymbolType(cSymbol["e"])) aResult.Add("--") Endif aResult[aResult.Max] = "]]" Endif aResult.Add("]]") Return aResult Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Public Sub AddSymbol(hSym As CSymbolInfo) Symbols[hSym.Name] = hSym If hSym.IsEvent And Not hSym.IsHidden Then HasEvents = True End Public Sub WikiGetDescription() As String Dim sPath As String Dim aData As String[] Dim iPos As Integer Dim sData As String Dim sDesc As String sPath = Wiki.GetPagePathFrom("/comp" &/ LCase(Component &/ Name)) If Not Exist(sPath) Then Return aData = Split(File.Load(sPath), "\n") While iPos < aData.Count sData = aData[iPos] If sData Then If IsLetter(Left(sData)) Then sData = Replace(sData, "[../", "[./") sData = Replace(sData, "[./../", "[../") sDesc &= sData & "\n" Endif Else If sDesc Then Break Endif Inc iPos Wend Return sDesc End ' If a control needs a parent Public Sub ConstructorNeedParent() As Boolean Dim hClass As CClassInfo If Not Control Then Return False If Not VirtualControl Then Return True If Not Parent Then Return False hClass = Documentation.Classes[ParentComponent &/ Parent] Return hClass.ConstructorNeedParent() End Public Sub _compare(Other As CClassInfo) As Integer Return Comp(Name, Other.Name) End gambas-3.16.3/app/src/gambas3/.src/Component/CComponent.class000066400000000000000000000365441411575327000236460ustar00rootroot00000000000000' Gambas class file ' Static Public All As New Collection ' Static Public Libraries As New String[] ' Static Public (Classes) As Collection Static Private $iKey As Integer Static Private $hUnknown As CComponent Static Private $aGuiComp As String[] = ["gb.gui", "gb.qt4", "gb.qt5", "gb.gtk", "gb.gtk3"] Public Const PROJECT_NAME As String = "$" Public Const STABLE As Integer = 0 Public Const STABLE_NOT_FINISHED As Integer = 1 Public Const UNSTABLE As Integer = 2 Public Const DEPRECATED As Integer = 3 Public Const UNKNOWN As Integer = 4 Public Documentation As CDocumentation Public (Key) As String Public Name As String Public Authors As New String[] 'Public Type As String Public Hiddens As New String[] Public Controls As New String[] 'Public Containers As New String[] 'Public MultiContainers As New String[] 'Public Virtuals As New String[] Public Require As New String[] Public Exclude As New String[] Public Implement As New String[] Public Need As New String[] Public Loaded As Boolean Public ClassList As New String[] Public State As Integer Public SortKey As Integer 'Public User As Boolean Public Version As String Public Family As String Public ThirdParty As Boolean Public Hidden As Boolean Public {Library} As Boolean Public Path As String Public Help As String Private $bCalcKey As Boolean Public Sub CalcSortKey() Dim sComp As String Dim sNeed As String Dim hComp As CComponent If SortKey = 0 Then If $bCalcKey Then Return $bCalcKey = True If Require.Count Or If Need.Count Then For Each sComp In Require hComp = Documentation[sComp] If Not hComp Then Continue If hComp <> Me Then hComp.CalcSortKey Next For Each sNeed In Need For Each hComp In Documentation.Components If hComp.Implement.Find(sNeed) >= 0 Then hComp.CalcSortKey Endif Next Next Endif Inc $iKey SortKey = $iKey 'DEBUG Key;; "=";; SortKey $bCalcKey = False Endif End Static Public Sub GetInfoDir() As String Return System.Path &/ "share/" & "gambas" & System.Version & "/info" End Private Sub FindInfo(sKey As String) As String Dim sComp As String Dim aComp As String[] Dim sPath As String Dim aKey As String[] sPath = GetInfoDir() &/ sKey & ".info" If Exist(sPath) Then Return sPath aKey = Split(sKey, ".") If $aGuiComp.Exist(aKey[0] & "." & aKey[1]) Then For Each sComp In $aGuiComp aComp = Split(sComp, ".") aKey[1] = aComp[1] sPath = GetInfoDir() &/ aKey.Join(".") & ".info" If Exist(sPath) Then Return sPath Next Endif Error "gambas3: warning: cannot find information file for "; sKey End Public Sub Load() Dim aLine As String[] Dim sClass As String Dim sSymbol As String Dim sLig As String Dim iPos As Integer Dim hClass As CClassInfo Dim hParent As CClassInfo Dim hSym As CSymbolInfo Dim sParent As String Dim sPath As String Dim bAgain As Boolean Dim bNextClass As Boolean Dim cClass As New Collection Dim aList As String[] Dim hLibraryInfo As CLibraryInfo Dim sErr As String Dim iLine As Integer Dim sHelp As String Dim cCycle As Collection Dim cClasses As Collection If Loaded Then Return Loaded = True 'Debug "Loading: "; Key;; "("; Documentation.Name; ")" If Key <> CComponent.PROJECT_NAME Then Project.SetMessage(Subst(("Loading information on component &1..."), Key)) Else Project.SetMessage(("Loading information on project...")) Endif 'If Key = Project.Name Then Goto HAS_BEEN_LOADED ClassList = New String[] Controls = New String[] cClasses = Documentation.Classes If {Library} Then hLibraryInfo = CLibraryInfo[Path] hLibraryInfo.GetInfo() sPath = Temp$() File.Save(sPath, hLibraryInfo.Info) aList = hLibraryInfo.Classes Require = hLibraryInfo.Require For Each sLig In Require If Not Documentation.Exist(sLig) Then Error "gambas3: warning: component not found: "; sLig Else Documentation[sLig].Load Endif Next Help = hLibraryInfo.GetHelp() Else If Key <> "gb" Then Documentation["gb"].Load For Each sLig In Require Documentation[sLig].Load Next Documentation.ImplementAndNeed(Me) If Key = PROJECT_NAME Then sPath = Project.Dir &/ ".info" If Not Exist(sPath) Then Return Else sPath = FindInfo(Key) If Not sPath Then Return Endif ' List of exported classes Try aList = Split(File.Load(File.SetExt(sPath, "list")), "\n", "", True) ' TODO: remove duplicates. Normally it should be done in gbi3 program. If Error Then Error "gambas3: warning: cannot read "; File.SetExt(sPath, "list") Return Endif If {ThirdParty} Then hLibraryInfo = CLibraryInfo[Component.Path &/ Key & ".gambas"] Help = hLibraryInfo.GetHelp() Endif Endif For Each sClass In aList If Right(sClass) = "!" Then sClass = Left$(sClass, -1) If Right(sClass) = "?" Then sClass = Left$(sClass, -1) If sClass Then cClass[sClass] = True Next Inc Application.Busy Repeat bAgain = False cCycle = New Collection aLine = Split(File.Load(sPath), "\n") If aLine.Count And If aLine[aLine.Max] = "" Then aLine.Remove(aLine.Max) iLine = 0 While iLine < aLine.Count sLig = aLine[iLine] Inc iLine If Left$(sLig) = "#" Then bNextClass = False sClass = Mid$(sLig, 2) 'Print Key; ": "; sClass 'DEBUG sClass If cClasses.Exist(Key &/ sClass) Then If Not cCycle.Exist(sClass) Then 'DEBUG "Class exists" bNextClass = True Continue Endif Endif 'If sClass = "Application" Then Stop ' If we are opening a project having the same name as the component, then that ' project is assumed to be the gambas part of the component. And so the classes ' described in the '.info' file can be actually part of the gambas part and must ' not be processed. If Key = Project.Name Then If Project.ExistClass(sClass) Then 'Or If cClass[sClass] Then bNextClass = True Continue Endif Endif sParent = aLine[iLine] Inc iLine If Not sParent Or If sParent = sClass Then hParent = cClasses[sClass] If hParent And If hParent.Component <> Key And If hParent.Component <> Project.Name Then sParent = sClass Else sParent = "" Endif Endif ' Ce test peut foirer si une classe veut hériter d'une autre classe ' du même composant, qui existe déjà dans un composant déjà déclaré. If sParent And If Not ExistClassEvenArray(sParent) Then If Not cClass.Exist(sParent) Then Error.Raise("'" & sParent & "' class is missing in " & Key & " component exported classes") Endif bAgain = True bNextClass = True 'DEBUG "Parent does not exist:";; sParent Continue Endif 'If Key = PROJECT_NAME And If sClass = "Editor" Then Stop If Not cCycle.Exist(sClass) Then hClass = Documentation.CreateClass(sClass, sParent, Key) cCycle[sClass] = True sLig = aLine[iLine] Inc iLine ' Creatable is not inherited hClass.Creatable = InStr(sLig, "C") ' AutoCreatable is inherited If InStr(sLig, "A") Then hClass.AutoCreatable = True Else Inc iLine Endif GoSub READ_HELP If hClass.Help Then hClass.Help &= "\n\n" hClass.Help &= sHelp Continue Endif If bNextClass Then Continue 'If Key = PROJECT_NAME Then Continue sSymbol = sLig hSym = New CSymbolInfo(Documentation, sSymbol, aLine[iLine]) Inc iLine hSym.Class = sClass hSym.Component = Key hSym.Type = aLine[iLine] Inc iLine If hSym.Kind = "C" Then hSym.Value = UnQuote(aLine[iLine]) Else hSym.Signature = aLine[iLine] Endif Inc iLine If Left$(hSym.Kind) = "p" Then If Left$(hSym.Type, 2) = "i<" Then hSym.Signature = Mid$(hSym.Type, 3, -1) hSym.Type = "i" Endif Endif cClasses[Key &/ sClass].AddSymbol(hSym) GoSub READ_HELP hSym.Help = sHelp Wend Until Not bAgain 'PRINT "Initializing controls..." ' If Type = "Form" Then ' For Each sClass In ["Control", "Form", "Menu"] ' If Classes.Exist(sClass) Then ' Classes[sClass].InitControl() ' Endif ' Next ' Endif For Each sClass In ClassList If Not IsLetter(Left(sClass)) Then Continue hClass = cClasses[Key &/ sClass] hClass.InitEvents() hSym = hClass.Symbols["_IsControl"] If hSym And If hSym.Value Then Controls.Add(hClass.Name) Endif hSym = hClass.Symbols["_IsForm"] If hSym And If hSym.Value Then If hClass.Parent Then hParent = cClasses[hClass.ParentComponent &/ hClass.Parent] hSym = hParent.Symbols["_IsForm"] If hSym And If hSym.Value Then Hiddens.Add(sClass) Continue Endif Endif hSym = hClass.Symbols["_HiddenControls"] If hSym Then Hiddens.Insert(Split(hSym.Value, ",")) Endif Next ' _HiddenControls can be inherited, so its contents may be not significative For Each sClass In Hiddens If cClasses.Exist(Key &/ sClass) Then cClasses[Key &/ sClass].InitControl() iPos = Controls.Find(sClass) If iPos >= 0 Then Controls.Remove(iPos) Endif Next For Each sClass In Controls cClasses[Key &/ sClass].InitControl() Next ClassList.Sort Dec Application.Busy HAS_BEEN_LOADED: If Key = "gb.web" Then Family = "webpage" CModule.Activate(Family) Endif 'PRINT "OK" Return READ_HELP: sHelp = "" While iLine < aLine.Count If Left(aLine[iLine]) <> "'" Then Break sHelp &= Mid$(aLine[iLine], 2) & "\n" Inc iLine Wend If sHelp Then sHelp = RTrim(sHelp) If InStr(sHelp, "\n") = 0 Then sHelp = LTrim(sHelp) Endif Return Catch sErr = Error.Where & "\n\n" & Error.Text Dec Application.Busy FMain.ShowError(sErr) End Public Sub UsedByProject() As Boolean If Key = "gb" Then Return True If Key = CComponent.PROJECT_NAME Then Return True If Project.Components.Exist(Key) Then Return True End Public Sub IsForm() As Boolean Return Implement.Exist("form") End Public Sub GetHelpURL() As String Dim sPath As String Dim sComp As String If Key And If Key <> CComponent.PROJECT_NAME Then If {Library} Then Return "gambas://library" &/ Key Else sPath = MHelp.GetURL("comp") sComp = MHelp.ActualComponent(Key) sPath &/= LCase(sComp) Return sPath & "?l=" & MHelp.GetLanguage() Endif Endif End Public Sub ExistClassEvenArray(sClass As String) As Boolean Do If Documentation.Classes.Exist(sClass) Then Return True If Right(sClass, 2) <> "[]" Then Return sClass = Left(sClass, -2) If Not sClass Then Return Loop End Public Sub GetHelpHTML() As String Dim sClass As String = Name Dim sHtml As String Dim sDesc As String Dim hClass As CClassInfo Dim sHelp As String If Name = PROJECT_NAME Then sHelp = Project.Description Else If {Library} Or ThirdParty Then sHelp = Help Else Return Endif sHtml = MHelp.LoadCustom("component-help.html") sHtml = Replace(sHtml, "$(help)", sHelp) sDesc = "" For Each sClass In ClassList hClass = Documentation.Classes[sClass] sDesc &= "" & sClass & "
" Next sHtml = Replace(sHtml, "$(classes)", sDesc) sHtml = Replace(sHtml, "$(title)", Key) sHtml = Replace(sHtml, "''Classes''", ("Classes")) sHtml = Replace(sHtml, "$(hide-title)", "") Return sHtml End Public Sub Match(sFilter As String) As Boolean For Each sFilter In Split(sFilter, " ", Chr$(34), True) sFilter = String.RemoveDiacritics(sFilter) If InStr(String.RemoveDiacritics(Key), sFilter, 1, gb.IgnoreCase) Then Return True If InStr(String.RemoveDiacritics(Name), sFilter, 1, gb.IgnoreCase) Then Return True If InStr(String.RemoveDiacritics(Authors.Join("\n")), sFilter, 1, gb.IgnoreCase) Then Return True If InStr(String.RemoveDiacritics(Implement.Join("\n")), sFilter, 1, gb.IgnoreCase) Then Return True Next End Public Sub _new(hDoc As CDocumentation) Documentation = hDoc End Public Sub _get(sClass As String) As CClassInfo Return Documentation.Classes[Key &/ sClass] End Public Function WikiGetClasses() As String[] Dim aResult As New String[] Dim sClass As String Load() aResult.Add("[[ desc") aResult.Add(("Class")) aResult.Add("--") aResult.Add(("Description")) For Each sClass In ClassList If Left(sClass) = "." Or If Left(sClass) = "_" Or If InStr(sClass, "*") Then Continue 'aClass.Add(sClass) aResult.Add("==") aResult.Add("[/comp" &/ Key &/ LCase(sClass) & "]") aResult.Add("--") aResult.Add(Me[sClass].WikiGetDescription()) Next aResult.Add("]]") Return aResult Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Public Sub WikiGetDescription() As String[] Dim aResult As New String[] Dim sInfo As String Select Case State Case UNSTABLE aResult.Add(("This component is not stable yet.")) Case DEPRECATED aResult.Add("*" & ("This component is deprecated.") & "*") End Select aResult.Add("[[ desc") If Authors.Count Then aResult.Add("==") If Authors.Count = 1 Then aResult.Add("**" & ("Author") & "**") Else aResult.Add("**" & ("Authors") & "**") Endif aResult.Add("--") aResult.Add(Authors.Join(", ") & ".") Endif If Implement.Count Then aResult.Add("==") aResult.Add("**" & ("Implements") & "**") aResult.Add("--") For Each sInfo In Implement aResult.Add(CDocumentation.Features[LCase(sInfo)] & "\\") Next Endif If Need.Count Or If Require.Count Then aResult.Add("==") aResult.Add("**" & ("Requires") & "**") aResult.Add("--") For Each sInfo In Need aResult.Add(CDocumentation.Features[LCase(sInfo)] & "\\") Next For Each sInfo In Require aResult.Add("[/comp/" & LCase(sInfo) & "]\\") Next Endif If Exclude.Count Then aResult.Add("==") aResult.Add("**" & ("Excludes") & "**") aResult.Add("--") For Each sInfo In Exclude aResult.Add("[/comp/" & LCase(sInfo) & "]\\") Next Endif aResult.Add("]]") Return aResult Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Static Public Sub GetUnknown(sKey As String) As CComponent If Not $hUnknown Then $hUnknown = New CComponent(Null) $hUnknown.Loaded = True $hUnknown.State = UNKNOWN Endif $hUnknown.Key = sKey $hUnknown.Name = CDocumentation.GetName(sKey) Return $hUnknown End gambas-3.16.3/app/src/gambas3/.src/Component/CDocumentation.class000066400000000000000000000773021411575327000245120ustar00rootroot00000000000000' Gambas class file Public Name As String Public (Components) As New Collection Public Libraries As New String[] Public (Classes) As Collection Static Private $cName As Collection Static Public Features As New Collection Static Private $cRescue As New Collection Private Similars As New Collection Private $bScanFoundEvent As Boolean Private $hDumbClass As CClassInfo Private $hClass As CClassInfo Private $cImplement As New Collection Private Sub SortComponents() Dim cNewAll As New Collection Dim aComp As CComponent[] Dim hComp As CComponent Dim aSort As Integer[] aComp = New CComponent[] For Each hComp In Components hComp.CalcSortKey() aComp.Add(hComp) Next aSort = New Integer[] For Each hComp In aComp aSort.Add(hComp.SortKey) Next aComp.SortUsing(aSort) For Each hComp In aComp cNewAll.Add(hComp, hComp.Key) Next Components = cNewAll End Static Private Sub InitComponentNames() $cName["gb"] = ("Internal native classes") $cName["gb.args"] = ("Program arguments parser") $cName["gb.cairo"] = ("Cairo graphic library") $cName["gb.chart"] = ("Chart drawing") $cName["gb.clipper"] = ("Polygon management based on Clipper library") $cName["gb.complex"] = ("Complex numbers management") $cName["gb.compress"] = ("Compression & decompression") $cName["gb.compress.bzlib2"] = ("bzlib2 compression driver") $cName["gb.compress.zlib"] = ("zlib compression driver") $cName["gb.compress.zstd"] = ("zstd compression driver") $cName["gb.crypt"] = ("MD5/DES/SHA crypting") $cName["gb.data"] = ("More data containers") $cName["gb.db"] = ("Database access") '$cName["gb.db.firebird"] = ("Firebird database driver") $cName["gb.db.form"] = ("Data bound controls") $cName["gb.db.mysql"] = ("MySQL database driver") $cName["gb.db.odbc"] = ("ODBC database driver") $cName["gb.db.postgresql"] = ("PostgreSQL database driver") $cName["gb.db.sqlite2"] = ("SQLite 2 database driver") $cName["gb.db.sqlite3"] = ("SQLite 3 database driver") $cName["gb.debug"] = ("Application debugger helper") $cName["gb.desktop"] = ("Desktop management component") $cName["gb.desktop.x11"] = ("X-Window library support") $cName["gb.desktop.gnome.keyring"] = ("Gnome keyring support for desktop management component") $cName["gb.dbus"] = ("D-Bus interface") $cName["gb.eval"] = ("Expression evaluator") $cName["gb.eval.highlight"] = ("Syntax highlighter routines") $cName["gb.form"] = ("More controls for graphical components") $cName["gb.form.dialog"] = ("Enhanced standard dialogs") $cName["gb.form.editor"] = ("Text editor with syntax highlighting") $cName["gb.form.mdi"] = ("Multi Document Interface") $cName["gb.form.print"] = ("Generic preview and print form") $cName["gb.form.stock"] = ("Default icon theme") $cName["gb.form.terminal"] = ("Terminal emulator") $cName["gb.gmp"] = ("GNU Multiple Precision Arithmetic Library") $cName["gb.gsl"] = ("GNU Scientific Library") $cName["gb.gtk"] = ("GTK+2 toolkit") $cName["gb.gtk.opengl"] = ("OpenGL with GTK+ toolkit") $cName["gb.gtk3"] = ("GTK+3 toolkit") $cName["gb.gtk3.webview"] = ("GTK+3 web browser component") $cName["gb.gui"] = ("QT/GTK+ switcher component") $cName["gb.gui.opengl"] = ("OpenGL with QT/GTK+ switcher component") $cName["gb.gui.webview"] = ("QT/GTK+ web browser switcher component") $cName["gb.gui.qt"] = ("QT4/QT5 switcher component") $cName["gb.gui.qt.opengl"] = ("QT4/QT5 OpenGL switcher component") $cName["gb.gui.qt.webkit"] = ("QT4/QT5 WebKit switcher component") $cName["gb.gui.trayicon"] = ("System tray icon management component") $cName["gb.httpd"] = ("Embedded HTTP server") $cName["gb.image"] = ("Image management") $cName["gb.image.effect"] = ("Image filtering component") $cName["gb.image.imlib"] = ("Image routines from the Imlib2 library") $cName["gb.image.io"] = ("Image loading and saving") $cName["gb.inotify"] = ("Filesystem events monitoring") $cName["gb.libxml"] = ("XML tools based on libxml") $cName["gb.logging"] = ("Flexible logging system") $cName["gb.map"] = ("Online map viewer") $cName["gb.markdown"] = ("Gambas Markdown markup syntax") $cName["gb.media"] = ("GStreamer multimedia component") $cName["gb.media.form"] = ("Multimedia controls") $cName["gb.memcached"] = ("Memcached client") $cName["gb.mime"] = ("MIME format management based on GMime library") $cName["gb.mysql"] = ("MySQL specific routines") $cName["gb.ncurses"] = ("NCurses library") $cName["gb.net"] = ("Network programming") $cName["gb.net.curl"] = ("Network high-level protocols management") $cName["gb.net.pop3"] = ("POP3 client") $cName["gb.net.smtp"] = ("SMTP client") $cName["gb.openal"] = ("OpenAL 3D audio library") $cName["gb.opengl"] = ("3D programming with OpenGL") $cName["gb.opengl.glu"] = ("OpenGL utility component") $cName["gb.opengl.glsl"] = ("OpenGL shaders management") $cName["gb.opengl.sge"] = ("Simple OpenGL game engine based on MD2 format") $cName["gb.openssl"] = ("OpenSSL library routines") $cName["gb.option"] = ("GNU command option parser") $cName["gb.pcre"] = ("Perl-compatible Regular Expression Matching") $cName["gb.poppler"] = ("PDF renderer based on Poppler library") $cName["gb.pdf"] = ("PDF renderer based on Poppler library") $cName["gb.qt4"] = ("QT4 toolkit") $cName["gb.qt4.ext"] = ("QT4 toolkit extension") $cName["gb.qt4.webkit"] = ("QT4 WebKit component") $cName["gb.qt4.opengl"] = ("OpenGL with QT4 toolkit") $cName["gb.qt5"] = ("QT5 toolkit") $cName["gb.qt5.webkit"] = ("QT5 WebKit component") $cName["gb.qt5.webview"] = ("QT5 web browser component") $cName["gb.qt5.opengl"] = ("OpenGL with QT5 toolkit") $cName["gb.qt5.ext"] = ("QT5 toolkit extension") $cName["gb.report"] = ("Report designer") $cName["gb.report2"] = ("Report designer") $cName["gb.scanner"] = ("Scanner management library based on SANE") $cName["gb.sdl"] = ("SDL library") $cName["gb.sdl.sound"] = ("SDL sound & CD-ROM management") $cName["gb.sdl2"] = ("SDL2 component") $cName["gb.sdl2.audio"] = ("SDL2 audio component") $cName["gb.settings"] = ("Application settings management") $cName["gb.signal"] = ("Signals management") $cName["gb.term"] = ("Terminal management") $cName["gb.term.form"] = ("Graphical terminal applications development") $cName["gb.test"] = ("Unit tests component") $cName["gb.util"] = ("Utility component") $cName["gb.util.web"] = ("Web applications utility component") $cName["gb.v4l"] = ("Video capture") $cName["gb.vb"] = ("Visual Basic compatibility") $cName["gb.xml"] = ("XML tools") $cName["gb.xml.html"] = ("HTML generator") $cName["gb.xml.rpc"] = ("XML-RPC protocol") $cName["gb.xml.xslt"] = ("XSLT tools based on libxslt and libxml") $cName["gb.web"] = ("Web applications tools") $cName["gb.web.feed"] = ("Web feed parser and generator") $cName["gb.web.form"] = ("Web application development") $cName["gb.web.gui"] = ("Web application development using processes as session") ' For Each $cName ' Print "gambas3-"; Replace($cName.Key, ".", "-") ' Next Features["form"] = ("Graphical form management") Features["eventloop"] = ("Event loop management") Features["imageio"] = ("Image loading and saving") Features["openglviewer"] = ("OpenGL display") Features["complex"] = ("Complex numbers") Features["xml"] = ("XML management") End Static Public Sub GetName(sKey As String) As String Return $cName[sKey] End Public Sub AddSimilar(sCtrl As String, sSimilar As String) Dim aSimilar As String[] aSimilar = Similars[sSimilar] If Not aSimilar Then aSimilar = New String[] Similars[sSimilar] = aSimilar Endif aSimilar.Add(sCtrl) End Public Sub GetSimilars(sCtrl As String) As String[] Dim aSimilar As String[] = Similars[sCtrl] If Not aSimilar Then aSimilar = New String[] Return aSimilar End Private Sub InitComponent(sFile As String, Optional sKey As String) Dim hComponent As CComponent Dim hFic As File Dim sLig As String Dim sPath As String Dim iPos As Integer Dim sGroup As String sFile &= ".component" sPath = Component.Path &/ sFile Try hFic = Open sPath If Error Then Error "gambas3: warning: cannot read "; sPath Return Endif Line Input #hFic, sLig sLig = Trim(sLig) If sLig = "[Component]" Then hComponent = New CComponent(Me) If Not sKey Then sKey = File.BaseName(sFile) hComponent.Key = sKey hComponent.ThirdParty = Not $cName.Exist(hComponent.key) hComponent.Name = $cName[hComponent.Key] If Not hComponent.Name Then hComponent.Name = " " 'Subst(("&1 component"), hComponent.Key) For Each sLig In hFic.Lines sLig = Trim(sLig) If Not sLig Then Continue If Left(sLig) = ";" Or Left(sLig) = "'" Then Continue If sLig = "[Component]" Then Break If Left(sLig) = "[" And If Right(sLig) = "]" Then sGroup = Mid$(sLig, 2, -1) Continue Endif iPos = InStr(sLig, "=") If iPos = 0 Then Continue sKey = Left$(sLig, iPos - 1) sLig = Mid$(sLig, iPos + 1) With hComponent If sKey = "Author" Or sKey = "Authors" Then .Authors = Split(sLig) Else If sKey = "Require" Or sKey = "Requires" Then .Require = Split(sLig) Else If sKey = "Exclude" Or sKey = "Excludes" Then .Exclude = Split(sLig) Else If sKey = "Implement" Or sKey = "Implements" Then .Implement = Split(LCase(sLig)) Else If sKey = "Need" Or sKey = "Needs" Then .Need = Split(LCase(sLig)) Else If sKey = "Alpha" Then .State = CComponent.UNSTABLE Else If sKey = "State" Then Select Case LCase(sLig) Case "stable", "finished" .State = CComponent.STABLE Case "notfinished", "unfinished" .State = CComponent.STABLE_NOT_FINISHED Case "experimental", "unstable" .State = CComponent.UNSTABLE Case "deprecated" .State = CComponent.DEPRECATED Default .State = CInt(sLig) End Select Else If sKey = "Version" Then .Version = sLig Else If sKey = "Hidden" Then .Hidden = sLig = "True" Endif ' Endif End With Next If hComponent.Key Then Components[hComponent.Key] = hComponent Endif Endif Close #hFic Catch Error "gambas"; System.Version; ": Unable to read component file:";; sFile Error Error.Where; ":";; Error.Text End Public Sub FullReset() Components.Clear Features.Clear _new End Static Public Sub _init() $cRescue["3.0:form"] = "gb.gui" $cRescue["3.0:openglviewer"] = "gb.gui.opengl" $cRescue["3.0:imageio"] = "gb.image.io" $cRescue["3.0:eventloop"] = "gb.gui" $cRescue["3.0:xml"] = "gb.xml" $cName = New Collection InitComponentNames End Public Sub _new(Optional sName As String) Dim aComp As String[] Dim sFile As String Dim hComp As CComponent Dim sComp As String Dim sCompSubst As String Dim I As Integer Name = sName $cImplement.Clear aComp = Dir(Component.Path, "*.component") For I = 0 To aComp.Max aComp[I] = File.BaseName(aComp[I]) Next aComp.Sort() For Each sFile In aComp 'If Not $cName.Exist(File.BaseName(sFile)) Then Continue InitComponent(sFile) Next If Name Then For Each sCompSubst In ["gb.qt4", "gb.qt5", "gb.gtk", "gb.gtk3"] If Components.Exist(sCompSubst) Then Break sCompSubst = "" Next If sCompSubst Then For Each sComp In ["gb.qt4", "gb.qt5", "gb.gtk", "gb.gtk3"] If Not Components.Exist(sComp) Then InitComponent(sCompSubst, sComp) Endif Next Endif Endif hComp = New CComponent(Me) hComp.Key = CComponent.PROJECT_NAME hComp.Name = " " Components[hComp.Key] = hComp SortComponents Reset End Public Sub CreateClass(sClass As String, sParent As String, sComp As String) As CClassInfo Dim hClass As CClassInfo Dim hComp As CComponent hClass = New CClassInfo(Me, sClass, sComp, sParent) Classes[sComp &/ sClass] = hClass Classes[sClass] = hClass hComp = Components[sComp] If hComp Then 'If hComp.Type Then Classes[hComp.Type &/ sClass] = hClass If sClass <> "." Then hComp.ClassList.Add(sClass) End If Return hClass End Static Public Sub GetInfoDir() As String Return System.Path &/ "share/" & "gambas" & System.Version & "/info" End Public Sub Exit() $hClass = Null $hDumbClass = Null Components = Null Classes = Null If Not Name Then CModule.Exit End Public Sub MakeInheritance(hModule As Object, cSymbol As Collection, sParent As String, Optional sComponent As String) Dim cClassSymbol As Collection Dim hSymbol As CSymbolInfo 'Debug hModule.Name;; "->";; sParent;; sComponent hModule.ParentClass = sParent hModule.ParentComponent = sComponent If Not hModule.AutoCreatable Then hModule.AutoCreatable = IsAutoCreatable(hModule.ParentClass) cClassSymbol = GetClassSymbols(sParent, sComponent) If cClassSymbol Then For Each hSymbol In cClassSymbol cSymbol[hSymbol.Name] = hSymbol If hSymbol.IsEvent And If Not hSymbol.IsHidden Then $bScanFoundEvent = True Next Endif End ' Static Private Sub ConvertSignature(sCode As String) As String ' ' Dim iInd As Integer ' Dim aSym As String[] ' Dim sSign As Integer ' Dim bOptional As Boolean ' Dim sType As String ' ' aSym = Highlight.Analyze("Sub Func(" & sCode & ")") ' ' aSym.Remove(0, 3) ' aSym.Remove(aSym.Max) ' ' Do ' ' If aSym[iInd] = "OPTIONAL" Then ' sSign &= "[" ' bOptional = True ' Endif ' sSign &= "(" & aSym[iInd] & ")" ' Inc iInd ' If aSym[iInd] <> "AS" Then Break ' Inc iInd ' sType = FEditor.ReadSymbolType(aSym, iInd) ' If Len(sType) > 1 Then sType &= ";" ' sSign &= sType ' ' Do ' Loop ' ' Loop ' ' If bOptional Then sSign &= "]" ' ' Finally ' ' Return sSign ' ' End Private Sub ScanStruct(hModule As Object, iLine As Integer) As Integer Dim hEditor As TextEditor Dim aSym As String[] Dim iInd As Integer Dim iLineDecl As Integer Dim sClass As String Dim hSymbol As CSymbolInfo Dim cSymbol As New Collection Dim hClass As CClassInfo hEditor = hModule.GetEditor() aSym = Highlight.Analyze(hEditor[iLine].Text) For iInd = 0 To aSym.Max - 1 If aSym[iInd] = "STRUCT" Then Break Next If iInd = aSym.Max Then Return iLine iLineDecl = iLine sClass = aSym[iInd + 1] Do Inc iLine If iLine >= hEditor.Count Then Return iLine aSym = Highlight.Analyze(hEditor[iLine].Text) If aSym.Count >= 2 And If aSym[0] = "END" And If aSym[1] = "STRUCT" Then Break If aSym.Count = 0 Then Continue If Highlight.Types[0] <> Highlight.Symbol Then Continue hSymbol = New CSymbolInfo(Me, aSym[0], "v") With hSymbol .Class = sClass .NotPublic = False .LineNumber = iLine + 1 .Type = FEditor.ReadSymbolType(aSym, 1) cSymbol[.Name] = hSymbol End With Loop hClass = Classes[sClass] If hClass And If Not hClass.Structure Then Return iLine hClass = CreateClass(sClass, "", CComponent.PROJECT_NAME) hClass.Structure = True hClass.Symbols = cSymbol hClass.DeclareIn = hModule.Name hClass.DeclareAtLine = iLineDecl Return iLine End Private Sub ScanClass(hModule As Object, cSymbol As Collection, bModule As Boolean, Optional bCanInherit As Boolean = True) Dim hEditor As TextEditor Dim iLine As Integer Dim aSym As String[] Dim bStatic As Boolean Dim bPublic As Boolean Dim sKind As String Dim iInd As Integer Dim hSymbol, hSymbol2 As CSymbolInfo 'Dim aSymbol As CSymbolInfo[] Dim iStart As Integer Dim hClass As CClassInfo Dim hParentClass As CClassInfo Dim sName, sName2 As String Dim aName As String[] Dim sLine As String Dim iPos As Integer Dim sSign As String Dim bExport As Boolean Dim bBrace As Boolean 'Debug "ScanClass "; hModule.Name hEditor = hModule.GetEditor() hModule.AutoCreatable = False hModule.NotCreatable = False If bCanInherit Then hClass = Classes[hModule.Name] If hClass Then If hClass.Component = CComponent.PROJECT_NAME And If hClass.Parent Then hParentClass = Classes[hClass.ParentComponent &/ hClass.Parent] MakeInheritance(hModule, cSymbol, hParentClass.Name, hParentClass.Component) bCanInherit = False Endif Endif Endif $bScanFoundEvent = False For iLine = 0 To hEditor.Count - 1 aSym = Highlight.Analyze(hEditor[iLine].Text) If aSym.Count = 0 Then Continue If Highlight.Types[0] = Highlight.Comment Or If Highlight.Types[0] = Highlight.Help Then Continue Select Case aSym[0] Case "INHERITS" If aSym.Count >= 2 And If bCanInherit And If Highlight.Types[1] = Highlight.Datatype Then MakeInheritance(hModule, cSymbol, aSym[iInd + 1]) bCanInherit = False Endif Continue Case "CREATE" If aSym.Count = 1 Or If aSym[1] = "STATIC" Then hModule.AutoCreatable = True 'DEBUG hModule.Name; " := "; hModule.AutoCreatable Else If aSym[1] = "PRIVATE" Then hModule.NotCreatable = True Endif Case "EXPORT" bExport = True Default Break End Select Next If bExport And If bCanInherit Then hClass = Classes[hModule.Name] 'sParent = aSym[iInd + 1] If hClass And If hClass.Component <> Project.Name And If hClass.Component <> CComponent.PROJECT_NAME Then MakeInheritance(hModule, cSymbol, hModule.Name, hClass.Component) bCanInherit = False Endif Endif For iLine = iLine To hEditor.Count - 1 aSym = Highlight.Analyze(hEditor[iLine].Text) If aSym.Count = 0 Then Continue bStatic = bModule bPublic = False If bModule And Project.ModulePublic Then bPublic = True sKind = "" For iInd = 0 To aSym.Count - 1 Select Case aSym[iInd] Case "PUBLIC" sKind = "v" bPublic = True Case "PRIVATE" sKind = "v" bPublic = False Case "STATIC" sKind = "v" bStatic = True Case "PROPERTY" sKind = "p" bPublic = True Case "READ" If sKind = "p" Then sKind = "r" Inc iInd Break Case "EVENT" sKind = ":" bStatic = False bPublic = True Inc iInd $bScanFoundEvent = True Break Case "SUB", "PROCEDURE", "FUNCTION" sKind = "m" Inc iInd Break Case "EXTERN" sKind = "X" Inc iInd Break Case "CONST" sKind = "C" bStatic = True Inc iInd Break Case "ENUM" sKind = "E" bStatic = True Inc iInd Break Case "STRUCT" sKind = "S" Break Case "FAST", "UNSAFE" ' continue Case Else Break End Select Next If sKind = "E" Then For iInd = iInd To aSym.Count - 1 If Highlight.Types[iInd] = Highlight.Symbol Then hSymbol = New CSymbolInfo(Me, aSym[iInd], "C") With hSymbol .Class = hModule.Name .NotPublic = Not bPublic .LineNumber = iLine + 1 .Type = "i" cSymbol[.Name] = hSymbol bCanInherit = False End With Endif Next Continue Else If sKind = "S" Then iLine = ScanStruct(hModule, iLine) Continue Endif 'IF NOT bPublic THEN CONTINUE If Not sKind Then Continue If iInd >= aSym.Count Then Continue 'ANOTHER_SYMBOL: sName = aSym[iInd] If sName = "(" Then bBrace = True Inc iInd sName = aSym[iInd] Else bBrace = False Endif If sName = "{" Then If iInd + 2 > aSym.Max Then Continue Inc iInd sName = aSym[iInd] If aSym[iInd + 1] = "}" Then Inc iInd Endif If bBrace Then If iInd + 1 > aSym.Max Then Continue If aSym[iInd + 1] = ")" Then Inc iInd Endif aName = Null If InStr("pr", sKind) And If (iInd + 2) <= aSym.Max And If aSym[iInd + 1] = "," Then aName = [sName] iInd += 2 Do sName2 = aSym[iInd] If Left(sName2) = "{" Then If iInd + 2 > aSym.Max Then Break Inc iInd sName2 = aSym[iInd] If aSym[iInd + 1] = "}" Then Inc iInd Endif aName.Add(sName2) If (iInd + 2) > aSym.Max Then Break If aSym[iInd + 1] <> "," Then Break iInd += 2 Loop Endif If sKind = ":" Then sName = ":" & sName hSymbol = New CSymbolInfo(Me, sName, sKind) With hSymbol .Class = hModule.Name .NotPublic = Not bPublic .LineNumber = iLine + 1 If InStr(":mX", sKind) Then For iStart = iInd + 1 To aSym.Count - 1 If aSym[iStart] = "(" Then Break Next For iInd = aSym.Count - 1 To 0 Step -1 If aSym[iInd] = ")" Then Break Else If aSym[iInd] = "AS" Then If iInd < (aSym.Count - 1) Then .Type = FEditor.ReadSymbolType(aSym, iInd) Endif Endif Next 'iEnd = iInd Try sSign = Trim(Mid$(Trim(hEditor[iLine].Text), Highlight.Positions[iStart] + 2)) If Not Error Then iPos = RInStr(sSign, ")") If iPos Then sSign = Trim(Left$(sSign, iPos - 1)) .Signature = "#" & sSign Endif 'FOR iInd = iStart TO iEnd ' .Signature = .Signature & aSym[iInd] & " " 'NEXT Else Inc iInd ' If iInd <= aSym.Max And If aSym[iInd] = "," Then ' If Not aSymbol Then aSymbol = New CSymbolInfo[] ' aSymbol.Add(hSymbol) ' Inc iInd ' Goto ANOTHER_SYMBOL ' Endif .Type = FEditor.ReadSymbolType(aSym, iInd) If .Kind = "C" Then Do Inc iInd If iInd >= aSym.Count Then Break If aSym[iInd] = "=" Then Inc iInd If iInd < aSym.Count Then .Value = aSym[iInd] If .Type = "s" Then .Value = UnQuote(.Value) Else If .Type = "b" Then .Value = .Value == "TRUE" Endif Endif Endif Loop Endif Endif If bStatic Then .Kind = UCase(.Kind) .IsStatic = True Endif cSymbol[.Name] = hSymbol If aName Then For Each sName In aName hSymbol2 = hSymbol.Copy() hSymbol2.Name = sName hSymbol2.LineNumber = hSymbol.LineNumber cSymbol[sName] = hSymbol2 Next Endif ' PROPERTY ... USE If InStr("pr", sKind) And If aSym.Count >= 4 Then If aSym[aSym.Count - 2] = "USE" Then sName = aSym[aSym.Max] hSymbol2 = hSymbol.Copy() hSymbol2.Name = sName hSymbol2.LineNumber = hSymbol.LineNumber hSymbol2.NotPublic = True cSymbol[sName] = hSymbol2 Endif Endif bCanInherit = False End With If sKind = "m" Then Do Inc iLine If iLine >= hEditor.Count Then Break sLine = Trim(hEditor[iLine].Text) iPos = InStr(sLine, "'") If iPos Then sLine = Trim(Left(sLine, iPos - 1)) If Len(sLine) = 3 And If UCase(sLine) = "END" Then Break If Len(sLine) = 7 And If UCase(sLine) = "END SUB" Then Break If Len(sLine) = 12 And If UCase(sLine) = "END FUNCTION" Then Break 'aSym = Highlight.Analyze(hEditor.Lines[iLine]) 'IF aSym.Count = 1 AND IF aSym[0] = "END" THEN BREAK Loop Endif Next 'DEBUG "< "; hModule.Name End ' Static Private Function GetHelpLine(iLine As Integer, hEditor As Editor) As Integer ' ' Dim aSym As String[] ' Dim HelpLine As Integer ' ' Do ' Dec iLine ' If iLine < 0 Then Return HelpLine ' aSym = Highlight.Analyze(hEditor.Lines[iLine].Text) ' If aSym.Count = 1 Then ' If Left(aSym[0], 2) = "''" Then HelpLine = iLine ' Else ' Return HelpLine ' Endif ' ' Loop ' ' End Private Sub ScanForm(hForm As FForm, cSymbol As Collection) Dim hControl As CControl Dim hSymbol As CSymbolInfo 'PRINT "ScanForm "; hForm.Name For Each hControl In hForm.Control If hControl.Name = hForm.Name Then Continue hSymbol = New CSymbolInfo(Me, hControl.Name, "t") With hSymbol .Name = hControl.Name .Type = hControl.Kind .Class = hForm.Name .NotPublic = (Not Project.ControlPublic) And Not hControl.Public cSymbol[.Name] = hSymbol End With Next End Private Sub GetModule(sClass As String) As Object Dim sPath As String Dim sFamily As String sPath = Project.FindPath(sClass & ".module") If sPath Then Return Project.LoadFile(sPath) sPath = Project.FindPath(sClass & ".test") If sPath Then Return Project.LoadFile(sPath) For Each sFamily In CFamily.List sPath = Project.FindPath(sClass & "." & sFamily) If sPath Then Return Project.LoadFile(sPath) Next sPath = Project.FindPath(sClass & ".class") If sPath Then Return Project.LoadFile(sPath) End Public Sub IsAutoCreatable(sClass As String) As Boolean Dim hClass As CClassInfo Dim hModule As Object GetClassSymbols(sClass) hClass = Classes[sClass] If hClass Then Return hClass.AutoCreatable hModule = GetModule(sClass) If hModule Is FEditor Then 'DEBUG sClass; " -> "; hModule.AutoCreatable Return hModule.AutoCreatable Endif End Private Sub MustScan(hEditor As FEditor) As Boolean Dim sParent As String Dim hParentEditor As FEditor Dim bTest As Boolean If Not hEditor.Scan Then Return True If hEditor.ParentClass Then sParent = hEditor.ParentClass Try hParentEditor = GetModule(sParent) ' The user can decide that the parent is a form by error! If hParentEditor And If hParentEditor <> hEditor Then hEditor.ParentClass = "" ' Avoid circular inheritance bTest = MustScan(hParentEditor) hEditor.ParentClass = sParent Return bTest Endif Endif End Public Sub GetClassDescription(sClass As String) As CClassInfo GetClassSymbols(sClass) Return $hClass End Public Sub GetLastClass() As CClassInfo Return $hClass End Public Sub ScanSingleClass(hPModule As FEditor) As Collection Dim cSymbol As Collection cSymbol = New Collection(gb.IgnoreCase) hPModule.Scan = cSymbol ScanClass(hPModule, cSymbol, Project.IsModuleExt(hPModule.Path), False) Return cSymbol End Public Function GetClassSymbols(sClass As String, Optional sComponent As String) As Collection Dim hClass As CClassInfo Dim bClass As Boolean Dim sPath As String Dim hPForm As Object Dim hPModule As FEditor Dim hPClass As FEditor Dim cSymbol As Collection Dim sFamily As String Dim hSymbol As CSymbolInfo If Len(sClass) <= 1 Then If sClass = "s" Then sClass = "_BoxedString" Else If sClass <> "." And If Not IsUpper(sClass) Then Return Endif Endif 'Debug sClass 'If sClass = "MaskBox" Then Stop If sComponent Then bClass = sComponent = CComponent.PROJECT_NAME hClass = Classes[sComponent &/ sClass] Else If Not Name Then bClass = Project.ExistClass(sClass) hClass = Classes[sClass] Endif If Not bClass Then If hClass Then $hClass = hClass Return hClass.Symbols Else If Right(sClass, 2) = "[]" Then 'GetClassSymbols(Left(sClass, -2)) hClass = CreateClass(sClass, "", "*") hClass.CopyFrom(Classes["*[]"], "*", Left(sClass, -2)) $hClass = hClass Return hClass.Symbols Endif 'Error "gambas3: warning: unknown class: "; sClass Return Endif Endif sPath = Project.FindPath(sClass & ".module") If Not Exist(sPath) Then sPath = Project.FindPath(sClass & ".test") If Exist(sPath) Then hPModule = Project.LoadFile(sPath) Else For Each sFamily In CFamily.List sPath = Project.FindPath(sClass & "." & sFamily) If Exist(sPath) Then Try hPForm = Project.LoadFile(sPath) Break Endif Next sPath = Project.FindPath(sClass & ".class") If Exist(sPath) Then hPClass = Project.LoadFile(sPath) Endif cSymbol = New Collection If Not $hDumbClass Then $hDumbClass = New CClassInfo(Me, "", "") $hDumbClass.Name = sClass If hPModule Then cSymbol = hPModule.Scan If MustScan(hPModule) Then cSymbol = New Collection(gb.IgnoreCase) hPModule.Scan = cSymbol ScanClass(hPModule, cSymbol, True) Endif $hDumbClass.Parent = hPModule.ParentClass $hDumbClass.Creatable = False $hDumbClass.AutoCreatable = False $hDumbClass.HasEvents = $bScanFoundEvent '$hDumbClass.ParentComponent = hPModule.ParentComponent Else If hPClass Then cSymbol = hPClass.Scan If MustScan(hPClass) Then cSymbol = New Collection(gb.IgnoreCase) hPClass.Scan = cSymbol If hPForm Then For Each hSymbol In Classes[sFamily].Symbols cSymbol[hSymbol.Name] = hSymbol Next hPClass.ParentClass = sFamily If hPForm Is FForm Then ScanForm(hPForm, cSymbol) Endif ScanClass(hPClass, cSymbol, False) Endif $hDumbClass.Parent = hPClass.ParentClass $hDumbClass.ParentComponent = hPClass.ParentComponent $hDumbClass.Creatable = Not hPClass.NotCreatable $hDumbClass.AutoCreatable = hPClass.AutoCreatable $hDumbClass.HasEvents = $bScanFoundEvent Endif $hDumbClass.Symbols = cSymbol $hClass = $hDumbClass Return cSymbol End Public Sub Reset() Dim hComponent As CComponent Dim sLib As String 'Debug Name 'Error System.Backtrace.Join(" ") For Each hComponent In Components hComponent.Loaded = False Next For Each sLib In Libraries Components[sLib] = Null Next Libraries.Clear If Not Name Then CModule.Reset Classes = New Collection(gb.IgnoreCase) $cImplement.Clear Components["gb"].Load Components["gb.test"].Load() End Public Sub AddLibrary(sPath As String) Dim hComp As CComponent hComp = New CComponent(Me) hComp.Key = File.Name(sPath) hComp.Name = hComp.Key hComp.Library = True hComp.Path = sPath Libraries.Add(hComp.Key) Components[hComp.Key] = hComp hComp.Load End Public Sub RemoveLibrary(sPath As String) Dim sKey As String = File.Name(sPath) Dim iPos As Integer = Libraries.Find(sKey) If iPos < 0 Then Return Libraries.Remove(iPos) Components[sKey] = Null End Public Sub LoadProjectComponent() Components[CComponent.PROJECT_NAME].Load End Public Sub _get(sComp As String) As CComponent Return Components[sComp] End Public Sub Get(sComp As String) As CComponent Dim hComp As CComponent hComp = Components[sComp] hComp.Load Return hComp End Public Sub Exist(sComp As String) As Boolean Return Components.Exist(sComp) End Public Sub ImplementAndNeed(hComp As CComponent) Dim sElt As String For Each sElt In hComp.Implement $cImplement[sElt] = hComp.Key Next For Each sElt In hComp.Need If $cImplement.Exist(sElt) Then Continue sElt = "3.0:" & sElt If $cRescue.Exist(sElt) Then Components[$cRescue[sElt]].Load() Else Error.Raise("No default component for implementation of " & sElt) Endif Next End gambas-3.16.3/app/src/gambas3/.src/Component/CModule.class000066400000000000000000000044141411575327000231200ustar00rootroot00000000000000' Gambas class file Static Public All As Collection Static Public Ext As String[] Static Public CodeExt As String[] = ["module", "test", "class"] Public (Key) As String Public Name As String Public NamePlural As String Public NameFilter As String Public (Component) As String Public Used As Boolean 'Public HasFormEditor As Boolean Static Public Sub _init() Dim sModule As String Dim hModule As CModule All = New Collection(gb.IgnoreCase) For Each sModule In CodeExt Picture["img/16" &/ sModule & ".png"] = Project.MakeModuleIcon(sModule, 16).Picture Picture["img/32" &/ sModule & ".png"] = Project.MakeModuleIcon(sModule, 32).Picture Next Ext = CodeExt.Copy() hModule = New CModule("form", ("Form"), ("Forms"), ("Gambas forms")) hModule = New CModule("webpage", ("WebPage"), ("WebPages"), ("Gambas web pages")) hModule = New CModule("report", ("Report"), ("Reports"), ("Gambas reports")) hModule = New CModule("webform", ("WebForm"), ("WebForms"), ("Gambas web forms")) hModule = New CModule("termform", ("TermForm"), ("TermForms"), ("Gambas terminal forms")) End Static Public Sub Exit() All = Null End Static Public Sub _get(sKey As String) As CModule Return All[sKey] End Public Sub _new(sKey As String, sName As String, sNamePlural As String, sNameFilter As String) Key = sKey Name = sName NamePlural = sNamePlural NameFilter = sNameFilter 'HasFormEditor = bHasFormEditor All[sKey] = Me Picture["img/16" &/ sKey & ".png"] = Project.MakeModuleIcon(sKey, 16).Picture Picture["img/32" &/ sKey & ".png"] = Project.MakeModuleIcon(sKey, 32).Picture Ext.Add(sKey) End Static Public Sub Reset() Dim hModule As CModule For Each hModule In All hModule.Component = "" hModule.Used = False Next End Static Public Sub Activate(sFamily As String) Dim hModule As CModule = All[sFamily] If hModule Then hModule.Used = True End Static Public Sub FromTreeKey(sKey As String) As CModule Dim hModule As CModule For Each hModule In All If hModule.TreeKey = sKey Then Return hModule Next End Static Public Sub FromExt(sExt As String) As CModule Dim hModule As CModule For Each hModule In All If hModule.Key = LCase(sExt) Then Return hModule Next End gambas-3.16.3/app/src/gambas3/.src/Component/CPropertyInfo.class000066400000000000000000000235611411575327000243370ustar00rootroot00000000000000' Gambas class file Public Const EVENT_NAME As String = "Group" Public Const SCALE_NAME As String = "Scaled" Public Const PUBLIC_NAME As String = "Public" Public Const TRANSLATE_NAME As String = "Translate" Static Public ALLOWED_MULTI_CONTAINER_PROP As String[] = ["Index", "Count", "Text", "Picture", "Ignore"] Static Public ALLOWED_CONTROL_PROP As String[] = ["Text", "Foreground", "Background", "Border", "Value", "Font", "Ignore"] Static Public CreatingSpecialProperty As Boolean Static Private $cRedirect As New Collection Static Private $cTranslate As New Collection Static Private $cUpdateName As New Collection Static Private $cAlwaysRead As New Collection Static Private $cShortcut As New Collection Static Private $cArrangement As New Collection Public Documentation As CDocumentation Public Name As String Public Type As String Public DefaultValue As Variant Public Argument As String Public ConstantClass As String Public ConstantList As Collection Public Coord As Boolean '' If a property is a coordinate Public Required As Boolean Public Exclude As Boolean Public Hidden As Boolean Public DoNotApply As Boolean Public AlwaysRead As Boolean Public Virtual As Boolean Public Translate As Boolean Public UpdateName As Boolean Public (Shortcut) As Boolean Public Arrangement As Boolean 'PUBLIC Control AS Boolean Static Public Sub _init() $cRedirect["Visible"] = True '$cRedirect["*.Enabled"] = True $cRedirect["Action"] = True $cRedirect["Tag"] = True $cRedirect["Password"] = True $cRedirect["Mouse"] = True $cRedirect["ToolTip"] = True $cRedirect["Drop"] = True $cRedirect["List"] = True $cRedirect["Arrangement"] = True $cRedirect["Padding"] = True '$cRedirect["Ignore"] = True $cRedirect["Indent"] = True $cRedirect["Spacing"] = True $cRedirect["Expand"] = True $cRedirect["X"] = True $cRedirect["Y"] = True $cRedirect["Width"] = True $cRedirect["Height"] = True $cRedirect["Label.Padding"] = False $cRedirect["URLLabel.Padding"] = False $cRedirect["PictureBox.Padding"] = False $cRedirect["LCDLabel.Padding"] = False $cRedirect["TextLabel.Padding"] = False $cRedirect["GridView.Padding"] = False $cRedirect["TableView.Padding"] = False $cRedirect["Form.Border"] = True $cRedirect["Form.FullScreen"] = True $cRedirect["Form.Icon"] = True $cRedirect["Form.Maximized"] = True $cRedirect["Form.Mask"] = True $cRedirect["Form.Transparent"] = True $cRedirect["Form.Minimized"] = True $cRedirect["Form.Persistent"] = True $cRedirect["Form.Picture"] = True $cRedirect["Form.Resizable"] = True $cRedirect["Form.SkipTaskbar"] = True $cRedirect["Form.Stacking"] = True $cRedirect["Form.Sticky"] = True $cRedirect["Form.Type"] = True $cRedirect["Form.Text"] = True $cRedirect["Form.X"] = True $cRedirect["Form.Y"] = True 'Nein! '$cRedirect["Button.Default"] = TRUE '$cRedirect["Button.Cancel"] = TRUE $cRedirect["Menu.Visible"] = False $cRedirect["Menu.Enabled"] = True $cRedirect["Menu.Shortcut"] = True $cRedirect["Menu.Text"] = True $cRedirect["DrawingArea.Cached"] = True $cRedirect["DrawingArea.NoBackground"] = True $cRedirect["Timer.Enabled"] = True $cRedirect["WebView.Editable"] = True $cRedirect["AutoResize"] = True $cRedirect["Connection"] = True $cTranslate["Text"] = True $cTranslate["PlaceHolder"] = True $cTranslate["Title"] = True $cTranslate["List"] = True $cTranslate["FileChooser.Filter"] = True $cTranslate["Caption"] = True $cTranslate["ToolTip"] = True $cTranslate["Tooltip"] = True $cTranslate["Wizard.ActionText"] = True $cUpdateName["ComboBox.ReadOnly"] = True $cUpdateName["Text"] = True $cUpdateName["Picture"] = True $cAlwaysRead["RadioButton.Value"] = True $cAlwaysRead["ToggleButton.Value"] = True $cAlwaysRead["ToolButton.Value"] = True $cAlwaysRead["Button.Default"] = True $cAlwaysRead["Button.Cancel"] = True $cAlwaysRead["ProgressBar.Value"] = True $cAlwaysRead["ProgressBar.Max"] = True $cAlwaysRead["SpinBox.Value"] = True $cAlwaysRead["SpinBox.Min"] = True $cAlwaysRead["SpinBox.Max"] = True $cShortcut["Button.Text"] = True $cShortcut["Menu.Text"] = True $cShortcut["ToolButton.Text"] = True $cShortcut["RadioButton.Text"] = True $cShortcut["CheckBox.Text"] = True $cShortcut["ToggleButton.Text"] = True $cShortcut["DataCheckBox.Text"] = True $cArrangement["Arrangement"] = True $cArrangement["Spacing"] = True $cArrangement["Margin"] = True $cArrangement["Ignore"] = True $cArrangement["Expand"] = True End Private Sub GetFlag(cCol As Collection, sClass As String, sName As String) As Boolean If cCol.Exist(sClass & "." & sName) Then Return cCol[sClass & "." & sName] Else If cCol.Exist(sName) Then Return True Endif End Public Sub _new(hDoc As CDocumentation, sComponent As String, sClass As String, sName As String, sKind As String, Optional bVirtual As Boolean, Optional bDoNotApply As Boolean, Optional sDefVal As String) Dim iPos As Integer Dim sList As String Dim cList As String[] Dim hSym As CSymbolInfo 'DIM sDefVal AS String Dim sSign As String Dim sFirst As String Dim sArg As String Dim hClass As CClassInfo Documentation = hDoc Name = sName If CreatingSpecialProperty Then If Name = EVENT_NAME Then Type = "s" Virtual = True Exclude = True DoNotApply = True Return Else If Name = SCALE_NAME Then Type = "b" Virtual = True Exclude = False DoNotApply = True DefaultValue = True Return Else If Name = PUBLIC_NAME Then Type = "b" Virtual = True Exclude = False DoNotApply = True DefaultValue = False Return Else If Name = TRANSLATE_NAME Then Type = "b" Virtual = True Exclude = False DoNotApply = True DefaultValue = True Return Endif Endif If sComponent Then hClass = Documentation.Classes[sComponent &/ sClass] Try hSym = hClass.Symbols[sName] Type = hSym.Type sSign = hSym.Signature Else hClass = Documentation.Classes[sClass] If Name = "X" Or If Name = "Y" Then Type = "i" sKind = "Position" Endif Endif 'sClass = hSym.Class Required = sKind = "Position" If Len(Type) = 1 Then If Name = "Tag" Then Type = "s" Endif Else DefaultValue = Null Endif If sDefVal Then Select Case Type Case "i" Try DefaultValue = CInt(sDefVal) If Error Then DefaultValue = sDefVal Case "f" DefaultValue = CFloat(sDefVal) Case "b" DefaultValue = LCase(sDefVal) <> "false" Case "s" DefaultValue = sDefVal End Select Else If IsNull(DefaultValue) Then Select Case Type Case "b" DefaultValue = False Case "i", "f" DefaultValue = 0 End Select Endif GoSub GET_KIND If Type = "Color" Then DefaultValue = Color.Default If Left(Name) = "#" Then Coord = Name = "#X" Or Name = "#Y" Or Name = "#Width" Or Name = "#Height" If Coord Then DefaultValue = Null Endif If bDoNotApply Then DoNotApply = True Else DoNotApply = GetFlag($cRedirect, sClass, Name) Endif 'IF DoNotApply THEN PRINT "DoNotApply: "; sClass; "."; Name AlwaysRead = GetFlag($cAlwaysRead, sClass, Name) If hClass.MultiContainer Then Exclude = Name = "Text" Or Name = "Index" Or Name = "Picture" 'AlwaysRead = Name = "Text" OR Name = "Picture" Hidden = Name = "Index" Endif 'Translate = $cTranslate.Exist(Name) Or $cTranslate.Exist(sClass & "." & Name) Translate = GetFlag($cTranslate, sClass, Name) Shortcut = GetFlag($cShortcut, sClass, Name) UpdateName = GetFlag($cUpdateName, sClass, Name) Arrangement = GetFlag($cArrangement, sClass, Name) Virtual = bVirtual Return GET_KIND: ' {...:Arg} iPos = RInStr(sKind, ":") If iPos Then Argument = Mid$(sKind, iPos + 1) sKind = Left$(sKind, iPos - 1) Endif If sKind Then ' {Class.Alpha;Beta...} or {Class.*} iPos = InStr(sKind, ".") If iPos Then Type = "Constant" ConstantList = New Collection ConstantClass = Left(sKind, iPos - 1) sArg = Mid$(sKind, iPos + 1) If sArg = "*" Then For Each hSym In Documentation.Classes[ConstantClass].Symbols If hSym.Kind = "C" Then If Not hSym.IsHidden Then ConstantList["#" & CStr(hSym.Value)] = hSym.Name If Not sFirst Then sFirst = hSym.Name Endif Endif Next Else cList = Split(sArg, ";") For Each sList In cList hSym = Documentation.Classes[ConstantClass].Symbols[sList] ' Maybe the constant declared in the property don't really exist Try ConstantList["#" & CStr(hSym.Value)] = sList Next Endif ' if the default value is numeric, transform it into its symbol sList = ConstantList["#" & CStr(DefaultValue)] If sList Then DefaultValue = sList Return Else If InStr(sKind, ";") ConstantList = New Collection For Each sList In Split(sKind, ";") ConstantList[sList] = sList Next Return Endif Type = sKind Endif If Type = "i" Then If Name = "Background" Or Name = "Foreground" Or InStr(Name, "Color") > 0 Then Type = "Color" Endif Else If Type = "s" Then If InStr(Name, "Path") Then Type = "Path" Else If Name = "Menu" Then Type = "Menu" Endif Endif Return Catch Error "gambas3: "; sComponent; ": "; sClass; "."; sName; ": "; Error.Text Error Error.Backtrace.Join(" ") 'hSym = CComponent.Classes["System"].Symbols["Language"] Type = "s" DoNotApply = True DefaultValue = Null End Public Sub GetConstantList() As String[] Dim aList As New String[] Dim sConst As String For Each sConst In ConstantList aList.Add(sConst) Next Return aList End gambas-3.16.3/app/src/gambas3/.src/Component/CSymbolInfo.class000066400000000000000000001021251411575327000237520ustar00rootroot00000000000000' Gambas class file Static Public SpecialMethods As String[] = ["_attach", "_call", "_compare", "_get", "_init", "_new", "_next", "_property", "_put", "_unknown", "_exit", "_ready", "_read", "_write"] Static Private $cTypeName As New Collection Static Private $cNameType As New Collection(gb.IgnoreCase) Public Documentation As CDocumentation Public Name As String Public Type As String Public Kind As String Public Signature As String Public Value As String Public (Class) As String Public (Component) As String Public NotPublic As Boolean Public LineNumber As Integer Public Help As String Public IsHidden As Boolean Public IsEvent As Boolean Public IsStatic As Boolean Public IsProperty As Boolean Public IsFunction As Boolean Private $sArgBefore As String Private $sArgAfter As String Private $iArg As Integer Private $iShowArg As Integer Static Public Sub _init() Dim sType As String Dim sIcon As String Dim hImage As Image Dim iSize As Integer $cTypeName["b"] = "Boolean" $cTypeName["c"] = "Byte" $cTypeName["h"] = "Short" $cTypeName["i"] = "Integer" $cTypeName["l"] = "Long" $cTypeName["d"] = "Date" $cTypeName["g"] = "Single" $cTypeName["f"] = "Float" $cTypeName["v"] = "Variant" $cTypeName["s"] = "String" $cTypeName["o"] = "Object" $cTypeName["p"] = "Pointer" For Each sType In $cTypeName $cNameType[sType] = $cTypeName.Key Next iSize = Stock.GetSize("tiny") For Each sIcon In Dir("img/symbol", "*.png") hImage = Image.Load("img/symbol" &/ sIcon) If Application.DarkTheme Then hImage.Invert(True) hImage = hImage.Stretch(iSize, iSize) Picture["$symbol:" & File.BaseName(sIcon)] = hImage.Picture Next End Static Public Sub NameToType(sType As String) As String If $cNameType.Exist(sType) Then sType = $cNameType[sType] Return sType End Public Sub _new(hDoc As CDocumentation, sName As String, sKind As String) Documentation = hDoc Name = sName Kind = sKind IsHidden = _IsHidden() IsEvent = _IsEvent() IsStatic = _IsStatic() IsProperty = _IsProperty() IsFunction = _IsFunction() End Public Sub Copy(Optional sType As String, sNewType As String) As CSymbolInfo Dim hSym As New CSymbolInfo(Documentation, Name, Kind) With hSym If sType Then .Type = Replace(Type, sType, sNewType) .Signature = Replace(Signature, sType, sNewType) Else .Type = Type .Signature = Signature Endif .Value = Value .Class = Class .Component = Component .NotPublic = NotPublic .LineNumber = 0 End With Return hSym End Private Function _IsHidden() As Boolean If Left(Name) = "_" Then Return True Return InStr(Name, "_") > 0 And Kind <> "C" End Private Sub _IsEvent() As Boolean Return InStr(":eE", Kind) > 0 End Private Function _IsStatic() As Boolean If UCase(Kind) = Kind And If Kind <> ":" Then Return True End Private Sub _IsProperty() As Boolean Return InStr("rpRPv", Kind) > 0 End Private Sub _IsFunction() As Boolean Return InStr("mMx", Kind) > 0 End Public Function GetIcon() As String Dim bStatic As Boolean Dim sIcon As String bStatic = UCase(Kind) = Kind Select Case LCase(Kind) Case "r" sIcon = If(bStatic, "s-property-ro", "property-ro") Case "p" sIcon = If(bStatic, "s-property", "property") Case "v" sIcon = If(bStatic, "s-variable", "variable") Case "c" sIcon = "constant" Case ":" sIcon = "event" Case "t" sIcon = "control" Case "m", "x" If Name Begins "_" And If SpecialMethods.Exist(Name) Then sIcon = If(bStatic, "s-special", "special") Else sIcon = If(bStatic, "s-method", "method") Endif Default sIcon = "unknown" End Select Return "$symbol:" & sIcon End Private Sub NextArg() Inc $iArg If $iArg = $iShowArg Then $sArgBefore = "" $sArgAfter = "" Else $sArgBefore = "" $sArgAfter = "" Endif End ' Private Sub MakeArgBold(sCode As String, iShowArg As Integer) As String ' ' Dim sCar As String ' Dim iInd As Integer ' Dim aWait As New String[] ' Dim bString As Boolean ' Dim sSign As String ' Dim bOptional As Boolean ' ' If iShowArg < 0 Then Return sCode ' ' $iArg = -1 ' $iShowArg = iShowArg ' NextArg ' sSign = $sArgBefore ' ' Do ' ' Inc iInd ' If iInd > Len(sCode) Then Break ' ' sCar = Mid$(sCode, iInd, 1) ' ' If bString Then ' sSign &= sCar ' If sCar = "\\" Then ' Inc iInd ' If iInd > Len(sCode) Then Break ' sSign &= Mid$(sCode, iInd, 1) ' Endif ' Continue ' Endif ' ' If sCar = Chr$(34) Then ' sSign &= sCar ' bString = Not bString ' Continue ' Endif ' ' If sCar = "(" Then ' sSign &= sCar ' aWait.Push(")") ' Else If sCar = "[" Then ' sSign &= sCar ' aWait.Push("]") ' Else If aWait.Count Then ' sSign &= sCar ' If sCar = aWait[aWait.Max] Then ' aWait.Pop ' Endif ' Else If Mid$(sCode, iInd, 9) = "OPTIONAL " Then ' iInd += 7 ' If Not bOptional Then ' sSign &= " [" ' Endif ' bOptional = True ' Else If Mid$(sCode, iInd, 2) = ", " Then ' sSign &= $sArgAfter ' If Mid$(sCode, iInd, 11) = ", OPTIONAL " Then ' If Not bOptional Then ' sSign &= " [" ' bOptional = True ' Endif ' iInd += 9 ' Endif ' sSign &= ", " ' NextArg ' sSign &= $sArgBefore ' Else If Mid$(sCode, iInd, 3) = "..." Then ' If $iShowArg > $iArg Then ' sSign &= "..." ' Else ' sSign &= "..." ' Endif ' iInd += 2 ' Else ' sSign &= sCar ' Endif ' ' Loop ' ' If bOptional Then ' sSign &= $sArgAfter & " ]" ' Else ' sSign &= $sArgAfter ' Endif ' ' Return sSign ' ' End Private Sub MakeSignature(sSign As String) As String Dim aSym As String[] Dim iInd As Integer Dim aWait As New String[] Dim bOptional As Boolean Dim sSym As String Dim sType As String Dim sDefault As String Dim bByRef As Boolean Dim iPos, iPos2 As Integer Dim sResult As String Highlight.Analyze(sSign) aSym = Highlight.Symbols Do If iInd > aSym.Max Then Break sSym = aSym[iInd] If sSym = "..." Then sResult &= "." Break Endif If UCase(sSym) = "OPTIONAL" Then If Not bOptional Then sResult &= "[" bOptional = True Endif Inc iInd sSym = aSym[iInd] Endif bByRef = False If UCase(sSym) = "BYREF" Then bByRef = True Inc iInd sSym = aSym[iInd] Endif If sSym = "(" And If aSym[iInd + 2] = ")" Then sSym = aSym[iInd + 1] iInd += 2 Endif If bByRef Then sSym = "&" & sSym Inc iInd If aSym[iInd] <> "AS" Then Break Inc iInd sType = aSym[iInd] If $cNameType.Exist(sType) Then sType = $cNameType[sType] Else sType = UCase(Left(sType)) & Mid$(sType, 2) & ";" Endif sResult &= "(" & sSym & ")" & sType If bOptional And If iInd < aSym.Max Then If aSym[iInd + 1] = "=" Then iInd += 2 sDefault = "" iPos = Highlight.Positions[iInd] While iInd <= aSym.Max sSym = aSym[iInd] If sSym = "(" Then aWait.Push(")") Else If sSym = "[" Then aWait.Push("]") Else If aWait.Count Then If sSym = aWait[aWait.Max] Then aWait.Pop Endif Else If sSym = ")" Or If sSym = "," Then iPos2 = Highlight.Positions[iInd] sDefault = Trim(Mid$(sSign, iPos + 1, iPos2 - iPos)) Dec iInd Break Else If iInd = aSym.Max Then sDefault = Trim(Mid$(sSign, iPos + 1)) Break Endif Endif Inc iInd Wend sResult &= "=" & sDefault & "\t" Endif Endif Inc iInd If iInd > aSym.Max Then Break sSym = aSym[iInd] If sSym <> "," Then Break Inc iInd Loop If bOptional Then sResult &= "]" Return sResult Catch End Public Function GetNativeSignature() As String If Left(Signature) = "#" Then Return MakeSignature(Mid$(Signature, 2)) Return Signature End Private Sub SplitSignature(sSign As String) As String[] Dim iPos As Integer Dim aSign As New String[2] iPos = InStr(sSign, "[") If iPos Then aSign[0] = Left(sSign, iPos - 1) aSign[1] = Mid$(sSign, iPos + 1, -1) Else aSign[0] = sSign Endif Return aSign End Private Sub MergeSignature(sSign As String, sParentSign As String) As String Dim aParentSign As String[] Dim aSign As String[] aSign = SplitSignature(sSign) aParentSign = SplitSignature(sParentSign) sSign = aParentSign[0] & aSign[0] & "[" & aParentSign[1] & aSign[1] & "]" If sSign Ends "[]" Then sSign = Left(sSign, -2) Return sSign End Public Function GetSignature(bBalise As Boolean, Optional iShowArg As Integer = -1) As String Dim iInd As Integer Dim sRes As String Dim sCar As String Dim iPos As Integer Dim bName As Boolean Dim bFirst As Boolean Dim sSign As String Dim sKeywordAs As String Dim sKeywordByRef As String Dim sSym As String Dim hClass As CClassInfo Dim hSym As CSymbolInfo sKeywordAs = If(Settings["/Editor/KeywordsUseUpperCase"], "AS", "As") sKeywordByref = If(Settings["/Editor/KeywordsUseUpperCase"], "BYREF", "ByRef") sSign = GetNativeSignature() If Name = "_new" Then hClass = Documentation.GetClassDescription({Component} &/ {Class}) Do If Not hClass.Parent Then Break 'If hClass.ParentComponent = hClass.Component Then Break hClass = Documentation.GetClassDescription(hClass.ParentComponent &/ hClass.Parent) 'hClass = CComponent.Classes[hClass.ParentComponent &/ hClass.Parent] hSym = hClass.Symbols["_new"] If hSym Then If hSym.Class = hClass.Name Then sSign = MergeSignature(sSign, hClass.Symbols["_new"].GetNativeSignature()) Endif Endif Loop Endif bFirst = True $iArg = -1 $iShowArg = iShowArg Do Inc iInd If iInd > Len(sSign) Then Break sCar = Mid$(sSign, iInd, 1) If sCar = "'" Or sCar = "(" Then If sCar = "'" Then iPos = InStr(sSign, "'", iInd + 1) Else iPos = InStr(sSign, ")", iInd + 1) Endif If iPos = 0 Then Break GoSub ADD_COMMA sSym = Mid$(sSign, iInd + 1, iPos - iInd - 1) sRes &= $sArgBefore If Left(sSym) = "&" Then sSym = Mid$(sSym, 2) sRes &= sKeywordByRef & " " Endif sRes &= sSym iInd = iPos bName = True Continue Endif If sCar = "<" Then iPos = InStr(sSign, ">", iInd + 1) If iPos = 0 Then Break iInd = iPos Continue Endif If sCar = "[" Then sRes &= $sArgAfter If bBalise Then sRes &= "" Else GoSub ADD_COMMA sRes &= "[" bFirst = True Endif $sArgAfter = "" Continue Endif If sCar = "]" Then sRes &= $sArgAfter If bBalise Then sRes &= "" Else sRes &= "]" Endif $sArgAfter = "" Continue Endif If sCar = "=" Then iPos = InStr(sSign, "\t", iInd + 1) If iPos = 0 Then Break $sArgAfter &= " = " & Mid$(sSign, iInd + 1, iPos - iInd - 1) iInd = iPos Continue Endif If sCar = "." Then GoSub ADD_COMMA 'NextArg If bBalise And If $iShowArg >= 0 And If $iShowArg > $iArg Then sRes &= "" sRes &= $sArgBefore & "..." If bBalise And If $iShowArg >= 0 And If $iShowArg > $iArg Then sRes &= "" Continue Endif If Not bName Then GoSub ADD_COMMA sRes &= $sArgBefore & "?" bName = False Endif If (sCar >= "A" And sCar <= "Z") Or sCar = "." Then iPos = InStr(sSign, ";", iInd) If iPos = 0 Then iPos = Len(sSign) + 1 sRes &= " " & sKeywordAs & " " & Mid$(sSign, iInd, iPos - iInd) iInd = iPos Continue Endif If sCar <> "?" Then sRes &= " " & sKeywordAs & " " & GetType(sCar) Loop sRes &= $sArgAfter If Name = "_get" Or Name = "_put" Then sRes = If(bBalise, "[", "[") & sRes & If(bBalise, "]", "]") Else sRes = If(bBalise, "(", "(") & sRes & If(bBalise, ")", ")") Endif If Type Then sRes &= " " & sKeywordAs & " " & GetType(Type) Return sRes ADD_COMMA: If bFirst Then bFirst = False Else sRes &= $sArgAfter & ", " Endif NextArg Return End Public Function GetDescription(Optional bBalise As Boolean) As String Dim bStatic As Boolean Dim sAccess As String Dim sStatic As String Dim sDesc As String Dim sSign As String bStatic = UCase(Kind) = Kind sStatic = If(bStatic, "Static ", "") sAccess = If(NotPublic, "Private ", "Public ") Select LCase(Kind) Case "r" sDesc = sStatic & "Property Read" Case "p" sDesc = sStatic & "Property" 'CASE "v" ' sIcon = "img/16" &/ If(bStatic, "s-variable.png", "variable.png") Case "c" sDesc = sAccess & "Const" Case ":" sDesc = "Event" 'CASE "t" ' sIcon = "img/16/control.png" Case "m" sDesc = sStatic & sAccess & " " & If(Type, "Function", "Sub") Case "v" sDesc = sStatic & sAccess Case "l" sDesc = "Dim" Case "x" sDesc = sAccess & " Extern" End Select If Settings["/Editor/KeywordsUseUpperCase"] Then sDesc = UCase(sDesc) If Kind = ":" Then sDesc &= " " & Mid$(Name, 2) & " " Else sDesc &= " " & Name & " " Endif If InStr(":mx", LCase(Kind)) Then sSign = GetSignature(bBalise) If sSign Then sDesc &= sSign Else sDesc &= "(...)" Endif Else If Type Then sDesc &= " " & If(Settings["/Editor/KeywordsUseUpperCase"], "AS", "As") & " " & GetType(Type, bBalise) Endif Return sDesc End Static Public Function GetType(sType As String, Optional bBalise As Boolean) As String If Len(sType) = 1 Then sType = $cTypeName[sType] Else If Left$(sType) = "." Then 'IF bBalise THEN ' sType = "" & Mid$(sType, 2) & "" 'ELSE sType = "Object" 'ENDIF Endif If bBalise Then Return "" & sType & "" Else Return sType Endif End Static Public Function TransformSignature(sSign As String, bBalise As Boolean) As String Dim iInd As Integer Dim sRes As String Dim sCar As String Dim iPos As Integer Dim bName As Boolean Dim bFirst As Boolean Dim sBold As String Dim sNoBold As String Dim sName As String If bBalise Then sBold = "" sNoBold = "" Endif bFirst = True Do iInd = iInd + 1 If iInd > Len(sSign) Then Break sCar = Mid$(sSign, iInd, 1) If sCar = "'" Or sCar = "(" Then If sCar = "'" Then iPos = InStr(sSign, "'", iInd + 1) Else iPos = InStr(sSign, ")", iInd + 1) Endif If iPos = 0 Then Break If bFirst Then bFirst = False Else sRes = sRes & sBold & "," & sNoBold & " " Endif sName = Mid$(sSign, iInd + 1, iPos - iInd - 1) If sName Begins "&" Then sRes &= sBold & "BYREF" & sNoBold & " " sName = Mid$(sName, 2) Endif sRes &= sName & " " & sBold & "AS" & sNoBold & " " iInd = iPos bName = True Continue Endif If sCar = "<" Then iPos = InStr(sSign, ">", iInd + 1) If iPos = 0 Then Break iInd = iPos Continue Endif If sCar = "[" Then sRes = sRes & " " & sBold & "[" & sNoBold Continue Endif If sCar = "]" Then sRes = sRes & " " & sBold & "] " & sNoBold Continue Endif If Not bName Then If bFirst Then bFirst = False Else sRes = sRes & sBold & "," & sNoBold & " " Endif sRes = sRes & sBold & "? AS " & sNoBold bName = False Endif If sCar >= "A" And sCar <= "Z" Then iPos = InStr(sSign, ";", iInd) If iPos = 0 Then iPos = Len(sSign) + 1 sRes = sRes & Mid$(sSign, iInd, iPos - iInd) iInd = iPos Continue Endif sRes = sRes & GetType(sCar, bBalise) Loop Return sRes End Public Function GetHelpURL(Optional bShowFile As Boolean) As String Dim sPath As String Dim sName As String Dim sComp As String Dim hComp As CComponent If Component = "gb" And If Class = "." Then Return MHelp.GetLangURL(Name) Endif If Component And If Component <> CComponent.PROJECT_NAME Then hComp = Documentation[Component] If hComp Then If hComp.Library Or If hComp.ThirdParty Then Return Subst("gambas://library/&1/&2/&3", Component, Class, Name) Else sPath = MHelp.GetURL("comp") sComp = MHelp.ActualComponent(Component) sPath &/= LCase(sComp) ' We keep the class case for custom object arrays If Class Ends "[]" And If Not hComp[Class] Then sPath &/= Class Else sPath &/= LCase(Class) 'Left(Class) & Replace(Mid(Class, 2), "_", ".")) Endif sName = LCase(Name) 'sName = Left(sName) & Replace(Mid$(sName, 2), "_", ".") sName = Replace(sName, ":", ".") sPath &/= sName Return sPath & "?v&nh&l=" & MHelp.GetLanguage() Endif Else Return Subst("gambas://project/&1/&2#&3&4", Class, Name, LineNumber, If(bShowFile, "?showfile", "")) Endif End '' Transform one line of help into HTML by decoding some sort of light wiki syntax. '' '' - #sLine# is the line of help text. '' '' The HTML is returned. ' Private Sub DecodeHelpLine(sLine As String) As String ' ' Dim iPos As Integer ' Dim iLen As Integer = String.Len(sLine) ' Dim sChar As String ' Dim sHtml As String ' Dim sWait As String ' Dim bBold, bItalic, bMonospace, bUnderline As Boolean ' Dim iSavePos As Integer ' Dim sLink As String ' Dim iPoint As Integer ' Dim hClass As CClassInfo ' Dim hSymbol As CSymbolInfo ' Dim sHtmlAfter As String ' ' sLine = RTrim(sLine) ' If Not sLine Then Return "

" ' If sLine = "--" Then Return "


" ' ' If sLine Begins "-" Then ' sHtml = "
  • " ' sHtmlAfter = "
  • " ' sLine = Mid$(sLine, 2) ' Else If sLine Begins "+" Then ' iPoint = 2 ' While Left(sLine) = "+" ' sLine = Mid$(sLine, 2) ' Inc iPoint ' Wend ' sHtml = "" ' sHtmlAfter &= "" ' Endif ' ' Do ' ' Inc iPos ' If iPos > iLen Then Break ' ' sChar = String.Mid(sLine, iPos, 1) ' ' If sWait = ">" Then ' sHtml &= sChar ' If sChar = ">" Then sWait = "" ' Continue ' Else If sWait = "]" Then ' If sChar <> "]" Then Continue ' sWait = "" ' sLink = String.Mid$(sLine, iSavePos, iPos - iSavePos) ' sChar = sLink ' If sLink Like "*://*" Then ' Else ' iPoint = InStr(sLink, "|") ' If iPoint Then ' sChar = Mid$(sLink, iPoint + 1) ' sLink = Left(sLink, iPoint - 1) ' Endif ' iPoint = RInStr(sLink, ".") ' If iPoint = 0 Then ' If UCase(sLink) = sLink Then ' sLink = MHelp.GetLangURL(sLink) ' Else ' hClass = Null ' Try hClass = CComponent.Classes[sLink] ' If hClass Then ' sLink = hClass.GetHelpURL() ' Else ' sLink = "" ' Endif ' Endif ' Else ' hSymbol = Null ' Try hSymbol = CComponent.Classes[Trim(Left(sLink, iPoint - 1))].Symbols[Trim(Mid$(sLink, iPoint + 1))] ' If hSymbol Then ' sLink = hSymbol.GetHelpURL() ' Else ' sLink = "" ' Endif ' Endif ' Endif ' If sLink Then ' sHtml &= "" & Html(sChar) & "" ' Else ' sHtml &= "" & Html(sChar) & "?" ' Endif ' Continue ' Endif ' ' If sChar = "\\" Then ' sHtml &= Html(String.Mid$(sLine, iPos + 1, 1)) ' Inc iPos ' Else If sChar = "<" Then ' sHtml &= sChar ' sWait = ">" ' Else If sChar = "*" Then ' bBold = Not bBold ' sHtml &= If(bBold, "", "") ' Else If sChar = "=" Then ' bMonospace = Not bMonospace ' sHtml &= If(bMonospace, "", "") ' Else If sChar = "'" Then ' bItalic = Not bItalic ' sHtml &= If(bItalic, "", "") ' Else If sChar = "#" Then ' bUnderline = Not bUnderline ' sHtml &= If(bUnderline, "", "") ' Else If sChar = "[" Then ' sWait = "]" ' iSavePos = iPos + 1 ' Else ' sHtml &= Html(sChar) ' Endif ' ' Loop ' ' sHtml &= sHtmlAfter ' Return sHtml ' ' End Public Sub GetHelpMarkup() As String Dim sPath As String Dim hClass As CClassInfo Dim hForm As Object Dim hEdit As TextEditor Dim iLine As Integer If Help Then Return Help Endif If Component Then Return sPath = Project.FindPath({Class}) If Not sPath Then hClass = Documentation.Classes[{Class}] If hClass And If hClass.DeclareIn Then sPath = Project.FindPath(hClass.DeclareIn) Endif Endif If Not sPath Then Return hForm = Project.LoadFile(sPath) Try hEdit = hForm.GetEditor() If Not hEdit Then Return iLine = Me.LineNumber - 1 If iLine < 0 Then Return Return MHelp.FindMarkup(hEdit, iLine) End Private Sub KeywordCase(sKeyword As String) As String If Settings["/Editor/KeywordsUseUpperCase"] Then Return UCase(sKeyword) Else Return sKeyword Endif End Public Function GetHelpHTML() As String Dim sHTML, sHelp As String Dim I As Integer Dim sSyntax As String Dim sMarkup As String Dim sTitle As String Dim sSym As String Dim bArg As Boolean sMarkup = GetHelpMarkup() If sMarkup Then Try sHelp = Markdown.ToHTML(sMarkup) If Error Then sHelp = "" & Error.Text & "" Endif sHTML = MHelp.LoadCustom("symbol-help.html") sHTML = Replace(sHTML, "$(hide-title)", "") sHTML = Replace(sHTML, "$(class)", {Class}) sHTML = Replace(sHTML, "$(name)", Name) 'If Me.IsStatic() Then sHTML &= "STATIC " sSyntax &= Me.GetDescription(False) ' sSyntax = Replace(Replace(sSyntax, "
    ", ""), "", "") ' Highlight.Analyze(sSyntax, True) sSyntax = "" For I = 0 To Highlight.Symbols.Max sSym = Highlight.Symbols[I] If sSym = "[" Or If sSym = "]" Then sSyntax = RTrim(sSyntax) & " " & sSym & " " Continue Else If sSym = "," Then sSyntax = RTrim(sSyntax) & sSym & " " Continue Endif Select Case Highlight.Types[I] Case Highlight.Symbol If bArg Then sSyntax &= "" & sSym & " " Else sSyntax &= "" & sSym & " " bArg = True Endif Case Highlight.Operator sSyntax &= "" & Highlight.Symbols[I] & " " Case Highlight.DataType sSyntax &= "" & sSym & " " Case Highlight.Keyword sSyntax &= "" & KeywordCase(sSym) & " " Case Else sSyntax &= sSym End Select Next sHTML = Replace(sHTML, "$(syntax)", sSyntax) sHTML = Replace(sHTML, "$(help)", sHelp) If Not Component Or If Component = CComponent.PROJECT_NAME Then sTitle = "" sTitle &= {Class} & "." & Name If Not Component Or If Component = CComponent.PROJECT_NAME Then sTitle &= "" sHTML = Replace(sHTML, "$(title)", sTitle) Return sHTML End Private Sub GetVirtualClass(sClass As String) As String Dim iPos As Integer Dim sVirtual As String If InStr("._", Left(sClass)) > 0 Then sClass = Mid$(sClass, 2) iPos = RInStr(Replace(sClass, "_", "."), ".") If iPos Then sVirtual = Left(sClass, iPos - 1) Endif Endif Return sVirtual End Private Function GetClassVariableName(sClass As String) As String Dim sRes As String If Len(sClass) = 1 Then sClass = $cTypeName[sClass] If InStr("aeiou", LCase(Left$(sClass))) Then sRes = "an" & sClass Else sRes = "a" & sClass Endif Else sClass = Replace(sClass, "[]", "Array") If Left$(sClass) = "." Then sClass = Mid$(sClass, 2) Else If Left(sClass) = "_" Then sClass = Replace(Mid$(sClass, 2), "_", ".") Endif sRes = "h" & sClass Endif Return sRes End Private Function Keyword(sWord As String, Optional iColor As Integer) As String If iColor Then Return "" & sWord & "" Else Return "" & sWord & "" Endif End Private Function GetSymbolName(sName As String) As String 'sName = Replace(sName, "_", "") sName = Replace(sName, ":", "") 'sName = Replace(sName, "$", "") Return sName End Private Function GetSyntaxType(sType As String) As String If Len(sType) = 1 Then sType = $cTypeName[sType] Else If Right$(sType) = ";" Then sType = Left$(sType, -1) sType = Wiki.GetClassLinkFromName(sType) 'sType = "" & sType & "" Endif Return Keyword(sType, &H0080FF&) End Private Function GetSyntaxSignature() As String Dim sSign As String = Signature Dim iInd As Integer Dim sRes As String Dim sCar As String Dim iPos As Integer Dim bName As Boolean Dim bFirst As Boolean Dim iLen As Integer bFirst = True Do iInd = iInd + 1 If iInd > Len(sSign) Then Break sCar = Mid$(sSign, iInd, 1) If sCar = "'" Or sCar = "(" Then If sCar = "'" Then iPos = InStr(sSign, "'", iInd + 1) Else iPos = InStr(sSign, ")", iInd + 1) Endif If iPos = 0 Then Break If bFirst Then bFirst = False Else sRes = sRes & Keyword(",") & " " Endif sRes = sRes & "" & Mid$(sSign, iInd + 1, iPos - iInd - 1) & " " & Keyword("As") & " " iInd = iPos bName = True Continue Endif If sCar = "<" Then iPos = InStr(sSign, ">", iInd + 1) If iPos = 0 Then Break iInd = iPos Continue Endif If sCar = "[" Then sRes = RTrim(sRes) & " \\[ " Continue Endif If sCar = "]" Then sRes = RTrim(sRes) & " ]" Continue Endif If Not bName Then If bFirst Then bFirst = False Else sRes = sRes & ", " Endif sRes = sRes & "? " & Keyword("As") & " " bName = False Endif If sCar = "." Then sRes = sRes & ", ..." Continue Endif If sCar >= "A" And sCar <= "Z" Then iPos = InStr(sSign, ";", iInd) If iPos = 0 Then iPos = Len(sSign) + 1 sRes = sRes & GetSyntaxType(Mid$(sSign, iInd, iPos - iInd)) iInd = iPos Continue Endif sRes = sRes & GetSyntaxType(sCar) Loop 'sRes = "( " & sRes & " )" sRes = " " & sRes & " " Do iLen = Len(sRes) sRes = Replace(sRes, " ", " ") If Len(sRes) = iLen Then Break Loop Return sRes End Public Sub WikiGetSyntax() As String[] Dim sSyntax As String Dim sName As String Dim sVar As String Dim sVirtual As String Dim sValue As String Dim iPos As Integer Dim sSign As String Dim sType As String Dim aResult As String[] Dim iValue As Integer Dim sKeyword As String sName = Class sVirtual = GetVirtualClass(sName) Select Case LCase(Name) Case "_get" If IsStatic Then sName = Class If sVirtual Then sName = Mid$(sName, 2) Else sName = GetClassVariableName(Class) If sVirtual Then sVar = GetClassVariableName(sVirtual) sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(sVirtual) & "\n" Else sVar = sName sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" Endif Endif sValue = Replace(GetClassVariableName(Type), ".", "") If sValue = sVar Then sValue &= "2" sSyntax &= Keyword("Dim") & " " & sValue & " " & Keyword("As") & " " & GetSyntaxType(Type) & "\n" sSyntax &= sValue & " " & Keyword("=") & " " sSyntax &= sName & " " & Keyword("\\[") & GetSyntaxSignature() & Keyword("]") Case "_put" sType = Documentation[Component][Class].Symbols["_get"].Type If IsStatic Then sName = Class If sVirtual Then sName = Mid$(sName, 2) Else sName = GetClassVariableName(Class) If sVirtual Then sVar = GetClassVariableName(sVirtual) sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(sVirtual) & "\n" Else sVar = sName sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" Endif Endif sValue = Replace(GetClassVariableName(sType), ".", "") If sValue = sVar Then sValue &= "2" sSyntax = sSyntax & Keyword("Dim") & " " & sValue & " " & Keyword("As") & " " & GetSyntaxType(sType) & "\n" sSign = GetSyntaxSignature() sKeyword = Keyword(",") iPos = InStr(sSign, sKeyword) If iPos Then sSign = Mid$(sSign, iPos + Len(sKeyword)) sSyntax = sSyntax & sName & " " & Keyword("\\[") & sSign & Keyword("]") sSyntax = sSyntax & " " & Keyword("=") & " " & sValue Case "_next" If IsStatic Then sName = Class If sVirtual Then sName = Mid$(sName, 2) Else sName = GetClassVariableName(Class) If sVirtual Then sVar = GetClassVariableName(sVirtual) sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(sVirtual) & "\n" Else sVar = sName sSyntax = sSyntax & Keyword("Dim") & " " & sVar & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" Endif Endif If Type Then sValue = Replace(GetClassVariableName(Type), ".", "") If sValue = sVar Then sValue &= "2" sSyntax = sSyntax & Keyword("Dim") & " " & sValue & " " & Keyword("As") & " " & GetSyntaxType(Type) & "\n" sSyntax = sSyntax & Keyword("For Each") & " " & sValue & " " & Keyword("In") & " " & sName Else sSyntax = sSyntax & Keyword("For Each") & " " & sName Endif sSyntax &= "
      ...
    " & Keyword("Next") Case "_new" sName = GetClassVariableName(Class) sSyntax &= Keyword("Dim") & " " & sName & " " & Keyword("As") & " " & GetSyntaxType(Class) & "\n" sSyntax &= sName & " " & Keyword("=") & " " & Keyword("New") & " " & GetSyntaxType(Class) sSyntax &= " " & Keyword("(") & GetSyntaxSignature() & Keyword(")") If Documentation.Get(Component)[Class].HasEvents Then sSyntax &= " [ " & Keyword("As") & " \"event name\" ]" Endif Case Else If IsStatic And Kind <> "C" Then sSyntax = Keyword("Static") & " " Endif Select Case LCase(Kind) Case "p", "v" sSyntax = sSyntax & Keyword("Property") & " " Case "r" sSyntax = sSyntax & Keyword("Property Read") & " " Case "c" sSyntax = sSyntax & Keyword("Const") & " " Case ":" sSyntax = sSyntax & Keyword("Event") & " " Case "m" If Type Then sSyntax = sSyntax & Keyword("Function") & " " Else sSyntax = sSyntax & Keyword("Sub") & " " Endif End Select If Name = "_call" Then If sVirtual Then sSyntax &= "" & Replace(Mid$(Class, 2), "_", ".") & "" Else sSyntax &= "" & GetSymbolName(Class) & "" Endif Else sSyntax &= "" & GetSymbolName(Name) & "" Endif If InStr(":me", LCase(Kind)) Then sSyntax = sSyntax & " " & Keyword("(") & GetSyntaxSignature() & Keyword(")") Endif If Type Then sSyntax = sSyntax & " " & Keyword("As") & " " & GetSyntaxType(Type) If Kind = "C" Then sSyntax = sSyntax & " " & Keyword("=") & " " Select Case Type Case "s" sSyntax = sSyntax & Keyword(Chr$(34)) & Value & Keyword(Chr$(34)) Case "b" If Left(Value) = "T" Then sSyntax &= Keyword("True") Else sSyntax &= Keyword("False") Endif Case "i" sSyntax = sSyntax & Keyword(Value, &HFF0000&) iValue = CInt(Value) If iValue > 10 Then If iValue >= &H8000& And If iValue <= &HFFFF& Then sSyntax &= " " & Keyword("\\' &H" & Hex$(CInt(Value)) & "&", &H808080&) Else sSyntax &= " " & Keyword("\\' &H" & Hex$(CInt(Value)), &H808080&) Endif Endif Case Else sSyntax = sSyntax & Value End Select Endif End Select aResult = ["[[ syntax"] aResult.Insert(Split(Replace(sSyntax, "\n", "\\\n"), "\n")) aResult.Add("]]") Return aResult End gambas-3.16.3/app/src/gambas3/.src/Connection/000077500000000000000000000000001411575327000206735ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Connection/FExportData.class000066400000000000000000000060761411575327000241140ustar00rootroot00000000000000' Gambas class file Private $hData As DataSource Private $hView As DataView Private $sDelim As String Private $sEscape As String Public Sub Run(hData As DataSource, hView As DataView) As Boolean $hData = hData $hView = hView Return Not Me.ShowModal() End Public Sub Form_Open() Settings.Read(Me) Settings.Read(fchExport, "fchExport") fchExport.Filter = ["*.csv", ("CSV files")] fchExport.SelectedPath = Project.Config["/FExportData/Path"] fchExport.SetFocus cmbDelim.Text = Project.Config["/FExportData/Delim", ","] cmbEscape.Text = Project.Config["/FExportData/Escape", Chr$(34)] chkSelection.Value = Project.Config["/FExportData/Selection", False] chkName.Value = Project.Config["/FExportData/FieldNames", True] panOption.Reparent(fchExport.Extension) End Public Sub Form_Close() Settings.Write(fchExport, "fchExport") Settings.Write(Me) End Private Sub PrintLine(hFile As File, aData As String[]) Dim iInd As Integer For iInd = 0 To aData.Max If iInd Then Print #hFile, $sDelim; If $sEscape Then Print #hFile, $sEscape; Replace(aData[iInd], $sEscape, $sEscape & $sEscape); $sEscape; Else Print #hFile, aData[iInd]; Endif Next Print #hFile End Private Sub DoExport(sPath As String) Dim hWaiting As CWaitingAnimation Dim iInd, iField As Integer Dim hFile As File Dim aField As String[] Dim aValue As String[] Dim bSelect As Boolean = chkSelection.Value hWaiting = New CWaitingAnimation(Me) aField = $hView.Columns aValue = New String[aField.Count] If cmbDelim.Text = cmbDelim[0].Text Then $sDelim = Chr$(9) Else If cmbDelim.Text = cmbDelim[1].Text Then $sDelim = " " Else $sDelim = Trim(cmbDelim.Text) Endif $sEscape = Trim(cmbEscape.Text) hFile = Open sPath For Create If chkName.Value Then PrintLine(hFile, aField) For iInd = 0 To $hData.Count - 1 If bSelect Then If Not $hView.View.Rows[iInd].Selected Then Continue Endif $hData.MoveTo(iInd) hWaiting.SetValue(iInd / $hData.Count) For iField = 0 To aField.Max aValue[iField] = Str($hData[aField[iField]]) Next PrintLine(hFile, aValue) Wait Next hWaiting.SetValue(1) hFile.Close Finally hWaiting.Stop Catch Message.Error("" & ("Unable to export data.") & "\n\n" & Error.Text) End Public Sub fchExport_Activate() Dim sPath As String = fchExport.SelectedPath If Not sPath Then Return If File.Ext(sPath) = "" Then sPath = File.SetExt(sPath, "csv") If Exist(sPath) Then If Message.Warning(("This file already exists.\n\nDo you want to overwrite it?"), ("&Overwrite"), ("Cancel")) = 2 Then Return Endif DoExport(sPath) Project.Config["/FExportData/FieldNames"] = CBool(chkName.Value) Project.Config["/FExportData/Selection"] = CBool(chkSelection.Value) Project.Config["/FExportData/Path"] = fchExport.SelectedPath Project.Config["/FExportData/Delim"] = cmbDelim.Text Project.Config["/FExportData/Escape"] = cmbEscape.Text Me.Close(True) End Public Sub fchExport_Cancel() Me.Close End gambas-3.16.3/app/src/gambas3/.src/Connection/FExportData.form000066400000000000000000000017531411575327000237470ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,83,64) Text = ("Export to CSV file") Arrangement = Arrange.Fill Spacing = True Margin = True { fchExport FileChooser MoveScaled(2,2,74,38) ShowButton = True } { panOption HPanel MoveScaled(2,42,75,19) Spacing = True { Label2 Label MoveScaled(0,0,28,3) Text = ("Delimiter character") } { cmbDelim ComboBox MoveScaled(29,0,31,4) #Translate = False Expand = True List = ["Tab", "Space", ",", ";", ":"] } { Label3 Label MoveScaled(0,5,28,3) Text = ("Enclose character") } { cmbEscape ComboBox MoveScaled(29,5,31,4) #Translate = False Expand = True List = ["", "'", "\""] } { chkName CheckBox MoveScaled(0,10,38,4) Expand = True Text = ("Export field names") } { chkSelection CheckBox MoveScaled(0,14,40,4) Expand = True Text = ("Export selected records only") } } } gambas-3.16.3/app/src/gambas3/.src/Connection/FImportTable.class000066400000000000000000000251671411575327000242650ustar00rootroot00000000000000' Gambas class file Static Public Table As String Static Private $sPath As String Static Private $hConn As Connection Static Private $aTable As String[] Private $sDelim As String Private $sEscape As String Private $sCharset As String Private $iEndOfLine As Integer Private $bStrip As Boolean Private $iIgnore As Integer Private $iLine As Integer Private $bImport As Boolean Private $bCancel As Boolean 'Private Const REMOVE_ACC As String = "ÀÁÂÃÄÅàáâãäå[a]Ææ[ae]Çç[c]ÈÉÊËèéêë[e]ÌÍÎÏìíîï[i]Ññ[n]ÒÓÔÕÖòóôõö[o]ÙÚÛÜùúûü[u]Ýýÿ[y]ß[ss]°[]" Static Public Function Run(hConn As Connection, aTable As String[]) As Boolean $hConn = hConn $aTable = aTable Table = "" Return Not FImportTable.ShowModal() End Public Sub wizImport_Close() Project.Config["/FImportTable/Path"] = fchImport.SelectedPath Project.Config["/FImportTable/Charset"] = cmbCharset.Text Project.Config["/FImportTable/EndOfLine"] = cmbEndOfLine.Text Project.Config["/FImportTable/Delim"] = cmbDelim.Text Project.Config["/FImportTable/Escape"] = cmbEscape.Text Project.Config["/FImportTable/StripSpace"] = CBool(chkStrip.Value) Project.Config["/FImportTable/Ignore"] = txtIgnore.Value DoImport End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Settings.Read(Me) Settings.Read(fchImport, "fchImport") spnImport.Stop fchImport.Filter = ["*.csv", ("CSV files"), "*", ("All files")] fchImport.SelectedPath = Project.Config["/FImportTable/Path", User.home] cmbTable.List = $aTable txtPreview.Font = Font[Settings["/Editor/Font", Project.DEFAULT_FONT]] gvwMessage.Columns.Count = 2 gvwMessage.Columns[0].Text = ("Line") gvwMessage.Columns[0].Width = Desktop.Scale * 6 gvwMessage.Columns[1].Text = ("Message") End Public Sub chkFirstLine_Click() cmbKey.Enabled = chkFirstLine.Value UpdateKey End Private Sub UpdateDelim() If cmbDelim.Text = cmbDelim[0].Text Then $sDelim = Chr$(9) Else If cmbDelim.Text = cmbDelim[1].Text Then $sDelim = " " Else $sDelim = cmbDelim.Text Endif $sEscape = cmbEscape.Text $sCharset = cmbCharset.Text $iEndOfLine = Choose(cmbEndOfLine.Index + 1, gb.Unix, gb.Windows, gb.Mac) $bStrip = chkStrip.Value $iIgnore = txtIgnore.Value End Private Function Analyze(sLig As String, Optional sCharset As String = Desktop.Charset) As String[] Try sLig = Conv(sLig, $sCharset, sCharset) Return Split(sLig, $sDelim, $sEscape) End Private Sub UpdateKey() Dim hFile As File Dim sLig As String Dim aData As String[] Dim iLine As Integer Dim sData As String If wizImport.Index < 1 Then Return UpdateDelim hFile = Open $sPath sData = Read #hFile, -65536 If Not Eof(hFile) Then sData &= "..." Close #hFile txtPreview.Text = Conv(sData, $sCharset, "UTF-8") txtPreview.Pos = 0 If cmbKey.Enabled Then hFile = Open $sPath For Input hFile.EndOfLine = $iEndOfLine While Not Eof(hFile) sLig = hFile.ReadLine($sEscape) Inc iLine If iLine > $iIgnore Then Break Wend If Not Eof(hFile) Then aData = [("(Automatic key)")] aData.Insert(MakeFields(Analyze(sLig))) cmbKey.List = aData Endif Close #hFile Endif Catch Debug Error.Where; ":";; Error.Text Try Close #hFile End Public Sub cmbDelim_Click() UpdateKey End Public Sub cmbCharset_Click() UpdateKey End Public Sub cmbCharset_Activate() UpdateKey End Public Sub cmbEndOfLine_Click() UpdateKey End Private Sub DoMessage(sMsg As String, Optional bNoLine As Boolean) Dim iRow As Integer = gvwMessage.Rows.Count gvwMessage.Rows.Count = iRow + 1 If Not bNoLine Then gvwMessage[iRow, 0].Text = CStr($iLine) If sMsg Begins "** " Then gvwMessage[iRow, 1].Text = Mid$(sMsg, 3) gvwMessage[iRow, 1].Foreground = Color.Red Else gvwMessage[iRow, 1].Text = sMsg Endif Wait End Private Function TransformField(sName As String) As String Dim iInd As Integer sName = Trim(sName) For iInd = 1 To Len(sName) If Asc(Mid(sName, iInd, 1)) <= 32 Or If InStr("-.", Mid(sName, iInd, 1)) Then sName = Left(sName, iInd - 1) & "_" & Mid(sName, iInd + 1) Endif Next ' For iInd = 1 To String.Len(sName) ' sCar = String.Mid$(sName, iInd, 1) ' iPos = InStr(REMOVE_ACC, sCar) ' If iPos Then ' iPosL = InStr(REMOVE_ACC, "[", iPos + 1) ' iPosR = InStr(REMOVE_ACC, "]", iPos + 1) ' If iPosL <> 0 And If iPosR <> 0 And If iPosL < iPosR Then ' sCar = Mid$(REMOVE_ACC, iPosL + 1, iPosR - iPosL - 1) ' Endif ' Endif ' sNewName &= sCar ' Next Return String.RemoveDiacritics(sName) End ' Private Sub CountChar(sLig As String, sChar As String) As Integer ' ' Dim iCount As Integer ' Dim iPos As Integer ' ' Do ' iPos = InStr(sLig, sChar, iPos + 1) ' If iPos = 0 Then Return iCount ' Inc iCount ' Loop ' ' End ' ' Private Sub ReadLine(hFile As File) As String ' ' Dim sLine As String ' Dim nEsc As Integer ' Dim sPart As String ' ' If $sEscape Then ' Do ' Line Input #hFile, sPart ' sLine &= sPart ' nEsc += CountChar(sPart, $sEscape) ' If (nEsc And 1) = 0 Then Break ' sLine &= "\n" ' Loop ' Else ' Line Input #hFile, sLine ' Endif ' ' Return sLine ' ' End ' Private Sub MakeFields(aField As String[]) As String[] Dim I As Integer Dim iPos As Integer Dim iCount As Integer Dim sField As String If aField.Count > 1024 Then aField.Remove(1024, -1) Endif For I = 0 To aField.Max sField = TransformField(aField[I]) If Not sField Then sField = Subst(("Field_&1"), i + 1) Else iCount = 1 Do iPos = aField.Find(sField, gb.IgnoreCase) If iPos < 0 Or If iPos >= I Then Break Inc iCount If iCount > 2 Then sField = Left(sField, RInStr(sField, "_")) & CStr(iCount) Else sField &= "_" & CStr(iCount) Endif Loop Endif aField[I] = sField Next Return aField End Private Sub DoImport() Dim hFile As File Dim sLig As String Dim aField As String[] Dim aLine As String[] Dim rData As Result Dim hConn As Connection Dim sTable As String Dim bCreateTable As Boolean Dim hTable As Table Dim I As Integer Dim sName As String Dim sKey As String Dim nImport As Integer Dim sDestCharset As String $bImport = True $bCancel = False gvwMessage.Rows.Count = 0 hConn = $hConn sTable = Trim(cmbTable.Text) bCreateTable = Not hConn.Tables.Exist(sTable) UpdateDelim spnImport.Start If hConn.IgnoreCharset Then sDestCharset = "UTF-8" Else sDestCharset = hConn.Charset Endif hConn.Begin hFile = Open $sPath For Input $iLine = 0 If chkFirstLine.Value Then Inc $iLine sLig = hFile.ReadLine($sEscape) aField = MakeFields(Analyze(sLig)) Endif While Not Eof(hFile) Inc $iLine sLig = hFile.ReadLine($sEscape) If $iLine <= $iIgnore Then Continue aLine = Analyze(sLig, sDestCharset) If bCreateTable Then hTable = hConn.Tables.Add(sTable) With hTable If aField Then If cmbKey.Index = 0 Then .Fields.Add("id", db.Serial) sKey = "id" Endif For I = 0 To aField.Max sName = aField[I] Try .Fields.Add(sName, db.String) If Error Then sName = ("Field") & CStr(I + 1) .Fields.Add(sName, db.String) Endif aField[I] = sName If cmbKey.Index = (I + 1) Then sKey = sName Next Else .Fields.Add("id", db.Serial) For I = 1 To aLine.Count .Fields.Add(("Field") & CStr(I), db.String) Next sKey = "id" Endif .PrimaryKey = [sKey] .Update End With bCreateTable = False Endif If $bStrip Then For I = 0 To aLine.Max aLine[I] = Trim(aLine[I]) Next Endif rData = hConn.Create(sTable) If aField Then If aLine.Max < aField.Max Then DoMessage(("Not enough values")) Else If aLine.Max > aField.Max Then DoMessage(("Too many values")) Endif For I = 0 To Min(aField.Max, aLine.Max) sName = aField[I] 'PRINT sName; " := "; aLine[I] Try rData[sName] = aLine[I] If Error Then Try rData[sName] = MConnection.Convert(aLine[I], rData.Fields[sName].Type) If Error Then DoMessage(Conv(sName, $sCharset, Desktop.Charset) & ": " & Error.Text) Endif Next Else For I = 0 To aLine.Max Try rData[I + 1] = aLine[I] If Error Then Try rData[I + 1] = MConnection.Convert(aLine[I], rData.Fields[I + 1].Type) If Error Then DoMessage(("Field") & CStr(I) & ": " & Error.Text) Endif Next Endif rData.Update Inc nImport spnImport.Value = Seek(hFile) / Lof(hFile) spnImport.Wait If $bCancel Then Error.Raise(("Cancelled by user")) Wend spnImport.Value = 1 hConn.Commit spnImport.Stop If nImport = 0 Then DoMessage(("No record imported.")) Else If nImport = 1 Then DoMessage(("One record imported.")) Else DoMessage(Subst(("&1 records imported."), nImport)) Endif Table = sTable Finally Close #hFile spnImport.Stop $bImport = False Catch hConn.Rollback DoMessage("** " & Error.Text) End Public Sub cmbEscape_Click() UpdateKey End Public Sub Form_Close() If $bImport Then Stop Event Settings.Write(Me) Settings.Write(fchImport) End Public Sub wizImport_BeforeChange() Select Case wizImport.Index Case 0 $sPath = fchImport.SelectedPath If Not Exist($sPath) Then Stop Event cmbCharset.Text = Project.Config["/FImportTable/Charset", "UTF-8"] cmbEndOfLine.Text = Project.Config["/FImportTable/EndOfLine", "Unix"] cmbDelim.Text = Project.Config["/FImportTable/Delim", ","] cmbEscape.Text = Project.Config["/FImportTable/Escape", Chr$(34)] chkStrip.Value = Project.Config["/FImportTable/StripSpace", False] txtIgnore.Value = Project.Config["/FImportTable/Ignore", 0] cmbTable.Text = File.BaseName($sPath) End Select End Public Sub wizImport_Cancel() If $bImport Then $bCancel = True Else Me.Close Endif End Public Sub wizImport_Arrange() spnImport.Move((wizImport.ClientW - spnImport.W) \ 2, (wizImport.ClientH - spnImport.H) \ 2) End Public Sub fchImport_Activate() wizImport.MoveNext End Public Sub wizImport_Change() If wizImport.Index = 1 Then UpdateKey Endif End gambas-3.16.3/app/src/gambas3/.src/Connection/FImportTable.form000066400000000000000000000071411411575327000241130ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,102,72) Text = ("Import file") Icon = Picture["icon:/medium/open"] Arrangement = Arrange.Fill Spacing = True Margin = True { wizImport Wizard MoveScaled(1,1,98,69) Arrangement = Arrange.Fill Count = 4 TextFont = Font["Bold,+2"] ShowIndex = True Border = False ActionText = ("Import") ActionPicture = Picture["icon:/small/open"] Index = 0 Text = ("Select the CSV file to import") { fchImport FileChooser MoveScaled(2,2,94,54) ReadOnly = True } Index = 1 Text = ("Options") { Panel3 VBox MoveScaled(1,1,63,51) Spacing = True Margin = True { Label8 Label MoveScaled(0,0,36,3) Font = Font["Bold"] Text = ("Source") } { HPanel1 HPanel MoveScaled(0,3,62,29) Spacing = True Indent = True { Label6 Label MoveScaled(0,0,28,3) Text = ("Charset") } { cmbCharset ComboBox MoveScaled(29,0,31,4) #Translate = False Expand = True List = ["UTF-8", "ISO 8859-1", "ISO 8859-15", "WINDOWS-1252"] } { Label7 Label MoveScaled(0,5,28,3) Text = ("End of line") } { cmbEndOfLine ComboBox MoveScaled(29,5,31,4) #Translate = False Expand = True ReadOnly = True List = ["Unix", "Windows", "Mac"] } { Label2 Label MoveScaled(0,10,28,3) Text = ("Delimiter character") } { cmbDelim ComboBox MoveScaled(29,10,31,4) #Translate = False Expand = True List = ["Tab", "Space", ",", ";", ":"] } { Label3 Label MoveScaled(0,15,28,3) Text = ("Enclose character") } { cmbEscape ComboBox MoveScaled(29,15,31,4) #Translate = False Expand = True List = ["", "'", "\""] } { chkStrip CheckBox MoveScaled(0,19,47,4) Expand = True Text = ("Strip useless white spaces") } { Label4 Label MoveScaled(0,24,28,3) Text = ("Ignore first lines") } { txtIgnore SpinBox MoveScaled(29,24,9,4) } { Label10 Label MoveScaled(39,24,7,3) Expand = True Text = ("Line(s)") } } { Label9 Label MoveScaled(0,33,36,3) Font = Font["Bold"] Text = ("Destination") } { HPanel2 HPanel MoveScaled(0,36,62,14) Spacing = True Indent = True { Label1 Label MoveScaled(0,0,16,4) Text = ("Table") } { cmbTable ComboBox MoveScaled(16,0,44,4) Expand = True } { Panel2 Panel MoveScaled(0,5,16,3) } { chkFirstLine CheckBox MoveScaled(16,5,35,3) Expand = True Text = ("The first line contains field names") } { Label5 Label MoveScaled(0,10,16,3) Text = ("Key field") } { cmbKey ComboBox MoveScaled(16,10,44,4) Enabled = False Expand = True ReadOnly = True } } } Index = 2 Text = ("Preview") { txtPreview TextArea MoveScaled(1,2,61,43) ReadOnly = True } Index = 3 Text = ("Import") { gvwMessage GridView MoveScaled(1,1,59,49) } { spnImport Spinner MoveScaled(66,24,18,20) Ignore = True Label = True } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Connection/FNewConnection.class000066400000000000000000000216141411575327000246050ustar00rootroot00000000000000' Gambas class file Private $sPath As String Private $bAskPassword As Boolean Private $hConn As New Connection Public Sub Run(Optional sPath As String, Optional bAskPassword As Boolean) As Boolean $sPath = sPath $bAskPassword = bAskPassword Return Not Me.ShowModal() End Private Sub LoadConnection() Dim hConfig As Settings Dim iInd As Integer Dim sType As String hConfig = New Settings($sPath, Trim(Mid$(Project.CONNECTION_MAGIC, 2))) sType = LCase(hConfig["Connection/Type"]) txtHost.Text = hConfig["Connection/Host"] txtPort.Text = hConfig["Connection/Port"] txtUser.Text = hConfig["Connection/User"] txtPath.Text = MConnection.MakeAbsolutePath(hConfig["Connection/Path"]) chkNoPassword.Value = If(hConfig["Connection/NoPassword"], 1, 0) chkRememberPassword.Value = If(hConfig["Connection/RememberPassword"], 1, 0) chkIgnoreCharset.Value = If(hConfig["Connection/IgnoreCharset"], 1, 0) chkDisplayMetadata.Value = If(hConfig["Connection/DisplayMetadata"], 1, 0) chkRememberTemplate.Value = If(hConfig["Connection/RememberTemplate"], 1, 0) For iInd = 0 To cmbType.Count - 1 If LCase(cmbType[iInd].Text) = sType Then cmbType.Index = iInd Break Endif Next If MConnection.NeedPassword(sType) Then txtPassword.Text = MConnection.LoadPassword(txtName.Text, chkRememberPassword.Value) Endif txtDatabase.Text = hConfig["Connection/Database"] End Private Sub FillConfig(hConfig As Object) Dim sPath As String hConfig["Connection/Type"] = LCase(cmbType.Text) hConfig["Connection/Host"] = txtHost.Text hConfig["Connection/Port"] = txtPort.Text hConfig["Connection/User"] = txtUser.Text sPath = txtPath.Text If Project.InsideDirectory(sPath, Project.Dir) Then sPath = Mid$(sPath, Len(Project.Dir) + 1) If sPath Begins "/" Then sPath = Mid$(sPath, 2) Else If Project.InsideDirectory(sPath, User.Home) Then sPath = "~" &/ Mid$(sPath, Len(User.Home) + 1) Endif hConfig["Connection/Path"] = sPath hConfig["Connection/NoPassword"] = CBool(chkNoPassword.Value) hConfig["Connection/RememberPassword"] = CBool(chkRememberPassword.Value) hConfig["Connection/IgnoreCharset"] = CBool(chkIgnoreCharset.Value) hConfig["Connection/DisplayMetadata"] = CBool(chkDisplayMetadata.Value) hConfig["Connection/RememberTemplate"] = CBool(chkRememberTemplate.Value) hConfig["Connection/Database"] = txtDatabase.Text End Private Sub UpdateConnection() As Boolean Dim sMsg As String Dim sName As String Dim sDir As String Dim sPath As String Dim hConfig As Settings Dim bCreate As Boolean Dim hEditor As FConnectionEditor sName = txtName.Text & ".connection" sDir = Project.Dir &/ ".connection" sPath = sDir &/ sName If Not Exist(sPath) Then bCreate = True sMsg = Project.CheckFileName(sName, sDir) If sMsg Then txtName.SetFocus Balloon.Warning(sMsg, txtName) Return True Endif If Not Exist(sDir) Then Project.InsertDirectory(sDir) Endif If Not Trim(txtDatabase.Text) Then Balloon.Warning(("Please enter the name of the database."), txtDatabase) txtDatabase.SetFocus Return True Endif hConfig = New Settings(sPath, Trim(Mid$(Project.CONNECTION_MAGIC, 2))) FillConfig(hConfig) hConfig.Save If MConnection.NeedPassword(cmbType.Text) Then MConnection.SavePassword(txtName.Text, txtPassword.Text, chkRememberPassword.Value) Endif If bCreate Then Project.InsertFile(sName, sDir) Else Try hEditor = Project.Files[sPath] If hEditor Then hEditor.Reload Endif End Public Sub btnOK_Click() If UpdateConnection() Then Return Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() If $sPath Then If $bAskPassword Then Me.Title = ("Please enter password") Else Me.Title = ("Connection properties") Endif 'Me.Icon = Picture["icon:/small/info"] txtName.Text = File.BaseName($sPath) txtName.ReadOnly = True LoadConnection If $bAskPassword Then txtPassword.SetFocus Else cmbType.SetFocus Endif Else Me.Title = ("New connection") 'Me.Icon = Picture["icon:/small/new"] txtName.Text = Project.GetNewName("Connection", Project.Dir &/ ".connection") txtName.SetFocus Endif End Private Sub ResetDatabase() panChooseDatabase.Hide $hConn.Close txtDatabase.Text = "" End Public Sub txtPath_Click() Dialog.Path = txtPath.Text Dialog.Title = ("Select a directory") If Dialog.SelectDirectory() Then Return txtPath.Text = Dialog.Path ResetDatabase End Public Sub cmbType_Click() Select LCase(cmbType.Text) Case "sqlite" panPath.Show panHost.Hide panLogin.Hide txtPath.SetFocus chkRememberPassword.Value = 0 txtUser.Text = "" txtPassword.Text = "" panDatabase.Show Case "template" panPath.Hide panHost.Hide panDatabase.Hide panLogin.Hide Default panPath.Hide panHost.Show panLogin.Show txtHost.SetFocus panDatabase.Show End Select ResetDatabase End Private Sub UpdateCreateDatabase() Dim sDatabase As String If Not $hConn.Opened Then Return sDatabase = Trim(txtDatabase.Text) If sDatabase Then If Not $hConn.Databases.Exist(sDatabase) Then btnCreateDatabase.Text = ("Create database") btnCreateDatabase.Show btnDeleteDatabase.Hide cmbCreateFrom.List = MConnection.GetTemplates() panCreateFrom.Visible = cmbCreateFrom.Count chkCreateFrom.Value = False cmbCreateFrom.Enabled = False Else btnDeleteDatabase.Text = ("Delete database") btnCreateDatabase.Hide panCreateFrom.Hide btnDeleteDatabase.Show Endif panDatabaseAction.Show Else panDatabaseAction.Hide Endif Try lvwDatabase[sDatabase].Selected = True Try lvwDatabase.Current.EnsureVisible 'If Error Then Try lvwDatabase.Current.Selected = False End Private Sub FillDatabaseList() Dim aName As New String[] Dim hDatabase As Database Dim sName As String For Each hDatabase In $hConn.Databases aName.Add(hDatabase.Name) Next aName.Sort(gb.Language + gb.Natural) lvwDatabase.Clear For Each sName In aName lvwDatabase.Add(sName, sName, Picture["icon:/small/database"]).Selected = sName = Trim(txtDatabase.Text) Next Try lvwDatabase[Trim(txtDatabase.Text)].Selected = True UpdateCreateDatabase End Private Sub UpdateDatabasePanelHeight() Dim hChild As Control hChild = panDatabase.Children[panDatabase.Children.Count - 1] panDatabase.H = hChild.Y + hChild.H End Public Sub txtDatabase_Click() Dim hConfig As New Collection If Not panChooseDatabase.Visible Then Inc Application.Busy lvwDatabase.Clear FillConfig(hConfig) MConnection.InitFrom($hConn, hConfig, txtName.Text,, txtPassword.Text) $hConn.Open FillDatabaseList panChooseDatabase.Show Dec Application.Busy Else panChooseDatabase.Hide $hConn.Close Endif UpdateDatabasePanelHeight Catch Application.Busy = 0 Balloon.Error(Error.Text, txtDatabase) End Public Sub lvwDatabase_Select() txtDatabase.Text = lvwDatabase.Current.Text End Public Sub txtHost_Change() ResetDatabase End Public Sub txtPort_Change() ResetDatabase End Public Sub txtUser_Change() ResetDatabase End Public Sub txtPassword_Change() ResetDatabase End Public Sub lvwDatabase_Activate() panChooseDatabase.Hide End Public Sub Form_Close() Try $hConn.Close End Public Sub txtDatabase_Change() UpdateCreateDatabase End Public Sub btnCreateDatabase_Click() Dim hConn As Connection Dim sName As String Inc Application.Busy sName = Trim(txtDatabase.Text) $hConn.Databases.Add(sName) FillDatabaseList If chkCreateFrom.Value Then hConn = $hConn.Copy() hConn.Name = sName hConn.Open hConn.ApplyTemplate(File.Load(Project.Dir &/ ".connection" &/ cmbCreateFrom.Text & ".template")) hConn.Close Endif Dec Application.Busy Catch Application.Busy = 0 Balloon.Error(("Unable to create database.") & "\n\n" & Error.Text, btnCreateDatabase) txtDatabase.SetFocus End Public Sub btnDeleteDatabase_Click() Dim sDatabase As String = lvwDatabase.Current.Text If Message.Warning(Subst(("Do you really want to delete the database '&1'?"), sDatabase), ("Delete"), ("Cancel")) = 2 Then Return Inc Application.Busy $hConn.Databases.Remove(sDatabase) txtDatabase.Clear FillDatabaseList Dec Application.Busy Catch Application.Busy = 0 Balloon.Error(("Unable to delete database.") & "\n\n" & Error.Text, btnDeleteDatabase) txtDatabase.SetFocus End Public Sub chkCreateFrom_Click() cmbCreateFrom.Enabled = chkCreateFrom.Value End Public Sub panDatabase_Arrange() UpdateDatabasePanelHeight End Public Sub chkNoPassword_Click() panPassword.Visible = Not chkNoPassword.Value End gambas-3.16.3/app/src/gambas3/.src/Connection/FNewConnection.form000066400000000000000000000112361411575327000244420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,103,91) Icon = Picture["icon:/small/database"] Resizable = False Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True { HBox7 HBox MoveScaled(1,1,84,4) { Label7 Label MoveScaled(0,0,18,4) Text = ("Name") } { txtName TextBox MoveScaled(27,0,22,4) Expand = True } } { HBox2 HBox MoveScaled(1,6,68,4) { Label1 Label MoveScaled(0,0,18,4) Text = ("Type") } { cmbType ComboBox MoveScaled(27,0,25,4) #Translate = False ReadOnly = True List = ["MySQL", "PostgreSQL", "SQLite", "ODBC"] } } { panHost HBox MoveScaled(1,11,68,4) { Label2 Label MoveScaled(0,0,18,4) Text = ("Host") } { txtHost TextBox MoveScaled(27,0,23,4) Expand = True } { Label11 Label MoveScaled(50,0,2,4) #Translate = False Text = ":" Alignment = Align.Center } { txtPort TextBox MoveScaled(55,0,10,4) } } { panPath HBox MoveScaled(1,16,68,4) Visible = False { Label5 Label MoveScaled(0,0,18,4) Text = ("Path") } { txtPath ButtonBox MoveScaled(27,0,23,4) Expand = True } } { panLogin VBox MoveScaled(1,21,96,9) AutoResize = True Spacing = True { HBox4 HBox MoveScaled(0,0,94,4) Spacing = True { Label3 Label MoveScaled(0,0,17,4) Text = ("User") } { txtUser TextBox MoveScaled(27,0,23,4) Expand = True } { chkNoPassword CheckBox MoveScaled(52,0,32,4) Text = ("No password") } } { panPassword HBox MoveScaled(0,5,94,4) Spacing = True { Label4 Label MoveScaled(0,0,17,4) Text = ("Password") } { txtPassword TextBox MoveScaled(27,0,23,4) Expand = True Password = True } { chkRememberPassword CheckBox MoveScaled(52,0,32,4) Text = ("Remember password") } } } { panDatabase VBox MoveScaled(1,35,99,47) Spacing = True { HBox6 HBox MoveScaled(0,0,96,4) { Label6 Label MoveScaled(0,0,18,4) Text = ("Database") } { txtDatabase ButtonBox MoveScaled(27,0,23,4) Expand = True Picture = Picture["icon:/small/view-detail"] } } { panChooseDatabase HBox MoveScaled(0,5,95,30) Visible = False { Label8 Label MoveScaled(0,0,18,3) } { VBox1 VBox MoveScaled(27,0,66,18) Expand = True Spacing = True { lvwDatabase ListView MoveScaled(0,0,31,11) Expand = True } { panDatabaseAction HBox MoveScaled(0,12,65,4) Spacing = True { btnCreateDatabase Button MoveScaled(0,0,14,4) AutoResize = True Picture = Picture["icon:/small/new"] } { btnDeleteDatabase Button MoveScaled(15,0,14,4) AutoResize = True Picture = Picture["icon:/small/delete"] } { panCreateFrom HBox MoveScaled(30,0,30,4) Expand = True Spacing = True { chkCreateFrom CheckBox MoveScaled(0,0,9,4) AutoResize = True Text = ("From") } { cmbCreateFrom ComboBox MoveScaled(9,0,20,4) Enabled = False Expand = True ReadOnly = True } } } } } { HBox3 HBox MoveScaled(0,36,68,3) { Label10 Label MoveScaled(0,0,18,3) } { chkIgnoreCharset CheckBox MoveScaled(27,0,24,3) Expand = True Text = ("Ignore database charset") } } { HBox8 HBox MoveScaled(0,40,68,3) { Label12 Label MoveScaled(0,0,18,3) } { chkDisplayMetadata CheckBox MoveScaled(27,0,24,3) Expand = True Text = ("Display metadata") } } { HBox10 HBox MoveScaled(0,44,68,3) { Label13 Label MoveScaled(0,0,18,3) } { chkRememberTemplate CheckBox MoveScaled(27,0,35,3) Expand = True Text = ("Remember database structure") } } } { Panel2 Panel MoveScaled(38,83,6,1) } { HBox1 HBox MoveScaled(1,86,68,4) Spacing = True { Spring1 Spring MoveScaled(6,0,11,4) } { btnOK Button MoveScaled(27,0,17,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(47,0,17,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Connection/FPasteTable.class000066400000000000000000000100731411575327000240550ustar00rootroot00000000000000' Gambas class file Static Public DestTable As String Static Private $hSrc As FConnectionEditor Static Private $hDest As FConnectionEditor Static Private $sTable As String Static Private $iCpt As Integer Static Private $iTotal As Integer Static Private $eTimer As Float Public Sub Run(hSrc As FConnectionEditor, sTable As String, hDest As FConnectionEditor) As Boolean $hSrc = hSrc $hDest = hDest $sTable = sTable Return Not Me.ShowModal() End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim sText As String Dim iInd As Integer Dim hConn As Connection lblSource.Text = $hSrc.GetDescription() lblDest.Text = $hDest.GetDescription() hConn = $hDest.GetConnection() For iInd = 0 To 99 sText = $sTable If iInd Then sText &= CStr(iInd + 1) If Not hConn.Tables.Exist(sText) Then Break Next txtName.Text = sText txtName.SetFocus txtName.SelectAll End Public Sub btnOK_Click() Dim sDestTable As String sDestTable = Trim(txtName.Text) If Not sDestTable Then Message.Warning(("Please enter a table name.")) txtName.SetFocus Return Endif CopyTable(sDestTable) DestTable = sDestTable Me.Close(True) End Private Sub CopyTable(sDestTable As String) Dim hSrc As Connection Dim hDst As Connection Dim rSrc As Result Dim sMsg As String Inc Application.Busy pgbPaste.Value = 0 hSrc = $hSrc.GetConnection() hDst = $hDest.GetConnection() 'hSrc.Open 'hDst.Open $iTotal = 0 If optCopyData.Value Then rSrc = hSrc.Exec("SELECT COUNT(*) FROM " & hSrc.Quote($sTable)) $iTotal += rSrc[0] Endif $iCpt = 0 $eTimer = Timer 'DB.Debug = True DoCopyTable(hSrc, hDst, $sTable, sDestTable) UpdateProgress(True) Finally 'DB.Debug = False sMsg = Error.Text Application.Busy = 0 'Try hSrc.Close 'Try hDst.Close Catch Message.Error(sMsg) End Private Sub DoCopyTable(hSrc As Connection, hDst As Connection, sSrc As String, sDst As String) Dim hTableSrc As Table Dim hTableDst As Table Dim hField As Field Dim hIndex As Index Dim rSrc As Result Dim rDst As Result Dim iInd As Integer Dim sMsg As String Dim sSrcCharset As String Dim sDstCharset As String Dim sName As String sSrcCharset = hSrc.Charset sDstCharset = hDst.Charset If hDst.Tables.Exist(sDst) Then Error.Raise(("Table already exists")) hTableSrc = hSrc.Tables[sSrc] hTableDst = hDst.Tables.Add(sDst, hTableSrc.Type) For Each hField In hTableSrc.Fields With hField hTableDst.Fields.Add(.Name, .Type, .Length, .Default) End With Next hTableDst.PrimaryKey = hTableSrc.PrimaryKey hTableDst.Update For Each hIndex In hTableSrc.Indexes If hIndex.Primary Then Continue With hIndex sName = Replace(.Name, sSrc, sDst) If sName = .Name Then sName = sDst & "_" & sName hTableDst.Indexes.Add(sName, .Fields, .Unique) End With Next If optCopyData.Value Then hDst.Begin rSrc = hSrc.Find(sSrc) If sSrcCharset = sDstCharset Then For Each rSrc rDst = hDst.Create(sdST) For iInd = 0 To rSrc.Fields.Count - 1 rDst[iInd] = rSrc[iInd] Next rDst.Update Inc $iCpt UpdateProgress Next Else For Each rSrc rDst = hDst.Create(sDst) For iInd = 0 To rSrc.Fields.Count - 1 rDst[iInd] = rSrc[iInd] If rSrc.Fields[iInd].Type = gb.String And If rSrc[iInd] Then Try rDst[iInd] = Conv(rSrc[iInd], sSrcCharset, sDstCharset) Endif Next rDst.Update Inc $iCpt UpdateProgress Next Endif hDst.Commit Endif Catch sMsg = Subst("Cannot copy table &1.", sSrc) & "\n\n" & Error.Text Try hDst.Rollback Try hDst.Tables.Remove(sDst) Error.Raise(sMsg) End Private Sub UpdateProgress(Optional bForce As Boolean) If Not bForce Then If Timer < $eTimer Then Return Endif $eTimer = Timer + 0.25 If $iTotal Then pgbPaste.Value = CFloat($iCpt) / $iTotal Else pgbPaste.Value = 1 Endif Wait End Public Sub Form_Close() $hSrc = Null $hDest = Null End gambas-3.16.3/app/src/gambas3/.src/Connection/FPasteTable.form000066400000000000000000000027311411575327000237150ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,67,34) Text = ("Paste table") Icon = Picture["icon:/small/paste"] Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { HPanel1 Panel MoveScaled(1,1,63,9) Arrangement = Arrange.Row AutoResize = True Spacing = True Margin = True Border = Border.Plain { Label1 Label MoveScaled(1,1,18,3) Font = Font["Bold"] Text = ("Source") } { lblSource Label MoveScaled(19,1,32,3) Expand = True } { Label2 Label MoveScaled(1,5,18,3) Font = Font["Bold"] Text = ("Destination") } { lblDest Label MoveScaled(19,5,32,3) Expand = True } } { HBox2 HBox MoveScaled(1,11,62,4) Spacing = True { Label3 Label MoveScaled(0,0,14,4) AutoResize = True Text = ("Table") } { txtName TextBox MoveScaled(15,0,46,4) Expand = True } } { optCopyData CheckBox MoveScaled(1,17,47,4) Text = Shortcut(("Also copy table data"), "d") } { pgbPaste ProgressBar MoveScaled(1,22,65,4) } { Spring1 Spring MoveScaled(19,26,4,3) } { HBox1 HBox MoveScaled(1,29,65,4) Spacing = True { Spring2 Spring MoveScaled(10,0,4,4) } { btnOK Button MoveScaled(31,0,16,4) Text = ("Paste") Default = True } { btnCancel Button MoveScaled(48,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Connection/MConnection.module000066400000000000000000000306131411575327000243210ustar00rootroot00000000000000' Gambas module file Public Password As New Collection Public Const METADATA_TABLE_PREFIX As String = "__gb_metadata" Public Const OLD_METADATA_TABLE_NAME As String = "__gb_metadata" Public Const METADATA_TABLE_NAME As String = "__gb_metadata_v2" Public Const VOID_PASSWORD As String = "\x00" Public Enum MD_VERSION = 0, MD_FIELD = 1, MD_INDEX = 2, MD_TABLE = 3 Private $bError As Boolean Public Sub MakeAbsolutePath(sPath As String) As String If sPath = "~" Then sPath = User.Home Else If sPath Begins "~/" Then sPath = User.Home &/ Mid$(sPath, 3) Else If File.IsRelative(sPath) Or If Not sPath Then sPath = Project.Dir &/ sPath Endif Return sPath End Public Sub InitFrom(hConn As Connection, hConfig As Object, sName As String, Optional bWithDatabase As Boolean, Optional sPassword As String) hConn.Type = LCase(hConfig["Connection/Type"]) If hConn.Type = "sqlite" Then hConn.Host = MakeAbsolutePath(hConfig["Connection/Path"]) Else hConn.Host = hConfig["Connection/Host"] hConn.Port = hConfig["Connection/Port"] hConn.User = hConfig["Connection/User"] If Not hConfig["Connection/NoPassword"] Then If sPassword Then hConn.Password = sPassword Else hConn.Password = LoadPassword(sName, hConfig["Connection/RememberPassword"]) Endif Endif Endif If bWithDatabase Then hConn.Name = hConfig["Connection/Database"] hConn.IgnoreCharset = hConfig["/Connection/IgnoreCharset"] End Private Sub ErrorMessage(sMsg As String, sError As String) If sError Then If Not $bError Then $bError = True Message.Error(sMsg & "\n\n" & sError) Endif Else $bError = False Endif End Public Sub LoadPassword(sName As String, bDesktop As Boolean) As String Dim sPassword As String sPassword = Password[sName] If Not sPassword Then If bDesktop Then Error.Clear Try sPassword = Desktop.Passwords[Project.Name &/ "Connection" &/ sName] ErrorMessage(("Unable to retrieve password."), Error.Text) Password[sName] = sPassword Endif Endif Return sPassword End Public Sub SavePassword(sName As String, sPassword As String, (bDesktop) As Boolean) Password[sName] = sPassword If sPassword Then Error.Clear Try Desktop.Passwords[Project.Name &/ "Connection" &/ sName] = sPassword ErrorMessage(("Unable to save password."), Error.Text) Endif End Public 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") + 8 Case gb.Long iWidth = hCtrl.Font.TextWidth("1234567890") * 2 + 8 Case gb.Float iWidth = hCtrl.Font.TextWidth(CStr(Pi) & "E+999") + 8 Case gb.Date iWidth = hCtrl.Font.TextWidth(Str(Now)) + 8 Case gb.String If iLength = 0 Then iLength = 255 iLength = Min(32, iLength) iWidth = hCtrl.Font.TextWidth("X") * iLength + 8 End Select iWidth = Max(iWidth, hCtrl.Font.TextWidth(sTitle) + 8) Return iWidth End Public Function TypeToString(iType As Integer) As String Select Case iType Case db.Integer Return ("Integer") Case db.Long Return ("Long") Case db.Float Return ("Float") Case db.Date Return ("Date") Case db.Boolean Return ("Boolean") Case db.String Return ("String") Case db.Serial Return ("Serial") Case db.Blob Return ("Blob") Default Return "?" End Select End Public Function TypeFromString(sType As String) As Integer Select Case sType Case ("Integer") Return db.Integer Case ("Long") Return db.Long Case ("Float") Return db.Float Case ("Date") Return db.Date Case ("Boolean") Return db.Boolean Case ("String") Return db.String Case ("Serial") Return db.Serial Case ("Blob") Return db.Blob Default Return db.Integer End Select End Public Function GetTempTableName(Handle As Connection) As String Dim iInd As Integer Dim sTemp As String For iInd = 0 To 99 sTemp = "_gambas_table" If iInd Then sTemp = sTemp & "_" & iInd If Not Handle.Tables.Exist(sTemp) Then Break Inc iInd sTemp = "" Next If Not sTemp Then Error.Raise("Cannot find a free temporary table name") Return sTemp End Public Function CopyTableData(Handle As Connection, sTable As String) As String Dim sTemp As String Dim iInd As Integer Dim sReq As String Dim hSrc As Table Dim hDst As Table Dim rSrc As Result Dim rDst As Result Dim hField As Field Dim sError As String sTemp = GetTempTableName(Handle) Select Case Handle.Type Case "postgresql" sReq = "SELECT * INTO TABLE " & sTemp & " FROM \"" & sTable & "\"" Handle.Exec(sReq) Case "mysql" sReq = "CREATE TABLE " & sTemp & " SELECT * FROM `" & sTable & "`" Handle.Exec(sReq) 'CASE "sqlite" ' sReq = "INSERT INTO " & sTemp & " SELECT * FROM " & sTable Default hSrc = Handle.Tables[sTable] hDst = Handle.Tables.Add(sTemp, hSrc.Type) 'IF NOT hSrc.PrimaryKey THEN Error.Raise("No primary key") For Each hField In hSrc.Fields With hField hDst.Fields.Add(.Name, .Type, .Length, .Default) End With Next hDst.PrimaryKey = hSrc.PrimaryKey hDst.Update Handle.Begin rSrc = Handle.Find(sTable) rDst = Handle.Create(sTemp) For Each rSrc ' FOR EACH hField IN rSrc.Fields ' sField = hField.Name ' rDst[sField] = rSrc[sField] ' NEXT For iInd = 0 To rSrc.Fields.Count - 1 rDst[iInd] = rSrc[iInd] Next rDst.Update Next Handle.Commit End Select Return sTemp Catch sError = Error.Text Select Case Handle.Type Case "postgresql" Case "mysql" Try Handle.Rollback If Handle.Tables.Exist(sTable) Then Try Handle.Tables.Remove(sTemp) Else If Handle.Tables.Exist(sTemp) Then sReq = "RENAME TABLE " & sTemp & " TO " & sTable Try Handle.Exec(sReq) Else Error.Raise("Severe Error: Table has been lost!!") Endif Endif Default Try Handle.Rollback If Handle.Tables.Exist(sTable) Then Try Handle.Tables.Remove(sTemp) Else If Handle.Tables.Exist(sTable) Then Error.Raise("Severe Error: Table " & sTable & " has not been recreated. Data held in " & sTemp) Endif Endif End Select Error.Raise("Cannot copy table data: " & sError) End Public Function CountTableData(Handle As Connection, sTable As String) As Integer Dim rResult As Result rResult = Handle.Exec("SELECT COUNT(*) AS nRecord FROM " & Handle.Quote(sTable, True)) Return rResult!nRecord End Public Function CreateTable(Handle As Connection, sTable As String, sType As String) As Boolean Dim hTable As Table If Handle.Tables.Exist(sTable) Then Message.Warning(Subst(("Table '&1' already exists."), sTable)) Return True Endif hTable = Handle.Tables.Add(sTable, sType) With hTable .Fields.Add("id", gb.Integer) .PrimaryKey = ["id"] .Update End With Catch Message(Subst(("Cannot create table '&1'."), sTable) & "\n\n" & Error.Text) Return True End Public Sub GetConnections() As String[] Dim sFile As String Dim aConn As New String[] For Each sFile In Dir(Project.Dir &/ ".connection", "*.connection") aConn.Add(File.BaseName(sFile)) Next aConn.Sort Finally Return aConn End Public Sub GetTemplates() As String[] Dim sFile As String Dim aConn As New String[] For Each sFile In Dir(Project.Dir &/ ".connection", "*.template") sFile = File.BaseName(sFile) If Not Exist(Project.Dir &/ ".connection" &/ sFile & ".connection") Then Continue aConn.Add(sFile) Next aConn.Sort Finally Return aConn End Public Sub FillViewWithTables(lvwTable As TreeView, hConn As Connection, bShowSystem As Boolean) Dim hTable As Table Dim sName As String Dim sParent As String Dim iPos As Integer lvwTable.Clear 'lvwTable.Add("$", ("SQL request"), Picture["img/16/sql.png"]) For Each hTable In hConn.Tables sName = hTable.Name If Not bShowSystem Then If hTable.System Or If sName Begins METADATA_TABLE_PREFIX Then Continue Endif iPos = InStr(sName, ".") If iPos Then sParent = ">" & Left(sName, iPos - 1) sName = Mid$(sName, iPos + 1) Else sParent = "" Endif If sParent And If Not lvwTable.Exist(sParent) Then lvwTable.Add(sParent, Mid$(sParent, 2), Picture["icon:/tiny/directory"]) Endif If hTable.System Then lvwTable.Add("S" & hTable.Name, sName, FConnectionEditor.GetSystemTablePicture(Stock.GetSize("tiny")), sParent) Else lvwTable.Add("T" & hTable.Name, sName, Picture["icon:/tiny/table"], sParent) Endif Next lvwTable.Sorted = True lvwTable.Sorted = False End Public Sub NeedPassword(sType As String) As Boolean sType = LCase(sType) Return sType <> "sqlite" And sType <> "template" End Public Sub CheckPassword(sPath As String) As Boolean Dim hConfig As Settings Dim hConn As New Connection Dim iBusy As Integer Dim bRet As Boolean iBusy = Application.Busy Application.Busy = 0 hConfig = New Settings(sPath) InitFrom(hConn, hConfig, File.BaseName(sPath)) If NeedPassword(hConn.Type) And If Not hConfig["Connection/NoPassword"] And If Not hConn.Password Then If FNewConnection.Closed Then bRet = FNewConnection.Run(sPath, True) Else bRet = True Endif Endif Application.Busy = iBusy Return bRet End Public Sub GetFields(hConn As Connection, sTable As String, Optional bSort As Boolean) As String[] Dim hTable As Table Dim hField As Field Dim aField As New String[] hTable = hConn.Tables[sTable] For Each hField In hTable.Fields aField.Add(hField.Name) Next If bSort Then aField.Sort(gb.Natural) Return aField Catch End Public Sub Convert(vVal As Variant, iType As Integer) As Variant Select iType Case db.Float vVal = Val(vVal) If TypeOf(vVal) <= gb.Float Then Return vVal Case db.Date vVal = Val(vVal) If TypeOf(vVal) = gb.Date Then Return vVal End Select Error.Raise("Type mismatch") End Public Sub CreateMetadataTable(hConn As Connection) As Boolean Dim hTable As Table Dim rTable As Result Dim rOldTable As Result Dim sErr As String If hConn.Tables.Exist(METADATA_TABLE_NAME) Then Return hTable = hConn.Tables.Add(METADATA_TABLE_NAME) With hTable .Fields.Add("sTableName", gb.String) .Fields.Add("iType", gb.Integer) .Fields.Add("sKey", gb.String) .Fields.Add("sValue", gb.String) .PrimaryKey = ["sTableName", "iType", "sKey"] .Update End With If hConn.Tables.Exist(OLD_METADATA_TABLE_NAME) Then hConn.Begin rOldTable = hConn.Find(OLD_METADATA_TABLE_NAME) While rOldTable.Available rTable = hConn.Create(METADATA_TABLE_NAME) rTable!sTableName = rOldTable!sTable rTable!iType = rOldTable!iType rTable!sKey = rOldTable!sKey rTable!sValue = rOldTable!sValue rTable.Update rOldTable.MoveNext Wend hConn.Tables.Remove(OLD_METADATA_TABLE_NAME) hConn.Commit Endif Catch sErr = Error.Text hConn.Rollback Message(("Cannot create metadata table.") & "\n\n" & sErr) Return True End Public Sub CreateSQLite(sPath As String) As String Dim sDir As String Dim iInd As Integer Dim sName As String Dim hConfig As Settings sDir = Project.Dir &/ ".connection" If Not Exist(sDir) Then Project.InsertDirectory(sDir) sName = File.BaseName(sPath) If Exist(sDir &/ sName) Then For iInd = 2 To 100 If Not Exist(sDir &/ sName & CStr(iInd)) Then Break Next sName &= CStr(iInd) Endif hConfig = New Settings(sDir &/ sName, Trim(Mid$(Project.CONNECTION_MAGIC, 2))) hConfig["Connection/Type"] = "sqlite" hConfig["Connection/Path"] = File.Dir(sPath) hConfig["Connection/RememberPassword"] = False hConfig["Connection/IgnoreCharset"] = False hConfig["Connection/DisplayMetadata"] = False hConfig["Connection/RememberTemplate"] = False hConfig["Connection/Database"] = File.Name(sPath) hConfig.Save Project.InsertFile(sName, sDir) Return sDir &/ sName End gambas-3.16.3/app/src/gambas3/.src/Debug/000077500000000000000000000000001411575327000176225ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Debug/CProfile.class000066400000000000000000000042451411575327000223610ustar00rootroot00000000000000' Gambas class file Static Public Sort As Integer Static Public Ascending As Boolean Public Name As String Public Count As Integer Public Time As Long Property Read Self As Long Public FirstTime As Long Public MaxTime As Long Public Level As Integer Public RecTime As Long Public Called As New Collection Public CalledList As New CProfile[] Public Caller As New Collection Public CallerList As New CProfile[] Public StartLine As Integer = -1 Public Code As String Private $iSelf As Long = -1 Public Sub _compare(hOther As CProfile) As Integer Dim iRet As Integer Select Case Sort Case 0 iRet = Comp(Name, hOther.Name, gb.IgnoreCase) Case 1 iRet = -Sgn(Count - hOther.Count) Case 2 iRet = -Sgn({Time} - hOther.Time) Case 3 iRet = -Sgn({Time} / Count - hOther.Time / hOther.Count) Case 4 iRet = -Sgn(Me.Self - hOther.Self) Case 5 iRet = -Sgn(Me.Self / Count - hOther.Self / hOther.Count) End Select If Not Ascending Then iRet = -iRet Return iRet End Public Sub AddCalled(sFunc As String, iTime As Long) Dim hProf As CProfile hProf = Called[sFunc] If Not hProf Then hProf = New CProfile hProf.Name = sFunc Called[sFunc] = hProf CalledList.Add(hProf) Endif Inc hProf.Count If Level > 1 Then hProf.RecTime += iTime Else hProf.Time += iTime Endif End Private Function Self_Read() As Long Dim hProf As CProfile If $iSelf < 0 Then $iSelf = {Time} + RecTime For Each hProf In CalledList $iSelf -= hProf.Time + hProf.RecTime Next Endif Return $iSelf End Public Sub AddCaller(sFunc As String) Dim hProf As CProfile hProf = Caller[sFunc] If Not hProf Then hProf = New CProfile hProf.Name = sFunc Caller[sFunc] = hProf CallerList.Add(hProf) Endif Inc hProf.Count End Public Sub GetTitle() As String If Name Begins ".Eval." Then Return "" & ("Evaluator") & "" Else If Name = "@" Then Return "" & ("Event loop") & "" Else Return Name Endif End Public Sub SetEventLoop() {Time} -= Self_Read() $iSelf = 0 End gambas-3.16.3/app/src/gambas3/.src/Debug/Design.module000066400000000000000000001001051411575327000222370ustar00rootroot00000000000000' Gambas module file Public Startup As String Private Const STATE_LAST As Integer = -1 Private Const STATE_STOP As Integer = 0 Private Const STATE_RUNNING As Integer = 1 Private Const STATE_DEBUG As Integer = 2 Private Const STATE_STARTING As Integer = 3 Private $bTest As Boolean Private $iState As Integer Private $hProcess As Process Private $hObserver As Observer Private $sPosClass As String Private $iPosLine As Integer Private $sError As String Private $bStart As Boolean Private $sCmdStart As String 'PRIVATE $sCmdStartRun AS String Private $aBreakpoint As String[] Private $cDisabledBreakpoint As Collection Private $cClassHasBreakpoint As Collection Private $sAddBreakpoint As String Private $sRemoveBreakpoint As String Private $bIgnoreNextInfo As Boolean Private $bConsole As Boolean Private $sFifo As String Private $bLastCommandMayBeLong As Boolean Public BalloonControl As Control Public BalloonX As Integer Public BalloonY As Integer Private $sProfilePath As String 'Private $bUpdateBreakOnError As Boolean Private $sPipeError As String Private $hPipeError As File Private $hBrowser As Process Private $iProcessId As Integer Private $hTimerShowConsole As Timer Public Sub Init() $sFifo = Debug.Begin() SetState(STATE_STOP) $hTimerShowConsole = New Timer As "TimerShowConsole" $hTimerShowConsole.Delay = 50 End Public Sub Exit() $hTimerShowConsole = Null Debug.End End Public Sub CheckErrorMessage(hEditor As FEditor) Dim sPath As String If Not $sError Then Return If hEditor Then If hEditor.Name == $sPosClass And If hEditor.GetEditor().Line = ($iPosLine - 1) Then hEditor.ShowErrorMessage($sError, "error") Else If $iPosLine > hEditor.GetEditor().Count Then sPath = Project.FindForm(hEditor.Name) FMain.ShowError($sError, sPath) Endif Else FDebugInfo.ShowError($sError) Endif End Private Sub SetState(iState As Integer) 'Dim bDebug As Boolean Dim bEnable As Boolean 'PRINT "SetState:"; iState 'bDebug = $iState <> STATE_STOP And $iState <> STATE_STARTING Action["pause"].Enabled = iState = STATE_RUNNING bEnable = iState <> STATE_RUNNING And iState <> STATE_STARTING Action["forward"].Enabled = bEnable Action["step"].Enabled = bEnable Action["return"].Enabled = bEnable And iState <> STATE_STOP Action["start"].Enabled = bEnable Action["stop"].Enabled = iState <> STATE_STOP 'btnInfo.Enabled = btnStop.Enabled If iState = $iState Then Return $iState = iState FOutput.OnProjectDebugState FDebugInfo.OnProjectDebugState '$hTimerDebugPanel.Restart End ' Public Sub TimerDebugPanel_Timer() ' ' If $iState = STATE_RUNNING Then ' FDebugInfo.ShowConsole ' Else ' FDebugInfo.ShowDebugging ' Endif ' ' $hTimerDebugPanel.Stop ' ' End Public Sub Pause() If $iState <> STATE_RUNNING Then Return If Project.UseTerminal Then If $iProcessId Then Signal.Send($iProcessId, Signal.SIGUSR2) Else Signal.Send($hProcess.Id, Signal.SIGUSR2) Endif End ' Public Sub UpdateBreakOnError() ' ' If $iState = STATE_STOP Then Return ' ' If $iState = STATE_RUNNING Then ' $bUpdateBreakOnError = True ' $hProcess.Signal ' Else ' BreakOnError ' Endif ' ' End ' Public Sub Process_Error(sData As String) ' ' Insert(sData) ' ' End ' Public Sub File_Read() Dim sData As String sData = Read #$hPipeError, Lof($hPipeError) FOutput.Insert(sData) End Public Sub Process_Read() $hTimerShowConsole.Restart End Public Sub TimerShowConsole_Timer() If $hProcess Then If $bTest Then FDebugInfo.ShowTest Else FDebugInfo.ShowConsole Endif Endif $hTimerShowConsole.Stop End ' Public Sub Process_Read() ' ' Dim sData As String ' ' sData = Read #Last, -4096 ' Insert(sData) ' ' End ' Private Sub Translate(sErr As String) As String If InStr(sErr, " ") Then Return Tr$(sErr) Return sErr End Public Sub MakeMessage(sErr As String) As String Dim aErr As String[] Dim iInd As Integer ' Substitution can be recursive in error messages! aErr = Split(sErr, "|") aErr.Resize(aErr.Count + 4) For iInd = aErr.Max - 4 DownTo 0 If iInd = 0 Or If InStr(aErr[iInd], "&1") Then aErr[iInd] = Subst(Tr$(aErr[iInd]), Translate(aErr[iInd + 1]), Translate(aErr[iInd + 2]), Translate(aErr[iInd + 3]), Translate(aErr[iInd + 4])) Endif If Left(aErr[iInd]) = "#" Then Select Case Mid(aErr[iInd], 2) Case "1" aErr[iInd] = ("first") Case "2" aErr[iInd] = ("second") Case "3" aErr[iInd] = ("third") Case Else Try aErr[iInd] = CInt(Mid(aErr[iInd], 2)) End Select Endif Next Return aErr[0] End Public Sub Debug_Read(Data As String) Dim aData As String[] Dim aPos As String[] Dim sPos As String Dim aFrame As String[] 'Dim aLocal As String[] Dim sClass As String Dim iLine As Integer Dim sVar As String Dim sError As String Dim sWhere As String If Not Data Then Return If Data = "!" Then Signal Return Else If Data = "!!" Then $bStart = True Signal Return Endif 'Debug Data aData = Split(Data, "\t") Select Left$(aData[0]) Case "*" If aData.Count < 5 Then Debug Data Return Endif ' Information, printed each time the debugger stops ' Format is: ' [0] *[pid] ' [1] Error message ' [2] Stack trace ' [3] Local variables ' [4] Current object If $iProcessId = 0 Then Try $iProcessId = CInt(Scan(aData[0], "?[[]*]")[0]) aPos = Split(Trim(aData[2]), " ") For Each sPos In aPos If sPos = "?" Then Continue aFrame = Scan(sPos, "*.*.*") sClass = aFrame[0] iLine = 0 Try iLine = CInt(aFrame[2]) If sClass Then If Project.Exist(sClass) Then Break sClass = "" Endif Next If iLine = 0 Then sClass = "" $sError = "" If aData[1] Then If sClass Then SetPosition(sClass, iLine) Else If Not sClass Or If SetPosition(sClass, iLine) Then If $bIgnoreNextInfo Then $bIgnoreNextInfo = False Else Command("", STATE_RUNNING) Endif Return Endif Endif FDebugInfo.DefineVariable(Trim(aData[3]), Trim(aData[4])) If FDebugInfo.FillStack(aPos) Then If aData[1] Then sError = MakeMessage(aData[1]) If sClass Then sWhere = $sPosClass & ":" & CStr($iPosLine) Else sWhere = "" Endif $sError = Project.FormatError(sError, sWhere) If sClass Then Try CheckErrorMessage(Project.ActiveForm) Else Try CheckErrorMessage(Null) Endif Endif Endif SetState(STATE_DEBUG) 'Case "I", "W" 'FDebugInfo.Message(aData[1]) Case "?", "&" sVar = Mid$(aData[0], 2) Select Case Left(sVar) Case "L" FDebugInfo.AddLocal(Mid$(sVar, 2), aData[1]) Case "O" FDebugInfo.AddObject(Mid$(sVar, 2), aData[1]) Case "V" FDebugInfo.AddVariable(Mid$(sVar, 2), aData[1]) Case "W" FDebugInfo.AddResultWatch(Mid$(sVar, 2), aData[1]) Case "I" FDebugInfo.AddResultWatch(Mid$(sVar, 2), aData[1], True) Case "X" FDebugExpr.AddResult(Mid$(sVar, 2), aData[1]) End Select Case "=" sVar = Mid$(aData[0], 2) Select Case Left(sVar) Case "X" FDebugExpr.AddResult(Mid$(sVar, 2), aData[1], True) Case "L" FDebugInfo.AddLocal(Mid$(sVar, 2), aData[1], True) Case "O" FDebugInfo.AddObject(Mid$(sVar, 2), aData[1], True) Case "V" FDebugInfo.AddVariable(Mid$(sVar, 2), aData[1], True) End Select Case "#" sVar = Mid$(aData[0], 2) Select Case Left(sVar) Case "X" If Not aData[1] Then ' sending to Ballon Command("?I" & Mid$(sVar, 2) & ":\t" & Mid$(sVar, 2)) Else If Left(aData[1]) = "!" Then If FDebugExpr.Exist(Mid$(sVar, 2)) Then FDebugExpr.Disable(Mid$(sVar, 2), Mid$(aData[1], 2)) Else Command("?I" & Mid$(sVar, 2) & ":\t" & Mid$(sVar, 2)) End If Else FDebugExpr.Add(Mid$(sVar, 2), aData[1]) Endif Endif End Select End Select End Public Function DebugExprCheck(sExpr As String) As Boolean Return Not (Left(sExpr) = "!") End Public Sub Process_Kill() Dim sMsg As String Dim bTest As Boolean bTest = $bTest If bTest Then FDebugInfo.GetTestTerminal().EnsureVisible() Else FOutput.GetTerminal().EnsureVisible() Endif If Not Project.AboutToQuit Then AfterStop If Not $hProcess Then Return ' $hProcess may be NULL if the event loop is called somewhere during AfterStop() If $hProcess.State = Process.Crashed Then ' SIGKILL, SIGTERM and SIGINT are not considered as bugs in the program If bTest Then FDebugInfo.StopTest(MTest.TEST_ABORT) Select Case $hProcess.Value Case Signal.SIGINT sMsg = ("The program has been interrupted by CTRL+C.") Case Signal.SIGKILL 'sMsg = ("The program has been killed.") Case Signal.SIGTERM sMsg = ("The program has been terminated.") Default FCrash.Run($hProcess) End Select If sMsg Then FMain.ShowWarning(sMsg) Else If $hProcess.Value Then If bTest Then FDebugInfo.StopTest(MTest.TEST_FAIL) Else FMain.ShowInfo(Subst(("The program has returned\nthe value: &1"), $hProcess.Value)) Endif Else If bTest Then FDebugInfo.StopTest(MTest.TEST_SUCCESS) Endif $hProcess = Null If Project.Profiling Then FProfile.Open($sProfilePath) Endif End Private Sub AfterStop() Dim hForm As Object If $iState = STATE_STOP Then Return $sAddBreakPoint = "" $sRemoveBreakPoint = "" Debug.Stop If $sPipeError Then $hPipeError.Close $sPipeError = "" Endif SetPosition("", 0) SetState(STATE_STOP) 'UpdateMinimize Project.Running = False WriteDebugSettings() 'Project.DebugInfoForm.Hide 'tvwLocal.Clear FDebugInfo.Clear FDebugExpr.Clear $sError = "" Balloon.Hide For Each hForm In Project.Workspace.Windows Try hForm.OnProjectDebug Next 'FMain.ShowTool(TRUE) FMain.OnProjectDebug FOutput.OnProjectDebug FSearch.OnProjectDebug 'hForm = FDebugInfo.Parent 'Settings["/FMain/Splitter"] = hForm.Layout 'FDebugInfo.Hide If Not $bConsole Then FMain.ShowDebug(False, True) FDebugInfo.UpdateView ' FOR EACH hForm IN $cShow ' 'TRY PRINT "Design.AfterStop: SHOW "; hForm.Name ' hForm.Show ' NEXT Action["console"].Value = $bConsole 'Project.SetMessage(("OK")) FMain.ActivateCurrentWindow '$hTimerShowConsole.Stop 'IF Project.ActiveForm THEN ' TRY Project.ActiveForm.Show 'ENDIF End Public Sub Stop() If $iState = STATE_STOP Then Return 'Try $hBrowser.Kill '$hBrowser = Null Try $hProcess.Kill $hProcess.Wait(1) AfterStop End Public Sub Forward() If $iState = STATE_RUNNING Then Return If $iState = STATE_STOP Then Start("n") Return Endif Command("n", STATE_RUNNING) End Public Sub ReturnFrom() If $iState = STATE_RUNNING Then Return If $iState = STATE_STOP Then Start("n") Return Endif Command("f", STATE_RUNNING) End ' PUBLIC SUB btnForward_Click() ' ' IF $iState = STATE_STOP THEN ' Project.Run(FALSE, 2) ' ELSE ' Forward ' ENDIF ' ' END Public Sub Step() If $iState = STATE_RUNNING Then Return If $iState = STATE_STOP Then Start("s") Return Endif Command("s", STATE_RUNNING) End ' PUBLIC SUB btnStep_Click() ' ' IF $iState = STATE_STOP THEN ' Project.Run(FALSE, 1) ' ELSE ' ME.Step ' ENDIF ' ' END Private Function SetPosition(sClass As String, iLine As Integer) As Boolean Dim sPath As String 'PRINT "SetPosition "; sClass; iLine If Len(sClass) > 0 And iLine > 0 Then If sClass = $sPosClass And iLine = $iPosLine Then Return Endif If $sPosClass Then sPath = Project.FindPath($sPosClass) With Project.Files[sPath] .GetEditor().StopLine = -1 'Try .GetEditor().Lines[$iPosLine - 1].Current = False End With Endif $sPosClass = sClass $iPosLine = iLine If $sPosClass Then sPath = Project.FindPath($sPosClass) ' Project.LoadFile(sPath) ' 'PRINT $sPosClass; " / "; sPath; " -> "; IsNull(Project.Files[sPath]) ' ' WITH Project.Files[sPath] ' IF $iPosLine <= .GetEditor().Lines.Count THEN ' .GetEditor().Lines.SetFlag($iPosLine - 1, Editor.Current, TRUE) ' .Show() ' .Goto($iPosLine) ' RETURN ' ENDIF ' END WITH Project.LoadFile(sPath) With Project.Files[sPath] If $iPosLine <= .GetEditor().Count Then Project.OpenFile(sPath, $iPosLine) .GetEditor().StopLine = $iPosLine - 1 Return Endif End With Endif Return True End ' PRIVATE SUB ClearPosition() ' ' SetPosition("", 0) ' ' END Private Sub WriteCommand(sCmd As String) 'Error "---> "; sCmd Debug.Write(sCmd) End Public Sub RunUntil(hForm As FEditor, iLine As Integer) Dim bOn As Boolean Dim sClass As String Dim sBreak As String If $iState = STATE_RUNNING Then Return sClass = hForm.Name With hForm.GetEditor() bOn = Not .[iLine].Breakpoint End With If bOn Then 'PRINT "RunUntil "; sClass; "."; iLine sBreak = sClass & "." & CStr(iLine) If $iState <> STATE_DEBUG Then $sAddBreakpoint = MakeBreakpoint(sBreak, True) Else WriteCommand(MakeBreakpoint(sBreak, True)) Endif $sRemoveBreakpoint = MakeBreakpoint(sBreak, False) Endif Run End Public Sub Run(Optional bTest As Boolean) If $iState = STATE_RUNNING Then Return $bLastCommandMayBeLong = True If $iState = STATE_STOP Then $bTest = bTest If bTest Then If Not Project.HasTest() Then $bLastCommandMayBeLong = False Message.Warning(("The project has no test module.")) Return Endif FDebugInfo.StartTest() Endif Start("g") Else Command("g", STATE_RUNNING) Endif $bLastCommandMayBeLong = False End ' PUBLIC SUB btnGo_Click() ' ' IF $iState = STATE_STOP THEN ' Project.Run(FALSE) ' ELSE ' Run ' ENDIF ' ' END ' PRIVATE SUB SplitArg(sArg AS String) AS String[] ' ' DIM aArg AS NEW String[] ' DIM iPos AS Integer ' DIM sCar AS String ' DIM sElt AS String ' DIM bIgnoreSpace AS Boolean ' ' sArg = Trim(sArg) ' IF sArg THEN ' ' FOR iPos = 1 TO Len(sArg) ' ' sCar = Mid$(sArg, iPos, 1) ' IF sCar = " " AND IF NOT bIgnoreSpace THEN ' aArg.Add(sElt) ' sElt = "" ' CONTINUE ' ENDIF ' IF sCar = Chr$(34) THEN ' bIgnoreSpace = NOT bIgnoreSpace ' CONTINUE ' ENDIF ' IF sCar = "\\" THEN ' INC iPos ' sElt &= Mid$(sArg, iPos, 1) ' CONTINUE ' ENDIF ' sElt &= sCar ' NEXT ' ' aArg.Add(sElt) ' ' ENDIF ' ' RETURN aArg ' ' END ' PRIVATE SUB SplitArgument(sArg AS String) AS String[] ' ' DIM I, J AS Integer ' DIM aArg AS NEW String[] ' DIM iCar AS Integer ' DIM iWait AS Integer ' ' I = 1 ' DO ' INC J ' IF J > Len(sArg) THEN BREAK ' iCar = Asc(Mid$(sArg, J, 1)) ' ' IF iCar = iWait THEN ' iWait = 0 ' CONTINUE ' ENDIF ' ' IF iCar = 34 OR iCar = Asc("'") THEN ' iWait = iCar ' ENDIF ' ' IF iCar < 32 THEN ' IF J > I THEN aArg.Add(Mid$(sArg, I, J - I)) ' I = J + 1 ' CONTINUE ' ENDIF ' ' LOOP ' ' IF J > I THEN aArg.Add(Mid$(sArg, I, J - I)) ' ' RETURN aArg ' ' END Private Sub MakeBreakpoint(sBreakpoint As String, bOn As Boolean) As String Dim aBreak As String[] aBreak = Split(sBreakpoint, ".") Return If(bOn, "+", "-") & aBreak[0] & "." & CStr(CInt(aBreak[1]) + 1) End Private Sub GetTestSuite() As String Dim hSettings As Settings Dim iSuite As Integer Dim sSuite As Variant Dim aTest As String[] Dim I As Integer hSettings = New Settings(Project.Dir &/ ".test") iSuite = hSettings["/TestSuites/TestWith", 0] If iSuite > 0 Then Return "@" & hSettings["/TestSuites/" & CStr(iSuite) &/ "Name"] sSuite = hSettings["/TestSuites/Default"] If Not sSuite Then aTest = MTest.GetTestModules() For I = 0 To aTest.Max aTest[I] = File.BaseName(aTest[I]) Next sSuite = aTest.Join() Endif Return sSuite End Private Sub Start(sCmd As String) Dim hForm As Object 'Dim hEdit As FEditor Dim aExec As String[] Dim bValgrind As Boolean = False Dim sTitle As String Dim sProg As String Dim sBreakpoint As String Dim sFile As String Dim aEnv As String[] Dim sOpenWebBrowser As String Dim sPort As String Dim iPos As Integer Dim I As Integer Dim aProg As String[] If Project.Running Then Return '$cShow.Clear $bConsole = Action["console"].Value If Project.Compile() Then Return ClearOutput 'PRINT "EXEC "; "gbx -gs " & File.Dir(Project.Path) & " -- " & Project.Arguments $iProcessId = 0 $sCmdStart = "" ' FDebugInfo.ClearBreakpoint ReadDebugSettings() ' FDebugInfo.ResetBreakpoints ' ' For Each hForm In Project.Files ' If Project.IsEditor(hForm) Then ' hEdit = hForm ' ' For Each iLine In hEdit.GetBreakpoints() ' ' FDebugInfo.AddBreakpoint(hEdit.Name, hEdit.GetProcAt(iLine), iLine, True) ' $sCmdStart = $sCmdStart & "+" & hEdit.Name & "." & CStr(iLine + 1) & "\n" ' '$hProcess.Send(sCmd & "\n") ' ' Next ' ' Endif ' Next For Each sBreakpoint In $aBreakpoint If $cDisabledBreakpoint.Exist(sBreakpoint) Then Continue $sCmdStart &= MakeBreakpoint(sBreakpoint, True) & "\n" Next If $sAddBreakpoint Then $sCmdStart &= $sAddBreakpoint & "\n" $sAddBreakpoint = "" Endif 'If Project.BreakOnError Then $sCmdStart &= "b+\n" $sCmdStart &= sCmd '$sCmdStartRun = sCmd $bStart = True Project.Running = True For Each hForm In Project.Workspace.Windows Try hForm.OnProjectDebug Next FOutput.OnProjectDebug FMain.OnProjectDebug FSearch.OnProjectDebug FMain.ShowDebug(True, True) FDebugInfo.UpdateView FDebugInfo.OnProjectDebug aEnv = Project.Environment.Copy() I = 0 While I < aEnv.Count If aEnv[I] Begins " " Then aEnv.Remove(I) Else Inc I Endif Wend If Not aEnv.Exist("GB_GUI=*", gb.Like) Then aEnv.Add("GB_GUI=") Endif If $bTest Then aExec = [System.Path &/ "bin/gbx" & System.Version, "-g", "-f", $sFifo, "-T", GetTestSuite(), File.Dir(SConv(Project.Path))] $hProcess = FDebugInfo.GetTestTerminal().Exec(aExec, aEnv) $hProcess.Term.Echo = True $hObserver = New Observer($hProcess, True) As "Process" Else If Project.Profiling Then FProfile.CleanProfileFiles ' If Project.Environment And If Project.Environment.Count Then ' ' sExec = Project.Environment.Join(" ") ' sExec &= " exec " & Shell$(System.Path &/ "bin/gbx" & System.Version) & " -g -f " & Shell$(File.Dir(SConv(Project.Path))) ' ' For Each sArg In Project.Arguments ' sExec &= " " & Shell$(sArg) ' Next ' ' $hProcess = Shell sExec For Read Write As "Process" ' ' Else aExec = [System.Path &/ "bin/gbx" & System.Version, "-g", "-f", $sFifo] If Startup Then aExec.Add("-s") aExec.Add(Startup) Endif If Project.CanUseHttpServer() Then If Project.UseHttpServer Or If Project.Components.Exist("gb.httpd") Then aExec.Add("-H") iPos = aEnv.Find("GB_HTTPD_PORT=*", gb.Like) sPort = "8080" If iPos < 0 Then aEnv.Add("GB_HTTPD_PORT=8080") Else Try sPort = Scan(aEnv[iPos], "*=*")[1] Endif sOpenWebBrowser = "http://localhost:" & sPort Endif Endif If Project.Profiling Then aExec.Add("-p") Inc Project.ProfileIndex sFile = "." & CStr(Project.ProfileIndex) & ".prof" If Project.ReadOnly Then $sProfilePath = File.Dir(Temp$) &/ sFile Else $sProfilePath = Project.Dir &/ sFile Endif aExec.Add($sProfilePath) Endif aExec.Add(File.Dir(SConv(Project.Path))) If Project.CurrentArgument Then aExec.Add("--") aExec.Insert(Project.CurrentArgument) Endif ' If Project.Arguments.Count Then ' iPos = Project.CurrentArgument - 1 ' If iPos >= 0 And If iPos < Project.Arguments.Count Then ' aExec.Add("--") ' aExec.Insert(Project.Arguments[iPos]) ' Endif ' Endif If bValgrind Then aExec.Insert(["valgrind", "--tool=memcheck", "--num-callers=50"], 0) Endif 'If Project.UseTerminal Then aExec.Insert(["/usr/bin/Terminal", "--hold", "--disable-server", "-x"], 0) If Project.UseTerminal Then sTitle = Project.Name & " (" & ("Output terminal") & ")" sProg = Settings["/Terminal"] If Not sProg Or If Project.CheckProgram(sProg) Then Select Case Desktop.Types[0] Case "KDE", "KDE4", "KDE5" aProg = ["konsole"] Case "GNOME", "UNITY", "UBUNTU:GNOME" aProg = ["gnome-terminal"] Case "MATE", "CINNAMON" aProg = ["mate-terminal", "gnome-terminal"] Case "XFCE" aProg = ["xfce4-terminal", "gnome-terminal"] Case "LXDE" aProg = ["lxterminal"] Case "CYGWIN" aProg = ["mintty.exe"] Case Else aProg = New String[] End Select aProg.Add("xterm") For Each sProg In aProg If System.Exist(sProg) Then Break sProg = "" Next If Not sProg Then FMain.ShowErrorWith(("Unable to start project."), ("No terminal emulator found.")) Return Endif Endif If Project.RedirectStderr Then $sPipeError = Temp$() aExec.Add("-r") aExec.Add($sPipeError) Endif Endif Select Case sProg Case "konsole" aExec = ["konsole", "--nofork", "--hold", "--name", Project.Name & "-output", "-e", aExec.Join(" ")] Case "gnome-terminal" ' gnome terminal cannot hold at end aExec.Insert(["gnome-terminal", "--hide-menubar", "--maximize", "--title=" & sTitle, "-x"], 0) Case "Terminal", "xfce4-terminal" aExec.Insert(["Terminal", "--hide-menubar", "--hide-toolbars", "--title=" & sTitle, "--hold", "-x"], 0) Case "lxterminal" aExec.Insert(["lxterminal", "-t", sTitle, "-e"], 0) Case "xterm" aExec.Insert(["xterm", "-title", sTitle, "-hold", "-e"], 0) End Select If sProg Then $hProcess = Exec aExec With aEnv As "Process" Else '$hProcess = Exec aExec With aEnv For Input Output As "Process" $hProcess = FOutput.GetTerminal().Exec(aExec, aEnv) $hProcess.Term.Echo = True $hObserver = New Observer($hProcess, True) As "Process" Endif If $sPipeError Then $hPipeError = Pipe $sPipeError For Read Watch Endif Endif SetState(STATE_STARTING) Balloon.Hide Try Debug.Start If Error Then 'sArg = Error.Text Try $hProcess.Kill 'FMain.ShowError(("Unable to start debugger.") & "\n\n" & sArg) Return Endif 'UpdateMinimize If sOpenWebBrowser Then $hBrowser = Project.OpenWebPage(sOpenWebBrowser, True) 'If $hBrowser Then Object.Attach($hBrowser, Me, "Browser") Endif If $bTest Then FDebugInfo.ShowTest Else FDebugInfo.ShowDebugging Endif 'PRINT "Debug.Start" 'PRINT "Debug.Start -> OK" 'Signal End ' Public Sub Browser_Kill() ' ' Stop() ' ' End ' Private Sub UpdateMinimize() ' ' 'Debug Project.Running;; $iState;; $bLastCommandMayBeLong ' ' If Project.Running And If Settings["/MinimizeOnRun"] Then ' If $iState = STATE_STARTING Then ' If $bLastCommandMayBeLong Then ' 'Debug "MINIMIZE" ' FMain.Minimized = True ' Endif ' Else ' 'Debug "RESTORE" ' FMain.Minimized = False ' Endif ' Endif ' ' End Public Sub Command(sCmd As String, Optional iNewState As Integer = STATE_LAST) 'IF Start(sCmd) THEN RETURN 'IF NOT Project.Running THEN RETURN 'WAIT If Not $hProcess Then Return 'IF bResult THEN ' $cCommand.Add(sPrefix & sCmd) 'ENDIF WriteCommand(sCmd) If iNewState <> STATE_LAST Then If iNewState <> $iState Then SetState(iNewState) SetPosition("", 0) Endif Endif End ' Private Sub BreakOnError() ' ' WriteCommand("b" & If(Project.BreakOnError, "+", "-")) ' ' End Private Sub Signal() 'PRINT "Signal" If $bStart Then 'PRINT "START Debug.Write: "; $sCmdStart WriteCommand($sCmdStart) $bStart = False 'Command("w", TRUE) 'Command($sCmdStartRun, FALSE, STATE_RUNNING) SetState(STATE_RUNNING) $bIgnoreNextInfo = True Return Endif ' If $bUpdateBreakOnError Then ' $bUpdateBreakOnError = False ' BreakOnError ' Command("", STATE_RUNNING) ' Return ' Endif 'IF $iState = STATE_DEBUG THEN RETURN ' Entering debug If $sRemoveBreakpoint Then WriteCommand($sRemoveBreakpoint) $sRemoveBreakpoint = "" Endif 'Command("w", TRUE) 'Command("l", TRUE) FDebugInfo.RefreshAllWatch Try FDebugExpr.RefreshAll FMain.Show 'Command("e", TRUE) End ' PUBLIC SUB Stop() ' ' IF $iState = STATE_STOP THEN RETURN ' ' 'SendCommand("q", TRUE) ' $hProcess.Kill ' ' END Public Sub ClearOutput() If $bTest Then FDebugInfo.GetTestTerminal().Clear Else FOutput.Clear Endif End Public Function IsRunning() As Boolean Return $iState = STATE_RUNNING End Public Function IsStop() As Boolean Return $iState = STATE_STOP End Public Sub GetProcess() As Process Return $hProcess End Public Sub Send(sStr As String) If $iState <> STATE_RUNNING Then Return Write #$hProcess, sStr Flush #$hProcess End ' PUBLIC SUB btnFrom_Click() ' ' IF $iState = STATE_STOP THEN ' Project.Run(FALSE, 1) ' ELSE ' ME.ReturnFrom ' ENDIF ' ' END Public Sub ReadDebugSettings() FDebugInfo.ReadWatchSettings() FDebugExpr.ReadSettings() End Public Sub WriteDebugSettings() FDebugInfo.WriteWatchSettings() FDebugExpr.WriteSettings() End Public Sub SetBreakpoint(sBreakpoint As String, bOn As Boolean, Optional bDisabled As Boolean) Dim iPos As Integer Dim aBreak As String[] Dim hEditor As FEditor Dim sPath As String 'Debug sClass; "."; iLine;; bOn iPos = $aBreakpoint.Find(sBreakpoint) If iPos >= 0 Then $aBreakpoint.Remove(iPos) $cDisabledBreakpoint.Remove(sBreakpoint) Endif If bOn Then $aBreakpoint.Add(sBreakpoint) $aBreakpoint.Sort(gb.Natural) If bDisabled Then $cDisabledBreakpoint[sBreakpoint] = True Endif aBreak = Split(sBreakpoint, ".") $cClassHasBreakpoint[aBreak[0]] = $aBreakpoint.Exist(aBreak[0] & ".*", gb.Like) FDebugInfo.RefreshBreakpointView If $iState = STATE_RUNNING Then Return ' Update editor sPath = Project.FindPath(aBreak[0]) Try hEditor = Project.Files[sPath] If hEditor Then hEditor.SetBreakpoint(CInt(aBreak[1]), bOn, bDisabled) If Not Project.Running Then Return ' Update debugger If bOn And If Not bDisabled Then 'Debug "+" & sClass & "." & CStr(iLine);; System.Backtrace.Join(" ") WriteCommand(MakeBreakpoint(sBreakpoint, True)) Else 'Debug "-" & sClass & "." & CStr(iLine);; System.Backtrace.Join(" ") WriteCommand(MakeBreakpoint(sBreakpoint, False)) Endif End Public Sub ClearBreakpoints() $aBreakpoint = New String[] $cDisabledBreakpoint = New Collection $cClassHasBreakpoint = New Collection FDebugInfo.RefreshBreakpointView End Public Sub GetBreakpoints() As String[] Return $aBreakpoint End Public Sub IsBreakpointDisabled(sBreakpoint As String) As Boolean Return $cDisabledBreakpoint.Exist(sBreakpoint) End Public Sub ReadBreakpoints() Dim iInd As Integer Dim sBreakpoint As String Dim bDisabled As Boolean ClearBreakpoints For iInd = 1 To Project.Config["/Breakpoints/Count", 0] sBreakpoint = Project.Config["/Breakpoints/Breakpoint[" & CStr(iInd) & "]"] If Left(sBreakpoint) = "!" Then sBreakpoint = Mid$(sBreakpoint, 2) bDisabled = True Else bDisabled = False Endif SetBreakpoint(sBreakpoint, True, bDisabled) 'SetBreakpointFromString(sBreakpoint, True, bDisabled) Next End Public Sub RefreshBreakpointFromEditor(hEditor As FEditor) Dim I As Integer Dim sPrefix As String Dim iLine As Integer Dim aBreakpoints As Integer[] sPrefix = hEditor.Name & "." While I < $aBreakpoint.Count If $aBreakpoint[I] Begins sPrefix Then $cDisabledBreakpoint.Remove($aBreakpoint[I]) $aBreakpoint.Remove(I) Else Inc I Endif Wend With hEditor.GetEditor() aBreakpoints = .Breakpoints For Each iLine In aBreakpoints $aBreakpoint.Add(hEditor.Name & "." & CStr(iLine)) Next For Each iLine In .DisabledBreakpoints $cDisabledBreakpoint[hEditor.Name & "." & CStr(iLine)] = True Next $cClassHasBreakpoint[hEditor.Name] = aBreakpoints.Count > 0 End With $aBreakpoint.Sort(gb.Natural) FDebugInfo.RefreshBreakpointView() End Public Sub InitEditorWithBreakpoints(hEditor As FEditor) Dim aBreakpoint As New Integer[] Dim aDisabled As New Integer[] Dim sBreakpoint As String Dim iLine As Integer Dim I As Integer Dim sPrefix As String If Project.IsFake() Then Return sPrefix = hEditor.Name & "." While I < $aBreakpoint.Count sBreakpoint = $aBreakpoint[I] If sBreakpoint Begins sPrefix Then iLine = CInt(Split(sBreakpoint, ".")[1]) If hEditor.CanSetBreakpoint(iLine) Then aBreakpoint.Add(iLine) If $cDisabledBreakpoint.Exist(sBreakpoint) Then aDisabled.Add(iLine) Else $aBreakpoint.Remove(I) Continue Endif Endif Inc I Wend With hEditor.GetEditor() .Breakpoints = aBreakpoint .DisabledBreakpoints = aDisabled End With End Public Sub WriteBreakpoints() Dim iCount As Integer Dim sBreakpoint As String 'IF NOT Project.Config THEN RETURN Project.Config.Clear("/Breakpoints") For Each sBreakpoint In $aBreakpoint If $cDisabledBreakpoint.Exist(sBreakpoint) Then sBreakpoint = "!" & sBreakpoint Inc iCount Project.Config["/Breakpoints/Breakpoint[" & CStr(iCount) & "]"] = sBreakpoint Next Project.Config["/Breakpoints/Count"] = iCount End Public Sub SetBalloon(hCtrl As Control, Optional X As Integer = -1, Y As Integer = -1) BalloonControl = hCtrl BalloonX = X BalloonY = Y End Public Sub HasBreakpoint(sClass As String) As Boolean Return $cClassHasBreakpoint[sClass] End Public Sub RenameClass(sOld As String, sNew As String) Dim I As Integer Dim sBreakpoint As String Dim aBreakpoint As String[] Dim bDisabled As Boolean Dim bHasBreakpoint As Boolean For I = 0 To $aBreakpoint.Max sBreakpoint = $aBreakpoint[I] aBreakpoint = Split(sBreakpoint, ".") If aBreakpoint[0] = sOld Then bDisabled = $cDisabledBreakpoint.Exist(sBreakpoint) $cDisabledBreakpoint.Remove(sBreakpoint) aBreakpoint[0] = sNew sBreakpoint = aBreakpoint.Join(".") $aBreakpoint[I] = sBreakpoint If bDisabled Then $cDisabledBreakpoint[sBreakpoint] = True bHasBreakpoint = True Endif Next $cClassHasBreakpoint.Remove(sOld) $cClassHasBreakpoint[sNew] = bHasBreakpoint $aBreakpoint.Sort(gb.Natural) FDebugInfo.RefreshBreakpointView() End gambas-3.16.3/app/src/gambas3/.src/Debug/FCrash.class000066400000000000000000000071641411575327000220270ustar00rootroot00000000000000' Gambas class file Private $hProcess As Process Private $dDate As Date Private $bWorking As Boolean Public Sub Run(hProcess As Process) $hProcess = hProcess $dDate = Now Me.ShowModal() End Public Sub btnOK_Click() Dim sDir As String Dim sTempProject As String Dim sTempInfo As String Dim sCore As String Dim sTemp As String Dim sCmd As String 'Dim hProcess As Process Dim aSendCC As String[] If txtDesc.Visible And If txtDesc.Foreground <> Color.Default Then txtDesc.SetFocus Return Endif If $bWorking Then Return $bWorking = True If chkSend.Value Then Inc Application.Busy sDir = Temp$() Try Mkdir sDir If Not chkNoProject.Value Then sTempProject = sDir &/ Project.GetDefaultArchiveBaseName() & ".tar.bz2" Project.MakeSourcePackageTo(sTempProject) ', True) Endif Copy Project.Dir &/ ".project" To sDir &/ "project.conf" sTempInfo = sDir &/ "info.txt" File.Save(sTempInfo, FSystemInfo.GetInfo().Join("\n")) sCore = Project.Dir &/ "core" If Not Exist(sCore) Then sCore &= "." & $hProcess.Id If Exist(sCore) And If System.Exist("gdb") Then Shell "gdb gbx3 " & Shell$(sCore) & " -batch -ex \"bt full\" >" & Shell$(sDir &/ "gdb.txt") & " 2>&1" Wait ' hProcess = Shell "gdb gbx3 " & Shell$(sCore) & " -batch -ex \"bt full\" >" & Shell$(sDir &/ "gdb.txt") & " 2>&1" ' While hProcess.State = Process.Running ' Wait 0.1 ' Wend Endif sTemp = File.SetName(Temp$(), Project.GetDefaultArchiveBaseName()) & "-crash-" & Format($dDate, "yymmdd-hhnnss") & ".tar.bz2" Try Kill sTemp sCmd &= "cd " & Shell$(sDir) & " && tar cfvhj " & Shell$(sTemp) & " *" & " >/dev/null 2>&1" Shell sCmd Wait ' hProcess = Shell sCmd ' While hProcess.State = Process.Running ' Wait 0.1 ' Wend If Not Exist(sTemp) Then Error.Raise(Subst$(("The '&1' command has failed."), "tar")) If Stat(sTemp).Size <= 256000 Then aSendCC = ["Gambas mailing list "] Desktop.SendMail(["Benoît Minisini "], aSendCC,, "[CRASH REPORT] " & If(Project.Title, Project.Title, Project.Name), "Hello,\n\nDamned, my program crashed Gambas that way :\n\n" & Trim(txtDesc.Text) & "\n\n", sTemp) Dec Application.Busy Endif $bWorking = False Me.Close Catch Application.Busy = 0 Message.Error(("Unable to send bug report.") & "\n\n" & Error.Text) $bWorking = False End Public Sub Form_Open() lblMessage.Text = "

    " & ("The program has stopped unexpectedly!") & "

    " & Html(Debug.GetSignal($hProcess.Value)) & " (" & $hProcess.Value & ")" ' & Subst(("Please send a bug report to the following mail address: &1"), "gambas-user@users.sourceforge.net.") chkSend_Click End Public Sub Form_Close() If $bWorking Then Stop Event End Public Sub btnCancel_Click() If $bWorking Then Return Me.Close End ' Public Sub Form_Arrange() ' ' spnWait.Move(spnWait.Parent.W - spnWait.Width - Desktop.Scale, 0) ' ' End Public Sub chkSend_Click() txtDesc.Visible = chkSend.Value chkNoProject.Enabled = chkSend.Value Me.H = Desktop.Scale * If(txtDesc.Visible, 54, 31) txtDesc_LostFocus End Public Sub txtDesc_LostFocus() If txtDesc.Length = 0 Then txtDesc.Text = ("Please describe how to reproduce the crash here.") txtDesc.Foreground = Color.LightForeground txtDesc.Font.Italic = True Endif End Public Sub txtDesc_GotFocus() If txtDesc.Foreground <> Color.Default Then txtDesc.Text = "" txtDesc.Foreground = Color.Default txtDesc.Font.Italic = False Endif End gambas-3.16.3/app/src/gambas3/.src/Debug/FCrash.form000066400000000000000000000032061411575327000216560ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,69,47) Text = ("Gambas interpreter crash") Icon = Picture["img/64/atari.png"] Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { Panel6 HBox MoveScaled(1,1,67,22) Spacing = True { Panel7 VBox MoveScaled(1,0,13,21) Margin = True { picCrash PictureBox MoveScaled(0,0,11,11) Picture = Picture["img/crash/atari.png"] Alignment = Align.Center Mode = PictureBox.Contain } } { Panel2 VBox MoveScaled(15,0,51,21) Expand = True { lblMessage TextLabel MoveScaled(2,1,32,9) Expand = True Alignment = Align.Normal } { Panel5 Panel MoveScaled(2,10,48,8) Arrangement = Arrange.Vertical { chkSend CheckBox MoveScaled(0,0,45,4) Text = ("Send a bug report by mail") } { chkNoProject CheckBox MoveScaled(0,4,43,4) Enabled = False Text = ("Don't join the project to the mail") } } } } { txtDesc TextArea MoveScaled(1,25,67,11) Visible = False Expand = True } { Panel3 Panel MoveScaled(19,37,22,1) } { panButton HBox MoveScaled(3,39,58,4) Spacing = True { Panel1 Panel MoveScaled(6,0,4,4) Expand = True } { btnOK Button MoveScaled(12,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(31,0,16,4) Text = ("Cancel") Cancel = True } { Panel4 Panel MoveScaled(52,0,4,4) Visible = False Expand = True } } } gambas-3.16.3/app/src/gambas3/.src/Debug/FDebugButton.class000066400000000000000000000065051411575327000232070ustar00rootroot00000000000000' Gambas class file Private $bNoSelectButton As Boolean Private $sMessage As String Public Sub ReadConfig() Project.SetSmallFont(Me) Me.H = Me.Font.H + 8 End Public Sub UpdateView() btnConsole.Visible = Not IsNull(FOutput.Parent) OnVisibilityChange End Public Sub OnVisibilityChange() Dim hButton As ToolButton If FMain.IsDebugVisible() Then SelectButton(FDebugInfo.GetCurrentTab()) Else For Each hButton In panButton.Children hButton.Value = False Next Endif End Public Sub btnDebug_Click() Dim hLast As ToolButton = Last Dim hButton As ToolButton Dim I As Integer If hLast.Value Then FMain.ShowDebug(True) For I = 0 To panButton.Children.Count - 1 Try hButton = panButton.Children[I] If hButton <> hLast Then Object.Lock(hButton) hButton.Value = False Object.Unlock(hButton) Else FDebugInfo.SelectTab(I) Endif Next Else FMain.ShowDebug(False) Endif End Public Sub SelectButton(iTab As Integer) Dim hButton As ToolButton = panButton.Children[iTab] If $bNoSelectButton Then Return $bNoSelectButton = True If Not hButton.Value Then hButton.Value = True $bNoSelectButton = False End Public Sub ShowButton(iTab As Integer, bShow As Boolean) Dim hButton As ToolButton = panButton.Children[iTab] If hButton.Value And If Not bShow Then FMain.ShowDebug(False) hButton.Visible = bShow End ' Public Sub Form_Arrange() ' ' FOutput.UpdateWidth(Me.W) ' ' End Public Sub OnRefreshSources() btnTest.Visible = Project.HasTest() End Public Sub OnProjectActivate() If Not $sMessage Then SetMessage() End Public Sub UpdateStatus(bForce As Boolean) If bForce Or If Not $sMessage Then SetMessage() Endif End Public Sub dwgStatus_Draw() Try Project.ActiveForm.PaintStatus() End Public Sub SetMessage(Optional sText As String, bAdd As Boolean) If bAdd Then $sMessage = Trim($sMessage) & " " & sText Else $sMessage = sText Endif If $sMessage Then lblMessage.Text = $sMessage lblMessage.Show dwgStatus.Hide Wait Else lblMessage.Hide dwgStatus.Show dwgStatus.Refresh Endif If Not $sMessage Then timMessage.Stop Else timMessage.Restart Endif End Public Sub timMessage_Timer() SetMessage() End Public Sub UpdateProfile() Dim aProf As FProfile[] Dim hProf As FProfile Dim hSeparator As Separator Dim hButton As ToolButton Dim W As Integer aProf = FProfile.FindAll() panProfile.Children.Clear If aProf.Count = 0 Then panProfile.Hide Return Endif hSeparator = New Separator(panProfile) hSeparator.W = 1 ' hButton = New ToolButton(panProfile) As "btnCloseProfile" ' hButton.Picture = Picture["icon:/small/close"] ' hButton.AutoResize = True W = 1 For Each hProf In aProf hButton = New ToolButton(panProfile) As "btnShowProfile" hButton.Tag = hProf.Path hButton.Text = hProf.GetName() hButton.Picture = Picture["icon:/small/clock"] hButton.AutoResize = True W += hButton.W Next panProfile.W = W panProfile.Show End Public Sub btnShowProfile_Click() Dim hProf As FProfile hProf = FProfile.Find(Last.Tag) If hProf Then hProf.Minimized = Not hProf.Minimized Endif End gambas-3.16.3/app/src/gambas3/.src/Debug/FDebugButton.form000066400000000000000000000044731411575327000230470ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,145,7) Arrangement = Arrange.Horizontal { panButton Panel MoveScaled(0,0,110.875,4.875) Arrangement = Arrange.Horizontal AutoResize = True { btnLocal ToolButton btnDebug Name = "btnLocal" MoveScaled(0,0,13,4) AutoResize = True Text = ("Debugging") Picture = Picture["icon:/small/monitor"] Toggle = True } { btnConsole ToolButton btnDebug Name = "btnConsole" MoveScaled(14,0,11,4) AutoResize = True Text = ("Console") Picture = Picture["icon:/small/terminal"] Toggle = True } { btnBreakpoints ToolButton btnDebug Name = "btnBreakpoints" MoveScaled(26,0,13,4) AutoResize = True Text = ("Breakpoints") Picture = Picture["icon:/small/halt"] Toggle = True } { btnWarnings ToolButton btnDebug Name = "btnWarnings" MoveScaled(41,0,12,4) AutoResize = True Text = ("Warnings") Picture = Picture["icon:/small/warning"] Toggle = True } { btnTasks ToolButton btnDebug Name = "btnTasks" MoveScaled(53,0,10,4) AutoResize = True Text = ("Notes") Picture = Picture["icon:/small/tag"] Toggle = True } { btnTest ToolButton btnDebug Name = "btnTest" MoveScaled(63,0,12,4) AutoResize = True Text = ("Unit tests") Picture = Picture["icon:/small/ok"] Toggle = True } { btnVersionControl ToolButton btnDebug Name = "btnVersionControl" MoveScaled(76,0,18,4) AutoResize = True Text = ("Version control") Picture = Picture["icon:/small/record"] Toggle = True } { btnSearchList ToolButton btnDebug Name = "btnSearchList" MoveScaled(94,0,16,4) AutoResize = True Text = ("Search result") Picture = Picture["icon:/small/find"] Toggle = True } } { panProfile HBox MoveScaled(113,0,1,5) } { Panel2 Panel MoveScaled(120,1,1,3) } { lblMessage Label MoveScaled(122,1,11,3) Visible = False Expand = True Alignment = Align.Right } { dwgStatus DrawingArea MoveScaled(135,1,6,3) Visible = False Expand = True } { Panel1 Panel MoveScaled(143,1,1,3) } { timMessage #Timer #MoveScaled(102,1) Delay = 10000 } } gambas-3.16.3/app/src/gambas3/.src/Debug/FDebugExpr.class000066400000000000000000000417771411575327000226640ustar00rootroot00000000000000' Gambas class file Const YW_DUMMY_INFO As String = "@" Const YW_NOT_AVAILABLE As String = ("not available") Static Private $cAll As New Collection Static Private $sYWindow As String Static Private $sLastExpr As String Static Private $iChangeColor As Integer Static Private $iErrorColor As Integer Private $sExpr As String Private $sKey As String Private $sInfo As String Private $sLastGood As String Private $aSym As String[] Private $cVal As New Collection Private $cOldVal As New Collection Private $iRowStatic As Integer Private $iRowDynamic As Integer Private $sClass As String Private $sRealClass As String Private $bArray As Boolean Private $bCollection As Boolean Private $sCollectionKey As String Private $aDim As Integer[] Static Public Sub Add(sExpr As String, sInfo As String) Dim hWin As FDebugExpr If Not sInfo Then Return If Not $cAll.Exist(sExpr) Then hWin = New FDebugExpr(sExpr, sInfo) If Object.IsValid(hWin) Then $cAll[sExpr] = hWin hWin.Show Endif Else hWin = $cAll[sExpr] hWin.RefreshInfo(sInfo) Endif End Static Public Sub AddResult(sWindow As String, sValue As String, Optional bAssign As Boolean) Dim iPos As Integer Dim hWin As FDebugExpr iPos = RInStr(sWindow, "#") hWin = $cAll[Left(sWindow, iPos - 1)] If hWin Then hWin.SetValue(CInt(Mid(sWindow, iPos + 1)), sValue, bAssign) End Static Public Sub Clear() Dim hWin As FDebugExpr For Each hWin In $cAll Try hWin.Close Next $cAll.Clear End Public Sub _new(sExpr As String, sInfo As String) $sExpr = sExpr $sKey = Replace(sExpr, "/", "|") $sInfo = sInfo 'Project.Config.Read(ME, $sKey) btnShowAll.Value = Project.Config["DebugWindow" &/ $sKey &/ "ShowHidden", False] If sInfo = YW_DUMMY_INFO Then Me.Enabled = False Me.Title = sExpr & " (" & YW_NOT_AVAILABLE & ")" Else If Init(sInfo, True) Then Me.Close Return Endif Endif $sLastGood = sExpr txtExpr.Text = sExpr End Private Sub GetIndiceFromRow(iRow As Integer) As String Dim sSym As String Dim iDim As Integer If $aDim Then For Each iDim In $aDim sSym &= ", " & CStr(iRow Mod iDim) iRow \= iDim Next sSym = Mid(sSym, 3) Else sSym = CStr(iRow) Endif Return sSym End Public Sub gvwExpr_Data(Row As Integer, Column As Integer) Dim sSym As String Dim sVal As String If Column = 0 Then gvwExpr.Data.Foreground = Color.Gradient(Color.TextBackground, Color.TextForeground, 0.7) If $bArray Then sSym = GetIndiceFromRow(Row) If Column = 0 Then gvwExpr.Data.Text = sSym gvwExpr.Data.Alignment = Align.Right Else sVal = $cVal[Row] If sVal Then gvwExpr.Data.Text = sVal '$cVal.Remove(Row) Else Design.Command("?X" & $sExpr & "#" & CStr(Row) & "\t" & $sExpr & "[" & sSym & "]") Endif Endif Else If $bCollection Then sSym = Chr$(34) & $aSym[Row] & Chr$(34) If Column = 0 Then gvwExpr.Data.Text = sSym Else sVal = $cVal[Row] If sVal Then gvwExpr.Data.Text = sVal '$cVal.Remove(Row) Else Design.Command("?X" & $sExpr & "#" & CStr(Row) & "\t" & $sExpr & "[" & sSym & "]") Design.Command("=" & "\t" & $sExpr & ".Key = " & Quote($sCollectionKey)) Endif Endif Else sSym = $aSym[Row] If Right(sSym) = ":" Then gvwExpr.Data.Background = Color.LightForeground Return Endif If Column = 0 Then gvwExpr.Data.Text = sSym If $iRowStatic >= 0 Then If $iRowDynamic < 0 Or If Row < $iRowDynamic Then gvwExpr.Data.Font.Bold = True Endif Else sVal = $cVal[Row] If sVal Then gvwExpr.Data.Text = sVal Else If Left($sClass) = "." Or If Not $sRealClass Then Design.Command("?X" & $sExpr & "#" & CStr(Row) & "\t" & $sExpr & "." & sSym) Else Design.Command("?X" & $sExpr & "#" & CStr(Row) & "\t" & $sRealClass & "(" & $sExpr & ")." & sSym) Endif Endif Endif Endif If Column <> 0 Then If Left(gvwExpr.Data.Text) <> "!" Then If $cVal.Exist(Row) And If $cOldVal.Exist(Row) And If gvwExpr.Data.Text <> $cOldVal[Row] Then gvwExpr.Data.Background = $iChangeColor 'Color.Lighter(Color.Yellow) gvwExpr.Data.Font.Bold = True Endif Else gvwExpr.Data.Text = Mid$(gvwExpr.Data.Text, 2) gvwExpr.Data.Background = $iErrorColor 'Color.Lighter(Color.Red) Endif gvwExpr.Data.Font = txtExpr.Font Else gvwExpr.Data.Text &= " " Endif Catch End Public Sub SetValue(iRow As Integer, sVal As String, Optional bAssign As Boolean) Dim vVal As Variant Dim sHex As String If bAssign Then If Left(sVal) = "!" Then With gvwExpr[iRow, 1] Balloon.Error(Mid$(sVal, 2), gvwExpr, .X + .W / 2, .Y + .H / 2) End With Endif Else If btnHexa.Value Then vVal = Val(sVal) Select Case TypeOf(vVal) Case gb.Integer sHex = Hex$(vVal, 8) Case gb.Long sHex = Hex$(vVal, 16) End Select If sHex Then While Left(sHex) = "0" sHex = Mid$(sHex, 2) Wend If sHex Then sVal = "&H" & sHex Endif Endif $cVal[iRow] = sVal Endif gvwExpr[iRow, 1].Refresh End Private Sub OpenExpr(sExpr As String, Optional sRealExpr As String) $sYWindow = $sExpr $sLastExpr = $sExpr If Not sRealExpr Then sRealExpr = sExpr Design.Command("#X" & sExpr & "\t" & sRealExpr) End Private Sub GetCurrentExpr() As String Dim sSym As String Dim sText As String If gvwExpr.Row < 0 Then Return If Not $bArray And If Not $bCollection Then sSym = $aSym[gvwExpr.Row] If Left(sSym) = ":" Then Return Endif sText = Trim(gvwExpr[gvwExpr.Row, 0].Text) If Not sText Then Return If $bArray Or $bCollection sText = $sExpr & "[" & sText & "]" Else If Left($sClass) = "." Or If Not $sRealClass Then sText = $sExpr & "." & sText Else 'sText = $sExpr & "." & sText sText = $sRealClass & "(" & $sExpr & ")." & sText Endif Endif Return sText End Public Sub gvwExpr_Activate() Dim sText As String Dim sSym As String Dim sVal As String If gvwExpr.Row >= 0 Then If Not $bArray And If Not $bCollection Then sSym = $aSym[gvwExpr.Row] If Left(sSym) = ":" Then Return Endif sText = GetCurrentExpr() If Not sText Then Return sVal = gvwExpr[gvwExpr.Row, 1].Text If Left(sVal) = "(" Then With gvwExpr[gvwExpr.Row, 1] Design.SetBalloon(gvwExpr, .X + .W / 2, .Y + .H / 2) End With OpenExpr(sText) Else gvwExpr.Column = 1 gvwExpr.Edit Endif Endif End Private Sub Init(sInfo As String, bNew As Boolean) As Boolean Dim aStatic As New String[] Dim aDynamic As New String[] Dim sSym As String Dim sType As String Dim nRow As Integer Dim iSize As Integer Dim nRowAsArray As Integer = -1 Dim bShowHidden As Boolean = btnShowAll.Value Dim bHasHidden As Boolean Dim bShowButton As Boolean $aSym = Split(sInfo, " ", Chr$(34)) If $aSym.Count < 3 Then Debug "???";; sInfo Return True Endif $sClass = $aSym[0] $sRealClass = $aSym[1] sType = $aSym[2] $iRowStatic = -1 $iRowDynamic = -1 If sType = "C:" Or If sType = "A:" Then bShowButton = True If sType = "C:" And If Not bShowHidden Then $aSym.Remove(0, 3) ' Remove the class names and the data type $bCollection = True $bArray = False nRow = Val(Mid$($aSym[0], 2, -1)) Else If sType = "A:" And If Not bShowHidden Then $aSym.Remove(0, 3) ' Remove the class names and the data type $bCollection = False $bArray = True sSym = Mid$($aSym[0], 2, -1) If InStr(sSym, ",") Then nRow = 1 $aDim = New Integer[] For Each sSym In Split(sSym, ",") iSize = CInt(sSym) $aDim.Add(iSize) nRow *= iSize Next Else nRow = CInt(sSym) $aDim = Null Endif Else While $aSym.Count If $aSym[0] = "S:" Or If $aSym[0] = "D:" Then Break $aSym.Remove(0) Wend $bCollection = False $bArray = False Endif If $bArray Then $aSym = Null Else If $bCollection Then $sCollectionKey = $aSym[1] ' Current collection key $aSym.Remove(0, 2) ' Remove the count and the current key Else ' Sort symbols For Each sSym In $aSym If Right(sSym) = ":" Then sType = UCase(sSym) Else If Left(sSym) = "_" Then bHasHidden = True If Not bShowHidden Then Continue If sSym Begins "_@" Then Continue Endif If Left(sSym) = "[" Then nRowAsArray = CInt(Mid$(sSym, 2, -1)) Continue Endif If sType = "S:" Then aStatic.Add(sSym) Else aDynamic.Add(sSym) Endif Endif Next If aDynamic.Count Then If aStatic.Count Then bHasHidden = True If Not bShowHidden Then aStatic.Clear Endif Endif aStatic.Sort aDynamic.Sort $aSym.Clear If aStatic.Count Then $iRowStatic = $aSym.Count 'IF aDynamic.Count THEN $aSym.Add("S:") $aSym.Insert(aStatic) Endif If aDynamic.Count Then $iRowDynamic = $aSym.Count If aStatic.Count Then $aSym.Add("D:") $aSym.Insert(aDynamic) Endif nRow = $aSym.Count ' If aStatic.Count = 1 And If aDynamic.Count = 0 And If aStatic[0] = "Count" And If nRowAsArray >= 0 Then ' nRow = nRowAsArray ' $bArray = True ' $aSym = Null ' Else If aDynamic.Count = 1 And If aStatic.Count = 0 And If aDynamic[0] = "Count" And If nRowAsArray >= 0 Then ' nRow = nRowAsArray ' $bArray = True ' $aSym = Null ' Endif Endif If Left$($sClass) = "." Or If Not $sRealClass Then Me.Title = $sExpr & " (" & $sClass & ")" Else Me.Title = $sExpr & " (" & $sRealClass & ")" Endif If nRow = 0 Then gvwExpr.Hide gvwExpr.Rows.Count = 0 lblVoid.Show Return Endif gvwExpr.Clear gvwExpr.Show lblVoid.Hide With gvwExpr .Columns.Count = 2 'If nRow > 1024 Then Stop .Rows.Count = nRow If $bArray Then .Columns[0].Text = ("Index") '.Columns[0].Width = Max(80, .Font.Width(CStr(nRow)) + 16) .Columns[1].Text = ("Value") Else If $bCollection Then .Columns[0].Text = ("Key") '.Columns[0].Width = .Font.Width("Key") + 16 .Columns[1].Text = ("Value") Else .Columns[0].Text = ("Symbol") '.Columns[0].Width = .Font.Width("Symbol") + 16 .Columns[1].Text = ("Value") Endif .Columns[0].Width = Desktop.Scale * 10 End With If $iRowDynamic >= 0 And If $iRowStatic >= 0 Then gvwExpr.Rows[$iRowDynamic].Height = 2 If Not bNew Then Try gvwExpr.Columns[0].Width = -1 btnShowAll.Visible = bShowButton Or bHasHidden End Public Sub RefreshInfo(sInfo As String) Dim xStr As String $sInfo = sInfo Me.Enabled = True For Each xStr In $cVal $cOldVal.Add(xStr, $cVal.Key) Next $cVal.Clear Init(sInfo, False) End Public Sub Form_Close() WriteSetting $cAll.Remove($sExpr) Catch End Static Public Sub RefreshAll() Dim xObj As Object For Each xObj In $cAll Design.Command("#X" & $cAll.Key & "\t" & $cAll.Key) Next End ' STATIC PUBLIC FUNCTION IsSender() AS Form ' ' DIM sKey AS String ' ' IF $sYWindow THEN ' sKey = $sYWindow ' $sYWindow = "" ' RETURN $cAll[sKey] ' ELSE ' RETURN NULL ' ENDIF ' ' END Static Public Function Exist(sExpr As String) As Boolean If Not sExpr Then Return Return $cAll.Exist(sExpr) End Static Public Sub Disable(sExpr As String, sError As String) Dim hWin As FDebugExpr If Not sError Then Return hWin = $cAll[sExpr] hWin.Enabled = False hWin.Title = sExpr & " (" & YW_NOT_AVAILABLE & ")" End ' PUBLIC SUB mnuCloseAll_Click() ' ' Clear() ' ' END ' ' PUBLIC SUB mnuClose_Click() ' ' ME.Close ' ' END ' ' PUBLIC SUB mnuSetSize_Click() ' ' Project.Config.Write(ME, "DebugWindow/DefaultSize") ' ' Design.$DebugConfig[ME.Name &/ "YWindowDefaultSize/gvwExpr.Columns[0].Width"] = gvwExpr.Columns[0].Width ' ' END Public Sub WriteSetting() Project.Config.Clear("DebugWindow" &/ $sKey) If btnShowAll.Value Then Project.Config["DebugWindow" &/ $sKey &/ "ShowHidden"] = True Project.Config["DebugWindow" &/ $sKey &/ "Geometry"] = [Me.X, Me.Y, Me.W, Me.H] End Static Public Sub WriteSettings() Dim iInd As Integer Dim sFlag As String Dim hExpr As FDebugExpr sFlag = "/DebugWindow" iInd = 0 Project.Config.Clear(sFlag) Project.Config[sFlag &/ "Count"] = $cAll.Count For Each hExpr In $cAll Inc iInd Project.Config[sFlag &/ "DebugWindow[" & CStr(iInd) & "]"] = $cAll.Key hExpr.WriteSetting Next End Static Public Sub ReadSettings() Dim iCount As Integer Dim iInd As Integer Dim sString As String Dim sFlag As String sFlag = "/DebugWindow" iInd = 0 iCount = Project.Config[sFlag &/ "Count", "0"] For iInd = 1 To iCount sString = Project.Config[sFlag &/ "DebugWindow[" & CStr(iInd) & "]"] If sString Then If Not $cAll.Exist(sString) Then Add(sString, YW_DUMMY_INFO) Endif Endif Next End ' PUBLIC SUB txtExpr_Change() ' ' DIM sExpr AS String ' ' IF NOT $sLastGood THEN ' $sLastGood = txtExpr.Text ' ELSE IF NOT (txtExpr.Text LIKE ($sExpr & "*")) THEN ' sExpr = $sLastGood ' $sLastGood = "" ' txtExpr.Text = sExpr ' ENDIF ' ' END Public Sub txtExpr_Activate() Dim sExpr As String = Trim(txtExpr.Text) If sExpr Then Design.SetBalloon(txtExpr) OpenExpr(sExpr) gvwExpr.SetFocus Endif End Public Sub txtExpr_LostFocus() txtExpr.Text = $sExpr End Public Sub txtExpr_KeyPress() If Key.Code = Key.Escape And If txtExpr.Text <> $sExpr Then txtExpr.Text = $sExpr Stop Event Endif End Public Sub Form_Open() Dim aGeom As Integer[] aGeom = Project.Config["DebugWindow" &/ $sKey &/ "Geometry"] If aGeom Then Try Me.Move(aGeom[0], aGeom[1], aGeom[2], aGeom[3]) Else Me.Move(FMain.X, FMain.Y) Endif If $sLastExpr Then If $cAll.Exist($sLastExpr) Then With $cAll[$sLastExpr] Me.Move(.X + Desktop.Scale * 2, .Y + Desktop.Scale * 2, .W, .H) End With Endif $sLastExpr = "" Endif gvwExpr.SetFocus UpdateConfig Try gvwExpr.Columns[0].Width = -1 End Public Sub UpdateConfig() Project.SetSmallFont(gvwExpr) Project.SetSmallFont(lblVoid) Project.SetEditorFont(txtExpr) End Public Sub btnShowAll_Click() $cVal.Clear Init($sInfo, False) End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then Me.Close End Static Public Sub ReadConfig() Dim hWin As FDebugExpr $iChangeColor = MTheme.GetColor("CurrentLine") $iErrorColor = MTheme.GetColor("Error") For Each hWin In $cAll hWin.UpdateConfig Next End Private Sub UpdateView() Balloon.Hide(gvwExpr) End Public Sub gvwExpr_Select() UpdateView End Public Sub gvwExpr_Scroll() UpdateView End Public Sub gvwExpr_Save(Row As Integer, (Column) As Integer, Value As String) Dim sSym As String Value = Trim(Value) If Value Then If $bArray Then $cVal[Row] = Null Design.Command("=X" & $sExpr & "#" & CStr(Row) & "\t" & $sExpr & "[" & GetIndiceFromRow(Row) & "] = " & Value) Else If $bCollection Then sSym = Chr$(34) & $aSym[Row] & Chr$(34) $cVal[Row] = Null Design.Command("=X" & $sExpr & "#" & CStr(Row) & "\t" & $sExpr & "[" & sSym & "] = " & Value) Else sSym = $aSym[Row] $cVal[Row] = Null If Left($sClass) = "." Or If Not $sRealClass Then Design.Command("=X" & $sExpr & "#" & CStr(Row) & "\t" & $sExpr & "." & sSym & " = " & Value) Else Design.Command("=X" & $sExpr & "#" & CStr(Row) & "\t" & $sRealClass & "(" & $sExpr & ")." & sSym & " = " & Value) Endif Endif Endif gvwExpr.Cancel End ' Public Sub gvwExpr_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) ' ' If Column = 1 And If Row = gvwExpr.Row Then ' ' Paint.DrawPicture(Picture["img/16/watch.png"], X + Width - 16, Y + (Height - 16) / 2) ' ' Endif ' ' End Public Sub gvwExpr_Menu() If gvwExpr.Row < 0 Then Return If Not GetCurrentExpr() Then Return mnuPopup.Popup End Public Sub mnuEdit_Click() gvwExpr_Activate End Public Sub mnuWatch_Click() Dim sExpr As String sExpr = GetCurrentExpr() If Not sExpr Then Return FDebugInfo.AddWatch(sExpr) End Public Sub mnuPrint_Click() Dim sExpr As String sExpr = GetCurrentExpr() If Not sExpr Then Return FOutput.PrintExpr(sExpr) End Public Sub btnHexa_Click() $cVal.Clear Init($sInfo, False) End gambas-3.16.3/app/src/gambas3/.src/Debug/FDebugExpr.form000066400000000000000000000030451411575327000225040ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,29,37) Icon = Picture["icon:/small/watch"] Utility = True Arrangement = Arrange.Vertical { mnuPopup Menu Visible = False { mnuEdit Menu Text = ("Edit") Picture = Picture["icon:/small/edit"] } { mnuWatch Menu Text = ("Watch") Picture = Picture["icon:/small/watch"] } { mnuPrint Menu Text = ("Print to console") Picture = Picture["icon:/small/terminal"] } { Menu1 Menu } { mnuClose Menu Text = ("Cancel") Picture = Picture["icon:/small/cancel"] } } { HBox1 HBox MoveScaled(1,1,27,4) Background = Color.TextBackground { txtExpr TextBox MoveScaled(0,0,16,4) Expand = True Border = False } { btnShowAll ToolButton MoveScaled(18,0,4,4) ToolTip = ("Show all symbols") Picture = Picture["icon:/small/add"] Toggle = True } { btnHexa ToolButton MoveScaled(22,0,4,4) #Translate = False Font = Font["Bold"] ToolTip = "Show all symbols" Text = "&&H" Toggle = True } } { Separator1 Separator MoveScaled(4,7,10,0) } { lblVoid Label MoveScaled(5,8,22,6) Visible = False Font = Font["Italic"] Background = Color.TextBackground Expand = True Padding = 4 Text = ("No element") Alignment = Align.TopNormal } { gvwExpr TableView MoveScaled(2,11,21,17) Expand = True Border = False Mode = Select.Single Header = GridView.Horizontal NoKeyboard = True } } gambas-3.16.3/app/src/gambas3/.src/Debug/FDebugInfo.class000066400000000000000000000745131411575327000226330ustar00rootroot00000000000000' Gambas class file Public Shown As Boolean Private Enum TAB_DEBUG, TAB_CONSOLE, TAB_BREAK, TAB_COMPILATION, TAB_TASK, TAB_TEST, TAB_VERSION_CONTROL, TAB_SEARCH Private $cRefreshBreakpoint As New Collection Private $cRefreshTask As New Collection Private $aTask As CTask[] 'Private $cLocal As New Collection ' key -> row 'Private $bSortLocal As Boolean 'Private $bSortObject As Boolean Private $hForm As FEditor Private $sLastLocal As String Private $sLastObject As String Private $hBreakpoint As Picture Private $hDisabledBreakpoint As Picture Private $iTestBg As Integer Public Sub _new() Dim DS As Integer = Desktop.Scale If Not $hDisabledBreakpoint Then $hBreakpoint = Picture["icon:/small/halt"] $hDisabledBreakpoint = $hBreakpoint.Image.Desaturate().Gamma(0.3).Picture Endif With cvwVariable .Columns.Count = 2 End With With cvwObject .Columns.Count = 2 End With With gvwBreakpoint .AddColumn("", DS * 3).Resizable = False .AddColumn(("Class")) .AddColumn(("Line")) .AddColumn(("Function")) End With With gvwFind .AddColumn(("File")) .AddColumn(("Location")) .AddColumn(("Line")) .AddColumn(("Col.")) .AddColumn(("Text")) End With With gvwTask .AddColumn(("Type")) .AddColumn(("Class")) .AddColumn(("Line")) .AddColumn(("Text"), -1) End With With gvwCompilation .AddColumn(("Class")) .AddColumn(("Line")) '.AddColumn(("Col.")) .AddColumn(("Message")) End With HideTab(TAB_COMPILATION) 'wizDebug[TAB_SEARCH].Closable = True splDebug.MinSize = Desktop.Scale * 24 ReadConfig 'UpdateLocal End Public Sub Form_Open() FOutput.Load(panConsole) HideTab(TAB_SEARCH) UpdateView 'GotoConsole End Public Sub Clear() lvwStack.Clear cvwVariable.Clear cvwObject.Clear $cRefreshBreakpoint.Clear End Public Sub EnableStack(bOn As Boolean) lvwStack.Enabled = bOn End Public Sub FillStack(aPos As String[]) As Boolean Dim sPos As String Dim iInd As Integer Dim sKey As String Dim W As Integer Object.Lock(lvwStack) If lvwStack.Count And If aPos[0] = lvwStack[0].Text Then sKey = lvwStack.Key Else sKey = 0 Endif lvwStack.Clear W = Desktop.Scale * 16 For Each sPos In aPos If sPos = "?" Then lvwStack.Add(iInd, "(" & ("native code") & ")") Else lvwStack.Add(iInd, sPos) W = Max(W, lvwStack.Font.TextWidth(sPos)) Endif Inc iInd Next lvwStack.W = W + Desktop.Scale * 2 If lvwStack.Exist(sKey) Then lvwStack[sKey].Selected = True lvwStack[sKey].EnsureVisible Endif Object.Unlock(lvwStack) Return lvwStack.Key = "0" End Public Sub lvwStack_Click() Dim sLoc As String Design.Command("@" & lvwStack.Key) FDebugExpr.RefreshAll RefreshAllWatch sLoc = lvwStack.Current.Text If InStr(sLoc, "(") Then Return Project.Goto(sLoc) Catch End Private Sub AddVariableHeader(hView As ColumnView, sKey As String, sText As String) If hView.Exist(sKey) Then Return With hView.Add(sKey, sText) .MoveFirst() .Font = lvwStack.Font .Background = Color.SetAlpha(Color.Foreground, 240) End With End Public Sub AddResultWatch(sCmd As String, Optional sRes As String, Optional bInstant As Boolean) Dim sVal As String 'IF Left$(sRes, 1) = "=" THEN ' sVal = Mid$(sRes, 2) 'ELSE ' sVal = "** " & sRes 'ENDIF sVal = sRes If bInstant Then If Right(sCmd) = ":" Then If FDebugExpr.Exist(Left(sCmd, Len(sCmd) - 1)) Then Return 'ShowAsBalloon(sVal) If $hForm Then $hForm.ShowWatchResult(sVal) ', $iX, $iY) $hForm = Null Else FOutput.Insert(sVal) Endif Else Design.Command("#X" & sCmd & "\t" & sCmd) Endif Else AddVariableHeader(cvwVariable, "@", ("Watch expressions")) Try cvwVariable.Add("@" & sCmd, sCmd,, "@").EnsureVisible With cvwVariable["@" & sCmd] If Left(sVal) = "!" Then sVal = Mid$(sVal, 2) .Foreground = Color.Red Else .Foreground = Color.Default Endif .[1] = sVal End With Endif End Public Sub RefreshAllWatch() If cvwVariable.MoveTo("@") Then Return If cvwVariable.MoveChild() Then Return Repeat Design.Command("?W" & cvwVariable.Item.Text & "\t" & cvwVariable.Item.Text) Until cvwVariable.MoveNext() End Public Sub AddWatch(sExpr As String) If cmbWatch.Find(sExpr) < 0 Then cmbWatch.Add(sExpr) Endif Design.Command("?W" & sExpr & "\t" & sExpr) End Public Sub InstantWatch(sExpr As String, hForm As FEditor) If Not sExpr Then Return $hForm = hForm Design.Command("?I" & sExpr & "\t" & sExpr) End Public Sub cmbWatch_Activate() Dim sExpr As String sExpr = Trim(cmbWatch.Text) If Not sExpr Then Return AddWatch(sExpr) cmbWatch.Text = "" End Public Sub btnAddWatch_Click() cmbWatch_Activate End Public Sub btnKillWatch_Click() Dim sKey As String sKey = cvwVariable.Key If sKey Begins "@" Then If sKey = "@" Then If Message.Question(("Do you want to clear the expression list ?"), ("Clear"), ("Cancel")) = 2 Then Return Endif cvwVariable.Remove(sKey) If sKey <> "@" And If cvwVariable["@"].Children = 0 Then cvwVariable.Remove("@") Endif End Public Sub cmbWatch_Click() btnAddWatch_Click End Private Sub WatchExpression(sText As String) Design.Command("#X" & sText & "\t" & sText) End Private Sub InitFont(hView As ColumnView, fSize As Float) Dim sKey As String Project.SetConsoleFont(hView) For Each sKey In hView.Keys If hView[sKey].Font Then hView[sKey].Font.Size = hView.Font.Size * fSize Next hView.Font.Size *= fSize End Public Sub ReadConfig() 'Dim hButton As ToolButton Dim hCtrl As Control Dim hFont As Font Dim H As Integer Dim hChild As Control Dim fSize As Float Settings.Read(panDebug) wizDebug.TextFont = Project.GetSmallFont() Project.SetSmallFont(gvwBreakpoint) hFont = gvwBreakpoint.Font gvwTask.Font = hFont gvwCompilation.Font = hFont fSize = Project.GetPercentFontSize("/DebuggerFontSize", 80) Project.SetNormalFont(lvwStack, fSize) InitFont(cvwVariable, fSize) InitFont(cvwObject, fSize) cmbWatch.Font = cvwVariable.Font FDebugButton.ReadConfig Project.SetConsoleFont(trmVersionControl) MTheme.InitControl(trmVersionControl) Project.SetConsoleFont(trmTest) MTheme.InitControl(trmTest) For Each hCtrl In [panBreakpoint, panSearch, panVersionControl, panTest] Project.SetSmallFont(hCtrl) Next H = Max(Stock.GetSize("tiny"), cmbWatch.Font.H) * 1.4 panWatch.H = H For Each hChild In panWatch.Children If hChild Is PictureBox Or If hChild Is ToolButton Then hChild.W = hChild.H Next End Public Sub wizDebug_Click() If Design.IsRunning() Then Select Case wizDebug.Index Case TAB_CONSOLE FOutput.SetFocus End Select Return Endif Select Case wizDebug.Index Case TAB_DEBUG DefineVariable($sLastLocal, $sLastObject) Case TAB_CONSOLE If FMain.IsDebugVisible() Then FOutput.SetFocus Case TAB_BREAK timBreakpoint_Timer RefreshBreakpointView Case TAB_COMPILATION Case TAB_TASK If Not $aTask Then UpdateTask Else timTask_Timer Endif Case TAB_SEARCH FSearch.RefreshBrowse End Select End Public Sub tbvLocal_Activate() Dim hTable As TableView = Last Dim sExpr As String Dim sVal As String Dim iCol As Integer If hTable[hTable.Row, 0].ColumnSpan >= 2 Then Return iCol = hTable.Column And Not 1 sExpr = hTable[hTable.Row, iCol].Text sVal = hTable[hTable.Row, iCol + 1].Text If Left(sVal) = "(" Then Design.Command("#X" & sExpr & "\t" & sExpr) Else hTable.Column = iCol + 1 hTable.Edit Endif End Public Sub IsEditing() As Boolean If cvwVariable.Renaming Or If cvwObject.Renaming Then Return True End Public Sub tbvObject_Activate() tbvLocal_Activate End Public Sub WriteWatchSettings() Dim iInd As Integer Dim sFlag As String Dim iCount As Integer sFlag = "/Watches" iInd = 0 Project.Config.Clear(sFlag) Try iCount = cvwVariable["@"].Children Project.Config[sFlag &/ "Count"] = iCount If iCount Then cvwVariable.MoveTo("@") cvwVariable.MoveChild() While cvwVariable.Available Inc iInd Project.Config[sFlag &/ "Watch[" & CStr(iInd) & "]"] = cvwVariable.item.Text cvwVariable.MoveNext() Wend Endif End Public Sub ReadWatchSettings() Dim iCount As Integer Dim iInd As Integer Dim sFlag As String Dim sExpr As Variant sFlag = "/Watches" iInd = 0 iCount = Project.Config[sFlag &/ "Count", "0"] Try cvwVariable.Remove("@") For iInd = 1 To iCount sExpr = Project.Config[sFlag &/ "Watch[" & CStr(iInd) & "]"] AddResultWatch(sExpr) Next End Public Sub UpdateView() Dim bUndock As Boolean = Settings["/FOutput/Undock"] Dim bVisible As Boolean If bUndock Then If FOutput.Parent Then FOutput.Reparent(Null) FOutput.Enabled = True 'DEBUG "Read: "; Settings["/FOutput/Geometry"][0];; Settings["/FOutput/Geometry"][1] Settings.Read(FOutput) FOutput.OnProjectDebug FOutput.Show FMain.ShowDebug(False) 'DEBUG FOutput.X;; FOutput.Y 'Action["console"].Visible = TRUE 'If Not Project.Running Then FMain.ShowDebug(False) Endif 'FOutput.Stacking = If(Project.Running, Window.Above, Window.Normal) Endif ShowTab(TAB_CONSOLE, Not bUndock) ShowTab(TAB_DEBUG, Project.Running) ShowTab(TAB_BREAK) ShowTab(TAB_VERSION_CONTROL, VersionControl.Enabled) ' If panStack.Visible <> Project.Running Then ' If Project.Running Then ' panStack.Visible = True ' Settings.Read(panDebug) ' 'Settings.Read(splDebug,, [4, 1]) ' Else ' Settings.Write(panDebug) ' 'Settings.Write(splDebug) ' panStack.Visible = False ' Endif ' Endif ' panButtonCompilation.Visible = Not Project.Running ' panButtonTask.Visible = Not Project.Running ' panButtonSearch.Visible = Not Project.Running If Not bUndock Then If Not FOutput.Parent Then bVisible = FOutput.Visible 'DEBUG "Write: "; FOutput.X;; FOutput.Y Settings.Write(FOutput) FOutput.Reparent(panConsole, 0, 0) FOutput.Show 'Action["console"].Value = TRUE 'Action["console"].Visible = FALSE 'If bVisible Then FMain.ShowDebug(True) Endif 'SelectTab(TAB_CONSOLE) 'FOutput.SetFocus Endif FDebugButton.UpdateView FMain.UpdateConsoleAction() End Public Sub btnShowMe_Click() WatchExpression("Me") End Public Sub RefreshBreakpoint(sClass As String) Dim hEditor As FEditor hEditor = Project.Files[Project.FindPath(sClass)] If Not hEditor Then Return If hEditor.GetEditor().Breakpoints.Count = 0 And If Not Design.HasBreakpoint(sClass) Then Return $cRefreshBreakpoint[sClass] = sClass timBreakpoint.Restart 'timBreakpoint.Start End Public Sub timBreakpoint_Timer() Dim sClass As String Dim hEditor As FEditor For Each sClass In $cRefreshBreakpoint hEditor = Project.Files[Project.FindPath(sClass)] If Not hEditor Then Continue Design.RefreshBreakpointFromEditor(hEditor) Next ' gvwBreakpoint.Rows.Count = $aBreakpoint.Count ' gvwBreakpoint.Columns.Width = -1 $cRefreshBreakpoint.Clear timBreakpoint.Stop End Public Sub tbvLocal_Scroll() Balloon.Hide(Last) End Public Sub tbvLocal_Select() Balloon.Hide(Last) End Public Sub tbvObject_Scroll() Balloon.Hide(Last) End Public Sub tbvObject_Select() Balloon.Hide(Last) End Public Sub btnShow_Click() Dim sText As String = Trim(cmbWatch.Text) If Not sText Then Return WatchExpression(sText) End Public Sub GetSearchList() As Control Return gvwFind End Public Sub ShowSearchList() FMain.ShowDebug(True) gvwFind.Show lblNotFound.Hide 'lblBrowse.Hide ShowTab(TAB_SEARCH) SelectTab(TAB_SEARCH) End Public Sub HideSearchList() gvwFind.Hide lblNotFound.Show End Public Sub SetSearchListInfo(Optional sText As String) lblBrowse.Text = sText gvwFind.Visible = sText lblNotFound.Visible = Not sText 'lblBrowse.Show End Public Sub StartSearch() spnSearch.Start spnSearch.Show End Public Sub StopSearch() spnSearch.Stop spnSearch.Hide End Public Sub btnShowSearch_Click() FSearch.WakeUp(False, True) End Public Sub btnRefreshSearch_Click() FSearch.BrowseAgain End Private Sub DisableRec(hCtrl As Control, aExcept As Control[], bOn As Boolean) Dim hCont As Container Dim iCount As Integer Dim hMulti As Object Dim iInd As Integer If Not aExcept.Exist(hCtrl) Then hCtrl.Enabled = bOn Return Endif If Not hCtrl Is Container Then Return hCont = hCtrl hMulti = hCtrl Try iCount = hMulti.Count If Not Error Then For iInd = 0 To iCount - 1 If iInd <> hMulti.Index Then hMulti[iInd].Enabled = bOn Endif Next Endif For Each hCtrl In hCont.Children DisableRec(hCtrl, aExcept, bOn) Next End Private Sub DisableEverything(bOn As Boolean) Dim aCtrl As New Control[] Dim hCtrl As Control Dim hWin As Window For Each hWin In Windows If Not Object.IsValid(hWin) Then Continue If hWin = FMain.Window Or If hWin = FSearch.Window Then Continue hWin.Enabled = bOn Next hCtrl = btnCancelSearch While hCtrl aCtrl.Add(hCtrl) hCtrl = hCtrl.Parent Wend aCtrl.Add(lblBrowse) DisableRec(FMain.Window, aCtrl, bOn) aCtrl.Clear aCtrl.Add(FSearch.Window) DisableRec(FSearch.Window, aCtrl, bOn) End Public Sub EnableGUI(bOn As Boolean) 'lblBrowse.Visible = Not bOn btnCancelSearch.Visible = Not bOn DisableEverything(bOn) End Public Sub btnCancelSearch_Click() FSearch.Cancel() End Public Sub IsSearchListVisible() As Boolean Return wizDebug.Index = TAB_SEARCH And FMain.IsDebugVisible() End Private Sub GotoConsole() If IsNull(FOutput.Parent) Then SelectTab(TAB_BREAK) Else SelectTab(TAB_CONSOLE) Endif End ' Public Sub btnClearSearch_Click() ' ' FSearch.ResetBrowse ' GotoConsole ' tabDebug[TAB_SEARCH].Visible = False ' ' End Public Sub OnVisibilityChange() If IsSearchListVisible() Then FSearch.RefreshBrowse End Public Sub ShowConsole() If FOutput.Parent Then FDebugButton.SelectButton(TAB_CONSOLE) FOutput.SetFocus End Public Sub RefreshTabs(sPath As String, sName As String) RefreshBreakpoint(sName) RefreshTask(sPath) End Public Sub RefreshTask(sPath As String) $cRefreshTask[sPath] = sPath If wizDebug.Index = TAB_TASK Then timTask.Restart Endif End Private Sub AfterRefreshTask() $aTask.Sort $cRefreshTask.Clear gvwTask.Rows.Count = $aTask.Count gvwTask_Font gvwTask.Refresh End Public Sub gvwTask_Font() Dim I As Integer For I = 0 To gvwTask.Columns.Max - 1 gvwTask.Columns[I].W = -1 Next End Public Sub UpdateTask() Dim sPath As String If wizDebug.Index <> TAB_TASK Then Return Inc Application.Busy $aTask = New CTask[] For Each sPath In Project.Tree.Sources $aTask.Insert(CTask.ScanFile(sPath)) Next AfterRefreshTask Dec Application.Busy End Public Sub timTask_Timer() Dim sPath As String Dim sClass As String Dim I As Integer If Not $aTask Then Return If $cRefreshTask.Count = 0 Then Return For Each sPath In $cRefreshTask sClass = File.BaseName(sPath) I = 0 While I < $aTask.Count If $aTask[I].Class = sClass Then $aTask.Remove(I) Else Inc I Endif Wend $aTask.Insert(CTask.ScanFile(sPath)) Next AfterRefreshTask timTask.Stop End Public Sub gvwTask_Data(Row As Integer, Column As Integer) Dim hTask As CTask If Not $aTask Then Return hTask = $aTask[Row] With gvwTask.Data Select Case hTask.Type Case CTask.TYPE_NOTE .Foreground = Color.Default Case CTask.TYPE_FIXME .Foreground = Color.Gradient(Color.Red, Color.TextForeground) Case CTask.TYPE_TODO .Foreground = Color.Gradient(Color.Green, Color.TextForeground) End Select Select Case Column Case 1 .Text = hTask.Class Case 2 .Text = CStr(hTask.Line) Case 0 Select Case hTask.Type Case CTask.TYPE_NOTE .Text = "NOTE" Case CTask.TYPE_FIXME .Text = "FIXME" Case CTask.TYPE_TODO .Text = "TODO" End Select Case 3 .Text = hTask.Text End Select End With End Public Sub gvwTask_Activate() Dim hTask As CTask = $aTask[gvwTask.Row] Project.OpenFile(hTask.Name, hTask.Line) Catch End Public Sub OnProjectChange() $aTask = Null UpdateTask SetCompilation() CloseSearch trmVersionControl.Clear trmTest.Clear panTestResult.Hide End Public Sub ShowError(sMsg As String) If Me.Visible Then Balloon(sMsg, lvwStack, Picture["icon:/32/error"], 8, 8) Else sMsg = Replace(sMsg, "\n", "
    ") Message.Error(sMsg) Endif End Public Sub SetCompilation(Optional aOutput As String[]) Dim sLine As String Dim aLine As String[] Dim I As Integer Dim aPos As String[] gvwCompilation.Clear If Not aOutput Or If aOutput.Count = 0 Then HideTab(TAB_COMPILATION) 'GotoConsole Return Endif aOutput.Sort(gb.Natural) gvwCompilation.Rows.Count = aOutput.Count For Each sLine In aOutput aLine = Scan(sLine, "*:*: warning: *") If aLine.Count <> 3 Then aLine = Scan(sLine, "gbc3: warning: *") If aLine.Count <> 1 Then Continue aLine.Add("", 0) aLine.Add("", 0) Endif gvwCompilation[I, 0].Text = Trim(File.BaseName(aLine[0])) If InStr(aLine[1], ":") Then aPos = Split(aLine[1], ":") gvwCompilation[I, 1].Text = aPos[0] 'gvwCompilation[I, 2].Text = aPos[1] Else gvwCompilation[I, 1].Text = aLine[1] Endif gvwCompilation[I, 2].Text = String.UCaseFirst(Project.TranslateMessage(Trim(aLine[2]))) gvwCompilation[I, 2].Font = Project.GetEditorFont() Inc I Next gvwCompilation.Rows.Count = I gvwCompilation_Font ShowTab(TAB_COMPILATION) 'wizDebug[TAB_COMPILATION].Text = ("Warnings") & " (" & gvwCompilation.Rows.Count & ")" Action["console"].Value = True SelectTab(TAB_COMPILATION) End Public Sub gvwCompilation_Font() gvwCompilation.Columns[0].Width = -1 gvwCompilation.Columns[1].Width = -1 End Public Sub gvwCompilation_Select() Dim I As Integer = gvwCompilation.Row 'Dim iCol As Integer 'Try iCol = CInt(gvwCompilation[I, 2].Text) 'If Error Then iCol = -1 Project.OpenFile(gvwCompilation[I, 0].Text, CInt(gvwCompilation[I, 1].Text)) Catch End Public Sub GotoFirstWarning() If gvwCompilation.Rows.Count = 0 Then Return gvwCompilation.Row = 0 'gvwCompilation_Activate End ' Public Sub btnLocalCopy_Click() ' ' Dim sText As String ' Dim I As Integer ' ' For I = 0 To $aLocal.Max ' sText &= $aLocal[I] & " = " & $aValLocal[I] & "\n" ' Next ' ' Clipboard.Copy(sText) ' ' End Private Sub CloseSearch() FSearch.ResetBrowse If wizDebug[TAB_SEARCH].Enabled Then If wizDebug.Index = TAB_SEARCH Then GotoConsole HideTab(TAB_SEARCH) Endif End Public Sub SelectTab(iTab As Integer) If wizDebug.Index = iTab Then Return wizDebug.Index = iTab FDebugButton.SelectButton(iTab) End Private Sub ShowTab(iTab As Integer, Optional bShow As Boolean = True) If bShow Then wizDebug[iTab].Enabled = True FDebugButton.ShowButton(iTab, True) Else HideTab(iTab) Endif End Private Sub HideTab(iTab As Integer) As Boolean wizDebug[iTab].Enabled = False FDebugButton.ShowButton(iTab, False) End Public Sub GetCurrentTab() As Integer Return wizDebug.Index End Public Sub btnCloseSearch_Click() CloseSearch FMain.ShowDebug(False) End Public Sub gvwBreakpoint_Data(Row As Integer, Column As Integer) Dim sBreakpoint As String Dim hEditor As FEditor Dim aBreak As String[] Try sBreakpoint = Design.GetBreakpoints()[Row] If Not sBreakpoint Then Return aBreak = Split(sBreakpoint, ".") Select Case Column Case 0 gvwBreakpoint.Data.Picture = If(Design.IsBreakpointDisabled(sBreakpoint), $hDisabledBreakpoint, $hBreakpoint) Case 1 gvwBreakpoint.Data.Text = aBreak[0] Case 2 gvwBreakpoint.Data.Text = CStr(CInt(aBreak[1]) + 1) Case 3 Try hEditor = Project.Files[Project.FindPath(aBreak[0])] If hEditor Then gvwBreakpoint.Data.Text = hEditor.GetProcAt(CInt(aBreak[1])) Else gvwBreakpoint.Data.Text = ("File not loaded") gvwBreakpoint.Data.Foreground = Color.LightForeground gvwBreakpoint.Data.Font.Italic = True Endif End Select End Public Sub gvwBreakpoint_Click() Dim sBreakpoint As String Dim aBreak As String[] If gvwBreakpoint.Row < 0 Then Return sBreakpoint = Design.GetBreakpoints()[gvwBreakpoint.Row] aBreak = Split(sBreakpoint, ".") If gvwBreakpoint.Column = 0 Then Design.SetBreakpoint(sBreakpoint, True, Not Design.IsBreakpointDisabled(sBreakpoint)) gvwBreakpoint.Rows[gvwBreakpoint.Row].Refresh Endif Try Project.OpenFile(aBreak[0], CInt(aBreak[1]) + 1) gvwBreakpoint.UnSelectAll gvwBreakpoint.Select(gvwBreakpoint.Row) End Public Sub RefreshBreakpointView() If wizDebug.Index <> TAB_BREAK Then Return gvwBreakpoint.Rows.Count = Design.GetBreakpoints().Count gvwBreakpoint_Font() gvwBreakpoint.Refresh 'gvwBreakpoint_Click End Public Sub gvwBreakpoint_Font() gvwBreakpoint.Columns[1].Width = -1 gvwBreakpoint.Columns[2].Width = -1 End Public Sub RemoveAllBreakpoints() Dim aBreakPoint As String[] aBreakpoint = Design.GetBreakpoints() While aBreakpoint.Count Design.SetBreakpoint(aBreakpoint[0], False) Wend RefreshBreakpointView End Public Sub btnRemoveBreakpoint_Click() Dim aBreakPoint As String[] Dim iRow As Integer aBreakpoint = Design.GetBreakpoints() For Each iRow In gvwBreakpoint.Rows.Selection.Reverse() Design.SetBreakpoint(aBreakpoint[iRow], False) Next RefreshBreakpointView End Private Sub ToggleBreakpoints(bDisable As Boolean) Dim aBreakPoint As String[] Dim iRow As Integer aBreakpoint = Design.GetBreakpoints() For Each iRow In gvwBreakpoint.Rows.Selection.Reverse() Design.SetBreakpoint(aBreakpoint[iRow], True, bDisable) Next End Public Sub btnEnableBreakpoint_Click() ToggleBreakpoints(False) End Public Sub btnDisableBreakpoint_Click() ToggleBreakpoints(True) End Public Sub btnRemoveAllBreakpoint_Click() If Project.Running Then Return RemoveAllBreakpoints End Public Sub DefineVariable(sLocal As String, sObject As String) Dim aLocal As String[] Dim aObject As String[] Dim sVar As String Dim hPict As Picture Dim sParent As String Dim bBold As Boolean Dim hBold As Font Dim vLayout As Variant Dim I As Integer Dim sPrefix As String aLocal = Split(sLocal, " ") aObject = Split(sObject, " ") If sObject <> $sLastObject Then If cvwObject.Count Then vLayout = cvwObject.Layout Else vLayout = Null Endif $sLastObject = sObject Try cvwObject.Remove("^") hBold = cvwObject.Font.Copy() hBold.Bold = True AddVariableHeader(cvwObject, "^", ("Current object")) sPrefix = " :" For I = 0 To aObject.Max sVar = aObject[I] If Right(sVar) = ":" Then sPrefix = sVar Else aObject[I] = sPrefix & aObject[I] Endif Next aObject.Sort sParent = "^" For I = 0 To aObject.Max sVar = aObject[I] If Right(sVar) = ":" Then sVar = Left(sVar) bBold = sVar = UCase(sVar) hPict = Picture["$symbol:" & If(sVar == "S", "s-", "") & "variable.png"] Else sVar = Mid$(sVar, 3) aObject[I] = sVar With cvwObject.Add("^" & sVar, sVar, hPict, sParent) If bBold Then .Font = hBold End With Endif Next If cvwObject["^"].Children = 0 Then cvwObject.Remove("^") If vLayout Then cvwObject.Layout = vLayout Endif If sLocal <> $sLastLocal Then If cvwVariable.Count Then vLayout = cvwVariable.Layout Else vLayout = Null Endif $sLastLocal = sLocal Try cvwVariable.Remove("~") hBold = cvwVariable.Font.Copy() hBold.Bold = True AddVariableHeader(cvwVariable, "~", ("Local variables")) For Each sVar In aLocal cvwVariable.Add("~" & sVar, sVar, Picture["$symbol:symbol"], "~") Next If cvwVariable["~"].Children = 0 Then cvwVariable.Remove("~") If vLayout Then cvwVariable.Layout = vLayout Try cvwVariable["~"].Expanded = True Endif If wizDebug.Index <> TAB_DEBUG Then Return For Each sVar In aObject If Right(sVar) = ":" Then Continue Design.Command("&V^" & sVar & "\t" & sVar) Next For Each sVar In aLocal Design.Command("&V~" & sVar & "\t" & sVar) Next End Public Sub AddVariable(sVar As String, sValue As String, Optional bAssign As Boolean) Dim hView As ColumnView If cvwVariable.Exist(sVar) Then hView = cvwVariable Else If cvwObject.Exist(sVar) Then hView = cvwObject Else Return Endif If bAssign Then If Left(sValue) = "!" Then With hView[sVar] Balloon.Error(Mid$(sValue, 2), hView, Design.BalloonX, Design.BalloonY) End With Endif Design.Command("&V" & sVar & "\t" & Mid$(sVar, 2)) Else hView[sVar][1] = sValue Endif End Public Sub cvwVariable_Activate() Dim sExpr As String Dim sVal As String Dim hView As ColumnView hView = Last With hView.Current If .Children Then Return sExpr = .Text sVal = .[1] If Left(sVal) = "(" Then Design.Command("#X" & sExpr & "\t" & sExpr) Else If .Key Begins "@" Then Return .Editable = True .Rename(1) .Editable = False Endif End With End Public Sub OnProjectDebug() $sLastLocal = "" $sLastObject = "" If Settings["/ShowDebugPanelAutomatically", True] Then FDebugButton.SelectButton(TAB_CONSOLE) End Public Sub OnProjectDebugState() panBreakpoint.Enabled = Not Design.IsRunning() gvwBreakpoint.Enabled = panBreakpoint.Enabled End Public Sub ShowDebugging() If Settings["/ShowDebugPanelAutomatically", True] Then FDebugButton.SelectButton(TAB_DEBUG) End Public Sub ShowTest() FMain.ShowDebug(True) FDebugButton.SelectButton(TAB_TEST) End Public Sub cvwVariable_Rename() Dim sVar As String Dim hView As ColumnView hView = Last With hView.Current sVar = .Key Design.SetBalloon(hView, hView.Columns[1].X + Desktop.Scale, .Y + .H / 2) Design.Command("=V" & sVar & "\t" & .Text & " = " & .[1]) 'Design.Command("&V" & sVar & "\t" & .Text) End With End Public Sub btnVcCommit_Click() If Project.Compile() Then Return FVersionControl.Run End Public Sub InsertVersionControl(sText As String) If FMain.IsDebugVisible() Then FDebugButton.SelectButton(TAB_VERSION_CONTROL) trmVersionControl.Print(Replace(sText, "\n", "\r\n")) End Public Sub btnVcUpdate_Click() VersionControl.Update End Public Sub btnVcRevert_Click() VersionControl.Revert End Public Sub btnVcAddAll_Click() FMain.mnuAddVersionAll_Click() End Public Sub OnVersionControlChange() UpdateView If VersionControl.Enabled Then lblVcName.Text = VersionControl.Name UpdateBranchMenu Endif End Private Sub UpdateBranchMenu() Dim sCurrent As String Dim aBranches As String[] Dim sBranch As String Dim hMenu As Menu aBranches = VersionControl.GetBranches(ByRef sCurrent) If Not sCurrent Then btnVcBranch.Hide Else btnVcBranch.Show btnVcBranch.Text = sCurrent mnuVcBranch.Children.Clear For Each sBranch In aBranches hMenu = New Menu(mnuVcBranch) As "mnuVcBranchSet" hMenu.Text = sBranch hMenu.Tag = sBranch hMenu.Radio = True hMenu.Value = sBranch = sCurrent Next Endif End Public Sub mnuVcBranchSet_Click() VersionControl.SetBranch(Last.Tag) UpdateBranchMenu End Public Sub btnVcClear_Click() trmVersionControl.Clear End Public Sub cvwVariable_Select() Balloon.Hide(Last) End Public Sub GetTestTerminal() As TerminalView Return trmTest End Public Sub btnTestClear_Click() trmTest.Clear panTestResult.Hide End Public Sub trmTest_Link() FOutput.CheckTerminalLink(trmTest) End Public Sub trmTest_Click() If trmTest.Link.Type = "goto" Then Project.Goto(trmTest.Link.Text) Endif End Public Sub StartTest() panTestResult.Hide spnTest.Show spnTest.Start End Public Sub StopTest(iResult As Integer) spnTest.Stop spnTest.Hide Select Case iResult Case MTest.TEST_FAIL lblTestResult.Text = ("Test has failed.") lblTestResult.Foreground = Color.DarkRed picTestResult.Picture = Picture["icon:/small/emote-sad"] $iTestBg = Color.Merge(Color.Red, Color.Background, 0.7) Case MTest.TEST_ABORT lblTestResult.Text = ("Test has been aborted.") lblTestResult.Foreground = Color.DarkYellow picTestResult.Picture = Picture["icon:/small/warning"] $iTestBg = Color.Merge(Color.Yellow, Color.Background, 0.7) Case Else lblTestResult.Text = ("Test has succeeded.") lblTestResult.Foreground = Color.DarkGreen picTestResult.Picture = Picture["icon:/small/love"] $iTestBg = Color.Merge(Color.Green, Color.Background, 0.7) End Select If Application.DarkTheme Then lblTestResult.Foreground = Color.Invert(lblTestResult.Foreground, True) $iTestBg = Color.Invert($iTestBg, True) Endif picTestResult.W = Stock.GetSize("small") panTestResult.W = picTestResult.W + lblTestResult.W + Desktop.Scale * 4 panTestResult.Show panTestResult.Refresh ShowTest End Public Sub panTestResult_Draw() Dim DS As Integer DS = Desktop.Scale \ 2 Paint.Rectangle(0, DS, Paint.W, Paint.H - DS * 2, DS * 4) Paint.Background = $iTestBg Paint.Fill End Public Sub trmTest_GotFocus() Project.SetCurrentPopup(Null) End gambas-3.16.3/app/src/gambas3/.src/Debug/FDebugInfo.form000066400000000000000000000231751411575327000224670ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,125,50) Text = ("Debug") Persistent = True Arrangement = Arrange.Fill { mnuVcBranch Menu #Translate = False Text = "Menu1" Visible = False { Menu1 Menu } } { wizDebug Wizard MoveScaled(2,5,122,41) Arrangement = Arrange.Vertical Count = 8 ShowTitle = False ShowButton = False Border = False Index = 0 Text = ("Debugging") { panDebug HBox MoveScaled(1,2,112,36) Expand = True { splDebug HSplit MoveScaled(6,1,94,34) Expand = True { lvwStack ListView MoveScaled(0,0,14,33) Mouse = Mouse.Pointing Border = False } { Panel7 VBox MoveScaled(16,1,74,32) { panWatch HBox MoveScaled(1,1,71,3) Drop = True { Panel5 HBox MoveScaled(1,0,41,3) Background = Color.TextBackground Expand = True { btnKillWatch ToolButton MoveScaled(0,0,3,3) ToolTip = ("Remove current expression") Picture = Picture["icon:/tiny/remove"] } { btnAddWatch ToolButton MoveScaled(3,0,3,3) ToolTip = ("Add expression") Picture = Picture["icon:/tiny/watch"] } { cmbWatch ComboBox MoveScaled(6,0,27,3) Expand = True Border = False } } { Separator6 Separator MoveScaled(52,0,0,3) } { btnShowMe ToolButton MoveScaled(56,0,4,3) #Translate = False Font = Font["-1"] ToolTip = "Display ME" Text = "ME" } { Separator3 Separator MoveScaled(63,0,0,3) } } { Separator4 Separator MoveScaled(4,11,30,0) } { splVariable HSplit MoveScaled(3,12,67,19) Expand = True { cvwVariable ColumnView MoveScaled(4,2,27,15) Expand = True Header = False Border = False } { cvwObject ColumnView cvwVariable Name = "cvwObject" MoveScaled(34,2,24,14) Expand = True Header = False Border = False } } } } { Panel4 Panel MoveScaled(107,1,4,4) } } Index = 1 Text = ("Console") { panConsole Panel MoveScaled(1,1,113,24) Expand = True Arrangement = Arrange.Fill } Index = 2 Text = ("Breakpoints") { panBreakpoint HBox MoveScaled(0,0,76,4) { btnRemoveBreakpoint ToolButton MoveScaled(3,0,11,4) ToolTip = ("Remove breakpoint") AutoResize = True Text = ("Remove") Picture = Picture["icon:/small/remove"] } { btnDisableBreakpoint ToolButton MoveScaled(14,0,11,4) ToolTip = ("Disable breakpoint") AutoResize = True Text = ("Disable") Picture = Picture["icon:/small/cancel"] } { btnEnableBreakpoint ToolButton MoveScaled(25,0,11,4) ToolTip = ("Enable breakpoint") AutoResize = True Text = ("Enable") Picture = Picture["icon:/small/apply"] } { btnRemoveAllBreakpoint ToolButton MoveScaled(37,0,13,4) ToolTip = ("Remove all breakpoints") AutoResize = True Text = ("Remove all") Picture = Picture["icon:/small/trash"] } { Spring2 Spring MoveScaled(62,0,4,4) } { Panel6 Panel MoveScaled(66,0,4,4) } } { Separator1 Separator MoveScaled(34,5,8,0) } { gvwBreakpoint GridView MoveScaled(7,9,53,28) Expand = True Border = False Mode = Select.Multiple Header = GridView.Horizontal } { timBreakpoint #Timer #MoveScaled(74,8) Delay = 50 } Index = 3 Text = ("Warnings") { Panel2 HBox MoveScaled(28,9,53,24) Expand = True { gvwCompilation GridView MoveScaled(1,1,38,21) Expand = True Border = False Mode = Select.Single Header = GridView.Horizontal } { panButtonCompilation Panel MoveScaled(46,5,4,4) } } Index = 4 Text = ("Tasks") { Panel3 HBox MoveScaled(10,10,61,24) Expand = True { gvwTask GridView MoveScaled(1,1,52,22) Expand = True Border = False Mode = Select.Single Header = GridView.Horizontal } { panButtonTask Panel MoveScaled(56,3,4,4) } } { timTask #Timer #MoveScaled(73,17) } Index = 5 Text = ("Unit tests") { panTest HBox MoveScaled(0,0,119,4) { btnTestClear ToolButton MoveScaled(0,0,4,4) ToolTip = ("Clear console") Picture = Picture["icon:/small/clear"] } { btnTest ToolButton MoveScaled(5,0,14,4) Action = "test" AutoResize = True Text = ("Run test") Picture = Picture["icon:/small/ok"] } { spnTest Spinner MoveScaled(27,0,4,4) Visible = False Margin = True Type = Spinner.Circle } { panTestResult DrawingArea MoveScaled(33,0,52,4) Arrangement = Arrange.Horizontal Centered = True Spacing = True { picTestResult PictureBox MoveScaled(3,0,4,4) Alignment = Align.Center } { lblTestResult Label MoveScaled(9,0,12,4) Font = Font["Bold"] AutoResize = True } } } { Separator2 Separator MoveScaled(19,6,34,0) } { trmTest TerminalView MoveScaled(1,8,69,27) Expand = True Border = False Limit = 65536 Blink = True ShowScrollBar = True ShowLink = True ReadOnly = True } Index = 6 Text = ("Version control") { panVersionControl HBox MoveScaled(0,0,119,4) { btnVcClear ToolButton MoveScaled(0,0,4,4) ToolTip = ("Clear console") Picture = Picture["icon:/small/clear"] } { btnVcCommit ToolButton MoveScaled(9,0,12,4) AutoResize = True Text = ("Commit") & "..." Picture = Picture["icon:/small/upload"] } { btnVcUpdate ToolButton MoveScaled(20,0,15,4) AutoResize = True Text = ("Synchronize") Picture = Picture["icon:/small/download"] } { btnVcRevert ToolButton MoveScaled(34,0,20,4) AutoResize = True Text = ("Revert all changes") & "..." Picture = Picture["icon:/small/undo"] } { btnVcAddAll ToolButton MoveScaled(54,0,27,4) AutoResize = True Text = ("Add everything to repository") Picture = Picture["icon:/small/add"] } { Spring1 Spring MoveScaled(82,0,4,4) } { lblVcName Label MoveScaled(90,0,6,4) Font = Font["Bold"] AutoResize = True } { Panel9 Panel MoveScaled(99,0,1,4) } { btnVcBranch MenuButton MoveScaled(102,0,11,4) AutoResize = True Picture = Picture["icon:/small/bookmark"] Border = False Menu = "mnuVcBranch" MenuOnly = True } { Panel8 Panel MoveScaled(114,0,4,4) } } { Separator7 Separator MoveScaled(19,6,34,0) } { trmVersionControl TerminalView MoveScaled(1,8,69,27) Expand = True Border = False Limit = 65536 Blink = True ShowLink = True ReadOnly = True } Index = 7 Text = ("Search result") { panSearch HBox MoveScaled(1,0,97,4) { btnCancelSearch ToolButton MoveScaled(0,0,10,4) Visible = False ToolTip = ("Cancel current search") AutoResize = True Text = ("Cancel") Picture = Picture["icon:/small/halt"] } { btnCloseSearch ToolButton MoveScaled(11,0,10,4) AutoResize = True Text = ("Close") Picture = Picture["icon:/small/close"] } { btnShowSearch ToolButton MoveScaled(21,0,21,4) AutoResize = True Text = ("Show search window") Picture = Picture["icon:/small/find"] } { btnRefreshSearch ToolButton MoveScaled(43,0,18,4) AutoResize = True Text = ("Search again") Picture = Picture["icon:/small/refresh"] } { Panel1 Panel MoveScaled(62,0,2,4) Expand = True } { lblBrowse Label MoveScaled(73,0,11,4) Font = Font["Italic"] Padding = 4 AutoResize = True } { spnSearch Spinner MoveScaled(86,0,4,4) Visible = False Padding = 4 Type = Spinner.Circle } { panButtonSearch Panel MoveScaled(90,0,4,4) } } { Separator5 Separator MoveScaled(35,5,8,0) } { panBrowse Panel MoveScaled(1,9,79,22) Expand = True Arrangement = Arrange.Fill { gvwFind GridView MoveScaled(23,4,47,16) Visible = False Border = False Mode = Select.Single Header = GridView.Horizontal } { lblNotFound TextLabel MoveScaled(1,1,26,12) Visible = False Font = Font["Bold,+2"] Padding = 8 Text = ("Search string cannot be found.") } } Index = 0 } } # Gambas Action File 3.0 { Actions { Action test Text = "Run test" Picture = "icon:/small/ok" } } gambas-3.16.3/app/src/gambas3/.src/Debug/FOutput.class000066400000000000000000000240201411575327000222550ustar00rootroot00000000000000' Gambas class file Static Private $iConsole As Integer Private $aHistory As New String[] Private $bGotError As Boolean Private $iHistory As Integer Private $sCurrent As String 'Private $iLinkY As Integer 'Private $iLinkX As Integer 'Private $iLinkLen As Integer 'PUBLIC Shown AS Boolean Public Sub _new() 'Config.LoadWindow(ME, "/FOutput") Settings.Read(Me) ReadConfig chkCharset.Visible = System.Charset <> Desktop.Charset sepCharset.Visible = chkCharset.Visible btnUndock.Value = Settings["/FOutput/Undock", False] btnAbove.Value = Settings["/FOutput/KeepAbove", False] btnEcho.Value = Settings["/FOutput/Echo", False] OnProjectDebug 'edtOutput.Styles[Highlight.Keyword].Underline = True 'edtOutput.Styles[Highlight.Keyword].Bold = False 'edtOutput.Styles[Highlight.Keyword].Color = Color.Blue 'edtOutput.Overwrite = True 'edtOutput.Flags[Editor.AlwaysShowCursor] = True 'edtOutput.Flags[Editor.ShowDots] = False End Public Sub GetEditor() As TextEditor 'Return edtOutput End Public Sub Clear() trmOutput.Clear btnSuspend.Value = False txtEnter.Clear $iHistory = $aHistory.Count SetFocus End Public Sub Insert(sText As String, Optional bCurrent As Boolean) If chkCharset.Value Then Try sText = DConv$(sText) Endif If Not bCurrent Then 'edtOutput.Line = edtOutput.Lines.Count 'edtOutput.Goto(edtOutput.Lines.Count, 10000) Endif 'If Not Action["console"].Value Then Action["console"].Value = True trmOutput.Print(Replace(sText, "\n", "\r\n")) End Public Sub ReadConfig() Project.SetConsoleFont(trmOutput) MTheme.InitControl(trmOutput) Project.SetSmallFont(panToolbar) txtEnter.Font = trmOutput.Font lblEnter.Font = trmOutput.Font lblEnter.Font.Bold = True panEnter.H = txtEnter.Font.Height + 4 End Public Sub trmOutput_KeyPress() If Key.Code = Key.Escape Then Action["console"].Value = False Else If Key.Control Then If Key.Code = Key["L"] Then Clear Stop Event Else If Key.Code = Key["G"] Then trmOutput.Print(Chr$(7)) Stop Event Endif Endif End Public Sub Form_Close() If Not Me.Parent Then 'DEBUG "Write: "; ME.X;; ME.Y Settings.Write(Me) Endif 'Action["console"].Value = FALSE 'Settings.Write(ME) End ' Public Sub Form_Show() ' ' trmOutput.AutoResize = True ' 'Action["console"].Value = TRUE ' ' End Public Sub btnClear_Click() Clear End Public Sub btnCopy_Click() trmOutput.Copy End Public Sub btnPaste_Click() trmOutput.Paste End Public Sub SetFocus() If panEnter.Visible And If Not txtEnter.ReadOnly Then txtEnter.SetFocus Else trmOutput.SetFocus Endif End Public Sub Form_GotFocus() SetFocus End Public Sub Form_Activate() SetFocus End Public Sub btnUndock_Click() Settings["/FOutput/Undock"] = btnUndock.Value OnProjectDebug FDebugInfo.UpdateView End ' PUBLIC SUB Toggle(bShow AS Boolean) ' ' IF NOT btnUndock.Value THEN ' 'IF NOT Project.Running THEN ' FMain.ShowDebug(bShow) ' 'ENDIF ' ELSE ' ME.Visible = bShow ' ENDIF ' ' END Public Sub OnProjectDebugState() txtEnter.ReadOnly = Design.IsRunning() If txtEnter.HasFocus Then trmOutput.SetFocus If Design.IsStop() Then trmOutput.Reset(True) btnSuspend.Value = False btnSuspend.Hide Else btnSuspend.Show Endif End Public Sub OnProjectDebug() btnAbove.Visible = Project.Running And btnUndock.Value If btnUndock.Value Then Me.Stacking = If(Project.Running And btnAbove.Value, Window.Above, Window.Normal) SetFocus End Public Sub btnAbove_Click() Settings["/FOutput/KeepAbove"] = btnAbove.Value OnProjectDebug End Public Sub Form_Open() If Not Me.Parent Then Settings.Read(Me) 'DEBUG "Read: "; ME.X;; ME.Y Endif End Public Sub trmOutput_Menu() mnuEditor.Popup End Public Sub trmOutput_GotFocus() Project.SetCurrentPopup(mnuEditor) FSearch.Update End Public Sub txtFind_KeyPress() If Key.Code = Key.F3 If Key.Normal Then FSearch.FindNext Else If Key.Shift Then FSearch.FindPrevious Endif Stop Event Endif End Public Sub trmOutput_LostFocus() If Project.AboutToQuit Then Return FSearch.Update End Public Sub btnEdit_Click() Dim sPath As String Dim sText As String sText = trmOutput.Text If Not sText Then Return Inc $iConsole sPath = File.Dir(Temp$()) &/ $iConsole & ".console" File.Save(sPath, sText) Project.OpenFile(sPath) If Not Project.Running Then trmOutput.Clear End ' Public Sub btnControl_Click() ' ' Design.Send(Chr$(Asc(Right$(Last.Text)) - 64)) ' ' End ' ' Public Sub btnCtrlD_Click() ' ' Print #Design.GetProcess(), Chr$(4); ' ' End Public Sub txtEnter_Activate() Dim sText As String 'Dim bSemiColon As Boolean Dim sVal As String sText = txtEnter.Text If $iHistory = $aHistory.Count Or If sText <> $aHistory[$iHistory] Then $aHistory.Add(txtEnter.Text) If $aHistory.Count > 256 Then $aHistory.Remove(0) Endif $iHistory = $aHistory.Count txtEnter.Clear If Design.IsRunning() Then 'edtOutput.Insert("\n") If btnEcho.Value Then Insert(sText & "\n") Design.Send(sText & "\n") 'Debug Stop Event Else sText = Trim(sText) If Not sText Then Return If Project.Running Then If btnEcho.Value Then Insert("Print " & sText & "\n") 'edtOutput.Insert("\n") Design.Command("!\t" & sText) Stop Event Else If btnEcho.Value Then Insert("Print " & sText & "\n") Try sVal = Str(Eval(sText & "\n")) If Error Then txtEnter.Text = Error.Text txtEnter.Foreground = Color.Red $bGotError = True Else sVal = DConv$(sVal) 'If Not bSemiColon Then sVal &= "\n" Insert(sVal & "\n") Endif Stop Event Endif Endif End Public Sub txtEnter_KeyPress() If $bGotError Then $bGotError = False txtEnter.Foreground = Color.Default txtEnter.Clear Endif If Key.Code = Key.Up Then If $iHistory Then If $iHistory = $aHistory.Count Then $sCurrent = txtEnter.Text Dec $iHistory txtEnter.Text = $aHistory[$iHistory] Endif Stop Event Else If Key.Code = Key.Down Then If $iHistory < $aHistory.Count Then Inc $iHistory If $iHistory = $aHistory.Count Then txtEnter.Text = $sCurrent Else txtEnter.Text = $aHistory[$iHistory] Endif Endif Stop Event Else If Key.Code = Key.Home And If Key.Control Then trmOutput.Goto(0, 0) Stop Event Else If Key.Code = Key.End And If Key.Control Then trmOutput.Goto(0, trmOutput.Count - 1) Stop Event Else If Key.Code = Key.Escape Then Action["console"].Value = False Endif End Public Sub btnEcho_Click() Settings["/FOutput/Echo"] = btnEcho.Value End ' Public Sub edtOutput_Highlight((Text) As String) ' ' If $iLinkLen = 0 Then Return ' If $iLinkY <> TextHighlighter.Line Then Return ' ' TextHighlighter.Add(Highlight.Keyword, $iLinkLen) ' ' End ' Public Sub edtOutput_MouseMove() ' ' Dim MX, MY As Integer ' Dim X, Y As Integer ' Dim sText As String ' Dim iPos As Integer ' Dim aScan As String[] ' Dim iNewX As Integer ' Dim iNewY As Integer ' Dim iNewLen As Integer ' ' If Not edtOutput.Hovered Then Return ' ' Try MX = Mouse.X ' If Not Error Then ' MY = Mouse.Y ' Else ' MX = Mouse.ScreenX - edtOutput.ScreenX ' MY = Mouse.ScreenY - edtOutput.ScreenY ' Endif ' ' X = edtOutput.ToColumn(MX, MY) ' Y = edtOutput.ToLine(MY) ' ' If Y >= 0 And If X >= 0 Then ' ' sText = edtOutput[Y].Text ' ' iPos = InStr(sText, ": ") ' If iPos > X Then ' aScan = Scan(Left(sText, iPos - 1), "*.*.*") ' If aScan.Count = 3 And If IsDigit(aScan[2]) Then ' iNewY = Y ' iNewX = 0 ' iNewLen = iPos - 1 ' Endif ' Endif ' Endif ' ' If $iLinkLen Then ' $iLinkLen = 0 ' Try edtOutput[$iLinkY].Refresh ' Endif ' ' If iNewLen Then ' $iLinkX = iNewX ' $iLinkY = iNewY ' $iLinkLen = iNewLen ' edtOutput[iNewY].Refresh ' Endif ' ' If $iLinkLen Then ' edtOutput.Mouse = Mouse.Pointing ' Else ' edtOutput.Mouse = Mouse.Default ' Endif ' ' End ' ' Public Sub edtOutput_Leave() ' ' If $iLinkLen Then ' $iLinkLen = 0 ' Try edtOutput[$iLinkY].Refresh ' Endif ' ' End ' ' Public Sub edtOutput_MouseDown() ' ' If $iLinkLen And If Mouse.Normal Then ' If Not Project.Goto(Left$(edtOutput[$iLinkY].Text, $iLinkLen)) Then ' Stop Event ' Endif ' Endif ' ' End ' ' ' Public Sub edtOutput_Scroll() ' ' edtOutput_MouseMove ' ' End Public Sub PrintExpr(sExpr As String) txtEnter.Text = sExpr txtEnter_Activate End Public Sub GetTerminal() As TerminalView Return trmOutput End Public Sub btnSuspend_Click() trmOutput.Suspended = btnSuspend.Value End ' Public Sub UpdateWidth(W As Integer) ' ' If trmOutput.AutoResize Then Return ' If Me.W <> W Then ' trmOutput.ScreenWidth = (W - Style.ScrollbarSize) \ trmOutput.CharWidth ' Endif ' ' End Static Public Sub CheckTerminalLink(hTerm As TerminalView) Dim sLine As String Dim iPos As Integer Dim iLen As Integer Dim iPos2 As Integer With hTerm.Link sLine = .Line iPos = String.Pos(sLine, .Pos) iPos2 = iPos While iPos > 0 If Mid$(sLine, iPos, 1) Not Like "[A-Za-z0-9._]" Then Break Dec iPos Wend Inc iPos Inc iPos2 While iPos2 <= Len(sLine) If Mid$(sLine, iPos2, 1) Not Like "[A-Za-z0-9._]" Then Break Inc iPos2 Wend Dec iPos2 iLen = iPos2 - iPos + 1 If iLen <= 0 Then Return sLine = Mid$(sLine, iPos, iLen) If sLine Not Match "^[a-zA-Z_][a-zA-Z0-9_]*\\.[a-zA-Z_][a-zA-Z0-9_]*\\.[0-9]+" Then Return hTerm.Link.Select(String.Index(.Line, iPos) - 1, String.Len(sLine), "goto") End With End Public Sub trmOutput_Link() CheckTerminalLink(trmOutput) End Public Sub trmOutput_Click() If trmOutput.Link.Type = "goto" Then Project.Goto(trmOutput.Link.Text) Endif End gambas-3.16.3/app/src/gambas3/.src/Debug/FOutput.form000066400000000000000000000054501411575327000221210ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,97,54) Text = ("Console - Gambas") Icon = Picture["icon:/small/terminal"] Persistent = True Arrangement = Arrange.Vertical { mnuEditor Menu Enabled = False Visible = False { mnuCopy Menu btnCopy Name = "mnuCopy" Text = ("Copy") Picture = Picture["icon:/small/copy"] Shortcut = "Ctrl+Shift+C" } { mnuPaste Menu btnPaste Name = "mnuPaste" Text = ("Paste") Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+Shift+V" } { mnuClear Menu btnClear Name = "mnuClear" Text = ("Clear") Picture = Picture["icon:/small/clear"] Shortcut = "Ctrl+L" } } { panToolbar HBox MoveScaled(1,1,93,4) { btnUndock ToolButton MoveScaled(0,0,4,4) ToolTip = ("Undock console") Picture = Picture["icon:/small/fullscreen"] Toggle = True } { btnAbove ToolButton MoveScaled(4,0,4,4) ToolTip = ("Keep above") Toggle = True } { btnClear ToolButton MoveScaled(8,0,4,4) ToolTip = ("Clear console") Picture = Picture["icon:/small/clear"] } { btnSuspend ToolButton MoveScaled(12,0,4,4) Visible = False ToolTip = ("Suspend terminal") Picture = Picture["icon:/small/lock"] Toggle = True } { btnCopy ToolButton MoveScaled(16,0,4,4) ToolTip = ("Copy") Picture = Picture["icon:/small/copy"] } { btnPaste ToolButton MoveScaled(20,0,4,4) ToolTip = ("Paste") Picture = Picture["icon:/small/paste"] } { btnEcho ToolButton MoveScaled(24,0,9,4) ToolTip = ("Entered text echo") AutoResize = True Text = ("Echo") Toggle = True } { Separator1 Separator MoveScaled(37,0,1,4.125) } { btnEdit ToolButton MoveScaled(39,0,18,4) AutoResize = True Text = ("Open contents") & "..." Picture = Picture["icon:/small/edit"] } { sepCharset Separator MoveScaled(60,0,1,4) Visible = False } { chkCharset CheckBox MoveScaled(62,0,27,4) Visible = False AutoResize = True Text = ("Use system charset") } } { Separator2 Separator MoveScaled(34,8,13,0) } { trmOutput TerminalView MoveScaled(5,13,69,27) Expand = True Border = False Limit = 65536 Blink = True ShowScrollBar = True ShowLink = True } { sepEnter Separator MoveScaled(24,45,34,0) } { panEnter HBox MoveScaled(1,49,92,5) Background = Color.TextBackground { lblEnter Label MoveScaled(1,1,4,3) Foreground = Color.SelectedBackground Padding = 2 AutoResize = True Text = ("?") } { txtEnter TextBox MoveScaled(6,0,85,4) Expand = True Border = False } } } gambas-3.16.3/app/src/gambas3/.src/Debug/FProfile.class000066400000000000000000000565021411575327000223670ustar00rootroot00000000000000' Gambas class file Static Private $aAll As New String[] Public Path As String Private $iTime As Long Private $iFuncTime As Long Private $aFunc As New CProfile[] Private $cFunc As New Collection Private $aLevel As New String[] Private $aLevelTime As New Long[] Private $hCurrent As CProfile Private $bPercent As Boolean Private $bAverage As Boolean Private $aHistory As New String[] Private $iHistory As Integer Private $iNoHistory As Integer Private $aIndex As New String[] Private $cLines As New Collection Private $cCount As New Collection Private $sCurrentClass As String Private $iFirstLine As Integer Private Const FUNC_EVENT_LOOP As String = "@" Static Public Sub Open(sPath As String) Dim hProf As FProfile If Not Exist(sPath) Then Return hProf = New FProfile hProf.Init(sPath) End Public Sub GetName() As String Dim sName As String sName = File.Name(Path) If sName Begins "." Then Return Subst(("Profile #&1"), Mid$(File.BaseName(sName), 2)) Else Return sName Endif End Private Sub GetClass(sFunc As String) As String Return Left(sFunc, InStr(sFunc, ".") - 1) End Fast Private Sub EnterFunction(sWhere As String, iTime As Long) As CProfile Dim hProf As CProfile Dim iPos As Integer Dim sKlass As String Dim sFunc As String If sWhere = "0" Then sWhere = FUNC_EVENT_LOOP Else iPos = InStr(sWhere, ".", 2) sKlass = Left$(sWhere, iPos - 1) sWhere = Mid$(sWhere, iPos + 1) sFunc = sWhere If IsDigit(Left(sKlass)) Then If sKlass = "0" Then sKlass = FUNC_EVENT_LOOP Else sKlass = $aIndex[CInt(sKlass) - 1] Endif Else If Left(sKlass) <> "." Then $aIndex.Add(sKlass) Endif If IsDigit(Left(sFunc)) Then sFunc = $aIndex[CInt(sFunc) - 1] Else If sFunc <> "?" Then $aIndex.Add(sFunc) Endif sWhere = sKlass & "." & sFunc Endif hProf = $cFunc[sWhere] If Not hProf Then hProf = New CProfile $cFunc[sWhere] = hProf hProf.Name = sWhere $aFunc.Add(hProf) Endif Inc hProf.Level ' If hProf.Level > 1 Then ' sWhere &= "[" & CStr(hProf.Level) & "]" ' hProf = $cFunc[sWhere] ' If Not hProf Then ' hProf = New CProfile ' $cFunc[sWhere] = hProf ' hProf.Name = sWhere ' hProf.Level = -1 ' $aFunc.Add(hProf) ' Endif ' Endif $aLevel.Add(sWhere) $aLevelTime.Add(iTime) Inc hProf.Count Return hProf End Fast Private Sub ExitFunction(iTime As Long) As CProfile Dim hProf As CProfile Dim hCaller As CProfile Dim sFunc As String sFunc = $aLevel[$aLevel.Max] hProf = $cFunc[sFunc] Dec hProf.Level $aLevel.Remove($aLevel.Max) iTime -= $aLevelTime[$aLevelTime.Max] $aLevelTime.Remove($aLevelTime.Max) If hProf.Level Then hProf.RecTime += iTime $iFuncTime = iTime Else hProf.Time += iTime $iFuncTime = iTime Endif If $aLevel.Count Then hCaller = $cFunc[$aLevel[$aLevel.Max]] hCaller.AddCalled(sFunc, iTime) hProf.AddCaller(hCaller.Name) Return hCaller Else $iTime += iTime Endif End Fast Public Sub Init(sPath As String) Dim hFile As File Dim sLine, sFunc As String Dim iPos As Integer Dim sClass As String Dim hCurrent As CProfile Dim aLine As Long[] Dim aCount As Integer[] Dim iLastLine, iLine As Integer Dim iTime, iOldTime, iLastTime As Long Dim aLastLine As New Integer[] Dim aLastTime As New Long[] Dim I, N As Integer Dim sTitle As String Dim bVer As Boolean Dim hEventLoop As CProfile Inc Application.Busy Path = sPath hFile = Open sPath For Each sLine In hFile.Lines If Not bVer Then If sLine <> "[1]" Then Error.Raise(("Bad profile file format")) bVer = True Endif ' The last line should be a void line, otherwise the file has been truncated. So always ignore it. If hFile.EndOfFile Then Break If Left(sLine) = "(" Or If Left(sLine) = ")" Then iLastTime = iOldTime If Left(sLine) = "(" Then aLastLine.Push(iLastLine) aLastTime.Push(iOldTime) iPos = InStr(sLine, " ") iTime += CLong(Mid$(sLine, iPos + 1)) sFunc = Left(sLine, iPos - 1) iOldTime = iTime hCurrent = EnterFunction(Mid$(sFunc, 2), iTime) iLine = 0 iLastLine = 0 Else hCurrent = ExitFunction(iTime) iLastLine = aLastLine.Pop() iOldTime = aLastTime.Pop() + $iFuncTime iLine = 0 Endif If hCurrent Then sClass = GetClass(hCurrent.Name) If sClass Then aLine = $cLines[sClass] aCount = $cCount[sClass] If Not aLine Then aLine = New Long[GetNumberOfLines(sClass)] aCount = New Integer[aLine.Count] $cLines[sClass] = aLine $cCount[sClass] = aCount Endif Else aLine = Null aCount = Null Endif Endif Else If aLine Then For I = 1 To Len(sLine) On Asc(sLine, I) - 58 Goto LM9, LM8, LM7, LM6, LM5, LM4, LM3, LM2, LM1, _TIME, LP1, LP2, LP3, LP4, LP5, LP6, LP7, LP8, LP9, LP99, LM99, LP, LM Debug Asc(sLine, I) - 58;; "?" Break LM9: iLine -= 9 Goto _TIME LM8: iLine -= 8 Goto _TIME LM7: iLine -= 7 Goto _TIME LM6: iLine -= 6 Goto _TIME LM5: iLine -= 5 Goto _TIME LM4: iLine -= 4 Goto _TIME LM3: iLine -= 3 Goto _TIME LM2: iLine -= 2 Goto _TIME LM1: iLine -= 1 Goto _TIME LP9: iLine += 9 Goto _TIME LP8: iLine += 8 Goto _TIME LP7: iLine += 7 Goto _TIME LP6: iLine += 6 Goto _TIME LP5: iLine += 5 Goto _TIME LP4: iLine += 4 Goto _TIME LP3: iLine += 3 Goto _TIME LP2: iLine += 2 Goto _TIME LP99: iLine += Asc(sLine, I + 1) - 58 + 10 Inc I Goto _TIME LM99: iLine -= Asc(sLine, I + 1) - 58 + 10 Inc I Goto _TIME LP: N = Asc(sLine, I + 1) - 58 iLine += CInt(Mid$(sLine, I + 2, N)) I += N + 1 Goto _TIME LM: N = Asc(sLine, I + 1) - 58 iLine -= CInt(Mid$(sLine, I + 2, N)) I += N + 1 Goto _TIME LP1: Inc iLine _TIME: iLastTime = iOldTime Inc I On Asc(sLine, I) - 58 Goto TP0, TP1, TP2, TP3, TP4, TP5, TP6, TP7, TP8, TP9 N = Asc(sLine, I) - 58 - 10 + 2 If N < 2 Then Debug N;; "?" Break Endif iTime += CLong(Mid$(sLine, I + 1, N)) I += N Goto TP0 TP2: iTime += 2 Goto TP0 TP3: iTime += 3 Goto TP0 TP4: iTime += 4 Goto TP0 TP5: iTime += 5 Goto TP0 TP6: iTime += 6 Goto TP0 TP7: iTime += 7 Goto TP0 TP8: iTime += 8 Goto TP0 TP9: iTime += 9 Goto TP0 TP1: Inc iTime TP0: iOldTime = iTime Dec iLastLine Try aLine[iLastLine] += iTime - iLastTime If Not Error Then Inc aCount[iLastLine] Else If iLastLine >= 0 Then Debug hCurrent.Name; "."; iLastLine + 1; " ("; aLine.Count; ")" hCurrent.FirstTime += iTime - iLastTime Endif iLastLine = iLine Next Endif Endif Next hCurrent = $cFunc[".System.EventLoop"] If hCurrent Then hCurrent.SetEventLoop() sTitle = GetName() sTitle &= " (" & Subst(("&1 Mb"), (Stat(sPath).Size + 1048575) \ 1048576) & ") - " & Str(Stat(sPath).LastModified) & " - " & Subst(("Total time &1 μs"), Format($iTime, "#,##0")) hEventLoop = $cFunc[FUNC_EVENT_LOOP] If hEventLoop Then sTitle &= " / " & Subst("&1 μs", Format($iTime - hEventLoop.Self, "#,##0")) Me.Title = sTitle gvwProfile.Rows.Count = $aFunc.Count Object.Lock(gvwProfile) gvwProfile.Columns.Sort = 2 gvwProfile.Columns.Ascending = True Object.Unlock(gvwProfile) gvwProfile_Sort $aAll.Add(Path) Me.Show Dec Application.Busy Catch Dec Application.Busy Message.Error(Subst(("Unable to load profile file: &1"), File.Name(sPath)) & "\n\n" & Error.Where & ": " & Error.Text) End Public Sub gvwProfile_Data(Row As Integer, Column As Integer) Dim hProf As CProfile With gvwProfile.Data hProf = $aFunc[Row] Select Case Column Case 0 .RichText = hProf.GetTitle() Case 1 .Text = Format(hProf.Count, ",0") Case 2 If $bPercent Then .Text = Format(hProf.Time / $iTime * 100, "0.00") Else .Text = Format(hProf.Time, ",0") Endif Case 3 .Text = Format(hProf.Time / hProf.Count, ",0.##") Case 4 If $bPercent Then .Text = Format(hProf.Self / $iTime * 100, "0.00") Else .Text = Format(hProf.Self, ",0") Endif Case 5 .Text = Format(hProf.Self / hProf.Count, ",0.##") End Select End With Catch gvwProfile.Data.Text = "" gvwProfile.Data.Background = Color.ButtonBackground End Public Sub gvwProfile_Sort() Dim sCurrent As String Try sCurrent = $aFunc[gvwProfile.Row].Name CProfile.Sort = gvwProfile.Columns.Sort CProfile.Ascending = gvwProfile.Columns.Ascending $aFunc.Sort gvwProfile_Select 'If sCurrent Then gvwProfile.Row = $aFunc.Find($cFunc[sCurrent]) End Private Sub GotoFunction(sFunc As String) Dim hEditor As FEditor Dim aWhere As String[] Dim sPath As String Dim iPos As Integer iPos = RInStr(sFunc, "[") If iPos Then sFunc = Left(sFunc, iPos - 1) aWhere = Split(sFunc, "*.*") sPath = Project.FindPath(aWhere[0]) If Not Exist(sPath) Then Return Try hEditor = Project.OpenFile(sPath) If IsNull(hEditor) Then Return hEditor.GotoFunction(hEditor.GetFunctionLine(aWhere[1])) End Private Sub GetNumberOfLines(sClass As String) As Integer Dim hEditor As FEditor Dim sPath As String sPath = Project.FindPath(sClass) If Not Exist(sPath) Then Return Try hEditor = Project.LoadFile(sPath) If IsNull(hEditor) Then Return Return hEditor.GetEditor().Count End Private Sub LoadCurrentSourceCode() As String Dim hEditor As FEditor Dim aWhere As String[] Dim sPath As String Dim aDuration As Long[] Dim iTime As Long Dim I As Integer aWhere = Split($hCurrent.Name, "*.*") If aWhere.Count = 2 Then I = RInStr(aWhere[1], "[") If I Then aWhere[1] = Left$(aWhere[1], I - 1) Endif sPath = Project.FindPath(aWhere[0]) If Not Exist(sPath) Then Goto HIDE_SOURCE Try hEditor = Project.LoadFile(sPath) If IsNull(hEditor) Then Goto HIDE_SOURCE If $hCurrent.StartLine < 0 Then If aWhere[1] = aWhere[0] Then $hCurrent.StartLine = 0 $hCurrent.Code = hEditor.GetFunctionSource() Else $hCurrent.StartLine = hEditor.GetFunctionLine(aWhere[1]) $hCurrent.Code = hEditor.GetFunctionSource(aWhere[1]) Endif Endif $iFirstLine = $hCurrent.StartLine edtSource.LineNumberOffset = $iFirstLine edtSource.Text = $hCurrent.Code If $hCurrent.MaxTime = 0 Then aDuration = $cLines[$sCurrentClass] iTime = $hCurrent.FirstTime For I = $iFirstLine To $iFirstLine + edtSource.Count - 1 Try iTime = Max(iTime, aDuration[I]) Next $hCurrent.MaxTime = iTime Endif gvwSource.Rows.Height = edtSource.LineHeight gvwSource.Rows.Count = edtSource.Count gvwSource.Row = 0 gvwSource.Refresh panSourceHeader.H = gvwSource.Columns.Height - 1 panSource.Show Return HIDE_SOURCE: panSource.Hide End Public Sub gvwProfile_Activate() GotoFunction($aFunc[gvwProfile.Row].Name) End Public Sub Form_Close() If Left(File.Name(Path)) = "." Then Try Kill Path $aAll.Remove($aAll.Find(Path)) Settings.Write(Me) Settings.Write(spnProfile) FDebugButton.UpdateProfile End Public Sub ReadConfig() Project.SetSmallFont(gvwProfile) Project.SetSmallFont(tabInfo) Project.SetSmallFont(panProfile) Project.SetSmallFont(lblCurrent) lblCurrent.Font.Bold = True Project.SetSmallFont(gvwSource) edtSource.ReadConfig edtSource.ShowIcon = False edtSource.ShowPosition = False edtSource.ShowModified = False edtSource.ShowLineNumber = False edtSource.ShowExpand = False panSepSource.Background = edtSource.Styles[Highlight.Background].Color UpdateSource End Static Public Sub Find(sPath As String) As FProfile Dim hWin As Window Dim hProf As FProfile For Each hWin In Windows If hWin Is FProfile Then hProf = hWin If hProf.Path = sPath Then Return hProf Endif Next End Static Public Sub FindAll() As FProfile[] Dim hWin As Window Dim aProf As New FProfile[] Dim hProf As FProfile For Each hWin In Windows If hWin Is FProfile Then hProf = hWin If $aAll.Exist(hProf.Path) Then aProf.Add(hProf) Endif Next Return aProf End Static Public Sub ReadAllConfig() Dim hProf As FProfile For Each hProf In FindAll() hProf.ReadConfig Next End Public Sub _new() Dim hScrollArea As ScrollArea hScrollArea = edtSource.Proxy hScrollArea.NoAnimation = True hScrollArea = gvwSource.Proxy hScrollArea.NoAnimation = True End Public Sub Form_Open() FDebugButton.UpdateProfile Me.MinWidth = Desktop.Scale * 100 Me.MinHeight = Desktop.Scale * 60 Settings.Read(Me) Settings.Read(spnProfile) splSource.Layout = [1, 2] ReadConfig With gvwProfile .Columns.Count = 6 .Columns[0].Text = ("Function") .Columns[0].Width = -1 .Columns[1].Text = ("Calls") .Columns[1].Alignment = Align.Right .Columns[1].Width = -1 .Columns[2].Text = ("Duration") .Columns[2].Alignment = Align.Right .Columns[2].Width = -1 .Columns[3].Text = ("Average") .Columns[3].Alignment = Align.Right .Columns[3].Width = 0 .Columns[4].Text = ("Self") .Columns[4].Alignment = Align.Right .Columns[4].Width = -1 .Columns[5].Text = ("Average") .Columns[5].Alignment = Align.Right .Columns[5].Width = 0 End With With gvwCalled .Columns.Count = 4 .Columns[0].Text = ("Function") .Columns[1].Text = ("Calls") .Columns[1].Alignment = Align.Right .Columns[2].Text = ("Duration") .Columns[2].Alignment = Align.Right .Columns[3].Text = ("Average") .Columns[3].Alignment = Align.Right .Columns[3].Width = 0 '.Columns[3].Text = ("Mean (μs)") '.Columns[3].Alignment = Align.Right End With With gvwCaller .Columns.Count = 2 .Columns[0].Text = ("Function") .Columns[0].Width = -1 .Columns[1].Text = ("Calls") .Columns[1].Alignment = Align.Right '.Columns[2].Text = ("Duration") '.Columns[2].Alignment = Align.Right '.Columns[3].Text = ("Mean (μs)") '.Columns[3].Alignment = Align.Right End With With gvwSource .Columns.Count = 3 .Columns.Resizable = False .Columns[0].Text = ("Duration") .Columns[0].Alignment = Align.Right .Columns[0].Expand = True .Columns[1].Text = ("Calls") .Columns[1].Alignment = Align.Right .Columns[1].Expand = True .Columns[2].Text = ("Average") .Columns[2].Alignment = Align.Right .Columns[2].Width = 0 .Columns[2].Expand = True End With gvwProfile.Row = 0 btnSave.Enabled = Left(File.Name(Path)) = "." edtSource.Highlight = "gambas" End Private Sub AddHistory(sFunc As String) If $iNoHistory Then Return $aHistory.Resize($iHistory) If $aHistory.Count >= 32 Then $aHistory.Remove(0) $aHistory.Add(sFunc) Inc $iHistory End Public Sub gvwProfile_Select() If gvwProfile.Row < 0 Then Return $hCurrent = $aFunc[gvwProfile.Row] AddHistory($hCurrent.Name) RefreshCurrent End Private Sub RefreshCurrent() If $hCurrent Then $sCurrentClass = GetClass($hCurrent.Name) gvwCalled.Rows.Count = $hCurrent.CalledList.Count Object.Lock(gvwCalled) gvwCalled.Columns.Sort = 2 gvwCalled.Columns.Ascending = True Object.Unlock(gvwCalled) gvwCalled_Sort gvwCalled.Columns[0].Width = -1 gvwCaller.Rows.Count = $hCurrent.CallerList.Count Object.Lock(gvwCaller) gvwCalled.Columns.Sort = 1 gvwCalled.Columns.Ascending = True Object.Unlock(gvwCaller) gvwCaller_Sort gvwCaller.Columns[0].Width = -1 LoadCurrentSourceCode lblCurrent.Text = $hCurrent.GetTitle() Try gvwCalled.Row = 0 Try gvwCaller.Row = 0 panCurrent.Show Else panCurrent.Hide lblCurrent.Text = "" $sCurrentClass = "" Endif End Public Sub gvwCalled_Sort() Dim sCurrent As String If Not $hCurrent Then Return Try sCurrent = $hCurrent.CalledList[gvwProfile.Row].Name CProfile.Sort = gvwCalled.Columns.Sort CProfile.Ascending = gvwCalled.Columns.Ascending $hCurrent.CalledList.Sort If sCurrent Then gvwCalled.Row = $hCurrent.CalledList.Find($hCurrent.Called[sCurrent]) End Public Sub gvwCalled_Data(Row As Integer, Column As Integer) Dim hProf As CProfile Dim iTime As Long If Not $hCurrent Then Return With gvwCalled.Data hProf = $hCurrent.CalledList[Row] Select Case Column Case 0 .RichText = hProf.GetTitle() Case 1 .Text = Format(hProf.Count, ",0") Case 2 iTime = hProf.Time '- hProf.RecTime If $bPercent Then .Text = Format(iTime / $iTime * 100, "0.00") Else .Text = Format(iTime, ",0") Endif Case 3 iTime = hProf.Time '- hProf.RecTime .Text = Format(iTime / hProf.Count, ",0.##") End Select End With Catch gvwCalled.Data.Text = "" gvwCalled.Data.Background = Color.ButtonBackground End Public Sub gvwCalled_Activate() If Not $hCurrent Then Return gvwProfile.Row = $aFunc.Find($cFunc[$hCurrent.CalledList[gvwCalled.Row].Name]) End Public Sub btnPercent_Click() $bPercent = Not $bPercent gvwProfile.Refresh gvwCalled.Refresh gvwCaller.Refresh gvwSource.Refresh End Public Sub btnAverage_Click() $bAverage = Not $bAverage gvwProfile.Columns[5].Width = If($bAverage, -1, 0) gvwProfile.Columns[3].Width = If($bAverage, -1, 0) gvwCalled.Columns[3].Width = If($bAverage, -1, 0) gvwSource.Columns[2].Width = If($bAverage, -1, 0) UpdateSource End Public Sub btnPrev_Click() If $iHistory >= 2 Then Dec $iHistory Inc $iNoHistory gvwProfile.Row = $aFunc.Find($cFunc[$aHistory[$iHistory - 1]]) Dec $iNoHistory Endif End Public Sub btnNext_Click() If $iHistory <= $aHistory.Max Then Inc $iHistory Inc $iNoHistory gvwProfile.Row = $aFunc.Find($cFunc[$aHistory[$iHistory - 1]]) Dec $iNoHistory Endif End Public Sub gvwCaller_Sort() Dim sCurrent As String If Not $hCurrent Then Return Try sCurrent = $hCurrent.CallerList[gvwProfile.Row].Name CProfile.Sort = gvwCaller.Columns.Sort CProfile.Ascending = gvwCaller.Columns.Ascending $hCurrent.CallerList.Sort If sCurrent Then gvwCaller.Row = $hCurrent.CallerList.Find($hCurrent.Caller[sCurrent]) End Public Sub gvwCaller_Data(Row As Integer, Column As Integer) Dim hProf As CProfile If Not $hCurrent Then Return With gvwCaller.Data hProf = $hCurrent.CallerList[Row] Select Case Column Case 0 .RichText = hProf.GetTitle() Case 1 .Text = hProf.Count ' Case 2 ' If $bPercent Then ' .Text = Format(hProf.Time / $iTime * 100, "0.00") ' Else ' .Text = hProf.Time ' Endif ' Case 3 ' .Text = Format(hProf.Time / hProf.Count, "0.##") End Select End With End Public Sub gvwCaller_Activate() If Not $hCurrent Then Return gvwProfile.Row = $aFunc.Find($cFunc[$hCurrent.CallerList[gvwCaller.Row].Name]) End Private Sub GetDurationColor(fPercent As Float) As Integer Dim iCol As Integer iCol = 255 - Min(1, fPercent) * 64 Return Color.RGB(iCol, iCol, iCol) End Public Sub gvwSource_Data(Row As Integer, Column As Integer) Dim iTime As Long Dim iCount As Integer 'If Not $hCurrent Then Return 'Debug $hCurrent.Name; "."; Row + $iFirstLine; ": "; $hCurrent.Lines[Row + $iFirstLine] If Row = 0 Then iTime = $hCurrent.FirstTime Else Try iTime = $cLines[$sCurrentClass][Row + $iFirstLine] Endif With gvwSource.Data Try .Background = GetDurationColor(iTime / $hCurrent.MaxTime) Select Case Column Case 0 If iTime = 0 Then Try iCount = $cCount[$sCurrentClass][Row + $iFirstLine] If iCount <= 1 Then Return Endif If $bPercent Then .Text = Format(iTime / $hCurrent.Time * 100, "0.00") Else .Text = Format(iTime, ",0") Endif Case 1 If Row = 0 Then iCount = $hCurrent.Count Else Try iCount = $cCount[$sCurrentClass][Row + $iFirstLine] Endif If iCount < 1 Then Return .Text = Format(iCount, ",0") Case 2 If Row = 0 Then iCount = $hCurrent.Count Else Try iCount = $cCount[$sCurrentClass][Row + $iFirstLine] Endif If iCount < 1 Then Return .Text = Format(iTime / iCount, ",0.##") End Select End With Catch gvwSource.Data.Text = "" gvwSource.Data.Background = Color.ButtonBackground End Public Sub edtSource_Scroll() gvwSource.ScrollY = edtSource.ScrollY End Static Public Sub OnProjectChange() Dim hWin As Window For Each hWin In Windows If hWin Is FProfile Then hWin.Close Next End Static Public Sub CleanProfileFiles() Dim sPath As String For Each sPath In Dir(Project.Dir, ".*.prof") If $aAll.Exist(sPath) Then Continue Try Kill Project.Dir &/ sPath Next End Public Sub gvwSource_Scroll() edtSource.ScrollY = gvwSource.ScrollY End Public Sub gvwSource_Select() edtSource.Goto(0, gvwSource.Row) End Public Sub edtSource_Cursor() gvwSource.Row = edtSource.Line edtSource.HideSelection End Public Sub btnSave_Click() Dialog.Title = ("Save profile") Dialog.Filter = ["*.prof", ("Profile files")] Dialog.Path = Settings["/FProfile/Path", User.Home] &/ Project.Name & File.Name(Path) If Dialog.SaveFile() Then Return Settings["/FProfile/Path"] = File.Dir(Dialog.Path) Try Copy Path To Dialog.Path If Error Then Message.Error(("Unable to save profile.") & "\n\n" & Error.Text) Endif End Private Sub UpdateSource() gvwSource.Width = gvwSource.Font.TextWidth("999999") * (4 + If($bAverage, 2, 0)) End gambas-3.16.3/app/src/gambas3/.src/Debug/FProfile.form000066400000000000000000000073511411575327000222230ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,87,58) Icon = Picture["icon:/medium/clock"] Utility = True Arrangement = Arrange.Horizontal { spnProfile SidePanel MoveScaled(1,1,46,49) Arrangement = Arrange.Vertical Orientation = Align.Left Separator = True Transparent = True { panProfile HBox MoveScaled(1,2,42,4) { btnPrev ToolButton MoveScaled(0,0,4,4) ToolTip = ("Go back") Picture = Picture["icon:/small/left"] } { btnNext ToolButton MoveScaled(4,0,4,4) ToolTip = ("Go forward") Picture = Picture["icon:/small/right"] } { btnPercent ToolButton MoveScaled(8,0,4,4) ToolTip = ("Show relative durations") Picture = Picture["icon:/small/percent"] Toggle = True } { btnAverage ToolButton MoveScaled(12,0,4,4) ToolTip = ("Show average") Picture = Picture["icon:/small/average"] Toggle = True } { btnSave ToolButton MoveScaled(16,0,15,4) ToolTip = ("Save profile") AutoResize = True Text = ("Save profile") & "..." Picture = Picture["icon:/small/save-as"] } } { Separator5 Separator MoveScaled(1,7,25,0) } { gvwProfile GridView MoveScaled(1,9,41,38) Expand = True Border = False Mode = Select.Single Header = GridView.Horizontal ScrollBar = Scroll.Vertical AutoResize = False Sorted = True } } { panCurrent VBox MoveScaled(49,1,35,49) Visible = False Expand = True { lblCurrent TextLabel MoveScaled(1,1,24,4) Font = Font["Bold"] Padding = 4 Alignment = Align.Normal Wrap = False } { Separator3 Separator MoveScaled(4,6,16,0) } { splSource VSplit MoveScaled(1,7,33,41) Expand = True { tabInfo TabPanel MoveScaled(1,2,29,17) Expand = True Arrangement = Arrange.Fill Border = False Count = 2 Highlight = True Index = 0 Text = ("Callees") { gvwCalled GridView MoveScaled(1,1,27,11) Border = False Mode = Select.Single Header = GridView.Horizontal ScrollBar = Scroll.Vertical AutoResize = False Sorted = True } Index = 1 Text = ("Callers") { gvwCaller GridView MoveScaled(1,2,27,11) Border = False Mode = Select.Single Header = GridView.Horizontal ScrollBar = Scroll.Vertical AutoResize = False Sorted = True } Index = 0 } { panSource HBox MoveScaled(1,20,29,20) { gvwSource GridView MoveScaled(1,1,7,14) Border = False Mode = Select.Single Grid = False Header = GridView.Horizontal ScrollBar = Scroll.None } { Separator4 Separator MoveScaled(9,1,0,14) } { Panel4 VBox MoveScaled(10,1,18,15) Expand = True { panSourceHeader Panel MoveScaled(2,1,10,1) } { Separator6 Separator MoveScaled(2,3,11,0) } { Panel5 HBox MoveScaled(1,4,16,10) Expand = True { panSepSource Panel MoveScaled(2,1,1,8) Visible = False Background = Color.TextBackground } { edtSource TextEditor MoveScaled(4,1,11,8) Expand = True Border = False ScrollBar = Scroll.Vertical ReadOnly = True ShowCursor = False } } } } } } } gambas-3.16.3/app/src/gambas3/.src/Debug/FTestSuite.class000066400000000000000000000137041411575327000227150ustar00rootroot00000000000000' Gambas class file Private $cSuites As New Collection Private $bNoSelect As Boolean Public Sub btnClose_Click() Me.Close End Public Sub Form_Open() Settings.Read(Me) LoadTests LoadSuites End Private Sub LoadTestWith() Dim sText As String Dim sKey As String sText = cmbTestWith.Text cmbTestWith.Clear lvwSuite.MoveFirst While lvwSuite.Available sKey = lvwSuite.Item.Key If sKey = "$" Then cmbTestWith.Add(("Default")) Else cmbTestWith.Add(sKey) Endif lvwSuite.MoveNext Wend Try cmbTestWith.Text = sText If cmbTestWith.Index < 0 Then cmbTestWith.Index = 0 End Private Sub LoadSuites() Dim sName As String Dim iTestWith As Integer $cSuites = MTest.LoadSuites(ByRef iTestWith) 'hSettings = New Settings(Project.Dir &/ ".test") 'iCount = hSettings["/TestSuites/Count", 0] lvwSuite.Clear With lvwSuite.Add("$", "") .RichText = "" & ("Default") & "" .Editable = False End With '$cSuites.Clear cmbTestWith.Add(("Default")) '$cSuites["$"] = SuiteToSelection(hSettings["/TestSuites/Default"]) For Each $cSuites sName = $cSuites.Key If sName = "$" Then Continue lvwSuite.Add(sName, sName) cmbTestWith.Add(sName) Next LoadTestWith Try cmbTestWith.Index = iTestWith If Error Then cmbTestWith.Index = 0 If cmbTestWith.Index = 0 Then lvwSuite.Key = "$" Else lvwSuite.Key = cmbTestWith.Text Endif Catch Message.Error(("Unable to load test suites.") & "\n\n" & Error.Text) End Private Sub LoadTests() Dim sClass As String Dim sName As String Dim iPos As Integer Dim sMethod As String tvwSuite.Clear For Each sName In MTest.GetTestModules(True) iPos = InStr(sName, ".") If iPos = 0 Then Continue sClass = Left(sName, iPos - 1) sMethod = Mid$(sName, iPos + 1) If Not tvwSuite.Exist(sClass) Then tvwSuite.Add(sClass, sClass, Picture["icon:/small/directory"]) tvwSuite.Add(sName, sMethod, Picture["$symbol:s-method"], sClass) Next End Public Sub lvwSuite_Select() Dim N As Integer If $cSuites.Exist(lvwSuite.Key) Then tvwSuite.Selection = $cSuites[lvwSuite.Key] Else tvwSuite.UnselectAll Endif tvwSuite.MoveFirst() While tvwSuite.Available If tvwSuite.Item.Selected And If tvwSuite.Item.Children Then tvwSuite.MoveChild() N = 0 While tvwSuite.Available If tvwSuite.Item.Selected Then Inc N tvwSuite.MoveNext() Wend tvwSuite.MoveBack() tvwSuite.MoveParent() If N > 0 And If N < tvwSuite.Item.Children Then tvwSuite.Item.Expanded = True Else tvwSuite.Item.Expanded = False Endif Else tvwSuite.Item.Expanded = False Endif tvwSuite.MoveNext() Wend tvwSuite.MoveFirst() tvwSuite.Key = tvwSuite.Item.Key tvwSuite.Current.EnsureVisible() End Private Sub CreateSuite(Optional sCopy As String) Dim I As Integer Dim sName As String Do Inc I sName = Subst(("Test suite #&1"), I) If Not lvwSuite.Exist(sName) Then Break Loop If sCopy Then $cSuites[sName] = $cSuites[sCopy] lvwSuite.Add(sName, sName).Selected = True lvwSuite.Key = sName LoadTestWith btnRename_Click End Public Sub btnNew_Click() CreateSuite() End Public Sub btnRename_Click() Try lvwSuite.Current.Rename() End Public Sub lvwSuite_Rename() Dim sNewName As String Dim sOldName As String sNewName = lvwSuite.Item.Text sOldName = lvwSuite.Item.Key If sNewName = sOldName Then Return If lvwSuite.Exist(sNewName) Then Balloon.Warning(("This test suite already exists."), lvwSuite, lvwSuite.Current.X + Desktop.Scale, lvwSuite.Current.Y) Stop Event Return Endif $cSuites[sNewName] = $cSuites[sOldName] $cSuites.Remove(sOldName) lvwSuite.Remove(sOldName) lvwSuite.Add(sNewName, sNewName).Selected = True LoadTestWith End Public Sub btnReset_Click() LoadSuites End Public Sub tvwSuite_Select() Dim sKey As String Dim bBefore As Boolean Dim aOld As String[] Dim bAfter As Boolean If $bNoSelect Then Return $bNoSelect = True aOld = $cSuites[lvwSuite.Key] For Each sKey In tvwSuite.Keys If aOld Then bBefore = aOld.Exist(sKey) Else bBefore = False Endif bAfter = tvwSuite[sKey].Selected If bBefore = bAfter Then Continue With tvwSuite[sKey] If .ParentKey Then If bAfter Then tvwSuite[.ParentKey].Selected = True Else If .Children Then 'tvwSuite.Current.Expanded = True tvwSuite.MoveTo(.Key) tvwSuite.MoveChild() While tvwSuite.Available tvwSuite.Item.Selected = bAfter tvwSuite.MoveNext() Wend Endif End With Next $bNoSelect = False $cSuites[lvwSuite.Key] = tvwSuite.Selection End Private Sub SaveSuites() MTest.SaveSuites($cSuites, cmbTestWith.Index) Catch Message.Error(("Unable to save test suites.") & "\n\n" & Error.Text) End Public Sub btnDelete_Click() Dim sKey As String sKey = lvwSuite.Key If Not sKey Or If sKey = "$" Then Return If Message.Warning(("Do you really want to remove this test suite?"), ("Remove"), ("Cancel")) = 2 Then Return $cSuites.Remove(sKey) lvwSuite.Remove(sKey) lvwSuite["$"].Selected = True LoadTestWith End Public Sub lvwSuite_Cancel() lvwSuite.Item.Text = lvwSuite.Item.Key End Public Sub btnSelectAll_Click() tvwSuite.SelectAll End Public Sub btnUnselectAll_Click() tvwSuite.UnselectAll End Public Sub btnCopy_Click() CreateSuite(lvwSuite.Key) End Public Sub Form_Close() Settings.Write(Me) SaveSuites End Public Sub Form_KeyPress() Select Case Key.Code Case Key["+"] btnNew.Value = True Case Key.Delete, Key["-"] btnDelete.Value = True Case Key["Z"] If Key.Control Then btnReset.Value = True End Select End Public Sub lvwSuite_DblClick() Try lvwSuite.Current.Rename() End gambas-3.16.3/app/src/gambas3/.src/Debug/FTestSuite.form000066400000000000000000000054561411575327000225600ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,83,57) Text = ("Test suites") Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox1 HBox MoveScaled(1,1,79,4) Spacing = True { Label1 Label MoveScaled(0,0,9,4) AutoResize = True Text = ("Test with") } { cmbTestWith ComboBox MoveScaled(10,0,20,4) Expand = True ReadOnly = True } } { HBox2 Panel MoveScaled(1,8,77,42) Expand = True Arrangement = Arrange.Horizontal Border = Border.Plain { Panel1 VBox MoveScaled(2,2,37.875,37.875) Expand = True { lvwSuite ListView MoveScaled(4,3,27,23) Expand = True Sorted = True Editable = True Border = False } { Separator4 Separator MoveScaled(10,28,13,0) } { Panel2 HBox MoveScaled(5,29,25,4) { btnNew ToolButton MoveScaled(0,0,4,4) ToolTip = ("New test suite") AutoResize = True Picture = Picture["icon:/small/add"] } { btnCopy ToolButton MoveScaled(4,0,4,4) ToolTip = ("Duplicate test suite") AutoResize = True Picture = Picture["icon:/small/copy"] } { btnRename ToolButton MoveScaled(8,0,4,4) ToolTip = ("Rename test suite") AutoResize = True Picture = Picture["icon:/small/edit"] } { btnDelete ToolButton MoveScaled(12,0,4,4) ToolTip = ("Delete test suite") AutoResize = True Picture = Picture["icon:/small/remove"] } } } { Separator1 Separator MoveScaled(41,14,0,10) } { Panel5 VBox MoveScaled(44,2,27.875,37.875) Expand = True { tvwSuite TreeView MoveScaled(0,0,27,20) Expand = True Mode = Select.Multiple Sorted = True Border = False ShowCheck = True } { Separator2 Separator MoveScaled(7,22,16,0) } { Panel6 HBox MoveScaled(2,26,17,4) { btnSelectAll ToolButton MoveScaled(0,0,4,4) ToolTip = ("Select all tests") AutoResize = True Picture = Picture["icon:/small/select-all"] } { btnUnselectAll ToolButton MoveScaled(4,0,4,4) ToolTip = ("Unselect all tests") AutoResize = True Picture = Picture["icon:/small/unselect"] } } } } { HBox3 HBox MoveScaled(2,51,80,4) Spacing = True Invert = True { btnClose Button MoveScaled(58,0,16,4) Text = ("Close") Picture = Picture["icon:/small/close"] Cancel = True } { btnReset Button MoveScaled(41,0,16,4) Text = ("Reset") Picture = Picture["icon:/small/undo"] } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/000077500000000000000000000000001411575327000177735ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Dialog/Database/000077500000000000000000000000001411575327000214775ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Dialog/Database/FFieldChooser.class000066400000000000000000000052321411575327000252040ustar00rootroot00000000000000' Gambas class file Static Public Value As String Static Private $sConnection As String Static Private $sTable As String Static Private $bMulti As Boolean Private $hConn As New Connection Public Sub Run(sConnection As String, sTable As String, bMulti As Boolean, sValue As String) As Boolean $sConnection = sConnection $sTable = sTable $bMulti = bMulti Value = sValue Return Not Me.ShowModal() End Public Sub btnOK_Click() If $bMulti Then Value = lstFieldList.List.Join("\n") Else Value = lstField.Text Endif Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim hConfig As Settings Dim aField As String[] lblConnection.Text = $sConnection hConfig = New Settings(Project.Dir &/ ".connection" &/ $sConnection & ".connection") $hConn.Close MConnection.InitFrom($hConn, hConfig, $sConnection, True) Try $hConn.Open If Error Then Balloon.Error(("Unable to open connection.") & "\n\n" & Error.Text, lblConnection) Goto DISABLE Endif lblTable.Text = $sTable aField = MConnection.GetFields($hConn, $sTable) If Not aField Then Balloon.Error(("Unable to get table fields.") & "\n\n" & Error.Text, lblTable) Goto DISABLE Endif lstField.List = aField If $bMulti Then Me.Title = ("Edit field list") lstFieldList.List = Split(Value, "\n") Else Me.Title = ("Select a field") lstField.Index = lstField.Find(Value) panFieldList.Hide lstFieldList.Hide lstField.Mode = Select.Single Endif Return DISABLE: panField.Enabled = False btnOK.Enabled = False End Public Sub btnRight_Click() Dim iInd As Integer For iInd = 0 To lstField.Count - 1 If lstField[iInd].Selected Then lstFieldList.Add(lstField[iInd].Text) Endif Next lstField.UnselectAll End Public Sub btnLeft_Click() Dim iInd As Integer While iInd < lstFieldList.Count If lstFieldList[iInd].Selected Then lstFieldList.Remove(iInd) Else Inc iInd Endif Wend End Public Sub btnDown_Click() Dim iInd As Integer iInd = lstFieldList.Index If iInd < (lstFieldList.Count - 1) Then Swap lstFieldList[iInd].Text, lstFieldList[iInd + 1].Text lstFieldList.Index = iInd + 1 Endif End Public Sub btnUp_Click() Dim iInd As Integer iInd = lstFieldList.Index If iInd > 0 Then Swap lstFieldList[iInd].Text, lstFieldList[iInd - 1].Text lstFieldList.Index = iInd - 1 Endif End Public Sub lstField_Activate() If Not $bMulti Then btnOK.Value = True Else btnRight_Click Endif End Public Sub lstFieldList_Activate() btnLeft_Click End Public Sub btnClear_Click() lstFieldList.Clear End gambas-3.16.3/app/src/gambas3/.src/Dialog/Database/FFieldChooser.form000066400000000000000000000041751411575327000250470ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,53) Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox2 HPanel MoveScaled(1,1,66,9) Spacing = True { Label1 Label MoveScaled(0,0,19,4) Text = ("Connection") } { lblConnection Label MoveScaled(21,0,40,4) Expand = True Padding = 4 Border = Border.Plain } { Label2 Label MoveScaled(0,5,19,4) Text = ("Table") } { lblTable Label MoveScaled(21,5,40,4) Expand = True Padding = 4 Border = Border.Plain } } { panField HBox MoveScaled(1,11,66,36) Expand = True Spacing = True { lstField ListBox MoveScaled(2,1,25,34) Expand = True Mode = Select.Multiple } { panFieldList VBox MoveScaled(29,1,5,34) Spacing = True { Panel2 Panel MoveScaled(0,0,5,1) Expand = True } { btnRight Button MoveScaled(0,2,5,5) Picture = Picture["icon:/small/right"] } { btnLeft Button MoveScaled(0,8,5,5) Picture = Picture["icon:/small/left"] } { btnUp Button MoveScaled(0,14,5,5) Picture = Picture["icon:/small/up"] } { btnDown Button MoveScaled(0,20,5,5) Picture = Picture["icon:/small/down"] } { btnClear Button MoveScaled(0,26,5,5) Picture = Picture["icon:/small/delete"] } { Panel3 Panel MoveScaled(0,32,5,1) Expand = True } } { lstFieldList ListBox MoveScaled(36,1,26,34) Expand = True Mode = Select.Multiple } } { HBox1 HBox MoveScaled(1,48,66,4) Spacing = True { btnUndo Button MoveScaled(1,0,16,4) Visible = False Text = Shortcut(("Undo"), "U") Picture = Picture["icon:/small/undo"] } { Panel1 Panel MoveScaled(23,0,4,4) Expand = True } { btnOK Button MoveScaled(31,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(48,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/Database/FTableChooser.class000066400000000000000000000027751411575327000252210ustar00rootroot00000000000000' Gambas class file Static Public Table As String Static Private $sConnection As String Private $hConn As New Connection Public Sub Run(sConnection As String) As Boolean $sConnection = sConnection Return Not Me.ShowModal() End Public Sub btnOK_Click() Table = "" If lvwTable.Enabled Then Try Table = lvwTable.Current.Text Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim hConfig As Settings lblConnection.Text = $sConnection ' If $sConnection Then ' cmbConnection.List = [$sConnection] ' cmbConnection.Enabled = False ' cmbConnection.Index = 0 ' Else ' cmbConnection.List = MConnection.GetConnections() ' Try cmbConnection.Text = Project.Config["/Connection/Default"] ' If cmbConnection.Index < 0 Then cmbConnection.Index = 0 ' Endif 'cmbConnection_Click 'End 'Public Sub cmbConnection_Click() 'Dim sName As String = cmbConnection.Text 'If Not sName Then Return hConfig = New Settings(Project.Dir &/ ".connection" &/ $sConnection & ".connection") $hConn.Close MConnection.InitFrom($hConn, hConfig, $sConnection, True) $hConn.Open MConnection.FillViewWithTables(lvwTable, $hConn, False) Try lvwTable["T" & Table].Selected = True Try lvwTable["S" & Table].Selected = True Try lvwTable.Current.EnsureVisible Catch Balloon.Error(("Unable to open connection.") & "\n\n" & Error.Text, lblConnection) lvwTable.Enabled = False End Public Sub lvwTable_Activate() btnOK.Value = True End gambas-3.16.3/app/src/gambas3/.src/Dialog/Database/FTableChooser.form000066400000000000000000000017071411575327000250510ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,47) Text = ("Choose a table") Resizable = False Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True { HPanel1 HPanel MoveScaled(1,2,65,35) AutoResize = True Spacing = True { Label1 Label MoveScaled(1,1,19,4) Text = ("Connection") } { lblConnection Label MoveScaled(22,1,41,4) Expand = True Padding = 4 Border = Border.Plain } { lvwTable TreeView MoveScaled(1,6,61,25) Expand = True Sorted = True } } { Panel2 Panel MoveScaled(22,38,4,1) } { HBox1 HBox MoveScaled(1,41,66,4) Spacing = True { Panel1 Panel MoveScaled(4,0,4,4) Expand = True } { btnOK Button MoveScaled(31,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(48,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/FColorChooser.class000066400000000000000000000173411411575327000235370ustar00rootroot00000000000000' Gambas class file Static Public ColorName As String Static Public Value As Integer Static Public Pattern As String Static Private $bInsert As Boolean Static Private $sColor As String Static Private $bAlpha As Boolean 'Static Private $aDefaultColors As String[] = ["Background", "Foreground", "SelectedBackground", "SelectedForeground", "LightBackground", "LightForeground", "TextBackground", "TextForeground", "ButtonBackground", "ButtonForeground", "TooltipBackground", "TooltipForeground", "LinkForeground", "VisitedForeground"] Static Private $aColorName As String[] Static Private $aPict As Picture[] Static Private $sTitle As String Static Private $aPattern As String[] Private Const DEFAULT_COLOR As String = "-" Private $aButtonPattern As Button[] Static Private Sub GetColor(sName As String) As Integer Dim hClass As CClassInfo Dim hSym As CSymbolInfo hClass = Project.Documentation.Classes["Color"] hSym = hClass.Symbols[sName] If hSym.Kind = "C" And If hSym.Type = "i" Then Return CInt(hSym.Value) Try Return Object.GetProperty(Classes["Color"], sName) Return -1 End Static Public Sub FromString(sColor As String) As Integer If sColor == "None" Then Return -1 If IsLetter(Left(sColor)) Then Return GetColor(sColor) If Left(sColor) = "#" Then Return Val("&H" & Mid$(sColor, 2)) If Left(sColor) = "&" Then Return Val(sColor) Catch Return -1 End Static Public Function Run(Optional sColor As String, Optional bAlpha As Boolean, Optional sTitle As String, Optional aPrefix As String[]) As Boolean $bInsert = False $sColor = sColor $bAlpha = bAlpha $sTitle = sTitle $aPattern = aPrefix Return Not FColorChooser.ShowModal() End Static Public Sub Insert(bAlpha As Boolean, sTitle As String, aPrefix As String[], Optional sColor As String) As Boolean $bInsert = True $sColor = sColor $bAlpha = bAlpha $sTitle = sTitle $aPattern = aPrefix Return Not FColorChooser.ShowModal() End Public Sub btnOK_Click() Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub _new() gvwColor.AddColumn("", Desktop.Scale * 4, Align.Center) gvwColor.AddColumn(("Color")).Expand = True gvwColor.AddColumn(("R"), Desktop.Scale * 6, Align.Center) gvwColor.AddColumn(("G"), Desktop.Scale * 6, Align.Center) gvwColor.AddColumn(("B"), Desktop.Scale * 6, Align.Center) End Public Sub Form_Open() Dim hClass As CClassInfo Dim hSym As CSymbolInfo Dim sColor As String Dim iIndex As Integer Dim I As Integer Dim aColor As String[] Dim iSep As Integer Settings.Read(Me) If $aPattern And If $aPattern.Count Then $aButtonPattern = New Button[$aPattern.Count] For I = 0 To $aPattern.Max $aButtonPattern[I] = New Button(panColor) As "Color" $aButtonPattern[I].AutoResize = True '$aButtonPattern[I].H = Desktop.Scale * 4 Project.SetEditorFont($aButtonPattern[I]) Next btnOK.Hide sprColor.Raise btnCancel.Raise Endif hClass = Project.Documentation.Classes["Color"] If hClass Then $aColorName = ["", "Transparent", "-"] aColor = New String[] For Each hSym In hClass.Symbols sColor = hSym.Name If sColor = "Default" Or If hSym.Kind <> "R" Or If hSym.Type <> "i" Or If aColor.Exist(sColor) Then Continue aColor.Add(sColor) Next aColor.Sort(gb.Natural) $aColorName.Insert(aColor) If aColor.Count Then iSep = $aColorName.Count $aColorName.Add("-") Endif aColor = New String[] For Each hSym In hClass.Symbols sColor = hSym.Name If sColor = "Default" Or If hSym.Kind <> "C" Or If hSym.Type <> "i" Or If $aColorName.Exist(sColor) Or If aColor.Exist(sColor) Then Continue aColor.Add(sColor) Next aColor.Sort(gb.Natural) $aColorName.Insert(aColor) $aPict = New Picture[$aColorName.Count] gvwColor.Rows.Count = $aColorName.Count gvwColor.Rows.H = Desktop.Scale * 4 gvwColor.Rows[2].H = 1 gvwColor[2, 0].ColumnSpan = gvwColor.Columns.Count If iSep Then gvwColor.Rows[iSep].H = 1 gvwColor[iSep, 0].ColumnSpan = gvwColor.Columns.Count Endif Endif If Not IsNull(Val($sColor)) Then gvwColor.Row = 0 dlgColor.SelectedColor = Val($sColor) iIndex = 1 Else If $sColor Then gvwColor.Row = $aColorName.Find($sColor) Else gvwColor.Row = 0 Endif iIndex = 0 Endif If Not hClass Then iIndex = 1 tabColor[0].Visible = False Endif tabColor.Index = iIndex dlgColor.ShowAlpha = $bAlpha If $sTitle Then Me.Title = $sTitle Else $sTitle = ("Select a color") Endif UpdateColor End Public Sub dlgColor_Activate() If $aPattern Then $aButtonPattern[0].Value = True Else btnOK.Value = True Endif End Public Sub Form_Close() Dim hButton As Button If $aPattern Then For Each hButton In $aButtonPattern hButton.Delete Next $aButtonPattern = Null btnOK.Show Endif Settings.Write(Me) End Private Sub UpdateColor() Dim sColor As String Dim I As Integer If tabColor.Index = 0 Then Try sColor = $aColorName[gvwColor.Row] Else sColor = CStr(dlgColor.Value) Endif If sColor = "-" Then Return If Not sColor Then ColorName = "" Value = -1 Else If IsLetter(Left(sColor)) Then ColorName = sColor Value = GetColor(sColor) Else Value = Val(sColor) If $bAlpha Then ColorName = "&H" & Hex$(Value, 8) & "&" Else ColorName = "&H" & Hex$(Value, 6) & "&" Endif Endif If $aPattern Then For I = 0 To $aPattern.Max sColor = CInsertColor.FormatColor(Value, $aPattern[I]) $aButtonPattern[I].Text = Replace(sColor, "&", "&&") $aButtonPattern[I].Tag = sColor Next 'Me.Width = Max(Me.Width, $aButtonPattern[$aPattern.Max].X + $aButtonPattern[$aPattern.Max].W + Desktop.Scale * 40) Endif End Public Sub gvwColor_Select() UpdateColor End Public Sub dlgColor_Change() UpdateColor End Public Sub tabColor_Click() UpdateColor End Public Sub gvwColor_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, (Column) As Integer) If $aColorName[Row] = "-" Then Paint.FillRect(X, Y, Width, Height, Color.LightForeground) End Public Sub gvwColor_Data(Row As Integer, Column As Integer) Dim hPict As Picture Dim hImage As Image Dim S As Integer Dim sName As String sName = $aColorName[Row] If sName = "-" Then Return With gvwColor.Data Select Case Column Case 0 If Row > 0 Then hPict = $aPict[Row] If Not hPict Then S = Stock.GetSize("small") hImage = Picture["img/32/tile.png"].Image Paint.Begin(hImage) Paint.DrawRect(0, 0, 32, 32, Color.TextForeground, 2) Paint.FillRect(2, 2, 28, 28, GetColor(sName)) Paint.End hPict = hImage.Stretch(S, S).Picture $aPict[Row] = hPict Endif .Picture = hPict Endif Case 1 If Row = 0 Then .Text = " Default" Else .Text = " " & $aColorName[Row] Endif Case 2 If Row > 0 And If sName <> "Transparent" Then .Text = CStr(Color[GetColor(sName)].Red) Case 3 If Row > 0 And If sName <> "Transparent" Then .Text = CStr(Color[GetColor(sName)].Green) Case 4 If Row > 0 And If sName <> "Transparent" Then .Text = CStr(Color[GetColor(sName)].Blue) End Select End With End Public Sub gvwColor_Activate() If $aButtonPattern And If $aButtonPattern.Count Then $aButtonPattern[0].Value = True Else btnOK.Value = True Endif End Public Sub Color_Click() Pattern = Last.Tag Me.Close(True) End gambas-3.16.3/app/src/gambas3/.src/Dialog/FColorChooser.form000066400000000000000000000022241411575327000233670ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,67,63) Text = ("Select a color") Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { tabColor TabPanel MoveScaled(0,0,49,57) Expand = True Arrangement = Arrange.Fill Count = 2 Index = 0 Text = ("System") { gvwColor GridView MoveScaled(2,2,43,44) Border = False Mode = Select.Single Grid = False Padding = 0 Header = GridView.Horizontal ScrollBar = Scroll.Vertical Resizable = False } Index = 1 Text = ("Free") { Panel3 Panel MoveScaled(1,1,47,50) Arrangement = Arrange.Fill Margin = True { dlgColor ColorChooser MoveScaled(1,1,45,48) Expand = True Border = False ShowCustom = True } } Index = 0 } { panColor HBox MoveScaled(1,58,46,4) Spacing = True { sprColor Spring MoveScaled(8,0,6,4) } { btnOK Button MoveScaled(15,0,15,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(31,0,15,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/FFileProperty.class000066400000000000000000000032521411575327000235560ustar00rootroot00000000000000' Gambas class file Class DesktopMime Static Private $sPath As String 'Private $bStat As Boolean Public Sub Run(sPath As String) As Boolean $sPath = sPath Return Not FFileProperty.ShowModal() End Public Sub fprInfo_Data() Dim sPath As String = fprInfo.Path Dim hModule As CModule Dim sType As String If Project.IsSourcePath(sPath) Then Try fprInfo.Data.Icon = Project.GetFileIcon(sPath, 64) hModule = CModule.FromExt(File.Ext(sPath)) If hModule Then sType = Subst(("Gambas &1"), hModule.Name) Else Select Case File.Ext(sPath) Case "module" sType = ("Gambas module") Case "test" sType = ("Gambas test module") Case "class" sType = ("Gambas class") End Select Endif If sType Then fprInfo.Data.Type = sType Return Endif Endif Stop Event End ' Private Sub AddStat(sName As String, sValue As String) ' ' Dim N As Integer = gvwStat.Rows.Count ' ' Inc gvwStat.Rows.Count ' gvwStat[N, 0].Text = sName ' gvwStat[N, 0].Foreground = Color.Merge(Color.Foreground, Color.LightForeground) ' gvwStat[N, 1].Text = sValue ' ' End Public Sub Form_Open() Dim sPath As String sPath = $sPath If Left(sPath) = "$" Then sPath = Project.GetSpecialDir(sPath) If Not sPath Then sPath = Project.Dir fprInfo.Path = sPath Me.Title = Subst(("'&1' properties"), File.Name(sPath)) ' If (sPath &/ "/") = (Project.SourceDir &/ "/") Then ' fprInfo.Add(panStat, ("Statistics")) ' Endif btnClose.SetFocus End Public Sub btnClose_Click() Me.Close End gambas-3.16.3/app/src/gambas3/.src/Dialog/FFileProperty.form000066400000000000000000000013401411575327000234100ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,62,56) Arrangement = Arrange.Vertical Spacing = True Margin = True { panStat Panel MoveScaled(43,5,29,24) Visible = False Arrangement = Arrange.Fill Margin = True { gvwStat GridView MoveScaled(3,3,23,18) Background = Color.Background Border = False Grid = False } } { fprInfo FileProperties MoveScaled(2,2,36,37) Expand = True } { HBox1 HBox MoveScaled(1,43,40,4) { Panel3 Panel MoveScaled(11,0,3,4) Expand = True } { btnClose Button MoveScaled(20,0,16,4) Text = ("Close") Picture = Picture["icon:/small/close"] Default = True Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/FFontChooser.class000066400000000000000000000011721411575327000233620ustar00rootroot00000000000000' Gambas class file Static Private $sFont As String Static Private $bShowFixed As Boolean Static Public Function Run(Optional sFont As String, Optional bShowFixed As Boolean) As String $sFont = sFont $bShowFixed = bShowFixed If FFontChooser.ShowModal() Then Return $sFont Endif End Public Sub btnOK_Click() $sFont = dlgFont.SelectedFont Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() dlgFont.FixedOnly = $bShowFixed dlgFont.SelectedFont = $sFont End Public Sub dlgFont_Activate() btnOK.Value = True End Public Sub Form_Activate() dlgFont.SetFocus End gambas-3.16.3/app/src/gambas3/.src/Dialog/FFontChooser.form000066400000000000000000000011021411575327000232110ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,67,56) Text = ("Select a font") Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { dlgFont FontChooser MoveScaled(2,2,63,48) Expand = True } { Panel2 HBox MoveScaled(6,51,49,4) Spacing = True { Panel1 Panel MoveScaled(0,0,8,4) Expand = True } { btnOK Button MoveScaled(11,0,15,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(27,0,15,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/FList.class000066400000000000000000000067251411575327000220550ustar00rootroot00000000000000' Gambas class file Static Public Value As String[] 'Static Private $aChoice As String[] Static Private $sTitle As String Private $bCombo As Boolean Private $aUndo As String[] Static Public Function Run(aValue As String[], Optional sTitle As String) As Boolean Dim hForm As Form Value = aValue '$aChoice = aChoice $sTitle = sTitle hForm = New FList Return Not hForm.ShowModal() End Public Sub Form_Open() If $sTitle Then Me.Title = $sTitle ' If $aChoice Then ' cmbValue.Show ' cmbValue.List = $aChoice ' txtValue.Hide ' $bCombo = True ' Else txtValue.Show cmbValue.Hide $bCombo = False ' Endif $aUndo = Value SetList(Value) End Private Sub SetList(aValue As String[]) lstValue.List = aValue If lstValue.Count Then lstValue.Index = 0 Refresh End Public Sub btnOK_Click() Value = lstValue.List Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub lstValue_Select() If Not lstValue.Current Then Return If $bCombo cmbValue.Text = lstValue.Current.Text cmbValue.SetFocus cmbValue.SelectAll Else txtValue.Text = lstValue.Current.Text txtValue.SetFocus txtValue.SelectAll Endif End Public Sub txtValue_Change() If lstValue.Current Then lstValue.Current.Text = txtValue.Text Endif End Public Sub cmbValue_Change() If lstValue.Current Then lstValue.Current.Text = cmbValue.Text Endif End Public Sub btnInsert_Click() lstValue.Add(Subst(("Item &1"), CStr(lstValue.Count + 1))) 'PRINT "Count ="; lstValue.Count Refresh lstValue.Index = lstValue.Count - 1 'PRINT "Index ="; lstValue.Index; " /"; lstValue.Count End Private Sub Refresh() Dim bEnabled As Boolean bEnabled = lstValue.Count txtValue.Enabled = bEnabled cmbValue.Enabled = bEnabled btnDelete.Enabled = bEnabled btnUp.Enabled = bEnabled btnDown.Enabled = bEnabled btnClear.Enabled = bEnabled btnCopy.Enabled = bEnabled If Not bEnabled Then txtValue.Text = "" cmbValue.Text = "" Endif End Public Sub btnDelete_Click() Dim iIndex As Integer iIndex = lstValue.Index If iIndex < 0 Then Return lstValue.Remove(iIndex) If iIndex >= lstValue.Count Then Dec iIndex lstValue.Index = iIndex Refresh End Public Sub btnClear_Click() If Message.Question(("Do you really want to clear the list?"), ("Clear"), ("Cancel")) <> 1 Then Return lstValue.Clear Refresh End Public Sub btnDown_Click() Dim iInd As Integer iInd = lstValue.Index If iInd < (lstValue.Count - 1) Then Swap lstValue[iInd].Text, lstValue[iInd + 1].Text lstValue.Index = iInd + 1 Endif End Public Sub btnUp_Click() Dim iInd As Integer iInd = lstValue.Index If iInd > 0 Then Swap lstValue[iInd].Text, lstValue[iInd - 1].Text lstValue.Index = iInd - 1 Endif End Public Sub btnCopy_Click() Clipboard.Copy(lstValue.List.Join("\n") & "\n", MMime.LIST) End Public Sub btnPaste_Click() Dim sValue As String Dim aList As String[] sValue = Clipboard.Paste(MMime.LIST) If Not sValue Then Return aList = Split(sValue, "\n") aList.Remove(aList.Max) SetList(aList) End Public Sub btnUndo_Click() SetList($aUndo) End Public Sub btnInvert_Click() Dim I As Integer Dim iInd As Integer Dim M As Integer If lstValue.Count <= 1 Then Return iInd = lstValue.Index M = lstValue.Count - 1 For I = 0 To M \ 2 Swap lstValue[I].Text, lstValue[M - I].Text Next lstValue.Index = M - iInd End gambas-3.16.3/app/src/gambas3/.src/Dialog/FList.form000066400000000000000000000041371411575327000217060ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,71,61) Text = ("Edit list property") Arrangement = Arrange.Horizontal Spacing = True Margin = True { VBox1 VBox MoveScaled(0,1,49,46) Expand = True Spacing = True { lstValue ListBox MoveScaled(1,1,46,25) Expand = True } { cmbValue ComboBox MoveScaled(1,28,43,4) Visible = False Enabled = False Sorted = True } { txtValue TextBox MoveScaled(1,32,43,4) Enabled = False } } { VBox3 VBox MoveScaled(51,1,19,59) Spacing = True { btnInsert Button MoveScaled(0,0,18,4) Text = Shortcut(("Insert"), "I") Picture = Picture["icon:/small/add"] } { btnDelete Button MoveScaled(0,5,18,4) Text = Shortcut(("Delete"), "D") Picture = Picture["icon:/small/delete"] } { btnUp Button MoveScaled(0,10,14,4) Text = Shortcut(("Up"), "U") Picture = Picture["icon:/small/up"] } { btnDown Button MoveScaled(0,15,15,4) Text = Shortcut(("Down"), "D") Picture = Picture["icon:/small/down"] } { Panel2 Panel MoveScaled(0,20,2,1) } { btnInvert Button MoveScaled(0,23,16,4) Text = Shortcut(("Invert"), "n") Picture = Picture["icon:/small/flip-v"] } { btnClear Button MoveScaled(0,28,16,4) Text = Shortcut(("Clear"), "e") Picture = Picture["icon:/small/clear"] } { btnCopy Button MoveScaled(0,33,16,4) Text = Shortcut(("Copy"), "C") Picture = Picture["icon:/small/copy"] } { btnPaste Button MoveScaled(0,38,16,4) Text = Shortcut(("Paste"), "P") Picture = Picture["icon:/small/paste"] } { btnUndo Button MoveScaled(0,43,16,4) Text = Shortcut(("Undo"), "U") Picture = Picture["icon:/small/undo"] } { Panel1 Panel MoveScaled(2,49,7,1) Expand = True } { btnOK Button MoveScaled(0,50,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(0,55,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Dialog/FSelectIcon.class000066400000000000000000000107401411575327000231620ustar00rootroot00000000000000' Gambas class file 'STATIC PRIVATE $aImgExt AS String[] = ["png", "jpeg", "jpg", "gif", "xpm"] Public Const SELECT_STOCK As Integer = 1 Public Const SELECT_IMAGE As Integer = 2 Public Const SELECT_SVGIMAGE As Integer = 4 Public Const SELECT_PUBLIC As Integer = 8 Private $sIcon As String Private $sKey As String Private $sSize As String Private $iOption As Integer Private $aSizes As String[] Private $bNoRefreshStock As Boolean Public Sub Run(sIcon As String, Optional iOption As Integer = SELECT_IMAGE + SELECT_STOCK, aSizes As String[]) As String $sIcon = sIcon 'If Not Project.IsStockAllowed() Then iOption = iOption And Not SELECT_STOCK $iOption = iOption $aSizes = aSizes If Not Me.ShowModal() Then Return Return $sIcon End Public Sub Form_Open() Dim iPos As Integer Dim aFilter As String[] Dim sIcon As String Inc Application.Busy Settings.Read(Me) aFilter = New String[] If $iOption And SELECT_IMAGE Then aFilter.Insert(["*.png;*.jpg;*.jpeg;*.xpm;*.gif;*.mng", ("Image files")]) If $iOption And SELECT_SVGIMAGE Then aFilter.Insert(["*.svg", ("SVG image files")]) If $iOption And SELECT_PUBLIC Then fchIcon.Root = Project.Dir &/ ".public" Else fchIcon.Root = Project.Dir Endif fchIcon.Filter = aFilter $bNoRefreshStock = True If $aSizes And If $iOption And SELECT_STOCK Then cmbSize.List = $aSizes tabIcon[1].Visible = True Else tabIcon[1].Visible = False Endif If $sIcon Begins "icon:/" Then sIcon = Mid$($sIcon, 7) iPos = InStr(sIcon, "/") icwStock.Clear If iPos Then SetSize(Left$(sIcon, iPos - 1)) Else SetSize(Settings["FSelectIcon/Size", "32"]) Endif sIcon = Mid$(sIcon, iPos + 1) If icwStock.Exist(sIcon) Then icwStock[sIcon].Selected = True icwStock[sIcon].EnsureVisible Endif $sKey = sIcon tabIcon.Index = 1 Else If $sIcon Then fchIcon.SelectedPath = fchIcon.Root &/ $sIcon tabIcon.Index = 0 Endif txtFilter.Text = "" chkUseSize.Value = Settings["FSelectIcon/PreviewSize", 0] If Not $sSize Then SetSize(Settings["FSelectIcon/Size", "32"]) $bNoRefreshStock = False RefreshStock Dec Application.Busy End ' PUBLIC SUB fchIcon_Icon(Path AS String) ' ' IF $aImgExt.Find(File.Ext(Path)) < 0 THEN RETURN ' IF Stat(Path).Size > 8192 THEN RETURN ' fchIcon.Icon = Picture.Load(Path) ' ' END Public Sub btnCancel_Click() Me.Close End Public Sub cmbSize_Activate() SetSize(cmbSize.Text) End Public Sub cmbSize_Click() SetSize(cmbSize.Text) End Private Sub RefreshStock() Dim sIcon As String Dim sFilter As String Dim bPreviewSize As Boolean If $bNoRefreshStock Then Return Inc Application.Busy sFilter = Trim(txtFilter.Text) bPreviewSize = chkUseSize.Value icwStock.Clear For Each sIcon In Stock.Icons If sFilter And If InStr(sIcon, LCase(sFilter)) = 0 Then Continue icwStock.Add(sIcon, sIcon, Stock[If(bPreviewSize, $sSize, "32") &/ sIcon]) Next If $sKey And If icwStock.Exist($sKey) Then icwStock[$sKey].Selected = True icwStock[$sKey].EnsureVisible Endif Dec Application.Busy txtFilter.SetFocus End Private Sub SetSize(sSize As String) As Boolean Dim iSize As Integer sSize = LCase(sSize) Try iSize = CInt(sSize) If Error Then If Not Stock.Sizes.Exist(sSize) Then cmbSize.Text = $sSize Return True Endif Else If iSize < 8 Or iSize > 256 Then cmbSize.Text = $sSize Return True Endif sSize = CStr(iSize) Endif $sSize = sSize Object.Lock(cmbSize) cmbSize.Text = sSize Object.Unlock(cmbSize) RefreshStock End Public Sub btnOK_Click() Select Case tabIcon.Index Case 0 $sIcon = Mid$(fchIcon.SelectedPath, Len(fchIcon.Root) + 1) If Left($sIcon) = "/" Then $sIcon = Mid$($sIcon, 2) Case 1 If Not $sKey Then Return $sIcon = "icon:/" &/ $sSize &/ $sKey Settings["FSelectIcon/Size"] = $sSize End Select If Not $sIcon Then Return Me.Close(True) End Public Sub icwStock_Activate() btnOK.Value = True End Public Sub fchIcon_Activate() btnOK.Value = True End Public Sub Form_Close() Settings.Write(Me) End Public Sub tabIcon_Click() If tabIcon.Index = 1 Then txtFilter.SetFocus Endif End Public Sub txtFilter_Filter() RefreshStock End Public Sub icwStock_Select() $sKey = icwStock.Key End Public Sub chkUseSize_Click() Settings["FSelectIcon/PreviewSize"] = chkUseSize.Value RefreshStock End gambas-3.16.3/app/src/gambas3/.src/Dialog/FSelectIcon.form000066400000000000000000000033161411575327000230210ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,75,71) Text = ("Select a picture") Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { tabIcon TabPanel MoveScaled(1,1,73,48) Expand = True Arrangement = Arrange.Vertical Count = 2 Index = 0 Text = ("Project") { fchIcon FileChooser MoveScaled(2,2,66,39) Expand = True Border = False Picture = Picture["icon:/small/gambas"] ShowPreview = True ShowBookmark = False Margin = True ReadOnly = True } Index = 1 Text = ("Stock") { HBox2 HBox MoveScaled(1,2,71,6) Spacing = True Margin = True { txtFilter ButtonBox MoveScaled(1,0,24,4) Expand = True Button = False ClearButton = True Filter = True } { Label1 Label MoveScaled(27,0,5,4) AutoResize = True Text = ("Size") } { cmbSize ComboBox MoveScaled(33,0,16,4) } { chkUseSize CheckBox MoveScaled(51,0,18,4) AutoResize = True Text = ("Size preview") } } { Separator1 Separator MoveScaled(7,10,20,0) } { icwStock IconView MoveScaled(3,14,47,26) Font = Font["-1"] Expand = True Sorted = True IconLines = 1 Border = False } Index = 0 } { HBox1 HBox MoveScaled(3,52,44,4) Spacing = True Invert = True { btnCancel Button MoveScaled(29,0,15,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(13,0,15,4) Text = ("OK") } { Panel1 Panel MoveScaled(7,1,4,3) Visible = False Expand = True } } } gambas-3.16.3/app/src/gambas3/.src/Editor/000077500000000000000000000000001411575327000200225ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Editor/Browse/000077500000000000000000000000001411575327000212635ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Editor/Browse/FProjectEditor.class000066400000000000000000000013271411575327000252000ustar00rootroot00000000000000' Gambas class file Public Path As String Public RichText As String Property Read ReadOnly As Boolean Use $bReadOnly Public Sub _new(sPath As String) Me.Name = File.Name(sPath) Path = sPath End Public Sub Form_Open() ReadConfig SetReadOnly End Public Sub LoadFile() As Boolean Try fvwProject.Dir = Path If Error Then Return True End Public Sub SetReadOnly() Dim bReadOnly As Boolean If Project.ReadOnly Or If Project.Running Or If Project.IsReadOnly(Path) Then bReadOnly = True Endif $bReadOnly = bReadOnly 'Project.UpdateLockedAction(Me) 'UpdateMenu Project.DrawTitle(Me) End Public Sub ReadConfig() End Public Sub IsModified() As Boolean End gambas-3.16.3/app/src/gambas3/.src/Editor/Browse/FProjectEditor.form000066400000000000000000000072751411575327000250460ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,107,64) Persistent = True Arrangement = Arrange.Vertical { tlbProject ToolBar MoveScaled(1,1,103,4) Key = "project" Text = ("Project browser") Separator = True { btnReload ToolButton MoveScaled(0,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/refresh"] } { btnParent ToolButton MoveScaled(4,0,4,4) Visible = False ToolTip = ("Parent directory") Action = ".up" Picture = Picture["icon:/small/up"] } { Separator3 Separator MoveScaled(18,0,1,4) } { btnZoomOut ToolButton MoveScaled(20,0,4,4) Action = ".zoom-out" Picture = Picture["icon:/small/zoom-out"] } { sldIconSize Slider MoveScaled(24,0,16,4) Action = ".icon-size" MaxValue = 8 PageStep = 1 } { btnZoomIn ToolButton MoveScaled(40,0,4,4) Action = ".zoom-in" Picture = Picture["icon:/small/zoom-in"] } { Separator1 Separator MoveScaled(44,0,1,4) } { btnPreview ToolButton MoveScaled(46,0,4,4) ToolTip = ("Image preview") Action = ".image-preview" Picture = Picture["icon:/small/image"] Toggle = True } { btnDetail ToolButton mnuShowDetailed Name = "btnDetail" MoveScaled(50,0,4,4) ToolTip = ("Detailed view") Action = ".detail" Picture = Picture["icon:/small/view-detail"] Toggle = True } { btnProperty ToolButton mnuProperty Name = "btnProperty" MoveScaled(53,0,4,4) ToolTip = ("File properties") Action = ".property" Picture = Picture["icon:/small/info"] } { Separator2 Separator MoveScaled(57,0,1,4) } { btnCopy ToolButton MoveScaled(58,0,4,4) ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { btnCut ToolButton MoveScaled(61,0,4,4) ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { btnPaste ToolButton MoveScaled(64,0,4,4) ToolTip = ("Paste") Action = ".paste" Picture = Picture["icon:/small/paste"] } { btnDelete ToolButton MoveScaled(68,0,4,4) ToolTip = ("Delete") Action = ".delete" Picture = Picture["icon:/small/trash"] } } { fvwProject FileView MoveScaled(2,9,93,50) Expand = True Border = False Mode = Select.Multiple ShowDirectory = True } } # Gambas Action File 3.0 { Actions { Action copy Text = "Copy" Picture = "icon:/small/copy" } { Action cut Text = "Cut" Picture = "icon:/small/cut" } { Action delete Text = "Delete" Picture = "icon:/small/trash" } { Action detail Text = "Detailed view" Picture = "icon:/small/view-detail" } { Action icon-size Text = "" Picture = "$Slider" } { Action image-preview Text = "Image preview" Picture = "icon:/small/image" } { Action paste Text = "Paste" Picture = "icon:/small/paste" } { Action property Text = "File properties" Picture = "icon:/small/info" } { Action reload Text = "Reload" Picture = "icon:/small/refresh" } { Action up Text = "Parent directory" Picture = "icon:/small/up" } { Action zoom-in Text = "" Picture = "icon:/small/zoom-in" } { Action zoom-out Text = "" Picture = "icon:/small/zoom-out" } } { Toolbars { Toolbar project Text = "Project browser" List = "reload,up,zoom-out,icon-size,zoom-in,image-preview,detail,property,copy,cut,paste,delete" Default = "reload,|,zoom-out,icon-size,zoom-in,|,image-preview,detail,property,|,copy,cut,paste,delete" } } gambas-3.16.3/app/src/gambas3/.src/Editor/CBookmark.class000066400000000000000000000065341411575327000227310ustar00rootroot00000000000000' Gambas class file Private $hModule As Object Private $hMenu As Menu Private $sName As String Public Sub _new(hModule As Object, hMenuButton As MenuButton, hMenu As Menu) $hModule = hModule $hMenu = hMenu $sName = Object.Parent(GetEditor()).Name Object.Attach(hMenuButton, Me, "btnBookmark") Load End Private Sub GetEditor() As TextEditor Return $hModule.GetEditor() End Private Sub FillMenu(aBook As Integer[]) Dim hMenu As Menu Dim iLine As Integer Dim sLine As String Dim hEditor As TextEditor $hMenu.Children.Clear ' mnuAddBookmark,2,"Define bookmark",,,T,T,,,T,,,"B","icon:/small/bookmark","" ' mnuClearBookmarks,2,"Clear all bookmarks",,,T,T,,,,,,"","icon:/small/delete","" ' mnuPreviousBookmark,2,"Previous bookmark",,,T,T,,,,,T,"PgUp","icon:/small/up","" ' mnuNextBookmark,2,"Next bookmark",,,T,T,,,,,T,"PgDown","icon:/small/down","" hMenu = New Menu($hMenu) As "mnuAdd" hMenu.Text = ("Define bookmark") hMenu.Picture = Picture["icon:/small/bookmark"] hMenu.Shortcut = "Ctrl+B" hMenu = New Menu($hMenu) As "mnuClear" hMenu.Text = ("Clear all bookmarks") hMenu.Picture = Picture["icon:/small/delete"] hMenu = New Menu($hMenu) As "mnuPrevious" hMenu.Text = ("Previous bookmark") hMenu.Picture = Picture["icon:/small/up"] hMenu.Shortcut = "Alt+PgUp" hMenu = New Menu($hMenu) As "mnuNext" hMenu.Text = ("Next bookmark") hMenu.Picture = Picture["icon:/small/down"] hMenu.Shortcut = "Alt+PgDown" If aBook Then hMenu = New Menu($hMenu) hEditor = GetEditor() For Each iLine In aBook Try sLine = hEditor[iLine].Text If Error Then Continue hMenu = New Menu($hMenu) As "mnuGoto" hMenu.Tag = iLine If Len(sLine) > 36 Then sLine = Left(sLine, 32) & "..." hMenu.Text = Format(iLine + 1, "######") & ": " & Replace(sLine, "&", "&&") Next Endif End Private Sub Clear() Dim iLine As Integer Dim hEditor As TextEditor hEditor = GetEditor() For Each iLine In hEditor.Bookmarks hEditor[iLine].Bookmark = False Next End Public Sub Load() Dim aBook As Integer[] aBook = Project.Config["Bookmarks/" &/ $sName] If aBook Then GetEditor().Bookmarks = aBook FillMenu(aBook) End Private Sub Save() Dim aBook As Integer[] = GetEditor().Bookmarks Project.Config["Bookmarks/" &/ $sName] = aBook FillMenu(aBook) End Public Sub mnuAdd_Click() Dim hEditor As TextEditor hEditor = GetEditor() hEditor.Current.Bookmark = Not hEditor.Current.Bookmark Save End Public Sub mnuClear_Click() Clear Save End Public Sub mnuGoto_Click() GetEditor().GotoCenter(0, Last.Tag) End Public Sub btnBookmark_Click() mnuAdd_Click End Public Sub MovePrevious() Dim hEditor As TextEditor = GetEditor() Dim iLine As Integer = hEditor.Line While iLine > 0 Dec iLine If hEditor[iLine].Bookmark Then hEditor.GotoCenter(0, iLine) Return Endif Wend End Public Sub MoveNext() Dim hEditor As TextEditor = GetEditor() Dim iLine As Integer = hEditor.Line While iLine < (hEditor.Count - 1) Inc iLine If hEditor[iLine].Bookmark Then hEditor.GotoCenter(0, iLine) Return Endif Wend End Public Sub mnuPrevious_Click() MovePrevious End Public Sub mnuNext_Click() MoveNext End Public Sub Update() Save End gambas-3.16.3/app/src/gambas3/.src/Editor/CInsertColor.class000066400000000000000000000161301411575327000234200ustar00rootroot00000000000000' Gambas class file ' Gambas module file 'Public Const MODE_GAMBAS As Integer = 0 'Public Const MODE_HTML As Integer = 1 'Public Const MODE_C As Integer = 2 Private $hModule As Object Private $hMenu As Menu Private $hObs As Observer Private $sPattern As String Private $aPattern As String[] 'Private $aPatternAlpha As String[] Private $aPatternSearch As String[] Static Public Sub FormatColor(iColor As Integer, sFormat As String) As String Dim I As Integer Dim sCar As String Dim sType As String Dim sResult As String Dim iVal As Integer For I = 1 To Len(sFormat) sCar = Mid$(sFormat, I, 1) If InStr("RGBA", sCar) Then sType = Mid$(sFormat, I + 1, 1) Select Case sCar Case "R" iVal = Color[iColor].Red Case "G" iVal = Color[iColor].Green Case "B" iVal = Color[iColor].Blue Case "A" iVal = Color[iColor].Alpha Xor 255 End Select Select Case sType Case "x" sCar = Hex$(iVal, 2) Case "i" sCar = CStr(iVal) Case "f" sCar = Format(iVal / 255, "0.###") End Select Inc I Endif sResult &= sCar Next Return sResult End Static Private Sub GetColorFromString(sRgb As String) As Integer Dim aScan As String[] If sRgb Begins "rgba(" Then aScan = Scan(sRgb, "rgba(*,*,*,*)") Return Color.RGB(CInt(aScan[0]), CInt(aScan[1]), CInt(aScan[2]), CInt(255 * CFloat(aScan[3])) Xor 255) Else If sRgb Begins "rgb(" Then aScan = Scan(sRgb, "rgb(*,*,*)") Return Color.RGB(CInt(aScan[0]), CInt(aScan[1]), CInt(aScan[2])) Else If sRgb Begins "&H" Then Return Val("&H" & Mid$(sRgb, 3, 6)) Else If sRgb Begins "&" Then Return Val("&H" & Mid$(sRgb, 2, 6)) Else If sRgb Begins "#" Then If Len(sRgb) = 4 Then Return Val("&H" & Mid$(sRgb, 2, 1) & Mid$(sRgb, 2, 1) & Mid$(sRgb, 2, 2) & Mid$(sRgb, 2, 2) & Mid$(sRgb, 2, 3) & Mid$(sRgb, 2, 3)) Else If Len(sRgb) = 7 Then Return Val("&H" & Mid$(sRgb, 2, 6)) Endif Endif End Public Sub _new(hModule As Object, hMenuButton As MenuButton) Dim hMenu As Menu $hModule = hModule Select Case GetEditor().Mode Case "gambas" $aPattern = ["&HRxGxBx", "#RxGxBx", "&RxGxBx"] $aPatternSearch = ["&H", "#", "&"] Case "css", "html", "xml" $aPattern = ["#RxGxBx", "rgb(Ri,Gi,Bi)"] $aPatternSearch = ["#", "rgb(", "rgba("] Case "webpage" $aPattern = ["&HRxGxBx", "#RxGxBx", "&RxGxBx", "rgb(Ri,Gi,Bi)"] $aPatternSearch = ["&H", "#", "&", "rgb(", "rgba("] Case Else $aPattern = ["#RxGxBx"] $aPatternSearch = ["#"] End Select $sPattern = $aPattern[0] $hMenu = New Menu(hMenuButton.Window, True) As "Menu" $hMenu.Name = "mnuInsertColor" hMenu = New Menu($hMenu) hMenuButton.Menu = $hMenu.Name $hObs = New Observer(hMenuButton) As "Button" End Private Sub GetEditor() As TextEditor Return $hModule.GetEditor() End Private Sub ReadColor(sText As String, iPos As Integer, sPattern As String, Optional ByRef iLen As Integer) As String Dim aScan As String[] Dim sColor As String Dim iStart As Integer If sPattern Begins "rgb" Then If sPattern Begins "rgba(" Then aScan = Scan(Mid$(sText, iPos), sPattern & "*,*,*,*)*") If aScan.Count <> 5 Then Return Else aScan = Scan(Mid$(sText, iPos), sPattern & "*,*,*)*") If aScan.Count <> 4 Then Return Endif aScan.Pop() sColor = sPattern & aScan.Join() & ")" If Not IsMissing(iLen) Then iLen = String.Len(Mid$(sText, iPos, InStr(sText, ")", iPos) - iPos + 1)) Endif Else If Mid$(sText, iPos) Not Begins sPattern Then Return iStart = iPos iPos += Len(sPattern) sColor = "" While IsHexa(Mid$(sText, iPos, 1)) And Len(sColor) < 6 sColor &= Mid$(sText, iPos, 1) Inc iPos Wend If Len(sColor) = 0 Then Return If IsLetter(Mid$(sText, iPos, 1)) Then Return If Len(sColor) < 3 Then Return 'sColor = String$(6 - Len(sColor), "0") & sColor sColor = sPattern & sColor If Not IsMissing(iLen) Then iLen = String.Len(Mid$(sText, iStart, iPos - iStart)) Endif Endif Return sColor End Public Sub Menu_Show() Dim sText As String Dim iPos As Integer Dim sPattern As String Dim sColor As String Dim aColor As New String[] Dim hMenu As Menu Dim hImage As Image Dim I As Integer Dim iColor As Integer Dim hPattern As Image sText = GetEditor().Text For Each sPattern In $aPatternSearch iPos = 0 Do iPos = InStr(sText, sPattern, iPos + 1) If iPos = 0 Then Break sColor = ReadColor(sText, iPos, sPattern) If Not sColor Then Continue Try iColor = GetColorFromString(sColor) If Error Then Continue GoSub ADD_COLOR If aColor.Count >= 100 Then Break Loop Next For Each iColor In [Color.Black, Color.White, Color.Gray] sColor = FormatColor(iColor, $sPattern) GoSub ADD_COLOR Next aColor.Sort For I = 0 To aColor.Max sColor = aColor[I] sColor = Mid$(sColor, InStr(sColor, ":") + 1) aColor[I] = sColor Next $hMenu.Children.Clear hPattern = Image.Load("img/32/tile.png") Paint.Begin(hPattern) Paint.DrawRect(0, 0, 32, 32, Color.LightForeground, 2) Paint.End For Each sColor In aColor hMenu = New Menu($hMenu) As "MenuColor" hMenu.Text = Replace(sColor, "&", "&&") hMenu.Tag = sColor hImage = hPattern.Copy() hImage.PaintRect(2, 2, 28, 28, GetColorFromString(sColor)) hMenu.Picture = hImage.Stretch(Desktop.Scale * 2, Desktop.Scale * 2).Picture Next Return ADD_COLOR: With Color[iColor] If .Saturation = 0 Then sColor = "0000" & Hex$(.Value, 2) & Hex$(.Alpha, 2) & ":" & sColor Else sColor = Hex$(.Hue, 2) & Hex$(.Saturation, 2) & Hex$(.Value, 2) & Hex$(.Alpha, 2) & ":" & sColor Endif End With If Not aColor.Exist(sColor) Then aColor.Add(sColor) Return End Public Sub MenuColor_Click() With GetEditor() .Insert(Last.Tag) .SetFocus End With End Public Sub Button_Click() Dim hEditor As TextEditor Dim sColor As String Dim sLine As String Dim X As Integer Dim XD As Integer Dim iLen As Integer Dim sPattern As String Dim iColor As Integer hEditor = GetEditor() sLine = hEditor[hEditor.Line].Text iLen = hEditor[hEditor.Line].Length X = hEditor.Column XD = X While XD > 0 For Each sPattern In $aPatternSearch sColor = ReadColor(sLine, String.Pos(sLine, XD + 1), sPattern, ByRef iLen) If Not sColor Then Continue Try iColor = GetColorFromString(sColor) If Error Then Continue If XD + iLen >= X Then hEditor.Select(XD, hEditor.Line, XD + iLen, hEditor.Line) Else sColor = "" Endif Goto OPEN_DIALOG Next Dec XD Wend OPEN_DIALOG: If FColorChooser.Insert(False, ("Insert color"), $aPattern, "&H" & Hex$(iColor, 6)) Then Return With GetEditor() .Insert(FColorChooser.Pattern) .SetFocus End With End Public Sub Insert() Button_Click End gambas-3.16.3/app/src/gambas3/.src/Editor/CInsertDate.class000066400000000000000000000060631411575327000232230ustar00rootroot00000000000000' Gambas class file Private $hModule As Object Private $hMenu As Menu Private $hObs As Observer Private $hTimer As Timer Private Sub FindMenuChild(hMenu As Menu, sMenu As String) As Menu For Each hMenu In hMenu.Children If hMenu.Name == sMenu Then Return hMenu hMenu = FindMenuChild(hMenu, sMenu) If hMenu Then Return hMenu Next End Private Sub FindMenuWindow(hWindow As Window, sMenu As String) As Menu Dim hMenu As Menu For Each hMenu In hWindow.Menus If hMenu.Name == sMenu Then Return hMenu hMenu = FindMenuChild(hMenu, sMenu) If hMenu Then Return hMenu Next End Private Sub FindMenu(hCtrl As Control, sMenu As String) As Menu Dim hWindow As Window Dim hMenu As Menu hWindow = hCtrl.Window Do hMenu = FindMenuWindow(hWindow, sMenu) If hMenu Then Break Try hWindow = hWindow.Parent.Window If Error Then Return Loop Return hMenu End Public Sub _new(hModule As Object, hMenuButton As MenuButton) Dim hMenu As Menu Dim hParent As Menu $hModule = hModule hParent = FindMenu(hMenuButton, "mnuAdvanced") $hMenu = New Menu(hParent) As "Menu" $hMenu.Name = "mnuInsertDate" $hMenu.Text = ("Insert today's date") $hMenu.Picture = Picture["icon:/small/calendar"] hMenu = New Menu($hMenu) hMenuButton.Menu = $hMenu.Name $hObs = New Observer(hMenuButton) As "Button" End Private Sub GetEditor() As TextEditor Return $hModule.GetEditor() End Private Sub FillMenu() Dim I As Integer Dim aDate As String[] Dim dNow As Date Dim sLang As String Dim sDate As String Dim hMenu As Menu Dim sTime As String If $hMenu.Children.Count <= 1 Then $hMenu.Children.Clear For I = 0 To 18 hMenu = New Menu($hMenu) As "MenuDate" Next Endif I = 0 aDate = New String[] dNow = Now sLang = System.Language System.Language = "C" aDate.Add(Format(dNow, gb.LongDate)) aDate.Add(Format(dNow, gb.MediumDate)) aDate.Add(Format(dNow, gb.ShortDate)) sTime = Format(dNow, gb.MediumTime) GoSub FILL_MENU Inc I aDate.Clear aDate.Add(Format(dNow, "yyyy-mm-dd")) aDate.Add(Format(dNow, "ddd mmm dd yyyy")) sTime = Format(dNow, "hh:nn") GoSub FILL_MENU $hMenu.Children[I].Text = Date.ToRFC822(dNow) Inc I Inc I If sLang <> "C" And If sLang Not Begins "en_US" Then System.Language = sLang aDate.Clear aDate.Add(Format(dNow, gb.LongDate)) aDate.Add(Format(dNow, gb.MediumDate)) aDate.Add(Format(dNow, gb.ShortDate)) sTime = Format(dNow, gb.MediumTime) GoSub FILL_MENU Endif Return FILL_MENU: For Each sDate In aDate $hMenu.Children[I].Text = sDate Inc I $hMenu.Children[I].Text = sDate & " " & sTime Inc I Next Return End Public Sub Menu_Show() $hTimer = New Timer(1000) As "RefreshMenu" $hTimer.Start RefreshMenu_Timer End Public Sub Menu_Hide() $hTimer.Stop End Public Sub MenuDate_Click() With GetEditor() .Insert(Last.Text) .SetFocus End With End Public Sub RefreshMenu_Timer() FillMenu End gambas-3.16.3/app/src/gambas3/.src/Editor/CPosition.class000066400000000000000000000070511411575327000227630ustar00rootroot00000000000000' Gambas class file Static Private $aPositions As New CPosition[] Static Private $iCurrent As Integer Static Private $iDisable As Integer Private Const MAX_POS As Integer = 40 Public Path As String Public Method As String Public (Line) As Integer Public Column As Integer Static Public Sub Clear() $aPositions.Clear $iCurrent = -1 $iDisable = 0 UpdatePosition End Static Private Sub UpdatePosition() FMain.UpdatePosition($iCurrent > 0, $iCurrent < $aPositions.Max) End Static Private Sub AddPosition(hPos As CPosition) If $iCurrent >= 0 Then If $aPositions[$iCurrent].IsEqual(hPos) Then Return Endif If $iCurrent >= MAX_POS Then $aPositions.Remove(0) Dec $iCurrent Endif Inc $iCurrent $aPositions.Resize($iCurrent) $aPositions.Add(hPos) End Static Public Sub SaveCurrent(hForm As Object, Optional bForce As Boolean) Dim hEditor As TextEditor Dim hPos As CPosition If $iDisable Then Return If Not hForm Then Return If hForm <> Project.ActiveForm Then Return hPos = New CPosition With hForm hPos.Path = .Path Try hEditor = hForm.GetEditor() If hEditor Then If Not bForce Then If Abs(hEditor.Line - hEditor.LastLine) <= 1 Then Return Endif hPos.Line = hEditor.LastLine hPos.Column = hEditor.LastColumn Try hPos.Method = hForm.GetProcAt(hPos.LastLine) AddPosition(hPos) hPos = hPos.Copy() hPos.Line = hEditor.Line hPos.Column = hEditor.Column Try hPos.Method = hForm.GetProcAt(hPos.Line) AddPosition(hPos) Else hPos.Line = -1 hPos.Column = -1 AddPosition(hPos) Endif End With UpdatePosition End Static Public Sub MovePrevious() If $iCurrent <= 0 Then Return Dec $iCurrent $aPositions[$iCurrent].Move() UpdatePosition End Static Public Sub MoveNext() If $iCurrent >= $aPositions.Max Then Return Inc $iCurrent $aPositions[$iCurrent].Move UpdatePosition End Public Sub IsEqual(hPos As CPosition) As Boolean If Path = hPos.Path And If {Line} = hPos.Line Then Return True 'And If Column = hPos.Column Then Return True End Public Sub IsNear(hPos As CPosition) As Boolean If Abs({Line} - hPos.Line) <= 1 Then Return Path = hPos.Path End Public Sub Move() Dim hForm As Object Inc $iDisable Try hForm = Project.OpenFile(Path) If hForm And If {Line} >= 0 Then hForm.Goto({Line}, Column) Dec $iDisable End Static Public Sub Disable() Inc $iDisable End Static Public Sub Enable() If $iDisable <= 0 Then Return Dec $iDisable End Public Sub GetDesc() As String Dim sDesc As String sDesc = File.BaseName(Path) If Method Then sDesc &= "." & Method If {Line} >= 0 Then sDesc &= "." & CStr({Line} + 1) Return sDesc End Static Public Sub FillMenu(mnuParent As Menu) Dim I As Integer Dim hMenu As Menu mnuParent.Children.Clear For I = $aPositions.Max DownTo 0 hMenu = New Menu(mnuParent) As "mnuBackward" With $aPositions[I] hMenu.Text = .GetDesc() hMenu.Picture = Project.GetFileIcon(.Path) hMenu.Tag = I If I = $iCurrent Then hMenu.Checked = True End With Next End Static Public Sub mnuBackward_Click() Dim I As Integer = Last.Tag $aPositions[I].Move $iCurrent = I UpdatePosition End Public Sub Copy() As CPosition Dim hPos As CPosition hPos = New CPosition With hPos .Path = Path .Method = Method .Line = {Line} .Column = Column End With Return hPos End gambas-3.16.3/app/src/gambas3/.src/Editor/CTask.class000066400000000000000000000035731411575327000220660ustar00rootroot00000000000000' Gambas class file Public Const TYPE_NOTE As Integer = 0 Public Const TYPE_FIXME As Integer = 1 Public Const TYPE_TODO As Integer = 2 Public Type As Integer Public (Class) As String Public Name As String Public (Line) As Integer Public Text As String Public Sub _compare(hOther As CTask) As Integer Dim iComp As Integer iComp = Sgn(Type - hOther.Type) If iComp Then Return iComp iComp = Comp({Class}, hOther.Class) If iComp Then Return iComp iComp = Sgn({Line} - hOther.Line) If iComp Then Return iComp End Static Public Sub ScanFile(sPath As String) As CTask[] Dim aTask As New CTask[] Dim sLine As String Dim hTask As CTask Dim iLine As Integer Dim iPos As Integer Dim sType As String Dim iType As Integer Dim hModule As Object Dim aLine As String[] hModule = Project.Files[sPath] If hModule Then aLine = Split(hModule.GetText(), "\n") Else If Not Exist(sPath) Then Return aTask aLine = Split(File.Load(sPath), "\n") Endif For Each sLine In aLine Inc iLine sLine = Highlight.Purge(sLine, True) iPos = InStr(sLine, "'") If iPos Then If Mid$(sLine, iPos + 1, 1) = "'" Then Inc iPos sLine = Trim(Mid$(sLine, iPos + 1)) iPos = InStr(sLine, ":") If iPos Then sType = Trim(Left(sLine, iPos - 1)) Select Case sType Case "NOTE" iType = TYPE_NOTE Case "FIXME" iType = TYPE_FIXME Case "TODO" iType = TYPE_TODO Default Continue End Select hTask = New CTask With hTask .Type = iType .Name = File.Name(sPath) .Class = File.BaseName(sPath) .Line = iLine .Text = Trim(Mid$(sLine, iPos + 1)) End With aTask.Add(hTask) Endif Endif Next Return aTask End gambas-3.16.3/app/src/gambas3/.src/Editor/CUndo.class000066400000000000000000000060201411575327000220570ustar00rootroot00000000000000' Gambas class file Public Struct UndoCommand Command As String Arg As Variant[] End Struct Private Const DEBUG_ME As Boolean = False Private Enum CONTEXT_NONE, CONTEXT_UNDO, CONTEXT_REDO Private $aUndo As New UndoCommand[] Private $aRedo As New UndoCommand[] Private $iLevelUndo As Integer Private $iLevelRedo As Integer Private $iDisabled As Integer Private $iContext As Integer Private Const CMD_BEGIN As String = "[[" Private Const CMD_END As String = "]]" Private Sub Dump(hCmd As UndoCommand) Dim I As Integer With hCmd Print .Command; ": "; If .Arg Then For I = 0 To .Arg.Max Print .Arg[I];; Next Endif End With Print End Public Sub Add(sCommand As String, Optional aArg As Variant[]) Dim hCommand As New UndoCommand If $iDisabled Then Return hCommand.Command = sCommand hCommand.Arg = aArg If $iContext = CONTEXT_UNDO Then $aRedo.Add(hCommand) If DEBUG_ME Then Print "Add REDO: "; Else $aUndo.Add(hCommand) If DEBUG_ME Then Print "Add UNDO: "; If $iContext = CONTEXT_NONE Then $aRedo.Clear Endif If DEBUG_ME Then Dump(hCommand) End Public Sub Begin() If $iDisabled Then Return If $iContext = CONTEXT_UNDO Then Inc $iLevelRedo If $iLevelRedo > 1 Then Return Else Inc $iLevelUndo If $iLevelUndo > 1 Then Return Endif Add(CMD_END) End Public Sub End() Dim aCmd As UndoCommand[] If $iDisabled Then Return If $iContext = CONTEXT_UNDO Then Dec $iLevelRedo If $iLevelRedo > 0 Then Return aCmd = $aRedo Else Dec $iLevelUndo If $iLevelUndo > 0 Then Return aCmd = $aUndo Endif If aCmd.Count And If aCmd[aCmd.Max].Command = CMD_END Then aCmd.Remove(aCmd.Max) If DEBUG_ME Then Print "Remove last command" Return Endif Add(CMD_BEGIN) End Public Sub Undo(hEditor As Object, Optional bRedo As Boolean) Dim iLevel As Integer Dim aCmd As UndoCommand[] If $iDisabled Then Return If $iContext Then Return If bRedo Then aCmd = $aRedo $iContext = CONTEXT_REDO Else aCmd = $aUndo $iContext = CONTEXT_UNDO Endif Begin() While aCmd.Count With aCmd[aCmd.Max] If .Command = CMD_BEGIN Then Inc iLevel Else If .Command = CMD_END Then Dec iLevel Else With aCmd[aCmd.Max] If DEBUG_ME Then Print "Exec "; Dump(aCmd[aCmd.Max]) Endif Object.Call(hEditor, .Command, .Arg) End With Endif End With aCmd.Remove(aCmd.Max) If iLevel = 0 Then Break Wend End() $iContext = CONTEXT_NONE End Public Sub Redo(hEditor As Object) If $iDisabled Then Return If $iContext Then Return Undo(hEditor, True) End Public Sub Clear() $aUndo.Clear $aRedo.Clear $iLevelUndo = 0 $iLevelRedo = 0 End Public Sub Disable() Inc $iDisabled End Public Sub Enable() Dec $iDisabled End Public Sub IsDisabled() As Boolean Return $iDisabled End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/000077500000000000000000000000001411575327000206745ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Editor/Code/CCompletion.class000066400000000000000000000120161411575327000241370ustar00rootroot00000000000000' Gambas class file Public Const GAMBAS As String = "g" Property Read Enabled As Boolean Public Mode As String Public Code As Integer Public Text As String Public Column As Integer Public Backspace As Boolean Private $hModule As Object Private $bCompletion As Boolean Private $hTimerCompletion As Timer Public Sub _new(hModule As Object) $hModule = hModule $hTimerCompletion = New Timer As "CheckCompletion" $hTimerCompletion.Delay = 50 End Public Sub GetModule() As Object Return $hModule End Private Sub GetEditor() As TextEditor Return $hModule.GetEditor() End Public Sub ReadConfig() $bCompletion = Settings["/Editor/Completion", True] End Public Sub Hide() FCompletion.HideFrom(GetEditor()) End Private Sub CheckCompletion(sMode As String) Dim hEditor As TextEditor If Not $bCompletion Then Return hEditor = GetEditor() If hEditor.Selected Then Return Mode = sMode Code = Key.Code Text = Key.Text Column = hEditor.Column Backspace = sMode = "<" $hTimerCompletion.Restart End Public Sub CheckCompletion_Timer() Dim hEditor As TextEditor Dim iSave As Integer Dim sWord As String Dim iPos As Integer Dim sLine As String $hTimerCompletion.Stop hEditor = GetEditor() If hEditor.Selected Then Return If Backspace Then If Not FCompletion.VisibleFrom(hEditor) Then sLine = String.Left$(hEditor.Current.Text, hEditor.Column) sWord = GetRightString(sLine) If sWord Then If IsPath(sWord) Then iSave = hEditor.Column iPos = String.RInStr(sWord, "/") sWord = String.Mid$(sWord, iPos + 1) hEditor.Goto(hEditor.Column - String.Len(sWord), hEditor.Line) Mode = "/" $hModule.CheckCompletion() FCompletion.SetText(sWord) hEditor.Goto(iSave, hEditor.Line) Endif Goto CHECK_SIGNATURE Endif Endif Endif $hModule.CheckCompletion() CHECK_SIGNATURE: Try $hModule.CheckSignature() End Public Sub OnKeyPress() As Boolean Dim hEditor As TextEditor = GetEditor() Dim bStop As Boolean Dim iCol As Integer If hEditor.ReadOnly Then Return iCol = hEditor.Column If FCompletion.VisibleFrom(hEditor) Then bStop = FCompletion.ManageKey() Endif If bStop Then Stop Event Return True Endif If Key.Code = Key.Space Then CheckCompletion(" ") Else If Key.Code = Key.Backspace Then CheckCompletion("<") ' If iCol <> hEditor.Column Then ' Stop Event ' Return True ' Endif Else If Key.Text = "." Then CheckCompletion(".") ' Else If Key.Text = "_" Then ' ' CheckCompletion("_") Else If Key.Text = "/" Then CheckCompletion("/") Else If Key.Text And If $hModule.IsWordChar(Key.Text) Then CheckCompletion("A") Endif End Private Function Enabled_Read() As Boolean Return $bCompletion End Public Sub GetWord(sLine As String, iPos As Integer) As String Dim sCar As String Dim iPos2 As Integer iPos2 = iPos Do If iPos <= 0 Then Break sCar = String.Mid$(sLine, iPos, 1) If Not $hModule.IsWordChar(sCar) Then Break Dec iPos Loop Inc iPos Do If iPos2 > String.Len(sLine) Then Break sCar = String.Mid$(sLine, iPos, 1) If Not $hModule.IsWordChar(sCar) Then Break Inc iPos2 Loop Return String.Mid$(sLine, iPos, iPos2 - iPos) Catch End Public Sub GetPath(sLine As String, iPos As Integer) As String Dim sCar As String Dim iPos2 As Integer iPos2 = iPos Do If iPos <= 0 Then Break sCar = String.Mid$(sLine, iPos, 1) If Not $hModule.IsWordChar(sCar) Then Break Dec iPos Loop Inc iPos Do If iPos2 > String.Len(sLine) Then Break sCar = String.Mid$(sLine, iPos, 1) If Not $hModule.IsWordChar(sCar) Then Break Inc iPos2 Loop Return String.Mid$(sLine, iPos, iPos2 - iPos) Catch End Public Sub Position() Dim hEditor As TextEditor = GetEditor() If Not FCompletion.VisibleFrom(hEditor) Then Return FCompletion.Position(hEditor) End Public Sub Open(Optional sClass As String, bStatic As Boolean, bHidden As Boolean) FCompletion.Open(Me, Mode, sClass, bStatic, bHidden) End Public Sub OpenMode(sMode As String, Optional sClass As String, bStatic As Boolean, bHidden As Boolean) FCompletion.Open(Me, sMode, sClass, bStatic, bHidden) End Public Sub IsPath(sWord As String) As Boolean If Left(sWord) = "/" Or If Left(sWord) = "~" Or If Left(sWord, 2) = "./" Or If sWord Begins "icon:/" Then Return True End Public Sub GetRightString(sLine As String) As String Dim I, iPos As Integer Dim sCar As String Dim bInside As Boolean For I = 1 To Len(sLine) sCar = Mid$(sLine, I, 1) If bInside Then If sCar = "\\" Then Inc I Else If sCar = Chr$(34) Then bInside = False Endif Else If sCar = Chr$(34) Then bInside = True iPos = I Endif Next If bInside Then Return Mid$(sLine, iPos + 1) End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/CDatatype.class000066400000000000000000000033131411575327000236010ustar00rootroot00000000000000' Gambas class file Private $sType As String Static Private $iMagicNumber As Integer = 314159265 Static Public Sub __Get(sType As String) As Variant Dim vVal As Variant Inc $iMagicNumber Select Case sType Case "b" vVal = True Case "c" vVal = CByte($iMagicNumber) Case "d" vVal = Now Case "f" vVal = Pi Case "i" vVal = $iMagicNumber Case "l" vVal = CLong($iMagicNumber) Case "o" vVal = New CDatatype("o") Case "p" vVal = CPointer($iMagicNumber) Case "h" vVal = CShort($iMagicNumber) Case "g" vVal = CSingle($iMagicNumber) Case "s" vVal = "Gambas" Case "v" vVal = New CDatatype("v") Case Else vVal = New CDatatype(sType) End Select Return vVal End Static Public Sub __Make(hArray As Object) As CDatatype Return New CDatatype(Object.Type(hArray)) End Public Sub _new(sType As String) $sType = sType End Public Sub _get(...) As Variant Dim hSymbol As CSymbolInfo If $sType = "o" Or If $sType = "v" Then Return __Get("v") Try hSymbol = Project.Documentation.GetClassSymbols($sType)["_get"] If hSymbol Then Return __Get(hSymbol.Type) End Public Sub _put((vVal) As Variant, ...) End Public Sub _property() As Boolean Dim hSymbol As CSymbolInfo Try hSymbol = Project.Documentation.GetClassSymbols($sType)[Param.Name] If hSymbol Then Return hSymbol.IsProperty End Public Sub _unknown(...) As Variant Dim hSymbol As CSymbolInfo Try hSymbol = Project.Documentation.GetClassSymbols($sType)[Param.Name] If hSymbol Then Return __Get(hSymbol.Type) End Public Sub __GetType() As String Return $sType End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/CSampleCode.class000066400000000000000000000267541411575327000240600ustar00rootroot00000000000000' Gambas class file ' ' Copyright (C) Benoît Minisini ' ' 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 St, Fifth Floor, ' Boston, MA 02110-1301 USA ' Static Public All As Collection Static Public List As String[] Public Trigger As String Public Pattern As String Public {Default} As Boolean Private $aPattern As String[] Private $bNoVoid As Boolean Static Private Sub Load(hSettings As Settings, bDefault As Boolean) Dim hSampleCode As CSampleCode Dim iInd As Integer Dim sSnippet As String Dim iPos As Integer Dim sTrigger As String For iInd = 1 To hSettings["Snippets/Count", 0] sSnippet = hSettings["Snippets/Snippet[" & CStr(iInd) & "]"] If Not sSnippet Then Break iPos = InStr(sSnippet, "\n") If iPos = 0 Then Continue sTrigger = Left$(sSnippet, iPos - 1) sSnippet = Mid$(sSnippet, iPos + 1) hSampleCode = New CSampleCode(sTrigger, sSnippet) hSampleCode.Default = bDefault Next End Static Public Sub Save() Dim iInd As Integer Dim iCpt As Integer Dim hSampleCode As CSampleCode Settings.Clear("/Snippets") For iCpt = 0 To List.Max hSampleCode = All[List[iCpt]] If hSampleCode.Default Then Continue Inc iInd Settings["/Snippets/Snippet[" & CStr(iInd) & "]"] = hSampleCode.Trigger & "\n" & hSampleCode.Pattern Next Settings["/Snippets/Count"] = iInd Settings.Save End Static Public Sub Init() Dim hSettings As Settings 'Dim sTemp As String If All Then Return All = New Collection(gb.IgnoreCase) List = New String[] 'sTemp = Temp$() 'Copy "snippets" To sTemp Load(Settings, False) hSettings = New Settings("../snippets") Load(hSettings, True) 'Kill sTemp End ' Static Public Sub Reset() ' ' Settings.Clear("Snippets") ' Settings.Save ' All = Null ' Init ' ' End ' Static Public Sub Exit() All = Null End Public Sub _new(sStart As String, sPattern As String) Dim iInd As Integer Dim sCar As String Dim bVar As Boolean If All.Exist(sStart) Then All[sStart].Delete Trigger = sStart Pattern = sPattern All[sStart] = Me List.Add(sStart) List.Sort(gb.IgnoreCase) $bNoVoid = InStr(Pattern, "${}") = 0 $aPattern = New String[] sPattern = "" For iInd = 1 To Len(Pattern) sCar = Mid$(Pattern, iInd, 1) If bVar Then If sCar = "}" Then ' If sPattern Then ' iPos = InStr(sPattern, ":") ' If iPos = 0 Then iPos = Len(sPattern) + 1 ' $nPattern = Max($nPattern, CInt(Left$(sPattern, iPos - 1))) ' Endif $aPattern.Add("\t" & sPattern) sPattern = "" bVar = False Else sPattern &= sCar Endif Else If Mid$(Pattern, iInd, 2) = "${" Then bVar = True Inc iInd If sPattern Then $aPattern.Add(sPattern) sPattern = "" Else If sCar = "\t" Then If sPattern Then sPattern &= Space$(Project.TabSize) Else If sCar = "\n" Then If sPattern Then $aPattern.Add(sPattern) $aPattern.Add("\n") sPattern = "" While Mid$(Pattern, iInd + 1, 1) = " " Inc iInd Wend Else sPattern &= sCar Endif Endif Next If sPattern Then $aPattern.Add(sPattern) End Public Sub GetLineCount() As Integer Return Split(Pattern, "\n").Count End Private Sub Make(Optional iIndent As Integer) As String Dim sMake As String Dim iPos, iPos2 As Integer Dim sCar As String Dim sVar As String For iPos = 1 To Len(Pattern) sCar = Mid$(Pattern, iPos, 1) If sCar = "$" And If Mid$(Pattern, iPos + 1, 1) = "{" Then iPos += 2 iPos2 = InStr(Pattern, "}", iPos) sCar = Mid$(Pattern, iPos, iPos2 - iPos) iPos = InStr(sCar, ":") If iPos Then sVar = Mid$(sCar, iPos + 1) If sVar = "$TITLE" Then sCar = Project.Title Else If sVar = "$DESCRIPTION" Then sCar = Project.Description Else If sVar = "$AUTHOR" Or If sVar = "$AUTHORS" Then sCar = Split(Project.Authors, "\n", "", True).Join(", ") Else If svar = "$USER" Then sCar = User.Name Else If svar = "$DATE" Then sCar = Format$(Now(), gb.MediumDate) Else If svar = "$PROJECT" Then sCar = Project.Name Else sCar = sVar Endif Else sCar = "" Endif iPos = iPos2 Endif sMake &= sCar Next sMake = Replace(sMake, "\t", Space$(Project.TabSize)) If iIndent Then sMake = Replace(sMake, "\n", "\n" & Space$(iIndent)) Return sMake End Public Sub Insert(hEditor As TextEditor) Dim iIndent As Integer Dim sLine As String sLine = hEditor.Current.Text iIndent = Len(sLine) - Len(LTrim(sLine)) hEditor.Insert(Make(iIndent)) End Private Sub CursorFromPos(sText As String, iPos As Integer) As Integer[] Dim iLine, iCol As Integer While iPos > 0 If String.Left$(sText) = "\n" Then Inc iLine iCol = 0 Else Inc iCol Endif sText = String.Mid$(sText, 2) If Not sText Then Break Dec iPos Wend Return [iLine, iCol] End Private Sub PosFromCursor(sText As String, iLine As Integer, iCol As Integer) As Integer Dim iPos As Integer Dim iFind As Integer While iLine > 0 iFind = String.InStr(sText, "\n") If iFind = 0 Then Break iPos += iFind sText = String.Mid$(sText, iFind + 1) Dec iLine Wend If iLine > 0 Then Return iPos + String.Len(sText) Else iFind = String.InStr(sText, "\n") If iFind = 0 Then iFind = String.Len(sText) + 1 Return iPos + Min(iCol, iFind - 1) Endif End Private Sub Search(sText As String, sString As String, iStart As Integer, Optional iDefault As Integer = -1) As Integer Dim iPos As Integer iPos = String.InStr(sText, sString, iStart + 1) - 1 If iPos < 0 Then iPos = iDefault Return iPos End Private Sub NewLinePattern(sText As String, iPos As Integer) As Integer ' Ignore space, Ignore new lines, Ignore spaces Inc iPos While String.Mid$(sText, iPos, 1) = " " Inc iPos Wend If String.Mid$(sText, iPos, 1) <> "\n" Then Return -1 Inc iPos While String.Mid$(sText, iPos, 1) = " " Inc iPos Wend Return iPos - 1 End Public Sub GotoNextPos(hEditor As TextEditor, iStart As Integer, iEnd As Integer, iPosStart As Integer) As Boolean Dim iPosText, iPosTextEnd As Integer Dim sText As String Dim iInd As Integer Dim sPattern As String Dim iPosCursor As Integer Dim iIndexPattern As Integer Dim iPos As Integer Dim aCursor, aCursorEnd As Integer[] Dim iLen As Integer For iInd = iStart To iEnd - 1 ' if hEditor.Lines[iInd].Length sText &= hEditor[iInd].Text & "\n" Next iLen = String.Len(sText) - 1 iPosCursor = PosFromCursor(sText, hEditor.Line - iStart, hEditor.Column) If iPosCursor > iLen Then Return True ' Find index of current pattern iPosText = iPosStart iInd = 0 If iPosText < iPosCursor Then While iInd < $aPattern.Count sPattern = $aPattern[iInd] If Left(sPattern) = "\t" Then If iInd < $aPattern.Max Then iPosText = Search(sText, $aPattern[iInd + 1], iPosText) If iPosText < 0 Then Return True Else iPosText = iLen Endif sPattern = Mid$(sPattern, 2) iPos = InStr(sPattern, ":") If iPos Then sPattern = Left$(sPattern, iPos - 1) If sPattern Then iIndexPattern = CInt(sPattern) Else iIndexPattern = 0 Endif If iPosText >= iPosCursor Then If iIndexPattern Then Break Else ' We are in the void pattern, try again Return True Endif Endif Else If sPattern = "\n" Then iPosText = NewLinePattern(sText, iPosText) If iPosText < 0 Then Return True Else If String.Mid$(sText, iPosText + 1, String.Len(sPattern)) <> sPattern Then Return True iPosText += String.Len(sPattern) Endif ' Find first pattern If iPosText > iPosCursor Then Break Endif Inc iInd Wend If iInd >= $aPattern.Count Then Return True Endif ' Find next pattern Inc iIndexPattern iPosText = iPosStart iInd = 0 While iInd < $aPattern.Count sPattern = $aPattern[iInd] If Left(sPattern) = "\t" Then sPattern = Mid$(sPattern, 2) iPos = InStr(sPattern, ":") If iPos Then sPattern = Left$(sPattern, iPos - 1) If sPattern And If iIndexPattern = CInt(sPattern) Then If iInd < $aPattern.Max Then iPosTextEnd = Search(sText, $aPattern[iInd + 1], iPosText, iLen) Else iPosTextEnd = iLen Endif Goto FOUND Endif If iInd < $aPattern.Max Then iPosText = Search(sText, $aPattern[iInd + 1], iPosText) If iPosText < 0 Then Break Else Break Endif Else If sPattern = "\n" Then iPosText = NewLinePattern(sText, iPosText) If iPosText < 0 Then Return True Else If String.Mid$(sText, iPosText + 1, String.Len(sPattern)) <> sPattern Then Return True iPosText += String.Len(sPattern) Endif Endif Inc iInd Wend ' No next pattern, find void pattern If $bNoVoid Then iPosText = iLen iPosTextEnd = iPosText Goto FOUND Endif iPosText = iPosStart iInd = 0 While iInd < $aPattern.Count sPattern = $aPattern[iInd] If Left(sPattern) = "\t" Then If iInd < $aPattern.Max Then iPosText = Search(sText, $aPattern[iInd + 1], iPosText) If iPosText < 0 Then Return True Else iPosText = iLen Endif sPattern = Mid$(sPattern, 2) If Not sPattern Then iPosTextEnd = iPosText Goto FOUND Endif Else If sPattern = "\n" Then iPosText = NewLinePattern(sText, iPosText) If iPosText < 0 Then Return True Else If String.Mid$(sText, iPosText + 1, String.Len(sPattern)) <> sPattern Then Return True iPosText += String.Len(sPattern) Endif Endif Inc iInd Wend Return True FOUND: aCursor = CursorFromPos(sText, iPosText) If iPosTextEnd = iPosText Then hEditor.Goto(aCursor[1], iStart + aCursor[0]) Else aCursorEnd = CursorFromPos(sText, iPosTextEnd) hEditor.Goto(aCursor[1], iStart + aCursor[0]) hEditor.Goto(aCursorEnd[1], iStart + aCursorEnd[0], True) Endif Catch Return True End Public Sub Rename(sNewTrigger As String) Dim iFind As Integer If {Default} Then Return All[Trigger] = Null All[sNewTrigger] = Me iFind = List.Find(Trigger) If iFind >= 0 Then List.Remove(iFind) List.Add(sNewTrigger) List.Sort(gb.IgnoreCase) Trigger = sNewTrigger End Public Sub Delete() Dim iFind As Integer If {Default} Then Return All[Trigger] = Null iFind = List.Find(Trigger) If iFind >= 0 Then List.Remove(iFind) End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FCompletion.class000066400000000000000000000657011411575327000241530ustar00rootroot00000000000000' Gambas class file Static Private $aNativeDatatypes As String[] = ["Boolean 0", "Byte 0", "Short 0", "Integer 0", "Long 0", "Single 0", "Float 0", "Date 0", "String 0", "Object 0", "Variant 0", "Pointer 0"] Static Private $hClassPicture As Picture Private $aKey As String[] Private $iCol As Integer Private $sText As String Private $bLoaded As Boolean Private $sMode As String Private $iLen As Integer Private $bUserChoice As Boolean Private $iMaxLen As Integer Private $sClass As String Private $sEventClass As String Private $bShowHelp As Boolean Private $DX As Integer Private $DY As Integer Private $iMinW As Integer Private $iMinH As Integer Private $iMaxY As Integer Private $hForm As Object Private $hEditor As TextEditor Private $bGambas As Boolean Private $bHideLater As Boolean Private $cFindStrings As Collection Static Private $sWordSeparators As String Private $bStatic As Boolean Static Public Sub _init() Dim I As Integer Dim sCar As String For I = 0 To 127 sCar = Chr$(I) If IsDigit(sCar) Or If IsLetter(sCar) Or If sCar = "_" Or If sCar = "$" Then Continue $sWordSeparators &= sCar Next End Public Sub _new() gvwComp.Columns.Count = 1 ScrollArea(gvwComp.Children[0]).NoAnimation = True End Public Sub OnRefreshComponents() $bLoaded = False End Private Function GetClass() As String Dim hForm As Object hForm = $hEditor.Window Return hForm.Name End Public Sub Position(hEditor As TextEditor) Dim hPos As Point Dim iX As Integer Dim iY As Integer Dim hCont As Container If hEditor <> $hEditor Then Return hPos = $hEditor.ToPos($hEditor.Line, $iCol) iX = $hEditor.X + hPos.X - Stock.GetSize("tiny") - 6 iX = Max(0, Min(iX, $hEditor.Window.ClientW - Me.Width)) iY = hPos.Y + $hEditor.LineHeight If (iY + Me.Height) > ($hEditor.Y + $hEditor.H) Then iY = $hEditor.Y + $hEditor.ToPosY() - Me.Height If iY < 0 Then Me.Height += iY iY = 0 Endif panResizeBottom.Hide panResizeTop.Show Else panResizeBottom.Show panResizeTop.Hide Endif iY += $hEditor.Y hCont = $hEditor.Parent Do If hCont Is Form Then Break iX += hCont.X iY += hCont.Y hCont = hCont.Parent Loop FCompletion.FixPosition($hEditor, ByRef iX, ByRef iY) Dec Application.Busy If Me.Parent = $hForm And If iX = Me.X And If iY = Me.Y And If Me.Visible Then Return Me.Reparent($hForm, iX, iY) If Not Me.Visible Then Me.Show Me.Raise Endif End Static Public Sub FixPosition(hEditor As TextEditor, Optional ByRef X As Integer, ByRef Y As Integer) Dim bCompletion As Boolean Dim bSignature As Boolean If IsMissing(X) And If IsMissing(Y) Then bCompletion = FCompletion.VisibleFrom(hEditor) bSignature = True Else bCompletion = True bSignature = FSignature.VisibleFrom(hEditor) Endif If bCompletion And If bSignature Then If IsMissing(X) And If IsMissing(Y) Then X = FCompletion.X Y = FCompletion.Y Endif 'Debug Y;; "/";; FSignature.Y;; FSignature.H 'FIXME: Had a crash with Me.W inside that static function If X < FSignature.X + FSignature.W And If X + FCompletion.W > FSignature.X Then If Y = FSignature.Y Then Y += FSignature.H - 1 Else If Y + FCompletion.H = FSignature.Y + FSignature.H Then Y -= FSignature.H - 1 Endif If IsMissing(X) And If IsMissing(Y) Then FCompletion.Move(X, Y) Endif Endif Endif End Public Sub Open(hCompletion As CCompletion, sMode As String, Optional sClass As String, Optional bStatic As Boolean, Optional bHidden As Boolean) Dim iPos As Integer Dim sText As String Dim W, H As Integer Dim hForm As Object hForm = hCompletion.GetModule() If hForm.GetEditor() <> $hEditor Then HideFrom($hEditor) $bHideLater = False $hForm = hForm $hEditor = hForm.GetEditor() ReadConfig Inc Application.Busy $bUserChoice = False $sMode = Left(sMode) $iLen = 0 $iMaxLen = 16 $iCol = $hEditor.Column $sClass = "" $sEventClass = "" $bShowHelp = Settings["/ShowHelpInPopup", 1] And hForm Is FEditor Select $sMode Case "." $bGambas = True $sText = "" ' If String.Len(sClass) = 1 Then ' Dec Application.Busy ' Return ' Endif $sClass = sClass $bStatic = bStatic '$bPrivate = bPrivate FillWithSymbol(sClass, bStatic, False, bHidden) Case " " $bGambas = True $sText = "" FillWithClasses Case "A", "I" $bGambas = $sMode = "A" $sText = sClass $iLen = String.Len(sClass) $iCol -= String.Len(sClass) FillWithIdent(sClass) Case "_" $bGambas = True $sText = "_" $iLen = 1 Dec $iCol FillWithSpecial() Case "<" $bGambas = $hForm Is FEditor $sText = sClass iPos = String.RInStr(sClass, "_") If iPos Then $iLen = iPos Else $iLen = 3 Endif $iCol -= String.Len(sClass) + 2 FillWithIdent(String.Left$(sClass, $iLen)) Case "/" $bGambas = False iPos = String.RInStr(sClass, "/") $sText = String.Mid$(sClass, iPos + 1) $iLen = String.Len($sText) FillWithFiles(String.Left(sClass, iPos)) End Select If gvwComp.Rows.Count = 0 Then Dec Application.Busy Return Endif 'PRINT "Open: $hEditor = "; $hEditor 'lvwComp.MoveFirst 'H = lvwComp.Item.H H = gvwComp.Rows.H If hCompletion.Backspace Or If sMode = "A" Then If FindItem(True) Then Dec Application.Busy Return Endif Else gvwComp.Row = 0 FindItem(True) 'lvwComp.MoveFirst 'lvwComp.Item.Selected = True 'lvwComp.Item.EnsureVisible Endif W = $iMaxLen * Me.Font.TextWidth("A") + 16 + 16 + 12 If $bShowHelp Then sepHelp.Show webHelp.Enabled = False timEnable.Start webHelp.Show panResizeTop.Show panResizeBottom.Show $iMinW = W + 4 + 128 $iMinH = Desktop.Scale * 24 gvwComp.Expand = False gvwComp.W = W Me.Resize(Max($iMinW, Me.W), Max(Me.H, Max($iMinH, Min(10 * gvwComp.Rows[0].H, gvwComp.ScrollH) + 2))) Else sepHelp.Hide webHelp.Hide panResizeTop.Hide panResizeBottom.Hide gvwComp.Expand = True Me.Resize(W + 4, Min(10 * gvwComp.Rows[0].H, gvwComp.ScrollH) + 2) Endif sText = String.Left($hEditor[$hEditor.Line].Text, $iCol) ' If InStr(" ./", sMode) Then 'And If Key.Code <> Key.Backspace Then ' sText &= hCompletion.Text ' Endif Position($hEditor) $hEditor.SetFocus End Public Sub SetText(sText As String, Optional bInsert As Boolean) As Boolean $sText = sText If $sMode = "." And If $sText Begins "_" Then FillWithSymbol($sClass, $bStatic, False, True) Endif Return FindItem(Not bInsert) End Private Sub ClearRows() gvwComp.Clear gvwComp.Rows.Count = 0 $aKey = New String[] End Private Sub AddRow(sKey As String, sText As String, hPic As Picture) Dim Y As Integer = gvwComp.Rows.Count Inc gvwComp.Rows.Count With gvwComp[Y, 0] .Text = sText .Picture = hPic End With gvwComp.Rows[Y].H = -1 $aKey.Add(sKey) End Private Sub AddClassesAndFill(aClass As String[], Optional sBegin As String) Dim sClass As String Dim sLib As String Dim iType As Integer Dim hPic As New Picture[7] Dim aLib As String[] Dim iPos As Integer If $bGambas Then 'Project.Documentation["gb"].Load For Each sClass In Project.GetClasses() If sClass Like sBegin & "*" Then aClass.Add(sClass & " " & MHelp.TYPE_CLASS) 'TRY lvwComp.Add(sClass, sClass) Next aLib = [CComponent.PROJECT_NAME, "gb", "gb.test"] aLib.Insert(Project.Components) For Each sLib In Project.Libraries aLib.Add(File.Name(sLib)) Next For Each sLib In aLib If sLib <> CComponent.PROJECT_NAME Then If Not Project.Documentation.Exist(sLib) Then Continue Project.Documentation[sLib].Load Endif For Each sClass In Project.Documentation[sLib].ClassList If IsLetter(Left$(sClass)) Then If sClass Like sBegin & "*" Then Do iPos = aClass.Find(Replace(sClass, "[", "[[]") & " *", gb.Like) If iPos < 0 Then Break aClass.Remove(iPos) Loop If Project.Documentation.Classes[sClass].Properties Then aClass.Add(sClass & " " & MHelp.TYPE_CONTROL) Else aClass.Add(sClass & " " & MHelp.TYPE_CLASS) Endif Endif Endif Next Next Endif aClass.Sort(gb.IgnoreCase + gb.Natural) If Not $hClassPicture Then $hClassPicture = Project.MakeModuleIcon("class", 16).Picture hPic[0] = Picture["img/logo/head-16.png"] hPic[1] = $hClassPicture hPic[2] = Picture["$symbol:control"] hPic[3] = Picture["$symbol:symbol"] hPic[4] = Picture["$symbol:event"] hPic[5] = hPic[0] hPic[6] = Picture["$symbol:special"] ClearRows For Each sClass In aClass iType = Val(Right$(sClass)) sClass = Left$(sClass, -2) AddRow(CStr(iType) & sClass, sClass, hPic[iType]) $iMaxLen = Max($iMaxLen, String.Len(sClass)) Next End Private Sub FillWithClasses() AddClassesAndFill($aNativeDatatypes.Copy()) End ' private void FillWithSymbol(string sClass, bool bStatic, bool bPrivate) ' { ' Collection cSymbol; ' CSymbolInfo hSymbol; ' string[] aSymbol = new string[]; ' string sSymbol; ' ' ClearRows(); ' ' cSymbol = Project.Documentation.GetClassSymbols(sClass); ' if (!cSymbol) return; ' ' if (Project.Documentation.IsAutoCreatable(sClass)) ' bStatic = False; ' ' for(hSymbol in cSymbol) ' { ' if (hSymbol.NotPublic != bPrivate) continue; ' if (hSymbol.Name.left() == "_" && hSymbol.Component) continue; ' if (hSymbol.Kind == "m" && hSymbol.Name.indexOf("_")) continue; ' if (hSymbol.Kind == ":") continue; ' if (bStatic) ' { ' if (hSymbol.Kind.upper() != hSymbol.Kind) continue; ' } ' aSymbol.Add(hSymbol.Name); ' } ' ' aSymbol.Sort(gb.IgnoreCase + gb.Natural); ' ' foreach sSymbol in aSymbol ' { ' hSymbol = cSymbol[sSymbol]; ' AddRow((string)(MHelp.TYPE_SYMBOL) & sSymbol, sSymbol, Picture[hSymbol.GetIcon()]); ' $iMaxLen = max($iMaxLen, String.Len(sSymbol)); ' } ' } Private Sub FillWithSymbol(sClass As String, bStatic As Boolean, bPrivate As Boolean, Optional bHidden As Boolean) Dim cSymbol As Collection Dim hSymbol As CSymbolInfo Dim aSymbol As New String[] Dim sSymbol As String Dim sName As String ClearRows cSymbol = Project.Documentation.GetClassSymbols(sClass) If Not cSymbol Then Return If Project.Documentation.IsAutoCreatable(sClass) Then bStatic = False For Each hSymbol In cSymbol If hSymbol.NotPublic <> bPrivate Then Continue sName = hSymbol.Name If bHidden Then If Left(sName) = "_" And If hSymbol.Component Then Continue Else If LCase(hSymbol.Kind) <> "m" Then If sName Begins "_" Then Continue Else If InStr(sName, "_") Then Continue Endif Endif If hSymbol.Kind = ":" Then Continue If bStatic Then If UCase(hSymbol.Kind) <> hSymbol.Kind Then Continue Endif Endif aSymbol.Add(sName) Next aSymbol.Sort(gb.IgnoreCase + gb.Natural) For Each sSymbol In aSymbol hSymbol = cSymbol[sSymbol] AddRow(CStr(MHelp.TYPE_SYMBOL) & sSymbol, sSymbol, Picture[hSymbol.GetIcon()]) $iMaxLen = Max($iMaxLen, String.Len(sSymbol)) Next End Private Sub GetEvents(sCtrl As String) As String[] Dim hForm As FForm Dim aEvent As String[] Dim sPath As String If Not $bGambas Then Return sPath = Project.FindForm(GetClass()) If sPath Then Try hForm = Project.LoadFile(sPath) sCtrl = LCase(sCtrl) If hForm Then If LCase(sCtrl) = LCase(hForm.Family) Then $sEventClass = hForm.Family Else Try $sEventClass = hForm.Control[sCtrl].Kind Endif Endif If $sEventClass Then Try aEvent = Project.Documentation.Classes[$sEventClass].Events If Not aEvent Then $sEventClass = $hForm.FindEventClass(sCtrl) If $sEventClass Then aEvent = Project.Documentation.Classes[$sEventClass].Events Endif Return aEvent End Private Sub AddEvents(aResult As String[], sCtrl As String) Dim sName As String Dim aEvent As String[] aEvent = GetEvents(sCtrl) If Not aEvent Then Return For Each sName In aEvent If aResult.Exist(sCtrl & "_" & sName & " " & CStr(MHelp.TYPE_SYMBOL), gb.IgnoreCase) Then Continue aResult.Add(sCtrl & "_" & sName & " " & CStr(MHelp.TYPE_EVENT)) Next End Private Sub FillWithIdent(sWord As String) Dim sLine As String Dim iPos As Integer Dim sCar As String Dim aResult As New String[] Dim cKey As New Collection Dim hSymbol As CSymbolInfo Dim cSymbol As Collection Dim sOrg As String Dim iLine As Integer Dim aKeywords As String[] Dim aFind As Integer[] Dim sSearchLine As String Dim sSearchWord As String Dim aSearchWord As String[] Dim aResultWord As String[] 'Dim fTimer As Float ClearRows sOrg = sWord sWord = UCase(sWord) If $bGambas Then For Each sCar In ["True", "False", "Null", "Last", "Me", "Super"] If sCar Like sWord & "*" Then cKey[sCar] = True aResult.Add(sCar & " " & MHelp.TYPE_KEYWORD) Endif Next For Each sCar In $aNativeDatatypes If sCar Like sWord & "*" Then cKey[Left(sCar, -2)] = True aResult.Add(sCar) Endif Next ' For Each sCar In System.Keywords ' If sCar Ends "$" Then Continue ' If sCar Like sWord & "*" Then ' If cKey.Exist(sCar) Then Continue ' cKey[sCar] = True ' If sCar = UCase(sCar) Then sCar &= " " ' aResult.Add(sCar & " " & MHelp.TYPE_KEYWORD) ' Endif ' Next If Left(sWord) = "_" Then For Each sCar In CSymbolInfo.SpecialMethods If sCar Like sWord & "*" Then cKey[sCar] = True aResult.Add(sCar & " " & MHelp.TYPE_SPECIAL) Endif 'Try lvwComp.Add(CStr(MHelp.TYPE_SPECIAL) & sName, sName, hPict) Next Endif Endif Try aKeywords = $hEditor.Keywords.Sort() If aKeywords Then For Each sCar In aKeywords If sCar Like sWord & "*" Then If cKey.Exist(sCar) Then Continue If sCar Ends "$" And If cKey.Exist(Left(sCar, -1)) Then Continue cKey[sCar] = True If $bGambas And If System.Keywords.Exist(sCar) Then sCar &= " " aResult.Add(sCar & " " & MHelp.TYPE_KEYWORD) Endif Next Endif 'fTimer = Timer If Not $hEditor.IsSameFindStrings(String.Left(sWord, 3)) Then $cFindStrings = New Collection aFind = $hEditor.FindStrings(String.Left(sWord, 3)) sSearchWord = LCase(String.RemoveDiacritics(sWord)) For Each iLine In aFind If iLine = $hEditor.Line Then Continue 'If $bGambas Then 'sLine = Highlight.Purge($hEditor[iLine].Text) 'Else sLine = $hEditor[iLine].Text 'Endif sSearchLine = String.RemoveDiacritics(sLine) aSearchWord = Split(sSearchLine, $sWordSeparators, "", True) aResultWord = Split(sLine, $sWordSeparators, "", True) iPos = -1 Do iPos = aSearchWord.Find(sSearchWord & "*", gb.Like, iPos + 1) If iPos < 0 Then Break sCar = aResultWord[iPos] If IsDigit(Left$(sCar)) Then Continue If $cFindStrings.Exist(sCar) Then Continue $cFindStrings[sCar] = True Loop ' sUCaseLine = String.UCase(sLine) ' Only ASCII characters are interesting there... ' ' iPos = 0 ' Do ' Inc iPos ' iPos = String.InStr(sUCaseLine, sWord, iPos) ' If iPos = 0 Then Break ' If iPos > 1 Then ' sCar = String.Mid$(sLine, iPos - 1, 1) ' If $hForm.IsWordChar(sCar) Then Break ' Endif ' For iPos2 = iPos + String.Len(sWord) To String.Len(sLine) ' sCar = String.Mid$(sLine, iPos2, 1) ' If Not $hForm.IsWordChar(sCar) Then Break ' Next ' sCar = String.Mid$(sLine, iPos, iPos2 - iPos) ' If IsDigit(Left$(sCar)) Then Continue ' ' If $cFindStrings.Exist(sCar) Then Continue ' $cFindStrings[sCar] = True ' ' Loop Next Endif For Each $cFindStrings sCar = $cFindStrings.Key If cKey.Exist(sCar) Then Continue aResult.Add(sCar & " " & MHelp.TYPE_SYMBOL) cKey[sCar] = True Next 'Debug Timer - fTimer If $bGambas Then cSymbol = Project.Documentation.GetClassSymbols(GetClass()) If cSymbol Then For Each hSymbol In cSymbol If Not hSymbol.NotPublic Then Continue sCar = hSymbol.Name If Not (sCar Like sWord & "*") Then Continue If cKey.Exist(sCar) Then Continue aResult.Add(sCar & " " & MHelp.TYPE_SYMBOL) cKey[sCar] = True Next Endif If Right(sWord) = "_" Then AddEvents(aResult, String.Left(sOrg, -1)) Endif Endif AddClassesAndFill(aResult, sWord) End Private Sub FillWithSpecial() Dim sName As String Dim hPict As Picture = Picture["$symbol:special"] ClearRows For Each sName In CSymbolInfo.SpecialMethods AddRow(CStr(MHelp.TYPE_SPECIAL) & sName, sName, hPict) Next End Private Sub FillWithFiles(sWord As String) Dim iPos As Integer Dim sName As String Dim sDir As String Dim hPictFile As Picture = Picture["icon:/small/file"] Dim hPictDir As Picture = Picture["icon:/small/directory"] Dim aDir As String[] Dim bProject As Boolean Dim hPict As Picture ClearRows sDir = sWord If sDir = "icon:/" Then aDir = Stock.Sizes.Insert(["16", "22", "32", "48", "96", "128", "256"]) For Each sName In aDir.Sort(gb.Natural) 'hPict = Desktop.GetFileIcon(sDir &/ sName, 16) 'If Not hPict Then hPict = hPictFile AddRow(CStr(MHelp.TYPE_FILE) & sName, sName, hPictDir) $iMaxLen = Max($iMaxLen, String.Len(sName)) Next Else If sDir Like "icon:/*/" Then aDir = Stock.Icons For Each sName In aDir.Sort(gb.Natural) 'hPict = Desktop.GetFileIcon(sDir &/ sName, 16) 'If Not hPict Then hPict = hPictFile AddRow(CStr(MHelp.TYPE_FILE) & sName, sName, Picture["icon:/small" &/ sName]) $iMaxLen = Max($iMaxLen, String.Len(sName)) Next Else If sDir And If Left(sDir) <> "/" And If sDir Not Begins "~/" Then sDir = Project.Dir &/ sDir bProject = True Endif iPos = RInStr(sDir, "/") sDir = Left(sDir, iPos) If Not IsDir(sDir) Then Return Try aDir = Dir(sDir, "*").Sort(gb.IgnoreCase + gb.Natural) If Not Error Then For Each sName In aDir If bProject Then If sName Ends "~" Then Continue Endif hPict = Desktop.GetFileIcon(sDir &/ sName, 16, True) If Not hPict Then hPict = hPictFile AddRow(CStr(MHelp.TYPE_FILE) & sName, sName, If(IsDir(sDir &/ sName), hPictDir, hPict)) $iMaxLen = Max($iMaxLen, String.Len(sName)) Next Endif Endif $bShowHelp = False End Private Sub HideMe() Me.Hide 'Debug System.Backtrace.Join(" ") End Public Function ManageKey() As Boolean Dim iRow As Integer Select Case Key.Code Case Key.Up, Key.PageUp iRow = gvwComp.Row - If(Key.Code = Key.Up, 1, gvwComp.ClientH \ gvwComp.Rows.Height) If Key.Code = Key.Up Then If iRow < 0 Then iRow = gvwComp.Rows.Count - 1 Else If iRow < 0 Then iRow = 0 Endif gvwComp.Row = iRow $bUserChoice = True Case Key.Down, Key.PageDown iRow = gvwComp.Row + If(Key.Code = Key.Down, 1, gvwComp.ClientH \ gvwComp.Rows.Height) If Key.Code = Key.Down Then If iRow >= gvwComp.Rows.Count Then iRow = 0 Else If iRow >= gvwComp.Rows.Count Then iRow = gvwComp.Rows.Max Endif gvwComp.Row = iRow $bUserChoice = True Case Key.Home If gvwComp.Row = 0 Then Goto HIDE_ME gvwComp.Row = 0 $bUserChoice = True Case Key.End If gvwComp.Row = gvwComp.Rows.Count - 1 Then Goto HIDE_ME gvwComp.Row = gvwComp.Rows.Count - 1 $bUserChoice = True Case Key.Escape, Key.Left, Key.Right Goto HIDE_ME Case Key.Enter, Key.Return InsertItem 'IF Key.Code <> Key.Tab THEN RETURN Case Key.Space If Key.Control Then If UCase($sText) = "NEW" Then Return InsertItem(True) Return False Else Goto HIDE_ME Endif Case Key.Backspace 'Debug $iLen;; $sText If String.Len($sText) > $iLen Then SetText(String.Left$($sText, -1)) Else '$bHideLater = True 'timHideLater.Trigger Endif Return False Case Key.Tab If $bUserChoice Then InsertItem Else Return CompleteItem() Endif Case Else If Key.Text Then If $sMode = "/" Then $sText &= Key.Text Return FindItem() Else If Key.Text = "[" And If Not $sText Then Else If InStr(FEditor.IDENT_CAR, Key.Text) And If Key.Text <> "$" Then If Key.Text = "_" Then If GetEvents($sText) Then Goto HIDE_ME Endif Return SetText($sText & Key.Text, True) Else If $bGambas And If InStr(". A<", $sMode) Then If InStr("([.!", Key.Text) > 0 Then InsertItem Return Else If InStr("=+-*/^", Key.Text) Then InsertItem(False, " " & Key.Text & " ") Return True Else If InStr(":", Key.Text) Then InsertItem(False, ": ") Return True Endif Endif Goto HIDE_ME Endif End Select Return True HIDE_ME: HideMe Return End Private Function FindItem(Optional bNoInsert As Boolean) As Boolean Dim sComp As String Dim iLevel As Integer Dim nComp As Integer Dim sText As String Dim I As Integer Dim iRow As Integer 'sComp = Replace($sText, "[", "[[]") & "*" sComp = String.UCase($sText) For I = 0 To gvwComp.Rows.Max If String.UCase(gvwComp[I, 0].Text) Begins sComp Then Break Next If I >= gvwComp.Rows.Count Then HideMe Return Endif iRow = I For I = I To gvwComp.Rows.Max With gvwComp[I, 0] sText = Trim(.Text) If Not (String.UCase(sText) Begins sComp) Then Break If iLevel <= 2 And If .Text = $sText Then iRow = I iLevel = 3 Else If iLevel <= 1 And If String.UCase(sText) = String.UCase($sText) Then iRow = I iLevel = 2 Else If iLevel <= 0 And If String.Left(sText, String.Len($sText)) = $sText Then iRow = I iLevel = 1 Endif End With Inc nComp Next gvwComp.Row = iRow If nComp = 1 And iLevel = 3 Then If Not bNoInsert Then InsertItem(True) Return True Endif End Private Function InsertItem(Optional bNoSpace As Boolean, sMore As String) As Boolean Dim sText As String Dim hClass As CClassInfo Dim sEvent As String Dim hEvent As CSymbolInfo Try sText = gvwComp.Current.Text If Not sText Then Return True If gvwComp[gvwComp.Row, 0].Picture = Picture["$symbol:event"] Then If $hForm.IsProc($hEditor[$hEditor.Line].Text) Then hClass = Project.Documentation.Classes[$sEventClass] sEvent = Mid$(sText, RInStr(sText, "_") + 1) hEvent = hClass.Symbols[":" & sEvent] sText &= hEvent.GetSignature(False) Endif Endif If bNoSpace Then If Right(sText) = " " Then sText = Left$(sText, -1) Else If sMore Then If sMore Begins " " Then sText = RTrim(sText) sText &= sMore Endif With $hEditor .Goto($iCol, .Line, True) .Insert(sText) .SetFocus End With HideMe End Public Sub gvwComp_Click() Try InsertItem End Public Sub gvwComp_KeyPress() Dim hForm As Object 'IF Key.Code = Key.Escape THEN ME.Hide $hEditor.SetFocus hForm = $hEditor.Window hForm.Editors_KeyPress Catch End Private Sub CompleteItem() As Boolean Dim sCurrent As String Dim sNext As String Dim sText As String Dim iPos As Integer Try sCurrent = gvwComp.Current.Text If Not sCurrent Then Return Try sNext = gvwComp[gvwComp.Row + 1, 0].Text For iPos = String.Len($sText) + 1 To Min(String.Len(sCurrent), String.Len(sNext)) If String.Comp(String.Mid$(sCurrent, iPos, 1), String.Mid$(sNext, iPos, 1), gb.IgnoreCase) Then Break Next sText = String.Left$(sCurrent, iPos - 1) If String.Comp(sText, $sText, gb.IgnoreCase) = 0 Or Not sText Then InsertItem Else $sText = sText With $hEditor .Goto($iCol, .Line, True) .Insert($sText) End With FindItem Endif Return True End Public Sub timHelp_Timer() Dim sSymbol As String Dim iType As Integer Dim sClass As String Dim hModule As FEditor timHelp.Stop If Not $hEditor Then Return Try hModule = $hEditor.Window If Not hModule Then Return Try sSymbol = Trim(gvwComp.Current.Text) If sSymbol Then iType = CInt(Left($aKey[gvwComp.Row])) sClass = $sClass If Not sClass Then sClass = $sEventClass MHelp.InitWebViewWith(webHelp, iType, sSymbol, sClass, "noimage", hModule) Endif End Public Sub gvwComp_Select() If Not $bShowHelp Then Return timHelp.Stop timHelp.Start Catch End Public Sub webHelp_GotFocus() gvwComp.SetFocus End Public Sub panResizeBottom_MouseDown() $DX = Me.W - Mouse.ScreenX $DY = Me.H - Mouse.ScreenY End Public Sub panResizeBottom_MouseMove() Dim W, H As Integer W = Max($iMinW, $DX + Mouse.ScreenX) H = Max($iMinH, $DY + Mouse.ScreenY) Me.Resize(W, H) End Public Sub panResizeTop_MouseDown() $DX = Me.W - Mouse.ScreenX $DY = Me.Y - Mouse.ScreenY $iMaxY = Me.Y + Me.H - $iMinH End Public Sub panResizeTop_MouseMove() Dim W, Y As Integer W = Max($iMinW, $DX + Mouse.ScreenX) Y = Min($iMaxY, $DY + Mouse.ScreenY) Me.Move(Me.X, Y, W, Me.H + Me.Y - Y) End Public Sub Form_Close() $hEditor = Null End Public Sub HideFrom(hEditor As TextEditor) If $hEditor <> hEditor Then Return $hEditor = Null If Not Me.Visible Then Return HideMe End Public Sub VisibleFrom(hEditor As TextEditor) As Boolean If $hEditor = hEditor And If Me.Visible And If Not $bHideLater Then Return True End Public Sub timHideLater_Timer() 'Debug $bHideLater If Not $bHideLater Then Return $bHideLater = False HideMe End Public Sub panComp_Arrange() panResizeTop.Move(panComp.W - panResizeTop.W, 0) panResizeBottom.Move(panComp.W - panResizeBottom.W, panComp.H - panResizeBottom.H) panResizeTop.Raise panResizeBottom.Raise End Public Sub timEnable_Timer() webHelp.Enabled = True timEnable.Stop End Public Sub ReadConfig() webHelp.Zoom = Settings["/Help/Zoom", 80] / 100 If $hEditor Then Me.Font = $hEditor.Font End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FCompletion.form000066400000000000000000000020151411575327000237760ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,69,17) Visible = False Ignore = True Persistent = True Border = False Arrangement = Arrange.Fill { panComp Panel MoveScaled(1,1,67,15) Background = Color.TextBackground Arrangement = Arrange.Horizontal Border = Border.Plain { gvwComp GridView MoveScaled(1,1,7,7) Border = False Mode = Select.Single Grid = False ScrollBar = Scroll.Vertical } { sepHelp Separator MoveScaled(9,1,0,13) } { webHelp HelpView MoveScaled(11,2,51,11) Expand = True NoHeader = True } { panResizeBottom Panel MoveScaled(64,12,2,2) Mouse = Mouse.SizeNWSE Ignore = True } { panResizeTop Panel MoveScaled(64,1,2,2) Mouse = Mouse.SizeNESW Ignore = True } { timHideLater #Timer #MoveScaled(0,8) } { timHelp #Timer #MoveScaled(24,4) Delay = 100 } { timEnable #Timer #MoveScaled(48,6) Delay = 100 } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FConflictEditor.class000066400000000000000000000752051411575327000247520ustar00rootroot00000000000000' Gambas class file Public Path As String Public RichText As String Public Age As Integer Property Read ReadOnly As Boolean Private $hEditor As TextEditor Private $bNoHighlight As Boolean Private $bModule As Boolean Private $bShowComment As Boolean Private $bModify As Boolean Private $iViewMode As Integer Private Const VIEWMODE_NORMAL As Integer = 0 Private Const VIEWMODE_HORIZONTAL As Integer = 1 Private Const VIEWMODE_VERTICAL As Integer = 2 Private $hEditor1 As TextEditor Private $hEditor2 As TextEditor Private $hBookmark As CBookmark Private $bWebPage As Boolean Private $iLastLine As Integer Private $bInsideConflict As Boolean Public Sub _new(sPath As String, Optional bModule As Boolean) $iLastLine = -1 Path = sPath $hEditor = edtEditor If bModule Then mnuShowCode.Show Me.Name = File.BaseName(Path) Else mnuShowCode.Hide Me.Name = File.Name(Path) Endif $bModule = bModule End Public Sub GetEditor() As TextEditor Return $hEditor End Public Sub LoadFile() As Boolean With edtEditor .Clear .ShowBraces = True End With $bWebPage = False $bNoHighlight = True $bShowComment = False ' If Path Then ' ' sExt = LCase(File.Ext(Path)) ' ' If $aExt.Exist(sExt) Then ' ' Select Case sExt ' Case "css" ' edtEditor.Mode = "css" ' Case "webpage" ' edtEditor.Mode = "webpage" ' $bWebPage = True ' Case "js" ' edtEditor.Mode = "javascript" ' Case "c" ' edtEditor.Mode = "c" ' Case "cpp", "h" ' edtEditor.Mode = "c++" ' Case "gbs" ' edtEditor.Mode = "gambas" ' Case Else ' edtEditor.Mode = "html" ' End Select ' ' $bShowComment = True ' '$bShowPretty = True ' $bNoHighlight = False ' ' Endif ' ' Endif $hBookmark = New CBookmark(Me, btnBookmark, mnuBookmark) ReadConfig Reload $bModify = False edtEditor.SetFocus SetReadOnly End Public Sub Form_Arrange() Dim iToolbarOffset As Integer 'If we add the ability to hide the toolbar then uncomment this code 'IF $bToolbar THEN ' panToolBar.Move(0, 0, ME.CLientW) ' iToolbarOffset = panToolBar.H 'ELSE ' iToolbarOffset = 0 'ENDIF iToolbarOffset = panToolBar.H Select Case $iViewMode Case 0 edtEditor.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) Case 1 splHorizontal.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) Case 2 splVertical.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) End Select End Public Sub ReadConfig() Project.SetSmallFont(panToolbar) InitEditor(edtEditor) If $hEditor1 Then InitEditor($hEditor1) If $hEditor2 Then InitEditor($hEditor2) End Public Function Save() As Boolean If Not $bModify Then Return Save.Begin(Path) $hEditor.Save(Path) ' TODO: Editor.Reset $bModify = False DrawTitle Save.End() Catch Return Save.Error() End Private Sub DrawTitle() Project.DrawTitle(Me) End Public Sub Modify(Optional bReset As Boolean) If Project.ReadOnly Then Return $bModify = True Inc Project.TimeStamp Inc Age FSearch.OnFileChange(Me.Path) If bReset Then $bModify = False Endif DrawTitle End Public Function IsModified() As Boolean Return $bModify End Public Sub Editors_Change() Modify End Private Sub InAlternate() As Boolean Dim sText As String = String.Left($hEditor.Current.Text, $hEditor.Column) Dim bAlt As Boolean Dim I As Integer Dim bQuote As Boolean Dim sCar As String bAlt = $hEditor.Current.InitialState.Alternate I = 1 While I <= String.Len(sText) sCar = String.Mid$(sText, I, 1) If bAlt Then If bQuote Then If sCar = "\\" Then Inc I Else If sCar = Chr$(34) Then bQuote = False Endif Else If sCar = Chr$(34) Then bQuote = True Else If String.Mid$(sText, I, 2) = "%>" Then bAlt = False Endif Endif Else If String.Mid$(sText, I, 2) = "<%" Then bAlt = True Inc I Endif Endif Inc I Wend Return bAlt End Private Sub FindCloseAlternate() As Boolean Dim sLine As String Dim I, J, A, B As Integer I = $hEditor.Line J = $hEditor.Column While I < $hEditor.Count sLine = $hEditor[I].Text A = String.InStr(sLine, "<%", J + 1) B = String.InStr(sLine, "%>", J + 1) If B > 0 And If A = 0 Or A > B Then Return True If A > 0 Then Return False Inc I J = 0 Wend End Public Sub Editors_KeyPress() If Key.Code = Key.Escape Then Action["find"].Value = False ' Else If Key.Code = Key.Return Then ' ' If Key.Control Then ' ' If Key.Shift Then ' If Editor.Lines[Editor.Line].Expanded Then ' Editor.CollapseAll ' Else ' Editor.ExpandAll ' Endif ' Else ' Editor.Lines[Editor.Line].Expanded = Not Editor.Lines[Editor.Line].Expanded ' Endif ' Stop Event ' ' Endif Endif If $hEditor.ReadOnly Then Return If Key.Code = Key.Return Or If Key.Code = Key.Enter Then If Key.Normal Then If $bWebPage Then If InAlternate() And If Not FindCloseAlternate() Then $hEditor.Insert("\n%>") $hEditor.Goto(0, $hEditor.Line) Stop Event Endif Endif Endif Else If Key.Code = Key.Insert Then Project.UpdateStatus() Endif End Public Sub Form_GotFocus() $hEditor.SetFocus End Public Sub Goto(iLine As Integer, Optional iColumn As Integer = -1) 'DEC iLine If iColumn < 0 Then iColumn = $hEditor.Column $hEditor.Goto(iColumn, iLine) End Public Sub GotoCenter(iLine As Integer, Optional iColumn As Integer = -1) Goto(iLine, iColumn) End Public Sub Editors_Menu() mnuEditor.Popup End Private Sub RefreshBackground() Dim aEditor As TextEditor[] = [$hEditor1, $hEditor2] Dim hEditor As TextEditor Dim bHasFocus As Boolean If aEditor.Exist($hEditor) Then For Each hEditor In aEditor If hEditor And If hEditor.HasFocus Then bHasFocus = True Break Endif Next For Each hEditor In aEditor If Not hEditor Then Continue hEditor.ReadConfig(True) If Not hEditor.HasFocus Then If bHasFocus Then MTheme.InitEditor(hEditor, True) $hEditor.ShowCurrent = False $hEditor.ShowModified = False Endif Next Endif End Public Sub Editors_GotFocus() $hEditor = Last Project.SetCurrentPopup(mnuEditor) RefreshBackground End Public Sub Editors_LostFocus() RefreshBackground End Public Sub mnuSave_Click() Save End ' PUBLIC SUB mnuFind_Click() ' ' DIM sSel AS String ' DIM iPos AS Integer ' ' sSel = Left$(Trim(edtEditor.Selection.Text), 64) ' iPos = Instr(sSel, gb.NewLine) ' IF iPos THEN sSel = Left$(sSel, iPos - 1) ' ' Project.FindForm.Find(sSel) ' ' END ' ' ' PUBLIC SUB mnuFindNext_Click() ' ' Project.FindForm.FindNext ' ' END ' ' ' PUBLIC SUB mnuFindPrevious_Click() ' ' Project.FindForm.FindPrevious ' ' END Public Sub Rename(sNewName As String, sNewPath As String) Me.Name = sNewName Path = sNewPath 'File.Dir(Path) &/ sNewName & "." & File.Ext(Path) DrawTitle End Public Sub mnuCut_Click() $hEditor.Cut End Public Sub mnuCopy_Click() $hEditor.Copy End Public Sub mnuPaste_Click() $hEditor.Paste $hEditor.SetFocus End ' Public Sub mnuPasteSpecial_Click() ' ' FPasteSpecial.Run($hEditor) ' ' End ' ' Public Sub mnuPasteAsString_Click() ' ' FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_STRING) ' ' End ' ' Public Sub mnuPasteAsStringSplit_Click() ' ' FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_STRING_SPLIT) ' ' End ' ' Public Sub mnuPasteAsComment_Click() ' ' FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_COMMENT) ' ' End Public Sub mnuUndo_Click() $hEditor.Undo End Public Sub mnuRedo_Click() $hEditor.Redo End Public Sub mnuGotoLine_Click() Dim iLine As Integer iLine = FGotoLine.Run($hEditor.Line + 1) If iLine <= 0 Then Return GotoCenter(iLine - 1) End ' PUBLIC SUB mnuWordWrap_Click() ' ' edtEditor.Wrap = NOT edtEditor.Wrap ' mnuWordWrap.Checked = edtEditor.Wrap ' ' END Public Sub mnuSelectAll_Click() $hEditor.SelectAll End Public Sub SetReadOnly() Dim bReadOnly As Boolean If Project.ReadOnly Or If Project.Running Or If Project.IsReadOnly(Path) Then bReadOnly = True Endif edtEditor.ReadOnly = bReadOnly If $hEditor1 Then $hEditor1.ReadOnly = bReadOnly If $hEditor2 Then $hEditor2.ReadOnly = bReadOnly Project.UpdateLockedAction(Me) UpdateMenu DrawTitle End Public Sub OnProjectDebug() SetReadOnly End Public Sub OnShowString(sStr As String, bIgnoreCase As Boolean, bWordOnly As Boolean) edtEditor.HighlightString(sStr, bIgnoreCase, bWordOnly) If $hEditor1 Then $hEditor1.HighlightString(sStr, bIgnoreCase, bWordOnly) If $hEditor2 Then $hEditor2.HighlightString(sStr, bIgnoreCase, bWordOnly) End ' Private Sub AnalyzeCode(sText As String) As String ' ' Dim iInd As Integer ' Dim iPos As Integer ' Dim iLen As Integer ' ' If Not sText Then Return ' ' Highlight.Analyze(sText, True) ' ' iPos = 0 ' For iInd = 0 To Highlight.Symbols.Max ' ' If iPos < Highlight.Positions[iInd] Then ' Highlight.Add(Highlight.Normal, Highlight.Positions[iInd] - iPos) ' iPos = Highlight.Positions[iInd] ' Endif ' ' iLen = String.Len(Highlight.Symbols[iInd]) ' Highlight.Add(Highlight.Types[iInd], iLen) ' iPos += iLen ' ' Next ' ' If iPos < String.Len(Highlight.TextAfter) Then ' Highlight.Add(Highlight.Normal, String.Len(Highlight.TextAfter) - iPos) ' Endif ' ' Return Highlight.TextAfter ' ' End Public Sub Form_Activate() RefreshLineInfo(True) Project.SetCurrentPopup(mnuEditor) End Private Function ReadOnly_Read() As Boolean Return edtEditor.ReadOnly End Private Sub UpdateEndOfLine() Select Case edtEditor.EndOfLine Case gb.Windows mnuEolWindows.Checked = True btnEndOfLine.Text = mnuEolWindows.Text Case gb.Mac mnuEolMac.Checked = True btnEndOfLine.Text = mnuEolMac.Text Default mnuEolUnix.Checked = True btnEndOfLine.Text = mnuEolUnix.Text End Select End Public Sub Reload() Dim sText As String = File.Load(Path) $bInsideConflict = False edtEditor.Text = sText UpdateEndOfLine $hEditor.SetFocus Editors_Cursor Modify(True) End Public Sub mnuReload_Click() Project.ReloadFile(Me) End Public Sub GetState() As String Return CStr($hEditor.Column) & "." & CStr($hEditor.Line) End Public Sub SetState(sState As String) Dim aState As String[] = Split(sState, ".") GotoCenter(CInt(aState[1]), CInt(aState[0])) End Private Sub InitEditor(hEditor As TextEditor) With hEditor .Border = False .View = edtEditor .Mode = edtEditor.Mode .ReadConfig(True) .ShowExpand = False If Color[.Styles[Highlight.Background].Color].Luminance >= 128 Then .Styles[Highlight.Custom].Background = Color.SetAlpha(Color.Green, 224) .Styles[Highlight.Custom + 1].Background = Color.SetAlpha(Color.Red, 224) Else .Styles[Highlight.Custom].Background = Color.SetAlpha(Color.Green, 160) .Styles[Highlight.Custom + 1].Background = Color.SetAlpha(Color.Red, 160) Endif .Styles[Highlight.Custom].Color = .Styles[Highlight.Normal].Color .Styles[Highlight.Custom + 1].Color = .Styles[Highlight.Normal].Color End With End Private Sub SetViewMode(iViewMode As Integer) If $iViewMode = iViewMode Then iViewMode = VIEWMODE_NORMAL $iViewMode = iViewMode If $iViewMode <> VIEWMODE_NORMAL And If Not $hEditor1 Then $hEditor1 = New TextEditor(Me) As "Editors" InitEditor($hEditor1) $hEditor2 = New TextEditor(Me) As "Editors" InitEditor($hEditor2) FSearch.OnNewForm(Me) Endif Select Case $iViewMode Case VIEWMODE_NORMAL edtEditor.Show splHorizontal.Hide splVertical.Hide edtEditor.Goto($hEditor.Column, $hEditor.Line) $hEditor = edtEditor Case VIEWMODE_HORIZONTAL $hEditor1.Reparent(splHorizontal) $hEditor2.Reparent(splHorizontal) edtEditor.Hide splHorizontal.Show splVertical.Hide $hEditor1.Goto($hEditor.Column, $hEditor.Line) $hEditor2.Goto($hEditor.Column, $hEditor.Line) $hEditor = $hEditor1 Case VIEWMODE_VERTICAL $hEditor1.Reparent(splVertical) $hEditor2.Reparent(splVertical) edtEditor.Hide splHorizontal.Hide splVertical.Show $hEditor1.Goto($hEditor.Column, $hEditor.Line) $hEditor2.Goto($hEditor.Column, $hEditor.Line) $hEditor = $hEditor1 End Select $hEditor.SetFocus Form_Arrange Editors_Cursor End Public Sub mnuNoSplit_Click() SetViewMode(VIEWMODE_NORMAL) End Public Sub mnuHorizontalSplit_Click() SetViewMode(VIEWMODE_HORIZONTAL) End Public Sub mnuVerticalSplit_Click() SetViewMode(VIEWMODE_VERTICAL) End Public Sub mnuShowCode_Click() Project.OpenFile(Me.Name) End Public Sub GetText() As String Return $hEditor.Text End Public Sub GetPosition() As Integer Return $hEditor.GetPosition() End Public Sub SetPosition(hResult As CSearchResult, Optional bJustCheck As Boolean) As Boolean Return $hEditor.SetPosition(hResult, bJustCheck) End Public Sub Replace(sReplace As String) $hEditor.Replace(sReplace) End Public Sub GetSelection() As String Return $hEditor.GetSelection() End Private Sub RefreshLineInfo(Optional bForce As Boolean) As Boolean Dim bNewLine As Boolean Dim bInsideConflict As Boolean If bForce Then $iLastLine = -1 Endif If $hEditor.Line <> $iLastLine Then $iLastLine = $hEditor.Line bInsideConflict = InsideConflict() If bInsideConflict <> $bInsideConflict Then $bInsideConflict = bInsideConflict UpdateButtons Endif bNewLine = True Endif Return bNewLine End Private Sub InsideConflict() As Boolean Dim Y As Integer Dim sLine As String Y = $hEditor.Line sLine = $hEditor[Y].Text Do If sLine Begins "<<<<<<" Then Return True Dec Y If Y < 0 Then Return False sLine = $hEditor[Y].Text If sLine Begins "======" Then Return True If sLine Begins ">>>>>>" Then Return False Loop End Public Sub Editors_Cursor() RefreshLineInfo() CPosition.SaveCurrent(Me) Project.UpdateStatus(True) End Public Sub Editors_MouseDown() CPosition.Disable End Public Sub Editors_MouseUp() CPosition.Enable CPosition.SaveCurrent(Me) End Public Sub mnuLowerCase_Click() If $hEditor.ReadOnly Then Return If Not $hEditor.Selected Then Return $hEditor.StoreSelection(True) $hEditor.Begin $hEditor.Insert(String.LCase($hEditor.SelectedText)) $hEditor.End $hEditor.RecallSelection End Public Sub mnuUpperCase_Click() If $hEditor.ReadOnly Then Return If Not $hEditor.Selected Then Return $hEditor.StoreSelection(True) $hEditor.Begin $hEditor.Insert(String.UCase($hEditor.SelectedText)) $hEditor.End $hEditor.RecallSelection End Public Sub ShowErrorMessage(sMsg As String, (sIcon) As String) $hEditor.SetFocus Wait $hEditor.ShowMessageLabel(Html(sMsg), Highlight.Breakpoint) End ' Private Sub RemoveFromBegin(sStr As String, sBegin As String) As String ' ' If sStr Begins sBegin Then ' Return Mid$(sStr, Len(sBegin) + 1) ' Else ' Return sStr ' Endif ' ' End Private Sub GetProc(sLine As String) As String Dim iPos As Integer Dim aStr As String[] Dim iInd As Integer Dim sStr As String Dim sProc As String sLine = Trim(sLine) Select Case $hEditor.Highlight Case "css" iPos = InStr(sLine, "{") If iPos Then sProc = Trim(Left(sLine, iPos - 1)) Case "html", "webpage" If Left(sLine) = "<" Then iPos = InStr(sLine, " ") If iPos Then sProc = Left$(sLine, iPos - 1) & ">" Endif Case "javascript" If sLine Begins "function " Then sLine = Mid$(sLine, 10) iPos = InStr(sLine, "(") If iPos Then sProc = Trim(Left$(sLine, iPos - 1)) Endif Else If sLine Like "*: function(*" Then sLine = Trim(sLine) iPos = InStr(sLine, ":") sLine = RTrim(Left(sLine, iPos - 1)) If Left(sLine) = "'" Or If Left(sLine) = Chr$(34) Then sLine = Mid$(sLine, 2, -1) sProc = sLine Endif Case "c", "c++" aStr = Split(sLine & " (", " ") For iInd = 0 To aStr.Max sStr = aStr[iInd] iPos = InStr(sStr, "(") If iPos > 0 Then sProc = Trim(Left$(sStr, iPos - 1)) If Not sProc And If iInd > 0 Then sProc = aStr[iInd - 1] Break Endif Next End Select Return Trim(sProc) End Private Sub GetCurrentProc(Optional iLine As Integer = $hEditor.Line) As String Dim sProc As String If $bNoHighlight Then Return While iLine >= 0 If $hEditor[iLine].Limit Then sProc = GetProc($hEditor[iLine].Text) Break Endif Dec iLine Wend If Not sProc Then sProc = ("(Declarations)") Return sProc End Public Sub GetProcAt(iLine As Integer) As String Return GetCurrentProc(iLine) End Public Sub panToolBar_Configure() UpdateMenu If $bModule Then 'Action[".show-class"].Picture = Project.GetFileIcon(File.SetExt(Path, "class"), 16) btnShowCode.Show mnuShowCode.Show Else btnShowCode.Hide mnuShowCode.Hide Endif End Public Sub mnuClose_Click() Me.Close End Private Sub UpdateButtons() Action[".mine,.their", Me].Visible = $bInsideConflict End Private Sub UpdateMenu() Dim bVisible As Boolean bVisible = Not edtEditor.ReadOnly Action[".save,.undo,.redo,.cut,.paste,.color,.indent,.unindent,.lcase,.ucase,.sort-ascent,.sort-descent,.eol,.date", Me].Visible = bVisible mnuAdvanced.Visible = bVisible mnuEndOfLine.Visible = bVisible Action[".proc", Me].Visible = Not $bNoHighlight Action[".comment,.uncomment", Me].Visible = $bShowComment And bVisible UpdateButtons End Public Sub Form_Open() ReadConfig SetReadOnly Action[".wrap", Me].Value = Settings["/Editor/WrapTextByDefault", True] Action[".tab-indent", Me].Value = Settings["/Editor/TabIndentByDefault", False] End Public Sub btnIndent_Click() $hEditor.Indent End Public Sub btnUnindent_Click() $hEditor.Unindent End Public Sub IsWordChar(sCar As String) As Boolean If Len(sCar) = 1 And If Asc(sCar) <= 32 Then Return False If IsDigit(sCar) Then Return True If InStr("_", sCar) Then Return True If IsLetter(String.RemoveDiacritics(sCar)) Then Return True 'Return InStr("&~\"#'{([|`\\^@)]°=+}€$£%*!§:/;.,?<>¢«»¥·©®¬¿×·÷¡ø", sCar) = 0 End Public Sub GetKeywords() As String[] Return $hEditor.Keywords End Public Sub Delete() $hBookmark = Null Super.Delete End Private Sub SortText(bDescent As Boolean) Dim aText As String[] Dim aPos As Integer[] Dim aVoid As String[] Dim iMode As Integer Dim I As Integer If $hEditor.ReadOnly Then Return If Not $hEditor.Selected Then Return $hEditor.StoreSelection $hEditor.Begin aText = Split($hEditor.SelectedText, "\n") aPos = New Integer[] aVoid = New String[] For I = aText.Max DownTo 0 If Not Trim(aText[I]) Then aPos.Add(I) aVoid.Add(aText[I]) aText.Remove(I) Endif Next iMode = gb.Natural If bDescent Then iMode += gb.Descent aText.Sort(iMode) For I = 0 To aVoid.Max aText.Add(aVoid[I], aPos[I]) Next $hEditor.Insert(aText.Join("\n")) $hEditor.End $hEditor.RecallSelection End Public Sub mnuSortAscent_Click() SortText(False) End Public Sub mnuSortDescent_Click() SortText(True) End Public Sub Action_Activate((Key) As String) As Boolean Select Case Key Case ".wrap" $hEditor.Wrap = mnuWrap.Value If $hEditor1 Then $hEditor1.Wrap = $hEditor.Wrap $hEditor2.Wrap = $hEditor.Wrap Endif Case ".tab-indent" $hEditor.TabIndent = mnuTabIndent.Value If $hEditor1 Then $hEditor1.TabIndent = $hEditor.TabIndent $hEditor2.TabIndent = $hEditor.TabIndent Endif Case ".previous" FindPreviousConflict Case ".next" FindNextConflict Case ".mine" RemoveConflict(True) Case ".their" RemoveConflict(False) Case ".mine-all" RemoveConflictAll(True) Case ".their-all" RemoveConflictAll(False) Case ".solve" If HasConflict() Then Message.Warning(("There are still conflicts in this file.")) Else If Not Me.Save() Then VersionControl.SolveConflict(Path) Endif Endif Case Else Return True End Select End Public Sub Form_Close() Project.AddRecentFile(Me) End Public Sub mnuEolUnix_Click() edtEditor.EndOfLine = gb.Unix UpdateEndOfLine Modify End Public Sub mnuEolWindows_Click() edtEditor.EndOfLine = gb.Windows UpdateEndOfLine Modify End Public Sub mnuEolMac_Click() edtEditor.EndOfLine = gb.Mac UpdateEndOfLine Modify End Public Sub GetFoldedProc() As Integer[] Dim aFold As New Integer[] Dim iLine As Integer Do If Not $hEditor[iLine].Expanded Then 'DEBUG Name;; iLine aFold.Add(iLine) Endif iLine = $hEditor.FindNextLimit(iLine) If iLine < 0 Then Break Loop Return aFold End Public Sub SetFoldedProc(aFold As Integer[]) Dim iLine As Integer $hEditor.ExpandAll For Each iLine In aFold 'DEBUG Name;; iLine $hEditor[iLine].Expanded = False Next End Public Sub GetPopupMenu() As Menu Return mnuEditor End Public Sub mnuComment_Click() Dim iStartLine As Integer Dim iEndLine As Integer Dim iLine As Integer Dim sIndent As String If $hEditor.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If $hEditor.Selected Then $hEditor.StoreSelection iStartLine = Min($hEditor.SelectionLine, $hEditor.Line) iEndLine = Max($hEditor.SelectionLine, $hEditor.Line) sIndent = $hEditor.GetIndent(iStartLine, iEndLine) $hEditor.Begin Select Case $hEditor.Mode Case "webpage", "html" $hEditor[iStartLine].Text = sIndent & "" Case "c", "c++", "javascript", "css" $hEditor[iStartLine].Text = sIndent & "/* " & Mid$($hEditor[iStartLine].Text, Len(sIndent) + 1) $hEditor[iEndLine - 1].Text = $hEditor[iEndLine - 1].Text & " */" Case "gbs" For iLine = iStartLine To iEndLine - 1 $hEditor[iLine].Text = sIndent & "' " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) Next End Select $hEditor.End $hEditor.RecallSelection Else 'Comment only the current line iLine = $hEditor.Line sIndent = $hEditor.GetIndent(iLine, iLine + 1) Select Case $hEditor.Mode Case "css" $hEditor[iLine].Text = sIndent & "/* " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) & " */" Case "webpage", "html" $hEditor[iLine].Text = sIndent & "" Case "c", "c++", "javascript" $hEditor[iLine].Text = sIndent & "// " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) Case "gbs" $hEditor[iLine].Text = sIndent & "' " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) End Select Endif End Public Sub mnuUncomment_Click() Dim iLine As Integer Dim sLine As String Dim iStartLine As Integer Dim iEndLine As Integer Dim sIndent As String Dim sLineStart As String Dim sLineEnd As String If $hEditor.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If $hEditor.Selected Then $hEditor.StoreSelection iStartLine = Min($hEditor.SelectionLine, $hEditor.Line) iEndLine = Max($hEditor.SelectionLine, $hEditor.Line) sIndent = $hEditor.GetIndent(iStartLine, iEndLine) Select Case $hEditor.Mode Case "css", "c", "c++", "javascript" sLineStart = LTrim($hEditor[iStartLine].Text) If sLineStart Begins "/*" Then sLineEnd = RTrim($hEditor[iEndLine - 1].Text) If sLineEnd Ends "*/" Then sLineStart = Mid$(sLineStart, 3) If sLineStart Begins " " Then sLineStart = Mid$(sLineStart, 2) sLineEnd = Left(sLineEnd, -2) If sLineEnd Ends " " Then sLineEnd = Left(sLineEnd, -1) $hEditor[iStartLine].Text = sIndent & sLineStart $hEditor[iEndLine - 1].Text = sLineEnd Endif Endif Case "html", "webpage" sLineStart = LTrim($hEditor[iStartLine].Text) If sLineStart Begins "" Then sLineStart = Mid$(sLineStart, 5) If sLineStart Begins " " Then sLineStart = Mid$(sLineStart, 2) sLineEnd = Left(sLineEnd, -3) If sLineEnd Ends " " Then sLineEnd = Left(sLineEnd, -1) $hEditor[iStartLine].Text = sIndent & sLineStart $hEditor[iEndLine - 1].Text = sLineEnd Endif Endif Case "gbs" For iLine = iStartLine To iEndLine - 1 sLine = $hEditor[iLine].Text 'If Len(sLine) < (iIndent + 1) Then Break If Left(LTrim(sLine), 1) <> "'" Then Break Next If iLine = iEndLine Then $hEditor.Begin For iLine = iStartLine To iEndLine - 1 If Left(LTrim($hEditor[iLine].Text), 2) = "' " Then $hEditor[iLine].Text = sIndent & Mid$(LTrim($hEditor[iLine].Text), 3) Else $hEditor[iLine].Text = sIndent & Mid$(LTrim($hEditor[iLine].Text), 2) Endif Next $hEditor.End 'Modify Endif End Select $hEditor.RecallSelection Else iLine = $hEditor.Line sIndent = $hEditor.GetIndent(iLine, iLine + 1) sLine = LTrim($hEditor[iLine].Text) If Not sLine Then Return Select Case $hEditor.Mode Case "css" If sLine Like "/[*]*[*]/" Then sLine = Mid$(sLine, 3, -2) If Left(sLine) = " " And If Right(sLine) = " " Then sLine = Mid$(sLine, 2, -1) $hEditor[iLine].Text = sIndent & sLine Endif Case "html", "webpage" If sLine Like "" Then sLine = Mid$(sLine, 5, -3) If sLine Begins " " And If sLine Ends " " Then sLine = Mid$(sLine, 2, -1) $hEditor[iLine].Text = sIndent & sLine Endif Case "c", "c++", "javascript" If sLine Begins "//" Then sLine = Mid$(sLine, 3) If sLine Begins " " Then sLine = Mid$(sLine, 2) $hEditor[iLine].Text = sIndent & sLine Else If sLine Like "/[*]*[*]/" Then sLine = Mid$(sLine, 3, -2) If Left(sLine) = " " And If Right(sLine) = " " Then sLine = Mid$(sLine, 2, -1) $hEditor[iLine].Text = sIndent & sLine Endif Case "gbs" If sLine Begins "'" Then sLine = Mid$(sLine, 2) If sLine Begins " " Then sLine = Mid$(sLine, 2) $hEditor[iLine].Text = sIndent & sLine Endif End Select Endif End Public Sub mnuPretty_Click() MPrettyCode.Run(Me) End Public Sub Editors_Highlight(Text As String) If Text Begins "<<<<<<" Then TextHighlighter.Add(Highlight.Custom, String.Len(Text)) TextHighlighter.State = Highlight.Custom Else If Text Begins "======" Then TextHighlighter.Add(Highlight.Comment, String.Len(Text)) TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 1 Else If Text Begins ">>>>>>" Then TextHighlighter.Add(Highlight.Custom + 1, String.Len(Text)) TextHighlighter.State = Highlight.Custom + 1 TextHighlighter.Tag = 2 Else If TextHighlighter.Tag = 1 Then TextHighlighter.State = Highlight.Custom + 1 TextHighlighter.Tag = 0 Else If TextHighlighter.Tag = 2 Then TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 0 Endif TextHighlighter.Add(TextHighlighter.State, String.Len(Text)) Endif End Private Sub FindPreviousConflict() Dim Y As Integer Dim sLine As String Y = $hEditor.Line Do sLine = $hEditor[Y].Text If sLine Begins "<<<<<<" Or If sLine Begins ">>>>>>" Then Break Dec Y If Y < 0 Then Return Loop Do Dec Y If Y < 0 Then Return sLine = $hEditor[Y].Text If sLine Begins "======" Then Break Loop $hEditor.Goto(0, Y) End Private Sub FindNextConflict() Dim Y As Integer Dim sLine As String Y = $hEditor.Line Do sLine = $hEditor[Y].Text If sLine Begins "<<<<<<" Or If sLine Begins ">>>>>>" Then Break Inc Y If Y >= $hEditor.Count Then Return Loop Do Inc Y If Y >= $hEditor.Count Then Return sLine = $hEditor[Y].Text If sLine Begins "======" Then Break Loop $hEditor.Goto(0, Y) End Private Sub RemoveConflict(bKeepMine As Boolean) Dim Y, Y1, Y2 As Integer Dim sLine As String Dim aKeep As String[] Dim bMine As Boolean Y1 = $hEditor.Line Do sLine = $hEditor[Y1].Text If sLine Begins "<<<<<<" Then Break Dec Y1 If Y1 < 0 Then Return Loop Y2 = Y1 Do Inc Y2 If Y2 >= $hEditor.Count Then Return sLine = $hEditor[Y2].Text If sLine Begins ">>>>>>" Then Break Loop aKeep = New String[] Y = Y1 While Y <= Y2 sLine = $hEditor[Y].Text If sLine Begins "<<<<<<" Then bMine = True Else If sLine Begins "======" Then bMine = False Else If sLine Begins ">>>>>>" Then Break Else If bMine = bKeepMine Then aKeep.Add(sLine) Endif Inc Y Wend $hEditor.Begin $hEditor.Select(0, Y1, 0, Y2 + 1) $hEditor.Insert(aKeep.Join("\n") & "\n") $hEditor.End End Private Sub RemoveConflictAll(bKeepMine As Boolean) Dim Y As Integer $hEditor.Begin $hEditor.SaveCursor() While Y < $hEditor.Count If $hEditor[Y].Text Begins "<<<<<<" Then $hEditor.Goto(0, Y) RemoveConflict(bKeepMine) Else Inc Y Endif Wend $hEditor.RestoreCursor() $hEditor.End End Private Sub HasConflict() As Boolean Dim Y As Integer Dim sLine As String For Y = 0 To $hEditor.Count - 1 sLine = Left($hEditor[Y].Text, 6) If sLine = "<<<<<<" Or If sLine = "======" Or If sLine = ">>>>>>" Then Return True Next End Public Sub PaintStatus() FEditor.PaintEditorStatus($hEditor) End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FConflictEditor.form000066400000000000000000000357251411575327000246130ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,170,94) Persistent = True Arrangement = Arrange.Vertical { mnuEditor Menu Enabled = False { mnuUndo Menu Action = ".undo" Text = ("Undo") Picture = Picture["icon:/small/undo"] Shortcut = "Ctrl+Z" } { mnuRedo Menu Action = ".redo" Text = ("Redo") Picture = Picture["icon:/small/redo"] Shortcut = "Ctrl+Y" } { mnuSep2 Menu } { mnuCut Menu Action = ".cut" Text = ("Cut") Picture = Picture["icon:/small/cut"] Shortcut = "Ctrl+X" } { mnuCopy Menu Action = ".copy" Text = ("Copy") Picture = Picture["icon:/small/copy"] Shortcut = "Ctrl+C" } { mnuPaste Menu Action = ".paste" Text = ("Paste") Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+V" } { mnuAdvanced Menu Text = ("Advanced") { mnuUpperCase Menu Action = ".ucase" Text = ("Upper case") Picture = Picture["icon:/small/text-upper"] Shortcut = "Ctrl+Alt+U" } { mnuLowerCase Menu Action = ".lcase" Text = ("Lower case") Picture = Picture["icon:/small/text-lower"] Shortcut = "Ctrl+Alt+L" } { Menu7 Menu } { mnuComment Menu Action = ".comment" Text = ("Comment") Picture = Picture["img/32/comment.png"] Shortcut = "Ctrl+K" } { mnuUncomment Menu Action = ".uncomment" Text = ("Uncomment") Picture = Picture["img/32/uncomment.png"] Shortcut = "Ctrl+U" } { mnuSep5 Menu } { mnuPasteSpecial Menu Action = ".paste-special" Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+Shift+V" } } { mnuSep3 Menu } { mnuSelectAll Menu Action = ".select-all" Text = Shortcut(("Select All"), "A") Picture = Picture["icon:/small/select-all"] Shortcut = "Ctrl+A" } { Menu4 Menu } { mnuGotoLine Menu Action = ".goto-line" Text = ("Go to line") & "..." Shortcut = "Ctrl+G" } { mnuBookmark Menu Text = ("Bookmarks") } { Menu2 Menu } { mnuFindNext Menu Action = "find-next" Text = ("Find next") Picture = Picture["icon:/small/down"] Shortcut = "F3" } { mnuFindPrevious Menu Action = "find-previous" Text = ("Find previous") Picture = Picture["icon:/small/up"] Shortcut = "Shift+F3" } { mnuSep4 Menu } { mnuEditorView Menu Text = ("View") { mnuWrap Menu Action = ".wrap" Text = ("Automatic word wrap") Picture = Picture["icon:/small/wrap"] Toggle = True } { mnuTabIndent Menu Action = ".tab-indent" Text = ("Indent with tab") Picture = Picture["img/32/tab.png"] Toggle = True } { mnuNoSplit Menu Action = ".view-nosplit" Text = ("No split") Picture = Picture["icon:/small/view-normal"] } { mnuHorizontalSplit Menu Action = ".view-hsplit" Text = ("Horizontal split") Picture = Picture["icon:/small/view-split-h"] Shortcut = "Ctrl+H" } { mnuVerticalSplit Menu Action = ".view-vsplit" Text = ("Vertical split") Picture = Picture["icon:/small/view-split-v"] Shortcut = "Ctrl+J" } } { mnuEndOfLine Menu Text = ("End of line") { mnuEolUnix Menu Text = ("Unix") Radio = True } { mnuEolWindows Menu Text = ("Windows") Radio = True } { mnuEolMac Menu Text = ("MAC") Radio = True } } { Menu3 Menu } { mnuShowCode Menu Action = ".show-code" Text = ("Open code") Picture = Picture["icon:/small/next"] Shortcut = "F12" } { Menu5 Menu } { mnuReload Menu Action = ".reload" Text = ("Reload") Picture = Picture["icon:/small/revert"] } { mnuSave Menu Action = ".save" Text = ("Save") Picture = Picture["icon:/small/save"] Shortcut = "Ctrl+S" } { mnuClose Menu Action = ".close" Text = ("Close") Picture = Picture["icon:/small/close"] Shortcut = "Ctrl+W" } } { mnuPasteAs Menu { mnuPasteAsString Menu Action = ".paste-string" Text = ("Paste as string") } { mnuPasteAsStringSplit Menu Action = ".paste-string-split" Text = ("Paste as multi-line string") } { mnuPasteAsComment Menu Action = ".paste-comment" Text = ("Paste as comments") } { Menu8 Menu } { mnuPasteSpecial2 Menu mnuPasteSpecial Name = "mnuPasteSpecial2" Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] } } { panToolBar ToolBar MoveScaled(0,0,139,4) Key = "conflict" Text = ("Text editor") Separator = True { btnShowCode ToolButton mnuShowCode Name = "btnShowCode" MoveScaled(0,0,4,4) ToolTip = ("Code") Action = ".show-class" Picture = Picture["icon:/small/right"] } { btnSave ToolButton mnuSave Name = "btnSave" MoveScaled(3,0,4,4) ToolTip = ("Save") Action = ".save" Picture = Picture["icon:/small/save"] } { btnReload ToolButton mnuReload Name = "btnReload" MoveScaled(6,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/revert"] } { Separator3 Separator MoveScaled(10,0,1,4) } { btnSolve ToolButton MoveScaled(11,0,17,4) Action = ".solve" AutoResize = True Text = ("Conflict solved") Picture = Picture["icon:/small/save"] } { Separator4 Separator MoveScaled(28,0,1,4) } { btnCut ToolButton mnuCut Name = "btnCut" MoveScaled(30,0,4,4) Visible = False ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton mnuCopy Name = "btnCopy" MoveScaled(33,0,4,4) Visible = False ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { btnPaste ToggleButton mnuPaste Name = "btnPaste" MoveScaled(36,0,4,4) ToolTip = ("Paste") Action = ".paste" Picture = Picture["icon:/small/paste"] Border = False } { btnUndo ToolButton mnuUndo Name = "btnUndo" MoveScaled(39,0,4,4) ToolTip = ("Undo") Action = ".undo" Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton mnuRedo Name = "btnRedo" MoveScaled(42,0,4,4) ToolTip = ("Redo") Action = ".redo" Picture = Picture["icon:/small/redo"] } { btnBookmark MenuButton MoveScaled(45,0,6,4) Visible = False ToolTip = ("Bookmarks") Action = ".bookmark" Picture = Picture["icon:/small/bookmark"] Border = False Menu = "mnuBookmark" } { btnIndent ToolButton MoveScaled(50,0,4,4) Visible = False ToolTip = ("Indent") Action = ".indent" Picture = Picture["icon:/small/indent"] } { btnUnindent ToolButton MoveScaled(53,0,4,4) Visible = False ToolTip = ("Unindent") Action = ".unindent" Picture = Picture["icon:/small/unindent"] } { btnComment ToolButton mnuComment Name = "btnComment" MoveScaled(56,0,4,4) ToolTip = ("Comment") Action = ".comment" Picture = Picture["img/32/comment.png"] } { btnUncomment ToolButton mnuUncomment Name = "btnUncomment" MoveScaled(59,0,4,4) ToolTip = ("Uncomment") Action = ".uncomment" Picture = Picture["img/32/uncomment.png"] } { Separator2 Separator MoveScaled(63,0,1,4) Visible = False } { btnNoSplit ToolButton mnuNoSplit Name = "btnNoSplit" MoveScaled(64,0,4,4) Visible = False ToolTip = ("No split") Action = ".view-nosplit" Picture = Picture["icon:/small/view-normal"] } { btnHorizontalSplit ToolButton mnuHorizontalSplit Name = "btnHorizontalSplit" MoveScaled(67,0,4,4) Visible = False ToolTip = ("Horizontal split") Action = ".view-hsplit" Picture = Picture["icon:/small/view-split-h"] } { btnVerticalSplit ToolButton mnuVerticalSplit Name = "btnVerticalSplit" MoveScaled(70,0,4,4) Visible = False ToolTip = ("Vertical split") Action = ".view-vsplit" Picture = Picture["icon:/small/view-split-v"] } { Separator1 Separator MoveScaled(75,0,1,4) } { btnPrevious ToolButton MoveScaled(76,0,5,4) Action = ".previous" AutoResize = True Text = ("Previous conflict") Picture = Picture["icon:/small/up"] } { btnNext ToolButton MoveScaled(81,0,6,4) Action = ".next" AutoResize = True Text = ("Next conflict") Picture = Picture["icon:/small/down"] } { btnKeepMine ToolButton MoveScaled(88,0,6,4) Background = &H7FFF7F& Action = ".mine" AutoResize = True Text = ("Keep my changes") } { btnTakeTheir ToolButton MoveScaled(95,0,5,4) Background = &HFF7F7F& Action = ".their" AutoResize = True Text = ("Take their changes") } { btnKeepMineAll ToolButton MoveScaled(101,0,6,4) Background = &H5FBF5F& Action = ".mine-all" AutoResize = True Text = ("Keep all my changes") Picture = Picture["icon:/small/top"] } { btnTakeTheirAll ToolButton MoveScaled(108,0,5,4) Background = &HBF5F5F& Action = ".their-all" AutoResize = True Text = ("Take all their changes") Picture = Picture["icon:/small/bottom"] } { Panel2 Panel MoveScaled(115,0,6,4) Expand = True } { btnWrap ToolButton MoveScaled(121,0,4,4) ToolTip = ("Automatic word wrap") Action = ".wrap" Picture = Picture["icon:/small/wrap"] Toggle = True } { btnTabIndent ToolButton MoveScaled(126,0,4,4) ToolTip = ("Indent with tab") Action = ".tab-indent" Picture = Picture["img/32/tab.png"] Toggle = True } { btnEndOfLine MenuButton MoveScaled(131,0,7,4) Visible = False ToolTip = ("End of line") Action = ".eol" AutoResize = True Picture = Picture["img/32/eol.png"] Border = False Menu = "mnuEndOfLine" MenuOnly = True } } { Panel1 Panel MoveScaled(9,6,38,63) Background = Color.TextBackground Expand = True Arrangement = Arrange.Fill { edtEditor TextEditor Editors Name = "edtEditor" MoveScaled(3,1,24,16) Expand = True Border = False ShowPreview = True } { splHorizontal HSplit MoveScaled(3,19,22,18) Visible = False Expand = True } { splVertical VSplit MoveScaled(2,41,22,18) Visible = False Expand = True } } } # Gambas Action File 3.0 { Actions { Action bookmark Text = "Bookmarks" Picture = "icon:/small/bookmark" } { Action close Text = "Close" Shortcut = "Ctrl+W" Picture = "icon:/small/close" } { Action comment Text = "Comment" Shortcut = "Ctrl+K" Picture = "img/32/comment.png" } { Action copy Text = "Copy" Shortcut = "Ctrl+C" Picture = "icon:/small/copy" } { Action cut Text = "Cut" Shortcut = "Ctrl+X" Picture = "icon:/small/cut" } { Action eol Text = "End of line" Picture = "img/32/eol.png" } { Action find-next Text = "Find next" Shortcut = "F3" Picture = "icon:/small/down" } { Action find-previous Text = "Find previous" Shortcut = "Shift+F3" Picture = "icon:/small/up" } { Action goto-line Text = "Go to line" Shortcut = "Ctrl+G" } { Action indent Text = "Indent" Picture = "icon:/small/indent" } { Action lcase Text = "Lower case" Shortcut = "Ctrl+Alt+L" Picture = "icon:/small/text-lower" } { Action mine Text = "Keep my changes" Picture = "$ToolButton" } { Action mine-all Text = "Keep all my changes" Picture = "icon:/small/top" } { Action next Text = "Next conflict" Picture = "icon:/small/down" } { Action paste Text = "Paste" Shortcut = "Ctrl+V" Picture = "icon:/small/paste" } { Action paste-comment Text = "Paste as comments" Shortcut = "" } { Action paste-special Text = "Paste special" Shortcut = "Ctrl+Shift+V" Picture = "icon:/small/paste" } { Action paste-string Text = "Paste as string" Shortcut = "" } { Action paste-string-split Text = "Paste as multi-line string" Shortcut = "" } { Action previous Text = "Previous conflict" Picture = "icon:/small/up" } { Action redo Text = "Redo" Shortcut = "Ctrl+Y" Picture = "icon:/small/redo" } { Action reload Text = "Reload" Shortcut = "" Picture = "icon:/small/revert" } { Action save Text = "Save" Shortcut = "Ctrl+S" Picture = "icon:/small/save" } { Action select-all Text = "Select All" Shortcut = "Ctrl+A" Picture = "icon:/small/select-all" } { Action show-class Text = "Code" Picture = "icon:/small/right" } { Action show-code Text = "Open code" Shortcut = "F12" Picture = "icon:/small/next" } { Action solve Text = "Conflict solved" Picture = "icon:/small/save" } { Action tab-indent Text = "Indent with tab" Shortcut = "" Picture = "img/32/tab.png" } { Action their Text = "Take their changes" Picture = "$ToolButton" } { Action their-all Text = "Take all their changes" Picture = "icon:/small/bottom" } { Action ucase Text = "Upper case" Shortcut = "Ctrl+Alt+U" Picture = "icon:/small/text-upper" } { Action uncomment Text = "Uncomment" Shortcut = "Ctrl+U" Picture = "img/32/uncomment.png" } { Action undo Text = "Undo" Shortcut = "Ctrl+Z" Picture = "icon:/small/undo" } { Action unindent Text = "Unindent" Picture = "icon:/small/unindent" } { Action view-hsplit Text = "Horizontal split" Shortcut = "Ctrl+H" Picture = "icon:/small/view-split-h" } { Action view-nosplit Text = "No split" Shortcut = "" Picture = "icon:/small/view-normal" } { Action view-vsplit Text = "Vertical split" Shortcut = "Ctrl+J" Picture = "icon:/small/view-split-v" } { Action wrap Text = "Automatic word wrap" Shortcut = "" Picture = "icon:/small/wrap" } } { Toolbars { Toolbar conflict Text = "Text editor" List = "show-class,save,reload,solve,cut,copy,paste,undo,redo,bookmark,indent,unindent,comment,uncomment,view-nosplit,view-hsplit,view-vsplit,previous,next,mine,their,mine-all,their-all,wrap,tab-indent,eol" Default = "show-class,save,reload,|,solve,|,paste,undo,redo,comment,uncomment,|,previous,next,mine,their,mine-all,their-all,~,wrap,tab-indent" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FEditor.class000066400000000000000000002544461411575327000232760ustar00rootroot00000000000000' Gambas class file Public Path As String '' Source file absolute path. Public RichText As String Public ParentClass As String '' The parent class. Public ParentComponent As String '' The component of the parent class. Public AutoCreatable As Boolean '' If the class has `CREATE STATIC`. Public NotCreatable As Boolean '' If the class has `CREATE PRIVATE`. Public Age As Integer '' The text age. It is incremented each time the text is modified Property Read ReadOnly As Boolean '' If the editor is read-only. ' Metadata Public Scan As Collection '' The result of the class symbol analyze. Private $cProc As New Collection(gb.IgnoreCase) Private $aProc As New String[] Private $iFirstProcLine As Integer Private $iScanTimeStamp As Integer Private Enum PROC_HIDDEN, PROC_EVENT, PROC_DYNAMIC, PROC_PRIVATE Public Const IDENT_CAR As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$" Public Const NBR_COLOR As Integer = 15 Static Public StructControlCompletion As Boolean = True Static Public LocalVariableDeclaration As Boolean = False Static Public AutoComment As Boolean = True Static Public ExpressionStart As Integer Static Private $cStructClose As New Collection(gb.IgnoreCase) Static Private $hVirtualSymbol As New CSymbolInfo(Project.Documentation, "", "") Static Private $bPublic As Boolean Static Private $bStatic As Boolean Static Private $sName As String Private $hEditor As TextEditor Private $bModify As Boolean 'PRIVATE $cLine AS NEW Collection Private $bToolbar As Boolean Private $iLastLine As Integer Private $hSymbol As CSymbolInfo Private $bCheckSignature As Boolean Private $iArgSignature As Integer Private $iPosSignature As Integer Private $bCleanOnSave As Boolean Private $bShowPopupHelp As Boolean Private $bDoNotSavePosition As Boolean Private Const TYPE_SYMBOL As Integer = 0 Private Const TYPE_FUNCTION As Integer = 1 Private Const TYPE_ARRAY As Integer = 2 Private $bLastStatic As Boolean Private $iViewMode As Integer Private VIEWMODE_NORMAL As Integer = 0 Private VIEWMODE_HORIZONTAL As Integer = 1 Private VIEWMODE_VERTICAL As Integer = 2 Private $hEditor1 As TextEditor Private $hEditor2 As TextEditor Private $sModule As String Private $hSampleCode As CSampleCode Private $iSampleStart As Integer Private $iSampleEnd As Integer Private $iSamplePos As Integer Private $hInsertColor As CInsertColor Private $hBookmark As CBookmark Private $hCompletion As CCompletion Private $hInsertDate As CInsertDate Private $bDiffMode As Boolean 'Private $hTimerSignature As Timer 'Static Private $cLastClassCount As New Collection Static Public Sub _init() $cStructClose["DO"] = "Loop" $cStructClose["WHILE"] = "Wend" $cStructClose["REPEAT"] = "Until" $cStructClose["SELECT"] = "End Select" $cStructClose["FOR"] = "Next" $cStructClose["WITH"] = "End With" $cStructClose["ELSE"] = "<" $cStructClose["CASE"] = "<" $cStructClose["DEFAULT"] = "<" $cStructClose["CATCH"] = "<" $cStructClose["FINALLY"] = "<" StructControlCompletion = Settings["/Editor/ControlStructCompletion", 1] LocalVariableDeclaration = Settings["/Editor/LocalVariableDeclaration", 0] AutoComment = Settings["/Editor/AutoComment", 1] End Public Sub _new(sPath As String) Dim hModule As CModule $iLastLine = -1 Path = sPath Me.Name = File.BaseName(Path) $hEditor = edtEditor edtEditor.ShowIcon = True edtEditor.ShowBraces = True edtEditor.Mode = "gambas" edtEditor.Highlight = "gambas" $hInsertColor = New CInsertColor(Me, btnInsertColor) $hBookmark = New CBookmark(Me, btnBookmark, mnuBookmark) $hCompletion = New CCompletion(Me) $hInsertDate = New CInsertDate(Me, btnInsertDate) ' $hTimerSignature = New Timer As "CheckSignature" ' $hTimerSignature.Delay = 50 ReadConfig Refresh 'Editor = edtEditor Me.Icon = Picture["img/16/" &/ File.ext(sPath) & ".png"] For Each hModule In CModule.All If Exist(File.SetExt(Path, hModule.Key)) Then $sModule = hModule.Key btnForm.Visible = True Endif Next $bDoNotSavePosition = True End Public Sub GetEditor() As TextEditor Return $hEditor End Public Sub Refresh() edtEditor.TabSize = Project.TabSize If $hEditor1 Then $hEditor1.TabSize = Project.TabSize If $hEditor2 Then $hEditor1.TabSize = Project.TabSize End Public Sub ReadConfig() $bToolBar = Settings["/Editor/Toolbar", True] panToolbar.Visible = $bToolbar Form_Arrange edtEditor.ReadConfig(True) 'edtEditor.Parent.Background = edtEditor.Styles[Highlight.Background].Color If $hEditor1 Then $hEditor1.ReadConfig(True) If $hEditor2 Then $hEditor2.ReadConfig(True) $hCompletion.ReadConfig $bCleanOnSave = Settings["/Editor/CleanOnSave", False] $bShowPopupHelp = Settings["/Editor/ShowPopupHelp", True] Project.SetSmallFont(panToolbar) RefreshBackground End Public Function Save() As Boolean Dim sHeader As String If Me.ReadOnly Then Return If Not $bModify Then ' TODO: If bReset Then $hEditor.Reset Return Endif ResetIfModified $hCompletion.Hide HideSignature HideMessage Save.Begin(Path) sHeader = "' Gambas " & File.Ext(Path) & " file" $hEditor.Begin If RTrim($hEditor[0].Text) <> sHeader Then $hEditor.Goto(0, 0) $hEditor.Insert(sHeader & "\n") Endif If $hEditor.Count < 2 Or If $hEditor[1].Text Then $hEditor.Goto(0, 1) $hEditor.Insert("\n") Endif $hEditor.End If Settings["/FormatCode/FormatOnLoad"] Then MPrettyCode.Run(Me) Endif ' Now the Editor.Save() method automatically cancels pending Change events. $hEditor.Save(Path) ' ENDIF $bModify = False DrawTitle ' TODO: If bReset Then $hEditor.Reset Save.End() If File.Ext(Path) = "test" Then MTest.UpdateSuites UpdateDiffAction Catch Return Save.Error() End Private Sub DrawTitle() Project.DrawTitle(Me) End ' Private Sub DrawInfo() ' ' lblEditor.Text = CStr(Editor.Line + 1) & ":" & CStr(Editor.Column + 1) ' ' End Public Sub ResetProcList() $cProc.Clear $aProc.Clear End Private Sub ResetIfModified() 'If Not $bModify Then Return If $iScanTimeStamp = Project.TimeStamp Then Return ResetProcList Scan = Null $iScanTimeStamp = Project.TimeStamp End Public Sub Modify(Optional bReset As Boolean) If Me.ReadOnly Then Return Inc Project.TimeStamp Inc Age FDebugInfo.RefreshTabs(Me.Path, Me.Name) $bModify = Not bReset If $bModify Then FSearch.OnFileChange(Me.Path) DrawTitle End Public Sub Delete() FSearch.OnFileChange(Me.Path) FDebugInfo.RefreshTabs(Me.Path, Me.Name) $hBookmark = Null $hCompletion = Null $hInsertColor = Null $hInsertDate = Null Super.Delete End Public Sub Rename(sNewName As String, sNewPath As String) Dim sOldName As String = Me.Name Dim sOldPath As String = Me.Path Me.Name = sNewName Path = sNewPath 'File.Dir(Path) &/ sNewName & "." & File.Ext(Path) DrawTitle FSearch.OnFileChange(sOldPath) FDebugInfo.RefreshTabs(sOldPath, sOldName) FSearch.OnFileChange(Me.Path) FDebugInfo.RefreshTabs(Me.Path, Me.Name) End Public Function IsModified() As Boolean Return $bModify End Public Sub Form_Arrange() ' Dim iToolbarOffset As Integer ' ' If $bToolbar Then ' panToolBar.Move(0, 0, Me.ClientW) ' iToolbarOffset = panToolBar.H ' Else ' iToolbarOffset = 0 ' Endif ' ' Select Case $iViewMode ' Case VIEWMODE_NORMAL ' edtEditor.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) ' Case VIEWMODE_HORIZONTAL ' splHorizontal.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) ' Case VIEWMODE_VERTICAL ' splVertical.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) ' End Select 'ResizeProcList End Public Sub Editors_Change() Modify End Private Sub RefreshLineInfo(Optional bForce As Boolean) As Boolean Dim bNewLine As Boolean If bForce Then $iLastLine = -1 Endif If $hEditor.Line <> $iLastLine Then $iLastLine = $hEditor.Line ResetIfModified UpdateCurrentProc timProc.Restart If $hSampleCode Then If $hEditor.Line < $iSampleStart Or If $hEditor.Line >= $iSampleEnd Then $hSampleCode = Null Endif Endif bNewLine = True Else If $bCheckSignature Or If FSignature.VisibleFrom($hEditor) Then CheckSignature Endif Return bNewLine End Public Sub Editors_Cursor() If RefreshLineInfo() Then HideMessage $hCompletion.Hide HideSignature Endif If $hEditor.Line = $hEditor.StopLine Then Design.CheckErrorMessage(Me) CPosition.SaveCurrent(Me) Project.UpdateStatus(True) End Static Public Sub PaintEditorStatus(hEditor As TextEditor) Dim sTextCol As String = ("Column") Dim sTextLine As String = ("Line") Dim sTextOverwrite As String = ("Overwrite") Dim DS As Integer Dim WC, WL, WO, WD As Integer Dim X, Y, W, H As Integer DS = Desktop.Scale Paint.Font = Application.Font WC = Paint.TextSize(sTextCol).W WL = Paint.TextSize(sTextLine).W WD = Paint.TextSize("9").W W = WC + DS + WD * 4 + DS + WL + DS + WD * 7 If hEditor.Overwrite Then Paint.Font = Paint.Device.Font Paint.Font.Bold = True WO = Paint.TextSize(sTextOverwrite).W W += WO + DS * 4 Endif X = Paint.W - W H = (DS * 5) \ 2 Y = (Paint.H - H) / 2 If System.RightToLeft Then Else If hEditor.Overwrite Then Paint.Font = Paint.Device.Font Paint.Font.Bold = True Paint.Rectangle(X, Y, WO + DS * 2, H) Paint.Background = Color.Foreground Paint.Fill Paint.Background = Color.Background Paint.DrawText(sTextOverwrite, X, Y, WO + DS * 2, H, Align.Center) X += WO + DS * 4 Endif Paint.Font = Application.Font Paint.Background = Color.Foreground Paint.DrawText(sTextCol, X, Y, WC, H, Align.Normal) X += WC + DS Paint.Font.Bold = True Paint.DrawText(CStr(hEditor.Column + 1), X, Y, WD * 4, H, Align.Right) X += WD * 4 + DS Paint.Font.Bold = False Paint.DrawText(sTextLine, X, Y, WL, H, Align.Normal) X += WL + DS Paint.Font.Bold = True Paint.DrawText(CStr(hEditor.Line + 1), X, Y, WD * 6, H, Align.Right) Endif End Public Sub PaintStatus() PaintEditorStatus($hEditor) End Public Sub Form_GotFocus() $hEditor.SetFocus End Public Sub Form_Deactivate() End Public Sub Goto(iLine As Integer, Optional iColumn As Integer = -1, Optional bCenter As Boolean) 'DEC iLine If iColumn < 0 Then iColumn = $hEditor.Column If iLine < 0 Then iLine = 0 Else If iLine >= $hEditor.Count Then iLine = $hEditor.Count - 1 iColumn = $hEditor[iLine].Length Endif 'If Not Editor[iLine].Limit Then Editor[iLine].Expanded = True If bCenter Then $hEditor.GotoCenter(iColumn, iLine) Else $hEditor.Goto(iColumn, iLine) Endif End Public Sub GotoCenter(iLine As Integer, Optional iColumn As Integer = -1) Me.Goto(iLine, iColumn, True) End Public Sub Editors_Menu() 'If Mouse.Control Then Return mnuEditor.Popup End Private Sub CreateMenu() Inc Application.Busy mnuForm.Visible = Project.ExistForm(Me.Name) UpdateMenu Dec Application.Busy End Private Sub UpdateMenu() Dim bVisible As Boolean Action["watch"].Enabled = Project.Running 'AND Len(Trim(edtEditor.Selection.Text)) > 0 bVisible = Not edtEditor.ReadOnly Action[".save,.undo,.redo,.cut,.paste,.paste-special,.comment,.uncomment,.color,.indent,.unindent,.lcase,.ucase,.pretty,.date,.char", Me].Visible = bVisible Action[".watch", Me].Visible = Project.Running mnuAdvanced.Visible = bVisible End Public Sub mnuGoto_Click() GotoFunction(CInt(Last.Tag)) End Private Function InsertFunction(sProc As String, sType As String, bPublic As Boolean, sSign As String, Optional bStatic As Boolean) As Integer Dim iLine As Integer Dim iCol As Integer Dim sPublic As String Dim sStatic As String ' For iLine = 0 To Editor.Lines.Count - 1 ' If IsProc($hEditor[iLine].Text) Then ' If Comp($sName, sProc, gb.Text) = 0 Then ' Return iLine ' Endif ' Endif ' Next FillProcCombo Try iLine = $cProc[sProc] If Not Error Then Return iLine If Me.ReadOnly Then Return -1 $hEditor.Begin iLine = $hEditor.Count - 1 iCol = $hEditor[iLine].Length If iCol Then $hEditor.Goto(iCol, iLine) $hEditor.Insert("\n") Inc iLine Endif sPublic = If(bPublic, "Public", "Private") sStatic = If(bStatic, "Static ", "") $hEditor.Goto(0, iLine) If sType Then $hEditor.Insert("\n" & sStatic & sPublic & " Function " & sProc & "(" & sSign & ") As " & sType & "\n\n" & Space$(Project.TabSize) & "\n\nEnd\n") Else $hEditor.Insert("\n" & sStatic & sPublic & " Sub " & sProc & "(" & sSign & ")\n\n" & Space$(Project.TabSize) & "\n\nEnd\n") Endif $hEditor.End Return iLine + 1 End Public Sub GotoEvent(sName As String, sEvent As String, Optional sSign As String) As Boolean Dim sProc As String Dim iLine As Integer sProc = sName & "_" & sEvent iLine = InsertFunction(sProc, "", True, sSign) If iLine < 0 Then Return True GotoFunction(iLine) ' + 1, Len(edt$hEditor[iLine])) End Public Sub mnuSave_Click() Save End Public Sub mnuClose_Click() Me.Close End Private Sub InsertProperty(bShift As Boolean) Dim iPos As Integer Dim bStatic As Boolean Dim bRead As Boolean Dim sName As String Dim sName2 As String Dim sType As String Dim iLine As Integer Dim iCol As Integer Dim aSymbols As String[] aSymbols = Highlight.Symbols If aSymbols[0] = "STATIC" Then bStatic = True iPos = 2 Else iPos = 1 Endif If aSymbols[iPos] = "READ" Then bRead = True Inc iPos Endif ANOTHER_SYMBOL: sName = aSymbols[iPos] If sName = "{" Then Inc iPos If Highlight.Types[iPos] <> Highlight.Symbol Then Return sName = aSymbols[iPos] Inc iPos If aSymbols[iPos] <> "}" Then Return Else If Highlight.Types[iPos] <> Highlight.Symbol Then Return Endif If Not sName2 Then sName2 = sName Inc iPos If aSymbols[iPos] = "," Then Inc iPos Goto ANOTHER_SYMBOL Endif sName = sName2 If aSymbols[iPos] <> "AS" Then Return Inc iPos sType = aSymbols[iPos] If Highlight.Types[iPos] <> Highlight.DataType Then Return Inc iPos If aSymbols.Max >= iPos Then If aSymbols[iPos] = "[" Then sType &= "[]" Endif Endif If aSymbols[aSymbols.Max - 1] = "USE" Then If Not bShift Then Return Endif iLine = $hEditor.Line iCol = $hEditor.Column $hEditor.Begin InsertFunction(sName & "_Read", sType, False, "", bStatic) If Not bRead Then InsertFunction(sName & "_Write", "", False, "Value As " & sType, bStatic) Endif $hEditor.End $hEditor.Goto(iCol, iLine) Catch End Private Sub CheckCodeSnippet() As Boolean Dim sLine As String Dim iPos As Integer Dim iLine, iCol As Integer If Settings["/Editor/CodeSnippet", 1] = 0 Then Return If Not $hSampleCode Then If $hEditor.Column < $hEditor[$hEditor.Line].Length Then Return sLine = String.Left($hEditor[$hEditor.Line].Text, $hEditor.Column) For iPos = 1 To Len(sLine) If Not IsSpace(Mid$(sLine, iPos, 1)) Then Break Next If iPos > Len(sLine) Then Return sLine = String.Mid$(sLine, iPos) CSampleCode.Init $hSampleCode = CSampleCode.All[sLine] If Not $hSampleCode Then Return $iSampleStart = $hEditor.Line $iSampleEnd = $iSampleStart + $hSampleCode.GetLineCount() $hEditor.Begin $hEditor.Remove($hEditor.Column - String.Len(sLine), $hEditor.Line, $hEditor.Column, $hEditor.Line) iLine = $hEditor.Line iCol = $hEditor.Column $iSamplePos = iCol $hSampleCode.Insert($hEditor) 'Editor.Insert($hSampleCode.Make(iIndent), Editor.Line, Editor.Column) $hEditor.Goto(iCol, iLine) $hEditor.End Endif If $hSampleCode.GotoNextPos($hEditor, $iSampleStart, $iSampleEnd, $iSamplePos) Then $hSampleCode = Null Return CheckCodeSnippet() Endif Return True End Private Sub SymbolBegins(aSym As String[], sWith As String) As Boolean Dim aWith As String[] = Split(UCase(Trim(sWith)), " ") Dim iInd As Integer For iInd = 0 To aWith.Max If aSym[iInd] <> aWith[iInd] Then Return False Next Return True Catch End Static Public Sub GetIndent(sLine As String) As Integer Return Len(sLine) - Len(LTrim(sLine)) End Private Sub DoStructControlCompletion(iLine As Integer, sLine As String, aSymbol As String[]) As Boolean Dim bIndent, bUnindent As Boolean Dim sClose, sClose2 As String Dim iPos, iInd As Integer Dim iIndent As Integer Dim sIndent As String Dim sAdd As String If aSymbol.Count >= 1 Then If aSymbol[0] = "IF" Then If aSymbol[aSymbol.Max] = "THEN" Or If Not aSymbol.Exist("THEN") Then bIndent = True bUnindent = False If aSymbol[aSymbol.Max] <> "THEN" Then sAdd = " Then" sClose = "Endif" sClose2 = "Else" Endif Else If SymbolBegins(aSymbol, "Public Struct") Or If aSymbol[0] = "STRUCT" Then bIndent = True bUnindent = False sClose = "End Struct" Else sClose = $cStructClose[aSymbol[0]] If sClose Then bIndent = True If sClose = "<" Then sClose = "" 'bUnindent = sClose = "<" Endif Endif Endif If bIndent Then iIndent = GetIndent(sLine) If sClose Then For iInd = $hEditor.Line + 1 To $hEditor.Count - 1 sLine = $hEditor[iInd].Text If Not Trim(sLine) Then Continue If Right(RTrim(sLine)) = ":" Then Continue ' Ignore labels If Left(LTrim(sLine)) = "'" Then Continue ' Ignore comments iPos = GetIndent(sLine) If iPos < iIndent Then Break If iPos > iIndent Then Continue Highlight.Analyze(sLine) If SymbolBegins(Highlight.Symbols, sClose) Then sClose = "" Else If sClose2 And If SymbolBegins(Highlight.Symbols, sClose2) Then sClose = "" Endif Break Next Endif $hEditor.Begin If bUnindent And If Not Key.Shift Then If IsSpace(Left(sLine, Project.TabSize)) Then sLine = Mid$(sLine, Project.TabSize + 1) $hEditor[$hEditor.Line].Text = sLine iIndent -= Project.TabSize Endif Endif sIndent = Space$(iIndent) $hEditor.Insert(sAdd & "\n" & Space$(Project.TabSize) & sIndent) If StructControlCompletion Then If Not bUnindent And If sClose And If Not Key.Shift Then $hEditor.Insert("\n" & sIndent & sClose) Endif $hEditor.End $hEditor.Goto(Project.TabSize + Len(sIndent), iLine + 1) Stop Event Return True Endif End Public Sub Editors_KeyPress() Dim sLine As String Dim iLine As Integer Dim iInd As Integer Dim iPos As Integer Dim bStop As Boolean Dim aSymbol As String[] Dim aScan As String[] 'Dim hClass As Class 'Dim aClass As String[] 'Dim sClass As String 'Dim iOldCount As Integer If $hCompletion.OnKeyPress() Then Return If Not $hEditor.ReadOnly Then iLine = $hEditor.Line If FSignature.VisibleFrom($hEditor) Then bStop = bStop Or FSignature.ManageKey() 'IF Key.Text THEN CheckSignature(Key.Text) Endif If bStop Then Stop Event Return Endif Endif If Key.Code = Key.F6 Then ToggleProcList Stop Event Else If Key.Code = Key.Pause Then ' IF Key.Alt THEN ' Design.Stop ' STOP EVENT ' ENDIF Else If Key.Control Then If Key.Code = Key.F12 And If Key.Shift Then For Each sLine In Split(File.Load("/proc/self/maps"), "\n") If InStr(sLine, "[heap]") Then aScan = Scan(sLine, "*-* *") Print "------------ Heap size is " & Format(Val("&H" & aScan[1] & "&") - Val("&H" & aScan[0] & "&"), "#,##0") & " bytes." Break Endif Next ' aClass = New String[] ' ' For Each hClass In Classes ' aClass.Add(hClass.Name) ' Next ' ' aClass.Sort ' ' For Each sClass In aClass ' Try hClass = Classes[sClass] ' If Error Then Continue ' With hClass ' iOldCount = 0 ' Try iOldCount = $cLastClassCount[sClass] ' If .Count = iOldCount Then Continue ' Print sClass; ": "; .Count;; "("; Format(.Count - iOldCount, "+0"); ")" ' $cLastClassCount[sClass] = .Count ' End With ' Next Stop Event Return Endif If Not Key.Shift And If Not Key.Alt And If Not Key.Meta Then If Key.Code = Key.Down Then GotoNextProc() Stop Event Return Else If Key.Code = Key.Up Then GotoPreviousProc() Stop Event Return Endif Endif Endif If $hEditor.ReadOnly Then Return If Asc(Key.Text) = 13 Then sLine = $hEditor[iLine].Text If AutoComment And If IsComment(sLine) And If Key.Shift Then iInd = GetIndent(sLine) If $hEditor.Column > iInd Then iPos = iInd + 1 While Mid$(sLine, iPos, 1) = "'" Inc iPos Wend While Mid$(sLine, iPos, 1) = " " Inc iPos Wend $hEditor.Begin $hEditor.Insert("\n" & Space$(iInd) & Mid$(Left$(sLine, iPos - 1), iInd + 1)) $hEditor.End Stop Event Endif Return Endif If $hEditor.Column < String.Len(sLine) Then Return If IsProc(sLine) And If Not Key.Shift Then For iInd = iLine + 1 To $hEditor.Count - 1 sLine = $hEditor[iInd].Text If IsEndProc(sLine) Then Return If IsProc(sLine) Then Break Next sLine = Trim($hEditor[iLine].Text) $hEditor.Begin If InStr(sLine, "(") = 0 Then $hEditor.Insert("()") $hEditor.Insert(Replace("\n\t\n\t\n\t\nEnd\n", "\t", Space$(Project.TabSize))) 'edtEditor.Line = iLine + 2 'edtEditor.Column = 2 $hEditor.Goto(2, iLine + 2) $hEditor.End Stop Event Return Endif aSymbol = Highlight.Symbols If aSymbol.Count >= 4 Then If aSymbol[0] = "PROPERTY" Or If aSymbol[0] = "STATIC" And aSymbol[1] = "PROPERTY" Then InsertProperty(Key.Shift) '$hEditor.Insert("\n") 'Stop Event Return Endif Endif If Not Key.Shift And If LocalVariableDeclaration Then If CreateLocalVariable() Then $hEditor.Goto(-1, $hEditor.Line) iLine = $hEditor.Line Endif Endif If DoStructControlCompletion(iLine, sLine, aSymbol) Then Return Else If Key.Code = Key.Space Or If InStr("(),[]", Key.Text) Then sLine = String.Left$(Highlight.Purge($hEditor.Current.Text, False, True), $hEditor.Column) If Not GetRightString(sLine) Then $bCheckSignature = True Endif Else If Key.Code = Key.Tab Then If Not $hEditor.Selected Or If $hEditor.Line = $hEditor.SelectionLine Then If CheckCodeSnippet() Then Stop Event Endif Else If Key.Code = Key.Insert Then Project.UpdateStatus() Endif End Static Public Function IsCurrentProc() As Boolean Dim aLine As String[] Dim bProc As Boolean Dim iPos As Integer aLine = Highlight.Symbols $bPublic = False $bStatic = False $sName = "" For iPos = 0 To aLine.Count - 1 If aLine[iPos] = "FAST" Then Continue If aLine[iPos] = "UNSAFE" Then Continue If aLine[iPos] = "PUBLIC" Then $bPublic = True Continue Endif If aLine[iPos] = "PRIVATE" Then $bPublic = False Continue Endif If aLine[iPos] = "STATIC" Then $bStatic = True Continue Endif If aLine[iPos] = "SUB" Then bProc = True Break Endif If aLine[iPos] = "PROCEDURE" Then bProc = True Break Endif If aLine[iPos] = "FUNCTION" Then bProc = True Break Endif Break Next If Not bProc Then Return Inc iPos If iPos >= aLine.Count Then Return $sName = aLine[iPos] If $sName = "{" Then Inc iPos If iPos >= aLine.Count Then Return $sName = aLine[iPos + 1] Endif Return True End Static Public Function IsProc(sLine As String) As Boolean Highlight.Analyze(sLine) Return IsCurrentProc() End Static Public Sub IsComment(sLine As String) As Boolean Return Left(LTrim(sLine)) = "'" End Static Public Sub IsCurrentEndProc() As Boolean Dim aLine As String[] aLine = Highlight.Symbols If aLine.Count = 1 Then Return aLine[0] = "END" If aLine.Count = 2 Then Return aLine[0] = "END" And (aLine[1] = "PROCEDURE" Or aLine[1] = "FUNCTION" Or aLine[1] = "SUB") End Static Public Function IsEndProc(sLine As String) As Boolean Highlight.Analyze(sLine) Return IsCurrentEndProc() End Public Function CanSetBreakpoint(iLine As Integer) As Boolean Dim sLine As String Dim iPos As Integer If Project.IsFake() Then Return If iLine < 0 Or If iLine >= $hEditor.Count Then Return '$hEditor[iLine].Refresh sLine = Trim($hEditor[iLine].Text) iPos = InStr(sLine, "'") If iPos Then sLine = Trim(Left$(sLine, iPos - 1)) If Len(Trim(sLine)) = 0 Then Return False If $cProc.Count Then If iLine < $iFirstProcLine Then Return False If iLine = $cProc[btnProc.Text] Then Return False Else If GetCurrentProcLine(iLine) < 0 Then Return False If IsProc($hEditor[iLine].Text) Then Return False Endif Return True End Public Sub SetBreakpoint(iLine As Integer, bVal As Boolean, bDisabled As Boolean) As Boolean If bVal And If Not CanSetBreakpoint(iLine) Then Return True 'Editor.Lines.SetFlag(iLine, Editor.Breakpoint, bVal) $hEditor[iLine].Breakpoint = bVal $hEditor[iLine].Disabled = bDisabled If iLine = $hEditor.Line Then RefreshLineInfo(True) End Private Sub HasBreakpoint(iLine As Integer) As Boolean Return $hEditor[iLine].Breakpoint End Public Sub CheckBreakpoints() Dim iLine As Integer If Project.IsFake() Then Return For Each iLine In $hEditor.Breakpoints If Not CanSetBreakpoint(iLine) Then SetBreakpoint(iLine, False, False) Next End Public Function GetBreakpoints(Optional bCheck As Boolean) As Integer[] If bCheck Then CheckBreakpoints Return $hEditor.Breakpoints End Public Sub IsBreakpointDisabled(iLine As Integer) As Boolean Return $hEditor[iLine].Disabled End Public Sub mnuComment_Click() Dim iStartLine As Integer Dim iEndLine As Integer Dim iLine As Integer Dim sIndent As String Dim aLines As String[] Dim I As Integer If $hEditor.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If $hEditor.Selected Then aLines = $hEditor.StartModifySelection(ByRef iStartLine, ByRef iEndLine) sIndent = $hEditor.GetIndent(iStartLine, iEndLine) For I = 0 To aLines.Max aLines[I] = sIndent & "' " & Mid$(aLines[I], Len(sIndent) + 1) Next $hEditor.EndModifyLines(aLines) Else 'Comment only the current line iLine = $hEditor.Line sIndent = $hEditor.GetIndent(iLine, iLine + 1) $hEditor[iLine].Text = sIndent & "' " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) Endif End Public Sub mnuUncomment_Click() Dim iLine As Integer Dim sLine As String Dim iStartLine As Integer Dim iEndLine As Integer Dim sIndent As String Dim I As Integer Dim aLines As String[] If $hEditor.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If $hEditor.Selected Then aLines = $hEditor.StartModifySelection(ByRef iStartLine, ByRef iEndLine) sIndent = $hEditor.GetIndent(iStartLine, iEndLine) For I = 0 To aLines.Max sLine = aLines[I] If Len(sLine) < (Len(sIndent) + 1) Then Break If Left(LTrim(sLine)) <> "'" Then Break Next If I >= aLines.Count Then For I = 0 To aLines.Max If Left(LTrim(aLines[I]), 2) = "' " Then aLines[I] = sIndent & Mid$(LTrim(aLines[I]), 3) Else aLines[I] = sIndent & Mid$(LTrim(aLines[I]), 2) Endif Next $hEditor.EndModifyLines(aLines) Else $hEditor.EndModifyLines() Endif Else iLine = $hEditor.Line sLine = $hEditor[iLine].Text sIndent = $hEditor.GetIndent(iLine, iLine + 1) If Len(sLine) < (Len(sIndent) + 1) Then Return If Left(LTrim(sLine)) <> "'" Then Return If Left(LTrim($hEditor[iLine].Text), 2) = "' " Then $hEditor[iLine].Text = sIndent & Mid$(LTrim($hEditor[iLine].Text), 3) Else $hEditor[iLine].Text = sIndent & Mid$(LTrim($hEditor[iLine].Text), 2) Endif Endif End Public Sub mnuCut_Click() $hEditor.Cut End Public Sub mnuCopy_Click() $hEditor.Copy End Public Sub mnuPaste_Click() $hEditor.Paste $hEditor.SetFocus End Public Sub mnuPasteSpecial_Click() FPasteSpecial.Run($hEditor) End Public Sub mnuUndo_Click() $hCompletion.Hide HideSignature $hEditor.Undo End Public Sub mnuRedo_Click() $hCompletion.Hide HideSignature $hEditor.Redo End Public Sub mnuForm_Click() Project.OpenForm(Me.Name, $sModule) End Public Sub mnuGotoLine_Click() Dim iLine As Integer iLine = FGotoLine.Run($hEditor.Line + 1) If iLine <= 0 Then Return GotoCenter(iLine - 1, 0) End Public Sub Form_Hide() Try $hCompletion.Hide 'Project.Deactivate(ME) End Public Sub mnuSelectAll_Click() $hEditor.SelectAll End Private Sub GotoPreviousProc() Dim iInd As Integer Dim sLine As String For iInd = $hEditor.Line - 1 DownTo 0 sLine = $hEditor[iInd].Text Highlight.Analyze(sLine) If IsCurrentProc() Or If IsCurrentEndProc() Then Me.Goto(iInd, $hEditor.Column, True) Return Endif Next Me.Goto(0, $hEditor.Column) End Private Sub GotoNextProc() Dim iInd As Integer Dim sLine As String For iInd = $hEditor.Line + 1 To $hEditor.Count - 1 sLine = $hEditor[iInd].Text Highlight.Analyze(sLine) If IsCurrentProc() Or If IsCurrentEndProc() Then Me.Goto(iInd, $hEditor.Column, True) Return Endif Next Me.Goto($hEditor.Count - 1, $hEditor.Column) End ' PUBLIC SUB btnGoto_Click() ' ' CreateMenu ' mnuGoto.Popup(btnGoto.ScreenX, btnGoto.ScreenY + btnGoto.H) ' ' END '' +Description '' Read the type of a symbol declared globally, or as a method argument, from an analyzed line of code. '' +Arguments '' - #aSym# is an array of symbols (like [Highlight.Symbols]). '' - #iIndex# is the index of the first symbol to take into account into #aSym#. '' - #sSymbol# is the name of the local symbol. If specified, it must be the first symbol to read. '' +Return value '' This function returns the datatype of the symbol. Static Public Function ReadSymbolType(aSym As String[], iIndex As Integer, Optional sSymbol As String) As String Dim sType As String Dim bArray As Boolean If sSymbol Then If UCase(aSym[iIndex]) <> UCase(sSymbol) Then Return Inc iIndex Endif If aSym[iIndex] = "[" Then While iIndex < aSym.Count If aSym[iIndex] = "]" Then Break Inc iIndex Wend If aSym[iIndex] <> "]" Then Return Inc iIndex bArray = True Endif If aSym[iIndex] <> "AS" Then Return Inc iIndex If aSym[iIndex] = "NEW" Then Inc iIndex If aSym[iIndex] = "STRUCT" Then Inc iIndex sType = aSym[iIndex] sType = UCase(Left(sType)) & Mid$(sType, 2) If (iIndex + 2) < aSym.Count Then If aSym[iIndex + 1] = "[" Then bArray = True Endif If bArray Then Return sType & "[]" sType = CSymbolInfo.NameToType(sType) Return sType Catch End '' +Description '' Get information about a local symbol declared with DIM from an analyzed line of code. '' +Arguments '' - #aSym# is an array of symbols (like [Highlight.Symbols]). '' - #iIndex# is the index of the first symbol to take into account into #aSym#. '' - #sSymbol# is the name of the local symbol to search for. '' - #hSymbol# is a CSymbolInfo object that will be filled with the type information. '' +Return value '' This function returns [TRUE] if the symbol has been found, [FALSE] otherwise. Static Public Function ReadLocalSymbolType(aSym As String[], iIndex As Integer, sSymbol As String, hSymbol As CSymbolInfo) As Boolean Dim sType As String Dim sWait As String Dim sSym As String Do If UCase(aSym[iIndex]) = UCase(sSymbol) Then hSymbol.Name = aSym[iIndex] Inc iIndex Do If aSym[iIndex] = "AS" Then Break Inc iIndex Loop Inc iIndex If aSym[iIndex] = "NEW" Then Inc iIndex sType = aSym[iIndex] sType = UCase(Left(sType)) & Mid$(sType, 2) If (iIndex + 2) < aSym.Count Then If aSym[iIndex + 1] = "[" Then 'AND aSym[iIndex + 2] = "]" THEN hSymbol.Type = sType & "[]" Return True Endif Endif sType = CSymbolInfo.NameToType(sType) hSymbol.Type = sType Return True Endif Do Inc iIndex sSym = aSym[iIndex] If sWait Then If sSym = sWait Then sWait = "" Endif Else If sSym = "(" Then sWait = ")" Else If sSym = "[" Then sWait = "]" Else If aSym[iIndex] = "," Then Break Endif Loop Inc iIndex Loop Catch End Public Sub GetLastSymbolDesc() As CSymbolInfo Return $hSymbol End '' +Description '' Return the datatype of a symbol in the context of the current line. '' +Arguments '' -#sSymbol# is the symbol to analyze. '' -#bPoint# tells if there is point just after the symbol. '' +Return value '' The datatype of the symbol is returned, or [NULL] if the symbol is not found. Public Function GetSymbolType(sSymbol As String, Optional bPoint As Boolean) As String Dim iLine As Integer Dim iInd As Integer Dim aSym As String[] Dim sType As String 'sSymbol = UCase(sSymbol) $bLastStatic = False $hSymbol = Null If sSymbol = "ME" Then Return Me.Name Endif If sSymbol = "SUPER" Then Project.Documentation.GetClassSymbols(Me.Name) Return ParentClass Endif If Left(sSymbol) = "{" And If Right(sSymbol) = "}" Then sSymbol = Mid$(sSymbol, 2, -1) ' Look for local variables iLine = $hEditor.Line Do Dec iLine If iLine < 0 Then Return aSym = Highlight.Analyze($hEditor[iLine].Text) If aSym.Count >= 1 Then If asym.Count = 1 Then If aSym[0] = "END" Then Break Endif If aSym.Count >= 4 Then If aSym[0] = "DIM" Then If ReadLocalSymbolType(aSym, 1, sSymbol, $hVirtualSymbol) Then With $hVirtualSymbol '.Name = aSym[1] .Class = Me.Name .Kind = "l" .LineNumber = iLine + 1 .NotPublic = True '.Type = sType End With $hSymbol = $hVirtualSymbol 'Debug $hVirtualSymbol.Name;; "->";; $hVirtualSymbol.Type Return $hVirtualSymbol.Type Endif Endif Endif Endif If IsCurrentProc() Then Break Loop ' Look for parameters For iInd = 0 To aSym.Count - 3 sType = ReadSymbolType(aSym, iInd, sSymbol) If sType Then With $hVirtualSymbol .Name = aSym[iInd] .Class = Me.Name .Kind = "l" .LineNumber = iLine + 1 .NotPublic = True .Type = sType End With $hSymbol = $hVirtualSymbol Return sType Endif Next 'IF UCase($sName) = UCase(sSymbol) THEN ' GOTO RETURN_FUNCTION 'ENDIF 'PRINT "GetSymbolType: "; sSymbol ' Look for private symbols Try $hSymbol = Project.Documentation.GetClassSymbols(Me.Name)[sSymbol] If Not Error Then If $hSymbol Then ' A private symbol that is a method or an event cannot be followed by a point ' So it must be a static class. If Not bPoint Or If InStr("Mm:", $hSymbol.Kind) = 0 Then ' This must be a private symbol, and so we must ignore inheritance If $hSymbol.Class = Me.Name And If Not $hSymbol.Component Then '$bLastStatic = $hSymbol.IsStatic() Return $hSymbol.Type Endif Endif $hSymbol = Null Endif Endif ' Look for subroutines If Not bPoint Then $hSymbol = Project.Documentation.GetClassSymbols(".")[sSymbol] If $hSymbol Then Return $hSymbol.Type Endif Endif ' Look for static classes $bLastStatic = True If Project.Documentation.Classes.Exist(sSymbol) Then 'TRY $hSymbol = CComponent.GetClassSymbols(sSymbol)["_call"] Return sSymbol Endif ' Look for project classes If Project.Exist(sSymbol) Then If Project.ExistForm(sSymbol) Then $bLastStatic = False Return sSymbol Endif End Private Sub GetSymbolWith(aExpr As String[], aType As Integer[], Optional iInd As Integer = -1) Dim iLine As Integer Dim aWith As String[] Dim aWithType As Integer[] Dim aWithNested As String[] Dim aWithTypeNested As Integer[] Dim iLevel As Integer Dim iAssign As Integer iLine = $hEditor.Line Do Dec iLine If iLine < 0 Then Break aWith = Highlight.Analyze($hEditor[iLine].Text) If aWith.Count >= 2 Then If aWith[0] = "WITH" Then If iLevel = 0 Then aWithType = Highlight.Types aWith.Remove(0) aWithType.Remove(0) For iAssign = 0 To aWith.Max If Right(aWith[iAssign]) = "=" Then aWith.Remove(iAssign, -1) aWithType.Remove(iAssign, -1) Break Endif Next ' Nested WITHs If Left$(aWith[0]) = "." Then If Not aWithNested Then 'Lazy buffer allocations aWithNested = New String[] aWithTypeNested = New Integer[] Endif aWithNested.Insert(aWith, 0) aWithTypeNested.Insert(aWithType, 0) Continue Endif If aWithNested Then aWith.Insert(aWithNested) aWithType.Insert(aWithTypeNested) Endif aExpr.Insert(aWith, iInd) aType.Insert(aWithType, iInd) Return Else Dec iLevel Endif Else If aWith[0] = "END" Then If aWith[1] = "WITH" Then Inc iLevel Endif Endif Endif If IsCurrentProc() Then Break Loop End Private Function IsTypeSymbol(sPattern As String, iType As Integer) As Boolean If iType = Highlight.Symbol Then Return True If iType = Highlight.DataType Then Return True If iType = Highlight.Function Then Return True If iType = Highlight.Keyword Then If sPattern = "ME" Then Return True If sPattern = "SUPER" Then Return True If sPattern = "LAST" Then Return True Endif End Private Sub GetExpressionStart(aExpr As String[], aType As Integer[]) As Integer Dim iInd As Integer Dim aWait As New String[] Dim sPattern As String Dim bLastSymbol As Boolean For iInd = aExpr.Max DownTo 0 sPattern = aExpr[iInd] If sPattern = ")" Then aWait.Push("(") bLastSymbol = False Continue Else If sPattern = "]" Then aWait.Push("[") bLastSymbol = False Continue Else If aWait.Count Then If sPattern = aWait[aWait.Count - 1] Then aWait.Pop Endif bLastSymbol = False Continue Else If sPattern = "." Then bLastSymbol = False Continue Else If IsTypeSymbol(sPattern, aType[iInd]) Then If Not bLastSymbol Then bLastSymbol = True Continue Endif Endif Break Next Inc iInd ExpressionStart = iInd Return iInd End Public Function GetExpressionType(aExpr As String[], aType As Integer[], bPointAfter As Boolean) As String Dim iInd As Integer Dim aWait As New String[] Dim sPattern As String Dim sType As String Dim cSymbol As Collection Dim bNeedMethod As Boolean $hSymbol = Null iInd = GetExpressionStart(aExpr, aType) If iInd >= aExpr.Count Then If iInd > 0 Then If Not bPointAfter Then Return Select Case aType[iInd - 1] Case Highlight.Operator, Highlight.Keyword Default Return End Select Endif GetSymbolWith(aExpr, aType) 'PRINT "#1 WITH: "; aExpr.Join("/") Else If aExpr[iInd] = "." Then GetSymbolWith(aExpr, aType, iInd) 'PRINT "#2 WITH: "; aExpr.Join("/") Endif For iInd = iInd To aExpr.Count - 1 sPattern = aExpr[iInd] 'PRINT sPattern If sPattern = "(" Then 'INC $bInMethod aWait.Push(")") Continue Else If sPattern = "[" Then aWait.Push("]") Continue Else If aWait.Count Then If sPattern = aWait[aWait.Count - 1] Then aWait.Pop If aWait.Count Then Continue Else Continue Endif Endif 'IF aType[iInd] = Editor.Symbol OR aType[iInd] = Editor.DataType OR aType[iInd] = Editor.Keyword THEN If IsTypeSymbol(sPattern, aType[iInd]) Then If Not sType Then If iInd >= (aExpr.Count - 1) Then sType = GetSymbolType(sPattern, bPointAfter) Else sType = GetSymbolType(sPattern, aExpr[iInd + 1] = ".") Endif If $hSymbol Then '$bLastStatic = FALSE sType = $hSymbol.Type bNeedMethod = LCase($hSymbol.Kind) = "m" Endif Endif If Not sType Then Return Else If sPattern = "." Then If iInd <= (aExpr.Count - 2) Then If sType Then If aType[iInd + 1] = Highlight.Symbol Then 'PRINT sType; " "; cSymbol = Project.Documentation.GetClassSymbols(sType) $hSymbol = Null Try $hSymbol = cSymbol[aExpr[iInd + 1]] If Not $hSymbol Then Return sType = $hSymbol.Type $bLastStatic = False ' A property cannot return static classes 'PRINT sType If Not sType Then Return If LCase($hSymbol.Kind) = "m" Then bNeedMethod = True Inc iInd Else Return Endif Else Return Endif Else Return Endif Else If sPattern = ")" Then If bNeedMethod Then bNeedMethod = False Else Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_call"] If Not $hSymbol Then Return sType = $hSymbol.Type ' A method cannot return static classes $bLastStatic = False Endif Else If sPattern = "]" Then If Not sType Then ' Array constructor operator [ ... ] Return Else Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_get"] If Not $hSymbol Then Return sType = $hSymbol.Type $bLastStatic = False ' A method cannot return static classes Endif Endif Next If bNeedMethod Then Return Return sType End Private Sub GetRightString(sLine As String) As String Dim I, iPos As Integer Dim sCar As String Dim bInside As Boolean For I = 1 To Len(sLine) sCar = Mid$(sLine, I, 1) If bInside Then If sCar = "\\" Then Inc I Else If sCar = Chr$(34) Then bInside = False Endif Else If sCar = Chr$(34) Then bInside = True iPos = I Endif Next If bInside Then Return Mid$(sLine, iPos + 1) End Public Sub CheckCompletion() 'DIM sMode AS String Dim sLine As String Dim sType As String Dim aSymbols As String[] Dim aTypes As Integer[] Dim sWord As String Dim iPos As Integer Dim bHidden As Boolean sLine = String.Left$(Highlight.Purge($hEditor.Current.Text, False, True), $hEditor.Column) If Right$(RTrim(sLine)) = "'" Then Return Select Case $hCompletion.Mode Case " " If GetRightString(sLine) Then Return If UCase(Right$(sLine, 4)) = " AS " Or If UCase(Right$(sLine, 5)) = " NEW " Or If UCase(Right$(sLine, 4)) = " IS " Or If UCase(sLine) = "INHERITS " Then $hCompletion.Hide $hCompletion.Open Endif Case "." If GetRightString(sLine) Then Return Highlight.Analyze(sLine) aSymbols = Highlight.Symbols aTypes = Highlight.Types aSymbols.Remove(aSymbols.Count - 1) aTypes.Remove(aTypes.Count - 1) sType = GetExpressionType(aSymbols, aTypes, True) If sType Then If aSymbols[aSymbols.Max] = "SUPER" Or If aSymbols[aSymbols.Max] = "ME" Then bHidden = True Endif 'PRINT "Type: "; sType $hCompletion.Open(sType, $bLastStatic, bHidden) 'LCase(sType) = LCase(ME.Name)) Endif Case "A" If Not FCompletion.VisibleFrom($hEditor) Then sWord = $hCompletion.GetWord(sLine, $hEditor.Column) If String.Len(sWord) >= 3 Then If GetRightString(sLine) Then $hCompletion.OpenMode("I", sWord) Else $hCompletion.Open(sWord) Endif Endif 'IF Len(sWord) >= 3 THEN DEBUG FindCompletion(sWord).Join(" ") Endif Case "_" If Not FCompletion.VisibleFrom($hEditor) Then sWord = $hCompletion.GetWord(sLine, $hEditor.Column) If Len(sWord) >= 3 Then $hCompletion.OpenMode("A", sWord & "_") Endif 'IF Len(sWord) >= 3 THEN DEBUG FindCompletion(sWord).Join(" ") Endif Case "<" If Not $hEditor.Selected Then $bCheckSignature = True $hCompletion.Hide sWord = $hCompletion.GetWord(sLine, $hEditor.Column - 1) If Right(sLine) <> "." And If Len(sLine) > Len(sWord) And If Mid$(sLine, Len(sLine) - Len(sWord), 1) = "." Then iPos = $hEditor.Column $hEditor.Goto($hEditor.Column - String.Len(sWord), $hEditor.Line) $hCompletion.Mode = "." CheckCompletion() FCompletion.SetText(sWord) $hEditor.Goto(iPos, $hEditor.Line) Return Endif If Len(sWord) >= 3 Then $hCompletion.Mode = "A" CheckCompletion() 'FCompletion.SetText(sWord) Return Endif Endif Case "/" sWord = GetRightString(sLine) If sWord Then $hCompletion.Open(sWord) Case Else $hCompletion.Hide End Select End Private Function GetExpressionSignature(aExpr As String[], aType As Integer[]) As CSymbolInfo Dim iInd As Integer Dim sWait As New String[] Dim sPattern As String Dim sType As String Dim bNew As Boolean $hSymbol = Null $iArgSignature = 0 For iInd = aExpr.Count - 1 To 0 Step -1 sPattern = aExpr[iInd] If sPattern = ")" Then sWait.Push("(") 'bLastSymbol = FALSE Continue Else If sPattern = "]" Then sWait.Push("[") 'bLastSymbol = FALSE Continue Else If sWait.Count Then If sPattern = sWait[sWait.Count - 1] Then sWait.Pop Endif 'bLastSymbol = FALSE Continue Else If sPattern = "(" Or sPattern = "[" Then Break Else If sPattern = "," Then Inc $iArgSignature Endif Next If iInd < 1 Then Return $iPosSignature = Highlight.Positions[iInd - 1] If iInd >= 2 Then bNew = aExpr[iInd - 2] = "NEW" aExpr.Remove(iInd, -1) aType.Remove(iInd, -1) sType = GetExpressionType(aExpr, aType, False) 'IF NOT $hSymbol THEN If sType Then If sPattern = "(" Then If bNew Then Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_new"] Else Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_call"] Endif Else If sPattern = "[" Then $hSymbol = Null Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_get"] Endif Endif ' IF $hSymbol THEN ' IF $hSymbol.IsStatic() XOR $bLastStatic THEN ' hClass = CComponent.Classes[$hSymbol.Component &/ $hSymbol.Class] ' IF hClass THEN ' IF NOT hClass.AutoCreatable THEN ' $hSymbol = NULL ' ENDIF ' ELSE ' $hSymbol = NULL ' ENDIF ' ENDIF ' ENDIF 'ENDIF Return $hSymbol End Private Function GetExpressionSymbol(aExpr As String[], aType As Integer[]) As CSymbolInfo Dim sPattern As String Dim sType As String Dim bNew As Boolean $hSymbol = Null If aExpr.Count = 0 Then Return sPattern = aExpr[aExpr.Max] If InStr("[(.", sPattern) Then aType.Remove(aExpr.Count - 1) aExpr.Remove(aExpr.Count - 1) Endif If aExpr.Count >= 2 Then bNew = aExpr[aExpr.Count - 2] = "NEW" sType = GetExpressionType(aExpr, aType, sPattern = ".") 'IF NOT $hSymbol THEN 'IF sPattern = "(" THEN If bNew Then Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_new"] 'ELSE ' TRY $hSymbol = CComponent.GetClassSymbols(sType)["_call"] Endif 'ELSE IF sPattern = "[" THEN 'TRY $hSymbol = CComponent.GetClassSymbols(sType)["_get"] 'ENDIF ' IF $hSymbol THEN ' IF $hSymbol.IsStatic() XOR $bLastStatic THEN ' hClass = CComponent.Classes[$hSymbol.Component &/ $hSymbol.Class] ' IF hClass THEN ' IF NOT hClass.AutoCreatable THEN ' $hSymbol = NULL ' ENDIF ' ELSE ' $hSymbol = NULL ' ENDIF ' ENDIF ' ENDIF 'ENDIF If Not $hSymbol Then If sPattern = "(" Then Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_call"] Else If sPattern = "[" Then Try $hSymbol = Project.Documentation.GetClassSymbols(sType)["_get"] Endif Endif Return $hSymbol End Public Sub CheckSignature() Dim sLig As String Dim hSymbol As CSymbolInfo Dim sKind As String If Not $hCompletion.Enabled Then Return $bCheckSignature = False 'sLig = Left$(edtEditor.GetPurgedLine(edtEditor.Line), edtEditor.Column) & sText sLig = String.Left$(Highlight.Purge($hEditor.Current.Text), $hEditor.Column) Highlight.Analyze(sLig) If Not IsCurrentProc() Then hSymbol = GetExpressionSignature(Highlight.Symbols, Highlight.Types) If hSymbol Then sKind = LCase(hSymbol.Kind) If InStr(":mx", sKind) Then If sKind = ":" Then If sLig Not Like ("*RAISE*" & hSymbol.Name & "*") Then Return Endif FSignature.Open(Me, $iPosSignature, hSymbol, $iArgSignature) Endif Return Endif Endif HideSignature End Private Sub HideSignature() FSignature.HideFrom($hEditor) End Public Sub Editors_Scroll() $hCompletion.Position() FSignature.Position(Me) HideMessage End Public Sub SetReadOnly() Dim bReadOnly As Boolean If Project.ReadOnly Or If Project.Running Or If Project.IsReadOnly(Path) Then bReadOnly = True Endif edtEditor.ReadOnly = bReadOnly If $hEditor1 Then $hEditor1.ReadOnly = bReadOnly If $hEditor2 Then $hEditor2.ReadOnly = bReadOnly Project.UpdateLockedAction(Me) DrawTitle UpdateMenu End Public Sub Reload() edtEditor.Load(Path, True) Design.InitEditorWithBreakpoints(Me) $hBookmark.Load() ' If Not Project.RestoringFiles Then ' If Settings["/Editor/Fold"] Then edtEditor.CollapseAll ' Endif $hEditor.SetFocus Modify(True) If Settings["/FormatCode/FormatOnLoad"] Then MPrettyCode.Run(Me) SetReadOnly UpdateDiffAction End Public Sub LoadFile() As Boolean Reload End Public Sub mnuReload_Click() Project.ReloadFile(Me) End Private Function GetCurrentProcLine(iLine As Integer) As Integer $sName = "" If iLine >= $hEditor.Count Then Return -1 Do If $hEditor[iLine].Limit Then If IsProc($hEditor[iLine].Text) Then Return iLine Endif Dec iLine If iLine < 0 Then Return -1 Loop End Public Sub GetProcAt(iLine As Integer) As String GetCurrentProcLine(iLine) Return $sName End Private Sub IsCurrentProcStatic() As Boolean GetCurrentProcLine($hEditor.Line) Return $bStatic End Public Sub btnIndent_Click() $hEditor.Indent End Public Sub btnUnindent_Click() $hEditor.Unindent End Private Function IsKeyword(iCpt As Integer) As Boolean If Highlight.Types[iCpt] = Highlight.Keyword Then Return True If Highlight.Types[iCpt] = Highlight.Function Then Return True If Highlight.Types[iCpt] = Highlight.Operator And If IsLetter(Left$(Highlight.Symbols[iCpt])) Then Return True End Private Sub FindDefinition() As Boolean Dim sLig As String Dim iCol As Integer Dim hSymbol As CSymbolInfo Dim hClass As CClassInfo Dim iCpt As Integer Dim sKeyword As String Dim iLine As Integer Dim aSym As String[] Dim hForm As Object Dim aSymbols As String[] Dim bAfter As Boolean iLine = $hEditor.Line iCol = $hEditor.Column If $hEditor.Selected Then If $hEditor.Line <> $hEditor.SelectionLine Then Return Endif iCol = $hEditor.Column sLig = Highlight.Purge($hEditor[iLine].Text) ' Repeat ' Inc iCol ' If iCol > Len(sLig) Then Break ' Until InStr(IDENT_CAR, Mid$(sLig, iCol, 1)) = 0 ' ' If iCol < Len(sLig) Then ' If InStr("[", Mid$(sLig, iCol, 1)) Then ' Inc iCol ' Endif ' Endif ' ' sLig = Left$(sLig, iCol - 1) ' If Right(sLig) = "[" Then sLig &= "]" 'Editor.ShowWord(iLine, iCol, 3) Highlight.Analyze(sLig, True, $hEditor[iLine].InitialState.State) aSymbols = Highlight.Symbols For iCpt = 0 To aSymbols.Max If Highlight.Types[iCpt] = Highlight.Keyword Then aSymbols[iCpt] = UCase(aSymbols[iCpt]) If Highlight.Positions[iCpt] > iCol Then Break Next Dec iCpt If iCpt >= 0 Then sKeyword = aSymbols[iCpt] Try bAfter = InStr("([.", aSymbols[iCpt + 1]) > 0 If Not bAfter Then If IsKeyword(iCpt) Then ' If iCpt > 0 Then ' Dec iCpt ' If IsKeyword(iCpt) Then ' sKeyword2 = Highlight.Symbols[iCpt] & sKeyword ' Endif ' Endif ' ' If sKeyword2 Then ' MHelp.ShowWebViewWith(Null, MHelp.TYPE_KEYWORD, sKeyword2) ' If FHelpBrowser.Error Then ' MHelp.ShowWebViewWith(Null, MHelp.TYPE_KEYWORD, sKeyword) ' Endif ' Else MHelp.ShowHelpBrowserWith(MHelp.TYPE_KEYWORD, sKeyword) 'Endif Return Else If Highlight.Types[iCpt] = Highlight.DataType Then If System.Datatypes.Exist(sKeyword, gb.IgnoreCase) Then MHelp.ShowHelpBrowserWith(MHelp.TYPE_NATIVE, sKeyword) Else hClass = Project.Documentation.Classes[sKeyword] If hClass Then 'MHelp.GotoClass(hClass.Component, hClass.Name) MHelp.ShowHelpBrowserWith(MHelp.TYPE_CLASS, hClass.Name) Else If Project.ExistClass(sKeyword) Then CPosition.SaveCurrent(Me) hForm = Project.OpenFile(sKeyword) Endif Endif Return Endif Endif If sKeyword Begins "{" And If sKeyword Ends "}" Then sKeyword = Mid$(sKeyword, 2, -1) If iCpt >= 1 And If Highlight.Types[iCpt] = Highlight.Label Then If aSymbols[iCpt - 1] = "GOTO" Or If aSymbols[iCpt - 1] = "GOSUB" Then While iLine > 0 Dec iLine Highlight.Analyze($hEditor[iLine].Text) If IsCurrentProc() Then Break Wend While iLine < ($hEditor.Count - 1) Inc iLine sLig = $hEditor[iLine].Text aSym = Highlight.Analyze(Highlight.Purge(sLig)) If IsCurrentEndProc() Then Break If aSym.Count = 2 And If aSym[1] = ":" And If aSym[0] == sKeyWord Then CPosition.SaveCurrent(Me) GotoCenter(iLine) Break Endif Wend Return Endif Endif Endif If aSymbols.Count > (iCpt + 1) And If bAfter Then Inc iCpt hSymbol = GetExpressionSymbol(aSymbols.Copy(0, iCpt + 1), Highlight.Types) If Not hSymbol Then If sKeyword Then If Project.Documentation.Classes.Exist(sKeyword) Then MHelp.ShowHelpBrowserWith(MHelp.TYPE_CLASS, sKeyword) Endif Endif Return Endif 'PRINT hSymbol.Class If hSymbol.LineNumber Then 'And If Not bPopupHelp Then CPosition.SaveCurrent(Me, True) hForm = Project.OpenFile(hSymbol.Class, hSymbol.LineNumber) CPosition.SaveCurrent(hForm, True) Else MHelp.ShowHelpBrowserWith(MHelp.TYPE_SYMBOL, hSymbol.Name, hSymbol.Class) Endif End Public Sub OnProjectDebug() SetReadOnly If Not Project.Running Then $hEditor.HideMessageLabel End Public Sub OnShowString(sStr As String, bIgnoreCase As Boolean, bWordOnly As Boolean) edtEditor.HighlightString(sStr, bIgnoreCase, bWordOnly) If $hEditor1 Then $hEditor1.HighlightString(sStr, bIgnoreCase, bWordOnly) If $hEditor2 Then $hEditor2.HighlightString(sStr, bIgnoreCase, bWordOnly) End ' Static Public Function GetIdentifier(sLine As String, iPos As Integer) As String ' ' Dim sCar As String ' Dim iPos2 As Integer ' ' iPos2 = iPos ' ' Do ' If iPos <= 0 Then Break ' sCar = String.Mid$(sLine, iPos, 1) ' If sCar = "?" Then Break ' If InStr(IDENT_CAR, sCar) = 0 Then Break ' Dec iPos ' Loop ' ' Inc iPos ' ' Do ' If iPos2 > String.Len(sLine) Then Break ' sCar = String.Mid$(sLine, iPos, 1) ' If InStr(IDENT_CAR, sCar) = 0 Then Break ' Inc iPos2 ' Loop ' ' Return String.Mid$(sLine, iPos, iPos2 - iPos) ' ' Catch ' ' End Public Sub WatchExpression() Dim sWatch As String If Not Project.Running Then Return sWatch = Trim($hEditor.SelectedText) If Not sWatch Then Return FDebugInfo.AddWatch(Trim($hEditor.SelectedText)) End Public Sub RunUntil() If Not CanSetBreakpoint($hEditor.Line) Then Return Project.RunUntil(Me, $hEditor.Line) End Public Sub Form_Activate() RefreshLineInfo(True) Project.SetCurrentPopup(mnuEditor) End Private Sub RefreshBackground() Dim aEditor As TextEditor[] = [$hEditor1, $hEditor2] Dim hEditor As TextEditor Dim bHasFocus As Boolean If aEditor.Exist($hEditor) Then ' It does not work anymore. Both splitted editors are desaturated! Return For Each hEditor In aEditor If hEditor And If hEditor.HasFocus Then bHasFocus = True Break Endif Next For Each hEditor In aEditor If Not hEditor Then Continue hEditor.ReadConfig(True) If Not hEditor.HasFocus Then If bHasFocus Then MTheme.InitEditor(hEditor, True) hEditor.ShowCurrent = False hEditor.ShowModified = False Endif Next Endif End Public Sub Editors_GotFocus() $hEditor = Last Project.SetCurrentPopup(mnuEditor) RefreshBackground UpdateCurrentProc End Public Sub Editors_LostFocus() ResetIfModified RefreshBackground End Public Sub Editors_MouseDown() CPosition.Disable End Public Sub Editors_MouseUp() Dim sText As String CPosition.Enable CPosition.SaveCurrent(Me) If Mouse.Control Then If Mouse.Left Then FindDefinition Else If Mouse.Right Then CPosition.MovePrevious Endif Return Endif If Not $hEditor.Selected Or If $hEditor.SelectionLine <> $hEditor.Line Then Return Endif sText = Trim($hEditor.SelectedText) If Not Project.Running Then Else FDebugInfo.InstantWatch(sText, Me) ', Me, $hEditor.ToPosX($hEditor.Column), $hEditor.ToPosY() + $hEditor.LineHeight) Endif End Public Sub ShowWatchResult(sStr As String) Dim bError As Boolean If Left(sStr) = "!" Then sStr = Mid$(sStr, 2) If sStr = "Syntax error" Or If sStr = "Non terminated string" Or If sStr = "Unknown symbol" Then Return If sStr Begins "Unexpected " Then Return sStr = Design.MakeMessage(sStr) bError = True Endif $hEditor.ShowMessageLabel(Html(sStr), If(bError, Highlight.Breakpoint, Highlight.Normal)) End Public Sub Editors_Margin() Dim Y As Integer If Design.IsRunning() Then Return Y = Last.Line If CanSetBreakpoint(Y) Then Design.SetBreakpoint(Me.Name & "." & CStr(Y), Not HasBreakpoint(Y)) End Public Sub ShowMessage(sMsg As String, Optional sIcon As String, Optional bNoEscape As Boolean) Dim hIcon As Picture Dim X, Y As Integer If Not bNoEscape Then sMsg = Replace(sMsg, "\t", "\n") sMsg = Replace(sMsg, " ", " ") sMsg = Replace(sMsg, "&", "&") sMsg = Replace(sMsg, "<", "<") sMsg = Replace(sMsg, ">", ">") If Left(sMsg, 2) = "**" Then sMsg = Trim(Mid$(sMsg, 3)) hIcon = Picture["icon:/32/error"] Endif Endif If sIcon Then hIcon = Picture[sIcon] X = $hEditor.ToPosX() Y = $hEditor.ToPosY() + $hEditor.LineHeight \ 2 If $hEditor.Selected Then If $hEditor.SelectionLine = $hEditor.Line Then X = ($hEditor.ToPosX($hEditor.Column) + $hEditor.ToPosX($hEditor.SelectionColumn)) \ 2 Endif Endif Balloon(sMsg, $hEditor, hIcon, X, Y) End Public Sub ShowErrorMessage(sMsg As String, (sIcon) As String) $hEditor.SetFocus Wait $hEditor.ShowMessageLabel(sMsg, Highlight.Breakpoint) End Private Sub HideMessage() If Balloon.Control = $hEditor Then Balloon.Hide Endif 'timWatch_Timer End Public Sub timProc_Timer() CheckBreakpoints timProc.Enabled = False End Private Sub SetComboProcText(sProc As String) btnProc.Text = sProc End Private Sub UpdateCurrentProc() Dim iLine As Integer = GetCurrentProcLine($hEditor.Line) Dim sProc As String = $sName If Not sProc Then sProc = ("(Declarations)") iLine = 0 Endif SetComboProcText(sProc) End Private Sub FillProcCombo() Dim hSymbol As CSymbolInfo Dim cSymbol As Collection Dim sText As String Dim sName As String Dim aSymbol As New String[][16] ' Dim aPrivate As String[] ' Dim aStaticPrivate As String[] ' Dim aStaticPublic As String[] ' Dim aPublic As String[] Dim bSeparateStatic As Boolean Dim I As Integer Dim iType As Integer Dim sTitle As String 'DIM fTime AS Float 'DIM iInd AS Integer If $cProc.Count Then Return Inc Application.Busy 'fTime = Timer 'FOR iInd = 1 TO 20 'aFunc.Clear sText = btnProc.Text 'cmbProc.Clear bSeparateStatic = True 'Settings["/Editor/SeparateStaticMethod", 1] $cProc = New Collection(gb.IgnoreCase) $aProc = New String[] $iFirstProcLine = 1000000 '{Scan} = Null If Project.IsSourcePath(Path) Then Try cSymbol = Project.Documentation.GetClassSymbols(Me.Name) Else Try cSymbol = Project.Documentation.ScanSingleClass(Me) Endif If Not cSymbol Then cSymbol = New Collection ' aStaticPrivate = New String[] ' aPrivate = New String[] ' aStaticPublic = New String[] ' aPublic = New String[] For I = 0 To 15 aSymbol[I] = New String[] Next For Each hSymbol In cSymbol If LCase(hSymbol.Kind) <> "m" Then Continue If hSymbol.LineNumber = 0 Then Continue If hSymbol.Class <> Me.Name Then Continue sName = hSymbol.Name iType = 0 If hSymbol.IsStatic And If bSeparateStatic Then Else iType = BSet(iType, PROC_DYNAMIC) Endif If hSymbol.NotPublic Then iType = BSet(iType, PROC_PRIVATE) If Left(sName) = "_" Then If Not hSymbol.NotPublic Then iType = BSet(iType, PROC_HIDDEN) Else If InStr(sName, "_") Then iType = BSet(iType, PROC_EVENT) Endif aSymbol[iType].Add(sName) ' If bSeparateStatic And If hSymbol.IsStatic Then ' If hSymbol.NotPublic Then ' aStaticPrivate.Add(sName) ' Else ' aStaticPublic.Add(sName) ' Endif ' Else ' If hSymbol.NotPublic Then ' aPrivate.Add(sName) ' Else ' aPublic.Add(sName) ' Endif ' Endif Next For I = 0 To 15 aSymbol[I].Sort(gb.IgnoreCase) Next ' aStaticPrivate.Sort(gb.IgnoreCase) ' aPrivate.Sort(gb.IgnoreCase) ' aStaticPublic.Sort(gb.IgnoreCase) ' aPublic.Sort(gb.IgnoreCase) For I = 0 To 15 If aSymbol[I].Count = 0 Then Continue sTitle = "" If Not BTst(I, PROC_DYNAMIC) Then sTitle &= " STATIC" If BTst(I, PROC_EVENT) Then If BTst(I, PROC_PRIVATE) Then sTitle &= " PROPERTY" Else sTitle &= " EVENT" Endif Else If BTst(I, PROC_HIDDEN) And If Not BTst(I, PROC_PRIVATE) Then sTitle &= " HIDDEN" Else If BTst(I, PROC_PRIVATE) Then sTitle &= " PRIVATE" Else sTitle &= " PUBLIC" Endif Endif $aProc.Add("-" & LTrim(sTitle)) $aProc.Insert(aSymbol[I]) Next ' If aStaticPublic.Count Then ' $aProc.Add("-STATIC PUBLIC") ' $aProc.Insert(aStaticPublic) ' Endif ' If aPublic.Count Then ' $aProc.Add("-PUBLIC") ' $aProc.Insert(aPublic) ' Endif ' If aStaticPrivate.Count Then ' $aProc.Add("-STATIC PRIVATE") ' $aProc.Insert(aStaticPrivate) ' Endif ' If aPrivate.Count Then ' $aProc.Add("-PRIVATE") ' $aProc.Insert(aPrivate) ' Endif For Each sName In $aProc If sName Begins "-" Then Continue hSymbol = cSymbol[sName] 'cmbProc.Add(sName) $cProc[hSymbol.Name] = hSymbol.LineNumber - 1 $iFirstProcLine = Min($iFirstProcLine, hSymbol.LineNumber - 1) Next $aProc.Add(("(Declarations)"), 0) $cProc[$aProc[0]] = 0 SetComboProcText(sText) 'NEXT 'DEBUG Timer - fTime Dec Application.Busy End ' Public Sub cmbProc_KeyPress() ' ' FillProcCombo ' ' End ' ' Public Sub cmbProc_MouseDown() ' ' FillProcCombo ' ' End Public Sub GetFunctionLine(sFunc As String) As Integer Dim iLine As Integer FillProcCombo Try iLine = $cProc[sFunc] If Not Error Then Return iLine End Public Sub GotoFunction(iLine As Integer) Dim sLine As String Dim iCol As Integer Dim iStart As Integer If iLine < 0 Then $hEditor.Goto(0, $hEditor.Count) Return Endif iStart = iLine Do Inc iLine If iLine >= $hEditor.Count Then Dec iLine Break Endif sLine = Trim($hEditor[iLine].Text) If sLine Then Break Loop If UCase(sLine) = "END" Or If UCase(sLine) = "END SUB" Then iLine = Min(iStart + 2, iLine - 1) Endif iCol = String.Len($hEditor[iLine].Text) - String.Len(LTrim($hEditor[iLine].Text)) Me.GotoCenter(iLine, iCol) ', True) $hEditor.SetFocus End ' Public Sub cmbProc_Click() ' ' Dim iLine As Integer ' ' Try iLine = $cProc[cmbProc.Text] ' GotoProc(iLine) ' ' End ' ' Public Sub cmbProc_MouseWheel() ' ' FillProcCombo ' ' End ' ' Public Sub cmbProc_GotFocus() ' ' Editor.SetFocus ' ' End Private Function ReadOnly_Read() As Boolean Return edtEditor.ReadOnly End Public Sub GetState() As String Return CStr($hEditor.Column) & "." & CStr($hEditor.Line) End Public Sub SetState(sState As String) Dim aState As String[] = Split(sState, ".") GotoCenter(CInt(aState[1]), CInt(aState[0])) End Private Sub InitEditor(hEditor As TextEditor, Optional bNoView As Boolean) With hEditor .Border = False .Mode = edtEditor.Mode .Highlight = edtEditor.Highlight '.Flags[Editor.Highlight] = True .ReadOnly = edtEditor.ReadOnly .TabSize = edtEditor.TabSize .ShowIcon = True .Wrap = edtEditor.Wrap .TabIndent = edtEditor.TabIndent '.Flags[Editor.ShowCursorPosition] = edtEditor.Flags[Editor.ShowCursorPosition] If Not bNoView Then .View = edtEditor .ReadConfig(True) End With End Private Sub SetViewMode(iViewMode As Integer) If $iViewMode = iViewMode Then iViewMode = VIEWMODE_NORMAL $iViewMode = iViewMode If $iViewMode <> VIEWMODE_NORMAL And If Not $hEditor1 Then $hEditor1 = New TextEditor(Me) As "Editors" InitEditor($hEditor1) $hEditor2 = New TextEditor(Me) As "Editors" InitEditor($hEditor2) FSearch.OnNewForm(Me) Endif Select Case $iViewMode Case VIEWMODE_NORMAL edtEditor.Show splHorizontal.Hide splVertical.Hide edtEditor.GotoCenter($hEditor.Column, $hEditor.Line) $hEditor = edtEditor Case VIEWMODE_HORIZONTAL $hEditor1.Reparent(splHorizontal) $hEditor2.Reparent(splHorizontal) edtEditor.Hide splHorizontal.Show splVertical.Hide $hEditor1.GotoCenter($hEditor.Column, $hEditor.Line) $hEditor2.GotoCenter($hEditor.Column, $hEditor.Line) $hEditor = $hEditor1 Case VIEWMODE_VERTICAL $hEditor1.Reparent(splVertical) $hEditor2.Reparent(splVertical) edtEditor.Hide splHorizontal.Hide splVertical.Show $hEditor1.GotoCenter($hEditor.Column, $hEditor.Line) $hEditor2.GotoCenter($hEditor.Column, $hEditor.Line) $hEditor = $hEditor1 End Select $hEditor.SetFocus Form_Arrange Editors_Cursor End Public Sub mnuNoSplit_Click() SetViewMode(VIEWMODE_NORMAL) End Public Sub mnuHorizontalSplit_Click() SetViewMode(VIEWMODE_HORIZONTAL) End Public Sub mnuVerticalSplit_Click() SetViewMode(VIEWMODE_VERTICAL) End Public Sub mnuDefinition_Click() FindDefinition End Public Sub mnuLastPosition_Click() CPosition.MovePrevious End Public Sub GetFoldedProc() As Integer[] Dim aFold As New Integer[] Dim iLine As Integer Do If Not $hEditor[iLine].Expanded Then 'DEBUG Name;; iLine aFold.Add(iLine) Endif iLine = $hEditor.FindNextLimit(iLine) If iLine < 0 Then Break Loop Return aFold End Public Sub SetFoldedProc(aFold As Integer[]) Dim iLine As Integer $hEditor.ExpandAll For Each iLine In aFold 'DEBUG Name;; iLine $hEditor[iLine].Expanded = False Next End ' Public Sub mnuStartup_Click() ' ' If mnuStartup.Checked Then Return ' mnuStartup.Checked = True ' Project.DefineStartup(Path) ' ' End Public Sub mnuPasteAsString_Click() FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_STRING) End Public Sub mnuPasteAsStringSplit_Click() FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_STRING_SPLIT) End Public Sub mnuPasteAsComment_Click() FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_COMMENT) End Public Sub panToolBar_Configure() UpdateMenu UpdateDiffAction Project.UpdateLockedAction(Me) If $sModule Then 'Action[".show-form"].Picture = Project.GetFileIcon(File.SetExt(Path, $sModule), 16) btnForm.ToolTip = CModule[$sModule].Name btnForm.Show mnuForm.Show Else btnForm.Hide mnuForm.Hide Endif End ' Private Sub ResizeProcList() ' ' panProc.Resize(btnProc.W, Min(panProc.Parent.ClientH - panProc.Y + 1, gvwProc.Rows.Count * gvwProc.Rows.H + 2)) ' ' End Private Sub ToggleProcList() Dim iCurrent As Integer Dim iLine As Integer FillProcCombo iCurrent = $aProc.Find(btnProc.Text) iCurrent = FProcedureList.Popup(Me, Me.Name, $aProc, iCurrent, btnProc.ScreenX, btnProc.ScreenY + btnProc.H, btnProc.W, Me.ClientH - panToolbar.H - Desktop.Scale) $hEditor.SetFocus() If iCurrent >= 0 Then Try iLine = $cProc[$aProc[iCurrent]] If Not Error Then GotoFunction(iLine) Endif End Public Sub btnProc_Click() ToggleProcList Stop Event End ' Public Sub gvwProc_LostFocus() ' ' panProc.Hide ' ' End ' ' Public Sub gvwProc_Data(Row As Integer, Column As Integer) ' ' Dim cSymbol As Collection ' Dim hSymbol As CSymbolInfo ' Dim sName As String ' ' 'Dim hColor As Color ' ' Try sName = $aProc[Row] ' If Not sName Then Return ' ' cSymbol = CComponent.GetClassSymbols(Me.Name) ' hSymbol = cSymbol[sName] ' ' gvwProc.Data.Text = sName ' If hSymbol Then ' If hSymbol.Kind = "M" Then gvwProc.Data.Font.Bold = True ' If hSymbol.NotPublic Then ' 'hColor = Color(Color.Foreground) ' 'hColor.Value = 255 - (255 - hColor.Value) * 0.6 ' gvwProc.Data.Foreground = Color.Lighter(Color.Foreground) ' Endif ' 'gvwProc.Data.Picture = Picture[hSymbol.GetIcon()] ' Else ' gvwProc.Data.Foreground = Color.Lighter(Color.Foreground) ' Endif ' If Left(sName) = "_" Then ' 'gvwProc.Data.Picture = Picture["img/16/point.png"] ' 'gvwProc.Data.Foreground = Color.Lighter(Color.Foreground) ' Else If InStr(sName, "_") Then ' 'gvwProc.Data.Picture = Picture["img/16/event.png"] ' gvwProc.Data.Font.Italic = True ' Endif ' ' If sName = btnProc.Text Then ' gvwProc.Data.Background = Color.LightBackground ' Endif ' ' End ' ' Public Sub gvwProc_Click() ' ' Dim iLine As Integer ' ' Try iLine = $cProc[$aProc[gvwProc.Row]] ' GotoProc(iLine) ' ' End ' ' Public Sub gvwProc_MouseMove() ' ' Dim iRow As Integer = gvwProc.RowAt(Mouse.Y) ' ' Try gvwProc.Rows[iRow].Selected = True ' ' End ' ' Public Sub btnProc_DblClick() ' ' btnProc_MouseDown ' ' End '' Update a control name and its event handler in the source code when it is renamed Public Sub RenameControl(sOld As String, sNew As String) Dim iLine As Integer Dim sLine As String Dim aSym As String[] Dim iInd As Integer Dim sSym As String Dim bChange As Boolean Dim bInProc As Boolean sOld = UCase(sOld) $hEditor.Begin For iLine = 0 To $hEditor.Count - 1 sLine = $hEditor[iLine].Text aSym = Highlight.Analyze(sLine) bChange = False If Not bInProc Then If IsCurrentProc() Then bInProc = True Else Continue Endif Else If IsCurrentEndProc() Then bInProc = False Continue Endif Endif If aSym.Count Then If aSym[0] = "Dim" Then Continue Endif For iInd = aSym.Max DownTo 0 If Highlight.Types[iInd] <> Highlight.Symbol Then Continue sSym = UCase(aSym[iInd]) If sSym <> sOld Then If Not (sSym Begins (sOld & "_")) Then Continue Else If iInd > 0 Then sSym = aSym[iInd - 1] If sSym = "." Then If iInd <= 1 Or If aSym[iInd - 2] <> "ME" Then Continue Else If sSym = "!" Or If sSym = "AS" Or If sSym = "NEW" Then Continue Endif Endif Endif sLine = Left$(sLine, Highlight.Positions[iInd]) & sNew & Mid$(sLine, Highlight.Positions[iInd] + Len(sOld) + 1) bChange = True Next If bChange Then $hEditor[iLine].Text = sLine Next $hEditor.End End Public Sub GetText() As String Return $hEditor.Text End Public Sub GetPosition() As Integer Return $hEditor.GetPosition() End Public Sub SetPosition(hResult As CSearchResult, Optional bJustCheck As Boolean) As Boolean Dim bResult As Boolean Dim sWhere As String If FSearch.CurrentProcedure Then bResult = $hEditor.SetPosition(hResult, True) If Not bResult Then If FSearch.CurrentProcedureName <> GetProcAt(hResult.Line) Then bResult = True Endif If Not bResult And If Not bJustCheck Then $hEditor.SetPosition(hResult, False) Else bResult = $hEditor.SetPosition(hResult, bJustCheck) Endif If bJustCheck And If Not bResult Then sWhere = GetProcAt(hResult.Line) If Not sWhere Then sWhere = ("(Declarations)") hResult.Location = sWhere Endif Return bResult End Public Sub Replace(sReplace As String) As Boolean Return $hEditor.Replace(sReplace) End Public Sub GetSelection() As String Return $hEditor.GetSelection() End Public Sub mnuInsertColor_Click() $hInsertColor.Insert End Public Sub mnuBreakpoint_Click() If Not CanSetBreakpoint($hEditor.Line) Then Return Design.SetBreakpoint(Me.Name & "." & CStr($hEditor.Line), Not HasBreakpoint($hEditor.Line)) End Public Sub mnuWatch_Click() WatchExpression FDebugInfo.ShowDebugging End Public Sub mnuUntil_Click() RunUntil End Public Sub mnuPretty_Click() MPrettyCode.Run(Me) End Public Sub mnuLowerCase_Click() If $hEditor.ReadOnly Then Return $hEditor.LowerCase End Public Sub mnuUpperCase_Click() If $hEditor.ReadOnly Then Return $hEditor.UpperCase End Public Sub GetFunctionSource(Optional sFunc As String) As String Dim sCode As String Dim iLine As Integer Dim sLine As String If sFunc Then FillProcCombo Try iLine = $cProc[sFunc] If Error Then Return Endif sLine = $hEditor[iLine].Text Do sCode &= sLine & "\n" Inc iLine If iLine >= $hEditor.Count Then Break sLine = $hEditor[iLine].Text If IsProc(sLine) Then Break Loop Return sCode End Private Sub FindNextBracket(aSym As String[], I As Integer, sCar1 As String, sCar2 As String) As Integer Dim iLevel As Integer While I < aSym.Count If aSym[I] = sCar1 Then Inc iLevel Else If aSym[I] = sCar2 Then Dec iLevel If iLevel = 0 Then Break Endif Inc I Wend Return I End Private Sub GetExpressionTypeWithEval(aSym As String[], aType As Integer[]) As String Dim I, I2, N As Integer Dim cExpr As New Collection Dim sExpr As String Dim sType As String Dim hSymbol As CSymbolInfo Dim hType As CDatatype Dim vVal As Variant Dim bMakeArray As Boolean While I < aSym.Count hType = Null hSymbol = Null sType = "" If aType[I] = Highlight.Keyword Then If aSym[I] = "ME" Then sType = GetSymbolType("ME") Else If aSym[I] = "SUPER" Then sType = GetSymbolType("SUPER") Else If aSym[I] = "LAST" Then sType = "o" Endif Else If aType[I] = Highlight.Symbol Then If I = 0 Or If aSym[I - 1] <> "." Then If I < aSym.Max And If aSym[I + 1] = "." Then sType = GetSymbolType(aSym[I], True) Else sType = GetSymbolType(aSym[I]) If $hSymbol And If $hSymbol.IsFunction And If I < aSym.Max And If aSym[I + 1] = "(" Then I = FindNextBracket(aSym, I, "(", ")") Endif Endif Endif 'If $bLastStatic Then sType = "" Else If aType[I] = Highlight.Function Then I2 = FindNextBracket(aSym, I, "(", ")") hSymbol = Project.Documentation.GetClassSymbols(".")[aSym[I]] Try sType = hSymbol.Type If sType Then I = I2 Else If aSym[I] = "[" Then bMakeArray = True If I > 0 Then If aType[I - 1] = Highlight.Symbol Or If aSym[I - 1] = ")" Or If aSym[I - 1] = "ME" Or If aSym[I - 1] = "SUPER" Then bMakeArray = False Endif If bMakeArray Then I2 = FindNextBracket(aSym, I, "[", "]") sExpr &= "CDatatype.__Make(" aSym.Add(")", I2 + 1) aType.Add(Highlight.Operator, I2 + 1) Endif Endif If sType Then Inc N sExpr &= " __" & CStr(N) cExpr["__" & CStr(N)] = CDatatype.__Get(sType) Else If InStr(".!()[],;", aSym[I]) = 0 Then sExpr &= " " sExpr &= aSym[I] Endif Inc I Wend 'Print sExpr vVal = Eval(sExpr, cExpr) Try hType = vVal If Error Then Select TypeOf(vVal) Case gb.Boolean Return "b" Case gb.Byte Return "c" Case gb.Date Return "d" Case gb.Float Return "f" Case gb.Integer Return "i" Case gb.Long Return "l" Case gb.Object Return "o" Case gb.Pointer Return "p" Case gb.Short Return "h" Case gb.Single Return "g" Case gb.String Return "s" Case gb.Variant Return "v" End Select Else Return hType.__GetType() Endif Catch 'Debug Error.Where; ":"; Error.Text End Private Sub AddLocalVariable(sName As String, sType As String) Dim iProc As Integer = GetCurrentProcLine($hEditor.Line) Dim iLine As Integer Dim I As Integer Dim sLine As String Dim iIndent As Integer = Project.TabSize Dim X As Integer Dim Y As Integer X = $hEditor.Column Y = $hEditor.Line I = iProc Do Inc I If I >= ($hEditor.Line - 1) Then Break sLine = Trim(Highlight.Purge($hEditor[I].Text)) If sLine And If Left(sLine) <> "'" Then Break Loop iLine = I Do If I >= ($hEditor.Line - 1) Then Break sLine = Trim(Highlight.Purge($hEditor[I].Text)) If sLine And If Left(sLine) <> "'" Then Highlight.Analyze(sLine) If Highlight.Symbols[0] = "DIM" Then iIndent = GetIndent($hEditor[I].Text) Else If GetIndent($hEditor[I].Text) <= iIndent Then Break Endif iLine = I + 1 Endif Inc I Loop sLine = Space$(iIndent) & "Dim " & sName & " As " & sType & "\n" Inc Y If Trim($hEditor[iLine].Text) Then sLine &= Space$(iIndent) & "\n" Inc Y Endif If iLine = (iProc + 1) Then sLine = "\n" & sLine Inc Y Endif $hEditor.Goto(0, iLine) $hEditor.Insert(sLine) $hEditor.Goto(X, Y) End Private Sub AddGlobalVariable(sName As String, sType As String, bStatic As Boolean) Dim I, iLast As Integer Dim sLine As String Dim X As Integer Dim Y As Integer X = $hEditor.Column Y = $hEditor.Line For I = 0 To $hEditor.Count - 1 sLine = Trim(Highlight.Purge($hEditor[I].Text)) If IsProc(sLine) Then Break If sLine And If sLine <> "'" Then iLast = I Next sLine = "" If bStatic Then sLine = "Static " sLine &= "Private " & sName & " As " & sType & "\n" Inc Y If iLast = 0 Then sLine = "\n" & sLine Inc Y Endif $hEditor.Goto(0, iLast + 1) $hEditor.Insert(sLine) $hEditor.Goto(X, Y) End Private Sub CreateLocalVariable() As Boolean Dim aSym As String[] = Highlight.Symbols.Copy() Dim aType As Integer[] = Highlight.Types.Copy() Dim sName As String Dim sType As String Dim I As Integer If aSym.Count < 2 Then Return If aSym[0] = "TRY" Then aSym.Remove(0) aType.Remove(0) Endif If aSym.Count < 2 Then Return If aSym[0] = "IF" Or If aSym[0] = "ELSE" Then I = aSym.Find("THEN") + 1 If I <= 0 Then Return aSym.Remove(0, I) aType.Remove(0, I) Endif ' Assignment If aSym.Count >= 3 And If aType[0] = Highlight.Symbol And If Len(aSym[1]) <= 2 And If Right(aSym[1]) = "=" Then sName = aSym[0] sType = GetSymbolType(sName) If sType Then Return aSym.Remove(0, 2) aType.Remove(0, 2) If aSym[0] = "NEW" Then If aSym.Count >= 2 Then sType = aSym[1] If aSym.Count >= 3 And If aSym[2] = "[" Then sType = Left(sType) & LCase(Mid$(sType, 2)) & "[]" Endif Else If aSym[0] = "OPEN" Or If aSym[0] = "PIPE" Or If aSym[0] = "LOCK" Or If aSym[0] = "MEMORY" Then sType = "File" Else If aSym[0] = "SHELL" Or If aSym[0] = "EXEC" Then sType = "Process" Else If aSym[0] = "CLOSE" Then sType = "s" Else If aSym[0] = "RAISE" sType = "b" Else If aSym[0] = "READ" And If aSym.Count >= 4 Then If aSym[aSym.Max - 1] = "AS" And If aType[aSym.Max] = Highlight.DataType Then sType = CSymbolInfo.NameToType(aSym[aSym.Max]) Else sType = "s" Endif Else sType = GetExpressionTypeWithEval(aSym, aType) Endif ' For ... To Else If aSym.Count >= 6 And If aSym[0] = "FOR" And If aType[1] = Highlight.Symbol And If aSym[2] = "=" Then sName = aSym[1] sType = GetSymbolType(sName) If sType Then Return aSym.Remove(0, 3) aType.Remove(0, 3) For I = 0 To aSym.Max If aSym[I] = "TO" Or If aSym[I] = "DOWNTO" Then aSym.Remove(I, -1) aType.Remove(I, -1) Break Endif Next sType = GetExpressionTypeWithEval(aSym, aType) ' For Each ... In Else If aSym.Count >= 5 And If aSym[0] = "FOR" And If asym[1] = "EACH" And If aType[2] = Highlight.Symbol And If aSym[3] = "IN" Then sName = aSym[2] sType = GetSymbolType(sName) If sType Then Return aSym.Remove(0, 4) aType.Remove(0, 4) aSym.Insert([".", "_next", "(", ")"]) aType.Insert([Highlight.Operator, Highlight.Symbol, Highlight.Operator, Highlight.Operator]) sType = GetExpressionTypeWithEval(aSym, aType) ' Line Input Else If aSym.Count >= 3 And If aSym[0] = "LINE" And If aSym[1] = "INPUT" Then I = aSym.Max While I > 2 If aType[I] = Highlight.Symbol Then Break Dec I Wend If I > 2 Then sName = aSym[I] sType = GetSymbolType(sName) If sType Then Return sType = "s" Endif ' Inc & Dec Else If aSym.Count = 2 And If aSym[0] = "INC" Or aSym[0] = "DEC" Then sName = aSym[1] sType = GetSymbolType(sName) If sType Then Return sType = "i" ' Shell & Exec ... To Else If aSym.Count >= 3 And If aSym[0] = "SHELL" Or aSym[0] = "EXEC" And If aSym[aSym.Count - 2] = "TO" Then sName = aSym[aSym.Max] sType = GetSymbolType(sName) If sType Then Return sType = "s" Endif If sType Then $hEditor.Begin If Left(sName) = "$" Then AddGlobalVariable(sName, CSymbolInfo.GetType(sType), IsCurrentProcStatic()) Else AddLocalVariable(sName, CSymbolInfo.GetType(sType)) Endif $hEditor.End Return True Endif End Public Sub mnuBookmark_Show() $hBookmark.Update End Public Sub IsWordChar(sCar As String) As Boolean If Len(sCar) = 1 And If Asc(sCar) <= 32 Then Return False If IsDigit(sCar) Then Return True If InStr("_$", sCar) Then Return True If IsLetter(String.RemoveDiacritics(sCar)) Then Return True End Public Sub Action_Activate((Key) As String) As Boolean Select Case Key Case ".locked" Project.SetReadOnly(Path, Action[Key, Me].Value) Case ".run-me" Project.Run(False, 0, Me.Name) Case ".wrap" $hEditor.Wrap = mnuWrap.Value If $hEditor1 Then $hEditor1.Wrap = $hEditor.Wrap $hEditor2.Wrap = $hEditor.Wrap Endif ' Case ".tab-indent" ' $hEditor.TabIndent = mnuTabIndent.Value ' If $hEditor1 Then ' $hEditor1.TabIndent = $hEditor.TabIndent ' $hEditor2.TabIndent = $hEditor.TabIndent ' Endif Case ".diff" UpdateDiffMode Case Else Return True End Select End Public Sub Form_Close() Project.AddRecentFile(Me) End Public Sub Form_Open() Action[".wrap", Me].Value = Settings["/Editor/WrapTextByDefault", True] 'Action[".tab-indent", Me].Value = Settings["/Editor/TabIndentByDefault", False] End Public Sub GetPopupMenu() As Menu Return mnuEditor End Public Sub mnuEditor_Show() CreateMenu End Public Sub FindEventClass(sCtrl As String) As String Dim iLine As Integer Dim aLine As String[] Dim sClass As String Dim iPos As Integer Dim sLine As String Dim aEvent As String[] iLine = $hEditor.Line Do sLine = $hEditor[iLine].Text GoSub CHECK_LINE If iLine = 0 Then Return If IsProc(sLine) Then Break Dec iLine Loop iLine = 0 Do sLine = $hEditor[iLine].Text If IsProc(sLine) Then Break GoSub CHECK_LINE Inc iLine If iLine = $hEditor.Count Then Break Loop Return CHECK_LINE: aLine = Scan(sLine, "*NEW * AS \"*\"*") If aLine.Count <> 4 Then Return If LCase(aLine[2]) <> sCtrl Then Return sClass = aLine[1] iPos = InStr(sClass, "(") If iPos Then sClass = Left(sClass, iPos - 1) Try aEvent = Project.Documentation.Classes[sClass].Events If aEvent Then Return sClass Return End Public Sub btnInsertChar_Click() FInsertChar.Run($hEditor, btnInsertChar.ScreenX, btnInsertChar.ScreenY + btnInsertChar.H) End Public Sub mnuPrint_Click() MPrint.Run(edtEditor, Me.Title) End Private Sub UpdateDiffAction() Action[".diff", Me].Visible = Project.IsModified(Path) Action[".diff-next,.diff-previous", Me].Visible = Action[".diff", Me].Visible And Action[".diff", Me].Value End Private Sub UpdateDiffMode() If Action[".diff", Me].Value = $bDiffMode Then Return $bDiffMode = Action[".diff", Me].Value UpdateDiffAction If $bDiffMode Then Me.Save() If Not Action[".diff", Me].Visible Then $bDiffMode = False Action[".diff", Me].Value = False Return Endif $hEditor.EnterDiffModeWith(Path) Else $hEditor.LeaveDiffMode() Endif SetReadOnly End Public Sub btnDiffPrevious_Click() Dim Y As Integer Y = $hEditor.FindPreviousDiff($hEditor.Line) If Y >= 0 Then $hEditor.Goto($hEditor.Column, Y) End Public Sub btnDiffNext_Click() Dim Y As Integer Y = $hEditor.FindNextDiff($hEditor.Line) If Y >= 0 Then $hEditor.Goto($hEditor.Column, Y) End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FEditor.form000066400000000000000000000442611411575327000231240ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,199,80) Persistent = True Arrangement = Arrange.Vertical { mnuEditor Menu Enabled = False { mnuUndo Menu Action = ".undo" Text = ("Undo") Picture = Picture["icon:/small/undo"] Shortcut = "Ctrl+Z" } { mnuRedo Menu Action = ".redo" Text = ("Redo") Picture = Picture["icon:/small/redo"] Shortcut = "Ctrl+Y" } { mnuSepUndo Menu } { mnuCut Menu Action = ".cut" Text = ("Cut") Picture = Picture["icon:/small/cut"] Shortcut = "Ctrl+X" } { mnuCopy Menu Action = ".copy" Text = ("Copy") Picture = Picture["icon:/small/copy"] Shortcut = "Ctrl+C" } { mnuPaste Menu Action = ".paste" Text = ("Paste") Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+V" } { mnuAdvanced Menu Text = ("Advanced") { mnuUpperCase Menu Action = ".ucase" Text = ("Upper case") Picture = Picture["icon:/small/text-upper"] Shortcut = "Ctrl+Shift+U" } { mnuLowerCase Menu Action = ".lcase" Text = ("Lower case") Picture = Picture["icon:/small/text-lower"] Shortcut = "Ctrl+Shift+L" } { Menu2 Menu } { mnuComment Menu Action = ".comment" Text = ("Comment") Picture = Picture["img/32/comment.png"] Shortcut = "Ctrl+K" } { mnuUncomment Menu Action = ".uncomment" Text = ("Uncomment") Picture = Picture["img/32/uncomment.png"] Shortcut = "Ctrl+U" } { mnuSepComment Menu } { mnuPasteSpecial Menu Action = ".paste-special" Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+Shift+V" } { mnuPretty Menu Action = ".pretty" Text = ("Format code") Picture = Picture["icon:/small/wizard"] Shortcut = "Ctrl+Shift+F" } { mnuSortProc Menu Text = ("Sort procedures") & "..." Picture = Picture["icon:/small/sort-ascent"] Visible = False } { Menu6 Menu } { mnuInsertColor Menu Action = ".color" Text = ("Insert color") & "..." Picture = Picture["icon:/small/color"] Shortcut = "Ctrl+Shift+C" } } { Menu3 Menu } { mnuSelectAll Menu Action = ".select-all" Text = Shortcut(("Select All"), "A") Picture = Picture["icon:/small/select-all"] Shortcut = "Ctrl+A" } { Menu1 Menu } { mnuGoto Menu Text = ("Go to") Visible = False } { mnuGotoLine Menu Action = ".goto-line" Text = ("Go to line") & "..." Shortcut = "Ctrl+G" } { mnuBookmark Menu Text = ("Bookmarks") } { mnuSepGoto Menu } { mnuDefinition Menu Action = ".find-definition" Text = ("Find definition") Picture = Picture["icon:/small/info"] Shortcut = "F2" } { mnuFindNext Menu Action = "find-next" Text = ("Find next") Picture = Picture["icon:/small/down"] Shortcut = "F3" } { mnuFindPrevious Menu Action = "find-previous" Text = ("Find previous") Picture = Picture["icon:/small/up"] Shortcut = "Shift+F3" } { mnuSep4 Menu } { mnuEditorView Menu Text = ("View") { mnuWrap Menu Action = ".wrap" Text = ("Automatic word wrap") Picture = Picture["icon:/small/wrap"] Toggle = True } { mnuNoSplit Menu Action = ".view-nosplit" Text = ("No split") Picture = Picture["icon:/small/view-normal"] } { mnuHorizontalSplit Menu Action = ".view-hsplit" Text = ("Horizontal split") Picture = Picture["icon:/small/view-split-h"] Shortcut = "Ctrl+H" } { mnuVerticalSplit Menu Action = ".view-vsplit" Text = ("Vertical split") Picture = Picture["icon:/small/view-split-v"] Shortcut = "Ctrl+J" } } { Menu5 Menu } { mnuUntil Menu Text = Shortcut(("Run until current line"), "u") Picture = Picture["icon:/small/jump"] Shortcut = "Shift+F5" } { mnuBreakpoint Menu Action = ".break" Text = Shortcut(("Toggle breakpoint"), "b") Picture = Picture["icon:/small/halt"] Shortcut = "F9" } { mnuWatch Menu Action = ".watch" Text = Shortcut(("Watch expression"), "W") Picture = Picture["icon:/small/watch"] } { mnuSepBookmark Menu } { mnuForm Menu Action = ".show-form" Text = ("Open form") Picture = Picture["icon:/small/right"] Shortcut = "F12" } { mnuRun Menu Action = ".run-me" Text = ("Run this class") Picture = Picture["icon:/small/play"] Shortcut = "Alt+F5" } { mnuSep5 Menu } { mnuLocked Menu Action = ".locked" Text = ("Locked") Picture = Picture["icon:/small/lock"] Toggle = True } { mnuPrint Menu Text = ("Print") & "..." Picture = Picture["icon:/small/print"] Shortcut = "Ctrl+P" } { mnuReload Menu Action = ".reload" Text = ("Reload") Picture = Picture["icon:/small/revert"] } { mnuSave Menu Action = ".save" Text = ("Save") Picture = Picture["icon:/small/save"] Shortcut = "Ctrl+S" } { Menu7 Menu } { mnuClose Menu Action = ".close" Text = ("Close") Picture = Picture["icon:/small/close"] Shortcut = "Ctrl+W" } } { mnuPasteAs Menu { mnuPasteAsString Menu Action = ".paste-string" Text = ("Paste as string") } { mnuPasteAsStringSplit Menu Action = ".paste-string-split" Text = ("Paste as multi-line string") } { mnuPasteAsComment Menu Action = ".paste-comment" Text = ("Paste as comments") } { Menu4 Menu } { mnuPasteSpecial2 Menu mnuPasteSpecial Name = "mnuPasteSpecial2" Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] } } { panToolBar ToolBar MoveScaled(0,0,195,4) Key = "editor" Text = ("Editor") Separator = True { btnForm ToolButton mnuForm Name = "btnForm" MoveScaled(0,0,4,4) ToolTip = ("Form") Action = ".show-form" Picture = Picture["icon:/small/right"] } { btnDiff ToolButton MoveScaled(4,0,4,4) ToolTip = ("Show modifications") Action = ".diff" AutoResize = True Picture = Picture["img/32/modified.png"] Toggle = True } { btnDiffPrevious ToolButton MoveScaled(7,0,4,4) ToolTip = ("Previous modification") Action = ".diff-previous" Picture = Picture["icon:/small/rewind"] } { btnDiffNext ToolButton MoveScaled(11,0,4,4) ToolTip = ("Next modification") Action = ".diff-next" Picture = Picture["icon:/small/forward"] } { Separator2 Separator MoveScaled(15,0,1,4) } { btnSave ToolButton mnuSave Name = "btnSave" MoveScaled(16,0,4,4) ToolTip = ("Save") Action = ".save" Picture = Picture["icon:/small/save"] } { btnReload ToolButton mnuReload Name = "btnReload" MoveScaled(19,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/refresh"] } { btnPrint ToolButton mnuPrint Name = "btnPrint" MoveScaled(22,0,4,4) ToolTip = ("Print") Action = ".print" Picture = Picture["icon:/small/print"] } { ToolButton39 ToolButton MoveScaled(25,0,4,4) Visible = False ToolTip = ("Run this class") Action = ".run-me" Picture = Picture["icon:/small/play"] } { Separator4 Separator MoveScaled(28,0,1,4) } { btnUndo ToolButton mnuUndo Name = "btnUndo" MoveScaled(29,0,4,4) ToolTip = ("Undo") Action = ".undo" Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton mnuRedo Name = "btnRedo" MoveScaled(32,0,4,4) ToolTip = ("Redo") Action = ".redo" Picture = Picture["icon:/small/redo"] } { Separator3 Separator MoveScaled(36,0,1,4) } { btnCut ToolButton mnuCut Name = "btnCut" MoveScaled(37,0,4,4) Visible = False ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton mnuCopy Name = "btnCopy" MoveScaled(40,0,4,4) Visible = False ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { btnPaste MenuButton mnuPaste Name = "btnPaste" MoveScaled(43,0,6,4) ToolTip = ("Paste") Action = ".paste" Picture = Picture["icon:/small/paste"] Border = False Menu = "mnuPasteAs" } { btnPasteSpecial ToolButton mnuPasteSpecial Name = "btnPasteSpecial" MoveScaled(48,0,16,4) Visible = False ToolTip = ("Paste special") Action = ".paste-special" AutoResize = True Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] } { btnBookmark MenuButton MoveScaled(63,0,6,4) Visible = False ToolTip = ("Bookmarks") Action = ".bookmark" Picture = Picture["icon:/small/bookmark"] Border = False Menu = "mnuBookmark" } { btnInsertColor MenuButton MoveScaled(68,0,6,4) ToolTip = ("Insert color") Action = ".color" Picture = Picture["icon:/small/color"] Border = False } { btnInsertDate MenuButton MoveScaled(73,0,6,4) ToolTip = ("Insert today's date") Action = ".date" Picture = Picture["icon:/small/calendar"] Border = False MenuOnly = True } { btnInsertChar MenuButton MoveScaled(78,0,6,4) ToolTip = ("Insert special character") Action = ".char" Picture = Picture["icon:/small/shortcut"] Border = False MenuOnly = True } { btnIndent ToolButton MoveScaled(83,0,4,4) Visible = False ToolTip = ("Indent") Action = ".indent" Picture = Picture["icon:/small/indent"] } { btnUnindent ToolButton MoveScaled(86,0,4,4) Visible = False ToolTip = ("Unindent") Action = ".unindent" Picture = Picture["icon:/small/unindent"] } { btnComment ToolButton mnuComment Name = "btnComment" MoveScaled(89,0,4,4) ToolTip = ("Comment") Action = ".comment" Picture = Picture["img/32/comment.png"] } { btnUncomment ToolButton mnuUncomment Name = "btnUncomment" MoveScaled(92,0,4,4) ToolTip = ("Uncomment") Action = ".uncomment" Picture = Picture["img/32/uncomment.png"] } { btnPretty ToolButton mnuPretty Name = "btnPretty" MoveScaled(95,0,4,4) Visible = False ToolTip = ("Make code pretty") Action = ".pretty" Picture = Picture["icon:/small/wizard"] } { btnBreakpoint ToolButton mnuBreakpoint Name = "btnBreakpoint" MoveScaled(98,0,4,4) ToolTip = ("Toggle breakpoint") Action = ".break" Picture = Picture["icon:/small/halt"] } { btnWatch ToolButton mnuWatch Name = "btnWatch" MoveScaled(101,0,4,4) ToolTip = ("Watch expression") Action = ".watch" Picture = Picture["icon:/small/watch"] } { btnDefinition ToolButton mnuDefinition Name = "btnDefinition" MoveScaled(104,0,4,4) Visible = False ToolTip = ("Find definition") Action = ".find-definition" Picture = Picture["icon:/small/info"] } { btnNoSplit ToolButton mnuNoSplit Name = "btnNoSplit" MoveScaled(107,0,4,4) Visible = False ToolTip = ("No split") Action = ".view-nosplit" Picture = Picture["icon:/small/view-normal"] } { btnHorizontalSplit ToolButton mnuHorizontalSplit Name = "btnHorizontalSplit" MoveScaled(110,0,4,4) Visible = False ToolTip = ("Horizontal split") Action = ".view-hsplit" Picture = Picture["icon:/small/view-split-h"] } { btnVerticalSplit ToolButton mnuVerticalSplit Name = "btnVerticalSplit" MoveScaled(113,0,4,4) Visible = False ToolTip = ("Vertical split") Action = ".view-vsplit" Picture = Picture["icon:/small/view-split-v"] } { Separator1 Separator MoveScaled(117,0,1,4) } { btnProc MenuButton MoveScaled(118,0,52,4) Mouse = Mouse.Pointing Action = ".proc" Text = ("Procedure list") Border = False MenuOnly = True } { Separator5 Separator MoveScaled(170,0,1,4) } { Panel2 Panel MoveScaled(172,0,5,4) Expand = True } { btnWrap ToolButton MoveScaled(185,0,4,4) ToolTip = ("Automatic word wrap") Action = ".wrap" Picture = Picture["icon:/small/wrap"] Toggle = True } { btnLocked ToolButton MoveScaled(189,0,4,4) ToolTip = ("Lock / unlock file") Action = ".locked" Picture = Picture["icon:/small/lock"] Toggle = True } } { Panel1 Panel MoveScaled(11,9,38,63) Background = Color.TextBackground Expand = True Arrangement = Arrange.Fill { edtEditor TextEditor Editors Name = "edtEditor" MoveScaled(4,1,24,16) Expand = True Border = False } { splHorizontal HSplit MoveScaled(3,19,22,18) Visible = False Expand = True } { splVertical VSplit MoveScaled(2,41,22,18) Visible = False Expand = True } } { timShowHelp #Timer #MoveScaled(62,16) } { timProc #Timer #MoveScaled(61,34) Delay = 50 } } # Gambas Action File 3.0 { Actions { Action bookmark Text = "Bookmarks" Picture = "icon:/small/bookmark" } { Action break Text = "Toggle breakpoint" Shortcut = "F9" Picture = "icon:/small/halt" } { Action char Text = "Insert special character" Picture = "icon:/small/shortcut" } { Action close Text = "Close" Shortcut = "Ctrl+W" Picture = "icon:/small/close" } { Action color Text = "Insert color" Shortcut = "Ctrl+Shift+C" Picture = "icon:/small/color" } { Action comment Text = "Comment" Shortcut = "Ctrl+K" Picture = "img/32/comment.png" } { Action copy Text = "Copy" Shortcut = "Ctrl+C" Picture = "icon:/small/copy" } { Action cut Text = "Cut" Shortcut = "Ctrl+X" Picture = "icon:/small/cut" } { Action date Text = "Insert today's date" Picture = "icon:/small/calendar" } { Action diff Text = "Show modifications" Picture = "img/32/modified.png" } { Action diff-next Text = "Next modification" Picture = "icon:/small/forward" } { Action diff-previous Text = "Previous modification" Picture = "icon:/small/rewind" } { Action find-definition Text = "Find definition" Shortcut = "F2" Picture = "icon:/small/info" } { Action find-next Text = "Find next" Shortcut = "F3" Picture = "icon:/small/down" } { Action find-previous Text = "Find previous" Shortcut = "Shift+F3" Picture = "icon:/small/up" } { Action goto-line Text = "Go to line" Shortcut = "Ctrl+G" } { Action indent Text = "Indent" Picture = "icon:/small/indent" } { Action lcase Text = "Lower case" Shortcut = "Ctrl+Shift+L" Picture = "icon:/small/text-lower" } { Action locked Text = "Locked" Shortcut = "" Picture = "icon:/small/lock" } { Action paste Text = "Paste" Shortcut = "Ctrl+V" Picture = "icon:/small/paste" } { Action paste-comment Text = "Paste as comments" Shortcut = "" } { Action paste-special Text = "Paste special" Shortcut = "Ctrl+Shift+V" Picture = "icon:/small/paste" } { Action paste-string Text = "Paste as string" Shortcut = "" } { Action paste-string-split Text = "Paste as multi-line string" Shortcut = "" } { Action pretty Text = "Format code" Shortcut = "Ctrl+Shift+F" Picture = "icon:/small/wizard" } { Action print Text = "Print" Picture = "icon:/small/print" } { Action proc Text = "Procedure list" Picture = "$MenuButton" } { Action redo Text = "Redo" Shortcut = "Ctrl+Y" Picture = "icon:/small/redo" } { Action reload Text = "Reload" Shortcut = "" Picture = "icon:/small/refresh" } { Action run-me Text = "Run this class" Shortcut = "Alt+F5" Picture = "icon:/small/play" } { Action save Text = "Save" Shortcut = "Ctrl+S" Picture = "icon:/small/save" } { Action select-all Text = "Select All" Shortcut = "Ctrl+A" Picture = "icon:/small/select-all" } { Action show-form Text = "Open form" Shortcut = "F12" Picture = "icon:/small/right" } { Action ucase Text = "Upper case" Shortcut = "Ctrl+Shift+U" Picture = "icon:/small/text-upper" } { Action uncomment Text = "Uncomment" Shortcut = "Ctrl+U" Picture = "img/32/uncomment.png" } { Action undo Text = "Undo" Shortcut = "Ctrl+Z" Picture = "icon:/small/undo" } { Action unindent Text = "Unindent" Picture = "icon:/small/unindent" } { Action view-hsplit Text = "Horizontal split" Shortcut = "Ctrl+H" Picture = "icon:/small/view-split-h" } { Action view-nosplit Text = "No split" Shortcut = "" Picture = "icon:/small/view-normal" } { Action view-vsplit Text = "Vertical split" Shortcut = "Ctrl+J" Picture = "icon:/small/view-split-v" } { Action watch Text = "Watch expression" Shortcut = "" Picture = "icon:/small/watch" } { Action wrap Text = "Automatic word wrap" Shortcut = "" Picture = "icon:/small/wrap" } } { Toolbars { Toolbar editor Text = "Editor" List = "show-form,diff,diff-previous,diff-next,save,reload,print,run-me,undo,redo,cut,copy,paste,paste-special,bookmark,color,date,char,indent,unindent,comment,uncomment,pretty,break,watch,find-definition,view-nosplit,view-hsplit,view-vsplit,proc,wrap,locked" Default = "show-form,diff,diff-previous,diff-next,|,save,reload,print,|,undo,redo,|,paste,color,date,char,comment,uncomment,break,watch,|,proc,|,~,wrap,locked" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FPasteSpecial.class000066400000000000000000000100511411575327000244030ustar00rootroot00000000000000' Gambas class file Static Private $aFormat As String[] Public Const MODE_NORMAL As Integer = 0 Public Const MODE_STRING As Integer = 1 Public Const MODE_STRING_SPLIT As Integer = 2 Public Const MODE_COMMENT As Integer = 3 Private $hEditor As TextEditor Private $iMode As Integer Public Sub Run(hEditor As TextEditor, Optional iMode As Integer = MODE_NORMAL) As Boolean Dim sFormat As String If Clipboard.Type = Clipboard.None Then Return True $hEditor = hEditor $iMode = iMode LoadFormats() If $aFormat.Count = 0 Then Return True If $aFormat.Count = 1 And If iMode Then sFormat = Clipboard.Paste($aFormat[0]) Select Case iMode Case MODE_STRING $hEditor.Insert(Quote(sFormat)) Case MODE_STRING_SPLIT PasteStringSplit(sFormat) Case MODE_COMMENT PasteComment(sFormat) End Select $hEditor.SetFocus Return Endif Return Not Me.ShowModal() End Public Sub btnOK_Click() Dim sFormat As String sFormat = $aFormat[lstFormat.Index] 'TRY sFormat = Clipboard.Paste(sFormat & ";charset=UTF-8") 'IF ERROR THEN sFormat = Clipboard.Paste(sFormat) sFormat = Clipboard.Paste(sFormat) If radPasteNormal.Value Then $hEditor.Insert(sFormat) Else If radPastePrint.Value Then PastePrint(sFormat) Else If radPasteComment.Value Then PasteComment(sFormat) Else If radPasteString.Value Then $hEditor.Insert(Quote(sFormat)) Else If radPasteStringSplit.Value Then PasteStringSplit(sFormat) Endif $hEditor.SetFocus Me.Close(True) Catch Message.Error(("Unable to paste text.") & "\n\n" & Error.Text) End Public Sub btnCancel_Click() Me.Close End Private Sub LoadFormats() Dim aFormat As String[] Dim iInd, iPos As Integer aFormat = Clipboard.Formats For iInd = 0 To aFormat.Max iPos = InStr(aFormat[iInd], ";") If iPos Then aFormat[iInd] = Trim(Left$(aFormat[iInd], iPos - 1)) Next iInd = 0 Do If iInd = aFormat.Max Then Break If aFormat[iInd] = aFormat[iInd + 1] Then aFormat.Remove(iInd) Else Inc iInd Endif Loop $aFormat = aFormat End Public Sub Form_Open() Dim aFormat As String[] Dim iInd As Integer If LCase($hEditor.Highlight) <> "gambas" Then radPasteNormal.Value = True panType.Hide Endif aFormat = $aFormat.Copy() For iInd = 0 To aFormat.Max aFormat[iInd] = MMime.GetName(aFormat[iInd]) Next lstFormat.List = aFormat lstFormat.Index = 0 Select Case $iMode Case MODE_STRING radPasteString.Value = True Case MODE_STRING_SPLIT radPasteStringSplit.Value = True Case MODE_COMMENT radPasteComment.Value = True End Select End Public Sub PastePrint(sText As String) Dim sLine As String Dim sIndent As String 'sText = Trim(sText) If Not sText Then Return sLine = $hEditor.Current.Text sIndent = Space$(Len(sLine) - Len(LTrim(sLine))) $hEditor.Begin $hEditor.Goto(0, $hEditor.Line) For Each sText In Split(sText, "\n") If sText Then $hEditor.Insert(sIndent & "PRINT " & Quote(sText) & "\n") Else $hEditor.Insert(sIndent & "PRINT\n") Endif Next $hEditor.End End Public Sub PasteComment(sText As String) Dim sLine As String Dim sIndent As String If Not sText Then Return sText = Replace(sText, "\t", Space$(Project.TabSize)) sLine = $hEditor.Current.Text sIndent = Space$(Len(sLine) - Len(LTrim(sLine))) $hEditor.Begin $hEditor.Goto(0, $hEditor.Line) For Each sText In Split(sText, "\n") $hEditor.Insert(sIndent & "' " & sText & "\n") Next $hEditor.End End Public Sub PasteStringSplit(sText As String) Dim sLine As String Dim sIndent As String Dim bNext As Boolean sLine = $hEditor.Current.Text sIndent = Space$(Len(sLine) - Len(LTrim(sLine))) $hEditor.Begin '$hEditor.Goto($hEditor.Line, 0) For Each sText In Split(sText, "\n") If bNext Then $hEditor.Insert("\n" & sIndent & " " & Quote(sText)) Else $hEditor.Insert(Quote(sText)) bNext = True Endif Next $hEditor.End End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FPasteSpecial.form000066400000000000000000000025071411575327000242500ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,49) Text = ("Paste special") Icon = Picture["icon:/small/paste"] Resizable = False Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True Padding = 8 { Label1 Label MoveScaled(1,1,48,4) Font = Font["Bold"] Text = ("Clipboard contents") } { lstFormat ListBox MoveScaled(1,5,66,17) } { panType Panel MoveScaled(1,23,66,20) Arrangement = Arrange.Vertical { radPasteNormal RadioButton MoveScaled(0,0,40,4) Text = ("Paste normally") Value = True } { radPasteComment RadioButton MoveScaled(0,4,40,4) Text = ("Paste as comments") } { radPastePrint RadioButton MoveScaled(0,8,40,4) Text = ("Paste with PRINT") } { radPasteString RadioButton MoveScaled(0,12,40,4) Text = ("Paste as string") } { radPasteStringSplit RadioButton MoveScaled(0,16,44,4) Text = ("Paste as multi-line string") } } { HBox1 HBox MoveScaled(1,44,66,4) Spacing = True { Panel1 Panel MoveScaled(1,0,4,4) Expand = True } { btnOK Button MoveScaled(15,0,14,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(30,0,14,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FProcedureList.class000066400000000000000000000211411411575327000246140ustar00rootroot00000000000000' Gambas class file Private $aProc As String[] Private $aFilter As Integer[] Private $iCurrent As Integer Private $iInit As Integer Private $sClass As String Private $sFind As String Private $dFind As Float Private $hModule As FEditor Private $bNoFilter As Boolean Static Public Sub Popup(hModule As FEditor, sClass As String, aProc As String[], iCurrent As Integer, X As Integer, Y As Integer, W As Integer, H As Integer) As Integer Dim iRet As Integer FProcedureList.Init(hModule, sClass, aProc, iCurrent, W, H) iRet = FProcedureList.ShowPopup(X, Y) - 1 FProcedureList.Exit Return iRet End Public Sub Init(hModule As FEditor, sClass As String, aProc As String[], iCurrent As Integer, W As Integer, H As Integer) $hModule = hModule $sClass = sClass ' Copy it, as it can disappear during the Editor_Change() method $aProc = aProc.Copy() $iInit = iCurrent $iCurrent = iCurrent panFilter.Visible = $sClass sepFilter.Visible = $sClass FilterProc Me.Resize(W, Min(H, $aProc.Count * gvwProc.Rows.H + panFilter.H + 3)) Try gvwProc[$iCurrent, 0].EnsureVisible $sFind = "" $dFind = Timer End Public Sub Exit() $hModule = Null End Public Sub gvwProc_MouseUp() If $iCurrent < 0 Then Me.Close(0) Else Me.Close($aFilter[$iCurrent] + 1) Endif End Private Sub SetCurrent(iCurrent As Integer, Optional bEnsureVisible As Boolean = True) Dim iOld As Integer = $iCurrent If iCurrent = iOld Then Return If iCurrent >= 0 And If $aProc[$aFilter[iCurrent]] = "-" Then Return $iCurrent = iCurrent If iOld >= 0 Then Try gvwProc.Rows[iOld].Refresh If iCurrent >= 0 Then gvwProc.Rows[iCurrent].Refresh If bEnsureVisible Then gvwProc[iCurrent, 0].EnsureVisible Endif End Public Sub gvwProc_MouseMove() SetCurrent(gvwProc.RowAt(Mouse.Y), True) End Public Sub gvwProc_Scroll() SetCurrent(gvwProc.RowAt(Mouse.ScreenY - gvwProc.ScreenY), False) End Private Sub FindProcedure() Dim iRow As Integer Dim N As Integer iRow = $iCurrent If iRow < 0 Then Inc iRow Else iRow = $aFilter[iRow] Endif Do If LCase($aProc[iRow]) Begins $sFind Then SetCurrent(iRow) 'Try gvwProc.Rows[iRow].Selected = True Break Endif Inc iRow If iRow >= $aProc.Count Then iRow = 0 Inc N If N >= $aProc.Count Then Break Loop End Public Sub gvwProc_KeyPress() If Key.Code = Key.Return Or If Key.Code = Key.Enter Or If Key.Code = Key.Space Then gvwProc_MouseUp Stop Event Else If Key.Code = Key.F6 Or If Key.Code = Key.Escape Then Me.Close Stop Event Else If Key.Text Then If (Timer - $dFind) >= 1 Then $sFind = "" $sFind &= String.LCase(Key.Text) $dFind = Timer FindProcedure Else If Key.Code = Key.Up Then If $iCurrent > 0 Then SetCurrent($iCurrent - 1) Stop Event Else If Key.Code = Key.Down Then If $iCurrent < (gvwProc.Rows.Count - 1) Then SetCurrent($iCurrent + 1) Stop Event Else If Key.Code = Key.Home Then SetCurrent(0) Stop Event Else If Key.Code = Key.End Then SetCurrent(gvwProc.Rows.Count - 1) Stop Event Endif End Public Sub Form_Activate() gvwProc.SetFocus 'Debug gvwProc.ScrollY End ' Public Sub gvwProc_Scroll() ' ' Dim iRow As Integer = gvwProc.RowAt(Mouse.ScreenY - gvwProc.ScreenY) ' ' Try gvwProc.Rows[iRow].Selected = True ' Debug gvwProc.ScrollY ' ' End Public Sub gvwProc_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, (Column) As Integer) Dim hSymbol As CSymbolInfo Dim sName As String Dim WT As Float Try sName = $aProc[$aFilter[Row]] If Not sName Then Return If sName Begins "-" Then sName = Mid$(sName, 2) Paint.Font.Grade = -2 WT = Paint.TextSize(sName).Width + Desktop.Scale Paint.FillRect(X - 2, Y + Height \ 2, Width + 4, 1, Color.Merge(Color.LightForeground, Color.TextBackground)) Paint.FillRect(X + (Width - WT) / 2, Y, WT, Height, Color.TextBackground) Paint.Background = Color.LightForeground Paint.DrawText(sName, X, Y, Width, Height, Align.Center) Return Endif If Row = $iCurrent Then Paint.FillRect(X, Y, Width, Height, Color.SetAlpha(Color.LightBackground, 192)) If $aFilter[Row] = $iInit Then Paint.FillRect(X, Y, Width, Height, Color.SetAlpha(Color.LightBackground, 128)) Paint.Background = Color.TextForeground Paint.Font.Bold = False Paint.Font.Italic = False If $sClass Then Project.Documentation.GetClassSymbols($sClass) Try hSymbol = $hModule.Scan[sName] If hSymbol And If hSymbol.Kind = "M" Then Paint.Font.Bold = True Endif If Left(sName) = "_" Then If CSymbolInfo.SpecialMethods.Exist(sName, gb.IgnoreCase) Then Paint.Background = Color.SelectedBackground Endif Else If InStr(sName, "_") Then 'gvwProc.Data.Picture = Picture["img/16/event.png"] Paint.Font.Italic = True Endif If hSymbol And If hSymbol.NotPublic Then Paint.Background = Color.Merge(Paint.Background, Color.TextBackground, 0.3) If $aFilter[Row] = $iInit Then Paint.DrawTextShadow(sName, X + 2, Y, Width - 4, Height, Align.Left) Paint.DrawText(sName, X + 2, Y, Width - 4, Height, Align.Left) ' If Row = $iInit Then ' Paint.Rectangle(X + 0.5, Y + 0.5, Width - 1, Height - 1) ' Paint.Background = Color.SelectedBackground ' Paint.Stroke ' Endif End Private Sub FilterProc() Dim sProc As String Dim bShowStatic As Boolean Dim bShowPublic As Boolean Dim bShowPrivate As Boolean Dim bShowEvent As Boolean Dim bShowProperty As Boolean Dim sGroup As String Dim I As Integer Dim bShowHidden As Boolean Dim sLastGroup As String Dim iCurrent As Integer If $bNoFilter Then Return If $iCurrent >= 0 Then If $aFilter Then Try iCurrent = $aFilter[$iCurrent] If Error Then iCurrent = -1 Else iCurrent = $iCurrent Endif Endif If panFilter.Visible Then bShowStatic = btnShowStatic.Value bShowPublic = btnShowPublic.Value bShowPrivate = btnShowPrivate.Value bShowEvent = btnShowEvent.Value bShowProperty = btnShowProperty.Value bShowHidden = btnShowHidden.Value Endif If bShowStatic Or If bShowPublic Or If bShowPrivate Or If bShowEvent Or If bShowProperty Or If bShowHidden Then $aFilter = New Integer[] sLastGroup = "" sGroup = "" For I = 0 To $aProc.Max sProc = $aProc[I] If sProc Begins "-" Then sGroup = Mid$(sProc, 2) Continue Endif If Not sGroup Then $aFilter.Add(I) Continue Endif If bShowPublic And If InStr(sGroup, "PUBLIC") = 0 Then Continue Else If bShowPrivate And If InStr(sGroup, "PRIVATE") = 0 Then Continue Else If bShowEvent And If InStr(sGroup, "EVENT") = 0 Then Continue Else If bShowProperty And If InStr(sGroup, "PROPERTY") = 0 Then Continue Else If bShowHidden And If InStr(sGroup, "HIDDEN") = 0 Then Continue Endif If bShowStatic Then If InStr(sGroup, "STATIC") = 0 Then Continue Else If InStr(sGroup, "STATIC") Then Continue Endif If sGroup <> sLastGroup Then $aFilter.Add(I - 1) sLastGroup = sGroup Endif $aFilter.Add(I) Next Else $aFilter = New Integer[$aProc.Count] For I = 0 To $aProc.Max $aFilter[I] = I Next Endif 'N = $H / Desktop.Scale / 4 ' If aProc.Count > N * 2 Then ' fSize = 0.8 ' Else If aProc.Count > N Then ' fSize = 0.9 ' Else ' fSize = 1 ' Endif Project.SetNormalFont(gvwProc, 0.9) gvwProc.Rows.Count = $aFilter.Count gvwProc.Rows.UnselectAll gvwProc.Columns.Count = 1 gvwProc.Refresh If iCurrent >= 0 Then $iCurrent = $aFilter.Find(iCurrent) Else $iCurrent = -1 Endif End Public Sub btnFilter_Click() Dim hChild As Control Dim hButton As ToolButton If Last <> btnShowStatic And If Last.Value Then For Each hChild In panFilter.Children Try hButton = hChild If Error Then Continue If Not hButton.Toggle Then Continue If hChild = btnShowStatic Then Continue If hChild <> Last Then hButton.Value = False Next Endif FilterProc End Public Sub btnShowAll_Click() Dim hChild As Control Dim hButton As ToolButton $bNoFilter = True For Each hChild In panFilter.Children Try hButton = hChild If Error Then Continue If Not hButton.Toggle Then Continue hButton.Value = False Next $bNoFilter = False FilterProc End Public Sub gvwProc_Leave() SetCurrent(-1) End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FProcedureList.form000066400000000000000000000040651411575327000244600ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,55,47) Persistent = True Resizable = False Arrangement = Arrange.Fill { panProc Panel MoveScaled(1,1,53,39) Background = Color.TextBackground Arrangement = Arrange.Vertical Border = Border.Plain { panFilter HBox MoveScaled(1,1,51,3) Font = Font["-2"] Background = Color.Background { btnShowStatic ToolButton btnFilter Name = "btnShowStatic" MoveScaled(0,0,6,3) #Translate = False AutoResize = True Text = "STATIC" Toggle = True } { btnShowPrivate ToolButton btnFilter Name = "btnShowPrivate" MoveScaled(6,0,6,3) #Translate = False AutoResize = True Text = "PRIVATE" Toggle = True } { btnShowPublic ToolButton btnFilter Name = "btnShowPublic" MoveScaled(13,0,6,3) #Translate = False AutoResize = True Text = "PUBLIC" Toggle = True } { btnShowEvent ToolButton btnFilter Name = "btnShowEvent" MoveScaled(19,0,5,3) #Translate = False AutoResize = True Text = "EVENT" Toggle = True } { btnShowProperty ToolButton btnFilter Name = "btnShowProperty" MoveScaled(25,0,8,3) #Translate = False AutoResize = True Text = "PROPERTY" Toggle = True } { btnShowHidden ToolButton btnFilter Name = "btnShowHidden" MoveScaled(34,0,6,3) #Translate = False AutoResize = True Text = "HIDDEN" Toggle = True } { Spring1 Spring MoveScaled(45,1,3,1) } { btnShowAll ToolButton MoveScaled(48,0,3,3) AutoResize = True Picture = Picture["icon:/tiny/clear"] } } { sepFilter Separator MoveScaled(9,5,20,0) } { gvwProc GridView MoveScaled(3,14,25,22) Tracking = True Mouse = Mouse.Pointing Expand = True Border = False Grid = False Padding = 0 } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FSignature.class000066400000000000000000000127231411575327000237770ustar00rootroot00000000000000' Gambas class file Static Private $hEditor As TextEditor Private $bUseHelp As Boolean Private $bShowHelp As Boolean Private $DX As Integer Private $DY As Integer Private $iMinW As Integer Private $iMinH As Integer Private $iMaxY As Integer Private $hSymbol As CSymbolInfo Private $iArrow As Integer Private $iCol As Integer Public Sub _new() webHelp.Zoom = 0.7 End Private Sub UpdateSignature(Optional hForm As FEditor) Dim iX, iY As Integer Dim hCont As Container panSignature.H = lblNewSignature.H If $bShowHelp And $bUseHelp Then MHelp.InitWebViewWith(webHelp, MHelp.TYPE_SYMBOL, $hSymbol.Name, $hSymbol.Class, "noimage") sepHelp.Show panHelp.Show panResizeTop.Show panResizeBottom.Show $iMinW = Max(128, lblNewSignature.W + 2 + btnHelp.W) $iMinH = Desktop.Scale * 24 Me.Resize(Max(Me.W, $iMinW), Max(Me.H, $iMinH)) Else sepHelp.Hide panHelp.Hide panResizeTop.Hide panResizeBottom.Hide If hForm Then Me.Resize(lblNewSignature.W + 4 + If($bUseHelp, btnHelp.W, 0), lblNewSignature.H + 2) Else Me.H = lblNewSignature.H + 2 Endif Endif iY = $hEditor.Y + $hEditor.ToPosY() + $hEditor.Current.Height If (iY + Me.Height) > ($hEditor.Y + $hEditor.H) Then iY = $hEditor.Y + $hEditor.ToPosY() - Me.Height If iY < 0 Then Me.Height += iY iY = 0 Endif panResizeBottom.Hide panResizeTop.Show sepHelp.Raise panSignature.Raise $iArrow = If($bShowHelp, Align.Bottom, Align.Top) Else panResizeBottom.Show panResizeTop.Hide sepHelp.Raise panHelp.Raise $iArrow = If($bShowHelp, Align.Top, Align.Bottom) Endif If $bUseHelp Then btnHelp.Refresh hCont = $hEditor.Parent iX = $hEditor.ToPosX($iCol) Do If hCont Is Form Then Break iX += hCont.X iY += hCont.Y hCont = hCont.Parent Loop iX -= 3 iX = Max(0, Min(iX, $hEditor.W - Me.Width)) If Not hForm Then Me.Move(iX, iY) Else If Me.Parent <> hForm Or If iX <> Me.X Or If iY <> Me.Y Or If Not Me.Visible Then Me.Reparent(hForm, iX, iY) Me.Show $hEditor.SetFocus Endif Endif Me.Raise FCompletion.FixPosition($hEditor) End Public Sub Position(hForm As FEditor) If VisibleFrom(hForm.GetEditor()) Then UpdateSignature(hForm) End Public Sub Open(hForm As FEditor, iCol As Integer, hSymbol As CSymbolInfo, iArg As Integer) Dim sSign As String Dim sName As String If hForm.GetEditor() <> $hEditor Then HideFrom($hEditor) $hEditor = hForm.GetEditor() sSign = hSymbol.GetSignature(True, iArg) If Not sSign Then Return lblSignature.Font = $hEditor.Font lblNewSignature.Font = $hEditor.Font $bShowHelp = False $bUseHelp = Settings["/ShowHelpInPopup", 1] btnHelp.Visible = $bUseHelp sName = hSymbol.Name If Left$(sName) = "_" Then sName = hSymbol.Class sSign = "" & sName & "" & sSign lblNewSignature.W = Max(64, $hEditor.W - 64) lblNewSignature.Text = sSign lblNewSignature.Adjust 'lblSignature.AutoResize = FALSE 'lblSignature.W = lblNewSignature.W 'DEBUG lblSignature.W;; hEditor.W $hSymbol = hSymbol $iCol = iCol UpdateSignature(hForm) ' If $bShowHelp Then ' MHelp.InitWebViewWith(webHelp, MHelp.TYPE_SYMBOL, hSymbol.Name, hSymbol.Class, "noimage") ' sepHelp.Show ' webHelp.Show ' panRight.Show ' $iMinW = Max(128, lblNewSignature.W + 2 + panRight.W + btnHelp.W) ' $iMinH = Desktop.Scale * 24 ' Me.Resize(Max(Me.W, $iMinW), Max(Me.H, $iMinH)) ' Else ' sepHelp.Hide ' webHelp.Hide ' panRight.Hide ' Me.Resize(lblNewSignature.W + 2 + btnHelp.W, lblSignature.H + 2) ' Endif lblSignature.Text = sSign 'lblSignature.Adjust End Public Function ManageKey() As Boolean Select Case Key.Code Case Key.Escape Me.Hide Return True 'CASE Key.Backspace 'ME.Hide End Select End Public Sub lblSignature_MouseDown() Me.Hide End Public Sub panResizeBottom_MouseDown() $DX = Me.W - Mouse.ScreenX $DY = Me.H - Mouse.ScreenY End Public Sub panResizeBottom_MouseMove() Dim W, H As Integer W = Max($iMinW, $DX + Mouse.ScreenX) H = Max($iMinH, $DY + Mouse.ScreenY) Me.Resize(W, H) End Public Sub panResizeTop_MouseDown() $DX = Me.W - Mouse.ScreenX $DY = Me.Y - Mouse.ScreenY $iMaxY = Me.Y + Me.H - $iMinH End Public Sub panResizeTop_MouseMove() Dim W, Y As Integer W = Max($iMinW, $DX + Mouse.ScreenX) Y = Min($iMaxY, $DY + Mouse.ScreenY) Me.Move(Me.X, Y, W, Me.H + Me.Y - Y) End Public Sub Form_Close() $hEditor = Null End Public Sub HideFrom(hEditor As TextEditor) If $hEditor <> hEditor Then Return $hEditor = Null Me.Hide If FCompletion.VisibleFrom(hEditor) Then FCompletion.Position(hEditor) End Public Sub VisibleFrom(hEditor As TextEditor) As Boolean Return $hEditor = hEditor And Me.Visible End Public Sub webHelp_GotFocus() Try $hEditor.SetFocus End Public Sub btnHelp_MouseDown() $bShowHelp = Not $bShowHelp UpdateSignature End Public Sub btnHelp_Draw() If btnHelp.Hovered Then Draw.Foreground = Color.Blue Draw.Style.Arrow(Desktop.Scale \ 2, 0, btnHelp.W - Desktop.Scale, btnHelp.H, $iArrow) End Public Sub btnHelp_Enter() btnHelp.Refresh End Public Sub btnHelp_Leave() btnHelp.Refresh End Public Sub panHelp_Arrange() panResizeTop.Move(panHelp.W - panResizeTop.W, 0) panResizeBottom.Move(panHelp.W - panResizeBottom.W, panHelp.H - panResizeBottom.H) panResizeTop.Raise panResizeBottom.Raise End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FSignature.form000066400000000000000000000023261411575327000236330ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,41,32) Visible = False Ignore = True Persistent = True Arrangement = Arrange.Fill { Panel1 Panel MoveScaled(1,1,39,30) Background = Color.TextBackground Arrangement = Arrange.Vertical Border = Border.Plain { panSignature HBox MoveScaled(1,1,36,4) { lblSignature TextLabel MoveScaled(0,0,24,4) Foreground = Color.TextForeground Expand = True Padding = 2 } { btnHelp DrawingArea MoveScaled(32,0,2,4) Mouse = Mouse.Pointing } } { sepHelp Separator MoveScaled(2,7,24,0) } { panHelp HBox MoveScaled(2,8,36,21) Expand = True { webHelp HelpView MoveScaled(3,3,20,9) Expand = True NoHeader = True } { panResizeTop Panel MoveScaled(32,2,2,2) Mouse = Mouse.SizeNESW Ignore = True } { panResizeBottom Panel MoveScaled(32,13,2,2) Mouse = Mouse.SizeNWSE Ignore = True } } { lblNewSignature TextLabel MoveScaled(2,21,33,4) Visible = False Foreground = Color.TextForeground Ignore = True Padding = 2 } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FTextEditor.class000066400000000000000000001202401411575327000241230ustar00rootroot00000000000000' Gambas class file ' ' Copyright (C) Benoît Minisini ' ' 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 St, Fifth Floor, ' Boston, MA 02110-1301 USA ' Public Path As String Public RichText As String Public Age As Integer Property Read ReadOnly As Boolean Static Private $aExt As String[] = ["htm", "html", "xml", "kml", "svg", "css", "webpage", "js", "c", "h", "cpp", "gbs", "rss", "md"] Private $hEditor As TextEditor Private $bNoHighlight As Boolean Private $bModule As Boolean Private $bConsole As Boolean Private $bShowComment As Boolean Private $bShowPretty As Boolean Private $bModify As Boolean Private $iViewMode As Integer Private Const VIEWMODE_NORMAL As Integer = 0 Private Const VIEWMODE_HORIZONTAL As Integer = 1 Private Const VIEWMODE_VERTICAL As Integer = 2 Private $hEditor1 As TextEditor Private $hEditor2 As TextEditor Private $hInsertColor As CInsertColor Private $hBookmark As CBookmark Private $hCompletion As CCompletion Private $hInsertDate As CInsertDate Private $cProc As Collection Private $aProc As String[] Private $bWebPage As Boolean Private $iLastLine As Integer Private $bDiffMode As Boolean Static Private $sDefaultStyleSheet As String Private Enum PREVIEW_NONE, PREVIEW_HTML, PREVIEW_MARKDOWN Private $hPreview As HelpView Private $iShowPreview As Integer Private $hTimerPreview As Timer Private $sTempPreview As String Private $bMovePreviewOnReady As Boolean Private $bPreviewReady As Boolean Private $aStyleSheet As String[] Private $iCurrentStyleSheet As Integer Public Sub _new(sPath As String, Optional bModule As Boolean) $iLastLine = -1 Path = sPath $hEditor = edtEditor If bModule Then mnuShowCode.Show Me.Name = File.BaseName(Path) Else mnuShowCode.Hide Me.Name = File.Name(Path) Endif $bModule = bModule End Public Sub GetEditor() As TextEditor Return $hEditor End Public Sub LoadFile() As Boolean Dim sExt As String With edtEditor .Clear .ShowBraces = True End With $bWebPage = False $bNoHighlight = True $bConsole = False $bShowComment = False $bShowPretty = False $iShowPreview = PREVIEW_NONE If Path Then sExt = LCase(File.Ext(Path)) If $aExt.Exist(sExt) Then Select Case sExt Case "css" $bShowPretty = True Case "webpage" $bWebPage = True Case "js" $bShowPretty = True Case "c" $bShowPretty = True Case "cpp", "h" $bShowPretty = True Case "gbs" $bShowPretty = True Case "md" $iShowPreview = PREVIEW_MARKDOWN Case "html", "htm" $iShowPreview = PREVIEW_HTML End Select edtEditor.Mode = TextEditor.GetModeFromPath(Path) $bShowComment = True '$bShowPretty = True $bNoHighlight = False Else If sExt = "console" Then If File.Dir(Path) = File.Dir(Temp$()) Then $bConsole = True Endif Endif $hInsertColor = New CInsertColor(Me, btnInsertColor) $hBookmark = New CBookmark(Me, btnBookmark, mnuBookmark) $hCompletion = New CCompletion(Me) $hInsertDate = New CInsertDate(Me, btnInsertDate) ReadConfig Reload $bModify = False edtEditor.SetFocus SetReadOnly End Public Sub Form_Arrange() Dim iToolbarOffset As Integer 'If we add the ability to hide the toolbar then uncomment this code 'IF $bToolbar THEN ' panToolBar.Move(0, 0, ME.CLientW) ' iToolbarOffset = panToolBar.H 'ELSE ' iToolbarOffset = 0 'ENDIF iToolbarOffset = panToolBar.H Select Case $iViewMode Case 0 edtEditor.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) Case 1 splHorizontal.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) Case 2 splVertical.Move(0, iToolbarOffset, Me.ClientW, Me.ClientH - iToolbarOffset) End Select End Public Sub ReadConfig() Project.SetSmallFont(panToolbar) Project.SetSmallFont(tlbPreview) edtEditor.ReadConfig(True) 'edtEditor.Parent.Background = edtEditor.Styles[Highlight.Background].Color If $hEditor1 Then $hEditor1.ReadConfig(True) If $hEditor2 Then $hEditor2.ReadConfig(True) $hCompletion.ReadConfig End Public Function Save(Optional bForce As Boolean) As Boolean 'Project.Config.WriteString("/Window" &/ Name &/ "Pos", ' CStr(ME.X) & "," & CStr(ME.Y) & "," & CStr(ME.Width) & "," & CStr(ME.Height)) Dim sPath As String If Not $bModify And If Not bForce Then Return $hCompletion.Hide sPath = Path Save.Begin(sPath) $hEditor.Save(sPath) ' TODO: Editor.Reset $bModify = False DrawTitle Save.End() UpdateDiffAction Catch Return Save.Error() End Public Sub GetTitle() As String If $bConsole Then Return Subst(("Console output #&1"), File.BaseName(Path)) End Private Sub DrawTitle() Project.DrawTitle(Me) End Public Sub Modify(Optional bReset As Boolean) If Project.ReadOnly Then Return Inc Project.TimeStamp Inc Age $bModify = Not bReset If $bModify Then FSearch.OnFileChange(Me.Path) DrawTitle End Public Function IsModified() As Boolean Return $bModify End Private Sub HasPreview() As Boolean Return panPreview.Visible End Public Sub Editors_Change() $cProc = Null Modify If HasPreview() Then $hTimerPreview.Restart End Private Sub InAlternate() As Boolean Dim sText As String = String.Left($hEditor.Current.Text, $hEditor.Column) Dim bAlt As Boolean Dim I As Integer Dim bQuote As Boolean Dim sCar As String bAlt = $hEditor.Current.InitialState.Alternate I = 1 While I <= String.Len(sText) sCar = String.Mid$(sText, I, 1) If bAlt Then If bQuote Then If sCar = "\\" Then Inc I Else If sCar = Chr$(34) Then bQuote = False Endif Else If sCar = Chr$(34) Then bQuote = True Else If String.Mid$(sText, I, 2) = "%>" Then bAlt = False Endif Endif Else If String.Mid$(sText, I, 2) = "<%" Then bAlt = True Inc I Endif Endif Inc I Wend Return bAlt End Private Sub FindCloseAlternate() As Boolean Dim sLine As String Dim I, J, A, B As Integer I = $hEditor.Line J = $hEditor.Column While I < $hEditor.Count sLine = $hEditor[I].Text A = String.InStr(sLine, "<%", J + 1) B = String.InStr(sLine, "%>", J + 1) If B > 0 And If A = 0 Or A > B Then Return True If A > 0 Then Return False Inc I J = 0 Wend End Public Sub Editors_KeyPress() If $hCompletion.OnKeyPress() Then Return If Key.Code = Key.Escape Then Action["find"].Value = False ' Else If Key.Code = Key.Return Then ' ' If Key.Control Then ' ' If Key.Shift Then ' If Editor.Lines[Editor.Line].Expanded Then ' Editor.CollapseAll ' Else ' Editor.ExpandAll ' Endif ' Else ' Editor.Lines[Editor.Line].Expanded = Not Editor.Lines[Editor.Line].Expanded ' Endif ' Stop Event ' ' Endif Endif If $hEditor.ReadOnly Then Return If Key.Code = Key.Return Or If Key.Code = Key.Enter Then If Key.Normal Then If $bWebPage Then If InAlternate() And If Not FindCloseAlternate() Then $hEditor.Insert("\n%>") $hEditor.Goto(0, $hEditor.Line) Stop Event Endif Endif Endif Else If Key.Code = Key.Insert Then Project.UpdateStatus() Endif End Public Sub Form_GotFocus() $hEditor.SetFocus End Public Sub Goto(iLine As Integer, Optional iColumn As Integer = -1) 'DEC iLine If iColumn < 0 Then iColumn = $hEditor.Column $hEditor.Goto(iColumn, iLine) End Public Sub GotoCenter(iLine As Integer, Optional iColumn As Integer = -1) Goto(iLine, iColumn) End Public Sub Editors_Menu() mnuEditor.Popup End Private Sub RefreshBackground() Dim aEditor As TextEditor[] = [$hEditor1, $hEditor2] Dim hEditor As TextEditor Dim bHasFocus As Boolean If aEditor.Exist($hEditor) Then For Each hEditor In aEditor If hEditor And If hEditor.HasFocus Then bHasFocus = True Break Endif Next For Each hEditor In aEditor If Not hEditor Then Continue hEditor.ReadConfig(True) If Not hEditor.HasFocus Then If bHasFocus Then MTheme.InitEditor(hEditor, True) $hEditor.ShowCurrent = False $hEditor.ShowModified = False Endif Next Endif End Public Sub Editors_GotFocus() $hEditor = Last Project.SetCurrentPopup(mnuEditor) RefreshBackground End Public Sub Editors_LostFocus() RefreshBackground End Public Sub mnuSave_Click() Save End ' PUBLIC SUB mnuFind_Click() ' ' DIM sSel AS String ' DIM iPos AS Integer ' ' sSel = Left$(Trim(edtEditor.Selection.Text), 64) ' iPos = Instr(sSel, gb.NewLine) ' IF iPos THEN sSel = Left$(sSel, iPos - 1) ' ' Project.FindForm.Find(sSel) ' ' END ' ' ' PUBLIC SUB mnuFindNext_Click() ' ' Project.FindForm.FindNext ' ' END ' ' ' PUBLIC SUB mnuFindPrevious_Click() ' ' Project.FindForm.FindPrevious ' ' END Public Sub Rename(sNewName As String, sNewPath As String) Me.Name = sNewName Path = sNewPath 'File.Dir(Path) &/ sNewName & "." & File.Ext(Path) DrawTitle End Public Sub mnuCut_Click() $hEditor.Cut End Public Sub mnuCopy_Click() $hEditor.Copy End Public Sub mnuPaste_Click() $hEditor.Paste $hEditor.SetFocus End ' Public Sub mnuPasteSpecial_Click() ' ' FPasteSpecial.Run($hEditor) ' ' End ' ' Public Sub mnuPasteAsString_Click() ' ' FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_STRING) ' ' End ' ' Public Sub mnuPasteAsStringSplit_Click() ' ' FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_STRING_SPLIT) ' ' End ' ' Public Sub mnuPasteAsComment_Click() ' ' FPasteSpecial.Run($hEditor, FPasteSpecial.MODE_COMMENT) ' ' End Public Sub mnuUndo_Click() $hCompletion.Hide $hEditor.Undo End Public Sub mnuRedo_Click() $hCompletion.Hide $hEditor.Redo End Public Sub mnuGotoLine_Click() Dim iLine As Integer iLine = FGotoLine.Run($hEditor.Line + 1) If iLine <= 0 Then Return GotoCenter(iLine - 1) End ' PUBLIC SUB mnuWordWrap_Click() ' ' edtEditor.Wrap = NOT edtEditor.Wrap ' mnuWordWrap.Checked = edtEditor.Wrap ' ' END Public Sub mnuSelectAll_Click() $hEditor.SelectAll End Public Sub SetReadOnly() Dim bReadOnly As Boolean If Project.ReadOnly Or If Project.Running Or If Project.IsReadOnly(Path) Then bReadOnly = True Endif edtEditor.ReadOnly = bReadOnly If $hEditor1 Then $hEditor1.ReadOnly = bReadOnly If $hEditor2 Then $hEditor2.ReadOnly = bReadOnly Project.UpdateLockedAction(Me) UpdateMenu DrawTitle End Public Sub OnProjectDebug() SetReadOnly End Public Sub OnShowString(sStr As String, bIgnoreCase As Boolean, bWordOnly As Boolean) edtEditor.HighlightString(sStr, bIgnoreCase, bWordOnly) If $hEditor1 Then $hEditor1.HighlightString(sStr, bIgnoreCase, bWordOnly) If $hEditor2 Then $hEditor2.HighlightString(sStr, bIgnoreCase, bWordOnly) End ' Private Sub AnalyzeCode(sText As String) As String ' ' Dim iInd As Integer ' Dim iPos As Integer ' Dim iLen As Integer ' ' If Not sText Then Return ' ' Highlight.Analyze(sText, True) ' ' iPos = 0 ' For iInd = 0 To Highlight.Symbols.Max ' ' If iPos < Highlight.Positions[iInd] Then ' Highlight.Add(Highlight.Normal, Highlight.Positions[iInd] - iPos) ' iPos = Highlight.Positions[iInd] ' Endif ' ' iLen = String.Len(Highlight.Symbols[iInd]) ' Highlight.Add(Highlight.Types[iInd], iLen) ' iPos += iLen ' ' Next ' ' If iPos < String.Len(Highlight.TextAfter) Then ' Highlight.Add(Highlight.Normal, String.Len(Highlight.TextAfter) - iPos) ' Endif ' ' Return Highlight.TextAfter ' ' End Public Sub Form_Activate() RefreshLineInfo(True) Project.SetCurrentPopup(mnuEditor) End Private Function ReadOnly_Read() As Boolean Return edtEditor.ReadOnly End Private Sub UpdateEndOfLine() Select Case edtEditor.EndOfLine Case gb.Windows mnuEolWindows.Checked = True btnEndOfLine.Text = mnuEolWindows.Text Case gb.Mac mnuEolMac.Checked = True btnEndOfLine.Text = mnuEolMac.Text Default mnuEolUnix.Checked = True btnEndOfLine.Text = mnuEolUnix.Text End Select End Public Sub Reload() Dim sText As String Dim sPath As String sPath = Path sText = File.Load(sPath) If $bNoHighlight Then If LTrim(sText) Like " VIEWMODE_NORMAL And If Not $hEditor1 Then $hEditor1 = New TextEditor(Me) As "Editors" InitEditor($hEditor1) $hEditor2 = New TextEditor(Me) As "Editors" InitEditor($hEditor2) FSearch.OnNewForm(Me) Endif Select Case $iViewMode Case VIEWMODE_NORMAL edtEditor.Show splHorizontal.Hide splVertical.Hide edtEditor.Goto($hEditor.Column, $hEditor.Line) $hEditor = edtEditor Case VIEWMODE_HORIZONTAL $hEditor1.Reparent(splHorizontal) $hEditor2.Reparent(splHorizontal) edtEditor.Hide splHorizontal.Show splVertical.Hide $hEditor1.Goto($hEditor.Column, $hEditor.Line) $hEditor2.Goto($hEditor.Column, $hEditor.Line) $hEditor = $hEditor1 Case VIEWMODE_VERTICAL $hEditor1.Reparent(splVertical) $hEditor2.Reparent(splVertical) edtEditor.Hide splHorizontal.Hide splVertical.Show $hEditor1.Goto($hEditor.Column, $hEditor.Line) $hEditor2.Goto($hEditor.Column, $hEditor.Line) $hEditor = $hEditor1 End Select $hEditor.SetFocus Form_Arrange Editors_Cursor End Public Sub mnuNoSplit_Click() SetViewMode(VIEWMODE_NORMAL) End Public Sub mnuHorizontalSplit_Click() SetViewMode(VIEWMODE_HORIZONTAL) End Public Sub mnuVerticalSplit_Click() SetViewMode(VIEWMODE_VERTICAL) End Public Sub mnuShowCode_Click() Project.OpenFile(Me.Name) End Public Sub GetText() As String Return $hEditor.Text End Public Sub GetPosition() As Integer Return $hEditor.GetPosition() End Public Sub SetPosition(hResult As CSearchResult, Optional bJustCheck As Boolean) As Boolean If bJustCheck Then hResult.Location = GetProcAt(hResult.Line) Endif Return $hEditor.SetPosition(hResult, bJustCheck) End Public Sub Replace(sReplace As String) As Boolean Return $hEditor.Replace(sReplace) End Public Sub GetSelection() As String Return $hEditor.GetSelection() End Public Sub mnuInsertColor_Click() $hInsertColor.Insert End ' Private Sub SetText(sText As String) ' ' $hEditor.Text = sText ' $bModify = True ' Me.Save ' $cProc = Null ' UpdateCurrentProc ' 'Editor.Begin ' 'Editor.SelectAll ' 'Editor.Insert(sText) ' 'Editor.End ' ' End Private Sub RefreshLineInfo(Optional bForce As Boolean) As Boolean Dim bNewLine As Boolean If bForce Then $iLastLine = -1 Endif If $hEditor.Line <> $iLastLine Then $iLastLine = $hEditor.Line UpdateCurrentProc bNewLine = True RefreshPreview Endif Return bNewLine End Public Sub Editors_Cursor() If RefreshLineInfo() Then $hCompletion.Hide Endif CPosition.SaveCurrent(Me) Project.UpdateStatus(True) End Public Sub Editors_MouseDown() CPosition.Disable End Public Sub Editors_MouseUp() CPosition.Enable CPosition.SaveCurrent(Me) End Public Sub mnuLowerCase_Click() If $hEditor.ReadOnly Then Return If Not $hEditor.Selected Then Return $hEditor.StoreSelection(True) $hEditor.Begin $hEditor.Insert(String.LCase($hEditor.SelectedText)) $hEditor.End $hEditor.RecallSelection End Public Sub mnuUpperCase_Click() If $hEditor.ReadOnly Then Return If Not $hEditor.Selected Then Return $hEditor.StoreSelection(True) $hEditor.Begin $hEditor.Insert(String.UCase($hEditor.SelectedText)) $hEditor.End $hEditor.RecallSelection End Public Sub ShowErrorMessage(sMsg As String, (sIcon) As String) $hEditor.SetFocus Wait $hEditor.ShowMessageLabel(sMsg, Highlight.Breakpoint) End ' Private Sub RemoveFromBegin(sStr As String, sBegin As String) As String ' ' If sStr Begins sBegin Then ' Return Mid$(sStr, Len(sBegin) + 1) ' Else ' Return sStr ' Endif ' ' End Private Sub GetProc(sLine As String) As String Dim iPos As Integer Dim aStr As String[] Dim iInd As Integer Dim sStr As String Dim sProc As String sLine = Trim(sLine) Select Case $hEditor.Highlight Case "css" iPos = InStr(sLine, "{") If iPos Then sProc = Trim(Left(sLine, iPos - 1)) Case "html", "webpage" If Left(sLine) = "<" Then iPos = InStr(sLine, " ") If iPos Then sProc = Left$(sLine, iPos - 1) & ">" Endif Case "javascript" If sLine Begins "function " Then sLine = Mid$(sLine, 10) iPos = InStr(sLine, "(") If iPos Then sProc = Trim(Left$(sLine, iPos - 1)) Endif Else If sLine Like "*: function(*" Then sLine = Trim(sLine) iPos = InStr(sLine, ":") sLine = RTrim(Left(sLine, iPos - 1)) If Left(sLine) = "'" Or If Left(sLine) = Chr$(34) Then sLine = Mid$(sLine, 2, -1) sProc = sLine Endif Case "c", "c++" aStr = Split(sLine & " (", " ") For iInd = 0 To aStr.Max sStr = aStr[iInd] iPos = InStr(sStr, "(") If iPos > 0 Then sProc = Trim(Left$(sStr, iPos - 1)) If Not sProc And If iInd > 0 Then sProc = aStr[iInd - 1] Break Endif Next End Select Return Trim(sProc) End Private Sub GetCurrentProc(Optional iLine As Integer = $hEditor.Line) As String Dim sProc As String If $bNoHighlight Then Return While iLine >= 0 If $hEditor[iLine].Limit Then sProc = GetProc($hEditor[iLine].Text) Break Endif Dec iLine Wend Finally If Not sProc Then sProc = ("(Declarations)") Return sProc End Public Sub GetProcAt(iLine As Integer) As String Return GetCurrentProc(iLine) End Private Sub UpdateCurrentProc() btnProc.Text = GetCurrentProc() End Private Sub FillProc() Dim iLine As Integer Dim sText As String Dim sProc, sProcNum As String Dim iNum As String Dim bDecl As Boolean If $cProc Then Return Inc Application.Busy 'fTime = Timer 'FOR iInd = 1 TO 20 'aFunc.Clear sText = btnProc.Text 'cmbProc.Clear $cProc = New Collection(gb.IgnoreCase) $aProc = New String[] iLine = -1 bDecl = True Do iLine = $hEditor.FindNextLimit(iLine + 1) If iLine < 0 Then Break sProc = GetProc($hEditor[iLine].Text) If Not sProc Then Continue If $cProc.Exist(sProc) Then iNum = 2 Do sProcNum = sProc & " (" & iNum & ")" If Not $cProc.Exist(sProcNum) Then sProc = sProcNum Break Endif Inc iNum Loop Endif $aProc.Add(sProc) $cProc[sProc] = iLine If iLine = 0 Then bDecl = False Loop $aProc.Sort(gb.IgnoreCase) If bDecl Then $aProc.Add(("(Declarations)"), 0) '$cProc[0] = 0 Dec Application.Busy End Public Sub btnProc_Click() 'If Not Mouse.Left Then Return ToggleProcList Stop Event End Private Sub ToggleProcList() Dim iCurrent As Integer Dim iLine As Integer FillProc iCurrent = $aProc.Find(btnProc.Text) iCurrent = FProcedureList.Popup(Null, "", $aProc, iCurrent, btnProc.ScreenX, btnProc.ScreenY + btnProc.H, btnProc.W, Me.ClientH - panToolbar.H - Desktop.Scale) $hEditor.SetFocus If iCurrent >= 0 Then Try iLine = $cProc[$aProc[iCurrent]] GotoProc(iLine) Endif End Private Sub GotoProc(iLine As Integer) $hEditor.GotoCenter(0, iLine) End Public Sub panToolBar_Configure() UpdateMenu UpdateDiffAction If $bModule Then 'Action[".show-class"].Picture = Project.GetFileIcon(File.SetExt(Path, "class"), 16) btnShowCode.Show mnuShowCode.Show Else btnShowCode.Hide mnuShowCode.Hide Endif btnProc.Visible = edtEditor.Mode <> "" End Public Sub mnuClose_Click() Me.Close End Private Sub UpdateMenu() Dim bVisible As Boolean bVisible = Not edtEditor.ReadOnly Action[".save,.undo,.redo,.cut,.paste,.color,.indent,.unindent,.lcase,.ucase,.sort-ascent,.sort-descent,.eol,.date,.char", Me].Visible = bVisible mnuAdvanced.Visible = bVisible mnuEndOfLine.Visible = bVisible Action[".proc", Me].Visible = Not $bNoHighlight Action[".comment,.uncomment", Me].Visible = $bShowComment And bVisible Action[".pretty", Me].Visible = $bShowPretty And bVisible Action[".preview", Me].Visible = $iShowPreview <> PREVIEW_NONE And Not panPreview.Visible End Public Sub Form_Open() ReadConfig SetReadOnly Action[".wrap", Me].Value = Settings["/Editor/WrapTextByDefault", True] Action[".tab-indent", Me].Value = Settings["/Editor/TabIndentByDefault", False] End Public Sub btnIndent_Click() $hEditor.Indent End Public Sub btnUnindent_Click() $hEditor.Unindent End Public Sub Form_Hide() Try $hCompletion.Hide End Public Sub Editors_Scroll() $hCompletion.Position() End Private Sub GetRightString(sLine As String) As String Dim I, iPos As Integer Dim sCar As String Dim bInside As Boolean For I = 1 To Len(sLine) sCar = Mid$(sLine, I, 1) If bInside Then If sCar = "\\" Then Inc I Else If sCar = Chr$(34) Then bInside = False Endif Else If sCar = Chr$(34) Then bInside = True iPos = I Endif Next If bInside Then Return Mid$(sLine, iPos + 1) End Public Sub IsWordChar(sCar As String) As Boolean If Len(sCar) = 1 And If Asc(sCar) <= 32 Then Return False If IsDigit(sCar) Then Return True If InStr("_-$", sCar) Then Return True If IsLetter(String.RemoveDiacritics(sCar)) Then Return True End Public Sub CheckCompletion() Dim sLine As String Dim sWord As String sLine = String.Left$($hEditor.Current.Text, $hEditor.Column) Select Case $hCompletion.Mode Case "A" If Not FCompletion.VisibleFrom($hEditor) Then sWord = $hCompletion.GetWord(sLine, $hEditor.Column) If String.Len(sWord) >= 3 Then $hCompletion.OpenMode("I", sWord) Endif Case "<" If Not $hEditor.Selected Then $hCompletion.Hide sWord = $hCompletion.GetWord(sLine, $hEditor.Column - 1) If Len(sWord) >= 3 Then $hCompletion.Mode = "A" CheckCompletion() Return Endif Endif Case "/" sWord = GetRightString(sLine) If sWord Then $hCompletion.Open(sWord) Case Else $hCompletion.Hide End Select End Public Sub GetKeywords() As String[] Return $hEditor.Keywords End Public Sub Delete() $hBookmark = Null $hCompletion = Null $hInsertColor = Null $hInsertDate = Null Super.Delete End Private Sub SortText(bDescent As Boolean) Dim aText As String[] Dim aPos As Integer[] Dim aVoid As String[] Dim iMode As Integer Dim I As Integer If $hEditor.ReadOnly Then Return If Not $hEditor.Selected Then Return $hEditor.StoreSelection $hEditor.Begin aText = Split($hEditor.SelectedText, "\n") aPos = New Integer[] aVoid = New String[] For I = aText.Max DownTo 0 If Not Trim(aText[I]) Then aPos.Add(I) aVoid.Add(aText[I]) aText.Remove(I) Endif Next iMode = gb.Natural If bDescent Then iMode += gb.Descent aText.Sort(iMode) For I = 0 To aVoid.Max aText.Add(aVoid[I], aPos[I]) Next $hEditor.Insert(aText.Join("\n")) $hEditor.End $hEditor.RecallSelection End Public Sub mnuSortAscent_Click() SortText(False) End Public Sub mnuSortDescent_Click() SortText(True) End Public Sub Action_Activate((Key) As String) As Boolean Select Case Key Case ".locked" Project.SetReadOnly(Path, Action[Key, Me].Value) Case ".wrap" $hEditor.Wrap = mnuWrap.Value If $hEditor1 Then $hEditor1.Wrap = $hEditor.Wrap $hEditor2.Wrap = $hEditor.Wrap Endif Case ".tab-indent" $hEditor.TabIndent = mnuTabIndent.Value If $hEditor1 Then $hEditor1.TabIndent = $hEditor.TabIndent $hEditor2.TabIndent = $hEditor.TabIndent Endif Case ".diff" UpdateDiffMode Case ".preview" UpdatePreview Case ".preview-zoom-in" $hPreview.ZoomIn RefreshPreview Case ".preview-zoom-out" $hPreview.ZoomOut RefreshPreview Case ".preview-zoom-normal" $hPreview.ZoomNormal RefreshPreview Case ".preview-images" $hPreview.Settings[WebSettings.AutoLoadImages] = btnLoadImages.Value Case Else Return True End Select End Public Sub Form_Close() If $bConsole Then Project.DeleteFile(Path) Else Project.AddRecentFile(Me) Endif End Public Sub mnuEolUnix_Click() edtEditor.EndOfLine = gb.Unix UpdateEndOfLine Modify End Public Sub mnuEolWindows_Click() edtEditor.EndOfLine = gb.Windows UpdateEndOfLine Modify End Public Sub mnuEolMac_Click() edtEditor.EndOfLine = gb.Mac UpdateEndOfLine Modify End Public Sub GetFoldedProc() As Integer[] Dim aFold As New Integer[] Dim iLine As Integer Do If Not $hEditor[iLine].Expanded Then 'DEBUG Name;; iLine aFold.Add(iLine) Endif iLine = $hEditor.FindNextLimit(iLine) If iLine < 0 Then Break Loop Return aFold End Public Sub SetFoldedProc(aFold As Integer[]) Dim iLine As Integer $hEditor.ExpandAll For Each iLine In aFold 'DEBUG Name;; iLine $hEditor[iLine].Expanded = False Next End Public Sub GetPopupMenu() As Menu Return mnuEditor End Public Sub mnuComment_Click() Dim iStartLine As Integer Dim iEndLine As Integer Dim iLine As Integer Dim sIndent As String If $hEditor.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If $hEditor.Selected Then $hEditor.StoreSelection iStartLine = Min($hEditor.SelectionLine, $hEditor.Line) iEndLine = Max($hEditor.SelectionLine, $hEditor.Line) sIndent = $hEditor.GetIndent(iStartLine, iEndLine) $hEditor.Begin Select Case $hEditor.Mode Case "webpage", "html" $hEditor[iStartLine].Text = sIndent & "" Case "c", "c++", "javascript", "css" $hEditor[iStartLine].Text = sIndent & "/* " & Mid$($hEditor[iStartLine].Text, Len(sIndent) + 1) $hEditor[iEndLine - 1].Text = $hEditor[iEndLine - 1].Text & " */" Case "gbs" For iLine = iStartLine To iEndLine - 1 $hEditor[iLine].Text = sIndent & "' " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) Next End Select $hEditor.End $hEditor.RecallSelection Else 'Comment only the current line iLine = $hEditor.Line sIndent = $hEditor.GetIndent(iLine, iLine + 1) Select Case $hEditor.Mode Case "css" $hEditor[iLine].Text = sIndent & "/* " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) & " */" Case "webpage", "html" $hEditor[iLine].Text = sIndent & "" Case "c", "c++", "javascript" $hEditor[iLine].Text = sIndent & "// " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) Case "gbs" $hEditor[iLine].Text = sIndent & "' " & Mid$($hEditor[iLine].Text, Len(sIndent) + 1) End Select Endif End Public Sub mnuUncomment_Click() Dim iLine As Integer Dim sLine As String Dim iStartLine As Integer Dim iEndLine As Integer Dim sIndent As String Dim sLineStart As String Dim sLineEnd As String If $hEditor.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If $hEditor.Selected Then $hEditor.StoreSelection iStartLine = Min($hEditor.SelectionLine, $hEditor.Line) iEndLine = Max($hEditor.SelectionLine, $hEditor.Line) sIndent = $hEditor.GetIndent(iStartLine, iEndLine) Select Case $hEditor.Mode Case "css", "c", "c++", "javascript" sLineStart = LTrim($hEditor[iStartLine].Text) If sLineStart Begins "/*" Then sLineEnd = RTrim($hEditor[iEndLine - 1].Text) If sLineEnd Ends "*/" Then sLineStart = Mid$(sLineStart, 3) If sLineStart Begins " " Then sLineStart = Mid$(sLineStart, 2) sLineEnd = Left(sLineEnd, -2) If sLineEnd Ends " " Then sLineEnd = Left(sLineEnd, -1) $hEditor[iStartLine].Text = sIndent & sLineStart $hEditor[iEndLine - 1].Text = sLineEnd Endif Endif Case "html", "webpage" sLineStart = LTrim($hEditor[iStartLine].Text) If sLineStart Begins "" Then sLineStart = Mid$(sLineStart, 5) If sLineStart Begins " " Then sLineStart = Mid$(sLineStart, 2) sLineEnd = Left(sLineEnd, -3) If sLineEnd Ends " " Then sLineEnd = Left(sLineEnd, -1) $hEditor[iStartLine].Text = sIndent & sLineStart $hEditor[iEndLine - 1].Text = sLineEnd Endif Endif Case "gbs" For iLine = iStartLine To iEndLine - 1 sLine = $hEditor[iLine].Text 'If Len(sLine) < (iIndent + 1) Then Break If Left(LTrim(sLine), 1) <> "'" Then Break Next If iLine = iEndLine Then $hEditor.Begin For iLine = iStartLine To iEndLine - 1 If Left(LTrim($hEditor[iLine].Text), 2) = "' " Then $hEditor[iLine].Text = sIndent & Mid$(LTrim($hEditor[iLine].Text), 3) Else $hEditor[iLine].Text = sIndent & Mid$(LTrim($hEditor[iLine].Text), 2) Endif Next $hEditor.End 'Modify Endif End Select $hEditor.RecallSelection Else iLine = $hEditor.Line sIndent = $hEditor.GetIndent(iLine, iLine + 1) sLine = LTrim($hEditor[iLine].Text) If Not sLine Then Return Select Case $hEditor.Mode Case "css" If sLine Like "/[*]*[*]/" Then sLine = Mid$(sLine, 3, -2) If Left(sLine) = " " And If Right(sLine) = " " Then sLine = Mid$(sLine, 2, -1) $hEditor[iLine].Text = sIndent & sLine Endif Case "html", "webpage" If sLine Like "" Then sLine = Mid$(sLine, 5, -3) If sLine Begins " " And If sLine Ends " " Then sLine = Mid$(sLine, 2, -1) $hEditor[iLine].Text = sIndent & sLine Endif Case "c", "c++", "javascript" If sLine Begins "//" Then sLine = Mid$(sLine, 3) If sLine Begins " " Then sLine = Mid$(sLine, 2) $hEditor[iLine].Text = sIndent & sLine Else If sLine Like "/[*]*[*]/" Then sLine = Mid$(sLine, 3, -2) If Left(sLine) = " " And If Right(sLine) = " " Then sLine = Mid$(sLine, 2, -1) $hEditor[iLine].Text = sIndent & sLine Endif Case "gbs" If sLine Begins "'" Then sLine = Mid$(sLine, 2) If sLine Begins " " Then sLine = Mid$(sLine, 2) $hEditor[iLine].Text = sIndent & sLine Endif End Select Endif End Public Sub mnuPretty_Click() MPrettyCode.Run(Me) End Public Sub btnInsertChar_Click() FInsertChar.Run($hEditor, btnInsertChar.ScreenX, btnInsertChar.ScreenY + btnInsertChar.H) End Public Sub mnuPrint_Click() MPrint.Run($hEditor, Me.Title) End Private Sub UpdateDiffAction() Action[".diff", Me].Visible = Project.IsModified(Path) Action[".diff-next,.diff-previous", Me].Visible = Action[".diff", Me].Visible And Action[".diff", Me].Value End Private Sub UpdateDiffMode() If Action[".diff", Me].Value = $bDiffMode Then Return $bDiffMode = Action[".diff", Me].Value UpdateDiffAction If $bDiffMode Then Me.Save() If Not Action[".diff", Me].Visible Then $bDiffMode = False Action[".diff", Me].Value = False Return Endif $hEditor.EnterDiffModeWith(Path) Else $hEditor.LeaveDiffMode() Endif SetReadOnly End Public Sub btnDiffPrevious_Click() Dim Y As Integer Y = $hEditor.FindPreviousDiff($hEditor.Line) If Y >= 0 Then $hEditor.Goto($hEditor.Column, Y) End Public Sub btnDiffNext_Click() Dim Y As Integer Y = $hEditor.FindNextDiff($hEditor.Line) If Y >= 0 Then $hEditor.Goto($hEditor.Column, Y) End Public Sub Preview_Ready() If $bMovePreviewOnReady Then $bMovePreviewOnReady = False Try $hPreview.ExecJavascript("goto_line(" & CStr($hEditor.Line) & ");") If Error Then Error Error.Text Endif $bPreviewReady = True End Private Sub RefreshPreview(Optional bReload As Boolean) Dim sHtml As String Dim bError As Boolean Dim aHtml As String[] Dim I As Integer Dim bBody As Boolean Dim iPos As Integer If Not HasPreview() Then Return If bReload Then $bPreviewReady = False Project.SetMessage(("Preview refresh...")) Select Case $iShowPreview Case PREVIEW_HTML sHtml = $hEditor.Text If InStr(Left(sHtml, 1024), "" If InStr(Left(sHtml, 256), "" & sHtml If InStr(Left(sHtml, 256), "" If LTrim(sHtml) Not Like "\n" & sHtml Endif aHtml = Split(sHtml, "\n") For I = 0 To aHtml.Max If Not bBody Then iPos = InStr(aHtml[I], "" & File.Load("markdown/markdown.js") & "" Endif Continue Endif ' FIXME: Line number must me decremented, no idea why. aHtml[I] = "" & aHtml[I] Next sHtml = aHtml.Join("\n") Case PREVIEW_MARKDOWN Markdown.LinkAnchors = True Try sHtml = Markdown.ToHTML($hEditor.Text) Markdown.LinkAnchors = False If Error Then sHtml = "
    " & Html(Error.Text) & "\n\n" & Error.Backtrace.Join(" ") & "
    " bError = True Else sHtml &= "" Endif sHtml = "\n" & GetStyleSheet() & "" & sHtml & "" End Select Try Kill $sTempPreview $sTempPreview = File.SetExt(Temp(), "html") File.Save($sTempPreview, sHtml) $bMovePreviewOnReady = True $hPreview.Url = "file://" & $sTempPreview '& "#l" & CStr($hEditor.Line + 1) Project.SetMessage("") Else 'Debug $hEditor.Line If $bPreviewReady Then $hPreview.ExecJavascript("goto_line(" & CStr($hEditor.Line) & ");") Endif End Private Sub FillStyleSheet() Dim I As Integer Dim hMenu As Menu $iCurrentStyleSheet = -1 $aStyleSheet = RDir(Project.Dir &/ ".hidden", "*.css") If $aStyleSheet.Count = 0 Then btnStyleSheet.Hide Return Endif mnuStyleSheet.Children.Clear hMenu = New Menu(mnuStyleSheet) As "mnuStyleSheet" hMenu.Text = ("Default style sheet") btnStyleSheet.Text = hMenu.Text hMenu.Checked = True hMenu = New Menu(mnuStyleSheet) For I = 0 To $aStyleSheet.Max hMenu = New Menu(mnuStyleSheet) As "mnuStyleSheet" hMenu.Text = File.Name($aStyleSheet[I]) If Project.PreviewStyleSheet = $aStyleSheet[I] Then $iCurrentStyleSheet = I btnStyleSheet.Text = hMenu.Text Endif hMenu.Tag = I Next btnStyleSheet.Show End Public Sub mnuStyleSheet_Click() Dim hMenu As Menu For Each hMenu In mnuStyleSheet.Children If Not hMenu.Text Then Continue hMenu.Checked = hMenu = Last If hMenu.Checked Then btnStyleSheet.Text = hMenu.Text Next If IsNull(Last.Tag) Then $iCurrentStyleSheet = -1 Project.PreviewStyleSheet = "" Else $iCurrentStyleSheet = Last.Tag Project.PreviewStyleSheet = $aStyleSheet[$iCurrentStyleSheet] Endif Project.WriteProject(True) RefreshPreview(True) End Private Sub GetStyleSheet() As String Dim sPath As String Dim sData As String If $iCurrentStyleSheet < 0 Then If Not $sDefaultStyleSheet Then $sDefaultStyleSheet = File.SetExt(Temp$(), "css") sData = File.Load("markdown/markdown.css") sData = Replace(sData, "$EXAMPLE", ("Example")) File.Save($sDefaultStyleSheet, sData) Endif sPath = $sDefaultStyleSheet Else sPath = Project.Dir &/ ".hidden" &/ $aStyleSheet[$iCurrentStyleSheet] Endif Return Subst("", sPath) End Private Sub UpdatePreview() If btnPreview.Value Then If Not $hPreview Then $hPreview = New HelpView(panPreview) As "Preview" $hPreview.Settings[WebSettings.Javascript] = True $hPreview.Settings[WebSettings.AutoLoadImages] = btnLoadImages.Value $hPreview.Expand = True splPreview.Layout = [1, 1] $hTimerPreview = New Timer As "TimerPreview" $hTimerPreview.Delay = 500 Endif FillStyleSheet panPreview.Show RefreshPreview(True) btnPreview.Hide Else panPreview.Hide btnPreview.Show Endif End Public Sub TimerPreview_Timer() RefreshPreview(True) $hTimerPreview.Stop End Public Sub Preview_GotFocus() $hEditor.SetFocus End Public Sub Preview_Menu() Stop Event End Public Sub Preview_Resize() RefreshPreview End Public Sub btnClosePreview_Click() btnPreview.Value = False End Public Sub btnBack_Click() $hPreview.Back End Public Sub btnForward_Click() $hPreview.Forward End Public Sub PaintStatus() FEditor.PaintEditorStatus($hEditor) End gambas-3.16.3/app/src/gambas3/.src/Editor/Code/FTextEditor.form000066400000000000000000000526311411575327000237710ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,179,94) Icon = Picture["icon:/small/text"] Persistent = True Arrangement = Arrange.Fill { mnuEditor Menu Enabled = False { mnuUndo Menu Action = ".undo" Text = ("Undo") Picture = Picture["icon:/small/undo"] Shortcut = "Ctrl+Z" } { mnuRedo Menu Action = ".redo" Text = ("Redo") Picture = Picture["icon:/small/redo"] Shortcut = "Ctrl+Y" } { mnuSep2 Menu } { mnuCut Menu Action = ".cut" Text = ("Cut") Picture = Picture["icon:/small/cut"] Shortcut = "Ctrl+X" } { mnuCopy Menu Action = ".copy" Text = ("Copy") Picture = Picture["icon:/small/copy"] Shortcut = "Ctrl+C" } { mnuPaste Menu Action = ".paste" Text = ("Paste") Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+V" } { mnuAdvanced Menu Text = ("Advanced") { mnuUpperCase Menu Action = ".ucase" Text = ("Upper case") Picture = Picture["icon:/small/text-upper"] Shortcut = "Ctrl+Alt+U" } { mnuLowerCase Menu Action = ".lcase" Text = ("Lower case") Picture = Picture["icon:/small/text-lower"] Shortcut = "Ctrl+Alt+L" } { Menu6 Menu } { mnuSortAscent Menu Action = ".sort-ascent" Text = ("Sort ascent") Picture = Picture["icon:/small/sort-ascent"] } { mnuSortDescent Menu Action = ".sort-descent" Text = ("Sort descent") Picture = Picture["icon:/small/sort-descent"] } { Menu7 Menu } { mnuComment Menu Action = ".comment" Text = ("Comment") Picture = Picture["img/32/comment.png"] Shortcut = "Ctrl+K" } { mnuUncomment Menu Action = ".uncomment" Text = ("Uncomment") Picture = Picture["img/32/uncomment.png"] Shortcut = "Ctrl+U" } { mnuSep5 Menu } { mnuPasteSpecial Menu Action = ".paste-special" Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+Shift+V" } { mnuPretty Menu Action = ".pretty" Text = ("Format code") Picture = Picture["icon:/small/wizard"] Shortcut = "Ctrl+Shift+F" } { mnuCompress Menu Action = ".compress" Text = ("Compress file") Picture = Picture["icon:/small/archive"] Toggle = True } { Menu12 Menu } { mnuInsertColor Menu Action = ".color" Text = ("Insert color") & "..." Picture = Picture["icon:/small/color"] Shortcut = "Ctrl+Shift+C" } } { mnuSep3 Menu } { mnuSelectAll Menu Action = ".select-all" Text = Shortcut(("Select All"), "A") Picture = Picture["icon:/small/select-all"] Shortcut = "Ctrl+A" } { Menu4 Menu } { mnuGotoLine Menu Action = ".goto-line" Text = ("Go to line") & "..." Shortcut = "Ctrl+G" } { mnuBookmark Menu Text = ("Bookmarks") } { Menu2 Menu } { mnuFindNext Menu Action = "find-next" Text = ("Find next") Picture = Picture["icon:/small/down"] Shortcut = "F3" } { mnuFindPrevious Menu Action = "find-previous" Text = ("Find previous") Picture = Picture["icon:/small/up"] Shortcut = "Shift+F3" } { mnuSep4 Menu } { mnuEditorView Menu Text = ("View") { mnuWrap Menu Action = ".wrap" Text = ("Automatic word wrap") Picture = Picture["icon:/small/wrap"] Toggle = True } { mnuTabIndent Menu Action = ".tab-indent" Text = ("Indent with tab") Picture = Picture["img/32/tab.png"] Toggle = True } { Menu8 Menu } { mnuNoSplit Menu Action = ".view-nosplit" Text = ("No split") Picture = Picture["icon:/small/view-normal"] } { mnuHorizontalSplit Menu Action = ".view-hsplit" Text = ("Horizontal split") Picture = Picture["icon:/small/view-split-h"] Shortcut = "Ctrl+H" } { mnuVerticalSplit Menu Action = ".view-vsplit" Text = ("Vertical split") Picture = Picture["icon:/small/view-split-v"] Shortcut = "Ctrl+J" } { Menu9 Menu } { mnuPreview Menu Action = ".preview" Text = ("Preview") Picture = Picture["icon:/small/preview"] Toggle = True } } { mnuEndOfLine Menu Text = ("End of line") { mnuEolUnix Menu Text = ("Unix") Radio = True } { mnuEolWindows Menu Text = ("Windows") Radio = True } { mnuEolMac Menu Text = ("MAC") Radio = True } } { Menu3 Menu } { mnuShowCode Menu Action = ".show-code" Text = ("Open code") Picture = Picture["icon:/small/right"] Shortcut = "F12" } { Menu1 Menu } { mnuLocked Menu Action = ".locked" Text = ("Locked") Picture = Picture["icon:/small/lock"] Toggle = True } { mnuPrint Menu Text = ("Print") & "..." Picture = Picture["icon:/small/print"] Shortcut = "Ctrl+P" } { mnuReload Menu Action = ".reload" Text = ("Reload") Picture = Picture["icon:/small/revert"] } { mnuSave Menu Action = ".save" Text = ("Save") Picture = Picture["icon:/small/save"] Shortcut = "Ctrl+S" } { Menu11 Menu } { mnuClose Menu Action = ".close" Text = ("Close") Picture = Picture["icon:/small/close"] Shortcut = "Ctrl+W" } } { mnuPasteAs Menu { mnuPasteAsString Menu Action = ".paste-string" Text = ("Paste as string") } { mnuPasteAsStringSplit Menu Action = ".paste-string-split" Text = ("Paste as multi-line string") } { mnuPasteAsComment Menu Action = ".paste-comment" Text = ("Paste as comments") } { Menu5 Menu } { mnuPasteSpecial2 Menu mnuPasteSpecial Name = "mnuPasteSpecial2" Text = ("Paste special") & "..." Picture = Picture["icon:/small/paste"] } } { mnuStyleSheet Menu { Menu10 Menu } } { splPreview HSplit MoveScaled(0,1,175,86) { Panel4 VBox MoveScaled(1,1,108.875,80.875) { panToolBar ToolBar MoveScaled(1,3,108,8) Key = "text" Text = ("Text editor") Separator = True { btnShowCode ToolButton mnuShowCode Name = "btnShowCode" MoveScaled(0,0,4,4) ToolTip = ("Code") Action = ".show-class" Picture = Picture["icon:/small/right"] } { btnDiff ToolButton MoveScaled(4,0,4,4) ToolTip = ("Show modifications") Action = ".diff" AutoResize = True Picture = Picture["img/32/modified.png"] Toggle = True } { btnDiffPrevious ToolButton MoveScaled(7,0,4,4) ToolTip = ("Previous modification") Action = ".diff-previous" Picture = Picture["icon:/small/rewind"] } { btnDiffNext ToolButton MoveScaled(10,0,4,4) ToolTip = ("Next modification") Action = ".diff-next" Picture = Picture["icon:/small/forward"] } { Separator6 Separator MoveScaled(14,0,1,4) } { btnSave ToolButton mnuSave Name = "btnSave" MoveScaled(15,0,4,4) ToolTip = ("Save") Action = ".save" Picture = Picture["icon:/small/save"] } { btnReload ToolButton mnuReload Name = "btnReload" MoveScaled(18,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/refresh"] } { btnPrint ToolButton mnuPrint Name = "btnPrint" MoveScaled(21,0,4,4) ToolTip = ("Print") Action = ".print" Picture = Picture["icon:/small/print"] } { Separator4 Separator MoveScaled(24,0,1,4) } { btnUndo ToolButton mnuUndo Name = "btnUndo" MoveScaled(24,0,4,4) ToolTip = ("Undo") Action = ".undo" Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton mnuRedo Name = "btnRedo" MoveScaled(27,0,4,4) ToolTip = ("Redo") Action = ".redo" Picture = Picture["icon:/small/redo"] } { Separator5 Separator MoveScaled(31,0,1,4) } { btnCut ToolButton mnuCut Name = "btnCut" MoveScaled(32,0,4,4) Visible = False ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton mnuCopy Name = "btnCopy" MoveScaled(35,0,4,4) Visible = False ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { btnPaste ToolButton mnuPaste Name = "btnPaste" MoveScaled(38,0,4,4) ToolTip = ("Paste") Action = ".paste" Picture = Picture["icon:/small/paste"] } { btnBookmark MenuButton MoveScaled(43,0,6,4) Visible = False ToolTip = ("Bookmarks") Action = ".bookmark" Picture = Picture["icon:/small/bookmark"] Border = False Menu = "mnuBookmark" } { btnInsertColor MenuButton MoveScaled(48,0,6,4) ToolTip = ("Insert color") Action = ".color" Picture = Picture["icon:/small/color"] Border = False Menu = "mnuColor" } { btnInsertDate MenuButton MoveScaled(52,0,6,4) ToolTip = ("Insert today's date") Action = ".date" Picture = Picture["icon:/small/calendar"] Border = False MenuOnly = True } { btnInsertChar MenuButton MoveScaled(57,0,6,4) ToolTip = ("Insert special character") Action = ".char" Picture = Picture["icon:/small/shortcut"] Border = False MenuOnly = True } { btnIndent ToolButton MoveScaled(63,0,4,4) Visible = False ToolTip = ("Indent") Action = ".indent" Picture = Picture["icon:/small/indent"] } { btnUnindent ToolButton MoveScaled(66,0,4,4) Visible = False ToolTip = ("Unindent") Action = ".unindent" Picture = Picture["icon:/small/unindent"] } { btnComment ToolButton mnuComment Name = "btnComment" MoveScaled(68,0,4,4) ToolTip = ("Comment") Action = ".comment" Picture = Picture["img/32/comment.png"] } { btnUncomment ToolButton mnuUncomment Name = "btnUncomment" MoveScaled(71,0,4,4) ToolTip = ("Uncomment") Action = ".uncomment" Picture = Picture["img/32/uncomment.png"] } { btnPretty ToolButton mnuPretty Name = "btnPretty" MoveScaled(74,0,4,4) Visible = False ToolTip = ("Make code pretty") Action = ".pretty" Picture = Picture["icon:/small/wizard"] } { Separator2 Separator MoveScaled(95,0,1,4) } { btnNoSplit ToolButton mnuNoSplit Name = "btnNoSplit" MoveScaled(96,0,4,4) Visible = False ToolTip = ("No split") Action = ".view-nosplit" Picture = Picture["icon:/small/view-normal"] } { btnHorizontalSplit ToolButton mnuHorizontalSplit Name = "btnHorizontalSplit" MoveScaled(99,0,4,4) Visible = False ToolTip = ("Horizontal split") Action = ".view-hsplit" Picture = Picture["icon:/small/view-split-h"] } { btnVerticalSplit ToolButton mnuVerticalSplit Name = "btnVerticalSplit" MoveScaled(102,0,4,4) Visible = False ToolTip = ("Vertical split") Action = ".view-vsplit" Picture = Picture["icon:/small/view-split-v"] } { Separator1 Separator MoveScaled(9,4,1,4) } { btnProc MenuButton MoveScaled(11,4,52,4) Mouse = Mouse.Pointing Action = ".proc" Text = ("Procedure list") Border = False } { Separator3 Separator MoveScaled(63,4,1,4) } { Panel2 Panel MoveScaled(66,4,6,4) Expand = True } { btnWrap ToolButton MoveScaled(72,4,4,4) ToolTip = ("Automatic word wrap") Action = ".wrap" Picture = Picture["icon:/small/wrap"] Toggle = True } { btnTabIndent ToolButton MoveScaled(78,4,4,4) ToolTip = ("Indent with tab") Action = ".tab-indent" Picture = Picture["img/32/tab.png"] Toggle = True } { btnEndOfLine MenuButton MoveScaled(83,4,7,4) Visible = False ToolTip = ("End of line") Action = ".eol" AutoResize = True Picture = Picture["img/32/eol.png"] Border = False Menu = "mnuEndOfLine" MenuOnly = True } { ToolButton7 ToolButton MoveScaled(90,4,4,4) ToolTip = ("Lock / unlock file") Action = ".locked" Picture = Picture["icon:/small/lock"] Toggle = True } { btnPreview ToolButton MoveScaled(94,4,5,4) ToolTip = ("Toggle preview") Action = ".preview" AutoResize = True Picture = Picture["icon:/small/preview"] Toggle = True } } { Panel1 Panel MoveScaled(11,19,38,61) Background = Color.TextBackground Expand = True Arrangement = Arrange.Fill { edtEditor TextEditor Editors Name = "edtEditor" MoveScaled(3,1,24,16) Expand = True Border = False ShowPreview = True } { splHorizontal HSplit MoveScaled(3,19,22,18) Visible = False Expand = True } { splVertical VSplit MoveScaled(2,41,22,18) Visible = False Expand = True } } } { panPreview VBox MoveScaled(111,1,59,80) Visible = False { tlbPreview ToolBar MoveScaled(2,2,55,4) Key = "preview" Separator = True { btnZoomIn ToolButton MoveScaled(2,0,4,4) ToolTip = ("Zoom in") Action = ".preview-zoom-in" Picture = Picture["icon:/small/zoom-in"] } { btnZoomOut ToolButton MoveScaled(6,0,4,4) ToolTip = ("Zoom out") Action = ".preview-zoom-out" Picture = Picture["icon:/small/zoom-out"] } { btnZoomNormal ToolButton MoveScaled(10,0,4,4) ToolTip = ("No zoom") Action = ".preview-zoom-normal" Picture = Picture["icon:/small/zoom-normal"] } { btnStyleSheet MenuButton MoveScaled(15,0,9,4) Action = ".preview-css" AutoResize = True Picture = Picture["icon:/small/css"] Border = False Menu = "mnuStyleSheet" MenuOnly = True } { btnLoadImages ToolButton MoveScaled(26,0,16,4) Action = ".preview-images" AutoResize = True Text = ("Load images") Picture = Picture["icon:/small/image"] Toggle = True } { Spring1 Spring MoveScaled(47,1,4,2) } { btnClosePreview ToolButton MoveScaled(51,0,4,4) Picture = Picture["icon:/small/close"] } } } } } # Gambas Action File 3.0 { Actions { Action bookmark Text = "Bookmarks" Picture = "icon:/small/bookmark" } { Action char Text = "Insert special character" Picture = "icon:/small/shortcut" } { Action close Text = "Close" Shortcut = "Ctrl+W" Picture = "icon:/small/close" } { Action color Text = "Insert color" Shortcut = "Ctrl+Shift+C" Picture = "icon:/small/color" } { Action comment Text = "Comment" Shortcut = "Ctrl+K" Picture = "img/32/comment.png" } { Action compress Text = "Compress file" Shortcut = "" Picture = "icon:/small/archive" } { Action copy Text = "Copy" Shortcut = "Ctrl+C" Picture = "icon:/small/copy" } { Action cut Text = "Cut" Shortcut = "Ctrl+X" Picture = "icon:/small/cut" } { Action date Text = "Insert today's date" Picture = "icon:/small/calendar" } { Action diff Text = "Show modifications" Picture = "img/32/modified.png" } { Action diff-next Text = "Next modification" Picture = "icon:/small/forward" } { Action diff-previous Text = "Previous modification" Picture = "icon:/small/rewind" } { Action eol Text = "End of line" Picture = "img/32/eol.png" } { Action find-next Text = "Find next" Shortcut = "F3" Picture = "icon:/small/down" } { Action find-previous Text = "Find previous" Shortcut = "Shift+F3" Picture = "icon:/small/up" } { Action goto-line Text = "Go to line" Shortcut = "Ctrl+G" } { Action indent Text = "Indent" Picture = "icon:/small/indent" } { Action lcase Text = "Lower case" Shortcut = "Ctrl+Alt+L" Picture = "icon:/small/text-lower" } { Action locked Text = "Locked" Shortcut = "" Picture = "icon:/small/lock" } { Action paste Text = "Paste" Shortcut = "Ctrl+V" Picture = "icon:/small/paste" } { Action paste-comment Text = "Paste as comments" Shortcut = "" } { Action paste-special Text = "Paste special" Shortcut = "Ctrl+Shift+V" Picture = "icon:/small/paste" } { Action paste-string Text = "Paste as string" Shortcut = "" } { Action paste-string-split Text = "Paste as multi-line string" Shortcut = "" } { Action pretty Text = "Format code" Shortcut = "Ctrl+Shift+F" Picture = "icon:/small/wizard" } { Action preview Text = "Preview" Shortcut = "" Picture = "icon:/small/preview" } { Action preview-css Text = "" Picture = "icon:/small/css" } { Action preview-images Text = "Load images" Picture = "icon:/small/image" } { Action preview-zoom-in Text = "Zoom in" Picture = "icon:/small/zoom-in" } { Action preview-zoom-normal Text = "No zoom" Picture = "icon:/small/zoom-normal" } { Action preview-zoom-out Text = "Zoom out" Picture = "icon:/small/zoom-out" } { Action print Text = "Print" Picture = "icon:/small/print" } { Action proc Text = "Procedure list" Picture = "$MenuButton" } { Action redo Text = "Redo" Shortcut = "Ctrl+Y" Picture = "icon:/small/redo" } { Action reload Text = "Reload" Shortcut = "" Picture = "icon:/small/refresh" } { Action save Text = "Save" Shortcut = "Ctrl+S" Picture = "icon:/small/save" } { Action select-all Text = "Select All" Shortcut = "Ctrl+A" Picture = "icon:/small/select-all" } { Action show-class Text = "Code" Picture = "icon:/small/right" } { Action show-code Text = "Open code" Shortcut = "F12" Picture = "icon:/small/right" } { Action sort-ascent Text = "Sort ascent" Shortcut = "" Picture = "icon:/small/sort-ascent" } { Action sort-descent Text = "Sort descent" Shortcut = "" Picture = "icon:/small/sort-descent" } { Action tab-indent Text = "Indent with tab" Shortcut = "" Picture = "img/32/tab.png" } { Action ucase Text = "Upper case" Shortcut = "Ctrl+Alt+U" Picture = "icon:/small/text-upper" } { Action uncomment Text = "Uncomment" Shortcut = "Ctrl+U" Picture = "img/32/uncomment.png" } { Action undo Text = "Undo" Shortcut = "Ctrl+Z" Picture = "icon:/small/undo" } { Action unindent Text = "Unindent" Picture = "icon:/small/unindent" } { Action view-hsplit Text = "Horizontal split" Shortcut = "Ctrl+H" Picture = "icon:/small/view-split-h" } { Action view-nosplit Text = "No split" Shortcut = "" Picture = "icon:/small/view-normal" } { Action view-vsplit Text = "Vertical split" Shortcut = "Ctrl+J" Picture = "icon:/small/view-split-v" } { Action wrap Text = "Automatic word wrap" Shortcut = "" Picture = "icon:/small/wrap" } } { Toolbars { Toolbar preview Text = "" List = "preview-zoom-in,preview-zoom-out,preview-zoom-normal,preview-css,preview-images" Default = "preview-zoom-in,preview-zoom-out,preview-zoom-normal,preview-css,preview-images,~,$btnClosePreview" } { Toolbar text Text = "Text editor" List = "show-class,diff,diff-previous,diff-next,save,reload,print,undo,redo,cut,copy,paste,bookmark,color,date,char,indent,unindent,comment,uncomment,pretty,view-nosplit,view-hsplit,view-vsplit,proc,wrap,tab-indent,eol,locked,preview" Default = "show-class,diff,diff-previous,diff-next,|,save,reload,print,|,undo,redo,|,paste,color,date,char,comment,uncomment,|,|,proc,|,~,wrap,tab-indent,locked,preview" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Code/MPrettyCode.module000066400000000000000000000264701411575327000243130ustar00rootroot00000000000000' Gambas module file Private $cOpen As New Collection Private $cClose As New Collection Private $iLine As Integer Private $iLevel As Integer Private $bLastNewLine As Boolean Private $bNeedNewLine As Boolean Private $iLastDim As Integer Private $aSwitch As Integer[] Private $bNextIndent As Boolean Private $bIndentDim As Boolean Private $bRemoveSpace As Boolean Private $bKeepVoidLine As Boolean Private $iIndentSize As Integer Private $bLocalDeclDone As Boolean Public Sub _init() Dim sStr As String For Each sStr In ["DO", "FOR", "ELSE", "SELECT", "CASE", "DEFAULT", "WHILE", "REPEAT", "WITH", "CATCH", "FINALLY"] $cOpen[sStr] = True Next For Each sStr In ["LOOP", "NEXT", "ENDIF", "END IF", "ELSE", "CASE", "DEFAULT", "WEND", "UNTIL", "END WITH", "CATCH", "FINALLY"] $cClose[sStr] = True Next ' IF and END SELECT are special End Private Sub RemoveLine(aPos As Integer[], iLine As Integer) Dim I As Integer While I < aPos.Count If aPos[I] = iLine Then aPos.Remove(I) Else If aPos[I] > iLine Then Dec aPos[I] Inc I Endif Wend End Private Sub InsertLine(aPos As Integer[], iLine As Integer, Optional iCount As Integer = 1) Dim I As Integer While I < aPos.Count If aPos[I] >= iLine Then aPos[I] += iCount Inc I Wend End Public Sub Run(hModule As Object) Dim sLine As String Dim aLine As String[] Dim iLine As Integer Dim aBookmark As Integer[] Dim bBookmark As Boolean Dim aBreakpoint As Integer[] Dim bBreakpoint As Boolean Dim X As Integer Dim Y As Integer Dim aText As String[] Dim bModified As Boolean Dim aSymbols As String[] Dim aTypes As Integer[] Dim iStart, iEnd As Integer Dim hEditor As TextEditor Dim sPath As String Inc Application.Busy hEditor = hModule.GetEditor() sPath = hModule.Path If hEditor.Selected Then iStart = Min(hEditor.Line, hEditor.SelectionLine) iEnd = Max(hEditor.Line, hEditor.SelectionLine) Else iStart = 0 iEnd = hEditor.Count - 1 Endif aBreakpoint = hEditor.Breakpoints aBookmark = hEditor.Bookmarks $bIndentDim = Settings["/FormatCode/IndentLocal", 1] $bRemoveSpace = Settings["/FormatCode/RemoveSpaces", 0] $bKeepVoidLine = Settings["/FormatCode/KeepVoidLines", 0] If LCase(File.Ext(sPath)) = "md" Then $bRemoveSpace = False $iLevel = 0 If hEditor.TabIndent Then $iIndentSize = 0 $iLevel = Len(hEditor.GetIndent(iStart)) Else $iIndentSize = hEditor.TabSize $iLevel = Len(hEditor.GetIndent(iStart)) \ hEditor.TabSize Endif $bLastNewLine = True $iLastDim = -1 $bNextIndent = False $aSwitch = New Integer[] aText = Split(hEditor.Text, "\n") iEnd = Min(aText.Max, iEnd) X = hEditor.Column Y = hEditor.Line iLine = iStart While iLine <= iEnd $iLine = iLine sLine = aText[iLine] If Not LTrim(sLine) Then $bLastNewLine = True sLine = GetIndent($iLevel) Else hEditor.GetHighlight(iLine, ByRef aSymbols, ByRef aTypes) Select Case hEditor.Mode Case "gambas" sLine = IndentLineGambas(sLine) Case "css" sLine = IndentLineBraces(sLine, aSymbols, aTypes, False) Case "c", "c++", "javascript" sLine = IndentLineBraces(sLine, aSymbols, aTypes, True) End Select Endif If iLine < iStart Then Inc iLine Continue Endif If $bRemoveSpace Then sLine = RTrim(sLine) aLine = Split(sLine, "\n") If aLine.Count <= 1 Then If aText[iLine] <> sLine Then aText[iLine] = sLine bModified = True Endif Else aText[iLine] = aLine[0] aLine.Remove(0) aText.Insert(aLine, iLine + 1) If aBookmark.Count Then InsertLine(aBookmark, iLine + 1, aLine.Max) bBookmark = True Endif If aBreakpoint.Count Then InsertLine(aBreakpoint, iLine + 1, aLine.Max) bBreakpoint = True Endif If Y >= (iLine + 1) Then Y += aLine.Max iLine += aLine.Count iEnd += aLine.Count bModified = True Endif Inc iLine Wend If Not $bKeepVoidLine Then iLine = Max(1, iStart) While iLine <= iEnd If Not Trim(aText[iLine]) And If Not Trim$(aText[iLine - 1]) Then aText.Remove(iLine - 1) bModified = True 'hEditor.Remove(0, iLine - 1, 0, iLine) Dec iEnd If aBookmark.Count Then RemoveLine(aBookmark, iLine) bBookmark = True Endif If aBreakpoint.Count Then RemoveLine(aBreakpoint, iLine) bBreakpoint = True Endif If Y > iLine Then Dec Y Else Inc iLine Endif Wend Endif If bModified Then hEditor.Begin hEditor.SelectAll hEditor.Insert(aText.Join("\n")) hEditor.Bookmarks = aBookmark hEditor.Breakpoints = aBreakpoint hEditor.End hEditor.Goto(X, Y) If hModule Is FEditor Then FDebugInfo.RefreshTabs(hModule.Path, hModule.Name) Endif Dec Application.Busy End Private Sub IsStruct() As Boolean Dim aSym As String[] = Highlight.Symbols Dim iInd As Integer If aSym.Count >= 3 Then If aSym[iInd] = "PUBLIC" Then Inc iInd Return aSym[iInd] = "STRUCT" Endif End Private Sub IsEndStruct() As Boolean Dim aSym As String[] = Highlight.Symbols If aSym.Count = 2 And If aSym[0] = "END" And If aSym[1] = "STRUCT" Then Return True End Private Sub GetIndent(iLevel As Integer) As String If $iIndentSize = 0 Then Return String$(iLevel, "\t") Else Return Space$(iLevel * $iIndentSize) Endif End Private Sub IndentLineGambas(sLine As String) As String Dim aSym As String[] Dim sAdd As String Dim iNextLevel As Integer Dim sSym As String Dim sFuncSym As String Dim iPos As Integer Dim iLastType As Integer Dim iLevel As Integer Dim bNextIndent As Boolean sLine = LTrim(sLine) If Left(sLine) = "'" Then Return GetIndent($iLevel) & sLine Endif aSym = Highlight.Analyze(Highlight.Purge(Trim(sLine))) While aSym.Count iLastType = Highlight.Types[aSym.Max] If iLastType <> Highlight.Comment And If iLastType <> Highlight.Help Then Break aSym.Remove(aSym.Max) Wend If aSym.Count Then bNextIndent = $bNextIndent $bNextIndent = False ' bLastString = False ' If $bLastString And If Highlight.Types[0] = Highlight.String Then ' bLastString = True ' Endif ' ' $bLastString = iLastType = Highlight.String If iLastType = Highlight.Operator Then If InStr(":]);.!", aSym[aSym.Max]) = 0 Then 'And If aSym[0] <> "PRINT" Then $bNextIndent = True Endif Else If iLastType = Highlight.String And If Highlight.Types[0] = Highlight.String Then bNextIndent = True Endif If $bNeedNewLine Then If Not $bLastNewLine Then sAdd = "\n" $bNeedNewLine = False Endif If aSym.Count = 2 And If aSym[1] = ":" Then iNextLevel = $iLevel Dec $iLevel Else If FEditor.IsCurrentProc() Then $iLevel = 0 iNextLevel = 1 $bNeedNewLine = True If Not $bLastNewLine Then sAdd = "\n" $bLocalDeclDone = False Else If FEditor.IsCurrentEndProc() Then $iLevel = 0 iNextLevel = 0 $bNeedNewLine = True If Not $bLastNewLine Then sAdd = "\n" Else If IsStruct() Then $iLevel = 0 iNextLevel = 1 If Not $bLastNewLine Then sAdd = "\n" Else If IsEndStruct() Then $iLevel = 0 iNextLevel = 0 $bNeedNewLine = True Else sSym = aSym[0] If aSym.Count > 2 Then sFuncSym = LCase(aSym[2]) If sSym = "END" And If aSym.Count >= 2 Then sSym &= " " & aSym[1] If sSym = "DIM" And If Not $bLocalDeclDone Then $iLastDim = $iLine If Not $bIndentDim Then $iLevel = 0 iNextLevel = 1 Else $bLocalDeclDone = True If $iLastDim = ($iLine - 1) Then If Not bNextIndent Then 'Not bLastString And If Not bLastWrap Then If Not $bLastNewLine Then sAdd = "\n" Else Inc $iLastDim Endif Endif If sSym = "END SELECT" Then $iLevel -= 2 iNextLevel = $iLevel Else If Right(aSym[0]) = ":" Then iNextLevel = $iLevel $iLevel = 0 Else If sSym = "IF" Then iNextLevel = $iLevel iPos = aSym.Find("THEN") If iPos < 0 Or If iPos = aSym.Max Then Inc iNextLevel Else If sSym = "SELECT" Then '$iLastSelect = $iLine iNextLevel = $iLevel + 2 Else If $cClose.Exist(sSym) Then Dec $iLevel iNextLevel = $iLevel If $cOpen.Exist(sSym) Then Inc iNextLevel Endif Endif Endif $bLastNewLine = False $iLevel = Max(0, $iLevel) iNextLevel = Max(0, iNextLevel) iLevel = $iLevel If bNextIndent Then Inc iLevel sLine = sAdd & GetIndent(iLevel) & sLine '& " '" & If(bLastWrap, "W", "") & If(bLastString, "S", "") $iLevel = iNextLevel Return sLine Endif End Private Sub CountStr(sStr As String, sCount As String) As Integer Dim iPos As Integer Dim N As Integer Do iPos = InStr(sStr, sCount, iPos + 1) If iPos = 0 Then Return N Inc N Loop End Private Sub IndentLineBraces(sLine As String, aSymbols As String[], aTypes As String[], bLang As Boolean) As String Dim I As Integer Dim iNextLevel As Integer Dim iClose As Integer Dim iOpen As Integer Dim sSym As String Dim bNextIndent As Boolean Dim sFirst As String Dim sLast As String If aTypes.Count = 1 And If aTypes[0] = Highlight.Comment Then Return sLine sLine = LTrim(sLine) iNextLevel = $iLevel bNextIndent = $bNextIndent $bNextIndent = False For I = 0 To aSymbols.Max If aTypes[I] = Highlight.Comment Then Continue sSym = aSymbols[I] If Not Trim(sSym) Then Continue sLast = sSym If aTypes[I] = Highlight.String Then Continue If Not sFirst Then sFirst = sSym iOpen += CountStr(sSym, "{") iClose += CountStr(sSym, "}") iOpen += CountStr(sSym, "(") iClose += CountStr(sSym, ")") iOpen += CountStr(sSym, "[") iClose += CountStr(sSym, "]") Next If bLang Then If sFirst = "if" Or If sFirst = "else" Or If sFirst = "for" Or If sFirst = "while" Or If sFirst = "do" Then If InStr(";}{", Right(sLast)) = 0 Then $bNextIndent = True Endif Else If sFirst = "case" Or If sFirst = "default" Then Dec $iLevel Else If sFirst = "switch" Then $aSwitch.Push($iLevel) Else If sFirst = "{" Then If $aSwitch.Count And If $iLevel = $aSwitch[$aSwitch.Max] Then Inc iOpen Else If sFirst = "}" Then If $aSwitch.Count And If $iLevel = ($aSwitch[$aSwitch.Max] + 2) Then Inc iClose $aSwitch.Pop() Endif Endif If bNextIndent Then If sFirst <> "{" Then Inc $iLevel Endif Endif If iClose > iOpen Then $iLevel += iOpen - iClose iNextLevel += iOpen - iClose Else iNextLevel += iOpen - iClose Endif $iLevel = Max(0, $iLevel) iNextLevel = Max(0, iNextLevel) sLine = GetIndent($iLevel) & sLine $iLevel = iNextLevel Return sLine End gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/000077500000000000000000000000001411575327000221215ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/CField.class000066400000000000000000000010471411575327000243000ustar00rootroot00000000000000' Gambas class file Public Name As String Public Type As Integer Public DefaultValue As Variant Public Length As Integer Public (Key) As Boolean Public OldName As String Public Description As String Public Collation As String Public Sub _new(Optional hField As Field) If hField Then With hField Name = .Name OldName = .Name Type = .Type DefaultValue = .Default Length = .Length Collation = .Collation Key = hField.Table.PrimaryKey.Find(Name) >= 0 End With Endif End gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/CIndexField.class000066400000000000000000000004301411575327000252630ustar00rootroot00000000000000' Gambas class file Public Index As String Public Field As String Public Unique As Boolean Public Description As String Public List As String[] Public Sub _new(Optional hIndex As Index) If hIndex Then Index = hIndex.Name Unique = hIndex.Unique Endif End gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/FConnectionEditor.class000066400000000000000000001156631411575327000265400ustar00rootroot00000000000000' Gambas class file Public Path As String Property Read ReadOnly As Boolean Private $hConn As Connection 'Private $bModify As Boolean Private $bModifyTable As Boolean Private $bModifyMetadata As Boolean Private $sTable As String Private $sType As String Private $sDescription As String Private $bReadOnly As Boolean Private $bShowSystem As Boolean Private $sTitle As String Private $aRequest As String[] Private $aField As New CField[] Private $cFieldName As New Collection Private $aIndexField As New CIndexField[] Private $cFieldInfo As New Collection Private $aCollations As String[] Private $bMetadata As Boolean Private $bTemplate As Variant Private Const KEY_REQUEST As String = "$" Private $bInCheckCurrent As Boolean Static Private $hSystemTableImage As Image Public Sub _new(sPath As String) Path = sPath Me.Name = File.BaseName(Path) With tbvField .Columns.Count = 6 With tbvField.Columns[0] .Text = " " .Width = 24 End With With tbvField.Columns[1] .Text = ("Name") .Width = Desktop.Scale * 24 End With With tbvField.Columns[2] .Text = ("Type") .Width = Desktop.Scale * 14 End With With tbvField.Columns[3] .Text = ("Length") .Width = Desktop.Scale * 14 End With With tbvField.Columns[4] .Text = ("Default value") .Width = Desktop.Scale * 24 End With With tbvField.Columns[5] .Text = ("Collation") .Width = Desktop.Scale * 24 End With End With With tbvIndex .Columns.Count = 3 With tbvIndex.Columns[0] .Text = ("Index") .Width = Desktop.Scale * 24 End With With tbvIndex.Columns[1] .Text = ("Unique") .Width = Desktop.Scale * 12 End With With tbvIndex.Columns[2] .Text = ("Field") .Width = Desktop.Scale * 24 End With End With End Static Public Sub GetSystemTablePicture(iSize As Integer) As Picture If Not $hSystemTableImage Then $hSystemTableImage = Picture["icon:/32/table"].Image $hSystemTableImage.PaintRect(0, 0, 32, 32, Color.RGB(255, 127, 127, 192)) Endif Return $hSystemTableImage.Stretch(iSize, iSize).Picture End Private Sub LoadList(Optional sTable As String) Dim sFirst As String MConnection.FillViewWithTables(lvwTable, $hConn, $bShowSystem) lvwTable.MoveFirst Try sFirst = lvwTable.Item.Key With lvwTable.Add(KEY_REQUEST, ("SQL requests"), Picture["icon:/small/find"]) If sFirst Then .MoveBefore(sFirst) End With If sTable Then If lvwTable.Exist("T" & sTable) Or If lvwTable.Exist("S" & sTable) Then $sTable = "" LoadTable(sTable) Return Endif Endif lvwTable[KEY_REQUEST].Selected = True End Private Sub GetTableList() As String[] Dim aTable As New String[] lvwTable.MoveFirst While lvwTable.Available aTable.Add(lvwTable.Item.Text) lvwTable.MoveNext Wend Return aTable End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub SetReadOnly(bReadOnly As Boolean) btnKill.Enabled = Not bReadOnly btnRename.Enabled = Not bReadOnly 'btnCopy.Enabled = Not bReadOnly tlbField.Enabled = Not bReadOnly tlbIndex.Enabled = Not bReadOnly $bReadOnly = bReadOnly DrawTitle End Public Sub Form_Activate() DB.Current = $hConn End Public Sub GetConnection() As Connection Return $hConn End Public Sub GetDescription() As String Return $sTitle End Private Sub GetRequestTitle(sReq As String) As String Dim iPos As Integer If Left(sReq, 2) = "/*" Then iPos = InStr(sReq, "\n") If iPos Then sReq = Left(sReq, iPos - 1) sReq = Trim(Mid$(sReq, 3)) If Right(sReq, 2) = "*/" Then sReq = Trim(Left(sReq, -2)) Else sReq = Trim(Replace(sReq, "\n", " ")) Endif If String.Len(sReq) > 48 Then sReq = String.Left(sReq, 48) & "…" Return sReq End Private Sub UpdateRequest() Dim I As Integer tabRequest.Count = $aRequest.Count For I = 0 To tabRequest.Count - 1 tabRequest[I].Picture = Picture["icon:/small/find"] tabRequest[I].Text = GetRequestTitle($aRequest[I]) Next 'tabRequest[tabRequest.Count - 1].Picture = Picture["icon:/small/add"] tabRequest_Click End Private Sub LoadRequest() Dim hConfig As Settings = New Settings(Path) $aRequest = hConfig["Connection/Requests"] If Not $aRequest Or If $aRequest.Count = 0 Then $aRequest = New String[] $aRequest.Add("") Endif End Private Sub SaveRequest() Dim hConfig As Settings = New Settings(Path) hConfig["Connection/Requests"] = $aRequest hConfig.Save End Public Sub Reload() As Boolean Dim hConfig As Settings Dim sTitle As String Dim iBusy As Integer iBusy = Application.Busy hConfig = New Settings(Path) If $hConn Then 'datData.Table = "" 'datRequest.Table = "" $hConn.Close Endif Inc Application.Busy ' If hConfig["Connection/Type"] = "Template" Then ' ' $hConn = Null ' ' panData.Hide ' btnRequest.Hide ' ' $sTitle = "template:///" & File.BaseName(Path) ' ' Else $hConn = New Connection MConnection.InitFrom($hConn, hConfig, Me.Name, True) $hConn.Open $aCollations = Null Try $aCollations = $hConn.Collations.Sort() If $aCollations Then $aCollations.Add("", 0) tbvField.Columns[5].Width = Desktop.Scale * 24 Else tbvField.Columns[5].Width = 0 Endif 'DB.Current = $hConn sTitle = $hConn.Type & "://" If $hConn.User Then sTitle &= $hConn.User & "@" If $hConn.Host Then sTitle &= $hConn.Host Else If $hConn.Type = "sqlite" Then sTitle &= "~" Else sTitle &= "localhost" Endif Endif sTitle &= "/" & $hConn.Name $sTitle = sTitle dvwData.Editable = False datData.Connection = $hConn datRequest.Connection = $hConn panData.Show 'btnRequest.Show ' Endif btnTitle.Tooltip = $sTitle $bMetadata = hConfig["Connection/DisplayMetadata"] $bTemplate = hConfig["Connection/RememberTemplate"] If $bMetadata Then MConnection.CreateMetadataTable($hConn) tbvField.Columns.Count = 7 With tbvField.Columns[6] .Text = ("Description") .Width = Desktop.Scale * 24 End With tbvIndex.Columns.Count = 4 With tbvIndex.Columns[3] .Text = ("Description") .Width = Desktop.Scale * 24 End With Else tbvField.Columns.Count = 6 tbvIndex.Columns.Count = 3 Endif LoadRequest UpdateRequest LoadList($sTable) UpdateDefinition DrawTitle Me.Enabled = True Dec Application.Busy Catch Application.Busy = iBusy Me.Enabled = False FMain.ShowError(("Unable to connect to database.") & "

    " & Error.Text) Return True End Public Sub LoadFile() As Boolean ReadConfig Return Reload() End Public Function Save() As Boolean If Not $bModifyTable And If Not $bModifyMetadata Then Return If SaveTable() Then Return True UpdateDefinition $bModifyTable = False $bModifyMetadata = False DrawTitle End Private Sub DrawTitle() Project.DrawTitle(Me, True) End Private Sub ModifyTable(Optional bReset As Boolean) If Project.ReadOnly Then Return If $bModifyTable <> bReset Then Return $bModifyTable = Not bReset DrawTitle If $bModifyTable Then Inc Project.TimeStamp End Private Sub ModifyMetadata(Optional bReset As Boolean) If Project.ReadOnly Then Return If $bModifyMetadata <> bReset Then Return $bModifyMetadata = Not bReset DrawTitle If $bModifyMetadata Then Inc Project.TimeStamp End Public Function IsModified() As Boolean Return $bModifyTable Or $bModifyMetadata End Public Sub Form_Close() SaveRequest Settings.Write(spnTable) datData.Enabled = False splTable.Hide Try $hConn.Close Project.AddRecentFile(Me) Project.Files[Path] = Null End Public Sub ReadConfig() Dim hCtrl As Control edtRequest.ReadConfig edtRequest.ShowLimit = False edtRequest.ShowModified = False edtRequest.ShowLineNumber = False For Each hCtrl In [panToolBar, tabTable, tlbData, tlbData2, tlbData3, tlbField, tbvField, tlbIndex, tbvIndex, dvwData, dvwRequest] Project.SetSmallFont(hCtrl) Next Project.SetNormalFont(lvwTable) Settings.Read(spnTable) End Private Sub SelectTable(sTable As String) If lvwTable.Exist("T" & sTable) Then lvwTable["T" & sTable].Selected = True Return Endif If lvwTable.Exist("S" & sTable) Then lvwTable["S" & sTable].Selected = True Return Endif 'Try lvwTable["T" & sTable].Selected = True 'If Error Then Try lvwTable["S" & sTable].Selected = True End Private Sub CheckCurrent() As Boolean If $bInCheckCurrent Then Return $bInCheckCurrent = True If tbvField.Save() Then Goto CANCEL If tbvIndex.Save() Then Goto CANCEL If IsModified() Then Select Case Message.Warning(Subst(("The table '&1' has been modified. Do you want to save it?"), $sTable), ("Save"), ("Do not save"), ("Cancel")) Case 1 If Save() Then Goto CANCEL Case 2 ModifyTable(True) ModifyMetadata(True) Case 3 Goto CANCEL End Select Endif $bInCheckCurrent = False Return CANCEL: SelectTable($sTable) $bInCheckCurrent = False Return True End Private Sub UpdateCount() Dim iCount As Integer iCount = datData.Count If iCount = 0 Then lblCount.Text = ("No record") & " " Else If iCount = 1 Then lblCount.Text = ("One record") & " " Else lblCount.Text = Subst(("&1 records"), Format(iCount, ",0")) & " " Endif End Private Sub ReloadTable() Dim hTable As Table Dim hField As Field Dim hIndex As Index Dim hCField As CField Dim hCIndexField As CIndexField Dim sField As String Dim bCreate As Boolean Dim hResult As Result Dim cDescField As Collection Dim cDescIndex As Collection 'UpdateDefinition($sTable) $aField.Clear $cFieldName.Clear $aIndexField.Clear $cFieldInfo.Clear If $bMetadata Then $sDescription = "" cDescField = New Collection cDescIndex = New Collection Try hResult = $hConn.Find(MConnection.METADATA_TABLE_NAME, "sTableName = &1", $sTable) If hResult And If hResult.Available Then For Each hResult Select Case hResult!iType Case MConnection.MD_TABLE $sDescription = hResult!sValue Case MConnection.MD_FIELD cDescField[hResult!sKey] = hResult!sValue Case MConnection.MD_INDEX cDescIndex[hResult!sKey] = hResult!sValue End Select Next Endif Endif hTable = $hConn.Tables[$sTable] $sType = hTable.Type For Each hField In hTable.Fields hCField = New CField(hField) If $bMetadata Then hCField.Description = cDescField[hCField.Name] $aField.Add(hCField) $cFieldName[hField.Name] = True Next For Each hIndex In hTable.Indexes If hIndex.Primary Then Continue hCIndexField = New CIndexField(hIndex) If $bMetadata Then hCIndexField.Description = cDescIndex[hCIndexField.Index] $aIndexField.Add(hCIndexField) bCreate = False For Each sField In hIndex.Fields If bCreate Then hCIndexField = New CIndexField $aIndexField.Add(hCIndexField) Else bCreate = True Endif hCIndexField.Field = sField Next Next tbvField.Rows.Count = $aField.Count tbvField.Refresh 'tbvField.Columns.Width = -1 tbvField.Rows.H = -1 tbvField.MoveTo(0, 1) UpdateFieldToolbar tbvIndex.Rows.Count = $aIndexField.Count tbvIndex.Refresh tbvIndex.Rows.H = -1 Try tbvIndex.MoveTo(0, 1) UpdateIndexToolbar $bModifyTable = False $bModifyMetadata = False DrawTitle datData.Table = $sTable datData.Refresh UpdateCount splTable.Enabled = True 'btnRequest.Value = False panRequest.Hide tabTable.Show datRequest.Hide datData.Show tlbData.Show SetReadOnly(hTable.System) End Private Sub LoadTable(Optional sNewTable As String) As Boolean If CheckCurrent() Then Return True Try lvwTable["T" & sNewTable].Selected = True Try lvwTable["S" & sNewTable].Selected = True If Not sNewTable Or If sNewTable = $sTable Then Return Inc Application.Busy $sTable = sNewTable ReloadTable Dec Application.Busy Catch splTable.Enabled = False Dec Application.Busy Message.Error(Subst(("Unable to load table '&1'."), $sTable) & "\n\n" & Error.Text) End Public Sub lvwTable_Select() Dim sKey As String Try sKey = lvwTable.Current.Key If Not sKey Then Return If Left(sKey) = ">" Then lvwTable.Current.Expanded = True Return Endif If sKey = KEY_REQUEST Then If CheckCurrent() Then Return $sTable = "" panRequest.Show tabTable.Hide datData.Hide datRequest.Show tlbData.Hide SetReadOnly(True) edtRequest.SetFocus Else If LoadTable(Mid$(sKey, 2)) Then Return Endif End Public Sub btnRunQuery_Click() Dim sReq As String = Trim(edtRequest.Text) Dim iPos As Integer Dim sStart As String Dim fTimer As Float Dim sErr As String While Left(sReq, 2) = "/*" iPos = InStr(sReq, "*/") If iPos = 0 Then Return sReq = Trim(Mid$(sReq, iPos + 2)) Wend If Not sReq Then Return fTimer = Timer Inc Application.Busy Project.SetMessage(("Running request") & "...") iPos = InStr(sReq, " ") If iPos Then sStart = UCase(Left$(sReq, iPos - 1)) If ["SELECT", "WITH", "PRAGMA"].Exist(sStart) Then Try datRequest.Table = sReq Else Try $hConn.Exec(sReq) If Error Then sErr = Error.Text Else LoadList($sTable) Endif Endif Dec Application.Busy If sErr Then FMain.ShowError(("Unable to run query.") & "\n\n" & sErr) Else Project.SetMessage(("OK"), True) Project.SetMessage(" " & Subst(("(in &1 s)"), Format(Timer - fTimer, "0.#")), True) Endif End Public Sub tbvField_Data(Row As Integer, Column As Integer) Dim hCField As CField Try hCField = $aField[Row] If Not hCField Then Return With tbvField.Data Select Case Column Case 0 If hCField.Key Then .Picture = Picture["icon:/small/key"] .Alignment = Align.Center Endif Case 1 .Text = hCField.Name Case 2 .Text = MConnection.TypeToString(hCField.Type) Case 3 If hCField.Type = gb.String Then If hCField.Length Then .Text = hCField.Length Else .Text = ("unlimited") Endif Endif Case 4 .Text = Str(hCField.DefaultValue) Case 5 .Text = hCField.Collation Case 6 .Text = hCField.Description End Select .Padding = 4 End With End Public Sub tbvIndex_Data(Row As Integer, Column As Integer) Dim hIndexField As CIndexField hIndexField = $aIndexField[Row] If Not hIndexField Then Return With tbvIndex.Data Select Case Column Case 0 .Text = hIndexField.Index Case 1 If hIndexField.Index Then .Text = Str(hIndexField.Unique) Case 2 .Text = hIndexField.Field Case 3 .Text = hIndexField.Description End Select .Padding = 4 'If hIndexField.Index Then .Background = Color.Merge(Color.LightBackground, Color.TextBackground) End With End Public Sub tbvField_Activate() Dim hField As CField If $bReadOnly Then Return hField = $aField[tbvField.Row] Select Case tbvField.Column Case 0 hField.Key = Not hField.Key tbvField.Current.Refresh ModifyTable End Select End Public Sub tbvField_Click() Dim hField As CField If $bReadOnly Then Return hField = $aField[tbvField.Row] Select Case tbvField.Column Case 1 tbvField.Edit Case 2 tbvField.Edit([("Boolean"), ("Integer"), ("Long"), ("Serial"), ("Float"), ("String"), ("Date"), ("Blob")], True) Case 3 If hField.Type = gb.String Then tbvField.Edit(["8", "16", "32", "48", "64", "128", "255", ("unlimited")]) Endif Case 4 If hField.Type = gb.Boolean Then tbvField.Edit(["True", "False"]) ' Don't translate! Else tbvField.Edit Endif Case 5 If $aCollations Then tbvField.Edit($aCollations, True) Case 6 tbvField.Edit ' Case 7 ' If hField.Index Then tbvField.Edit End Select End Public Sub tbvIndex_Click() Dim hIndex As CIndexField If $bReadOnly Then Return If tbvIndex.Row < 0 Then Return hIndex = $aIndexField[tbvIndex.Row] Select Case tbvIndex.Column Case 0 If hIndex.Index Then tbvIndex.Edit Endif Case 1 If hIndex.Index Then tbvIndex.Edit(["True", "False"], True) Endif Case 2 tbvIndex.Edit(FreeIndexFields(True), True) Case 3 tbvIndex.Edit End Select End Private Sub RenameField(hField As CField, sNewName As String) Dim hCIndex As CIndexField For Each hCIndex In $aIndexField If UCase(hCIndex.Field) = UCase(hField.Name) Then hCIndex.Field = sNewName Endif Next $cFieldName[hField.Name] = Null hField.Name = sNewName $cFieldName[sNewName] = True End Public Sub tbvField_Save(Row As Integer, Column As Integer, sData As String) Dim hField As CField Dim iVal As Integer Dim vVal As Variant hField = $aField[Row] Select Column Case 1 sData = Trim(sData) If Not sData Then Return If $cFieldName.Exist(sData) Then Balloon.Warning(("This name is already in used."), tbvField.Editor) Stop Event Return Endif If hField.Name <> sData Then RenameField(hField, sData) Endif Case 2 'PRINT sData; " -> "; TypeFromString(sData) hField.Type = MConnection.TypeFromString(sData) hField.DefaultValue = Null hField.Length = 0 tbvField[Row, 3].Refresh tbvField[Row, 4].Refresh Case 3 If sData = ("unlimited") Then hField.Length = 0 Else Try iVal = CInt(sData) If Error Then Balloon.Warning(("Please enter a number."), tbvField.Editor) Stop Event Return Endif If iVal < 1 Or iVal > 255 Then Balloon.Warning(("The length must be greater than 1 and lower than 255."), tbvField.Editor) Stop Event Return Endif hField.Length = iVal Endif Case 4 If hField.Type <> gb.String Then If sData Then vVal = Val(sData) If hField.Type = gb.Float Then If TypeOf(vVal) = gb.Integer Or If TypeOf(vVal) = gb.Long Then vVal = CFloat(vVal) Endif Else If hField.Type = gb.Long Then If TypeOf(vVal) = gb.Integer Then vVal = CLong(vVal) Endif Endif If TypeOf(vVal) <> hField.Type Then Balloon.Warning(("Type mismatch."), tbvField.Editor) Stop Event Return Endif Endif Else vVal = sData Endif hField.DefaultValue = vVal Case 5 hField.Collation = sData Case 6 hField.Description = sData End Select If Column < 6 Then ModifyTable Else ModifyMetadata Endif End Private Function FindIndex(sName As String) As Boolean Dim hIndexField As CIndexField For Each hIndexField In $aIndexField If sName = hIndexField.Index Then Return True Next End Public Sub tbvIndex_Save(Row As Integer, Column As Integer, sData As String) Dim hIndex As CIndexField hIndex = $aIndexField[Row] Select Column Case 0 sData = Trim(sData) If Not sData Then Return If FindIndex(sData) Then Balloon.Warning(("This name already exists."), tbvIndex.Editor) Stop Event Return Endif hIndex.Index = sData Case 1 hIndex.Unique = sData = "True" Case 2 hIndex.Field = sData Case 3 hIndex.Description = sData End Select If Column < 3 Then ModifyTable Else ModifyMetadata Endif End Public Sub btnNewField_Click() Dim hField As CField Dim iInd As Integer Dim iRow As Integer If $bReadOnly Then Return If tbvField.Save() Then Return hField = New CField With hField For iInd = 1 To 1000 .Name = ("Field") & CStr(iInd) If Not $cFieldName.Exist(.Name) Then Break Next .Type = gb.Integer $cFieldName[.Name] = True End With iRow = tbvField.Row $aField.Add(hField, iRow + 1) Inc tbvField.Rows.Count tbvField.Rows[tbvField.Rows.Count - 1].H = -1 ModifyTable tbvField.MoveTo(iRow + 1, 1) tbvField_Click End Private Function IsFieldUsedInIndex(sField As String) As Boolean Dim iRow As Integer For iRow = 0 To $aIndexField.Max If sField = $aIndexField[iRow].Field Then Return True Next End Public Sub btnKillField_Click() Dim iRow As Integer If $bReadOnly Then Return If $aField.Count <= 1 Then Return If tbvField.Save() Then Return iRow = tbvField.Row If IsFieldUsedInIndex($aField[iRow].Name) Then Message.Warning(("This field is used in an index.")) Return Endif $cFieldName[$aField[iRow].Name] = Null $aField.Remove(iRow) Dec tbvField.Rows.Count ModifyTable End Public Sub btnDownField_Click() If $bReadOnly Then Return If tbvField.Row = (tbvField.Rows.Count - 1) Then Return If tbvField.Save() Then Return Swap $aField[tbvField.Row], $aField[tbvField.Row + 1] tbvField.Rows[tbvField.Row].Refresh tbvField.Rows[tbvField.Row + 1].Refresh Inc tbvField.Row ModifyTable End Public Sub btnUpField_Click() If $bReadOnly Then Return If tbvField.Row = 0 Then Return If tbvField.Save() Then Return Swap $aField[tbvField.Row], $aField[tbvField.Row - 1] tbvField.Rows[tbvField.Row].Refresh tbvField.Rows[tbvField.Row - 1].Refresh Dec tbvField.Row ModifyTable End Public Sub btnNewIndex_Click() Dim hIndexField As CIndexField Dim iInd As Integer If $bReadOnly Then Return If tbvIndex.Save() Then Return hIndexField = New CIndexField With hIndexField For iInd = 1 To 1000 .Index = $sTable & "_" & ("Index") & CStr(iInd) If Not FindIndex(.Index) Then Break Next .Field = $aField[0].Name End With $aIndexField.Add(hIndexField) Inc tbvIndex.Rows.Count tbvIndex.Rows[tbvIndex.Rows.Count - 1].H = -1 ModifyTable tbvIndex.MoveTo(tbvIndex.Rows.Count - 1, 0) tbvIndex_Click End Private Function FreeIndexFields(Optional bExcept As Boolean) As String[] Dim iRow As Integer Dim hField As CField Dim cField As New Collection Dim bVal As Boolean Dim aField As New String[] For Each hField In $aField cField[hField.Name] = True Next iRow = tbvIndex.row Do If $aIndexField[iRow].Index Then Break Dec iRow Loop Do If Not bExcept Or iRow <> tbvIndex.Row Then cField[$aIndexField[iRow].Field] = Null Endif Inc iRow If iRow >= $aIndexField.Count Then Break If $aIndexField[iRow].Index Then Break Loop For Each bVal In cField aField.Add(cField.Key) Next Return aField End Public Sub btnNewIndexField_Click() Dim hIndexField As CIndexField Dim iRow As Integer Dim aField As String[] If $bReadOnly Then Return If $aIndexField.Count = 0 Then Return iRow = tbvIndex.Row If iRow < 0 Then Return If tbvIndex.Save() Then Return aField = FreeIndexFields(False) If aField.Count = 0 Then Return hIndexField = New CIndexField With hIndexField .Field = aField[0] End With Do Inc iRow If iRow >= tbvIndex.Rows.Count Then Break If $aIndexField[iRow].Index Then Break Loop $aIndexField.Add(hIndexField, iRow) Inc tbvIndex.Rows.Count tbvIndex.Rows[tbvIndex.Rows.Count - 1].H = -1 tbvIndex.MoveTo(iRow, 1) ModifyTable End Public Sub btnKillIndex_Click() Dim sIndex As String Dim bUnique As Boolean Dim iRow As Integer If $bReadOnly Then Return If $aIndexField.Count = 0 Then Return iRow = tbvIndex.Row If iRow < 0 Then Return If tbvIndex.Save() Then Return With $aIndexField[iRow] sIndex = .Index bUnique = .Unique End With $aIndexField.Remove(iRow) If iRow < $aIndexField.Count Then With $aIndexField[iRow] If Not .Index Then .Index = sIndex .Unique = bUnique Endif End With Endif Dec tbvIndex.Rows.Count tbvIndex.Refresh ModifyTable End Private Sub CanDownIndex() As Boolean Dim iRow As Integer If $bReadOnly Then Return iRow = tbvIndex.Row If iRow < 0 Then Return If iRow = ($aIndexField.Count - 1) Then Return If $aIndexField[iRow + 1].Index Then Return Return True End Public Sub btnDownIndex_Click() Dim iRow As Integer If Not CanDownIndex() Then Return If tbvIndex.Save() Then Return iRow = tbvIndex.Row Swap $aIndexField[iRow].Field, $aIndexField[iRow + 1].Field Inc tbvIndex.Row tbvIndex.Refresh ModifyTable End Private Sub CanUpIndex() As Boolean Dim iRow As Integer If $bReadOnly Then Return iRow = tbvIndex.Row If iRow < 0 Then Return If iRow = 0 Then Return If $aIndexField[iRow].Index Then Return Return True End Public Sub btnUpIndex_Click() Dim iRow As Integer If Not CanUpIndex() Then Return If tbvIndex.Save() Then Return iRow = tbvIndex.Row Swap $aIndexField[iRow].Field, $aIndexField[iRow - 1].Field Dec tbvIndex.Row tbvIndex.Refresh ModifyTable End Private Sub RemoveIndexFromTable(sTable As String) Dim hTable As Table Dim hIndex As Index hTable = $hConn.Tables[sTable] For Each hIndex In hTable.Indexes If hIndex.Primary Then Continue hTable.Indexes.Remove(hIndex.Name) Next End Private Sub WriteTableInDatabase(sName As String, sType As String, aPrimaryKey As String[], Optional bKill As Boolean) Dim hTable As Table Dim hCField As CField Dim hCIndex As CIndexField Dim hLastCIndex As CIndexField Dim sError As String Dim sIndex As String Try $hConn.Tables.Remove(sName) hTable = $hConn.Tables.Add(sName, sType) With hTable For Each hCField In $aField .Fields.Add(hCField.Name, hCField.Type, hCField.Length, hCField.DefaultValue, hCField.Collation) Next .PrimaryKey = aPrimaryKey .Update End With For Each hCIndex In $aIndexField If hCIndex.Index Then hCIndex.List = [hCIndex.Field] hLastCIndex = hCIndex Else hLastCIndex.List.Add(hCIndex.Field) Endif Next For Each hCIndex In $aIndexField If Not hCIndex.Index Then Continue sIndex = hCIndex.Index If bKill Then sIndex = "_gambas_" & sIndex hTable.Indexes.Add(sIndex, hCIndex.List, hCIndex.Unique) Next Finally sError = Replace(Error.Text, sName, $sTable) If bKill Then Try $hConn.Tables.Remove(sName) Endif Catch Error.Raise(sError) End Private Sub WriteTable(Optional sOldTable As String) As Boolean Dim aPrimaryKey As New String[] Dim hCField As CField Dim hCIndexField As CIndexField Dim sTemp As String Dim rTemp As Result Dim rInfo As Result Dim rTable As Result Dim sError As String Dim bTrans As Boolean Dim bOK As Boolean ' If $hFieldEditor.Hide() Then Return True ' If $hIndexEditor.Hide() Then Return True If $bModifyTable Or If sOldTable Then For Each hCField In $aField If hCField.Key Then aPrimaryKey.Add(hCField.Name) Endif Next If aPrimaryKey.Count = 0 Then Message.Warning(Subst(("The table '&1' has no primary key."), If(sOldTable, sOldTable, $sTable))) Return True Endif ' If frmData Then ' If frmData.IsModified() Then frmData.btnSaveData_Click ' frmData.Delete ' frmData = Null ' Endif Inc Application.Busy If sOldTable Then If MConnection.CountTableData($hConn, sOldTable) Then sTemp = sOldTable 'MConnection.CopyTableData($hConn, sOldName) Endif 'WriteTableInDatabase(MConnection.GetTempTableName($hConn), $sType, aPrimaryKey, True) RemoveIndexFromTable(sOldTable) WriteTableInDatabase($sTable, $sType, aPrimaryKey) Else If MConnection.CountTableData($hConn, $sTable) Then sTemp = MConnection.CopyTableData($hConn, $sTable) Endif WriteTableInDatabase(MConnection.GetTempTableName($hConn), $sType, aPrimaryKey, True) WriteTableInDatabase($sTable, $sType, aPrimaryKey) Endif 'hTable = $hConn.Handle.Tables.Add($sName, sType) If sTemp Then bTrans = True $hConn.Begin rTemp = $hConn.Find(sTemp) rTable = $hConn.Create($sTable) For Each rTemp For Each hCField In $aField If hCField.OldName Then Try rTable[hCField.Name] = rTemp[hCField.OldName] If Error Then Try rTable[hCField.Name] = MConnection.Convert(rTemp[hCField.OldName], hCField.Type) Endif 'If IsNull(rTable[hCField.Name]) Then Stop ' Why this breakpoint ? Endif Next Try rTable.Update 'IF Error THEN PRINT "Update: "; Error.Text Next $hConn.Commit bTrans = False Endif Endif If $bMetadata Then If Not MConnection.CreateMetadataTable($hConn) Then bTrans = True $hConn.Begin Try $hConn.Delete(MConnection.METADATA_TABLE_NAME, "sTableName = &1", $sTable) ' rResult = $hConn.Exec("select pg_attribute.attname, pg_attribute.atttypid::int, pg_attribute.atttypmod, pg_attribute.attnotnull, pg_attrdef.adsrc, pg_attribute.atthasdef, pg_collation.collname from pg_class, pg_attribute LEFT JOIN pg_catalog.pg_attrdef ON" ' " (pg_attrdef.adnum = pg_attribute.attnum AND pg_attrdef.adrelid = pg_attribute.attrelid) LEFT JOIN pg_collation ON (pg_collation.oid = pg_attribute.attcollation) where pg_class.relname = '__gb_metadata' and (pg_class.relnamespace in (select oid from pg_namespace where" ' " nspname = 'public')) and pg_attribute.attnum > 0 and not pg_attribute.attisdropped and pg_attribute.attrelid = pg_class.oid") ' ' rResult = $hConn.Exec("select relname from pg_class where (relkind = 'r' or relkind = 'v') and (relname = '__gb_metadata') and (relnamespace in (select oid from pg_namespace where nspname = 'public'))") ' For Each hCField In $aField If Not hCField.Description Then Continue rInfo = $hConn.Create(MConnection.METADATA_TABLE_NAME) rInfo!sTableName = $sTable rInfo!iType = MConnection.MD_FIELD rInfo!sKey = hCField.Name rInfo!sValue = hCField.Description rInfo.Update Next For Each hCIndexField In $aIndexField If Not hCIndexField.Index Then Continue If Not hCIndexField.Description Then Continue rInfo = $hConn.Create(MConnection.METADATA_TABLE_NAME) rInfo!sTableName = $sTable rInfo!iType = MConnection.MD_INDEX rInfo!sKey = hCIndexField.Index rInfo!sValue = hCIndexField.Description rInfo.Update Next $hConn.Commit bTrans = False Endif Endif bOK = True datData.Reset ModifyTable(True) ModifyMetadata(True) ReloadTable Finally sError = Error.Text If bTrans Then $hConn.Rollback If sOldTable Then If bOK Then Try $hConn.Tables.Remove(sOldTable) Else If sTemp Then Try $hConn.Tables.Remove(sTemp) Endif 'Endif Dec Application.Busy Catch Message.Error(Subst(("Cannot write table '&1'."), $sTable) & "\n\n" & sError) Return True End Private Function SaveTable() As Boolean If $bReadOnly Then Return If tbvField.Save() Then Return True If tbvIndex.Save() Then Return True If Not IsModified() Then Return If WriteTable() Then Return True End Public Sub btnSaveTable_Click() Save End Public Sub mnuSave_Click() Save End Public Sub mnuReload_Click() If CheckCurrent() Then Return Project.ReloadFile(Me) End Public Sub btnNewTable_Click() Dim aType As String[] Dim sName As String If CheckCurrent() Then Return If $hConn.Type = "mysql" Then aType = ["MyISAM", "MERGE", "MEMORY", "InnoDB", "BDB", "ISAM", "ARCHIVE"] Endif If FNewTable.Run($hConn, "", "InnoDB", aType) Then Return sName = FNewTable.TableName If MConnection.CreateTable($hConn, sName, FNewTable.TableType) Then Return UpdateDefinition lvwTable.Add("T" & sName, sName, Picture["icon:/small/table"]) 'lvwTable["T" & sName].Selected = True LoadTable(sName) End Public Sub btnClear_Click() edtRequest.Text = "" End Public Sub mnuCut_Click() edtRequest.Cut End Public Sub mnuCopy_Click() edtRequest.Copy End Public Sub mnuPaste_Click() edtRequest.Paste End Public Sub mnuUndo_Click() edtRequest.Undo End Public Sub mnuRedo_Click() edtRequest.Redo End Public Sub btnKill_Click() If Message.Warning(Subst(("Do you really want to delete table '&1'?"), $sTable), ("Delete"), ("Cancel")) = 2 Then Return If CheckCurrent() Then Return $hConn.Tables.Remove($sTable) UpdateDefinition 'UpdateDefinition($sTable) lvwTable.Remove("T" & $sTable) datData.Reset lvwTable[KEY_REQUEST].Selected = True Catch Message(Subst(("Cannot delete table '&1'."), $sTable) & "\n\n" & Error.Text) End Public Sub btnRename_Click() Dim sNewName As String Dim sOldName As String If $bReadOnly Then Return If SaveTable() Then Return If FNewTable.Run($hConn, $sTable, $sType) Then Return sNewName = FNewTable.TableName If Not sNewName Then Return If sNewName = $sTable Then Return sOldName = $sTable $sTable = sNewName ' sOldName table will be deleted by WriteTable If WriteTable(sOldName) Then $sTable = sOldName Return Endif UpdateDefinition 'Try $hConn.DeleteTable(sOldName) LoadList($sTable) End Public Sub btnImport_Click() If SaveTable() Then Return FImportTable.Run($hConn, GetTableList()) UpdateDefinition If FImportTable.Table Then LoadList(FImportTable.Table) Else LoadList($sTable) Endif End Public Sub btnTitle_Click() FNewConnection.Run(Path) End Public Sub btnRemoveData_Click() If Message.Warning(("Do you really want to remove the selected rows?"), ("Remove"), ("Cancel")) = 2 Then Return dvwData.Remove UpdateCount End Public Sub btnCopyFieldList_Click() Dim iInd As Integer Dim aList As New String[] For iInd = 0 To tbvField.Rows.Count - 1 aList.Add($aField[iInd].Name) Next Clipboard.Copy(aList.Join("\n") & "\n", MMime.LIST) End Private Sub UpdateFieldToolbar() btnDownField.Enabled = tbvField.Row >= 0 And tbvField.Row < (tbvField.Rows.Count - 1) btnUpField.Enabled = tbvField.Row > 0 btnKillField.Enabled = tbvField.Row >= 0 End Public Sub tbvField_Change() UpdateFieldToolbar End Private Sub UpdateIndexToolbar() btnDownIndex.Enabled = CanDownIndex() btnUpIndex.Enabled = CanUpIndex() btnKillIndex.Enabled = tbvIndex.Row >= 0 End Public Sub tbvIndex_Change() UpdateIndexToolbar End Public Sub edtRequest_GotFocus() Project.SetCurrentPopup(Null) End Public Sub btnAddData_Click() dvwData.Create End Public Sub btnSaveData_Click() dvwData.Save UpdateCount End Public Sub btnCopyTable_Click() Dim sTable As String If CheckCurrent() Then Return sTable = lvwTable.Key If Not IsLetter(Left(sTable)) Then Return sTable = Mid$(sTable, 2) Clipboard.Copy(Path & "\n" & sTable, MMime.TABLE) End Public Sub btnPasteTable_Click() Dim sData As String Dim aData As String[] Dim hForm As FConnectionEditor If CheckCurrent() Then Return sData = Clipboard.Paste(MMime.TABLE) If Not sData Then Return aData = Split(sData, "\n") If aData.Count <> 2 Then Return hForm = Project.LoadFile(aData[0]) If Not hForm Then Return If FPasteTable.Run(hForm, aData[1], Me) Then Return LoadList(FPasteTable.DestTable) End Public Sub btnExportData_Click() If datData.Count Then FExportData.Run(datData, dvwData) End Public Sub btnExportRequest_Click() If datRequest.Count Then FExportData.Run(datRequest, dvwRequest) End Public Sub Rename(sNewName As String, sNewPath As String) Me.Name = sNewName Path = sNewPath 'File.Dir(Path) &/ sNewName & "." & File.Ext(Path) DrawTitle End Public Sub btnShowSystem_Click() $bShowSystem = btnShowSystem.Value LoadList($sTable) End Public Sub btnEditData_Click() dvwData.Editable = btnEditData.Value btnSaveData.Enabled = btnEditData.Value btnAddData.Enabled = btnEditData.Value btnRemoveData.Enabled = btnEditData.Value End Public Sub edtRequest_Change() $aRequest[tabRequest.Index] = edtRequest.Text tabRequest.Text = GetRequestTitle($aRequest[tabRequest.Index]) End Public Sub tabRequest_Click() edtRequest.Text = $aRequest[tabRequest.Index] edtRequest.SetFocus End Public Sub panRequest_Arrange() tabRequest.H = tabRequest.ClientY 'edtRequest.Move(tabRequest.X + tabRequest.ClientX, tabRequest.Y + tabRequest.ClientY, tabRequest.ClientW, tabRequest.ClientH) 'edtRequest.Lower End Public Sub btnRemoveQuery_Click() If Trim($aRequest[tabRequest.Index]) Then If Message.Question(("Do you really want to remove this query?"), ("Remove"), ("Cancel")) = 2 Then Return Endif If $aRequest.Count = 1 Then $aRequest[0] = "" Else $aRequest.Remove(tabRequest.Index) Endif UpdateRequest End Public Sub edtRequest_KeyPress() If Key.Code = Key.F4 Then btnRunQuery.Value = True End Public Sub btnAddQuery_Click() $aRequest.Add("/* " & ("New query") & " */\n") Inc tabRequest.Count UpdateRequest tabRequest.Index = $aRequest.Max End Private Sub UpdateDefinition() Dim sPath As String Dim bCreate As Boolean sPath = File.SetExt(Path, ".template") If $bTemplate Then If Not Exist(sPath) Then bCreate = True File.Save(sPath, $hConn.GetTemplate()) If bCreate Then VersionControl.AddFile(sPath) Else If Exist(sPath) Then VersionControl.RemoveFile(sPath) Try Kill sPath Endif Endif End Public Sub btnSelectAll_Click() dvwData.SelectAll() End Public Sub btnUnselectAll_Click() dvwData.UnselectAll() End Public Sub panToolBar_Configure() btnShowSystem.Picture = GetSystemTablePicture(Stock.GetSize(panToolBar.Size)) End gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/FConnectionEditor.form000066400000000000000000000357201411575327000263710ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,151,92) Arrangement = Arrange.Vertical { panToolBar ToolBar MoveScaled(1,1,116,4) Key = "connection" Text = ("Connection editor") Separator = True { btnTitle ToolButton MoveScaled(0,0,4,4) Action = ".database" Picture = Picture["icon:/small/server"] } { btnShowSystem ToolButton MoveScaled(4,0,12,4) ToolTip = ("Show system tables") Action = ".show-system" Toggle = True } { Separator3 Separator MoveScaled(18,0,0,4) } { btnNewTable ToolButton MoveScaled(17,0,16,4) ToolTip = ("New table") Action = ".new-table" AutoResize = True Text = ("New table") & "..." Picture = Picture["icon:/small/new"] } { btnSave ToolButton mnuSave Name = "btnSave" MoveScaled(33,0,4,4) ToolTip = ("Save") Action = ".save" Picture = Picture["icon:/small/save"] } { btnReload ToolButton mnuReload Name = "btnReload" MoveScaled(37,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/refresh"] } { Separator4 Separator MoveScaled(42,0,0,4) } { btnKill ToolButton MoveScaled(45,0,11,4) ToolTip = ("Delete table") Action = ".remove-table" AutoResize = True Text = ("Remove") Picture = Picture["icon:/small/delete"] } { btnRename ToolButton MoveScaled(56,0,11,4) ToolTip = ("Rename table") Action = ".rename-table" AutoResize = True Text = ("Rename") & "..." Picture = Picture["icon:/small/edit"] } { btnCopyTable ToolButton MoveScaled(69,0,8,4) ToolTip = ("Copy table") Action = ".copy-table" AutoResize = True Text = ("Copy") Picture = Picture["icon:/small/copy"] } { btnPasteTable ToolButton MoveScaled(79,0,10,4) ToolTip = ("Paste table") Action = ".paste-table" AutoResize = True Text = ("Paste") & "..." Picture = Picture["icon:/small/paste"] } { btnImport ToolButton MoveScaled(89,0,12,4) ToolTip = ("Import text file") Action = ".import-table" AutoResize = True Text = ("Import") & "..." Picture = Picture["icon:/small/open"] } } { HBox1 HBox MoveScaled(2,12,148,79) Expand = True { spnTable SidePanel MoveScaled(1,1,37,73) Arrangement = Arrange.Vertical Orientation = Align.Left Separator = True { lvwTable TreeView MoveScaled(2,18,22,26) Expand = True Border = False } } { VBox1 VBox MoveScaled(39,1,108,77) Expand = True { splTable VSplit MoveScaled(1,1,106,72) Expand = True { panTable Panel MoveScaled(3,2,89,35) Arrangement = Arrange.Fill Spacing = True { panRequest VBox MoveScaled(16,2,80,24) Visible = False Background = Color.Background { tlbData2 ToolBar MoveScaled(0,0,75,4) Separator = True { btnRunQuery ToolButton MoveScaled(0,0,12,4) AutoResize = True Text = ("Run query") Picture = Picture["icon:/small/play"] } { btnAddQuery ToolButton MoveScaled(12,0,8,4) ToolTip = ("New query") AutoResize = True Text = ("New") Picture = Picture["icon:/small/new"] } { btnRemoveQuery ToolButton MoveScaled(20,0,11,4) ToolTip = ("Remove query") AutoResize = True Text = ("Remove") Picture = Picture["icon:/small/remove"] } { btnClear ToolButton MoveScaled(32,0,4,4) ToolTip = ("Clear") Picture = Picture["icon:/small/clear"] } { btnCut ToolButton mnuCut Name = "btnCut" MoveScaled(36,0,4,4) ToolTip = ("Cut") Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton mnuCopy Name = "btnCopy" MoveScaled(40,0,4,4) ToolTip = ("Copy") Picture = Picture["icon:/small/copy"] } { btnPaste ToolButton mnuPaste Name = "btnPaste" MoveScaled(44,0,4,4) ToolTip = ("Paste") Picture = Picture["icon:/small/paste"] } { btnUndo ToolButton mnuUndo Name = "btnUndo" MoveScaled(48,0,4,4) ToolTip = ("Undo") Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton mnuRedo Name = "btnRedo" MoveScaled(52,0,4,4) ToolTip = ("Redo") Picture = Picture["icon:/small/redo"] } { Spring1 Spring MoveScaled(58,1,5,2) } } { tabRequest TabPanel MoveScaled(3,5,33,7) Border = False Index = 0 Text = ("") Index = 0 } { edtRequest TextEditor MoveScaled(16,12,40,7) Expand = True Border = False Highlight = "SQL" Mode = "SQL" Wrap = True } } { tabTable TabPanel MoveScaled(3,3,68,26) Visible = False Expand = True Arrangement = Arrange.Vertical Border = False Count = 2 Index = 0 Text = ("Fields") { tlbField ToolBar MoveScaled(1,1,65,4) { btnSaveTable ToolButton MoveScaled(0,0,9,4) Visible = False AutoResize = True Text = ("Save") Picture = Picture["icon:/small/save"] } { btnNewField ToolButton MoveScaled(9,0,8,4) AutoResize = True Text = ("Add") Picture = Picture["icon:/small/add"] } { btnKillField ToolButton MoveScaled(17,0,12,4) AutoResize = True Text = ("Remove") Picture = Picture["icon:/small/remove"] } { btnDownField ToolButton MoveScaled(28,0,9,4) AutoResize = True Text = ("Down") Picture = Picture["icon:/small/down"] } { btnUpField ToolButton MoveScaled(37,0,7,4) AutoResize = True Text = ("Up") Picture = Picture["icon:/small/up"] } { btnCopyFieldList ToolButton MoveScaled(44,0,18,4) ToolTip = ("Copy") AutoResize = True Text = ("Copy field list") Picture = Picture["icon:/small/copy"] } } { Separator1 Separator MoveScaled(19,6,8,0) } { tbvField TableView MoveScaled(1,7,55,13) Expand = True Border = False Mode = Select.Single Padding = 4 Header = GridView.Horizontal } Index = 1 Text = ("Indexes") { tlbIndex ToolBar MoveScaled(1,1,63,4) { btnSaveTable2 ToolButton btnSaveTable Name = "btnSaveTable2" MoveScaled(0,0,9,4) Visible = False AutoResize = True Text = ("Save") Picture = Picture["icon:/small/save"] } { btnNewIndex ToolButton MoveScaled(9,0,14,4) AutoResize = True Text = ("New index") Picture = Picture["icon:/small/new"] } { btnNewIndexField ToolButton MoveScaled(23,0,8,4) AutoResize = True Text = ("Add") Picture = Picture["icon:/small/add"] } { btnKillIndex ToolButton MoveScaled(31,0,12,4) AutoResize = True Text = ("Remove") Picture = Picture["icon:/small/remove"] } { btnDownIndex ToolButton MoveScaled(42,0,10,4) AutoResize = True Text = ("Down") Picture = Picture["icon:/small/down"] } { btnUpIndex ToolButton MoveScaled(51,0,8,4) AutoResize = True Text = ("Up") Picture = Picture["icon:/small/up"] } } { Separator2 Separator MoveScaled(25,6,11,0) } { tbvIndex TableView MoveScaled(1,7,61,14) Expand = True Border = False Mode = Select.Single Padding = 4 Header = GridView.Horizontal } Index = 0 } } { panData Panel MoveScaled(2,39,103,31) Arrangement = Arrange.Fill { datData DataSource MoveScaled(1,1,101,20) Arrangement = Arrange.Vertical { tlbData ToolBar MoveScaled(3,2,97,4) Key = "connection-data" Separator = True { btnEditData ToolButton MoveScaled(0,0,7,4) Action = ".edit-data" AutoResize = True Text = ("Edit") Picture = Picture["icon:/small/edit"] Toggle = True } { btnExportData ToolButton MoveScaled(8,0,11,4) ToolTip = ("Export to CSV file") Action = ".export-data" AutoResize = True Text = ("Export") & "..." Picture = Picture["icon:/small/save-as"] } { btnSaveData ToolButton MoveScaled(19,0,9,4) Enabled = False Action = ".save-data" AutoResize = True Text = ("Save") Picture = Picture["icon:/small/save"] } { btnAddData ToolButton MoveScaled(28,0,8,4) Enabled = False Action = ".add-data" AutoResize = True Text = ("Add") Picture = Picture["icon:/small/add"] } { btnRemoveData ToolButton MoveScaled(36,0,10,4) Enabled = False Action = ".delete-data" AutoResize = True Text = ("Delete") Picture = Picture["icon:/small/remove"] } { btnSelectAll ToolButton MoveScaled(47,0,12,4) Action = ".select-all-data" AutoResize = True Text = ("Select all") Picture = Picture["icon:/small/select-all"] } { btnUnselectAll ToolButton MoveScaled(59,0,12,4) Action = ".unselect-all-data" AutoResize = True Text = ("Unselect all") Picture = Picture["icon:/small/undo"] } { lblCount Label MoveScaled(84,0,10,4) Expand = True Alignment = Align.Right } } { dvwData DataView MoveScaled(6,8,46,11) Expand = True Mode = Select.Multiple Grid = True Border = False } } { datRequest DataSource MoveScaled(2,22,66,26) Visible = False Arrangement = Arrange.Vertical { tlbData3 ToolBar MoveScaled(2,1,61,4) Key = "connection-export" Separator = True { btnExportRequest ToolButton MoveScaled(0,0,12,4) ToolTip = ("Export to CSV file") Action = ".export-request" AutoResize = True Text = ("Export") & "..." Picture = Picture["icon:/small/save-as"] } } { dvwRequest DataView MoveScaled(2,7,46,17) Expand = True Mode = Select.Multiple Grid = True Border = False } } } } } } } # Gambas Action File 3.0 { Actions { Action add-data Text = "Add" Picture = "icon:/small/add" } { Action copy-table Text = "Copy" Picture = "icon:/small/copy" } { Action database Text = "" Picture = "icon:/small/server" } { Action delete-data Text = "Delete" Picture = "icon:/small/remove" } { Action edit-data Text = "Edit" Picture = "icon:/small/edit" } { Action export-data Text = "Export" Picture = "icon:/small/save-as" } { Action export-request Text = "Export" Picture = "icon:/small/save-as" } { Action import-table Text = "Import" Picture = "icon:/small/open" } { Action new-table Text = "New table" Picture = "icon:/small/new" } { Action paste-table Text = "Paste" Picture = "icon:/small/paste" } { Action reload Text = "Reload" Picture = "icon:/small/refresh" } { Action remove-table Text = "Remove" Picture = "icon:/small/delete" } { Action rename-table Text = "Rename" Picture = "icon:/small/edit" } { Action save Text = "Save" Picture = "icon:/small/save" } { Action save-data Text = "Save" Picture = "icon:/small/save" } { Action select-all-data Text = "Select all" Picture = "icon:/small/select-all" } { Action show-system Text = "Show system tables" Picture = "$ToolButton" } { Action unselect-all-data Text = "Unselect all" Picture = "icon:/small/undo" } } { Toolbars { Toolbar connection Text = "Connection editor" List = "database,show-system,new-table,save,reload,remove-table,rename-table,copy-table,paste-table,import-table" Default = "database,show-system,|,new-table,save,reload,|,remove-table,rename-table,copy-table,paste-table,import-table" } { Toolbar connection-data Text = "" List = "edit-data,export-data,save-data,add-data,delete-data,select-all-data,unselect-all-data" Default = "edit-data,export-data,save-data,add-data,delete-data,select-all-data,unselect-all-data,$lblCount" } { Toolbar connection-export Text = "" List = "export-request" Default = "export-request" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/FNewTable.class000066400000000000000000000025351411575327000247640ustar00rootroot00000000000000' Gambas class file Static Public TableName As String Static Public TableType As String Static Private $aType As String[] Static Public Function Run(hConn As Connection, Optional sTable As String, Optional sType As String, Optional aType As String[]) As Boolean TableName = sTable TableType = sType $aType = aType DB.Current = hConn Return Not FNewTable.ShowModal() End Public Sub _new() If $aType And If $aType.Count Then cmbType.List = $aType If TableType Then cmbType.Text = TableType Else panType.Hide Endif lblType.Text = TableType If TableName Then Me.Title = ("Rename table") cmbType.Visible = False Else Me.Title = ("Create table") Endif txtName.Text = TableName txtName.SelectAll txtName.SetFocus End Public Sub btnOK_Click() Dim sName As String = Trim(txtName.Text) If TableName And If TableName = sName Then Me.Close Return Endif If Not TableName And If Not sName Then Balloon.Warning(("Please enter the name of the new table."), txtName) txtName.SetFocus Return Endif If DB.Tables.Exist(sName) Then Balloon.Warning(Subst(("Table '&1' already exists."), TableName), txtName) txtName.SetFocus Return Endif TableName = sName If TableName Then TableType = cmbType.Text Me.Close(True) End Public Sub btnCancel_Click() Me.Close() End gambas-3.16.3/app/src/gambas3/.src/Editor/Connection/FNewTable.form000066400000000000000000000022361411575327000246200ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,53,19) Text = ("New table") Icon = Picture["icon:/small/table"] Resizable = False Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True { HBox2 HBox MoveScaled(1,1,51,4) Spacing = True { Label1 Label MoveScaled(0,0,11,4) Text = ("Name") } { txtName TextBox MoveScaled(13,0,37,4) Expand = True } } { panType HBox MoveScaled(1,6,51,4) Spacing = True { Label2 Label MoveScaled(0,0,11,4) Text = ("Type") } { lblType Label MoveScaled(13,0,31,4) Visible = False Expand = True Border = Border.Raised } { cmbType ComboBox MoveScaled(16,0,34,4) Expand = True ReadOnly = True } } { Panel2 Panel MoveScaled(15,11,3,2) } { HBox1 HBox MoveScaled(1,14,51,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 } } } gambas-3.16.3/app/src/gambas3/.src/Editor/FGotoLine.class000066400000000000000000000007361411575327000227050ustar00rootroot00000000000000' Gambas class file Static Private $iLine As Integer Static Public Function Run(iLine As Integer) As Integer Dim hForm As FGotoLine $iLine = iLine hForm = New FGotoLine If hForm.ShowModal() Then Return $iLine End Public Sub Form_Open() txtLine.Text = CStr($iLine) txtLine.SelectAll txtLine.SetFocus End Public Sub btnOK_Click() Try $iLine = Val(txtLine.Text) If Error Then Return Me.Close(True) End Public Sub btnCancel_Click() Me.Close End gambas-3.16.3/app/src/gambas3/.src/Editor/FGotoLine.form000066400000000000000000000010511411575327000225320ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,33,12) Text = ("Go to line") Resizable = False { btnOK Button MoveScaled(1,7,15,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(17,7,15,4) Text = ("Cancel") Cancel = True } { HBox1 HBox MoveScaled(1,1,31,4) Spacing = True { Label1 Label MoveScaled(0,0,11,4) AutoResize = True Text = ("Go to line") } { txtLine TextBox MoveScaled(13,0,15,4) Expand = True Alignment = Align.Right } } } gambas-3.16.3/app/src/gambas3/.src/Editor/FInsertChar.class000066400000000000000000000051431411575327000232240ustar00rootroot00000000000000' Gambas class file Private Const CHAR_LIST As String = "«»‘’“”‚„¡¿¶°§µ‸×÷…‰†′″‴©®™¢£¤¥€‒–—·•‣▪⁕◆◼←↑→↓↔↕↖↗↘↙↤↥↦↧↰↱↲↳↴↵↶↷⇄⇅⬅⬆➡⬇⬈⬉⬊⬋⬌⬍■□▲△●○▴▵▶▷▸▹▼▽▾▿◀◁◂◃►▻◄◅±≃≈≠≤≥⊂⊃⊄⊅∧∨∩∪∀∂∃∄∅∆∇∈∉∋∌∏∐∑∞ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωℂℍℕℙℚℝℤ⅒⅑⅛⅐⅙⅕¼⅓⅜⅖½⅗⅝⅔¾⅘⅚⅞⁰¹²³⁴⁵⁶⁷⁸⁹₀₁₂₃₄₅₆₇₈₉♭♮♯" Static Public Char As String Private $WC As Integer Private $HC As Integer Private $iCurrent As Integer Private $iLen As Integer Private $bKeepOpen As Boolean Private $hEditor As TextEditor Public Sub Run(hEditor As TextEditor, X As Integer, Y As Integer) $hEditor = hEditor Me.ShowPopup(X, Y) hEditor.SetFocus $hEditor = Null End Public Sub _new() 'Project.SetEditorFont(dwgCharSelect) dwgCharSelect.Font.Size *= 1.5 $WC = dwgCharSelect.Font.TextWidth("0") * 2.5 $HC = dwgCharSelect.Font.H + Desktop.Scale $iLen = String.Len(CHAR_LIST) Me.Resize($WC * 16 + 2, $HC * (($iLen + 15) \ 16) + 2) End Public Sub dwgCharSelect_Draw() Dim X As Integer Dim Y As Integer Dim I As Integer Dim J As Integer Dim sCar As String Dim N As Integer Paint.Translate(1, 1) N = 1 For J = 0 To 15 For I = 0 To 15 sCar = String.Mid$(CHAR_LIST, N, 1) Paint.DrawText(sCar, X, Y, $WC, $HC, Align.Center) If $iCurrent = N Then Paint.FillRect(X, Y, $WC, $HC, Color.SetAlpha(Color.SelectedBackground, 192)) Inc N X += $WC Next Y += $HC X = 0 If N > $iLen Then Break Next For X = $WC To dwgCharSelect.W - 1 Step $WC Paint.FillRect(X, 0, 1, Paint.H, Color.LightForeground) Next For Y = $HC To dwgCharSelect.H - 1 Step $HC Paint.FillRect(0, Y, Paint.W, 1, Color.LightForeground) Next End Public Sub dwgCharSelect_MouseMove() Dim N As Integer If Not Mouse.Left Then $bKeepOpen = True N = 1 + (Mouse.Y \ $HC) * 16 + Mouse.X \ $WC If N <> $iCurrent Then $iCurrent = N dwgCharSelect.Refresh Endif End Public Sub dwgCharSelect_Leave() $iCurrent = 0 dwgCharSelect.Refresh End Public Sub dwgCharSelect_MouseUp() Dim sCar As String sCar = String.Mid$(CHAR_LIST, $iCurrent, 1) If sCar Then $hEditor.Insert(sCar) If Not $bKeepOpen Then Me.Close End Public Sub Form_Open() Char = "" End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then Me.Close End gambas-3.16.3/app/src/gambas3/.src/Editor/FInsertChar.form000066400000000000000000000005211411575327000230550ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,58,42) Resizable = False Border = False Arrangement = Arrange.Fill { dwgCharSelect DrawingArea MoveScaled(2,1,55,38) Background = Color.TextBackground Foreground = Color.TextForeground Tracking = True Mouse = Mouse.Pointing Border = Border.Plain } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/000077500000000000000000000000001411575327000207255ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Editor/Form/CControl.class000066400000000000000000001511041411575327000235010ustar00rootroot00000000000000' Gambas class file Static Private $bGrid As Boolean Static Private PAN_H As Integer Static Private PAN_W As Integer Static Public WasDefaultValue As Boolean Static Public LastError As String Static Public COMPLEX_STRING_PROPERTIES As String[] = ["Font[", "Picture[", "Picture.Load(", "Image.Load(", "SvgImage.Load(", "Connections[", "ReportPadding[", "ReportMargin[", "ReportBoxShadow[", "ReportBorder[", "ReportBrush[", "Animation.Load("] Public Name As String Public Parent As CControl Public Control As Object Public Kind As String Public DrawWith As String Public Selected As Boolean Public Virtual As Boolean Public Unknown As Boolean Public {Public} As Boolean Public VirtualCoord As Boolean Public NoParent As Boolean Public Tabs As Collection Property Read X As Integer Property Read Y As Integer Property Read W, Width As Integer Property Read H, Height As Integer Static Private $bDoNotMoveHandle As Boolean Private $cValue As New Collection Private $aPanel As New Panel[8] 'DrawingArea[1] '8 'PRIVATE CONST PAN_H AS Integer = 6 'PRIVATE CONST PAN_W AS Integer = 6 Private $bIsContainer As Boolean Private $bIsMultiContainer As Boolean Private $bMove As Boolean Private $X As Integer Private $Y As Integer Private $MX As Integer Private $MY As Integer Private $hFamily As CFamily Private $bArranging As Boolean Static Private $hDeprecated As Image Static Public Sub _init() ' $cSynonymous["Left"] = "X" ' $cSynonymous["Top"] = "Y" ' $cSynonymous["W"] = "Width" ' $cSynonymous["H"] = "Height" ' $cSynonymous["Caption"] = "Text" ' $cSynonymous["Title"] = "Text" RefreshHandleSize $bGrid = True End Static Public Sub GetIcon(sClass As String, sComp As String, Optional iSize As Integer) As Picture Dim hImage As Image Dim sPath As String Dim hClass As CClassInfo Dim W As Integer Dim DS As Integer Dim bDeprecated As Boolean Do hClass = Project.Documentation.Classes[sComp &/ sClass] If Not hClass Then Break bDeprecated = hClass.IsDeprecated() sComp = hClass.Component If sComp = CComponent.PROJECT_NAME Then sPath = Project.Dir &/ ".hidden/control" &/ LCase(sClass) & ".png" Else sPath = File.Dir(File.Dir(Component.Path)) &/ "share/gambas" & System.Version &/ "control" &/ sComp &/ LCase(sClass) & ".png" Endif Try hImage = Image.Load(sPath) If hImage Then Break If hClass.Parent <> sClass Then Break sComp = hClass.ParentComponent If Not sComp Then Break Loop If Not hImage Then Try hImage = Image.Load("img/control" &/ LCase(sClass) & ".png") If Not hImage Then DS = Desktop.Scale hImage = New Image(1, 1) Paint.Begin(hImage) Paint.Font.Size = DS * 2 W = Paint.Font.TextWidth(sClass) Paint.End hImage = New Image(Max(DS * 8, W + DS * 2), DS * 8, Color.White) Paint.Begin(hImage) Paint.DrawRect(0, 0, hImage.W, hImage.H, Color.Gray, 2) ' Paint.Rectangle(0.5, F + 0.5, hImage.W - 1, hImage.H - F * 2 - 1) ' Paint.Background = Color.Gray ' Paint.LineWidth = 2 ' Paint.Stroke Paint.Rectangle(DS, 0, hImage.W - DS * 2, hImage.H) Paint.Clip Paint.Font.Size = DS * 2 Paint.Background = Color.Black Paint.DrawText(sClass, DS, 0, hImage.W - DS * 2, hImage.H, Align.Left) Paint.End Endif If bDeprecated Then If Not $hDeprecated Then $hDeprecated = Image.Load("img/control/deprecated.png") hImage = hImage.Opacity(0.5) hImage.PaintImage($hDeprecated, 0, 0, hImage.W, hImage.H) Endif If iSize Then If hImage.Width <> iSize Then hImage = hImage.Stretch(iSize, iSize) Endif If Application.DarkTheme Then hImage = hImage.Invert(True) Return hImage.Picture End Private Sub IsContainerClass(hClass As Class) As Boolean If hClass.Name = "Container" Then Return True If Not hClass.Parent Then Return Return IsContainerClass(hClass.Parent) End Private Function CreateControl(sName As String, sClass As String, hParent As Object) As Object Dim hCtrl As Object Dim hPict As Picture Dim bExist As Boolean Dim bVirtual As Boolean Dim hWindow As Window Dim hClass As CClassInfo Dim hClassDraw As CClassInfo 'PRINT "> CreateControl "; sClass 'If sClass = "WebMenu" Then Stop hClass = Project.Documentation.Classes[sClass] bExist = hClass <> Null If bExist Then DrawWith = hClass.DrawWith If DrawWith Then sClass = DrawWith Endif NoParent = Not hClass.ConstructorNeedParent() If IsMultiContainer() Then If sClass <> "TabPanel" And If sClass <> "TabStrip" Then hClassDraw = Project.Documentation.Classes[sClass] If Not hClassDraw Or If Not hClassDraw.MultiContainer Then sClass = "TabPanel" Endif Else If IsContainer() Then If Class.IsLoaded(sClass) Then If Not IsContainerClass(Classes[sClass]) Then sClass = "Panel" Else hClassDraw = Project.Documentation.Classes[sClass] If Not hClassDraw Or If Not hClassDraw.Container Then sClass = "Panel" Endif Endif Select Case LCase(sClass) Case "toolbutton" hCtrl = New ToolButton(hParent) 'hCtrl.Picture = Picture["img/logo/logo-16.png"] Case "textbox" hCtrl = New TextBox(hParent) 'hCtrl.Text = sName hCtrl.Mouse = Mouse.Arrow Case "textarea" hCtrl = New TextArea(hParent) 'hCtrl.Text = sName hCtrl.Mouse = Mouse.Arrow Case "combobox" hCtrl = New ComboBox(hParent) 'hCtrl.Text = sName 'hCtrl.Add(" ") hCtrl.Mouse = Mouse.Arrow Case "picturebox" hCtrl = New PictureBox(hParent) Case "moviebox" hCtrl = New MovieBox(hParent) 'hCtrl.Picture = Picture["img/control/picturebox.png"] Case "treeview" hCtrl = New TreeView(hParent) hPict = Picture["icon:/small/directory"] hCtrl.Add("A", sName, hPict) hCtrl.Add("B", "Item", hPict, "A") hCtrl.Add("C", "Item", hPict, "A") hCtrl["A"].Expanded = True Case "iconview" hCtrl = New IconView(hParent) hPict = Picture["icon:/32/image"] hCtrl.Add("A", sName, hPict) Case "listview" hCtrl = New ListView(hParent) hPict = Picture["icon:/small/file"] hCtrl.Add("A", sName, hPict) Case "columnview" hCtrl = New ColumnView(hParent) hCtrl.Columns.Count = 2 hPict = Picture["icon:/small/file"] hCtrl.Add("A", sName, hPict) 'hCtrl.Columns[0].AutoResize = TRUE 'hCtrl.Columns[1].Width = hCtrl.Columns[0].Width Case "listbox" hCtrl = New ListBox(hParent) hCtrl.Add(sName) Case "gridview", "tableview" hCtrl = New GridView(hParent) hCtrl.Rows.Count = 4 hCtrl.Columns.Count = 4 'hCtrl.Columns[0].W = Desktop.Scale * 16 hCtrl.Grid = True hCtrl[0, 0].Text = sName hCtrl[0, 0].ColumnSpan = hCtrl.Columns.Count 'hCtrl.Rows.H = -1 Case "menu" hCtrl = New Menu(hParent) Case "progressbar" hCtrl = New ProgressBar(hParent) hCtrl.Value = 0.5 Case "-", "drawingarea", "panel", "spring", "vbox", "hbox", "vpanel", "hpanel", "vsplit", "hsplit", "embedder", "datasource", "splitter", "toolbar" hCtrl = New DrawingArea(hParent) hCtrl.NoBackground = True 'hCtrl.Merge = True Case "workspace" hCtrl = New Workspace(hParent) hWindow = New Window hWindow.Title = sName hWindow.Background = Color.Gradient(Color.Foreground, Color.Background) hCtrl.Add(hWindow) Case "webview" hCtrl = New TextLabel(hParent) hCtrl.Padding = 4 hCtrl.Background = Color.TextBackground hCtrl.Text = "

    " & sName & "

    " ' Case "listcontainer" ' hCtrl = New ListContainer(hParent) ' hLabel = New Label(hCtrl) ' hLabel.H = Desktop.Scale * 4 ' hLabel.Text = sName Case Else If bExist Then bVirtual = hClass.VirtualControl Endif If bVirtual Then If Len(sName) Then hCtrl = New Button(hParent) hPict = GetIcon(sClass, hClass.Component, 32) 'Picture["img/control" &/ LCase(sClass) & ".png"] hCtrl.Picture = hPict 'hCtrl.Design = True Else hCtrl = New (sClass) ' Timer(hParent) Endif Else If bExist Then Try hCtrl = New (sClass, hParent) If Not hCtrl Then Try hCtrl = New ($hFamily.Name & sClass, hParent) If Not hCtrl Then hCtrl = New DrawingArea(hParent) Endif End Select 'PRINT "< CreateControl "; sClass 'IF hCtrl IS UserControl OR NOT hCtrl IS Container THEN 'Try hCtrl.Tracking = True hCtrl.Raise hCtrl.Name = sName Try hCtrl.Design = True Return hCtrl End Public Sub SetDesign() If Not IsContainer() Then Try Control.Design = True If Error Then Stop Endif End Private Sub InitControl() 'Dim hProp As CPropertyInfo $cValue["#X"] = 0 $cValue["#Y"] = 0 $cValue["#Width"] = 0 $cValue["#Height"] = 0 ' If DrawWith Then ' For Each hProp In Project.Documentation.Classes[Kind].Properties ' If Not hProp.Coord Then SetProperty(hProp.Name, hProp.DefaultValue) ' Next ' Endif End Static Public Sub GetVirtualSize() As Integer Return 2 + (32 + Desktop.Scale - 1) \ Desktop.Scale '(40 + Desktop.Scale - 1) Div Desktop.Scale End Private Sub GetDefaultTabText(iIndex As Integer) As String Dim hClass As CClassInfo Dim sText As String hClass = Project.Documentation.Classes[Kind] sText = hClass.DefaultText If Not sText Then sText = "Tab &1" Return Subst(sText, CStr(iIndex + 1)) End Public Sub _new(sName As String, sClass As String, hParent As CControl, hForm As FForm, hFamily As CFamily) Dim hCtrl As Object Dim iDim As Integer Dim hClass As CClassInfo Name = sName Kind = sClass Parent = hParent $hFamily = hFamily hClass = Project.Documentation.Classes[sClass] Try $bIsContainer = hClass.Container Try $bIsMultiContainer = hClass.MultiContainer If hClass.Form Then If hFamily.HasMenuEditor Then hCtrl = New Form(hForm.Container) Else If hClass.MultiContainer Then hCtrl = New TabPanel(hForm.Container) hCtrl.Border = False hCtrl.Highlight = True Else hCtrl = New DrawingArea(hForm.Container) Endif Endif hCtrl.Drop = True 'hCtrl.Background = CFamily.Get(hForm.Family).Background 'hCtrl.Tracking = True Else If Kind = hFamily.MenuClass Then If Parent.Kind <> hFamily.MenuClass Then hCtrl = New Menu(hForm.RootControl.Control) Else hCtrl = New Menu(Parent.Control) Endif Else Try Virtual = hClass.VirtualControl If Virtual Then 'PRINT sName; " is virtual" hCtrl = CreateControl(sName, sClass, Parent.Control) 'hCtrl.Resize(5 * Desktop.Scale, 5 * Desktop.Scale) iDim = GetVirtualSize() hCtrl.MoveScaled(0, 0, iDim, iDim) hCtrl.Ignore = True '$cValue["Ignore"] = True Else 'If Not Parent Then Stop hCtrl = CreateControl(sName, sClass, Parent.Control) Unknown = Object.Type(hCtrl) <> sClass Endif hCtrl.Drop = True 'hCtrl.Tracking = True Endif Control = hCtrl Control.Tag = sName If Kind = hFamily.MenuClass Then Object.Attach(hCtrl, hForm, "MenuControl") Else Try Object.Attach(hCtrl, hForm, "Control") Endif 'VirtualCoord = hClass.Family <> "Form" And Not Virtual VirtualCoord = hFamily.VirtualCoord And Not Virtual InitControl() If $bIsMultiContainer Then Tabs = New Collection Control[0].Text = GetDefaultTabText(0) Endif UpdateName End ' PUBLIC SUB _free() ' ' TRY UnRefLibrary(CComponent.Classes[Kind].Component) ' ' END Public Sub HasProperty(sProp As String) As Boolean Try Return Project.Documentation.Classes[Kind].Properties.Exist(sProp) End Private Function GetRealValue(hProp As CPropertyInfo, vVal As Variant) As Variant Dim vRealVal As Variant Dim vConstVal As Variant If IsNull(vVal) Then vRealVal = hProp.DefaultValue Else vRealVal = vVal Endif If IsNull(vRealVal) Then Return Select hProp.Type Case "Font" 'IF NOT IsNull(vRealVal) THEN vRealVal = Font[vRealVal] 'ENDIF Case "WebFont" Select Case vRealVal Case "serif", "sans-serif", "monospace" vRealVal = Font[vRealVal] Case "cursive" Try vRealVal = Font[""] Case "fantasy" Try vRealVal = Font[""] Case Else vRealVal = Font[""] End Select Case "Color" If TypeOf(vRealVal) = gb.String Then If Not IsNull(Val(vRealVal)) Then vRealVal = CInt(Val(vRealVal)) Else vRealVal = FColorChooser.FromString(vRealVal) 'Object.GetProperty(Color, vRealVal) Endif Endif Case "Picture" If vRealVal Begins "icon:/" Then vRealVal = Picture[vRealVal] Else vRealVal = Picture.Load(File.Dir(Project.Path) &/ vRealVal) Endif Case "Image" vRealVal = Image.Load(File.Dir(Project.Path) &/ vRealVal) Case "Animation" vRealVal = Animation.Load(File.Dir(Project.Path) &/ vRealVal) Case "Constant" 'IF IsNumber(vRealVal) THEN vConstVal = hProp.ConstantList["#" & CStr(vRealVal)] If IsNull(vConstVal) Then vConstVal = vRealVal 'ENDIF If Not IsNull(vConstVal) Then vRealVal = CInt(Project.Documentation.Classes[hProp.ConstantClass].Symbols[vConstVal].Value) Else vRealVal = Null Endif ' Case "Angle" ' If vRealVal Ends "°" Then vRealVal = String.Left$(vRealVal, -1) ' VRealVal = Val(vRealVal) ' If hProp.Argument Not Begins "Deg" Then VRealVal = Rad(vRealVal) End Select Return vRealVal End Public Function GetPropertyReal(sProp As String) As Variant Dim hProp As CPropertyInfo With Project.Documentation.Classes[Kind] Try hProp = .Properties[sProp] If IsNull(hProp) Then Return ' La propriété n'existe pas, donc on PEUT changer sa valeur !! End With Return GetRealValue(hProp, $cValue[sProp]) End Public Function SetProperty(sProp As String, vVal As Variant, Optional bDoNotApply As Boolean) As Boolean Dim hUndo As CUndo = GetUndo() Dim vDefault As Variant Dim hSym As CSymbolInfo Dim hProp As CPropertyInfo Dim vRealVal As Variant Dim hClass As Class Dim I, C As Integer With Project.Documentation.Classes[Kind] Try hProp = .Properties[sProp] If IsNull(hProp) Then Return ' La propriété n'existe pas, donc on PEUT changer sa valeur !! hSym = .Symbols[sProp] End With hUndo.Begin hUndo.Add("SetControlProperty", [Me.Name, sProp, GetProperty(sProp), bDoNotApply]) vDefault = hProp.DefaultValue 'PRINT Name; "."; sProp; " = "; vVal ' valeur par défaut ? If Not hProp.Required Then If Not IsNull(vDefault) Then If Not IsNull(vVal) Then If vVal = vDefault Then vVal = Null 'PRINT "Default !" Endif Endif Endif Endif If hProp.DoNotApply Then If hProp.Name = "Public" Then {Public} = vVal Goto _DO_NOT_APPLY Endif If bDoNotApply Then Goto _DO_NOT_APPLY If Control Is DrawingArea Or If IsContainer() Then If sProp = "Enabled" Then Goto _DO_NOT_APPLY Endif Endif If Unknown Then hClass = Object.Class(Control) If Not hClass.Exist(sProp) Then Goto _DO_NOT_APPLY With hClass[sProp] If .Kind <> Class.Property Then Goto _DO_NOT_APPLY If .ReadOnly Then Goto _DO_NOT_APPLY If hSym.Type <> "WebFont" Then If .Type <> hSym.Type Then Goto _DO_NOT_APPLY Endif Endif End With Endif If $bIsMultiContainer Then If sProp = "Picture" Then Tabs[Control.Index] = If(IsNull(vVal), vDefault, vVal) Else If sProp = "Count" Then C = Control.Count If IsNull(vVal) Then vVal = 1 Control.Count = vVal For I = C To Control.Count - 1 Control[I].Text = GetDefaultTabText(I) Next Goto _DO_NOT_APPLY Endif Endif vRealVal = GetRealValue(hProp, vVal) 'PRINT "SetProperty: "; Object.Type(Control); "."; sProp; " = "; Str(vRealVal) Object.SetProperty(Control, sProp, vRealVal) ' propriété fictive _DO_NOT_APPLY: 'IF hProp.Control THEN ' IF GetForm().FindControlFromType(hProp.Type).Find(vVal) < 0 THEN ' vVal = NULL ' ENDIF 'ENDIF If $cValue[sProp] <> vVal Then If hProp.Coord Then If VirtualCoord Then $cValue[sProp] = vVal Modify Else hUndo.Disable() SetProperty(Mid$(sProp, 2), vVal, bDoNotApply) hUndo.Enable() Endif MoveAllHandle Else $cValue[sProp] = vVal FProperty.RefreshOne(Me, sProp) Modify If Not VirtualCoord Then If sProp = "X" Or If sProp = "Y" Or If sProp = "Width" Or If sProp = "Height" Then If Not IsNull(Parent) Or If Len(sProp) > 1 Then If Not IsNull(vVal) Then Object.SetProperty(Control, sProp, $hFamily.ConvertCoord(vVal, False)) Endif $cValue["#" & sProp] = vVal MoveAllHandle Endif Endif Endif Endif If IsNull(Parent) Then Select Case sProp Case "#Width", "#W", "#Height", "#H" GetForm().UpdateBorder Case "Background" GetForm().UpdateSnap Case "Text", "Icon", "Border", "Resizable", "Type" GetForm().UpdateTitle End Select Endif If hProp.UpdateName Then UpdateName If hProp.Arrangement Then UpdateArrangement If Control Is Menu Then If sProp = "Text" Or If sProp = "Shortcut" Then Control.Text = RTrim($cValue["Text"] & "\t" & $cValue["Shortcut"]) Endif Else Control.Refresh Endif Finally hUndo.End Catch LastError = Error.Text Error "gambas3: warning: cannot set "; Kind; "."; sProp; " property: "; Error.Where; ": "; Error.Text Return True End Public Function GetProperty(sProp As String) As Variant Dim hProp As CPropertyInfo Dim vVal As Variant 'If $cSynonymous.Exist(sProp) Then sProp = $cSynonymous[sProp] Try hProp = Project.Documentation.Classes[Kind].Properties[sProp] 'If Error Then Stop If hProp Then If hProp.AlwaysRead Then vVal = Object.GetProperty(Control, sProp) If Not IsNull(vVal) Then If hProp.Type = "Font" Then vVal = vVal.ToString() Endif If vVal = hProp.DefaultValue Then $cValue[sProp] = Null Else $cValue[sProp] = vVal Endif Endif Endif Return $cValue[sProp] End Public Function GetPropertyDefault(sProp As String) As Variant Dim vVal As Variant 'IF $cSynonymous.Exist(sProp) THEN sProp = $cSynonymous[sProp] vVal = GetProperty(sProp) '$cValue[sProp] If IsNull(vVal) Then Try vVal = Project.Documentation.Classes[Kind].Properties[sProp].DefaultValue Endif Return vVal End Private Function ConvertToString(vVal As Variant, hProp As CPropertyInfo) As String Dim sVal As String Select Case hProp.Type Case "b" If vVal Then Return "True" Else Return "False" Endif Case "i", "l", "f", "s", "d", "v", "Angle" Return CStr(vVal) Case "List", "Path", "Picture", "Font", "Table", "Menu", "Image", "Animation", "SvgImage", "ReportCoord", "ReportPadding", "ReportMargin", "ReportBoxShadow", "ReportBorder", "ReportBrush", "Field", "WebCoord", "WebFont" Return CStr(vVal) Case "String[]", "Fields", "Field[]" If IsNull(vVal) Then Return Null Return vVal.Join("\n") Case "Color" vVal = CStr(vVal) If IsLong(vVal) Then sVal = Hex$(vVal, 8) If sVal Begins "00" Then sVal = Mid$(sVal, 3) Return "&H" & sVal & "&" Else Return vVal Endif Case "Constant" If TypeOf(vVal) = gb.String Then Return vVal Else Return hProp.ConstantList["#" & CStr(vVal)] Endif Case Else ' Object Return vVal 'hProp.Type & " ?" End Select End Public Function GetPropertyString(sProp As String) As String Dim vVal As Variant Dim hProp As CPropertyInfo Try hProp = Project.Documentation.Classes[Kind].Properties[sProp] If IsNull(hProp) Then Return 'PRINT Kind; "."; sProp; " ???" 'ENDIF vVal = GetProperty(sProp) If IsNull(vVal) Then WasDefaultValue = True If hProp.Type <> "Color" Then vVal = hProp.DefaultValue Endif If IsNull(vVal) Then Return Else WasDefaultValue = False Endif Return ConvertToString(vVal, hProp) End Public Sub GetDefaultValueString(sProp As String) As String Dim hProp As CPropertyInfo Try hProp = Project.Documentation.Classes[Kind].Properties[sProp] If IsNull(hProp) Then Return If hProp.Type = "Color" Then Return Return ConvertToString(hProp.DefaultValue, hProp) End Public Function IsContainer() As Boolean Return $bIsContainer End Public Function IsMultiContainer() As Boolean Return $bIsMultiContainer End Public Sub HasChildren() As Boolean Dim hCont As Container Try hCont = Control If Not hCont Then Return Return hCont.Children.Count > 0 End Public Sub GetChildren() As CControl[] Dim hForm As FForm Dim aChildren As CControl[] hForm = GetForm() aChildren = hForm.GetChildren(Name) If Not aChildren Then aChildren = New CControl[] Return aChildren End Public Sub Delete() Dim aChildren As CControl[] Dim hChild As CControl Dim hForm As FForm hForm = GetForm() aChildren = hForm.GetChildren(Name) If aChildren Then For Each hChild In aChildren hChild.Delete Next Endif UnSelect(hForm) $hFamily.DeleteIcon(Me) Control.Delete Control = Null hForm.Control[Name] = Null End Public Function GetForm() As FForm 'IF NOT Object.Parent(Control) IS FForm THEN STOP Return Object.Parent(Control) End ' Private Function GetFamily() As CFamily ' ' Return GetForm().GetFamily() ' ' End ' Private Sub GetUndo() As CUndo Return GetForm().GetUndo() End Static Public Function CheckName(sName As String) As Boolean Dim iInd As Integer ' Control and group names can be void If Not sName Then Return If Not IsLetter(Left(sName)) And Left(sName) <> "_" Then Return True For iInd = 2 To Len(sName) If InStr("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_", UCase(Mid$(sName, iInd, 1))) = 0 Then Return True Endif Next End Private Sub HasText() As Boolean Return $cValue.Exist("Text") End Public Sub UpdateName() Dim sClass As String If Virtual Then Return If Kind = "WebView" Then sClass = Kind Else sClass = Object.Type(Control) Endif Select Case sClass Case "ListBox" Control[0].Text = Name Case "ComboBox" If Control.ReadOnly Then Control.Clear Control.Add(Name) Control.Index = 0 Else If Not HasText() Then Control.Text = Name Endif Case Like "*Box" If Not HasText() Then Try Control.Text = Name Case Like "*Button" If Not HasText() And If Not $cValue.Exist("Picture") Then Try Control.Text = Name Else Try Control.Text = $cValue["Text"] Endif Case Like "*Label" If Not HasText() Then Try Control.Text = Name Case "TextArea", "TextEdit", "Editor", "TextEditor" If Not HasText() Then Control.Text = Name Case "TreeView", "ListView", "ColumnView", "IconView" Control["A"].Text = Name Case "GridView", "TableView" Control[0, 0].Text = Name Case "DrawingArea", "ScrollArea" Control.Refresh Case "Workspace" Control.ActiveWindow.Title = Name Case "WebView" Control.Text = "

    " & Name & "

    " ' Case "ListContainer" ' hLabel = Control.Children[0] ' hLabel.Text = Name Case Else If Unknown Then If Not IsMultiContainer() Then If Not HasText() Then Try Control.Text = Name Else Try Control.Text = $cValue["Text"] Endif Endif Control.Refresh Endif End Select Catch End Public Function Rename(sNewName As String) As Boolean Dim hForm As FForm hForm = GetForm() If CheckName(sNewName) Then Return True If UCase(sNewName) <> UCase(Name) Then If hForm.Control.Exist(sNewName) Then Return True Endif GetUndo().Add("RenameControl", [sNewName, Me.Name]) ' Don't look in the class when renaming the form! If Parent Then hForm.GetClassEditor(True).RenameControl(Name, sNewName) Endif If Name Then hForm.Control[Name] = Null If Selected Then hForm.Selection[Name] = Null Endif Name = sNewName hForm.Control[Name] = Me Control.Tag = Name If Selected Then hForm.Selection[Name] = Me hForm.Modify UpdateName If Parent Then FFormStack.RefreshOne(Parent.Name) Else FFormStack.RefreshAll Endif End Public Sub Select(hForm As FForm, Optional bMaster As Boolean) Dim hPanel As Panel If IsNull(Parent) Then Return If Kind = hForm.GetFamily().MenuClass Then Return If hForm.Selection.Count = 0 Then EnsureVisible If Selected Then UnSelect(hForm) Endif CreatePanel(0, "NW", Mouse.SizeNW, bMaster) CreatePanel(1, "N", Mouse.SizeN, bMaster) CreatePanel(2, "NE", Mouse.SizeNE, bMaster) CreatePanel(3, "E", Mouse.SizeE, bMaster) CreatePanel(4, "SE", Mouse.SizeSE, bMaster) CreatePanel(5, "S", Mouse.SizeS, bMaster) CreatePanel(6, "SW", Mouse.SizeSW, bMaster) CreatePanel(7, "W", Mouse.SizeW, bMaster) Selected = True hForm.Selection[Name] = Me If bMaster Then If hForm.Master Then hForm.Master.Select(hForm) hForm.Master = Me For Each hPanel In $aPanel hPanel.Raise Next Endif End Public Sub EnsureVisible() Dim hTab As Object Dim hCtrl As Control Dim I As Integer If Not Parent Then Return If Parent.IsMultiContainer() Then hTab = Parent.Control For I = 0 To hTab.Count - 1 For Each hCtrl In hTab[I].Children If hCtrl = Control Then hTab.Index = I I = hTab.Count Break Endif Next Next Endif Parent.EnsureVisible End Public Sub Unselect(hForm As FForm, Optional bDoNotRemove As Boolean) Dim iInd As Integer Dim hCtrl As CControl If IsNull(Parent) Then Return If Not Selected Then Return For iInd = 0 To $aPanel.Max $aPanel[iInd].Delete $aPanel[iInd] = Null Next Try Control.ToolTip = "" Selected = False If Not bDoNotRemove Then hForm.Selection.Remove(Name) If hForm.Master = Me Then hForm.Master = Null For Each hCtrl In hForm.Selection hForm.Master = hCtrl Break Next Endif Endif End Private Sub CreatePanel(iIndex As Integer, sTag As String, iMouse As Integer, bMaster As Boolean) Dim hPanel As Panel Dim hCont As Object hCont = Control.Parent hPanel = New Panel(hCont) As "Panel" hPanel.Resize(PAN_W, PAN_H) hPanel.Tag = "#" & sTag hPanel.Mouse = iMouse hPanel.Ignore = True 'hPanel.Tracking = True 'hPanel.Merge = True $aPanel[iIndex] = hPanel If bMaster Then hPanel.Background = Color.TextBackground 'hPanel.Foreground = Color.Black Else hPanel.Background = Color.LightForeground 'hPanel.Foreground = Color.White Endif MovePanel(iIndex) hPanel.Border = Border.Plain End Private Sub MovePanel(iPanel As Integer) Dim hCtrl As Control Dim hPanel As Panel Dim X, Y As Integer hCtrl = Control hPanel = $aPanel[iPanel] hPanel.Raise 'If hPanel.Previous <> hCtrl Then hPanel.Next = hCtrl 'hPanel.Move(hCtrl.X - 3, hCtrl.Y - 3, hCtrl.W + 6, hCtrl.H + 6) 'Return Select Case Mid$(hPanel.Tag, 2) Case "NW", "N", "NE" Y = hCtrl.Y - PAN_H \ 2 'hPanel.Y = hCtrl.Y Case "SW", "S", "SE" Y = hCtrl.Y + hCtrl.Height - PAN_H \ 2 - 1 'hPanel.Y = hCtrl.Y + hCtrl.Height - PAN_H Default Y = hCtrl.Y + (hCtrl.Height - PAN_H) \ 2 End Select Select Case Mid$(hPanel.Tag, 2) Case "NW", "W", "SW" X = hCtrl.X - PAN_W \ 2 'hPanel.X = hCtrl.X Case "NE", "E", "SE" X = hCtrl.X + hCtrl.Width - PAN_W \ 2 - 1 'hPanel.X = hCtrl.X + hCtrl.Width - PAN_W Default X = hCtrl.X + (hCtrl.Width - PAN_W) \ 2 End Select hPanel.Move(X, Y) End Public Sub MoveAllHandle() Dim iInd As Integer If Not Selected Then Return If $bDoNotMoveHandle Then Return For iInd = 0 To $aPanel.Max MovePanel(iInd) Next If HasIcon() Then $hFamily.EnterControl(Null, Me) End Public Sub UpdateArrangement() Dim bIgnore As Boolean With GetForm() Try bIgnore = Control.Ignore If Parent And If Not bIgnore Then .ArrangeContainerByDefault(Parent, True) If $bIsContainer Then .ArrangeContainerByDefault(Me, True) End With End Public Sub Move(X As Integer, Y As Integer) Dim hUndo As CUndo = GetUndo() 'IF Kind = "GridView" THEN ' PRINT "Pos ="; Control.X; Control.Y ' PRINT "Move("; X; ","; Y; ")" 'ENDIF If X And If Y And If X = GetProperty("#X") And If Y = GetProperty("#Y") Then Return If Parent Then Control.Move($hFamily.ConvertCoord(X, False), $hFamily.ConvertCoord(Y, False)) 'Arrange(Parent.Control, FALSE) Endif $bDoNotMoveHandle = True hUndo.Begin SetProperty("#X", X) SetProperty("#Y", Y) hUndo.End $bDoNotMoveHandle = False MoveAllHandle UpdateArrangement() End Public Sub MoveCoord(X As Integer, Y As Integer, Optional bFree As Boolean) If Not bFree Then X = Grid(X) Y = Grid(Y) 'X = Grid(X, Desktop.Scale) 'Y = Grid(Y, Desktop.Scale) Endif X = $hFamily.ConvertCoord(X, True) Y = $hFamily.ConvertCoord(Y, True) Move(X, Y) End Public Sub HasIcon() As Boolean Return $cValue["#icon"] End Public Sub Resize(W As Integer, H As Integer) Dim hUndo As CUndo = GetUndo() If Virtual Then Return W = Max(W, 1) H = Max(H, 1) If W = GetProperty("#Width") And If H = GetProperty("#Height") Then Return Control.Resize($hFamily.ConvertCoord(W, False), $hFamily.ConvertCoord(H, False)) $bDoNotMoveHandle = True hUndo.Begin SetProperty("#Width", W) SetProperty("#Height", H) hUndo.End $bDoNotMoveHandle = False UpdateArrangement() MoveAllHandle End Public Sub ResizeCoord(W As Integer, H As Integer, Optional bFree As Boolean) If Not bFree Then W = Grid(W) H = Grid(H) Endif W = $hFamily.ConvertCoord(W, True) H = $hFamily.ConvertCoord(H, True) Resize(W, H) End Public Sub MoveAndResize(X As Integer, Y As Integer, W As Integer, H As Integer) Dim hUndo As CUndo = GetUndo() If Virtual Then Move(X, Y) Return Endif W = Max(W, 1) H = Max(H, 1) hUndo.Begin 'IF Kind = "GridView" THEN ' PRINT "Pos ="; Control.X; Control.Y ' PRINT "Move("; X; ","; Y; ")" 'ENDIF If Parent Then Control.Move($hFamily.ConvertCoord(X, False), $hFamily.ConvertCoord(Y, False), $hFamily.ConvertCoord(W, False), $hFamily.ConvertCoord(H, False)) Else Control.Resize($hFamily.ConvertCoord(W, False), $hFamily.ConvertCoord(H, False)) Endif $bDoNotMoveHandle = True SetProperty("#X", X) SetProperty("#Y", Y) SetProperty("#Width", W) SetProperty("#Height", H) hUndo.End $bDoNotMoveHandle = False UpdateArrangement() MoveAllHandle End Public Sub MoveAndResizeCoord(X As Integer, Y As Integer, W As Integer, H As Integer, Optional bFree As Boolean) If Not bFree Then X = Grid(X) Y = Grid(Y) W = Grid(W) H = Grid(H) Endif X = $hFamily.ConvertCoord(X, True) Y = $hFamily.ConvertCoord(Y, True) W = $hFamily.ConvertCoord(W, True) H = $hFamily.ConvertCoord(H, True) MoveAndResize(X, Y, W, H) End Public Procedure Panel_MouseDown() 'PRINT "Panel_MouseDown" If Project.Running Then Return If GetForm().ReadOnly Then Return If Not Last.Tag Then Return GetForm().StartResizeMode StartMoveResize GetUndo().Begin $MX = Mouse.ScreenX $MY = Mouse.ScreenY $X = Last.X + Mouse.X $Y = Last.Y + Mouse.Y End Public Procedure Panel_MouseMove() Dim iX As Integer Dim iY As Integer Dim iW As Integer Dim iH As Integer Dim iPanX As Integer Dim iPanY As Integer Dim hPanel As Panel = Last Dim hCtrl As Control Dim bSomethingDone As Boolean Dim hUndo As CUndo Dim sArr As String Dim sTag As String Dim bIgnore As Boolean If Not $bMove Then Return hUndo = GetUndo() CControl.SetGrid(Not Mouse.Shift) hCtrl = Control iPanX = $X + Mouse.ScreenX - $MX iPanY = $Y + Mouse.ScreenY - $MY iX = Control.X iY = Control.Y iW = Control.W iH = Control.H 'Debug hCtrl.X;; hCtrl.Y; " / "; $X;; $Y; " -> "; iPanX;; iPanY sTag = Mid$(hPanel.Tag, 2) Try bIgnore = Control.Ignore If $hFamily.AutomaticArrangement And If Not bIgnore Then sArr = Parent.GetArrangement() If Parent.IsArrangementInverted() Then Select Case sArr Case "H" If Right(sTag) <> "W" Then Return Case "V" If Left(sTag) <> "N" Then Return Case "R", "C" If Left(sTag) = "S" Or If Right(sTag) = "E" Then Return End Select Else Select Case sArr Case "H" If Right(sTag) <> "E" Then Return Case "V" If Left(sTag) <> "S" Then Return Case "R", "C" If Left(sTag) = "N" Or If Right(sTag) = "W" Then Return End Select Endif Endif Select Case sTag Case "N", "NW", "NE" iY = Grid(iPanY) iH = Grid(hCtrl.H + hCtrl.Y - iY) Case "S", "SW", "SE" iH = Grid(iPanY - hCtrl.Y) End Select Select Case sTag Case "W", "NW", "SW" iX = Grid(iPanX) iW = Grid(hCtrl.W + hCtrl.X - iX) Case "E", "NE", "SE" iW = Grid(iPanX - hCtrl.X) End Select If iW > 0 And If iH > 0 Then If iX <> hCtrl.X Or If iY <> hCtrl.Y Then If iW <> hCtrl.W Or If iH <> hCtrl.H Then MoveAndResizeCoord(iX, iY, iW, iH) bSomethingDone = True Else MoveCoord(iX, iY) bSomethingDone = True Endif Else If iW <> hCtrl.W Or If iH <> hCtrl.H Then ResizeCoord(iW, iH) bSomethingDone = True Endif If bSomethingDone And If Not hUndo.IsDisabled() Then hUndo.Disable Endif Endif GetForm().UpdateInfo(Me) CControl.SetGrid(True) End Public Procedure Panel_MouseUp() Dim hUndo As CUndo = GetUndo() EndMoveResize If hUndo.IsDisabled() Then hUndo.Enable hUndo.End GetForm().EndResizeMode End Public Sub Panel_Menu() GetForm().Control_Menu End Public Sub Panel_Enter() GetForm().CheckHovered(Control.Parent) End Public Sub Panel_Leave() GetForm().CheckHovered(Control.Parent) End ' Public Sub Panel_Draw() ' ' Dim hPanel As DrawingArea = Last ' ' If $bMaster Then ' Draw.Background = Color.White ' Draw.Foreground = Color.SelectedBackground ' Else ' Draw.Background = Color.SelectedBackground ' Draw.Foreground = Color.Black ' Endif ' Draw.FillRect(0, 0, hPanel.W, 3) ' Draw.FillRect(0, hPanel.H - 3, hPanel.W, 3) ' Draw.FillRect(0, 3, 3, hPanel.H - 6) ' Draw.FillRect(hPanel.W - 3, 3, 3, hPanel.H - 6) ' Draw.Rect(0, 0, hPanel.W, hPanel.H) ' ' End Public Function Grid(iVal As Integer) As Integer Dim iMod As Integer Dim iGrid As Integer 'IF (iVal >= 0) THEN ' RETURN Int((iVal + iGrid / 2) / iGrid) * iGrid 'ELSE ' RETURN Int((iVal + iGrid / 2) / iGrid) * iGrid 'ENDIF If $bGrid Or If $hFamily.ForceGrid Then iGrid = $hFamily.GetSnap() iMod = iVal Mod iGrid If (iMod < 0) Then iMod = iMod + iGrid If iMod < (iGrid \ 2) Then iVal = iVal - iMod Else iVal = iVal + iGrid - iMod Endif Endif Return iVal End Private Function GetCoord(iCoord As Integer, Optional bDim As Boolean) As Float If bDim And If iCoord = 1 Then Return 0 Return iCoord / Desktop.Scale End Private Sub FormatScaledCoord(eCoord As Float) As String If eCoord = Int(eCoord) Then Return CStr(Int(eCoord)) Else Return CStr(Int(eCoord)) & "." & Mid$(Format(Frac(eCoord), ".####"), 2) Endif End Static Public Sub StringArrayPropertyToString(aVal As String[], bTranslate As Boolean) As String Dim sLine As String Dim iInd As Integer Dim sVal As String If Not aVal Or If aVal.Count = 0 Then sLine = "Null" Else sLine = "[" For iInd = 0 To aVal.Max sVal = Quote(aVal[iInd]) If bTranslate Then sVal = "(" & sVal & ")" If iInd Mod 32 = 0 Then If iInd Then sLine &= "]" If iInd > 32 Then sLine &= ")" sLine &= ".Insert([" Endif Else sLine &= ", " Endif sLine &= sVal Next sLine &= "]" If iInd > 32 Then sLine &= ")" Endif Return sLine End Public Function GetEachProperty(DX As Integer, DY As Integer, Optional bNoScale As Boolean) As String[] Dim cLine As New String[] Dim sProp As String Dim vVal As Variant Dim cProp As Collection Dim hProp As CPropertyInfo Dim sLine As String Dim X, Y, W, H As Integer Dim bHasSize As Boolean Dim bTranslate As Boolean Dim sVal As String Dim iPos As Integer Dim sShortcut As String Dim sThreeDots As String cProp = Project.Documentation.Classes[Kind].Properties 'If Not CComponent.Classes[Kind].PropertyList Then Stop For Each sProp In Project.Documentation.Classes[Kind].PropertyList 'PRINT Name; "."; sProp If Not cProp.Exist(sProp) Then Continue hProp = cProp[sProp] If hProp.Exclude Then Continue If Not VirtualCoord Then If Not Virtual Then If sProp = "X" Or If sProp = "Y" Then Continue Endif If sProp = "Width" Or If sProp = "Height" Then Continue Endif vVal = GetProperty(sProp) 'PRINT "-> "; vVal 'IF NOT IsNull(cDefault[sProp]) THEN ' IF vVal = cDefault[sProp] THEN ' GOTO _SUIVANT ' ENDIF 'ELSE If Not hProp.Required Then If IsNull(vVal) Then Continue Endif 'ENDIF If Right(hProp.Type, 2) <> "[]" Then vVal = ConvertToString(vVal, hProp) Endif sLine = sProp & " = " If hProp.Translate Then bTranslate = GetPropertyDefault(CPropertyInfo.TRANSLATE_NAME) Else bTranslate = False Endif Select Case hProp.Type Case "s", "v", "List", "Path", "WebImage", "Table", "Menu", "ReportCoord", "Field", "WebCoord", "WebFont" If bTranslate Then sVal = vVal If sVal Ends "..." Then sVal = Left(sVal, -3) sThreeDots = "..." Else If sVal Ends "…" Then sVal = String.Left(sVal, -1) sThreeDots = "…" Else sThreeDots = "" Endif If hProp.Shortcut Then iPos = String.InStr(sVal, "&") If iPos Then sShortcut = String.Mid$(sVal, iPos + 1, 1) If InStr("& ", sShortcut) Then sShortcut = "" Else sVal = String.Left(sVal, iPos - 1) & String.Mid(sVal, iPos + 1) Endif Endif If sShortcut Then sLine &= "Shortcut((" & Quote(sVal) & "), " & Quote(sShortcut) & ")" Else sLine &= "(" & Quote(sVal) & ")" Endif Else sLine &= "(" & Quote(sVal) & ")" Endif If sThreeDots Then sLine &= " & " & Quote(sThreeDots) Else sLine &= Quote$(vVal) Endif Case "String[]", "Fields", "Field[]" 'aVal = vVal.Copy() sLine &= StringArrayPropertyToString(vVal, bTranslate) Case "Font" sLine = sLine & "Font[" & Quote(vVal) & "]" Case "Color" If Not IsNull(Val(vVal)) Then sLine = sLine & vVal Else sLine = sLine & "Color." & vVal Endif Case "Picture" If hProp.Argument = "NoCache" Then sLine &= "Picture.Load(" & Quote$(vVal) & ")" Else sLine &= "Picture[" & Quote$(vVal) & "]" Endif Case "Image" sLine &= "Image.Load(" & Quote$(vVal) & ")" Case "Animation" sLine &= "Animation.Load(" & Quote$(vVal) & ")" Case "SvgImage" sLine &= "SvgImage.Load(" & Quote$(vVal) & ")" Case "ReportPadding" sLine &= "ReportPadding[" & Quote$(vVal) & "]" Case "ReportMargin" sLine &= "ReportMargin[" & Quote$(vVal) & "]" Case "ReportBoxShadow" sLine &= "ReportBoxShadow[" & Quote$(vVal) & "]" Case "ReportBorder" sLine &= "ReportBorder[" & Quote$(vVal) & "]" Case "ReportBrush" sLine &= "ReportBrush[" & Quote$(vVal) & "]" Case "Connection" sLine = sLine & "Connections[" & Quote$(vVal) & "]" Case "Constant" sLine = sLine & hProp.ConstantClass & "." & vVal Case "d" sLine = sLine & "CDate(" & Quote$(CStr(vVal)) & ")" Case Else sLine = sLine & CStr(vVal) End Select If hProp.Virtual Then sLine = "#" & sLine cLine.Add(sLine) Next X = GetProperty("#X") - DX Y = GetProperty("#Y") - DY Try W = GetProperty("#Width") Try H = GetProperty("#Height") bHasSize = W > 0 And H > 0 If bHasSize Or If Abs(X) + Abs(Y) Then If bNoScale Then sLine = "Move(" & X & "," & Y If bHasSize Then sLine = sLine & "," & W & "," & H sLine = sLine & ")" Else sLine = "MoveScaled(" & FormatScaledCoord(GetCoord(X)) & "," & FormatScaledCoord(GetCoord(Y)) If bHasSize Then sLine = sLine & "," & FormatScaledCoord(GetCoord(W, True)) & "," & FormatScaledCoord(GetCoord(H, True)) sLine = sLine & ")" Endif If VirtualCoord Or If Virtual Then sLine = "#" & sLine cLine.Add(sLine, 0) Endif Return cLine End Public Sub Raise() Dim hUndo As CUndo = GetUndo() hUndo.Begin() hUndo.Add("LowerControl", [Name]) Control.Raise If $hFamily.AutomaticArrangement Then Parent.Arrange() MoveAllHandle hUndo.End() Modify End Public Sub Lower() Dim hUndo As CUndo = GetUndo() hUndo.Begin() GetUndo().Add("RaiseControl", [Name]) Control.Lower If $hFamily.AutomaticArrangement Then Parent.Arrange() MoveAllHandle hUndo.End() Modify End Public Sub MoveDown() Dim hUndo As CUndo = GetUndo() hUndo.Begin() Try Control.Next = Control.Next.Next If Error Then Return GetUndo().Add("MoveUpControl", [Name]) If $hFamily.AutomaticArrangement Then Parent.Arrange() MoveAllHandle hUndo.End() Modify End Public Sub MoveUp() Dim hUndo As CUndo = GetUndo() hUndo.Begin() Try Control.Previous = Control.Previous.Previous If Error Then Return GetUndo().Add("MoveDownControl", [Name]) If $hFamily.AutomaticArrangement Then Parent.Arrange() MoveAllHandle hUndo.End() Modify End Private Sub Modify() Try GetForm().Modify End Static Public Sub SetGrid(bGrid As Boolean) $bGrid = bGrid End Static Public Sub RefreshHandleSize() Dim iSize As Integer iSize = Settings["/HandleSize", Desktop.Scale] PAN_W = iSize PAN_H = iSize End Public Sub RefreshHandle() MoveAllHandle End Public Function GetGroup() As String Dim sGroup As String sGroup = GetProperty(CPropertyInfo.EVENT_NAME) If Not sGroup Then sGroup = Name Return sGroup End Static Public Sub RemoveShortcut(sText As String) As String Dim iPos As Integer iPos = InStr(sText, "&") If iPos Then sText = Left(sText, iPos - 1) & Mid$(sText, iPos + 1) If sText Ends "..." Then sText = Left(sText, -3) Else If sText Ends "…" Then sText = String.Left(sText, -1) Endif Return sText End Private Sub SetAction(cAction As Collection, sProp As String, Optional bRemoveShortcut As Boolean) Dim sVal As String = GetPropertyString(sProp) If sVal Then If bRemoveShortcut Then sVal = RemoveShortcut(sVal) cAction[sProp] = sVal Endif End Public Sub AddToolbar(cToolbarSet As Collection, cForm As Collection) Dim cToolbar As Collection Dim aConfig As String[] Dim aList As String[] Dim sKey As String Dim hChild As Control Dim hCtrl As CControl Dim sAction As String sKey = GetPropertyString("Key") If Not sKey Then Return If cToolbarSet.Exist(sKey) Then Return 'Debug "Adding toolbar "; sKey cToolbar = New Collection cToolbarSet[sKey] = cToolbar SetAction(cToolbar, "Text") aConfig = New String[] aList = New String[] For Each hChild In Control.Children hCtrl = cForm[hChild.Tag] If Not hCtrl Then Continue sAction = hCtrl.GetPropertyString("Action") If sAction Then If Left(sAction) = "." Then sAction = Mid$(sAction, 2) aList.Add(sAction) Else If hCtrl.Kind = "Separator" sAction = "|" Else If hCtrl.Kind = "Panel" And If Container(hCtrl.Control).Children.Count = 0 Then sAction = If(hCtrl.GetProperty("Expand"), "~", "-") Else If hCtrl.Kind = "Spring" Then sAction = "~" Else sAction = "$" & hCtrl.Name Endif If Not hCtrl.GetPropertyDefault("Visible") Then Continue aConfig.Add(sAction) Next cToolbar["Default"] = aConfig.Join(",") cToolbar["List"] = aList.Join(",") End Public Sub AddAction(cActionSet As Collection) Dim sAction As String Dim cAction As Collection Dim sPicture As String sAction = GetProperty("Action") If Not sAction Then Return 'If Not ["Menu", "ToggleButton", "ToolButton"].Exist(Kind) Then Return If Left(sAction) = "." Then sAction = Mid$(sAction, 2) cAction = cActionSet[sAction] If Not cAction Then cAction = New Collection cActionSet[sAction] = cAction Endif cAction["Name"] = sAction SetAction(cAction, "Text", True) SetAction(cAction, "ToolTip") If Kind = "Form" Then sPicture = GetPropertyString("Icon") Else sPicture = GetPropertyString("Picture") Endif If Not sPicture And If Kind <> $hFamily.MenuClass Then sPicture = "$" & Kind If cAction["Picture"] Then sPicture = "" Endif If sPicture Then cAction["Picture"] = sPicture SetAction(cAction, "Shortcut") If Kind = $hFamily.MenuClass Then cAction["Menu"] = True End Public Sub _get(sProperty As String) As Variant Return GetPropertyDefault(sProperty) End Public Sub _put(vValue As Variant, sProperty As String) $cValue[sProperty] = vValue End Private Function X_Read() As Integer Try Return $cValue["#X"] End Private Function Y_Read() As Integer Try Return $cValue["#Y"] End Private Function W_Read() As Integer Try Return $cValue["#Width"] End Private Function H_Read() As Integer Try Return $cValue["#Height"] End Public Sub GetConnection() As String If $cValue["Connection"] Then Return $cValue["Connection"] If Parent Then Return Parent.GetConnection() End Public Sub GetTable(Optional sField As String) As String Dim sTable As String If sField Then Return $cValue[sField] If Not Parent Then Return sTable = Parent["Table"] If sTable Then Return sTable Return Parent.GetTable() End Public Sub IsExpandedContents() As Boolean Return Not IsNull($cValue["#OldWidth"]) End Public Sub ExpandContents(Optional bForce As Boolean) Dim hUndo As CUndo = GetUndo() Dim hChild As CControl Dim hCont As Container Dim W As Integer Dim H As Integer If Not IsContainer() Then Return hCont = Control hUndo.Begin If bForce Or If IsNull($cValue["#OldWidth"]) Then For Each hChild In GetChildren() W = Max(W, hChild.Control.ScreenX - hCont.ScreenX + hChild.W) H = Max(H, hChild.Control.ScreenY - hCont.ScreenY + hChild.H) Next If W = 0 Or If H = 0 Then Return W += Desktop.Scale H += Desktop.Scale If IsNull($cValue["#OldWidth"]) Then $cValue["#OldWidth"] = W_Read() $cValue["#OldHeight"] = H_Read() Endif Me.Raise Resize(W, H) Endif If Parent And If Parent.Parent Then Parent.ExpandContents(True) hUndo.End End Public Sub CollapseContents() Dim hUndo As CUndo = GetUndo() Dim hChild As CControl Dim hCont As Container Dim W As Integer Dim H As Integer If Not IsContainer() Then Return hCont = Control hUndo.Begin For Each hChild In GetChildren() hChild.CollapseContents() Next If IsExpandedContents() Then Try W = $cValue["#OldWidth"] Try H = $cValue["#OldHeight"] $cValue["#OldWidth"] = Null $cValue["#OldHeight"] = Null Resize(W, H) Endif hUndo.End End Public Sub ToggleContents() If IsExpandedContents() Then CollapseContents Else ExpandContents Endif End Public Sub StartMoveResize() $bMove = True End Public Sub EndMoveResize() $bMove = False UpdateArrangement End Public Sub UpdateGeometry() Dim hUndo As CUndo If Control.X = Me.X And If Control.Y = Me.Y Then If Virtual Then Goto UPDATE_ARRANGEMENT If Control.W = Me.W And If Control.H = Me.H Then Goto UPDATE_ARRANGEMENT Endif hUndo = GetUndo() $bDoNotMoveHandle = True hUndo.Begin SetProperty("#X", Control.X) SetProperty("#Y", Control.Y) If Not Virtual Then SetProperty("#Width", Control.W) SetProperty("#Height", Control.H) Endif hUndo.End $bDoNotMoveHandle = False MoveAllHandle UPDATE_ARRANGEMENT: UpdateArrangement End Public Sub GetArrangement() As String Dim sArr As String Try sArr = Project.Documentation.Classes[Kind].Symbols["_DefaultArrangement"].Value If Not Error And If Left(sArr) = "F" Then Try sArr = Left(GetProperty("Arrangement")) Return sArr End Public Sub IsArrangementInverted() As Boolean Return $cValue.Exist("Invert") End Public Sub Arrange() Dim sArr As String Dim hTab As Object Dim iTab As Integer Dim hChild As Control Dim hForm As FForm Dim hCtrl As CControl If $bArranging Then Return If Not IsContainer() Then Return sArr = GetArrangement() If Not sArr Then Return $bArranging = True hTab = Control Try hTab.Invert = Not IsNull(GetProperty("Invert")) Try hTab.Margin = True 'Not IsNull(GetProperty("Margin")) Try hTab.Spacing = Not IsNull(GetProperty("Spacing")) Select Case sArr Case "V" Try hTab.Arrangement = Arrange.Vertical Case "H" Try hTab.Arrangement = Arrange.Horizontal Case "R" Try hTab.Arrangement = Arrange.Row Case "C" Try hTab.Arrangement = Arrange.Column Case "F" ' Is it a good idea to implemet "fill"? Try hTab.Arrangement = Arrange.Fill End Select Try hTab.Arrangement = Arrange.None 'Try hTab.Margin = False 'Try hTab.Spacing = False 'Try hTab.Invert = False 'Try hTab.Padding = 0 hForm = GetForm() If IsMultiContainer() Then For iTab = 0 To hTab.Count - 1 For Each hChild In hTab[iTab].Children hCtrl = hForm.GetControl(hChild) If hCtrl Then hCtrl.UpdateGeometry Next Next Else For Each hChild In hTab.Children hCtrl = hForm.GetControl(hChild) If hCtrl Then hCtrl.UpdateGeometry Next Endif $bArranging = False End Public Sub FindFreePlace(W As Integer, H As Integer, ByRef X As Integer, ByRef Y As Integer) As Boolean Dim hCont As Object Dim aRect As Rect[] Dim hChild As Control Dim hRect As Rect Dim hTest As Rect Dim NY As Integer Dim NX As Integer If Not IsContainer() Then Return True hCont = Control aRect = New Rect[] If IsMultiContainer() Then For Each hChild In hCont[hCont.Index].Children aRect.Add(Rect(hChild.X, hChild.Y, hChild.W, hChild.H)) Next Else For Each hChild In hCont.Children aRect.Add(Rect(hChild.X, hChild.Y, hChild.W, hChild.H)) Next Endif hTest = Rect(0, 0, W, H) If InStr("VR", GetArrangement()) Then NX = Me.W Do For Each hRect In aRect If hTest.Intersection(hRect) Then NX = Min(NX, hRect.X + hRect.W) NY = hRect.Y + hRect.H Break Endif hRect = Null Next If Not hRect Then X = hTest.X Y = hTest.Y Return Endif If (NY + H) > Me.H Then If (NX + W) > Me.W Then Return True hTest.X = NX hTest.Y = 0 NX = Me.W Else hTest.Y = NY Endif Loop Else NY = Me.H Do For Each hRect In aRect If hTest.Intersection(hRect) Then NY = Min(NY, hRect.Y + hRect.H) NX = hRect.X + hRect.W Break Endif hRect = Null Next If Not hRect Then X = hTest.X Y = hTest.Y Return Endif If (NX + W) > Me.W Then If (NY + H) > Me.H Then Return True hTest.X = 0 hTest.Y = NY NY = Me.H Else hTest.X = NX Endif Loop Endif End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/CMenu.class000066400000000000000000000030241411575327000227620ustar00rootroot00000000000000' Gambas class file Public Name As String Public Caption As String Public (Shortcut) As String Public Group As String Public Ctrl As Boolean Public Shift As Boolean Public Alt As Boolean Public Enabled As Boolean Public Visible As Boolean Public Checked As Boolean Public Toggle As Boolean Public Radio As Boolean Public Level As Integer Public (Picture) As String Public Tag As String Public (Action) As String Public Translate As Boolean Public Sub _new() Enabled = True Visible = True End Public Sub SetShortcut(sShortcut As String) Do If UCase(Left$(sShortcut, 5)) = "CTRL+" Then Ctrl = True sShortcut = Mid$(sShortcut, 6) Continue Endif If UCase(Left$(sShortcut, 6)) = "SHIFT+" Then Shift = True sShortcut = Mid$(sShortcut, 7) Continue Endif If UCase(Left$(sShortcut, 4)) = "ALT+" Then Alt = True sShortcut = Mid$(sShortcut, 5) Continue Endif Shortcut = sShortcut Return Loop End Public Function GetShortcut() As String Dim sShortcut As String If Shortcut Then If Ctrl Then sShortcut = sShortcut & "Ctrl+" If Shift Then sShortcut = sShortcut & "Shift+" If Alt Then sShortcut = sShortcut & "Alt+" sShortcut = sShortcut & Shortcut Return sShortcut Endif End Public Sub ToString() As String Return [Name, Caption, Shortcut, Group, CStr(Ctrl), CStr(Shift), CStr(Alt), CStr(Enabled), CStr(Visible), CStr(Checked), CStr(Translate), CStr(Toggle), CStr(Radio), CStr(Level), Picture, Tag, Action].Join(":") End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FForm.class000066400000000000000000002664121411575327000230000ustar00rootroot00000000000000' Gambas class file Class Shortcut Public Path As String Public Family As String Public Age As Integer '' The text age. It is incremented each time the text is modified Public Master As CControl Public Selection As New Collection Public Control As New Collection(gb.IgnoreCase) Public RootControl As CControl Public AllMenus As New CControl[] Public Container As Container Property Read ReadOnly As Boolean Property Read DiffMode As Boolean Private $bDoNotModify As Boolean Private $bModify As Boolean Private $bSelChange As Boolean Private $bReadOnly As Boolean Private $bScaled As Boolean Private $bNoUpdateMenu As Boolean Private $sRenameOld As String Private $sRenameNew As String 'PRIVATE $sType AS String ' Gestion de la souris Private $iMode As Integer Private Enum MODE_NOTHING, MODE_CREATE, MODE_MOVE, MODE_SELECT, MODE_RESIZE Private $sTool As String Private $hCurrent As CControl Private $X As Integer Private $Y As Integer Private $MX As Integer Private $MY As Integer Private $W As Integer Private $H As Integer Private $bMove As Boolean Private $bSelectParent As Boolean Private $XS As Integer Private $YS As Integer Private $WS As Integer Private $HS As Integer Private Const MIN_WIDTH As Integer = 4 Private Const MIN_HEIGHT As Integer = 4 ' Gestion de la sauvegarde Private $sSave As String Private $iSaveX As Integer Private $iSaveY As Integer 'PRIVATE $iIndent AS INTEGER Private $iSaveLevel As Integer Private $bSelectNew As Boolean Private $bDoNotArrange As Boolean Private $cAction As Collection Private $cToolbar As Collection Private $hContainer As CControl Private $iContX As Integer Private $iContY As Integer 'PRIVATE CONST FORM_NAME AS String = "$" 'PRIVATE CONST COORD_CONTROL AS Integer = 0 Private Const COORD_CONTROL_TO_INSIDE As Integer = 1 Private Const COORD_INSIDE_TO_CONTROL As Integer = 2 Private Const MOVE_FIRST As Integer = 0 Private Const MOVE_LAST As Integer = 1 Private Const MOVE_NEXT As Integer = 2 Private Const MOVE_PREVIOUS As Integer = 3 Private $bAfterLock As Boolean Private $bConvert As Boolean ' Convert from 2.0 to 3.0 Private $bNoWarning As Boolean ' Do not warn if a property does not exist in FromString() Private $bBorder As Boolean Private $hFamily As CFamily Private $hUndo As New CUndo Private $hCtrlFrame As Control Private $hDropTarget As CControl Private $iLockArrangement As Integer Private $cInfo As Collection Private $bInfoTop As Boolean Private $bDiffMode As Boolean Public Sub _new(sPath As String) 'dim sFamily as string '$hUndo = New CUndo btnCloseWindow.Design = True btnMaxWindow.Design = True Path = sPath Me.Name = File.BaseName(sPath) $hFamily = CFamily.Get(File.Ext(sPath)) Family = $hFamily.Name panBorder.Background = $hFamily.Background Container = panBorder Project.InitTooltip(dwgInfo) End Public Sub Reload() As Boolean Dim sData As String Dim sErr As String sData = File.Load(Path) 'If Left$(sData, Len(Project.FORM_MAGIC_1)) = Project.FORM_MAGIC_1 Then ' $bConvert = True 'Else If Left$(sData, Len(Project.FORM_MAGIC_2)) = Project.FORM_MAGIC_2 Then ' $bConvert = True If Left$(sData, Len(Project.FORM_MAGIC)) <> Project.FORM_MAGIC Then FMain.ShowWarning(("Bad form file")) Return True Endif $bNoUpdateMenu = True UnselectAll RefreshProperty $hUndo.Disable $hUndo.Clear If RootControl Then RootControl.Delete RootControl = Null Control[Me.Name] = Null AllMenus.Clear Endif $bDoNotModify = True $bAfterLock = False sData = Mid$(sData, Len(Project.FORM_MAGIC) + 1) Inc $iLockArrangement sErr = FromString(sData) Dec $iLockArrangement If sErr Then Error.Raise(sErr) $bConvert = False UpdateSnap UpdateBorder 'SetLock($bAfterLock) 'If $bAfterLock Then Stop Action[".lock", Me].Value = $bAfterLock $bDoNotModify = False $bNoUpdateMenu = False $hUndo.Enable SetReadOnly Modify(True) ArrangeContainerByDefault(RootControl, True, True) FFormStack.RefreshAll UpdateDiffAction End Public Sub UpdateSnap() Dim hGrid As Image Dim hCtrl As CControl = RootControl Dim iColor As Integer Dim X, Y As Integer Dim nPts As Integer Dim iSnap As Integer If Action[".grid", Me].Value Then iSnap = $hFamily.GetSnap() While nPts * iSnap < 32 Inc nPts Wend hGrid = New Image(iSnap * nPts, iSnap * nPts) iColor = $hFamily.Background If iColor = Color.Default Then iColor = Color.Background hGrid.Fill(iColor) iColor = Color.Merge(iColor, Color.Foreground, 0.3) For X = 0 To iSnap * nPts - 1 Step iSnap For Y = 0 To iSnap * nPts - 1 Step iSnap hGrid[X, Y] = iColor Next Next Endif hCtrl["#Grid"] = hGrid panBorder.Refresh ' If hCtrl.Control Is Form Then ' hCtrl.Control.Picture = hPict ' Else ' hCtrl.Control.Refresh ' Endif End Private Sub FromString(sData As String, Optional hParent As CControl) As String Dim hCtrl As CControl Dim sName As String Dim sClass As String Dim sOldClass As String Dim iPos, iPos2, iPos3 As Integer Dim sLine As String Dim sProperty As String Dim sValue As String Dim vValue As Variant Dim aVal As String[] Dim iLevel As Integer Dim sEventName As String Dim aCoord As String[] Dim eW, eH As Float Dim X, Y, W, H As Integer Dim bFirst As Boolean Dim bPublic As Boolean Dim sProp As String Dim aScan As String[] Dim aData As String[] Dim DS As Integer Dim aBounds As Integer[] Dim DX, DY As Integer Inc $iLockArrangement DS = Desktop.Scale aData = Split(sData, "\n") ' Check if we have bounds If aData.Count Then sLine = aData[0] If sLine Begins "#BOUNDS:" Then aData.Remove(0) Try aBounds = Split(Mid$(sLine, 9)) If aBounds And If aBounds.Count = 4 And If hParent Then hParent.FindFreePlace(aBounds[2], aBounds[3], ByRef DX, ByRef DY) Endif Endif Endif ' Check that controls exist first For Each sLine In aData sLine = Trim(sLine) If Left(sLine) = "{" Then Inc iLevel sClass = Split(Trim(Mid$(sLine, 2)), " ")[1] If Left$(sClass) = "#" Then sClass = Mid$(sClass, 2) If Not Project.Documentation.Classes.Exist(sClass) Then Return Subst(("Unknown control: &1"), sClass) Endif Else If sLine = "}" Then Dec iLevel If iLevel = 0 Then Break Endif Next hCtrl = hParent bFirst = True $hUndo.Begin For Each sLine In aData sLine = Trim(sLine) If Len(sLine) = 0 Then Continue If Left$(sLine) = "#" Then sLine = Mid$(sLine, 2) If sLine = "LOCKED" Then $bAfterLock = True Continue Endif Endif If Left$(sLine) = "{" Then aVal = Split(Trim(Mid$(sLine, 2)), " ") sName = aVal[0] sClass = aVal[1] sEventName = "" Try sEventName = aVal[2] If Left(sName) = "!" Then bPublic = True sName = Mid$(sName, 2) Else bPublic = False Endif If Left$(sClass) = "#" Then sClass = Mid$(sClass, 2) sOldClass = "" If IsNull(hCtrl) Then sClass = $hFamily.Name hCtrl = CreateControl(sClass, Null, Me.Name) RootControl = hCtrl Else hCtrl = CreateControl(sClass, hCtrl, sName) Endif If sEventName Then hCtrl.SetProperty(CPropertyInfo.EVENT_NAME, sEventName) If bPublic Then hCtrl.SetProperty(CPropertyInfo.PUBLIC_NAME, bPublic) If sOldClass Then Error "gambas3: warning: "; sOldClass; " -> "; sClass If sOldClass = "TextView" Then hCtrl.SetProperty("ReadOnly", True) Else If sOldClass = "DateBox" Then hCtrl.SetProperty("Type", ValueBox.Date) Else If sOldClass = "TimeBox" Then hCtrl.SetProperty("Type", ValueBox.Time) Endif Endif Inc iLevel Else If Left$(sLine) = "}" Then hCtrl.SetDesign 'IF hCtrl = hParent THEN RETURN Dec iLevel If iLevel = 0 Then If $bSelectNew Then '$aSelectNew.Add(hCtrl) hCtrl.Select(Me, bFirst) bFirst = False Endif Endif If hCtrl.IsMultiContainer() Then UpdateMultiContainer(hCtrl) hCtrl = hCtrl.Parent If iLevel = 0 And If Not hParent Then Break Else iPos = InStr(sLine, "=") If iPos Then sProperty = Trim(Left$(sLine, iPos - 1)) sValue = Trim(Mid$(sLine, iPos + 1)) If Left$(sValue, 2) = "(\"" Then If sValue Ends "\")" Then sValue = Mid$(sValue, 2, -1) Else aScan = Scan(sValue, "(\"*\") & \"*\"") sValue = "\"" & aScan[0] & aScan[1] & "\"" Endif Endif If Left$(sValue, 1) = Chr$(34) Then If sProperty = "Name" Then Continue vValue = UnQuote(Mid$(sValue, 2, -1)) If sClass = "ComboBox" Or sClass = "ListBox" Then If sProperty = "List" Then vValue = Split(vValue, "\n") Endif Endif Else If Left$(sValue) = "[" Then aVal = New String[] iPos = 0 Do iPos = InStr(sValue, Chr$(34), iPos + 1) If iPos = 0 Then Break iPos2 = iPos Do iPos3 = InStr(sValue, "\\", iPos2 + 1) iPos2 = InStr(sValue, Chr$(34), iPos2 + 1) If iPos2 = 0 Then iPos2 = Len(sValue) + 1 Break Endif If iPos3 = 0 Or If iPos3 > iPos2 Then Break iPos2 = iPos3 + 1 Loop aVal.Add(UnQuote(Mid$(sValue, iPos + 1, iPos2 - iPos - 1))) iPos = iPos2 + 1 Loop vValue = aVal '.Join("\n") Else If sValue == "TRUE" Then vValue = True Else If sValue == "FALSE" Then vValue = False Else If sValue Begins "CDate(" Then vValue = CDate(Mid$(sValue, 8, -2)) Else If sValue == "NULL" Then vValue = Null Else If sValue Begins "Shortcut(" Then If InStr(sValue, "\\\"") Then Error "gambas3: "; File.Name(Path); ".form: "; sValue aScan = Scan(Mid$(sValue, 10), "(*)*)*") vValue = Shortcut(UnQuote(Trim(aScan[0])), UnQuote(Trim(Mid(aScan[1], 2)))) If aScan[2] Then vValue &= UnQuote(Trim(Mid$(Trim(aScan[2]), 2))) Else Try vValue = CInt(Val(sValue)) If Not Error Then Goto SET_PROPERTY Try vValue = CFloat(sValue) If Not Error Then Goto SET_PROPERTY For Each sProp In CControl.COMPLEX_STRING_PROPERTIES If sValue Begins sProp Then vValue = UnQuote$(Mid$(sValue, Len(sProp) + 2, -2)) sProp = "" Break Endif Next If sProp Then iPos = InStr(sValue, ".") If iPos Then vValue = Mid$(sValue, iPos + 1) Else Error "Bad property value: "; sValue; " for "; sProp ' This is an object ! Endif If sClass = "Form" Then If sProperty = "Border" Then Select Case vValue Case "None" vValue = False Case "Resizable" vValue = True hCtrl.SetProperty("Resizable", True) Case "Fixed" vValue = True hCtrl.SetProperty("Resizable", False) End Select Endif Endif Endif Endif SET_PROPERTY: If hCtrl.SetProperty(sProperty, vValue) Then If Not $bNoWarning Then Print "gambas3: warning: cannot set property: "; hCtrl.Kind; "."; sProperty; " = "; sValue Endif Else If sLine Begins "Move(" Or If sLine Begins "#Move(" Then If Left(sLine) = "#" Then sLine = Mid$(sLine, 2) aCoord = Split(Mid$(sLine, 6, -1)) X = CInt(aCoord[0]) Y = CInt(aCoord[1]) If iLevel = 1 Then X += DX Y += DY Endif If aCoord.Count = 4 Then W = CInt(aCoord[2]) H = CInt(aCoord[3]) Try hCtrl.MoveAndResize(X, Y, W, H) Else Try hCtrl.Move(X, Y) Endif If Error Then Print "Error: Syntax error: "; sLine Else If sLine Begins "MoveScaled(" Or If sLine Begins "#MoveScaled(" Then If Left(sLine) = "#" Then sLine = Mid$(sLine, 2) aCoord = Split(Mid$(sLine, 12, -1)) 'TRY PRINT cCoord[0]; ","; cCoord[1]; ","; cCoord[2]; ","; cCoord[3] 'Try hCtrl.Move(Round(CFloat(cCoord[0]) * DS), Round(CFloat(cCoord[1]) * DS), True) 'TRY hCtrl.SetProperty("X", Val(cCoord[0])) 'TRY hCtrl.SetProperty("Y", Val(cCoord[1])) X = Round(CFloat(aCoord[0]) * DS) Y = Round(CFloat(aCoord[1]) * DS) If iLevel = 1 Then X += DX Y += DY Endif If aCoord.Count = 4 Then eW = CFloat(aCoord[2]) eH = CFloat(aCoord[3]) If $bConvert Then If eW <= 3 Then Inc eW If eH <= 3 Then Inc eH Endif If eW = 0 Then W = 1 Else W = Round(eW * DS) Endif If eH = 0 Then H = 1 Else H = Round(eH * DS) Endif Try hCtrl.MoveAndResize(X, Y, W, H) Else Try hCtrl.Move(X, Y) Endif If Error Then Print "Error: Syntax error: "; sLine Endif Else If Left$(sLine) <> "'" Then Print "Error: Syntax error: "; sLine Endif Endif Next $hUndo.End Dec $iLockArrangement If Not hParent Then hParent = RootControl ArrangeContainerByDefault(hParent, True, True) End ' Private Sub UnQuoteShorcut(sText As String, Optional bNoAmp As Boolean) As String ' ' If Not bNoAmp Then ' sText = Replace(sText, "&&", Chr$(1)) ' sText = Replace(sText, "&", "") ' sText = Replace(sText, Chr$(1), "&") ' Endif ' ' sText = Trim(sText) ' ' 'If Right(sText, 3) = "..." Then sText = Trim(Left(sText, -3)) ' ' Return sText ' ' End Private Sub SaveAction() Dim cAction As Collection Dim cToolbar As Collection Dim sAction As String Dim aList As String[] Dim sText As String Dim sKey As String If $cAction.Count = 0 Then Return aList = New String[] For Each cAction In $cAction aList.Add($cAction.Key) Next aList.Sort 'Try Mkdir Project.Dir &/ ".action" 'hFile = Open Project.Dir &/ ".action" &/ LCase(Me.Name) & ".action" For Output Create $sSave &= "\n" & Project.ACTION_MAGIC & "\n\n{ Actions\n" For Each sAction In aList cAction = $cAction[sAction] 'If Not cAction.Exist("Menu") Then Continue sText = cAction["Text"] If Not sText Then sText = cAction["ToolTip"] $sSave &= " { Action " & sAction & "\n" $sSave &= " Text = " & Quote(sText) & "\n" If cAction.Exist("Menu") Then $sSave &= " Shortcut = " & Quote(cAction["Shortcut"]) & "\n" If cAction["Picture"] Then $sSave &= " Picture = " & Quote(cAction["Picture"]) & "\n" $sSave &= " }\n" Next $sSave &= "}\n" If $cToolbar.Count = 0 Then Return aList = New String[] For Each cToolbar In $cToolbar aList.Add($cToolbar.Key) Next aList.Sort $sSave &= "\n{ Toolbars\n" For Each sKey In aList cToolbar = $cToolbar[sKey] sText = cToolbar["Text"] If Not sText Then sText = cToolbar["ToolTip"] $sSave &= " { Toolbar " & sKey & "\n" $sSave &= " Text = " & Quote(sText) & "\n" $sSave &= " List = " & Quote(cToolbar["List"]) & "\n" $sSave &= " Default = " & Quote(cToolbar["Default"]) & "\n" $sSave &= " }\n" Next $sSave &= "}\n" End Public Function Save(Optional bForce As Boolean) As Boolean If Project.ReadOnly Then Return If Not bForce Then If Not $bModify Then Return If $bReadOnly Then Return Endif UnselectAll Save.Begin(Path) ResetSave AddLine(Project.FORM_MAGIC) AddLine() SaveOne(RootControl) SaveAction File.Save(Path, $sSave) $sSave = "" $bModify = False DrawTitle Save.End() UpdateDiffAction Catch Return Save.Error() End Public Sub AddLine(Optional sLig As String) Dim sAdd As String 'IF Left$(sLig, 1) = "}" THEN $iIndent = $iIndent - 1 sAdd = Space$($iSaveLevel * 2) & sLig 'PRINT sAdd $sSave = $sSave & sAdd & gb.NewLine 'IF Left$(sLig, 1) = "{" THEN $iIndent = $iIndent + 1 End Public Sub GetControl(hCtrl As Control) As CControl Dim sTag As String Try sTag = hCtrl.Tag If Not sTag Then Return Return Control[sTag] End Public Function GetChildren(sName As String) As CControl[] Dim aList As New CControl[] Dim hCtrl As CControl Dim hCChild As CControl Dim hChild As Control Dim iTab As Integer Dim hMenu As Menu Dim hTab As Object 'TabStrip hCtrl = Control[sName] If IsNull(hCtrl) Then Return If Not hCtrl.IsContainer() Then Return If hCtrl.Kind = $hFamily.Name Then For Each hCChild In AllMenus aList.Add(hCChild) Next 'cList.Insert(Menus) For Each hChild In hCtrl.Control.Children hCChild = GetControl(hChild) If hCChild Then aList.Add(hCChild) Next 'ELSE IF hCtrl.Kind = "TabStrip" THEN Else If hCtrl.IsMultiContainer() Then hTab = hCtrl.Control For iTab = 0 To hTab.Count - 1 For Each hChild In hTab[iTab].Children hCChild = GetControl(hChild) If hCChild Then aList.Add(hCChild) Next Next Else If hCtrl.Kind = $hFamily.MenuClass Then For Each hMenu In hCtrl.Control.Children aList.Add(Control[hMenu.Tag]) Next Else For Each hChild In hCtrl.Control.Children hCChild = GetControl(hChild) If hCChild Then aList.Add(hCChild) Next Endif Return aList End Private Sub SaveOne(hCtrl As CControl) Dim hChild As Control Dim sLine As String Dim hMenu As Menu Dim hMenuCtrl As CControl Dim cProp As String[] Dim hTab As Object Dim iTab As Integer Dim sVal As String Dim sName As String Dim sGroup As String Dim bPublic As Boolean Dim bTranslate As Boolean Dim hCChild As CControl Dim sClass As String Dim hSymbol As CSymbolInfo If IsNull(hCtrl) Then Return sName = hCtrl.Name If sName = Me.Name Then sName = Family sGroup = hCtrl.GetProperty(CPropertyInfo.EVENT_NAME) bPublic = hCtrl.Public sClass = hCtrl.Kind If sClass = $sRenameOld Then sClass = $sRenameNew If hCtrl.NoParent Then AddLine(Trim("{ " & If(bPublic, "!", "") & sName & " #" & sClass & " " & sGroup)) Else AddLine(Trim("{ " & If(bPublic, "!", "") & sName & " " & sClass & " " & sGroup)) Endif If $iSaveLevel = 0 Then cProp = hCtrl.GetEachProperty($iSaveX, $iSaveY, Not $bScaled) Else cProp = hCtrl.GetEachProperty(0, 0, Not $bScaled) Endif hCtrl.AddAction($cAction) Inc $iSaveLevel If sGroup Then hSymbol = Project.Documentation.Classes[hCtrl.Kind].Symbols["Name"] If hSymbol And If hSymbol.IsProperty Then AddLine("Name = \"" & sName & "\"") Endif For Each sLine In cProp AddLine(sLine) Next If hCtrl.IsContainer() Then If Not $bDoNotArrange Then ArrangeContainerByDefault(hCtrl) If hCtrl.Kind = $hFamily.Name Then For Each hMenuCtrl In AllMenus SaveOne(hMenuCtrl) Next Endif If hCtrl.IsMultiContainer() Then hTab = hCtrl.Control bTranslate = hCtrl.GetPropertyDefault("Translate") For iTab = 0 To hTab.Count - 1 AddLine("Index = " & CStr(iTab)) sVal = Quote(hTab[iTab].Text) If bTranslate Then AddLine("Text = (" & sVal & ")") Else AddLine("Text = " & sVal) Endif sVal = hCtrl.Tabs[iTab] If sVal Then AddLine("Picture = Picture[" & Quote(sVal) & "]") Endif For Each hChild In hTab[iTab].Children hCChild = GetControl(hChild) If hCChild Then SaveOne(hCChild) Next Next 'AddLine("Index = " & CStr(hTab.Index)) AddLine("Index = 0") Else If hCtrl.Kind = $hFamily.MenuClass Then For Each hMenu In hCtrl.Control.Children SaveOne(Control[hMenu.Tag]) Next Else For Each hChild In hCtrl.Control.Children hCChild = GetControl(hChild) If hCChild Then SaveOne(hCChild) Next If hCtrl.Kind = $hFamily.ToolBarClass Then hCtrl.AddToolbar($cToolbar, Control) Endif Endif Endif Dec $iSaveLevel AddLine("}") End Public Sub Control_Resize() Dim hCtrl As Control = Last Dim W As Integer Dim H As Integer With RootControl If hCtrl <> .Control Then Return If Not $hUndo Then Return $hUndo.Begin W = $hFamily.ConvertCoord(hCtrl.Width, True) H = $hFamily.ConvertCoord(hCtrl.Height, True) If W <> .GetProperty("#Width") Then .SetProperty("#Width", W) If H <> .GetProperty("#Height") Then .SetProperty("#Height", H) $hUndo.End End With End Public Sub Control_MouseDown() 'PRINT "> Control_MouseDown" Dim X As Integer Dim Y As Integer Me.SetFocus Project.SetCurrentPopup(mnuForm) X = Mouse.X Y = Mouse.Y $bSelectParent = False $hCurrent = Control[Last.Tag] If $hCurrent = RootControl And If Y < RootControl.Control.ClientY Then $hCurrent = Null Return Endif $sTool = FToolBox.GetTool() $X = Last.X $Y = Last.Y $MX = Last.ScreenX + X $MY = Last.ScreenY + Y $hUndo.Begin 'IF $hCurrent.Kind = "GridView" THEN ' PRINT "MouseDown: $X ="; $X; " $Y ="; $Y; " $MX ="; $MX; " $MY ="; $MY ' PRINT "X ="; X; " Y ="; Y 'ENDIF If Mouse.Left Or If Mouse.Right Then If $sTool = "" Then If Mouse.Control Or If $hCurrent = RootControl Then $XS = X $YS = Y 'Debug $iMode = MODE_SELECT $W = 0 $H = 0 Goto FIN Else If $hCurrent Then If Master = $hCurrent And If Mouse.Left Then ' Selecting parent is disabled, Fabien has problem with it. ' $bSelectParent = True Else If Not $hCurrent.Selected Then UnselectAll Endif SelectCurrent(True) Endif If $bReadOnly Then Return 'Debug $iMode = MODE_MOVE Endif Else If $bReadOnly Then Return FindContainer($hCurrent, X, Y, COORD_CONTROL_TO_INSIDE) $hCurrent = $hContainer X = $iContX Y = $iContY ' IF NOT $hCurrent.IsContainer() THEN ' X = X + $hCurrent.Control.X + $hCurrent.Control.Parent.ClientX ' Y = Y + $hCurrent.Control.Y + $hCurrent.Control.Parent.ClientY ' $hCurrent = $hCurrent.Parent ' IF $hCurrent.Kind = "ScrollView" THEN ' X = X - $hCurrent.Control.ScrollX ' Y = Y - $hCurrent.Control.ScrollY ' ENDIF ' ENDIF 'Debug $iMode = MODE_CREATE $X = X $Y = Y '$hCurrent = CreateControl(, $sTool, $hCurrent) Endif Endif RefreshProperty FIN: 'PRINT "< Control_MouseDown" End Public Sub Control_MouseMove() Dim X As Integer Dim Y As Integer Dim iDepX As Integer Dim iDepY As Integer Dim hCtrl As CControl Dim W As Integer Dim H As Integer Dim bMoveX As Boolean Dim bMoveY As Boolean Dim hParent As CControl 'Dim hForm As CControl = Control[Me.Name] 'Debug Last;; Mouse.ScreenX - hForm.Control.ScreenX;; Mouse.ScreenY - hForm.Control.ScreenY If Not Mouse.Left Then Return If Not $hCurrent Then Return 'PRINT "Control_MouseMove Mode ="; $iMode If Mouse.Shift Then CControl.SetGrid(False) X = svwWorkspace.ScrollX + Mouse.ScreenX - svwWorkspace.ScreenX Y = svwWorkspace.ScrollY + Mouse.ScreenY - svwWorkspace.ScreenY svwWorkspace.EnsureVisible(X - 4, Y - 4, 8, 8) X = Mouse.X Y = Mouse.Y If $iMode = MODE_CREATE Then If Last.Mouse <> Mouse.Cross Then 'Debug Last.Mouse = Mouse.Cross hParent = $hCurrent $hCurrent = CreateControl($sTool, hParent,, True) FindContainer(hParent, $X, $Y, COORD_INSIDE_TO_CONTROL) $X = $iContX $Y = $iContY ' $X = $X - hParent.Control.ClientX ' $Y = $Y - hParent.Control.ClientY ' ' IF hParent.Kind = "ScrollView" THEN ' $X = $X + hParent.Control.ScrollX ' $Y = $Y + hParent.Control.ScrollY ' ENDIF $hCurrent.MoveCoord($X, $Y) $hCurrent.ResizeCoord(MIN_WIDTH, MIN_HEIGHT) $hCurrent.Control.Mouse = Mouse.Cross UnselectAll SelectCurrent(True) FFormStack.RefreshAll Endif W = Mouse.ScreenX - $MX If (W < 0) Then W = Abs(W) X = $X - W bMoveX = True Else X = $X Endif H = Mouse.ScreenY - $MY If (H < 0) Then H = Abs(H) Y = $Y - H bMoveY = True Else Y = $Y Endif If bMoveX Or bMoveY Then $hCurrent.MoveCoord(X, Y) If bMoveX Then W = W + X - $hCurrent.Control.X If bMoveY Then H = H + Y - $hCurrent.Control.Y Endif $hCurrent.ResizeCoord(Max(MIN_WIDTH, W), Max(MIN_HEIGHT, H)) If Not $hUndo.IsDisabled() Then $hUndo.Disable UpdateInfo($hCurrent) Else If $iMode = MODE_MOVE Then If Last = $hCurrent.Control Then Last.Mouse = Mouse.SizeAll With $hCurrent iDepX = Master.Control.X iDepY = Master.Control.Y Master.StartMoveResize Master.MoveCoord($X + Mouse.ScreenX - $MX, $Y + Mouse.ScreenY - $MY) iDepX = Master.Control.X - iDepX iDepY = Master.Control.Y - iDepY If iDepX <> 0 Or iDepY <> 0 Then For Each hCtrl In Selection If hCtrl <> Master Then hCtrl.StartMoveResize hCtrl.MoveCoord(hCtrl.Control.X + iDepX, hCtrl.Control.Y + iDepY, True) Endif Next If Not $hUndo.IsDisabled() Then $hUndo.Disable Endif End With $bSelectParent = False UpdateInfo($hCurrent) Endif Else If $iMode = MODE_SELECT Then DrawRectSelect Endif CControl.SetGrid(True) End Public Sub Control_MouseUp() Dim hCtrl As CControl Dim hPrevious As CControl Dim sFocus As String If Not $hCurrent Then Return 'PRINT "Control_MouseUp Mode ="; $iMode If $iMode = MODE_CREATE Then 'LAST.Mouse = Mouse.Arrow 'UnSelectAll If Last.Mouse = Mouse.Cross Then $hCurrent.Control.Mouse = Mouse.Arrow 'SelectCurrent(True) sFocus = "Name" Endif FToolBox.SetTool() Else If $iMode = MODE_SELECT Then $WS = $W $HS = $H HideFrame If Abs($WS) > 1 And Abs($HS) > 1 Then If Not $hCurrent.IsContainer() Then $XS = $XS + $hCurrent.Control.X $YS = $YS + $hCurrent.Control.Y $hCurrent = $hCurrent.Parent Endif If Selection.Count Then If Master.Parent <> $hCurrent Then UnselectAll Else If (Mouse.Control) = 0 Then UnselectAll Endif Endif SelectIn($hCurrent, $XS, $YS, $WS, $HS) Else If $hCurrent = RootControl Then UnselectAll Else If $hCurrent.Selected Then If Selection.Count > 1 And If Master = $hCurrent Then For Each hCtrl In Selection If hCtrl = $hCurrent Then Break hPrevious = hCtrl Next If Not hPrevious Then For Each hPrevious In Selection Next Endif hPrevious.Select(Me, True) Endif UnselectCurrent Else If Master = Null Then SelectCurrent(True) Else If $hCurrent.Parent = Master.Parent Then SelectCurrent Else UnselectAll SelectCurrent(True) Endif Endif Endif Else If $iMode = MODE_MOVE For Each hCtrl In Selection hCtrl.EndMoveResize Next If $bSelectParent Then SelectParent Endif Last.Mouse = Mouse.Arrow $hCurrent = Null 'Debug $iMode = MODE_NOTHING RefreshProperty If sFocus Then FProperty.FocusOn(sFocus) If $hUndo.IsDisabled() Then $hUndo.Enable $hUndo.End CheckHovered End Public Sub Control_Menu() CreatePopupMenu mnuForm.Popup ' Must simulate the MouseUp event that is captured by the popup! If $hUndo.IsDisabled() Then $hUndo.Enable $hUndo.End CheckHovered End ' TabStrip Private Sub UpdateMultiContainer(hCtrl As CControl, Optional iIndex As Integer = -1) With hCtrl If iIndex < 0 Then iIndex = hCtrl.Control.Index $bDoNotModify = True $hUndo.Disable .SetProperty("Picture", .Tabs[iIndex]) .SetProperty("Text", .Control[iIndex].Text) $hUndo.Enable $bDoNotModify = False If $hFamily.AutomaticArrangement Then hCtrl.Arrange End With End Public Sub Control_Click() Dim hCtrl As Control = Last Dim hCCtrl As CControl = Control[hCtrl.Tag] If hCCtrl And If hCCtrl.IsMultiContainer() Then If hCCtrl.Selected Then 'SelectControl(hCCtrl.Name) Else If Not $bSelectNew Then ' We must not unselect anything during PutSelection() UnselectAll Endif RefreshProperty UpdateMultiContainer(hCCtrl, hCCtrl.Control.Index) If hCCtrl.HasIcon() Then $hFamily.EnterControl(RootControl.Control, hCCtrl) Endif End ' PUBLIC SUB Control_KeyPress() ' ' Form_KeyPress ' ' END Public Function CreateControl(sClass As String, hParent As CControl, Optional sName As String, Optional (bSetText) As Boolean) As CControl Dim hCtrl As CControl If Len(sName) = 0 Then sName = GetName(sClass) If Control.Exist(sName) Then While IsDigit(Right(sName)) sName = Left(sName, -1) Wend sName = GetName(sName) Endif ' If the component is not loaded, then return null If Not Project.Documentation.Classes.Exist(sClass) Then FMain.ShowError(Subst(("Component missing for control &1"), sClass)) hCtrl = New CControl(sName, "DrawingArea", hParent, Me, $hFamily) Else hCtrl = New CControl(sName, sClass, hParent, Me, $hFamily) Endif $hUndo.Add("RemoveControl", [sName]) Control[sName] = hCtrl 'If bSetText Then Try hCtrl.SetProperty("Text", sName) If sClass = $hFamily.MenuClass Then If hParent = RootControl Then AllMenus.Add(hCtrl) Endif Endif ResetClassScan Return hCtrl 'PRINT "< CreateControl "; sName End Private Sub ResetClassScan() Try GetClassEditor().Scan = Null End Public Sub AddControl(sClass As String, Optional hParent As CControl, Optional X As Integer, Optional Y As Integer) As CControl Dim W, H As Integer Dim hCtrl As CControl If $bReadOnly Then Return If Not hParent Then If Master Then If Master.IsContainer() Then hParent = Master Else hParent = Master.Parent Endif Else hParent = RootControl Endif Endif With Project.Documentation.Classes[sClass] W = .DefaultWidth H = .DefaultHeight End With If IsMissing(X) And If IsMissing(Y) Then hParent.FindFreePlace(W, H, ByRef X, ByRef Y) Endif $hUndo.Begin hCtrl = CreateControl(sClass, hParent,, True) hCtrl.MoveAndResize(X, Y, W, H) $hUndo.End $hCurrent = hCtrl UnselectAll SelectCurrent(True) RefreshProperty FProperty.FocusOn("Name") Return hCtrl End Public Sub RemoveControl(sName As String) Dim sCtrl As String Dim hCCtrl As CControl = Control[sName] Dim hParent As CControl sCtrl = GetSelection(True, [hCCtrl]) hParent = hCCtrl.Parent $hUndo.Begin If hParent.IsMultiContainer() Then $hUndo.Add("PutSelection", [sCtrl, hCCtrl.Parent.Name, hParent.Control.Index]) Else $hUndo.Add("PutSelection", [sCtrl, hCCtrl.Parent.Name]) Endif $hUndo.Add("UnselectAll") $hUndo.End If hCCtrl.Selected Then hCCtrl.Unselect(Me) SelectionChange Endif hCCtrl.Delete hParent.UpdateArrangement Modify RefreshProperty CheckHovered 'PRINT "< RemoveControl "; sName; " "; Control[sName] End Private Function GetName(sClass As String) As String Dim iNum As Integer Dim sName As String If Control.Exist(sClass) Then Inc iNum Do Inc iNum sName = sClass & Trim(CStr(iNum)) If Not Control.Exist(sName) Then Exit Loop Return sName End Public Procedure UnselectAll() Dim hCtrl As CControl For Each hCtrl In Selection hCtrl.Unselect(Me, True) Next Selection.Clear Master = Null SelectionChange End Private Procedure SelectCurrent(Optional bMaster As Boolean) $hCurrent.Select(Me, bMaster) SelectionChange End Private Procedure SelectParent() If Not $hCurrent.Parent Then Return UnselectAll $hCurrent.Parent.Select(Me, True) SelectionChange End Private Sub UnselectCurrent() $hCurrent.Unselect(Me) SelectionChange 'RefreshProperty End Private Sub SelectIn(hParent As CControl, X As Integer, Y As Integer, W As Integer, H As Integer) Dim hChild As Control Dim hCtrl As CControl Dim bFirst As Boolean Dim aSelect As New CControl[] If W < 0 Then X = X + W W = -W Endif If H < 0 Then Y = Y + H H = -H Endif 'PRINT hParent.Name; X; Y; W; H If W < 2 Or H < 2 Then Return X = X - hParent.Control.ClientX Y = Y - hParent.Control.ClientY If hParent.Kind = "ScrollView" Then X = X + hParent.Control.ScrollX Y = Y + hParent.Control.ScrollY Endif For Each hChild In hParent.Control.Children hCtrl = GetControl(hChild) If Not hCtrl Then Continue If hChild.X >= (X + W) Then Continue If hChild.Y >= (Y + H) Then Continue If (hChild.X + hChild.W) < X Then Continue If (hChild.Y + hChild.H) < Y Then Continue aSelect.Add(hCtrl) Next bFirst = True For Each hCtrl In aSelect hCtrl.Select(Me, bFirst) bFirst = False Next $bSelChange = aSelect.Count > 0 If $bSelChange Then SelectionChange Endif End Public Sub HideFrame() Dim hCtrl As Control For Each hCtrl In [panSelectN, panSelectS, panSelectW, panSelectE] hCtrl.Hide Next $hCtrlFrame = Null $hDropTarget = Null End Private Sub DrawFrame(hCtrl As Control, Optional X As Integer, Y As Integer, W As Integer, H As Integer, Optional bInside As Boolean) Dim hRoot As Container = panBorder 'RootControl.Control Dim S As Integer = Max(1, Desktop.Scale \ 4) If W = 0 Or If H = 0 Then X = 0 Y = 0 W = hCtrl.W H = hCtrl.H Endif If Not bInside Then X -= S Y -= S W += 2 * S H += 2 * S Else S *= 2 Endif panSelectN.Move(hCtrl.ScreenX - hRoot.ScreenX + X, hCtrl.ScreenY - hRoot.ScreenY + Y, W, S) panSelectS.Move(panSelectN.X, panSelectN.Y + H - S, panSelectN.W, S) panSelectW.Move(panSelectN.X, panSelectN.Y + S, S, H - S - S) panSelectE.Move(panSelectW.X + W - S, panSelectW.Y, S, panSelectW.H) For Each hCtrl In [panSelectN, panSelectS, panSelectW, panSelectE] hCtrl.Show hCtrl.Raise Next End Private Sub DrawDropFrame() Dim X, Y, W, H As Integer Dim hParent As Container Dim sClass As String If Not $hDropTarget Then Return hParent = $hDropTarget.Control X = Drag.X + Last.ScreenX - hParent.ScreenX Y = Drag.Y + Last.ScreenY - hParent.ScreenY sClass = Drag.Data FindContainer($hDropTarget, X, Y, COORD_INSIDE_TO_CONTROL) hParent = $hContainer.Control X = $hDropTarget.Grid($iContX) + hParent.ClientX Y = $hDropTarget.Grid($iContY) + hParent.ClientY 'Debug X;; Y;; "->";; $iContX;; $iContY With Project.Documentation.Classes[sClass] W = .DefaultWidth H = .DefaultHeight End With DrawFrame(hParent, X - $hDropTarget.Grid(W \ 2), Y - $hDropTarget.Grid(H \ 2), W, H, True) End Public Sub UpdateInfo(hCCtrl As CControl) Dim hCtrl As Control Dim sText As String If Not hCCtrl Then Return hCtrl = hCCtrl.Control dwgInfo.Refresh $cInfo = ["Name": hCCtrl.Name, "Kind": hCCtrl.Kind, "X": hCCtrl.X, "Y": hCCtrl.Y, "Width": hCCtrl.Width, "Height": hCCtrl.Height] dwgInfo.Resize(dwgInfo.Font.TextWidth("999999") * 4 + Desktop.Scale * 8, dwgInfo.Font.Height * 2 + Desktop.Scale * 2) dwgInfo.Tag = sText MoveInfo End Private Sub DrawControlFrame(hCCtrl As CControl) Dim hCtrl As Control = hCCtrl.Control If hCCtrl = RootControl Or If hCCtrl.Selected Then HideFrame Else $hCtrlFrame = hCtrl DrawFrame(hCtrl) Endif UpdateInfo(hCCtrl) End Private Sub DrawRectSelect() Dim X, Y, W, H As Integer X = $XS Y = $YS If $hCurrent Then X += $hCurrent.Control.ScreenX Y += $hCurrent.Control.ScreenY Else X += RootControl.Control.ScreenX Y += RootControl.Control.ScreenY Endif W = Mouse.ScreenX - X H = Mouse.ScreenY - Y X -= panBorder.ScreenX Y -= panBorder.ScreenY If W = $W And H = $H Then Return If W <> 0 And H <> 0 Then $W = W $H = H 'X = $MX - panBorder.ScreenX 'Y = $MY - panBorder.ScreenY If W < 0 Then X += W W = -W Endif If H < 0 Then Y += H H = -H Endif If W <= 6 Or H <= 6 Then panSelectN.Move(X, Y, W, H) panSelectN.Raise panSelectN.Show panSelectS.Hide panSelectW.Hide panSelectE.Hide 'panSelectInside.Hide Else panSelectN.Move(X, Y, W, 3) panSelectS.Move(X, Y + H - 3, W, 3) panSelectW.Move(X, Y + 3, 3, H - 6) panSelectE.Move(X + W - 3, Y + 3, 3, H - 6) 'panSelectInside.Move(X, Y, W, H) panSelectN.Raise panSelectS.Raise panSelectW.Raise panSelectE.Raise 'panSelectInside.Raise panSelectN.Show panSelectS.Show panSelectW.Show panSelectE.Show 'panSelectInside.Show Endif Else HideFrame 'panSelectInside.Hide Endif End Private Sub KillSelection() Dim hCtrl As CControl Dim cCopy As New CControl[] Dim hParent As CControl If Selection.Count Then hParent = Master.Parent For Each hCtrl In Selection cCopy.Add(hCtrl) Next $hUndo.Begin UnselectAll For Each hCtrl In cCopy RemoveControl(hCtrl.Name) 'hCtrl.Delete Next Modify hParent.Select(Me, True) $hUndo.End ResetClassScan Endif End Public Sub DeleteSelection() If Selection.Count And If Not $bReadOnly Then KillSelection SelectionChange RefreshProperty FFormStack.RefreshAll Endif End Public Sub GetSelection(Optional bAbsolute As Boolean, Optional aSelection As CControl[]) As String Dim hCtrl As CControl Dim hBounds As Rect Dim hRect As Rect If aSelection Then If aSelection.Count = 0 Then Return Else If Selection.Count = 0 Then Return Endif ResetSave If Not bAbsolute Then $iSaveX = Master.GetProperty("#X") $iSaveY = Master.GetProperty("#Y") For Each hCtrl In Selection $iSaveX = Min($iSaveX, hCtrl.GetProperty("#X")) $iSaveY = Min($iSaveY, hCtrl.GetProperty("#Y")) Next Endif $bDoNotArrange = True If aSelection Then For Each hCtrl In aSelection SaveOne(hCtrl) If Not bAbsolute Then GoSub ADD_BOUNDS Next Else For Each hCtrl In Selection SaveOne(hCtrl) If Not bAbsolute Then GoSub ADD_BOUNDS Next Endif $bDoNotArrange = False $iSaveX = 0 $iSaveY = 0 If Not bAbsolute Then $sSave = "#BOUNDS:" & CStr(hBounds.X) & "," & CStr(hBounds.Y) & "," & CStr(hBounds.W) & "," & CStr(hBounds.H) & "\n" & $sSave Return $sSave ADD_BOUNDS: hRect = Rect(hCtrl.X, hCtrl.Y, hCtrl.W, hCtrl.H) If Not hBounds Then hBounds = hRect Else hBounds = hBounds.Union(hRect) Endif Return End Public Sub CopySelection(Optional bAbsolute As Boolean) Dim sStr As String sStr = GetSelection(bAbsolute) If sStr Then Clipboard.Copy(sStr, MMime.FORM) End Function CanPaste() As Boolean If $bReadOnly Then Return Return Clipboard.Format = MMime.FORM End Public Sub PutSelection(sData As String, sParent As String, Optional iIndex As Integer = -1) Dim sErr As String Dim hParent As CControl If Not sData Then Return 'PRINT Clipboard.Text $bSelectNew = True '$aSelectNew = New CControl[] $hUndo.Begin 'UnSelectAll hParent = Control[sParent] If iIndex >= 0 Then Try hParent.Control.Index = iIndex sErr = FromString(sData, hParent) hParent.UpdateArrangement $hUndo.End $bSelectNew = False If sErr Then Message.Error(("Cannot paste data.") & "\n\n" & sErr) Return Endif SelectionChange RefreshProperty FFormStack.RefreshAll End Private Sub PasteSelection() Dim hParent As CControl If Not CanPaste() Then Return If Selection.Count = 1 Then hParent = Master Else If Selection.Count > 1 Then hParent = Master.Parent Else hParent = RootControl Endif If Not hParent.IsContainer() Then hParent = hParent.Parent Endif UnselectAll PutSelection(Clipboard.Paste(MMime.FORM), hParent.Name) End Private Sub RefreshProperty(Optional bForce As Boolean) If $bSelChange Or bForce Then UpdateMenu If Project.ActiveForm = Me Then FProperty.RefreshAll $bSelChange = False Endif End Public Sub Modify(Optional bReset As Boolean) If Project.ReadOnly Then Return If $bDoNotModify Then Return If $bModify <> bReset Then Return ResetClassScan Inc Project.TimeStamp Inc Age $bModify = Not bReset If $bModify Then FSearch.OnFileChange(Me.Path) DrawTitle End Public Function IsModified() As Boolean Return $bModify End Private Sub DrawTitle() 'If $bModify Then Stop Project.DrawTitle(Me) End Private Sub DoRaise() Dim hCtrl As CControl $hUndo.Begin For Each hCtrl In Selection hCtrl.Raise Next $hUndo.End FFormStack.RefreshAll End Public Sub DoLower() Dim hCtrl As CControl $hUndo.Begin For Each hCtrl In Selection hCtrl.Lower Next $hUndo.End FFormStack.RefreshAll End Private Function GetSortKey(hCtrl As Control, sArr As String, bInvert As Boolean) As String Dim sKey As String Dim X, Y As Integer Dim W As Integer Dim H As Integer X = hCtrl.X + 500000 Y = hCtrl.Y + 500000 W = hCtrl.W H = hCtrl.H If bInvert Then X = 999999 - X Select Case sArr Case "H" sKey = Format(X + W \ 2, "000000") & Format(H, "000000") Case "V" sKey = Format(Y + H \ 2, "000000") & Format(W, "000000") Case "C" sKey = Format(X \ (Desktop.Scale * 2), "000000") & Format(Y + H \ 2, "000000") '& Format(hCtrl.W, "000000") & Format(hCtrl.H, "000000") Case "R" sKey = Format(Y \ (Desktop.Scale * 2), "000000") & Format(X + W \ 2, "000000") '& Format(hCtrl.H, "000000") & Format(hCtrl.W, "000000") End Select Return sKey & hCtrl.Name End Private Sub ArrangeContainer(hParent As Container, sArr As String, Optional bInvert As Boolean, Optional bRec As Boolean = True, Optional iIndex As Integer = -1) Dim aPos As New String[] Dim sPos As String Dim hCtrl As Control Dim hCCtrl As CControl Dim hCont As Container Dim aCtrl As New Control[] Dim hTab As Object Dim sKey As String Dim cSortKey As New Collection Dim sLastKey As String Dim bModify As Boolean If hParent Then If iIndex < 0 Then For Each hCtrl In hParent.Children hCCtrl = GetControl(hCtrl) If hCCtrl And If IsNull(hCCtrl.GetProperty("Ignore")) And If Not hCCtrl.Virtual Then aCtrl.Add(hCtrl) Next Else ' Multicontainer hTab = hParent For Each hCtrl In hTab[iIndex].Children hCCtrl = GetControl(hCtrl) If hCCtrl And If IsNull(hCCtrl.GetProperty("Ignore")) And If Not hCCtrl.Virtual Then aCtrl.Add(hCtrl) Next Endif Else If Selection.Count >= 2 Then For Each hCCtrl In Selection aCtrl.Add(hCCtrl.Control) Next Else If Selection.Count = 1 Then Try hCont = Master.Control If hCont Then ArrangeContainer(hCont, sArr, bInvert, bRec) Return Else ArrangeContainer(RootControl.Control, sArr, bInvert, bRec) Return Endif If aCtrl.Count = 0 Then Return $hUndo.Begin For Each hCtrl In aCtrl If bRec Then Try hCont = hCtrl If Not Error Then ArrangeContainer(hCtrl, sArr, bInvert) Endif Endif sKey = GetSortKey(hCtrl, sArr, bInvert) cSortKey[hCtrl.Name] = sKey aPos.Add(sKey) If sLastKey And If sKey < sLastKey Then bModify = True Endif sLastKey = sKey Next If aPos.Count Then aPos.Sort(gb.Descent) For Each sPos In aPos For Each hCtrl In aCtrl If cSortKey[hCtrl.Name] = sPos Then hCtrl.Lower Break Endif Next Next FFormStack.RefreshAll If bModify Then Modify Endif $hUndo.End End Private Sub CenterChildren(aCCtrl As CControl[], bVertical As Boolean) Dim iSize As Integer Dim hCCtrl As CControl Dim nSpace As Integer Dim iPos As Integer If Not bVertical Then iSize = $hFamily.ConvertCoord(aCCtrl[0].Control.Parent.ClientWidth, True) For Each hCCtrl In aCCtrl iSize -= hCCtrl.Width Next Else iSize = $hFamily.ConvertCoord(aCCtrl[0].Control.Parent.ClientHeight, True) For Each hCCtrl In aCCtrl iSize -= hCCtrl.Height Next Endif If iSize < 0 Then Return nSpace = aCCtrl.Count + 1 $hUndo.Begin For Each hCCtrl In aCCtrl iPos += iSize \ nSpace iSize -= iSize \ nSpace Dec nSpace If Not bVertical Then hCCtrl.Move(iPos, hCCtrl.Y) iPos += hCCtrl.W Else hCCtrl.Move(hCCtrl.X, iPos) iPos += hCCtrl.H Endif Next $hUndo.End End Private Sub CenterContainer(hCCont As CControl, bVertical As Boolean) Dim hCCtrl As CControl Dim aCCtrl As CControl[] Dim hChild As Control Dim hCont As Container Dim iPos As Integer Dim iDim As Integer If IsNull(hCCont) Then If Selection.Count = 0 Then CenterContainer(RootControl, bVertical) Return Endif ' If Selection.Count = 1 And If Master.IsContainer() And If Master.HasChildren() Then ' CenterContainer(Master, bVertical) ' Return ' Endif aCCtrl = New CControl[] For Each hCCtrl In Selection If hCCtrl.Virtual Then Continue aCCtrl.Add(hCCtrl) Next CenterChildren(aCCtrl, bVertical) Return Endif hCont = hCCont.Control If hCont.Children.Count = 0 Then Return $hUndo.Begin ArrangeContainer(hCont, If(bVertical, Arrange.Column, Arrange.Row)) aCCtrl = New CControl[] If bVertical Then iPos = hCont.Children[0].Y + 1 Else iPos = hCont.Children[0].X + 1 Endif For Each hChild In hCont.Children hCCtrl = GetControl(hChild) If Not hCCtrl Then Continue If hCCtrl.Virtual Then Continue If bVertical Then iDim = hChild.Y Else iDim = hChild.X Endif If iDim < iPos Then If aCCtrl.Count Then CenterChildren(aCCtrl, bVertical) aCCtrl.Clear Endif aCCtrl.Add(hCCtrl) If bVertical Then iPos = iDim + hChild.H Else iPos = iDim + hChild.W Endif Next If aCCtrl.Count Then CenterChildren(aCCtrl, bVertical) $hUndo.End End Public Sub mnuSave_Click() Save End Private Sub ResetSave() $sSave = "" $iSaveX = 0 $iSaveY = 0 '$iIndent = 0 $iSaveLevel = 0 If $hFamily.AllowScaledProperty Then $bScaled = RootControl.GetPropertyDefault(CPropertyInfo.SCALE_NAME) Else $bScaled = $hFamily.UseMoveScaled Endif $cAction = New Collection $cToolbar = New Collection End Public Function GetClassEditor(Optional bLoad As Boolean) As FEditor Dim sPath As String sPath = File.Dir(Path) &/ File.BaseName(Path) & ".class" If bLoad Then Project.LoadFile(sPath) Return Project.Files[sPath] End Private Sub GotoEventMethod(hCtrl As CControl, sEvent As String) Dim sGroup As String Dim hEditor As FEditor Dim hSymbol As CSymbolInfo If Not hCtrl Then hCtrl = RootControl If hCtrl = RootControl Then sGroup = hCtrl.Kind Else sGroup = hCtrl.GetGroup() Endif hEditor = GetClassEditor(True) If Not hEditor Then Return '' TODO: Undo should remove the possibly created event handler hSymbol = Project.Documentation.Classes[hCtrl.Kind].Symbols[":" & sEvent] If Not hSymbol Then Error "gambas3: event '"; sEvent; "' does not exist on control '"; hCtrl.Kind; "'" Return Endif If Not hEditor.GotoEvent(sGroup, sEvent, CSymbolInfo.TransformSignature(hSymbol.Signature, False)) Then Project.ShowFile(hEditor) Endif End Public Sub Control_DblClick() Dim sEvent As String Dim hCurrent As CControl If Mouse.Control Or Mouse.Shift Then Return hCurrent = Control[Last.Tag] sEvent = Project.Documentation.Classes[hCurrent.Kind].DefaultEvent If Not sEvent Then Return GotoEventMethod(hCurrent, sEvent) End Public Sub MenuControl_Click() 'IF NOT LAST THEN STOP Last.Checked = False Control_DblClick End Private Sub CreatePopupMenu() Dim hCtrl As CControl Dim hMenu As Menu Dim aCtrl As New String[] Dim sName As String Dim cSymbol As Collection Dim hClass As CClassInfo Dim hSymbol As CSymbolInfo Dim sGroup As String Dim hParent As Menu Dim sStart As String Dim sEnd As String Dim I, N As Integer mnuSelect.Children.Clear For Each hCtrl In Control If hCtrl = RootControl Then Continue If hCtrl.Kind = $hFamily.MenuClass Then Continue aCtrl.Add(hCtrl.Name) Next mnuSelect.Enabled = aCtrl.Count aCtrl.Sort(gb.IgnoreCase + gb.Natural) If aCtrl.Count > 20 Then N = Max(8, Sqr(aCtrl.Count)) For I = 0 To aCtrl.Max sName = aCtrl[I] If (I Mod N) = 0 Then If I = aCtrl.Max Then hParent = mnuSelect Else hParent = New Menu(mnuSelect) hParent.Text = "-" Endif Endif hMenu = New Menu(hParent) As "mnuControl" hMenu.Text = sName Next For Each hMenu In mnuSelect.Children If hMenu.Children.Count = 0 Then Continue sStart = hMenu.Children[0].Text sEnd = hMenu.Children[hMenu.Children.Count - 1].Text hMenu.Text = sStart & " → " & sEnd Next Else For Each sName In aCtrl hMenu = New Menu(mnuSelect) As "mnuControl" hMenu.Text = sName Next Endif mnuEvent.Visible = False mnuChange.Visible = False 'If Not $bReadOnly Then If Master Then aCtrl = Project.Documentation.Classes[Master.Kind].Events sGroup = Master.GetGroup() Else aCtrl = Project.Documentation.Classes[Family].Events sGroup = Family Endif If aCtrl Then mnuEvent.Children.Clear cSymbol = Project.Documentation.GetClassSymbols(Me.Name) If cSymbol Then For Each sName In aCtrl hSymbol = cSymbol[sGroup & "_" & sName] If $bReadOnly Then If Not hSymbol Or If hSymbol.Kind <> "m" Then Continue Endif hMenu = New Menu(mnuEvent) As "mnuEvent" hMenu.Text = sName If hSymbol And If hSymbol.Kind = "m" Then hMenu.Checked = True Next Else Debug "cSymbol = NULL ?" Endif mnuEvent.Visible = True 'Endif mnuChange.Children.Clear If Selection.Count = 1 Then hClass = Project.Documentation.Classes[Master.Kind] For Each sName In hClass.GetSimilars() If sName = Master.Kind Then Continue hMenu = New Menu(mnuChange) As "mnuChange" hMenu.Text = sName 'hMenu.Picture = FFormStack.GetControlIcon(sName) hClass = Project.Documentation.Classes[sName] If hClass Then hMenu.Picture = CControl.GetIcon(sName, hClass.Component, 16) Else Debug sName;; "?" Endif mnuChange.Show Next Endif 'mnuChange.Visible = mnuChange.Children.Count > 0 Endif UpdateMenu End Private Sub FillShowTabMenu() Dim hTabStrip As Object = GetCurrentTabStrip() Dim hMenu As Menu Dim iIndex As Integer 'If hTabStrip.Count = 1 Then Return mnuShowTab.Children.Clear For iIndex = 0 To hTabStrip.Count - 1 hMenu = New Menu(mnuShowTab) As "mnuShowTab" hMenu.Text = CStr(iIndex) & " - " & hTabStrip[iIndex].Text hMenu.Tag = iIndex hMenu.Checked = iIndex = hTabStrip.Index Next End Private Sub UpdateMenu() Dim bOn As Boolean Dim hCCtrl As CControl Dim hCtrl As Control Dim bReadOnly As Boolean If $bNoUpdateMenu Then Return bReadOnly = $bReadOnly Or $bDiffMode Action[".menu", Me].Visible = Not bReadOnly And $hFamily.HasMenuEditor Action[".text-*,.format-*,.undo,.redo", Me].Visible = Not bReadOnly bOn = Not IsNull(Master) And Not bReadOnly Action[".cut,.copy,.copy-same,.delete,.lower,.raise", Me].Enabled = bOn Action[".paste", Me].Enabled = CanPaste() mnuArrange.Visible = Not bReadOnly mnuChange.Visible = Not bReadOnly If mnuChange.Children.Count = 0 Then mnuChange.Hide Action[".save,.cut,.paste,paste-form,.delete,.lower,.raise,.arrange*", Me].Visible = Not bReadOnly bOn = Selection.Count >= 2 And Not bReadOnly mnuAlign.Enabled = bOn mnuAlign.Visible = bOn Action[".align-*,.same-*", Me].Visible = bOn mnuShowTab.Hide mnuMoveTab.Hide If Selection.Count = 1 And If Master.IsMultiContainer() Then If Master.Control.Count >= 2 Then mnuShowTab.Show mnuMoveTab.Show Endif Else If Not Master Then If RootControl And If RootControl.IsMultiContainer() Then mnuShowTab.Show mnuMoveTab.Show Endif Endif Action[".show-tab", Me].Visible = mnuShowTab.Visible Action[".move-tab*", Me].Visible = mnuShowTab.Visible And Not bReadOnly If bReadOnly Then mnuMoveTab.Hide If Not bReadOnly And If Selection.Count = 1 And If Master <> RootControl And If Master.IsContainer() And If GetChildren(Master.Name).Count Then Action[".delete-container", Me].Visible = True Else Action[".delete-container", Me].Visible = False Endif If Not bReadOnly And If Selection.Count Then bOn = True For Each hCCtrl In Selection If hCCtrl.Parent <> Master.Parent Then bOn = False Break Endif Next Action[".embed-container", Me].Visible = bOn 'If bOn And If Master.Parent = RootControl Then bOn = False 'Action[".remove-from-container", Me].Visible = bOn Else 'Action[".embed-container,.remove-from-container", Me].Visible = bOn Action[".embed-container", Me].Visible = False Endif Action[".run-me", Me].Visible = Not Project.Running For Each hCtrl In tlbForm.Children If hCtrl.Visible And If hCtrl.Tag Then If Not Split(hCtrl.Tag).Exist(Family, gb.IgnoreCase) Then hCtrl.Hide Endif Next End Sub SelectionChange() CheckHovered $bSelChange = True UpdateMenu End Public Sub mnuControl_Click() SelectControl(Last.Text) End Public Sub mnuEvent_Click() GotoEventMethod(Master, Replace(Last.Text, "&", "")) End Public Sub Rename(sNewName As String, sNewPath As String) Me.Name = sNewName Path = sNewPath 'File.Dir(Path) &/ sNewName & "." & File.Ext(Path) $bDoNotModify = True RootControl.Rename(sNewName) DrawTitle FProperty.RefreshAll $bDoNotModify = False $hUndo.Clear End Public Sub mnuShowProperty_Click() FProperty.Show End Public Sub mnuShowCode_Click() Project.OpenFile(Me.Name) End Public Sub Control_Enter() If $iMode Then Return CheckHovered(Last) End Public Sub Control_Leave() If $iMode Then Return CheckHovered End Public Sub Control_Draw(...) Dim hCtrl As Control = Last Dim hCCtrl As CControl = Control[hCtrl.Tag] Dim DS As Integer If Not hCCtrl Then Return If Not hCtrl Is DrawingArea Then Return If hCCtrl.Parent Then DS = Desktop.Scale If hCCtrl.IsExpandedContents() Then If hCCtrl["Background"] = Color.Default Then Paint.FillRect(0, 0, Paint.W, Paint.H, $hFamily.Background) Endif Paint.Background = Color.SetAlpha(Color.Red, 128) Paint.Polygon([Paint.W, 0, Paint.W - DS * 3, 0, Paint.W, DS * 3, Paint.W, 0]) 'Paint.FillRect(0, 0, DS * 2, DS * 2, Color.Red) Paint.Fill Endif $hFamily.DrawControl(hCCtrl) Endif End Public Sub Refresh() UpdateSnap 'Control[Name].Control.Refresh End Public Sub RefreshForComponent() Dim hCtrl As CControl For Each hCtrl In Control If hCtrl.Control Is DrawingArea Then If Not Project.Documentation.Classes.Exist(hCtrl.Kind) Then Me.Delete Project.Files[Path] = Null Return Endif hCtrl.Control.Refresh Endif Next End ' PUBLIC SUB Form_Hide() ' ' 'DEBUG Name ' Project.Deactivate(ME) ' ' END ' Public Sub Control_Data(Row As Integer, Column As Integer) ' ' If Row = 0 And Column = 0 Then ' Last.Data.Text = Control[Last.Tag].Name ' 'LAST.Data.Picture = Picture["img/16/image.png"] ' Endif ' ' End Public Sub mnuSelectAll_Click() Dim hChild As Control Dim hCtrl As CControl Dim bFirst As Boolean Dim hParent As CControl Dim aSelect As New CControl[] If Master Then hParent = Master If Not hParent.IsContainer() Then hParent = hParent.Parent Else hParent = RootControl Endif UnselectAll bFirst = True For Each hChild In hParent.Control.Children hCtrl = GetControl(hChild) If hCtrl Then aSelect.Add(hCtrl) Next For Each hCtrl In aSelect hCtrl.Select(Me, bFirst) $bSelChange = True bFirst = False Next If $bSelChange Then SelectionChange RefreshProperty Endif End Public Sub mnuSelectParent_Click() Dim hParent As CControl If Not Master Then Return hParent = Master.Parent UnselectAll hParent.Select(Me, True) SelectionChange RefreshProperty End Public Sub mnuUnselectAll_Click() If Master Then UnselectAll RefreshProperty Else FMain.HidePanels Endif End Private Sub DoAlign(sKey As String) Dim iPos As Integer Dim hCtrl As CControl $hUndo.Begin Select sKey Case ".align-top" iPos = Master.Y For Each hCtrl In Selection hCtrl.Move(hCtrl.X, iPos) Next Case ".align-bottom" iPos = Master.Y + Master.H For Each hCtrl In Selection hCtrl.Move(hCtrl.X, iPos - hCtrl.H) Next Case ".align-left" iPos = Master.X For Each hCtrl In Selection hCtrl.Move(iPos, hCtrl.Y) Next Case ".align-right" iPos = Master.X + Master.W For Each hCtrl In Selection hCtrl.Move(iPos - hCtrl.W, hCtrl.Y) Next Case ".same-width" iPos = Master.W For Each hCtrl In Selection hCtrl.Resize(iPos, hCtrl.H) Next Case ".same-height" iPos = Master.H For Each hCtrl In Selection hCtrl.Resize(hCtrl.W, iPos) Next End Select $hUndo.End End Public Sub SetReadOnly() $bReadOnly = False If Project.ReadOnly Or If Project.Running Or If Project.IsReadOnly(Path) Then $bReadOnly = True Endif FFormStack.RefreshReadOnly RefreshProperty(True) Project.UpdateLockedAction(Me) UpdateMenu DrawTitle End Public Sub OnProjectDebug() SetReadOnly End Public Sub LoadFile() As Boolean Return Reload() End Public Function FindControlFromType(sType As String) As String[] Dim hCtrl As CControl Dim aCtrl As New String[] For Each hCtrl In Control If hCtrl.Kind = sType Then aCtrl.Add(hCtrl.Name) Endif Next Return aCtrl End Private Sub MoveSelection(DX As Integer, DY As Integer, Optional bFree As Boolean) Dim hCtrl As CControl If $bReadOnly Then Return $hUndo.Begin For Each hCtrl In Selection hCtrl.MoveCoord(hCtrl.Control.X + DX, hCtrl.Control.Y + DY, bFree) Next $hUndo.End UpdateInfo(Master) End Private Sub ResizeSelection(DW As Integer, DH As Integer, Optional bFree As Boolean) Dim hCtrl As CControl Dim W, H As Integer If $bReadOnly Then Return For Each hCtrl In Selection W = hCtrl.Control.W + DW H = hCtrl.Control.H + DH If W < 1 Or If H < 1 Then Return Next $hUndo.Begin For Each hCtrl In Selection hCtrl.ResizeCoord(hCtrl.Control.W + DW, hCtrl.Control.H + DH, bFree) Next $hUndo.End UpdateInfo(Master) End Public Sub Form_KeyPress() Dim D As Integer Dim bFree As Boolean ' If Key.Code = 0 And If Key.Shift Then ' $bShowControlFrame = True ' DrawControlFrame ' Endif If Key.Shift Then D = 1 bFree = True Else D = Desktop.Scale bFree = False Endif Select Key.Code Case Key.Up If Key.Control Then ResizeSelection(0, -D, bFree) Else MoveSelection(0, -D, bFree) Endif Stop Event Case Key.Down If Key.Control Then ResizeSelection(0, D, bFree) Else MoveSelection(0, D, bFree) Endif Stop Event Case Key.Left If Key.Control Then ResizeSelection(-D, 0, bFree) Else MoveSelection(-D, 0, bFree) Endif Stop Event Case Key.Right If Key.Control Then ResizeSelection(D, 0, bFree) Else MoveSelection(D, 0, bFree) Endif Stop Event Case Key.F6 Action[".tooltip", Me].Value = Not Action[".tooltip", Me].Value ' Case Key["L"] ' If Key.Control Then FMain.SearchProject End Select End Public Sub UpdateBorder() Dim hCtrl As CControl Dim H As Integer Dim HM As Integer = 0 hCtrl = RootControl If Not hCtrl Then Return With hCtrl.Control ' If AllMenus.Count = 0 Then ' panMenuBar.Hide ' HM = 0 ' Else ' panMenuBar.Move(0, panBorder.Y, panBorder.W, Desktop.Scale * 3) ' HM = panMenuBar.H ' panMenuBar.Show ' Endif If hCtrl.GetPropertyDefault("Border") = False Or If Family <> "Form" Then panTitle.Hide H = 0 panBorder.Move(0, HM, .Width + 2, .Height + 2 - HM) $bBorder = False 'panBorder.Border = Border.Plain hCtrl.Control.Move(1, 1) Else H = lblTitle.Font.Height + 10 '+ 4 'btnCloseWindow.W = 18 'H - 4 'btnMaxWindow.W = 17 'H - 4 imgIcon.W = H ' - 4 panBorder.Move(0, H + HM, .Width + 4, .Height + 2 - HM) $bBorder = True 'panBorder.Border = Border.Raised panTitle.Resize(panBorder.W, H) 'panInside.Move(0, 0, panTitle.W, panTitle.H + 8) panTitle.Show .Move(2, 0) Endif panBorder.Refresh panRight.Move(panBorder.W - panRight.W / 2, Max(0, ((.Height + H) - panRight.Height) / 2)) panDown.Move(Max(0, (.Width - panDown.Width + panDown.H / 2) / 2), panBorder.H + H + HM - panDown.H / 2) panRightDown.Move(panRight.X, panDown.Y) 'panBorder.Lower panRight.Raise panDown.Raise panRightDown.Raise End With End Public Sub UpdateTitle() Dim hCtrl As CControl Dim sPict As String Dim hPict As Picture If Family <> "Form" Then Return hCtrl = RootControl If Not hCtrl Then Return sPict = hCtrl.GetProperty("Icon") If sPict Then lblTitle.Text = hCtrl.GetProperty("Text") Try hPict = $hFamily.GetPicture(sPict) If hPict Then If hPict.Width <> 16 Or hPict.Height <> 16 Then hPict = hPict.Image.Stretch(16, 16).Picture Else hPict = Picture["img/logo/head-16.png"] Endif imgIcon.Picture = hPict imgIcon.Show Else lblTitle.Text = hCtrl.GetProperty("Text") imgIcon.Hide Endif btnMaxWindow.Visible = hCtrl.GetPropertyDefault("Resizable") If hCtrl.GetPropertyString("Type") = "Utility" Then lblTitle.Font.Grade = -2 Else lblTitle.Font.Grade = 0 Endif UpdateBorder End ' ' ' PUBLIC SUB Activate(OPTIONAL hWindow AS Window) ' ' DIM hOld AS CWindow ' DIM hWin AS CWindow ' ' IF $aWindow.Count THEN ' ' IF hWindow THEN ' TRY tabWorkspace.Index = GetIndex(hWindow) ' RETURN ' ENDIF ' ' hWin = $aWindow[tabWorkspace.Index] ' hOld = $hCurrent ' ' $hCurrent = hWin ' ' IF $hCurrent.Resizable THEN ' $hCurrent.Window.Move(0, 0) ' MoveHandle ' svwWorkspace.Raise ' ELSE ' panWorkspace.Raise ' ENDIF ' 'WITH tabWorkspace ' ' $hCurrent.Move(.X + .ClientX, .Y + .ClientY, .ClientW, .ClientH) ' 'END WITH ' ' WITH $hCurrent.Window ' .Show ' .Raise ' .SetFocus ' END WITH ' ' IF hOld AND IF hOld <> hWin THEN ' hOld.Window.Hide ' 'WAIT 0.2 ' ENDIF ' ' UpdateTitle ' ' ENDIF ' ' ME.Parent._Activate ' ' END ' PUBLIC SUB Form_Resize() ' ' IF tabWorkspace.Visible THEN ' tabWorkspace.Move(0, 0, ME.ClientW, ME.ClientH) ' WITH tabWorkspace ' panTitle.Move(.ClientX, .ClientY, .ClientW, panTitle.H) ' svwWorkspace.Move(.ClientX, panTitle.H + .ClientY, .ClientW, .ClientH - panTitle.H) ' panWorkspace.Move(.ClientX, panTitle.H + .ClientY, .ClientW, .ClientH - panTitle.H) ' END WITH ' panWorkspace.BackColor = Color.Background ' ELSE ' svwWorkspace.Move(0, 0, ME.ClientW, ME.ClientH) ' panWorkspace.Move(0, 0, ME.ClientW, ME.ClientH) ' panWorkspace.BackColor = Color.Gray ' panWorkspace.Raise ' ENDIF ' ' END ' ' Public Sub Handle_MouseDown() $bMove = True $X = Mouse.ScreenX $Y = Mouse.ScreenY $W = RootControl.Control.W $H = RootControl.Control.H RootControl.StartMoveResize $hUndo.Begin End Public Sub Handle_MouseMove() Dim W, H, G As Integer Dim hPanel As Panel If Not $bMove Then Return hPanel = Last With RootControl.Control W = .W H = .H 'DEBUG "(";; W;; H;; ") + (";; Mouse.ScreenX;; Mouse.ScreenY;; ") -> "; If hPanel <> panRight Then H = $H + Mouse.ScreenY - $Y If hPanel <> panDown Then W = $W + Mouse.ScreenX - $X W = Max(1, W) H = Max(1, H) If Not Mouse.Shift Or $hFamily.ForceGrid Then G = $hFamily.GetSnap() If G Then W = Max(1, Int(W / G + 0.5)) * G H = Max(1, Int(H / G + 0.5)) * G Endif Endif 'PRINT #File.Err, "(";; W;; H;; ")" If W <> .W Or If H <> .H Then RootControl.ResizeCoord(W, H) If Not $hUndo.IsDisabled() Then $hUndo.Disable UpdateInfo(RootControl) Endif End With '$bMove = FALSE 'UpdateBorder '$bMove = TRUE End Public Sub Handle_MouseUp() If $hUndo.IsDisabled() Then $hUndo.Enable $hUndo.End $bMove = False RootControl.EndMoveResize() End Public Sub Action_Activate((Key) As String) As Boolean Dim hCurrent As CControl Select Case Key Case ".menu" FMenu.Run(Me) If FMenu.OpenEventHandlerFor Then hCurrent = Control[FMenu.OpenEventHandlerFor] If hCurrent Then GotoEventMethod(hCurrent, FMenu.EventName) Endif Case ".delete" DeleteSelection Case ".copy" CopySelection UnselectAll RefreshProperty Case ".copy-same" CopySelection(True) UnselectAll RefreshProperty Case ".paste" PasteSelection() Case ".cut" CopySelection DeleteSelection Case ".undo" $hUndo.Undo(Me) Case ".redo" $hUndo.Redo(Me) Case ".align-left", ".align-right", ".align-top", ".align-bottom", ".same-width", ".same-height" DoAlign(Key) Case ".arrange-horizontal" ArrangeContainer(Null, Arrange.Horizontal) Case ".arrange-vertical" ArrangeContainer(Null, Arrange.Vertical) Case ".arrange-row" ArrangeContainer(Null, Arrange.Row) Case ".arrange-column" ArrangeContainer(Null, Arrange.Column) Case ".arrange-hcenter" CenterContainer(Null, False) Case ".arrange-vcenter" CenterContainer(Null, True) Case ".raise" DoRaise Case ".lower" DoLower ' Case ".toggle" ' ToggleContainer Case ".grid" UpdateSnap Case ".tooltip" dwgInfo.Visible = Action[".tooltip", Me].Value Case ".move-tab-first" MoveTab(Master, MOVE_FIRST) Case ".move-tab-last" MoveTab(Master, MOVE_LAST) Case ".move-tab-previous" MoveTab(Master, MOVE_PREVIOUS) Case ".move-tab-next" MoveTab(Master, MOVE_NEXT) Case ".locked" Project.SetReadOnly(Path, Action[Key, Me].Value) Case ".delete-container" DeleteContainer Case ".embed-container" EmbedIntoContainer Case Like ".text-*" DoAction(Key) Case Like ".format-*" DoAction(Key) ' Case ".remove-from-container" ' RemoveFromContainer Case ".run-me" Project.Run(False, 0, Me.Name) Case ".diff" UpdateDiffMode Default Return True End Select End Public Sub Form_Activate() Project.SetCurrentPopup(mnuForm) CheckHovered End Public Sub Form_Deactivate() CheckHovered End Public Sub mnuReload_Click() Project.ReloadFile(Me) End Public Sub Control_Drag() Dim hCtrl As CControl If $bReadOnly Then Stop Event Return Endif If Drag.Format = MMime.DATA Then Drag.Show(Last) Return Else If Drag.Format = MMime.CONTROL Then hCtrl = Control[Last.Tag] If Not hCtrl.IsContainer() Then hCtrl = hCtrl.Parent Drag.Show(hCtrl.Control) $hDropTarget = hCtrl DrawDropFrame() Return Else Stop Event Endif Catch Print Error.Where; ": "; Error.Text Print Error.Backtrace.Join("\n") Stop Event End Public Sub Control_DragMove() If Drag.Format = MMime.CONTROL Then DrawDropFrame() Endif End Public Sub Control_DragLeave() HideFrame End Public Sub Control_Drop() Dim sPath As String Dim hCtrl As CControl Dim hParent As CControl Dim hImage As Image Dim X, Y, W, H As Integer Dim sClass As String hParent = Control[Last.Tag] X = Drag.X Y = Drag.Y If Drag.Format = MMime.DATA Then sPath = Drag.Data Try hImage = Image.Load(sPath) If Not hImage Then Return If Last.Tag <> Me.Name Then If hParent.HasProperty("Picture") Then hParent.SetProperty("Picture", Mid$(sPath, Len(Project.Dir) + 2)) Return Else If hParent.HasProperty("Image") Then hParent.SetProperty("Image", Mid$(sPath, Len(Project.Dir) + 2)) Return Endif Endif FindContainer(hParent, X, Y, COORD_INSIDE_TO_CONTROL) hParent = $hContainer X = $iContX Y = $iContY ' IF NOT hParent.IsContainer() THEN ' X += hParent.Control.X ' Y += hParent.Control.Y ' hParent = hParent.Parent ' ENDIF ' X -= hParent.Control.ClientX ' Y -= hParent.Control.ClientY $hUndo.Begin hCtrl = CreateControl($hFamily.DropImageClass, hParent,, True) ' TODO: Use $hFamily.ConvertCoord() hCtrl.MoveAndResize(Max(0, X - hImage.Width / 2), Max(0, Y - hImage.Height / 2), hImage.Width, hImage.Height) hCtrl.SetProperty($hFamily.DropImageProperty, Mid$(sPath, Len(Project.Dir) + 2)) $hUndo.End $hCurrent = hCtrl UnselectAll SelectCurrent(True) RefreshProperty Else If Drag.Format = MMime.CONTROL Then hParent = $hContainer X = hParent.Grid($iContX) Y = hParent.Grid($iContY) FindContainer(hParent, X, Y, COORD_INSIDE_TO_CONTROL) sClass = Drag.Data X = $hFamily.ConvertCoord(X, True) Y = $hFamily.ConvertCoord(Y, True) With Project.Documentation.Classes[sClass] W = .DefaultWidth H = .DefaultHeight End With X -= hParent.Grid(W \ 2) Y -= hParent.Grid(H \ 2) $hCurrent = AddControl(sClass, hParent, X, Y) FToolBox.SetTool() HideFrame Endif FFormStack.RefreshAll End Public Sub panTitle_Drag() If $bReadOnly Then Stop Event Return Endif If Drag.Format = MMime.DATA Then Drag.Show(Last) Return Else Stop Event Endif End Public Sub panTitle_Drop() Dim sPath As String = Drag.Data Dim hImage As Image Dim hCtrl As CControl = RootControl Try hImage = Image.Load(sPath) If Not hImage Then Return hCtrl.SetProperty("Icon", Mid$(sPath, Len(Project.Dir) + 2)) End Private Sub FindContainer(hCtrl As CControl, X As Integer, Y As Integer, Optional iMode As Integer) If Not hCtrl.IsContainer() Then X += hCtrl.Control.X Y += hCtrl.Control.Y hCtrl = hCtrl.Parent If iMode = COORD_CONTROL_TO_INSIDE Then X += hCtrl.Control.ClientX Y += hCtrl.Control.ClientY Endif If iMode = COORD_CONTROL_TO_INSIDE Then If hCtrl.Kind = "ScrollView" Then X = X - hCtrl.Control.ScrollX Y = Y - hCtrl.Control.ScrollY Endif Endif Endif If iMode = COORD_INSIDE_TO_CONTROL Then X -= hCtrl.Control.ClientX Y -= hCtrl.Control.ClientY If hCtrl.Kind = "ScrollView" Then X = X + hCtrl.Control.ScrollX Y = Y + hCtrl.Control.ScrollY Endif Endif $hContainer = hCtrl $iContX = X $iContY = Y End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub MoveTab(hCtrl As CControl, iWhere As Integer) Dim hTabStrip As Object Dim iIndex As Integer Dim hChild As Control Dim aChildSrc As New Control[] Dim aChildDest As New Control[] If Not hCtrl Then hCtrl = RootControl hTabStrip = hCtrl.Control Select Case iWhere Case MOVE_FIRST 'Object.Lock(hTabStrip) $hUndo.Add("MoveTabByName", [hCtrl.Name, MOVE_LAST]) While hTabStrip.Index > 0 MoveTab(hCtrl, MOVE_PREVIOUS) Wend 'Object.UnLock(hTabStrip) 'Control_Click Return Case MOVE_LAST $hUndo.Add("MoveTabByName", [hCtrl.Name, MOVE_FIRST]) 'Object.Lock(hTabStrip) While hTabStrip.Index < (hTabStrip.Count - 1) MoveTab(hCtrl, MOVE_NEXT) Wend 'Object.UnLock(hTabStrip) 'Control_Click Return Case MOVE_NEXT $hUndo.Add("MoveTabByName", [hCtrl.Name, MOVE_PREVIOUS]) iIndex = hTabStrip.Index + 1 Case MOVE_PREVIOUS $hUndo.Add("MoveTabByName", [hCtrl.Name, MOVE_NEXT]) iIndex = hTabStrip.Index - 1 End Select If iIndex < 0 Or If iIndex >= hTabStrip.Count Or If iIndex = hTabStrip.Index Then Return Swap hCtrl.Tabs[iIndex], hCtrl.Tabs[hTabStrip.Index] Swap hTabStrip.Text, hTabStrip[iIndex].Text Swap hTabStrip.Picture, hTabStrip[iIndex].Picture For Each hChild In hTabStrip[iIndex].Children aChildDest.Add(hChild) Next For Each hChild In hTabStrip.Children aChildSrc.Add(hChild) Next For Each hChild In aChildDest hChild.Reparent(hTabStrip) Next hTabStrip.Index = iIndex For Each hChild In aChildSrc hChild.Reparent(hTabStrip) Next Modify End Public Sub MoveTabByName(sName As String, iWhere As Integer) MoveTab(Control[sName], iWhere) End Public Sub mnuShowTab_Show() FillShowTabMenu End Private Sub GetCurrentTabStrip() As Object If Master Then Return Master.Control Else Return RootControl.Control Endif End Public Sub mnuShowTab_Click() Dim hTabStrip As Object = GetCurrentTabStrip() hTabStrip.Index = Last.Tag End Public Sub btnTabMenu_Click() Dim hTabStrip As Object = GetCurrentTabStrip() If hTabStrip.Count <= 1 Then Return mnuShowTab.Popup(btnTabMenu.ScreenX, btnTabMenu.ScreenY + btnTabMenu.H) End Public Sub SelectControl(sControl As String) UnselectAll Control[sControl].Select(Me, True) $bSelChange = True RefreshProperty End Public Sub panBorder_Draw() Dim hCont As Container 'If $bBorder Then ' Draw.Style.Panel(0, -4, panBorder.W, panBorder.H + 4, Border.Raised) 'Else 'Endif If RootControl And If RootControl["#Grid"] Then hCont = RootControl.Control ' Draw.FillX = hCont.ClientX + hCont.X ' Draw.FillY = hCont.ClientY + hCont.Y ' Draw.Tile(RootControl["#Grid"], 0, 0, Draw.W, Draw.H) Paint.Brush = Paint.Image(RootControl["#Grid"], hCont.ClientX + hCont.X, hCont.ClientY + hCont.Y) Paint.Rectangle(0, 0, Draw.W, Draw.H) Paint.Fill Endif Draw.Style.Panel(0, -1, panBorder.W, panBorder.H + 1, Border.Plain) End Public Sub mnuChange_Click() Dim sNewClass As String Dim hParent As CControl Dim sStr As String Dim sClass As String Dim sFind As String Dim iPos As Integer Dim sPrefix As String If Selection.Count <> 1 Then Return $hUndo.Begin sNewClass = Replace(Last.Text, "&", "") sStr = GetSelection(True) sClass = Master.Kind If Master.Virtual Then sClass = "#" & sClass sPrefix = "{ " If Master.Public Then sPrefix &= "!" sPrefix &= Master.Name & " " sFind = sPrefix & sClass iPos = InStr(sStr, sFind) If iPos = 0 Then Return sStr = Left$(sStr, iPos - 1) & sPrefix & sNewClass & Mid$(sStr, iPos + Len(sFind)) hParent = Master.Parent KillSelection UnselectAll $bNoWarning = True PutSelection(sStr, hParent.Name) $bNoWarning = False SelectionChange RefreshProperty FFormStack.RefreshAll $hUndo.End End ' Public Sub mnuStartup_Click() ' ' If mnuStartup.Checked Then Return ' mnuStartup.Checked = True ' Project.DefineStartup(Path) ' ' End Private Sub AddMenu(aMenu As String[], hMenu As Menu) If hMenu.Children.Count = 0 Then Return aMenu.Add(Control[hMenu.Tag].Name) For Each hMenu In hMenu.Children AddMenu(aMenu, hMenu) Next End Public Sub GetMenus() As String[] Dim hCtrl As CControl Dim aMenu As New String[] For Each hCtrl In AllMenus AddMenu(aMenu, hCtrl.Control) Next Return aMenu.Sort(gb.IgnoreCase + gb.Natural) End Public Sub panMenuBar_Draw() If $bBorder Then Draw.Style.Panel(0, -4, panBorder.W, panBorder.H + 8, Border.Raised) Else Draw.Style.Panel(0, 0, panBorder.W, panBorder.H, Border.Plain) Endif End Public Sub GetText() As String Dim sSave As String ResetSave AddLine(Project.FORM_MAGIC) AddLine() SaveOne(RootControl) 'SaveAction sSave = $sSave $sSave = "" Return sSave ' Dim bModify As Boolean = $bModify ' ResetSave ' SaveOne(RootControl) ' $bModify = bModify ' DrawTitle ' Return $sSave End Public Sub GetPosition() As Integer End Public Sub SetPosition(hResult As CSearchResult, Optional bJustCheck As Boolean) As Boolean Dim aName As String[] If bJustCheck Then FindLocation(hResult) If Not hResult.Location Then Return True Else aName = Split(hResult.Location, ".") Try SelectControl(aName[0]) If Not Error Then FProperty.FocusOn(aName[1]) Endif End Public Sub Replace((sReplace) As String) As Boolean Return True 'Editor.Replace(sReplace) End Public Sub svwWorkspace_MouseDown() UnselectAll End Private Sub DeleteContainer() Dim sChildren As String Dim hParent As CControl = Master.Parent Dim X, Y As Integer Dim hCtrl As CControl If Not hParent Then Return X = Master.X Y = Master.Y sChildren = GetSelection(True, GetChildren(Master.Name)) If Not sChildren Then Return $hUndo.Begin DeleteSelection UnselectAll PutSelection(sChildren, hParent.Name) For Each hCtrl In Selection hCtrl.Move(hCtrl.X + X, hCtrl.Y + Y) Next $hUndo.End End Private Sub EmbedIntoContainer() Dim hCtrl As CControl Dim hParent As CControl Dim X1, Y1, X2, Y2 As Integer Dim sChildren As String Dim D As Integer X1 = Master.X Y1 = Master.Y For Each hCtrl In Selection X1 = Min(X1, hCtrl.X) X2 = Max(X2, hCtrl.X + hCtrl.W - 1) Y1 = Min(Y1, hCtrl.Y) Y2 = Max(Y2, hCtrl.Y + hCtrl.H - 1) Next sChildren = GetSelection(True) $hUndo.Begin hParent = CreateControl($hFamily.EmbedContainer, Master.Parent) D = $hFamily.GetSnap() hParent.MoveAndResize(X1, Y1, X2 - X1 + D, Y2 - Y1 + D) DeleteSelection UnselectAll PutSelection(sChildren, hParent.Name) For Each hCtrl In Selection hCtrl.Move(hCtrl.X - X1, hCtrl.Y - Y1) Next $hUndo.End End ' Private Sub RemoveFromContainer() ' ' Dim sChildren As String ' Dim hParent As CControl ' Dim hCtrl As CControl ' ' Try hParent = Master.Parent.Parent ' If Error Then Return ' ' sChildren = GetSelection() ' DeleteSelection ' PutSelection(sChildren, hParent) ' ' For Each hCtrl In Selection ' hCtrl.Move(hCtrl.X + hParent.X, hCtrl.Y + hParent.Y) ' Next ' ' End Public Sub panSelect_Draw() If $iMode = MODE_SELECT Then Paint.FillRect(0, 0, Paint.W, Paint.H, Color.RGB(0, 0, 0, 208)) Else Paint.FillRect(0, 0, Paint.W, Paint.H, Color.SetAlpha(Color.TextForeground, 216)) Endif End Private Sub MoveInfo() Dim X, Y As Integer Dim DX As Integer Dim DY As Integer If svwWorkspace.ScrollH > svwWorkspace.ClientH Then DX = Style.ScrollbarSize If svwWorkspace.ScrollW > svwWorkspace.ClientW Then DY = Style.ScrollbarSize If System.RightToLeft Then X = svwWorkspace.X + Desktop.Scale Else X = svwWorkspace.X + svwWorkspace.W - dwgInfo.W - Desktop.Scale - DX Endif Y = svwWorkspace.Y + Desktop.Scale If Not $bInfoTop Then Y = Max(Y, svwWorkspace.Y + svwWorkspace.H - dwgInfo.H - Desktop.Scale - DY) dwgInfo.Move(X, Y) End Public Sub timMoveInfo_Timer() MoveInfo End Public Sub svwWorkspace_Arrange() dwgBackground.Move(svwWorkspace.X, svwWorkspace.Y, svwWorkspace.W, svwWorkspace.H) dwgBackground.Lower timMoveInfo.Trigger End Public Sub dwgBackground_Draw() Project.DrawBackground() End Public Sub GetUndo() As CUndo Return $hUndo End Public Sub RenameControl(sOldName As String, sNewName As String) Control[sOldName].Rename(sNewName) End Public Sub RenameClass(sOldName As String, sNewName As String) $sRenameOld = sOldName $sRenameNew = sNewName Try Me.Save(True) $sRenameOld = "" $sRenameNew = "" End Public Sub SetControlProperty(sName As String, sProp As String, vVal As Variant, bDoNotApply As Boolean) Dim hCCtrl As CControl = Control[sName] hCCtrl.SetProperty(sProp, vVal, bDoNotApply) End Public Sub RaiseControl(sName As String) Dim hCCtrl As CControl = Control[sName] hCCtrl.Raise() End Public Sub LowerControl(sName As String) Dim hCCtrl As CControl = Control[sName] hCCtrl.Lower() End Public Sub MoveUpControl(sName As String) Dim hCCtrl As CControl = Control[sName] hCCtrl.MoveUp End Public Sub MoveDownControl(sName As String) Dim hCCtrl As CControl = Control[sName] hCCtrl.MoveDown End Public Sub Form_Close() HideFrame Project.AddRecentFile(Me) '$hUndo = Null End Public Sub ClearMenus() AllMenus.Clear End Public Sub RestoreMenus() $hUndo.Add("ClearMenus") End Public Sub tlbForm_Configure() 'Action[".show-class"].Picture = Project.GetFileIcon(File.SetExt(Path, "class"), 16) UpdateMenu UpdateDiffAction End Public Sub mnuClose_Click() Me.Close End Public Sub CheckHovered(Optional hCtrl As Control) Dim X, Y As Integer Dim hCont As Container Dim oCont As Object Dim hCCtrl As CControl Dim XX As Integer Dim YY As Integer Dim sTag As String If Not RootControl Then Return If Not hCtrl Then hCont = RootControl.Control Else If hCtrl Is Container Then hCont = hCtrl Endif If hCont Then X = Mouse.ScreenX Y = Mouse.ScreenY Do oCont = hCont 'Debug hCont;; hCont.Tag XX = X - hCont.ScreenX - hCont.ClientX Try XX += oCont.ScrollX YY = Y - hCont.ScreenY - hCont.ClientY Try YY += oCont.ScrollY hCtrl = hCont.FindChild(XX, YY) If Not hCtrl Then hCtrl = hCont Break Endif If Not hCtrl Is Container Then Break hCont = hCtrl Loop 'Debug "-->";; hCtrl.Name;; hCtrl.Tag Endif If hCtrl = panSelectN Or If hCtrl = panSelectS Or If hCtrl = panSelectW Or If hCtrl = panSelectE Then 'Debug "in ghost frame" If $hCtrlFrame Then hCtrl = $hCtrlFrame Endif Do hCCtrl = Null Try sTag = hCtrl.Tag If Not Error Then If Left(sTag) = "#" Then hCCtrl = Object.Parent(hCtrl) Else If sTag Then hCCtrl = Control[hCtrl.Tag] Endif If hCCtrl Then Break Endif hCtrl = hCtrl.Parent Loop 'Debug X;; Y;; "-->";; hCCtrl.Name 'Debug System.Backtrace.Join(" ") $hFamily.EnterControl(RootControl.Control, hCCtrl) DrawControlFrame(hCCtrl) End Public Sub panBorder_Leave() CheckHovered End Public Sub panBorder_Enter() CheckHovered End Public Sub svwWorkspace_Scroll() If $iMode = MODE_SELECT Then DrawRectSelect End Public Sub OnBackgroundChange() dwgBackground.Refresh End Private Sub GetActionSelection() As Collection Dim cSelect As Collection If Selection.Count Then Return Selection cSelect = New Collection cSelect[RootControl.Name] = RootControl Return cSelect End Private Sub DoAction(sAction As String) Dim hCtrl As CControl If $hFamily.ActionDialog(sAction) Then Return $hUndo.Begin For Each hCtrl In GetActionSelection() $hFamily.ActionExec(hCtrl, sAction) Next $hUndo.End FFormStack.RefreshAll End Public Sub panSelect_Drag() If Drag.Format = MMime.CONTROL And If $hDropTarget Then Drag.Show($hDropTarget.Control) Else Stop Event Endif End Public Sub panSelect_DragMove() If Drag.Format = MMime.CONTROL And If $hDropTarget Then 'Drag.Show($hDropTarget.Control) DrawDropFrame() Else Stop Event Endif End Public Sub ReadConfig() Project.SetSmallFont(tlbForm) edtDiff.ReadConfig End Public Sub Form_Open() ReadConfig End Public Sub dwgBackground_MouseDown() UnselectAll End Public Sub GetFamily() As CFamily Return $hFamily End ' Private Sub ToggleContainer() ' ' Dim hCCtrl As CControl ' ' For Each hCCtrl In Selection ' hCCtrl.ToggleContents ' Next ' ' End Public Sub ArrangeContainerByDefault(hCtrl As CControl, Optional bReal As Boolean, bRec As Boolean) Dim sArr As String Dim bInvert As Boolean Dim hTab As Object Dim iTab As Integer Dim hChild As CControl If $iLockArrangement Then Return If hCtrl.Kind = $hFamily.MenuClass Then Return Try sArr = Project.Documentation.Classes[hCtrl.Kind].Symbols["_DefaultArrangement"].Value If Not Error Then If Left(sArr) = "F" Then Try sArr = Left(hCtrl.GetProperty("Arrangement")) If sArr Then Try bInvert = Not IsNull(hCtrl.GetProperty("Invert")) If hCtrl.IsMultiContainer() Then hTab = hCtrl.Control For iTab = 0 To hTab.Count - 1 ArrangeContainer(hCtrl.Control, sArr, bInvert, False, iTab) Next Else ArrangeContainer(hCtrl.Control, sArr, bInvert, False) Endif If bReal And If $hFamily.AutomaticArrangement Then hCtrl.Arrange() Endif Endif Endif If Not bRec Then Return For Each hChild In hCtrl.GetChildren() If hChild.IsContainer() Then ArrangeContainerByDefault(hChild, bReal, True) Next End Public Sub StartResizeMode() $iMode = MODE_RESIZE HideFrame End Public Sub EndResizeMode() $iMode = MODE_NOTHING CheckHovered End Public Sub GetPopupMenu() As Menu Return mnuForm End Private Sub SplitFont(sFont As String, N As Integer) As String Dim I As Integer Dim sCar As String Dim S As Integer For I = 1 To Len(sFont) sCar = Mid$(sFont, I, 1) If IsUCase(sCar) Or If IsPunct(sCar) Or If sCar = " " Then If S Then If (I - S) >= 2 Or If sCar = " " Or If IsPunct(sCar) Then Dec N If N = 0 Then Return RTrim(Left$(sFont, I - 1)) Endif Endif S = I Endif Next ' If S Then ' Dec N ' If N = 0 Then Return sFont ' Else ' If N = 1 Then Return sFont ' Endif End Public Sub mnuFont_Show() Dim sFont As String Dim cFont As Collection Dim aFont As String[] Dim hMenu As Menu Dim cMenu As New Collection Dim I As Integer Dim sParentFont As String Dim hParent As Menu Dim iCount As Variant mnuFont.Children.Clear cFont = New Collection aFont = New String[] For Each sFont In $hFamily.GetFonts().Sort() For I = 16 DownTo 1 sParentFont = SplitFont(sFont, I) If Not sParentFont Then Continue If Not cFont.Exist(sParentFont) Then cFont[sParentFont] = 0 aFont.Add(sParentFont) Else Inc cFont[sParentFont] Break Endif Next cFont[sFont] = 1000 aFont.Add(sFont) Next aFont.Sort(gb.Natural) ' For Each sFont In aFont ' Print cFont[sFont];; sFont ' Next For Each sFont In aFont iCount = cFont[sFont] If iCount = 0 Then Continue hParent = Null For I = 16 DownTo 1 sParentFont = SplitFont(sFont, I) If Not sParentFont Then Continue hParent = cMenu[sParentFont] If hParent Then Break Next If Not hParent Then hParent = mnuFont If hParent <> mnuFont And If hParent.Children.Count = 0 Then If cFont[hParent.Text] >= 1000 Then hMenu = New Menu(hParent) As "mnuSetFont" hMenu.Text = hParent.Text Endif Endif hMenu = New Menu(hParent) As "mnuSetFont" hMenu.Text = sFont cMenu[sFont] = hMenu Next End Public Sub mnuSetFont_Click() $hFamily.ActionValue = Last.Text DoAction(".text-set-font") End Public Sub lblTitle_DblClick() Action[".menu", Me].Value = True End Public Sub dwgInfo_Draw() Dim DS As Integer = Desktop.Scale Dim X As Integer Dim Y As Integer Dim W As Float Dim H As Integer Dim iCol As Integer If Not $cInfo Then Return iCol = Color.SetAlpha(Color.TextForeground, 128) H = Paint.Font.Height + DS Paint.FillRect(0, 0, Paint.W, H, iCol) Paint.FillRect(0, H + 1, Paint.W, Paint.H - H - 1, iCol) Paint.ClipRect = Rect(DS, DS \ 2, Paint.W - DS * 2, Paint.H - DS) X = DS Y = DS \ 2 W = (Paint.W - DS * 2) / 2 - DS Paint.Font.Bold = True Paint.DrawText($cInfo!Name, X, Y, W, Paint.Font.Height, Align.Left) X += W Paint.Font.Bold = False Paint.DrawText($cInfo!Kind, X + DS, Y, W, Paint.Font.Height, Align.Right) 'Y += Paint.Font.Height ' Paint.DrawText($cInfo!Kind, DS, Y, Paint.W - DS * 2, Paint.Font.Height, Align.Center) X = DS Y = DS + Paint.Font.Height W = (Paint.W - DS * 2) / 4 H = Paint.H - Y Paint.DrawText($cInfo!X, X, Y, W - DS, H, Align.Right) Paint.DrawText("•", X, Y, W * 2, H, Align.Center) X += W Paint.DrawText($cInfo!Y, X + DS, Y, W, H, Align.Left) X += W Paint.DrawText($cInfo!Width, X, Y, W - DS, H, Align.Right) Paint.DrawText("×", X, Y, W * 2, H, Align.Center) X += W Paint.DrawText($cInfo!Height, X + DS, Y, W, H, Align.Left) End Private Sub FindLocation(hResult As CSearchResult) Dim sLine As String Dim iPos As Integer Dim sProperty As String Dim iLevel As Integer Dim sText As String Dim iPos2 As Integer If hResult.OnDisk Then sText = File.Load(Path) Else sText = GetText() Endif iPos = RInStr(sText, "\n", hResult.Pos + 1) + 1 iPos2 = InStr(sText, "\n", iPos + 1) If iPos2 = 0 Then iPos2 = Len(sText) + 1 sLine = Mid$(sText, iPos, iPos2 - iPos) hResult.Column = String.Len(Left$(sLine, hResult.Pos - iPos)) + 1 'hResult.Pos - iPos + 1 hResult.Text = sLine sLine = Trim(sLine) iPos2 = InStr(sLine, " = ") If iPos2 = 0 Then Return sProperty = Left(sLine, iPos2 - 1) While iPos > 1 iPos2 = iPos - 1 If iPos = 2 Then iPos = 1 Else iPos = RInStr(sText, "\n", iPos - 2) + 1 Endif sLine = Trim(Mid$(sText, iPos, iPos2 - iPos)) If sLine = "}" Then Inc iLevel Else If sLine Begins "{ " Then If iLevel Then Dec iLevel Else hResult.Location = Split(sLine, " ")[1] & "." & sProperty Break Endif Endif Wend End Public Sub dwgInfo_Enter() $bInfoTop = Not $bInfoTop MoveInfo End Private Sub UpdateDiffAction() Action[".diff", Me].Visible = Project.IsModified(Path, True) Action[".diff-next,.diff-previous", Me].Visible = Action[".diff", Me].Visible And Action[".diff", Me].Value End Private Sub UpdateDiffMode() If Action[".diff", Me].Value = $bDiffMode Then Return $bDiffMode = Action[".diff", Me].Value UpdateDiffAction If $bDiffMode Then Me.Save() If Not Action[".diff", Me].Visible Then $bDiffMode = False Action[".diff", Me].Value = False Return Endif edtDiff.Load(Path) edtDiff.EnterDiffModeWith(Path) panDiff.Show panDiff.Raise Else edtDiff.LeaveDiffMode() edtDiff.Clear() panDiff.Hide Endif SetReadOnly End Public Sub btnDiffPrevious_Click() Dim Y As Integer Y = edtDiff.FindPreviousDiff(edtDiff.Line) If Y >= 0 Then edtDiff.Goto(edtDiff.Column, Y) End Public Sub btnDiffNext_Click() Dim Y As Integer Y = edtDiff.FindNextDiff(edtDiff.Line) If Y >= 0 Then edtDiff.Goto(edtDiff.Column, Y) End Public Sub Form_Arrange() panDiff.Move(0, tlbForm.H, Me.W, Me.H - tlbForm.H) End Private Function DiffMode_Read() As Boolean Return $bDiffMode End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FForm.form000066400000000000000000000622661411575327000226370ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,149,56) Persistent = True Arrangement = Arrange.Vertical { mnuForm Menu Enabled = False { mnuUndo Menu Action = ".undo" Text = ("Undo") Picture = Picture["icon:/small/undo"] Shortcut = "Ctrl+Z" } { mnuRedo Menu Action = ".redo" Text = ("Redo") Picture = Picture["icon:/small/redo"] Shortcut = "Ctrl+Y" } { Menu2 Menu } { mnuCut Menu Action = ".cut" Text = ("Cut") Picture = Picture["icon:/small/cut"] Shortcut = "Ctrl+X" } { mnuCopy Menu Action = ".copy" Text = ("Copy") Picture = Picture["icon:/small/copy"] Shortcut = "Ctrl+C" } { mnuCopyAt Menu Action = ".copy-same" Text = ("Copy at the same place") Shortcut = "Ctrl+Shift+C" } { mnuPaste Menu Action = ".paste" Text = ("Paste") Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+V" } { mnuDelete Menu Action = ".delete" Text = ("Delete") Picture = Picture["icon:/small/delete"] Shortcut = "Del" } { mnuDeleteContainer Menu Action = ".delete-container" Text = ("Delete container only") Picture = Picture["img/16/delete-container.png"] Visible = False } { mnuEmbedContainer Menu Action = ".embed-container" Text = ("Embed into a container") Picture = Picture["img/16/embed-container.png"] Visible = False } { mnuChange Menu Text = ("Change into") Picture = Picture["icon:/small/wizard"] } { mnuSep1 Menu } { mnuSelect Menu Text = ("Select") Picture = Picture["icon:/small/select"] } { mnuSelectAll Menu Action = ".select-all" Text = ("Select all") Picture = Picture["icon:/small/select-all"] Shortcut = "Ctrl+A" } { mnuSelectParent Menu Action = ".select-parent" Text = ("Select parent") } { mnuUnselectAll Menu Action = ".unselect-all" Text = ("Unselect all") Shortcut = "Esc" } { Menu8 Menu } { mnuArrange Menu Text = ("Arrangement") { mnuRaise Menu Action = ".raise" Text = ("Bring to foreground") Picture = Picture["icon:/small/raise"] Shortcut = "Home" } { mnuLower Menu Action = ".lower" Text = ("Send to background") Picture = Picture["icon:/small/lower"] Shortcut = "End" } { mnuArrangeSep Menu } { mnuArrangeHor Menu Action = ".arrange-horizontal" Text = ("Horizontal") Picture = Picture["img/16/arrange-h.png"] Shortcut = "Ctrl+Alt+H" } { mnuArrangeLeftRight Menu Action = ".arrange-row" Text = ("Rows") Picture = Picture["img/16/arrange-lr.png"] } { mnuArrangeVer Menu Action = ".arrange-vertical" Text = ("Vertical") Picture = Picture["img/16/arrange-v.png"] Shortcut = "Ctrl+Alt+V" } { mnuArrangeTopBottom Menu Action = ".arrange-column" Text = ("Columns") Picture = Picture["img/16/arrange-tb.png"] } { Menu4 Menu } { mnuArrangeCenterHorizontally Menu Action = ".arrange-hcenter" Text = ("Center horizontally") Picture = Picture["img/16/arrange-hcenter.png"] } { mnuArrangeCenterVertically Menu Action = ".arrange-vcenter" Text = ("Center vertically") Picture = Picture["img/16/arrange-vcenter.png"] } } { mnuAlign Menu Text = ("Alignment") { mnuAlignLeft Menu Action = ".align-left" Text = Shortcut(("Align to left"), "l") Picture = Picture["icon:/small/align-left"] } { mnuAlignRight Menu Action = ".align-right" Text = Shortcut(("Align to right"), "r") Picture = Picture["icon:/small/align-right"] } { mnuAlignTop Menu Action = ".align-top" Text = Shortcut(("Align to top"), "t") Picture = Picture["icon:/small/align-top"] } { mnuAlignBottom Menu Action = ".align-bottom" Text = Shortcut(("Align to bottom"), "b") Picture = Picture["icon:/small/align-bottom"] } { Menu5 Menu } { mnuAlignWidth Menu Action = ".same-width" Text = Shortcut(("Same width"), "w") Picture = Picture["icon:/small/align-width"] } { mnuAlignHeight Menu Action = ".same-height" Text = Shortcut(("Same height"), "h") Picture = Picture["icon:/small/align-height"] } } { mnuSepUndo Menu } { mnuShowTab Menu Text = ("Show tab") Picture = Picture["img/16/tabstrip.png"] { Menu1 Menu } } { mnuMoveTab Menu Text = ("Move tab") Picture = Picture["img/16/tabmove.png"] { mnuTabFirst Menu Action = ".move-tab-first" Text = Shortcut(("First"), "F") Picture = Picture["icon:/small/first"] Shortcut = "Ctrl+Alt+Home" } { mnuTabPrevious Menu Action = ".move-tab-previous" Text = Shortcut(("Previous"), "P") Picture = Picture["icon:/small/left"] Shortcut = "Ctrl+Alt+Left" } { mnuTabNext Menu Action = ".move-tab-next" Text = Shortcut(("Next"), "N") Picture = Picture["icon:/small/right"] Shortcut = "Ctrl+Alt+Right" } { mnuTabLast Menu Action = ".move-tab-last" Text = Shortcut(("Last"), "L") Picture = Picture["icon:/small/last"] Shortcut = "Ctrl+Alt+End" } } { mnuSep3 Menu } { mnuMenu Menu Action = ".menu" Text = ("Menu editor") & "..." Picture = Picture["icon:/small/menu"] Shortcut = "Ctrl+E" } { Menu6 Menu } { mnuEvent Menu Text = ("Event") Picture = Picture["img/symbol/event.png"] Visible = False } { mnuShowCode Menu Action = ".code-form" Text = ("Open code") Picture = Picture["icon:/small/right"] Shortcut = "F12" } { mnuRun Menu Action = ".run-me" Text = ("Run this form") Picture = Picture["icon:/small/play"] Shortcut = "Shift+F5" } { mnuSep4 Menu } { Menu7 Menu Action = ".locked" Text = ("Locked") Picture = Picture["icon:/small/lock"] Toggle = True } { mnuReload Menu Action = ".reload" Text = ("Reload") Picture = Picture["icon:/small/refresh"] } { mnuSave Menu Action = ".save" Text = ("Save") Picture = Picture["icon:/small/save"] Shortcut = "Ctrl+S" } { Menu9 Menu } { mnuClose Menu Action = ".close" Text = ("Close") Picture = Picture["icon:/small/close"] Shortcut = "Ctrl+W" } } { mnuFont Menu Visible = False { Menu3 Menu #Translate = False Text = "Menu3" } } { tlbForm ToolBar MoveScaled(0,0,148,8) Key = "form" Text = ("Form") Separator = True { ToolButton12 ToolButton mnuShowCode Name = "ToolButton12" MoveScaled(0,0,4,4) ToolTip = ("Code") Action = ".show-class" Picture = Picture["icon:/small/right"] } { btnDiff ToolButton MoveScaled(4,0,4,4) ToolTip = ("Show modifications") Action = ".diff" AutoResize = True Picture = Picture["img/32/modified.png"] Toggle = True } { btnDiffPrevious ToolButton MoveScaled(7,0,4,4) ToolTip = ("Previous modification") Action = ".diff-previous" Picture = Picture["icon:/small/rewind"] } { btnDiffNext ToolButton MoveScaled(11,0,4,4) ToolTip = ("Next modification") Action = ".diff-next" Picture = Picture["icon:/small/forward"] } { Separator6 Separator MoveScaled(15,0,1,4) } { ToolButton9 ToolButton mnuSave Name = "ToolButton9" MoveScaled(16,0,4,4) ToolTip = ("Save") Action = ".save" Picture = Picture["icon:/small/save"] } { ToolButton11 ToolButton mnuReload Name = "ToolButton11" MoveScaled(19,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/refresh"] } { ToolButton39 ToolButton MoveScaled(23,0,4,4) Visible = False ToolTip = ("Run this form") Action = ".run-me" Picture = Picture["icon:/small/play"] } { Separator1 Separator MoveScaled(27,0,1,4) } { ToolButton17 ToolButton mnuUndo Name = "ToolButton17" MoveScaled(28,0,4,4) ToolTip = ("Undo") Action = ".undo" Picture = Picture["icon:/small/undo"] } { ToolButton18 ToolButton mnuRedo Name = "ToolButton18" MoveScaled(32,0,4,4) ToolTip = ("Redo") Action = ".redo" Picture = Picture["icon:/small/redo"] } { Separator5 Separator MoveScaled(37,0,1,4) } { ToolButton14 ToolButton mnuCut Name = "ToolButton14" MoveScaled(39,0,4,4) Visible = False ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { ToolButton15 ToolButton mnuCopy Name = "ToolButton15" MoveScaled(42,0,4,4) Visible = False ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { ToolButton16 ToolButton mnuPaste Name = "ToolButton16" MoveScaled(45,0,4,4) Visible = False ToolTip = ("Paste") Action = ".paste" Picture = Picture["icon:/small/paste"] } { ToolButton1 ToolButton mnuDelete Name = "ToolButton1" MoveScaled(48,0,4,4) Visible = False ToolTip = ("Delete") Action = ".delete" Picture = Picture["icon:/small/delete"] } { ToolButton31 ToolButton MoveScaled(54,0,5,4) ToolTip = ("Menu editor") Action = ".menu" AutoResize = True Text = ("Menu editor") & "..." Picture = Picture["icon:/small/menu"] } { ToolButton2 ToolButton MoveScaled(59,0,4,4) ToolTip = ("Toggle grid") Action = ".grid" Picture = Picture["icon:/small/grid"] Toggle = True Value = True } { ToolButton40 ToolButton MoveScaled(63,0,4,4) ToolTip = ("Toggle information tooltip") Action = ".tooltip" Picture = Picture["icon:/small/info"] Toggle = True Value = True } { Separator2 Separator MoveScaled(68,0,1,4) } { ToolButton19 ToolButton MoveScaled(68,0,4,4) ToolTip = ("Bring to foreground") Action = ".raise" Picture = Picture["icon:/small/raise"] } { ToolButton20 ToolButton MoveScaled(72,0,4,4) ToolTip = ("Send to background") Action = ".lower" Picture = Picture["icon:/small/lower"] } { ToolButton21 ToolButton MoveScaled(76,0,4,4) ToolTip = ("Align to top") Action = ".align-top" Picture = Picture["icon:/small/align-top"] } { ToolButton22 ToolButton MoveScaled(80,0,4,4) ToolTip = ("Align to bottom") Action = ".align-bottom" Picture = Picture["icon:/small/align-bottom"] } { ToolButton23 ToolButton MoveScaled(84,0,4,4) ToolTip = ("Align to left") Action = ".align-left" Picture = Picture["icon:/small/align-left"] } { ToolButton24 ToolButton MoveScaled(88,0,4,4) ToolTip = ("Align to right") Action = ".align-right" Picture = Picture["icon:/small/align-right"] } { ToolButton29 ToolButton MoveScaled(92,0,4,4) ToolTip = ("Same width") Action = ".same-width" Picture = Picture["icon:/small/align-width"] } { ToolButton30 ToolButton MoveScaled(96,0,4,4) ToolTip = ("Same height") Action = ".same-height" Picture = Picture["icon:/small/align-height"] } { ToolButton25 ToolButton MoveScaled(100,0,4,4) Visible = False ToolTip = ("Vertical") Action = ".arrange-vertical" Picture = Picture["img/16/arrange-v.png"] } { ToolButton26 ToolButton MoveScaled(104,0,4,4) Visible = False ToolTip = ("Horizontal") Action = ".arrange-horizontal" Picture = Picture["img/16/arrange-h.png"] } { ToolButton27 ToolButton MoveScaled(108,0,4,4) Visible = False ToolTip = ("Columns") Action = ".arrange-column" Picture = Picture["img/16/arrange-tb.png"] } { ToolButton28 ToolButton MoveScaled(112,0,4,4) Visible = False ToolTip = ("Rows") Action = ".arrange-row" Picture = Picture["img/16/arrange-lr.png"] } { ToolButton10 ToolButton MoveScaled(116,0,4,4) ToolTip = ("Center horizontally") Action = ".arrange-hcenter" Picture = Picture["img/16/arrange-hcenter.png"] } { ToolButton8 ToolButton MoveScaled(120,0,4,4) ToolTip = ("Center vertically") Action = ".arrange-vcenter" Picture = Picture["img/16/arrange-vcenter.png"] } { Separator3 Separator MoveScaled(124,0,1,4) } { ToolButton3 ToolButton MoveScaled(125,0,4,4) ToolTip = ("Move tab first") Action = ".move-tab-first" Picture = Picture["icon:/small/first"] } { ToolButton4 ToolButton MoveScaled(129,0,4,4) ToolTip = ("Move tab left") Action = ".move-tab-previous" Picture = Picture["icon:/small/left"] } { ToolButton5 ToolButton MoveScaled(133,0,4,4) ToolTip = ("Move tab right") Action = ".move-tab-next" Picture = Picture["icon:/small/right"] } { ToolButton6 ToolButton MoveScaled(137,0,4,4) ToolTip = ("Move tab last") Action = ".move-tab-last" Picture = Picture["icon:/small/last"] } { btnTabMenu ToolButton MoveScaled(141,0,4,4) ToolTip = ("Show tab") Action = ".show-tab" Picture = Picture["img/16/tabstrip.png"] } { Separator4 Separator MoveScaled(146,0,1,4) } { btnFont MenuButton MoveScaled(0,4,7,4) Tag = "form,report,webform" Action = ".text-font" Picture = Picture["icon:/small/font"] Border = False Menu = "mnuFont" } { ToolButton13 ToolButton MoveScaled(7,4,4,4) Tag = "form,report,webform" ToolTip = ("Bold") Action = ".text-bold" Picture = Picture["icon:/small/text-bold"] } { ToolButton32 ToolButton MoveScaled(11,4,4,4) Tag = "form,report,webform" ToolTip = ("Italic") Action = ".text-italic" Picture = Picture["icon:/small/text-italic"] } { ToolButton33 ToolButton MoveScaled(15,4,4,4) Tag = "form,report,webform" ToolTip = ("Underline") Action = ".text-underline" Picture = Picture["icon:/small/text-underline"] } { ToolButton34 ToolButton MoveScaled(19,4,4,4) Tag = "form,report" ToolTip = ("Bigger font") Action = ".text-zoom-in" Picture = Picture["icon:/small/zoom-in"] } { ToolButton35 ToolButton MoveScaled(23,4,4,4) Tag = "form,report" ToolTip = ("Smaller font") Action = ".text-zoom-out" Picture = Picture["icon:/small/zoom-out"] } { ToolButton36 ToolButton MoveScaled(27,4,4,4) Tag = "form,report" ToolTip = ("Default font") Action = ".text-zoom-normal" Picture = Picture["icon:/small/zoom-normal"] } { ToolButton37 ToolButton MoveScaled(31,4,4,4) Tag = "form,report,webform" ToolTip = ("Background") Action = ".format-background" Picture = Picture["icon:/small/fill"] } { ToolButton38 ToolButton MoveScaled(35,4,4,4) Tag = "form,report,webform" ToolTip = ("Foreground") Action = ".format-foreground" Picture = Picture["icon:/small/pen"] } { Spring1 Spring MoveScaled(42,4,7,4) } { ToolButton7 ToolButton MoveScaled(51,4,4,4) ToolTip = ("Lock / unlock form") Action = ".locked" Picture = Picture["icon:/small/lock"] Toggle = True } } { svwWorkspace ScrollView MoveScaled(5,11,58,39) Expand = True Border = False { panTitle Panel MoveScaled(0,0,49,5) Background = Color.SelectedBackground Drop = True Arrangement = Arrange.Fill AutoResize = True Padding = 2 { HBox1 HBox MoveScaled(2,1,43,3) Expand = True { imgIcon PictureBox MoveScaled(0,0,4,4) Alignment = Align.Center } { lblTitle Label MoveScaled(5,0,24,3) Font = Font["Bold"] Foreground = Color.SelectedForeground Expand = True Padding = 2 Alignment = Align.Center } { btnMaxWindow PictureBox MoveScaled(36,0,3,3) Picture = Picture["img/16/max-window.png"] Alignment = Align.Center } { btnCloseWindow PictureBox MoveScaled(39,0,3,3) Picture = Picture["img/16/close-window.png"] Alignment = Align.Center } } } { panMenuBar DrawingArea MoveScaled(27,8,25,3) Visible = False Background = Color.Background } { panRight Panel Handle Name = "panRight" MoveScaled(8,16,1,1) Background = Color.TextBackground Mouse = Mouse.SizeE Border = Border.Plain } { panDown Panel Handle Name = "panDown" MoveScaled(6,18,1,1) Background = Color.TextBackground Mouse = Mouse.SizeS Border = Border.Plain } { panRightDown Panel Handle Name = "panRightDown" MoveScaled(8,18,1,1) Background = Color.TextBackground Mouse = Mouse.SizeNWSE Border = Border.Plain } { panBorder DrawingArea MoveScaled(29,13,24,24) Background = Color.Background { panSelectN DrawingArea panSelect Name = "panSelectN" MoveScaled(9,5,3,3) Visible = False Tracking = True Drop = True Ignore = True NoBackground = True } { panSelectS DrawingArea panSelect Name = "panSelectS" MoveScaled(9,13,3,3) Visible = False Tracking = True Drop = True Ignore = True NoBackground = True } { panSelectW DrawingArea panSelect Name = "panSelectW" MoveScaled(5,9,3,3) Visible = False Tracking = True Drop = True Ignore = True NoBackground = True } { panSelectE DrawingArea panSelect Name = "panSelectE" MoveScaled(14,10,6,3) Visible = False Tracking = True Drop = True Ignore = True NoBackground = True } } } { dwgBackground DrawingArea MoveScaled(76,26,12,9) Background = Color.LightForeground Ignore = True } { dwgInfo DrawingArea MoveScaled(65,45,20,6) Ignore = True } { panDiff Panel MoveScaled(100,27,27,25) Visible = False Background = Color.Background Ignore = True Arrangement = Arrange.Fill { edtDiff TextEditor MoveScaled(0,0,24,23) Wrap = True } } { timMoveInfo #Timer #MoveScaled(108,16) } } # Gambas Action File 3.0 { Actions { Action align-bottom Text = "Align to bottom" Shortcut = "" Picture = "icon:/small/align-bottom" } { Action align-left Text = "Align to left" Shortcut = "" Picture = "icon:/small/align-left" } { Action align-right Text = "Align to right" Shortcut = "" Picture = "icon:/small/align-right" } { Action align-top Text = "Align to top" Shortcut = "" Picture = "icon:/small/align-top" } { Action arrange-column Text = "Columns" Shortcut = "" Picture = "img/16/arrange-tb.png" } { Action arrange-hcenter Text = "Center horizontally" Shortcut = "" Picture = "img/16/arrange-hcenter.png" } { Action arrange-horizontal Text = "Horizontal" Shortcut = "Ctrl+Alt+H" Picture = "img/16/arrange-h.png" } { Action arrange-row Text = "Rows" Shortcut = "" Picture = "img/16/arrange-lr.png" } { Action arrange-vcenter Text = "Center vertically" Shortcut = "" Picture = "img/16/arrange-vcenter.png" } { Action arrange-vertical Text = "Vertical" Shortcut = "Ctrl+Alt+V" Picture = "img/16/arrange-v.png" } { Action close Text = "Close" Shortcut = "Ctrl+W" Picture = "icon:/small/close" } { Action code-form Text = "Open code" Shortcut = "F12" Picture = "icon:/small/right" } { Action copy Text = "Copy" Shortcut = "Ctrl+C" Picture = "icon:/small/copy" } { Action copy-same Text = "Copy at the same place" Shortcut = "Ctrl+Shift+C" } { Action cut Text = "Cut" Shortcut = "Ctrl+X" Picture = "icon:/small/cut" } { Action delete Text = "Delete" Shortcut = "Del" Picture = "icon:/small/delete" } { Action delete-container Text = "Delete container only" Shortcut = "" Picture = "img/16/delete-container.png" } { Action diff Text = "Show modifications" Picture = "img/32/modified.png" } { Action diff-next Text = "Next modification" Picture = "icon:/small/forward" } { Action diff-previous Text = "Previous modification" Picture = "icon:/small/rewind" } { Action embed-container Text = "Embed into a container" Shortcut = "" Picture = "img/16/embed-container.png" } { Action format-background Text = "Background" Picture = "icon:/small/fill" } { Action format-foreground Text = "Foreground" Picture = "icon:/small/pen" } { Action grid Text = "Toggle grid" Picture = "icon:/small/grid" } { Action locked Text = "Locked" Shortcut = "" Picture = "icon:/small/lock" } { Action lower Text = "Send to background" Shortcut = "End" Picture = "icon:/small/lower" } { Action menu Text = "Menu editor" Shortcut = "Ctrl+E" Picture = "icon:/small/menu" } { Action move-tab-first Text = "First" Shortcut = "Ctrl+Alt+Home" Picture = "icon:/small/first" } { Action move-tab-last Text = "Last" Shortcut = "Ctrl+Alt+End" Picture = "icon:/small/last" } { Action move-tab-next Text = "Next" Shortcut = "Ctrl+Alt+Right" Picture = "icon:/small/right" } { Action move-tab-previous Text = "Previous" Shortcut = "Ctrl+Alt+Left" Picture = "icon:/small/left" } { Action paste Text = "Paste" Shortcut = "Ctrl+V" Picture = "icon:/small/paste" } { Action raise Text = "Bring to foreground" Shortcut = "Home" Picture = "icon:/small/raise" } { Action redo Text = "Redo" Shortcut = "Ctrl+Y" Picture = "icon:/small/redo" } { Action reload Text = "Reload" Shortcut = "" Picture = "icon:/small/refresh" } { Action run-me Text = "Run this form" Shortcut = "Shift+F5" Picture = "icon:/small/play" } { Action same-height Text = "Same height" Shortcut = "" Picture = "icon:/small/align-height" } { Action same-width Text = "Same width" Shortcut = "" Picture = "icon:/small/align-width" } { Action save Text = "Save" Shortcut = "Ctrl+S" Picture = "icon:/small/save" } { Action select-all Text = "Select all" Shortcut = "Ctrl+A" Picture = "icon:/small/select-all" } { Action select-parent Text = "Select parent" Shortcut = "" } { Action show-class Text = "Code" Picture = "icon:/small/right" } { Action show-tab Text = "Show tab" Picture = "img/16/tabstrip.png" } { Action text-bold Text = "Bold" Picture = "icon:/small/text-bold" } { Action text-font Text = "" Picture = "icon:/small/font" } { Action text-italic Text = "Italic" Picture = "icon:/small/text-italic" } { Action text-underline Text = "Underline" Picture = "icon:/small/text-underline" } { Action text-zoom-in Text = "Bigger font" Picture = "icon:/small/zoom-in" } { Action text-zoom-normal Text = "Default font" Picture = "icon:/small/zoom-normal" } { Action text-zoom-out Text = "Smaller font" Picture = "icon:/small/zoom-out" } { Action tooltip Text = "Toggle information tooltip" Picture = "icon:/small/info" } { Action undo Text = "Undo" Shortcut = "Ctrl+Z" Picture = "icon:/small/undo" } { Action unselect-all Text = "Unselect all" Shortcut = "Esc" } } { Toolbars { Toolbar form Text = "Form" List = "show-class,diff,diff-previous,diff-next,save,reload,run-me,undo,redo,cut,copy,paste,delete,menu,grid,tooltip,raise,lower,align-top,align-bottom,align-left,align-right,same-width,same-height,arrange-vertical,arrange-horizontal,arrange-column,arrange-row,arrange-hcenter,arrange-vcenter,move-tab-first,move-tab-previous,move-tab-next,move-tab-last,show-tab,text-font,text-bold,text-italic,text-underline,text-zoom-in,text-zoom-out,text-zoom-normal,format-background,format-foreground,locked" Default = "show-class,diff,diff-previous,diff-next,|,save,reload,|,undo,redo,|,menu,grid,tooltip,|,raise,lower,align-top,align-bottom,align-left,align-right,same-width,same-height,arrange-hcenter,arrange-vcenter,|,move-tab-first,move-tab-previous,move-tab-next,move-tab-last,show-tab,|,text-font,text-bold,text-italic,text-underline,text-zoom-in,text-zoom-out,text-zoom-normal,format-background,format-foreground,~,locked" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FFormStack.class000066400000000000000000000134421411575327000237570ustar00rootroot00000000000000' Gambas class file Static Private $hForm As FForm 'FForm Static Private $cPict As New Collection Private $iNoSelect As Integer Private $hRefreshTimer As New Timer As "RefreshTimer" Private Sub GetForm() As Boolean $hForm = Null Try $hForm = Project.ActiveForm If Not $hForm Then HideAll Return True Endif End Public Sub Form_Open() ReadConfig End Public Sub Form_Show() RefreshAll txtSearch.Editor.SelectAll txtSearch.Editor.SetFocus End Public Sub Form_Hide() $hForm = Null End Static Public Sub GetControlIcon(sKind As String) As Picture Dim sImg As String Dim hPict As Picture If sKind <> "Form" Then sImg = ".control" &/ LCase(sKind) Else sImg = "img/32/form.png" Endif hPict = $cPict[sImg] If Not hPict Then hPict = Picture[sImg] If Not hPict Then hPict = Picture["img/control/unknown.png"] hPict = hPict.Image.Stretch(16, 16).Picture $cPict[sImg] = hPict Endif Return hPict End Private Sub FillTree(hCtrl As CControl, Optional sParent As String) Dim hChild As Control Dim hTab As Object Dim iTab As Integer Dim sKey As String Dim hPict As Picture Dim hCChild As CControl If Not hCtrl Then Return If sParent Then 'sImg = "img/control/" & LCase(hCtrl.Kind) & ".png" 'sImg = ".control" &/ LCase(hCtrl.Kind) hPict = GetControlIcon(hCtrl.Kind) Else hPict = Picture["img/16/form.png"] 'sImg = "img/32/form.png" Endif Inc $iNoSelect Try tvwControl[hCtrl.Name].Delete Dec $iNoSelect tvwControl.Add(hCtrl.Name, hCtrl.Name, hPict, sParent) If Not hCtrl.IsContainer() Then Return 'IF hCtrl.Kind = "TabStrip" THEN If hCtrl.IsMultiContainer() Then hTab = hCtrl.Control For iTab = 0 To hTab.Count - 1 sKey = hCtrl.Name & "." & iTab tvwControl.Add(sKey, hTab[iTab].Text, GetControlIcon("TabStrip"), hCtrl.Name) For Each hChild In hTab[iTab].Children hCChild = $hForm.GetControl(hChild) If hCChild Then FillTree(hCChild, sKey) Next tvwControl[sKey].Expanded = True Next Else For Each hChild In hCtrl.Control.Children hCChild = $hForm.GetControl(hChild) If hCChild Then FillTree(hCChild, hCtrl.Name) Next Endif tvwControl[hCtrl.Name].Expanded = True End Public Sub RefreshReadOnly() If GetForm() Then Return panControl.Visible = Not $hForm.ReadOnly And Not $hForm.DiffMode End Public Sub RefreshAll() $hRefreshTimer.Trigger End Public Sub RefreshTimer_Timer() DoRefreshAll End Public Sub DoRefreshAll(Optional (sKey) As String, Optional bForce As Boolean) If Not Me.Visible Then Return If GetForm() Then Return 'IF NOT Project.IsForm($hForm) THEN RETURN ' If Not sKey Then ' Try sKey = $hForm.Master.Name ' Endif If bForce Then $cPict.Clear tvwControl.Clear FillTree($hForm.Control[$hForm.Name]) tvwControl.Show 'sepControl.Show 'lblMessage.Hide RefreshReadOnly SelectCurrent ' If sKey Then ' Object.Lock(tvwControl) ' Try tvwControl[sKey].Selected = True ' Object.Unlock(tvwControl) ' Try tvwControl[sKey].EnsureVisible ' Endif ' ' $iNoSelect = False End Public Sub RefreshOne(sKey As String) If Not Me.Visible Then Return If GetForm() Then Return FillTree($hForm.Control[sKey]) SelectCurrent 'TRY tvwControl[sKey].Selected = TRUE 'TRY tvwControl[sKey].EnsureVisible End Public Sub HideAll() tvwControl.Hide panControl.Hide 'sepControl.Hide 'lblMessage.Show End Public Sub btnDown_Click() Dim sKey As String sKey = tvwControl.Key Try $hForm.Control[tvwControl.Current.Text].MoveDown If Error Then Return DoRefreshAll(sKey) End Public Sub btnBottom_Click() Dim sKey As String sKey = tvwControl.Key Try $hForm.Control[tvwControl.Current.Text].Raise If Error Then Return DoRefreshAll(sKey) End Public Sub btnTop_Click() Dim sKey As String sKey = tvwControl.Key Try $hForm.Control[tvwControl.Current.Text].Lower If Error Then Return DoRefreshAll(sKey) End Public Sub btnUp_Click() Dim sKey As String sKey = tvwControl.Key Try $hForm.Control[tvwControl.Current.Text].MoveUp If Error Then Return DoRefreshAll(sKey) End Public Sub SelectCurrent() Dim sName As String If Not $hForm Then Return Try sName = $hForm.Master.Name If Not sName Then sName = $hForm.Name If tvwControl.Exist(sName) Then Try tvwControl[sName].EnsureVisible Inc $iNoSelect tvwControl[sName].Selected = True Dec $iNoSelect Endif End Public Sub tvwControl_Select() If $iNoSelect Then Return Inc $iNoSelect If InStr(tvwControl.Current.Key, ".") Then tvwControl.MoveParent Try $hForm.SelectControl(tvwControl.Item.Text) Else Try $hForm.SelectControl(tvwControl.Current.Text) Endif Dec $iNoSelect End ' Public Sub tvwControl_Collapse() ' ' tvwControl.Item.Expanded = True ' ' End ' Public Sub ReadConfig() Project.SetNormalFont(tvwControl) 'MTheme.InitControl(tvwControl) DoRefreshAll End Public Sub tvwControl_Activate() FMain.ActivatePropertyTab End Public Sub txtSearch_Click() Dim sName As String sName = LCase(Trim(txtSearch.Text)) If Not sName Then Return tvwControl.MoveCurrent Do If tvwControl.MoveBelow() Then tvwControl.MoveFirst If tvwControl.Item.Key = tvwControl.Key Then Break If InStr(LCase(tvwControl.Item.Text), sName) Then tvwControl.Item.Selected = True Break Endif Loop End Public Sub txtSearch_Activate() txtSearch_Click End Public Sub tvwControl_Menu() If tvwControl.Current.Text = Null Then Return ' faking the TAG 'tvwControl.Tag = tvwControl.Current.Text 'Try $hForm.Control_MouseDown() ' calling Menu 'If Mouse.Right Then Try $hForm.Control_Menu() 'End If ' deleting the faked TAG 'tvwControl.Tag = Null End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FFormStack.form000066400000000000000000000017121411575327000236120ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,49,55) Text = ("Hierarchy") Persistent = True Arrangement = Arrange.Vertical { panControl ToolBar MoveScaled(1,15,46,4) Separator = True { btnTop ToolButton MoveScaled(0,0,4,4) ToolTip = ("Move top") Picture = Picture["icon:/small/top"] } { btnUp ToolButton MoveScaled(4,0,4,4) ToolTip = ("Move up") Picture = Picture["icon:/small/up"] } { btnDown ToolButton MoveScaled(8,0,4,4) ToolTip = ("Move down") Picture = Picture["icon:/small/down"] } { btnBottom ToolButton MoveScaled(12,0,4,4) ToolTip = ("Move bottom") Picture = Picture["icon:/small/bottom"] } { txtSearch ButtonBox MoveScaled(18,0,24,4) Expand = True Picture = Picture["icon:/small/find"] } } { tvwControl TreeView MoveScaled(2,23,20,19) Visible = False Expand = True Border = False } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FMenu.class000066400000000000000000000545201411575327000227740ustar00rootroot00000000000000' Gambas class file Static Public OpenEventHandlerFor As String Static Public EventName As String Static Private $hForm As FForm Static Private $aMenu As New CMenu[] Static Private $iSaveCurrent As Integer Static Private $iSaveScrollY As Integer Private $hFamily As CFamily Private $iLevel As Integer Private $cName As New Collection Private $iCurrent As Integer Private $bFreeze As Boolean Private $bModified As Boolean Private $iIconSize As Integer Private $sImageProp As String Private $hButtonClick As Button Static Public Sub Run(hForm As FForm) If hForm <> $hForm Then $hForm = hForm $iSaveCurrent = 0 $iSaveScrollY = 0 Endif OpenEventHandlerFor = "" EventName = "" FMenu.ShowModal() End ' Public Sub _new() ' ' 'Dim hCont As Container ' Dim hCtrl As Control ' Dim hLabel As Label ' ' ' Hack for having non-translatable labels ' ' 'For Each hCont In panMenu.Children ' For Each hCtrl In panMenu.Children ' Try hLabel = hCtrl ' If Not Error Then ' If hLabel.Tag Then ' hLabel.Text = hLabel.Tag ' hLabel.Tag = Null ' Endif ' Endif ' Next ' 'Next ' ' End Public Sub Form_Open() Settings.Read(Me) Project.SetSmallFont(tlbMenu) Me.Title = $hForm.Name & " - " & ("Menu editor") $hFamily = $hForm.GetFamily() $iIconSize = Stock.GetSize("small") If Project.Documentation.Classes[$hFamily.MenuClass].Properties.Exist("Image") Then $sImageProp = "Image" Else $sImageProp = "Picture" Endif lblPicture.Text = $sImageProp $bFreeze = True gvwMenu.UnSelectAll $bFreeze = False gvwMenu.Rows.Count = 0 gvwMenu.Columns.Count = 2 gvwMenu.Columns[0].Expand = True gvwMenu.Columns[1].Width = Desktop.Scale * 20 $iCurrent = -1 LoadShortcut LoadAllMenu UpdatePaste gvwMenu.SetFocus Me.Center End Public Sub Form_Close() If $bModified Then Select Case Message.Warning(("Menus have been modified!"), ("Save"), ("Ignore"), ("Cancel")) Case 1 If CheckMenu() Then Stop Event Return Endif SaveAllMenu Case 2 Case 3 Stop Event Return End Select Endif $iSaveCurrent = $iCurrent $iSaveScrollY = gvwMenu.ScrollY Settings.Write(Me) End Public Sub btnCancel_Click() 'WriteMenu Me.Close End Public Sub btnOK_Click() If WriteMenu() Then Return If CheckMenu() Then Return SaveAllMenu Me.Close End Private Sub CreateMenu(hCCtrl As CControl) Dim hCMenu As CMenu Dim hMenu As Menu hCMenu = New CMenu With hCMenu .Name = hCCtrl.Name .Caption = hCCtrl.GetPropertyDefault("Text") .Action = hCCtrl.GetPropertyDefault("Action") .Level = $iLevel .Enabled = hCCtrl.GetPropertyDefault("Enabled") .Visible = hCCtrl.GetPropertyDefault("Visible") .Checked = hCCtrl.GetPropertyDefault("Checked") .Toggle = hCCtrl.GetPropertyDefault("Toggle") .Radio = hCCtrl.GetPropertyDefault("Radio") .SetShortcut(hCCtrl.GetPropertyDefault("Shortcut")) .Picture = hCCtrl.GetPropertyDefault($sImageProp) .Tag = hCCtrl.GetPropertyDefault("Tag") .Group = hCCtrl.GetPropertyDefault(CPropertyInfo.EVENT_NAME) .Translate = hCCtrl.GetPropertyDefault(CPropertyInfo.TRANSLATE_NAME) End With $aMenu.Add(hCMenu) $cName[hCMenu.Name] = True $iLevel = $iLevel + 1 For Each hMenu In hCCtrl.Control.Children CreateMenu($hForm.Control[hMenu.Tag]) Next $iLevel = $iLevel - 1 End ' Private Sub DrawMenu(iInd As Integer) ' ' Dim sElt As String ' ' $bFreeze = True ' ' With $aMenu[iInd] ' ' sElt = String$(.Level, "···") & .Caption ' If .Shortcut Then ' sElt = sElt & " (" & .GetShortcut() & ")" ' Endif ' lstMenu[iInd].Text = sElt ' ' End With ' ' $bFreeze = False ' ' End Private Sub LoadAllMenu() Dim hCtrl As CControl $bFreeze = True $aMenu.Clear $cName.Clear For Each hCtrl In $hForm.AllMenus 'IF hCtrl.Parent.Kind = "Form" THEN CreateMenu(hCtrl) 'ENDIF Next ' lstMenu.Clear ' ' For iInd = 0 To $aMenu.Count - 1 ' lstMenu.Add("") ' DrawMenu(iInd) ' Next ' ' lstMenu.Add("") ' ' lstMenu.Index = 0 '$aMenu.Add(Null) gvwMenu.Rows.Count = $aMenu.Count gvwMenu.Rows.Height = gvwMenu.Font.Height * 1.2 $bFreeze = False $bModified = False SetCurrent($iSaveCurrent) gvwMenu.ScrollY = $iSaveScrollY End Private Sub SaveAllMenu() Dim hCtrl As CControl Dim hCMenu As CMenu Dim hParent As CControl Dim iLevel As Integer $hForm.GetUndo().Begin For Each hCtrl In $hForm.AllMenus $hForm.RemoveControl(hCtrl.Name) Next $hForm.GetUndo().Add("RestoreMenus") $hForm.AllMenus.Clear hCtrl = $hForm.Control[$hForm.Name] iLevel = -1 For Each hCMenu In $aMenu If Not hCMenu Then Continue With hCMenu If .Level > iLevel Then hParent = hCtrl iLevel = .Level Else While .Level < iLevel hParent = hParent.Parent iLevel = iLevel - 1 Wend Endif hCtrl = $hForm.CreateControl($hFamily.MenuClass, hParent, .Name) hCtrl.SetProperty("Text", .Caption) hCtrl.SetProperty("Action", .Action) hCtrl.SetProperty("Visible", .Visible) hCtrl.SetProperty("Enabled", .Enabled) hCtrl.SetProperty("Checked", .Checked) hCtrl.SetProperty("Toggle", .Toggle) hCtrl.SetProperty("Radio", .Radio) hCtrl.SetProperty("Shortcut", .GetShortcut()) hCtrl.SetProperty($sImageProp, .Picture) hCtrl.SetProperty("Tag", .Tag) hCtrl.SetProperty(CPropertyInfo.EVENT_NAME, .Group) hCtrl.SetProperty(CPropertyInfo.TRANSLATE_NAME, .Translate) End With Next $hForm.UpdateBorder $hForm.GetUndo().End $bModified = False End Public Sub gvwMenu_Change() If $bFreeze Then Return If gvwMenu.Row < 0 Then Return SetCurrent(gvwMenu.Row) End Private Sub WriteMenu() As Boolean Dim iInd As Integer Dim sName As String Dim sComp As String 'IF NOT ME.Visible THEN ' PRINT "WriteMenu ??" ' RETURN 'ENDIF If $bFreeze Then Return iInd = $iCurrent If iInd < 0 Or iInd > $aMenu.Max Then Return With $aMenu[iInd] sComp = .ToString() sName = Trim(txtName.Text) If Not sName Then Balloon.Warning(("Please enter a menu name."), txtName) txtName.SetFocus Return True Endif If CControl.CheckName(sName) Then Balloon.Warning(("Bad menu name !"), txtName) txtName.SetFocus Return True Endif If CControl.CheckName(txtGroup.Text) Then Balloon.Warning(("Bad group name !"), txtGroup) txtGroup.SetFocus Return True Endif If sName <> .Name Then If Not $cName.Exist(sName) Then $cName[.Name] = Null $cName[sName] = True .Name = sName Endif Endif .Caption = Trim(txtCaption.Text) .Action = Trim(txtAction.Text) .Group = Trim(txtGroup.Text) .Visible = chkVisible.Value .Enabled = chkEnabled.Value .Checked = chkChecked.Value .Toggle = chkToggle.Value .Radio = chkRadio.Value .Translate = chkTranslate.Value .Ctrl = chkCtrl.Value .Shift = chkShift.Value .Alt = chkAlt.Value If cmbShortcut.Index = 0 Then .Shortcut = "" Else .Shortcut = cmbShortcut.Text Endif .Picture = txtPicture.Text .Tag = txtTag.Text If .ToString() <> sComp Then SetModified End With gvwMenu.Rows[$iCurrent].Refresh End Private Sub ReadMenu() Dim iInd As Integer $bFreeze = True iInd = $iCurrent If iInd >= 0 And iInd <= $aMenu.Max Then With $aMenu[iInd] txtName.Text = .Name txtCaption.Text = .Caption txtAction.Text = .Action txtGroup.Text = .Group chkVisible.Value = .Visible chkEnabled.Value = .Enabled chkChecked.Value = .Checked chkToggle.Value = .Toggle chkRadio.Value = .Radio chkTranslate.Value = .Translate chkCtrl.Value = .Ctrl chkShift.Value = .Shift chkAlt.Value = .Alt If Len(.ShortCut) Then cmbShortcut.Text = .Shortcut Else cmbShortCut.Index = 0 Endif txtPicture.Text = .Picture txtTag.Text = .Tag SetPicture(.Picture) End With panMenu.Show lblCreate.Hide Else panMenu.Hide lblCreate.Show Endif $bFreeze = False End Private Sub DeleteMenu(iInd As Integer) $cName.Remove($aMenu[iInd].Name) $aMenu.Remove(iInd) gvwMenu.Rows.Remove(iInd) SetModified End Public Sub btnDelete_Click() Dim iInd As Integer Dim aDelete As New Integer[] 'IF WriteMenu() THEN RETURN $bFreeze = True For iInd = 0 To $aMenu.Max If gvwMenu.Rows[iInd].Selected Then aDelete.Add(iInd) Next For iInd = aDelete.Max DownTo 0 DeleteMenu(aDelete[iInd]) If aDelete[iInd] < $iCurrent Then Dec $iCurrent Next $iCurrent = Min($iCurrent, $aMenu.Max) gvwMenu.Rows.Count = $aMenu.Count gvwMenu.Refresh gvwMenu.UnSelectAll $bFreeze = False SetCurrent($iCurrent) End Private Sub InsertMenuAt(iIndex As String, sName As String, iLevel As Integer) As CMenu Dim hCMenu As CMenu hCMenu = New CMenu If $cName.Exist(sName) Then sName = GetName() hCMenu.Name = sName hCMenu.Translate = True hCMenu.Level = iLevel $cName[sName] = True $aMenu.Add(hCMenu, iIndex) SetModified Inc gvwMenu.Rows.Count gvwMenu.Refresh Return hCMenu End Private Sub InsertMenu(bAfter As Boolean, Optional bSeparator As Boolean) Dim hCMenu As CMenu Dim iIndex As Integer Dim iLevel As Integer If WriteMenu() Then Return iIndex = $iCurrent If iIndex < 0 Then iIndex = $aMenu.Max If bAfter Then Inc iIndex If bAfter Then If iIndex > 0 Then iLevel = $aMenu[iIndex - 1].Level Else If iIndex >= 0 Then iLevel = $aMenu[iIndex].Level Endif If bSeparator And If iLevel < 1 Then iLevel = 1 $bFreeze = True hCMenu = InsertMenuAt(iIndex, GetName(), iLevel) If Not bSeparator Then hCMenu.Caption = hCMenu.Name gvwMenu.UnSelectAll $bFreeze = False SetCurrent(iIndex) txtName.SelectAll txtName.SetFocus End Public Sub btnInsert_Click() InsertMenu(True) End Private Function GetName() As String Dim iCpt As Integer Dim sName As String Do Inc iCpt sName = $hFamily.MenuClass & CStr(iCpt) If Not $cName.Exist(sName) Then Return sName Loop End Public Sub btnRight_Click() Dim iInd As Integer If WriteMenu() Then Return For iInd = 0 To $aMenu.Count - 1 If gvwMenu.Rows[iInd].Selected Then With $aMenu[iInd] .Level = .Level + 1 gvwMenu.Rows[iInd].Refresh SetModified End With Endif Next ReadMenu End Public Sub btnLeft_Click() Dim iInd As Integer If WriteMenu() Then Return For iInd = 0 To $aMenu.Count - 1 If gvwMenu.Rows[iInd].Selected Then With $aMenu[iInd] .Level = Max(.Level - 1, 0) gvwMenu.Rows[iInd].Refresh SetModified End With Endif Next ReadMenu End Private Sub LoadShortcut() Dim iInd As Integer Dim aShortcut As String[] Dim sCar As String If cmbShortcut.Count Then Return aShortcut = ["(None)"] For iInd = Asc("A") To Asc("Z") aShortcut.Add(Chr$(iInd)) Next For iInd = Asc("0") To Asc("9") aShortcut.Add(Chr$(iInd)) Next For iInd = 33 To 126 sCar = Chr$(iInd) If IsDigit(sCar) Or If IsLetter(sCar) Then Continue aShortcut.Add(sCar) Next 'aShortcut.Insert(["+", "-", "*", "/", "(", ")", "[", "]", "{", "}", "@", "=", ".", "!", "\\", "%", "#", "$", "~"].Sort()) aShortcut.Insert(["Backspace", "Del", "Down", "End", "Enter", "Esc", "Home", "Ins", "Left", "Pause", "PgDown", "PgUp", "Return", "Space", "Right", "Up"]) For iInd = 1 To 12 aShortcut.Add("F" & CStr(iInd)) Next cmbShortcut.List = aShortcut End Private Function CheckMenu() As Boolean Dim iInd As Integer Dim iLastLevel As Integer iLastLevel = -1 For iInd = 0 To $aMenu.Max - 1 If $aMenu[iInd].Level - iLastLevel > 1 Then gvwMenu.Rows.UnselectAll gvwMenu.Row = iInd Message.Warning(("This menu is too deep !")) Return True Endif iLastLevel = $aMenu[iInd].Level Next End Public Sub cmbShortcut_Click() WriteMenu End Public Sub chkCtrl_Click() WriteMenu End Public Sub chkAlt_Click() WriteMenu End Public Sub chkShift_Click() WriteMenu End Public Sub txtCaption_Change() WriteMenu End Public Sub btnInsertBefore_Click() InsertMenu(False) End Private Sub SetSelected(aSel As Integer[]) Dim iSel As Integer gvwMenu.Rows.UnselectAll For Each iSel In aSel gvwMenu.Rows[iSel].Selected = True Next End Public Sub btnUp_Click() Dim iInd As Integer Dim iCount As Integer Dim aSel As New Integer[] iCount = $aMenu.Count If iCount <= 1 Then Return 'If $iCurrent = $aMenu.Max Then Return If gvwMenu.Rows[0].Selected Then Return For iInd = 1 To $aMenu.Count - 1 If gvwMenu.Rows[iInd].Selected Then aSel.Add(iInd - 1) Swap $aMenu[iInd], $aMenu[iInd - 1] SetModified End If Next Dec $iCurrent SetCurrent($iCurrent) SetSelected(aSel) gvwMenu.Refresh 'ReadMenu End Public Sub btnDown_Click() Dim iInd As Integer Dim iCount As Integer Dim aSel As New Integer[] iCount = $aMenu.Count If iCount <= 1 Then Return If $iCurrent = $aMenu.Max Then Return If gvwMenu.Rows[iCount - 1].Selected Then Return For iInd = iCount - 1 DownTo 0 If gvwMenu.Rows[iInd].Selected Then aSel.Add(iInd + 1) Swap $aMenu[iInd], $aMenu[iInd + 1] SetModified End If Next Inc $iCurrent SetCurrent($iCurrent) SetSelected(aSel) gvwMenu.Refresh 'ReadMenu End Private Sub UpdateEvent() Dim cSymbol As Collection Dim sName As String Dim hCMenu As CMenu Dim sGroup As String Dim hSymbol As CSymbolInfo Dim hButton As Button Dim hPict As PictureBox panEvent.Children.Clear If $iCurrent < 0 Then Return hCMenu = $aMenu[$iCurrent] If Not hCMenu.Caption Then Return cSymbol = Project.Documentation.GetClassSymbols($hForm.Name) If Not cSymbol Then Return sGroup = hCMenu.Group If Not sGroup Then sGroup = hCMenu.Name hPict = New PictureBox(panEvent) hPict.Resize(panEvent.H, panEvent.H) hPict.Image = Image.Load("img/symbol/event.png") hPict.Stretch = True $hButtonClick = Null For Each sName In Project.Documentation.Classes[$hFamily.MenuClass].Events hSymbol = cSymbol[sGroup & "_" & sName] 'If $bReadOnly Then ' If Not hSymbol Or If hSymbol.Kind <> "m" Then Continue 'Endif hButton = New Button(panEvent) As "btnEvent" hButton.Text = sName hButton.AutoResize = True If sName == "Click" Then $hButtonClick = hButton If hSymbol And If hSymbol.Kind = "m" Then hButton.Picture = Picture["icon:/small/ok"] Next If panEvent.Children.Count = 0 Then Return End Private Sub SetCurrent(iCurrent As Integer) If iCurrent <> $iCurrent Then WriteMenu gvwMenu.Rows.UnselectAll If iCurrent < 0 Or iCurrent >= $aMenu.Count Then $iCurrent = -1 Else Object.Lock(gvwMenu) gvwMenu.Rows[$iCurrent].Selected = False $iCurrent = iCurrent If gvwMenu.Row <> $iCurrent Then gvwMenu.Row = $iCurrent gvwMenu.Rows[$iCurrent].Selected = True gvwMenu[$iCurrent, 0].EnsureVisible Object.Unlock(gvwMenu) Endif ReadMenu UpdateEvent End Public Sub btnPicture_Click() Dim sPict As String sPict = $hFamily.SelectImage("Image", txtPicture.Text) If sPict Then SetPicture(sPict) End Private Sub SetPicture(sPict As String) txtPicture.Text = sPict WriteMenu Catch Message.Error(Error.Text) End Public Sub btnKillPicture_Click() SetPicture("") End Public Sub btnSave_Click() WriteMenu End ' Public Sub lstMenu_MouseDown() ' ' Dim iInd As Integer ' ' If Not (Mouse.Control Or Mouse.Shift) Then ' For iInd = 0 To $aMenu.Max ' gvwMenu[iInd].Selected = False ' Next ' Endif ' ' End Public Sub btnShortcut_Click() chkCtrl.Value = False chkShift.Value = False chkAlt.Value = False cmbShortcut.Index = 0 End ' Public Sub panIcon_Arrange() ' ' btnIcon.H = btnIcon.W ' ' End Private Sub GetMenu(hMenu As CMenu) As String With hMenu Return .Name & "," & .Level & "," & Quote(.Caption) & "," & .Action & "," & .Group & "," & .Visible & "," & .Enabled & "," & .Checked & "," & .Toggle & "," & .Radio & "," & .Translate & "," & .Ctrl & "," & .Shift & "," & .Alt & "," & Quote(.Shortcut) & "," & Quote(.Picture) & "," & Quote(.Tag) End With End Public Sub btnCopy_Click() Dim iInd As Integer Dim sData As String For iInd = 0 To $aMenu.Count - 1 If gvwMenu.Rows[iInd].Selected Then sData &= GetMenu($aMenu[iInd]) & "\n" Endif Next If Not sData Then Return Clipboard.Copy(sData, MMime.MENU) UpdatePaste End Public Sub btnCut_Click() btnCopy_Click btnDelete_Click End Private Sub UpdatePaste() btnPaste.Enabled = Clipboard.Formats.Exist(MMime.MENU) btnPasteBefore.Enabled = btnPaste.Enabled End Public Sub btnPasteBefore_Click() Dim sData As String Dim aMenu As String[] Dim iStart As Integer Dim iLength As Integer Dim hCMenu As CMenu sData = Trim(Clipboard.Paste(MMime.MENU)) If Not sData Then Return gvwMenu.Rows.UnselectAll iStart = $iCurrent If iStart < 0 Then iStart = 0 For Each sData In Split(sData, "\n") aMenu = Split(sData, ",", Chr$(34)) hCMenu = InsertMenuAt(iStart + iLength, aMenu[0], CInt(aMenu[1])) With hCMenu .Caption = aMenu[2] .Action = aMenu[3] .Group = aMenu[4] .Visible = CBool(aMenu[5]) .Enabled = CBool(aMenu[6]) .Checked = CBool(aMenu[7]) .Toggle = CBool(aMenu[8]) .Radio = CBool(aMenu[9]) .Translate = CBool(aMenu[10]) .Ctrl = CBool(aMenu[11]) .Shift = CBool(aMenu[12]) .Alt = CBool(aMenu[13]) .Shortcut = aMenu[14] .Picture = aMenu[15] .Tag = aMenu[16] End With Inc iLength Next SetCurrent(iStart) gvwMenu.Select(iStart, iLength) End Public Sub btnPaste_Click() Inc $iCurrent btnPasteBefore_Click End Public Sub txtSearch_Click() Dim iIndex, iStart As Integer Dim sFind As String = txtSearch.Text If Not sFind Then Return iStart = gvwMenu.Row If iStart < 0 Then iStart = 0 sFind = String.LCase(sFind) iIndex = iStart Do Inc iIndex If iIndex >= $aMenu.Max Then iIndex = 0 If iIndex = iStart Then Break With $aMenu[iIndex] If InStr(String.LCase(.Caption), sFind) Or If InStr(LCase(.Name), sFind) Then SetCurrent(iIndex) Break Endif End With Loop End Public Sub txtSearch_Activate() txtSearch_Click End Private Sub GetMenuColor(hMenu As CMenu) As Integer If Not hMenu.Visible Then Return Color.Merge(Color.TextForeground, Color.TextBackground, 0.8) Else If Not hMenu.Enabled Then Return Color.Merge(Color.TextForeground, Color.TextBackground, 0.5) Else Return Color.TextForeground Endif End Public Sub gvwMenu_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) Dim D As Integer Dim iCol As Integer Dim sText As String Dim hPict As Picture With $aMenu[Row] If .Level = 0 And If Row > 0 Then Paint.FillRect(X, Y, Width, 1, Color.LightForeground) ' Paint.Dash = [1] ' Paint.MoveTo(X, Y) ' Paint.RelLineTo(Width, 0) ' Paint.Background = Color.TextForeground ' Paint.Stroke ' Paint.Dash = Null Endif If Column <> 0 Then Return iCol = GetMenuColor($aMenu[Row]) D = .Level * Desktop.Scale * 4 + Desktop.Scale If .Level Then D += Desktop.Scale X += D Width -= D If .Picture Then Try hPict = $hFamily.GetPicture(.Picture) If hPict Then hPict = hPict.Image.Stretch($iIconSize, $iIconSize).Picture If hPict Then Paint.DrawPicture(hPict, X - $iIconSize - Desktop.Scale / 2, Y + (Height - $iIconSize) / 2) Endif If .Level = 0 Then Paint.Font.Bold = True Paint.Font.Underline = True Endif If .Caption Then sText = .Caption Else If .Level Then sText = " " & .Name & " " If Width > Desktop.Scale * 2 Then Paint.Dash = [1] Paint.MoveTo(X, CInt(Y + Height / 2) + 0.5) Paint.RelLineTo(Width - Desktop.Scale * 2, 0) Paint.Background = Color.LightForeground Paint.LineWidth = 1 Paint.Stroke Paint.Dash = Null Endif X += D Width -= D Paint.Font.Italic = True Paint.FillRect(X, Y + Height / 2, Paint.TextSize(sText).Width, 1, If(Row = gvwMenu.Row, Color.LightBackground, Color.TextBackground)) Else sText = .Name Endif Paint.Background = iCol Paint.DrawText(sText, X, Y, Width, Height, Align.Normal) End With End Public Sub gvwMenu_Data(Row As Integer, Column As Integer) With $aMenu[Row] Select Case Column Case 1 gvwMenu.Data.Text = .GetShortcut() End Select gvwMenu.Data.Foreground = GetMenuColor($aMenu[Row]) If Row = gvwMenu.Row Then gvwMenu.Data.Background = Color.LightBackground If .Level = 0 Then gvwMenu.Data.Font.Bold = True gvwMenu.Data.Font.Underline = True Endif End With End Private Sub SetModified() If Not $bModified Then Me.Title = Me.Title & " [" & ("modified") & "]" $bModified = True Endif End Public Sub chkVisible_Click() WriteMenu End Public Sub chkEnabled_Click() WriteMenu End Public Sub chkToggle_Click() WriteMenu End Public Sub chkRadio_Click() WriteMenu End Public Sub chkChecked_Click() WriteMenu End ' Public Sub Form_KeyPress() ' ' If Key.Code = Key.Up Then ' Try Dec gvwMenu.Row ' Else If Key.Code = Key.Down Then ' Try Inc gvwMenu.Row ' Else If Key.Code = Key.Home And If Key.Control Then ' gvwMenu.Row = 0 ' Else If Key.Code = Key.End And If Key.Control Then ' gvwMenu.Row = $aMenu.Max ' Endif ' ' End Public Sub btnInsertSeparator_Click() InsertMenu(True, True) End Public Sub gvwMenu_Activate() $hButtonClick.Value = True End Public Sub btnEvent_Click() If WriteMenu() Then Return EventName = Last.Text Try OpenEventHandlerFor = $aMenu[$iCurrent].Name If Not Error Then Me.Close() If Not Me.Closed Then OpenEventHandlerFor = "" Endif End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FMenu.form000066400000000000000000000237631411575327000226370ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,127,81) Text = ("Menu editor") Icon = Picture["icon:/small/menu"] Persistent = True Arrangement = Arrange.Vertical { VBox2 Panel MoveScaled(1,1,125,69) Expand = True Arrangement = Arrange.Vertical { tlbMenu ToolBar MoveScaled(1,1,123,4) Key = "menu" { btnInsert ToolButton MoveScaled(0,0,9,4) ToolTip = ("Insert menu") Action = ".insert" AutoResize = True Text = Shortcut(("Insert"), "I") Picture = Picture["icon:/small/add"] } { btnInsertSeparator ToolButton MoveScaled(10,0,16,4) ToolTip = ("Insert separator") Action = ".insert-separator" AutoResize = True Text = Shortcut(("Insert separator"), "s") Picture = Picture["img/16/separator.png"] } { btnInsertBefore ToolButton MoveScaled(27,0,14,4) ToolTip = ("Insert menu before") Action = ".insert-before" AutoResize = True Text = ("Insert before") Picture = Picture["icon:/small/top"] } { btnDelete ToolButton MoveScaled(41,0,10,4) ToolTip = ("Delete menu") Action = ".delete" AutoResize = True Text = Shortcut(("Delete"), "D") Picture = Picture["icon:/small/remove"] } { Separator1 Separator MoveScaled(59,0,1,4) } { btnRight ToolButton MoveScaled(60,0,4,4) ToolTip = ("Indent") Action = ".indent-right" Picture = Picture["icon:/small/indent"] } { btnLeft ToolButton MoveScaled(64,0,4,4) ToolTip = ("Unindent") Action = ".indent-left" Picture = Picture["icon:/small/unindent"] } { btnUp ToolButton MoveScaled(68,0,4,4) ToolTip = ("Move up") Action = ".move-up" Picture = Picture["icon:/small/up"] } { btnDown ToolButton MoveScaled(72,0,4,4) ToolTip = ("Move down") Action = ".move-down" Picture = Picture["icon:/small/down"] } { Separator2 Separator MoveScaled(76,0,1,4) } { btnCut ToolButton MoveScaled(77,0,4,4) ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton MoveScaled(81,0,4,4) ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { btnPaste ToolButton MoveScaled(85,0,4,4) ToolTip = ("Paste") Action = ".paste" Picture = Picture["icon:/small/paste"] } { btnPasteBefore ToolButton MoveScaled(89,0,15,4) ToolTip = ("Paste before") Action = ".paste-before" AutoResize = True Text = ("Paste before") Picture = Picture["icon:/small/paste"] } { txtSearch ButtonBox MoveScaled(107,0,15,4) Expand = True Action = ".search" Picture = Picture["icon:/small/find"] } } { Separator3 Separator MoveScaled(12,6,16,0) } { Panel1 HBox MoveScaled(1,7,123,61) Expand = True { gvwMenu GridView MoveScaled(0,0,33,39) Expand = True Border = False Mode = Select.Multiple Grid = False Padding = 0 } { Separator5 Separator MoveScaled(34,11,0,21) } { VBox3 VBox MoveScaled(41,1,63,59) Spacing = True Margin = True { lblCreate Label MoveScaled(3,2,37,4) Font = Font["Italic"] AutoResize = True Text = ("Click on Insert to add a new menu.") Alignment = Align.TopNormal } { panMenu HPanel MoveScaled(2,1,59,56) Expand = True Spacing = True { Label1 Label MoveScaled(0,0,13,4) #Translate = False Text = "Name" } { txtName TextBox MoveScaled(13,0,35,4) Expand = True } { Label6 Label MoveScaled(0,4,13,4) #Translate = False Text = "Group" } { txtGroup TextBox MoveScaled(13,4,35,4) Expand = True } { Label2 Label MoveScaled(0,8,13,4) #Translate = False Text = "Caption" } { txtCaption ButtonBox MoveScaled(13,8,35,4) Expand = True Button = False ClearButton = True } { Label8 Label MoveScaled(0,12,13,4) #Translate = False Text = "Action" } { txtAction TextBox MoveScaled(13,12,35,4) Expand = True } { Label7 Label MoveScaled(0,16,13,4) #Translate = False Text = "Tag" } { txtTag TextBox MoveScaled(13,16,35,4) Expand = True } { Label3 Label MoveScaled(0,21,13,4) #Translate = False Text = "Shortcut" } { HBox3 HBox MoveScaled(14,21,44,4) Expand = True { chkCtrl CheckBox MoveScaled(0,0,10,4) #Translate = False AutoResize = True Text = "CTRL" } { chkShift CheckBox MoveScaled(10,0,11,4) #Translate = False AutoResize = True Text = "SHIFT" } { chkAlt CheckBox MoveScaled(21,0,9,4) #Translate = False AutoResize = True Text = "ALT" } { cmbShortcut ComboBox MoveScaled(30,0,8,4) Expand = True ReadOnly = True } { btnShortcut Button MoveScaled(38,0,4,4) Picture = Picture["icon:/small/clear"] } } { lblPicture Label MoveScaled(0,26,13,4) #Translate = False Text = "Picture" } { HBox4 HBox MoveScaled(14,26,37,4) Expand = True Spacing = True { txtPicture TextBox MoveScaled(0,0,27,4) Expand = True ReadOnly = True } { btnPicture Button MoveScaled(28,0,4,4) Picture = Picture["icon:/small/open"] } { btnKillPicture Button MoveScaled(33,0,4,4) Picture = Picture["icon:/small/clear"] } } { Label4 Label MoveScaled(0,31,13,4) #Translate = False Text = "Visible" } { chkVisible CheckBox MoveScaled(14,31,4,4) #Translate = False Expand = True } { Label9 Label MoveScaled(0,35,13,4) #Translate = False Text = "Enabled" } { chkEnabled CheckBox MoveScaled(14,35,4,4) #Translate = False Expand = True } { Label10 Label MoveScaled(0,39,13,4) #Translate = False Text = "Toggle" } { chkToggle CheckBox MoveScaled(14,39,4,4) #Translate = False Expand = True } { Label13 Label MoveScaled(0,43,13,4) #Translate = False Text = "Radio" } { chkRadio CheckBox MoveScaled(14,43,4,4) #Translate = False Expand = True } { Label11 Label MoveScaled(0,47,13,4) #Translate = False Text = "Checked" } { chkChecked CheckBox MoveScaled(14,47,4,4) #Translate = False Expand = True } { Label12 Label MoveScaled(0,51,13,4) #Translate = False Text = "Translate" } { chkTranslate CheckBox MoveScaled(14,51,4,4) #Translate = False Expand = True } } } } } { Separator6 Separator MoveScaled(1,71,16,0) } { HBox2 HBox MoveScaled(1,74,114,6) Spacing = True Margin = True { panEvent Panel MoveScaled(4,0,37,4) Expand = True Arrangement = Arrange.Horizontal Spacing = True } { btnOK Button MoveScaled(55,0,16,4) Text = ("OK") } { btnCancel Button MoveScaled(72,0,16,4) Text = ("Cancel") } } } # Gambas Action File 3.0 { Actions { Action copy Text = "Copy" Picture = "icon:/small/copy" } { Action cut Text = "Cut" Picture = "icon:/small/cut" } { Action delete Text = "Delete" Picture = "icon:/small/remove" } { Action indent-left Text = "Unindent" Picture = "icon:/small/unindent" } { Action indent-right Text = "Indent" Picture = "icon:/small/indent" } { Action insert Text = "Insert" Picture = "icon:/small/add" } { Action insert-before Text = "Insert before" Picture = "icon:/small/top" } { Action insert-separator Text = "Insert separator" Picture = "img/16/separator.png" } { Action move-down Text = "Move down" Picture = "icon:/small/down" } { Action move-up Text = "Move up" Picture = "icon:/small/up" } { Action paste Text = "Paste" Picture = "icon:/small/paste" } { Action paste-before Text = "Paste before" Picture = "icon:/small/paste" } { Action search Text = "" Picture = "icon:/small/find" } } { Toolbars { Toolbar menu Text = "" List = "insert,insert-separator,insert-before,delete,indent-right,indent-left,move-up,move-down,cut,copy,paste,paste-before,search" Default = "insert,insert-separator,insert-before,delete,|,indent-right,indent-left,move-up,move-down,|,cut,copy,paste,paste-before,search" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FProperty.class000066400000000000000000000700641411575327000237150ustar00rootroot00000000000000' Gambas class file Private $iBackground As Integer Private $cIndex As New Collection Private $bMany As Boolean Private $hObject As CControl Private $hForm As FForm Private $hFamily As CFamily Private $iLast As Integer Private $sLast As String Private $sFocus As String 'Private $sFocusForm As String Private $sClass As String Private $sType As String Private $sOption As String Private $hEditor As Object Private $sOldVal As String 'Private $bFreeze As Boolean Private $bButton As Boolean Private $bIgnoreHide As Boolean Private $bIgnoreCancel As Boolean Private $bSort As Boolean Private $iBgDefault As Integer Private $iBgSet As Integer Private $iBgModified As Integer Static Private $aFieldUseDelete As String[] = ["Font", "Picture", "String[]", "Path", "Color", "Field", "Fields", "Field[]", "Image", "Animation", "WebImage", "SvgImage", "ReportCoord", "ReportPadding", "ReportMargin", "ReportBorder", "ReportBoxShadow", "ReportBrush", "Table", "WebCoord", "WebFont"] Private Const PADDING As Integer = 6 Private $cInitialValue As Collection Public Sub _new() Settings.Read(Me) grdProperty.Columns.Count = 2 grdProperty.ScrollBar = Scroll.Vertical grdProperty.Columns.Resizable = True $iBgDefault = Color.TextBackground $iBgSet = Color.Merge(Color.TextBackground, Color.LightForeground, 0.25) $iBgModified = Color.Merge(Color.TextBackground, Color.LightBackground, 0.25) End Public Sub Form_Open() $iBackground = grdProperty.Background Settings.Read(spnHelp) ReadConfig End Public Sub Form_Close() Settings.Write(Me) Settings.Write(spnHelp) End Public Sub Form_Resize() Dim iWidth As Integer ' ' lblMessage.Move(0, 0, ME.ClientW) ' ' grdProperty.Move(0, 0, ME.ClientWidth, ME.ClientHeight) ' ' IF grdProperty.Columns.Count < 2 THEN RETURN ' iWidth = Min(128, grdProperty.ClientWidth \ 2) grdProperty.Columns[0].Width = iWidth grdProperty.Columns[1].Width = grdProperty.ClientWidth - iWidth - 4 ' 'grdProperty.Columns.Width = 100 'ME.ClientWidth / 4 ' MoveProperty 'CATCH $$ Non déréférencement en cas d'erreur End Public Sub RefreshAll() Dim cSelection As Collection Dim hCtrl As CControl Dim sClass As String Dim bDiff As Boolean Dim aProp As String[] Dim hProp As CPropertyInfo Dim iRow As Integer Dim sProp As String Dim sVal As String Dim iInd As Integer Dim iBg As Integer ' DIM aColor AS NEW Integer[] ' DIM sClassColor AS String ' DIM hClass AS CClassInfo Balloon.Hide(grdProperty) Try $hForm = Project.ActiveForm If Error Or If Not $hForm Then HideAll Return Endif $hFamily = $hForm.GetFamily() 'IF NOT $hForm THEN RETURN 'GOTO _HIDE Try cSelection = $hForm.Selection If Not cSelection Then Return $cIndex.Clear $bMany = False HideProperty $hObject = Null If Not cSelection Then Goto _HIDE If cSelection.Count = 0 Then cSelection = New Collection cSelection.Add($hForm.Control[$hForm.Name], $hForm.Name) Endif $bMany = cSelection.Count > 1 For Each hCtrl In cSelection If sClass = "" Then $hObject = hCtrl sClass = hCtrl.Kind Else If sClass <> hCtrl.Kind Then bDiff = True Break Endif Next If bDiff Then sClass = $hFamily.ControlClass UpdateLabel $sClass = sClass 'If Not $bDisableIntegratedHelp Then MHelp.InitWebViewWith(GetWebView(), MHelp.TYPE_CLASS, sClass,, "noimage") 'Endif 'PRINT "Kind = "; sClass 'cProp = CControl.PropertiesInOrder[sClass] Try aProp = Project.Documentation.Classes[sClass].PropertyList If Not aProp Then Error "gambas3: cannot get property list of "; sClass aProp = New String[] Else ' sClassColor = sClass ' WHILE sClassColor ' hClass = CComponent.Classes[sClassColor] ' aColor.Add(hClass.PropertyList.Count, 0) ' sClassColor = hClass.ParentComponent &/ hClass.Parent ' WEND Endif grdProperty.Rows.Count = aProp.Count + 2 grdProperty.Clear grdProperty.Rows.Height = grdProperty.Font.Height + 6 grdProperty.Columns.Count = 2 grdProperty[iRow, 0].Text = "Class" grdProperty[iRow, 1].Text = $hObject.Kind grdProperty[iRow, 0].Padding = PADDING Inc iRow grdProperty[iRow, 0].Text = "Name" If $bMany Then grdProperty[iRow, 1].Text = "" Else grdProperty[iRow, 1].Text = $hObject.Name Endif grdProperty[iRow, 0].Padding = PADDING Inc iRow If $bSort Then aProp = aProp.Copy().Sort() iInd = aProp.Find(CPropertyInfo.EVENT_NAME) If iInd >= 0 Then aProp.Remove(iInd) aProp.Add(CPropertyInfo.EVENT_NAME, 0) Endif Endif $cInitialValue = New Collection For Each sProp In aProp hProp = Project.Documentation.Classes[sClass].GetProperties()[sProp] If hProp.Hidden Then Continue $cIndex[sProp] = iRow grdProperty[iRow, 0].Text = sProp grdProperty[iRow, 0].Padding = PADDING 'If sProp = "Filter" Then Stop sVal = GetProperty(sProp) $cInitialValue[sProp] = sVal 'grdProperty[iRow, 0].Font = grdProperty.Font grdProperty[iRow, 0].Alignment = Align.Normal grdProperty[iRow, 1].Alignment = Align.TopNormal If CControl.WasDefaultValue Then iBg = $iBgDefault grdProperty[iRow, 0].Font.Bold = False Else iBg = $iBgSet grdProperty[iRow, 0].Font.Bold = True Endif grdProperty[iRow, 0].Background = iBg grdProperty[iRow, 1].Background = iBg grdProperty[iRow, 1].Text = sVal 'grdProperty[iRow, 0].Padding = 4 ' Inc iRow Next ' Can be lesser than predicted, as some properties may be hidden grdProperty.Rows.Count = iRow 'grdProperty.Rows.Count = iRow ' iRow = 3 ' WHILE aColor.Count ' FOR iRow = iRow TO aColor[0] + 2 ' grdProperty[iRow, 0]. ' NEXT ' WEND ' FOR iRow = 0 TO grdProperty.Rows.Count - 1 ' grdProperty[iRow, 0].Font = grdProperty.Font ' grdProperty[iRow, 0].Font.Bold = TRUE ' grdProperty[iRow, 0].Alignment = Align.TopNormal ' grdProperty[iRow, 1].Alignment = Align.TopNormal ' NEXT Form_Resize panProperty.Show sepProperty.Show 'lblMessage.Hide 'lblMessage.Ignore = TRUE grdProperty.Show lblName.Show 'VSplit1.Show If Not $bMany Then FFormStack.SelectCurrent Endif 'If btnLock.Value Then If $sFocus Then iRow = FindProperty($sFocus) If iRow >= 0 Then If btnLock.Value Then grdProperty[iRow, 0].Picture = Picture["icon:/small/lock"] ShowProperty Endif Endif Return _HIDE: HideAll End Public Sub HideAll() HideProperty grdProperty.Hide lblName.Hide panProperty.Hide sepProperty.Hide 'lblMessage.Show $hForm = Null $hFamily = Null End Public Sub EditProperty(sProp As String) If Not $cIndex.Exist(sProp) Then Return grdProperty.Row = $cIndex[sProp] ShowProperty If $bButton Then txtProperty_Click End Public Sub RefreshOne(hCtrl As CControl, sProp As String) Dim iRow As Integer Dim iBg As Integer Dim sVal As String If Not $bMany Then If $hObject <> hCtrl Then Return Endif If sProp = "Name" Then If $bMany Then Return grdProperty[1, 1].Text = $hObject.Name UpdateLabel Else If Not $cIndex.Exist(sProp) Then Return iRow = $cIndex[sProp] sVal = GetProperty(sProp) grdProperty[iRow, 1].Text = sVal If sVal = $cInitialValue[sProp] Then iBg = If(CControl.WasDefaultValue, $iBgDefault, $iBgSet) grdProperty[iRow, 0].Font.Bold = True Else iBg = $iBgModified grdProperty[iRow, 0].Font.Bold = True Endif grdProperty[iRow, 0].Background = iBg grdProperty[iRow, 1].Background = iBg Endif If sProp = $sLast Then CancelProperty Endif End Public Function SaveProperty() As Boolean Dim sVal As String Dim vVal As Variant Dim hCtrl As CControl Dim sMsg As String Dim sOldVal As String If Not $hForm Or If Not Object.IsValid($hForm) Then Return If $hForm.ReadOnly Or If $hForm.DiffMode Then Return If IsNull($hEditor) Then Return False sVal = $hEditor.Text If sVal = $sOldVal Then Return False sOldVal = sVal Select $sType Case "Name" If Not sVal Then Goto _CANCEL If CControl.CheckName(sVal) Then sMsg = ("Forbidden characters in control name.") Goto _CANCEL Endif If $hObject.Rename(sVal) Then sMsg = ("This name is already in use.") Goto _CANCEL Endif RefreshOne($hObject, "Name") Return False Case "Group" If CControl.CheckName(sVal) Then sMsg = ("Forbidden characters in control group.") Goto _CANCEL Endif vVal = sVal Case "i", "l", "b", "Range", "Position", "Dimension" Try vVal = CInt(Val(sVal)) If Error Then Goto _BAD Case "f" Try vVal = CFloat(sVal) If Error Then Goto _BAD Case "d" If Not IsDate(sVal) Then Goto _BAD vVal = CDate(Val(sVal)) Case "Color" If Not IsNull(Val(sVal)) Then vVal = Val(sVal) Else vVal = sVal Endif Case "s", "Font", "Picture", "Constant", "List", "Path", "Image", "Animation", "WebImage", "SvgImage", "ReportCoord", "ReportPadding", "ReportMargin", "ReportBoxShadow", "ReportBorder", "ReportBrush", "Field", "Menu", "Table", "WebCoord", "WebFont" vVal = sVal Case "String[]", "Fields", "Field[]" If Not sVal Then vVal = Null Else Try vVal = Split(sVal, "\n") If Error Then Goto _BAD Endif Case "Angle" vVal = $hEditor.Value Case Else ' Object vVal = sVal End Select $bIgnoreCancel = True CControl.LastError = "" If $bMany Then For Each hCtrl In $hForm.Selection If hCtrl.SetProperty($sLast, vVal) Then Goto _BAD Next Else If $hObject.SetProperty($sLast, vVal) Then Goto _BAD Endif $bIgnoreCancel = False $sOldVal = sOldVal 'DEBUG "$sOldVal =";; $sOldVal Return _BAD: sMsg = ("Incorrect property value.") If CControl.LastError Then sMsg &= "\n\n" & CControl.LastError $bIgnoreCancel = False _CANCEL: CancelProperty $hEditor.SetFocus If sMsg Then Balloon.Warning(sMsg, grdProperty, panEditor.X - grdProperty.X + panEditor.W / 2, panEditor.Y - grdProperty.Y + panEditor.H / 2) Return True End Public Sub HideProperty() As Boolean Dim hCtrl As Control If $bIgnoreHide Then Return If $sLast Then If SaveProperty() Then Return True For Each hCtrl In panEditor.Children hCtrl.Hide Next panEditor.Hide ' If btnLock.Value Then ' $sFocus = $sLast ' Else ' $sFocus = "" ' Endif $sLast = "" $iLast = -1 $hEditor = Null Endif End Private Sub MoveProperty() If IsNull($hEditor) Then Return With grdProperty[grdProperty.Row, 1] panEditor.Move(grdProperty.X + .X - grdProperty.ScrollX, grdProperty.Y + .Y - grdProperty.ScrollY, .Width, .Height) panEditor.Raise End With End Private Sub CancelProperty() If $bIgnoreCancel Then Return If IsNull($hEditor) Then Return $sOldVal = grdProperty[$iLast, 1].Text 'DEBUG "$sOldVal =";; $sOldVal If $hEditor.Text <> $sOldVal Then If $hEditor Is SpinBox Or If $hEditor Is AngleBox Or If $hEditor Is CoordBox Then Try $hEditor.Value = $sOldVal Else $hEditor.Text = $sOldVal Endif Endif End Public Sub FocusOn(sFocus As String) ShowProperty(sFocus) End Private Sub FindProperty(sProp As String) As Integer Dim iRow As Integer If sProp Then For iRow = 0 To grdProperty.Rows.Count - 1 If sProp = grdProperty[iRow, 0].Text Then Return iRow Endif Next Endif Return -1 End Private Sub InitComboWith(aList As String[], Optional sVoid As String) If Not IsMissing(sVoid) Then aList.Add(sVoid, 0) cmbProperty.List = aList ' Dim hMenu As Menu ' Dim sVal As String ' ' mnuProperty.Children.Clear ' ' If sVoid Then ' hMenu = New Menu(mnuProperty) As "mnuProperty" ' hMenu.Text = sVoid ' Endif ' For Each sVal In aList ' hMenu = New Menu(mnuProperty) As "mnuProperty" ' hMenu.Text = sVal ' Next End Private Sub ShowProperty(Optional sFocus As String) Dim hProp As CPropertyInfo Dim sType As String Dim sOption As String Dim bButton As Boolean Dim sProp As String Dim aArg As String[] Dim hEditor As Object Dim hSymbol As CSymbolInfo Dim sHelp, sHelpType, sHelpLcType As String Dim sHTML As String Dim iRow As Integer Dim bWarning As Boolean If Project.Running Then Return If Not $hForm Then Return If $hForm.ReadOnly Or If $hForm.DiffMode Then Return If $sFocus Then sFocus = $sFocus If sFocus Then iRow = FindProperty(sFocus) If iRow >= 0 Then grdProperty.Row = iRow Endif If grdProperty.Row < 0 Then Return If $sLast Then HideProperty() $bButton = False If grdProperty.Row = 0 Then Return bWarning = True If grdProperty.Row = 1 Then If $hObject.Name = $hForm.Name Then Return If $bMany Then Return sProp = "Name" sType = "Name" sHelp = ("The name of the control.") sHelpType = "String" sHelpLcType = "string" bWarning = False Else If grdProperty.Row = 2 Then If $hObject.Name = $hForm.Name Then Return sProp = CPropertyInfo.EVENT_NAME sType = "Group" sHelp = ("The event group that the control belongs to.") sHelpType = "String" sHelpLcType = "string" Else sProp = grdProperty[grdProperty.Row, 0].Text hProp = Project.Documentation.Classes[$hObject.Kind].GetProperties()[sProp] sType = hProp.Type sOption = hProp.Argument 'If Not $bDisableIntegratedHelp Then If hProp.Name = CPropertyInfo.SCALE_NAME Then sHelp = ("If the form and controls dimensions must follow the size of the default font.") sHelpType = "Boolean" sHelpLcType = "boolean" Else If hProp.Name = CPropertyInfo.PUBLIC_NAME Then sHelp = ("If the control is public.") sHelpType = "Boolean" sHelpLcType = "boolean" Else If hProp.Name = CPropertyInfo.TRANSLATE_NAME Then sHelp = ("If the Text property must be translated.") sHelpType = "Boolean" sHelpLcType = "boolean" Else If hProp.Virtual Then sHelp = "?" Else hSymbol = Project.Documentation.Classes[$hObject.Kind].Symbols[hProp.Name] MHelp.InitWebViewWith(GetWebView(), MHelp.TYPE_SYMBOL, hSymbol.Name, hSymbol.Class, If(GetWebView(), "notitle", "")) Endif 'Endif Endif If sHelp Then If sHelp <> "?" Then sHTML = MHelp.LoadCustom("property-help.html") sHTML = Replace(sHTML, "$(class)", "Control") sHTML = Replace(sHTML, "$(name)", grdProperty[grdProperty.Row, 0].Text) sHTML = Replace(sHTML, "$(help)", Html(sHelp)) sHTML = Replace(sHTML, "$(type)", sHelpType) sHTML = Replace(sHTML, "$(lctype)", sHelpLcType) If bWarning Then sHTML = Replace(sHTML, "$(warning)", ("This property is virtual: it is only implemented in the IDE, and has no existence at runtime.")) Else sHTML = Replace(sHTML, "$(warning)", "") Endif Endif MHelp.InitWebViewWithHtml(GetWebView(), sHTML) Endif $sLast = sProp $iLast = grdProperty.Row $sType = sType $sOption = sOption ' We assign $hEditor latter, so that SaveProperty can be called without any effect until the editor is initialized. hEditor = txtProperty txtProperty.ReadOnly = False Select Case $sType Case "i", "l", "f", "d", "v", "Name", "Group" ', "EventName" Case "s" If hProp.ConstantList Then hEditor = cmbProperty cmbProperty.ReadOnly = False InitComboWith(hProp.GetConstantList()) Else bButton = True Endif Case "String[]", "Fields", "Field[]", "ReportPadding", "ReportMargin", "ReportBoxShadow", "ReportBorder", "ReportBrush" bButton = True txtProperty.ReadOnly = True Case "Table" If GetConnection() Then txtProperty.ReadOnly = True bButton = True Endif Case "Field" If GetConnection() And If GetTable($sOption) Then txtProperty.ReadOnly = True bButton = True Endif Case "Constant" If hProp.ConstantClass Then hEditor = cmbProperty cmbProperty.ReadOnly = True InitComboWith(hProp.GetConstantList()) Endif Case "b" hEditor = cmbProperty cmbProperty.ReadOnly = True InitComboWith(["False", "True"]) Case "Font", "Picture", "Path", "Color", "Image", "Animation", "WebImage", "SvgImage", "ReportPadding", "ReportMargin", "ReportBoxShadow", "ReportBorder", "ReportBrush", "WebFont" bButton = True txtProperty.ReadOnly = True Case "Range" hEditor = spnProperty aArg = Split(sOption, ";") Try spnProperty.MinValue = aArg[0] Try spnProperty.MaxValue = aArg[1] spnProperty.Step = 1 'spnProperty.Suffix = "" If aArg.Count > 2 Then Try spnProperty.Step = aArg[2] If aArg.Count > 3 Then 'spnProperty.Suffix = " " & aArg[3] Endif Endif Case "Position" hEditor = spnProperty spnProperty.MinValue = -4096 spnProperty.MaxValue = 4096 spnProperty.Step = Desktop.Scale 'spnProperty.Suffix = "" Case "Dimension" hEditor = spnProperty spnProperty.MinValue = 1 spnProperty.MaxValue = 4096 spnProperty.Step = Desktop.Scale 'spnProperty.Suffix = "" Case "Connection" hEditor = cmbProperty InitComboWith(MConnection.GetConnections(), "") Case "Menu" hEditor = cmbProperty InitComboWith($hForm.GetMenus(), "") Case "ReportCoord" hEditor = crdProperty CFamilyReport.InitCoord(crdProperty) Case "WebCoord" hEditor = crdProperty CFamilyWebForm.InitCoord(crdProperty) Case "Angle" hEditor = txtAngle Case Else 'object hEditor = cmbProperty InitComboWith($hForm.FindControlFromType($sType).Sort(gb.Natural + gb.IgnoreCase), "(" & ("None") & ")") End Select $hEditor = hEditor CancelProperty '$hEditor.Border = Border.None $bButton = bButton MoveProperty $hEditor.Show panEditor.Show txtProperty.Button = bButton 'btnProperty.Raise If $hEditor = txtProperty Then txtProperty.Editor.SetFocus txtProperty.Editor.SelectAll Else If $hEditor = spnProperty Then spnProperty.SetFocus spnProperty.SelectAll Else $hEditor.SetFocus Endif End ' Public Sub cmbProperty_Activate() ' ' SaveProperty ' ' End Public Sub cmbProperty_Click() 'cmbProperty2.Text = Trim(Last.Text) SaveProperty End Public Sub txtProperty_Activate() SaveProperty End Public Sub txtProperty_Clear() txtProperty.Text = $hObject.GetDefaultValueString($sLast) SaveProperty End Public Sub txtProperty_Change() If $sLast = "Text" Then '$bFreeze = True SaveProperty '$bFreeze = False Endif End Public Sub txtProperty_KeyPress() If txtProperty.ReadOnly Then If $aFieldUseDelete.Exist($sType) Then If Key.Code = Key.Delete Or Key.Code = Key.Backspace Then txtProperty.Text = "" SaveProperty Stop Event Endif Endif Endif End Private Function GetFont(sFont As String) As String Dim bDefault As Boolean Dim aFont As String[] Dim iInd As Integer bDefault = Font[sFont].Name = Application.Font.Name If bDefault Then aFont = Split(sFont, ",") For iInd = 0 To aFont.Max If aFont[iInd] = Application.Font.Name Then aFont[iInd] = "" Endif Next sFont = aFont.Join(",") While Left$(sFont) = "," sFont = Mid$(sFont, 2) Wend While Right$(sFont) = "," sFont = Left$(sFont, -1) Wend Endif Return sFont End Private Sub GetConnection() As String Dim hCtrl As CControl Dim sConn As String Dim sResult As String For Each hCtrl In $hForm.Selection sConn = hCtrl.GetConnection() If Not sResult Then sResult = sConn Else If sConn <> sResult Then Return Endif Next Return sResult End Private Sub GetTable(Optional sField As String) As String Dim hCtrl As CControl Dim sTable As String Dim sResult As String For Each hCtrl In $hForm.Selection sTable = hCtrl.GetTable(sField) If Not sResult Then sResult = sTable Else If sTable <> sResult Then Return Endif Next Return sResult End Public Sub txtProperty_Click() Dim sDest As String Dim sFont As String Dim sColor As String Dim sConnection As String Dim sTable As String $bIgnoreHide = True Select $sType Case "s" SaveProperty If FText.Run($sOldVal, $sLast) Then Goto _EXIT $hEditor.Text = FText.Value Case "String[]" If FList.Run(Split($sOldVal, "\n")) Then Goto _EXIT $hEditor.Text = FList.Value.Join("\n") Case "Font" 'IF $sOldVal THEN sFont = $sOldVal 'ELSE ' sFont = $hForm.Font.ToString() 'ENDIF sFont = FFontChooser.Run(sFont, $sOption = "Fixed") If Not sFont Then Goto _EXIT $hEditor.Text = GetFont(sFont) Case "WebFont" sFont = FWebFontChooser.Run($sOldVal) If Not sFont Then Goto _EXIT $hEditor.Text = sFont Case "Color" If $sOldVal Then sColor = $sOldVal Else sColor = "" Endif If FColorChooser.Run(sColor, True) Then Goto _EXIT $hEditor.Text = FColorChooser.ColorName Case "Picture", "Image", "Animation", "WebImage", "SvgImage" sDest = $hFamily.SelectImage($sType, $sOldVal) If Not sDest Then Goto _EXIT $hEditor.Text = sDest ' Case "WebImage" ' ' sDest = FSelectIcon.Run($sOldVal, FSelectIcon.SELECT_IMAGE + FSelectIcon.SELECT_SVGIMAGE + FSelectIcon.SELECT_PUBLIC) ' If Not sDest Then Goto _EXIT ' $hEditor.Text = sDest Case "Path" If $sClass = "MovieBox" Then sDest = FSelectIcon.Run($sOldVal, FSelectIcon.SELECT_IMAGE) 'GetPicture() If Not sDest Then Goto _EXIT $hEditor.Text = sDest Else Dialog.Path = $sOldVal Dialog.Title = ("Select a file") If Dialog.OpenFile() Then Goto _EXIT $hEditor.Text = Dialog.Path Endif Case "Table" sConnection = GetConnection() If sConnection Then FTableChooser.Table = $sOldVal If FTableChooser.Run(sConnection) Then Goto _EXIT $hEditor.Text = FTableChooser.Table Endif Case "Field" sConnection = GetConnection() sTable = GetTable($sOption) If sConnection And If sTable Then If FFieldChooser.Run(sConnection, sTable, False, $sOldVal) Then Goto _EXIT $hEditor.Text = FFieldChooser.Value Endif Case "Fields", "Field[]" sConnection = GetConnection() sTable = GetTable($sOption) If sConnection And If sTable Then If FFieldChooser.Run(sConnection, sTable, True, $sOldVal) Then Goto _EXIT $hEditor.Text = FFieldChooser.Value Else If FText.Run($sOldVal, $sLast) Then Goto _EXIT $hEditor.Text = FText.Value Endif ' Case "ReportCoord" ' ' If FReportCoordChooser.Run($sOldVal) Then Goto _EXIT ' $hEditor.Text = FReportCoordChooser.Coord Case "ReportBrush" If FReportBrushChooser.Run($sOldVal) Then Goto _EXIT $hEditor.Text = FReportBrushChooser.Value Case "ReportPadding" If FReportPaddingChooser.Run($sOldVal) Then Goto _EXIT $hEditor.Text = FReportPaddingChooser.Value Case "ReportMargin" If FReportPaddingChooser.Run($sOldVal) Then Goto _EXIT $hEditor.Text = FReportPaddingChooser.Value Case "ReportBorder" If FReportBorderChooser.Run($sOldVal) Then Goto _EXIT $hEditor.Text = FReportBorderChooser.Value Case "ReportBoxShadow" If FReportBoxShadowChooser.Run($sOldVal) Then Goto _EXIT $hEditor.Text = FReportBoxShadowChooser.Value End Select SaveProperty _EXIT: $bIgnoreHide = False End Private Sub NextComboProperty((bPrevious) As Boolean) ' Dim iInd As Integer ' ' For iInd = 0 To mnuProperty.Children.Count - 1 ' If Trim(mnuProperty.Children[iInd].Text) = cmbProperty2.Text Then Break ' Next ' If bPrevious Then ' Dec iInd ' If iInd < 0 Then iInd = mnuProperty.Children.Count - 1 ' Else ' Inc iInd ' If iInd >= mnuProperty.Children.Count Then iInd = 0 ' Endif ' mnuProperty.Children[iInd].Value = True If cmbProperty.Index = cmbProperty.Count - 1 cmbProperty.Index = 0 Else Inc cmbProperty.Index Endif End Public Sub grdProperty_DblClick() If cmbProperty.Visible Then NextComboProperty(False) Else If $bButton Then txtProperty_Click Endif End Public Function GetProperty(sProp As String) As String Dim sVal As String Dim hCtrl As CControl Dim bFirst As Boolean If Not $bMany Then Return $hObject.GetPropertyString(sProp) For Each hCtrl In $hForm.Selection If bFirst Then If sVal <> hCtrl.GetPropertyString(sProp) Then CControl.WasDefaultValue = False Return "" Endif Else sVal = hCtrl.GetPropertyString(sProp) bFirst = True Endif Next CControl.WasDefaultValue = True Return sVal End ' PUBLIC SUB grdProperty_MouseDown(X AS Integer, Y AS Integer, Button AS Integer) ' ' grdProperty.Raise ' ' END ' ' Public Sub grdProperty_MouseUp() 'DEBUG grdProperty[grdProperty.Row, 0].Text btnLock.Value = False ShowProperty End Public Sub grdProperty_Scroll() MoveProperty End Public Sub txtProperty_LostFocus() If SaveProperty() Then Return 'HideProperty End Public Sub ReadConfig() Dim H As Integer btnSortProperties.Value = Settings["/SortProperties", True] Project.SetNormalFont(grdProperty) webHelp.Zoom = Settings["/Help/Zoom", 80] / 100 txtProperty.Font = grdProperty.Font cmbProperty.Font = grdProperty.Font spnProperty.Font = grdProperty.Font panProperty.Font = grdProperty.Font crdProperty.Font = grdProperty.Font Project.SetSmallFont(lblHelp) H = FMain.GetTabBarHeight() lblHelp.Parent.H = H btnCloseHelp.Resize(H, H) MoveProperty RefreshAll End ' PUBLIC SUB grdProperty_MouseMove() ' ' IF grdProperty.Find(Mouse.X, Mouse.Y) THEN RETURN ' ' DEBUG grdProperty.Item.Row;; grdProperty.Item.Column ' ' END Public Sub spnProperty_Change() SaveProperty End Public Sub txtAngle_Change() SaveProperty End Public Sub RefreshReadOnly() HideProperty End Private Sub UpdateLabel() Dim hObject As CControl = $hForm.Master If Not hObject Then hObject = $hForm.Control[$hForm.Name] lblName.Text = "" & hObject.Name & " " & hObject.Kind End Public Sub spnHelp_Resize() HideProperty End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then HideProperty Endif End ' Public Sub panProperty_Arrange() ' ' lblName.Move(4, (panProperty.H - lblName.H) \ 2, panProperty.ClientW - btnLock.W, panProperty.ClientH) ' btnLock.Move(panProperty.W - btnLock.W, (panProperty.H - btnLock.H) \ 2) ' ' End Public Sub btnLock_Click() Dim iRow As Integer If btnLock.Value Then $sFocus = $sLast iRow = FindProperty($sFocus) If iRow >= 0 Then grdProperty[iRow, 0].Picture = Picture["icon:/small/lock"] Else btnLock.Value = False Endif Else iRow = FindProperty($sFocus) If iRow >= 0 Then grdProperty[iRow, 0].Picture = Null $sFocus = "" Endif End ' Public Sub cmbProperty_KeyPress() ' ' If Key.Code = Key.Delete Or Key.Code = Key.Backspace Then ' ' If mnuProperty.Children[0].Text = " " Then ' mnuProperty.Children[0].Value = True ' SaveProperty ' Endif ' ' Endif ' ' End ' Public Sub cmbProperty2_MouseWheel() ' ' NextComboProperty(Mouse.Delta > 0) ' ' End Public Sub Form_Activate() Project.SetCurrentPopup(Null) End Public Sub IsHelpHidden() As Boolean Return spnHelp.Hidden End Public Sub btnCloseHelp_Click() spnHelp.Hidden = True End Public Sub ShowHelp(Optional bShow As Boolean = True) spnHelp.Hidden = Not bShow End Public Sub spnHelp_Show() ShowProperty FMain.UpdatePropertyButtons End Public Sub spnHelp_Hide() FMain.UpdatePropertyButtons End Private Sub GetWebView() As HelpView If spnHelp.Hidden Then Return Return webHelp End Public Sub btnSortProperties_Click() $bSort = btnSortProperties.Value Settings["/SortProperties"] = $bSort RefreshAll End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FProperty.form000066400000000000000000000050431411575327000235460ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,62,82) Text = ("Properties") Persistent = True Arrangement = Arrange.Vertical { mnuProperty Menu { Menu1 Menu } } { panProperty HBox MoveScaled(4,1,54,4) Indent = True { lblName TextLabel MoveScaled(0,0,28,4) Expand = True Alignment = Align.Normal Wrap = False } { btnLock ToolButton MoveScaled(45,0,4,4) ToolTip = ("Lock property") Picture = Picture["icon:/tiny/lock"] Toggle = True } { btnSortProperties ToolButton MoveScaled(49,0,4,4) ToolTip = ("Sort properties") Picture = Picture["icon:/tiny/sort-ascent"] Toggle = True } } { sepProperty Separator MoveScaled(8,6,14,0) } { Panel1 Panel MoveScaled(2,8,56,36) Background = Color.TextBackground Expand = True Arrangement = Arrange.Fill { grdProperty GridView MoveScaled(28,2,25,31) Visible = False Background = Color.TextBackground Border = False } { panEditor HBox MoveScaled(2,3,25,31) Visible = False Background = Color.TextBackground Ignore = True { spnProperty SpinBox MoveScaled(2,5,14,3) Visible = False Expand = True Border = False } { crdProperty CoordBox txtProperty Name = "crdProperty" MoveScaled(1,14,17,3) Visible = False Expand = True Border = False AllowRelative = True AutoConvert = True } { txtProperty ButtonBox MoveScaled(3,9,18,3) Visible = False Expand = True Border = False ClearButton = True } { txtAngle AngleBox MoveScaled(2,19,21,3) Visible = False Expand = True } { cmbProperty ComboBox MoveScaled(4,25,18,4) Visible = False Expand = True ReadOnly = True Border = False } } } { spnHelp SidePanel MoveScaled(15,46,36,17) Arrangement = Arrange.Vertical Orientation = Align.Bottom Separator = True Transparent = True { HBox1 HBox MoveScaled(3,1,21,3) Indent = True { lblHelp Label MoveScaled(3,0,8,3) Expand = True Text = ("Help") } { btnCloseHelp ToolButton MoveScaled(15,0,3,3) Picture = Picture["icon:/small/close"] } } { Separator1 Separator MoveScaled(16,5,10,0) } { webHelp HelpView MoveScaled(2,7,16,9) Expand = True NoHeader = True } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FText.class000066400000000000000000000015471411575327000230150ustar00rootroot00000000000000' Gambas class file Static Public Value As String Static Public Function Run(sText As String, sProperty As String) As Boolean Dim hForm As Form Value = sText hForm = New FText hForm.Title = Subst(("Edit '&1' property"), sProperty) Return Not hForm.ShowModal() End Public Sub Form_Open() txtText.Text = Value txtText.SetFocus 'Config.LoadWindow(ME, "/FText") Settings.Read(Me) chkFont.Value = Settings["/FText/UseFixedFont", False] End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() Value = txtText.Text Me.Close(True) End Public Sub Form_Close() 'Config.SaveWindow(ME, "/FText") Settings.Write(Me) Settings["/FText/UseFixedFont"] = chkFont.Value End Public Sub chkFont_Click() If chkFont.Value Then txtText.Font = Font[Project.DEFAULT_FONT] Else txtText.Font = Null Endif End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FText.form000066400000000000000000000011061411575327000226420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,70,41) Arrangement = Arrange.Vertical Spacing = True Margin = True { txtText TextArea MoveScaled(1,1,36,17) Expand = True Wrap = True } { HBox1 HBox MoveScaled(1,35,63,4) Spacing = True { chkFont CheckBox MoveScaled(0,0,29,4) Expand = True Text = ("Use a fixed font") } { btnOK Button MoveScaled(35,0,13,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(50,0,13,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FToolBox.class000066400000000000000000000204021411575327000234460ustar00rootroot00000000000000' Gambas class file Private Const WIDTH As Integer = 40 Private $cToolBar As New Collection Private $cToolBarFromIndex As New Collection Private $sToolBar As String Private $sLastToolBar As String Private $sFamily As String Private $sLastLib As String Private $iSize As Integer 'PRIVATE $bAnimate AS Boolean Private $aOrder As New String[] Private $iTabDeprecated As Integer Public Sub Form_Open() Dim aTrans As String[] $aOrder = ["Form", "WebForm", "TermForm", "Report", "View", "Dialog", "Chooser", "Container", "Data", "Network", "Special"] ' Just for the translations aTrans = [("Form"), ("WebForm"), ("TermForm"), ("View"), ("Report"), ("Dialog"), ("Chooser"), ("Container"), ("Data"), ("Network"), ("Special"), ("Deprecated")] ReadConfig SetTool 'MoveToolBar End Private Function AddToolBar(sToolBar As String, sType As String) As FToolPanel Dim hToolBar As FToolPanel If Not $cToolBar.Exist(sToolBar) Then If $cToolBar.Count Then Inc tabTool.Count tabTool.Index = tabTool.Count - 1 If sToolBar = "Deprecated" Then $iTabDeprecated = tabTool.Index tabTool.Text = Tr(sToolBar) hToolBar = New FToolPanel(sToolBar, sType, tabTool) As "ToolBar" hToolBar.Tag = sToolBar $cToolBar[sToolBar] = hToolBar $cToolBarFromIndex[tabTool.Index] = hToolBar If Not $sToolbar Then $sToolbar = sToolBar Endif Return $cToolBar[sToolBar] End Public Sub RefreshToolbar(Optional bForce As Boolean) Dim hToolBar As FToolPanel Dim sLib As String Dim sCtrl As String Dim sNewLib As String Dim hComp As CComponent Dim hClass As CClassInfo Dim sGroup As String Dim aToolBar As New String[] Dim cToolBar As New Collection Dim iOrder As Integer Dim iLast As Integer Dim bExist As Boolean Dim sOldTab As String Dim cHidden As Collection 'Dim sType As String If Project.Components Then For Each sLib In Project.Components sNewLib = sNewLib & sLib & " " Next sNewLib = Trim(sNewLib) Endif If Not bForce Then If $sLastLib Then If sNewLib = $sLastLib Then Return Endif Endif tabTool.Hide sOldTab = tabTool.Text For Each hToolBar In $cToolBar hToolBar.Hide hToolBar.Reparent(Me) hToolBar.Delete Next $cToolBar.Clear $cToolBarFromIndex.Clear 'Debug tabTool.Index tabTool.Count = 1 'Debug "->";; tabTool.Index $sToolBar = "" $sFamily = "" 'AddTool(SELECT_TOOL) 'SetTool() If Project.Components Then ' Get all toolbars cHidden = New Collection For Each hComp In Project.Documentation.Components With hComp If Not hComp.UsedByProject() Then Continue For Each sCtrl In .Hiddens cHidden[sCtrl] = True Next For Each sCtrl In .Controls sGroup = Project.Documentation.Classes[sCtrl].Group cToolBar[sGroup] = sGroup Next End With Next iLast = $aOrder.Count For Each sGroup In cToolBar iOrder = $aOrder.Find(sGroup) If iOrder < 0 Then iOrder = iLast Inc iLast Endif aToolBar.Add(Format(iOrder, "00") & sGroup) Next aToolBar.Sort $iTabDeprecated = 0 For Each sGroup In aToolBar AddToolBar(Mid$(sGroup, 3), "Not yet implemented") Next btnDeprecated.Value = Project.ShowDeprecated btnDeprecated_Click For Each hComp In Project.Documentation.Components With hComp If Not hComp.UsedByProject() Then Continue For Each sCtrl In .Controls If cHidden.Exist(sCtrl) Then Continue hClass = Project.Documentation.Classes[sCtrl] sGroup = hClass.Group bExist = False For Each hToolBar In $cToolBar If hToolBar.Exist(sCtrl) Then bExist = True Break Endif Next If Not bExist Then If $cToolBar[sGroup] Then $cToolBar[sGroup].Add(sCtrl, hComp.Key, hClass.Family) Else Error "gambas3: warning: unknown group '"; sGroup; "' for control '"; sCtrl; "'" Endif Endif Next End With Next For Each hToolBar In $cToolBar hToolBar.Sort() Next 'Try SelectToolbar($sToolBar) 'tabTool.Index = 0 'IF ERROR THEN MoveToolbar Endif tabTool.Index = 0 ' For iInd = 0 To tabTool.Count - 1 ' If tabTool[iInd].Text = sOldTab Then ' tabTool.Index = iInd ' Break ' Endif ' Next OnProjectActivate tabTool.Show $sLastLib = sNewLib End Private Sub ClearToolBar() $sLastLib = "" RefreshToolBar End Public Function GetTool() As String If Not $sToolBar Then Return Return $cToolBar[$sToolBar].GetTool() End Public Sub SetTool() If Not $sToolBar Then Return $cToolBar[$sToolBar].SetTool() End Public Sub GetSize() As Integer Return 24 + Settings["/Toolbox/Size", 0] * 8 End Private Sub UpdateSize() Dim iSize As Integer = GetSize() Dim iTab As Integer If iSize <> $iSize Then iTab = tabTool.Index $iSize = iSize ClearToolBar tabTool.Index = iTab Endif End Public Sub ReadConfig() Dim hFont As Font hFont = Project.GetSmallFont() tabTool.TextFont = hFont panTooltip.Font = hFont 'panTooltip.Height = hFont.H + 4 UpdateSize End Public Sub tabTool_Click() Dim hToolbar As FToolPanel hToolbar = $cToolBarFromIndex[tabTool.Index] If Not hToolBar Then Return $sLastToolBar = $sToolBar $sToolBar = hToolBar.Tag SetTool End Public Sub OnProjectActivate() Dim hForm As FForm Dim iTab As Integer Dim nVisible As Integer Dim hCtrl As Control Dim sType As String Dim sOldTab As String Dim iIndex As Integer Try hForm = Project.ActiveForm If Not hForm Then Return If $sFamily = hForm.Family Then Return $sFamily = hForm.Family sOldTab = tabTool.Text iIndex = -1 For iTab = 0 To tabTool.Count - 1 nVisible = 0 For Each hCtrl In $cToolBarFromIndex[iTab].Container.Children sType = hCtrl.Tag[1] hCtrl.Visible = sType = "*" Or sType = $sFamily If hCtrl.Visible Then Inc nVisible Next tabTool[iTab].Visible = nVisible > 1 If tabTool[iTab].Visible Then If iIndex < 0 Then iIndex = iTab If tabTool[iTab].Text = sOldTab Then iIndex = iTab Endif Next tabTool.Index = iIndex btnDeprecated_Click End Public Sub tabTool_CloseAll() Dim hPanel As SidePanel = Me.Parent hPanel.Hidden = True End Public Sub btnZoom_Click() Dim iSize As Integer iSize = Settings["/Toolbox/Size", 0] iSize = (iSize + 1) Mod 4 Settings["/Toolbox/Size"] = iSize UpdateSize End Public Sub SetTooltip(Optional sControl As String, sComp As String) If sComp = "$" Then sComp = "" & ("Current project") & "" lblControl.Text = sControl lblComp.Text = sComp End Public Sub btnDeprecated_Click() If $iTabDeprecated Then tabTool[$iTabDeprecated].Visible = btnDeprecated.Value If btnDeprecated.Value Then tabTool.Index = $iTabDeprecated End Public Sub tabTool_Menu() Dim hMenu As Menu Dim I As Integer mnuShow.Children.Clear For I = 0 To tabTool.Count - 1 If Not tabTool[I].Visible Then Continue hMenu = New Menu(mnuShow) As "mnuShow" hMenu.Text = tabTool[I].Text hMenu.Checked = I = tabTool.Index hMenu.Tag = I Next mnuDeprecated.Checked = btnDeprecated.Value mnuHelp.Visible = lblControl.Text mnuHelp.Text = Subst(("Help on &1") & "...", lblControl.Text) mnuHelp.Tag = lblControl.Text mnuSize.Children[Settings["/Toolbox/Size", 0]].Checked = True mnuToolbox.Popup End Public Sub ToolBar_Menu() tabTool_Menu End Public Sub mnuShow_Click() tabTool.Index = Last.Tag End Public Sub mnuDeprecated_Click() btnDeprecated.Value = mnuDeprecated.Value End Public Sub mnuSize_Click() Settings["/Toolbox/Size"] = CInt(Last.Tag) UpdateSize End Public Sub IsDeprecatedVisible() As Boolean Return btnDeprecated.Value End Public Sub mnuHelp_Click() Dim sClass As String Dim sComp As String sClass = mnuHelp.Tag If Not sClass Then Return sComp = Project.Documentation.Classes[sClass].Component If sComp = CComponent.PROJECT_NAME Then Project.OpenFile(sClass) Else MHelp.ShowHelpBrowserWith(MHelp.TYPE_CLASS, sClass) Endif End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FToolBox.form000066400000000000000000000037341411575327000233150ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,36,50) Persistent = True Arrangement = Arrange.Vertical { mnuToolbox Menu Visible = False { mnuShow Menu Text = ("Show") } { mnuSize Menu Text = ("Button size") Picture = Picture["icon:/small/zoom-in"] { Menu1 Menu mnuSize Name = "Menu1" Text = ("Tiny") Radio = True Tag = "0" } { Menu2 Menu mnuSize Name = "Menu2" Text = ("Small") Radio = True Tag = "1" } { Menu3 Menu mnuSize Name = "Menu3" Text = ("Medium") Radio = True Tag = "2" } { Menu4 Menu mnuSize Name = "Menu4" Text = ("Large") Radio = True Tag = "3" } } { mnuDeprecated Menu Text = ("Deprecated controls") Picture = Picture["img/control/deprecated.png"] Toggle = True } { mnuHelp Menu #Translate = False Text = "Help" Picture = Picture["icon:/small/help"] Visible = False } } { tabTool TabPanel MoveScaled(1,1,34,35) Font = Font["-1"] Expand = True Arrangement = Arrange.Fill Padding = 2 Border = False CloseButton = True Index = 0 Text = ("") Index = 0 } { Separator1 Separator MoveScaled(8,44,21,0) } { panTooltip HBox MoveScaled(1,45,33,4) { lblControl Label MoveScaled(0,0,10,3) Font = Font["Bold"] Expand = True Alignment = Align.Right } { Panel1 Panel MoveScaled(11,0,1,3) } { lblComp TextLabel MoveScaled(12,0,10,3) Expand = True Alignment = Align.Left } { btnZoom ToolButton MoveScaled(25,0,4,4) ToolTip = ("Change button size") Picture = Picture["icon:/small/zoom-in"] } { btnDeprecated ToolButton MoveScaled(29,0,4,4) ToolTip = ("Show deprecated controls") Picture = Picture["icon:/small/delete"] Toggle = True } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FToolPanel.class000066400000000000000000000071651411575327000237700ustar00rootroot00000000000000' Gambas class file Private Const SELECT_TOOL As String = "Select" Private $iSize As Integer Public (Key) As String Public Container As Container Private $sType As String Private $cButton As New Collection Private $sTool As String Private $bNoEvent As Boolean Public Sub _new(sName As String, sType As String) $iSize = FToolBox.GetSize() Key = sName $sType = sType 'btnTool.Text = sName 'btnTool.Height = 20 Add(SELECT_TOOL) SetTool Container = panTool End Public Sub Add(sControl As String, Optional sComp As String, Optional sType As String) Dim hCtrl As ToolButton Dim hPict As Picture Dim W, H As Integer If Not sType Then sType = "*" W = $iSize + 8 H = $iSize + 8 hCtrl = New ToolButton(panTool) As "btnControl" hCtrl.Tag = [sControl, sType, sComp] hCtrl.Border = False hCtrl.Toggle = True 'hCtrl.ToolTip = sControl hCtrl.Design = True hPict = CControl.GetIcon(sControl, sComp) If hPict Then If hPict.W > hPict.H Then W = ($iSize * hPict.W) \ hPict.H + 8 Picture[".control" &/ LCase(sControl)] = hPict If hPict.Height <> $iSize Then hPict = hPict.Image.Stretch(-1, $iSize).Picture hCtrl.Picture = hPict Endif hCtrl.Move(0, 0, W, H) $cButton[sControl] = hCtrl End Public Sub Exist(sControl As String) As Boolean Return $cButton.Exist(sControl) End Public Sub Sort() Dim hCtrl As Control Dim aCtrl As New Control[] Dim aSort As New String[] For Each hCtrl In panTool.Children aCtrl.Add(hCtrl) aSort.Add(hCtrl.Tag[0]) Next aCtrl.SortUsing(aSort) For Each hCtrl In aCtrl hCtrl.Raise Next $cButton[SELECT_TOOL].Lower End ' PUBLIC SUB Form_Resize() ' ' DIM hCtrl AS ToolButton ' DIM X AS Integer ' DIM Y AS Integer ' DIM XM AS Integer ' DIM YM AS Integer ' ' btnTool.Width = ME.ClientW ' panTool.Resize(ME.ClientW, ME.ClientH - btnTool.H) ' ' ' FOR EACH hCtrl IN panTool.Children ' ' ' ' IF (X + WIDTH) > panTool.ClientW THEN ' ' X = 0 ' ' Y = Y + WIDTH ' ' ENDIF ' ' ' ' hCtrl.Move(X, Y) ' ' ' ' XM = Max(XM, X) ' ' YM = Max(YM, Y) ' ' ' ' X = X + WIDTH ' ' ' ' NEXT ' ' ' ' XM = XM + WIDTH ' ' YM = YM + WIDTH ' ' 'ME.Resize(XM, YM) ' ' END Public Function GetTool() As String If $sTool <> SELECT_TOOL Then Return $sTool End Public Sub SetTool(Optional hButton As ToolButton) $bNoEvent = True If $sTool Then $cButton[$sTool].Value = False Endif If Not hButton Then hButton = $cButton[SELECT_TOOL] Endif hButton.Value = True $sTool = hButton.Tag[0] $bNoEvent = False End Public Procedure btnControl_Enter() Dim hCtrl As ToolButton = Last hCtrl.Border = True If IsNull(hCtrl.Tag[2]) Then FToolBox.SetTooltip() Else FToolBox.SetTooltip(hCtrl.Tag[0], hCtrl.Tag[2]) Endif End Public Procedure btnControl_Leave() Last.Border = False FToolBox.SetTooltip() End Public Procedure btnControl_MouseUp() If $bNoEvent Then Return If Last.Tag[0] = $sTool Then SetTool Else SetTool(Last) Endif End Public Sub btnControl_Menu() Raise Menu End Public Sub btnControl_DblClick() If Project.IsForm(Project.ActiveForm) Then If GetTool() Then Project.ActiveForm.AddControl(GetTool()) Endif Endif End Public Sub btnControl_MouseDrag() Dim hTool As Object = Last Dim sTool As String = hTool.Tag[0] If sTool = SELECT_TOOL Then Return Drag.Icon = hTool.Picture Drag(hTool, File.Name(sTool), MMime.CONTROL) Try Project.ActiveForm.HideFrame End Public Sub ShowToolBar(bShow As Boolean) panTool.Visible = bShow 'IF bShow THEN $cButton["Select"].SetFocus End gambas-3.16.3/app/src/gambas3/.src/Editor/Form/FToolPanel.form000066400000000000000000000004201411575327000236110ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,32.125,49.375) Arrangement = Arrange.Vertical Spacing = True { panTool ScrollView MoveScaled(5,3,21,30) Expand = True Arrangement = Arrange.Row Border = False ScrollBar = Scroll.Vertical } } gambas-3.16.3/app/src/gambas3/.src/Editor/Image/000077500000000000000000000000001411575327000210445ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Editor/Image/CImageClipboard.class000066400000000000000000000004601411575327000250400ustar00rootroot00000000000000' Gambas class file Public (Image) As Image Public Thumb As Picture Public Text As String Public Sub MakeThumb(Optional hImage As Image) If Not hImage Then hImage = Image If Not hImage Then hImage = Picture["icon:/128/paste"].Image Thumb = hImage.Stretch(-1, Desktop.Scale * 6).Picture End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/CImageSelection.class000066400000000000000000000553441411575327000251010ustar00rootroot00000000000000' Gambas class file Public Enum ACTION_NONE, ACTION_STROKE, ACTION_FILL, ACTION_CLEAR, ACTION_CLIP, ACTION_EXTENT, ACTION_HANDLE, ACTION_MAGNET, ACTION_SELECT Public Enum MAGNET_NONE, MAGNET_RECTANGLE, MAGNET_ELLIPSE Public Enum OP_UNION, OP_INTERSECTION, OP_DIFFERENCE, OP_XOR Public Enum OFFSET_SHRINK, OFFSET_GROW, OFFSET_BORDER Private Enum CMD_MOVE_TO, CMD_LINE_TO ', CMD_RECTANGLE, CMD_ELLIPSE Public Name As String Public Shapes As New CImageShape[] 'Public _Invert As Boolean Public _Magnets As New PointF[] Public _Matrix As New PaintMatrix Public _BrushMatrix As New PaintMatrix Public Current As Integer = -1 Property Read Count As Integer Static Public FindIndex As Variant Private $hExtents As PaintExtents Public Sub MoveTo(X As Float, Y As Float) Dim hShape As CImageShape If Shapes.Count And If Shapes[Shapes.Max].Points.Count = 1 Then Shapes.Remove(Shapes.Max) Endif hShape = New CImageShape Shapes.Add(hShape) hShape.Add(PointF(X, Y)) End Public Sub LineTo(X As Float, Y As Float) Shapes[Shapes.Max].Add(PointF(X, Y)) End Public Sub Paint(hImage As Image, iAction As Integer, Optional bAll As Boolean) Dim hTemp As Image Dim hBrush As PaintBrush Dim bExtent As Boolean Dim I As Integer ' Dim iMode As Integer Dim fDashOffset As Float Dim iFillRule As Integer 'Dim hExtent As RectF fDashOffset = Paint.DashOffset bExtent = iAction = ACTION_EXTENT If iAction <> ACTION_CLIP Then Paint.Save If iAction = ACTION_FILL Then hBrush = Paint.Brush ' If bGradient Then ' Me.Paint(hImage, ACTION_EXTENT) ' If bExtent Then bExtent = False ' With $hExtents ' hBrush.Translate(.X, .Y) ' hBrush.Scale(.Width, .Height) ' End With ' ' Paint.Brush = hBrush ' Endif hTemp = New Image(hImage.W, hImage.H, Color.Transparent) iFillRule = Paint.FillRule Paint.Begin(hTemp) Paint.FillRule = iFillRule Paint.Brush = hBrush ' If _Invert Then ' ' Paint.Rectangle(0, 0, hTemp.W, hTemp.H) ' Paint.Fill ' ' Paint.Operator = Paint.OperatorClear ' ' Endif Else If iAction = ACTION_CLEAR Then hBrush = Paint.Brush If hBrush Then hBrush.Scale(hImage.W, hImage.H) Paint.Brush = hBrush Endif 'Paint.Brush = Paint.Color(Color.Black) ' If _Invert Then ' ' Paint.Operator = Paint.OperatorDestOut ' hBrush = Paint.Brush ' ' hTemp = New Image(hImage.W, hImage.H, Color.Transparent) ' ' Paint.Begin(hTemp) ' ' Paint.Brush = hBrush ' Paint.Rectangle(0, 0, hTemp.W, hTemp.H) ' Paint.Fill ' ' Paint.Brush = Paint.Color(Color.Black) ' Paint.Operator = Paint.OperatorDestOut ' ' Else Paint.Operator = Paint.OperatorDestOut ' Endif Endif ' If iAction = ACTION_SELECT Then ' ' For I = 0 To Shapes.Max ' If Current < 0 Or If Current = I Or If bAll Then ' If Shapes[I].IsText Then ' hExtent = Shapes[I].GetExtents() ' Paint.Rectangle(hExtent.X, hExtent.Y, hExtent.Width, hExtent.Height) ' ' Paint.AntiAlias = False ' Paint.LineJoin = Paint.LineJoinMiter ' ' Paint.Background = Color.Yellow ' Paint.Dash = Null ' ' Paint.Stroke(True) ' ' Paint.Background = Color.Black 'Color.SetAlpha(Color.Black, 128) ' Paint.Dash = [2.0, 2.0] ' Paint.DashOffset = 0 ' ' Paint.Stroke() ' ' Endif ' Endif ' Next ' ' Endif If iAction = ACTION_HANDLE Then For I = 0 To Shapes.Max If I = Current Then Shapes[I].PaintHandle Else Shapes[I].PaintCenter Endif Next Else If iAction = ACTION_MAGNET Then For I = 0 To Shapes.Max If I = Current Then Shapes[I].PaintMagnet Next Else If iAction = ACTION_CLIP Then For I = 0 To Shapes.Max If bAll Or If Current < 0 Or If Current = I Then Shapes[I].Paint(Me, False, iAction = ACTION_SELECT) Endif Next Paint.Clip Else For I = 0 To Shapes.Max If Current < 0 Or If Current = I Or If bAll Then Shapes[I].Paint(Me, False, iAction = ACTION_SELECT) Next If bExtent Then $hExtents = Paint.PathExtents Endif If iAction = ACTION_FILL Then 'Paint.FillRule = Paint.FillRuleWinding Paint.Fill Paint.End Paint.DrawImage(hTemp, 0, 0) Else If iAction = ACTION_CLEAR Then 'Paint.FillRule = Paint.FillRuleWinding Paint.Fill ' If _Invert Then ' ' Paint.End ' ' Paint.DrawImage(hTemp, 0, 0) ' ' Endif Else If iAction = ACTION_STROKE Then ' If _Invert Then ' Paint.MoveTo(0, 0) ' Paint.LineTo(0, hImage.H) ' Paint.LineTo(hImage.W, hImage.H) ' Paint.LineTo(hImage.W, 0) ' Paint.LineTo(0, 0) ' Endif 'Paint.LineJoin = Paint.LineJoinMiter Paint.Stroke ' Else If iAction = ACTION_CLIP Then ' ' Paint.Clip Else If iAction = ACTION_HANDLE Or If iAction = ACTION_MAGNET Then Paint.Fill Else If iAction = ACTION_SELECT Then 'Paint.LineWidth = 2 '/ imvImage.Zoom Paint.AntiAlias = False Paint.LineJoin = Paint.LineJoinMiter Paint.Background = Color.White 'Color.SetAlpha(Color.White, 128) Paint.Dash = Null ' If _Invert Then ' Paint.MoveTo(0, 0) ' Paint.LineTo(0, hImage.H) ' Paint.LineTo(hImage.W, hImage.H) ' Paint.LineTo(hImage.W, 0) ' Paint.LineTo(0, 0) ' Endif Paint.Stroke(True) Paint.Background = Color.Black 'Color.SetAlpha(Color.Black, 128) Paint.Dash = [4, 4] Paint.DashOffset = fDashOffset ' ' If _Invert Then ' Paint.MoveTo(0, 0) ' Paint.LineTo(0, hImage.H) ' Paint.LineTo(hImage.W, hImage.H) ' Paint.LineTo(hImage.W, 0) ' Paint.LineTo(0, 0) ' Endif Paint.Stroke Endif If iAction <> ACTION_CLIP Then Paint.Restore End Public Sub Copy() As CImageSelection Dim hSelect As New CImageSelection Dim I As Integer hSelect.Name = Name hSelect.Shapes = New CImageShape[Shapes.Count] For I = 0 To Shapes.Max hSelect.Shapes[I] = Shapes[I].Copy() Next ' hSelect._Invert = _Invert hSelect._Magnets = New PointF[_Magnets.Count] For I = 0 To _Magnets.Max hSelect._Magnets[I] = _Magnets[I].Copy() Next hSelect._Matrix = _Matrix.Copy() hSelect._BrushMatrix = _BrushMatrix.Copy() hSelect.Current = Current Return hSelect End Public Sub Invert(hImage As Image) Dim I As Integer Dim hShape As CImageShape Dim hAll As Polygon Dim aAll As Polygon[] Dim aClip As New Polygon[] If Current >= 0 Then Shapes[Current].Invert Else hAll = New Polygon hAll.Add(0, 0) hAll.Add(0, hImage.H) hAll.Add(hImage.W, hImage.H) hAll.Add(hImage.W, 0) hAll.Add(0, 0) aAll = [hAll] For I = 0 To Shapes.Max aClip.Insert(Shapes[I].ToPolygons()) Next aClip = Clipper.ExclusiveOr(aClip, aAll) Clear() For I = 0 To aClip.Max hShape = New CImageShape hShape.Points = aClip[I] AddShape(hShape) Next Endif End Public Sub IsVoid() As Boolean ' If _Invert Then Return Return Shapes.Count = 0 End Public Sub Clear() Shapes.Clear _Magnets.Clear Current = -1 End ' Public Sub AddMagnetFromRect(X As Integer, Y As Integer, W As Integer, H As Integer, Optional (iType) As Integer) ' ' With Shapes[Shapes.Max] ' ' .AddMagnet(PointF(X, Y)) ' .AddMagnet(PointF(X + W / 2, Y)) ' .AddMagnet(PointF(X + W, Y)) ' .AddMagnet(PointF(X + W, Y + H / 2)) ' .AddMagnet(PointF(X + W, Y + H)) ' .AddMagnet(PointF(X + W / 2, Y + H)) ' .AddMagnet(PointF(X, Y + H)) ' .AddMagnet(PointF(X, Y + H / 2)) ' .AddMagnet(PointF(X + W / 2, Y + H / 2)) ' ' End With ' ' ' For I = 1 To 8 ' ' _MagnetTypes.Add(iType) ' ' Next ' ' '_Magnets.Add(PointF(X + W \ 2, Y + H \ 2)) ' ' End ' Private Sub RemoveMagnet(X As Integer, Y As Integer) ' ' Dim I As Integer ' ' While I < _Magnets.Count ' If _Magnets[I].X = X And If _Magnets[I].Y = Y Then ' _Magnets.Remove(I) ' Else ' Inc I ' Endif ' Wend ' ' End ' Private Sub RemoveMagnetFromRect(X As Integer, Y As Integer, W As Integer, H As Integer) ' ' RemoveMagnet(X, Y) ' ' RemoveMagnet(X + W \ 2, Y) ' RemoveMagnet(X + W, Y) ' ' RemoveMagnet(X + W, Y + H \ 2) ' RemoveMagnet(X + W, Y + H) ' ' RemoveMagnet(X + W \ 2, Y + H) ' RemoveMagnet(X, Y + H) ' ' RemoveMagnet(X, Y + H \ 2) ' ' RemoveMagnet(X + W \ 2, Y + H \ 2) ' ' End Public Sub Rectangle(X As Float, Y As Float, W As Float, H As Float, Optional R As Integer) Dim A As Integer Dim XC, YC As Float If W = 0 Or If H = 0 Then Return R = Min(R, CInt(Min(W, H) / 2)) If R <= 0 Then MoveTo(X, Y) LineTo(X + W, Y) LineTo(X + W, Y + H) LineTo(X, Y + H) LineTo(X, Y) Else MoveTo(X, Y + R) XC = X + R YC = Y + R For A = -175 To -95 Step 5 LineTo(XC + Cos(Rad(A)) * R, YC + Sin(Rad(A)) * R) Next LineTo(X + R, Y) LineTo(X + W - R, Y) XC = X + W - R YC = Y + R For A = -85 To -5 Step 5 LineTo(XC + Cos(Rad(A)) * R, YC + Sin(Rad(A)) * R) Next LineTo(X + W, Y + R) LineTo(X + W, Y + H - R) XC = X + W - R YC = Y + H - R For A = 5 To 85 Step 5 LineTo(XC + Cos(Rad(A)) * R, YC + Sin(Rad(A)) * R) Next LineTo(X + W - R, Y + H) LineTo(X + R, Y + H) XC = X + R YC = Y + H - R For A = 95 To 175 Step 5 LineTo(XC + Cos(Rad(A)) * R, YC + Sin(Rad(A)) * R) Next LineTo(X, Y + H - R) LineTo(X, Y + R) Endif End Public Sub Text(X As Float, Y As Float, sText As String, sFont As String, iAlign As Integer, bAlignBase As Boolean) Dim hImage As Image Dim hOutline As PointF[][] Dim hPoly As PointF[] Dim hShape As CImageShape Dim hPoint As PointF Dim hExtents As PaintExtents Dim iTextAlign As Integer 'If W = 0 Or If H = 0 Then Return If Not sText Then Return hImage = New Image(1, 1) Paint.Begin(hImage) Paint.Font = Font[sFont] hExtents = Paint.TextExtents(sText) 'Debug hExtents.X;; hExtents.Y;; hExtents.Width;; hExtents.Height If Align.IsLeft(iAlign) Then 'X = X iTextAlign = Align.Left Else If Align.IsRight(iAlign) Then X -= hExtents.Width iTextAlign = Align.Right Else If Align.IsCenter(iAlign) Then X -= hExtents.Width / 2 iTextAlign = Align.Center Endif Y -= Paint.Font.Ascent If bAlignBase Then iTextAlign += Align.TopNormal Else If Align.IsTop(iAlign) Then Y = Y - hExtents.Y iTextAlign += Align.TopNormal Else If Align.IsBottom(iAlign) Then Y = Y - hExtents.Y - hExtents.Height iTextAlign += Align.TopNormal Else If Align.IsMiddle(iAlign) Then Y = Y - hExtents.Y - hExtents.Height / 2 iTextAlign += Align.TopNormal Endif Paint.Text(sText, X - hExtents.X, Y, hExtents.Width, hExtents.Height, iTextAlign) hOutline = Paint.PathOutline If hOutLine Then For Each hPoly In hOutline If hPoly.Count < 2 Then Continue hShape = New CImageShape Shapes.Add(hShape) For Each hPoint In hPoly hShape.Add(hPoint) Next Next Endif Paint.End End Public Sub Ellipse(X As Float, Y As Float, W As Float, H As Float) Dim A As Integer Dim XC, YC, WC, HC As Float If W = 0 Or If H = 0 Then Return ' If W < 0 Then ' X += W ' W = - W ' Endif ' If H < 0 Then ' Y += H ' H = - H ' Endif WC = W / 2 HC = H / 2 XC = X + WC YC = Y + HC MoveTo(XC + WC, YC) For A = 5 To 359 Step 5 LineTo(XC + Cos(Rad(A)) * WC, YC + Sin(Rad(A)) * HC) Next LineTo(XC + WC, YC) End Static Public Sub FindMagnetFrom(aPoint As PointF[], hSearch As PointF, D As Float, Optional bIgnoreSame As Boolean) As PointF Dim hPoint As PointF Dim fDist, fDistMin As Float Dim hPointMin As PointF fDistMin = D For Each hPoint In aPoint fDist = Abs(hPoint - hSearch) If fDist < fDistMin Then If bIgnoreSame And If fDist < 1E-6 Then Continue hPointMin = hPoint fDistMin = fDist Endif Next If hPointMin Then Return hPointMin.Copy() End Public Sub FindMagnet(hSearch As PointF, D As Float, Optional iIgnoreFrom As Integer = -1) As PointF Dim hPoint As PointF Dim I, N As Integer N = Shapes.Max If iIgnoreFrom >= 0 Then N = iIgnoreFrom - 1 For I = 0 To N If I = Current Then Continue hPoint = Shapes[I].FindMagnet(hSearch, D) If hPoint Then Return hPoint Next Return FindMagnetFrom(_Magnets, hSearch, D) End Public Sub FindShape(hSearch As PointF, D As Float, Optional bIgnoreCurrent As Boolean) As Integer Dim I, iStart As Integer Dim hShape As CImageShape Dim hCenter As PointF If Shapes.Count = 0 Then Return -1 iStart = Max(0, Current) I = iStart Do If bIgnoreCurrent And If I = Current Then Goto NEXT_SHAPE hShape = Shapes[I] hCenter = hShape.GetCenter() If Abs(hCenter - hSearch) <= D Then Return I NEXT_SHAPE: Inc I If I > Shapes.Max Then I = 0 If I = iStart Then Return -1 Loop End Public Sub FindPoint(hSearch As PointF, D As Float, Optional bMidSegment As Boolean, Optional vIgnore As Variant) As PointF Dim I As Integer Dim hShape As CImageShape Dim J As Integer Dim iIgnore As Integer For I = 0 To Shapes.Max hShape = Shapes[I] ' hCenter = hShape.GetCenter() ' If Abs(hCenter - hSearch) <= D Then ' FindIndex = [I, -1] ' Return hCenter.Copy() ' Endif If I = Current Then iIgnore = -1 If vIgnore And If vIgnore[0] = I Then iIgnore = vIgnore[1] J = hShape.FindPoint(hSearch, D, bMidSegment, iIgnore) If J >= 0 Then FindIndex = [I, J] Return hShape.Points[J].Copy() Endif D = CImageShape.FindDistance Endif Next End ' Public Sub IsInverted() As Boolean ' ' Return _Invert ' ' End Public Sub GetExtents(Optional bAll As Boolean) As RectF Dim hRect As RectF Dim I As Integer Dim hRectShape As RectF If Shapes.Count = 0 Then Return New RectF If Current >= 0 And If Not bAll Then Return Shapes[Current].GetExtents() For I = 0 To Shapes.Max hRectShape = Shapes[I].GetExtents() If Not hRectShape Then Continue If Not hRect Then hRect = hRectShape Else hRect = hRect.Union(hRectShape) Endif Next Return hRect End Public Sub GetExtentsInt(Optional bAll As Boolean) As Rect Dim hExt As RectF = GetExtents(bAll) If Not hExt Then Return Return Rect(Floor(hExt.X), Floor(hExt.Y), Ceil(hExt.Right) - Floor(hExt.X), Ceil(hExt.Bottom) - Floor(hExt.Y)) End Public Sub AddMagnet(hPoint As PointF) Shapes[Shapes.Max].AddMagnet(hPoint) End ' Private Sub Remove(I As Integer) ' ' RemoveMagnet(_X[I], _Y[I]) ' ' _Cmd.Remove(I) ' _X.Remove(I) ' _Y.Remove(I) ' ' End Public Sub Apply(hMatrix As PaintMatrix) Dim I As Integer Dim hShape As CImageShape If Current >= 0 Then Shapes[Current].Apply(hMatrix) Else For Each hShape In Shapes hShape.Apply(hMatrix) Next Endif For I = 0 To _Magnets.Max _Magnets[I] = hMatrix.Map(_Magnets[I]) Next _BrushMatrix = _BrushMatrix.Multiply(hMatrix) _Matrix = hMatrix.Multiply(_Matrix) End Public Sub HFlip() Dim hMatrix As New PaintMatrix Dim hExt As RectF = GetExtents() If Not hExt Then Return hMatrix.Translate(hExt.X + hExt.W / 2, hExt.Y + hExt.H / 2) hMatrix.Scale(-1, 1) hMatrix.Translate(-(hExt.X + hExt.W / 2), -(hExt.Y + hExt.H / 2)) Apply(hMatrix) End Public Sub VFlip() Dim hMatrix As New PaintMatrix Dim hExt As RectF = GetExtents() If Not hExt Then Return hMatrix.Translate(hExt.X + hExt.W / 2, hExt.Y + hExt.H / 2) hMatrix.Scale(1, -1) hMatrix.Translate(-(hExt.X + hExt.W / 2), -(hExt.Y + hExt.H / 2)) Apply(hMatrix) End Public Sub Rotate(fAngle As Float) Dim hMatrix As New PaintMatrix Dim hExt As RectF = GetExtents() If Not hExt Then Return hMatrix.Translate(hExt.X + hExt.W / 2, hExt.Y + hExt.H / 2) hMatrix.Rotate(fAngle) hMatrix.Translate(-(hExt.X + hExt.W / 2), -(hExt.Y + hExt.H / 2)) Apply(hMatrix) End Public Sub Scale(SX As Float, SY As Float, Optional bTopLeft As Boolean) Dim hMatrix As New PaintMatrix Dim hExt As RectF = GetExtents() If Not hExt Then Return If bTopLeft Then hMatrix.Translate(hExt.X, hExt.Y) Else hMatrix.Translate(hExt.X + hExt.W / 2, hExt.Y + hExt.H / 2) Endif hMatrix.Scale(SX, SY) If bTopLeft Then hMatrix.Translate(-hExt.X, -hExt.Y) Else hMatrix.Translate(-(hExt.X + hExt.W / 2), -(hExt.Y + hExt.H / 2)) Endif Apply(hMatrix) End Public Sub Translate(DX As Float, DY As Float) Dim hMatrix As New PaintMatrix hMatrix.Translate(DX, DY) Apply(hMatrix) End Static Public Sub FromString(sName As String, sShape As String) As CImageSelection Dim hSel As New CImageSelection Dim sLine As String Dim aPoints As String[] Dim aPoint As Float[] Dim I As Integer Dim bMagnet As Boolean Dim bPoint As Boolean For Each sLine In Split(sShape, " ", "", True) aPoints = Split(sLine, ";", "", True) If aPoints.Count < 2 Then Continue For I = 0 To aPoints.Max bMagnet = False bPoint = True If Right(aPoints[I]) = "*" Then aPoints[I] = Left(aPoints[I], -1) bMagnet = True Else If Right(aPoints[I]) = "+" Then aPoints[I] = Left(aPoints[I], -1) bMagnet = True bPoint = False Endif Try aPoint = Split(aPoints[I], ",") If Error Then Break If bPoint Then If I = 0 Then hSel.MoveTo(aPoint[0], aPoint[1]) Else hSel.LineTo(aPoint[0], aPoint[1]) Endif Endif If bMagnet Then hSel.AddMagnet(PointF(aPoint[0], aPoint[1])) Next Next hSel.Name = sName Return hSel End Public Sub AddSelection(hSel As CImageSelection) As Integer Dim I As Integer Dim hShape As CImageShape For Each hShape In hSel.Shapes Shapes.Add(hShape.Copy()) Next For I = 0 To hSel._Magnets.Max _Magnets.Add(hSel._Magnets[I].Copy()) Next ' With GetExtents() ' _Magnets.Add(PointF(.X, .Y)) ' _Magnets.Add(PointF(.X + .W, .Y)) ' _Magnets.Add(PointF(.X, .Y + .H)) ' _Magnets.Add(PointF(.X + .W, .Y + .H)) ' _Magnets.Add(PointF(.X + .W / 2, .Y + .H / 2)) ' End With Return Shapes.Max End Public Sub InsertPoint(hPoint As PointF, vWhere As Variant) As Variant Shapes[vWhere[0]].Add(hPoint, vWhere[1] + 1) Return [CInt(vWhere[0]), CInt(vWhere[1]) + 1] End Public Sub RemovePoint(vWhere As Variant) As Boolean Shapes[vWhere[0]].Remove(vWhere[1]) If Shapes[vWhere[0]].IsVoid() Then RemoveShape(vWhere[0]) Return True Endif End Public Sub SetPoint(vWhere As Variant, hPoint As PointF) Shapes[vWhere[0]].SetPoint(vWhere[1], hPoint) End Public Sub Select(iShape As Integer) Current = iShape End Public Sub SelectAll() Current = -1 End Public Sub RemoveShape(iShape As Integer) Shapes.Remove(iShape) If Current = iShape Then Current = -1 Else If Current > iShape Then Dec Current Endif End Public Sub AddShape(hShape As CImageShape) Shapes.Add(hShape.Copy()) End Public Sub Duplicate() Dim I As Integer Dim hShape As CImageShape Dim DX, DY As Float Dim hMatrix As New PaintMatrix Dim hExt As RectF = GetExtents() If Not hExt Then Return With hExt DX = .W / 2 DY = .H / 2 End With hMatrix.Translate(DX, DY) For I = 0 To Shapes.Max If Current < 0 Or If Current = I Then hShape = Shapes[I].Copy() hShape.Apply(hMatrix) AddShape(hShape) If Current >= 0 Then Current = Shapes.Max Endif Next End Public Sub Offset(fOffset As Float, iMode As Integer) Dim aPolygons As New Polygon[] Dim hShape As CImageShape Dim I As Integer If iMode <> OFFSET_GROW Then fOffset = -fOffset If Current < 0 Then For I = 0 To Shapes.Max aPolygons.Add(Shapes[I].Points) Next aPolygons = Clipper.Offset(aPolygons, fOffset) If iMode <> OFFSET_BORDER Then Clear() For I = 0 To aPolygons.Max hShape = New CImageShape hShape.Points = aPolygons[I] AddShape(hShape) Next Else aPolygons.Add(Shapes[Current].Points) aPolygons = Clipper.Offset(aPolygons, fOffset) If aPolygons.Count Then If iMode <> OFFSET_BORDER Then Shapes[Current].Points = aPolygons[0] Shapes[Current].Invalidate Else hShape = New CImageShape hShape.Points = aPolygons[0] AddShape(hShape) Current = Shapes.Max Endif Endif Endif If iMode = OFFSET_BORDER Then Operation(OP_DIFFERENCE) End Public Sub CleanLastShape() With Shapes[Shapes.Max] .Clean End With End Public Sub MergeWith(aOther As CImageShape[], Optional bDiff As Boolean) Dim aPolygons As New Polygon[] Dim aClip As New Polygon[] Dim hShape As CImageShape Dim I As Integer For Each hShape In Shapes aPolygons.Add(hShape.Points) Next For Each hShape In aOther aClip.Add(hShape.Points) Next If bDiff Then aPolygons = Clipper.Difference(aPolygons, aClip) Else aPolygons = Clipper.Union(aPolygons, aClip) Endif Clear() For I = 0 To aPolygons.Max hShape = New CImageShape hShape.Points = aPolygons[I] AddShape(hShape) Next End Public Sub SelectNext(D As Float) Dim hCenter As PointF = Shapes[Current].GetCenter() Dim I As Integer I = FindShape(hCenter, D, True) If I >= 0 Then Select(I) End Private Function Count_Read() As Integer Return Shapes.Count End Public Sub Operation(iOp As Integer) Dim aPolygons As New Polygon[] Dim aClip As New Polygon[] Dim hShape As CImageShape Dim I As Integer If Shapes.Count < 2 Then Return For I = 0 To Shapes.Max - 1 aPolygons.Add(Shapes[I].Points) Next aClip.Add(Shapes[Shapes.Max].Points) Select Case iOp Case OP_UNION aPolygons = Clipper.Union(aPolygons, aClip) Case OP_INTERSECTION aPolygons = Clipper.Intersection(aPolygons, aClip) Case OP_DIFFERENCE aPolygons = Clipper.Difference(aPolygons, aClip) Case OP_XOR aPolygons = Clipper.ExclusiveOr(aPolygons, aClip) End Select Clear() For I = 0 To aPolygons.Max hShape = New CImageShape hShape.Points = aPolygons[I] AddShape(hShape) Next End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/CImageShape.class000066400000000000000000000131601411575327000242020ustar00rootroot00000000000000' Gambas class file Static Public FindDistance As Float Public Name As String Public Points As New PointF[] Public Magnets As New PointF[] Public Grid As Integer = 2 Public _Extents As RectF Public _Center As PointF Public IsText As Boolean Public Sub Paint((hSelect) As CImageSelection, bWithMatrix As Boolean, (bSelection) As Boolean) Dim I As Integer 'Dim D As Float If bWithMatrix Then Return If Points.Count = 0 Then Return If Points.Count = 1 Then ' If bSelection Then ' D = 4 * Paint.LineWidth ' Paint.Arc(Points[0].X, Points[0].Y, D) ' Paint.MoveTo(Points[0].X, Points[0].Y - D) ' Paint.LineTo(Points[0].X, Points[0].Y + D) ' Paint.MoveTo(Points[0].X - D, Points[0].Y) ' Paint.LineTo(Points[0].X + D, Points[0].Y) ' Endif Return Endif Paint.MoveTo(Points[0].X, Points[0].Y) For I = 1 To Points.Max Paint.LineTo(Points[I].X, Points[I].Y) Next End Public Sub PaintCenter() With GetCenter() Paint.Arc(.X, .Y, Paint.LineWidth * 2) End With End Public Sub PaintHandle() Dim hPoint As PointF Dim W As Float = Paint.LineWidth Dim W2 As Float = W * 2 For Each hPoint In Points Paint.Rectangle(hPoint.X - W, hPoint.Y - W, W2, W2) Next PaintCenter End Public Sub PaintMagnet() Dim hPoint As PointF Dim W As Float = Paint.LineWidth Dim W2 As Float = W * 2 For Each hPoint In Magnets Paint.Rectangle(hPoint.X - W, hPoint.Y - W, W2, W2) Next For Each hPoint In GetExtentsMagnets() Paint.Rectangle(hPoint.X - W, hPoint.Y - W, W2, W2) Next End Public Sub GetCenter() As PointF If Points.Count = 0 Then Return Return GetExtents().Center() End Public Sub Add(hPoint As PointF, Optional I As Integer = -1) Points.Add(hPoint, I) _Extents = Null End Public Sub Remove(I As Integer) Points.Remove(I) _Extents = Null End Public Sub Copy() As CImageShape Dim hCopy As CImageShape Dim I As Integer hCopy = New (Object.Type(Me)) hCopy.Name = Name hCopy.Points = New PointF[Points.Count] For I = 0 To Points.Max hCopy.Points[I] = Points[I].Copy() Next hCopy.Magnets = New PointF[Magnets.Count] For I = 0 To Magnets.Max hCopy.Magnets[I] = Magnets[I].Copy() Next If _Extents Then hCopy._Extents = _Extents.Copy() hCopy.Grid = Grid Return hCopy End Public Sub FindPoint(hSearch As PointF, D As Float, Optional bMidSegment As Boolean, iIgnore As Integer = -1) As Integer Dim X, Y As Float Dim fDist, fDistMin As Float Dim IMin As Integer Dim I As Integer X = hSearch.X Y = hSearch.Y fDistMin = D IMin = -1 If bMidSegment Then For I = 0 To Points.Max - 1 fDist = Abs((Points[I] + Points[I + 1]) / 2 - hSearch) If fDist < fDistMin Then IMin = I fDistMin = fDist Endif Next Else For I = 0 To Points.Max If I = iIgnore Then Continue fDist = Abs(Points[I] - hSearch) If fDist < fDistMin Then IMin = I fDistMin = fDist Endif Next Endif FindDistance = fDistMin Return IMin End Public Sub GetExtents() As RectF Dim X1, Y1, X2, Y2 As Float Dim I As Integer If Points.Count = 0 Then Return If Not _Extents Then X1 = Points[0].X Y1 = Points[0].Y X2 = X1 Y2 = Y1 For I = 1 To Points.Max With Points[I] X1 = Min(X1, .X) Y1 = Min(Y1, .Y) X2 = Max(X2, .X) Y2 = Max(Y2, .Y) End With Next ' X1 = Floor(X1) ' Y1 = Floor(Y1) ' X2 = Ceil(X2) ' Y2 = Ceil(Y2) _Extents = RectF(X1, Y1, X2 - X1, Y2 - Y1) Endif Return _Extents.Copy() End Public Sub Apply(hMatrix As PaintMatrix) Dim I As Integer For I = 0 To Points.Max Points[I] = hMatrix.Map(Points[I]) Next For I = 0 To Magnets.Max Magnets[I] = hMatrix.Map(Magnets[I]) Next _Extents = Null End Public Sub IsVoid() As Boolean Return Points.Count = 0 End Public Sub AddMagnet(hPoint As PointF) If Magnets.Count And If Magnets[Magnets.Max] = hPoint Then Return Magnets.Add(hPoint.Copy()) End Private Sub GetExtentsMagnets() As PointF[] Dim aPoint As New PointF[] Dim X, Y As Float If Points.Count Then With GetExtents() If .W > 0 And If .H > 0 Then Repeat X = 0 Repeat aPoint.Add(PointF(.X + X, .Y + Y)) X += .W / Grid Until X > .W Y += .H / Grid Until Y > .H Endif End With Endif Return aPoint End Public Sub FindMagnet(hPoint As PointF, D As Float, Optional bIgnoreSame As Boolean) As PointF Dim hResult As PointF hResult = CImageSelection.FindMagnetFrom(Magnets, hPoint, D, bIgnoreSame) If hResult Then Return hResult With GetExtents() Return CImageSelection.FindMagnetFrom(GetExtentsMagnets(), hPoint, D, bIgnoreSame) End With End Public Sub SetPoint(iPoint As Integer, hPoint As PointF) Points[iPoint] = hPoint.Copy() _Extents = Null End Public Sub Invert() Points.Reverse End Public Sub Invalidate() _Extents = Null End Public Sub Clean() Dim hPolygon As Polygon If Points.Count < 3 Then Return hPolygon = Points Points = hPolygon.Clean(0.5) Invalidate End Public Sub GetMagnets() As PointF[] Return GetExtentsMagnets().Insert(Magnets) End Public Sub GetOrientation() As Boolean Dim hPolygon As Polygon = Points Return hPolygon.Orientation End Public Sub ToPolygons() As Polygon[] Dim aPoly As Polygon[] aPoly = New Polygon[] aPoly.Add(Points) Return aPoly End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageEditor.class000066400000000000000000002252451411575327000244040ustar00rootroot00000000000000' Gambas class file Public Path As String Public RichText As String Public Enum EFFECT_BALANCE, EFFECT_COLORIZE, EFFECT_DESATURATE, EFFECT_TRANSPARENT, EFFECT_INVERT Private Enum TRANS_FLIP_H, TRANS_FLIP_V, TRANS_ROTATE_L, TRANS_ROTATE_R Property Read ReadOnly As Boolean Private $bReadOnly As Boolean Private $hImage As Image Private $bModify As Boolean Private $iMouse As Integer Private $hCursor As Cursor Private $bFirstTime As Boolean Private $aUndo As New Variant[] Private $aRedo As New Variant[] Private Enum BEGIN_UNDO, END_UNDO Private $sTool As String Private $sToolBefore As String Private $hFirstPoint As PointF Private $hLastPoint As PointF Private $hCurrentPoint As PointF Private $bInsideImage As Boolean Private $bDblClick As Boolean Private $bPress As Boolean Private $bShift As Boolean Private $bCtrl As Boolean Private $bAlt As Boolean Private $bNormal As Boolean = True Private $bFrame As Boolean Private $fDashOffset As Float Private $SX As Integer Private $SY As Integer Private $hStrokeImage As Image 'Private $aStroke As New PointF[] Private $hStrokeExtents As Rect 'Private $hStrokeOrigin As Point Private $hSelect As CImageSelection Static Private $hNullSelection As CImageSelection Private $fLastSelectW As Float Private $fLastSelectH As Float Private $hLastMagnet As PointF Private $hMagnet As PointF Private $sMagnet As String Private $iClipboard As Integer Private $hPaste As Image Private $hPasteCurrent As CImageSelection Private $hPasteSelect As CImageSelection 'Private $iAngle As Integer Private $hChangeRect As RectF Private $iChangeAction As Integer Private $vChangeIndex As Variant Private Enum CHANGE_NOTHING, CHANGE_MOVE, CHANGE_RESIZE, CHANGE_ROTATE, CHANGE_POINT, CHANGE_INSERT, CHANGE_SELECT Private $bShowGrid As Boolean Private $hTextSelect As CImageSelection Private $sLastColor As Integer Private $cInfo As New Collection Private $bInfoTop As Boolean Private $bFirstGrid As Boolean Private $vGrid As Variant Public Sub _new(sPath As String) Me.Name = File.Name(sPath) Path = sPath dwgBackground.Lower Project.InitTooltip(dwgInfo) 'Reload SetTool("move") End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ClearSelection() If Not $hSelect Then Return AddUndo($hSelect.Copy()) $hSelect = Null $hChangeRect = Null $hMagnet = Null $hLastMagnet = Null $sMagnet = "" $iChangeAction = CHANGE_NOTHING RefreshSelection End Private Sub CreateSelection() If $hSelect Then Return $hSelect = New CImageSelection RefreshSelection End Public Sub Reload() $hImage = Image.Load(Path) imvImage.Image = $hImage ClearSelection $aUndo.Clear $aRedo.Clear btnZoomFit_Click SetReadOnly panBackground_Arrange Modify(True) End Public Sub LoadFile() As Boolean Reload End Public Sub btnZoomIn_Click() If cmbZoom.Index = 0 Then Return Try Dec cmbZoom.Index End Public Sub btnZoomOut_Click() Try Inc cmbZoom.Index End Public Sub cmbZoom_Click() imvImage.Zoom = CFloat(Trim(String.Left(cmbZoom.Text, -1))) imvImage.Grid = imvImage.Zoom > 8 panBackground_Arrange $hCurrentPoint = FindBestMagnet(GetImagePos()) UpdateInfo End Public Sub IsModified() As Boolean Return $bModify End Public Sub dwgBackground_Draw() Dim hTopLeft As Point Dim hBottomRight As Point Project.DrawBackground() hTopLeft = imvImage.ImageToView(Point(0, 0)) If Not hTopLeft Then Return hBottomRight = imvImage.ImageToView(Point(imvImage.Image.W, imvImage.Image.H)) Paint.Background = Color.SetAlpha(Color.Black, 192) Paint.Rectangle(hTopLeft.X - 2, hTopLeft.Y - 2, hBottomRight.X - hTopLeft.X + 4, 2) Paint.Rectangle(hTopLeft.X - 2, hBottomRight.Y, hBottomRight.X - hTopLeft.X + 4, 2) Paint.Rectangle(hTopLeft.X - 2, hTopLeft.Y, 2, hBottomRight.Y - hTopLeft.Y) Paint.Rectangle(hBottomRight.X, hTopLeft.Y, 2, hBottomRight.Y - hTopLeft.Y) Paint.Fill End Public Sub Form_Open() ReadConfig SetReadOnly End Public Sub SetReadOnly() Dim bReadOnly As Boolean If Project.ReadOnly Or If Project.Running Or If Project.IsReadOnly(Path) Then bReadOnly = True Endif $bReadOnly = bReadOnly Project.UpdateLockedAction(Me) UpdateMenu DrawTitle FImageProperty.OnProjectActivate End Private Sub DrawTitle() Project.DrawTitle(Me) End Public Sub btnZoomNormal_Click() cmbZoom.Index = cmbZoom.Find("1×") End Public Sub Modify(Optional bReset As Boolean) If Project.ReadOnly Or $bReadOnly Then Return If $bModify <> bReset Then Return $bModify = Not bReset DrawTitle Inc Project.TimeStamp End Private Sub SetImage(hImage As Image) AddUndo($hImage) $hImage = hImage imvImage.Update($hImage) Modify imvImage.SetFocus UpdateInfo End Private Sub AddUndo(hObject As Object) If Not hObject Then Return If $aUndo.Count = 256 Then $aUndo.Remove(0) $aUndo.Add(hObject) $aRedo.Clear End Private Sub ApplyTransformation(iTrans As Integer) Dim hImage As Image If $hChangeRect Then If $hSelect Then AddUndo($hSelect.Copy()) Select Case iTrans Case TRANS_FLIP_H $hSelect.HFlip() Case TRANS_FLIP_V $hSelect.VFlip() Case TRANS_ROTATE_L $hSelect.Rotate(Rad(90)) Case TRANS_ROTATE_R $hSelect.Rotate(Rad(-90)) End Select RefreshSelection Endif If $hPaste Then Select Case iTrans Case TRANS_FLIP_H $hPaste.Mirror(True, False) '$hPasteCurrent.HFlip '$hPasteSelect.HFlip Case TRANS_FLIP_V $hPaste.Mirror(False, True) '$hPasteCurrent.VFlip '$hPasteSelect.VFlip Case TRANS_ROTATE_L '$hPaste.RotateLeft() 'Swap $hChangeRect.W, $hChangeRect.H $hPasteCurrent.Rotate(Rad(90)) '$hPasteSelect.Rotate(Rad(90)) Case TRANS_ROTATE_R '$hPaste.RotateRight() 'Swap $hChangeRect.W, $hChangeRect.H $hPasteCurrent.Rotate(Rad(-90)) '$hPasteSelect.Rotate(Rad(-90)) End Select UpdatePasteCurrent Endif imvImage.Refresh Return Endif BeginUndo ClearSelection hImage = $hImage.Copy() Select Case iTrans Case TRANS_FLIP_H hImage.Mirror(True, False) Case TRANS_FLIP_V hImage.Mirror(False, True) Case TRANS_ROTATE_L hImage.RotateLeft() Case TRANS_ROTATE_R hImage.RotateRight() End Select SetImage(hImage) EndUndo End Public Sub btnRotateL_Click() ApplyTransformation(TRANS_ROTATE_L) End Public Sub btnRotateR_Click() ApplyTransformation(TRANS_ROTATE_R) End Public Sub btnFlipH_Click() ApplyTransformation(TRANS_FLIP_H) End Public Sub btnFlipV_Click() ApplyTransformation(TRANS_FLIP_V) End Public Function Save(Optional bForce As Boolean) As Boolean If Project.ReadOnly Then Return If $bReadOnly Then Return If Not $bModify And If Not bForce Then Return 'PRINT "Picture not saved" 'HideSelection Save.Begin(Path) $hImage.Save(Path) MCompressFile.Compress(Path) 'Project.RefreshKey(Path) $bModify = False DrawTitle Save.End() Catch Return Save.Error() End Public Sub btnSave_Click() Me.Save End Public Sub btnReload_Click() Project.ReloadFile(Me) End Public Sub btnResize_Click() Dim X, Y, W, H As Integer Dim hImage As Image Dim F As Float FImageResize.ImageWidth = $hImage.Width FImageResize.ImageHeight = $hImage.Height If FImageResize.Run() Then Return W = FImageResize.ImageWidth H = FImageResize.ImageHeight If W = $hImage.W And If H = $hImage.H Then Return If FImageResize.Stretch Then F = W / $hImage.W If F > 1 And If Frac(F) = 0 And If F = H / $hImage.H Then hImage = New Image(W, H, Color.Transparent) Paint.Begin(hImage) Paint.ZoomImage($hImage, F, 0, 0) Paint.End SetImage(hImage) Else SetImage($hImage.Stretch(W, H)) Endif Else hImage = New Image(W, H, Color.Transparent) If FImageResize.CenterH Then X = (W - $hImage.W) \ 2 If FImageResize.CenterV Then Y = (H - $hImage.H) \ 2 hImage.DrawImage($hImage, X, Y) SetImage(hImage) Endif btnZoomFit_Click End Public Sub Rename(sNewName As String, sNewPath As String) Me.Name = sNewName Path = sNewPath DrawTitle End Private Sub SetTool(sAction As String) Dim hCtrl As ToolButton Dim hImage As Image If Not sAction Then Return 'If $sTool = sAction Then Return For Each hCtrl In [btnMove, btnDraw, btnErase, btnRectangle, btnEllipse, btnLine, btnMagic, btnPaste, btnEditSelection, btnText] Object.Lock(hCtrl) hCtrl.Value = hCtrl.Tag = sAction Object.Unlock(hCtrl) Next If $sTool = "paste" Then If sAction = "paste" Then DoPaste ClearPaste Endif If $hSelect Then $hSelect.SelectAll() $hChangeRect = Null $iChangeAction = CHANGE_NOTHING $iMouse = Mouse.Arrow $hCursor = Null Select Case sAction Case "move" $iMouse = Mouse.SizeAll Case "draw", "erase", "rectangle", "ellipse" '$iMouse = Mouse.Cross $iMouse = Mouse.Custom $hCursor = New Cursor(Picture["img/32/cross.png"], 15, 15) Case "line" $hLastPoint = Null Case "magic" $iMouse = Mouse.Custom $hCursor = New Cursor(Picture["img/32/magic.png"], 11, 11) Case "paste" If $sTool <> "paste" Then $sToolBefore = $sTool hImage = FImageProperty.GetClipboard() If hImage Then $hPaste = hImage $hPasteCurrent = New CImageSelection $hPasteCurrent.Rectangle(0, 0, $hPaste.W, $hPaste.H) $hPasteCurrent.Translate(($hImage.W - $hPaste.W) \ 2, ($hImage.H - $hPaste.H) \ 2) UpdatePasteCurrent Endif Case "change" If $sTool <> "paste" Then $sToolBefore = $sTool If HasSelection() Then $hChangeRect = $hSelect.GetExtents() Endif Case "text" '$iMouse = Mouse.Cross $iMouse = Mouse.Custom $hCursor = New Cursor(Picture["img/32/cross.png"], 15, 15) CreateSelection $hTextSelect = $hSelect.Copy() $hLastPoint = imvImage.ViewToImage(Point(imvImage.ScrollX + imvImage.ClientW / 2, imvImage.ScrollY + imvImage.ClientH / 2)) FImageProperty.ShowTextOption(True, True) End Select $sTool = sAction FImageProperty.OnToolChange($sTool) imvImage.Refresh End Public Sub btnTool_Click() SetTool(Last.Tag) End Public Sub imvImage_Scroll() If Not $bPress Then imvImage_MouseMove End Private Sub Undo() Dim vUndo As Variant Dim iLevel As Integer If $aUndo.Count = 0 Then Return Repeat vUndo = $aUndo.Pop() If TypeOf(vUndo) = gb.Integer Then $aRedo.Add(vUndo) If vUndo = END_UNDO Then Inc iLevel Else If vUndo = BEGIN_UNDO Then Dec iLevel Endif Else If vUndo Is Image Then $aRedo.Add($hImage) $hImage = vUndo imvImage.Update($hImage) Modify Else If vUndo Is CImageSelection Then If Not $hSelect Then If Not $hNullSelection Then $hNullSelection = New CImageSelection $aRedo.Add($hNullSelection) Else $aRedo.Add($hSelect) Endif $hSelect = vUndo imvImage.Refresh Else If vUndo Is PointF Then $aRedo.Add($hLastPoint) $hLastPoint = vUndo Endif Until iLevel = 0 RefreshSelection UpdateInfo End Public Sub btnUndo_Click() Undo End Public Sub btnRedo_Click() Dim vUndo As Variant Dim iLevel As Integer If $aRedo.Count = 0 Then Return Repeat vUndo = $aRedo.Pop() If TypeOf(vUndo) = gb.Integer Then $aUndo.Add(vUndo) If vUndo = BEGIN_UNDO Then Inc iLevel Else If vUndo = END_UNDO Then Dec iLevel Endif Else If vUndo Is Image Then $aUndo.Add($hImage) $hImage = vUndo imvImage.Update($hImage) Modify Else If vUndo Is CImageSelection Then $aUndo.Add($hSelect) $hSelect = vUndo If $hSelect = $hNullSelection Then $hSelect = Null imvImage.Refresh Else If vUndo Is PointF Then $aUndo.Add($hLastPoint) $hLastPoint = vUndo Endif Until iLevel = 0 RefreshSelection UpdateInfo End Private Sub GetPos() As Point Return Point(Mouse.ScreenX - imvImage.ScreenX, Mouse.ScreenY - imvImage.ScreenY) End Private Sub GetImagePos() As PointF Dim hPos As Point = GetPos() Dim hPoint As Point = imvImage.ViewToImage(hPos) Dim hOrg As Point = imvImage.ImageToView(Point(0, 0)) Dim X As Float Dim Y As Float Dim iSnap As Integer X = (hPos.X - hOrg.X) / imvImage.Zoom Y = (hPos.Y - hOrg.Y) / imvImage.Zoom X = hPoint.X + X - Floor(X) Y = hPoint.Y + Y - Floor(Y) If $hMagnet Then If Abs($hMagnet - PointF(X, Y)) <= 8 / imvImage.Zoom Then Return $hMagnet Endif iSnap = FImageProperty.GetGridSnap() If $bShowGrid And If iSnap And If $sTool <> "draw" And If $sTool <> "erase" Then X = (CInt(Floor(X + iSnap \ 2)) \ iSnap) * iSnap Y = (CInt(Floor(Y + iSnap \ 2)) \ iSnap) * iSnap Else If $sTool = "paste" Then X = Floor(X) Y = Floor(Y) Else If $sTool = "draw" Or If $sTool = "erase" Then If FImageProperty.GetSize() Then X = Floor(X * 2) / 2 Y = Floor(Y * 2) / 2 Else X = Floor(X) Y = Floor(Y) Endif Else If $sTool = "line" And If $bShift Then Else X = Floor(X * 2) / 2 Y = Floor(Y * 2) / 2 Endif Endif Return PointF(X, Y) End Private Sub StartStroke() Dim iSize As Integer = FImageProperty.GetSize() $hStrokeImage = New Image($hImage.W, $hImage.H, Color.Transparent) Paint.Begin($hStrokeImage) FImageProperty.PaintForStroke(Null, True) If iSize = 0 Then $hLastPoint.X = CInt($hLastPoint.X) $hLastPoint.Y = CInt($hLastPoint.Y) Paint.Rectangle($hLastPoint.X, $hLastPoint.Y, 1, 1) $hStrokeExtents = Rect($hLastPoint.X, $hLastPoint.Y, 1, 1) Else Paint.Arc($hLastPoint.X, $hLastPoint.Y, iSize / 2) $hStrokeExtents = Rect($hLastPoint.X - iSize \ 2 - 2, $hLastPoint.Y - iSize \ 2 - 2, iSize * 2 + 2, iSize * 2 + 2) Endif Paint.Fill Paint.End imvImage.Refresh End Private Sub AddStroke(hPoint As PointF) Dim iSize As Integer = FImageProperty.GetSize() If iSize = 0 Then hPoint.X = CInt(hPoint.X) hPoint.Y = CInt(hPoint.Y) $hStrokeExtents = $hStrokeExtents.Union(Rect($hLastPoint.X - 1, $hLastPoint.Y - 1, 3, 3)) Else $hStrokeExtents = $hStrokeExtents.Union(Rect($hLastPoint.X - iSize \ 2 - 2, $hLastPoint.Y - iSize \ 2 - 2, iSize * 2 + 2, iSize * 2 + 2)) Endif $hStrokeExtents = $hStrokeExtents.Intersection(Rect(0, 0, $hImage.W, $hImage.H)) If Not $hStrokeExtents Then $hStrokeExtents = New Rect If hPoint = $hLastPoint Then Return Paint.Begin($hStrokeImage) FImageProperty.PaintForStroke(Null, True) If Not Paint.AntiAlias Then Paint.Translate(0.499, 0.499) Paint.MoveTo($hLastPoint.X, $hLastPoint.Y) Paint.LineTo(hPoint.X, hPoint.Y) Paint.Stroke Paint.End $hLastPoint = hPoint imvImage.Refresh End ' Public Sub timStroke_Timer() ' ' Dim iSize As Integer ' ' If $aStroke.Count = 0 Then Return ' ' iSize = Max(1, FImageProperty.GetSize()) ' ' With $hStrokeExtents.Copy() ' .Adjust(- iSize) ' .Left = Max(0, .Left) ' .Top = Max(0, .Top) ' $hStrokeOrigin = Point(.X, .Y) ' $hStrokeImage = $hImage.Copy(.X, .Y, .W, .H) ' Paint.Begin($hStrokeImage) ' Paint.Translate(- .X, - .Y) ' DrawTool ' Paint.End ' End With ' ' imvImage.Refresh ' ' End Public Sub imvImage_MouseDown() Me.SetFocus $bPress = Mouse.Left If $bPress Then BeginUndo Else If Mouse.Middle And If $bInsideImage And If Not $bReadOnly Then With GetImagePos() Try FImageProperty.SetColor($hImage[.X, .Y]) End With Endif Endif Select Case $sTool Case "move" $SX = imvImage.ScrollX $SY = imvImage.ScrollY Case "draw", "erase" If $bPress Then If Not $bShift Then If Not $bCtrl Then $hLastPoint = GetImagePos() If $hMagnet Then $hLastPoint = $hMagnet Endif StartStroke() Endif Endif 'AddStroke($hLastPoint) Case "line" If $bPress Then CreateSelection BeginUndo AddUndo($hSelect.Copy()) If $hLastPoint Then AddUndo($hLastPoint.Copy()) EndUndo ' If Not $hCurrentPoint Then ' $hCurrentPoint = GetImagePos() ' If $hMagnet Then $hCurrentPoint = $hMagnet ' Endif FindCurrentPoint() If Not $bFrame Or If Not $hLastPoint Or If $hSelect.Count = 0 Then $hSelect.MoveTo($hCurrentPoint.X, $hCurrentPoint.Y) Else $hSelect.LineTo($hCurrentPoint.X, $hCurrentPoint.Y) '$hSelect.AddMagnet(PointF(($hCurrentPoint.X + $hLastPoint.X) / 2, ($hCurrentPoint.Y + $hLastPoint.Y) / 2)) Endif $hFirstPoint = $hCurrentPoint $hLastPoint = $hCurrentPoint imvImage.Refresh Endif Case "rectangle", "ellipse" If $bPress Then CreateSelection AddUndo($hSelect.Copy()) $hLastPoint = GetImagePos() If $hMagnet Then $hLastPoint = $hMagnet Endif Case "magic" If $bPress Then CreateSelection AddUndo($hSelect.Copy()) $hLastPoint = GetImagePos() MagicWand Endif Case "paste" If $bPress Then If $hPaste Then $hLastPoint = GetImagePos() 'If $hMagnet Then $hLastPoint = $hMagnet '$hLastPoint = GetImagePos() Endif Endif Case "change" If $bPress Then If $iChangeAction = CHANGE_NOTHING Then $SX = imvImage.ScrollX $SY = imvImage.ScrollY Else AddUndo($hSelect.Copy()) $hLastPoint = GetImagePos() If $hMagnet Then $hLastPoint = $hMagnet If $iChangeAction = CHANGE_INSERT Then $vChangeIndex = $hSelect.InsertPoint($hLastPoint, $vChangeIndex) AddUndo($hSelect.Copy()) ' Avoid automatic undo at MouseUp $iChangeAction = CHANGE_POINT RefreshSelection Else If $iChangeAction = CHANGE_SELECT Then If $vChangeIndex And If $vChangeIndex[0] = $hSelect.Current Then $hSelect.SelectNext(8 / imvImage.Zoom) Else $hSelect.Select($vChangeIndex[0]) Endif RefreshSelection Endif Endif Endif End Select imvImage_MouseMove() End Private Sub UpdateInfo() $cInfo.Clear If $hCurrentPoint Then If $hCurrentPoint.InRect(RectF(0, 0, $hImage.W, $hImage.H)) Or If $bPress Then If $sTool = "draw" Or $sTool = "erase" And If FImageProperty.GetSize() = 0 Then $cInfo!X = CStr(CInt($hCurrentPoint.X)) $cInfo!Y = CStr(CInt($hCurrentPoint.Y)) Else $cInfo!X = Format($hCurrentPoint.X, "0.0") $cInfo!Y = Format($hCurrentPoint.Y, "0.0") Endif If $bPress Then If $sTool = "rectangle" Or If $sTool = "ellipse" Then $cInfo!Width = Format($fLastSelectW, "0.0") $cInfo!Height = Format($fLastSelectH, "0.0") Endif Endif $cInfo!Color = $hImage[$hCurrentPoint.X, $hCurrentPoint.Y] Endif Endif If $cInfo.Count = 0 Then $cInfo!Width = $hImage.Width $cInfo!Height = $hImage.Height $cInfo!Size = Util.GetFileSize($hImage.Width * $hImage.Height * 4) Endif dwgInfo.Resize(dwgInfo.Font.TextWidth("9") * Max(5, 3 + Len(CStr(Max($hImage.Width, $hImage.Height)))) * 4 + Desktop.Scale * 4, dwgInfo.Font.Height * 2 + Desktop.Scale * 2) MoveInfo dwgInfo.Refresh End Private Sub GetRectLimits(hRect As RectF) As PointF[] With hRect Return [PointF(.X, .Y), PointF(.X + .W, .Y), PointF(.X, .Y + .H), PointF(.X + .W, .Y + .H)] ',PointF(.X + .W / 2, .Y + .H / 2) End With End Private Sub FindBestMagnetFor(hPoint As PointF, Optional iIgnoreFrom As Integer) As PointF Dim hMagnet As PointF If $hSelect Then If $sTool = "change" Then If $iChangeAction = CHANGE_MOVE And If $hSelect.Current < 0 Then Goto NO_SELECT If $iChangeAction = CHANGE_RESIZE Or If $iChangeAction = CHANGE_ROTATE Then Goto NO_SELECT Endif hMagnet = $hSelect.FindMagnet(hPoint, 8 / imvImage.Zoom, iIgnoreFrom) If hMagnet Then Return hMagnet Endif NO_SELECT: If $sTool <> "move" Then hMagnet = CImageSelection.FindMagnetFrom(GetRectLimits(RectF(0, 0, $hImage.W, $hImage.H)), hPoint, 8 / imvImage.Zoom) If hMagnet Then Return hMagnet Endif If $hChangeRect Then If $bPress And If $iChangeAction = CHANGE_POINT Then hMagnet = $hSelect.FindPoint(hPoint, 8 / imvImage.Zoom,, $vChangeIndex) If hMagnet Then Return hMagnet Endif hMagnet = CImageSelection.FindMagnetFrom(GetRectLimits($hChangeRect), hPoint, 8 / imvImage.Zoom, True) If hMagnet Then Return hMagnet Endif If $sTool = "line" And If $hSelect And If $hSelect.Shapes.Count Then hMagnet = CImageSelection.FindMagnetFrom($hSelect.Shapes[$hSelect.Shapes.Max].Magnets, hPoint, 8 / imvImage.Zoom) If hMagnet Then Return hMagnet Endif End Private Sub SetMagnet(hMagnet As PointF) If hMagnet <> $hMagnet Then ' A quoi sert $hLastMagnet? '$hLastMagnet = $hMagnet $hMagnet = hMagnet '$sMagnet = sName imvImage.Refresh Endif End Private Sub FindBestMagnet(hCurrent As PointF) As PointF Dim hMagnet As PointF Dim bCurrent As Boolean Dim hPoint As PointF Dim iIgnoreFrom As Integer If $sTool = "move" Then Return hCurrent If $sTool = "change" Or $sTool = "paste" And If Not $bPress Then Return hCurrent iIgnoreFrom = -1 If $bPress Then If $sTool = "rectangle" Or If $sTool = "ellipse" Or If $sTool = "line" Then If $hSelect Then iIgnoreFrom = $hSelect.Count - 1 Else If $sTool = "text" Then iIgnoreFrom = $hTextSelect.Count Endif Endif If $hMagnet And If hCurrent = $hMagnet Then Return hCurrent hMagnet = FindBestMagnetFor(hCurrent, iIgnoreFrom) If hMagnet Then bCurrent = True Goto FIND_MAGNET Endif If $bPress Then If $hChangeRect And If $iChangeAction <> CHANGE_NOTHING And If $iChangeAction <> CHANGE_POINT Then If $iChangeAction <> CHANGE_RESIZE And If $iChangeAction <> CHANGE_ROTATE Then 'Print "~ "; hCurrent - $hCurrentPoint If $hSelect Then If $hSelect.Current >= 0 Then For Each hPoint In $hSelect.Shapes[$hSelect.Current].GetMagnets() hPoint += hCurrent - $hCurrentPoint hMagnet = FindBestMagnetFor(hPoint, iIgnoreFrom) If hMagnet Then Goto FIND_MAGNET Next Endif For Each hPoint In GetRectLimits($hSelect.GetExtents()) hPoint += hCurrent - $hCurrentPoint hMagnet = FindBestMagnetFor(hPoint, iIgnoreFrom) If hMagnet Then Goto FIND_MAGNET Next Else If $hPasteSelect Then For Each hPoint In GetRectLimits($hPasteSelect.GetExtents()) hPoint += hCurrent - $hCurrentPoint hMagnet = FindBestMagnetFor(hPoint, iIgnoreFrom) If hMagnet Then Goto FIND_MAGNET Next Endif Endif Endif Endif FIND_MAGNET: SetMagnet(hMagnet) If hMagnet Then If bCurrent Then hCurrent = hMagnet $hLastMagnet = Null 'Print "Current";; hCurrent Else 'Print "Other";; hCurrent;; hMagnet - hPoint hCurrent = hCurrent + hMagnet - hPoint Endif Else If $hLastMagnet Then If hCurrent.X > ($hLastMagnet.X - 8 / imvImage.Zoom) And If hCurrent.X < ($hLastMagnet.X + 8 / imvImage.Zoom) Then hCurrent.X = $hLastMagnet.X Endif If hCurrent.Y > ($hLastMagnet.Y - 8 / imvImage.Zoom) And If hCurrent.Y < ($hLastMagnet.Y + 8 / imvImage.Zoom) Then hCurrent.Y = $hLastMagnet.Y Endif Endif Return hCurrent End Private Sub SetMouse(iMouse As Integer) If iMouse = Mouse.Custom Then imvImage.Cursor = $hCursor Endif imvImage.Mouse = iMouse End Private Sub FindCurrentPoint() Dim A As Float Dim D As Float $hCurrentPoint = FindBestMagnet(GetImagePos()) If $bFrame Then If $bAlt Then If $hLastPoint Then A = Ang($hCurrentPoint.X - $hLastPoint.X, $hCurrentPoint.Y - $hLastPoint.Y) D = Mag($hCurrentPoint.X - $hLastPoint.X, $hCurrentPoint.Y - $hLastPoint.Y) If A < 0 Then A += Pi(2) A = Rad(Int(Deg(A) / 15 + 0.5) * 15) $hCurrentPoint = PointF(CInt(($hLastPoint.X + Cos(A) * D) * 2 + 0.5) / 2, CInt(($hLastPoint.Y + Sin(A) * D) * 2 + 0.5) / 2) Endif Endif Endif UpdateInfo End Public Sub imvImage_MouseMove() Dim hPos As Point = GetPos() Dim WW, HH As Float Dim iMouse As Integer Dim XC, YC As Float Dim A As Float Dim hSelect As CImageSelection Dim I As Integer Dim X1, X2, Y1, Y2 As Float If $bDblClick Then Return FindCurrentPoint If $bPress Then If $sTool <> "move" Then imvImage.EnsureVisible(imvImage.ScrollX + hPos.X - 32, imvImage.ScrollY + hPos.Y - 32, 64, 64) Select Case $sTool Case "move" imvImage.Scroll($SX - (Mouse.X - Mouse.StartX), $SY - (Mouse.Y - Mouse.StartY)) Case "draw", "erase" If $bShift Then If $sTool = "draw" Then With GetImagePos() FImageProperty.SetColor($hImage[.X, .Y]) End With Endif Else If $hLastPoint.X <> $hCurrentPoint.X Or If $hLastPoint.Y <> $hCurrentPoint.Y Then AddStroke($hCurrentPoint) Endif Endif Case "line" If $bFrame And If $bAlt Then Else $fLastSelectW = $hCurrentPoint.X - $hLastPoint.X $fLastSelectH = $hCurrentPoint.Y - $hLastPoint.Y If $hLastPoint.X <> $hCurrentPoint.X Or If $hLastPoint.Y <> $hCurrentPoint.Y Then $hSelect.LineTo($hCurrentPoint.X, $hCurrentPoint.Y) imvImage.Refresh $hLastPoint = $hCurrentPoint Endif If $hFirstPoint And If Hyp($hCurrentPoint.X - $hFirstPoint.X, $hCurrentPoint.Y - $hFirstPoint.Y) > 8 / imvImage.Zoom Then $hSelect.AddMagnet($hFirstPoint) 'Debug "add magnet ";; $hFirstPoint.X;; $hFirstPoint.Y $hFirstPoint = Null Endif Endif Case "rectangle", "ellipse" If $bCtrl Then $hCurrentPoint.Y = $hLastPoint.Y + Abs($hCurrentPoint.X - $hLastPoint.X) * Sgn($hCurrentPoint.Y - $hLastPoint.Y) If $hLastPoint.X <> $hCurrentPoint.X Or If $hLastPoint.Y <> $hCurrentPoint.Y Then $hSelect = $aUndo[$aUndo.Max].Copy() X1 = $hCurrentPoint.X Y1 = $hCurrentPoint.Y X2 = $hLastPoint.X Y2 = $hLastPoint.Y If X1 > X2 Then Swap X1, X2 If Y1 > Y2 Then Swap Y1, Y2 If X2 - X1 >= 0.25 And If Y2 - Y1 >= 0.25 Then 'X1 = Floor(X1) 'X2 = Ceil(X2) 'Y1 = Floor(Y1) 'Y2 = Ceil(Y2) WW = X2 - X1 HH = Y2 - Y1 Else WW = 0 HH = 0 Endif If $sTool = "ellipse" Then If $bShift Then $hSelect.Ellipse($hLastPoint.X - WW, $hLastPoint.Y - HH, WW * 2, HH * 2) WW *= 2 HH *= 2 Else $hSelect.Ellipse(Min($hLastPoint.X, $hCurrentPoint.X), Min($hLastPoint.Y, $hCurrentPoint.Y), WW, HH) Endif Else If $bShift Then $hSelect.Rectangle(X1 - WW, Y1 - HH, WW * 2, HH * 2, FImageProperty.GetRoundness()) WW *= 2 HH *= 2 Else $hSelect.Rectangle(X1, Y1, WW, HH, FImageProperty.GetRoundness()) Endif Endif imvImage.Refresh $fLastSelectW = WW $fLastSelectH = HH UpdateInfo Endif Case "text" $hLastPoint = GetImagePos() '$hCurrentPoint FImageProperty.RefreshTextOption ' Case "ellipse" ' ' If $bCtrl Then $hCurrentPoint.Y = $hLastPoint.Y + Abs($hCurrentPoint.X - $hLastPoint.X) * Sgn($hCurrentPoint.Y - $hLastPoint.Y) ' If $hLastPoint.X <> $hCurrentPoint.X Or If $hLastPoint.Y <> $hCurrentPoint.Y Then ' $hSelect = $aUndo[$aUndo.Max].Copy() ' WW = Abs(CInt($hCurrentPoint.X) - CInt($hLastPoint.X)) '- ($hCurrentPoint.X > $hLastPoint.X) ' HH = Abs(CInt($hCurrentPoint.Y) - CInt($hLastPoint.Y)) '- ($hCurrentPoint.Y > $hLastPoint.Y) ' If $bShift Then ' WW *= Sqr(2) ' HH *= Sqr(2) ' $hSelect.Ellipse(CInt($hLastPoint.X) - WW, CInt($hLastPoint.Y) - HH, WW * 2, HH * 2) ' Else ' $hSelect.Ellipse(CInt(Min($hLastPoint.X, $hCurrentPoint.X)), CInt(Min($hLastPoint.Y, $hCurrentPoint.Y)), WW, HH) ' Endif ' imvImage.Refresh ' $fLastSelectW = WW ' $fLastSelectH = HH ' Endif Case "change", "paste" If $iChangeAction = CHANGE_NOTHING And If $sTool = "change" Then ' No mouse event data possible Try imvImage.Scroll($SX - (Mouse.X - Mouse.StartX), $SY - (Mouse.Y - Mouse.StartY)) Else If $iChangeAction = CHANGE_POINT Then $hSelect.SetPoint($vChangeIndex, $hCurrentPoint) Else If $iChangeAction = CHANGE_SELECT Then If Hyp(Mouse.X - Mouse.StartX, Mouse.Y - Mouse.StartY) > 4 Then $iChangeAction = CHANGE_MOVE AddUndo($hSelect.Copy()) $hSelect.Translate($hCurrentPoint.X - $hLastPoint.X, $hCurrentPoint.Y - $hLastPoint.Y) '$hSelect = $aUndo[$aUndo.Max].Copy() '$hSelect.Translate($hCurrentPoint.X - $hLastPoint.X, $hCurrentPoint.Y - $hLastPoint.Y) Endif Else If $iChangeAction Then If $sTool = "change" Then $hSelect = $aUndo[$aUndo.Max].Copy() hSelect = $hSelect Else $hPasteSelect = $hPasteCurrent.Copy() hSelect = $hPasteSelect Endif Select Case $iChangeAction Case CHANGE_RESIZE If $bShift Then XC = $hChangeRect.X + $hChangeRect.W / 2 YC = $hChangeRect.Y + $hChangeRect.H / 2 Else XC = $hChangeRect.X YC = $hChangeRect.Y Endif If $bCtrl Then hSelect.Scale(($hCurrentPoint.X - XC) / ($hLastPoint.X - XC), ($hCurrentPoint.X - XC) / ($hLastPoint.X - XC), Not $bShift) Else hSelect.Scale(($hCurrentPoint.X - XC) / ($hLastPoint.X - XC), ($hCurrentPoint.Y - YC) / ($hLastPoint.Y - YC), Not $bShift) Endif Case CHANGE_ROTATE XC = $hChangeRect.X + $hChangeRect.W / 2 YC = $hChangeRect.Y + $hChangeRect.H / 2 A = ($hLastPoint.X - XC) * ($hCurrentPoint.X - XC) + ($hLastPoint.Y - YC) * ($hCurrentPoint.Y - YC) Try A /= Hyp($hLastPoint.X - XC, $hLastPoint.Y - YC) * Hyp($hCurrentPoint.X - XC, $hCurrentPoint.Y - YC) If Not Error Then A = Max(-1, Min(1, A)) A = ACos(A) If ($hCurrentPoint.X - XC) / ($hLastPoint.X - XC) > ($hCurrentPoint.Y - YC) / ($hLastPoint.Y - YC) Then A = -A If $bAlt Then A = Rad(Int(Deg(A) / 15) * 15) hSelect.Rotate(-A) Endif Case CHANGE_MOVE hSelect.Translate($hCurrentPoint.X - $hLastPoint.X, $hCurrentPoint.Y - $hLastPoint.Y) End Select ' If $sTool = "paste" Then ' If $hPaste Then ' $hPasteCurrent = $hPasteSelect.Copy() ' $hChangeRect = $hPasteCurrent.GetExtents() ' Endif ' Endif Endif imvImage.Refresh End Select Else If $bFrame Then imvImage.Refresh Endif If $hChangeRect And If Not $bPress Then iMouse = Mouse.Arrow $iChangeAction = CHANGE_NOTHING $vChangeIndex = Null If $hSelect Then I = $hSelect.FindShape($hCurrentPoint, 8 / imvImage.Zoom) If I >= 0 Then iMouse = Mouse.SizeAll If $vChangeIndex And If $vChangeIndex[0] = $hSelect.Current Then $iChangeAction = CHANGE_MOVE Else $iChangeAction = CHANGE_SELECT Endif $vChangeIndex = [I, -1] Else If $hChangeRect.Contains($hCurrentPoint.X, $hCurrentPoint.Y) Then If $hSelect.FindPoint($hCurrentPoint, 8 / imvImage.Zoom) Then iMouse = Mouse.Arrow $iChangeAction = CHANGE_POINT $vChangeIndex = CImageSelection.FindIndex Else If $hSelect.FindPoint($hCurrentPoint, 8 / imvImage.Zoom, True) Then iMouse = Mouse.Cross $iChangeAction = CHANGE_INSERT $vChangeIndex = CImageSelection.FindIndex Endif Endif Endif Endif If $iChangeAction = CHANGE_NOTHING Then If Hyp(Abs($hChangeRect.X - $hCurrentPoint.X), Abs($hChangeRect.Y - $hCurrentPoint.Y)) < (16 / imvImage.Zoom) Then iMouse = Mouse.Cross $iChangeAction = CHANGE_ROTATE SetMagnet(Null) Else If Hyp(Abs($hChangeRect.X + $hChangeRect.W - $hCurrentPoint.X), Abs($hChangeRect.Y + $hChangeRect.H - $hCurrentPoint.Y)) < (16 / imvImage.Zoom) Then iMouse = Mouse.Cross $iChangeAction = CHANGE_RESIZE SetMagnet(Null) Else If $hChangeRect.Contains($hCurrentPoint.X, $hCurrentPoint.Y) Then iMouse = Mouse.SizeAll $iChangeAction = CHANGE_MOVE SetMagnet(Null) Endif Endif SetMouse(iMouse) Else If $hCurrentPoint.InRect(RectF(0, 0, $hImage.W, $hImage.H)) Or If $bPress Then $bInsideImage = True SetMouse($iMouse) Else $bInsideImage = False SetMouse(Mouse.Default) Endif Endif End Private Sub UpdateTool() Select Case $sTool Case "draw", "erase" If $bCtrl <> $bFrame Then $bFrame = $bCtrl imvImage.Refresh Endif Case "line" If $bCtrl <> $bFrame Then $bFrame = $bCtrl imvImage.Refresh Endif End Select End Private Sub UpdatePasteCurrent() $hChangeRect = $hPasteCurrent.GetExtents() $hPasteSelect = $hPasteCurrent.Copy() imvImage.Refresh End Public Sub Form_KeyPress() Dim DY As Integer Dim DX As Integer $bShift = Key.Shift $bCtrl = Key.Control $bAlt = Key.Alt $bNormal = Key.Normal UpdateTool If $hSelect And If $hChangeRect Then If Key.Code = Key.Delete Or If Key.Code = Key.Backspace Then If $vChangeIndex Then If $vChangeIndex[1] = -1 Then $hSelect.RemoveShape($vChangeIndex[0]) Else $hSelect.RemovePoint($vChangeIndex) Endif If $hSelect.IsVoid() Then ClearSelection Endif RefreshSelection Endif Endif If $sTool = "draw" Then If LCase(Key.Text) = "x" Then FImageProperty.SetColor($sLastColor) Endif Endif If $sTool = "change" Or If $sTool = "paste" Then Select Case Key.Code Case Key.Up DY = -1 Case Key.Down DY = 1 Case Key.Left DX = -1 Case Key.Right DX = 1 End Select If DX Or If DY Then If $sTool = "paste" Then $hPasteCurrent.Translate(DX, DY) UpdatePasteCurrent Else AddUndo($hSelect.Copy()) $hSelect.Translate(DX, DY) RefreshSelection Endif Endif Endif If Key.Code = Key.F6 Then Action[".tooltip", Me].Value = Not Action[".tooltip", Me].Value Endif imvImage_MouseMove End Public Sub Form_KeyRelease() $bShift = Key.Shift $bCtrl = Key.Control $bAlt = Key.Alt $bNormal = Key.Normal UpdateTool imvImage_MouseMove End Public Sub imvImage_MouseUp() Dim hImage As Image If Not $bPress Then Return $bPress = False If $bDblClick Then $bDblClick = False EndUndo Return Endif imvImage_MouseMove() Select Case $sTool Case "draw", "erase" If Not $bShift Then If $sTool = "draw" Then If $hLastPoint And If $hImage[$hLastPoint.X, $hLastPoint.Y] <> FImageProperty.GetColor() Then $sLastColor = $hImage[$hLastPoint.X, $hLastPoint.Y] Endif Endif hImage = $hImage.Copy() Paint.Begin(hImage) If $sTool = "erase" Then Paint.Operator = Paint.OperatorDestOut Paint.DrawImage($hStrokeImage, 0, 0,,, FImageProperty.GetOpacity() / 255) Paint.End SetImage(hImage) $hStrokeImage = Null Endif Case "line" ' If $hLastPoint.X <> $hCurrentPoint.X Or If $hLastPoint.Y <> $hCurrentPoint.Y Then ' $hSelect.LineTo($hLastPoint.X, $hLastPoint.Y) ' $hSelect.AddMagnet($hLastPoint) ' If $hFirstPoint Then $hSelect.AddMagnet($hFirstPoint) ' Endif $hSelect.CleanLastShape Case "rectangle", "ellipse" If $hLastPoint.X <> $hCurrentPoint.X Or If $hLastPoint.Y <> $hCurrentPoint.Y Then imvImage.Refresh Else 'ClearSelection Endif Case "change" If $iChangeAction = CHANGE_NOTHING And If $hSelect Then $hSelect.SelectAll If Not $hLastPoint Or If $hLastPoint <> $hCurrentPoint Then RefreshSelection Else If $iChangeAction <> CHANGE_SELECT Then btnUndo_Click Endif SetMagnet(Null) Case "paste" If $hPaste Then $hPasteCurrent = $hPasteSelect.Copy() $hChangeRect = $hPasteCurrent.GetExtents() imvImage.Refresh Endif End Select 'imvImage_MouseMove() UpdateInfo EndUndo End ' Private Sub DrawTool() ' ' Dim I As Integer ' Dim bDraw As Boolean ' ' FImageProperty.PaintForStroke ' ' If $sTool = "erase" Then Paint.Operator = Paint.OperatorDestOut ' ' If Not Paint.AntiAlias Then ' Paint.MoveTo(CInt($aStroke[0].X), CInt($aStroke[0].Y)) ' For I = 1 To $aStroke.Max ' 'If CInt($aStroke[I].X) = Paint.X And If CInt($aStroke[I].Y) = Paint.Y Then Continue ' Paint.LineTo(CInt($aStroke[I].X), CInt($aStroke[I].Y)) ' bDraw = True ' Next ' Paint.Stroke ' If Not bDraw Then ' Paint.Rectangle($aStroke[0].X, $aStroke[0].Y, 1, 1) ' Paint.Fill ' Endif ' Else ' Paint.MoveTo($aStroke[0].X, $aStroke[0].Y) ' For I = 1 To $aStroke.Max ' 'If CInt($aStroke[I].X) = CInt(Paint.X) And If CInt($aStroke[I].Y) = CInt(Paint.Y) Then Continue ' Paint.LineTo($aStroke[I].X, $aStroke[I].Y) ' bDraw = True ' Next ' Paint.Stroke ' If Not bDraw Then ' Paint.Arc($aStroke[0].X, $aStroke[0].Y, Paint.LineWidth / 2) ' Paint.Fill ' Endif ' Endif ' ' End ' Private Sub PaintImage(hImage As Image, X As Float, Y As Float, Optional fOpacity As Float = 1.0, Optional hRect As Rect) ' ' Dim fZoom As Float = imvImage.Zoom ' ' If Not hImage Then Return ' ' If hRect Then ' X += hRect.X * fZoom ' Y += hRect.Y * fZoom ' Else ' hRect = Rect(0, 0, hImage.W, hImage.H) ' Endif ' ' Paint.ZoomImage(hImage, fZoom, X, Y, Color.SetAlpha(Color.Black, 128), hRect, fOpacity) ' ' ' Paint.DrawImage(hImage, X, Y, hRect.W * fZoom, hRect.H * fZoom, fOpacity, hRect) 'hRect.W, hRect.H) ' ' ' If iZoom > 8 Then ' ' ' ' P = X ' ' S = hRect.H * iZoom ' ' For I = 0 To hRect.W - 1 ' ' Paint.FillRect(P, Y, 1, S, Color.LightForeground) ' ' P += iZoom ' ' Next ' ' ' ' P = Y ' ' S = hRect.W * iZoom ' ' For I = 0 To hRect.H - 1 ' ' Paint.FillRect(X, P, S, 1, Color.LightForeground) ' ' P += iZoom ' ' Next ' ' ' ' Endif ' ' End Public Sub imvImage_Draw(hZoom As Image) Dim hOffset As Point Dim bAnts As Boolean Dim bBalance As Boolean Dim hImage As Image Dim hRect As Rect Dim X As Integer Dim Y As Integer Dim iGrid As Integer Dim W As Float Dim hZoomOrg As Image Dim bDiag As Boolean If Project.ActiveForm = Me And If FImageProperty.HasBalance() Then bBalance = True hOffset = imvImage.ImageToView(Point(0, 0)) hZoomOrg = hZoom If $hStrokeImage Then GoSub COPY_IMAGE Paint.Begin(hZoom) If $sTool = "erase" Then Paint.Operator = Paint.OperatorDestOut Endif Paint.DrawImage($hStrokeImage, $hStrokeExtents.X, $hStrokeExtents.Y, $hStrokeExtents.W, $hStrokeExtents.H, FImageProperty.GetOpacity() / 255, $hStrokeExtents) Paint.End Endif If bBalance Then GoSub COPY_IMAGE If Not HasSelection() Then FImageProperty.ApplyBalance(hZoom) Else hRect = $hSelect.GetExtentsInt(True) If hRect.X < 0 Then hRect.W += hRect.X hRect.X = 0 Endif If hRect.Y < 0 Then hRect.H += hRect.Y hRect.Y = 0 Endif hImage = hZoom.Copy(hRect.X, hRect.Y, hRect.Width, hRect.Height) FImageProperty.ApplyBalance(hImage) Paint.Begin(hZoom) $hSelect.Paint(hZoom, CImageSelection.ACTION_CLIP) Paint.Operator = Paint.OperatorSource Paint.DrawImage(hImage, hRect.X, hRect.Y) Paint.End Endif Endif imvImage._Paint(hZoom, hOffset.X, hOffset.Y) ' If $hMagic Then ' ' Paint.Save ' ' Paint.Translate(hOffset.X, hOffset.Y) ' Paint.Scale(imvImage.Zoom, imvImage.Zoom) ' ' Paint.DrawImage($hMagic, 0, 0) ' ' Paint.Restore ' ' Endif Paint.Save Paint.AntiAlias = False Paint.LineWidth = 1 / imvImage.Zoom Paint.Translate(hOffset.X, hOffset.Y) Paint.Scale(imvImage.Zoom, imvImage.Zoom) Paint.DrawRect(0, 0, $hImage.W, $hImage.H, Color.Foreground, Paint.LineWidth) If $bShowGrid Then Paint.Rectangle(0, 0, $hImage.W, $hImage.H) Paint.Clip() iGrid = FImageProperty.GetGridResolution() bDiag = FImageProperty.GetGridDiagonal() For X = iGrid To $hImage.W Step iGrid Paint.MoveTo(X, 0) Paint.LineTo(X, $hImage.H) Next For Y = iGrid To $hImage.H Step iGrid Paint.MoveTo(0, Y) Paint.LineTo($hImage.W, Y) Next If bDiag For X = 0 To $hImage.W - 1 Step iGrid For Y = 0 To $hImage.H - 1 Step iGrid Paint.MoveTo(X, Y) Paint.RelLineTo(iGrid, iGrid) Paint.MoveTo(X + iGrid, Y) Paint.RelLineTo(-iGrid, iGrid) Next Next Endif Paint.Background = Color.Foreground '&H808080& Paint.Stroke Endif Paint.Restore If HasSelection() Then Paint.Save Paint.Translate(hOffset.X, hOffset.Y) Paint.Scale(imvImage.Zoom, imvImage.Zoom) Paint.LineWidth = 1 / imvImage.Zoom Paint.DashOffset = -$fDashOffset $hSelect.Paint($hImage, CImageSelection.ACTION_SELECT, True) ' CImageSelection.PaintingSelection = True ' ' Paint.LineWidth = 2 / imvImage.Zoom ' Paint.AntiAlias = False ' 'Paint.LineJoin = Paint.LineJoinRound ' ' Paint.Background = Color.White 'Color.SetAlpha(Color.White, 128) ' Paint.Dash = Null ' $hSelect.Paint($hImage, CImageSelection.ACTION_STROKE, True) ' ' Paint.Background = Color.Black 'Color.SetAlpha(Color.Black, 128) ' Paint.Dash = [2.0, 2.0] ' Paint.DashOffset = - $fDashOffset ' $hSelect.Paint($hImage, CImageSelection.ACTION_STROKE, True) ' ' CImageSelection.PaintingSelection = False Paint.Restore bAnts = True Endif If $hMagnet Then Paint.Save Paint.AntiAlias = False Paint.LineWidth = 1 Paint.Translate($hMagnet.X * imvImage.Zoom + hOffset.X, $hMagnet.Y * imvImage.Zoom + hOffset.Y) Paint.Background = Color.White Paint.Rectangle(-5, -4, 9, 9) Paint.MoveTo(0, -imvImage.H) Paint.LineTo(0, imvImage.H) Paint.MoveTo(-imvImage.W, 0) Paint.LineTo(imvImage.W, 0) Paint.Stroke Paint.Background = Color.Black Paint.Rectangle(-4, -3, 7, 7) Paint.MoveTo(0, -imvImage.H) Paint.LineTo(0, imvImage.H) Paint.MoveTo(-imvImage.W, 0) Paint.LineTo(imvImage.W, 0) Paint.Dash = [2.0, 2.0] Paint.Stroke Paint.Restore Endif If $bFrame And If Not $bPress Then Select Case $sTool Case "draw", "erase", "line" If Not $hLastPoint Then Return If Not $hCurrentPoint Then Return Paint.Save Paint.Dash = Null If $sTool = "line" Then Paint.LineWidth = 1 'FImageProperty.PaintForStroke Paint.AntiAlias = True 'Paint.LineWidth *= imvImage.Zoom Paint.LineJoin = Paint.LineJoinRound Else FImageProperty.PaintForStroke If $sTool = "erase" Then Paint.Background = Color.SetAlpha(Color.Gray, 128) Paint.LineWidth *= imvImage.Zoom Endif 'Paint.Background = Color.SetAlpha(Color.White, 128) If Not Paint.Antialias Then Paint.Translate(imvImage.Zoom / 2, imvImage.Zoom / 2) Paint.MoveTo($hLastPoint.X * imvImage.Zoom + hOffset.X, $hLastPoint.Y * imvImage.Zoom + hOffset.Y) Paint.LineTo($hCurrentPoint.X * imvImage.Zoom + hOffset.X, $hCurrentPoint.Y * imvImage.Zoom + hOffset.Y) If $sTool = "line" Then Paint.Background = Color.White Paint.Stroke(True) Paint.Background = Color.Black Paint.Dash = [4, 4] Endif Paint.Stroke Paint.Restore ' Paint.Background = Color.SetAlpha(Color.Black, 128) ' Paint.Dash = [2.0, 2.0] ' Paint.DashOffset = - $fDashOffset ' If Not Paint.Antialias Then Paint.Translate(imvImage.Zoom / 2, imvImage.Zoom / 2) ' Paint.MoveTo(hStart.X, hStart.Y) ' Paint.LineTo(hEnd.X, hEnd.Y) ' Paint.Stroke ' Paint.Reset 'bAnts = True End Select Endif If $hLastPoint Then Select Case $sTool Case "draw", "erase", "line" Paint.Save Paint.Antialias = False If $sTool = "line" Then Paint.Ellipse($hLastPoint.X * imvImage.Zoom + hOffset.X - 4, $hLastPoint.Y * imvImage.Zoom + hOffset.Y - 4, 8, 8) Else If FImageProperty.GetSize() Then Paint.Rectangle(($hLastPoint.X - 0.5) * imvImage.Zoom + hOffset.X, ($hLastPoint.Y - 0.5) * imvImage.Zoom + hOffset.Y, imvImage.Zoom, imvImage.Zoom) Else Paint.Rectangle($hLastPoint.X * imvImage.Zoom + hOffset.X, $hLastPoint.Y * imvImage.Zoom + hOffset.Y, imvImage.Zoom, imvImage.Zoom) Endif Endif Paint.LineWidth = 1 Paint.Background = Color.White Paint.Stroke(True) Paint.Background = Color.Black Paint.Dash = [4, 4] Paint.Stroke Paint.Restore End Select Endif If $hPaste Then Paint.Save 'Paint.AntiAlias = False If $hSelect Then Paint.Translate(hOffset.X, hOffset.Y) Paint.Scale(imvImage.Zoom, imvImage.Zoom) $hSelect.Paint($hImage, CImageSelection.ACTION_CLIP) Paint.Reset 'imvImage._Paint($hPaste, hOffset.X + $iPasteX * imvImage.Zoom, hOffset.Y + $iPasteY * imvImage.Zoom) Endif With $hPasteSelect.GetExtents() If .Width > 0 And If .Height > 0 Then hImage = New Image(Ceil(.Width), Ceil(.Height), Color.Transparent) Paint.Begin(hImage) $hPasteSelect.Translate(-Floor(.X), -Floor(.Y)) ' Paint.Brush = Paint.Image($hPaste) ' Paint.Brush.Matrix = $hPasteSelect._BrushMatrix.Copy() ' $hPasteSelect.Paint(hImage, CImageSelection.ACTION_FILL) Paint.Matrix = $hPasteSelect._BrushMatrix.Copy() Paint.DrawImage($hPaste, 0, 0) $hPasteSelect.Translate(Floor(.X), Floor(.Y)) Paint.End Paint.ClipRect = Rect(hOffset.X, hOffset.Y, Ceil($hImage.W * imvImage.Zoom), Ceil($hImage.H * imvImage.Zoom)) imvImage._Paint(hImage, hOffset.X + Floor(.X) * imvImage.Zoom, hOffset.Y + Floor(.Y) * imvImage.Zoom) If $bPress Then Paint.LineWidth = 1 / imvImage.Zoom Paint.AntiAlias = False Paint.LineJoin = Paint.LineJoinMiter Paint.Translate(hOffset.X + 0.5, hOffset.Y + 0.5) Paint.Scale(imvImage.Zoom, imvImage.Zoom) Paint.Rectangle(.X, .Y, .W, .H) Paint.Background = Color.White Paint.Stroke(True) Paint.Background = Color.Black Paint.Dash = [4.0, 4.0] Paint.DashOffset = 0 Paint.Stroke Endif Endif End With Paint.Restore Endif If $hChangeRect Then Paint.Save Paint.Translate(hOffset.X + 0.5, hOffset.Y + 0.5) Paint.Scale(imvImage.Zoom, imvImage.Zoom) Paint.LineWidth = 2 / imvImage.Zoom Paint.AntiAlias = False Paint.LineJoin = Paint.LineJoinRound If $sTool = "change" Then Paint.Background = Color.SetAlpha(Color.Red, 128) $hSelect.Paint($hImage, CImageSelection.ACTION_HANDLE) Paint.Background = Color.SetAlpha(Color.Blue, 128) $hSelect.Paint($hImage, CImageSelection.ACTION_MAGNET) Endif Paint.Background = Color.SetAlpha(Color.Red, 128) Paint.Dash = Null With $hChangeRect Paint.Rectangle(.X, .Y, .W, .H) Paint.Stroke(True) Paint.Background = Color.SetAlpha(Color.White, 128) Paint.Dash = [2.0, 2.0] Paint.DashOffset = 0 Paint.Stroke End With Paint.Background = Color.SetAlpha(Color.Red, 128) Paint.Arc($hChangeRect.X + 0.5 / imvImage.Zoom, $hChangeRect.Y + 0.5 / imvImage.Zoom, 7 / imvImage.Zoom) Paint.Rectangle($hChangeRect.X + $hChangeRect.W + (0.5 - 6) / imvImage.Zoom, $hChangeRect.Y + $hChangeRect.H + (0.5 - 6) / imvImage.Zoom, 12 / imvImage.Zoom, 12 / imvImage.Zoom) Paint.Fill If $iChangeAction = CHANGE_POINT Or If $iChangeAction = CHANGE_INSERT Then Paint.Background = Color.SetAlpha(Color.White, 128) W = 3 / imvImage.Zoom If $iChangeAction = CHANGE_INSERT Then With ($hSelect.Shapes[$vChangeIndex[0]].Points[$vChangeIndex[1]] + $hSelect.Shapes[$vChangeIndex[0]].Points[$vChangeIndex[1] + 1]) / 2 Paint.Rectangle(.X - W, .Y - W, W * 2, W * 2) Paint.Fill End With Else With $hSelect.Shapes[$vChangeIndex[0]].Points[$vChangeIndex[1]] Paint.Rectangle(.X - W, .Y - W, W * 2, W * 2) Paint.Fill End With Endif Endif Paint.Restore Endif ' If $iAngle Then ' ' hImage = hZoom.Rotate(Rad($iAngle)) ' imvImage._Paint(hImage, hOffset.X + (hZoom.W - hImage.W) / 2 * imvImage.Zoom, hOffset.Y + (hZoom.H - hImage.H) / 2 * imvImage.Zoom) ' 'imvImage._Paint(hImage, hOffset.X, hOffset.Y) ' ' Endif timSelect.Enabled = bAnts Return COPY_IMAGE: If hZoom = hZoomOrg Then hZoom = hZoom.Copy() Return End Public Sub timSelect_Timer() Inc $fDashOffset If $fDashOffset >= 8 Then $fDashOffset = 0 imvImage.Refresh End Public Sub btnInvert_Click() CreateSelection AddUndo($hSelect.Copy()) $hSelect.Invert($hImage) If $hSelect.IsVoid() Then ClearSelection RefreshSelection End Public Sub timCheckZoom_Timer() btnZoomFit_Click End Public Sub imvImage_Menu() Dim iGrid As Integer Dim hMenu As Menu Me.SetFocus If $hSelect And If $hSelect.Current >= 0 Then mnuShapeGrid.Visible = True iGrid = $hSelect.Shapes[$hSelect.Current].Grid For Each hMenu In mnuShapeGrid.Children hMenu.Checked = CInt(hMenu.Tag) = iGrid Next Else mnuShapeGrid.Visible = False Endif mnuEditor.Popup End Public Sub mnuSelectAll_Click() $hSelect = New CImageSelection btnInvert_Click End Public Sub btnCrop_Click() Dim hImage As Image Dim hRect As Rect Dim X As Integer Dim Y As Integer If $hSelect Then $hSelect.Invert($hImage) hImage = $hImage.Copy() Paint.Begin(hImage) Paint.Brush = Paint.Color(Color.Black) $hSelect.Paint(hImage, CImageSelection.ACTION_CLEAR) Paint.End $hSelect.Invert($hImage) ' If Not $hSelect.IsInverted() Then ' hRect = $hSelect.GetExtentsInt(True) ' If hRect Then hImage = hImage.Copy(hRect.X, hRect.Y, hRect.Width, hRect.Height) ' Endif BeginUndo AddUndo($hSelect.Copy()) ClearSelection SetImage(hImage) EndUndo Else hRect = New Rect(0, 0, $hImage.W, $hImage.H) For X = 0 To $hImage.W - 1 For Y = 0 To $hImage.H - 1 If Color.GetAlpha($hImage[X, Y]) < 255 Then Break Next If Y < $hImage.H Then hRect.Left = X Break Endif Next For X = $hImage.W - 1 DownTo hRect.Left For Y = 0 To $hImage.H - 1 If Color.GetAlpha($hImage[X, Y]) < 255 Then Break Next If Y < $hImage.H Then hRect.Right = X + 1 Break Endif Next For Y = 0 To $hImage.H - 1 For X = hRect.Left To hRect.Right If Color.GetAlpha($hImage[X, Y]) < 255 Then Break Next If X <= hRect.Right Then hRect.Top = Y Break Endif Next For Y = $hImage.H - 1 DownTo hRect.Top For X = hRect.Left To hRect.Right If Color.GetAlpha($hImage[X, Y]) < 255 Then Break Next If X <= hRect.Right Then hRect.Bottom = Y + 1 Break Endif Next If Not hRect.IsVoid() Then If hRect.W < $hImage.W Or If hRect.H < $hImage.H Then BeginUndo AddUndo($hImage.Copy()) SetImage($hImage.Copy(hRect.X, hRect.Y, hRect.W, hRect.H)) EndUndo Endif Endif Endif End Private Sub BeginUndo() $aUndo.Add(BEGIN_UNDO) $aRedo.Clear End Private Sub EndUndo() Dim vUndo As Variant = $aUndo[$aUndo.Max] If TypeOf(vUndo) = gb.Integer And If vUndo = BEGIN_UNDO Then $aUndo.Pop() Else $aUndo.Add(END_UNDO) Endif $aRedo.Clear End Private Sub RemoveLastEndBeginUndo() Dim vUndo As Variant Dim I As Integer For I = $aUndo.Max DownTo 1 vUndo = $aUndo[I] If TypeOf(vUndo) = gb.Integer And If vUndo = BEGIN_UNDO Then vUndo = $aUndo[I - 1] If TypeOf(vUndo) = gb.Integer And If vUndo = END_UNDO Then $aUndo.Remove(I - 1, 2) Return Endif Endif Next End ' Fast Private Sub CheckPoint(iCol As Integer, X2 As Integer, Y2 As Integer, A0 As Integer) As Boolean ' ' Dim R, G, B, A As Float ' Dim R2, G2, B2, A2 As Float ' Dim N As Integer ' Dim F As Float ' Dim D As Integer ' ' 'R = $R / $N ' 'G = $G / $N ' 'B = $B / $N ' 'A = $A / $N ' ' With Color[iCol] ' R = .Red ' G = .Green ' B = .Blue ' A = .Alpha ' End With ' ' With Color[$hImage[X2, Y2]] ' F = (255 - .Alpha) / 255 ' R2 = .Red * F ' G2 = .Green * F ' B2 = .Blue * F ' A2 = .Alpha ' N = 1 ' End With ' ' ' If X2 > 0 Then ' ' With Color[$hImage[X2 - 1, Y2]] ' ' F = (255 - .Alpha) / 255 ' ' R2 += .Red * F ' ' G2 += .Green * F ' ' B2 += .Blue * F ' ' A2 += .Alpha ' ' Inc N ' ' End With ' ' Endif ' ' ' ' If X2 < ($hImage.W - 1) Then ' ' With Color[$hImage[X2 + 1, Y2]] ' ' F = (255 - .Alpha) / 255 ' ' R2 += .Red * F ' ' G2 += .Green * F ' ' B2 += .Blue * F ' ' A2 += .Alpha ' ' Inc N ' ' End With ' ' Endif ' ' ' ' If Y2 > 0 Then ' ' With Color[$hImage[X2, Y2 - 1]] ' ' F = (255 - .Alpha) / 255 ' ' R2 += .Red * F ' ' G2 += .Green * F ' ' B2 += .Blue * F ' ' A2 += .Alpha ' ' Inc N ' ' End With ' ' Endif ' ' ' ' If Y2 < ($hImage.W - 1) Then ' ' With Color[$hImage[X2, Y2 + 1]] ' ' F = (255 - .Alpha) / 255 ' ' R2 += .Red * F ' ' G2 += .Green * F ' ' B2 += .Blue * F ' ' A2 += .Alpha ' ' Inc N ' ' End With ' ' Endif ' ' ' ' R2 /= N ' ' G2 /= N ' ' B2 /= N ' ' A2 /= N ' ' A0 = A0 * 1.1 ' D = Max(Max(Abs(R2 - R), Abs(G2 - G)), Max(Abs(B2 - B), Abs(A2 - A))) + A0 ' 'Print X2;; Y2;; D ' If D >= 255 Then Return ' ' '$R += R2 ' '$G += G2 ' '$B += B2 ' '$A += A2 ' Inc $N ' ' $hMagic[X2, Y2] = Color.SetAlpha(Color.Black, D) ' '$hImage[X2, Y2] = Color.Blend($hImage[X2, Y2], $hMagic[X2, Y2]) ' If ($N And 1023) = 0 Then ' imvImage.Refresh ' Wait ' Endif ' ' Return True ' ' End ' ' Fast Private Sub MagicWand() ' ' Dim aPoint As New Integer[] ' Dim X, Y, X2, Y2, A As Integer ' Dim hImage As Image ' ' $iTol = 1 'FImageProperty.GetTolerance() ' ' $hMagic = New Image($hImage.W, $hImage.H, Color.White) ' ' aPoint.Add($hLastPoint.X) ' aPoint.Add($hLastPoint.Y) ' ' With Color[$hImage[$hLastPoint.X, $hLastPoint.Y]] ' $R = .Red * (255 - .Alpha) / 255 ' $G = .Green * (255 - .Alpha) / 255 ' $B = .Blue * (255 - .Alpha) / 255 ' $A = .Alpha ' $N = 1 ' End With ' ' $hMagic[$hLastPoint.X, $hLastPoint.Y] = Color.Black ' ' While aPoint.Count ' ' X = aPoint[0] ' Y = aPoint[1] ' aPoint.Remove(0, 2) ' ' A = Color.GetAlpha($hMagic[X, Y]) ' ' X2 = X + 1 ' Y2 = Y ' GoSub LOOK_POINT ' X2 = X + 1 ' Y2 = Y + 1 ' GoSub LOOK_POINT ' X2 = X ' Y2 = Y + 1 ' GoSub LOOK_POINT ' X2 = X - 1 ' Y2 = Y + 1 ' GoSub LOOK_POINT ' X2 = X - 1 ' Y2 = Y ' GoSub LOOK_POINT ' X2 = X - 1 ' Y2 = Y - 1 ' GoSub LOOK_POINT ' X2 = X ' Y2 = Y - 1 ' GoSub LOOK_POINT ' X2 = X + 1 ' Y2 = Y - 1 ' GoSub LOOK_POINT ' ' Wend ' ' hImage = $hImage.Copy() ' $hMagic.Replace(Color.White, Color.Transparent) ' '$hMagic = $hMagic.Fuzzy(1) ' hImage.PaintImage($hMagic, 0, 0) ' SetImage(hImage) ' $hMagic = Null ' Return ' ' LOOK_POINT: ' ' If X2 < 0 Or If Y2 < 0 Or If X2 >= $hImage.W Or If Y2 >= $hImage.H Then Return ' If $hMagic[X2, Y2] <> Color.White Then Return ' ' If CheckPoint($hImage[X, Y], X2, Y2, A) Then ' aPoint.Add(X2) ' aPoint.Add(Y2) ' Endif ' ' Return ' ' End Public Sub btnZoomFit_Click() Dim iIndex As Integer Dim fZoom As Float For iIndex = cmbZoom.Count - 1 DownTo 0 fZoom = CFloat(String.Left(cmbZoom[iIndex].Text, -1)) If ($hImage.W * fZoom) > imvImage.W Or If ($hImage.H * fZoom) > imvImage.H Then Break Next cmbZoom.Index = Min(cmbZoom.Count - 1, iIndex + 1) End Public Sub btnCopy_Click() Dim hImage As Image Dim hExt As Rect If $hSelect Then $hSelect.Invert($hImage) hImage = $hImage.Copy() Paint.Begin(hImage) Paint.Brush = Paint.Color(Color.Black) $hSelect.Paint(hImage, CImageSelection.ACTION_CLEAR) Paint.End $hSelect.Invert($hImage) ' If Not $hSelect.IsInverted() Then hExt = $hSelect.GetExtentsInt(True) If hExt Then hImage = hImage.Copy(hExt.X, hExt.Y, hExt.Width, hExt.Height) ' Endif Inc $iClipboard FImageProperty.AddClipboard(hImage, Me.Name & " [" & CStr($iClipboard) & "]") Clipboard.Copy(hImage) Else FImageProperty.AddClipboard($hImage.Copy(), Me.Name) Clipboard.Copy($hImage) Endif End Public Sub btnCut_Click() Dim hImage As Image BeginUndo btnCopy_Click If $hSelect Then hImage = $hImage.Copy() Paint.Begin(hImage) $hSelect.Paint($hImage, CImageSelection.ACTION_CLEAR) Paint.End SetImage(hImage) Else hImage = New Image($hImage.W, $hImage.H, Color.Transparent) SetImage(hImage) Endif ClearSelection EndUndo btnPaste.Value = True End Private Sub DoPaste() Dim hImage As Image If Not $hPaste Then Return hImage = $hImage.Copy() Paint.Begin(hImage) If $hSelect Then $hSelect.Paint($hImage, CImageSelection.ACTION_CLIP) ' Paint.Brush = Paint.Image($hPaste) ', ($hImage.W - $hPaste.W) \ 2, ($hImage.H - $hPaste.H) \ 2) ' Paint.Brush.Matrix = $hPasteSelect._BrushMatrix.Copy() ' $hPasteSelect.Paint(hImage, CImageSelection.ACTION_FILL) Paint.Matrix = $hPasteSelect._BrushMatrix.Copy() Paint.DrawImage($hPaste, 0, 0) Paint.End SetImage(hImage) End Public Sub Form_Activate() If Not $bFirstTime Then btnZoomFit_Click $bFirstTime = True Endif End Public Sub RefreshSelection() imvImage.Refresh If $sTool = "change" Then If Not HasSelection() Then $hChangeRect = Null Else $hChangeRect = $hSelect.GetExtents() Endif Endif End Public Sub imvImage_Leave() $iChangeAction = CHANGE_NOTHING UpdateInfo End Public Sub ApplyEffect(iEffect As Integer) Dim hImage As Image Dim hEffect As Image Select Case iEffect Case EFFECT_BALANCE hEffect = $hImage.Copy() FImageProperty.ApplyBalance(hEffect) Case EFFECT_COLORIZE hEffect = $hImage.Copy().Colorize(FImageProperty.GetColor(True)) Case EFFECT_DESATURATE hEffect = $hImage.Copy().Desaturate() Case EFFECT_TRANSPARENT hEffect = $hImage.Copy().Erase() Case EFFECT_INVERT hEffect = $hImage.Copy().Invert(True) End Select If $hSelect Then ' If $hSelect.IsInverted() Then ' ' Paint.Begin(hEffect) ' $hSelect.Paint(hEffect, CImageSelection.ACTION_CLIP) ' Paint.DrawImage($hImage, 0, 0) ' Paint.End ' ' hImage = hEffect ' ' Else hImage = $hImage.Copy() Paint.Begin(hImage) $hSelect.Paint(hImage, CImageSelection.ACTION_CLIP) Paint.Operator = Paint.OperatorSource Paint.DrawImage(hEffect, 0, 0) Paint.End ' Endif Else hImage = hEffect Endif SetImage(hImage) End Public Sub ApplyBalance() ApplyEffect(EFFECT_BALANCE) End Public Sub OnProjectDebug() SetReadOnly End Private Sub UpdateMenu() Dim bVisible As Boolean bVisible = Not $bReadOnly If $bReadOnly Then SetTool("move") mnuAction.Visible = bVisible mnuSelection.Visible = bVisible Action[".save,.undo,.redo,.tool-*,.hide,.invert,.stroke,.fill,.clear,.cut,.paste,.crop,.flip-h,.flip-v,.rotate-*,.rotate,.resize,.select-all,.duplicate,.offset", Me].Visible = bVisible End Public Sub mnuHideSelection_Click() If $sTool = "paste" Then ClearPaste SetTool($sToolBefore) Else If $sTool = "change" Then SetTool($sToolBefore) Else If $hSelect Then ClearSelection Else FMain.HidePanels Endif End Public Sub mnuPaste_Click() SetTool("paste") End Public Sub tlbMain_Configure() UpdateMenu End Public Sub btnRotate_Click() If FImageRotate.Run(Me) Then imvImage.Update($hImage) Return Endif SetImage($hImage.Rotate(Rad(FImageRotate.Angle))) End Public Sub UpdateRotation(iAngle As Integer) '$iAngle = iAngle imvImage.Update($hImage.Rotate(Rad(iAngle))) End Public Sub Form_GotFocus() imvImage.SetFocus End Public Sub imvImage_GotFocus() Project.SetCurrentPopup(mnuEditor) End Public Sub mnuClose_Click() Me.Close End Public Sub PasteShape(hShape As CImageSelection) Dim S As Float If btnEditSelection.Value Then SetTool("change") Else btnEditSelection.Value = True Endif BeginUndo CreateSelection hShape = hShape.Copy() With hShape.GetExtents() S = Min(imvImage.ScrollW / imvImage.Zoom * 0.25 / .W, imvImage.ScrollH / imvImage.Zoom * 0.25 / .H) hShape.Translate($hImage.W / 2, $hImage.H / 2) hShape.Scale(S, S) End With $hSelect.Select($hSelect.AddSelection(hShape)) RefreshSelection EndUndo End Public Sub UpdateBalance() If $hPaste Then $hPaste = FImageProperty.GetClipboard() imvImage.Refresh End Public Sub UpdateClipboard() If $sTool = "paste" Then ClearPaste SetTool("paste") Endif End Public Sub btnGrid_Click() Dim iSize As Integer $bShowGrid = Not $bShowGrid imvImage.Refresh FImageProperty.ShowGridOption($bShowGrid) If $bShowGrid And If Not $bFirstGrid Then $bFirstGrid = True iSize = Min($hImage.Width, $hImage.Height) \ 2 FImageProperty.SetGridResolution(iSize) Endif End Public Sub UpdateGrid(vGrid As Variant) $vGrid = vGrid imvImage.Refresh End Public Sub GetGrid() As Variant Return $vGrid End Public Sub btnDuplicate_Click() If $hSelect Then AddUndo($hSelect.Copy()) $hSelect.Duplicate RefreshSelection Endif End Public Sub btnOffset_Click() If Not $hSelect Then Return If FImageOffsetSelection.Run() Then Return AddUndo($hSelect.Copy()) $hSelect.Offset(FImageOffsetSelection.Size, FImageOffsetSelection.Mode) RefreshSelection End Fast Private Sub CreateSelectionFromMask(hImage As Image) As Polygon[] Dim X, Y As Integer Dim CW, CB As Integer Dim I As Integer Dim W As Integer Dim hPoly As Polygon Dim aPoly As New Polygon[] CW = Color.White CB = Color.Black For Y = 0 To hImage.H - 1 For X = 0 To hImage.W - 1 If hImage[X, Y] <> CB Then Continue W = 1 For I = X + 1 To hImage.W - 1 If hImage[I, Y] <> CB Then Break Inc W Next hPoly = New Polygon hPoly.Add(X, Y) hPoly.Add(X + W, Y) hPoly.Add(X + W, Y + 1) hPoly.Add(X, Y + 1) aPoly.Add(hPoly) X = I Next Next aPoly = Clipper.Simplify(aPoly, Clipper.FillWinding) aPoly = Clipper.Clean(aPoly) Return aPoly End Fast Private Sub CreateMask() As Image Dim hMask As Image Dim aPoint As New Integer[] Dim X, X1, X2, Y, XL, XR As Integer Dim WW, HH As Integer Dim C As Integer Dim fTolerance As Float WW = $hImage.W HH = $hImage.H X = $hLastPoint.X Y = $hLastPoint.Y If X < 0 Or If Y < 0 Or If X >= WW Or If Y >= HH Then Return fTolerance = FImageProperty.GetTolerance() / 255 hMask = New Image(WW, HH, Color.White) Dec WW Dec HH aPoint.Add(X) aPoint.Add(X) aPoint.Add(Y) C = $hImage[X, Y] While aPoint.Count Y = aPoint.Pop() X2 = aPoint.Pop() X1 = aPoint.Pop() For X = X1 To X2 ' I = hMask[X, Y] ' hMask[X, Y] = Color.Green ' imvImage.Update(hMask) ' Wait ' hMask[X, Y] = I If hMask[X, Y] = Color.Black Then Continue If Color.Distance($hImage[X, Y], C) > fTolerance Then Continue 'hMask[X, Y] = Color.Black For XL = X - 1 DownTo 0 If Color.Distance($hImage[XL, Y], C) > fTolerance Then Break Next Inc XL For XR = X + 1 To WW If Color.Distance($hImage[XR, Y], C) > fTolerance Then Break Next Dec XR hMask.FillRect(XL, Y, XR - XL + 1, 1, Color.Black) ' imvImage.Update(hMask) ' Wait 0.1 If Y Then aPoint.Add(XL) aPoint.Add(XR) aPoint.Add(Y - 1) Endif If Y < HH Then aPoint.Add(XL) aPoint.Add(XR) aPoint.Add(Y + 1) Endif Next Wend Return hMask End Private Sub MagicWand() Dim hMask As Image Dim aPoly As Polygon[] Dim hPoly As Polygon Dim hShape As CImageShape Inc Application.Busy hMask = CreateMask() If hMask Then aPoly = CreateSelectionFromMask(hMask) aPoly = Clipper.Simplify(aPoly, Clipper.FillWinding) For Each hPoly In aPoly hShape = New CImageShape hShape.Points = hPoly $hSelect.AddShape(hShape) Next Endif Dec Application.Busy End Private Sub ClearPaste() If $hPaste Then $hPaste = Null $hPasteSelect = Null $hPasteCurrent = Null $hChangeRect = Null imvImage.Refresh $iChangeAction = CHANGE_NOTHING FImageProperty.ClearPaste Endif End Public Sub mnuDivide_Click() If Not $hSelect Then Return If $hSelect.Current < 0 Then Return $hSelect.Shapes[$hSelect.Current].Grid = CInt(Last.Tag) imvImage.Refresh End Private Sub GetCurrentFormat() As String Dim sFormat As String = Lower(File.Ext(Path)) Select Case sFormat Case "jpg" Return "jpeg" Default Return sFormat End Select End Public Sub mnuFormat_Show() Dim sFormat As String = GetCurrentFormat() Dim hMenu As Menu For Each hMenu In mnuFormat.Children hMenu.Checked = hMenu.Tag = sFormat Next ' If sFormat = "jpeg" Or If sFormat = "png" Then ' mnuQuality.Enabled = True ' Else ' mnuQuality.Enabled = False ' Endif End Public Sub mnuSaveAs_Click() Dim sFormat As String = Last.Tag If sFormat <> GetCurrentFormat() Then Project.RenameFile(Path, File.SetExt(File.Name(Path), sFormat)) Me.Save(True) Endif End Public Sub ReadConfig() Project.SetSmallFont(tlbMain) End Public Sub btnHide_Click() ClearSelection End Public Sub UpdateText(sText As String, sFont As String, iAlign As Integer, bAlignBase As Boolean) $hSelect = $hTextSelect.Copy() $hSelect.Text($hLastPoint.X, $hLastPoint.Y, sText, sFont, iAlign, bAlignBase) imvImage.Refresh End Public Sub imvImage_MouseWheel() If Mouse.Forward Then btnZoomIn_Click Else btnZoomOut_Click Endif Stop Event End Public Sub HasGrid() As Boolean Return $bShowGrid End Public Sub GetTool() As String Return $sTool End Public Sub Action_Activate((Key) As String) As Boolean Select Case Key Case ".locked" Project.SetReadOnly(Path, Action[Key, Me].Value) Case ".tooltip" dwgInfo.Visible = Action[".tooltip", Me].Value Case Else Return True End Select End Public Sub Form_Close() Project.AddRecentFile(Me) End Public Sub ExecAction(sAction As String) Dim hImage As Image Select Case sAction Case "stroke" If $hSelect Then hImage = $hImage.Copy() Paint.Begin(hImage) FImageProperty.PaintForStroke($hSelect.GetExtents(True)) $hSelect.Paint($hImage, CImageSelection.ACTION_STROKE) Paint.End SetImage(hImage) Endif Case "fill" hImage = $hImage.Copy() Paint.Begin(hImage) If $hSelect Then FImageProperty.PaintForFill($hSelect.GetExtents(True)) $hSelect.Paint($hImage, CImageSelection.ACTION_FILL) Else FImageProperty.PaintForFill() Paint.Rectangle(0, 0, hImage.W, hImage.H) Paint.Fill Endif Paint.End SetImage(hImage) Case "clear" If $hSelect And If Not $hSelect.IsVoid() Then hImage = $hImage.Copy() Paint.Begin(hImage) FImageProperty.PaintForFill $hSelect.Paint($hImage, CImageSelection.ACTION_CLEAR) Paint.End SetImage(hImage) Else hImage = New Image($hImage.W, $hImage.H, Color.Transparent) '$hImage.Copy() 'hImage.Transparent(FImageProperty.GetColor(True)) SetImage(hImage) Endif Case "colorize" ApplyEffect(EFFECT_COLORIZE) Case "desaturate" ApplyEffect(EFFECT_DESATURATE) Case "transparent" ApplyEffect(EFFECT_TRANSPARENT) Case "invert" ApplyEffect(EFFECT_INVERT) End Select End Private Sub MoveInfo() Dim X, Y As Integer Dim DX As Integer Dim DY As Integer If imvImage.ScrollH > imvImage.ClientH Then DX = Style.ScrollbarSize If imvImage.ScrollW > imvImage.ClientW Then DY = Style.ScrollbarSize If System.RightToLeft Then X = Desktop.Scale Else X = panBackground.W - dwgInfo.W - Desktop.Scale - DX Endif Y = Desktop.Scale If Not $bInfoTop Then Y = Max(Y, panBackground.H - dwgInfo.H - Desktop.Scale - DY) dwgInfo.Move(X, Y) End Public Sub panBackground_Arrange() MoveInfo End Public Sub dwgInfo_Draw() Dim DS As Integer = Desktop.Scale Dim X As Integer Dim Y As Integer Dim W As Float Dim H As Integer Dim iCol As Integer 'dwgInfo.Background = If Not $cInfo Then Return iCol = Color.SetAlpha(Color.TextForeground, 128) H = Paint.Font.Height + DS Paint.FillRect(0, 0, Paint.W, H, iCol) Paint.FillRect(0, H + 1, Paint.W, Paint.H - H - 1, iCol) X = DS Y = DS \ 2 W = (Paint.W - DS * 2) / 4 H = Paint.Font.Height If $cInfo.Exist("Color") Then Paint.DrawText($cInfo!X, X, Y, W - DS, H, Align.Right) Paint.DrawText("•", X, Y, W * 2, H, Align.Center) X += W Paint.DrawText($cInfo!Y, X + DS, Y, W, H, Align.Left) X += W If $cInfo.Exist("Width") Then Paint.DrawText($cInfo!Width, X, Y, W - DS, H, Align.Right) Paint.DrawText("×", X, Y, W * 2, H, Align.Center) X += W Paint.DrawText($cInfo!Height, X + DS, Y, W, H, Align.Left) X += W Endif X = DS Y += H + DS With Color[$cInfo!Color] X += (DS * 3) \ 2 Paint.DrawText(CStr(.Red), X, Y, W, H, Align.Left) X += W Paint.DrawText(CStr(.Green), X, Y, W, H, Align.Left) X += W Paint.DrawText(CStr(.Blue), X, Y, W, H, Align.Left) X += W Paint.DrawText(CStr(.Alpha), X, Y, W, H, Align.Left) X = DS Y += (H - DS) / 2 For Each iCol In [Color.Red, Color.Green, Color.Blue, Color.White] Paint.Ellipse(X, Y, DS, DS) Paint.Background = Color.SetAlpha(iCol, 64) Paint.Fill X += W Next End With Else Paint.DrawText($cInfo!Width & " × " & $cInfo!Height, X, Y, Paint.W - X, H, Align.Center) Y += H + DS Paint.DrawText($cInfo!Size, X, Y, Paint.W - X, H, Align.Center) Endif End Public Sub btnUnion_Click() DoOperation(CImageSelection.OP_UNION) End Public Sub btnIntersection_Click() DoOperation(CImageSelection.OP_INTERSECTION) End Public Sub btnDifference_Click() DoOperation(CImageSelection.OP_DIFFERENCE) End Public Sub btnExclusive_Click() DoOperation(CImageSelection.OP_XOR) End Private Sub DoOperation(iOp As Integer) If Not $hSelect Then Return If $hSelect.Count < 2 Then Return AddUndo($hSelect.Copy()) $hSelect.Operation(iOp) RefreshSelection End Public Sub GetPopupMenu() As Menu Return mnuEditor End Public Sub imvImage_DblClick() RemoveLastEndBeginUndo ClearSelection $bDblClick = True End Public Sub dwgInfo_Enter() $bInfoTop = Not $bInfoTop MoveInfo End Private Sub HasSelection() As Boolean If $hSelect And If Not $hSelect.IsVoid() Then Return True End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageEditor.form000066400000000000000000000504651411575327000242420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,175,90) Persistent = True Arrangement = Arrange.Vertical { mnuEditor Menu { mnuUndo Menu btnUndo Name = "mnuUndo" Action = ".undo" Text = ("Undo") Picture = Picture["icon:/small/undo"] Shortcut = "Ctrl+Z" } { mnuRedo Menu btnRedo Name = "mnuRedo" Action = ".redo" Text = ("Redo") Picture = Picture["icon:/small/redo"] Shortcut = "Ctrl+Y" } { mnuSep2 Menu } { mnuCut Menu btnCut Name = "mnuCut" Action = ".cut" Text = ("Cut") Picture = Picture["icon:/small/cut"] Shortcut = "Ctrl+X" } { mnuCopy Menu btnCopy Name = "mnuCopy" Action = ".copy" Text = ("Copy") Picture = Picture["icon:/small/copy"] Shortcut = "Ctrl+C" } { mnuPaste Menu Action = ".paste" Text = ("Paste") Picture = Picture["icon:/small/paste"] Shortcut = "Ctrl+V" } { mnuAction Menu Text = ("Action") { mnuCrop Menu btnCrop Name = "mnuCrop" Action = ".crop" Text = ("Crop") Picture = Picture["icon:/small/crop"] Shortcut = "Ctrl+K" } { mnuFlipH Menu btnFlipH Name = "mnuFlipH" Action = ".flip-h" Text = ("Horizontal flip") Picture = Picture["icon:/small/flip-h"] } { mnuFlipV Menu btnFlipV Name = "mnuFlipV" Action = ".flip-v" Text = ("Vertical flip") Picture = Picture["icon:/small/flip-v"] } { mnuRotateL Menu btnRotateL Name = "mnuRotateL" Action = ".rotate-left" Text = ("Rotate counter-clockwise") Picture = Picture["icon:/small/rotate-left"] Shortcut = "Ctrl+<" } { mnuRotateR Menu btnRotateR Name = "mnuRotateR" Action = ".rotate-right" Text = ("Rotate clockwise") Picture = Picture["icon:/small/rotate-right"] Shortcut = "Ctrl+>" } { Menu3 Menu } { mnuResize Menu btnResize Name = "mnuResize" Action = ".resize" Text = ("Resize") & "..." Picture = Picture["icon:/small/resize"] } { mnuRotate Menu btnRotate Name = "mnuRotate" Action = ".rotate" Text = ("Rotate") & "..." Picture = Picture["icon:/small/rotate"] } } { Menu2 Menu } { mnuSelectAll Menu Action = ".select-all" Text = Shortcut(("Select All"), "A") Picture = Picture["icon:/small/select-all"] Shortcut = "Ctrl+A" } { mnuHideSelection Menu Action = ".hide" Text = ("Hide selection") Picture = Picture["icon:/small/unselect"] Shortcut = "Esc" } { mnuSelection Menu Text = ("Selection") { mnuInvert Menu btnInvert Name = "mnuInvert" Action = ".invert" Text = ("Invert selection") Picture = Picture["img/draw/invert.png"] Shortcut = "Ctrl+I" } { mnuDuplicate Menu btnDuplicate Name = "mnuDuplicate" Action = ".duplicate" Text = ("Duplicate selection") Picture = Picture["img/draw/duplicate.png"] Shortcut = "Ctrl+D" } { mnuOffset Menu btnOffset Name = "mnuOffset" Action = ".offset" Text = ("Offset selection") Picture = Picture["img/draw/offset.png"] Shortcut = "Ctrl+*" } { Menu5 Menu } { mnuUnion Menu btnUnion Name = "mnuUnion" Text = ("Union") Picture = Picture["icon:/small/union"] } { mnuDifference Menu btnDifference Name = "mnuDifference" Text = ("Difference") Picture = Picture["icon:/small/difference"] } { mnuIntersection Menu btnIntersection Name = "mnuIntersection" Text = ("Intersection") Picture = Picture["icon:/small/intersection"] } { mnuExclusive Menu btnExclusive Name = "mnuExclusive" Text = ("Exclusive or") Picture = Picture["icon:/small/exclusive"] } } { Menu4 Menu } { mnuShapeGrid Menu Text = ("Shape grid") Visible = False { mnuDivide2 Menu mnuDivide Name = "mnuDivide2" #Translate = False Text = "2 × 2" Checked = True Tag = "2" Shortcut = "Ctrl+2" } { mnuDivide3 Menu mnuDivide Name = "mnuDivide3" #Translate = False Text = "3 × 3" Tag = "3" Shortcut = "Ctrl+3" } { mnuDivide4 Menu mnuDivide Name = "mnuDivide4" #Translate = False Text = "4 × 4" Tag = "4" Shortcut = "Ctrl+4" } { mnuDivide5 Menu mnuDivide Name = "mnuDivide5" #Translate = False Text = "5 × 5" Tag = "5" Shortcut = "Ctrl+5" } } { mnuSep4 Menu } { mnuZoom Menu Text = ("View") { mnuZoomIn Menu btnZoomIn Name = "mnuZoomIn" Action = ".zoom-in" Text = ("Zoom in") Picture = Picture["icon:/small/zoom-in"] Shortcut = "Ctrl++" } { mnuZoomOut Menu btnZoomOut Name = "mnuZoomOut" Action = ".zoom-out" Text = ("Zoom out") Picture = Picture["icon:/small/zoom-out"] Shortcut = "Ctrl+-" } { mnuZoomNormal Menu btnZoomNormal Name = "mnuZoomNormal" Action = ".zoom-normal" Text = ("Zoom normal") Picture = Picture["icon:/small/zoom-normal"] Shortcut = "Ctrl+0" } { mnuZoomFit Menu btnZoomFit Name = "mnuZoomFit" Action = ".zoom-fit" Text = ("Zoom fit") Picture = Picture["icon:/small/zoom-fit"] } } { Menu1 Menu } { mnuLocked Menu Action = ".locked" Text = ("Locked") Picture = Picture["icon:/small/lock"] Toggle = True } { mnuReload Menu btnReload Name = "mnuReload" Action = ".reload" Text = ("Reload") Picture = Picture["icon:/small/revert"] } { mnuSave Menu btnSave Name = "mnuSave" Action = ".save" Text = ("Save") Picture = Picture["icon:/small/save"] Shortcut = "Ctrl+S" } { Menu6 Menu } { mnuClose Menu Action = ".close" Text = ("Close") Picture = Picture["icon:/small/close"] Shortcut = "Ctrl+W" } } { mnuFormat Menu #Translate = False { mnuFormatJPEG Menu mnuSaveAs Name = "mnuFormatJPEG" Text = ("Save as JPEG") Tag = "jpeg" } { mnuFormatPNG Menu mnuSaveAs Name = "mnuFormatPNG" Text = ("Save as PNG") Tag = "png" } { mnuFormatBMP Menu mnuSaveAs Name = "mnuFormatBMP" Text = ("Save as BMP") Tag = "bmp" } { mnuFormatTIFF Menu mnuSaveAs Name = "mnuFormatTIFF" Action = "tiff" Text = ("Save as TIFF") } } { tlbMain ToolBar MoveScaled(0,1,168,4) Key = "image" Text = ("Image editor") { btnSave MenuButton MoveScaled(0,0,6,4) ToolTip = ("Save") Action = ".save" Picture = Picture["icon:/small/save"] Border = False Menu = "mnuFormat" } { btnReload ToolButton MoveScaled(5,0,4,4) ToolTip = ("Reload") Action = ".reload" Picture = Picture["icon:/small/refresh"] } { Separator6 Separator MoveScaled(10,0,1.125,4) } { btnUndo ToolButton MoveScaled(12,0,4,4) ToolTip = ("Undo") Action = ".undo" Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton MoveScaled(15,0,4,4) ToolTip = ("Redo") Action = ".redo" Picture = Picture["icon:/small/redo"] } { Separator3 Separator MoveScaled(18,0,1.125,4) } { btnZoomIn ToolButton MoveScaled(19,0,4,4) ToolTip = ("Zoom in") Action = ".zoom-in" Picture = Picture["icon:/small/zoom-in"] } { cmbZoom ComboBox MoveScaled(22,0,9,4) #Translate = False ToolTip = "Zoom level" Action = ".zoom" ReadOnly = True List = ["32×", "28×", "24×", "20×", "16×", "12×", "10×", "8×", "6×", "5x", "4×", "3×", "2×", "1×", "0.5×", "0.33×", "0.25×"] } { btnZoomOut ToolButton MoveScaled(31,0,4,4) ToolTip = ("Zoom out") Action = ".zoom-out" Picture = Picture["icon:/small/zoom-out"] } { btnZoomNormal ToolButton MoveScaled(34,0,4,4) ToolTip = ("Zoom normal") Action = ".zoom-normal" Picture = Picture["icon:/small/zoom-normal"] } { btnZoomFit ToolButton MoveScaled(37,0,4,4) ToolTip = ("Zoom fit") Action = ".zoom-fit" Picture = Picture["icon:/small/zoom-fit"] } { btnGrid ToolButton MoveScaled(40,0,4,4) ToolTip = ("Drawing grid") Action = ".grid" AutoResize = True Picture = Picture["icon:/small/grid"] Toggle = True } { ToolButton40 ToolButton MoveScaled(44,0,4,4) ToolTip = ("Toggle information tooltip") Action = ".tooltip" Picture = Picture["icon:/small/info"] Toggle = True Value = True } { Separator4 Separator MoveScaled(48,0,1.125,4) } { btnCopy ToolButton MoveScaled(49,0,4,4) ToolTip = ("Copy") Action = ".copy" Picture = Picture["icon:/small/copy"] } { btnCut ToolButton MoveScaled(52,0,4,4) ToolTip = ("Cut") Action = ".cut" Picture = Picture["icon:/small/cut"] } { btnPaste ToolButton btnTool Name = "btnPaste" MoveScaled(55,0,4,4) Tag = "paste" ToolTip = ("Paste") Action = ".tool-paste" Picture = Picture["icon:/small/paste"] Toggle = True } { Separator2 Separator MoveScaled(59,0,1.125,4) } { btnMove ToolButton btnTool Name = "btnMove" MoveScaled(61,0,4,4) Tag = "move" ToolTip = ("Move") Action = ".tool-move" Picture = Picture["icon:/small/move"] Toggle = True Value = True } { btnDraw ToolButton btnTool Name = "btnDraw" MoveScaled(64,0,4,4) Tag = "draw" ToolTip = ("Draw") Action = ".tool-draw" Picture = Picture["icon:/small/pen"] Toggle = True } { btnErase ToolButton btnTool Name = "btnErase" MoveScaled(67,0,4,4) Tag = "erase" ToolTip = ("Erase") Action = ".tool-erase" Picture = Picture["icon:/small/erase"] Toggle = True } { btnLine ToolButton btnTool Name = "btnLine" MoveScaled(70,0,4,4) Tag = "line" ToolTip = ("Line") Action = ".tool-line" Picture = Picture["icon:/small/draw-path"] Toggle = True } { btnRectangle ToolButton btnTool Name = "btnRectangle" MoveScaled(73,0,4,4) Tag = "rectangle" ToolTip = ("Rectangle") Action = ".tool-rectangle" Picture = Picture["icon:/small/draw-rectangle"] Toggle = True } { btnEllipse ToolButton btnTool Name = "btnEllipse" MoveScaled(76,0,4,4) Tag = "ellipse" ToolTip = ("Ellipse") Action = ".tool-ellipse" Picture = Picture["icon:/small/draw-circle"] Toggle = True } { btnText ToolButton btnTool Name = "btnText" MoveScaled(79,0,4,4) Tag = "text" ToolTip = ("Text") Action = ".tool-text" Picture = Picture["icon:/small/draw-text"] Toggle = True } { btnMagic ToolButton btnTool Name = "btnMagic" MoveScaled(83,0,4,4) Tag = "magic" ToolTip = ("Magic wand") Action = ".tool-magic" Picture = Picture["icon:/small/wizard"] Toggle = True } { btnHide ToolButton MoveScaled(86,0,4,4) ToolTip = ("Hide selection") Action = ".hide" Picture = Picture["icon:/small/unselect"] } { btnEditSelection ToolButton btnTool Name = "btnEditSelection" MoveScaled(90,0,4,4) Tag = "change" ToolTip = ("Edit selection") Action = ".tool-change" Picture = Picture["img/draw/move.png"] Toggle = True } { Separator8 Separator MoveScaled(94,0,1,4) } { btnUnion ToolButton MoveScaled(95,0,4,4) ToolTip = ("Union") Action = ".union" Picture = Picture["icon:/small/union"] } { btnDifference ToolButton MoveScaled(98,0,4,4) ToolTip = ("Difference") Action = ".difference" Picture = Picture["icon:/small/difference"] } { btnIntersection ToolButton MoveScaled(101,0,4,4) Visible = False ToolTip = ("Intersection") Action = ".intersection" Picture = Picture["icon:/small/intersection"] } { btnExclusive ToolButton MoveScaled(104,0,4,4) Visible = False ToolTip = ("Exclusive or") Action = ".exclusive" Picture = Picture["icon:/small/exclusive"] } { btnInvert ToolButton MoveScaled(108,0,4,4) ToolTip = ("Invert selection") Action = ".invert" Picture = Picture["img/draw/invert.png"] } { btnDuplicate ToolButton MoveScaled(111,0,4,4) ToolTip = ("Duplicate selection") Action = ".duplicate" Picture = Picture["icon:/small/clone"] } { btnOffset ToolButton MoveScaled(115,0,4,4) ToolTip = ("Offset selection") Action = ".offset" Picture = Picture["img/draw/offset.png"] } { Separator5 Separator MoveScaled(119,0,1,4) } { btnCrop ToolButton MoveScaled(120,0,4,4) Visible = False ToolTip = ("Crop") Action = ".crop" Picture = Picture["icon:/small/crop"] } { btnFlipH ToolButton MoveScaled(123,0,4,4) ToolTip = ("Horizontal flip") Action = ".flip-h" Picture = Picture["icon:/small/flip-h"] } { btnFlipV ToolButton MoveScaled(126,0,4,4) ToolTip = ("Vertical flip") Action = ".flip-v" Picture = Picture["icon:/small/flip-v"] } { btnRotateR ToolButton MoveScaled(129,0,4,4) ToolTip = ("Rotate clockwise") Action = ".rotate-r" Picture = Picture["icon:/small/rotate-right"] } { btnRotateL ToolButton MoveScaled(132,0,4,4) ToolTip = ("Rotate counter-clockwise") Action = ".rotate-l" Picture = Picture["icon:/small/rotate-left"] } { btnResize ToolButton MoveScaled(135,0,4,4) ToolTip = ("Resize or stretch image") Action = ".resize" AutoResize = True Picture = Picture["icon:/small/resize"] } { btnRotate ToolButton MoveScaled(138,0,4,4) Visible = False ToolTip = ("Rotate image") Action = ".rotate" AutoResize = True Picture = Picture["icon:/small/rotate"] } { Spring1 Spring MoveScaled(153,0,8,4) } { ToolButton7 ToolButton MoveScaled(165,0,4,4) ToolTip = ("Lock / unlock file") Action = ".locked" Picture = Picture["icon:/small/lock"] Toggle = True } } { Separator1 Separator MoveScaled(68,9,18,0) } { HBox2 HBox MoveScaled(2,13,141,74) Expand = True { panBackground Panel MoveScaled(9,6,62,37) Expand = True Arrangement = Arrange.Fill { dwgBackground DrawingArea MoveScaled(29,6,24,24) Background = Color.LightForeground } { imvImage ImageView MoveScaled(3,2,31,30) Tracking = True Border = False UseMouse = False } { dwgInfo DrawingArea MoveScaled(34,23,17,5) Ignore = True } } { timSelect #Timer #MoveScaled(108,20) Delay = 400 } } } # Gambas Action File 3.0 { Actions { Action close Text = "Close" Shortcut = "Ctrl+W" Picture = "icon:/small/close" } { Action copy Text = "Copy" Shortcut = "Ctrl+C" Picture = "icon:/small/copy" } { Action crop Text = "Crop" Shortcut = "Ctrl+K" Picture = "icon:/small/crop" } { Action cut Text = "Cut" Shortcut = "Ctrl+X" Picture = "icon:/small/cut" } { Action difference Text = "Difference" Picture = "icon:/small/difference" } { Action duplicate Text = "Duplicate selection" Shortcut = "Ctrl+D" Picture = "icon:/small/clone" } { Action exclusive Text = "Exclusive or" Picture = "icon:/small/exclusive" } { Action flip-h Text = "Horizontal flip" Shortcut = "" Picture = "icon:/small/flip-h" } { Action flip-v Text = "Vertical flip" Shortcut = "" Picture = "icon:/small/flip-v" } { Action grid Text = "Drawing grid" Picture = "icon:/small/grid" } { Action hide Text = "Hide selection" Shortcut = "Esc" Picture = "icon:/small/unselect" } { Action intersection Text = "Intersection" Picture = "icon:/small/intersection" } { Action invert Text = "Invert selection" Shortcut = "Ctrl+I" Picture = "img/draw/invert.png" } { Action locked Text = "Locked" Shortcut = "" Picture = "icon:/small/lock" } { Action offset Text = "Offset selection" Shortcut = "Ctrl+*" Picture = "img/draw/offset.png" } { Action paste Text = "Paste" Shortcut = "Ctrl+V" Picture = "icon:/small/paste" } { Action redo Text = "Redo" Shortcut = "Ctrl+Y" Picture = "icon:/small/redo" } { Action reload Text = "Reload" Shortcut = "" Picture = "icon:/small/refresh" } { Action resize Text = "Resize" Shortcut = "" Picture = "icon:/small/resize" } { Action rotate Text = "Rotate" Shortcut = "" Picture = "icon:/small/rotate" } { Action rotate-l Text = "Rotate counter-clockwise" Picture = "icon:/small/rotate-left" } { Action rotate-left Text = "Rotate counter-clockwise" Shortcut = "Ctrl+<" Picture = "icon:/small/rotate-left" } { Action rotate-r Text = "Rotate clockwise" Picture = "icon:/small/rotate-right" } { Action rotate-right Text = "Rotate clockwise" Shortcut = "Ctrl+>" Picture = "icon:/small/rotate-right" } { Action save Text = "Save" Shortcut = "Ctrl+S" Picture = "icon:/small/save" } { Action select-all Text = "Select All" Shortcut = "Ctrl+A" Picture = "icon:/small/select-all" } { Action tiff Text = "Save as TIFF" Shortcut = "" } { Action tool-change Text = "Edit selection" Picture = "img/draw/move.png" } { Action tool-draw Text = "Draw" Picture = "icon:/small/pen" } { Action tool-ellipse Text = "Ellipse" Picture = "icon:/small/draw-circle" } { Action tool-erase Text = "Erase" Picture = "icon:/small/erase" } { Action tool-line Text = "Line" Picture = "icon:/small/draw-path" } { Action tool-magic Text = "Magic wand" Picture = "icon:/small/wizard" } { Action tool-move Text = "Move" Picture = "icon:/small/move" } { Action tool-paste Text = "Paste" Picture = "icon:/small/paste" } { Action tool-rectangle Text = "Rectangle" Picture = "icon:/small/draw-rectangle" } { Action tool-text Text = "Text" Picture = "icon:/small/draw-text" } { Action tooltip Text = "Toggle information tooltip" Picture = "icon:/small/info" } { Action undo Text = "Undo" Shortcut = "Ctrl+Z" Picture = "icon:/small/undo" } { Action union Text = "Union" Picture = "icon:/small/union" } { Action zoom Text = "Zoom level" Picture = "$ComboBox" } { Action zoom-fit Text = "Zoom fit" Shortcut = "" Picture = "icon:/small/zoom-fit" } { Action zoom-in Text = "Zoom in" Shortcut = "Ctrl++" Picture = "icon:/small/zoom-in" } { Action zoom-normal Text = "Zoom normal" Shortcut = "Ctrl+0" Picture = "icon:/small/zoom-normal" } { Action zoom-out Text = "Zoom out" Shortcut = "Ctrl+-" Picture = "icon:/small/zoom-out" } } { Toolbars { Toolbar image Text = "Image editor" List = "save,reload,undo,redo,zoom-in,zoom,zoom-out,zoom-normal,zoom-fit,grid,tooltip,copy,cut,tool-paste,tool-move,tool-draw,tool-erase,tool-line,tool-rectangle,tool-ellipse,tool-text,tool-magic,hide,tool-change,union,difference,intersection,exclusive,invert,duplicate,offset,crop,flip-h,flip-v,rotate-r,rotate-l,resize,rotate,locked" Default = "save,reload,|,undo,redo,|,zoom-in,zoom,zoom-out,zoom-normal,zoom-fit,grid,tooltip,|,copy,cut,tool-paste,|,tool-move,tool-draw,tool-erase,tool-line,tool-rectangle,tool-ellipse,tool-text,tool-magic,hide,tool-change,|,union,difference,invert,duplicate,offset,|,flip-h,flip-v,rotate-r,rotate-l,resize,~,locked" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageOffsetSelection.class000066400000000000000000000011371411575327000262420ustar00rootroot00000000000000' Gambas class file Static Public Size As Integer Static Public Mode As Integer Public Sub Run() As Boolean Dim hRadio As RadioButton txtSize.Value = Size For Each hRadio In panMode.Children If hRadio.Tag = Mode Then hRadio.Value = True Break Endif Next Return Not Me.ShowDialog() End Public Sub btnOK_Click() Dim hRadio As RadioButton Size = txtSize.Value For Each hRadio In panMode.Children If hRadio.Value Then Mode = hRadio.Tag Break Endif Next Me.Close(True) End Public Sub btnCancel_Click() Me.Close End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageOffsetSelection.form000066400000000000000000000017121411575327000260770ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,38,20) Text = ("Offset selection") Resizable = False { txtSize SpinBox MoveScaled(1,1,10,4) MinValue = 1 MaxValue = 256 Value = 1 Alignment = Align.Right } { Label1 Label MoveScaled(12,1,4,4) Text = ("px") } { btnOK Button MoveScaled(21,1,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(21,6,16,4) Text = ("Cancel") Cancel = True } { panMode Panel MoveScaled(1,7,18,12) Arrangement = Arrange.Vertical Spacing = True { radShrink RadioButton MoveScaled(0,0,16,3) Tag = "0" AutoResize = True Text = ("Shrink") Value = True } { radGrow RadioButton MoveScaled(0,4,16,3) Tag = "1" AutoResize = True Text = ("Grow") } { radBorder RadioButton MoveScaled(0,8,16,3) Tag = "2" AutoResize = True Text = ("Border") } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageProperty.class000066400000000000000000000767411411575327000250070ustar00rootroot00000000000000' Gambas class file Private $aDefaultColor As Integer[] = [Color.Black, Color.White, Color.DarkGray, Color.Gray, Color.LightGray, Color.Blue, Color.Cyan, Color.Green, Color.Yellow, Color.Orange, Color.Red, Color.Magenta] Private $aGradient As New CReportBrush[] Private $aShape As CImageSelection[] Private $aClipboard As New CImageClipboard[] Private $aGradientPos As Float[] Private $aGradientColors As Integer[] Private $iCurrentColor As Integer = -1 Private $aLabel As Label[] Private $lblA1 As DrawingArea Private $lblA2 As DrawingArea 'tampon souris Private $MX As Integer Private $MY As Integer 'Valeur radiales Private $fX As Float = 0.5 Private $fY As Float = 0.5 Private $cX As Float = 0.5 Private $cY As Float = 0.5 Private $fRadius As Float = 1 / Sqr(2) 'valeur linéaires Private $flX1 As Float = 0 Private $flY1 As Float = 0.5 Private $flX2 As Float = 1 Private $flY2 As Float = 0.5 Private $iLineCap As Integer Private $iLineJoin As Integer Private $iFillRule As Integer Private $iNoUpdateBalance As Integer Private $bChangingTab As Boolean Private $bDoNotUpdateGrid As Boolean 'Static Public Value As String '"radialgradient(0.5,0.5,1,0.5,0.5,[&hFFFFFF,&h000000,&h00FF00],[0,0.5,1])" '"lineargradient(0,0.5,1,0.5,[&hFFFFFF,&h000000,&h00FF00],[0,0.5,1])" Private Sub GetCurrent() As FImageEditor Try Return Project.ActiveForm End Public Sub _new() $aGradientColors = [Color.Black, Color.White] $aGradientPos = [0, 1] $lblA2 = New DrawingArea(dwgGradient) As "lblAngle" $lblA2.Mouse = Mouse.Cross $lblA1 = New DrawingArea(dwgGradient) As "lblAngle" $lblA1.Mouse = Mouse.Cross gvwClipboard.Columns.Count = 3 gvwClipboard.Columns[0].Width = Desktop.Scale * 12 gvwClipboard.Columns[1].Expand = True gvwClipboard.Columns[2].Width = Desktop.Scale * 4 gvwClipboard.Rows.H = Desktop.Scale * 8 gvwShape.Columns.Count = 3 gvwShape.Columns[0].Width = Desktop.Scale * 12 gvwShape.Columns[1].Expand = True gvwShape.Columns[2].Width = Desktop.Scale * 4 gvwShape.Rows.H = Desktop.Scale * 8 $aGradient.Add(CReportBrush["LinearGradient(0,0.5,1,0.5,[#000000,#FFFFFF],[0,1])"]) $aGradient.Add(CReportBrush["LinearGradient(0,0.5,1,0.5,[#000000,#FFFFFFFF],[0,1])"]) palColor.Colors = $aDefaultColor SetLineCap(Paint.LineCapRound) SetLineJoin(Paint.LineJoinRound) SetFillRule(Paint.FillRuleWinding) 'RefreshTextOption End Public Sub Form_Open() Dim I As Integer Dim hLabel As Label $aLabel = New Label[$aGradientColors.Count] For I = 0 To $aGradientColors.Max hLabel = New Label(dwgGradientColor) As "Label" hLabel.Background = $aGradientColors[I] hLabel.Border = Border.Plain hLabel.Resize(10, 10) hLabel.Tag = I $aLabel[I] = hLabel Next $lblA1.Border = Border.Plain $lblA1.Resize(10, 10) $lblA1.Background = Color.White $lblA1.Tag = 1 $lblA2.Border = Border.Plain $lblA2.Resize(10, 10) $lblA2.Background = Color.White $lblA2.Tag = 2 'MoveLabels UpdateGradient ReadConfig AddClipboard(Null, "") 'UpdateClipboard End Private Sub RememberColor(iColor As Integer) If Not palColor.Exist(iColor) Then palColor.AddFirst(iColor) End Private Sub RememberGradient(hBrush As CReportBrush) If $aGradient.Exist(hBrush) Then Return $aGradient.Add(hBrush.Copy(), 0) If $aGradient.Count > 24 Then $aGradient.Remove($aGradient.Max) dwgGradientStack.Refresh End Public Sub SetColor(iColor As Integer) cchColor.Value = Color.SetAlpha(iColor, 0) slbOpacity.Value = 255 - Color[iColor].Alpha End Public Sub GetColor(Optional bIgnoreOpacity As Boolean) As Integer Dim iColor As Integer = cchColor.Value RememberColor(iColor) If Not bIgnoreOpacity Then iColor = Color.SetAlpha(iColor, 255 - slbOpacity.Value) Return iColor End Public Sub GetSize() As Integer Return slbSize.Value End Public Sub GetBrush(hRect As RectF, Optional bIgnoreOpacity As Boolean, Optional bDoNotRemember As Boolean) As PaintBrush Dim hImage As Image Dim hBrush As CReportBrush Dim hPaintBrush As PaintBrush Dim I As Integer Dim iCol As Integer Select Case tabBrush.Index Case 1 hBrush = ToBrush() If Not bDoNotRemember Then RememberGradient(hBrush) If Not bIgnoreOpacity Then For I = 0 To hBrush.Colors.Max iCol = hBrush.Colors[I] hBrush.Colors[I] = Color.SetAlpha(iCol, 255 - ((255 - Color.GetAlpha(iCol)) * slbOpacity.Value) \ 255) Next Endif hPaintBrush = hBrush.GetBrush(0, 0, 1, 1) If hRect Then hPaintBrush.Translate(hRect.X, hRect.Y) hPaintBrush.Scale(hRect.W, hRect.H) Endif Case 2 If gvwClipboard.Row = 0 Then Try hImage = Clipboard.Paste() Else If gvwClipboard.Row > 0 Then hImage = $aClipboard[gvwClipboard.Row].Image Endif If Not hImage Or If hImage.W <= 0 Or If hImage.H <= 0 Then Return Paint.Color(GetColor()) If Not bIgnoreOpacity Then hImage = hImage.Copy().Opacity(slbOpacity.Value / 255) hPaintBrush = Paint.Image(hImage) If hRect Then hPaintBrush.Translate(hRect.X, hRect.Y) hPaintBrush.Scale(hRect.W / hImage.W, hRect.H / hImage.H) Endif Case Else hPaintBrush = Paint.Color(GetColor(bIgnoreOpacity)) End Select Return hPaintBrush End Public Sub PaintForStroke(Optional hRect As RectF, Optional bIgnoreOpacity As Boolean) Dim iSize As Integer = slbSize.Value If iSize = 0 Then Paint.LineWidth = 1 Paint.AntiAlias = False Paint.LineCap = Paint.LineCapSquare Paint.LineJoin = Paint.LineJoinRound Else Paint.LineWidth = iSize Paint.AntiAlias = True Paint.LineCap = $iLineCap Paint.LineJoin = $iLineJoin Endif If Not hRect Then hRect = RectF(0, 0, Paint.W, Paint.H) Paint.Brush = GetBrush(hRect, bIgnoreOpacity) End Public Sub PaintForFill(Optional hRect As RectF) Paint.FillRule = $iFillRule If Not hRect Then hRect = RectF(0, 0, Paint.W, Paint.H) Paint.Brush = GetBrush(hRect) End Public Sub HasGradient() As Boolean Return tabBrush.Index = 1 End Public Sub palColor_Click() cchColor.Value = palColor.Current End Public Sub dwgGradientColor_Draw() Dim hLabel As Label Dim iPos, I As Integer Paint.Rectangle(5, 5, Paint.Width - 10, Paint.Height - 20) Paint.Clip Paint.FillRect(0, 0, Paint.W, Paint.H, Color.LightForeground) Project.DrawBackground() Paint.Brush = Paint.LinearGradient(5, 0, Paint.Width - 10, 0, $aGradientColors, $aGradientPos) Paint.Rectangle(0, 0, Paint.W, Paint.H) Paint.Fill Paint.ResetClip For Each hLabel In $aLabel iPos = $aGradientPos[I] * (Paint.Width - 10) + 5 Paint.MoveTo(iPos - hLabel.Width / 2, Paint.Height - hLabel.Height) Paint.LineTo(iPos + hLabel.Width / 2, Paint.Height - hLabel.Height) Paint.LineTo(iPos, Paint.Height - 15) Paint.Brush = Paint.Color(IIf(hLabel.Tag = $iCurrentColor, Color.White, Color.Black)) Paint.Fill hLabel.Move(iPos - hLabel.Width / 2, Paint.Height - hLabel.Height) Inc I Next dwgGradient.Refresh End Public Sub Label_MouseDown() $MX = Mouse.ScreenX - Last.X $iCurrentColor = Last.Tag '$MY = Mouse.ScreenY - Last.Y dwgGradientColor.Refresh End Public Sub Label_MouseMove() Dim hLabel As Label = Last Dim iRealPos As Integer = Mouse.ScreenX - $MX + hLabel.Width / 2 If iRealPos < 5 Or iRealPos > dwgGradientColor.Width - 5 Then Return hLabel.Move(Mouse.ScreenX - $MX, hLabel.Y) $aGradientPos[hLabel.Tag] = Round((hLabel.X + hLabel.Width / 2 - 5) / (dwgGradientColor.Width - 10), -2) dwgGradientColor.Refresh 'Print $aGradientPos[hLabel.Tag] End Public Sub dwgGradient_Draw() Dim hBrush As PaintBrush Paint.Rectangle(5, 5, dwgGradient.Width - 10, dwgGradient.Height - 10) Paint.Clip Paint.FillRect(0, 0, Paint.W, Paint.H, Color.LightForeground) Project.DrawBackground() hBrush = GetBrush(Null, True, True) hBrush.Scale(dwgGradient.Width, dwgGradient.Height) Paint.Brush = hBrush 'Paint.Brush.Translate(5, 5) 'Paint.Brush.Reset Paint.Rectangle(5, 5, dwgGradient.Width - 10, dwgGradient.Height - 10) Paint.Fill Paint.LineWidth = 1 Paint.Brush = Paint.Color(Color.Black) Paint.MoveTo($lblA1.Left + 5, $lblA1.Top + 5) Paint.LineTo($lblA2.Left + 5, $lblA2.Top + 5) Paint.Stroke ' If radRadial.Value Then ' ' ' Paint.Brush = Paint.RadialGradient((Paint.Width - 10) * $cX, (Paint.Height - 10) * $cY, (Paint.Width - 10) * 2 * $fRadius, (Paint.Width - 10) * $fX, (Paint.Height - 10) * $fY, $aGradientColors, $aGradientPos) ' Paint.Rectangle(5, 5, Paint.Width - 10, Paint.Height - 10) ' Paint.Fill ' ' Else ' ' Paint.Brush = Paint.LinearGradient((Paint.Width - 10) * $flX1, (Paint.Height - 10) * $flY1, (Paint.Width - 10) * $flX2, (Paint.Height - 10) * $flY2, $aGradientColors, $aGradientPos) ' Paint.Rectangle(5, 5, Paint.Width - 10, Paint.Height - 10) ' Paint.Fill ' Paint.Brush = Paint.Color(Color.Black) ' Paint.MoveTo($lblA1.Left + 5, $lblA1.Top + 5) ' Paint.LineTo($lblA2.Left + 5, $lblA2.Top + 5) ' Paint.Stroke ' ' Endif End Private Sub AddGradient(X As Float, iGradientColor As Integer) Dim hLabel As Label hLabel = New Label(dwgGradientColor) As "Label" $aGradientColors.Add(iGradientColor) $aGradientPos.Add(X) hLabel.Background = iGradientColor hLabel.Resize(10, 10) hLabel.Tag = $aGradientColors.Max hLabel.Border = Border.Plain $aLabel.Add(hLabel) dwgGradientColor.Refresh End Public Sub dwgGradientColor_DblClick() Dim X, XMin, XMax As Float Dim iInd, iMin, iMax As Integer X = Round((Mouse.X - 5) / (dwgGradientColor.Width - 10), -2) If $aGradientPos.Exist(X) Then Return XMin = 0 iMin = -1 XMax = 1 iMax = -1 For iInd = 0 To $aGradientPos.Max If $aGradientPos[iInd] >= XMin And $aGradientPos[iInd] < X Then iMin = iInd XMin = $aGradientPos[iInd] Endif If $aGradientPos[iInd] > X And $aGradientPos[iInd] <= XMax Then iMax = iInd XMax = $aGradientPos[iInd] Endif Next If iMin < 0 Then iMin = iMax Else If iMax < 0 Then iMax = iMin Endif AddGradient(X, Color.Gradient($aGradientColors[iMin], $aGradientColors[iMax])) End Public Sub sldRadius_Change() $fRadius = Last.value / 100 dwgGradient.Refresh End Private Function FindLabel(iColor As Integer) As Label Dim hLabel As Label For Each hLabel In $aLabel If hLabel.Tag = iColor Then Return hLabel Next End Private Sub SelectColor(iColor As Integer) Dim hLabel As Label = FindLabel(iColor) If Not FColorChooser.Run($aGradientColors[iColor], True) Then hLabel.Background = FColorChooser.Value $aGradientColors[iColor] = FColorChooser.Value dwgGradientColor.Refresh Endif End Public Sub Label_DblClick() SelectColor(Last.Tag) End Private Sub RemoveGradient() Dim I As Integer If $aGradientColors.Count <= 2 Then Return $aGradientColors.Remove($iCurrentColor) $aGradientPos.Remove($iCurrentColor) $aLabel[$iCurrentColor].Delete $aLabel.Remove($iCurrentColor) $iCurrentColor = -1 For I = 0 To $aGradientColors.Max $aLabel[I].Tag = I Next dwgGradientColor.Refresh End Public Sub dwgGradientColor_KeyPress() If Key.Code <> Key.Delete Then Return If $iCurrentColor < 0 Then Return RemoveGradient() End ' Public Sub btnOK_Click() ' ' Dim i As Integer ' Dim f As Float ' Dim sValue As String ' ' Select Case cmbType.Index ' Case CReportBrush.TYPE_COLOR ' sValue = CReportBrush.ColorToString($iColor) ' ' Case CReportBrush.TYPE_LINEAR_GRADIENT, CReportBrush.TYPE_RADIAL_GRADIENT ' If cmbType.Index = CReportBrush.TYPE_RADIAL_GRADIENT Then ' sValue = "RadialGradient(" & $cx & "," & $cy & "," & $fRadius & "," & $fx & "," & $fy & ",[" ' Else ' sValue = "LinearGradient(" & $flX1 & "," & $flY1 & "," & $flX2 & "," & $flY2 & ",[" ' Endif ' ' For Each i In $aGradientColors ' sValue &= CReportBrush.ColorToString(i) & "," ' Next ' ' sValue = Left(sValue, -1) ' ' sValue &= "],[" ' ' For Each f In $aGradientPos ' sValue &= f & "," ' Next ' sValue = Left(sValue, -1) ' ' sValue &= "])" ' ' Case CReportBrush.TYPE_IMAGE ' ' sValue = "Image(" & Quote(txtImage.Text) & ")" ' ' End Select ' ' Value = sValue ' Me.Close(True) ' ' End Public Sub lblAngle_MouseDown() $MX = Mouse.ScreenX - Last.X 'iCurrentColor = Last.Tag $MY = Mouse.ScreenY - Last.Y dwgGradientColor.Refresh End Private Sub UpdateAngle() Dim hLabel As DrawingArea Dim X, Y As Float For Each hLabel In [$lblA1, $lblA2] X = Round(hLabel.X / (dwgGradient.Width - 10), -2) Y = Round(hLabel.Y / (dwgGradient.Height - 10), -2) If hLabel.Tag = 1 Then If radLinear.Value Then $flX1 = X $flY1 = Y Else $cX = X $cY = Y Endif Else If radLinear.Value Then $flX2 = X $flY2 = Y Else $fX = X $fY = Y Endif Endif dwgGradient.Refresh Next End Public Sub lblAngle_MouseMove() Dim hLabel As DrawingArea = Last Dim X As Integer = Mouse.ScreenX - $MX Dim Y As Integer = Mouse.ScreenY - $MY If Mouse.Control Then Else If Mouse.Shift Then Else X = X And Not 7 Y = Y And Not 7 Endif X = Max(Min(dwgGradient.Width - 10, X), 0) Y = Max(Min(dwgGradient.Height - 10, Y), 0) hLabel.Move(X, Y) UpdateAngle End Public Sub lblAngle_DblClick() Dim hLabel As DrawingArea = Last Dim hOther As DrawingArea If hLabel = $lblA1 Then hOther = $lblA2 Else hOther = $lblA1 Endif hLabel.Move(hOther.X, hOther.Y) UpdateAngle End ' Public Sub txtImage_Change() ' ' Try picImage.Picture = Picture[Project.Dir &/ txtImage.Text] ' ' End ' Public Sub FileChooser1_Activate() ' ' btnOK_Click ' Me.Title = value ' ' End ' Public Sub cchColor_Change() ' ' $iColor = cchColor.Value ' ' End ' ' Public Sub cchColor_Activate() ' ' btnOK.Value = True ' ' End Public Sub btnCancel_Click() Me.Close End Private Sub UpdateGradient() Dim bRadial As Boolean = radRadial.Value panRadius.Visible = bRadial MoveLabels UpdateAngle dwgGradientColor.Refresh End ' Public Sub txtImage_Click() ' ' Dim sImage As String ' ' sImage = FSelectIcon.Run(txtImage.Text) ' If Not sImage Then Return ' txtImage.Text = sImage ' ' End Public Sub lblAngle_Draw() Dim sText As String If Not radRadial.Value Then Return If Last.Tag = 1 Then sText = "C" Else sText = "F" Endif Draw.Font.Size = 7 Draw.Font.Bold = True Draw.Text(sText, 0, 0, Draw.Width, Draw.Height, Align.Center) End Private Sub FindNextColor(iColor As Integer) As Integer Dim iInd As Integer Dim iColor2 As Integer Dim fMax As Float = 1 For iInd = 0 To $aGradientPos.Max If $aGradientPos[iInd] > $aGradientPos[iColor] And If $aGradientPos[iInd] <= fMax Then fMax = $aGradientPos[iInd] iColor2 = iInd Endif Next Return iColor2 End Public Sub btnAddGradient_Click() Dim iColor As Integer = $iCurrentColor Dim iColor2 As Integer If iColor < 0 Then iColor = 0 iColor2 = FindNextColor(iColor) AddGradient(($aGradientPos[iColor] + $aGradientPos[iColor2]) / 2, Color.Gradient($aGradientColors[iColor], $aGradientColors[iColor2])) End Public Sub btnRemoveGradient_Click() If $iCurrentColor < 0 Then Return If $aGradientPos.Count <= 2 Then Return RemoveGradient() End Public Sub btnColorGradient_Click() If $iCurrentColor < 0 Then Return SelectColor($iCurrentColor) End Public Sub btnExchangeGradient_Click() $aGradientPos.Reverse dwgGradientColor.Refresh End Public Sub radLinear_Click() UpdateGradient End Public Sub radRadial_Click() UpdateGradient End Public Sub panGradient_Arrange() dwgGradient.Resize(panGradient.H, panGradient.H) panGradientToolbar.Move(panGradient.H + Desktop.Scale, 0) MoveLabels End Private Sub MoveLabels() Dim X1, X2, Y1, Y2 As Float If radLinear.Value Then X1 = $flX1 Y1 = $flY1 X2 = $flX2 Y2 = $flY2 Else X1 = $cX Y1 = $cY X2 = $fX Y2 = $fY sldRadius.Value = $fRadius * 100 Endif $lblA1.Move((dwgGradient.Width - 10) * X1, (dwgGradient.Height - 10) * Y1) $lblA2.Move((dwgGradient.Width - 10) * X2, (dwgGradient.Height - 10) * Y2) End Public Sub btnResetRadius_Click() sldRadius.Value = 100 / Sqr(2) End Public Sub GetTolerance() As Integer Return slbTolerance.Value End Public Sub GetRoundness() As Integer Return slbRoundness.Value End Public Sub ReadConfig() tabBrush.TextFont = Project.GetSmallFont() End Public Sub AddClipboard(hImage As Image, sText As String) Dim hClip As CImageClipboard hClip = New CImageClipboard hClip.Image = hImage If Not sText Then hClip.Text = ("System clipboard") hImage = Picture["icon:/128/paste"].Image Else hClip.Text = sText Endif hClip.MakeThumb(hImage) $aClipboard.Add(hClip, 1) If $aClipboard.Count > 16 Then $aClipboard.Remove($aClipboard.Max) gvwClipboard.Rows.Count = $aClipboard.Count If $aClipboard.Count > 1 Then gvwClipboard.Row = 1 'tabBrush.Index = 2 Endif End Public Sub gvwClipboard_Data(Row As Integer, Column As Integer) Dim sText As String Select Case Column Case 0 With gvwClipboard.Data .Picture = $aClipboard[Row].Thumb .Alignment = Align.Left .Padding = Desktop.Scale End With Case 1 With gvwClipboard.Data .Alignment = Align.Left .Padding = Desktop.Scale sText = $aClipboard[Row].Text If $aClipboard[Row].Image Then sText &= " ( " & CStr($aClipboard[Row].Image.Width) & " × " & CStr($aClipboard[Row].Image.Height) & " )" .Text = sText End With Case 2 If Row = 0 Then Return With gvwClipboard.Data .Picture = Picture["icon:/small/delete"] .Alignment = Align.Center .Padding = Desktop.Scale End With End Select End ' Public Sub tabBrush_Click() ' ' If tabBrush.Index = 2 Then ' timClipboard_Timer ' timClipboard.Start ' Else ' timClipboard.Stop ' Endif ' ' End ' ' Public Sub timClipboard_Timer() ' ' Dim hClip As CImageClipboard ' ' If Clipboard.Type = Clipboard.Image Then ' If Not $bHasSystemClipboard Then ' hClip = New CImageClipboard ' $aClipboard.Add(hClip, 0) ' Else ' hClip = $aClipboard[0] ' hClip.Image = Clipboard.Paste() ' hClip.Text = ("System clipboard") ' hClip.Thumb = hClip.Image.Stretch(-1, Desktop.Scale * 6).Picture ' Endif ' $bHasSystemClipboard = True ' Else ' $aClipboard.Remove(0) ' $bHasSystemClipboard = False ' Endif ' ' gvwClipboard.Rows.Count = $aClipboard.Count ' gvwClipboard.Refresh ' ' End Private Sub RefreshClipboard() 'Dim aFormat As String[] 'Dim iFormat As Integer If Not Clipboard.HasChanged Then Return Inc Application.Busy 'aFormat = Clipboard.Formats 'iFormat = aFormat.Find("image/*", gb.Like) 'If iFormat >= 0 Then Try $aClipboard[0].Image = Clipboard.Paste() 'Endif Dec Application.Busy If Not Error Then $aClipboard[0].MakeThumb Else $aClipboard[0].MakeThumb(Picture["icon:/128/paste"].Image) Endif End Public Sub gvwClipboard_Select() If gvwClipboard.Row = 0 Then RefreshClipboard UpdateClipboard End Public Sub gvwClipboard_Click() If gvwClipboard.Row > 0 And If gvwClipboard.Column = 2 Then $aClipboard.Remove(gvwClipboard.Row) gvwClipboard.Rows.Count = $aClipboard.Count gvwClipboard.Refresh Endif End Public Sub GetClipboard() As Image Dim hImage As Image If Not $bChangingTab Then $bChangingTab = True If tabBrush.Index <> 2 Then tabBrush.Index = 2 $bChangingTab = False Endif Try hImage = $aClipboard[gvwClipboard.Row].Image If Not hImage Then Return Return hImage.Copy().Opacity(slbOpacity.Value / 255) End Public Sub GetShape() As CImageSelection If tabBrush.Index <> 3 Then Return Try Return $aShape[gvwShape.Row] End Public Sub slbValue_Change() UpdateBalance End Public Sub btnBalanceReset_Click() Dim hCtrl As SliderBox Inc $iNoUpdateBalance For Each hCtrl In [slbBrightness, slbContrast, slbGamma, slbHue, slbSaturation, slbLightness, slbBlur, slbTransparency] hCtrl.Value = 0 Next Dec $iNoUpdateBalance UpdateBalance End Public Sub HasBalance() As Boolean Dim hCtrl As SliderBox For Each hCtrl In [slbBrightness, slbContrast, slbGamma, slbHue, slbSaturation, slbLightness, slbBlur, slbTransparency] If hCtrl.Value Then Return True Next End Public Sub ApplyBalance(hImage As Image) hImage.BeginBalance hImage.Brightness(slbBrightness.Value / slbBrightness.MaxValue) hImage.Contrast(slbContrast.Value / slbContrast.MaxValue) hImage.Gamma(slbGamma.Value / slbGamma.MaxValue) hImage.Hue(slbHue.Value / slbHue.MaxValue) hImage.Saturation(slbSaturation.Value / slbSaturation.MaxValue) hImage.Lightness(slbLightness.Value / slbLightness.MaxValue) hImage.EndBalance If slbBlur.Value Then hImage.Fuzzy(slbBlur.Value) If slbTransparency.Value Then hImage.Opacity((255 - slbTransparency.Value) / 255) End Public Sub chkBalancePreview_Click() UpdateBalance End Private Sub UpdateBalance() Dim hFile As Object Dim hImageEditor As FImageEditor If $iNoUpdateBalance Then Return For Each hFile In Project.Files Try hImageEditor = hFile If Error Then Continue Try hImageEditor.UpdateBalance Next End Private Sub UpdateClipboard() Dim hFile As Object Dim hImageEditor As FImageEditor For Each hFile In Project.Files Try hImageEditor = hFile If Error Then Continue Try hImageEditor.UpdateClipboard Next End Public Sub OnProjectActivate() Dim hCurrent As FImageEditor Dim vGrid As Variant UpdateBalance 'UpdateInfo hCurrent = GetCurrent() If Not hCurrent Then Return OnToolChange(hCurrent.GetTool()) ShowGridOption(hCurrent.HasGrid()) vGrid = hCurrent.GetGrid() If vGrid Then $bDoNotUpdateGrid = True txtGridRes.Value = vGrid[0] txtGridSnap.Value = vGrid[1] chkGridSnap.Value = vGrid[2] chkGridDiag.Value = vGrid[3] $bDoNotUpdateGrid = False Endif Me.Enabled = Not hCurrent.ReadOnly End Public Sub btnBalanceApply_Click() Try GetCurrent().ApplyBalance btnBalanceReset_Click End Private Sub ToBrush() As CReportBrush Dim hBrush As New CReportBrush If radLinear.Value Then hBrush.Type = CReportBrush.TYPE_LINEAR_GRADIENT hBrush.X1 = $flX1 hBrush.Y1 = $flY1 hBrush.X2 = $flX2 hBrush.Y2 = $flY2 Else hBrush.Type = CReportBrush.TYPE_RADIAL_GRADIENT hBrush.X1 = $fX hBrush.Y1 = $fY hBrush.X2 = $cX hBrush.Y2 = $cY hBrush.Radius = $fRadius Endif hBrush.Colors = $aGradientColors.Copy() hBrush.Positions = $aGradientPos.Copy() Return hBrush End Private Sub FromBrush(hBrush As CReportBrush) With hBrush If .Type = CReportBrush.TYPE_LINEAR_GRADIENT Then radLinear.Value = True $flX1 = .X1 $flY1 = .Y1 $flX2 = .X2 $flY2 = .Y2 Else radRadial.Value = True $fX = .X1 $fY = .Y1 $cX = .X2 $cY = .Y2 $fRadius = .Radius Endif $aGradientColors = .Colors.Copy() $aGradientPos = .Positions.Copy() End With UpdateGradient End Public Sub dwgGradientStack_Draw() Dim I As Integer Dim X, W As Integer X = 0 W = dwgGradientStack.H - 1 Paint.LineWidth = 1 For I = 0 To $aGradient.Max Paint.Rectangle(0, 0, W, W) Paint.Clip Paint.FillRect(0, 0, W, W, Color.LightForeground) Project.DrawBackground() Paint.ResetClip Paint.Brush = $aGradient[I].GetBrush(0, 0, W, W) Paint.Rectangle(0, 0, W, W) Paint.Fill Paint.Rectangle(0.5, 0.5, W, W) Paint.Background = Color.LightForeground Paint.Stroke Paint.Translate(W + 4, 0) Next End Public Sub dwgGradientStack_MouseDown() Dim I As Integer = Mouse.X / (dwgGradientStack.H + 3) If I < 0 Or If I > $aGradient.Max Then Return FromBrush($aGradient[I]) End Private Sub RotateLabel(hLabel As Control, iAng As Integer) Dim W As Integer = hLabel.Parent.Width - 10 hLabel.Move(W / 2 + Cos(Rad(iAng)) * (hLabel.X - W / 2) + Sin(Rad(iAng)) * (hLabel.Y - W / 2), W / 2 - Sin(Rad(iAng)) * (hLabel.X - W / 2) + Cos(Rad(iAng)) * (hLabel.Y - W / 2)) End Public Sub btnRotateL_Click() RotateLabel($lblA1, 90) RotateLabel($lblA2, 90) UpdateAngle End Public Sub btnRotateR_Click() RotateLabel($lblA1, -90) RotateLabel($lblA2, -90) UpdateAngle End Public Sub btnFlipV_Click() $lblA1.Y = $lblA1.Parent.Height - 10 - $lblA1.Y $lblA2.Y = $lblA2.Parent.Height - 10 - $lblA2.Y UpdateAngle End Public Sub btnFlipH_Click() $lblA1.X = $lblA1.Parent.Width - 10 - $lblA1.X $lblA2.X = $lblA2.Parent.Width - 10 - $lblA2.X UpdateAngle End Public Sub tabBrush_Click() If tabBrush.Text = ("Shapes") Then If Not $aShape Then InitShapes Else If tabBrush.Text = ("Clipboard") Then RefreshClipboard UpdateClipboard Endif End Public Sub gvwShape_Data(Row As Integer, Column As Integer) Select Case Column Case 1 gvwShape.Data.Text = $aShape[Row].Name ' Case 2 ' ' With gvwShape.Data ' .Picture = Picture["icon:/small/delete"] ' .Alignment = Align.Center ' .Padding = Desktop.Scale ' End With End Select End Public Sub gvwShape_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) Dim hShape As CImageSelection = $aShape[Row] Dim S As Float If Column = 0 Then X += 4 Y += 4 Width -= 8 Height -= 8 Paint.Rectangle(X, Y, Width, Height) Paint.Clip With hShape.GetExtents() S = Min((Width - 16) / .W, (Height - 16) / .H) Paint.Background = Color.Black Paint.LineWidth = 2 / S Paint.LineCap = Paint.LineCapRound Paint.Translate(X - .X * S + (Width - .W * S) / 2, Y - .Y * S + (Height - .H * S) / 2) Paint.Scale(S, S) End With $aShape[Row].Paint(Null, CImageSelection.ACTION_STROKE) Endif End Public Sub gvwShape_Activate() Project.ActiveForm.PasteShape($aShape[gvwShape.Row]) End Private Sub InitShapes() $aShape = New CImageSelection[] $aShape.Add(CImageSelection.FromString(("Arrow"), "-0.5,0.5*;1,0.5* 0.8,0.3*;1,0.5*;0.8,0.7*")) '$aShape.Add(CImageSelection.FromString(("Double arrow"), "-0.5,0.5*;1,0.5* 0.8,0.3*;1,0.5*;0.8,0.7*")) $aShape.Add(CImageSelection.FromString(("Arrow #2"), "0,1;0,2;4,2;4,3;6,1.5*;4,0;4,1;0,1;0.5,1.5+")) $aShape.Add(CImageSelection.FromString(("Triangle"), "0,0*;0,1*;0.86602540378444,0.5*;0,0;0.28867513459481,0.5+;0,0.5+;0.43301270189222,0.75+;0.43301270189222,0.25+")) $aShape.Add(CImageSelection.FromString(("Square triangle"), "0,0*;1,0*;0,1*;0,0;1,0+;0,1+;0.333333333333,0.333333333333+;0.5,0+;0.5,0.5+;0,0.5+")) $aShape.Add(CImageSelection.FromString(("Pentagon"), "1,0*;0.3090169944,0.9510565163*;-0.8090169944,0.5877852523*;-0.8090169944,-0.5877852523*;0.3090169944,-0.9510565163*;1,0")) $aShape.Add(CImageSelection.FromString(("Hexagon"), "1,0*;0.5,0.8660254038*;-0.5,0.8660254038*;-1,0*;-0.5,-0.8660254038*;0.5,-0.8660254038*;1,0*")) gvwShape.Rows.Count = $aShape.Count End Private Sub UpdateGrid() Dim vGrid As Variant If $bDoNotUpdateGrid Then Return vGrid = [txtGridRes.Value, txtGridSnap.Value, chkGridSnap.Value, chkGridDiag.Value] Try GetCurrent().UpdateGrid(vGrid) End Public Sub txtGridRes_Change() txtGridSnap.MaxValue = txtGridRes.Value txtGridSnap.Step = Lsl(1, Max(0, CInt(Log2(txtGridRes.Value)) - 3)) UpdateGrid End Public Sub txtGridSnap_Change() UpdateGrid End Public Sub GetGridDiagonal() As Boolean Return chkGridDiag.Value End Public Sub GetGridResolution() As Integer Return txtGridRes.Value End Public Sub SetGridResolution(iSize As Integer) As Integer txtGridRes.Value = iSize End Public Sub GetGridSnap() As Integer If chkGridSnap.Value Then Return txtGridSnap.Value End Public Sub GetOpacity() As Integer Return slbOpacity.Value End Public Sub ShowTextOption(bShow As Boolean, Optional bInit As Boolean) If bShow Then If bInit Then txtText.Text = "" txtText.SetFocus Endif panText.Show sepText.Show Else panText.Hide sepText.Hide Endif End Public Sub ShowGridOption(bShow As Boolean) panGrid.Visible = bShow sepGrid.Visible = bShow End Public Sub RefreshTextOption() Dim iAlign As Integer Dim bAlignBase As Boolean If btnTextLeft.Value Then iAlign = Align.Left Else If btnTextCenter.Value Then iAlign = Align.Center Else If btnTextRight.Value Then iAlign = Align.Right Endif If btnTextTop.Value Then iAlign += Align.TopNormal Else If btnTextMiddle.Value Then iAlign += Align.Normal Else If btnTextBottom.Value Then iAlign += Align.BottomNormal Else bAlignBase = True Endif GetCurrent().UpdateText(txtText.Text, fchText.Value, iAlign, bAlignBase) End Public Sub txtText_Change() RefreshTextOption End Public Sub fchText_Change() RefreshTextOption End Public Sub btnTextAlign_Click() RefreshTextOption End Public Sub slbOpacity_Change() UpdateBalance End Public Sub btnAction_Click() GetCurrent().ExecAction(Last.Tag) End Public Sub OnToolChange(sTool As String) ShowTextOption(sTool = "text") panRoundness.Visible = sTool = "rectangle" panTolerance.Visible = sTool = "magic" End Public Sub panSlider_Arrange() Dim hChild As Control Dim H As Integer For Each hChild In panSlider.Children If hChild.Visible Then H += hChild.H Next panSlider.H = H + Desktop.Scale * 2 End Public Sub tabBrush_CloseAll() FMain.HideTool End Private Sub SetLineCap(iLineCap As Integer) Dim sImage As String Select Case iLineCap Case Paint.LineCapButt sImage = "butt" Case Paint.LineCapRound sImage = "round" Case Paint.LineCapSquare sImage = "square" End Select btnLineCap.Picture = Picture["icon:/small/cap-" & sImage] $iLineCap = iLineCap End Private Sub SetLineJoin(iLineJoin As Integer) Dim sImage As String Select Case iLineJoin Case Paint.LineJoinBevel sImage = "bevel" Case Paint.LineJoinMiter sImage = "miter" Case Paint.LineJoinRound sImage = "round" End Select btnLineJoin.Picture = Picture["icon:/small/join-" & sImage] $iLineJoin = iLineJoin End Public Sub btnLineCap_Click() SetLineCap(($iLineCap + 1) Mod 3) End Public Sub btnLineJoin_Click() SetLineJoin(($iLineJoin + 1) Mod 3) End Private Sub SetFillRule(iFillRule As Integer) Dim sImage As String Select Case iFillRule Case Paint.FillRuleEvenOdd sImage = "exclusive" Case Paint.FillRuleWinding sImage = "union" End Select btnFillRule.Picture = Picture["icon:/small/" & sImage] $iFillRule = iFillRule End Public Sub btnFillRule_Click() SetFillRule(1 - $iFillRule) End Public Sub GetFillRule() As Integer Return $iFillRule End Public Sub ClearPaste() tabBrush.Index = 0 End Public Sub chkGridDiag_Click() UpdateGrid End Public Sub cchColor_Change() palColor.Current = cchColor.Value End Public Sub chkGridSnap_Click() UpdateGrid End Public Sub panEffect_BeforeArrange() panEffect.Parent.H = panEffect.H + Desktop.Scale * 2 End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageProperty.form000066400000000000000000000415241411575327000246340ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,177) Persistent = True Arrangement = Arrange.Fill { svwImageProperty ScrollView MoveScaled(1,1,65,175) Arrangement = Arrange.Vertical Border = False ScrollBar = Scroll.Vertical { tabBrush TabPanel MoveScaled(1,1,61,53) Arrangement = Arrange.Vertical Border = False Count = 4 CloseButton = True Index = 0 Text = ("Color") { Panel3 Panel MoveScaled(2,1,54,38) Expand = True Arrangement = Arrange.Vertical Spacing = True Margin = True { cchColor ColorChooser MoveScaled(0,0,50,37) Expand = True Border = False } } { Separator8 Separator MoveScaled(25,41,28,0) } { Panel8 Panel MoveScaled(3,42,46,6) Arrangement = Arrange.Fill { palColor ColorPalette MoveScaled(0,0,44,6) Border = False } } Index = 1 Text = ("Gradient") { Panel4 Panel MoveScaled(1,1,55,38) Expand = True Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox2 HBox MoveScaled(1,0,53,4) Spacing = True { radLinear RadioButton MoveScaled(0,0,19,4) AutoResize = True Text = ("Linear gradient") Value = True } { radRadial RadioButton MoveScaled(21,0,19,4) AutoResize = True Text = ("Radial gradient") } } { Panel2 Panel MoveScaled(0,5,47,12) Arrangement = Arrange.Vertical Border = Border.Plain { dwgGradientColor DrawingArea MoveScaled(0,0,47,6) Expand = True Focus = True } { Separator2 Separator MoveScaled(23,7,12,0) } { HBox1 HBox MoveScaled(0,8,47,4) { btnAddGradient ToolButton MoveScaled(0,0,4,4) ToolTip = ("Add gradient stop") Picture = Picture["icon:/small/add"] } { btnRemoveGradient ToolButton MoveScaled(4,0,4,4) ToolTip = ("Remove gradient stop") Picture = Picture["icon:/small/remove"] } { btnColorGradient ToolButton MoveScaled(8,0,4,4) ToolTip = ("Select gradient stop color") & "..." Picture = Picture["icon:/small/color"] } { btnExchangeGradient ToolButton MoveScaled(12,0,4,4) ToolTip = ("Invert gradient") Picture = Picture["icon:/small/flip-h"] } { panRadius HBox MoveScaled(18,0,28,4) Expand = True Spacing = True { Separator1 Separator MoveScaled(0,0,1,4) } { btnResetRadius ToolButton MoveScaled(2,0,4,4) ToolTip = ("Invert gradient") Picture = Picture["icon:/small/zoom-normal"] } { Label3 Label MoveScaled(9,0,6,4) AutoResize = True Text = ("Radius") } { sldRadius Slider MoveScaled(15,0,13,4) Expand = True Value = 50 } } } } { panGradient Panel MoveScaled(0,18,47,20) Expand = True Spacing = True { dwgGradient DrawingArea MoveScaled(0,0,35,20) Border = Border.Plain } { panGradientToolbar VBox MoveScaled(39,0,4,18) { btnRotateR ToolButton MoveScaled(0,0,4,4) ToolTip = ("Rotate clockwise") Picture = Picture["icon:/small/rotate-right"] } { btnRotateL ToolButton MoveScaled(0,4,4,4) ToolTip = ("Rotate counter-clockwise") Picture = Picture["icon:/small/rotate-left"] } { btnFlipV ToolButton MoveScaled(0,8,4,4) ToolTip = ("Vertical flip") Picture = Picture["icon:/small/flip-v"] } { btnFlipH ToolButton MoveScaled(0,12,4,4) ToolTip = ("Horizontal flip") Picture = Picture["icon:/small/flip-h"] } } } } { Separator7 Separator MoveScaled(13,41,17,0) } { Panel9 Panel MoveScaled(5,42,46,6) Arrangement = Arrange.Fill Margin = True { dwgGradientStack DrawingArea MoveScaled(0,0,45,4) Mouse = Mouse.Pointing } } Index = 2 Text = ("Clipboard") { gvwClipboard GridView MoveScaled(1,4,59,19) Mouse = Mouse.Pointing Expand = True Border = False Mode = Select.Single Grid = False ScrollBar = Scroll.Vertical } Index = 3 Text = ("Shapes") { gvwShape GridView MoveScaled(1,4,46,19) Mouse = Mouse.Pointing Expand = True Border = False Mode = Select.Single Grid = False ScrollBar = Scroll.Vertical } Index = 0 } { Separator6 Separator MoveScaled(20,56,15,0) } { HBox4 HBox MoveScaled(2,58,56,4) { btnStroke ToolButton btnAction Name = "btnStroke" MoveScaled(0,0,4,4) Tag = "stroke" ToolTip = ("Stroke") Picture = Picture["icon:/small/pen"] } { btnFill ToolButton btnAction Name = "btnFill" MoveScaled(4,0,4,4) Tag = "fill" ToolTip = ("Fill") Picture = Picture["icon:/small/fill"] } { btnClear ToolButton btnAction Name = "btnClear" MoveScaled(8,0,4,4) Tag = "clear" ToolTip = ("Clear") Picture = Picture["icon:/small/erase"] } { Separator9 Separator MoveScaled(12,0,1,4) } { btnColorize ToolButton btnAction Name = "btnColorize" MoveScaled(13,0,4,4) Tag = "colorize" ToolTip = ("Colorize") Picture = Picture["icon:/small/color"] } { btnDesaturate ToolButton btnAction Name = "btnDesaturate" MoveScaled(16,0,4,4) Tag = "desaturate" ToolTip = ("Desaturate") Picture = Picture["icon:/small/saturation"] } { btnTransparent ToolButton btnAction Name = "btnTransparent" MoveScaled(20,0,4,4) Tag = "transparent" ToolTip = ("Make transparent") Picture = Picture["icon:/small/transparency"] } { btnDarkTheme ToolButton btnAction Name = "btnDarkTheme" MoveScaled(24,0,4,4) Tag = "invert" ToolTip = ("Invert colors for dark themes") Picture = Picture["icon:/small/invert"] } { Separator5 Separator MoveScaled(35,0,1,4) } { btnLineCap ToolButton MoveScaled(37,0,4,4) ToolTip = ("Line cap") } { btnLineJoin ToolButton MoveScaled(43,0,4,4) ToolTip = ("Line join") } { btnFillRule ToolButton MoveScaled(49,0,4,4) ToolTip = ("Fill rule") } } { Separator4 Separator MoveScaled(22,66,15,0) } { panSlider VBox MoveScaled(1,67,63,17) Margin = True { HPanel1 HBox MoveScaled(0,0,62,4) Spacing = True { Label1 Label MoveScaled(0,0,15,4) Text = ("Opacity") } { slbOpacity SliderBox MoveScaled(18,0,38,4) Expand = True MaxValue = 255 Step = 32 DefaultValue = 255 Value = 255 } } { HPanel2 HBox MoveScaled(0,4,62,4) Spacing = True { Label2 Label MoveScaled(0,0,15,4) Text = ("Size") } { slbSize SliderBox MoveScaled(18,0,38,4) Expand = True MaxValue = 256 Step = 2 } } { panTolerance HBox MoveScaled(0,8,62,4) Spacing = True { Label4 Label MoveScaled(0,0,15,4) Text = ("Tolerance") } { slbTolerance SliderBox MoveScaled(18,0,38,4) Expand = True MaxValue = 128 Step = 8 DefaultValue = 32 Value = 32 } } { panRoundness HBox MoveScaled(0,12,62,4) Spacing = True { Label14 Label MoveScaled(0,0,15,4) Text = ("Roundness") } { slbRoundness SliderBox MoveScaled(18,0,38,4) Expand = True MaxValue = 256 Step = 2 DefaultValue = 32 } } } { Separator3 Separator MoveScaled(19,87,26,0) } { Panel13 Panel MoveScaled(1,88,64,43) Arrangement = Arrange.Vertical Margin = True { panEffect Expander MoveScaled(1,1,62,41) Arrangement = Arrange.Vertical Border = False Text = ("Effects") TextFont = Font["Bold"] Animated = True Hidden = True { HPanel4 HBox MoveScaled(0,0,59,4) { Label5 Label MoveScaled(0,0,15,4) Text = ("Brightness") } { slbBrightness SliderBox slbValue Name = "slbBrightness" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/brightness"] MinValue = -255 MaxValue = 255 Step = 16 } } { HPanel5 HBox MoveScaled(0,4,59,4) { Label6 Label MoveScaled(0,0,15,4) Text = ("Contrast") } { slbContrast SliderBox slbValue Name = "slbContrast" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/contrast"] MinValue = -255 MaxValue = 255 Step = 16 } } { HPanel8 HBox MoveScaled(0,8,59,4) { Label9 Label MoveScaled(0,0,15,4) Text = ("Gamma") } { slbGamma SliderBox slbValue Name = "slbGamma" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/gamma"] MinValue = -255 MaxValue = 255 Step = 16 } } { HPanel9 HBox MoveScaled(0,12,59,4) { Label10 Label MoveScaled(0,0,15,4) Text = ("Lightness") } { slbLightness SliderBox slbValue Name = "slbLightness" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/lightness"] MinValue = -255 MaxValue = 255 Step = 16 } } { HPanel6 HBox MoveScaled(0,16,59,4) { Label7 Label MoveScaled(0,0,15,4) Text = ("Hue") } { slbHue SliderBox slbValue Name = "slbHue" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/hue"] MinValue = -255 MaxValue = 255 Step = 16 } } { HPanel7 HBox MoveScaled(0,20,59,4) { Label8 Label MoveScaled(0,0,15,4) Text = ("Saturation") } { slbSaturation SliderBox slbValue Name = "slbSaturation" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/saturation"] MinValue = -255 MaxValue = 255 Step = 16 } } { HPanel10 HBox MoveScaled(0,24,59,4) { Label11 Label MoveScaled(0,0,15,4) Text = ("Blur") } { slbBlur SliderBox slbValue Name = "slbBlur" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/blur"] MaxValue = 127 } } { HPanel3 HBox MoveScaled(0,28,59,4) { Label15 Label MoveScaled(0,0,15,4) Text = ("Transparency") } { slbTransparency SliderBox slbValue Name = "slbTransparency" MoveScaled(19,0,40,4) Expand = True Picture = Picture["icon:/large/transparency"] MaxValue = 255 Step = 16 } } { Panel7 Panel MoveScaled(21,32,5,1) } { HBox3 HBox MoveScaled(0,33,58,4) Spacing = True { chkBalancePreview CheckBox MoveScaled(0,0,14,4) Visible = False Text = ("Preview") Value = CheckBox.True } { Panel6 Panel MoveScaled(22,0,2,4) Expand = True } { btnBalanceReset Button MoveScaled(28,0,14,4) AutoResize = True Text = ("Reset") Picture = Picture["icon:/small/undo"] } { btnBalanceApply Button MoveScaled(43,0,14,4) AutoResize = True Text = Shortcut(("Apply"), "A") Picture = Picture["icon:/small/apply"] } } } } { sepText Separator MoveScaled(21,132,15,0) } { panText VBox MoveScaled(3,133,60,23) Visible = False Margin = True { Panel11 HBox MoveScaled(1,1,58,4) Spacing = True { Panel12 Panel MoveScaled(0,0,12,4) { btnTextCenter ToolButton btnTextAlign Name = "btnTextCenter" MoveScaled(4,0,4,4) ToolTip = ("Centered") Picture = Picture["icon:/small/text-center"] Radio = True Toggle = True Value = True } { btnTextRight ToolButton btnTextAlign Name = "btnTextRight" MoveScaled(8,0,4,4) ToolTip = ("Right align") Picture = Picture["icon:/small/text-right"] Radio = True Toggle = True } { btnTextLeft ToolButton btnTextAlign Name = "btnTextLeft" MoveScaled(0,0,4,4) ToolTip = ("Left align") Picture = Picture["icon:/small/text-left"] Radio = True Toggle = True } } { panTextAlign Panel MoveScaled(12,0,17,4) { btnTextTop ToolButton btnTextAlign Name = "btnTextTop" MoveScaled(0,0,4,4) ToolTip = ("Top align") Picture = Picture["icon:/small/text-top"] Radio = True Toggle = True } { btnTextMiddle ToolButton btnTextAlign Name = "btnTextMiddle" MoveScaled(4,0,4,4) ToolTip = ("Middle align") Picture = Picture["icon:/small/text-middle"] Radio = True Toggle = True Value = True } { btnTextBase ToolButton btnTextAlign Name = "btnTextBase" MoveScaled(8,0,4,4) ToolTip = ("Baseline align") Picture = Picture["icon:/small/text-baseline"] Radio = True Toggle = True } { btnTextBottom ToolButton btnTextAlign Name = "btnTextBottom" MoveScaled(12,0,4,4) ToolTip = ("Bottom align") Picture = Picture["icon:/small/text-bottom"] Radio = True Toggle = True } } } { fchText FontChooser MoveScaled(1,6,55,8) Border = False ShowRelative = False } { txtText TextArea MoveScaled(1,15,54,7) Expand = True } } { sepGrid Separator MoveScaled(19,157,15,0) } { panGrid VBox MoveScaled(2,158,62,15) Visible = False Margin = True { Panel1 HBox MoveScaled(1,1,57,4) { Label12 Label MoveScaled(0,0,15,4) Expand = True AutoResize = True Text = ("Grid resolution") } { txtGridRes SliderBox MoveScaled(38,0,17,4) MinValue = 4 MaxValue = 128 Step = 4 Value = 64 } } { Panel5 HBox MoveScaled(1,5,57,4) { chkGridSnap CheckBox MoveScaled(0,0,15,4) Expand = True Text = ("Grid snap") } { txtGridSnap SliderBox MoveScaled(38,0,17,4) MinValue = 1 MaxValue = 512 Step = 8 Value = 8 } } { chkGridDiag CheckBox MoveScaled(1,9,40,4) Text = ("Draw diagonals") } } } } gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageQuality.class000066400000000000000000000002641411575327000245760ustar00rootroot00000000000000' Gambas class file 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 gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageQuality.form000066400000000000000000000006611411575327000244350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,55,12) Text = ("Image quality") Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { sldQuality SliderBox MoveScaled(1,1,53,4) Step = 10 Value = 80 } { btnOK Button MoveScaled(21,7,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(38,7,16,4) Text = ("Cancel") Cancel = True } } gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageResize.class000066400000000000000000000047421411575327000244140ustar00rootroot00000000000000' Gambas class file Static Public ImageWidth As Integer Static Public ImageHeight As Integer Static Public Stretch As Boolean Static Public CenterH As Boolean Static Public CenterV As Boolean Private $fProp As Float Private $bBorder As Boolean Private $iSaveW As Integer = 1 Private $iSaveH As Integer = 1 Static Public Sub Run() As Boolean Return Not Me.ShowModal() End Public Sub btnOK_Click() If $bBorder Then ImageWidth += txtWidth.Value * 2 ImageHeight += txtHeight.Value * 2 Stretch = False CenterH = True CenterV = True Else ImageWidth = txtWidth.Value ImageHeight = txtHeight.Value Stretch = optStretch.Value CenterH = optResizeCenterH.Value Or optResizeCenter.Value CenterV = optResizeCenterV.Value Or optResizeCenter.Value Endif Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() txtWidth.Value = ImageWidth txtHeight.Value = ImageHeight $fProp = ImageWidth / ImageHeight End Public Sub txtWidth_Change() If btnSync.Value And If $fProp Then Object.Lock(txtHeight) If $bBorder Then txtHeight.Value = txtWidth.Value Else txtHeight.Value = txtWidth.Value / $fProp Endif Object.Unlock(txtHeight) UpdateRatio Endif End Public Sub txtHeight_Change() If btnSync.Value And If $fProp Then Object.Lock(txtWidth) If $bBorder Then txtWidth.Value = txtHeight.Value Else txtWidth.Value = txtHeight.Value * $fProp Endif Object.Unlock(txtWidth) UpdateRatio Endif End Public Sub radResize_Click() If optBorder.Value <> $bBorder Then Object.Lock(txtWidth) Object.Lock(txtHeight) Swap txtWidth.Value, $iSaveW Swap txtHeight.Value, $iSaveH Object.Unlock(txtWidth) Object.Unlock(txtHeight) $bBorder = optBorder.Value Endif UpdateRatio End Public Sub btnSync_Click() UpdateRatio End Private Sub UpdateRatio() txtRatio.Enabled = btnSync.Value And Not $bBorder Object.Lock(txtRatio) If txtRatio.Enabled Then txtRatio.Text = CInt(txtWidth.Value / ImageWidth * 100 + 0.5) Else txtRatio.Text = "" Endif Object.Unlock(txtRatio) End Public Sub txtRatio_Change() Dim fRatio As Float Try fRatio = CInt(txtRatio.Text) / 100 If Error Then Return Object.Lock(txtWidth) Object.Lock(txtHeight) txtWidth.Value = CInt(ImageWidth * fRatio) txtHeight.Value = CInt(ImageHeight * fRatio) Object.Unlock(txtWidth) Object.Unlock(txtHeight) End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageResize.form000066400000000000000000000041711411575327000242460ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,58,42) Text = ("Resize image") Resizable = False Spacing = True Margin = True { Label1 Label MoveScaled(1,1,15,4) Text = ("Width") } { btnSync ToggleButton MoveScaled(32,1,2,9) Picture = Picture["img/32/linked.png"] Border = False Value = True } { Label2 Label MoveScaled(1,6,15,4) Text = ("Height") } { btnCancel Button MoveScaled(41,6,16,4) Text = ("Cancel") Cancel = True } { optResize RadioButton radResize Name = "optResize" MoveScaled(1,21,28,3) AutoResize = True Text = ("Resize image") } { optResizeCenter RadioButton radResize Name = "optResizeCenter" MoveScaled(1,29,28,3) AutoResize = True Text = ("Resize and center") } { optResizeCenterH RadioButton radResize Name = "optResizeCenterH" MoveScaled(1,33,28,3) AutoResize = True Text = ("Resize and center horizontally") } { optResizeCenterV RadioButton radResize Name = "optResizeCenterV" MoveScaled(1,37,28,3) AutoResize = True Text = ("Resize and center vertically") } { optStretch RadioButton radResize Name = "optStretch" MoveScaled(1,17,28,3) AutoResize = True Text = ("Stretch image") Value = True } { txtWidth SpinBox MoveScaled(16,1,11,4) MinValue = 1 MaxValue = 65536 Value = 1 } { txtHeight SpinBox MoveScaled(16,6,11,4) MinValue = 1 MaxValue = 65536 Value = 1 } { btnOK Button MoveScaled(41,1,16,4) Text = ("OK") Default = True } { optBorder RadioButton radResize Name = "optBorder" MoveScaled(1,25,28,3) AutoResize = True Text = ("Add a border") } { Label3 Label MoveScaled(1,11,14,4) Text = ("Ratio") } { txtRatio ComboBox MoveScaled(16,11,11,4) #Translate = False List = ["25", "33", "50", "66", "100", "150", "200", "300", "400"] Text = "100" } { Label4 Label MoveScaled(28,1,3,4) Text = ("px") } { Label5 Label MoveScaled(28,6,3,4) Text = ("px") } { Label6 Label MoveScaled(28,11,3,4) #Translate = False Text = "%" } } gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageRotate.class000066400000000000000000000007421411575327000244050ustar00rootroot00000000000000' Gambas class file Static Public Angle As Integer Static Private $hEditor As FImageEditor Public Sub Run(hEditor As FImageEditor) As Boolean $hEditor = hEditor Return Not Me.ShowModal() End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() Angle = slbAngle.Value Me.Close(True) End Public Sub slbAngle_Change() $hEditor.UpdateRotation(slbAngle.Value) End Public Sub Form_Close() $hEditor.UpdateRotation(0) $hEditor = Null End gambas-3.16.3/app/src/gambas3/.src/Editor/Image/FImageRotate.form000066400000000000000000000006421411575327000242420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,53,13) Text = ("Rotate image") { slbAngle SliderBox MoveScaled(1,1,49,4) MinValue = -180 MaxValue = 180 } { Label1 Label MoveScaled(51,1,3,4) Text = ("°") } { btnOK Button MoveScaled(19,8,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(36,8,16,4) Text = ("Cancel") Cancel = True } } gambas-3.16.3/app/src/gambas3/.src/Editor/MCompressFile.module000066400000000000000000000337311411575327000237500ustar00rootroot00000000000000' Gambas module file Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$" Private Const IDENT_CAR_CSS As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.#" Private Const SUBST_CAR_FIRST As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" Private Const SUBST_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" Private $aExt As String[] = ["js", "css", "html"] Private $cKeyword As Collection Private $cKeywordRegexp As Collection Private $cSubst As Collection Private $cIdent As Collection Private $iSubst As Integer Private $iDoNotCompress As Integer Private $sPngQuant As String Public Sub _init() $sPngQuant = System.Find("pngquant") End Public Sub CanCompress(sPath As String, Optional bCompressNow As Boolean) As Boolean Dim sFile As String Dim sExt As String If Not sPath Then Return If Project.IsHiddenPath(sPath) Then Return If IsDir(sPath) Then If Not IsMissing(bCompressNow) Then Return For Each sFile In Dir(sPath) If Left(sFile) = "." Then Continue If CanCompress(sPath &/ sFile) Then Return True Next Return False Endif sExt = File.Ext(sPath) If IsMissing(bCompressNow) Or If bCompressNow Then If sExt = "png" And If Settings["/CompressPng", 1] Then Return $sPngQuant Endif If IsMissing(bCompressNow) Or If Not bCompressNow Then If $aExt.Exist(sExt) Then Return True Endif End Private Sub InitJavascriptKeywords() Dim sStr As String $cKeyword = New Collection For Each sStr In ["break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "finally", "for", "function", "if", "import", "in", "of", "instanceof", "new", "return", "super", "switch", "throw", "try", "typeof", "var", "void", "while", "with", "yield"] $cKeyword[sStr] = 0 Next For Each sStr In ["false", "null", "this", "true", "undefined", "NaN", "Infinity"] $cKeyword[sStr] = 1 Next $cKeywordRegexp = New Collection For Each sStr In ["break", "case", "continue", "delete", "do", "else", "finally", "in", "instanceof", "return", "throw", "try", "typeof", "void"] $cKeywordRegexp[sStr] = True Next End Private Sub SubstIdent(sIdent As String) Dim sSubst As String Dim iIndex As Integer If $iDoNotCompress Then Return If $cSubst.Exist(sIdent) Then Return Do Inc $iSubst iIndex = $iSubst sSubst = "" sSubst = Mid$(SUBST_CAR_FIRST, 1 + iIndex Mod Len(SUBST_CAR_FIRST), 1) iIndex \= Len(SUBST_CAR_FIRST) While iIndex sSubst &= Mid$(SUBST_CAR, 1 + iIndex Mod Len(SUBST_CAR), 1) '& sSubst iIndex \= Len(SUBST_CAR) Wend If Not $cIdent.Exist(sSubst) And If Not $cKeyword.Exist(sSubst) Then Break Loop $cSubst[sIdent] = sSubst End Private Sub GetSubstIdent(sIdent As String) As String Return $cSubst[sIdent] End Private Sub CompressJavascript(sText As String) As String Dim sRes As String Dim iPos As Integer Dim sCar As String Dim sCar2 As String Dim bComment As Boolean Dim bOneLineComment As Boolean Dim sString As String Dim iLen As Integer Dim iLastNewLine As Integer Dim sIdent As String Dim sSubst As String Dim iFunction As Integer Dim bVar As Boolean Dim iLevel As Integer Dim bKeyword As Boolean Dim iPosMem As Integer Dim bRegExp As Boolean Dim sLastKeyword As String If Not $cKeyword Then InitJavascriptKeywords $cIdent = New Collection $cSubst = New Collection $iSubst = 0 $iDoNotCompress = 0 iLen = Len(sText) sText &= " " ' Identifiers used For iPos = 1 To iLen sCar = Mid$(sText, iPos, 1) sCar2 = Mid$(sText, iPos, 2) If bComment Then If sCar2 = "*/" Then bComment = False Inc iPos Endif Continue Else If bOneLineComment Then If sCar = "\n" Then bOneLineComment = False Dec iPos Endif Continue Else If sString Then If sCar = "\\" Then sCar = Right(sCar2) If sCar = "x" Then iPos += 3 Continue Else If sCar = "u" Then iPos += 5 Continue Else Inc iPos Continue Endif Else If sCar = sString Then sString = "" Endif Continue Endif If sCar2 = "/*" Then bComment = True Inc iPos Continue Else If sCar2 = "//" Then bOneLineComment = True Inc iPos Continue Endif If InStr(IDENT_CAR, sCar) Then sIdent &= sCar Continue Else If sIdent And If Len(sIdent) <= 4 Then If Not IsDigit(Left(sIdent)) And If Not $cKeyword.Exist(sIdent) And If Not $cIdent.Exist(sIdent) Then 'Print sIdent $cIdent[sIdent] = True Endif Endif sIdent = "" Endif If sCar = "\"" Or If sCar = "'" Then sString = sCar Endif Next ' Compression bComment = False bOneLineComment = False sString = "" For iPos = 1 To iLen sCar = Mid$(sText, iPos, 1) sCar2 = Mid$(sText, iPos, 2) If bComment Then If sCar2 = "*/" Then bComment = False Inc iPos Endif Continue Else If bOneLineComment Then If sCar = "\n" Then bOneLineComment = False If Mid$(sText, iPosMem, iPos - iPosMem) == "// " Then Inc $iDoNotCompress Else If Mid$(sText, iPosMem, iPos - iPosMem) == "// " Then If $iDoNotCompress > 0 Then Dec $iDoNotCompress Endif Dec iPos Endif Continue Else If sString Then If sCar = "\\" Then sCar = Right(sCar2) If sCar = "x" Then sRes &= Mid$(sText, iPos, 4) iPos += 3 Continue Else If sCar = "u" Then sRes &= Mid$(sText, iPos, 6) iPos += 5 Continue Else sRes &= sCar2 Inc iPos Continue Endif Else If sCar = sString Then sString = "" Endif sRes &= sCar Continue Else If bRegExp Then If sCar = "\\" Then sRes &= sCar2 Inc iPos Else If sCar = "/" Then sRes &= sCar bRegExp = False Else sRes &= sCar Endif Continue Endif If sCar2 = "/*" Then bComment = True Inc iPos Continue Else If sCar2 = "//" Then bOneLineComment = True iPosMem = iPos Inc iPos Continue Endif If InStr(IDENT_CAR, sCar) Then sIdent &= sCar Continue Else sLastKeyword = "" If Len(sIdent) >= 2 bKeyword = $cKeyword.Exist(sIdent) If Not IsDigit(Left(sIdent)) And If Not bKeyword Then If iFunction = 1 Then iFunction = 2 Else If bVar And If iLevel > 0 Then SubstIdent(sIdent) Else If iFunction = 3 Then SubstIdent(sIdent) Else If Right(sRes) = "." Then Goto NO_SUBST If Left(RTrim(Mid$(sText, iPos))) = ":" And If InStr(",{", Right(RTrim(sRes))) Then Goto NO_SUBST Endif sSubst = GetSubstIdent(sIdent) If sSubst Then 'Print sIdent; " -> "; sSubst sIdent = sSubst Endif Endif Else If bKeyword Then bVar = False If sIdent = "function" Then iFunction = 1 Else If sIdent = "var" Then bVar = True Endif sLastKeyword = sIdent Endif Endif NO_SUBST: sRes &= sIdent sIdent = "" If bVar Then If InStr(" ,\n", sCar) = 0 Then bVar = False Endif Endif If sCar = "\"" Or If sCar = "'" Then sString = sCar Else If sCar = "{" Then Inc iLevel Else If sCar = "}" Then Dec iLevel If iLevel = 0 Then $iSubst = 0 $cSubst.Clear Endif If Right(sRes) = "\n" Then sRes = Left(sRes, -1) Else If sCar = "/" Then If iPos > 1 Then sCar2 = Right(RTrim(Left(sText, iPos - 1))) If InStr("+-*/.,!%&(:;<=>?[^{|}~", sCar2) Then bRegExp = True Else If sLastKeyword And If $cKeywordRegexp.Exist(sLastKeyword) Then bRegExp = True Endif Endif Else If InStr(" \t\n", sCar) Then If Len(sRes) = 0 Then Continue If InStr(" \t\n", Right(sRes)) Then Continue If sCar = "\n" Then 'Print Right(sRes, 40) 'If InStr(Right(sRes, 40), "left") Then Stop If InStr(";{+-*/=,[(:", Right(sRes)) = 0 Then sRes &= sCar iLastNewLine = Len(sRes) Continue Endif Endif sCar = " " If InStr("=", Right(sCar2)) = 0 And If sLastKeyword <> "return" Then If (Len(sRes) - iLastNewLine) > 76 Or If Mid$(sText, iPos + 1) Begins "function " Then sRes &= "\n" iLastNewLine = Len(sRes) Endif Endif If Right(sRes) = "}" And If IsLetter(Right(sCar2)) Then sCar = "\n" iLastNewLine = Len(sRes) + 1 Else If InStr("+-*/=", Right(sRes)) And If Right(sRes) = Right(sCar2) Then ' keep the space Else If InStr(IDENT_CAR, Right(sRes)) = 0 And If Right(sRes) <> "}" Then Continue If InStr(IDENT_CAR, Right$(sCar2)) = 0 Then Continue Endif Else If sCar = "(" Then If iFunction > 0 Then iFunction = 3 Else If sCar = ")" Then If iFunction Then iFunction = 0 Endif sRes &= sCar Next Return sRes End Private Sub CompressCss(sText As String) As String Dim sRes As String Dim iPos As Integer Dim sCar As String Dim sCar2 As String Dim bComment As Boolean Dim bOneLineComment As Boolean Dim sString As String Dim iLen As Integer iLen = Len(sText) sText = sText & " " For iPos = 1 To iLen sCar = Mid$(sText, iPos, 1) sCar2 = Mid$(sText, iPos, 2) If bComment Then If sCar2 = "*/" Then bComment = False Inc iPos Endif Continue Else If bOneLineComment Then If sCar = "\n" Then bOneLineComment = False Dec iPos Endif Continue Else If sString Then If sCar = "\\" Then sRes &= sCar2 Inc iPos Continue Else If sCar = sString Then sString = "" Endif sRes &= sCar Continue Endif If sCar2 = "/*" Then bComment = True Inc iPos Continue Else If sCar2 = "//" Then bOneLineComment = True Inc iPos Continue Endif If sCar = "\"" Or If sCar = "'" Then sString = sCar Else If sCar = "}" Then sRes &= "}\n" Continue Else If sCar = "c" And If Mid$(sText, iPos, 5) = "calc(" Then sString = ")" Else If InStr(" \t\n", sCar) Then If Len(sRes) = 0 Then Continue If InStr(" \t\n", Right(sRes)) Then Continue sCar = " " If InStr(IDENT_CAR_CSS, Right(sRes)) = 0 Then Continue If InStr(IDENT_CAR_CSS, Right$(sCar2)) = 0 Then Continue Endif sRes &= sCar Next Return sRes End Private Sub CompressHtml(sText As String) As String Dim sRes As String Dim iPos As Integer Dim sCar As String Dim bComment As Boolean Dim sString As String Dim iLen As Integer Dim bMarkup As Boolean Dim iNewLine As Integer iNewLine = 256 iLen = Len(sText) sText = sText & " " For iPos = 1 To iLen sCar = Mid$(sText, iPos, 1) If bComment Then If Mid$(sText, iPos, 3) = "-->" Then bComment = False iPos += 2 Endif Continue Else If sString Then If sCar = "\\" Then sRes &= Mid$(sText, iPos, 2) Inc iPos Continue Else If sCar = sString Then sString = "" Endif sRes &= sCar Continue Endif If Mid$(sText, iPos, 4) = "A Paint.MoveTo(x + radius_x[0], y) '-->B Paint.LineTo(x + w - radius_x[1], y) '-->C c1 = ARC_TO_BEZIER * radius_x[1] c2 = ARC_TO_BEZIER * radius_y[1] Paint.RelCurveTo(c1, 0.0, radius_x[1], c2, radius_x[1], radius_y[1]) '-->D Paint.LineTo(x + w, y + h - radius_y[2]) '-->E c1 = ARC_TO_BEZIER * radius_x[2] c2 = ARC_TO_BEZIER * radius_y[2] Paint.RelCurveTo(0.0, c2, c1 - radius_x[2], radius_y[2], -radius_x[2], radius_y[2]) '-->F Paint.LineTo(x + radius_x[3], y + h) '-->G c1 = ARC_TO_BEZIER * radius_x[3] c2 = ARC_TO_BEZIER * radius_y[3] Paint.RelCurveTo(-c1, 0, -radius_x[3], -c2, -radius_x[3], -radius_y[3]) '-->H Paint.LineTo(x, y + radius_y[0]) '-->A c1 = ARC_TO_BEZIER * radius_x[0] c2 = ARC_TO_BEZIER * radius_y[0] Paint.relcurveto(0.0, -c2, radius_x[0] - c1, -radius_y[0], radius_x[0], -radius_y[0]) 'Paint.closepath() End Private Sub DrawVArrow(X As Integer, Y As Integer, W As Integer, H As Integer) Dim iMid As Integer = W / 2 Draw.Line(X, Y, X, Y + H) Draw.Polygon([X, Y, X - iMid, Y + iMid, X + iMid, Y + iMid]) Draw.Polygon([X, Y + H, X - iMid, Y + H - iMid, X + iMid, Y + H - iMid]) End Public Sub ActionDialog(sAction As String) As Boolean 'Dim vColor As Variant Select Case sAction Case Like ".text-*" Return Super.ActionDialog(sAction) Case Like ".format-*" FProperty.EditProperty(If(sAction = ".format-background", "Background", "Brush")) Return True 'If FColorChooser.Run() Then Return True ' vColor = FColorChooser.Color ' If Not IsNull(Val(vColor)) Then vColor = Val(vColor) ' Me.ActionValue = vColor End Select End Public Sub ActionExec(hCtrl As CControl, sAction As String) Select Case sAction Case Like ".text-*" Super.ActionExec(hCtrl, sAction) ' Case ".format-background" ' If hCtrl.HasProperty("Background") Then hCtrl.SetProperty("Background", Me.ActionValue) ' ' Case ".format-foreground" ' If hCtrl.HasProperty("Foreground") Then hCtrl.SetProperty("Foreground", Me.ActionValue) End Select End Public Sub SelectImage((sPropertyType) As String, sImage As String) As String Return FSelectIcon.Run(sImage) 'GetPicture() End Static Public Sub InitCoord(hCtrl As CoordBox) hCtrl.Units = ["mm", "cm", "in", "ft", "px", "pt"] hCtrl.DefaultUnit = "mm" End gambas-3.16.3/app/src/gambas3/.src/Family/Report/CReportBrush.class000066400000000000000000000126771411575327000247160ustar00rootroot00000000000000' Gambas class file Export Public Enum TYPE_COLOR, TYPE_IMAGE, TYPE_LINEAR_GRADIENT, TYPE_RADIAL_GRADIENT Public Type As Integer Public X1 As Float Public Y1 As Float Public X2 As Float Public Y2 As Float Public Radius As Float 'Public Pattern As Image Public (Color) As Integer Public Colors As Integer[] = [0, &HFFFFFF&] Public Positions As Float[] = [0, 1] Public Path As String ' Private Sub RemoveOpacity(aColor As Integer[]) As Integer[] ' ' Dim I As Integer ' ' aColor = aColor.Copy() ' For I = 0 To aColor.Max ' aColor[I] = aColor[I] And &HFFFFFF& ' Next ' ' Return aColor ' ' End Public Sub Copy() As CReportBrush Dim hBrush As New CReportBrush With hBrush .Type = Type .X1 = X1 .X2 = X2 .Y1 = Y1 .Y2 = Y2 .Radius = Radius .Color = Color .Colors = Colors.Copy() .Positions = Positions.Copy() .Path = Path End With Return hBrush End Public Function GetBrush(iX1 As Integer, iY1 As Integer, iX2 As Integer, iY2 As Integer) As PaintBrush Dim hBrush As PaintBrush Dim hImage As Image Dim fRadius As Float Dim Width As Integer = iX2 - iX1 Dim Height As Integer = iY2 - iY1 Dim aColor As Integer[] Select Case Me.Type Case TYPE_COLOR hBrush = Paint.Color(Color) Case TYPE_IMAGE Try hImage = Image.Load(Project.Dir &/ Path) If hImage Then hBrush = Paint.Image(hImage, iX1, iY1) Else hBrush = Paint.Color(&H808080&) Endif Case TYPE_LINEAR_GRADIENT aColor = Colors 'If bIgnoreOpacity Then aColor = RemoveOpacity(aColor) hBrush = Paint.LinearGradient(Width * X1, Height * Y1, Width * X2, Height * Y2, aColor, Positions) Case TYPE_RADIAL_GRADIENT fRadius = Width * Radius aColor = Colors 'If bIgnoreOpacity Then aColor = RemoveOpacity(aColor) hBrush = Paint.RadialGradient(Width * X1, Height * Y1, fRadius, Width * X2, Height * Y2, aColor, Positions) End Select Return hBrush End Public Sub _compare(hBrush As CReportBrush) As Integer If hBrush.ToString() = ToString() Then Return 0 Else Return Comp(Object.Address(Me), Object.Address(hBrush)) Endif End Static Public Sub _get(sValue As String) As CReportBrush Dim hBrush As New CReportBrush Dim iPos As Integer Dim sType As String Dim ars As String[] sValue = Trim(sValue) iPos = InStr(sValue, "(") If iPos Then If Right(sValue) <> ")" Then Error.Raise("Bad brush") sType = Left(sValue, iPos - 1) sValue = Mid$(sValue, iPos + 1, -1) ars = Split(sValue, ",", "[]") Else If Left(sValue) <> "#" Then Error.Raise("Bad brush") ars = [sValue] Endif Select Case LCase(sType) Case "image" hBrush.Type = TYPE_IMAGE 'hBrush.Pattern = Image.Load(ars[0]) hBrush.Path = UnQuote(ars[0]) Case "radialgradient" hBrush.Type = TYPE_RADIAL_GRADIENT hBrush.X1 = CFloat(ars[0]) hBrush.Y1 = CFloat(ars[1]) hBrush.Radius = CFloat(ars[2]) hBrush.X2 = CFloat(ars[3]) hBrush.Y2 = CFloat(ars[4]) hBrush.Colors = GetColorArray(ars[5]) hBrush.Positions = GetFloatArray(ars[6]) Case "lineargradient" hBrush.Type = TYPE_LINEAR_GRADIENT hBrush.X1 = CFloat(ars[0]) hBrush.Y1 = CFloat(ars[1]) hBrush.X2 = CFloat(ars[2]) hBrush.Y2 = CFloat(ars[3]) hBrush.Colors = GetColorArray(ars[4]) hBrush.Positions = GetFloatArray(ars[5]) Case Else hBrush.Color = StringToColor(ars[0]) hBrush.Colors[0] = hBrush.Color End Select Finally If hBrush.Colors.Count = 0 Then hBrush.Colors = [0, &hFFFFFF&] If hBrush.Colors.Count < 2 Then hBrush.Colors.Add(&hFFFFFF&) If hBrush.Positions.Count < 2 Then hBrush.Positions = [0.0, 1.0] Return hBrush Catch Error.Raise("Bad brush") End Static Private Function GetColorArray(sValue As String) As Integer[] Dim ari As New Integer[] Dim s As String For Each s In Split(sValue) ari.Add(StringToColor(s)) Next Return ari End Static Private Function GetFloatArray(sValue As String) As Float[] Dim arf As New Float[] Dim s As String For Each s In Split(sValue) arf.Add(CFloat(s)) Next Return arf End Static Public Sub ColorToString(iColor As Integer) As String If iColor And &HFF000000 Then Return "#" & Hex$(iColor, 8) Else Return "#" & Hex$(iColor, 6) Endif End Static Public Sub StringToColor(sColor As String) As Integer Return Val("&H" & Mid$(sColor, 2) & "&") End Public Function ToString() As String Dim i As Integer Dim f As Float Dim sValue As String Select Case Type Case TYPE_COLOR sValue = ColorToString({Color}) Case TYPE_LINEAR_GRADIENT, TYPE_RADIAL_GRADIENT If Type = TYPE_RADIAL_GRADIENT Then sValue = "RadialGradient(" & X1 & "," & Y1 & "," & Radius & "," & X2 & "," & Y2 & ",[" Else sValue = "LinearGradient(" & X1 & "," & Y1 & "," & X2 & "," & Y2 & ",[" Endif For Each i In Colors sValue &= ColorToString(i) & "," Next sValue = Left(sValue, -1) sValue &= "],[" For Each f In Positions sValue &= f & "," Next sValue = Left(sValue, -1) sValue &= "])" Case TYPE_IMAGE sValue = "Image(" & Quote(Path) & ")" End Select Return svalue End gambas-3.16.3/app/src/gambas3/.src/Family/Report/CoordBox.class000066400000000000000000000170721411575327000240450ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Text,Alignment{Align.Normal;Left;Center;Right}=Normal,ReadOnly,Border=True,AllowRelative,AutoConvert,AllowNegative" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "24,4" 'Public Const _Similar As String = "TextBox" Event Change Event Activate Property Text As String Property Value As String Property Read Length As Integer Property ReadOnly As Boolean Property Border As Boolean Property Read Editor As MaskBox Property Alignment As Integer Property AllowRelative As Boolean Property AutoConvert As Boolean Property AllowNegative As Boolean Property Units As String[] Property DefaultUnit As String 'Private $hPanel As Panel Private $hBackground As DrawingArea Private $bBorder As Boolean Private $hTextBox As TextBox Private $hButton As MenuButton Private $hClear As ToolButton Private $hMenu As Menu Private $bAllowRelative As Boolean Private $bAutoConvert As Boolean Private $fCurVal As Float Private $bAllowNegative As Boolean Private $aUnits As String[] Private $sDefaultUnit As String Public Sub _new() $hBackground = New DrawingArea(Me) As "Background" $hBackground.Arrangement = Arrange.Horizontal Border_Write(True) $hTextBox = New TextBox($hBackground) As "TextBox" $hTextBox.Border = False $hTextBox.Expand = True $hTextBox.Alignment = Align.Right Me.Proxy = $hTextBox $hButton = New MenuButton($hBackground) As "Button" '$hButton.W = 30 $hButton.Border = False $hButton.AutoResize = True $hButton.Tag = 0 $hClear = New ToolButton($hBackground) As "ClearButton" $hClear.Picture = Picture["icon:/small/clear"] $hClear.AutoResize = True Units_Write(Null) End Private Function Value_Read() As String Dim F As Float Try F = CFloat($hTextBox.Text) If Error Then Return If Not $bAllowNegative And If F < 0 Then Return Return $hTextBox.Text & $hButton.Text End Private Sub Value_Write(Value As String) Dim I As Integer Dim sCar As String Dim Unit As String Dim fValue As Float Value = Trim(Value) If Not Value Then $hTextBox.Text = "" $hButton.Text = $sDefaultUnit Return Endif For I = Len(Value) DownTo 1 sCar = Mid$(Value, I, 1) If IsDigit(sCar) Or If sCar = "." Then Break Next Inc I Try fValue = CFloat(Left$(Value, I - 1)) If Error Then Error.Raise("Bad value") If fValue < 0 And If Not $bAllowNegative Then Error.Raise("Bad value") Unit = Trim(Mid$(Value, I)) If Not Unit Then Unit = "%" If Not $aUnits.Exist(Unit) Then If Not $bAllowRelative Or Unit <> "%" Then Error.Raise("Unknown unit") Endif Endif $hTextBox.Text = CStr(fValue) $hButton.Text = Unit End Public Sub Button_Click() $hTextBox.SetFocus If Not $hMenu Then RefreshMenu $hMenu.Popup($hButton.ScreenX, $hButton.ScreenY + $hButton.Height) End Private Function ReadOnly_Read() As Boolean Return $hTextBox.ReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $hTextBox.ReadOnly = Value End Public Sub Background_GotFocus() $hTextBox.SetFocus End Public Sub Observer_GotFocus() $hTextBox.SetFocus End Public Sub Clear() Value_Write("") End Private Function Length_Read() As Integer Return $hTextBox.Length End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value $hBackground.Padding = If(Value, Style.FrameWidth, 0) Me.Refresh End Public Sub Background_Draw() Dim iCol As Integer Dim iState As Integer iCol = Style.BackgroundOf($hTextBox) If $bBorder Then iState = Style.StateOf($hBackground) If $hTextBox.HasFocus Then iState = iState Or Style.HasFocus If $hBackground.Hovered Then iState = iState Or Style.Hovered Style.PaintBox(0, 0, Paint.W, Paint.H, iState, iCol) Else Paint.FillRect(0, 0, Paint.W, Paint.H, iCol) Endif End Private Function Editor_Read() As MaskBox Return $hTextBox End Public Sub Button_MouseWheel() $hButton.Tag = Max(0, Min($hButton.Tag - Mouse.Delta, $aUnits.Max)) If $bAutoConvert Then Try $fCurVal = $fCurVal * GetFactor($hButton.Text) / GetFactor($aUnits[$hButton.Tag]) $hTextBox.Text = Replace(Format($fCurVal, "0.####"), ",", ".") Endif $hButton.Text = $aUnits[$hButton.Tag] Raise Change End Private Function Alignment_Read() As Integer Return $hTextBox.Alignment End Private Sub Alignment_Write(Value As Integer) $hTextBox.Alignment = Value End Public Sub TextBox_Activate() Raise Activate End Public Sub TextBox_Change() Dim fVal As Float Dim iPos As Integer Dim sText As String iPos = $hTextBox.Pos sText = Replace($hTextBox.Text, ",", ".") If sText <> $hTextBox.Text Then $hTextBox.Text = sText $hTextBox.Pos = iPos Return Endif Try fVal = CFloat(Last.Text) If Error Then Return $fCurVal = fVal Raise Change End Public Sub TextBox_MouseWheel() Dim F As Float F = $fCurVal + Mouse.Delta If Not $bAllowNegative Then $fCurVal = Max(0, F) Else $fCurVal = F Endif $hTextBox.Text = CStr($fCurVal) 'Raise Change End Private Sub RefreshMenu() Dim hMenu As Menu Dim s As String Try $hMenu.Delete $hMenu = New Menu(Me.Window) For Each s In $aUnits hMenu = New Menu($hMenu) As "Menu" hMenu.Text = s Next End Public Sub Menu_Click() If $bAutoConvert Then Try $fCurVal = $fCurVal * GetFactor($hButton.Text) / GetFactor(Last.Text) $hTextBox.Text = Replace(Format($fCurVal, "0.####"), ",", ".") Endif $hButton.Text = Last.Text Raise Change End Private Function AllowRelative_Read() As Boolean Return $bAllowRelative End Private Sub AllowRelative_Write(Value As Boolean) If Not Value And $aUnits[$aUnits.Max] = "%" Then $aUnits.Remove($aUnits.Max) If Value And $aUnits[$aUnits.Max] <> "%" Then $aUnits.Add("%") RefreshMenu $bAllowRelative = Value End Private Function AutoConvert_Read() As Boolean Return $bAutoConvert End Private Sub AutoConvert_Write(Value As Boolean) $bAutoConvert = Value End Private Function GetFactor(Unit As String) As Float Select Case Unit Case "cm" Return 0.3937 Case "ft" Return 12 Case "in" Return 1 Case "m" Return 39.37 Case "mm" Return 0.03937 Case "pt" Return 1 / 72 Case Else Error.Raise("") '* (300 / 96) ' Trick to get a 300 DPI like End Select End Private Function Text_Read() As String Return Value_Read() End Private Sub Text_Write(Value As String) Value_Write(Value) End Public Sub ClearButton_Click() $hTextBox.Text = "" $hButton.Text = $sDefaultUnit Raise Change End Private Function AllowNegative_Read() As Boolean Return $bAllowNegative End Private Sub AllowNegative_Write(Value As Boolean) $bAllowNegative = Value End Private Sub CheckDefaultUnit() If Not $aUnits.Exist($sDefaultUnit) Then $sDefaultUnit = $aUnits[0] Endif End Private Function Units_Read() As String[] Return $aUnits End Private Sub Units_Write(Value As String[]) If Value And If Value.Count Then $aUnits = Value.Copy() Else $aUnits = ["mm", "cm", "in", "ft", "px", "pt"] Endif CheckDefaultUnit AllowRelative_Write($bAllowRelative) ClearButton_Click End Private Function DefaultUnit_Read() As String Return $sDefaultUnit End Private Sub DefaultUnit_Write(Value As String) $sDefaultUnit = Value CheckDefaultUnit If Not $hTextBox.Text Then ClearButton_Click End gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportBorderChooser.class000066400000000000000000000267131411575327000263720ustar00rootroot00000000000000' Gambas class file Static Public Value As String 'Private hBrush As CReportBrush = CReportBrush["&h00000000&"] Private Enum BORDER_TOP, BORDER_BOTTOM, BORDER_LEFT, BORDER_RIGHT, TOPLEFTCORNER, TOPLEFTCORNER2, TOPRIGHTCORNER, TOPRIGHTCORNER2, BOTTOMRIGHTCORNER, BOTTOMRIGHTCORNER2, BOTTOMLEFTCORNER, BOTTOMLEFTCORNER2 Private $aCoordBox As New CoordBox[12] Private $aBrush As New CReportBrush[4] Private $aBorder As String[] = ["Top", "Bottom", "Left", "Right", "TopLeftCorner", "TopLeftCorner2", "TopRightCorner", "TopRightCorner2", "BottomRightCorner", "BottomRightCorner2", "BottomLeftCorner", "BottomLeftCorner2"] Public Sub Run(sBorder As String) As Boolean Value = sBorder Return Not Me.ShowModal() End ' Public Sub RefreshImage() ' 'Dim $hImg As Image ' ' Paint.Begin($hImg) ' Paint.Brush = hBrush._PaintBrush(4, 4, Paint.Width - 6, Paint.Height - 6) ' Paint.Rectangle(0, 0, Paint.Width, Paint.Height) ' Paint.Fill ' Paint.LineWidth = 2 ' Paint.Brush = Paint.Color(Color.Black) ' Paint.Rectangle(0, 0, Paint.Width, Paint.Height) ' Paint.Stroke ' paint.Brush = Paint.Color(Color.White) ' Paint.Rectangle(2, 2, Paint.Width - 4, Paint.Height - 4) ' Paint.Stroke ' ' Paint.End ' Button1.Picture = $hImg.Picture ' ' End ' Public Sub ButtonBox1_Click() ' ' If Not FReportCoordChooser.Run(Last.Text) Then Last.Text = FReportCoordChooser.Coord ' ' End ' Public Sub dwgBorder_Draw() CFamilyReport.PaintBorder(GetValue()) End ' Public Sub dwgBorder_MouseDown() ' ' Dim fPosX, fPosY As Float ' Dim iPos As Integer ' ' fPosX = Mouse.X / dwgBorder.Width ' fPosY = Mouse.Y / dwgBorder.Height ' ' If fPosY > fPosX Then ' If fPosY > (1 - fPosX) Then ' iPos = 2 ' Else ' iPos = 3 ' Endif ' Else ' If fPosY > (1 - fPosX) Then ' iPos = 1 ' Else ' iPos = 0 ' Endif ' Endif ' ' If Not $aBrushes[iPos] Then ' $aBrushes[iPos] = hBrush ' Else ' If $aWidth[iPos] = ButtonBox1.Text And If $aBrushes[iPos] = hBrush Then ' $aBrushes[iPos] = Null ' Else ' $aBrushes[iPos] = hBrush ' Endif ' ' Endif ' $aWidth[iPos] = ButtonBox1.Text ' ' 'SetBorder(sWhere, Not HasBorder(sWhere)) ' dwgBorder.Refresh ' ' End ' ' Public Sub btnOK_Click() ' ' Dim bAll As Boolean = True ' Dim prevhBrush, hBrush As CReportBrush ' Dim PrevW As String ' Dim i As Integer ' ' Value = "" ' prevhBrush = $aBrushes[0] ' PrevW = $aWidth[0] ' For i = 0 To 3 ' If $aBrushes[i] = Null Or If $aBrushes[i] <> prevhBrush Or If $aWidth[i] <> PrevW Then ' ' bAll = False ' Break ' Endif ' ' prevhBrush = $aBrushes[i] ' PrevW = $aWidth[i] ' ' Next ' ' If bAll Then ' If $aBrushes[0] <> Null Then Value = "Border=" & $aWidth[0] & " " & $aBrushes[0].ToString() & ";" ' ' Else ' For i = 0 To 3 ' ' If $aBrushes[i] Then ' ' Value &= $aSide[i] & "=" & $aWidth[i] & " " & $aBrushes[i].ToString() & "; " ' ' Endif ' ' Next ' Endif ' Me.Close(True) ' ' End ' ' Public Sub Form_Open() ' ' Dim ars As String[] ' Dim ars2 As String[] ' Dim iSide, i As Integer ' Dim sValue As String ' For Each sValue In Split(Value, ";") ' ars = Scan(sValue, "*=*") ' If ars.Count < 2 Then Return ' iSide = $aSide.Find(Trim(ars[0])) ' If iSide = -1 Then ' If LCase(Trim(ars[0])) <> "border" Then Return ' For i = 0 To 3 ' ars2 = Split(ars[1], " ") ' $aWidth[i] = ars2[0] ' Try $aBrushes[i] = CReportBrush[ars2[1]] ' Next ' ' Else ' ars2 = Split(ars[1], " ") ' $aWidth[iSide] = ars2[0] ' Try $aBrushes[iSide] = CReportBrush[ars2[1]] ' Endif ' Next ' dwgBorder.Refresh ' ' End ' Private Function HaveRoundCorner() As Boolean Return Not (CFamilyReport.ToPixel(crdTopLeft1.Value) = 0 And CFamilyReport.ToPixel(crdTopLeft2.Value) = 0 And CFamilyReport.ToPixel(crdTopRight1.Value) = 0 And CFamilyReport.ToPixel(crdTopRight2.Value) = 0 And CFamilyReport.ToPixel(crdBottomRight1.Value) = 0 And CFamilyReport.ToPixel(crdBottomRight2.Value) = 0 And CFamilyReport.ToPixel(crdBottomLeft1.Value) = 0 And CFamilyReport.ToPixel(crdBottomLeft2.Value) = 0) End Public Sub Form_Open() Dim sBorder As String Dim aScan As String[] Dim iBorder As Integer Dim sBrush As String Dim aComp As New String[12] Dim achkSynchro As New CheckBox[8] Dim bSynchro As Boolean $aCoordBox[BORDER_TOP] = crdTop $aCoordBox[BORDER_BOTTOM] = crdBottom $aCoordBox[BORDER_LEFT] = crdLeft $aCoordBox[BORDER_RIGHT] = crdRight $aCoordBox[TOPLEFTCORNER] = crdTopLeft1 $aCoordBox[TOPLEFTCORNER2] = crdTopLeft2 $aCoordBox[TOPRIGHTCORNER] = crdTopRight1 $aCoordBox[TOPRIGHTCORNER2] = crdTopRight2 $aCoordBox[BOTTOMRIGHTCORNER] = crdBottomRight1 $aCoordBox[BOTTOMRIGHTCORNER2] = crdBottomRight2 $aCoordBox[BOTTOMLEFTCORNER] = crdBottomLeft1 $aCoordBox[BOTTOMLEFTCORNER2] = crdBottomLeft2 achkSynchro[0] = chkTopLeft achkSynchro[2] = chkTopRight achkSynchro[4] = chkBottomRight achkSynchro[6] = chkBottomLeft For iBorder = 0 To 3 $aCoordBox[iBorder].Clear $aBrush[iBorder] = New CReportBrush Next For Each sBorder In Split(Value, ";") aScan = Scan(sBorder, "*:*") If aScan.Count <> 2 Then Continue iBorder = $aBorder.Find(aScan[0], gb.IgnoreCase) If iBorder < 0 Then Continue aComp[iBorder] = aScan[1] If iBorder < 4 Then For Each sBrush In Split(aScan[1], " ") If IsDigit(Left(sBrush)) Then Try $aCoordBox[iBorder].Value = sBrush Else Try $aBrush[iBorder] = CReportBrush[sBrush] Endif Next Else aScan = Split(aScan[1], " ") If aScan.Count = 2 Then Try $aCoordBox[iBorder].Value = aScan[0] Try $aCoordBox[iBorder + 1].Value = aScan[1] If [TOPLEFTCORNER, TOPRIGHTCORNER, BOTTOMRIGHTCORNER, BOTTOMLEFTCORNER].Exist(iBorder) Then achkSynchro[iBorder - 4].Value = $aCoordBox[iBorder].Value = $aCoordBox[iBorder + 1].Value Endif Else Try $aCoordBox[iBorder].Value = aScan[0] achkSynchro[iBorder - 4].Value = True Endif Endif Next If aComp[0] = aComp[1] And If aComp[0] = aComp[2] And If aComp[0] = aComp[3] Then If Not aComp[5] And If Not aComp[7] And If Not aComp[9] And If Not aComp[11] Then If aComp[4] = aComp[6] And If aComp[4] = aComp[8] And If aComp[4] = aComp[10] Then bSynchro = True Endif Endif Endif chkSynchro.Value = bSynchro End Public Sub chkSynchro_Click() Dim hCtrl As Control For Each hCtrl In panBorder.Children If hCtrl Is CoordBox Or If hCtrl Is Button Then If InStr(hCtrl.Name, "Top") Then Continue hCtrl.Enabled = chkSynchro.Value = False Endif Next For Each hCtrl In panCorner.Children If hCtrl Is CoordBox Or If hCtrl Is CheckBox Then If InStr(hCtrl.Name, "TopLeft") Then Continue hCtrl.Enabled = chkSynchro.Value = False Endif Next If chkSynchro.Value = False Then crdTopLeft2.Enabled = chkTopLeft.Value = False crdTopRight2.Enabled = chkTopRight.Value = False crdBottomLeft2.Enabled = chkBottomLeft.Value = False crdBottomRight2.Enabled = chkBottomRight.Value = False Endif dwgBorder.Refresh End Public Sub btnBrush_Click() Dim iBorder As Integer = $aBorder.Find(Last.Tag) If Not FReportBrushChooser.Run($aBrush[iBorder].ToString()) Then $aBrush[iBorder] = CReportBrush[FReportBrushChooser.Value] dwgBorder.Refresh Endif End Public Sub btnCancel_Click() Me.Close End Public Sub crdBrush_Change() dwgBorder.Refresh End Private Sub GetValue() As String Dim sBorder As String Dim iBorder As Integer Dim iUse As Integer Dim sVal As String For iBorder = 0 To 3 iUse = If(chkSynchro.Value Or HaveRoundCorner(), BORDER_TOP, iBorder) If Not $aCoordBox[iUse].Value Then Continue If sBorder Then sBorder &= ";" sBorder &= $aBorder[iBorder] & ":" sBorder &= $aCoordBox[iUse].Value & " " & $aBrush[iUse].ToString() Next If sBorder Then For iBorder = 4 To 11 Step 2 iUse = If(chkSynchro.Value, 4, iBorder) If $aCoordBox[iUse].Value Then sBorder &= ";" sBorder &= $aBorder[iBorder] & ":" & $aCoordBox[iUse].Value If $aCoordBox[iUse + 1].Enabled Then sVal = $aCoordBox[iUse + 1].Value If sVal And If sVal <> $aCoordBox[iUse].Value Then sBorder &= " " & sVal Endif Endif Next Endif Return sBorder End Public Sub btnOK_Click() Value = GetValue() 'Print Value Me.Close(True) End ' Private Sub RoundRect(x As Integer, y As Integer, w As Integer, h As Integer, Radius_X As Float[], radius_y As Float[]) ' ' Dim ARC_TO_BEZIER As Float = 0.55228475 ' Dim c1, c2 As Float ' Dim i As Integer ' ' For i = 0 To 3 ' If radius_x[i] > w - radius_x[i] Then ' radius_x[i] = w / 2 ' Endif ' ' If radius_y[i] > h - radius_y[i] Then ' radius_y[i] = h / 2 ' Endif ' Next ' 'approximate(quite Close )the arc using a bezier curve ' ' ' A**********B ' ' H C ' ' * * ' ' * * ' ' G D ' ' F**********E ' ' '-->A ' paint.moveto(x + radius_x[0], y) ' ' '-->B ' paint.rellineto(w - radius_x[0] - radius_x[1], 0.0) ' ' '-->C ' c1 = ARC_TO_BEZIER * radius_x[1] ' c2 = ARC_TO_BEZIER * radius_y[1] ' paint.relcurveto(c1, 0.0, radius_x[1], c2, radius_x[1], radius_y[1]) ' ' '-->D ' paint.rellineto(0, h - radius_y[1] - radius_y[2]) ' ' '-->E ' c1 = ARC_TO_BEZIER * radius_x[2] ' c2 = ARC_TO_BEZIER * radius_y[2] ' paint.relcurveto(0.0, c2, c1 - radius_x[2], radius_y[2], - radius_x[2], radius_y[2]) ' ' '-->F ' paint.rellineto(- w + radius_x[2] + Radius_X[3], 0) ' ' '-->G ' c1 = ARC_TO_BEZIER * radius_x[3] ' c2 = ARC_TO_BEZIER * radius_y[3] ' paint.relcurveto(- c1, 0, - radius_x[3], - c2, - radius_x[3], - radius_y[3]) ' '-->H ' paint.rellineto(0, - h + radius_y[3] + radius_y[0]) ' ' '-->A ' c1 = ARC_TO_BEZIER * radius_x[0] ' c2 = ARC_TO_BEZIER * radius_y[0] ' paint.relcurveto(0.0, - c2, radius_x[0] - c1, - radius_y[0], radius_x[0], - radius_y[0]) ' ' 'paint.closepath() ' ' End Public Sub crdCorner_Change() dwgBorder.Refresh End Public Sub crdTopLeft1_Change() If chkTopLeft.Value Then crdTopLeft2.Value = crdTopLeft1.Value dwgBorder.Refresh End Public Sub crdTopLeft2_Change() dwgBorder.Refresh End Public Sub crdTopRight1_Change() If chkTopRight.Value Then crdTopRight2.Value = crdTopRight1.Value dwgBorder.Refresh End Public Sub crdTopRight2_Change() dwgBorder.Refresh End Public Sub crdBottomRight1_Change() If chkBottomRight.Value Then crdBottomRight2.Value = crdBottomRight1.Value dwgBorder.Refresh End Public Sub crdBottomRight2_Change() dwgBorder.Refresh End Public Sub crdBottomLeft1_Change() If chkBottomLeft.Value Then crdBottomLeft2.Value = crdBottomLeft1.Value dwgBorder.Refresh End Public Sub crdBottomLeft2_Change() dwgBorder.Refresh End Private Sub HandleCheck(hCtrl As CoordBox, hMain As CoordBox, bCheck As Boolean) hCtrl.Enabled = Not bCheck If bCheck Then hCtrl.Value = hMain.Value End Public Sub chkTopLeft_Click() HandleCheck(crdTopLeft2, crdTopLeft1, Last.Value) End Public Sub chkTopRight_Click() HandleCheck(crdTopRight2, crdTopRight1, Last.Value) End Public Sub chkBottomRight_Click() HandleCheck(crdBottomRight2, crdBottomRight1, Last.Value) End Public Sub chkBottomLeft_Click() HandleCheck(crdBottomLeft2, crdBottomLeft1, Last.Value) End gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportBorderChooser.form000066400000000000000000000073421411575327000262250ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,80,33) Text = ("Configure border") Resizable = False { btnCancel Button MoveScaled(63,28,16,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(46,28,16,4) Text = ("OK") Default = True } { chkSynchro CheckBox MoveScaled(1,28,20,4) Text = ("Synchronize") } { TabStrip1 TabStrip MoveScaled(1,1,52,26) Count = 2 Index = 0 Text = ("Border") { panBorder Panel MoveScaled(1,1,34,19) { crdBottom CoordBox crdBrush Name = "crdBottom" MoveScaled(9,15,18,4) } { Label4 Label MoveScaled(0,15,9,4) #Translate = False Text = "Bottom" } { crdTop CoordBox crdBrush Name = "crdTop" MoveScaled(9,0,18,4) } { btnTop Button btnBrush Name = "btnTop" MoveScaled(28,0,5,4) Tag = "Top" Picture = Picture["icon:/small/color"] } { btnLeft Button btnBrush Name = "btnLeft" MoveScaled(28,5,5,4) Tag = "Left" Picture = Picture["icon:/small/color"] } { crdRight CoordBox crdBrush Name = "crdRight" MoveScaled(9,10,18,4) } { btnRight Button btnBrush Name = "btnRight" MoveScaled(28,10,5,4) Tag = "Right" Picture = Picture["icon:/small/color"] } { Label3 Label MoveScaled(0,0,9,4) #Translate = False Text = "Top" } { Label5 Label MoveScaled(0,5,9,4) #Translate = False Text = "Left" } { Label6 Label MoveScaled(0,10,9,4) #Translate = False Text = "Right" } { crdLeft CoordBox crdBrush Name = "crdLeft" MoveScaled(9,5,18,4) } { btnBottom Button btnBrush Name = "btnBottom" MoveScaled(28,15,5,4) Tag = "Bottom" Picture = Picture["icon:/small/color"] } } Index = 1 Text = ("Corner") { panCorner Panel MoveScaled(1,1,49,19) { Label2 Label MoveScaled(0,5,9,4) #Translate = False Text = "TopRight" } { crdTopRight1 CoordBox MoveScaled(12,5,16,4) } { Label7 Label MoveScaled(0,10,12,4) #Translate = False Text = "BottomRight" } { crdBottomRight1 CoordBox MoveScaled(12,10,16,4) } { Label8 Label MoveScaled(0,15,11,4) #Translate = False Text = "BottomLeft" } { crdBottomLeft1 CoordBox MoveScaled(12,15,16,4) } { crdTopLeft1 CoordBox MoveScaled(12,0,16,4) } { Label1 Label MoveScaled(0,0,9,4) #Translate = False Text = "TopLeft" } { crdTopLeft2 CoordBox MoveScaled(29,0,16,4) Enabled = False } { crdTopRight2 CoordBox MoveScaled(29,5,16,4) Enabled = False } { crdBottomRight2 CoordBox MoveScaled(29,10,16,4) Enabled = False } { crdBottomLeft2 CoordBox MoveScaled(29,15,16,4) Enabled = False } { chkTopLeft CheckBox MoveScaled(46,0,3,4) Value = CheckBox.True } { chkTopRight CheckBox MoveScaled(46,5,3,4) Value = CheckBox.True } { chkBottomRight CheckBox MoveScaled(46,10,3,4) Value = CheckBox.True } { chkBottomLeft CheckBox MoveScaled(46,15,3,4) Value = CheckBox.True } } Index = 0 } { Panel1 Panel MoveScaled(54,1,25,26) Arrangement = Arrange.Fill Border = Border.Plain { dwgBorder DrawingArea MoveScaled(2,1,16,19) Background = Color.SelectedForeground } } } gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportBoxShadowChooser.class000066400000000000000000000054001411575327000270410ustar00rootroot00000000000000' Gambas class file Static Public Value As String Public Sub Run(sShadow As String) As Boolean Value = sShadow Return Not Me.ShowModal() End Public Sub _new() crdX.AllowNegative = True crdY.AllowNegative = True crdSpread.AllowNegative = True 'crdBlur.AllowNegative = True End Public Sub btnOK_Click() Value = GetValue() Me.Close(True) End Private Function IsActive() As Boolean Return Not (CFamilyReport.ToPixel(crdBlur.Value) = 0 And CFamilyReport.ToPixel(crdSpread.Value) = 0 And CFamilyReport.ToPixel(crdX.Value) = 0 And CFamilyReport.ToPixel(crdY.Value) = 0) End Private Sub PaintShadow() Dim fSPread As Float = CFamilyReport.ToPixel(crdSpread.Value) Dim fX As Float = CFamilyReport.ToPixel(crdX.Value) Dim fY As Float = CFamilyReport.ToPixel(crdY.Value) Dim fBlur As Float = CFamilyReport.ToPixel(crdBlur.Value) 'Dim fMaxOffset As Float = Max(fX, fY) Dim fWIdth, fHeight As Integer Dim hImg As Image fWidth = Paint.Width - 30 'fSPread * 2 - fMaxOffset - 30 fHeight = Paint.Height - 30 ' fSPread * 2 - fMaxOffset - 30 'Print fX 'Print IsActive() If IsActive() Then himg = New Image(fWidth + fSpread * 2 + fBlur * 2, fHeight + fSpread * 2 + fBlur * 2, Color.Transparent) Paint.Begin(himg) Paint.Brush = Paint.Color(btnColor.Value) Paint.rectangle(fBlur, fBlur, Paint.Width - fBlur * 2, Paint.Height - fBlur * 2, 5) Paint.Fill Paint.End himg.Fuzzy(fBlur) Draw.Image(himg, 15 + fX - fSpread - fBlur, 15 + fY - fSpread - fBlur) Endif Paint.Rectangle((Paint.Width - fWidth) / 2, (Paint.Height - fHeight) / 2, fWIdth, fHeight, 5) Paint.Brush = Paint.Color(Color.White) Paint.Fill(True) Paint.Brush = Paint.Color(Color.Black) Paint.Stroke End Public Sub dwgBorder_Draw() PaintShadow End Public Sub crdBrush_Change() dwgBorder.Refresh End Private Sub GetValue() As String Dim sRet As String Dim sVal As String sVal = crdX.Value If Not sVal Then sVal = "0px" sRet &= sVal sVal = crdY.Value If Not sVal Then sVal = "0px" sRet &= " " & sVal sVal = crdBlur.Value If Not sVal Then sVal = "0px" sRet &= " " & sVal sVal = crdSpread.Value If Not sVal Then sVal = "0px" sRet &= " " & sVal sRet &= " " & CReportBrush.ColorToString(btnColor.Value) Return sRet End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim a As String[] Dim aCont As CoordBox[] = [crdX, crdY, crdBlur, crdSpread] Dim i As Integer 'Value = "1px -2cm 3mm 1px #FF5641" If Not Value Then Return Endif a = Split(Value, " ") For i = 0 To 4 If a[i] Begins "#" Then Try btnColor.Value = CReportBrush.StringToColor(a[i]) Break Endif Try aCont[i].Value = a[i] Next dwgBorder.Refresh End gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportBoxShadowChooser.form000066400000000000000000000031771411575327000267100ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,60,39) Text = ("Configure shadow") { btnCancel Button MoveScaled(43,34,16,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(26,34,16,4) Text = ("OK") Default = True } { TabStrip1 TabStrip MoveScaled(1,1,32,32) Index = 0 Text = ("Shadow") { panBorder Panel MoveScaled(1,1,28,26) { crdBlur CoordBox crdBrush Name = "crdBlur" MoveScaled(9,10,18,4) } { Label4 Label MoveScaled(0,10,9,4) #Translate = False Text = "Blur" } { crdX CoordBox crdBrush Name = "crdX" MoveScaled(9,0,18,4) } { Label3 Label MoveScaled(0,0,9,4) #Translate = False Text = "X offset" } { Label5 Label MoveScaled(0,5,9,4) #Translate = False Text = "Y offset" } { crdY CoordBox crdBrush Name = "crdY" MoveScaled(9,5,18,4) } { Label1 Label MoveScaled(0,20,9,5) #Translate = False Text = "Color" } { btnColor ColorButton crdBrush Name = "btnColor" MoveScaled(9,20,18,5) } { Label6 Label MoveScaled(0,15,9,4) #Translate = False Text = "Spread" } { crdSpread CoordBox crdBrush Name = "crdSpread" MoveScaled(9,15,18,4) } } Index = 0 } { Panel1 Panel MoveScaled(34,5,25,27) Arrangement = Arrange.Fill Border = Border.Plain { dwgBorder DrawingArea MoveScaled(1,1,16,19) Background = Color.SelectedForeground } } } gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportBrushChooser.class000066400000000000000000000300271411575327000262310ustar00rootroot00000000000000' Gambas class file Private $hBrush As CReportBrush Private $aGradientPos As Float[] Private $aGradientColors As Integer[] Private $iColor As Integer Private $iCurrentColor As Integer = -1 Private $aLabel As Label[] Private $lblA1 As DrawingArea Private $lblA2 As DrawingArea 'tampon souris Private $MX As Integer Private $MY As Integer 'Valeur radiales Private $fX As Float = 0.5 Private $fY As Float = 0.5 Private $cX As Float = 0.50 Private $cY As Float = 0.50 Private $fRadius As Float = 0.5 'valeur linéaires Private $flX1 As Float = 0 Private $flY1 As Float = 0.5 Private $flX2 As Float = 1 Private $flY2 As Float = 0.5 Static Public Value As String '"radialgradient(0.5,0.5,1,0.5,0.5,[&hFFFFFF,&h000000,&h00FF00],[0,0.5,1])" '"lineargradient(0,0.5,1,0.5,[&hFFFFFF,&h000000,&h00FF00],[0,0.5,1])" Public Sub Run(sBrush As String) As Boolean Value = sBrush Return Not Me.ShowModal() End Public Sub _new() 'fchIcon.Filter = ["*.png,*.jpg,*.jpeg,*.xpm,*.gif", ("Image files")] 'fchIcon.Root = Project.Dir $aGradientColors = [0, &hFFFFFF&] $aGradientPos = [0, 1] $lblA2 = New DrawingArea(dwgGradient) As "lblAngle" $lblA2.Mouse = Mouse.Cross $lblA1 = New DrawingArea(dwgGradient) As "lblAngle" $lblA1.Mouse = Mouse.Cross End Public Sub Form_Open() Dim I As Integer Dim hLabel As Label $hBrush = New CReportBrush Try $hBrush = CReportBrush[Value] cmbType.Index = $hBrush.Type Select Case $hBrush.Type Case CReportBrush.TYPE_IMAGE 'fchIcon.SelectedPath = Project.Dir &/ $hBrush.Path txtImage.Text = $hBrush.Path Case CReportBrush.TYPE_RADIAL_GRADIENT $cX = $hBrush.X1 $cy = $hBrush.Y1 $fRadius = $hBrush.Radius $fX = $hBrush.X2 $fY = $hBrush.Y2 $aGradientColors = $hBrush.Colors $aGradientPos = $hBrush.Positions Case CReportBrush.TYPE_LINEAR_GRADIENT $flX1 = $hBrush.X1 $flY1 = $hBrush.Y1 $flX2 = $hBrush.X2 $flY2 = $hBrush.Y2 $aGradientColors = $hBrush.Colors $aGradientPos = $hBrush.Positions Case CReportBrush.TYPE_COLOR $iColor = $hBrush.Color $aGradientColors = $hBrush.Colors End Select cchColor.Value = $aGradientColors[0] $aLabel = New Label[$aGradientColors.Count] For I = 0 To $aGradientColors.Max hLabel = New Label(dwgGradientColor) As "Label" hLabel.Background = $aGradientColors[I] hLabel.Border = Border.Plain hLabel.Resize(10, 10) hLabel.Tag = I $aLabel[I] = hLabel Next $lblA1.Border = Border.Plain $lblA1.Resize(10, 10) $lblA1.Background = Color.White $lblA1.Move((dwgGradient.Width - 10) * $hBrush.X1, (dwgGradient.Height - 10) * $hBrush.Y1) $lblA1.Tag = 1 $lblA2.Border = Border.Plain $lblA2.Resize(10, 10) $lblA2.Background = Color.White $lblA2.Move((dwgGradient.Width - 10) * $hBrush.X2, (dwgGradient.Height - 10) * $hBrush.Y2) $lblA2.Tag = 2 cmbType_Click End Public Sub dwgGradientColor_Draw() Dim hLabel As Label Dim iPos, i As Integer Paint.Brush = Paint.LinearGradient(5, 0, Paint.Width - 10, 0, $aGradientColors, $aGradientPos) Paint.Rectangle(5, 5, Paint.Width - 10, Paint.Height - 20) Paint.Fill For Each hLabel In $aLabel iPos = $aGradientPos[i] * (Paint.Width - 10) + 5 Paint.MoveTo(iPos - hLabel.Width / 2, Paint.Height - hLabel.Height) Paint.LineTo(iPos + hLabel.Width / 2, Paint.Height - hLabel.Height) Paint.LineTo(iPos, Paint.Height - 15) Paint.Brush = Paint.Color(IIf(hLabel.Tag = $iCurrentColor, Color.White, Color.Black)) Paint.Fill hLabel.Move(iPos - hLabel.Width / 2, Paint.Height - hLabel.Height) Inc i Next dwgGradient.Refresh End Public Sub Label_MouseDown() $MX = Mouse.ScreenX - Last.X $iCurrentColor = Last.Tag '$MY = Mouse.ScreenY - Last.Y dwgGradientColor.Refresh End Public Sub Label_MouseMove() Dim hLabel As Label = Last Dim iRealPos As Integer = Mouse.ScreenX - $MX + hLabel.Width / 2 If iRealPos < 5 Or iRealPos > dwgGradientColor.Width - 5 Then Return hLabel.Move(Mouse.ScreenX - $MX, hLabel.Y) $aGradientPos[hLabel.Tag] = Round((hLabel.X + hLabel.Width / 2 - 5) / (dwgGradientColor.Width - 10), -2) dwgGradientColor.Refresh 'Print $aGradientPos[hLabel.Tag] End Public Sub dwgGradient_Draw() If cmbType.Index = CReportBrush.TYPE_RADIAL_GRADIENT Then Paint.Brush = Paint.RadialGradient((Paint.Width - 10) * $cX, (Paint.Height - 10) * $cY, (Paint.Width - 10) * 2 * $fRadius, (Paint.Width - 10) * $fX, (Paint.Height - 10) * $fY, $aGradientColors, $aGradientPos) Paint.Rectangle(5, 5, Paint.Width - 10, Paint.Height - 10) Paint.fill Else Paint.Brush = Paint.LinearGradient((Paint.Width - 10) * $flX1, (Paint.Height - 10) * $flY1, (Paint.Width - 10) * $flX2, (Paint.Height - 10) * $flY2, $aGradientColors, $aGradientPos) Paint.Rectangle(5, 5, Paint.Width - 10, Paint.Height - 10) Paint.Fill Paint.Brush = Paint.Color(Color.Black) Paint.MoveTo($lblA1.Left + 5, $lblA1.Top + 5) Paint.LineTo($lblA2.Left + 5, $lblA2.Top + 5) Paint.Stroke Endif End Private Sub AddGradient(X As Float, iGradientColor As Integer) Dim hLabel As Label hLabel = New Label(dwgGradientColor) As "Label" $aGradientColors.Add(iGradientColor) $aGradientPos.Add(X) hLabel.Background = iGradientColor hLabel.Resize(10, 10) hLabel.Tag = $aGradientColors.Max hLabel.Border = Border.Plain $aLabel.Add(hLabel) dwgGradientColor.Refresh End Public Sub dwgGradientColor_DblClick() Dim X, XMin, XMax As Float Dim iInd, iMin, iMax As Integer X = Round((Mouse.X - 5) / (dwgGradientColor.Width - 10), -2) If $aGradientPos.Exist(X) Then Return XMin = 0 iMin = -1 XMax = 1 iMax = -1 For iInd = 0 To $aGradientPos.Max If $aGradientPos[iInd] >= XMin And $aGradientPos[iInd] < X Then iMin = iInd XMin = $aGradientPos[iInd] Endif If $aGradientPos[iInd] > X And $aGradientPos[iInd] <= XMax Then iMax = iInd XMax = $aGradientPos[iInd] Endif Next If iMin < 0 Then iMin = iMax Else If iMax < 0 Then iMax = iMin Endif AddGradient(X, Color.Gradient($aGradientColors[iMin], $aGradientColors[iMax])) End Public Sub sldRadius_Change() $fRadius = Last.value / 100 dwgGradient.Refresh End Private Function FindLabel(iColor As Integer) As Label Dim hLabel As Label For Each hLabel In $aLabel If hLabel.Tag = iColor Then Return hLabel Next End Private Sub SelectColor(iColor As Integer) Dim hLabel As Label = FindLabel(iColor) If Not FColorChooser.Run($aGradientColors[iColor], True) Then hLabel.Background = FColorChooser.Value $aGradientColors[iColor] = FColorChooser.Value dwgGradientColor.Refresh Endif End Public Sub Label_DblClick() SelectColor(Last.Tag) End Private Sub RemoveGradient() Dim I As Integer If $aGradientColors.Count <= 2 Then Return $aGradientColors.Remove($iCurrentColor) $aGradientPos.Remove($iCurrentColor) $aLabel[$iCurrentColor].Delete $aLabel.Remove($iCurrentColor) $iCurrentColor = -1 For I = 0 To $aGradientColors.Max $aLabel[I].Tag = I Next dwgGradientColor.Refresh End Public Sub dwgGradientColor_KeyPress() If Key.Code <> Key.Delete Then Return If $iCurrentColor < 0 Then Return RemoveGradient() End Public Sub cmbType_Click() Dim hCtrl As Control For Each hCtrl In panBrush.Children hCtrl.Visible = Split(hCtrl.Tag, ",").Exist(cmbType.Index) If hCtrl.Visible Then hCtrl.Move(0, 0) Next UpdateGradient End Public Sub btnOK_Click() Dim i As Integer Dim f As Float Dim sValue As String Select Case cmbType.Index Case CReportBrush.TYPE_COLOR sValue = CReportBrush.ColorToString($iColor) Case CReportBrush.TYPE_LINEAR_GRADIENT, CReportBrush.TYPE_RADIAL_GRADIENT If cmbType.Index = CReportBrush.TYPE_RADIAL_GRADIENT Then sValue = "RadialGradient(" & $cx & "," & $cy & "," & $fRadius & "," & $fx & "," & $fy & ",[" Else sValue = "LinearGradient(" & $flX1 & "," & $flY1 & "," & $flX2 & "," & $flY2 & ",[" Endif For Each i In $aGradientColors sValue &= CReportBrush.ColorToString(i) & "," Next sValue = Left(sValue, -1) sValue &= "],[" For Each f In $aGradientPos sValue &= f & "," Next sValue = Left(sValue, -1) sValue &= "])" Case CReportBrush.TYPE_IMAGE sValue = "Image(" & Quote(txtImage.Text) & ")" End Select Value = sValue Me.Close(True) End Public Sub lblAngle_MouseDown() $MX = Mouse.ScreenX - Last.X 'iCurrentColor = Last.Tag $MY = Mouse.ScreenY - Last.Y dwgGradientColor.Refresh End Private Sub UpdateAngle() Dim hLabel As DrawingArea Dim X, Y As Float For Each hLabel In [$lblA1, $lblA2] X = Round(hLabel.X / (dwgGradient.Width - 10), -2) Y = Round(hLabel.Y / (dwgGradient.Height - 10), -2) If hLabel.Tag = 1 Then If cmbType.Index = CReportBrush.TYPE_LINEAR_GRADIENT Then $flX1 = X $flY1 = Y Else $cX = X $cY = Y Endif Else If cmbType.Index = CReportBrush.TYPE_LINEAR_GRADIENT Then $flX2 = X $flY2 = Y Else $fX = X $fY = Y Endif Endif dwgGradient.Refresh Next End Public Sub lblAngle_MouseMove() Dim hLabel As DrawingArea = Last Dim X As Integer = Mouse.ScreenX - $MX Dim Y As Integer = Mouse.ScreenY - $MY If Mouse.Control Then Else If Mouse.Shift Then Else X = X And Not 7 Y = Y And Not 7 Endif X = Max(Min(dwgGradient.Width - 10, X), 0) Y = Max(Min(dwgGradient.Height - 10, Y), 0) hLabel.Move(X, Y) UpdateAngle End Public Sub lblAngle_DblClick() Dim hLabel As DrawingArea = Last Dim hOther As DrawingArea If hLabel = $lblA1 Then hOther = $lblA2 Else hOther = $lblA1 Endif hLabel.Move(hOther.X, hOther.Y) UpdateAngle End Public Sub txtImage_Change() Try picImage.Picture = Picture[Project.Dir &/ txtImage.Text] End ' Public Sub FileChooser1_Activate() ' ' btnOK_Click ' Me.Title = value ' ' End Public Sub cchColor_Change() $iColor = cchColor.Value End Public Sub cchColor_Activate() btnOK.Value = True End Public Sub btnCancel_Click() Me.Close End Private Sub UpdateGradient() Dim bRadial As Boolean = cmbType.Index = CReportBrush.TYPE_RADIAL_GRADIENT '$lblA2.Visible = Not bRadial '$lblA1.Visible = Not bRadial 'ToggleButton1.Visible = bRadial 'ToggleButton2.Visible = bRadial panRadius.Visible = bRadial UpdateAngle End Public Sub txtImage_Click() Dim sImage As String sImage = FSelectIcon.Run(txtImage.Text) If Not sImage Then Return txtImage.Text = sImage End Public Sub lblAngle_Draw() Dim sText As String If cmbType.Index <> CReportBrush.TYPE_RADIAL_GRADIENT Then Return If Last.Tag = 1 Then sText = "C" Else sText = "F" Endif Draw.Font.Size = 7 Draw.Font.Bold = True Draw.Text(sText, 0, 0, Draw.Width, Draw.Height, Align.Center) End Private Sub FindNextColor(iColor As Integer) As Integer Dim iInd As Integer Dim iColor2 As Integer Dim fMax As Float = 1 For iInd = 0 To $aGradientPos.Max If $aGradientPos[iInd] > $aGradientPos[iColor] And If $aGradientPos[iInd] <= fMax Then fMax = $aGradientPos[iInd] iColor2 = iInd Endif Next Return iColor2 End Public Sub btnAddGradient_Click() Dim iColor As Integer = $iCurrentColor Dim iColor2 As Integer If iColor < 0 Then iColor = 0 iColor2 = FindNextColor(iColor) AddGradient(($aGradientPos[iColor] + $aGradientPos[iColor2]) / 2, Color.Gradient($aGradientColors[iColor], $aGradientColors[iColor2])) End Public Sub btnRemoveGradient_Click() If $iCurrentColor < 0 Then Return If $aGradientPos.Count <= 2 Then Return RemoveGradient() End Public Sub btnColorGradient_Click() If $iCurrentColor < 0 Then Return SelectColor($iCurrentColor) End Public Sub btnExchangeGradient_Click() $aGradientPos.Reverse dwgGradientColor.Refresh End gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportBrushChooser.form000066400000000000000000000056711411575327000260760ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,70,54) Text = ("Configure brush") Resizable = False { btnCancel Button MoveScaled(53,6,16,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(53,1,16,4) Text = ("OK") Default = True } { cmbType ComboBox MoveScaled(1,1,50,4) ReadOnly = True List = [("Color"), ("Image"), ("Linear gradient"), ("Radial gradient")] } { panBrush Panel MoveScaled(1,6,50,47) Arrangement = Arrange.Fill { cchColor ColorChooser MoveScaled(0,0,47,42) Tag = "0" } { pnlGradient Panel MoveScaled(0,0,47,47) Tag = "2,3" Arrangement = Arrange.Vertical Spacing = True { Panel1 Panel MoveScaled(0,0,47,12) Arrangement = Arrange.Vertical Border = Border.Plain { dwgGradientColor DrawingArea MoveScaled(0,0,47,6) Expand = True Focus = True } { Separator2 Separator MoveScaled(23,7,12,0) } { HBox1 HBox MoveScaled(0,8,47,4) { btnAddGradient ToolButton MoveScaled(0,0,4,4) ToolTip = ("Add gradient stop") Picture = Picture["icon:/small/add"] } { btnRemoveGradient ToolButton MoveScaled(4,0,4,4) ToolTip = ("Remove gradient stop") Picture = Picture["icon:/small/remove"] } { btnColorGradient ToolButton MoveScaled(8,0,4,4) ToolTip = ("Select gradient stop color") & "..." Picture = Picture["icon:/small/color"] } { btnExchangeGradient ToolButton MoveScaled(12,0,4,4) ToolTip = ("Invert gradient") Picture = Picture["icon:/small/flip-h"] } { panRadius HBox MoveScaled(18,0,25,4) Expand = True Spacing = True { Separator1 Separator MoveScaled(0,0,1,4) } { Label1 Label MoveScaled(2,0,8,4) AutoResize = True Text = ("Radius") } { sldRadius Slider MoveScaled(9,0,16,3) Expand = True Value = 50 } } } } { Panel2 Panel MoveScaled(0,13,47,32) Expand = True { dwgGradient DrawingArea MoveScaled(0,0,34,34) Border = Border.Plain } } } { pnlImage Panel MoveScaled(0,0,47,42) Tag = "1" Arrangement = Arrange.Vertical Spacing = True { Label2 Label MoveScaled(1,1,36,3) Text = ("Select an image inside the project") } { txtImage ButtonBox MoveScaled(1,5,43,4) ReadOnly = True } { picImage PictureBox MoveScaled(2,11,45,28) Background = &HFFFFFF& Expand = True Border = Border.Plain } } } } gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportCoordChooser.class000066400000000000000000000024341411575327000262150ustar00rootroot00000000000000' Gambas class file Static Public Coord As String Public Sub Run(sCoord As String) As Boolean Coord = sCoord Return Not Me.ShowModal() End Public Sub btnOK_Click() Dim fVal As Float Try fVal = Val(Trim(txtCoord.Text)) If fVal > 0 Then Try Coord = CStr(fVal) & cmbUnit.Text If Error Then Balloon.Error(("Incorrect value."), txtCoord) Return Endif Else Coord = "" Endif Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim iPos As Integer For iPos = 1 To Len(Coord) If InStr("0123456789.", Mid$(Coord, iPos, 1)) = 0 Then Break Next txtCoord.Text = "" cmbUnit.Index = 0 Try txtCoord.Text = Str(CFloat(Left(Coord, iPos - 1))) Try cmbUnit.Text = Trim(Mid$(Coord, iPos)) 'txtCoord.SelectAll txtCoord.SetFocus End Public Sub cmbUnit_Click() txtCoord.SetFocus End Public Sub txtCoord_MouseWheel() Dim fVal As Float Dim fInc As Float Debug Mouse.Shift;; Mouse.Control If Mouse.Shift Then fInc = 0.1 Else fInc = 1 Endif Try fVal = Val(txtCoord.Text) If Mouse.Delta > 0 Then fVal += fInc Else fVal -= fInc Endif If fVal > 0 Then txtCoord.Text = Str(fVal) Stop Event End Public Sub btnClear_Click() txtCoord.Clear End gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportCoordChooser.form000066400000000000000000000011531411575327000260500ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,49,11) Text = ("Select a dimension") Persistent = True Resizable = False Spacing = True Margin = True { cmbUnit ComboBox MoveScaled(18,1,8,4) #Translate = False ReadOnly = True List = ["px", "cm", "mm", "in", "%"] } { btnCancel Button MoveScaled(32,6,16,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(32,1,16,4) Text = ("OK") Default = True } { btnClear Button MoveScaled(26,1,4,4) Picture = Picture["icon:/small/clear"] } { txtCoord ValueBox MoveScaled(1,1,17,4) } } gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportPaddingChooser.class000066400000000000000000000035251411575327000265170ustar00rootroot00000000000000' Gambas class file Static Public Value As String Private Enum BORDER_TOP, BORDER_BOTTOM, BORDER_LEFT, BORDER_RIGHT Private $aCoordBox As New CoordBox[4] Private $aBrush As New CReportBrush[4] Private $aBorder As String[] = ["Top", "Bottom", "Left", "Right"] Public Sub Run(sPadding As String) As Boolean Value = sPadding Return Not Me.ShowModal() End Public Sub chkSynchro_Click() Dim hCtrl As Control For Each hCtrl In [crdBottom, crdLeft, crdRight] hCtrl.Enabled = chkSynchro.Value = False Next End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() Dim sBorder As String Dim iBorder As Integer Dim iUse As Integer For iBorder = 0 To 3 iUse = If(chkSynchro.Value, BORDER_TOP, iBorder) If Not $aCoordBox[iUse].Value Then Continue If sBorder Then sBorder &= ";" sBorder &= $aBorder[iBorder] & ":" sBorder &= $aCoordBox[iUse].Value '& " " & $aBrush[iUse].ToString() Next Value = sBorder Me.Close(True) End Public Sub Form_Open() Dim sBorder As String Dim aScan As String[] Dim iBorder As Integer Dim aComp As New String[4] $aCoordBox[BORDER_TOP] = crdTop $aCoordBox[BORDER_BOTTOM] = crdBottom $aCoordBox[BORDER_LEFT] = crdLeft $aCoordBox[BORDER_RIGHT] = crdRight For iBorder = 0 To 3 $aCoordBox[iBorder].Clear $aBrush[iBorder] = New CReportBrush Next For Each sBorder In Split(Value, ";") aScan = Scan(sBorder, "*:*") If aScan.Count <> 2 Then Continue iBorder = $aBorder.Find(aScan[0], gb.IgnoreCase) If iBorder < 0 Then Continue aComp[iBorder] = aScan[1] Try $aCoordBox[iBorder].Value = aScan[1] Next If aComp[0] = aComp[1] And If aComp[0] = aComp[2] And If aComp[0] = aComp[3] Then chkSynchro.Value = True Else chkSynchro.Value = False Endif End gambas-3.16.3/app/src/gambas3/.src/Family/Report/FReportPaddingChooser.form000066400000000000000000000020561411575327000263530ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,33,32) Text = ("Configure padding") Resizable = False { Label3 Label MoveScaled(1,1,9,4) #Translate = False Text = "Top" } { crdTop CoordBox crdBrush Name = "crdTop" MoveScaled(10,1,22,4) } { Label5 Label MoveScaled(1,6,9,4) #Translate = False Text = "Left" } { crdLeft CoordBox crdBrush Name = "crdLeft" MoveScaled(10,6,22,4) } { Label6 Label MoveScaled(1,11,9,4) #Translate = False Text = "Right" } { crdRight CoordBox crdBrush Name = "crdRight" MoveScaled(10,11,22,4) } { Label4 Label MoveScaled(1,16,9,4) #Translate = False Text = "Bottom" } { crdBottom CoordBox crdBrush Name = "crdBottom" MoveScaled(10,16,22,4) } { chkSynchro CheckBox MoveScaled(1,21,19,4) AutoResize = True Text = ("Synchronize") } { btnOK Button MoveScaled(1,27,15,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(17,27,15,4) Text = ("Cancel") Cancel = True } } gambas-3.16.3/app/src/gambas3/.src/Family/TermForm/000077500000000000000000000000001411575327000215505ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Family/TermForm/CFamilyTermForm.class000066400000000000000000000041771411575327000256100ustar00rootroot00000000000000' Gambas class file Inherits CFamily Public Const Name As String = "TermForm" Public Const ControlClass As String = "TermControl" Public Const VirtualCoord As Boolean = False Public Const UseMoveScaled As Boolean = False Public Const DropImageClass As String = "TermPictureBox" Public Const DropImageProperty As String = "Image" Public Const EmbedContainer As String = "TermPanel" Public Const AutomaticArrangement As Boolean = False Public Const ForceGrid As Integer = 3 Public Sub _new() Me.Background = Color.Gray End Public Sub GetIcon(hCCtrl As CControl) As String Dim sImage As String Select hCCtrl.Kind Case "TermHBox" sImage = "horizontal" Case "TermVBox", "WebMenu" sImage = "vertical" 'Case "WebForm", "WebContainer" ' sImage = "vertical" Case Else sImage = Super.GetIcon(hCCtrl) End Select If hCCtrl.GetProperty("Invert") Then If Exist("img/family/" &/ sImage & "-invert.png") Then sImage &= "-invert" Endif Return sImage End Public Sub DrawControl((hCCtrl) As CControl) As Boolean End Public Sub ActionExec(hCtrl As CControl, sAction As String) Select Case sAction ' Case Like ".text-*" ' Super.ActionExec(hCtrl, sAction) Case ".text-font" Super.ActionExec(hCtrl, sAction) Case ".text-set-font" Super.ActionExec(hCtrl, sAction) ' Case ".text-bold" ' ToggleFont(hCtrl, "bold") ' ' Case ".text-italic" ' ToggleFont(hCtrl, "italic") ' ' Case ".text-underline" ' ToggleFont(hCtrl, "underline") ' ' Case ".format-background" ' If hCtrl.HasProperty("Background") Then hCtrl.SetProperty("Background", Me.ActionValue) ' ' Case ".format-foreground" ' If hCtrl.HasProperty("Foreground") Then hCtrl.SetProperty("Foreground", Me.ActionValue) End Select End Public Sub ConvertCoord(iCoord As Integer, bViewToCoord As Boolean) As Integer Dim iSnap As Integer = Me.GetSnap() If bViewToCoord Then 'Return (iCoord + iSnap \ 2) \ iSnap Return iCoord \ iSnap Else Return iCoord * iSnap Endif End gambas-3.16.3/app/src/gambas3/.src/Family/WebForm/000077500000000000000000000000001411575327000213565ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Family/WebForm/CFamilyWebForm.class000066400000000000000000000145031411575327000252160ustar00rootroot00000000000000' Gambas class file Inherits CFamily Public Const Name As String = "WebForm" Public Const ControlClass As String = "WebControl" Public Const VirtualCoord As Boolean = True Public Const UseMoveScaled As Boolean = True Public Const DropImageClass As String = "WebImage" Public Const DropImageProperty As String = "Image" Public Const EmbedContainer As String = "WebContainer" Public Const AutomaticArrangement As Boolean = True Public Const HasMenuEditor As Boolean = True Public Const MenuClass As String = "WebMenu" Public Const SelectImagePublic As Boolean = True Public Sub _new() Me.Background = Color.TextBackground End Public Sub GetIcon(hCCtrl As CControl) As String Dim sImage As String Select hCCtrl.Kind Case "WebHBox" sImage = "horizontal" Case "WebVBox", "WebMenu" sImage = "vertical" 'Case "WebForm", "WebContainer" ' sImage = "vertical" Case Else sImage = Super.GetIcon(hCCtrl) End Select ' If hCCtrl.GetProperty("Invert") Then ' If Exist("img/family/" &/ sImage & "-invert.png") Then sImage &= "-invert" ' Endif Return sImage End Static Public Sub PaintMenuItem(hCCtrl As CControl) Dim DS As Integer Dim X As Integer Dim sImage As String Dim hImage As Image Dim sColor As String Dim bMenu As Boolean Dim sText As String DS = Desktop.Scale bMenu = hCCtrl.Kind = "WebMenu" sText = hCCtrl.GetProperty("Text") If hCCtrl.Kind = "WebMenuItem" Then X = DS * 2 + Stock.GetSize("small") Else X = DS Endif sImage = hCCtrl.GetProperty("Image") If sImage Then Try hImage = Image.Load(Project.Dir &/ ".public" &/ sImage) If hImage Then Paint.DrawImage(hImage, DS, CInt(Paint.H - hImage.H) \ 2) X = DS + hImage.W + DS Endif Endif sColor = hCCtrl.GetProperty("Foreground") If sColor Then Paint.Background = FColorChooser.FromString(sColor) Else Paint.Background = Color.TextForeground Endif Paint.DrawText(sText, X, 0, Paint.W - X - DS, Paint.H, Align.Normal) If bMenu Then If hCCtrl.Parent And If hCCtrl.Parent.Kind = "WebMenu" Then Style.PaintArrow(Paint.W - DS * 4, 0, DS * 4, DS * 4, Align.Right) Else Paint.DrawText(hCCtrl.GetProperty("Shortcut"), X, 0, Paint.W - X - DS, Paint.H, Align.Right) Endif If bMenu Then Paint.Background = &HFFB0B0 Paint.AntiAlias = False If hCCtrl.Parent And If hCCtrl.Parent.Kind = "WebMenu" Then Paint.MoveTo(0, Paint.H - DS) Paint.LineTo(0, 0) Paint.LineTo(Paint.W - 1, 0) Paint.LineTo(Paint.W - 1, Paint.H - DS) Else Paint.MoveTo(0, Paint.H - DS) Paint.LineTo(0, 0) X = Min(Paint.W - 1, X + Paint.TextSize(sText).Width + DS) Paint.LineTo(X, 0) Paint.LineTo(X, Paint.H - DS) Paint.LineTo(Paint.W - 1, Paint.H - DS) Endif Paint.Stroke Paint.AntiAlias = True ' Else ' Paint.Background = Color.SetAlpha(Color.LightForeground, 128) ' Paint.Rectangle(0.5, 0.5, Paint.W - 1, Paint.H - 1) ' Paint.Stroke Endif End Private Sub PaintButton(hCCtrl As CControl) Dim hRect As Rect Dim F As Integer = Style.FrameWidth * 4 Style.PaintButton(0, 0, Paint.W, Paint.H, False,, Not hCCtrl["Border"]) hRect = New Rect(0, 0, Paint.W, Paint.H) 'hRect.Adjust(F) If hCCtrl["Image"] Then CFamily.PaintImage(hCCtrl, ".public", Align.Left, F) Try hRect.Left += CFamily.LastRect.W + F Endif If hCCtrl["Text"] Then Paint.DrawText(hCCtrl["Text"], hRect.X, hRect.Y, hRect.W, hRect.H, Align.Center) End Public Sub DrawControl(hCCtrl As CControl) As Boolean Select hCCtrl.Kind Case "WebMenuItem" PaintMenuItem(hCCtrl) Return Case "WebContainer", "WebHBox", "WebVBox" If Not CFamily.PaintExpand(hCCtrl) Then CFamily.PaintContainer(0, 0, hCCtrl.W, hCCtrl.H) Endif Return Case "WebImage" Return CFamily.PaintImage(hCCtrl, ".public") Case "WebButton", "WebFileButton" PaintButton(hCCtrl) Return Case Else Return True End Select End Public Sub ActionDialog(sAction As String) As Boolean Dim vColor As Variant Dim sFont As String Select Case sAction Case ".text-font" sFont = FWebFontChooser.Run(FProperty.GetProperty("Font")) If Not sFont Then Return True Me.ActionValue = sFont Case Like ".format-*" If FColorChooser.Run(, True) Then Return True vColor = FColorChooser.ColorName If Not IsNull(Val(vColor)) Then vColor = Val(vColor) Me.ActionValue = vColor End Select End Private Sub ToggleFont(hCtrl As CControl, sElt As String) Dim sFont As String Dim aFont As String[] Dim iPos As Integer Try sFont = hCtrl.GetProperty("Font") If Error Then Return aFont = Split(sFont) iPos = aFont.Find(sElt) If iPos >= 0 Then aFont.Remove(iPos) Else aFont.Add(sElt) Endif Try hCtrl.SetProperty("Font", aFont.Join()) End Public Sub ActionExec(hCtrl As CControl, sAction As String) Select Case sAction ' Case Like ".text-*" ' Super.ActionExec(hCtrl, sAction) Case ".text-font" Super.ActionExec(hCtrl, sAction) Case ".text-set-font" Super.ActionExec(hCtrl, sAction) Case ".text-bold" ToggleFont(hCtrl, "bold") Case ".text-italic" ToggleFont(hCtrl, "italic") Case ".text-underline" ToggleFont(hCtrl, "underline") Case ".format-background" If hCtrl.HasProperty("Background") Then hCtrl.SetProperty("Background", Me.ActionValue) Case ".format-foreground" If hCtrl.HasProperty("Foreground") Then hCtrl.SetProperty("Foreground", Me.ActionValue) End Select End Public Sub SelectImage((sPropertyType) As String, sImage As String) As String Return FSelectIcon.Run(sImage, FSelectIcon.SELECT_STOCK + FSelectIcon.SELECT_IMAGE + FSelectIcon.SELECT_SVGIMAGE + FSelectIcon.SELECT_PUBLIC, ["normal", "huge"]) End Static Public Sub InitCoord(hCtrl As CoordBox) hCtrl.Units = ["em", "px", "ex", "mm", "cm", "in", "pt", "pc", "rem", "vw", "vh", "vmin", "vmax"] hCtrl.DefaultUnit = "em" End Public Sub GetFonts() As String[] Return ["sans-serif", "serif", "monospace", "cursive", "fantasy"].Sort() End Public Sub GetStockSizes() As String[] Return ["normal", "big"] End gambas-3.16.3/app/src/gambas3/.src/Family/WebForm/FWebFontChooser.class000066400000000000000000000035121411575327000254030ustar00rootroot00000000000000' Gambas class file Static Private $sFont As String Static Public Sub Run(Optional sFont As String) As String $sFont = sFont If Me.ShowModal() Then Return $sFont End Public Sub btnOK_Click() $sFont = lblFont.Text Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Private Sub SetFont() Dim aFont As New String[] If Trim(cmbFamily.Text) Then aFont.Add(Trim(cmbFamily.Text)) If btnNormal.Value Then aFont.Add("normal") If btnBold.Value Then aFont.Add("bold") If btnItalic.Value Then aFont.Add("italic") If btnUnderline.Value Then aFont.Add("underline") Else If btnStrikeout.Value Then aFont.Add("strikeout") Endif If crdSize.Value Then aFont.Add(crdSize.Value) lblFont.Text = aFont.Join() End Public Sub Form_Open() Dim sElt As String CFamilyWebForm.InitCoord(crdSize) For Each sElt In Split($sFont) sElt = Trim(sElt) If Not sElt Then Continue If IsDigit(Left(sElt)) Then crdSize.Value = sElt Continue Endif Select Case sElt Case "regular" Case "bold" btnBold.Value = True Case "italic" btnItalic.Value = True Case "underline" btnUnderline.Value = True Case "strikeout" btnStrikeout.Value = True Case "normal" btnNormal.Value = True Case Else cmbFamily.Text = sElt End Select Next SetFont End Public Sub btnUnderline_Click() If btnUnderline.Value Then btnStrikeout.Value = False SetFont End Public Sub btnStrikeout_Click() If btnStrikeout.Value Then btnUnderline.Value = False SetFont End Public Sub cmbFamily_Change() SetFont End Public Sub crdSize_Change() SetFont End Public Sub btnNormal_Click() SetFont End Public Sub btnBold_Click() SetFont End Public Sub btnItalic_Click() SetFont End gambas-3.16.3/app/src/gambas3/.src/Family/WebForm/FWebFontChooser.form000066400000000000000000000043161411575327000252440ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,44,21) Text = ("Select font") Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { Panel2 Panel MoveScaled(1,1,42,14) Arrangement = Arrange.Vertical Border = Border.Plain { lblFont Label MoveScaled(0,0,43,2) Expand = True Padding = 4 } { Separator1 Separator MoveScaled(6,3,35,0) } { cmbFamily ComboBox MoveScaled(1,4,24,4) #Translate = False List = ["", "sans-serif", "serif", "monospace", "cursive", "fantasy"] Border = False } { Separator2 Separator MoveScaled(4,9,30,0) } { HBox2 HBox MoveScaled(0,10,41,4) { btnNormal ToolButton MoveScaled(0,0,4,4) #Translate = False Font = Font["+2"] ToolTip = "Normal" Text = "N" Toggle = True } { btnBold ToolButton MoveScaled(4,0,4,4) #Translate = False Font = Font["Bold,+2"] ToolTip = "Bold" Text = "B" Toggle = True } { btnItalic ToolButton MoveScaled(8,0,4,4) #Translate = False Font = Font["Italic,+2"] ToolTip = "Italic" Text = "I" Toggle = True } { btnUnderline ToolButton MoveScaled(12,0,4,4) #Translate = False Font = Font["Underline,+2"] ToolTip = "Underline" Text = "U" Toggle = True } { btnStrikeout ToolButton MoveScaled(16,0,4,4) #Translate = False Font = Font["Strikeout,+2"] ToolTip = "Strikeout" Text = "S" Toggle = True } { Separator3 Separator MoveScaled(20,0,0,4) } { crdSize CoordBox MoveScaled(21,0,19,4) Expand = True Border = False AllowRelative = True AutoConvert = True } } } { HBox1 HBox MoveScaled(1,16,42,4) Spacing = True { Panel1 Panel MoveScaled(1,0,4,4) Expand = True } { btnOK Button MoveScaled(6,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(23,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Family/WebForm/WebformWebMenu.class000066400000000000000000000016201411575327000252700ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Private $hContainer As DrawingArea Private $hHeader As DrawingArea Private $hObs As Observer Public Sub _new() $hHeader = New DrawingArea(Me) As "Header" $hContainer = New DrawingArea(Me) As "Container" Me._Container = $hContainer $hContainer.Arrangement = Arrange.Vertical $hContainer.Spacing = True $hObs = New Observer(Me) As "UserContainer" End Public Sub UserContainer_Arrange() Dim DS As Integer DS = Desktop.Scale $hHeader.Move(0, 0, Me.W, DS * 4) $hContainer.Move(0, DS * 3, Me.W, Me.H - DS * 3) $hHeader.Raise End Public Sub Header_Draw() Dim hForm As FForm hForm = Object.Parent(Me) CFamilyWebForm.PaintMenuItem(hForm.GetControl(Me)) End Public Sub Container_Draw() 'Paint.Background = Color.LightForeground CFamily.PaintContainer(0, -1, Paint.W, Paint.H + 1) 'Paint.Stroke End gambas-3.16.3/app/src/gambas3/.src/Help/000077500000000000000000000000001411575327000174645ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Help/FHelpBrowser.class000066400000000000000000000140511411575327000230560ustar00rootroot00000000000000' Gambas class file 'Property Read {Error} As Boolean Static Private $aLang As String[] = ["en", "fr", "de", "es", "it", "nl", "pl", "pt", "pt_BR", "mk", "sq", "ca", "hu", "tr", "ar", "fa", "vi", "ko", "ja", "ru", "zh", "zh_TW", "eo"] 'Private $bError As Boolean Private $bPrint As Boolean Private mnuLang As Menu Private $bFirstTime As Boolean Public Sub _new() Dim sLang As String Dim hMenu As Menu Dim aLangName As New String[] Dim aLang As String[] Me.Utility = Settings["/UseUtilityWindows", 1] mnuLang = New Menu(Me) As "mnuLang" hMenu = New Menu(mnuLang) As "mnuSelectLanguage" hMenu.Text = ("Default language") For Each sLang In $aLang aLangName.Add(Language.ToName(sLang) & ":" & sLang) Next aLangName.Sort(gb.Language) For Each sLang In aLangName aLang = Split(sLang, ":") hMenu = New Menu(mnuLang) As "mnuSelectLanguage" hMenu.Text = aLang[0] hMenu.Tag = aLang[1] Next btnHome.Menu = "mnuLang" '$hHistory = New CHistory As "History" End Public Sub GetBrowser() As WebView Return webHelp End Public Sub ReadConfig() Project.SetSmallFont(panToolbar) End Public Sub Form_Open() Dim sLang As String Settings.Read(Me) Settings.Read(splHelp) btnShowPanel.Value = Settings["/FHelpBrowser/ShowPanel", False] btnShowPanel_Click ReadConfig sLang = MHelp.GetLanguage(True) If sLang Then btnHome.Text = Language.ToName(sLang) Else btnHome.Text = ("Default language") Endif 'If Not webHelp.Url Then ' webHelp.Url = MHelp.GetURL() & "?help&" & MHelp.GetLanguage() & "&v3" ' webHelp.TextZoom = 0.8 'Endif MHelp.LoadProxyConfig If Not $bFirstTime Then $bFirstTime = True OnProjectChange Endif End Public Sub Form_Close() Settings.Write(Me) Settings.Write(splHelp) Settings["/FHelpBrowser/ShowPanel"] = btnShowPanel.Value End Private Function GetHomeURL() As String 'Debug MHelp.GetURL() & "?help&" & MHelp.GetLanguage() & "&v3" Return MHelp.GetURL() & "?nl&l=" & MHelp.GetLanguage() End Public Sub GotoURL(sUrl As String) webHelp.Url = sUrl '$hHistory.Add(sUrl) End Public Sub GotoHome() GotoURL(GetHomeURL()) End Public Sub btnHome_Click() GotoHome() End Public Sub btnBack_Click() webHelp.Back End Public Sub btnForward_Click() webHelp.Forward End Public Sub btnStop_Click() webHelp.Stop End Public Sub btnReload_Click() webHelp.Reload End Public Sub btnZoomIn_Click() webHelp.ZoomIn End Public Sub btnZoomOut_Click() webHelp.ZoomOut End Public Sub btnZoomNormal_Click() webHelp.ZoomNormal End Public Sub Form_Resize() Dim bVisible As Boolean = Me.Height > Desktop.Scale * 30 And Me.Width > Desktop.Scale * 30 panToolbar.Visible = bVisible 'sepToolbar.Visible = bVisible End Public Sub btnWebSite_Click() GotoURL("http://gambas.sourceforge.net") End ' Private Function Error_Read() As Boolean ' ' Return $bError ' ' End ' Public Sub btnModify_Click() ' ' Dim sUrl As String ' ' sUrl = webHelp.Url ' If Not (sUrl Begins Project.WIKI_URL) Then Return ' ' 'sUrl = Replace(sUrl, "http://gambasdoc.org/help", "http://gambasdoc.org/edit") ' ' Project.OpenWebPage(sUrl) ' ' End Public Sub btnShowPanel_Click() tvwClasses.Visible = btnShowPanel.Value If btnShowPanel.Value Then FillTree 'If splHelp.Layout[0] = 0 Then splHelp.Layout = [1, 2] End ''Fill the TreeView with Project components and classes Private Sub FillTree() Dim hClass As CClassInfo Dim aComp As New String[] Dim aClass As New CClassInfo[] Dim sComponent As String Dim sClass As String tvwClasses.Clear If Project.Path Then tvwClasses.Add("$", Project.Name, Project.GetIcon(Project.Dir, 16)) For Each sClass In Project.GetClasses() tvwClasses.Add("$" &/ sClass, sClass,, "$") Next tvwClasses["$"].Expanded = True Endif For Each hClass In Project.Documentation.Classes If hClass.Component = Null Then sComponent = "gb" Else sComponent = hClass.Component Endif If sComponent = "$" Then Continue If Not aComp.Exist(sComponent) Then aComp.Add(sComponent) aClass.Add(hClass) Next aComp.Sort() aClass.Sort() For Each sComponent In aComp tvwClasses.Add(sComponent, sComponent, Picture["icon:/tiny/component"]) Next For Each hClass In aClass If hClass.Name = "." Then Continue If InStr(hClass.Name, "*") Then Continue If hClass.Component = Null Then sComponent = "gb" Else sComponent = hClass.Component Endif sClass = hClass.Name Try tvwClasses.Add(sComponent &/ sClass, sClass,, sComponent) Next End Public Sub tvwClasses_Select() Dim aKey As String[] Dim sKey As String sKey = tvwClasses.Current.Key If Not sKey Or If sKey = "$" Then Return aKey = Split(sKey, "/") If aKey.Count = 2 Then MHelp.InitWebViewWith(webHelp, MHelp.TYPE_CLASS, aKey[0] &/ aKey[1]) Else If aKey.Count = 1 Then MHelp.InitWebViewWith(webHelp, MHelp.TYPE_COMPONENT, aKey[0]) Endif End Public Sub btnPrint_Click() ' Printer1.OutputFile = "~/print.pdf" ' $bPrint = False ' If Printer1.Configure() Then Return ' webHelp.Current.Print(Printer1) webHelp.ExecJavascript("window.print();") End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then Me.Close End Private Sub SetLang(Optional sLang As String) Dim sUrl As String MHelp.SetLanguage(sLang) sLang = MHelp.GetLanguage() sUrl = webHelp.Url If sUrl Begins Project.WIKI_URL Then sUrl = URL.SetQuery(sUrl, "l", sLang) GotoURL(sUrl) Else If sUrl Begins "file:///" &/ MHelp.GetOfflineDir() Then GotoURL(Project.WIKI_ROOT &/ Wiki.Path & "?l=" & sLang) Endif End Public Sub mnuSelectLanguage_Click() SetLang(Last.Tag) btnHome.Text = Last.Text End Public Sub OnProjectChange() MHelp.Clear If Me.Closed Then Return If btnShowPanel.Value Then FillTree If webHelp.Url <> GetHomeURL() Then btnHome_Click Endif End gambas-3.16.3/app/src/gambas3/.src/Help/FHelpBrowser.form000066400000000000000000000052721411575327000227210ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,99,56) Action = "help" Text = ("Help browser") Icon = Picture["icon:/small/help"] Persistent = True Utility = True Arrangement = Arrange.Vertical { panToolbar HBox MoveScaled(0,0,97,4) { btnShowPanel ToolButton MoveScaled(1,0,4,4) Tracking = True ToolTip = ("Show help tree") Picture = Picture["icon:/small/view-split-h"] Toggle = True } { btnHome MenuButton MoveScaled(5,0,11,4) ToolTip = ("Index") AutoResize = True Picture = Picture["icon:/small/home"] Border = False } { Separator3 Separator MoveScaled(17,0,1,4) } { btnBack ToolButton MoveScaled(21,0,4,4) ToolTip = ("Go back") Picture = Picture["icon:/small/left"] } { btnForward ToolButton MoveScaled(25,0,4,4) ToolTip = ("Go forward") Picture = Picture["icon:/small/right"] } { btnStop ToolButton MoveScaled(29,0,4,4) ToolTip = ("Cancel") Picture = Picture["icon:/small/delete"] } { btnReload ToolButton MoveScaled(33,0,4,4) ToolTip = ("Reload") Picture = Picture["icon:/small/refresh"] } { Separator1 Separator MoveScaled(37,0,1,4) } { btnZoomIn ToolButton MoveScaled(38,0,4,4) ToolTip = ("Zoom in") Picture = Picture["icon:/small/zoom-in"] } { btnZoomOut ToolButton MoveScaled(42,0,4,4) ToolTip = ("Zoom out") Picture = Picture["icon:/small/zoom-out"] } { btnZoomNormal ToolButton MoveScaled(46,0,4,4) ToolTip = ("No zoom") Picture = Picture["icon:/small/zoom-normal"] } { Separator2 Separator MoveScaled(51,0,1,4) } { btnWebSite ToolButton MoveScaled(52,0,31,4) #Translate = False ToolTip = "Gambas web site" AutoResize = True Text = "Gambas web site" Picture = Picture["icon:/small/gambas"] } { btnPrint ToolButton MoveScaled(84,0,8,4) Visible = False AutoResize = True Text = ("Print") Picture = Picture["icon:/small/print"] } } { Separator4 Separator MoveScaled(26,8,28,0) } { Panel1 Panel MoveScaled(4,16,84,33) Expand = True Arrangement = Arrange.Fill { splHelp HSplit MoveScaled(2,2,80,29) { tvwClasses TreeView MoveScaled(9,1,16,22) Visible = False Expand = True Border = False } { !webHelp HelpView MoveScaled(29,1,28,16) #Public = True } } } { Printer1 #Printer #MoveScaled(90,13) } } # Gambas Action File 3.0 { Actions { Action help Text = "Help browser" Picture = "icon:/small/help" } } gambas-3.16.3/app/src/gambas3/.src/Help/FHelpShortcut.class000066400000000000000000000013631411575327000232500ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() tabShortcut_Click Settings.Read(Me) End Public Sub tabShortcut_Click() Dim sURL As String Select Case tabShortcut.Index Case 0 sURL = "project-shortcuts" Case 1 sURL = "shortcuts" Case 2 sURL = "debugger-shortcuts" Case 3 sURL = "translate-shortcuts" Default sURL = "project-shortcuts" End Select webShortcut.URL = Project.WIKI_ROOT &/ "ide" &/ sURL & "?v&nh&nt&l=" & MHelp.GetLanguage() End Public Sub Form_Arrange() webShortcut.Raise webShortcut.Move(tabShortcut.X + tabShortcut.ClientX, tabShortcut.Y + tabShortcut.ClientY, tabShortcut.ClientW, tabShortcut.ClientH) End Public Sub Form_Close() Settings.Write(Me) End gambas-3.16.3/app/src/gambas3/.src/Help/FHelpShortcut.form000066400000000000000000000012751411575327000231100ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,80,66) Action = "help-shortcut" Text = ("IDE keyboard shortcuts") Icon = Picture["icon:/small/shortcut"] Persistent = True Utility = True Arrangement = Arrange.Fill Margin = True { tabShortcut TabPanel MoveScaled(1,1,48,44) Count = 4 Index = 0 Text = ("Project") Index = 1 Text = ("Editor") Index = 2 Text = ("Debugger") Index = 3 Text = ("Translation") Index = 0 } { webShortcut HelpView MoveScaled(24,28,34,28) NoHeader = True } } # Gambas Action File 3.0 { Actions { Action help-shortcut Text = "IDE keyboard shortcuts" Picture = "icon:/small/shortcut" } } gambas-3.16.3/app/src/gambas3/.src/Help/FTips.class000066400000000000000000000073251411575327000215470ustar00rootroot00000000000000' Gambas class file Static Private $aOrder As New String[] Static Private $iTip As Integer Static Public Sub _init() Dim hFic As File Dim sLig As String hFic = Open "tips/tips.en.txt" While Not Eof(hFic) Line Input #hFic, sLig If Left$(sLig) = "[" Then $aOrder.Add(Mid$(Trim$(sLig), 2, -1)) Endif Wend End Public Sub Form_Open() txtTip.Background = Me.Background $iTip = Settings["/LastTip", 0] chkShowTip.Value = Settings["/ShowTipOnStartup", True] ShowNextTip End Private Sub ShowNextTip(Optional bPrev As Boolean) txtTip.Text = GetNextTip(bPrev) lblTitle.Text = Subst(("Tip of the day #&1"), CStr($iTip)) End Private Function GetNextTip(Optional bPrev As Boolean) As String Dim sTip As String Dim sFile As String Dim sLang As String Dim iPos As Integer Dim iPos2 As Integer If bPrev Then Dec $iTip If $iTip < 1 Then $iTip = 1 Else If $iTip >= $aOrder.Count Then $iTip = 1 Else Inc $iTip Endif Endif sLang = System.Language iPos = RInStr(sLang, ".") If iPos Then sLang = Left(sLang, iPos - 1) sFile = "tips/tips." & sLang & ".txt" If Not Exist(sFile) Then iPos = InStr(sLang, "_") If iPos Then sLang = Left$(sLang, iPos - 1) sFile = "tips/tips." & sLang Endif Endif If Not Exist(sFile) Then sFile = "tips/tips.en.txt" Endif sTip = File.Load(sFile) iPos = InStr(sTip, "[" & $aOrder[$iTip - 1] & "]") If iPos = 0 Then sTip = File.Load("tips/tips.en.txt") Endif iPos = InStr(sTip, "[" & $aOrder[$iTip - 1] & "]") If iPos = 0 Then Return iPos = InStr(sTip, "\n", iPos) If iPos = 0 Then Return Inc iPos iPos2 = InStr(sTip, "\n[", iPos) If iPos2 = 0 Then iPos2 = Len(sTip) + 1 Return Mid$(sTip, iPos, iPos2 - iPos) Catch Message.Error(("Unable to read tip of the day !") & "\n\n" & Error.Text) End Public Sub chkShowTip_Click() Settings["/ShowTipOnStartup"] = chkShowTip.Value End Public Sub btnNext_Click() ShowNextTip End ' PUBLIC SUB Form_Resize() ' ' lblTitle.Width = Max(ME.ClientWidth, 512) ' panBottom.Y = ME.ClientH - panBottom.Height - 8 ' panBottom.W = Max(256, ME.ClientW - 16) ' btnClose.X = panBottom.W - btnClose.W ' btnNext.X = btnClose.X - btnNext.W - 8 ' btnPrev.X = btnNext.X - btnPrev.W - 8 ' chkShowTip.W = btnPrev.X - chkShowTip.X - 8 ' ' txtTip.Resize(ME.ClientWidth - txtTip.X * 2, ME.ClientH - panBottom.H - txtTip.Y - 8) ' ' ' 'imgCorner.Move(ME.ClientW - imgCorner.W,ME.ClientH - imgCorner.H) ' ' END Public Sub btnClose_Click() Settings["/LastTip"] = $iTip Me.Close End Public Sub btnPrev_Click() ShowNextTip(True) End Private Sub PaintRoundedRect(X As Integer, Y As Integer, W As Integer, H As Integer, R As Float) Dim fArcToBezier As Float = 0.55228475 Dim fRadiusX, fRadiusY, c1, c2 As Float fRadiusX = R fRadiusY = R If fRadiusX > W - fRadiusX Then fRadiusX = W / 2 If fRadiusY > H - fRadiusY Then fRadiusY = H / 2 '#approximate(quite Close )the arc using a bezier curve c1 = fArcToBezier * fRadiusX c2 = fArcToBezier * fRadiusY Paint.NewPath() Paint.MoveTo(x + fRadiusX, y) Paint.RelLineTo(w - 2 * fRadiusX, 0.0) Paint.RelCurveTo(c1, 0.0, fRadiusX, c2, fRadiusX, fRadiusY) Paint.RelLineTo(0, h - 2 * fRadiusY) Paint.RelCurveTo(0.0, c2, c1 - fRadiusX, fRadiusY, -fRadiusX, fRadiusY) Paint.RelLineTo(-w + 2 * fRadiusX, 0) Paint.RelCurveTo(-c1, 0, -fRadiusX, -c2, -fRadiusX, -fRadiusY) Paint.RelLineTo(0, -h + 2 * fRadiusY) Paint.RelCurveTo(0.0, -c2, fRadiusX - c1, -fRadiusY, fRadiusX, -fRadiusY) Paint.ClosePath() End Public Sub dwgBackground_Draw() Paint.Brush = Paint.Color(Color.LightBackground) PaintRoundedRect(0, 0, dwgBackground.W, dwgBackground.H, Paint.H / 2) Paint.Fill End gambas-3.16.3/app/src/gambas3/.src/Help/FTips.form000066400000000000000000000033201411575327000213740ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,87,76.375) Background = Color.TextBackground Action = "tips" Text = ("Tips of the day") Icon = Picture["icon:/small/lamp"] Persistent = True Utility = True Arrangement = Arrange.Vertical Spacing = True Margin = True { dwgBackground DrawingArea MoveScaled(1,2,80,6) Arrangement = Arrange.Horizontal Indent = True { PictureBox1 PictureBox MoveScaled(0,0,5,5) Picture = Picture["icon:/24/lamp"] Alignment = Align.Center } { lblTitle Label MoveScaled(9,1,54,5) Font = Font["Bold,+3"] Foreground = Color.SelectedForeground Expand = True Text = ("Tips of the day") } } { ScrollView1 ScrollView MoveScaled(5,23,71,42) Expand = True Arrangement = Arrange.Vertical Border = False ScrollBar = Scroll.Vertical { txtTip TextLabel MoveScaled(2,2,48,24) Padding = 4 AutoResize = True } } { panBottom Panel MoveScaled(2,66,76,4) Arrangement = Arrange.Horizontal AutoResize = True Spacing = True { chkShowTip CheckBox MoveScaled(0,0,31,4) Expand = True Text = ("Show tips on startup") } { btnPrev Button MoveScaled(32,0,14,4) Text = Shortcut(("Previous"), "P") Picture = Picture["icon:/small/rewind"] } { btnNext Button MoveScaled(47,0,14,4) Text = Shortcut(("Next"), "N") Picture = Picture["icon:/small/forward"] } { btnClose Button MoveScaled(62,0,14,4) Text = ("Close") Default = True Cancel = True } } } # Gambas Action File 3.0 { Actions { Action tips Text = "Tips of the day" Picture = "icon:/small/lamp" } } gambas-3.16.3/app/src/gambas3/.src/Help/HelpView.class000066400000000000000000000115571411575327000222470ustar00rootroot00000000000000' Gambas class file Export Public Const _Properties As String = "*,NoHeader" Public Const _DrawWith As String = "WebView" Inherits WebView Event Ready Event Resize Property NoHeader As Boolean Use $bNoHeader Property NoMenu As Boolean Use $bNoMenu Private $hObs As Observer Private $hWatcher As Watcher Private $hSpinner As Spinner Private $sNextUrl As String Private $hNotExist As Label Private $hTimerNotExist As Timer Public Sub _new() $hObs = New Observer(Me) As "WebView" $hWatcher = New Watcher(Me) As "Watcher" $hSpinner = New Spinner(Me.Window) $hSpinner.Hide $hSpinner.Ignore = True $hSpinner.ResizeScaled(8, 8) $hSpinner.Type = Spinner.Circle $hNotExist = New Label(Me.Window) As "lblNotExist" $hNotExist.Hide $hNotExist.Ignore = True $hNotExist.Alignment = Align.Center $hNotExist.ResizeScaled(20, 3) $hNotExist.Text = " " & ("This page does not exist.") & " " $hNotExist.AutoResize = True $hNotExist.Font.Bold = True '$hNotExist.Border = Border.Plain $hNotExist.Background = Color.SetAlpha(Color.TooltipBackground, 64) $hNotExist.Foreground = Color.TooltipForeground End Private Sub ShowWaiting(bShow As Boolean) If $hSpinner.Visible = bShow Then Return If bShow Then $hSpinner.Show Watcher_Move $hSpinner.Raise $hSpinner.Start Else $hSpinner.Stop $hSpinner.Hide Endif End ' Public Sub WebView_Error() ' ' Dim sLastUrl As String ' ' ShowWaiting(False) ' ' If Not $sLastUrl Then ' sLastUrl = Me.Url ' Else ' sLastUrl = $sLastUrl ' $sLastUrl = "" ' Endif ' ' If sLastUrl Begins "/" Then sLastUrl = Project.WIKI_ROOT &/ sLastUrl ' ' If sLastUrl Begins "gambas://" Then ' ' Me.Stop ' MHelp.ManageSpecialLink(Me, sLastUrl) ' Return ' ' Else If sLastUrl Begins "wiki://" Then ' ' MHelp.MakeOffline(Me, sLastUrl, $bNoHeader) ' Return ' ' Endif ' ' End Public Sub Watcher_Move() Dim hWin As Window If Not $hSpinner Then Return With Me hWin = $hSpinner.Window $hSpinner.Move(.ScreenX - hWin.ScreenX - hWin.ClientX + (.W - $hSpinner.W) \ 2, .ScreenY - hWin.ScreenY - hWin.ClientY + (.H - $hSpinner.H) \ 2) End With $hNotExist.Hide End Public Sub Watcher_Resize() Watcher_Move Raise Resize End Public Sub WebView_NewView() Project.OpenWebPage(Me.Link) End Private Sub HandleSpecialURL() Dim hWin As Window 'Debug $sNextUrl If $sNextUrl Begins "gambas://" Then MHelp.ManageSpecialLink(Me, $sNextUrl) Else If $sNextUrl Begins "wiki://" Then If MHelp.MakeOffline(Me, $sNextUrl, $bNoHeader) Then hWin = Me.Window $hNotExist.Move(Me.ScreenX - hWin.ScreenX + Desktop.Scale, Me.ScreenY - hWin.ScreenY + Me.Height - $hNotExist.H - Desktop.Scale) $hNotExist.Show $hNotExist.Raise If Not $hTimerNotExist Then $hTimerNotExist = New Timer As "TimerNotExist" $hTimerNotExist.Delay = 5000 Endif $hTimerNotExist.Restart Endif Endif $sNextUrl = "" End ' Public Sub WebView_Navigate() ' ' Dim sUrl As String ' Dim hTimer As Timer ' ' sUrl = Me.Link ' Debug sUrl ' ' End ' Public Sub WebView_Link() ' ' Debug Me.Link ' ' End Public Sub WebView_Start() Dim sUrl As String Dim hTimer As Timer sUrl = Me.Link If Not sUrl Then sUrl = Me.Url ShowWaiting(True) $hNotExist.Hide If sUrl Begins "gambas://" Or If sUrl Begins "wiki://" Then $sNextUrl = sUrl 'Me.Stop hTimer = New Timer As "TimerUrl" hTimer.Trigger Stop Event Return Endif ' sLastUrl = Me.Link ' If Not sLastUrl Then sLastUrl = Me.Url ' ' ' If $sLastUrl Then ' ' sLastUrl = $sLastUrl ' ' $sLastUrl = "" ' ' Else ' ' sLastUrl = Me.Url ' ' Endif ' ' If sLastUrl Begins "/" Then sLastUrl = Project.WIKI_ROOT &/ sLastUrl ' ' If sLastUrl Begins "gambas://" Or If sLastUrl Begins "wiki://" Then ' ' $sNextUrl = sLastUrl ' 'Me.Stop ' hTimer = New Timer As "TimerUrl" ' hTimer.Trigger ' ' 'Debug Me;; sLastUrl ' Me.Stop ' ' Endif End Public Sub WebView_Error() ShowWaiting(False) HandleSpecialURL End Public Sub WebView_Finish() ShowWaiting(False) Raise Ready End Public Sub WebView_Progress() $hSpinner.Value = Me.Progress End Public Sub Stop() Super.Stop ShowWaiting(False) End Public Sub lblNotExist_MouseDown() $hNotExist.Hide End Public Sub ZoomIn() Me.Zoom = Round(Me.Zoom * 1.125, -3) End Public Sub ZoomOut() Me.Zoom = Round(Me.Zoom / 1.125, -3) End Public Sub ZoomNormal() Me.Zoom = 1 End Public Sub Clear() Dim fZoom As Float fZoom = Me.Zoom Super.Clear Me.Zoom = fZoom $hNotExist.Hide End Public Sub TimerNotExist_Timer() $hNotExist.Hide $hTimerNotExist = Null Stop Event End gambas-3.16.3/app/src/gambas3/.src/Help/MHelp.module000066400000000000000000000667131411575327000217150ustar00rootroot00000000000000' Gambas module file '' Routines for managing the IDE help system. Public Const TYPE_NATIVE As Integer = 0 Public Const TYPE_CLASS As Integer = 1 Public Const TYPE_CONTROL As Integer = 2 Public Const TYPE_SYMBOL As Integer = 3 Public Const TYPE_EVENT As Integer = 4 Public Const TYPE_KEYWORD As Integer = 5 Public Const TYPE_SPECIAL As Integer = 6 Public Const TYPE_COMPONENT As Integer = 7 Public Const TYPE_FILE As Integer = 8 Public Enum OFFLINE_NO_NETWORK, OFFLINE_NOT_AVAILABLE, OFFLINE_UP_TO_DATE, OFFLINE_NEW_AVAILABLE Public $PopupHelpCache As Collection Private $bInitOffline As Boolean Private $cSubstComponent As New Collection Public Sub _init() Dim sComp As String For Each sComp In ["gb.gui", "gb.gtk", "gb.gtk3", "gb.qt5", "gb.gui.qt"] $cSubstComponent[sComp] = "gb.qt4" Next For Each sComp In ["gb.gui.opengl", "gb.gtk.opengl", "gb.gtk3.opengl", "gb.qt5.opengl"] $cSubstComponent[sComp] = "gb.qt4.opengl" Next For Each sComp In ["gb.qt5.webkit", "gb.gui.qt.webkit"] $cSubstComponent[sComp] = "gb.qt4.webkit" Next For Each sComp In ["gb.qt4.webview", "gb.qt5.webview", "gb.gtk3.webview"] $cSubstComponent[sComp] = "gb.gui.webview" Next End Public Sub ActualComponent(sComp As String) As String If $cSubstComponent.Exist(sComp) Then Return $cSubstComponent[sComp] Else Return sComp Endif End Private Sub GetPath(sPath As String) As String 'sPath = Replace(sPath, "/gb+gui/", "/gb+qt/") 'sPath = Replace(sPath, "/gb+gtk/", "/gb+qt/") Return System.Path &/ "share/gambas" & CStr(System.Version) &/ "help" &/ sPath End Public Sub SetLanguage(sLang As String) Settings["/Help/Language"] = sLang End Public Sub GetLanguage(Optional bReturnVoidIfDefault As Boolean) As String Dim sLang As String Dim iPos As Integer sLang = Settings["/Help/Language"] If sLang Then Return sLang If bReturnVoidIfDefault Then Return sLang = System.Language For iPos = 1 To Len(sLang) If Not IsLower(Mid$(sLang, iPos, 1)) Then Break Next Return Left$(sLang, iPos - 1) End Public Sub Open() Dim sTool As String = FToolBox.GetTool() If sTool Then GotoClass(Project.Documentation.Classes[sTool].Component, sTool) FToolBox.SetTool Else Project.OpenWebPage(GetPath("tree/index.html")) Endif End Private Sub FormatName(sName As String) As String sName = LCase(sName) sName = Replace(sName, "_", "+") sName = Replace(sName, "/.", "/_") sName = Replace(sName, "/+", "/_") sName = Replace(sName, ".", "+") sName = Replace(sName, ":", "+") Return sName End Public Sub GotoSymbol(hSymbol As CSymbolInfo) Dim sLink As String Dim sName As String Dim sComp As String sName = LCase(hSymbol.Name) If Right(sName) = "$" Then sName = Left(sName, -1) If hSymbol.Component = "gb" And If hSymbol.Class = "." Then sLink = "/lang" Else sLink = "/comp" sComp = ActualComponent(hSymbol.Component) sLink &= "/" & sComp If hSymbol.Class <> "." Then sLink &= "/" & LCase(hSymbol.Class) Endif sLink &/= sName '& ".html" 'sLink = FormatName(sLink) If Exist(GetPath(FormatName(sLink)) & ".html") Project.OpenWebPage(GetPath(FormatName(sLink)) & ".html") Else Project.OpenWebPage(Project.WIKI_URL &/ sLink & "?l=" & GetLanguage()) Endif End Public Sub GotoComponent(sComp As String) Dim sLink As String sLink = "/comp" &/ FormatName(sComp) Project.OpenWebPage(GetPath(sLink) & ".html") FHelpBrowser.Main End Public Sub GotoClass(sComp As String, sClass As String) Dim sLink As String sLink = "/comp" &/ FormatName(sComp) &/ FormatName(sClass) Project.OpenWebPage(GetPath(sLink) & ".html") End Public Function GotoKeyword(sName As String, Optional sName2 As String) As Boolean Dim sPath As String If sName2 Then If Not GotoKeyword(sName2) Then Return Endif If Right(sName) = "$" Then sName = Left$(sName, -1) sPath = GetPath("/lang" &/ LCase(sName)) & ".html" If Not Exist(sPath) Then Return True Project.OpenWebPage(sPath) Catch Return True End Public Function GotoDatatype(sName As String) As Boolean Dim sPath As String sPath = GetPath("/lang/type" &/ LCase(sName)) & ".html" If Not Exist(sPath) Then Return True Project.OpenWebPage(sPath) Catch Return True End Public Function GetSymbolHelpPath(hSymbol As CSymbolInfo) As String Dim sLink As String Dim sName As String Dim Result As String Dim sComp As String sName = LCase(hSymbol.Name) If hSymbol.Component = "gb" And If hSymbol.Class = "." Then sLink = "/lang" Else sLink = "/comp" sComp = hSymbol.Component If sComp = "gb.qt5" Or If sComp = "gb.gtk" Or If sComp = "gb.gui" Then sComp = "gb.qt4" sLink &= "/" & sComp If hSymbol.Class <> "." Then sLink &= "/" & LCase(hSymbol.Class) Endif sLink &/= sName sLink = FormatName(sLink) Result = GetPath(sLink) & ".html" If Not Exist(Result) Then If hSymbol.Kind Then 'Try looking for the property in the object that this object inherits from hSymbol.Class = hSymbol.Kind hSymbol.Kind = "" Result = GetSymbolHelpPath(hsymbol) If Not Exist(Result) Then 'Try looking for the property in the Control object hSymbol.Class = "Control" Result = GetSymbolHelpPath(hsymbol) Endif Endif Endif Result = LCase(Result) Return Result End Public Function GetSymbolHelpText(SymbolHelpPath As String) As String Dim HelpText As String 'Check cache If Not $PopupHelpCache Then 'Create cache collection $PopupHelpCache = New Collection(gb.IgnoreCase) Endif If $PopupHelpCache.Exist(SymbolHelpPath) Then Return $PopupHelpCache[SymbolHelpPath] Else 'Get from file HelpText = GetHelpTextFromFile(SymbolHelpPath) If HelpText Then 'Add to cache $PopupHelpCache[SymbolHelpPath] = HelpText Return HelpText Else Return "" Endif Endif End Private Function GetHelpTextFromFile(SymbolHelpPath As String) As String Dim hFileIn As File Dim sInputLine As String Dim bGrabNextLine As Boolean Dim sResult As String Dim iPos As Integer Dim iPos2 As Integer Dim sWord As String bGrabNextLine = False sResult = "" hFileIn = Open SymbolHelpPath For Read Do While Not Eof(hFileIn) Line Input #hFileIn, sInputLine If bGrabNextLine Then ' Remove links Do iPos = InStr(sInputLine, "", iPos) If iPos2 = 0 Then Break sInputLine = Left(sInputLine, iPos - 1) & Mid$(sInputLine, iPos2 + 1) Loop sInputLine = Replace(sInputLine, "", "") For Each sWord In Split(Trim(sInputLine), " \n") sResult &= " " & sWord iPos = InStr(sWord, ".") If iPos > 0 And If iPos = Len(sWord) Then Break Next If iPos > 0 And If iPos = Len(sWord) Then Break Else If Right(RTrim(sInputLine), 6) = "" Then bGrabNextLine = True Endif Endif Loop sResult = Trim(sResult) Finally Try Close hFileIn If Not sResult Then Return "" & ("No help found.") & "" Else Return sResult Endif End Public Sub GetURL(Optional sPath As String) As String Return Project.WIKI_ROOT &/ sPath End Public Sub GetLangURL(sSymbol As String) As String sSymbol = LCase(sSymbol) sSymbol = Replace(sSymbol, "$", "") If Right(sSymbol) = "?" Then sSymbol = "is" & Left(sSymbol, -1) Return GetURL("lang") &/ sSymbol & "?v&nh&l=" & GetLanguage() End Public Sub GetSpecialURL(sSymbol As String) As String Return GetURL("lang") &/ "special" &/ Mid$(sSymbol, 2) & "?v&nh&l=" & GetLanguage() End '' ## Description ## '' Initialize a web browser view with the help on a specific symbol. '' ## Arguments ## '' - *hWebView* is the WebView control to initialize. '' - *iType* is the type of the symbol. '' - *sSymbol* is the symbol. '' - *sClass* is the class if the symbol is a member of this class. '' - *sMore* is a suffix that will be added to the URL of the help page. '' - *hEditor* is the source code editor that the symbol comes from. '' ## Symbol types ## '' The *iType* argument can be one of the following constants, defined in the MHelp module: '' - `TYPE_NATIVE` for a native datatype. '' - `TYPE_CLASS` for a class. '' - `TYPE_CONTROL` for a control name. '' - `TYPE_SYMBOL` for a class symbol, a local or a global variable. '' - `TYPE_EVENT` for an event. '' - `TYPE_KEYWORD` for a language keyword. '' - `TYPE_SPECIAL` for a special method. Public Sub InitWebViewWith(hWebView As WebView, iType As Integer, sSymbol As String, Optional sClass As String, Optional sMore As String, Optional hEditor As FEditor) Dim hSymbol As CSymbolInfo Dim hClass As CClassInfo Dim hComp As CComponent Dim sUrl As String Dim sHtml As String Dim iPos As Integer Dim sTemp As String Dim bHelpBrowser As Boolean If Not hWebView Then If Not Class.IsLoaded("FHelpBrowser") Or If Not FHelpBrowser.Visible Then Return bHelpBrowser = True hWebView = FHelpBrowser.GetBrowser() Endif If iType = TYPE_NATIVE Then sUrl = MHelp.GetLangURL("type" &/ sSymbol) Else If iType = TYPE_KEYWORD Then sUrl = MHelp.GetLangURL(sSymbol) Else If iType = TYPE_SYMBOL Or If iType = TYPE_EVENT Then If iType = TYPE_EVENT Then iPos = InStr(sSymbol, "_") If iPos Then sSymbol = ":" & Mid$(sSymbol, iPos + 1) Endif Try hSymbol = Project.Documentation.GetClassSymbols(sClass)[sSymbol] If Not hSymbol Then hEditor.GetSymbolType(sSymbol) hSymbol = hEditor.GetLastSymbolDesc() Endif If hSymbol Then Try hComp = Project.Documentation[hSymbol.Component] If Not hSymbol.Component Or If hSymbol.Component = CComponent.PROJECT_NAME Then sHtml = hSymbol.GetHelpHTML() sUrl = "-" & sClass & "-" & sSymbol Else If hComp And If Not hComp.Library And If Not hComp.ThirdParty Then sUrl = hSymbol.GetHelpURL() Else sUrl = hSymbol.Component & "-" & sClass & "-" & sSymbol sHtml = hSymbol.GetHelpHTML() Endif Endif Else If iType = TYPE_CLASS Or If iType = TYPE_CONTROL Then Try hClass = Project.Documentation.Classes[sSymbol] If hClass Then Try hComp = Project.Documentation[hClass.Component] If hClass.Component And If hClass.Component <> CComponent.PROJECT_NAME And If Not hComp.Library And If Not hComp.ThirdParty Then sUrl = hClass.GetHelpURL() Else 'If hClass.Help Then sHtml = hClass.GetHelpHTML() sUrl = hClass.Component & "-" & sSymbol Endif Else sSymbol = File.Name(sSymbol) If Project.GetClasses().Exist(sSymbol) Then Project.Documentation.GetClassSymbols(sSymbol) sHtml = Project.Documentation.GetLastClass().GetHelpHTML() sUrl = "-" & sSymbol Endif Endif Else If iType = TYPE_SPECIAL Then sUrl = MHelp.GetSpecialURL(sSymbol) Else If iType = TYPE_COMPONENT Try hComp = Project.Documentation[sSymbol] If hComp Then If hComp.Library Or If hComp.ThirdParty Then sUrl = sSymbol sHtml = hComp.GetHelpHTML() Else sUrl = hComp.GetHelpURL() Endif Endif Endif If sHtml Then sTemp = File.Dir(Temp$()) &/ "help" Try Mkdir sTemp sTemp &/= Replace(sUrl, "/", "|") & ".html" File.Save(sTemp, sHtml) hWebView.Clear hWebView.Url = "file://" & sTemp Else If sUrl Then If bHelpBrowser Then sUrl = URL.UnsetQuery(sUrl, "v") sUrl = URL.UnsetQuery(sUrl, "nh") Endif sUrl = URL.UnsetQuery(sUrl, "l") sUrl = URL.SetQuery(sUrl, "l", GetLanguage()) sUrl = URL.SetQuery(sUrl, "nl") If sMore Then sUrl &= "&" & sMore If sUrl <> hWebView.Url Then hWebView.Clear hWebView.Url = sUrl Endif Else hWebView.SetHtml("

    " & ("No help found.") & "

    ") Endif End Public Sub InitWebViewWithHtml(hWebView As WebView, sHtml As String) Dim sTemp As String If Not hWebView Then If Not Class.IsLoaded("FHelpBrowser") Or If Not FHelpBrowser.Visible Then Return hWebView = FHelpBrowser.GetBrowser() Endif hWebView.Stop 'hWebView.History.Clear sTemp = File.Dir(Temp$()) &/ "help" Try Mkdir sTemp sTemp &/= "_custom.html" File.Save(sTemp, sHtml) hWebView.Url = "file://" & sTemp End Public Sub LoadHelpBrowser() If Not Class.IsLoaded("FHelpBrowser") Then Inc Application.Busy FHelpBrowser.Load Dec Application.Busy Endif End '' # Description '' '' Initialize the help browser with the help on a specific symbol, and show it automatically. '' '' # Arguments '' '' - *hWebView* is the WebView control to initialize. '' - *iType* is the type of the symbol. '' - *sSymbol* is the symbol. '' - *sClass* is the class if the symbol is a member of this class. '' - *sMore* is a suffix that will be added to the URL of the help page. '' '' # Symbol types '' '' The #iType# argument can be one of the following constants, defined in the MHelp module: '' - `TYPE_NATIVE` for a native datatype. '' - `TYPE_CLASS` for a class. '' - `TYPE_CONTROL` for a control name. '' - `TYPE_SYMBOL` for a class symbol, a local or a global variable. '' - `TYPE_EVENT` for an event. '' - `TYPE_KEYWORD` for a language keyword. '' - `TYPE_SPECIAL` for a special method. '' - `TYPE_COMPONENT` for a component help page. Public Sub ShowHelpBrowserWith(iType As Integer, sSymbol As String, Optional sClass As String, Optional sMore As String) LoadHelpBrowser FHelpBrowser.Show InitWebViewWith(Null, iType, sSymbol, sClass, sMore) End '' +Description '' Return the formated help of the local class if it exists '' +Arguments '' - #sClass# is the class to analyze '' - #sMarkup# is the markup to convert to HTML ' Private Function GetProjectClassHelpHTML(sClass As String, Optional sMarkup As String) As String ' ' Dim sHelp, sHtml, sLine, sWhere, sSymbols, sParSymbols, sInfo As String ' Dim hForm As FEditor ' Dim hEdit As Editor ' Dim i As Integer ' Dim hSymbol As CSymbolInfo ' Dim cClassSymbols As Collection ' Dim hClassInfo, hParentClass As CClassInfo ' Dim aProperty, aEvent, aMethod, aConst, aVar As New String[] ' Dim aParentProperty, aParentEvent, aParentMethod, aParentConst, aParentVar As New String[] ' Dim sComp, sSymbolName As String ' Dim hArray As String[] ' Dim sParent As String ' ' If Not sMarkup Then ' ' hForm = Project.LoadFile(Project.FindPath(sClass)) ' Try hEdit = hForm.GetEditor() ' ' If Not hEdit Then Return ' ' For i = 0 To hEdit.Lines.Count - 1 ' sLine = Trim(hEdit.Lines[i].Text) ' If sLine Begins "''' " Then ' sMarkup &= Trim(Mid$(sLine, 4)) & "\n" ' Else ' If sMarkup Then Break ' If sLine Not Begins "'" Then Break ' Endif ' Next ' ' Endif ' ' sHelp = Markup.Convert(sMarkup) ' ' hClassInfo = CComponent.GetClassDescription(sClass) ' cClassSymbols = CComponent.GetClassSymbols(sClass) ' ' 'If hClassInfo.Name = sClass Then hClassInfo.Name = hClassInfo.Parent ????? Do not modify the class info! ' ' If cClassSymbols.Count > 0 Then ' ' For Each hSymbol In cClassSymbols ' ' sSymbolName = hSymbol.Name ' If Left(sSymbolName) = ":" Then sSymbolName = Mid$(sSymbolName, 2) ' ' sComp = Subst("&2", Html(hSymbol.GetHelpURL()), sSymbolName) ' ' If hSymbol.NotPublic Or If hSymbol.IsHidden() Then Continue ' ' If IsLetter(hSymbol.Kind) And If hSymbol.Kind = UCase(hSymbol.Kind) Then sComp = "" & sComp & "" ' ' If hSymbol.Class = sClass Then ' ' Select Case LCase(hSymbol.Kind) ' Case ":" ' aEvent.Add(sComp) ' Case "m" ' aMethod.Add(sComp) ' Case "p", "r" ' aProperty.Add(sComp) ' Case "c" ' aConst.Add(sComp) ' Case "v" ' aVar.Add(sComp) ' End Select ' ' Else ' ' Select Case LCase(hSymbol.Kind) ' Case ":" ' aParentEvent.Add(sComp) ' Case "m" ' aParentMethod.Add(sComp) ' Case "p", "r" ' aParentProperty.Add(sComp) ' Case "c" ' aParentConst.Add(sComp) ' Case "v" ' aParentVar.Add(sComp) ' End Select ' ' Endif ' ' Next ' ' For Each hArray In [aConst, aEvent, aMethod, aProperty, aVar, aParentConst, aParentEvent, aParentMethod, aParentProperty, aParentVar] ' hArray.Sort ' Next ' ' sParSymbols = "" ' If aParentProperty.Count + aParentMethod.Count + aParentEvent.Count + aParentVar.Count Then ' sParSymbols &= "" ' If aParentProperty.Count Then sParSymbols &= "" & ("Properties") & " " ' If aParentVar.Count Then sParSymbols &= "" & ("Variables") & " " ' If aParentMethod.Count Then sParSymbols &= "" & ("Methods") & " " ' If aParentEvent.Count Then sParSymbols &= "" & ("Events") & " " ' sParSymbols &= "" ' sParSymbols &= "" ' If aParentProperty.Count Then sParSymbols &= "" & aParentProperty.Join(" ") & " " ' If aParentVar.Count Then sParSymbols &= "" & aParentVar.Join(" ") & " " ' If aParentMethod.Count Then sParSymbols &= "" & aParentMethod.Join(" ") & " " ' If aParentEvent.Count Then sParSymbols &= "" & aParentEvent.Join(" ") & " " ' sParSymbols &= "" ' Endif ' ' sSymbols = "" ' If aProperty.Count + aMethod.Count + aEvent.Count + aVar.Count Then ' sSymbols &= "" ' If aProperty.Count Then sSymbols &= "" & ("Properties") & " " ' If aVar.Count Then sSymbols &= "" & ("Variables") & " " ' If aMethod.Count Then sSymbols &= "" & ("Methods") & " " ' If aEvent.Count Then sSymbols &= "" & ("Events") & " " ' sSymbols &= "" ' sSymbols &= "" ' If aProperty.Count Then sSymbols &= "" & aProperty.Join(" ") & " " ' If aVar.Count Then sSymbols &= "" & aVar.Join(" ") & " " ' If aMethod.Count Then sSymbols &= "" & aMethod.Join(" ") & " " ' If aEvent.Count Then sSymbols &= "" & aEvent.Join(" ") & " " ' sSymbols &= "" ' Endif ' ' Endif ' ' If hClassInfo.AutoCreatable Then sInfo = ("This class can be used like an object by creating an hidden instance on demand.
    ") ' If hClassInfo.Creatable Then sInfo &= ("This class is creatable.
    ") ' ' sWhere = "gambas://project/" & sClass & "?showfile" ' ' sHtml = File.Load("help/class-help.html") ' sHtml = Replace(sHtml, "$(class)", sClass) ' sHtml = Replace(sHtml, "$(help)", sHelp) ' ' If sInfo Then ' sHtml = Replace(sHtml, "", sInfo & "
    ") ' Endif ' ' If hClassInfo.Parent Then ' ' sParent = hClassInfo.Parent ' ' hParentClass = CComponent.Classes[hClassInfo.ParentComponent &/ sParent] ' If Not hParentClass Then hParentClass = CComponent.GetClassDescription(sParent) ' ' sHtml = SubstPart(sHtml, "ShowInherits", True) ' sHtml = SubstPart(sHtml, "ShowParConst", aParentConst.Count > 0) ' sHtml = Replace(sHtml, "$(ParConst)", aParentConst.Join(" ")) ' ' sHtml = Replace(sHtml, "$(Inherits)", Subst(("This class inherits &1."), Subst("&2", Html(hParentClass.GetHelpURL()), sParent))) ' sHtml = Replace(sHtml, "$(ParSymbols)", sParSymbols) ' ' Else ' ' sHtml = SubstPart(sHtml, "ShowInherits", False) ' ' Endif ' ' sHtml = SubstPart(sHtml, "ShowConst", aConst.Count > 0) ' sHtml = Replace(sHtml, "$(Const)", aConst.Join(" ")) ' ' sHtml = Replace(sHtml, "$(where)", sWhere) ' sHtml = Replace(sHtml, "$(Symbols)", sSymbols) ' ' sHtml = Replace(sHtml, "''Symbols''", ("Symbols")) ' sHtml = Replace(sHtml, "''Constants''", ("Constants")) ' ' sHtml = Replace(sHtml, "$(hide-title)", "") ' ' Return sHtml ' ' End '' Manage 'the gambas://' links Public Sub ManageSpecialLink(hWebView As WebView, sUrl As String) Dim sClass As String Dim sSymbol As String Dim iLine As Integer Dim iPos As Integer Dim aValues As String[] Dim bShowFile As Boolean Dim sLast As String If InStr(sUrl, "?showfile") Then sUrl = Replace(sUrl, "?showfile", "") bShowFile = True Endif aValues = Split(sUrl, "/") sClass = aValues[3] If sUrl Begins "gambas://" Then sLast = aValues[aValues.Max] iPos = InStr(sLast, "#") If iPos Then Try iLine = CInt(Mid$(sLast, iPos + 1)) aValues[aValues.Max] = Left$(sLast, iPos - 1) sClass = aValues[3] Endif If aValues[2] = "project" Then If bShowFile Then Project.OpenFile(Project.FindPath(sClass), iLine) FMain.Show Else If aValues.Count = 4 Then InitWebViewWith(hWebView, TYPE_CLASS, aValues[3]) Else InitWebViewWith(hWebView, TYPE_SYMBOL, aValues[4], aValues[3]) Endif Endif Else If aValues[2] = "library" Then If aValues.Count = 4 Then InitWebViewWith(hWebView, TYPE_COMPONENT, aValues[3]) Else If aValues.Count = 5 Then InitWebViewWith(hWebView, TYPE_CLASS, aValues[3] &/ aValues[4]) Else If aValues.Count = 6 InitWebViewWith(hWebView, TYPE_SYMBOL, aValues[5], aValues[3] &/ aValues[4]) Endif Endif Else sSymbol = aValues[3] sClass = File.Name(File.Dir(sUrl)) InitWebViewWith(hWebView, TYPE_SYMBOL, sSymbol, sClass) Endif End Public Sub Clear() Try Shell "rm -rf " & Shell$(File.Dir(Temp$()) &/ "help") End Public Sub LoadProxyConfig() Return With WebSettings.Proxy Select Case Settings["/Proxy/Type", 0] Case 0 .Type = WebSettings.DefaultProxy Return Case 1 .Type = WebSettings.NoProxy Return Case 2 .Type = WebSettings.HttpProxy Case 3 .Type = WebSettings.Socks5Proxy End Select .Host = Settings["/Proxy/Host"] .Port = Settings["/Proxy/Port", 0] .User = Settings["/Proxy/User"] If .User Then Try .Password = Desktop.Passwords["/Proxy" &/ .User] End With End Public Sub FindMarkup(hEdit As TextEditor, iLine As Integer) As String Dim I As Integer Dim sHelp As String Dim sLine As String ' Try to find help on the line of the declaration Highlight.Analyze(hEdit[iLine].Text) I = Highlight.Symbols.Max If I >= 1 Then If Highlight.Types[I] = Highlight.Help Then sLine = Trim(Highlight.Symbols[I]) sHelp = Trim(Mid$(sLine, 3)) Endif Endif ' Find help just above If Not sHelp Then For I = iLine - 1 DownTo 0 sLine = Trim(hEdit[I].Text) If sLine Begins "'' " Or If sLine = "''" Then sHelp = RTrim(Mid(sLine, 4)) & "\n" & sHelp Else If sLine Then Break Endif Next Endif Return sHelp End Public Sub ReadConfig() If Settings["/UseOfflineHelp"] Then Project.WIKI_URL = "wiki://" Project.WIKI_ROOT = "wiki://" Else Project.WIKI_URL = "http://gambaswiki.org/" Project.WIKI_ROOT = Project.WIKI_URL &/ "wiki" Endif End Public Sub GetOfflineDir() As String Return Desktop.DataDir &/ "gambas3/wiki" End Public Sub GetOfflinePath(sPath As String) As String Return Desktop.DataDir &/ "gambas3/wiki/data" &/ Wiki.Lang &/ sPath &/ "~page" End Public Sub GetOfflineState() As Integer Dim sTimestamp As String Dim sDir As String Dim sDate As String If Not Desktop.NetworkAvailable Then Return OFFLINE_NO_NETWORK Inc Application.Busy sTimestamp = HttpClient.Download("http://gambaswiki.org/timestamp") Dec Application.Busy sTimestamp = Trim(sTimestamp) If Not sTimestamp Then Return OFFLINE_NOT_AVAILABLE sDir = MHelp.GetOfflineDir() Try sDate = File.Load(sDir &/ "timestamp") If Not sDate Then Try sDate = Format(Stat(File.SetName(sDir, "wiki.tar.bz2")).LastModified, "yyyymmdd") Endif If IsDir(sDir) And If sDate And If sDate >= sTimestamp Then Return OFFLINE_UP_TO_DATE Return OFFLINE_NEW_AVAILABLE End Public Sub MakeOffline(hWebView As WebView, sUrl As String, Optional bNoHeader As Boolean) As Boolean Dim sFile As String Dim sHtml As String Dim hFile As File Dim iPos As Integer Dim iPos2 As Integer Dim sQuery As String Dim sPath As String Wiki.Root = GetOfflineDir() Wiki.InfoDir = CComponent.GetInfoDir() If Not IsDir(Wiki.Root) Then hWebView.SetHtml("

    " & ("Documentation is not available.") & "

    ") Return Endif If Not $bInitOffline Then For Each sFile In ["up.png", "critical.png", "info.png", "tip.png", "vb.png", "warning.png", "error-bg.png"] Try Kill GetOfflineDir() &/ sFile Copy "help/wiki" &/ sFile To GetOfflineDir() &/ sFile Next File.Save(GetOfflineDir() &/ "style.css", Replace(File.Load("help/wiki/style.css"), "<%/%>", GetOfflineDir()) & "\n" & File.Load("help/wiki/style-offline.css")) $bInitOffline = True Endif iPos = InStr(sUrl, "?") If iPos Then sQuery = Mid$(sUrl, iPos + 1) sUrl = Left(sUrl, iPos - 1) Endif Wiki.Lang = GetLanguage() Wiki.Path = "/" &/ Mid$(sUrl, 8) Wiki.AnalyzePath() sPath = GetOfflineDir() &/ "data" &/ Wiki.Lang &/ Wiki.Path &/ "page.html" If Not IsDir(File.Dir(sPath)) Then If Wiki.Class And If Wiki.HasDefaultHelp() Then Mkdir File.Dir(sPath) Endif Endif hFile = Open sPath For Create Output To #hFile sHtml = File.Load("help/wiki/page.html") iPos = 0 Do iPos2 = InStr(sHtml, "$(", iPos + 1) If iPos2 = 0 Then Print Mid$(sHtml, iPos + 1); Break Endif Print Mid$(sHtml, iPos + 1, iPos2 - iPos - 1); iPos = InStr(sHtml, ")", iPos2 + 2) If iPos = 0 Then Break Select Case Mid$(sHtml, iPos2 + 2, iPos - iPos2 - 2) Case "root" Print GetOfflineDir(); Case "parent" Wiki.PrintParent Case "link" Wiki.PrintLink Case "page" Wiki.PrintPage Case "noheader" If bNoHeader Then Print "" Endif End Select Loop Output To Default Close #hFile hWebView.Url = "file://" & URL.Encode(sPath) Catch Output To Default Return True 'hWebView.SetHtml("

    " & ("This page does not exist.") & "

    ") End Public Sub LoadCustom(sPage As String) As String Dim sHtml As String sHtml = File.Load("help" &/ sPage) sHtml = Replace(sHtml, "$(style)", File.Load("help/wiki/style.css") & File.Load("help/wiki/style-custom.css")) Return sHtml End Public Sub OnDocumentationUpdate() $bInitOffline = False End gambas-3.16.3/app/src/gambas3/.src/Help/Markup.module000066400000000000000000000307441411575327000221420ustar00rootroot00000000000000' Gambas module file Public Struct MarkupList sType As String iIndent As Integer End Struct Private $aMarkup As String[] Private $cLink As Collection Private $aIndex As String[] Private Sub GetIndent(sLine As String) As Integer Return Len(sLine) - Len(LTrim(sLine)) End Public Sub Convert(sMarkup As String) As String $aMarkup = New String[] $cLink = New Collection $aIndex = New String[] Return ConvertMarkup(Split(sMarkup, "\n")) End Private Sub ConvertMarkup(aLine As String[]) As String Dim iLine As Integer Dim aResult As String[] Dim sLine As String Dim sText As String Dim I As Integer Dim bCode As Boolean Dim iBlockQuote As Integer Dim sCar As String Dim bInsidePar As Boolean Dim bAddPar As Boolean Dim iIndent, iCurrentIndent As Integer Dim hMarkupList As MarkupList Dim bJustList As Boolean Dim sLink As String Dim iPos As Integer Dim aList As New MarkupList[] aResult = New String[] For iLine = 0 To aLine.Max sLine = LTrim(aLine[iLine]) If Not sLine Then Continue If Left(sLine) <> "[" Then Continue I = InStr(sLine, "]:") If I = 0 Then Continue If I >= 3 Then sLink = Trim(Mid$(sLine, I + 2)) $cLink[Mid$(sLine, 2, I - 2)] = sLink If Left(sLink) = "#" Then iPos = InStr(sLink, " ") If iPos Then sLink = Left(sLink, iPos - 1) aLine[iLine] = "" Continue Endif Endif aLine[iLine] = "" Next For iLine = 0 To aLine.Max sLine = aLine[iLine] If $aMarkup.Count Then aResult.Add(ConvertLine(sLine)) Continue Endif sLine = RTrim(sLine) ' Special command If Left(sLine, 2) = "@{" And If Right(sLine) = "}" Then aResult.Add(sLine) Continue Endif ' Blockquote I = 0 Do If Left(sLine) <> ">" Then Break sCar = Mid$(sLine, 2, 1) If sCar <> " " And If sCar <> gb.Tab Then Break Inc I sLine = LTrim(Mid$(sLine, 3)) Loop If I > iBlockQuote Then While I > iBlockQuote aResult.Add("
    ") Inc iBlockQuote Wend Else If I < iBlockQuote Then While I < iBlockQuote aResult.Add("
    ") Dec iBlockQuote Wend Endif ' Lists If Trim(sLine) Then iIndent = GetIndent(sLine) GoSub CLOSE_LIST sLine = Mid$(sLine, iCurrentIndent + 1) ' Horizontal lines If Left(sLine) = "*" And If Right(sLine) = "*" Then sText = Replace(sLine, " ", "") If Len(sText) >= 3 And If sText = String$(Len(sText), "*") Then GoSub CLOSE_PARA aResult.Add("
    ") Continue Endif Endif If Left(sLine) = "-" And If Right(sLine) = "-" Then sText = Replace(sLine, " ", "") If Len(sText) >= 3 And If sText = String$(Len(sText), "-") Then GoSub CLOSE_PARA aResult.Add("
    ") Continue Endif Endif If sLine Begins "* " Or If sLine Begins "+ " Or If sLine Begins "- " Then hMarkupList = New MarkupList hMarkupList.sType = "ul" hMarkupList.iIndent = iIndent + 1 + GetIndent(Mid$(sLine, 2)) aList.Add(hMarkupList) bJustList = True If aResult.Count And If Trim(aResult[aResult.Max]) = "" Then If Not Trim(aLine[iLine - 1]) And If iLine < aLine.Max And If GetIndent(aLine[iLine + 1]) >= hMarkupList.iIndent Then bJustList = False Endif aResult.Remove(aResult.Max) Else GoSub CLOSE_PARA aResult.Add(Space$(iCurrentIndent) & "
      ") Endif iCurrentIndent = hMarkupList.iIndent aResult.Add(Space$(iCurrentIndent) & "
    • ") sLine = Mid$(sLine, 3) Endif Endif ' Blockquote again! I = iBlockQuote Do If Left(sLine) <> ">" Then Break sCar = Mid$(sLine, 2, 1) If sCar <> " " And If sCar <> gb.Tab Then Break Inc I sLine = LTrim(Mid$(sLine, 3)) Loop If I > iBlockQuote Then While I > iBlockQuote aResult.Add("
      ") Inc iBlockQuote Wend Else If I < iBlockQuote Then While I < iBlockQuote aResult.Add("
      ") Dec iBlockQuote Wend Endif If sLine Begins "==" And If sLine = String$(Len(sLine), "=") Then sLine = aResult[aResult.Max] If sLine Not Begins "" Then sLine = Mid$(sLine, 4) bInsidePar = False Endif GoSub CLOSE_PARA aResult[aResult.Max] = "

      " & sLine & "

      " Endif Continue Endif If sLine Begins "--" And If sLine = String$(Len(sLine), "-") Then sLine = Trim(aResult[aResult.Max]) If sLine Then If sLine Not Begins "" Then sLine = Mid$(sLine, 4) bInsidePar = False Endif GoSub CLOSE_PARA aResult[aResult.Max] = "

      " & sLine & "

      " Endif Continue Endif Endif ' Code If sLine Begins " " Or If sLine Begins gb.Tab Then If Left(sLine) = gb.Tab Then sLine = Mid$(sLine, 2) Else sLine = Mid$(sLine, 5) Endif sLine = Html$(sLine) If Not bCode Then bCode = True sLine = "
      " & sLine
            Endif
            aResult.Add(sLine)
            Continue
            
          Endif
          
          GoSub CLOSE_CODE
        
          ' Title
          
          If Left(sLine) = "#" Then
            I = InStr(sLine, " ")
            If I <= 7 Then
              Dec I
              If Left(sLine, I) = String$(I, "#") Then
                sLine = Mid$(sLine, I + 2)
                While sLine Ends "#"
                  sLine = Left(sLine, -1)
                Wend
                sLine = RTrim(sLine)
                If Left(sLine) = "[" And If Right(sLine) = "]" Then
                  sLine = ConvertLine(Mid$(sLine, 2, -1))
                  $aIndex.Add(String$(I - 1, "  ") & "- [" & sLine & "] (#t" & CStr($aIndex.Count + 1) & ")")
                  sLine = "" & "" & sLine & ""
                Else
                  sLine = "" & ConvertLine(sLine) & ""
                Endif
                GoSub CLOSE_PARA
                aResult.Add(sLine)
                Continue
              Endif
            Endif
          Endif
            
          If Trim(sLine) Then
            If Not bInsidePar And If LTrim(sLine) Not Begins "" & LTrim(sLine)
            bInsidePar = True
            bAddPar = False
          Endif
          
          aResult.Add(sLine)
          
        Next
        
        GoSub CLOSE_CODE
        GoSub CLOSE_BLOCKQUOTE
        iIndent = 0
        GoSub CLOSE_LIST
        'If $aMarkup.Count Then Error.Raise("Missing markup: " & $aMarkup[$aMarkup.Max])
        
        If $aIndex.Count Then
          iPos = aResult.Find("@{index}")
          If iPos >= 0 Then 
            iIndent = GetIndent($aIndex[0])
            For I = 1 To $aIndex.Max
              iIndent = Min(iIndent, GetIndent($aIndex[I]))
            Next
            If iIndent Then
              For I = 0 To $aIndex.Max
                $aIndex[I] = Mid$($aIndex[I], iIndent + 1)
              Next
            Endif
            aResult[iPos] = ConvertMarkup($aIndex)
          Endif
        Endif
        
        Return aResult.Join("\n")
        
      CLOSE_CODE:
      
        If bCode Then
          aResult.Add("
      ") bCode = False Endif Return CLOSE_BLOCKQUOTE: While iBlockQuote aResult.Add("") Dec iBlockQuote Wend Return CLOSE_LIST: While iIndent < iCurrentIndent GoSub CLOSE_PARA GoSub CLOSE_CODE aResult.Add(Space$(iCurrentIndent) & "
    • ") bJustList = False aResult.Add(Space$(aList[aList.Max].iIndent) & "") aList.Remove(aList.Max) If aList.Count Then iCurrentIndent = aList[aList.Max].iIndent Else iCurrentIndent = 0 Endif Wend Return CLOSE_PARA: If bInsidePar Then aResult[aResult.Max] &= "

      " 'aResult.Add("") bInsidePar = False Else If iLine > 0 And If aResult[aResult.Max] Then 'aResult.Add("") Endif Return 'Catch ' Error.Raise("Line " & CStr(iLine + 1) & ": " & Error.Text) End Private Sub ConvertLine(sLine As String) As String Dim sResult As String Dim I As Integer Dim sCar As String Dim I1, I2 As Integer Dim sPattern As String Dim bCode, bCodeExit As Boolean Dim bEmph As Boolean Dim bStrong As Boolean Dim sText, sTitle, sLink As String MAIN_LOOP: If I >= Len(sLine) Then If bEmph Then sResult &= "" Else If bStrong Then sResult &= "" Endif Return sResult Endif GoSub NEXT_CAR If sCar = "\\" Then If I = Len(sLine) Then sResult &= "
      " Else GoSub NEXT_CAR sResult &= sCar Endif Goto MAIN_LOOP Endif If sCar = "<" Then Goto ENTER_MARKUP If $aMarkup.Count = 0 Then If sCar = "&" Then Goto ENTER_AMPERSAND If sCar = "`" Then Goto ENTER_CODE If sCar = "[" Then Goto ENTER_LINK Endif If sCar = "*" Then Goto ENTER_STAR If sCar = ">" Then sCar = ">" Endif sResult &= sCar Goto MAIN_LOOP NEXT_CAR: Inc I If I > Len(sLine) Then Error.Raise("Unexpected end of line") sCar = Mid$(sLine, I, 1) Return LOOK_CAR: sCar = Mid$(sLine, I + 1, 1) Return ENTER_MARKUP: I1 = I GoSub NEXT_CAR If sCar <> "/" And If Not IsLetter(sCar) Then sResult &= "<" Dec I Goto MAIN_LOOP Endif Repeat GoSub NEXT_CAR Until sCar = ">" sPattern = Mid$(sLine, I1 + 1, I - I1 - 1) 'sPattern = LCase(sPattern) If Left(sPattern) = "/" Then If $aMarkup.Count = 0 Or If LCase($aMarkup[$aMarkup.Max]) <> LCase(Mid$(sPattern, 2)) Then Error.Raise("Mismatched markup: " & sPattern) Endif sResult &= "<" & sPattern & ">" $aMarkup.Remove($aMarkup.Max) Else sResult &= "<" & sPattern & ">" I1 = InStr(sPattern, " ") If I1 Then sPattern = Left(sPattern, I1 - 1) $aMarkup.Add(sPattern) Endif Goto MAIN_LOOP ENTER_AMPERSAND: For I1 = I To I + 6 sCar = Mid$(sLine, I1, 1) If sCar = ";" Then sResult &= Mid$(sLine, I, I1 - I + 1) I = I1 Goto MAIN_LOOP Else If sCar = "\n" Then Break Endif Next sResult &= "&" Goto MAIN_LOOP ENTER_CODE: sResult &= "" I1 = 1 bCode = False bCodeExit = False Do GoSub NEXT_CAR If sCar = "`" Then If Not bCode Then Inc I1 Continue Else If Mid$(sLine, I, I1) = String$(I1, "`") Then sResult &= "" I += I1 - 1 Break Endif Endif Endif sResult &= Html(sCar) bCode = True Loop Goto MAIN_LOOP ENTER_STAR: GoSub LOOK_CAR If sCar = "*" Then Inc I Goto ENTER_STRONG Endif If bEmph Then sResult &= "" bEmph = False Else If Not bStrong Then sResult &= "" bEmph = True Else sResult &= "*" Endif Goto MAIN_LOOP ENTER_STRONG: If bStrong Then sResult &= "" bStrong = False Else If Not bEmph Then sResult &= "" bStrong = True Else sResult &= "**" Endif Goto MAIN_LOOP ENTER_LINK: I1 = InStr(sLine, "]", I + 1) If I1 = 0 Then I = Len(sLine) Goto MAIN_LOOP Else If I1 = (I + 1) Then sResult &= "[]" Inc I Goto MAIN_LOOP Endif sText = Mid$(sLine, I + 1, I1 - I - 1) I = I1 I2 = I Do GoSub LOOK_CAR If Not sCar Then Break Inc I If Asc(sCar) > 32 Then Break Loop If sCar = "(" Then I1 = InStr(sLine, ")", I + 1) If I1 > 0 Then sLink = Mid$(sLine, I + 1, I1 - I - 1) I = I1 Endif Else If sCar = "[" Then I1 = InStr(sLine, "]", I + 1) If I1 > 0 Then sLink = $cLink[Mid$(sLine, I + 1, I1 - I - 1)] I = I1 Endif Else I = I2 Endif If sLink Then I1 = InStr(sLink, Chr$(34)) If I1 And If Right(sLink) = Chr$(34) Then sTitle = Mid$(sLink, I1 + 1, -1) sLink = Trim(Left$(sLink, I1 - 1)) Else sTitle = "" sLink = Trim$(sLink) Endif sResult &= "" Endif Goto MAIN_LOOP End gambas-3.16.3/app/src/gambas3/.src/Help/Wiki/000077500000000000000000000000001411575327000203675ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Help/Wiki/URL.class000066400000000000000000000036551411575327000220710ustar00rootroot00000000000000' Gambas class file Static Public Sub Encode(Path As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(Path) sCar = Mid$(Path, iInd, 1) If sCar = " " Then sCar = "+" Else If IsLetter(sCar) Or If IsDigit(sCar) Or If InStr("-._~,$!/[]", sCar) Then Else sCar = "%" & Hex$(Asc(sCar), 2) Endif sRes &= sCar Next Return sRes End Static Public Sub Decode(Path As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(Path) sCar = Mid$(Path, iInd, 1) If sCar = "%" Then sCar = Chr$(Val("&H" & Mid$(Path, iInd + 1, 2))) iInd += 2 Else If sCar = "+" Then sCar = " " Endif sRes &= sCar Next Return sRes End Static Private Sub HandleQuery(URL As String, bClear As Boolean, Field As String, Value As String) As String Dim I, iPos As Integer Dim sElt As String Dim aQuery As String[] iPos = InStr(URL, "?") If iPos = 0 Then If bClear Then Return URL Else Return URL & "?" & Encode(Field) & "=" & Encode(Value) Endif Endif aQuery = Split(Mid$(URL, iPos + 1), "&") URL = Left$(URL, iPos - 1) Field = Encode(Field) Value = Encode(Value) For I = 0 To aQuery.Max sElt = aQuery[I] If sElt = Field Or If sElt Begins Field & "=" Then aQuery.Remove(I) Break Endif Next If Not bClear Then If Value Then aQuery.Add(Field & "=" & Value) Else aQuery.Add(Field) Endif Endif If aQuery.Count Then Return URL & "?" & aQuery.Join("&") Else Return URL Endif End Static Public Sub SetQuery(URL As String, Field As String, Optional Value As String) As String Return HandleQuery(URL, False, Field, Value) End Static Public Sub UnsetQuery(URL As String, Field As String) As String Return HandleQuery(URL, True, Field, "") End gambas-3.16.3/app/src/gambas3/.src/Help/Wiki/Wiki.module000066400000000000000000000602411411575327000225040ustar00rootroot00000000000000' Gambas module file Public Const DEFAULT_LANG As String = "en" Public Languages As String[] = [DEFAULT_LANG, "fr", "de", "es", "it", "nl", "pl", "pt", "pt_BR", "mk", "sq", "ca", "hu", "cs", "tr", "ar", "fa", "id", "vi", "ko", "ja", "ru", "zh", "zh_TW", "eo"] Public SystemLanguages As String[] = ["C", "fr_FR.UTF-8", "de_DE.UTF-8", "es_ES.UTF-8", "it_IT.UTF-8", "nl_NL.UTF-8", "pl_PL.UTF-8", "pt_PT.UTF-8", "pt_BR.UTF-8", "mk_MK.UTF-8", "sq_AL.UTF-8", "ca_ES.UTF-8", "hu_HU.UTF-8", "cs_CZ.UTF-8", "tr_TR.UTF-8", "ar_AE.UTF-8", "fa_IR.UTF-8", "id_ID.UTF-8", "vi_VN.UTF-8", "ko_KR.UTF-8", "ja_JP.UTF-8", "ru_RU.UTF-8", "zh_CN.UTF-8", "zh_TW.UTF-8", "eo.UTF-8"] Public WikiRoot As String = "wiki://" Public Root As String Public InfoDir As String Public Lang As String Public Path As String Public Exist As Boolean Public Edit As Boolean Public (Image) As Boolean Public LinkSuffix As String Public History As Integer Public UserName As String Public (Component) As String Public (Class) As String Public Symbol As String Public Documentation As New CDocumentation("wiki") Private Sub AddLinkSuffix(sReq As String) If LinkSuffix Then LinkSuffix &= "&" Else LinkSuffix = "?" Endif LinkSuffix &= sReq End Public Sub SetLanguage(sLang As String) Dim iLang As Integer Lang = sLang If Not Lang Then Lang = DEFAULT_LANG iLang = Languages.Find(Lang) If iLang >= 0 Then System.Language = SystemLanguages[iLang] Else Lang = DEFAULT_LANG Endif If Lang <> DEFAULT_LANG Then AddLinkSuffix("l=" & sLang) End Public Sub GetPagePath(Optional bSuffix As Boolean) As String Dim sPath As String sPath = Root &/ "data" &/ Lang &/ Path &/ "~page" If bSuffix Then sPath &= "." & Format(Now, "yyyymmddhhnnssuu") & "." & UserName Return sPath End Public Sub GetPagePathFrom(sPath As String, Optional sLang As String) As String If Not sLang Then sLang = Lang Return Root &/ "data" &/ sLang &/ sPath &/ "~page" End Public Sub MakeDir(sDir As String) Dim sPath As String Dim sElt As String For Each sElt In Split(sDir, "/") sPath &/= sElt 'Shell "echo MKDIR: " & Shell$(sPath) & " >> /tmp/session.log" Wait Try Mkdir "/" & sPath Next 'If Not Exist(sDir) Or If Not IsDir(sDir) Then Return True End ' Public Sub Main() ' ' Dim sMsg As String ' Dim aPage As String[] ' Dim sDir As String ' Dim aPath As String[] ' Dim sLang As String ' Dim hUser As CUser ' Dim sData As String ' Dim sPath As String ' ' 'CGI["SCRIPT_NAME"] = "/wiki" ' Fix web server bug ' Root = User.Home &/ "wiki/gambas" ' InfoDir = User.Home &/ "wiki/info" ' If Not Exist(InfoDir) Then InfoDir = "" ' ' ' The url path is directly converted to a relative directory path inside the "data" directory located in the root directory. ' ' The page contents is stored inside a "~page" file located in that directory. ' ' Consequently, no "~" character is allowed in the url path. ' ' Each page modification is archived in a "~page.." file, allowing changes to be undone. ' ' Path = "" 'Request.Path ' If Right(Path) = "/" Then Path = Left(Path, -1) ' ' ' Handle resource files: images, style sheet... ' ' If File.Name(Path) = "style.css" Then ' Response.ContentType = "text/css" ' Response.Begin ' Print Replace(File.Load(".public/style.css"), "<%/%>", Application.Root); ' Response.End ' Return ' Else If Path And If Exist(".public" &/ Path) Then ' Response.SendFile(".public" &/ Path) ' Return ' Endif ' ' If Path = "/~register" Then ' If Request.Exist("cancel") Then ' Response.Redirect(Application.Root) ' Return ' Else If Request.Exist("confirm") Then ' If RegisterUser() Then Return ' Endif ' Register.Render ' If Session.Id And If Session["login"] = "" Then Session.Abandon ' Return ' Endif ' ' If Path = "/~confirm" Then ' Confirm.Render ' Return ' Endif ' ' If Path = "/~stat" Then ' HttpStat.Render ' Return ' Endif ' ' ' Reject pages whose url includes a "~" character. ' ' If InStr(Path, "~") Then ' Response.Status = "404 Not Found" ' Response.Begin ' Print "

      404 Not Found

      " ' Response.End ' Return ' Endif ' ' If Request.Exist("lang") Then ' sLang = Request["lang"] ' If sLang = DEFAULT_LANG Then sLang = "" ' If sLang <> Request["l"] Then ' If sLang Then ' Redirect("l=" & sLang) ' Else ' Redirect ' Endif ' Endif ' Endif ' ' SetLanguage(Request["l"]) ' If Request.Exist("v") Then AddLinkSuffix("v") ' If Request.Exist("nh") Then AddLinkSuffix("nh") ' If Request.Exist("w") Then AddLinkSuffix("w") ' ' If Request.Exist("logout") Then ' ' Session.Abandon ' ' Else If Request.Exist("register") Then ' ' Response.Redirect(Application.Root &/ "~register") ' Return ' ' Else If Request["login"] And If Request["password"] Then ' ' Session.Abandon ' ' For Each hUser In CUser.Load() ' If hUser.Login = Request["login"] And If hUser.Password = Request["password"] And If Not hUser.Confirm Then ' Session["login"] = hUser.Login ' Break ' Endif ' Next ' ' Endif ' ' UserName = Session["login"] ' {Exist} = Wiki.ExistPage(Path) ' Image = IsImage(Path) ' Try History = CInt(Request["h"]) ' ' ' Analyze component path ' If Path Begins "/comp/gb" Then ' ' CComponent.Init ' aPath = Split(Path, "/", "", True) ' Component = aPath[1] ' If aPath.Count >= 3 Then {Class} = aPath[2] ' If aPath.Count >= 4 Then ' Symbol = aPath[3] ' If Left(Symbol) = "." Then Symbol = ":" & Mid$(Symbol, 2) ' Endif ' ' Endif ' ' If Session.Id Then ' ' If Request.Exist("save") Then ' ' If Request.Exist("page") Then ' MakeDir(File.Dir(GetPagePath())) ' LockPage ' sData = Replace(Request["page"], "\r", "") ' sPath = GetPagePath() ' If Not Exist(sPath) Or If sData <> File.Load(sPath) Then ' File.Save(sPath, sData) ' Copy sPath To GetPagePath(True) ' Wiki.Log(Wiki.Path & " (" & Wiki.Lang & ")") ' Endif ' Redirect ' Return ' Else If Request.Exist("file") And If Image Then ' sPath = GetPagePath() ' MakeDir(File.Dir(sPath)) ' LockPage ' Try Kill sPath ' Copy Request.Files["file"] To sPath ' Copy sPath To GetPagePath(True) ' Wiki.Log(Wiki.Path & " (" & Wiki.Lang & ")") ' Redirect ' Return ' Endif ' ' Else If Request.Exist("delete") Then ' ' If {Exist} Then ' sPath = GetPagePath() ' LockPage ' File.Save(sPath, "") ' Copy sPath To GetPagePath(True) ' Wiki.Log("Delete " & Wiki.Path & " (" & Wiki.Lang & ")") ' Endif ' Redirect ' Return ' ' Else If Request.Exist("undo") Then ' ' sPath = GetPagePath() ' sDir = File.Dir(sPath) ' aPage = Dir(sDir, "~page.*").Sort(gb.Descent) ' If aPage.Count >= 2 Then ' LockPage ' Try Kill sDir &/ aPage[0] ' Try Kill sPath ' Try Copy sDir &/ aPage[1] To sPath ' Wiki.Log("Undo " & Wiki.Path & " (" & Wiki.Lang & ")") ' Endif ' Redirect ' Return ' ' Else If Request.Exist("create") Or If Request.Exist("edit") Then ' ' Edit = True ' ' Else If Request.Exist("historic") Then ' ' Redirect("h=1") ' ' Else If Request.Exist("prev") Then ' ' History = Max(0, History + 1) ' Redirect("h=" & CInt(History)) ' ' Else If Request.Exist("next") Then ' ' History = Max(0, History - 1) ' If History Then ' Redirect("h=" & CInt(History)) ' Else ' Redirect ' Endif ' ' Else If Request.Exist("exit") Then ' ' Redirect() ' ' Endif ' ' Endif ' ' If Image Then ' If Not Session.Id Or If Request.Exist("v") Then ' Response.SendFile(GetPagePath(), GetContentTypeFrom(Path)) ' Return ' Endif ' Endif ' ' Wiki.Render ' CComponent.Exit ' ' Catch ' ' sMsg = Error.Where & ": " & Error.Text & "\n" & Error.Backtrace.Join("\n") ' Response.Begin ' Response.ContentType = "text/plain;charset=utf-8" ' Print "
      "; sMsg; "
      " ' Response.End ' ' End Public Sub SolvePath(sPath As String) As String Dim sData As String Do If Not Wiki.ExistPage(sPath) Then Return sPath sData = File.Load(Wiki.GetPagePathFrom(sPath)) If sData Begins "-->" Then sPath = MakeAbsolute(Trim$(Mid$(sData, 4)), sPath) Else Return sPath Endif Loop End Public Sub GetPageTitle(sPath As String) As String Dim sFile As String Dim iPos As Integer Dim bComp As Boolean Dim sRealPath As String sPath = SolvePath(sPath) bComp = sPath Begins "/comp/" If bComp Then If sPath Like "/comp/*/*/?*" Then Return GetSymbolTitle(sPath) If sPath Like "/comp/*/?*" Then Return GetClassTitle(sPath) Endif sRealPath = Root &/ "data" &/ Lang &/ sPath &/ "~page" If Not Exist(sRealPath) Then sRealPath = Root &/ "data" &/ DEFAULT_LANG &/ sPath &/ "~page" If Not Exist(sRealPath) Then Return sFile = LTrim(File.Load(sRealPath)) If sFile Begins "# " Then iPos = InStr(sFile, "\n") If iPos = 0 Then iPos = Len(sFile) + 1 sFile = Trim(Mid$(sFile, 3, iPos - 3)) If Not bComp Then sFile = String.UCaseFirst(sFile) Return sFile Endif End Public Sub IsImage(sPath As String) As Boolean Dim sExt As String sExt = File.Ext(sPath) Return ["png", "jpg", "jpeg", "gif"].Exist(sExt) End ' Private Sub GetContentTypeFrom(sPath As String) As String ' ' Select Case Lower(File.Ext(sPath)) ' Case "css" ' Return "text/css" ' Case "jpg", "jpeg", "jpe", "thumb" ' Return "image/jpeg" ' Case "png" ' Return "image/png" ' Case "gif" ' Return "image/gif" ' Case "tiff", "tif" ' Return "image/tiff" ' Case "odt" ' Return "application/vnd.oasis.opendocument.text" ' Case "doc" ' Return "application/msword" ' Case "ods" ' Return "application/vnd.oasis.opendocument.spreadsheet" ' Case "xls" ' Return "application/msexcel" ' Case "pdf" ' Return "application/pdf" ' Case "zip" ' Return "application/zip" ' Case "html", "htm" ' Return "text/html" ' Case "txt" ' Return "text/plain" ' Case "avi" ' Return "video/x-msvideo" ' Case "mpg", "mpeg" ' Return "video/mpeg" ' Case "ps" ' Return "application/postscript" ' Case "dwg" ' Return "application/acad" ' Case "wav" ' Return "audio/x-wav" ' Case "ogg" ' Return "application/ogg" ' Case "jar" ' Return "application/x-jar" ' 'Case "xml", "kml" ' ' Return "text/plain" ' Case Else ' Return "application/octet-stream" ' End Select ' ' End Public Sub ExistPage(sPath As String, Optional sLang As String) As Boolean Dim iSize As Long Try iSize = Stat(GetPagePathFrom(sPath, sLang)).Size Return iSize > 0 End Public Function GetSymbolLink(hClass As CClassInfo, sSym As String, Optional sMyTitle As String, Optional sMyStaticTitle As String) As String Dim hSym As CSymbolInfo Dim sRes As String Dim sComp As String Dim sPath As String hSym = hClass.Symbols[sSym] If Not hSym Then Return ' If $cCompRedirect Then ' sComp = hSym.Component ' While $cCompRedirect.Exist(sComp) ' sComp = $cCompRedirect[sComp] ' Wend ' Endif If Not sComp Then sComp = hSym.Component If hSym.IsStatic And If sMyStaticTitle Then sMyTitle = sMyStaticTitle 'sPath = GetSymbolPath(hSym) sPath = "/comp" &/ LCase(sComp &/ hSym.Class &/ Replace(hSym.Name, ":", ".")) If sMyTitle Then sRes &= "[" & sMyTitle & "] (" & sPath & ")" Else sRes &= "[" & sPath & "]" Endif 'If hSym.IsStatic() Then sRes &= "**" Return sRes End Public Function GetClassLinkFromName(sClass As String) As String Dim sComp As String = Wiki.Component If IsNull(Documentation.Get(sComp)[sClass]) Then sComp = Documentation.Classes[sClass].Component Endif Return "
      " & Html(sClass) & "" Catch Return sClass End Public Sub GetStat() As String[] Dim nClass As Integer Dim nSym As Integer Dim sFile As String Dim aFile As String[] Dim iCpt As Integer Dim sLine As String Dim aIgnore As String[] Dim sDir As String sDir = Wiki.InfoDir aIgnore = ["gb.gui.info", "gb.gtk.info", "gb.gtk3.info", "gb.gui.opengl.info", "gb.gtk.opengl.info", "gb.gui.base", "gb.geom"] For Each sFile In Dir(sDir, "*.info") If aIgnore.Find(sFile) >= 0 Then Continue aFile = Split(File.Load(sDir &/ sFile), "\n", "", True) iCpt = 0 For Each sLine In aFile If Left(sLine) = "#" Then Inc iCpt Next nClass += iCpt nSym += (aFile.Count - iCpt * 3) / 4 Next Return [Subst(("There are &1 classes and &2 symbols in all Gambas components."), nClass, nSym)] Catch Return ["`" & Error.Where & ": " & Error.Text & "`"] End Public Sub GetClassTitle(Optional sPath As String) As String Dim hClass As CClassInfo Dim sComponent As String Dim sClass As String Dim aPath As String[] Dim hComp As CComponent If Not sPath Then sComponent = Wiki.Component sClass = Wiki.Class Else aPath = Split(sPath, "/", "", True) sComponent = aPath[1] sClass = aPath[2] Endif Try hComp = Documentation.Get(sComponent) Try hClass = hComp[sClass] If hClass Then If sPath Then Return hClass.Name Return hClass.Name & " (" & sComponent & ")" Else If sPath Then Return sClass Return sClass & " (" & sComponent & ")" Endif End Public Sub GetSymbolTitle(Optional sPath As String) As String Dim hSym As CSymbolInfo Dim sTitle As String Dim sComponent As String Dim sClass As String Dim sSymbol As String Dim aPath As String[] If Not sPath Then sComponent = Wiki.Component sClass = Wiki.Class sSymbol = Wiki.Symbol Else aPath = Split(sPath, "/", "", True) sComponent = aPath[1] sClass = aPath[2] sSymbol = aPath[3] If Left(sSymbol) = "." Then sSymbol = ":" & Mid$(sSymbol, 2) Endif Try hSym = Documentation.Get(sComponent)[sClass].Symbols[sSymbol] If sPath Then If Not hSym Then Return sSymbol & " ?" If InStr("e:", hSym.Kind) Then Return Mid$(hSym.Name, 2) Else Return hSym.Name Endif Endif If Not hSym Then Return sClass & "." & sSymbol & " (" & sComponent & ")?" Select Case Wiki.Symbol Case "_new" sTitle = "New " & hSym.Class Case "_put" sTitle = hSym.Class & "[] = ..." Case "_get" sTitle = hSym.Class & "[]" Case "_call" sTitle = hSym.Class & "()" Case "_next" sTitle = "For Each " & hSym.Class Default If InStr(":e", hSym.Kind) Then sTitle = "Event " & hSym.Class & "." & Mid$(hSym.Name, 2) Else sTitle = hSym.Class & "." & hSym.Name Endif End Select Return sTitle & " (" & hSym.Component & ")" End Public Sub MakeAbsolute(sPath As String, sRoot As String) As String sPath = Trim(sPath) ' Fix incorrect symbolic links If sPath Begins "comp/gb" Then Return "/" &/ sPath If sPath Begins "/" Then Return sPath If sPath Begins "./" Then If Not sRoot Then sRoot = "/" Return sRoot &/ Mid$(sPath, 3) Endif While sPath Begins "../" sRoot = File.Dir(sRoot) sPath = Mid(sPath, 4) Wend If Not sRoot Then sRoot = "/" Return sRoot &/ sPath End ' Public Sub GetToDo() As String[] ' ' Dim hComp As CComponent ' Dim hClass As CClassInfo ' Dim hSymbol As CSymbolInfo ' Dim bPrintComponent As Boolean ' Dim bPrintClass As Boolean ' Dim sClass As String ' Dim sComp As String ' Dim sName As String ' Dim iCpt As Integer ' Dim aIgnore As String[] = ["gb.gui", "gb.gtk", "gb.gtk.opengl", "gb.gtk3", "gb.gtk3.opengl", "gb.gui.opengl", "gb.gui.base", "gb.qt5", "gb.qt5.opengl", "gb.qt5.webkit"] ' Dim aAllow As String[] = ["_new", "_put", "_get", "_call", "_next"] ' Dim sPath As String ' Dim aResult As New String[] ' ' $hDoc.Reset ' ' For Each sComp In ' ' hComp = CComponent.Get(sComp) ' hComp.Load ' bPrintComponent = True ' ' For Each sClass In hComp.ClassList ' ' If sClass = "." Then Continue ' If InStr(sClass, "*") Then Continue ' ' hClass = hComp[sClass] ' ' bPrintClass = True ' ' 'If $cCompRedirect And If $cCompRedirect.Exist(sComp) Then Continue ' If aIgnore.Find(sComp) >= 0 Then Continue ' ' For Each hSymbol In hClass.Symbols ' ' If hSymbol.Class <> hClass.Name Or If hSymbol.Component <> hClass.Component Then Continue ' ' sName = hSymbol.Name ' ' If hSymbol.Kind = "C" Then ' ' If Left(sName) = "_" Then Continue ' ' Else ' ' If LCase(sName) = "_free" Then Continue ' If LCase(sName) = "_new" Then ' If Not hClass.Creatable Or If hClass.IsVirtual() Then Continue ' Endif ' ' If InStr(sName, "_") Then ' If Left(sName) <> "_" Or If aAllow.Find(sName) < 0 Then Continue ' Endif ' ' Endif ' ' sPath = "/comp" &/ LCase(sComp &/ hSymbol.Class &/ Replace(hSymbol.Name, ":", ".")) ' If Not ExistPage(sPath) Then ' ' If bPrintComponent Then ' aResult.Add("## [" & sComp & "] (/comp" &/ sComp & ")") ' bPrintComponent = False ' Endif ' If bPrintClass Then ' aResult.Add("* **[" & hClass.Name & "] (/comp" &/ sComp &/ LCase(hClass.Name) & ")**") ' bPrintClass = False ' Endif ' aResult.Add(" * [" & sPath & "]") ' Inc iCpt ' Endif ' Next ' Next ' ' Next ' ' aResult.Insert([Subst("There are &1 symbols to document yet.", CStr(iCpt)), ""], 0) ' Return aResult ' ' End ' Private Sub MakeLink(sLink As String, sLang As String) As String ' ' If Not sLang Then sLang = "en" ' If Not sLink Then sLink = "/" ' Return "[" & sLink & " (" & sLang & ")] (" & sLink & "?l=" & sLang & ")" ' ' End ' Public Sub Log(sText As String, Optional sUser As String) ' ' Dim sLog As String = Wiki.Root &/ "wiki.log" ' Dim hFile As File ' ' If Exist(sLog) And If Stat(sLog).Size > 50000000 Then ' Try Kill sLog & ".old" ' Try Move sLog To sLog & ".old" ' Try Kill sLog ' Endif ' ' If Not sUser Then sUser = UserName ' sUser = Left(sUser, 24) ' sUser &= Space$(24 - Len(sUser)) ' ' Try hFile = Open sLog For Append ' If hFile Then ' For Each sText In Split(sText, "\n") ' Print #hFile, Format(Now, "mm\\/dd\\/yyyy hh\\:nn\\:ss"); " | "; sUser; " | "; sText ' Next ' Close #hFile ' Endif ' ' End Public Sub PrintTitle() If Wiki.Path Then Print Html(Wiki.Path); Else Print "/"; Endif End Public Sub PrintLink() Dim aPath As String[] Dim sElt As String Dim sPath As String aPath = Split(Wiki.Path, "/", "", True) For Each sElt In aPath sPath &= "/" & sElt Print ""; "/"; sElt; ""; Next End Public Sub PrintPage() Dim sPath As String Dim sData As String Dim iPos As Integer If Wiki.Image Then Print ""; Return Endif sPath = Wiki.SolvePath(Wiki.Path) If Not Wiki.ExistPage(sPath) Then If Wiki.Lang <> Wiki.DEFAULT_LANG Then Print "
      "; ("This page does not exist in that language."); "
      " Endif If Wiki.Class And If Wiki.HasDefaultHelp() Then If Wiki.Symbol Then sData = "# " & Wiki.GetSymbolTitle() & "\n@{syntax}\n@{help}\n" Else sData = "# " & Wiki.GetClassTitle() & "\n@{help}\n@{symbols}\n" Endif Goto PRINT_MARKDOWN Else If Wiki.Lang = Wiki.DEFAULT_LANG Then Print "
      "; ("This page does not exist."); "
      " Return Endif 'If Not Wiki.ExistPage(sPath, Wiki.DEFAULT_LANG) Then Return Wiki.Lang = Wiki.DEFAULT_LANG Endif Endif ' If Wiki.Lang <> Wiki.DEFAULT_LANG Then ' hStat = Stat(Wiki.GetPagePathFrom(Wiki.Path)) ' hStatDef = Stat(Wiki.GetPagePathFrom(Wiki.Path, Wiki.DEFAULT_LANG)) ' If hStat And If hStatDef And If hStatDef.LastModified > hStat.LastModified Then ' Print "" ' Endif ' Endif If Wiki.Component Then If Not Documentation.Exist(Wiki.Component) Or If Not Documentation[Wiki.Component].Loaded Then Documentation.Reset Endif sData = LTrim(File.Load(Wiki.GetPagePathFrom(sPath))) If Wiki.Class Then If sData Begins "# " Then iPos = InStr(sData, "\n") If iPos = 0 Then iPos = Len(sData) sData = Mid$(sData, iPos + 1) Endif 'sData = "# " & Html(Wiki.GetSymbolTitle()) & "\n" & sData If Wiki.Symbol Then sData = "# " & Wiki.GetSymbolTitle() & "\n" & sData Else sData = "# " & Wiki.GetClassTitle() & "\n" & sData Endif Endif PRINT_MARKDOWN: Print WikiMarkdown.ToHTML(sData) Catch Print "
      "; Html(Error.Text); " at line #"; WikiMarkdown.Line + 1; ":\n\n"; Html(WikiMarkdown.Current); "\n\nStack backtrace:\n\n"; Error.Backtrace.Join("\n"); "
      "; End Public Sub PrintParent() As String Print Html("wiki://" & Wiki.LinkSuffix); End Public Sub PrintLang() ' Dim sLang As String ' ' Print "" End Public Sub AnalyzePath() Dim aPath As String[] Component = "" Symbol = "" {Class} = "" If Path Begins "/comp/gb" Then aPath = Split(Path, "/", "", True) Component = aPath[1] If aPath.Count >= 3 Then {Class} = aPath[2] If aPath.Count >= 4 Then Symbol = aPath[3] If Left(Symbol) = "." Then Symbol = ":" & Mid$(Symbol, 2) Endif Endif End Public Sub HasDefaultHelp(Optional sComp As String, sClass As String, sSymbol As String) As Boolean Dim hClass As CClassInfo Dim hSymbol As CSymbolInfo If Not sComp Then sComp = Wiki.Component If Not sClass Then sClass = Wiki.Class If Not sSymbol Then sSymbol = Wiki.Symbol Try hClass = Documentation.Get(sComp)[sClass] If Not hClass Then Return If sSymbol Then Try hSymbol = hClass.Symbols[sSymbol] If Not hSymbol Then Return If hSymbol.Help Then Return True Else If hClass.Help Then Return True Endif End Public Sub GetDefaultHelp(Optional sComp As String, sClass As String, sSymbol As String) As String Dim hSymbol As CSymbolInfo Dim sSign As String Dim iPos As Integer Dim sResult As String Dim iPos2 As Integer Dim hClass As CClassInfo If Not sComp Then sComp = Wiki.Component If Not sClass Then sClass = Wiki.Class If Not sSymbol Then sSymbol = Wiki.Symbol Try hClass = Documentation.Get(sComp)[sClass] If Not hClass Then Return If sSymbol Then Try hSymbol = hClass.Symbols[sSymbol] If Not hSymbol Then Return If hSymbol.Help Then Return hSymbol.Help sResult = "\n" sSign = hSymbol.Signature Do iPos = InStr(sSign, "(", iPos + 1) If iPos = 0 Then Break iPos2 = InStr(sSign, ")", iPos + 1) If iPos2 = 0 Then Break sResult &= "- ~" & Mid$(sSign, iPos + 1, iPos2 - iPos - 1) & "~\n" iPos = iPos2 Loop Else If hClass.Help Then Return hClass.Help Endif 'If hSymbol.Help Then sResult = Trim(sResult) & "\n" & hSymbol.Help Return sResult End gambas-3.16.3/app/src/gambas3/.src/Help/Wiki/WikiMarkdown.class000066400000000000000000000154101411575327000240250ustar00rootroot00000000000000' Gambas class file Inherits Markdown Public Sub Link(hLink As MarkdownLink) Dim sPath As String Dim sLink As String = hLink.Link Dim iPos As Integer If sLink Begins "/" Then sPath = sLink Else If sLink Begins "./" Then sPath = Wiki.Path &/ Mid$(sLink, 3) Else If sLink Begins "../" Then sPath = Wiki.MakeAbsolute(sLink, Wiki.Path) Else If Not sLink Then sLink = hLink.Text iPos = InStr(sLink, ".") If iPos Then hLink.Text = "" sPath = "/comp/gb" &/ Trim(Left$(sLink, iPos - 1)) &/ Trim(Mid$(sLink, iPos + 1)) Endif Else If sLink Like "*://*" Then hLink.Blank = True Endif If Not sPath Then Return hLink.Query = Mid$(Wiki.LinkSuffix, 2) If Not hLink.Text Or If hLink.Text = hLink.Link Then If Wiki.IsImage(sPath) Then hLink.Html = "" Return Endif hLink.Text = Wiki.GetPageTitle(sPath) Endif hLink.Link = Wiki.WikiRoot &/ sPath End Private Sub MakeError(sMsg As String) As String[] Return ["*" & Html(sMsg) & "*"] End Public Sub Command(sCommand As String) As String[] Dim aArg As String[] Dim sDir As String Dim aResult As String[] Dim iPos As Integer Dim sPath As String Dim sLetter, sLast As String Dim aDir As String[] Dim hComp As CComponent Dim hClass As CClassInfo Dim hSym As CSymbolInfo Dim sTitle As String Dim sClass As String Dim iStart As Integer Dim I, J, K, N, NC As Integer aArg = Split(sCommand, " ", Chr$(34)) sCommand = aArg[0] If sCommand = "index" Then If aArg.Count > 1 Then sDir = File.Dir(Wiki.GetPagePathFrom(aArg[1])) aResult = New String[] aDir = New String[] NC = 2 For I = 1 To aArg.Max If aArg[I] Begins "col=" Then Try NC = CInt(Mid$(aArg[I], 5)) Endif Next If IsDir(sDir) Then For Each sDir In Dir(sDir, "*", gb.Directory) sPath = "/" &/ aArg[1] &/ sDir If Not Wiki.ExistPage(sPath) Then Continue sTitle = Wiki.GetPageTitle(sPath) If aArg.Count > 2 And If Comp(Left(sTitle, Len(aArg[2])), aArg[2], gb.Language + gb.IgnoreCase) = 0 Then sTitle = LTrim(Mid$(sTitle, Len(aArg[2]) + 1)) Do sLetter = String.Left(sTitle) If Len(sLetter) > 1 Then Break If Not IsPunct(sLetter) Then Break If Not sTitle Then Break sTitle = String.Mid$(sTitle, 2) Loop If Not sTitle Then sTitle = " " aDir.Add(sTitle & "\n[" & sPath & "]") Next If aDir.Count Then aResult.Add("") aDir.Sort(gb.Natural + gb.IgnoreCase) iStart = 0 For I = 0 To aDir.Max sLetter = String.UCase(String.Left(aDir[I])) If sLetter <> sLast Then If I Then GoSub MAKE_INDEX_LETTER sLast = sLetter iStart = I Endif Next GoSub MAKE_INDEX_LETTER aResult.Add("
      ") Endif Endif Return aResult Endif Else If sCommand = "since" Or If sCommand = "only" Then Return ["
      " & ("Since") & " " & Html(aArg[1]) & "
      "] Else If sCommand = "classes" And If Wiki.Component Then hComp = Wiki.Documentation[Wiki.Component] If hComp Then Return hComp.WikiGetClasses() Return MakeError(("This component does not exist.")) Else If sCommand = "description" And If Wiki.Component Then hComp = Wiki.Documentation[Wiki.Component] If hComp Then Return hComp.WikiGetDescription() Return MakeError(("This component does not exist.")) Else If sCommand = "symbols" Then If aArg.Count >= 2 And If aArg[1] Then sClass = aArg[1] Else sClass = Wiki.Class Endif If sClass Then hComp = Wiki.Documentation.Get(Wiki.Component) If hComp Then hClass = hComp[sClass] If hClass Then Return hClass.WikiGetSymbols() Endif Endif Return MakeError(sClass & ": " & ("This class does not exist.")) Else If sCommand = "syntax" And If Wiki.Symbol Then hComp = Wiki.Documentation.Get(Wiki.Component) If hComp Then hClass = hComp[Wiki.Class] If hClass Then hSym = hClass.Symbols[Wiki.Symbol] If hSym Then Return hSym.WikiGetSyntax() Endif Endif Return MakeError(("This symbol does not exist.")) Else If sCommand = "help" And If Wiki.Class Then Return Split(Wiki.GetDefaultHelp(), "\n") Else If sCommand = "stat" Then Return Wiki.GetStat() Else If sCommand = "todo" Or If sCommand = "changes" Then Goto NOT_AVAILABLE Else If sCommand = "package-table" Then Goto NOT_AVAILABLE Else If sCommand = "developer-table" Then Goto NOT_AVAILABLE Else If sCommand = "translator-table" Then Goto NOT_AVAILABLE 'Return Main.GetTranslatorTable() Else If sCommand = "project-dependencies" Then Goto NOT_AVAILABLE 'Return Main.GetProjectDependencies(aArg[1]) Else If sCommand = "search-query" Then Goto NOT_AVAILABLE Else If sCommand = "search-result" Then Goto NOT_AVAILABLE Else If sCommand = "class" Then If Wiki.Class Then Return [Wiki.GetClassTitle(Wiki.Path)] Else If sCommand = "how-to-install" Then Goto NOT_AVAILABLE 'Return Main.GetHowToInstall(aArg[1]) Else Return ["**COMMAND: `" & sCommand & "`**"] Endif MAKE_INDEX_LETTER: aResult.Add("
      " & sLast & " 
      ") N = (I - iStart + NC - 1) \ NC J = iStart For K = 1 To NC aResult.Add("") For J = J To J + N - 1 If J >= I Then Break iPos = InStr(aDir[J], "\n") aResult.Add(Mid$(aDir[J], iPos + 1) & "\\") Next aResult.Add("") Next aResult.Add("") Return NOT_AVAILABLE: Return ["Unavailable in offline help."] End Public Sub Enter(sClass As String) As String[] If sClass = "syntax" Then Me.EnableCode(False) End Public Sub Leave(sClass As String) As String[] If sClass = "syntax" Then Me.EnableCode(True) End Public Sub CheckURL(sURL As String, sMarkup As String) As String Dim sPath As String If sURL Begins "/wiki/" Then If sMarkup = "img" Then sPath = Mid$(sURL, 7) If sPath Ends "?v" Then sPath = Left(sPath, -2) Return MHelp.GetOfflinePath(sPath) Endif Endif Return sURL End gambas-3.16.3/app/src/gambas3/.src/MMime.module000066400000000000000000000055311411575327000210130ustar00rootroot00000000000000' Gambas module file Public Const FORM As String = "text/x-gambas-form" Public Const CONTROL As String = "text/x-gambas-control" Public Const FILE As String = "text/x-gambas-file" Public Const URI As String = "text/uri-list" Public Const DATA As String = "text/x-gambas-data" Public Const CLASS As String = "text/x-gambas-class" Public Const LIST As String = "text/x-gambas-list" Public Const MENU As String = "text/x-gambas-menu" Public Const TABLE As String = "text/x-gambas-table" Private $cFormat As New Collection Public Sub _init() $cFormat["text/plain"] = ("Plain text") $cFormat["text/html"] = ("HTML text") $cFormat[FORM] = ("Gambas form data") $cFormat[MENU] = ("Gambas menu data") $cFormat[FILE] = ("Gambas project file path") $cFormat[URI] = ("URI list") End Public Sub GetName(sFormat As String) As String Dim sName As String = $cFormat[sFormat] If sName Then Return sName Else Return ("Unknown format") & " (" & sFormat & ")" Endif End Public Sub UnEscapeURI(URL As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(URL) sCar = Mid$(URL, iInd, 1) If sCar = "%" Then sCar = Chr$(Val("&H" & Mid$(URL, iInd + 1, 2))) iInd += 2 Else If sCar = "+" Then sCar = " " Endif sRes &= sCar Next Return sRes End Public Sub GetMime(sPath As String) As String Select Case Lower(File.Ext(sPath)) Case "css" Return "text/css" Case "jpg", "jpeg", "jpe" Return "image/jpeg" Case "png" Return "image/png" Case "svg" Return "image/svg+xml" Case "svgz" Return "image/svg+xml-compressed" Case "gif" Return "image/gif" Case "tiff", "tif" Return "image/tiff" Case "js" Return "text/javascript" Case "odt" Return "application/vnd.oasis.opendocument.text" Case "doc" Return "application/msword" Case "ods" Return "application/vnd.oasis.opendocument.spreadsheet" Case "xls" Return "application/msexcel" Case "pdf" Return "application/pdf" Case "zip" Return "application/zip" Case "html", "htm" Return "text/html" Case "txt", "", "am", "in", "sh", "m4" Return "text/plain" Case "avi" Return "video/x-msvideo" Case "mpg", "mpeg" Return "video/mpeg" Case "ps" Return "application/postscript" Case "dwg" Return "application/acad" Case "wav" Return "audio/x-wav" Case "ogg" Return "application/ogg" Case "jar" Return "application/x-jar" Case "kml" Return "text/kml" Case "xml" Return "text/xml" 'Case "sfd" ' Return "application/vnd.font-fontforge-sfd" 'Case "bdf" ' Return "application/x-font-bdf" Case Else Try Return DesktopMime.FromFile(sPath).Type End Select End gambas-3.16.3/app/src/gambas3/.src/MTest.module000066400000000000000000000101041411575327000210330ustar00rootroot00000000000000' Gambas module file Public Enum TEST_SUCCESS, TEST_FAIL, TEST_ABORT Public Sub GetTestModules(Optional bWithMethods As Boolean) As String[] Dim aModules As String[] Dim cSymbol As Collection Dim hSymbol As CSymbolInfo Dim aResult As String[] Dim sClass As String aModules = Project.Tree.GetTestModules() If Not bWithMethods Then Return aModules aResult = New String[] For Each sClass In aModules sClass = File.BaseName(sClass) cSymbol = Project.Documentation.GetClassSymbols(sClass) If Not cSymbol Then Continue For Each hSymbol In cSymbol If Not hSymbol.IsFunction Or If hSymbol.NotPublic Or If hSymbol.IsHidden Then Continue aResult.Add(sClass & "." & hSymbol.Name) Next Next aResult.Sort() Return aResult End Private Sub SuiteToSelection(sSuite As String, aTest As String[]) As String[] Dim aSelection As New String[] Dim sTest As String Dim iPos As Integer Dim aMethod As String[] Dim sMethod As String Dim bAdd As Boolean If Not sSuite Then Return For Each sTest In Split(sSuite) iPos = InStr(sTest, ".") If iPos Then aMethod = Split(Mid$(sTest, iPos + 1), ";") sTest = Left(sTest, iPos - 1) bAdd = False For Each sMethod In aMethod If aTest.Exist(sTest & "." & sMethod) Then If Not bAdd Then aSelection.Add(sTest) bAdd = True Endif aSelection.Add(sTest & "." & sMethod) Endif Next Else If aTest.Exist(sTest & ".*", gb.Like) Then aSelection.Add(sTest) Endif Endif Next Return aSelection End Public Sub LoadSuites(ByRef iTestWith As Integer) As Collection Dim hSettings As Settings Dim iCount As Integer Dim I As Integer Dim sKey As String Dim sName As String Dim aTest As String[] Dim cSuites As Collection aTest = GetTestModules(True) hSettings = New Settings(Project.Dir &/ ".test") iCount = hSettings["/TestSuites/Count", 0] cSuites = New Collection cSuites["$"] = SuiteToSelection(hSettings["/TestSuites/Default"], aTest) For I = 1 To iCount sKey = "/TestSuites/" & CStr(I) sName = hSettings[sKey &/ "Name"] ' lvwSuite.Add(sName, sName) ' cmbTestWith.Add(sName) cSuites[sName] = SuiteToSelection(hSettings[sKey &/ "Tests"], aTest) Next iTestWith = hSettings["/TestSuites/TestWith", 0] Return cSuites End Private Sub SelectionToSuite(aSel As String[]) As String Dim iPos As Integer Dim sMethod As String Dim sLastClass As String Dim sSuite As String Dim bMethod As Boolean Dim sKey As String Dim sClass As String If Not aSel Then Return For Each sKey In aSel.Sort(gb.Natural) iPos = InStr(sKey, ".") If iPos Then sMethod = Mid$(sKey, iPos + 1) sClass = Left(sKey, iPos - 1) Else sClass = sKey sMethod = "" Endif If sClass <> sLastClass Then If sSuite Then sSuite &= "," sSuite &= sClass sLastClass = sClass bMethod = False Endif If sMethod Then sSuite &= If(bMethod, ";", ".") & sMethod bMethod = True Endif Next Return sSuite End Public Sub SaveSuites(cSuites As Collection, iTestWith As Integer) Dim sKey As String Dim hSettings As Settings Dim iCount As Integer Dim sSlot As String Dim aTest As String[] hSettings = New Settings(Project.Dir &/ ".test") hSettings.Clear("/TestSuites", True) For Each aTest In cSuites sKey = cSuites.Key If sKey = "$" Then hSettings["/TestSuites/Default"] = SelectionToSuite(aTest) Else Inc iCount sSlot = "/TestSuites/" & CStr(iCount) hSettings[sSlot &/ "Name"] = sKey hSettings[sSlot &/ "Tests"] = SelectionToSuite(aTest) Endif Next hSettings["/TestSuites/Count"] = iCount hSettings["/TestSuites/TestWith"] = iTestWith hSettings.Save End Public Sub UpdateSuites() Dim iTestWith As Integer Dim cSuites As Collection cSuites = LoadSuites(ByRef iTestWith) SaveSuites(cSuites, iTestWith) End gambas-3.16.3/app/src/gambas3/.src/MTheme.module000066400000000000000000000141511411575327000211640ustar00rootroot00000000000000' Gambas module file Public Const DEFAULT_THEME As String = "gambas" Public ColorKeys As String[] = ["Background", "Normal", "Keyword", "Constant", "Datatype", "Function", "Operator", "Symbol", "Label", "Number", "String", "Escape", "Comment", "Help", "Preprocessor", "Breakpoint", "Current", "Selection", "Highlight", "CurrentLine", "Error", "Alternate"] Public ColorNames As String[] = [("Background"), ("Normal text"), ("Keywords"), ("Constants"), ("Data types"), ("Subroutines"), ("Operators"), ("Symbols"), ("Labels"), ("Numbers"), ("Strings"), ("Characters"), ("Comments"), ("Help"), ("Preprocessor"), ("Breakpoints"), ("Current line"), ("Selection"), ("Highlighting"), ("Editing line"), ("Errors"), ("Alternate background")] Private $cDefault As Collection Public Sub _init() $cDefault = ReadFile(DEFAULT_THEME) End Public Sub IsBackgroundStyle(sKey As String) As Boolean Return ["Background", "Selection", "CurrentLine", "Current", "Breakpoint", "Highlight", "Alternate"].Exist(sKey) End Public Function ReadSettings(hSettings As Settings, sParent As String, Optional bDefault As Boolean) As Collection Dim cColor As New Collection Dim sKey As String Dim sColor As String Dim aColor As String[] For Each sKey In ColorKeys If bDefault Then sColor = hSettings[sParent &/ sKey, $cDefault[sKey]] Else sColor = hSettings[sParent &/ sKey] Endif cColor[sKey] = sColor Next For Each sKey In ColorKeys Do sColor = cColor[sKey] If Not sColor Then Break If Left(sColor) = "#" Then Break aColor = Split(sColor) aColor[0] = cColor[aColor[0]] cColor[sKey] = aColor.Join() Loop Next Return cColor End Public Sub WriteSettings(hSettings As Settings, sParent As String, cColor As Collection) Dim sKey As String For Each sKey In ColorKeys hSettings[sParent &/ sKey] = cColor[sKey] Next End Public Function ReadFile(sPath As String) As Collection Dim hSettings As Settings Dim sTemp As String If Left(sPath) <> "/" Then sPath = "theme" &/ sPath sTemp = Temp$() Copy sPath To sTemp sPath = sTemp Endif hSettings = New Settings(sPath) If sTemp Then Kill sTemp Return ReadSettings(hSettings, "Theme") End Public Sub WriteFile(sPath As String, cColor As Collection) Dim hSettings As Settings hSettings = New Settings(sPath) WriteSettings(hSettings, "Theme", cColor) hSettings.Save End Public Sub Copy(cColor As Collection) As Collection Dim cNew As New Collection Dim sValue As String For Each sValue In cColor cNew[cColor.Key] = sValue Next Return cNew End Public Sub InvertColor(iCol As Integer, sKey As String) As Integer ' Dim R, G, B As Integer ' Dim Y, U, V As Float ' ' With Color[iCol] ' R = .Red ' G = .Green ' B = .Blue ' End With ' ' Y = 0.299 * R + 0.587 * G + 0.114 * B ' U = 0.436 * (B - Y) / (1 - 0.114) ' V = 0.615 * (R - Y) / (1 - 0.299) ' ' R = Y + 1.14 * V ' G = Y - 0.395 * U - 0.581 * V ' B = Y + 2.033 * U ' ' Return Color.RGB(R, G, B) Dim H, S, V, L As Integer With Color[iCol] H = .Hue S = .Saturation V = .Value L = .Luminance End With If sKey = "CurrentLine" Then If V > 128 Then V *= 0.5 S = 255 - (255 - S) / 2 Endif Else If S < 32 Or If sKey = "Background" Then V = 255 - V Else If IsBackgroundStyle(sKey) Then V *= 0.75 Endif Return Color.HSV(H, S, V) End Public Sub InitEditor(hEditor As TextEditor, Optional bDesaturate As Boolean) Dim iInd As Integer Dim hStyle As New CStyle Dim iStyle As Integer Dim iCol As Integer Dim iBg As Integer Dim bInvert As Boolean Dim sKey As String If Application.DarkTheme Then bInvert = Settings["/Editor/InvertTheme", True] For iInd = 0 To ColorKeys.Max sKey = ColorKeys[iInd] hStyle.FromString(Settings["Highlight" &/ sKey, $cDefault[sKey]]) iStyle = Object.GetProperty(Classes["Highlight"], sKey) With hEditor.Styles[iStyle] iCol = hStyle.Foreground If iInd = 0 Then iBg = iCol If Color[iBg].Value < 128 Then bInvert = False Endif If bInvert Then iCol = InvertColor(iCol, sKey) If bDesaturate Then iCol = Color.Desaturate(iCol) .Color = iCol .Bold = hStyle.Bold .Underline = hStyle.Underline .Dotted = hStyle.Dotted End With Next hEditor.Background = hEditor.Styles[Highlight.Background].Color hEditor.Foreground = hEditor.Styles[Highlight.Normal].Color hEditor.Refresh End Public Sub GetColor(sStyle As String) As Integer Dim hStyle As New CStyle hStyle.FromString(Settings["Highlight" &/ sStyle, $cDefault[sStyle]]) Return hStyle.Foreground End Public Sub InitControl(hControl As Control) If Application.DarkTheme And If Settings["/Editor/InvertTheme", True] Then hControl.Background = GetColor("Normal") hControl.Foreground = GetColor("Foreground") Else hControl.Background = GetColor("Background") hControl.Foreground = GetColor("Normal") Endif End Public Sub GetStyles() As TextHighlighterStyle[] Dim iInd As Integer Dim hStyle As New CStyle Dim iStyle As Integer Dim iCol As Integer Dim iBg As Integer Dim bInvert As Boolean Dim sKey As String Dim aStyles As TextHighlighterStyle[] Dim hTextStyle As TextHighlighterStyle aStyles = TextHighlighter.DefaultStyle If Application.DarkTheme Then bInvert = Settings["/Editor/InvertTheme", True] For iInd = 0 To ColorKeys.Max sKey = ColorKeys[iInd] hStyle.FromString(Settings["Highlight" &/ sKey, $cDefault[sKey]]) iStyle = Object.GetProperty(Classes["Highlight"], sKey) hTextStyle = aStyles[iStyle] With hTextStyle iCol = hStyle.Foreground If iInd = 0 Then iBg = iCol If Color[iBg].Value < 128 Then bInvert = False Endif If bInvert Then iCol = InvertColor(iCol, sKey) .Color = iCol .Bold = hStyle.Bold .Underline = hStyle.Underline End With Next Return aStyles End gambas-3.16.3/app/src/gambas3/.src/Options/000077500000000000000000000000001411575327000202275ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Options/CBackground.class000066400000000000000000000024131411575327000234400ustar00rootroot00000000000000' Gambas class file Inherits UserControl Property Selected As Boolean Private $hView As DrawingArea Private $hImage As Image Private $bSelected As Boolean Public Sub _new() $hView = New DrawingArea(Me) As "View" $hView.Background = Color.TextBackground $hView.Mouse = Mouse.Pointing Me.Proxy = $hView Me.ResizeScaled(20, 20) End Public Sub View_Draw() Dim D As Integer = Desktop.Scale Paint.Rectangle(D * 2, D * 2, Paint.W - D * 4, Paint.H - D * 4) Paint.Brush = Paint.Color(Color.LightForeground) If $hImage Then Paint.Fill(True) Paint.Brush = Paint.Image($hImage) Endif Paint.Fill If $bSelected Then Paint.Background = Color.LightBackground Paint.Rectangle(0, 0, Paint.W, D) Paint.Rectangle(0, Paint.H - D, Paint.W, D) Paint.Rectangle(0, 0, D, Paint.H) Paint.Rectangle(Paint.W - D, 0, D, Paint.H) Paint.Fill Endif End Private Function Selected_Read() As Boolean Return $bSelected End Private Sub Selected_Write(Value As Boolean) $bSelected = Value $hView.Refresh End Public Sub SetImage(hImage As Image, iColor As Integer) If hImage Then If Application.DarkTheme Then hImage = hImage.Invert(True) hImage = hImage.Colorize(iColor) Endif $hImage = hImage $hView.Refresh End gambas-3.16.3/app/src/gambas3/.src/Options/FLayout.class000066400000000000000000000015571411575327000226510ustar00rootroot00000000000000' Gambas class file Static Public LayoutName As String Private $aLayout As String[] Private $sName As String Public Sub Run(aLayout As String[], sName As String) As Boolean $aLayout = aLayout $sName = sName Return Not Me.ShowModal() End Public Sub btnOK_Click() Dim sName As String sName = Trim(cmbName.Text) If Not sName Then Message.Warning(("Please enter the name of the layout.")) cmbName.SetFocus Return Endif If cmbName.Find(sName) >= 0 Then If Message.Warning(("This layout already exists."), ("Override"), ("Cancel")) = 2 Then Return Endif LayoutName = sName Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim I As Integer cmbName.Clear For I = 2 To $aLayout.Max Step 2 cmbName.Add($aLayout[I]) Next cmbName.SetFocus cmbName.Text = $sName End gambas-3.16.3/app/src/gambas3/.src/Options/FLayout.form000066400000000000000000000012421411575327000224760ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,16) Text = ("Save layout") Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { Label1 Label MoveScaled(1,1,26,3) Text = ("Layout name") } { cmbName ComboBox MoveScaled(1,5,58,4) } { Spring1 Spring MoveScaled(24,9,2,2) } { HBox1 HBox MoveScaled(2,11,62,4) Spacing = True { Panel1 Panel MoveScaled(4,0,4,4) Expand = True } { btnOK Button MoveScaled(31,0,14,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(48,0,14,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Options/FOption.class000066400000000000000000001207171411575327000226440ustar00rootroot00000000000000' Gambas class file Static Private $aTheme As String[] = ["amethyst", "amber", "emerald", "gambas", "ruby", "sapphire", "visual", "obsidian", "quest", "quick", "blues", "zen", "pastel"] Static Private $aThemeName As String[] = [("Amethyst"), ("Amber"), ("Emerald"), ("Gambas"), ("Ruby"), ("Sapphire"), ("Visual"), ("Obsidian"), ("Quest"), ("Quick"), ("Blues"), ("Zen"), ("Pastel")] Static Private $aBrowser As String[] = ["konqueror", "rekonq", "firefox", "iceweasel", "epiphany", "seamonkey", "opera", "chromium"] Static Private $aTerminal As String[] = ["konsole", "gnome-terminal", "mate-terminal", "Terminal", "lxterminal", "xterm"] 'Static Private $aImageEditor As String[] = ["gimp", "kolourpaint", "krita"] Static Private $aMessageBoxStyle As String[] = ["default", "flat"] Static Private $aMessageBoxStyleName As String[] = [("Default"), ("Flat")] Static Private $cLayoutName As Collection Private $cLast As Collection Private $cCurrent As Collection Private $bNoChange As Boolean Private $aConfig As Variant[][] Private $sStyle As String Private $hDraw As DrawingArea Private $hDownloadHelp As DownloadManager Private $aLayout As String[] Private Sub ReadConfig() Dim aParam As Variant[] Dim hCtrl As Object Dim vVal As Variant For Each aParam In $aConfig hCtrl = aParam[0] vVal = Settings[aParam[1], aParam[2]] Select Case Object.Type(hCtrl) Case "FontChooser" hCtrl.SelectedFont = vVal Case "ComboBox" If hCtrl.ReadOnly Then If TypeOf(vVal) = gb.Boolean Then hCtrl.Index = If(vVal, 1, 0) Else hCtrl.Index = vVal Endif Else hCtrl.Text = vVal Endif Case "SpinBox" hCtrl.Value = vVal Case "ButtonBox" hCtrl.Text = vVal Case "SwitchButton" hCtrl.Value = vVal Case "TextBox", "MaskBox" hCtrl.Text = vVal Case "FontBox" hCtrl.Value = vVal Default Debug "Unmanaged type: "; Object.Type(hCtrl) End Select Next End ' Private Sub LoadIgnoreFiles() ' ' Dim aIgnore As String[] ' Dim iInd As Integer ' ' aIgnore = Project.GetIgnoreFiles() ' tvwIgnore.Rows.Count = aIgnore.Count ' For iInd = 0 To aIgnore.Max ' tvwIgnore[iInd, 0].Text = aIgnore[iInd] ' Next ' ' End ' Public Sub _new() Dim iInd As Integer Dim hHBox As HBox Dim hColor As DrawingArea Dim hButton As ToolButton Dim aColors As Integer[] gvwLayout.Columns.Count = 1 cmbTheme.List = $aThemeName.Copy().Sort(gb.Language) cmbTheme.Add(("Custom"), 0) cmbIconTheme.List = [("Desktop"), "Gnome", "KDE", "Trinity", "KDE4", "KDE5", "LXDE", "Mate", "XFCE"].Insert(Stock.Themes) cmbBrowser.List = [("(Default)"), "Konqueror", "Rekonq", "Firefox", "Iceweasel", "Epiphany", "SeaMonkey", "Opera", "Chromium"] cmbTerminal.List = [("(Default)"), "Konsole", "Gnome terminal", "Mate terminal", "XFCE Terminal", "lxterminal", "XTerm"] txtEditorFont.Default = Project.DEFAULT_FONT txtConsoleFont.Default = Project.DEFAULT_FONT txtPrintFont.Default = Project.DEFAULT_FONT txtHelpFixedFont.Default = Project.DEFAULT_FONT cmbMessageBoxStyle.List = $aMessageBoxStyleName.Copy().Sort(gb.Language) $cLast = MTheme.ReadSettings(Settings, "/Highlight", True) $cCurrent = MTheme.Copy($cLast) $aConfig = [ [txtEditorFont, "/Editor/Font", ""], [txtConsoleFont, "/ConsoleFont", ""], [txtPrintFont, "/Printing/Font", ""], [txtGlobalFont, "/Font", ""], [txtHelpDefaultFont, "/Browser/Font", ""], [txtHelpFixedFont, "/Browser/FixedFont", ""], [btnCloseWithMiddleClick, "/CloseWithMiddleClick", 0], [txtTabSize, "/DefaultTabSize", 2], [txtCompilerJobs, "/CompilerJobs", 1], [btnWrapText, "/Editor/WrapTextByDefault", 1], [btnTabIndent, "/Editor/TabIndentByDefault", 0], [btnVersionControl, "/VersionControl/Enabled", 1], [btnShowLimit, "/Editor/ProcedureLimit", 1], [btnShowLineNumber, "/Editor/ShowLineNumbers", 0], [btnShowChange, "/Editor/ShowChange", 1], [btnShowCurrent, "/Editor/ShowCurrent", 1], [btnShowSpaces, "/Editor/ShowSpaces", 1], [btnShowIndent, "/Editor/ShowIndent", 1], [btnShowPreview, "/Editor/ShowPreview", 0], [btnFold, "/Editor/ShowExpand", 1], [btnInvertTheme, "/Editor/InvertTheme", 1], [btnShowDebug, "/ShowDebugPanelAutomatically", 1], [btnUtility, "/UseUtilityWindows", 1], [btnStartupLoad, "/RestoreFiles", 1], [btnOptional, "/AlwaysDisplayOptionalMessages", 0], [btnOfflineHelp, "/UseOfflineHelp", 0], [btnTooltip, "/ShowTooltip", 1], [btnAnimation, "/Animations", 1], [btnShadow, "/Shadows", 1], [btnShowFileInTitle, "/ShowFileInTitle", 1], [btnHelpCompletion, "/ShowHelpInPopup", 1], [btnUpperCaseKeywords, "/Editor/KeywordsUseUpperCase", 0], [btnControlStructCompletion, "/Editor/ControlStructCompletion", 1], [btnLocalVarDecl, "/Editor/LocalVariableDeclaration", 0], [btnComment, "/Editor/AutoComment", 1], [btnCloseBraces, "/Editor/CloseBraces", 1], [btnCloseStrings, "/Editor/CloseStrings", 1], [btnIndentDim, "/FormatCode/IndentLocal", 1], [btnRemoveSpace, "/FormatCode/RemoveSpaces", 0], [btnKeepVoidLine, "/FormatCode/KeepVoidLines", 0], [btnFormatOnLoad, "/FormatCode/FormatOnLoad", 0], [btnCodeSnippet, "/Editor/CodeSnippets", 1], [txtName, "/Identity/Name", User.Name], [txtMail, "/Identity/Mail", User.Name & "@" & System.Host], [txtVendor, "/Packager/Vendor", ""], [txtVendorPrefix, "/Packager/VendorPrefix", ""], [txtLicense, "/Packager/License", "General Public License"], [txtURL, "/Packager/URL", "www.endoftheinternet.com"], [cmbPrefix, "/Packager/UsePrefix", 0], [btnCompressPng, "/CompressPng", 1], [btnAutoTrans, "/AutomaticTranslation/Enabled", 0]] $bNoChange = True ReadConfig cmbIconTheme.Index = Max(0, cmbIconTheme.List.Find(Settings["/Theme"])) cmbBrowser.Index = $aBrowser.Find(Settings["/Browser"]) + 1 cmbTerminal.Index = $aTerminal.Find(Settings["/Terminal"]) + 1 SetPercentSize(cmbProjectFontSize, Settings["/ProjectFontSize", 100]) SetPercentSize(cmbTitleFontSize, Settings["/TitleFontSize", 80]) SetPercentSize(cmbDebuggerFontSize, Settings["/DebuggerFontSize", 80]) SetPercentSize(cmbHelpZoom, Settings["/Help/Zoom", 80]) iInd = $aTheme.Find(Settings["/Editor/Theme"]) If iInd >= 0 Then cmbTheme.Text = $aThemeName[iInd] Else cmbTheme.Index = 0 Endif iInd = $aMessageBoxStyle.Find(Settings["/MessageBoxStyle"]) If iInd >= 0 Then cmbMessageBoxStyle.Text = $aMessageBoxStyleName[iInd] Else cmbMessageBoxStyle.Text = ("Default") Endif UpdateFont(txtGlobalFont.Value) $bNoChange = False For iInd = 0 To MTheme.ColorKeys.Max hHBox = New HBox(svwTheme) hHBox.Tag = MTheme.ColorKeys[iInd] hHBox.Height = 4 * Desktop.Scale 'hHBox.Spacing = 4 hColor = New DrawingArea(hHBox) As "dwgStyle" hColor.Expand = True hColor.Border = Border.Plain hColor.Arrangement = Arrange.Horizontal hColor.Invert = True hButton = New ToolButton(hColor) As "btnStyle" hButton.Picture = Picture["icon:/small/color"] hButton.Resize(Desktop.Scale * 4, Desktop.Scale * 4) Next RefreshStyle gvwSnippet.Columns.Count = 2 gvwSnippet.Columns[0].Width = Desktop.Scale * 8 gvwSnippet.Font = Project.GetEditorFont() aColors = [Color.White, &HC0C0C0, &H808080, &H404040, 0] For iInd = 0 To 359 Step 30 aColors.Add(Color.HSV(iInd, 255, 255)) Next choBackgroundColor.Colors = aColors choBackgroundColor.Current = Project.GetBackgroundColor() sldBackgroundBrightness.Value = Project.GetBackgroundBrightness() btnAutoTrans_Click Me.Utility = Settings["/UseUtilityWindows", 1] End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then Me.Close End Public Sub cmbTheme_Click() Dim iTheme As Integer iTheme = $aThemeName.Find(cmbTheme.Text) If iTheme < 0 Then Settings["/Editor/Theme"] = "" Return Endif Settings["/Editor/Theme"] = $aTheme[iTheme] $cCurrent = MTheme.ReadFile($aTheme[iTheme]) RefreshEditor End Public Sub cmbMessageBoxStyle_Click() Dim iStyle As Integer iStyle = $aMessageBoxStyleName.Find(cmbMessageBoxStyle.Text) If iStyle <= 0 Then Settings["/MessageBoxStyle"] = "" Else Settings["/MessageBoxStyle"] = $aMessageBoxStyle[iStyle] Endif Project.UpdateMessageBoxStyle End Public Sub btnExport_Click() Dialog.Path = Settings["/FOption/ThemePath", User.Home &/ User.Name & ".gambas.theme"] Dialog.Filter = ["*.gambas.theme", ("Gambas highlight theme files")] Dialog.Title = ("Export a theme file") Dialog.AutoExt = True If Dialog.SaveFile() Then Return Settings["/FOption/ThemePath"] = Dialog.Path MTheme.WriteFile(Dialog.Path, $cCurrent) End Private Sub RefreshStyle() Dim hHBox As HBox Dim H As Integer H = Max(Project.GetEditorFont().Height + Desktop.Scale * 2, Desktop.Scale * 4) For Each hHBox In svwTheme.Children hHBox.H = H hHBox.Children[0].Refresh Next End Private Sub RefreshEditor() Dim hFile As Object If $bNoChange Then Return Settings["/Editor/Font"] = txtEditorFont.Value RefreshStyle MTheme.WriteSettings(Settings, "Highlight", $cCurrent) Project.InitWebView Project.RefreshBreakpointPicture For Each hFile In Project.Files Try hFile.ReadConfig() Next FSearch.ReadConfig FMain.ReadConfig FProperty.ReadConfig FFormStack.ReadConfig FOutput.ReadConfig FProfile.ReadAllConfig FDebugInfo.ReadConfig FDebugExpr.ReadConfig FCompletion.ReadConfig End Private Sub RefreshConsole() If $bNoChange Then Return Settings["/ConsoleFont"] = txtConsoleFont.Value FOutput.ReadConfig FDebugInfo.ReadConfig Project.InitWebView End Public Sub btnUndo_Click() $cCurrent = MTheme.Copy($cLast) cmbTheme.Index = 0 RefreshEditor End Private Sub RefreshWindow() Dim hFile As Object If $bNoChange Then Return FProperty.ReadConfig FMain.ReadConfig FDebugInfo.ReadConfig FSearch.ReadConfig FFormStack.ReadConfig FToolBox.ReadConfig FDebugExpr.ReadConfig FOutput.ReadConfig FHelpBrowser.ReadConfig FImageProperty.ReadConfig For Each hFile In Project.Files Try hFile.ReadConfig Next End Private Sub SetPercentSize(hCombo As ComboBox, iSize As Integer) Try hCombo.Text = CStr(iSize) & " %" End Private Sub GetPercentSize(hCombo As ComboBox) As Integer Return CInt(Trim(Left(hCombo.Text, -1))) End Public Sub cmbProjectFontSize_Click() Settings["/ProjectFontSize"] = GetPercentSize(cmbProjectFontSize) RefreshWindow End Public Sub cmbTitleFontSize_Click() Settings["/TitleFontSize"] = GetPercentSize(cmbTitleFontSize) RefreshWindow End Public Sub cmbDebuggerFontSize_Click() Settings["/DebuggerFontSize"] = GetPercentSize(cmbDebuggerFontSize) FDebugInfo.ReadConfig End Public Sub btnTooltip_Click() Settings["/ShowTooltip"] = btnTooltip.Value Application.ShowTooltips = btnTooltip.Value End Public Sub btnAnimation_Click() Settings["/Animations"] = btnAnimation.Value Application.Animations = btnAnimation.Value End Public Sub btnShadow_Click() Settings["/Shadows"] = btnShadow.Value Application.Shadows = btnShadow.Value End Public Sub btnShowFileInTitle_Click() Settings["/ShowFileInTitle"] = btnShowFileInTitle.Value Project.ShowFileInTitle = btnShowFileInTitle.Value Project.UpdateTitle End Public Sub txtTabSize_Change() Settings["/DefaultTabSize"] = txtTabSize.Value End Public Sub txtCompilerJobs_Change() Settings["/CompilerJobs"] = txtCompilerJobs.Value End Public Sub btnShowLimit_Click() Settings["/Editor/ProcedureLimit"] = btnShowLimit.Value RefreshEditor End Public Sub btnShowLineNumber_Click() Settings["/Editor/ShowLineNumbers"] = btnShowLineNumber.Value RefreshEditor End Public Sub btnShowChange_Click() Settings["/Editor/ShowChange"] = btnShowChange.Value RefreshEditor End Public Sub btnShowCurrent_Click() Settings["/Editor/ShowCurrent"] = btnShowCurrent.Value RefreshEditor End Public Sub btnShowSpaces_Click() Settings["/Editor/ShowSpaces"] = btnShowSpaces.Value RefreshEditor End Public Sub btnShowIndent_Click() Settings["/Editor/ShowIndent"] = btnShowIndent.Value RefreshEditor End Public Sub btnShowPreview_Click() Settings["/Editor/ShowPreview"] = btnShowPreview.Value RefreshEditor End ' Public Sub cmbCompletion_Click() ' ' Settings["/Editor/Completion"] = cmbCompletion.Index = 1 ' RefreshEditor ' ' End Public Sub btnImport_Click() Dialog.Path = Settings["/FOption/ThemePath", User.Home] Dialog.Filter = ["*.gambas.theme", ("Gambas highlight theme files")] Dialog.Title = ("Select a theme file") If Dialog.OpenFile() Then Return 'Enhanced Dialog.OpenFile() is buggy If Not Dialog.Path Or If IsDir(Dialog.Path) Then Return Settings["/FOption/ThemePath"] = Dialog.Path $cCurrent = MTheme.ReadFile(Dialog.Path) cmbTheme.Index = 0 RefreshEditor End Public Sub btnCloseWithMiddleClick_Click() Settings["/CloseWithMiddleClick"] = btnCloseWithMiddleClick.Value FMain.ReadConfig End Private Sub NeedRestart(hCtrl As Control) Balloon.Warning(("You need to restart the application to see your changes."), hCtrl) End Public Sub cmbIconTheme_Click() If cmbIconTheme.Index > 0 Settings["/Theme"] = cmbIconTheme.Text Else Settings["/Theme"] = "*" Endif Project.UpdateTheme Stock.Refresh Project.Refresh 'NeedRestart(cmbIcontheme) End Public Sub cmbBrowser_Click() If cmbBrowser.Index > 0 Then Settings["/Browser"] = $aBrowser[cmbBrowser.Index - 1] Else Settings["/Browser"] = "" Endif Project.Browser = "" End Public Sub cmbTerminal_Click() If cmbTerminal.Index > 0 Then Settings["/Terminal"] = $aTerminal[cmbTerminal.Index - 1] Else Settings["/Terminal"] = "" Endif End Public Sub btnShowDebug_Click() Settings["/ShowDebugPanelAutomatically"] = btnShowDebug.Value End Public Sub btnUtility_Click() Settings["/UseUtilityWindows"] = btnUtility.Value NeedRestart(btnUtility) End Public Sub btnStartupLoad_Click() Settings["/RestoreFiles"] = btnStartupLoad.Value End Public Sub btnOptional_Click() Settings["/AlwaysDisplayOptionalMessages"] = btnOptional.Value End Private Sub UpdateOfflineHelp() MHelp.ReadConfig panDownloadHelp.Visible = btnOfflineHelp.Value panProxyConfig.Visible = False 'Not panDownloadHelp.Visible UpdateDocumentationState End Public Sub btnOfflineHelp_Click() Settings["/UseOfflineHelp"] = btnOfflineHelp.Value UpdateOfflineHelp FHelpBrowser.GotoHome End Public Sub btnClose_Click() Me.Close End ' Public Sub cmbMessage_Click() ' ' Settings["/ShowMessages"] = cmbMessage.Index ' FMain.ReadConfig ' ' End ' Public Sub btnIntegratedHelp_Click() ' ' Settings["/PropertyHelp"] = btnIntegratedHelp.Value ' FProperty.CheckIntegratedHelpSetting ' ' End Public Sub btnHelpCompletion_Click() Settings["/ShowHelpInPopup"] = btnHelpCompletion.Value End Public Sub dwgStyle_Draw() Dim hDraw As DrawingArea = Last Dim sKey As String = hDraw.Parent.Tag Dim hStyle As CStyle = CStyle[$cCurrent[sKey]] Dim sName As String Dim iForeground As Integer Dim iBackground As Integer Dim bInvert As Boolean Dim iBg As Integer Dim D As Integer Dim Y As Integer Dim W As Integer Dim LB As Integer Dim XB As Integer sName = MTheme.ColorNames[MTheme.ColorKeys.Find(sKey)] If Application.DarkTheme Then bInvert = Settings["/Editor/InvertTheme", True] If bInvert Then iBg = CStyle[$cCurrent["Background"]].Foreground If Color[iBg].Value < 128 Then bInvert = False Endif Paint.Font = Project.GetEditorFont() If MTheme.IsBackgroundStyle(sKey) Then iBackground = hStyle.Foreground iForeground = CStyle[$cCurrent["Normal"]].Foreground If bInvert Then iBackground = MTheme.InvertColor(iBackground, sKey) iForeground = MTheme.InvertColor(iForeground, "Normal") Endif Else iBackground = CStyle[$cCurrent["Background"]].Foreground iForeground = hStyle.Foreground If bInvert Then iBackground = MTheme.InvertColor(iBackground, "Background") iForeground = MTheme.InvertColor(iForeground, sKey) Endif Endif Paint.FillRect(0, 0, hDraw.W, hDraw.H, iBackground) D = Desktop.Scale W = hDraw.Width - D * 2 Paint.Background = iForeground If hStyle.Bold Then LB = 1 + Paint.Font.H \ If(bInvert, 4, 6) XB = D While LB >= 2 Paint.DrawText(sName, XB, 0, W, hDraw.H, Align.Normal) 'DrawText(sStr, SX, X + 1, Y) Inc XB LB -= 2 Wend If LB Then Paint.Background = Color.SetAlpha(iForeground, 128) Paint.DrawText(sName, XB, 0, W, hDraw.H, Align.Normal) Endif Else Paint.DrawText(sName, D, 0, W, hDraw.Height, Align.Normal) Endif Y = hDraw.H - (hDraw.H - Paint.Font.H) \ 2 W = Paint.Font.TextWidth(sName) If hStyle.Underline Then Paint.FillRect(D, Y, W, 1, Color.SetAlpha(iForeground, 128)) Else If hStyle.Dotted Then Paint.Background = Color.SetAlpha(iForeground, 128) Paint.LineWidth = 1 Paint.Dash = [1] Paint.MoveTo(D, Y - 0.5) Paint.RelLineTo(W, 0) Paint.Stroke Endif End Public Sub btnStyle_Click() $hDraw = Last.Parent '.Children[0] $sStyle = $hDraw.Parent.Tag mnuPopup.Popup End Public Sub mnuPopup_Show() With CStyle[$cCurrent[$sStyle]] mnuBold.Checked = .Bold mnuUnderline.Checked = .Underline mnuDotted.Checked = .Dotted End With End Private Sub UpdateStyle() Dim hStyle As New CStyle($cCurrent[$sStyle]) With hStyle .Bold = mnuBold.Checked .Underline = mnuUnderline.Checked .Dotted = mnuDotted.Checked End With $cCurrent[$sStyle] = hStyle.ToString() cmbTheme.Index = 0 RefreshEditor End Public Sub mnuBold_Click() mnuBold.Checked = Not mnuBold.Checked UpdateStyle End Public Sub mnuUnderline_Click() mnuUnderline.Checked = Not mnuUnderline.Checked UpdateStyle End Public Sub mnuDotted_Click() mnuDotted.Checked = Not mnuDotted.Checked UpdateStyle End Public Sub mnuColor_Click() Dim hStyle As New CStyle($cCurrent[$sStyle]) Dim iColor As Integer = hStyle.Foreground If FColorChooser.Run("&H" & Hex$(iColor, 6) & "&") Then Return hStyle.Foreground = FColorChooser.Value $cCurrent[$sStyle] = hStyle.ToString() cmbTheme.Index = 0 RefreshEditor End Public Sub btnUpperCaseKeywords_Click() Settings["/Editor/KeywordsUseUpperCase"] = btnUpperCaseKeywords.Value RefreshEditor End Public Sub btnControlStructCompletion_Click() Settings["/Editor/ControlStructCompletion"] = btnControlStructCompletion.Value FEditor.StructControlCompletion = btnControlStructCompletion.Value End Public Sub btnLocalVarDecl_Click() Settings["/Editor/LocalVariableDeclaration"] = btnLocalVarDecl.Value FEditor.LocalVariableDeclaration = btnLocalVarDecl.Value End Public Sub btnComment_Click() Settings["/Editor/AutoComment"] = btnComment.Value FEditor.AutoComment = btnComment.Value End Public Sub btnCloseBraces_Click() Settings["/Editor/CloseBraces"] = btnCloseBraces.Value RefreshEditor End Public Sub btnFold_Click() Settings["/Editor/ShowExpand"] = btnFold.Value RefreshEditor End ' Public Sub btnFoldProc_Click() ' ' Settings["/Editor/CollapseByDefault"] = btnFoldProc.Value ' ' End Public Sub btnWrapText_Click() Settings["/Editor/WrapTextByDefault"] = btnWrapText.Value End Public Sub btnTabIndent_Click() Settings["/Editor/TabIndentByDefault"] = btnTabIndent.Value End Public Sub Form_Open() Me.Center End Public Sub btnClearCache_Click() Dim sErr As String If Message.Question(("Do you really want to clear the documentation cache?"), ("Clear"), ("Cancel")) <> 1 Then Return Inc Application.Busy WebSettings.Cache.Clear() Dec Application.Busy Catch sErr = Error.Text Application.Busy = 0 Message.Error(("Unable to clear documentation cache.") & "\n\n" & sErr) End Public Sub txtEditorFont_Change() RefreshEditor End Public Sub txtConsoleFont_Change() RefreshConsole End Private Sub UpdateFont(sFont As String) If sFont <> Settings["/Font"] Then Settings["/Font"] = sFont If sFont Then Application.Font = Font[Settings["/Font"]] Else Application.Font = Font[Project.DESKTOP_FONT] Endif Project.InitWebView RefreshWindow Endif End Public Sub txtGlobalFont_Change() UpdateFont(txtGlobalFont.Value) End ' Public Sub svwOption_Arrange() ' ' panOption.Width = svwOption.ClientWidth - Desktop.Scale ' ' End Private Sub RefreshSnippet() CSampleCode.Init gvwSnippet.Rows.Count = CSampleCode.All.Count gvwSnippet.Rows.Height = Font[txtEditorFont.Value].Height + 8 gvwSnippet.Refresh End ' Public Sub tabOption_Click() ' ' If tabOption.Index = 2 Then ' If gvwSnippet.Rows.Count = 0 Then ' RefreshSnippet ' UpdateSnippet ' Endif ' Endif ' ' End Private Sub GetSnippet(Optional iRow As Integer = -1) As CSampleCode Dim hSampleCode As CSampleCode If iRow < 0 Then iRow = gvwSnippet.Row If iRow < 0 Then Return If Not gvwSnippet.Rows[iRow].Selected Then Return Endif Try hSampleCode = CSampleCode.All[CSampleCode.List[iRow]] Return hSampleCode End Public Sub gvwSnippet_Data(Row As Integer, Column As Integer) Dim hSampleCode As CSampleCode = GetSnippet(Row) If Not hSampleCode Then Return With gvwSnippet .Data.Padding = 4 '.Data.Font = Project.GetEditorFont() If Column = 0 Then .Data.Text = hSampleCode.Trigger If hSampleCode.Default Then '.Data.Font.Italic = True Else .Data.Font.Bold = True Endif Else .Data.Text = Mid$(Quote(hSampleCode.Pattern), 2, -1) Endif End With End Private Sub UpdateSnippet() Dim hSampleCode As CSampleCode = GetSnippet() If Not hSampleCode Then btnRemoveSnippet.Enabled = False btnEditSnippet.Enabled = False Else btnRemoveSnippet.Enabled = Not hSampleCode.Default btnEditSnippet.Enabled = True 'Not hSampleCode.Default Endif End Public Sub gvwSnippet_Select() UpdateSnippet End Public Sub btnCodeSnippet_Click() Settings["/Editor/CodeSnippet"] = btnCodeSnippet.Value End Public Sub btnInsertSnippet_Click() If FSnippet.Run() Then Return RefreshSnippet CSampleCode.Save gvwSnippet.Row = CSampleCode.List.Find(FSnippet.NewTrigger) End Public Sub btnEditSnippet_Click() Dim hSampleCode As CSampleCode = GetSnippet() If Not hSampleCode Then Return If FSnippet.Run(hSampleCode.Trigger) Then Return RefreshSnippet CSampleCode.Save End Public Sub gvwSnippet_Activate() btnEditSnippet.Value = True End Public Sub btnRemoveSnippet_Click() Dim hSampleCode As CSampleCode = GetSnippet() If Not hSampleCode Then Return If Message.Warning(("Do you really want to delete this snippet?"), ("Delete"), ("Cancel")) = 2 Then Return hSampleCode.Delete RefreshSnippet CSampleCode.Save End ' Public Sub btnUndoSnippet_Click() ' ' If Message.Warning(("Do you really want to reset snippets to their default value?"), ("Reset"), ("Cancel")) = 2 Then Return ' ' CSampleCode.Reset ' RefreshSnippet ' ' End ' Public Sub expOption_Show() ' ' Dim hLast As Expander = Last ' Dim hOther As Expander ' ' For Each hOther In svwOption.Children ' If hOther <> hLast Then hOther.Hidden = True ' Next ' ' End Private Sub RefreshBackground() Dim hBg As CBackground Dim sBackground As String Dim hImage As Image Dim iColor As Integer Inc Application.Busy iColor = FColorChooser.FromString(Settings["/Background/Color", "#FFFFFF"]) svwBackground.Children.Clear hBg = New CBackground(svwBackground) As "Background" hBg.Tag = "void" hImage = New Image(16, 16, Color.LightForeground) hBg.SetImage(hImage, iColor) For Each sBackground In Split(File.Load("img/background/list"), "\n", "", True) Try hImage = Image.Load("img/background" &/ sBackground & ".png") If Error Then Error "gambas3: warning: unable to load background image: "; sBackground hBg = New CBackground(svwBackground) As "Background" hBg.SetImage(hImage, iColor) hBg.Tag = sBackground Next sBackground = Settings["/Background/Image", Project.DEFAULT_BACKGROUND] For Each hBg In svwBackground.Children If hBg.Tag = sBackground Then hBg.Selected = True svwBackground.EnsureVisible(hBg.X, hBg.Y, hBg.W, hBg.H) Endif Next Dec Application.Busy End Public Sub ipnOption_Click() Select Case ipnOption.Text Case ("Projects") panCompressPng.Enabled = System.Exist("pngquant") panAutoTrans.Enabled = System.Exist("trans") If panAutoTrans.Enabled Then FillAutoTransEngines Else btnAutoTrans.Value = False Endif Case ("Code snippets") If gvwSnippet.Rows.Count = 0 Then RefreshSnippet UpdateSnippet Endif Case ("Background") If svwBackground.Children.Count = 0 Then RefreshBackground Endif Case ("Help & applications") UpdateOfflineHelp Case ("Interface") SetCurrentLayout If Not $aLayout Then RefreshLayout End Select End Public Sub btnIndentDim_Click() Settings["/FormatCode/IndentLocal"] = btnIndentDim.Value End Public Sub btnRemoveSpace_Click() Settings["/FormatCode/RemoveSpaces"] = btnRemoveSpace.Value End Public Sub btnKeepVoidLine_Click() Settings["/FormatCode/KeepVoidLines"] = btnKeepVoidLine.Value End Public Sub btnFormatOnLoad_Click() Settings["/FormatCode/FormatOnLoad"] = btnFormatOnLoad.Value End Public Sub btnProxy_Click() With FProxy .Type = Settings["/Proxy/Type", 0] .Host = Settings["/Proxy/Host"] .Port = Settings["/Proxy/Port", 0] .User = Settings["/Proxy/User"] End With If FProxy.Run() Then Return With FProxy Settings["/Proxy/Type"] = .Type Settings["/Proxy/Host"] = .Host Settings["/Proxy/Port"] = .Port Settings["/Proxy/User"] = .User End With MHelp.LoadProxyConfig End Public Sub txtName_LostFocus() Settings["/Identity/Name"] = txtName.Text End Public Sub txtMail_LostFocus() Settings["/Identity/Mail"] = txtMail.Text End Public Sub txtVendor_LostFocus() Settings["/Packager/Vendor"] = txtVendor.Text End Public Sub txtVendorPrefix_LostFocus() Settings["/Packager/VendorPrefix"] = txtVendorPrefix.Text End Public Sub txtLicense_LostFocus() Settings["/Packager/License"] = txtLicense.Text End Public Sub txtURL_LostFocus() Settings["/Packager/URL"] = txtURL.Text End Public Sub cmbPrefix_Click() Settings["/Packager/UsePrefix"] = cmbPrefix.Index = 1 End Public Sub btnInstallFont_Click() Dim sDir As String = "~/.fonts" Dim sConf As String Dim sData As String Dim sFont As String If Message.Question(("Do you really want to install the Gambas font into your personal font directory?"), ("Install"), ("Cancel")) <> 1 Then Return If Not Exist(sDir) Then Mkdir sDir 'For Each sFont In ["GambasMedium-12.bdf", "GambasBold-12.bdf", "GambasMedium-13.bdf", "GambasBold-13.bdf", "GambasMedium-16.bdf", "GambasBold-16.bdf"] For Each sFont In Dir("font", "*.otb") Try Kill sDir &/ sFont Try Copy "font" &/ sFont To sDir &/ sFont Next Project.MakeDir("~/.config/fontconfig") sConf = "~/.config/fontconfig/fonts.conf" 'If Not Exist(sConf) Then sConf = "~/.config/fontconfig/.fonts.conf" If Not Exist(sConf) Then Try Copy "font/font.conf" To sConf Endif sData = File.Load(sConf) If InStr(sData, "Gambas") = 0 Then sData = Replace(sData, "", RTrim(File.Load("font/font.allow")) & "\n") File.Save(sConf, sData) Endif NeedRestart(btnInstallFont) End Public Sub Background_MouseDown() Dim hBg As CBackground For Each hBg In svwBackground.Children hBg.Selected = hBg = Last Next hBg = Last svwBackground.EnsureVisible(hBg.X, hBg.Y, hBg.W, hBg.H) Project.SetBackground(hBg.Tag) End Public Sub btnShortcut_Click() Action.Configure End ' Public Sub txtOfflineHelp_Click() ' ' Dialog.Title = ("Select the offline help directory") ' Dialog.Path = Project.UntildePath(txtOfflineHelp.Text) ' If Dialog.SelectDirectory() Then Return ' ' txtOfflineHelp.Text = Project.TildePath(Dialog.Path) ' MHelp.ReadConfig ' ' End ' Public Sub txtOfflineHelp_Change() ' ' Settings["/OfflineHelpDir"] = txtOfflineHelp.Text ' ' End ' ' Public Sub txtOfflineHelp_KeyPress() ' ' If Key.Code = Key.Delete Or Key.Code = Key.Backspace Then ' txtOfflineHelp.Clear ' Endif ' ' End Private Sub UpdateDocumentationState() If Not panDownloadHelp.Visible Then Return If $hDownloadHelp Then Return pgbDownload.Hide btnCancelDownload.Hide btnDownload.Enabled = True Select Case MHelp.GetOfflineState() Case MHelp.OFFLINE_NO_NETWORK lblDocumentation.Text = ("Network is not available.") lblDocumentation.Foreground = Color.Foreground panDownload.Enabled = False Case MHelp.OFFLINE_UP_TO_DATE lblDocumentation.Text = ("Documentation is up to date.") lblDocumentation.Foreground = Color.Foreground panDownload.Enabled = False Case MHelp.OFFLINE_NEW_AVAILABLE lblDocumentation.Text = ("A new documentation is available!") lblDocumentation.Foreground = Color.Red panDownload.Enabled = True Case Else lblDocumentation.Text = ("Documentation is not available.") lblDocumentation.Foreground = Color.Foreground panDownload.Enabled = False End Select End Public Sub Form_Close() Settings.Save End Public Sub choBackgroundColor_Click() Project.SetBackgroundColor("#" & Hex$(choBackgroundColor.Current, 6)) RefreshBackground End Public Sub Form_Activate() ipnOption_Click End Public Sub btnInvertTheme_Click() Settings["/Editor/InvertTheme"] = btnInvertTheme.Value RefreshEditor End Public Sub btnVersionControl_Click() Settings["/VersionControl/Enabled"] = btnVersionControl.Value VersionControl.Refresh Project.Refresh End Private Sub RefreshBrowser() If $bNoChange Then Return Settings["/Browser/Font"] = txtHelpDefaultFont.Value Settings["/Browser/FixedFont"] = txtHelpFixedFont.Value Project.InitWebView End Public Sub txtHelpDefaultFont_Change() RefreshBrowser End Public Sub txtHelpFixedFont_Change() RefreshBrowser End Public Sub cmbHelpZoom_Click() Settings["/Help/Zoom"] = GetPercentSize(cmbHelpZoom) FProperty.ReadConfig FCompletion.ReadConfig End Public Sub btnCompressPng_Click() Settings["/CompressPng"] = btnCompressPng.Value End ' Public Sub dwnHelp_Finish() ' ' Dim sMsg As String ' Dim sDir As String ' Dim sTimestamp As String ' Dim sFile As String ' Dim sParentDir As String ' ' sFile = dwnHelp.Target ' sDir = MHelp.GetOfflineDir() ' sParentDir = File.Dir(sFile) ' ' Inc Application.Busy ' ' sTimestamp = HttpClient.Download("http://gambaswiki.org/timestamp") ' ' Shell "rm -rf " & Shell(sParentDir &/ "gambas") Wait ' ' Shell "cd " & Shell$(sParentDir) & " && tar xfj " & Shell$(File.Name(sFile)) Wait ' ' If Not IsDir(sParentDir &/ "gambas") Then ' Shell "rm -rf " & Shell(sDir) & " " & Shell$(sFile) Wait ' sMsg = ("Unable to uncompress documentation.") ' Goto FAIL ' Endif ' ' If IsDir(sDir & "~") Then Shell "rm -rf " & Shell(sDir & "~") Wait ' If IsDir(sDir) Then Try Move sDir To sDir & "~" ' Try Move sParentDir &/ "gambas" To sDir ' ' If Not IsDir(sDir) Then ' sMsg = ("Unable to install documentation.") ' Goto FAIL ' Endif ' ' File.Save(sDir &/ "timestamp", sTimestamp) ' ' UpdateDocumentationState ' Dec Application.Busy ' Return ' ' FAIL: ' ' Dec Application.Busy ' Message.Warning(sMsg) ' Return ' ' End ' Public Sub dwnHelp_Start() ' ' Dim sDir As String ' Dim sParentDir As String ' Dim sFile As String ' Dim sMsg As String ' ' sMsg = Project.RequireProgram(["tar"]) ' If sMsg Then Error.Raise(sMsg) ' ' sDir = MHelp.GetOfflineDir() ' sParentDir = File.Dir(sDir) ' Project.MakeDir(sParentDir) ' sFile = sParentDir &/ "wiki.tar.bz2" ' Try Kill sFile ' ' dwnHelp.Target = sFile ' ' End ' Public Sub btnDownload_Click() Dim sMsg As String sMsg = Project.RequireProgram(["tar"]) If sMsg Then Error.Raise(sMsg) $hDownloadHelp = New DownloadManager As "DownloadHelp" $hDownloadHelp.Add("http://gambaswiki.org/gambas-wiki.tar.bz2", "help") $hDownloadHelp.Add("http://gambaswiki.org/timestamp", "timestamp") btnDownload.enabled = False $hDownloadHelp.Start pgbDownload.Show btnCancelDownload.Show End Public Sub DownloadHelp_Progress() If $hDownloadHelp.Progress > 0 Then pgbDownload.Pulse = False pgbDownload.Value = $hDownloadHelp.Progress Else pgbDownload.Pulse = True Endif End Public Sub DownloadHelp_Error((Key) As String) Message.Error(("Cannot download '&1'.") & "\n\n&2", $hDownloadHelp[Key].Url, $hDownloadHelp[Key].ErrorText) $hDownloadHelp = Null UpdateDocumentationState End Public Sub DownloadHelp_End() Dim sDir As String Dim sParentDir As String Dim sFile As String Dim sMsg As String Inc Application.Busy pgbDownload.Hide btnCancelDownload.Hide sDir = MHelp.GetOfflineDir() sParentDir = File.Dir(sDir) Shell.MkDir(sParentDir) sFile = sParentDir &/ "wiki.tar.bz2" Shell.Move($hDownloadHelp["help"].Path, sFile, True) Try Shell.RmDir(sParentDir &/ "gambas") 'Shell "rm -rf " & Shell(sParentDir &/ "gambas") Wait Shell "cd " & Shell$(sParentDir) & " && tar xfj " & Shell$(File.Name(sFile)) Wait If Not IsDir(sParentDir &/ "gambas") Then sMsg = ("Unable to uncompress documentation.") Try Shell.RmDir(sParentDir &/ "gambas") Try Kill sFile Goto FAIL Endif If IsDir(sDir & "~") Then Shell.RmDir(sDir & "~") 'Shell "rm -rf " & Shell(sDir & "~") Wait If IsDir(sDir) Then Try Move sDir To sDir & "~" Try Move sParentDir &/ "gambas" To sDir If Not IsDir(sDir) Then sMsg = ("Unable to install documentation.") Goto FAIL Endif Shell.Move($hDownloadHelp["timestamp"].Path, sDir &/ "timestamp", True) 'File.Save(sDir &/ "timestamp", sTimestamp) $hDownloadHelp = Null UpdateDocumentationState MHelp.OnDocumentationUpdate Dec Application.Busy Return FAIL: Dec Application.Busy Message.Warning(sMsg) Return End Public Sub btnCancelDownload_Click() $hDownloadHelp.Stop() $hDownloadHelp = Null UpdateDocumentationState End Public Sub btnCloseStrings_Click() Settings["/Editor/CloseStrings"] = btnCloseStrings.Value RefreshEditor End Public Sub btnAutoTrans_Click() Settings["/AutomaticTranslation/Enabled"] = btnAutoTrans.Value panAutoTransEngine.Visible = btnAutoTrans.Value End Public Sub cmbAutoTrans_Click() Settings["/AutomaticTranslation/Engine"] = cmbAutoTrans.Text End Private Sub FillAutoTransEngines() Dim sResult As String Dim sEngine As String Dim aEngine As New String[] If cmbAutoTrans.Count Then Return Exec ["trans", "-S"] To sResult For Each sEngine In Split(Trim(sResult), "\n") If sEngine Begins "* " Then sEngine = Mid$(sEngine, 2) sEngine = Trim(sEngine) If sEngine Then aEngine.Add(sEngine) Next If Not aEngine.Exist("google") Then aEngine.Add("google") aEngine.Sort() cmbAutoTrans.List = aEngine cmbAutoTrans.Text = Settings["/AutomaticTranslation/Engine", "google"] If cmbAutoTrans.Index < 0 Then cmbAutoTrans.Text = "google" End Public Sub txtPrintFont_Click() Settings["/Printing/Font"] = txtPrintFont.Value End Private Sub GetLayoutDir() As String Return Desktop.DataDir &/ "gambas3/layout" End Private Sub GetLayoutPath(sFile As String) As String If sFile Then Return GetLayoutDir() &/ sFile & ".layout" Else Return Temp$("layout") Endif End Private Sub RefreshLayout() Dim sFile As String Dim sLang As String Dim iPos As Integer Dim sFullLang As String Dim sName As String Dim sDir As String If Not $cLayoutName Then $cLayoutName = New Collection $cLayoutName["$default"] = ("Default") $cLayoutName["$compact"] = ("Compact") Endif sLang = System.Language iPos = InStr(sLang, ".") If iPos Then sLang = Left(sLang, iPos - 1) iPos = InStr(sLang, "_") If iPos Then sFullLang = sLang sLang = Left(sLang, iPos - 1) Endif $aLayout = New String[] $aLayout.Add("") $aLayout.Add("" & ("Current") & "") sDir = GetLayoutDir() For Each sFile In Dir("layout", "*.layout").Sort(gb.Natural) If Exist(sDir &/ sFile) Then Continue sName = File.BaseName(sFile) $aLayout.Add(sName) If $cLayoutName.Exist(sName) Then sName = $cLayoutName[sName] $aLayout.Add(Html(sName)) Next If IsDir(sDir) Then For Each sFile In Dir(sDir, "*.layout").Sort(gb.Natural) sName = File.BaseName(sFile) $aLayout.Add(sName) If $cLayoutName.Exist(sName) Then sName = $cLayoutName[sName] $aLayout.Add(Html(sName)) Next Endif gvwLayout.Rows.Count = $aLayout.Count \ 2 Object.Lock(gvwLayout) gvwLayout.Row = 0 Object.Unlock(gvwLayout) End Public Sub gvwLayout_Data(Row As Integer, (Column) As Integer) gvwLayout.Data.RichText = $aLayout[Row * 2 + 1] End Private Sub SaveLayout(Optional sFile As String) Dim sPath As String Dim hSettings As Settings sPath = GetLayoutPath(sFile) If sFile And If Exist(sPath) Then If Message.Question(("Do you really want to override the existing layout?"), ("Override"), ("Cancel")) <> 1 Then Return Endif Shell.MkDir(File.Dir(sPath)) hSettings = New Settings(sPath, "Gambas IDE layout") hSettings["Toolbar/Main"] = ToolBar.GetLayout("FMain.main") hSettings["Toolbar/Editor"] = ToolBar.GetLayout("FEditor.editor") hSettings["Toolbar/Text"] = ToolBar.GetLayout("FTextEditor.text") hSettings["Toolbar/Connection"] = ToolBar.GetLayout("FConnectionEditor.connection") hSettings["Toolbar/Form"] = ToolBar.GetLayout("FForm.form") hSettings["Toolbar/Image"] = ToolBar.GetLayout("FImageEditor.image") hSettings["ShowMenus"] = Settings["/ShowMenus"] hSettings["Toolbox/Size"] = Settings["/Toolbox/Size"] hSettings["CloseWithMiddleClick"] = Settings["/CloseWithMiddleClick"] hSettings["ProjectFontSize"] = Settings["/ProjectFontSize"] hSettings["TitleFontSize"] = Settings["/TitleFontSize"] hSettings["DebuggerFontSize"] = Settings["/DebuggerFontSize"] hSettings["Help/Zoom"] = Settings["/Help/Zoom"] hSettings["Property/Help"] = Not FProperty.IsHelpHidden() hSettings["/Editor/InvertTheme"] = Settings["/Editor/InvertTheme"] hSettings.Save End Private Sub LoadLayout(sName As String) Dim sPath As String Dim sKey As String Dim hSettings As Settings Dim sSlot As String Dim vVal As Variant Inc Application.Busy sPath = GetLayoutPath(sName) If Not Exist(sPath) Then sPath = "./layout" &/ sName & ".layout" hSettings = New Settings(sPath, "Gambas IDE layout") ' Toolbars last For Each sSlot In hSettings.Keys For Each sKey In hSettings.Keys[sSlot] vVal = hSettings[sSlot &/ sKey] If sSlot = "Toolbar" Then Continue If sSlot = "Property" And If sKey = "Help" Then FProperty.ShowHelp(vVal) Else Settings[sSlot &/ sKey] = vVal Endif Next Next RefreshWindow For Each sKey In hSettings.Keys["Toolbar"] vVal = hSettings[sSlot &/ sKey] ToolBar.SetLayout(sKey, vVal) Next Finally Dec Application.Busy Catch Error.Propagate() End Public Sub btnSaveLayout_Click() Dim sName As String If gvwLayout.Row > 0 Then sName = $aLayout[gvwLayout.Row * 2 + 1] If FLayout.Run($aLayout, sName) Then Return SaveLayout(FLayout.LayoutName) RefreshLayout End Private Sub RemoveLayout(sFile As String) Dim sPath As String sPath = GetLayoutPath(sFile) Try Kill sPath RefreshLayout End Public Sub btnDeleteLayout_Click() If Message.Warning(("Do you really want to delete that layout?"), ("Delete"), ("Cancel")) <> 1 Then Return RemoveLayout($aLayout[gvwLayout.Row * 2]) End Public Sub gvwLayout_Select() Dim sName As String If gvwLayout.Row < 0 Then btnDeleteLayout.Enabled = False Return Endif sName = $aLayout[gvwLayout.Row * 2] btnDeleteLayout.Enabled = Exist(GetLayoutPath(sName)) LoadLayout(sName) End Private Sub SetCurrentLayout() SaveLayout() End Public Sub sldBackgroundBrightness_Change() Dim iVal As Integer iVal = sldBackgroundBrightness.Value iVal = Sgn(iVal) * ((Abs(iVal) + 8) \ 16) * 16 Object.Lock(sldBackgroundBrightness) sldBackgroundBrightness.Value = iVal Object.Unlock(sldBackgroundBrightness) Project.SetBackgroundBrightness(sldBackgroundBrightness.Value) 'RefreshBackground End gambas-3.16.3/app/src/gambas3/.src/Options/FOption.form000066400000000000000000000714001411575327000224740ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,98,66) Action = "option" Text = ("Preferences") Icon = Picture["icon:/small/options"] Persistent = True Utility = True Arrangement = Arrange.Fill Spacing = True Margin = True { mnuPopup Menu Visible = False { mnuColor Menu Text = ("Color") & "..." Picture = Picture["icon:/small/color"] } { Menu1 Menu } { mnuBold Menu Text = ("Bold") Picture = Picture["icon:/small/text-bold"] } { mnuUnderline Menu Text = ("Underline") Picture = Picture["icon:/small/text-underline"] } { mnuDotted Menu Text = ("Dotted") } } { ipnOption IconPanel MoveScaled(1,1,95,64) Arrangement = Arrange.Vertical Spacing = True Count = 10 Border = True Index = 0 Text = ("Identity") Picture = Picture["icon:/large/identity"] { Label60 Label MoveScaled(1,1,61,3) Font = Font["Bold"] Text = ("Identity") } { HBox22 HBox MoveScaled(1,5,66,4) Spacing = True Indent = True { Label61 Label MoveScaled(0,0,17,4) Expand = True Text = ("Name") } { txtName TextBox MoveScaled(20,0,44,4) } } { HBox50 HBox MoveScaled(1,10,66,4) Spacing = True Indent = True { Label63 Label MoveScaled(0,0,17,4) Expand = True Text = ("E-mail") } { txtMail TextBox MoveScaled(20,0,44,4) } } { Label66 Label MoveScaled(1,16,61,3) Font = Font["Bold"] Text = ("Package maintainer") } { HBox37 HBox MoveScaled(1,20,66,4) Spacing = True Indent = True { Label34 Label MoveScaled(0,0,17,4) Expand = True Text = ("Vendor name") } { txtVendor MaskBox MoveScaled(20,0,44,4) Filter = "[A-Za-z0-9_-]" } } { HBox36 HBox MoveScaled(1,25,66,4) Spacing = True Indent = True { Label35 Label MoveScaled(0,0,17,4) Expand = True Text = ("Vendor prefix") } { txtVendorPrefix MaskBox MoveScaled(20,0,44,4) Filter = "[A-Za-z0-9]" } } { HBox39 HBox MoveScaled(1,31,66,4) Spacing = True Indent = True { Label37 Label MoveScaled(0,0,17,4) Expand = True Text = ("Default license") } { txtLicense ComboBox MoveScaled(20,0,44,4) #Translate = False List = ["General Public License", "Public Domain", "Lesser General Public License", "Other License(s)", "Non-free License"] Sorted = True } } { HBox40 HBox MoveScaled(1,36,66,4) Spacing = True Indent = True { Label38 Label MoveScaled(0,0,17,4) Expand = True Text = ("URL") } { txtURL TextBox MoveScaled(20,0,44,4) } } { HBox34 HBox MoveScaled(1,41,66,4) Spacing = True Indent = True { Label41 Label MoveScaled(0,0,50,4) Expand = True Text = ("Add vendor prefix or name to package names") } { cmbPrefix ComboBox MoveScaled(53,0,10,4) ReadOnly = True List = [("No"), ("Yes")] } } Index = 1 Text = ("Projects") Picture = Picture["icon:/large/copy"] { Label67 Label MoveScaled(0,1,63,3) Font = Font["Bold"] Text = ("Projects") } { HBox14 HBox MoveScaled(1,5,66,4) Spacing = True Indent = True { Label40 Label MoveScaled(0,0,31,4) Expand = True Text = ("Default tab size") } { txtTabSize SpinBox MoveScaled(48,0,7,4) MinValue = 1 MaxValue = 16 Value = 2 Alignment = Align.Right } { Label3 Label MoveScaled(57,0,8,4) AutoResize = True Text = ("space(s)") } } { HBox53 HBox MoveScaled(1,10,66,4) Spacing = True Indent = True { Label65 Label MoveScaled(0,0,47,4) Expand = True Text = ("Indent with tab by default") } { btnTabIndent SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox35 HBox MoveScaled(1,15,66,4) Spacing = True Indent = True { Label33 Label MoveScaled(0,0,47,4) Expand = True Text = ("Automatic word wrap by default") } { btnWrapText SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox54 HBox MoveScaled(1,20,66,4) Spacing = True Indent = True { Label68 Label MoveScaled(0,0,47,4) Expand = True Text = ("Activate version control") } { btnVersionControl SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox44 HBox MoveScaled(1,25,66,4) Spacing = True Indent = True { Label53 Label MoveScaled(0,0,42,4) Expand = True Text = ("Restore files when loading a project") } { btnStartupLoad SwitchButton MoveScaled(50,0,8,4) Animated = True } } { Label16 Label MoveScaled(0,30,63,3) Font = Font["Bold"] Text = ("Compilation") } { HBox4 HBox MoveScaled(1,34,66,4) Spacing = True Indent = True { Label17 Label MoveScaled(0,0,31,4) Expand = True Text = ("Number of background jobs") } { txtCompilerJobs SpinBox MoveScaled(48,0,7,4) MaxValue = 16 Alignment = Align.Right } } { Label83 Label MoveScaled(0,40,63,3) Font = Font["Bold"] Text = ("Images") } { panCompressPng Panel MoveScaled(1,44,66,4) Arrangement = Arrange.Horizontal Spacing = True Indent = True { Label77 Label MoveScaled(0,0,25,4) AutoResize = True Text = ("Compress PNG images with ") } { URLLabel1 URLLabel MoveScaled(25,0,11,4) #Translate = False AutoResize = True Text = "pngquant" Link = "https://pngquant.org/" } { Spring3 Spring MoveScaled(38,1,5,2) } { btnCompressPng SwitchButton MoveScaled(50,0,8,4) Animated = True } } { Label82 Label MoveScaled(0,51,63,3) Font = Font["Bold"] Text = ("Translation") } { panAutoTrans HBox MoveScaled(1,55,66,4) Spacing = True Indent = True { Label80 Label MoveScaled(0,0,24,4) AutoResize = True Text = ("Automatic translation with ") } { URLLabel2 URLLabel MoveScaled(23,0,14,4) #Translate = False AutoResize = True Text = "translate-shell" Link = "https://github.com/soimort/translate-shell" } { Spring4 Spring MoveScaled(40,1,6,2) } { btnAutoTrans SwitchButton MoveScaled(51,0,8,4) Animated = True } } { panAutoTransEngine HBox MoveScaled(1,60,66,4) Visible = False Spacing = True Indent = True { Label81 Label MoveScaled(0,0,43,4) Expand = True Text = ("Translation engine") } { cmbAutoTrans ComboBox MoveScaled(50,0,16,4) ReadOnly = True } } Index = 2 Text = ("Help & applications") Picture = Picture["icon:/large/help"] { Label46 Label MoveScaled(1,0,63,3) Font = Font["Bold"] Text = ("Help") } { HBox5 HBox MoveScaled(1,3,66,4) Spacing = True Indent = True { Label23 Label MoveScaled(0,0,47,4) Expand = True Text = ("Show documentation in popups") } { btnHelpCompletion SwitchButton MoveScaled(48,0,8,4) Animated = True } } { HBox28 HBox MoveScaled(1,8,66,4) Spacing = True Indent = True { Label9 Label MoveScaled(0,0,47,4) Expand = True Text = ("Always display optional messages") } { btnOptional SwitchButton MoveScaled(48,0,8,4) Animated = True } } { Label72 Label MoveScaled(0,14,63,3) Font = Font["Bold"] Text = ("Documentation") } { HBox49 HBox MoveScaled(1,18,66,4) Spacing = True Indent = True { Label59 Label MoveScaled(0,0,47,4) Expand = True Text = ("Use offline documentation") } { btnOfflineHelp SwitchButton MoveScaled(48,0,8,4) Animated = True } } { panDownloadHelp HBox MoveScaled(1,23,62,7) Indent = True { VBox1 VBox MoveScaled(0,0,60,7) Expand = True { lblDocumentation Label MoveScaled(0,0,35,3) Font = Font["Italic,-1"] Alignment = Align.TopNormal } { panDownload HBox MoveScaled(1,3,57,4) Spacing = True { btnDownload Button MoveScaled(0,0,27,4) AutoResize = True Text = ("Download documentation") Picture = Picture["icon:/small/download"] } { btnCancelDownload Button MoveScaled(27,0,4,4) Visible = False Picture = Picture["icon:/small/cancel"] } { pgbDownload ProgressBar MoveScaled(33,0,18,4) Visible = False Expand = True } } } } { panProxyConfig HBox MoveScaled(1,33,66,4) Indent = True { btnProxy Button MoveScaled(0,0,31,4) AutoResize = True Text = ("Proxy configuration") & "..." Picture = Picture["icon:/small/internet"] } } { Panel4 HBox MoveScaled(1,38,66,4) Indent = True { btnClearCache Button MoveScaled(0,0,31,4) Enabled = False AutoResize = True Text = ("Clear documentation cache") & "..." Picture = Picture["icon:/small/trash"] } } { Label45 Label MoveScaled(1,44,63,3) Font = Font["Bold"] Text = ("Applications") } { HBox12 HBox MoveScaled(1,49,66,4) Spacing = True Indent = True { Label13 Label MoveScaled(0,0,43,4) Expand = True Text = ("Browser") } { cmbBrowser ComboBox MoveScaled(46,0,20,4) ReadOnly = True } } { HBox2 HBox MoveScaled(1,54,66,4) Spacing = True Indent = True { Label4 Label MoveScaled(0,0,44,4) Expand = True Text = ("Terminal") } { cmbTerminal ComboBox MoveScaled(46,0,20,4) ReadOnly = True } } Index = 3 Text = ("Editor") Picture = Picture["icon:/large/edit"] { Label44 Label MoveScaled(0,1,63,3) Font = Font["Bold"] Text = ("Editor") } { HBox38 HBox MoveScaled(1,5,66,4) Spacing = True Indent = True { Label36 Label MoveScaled(0,0,47,4) Expand = True Text = ("Show indentation with vertical lines") } { btnShowIndent SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox17 HBox MoveScaled(1,10,66,4) Spacing = True Indent = True { Label6 Label MoveScaled(0,0,47,4) Expand = True Text = ("Highlight current line") } { btnShowCurrent SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox16 HBox MoveScaled(1,15,66,4) Spacing = True Indent = True { Label7 Label MoveScaled(0,0,47,4) Expand = True Text = ("Highlight modified lines") } { btnShowChange SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox15 HBox MoveScaled(1,20,66,4) Spacing = True Indent = True { Label8 Label MoveScaled(0,0,47,4) Expand = True Text = ("Show line numbers") } { btnShowLineNumber SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox42 HBox MoveScaled(1,25,66,4) Spacing = True Indent = True { Label50 Label MoveScaled(0,0,47,4) Expand = True Text = ("Procedure folding") } { btnFold SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox18 HBox MoveScaled(1,30,66,4) Spacing = True Indent = True { Label5 Label MoveScaled(0,0,46,4) Expand = True Text = ("Procedure separation") } { btnShowLimit SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox29 HBox MoveScaled(1,35,66,4) Spacing = True Indent = True { Label25 Label MoveScaled(0,0,47,4) Expand = True Text = ("Show spaces at end of line with dots") } { btnShowSpaces SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox51 HBox MoveScaled(1,40,66,4) Spacing = True Indent = True { Label62 Label MoveScaled(0,0,47,4) Expand = True Text = ("Show Preview") } { btnShowPreview SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox20 HBox MoveScaled(1,45,66,4) Visible = False Spacing = True Indent = True { Label20 Label MoveScaled(0,0,47,4) Expand = True Text = ("Keywords in upper case") } { btnUpperCaseKeywords SwitchButton MoveScaled(50,0,8,4) Animated = True } } Index = 4 Text = ("Code formatting") Picture = Picture["icon:/large/wizard"] { Label52 Label MoveScaled(1,0,63,3) Font = Font["Bold"] Text = ("Automatic formatting") } { HBox25 HBox MoveScaled(1,4,66,4) Spacing = True Indent = True { Label22 Label MoveScaled(0,0,47,4) Expand = True Text = ("Control structure completion") } { btnControlStructCompletion SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox43 HBox MoveScaled(1,9,66,4) Spacing = True Indent = True { Label51 Label MoveScaled(0,0,47,4) Expand = True Text = ("Local variable declaration") } { btnLocalVarDecl SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox47 HBox MoveScaled(1,14,66,4) Spacing = True Indent = True { Label56 Label MoveScaled(0,0,47,4) Expand = True Text = ("Comments insertion") } { btnComment SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox52 HBox MoveScaled(1,19,66,4) Spacing = True Indent = True { Label64 Label MoveScaled(0,0,47,4) Expand = True Text = ("Close braces, brackets") & "..." } { btnCloseBraces SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox64 HBox MoveScaled(1,24,66,4) Spacing = True Indent = True { Label79 Label MoveScaled(0,0,47,4) Expand = True Text = ("Close strings") } { btnCloseStrings SwitchButton MoveScaled(50,0,8,4) Animated = True } } { Label48 Label MoveScaled(1,31,63,3) Font = Font["Bold"] Text = ("Explicit formating") } { HBox33 HBox MoveScaled(1,35,66,4) Spacing = True Indent = True { Label31 Label MoveScaled(0,0,47,4) Expand = True Text = ("Format on load & save") } { btnFormatOnLoad SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox30 HBox MoveScaled(1,40,66,4) Spacing = True Indent = True { Label28 Label MoveScaled(0,0,47,4) Expand = True Text = ("Indent local variable declaration") } { btnIndentDim SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox31 HBox MoveScaled(1,45,66,4) Spacing = True Indent = True { Label29 Label MoveScaled(0,0,47,4) Expand = True Text = ("Remove useless spaces at end of line") } { btnRemoveSpace SwitchButton MoveScaled(50,0,8,4) Animated = True } } { HBox32 HBox MoveScaled(1,50,66,4) Spacing = True Indent = True { Label30 Label MoveScaled(0,0,47,4) Expand = True Text = ("Keep successive void lines") } { btnKeepVoidLine SwitchButton MoveScaled(50,0,8,4) Animated = True } } Index = 5 Text = ("Code snippets") Picture = Picture["icon:/large/insert-text"] { Label47 Label MoveScaled(1,0,63,3) Font = Font["Bold"] Text = ("Code snippets") } { HBox9 HBox MoveScaled(1,4,66,4) Spacing = True { Label55 Label MoveScaled(0,0,47,4) Expand = True Text = ("Activate code snippets") } { btnCodeSnippet SwitchButton MoveScaled(50,0,8,4) Animated = True } } { Panel9 HBox MoveScaled(1,9,66,25) Expand = True { HBox27 VBox MoveScaled(0,0,65,24) Expand = True Spacing = True { gvwSnippet GridView MoveScaled(4,2,33,16) Expand = True Mode = Select.Single ScrollBar = Scroll.Vertical } { VBox2 HBox MoveScaled(1,19,62,4) Spacing = True { btnImportSnippet Button MoveScaled(0,25,17,4) Visible = False AutoResize = True Text = Shortcut(("Import"), "I") & "..." Picture = Picture["icon:/small/open"] } { btnInsertSnippet Button MoveScaled(0,0,17,4) AutoResize = True Text = Shortcut(("New"), "N") & "..." Picture = Picture["icon:/small/new"] } { btnEditSnippet Button MoveScaled(18,0,17,4) AutoResize = True Text = Shortcut(("Edit"), "E") & "..." Picture = Picture["icon:/small/edit"] } { btnRemoveSnippet Button MoveScaled(36,0,17,4) AutoResize = True Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/delete"] } } } } Index = 6 Text = ("Interface") Picture = Picture["icon:/large/view-icon"] { Label43 Label MoveScaled(0,1,63,3) Font = Font["Bold"] Text = ("Interface") } { HBox58 HBox MoveScaled(1,5,66,4) Spacing = True Indent = True { Label57 Label MoveScaled(0,0,42,4) Expand = True Text = ("Activate animations") } { btnAnimation SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox59 HBox MoveScaled(1,10,66,4) Spacing = True Indent = True { Label71 Label MoveScaled(0,0,42,4) Expand = True Text = ("Show shadows") } { btnShadow SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox3 HBox MoveScaled(1,15,66,4) Spacing = True Indent = True { Label10 Label MoveScaled(0,0,42,4) Expand = True Text = ("Show tooltips") } { btnTooltip SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox26 HBox MoveScaled(1,20,66,4) Spacing = True Indent = True { Label15 Label MoveScaled(0,0,42,4) Expand = True Text = ("Use utility windows") } { btnUtility SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox41 HBox MoveScaled(1,25,66,4) Spacing = True Indent = True { Label39 Label MoveScaled(0,0,47,4) Expand = True Text = ("Close tabs with middle mouse click") } { btnCloseWithMiddleClick SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox48 HBox MoveScaled(1,30,66,4) Spacing = True Indent = True { Label58 Label MoveScaled(0,0,42,4) Expand = True Text = ("Show file name in window title") } { btnShowFileInTitle SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox57 HBox MoveScaled(1,35,66,4) Spacing = True Indent = True { Label49 Label MoveScaled(0,0,47,4) Expand = True Text = ("Show debugging panel if needed") } { btnShowDebug SwitchButton MoveScaled(43,0,8,4) Animated = True } } { HBox7 HBox MoveScaled(1,40,66,4) Spacing = True Indent = True { Label2 Label MoveScaled(0,0,21,4) Expand = True Text = ("Message style") } { cmbMessageBoxStyle ComboBox MoveScaled(44,0,16,4) #Translate = False ReadOnly = True } } { Panel7 Panel MoveScaled(23,46,4,1) } { Label1 Label MoveScaled(1,47,63,3) Font = Font["Bold"] Text = ("Layout") } { Panel6 HBox MoveScaled(1,50,63,13) Expand = True Spacing = True { gvwLayout GridView MoveScaled(0,0,39,12) Expand = True Mode = Select.Single Grid = False } { VBox3 VBox MoveScaled(40,0,19,12) Spacing = True { btnSaveLayout Button MoveScaled(0,0,19,4) AutoResize = True Text = ("Save") & "..." Picture = Picture["icon:/small/save"] } { btnDeleteLayout Button MoveScaled(0,5,19,4) AutoResize = True Text = ("Delete") Picture = Picture["icon:/small/delete"] } } } Index = 7 Text = ("Fonts") Picture = Picture["icon:/large/font"] { Label42 Label MoveScaled(1,1,63,3) Font = Font["Bold"] Text = ("Fonts") } { HBox6 HBox MoveScaled(1,5,66,4) Spacing = True Indent = True { Label11 Label MoveScaled(0,0,12,4) Expand = True Text = ("Default font") } { txtGlobalFont FontBox MoveScaled(23,0,42,4) } } { HBox45 HBox MoveScaled(1,10,66,4) Spacing = True Indent = True { Label24 Label MoveScaled(0,0,20,4) Expand = True Text = ("Global size") } { cmbProjectFontSize ComboBox MoveScaled(23,0,11,4) #Translate = False ReadOnly = True List = ["100 %", "95 %", "90 %", "85 %", "80 %", "75 %", "70 %"] } { Panel25 Panel MoveScaled(35,0,30,4) } } { HBox19 HBox MoveScaled(1,15,66,4) Spacing = True Indent = True { Label19 Label MoveScaled(0,0,21,4) Expand = True Text = ("Title size") } { cmbTitleFontSize ComboBox MoveScaled(23,0,11,4) #Translate = False ReadOnly = True List = ["100 %", "95 %", "90 %", "85 %", "80 %", "75 %", "70 %"] } { Panel24 Panel MoveScaled(35,0,30,4) } } { HBox63 HBox MoveScaled(1,20,66,4) Spacing = True Indent = True { Label78 Label MoveScaled(0,0,20,4) Expand = True Text = ("Debugger size") } { cmbDebuggerFontSize ComboBox MoveScaled(23,0,11,4) #Translate = False ReadOnly = True List = ["100 %", "95 %", "90 %", "85 %", "80 %", "75 %", "70 %"] } { Panel5 Panel MoveScaled(35,0,30,4) } } { HBox23 HBox MoveScaled(1,25,66,4) Spacing = True Indent = True { Label26 Label MoveScaled(0,0,20,4) Expand = True Text = ("Editor") } { txtEditorFont FontBox MoveScaled(23,0,42,4) } } { HBox24 HBox MoveScaled(1,30,66,4) Spacing = True Indent = True { Label18 Label MoveScaled(0,0,20,4) Expand = True Text = ("Console") } { txtConsoleFont FontBox MoveScaled(23,0,42,4) } } { HBox65 HBox MoveScaled(1,35,66,4) Spacing = True Indent = True { Label84 Label MoveScaled(0,0,20,4) Expand = True Text = ("Printing") } { txtPrintFont FontBox MoveScaled(23,0,42,4) } } { Label74 Label MoveScaled(1,40,63,3) Font = Font["Bold"] Text = ("Help") } { HBox60 HBox MoveScaled(1,44,66,4) Spacing = True Indent = True { Label73 Label MoveScaled(0,0,20,4) Expand = True Text = ("Default font") } { txtHelpDefaultFont FontBox MoveScaled(23,0,42,4) } } { HBox61 HBox MoveScaled(1,49,66,4) Spacing = True Indent = True { Label75 Label MoveScaled(0,0,20,4) Expand = True Text = ("Fixed font") } { txtHelpFixedFont FontBox MoveScaled(23,0,42,4) } } { HBox62 HBox MoveScaled(1,54,66,4) Spacing = True Indent = True { Label76 Label MoveScaled(0,0,22,4) Expand = True Text = ("Zoom (browser excepted)") } { cmbHelpZoom ComboBox MoveScaled(23,0,11,4) #Translate = False ReadOnly = True List = ["100 %", "95 %", "90 %", "85 %", "80 %", "75 %", "70 %"] } { Panel2 Panel MoveScaled(35,0,30,4) } } { Spring1 Spring MoveScaled(31,58,7,2) } { HBox46 HBox MoveScaled(1,60,66,4) Spacing = True Indent = True { Spring2 Spring MoveScaled(8,0,5,4) } { btnInstallFont Button MoveScaled(23,0,35,4) AutoResize = True Text = ("Install Gambas font for code edition") & "..." } } Index = 8 Text = ("Background") Picture = Picture["icon:/large/image"] { Label14 Label MoveScaled(1,1,15,3) Font = Font["Bold"] Text = ("Background") } { svwBackground ScrollView MoveScaled(2,5,63,42) Background = Color.TextBackground Expand = True Arrangement = Arrange.Row Margin = True ScrollBar = Scroll.Vertical } { choBackgroundColor ColorPalette MoveScaled(2,50,65,5) ReadOnly = True } { Panel8 HBox MoveScaled(2,56,66,4) { PictureBox1 PictureBox MoveScaled(0,0,4,4) Padding = 4 Picture = Picture.Load("icon:/large/brightness") Mode = PictureBox.Fill } { sldBackgroundBrightness Slider MoveScaled(5,0,59,4) Expand = True MaxValue = 255 Step = 16 PageStep = 16 Orientation = ScrollBar.Horizontal Value = 128 } } Index = 9 Text = ("Themes") Picture = Picture["icon:/large/color"] { Label27 Label MoveScaled(0,1,63,3) Font = Font["Bold"] Text = ("Themes") } { HBox11 HBox MoveScaled(1,5,65,4) Spacing = True Indent = True { Label12 Label MoveScaled(0,0,18,4) Expand = True Text = ("Icon theme") } { cmbIconTheme ComboBox MoveScaled(27,0,38,4) ReadOnly = True } } { HBox1 HBox MoveScaled(1,10,65,4) Indent = True { Label54 Label MoveScaled(0,0,22,4) Expand = True Text = ("Highlighting theme") } { cmbTheme ComboBox MoveScaled(27,0,25,4) ReadOnly = True } { Panel1 Panel MoveScaled(52,0,1,4) } { btnImport ToolButton MoveScaled(53,0,4,4) ToolTip = ("Import theme") Picture = Picture["icon:/small/open"] } { btnExport ToolButton MoveScaled(57,0,4,4) ToolTip = ("Export theme") Picture = Picture["icon:/small/save"] } { btnUndo ToolButton MoveScaled(61,0,4,4) ToolTip = ("Undo") Picture = Picture["icon:/small/undo"] } } { HBox55 HBox MoveScaled(1,15,66,4) Spacing = True Indent = True { Label69 Label MoveScaled(0,0,47,4) Expand = True Text = ("Invert colors for dark themes") } { btnInvertTheme SwitchButton MoveScaled(48,0,8,4) Animated = True } } { svwTheme ScrollView MoveScaled(1,27,64,29) Foreground = Color.TextForeground Expand = True Arrangement = Arrange.Vertical Spacing = True Padding = 4 Border = False ScrollBar = Scroll.Vertical } Index = 0 } } # Gambas Action File 3.0 { Actions { Action option Text = "Preferences" Picture = "icon:/small/options" } } gambas-3.16.3/app/src/gambas3/.src/Options/FProxy.class000066400000000000000000000016201411575327000225040ustar00rootroot00000000000000' 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() Type = cmbType.Index Host = Trim(txtHost.Text) Port = txtPort.Value User = Trim(txtUser.Text) If User Then Try Desktop.Passwords["/Proxy" &/ User] = txtPassword.Text Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub cmbType_Click() txtHost.Enabled = cmbType.Index > 1 txtPassword.Enabled = cmbType.Index > 1 txtPort.Enabled = cmbType.Index > 1 txtUser.Enabled = cmbType.Index > 1 End Public Sub Form_Open() cmbType.Index = Type txtHost.Text = Host txtPort.Value = Port txtUser.Text = User If User Then txtPassword.Text = Desktop.Passwords["/Proxy" &/ User] Endif End gambas-3.16.3/app/src/gambas3/.src/Options/FProxy.form000066400000000000000000000023301411575327000223410ustar00rootroot00000000000000# 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 Invert = True { btnCancel Button MoveScaled(41,0,16,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(24,0,16,4) Text = ("OK") Default = True } } { txtHost TextBox MoveScaled(17,6,43,4) Enabled = False } { cmbType ComboBox MoveScaled(17,1,43,4) ReadOnly = True List = [("Default proxy"), ("No proxy"), ("HTTP proxy"), ("SOCKS5 proxy")] } { txtPort SpinBox MoveScaled(17,11,12,4) Enabled = False MaxValue = 65535 } { txtUser TextBox MoveScaled(17,16,43,4) Enabled = False } { txtPassword TextBox MoveScaled(17,21,43,4) Enabled = False Password = True } } gambas-3.16.3/app/src/gambas3/.src/Options/FSnippet.class000066400000000000000000000027461411575327000230170ustar00rootroot00000000000000' Gambas class file Static Public NewTrigger As String Private $sTrigger As String Private $hSampleCode As CSampleCode Public Sub Run(Optional sTrigger As String) As Boolean $sTrigger = sTrigger Return Not Me.ShowModal() End Public Sub btnOK_Click() Dim sTrigger As String sTrigger = String.LCase(Trim(txtTrigger.Text)) txtTrigger.Text = sTrigger If Not sTrigger Then Balloon.Warning(("Please enter a trigger string."), txtTrigger) Return Endif If sTrigger <> $sTrigger Then If CSampleCode.All.Exist(sTrigger) Then Balloon.Warning(("This trigger string is already in use."), txtTrigger) Return Endif Endif If $sTrigger Then If sTrigger <> $sTrigger Then $hSampleCode.Rename(sTrigger) $hSampleCode.Pattern = edtSnippet.Text Else $hSampleCode = New CSampleCode(sTrigger, edtSnippet.Text) NewTrigger = sTrigger Endif Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Settings.Read(Me) txtTrigger.Text = $sTrigger If $sTrigger Then $hSampleCode = CSampleCode.All[$sTrigger] edtSnippet.Text = $hSampleCode.Pattern edtSnippet.ReadOnly = $hSampleCode.Default txtTrigger.ReadOnly = $hSampleCode.Default btnOK.Enabled = Not $hSampleCode.Default Me.Title = ("Edit code snippet") edtSnippet.SetFocus Else Me.Title = ("New code snippet") txtTrigger.setFocus Endif edtSnippet.ReadConfig End Public Sub Form_Close() Settings.Write(Me) End gambas-3.16.3/app/src/gambas3/.src/Options/FSnippet.form000066400000000000000000000014171411575327000226470ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,66,56) Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox2 HBox MoveScaled(1,1,64,4) Spacing = True { Label1 Label MoveScaled(0,0,14,4) AutoResize = True Text = ("Trigger string") } { txtTrigger TextBox MoveScaled(17,0,44,4) Expand = True } } { edtSnippet TextEditor MoveScaled(1,6,64,43) Expand = True } { HBox1 HBox MoveScaled(1,51,64,4) Spacing = True { Panel1 Panel MoveScaled(4,0,20,4) Expand = True } { btnOK Button MoveScaled(26,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(43,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Packager/000077500000000000000000000000001411575327000203115ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Packager/FMakeInstall.class000066400000000000000000000720611411575327000236600ustar00rootroot00000000000000' Gambas class file Private $sMenuSystem As String Private $sGroupSystem As String Private $sDepSystem As String Private $sFileSystem As String Private $cCatCache As New Collection Private $sLastCat As String Private $aDep As String[] Private $aFile As String[] Private Const TAB_GROUP As Integer = 3 Private Const TAB_MENU As Integer = 4 Private Const TAB_MIME As Integer = 5 Private Const TAB_DEP As Integer = 6 Private Const TAB_FILE As Integer = 7 Private Const TAB_TEST As Integer = 8 Private Const TAB_DIR As Integer = 9 Private Const TAB_CREATE As Integer = 10 Private Sub HasDebianTarget() As Boolean If Project.Systems.Exist("debian") Or If Project.Systems.Exist("ubuntu") Then Return True End Private Sub MakeChangeLog() As String Dim aLine As String[] Dim sLine As String Dim sChangeLog As String aLine = Split(txtChange.Text, "\n") For Each sLine In aLine sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine) <> "-" Then sLine = "- " & sLine sChangeLog &= sLine & "\n" Next sChangeLog = "* " & Package.GetChangeDate() & "\n" & sChangeLog & "\n" sChangeLog &= txtChangeLog.Text Return sChangeLog End Public Sub Form_Open() If Project.Maintainer Then txtName.Text = Project.Maintainer Else txtName.Text = Settings["/Identity/Name", User.Name] Endif txtName.SelectAll txtName.SetFocus If Project.Address Then txtMail.Text = Project.Address Else txtMail.Text = Settings["/Identity/Mail", User.Name & "@" & System.Host] Endif If Project.Vendor Then txtVendor.Text = Project.Vendor Else txtVendor.Text = Settings["/Packager/Vendor"] Endif If Project.VendorPrefix Then txtVendorPrefix.Text = Project.VendorPrefix Else txtVendorPrefix.Text = Settings["/Packager/VendorPrefix"] Endif If Project.License Then txtLicense.Text = Project.License Else txtLicense.Text = Settings["/Packager/License", "General Public License"] Endif If Project.Url Then txtUrl.Text = Project.Url Else txtUrl.Text = Settings["/Packager/URL", Project.DEFAULT_URL] Endif txtDescribe.Text = Project.Description Try txtChangeLog.Text = File.Load(Project.Dir &/ ".hidden" &/ "CHANGELOG") txtChangeLog.Pos = 0 txtTests.Text = Project.ExtraAutoconfTest If Project.Prefix chkPrefix.Value = True Else chkPrefix.Value = Settings["/Packager/UsePrefix", False] Endif chkPackageNameWithMajor.Value = Project.PackageNameWithMajor txtPackageVersion.Value = Max(1, Project.PackageVersion) chkSignature.Value = Project.PackageSignature spnVersionMin.MinValue = 0 spnVersionMin.MaxValue = CInt(Split(System.FullVersion, ".")[1]) If Project.RuntimeVersion Then chkVersionMin.Value = True spnVersionMin.Value = CInt(Split(Project.RuntimeVersion, ".")[1]) Else chkVersionMin.Value = False spnVersionMin.Value = spnVersionMin.MaxValue Endif Project.SetEditorFont(txtDesktop) 'InitSystemControls InitSystems If Project.Type <> Project.TYPE_NORMAL Then chkPrefix.Value = True chkPrefix.Enabled = False Endif UpdatePackageName cmbCategories.List = Split(File.Load("install/categories"), "\n", "", True) txtLicense.List = ["General Public License", "Freeware", "Public Domain", "Lesser General Public License", "Other License(s)", "Non-Free License"] chkCreateDir.Value = Project.CreateEachDirectory tvwDep.Columns.Count = 3 tvwDep.Columns[0].Text = ("Package") tvwDep.Columns[1].Text = ("Min. version") tvwDep.Columns[2].Text = ("Max. version") tvwDep.Columns[0].Width = Desktop.Scale * 32 tvwDep.Columns[1].Width = Desktop.Scale * 16 tvwDep.Columns[2].Width = Desktop.Scale * 16 tvwFile.Columns.Count = 2 tvwFile.Columns[0].Text = ("File or directory") tvwFile.Columns[1].Text = ("Destination directory") tvwFile.Columns[0].Width = Desktop.Scale * 24 tvwFile.Columns[1].Width = Desktop.Scale * 40 'tvwFile.Rows.H = Desktop.Scale * 4 If Project.Systems.Count Then If Project.SameDependencies Then If Not Project.ExtraDependencies.Exist(Package.ALL_TARGETS) Then Project.ExtraDependencies[Package.ALL_TARGETS] = Project.ExtraDependencies[Project.Systems[0]] Endif Endif If Project.SameFiles Then If Not Project.ExtraFiles.Exist(Package.ALL_TARGETS) Then Project.ExtraFiles[Package.ALL_TARGETS] = Project.ExtraFiles[Project.Systems[0]] Endif Endif Endif chkDep.Value = Project.SameDependencies chkFile.Value = Project.SameFiles lstMime.List = Project.MimeTypes txtDesktop.Text = Project.ExtraDesktop edtLog.ReadConfig edtLog.ShowModified = False edtLog.ShowLineNumber = False edtLog.ShowIcon = False edtLog.ShowExpand = False edtLog.ShowPosition = False edtLog.Font = Font[Settings["/ConsoleFont", Project.DEFAULT_FONT]] End Public Sub wizInstall_Cancel() Me.Close End Private Sub UpdatePackageName() txtPackage.Text = Package.GetPackageFullName(txtVendor.Text, txtVendorPrefix.Text, chkPrefix.Value, chkPackageNameWithMajor.Value, True) End Public Sub chkPrefix_Click() UpdatePackageName End Private Sub GetSystemControls() As Control[] Dim aObject As New Control[] Dim hCtrl As Control Dim hCont As Container For Each hCtrl In panSystem.Children If Not hCtrl Is Container Then Continue hCont = hCtrl For Each hCtrl In hCont.Children If hCtrl Is CheckBox Then aObject.Add(hCtrl) Endif Next Next Return aObject End Private Sub InitSystemControls() Dim hCtrl As Control Dim hCont As HBox Dim aMsg As New String[] Dim sMsg As String Dim hPanel As Panel Dim hCheckBox As CheckBox Dim hPictureBox As PictureBox Inc Application.Busy Package.CheckProgram For Each hCtrl In panSystem.Children If Not hCtrl Is Container Then Continue hCont = hCtrl 'hCont.H = Desktop.Scale * 6 sMsg = Package.CheckSystem(hCont.Tag) If sMsg And If Not aMsg.Exist(sMsg) Then aMsg.Add(sMsg) hPanel = Null For Each hCtrl In hCont.Children If hCtrl Is PictureBox Then hPictureBox = hCtrl Else If hCtrl Is CheckBox Then hCheckBox = hCtrl Else If hCtrl Is Panel And If Panel(hCtrl).Tag Then hPanel = hCtrl Endif Next hCheckBox.Enabled = Not sMsg If Not hCheckBox.Enabled Then hCheckBox.Value = False With hPictureBox .Enabled = hCheckBox.Value .Width = hCont.H - hCont.Padding * 2 End With Next If aMsg.Count Then txtMessage.Text = aMsg.Join("
      ") txtMessage.Show Else txtMessage.Hide Endif Dec Application.Busy End Private Sub InitSystems() Dim hCtrl As CheckBox For Each hCtrl In GetSystemControls() hCtrl.Value = hCtrl.Enabled And Project.Systems.Find(hCtrl.Parent.Tag) >= 0 Next End Public Sub wizInstall_Close() Project.WriteProject spnCreatePackage.Show spnCreatePackage.Start ShowMessage(("Creating packages...")) If Not Package.Make() Then ShowMessage(("The packages have been successfully created.")) Endif spnCreatePackage.Stop spnCreatePackage.Hide End Private Function CheckSys(cCol As Collection) As Boolean Dim sSys As String For Each sSys In Project.Systems If sSys = "autotools" Or If sSys = "self" Then Continue If Not cCol.Exist(sSys) Then Return True Next End Public Sub wizInstall_BeforeChange() Dim sFile As String Dim aFile As String[] Dim bEnabled As Boolean Dim sSys As String Dim aVer As String[] Select Case wizInstall.Index Case 0 ' If Project.Type = Project.TYPE_COMPONENT Then ' ' If InStr(Project.Name, ".") = 0 Then ' Message.Warning(("Your project is a component, so its name must be prefixed by the vendor name followed by a dot:") & " <vendor>." & Project.Name & "\n\n" & ("Please rename your project if you want to create a package.")) ' Stop Event ' Return ' Endif ' ' Endif Project.Maintainer = Trim(txtName.Text) Project.Address = Trim(txtMail.Text) Project.Vendor = Trim(txtVendor.Text) Project.VendorPrefix = Trim(txtVendorPrefix.Text) Project.License = Trim(txtLicense.Text) Project.Url = Trim(txtUrl.Text) If Not Project.Maintainer Then Message.Warning(("Please enter your name.")) Stop Event Return Endif If Not Project.Address Then Message.Warning(("Please enter your e-mail address.")) Stop Event Return Endif If Project.Type = Project.TYPE_LIBRARY Then If Not Project.Vendor Then Message.Warning(("Please enter the vendor name.")) Stop Event Return Endif Endif Project.Description = txtDescribe.Text Project.Prefix = chkPrefix.Value Project.PackageName = txtPackage.Text Project.PackageVersion = txtPackageVersion.Value Project.PackageSignature = chkSignature.Value Project.PackageNameWithMajor = chkPackageNameWithMajor.Value Case 1 If Not Trim(txtChange.Text) Then If Message.Warning(("There is no CHANGELOG entry for this release."), ("Continue"), ("Cancel")) = 2 Then Stop Event Return Endif Endif Package.ChangeLog = MakeChangeLog() If Not Package.ChangeLog Then Message.Warning(("Please enter the first CHANGELOG entry.")) Stop Event Return Endif InitSystemControls Case 2 Project.Systems = GetSystems() If Project.Systems.Count = 0 Then Message.Warning(("Please choose at least one target distribution.")) Stop Event Return Endif bEnabled = False For Each sSys In Project.Systems If sSys <> "autotools" And If sSys <> "self" Then bEnabled = True Break Endif Next wizInstall[TAB_GROUP].Enabled = bEnabled wizInstall[TAB_MENU].Enabled = bEnabled bEnabled = False For Each sSys In Project.Systems If sSys <> "autotools" Then bEnabled = True Break Endif Next wizInstall[TAB_DEP].Enabled = bEnabled wizInstall[TAB_FILE].Enabled = bEnabled wizInstall[TAB_TEST].Enabled = Project.Systems.Exist("autotools") If Project.Type <> Project.TYPE_NORMAL wizInstall[TAB_MENU].Enabled = False wizInstall[TAB_MIME].Enabled = False Endif Case TAB_GROUP If CheckSys(Project.Groups) Then If cmbGroup.Count > 1 Then Message.Warning(("Please choose the package group for each target distribution.")) Else Message.Warning(("Please choose a package group.")) Endif Stop Event Return Endif Case TAB_MENU If CheckSys(Project.Menus) Then If cmbMenu.Count > 1 Then Message.Warning(("Please choose the menu location for each target distribution.")) Else Message.Warning(("Please choose a menu location.")) Endif Stop Event Return Endif Case TAB_MIME Project.MimeTypes = lstMime.List Project.ExtraDesktop = Trim(txtDesktop.Text) Case TAB_DEP If chkVersionMin.Value Then aVer = Split(System.FullVersion, ".") aVer[1] = CStr(spnVersionMin.Value) Project.RuntimeVersion = aVer[0] & "." & aVer[1] Else Project.RuntimeVersion = "" Endif Case TAB_FILE tvwFile.Save For Each sFile In $aFile aFile = Scan(sFile, "*\t*") If Not Exist(Project.Dir &/ ".hidden" &/ aFile[0]) Then Message.Warning(Subst(("Cannot found extra file: &1"), aFile[0])) Stop Event Return Endif If aFile[1] = "" Then Message.Warning(("Please choose a target directory for each extra file.")) Stop Event Return Endif If HasDebianTarget() Then If InStr(aFile[0], " ") Then Message.Warning(("Debian packaging system cannot handle spaces in file names.")) Stop Event Return Endif If InStr(aFile[1], " ") Then Message.Warning(("Debian packaging system cannot handle spaces in directories.")) Stop Event Return Endif Endif Next Case TAB_TEST Project.ExtraAutoconfTest = txtTests.Text Case TAB_DIR Package.Dir = dchInstall.SelectedPath If Package.Dir = Project.Dir Or If Package.Dir Begins Project.Dir &/ "/" Then Message.Warning(("The package cannot be stored inside the project directory.")) Stop Event Return Endif Project.Config["/Package/Dir"] = Project.TildePath(Package.Dir) Case TAB_CREATE ' If chkSignature.Value And If Not txtPassPhrase.Text Then ' txtPassPhrase.SetFocus ' Balloon.Warning(("Please enter your passphrase."), txtPassPhrase) ' Stop Event ' Return ' Endif ' Package.Signature = If(chkSignature.Value, txtPassPhrase.Text, "") End Select End ' Private Sub UpdateDepCombo() ' ' If chkDep.Value Then ' cmbDep.Hide ' cmbDep.Index = 0 ' Else ' cmbDep.Visible = cmbDep.Count > 1 ' Endif ' ' End ' ' Private Sub UpdateFileCombo() ' ' If chkFile.Value Then ' cmbFile.Hide ' cmbFile.Index = 0 ' Else ' cmbFile.Visible = cmbFile.Count > 1 ' Endif ' ' End Public Sub wizInstall_Change() Select Case wizInstall.Index Case 1 lblChangeDate.Text = Package.GetChangeDate() If Not txtChangeLog.Text Then txtChange.Text = ("Initial release") txtChange.SetFocus Case TAB_GROUP InitGroupTree cmbGroup.Visible = cmbGroup.Count > 1 Case TAB_MENU InitMenuTree cmbMenu.Visible = cmbMenu.Count > 1 Case TAB_MIME lstMime.SetFocus Case TAB_DEP FillComboWithSystems(cmbDep) UpdateDepCombo Case TAB_FILE FillComboWithSystems(cmbFile) UpdateFileCombo Case TAB_DIR dchInstall.SelectedPath = Project.UntildePath(Project.Config["/Package/Dir", Settings["/FMakeInstall/PackagePath", "~"]]) Case TAB_CREATE chkSignature.Value = Settings["/FMakeInstall/SignPackage", False] panError.Hide End Select btnCreateNow.Visible = wizInstall.Index <> TAB_CREATE End Private Function GetSystems() As String[] Dim hCtrl As CheckBox Dim aSys As New String[] For Each hCtrl In GetSystemControls() If hCtrl.Value Then aSys.Add(hCtrl.Parent.Tag) Next Return aSys End Private Function GetSystemFromName(sName As String, Optional bAll As Boolean) As String Dim hCtrl As CheckBox For Each hCtrl In GetSystemControls() If Replace(hCtrl.Text, "&", "") = sName Then Return hCtrl.Parent.Tag Next If bAll Then Return Package.ALL_TARGETS End Public Function GetSystemName(sTag As String) As String Dim hCtrl As CheckBox For Each hCtrl In GetSystemControls() If hCtrl.Parent.Tag = sTag Then Return Replace(hCtrl.Text, "&", "") Next End Public Sub AddLog(sText As String, Optional bNoNewLine As Boolean) If Not bNoNewLine Then sText &= "\n" edtLog.Goto(0, edtLog.Count) edtLog.ReadOnly = False edtLog.Print(sText) edtLog.ReadOnly = True Wait End Public Sub ClearLog() edtLog.Clear Wait End Private Sub FillComboWithSystems(hCombo As ComboBox) Dim sSys As String Dim hCtrl As CheckBox hCombo.Clear For Each hCtrl In GetSystemControls() sSys = hCtrl.Parent.Tag If hCombo = cmbDep Or If hCombo = cmbFile Then If sSys = "autotools" Then Continue Else If hCombo = cmbGroup Or If hCombo = cmbMenu Then If sSys = "autotools" Or If sSys = "self" Then Continue Endif If hCtrl.Value Then hCombo.Add(GetSystemName(sSys)) Next hCombo.Index = 0 End Private Sub InitMenuTree() FillComboWithSystems(cmbMenu) End Private Sub InitGroupTree() FillComboWithSystems(cmbGroup) End Private Sub FindCategoriesFromMenu(sMenu As String) As String Dim sCat As String Dim aCat As New String[] sMenu = Replace(sMenu, " ", "") For Each sCat In Split(sMenu, "/") If cmbCategories.Find(sCat) >= 0 Then aCat.Add(sCat) Next Return aCat.Join(";") End Private Sub FillTreeWith(hTree As TreeView, sTitle As String, sIcon As String, sFile As String, hTextBox As TextBox, sSelect As String, Optional bCat As Boolean) Dim hFile As File Dim sLig As String Dim iLevel As Integer Dim iNewLevel As Integer Dim sParent As String Dim sKey As String Dim iPos As Integer Dim sCat As String Dim sAdd As String Dim sElt As String hTree.Clear hTree.Add("/", sTitle, Picture[sIcon]).Expanded = True sParent = "/" If bCat Then $cCatCache.Clear $sLastCat = "" Endif hFile = Open sFile While Not Eof(hFile) Line Input #hFile, sLig sLig = RTrim(sLig) If Not sLig Then Continue If bCat Then iPos = InStr(sLig, "#") If iPos Then sCat = Trim(Mid(sLig, iPos + 1)) sLig = RTrim(Left(sLig, iPos - 1)) Else sCat = "" Endif Endif If InStr(sLig, "/") Then sKey = "/" sParent = "/" For Each sElt In Split(Trim(sLig), "/") sKey &/= sElt If Not hTree.Exist(sKey) Then hTree.Add(sKey, File.Name(sKey),, sParent).Expanded = True hTree[sParent].Expanded = True Endif sParent = sKey Next sParent = File.Dir(sLig) If sParent = "" Then sParent = "/" sLig = File.Name(sLig) Else iNewLevel = Len(sLig) - Len(LTrim(sLig)) If iNewLevel > iLevel Then sParent = sKey Else If iNewLevel < iLevel Then While iLevel > iNewLevel hTree.MoveTo(sParent) If hTree.MoveParent() Then sParent = "" Else sParent = hTree.Item.Key Endif Dec iLevel Wend Endif iLevel = iNewLevel If sParent = "" Then sParent = "/" sKey = sParent &/ Trim(sLig) hTree.Add(sKey, Trim(sLig),, sParent) hTree[sParent].Expanded = True 'DEBUG sKey Endif If bCat Then sAdd = FindCategoriesFromMenu(sKey) If sAdd And If sCat Then sCat &= ";" $cCatCache[sKey] = sCat & sAdd Endif Wend Close #hFile sSelect = "/" &/ sSelect hTextBox.Clear If sSelect Then Try hTree[sSelect].Selected = True Try hTree[sSelect].EnsureVisible Endif End Public Sub cmbMenu_Click() $sMenuSystem = GetSystemFromName(cmbMenu.Text) cmbCategories.Text = Project.Categories[$sMenuSystem] FillTreeWith(tvwMenu, ("Menus"), "img/16/menu.png", "install/menu" &/ $sMenuSystem, txtMenu, Project.Menus[$sMenuSystem], True) End Private Sub AddCategory(sAdd As String) Dim sAll As String = cmbCategories.Text & ";" & sAdd Dim aCat As New String[] Dim sCat As String For Each sCat In Split(sAll, ";").Sort() If Not sCat Then Continue If aCat.Exist(sCat) Then Continue aCat.Add(sCat) Next cmbCategories.Text = aCat.Join(";") End Private Sub RemoveCategory(sAdd As String) Dim aRemove As String[] = Split(sAdd, ";") Dim aCat As New String[] Dim sCat As String For Each sCat In Split(cmbCategories.Text, ";").Sort() If Not sCat Then Continue If aRemove.Exist(sCat) Then Continue aCat.Add(sCat) Next cmbCategories.Text = aCat.Join(";") End Public Sub tvwMenu_Select() Dim sMenu As String If tvwMenu.Item.Children Then Return RemoveCategory($sLastCat) $sLastCat = $cCatCache[tvwMenu.Key] AddCategory($sLastCat) tvwMenu.MoveCurrent While tvwMenu.Item.Key <> "/" sMenu = tvwMenu.Item.Text &/ sMenu tvwMenu.MoveParent Wend txtMenu.Text = sMenu 'sSys = GetSystemFromName(cmbMenu.Text) Project.Menus[$sMenuSystem] = sMenu Project.Categories[$sMenuSystem] = cmbCategories.Text End Public Sub cmbGroup_Click() $sGroupSystem = GetSystemFromName(cmbGroup.Text) txtGroup.Clear FillTreeWith(tvwGroup, ("Groups"), "icon:/small/package", "install/group" &/ $sGroupSystem, txtMenu, Project.Groups[$sGroupSystem]) End Public Sub tvwGroup_Select() Dim sGroup As String tvwGroup.MoveCurrent While tvwGroup.Item.Key <> "/" sGroup = tvwGroup.Item.Text &/ sGroup tvwGroup.MoveParent Wend txtGroup.Text = sGroup Project.Groups[GetSystemFromName(cmbGroup.Text)] = sGroup End Public Sub cmbCategories_LostFocus() AddCategory("") Project.Categories[$sMenuSystem] = cmbCategories.Text End Public Sub cmbCategories_Click() Dim sCat As String = cmbCategories[cmbCategories.Index].Text cmbCategories.Text = Project.Categories[$sMenuSystem] AddCategory(sCat) Project.Categories[$sMenuSystem] = cmbCategories.Text End Public Sub tvwMenu_Collapse() tvwMenu.Item.Expanded = True End Public Sub tvwGroup_Collapse() tvwGroup.Item.Expanded = True End Public Sub cmbDep_Click() tvwDep.Cancel $sDepSystem = GetSystemFromName(cmbDep.Text, True) $aDep = Split(Project.ExtraDependencies[$sDepSystem], "\n") tvwDep.Rows.Count = $aDep.Count tvwDep.Refresh 'txtGroup.Clear 'lstDep.List = Split(Project.ExtraDependencies[$sDepSystem], ",") End Public Sub chkDistro_Click() Dim hCheckBox As CheckBox = Last Dim hPictureBox As PictureBox = hCheckBox.Parent.Children[0] hPictureBox.Enabled = hCheckBox.Value End Public Sub txtVendor_Change() UpdatePackageName End Public Sub txtVendorPrefix_Change() UpdatePackageName End Public Sub chkCreateDir_Click() Project.CreateEachDirectory = chkCreateDir.Value End Public Sub tvwDep_Click() tvwDep.Edit End Public Sub tvwDep_Data(Row As Integer, Column As Integer) Dim aRow As String[] = Split($aDep[Row], "\t") Try tvwDep.Data.Text = aRow[Column] End Private Sub SaveExtraDependencies() Project.ExtraDependencies[$sDepSystem] = $aDep.Join("\n") End Private Sub SaveExtraFiles() Project.ExtraFiles[$sFileSystem] = $aFile.Join("\n") End Public Sub tvwDep_Save(Row As Integer, Column As Integer, Value As String) Dim aRow As String[] Dim iInd As Integer Dim sCar As String For iInd = 1 To String.Len(Value) sCar = String.Mid$(Value, iInd, 1) If Len(sCar) = 1 Then If Column = 0 And If IsLetter(sCar) Then Continue If IsDigit(sCar) Or If InStr("-._", sCar) Then Continue Endif Balloon.Warning(("Incorrect characters"), tvwDep, tvwDep.Editor.ScreenX - tvwDep.ScreenX + tvwDep.Editor.W / 2, tvwDep.Editor.ScreenY - tvwDep.ScreenY + tvwDep.Editor.H / 2) Stop Event Return Next aRow = Split($aDep[Row], "\t") While aRow.Count < 3 aRow.Add("") Wend aRow[Column] = Value $aDep[Row] = aRow.Join("\t") SaveExtraDependencies End Public Sub btnAddDep_Click() $aDep.Add("\t\t") SaveExtraDependencies Inc tvwDep.Rows.Count tvwDep.Save tvwDep.MoveTo($aDep.Max, 0) tvwDep.Edit End Public Sub tvwDep_Insert() btnAddDep.Value = True End Public Sub btnRemoveDep_Click() If tvwDep.Row < 0 Then Return tvwDep.Cancel $aDep.Remove(tvwDep.Row) SaveExtraDependencies Dec tvwDep.Rows.Count End Public Sub btnUpDep_Click() If tvwDep.Row >= 1 Then tvwDep.Save Swap $aDep[tvwDep.Row], $aDep[tvwDep.Row - 1] SaveExtraDependencies tvwDep.Refresh Dec tvwDep.Row tvwDep.Edit Endif End Public Sub btnDownDep_Click() If tvwDep.Row < $aDep.Max Then tvwDep.Save Swap $aDep[tvwDep.Row], $aDep[tvwDep.Row + 1] SaveExtraDependencies tvwDep.Refresh Inc tvwDep.Row tvwDep.Edit Endif End Public Sub btnClearDep_Click() If Message.Warning(("Do you really want to remove all extra dependencies?"), ("Cancel"), ("Remove")) <> 2 Then Return tvwDep.Cancel $aDep.Clear SaveExtraDependencies tvwDep.Rows.Count = 0 End Public Sub cmbFile_Click() $sFileSystem = GetSystemFromName(cmbFile.Text, True) $aFile = Split(Project.ExtraFiles[$sFileSystem], "\n") tvwFile.Rows.Count = $aFile.Count tvwFile.Refresh End Public Sub tvwFile_Insert() btnAddFile.Value = True End Public Sub tvwFile_Data(Row As Integer, Column As Integer) Dim aRow As String[] = Split($aFile[Row], "\t") Try tvwFile.Data.Text = aRow[Column] End Public Sub btnAddFile_Click() Dim sFic As String sFic = FSelectExtraFile.Run("") If Not sFic Then Return $aFile.Add(sFic & "\t") SaveExtraFiles Inc tvwFile.Rows.Count tvwFile.MoveTo($aFile.Max, 0) 'tvwFile.Refresh 'tvwFile.Current.Text = sFic 'tvwFile.Save 'tvwFile_Save(tvwFile.Row, tvwFile.Column, sFic) End Public Sub btnRemoveFile_Click() If tvwFile.Row < 0 Then Return tvwFile.Cancel $aFile.Remove(tvwFile.Row) SaveExtraFiles Dec tvwFile.Rows.Count End Public Sub btnUpFile_Click() If tvwFile.Row >= 1 Then tvwFile.Save Swap $aFile[tvwFile.Row], $aFile[tvwFile.Row - 1] SaveExtraFiles tvwFile.Refresh Dec tvwFile.Row Endif End Public Sub btnDownFile_Click() If tvwFile.Row < $aFile.Max Then tvwFile.Save Swap $aFile[tvwFile.Row], $aFile[tvwFile.Row + 1] SaveExtraFiles tvwFile.Refresh Inc tvwFile.Row Endif End Public Sub btnClearFile_Click() If Message.Warning(("Do you really want to remove all extra files?"), ("Cancel"), ("Remove")) <> 2 Then Return tvwFile.Cancel $aFile.Clear SaveExtraFiles tvwFile.Rows.Count = 0 End Public Sub tvwFile_Save(Row As Integer, Column As Integer, Value As String) Dim aRow As String[] aRow = Split($aFile[Row], "\t") While aRow.Count < 2 aRow.Add("") Wend aRow[Column] = Value $aFile[Row] = aRow.Join("\t") SaveExtraFiles End Public Sub tvwFile_Click() tvwFile.EditWith(txtFileDest) End Public Sub txtFileDest_Click() Dim sFic As String If tvwFile.Column = 0 Then sFic = FSelectExtraFile.Run(tvwFile.Current.Text) If Not sFic Then Return txtFileDest.Text = sFic tvwFile.Save 'tvwFile.Current.Text = sFic 'tvwFile_Save(tvwFile.Row, tvwFile.Column, sFic) 'tvwFile.Refresh ' tvwFile.Edit(Dir(Project.Dir, "*[^~]", gb.File), True) Else If tvwFile.Column = 1 Then Dialog.Title = ("Select the destination directory") Dialog.Path = tvwFile.Current.Text If Dialog.SelectDirectory() Then Return txtFileDest.Text = Dialog.Path tvwFile.Save 'tvwFile.Current.Text = Dialog.Path 'tvwFile_Save(tvwFile.Row, tvwFile.Column, Dialog.Path) 'tvwFile.Refresh Endif End Public Sub ShowError(sMsg As String) txtError.Text = Replace(sMsg, "\n", "
      ") txtError.Foreground = Color.Red spnCreatePackage.H = Desktop.Scale panError.Show End Public Sub ShowMessage(sMsg As String) txtError.Text = Replace(sMsg, "\n", "
      ") txtError.Foreground = Color.TextForeground spnCreatePackage.H = Desktop.Scale panError.Show End Public Sub txtVendor_KeyPress() Project.OnVendorKeyPress End Public Sub txtVendorPrefix_KeyPress() Project.OnVendorKeyPress(True) End Public Sub btnCopy_Click() Clipboard.Copy(edtLog.Text, "text/plain;charset=utf-8") End Public Sub chkSignature_Click() Settings["/FMakeInstall/SignPackage"] = CBool(chkSignature.Value) txtPassPhrase.Enabled = chkSignature.Value If txtPassPhrase.Enabled Then txtPassPhrase.SetFocus End Public Sub panError_Arrange() spnCreatePackage.W = spnCreatePackage.H End Public Sub Form_Arrange() btnCreateNow.Move(Desktop.Scale, Me.ClientH - Desktop.Scale - btnCreateNow.H) End Public Sub btnCreateNow_Click() Dim iIndex As Integer Dim bSave As Boolean 'wizInstall.Animated = False bSave = Application.Animations Application.Animations = False Do iIndex = wizInstall.Index wizInstall.MoveNext If iIndex = TAB_CREATE Then Break If wizInstall.Index = iIndex Then Break Loop Application.Animations = bSave 'wizInstall.Animated = True End Public Sub dwgVersionMin_Draw() Style.PaintBox(0, 0, Paint.W, Paint.H) Paint.DrawText(System.Version & ".", 0, 0, spnVersionMin.X, Paint.H, Align.Right) End Public Sub dwgVersionMin_Arrange() Dim FW As Integer = Style.BoxFrameWidth Dim FH As Integer = Style.BoxFrameHeight spnVersionMin.Move(dwgVersionMin.W - spnVersionMin.W - FW, FH, spnVersionMin.W, dwgVersionMin.H - FH * 2) End Public Sub chkVersionMin_Click() dwgVersionMin.Enabled = chkVersionMin.Value If chkVersionMin.Value Then spnVersionMin.SetFocus Else spnVersionMin.Value = spnVersionMin.MaxValue Endif dwgVersionMin.Refresh End Public Sub chkPackageNameWithMajor_Click() UpdatePackageName End Public Sub chkDep_Click() Project.SameDependencies = chkDep.Value UpdateDepCombo End Public Sub chkFile_Click() Project.SameFiles = chkFile.Value UpdateFileCombo End Private Sub UpdateDepCombo() If chkDep.Value Then cmbDep.Hide cmbDep.Index = -1 cmbDep_Click Else cmbDep.Visible = cmbDep.Count > 1 cmbDep.Index = 0 Endif End Private Sub UpdateFileCombo() If chkFile.Value Then cmbFile.Hide cmbFile.Index = -1 cmbFile_Click Else cmbFile.Visible = cmbFile.Count > 1 cmbFile.Index = 0 Endif End gambas-3.16.3/app/src/gambas3/.src/Packager/FMakeInstall.form000066400000000000000000000431431411575327000235150ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,98,79) Text = ("Make installation package") Icon = Picture["icon:/large/package"] Arrangement = Arrange.Vertical Margin = True { wizInstall Wizard MoveScaled(1,1,89,77) Expand = True Arrangement = Arrange.Vertical Spacing = True Count = 11 TextFont = Font["Bold,+2"] ShowIndex = True Border = False ActionText = ("Create package") ActionPicture = Picture["icon:/small/package"] Index = 0 Text = ("Package information") { TextLabel1 TextLabel MoveScaled(1,0,64,4) Font = Font["Bold"] AutoResize = True Text = ("Package name") Alignment = Align.BottomNormal } { txtPackage Label MoveScaled(1,5,70,4) Font = Font["Bold,+2"] Background = Color.TextBackground Foreground = Color.TextForeground Padding = 4 AutoResize = True Border = Border.Plain } { Panel3 HBox MoveScaled(1,10,87,8) Spacing = True { Panel5 VBox MoveScaled(0,0,53,8) Expand = True { chkPrefix CheckBox MoveScaled(0,0,52,4) AutoResize = True Text = ("Add vendor prefix or name to package names") } { chkPackageNameWithMajor CheckBox MoveScaled(0,4,44,4) Text = ("Add major version number to package names") } } { Panel17 VBox MoveScaled(55,0,32,7) AutoResize = True { Panel14 HBox MoveScaled(0,0,26,4) Spacing = True { Label8 Label MoveScaled(0,0,16,4) AutoResize = True Text = ("Package version") Alignment = Align.Right } { txtPackageVersion SpinBox MoveScaled(17,0,8,4) MinValue = 1 MaxValue = 999 Value = 1 } } } } { HBox8 HBox MoveScaled(1,19,70,4) Spacing = True { Label3 Label MoveScaled(0,0,23,4) Text = ("Vendor name") } { txtVendor MaskBox MoveScaled(24,0,44,4) Expand = True Filter = "[A-Za-z0-9_-]" } } { HBox20 HBox MoveScaled(1,24,70,4) Spacing = True { Label9 Label MoveScaled(0,0,23,4) Text = ("Vendor prefix") } { txtVendorPrefix MaskBox MoveScaled(24,0,44,4) Expand = True Filter = "[A-Za-z0-9]" } } { TextLabel2 TextLabel MoveScaled(1,28,64,4) Font = Font["Bold"] AutoResize = True Text = ("Maintainer information") Alignment = Align.BottomNormal } { HBox1 HBox MoveScaled(1,33,71,4) Spacing = True { Label1 Label MoveScaled(0,0,23,4) Text = ("Name") } { txtName TextBox MoveScaled(24,0,44,4) Expand = True } } { HBox2 HBox MoveScaled(1,38,70,4) Spacing = True { Label2 Label MoveScaled(0,0,23,4) Text = ("E-mail") } { txtMail TextBox MoveScaled(24,0,44,4) Expand = True } } { HBox16 HBox MoveScaled(1,43,70,4) Spacing = True { Label7 Label MoveScaled(0,0,23,4) Text = ("URL") } { txtUrl TextBox MoveScaled(24,0,44,4) Expand = True } } { Panel1 HBox MoveScaled(1,48,72,12) Expand = True Spacing = True { Panel4 VBox MoveScaled(0,0,23,10) { Label6 Label MoveScaled(0,0,23,4) Font = Font["Bold"] Text = ("Description") } } { txtDescribe TextArea MoveScaled(25,0,46,12) Expand = True Wrap = True } } { Panel2 HBox MoveScaled(1,61,73,4) Spacing = True { Label5 Label MoveScaled(0,0,23,4) Font = Font["Bold"] Text = ("License") } { txtLicense ComboBox MoveScaled(25,0,46,4) #Translate = False Expand = True List = ["General Public License", "Public Domain", "Lesser General Public License", "Other License(s)", "Non-free License"] Sorted = True } } Index = 1 Text = ("Changelog") { lblChangeDate Label MoveScaled(1,5,68,4) Font = Font["Bold"] AutoResize = True } { txtChange TextArea MoveScaled(1,10,68,11) Wrap = True } { txtChangeLog TextArea MoveScaled(1,22,68,27) Expand = True ReadOnly = True Wrap = True } Index = 2 Text = ("Target distribution") { txtMessage TextLabel MoveScaled(0,0,86,6) Visible = False Font = Font["Italic,-1"] Background = Color.TextBackground Foreground = Color.TextForeground Padding = 8 AutoResize = True Border = Border.Plain } { panSystem ScrollView MoveScaled(0,7,88,52) Expand = True Arrangement = Arrange.Row Spacing = True Border = False ScrollBar = Scroll.Vertical { HBox10 HBox panDistro Name = "HBox10" MoveScaled(0,0,42,9) Tag = "archlinux" Padding = 4 { PictureBox1 PictureBox MoveScaled(0,0,8,8) Picture = Picture["img/logo/archlinux.png"] Stretch = True Alignment = Align.Center } { Panel7 Panel MoveScaled(9,1,3,6) } { CheckBox5 CheckBox chkDistro Name = "CheckBox5" MoveScaled(13,2,26,4) #Translate = False Expand = True Text = "Archlinux" } } { HBox15 HBox panDistro Name = "HBox15" MoveScaled(43,0,42,9) Tag = "autotools" Padding = 4 { PictureBox6 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/autotools.png"] Stretch = True Alignment = Align.Center } { Panel12 Panel MoveScaled(9,1,3,6) } { CheckBox6 CheckBox chkDistro Name = "CheckBox6" MoveScaled(14,2,26,4) #Translate = False Expand = True Text = "Autotools" } } { HBox5 HBox panDistro Name = "HBox5" MoveScaled(0,10,42,9) Tag = "debian" Padding = 4 { PictureBox2 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/debian.png"] Stretch = True Alignment = Align.Center } { Panel8 Panel MoveScaled(9,1,3,6) } { chkDebian CheckBox chkDistro Name = "chkDebian" MoveScaled(14,2,17,4) #Translate = False Expand = True Text = "Debian" } } { HBox6 HBox panDistro Name = "HBox6" MoveScaled(43,10,42,9) Tag = "fedora" Padding = 4 { PictureBox7 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/fedora.png"] Stretch = True Alignment = Align.Center } { Panel13 Panel MoveScaled(9,1,3,6) } { CheckBox3 CheckBox chkDistro Name = "CheckBox3" MoveScaled(14,1,26,4) #Translate = False Expand = True Text = "Fedora / RedHat / CentOS" } } { HBox3 HBox panDistro Name = "HBox3" MoveScaled(0,20,42,9) Tag = "mageia" Padding = 4 { PictureBox3 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/mageia.png"] Stretch = True Alignment = Align.Center } { Panel9 Panel MoveScaled(9,1,3,6) } { chkMageia CheckBox chkDistro Name = "chkMageia" MoveScaled(13,1,27,4) #Translate = False Expand = True Text = "Mageia" } } { HBox7 HBox panDistro Name = "HBox7" MoveScaled(0,30,42,9) Tag = "suse" Padding = 4 { PictureBox4 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/suse.png"] Stretch = True Alignment = Align.Center } { Panel10 Panel MoveScaled(9,1,3,6) } { CheckBox4 CheckBox chkDistro Name = "CheckBox4" MoveScaled(13,2,26,4) #Translate = False Expand = True Text = "OpenSUSE" } } { HBox4 HBox panDistro Name = "HBox4" MoveScaled(43,30,42,9) Tag = "slackware" Padding = 4 { PictureBox9 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/slackware.png"] Stretch = True Alignment = Align.Center } { Panel15 Panel MoveScaled(9,1,3,6) } { CheckBox2 CheckBox chkDistro Name = "CheckBox2" MoveScaled(14,2,26,4) #Translate = False Expand = True Text = "Slackware" } } { HBox9 HBox panDistro Name = "HBox9" MoveScaled(0,40,42,9) Tag = "ubuntu" Padding = 4 { PictureBox5 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/ubuntu.png"] Stretch = True Alignment = Align.Center } { Panel11 Panel MoveScaled(9,1,3,6) } { CheckBox1 CheckBox chkDistro Name = "CheckBox1" MoveScaled(14,1,26,4) #Translate = False Expand = True Text = "Ubuntu / Kubuntu / Mint..." } } { HBox18 HBox panDistro Name = "HBox18" MoveScaled(43,40,42,9) Visible = False Tag = "self" Padding = 4 { PictureBox10 PictureBox MoveScaled(1,1,6,6) Picture = Picture["img/logo/self-extractible.png"] Stretch = True Alignment = Align.Center } { Panel16 Panel MoveScaled(9,1,3,6) } { CheckBox7 CheckBox chkDistro Name = "CheckBox7" MoveScaled(14,2,26,4) Expand = True Text = ("Self-extractible") } } } Index = 3 Text = ("Package group") { cmbGroup ComboBox MoveScaled(1,1,68,4) ReadOnly = True Text = (" ") } { tvwGroup TreeView MoveScaled(1,6,68,40) Expand = True Sorted = True ScrollBar = Scroll.Vertical } { txtGroup TextBox MoveScaled(1,47,68,4) ReadOnly = True } Index = 4 Text = ("Menu entry") { cmbMenu ComboBox MoveScaled(1,1,68,4) ReadOnly = True Text = (" ") } { tvwMenu TreeView MoveScaled(1,6,68,32) Expand = True ScrollBar = Scroll.Vertical } { txtMenu TextBox MoveScaled(1,39,68,4) ReadOnly = True } { Label4 Label MoveScaled(1,43,67,4) Font = Font["Bold"] Text = ("Categories") Alignment = Align.BottomNormal } { cmbCategories ComboBox MoveScaled(1,48,68,4) Sorted = True } Index = 5 Text = ("Desktop configuration file") { TextLabel6 TextLabel MoveScaled(0,0,64,4) Font = Font["Bold"] AutoResize = True Text = ("Mimetypes") Alignment = Align.BottomNormal } { TextLabel5 TextLabel MoveScaled(0,5,86,3) Font = Font["Italic,-1"] AutoResize = True Text = ("Enter the mimetypes handled by your application there.\nPlease enter one mimetype by line.\n") } { lstMime ListEditor MoveScaled(2,10,78,16) Expand = True } { TextLabel7 TextLabel MoveScaled(0,29,64,4) Font = Font["Bold"] AutoResize = True Text = ("Additional configuration") Alignment = Align.BottomNormal } { TextLabel8 TextLabel MoveScaled(0,34,86,3) Font = Font["Italic,-1"] AutoResize = True Text = ("The following will be added to the end of the desktop configuration file.") } { txtDesktop TextArea MoveScaled(0,38,81,17) Expand = True } Index = 6 Text = ("Extra dependencies") { HBox17 HBox MoveScaled(2,1,83,4) Spacing = True { chkVersionMin CheckBox MoveScaled(1,0,27,4) AutoResize = True Text = ("Minimum Gambas version") } { dwgVersionMin DrawingArea MoveScaled(36,0,9,4) Enabled = False { spnVersionMin SpinBox MoveScaled(4,0,5,4) Border = False } } } { chkDep CheckBox MoveScaled(1,8,55,3) Text = ("Same dependencies for all targets") } { cmbDep ComboBox MoveScaled(1,13,68,4) ReadOnly = True Text = (" ") } { HBox12 HBox MoveScaled(1,18,79,38) Expand = True Spacing = True { tvwDep TableView MoveScaled(5,2,41,29) Expand = True Header = GridView.Horizontal } { HBox11 VBox MoveScaled(48,2,18,27) Spacing = True { btnAddDep Button MoveScaled(0,0,18,4) Text = Shortcut(("Add"), "A") Picture = Picture["icon:/small/add"] } { btnRemoveDep Button MoveScaled(0,5,18,4) Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/delete"] } { btnUpDep Button MoveScaled(0,10,18,4) Text = Shortcut(("Up"), "U") Picture = Picture["icon:/small/up"] } { btnDownDep Button MoveScaled(0,15,18,4) Text = Shortcut(("Down"), "D") Picture = Picture["icon:/small/down"] } { btnClearDep Button MoveScaled(0,20,18,4) Text = Shortcut(("Clear"), "C") Picture = Picture["icon:/small/trash"] } } } Index = 7 Text = ("Extra files") { chkFile CheckBox MoveScaled(0,1,55,3) Text = ("Same files for all targets") } { cmbFile ComboBox MoveScaled(0,6,68,4) ReadOnly = True Text = (" ") } { TextLabel9 TextLabel MoveScaled(0,11,86,5) Font = Font["Italic,-1"] AutoResize = True Text = ("Extra files must be located in the Project folder of the current project, i.e. the .hidden directory of the project on the disk.") } { HBox13 HBox MoveScaled(0,19,79,41) Expand = True Spacing = True { tvwFile TableView MoveScaled(7,4,41,29) Expand = True Mode = Select.Single Header = GridView.Horizontal } { HBox14 VBox MoveScaled(53,4,18,34) Spacing = True { btnAddFile Button MoveScaled(0,0,18,4) Text = Shortcut(("Add"), "A") Picture = Picture["icon:/small/add"] } { btnRemoveFile Button MoveScaled(0,5,18,4) Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/delete"] } { btnUpFile Button MoveScaled(0,10,18,4) Text = Shortcut(("Up"), "U") Picture = Picture["icon:/small/up"] } { btnDownFile Button MoveScaled(0,15,18,4) Text = Shortcut(("Down"), "D") Picture = Picture["icon:/small/down"] } { btnClearFile Button MoveScaled(0,20,18,4) Text = Shortcut(("Clear"), "C") Picture = Picture["icon:/small/trash"] } } { txtFileDest ButtonBox MoveScaled(13,35,20,3) Visible = False Ignore = True Border = False } } Index = 8 Text = ("Extra autoconf tests") { TextLabel4 TextLabel MoveScaled(2,1,66,9) Font = Font["Italic,-1"] AutoResize = True Text = ("Add extra tests for the configuration process.\n

      Leave this blank if you don't need it, or if you don't know anything about autoconf scripts.") } { txtTests TextArea MoveScaled(1,15,71,34) Expand = True } Index = 9 Text = ("Destination directory") { dchInstall DirChooser MoveScaled(1,0,72,50) Expand = True } { chkCreateDir CheckBox MoveScaled(1,53,69,4) Text = ("Create directories for each distribution") } Index = 10 Text = ("Create package") { HBox19 HBox MoveScaled(1,1,74,4) Visible = False Spacing = True { chkSignature CheckBox MoveScaled(0,0,34,4) #Translate = False AutoResize = True Text = "Sign packages using passphrase" } { txtPassPhrase TextBox MoveScaled(36,0,13,4) #Translate = False Enabled = False Expand = True Password = True } } { Panel6 HBox MoveScaled(2,8,82,4) { Label10 Label MoveScaled(0,0,28,4) Font = Font["Bold"] Expand = True Text = ("Commands output") } { btnCopy Button MoveScaled(60,0,17,4) AutoResize = True Text = ("Copy") Picture = Picture["icon:/small/copy"] } } { edtLog TextEditor MoveScaled(7,17,49,28) Expand = True ReadOnly = True } { panError Panel MoveScaled(1,51,87,7) Visible = False Background = Color.TextBackground Arrangement = Arrange.Horizontal AutoResize = True Margin = True Border = Border.Plain { txtError TextLabel MoveScaled(5,0,64,6) Font = Font["-1"] Background = Color.TextBackground Expand = True AutoResize = True } { spnCreatePackage Spinner MoveScaled(81,0,3,3) Visible = False } } Index = 0 } { btnCreateNow Button MoveScaled(92,1,25,4) Ignore = True AutoResize = True Text = ("Create package now") Picture = Picture["icon:/small/package"] } } gambas-3.16.3/app/src/gambas3/.src/Packager/FSelectExtraFile.class000066400000000000000000000011121411575327000244640ustar00rootroot00000000000000' Gambas class file Private $sFic As String Public Sub Run(sFic As String) As String $sFic = sFic If Not Me.ShowModal() Then Return Return $sFic End Public Sub btnOK_Click() $sFic = Mid$(fchFile.SelectedPath, Len(fchFile.Root) + 1) If Left($sFic) = "/" Then $sFic = Mid$($sFic, 2) If Not $sFic Then Return Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() fchFile.Root = Project.Dir &/ ".hidden" fchFile.SelectedPath = Project.Dir &/ ".hidden" &/ $sFic End Public Sub fchFile_Activate() btnOK.Value = True End gambas-3.16.3/app/src/gambas3/.src/Packager/FSelectExtraFile.form000066400000000000000000000012521411575327000243270ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,113,64) Text = ("Select an extra file") Arrangement = Arrange.Vertical Spacing = True Margin = True { fchFile FileChooser MoveScaled(1,1,110,56) Expand = True Picture = Picture["img/logo/head-16.png"] ShowDirectory = True ShowBookmark = False ReadOnly = True } { HBox1 HBox MoveScaled(1,59,66,4) Spacing = True { Panel1 Panel MoveScaled(4,0,4,4) Expand = True } { btnOK Button MoveScaled(31,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(48,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Packager/Package.module000066400000000000000000002533341411575327000230650ustar00rootroot00000000000000' Gambas module file Public Dir As String Private Path As String Public ChangeLog As String Public Signature As String Public Const ALL_TARGETS As String = "*" Private RPMBUILD_PROG As String Private FAKEROOT_PROG As String Private DKPG_PROG As String Private TAR_1_13_PROG As String Private AUTOCONF_PROG As String Private AUTOMAKE_PROG As String Private MAKEPKG_PROG As String 'Private MAKESELF_PROG As String Private $sOutput As String Private $bEnd As Boolean Private $sName As String ' Project name Private $sVendor As String ' Vendor Private $sVendorPrefix As String ' Vendor prefix Private $sComponentName As String ' Project name with a vendor prefix Private $sLibraryName As String ' Library name, with the version Private $sUnsafePackageName As String ' Package name, i.e project name with prefix, but with possible forbidden characters inside Private $sCategories As String ' Categories list Private $sHome As String ' Home user directory Private $sVersion As String ' Package version Private $sVersionWithRelease As String ' Package version with release number Private $sDescription As String Private $bDescription As Boolean Private $sSupportPackage As String Private MIN_VERSION As String Private Const MAX_VERSION As String = "3.99.0" Private $sFormatSingle As String Private $sFormatMin As String Private $sFormatMax As String Private $sFormatMinMax As String Private $sFormatEqual As String Private Const QT4_SUPPORT As String = "qt4" Private QT4_SUPPORT_PACKAGES As String[] = ["gb.qt4:gb.gui", "gb.qt4:gb.gui.qt", "gb.qt4.opengl:gb.gui.opengl", "gb.qt4.webkit:gb.gui.qt.webkit"] Private Const QT5_SUPPORT As String = "qt5" Private QT5_SUPPORT_PACKAGES As String[] = ["gb.qt5:gb.gui", "gb.qt5:gb.gui.qt", "gb.qt5.opengl:gb.gui.opengl", "gb.qt5.webkit:gb.gui.qt.webkit"] Private Const GTK_SUPPORT As String = "gtk" Private GTK_SUPPORT_PACKAGES As String[] = ["gb.gtk:gb.gui", "gb.gtk.opengl:gb.gui.opengl"] Private Const GTK3_SUPPORT As String = "gtk3" Private GTK3_SUPPORT_PACKAGES As String[] = ["gb.gtk3:gb.gui"] ', "gb.gtk.opengl:gb.gui.opengl"] Private Const DEBIAN_STANDARD As String = "3.9.6" Private Const DEBIAN_DEBHELPER_VERSION As String = "9" Private DEBIAN_ICON_SIZES As Integer[] = [16, 22, 32, 48, 64, 128, 256, 512, 1024] Public Sub CheckProgram() 'IF $bChecked THEN RETURN '$bChecked = TRUE If Not Project.CheckProgram("dh_install") Then DKPG_PROG = "dh_install" If Not Project.CheckProgram("rpmbuild") Then RPMBUILD_PROG = "rpmbuild" If Not Project.CheckProgram("fakeroot") Then FAKEROOT_PROG = "fakeroot" If Not Project.CheckProgram("tar-1.13") Then TAR_1_13_PROG = "tar-1.13" Else If Not Project.CheckProgram("tar") Then TAR_1_13_PROG = "tar" Endif If Not Project.CheckProgram("autoconf") Then AUTOCONF_PROG = "autoconf" If Not Project.CheckProgram("automake") Then AUTOMAKE_PROG = "automake" If Not Project.CheckProgram("makepkg") Then MAKEPKG_PROG = "makepkg" 'If Not Project.CheckProgram("makeself") Then MAKESELF_PROG = "makeself" End Public Sub CheckSystem(sSys As String) As String Select Case sSys Case "mageia", "fedora", "suse" If Not RPMBUILD_PROG Then Return Subst(("'&1' is missing."), "rpmbuild") Case "debian", "ubuntu" If Not DKPG_PROG Then Return Subst(("'&1' is missing."), "debhelper") If Not FAKEROOT_PROG Then Return Subst(("'&1' is missing."), "fakeroot") Case "slackware" If Not TAR_1_13_PROG Then Return Subst(("'&1' is missing."), "tar-1.13") Case "autotools" If Not AUTOCONF_PROG And If Not AUTOMAKE_PROG Then Return Subst(("'&1' and '&2' are missing."), "autoconf", "automake") If Not AUTOCONF_PROG Then Return Subst(("'&1' is missing."), "autoconf") If Not AUTOMAKE_PROG Then Return Subst(("'&1' is missing."), "automake") Case "archlinux" If Not MAKEPKG_PROG Then Return Subst(("'&1' is missing."), "makepkg") 'Case "self" ' If Not MAKESELF_PROG Then Return Subst(("'&1' is missing."), "makeself") Case Else Return End Select End Private Sub ClearLog() FMakeInstall.ClearLog End Private Sub AddLog(sText As String) FMakeInstall.AddLog(sText) End Private Sub RemoveEmptyLines(sText As String) As String Return Split(sText, "\n", "", True).Join("\n") End Private Sub GetShortDesc(sText As String, Optional iMax As Integer) As String Dim iPos As Integer iPos = InStr(sText, ". ") If iPos = 0 Then iPos = Len(sText) + 1 sText = Trim(Replace(Left(sText, iPos), "\n", " ")) If iMax And If Len(sText) > iMax Then sText = Left(sText, iMax - 3) & "..." Endif Return sText End Private Sub FormatDesc(sText As String, Optional iMax As Integer) As String[] Dim aLine As New String[] Dim iPos As Integer Dim I As Integer Dim sLine As String Dim sCar As String If iMax = 0 Then Return Split(sText, "\n") aLine.Add("") While sText sCar = String.Left(sText) sText = String.Mid$(sText, 2) If sCar = "\n" Then aLine.Add("") Continue Endif aLine[aLine.Max] &= sCar sLine = aLine[aLine.Max] If String.Len(sLine) > iMax Then For I = Len(sLine) - 1 DownTo 1 iPos = InStr(" .,;", Mid$(sLine, I, 1)) If iPos Then aLine[aLine.Max] = Left(sLine, I) aLine.Add(Mid$(sLine, I + 1)) Break Endif Next If I = 0 Then aLine[aLine.Max] = String.Left(sLine, iMax) aLine.Add(String.Mid$(sLine, iMax + 1)) Endif Endif Wend Return aLine End Private Sub GetVersion() As String Return Project.FormatVersion() End Private Sub InitMake(sSys As String) If Project.CreateEachDirectory Then Path = Dir &/ sSys Try Mkdir Dir Try Mkdir Path Else Path = Dir Try Mkdir Path Endif $sName = Project.Name $sComponentName = $sName $sVendor = Project.Vendor $sVendorPrefix = Project.VendorPrefix If Not $sVendorPrefix Then $sVendorPrefix = $sVendor If Project.Type = Project.TYPE_COMPONENT Then If $sVendorPrefix Then If $sName Not Begins $sVendorPrefix & "." Then $sComponentName = $sVendorPrefix & "." & $sName Endif $sComponentName = String.LCase($sComponentName) Else If Project.Type = Project.TYPE_LIBRARY Then $sLibraryName = $sName & ":" & Project.MajorVersion & "." & Project.MinorVersion Endif '$sPrefix = GetPackagePrefix(Project.Vendor, Project.Prefix) $sUnsafePackageName = GetPackageFullName($sVendor, $sVendorPrefix, Project.Prefix, Project.PackageNameWithMajor, False) $sHome = System.User.Home $sCategories = Project.Categories[sSys] If $sCategories Then $sCategories &= ";" $sVersion = GetVersion() If sSys = "ubuntu" Then $sVersionWithRelease = $sVersion & "-0ubuntu" & CStr(Project.PackageVersion) Else $sVersionWithRelease = $sVersion & "-" & CStr(Project.PackageVersion) Endif $sDescription = RemoveEmptyLines(Project.Description) If $sDescription Then $bDescription = True Else $sDescription = "Missing description." $bDescription = False Endif With Project.Components If .Exist("gb.gui") Then $sSupportPackage = "gb.gui" Else If .Exist("gb.gui.qt") Then $sSupportPackage = "gb.gui.qt" Endif End With End Public Function Make() As Boolean Dim sSys As String Dim sMacro As String Dim bAdd As Boolean Dim sPath As String Dim aVer As String[] If Project.RuntimeVersion Then MIN_VERSION = Project.RuntimeVersion Else aVer = Split(System.FullVersion, ".") MIN_VERSION = aVer[0] & "." & aVer[1] Endif If Project.Systems.Exist("slackware") Then If Project.MakeExecutable(True, True) Then Return True Endif ' Save old rpm macro file sMacro = User.Home &/ ".rpmmacros" Try Move sMacro To sMacro & ".save" Try Kill sMacro ClearLog AddLog(("Saving CHANGELOG file.")) sPath = Project.Dir &/ ".hidden" &/ "CHANGELOG" bAdd = Not Exist(sPath) 'Try Mkdir Project.Dir &/ ".hidden" File.Save(sPath, ChangeLog) Project.RefreshKey(sPath) If bAdd Then VersionControl.AddFile(sPath) For Each sSys In Project.Systems If MakePackage(sSys) Then Return True Next ' Restore old rpm macro file Try Kill sMacro Try Move sMacro & ".save" To sMacro ' sPath = Project.Dir &/ ".extratest" ' bAdd = Not Exist(sPath) ' If Len(ExtraTest) > 0 Then ' AddLog(("Saving extra tests settings.")) ' File.Save(sPath, ExtraTest) ' If bAdd Then VersionControl.AddFile(sPath) ' Else ' If Not bAdd Then VersionControl.RemoveFile(sPath) ' Endif AddLog("\n" & String(40, "=") & "\n") AddLog(("The packages have been successfully created.") & "\n") End Public Function GetChangeDate() As String Dim sLang As String Dim sDate As String sLang = System.Language System.Language = "C" sDate = Format$(Now, "ddd mmm dd yyyy") & " " & Project.Maintainer & " " If Project.Address Then sDate = sDate & "<" & Project.Address & "> " sDate &= GetVersion() System.Language = sLang Return sDate End Private Function IsConsoleProject() As Boolean Dim sLib As String Dim hComp As CComponent For Each sLib In Project.Components hComp = Project.Documentation[sLib] If hComp.IsForm() Then Return False Next Return True End Private Sub ComponentToPackageName(sComp As String) As String Return "gambas" & System.Version & "-" & Replace(sComp, ".", "-") End Private Sub IsRuntimeComponent(sComp As String) As Boolean If sComp = "gb.debug" Or If sComp = "gb.eval" Or If sComp = "gb.test" Then Return True If sComp = "gb.gui" Or If sComp Begins "gb.gui." Then Return True End Private Function GetDependencies(Optional aComp As String[]) As String Dim sRes As String Dim sComp As String Dim iPos As Integer Dim sTest As String If Not aComp Then If Project.Type = Project.TYPE_COMPONENT Then aComp = Project.ReadComponentFile()["Require"] Else aComp = Project.Components Endif Endif If aComp Then For Each sComp In aComp iPos = InStr(sComp, ":") If iPos Then sTest = Mid$(sComp, iPos + 1) If Not Project.Components.Exist(sTest) Then Continue sComp = Left(sComp, iPos - 1) Endif If IsRuntimeComponent(sComp) Then Continue sRes &= GetDependency(sComp) 'If sComp = "gb.form" Then sRes &= GetDependency("gb.form.stock") Next Endif For Each sComp In Project.Libraries sRes &= GetDependency(sComp) Next Return sRes End Private Function GetExtraDependencies(sSys As String) As String Dim sDep As String Dim aDep As String[] Dim sRes As String Dim sFormat As String If Project.SameDependencies Then sSys = ALL_TARGETS 'Project.Systems[0] 'If Not sFormatMinMax Then sFormatMinMax = sFormatMin & sFormatMax For Each sDep In Split(Project.ExtraDependencies[sSys], "\n") aDep = Split(sDep, "\t") aDep.Resize(3) If aDep[1] And If aDep[2] Then If aDep[1] = aDep[2] Then sFormat = $sFormatEqual Else sFormat = $sFormatMinMax Endif Else If aDep[1] Then sFormat = $sFormatMin Else If aDep[2] Then sFormat = $sFormatMax Else sFormat = $sFormatSingle Endif sRes &= Subst(sFormat, aDep[0], aDep[1], aDep[2]) Next Return sRes End Private Function GetExtraFiles(sSys As String, sFormat As String, Optional sFormatDir As String) As String Dim sFile As String Dim aFile As String[] Dim sRes As String Dim sFmt As String If Project.SameFiles Then sSys = ALL_TARGETS 'Project.Systems[0] For Each sFile In Split(Project.ExtraFiles[sSys], "\n") aFile = Split(sFile, "\t") aFile.Resize(2) sFmt = If(IsDir(Project.Dir &/ ".hidden" &/ aFile[0]), sFormatDir, sFormat) sRes &= Subst(sFmt, Shell$(aFile[0]), Shell$(aFile[1]), Shell$(Mid$(aFile[0], RInStr(aFile[0], "/") + 1))) & "\n" Next Return sRes End Private Sub FormatFileInList(sFile As String, Optional bDebian As Boolean) As String If InStr(sFile, " ") Then If bDebian Then sFile = Replace(sFile, " ", "[!#-~.\"!]") Else sFile = Chr$(34) & Replace(sFile, Chr$(34), "\\\"") & Chr$(34) Endif Endif Return sFile End Private Function GetExtraFilesList(sSys As String, sPrefix As String, sFormat As String, Optional bDebian As Boolean) As String Dim sFile As String Dim aFile As String[] Dim sRes As String Dim sSrc, sDest, sDestDir As String If Project.SameFiles Then sSys = ALL_TARGETS 'Project.Systems[0] For Each sFile In Split(Project.ExtraFiles[sSys], "\n") aFile = Split(sFile, "\t") aFile.Resize(2) sSrc = FormatFileInList(sPrefix &/ aFile[0], bDebian) sDest = FormatFileInList(aFile[1] &/ File.Name(aFile[0]), bDebian) sDestDir = FormatFileInList(aFile[1], bDebian) sRes &= Subst(sFormat, sSrc, sDest, sDestDir) & "\n" Next Return sRes End Private Function CopyExtraFiles(sSys As String, sBuildDir As String) Dim sFile As String Dim aFile As String[] Dim sSrc As String Dim sDst As String If Project.SameFiles Then sSys = ALL_TARGETS 'Project.Systems[0] For Each sFile In Split(Project.ExtraFiles[sSys], "\n") aFile = Split(sFile, "\t") 'aFile.Resize(2) sSrc = Project.Dir &/ ".hidden" &/ aFile[0] sDst = File.Dir(sBuildDir &/ aFile[1] &/ File.Name(aFile[0])) Project.MakeDir(sDst) If IsDir(sSrc) Then Shell "cp -R --preserve=timestamp " & Shell$(sSrc) & " " & Shell$(sDst) Wait Else Shell "cp --preserve=timestamp " & Shell$(sSrc) & " " & Shell$(sDst) Wait 'Copy sSrc To sBuildDir &/ aFile[1] &/ File.Name(aFile[0]) Endif Next End Private Function GetExtraFilesDir(sSys As String, sFormat As String, Optional bDebian As Boolean) As String Dim sFile As String Dim aFile As String[] Dim sRes As String If Project.SameFiles Then sSys = ALL_TARGETS 'Project.Systems[0] For Each sFile In Split(Project.ExtraFiles[sSys], "\n") aFile = Split(sFile, "\t") aFile.Resize(2) If bDebian Then sRes &= Subst(sFormat, aFile[1]) & "\n" Else sRes &= Subst(sFormat, Shell$(aFile[1])) & "\n" Endif Next Return sRes End Private Function GetDependency(sLib As String) As String Dim hLibrary As CLibraryInfo Dim sVersion As String Dim aMinVersion As String[] Dim aMaxVersion As String[] Dim sPackageName As String If Left(sLib) = "/" Or If Left(sLib) = ":" Then ' The package name dependency must not include the version! hLibrary = CLibraryInfo[sLib] sPackageName = hLibrary.GetDependencyName() sVersion = hLibrary.Version aMinVersion = Split(sVersion, ".") If aMinVersion[1] = "0" Then If aMinVersion[0] <> "0" Then aMinVersion[0] = CStr(CInt(aMinVersion[0]) - 1) aMinVersion[1] = "90" Endif Else aMinVersion[1] = CStr(CInt(aMinVersion[1]) - 1) Endif aMinVersion.Resize(3) aMinVersion[2] = "0" If hLibrary.CompatibleUntil Then aMaxVersion = Split(hLibrary.CompatibleUntil, ".") Else aMaxVersion = Split(sVersion, ".") aMaxVersion.Resize(3) aMaxVersion[2] = "90" Endif ' Else If Left(sLib) = ":" Then ' ' sLib = File.Name(sLib) ' iPos = RInStr(sLib, ":") ' sVersion = Mid$(sLib, iPos + 1) ' sLib = Left(sLib, iPos - 1) ' ' sPackageName = ComponentToPackageName(sLib) ' ' aMinVersion = Split(sVersion, ".") ' aMaxVersion = Split(sVersion, ".") Else sPackageName = ComponentToPackageName(sLib) aMinVersion = Split(MIN_VERSION, ".") aMaxVersion = Split(MAX_VERSION, ".") Endif Return Subst($sFormatMinMax, sPackageName, aMinVersion.Join("."), aMaxVersion.Join(".")) End Private Sub PrintOnlyShowIn(cLine As Collection, sCategories As String) Dim aCat As String[] = Split(sCategories, ";", "", True) Dim sCat As String Dim aOnly As New String[] If aCat.Exist("Screensaver") Or If aCat.Exist("TrayIcon") Or If aCat.Exist("Applet") Or If aCat.Exist("Shell") Then For Each sCat In aCat If sCat = "KDE" Or If sCat = "GNOME" Or If sCat = "ROX" Or If sCat = "XFCE" Then aOnly.Add(sCat) Endif Next If aOnly.Count Then cLine["ShowOnlyIn"] = aOnly.Join(";") & ";" Endif End Private Sub MakeOneLine(sStr As String) As String Dim iLen As Integer sStr = Replace(sStr, "\r", "") sStr = Replace(sStr, "\n", " ") sStr = Replace(sStr, "\t", " ") Repeat iLen = Len(sStr) sStr = Replace(sStr, " ", " ") Until Len(sStr) = iLen Return Trim(sStr) End Private Sub PrintTranslatedDesktopEntry(cLine As Collection, sEntry As String, sText As String) Dim sLang As String Dim sTrans As String cLine[sEntry] = MakeOneLine(sText) For Each sLang In Project.GetTranslations() sTrans = CTranslation.FindTranslation(Language.GetPath(sLang, "po"), sText) If sTrans Then cLine[sEntry & "[" & sLang & "]"] = MakeOneLine(sTrans) Next End Private Sub PrintDesktopFile(hFile As File, sExec As String, sIcon As String, Optional sExtraCat As String) Dim cLine As New Collection Dim sExtra As String Dim iPos As Integer Print #hFile, "[Desktop Entry]" Print #hFile, "Version=1.0" If Project.Title Then PrintTranslatedDesktopEntry(cLine, "Name", Project.Title) Else PrintTranslatedDesktopEntry(cLine, "Name", Project.Name) Endif If $bDescription Then PrintTranslatedDesktopEntry(cLine, "Comment", Project.Description) cLine["Exec"] = sExec cLine["Icon"] = sIcon cLine["Terminal"] = IIf(IsConsoleProject(), "true", "false") cLine["Type"] = "Application" cLine["StartupNotify"] = "true" cLine["Categories"] = sExtraCat & $sCategories If Project.MimeTypes.Count Then cLine["MimeType"] = Project.MimeTypes.Join(";") PrintOnlyShowIn(cLine, $sCategories) If Trim(Project.ExtraDesktop) Then For Each sExtra In Split(Project.ExtraDesktop, "\n") sExtra = Trim(sExtra) If Not sExtra Then Continue If InStr("#;=", Left(sExtra)) Then Continue iPos = InStr(sExtra, "=") cLine[RTrim(Left(sExtra, iPos - 1))] = LTrim(Mid$(sExtra, iPos + 1)) Next Endif For Each sExtra In ["Name", "Comment", "Exec", "Icon", "Terminal", "Type", "StartupNotify", "Categories", "MimeType", "ShowOnlyIn"] If cLine[sExtra] Then Print #hFile, sExtra; "="; cLine[sExtra] cLine.Remove(sExtra) Endif Next For Each sExtra In cLine Print #hFile, cLine.Key; "="; sExtra Next End Private Sub RunCommand(sCmd As String, Optional sDir As String, Optional bIgnoreStderr As Boolean) Dim aCmd As New String[] $sOutput = "" $bEnd = False If sDir Then AddLog("cd " & Shell$(sDir)) aCmd.Push("cd " & SConv(Shell$(sDir))) Endif AddLog(sCmd) aCmd.Push(sCmd) If bIgnoreStderr = False Then aCmd.Last &= " 2>&1" Shell aCmd.Join(" && ") For Input As "Process" Repeat Sleep 0.02 Wait Until $bEnd End Private Sub MakeSupportPackage(sSys As String) Dim sSupport As String Dim aPackage As String[] 'slackware doesn't use support packages If sSys = "slackware" Then Return If $sSupportPackage = "gb.gui" Then sSupport = GTK_SUPPORT aPackage = GTK_SUPPORT_PACKAGES AddLog("\n============ " & Subst(("Making &1 support package..."), "GTK+")) GoSub MAKE_PACKAGE If Not Project.Components.Exist("gb.gui.opengl") Then sSupport = GTK3_SUPPORT aPackage = GTK3_SUPPORT_PACKAGES AddLog("\n============ " & Subst(("Making &1 support package..."), "GTK+3")) GoSub MAKE_PACKAGE Endif Endif sSupport = QT4_SUPPORT aPackage = QT4_SUPPORT_PACKAGES AddLog("\n============ " & Subst(("Making &1 support package..."), "QT4")) GoSub MAKE_PACKAGE sSupport = QT5_SUPPORT aPackage = QT5_SUPPORT_PACKAGES AddLog("\n============ " & Subst(("Making &1 support package..."), "QT5")) GoSub MAKE_PACKAGE Return MAKE_PACKAGE: Select Case sSys Case "mageia", "fedora", "suse" MakeRpmSupportPackage(sSys, sSupport, aPackage) Case "debian", "ubuntu" MakeDebSupportPackage(sSys, sSupport, aPackage) Case "slackware" 'we shouldn't get here, but if we do, do nothing as not needed for slackware 'MakeTgzSupportPackage(sSys, sSupport, aPackage) Case "archlinux" MakeArchSupportPackage(sSys, sSupport, aPackage) Default End Select Return End Private Function MakePackage(sSys As String) As Boolean Dim sErr As String AddLog("\n" & String(78, "=") & "\n") AddLog(String.UCase(Subst(("Creating package for &1."), FMakeInstall.GetSystemName(sSys)))) AddLog("\n") InitMake(sSys) Select Case sSys Case "mageia", "fedora", "suse" MakeRpmPackage(sSys) Case "debian", "ubuntu" MakeDebPackage(sSys) Case "slackware" MakeTgzPackage(sSys) Case "autotools" MakeAutotoolsPackage(sSys) Case "archlinux" MakeArchPackage(sSys) Default Return True End Select If $sSupportPackage Then MakeSupportPackage(sSys) Catch sErr = Error.Text AddLog(("The package build has failed.") & "\n" & Error.Where & ": " & sErr) FMakeInstall.ShowError("" & ("The package build has failed.") & "
      " & sErr) Application.Busy = 0 Return True End Private Sub GetDebianBuildPackageCommand() As String Dim sCmd As String sCmd = "dpkg-buildpackage -d -rfakeroot" If Project.PackageSignature Then sCmd &= " -k" & Shell(Project.Address) Else sCmd &= " -uc -us" Endif Return sCmd End ' From Debian Policy Manual: ' Package names (both source and binary, see Package, Section 5.6.7) must consist only of lower case letters (a-z), digits (0-9), plus (+) and minus (-) signs, and periods (.). ' They must be at least two characters long And must start With an alphanumeric character. Private Sub FormatDebPackageName(sName As String) As String Dim I As Integer Dim sCar As String Dim sRes As String For I = 1 To Len(sName) sCar = Mid$(sName, I, 1) If Not IsLetter(sCar) And If Not IsDigit(sCar) And If InStr("+-", sCar) = 0 Then sCar = "-" sRes &= sCar Next Return sRes End Private Function MakeDebPackage(sSys As String) Dim hFile As File Dim sCmd As String Dim sIcon As String Dim sIconDir As String Dim sArch As String Dim sPackageName As String Dim sPackagePath As String Dim sLine As String Dim hImageStat As ImageStat Dim iSize As Integer Dim sPath As String Dim W As Integer Dim H As Integer Dim sExec As String Inc Application.Busy $sFormatSingle = ", &1" $sFormatMin = ", &1 (>= &2)" $sFormatMax = ", &1 (<< &3)" $sFormatMinMax = $sFormatMin & $sFormatMax $sFormatEqual = $sFormatMinMax sPackageName = FormatDebPackageName($sUnsafePackageName) '$sName = Replace$($sName, "_", "-") ' Step 1. Create the build directory AddLog(("Making build directory.")) RunCommand("rm -f " & Shell(Path &/ Subst("&1_&2", sPackageName, $sVersion)) & "*") sPackagePath = Path &/ Subst("&1-&2", sPackageName, $sVersion) RunCommand("rm -Rf " & Shell$(sPackagePath)) RunCommand("rm -Rf " & Shell$(sPackagePath & ".orig")) Mkdir sPackagePath Mkdir sPackagePath &/ "src" Mkdir sPackagePath &/ "debian" Mkdir sPackagePath &/ "debian/source" File.Save(sPackagePath &/ "debian/source/format", "1.0") sArch = sPackagePath &/ "src/raw.tar.gz" ' Create icons sIconDir = Project.Dir &/ ".hidden/.icons" Try Shell.RmDir(sIconDir) Shell.MkDir(sIconDir) sIcon = sPackageName Project.StretchIcon(Project.Dir &/ Project.Icon, 32).Save(sIconDir &/ sIcon & ".png") Try hImageStat = ImageStat(Project.Dir &/ Project.Icon) If Error Then W = 32 H = 32 Else W = hImageStat.Width H = hImageStat.Height Endif For Each iSize In DEBIAN_ICON_SIZES If W >= iSize And If H >= iSize Then Mkdir sIconDir &/ CStr(iSize) Project.StretchIcon(Project.Dir &/ Project.Icon, iSize).Save(sIconDir &/ CStr(iSize) &/ sIcon & ".png") Endif Next Project.MakeSourcePackageTo(sArch) ' Remove the icon dir from the project now it has been archived Shell.RmDir(sIconDir) sCmd = "cd " & Shell$(sPackagePath &/ "src") & "; tar xzf raw.tar.gz >/dev/null" Shell sCmd Wait ' Rename the source archive project directory to the package name 'TRY MOVE Path &/ (sPrefix & Subst("&1", Project.Name)) TO sPackagePath Try Kill sArch Try Shell "cp -Rf " & Shell(sPackagePath) & " " & Shell(sPackagePath & ".orig") Wait ' Step 2. Make the desktop file If Project.Type = Project.TYPE_NORMAL Then AddLog(("Creating desktop file...")) hFile = Open sPackagePath &/ "debian/" & sPackageName & ".desktop" For Create PrintDesktopFile(hFile, $sName, sIcon) Close #hFile Endif 'Step 3. Create debianization needed files: control, rules 'debian/copyright AddLog(("Sources are being debianizated.")) hFile = Open sPackagePath &/ "debian/copyright" For Create Print #hFile, "This package was debianized by " & Project.Maintainer & " <" & Project.Address & "> on" Print #hFile, Format$(Date, "ddd, dd mmm yyyy hh:nn:ss") & "+0000" Print #hFile Print #hFile, "Copyright Holder: " & Project.Maintainer & " <" & Project.Address & ">" Print #hFile Print #hFile, "License:" Print #hFile Print #hFile, If(Project.License, Project.License, "GNU General Public License") Print #hFile Print #hFile, "Created by: "; Project.Authors Close #hFile 'debian/changelog hFile = Open sPackagePath &/ "debian/changelog" For Create Print #hFile, ChangelogToDebChangelog(sPackageName) Close #hFile 'debian/compat hFile = Open sPackagePath &/ "debian/compat" For Create Print #hFile, DEBIAN_DEBHELPER_VERSION Close #hFile 'debian/menu If Project.Type = Project.TYPE_NORMAL Then hFile = Open sPackagePath &/ "debian/menu" For Create Print #hFile, "?package("; sPackageName; "):needs=\""; IIf(IsConsoleProject(), "text", "X11"); "\" section=\""; Project.Menus[sSys]; "\"\\" Print #hFile, "title=\""; IIf(Project.Title, Project.Title, Project.Name); "\"\\" Print #hFile, "command=\"/usr/bin/"; $sName; "\"\\" Print #hFile, "icon=\"/usr/share/pixmaps/"; sIcon; ".png\"" Close #hFile Endif 'debian/dirs hFile = Open sPackagePath &/ "debian/dirs" For Create Select Case Project.Type Case Project.TYPE_COMPONENT Print #hFile, "usr/share/gambas"; System.Version; "/info" Print #hFile, "usr/lib/gambas"; System.Version If Exist(Project.Dir &/ ".hidden/control") Then Print #hFile, "usr/share/gambas" & System.Version & "/control/" & $sComponentName Case Project.TYPE_LIBRARY Print #hFile, "usr/lib/gambas"; System.Version; "/"; LCase($sVendor) Case Project.TYPE_NORMAL Print #hFile, "usr/bin" Print #hFile, "usr/share/applications" Print #hFile, "usr/share/pixmaps" For Each iSize In DEBIAN_ICON_SIZES Print #hFile, "usr/share/icons/hicolor/"; iSize; "x"; iSize; "/apps" Next End Select Print #hFile, GetExtraFilesDir(sSys, "&1", True) Close #hFile 'debian/install hFile = Open sPackagePath &/ "debian/install" For Create Select Case Project.Type Case Project.TYPE_COMPONENT Print #hFile, "src/"; $sName; "/"; $sComponentName; ".gambas usr/lib/gambas" & System.Version If Exist(Project.Dir &/ ".hidden/control") Then Print #hFile, "src/"; $sName; "/.hidden/control/*.png usr/share/gambas" & System.Version &/ "control" &/ $sComponentName Case Project.TYPE_LIBRARY Print #hFile, "src/"; $sName; "/"; $sLibraryName; ".gambas usr/lib/gambas" & System.Version; "/"; LCase($sVendor) Case Project.TYPE_NORMAL Print #hFile, "src/"; $sName; "/"; $sName; " usr/bin" Print #hFile, "debian/"; sPackageName; ".desktop usr/share/applications" Print #hFile, "src/"; $sName; "/.hidden/.icons/"; sIcon; ".png usr/share/pixmaps" For Each iSize In DEBIAN_ICON_SIZES sPath = "src" &/ $sName &/ ".hidden/.icons" &/ CStr(iSize) &/ sIcon & ".png" If Exist(sPackagePath &/ sPath) Then Print #hFile, sPath; " /usr/share/icons/hicolor/"; iSize; "x"; iSize; "/apps" Next End Select Print #hFile, GetExtraFilesList(sSys, "src/" & $sName & "/.hidden", "&1 &3", True) Close #hFile 'debian/control hFile = Open sPackagePath &/ "debian/control" For Create Print #hFile, "Source: "; sPackageName Print #hFile, "Section: contrib/"; Project.Groups[sSys] Print #hFile, "Priority: optional" Print #hFile, "Maintainer: "; Project.Maintainer; " <"; Project.Address; ">" Print #hFile, "Build-Depends: debhelper (>= "; DEBIAN_DEBHELPER_VERSION; "), gambas"; System.Version; "-dev (>= "; MIN_VERSION; "), gambas"; System.Version; "-dev (<< "; MAX_VERSION; ")"; Print #hFile, GetDependencies(); Print #hFile, GetExtraDependencies(sSys); Print #hFile Print #hFile, "Standards-Version: "; DEBIAN_STANDARD Print #hFile Print #hFile, "Package: "; sPackageName Print #hFile, "Architecture: all" Print #hFile, "Depends: gambas"; System.Version; "-runtime (>= "; MIN_VERSION; "), gambas"; System.Version; "-runtime (<< "; MAX_VERSION; ")"; Print #hFile, GetDependencies(); Print #hFile, GetExtraDependencies(sSys); Print #hFile Print #hFile, GetShortDesc("Description: " & $sDescription, 80) ' If Project.Title Then ' Print #hFile, Project.Title ' Else ' Print #hFile, Project.Name ' Endif For Each sLine In FormatDesc($sDescription, 80) Print #hFile, " "; sLine Next Select Case Project.Type Case Project.TYPE_NORMAL Print #hFile, " This program is written in Gambas." Case Project.TYPE_LIBRARY Print #hFile, " This is a Gambas library." Case Project.TYPE_COMPONENT Print #hFile, " This is a Gambas component written in Gambas." End Select Close #hFile 'debian/rules hFile = Open sPackagePath &/ "debian/rules" For Create Output To #hFile Print "#!/usr/bin/make -f" Print "build: build-stamp" Print "build-stamp:" Print "\tdh_testdir" Print "\ttouch build-stamp" Print "\t"; Project.GetCompileCommand(True, Not Project.KeepDebugInfo, True, False) & " src" &/ $sName Print "\tgba"; System.Version; " -o "; Select Case Project.Type Case Project.TYPE_COMPONENT sExec = "src" &/ $sName &/ $sComponentName & ".gambas" Case Project.TYPE_LIBRARY sExec = "src" &/ $sName &/ $sLibraryName & ".gambas" Case Project.TYPE_NORMAL sExec = "src" &/ $sName &/ $sName End Select Print Shell(sExec); " src" &/ $sName ' If Project.Type = Project.TYPE_COMPONENT ' If $sName <> $sComponentName Then ' Print "\tmv "; Shell$("src" &/ $sName &/ $sName & ".gambas"); " "; Shell$("src" &/ $sName &/ $sComponentName & ".gambas") ' Endif ' Else If Project.Type = Project.TYPE_LIBRARY Then ' Print "\tmv "; Shell$("src" &/ $sName &/ $sName & ".gambas"); " "; Shell$("src" &/ $sName &/ $sLibraryName & ".gambas") ' Endif Print Print "clean:" Print "\tdh_testdir" Print "\tdh_testroot" Print "\trm -Rf "; Shell("src" &/ $sName &/ ".gambas") Print "\trm -f "; Shell(sExec) Print "\trm -f build-stamp install-stamp" Print "\tdh_clean" Print Print "install: build" Print "\tdh_testdir" Print "\tdh_testroot" Print "\tdh_prep" Print "\tdh_installdirs" If Project.Type = Project.TYPE_NORMAL Then If $sName <> sPackageName Then Print "\tln -s " & Shell$($sName) & " \"$(CURDIR)\"/debian" &/ sPackageName &/ "/usr/bin" &/ Shell$(sPackageName) Else If Project.Type = Project.TYPE_COMPONENT Then Print "\tcp src" &/ $sName & "/.component \"$(CURDIR)\"/debian/" & sPackageName & "/usr/lib/gambas" & System.Version & "/" & Shell$($sComponentName) & ".component" Print "\tcp src" &/ $sName & "/.info \"$(CURDIR)\"/debian/" & sPackageName & "/usr/share/gambas" & System.Version & "/info/" & Shell$($sComponentName) & ".info " "" Print "\tcp src" &/ $sName & "/.list \"$(CURDIR)\"/debian/" & sPackageName & "/usr/share/gambas" & System.Version & "/info/" & Shell$($sComponentName) & ".list" Endif Print "\ttouch install-stamp" Print Print "binary-arch: build install" Print "\tdh_testdir" Print Print "binary-indep: build install" Print "\tdh_testdir -i" Print "\tdh_testroot -i" Print "\tdh_installdocs -i" Print "\tdh_installchangelogs -i" Print "\tdh_install -i" Print "\tdh_installmenu" Print "\tdh_compress -i" Print "\tdh_fixperms -i" Print "\tdh_installdeb -i" Print "\tdh_gencontrol -i" Print "\tdh_md5sums -i" Print "\tdh_builddeb -i" Print Print "binary: binary-indep binary-arch" Print ".PHONY: build clean binary-indep binary-arch binary install" Output To Default Close #hFile Try Shell "chmod +x " & Shell(sPackagePath &/ "debian/rules") Wait ' Step 4. Build package AddLog(("Creating package...")) 'sCmd = "cd " & Shell$(sPackagePath) & "; fakeroot dpkg-buildpackage -d" 'sCmd = "fakeroot dpkg-buildpackage -d" RunCommand(GetDebianBuildPackageCommand(), sPackagePath) Dec Application.Busy If Process.LastValue > 2 Then Error.Raise(("'dpkg-buildpackage' has failed.")) Try Shell "rm -Rf " & Shell$(sPackagePath) Wait Try Shell "rm -f " & Shell$(Path) &/ "*.dsc.asc" Wait End Private Function MakeDebSupportPackage(sSys As String, sSupport As String, aComp As String[]) Dim hFile As File Dim sPackageName As String Dim sPackagePath As String Dim sDesc As String Dim sLine As String Dim sRelease As String Inc Application.Busy $sFormatSingle = ", &1" $sFormatMin = ", &1 (>= &2)" $sFormatMax = ", &1 (<< &3)" $sFormatMinMax = $sFormatMin & $sFormatMax $sFormatEqual = $sFormatMin & Replace($sFormatMax, "<<", "<=") sPackageName = FormatDebPackageName($sUnsafePackageName) & "-" & sSupport sRelease = CStr(Project.PackageVersion) ' Step 1. Create the build directory AddLog(("Making build directory.")) sPackagePath = Path &/ Subst("&1-&2", sPackageName, $sVersion) Try Shell "rm -Rf " & Shell$(sPackagePath) Wait Mkdir sPackagePath Mkdir sPackagePath &/ "debian" 'Step 3. Create debianization needed files: control, rules 'debian/copyright AddLog(("Sources are being debianizated.")) hFile = Open sPackagePath &/ "debian/copyright" For Create Print #hFile, "This package was debianized by " & Project.Maintainer & " <" & Project.Address & "> on" Print #hFile, Format$(Date, "ddd, dd mmm yyyy hh:nn:ss") & "+0000" Print #hFile Print #hFile, "Copyright Holder: " & Project.Maintainer & " <" & Project.Address & ">" Print #hFile Print #hFile, "License:" Print #hFile Print #hFile, If(Project.License, Project.License, "GNU General Public License") Close #hFile 'debian/changelog hFile = Open sPackagePath &/ "debian/changelog" For Create Print #hFile, ChangelogToDebChangelog(sPackageName) Close #hFile 'debian/compat hFile = Open sPackagePath &/ "debian/compat" For Create Print #hFile, DEBIAN_DEBHELPER_VERSION Close #hFile 'debian/control hFile = Open sPackagePath &/ "debian/control" For Create Print #hFile, "Source: "; sPackageName Print #hFile, "Section: contrib/"; Project.Groups[sSys] Print #hFile, "Priority: optional" Print #hFile, "Maintainer: "; Project.Maintainer; " <"; Project.Address; ">" Print #hFile, "Build-Depends: debhelper (>= "; DEBIAN_DEBHELPER_VERSION; ")" Print #hFile, "Standards-Version: "; DEBIAN_STANDARD Print #hFile Print #hFile, "Package: "; sPackageName Print #hFile, "Architecture: all" Print #hFile, "Depends: "; FormatDebPackageName($sUnsafePackageName);; "(>=";; $sVersionWithRelease;; "), "; FormatDebPackageName($sUnsafePackageName);; "(<=";; $sVersionWithRelease; ")"; GetDependencies(aComp) sDesc = sSupport & " package for " & If(Project.Title, Project.Title, Project.Name) Print #hFile, GetShortDesc("Description: " & sDesc, 80) sDesc = "This is the dummy " & sDesc For Each sLine In FormatDesc(sDesc) Print #hFile, " "; sLine Next ' debian/rules hFile = Open sPackagePath &/ "debian/rules" For Create Output To #hFile Print "#!/usr/bin/make -f" Print Print "build build-arch build-indep:" Print Print "clean:" Print "\tdh_testdir" Print "\tdh_clean" Print Print "install: build" Print "\tdh_testdir" Print "\tdh_testroot" Print "\tdh_prep" Print Print "binary-arch: install" Print Print "binary-indep: install" Print "\tdh_testdir" Print "\tdh_testroot" Print "\tdh_install" Print "\tdh_installdocs" Print "\tdh_installchangelogs" Print "\tdh_compress" Print "\tdh_fixperms" Print "\tdh_installdeb" Print "\tdh_gencontrol" Print "\tdh_md5sums" Print "\tdh_builddeb" Print Print "binary: binary-indep binary-arch" Print ".PHONY: build clean binary-indep binary-arch binary install" Print Output To Default Close #hFile Try Shell "chmod +x " & Shell(sPackagePath &/ "debian/rules") Wait ' Step 4. Build package AddLog(("Creating package...")) RunCommand(GetDebianBuildPackageCommand(), sPackagePath) Dec Application.Busy If Process.LastValue > 2 Then Error.Raise(("'dpkg-buildpackage' has failed.")) Try Shell "rm -Rf " & Shell$(sPackagePath) Wait Try Shell "rm -f " & Shell$(Path) &/ "*.dsc.asc" Wait End Private Sub ChangelogToDebChangelog(sPackageName As String) As String Dim aLine As String[] Dim sLine As String Dim debChangelog As String Dim sDate As String Dim sBits As String[] Dim previousLine As String Dim sWord As String Dim sNextWord As String Dim aWord As String[] aLine = Split(ChangeLog, "\n") For Each sLine In aLine If Left$(sLine, 1) = "*" Then If sDate <> "" Then 'Debian packages don't accept an empty changelog line for the release: If previousLine = sPackageName & " (" & $sVersionWithRelease & ") unstable; urgency=low" & "\n\n" Then debChangelog = debChangelog & " * New release version\n" Endif debChangelog = debChangelog & "\n -- " & Project.Maintainer & " <" & Project.Address & "> " & sDate & "\n\n" Endif sbits = Split(Trim$(sLine), " ") sDate = sbits[1] & ", " & sbits[3] & " " & sbits[2] & " " & sbits[4] & " 12:00:00 +0000" 'sVersion = GetDebVersion() previousLine = sPackageName & " (" & $sVersionWithRelease & ") unstable; urgency=low" & "\n\n" debChangelog &= previousLine Else If Trim$(sLine) <> "" Then aWord = Split(Right$(sLine, -2), " ") previousLine = " * " sLine = "" For Each sWord In aWord Repeat If String.Len(sWord) > 76 Then sNextWord = String.Mid$(sWord, 77) sWord = String.Left(sWord, 76) Else sNextWord = "" Endif If String.Len(sLine & sWord) > 76 Then previousLine &= sLine & "\n " sLine = sWord Else sLine = LTrim(sLine & " " & sWord) Endif sWord = sNextWord Until Not sWord Next If sLine Then previousLine &= sLine & "\n" debChangelog &= previousLine Endif Endif Next debChangelog &= "\n -- " & Project.Maintainer & " <" & Project.Address & "> " & sDate & "\n" Return debChangelog End Private Sub FormatRpmPackageName(sName As String) As String Dim I As Integer Dim sCar As String Dim sRes As String Dim iLen As Integer For I = 1 To Len(sName) sCar = Mid$(sName, I, 1) If Not IsLetter(sCar) And If Not IsDigit(sCar) Then sCar = "-" sRes &= sCar Next Do iLen = Len(sRes) sRes = Replace(sRes, "--", "-") If Len(sRes) = iLen Then Break Loop Return sRes End Private Function MakeRpmPackage(sSys As String) Dim sSrc As String Dim sDir As String Dim sCmd As String Dim hFile As File Dim sArch As String Dim sOutput As String Dim sLang As String Dim sPackage As String Dim sIcon As String Dim sDistribution As String Dim sVendor As String Dim sRelease As String Dim sPackageName As String Inc Application.Busy $sFormatSingle = ",&1" $sFormatMin = ",&1 >= &2" $sFormatMax = ",&1 < &3" $sFormatMinMax = $sFormatMin & $sFormatMax $sFormatEqual = $sFormatMin & Replace($sFormatMax, "<", "<=") sPackageName = FormatRpmPackageName($sUnsafePackageName) sRelease = CStr(Project.PackageVersion) Select Case sSys Case "mageia" sDistribution = "Mageia" sVendor = "Mageia" sRelease &= ".mga" Case "fedora" sDistribution = "Fedora" sVendor = "Fedora" sRelease &= ".fdr" Case "suse" sDistribution = "OpenSUSE" sVendor = "Novell" sRelease &= ".suse" End Select ' step 1, set up RPM dirs and macros if they're not there already AddLog(("Initializing ~/RPM directory.")) For Each sCmd In ["RPM/", "RPM/BUILD/", "RPM/RPMS/", "RPM/SOURCES/", "RPM/SPECS/", "RPM/SRPMS/", "RPM/tmp/"] Try Mkdir $sHome &/ sCmd Next hFile = Open $sHome &/ ".rpmmacros" For Create Print #hFile, "%_topdir " & $sHome &/ "RPM" Print #hFile, "%_tmppath " & $sHome &/ "RPM/tmp" 'PRINT #hFile, "%_signature gpg" 'PRINT #hFile, "%_gpg_name Mandrivalinux" 'PRINT #hFile, "%_gpg_path ~/.gnupg" Print #hFile, "%packager "; Project.Maintainer & "<" & SConv(Project.Address) & ">" Print #hFile, "%buildhost "; System.Host Print #hFile, "%distribution "; sDistribution Print #hFile, "%vendor "; If($sVendor, $sVendor, sVendor) Close #hFile ' step 2, write source tarball (with bzip) to SOURCES dir AddLog(("Creating source package.")) sSrc = $sHome &/ "RPM/SOURCES" sDir = Project.Dir &/ ".icon" Shell "rm -rf " & Shell$(sDir) Wait Try Mkdir sDir ' IF Project.Icon THEN ' hIcon = Image.Load(Project.Dir &/ Project.Icon) ' ELSE ' hIcon = Image.Load("img/32/gambas.png") ' ENDIF Project.StretchIcon(Project.Dir &/ Project.Icon, 16).Save(sDir &/ "16.png") Project.StretchIcon(Project.Dir &/ Project.Icon, 32).Save(sDir &/ "32.png") Project.StretchIcon(Project.Dir &/ Project.Icon, 48).Save(sDir &/ "48.png") Project.StretchIcon(Project.Dir &/ Project.Icon, 64).Save(sDir &/ "64.png") sArch = sSrc &/ Subst("&1-&2.tar.bz2", sPackageName, $sVersion) Project.MakeSourcePackageTo(sArch) Shell "rm -rf " & Shell$(sDir) Wait AddLog(("Creating .spec file.")) hFile = Open $sHome &/ "RPM/SPECS" &/ sPackageName & ".spec" For Create Print #hFile, "%define name " & sPackageName Print #hFile, "%define version " & $sVersion Print #hFile, "%define release "; sRelease Print #hFile Print #hFile, "Summary: " & IIf(Project.Title, Project.Title, Project.Name) Print #hFile, "Name: %{name}" Print #hFile, "Version: %{version}" Print #hFile, "Release: %{release}" Print #hFile, "Source0: %{name}-%{version}.tar.bz2" Print #hFile, "License: "; If(Project.License, Project.License, "GPL") Print #hFile, "Group: " & Project.Groups[sSys] Print #hFile, "BuildRoot: %{_tmppath}/%{name}-%{version}-${release}-buildroot" If sSys <> "mageia" Then Print #hFile, "Prefix: %{_prefix}" Endif 'PRINT #hFile, "BuildRequires: gambas2-ide" Print #hFile, "BuildArch: noarch" Print #hFile, "Requires: gambas"; System.Version; "-runtime >= "; MIN_VERSION; ",gambas"; System.Version; "-runtime < "; MAX_VERSION; Print #hFile, GetDependencies(); Print #hFile, GetExtraDependencies(sSys); Print #hFile Print #hFile, "AutoReqProv: no" Print #hFile, "\n%description\n" & $sDescription & "\nThis program is written in Gambas, so you will need Gambas to be installed." Print #hFile, "\n%prep" If sSys <> "mageia" Then Print #hFile, "rm -rf %{buildroot}" Endif Print #hFile, "%setup -q -n " & Shell$($sName) If Project.Type = Project.TYPE_COMPONENT Then ' Components must be installed in Gambas prefix, which is not known at package creation time. ' How can we do that? Hardcode installation path according to the distribution? Print #hFile, "\n%build" Print #hFile, Project.GetCompileCommand(True, Not Project.KeepDebugInfo, True, False) & "\ngba"; System.Version Print #hFile, "\n%install" Print #hFile, GetExtraFilesDir(sSys, "install -d %{buildroot}/&1") Print #hFile, GetExtraFiles(sSys, "install -p .hidden/&1 %{buildroot}/&2/&1", "cp -R --preserve=timestamp .hidden/&1 %{buildroot}/&2/&1") Print #hFile, "install -d %{buildroot}/%{_libdir}/gambas"; System.Version Print #hFile, "install -p "; Shell$($sName); ".gambas %{buildroot}/%{_libdir}/gambas" & System.Version; "/"; Shell$($sComponentName); ".gambas" Print #hFile, "install -p .component %{buildroot}/%{_libdir}/gambas"; System.Version; "/"; Shell$($sComponentName); ".component" Print #hFile, "install -d %{buildroot}/%{_datadir}/gambas"; System.Version; "/info" Print #hFile, "install -p .info %{buildroot}/%{_datadir}/gambas"; System.Version; "/info/"; Shell$($sComponentName); ".info" Print #hFile, "install -p .list %{buildroot}/%{_datadir}/gambas"; System.Version; "/info/"; Shell$($sComponentName); ".list" If Exist(Project.Dir &/ ".hidden/control") Then Print #hFile, "install -d %{buildroot}/%{_datadir}/gambas"; System.Version; "/control/"; Shell$($sComponentName) Print #hFile, "install -p "; ".hidden/control/*.png %{buildroot}/%{_datadir}/gambas" & System.Version &/ "control" &/ Shell$($sComponentName) Endif Else Print #hFile, "\n%build" Print #hFile, Project.GetCompileCommand(True, Not Project.KeepDebugInfo, True, False) & "\ngba"; System.Version Print #hFile, "\n%install" If Project.Type = Project.TYPE_NORMAL Then Print #hFile, "install -Dp "; Shell$($sName); ".gambas %{buildroot}/%{_bindir}" &/ Shell$($sName) Else If Project.Type = Project.TYPE_LIBRARY Then Print #hFile, "install -d %{buildroot}/%{_libdir}/gambas"; System.Version; "/"; LCase($sVendor) Print #hFile, "install -p "; Shell$($sName); ".gambas %{buildroot}/%{_libdir}/gambas"; System.Version; "/"; LCase($sVendor); "/"; Shell$($sLibraryName & ".gambas") Endif Print #hFile, GetExtraFilesDir(sSys, "install -d %{buildroot}/&1") Print #hFile, GetExtraFiles(sSys, "install -p .hidden/&1 %{buildroot}/&2/&1", "cp -R --preserve=timestamp .hidden/&1 %{buildroot}/&2/&1") If Project.Type = Project.TYPE_NORMAL sIcon = $sName & ".png" ' NOTE: There are explicit references to /usr/share. ' I must find a way to use the rpm macros instead. Select Case sSys Case "mageia" Print #hFile, "install -Dp .icon/16.png %{buildroot}/%{_datadir}/icons/hicolor/16x16/apps" &/ Shell$(sIcon) Print #hFile, "install -Dp .icon/32.png %{buildroot}/%{_datadir}/icons/hicolor/32x32/apps" &/ Shell$(sIcon) Print #hFile, "install -Dp .icon/48.png %{buildroot}/%{_datadir}/icons/hicolor/48x48/apps" &/ Shell$(sIcon) Print #hFile, "install -Dp .icon/64.png %{buildroot}/%{_datadir}/icons/hicolor/64x64/apps" &/ Shell$(sIcon) If $sName <> sPackageName Then Print #hFile, "ln -s " & Shell$($sName) & " \"%{buildroot}/%{_bindir}\"/" & Shell$(sPackageName) Print #hFile, "install -d %{buildroot}/%{_datadir}/applications" Print #hFile, "cat << EOF > %{buildroot}/%{_datadir}/applications/%{name}.desktop" PrintDesktopFile(hFile, $sName, $sName) ', "X-MandrivaLinux-" & Replace(Replace(Project.Menus[sSys], " ", ""), "/", "-") & ";") Print #hFile, "EOF" Case "fedora" Print #hFile, "install -d %{buildroot}/%{_datadir}/pixmaps" Print #hFile, "install -d %{buildroot}/%{_datadir}/applications" Print #hFile, "install -p .icon/48.png %{buildroot}/%{_datadir}/pixmaps" &/ Shell$(sIcon) If $sName <> sPackageName Then Print #hFile, "ln -s " & Shell$($sName) & " \"%{buildroot}/%{_bindir}\"/" & Shell$(sPackageName) Print #hFile, "cat << EOF > %{buildroot}%{_datadir}/applications/%{name}.desktop" PrintDesktopFile(hFile, $sName, sIcon, "X-RedHat-Extra;") Print #hFile, "EOF" Case "suse" Print #hFile, "install -d %{buildroot}/%{_datadir}/pixmaps" Print #hFile, "install -d %{buildroot}/%{_datadir}/applications" Print #hFile, "install -p .icon/48.png %{buildroot}/%{_datadir}/pixmaps" &/ Shell$(sIcon) If $sName <> sPackageName Then Print #hFile, "ln -s " & Shell$($sName) & " \"%{buildroot}/%{_bindir}\"/" & Shell$(sPackageName) Print #hFile, "cat << EOF > %{buildroot}%{_datadir}/applications/%{name}.desktop" PrintDesktopFile(hFile, $sName, sIcon) Print #hFile, "EOF" End Select Endif Endif If sSys <> "mageia" Then Print #hFile, "\n%clean" Print #hFile, "rm -rf %{buildroot}" Endif Print #hFile, "\n%files" If sSys <> "mageia" Then Print #hFile, "%defattr(-,root,root)" Endif If Project.Type = Project.TYPE_COMPONENT Then Print #hFile, FormatFileInList("%{_libdir}/gambas" & System.Version & "/" & $sComponentName & ".gambas") Print #hfile, FormatFileInList("%{_libdir}/gambas" & System.Version & "/" & $sComponentName & ".component") Print #hFile, FormatFileInList("%{_datadir}/gambas" & System.Version & "/info/" & $sComponentName & ".info") Print #hFile, FormatFileInList("%{_datadir}/gambas" & System.Version & "/info/" & $sComponentName & ".list") If Exist(Project.Dir &/ ".hidden/control") Then Print #hFile, FormatFileInList("%{_datadir}/gambas" & System.Version & "/control/" & $sComponentName & "/*.png") Endif Print #hFile, GetExtraFilesList(sSys, "", "&2"); Else If Project.Type = Project.TYPE_NORMAL Then Print #hFile, FormatFileInList("%{_bindir}" &/ $sName) Print #hFile, FormatFileInList("%{_bindir}" &/ sPackageName) Else If Project.Type = Project.TYPE_LIBRARY Then Print #hFile, FormatFileInList("%{_libdir}/gambas" & System.Version &/ LCase($sVendor) &/ $sLibraryName & ".gambas") Endif Print #hFile, GetExtraFilesList(sSys, "", "&2"); If Project.Type = Project.TYPE_NORMAL Then Select Case sSys Case "mageia" Print #hFile, FormatFileInList("%{_datadir}/icons/hicolor/*/apps" &/ sIcon) 'PRINT #hFile, "/%{_menudir}" &/ sName Print #hFile, "%{_datadir}/applications/%{name}.desktop" Case "fedora" Print #hFile, FormatFileInList("%{_datadir}/pixmaps" &/ sIcon) Print #hFile, "%{_datadir}/applications/%{name}.desktop" Case "suse" Print #hFile, FormatFileInList("%{_datadir}/pixmaps" &/ sIcon) Print #hFile, "%{_datadir}/applications/%{name}.desktop" End Select Endif Endif Print #hFile, "\n%changelog\n" Print #hFile, ChangeLog Close #hFile ' and step 4.... build that sucker. AddLog(("Creating package...") & "\n") sLang = System.Language System.Language = "C" sCmd = RPMBUILD_PROG & " -ba " & Shell$($sHome &/ "RPM/SPECS" &/ sPackageName & ".spec") AddLog(sCmd) 'sTemp = Temp$ $sOutput = "" $bEnd = False Shell sCmd & " 2>&1" Wait For Read As "Process" 'TO sOutput ' REPEAT ' SLEEP 0.01 ' WAIT ' UNTIL $bEnd AddLog("") sOutput = Replace($sOutput, "\r", "") Try sOutput = DConv(sOutput) Try Kill $sHome &/ ".rpmmacros" System.Language = sLang Dec Application.Busy If Process.LastValue Then Error.Raise(("'rpmbuild' has returned the following error code:") & " " & Process.LastValue) For Each sCmd In Split(sOutput, "\n") If Left(sCmd, 6) = "Wrote:" And Right$(sCmd, 10) = "noarch.rpm" Then sPackage = Subst("&1-&2-&3.noarch.rpm", sPackageName, $sVersion, sRelease) ' IF sSys = "debian" THEN ' SHELL "cd " & Shell$(sHome &/ "RPM/RPMS/noarch") & "; fakeroot " & ALIEN_PROG & " --to-deb -k " & Shell$(sPackage) WAIT ' sPackage = sPrefix & Subst("&1_&2.&3-&4_all.deb", LCase(Project.Name), Project.MajorVersion, Project.MinorVersion, sRelease) ' IF NOT Exist(sHome &/ "RPM/RPMS/noarch" &/ sPackage) THEN Error.Raise("alien command has failed") ' ENDIF MoveFile($sHome &/ "RPM/RPMS/noarch" &/ sPackage, Path &/ sPackage) AddLog(sPackage) sPackage = Subst("&1-&2-&3.src.rpm", sPackageName, $sVersion, sRelease) ' IF sSys = "debian" THEN ' SHELL "cd " & Shell$(sHome &/ "RPM/SRPMS") & "; fakeroot alien --to-deb -k " & Shell$(sPackage) WAIT ' sPackage = sPrefix & Subst("&1_&2.&3-&4_all.deb", LCase(Project.Name), Project.MajorVersion, Project.MinorVersion, sRelease) ' IF NOT Exist(sHome &/ "RPM/SRPMS" &/ sPackage) THEN Error.Raise("alien command has failed") ' MoveFile(sHome &/ "RPM/SRPMS" &/ sPackage, Path &/ File.BaseName(sPackage) & ".src.deb") ' ELSE MoveFile($sHome &/ "RPM/SRPMS" &/ sPackage, Path &/ sPackage) AddLog(sPackage) ' ENDIF End If Next End Private Function MakeRpmSupportPackage(sSys As String, sSupport As String, aComp As String[]) Dim sCmd As String Dim hFile As File Dim sOutput As String Dim sLang As String Dim sPackage As String Dim sDistribution As String Dim sVendor As String Dim sRelease As String Dim sPackageName As String Dim sDependency As String Inc Application.Busy $sFormatSingle = ",&1" $sFormatMin = ",&1 >= &2" $sFormatMax = ",&1 < &3" $sFormatMinMax = $sFormatMin & $sFormatMax $sFormatEqual = $sFormatMinMax sPackageName = FormatRpmPackageName($sUnsafePackageName) & "-" & sSupport sRelease = CStr(Project.PackageVersion) Select Case sSys Case "mageia" sDistribution = "Mageia" sVendor = "Mageia" sRelease &= ".mga" Case "fedora" sDistribution = "Fedora" sVendor = "Fedora" sRelease &= ".fdr" Case "suse" sDistribution = "OpenSUSE" sVendor = "Novell" sRelease &= ".suse" End Select ' step 1, set up RPM dirs and macros if they're not there already AddLog(("Initializing ~/RPM directory.")) For Each sCmd In ["RPM/", "RPM/BUILD/", "RPM/RPMS/", "RPM/SOURCES/", "RPM/SPECS/", "RPM/SRPMS/", "RPM/tmp/"] Try Mkdir $sHome &/ sCmd Next hFile = Open $sHome &/ ".rpmmacros" For Create Print #hFile, "%_topdir " & $sHome &/ "RPM" Print #hFile, "%_tmppath " & $sHome &/ "RPM/tmp" 'PRINT #hFile, "%_signature gpg" 'PRINT #hFile, "%_gpg_name Mandrivalinux" 'PRINT #hFile, "%_gpg_path ~/.gnupg" Print #hFile, "%packager "; Project.Maintainer & "<" & SConv(Project.Address) & ">" Print #hFile, "%buildhost "; System.Host Print #hFile, "%distribution "; sDistribution Print #hFile, "%vendor "; If($sVendor, $sVendor, sVendor) Close #hFile ' step 2, write source tarball (with bzip) to SOURCES dir AddLog(("Creating .spec file.")) hFile = Open $sHome &/ "RPM/SPECS" &/ sPackageName & ".spec" For Create Print #hFile, "%define name " & sPackageName Print #hFile, "%define version " & $sVersion Print #hFile, "%define release "; sRelease Print #hFile Print #hFile, "Summary: "; sSupport; " support for "; IIf(Project.Title, Project.Title, Project.Name) Print #hFile, "Name: %{name}" Print #hFile, "Version: %{version}" Print #hFile, "Release: %{release}" 'Print #hFile, "Source0: " '"%{name}-%{version}.tar.bz2" Print #hFile, "License: "; If(Project.License, Project.License, "GPL") Print #hFile, "Group: " & Project.Groups[sSys] 'Print #hFile, "BuildRoot: %{_tmppath}/%{name}-%{version}-${release}-buildroot" If sSys <> "mageia" Then Print #hFile, "Prefix: %{_prefix}" Endif 'PRINT #hFile, "BuildRequires: gambas2-ide" Print #hFile, "BuildArch: noarch" sDependency = $sVersion & "-" & sRelease Print #hFile, "Requires: "; FormatRpmPackageName($sUnsafePackageName);; ">=";; sDependency;; ","; FormatRpmPackageName($sUnsafePackageName);; "<=";; sDependency; GetDependencies(aComp) Print #hFile Print #hFile, "AutoReqProv: no" Print #hFile, "\n%description\n"; "This is the "; sSupport; " support for "; Project.Name Print #hFile, "\n%files" If sSys <> "mageia" Then Print #hFile, "%defattr(-,root,root)" Endif Print #hFile, "\n%changelog\n" Print #hFile, ChangeLog Close #hFile ' and step 4.... build that sucker. AddLog(("Creating package...") & "\n") sLang = System.Language System.Language = "C" sCmd = RPMBUILD_PROG & " -ba " & Shell$($sHome &/ "RPM/SPECS" &/ sPackageName & ".spec") AddLog(sCmd) 'sTemp = Temp$ $sOutput = "" $bEnd = False Shell sCmd & " 2>&1" Wait For Read As "Process" 'TO sOutput ' REPEAT ' SLEEP 0.01 ' WAIT ' UNTIL $bEnd AddLog("") sOutput = Replace($sOutput, "\r", "") Try sOutput = DConv(sOutput) Try Kill $sHome &/ ".rpmmacros" System.Language = sLang Dec Application.Busy If Process.LastValue Then Error.Raise(("'rpmbuild' has returned the following error code:") & " " & Process.LastValue) For Each sCmd In Split(sOutput, "\n") If Left(sCmd, 6) = "Wrote:" And Right$(sCmd, 10) = "noarch.rpm" Then sPackage = Subst("&1-&2-&3.noarch.rpm", sPackageName, $sVersion, sRelease) ' IF sSys = "debian" THEN ' SHELL "cd " & Shell$(sHome &/ "RPM/RPMS/noarch") & "; fakeroot " & ALIEN_PROG & " --to-deb -k " & Shell$(sPackage) WAIT ' sPackage = sPrefix & Subst("&1_&2.&3-&4_all.deb", LCase(Project.Name), Project.MajorVersion, Project.MinorVersion, sRelease) ' IF NOT Exist(sHome &/ "RPM/RPMS/noarch" &/ sPackage) THEN Error.Raise("alien command has failed") ' ENDIF MoveFile($sHome &/ "RPM/RPMS/noarch" &/ sPackage, Path &/ sPackage) AddLog(sPackage) sPackage = Subst("&1-&2-&3.src.rpm", sPackageName, $sVersion, sRelease) ' IF sSys = "debian" THEN ' SHELL "cd " & Shell$(sHome &/ "RPM/SRPMS") & "; fakeroot alien --to-deb -k " & Shell$(sPackage) WAIT ' sPackage = sPrefix & Subst("&1_&2.&3-&4_all.deb", LCase(Project.Name), Project.MajorVersion, Project.MinorVersion, sRelease) ' IF NOT Exist(sHome &/ "RPM/SRPMS" &/ sPackage) THEN Error.Raise("alien command has failed") ' MoveFile(sHome &/ "RPM/SRPMS" &/ sPackage, Path &/ File.BaseName(sPackage) & ".src.deb") ' ELSE MoveFile($sHome &/ "RPM/SRPMS" &/ sPackage, Path &/ sPackage) AddLog(sPackage) ' ENDIF End If Next End Private Sub PrintSlackDescRuler(hFile As File, sPackageName As String) Dim sLine As String sLine = Space(Len(sPackageName)) & "|-----handy-ruler" & String$(76, "-") sLine = Left(sLine, 75) & "|" Print #hFile, sLine End Private Sub PrintSlackDesc(hFile As File, sLine As String, sPackageName As String) sLine = sPackageName & ": " & sLine sLine = Left(sLine, 76) Print #hFile, sLine End Private Sub PrintSlackDescContents(hFile As File, sData As String, nLine As Integer, sPackageName As String) Dim sLine As String Dim iPos As Integer While nLine If sData Then If Len(sData) > (76 - Len(sPackageName) - 2) Then sLine = Left(sData, 76 - Len(sPackageName) - 2) iPos = RInStr(sLine, " ") If iPos Then sLine = RTrim(Left(sLine, iPos - 1)) sData = LTrim(Mid$(sData, Len(sLine) + 1)) Else sLine = sData sData = "" Endif Else sLine = "" Endif PrintSlackDesc(hFile, sLine, sPackageName) Dec nLine Wend End Private Sub FormatTgzPackageName(sName As String) As String ' Use the same format as RPM at the moment Return FormatRpmPackageName(sName) End Private Sub MakeTgzPackage(sSys As String) Dim sDistribution As String Dim sVendor As String Dim sBuildDir As String Dim hFile As File 'Dim sPrefix As String Dim sCmd As String Dim sIcon As String Dim sData As String Dim sTempPackage As String Dim sPackage As String Dim sFile As String Dim sPackageName As String Inc Application.Busy $sFormatSingle = "&1\n" $sFormatMin = "&1 >= &2\n" $sFormatMax = "&1 < &3\n" $sFormatMinMax = $sFormatMin & $sFormatMax $sFormatEqual = $sFormatMinMax sPackageName = FormatTgzPackageName($sUnsafePackageName) sDistribution = "Slackware" sVendor = "Slackware" ' 1. Create the temporary build directory AddLog(("Making build directory.")) sBuildDir = File.SetExt(Temp$("slackware"), "") Shell "rm -rf " & Shell(sBuildDir) Wait Mkdir sBuildDir Select Case Project.Type Case Project.TYPE_COMPONENT For Each sCmd In ["/usr", "/usr/lib", "/usr/lib/gambas" & System.Version, "/usr/share", "/usr/share/gambas" & System.Version, "/usr/share/gambas" & System.Version & "/info", "/install"] Try Mkdir sBuildDir &/ sCmd Next Case Project.TYPE_LIBRARY For Each sCmd In ["/usr", "/usr/lib", "/usr/lib/gambas" & System.Version, "/usr/lib/gambas" & System.Version &/ LCase($sVendor), "/install"] Try Mkdir sBuildDir &/ sCmd Next Case Project.TYPE_NORMAL For Each sCmd In ["/usr", "/usr/bin", "/usr/share", "/usr/share/applications", "/usr/share/pixmaps", "/install"] Try Mkdir sBuildDir &/ sCmd Next End Select CopyExtraFiles(sSys, sBuildDir) If Project.Type = Project.TYPE_COMPONENT Then ' 2. Copy the library, the information files and the controls Copy Project.GetExecPath() To sBuildDir &/ "/usr/lib/gambas" & System.Version &/ $sComponentName & ".gambas" Copy Project.Dir &/ ".component" To sBuildDir &/ "/usr/lib/gambas" & System.Version &/ $sComponentName & ".component" Copy Project.Dir &/ ".info" To sBuildDir &/ "/usr/share/gambas" & System.Version &/ "info/" & $sComponentName & ".info" Copy Project.Dir &/ ".list" To sBuildDir &/ "/usr/share/gambas" & System.Version &/ "info/" & $sComponentName & ".list" If Exist(Project.Dir &/ ".hidden/control") Then Try Mkdir sBuildDir &/ "/usr/share/gambas" & System.Version & "/control" Try Mkdir sBuildDir &/ "/usr/share/gambas" & System.Version & "/control/" & $sComponentName For Each sFile In Dir(Project.Dir &/ ".hidden/control", "*.png") Copy Project.Dir &/ ".hidden/control" &/ sFile To sBuildDir &/ "/usr/share/gambas" & System.Version & "/control/" & $sComponentName &/ sFile Next Endif Else ' 2. Copy the executable 'COPY Project.Dir &/ Project.Name & ".gambas" TO sBuildDir &/ "/usr/bin" &/ Project.Name If Project.Type = Project.TYPE_NORMAL Then Copy Project.GetExecPath() To sBuildDir &/ "/usr/bin" &/ $sName Chmod sBuildDir &/ "/usr/bin" &/ $sName To "..x..x..x" If $sName <> sPackageName Then Link $sName To sBuildDir &/ "/usr/bin" &/ sPackageName Else If Project.Type = Project.TYPE_LIBRARY Then Copy Project.GetExecPath() To sBuildDir &/ "/usr/lib/gambas" & System.Version &/ LCase($sVendor) &/ $sLibraryName & ".gambas" Chmod sBuildDir &/ "/usr/lib/gambas" & System.Version &/ LCase($sVendor) &/ $sLibraryName & ".gambas" To "..x..x..x" Endif If Project.Type = Project.TYPE_NORMAL Then ' 3. Copy the icon ' IF Project.Icon THEN ' hIcon = Image.Load(Project.Dir &/ Project.Icon) ' ELSE ' hIcon = Image.Load("img/gambas.png") ' ENDIF Project.StretchIcon(Project.Dir &/ Project.Icon, 48).Save(sBuildDir &/ "/usr/share/pixmaps" &/ Project.Name & ".png") ' 4. Make the desktop file sIcon = Shell$($sName) & ".png" hFile = Open sBuildDir &/ "/usr/share/applications/" & sPackageName & ".desktop" For Create PrintDesktopFile(hFile, $sName, "/usr/share/pixmaps/" & $sName & ".png") Close #hFile ' if we are creating a project with desktop icon/menu we need to run a doinst.sh in the package ' to make sure the menu item appears without needing a restart of xwindows. hFile = Open sBuildDir &/ "install" &/ "doinst.sh" For Create Print #hFile, "if [ -x /usr/bin/update-desktop-database ]; then" Print #hfile, " /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1" Print #hFile, "fi" Close #hFile Endif Endif ' 5. Description file hFile = Open sBuildDir &/ "/install/slack-desc" For Create Print #hFile, File.Load("install/slack-desc-header"); PrintSlackDescRuler(hFile, sPackageName) PrintSlackDesc(hFile, Subst("&1 &2: &3", sPackageName, $sVersion, If(Project.Title, Project.Title, Project.Name)), sPackageName) PrintSlackDesc(hFile, "", sPackageName) sData = Replace($sDescription, "\n", " ") PrintSlackDescContents(hFile, sData, 7, sPackageName) PrintSlackDesc(hFile, "Package created by: " & Project.Maintainer, sPackageName) PrintSlackDesc(hFile, "EMail address: " & Project.Address, sPackageName) Close #hFile ' 6. Dependencies. only used by slapt-get. other tools, like installpkg don't use it. ' gambas is packaged a a single package - gambas3 including everything. hFile = Open sBuildDir &/ "/install/slack-required" For Create Print #hFile, "gambas"; System.Version; " >= "; MIN_VERSION Print #hFile, "gambas"; System.Version; " < "; MAX_VERSION Print #hFile, GetDependencies(); Print #hFile, GetExtraDependencies(sSys); Close #hFile ' 7. Create package AddLog(("Creating package...") & "\n") sTempPackage = File.SetExt(Temp$("slackware"), "tgz") sCmd = TAR_1_13_PROG & " --exclude=slackware.tgz --owner=root --group=root -c -z -f " & Shell$(sTempPackage) & " ." RunCommand(sCmd, sBuildDir) ' AddLog(sCmd) ' $sOutput = "" ' $bEnd = FALSE ' SHELL "(cd " & SConv(Shell$(sBuildDir)) & ";" & sCmd & ") 2>&1" FOR READ 'TO sOutput ' REPEAT ' SLEEP 0.01 ' WAIT ' UNTIL $bEnd Dec Application.Busy If Process.LastValue Then Error.Raise(("'tar' has returned the following error code:") & " " & Process.LastValue) AddLog("") sPackage = Subst("&1-&2-noarch-&3.tgz", sPackageName, $sVersion, CStr(Project.PackageVersion)) MoveFile(sTempPackage, Path &/ sPackage) AddLog(sPackage) End ' Private Sub MakeTgzSupportPackage((sSys) As String, sSupport As String, aComp As String[]) ' ' Dim sDistribution As String ' Dim sVendor As String ' Dim sBuildDir As String ' Dim hFile As File ' 'Dim sPrefix As String ' Dim sCmd As String ' Dim sData As String ' Dim sTempPackage As String ' Dim sPackage As String ' Dim sPackageName As String ' ' Inc Application.Busy ' ' $sFormatSingle = "&1\n" ' $sFormatMin = "&1 >= &2\n" ' $sFormatMax = "&1 < &3\n" ' $sFormatMinMax = $sFormatMin & $sFormatMax ' $sFormatEqual = $sFormatMinMax ' ' sPackageName = FormatTgzPackageName($sUnsafePackageName) & "-" & sSupport ' sDistribution = "Slackware" ' sVendor = "Slackware" ' ' ' 1. Create the temporary build directory ' ' AddLog(("Making build directory.")) ' ' sBuildDir = File.SetExt(Temp$("slackware"), "") ' Shell "rm -rf " & Shell(sBuildDir) Wait ' Mkdir sBuildDir ' Try Mkdir sBuildDir &/ "install" ' ' ' 5. Description file ' ' hFile = Open sBuildDir &/ "/install/slack-desc" For Create ' ' Print #hFile, File.Load("install/slack-desc-header"); ' PrintSlackDescRuler(hFile, sPackageName) ' PrintSlackDesc(hFile, Subst("&1 &2: &3", sPackageName, $sVersion, sSupport & " support for " & IIf(Project.Title, Project.Title, Project.Name)), sPackageName) ' PrintSlackDesc(hFile, "", sPackageName) ' sData = sSupport & " support for " & IIf(Project.Title, Project.Title, Project.Name) ' PrintSlackDescContents(hFile, sData, 7, sPackageName) ' PrintSlackDesc(hFile, "Package created by: " & Project.Maintainer, sPackageName) ' PrintSlackDesc(hFile, "EMail address: " & Project.Address, sPackageName) ' ' Close #hFile ' ' ' 6. Dependencies ' ' hFile = Open sBuildDir &/ "/install/slack-required" For Create ' ' Print #hFile, FormatTgzPackageName($sUnsafePackageName); " >= "; $sVersion ' Print #hFile, FormatTgzPackageName($sUnsafePackageName); " <= "; $sVersion ' Print #hFile, GetDependencies(aComp); ' ' Close #hFile ' ' ' 7. Create package ' ' AddLog(("Creating package...") & "\n") ' ' sTempPackage = File.SetExt(Temp$("slackware"), "tgz") ' sCmd = TAR_1_13_PROG & " --exclude=slackware.tgz --owner=root --group=root -c -z -f " & Shell$(sTempPackage) & " ." ' RunCommand(sCmd, sBuildDir) ' ' AddLog(sCmd) ' ' $sOutput = "" ' ' $bEnd = FALSE ' ' SHELL "(cd " & SConv(Shell$(sBuildDir)) & ";" & sCmd & ") 2>&1" FOR READ 'TO sOutput ' ' REPEAT ' ' SLEEP 0.01 ' ' WAIT ' ' UNTIL $bEnd ' ' Dec Application.Busy ' ' If Process.LastValue Then Error.Raise(("'tar' has returned the following error code:") & " " & Process.LastValue) ' ' AddLog("") ' sPackage = Subst("&1-&2-noarch-&3.tgz", sPackageName, $sVersion, CStr(Project.PackageVersion)) ' MoveFile(sTempPackage, Path &/ sPackage) ' AddLog(sPackage) ' ' End ' Private Sub MakeAutotoolsPackage((sSys) As String) Dim sBuildDir As String Dim sFile As String Dim hFile As File Dim sCmd As String Dim sPackage As String sPackage = GetPackageName($sName) ' 1. Create the temporary build directory AddLog(("Making build directory.")) Inc Application.Busy sBuildDir = File.SetExt(Temp$("autotools"), "") Shell "rm -rf " & Shell(sBuildDir) Wait Mkdir sBuildDir ' 2. Copy needed files Try sCmd = Scan(Project.GetCompileCommand(True, Not Project.KeepDebugInfo, True, False), "*/bin/gbc" & System.Version & " *")[1] 'Mkdir sBuildDir &/ Project.Name Shell "cp -rL " & Shell$(Project.Dir) & " " & Shell$(sBuildDir &/ $sName) Wait sFile = Replace(File.Load("install/acinclude.m4"), "$(VERSION)", CStr(System.Version)) sFile = Replace(sFile, "$(PACKAGE_VERSION)", $sVersion) sFile = Replace(sFile, "$(EXTRA_TEST)", Project.ExtraAutoconfTest) File.Save(sBuildDir &/ "acinclude.m4", sFile) sFile = Replace(File.Load("install/Makefile.am"), "$(VERSION)", CStr(System.Version)) sFile = Replace(sFile, "$(COMPILE_FLAGS)", sCmd) File.Save(sBuildDir &/ "Makefile.am", sFile) ' 3. Create needed files (AUTHORS, README, COPYING, NEWS, ChangeLog, configure.ac) If Exist(sBuildDir &/ $sName &/ "CHANGELOG") Then Move sBuildDir &/ $sName &/ "CHANGELOG" To sBuildDir &/ "ChangeLog" Endif File.Save(sBuildDir &/ "ChangeLog", ChangeLog) File.Save(sBuildDir &/ "AUTHORS", Project.Maintainer & " <" & Project.Address & ">") File.Save(sBuildDir &/ "README", Project.Description) File.Save(sBuilddir &/ "COPYING", "This program is under : " & Project.License) File.Save(sBuilddir &/ "NEWS", "") hFile = Open sBuildDir &/ "configure.ac" For Create Print #hFile, "dnl -- package generated with gambas3 ide --" Print #hFile, "" Print #hFile, "AC_INIT([" & $sName & "],[" & $sVersion & "],[],[" & $sName & "])" Print #hFile, "AC_CONFIG_SRCDIR([configure.ac])" If Project.Type = Project.TYPE_COMPONENT Then Print #hFile, "GB_INIT_PROJECT([" & $sName & "],[" & sPackage & "],[" & $sComponentName & "])" Else Print #hFile, "GB_INIT_PROJECT([" & $sName & "],[" & sPackage & "])" Endif Print #hFile, "" Print #hFile, "dnl -- create makefile --" Print #hFile, "" Print #hFile, "AC_OUTPUT(Makefile)" Close #hFile ' 4. create the package AddLog(("Creating package...") & "\n") For Each sCmd In ["aclocal", AUTOCONF_PROG, AUTOMAKE_PROG & " -a", "./configure", "make dist"] RunCommand(sCmd, sBuildDir) Next Dec Application.Busy AddLog("") sPackage = Dir(sBuildDir, $sName & "*" & $sVersion & "*")[0] MoveFile(sBuildDir &/ sPackage, Path &/ GetPackagePrefix(Project.Type, $sVendor, $sVendorPrefix, Project.Prefix) & sPackage) AddLog(sPackage) ' Remove build dir Shell "rm -rf " & Shell(sBuildDir) Wait End Private Sub FormatArchPackageName(sName As String) As String Dim I As Integer Dim sCar As String Dim sRes As String For I = 1 To Len(sName) sCar = Mid$(sName, I, 1) If Not IsLetter(sCar) And If Not IsDigit(sCar) Then sCar = "-" sRes &= sCar Next Return sRes End Private Function MakeArchPackage(sSys As String) Dim sBuildDir As String Dim sPkgTgz As String Dim hFile As File Dim sCmd As String Dim sDependencies As String Dim sPkgDesc As String Dim sPackageName As String Inc Application.Busy sPackageName = FormatArchPackageName($sUnsafePackageName) sPkgDesc = Replace($sDescription, "\n", " ") If sPkgDesc = "" Then sPkgDesc = "a software done with Gambas3" $sFormatMinMax = "'&1>=&2' '&1<=&3' " $sFormatMin = "'&1>=&2' " $sFormatMax = "'&1<=&3' " $sFormatSingle = "'&1' " $sFormatEqual = "'&1=&2' " sDependencies = GetDependencies() & GetExtraDependencies(sSys) ' 1. Create the temporary build directory AddLog(("Making build directory.")) sBuildDir = File.SetExt(Temp$("archlinux"), "") Shell "rm -rf " & Shell$(sBuildDir) Wait Mkdir sBuildDir ' 2. Copy needed files sPkgTgz = $sName & "-" & $sVersion & ".tar.bz2" Project.MakeSourcePackageTo(sBuildDir &/ sPkgTgz) File.Save(sBuilddir &/ "license.txt", "This program is under : " & Project.License) If Project.Type = Project.TYPE_NORMAL Then Project.StretchIcon(Project.Dir &/ Project.Icon, 48).Save(sBuildDir &/ Project.Name & ".png") hFile = Open sBuildDir &/ sPackageName & ".desktop" For Create PrintDesktopFile(hFile, $sName, "/usr/share/pixmaps/" & $sName & ".png") Close #hFile Endif hFile = Open sBuildDir &/ "PKGBUILD" For Create Print #hFile, "# generated by the gambas3 ide" Print #hFile, "# Maintainer : " & Project.Maintainer & " <" & Project.Address & ">" Print #hFile, "" Print #hFile, "pkgname="; sPackageName Print #hFile, "_realname="; $sName Print #hFile, "pkgdesc=\"" & sPkgDesc & "\"" Print #hFile, "pkgver=" & $sVersion Print #hFile, "pkgrel="; Project.PackageVersion Print #hFile, "arch=('any')" Print #hFile, "url=\"" & Project.Url & "\"" If Me.ChangeLog Then File.Save(sBuildDir &/ "ChangeLog", Me.ChangeLog) Print #hFile, "changelog=ChangeLog" Endif Print #hFile, "license=('custom')" If Len(sDependencies) > 0 Then Print #hFile, "depends=(" & Left$(sDependencies, -1) & ")" Endif Print #hFile, "makedepend=('gambas3-devel')" Print #hFile, "source=(${_realname}-$pkgver.tar.bz2 license.txt"; If Project.Type = Project.TYPE_NORMAL Then Print #hFile, "\\\n '" & sPackageName & ".desktop'"; Print #hFile, " '" & Project.Name & ".png'"; Endif Print #hFile, ")" Close #hFile RunCommand("makepkg -m -g >> PKGBUILD", sBuildDir, True) If Process.LastValue > 0 Then Error.Raise(("'makepkg' has failed.")) hFile = Open sBuildDir &/ "PKGBUILD" For Append Print #hFile, "" Print #hFile, "build() {" Print #hFile, " cd ${srcdir}/${_realname}" Print #hFile, "" Print #hFile, " "; Project.GetCompileCommand(True, Not Project.KeepDebugInfo, True, False); " && gba"; System.Version Print #hFile, "}" Print #hFile, "" Print #hFile, "package() {" Print #hFile, " cd ${srcdir}/${_realname}" Print #hFile, "" Select Case Project.Type Case Project.TYPE_COMPONENT Print #hFile, " install -d ${pkgdir}/usr/lib/gambas" & System.Version Print #hFile, " install -d ${pkgdir}/usr/share/gambas" & System.Version &/ "info" Print #hFile, " install -m755 " & $sName & ".gambas ${pkgdir}/usr/lib/gambas" & System.Version &/ $sComponentName & ".gambas" Print #hFile, " install .component ${pkgdir}/usr/lib/gambas" & System.Version &/ $sComponentName & ".component" Print #hFile, " chmod a-x ${pkgdir}/usr/lib/gambas" & System.Version &/ $sComponentName & ".component" Print #hFile, " install .info ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sComponentName & ".info" Print #hFile, " chmod a-x ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sComponentName & ".info" Print #hFile, " install .list ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sComponentName & ".list" Print #hFile, " chmod a-x ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sComponentName & ".list" Print #hFile, " if test -d control; then" Print #hFile, " install -d ${pkgdir}/usr/share/gambas" & System.Version &/ "control" &/ $sComponentName Print #hFile, " install .hidden/control/*.png ${pkgdir}/usr/share/gambas" & System.Version &/ "control" &/ $sComponentName Print #hFile, " chmod a-x ${pkgdir}/usr/share/gambas" & System.Version &/ "control" &/ $sComponentName &/ "*.png" Print #hFile, " fi" Case Project.TYPE_LIBRARY Print #hFile, " install -d ${pkgdir}/usr/lib/gambas" & System.Version &/ LCase($sVendor) Print #hFile, " install -m755 " & $sName & ".gambas ${pkgdir}/usr/lib/gambas" & System.Version &/ LCase($sVendor) &/ $sLibraryName & ".gambas" Case Project.TYPE_NORMAL Print #hFile, " install -d ${pkgdir}/usr/bin" Print #hFile, " install -m755 " & $sName & ".gambas ${pkgdir}/usr/bin" &/ $sName If $sName <> sPackageName Then Print #hFile, " ln -s " & Shell$($sName) & " \"${pkgdir}\"/usr/bin" &/ Shell$(sPackageName) Print #hFile, " install -D .." &/ Project.Name & ".png \\" Print #hFile, " ${pkgdir}/usr/share/pixmaps" &/ Project.Name & ".png" Print #hFile, " install -D .." &/ sPackageName & ".desktop \\" Print #hFile, " ${pkgdir}/usr/share/applications" &/ sPackageName & ".desktop" End Select Print #hFile, GetExtraFilesDir(sSys, " install -d ${pkgdir}&1"); Print #hFile, GetExtraFiles(sSys, " install -p ${srcdir}/${_realname}/.hidden/&1 ${pkgdir}&2/&1", " cp -R --preserve=timestamp ${srcdir}/${_realname}/.hidden/&1 ${pkgdir}&2/&1"); Print #hFile, " install -Dm644 ${srcdir}/license.txt ${pkgdir}/usr/share/licenses" &/ sPackageName &/ "license.txt" Print #hFile, "}" Close #hFile ' 4. create the packages AddLog(("Creating package...") & "\n") For Each sCmd In ["makepkg -m --allsource", "makepkg -m -d"] RunCommand(sCmd, sBuildDir) If Process.LastValue > 0 Dec Application.Busy Error.Raise(("'makepkg' has failed.")) Endif Next RunCommand("cp " & sPackageName & "-" & $sVersion & "-" & CStr(Project.PackageVersion) & "*.tar.* " & Shell$(Path) &/ "", sBuildDir) ' Remove build dir Shell "rm -rf " & Shell(sBuildDir) Wait Dec Application.Busy End Private Function MakeArchSupportPackage((sSys) As String, sSupport As String, aComp As String[]) Dim sBuildDir As String Dim hFile As File Dim sCmd As String Dim sDependencies As String Dim sPkgDesc As String Dim sPackageName As String Inc Application.Busy sPackageName = FormatArchPackageName($sUnsafePackageName & "-" & sSupport) sPkgDesc = "This is the " & sSupport & " support for " & If(Project.Title, Project.Title, Project.Name) $sFormatMinMax = "'&1>=&2' '&1<=&3' " $sFormatMin = "'&1>=&2' " $sFormatMax = "'&1<=&3' " $sFormatSingle = "'&1' " $sFormatEqual = "'&1=&2' " sDependencies = GetDependencies(aComp) ' 1. Create the temporary build directory AddLog(("Making build directory.")) sBuildDir = File.SetExt(Temp$("archlinux"), "") Shell "rm -rf " & Shell$(sBuildDir) Wait Mkdir sBuildDir ' 2. Copy needed files File.Save(sBuilddir &/ "license.txt", "This program is under : " & Project.License) hFile = Open sBuildDir &/ "PKGBUILD" For Create Print #hFile, "# generated by the gambas3 ide" Print #hFile, "# Maintainer : " & Project.Maintainer & " <" & Project.Address & ">" Print #hFile, "" Print #hFile, "pkgname=" & sPackageName Print #hFile, "_realname="; sPackageName Print #hFile, "pkgdesc=\"" & sPkgDesc & "\"" Print #hFile, "pkgver=" & $sVersion Print #hFile, "pkgrel="; Project.PackageVersion Print #hFile, "arch=('any')" Print #hFile, "url=\"" & Project.Url & "\"" If Me.ChangeLog Then File.Save(sBuildDir &/ "ChangeLog", Me.ChangeLog) Print #hFile, "changelog=ChangeLog" Endif Print #hFile, "license=('custom')" If Len(sDependencies) > 0 Then Print #hFile, "depends=(" & Subst($sFormatEqual, FormatArchPackageName($sUnsafePackageName), $sVersion) & Left$(sDependencies, -1) & ")" Endif 'Print #hFile, "makedepend=('gambas3-devel')" 'Print #hFile, "source=(${_realname}-$pkgver.tar.bz2 license.txt"; 'If Project.Type = Project.TYPE_NORMAL Then ' Print #hFile, "\\\n '" & $sPackageName & ".desktop'"; ' Print #hFile, " '" & Project.Name & ".png'"; 'Endif 'Print #hFile, ")" Close #hFile RunCommand("makepkg -m -g >> PKGBUILD", sBuildDir, True) If Process.LastValue > 0 Then Error.Raise(("'makepkg' has failed.")) ' hFile = Open sBuildDir &/ "PKGBUILD" For Append ' ' Print #hFile, "" ' Print #hFile, "build() {" ' Print #hFile, " cd ${srcdir}/${_realname}" ' Print #hFile, "" ' Print #hFile, " "; Project.GetCompileCommand(True, Not Project.KeepDebugInfo, True, False); " && gba"; System.Version ' Print #hFile, "}" ' Print #hFile, "" ' Print #hFile, "package() {" ' Print #hFile, " cd ${srcdir}/${_realname}" ' Print #hFile, "" ' ' Select Case Project.Type ' ' Case Project.TYPE_COMPONENT ' ' Print #hFile, " install -d ${pkgdir}/usr/lib/gambas" & System.Version ' Print #hFile, " install -d ${pkgdir}/usr/share/gambas" & System.Version &/ "info" ' Print #hFile, " install -m755 " & $sName & ".gambas ${pkgdir}/usr/lib/gambas" & System.Version ' Print #hFile, " install .component ${pkgdir}/usr/lib/gambas" & System.Version &/ $sName & ".component" ' Print #hFile, " chmod a-x ${pkgdir}/usr/lib/gambas" & System.Version &/ $sName & ".component" ' Print #hFile, " install .info ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sName & ".info" ' Print #hFile, " chmod a-x ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sName & ".info" ' Print #hFile, " install .list ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sName & ".list" ' Print #hFile, " chmod a-x ${pkgdir}/usr/share/gambas" & System.Version &/ "info" &/ $sName & ".list" ' Print #hFile, " if test -d control; then" ' Print #hFile, " install -d ${pkgdir}/usr/share/gambas" & System.Version &/ "control" &/ $sName ' Print #hFile, " install .hidden/control/*.png ${pkgdir}/usr/share/gambas" & System.Version &/ "control" &/ $sName ' Print #hFile, " chmod a-x ${pkgdir}/usr/share/gambas" & System.Version &/ "control" &/ $sName &/ "*.png" ' Print #hFile, " fi" ' ' Case Project.TYPE_LIBRARY ' ' Print #hFile, " install -d ${pkgdir}/usr/bin" ' Print #hFile, " install -m755 " & $sName & ".gambas ${pkgdir}/usr/bin" &/ $sName & ".gambas" ' ' Case Project.TYPE_NORMAL ' ' Print #hFile, " install -d ${pkgdir}/usr/bin" ' Print #hFile, " install -m755 " & $sName & ".gambas ${pkgdir}/usr/bin" &/ $sName ' Print #hFile, " install -D .." &/ Project.Name & ".png \\" ' Print #hFile, " ${pkgdir}/usr/share/pixmaps" &/ Project.Name & ".png" ' Print #hFile, " install -D .." &/ $sPackageName & ".desktop \\" ' Print #hFile, " ${pkgdir}/usr/share/applications" &/ $sPackageName & ".desktop" ' ' End Select ' ' Print #hFile, GetExtraFilesDir(sSys, " install -d ${pkgdir}&1\n"); ' Print #hFile, GetExtraFiles(sSys, " install -p ${srcdir}/${_realname}/.hidden/&1 ${pkgdir}&2/&1", " cp -R --preserve=timestamp ${srcdir}/${_realname}/.hidden/&1 ${pkgdir}&2/&1"); ' Print #hFile, " install -Dm644 ${srcdir}/license.txt ${pkgdir}/usr/share/licenses" &/ $sPackageName &/ "license.txt" ' Print #hFile, "}" ' ' Close #hFile ' 4. create the packages AddLog(("Creating package...") & "\n") For Each sCmd In ["makepkg -m --allsource", "makepkg -m -d"] RunCommand(sCmd, sBuildDir) If Process.LastValue > 0 Dec Application.Busy Error.Raise(("'makepkg' has failed.")) Endif Next RunCommand("cp " & sPackageName & "-" & $sVersion & "-" & CStr(Project.PackageVersion) & "*.tar.* " & Shell$(Path) &/ "", sBuildDir) ' Remove build dir Shell "rm -rf " & Shell(sBuildDir) Wait Dec Application.Busy End Private Sub MoveFile(sSrc As String, sDst As String) Try Kill sDst Try Move sSrc To sDst If Error Then Copy sSrc To sDst Try Kill sSrc Endif End Public Sub Process_Kill() $bEnd = True End Public Sub Process_Read() Dim sData As String sData = Read #Last, -256 $sOutput &= sData FMakeInstall.AddLog(sData, True) End Public Sub Process_Error(sData As String) FMakeInstall.AddLog(sData, True) End Public Sub GetPackageName(sName As String) As String sName = LCase(String.RemoveDiacritics(sName)) sName = Replace(sName, ".", "-") Return sName End Public Sub GetPackagePrefix(iProjectType As Integer, sVendor As String, sVendorPrefix As String, bPrefix As Boolean) As String Dim sText As String Dim sPackage As String Dim sPrefix As String If iProjectType = Project.TYPE_COMPONENT Then sPrefix = String.LCase(Trim(sVendorPrefix)) If Not sPrefix Then sPrefix = "gb" sPackage = GetPackageName(Project.Name) If sPackage Begins sPrefix & "-" Or If sPackage = sPrefix Then sPrefix = "" Else sPrefix &= "-" Endif sText = "gambas" & System.Version & "-" & sPrefix Else If bPrefix Then sPrefix = sVendorPrefix If Not sPrefix Then sPrefix = sVendor sPrefix = String.LCase(Trim(sPrefix)) sPrefix = Replace(sPrefix, "_", "-") If Not sPrefix Then sPrefix = "gambas" sText = sPrefix & "-" Endif Endif Return sText End Public Sub GetPackageFullName(sVendor As String, sVendorPrefix As String, bPrefix As Boolean, bWithMajor As Boolean, bWithVersion As Boolean) As String Dim sText As String sText = GetPackagePrefix(Project.Type, sVendor, sVendorPrefix, bPrefix) & GetPackageName(Project.Name) If bWithMajor Then sText &= CStr(Project.MajorVersion) If bWithVersion Then sText &= "-" & Project.FormatVersion() Return sText End gambas-3.16.3/app/src/gambas3/.src/Project.module000066400000000000000000004743401411575327000214250ustar00rootroot00000000000000' Gambas module file ' Gambas 3 ' Integrated Development Environment for Gambas ' ' Copyright (C) Benoît Minisini, Fabien Bodard, Charlie Reinl, José Luis Redrejo, Robert Rowe ' ' 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 St, Fifth Floor, ' Boston, MA 02110-1301 USA ' Public Const COLOR_ORANGE As Integer = &HDF6B00 Public Const COLOR_BLUE As Integer = &H61A7C3 '&H3398C3 Public ProjectTree As TreeView Public Tree As CProjectTree Public ProjectFilter As String Public ProjectMessage As Label Public (Workspace) As Workspace Public ActiveForm As Object Public Path As String Public Name As String Public Dir As String Public SourceDir As String Public ReadOnly As Boolean Public Title As String Public Startup As String Public (Components) As String[] Public Libraries As String[] Public ExtraReferences As String[] Public Arguments As String[][] Public CurrentArgument As String[] Public Environment As String[] Public KeepDebugInfo As Boolean Public CreateShortcut As Boolean Public RunAfterMakingExec As String Public ControlPublic As Boolean Public ModulePublic As Boolean Public ShowDeprecated As Boolean Public Warnings As Boolean Public MajorVersion As Integer Public MinorVersion As Integer Public ReleaseVersion As Integer Public VersionAddBranch As Boolean Public Localize As Boolean Public Description As String Public Icon As String Public LibraryPath As String Private OldExecPath As String Public Systems As String[] Public Menus As Collection Public Groups As Collection Public ExtraDependencies As Collection Public ExtraFiles As Collection Public SameDependencies As Boolean Public SameFiles As Boolean Public ExtraAutoconfTest As String Public Categories As Collection Public MimeTypes As String[] Public ExtraDesktop As String Public Prefix As Boolean Public PackageName As String Public PackageVersion As Integer Public PackageSignature As Boolean Public PackageNameWithMajor As Boolean Public Maintainer As String Public Address As String Public Vendor As String Public VendorPrefix As String Public Url As String Public License As String Public CreateEachDirectory As Boolean Public RuntimeVersion As String Public PublishTags As String[] Public PublishDependencies As String[] Public PublishGambasVersion As String Public PublishWebSite As String Public PublishCreateMenu As Boolean Public TabSize As Integer Public Version As String Public FullVersion As String Public FullVersionWithRevision As String Public SourcePath As String Public DefaultLanguage As String Public Type As Integer Public Authors As String Public VersionFile As Boolean Public UseTerminal As Boolean Public RedirectStderr As Boolean Public UseHttpServer As Boolean Public Profiling As Boolean Public ProfileIndex As Integer Public DoNotTranslate As String[] Public CompressFiles As Boolean Public CompressedFiles As String[] Public PreviewStyleSheet As String Public UnknownOptions As Collection Public Running As Boolean ' Project type Public Enum TYPE_NORMAL, TYPE_LIBRARY, TYPE_COMPONENT Public Const FORM_MAGIC As String = "# Gambas Form File 3.0" Public Const FORM_MAGIC_1 As String = "# Gambas Form File 1.0" Public Const FORM_MAGIC_2 As String = "# Gambas Form File 2.0" Public Const PROJECT_MAGIC_1 As String = "# Gambas Project File 1.0" Public Const PROJECT_MAGIC_2 As String = "# Gambas Project File 2.0" Public Const PROJECT_MAGIC As String = "# Gambas Project File 3.0" Public Const ACTION_MAGIC As String = "# Gambas Action File 3.0" Public Const CONNECTION_MAGIC As String = "# Gambas Connection File 3.0" Public Const TEMPLATE_MAGIC As String = "# Gambas Database Template File 3.0" Public DEFAULT_FONT As String Public DESKTOP_FONT As String Public Const DEFAULT_URL As String = "http://www.endoftheinternet.com/" Public WIKI_URL As String = "http://gambaswiki.org" Public WIKI_ROOT As String = "http://gambaswiki.org/wiki" Public Const FILTER_ADDED As String = " A" Public Const FILTER_EXPORTED As String = " X" Public Const FILTER_CONFLICT As String = " C" Public Const FILTER_MODIFIED As String = " M" Public Const FILTER_COMPRESSED As String = " P" Public Const FILTER_DO_NOT_TRANSLATE As String = " T" Public Files As New Collection Public ExternFiles As New Collection Public RecentFiles As String[] Public AboutToQuit As Boolean Public Const MAX_ICON_SIZE As Integer = 262144 Public EXAMPLES_DIR As String 'Public ShowAlwaysProperty As Boolean Private Const IMAGE_DIR As String = "img/16" Public Const KEY_SOURCE As String = "$S" Public Const KEY_MISC As String = "$O" Public Const KEY_PROJECT As String = "$P" Public Const KEY_PUBLIC As String = "$B" Public Const KEY_CONNECTION As String = "$D" Public Const KEY_EXTERN As String = "$X" Private Const CLASS_AUTH_CAR As String = "abcdefghijklmnopqrstuvwxyz0123456789" Private Const CLASS_AUTH_CAR_COMPONENT As String = "_" Private Const CLASS_AUTH_FIRST_CAR As String = "abcdefghijklmnopqrstuvwxyz_" Private Const FILE_FORBIDDEN_CAR As String = "?*/~" Private Const PROJECT_FILE As String = ".project" Private Const STARTUP_FILE As String = ".startup" Private OUTPUT_FILE As String Public Browser As String Public ImageEditors As String[] = ["Gimp", "KIconEdit", "KolourPaint", "Krita"] Private IMAGE_EXT As String[] = ["jpg", "jpeg", "gif", "bmp", "xpm", "png", "tif", "tiff"] Private $aOldRefreshComponents As New String[] Public ExampleTitle As New Collection Public TimeStamp As Integer Public ExecTimeStamp As Integer Public Config As Settings Public RestoringFiles As Boolean Public ShowFileInTitle As Boolean 'Private $aInheritance As New String[] Private $iNoRefresh As Integer Private $bDoRefresh As Boolean Private $cProjectFilter As Collection Private $cImageCache As New Collection Private $hCurrentPopup As Menu Private $hLock As File ' Path of source files 'Property Read Sources As Collection ' File state from version control Private $cPathFlag As Collection Public Enum FLAG_MODIFIED, FLAG_ADDED, FLAG_LOCKED, FLAG_CONFLICT Public HasConflict As Integer Public HasAdded As Integer ' I'm using the IDE to test the interpreter with valgrind! Private $bTesting As Boolean ' All possible packager target systems Private $aSystems As String[] = ["archlinux", "autotools", "debian", "fedora", "mageia", "slackware", "suse", "ubuntu"] ' Pretty background Public DEFAULT_BACKGROUND As String = "gambas" Private $hBackground As Image Private $bBackgroundValid As Boolean ' Global documentation object ' Another one is created for the offline wiki Public Documentation As CDocumentation Public UseInheritance As Boolean Private $bFileIsUnknown As Boolean ' If GetFileIcon() has been called on an added file 'Private $bLastAdded As Boolean Public Sub _init() ExampleTitle["Automation"] = ("Automation") ExampleTitle["Basic"] = ("Basic") ExampleTitle["Database"] = ("Database") ExampleTitle["Drawing"] = ("Drawing") ExampleTitle["Games"] = ("Games") ExampleTitle["Image"] = ("Image") ExampleTitle["Misc"] = ("Miscellaneous") ExampleTitle["Networking"] = ("Networking") ExampleTitle["OpenGL"] = ("OpenGL") ExampleTitle["Printing"] = ("Printing") ExampleTitle["Sound"] = ("Sound") ExampleTitle["Video"] = ("Video") ExampleTitle["Control"] = ("Controls") ExampleTitle["Multimedia"] = ("Multimedia") ExampleTitle["Web"] = ("Web") End Public Sub InitWebView() 'Dim sPath As String Dim hDefaultFont As Font Dim hFixedFont As Font ' If Not WebSettings.Cache.Path Then ' sPath = "~/.cache" ' Try Mkdir sPath ' sPath &/= "gambas3" ' Try Mkdir sPath ' sPath &/= "help" ' Try Mkdir sPath ' WebSettings.Cache.Path = sPath ' WebSettings.Cache.Enabled = True ' Endif 'WebSettings.Fonts.StandardFont = Application.Font.Name 'hFont = Font[Settings["/Editor/Font", Application.Font]] hDefaultFont = Font[Settings["/Browser/Font"]] hFixedFont = Font[Settings["/Browser/FixedFont", DEFAULT_FONT]] WebSettings.Fonts.Serif = hDefaultFont.Name WebSettings.Fonts.SansSerif = hDefaultFont.Name WebSettings.Fonts.DefaultSize = hDefaultFont.Size ' sFont = Replace(sDefaultFont, "Sans", "Mono") ' If sFont = sDefaultFont Or If Not Fonts.Exist(sFont) Then ' sFont = Application.Font.Name & "Mono" ' If Not Fonts.Exist(sFont) Then ' sFont = Application.Font.Name & " Mono" ' If Not Fonts.Exist(sFont) Then ' sFont = "" ' Endif ' Endif ' Endif WebSettings.Fonts.Fixed = hFixedFont.Name WebSettings.Fonts.DefaultFixedSize = hFixedFont.Size End Public Sub Main() Dim sPath As String Dim iInd As Integer Dim sArg As String Dim aOpenFile As New String[] 'DB.Debug = True For iInd = 1 To Args.Count - 1 sArg = Args[iInd] If sArg = "-t" Then $bTesting = True Continue Else If sArg = "--help" Or If sArg = "-h" Then Print File.Load("usage") Quit Else If sArg = "--license" Or If sArg = "-L" Then Print Replace(File.Load("license"), "YEAR", CStr(Year(Now))) Quit Else If sArg = "--version" Or If sArg = "-V" Then Print Application.Version Quit Else If sArg = "--cleanup" Then sPath = Args[iInd + 1] If Not sPath Then sPath = Application.Dir If CleanUp(sPath, True) Then Quit 1 Else Quit Endif Else If Left(sArg) = "-" Then Error "gambas3: unknown option: " & sArg Quit Else If Not sPath Then sPath = Args[iInd] Else aOpenFile.Add(Args[iInd]) Endif Endif Next Try Component.Load("gb.inotify") Try Component.Load("gb.media") If Not Settings["/ShowMenus", True] Then Env["APPMENU_DISPLAY_BOTH"] = "1" Env["QT_LOGGING_RULES"] = "*.debug=false" UpdateTheme DESKTOP_FONT = Application.Font.ToString() Try Application.Font = Font[Settings["/Font"]] 'Print Application.Theme OUTPUT_FILE = Temp$("output") EXAMPLES_DIR = System.Path &/ "share/gambas" & Split(System.Version, ".")[0] & "/examples" Application.ShowTooltips = Settings["/ShowTooltip", True] Application.Animations = Settings["/Animations", True] Application.Shadows = Settings["/Shadows", True] UpdateMessageBoxStyle() RefreshBreakpointPicture Documentation = New CDocumentation If $bTesting And If sPath Then InitVersion InitWebView CRecentProject.Load FMain.Load Design.ClearBreakpoints Project.Open(sPath) Dim hComp As CComponent For Each hComp In Project.Documentation.Components hComp.Load Next Project.CloseAllWindows Wait Project.Close Project.Exit Quit 'FSearch.FindProject("else") 'Project.Close 'FMain.Close 'Project.Exit Return Endif If Fonts.Exist("Gambas") Then DEFAULT_FONT = "Gambas," Else If Fonts.Exist("Terminus") Then DEFAULT_FONT = "Terminus," Else DEFAULT_FONT = "Monospace," Endif DEFAULT_FONT &= CStr(Application.Font.Size) InitVersion InitWebView ShowFileInTitle = Settings["/ShowFileInTitle", True] MHelp.ReadConfig FDebugExpr.ReadConfig FMain.Load Application.MainWindow = FMain Inc Application.Busy 'FHelpBrowser.Load 'FHelpShortcut.Load ' QT5: If the main form is shown after the MDI windows have been embeddded, then ' the window drawing becomes buggy FMain.Show If sPath Then If File.IsRelative(sPath) Then sPath = Application.Dir &/ sPath If IsDir(sPath) Then Project.Open(sPath) For Each sPath In aOpenFile OpenFile(sPath) Next Else If Exist(sPath) Then FMain.OpenExternFile(sPath) Else FMain.ShowWarning(("File not found!") & "\n\n" & sPath & "") Endif If Not Project.Dir Then FMain.Close Dec Application.Busy Return Endif FMain.HideWelcome Endif RefreshActivate Dec Application.Busy If Settings["/ShowTipOnStartup", True] Then FTips.Show Endif End Private Sub InitVersion() Dim sVer As String Dim aVer As String[] 'Shell "gbx" & System.Version & " -V" To sVer 'FullVersion = Trim(Mid$(sVer, InStr(sVer, "-") + 1)) FullVersion = System.FullVersion aVer = Split(FullVersion, ".") aVer.Remove(aVer.Max) Version = aVer.Join(".") Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer FullVersionWithRevision = Trim(sVer) If FullVersionWithRevision Ends ".0" Then FullVersionWithRevision = Left$(FullVersionWithRevision, -2) Catch Version = "?" End Private Sub LoadLastOpenedFiles() Dim nOpen As Integer Dim iInd As Integer Dim aOpen As String[] Dim hForm As Object Dim iActive As Integer Dim hActive As Object Dim aFold As Integer[] Dim sPath As String Inc Application.Busy RestoringFiles = True CPosition.Disable Workspace.Lock nOpen = Config["/OpenFile/Count", 0] iActive = Config["/OpenFile/Active", 0] For iInd = 1 To nOpen aOpen = Split(Config["/OpenFile/File[" & CStr(iInd) & "]"], ":") sPath = aOpen[0] If Left(sPath) <> "/" Then sPath = Project.Dir &/ sPath If Not Exist(sPath) Then sPath = FindPath(File.Name(sPath)) If Not Exist(sPath) Then Continue 'If VersionControl.InConflict(sPath) Then Continue If IsConflict(sPath) Then Continue If IsConnectionPath(sPath) Then Continue hForm = OpenFile(sPath) If Not hForm Then Continue If aOpen.Count = 2 Then Try hForm.SetState(aOpen[1]) aFold = Config["/OpenFile/Fold[" & CStr(iInd) & "]"] If aFold Then Try hForm.SetFoldedProc(aFold) If iInd = iActive Then hActive = hForm Next Workspace.Unlock RestoringFiles = False If hActive Then Activate(hActive) Workspace.ActiveWindow = hActive Endif Finally CPosition.Enable Dec Application.Busy End Public Function Open(sDir As String, Optional bInAnotherWindow As Boolean, sOpenFile As String) As Boolean Dim sOldPath As String Dim sOldName As String Dim bConvert As Boolean Dim sVer As String Dim sFile As String Dim hLock As Stream Dim aDir As String[] Dim iStep As Integer Dim bStopConvert As Boolean Dim sExec As String Dim sPath As String Dim sStatus As String Dim bIsFake As Boolean Dim aClass As String[] Dim I As Integer Dim bRemoveCompressedFiles As Boolean sPath = FindProjectPath(sDir) If Not sPath Then FMain.ShowError(("This project does not exist.") & "\n\n" & sDir) Return True Endif If bInAnotherWindow Then Try Config.Save Try Settings.Save sExec = Application.Path &/ File.Name(Args[0]) If Not Exist(sExec) Then sExec &= ".gambas" If Not Exist(sExec) Then Message.Error(Subst(("Unable to find Gambas IDE executable in directory:\n\n&1"), Application.Path)) Return Endif If sOpenFile Then Exec [sExec, sDir, sOpenFile] Else Exec [sExec, sDir] Endif Return True Endif sOldPath = Project.Path sOldName = Project.Name sVer = CheckProjectVersion(sDir &/ PROJECT_FILE) If sVer Then If sVer = "?" Then Message.Error(("This is not a Gambas project.")) Return True Else If sVer = "1.0" Then Message.Error(("This is a Gambas 1.0 project. Use Gambas 2 to convert it.")) Return True Else If sVer = "2.0" Then If Message.Warning(Subst(("This is a Gambas 2.0 project.\n\nDo you want to convert it?"), sVer), ("Convert"), ("Cancel")) = 2 Then Return True Else bConvert = True Endif Endif Endif ReadOnly = Not Access(sDir, gb.Write) If Not ReadOnly Then If Exist(sDir &/ ".startup") And If Not Access(sDir &/ ".startup", gb.Write) Then ReadOnly = True Endif Try hLock = Lock sDir &/ ".lock" If Not ReadOnly And ((bConvert And Exist(sDir &/ ".lock")) Or Not hLock) Then If Message.Warning("" & File.Name(sDir) & "\n\n" & ("This project seems to be already opened.\n\nOpening the same project twice can lead to data loss."), ("Open after all"), ("Do not open")) = 2 Then Return True Endif Endif If bConvert And If ReadOnly Then Message.Error(("This project is read-only.") & " " & ("It cannot be converted.")) Return True Endif ' ".uncompressed" directory is now deprecated If IsDir(sDir &/ ".hidden/.uncompressed") Then If Message.Warning(("This project includes compressed files.") & "\n\n" & ("Compressed files are now generated with the executable. Consequently they will be removed from the project."), ("Continue"), ("Cancel")) = 2 Then Return True Endif bRemoveCompressedFiles = True Endif If Not $bTesting Then If CloseProject() Then Return True Endif If Right(sDir) = "/" Then sDir = Left(sDir, -1) Project.Dir = sDir If bConvert Then ' Create Gambas 2 lock file Try File.Save(sDir &/ ".lock", "") FConvert.Start(("Copying project inside a temporary directory...")) Project.Dir = Temp$("conv") Shell "rm -rf " & Shell$(Project.Dir) & " && cp -R " & Shell$(sDir) & " " & Shell$(Project.Dir) Wait If Process.LastValue Then Error.Raise(("Unable to create temporary directory")) Endif _INIT_AGAIN: Path = Project.Dir &/ PROJECT_FILE Name = File.Name(Project.Dir) SourceDir = Project.Dir &/ ".src" Config = New Settings(Project.Dir &/ ".settings") Tree = New CProjectTree(Project.Dir) ProjectFilter = "" bIsFake = IsFake(Project.Dir) If bIsFake Then VersionControl.Disable Else VersionControl.Refresh Endif If bConvert Then If ReadOnly Then Message.Error(("This project is read-only.") & " " & ("It cannot be converted.")) Return True Endif bStopConvert = True FConvert.SetMessage(("Converting project structure...")) ' Needed for MoveFile() RefreshSources Design.ClearBreakpoints ReadProject(True) If Not Exist(SourceDir) Then InsertDirectory(SourceDir) aDir = Dir(Project.Dir, "*") iStep = 0 For Each sFile In aDir If CModule.Ext.Exist(File.Ext(sFile)) Then MoveFile(Project.Dir &/ sFile, SourceDir &/ sFile) Inc iStep FConvert.SetProgress(iStep / aDir.Count) Next RefreshSources Endif WriteProject(True) MakeDirectoryIcon If ConvertProject() Then Goto _CANCEL GoSub _STOP_CONVERT FConvert.SetMessage(("Applying conversion...")) Shell "rm -rf " & Shell$(sDir & "~") Wait Move sDir To sDir & "~" Shell "mv -f " & Shell$(Project.Dir) & " " & Shell$(sDir) Wait If Process.LastValue Then Try Move sDir & "~" To sDir Error.Raise(("Unable to apply conversion")) Endif ' Remove lock file from the backup project Try Kill (sDir & "~") &/ ".lock" Project.Dir = sDir bConvert = False Goto _INIT_AGAIN Else If Not Exist(SourceDir) Then ' Needed for MoveFile() RefreshSources InsertDirectory(SourceDir) aDir = Dir(Project.Dir, "*") For Each sFile In aDir If CModule.Ext.Exist(File.Ext(sFile)) Then MoveFile(Project.Dir &/ sFile, SourceDir &/ sFile) Next Endif Inc Application.Busy Config = New Settings(sDir &/ ".settings") Inc $iNoRefresh ' ReadProject(bConvert) ' If Not ReadOnly Then ' If Not Exist(Project.Dir &/ ".hidden") Then Project.InsertDirectory(Project.Dir &/ ".hidden") ' If bConvert Then WriteProject(True) ' Endif CLibraryInfo.Clear ' Component loading needs to know which classes are declared by the project, in the case of a component project that uses itself RefreshSources aClass = Tree.CheckDuplicates() If aClass Then GoSub _STOP_CONVERT For I = 0 To aClass.Max aClass[I] = "

    • " & Html(aClass[I]) & "
    • " Next Message.Error(("Cannot open project file :") & "\n" & sDir & "\n\n" & ("This project has duplicated class files!") & "
        " & aClass.Join("") & "
      ") Goto _CANCEL Endif If Not $bTesting If Not bIsFake Then Design.ClearOutput Design.ReadBreakpoints Endif Endif ReadProject If Not ReadOnly Then If Not Exist(Project.Dir &/ ".hidden") Then InsertDirectory(Project.Dir &/ ".hidden") CreateGitIgnore Endif Dec $iNoRefresh Inc Project.TimeStamp MConnection.Password.Clear ' If Not $bTesting Then ' DoRefresh(False, True) ' Endif 'If Not bIsFake Then DefineStartup(Startup, True) ??? If Not bIsFake Then CRecentProject.Add(sDir) If Not $bTesting FMain.OnProjectChange FSearch.OnProjectChange If Class.IsLoaded("FHelpBrowser") Then FHelpBrowser.OnProjectChange FProfile.OnProjectChange 'FOpenProject.OnUpdateRecent If Not bIsFake Then FDebugInfo.OnProjectChange 'FDebugButton.OnProjectChange Endif Endif $hLock = hLock If bConvert Then MakeDirectoryIcon If ConvertProject() Then Dec Application.Busy Goto _CANCEL Endif Endif ' The .lang/.pot file must not be on version control If Localize And If VersionControl.Enabled Then sPath = Project.Dir &/ ".lang/.pot" sStatus = VersionControl.Status(sPath) If sStatus And If Left(sStatus) <> "?" And If Left(sStatus) <> "D" Then VersionControl.RemoveFile(sPath) Endif If bRemoveCompressedFiles Then sDir = Project.Dir &/ ".hidden/.uncompressed" For Each sFile In RDir(sDir, "*", gb.File) If sFile Ends "~" Then Continue sPath = Project.Dir &/ sFile If Not Exist(sPath) Then Continue Try Kill sPath MoveFile(sDir &/ sFile, sPath) SetShouldCompress(sPath, True) Next WriteProject(True) Shell.RmDir(sDir) AddAllFileUnderVersionControl() Endif If Not IsFake() And If Settings["/RestoreFiles", 1] Then LoadLastOpenedFiles RecentFiles = New String[] CPosition.Clear GoSub _STOP_CONVERT If ReadOnly Then FMain.ShowWarning(("This project is read-only.")) Else ' Let's check libraries For Each sPath In Libraries If Not CLibraryInfo.SolvePath(sPath) Then Message.Warning(("Some libraries used by the project are missing.")) FProjectProperty.ShowLibraries() Break Endif Next Endif Application.Restart = ["gambas3", Project.Dir] Bookmarks.Add(sDir, ("Current project"), "icon:/small/gambas") 'SetMessage(("OK")) Return Catch GoSub _STOP_CONVERT If Error.Text Then Message.Error(("Cannot open project file :") & "\n" & sDir & "\n\n" & Error.Text & "\n" & Error.Backtrace.Join(" ") & "") Endif _CANCEL: If hLock Then Try Unlock #hLock Path = sOldPath Project.Dir = File.Dir(Path) Name = sOldName $iNoRefresh = 0 If Path Then ReadProject UpdateTitle Return True _STOP_CONVERT: If bStopConvert Then FConvert.Stop bStopConvert = False Endif Application.Busy = 0 Return End Public Sub CloseAllWindows() Dim hForm As Window Workspace.Lock For Each hForm In Files hForm.Close Next Workspace.Unlock End Public Sub ReloadFile(hForm As Object) Dim sPath As String Dim sErr As String sPath = hForm.Path If hForm.IsModified() Then If Message.Warning(("The file has been modified.\n\nAll your changes will be lost."), ("Reload"), ("Cancel")) <> 1 Then Return Endif Inc Application.Busy hForm.Reload Inc Project.TimeStamp Dec Application.Busy Catch sErr = Error.Text '& "\n" & Error.Backtrace.Join(" ") Try hForm.Delete Dec Application.Busy Try Files[sPath] = Null FMain.ShowError(("Cannot reload file.") & "\n\n" & sErr, sPath) End Public Sub ReloadAll(Optional bFormOnly As Boolean) Dim hForm As Object Inc Application.Busy For Each hForm In Files If bFormOnly And If Not hForm Is FForm Then Continue ReloadFile(hForm) Next Dec Application.Busy End Public Function CloseProject() As Boolean Dim hForm As Object Dim bModif As Boolean Dim nOpen As Integer Dim sState As String Dim aFold As Integer[] Dim sPath As String 'IF Len(Path) = 0 THEN RETURN If Path Then If Running Then Design.Stop 'WAIT 0.5 Endif For Each hForm In Files If hForm.IsModified() Then bModif = True Break Endif Next If bModif Then If FSave.Run(AboutToQuit) Then Return True Endif 'FFind.Close Inc Application.Busy If Not IsFake() Then Design.WriteBreakpoints If Settings["/RestoreFiles", 1] Then Config.Clear("/OpenFile") For Each hForm In Workspace.Windows If Not hForm.Closed Then If Not hForm.Path Then Debug "hForm.Path = NULL ?" 'Stop Endif Inc nOpen If hForm = ActiveForm Then Config["/OpenFile/Active"] = nOpen sState = "" Try sState = hForm.GetState() aFold = Null Try aFold = hForm.GetFoldedProc() If sState Then sState = ":" & sState sPath = MakeProjectRelativePath(hForm.Path) Config["/OpenFile/File[" & CStr(nOpen) & "]"] = sPath & sState If aFold And If aFold.Count Then Config["/OpenFile/Fold[" & CStr(nOpen) & "]"] = aFold Endif Next Endif If Not $bTesting Then Workspace.Lock CloseAllWindows For Each hForm In Files Try hForm.Delete Next Workspace.Unlock Endif Config["/OpenFile/Count"] = nOpen 'FFind.WriteConfig Try Config = Null '$cSourceDir.Clear CPosition.Clear Files.Clear ActiveForm = Null If $hLock Then Unlock #$hLock Try Kill Project.Dir &/ ".lock" $hLock = Null Endif 'If IsFake() Then Shell "rm -rf " & Shell$(Project.Dir) Wait Bookmarks.Remove(Dir) Path = "" {Dir} = "" UpdateTitle Dec Application.Busy Endif If Not AboutToQuit Then FProperty.HideAll FFormStack.HideAll Endif Return False End Public Function Close() As Boolean AboutToQuit = True If CloseProject() Then AboutToQuit = False Return True Endif End Public Sub Exit() CSoftware.Exit CSampleCode.Exit CLibraryInfo.Exit CRecentProject.Exit Wiki.Documentation.Exit Documentation.Exit End Public Sub AddEmblem(hSource As Image, sEmblem As String, Optional iSize As Integer) As Image Dim hEmblem As Image Dim hImage As Image Try hEmblem = Picture[sEmblem].Image If Error Then Error "gambas3: warning: unable to add emblem: "; sEmblem Return hSource Endif If iSize = 0 Then iSize = hEmblem.H iSize = Min(iSize, hSource.H * 0.75) hEmblem = hEmblem.Stretch(-1, iSize) ', iSize * hEmblem.H / hEmblem.W) 'iSize -= hSource.W \ 4 hImage = New Image(hSource.Width + iSize, hSource.Height, Color.Transparent) hImage.PaintImage(hSource, iSize, 0) hImage.PaintImage(hEmblem, 0, (hImage.H - hEmblem.H) / 2) Return hImage End Public Sub AddLinkEmblem(hSource As Image) As Image Dim hImage As Image Dim iSize As Integer hImage = hSource.Copy() iSize = Min(hSource.H, hSource.W) \ 2 Paint.Begin(hImage) Paint.MoveTo(hImage.W, hImage.H) Paint.RelLineTo(0, -iSize) Paint.RelLineTo(-iSize, iSize) Paint.RelLineTo(iSize, 0) Paint.Background = Color.Black 'Paint.Background = Color.SetAlpha(Color.TextForeground, 64) Paint.Operator = Paint.OperatorDestOut Paint.Fill iSize *= 0.85 Paint.MoveTo(hImage.W, hImage.H) Paint.RelLineTo(0, -iSize) Paint.RelLineTo(-iSize, iSize) Paint.RelLineTo(iSize, 0) Paint.Background = Color.SetAlpha(Color.TextForeground, 64) Paint.Operator = Paint.OperatorOver Paint.Fill Paint.End Return hImage End Public Sub AddCompressedEmblem(hSource As Image) As Image Dim hImage As Image Dim iCol As Integer If Application.DarkTheme Then iCol = Color.SetAlpha(Color.TextForeground, 128) Else iCol = Color.SetAlpha(Color.TextForeground, 220) Endif hImage = hSource.Copy() hImage.PaintRect(0, 0, hImage.W, hImage.H, iCol) Return hImage End ' Private Sub MakeExportedIcon(hImage As Image) ' ' Dim X, Y As Integer ' Dim iCol As Integer ' Dim hColorInfo As ColorInfo ' ' For X = 0 To hImage.W - 1 ' For Y = 0 To hImage.H - 1 ' ' iCol = hImage[X, Y] ' ' With Color[Color.Desaturate(iCol)] ' ' iGray = (255 - .Blue) * (255 - .Alpha) / 255 ' ' End With ' ' Print Mid$(" .,-~+=oOINS8&%@", iGray \ 16 + 1, 1); ' ' If Color.GetAlpha(iCol) > 192 Then Continue ' If X = 0 Or If X = (hImage.W - 1) Or If Y = 0 Or If Y = (hImage.H - 1) Or If Color[hImage[X - 1, Y]].Alpha = 255 Or If Color[hImage[X + 1, Y]].Alpha = 255 Or If Color[hImage[X, Y - 1]].Alpha = 255 Or If Color[hImage[X, Y + 1]].Alpha = 255 Then ' hColorInfo = Color[Color.Darker(iCol)] ' hColorInfo.Alpha = hColorInfo.Alpha \ 2 ' hImage[X, Y] = hColorInfo.Color ' Endif ' Next ' Next ' ' End Public Sub MakeModuleIcon(sModule As String, iSize As Integer, Optional bStartup As Boolean) As Image Dim hImage As Image Dim sKey As String 'Dim hStartup As Image bStartup = False 'If Not $cImageCache["base"] Then $cImageCache["base"] = Picture["icon:/32/file"].Image If iSize = 0 Then iSize = 16 sKey = sModule & "-" & iSize & If(bStartup, "s", "") & ".png" hImage = $cImageCache[sKey] If Not hImage Then hImage = Image.Load("img/module" &/ sModule & ".png").Stretch(iSize, iSize) If Application.DarkTheme Then hImage = hImage.Invert(True) 'If bExported Then MakeExportedIcon(hImage) If bStartup Then ' hStartup = New Image(hImage.W, hImage.H, Color.Transparent) ' hStartup.FillRect(2, 2, hImage.W - 4, hImage.H - 4, &HFF7F7F) ' hStartup.PaintImage(hImage.Copy().Colorize(&HFF7F7F), 0, 0) ' hImage = hStartup hImage = AddEmblem(hImage, "img/32/startup.png") 'hImageStartup = Image.Load("img/16/startup.png").Stretch((iSize * 2) \ 3, (iSize * 2) \ 3) 'hImage.PaintImage(hImageStartup, 0, (hImage.H - hImageStartup.H) \ 2) Endif $cImageCache[sKey] = hImage Endif Return hImage End Public Sub GetFileIcon(sPath As String, Optional iSize As Integer) As Picture Dim hPict As Picture If IsConflict(sPath) Then hPict = Picture["img/32/conflict.png"] If iSize = 0 Then iSize = 16 If iSize <> 32 Then hPict = hPict.Image.Stretch(iSize, iSize).Picture Return hPict Endif If Tree Then Return Tree.GetFileIcon(sPath, iSize,, True) Return Desktop.GetFileIcon(sPath, iSize, True) End Public Sub GetParentClass(sPath As String) As String Dim hFile As File Dim sLine As String If Left(sPath) <> "/" Then sPath = FindPath(sPath) Try hFile = Open sPath For Input ' Possible, if sPath is a broken symbolic link If Error Then Return For Each sLine In hFile.Lines sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine) = "'" Then Continue If sLine Like "INHERITS *" Then Highlight.Analyze(sLine) sLine = Highlight.Symbols[1] 'sLine = Scan(sLine, "INHERITS *")[0] If Comp(sLine, File.BaseName(sPath), gb.IgnoreCase) = 0 Then sLine = "" Return sLine Endif If sLine Like "CREATE" Then Continue If sLine Like "EXPORT" Then Continue If sLine Like "CREATE *" Then Continue If sLine Like "EXPORT *" Then Continue Break Next End Public Sub GetSpecialDir(sKey As String) As String Select Case sKey Case KEY_MISC Return Project.Dir Case KEY_PROJECT Return Project.Dir &/ ".hidden" Case KEY_PUBLIC Return Project.Dir &/ ".public" Case KEY_SOURCE Return SourceDir Case KEY_CONNECTION Return Project.Dir &/ ".connection" End Select End ' Private Sub AddFile(sDir As String, sFile As String, Optional bAfter As Boolean, Optional bIgnoreInheritance As Boolean) As Boolean ' ' Dim bIgnore As Boolean ' Dim sPath As String ' Dim sKey As String ' Dim bShow As Boolean ' Dim sExt As String ' Dim sParent As String ' Dim hPict As Picture ' Dim bChecked As Boolean ' Dim bDir As Boolean ' Dim sAfter As String ' Dim hModule As CModule ' Dim bSource As Boolean ' Dim bExtern As Boolean ' Dim hStat As Stat ' Dim sTitle As String ' ' If $cProjectFilter And If Not $cProjectFilter.Exist(sDir &/ sFile) Then Return ' ' sPath = sDir &/ sFile ' ' sKey = sPath ' sParent = sDir ' ' If sDir = Project.Dir Then ' sParent = KEY_MISC ' Else If sDir = Project.Dir &/ ".hidden" Then ' sParent = KEY_PROJECT ' Else If sDir = Project.Dir &/ ".public" Then ' sParent = KEY_PUBLIC ' Else If sDir = SourceDir Then ' sParent = KEY_SOURCE ' Else If sDir = Project.Dir &/ ".connection" Then ' sParent = KEY_CONNECTION ' Else If Not Project.InsideDirectory(sDir, Project.Dir) Then ' sParent = KEY_EXTERN ' If Not ProjectTree.Exist(KEY_EXTERN) Then ProjectTree.Add(KEY_EXTERN, ("Files"), Picture["icon:/small/system"], Project.Dir) ' bExtern = True ' Try sTitle = Files[sPath].GetTitle() ' If sTitle Then sFile = sTitle ' Endif ' ' If Not ProjectTree.Exist(sParent) Then Return ' ' Try hStat = Stat(sPath) ' If Error Then Return ' ' With hStat ' ' If .Hidden Then Return ' ' bShow = False ' If Not bExtern Then bSource = IsSourcePath(sDir &/ sFile, True) ' ' If IsDir(sPath) Then ' ' If sFile = "CVS" Or If sFile = "CVSROOT" Then Return ' ' 'IF cDir THEN cDir.Add(sPath) ' bDir = True ' 'sIcon = "icon:/small/directory" 'IMAGE_DIR &/ "close.png" ' 'bShow = True ' ' Else ' ' 'IF InStr(.Perm.User & .Perm.Group & .Perm.Other, "x") THEN CONTINUE ' ' sExt = Lower(File.Ext(sFile)) ' bChecked = False ' ' If bSource Then ' ' If CModule.Ext.Exist(sExt) Then ' ' 'sIcon = IMAGE_DIR &/ sExt & ".png" ' bShow = sDir = SourceDir ' bChecked = True ' ' sParent = "" ' ' If sExt = "class" Then ' For Each hModule In CModule.All ' If Exist(sDir &/ File.BaseName(sFile) & "." & hModule.Key) Then ' bIgnore = True ' Break ' Endif ' Next ' ' If Not bIgnore Then ' 'IF sFile = "ReportContainer.class" THEN STOP ' sParent = FindKey(GetParentClass(sPath)) ' If sParent Then ' If File.Ext(sParent) <> "class" Then ' sParent = "" ' Else If File.Dir(sParent) <> sDir Then ' sParent = "" ' Else If Not ProjectTree.Exist(sParent) Then ' If Not bIgnoreInheritance Then ' $aInheritance.Add(sPath) ' bIgnore = True ' Else ' sParent = "" ' Endif ' 'Else ' ' $aInheritance.Add(sPath & "\n" & sParentClass) ' Endif ' Endif ' Endif ' ' Else If sExt = "module" Then ' ' Else ' ' 'hModule = CModule[sExt] ' ' 'sParent = hModule.TreeKey ' ' 'If Not hModule.Used Then bIgnore = True ' ' sParent = sDir ' Else If sExt <> "module" Then ' If Not HasModule(sExt) Then ' bIgnore = True ' Endif ' Endif ' ' If Not sParent Then sParent = sDir ' If sParent = SourceDir Then sParent = KEY_SOURCE ' ' If $cSourceDir[sFile] <> sPath Then ' bIgnore = True ' Endif ' ' sFile = File.BaseName(sFile) ' ' Endif ' ' Else If IsConnectionPath(sDir &/ sFile) Then ' ' If Components.Exist("gb.db") And If sExt = "connection" Then ' sFile = File.BaseName(sFile) ' bChecked = True ' Else ' bIgnore = True ' Endif ' ' Endif ' ' If Not bChecked Then ' ' If Right$(sFile) = "~" Then ' bIgnore = True ' Else If sDir = Project.Dir And If sExt = "gambas" Then ' bIgnore = True ' Endif ' ' Endif ' ' Endif ' ' If sExt = "mine" Or If Left(sExt) = "r" And IsDigit(Mid$(sExt, 2)) Then ' If Exist(sDir &/ File.BaseName(sPath)) Then ' bIgnore = True ' Endif ' Endif ' ' If Not bIgnore Then ' ' hPict = GetFileIcon(sPath,, hStat) ' ' If bAfter Then ' With ProjectTree ' .MoveTo(sParent) ' .MoveChild ' If Not bDir Then ' While .Available ' If Not IsDir(.Item.Key) Then Break ' sAfter = .Item.Key ' .MoveNext ' Wend ' Endif ' While .Available ' If String.Comp(.Item.Text, sFile, gb.IgnoreCase + gb.Natural) > 0 Then Break ' If bDir And If Not IsDir(.Item.Key) Then Break ' sAfter = .Item.Key ' .MoveNext ' Wend ' End With ' Endif ' ' With ProjectTree.Add(sKey, sFile, hPict, sParent) ' .Editable = Not IsLocked(sKey) ' 'If $bLastAdded Then .RichText = "" & .Text & "" ' 'If $cProjectFilter Then .Expanded = True ' If bAfter Then .MoveAfter(sAfter) ' If bShow Then ' ProjectTree.MoveTo(sKey) ' Do ' If ProjectTree.MoveParent() Then Break ' ProjectTree.Item.Expanded = True ' Loop ' Endif ' End With ' ' If bDir Then ' If Not bSource Then ' ProjectTree.Add(sKey & "/", "",, sKey) ' bDir = False ' Endif ' Endif ' ' RefreshIcon(sKey) ' ' Endif ' ' End With ' ' Return bDir ' ' End ' Private Sub DoRefreshAfter() ' ' Dim sKey As String ' Dim iInd As Integer ' Dim iCount As Integer ' ' If $aInheritance.Count = 0 Then Return ' ' Do ' iCount = $aInheritance.Count ' For iInd = 0 To iCount - 1 ' 'aElt = Split($aInheritance[0], "\n") ' 'sKey = aElt[0] ' 'sParent = aElt[1] ' sKey = $aInheritance[0] ' $aInheritance.Remove(0) ' AddFile(File.Dir(sKey), File.Name(sKey), True) ' ' If ProjectTree.Exist("@" ' ' ' ' ProjectTree.Add("@" & sKey ' Next ' If $aInheritance.Count >= iCount Then Break ' Loop ' ' If $aInheritance.Count Then ' For iInd = 0 To $aInheritance.Max ' sKey = $aInheritance[iInd] ' AddFile(File.Dir(sKey), File.Name(sKey), True, True) ' $aInheritance[iInd] = File.BaseName(sKey) ' Next ' If Not ProjectFilter Then ' FMain.ShowError("" & ("The following classes have circular inheritance:") & "\n\n" & $aInheritance.Join(", ")) ' Endif ' $aInheritance.Clear ' Endif ' ' End ' Private Procedure AddDir(Optional sDir As String) ' ' Dim cDir As New String[] ' Dim sFile As String ' Dim aFile As New String[] ' ' If sDir Then ' cDir.Add(sDir) ' Else ' cDir.Add(Project.Dir) ' If SourceDir <> Project.Dir Then cDir.Add(SourceDir) ' Endif ' ' $aInheritance.Clear ' ' Repeat ' ' sDir = cDir[0] ' aFile.Clear ' ' '$bGetSource = FALSE ' ' For Each sFile In Dir(sDir, "*") ' If IsDir(sDir &/ sFile) Then aFile.Add("D" & sFile) ' Next ' ' For Each sFile In Dir(sDir, "*") ' If Not IsDir(sDir &/ sFile) Then aFile.Add("F" & sFile) ' Next ' ' aFile.Sort(gb.Language + gb.Natural) ' ' For Each sFile In aFile ' ' sFile = Mid$(sFile, 2) ' If AddFile(sDir, sFile, True) Then cDir.Add(sDir &/ sFile) ' 'AddFile(sDir, sFile, True) ' ' Next ' ' cDir.Remove(0) ' ' Until cDir.Count = 0 ' ' DoRefreshAfter ' ' End ' Public Sub FillDir(sDir As String) ' ' If Not sDir Then Return ' If Left(sDir) = "$" Then Return ' If Not IsDir(sDir) Then Return ' ' ProjectTree.MoveTo(sDir) ' If ProjectTree.MoveChild() Then Return ' If ProjectTree.Item.Key <> sDir & "/" Then Return ' ' Inc Application.Busy ' ProjectTree[sDir & "/"].Delete ' AddDir(sDir) ' Dec Application.Busy ' ' Catch ' ' Debug Error.Where; ": "; Error.Text ' Dec Application.Busy ' ' End ' ' Private Sub EnsureKey(sKey As String) ' ' Dim sPath As String ' Dim sElt As String ' ' sPath = "/" ' For Each sElt In Split(sKey, "/") ' sPath &/= sElt ' If ProjectTree.Exist(sPath) Then FillDir(sPath) ' Next ' ' End ' ' Public Sub SelectKey(sKey As String) ' ' Dim hModule As CModule ' Dim sBase As String ' ' EnsureKey(sKey) ' ' If Not ProjectTree.Exist(sKey) Then ' If Right$(sKey, 6) = ".class" Then ' sBase = Left$(sKey, -6) ' For Each hModule In CModule.All ' sKey = sBase & "." & hModule.Key ' If ProjectTree.Exist(sKey) Then Break ' Next ' Endif ' Endif ' ' Try ProjectTree[sKey].Selected = True ' Try ProjectTree[sKey].EnsureVisible ' ' End ' PRIVATE SUB UpdateInheritance() ' ' DIM sPath AS String ' DIM sParent AS String ' ' FOR EACH sPath IN Dir(Project.Dir, "*.class") ' ' IF Exist(Project.Dir &/ File.SetExt(sPath, "form")) THEN CONTINUE ' ' sParent = GetParentClass(sPath) ' IF sParent THEN ' sParent = FindKey(sParent) ' IF File.Ext(sParent) <> "class" THEN sParent = "" ' ENDIF ' ENDIF ' IF NOT sParent THEN ' sParent = KEY_CLASS ' ENDIF ' ' NEXT ' ' END Public Sub RefreshRoot() ProjectTree[Project.Dir].Picture = GetIcon(Project.Dir, 16) End Private Sub OnRefreshSources() FMain.OnRefreshSources FDebugButton.OnRefreshSources End Private Sub RefreshSources() As Boolean Dim hForm As Object Dim sPath As String Tree.RefreshSources() For Each hForm In Files.Copy() If IsSourcePath(hForm.Path) Then sPath = Tree.Sources[File.Name(hForm.Path)] If sPath <> hForm.Path Then Files[sPath] = hForm Files[hForm.Path] = Null hForm.Path = sPath Endif Endif Next VersionControl.CheckPaths() OnRefreshSources End Public Sub FormatVersion(Optional bStripReleaseIfNull As Boolean) As String Dim sVer As String sVer = CStr(MajorVersion) & "." & CStr(MinorVersion) If Not bStripReleaseIfNull Or If ReleaseVersion > 0 Then sVer &= "." & ReleaseVersion Return sVer End Public Sub UpdateTitle() Dim sTitle As String Dim sBranch As String If Path Then If ShowFileInTitle Then If ActiveForm Then ' sPath = ActiveForm.Path ' If IsProjectPath(sPath) Then ' sPath = ActiveForm.Text ' Else If sPath Begins User.Home Then ' sPath = "~/" &/ Mid$(sPath, Len(User.Home) + 1) ' Endif If sTitle Then sTitle &= " - " sTitle &= ActiveForm.Title Endif Endif If Not IsFake() Then If sTitle Then sTitle &= " - " sTitle &= Name & " " & FormatVersion() VersionControl.GetBranches(ByRef sBranch) If sBranch Then sTitle &= " (" & sBranch & ")" If ReadOnly Then sTitle &= " [" & ("read-only") & "]" Endif Endif If sTitle Then sTitle &= " — " sTitle &= Application.Title If Application.Version Like "*.9[0-9].*" Then sTitle &= " - " & ("ALPHA VERSION, USE AT YOUR OWN RISK!") Else If Application.Version Like "*.*.9[0-9]" Then sTitle &= " - " & ("DEVELOPMENT VERSION, USE AT YOUR OWN RISK!") Endif FMain.Title = sTitle End Private Sub AddPathToFilter(sPath As String) $cProjectFilter[sPath] = True If IsSourcePath(sPath) And If File.Ext(sPath) = "class" Then Try $cProjectFilter[Tree.FindForm(File.BaseName(sPath))] = True Endif While Len(sPath) > Len(Project.Dir) sPath = File.Dir(sPath) $cProjectFilter[sPath] = True Wend End Private Sub InitProjectFilter() Dim sPath As String Dim sFile As String Dim sFilter As String $cProjectFilter = Null If Not ProjectFilter Then Return If ProjectFilter = FILTER_ADDED Then $cProjectFilter = New Collection For Each sPath In AllFlags(FLAG_ADDED) AddPathToFilter(sPath) Next Else If ProjectFilter = FILTER_MODIFIED Then $cProjectFilter = New Collection For Each sPath In AllFlags(FLAG_MODIFIED) AddPathToFilter(sPath) Next Else If ProjectFilter = FILTER_CONFLICT Then $cProjectFilter = New Collection For Each sPath In AllFlags(FLAG_CONFLICT) AddPathToFilter(sPath) Next Else If ProjectFilter = FILTER_EXPORTED Then $cProjectFilter = New Collection For Each sPath In Tree.Sources If IsExported(sPath) Then AddPathToFilter(sPath) Next Else If ProjectFilter = FILTER_COMPRESSED Then $cProjectFilter = New Collection For Each sFile In Project.CompressedFiles AddPathToFilter(Project.Dir &/ sFile) Next Else If ProjectFilter = FILTER_DO_NOT_TRANSLATE Then $cProjectFilter = New Collection For Each sFile In Project.DoNotTranslate AddPathToFilter(Project.Dir &/ sFile) Next Else sFilter = String.LCase(ProjectFilter) $cProjectFilter = New Collection For Each sFile In Browse(Project.Dir) sPath = Project.Dir &/ sFile sFile = File.Name(sFile) If sPath Begins (Project.Dir &/ ".src") Then sFile = File.BaseName(sFile) If InStr(String.LCase(sFile), sFilter) = 0 Then Continue AddPathToFilter(sPath) Next Endif End Private Sub DoRefresh(Optional bReset As Boolean, Optional bDoNotRefreshCache As Boolean) Dim sKey As String Dim sKeyReset As String Dim hFile As Object Dim sPath As String Dim sFamily As String '$bDisplayForm = Settings["/DisplayForm"] If Not ProjectTree Then Return If $iNoRefresh Then Return If Not bReset Then sKeyReset = ProjectTree.Key Endif InitProjectFilter VersionControl.CheckPaths Tree.Refresh(bDoNotRefreshCache, $cProjectFilter) If sKeyReset Then sKey = sKeyReset Tree.SelectKey(sKey) 'DefineStartup(Startup, True) '??? For Each sFamily In CFamily.List If Not HasModule(sFamily) Then For Each hFile In Files sPath = Files.Key If Not IsSourcePath(sPath) Then Continue If Exist(File.SetExt(sPath, sFamily)) Then Files.Remove(sPath) hFile.Delete Endif Next Endif Next ' Path may not exist in the tree if a filter is active If VersionControl.Enabled Then For Each sPath In AllFlags(FLAG_ADDED) Tree.EnsureKey(sPath) Try ProjectTree[sPath].EnsureVisible Next For Each sPath In AllFlags(FLAG_CONFLICT) Tree.EnsureKey(sPath) Try ProjectTree[sPath].EnsureVisible Next Endif If $cProjectFilter Then For Each $cProjectFilter sPath = $cProjectFilter.Key Tree.EnsureKey(sPath) Try ProjectTree[sPath].EnsureVisible Next ' Move to the first available item if the root item is selected If ProjectTree[Project.Dir].Selected Then With ProjectTree .MoveFirst() Do If .MoveBelow() Then Break If Left(.Item.Key) <> "$" And Not IsDir(.Item.Key) Then .Item.Selected = True Break Endif Loop End With Endif Endif UpdateTitle $bDoRefresh = False End Public Sub timRefresh_Timer() DoRefresh End Private Sub DisableRefresh() If $iNoRefresh = 0 Then $bDoRefresh = False Inc $iNoRefresh End Public Sub Refresh(Optional bReset As Boolean) If bReset Or If $iNoRefresh = 0 Then DoRefresh(bReset) Else $bDoRefresh = True Endif End Public Sub RefreshAll() Inc Application.Busy RefreshComponents(True) Refresh(True) Dec Application.Busy End Private Sub EnableRefresh() Dec $iNoRefresh If $iNoRefresh = 0 Then If $bDoRefresh Then DoRefresh() Endif End Public Function IsEditor(hFile As Object) As Boolean Return Object.Type(hFile) = "FEditor" End Public Function IsForm(hFile As Object) As Boolean If hFile Then Return Object.Type(hFile) = "FForm" End Public Sub IsTextFile(sPath As String) As Boolean Dim hFile As File Dim sStr As String Dim sCar As String Dim iCode As Integer Dim sTest As String hFile = Open sPath sStr = Read #hFile, -256 While sStr sCar = String.Left(sStr) sStr = Mid$(sStr, Len(sCar) + 1) If Not sCar Then Break If Len(sCar) = 1 Then iCode = Asc(sCar) If iCode = &HFE Then Return False If iCode = &HFF Then Return False If iCode < 32 And If iCode <> 10 And If iCode <> 13 And If iCode <> 9 Then Return False Else If sStr Then Try sTest = Conv(sCar, "UTF-8", "UCS-4LE") If Error Then Return False Endif Wend Return True End Public Sub IsSqliteFile(sPath As String) As Integer Dim hFile As File Dim sText As String Try hFile = Open sPath If Error Then Return sText = Read #hFile, -47 Close #hFile If sText = "** This file contains an SQLite 2.1 database **" Then Return 2 If sText Begins "SQLite format 3" Then Return 3 End Public Sub IsPatchFile(sPath As String) As Boolean Dim hFile As File Dim sHead As String If Not IsTextFile(sPath) Then Return hFile = Open sPath sHead = Read #hFile, -4 Return sHead = "diff" End Public Function LoadFile(sPath As String, Optional bNoErrorIfUnknown As Boolean) As Object Dim hForm As Object Dim bError As Boolean Dim sType As String Dim sErr As String hForm = Files[sPath] If Not hForm Then 'Inc Application.Busy If IsDir(sPath) Then hForm = New FProjectEditor(sPath) Else If IsConflict(sPath) Then hForm = New FConflictEditor(sPath) Else If IsSourcePath(sPath) Then sType = File.Ext(sPath) Select Case sType Case "module", "test", "class" hForm = New FEditor(sPath) Case "form", "report", "webform", "termform" If HasModule(sType) Then hForm = New FForm(sPath) Endif Case "webpage" If HasModule("webpage") Then hForm = New FTextEditor(sPath, Null, True) Endif End Select Else If IsConnectionPath(sPath) Then If MConnection.CheckPassword(sPath) Then 'Dec Application.Busy Return Endif hForm = New FConnectionEditor(sPath) Endif If Not hForm Then Select Case Lower(File.Ext(sPath)) Case "png", "gif", "jpg", "jpeg", "bmp", "xpm" hForm = New FImageEditor(sPath) Case "module", "test", "class" hForm = New FEditor(sPath) Case Else ' Check that it is not a binary file If IsTextFile(sPath) Then hForm = New FTextEditor(sPath) Else 'Dec Application.Busy Files[sPath] = Null If bNoErrorIfUnknown Then $bFileIsUnknown = True Else FMain.ShowError(("Cannot open a binary file."), sPath) Endif Return Endif End Select Endif Files[sPath] = hForm If hForm Then bError = hForm.LoadFile() If bError Then Files[sPath] = Null Try hForm.Delete 'Dec Application.Busy Return Endif hForm.Icon = GetFileIcon(sPath) Endif If hForm Then FSearch.OnNewForm(hForm) 'Dec Application.Busy Endif Return hForm Catch sErr = Error.Text & "\n" & Error.Backtrace.Join(" ") If hForm Then Try hForm.Delete 'Dec Application.Busy Try Files[sPath] = Null FMain.ShowError(("Cannot open file.") & "\n\n" & sErr, sPath) End Public Function FindPath(sClass As String) As String If Not Tree Then Stop Return Tree.FindPath(sClass) End ' Private Sub FindKey(sClass As String) As String ' ' Return Tree.FindKey(sClass) ' ' End Public Sub ShowFile(hForm As Form) Workspace.Add(hForm) Workspace.ActiveWindow = hForm hForm.SetFocus 'Catch 'FMain.ShowError(("Cannot open file.") & "\n\n" & Error.Text & "\n" & Error.Where) End Public Sub FileWasUnknown() As Boolean Return $bFileIsUnknown End Public Sub OpenFile(sPath As String, Optional iLine As Integer, Optional iColumn As Integer = -1, Optional bNoErrorIfUnknown As Boolean) As Object Dim hForm As Object Dim bAlreadyLoaded As Boolean If InStr(sPath, "/") = 0 Then sPath = FindPath(sPath) Try Stat(sPath, True) If Error Then FMain.ShowWarning(("File not found!") & "\n\n" & sPath & "") Project.Refresh Return Endif 'IF File.Ext(sPath) = "form" THEN ' FProperty.Show ' FToolBox.Show 'ENDIF ' If IsConflict(sPath) Then ' FConflict.Run(sPath) ' VersionControl.CheckPaths() ' If IsConflict(sPath) Then Return ' RefreshKey(sPath) ' Endif If Files[sPath] Then bAlreadyLoaded = True $bFileIsUnknown = False If Not LoadFile(sPath, bNoErrorIfUnknown) Then Return If Not InsideDirectory(sPath, Project.Dir) Then Tree.AddExtern(sPath) If Not ProjectTree.Exist(sPath) Then RefreshKey(sPath) Endif hForm = Files[sPath] If Not hForm Then Return CPosition.Disable Try ShowFile(hForm) If Error Then CPosition.Enable Error.Raise(Error.Text) Endif If iLine Then Try hForm.GotoCenter(iLine - 1, iColumn) Else If hForm.Name = Startup And If Not bAlreadyLoaded Then Try hForm.GotoFunction(hForm.GetFunctionLine("Main")) Endif CPosition.Enable CPosition.SaveCurrent(Me) Return hForm End Public Function ExistForm(sClass As String) As Boolean Return Tree.ExistForm(sClass) End Public Sub FindForm(sClass As String) As String Return Tree.FindForm(sClass) End Public Sub OpenForm(sName As String, Optional sModule As String = "form", Optional sControl As String) Dim sPath As String Dim hForm As Object sPath = Tree.Sources[sName & "." & sModule] If Exist(sPath) Then hForm = OpenFile(sPath) If sControl Then hForm.SelectControl(sControl) Endif End ' Private Function AddMessage(sVoid As String) As String ' ' Dim iPos As Integer ' Dim sMsg As String ' ' If Stat(OUTPUT_FILE).Size = 0 Then ' ' SetMessage(sVoid) ' Return ' ' Else ' ' sMsg = RTrim(File.Load(OUTPUT_FILE)) ' iPos = RInStr(sMsg, "\n") ' If iPos Then sMsg = Mid$(sMsg, iPos + 1) ' Return sMsg ' ' Endif ' ' End Public Sub TranslateMessage(sErr As String) As String Dim aErr As String[] aErr = Split(sErr, "\t") aErr.Resize(5) If Left(aErr[1]) = "#" Then Select CInt(Mid$(aErr[1], 2)) Case 1 aErr[1] = ("first") Case 2 aErr[1] = ("second") Case 3 aErr[1] = ("third") Default aErr[1] = Subst(("&1th"), Mid$(aErr[1], 2)) End Select Endif Return Subst(Tr$(aErr[0]), aErr[1], aErr[2], aErr[3], aErr[4]) End Public Sub FormatError(sErr As String, sWhere As String) As String Dim sHtml As String sHtml = "" & Html(sErr) & "" If sWhere Ends "." Then sWhere = Left(sWhere, -1) If sWhere Then sHtml &= " (" & Html(sWhere) & ")" Return sHtml End Private Sub CompileError(sMsg As String) Dim iPos As Integer Dim sFile As String Dim iLine As Integer Dim iColumn As Integer Dim hForm As Object Dim sErr As String Dim sInfo As String Dim aInfo As String[] Dim hEditor As TextEditor iPos = RInStr(sMsg, "\n") If iPos Then sMsg = Mid$(sMsg, iPos + 1) If LCase(sMsg) Like "gbc[3-9]: *" Then sMsg = Mid$(sMsg, 7) If sMsg Begins "error: " Then sMsg = Mid$(sMsg, 8) sMsg = TranslateMessage(sMsg) SetMessage(sMsg) 'Message.Error(("Cannot compile the project.") & "\n" & sMsg) Else iPos = InStr(sMsg, " ") sInfo = Left$(sMsg, iPos - 1) sMsg = Mid$(sMsg, iPos + 1) aInfo = Split(sInfo, ":", "", True) sFile = aInfo[0] Try iLine = CInt(aInfo[1]) Try iColumn = CInt(aInfo[2]) 'if iLine = 0 then return 'sFile = File.Dir(Path) &/ File.Name(sFile) hForm = OpenFile(Tree.Sources[sFile], iLine, iColumn - 1) If sMsg Begins "error: " Then sMsg = Mid$(sMsg, 8) sErr = TranslateMessage(sMsg) Try hEditor = hForm.GetEditor() If iLine >= 100000 Then SetMessage(File.BaseName(sFile) & ": " & sErr & " " & ("in form definition")) sMsg = FormatError(sErr, ("in form definition")) Else If iLine >= 1 Then If hEditor Then iLine = Min(iLine, hEditor.Count) SetMessage(File.BaseName(sFile) & "." & CStr(iLine) & ": " & sErr) sMsg = FormatError(sErr, File.Name(sFile) & ":" & CStr(iLine)) Else SetMessage(File.BaseName(sFile) & ": " & sErr) sMsg = FormatError(sErr, File.Name(sFile)) Endif Endif If hEditor Then hForm.ShowErrorMessage(sMsg, "make") Else FMain.ShowMessage(sMsg, "make") Endif 'Catch End ' PUBLIC FUNCTION Quote(sPath AS String) AS String ' ' DIM sQuote AS String ' DIM iInd AS Integer ' DIM sCar AS String ' ' sPath = SConv$(sPath) ' 'DEBUG sPath ' ' FOR iInd = 1 TO Len(sPath) ' ' sCar = Mid$(sPath, iInd, 1) ' ' IF InStr("0123456789abcdefghijklmnopqrstuvwxyz.-/_~", LCase(sCar)) = 0 THEN ' sCar = "\\" & sCar ' ENDIF ' ' sQuote = sQuote & sCar ' ' NEXT ' ' RETURN sQuote ' ' END Private Function Escape(sStr As String) As String Dim sRes As String Dim iInd As Integer Dim sCar As String Dim iPos As Integer For iInd = 1 To Len(sStr) sCar = Mid$(sStr, iInd, 1) iPos = InStr("\"\\\n\r\t", sCar) If iPos Then sCar = "\\" & Mid$("\"\\nrt", iPos, 1) sRes = sRes & sCar Next Return sRes End Public Sub Process_Read() Dim sLig As String sLig = Read #Last, -4096 Print sLig; End Public Sub Process_Kill() Dim sLink As String = Last.Tag If sLink Then RefreshKey(sLink) Catch ' Can fail when Process_Kill is raised after the IDE has been closed End Public Sub DeleteCompiledFiles() Dim sFile As String If Exist(Project.Dir &/ ".gambas") Then For Each sFile In Dir(Project.Dir &/ ".gambas") If sFile Begins "." Then Continue Try Kill Project.Dir &/ sFile Next Endif If Exist(Project.Dir &/ ".lang") Then For Each sFile In Dir(Project.Dir &/ ".lang", "*.pot") Try Kill Project.Dir &/ ".lang" &/ sFile Next Endif End Public Function GetCompileCommand(bAll As Boolean, bNoDebug As Boolean, bMakeExecutable As Boolean, bIDE As Boolean) As String Dim sExec As String If bIDE Then sExec = System.Path &/ "bin/gbc" & System.Version Else sExec = "gbc" & System.Version Endif sExec &= " -e " If bAll Then sExec &= "-a " If Not bNoDebug Then sExec &= "-g " If Localize Then sExec &= "-t " If ControlPublic Then sExec &= "-p " If ModulePublic Then sExec &= "-m " If bMakeExecutable Then sExec &= "-x " sExec &= "-j" & CStr(Settings["/CompilerJobs", 1]) & " " 'sExec = sExec & "-c " & Quote(CLASSES_FILE) & " " & Quote(Project.Dir) & " > " & OUTPUT_FILE & " 2>&1" If bIDE Then If Project.Warnings Then sExec &= "-w " sExec = sExec & Shell$(Project.Dir) sExec = sExec & " > " & OUTPUT_FILE & " 2>&1" Endif Return sExec End Public Sub CreateLangDirectory() Dim sDir As String = Project.Dir &/ ".lang" Try Mkdir sDir If IsDir(sDir) And If Dir(sDir).Count = 0 Then VersionControl.AddDir(sDir) End Private Sub GetInfoFile() As String Try Return File.Load(Project.Dir &/ ".info") End Public Function Compile(Optional bAll As Boolean, Optional bNoDebug As Boolean, Optional bNoMessage As Boolean, Optional bMakeExecutable As Boolean) As Boolean Dim sExec As String Dim sDir As String Dim sPath As String Dim iPos As Integer Dim sTrans As String Dim sBefore, sAfter As String Dim bGotError As Boolean Dim fTimer As Float Dim aOutput As String[] Dim I As Integer Dim sLine As String Dim sError As String If Project.ReadOnly Then Return If Project.Running Then Return 'TRUE If LockIt() Then Return True sDir = Project.Dir FProperty.SaveProperty Save(True) If HasConflict Then UnlockIt() If Not bNoMessage Then Message.Warning(("Some project source files are in conflict.\nPlease solve them if you want to compile the project.")) Return True Endif SetMessage(("Compiling project") & " " & Project.Name & "...") GetVersion If bAll Then 'CleanUp WriteProject(True) DeleteCompiledFiles Endif sBefore = GetInfoFile() sExec = GetCompileCommand(bAll, bNoDebug, bMakeExecutable, True) If bAll Then fTimer = Timer iPos = Environment.Find("GB_PCODE_VERSION=*", gb.Like) If iPos >= 0 Then Shell sExec With [Environment[iPos]] Wait Else Shell sExec Wait Endif If Process.LastState = Process.Crashed Or If Process.LastValue > 128 Then UnlockIt() Message.Error(("

      The compiler has crashed!

      \nPlease report it to the Gambas bugtracker at:\n\nhttps://gambaswiki.org/bugtracker\n\nDo not forget to provide the full project so that the crash can be reproduced.")) Return True Endif bGotError = Process.LastValue aOutput = Split(File.Load(OUTPUT_FILE), "\n", "", True) I = 0 While I < aOutput.Count sLine = aOutput[I] If sLine Like "*: warning: *" Then Inc I Continue Endif If sLine Like "*: error: *" Then sError = sLine aOutput.Remove(I) Wend FDebugInfo.SetCompilation(aOutput) 'FDebugInfo.GotoFirstWarning() If bGotError And If sError Then UnlockIt() If Not bNoMessage Then CompileError(sError) Return True Else If Localize Then WriteProjectTranslation sPath = sDir &/ ".lang/.pot" Shell "msgcat " & Shell$(sDir) &/ ".lang/*.pot > " & Shell$(sPath) & " 2>/dev/null" Wait sTrans = File.Load(sPath) iPos = InStr(sTrans, "#,") If iPos Then sTrans = Mid$(sTrans, iPos) File.Save(sDir &/ ".lang/.pot", sTrans) 'CompileTranslation(bAll) Endif SetMessage(("OK"), True) If bAll Then SetMessage(" " & Subst(("(in &1 s)"), Format(Timer - fTimer, "0.#")), True) 'FMain.ShowAnimate("Happy") Endif sAfter = GetInfoFile() If sAfter <> sBefore Then RefreshComponents(True) Endif UnlockIt() End Private Function CheckRunning(Optional bCompileAll As Boolean) As Boolean If Project.Running Then Return If Compile(bCompileAll) Then Return True If CheckStartupClass() Then Return True End Public Sub Run(Optional bCompileAll As Boolean, Optional iDebug As Integer, Optional sStartup As String) If CheckRunning(bCompileAll) Then Return If iDebug = 1 Then Design.Step Else If iDebug = 2 Then Design.Forward Else If iDebug = 3 Then Design.ReturnFrom Else If sStartup Then Design.Startup = sStartup Design.Run Design.Startup = "" Endif End Public Sub Test() 'If Project.Running Then Design.Stop() If CheckRunning() Then Return Design.Run(True) End Public Sub Forward() If CheckRunning() Then Return Design.Forward End Public Sub ReturnFrom() If CheckRunning() Then Return Design.ReturnFrom End Public Sub RunUntil(hForm As FEditor, iLine As Integer) If CheckRunning() Then Return Design.RunUntil(hForm, iLine) End Public Sub Step() If Compile() Then Return If CheckStartupClass() Then Return Design.Step End Public Sub Save(Optional (bReset) As Boolean) Dim hForm As Object Inc Application.Busy For Each hForm In Files If hForm Is FEditor Then If hForm.Save() Then Break Else If hForm.Save() Then Break Endif Next Dec Application.Busy End Public Sub Reload() Open(Project.Dir) End Public Sub CopyProject(sSrc As String, sDst As String) Dim sFile As String Try Mkdir sDst For Each sFile In Dir(sSrc) If sFile = ".svn" Or sFile = "CVS" Or sFile = ".lock" Then Continue With Stat(sSrc &/ sFile) If .Type = gb.Directory Then CopyProject(sSrc &/ sFile, sDst &/ sFile) Else If .Type = gb.Link Then Link .Link To sDst &/ sFile Else Copy sSrc &/ sFile To sDst &/ sFile Endif End With Next End Public Sub SaveAs() FSaveProjectAs.Run End Public Sub GetAbsoluteLink(sPath As String, sLink As String) As String Dim aPath As String[] Dim iInd As Integer Dim sElt As String If Left$(sLink) = "/" Then Return sLink aPath = Split(File.Dir(sPath) &/ sLink, "/") While iInd < aPath.Count sElt = aPath[iInd] If sElt = "." Or If sElt = "" Then aPath.Remove(iInd) Else If sElt = ".." Then If iInd Then aPath.Remove(iInd - 1, 2) Dec iInd Else aPath.Remove(iInd) Endif Else Inc iInd Endif Wend Return "/" & aPath.Join("/") End Public Sub MakeRelativeLink(sLink As String, sPath As String) As String Dim aPath As String[] Dim aLink As String[] Dim iInd As Integer Dim iMax As Integer aPath = Split(File.Dir(sPath), "/") aLink = Split(sLink, "/") iMax = Min(aPath.Max, aLink.Max) For iInd = 0 To iMax If aPath[iInd] <> aLink[iInd] Then Break Next If iInd <= iMax And (aPath.Count - iInd) <= 6 Then sLink = String$(aPath.Count - iInd, "../") While iInd < aLink.Count sLink = sLink &/ aLink[iInd] Inc iInd Wend Endif Return sLink End Public Sub InsertSource(sName As String, sType As String, sDir As String, Optional sTemplate As String, Optional bNoRefresh As Boolean, Optional bNoOpen As Boolean, Optional bLink As Boolean) Dim sPath As String sPath = sDir &/ File.BaseName(sName) & "." & sType If Exist(sPath) Then FMain.ShowWarning(("File already exists.")) Return Endif If bLink Then sTemplate = MakeRelativeLink(sTemplate, sPath) Link sTemplate To sPath ' swapped Else If Left(sTemplate) = "/" Then Try Copy sTemplate To sPath Else File.Save(sPath, sTemplate) Endif VersionControl.AddFile(sPath) Inc Project.TimeStamp Tree.Sources[sName] = sPath OnRefreshSources If Not bNoRefresh Then Refresh If Not bNoOpen Then OpenFile(sPath) End Public Sub InsertFile(sName As String, sDir As String, Optional sTemplate As String, Optional bNoOpen As Boolean, Optional bLink As Boolean) Dim sPath As String sPath = sDir &/ sName If Len(sTemplate) Then If Exist(sPath) Then If IsDir(sPath) Then FMain.ShowWarning(("Directory already exists.")) Else FMain.ShowWarning(("File already exists.")) Endif Return Endif 'SHELL "cp " & Quote(sTemplate) & " " & Quote(sPath) WAIT If bLink Then sTemplate = MakeRelativeLink(sTemplate, sPath) Try Link sTemplate To sPath ' swapped If Not Exist(sPath) Then FMain.ShowError(("Cannot link template file.") & "\n\n" & Error.Text) Return Endif Else Try Copy sTemplate To sPath If Not Exist(sPath) Then FMain.ShowError(("Cannot copy template file.") & "\n\n" & Error.Text) Return Endif Endif Endif VersionControl.AddFile(sPath) Inc Project.TimeStamp Refresh 'RefreshLibrary If Not bNoOpen Then OpenFile(sPath) End Public Sub MakeDir(sDir As String) As Boolean Dim sPath As String Dim sElt As String If sDir Begins "~/" Then sDir = User.Home &/ Mid$(sDir, 3) For Each sElt In Split(sDir, "/") sPath &/= sElt Try Mkdir "/" & sPath Next If Not Exist(sDir) Or If Not IsDir(sDir) Then Return True End Public Sub IsForbiddenDirectory(sDir As String) As Boolean Dim sName As String sName = File.Name(sDir) If sName = "CVS" Or If sName = "CVSROOT" Then Return True If sName = ".svn" Then Return True End Public Function InsertDirectory(sDir As String, Optional bNoVerCtrl As Boolean) As Boolean Dim sPath As String Dim sElt As String If Exist(sDir) Then FMain.ShowWarning(("Directory already exists.")) Return True Endif If IsForbiddenDirectory(File.Name(sDir)) Then FMain.ShowWarning(("Forbidden directory name.")) Return True Endif sPath = "/" For Each sElt In Split(sDir, "/") sPath &/= sElt If Len(sPath) > Len(Project.Dir) And If Not Exist(sPath) Then Try Mkdir sPath If Error Then Message.Error(Error.Text) Return True Endif If Not bNoVerCtrl Then VersionControl.AddDir(sPath) RefreshKey(sPath) Endif Next Inc Project.TimeStamp End Private Sub RefreshActivate() Dim hActive As Object = ActiveForm ActiveForm = Null Activate(hActive) End Public Sub Activate(hForm As Object) Dim sType As String Dim bEditor As Boolean Dim bTextEditor As Boolean If AboutToQuit Then Return If hForm Then Tree.SelectKey(hForm.Path) If ActiveForm = hForm Then Try ActiveForm.SetFocus Return Endif 'ELSE 'IF NOT ActiveForm THEN RETURN Endif ActiveForm = hForm If Not ActiveForm Then FProperty.HideAll FFormStack.HideAll FMain.ShowTool("") sType = "" Else FProperty.RefreshAll FFormStack.RefreshAll sType = Object.Type(ActiveForm) FMain.ShowTool(sType) 'Or ShowAlwaysProperty) Endif bEditor = sType = "FEditor" bTextEditor = sType = "FTextEditor" Action["break"].Enabled = bEditor Action["watch"].Enabled = bEditor Action["until"].Enabled = bEditor FDebugButton.OnProjectActivate FToolBox.OnProjectActivate FImageProperty.OnProjectActivate Try ActiveForm.SetFocus CPosition.SaveCurrent(ActiveForm) 'If hForm Then FMain.HideDebug(sType = "FConnectionEditor") FSearch.Update UpdateTitle End Public Sub Deactivate(hForm As Object) If ActiveForm <> hForm Then Return 'DEBUG hForm 'DEBUG "DeActivate: "; hForm.Title Select Case Object.Type(hForm) Case "FForm" FProperty.HideAll FFormStack.HideAll 'FProperty.Hide ' FToolBox.Hide End Select End Private Sub GetVersion(Optional bWriteProject As Boolean) As Boolean Dim sDir As String Dim sVer As String Dim aVer As String[] Dim iMajor As Integer Dim iMinor As Integer Dim iRelease As Integer Dim sOldVer As String If Not VersionFile Then Return True If bWriteProject Then sOldVer = FormatVersion() sDir = Project.Dir Do sDir = File.Dir(sDir) If Not sDir Or If sDir = "/" Then Return True If Exist(sDir &/ "VERSION") Then Break Loop sVer = Trim(File.Load(sDir &/ "VERSION")) aVer = Split(Trim(sVer), ".") If aVer.Count = 0 Then Goto BAD_VERSION Try iMajor = aVer[0] If Error Or If iMajor < 0 Then Goto BAD_VERSION If aVer.Count >= 2 Then Try iMinor = aVer[1] If Error Or If iMinor < 0 Then Goto BAD_VERSION Else iMinor = 0 Endif If aVer.Count >= 3 Then Try iRelease = aVer[2] If Error Or If iRelease < 0 Then Goto BAD_VERSION Else iRelease = 0 Endif MajorVersion = iMajor MinorVersion = iMinor ReleaseVersion = iRelease If bWriteProject Then sVer = FormatVersion() If sVer <> sOldVer Then WriteProject Endif Return BAD_VERSION: FMain.ShowError(("The contents of VERSION file is incorrect.") & "\n" & sDir & "") End Public Sub InstallLibrary(sExecPath As String, sVendor As String, sVersion As String) As String Dim sDir As String Dim sLink As String sDir = CLibraryInfo.UserPath If sVendor Then sDir &/= LCase(sVendor) Else sDir &/= "(unknown)" Endif MakeDir(sDir) sLink = sDir &/ File.BaseName(sExecPath) & ":" & sVersion & ".gambas" Try Kill sLink Try Copy sExecPath To sLink If Error Then Return Subst(("Cannot install library in &1."), "" & sDir & "") & "\n\n" & Error.Text End Public Function MakeExecutable(Optional bDoNotIncVersion As Boolean, Optional bSilent As Boolean) As Boolean Dim sExec As String Dim sExecPath As String Dim bOK As Boolean Dim sErr As String Dim bSaveDone As Boolean Dim hProcess As Process Dim hTerminal As TerminalView Dim sCommand As String Dim sPath As String Dim I As Integer Dim sDir As String If CheckStartupClass() Then Return True DisableRefresh sExecPath = GetExecPath() If Not bSilent Then 'IF Dialog.SaveFile() THEN RETURN TRUE sExecPath = FMakeExecutable.Run(sExecPath) If Not sExecPath Then EnableRefresh Return Endif sExecPath = File.SetExt(sExecPath, "gambas") If sExecPath Begins (Project.Dir & "/") Then Config["/Executable/Path"] = Mid$(sExecPath, Len(Project.Dir) + 2) Else Config["/Executable/Path"] = sExecPath Endif Config.Save Endif SetMessage(("Making executable...")) If Compile(True) Then EnableRefresh Return True Endif bDoNotIncVersion = bDoNotIncVersion Or Project.Config["/Executable/DoNotIncrementVersion", False] Or Project.VersionFile If Not bDoNotIncVersion And If Project.TimeStamp = Project.ExecTimeStamp Then If Message.Warning(("No change has been detected.") & "\n\n" & ("Do you really want to increment the project version and make the executable again?"), ("Make executable"), ("Cancel")) = 2 Then EnableRefresh Return True Endif Endif Exec ["rm", "-rf", Project.Dir &/ ".gambas.save"] Wait 'Exec ["cp", "-rf", Project.Dir &/ ".gambas", Project.Dir &/ ".gambas.save"] Wait Move Project.Dir &/ ".gambas" To Project.Dir &/ ".gambas.save" bSaveDone = True If Not Compile(True, Not KeepDebugInfo, False, True) Then GetVersion() ' Save project before making the executable WriteProject(True) If Config["/Executable/NoTestModule"] Then For Each sPath In MTest.GetTestModules() Try Kill Project.Dir &/ ".gambas" &/ UCase(File.BaseName(sPath)) Next Endif If CompressFiles And If CompressedFiles.Count Then sDir = Project.Dir &/ ".uncompressed" Try Mkdir sDir For I = 0 To CompressedFiles.Max sPath = sDir &/ File.SetExt(CStr(I), File.Ext(CompressedFiles[I])) Try Kill sPath Copy Project.Dir &/ CompressedFiles[I] To sPath MCompressFile.Compress(Project.Dir &/ CompressedFiles[I]) Next Endif sExec = System.Path &/ "bin/gba" & System.Version & " -o " & Shell$(sExecPath) & " " & Shell$(Project.Dir) & " > " & OUTPUT_FILE & " 2>&1" Shell sExec Wait If CompressFiles And If CompressedFiles.Count Then sDir = Project.Dir &/ ".uncompressed" For I = 0 To CompressedFiles.Max sPath = sDir &/ File.SetExt(CStr(I), File.Ext(CompressedFiles[I])) Try Kill Project.Dir &/ CompressedFiles[I] Move sPath To Project.Dir &/ CompressedFiles[I] Next Shell.RmDir(sDir) Endif If Process.LastValue Then Error.Raise(Trim(File.Load(OUTPUT_FILE))) 'SetMessage(("OK")) If Not VersionFile And If Not bDoNotIncVersion Then Inc ReleaseVersion WriteProject(True, True) If Type = TYPE_LIBRARY Then sErr = InstallLibrary(sExecPath, Vendor, CStr(MajorVersion) & "." & CStr(MinorVersion)) If sErr Then FMain.ShowWarning(sErr) Endif If RunAfterMakingExec Then 'Shell Replace(RunAfterMakingExec, "$(FILE)", Shell$(sExecPath)) Wait 'FDebugInfo.ShowConsole() hTerminal = FOutput.GetTerminal() sCommand = Replace(RunAfterMakingExec, "$(FILE)", Shell$(sExecPath)) sCommand = Replace(sCommand, "$(DIR)", Shell$(Project.Dir)) sCommand = Replace(sCommand, "$(VERSION)", Shell$(FormatVersion())) sCommand = Replace(sCommand, "$(TITLE)", Shell$(Project.Title)) sCommand = Replace(sCommand, "$(NAME)", Shell$(Project.Name)) hTerminal.Print(sCommand & "\r\n") hProcess = hTerminal.Shell(sCommand) hProcess.Wait Endif UpdateTitle bOK = True Endif Exec ["rm", "-rf", Project.Dir &/ ".gambas"] Wait Move Project.Dir &/ ".gambas.save" To Project.Dir &/ ".gambas" EnableRefresh ExecTimeStamp = TimeStamp SetMessage(("Making executable...") & ("OK")) Return Not bOK Catch FMain.ShowError(("Cannot make executable.") & "\n\n" & Error.Text & "\n" & Error.Where) If bSaveDone Then Exec ["rm", "-rf", Project.Dir &/ ".gambas"] Wait Try Move Project.Dir &/ ".gambas.save" To Project.Dir &/ ".gambas" Endif EnableRefresh Return True End Public Sub ExistClass(sClass As String) As Boolean Return Tree.ExistClass(sClass) End Public Function GetClasses(Optional bFullPath As Boolean) As String[] Dim sPath As String Dim aClass As New String[] If Not Path Then Return aClass For Each sPath In Tree.Sources If IsCodeExt(sPath) Then If bFullPath Then aClass.Add(sPath) Else aClass.Add(File.BaseName(sPath)) Endif Endif Next aClass.Sort(gb.IgnoreCase + gb.Natural) 'If Not bFullPath Then aModule.Sort Return aClass End Private Sub CheckProjectVersion(sPath As String) As String Dim hFic As File Dim sLig As String hFic = Open sPath Line Input #hFic, sLig If sLig = PROJECT_MAGIC_1 Then Return "1.0" If sLig = PROJECT_MAGIC_2 Then Return "2.0" If sLig <> PROJECT_MAGIC Then Return "?" End ' Private Sub CreateConnectionDirectory() ' ' If Libraries.Exist("gb.db") Then ' Mkdir Project.Dir &/ ".connection" ' Endif ' ' End Public Sub ReadProject(Optional bConvert As Boolean) Dim hFic As File Dim sLig As String Dim iPos As Integer Dim sKey As String Dim sVal As String Dim sElt As String Dim iElt As Integer Dim aMissing As New String[] Dim sMsg As String Dim hComp As CComponent Dim bNewPackagerConfig As Boolean Dim aVer As String[] hFic = Open Path For Input Components = New String[] Libraries = New String[] ExtraReferences = New String[] LibraryPath = "" Title = "" TabSize = Settings["/DefaultTabSize", 2] Arguments = New String[][] CurrentArgument = New String[] Environment = New String[] MajorVersion = 0 MinorVersion = 0 ReleaseVersion = 1 VersionAddBranch = False 'SnapToGrid = TRUE 'ShowGrid = TRUE ControlPublic = False ModulePublic = False ShowDeprecated = False Warnings = True KeepDebugInfo = True CompressFiles = True Localize = False Description = "" Authors = "" Icon = "" Systems = New String[] Menus = New Collection Categories = New Collection MimeTypes = New String[] Groups = New Collection ExtraDependencies = New Collection ExtraFiles = New Collection ExtraDesktop = "" SameDependencies = False SameFiles = False ExtraAutoconfTest = "" Prefix = False PackageName = "" PackageVersion = 1 RuntimeVersion = "" PackageSignature = False PackageNameWithMajor = False SourcePath = "" Type = TYPE_NORMAL CreateShortcut = False RunAfterMakingExec = "" DefaultLanguage = "" VersionFile = False 'Stack = 0 'StackTrace = False UseTerminal = False RedirectStderr = False UseHttpServer = False Profiling = False ProfileIndex = 0 'BreakOnError = False Maintainer = "" Vendor = "" VendorPrefix = "" Address = "" Url = "" License = "" CreateEachDirectory = False PublishTags = New String[] PublishDependencies = New String[] PublishGambasVersion = "" PublishWebSite = "" PublishCreateMenu = False DoNotTranslate = New String[] CompressedFiles = New String[] PreviewStyleSheet = "" UnknownOptions = New Collection For Each sLig In hFic.Lines sLig = Trim(sLig) If Len(sLig) = 0 Then Continue If Left$(sLig, 1) = "#" Then Continue iPos = InStr(sLig, "=") If iPos = 0 Then Continue sKey = Lower$(Trim(Left$(sLig, iPos - 1))) sVal = Trim(Mid$(sLig, iPos + 1)) Select sKey Case "title" Title = sVal Case "startup" 'DefineStartup(sVal, True) Startup = sVal Case "component" hComp = Project.Documentation[sVal] If Not hComp Then aMissing.Add(sVal) Else If Not hComp.Hidden Then If Not Components.Exist(sVal) Then Components.Add(sVal) Endif Case "library" If bConvert Then For Each sVal In MConvert.ConvertComponent(sVal) If Project.Documentation.Exist(sVal) Then If Not Components.Exist(sVal) Then Components.Add(sVal) Else aMissing.Add(sVal) Endif Next Else If Not Libraries.Exist(sVal) Then Libraries.Add(sVal) Endif Case "librarypath" LibraryPath = sVal Case "tabsize" TabSize = CInt(sVal) Case "arguments" If Left(sVal) = "[" Then Arguments = Settings.FromString(sVal) Else Arguments = [Split(UnQuote(sVal), "\n")] Endif Case "argumentlist" Arguments = Settings.FromString(sVal) Case "currentargument" If Left(sVal) = "[" Then CurrentArgument = Settings.FromString(sVal) Else Try CurrentArgument = Arguments[CInt(sVal)] Endif Case "currentargumentlist" CurrentArgument = Settings.FromString(sVal) Case "environment" Environment = Split(UnQuote(sVal), "\n") Case "version" iPos = InStr(sVal, " ") If iPos Then sVal = Left(sVal, iPos - 1) aVer = Split(sVal, ".") Try MajorVersion = Val(aVer[0]) Try MinorVersion = Val(aVer[1]) Try ReleaseVersion = Val(aVer[2]) Case "versionfile" VersionFile = CInt(sVal) <> 0 Case "versionaddbranch" VersionAddBranch = CInt(sVal) <> 0 Case "localize", "translate" Localize = CInt(sVal) <> 0 Case "language" DefaultLanguage = sVal Case "keepdebuginfo" KeepDebugInfo = CInt(sVal) <> 0 Case "compressfiles" CompressFiles = CInt(sVal) <> 0 Case "createshortcut" CreateShortcut = CInt(sVal) <> 0 Case "runafter" RunAfterMakingExec = sVal Case "makecomponent" Type = If(CInt(sVal) <> 0, TYPE_COMPONENT, TYPE_NORMAL) 'CreateComponent = Val(sVal) <> 0 Case "type" Select LCase(sVal) Case "library" Type = TYPE_LIBRARY Case "component" Type = TYPE_COMPONENT End Select Case "controlpublic" ControlPublic = CInt(sVal) <> 0 Case "modulepublic" ModulePublic = CInt(sVal) <> 0 Case "showdeprecated" ShowDeprecated = CInt(sVal) <> 0 Case "warnings" Warnings = CInt(sVal) <> 0 Case "description" Description = UnQuote(sVal) Case "authors" Authors = UnQuote(sVal) Case "icon" Icon = sVal Case "packager" bNewPackagerConfig = CInt(sVal) <> 0 Case "systems" Systems = Split(sVal, ",") Case "menus" If bNewPackagerConfig Then iPos = InStr(sVal, ":") Menus[Left$(sVal, iPos - 1)] = UnQuote(Mid$(sVal, iPos + 1)) Else iElt = 0 For Each sElt In Split(sVal, ",") If iElt >= Systems.Count Then Break Menus[Systems[iElt]] = sElt Inc iElt Next Endif Case "categories" If bNewPackagerConfig Then iPos = InStr(sVal, ":") Categories[Left$(sVal, iPos - 1)] = UnQuote(Mid$(sVal, iPos + 1)) Else iElt = 0 For Each sElt In Split(sVal, ",") If iElt >= Systems.Count Then Break Categories[Systems[iElt]] = sElt Inc iElt Next Endif Case "groups" If bNewPackagerConfig Then iPos = InStr(sVal, ":") Groups[Left$(sVal, iPos - 1)] = UnQuote(Mid$(sVal, iPos + 1)) Else iElt = 0 For Each sElt In Split(sVal, ",") If iElt >= Systems.Count Then Break Groups[Systems[iElt]] = sElt Inc iElt Next Endif Case "extradependencies" If bNewPackagerConfig Then iPos = InStr(sVal, ":") ExtraDependencies[Left$(sVal, iPos - 1)] = UnQuote(Mid$(sVal, iPos + 1)) Else iElt = 0 For Each sElt In Split(sVal, ",") If iElt >= Systems.Count Then Break sElt = Replace(sElt, ";", "\n") sElt = Replace(sElt, ":", "\t") ExtraDependencies[Systems[iElt]] = sElt Inc iElt Next Endif Case "extrafiles" If bNewPackagerConfig Then iPos = InStr(sVal, ":") ExtraFiles[Left$(sVal, iPos - 1)] = UnQuote(Mid$(sVal, iPos + 1)) Else iElt = 0 For Each sElt In Split(sVal, ",") If iElt >= Systems.Count Then Break sElt = Replace(sElt, ";", "\n") sElt = Replace(sElt, ":", "\t") ExtraFiles[Systems[iElt]] = sElt Inc iElt Next Endif Case "extraautoconftest" ExtraAutoconfTest = UnQuote(sVal) Case "extradesktop" ExtraDesktop = UnQuote(sVal) Case "prefix" Prefix = Val(sVal) Case "packagename" PackageName = sVal Case "packageversion" Try PackageVersion = CInt(sVal) Case "packagesignature" PackageSignature = CInt(sVal) Case "packagenamewithmajor" PackageNameWithMajor = CInt(sVal) <> 0 Case "maintainer" Maintainer = sVal Case "vendor" Vendor = sVal Case "vendorprefix" VendorPrefix = sVal Case "runtimeversion" RuntimeVersion = UnQuote(sVal) Case "address" Address = sVal Case "url" Url = sVal Case "license" License = sVal Case "sourcepath" SourcePath = sVal Case "useterminal" UseTerminal = CInt(sVal) <> 0 Case "redirectstderr" RedirectStderr = CInt(sVal) <> 0 Case "usehttpserver" UseHttpServer = CInt(sVal) <> 0 Case "profiling" Profiling = CInt(sVal) <> 0 ' Case "breakonerror" ' BreakOnError = CInt(sVal) <> 0 ' Case "createeachdirectory" CreateEachDirectory = CInt(sVal) <> 0 Case "samedependencies" SameDependencies = CInt(sVal) <> 0 Case "samefiles" SameFiles = CInt(sVal) <> 0 Case "mimetypes" MimeTypes = Split(sVal, ",", Chr$(34), True) Case "execpath" OldExecPath = sVal Case "tags" PublishTags = Split(sVal) Case "gambasversion" PublishGambasVersion = sVal Case "dependencies" PublishDependencies = Split(sVal) Case "website" PublishWebSite = sVal Case "createmenu" PublishCreateMenu = CInt(sVal) <> 0 Case "donottranslate" DoNotTranslate = Split(sVal, ",", Chr$(34), True) Case "compressedfiles", "compressfile" CompressedFiles = Split(sVal, ",", Chr$(34), True) Case "reference" If Not ExtraReferences.Exist(sVal) Then ExtraReferences.Add(sVal) Case "previewstylesheet" PreviewStyleSheet = sVal Case Else UnknownOptions[sKey] = sVal End Select Next Close hFic VersionFile = Not GetVersion(True) 'If JustUpdateVersion Then Return If aMissing.Count Then sMsg = Subst(("Some components are missing: &1"), aMissing.Join(", ")) If Message.Error(sMsg, ("Continue"), ("Cancel")) = 2 Then Error.Raise("") Endif Endif If Not $bTesting Then FMain.UpdateTranslate RefreshComponents(True) UpdateLibraries(Libraries) 'CreateConnectionDirectory End Public Sub WriteProjectTranslation() Dim sPath As String Dim hFic As File sPath = Project.Dir &/ ".lang/#project.pot" Try Kill sPath If Localize Then CreateLangDirectory hFic = Open sPath For Create Print #hFic, "# "; Path Print #hFic, CTranslation.SubstHeader(File.Load("pot-header.txt")) If Title Then Print #hFic, "#: .project:1" Print #hFic, "msgid \""; Escape(Title); "\"" Print #hFic, "msgstr \"\"\n" Endif If Description Then Print #hFic, "#: .project:2" Print #hFic, "msgid \""; Escape(Description); "\"" Print #hFic, "msgstr \"\"\n" Endif Close #hFic Endif End Public Sub WriteProject(Optional bComponentDoNotChange As Boolean, Optional bMakeShortcut As Boolean) Dim hFile As File Dim sSys As String Dim sPath As String Dim sVal As String Dim hComp As CComponent Dim sVer As String Dim sBranch As String If Project.ReadOnly Then Return 'If Not JustUpdateVersion Then If Type ' If bMakeShortcut Then ' If Project.CreateShortcut Then ' InstallComponent ' Else ' UninstallComponent ' Endif ' Endif Else MakeShortcut(bMakeShortcut) If Not bComponentDoNotChange Then RefreshComponents Endif 'Endif ' Creates the .project file sPath = Path Try Kill sPath & ".tmp" hFile = Open sPath & ".tmp" For Create Print #hFile, PROJECT_MAGIC 'Print #hFic, "# Compiled with Gambas "; FullVersion 'PRINT #hFic, "Project="; Name If Title Then Print #hFile, "Title="; Title If Startup Then Print #hFile, "Startup="; Startup 'If Stack Then Print #hFic, "Stack="; Stack 'If StackTrace Then Print #hFic, "StackTrace=1" If UseTerminal Then Print #hFile, "UseTerminal=1" If RedirectStderr Then Print #hFile, "RedirectStderr=1" If UseHttpServer Then Print #hFile, "UseHttpServer=1" If Profiling Then Print #hFile, "Profiling=1" 'If BreakOnError Then Print #hFic, "BreakOnError=1" If Icon Then Print #hFile, "Icon="; Icon GetVersion() sVer = FormatVersion() If VersionAddBranch Then VersionControl.GetBranches(ByRef sBranch) If sBranch Then sVer &= " (" & sBranch & ")" Endif Print #hFile, "Version="; sVer If VersionFile Then Print #hFile, "VersionFile=1" If VersionAddBranch Then Print #hFile, "VersionAddBranch=1" For Each hComp In Documentation.Components If Components.Find(hComp.Key) >= 0 Then Print #hFile, "Component="; hComp.Key Endif Next If LibraryPath Then Print #hFile, "LibraryPath="; LibraryPath For Each sVal In Libraries Print #hFile, "Library="; sVal Next If Description Then Print #hFile, "Description="; Quote(Description) If Authors Then Print #hFile, "Authors="; Quote(Authors) If Arguments.Count Then Print #hFile, "Arguments="; Settings.ToString(Arguments) If CurrentArgument And If CurrentArgument.Count Then Print #hFile, "CurrentArgumentList="; Settings.ToString(CurrentArgument) Endif If Environment.Count Then Print #hFile, "Environment="; Quote(Environment.Join("\n")) Print #hFile, "TabSize="; CStr(TabSize) If Localize Then Print #hFile, "Translate=1" If DefaultLanguage Then Print #hFile, "Language="; DefaultLanguage If Not KeepDebugInfo Then Print #hFile, "KeepDebugInfo=0" If Not CompressFiles Then Print #hFile, "CompressFiles=0" If CreateShortcut Then Print #hFile, "CreateShortcut=1" If RunAfterMakingExec Then Print #hFile, "RunAfter="; RunAfterMakingExec Select Case Type Case TYPE_LIBRARY Print #hFile, "Type=Library" Case TYPE_COMPONENT Print #hFile, "Type=Component" End Select If ControlPublic Then Print #hFile, "ControlPublic=1" If ModulePublic Then Print #hFile, "ModulePublic=1" If ShowDeprecated Then Print #hFile, "ShowDeprecated=1" If Not Warnings Then Print #hFile, "Warnings=0" If SourcePath Then Print #hFile, "SourcePath="; SourcePath If Maintainer Then Print #hFile, "Maintainer="; Maintainer If Vendor Then Print #hFile, "Vendor="; Vendor If VendorPrefix Then Print #hFile, "VendorPrefix="; VendorPrefix If Address Then Print #hFile, "Address="; Address If Url And If Url <> DEFAULT_URL Then Print #hFile, "Url="; Url If License Then Print #hFile, "License="; License If Prefix Then Print #hFile, "Prefix=1" If PackageName Then Print #hFile, "PackageName="; PackageName If PackageVersion > 1 Then Print #hFile, "PackageVersion="; PackageVersion If PackageSignature Then Print #hFile, "PackageSignature=1" If PackageNameWithMajor Then Print #hFile, "PackageNameWithMajor=1" If CreateEachDirectory Then Print #hFile, "CreateEachDirectory=1" If MimeTypes.Count Then Print #hFile, "MimeTypes="; MimeTypes.Join(",", Chr$(34)) If ExtraDesktop Then Print #hFile, "ExtraDesktop=" & Quote(ExtraDesktop) If RuntimeVersion Then Print #hFile, "RuntimeVersion=" & Quote(RuntimeVersion) Print #hFile, "Packager=1" If Systems.Count Then Print #hFile, "Systems="; Systems.Join(",") If SameDependencies Then Print #hFile, "SameDependencies=1" If SameFiles Then Print #hFile, "SameFiles=1" If ExtraAutoconfTest Then Print #hFile, "ExtraAutoconfTest=" & Quote(ExtraAutoconfTest) For Each sSys In $aSystems If Menus[sSys] Then Print #hFile, "Menus="; sSys; ":"; Quote(Menus[sSys]) If Categories[sSys] Then Print #hFile, "Categories="; sSys; ":"; Quote(Categories[sSys]) If Groups[sSys] Then Print #hFile, "Groups="; sSys; ":"; Quote(Groups[sSys]) If ExtraDependencies[sSys] Then Print #hFile, "ExtraDependencies="; sSys; ":"; Quote(ExtraDependencies[sSys]) If ExtraFiles[sSys] Then Print #hFile, "ExtraFiles="; sSys; ":"; Quote(ExtraFiles[sSys]) Next sSys = Package.ALL_TARGETS If ExtraDependencies[sSys] Then Print #hFile, "ExtraDependencies="; sSys; ":"; Quote(ExtraDependencies[sSys]) If ExtraFiles[sSys] Then Print #hFile, "ExtraFiles="; sSys; ":"; Quote(ExtraFiles[sSys]) If PublishTags And If PublishTags.Count Then Print #hFile, "Tags="; PublishTags.Join(",") If PublishDependencies And If PublishDependencies.Count Then Print #hFile, "Dependencies="; PublishDependencies.Join(",") If PublishGambasVersion Then Print #hFile, "GambasVersion="; PublishGambasVersion If PublishWebSite Then Print #hFile, "WebSite="; PublishWebSite If PublishCreateMenu Then Print #hFile, "CreateMenu=1" If DoNotTranslate.Count Then Print #hFile, "DoNotTranslate="; DoNotTranslate.Join(",", Chr$(34)) If CompressedFiles.Count Then Print #hFile, "CompressedFiles="; CompressedFiles.Join(",", Chr$(34)) If PreviewStyleSheet Then Print #hFile, "PreviewStyleSheet="; PreviewStyleSheet If ExtraReferences Then For Each sVal In ExtraReferences Print #hFile, "Reference="; sVal Next Endif For Each sVal In UnknownOptions Print #hFile, UnknownOptions.Key; "="; sVal Next Close #hFile Try Kill sPath Move sPath & ".tmp" To sPath 'If JustUpdateVersion Then Return WriteProjectTranslation UpdateComponentFile FMain.UpdateTranslate FMain.UpdateMenu UpdateTitle 'CreateConnectionDirectory Catch FMain.ShowError(("Cannot write project file.") & "\n\n" & Error.Text) End Public Sub GetExecPath() As String Dim sExecPath As String = Config["Executable/Path"] If Not sExecPath Then sExecPath = OldExecPath If Not sExecPath Then sExecPath = Project.Name & ".gambas" If Left(sExecPath) <> "/" Then sExecPath = Project.Dir &/ sExecPath Endif If Not Exist(File.Dir(sExecPath)) Then sExecPath = Project.Dir &/ File.Name(sExecPath) Return sExecPath End Public Sub MakeShortcut(Optional bForce As Boolean) Dim sDesktopPath As String Dim sPath As String Dim sShortcut As String If Not CreateShortcut Then Return sDesktopPath = Desktop.Path &/ Name & ".desktop" If Not bForce Then If Not Exist(sDesktopPath) Then Return Endif sShortcut = File.Load("shortcut.desktop") sShortcut = Replace(sShortcut, "$(NAME)", If(Title, Title, Name)) sShortcut = Replace(sShortcut, "$(EXEC)", GetExecPath()) sPath = "" If Icon And If Exist(Project.Dir &/ Icon) Then sPath = Project.Dir &/ Icon Endif sShortcut = Replace(sShortcut, "$(ICON)", sPath) sShortcut = Replace(sShortcut, "$(TERMINAL)", If(CModule["form"].Used, "false", "true")) File.Save(sDesktopPath, sShortcut) Chmod sDesktopPath To "rwxr-xr-x" Catch FMain.ShowError(("Unable to create desktop shortcut.") & "\n\n" & Error.Text & "\n" & Error.Where) End ' Private Sub MakeLink(sSrc As String, sDst As String) ' ' If Not Exist(sDst) Then Link sSrc To sDst ' ' End ' Private Sub RefreshForComponent() ' ' Dim hForm As Object ' ' RefreshComponents(True) ' ' FFormStack.RefreshAll(, True) ' ' For Each hForm In Files ' If IsForm(hForm) And If hForm.Visible Then ' hForm.RefreshForComponent ' Endif ' Next ' ' End ' Public Sub InstallComponent() ' ' Dim sDir As String = Component.UserPath ' Dim sClass As String ' Dim sIcon As String ' ' MakeDir(sDir) ' ' MakeLink(Project.ExecPath, sDir &/ Name & ".gambas") ' MakeLink(Project.Dir &/ ".component", sDir &/ Name & ".component") ' ' sDir = File.Dir(File.Dir(sDir)) &/ "share/gambas" & System.Version & "/info" ' MakeDir(sDir) ' ' MakeLink(Project.Dir &/ ".info", sDir &/ Name & ".info") ' MakeLink(Project.Dir &/ ".list", sDir &/ Name & ".list") ' ' sDir = File.Dir(sDir) &/ "control" &/ Name ' ' For Each sClass In GetClasses(True) ' If Not IsExported(sClass) Then Continue ' sClass = LCase(File.BaseName(sClass)) ' sIcon = Project.Dir &/ ".hidden/control" &/ sClass & ".png" ' If Exist(sIcon) Then ' MakeDir(sDir) ' MakeLink(sIcon, sDir &/ sClass & ".png") ' Endif ' Next ' ' If Not CComponent.All.Exist(Name) Then ' CComponent.FullReset ' Endif ' If Not Components.Exist(Name) Then ' Components.Add(Name) ' Endif ' RefreshForComponent ' ' Catch ' ' FMain.ShowError(("Unable to install component.") & "\n\n" & Error.Text & "\n" & Error.Where) ' ' End ' ' Public Sub UninstallComponent() ' ' Dim sDir As String = Component.UserPath ' Dim bRefresh As Boolean ' ' 'MakeDir(sDir) ' ' bRefresh = Exist(sDir &/ Name & ".component") ' ' Try Kill sDir &/ Name & ".gambas" ' Try Kill sDir &/ Name & ".component" ' ' sDir = File.Dir(File.Dir(sDir)) &/ "share/gambas" & System.Version & "/info" ' ' Try Kill sDir &/ Name & ".info" ' Try Kill sDir &/ Name & ".list" ' ' sDir = File.Dir(sDir) &/ "control" &/ Name ' Exec ["rm", "-rf", sDir] Wait ' ' If bRefresh Then ' If CComponent.All.Exist(Name) Then ' CComponent.FullReset ' Endif ' If Not CComponent.All.Exist(Name) Then ' If Components.Exist(Name) Then ' Components.Remove(Components.Find(Name)) ' Endif ' RefreshForComponent ' Endif ' Endif ' ' Catch ' ' FMain.ShowError(("Unable to uninstall component.") & "\n\n" & Error.Text & "\n" & Error.Where) ' ' End Public Function GetNextEditor(sKey As String) As String Dim sFirst As String Dim sFile As String Dim bNext As Boolean If Not sKey Then bNext = True For Each sFile In GetClasses(True) If bNext Then Return sFile If Not sFirst Then sFirst = sFile Endif If sFile = sKey Then bNext = True Endif Next If bNext Then Return sFirst End Public Function GetPreviousEditor(sKey As String) As String Dim sLast As String Dim sFile As String For Each sFile In GetClasses(True) If sFile = sKey Then If sLast Then Return sLast Endif Endif sLast = sFile Next Return sLast End Public Sub SetMessage(sMsg As String, Optional bAdd As Boolean) FDebugButton.SetMessage(sMsg, bAdd) End Public Sub UnloadFile(sPath As String) Dim hForm As Object If Not Exist(sPath) Then Return hForm = Files[sPath] If hForm Then hForm.Delete Files[sPath] = Null Endif End Public Sub DeleteFile(sPath As String) Dim sExt As String Dim bLink As Boolean Dim bProject As Boolean Dim sName As String Dim hModule As CModule Dim sPathPot As String Dim bReloadComponent As Boolean Dim bConnection As Boolean If Not Exist(sPath) Then Return bLink = Stat(sPath).Type = gb.Link bProject = IsSourcePath(sPath) bConnection = IsConnectionPath(sPath) If bProject Then bReloadComponent = IsExported(sPath) UnloadFile(sPath) If Not bLink Then Try Kill sPath & "~" Try Move sPath To sPath & "~" Else Try Kill sPath Endif If IsProjectPath(sPath) Then VersionControl.RemoveFile(sPath) If bProject Then sName = File.BaseName(sPath) sExt = File.Ext(sPath) Try Kill Project.Dir &/ ".gambas" &/ UCase(sName) sPathPot = Project.Dir &/ ".lang" &/ sName & ".pot" If Exist(sPathPot) Then Try Kill sPathPot VersionControl.RemoveFile(sPathPot) Endif DeleteFile(File.Dir(sPath) &/ File.BaseName(sPath) & ".class") For Each hModule In CModule.All DeleteFile(File.Dir(sPath) &/ sName & "." & hModule.Key) Next Tree.Sources.Remove(File.Name(sPath)) OnRefreshSources If sName = Startup Then DefineStartup("") If File.Ext(sPath) = "test" Then MTest.UpdateSuites If bReloadComponent Then Compile(True,, True) Endif If bConnection And If File.Ext(sPath) = "connection" Then sPathPot = File.SetExt(sPath, "template") If Exist(sPathPot) Then VersionControl.RemoveFile(sPathPot) Try Kill sPathPot Endif Endif Tree.RefreshKey(sPath) Inc Project.TimeStamp End Public Sub DeleteDir(sDir As String, Optional bNoVerCtrl As Boolean) Dim sFile As String For Each sFile In Dir(sDir, "*~") Try Kill sDir &/ sFile Next If Not bNoVerCtrl And If VersionControl.Enabled Then VersionControl.RemoveDir(sDir) If Exist(sDir) Then Try Rmdir sDir If Error Then Message.Warning(("The directory will be removed at the next commit.")) Endif Else Rmdir sDir Endif Tree.RefreshKey(sDir) Inc Project.TimeStamp End Private Function CheckStartupClass() As Boolean If Startup Then Return FMain.ShowWarning(("You must define a startup class or form!")) Return True End Public Function CheckFileName(sName As String, Optional sDir As String) As String Dim iInd As Integer If Not sName Then Goto VOID_NAME If String.Left$(sName) = "." Then iInd = 1 Goto BAD_START Endif For iInd = 1 To String.Len(sName) If InStr(FILE_FORBIDDEN_CAR, String.Mid$(sName, iInd, 1)) Then Goto BAD_CHAR Next If Len(sDir) Then If Exist(sDir &/ sName) Then Goto ALREADY_EXIST Endif Return VOID_NAME: Return ("Please type a name.") BAD_CHAR: Return ("This name contains a forbidden character:") & " [ " & String.Mid$(sName, iInd, 1) & " ]" BAD_START: Return ("The name cannot begins with a dot.") ALREADY_EXIST: Return ("This name is already used. Choose another one.") End Public Function CheckClassName(sName As String, Optional bCheckNotExist As Boolean) As String Dim iInd As Integer Dim sCar As String If Not sName Then Goto VOID_NAME If Not IsAscii(sName) Then Goto BAD_CHAR iInd = 1 If InStr(CLASS_AUTH_FIRST_CAR, LCase(Left(sName))) = 0 Then Goto BAD_CHAR For iInd = 2 To Len(sName) sCar = LCase(Mid$(sName, iInd, 1)) If Project.Type And If InStr(CLASS_AUTH_CAR_COMPONENT, sCar) Then Continue If InStr(CLASS_AUTH_CAR & "_", sCar) = 0 Then Goto BAD_CHAR Next If bCheckNotExist Then If Project.Exist(sName) Then Goto ALREADY_EXIST Endif Return VOID_NAME: Return ("Please type a name.") BAD_CHAR: sCar = String.Mid$(sName, iInd, 1) If sCar = " " Then sCar = ("Space") Return ("This name contains a forbidden character:") & " [ " & sCar & " ]" & "\n\n" & ("A class name must begin with a letter or an underscore, followed by any letter or digit.") ALREADY_EXIST: Return ("This name is already used. Choose another one.") End ' Private Sub RenamePathCollection(cCol As Collection, sOld As String, sNew As String) ' ' Dim aRename As New String[] ' Dim vVal As Variant ' Dim sKey As String ' ' For Each vVal In cCol ' sKey = cCol.Key ' If sKey = sOld Or If sKey Begins sOld &/ "/" Then aRename.Add(sKey) ' Next ' ' For Each sKey In aRename ' vVal = cCol[sKey] ' cCol[sKey] = Null ' If sKey <> sOld Then ' sKey = sNew &/ Mid$(sKey, Len(sOld) + 1) ' Endif ' cCol[sNew] = vVal ' Next ' ' End Private Function RenameOneFile(sDir As String, sName As String, sNewName As String, Optional sExt As String) As String Dim sPath As String Dim sNewPath As String sPath = sDir &/ sName If sExt Then sPath = sPath & "." & sExt If Not Exist(sPath) Then Return sNewPath = sDir &/ sNewName If sExt Then sNewPath = sNewPath & "." & sExt If Exist(sNewPath) Then Error.Raise(("Destination already exists.")) Endif If IsDir(sPath) Then If VersionControl.Enabled Then VersionControl.MoveDir(sPath, sNewPath) 'If Exist(sPath) Then LockedPaths[sPath] = True Else Move sPath To sNewPath Endif Else If Stat(sPath).Type = gb.Link Then If VersionControl.NeedMove() Then Move sPath To sNewPath VersionControl.MoveFile(sPath, sNewPath) Else If VersionControl.NeedMove() Then Copy sPath To sNewPath VersionControl.MoveFile(sPath, sNewPath) Try Kill sPath Endif If sExt Then Try Kill Project.Dir &/ ".gambas" &/ UCase(sName) If sExt = "test" Then MTest.UpdateSuites 'If Not Error Then bRecompile = True 'Try Kill Project.Dir &/ ".list" 'Try Kill Project.Dir &/ ".info" 'Debug sDir &/ ".gambas" &/ UCase(sName); ": "; Exist(sDir &/ ".gambas" &/ UCase(sName)) Endif RenamePaths(sPath, sNewPath) If sExt And If IsExported(sNewPath) Then UpdateAllForms(sName, sNewName) Endif Return sNewPath End Public Sub GetClassesOnly() As String[] Dim sPath As String Dim sFile As String Dim aClass As New String[] Dim sClass As String For Each sPath In Tree.Sources sFile = File.Name(sPath) If File.Ext(sFile) <> "class" Then Continue sClass = File.BaseName(sFile) If ExistForm(sClass) Then Continue aClass.Add(sClass) Next Return aClass.Sort(gb.Natural) End ' Private Sub RefreshInheritance() ' ' Dim sKey As String ' ' $aInheritance.Clear ' ' For Each sKey In $cSourceDir ' If Not File.Ext(sKey) = "class" Then Continue ' Try ProjectTree[sKey].Delete ' $aInheritance.Add(sKey) ' Next ' ' DoRefreshAfter ' ' End Public Sub RefreshKey(sKey As String, Optional sOld As String) Tree.RefreshKey(sKey, sOld) End Public Sub RenameFile(sPath As String, sNewName As String) As Boolean Dim sName As String Dim sExt As String Dim sDir As String Dim sNewPath As String Dim sMsg As String Dim sFamily As String Dim bIsDir As Boolean sDir = File.Dir(sPath) sExt = File.Ext(sPath) bIsDir = IsDir(sPath) If Not bIsDir And If Project.IsSourcePath(sPath) Then sName = File.BaseName(sPath) If sName = sNewName Then Return If UCase(sName) <> UCase(sNewName) Then sMsg = CheckClassName(sNewName, True) If sMsg Then Error.Raise(sMsg) Endif If sName = Startup Then Startup = sNewName WriteProject(True) Tree.DefineStartup(Startup) Endif sNewPath = RenameOneFile(sDir, sName, sNewName, sExt) If CFamily.List.Exist(sExt) Then RenameOneFile(sDir, sName, sNewName, "class") Else If sExt = "class" Then For Each sFamily In CFamily.List If Exist(sDir &/ sName & "." & sFamily) Then RenameOneFile(sDir, sName, sNewName, sFamily) Next Endif Else If Project.IsConnectionPath(sPath) Then sNewName = File.SetExt(sNewName, ".connection") sName = File.Name(sPath) If sName = sNewName Then Return sMsg = CheckFileName(sNewName) If sMsg Then Error.Raise(sMsg) sNewPath = RenameOneFile(sDir, sName, sNewName) Endif If Not IsFake() Then If bIsDir Then Refresh Else RefreshKey(sNewPath, sPath) Endif 'AddFile(File.Dir(sNewPath), File.Name(sNewPath), TRUE) 'IF IsDir(sNewPath) THEN AddDir(sNewPath) Try ProjectTree[sNewPath].Selected = True Try ProjectTree[sNewPath].EnsureVisible Endif Inc Project.TimeStamp Catch sMsg = Error.Text '& "\n" & Error.Backtrace.Join(" ") RefreshKey(sPath) FMain.ShowError(Subst(("Unable to rename '&1'") & "\n\n" & sMsg, File.Name(sPath)), sPath) Return True End Public Function Exist(sName As String) As Boolean Return Project.GetClasses().Find(sName, gb.IgnoreCase) >= 0 End Private Function LockIt() As Boolean If Application.Busy Then Return True Inc Application.Busy 'PRINT "Lock" End Private Sub UnLockIt() If Application.Busy < 1 Then Return Dec Application.Busy End ' Private Sub LoadRecent() ' ' Dim nRecent As Integer ' Dim hMenu As Menu ' Dim iInd As Integer ' Dim sPath As String ' ' nRecent = Settings["/Recent/Count", 0] ' ' Recent.Clear ' RecentDate.Clear ' ' For iInd = 1 To nRecent ' sPath = Settings["/Recent/File[" & CStr(iInd) & "]"] ' If sPath Then ' If Exist(sPath) Then ' Recent.Add(sPath) ' RecentDate.Add(CDate(Settings["/Recent/Date[" & CStr(iInd) & "]"])) ' If Recent.Count >= DEFAULT_MAX_RECENT Then Break ' Endif ' Endif ' Next ' ' End ' Private Sub AddRecent(sPath As String) ' ' Dim iInd As Integer ' Dim nMax As Integer ' ' If Right$(sPath) = "/" Then sPath = Left$(sPath, -1) ' ' 'sPath = "(" & File.BaseName(sPath) & ") " & File.Dir(sPath) ' ' While iInd < Recent.Count ' ' If Recent[iInd] = sPath Then ' Recent.Remove(iInd) ' RecentDate.Remove(iInd) ' Else ' Inc iind ' Endif ' ' Wend ' ' Recent.Add(sPath, 0) ' RecentDate.Add(CStr(Date(Now)), 0) ' ' 'nMax = Settings["/Recent/Max", DEFAULT_MAX_RECENT] ' While Recent.Count > DEFAULT_MAX_RECENT ' Recent.Remove(Recent.Max) ' RecentDate.Remove(RecentDate.Max) ' Wend ' ' SaveRecent ' ' End ' Private Sub SaveRecent() ' ' Dim iInd As Integer ' ' Settings.Clear("/Recent") ' ' Settings["/Recent/Count"] = Recent.Count ' ' For iInd = 0 To Recent.Count - 1 ' Settings["/Recent/File[" & CStr(iInd + 1) & "]"] = Recent[iInd] ' Settings["/Recent/Date[" & CStr(iInd + 1) & "]"] = CStr(RecentDate[iInd]) ' Next ' ' Settings.Save ' ' End ' Public Sub ClearRecent() ' ' Recent.Clear ' RecentDate.Clear ' SaveRecent ' ' End Public Function CheckProjectName(sName As String, Optional sDir As String) As String Dim iInd As Integer Dim sCar As String sName = Trim(sName) If Not sName Then Return ("Please type a project name.") Endif For iInd = 1 To Len(sName) sCar = Mid$(sName, iInd, 1) If iInd = 1 Then If sCar = "." Then Return ("The project name cannot begin with a dot.") Endif If Asc(sCar) > 127 Then Return ("Non-ASCII characters are forbidden in a project name.") If InStr(" ?*/<>(){}\\", sCar) Then Return ("The following characters are forbidden in a project name:") & "\n\n? * / \\ " & ("SPACE") & " ( ) < > { }" Next If sDir Then sDir &/= sName If Exist(sDir &/ PROJECT_FILE) Then Return ("This project already exists.") Else If Exist(sDir) Then If IsDir(sDir) Then Return Subst(("The project directory already exists."), sDir) Else Return Subst(("The project directory cannot be created because a file with the same name already exists."), sDir) Endif Endif Endif End Public Sub MakeSourcePackageFromTo(sFrom As String, sPath As String, Optional bFoolGMail As Boolean) As Boolean Dim sCmd As String Dim sOpt As String Dim sIgnore As String Dim sTemp As String Dim aIgnore As String[] Dim sCmdName As String Dim sOutput As String aIgnore = [File.Name(GetExecPath()), ".gambas/*", ".settings", ".info", ".list", "*~", "core", "core.*", "vgcore*.*", ".lock", ".lang/*.pot", ".lang/.ot", ".xvpics", ".bzr", ".bzrignore", ".hg", ".hgignore", ".hgtags", "hgrc", ".git", ".gitignore", ".svn", "CVS", "CVSROOT"] Inc Application.Busy sTemp = Temp$() 'File.SetExt(Temp$(), File.Ext(sPath)) sCmd = "cd " & Shell$(File.Dir(sFrom)) & " && " Select Case sPath Case Like "*.zip" sCmdName = "zip" sCmd &= "zip" For Each sIgnore In aIgnore sCmd &= " -x " & Shell$(sIgnore) Next sCmd &= " -q -9 -r " & Shell$(sTemp) & " " & Shell$(File.Name(sFrom)) Case Like "*.tar.*" sCmdName = "tar" If sPath Ends ".gz" Then sOpt = "z" Else If sPath Ends ".bz2" Then sOpt = "j" Else If sPath Ends ".xz" Then sOpt = "J" Else Goto UNSUPPORTED Endif sCmd &= "tar cfvh" & sOpt & " " & Shell$(sTemp) For Each sIgnore In aIgnore sCmd &= " --exclude=" & Shell$(sIgnore) Next sCmd &= " " & Shell$(File.Name(sFrom)) Case Else Goto UNSUPPORTED End Select Shell sCmd To sOutput If Not Exist(sTemp) Then Error.Raise(Subst$(("The '&1' command has failed.") & "\n\n" & Html(Trim(sOutput)) & "", sCmdName)) If bFoolGMail Then sTemp = Util.CompressForGmail(sTemp) sPath &= ".gmail.txt" Endif Try Kill sPath Copy sTemp To sPath Try Kill sTemp Dec Application.Busy Return UNSUPPORTED: Dec Application.Busy Message.Warning(("Unsupported source archive format.")) Return True Catch Dec Application.Busy Message.Error(("Unable to create source archive.") & "\n\n" & Error.Text) Return True End Public Sub MakeSourcePackageTo(sPath As String, Optional bFoolGMail As Boolean) As Boolean Save WriteProject(True) Return MakeSourcePackageFromTo(Project.Dir, sPath, bFoolGMail) End Public Sub GetDefaultArchiveBaseName() As String Return Name & "-" & FormatVersion(True) End Public Sub MakeSourceArchive() Dim sDir As String = SourcePath Dim sPath As String If Not sDir Then sDir = System.User.Home FMakeSourceArchive.Path = sDir &/ GetDefaultArchiveBaseName() If FMakeSourceArchive.Run() Then Return sPath = FMakeSourceArchive.Path sDir = File.Dir(sPath) If sDir = User.Home Then sDir = "" If sDir <> SourcePath Then SourcePath = sDir Project.WriteProject Endif SetMessage(("Create source package") & "...") If Not MakeSourcePackageTo(sPath, FMakeSourceArchive.FoolGMail) Then SetMessage(("OK"), True) Endif End Public Sub RefreshForm() Dim hFile As Object For Each hFile In Project.Files If Object.Type(hFile) = "FForm" Then hFile.Refresh Endif Next End Public Sub RefreshEditor() Dim hFile As Object For Each hFile In Project.Files If Project.IsEditor(hFile) Then hFile.Refresh Endif Next End Public Sub RefreshComponents(Optional bForce As Boolean) Dim sLib As String Dim aLib As New String[] Dim hComp As CComponent Dim bChange As Boolean ' Sort components ' For Each hComp In Documentation.Components ' If Components.Find(hComp.Key) >= 0 Then ' aLib.Add(hComp.Key) ' Endif ' Next ' Components = aLib.Copy() aLib = Components.Copy() For Each sLib In ExtraReferences aLib.Add(sLib) Next For Each sLib In Libraries aLib.Add(File.Name(sLib)) Next bChange = aLib.Join() <> $aOldRefreshComponents.Join() If bForce Or bChange Then Documentation.Reset For Each sLib In Components hComp = Documentation[sLib] If hComp Then hComp.Load() Next For Each sLib In ExtraReferences Documentation.AddLibrary(sLib) Next For Each sLib In Libraries Documentation.AddLibrary(sLib) Next If Not $bTesting Then Documentation.LoadProjectComponent FToolBox.RefreshToolbar(bForce) FCompletion.OnRefreshComponents FMain.OnRefreshComponents FProperty.RefreshAll Tree.RefreshInfo Endif If Components.Exist("gb.db") And If Not Exist(Project.Dir &/ ".connection") Then InsertDirectory(Project.Dir &/ ".connection") If Components.Exist("gb.web") And If Not Exist(Project.Dir &/ ".public") Then InsertDirectory(Project.Dir &/ ".public") If bChange Then ReloadAll(True) $aOldRefreshComponents = aLib 'HasTest = Components.Exist("gb.test") Endif End Public Function IsSourceDir(sDir As String) As Boolean Return sDir Begins SourceDir End Public Function IsSourcePath(sPath As String, Optional bAllowDir As Boolean) As Boolean Dim sExt As String If IsDir(sPath) And If Not bAllowDir Then Return If SourceDir <> {Dir} Then Return sPath & "/" Begins SourceDir &/ "/" If Left(sPath) = "/" Then If File.Dir(sPath) <> SourceDir Then Return Endif sExt = File.Ext(sPath) If CModule.Ext.Exist(sExt) Then Return True End Public Function IsFormExt(sPath As String) As Boolean If File.Ext(sPath) = "class" Then Return Return Exist(File.SetExt(sPath, "class")) End Public Function IsFormPath(sPath As String) As Boolean If Not IsSourcePath(sPath) Then Return Return IsFormExt(sPath) End Public Function IsModuleExt(sPath As String) As Boolean Dim sExt As String = File.Ext(sPath) If sExt = "module" Or If sExt = "test" Then Return True End Public Function IsCodeExt(sPath As String) As Boolean Dim sExt As String = File.Ext(sPath) Return CModule.CodeExt.Exist(sExt) End Public Sub IsProjectPath(sPath As String) As Boolean Return sPath Begins Project.Dir &/ "/" End Public Function IsImagePath(sPath As String) As Boolean Return IMAGE_EXT.Exist(File.Ext(sPath)) End Public Sub IsConnectionPath(sPath As String) As Boolean Return sPath Begins Project.Dir &/ ".connection" &/ "/" End Public Sub IsHiddenPath(sPath As String) As Boolean Return sPath Begins Project.Dir &/ ".hidden" &/ "/" End Public Function StripPath(sPath As String) As String Dim sDir As String sDir = Project.Dir If Right$(sDir) <> "/" Then sDir = sDir & "/" If Left$(sPath, Len(sDir)) = sDir Then Return Mid$(sPath, Len(sDir) + 1) Else Return sPath Endif End Public Sub RunTool(sTool As String) Dim aExec As New String[] aExec.Add(System.Path &/ "bin" &/ sTool & ".gambas") aExec.Add(Project.Dir) Exec aExec End Public Sub DefineStartup(sPath As String, Optional bDoNotWrite As Boolean) Dim sKey As String sKey = ProjectTree.Key sPath = File.BaseName(sPath) If Not Project.Exist(sPath) Then sPath = "" Tree.DefineStartup(sPath) Startup = sPath If Not bDoNotWrite Then WriteProject(True) Compile Endif Tree.SelectKey(sKey) Inc Project.TimeStamp 'Catch End Public Sub GetUniqueName(sDir As String, sName As String, Optional sSuffix As String = "&1") As String Dim iInd As Integer Dim sDest As String Dim sExt As String sDest = sDir &/ sName While Exist(sDest) Inc iInd sExt = File.Ext(sName) If sExt Then sDest = sDir &/ File.BaseName(sName) & Subst(sSuffix, CStr(iInd)) & "." & sExt Else sDest = sDir &/ sName & Subst(sSuffix, CStr(iInd)) Endif Wend Return File.Name(sDest) End Public Sub GetUniqueSourceName(sName As String) As String Dim iInd As Integer Dim sNewName As String Dim sExt As String sNewName = sName While Tree.Sources.Exist(sNewName) Inc iInd sExt = File.Ext(sName) sNewName = File.BaseName(sName) & CStr(iInd) & "." & File.Ext(sName) Wend Return sNewName End Public Sub CopyFile(sSrc As String, sDst As String) Dim sDest As String sDest = File.Dir(sDst) &/ GetUniqueName(File.Dir(sDst), File.Name(sDst), " (&1)") Copy sSrc To sDest VersionControl.AddFile(sDest) Tree.RefreshKey(sDest) Tree.SelectKey(sDest) Inc Project.TimeStamp Catch Message.Error(Subst(("Cannot copy file &1."), sSrc) & "\n\n" & Error.Text) End Public Sub LinkFile(sSrc As String, sDst As String) Dim sDest As String Dim aDst As String[] Dim aSrc As String[] Dim bDir As Boolean bDir = IsDir(sSrc) 'If IsDir(sSrc) Then ' Message.Warning(("Linking a directory is forbidden.")) ' Return 'Endif sDest = File.Dir(sDst) &/ GetUniqueName(File.Dir(sDst), File.Name(sDst), " (&1)") If sSrc Begins Project.Dir &/ "/" Then aDst = Split(File.Dir(Mid$(sDest, Len(Project.Dir) + 2)), "/") sSrc = Mid$(sSrc, Len(Project.Dir) + 2) aSrc = Split(File.Dir(sSrc), "/") While aDst.Count > 0 And aSrc.Count > 0 If aSrc[0] <> aDst[0] Then Break aDst.Remove(0) aSrc.Remove(0) Wend sSrc = String(aDst.Count, "../") & aSrc.Join("/") &/ File.Name(sSrc) Endif If bDir Then RefreshSources Link sSrc To sDest ' swapped VersionControl.AddFile(sDest) If bDir Then RefreshSources Tree.RefreshKey(sDest) Tree.SelectKey(sDest) Catch FMain.ShowError(Subst(("Cannot create link &1."), sSrc) & "\n\n" & Error.Text, sSrc) End Public Sub MoveFile(sSrc As String, sDst As String, Optional bOther As Boolean) Dim hForm As Object Dim sLink As String Dim sDir As String Dim bIsDir As Boolean If sSrc = sDst Then Return If Exist(sDst) Then Error.Raise(("Destination already exists.")) If Len(sDst) > Len(sSrc) And If Left(sDst, Len(sSrc)) = sSrc Then Error.Raise(("Cannot move a directory inside itself.")) bIsDir = IsDir(sSrc) If bOther And If Not bIsDir Then sDir = File.Dir(sSrc) For Each sSrc In Dir(sDir, File.BaseName(sSrc) & ".*") MoveFile(sDir &/ sSrc, File.Dir(sDst) &/ sSrc) Next Return Endif With Stat(sSrc) If .Type = gb.Link Then sLink = GetAbsoluteLink(sSrc, .Link) ' If Left(sLink) <> "/" Then ' sDir = File.Dir(sSrc) ' While Left(sLink, 3) = "../" ' sLink = Mid(sLink, 4) ' sDir = File.Dir(sDir) ' Wend ' sLink = sDir &/ sLink ' Endif DeleteFile(sSrc) LinkFile(sLink, sDst) RenamePaths(sSrc, sDst) Return Endif End With If bIsDir Then 'Move sSrc To sDst If VersionControl.Enabled Then VersionControl.MoveDir(sSrc, sDst) Else Move sSrc To sDst Endif 'If Exist(sSrc) Then LockedPaths[sSrc] = True Else If VersionControl.NeedMove() Then Copy sSrc To sDst If Right(sSrc) <> "~" Then VersionControl.MoveFile(sSrc, sDst) Try Kill sSrc Endif hForm = Files[sSrc] If hForm Then hForm.Rename(File.BaseName(sDst), sDst) Files[sSrc] = Null Files[sDst] = hForm Endif RenamePaths(sSrc, sDst) If bIsDir Then Refresh() Else Tree.RefreshKey(sDst, sSrc) Tree.SelectKey(sDst) Endif Catch FMain.ShowError(Subst(("Cannot move file &1."), File.Name(sSrc)) & "\n\n" & Error.Text & "\n" & Error.Backtrace.Join(" "), sSrc) End ' PUBLIC SUB RefreshToolbox() ' ' FToolBox.ClearToolbar ' ' END Public Function GetNewName(sPrefix As String, Optional sDir As String) As String Dim iInd As Integer Dim sName As String Dim aFile As String[] Dim iFile As Integer Do Inc iInd sName = sPrefix & iInd If sDir Then If Not Exist(sDir) Then Return sName aFile = Dir(sDir, sName & ".*") iFile = 0 While iFile < aFile.Count If Right(aFile[iFile]) = "~" Then aFile.Remove(iFile) Else Inc iFile Endif Wend If aFile.Count = 0 And If Not Exist(sDir &/ sName) Then Return sName Else If Not Project.Exist(sName) Then Return sName Endif Loop End Public Sub ResetScan() Dim hFile As Object For Each hFile In Files Try hFile.Scan = Null Next End Public Function HasModule(sType As String) As Boolean 'If sType = "class" Or If sType = "module" Then Return True Return CModule[sType].Used End Public Sub MakeInstall() 'Dim iRelease As Integer = Project.ReleaseVersion If MakeExecutable(True, True) Then Return If FMakeInstall.ShowModal() Then Return 'Project.ReleaseVersion = iRelease 'Project.WriteProject End Public Function StretchIcon(sPath As String, Optional iSize As Integer = 48) As Image Dim hImage As Image Dim hBackground As Image Dim W, H As Integer hImage = Image.Load(sPath) If hImage.Width > hImage.Height Then W = iSize H = iSize * hImage.H / hImage.W 'hImage = hImage.Stretch(iSize, iSize * hImage.H / hImage.W) Else W = iSize * hImage.W / hImage.H H = iSize 'hImage = hImage.Stretch(iSize * hImage.W / hImage.H, iSize) Endif If W < iSize Or H < iSize Then hBackground = New Image(iSize, iSize) hBackground.Fill(Color.Transparent) hBackground.PaintImage(hImage, (iSize - W) / 2, (iSize - H) / 2, W, H) hImage = hBackground Else hImage = hImage.Stretch(W, H) Endif Return hImage Catch Return Image.Load("img/logo/project.png").Stretch(iSize, iSize) End Public Function GetIcon(sPath As String, Optional iSize As Integer) As Picture Dim hFile As File Dim sLig As String Dim sIcon As String hFile = Open sPath &/ ".project" For Each sLig In hFile.Lines If Left$(sLig, 5) = "Icon=" Then sIcon = Mid$(sLig, 6) Break Endif Next Close #hFile If sIcon Then sPath = sPath &/ sIcon Else sPath = "img/logo/project.png" Endif If iSize Then Return StretchIcon(sPath, iSize).Picture Else Return Picture.Load(sPath) Endif Catch sPath = "img/logo/project.png" If iSize Then Return StretchIcon(sPath, iSize).Picture Else Return Picture.Load(sPath) Endif End Private Sub CreateGitIgnore() Dim sPath As String = Project.Dir &/ ".gitignore" Dim sData As String Dim iPos As Integer Dim iPos2 As Integer If Not Exist(sPath) Then Try Copy "gitignore" To sPath Return Endif sData = File.Load(sPath) iPos = InStr(sData, "#---- Gambas files to ignore (v5)") If iPos Then Return iPos = InStr(sData, "#---- Gambas files to ignore") If iPos Then iPos2 = InStr(sData, "#----", iPos + 5) If iPos2 Then iPos2 = InStr(sData, "\n", iPos2) If iPos2 = 0 Then iPos2 = Len(sData) + 1 sData = Left(sData, iPos - 1) & Mid$(sData, iPos2) Endif Endif sData = RTrim(sData) If sData Then sData &= "\n" File.Save(sPath, RTrim(File.Load("gitignore")) & "\n" & sData) End Public Sub CleanUp(Optional sDir As String = Project.Dir, bCommandLine As Boolean) As Boolean Dim sFile As String Dim aPattern As String[] = ["*.gambas", ".lock", "*~", "core", "core.*", "vgcore", "vgcore.*", ".kdbg*", ".*.prof", "cachegrind.out.*", "callgrind.out.*"] Dim sName As String Dim sPattern As String Dim aFail As New String[] If Not bCommandLine Then Inc Application.Busy For Each sFile In RDir(sDir) If IsDir(sDir &/ sFile) Then Continue sName = File.Name(sFile) For Each sPattern In aPattern If sName Like sPattern Then Goto DELETE_FILE Next If sFile Begins ".gambas/" Then Goto DELETE_FILE If sFile Begins ".lang/" And If sName Like "*.pot" Then Goto DELETE_FILE Continue DELETE_FILE: Try Kill sDir &/ sFile If Error Then aFail.Add(sFile) Next If sDir = Project.Dir Then Project.Refresh If Not bCommandLine Then Dec Application.Busy If aFail.Count Then If bCommandLine Then Error ("The following files couldn't be removed:") Error aFail.Join("\n") Return True Else Message.Error(("The following files couldn't be removed:") & "

      " & aFail.Join("
      ") & "
      ") Endif Endif End Public Function CheckProgram(sProg As String) As Boolean Dim iPos As Integer iPos = InStr(sProg, " ") If iPos Then sProg = Left(sProg, iPos - 1) Return Not System.Exist(sProg) End '' Open a URL inside an external browser. '' - ~sLink~ is the URL to open. Public Sub OpenWebPage(sLink As String, Optional bNewInstance As Boolean) As Process Dim sExec As String Dim aTest As String[] Dim bCheck As Boolean Dim hProcess As Process 'Dim sNewInstance As String If Not Browser Then Select Case Settings["/Browser"] Case "konqueror" aTest = ["konqueror"] Case "epiphany" aTest = ["epiphany"] Case "firefox" aTest = ["firefox", "mozilla-firefox"] Case "iceweasel" aTest = ["iceweasel"] Case "seamonkey" aTest = ["seamonkey"] Case "chromium" aTest = ["chromium", "chromium-browser", "google-chrome-stable"] Case Else aTest = New String[] If Env["BROWSER"] Then aTest.Add(Env["BROWSER"]) If Env["KDE_FULL_SESSION"] Then aTest.Add("konqueror") Else If Env["GNOME_DESKTOP_SESSION_ID"] Then aTest.Add("epiphany") aTest.Add("firefox") aTest.Add("iceweasel") Endif End Select aTest.Insert(["mozilla-firefox", "firefox", "mozilla", "iceweasel", "konqueror", "seamonkey", "chromium-browser", "opera"]) For Each sExec In aTest If Not sExec Then Continue bCheck = Not CheckProgram(sExec) If bCheck Then Break Next If Not bCheck Then Return Browser = sExec Endif If Left(sLink) = "/" Then sLink = "file://" & Replace(sLink, "?", "%3F") Endif ' If Browser = "firefox" Or If Browser = "iceweasel" Then ' hProcess = Shell "firefox -remote \"openURL(" & sLink & ",new-window)\"" Wait ' If hFirefox.Value Then ' Shell Browser & " " & Chr$(34) & sLink & Chr$(34) ' End If ' Else sExec = Browser If bNewInstance Then ' Select Case Browser ' ' Case "firefox", "iceweasel", "mozilla-firefox" ' sExec &= " --new-instance" ' ' End Select Endif hProcess = Shell sExec & " " & Shell(sLink) Return hProcess 'End If Catch Message.Error(Error.Text) End Public Sub OpenImage(sLink As String, sEditor As String) As Boolean Dim sExec As String Dim aTest As String[] Dim bCheck As Boolean Dim hProcess As Process Select Case LCase(sEditor) Case "kolourpaint" aTest = ["kolourpaint"] Case "krita" aTest = ["krita"] Case "gimp" aTest = ["gimp-remote", "gimp"] Case "kiconedit" aTest = ["kiconedit"] Case Else Return True ' IF Application.Env["KDE_FULL_SESSION"] THEN ' aTest = ["kolourpaint", "gimp"] ' ELSE IF Application.Env["GNOME_SESSION_ID"] THEN ' aTest = ["gimp-remote"] ' ENDIF End Select For Each sExec In aTest bCheck = Not CheckProgram(sExec) If bCheck Then Break Next If Not bCheck Then Return hProcess = Shell sExec & " " & Shell(sLink) As "Process" hProcess.Tag = sLink Catch Message.Error(Error.Text) End Public Sub HasTranslation(sLang As String) As Boolean Return Exist(Project.Dir &/ ".lang" &/ sLang & ".po") End Public Sub GetTranslations() As String[] Dim sFile As String Dim aLang As String[] Dim sDir As String aLang = New String[] sDir = Project.Dir &/ ".lang" If IsDir(sDir) Then For Each sFile In Dir(sDir, "*.po") aLang.Add(File.BaseName(sFile)) Next aLang.Sort Endif Return aLang End Public Sub MakeDirectoryIcon(Optional sDir As String) Dim sIcon As String Dim hDirIcon As Image Dim hIcon As Image Dim bExist As Boolean Dim sPath As String If Not sDir Then sDir = Project.Dir If Project.Icon Then sIcon = sDir &/ Project.Icon Else sIcon = "img/logo/project.png" Endif hDirIcon = Image.Load("img/logo/folder.png") Try hIcon = StretchIcon(sIcon, 128) If hIcon Then hDirIcon.PaintImage(hIcon, 64, 88) Try Kill sDir &/ ".icon.png" hDirIcon.Save(sDir &/ ".icon.png") sPath = sDir &/ ".directory" bExist = Exist(sPath) File.Save(sPath, "[Desktop Entry]\nIcon=./.icon.png\n") If Not bExist Then VersionControl.AddFile(sPath) Catch Error "gambas3: warning: unable to create project directory icon" End Public Sub RefreshBreakpointPicture() ' Dim iSize As Integer ' Dim hImage As Image ' ' iSize = Font[Settings["/Editor/Font"]].Height ' ' 'hImage = Picture["icon:/small/halt"].Image ' hImage = Picture["img/16/breakpoint.png"].Image ' 'hImage.Opacity(0.75) ' If iSize < Stock.GetSize("small") Then hImage = hImage.Stretch(iSize, iSize) ' Try Editor.BreakpointPicture = hImage.Picture ' ' hImage = Picture["icon:/small/apply"].Image ' 'hImage.Opacity(0.75) ' If iSize < Stock.GetSize("small") Then hImage = hImage.Stretch(iSize, iSize) ' Try Editor.BookmarkPicture = hImage.Picture ' End Public Sub DrawTitle(hForm As Object, Optional bNoReadOnly As Boolean) Dim sPath As String Dim sTitle As String sPath = hForm.Path 'If IsSourcePath(sPath) Or If IsConnectionPath(sPath) Then ' sTitle = File.BaseName(sPath) 'Else Try sTitle = hForm.GetTitle() If Not sTitle Then sTitle = File.Name(sPath) 'Endif If hForm.IsModified() Then sTitle &= " (*)" & Left(("modified"), 0) If Not bNoReadOnly Then If IsReadOnly(hForm.Path) Then sTitle &= " [" & ("read-only") & "]" Endif If Not IsProjectPath(sPath) Then Try hForm.RichText = "" & Html(sTitle) & "" Endif If hForm.Title <> sTitle Then hForm.Title = sTitle If ShowFileInTitle And If hForm = ActiveForm Then UpdateTitle Endif If hForm = ActiveForm Then FSearch.UpdateTitle End Public Sub IsExported(sPath As String) As Boolean Dim hFile As File Dim sLine As String If Not IsModuleExt(sPath) Then sPath = File.SetExt(sPath, "class") If Not Exist(sPath) Then Return Try hFile = Open sPath If Error Then Return For Each sLine In hFile.Lines sLine = Highlight.Purge(Trim(sLine)) If Not sLine Then Continue If Left(sLine) = "'" Then Continue If sLine Like "INHERITS *" Then Continue If sLine Like "CREATE" Then Continue If sLine Like "CREATE *" Then Continue If sLine Like "EXPORT" Then Return True If sLine Like "EXPORT OPTIONAL" Then Return True Break Next End Public Sub IsLocked(sPath As String) As Boolean Return HasFlag(sPath, FLAG_LOCKED, True) End Public Sub IsAdded(sPath As String, Optional bNoRec As Boolean) As Boolean Return HasFlag(sPath, FLAG_ADDED, Not bNoRec) End Public Sub IsConflict(sPath As String) As Boolean Return HasFlag(sPath, FLAG_CONFLICT) End Public Sub GetCount(sType As String) As Integer Dim sPath As String Dim iCount As Integer For Each sPath In Tree.Sources If File.Ext(sPath) = sType Then Inc iCount If sType = "class" And If Dir(File.Dir(sPath), File.BaseName(sPath) &/ ".*").Count >= 2 Then Dec iCount Next Return iCount End Public Sub GetLinesOfCode(ByRef nFunc As Integer) As Integer Dim sPath As String Dim iCount As Integer Dim aLine As String[] Dim iPos As Integer Dim iComment As Integer Dim sCar As String nFunc = 0 For Each sPath In Tree.Sources aLine = Split(File.Load(sPath), "\n", "", True) iComment = 0 For iPos = 0 To aLine.Max sCar = Left(LTrim(aLine[iPos])) If sCar = "'" Or If sCar = "#" Then Inc iComment Next iCount += aLine.Count - iComment If IsCodeExt(sPath) Then For iPos = 0 To aLine.Max Highlight.Analyze(aLine[iPos]) If FEditor.IsCurrentProc() Then Inc nFunc Next Endif Next Return iCount End Public Sub GetFileSize(iSize As Long) As String If iSize < 1000 Then Return Subst("&1 B", CStr(iSize)) Else If iSize < 1000000 Then Return Subst("&1 KiB", Format(iSize / 1000, "#.#")) Else If iSize < 1000000000 Then Return Subst("&1 MiB", Format(iSize / 1000000, "#.#")) Else Return Subst("&1 GiB", Format(iSize / 1000000000, "#.#")) Endif End Public Sub SetCurrentPopup(hMenu As Menu) If hMenu = $hCurrentPopup Then If Not hMenu Or If hMenu.Enabled Then Return Endif 'Debug hMenu.Name Try $hCurrentPopup.Enabled = False $hCurrentPopup = hMenu Try $hCurrentPopup.Enabled = True 'Debug $hCurrentPopup.Window.Name; "."; $hCurrentPopup.Name End Public Sub IsReadOnly(sPath As String) As Boolean If Not Exist(sPath) Then Return True If Not Access(sPath, gb.Write) Then Return True If IsFake() Then Return ' Allow a file located in a linked directory to be modified only in "fake" mode, i.e. when opened alone. Do If sPath = Project.Dir Or If sPath = "/" Or If Not sPath Then Break If Stat(sPath).Type = gb.Link Then Return True Endif sPath = File.Dir(sPath) Loop End Public Sub UpdateLockedAction(hForm As Object) If ReadOnly Or If Running Then Action[".locked", hForm].Visible = False Else Action[".locked", hForm].Visible = True Action[".locked", hForm].Value = IsReadOnly(hForm.Path) Endif End Public Sub SetReadOnly(sPath As String, bReadOnly As Boolean) Dim sClass As String Dim hForm As Object GoSub SET_READONLY If IsSourcePath(sPath) Then sClass = File.BaseName(sPath) sPath = FindPath(sClass) GoSub SET_READONLY sPath = FindForm(sClass) If sPath Then GoSub SET_READONLY Endif Return SET_READONLY: If Stat(sPath).Type = gb.File Then If bReadOnly Then Try Chmod sPath To "r-.r-.r-.." Else Try Chmod sPath To "rw.rw.r..." Endif Endif hForm = Files[sPath] If hForm Then Try hForm.SetReadOnly Project.RefreshKey(sPath) Return End Public Sub StoreCombo(hCombo As ComboBox) Dim sText As String = hCombo.Text Dim iInd As Integer If Not sText Then Return iInd = hCombo.Find(sText) If iInd >= 0 Then hCombo.Remove(iInd) hCombo.Add(sText) hCombo.Text = sText End Private Sub ConvertProject() As Boolean Dim sPath As String Dim iStep As Integer FConvert.Start(("Project cleanup...")) Inc $iNoRefresh Project.CleanUp Dec $iNoRefresh FConvert.SetMessage(("Project files conversion...")) For Each sPath In Tree.Sources If File.Ext(sPath) <> "form" Then Continue If Stat(sPath).Type = gb.Link Then Continue MConvert.ConvertFile(sPath) Inc iStep FConvert.SetProgress(iStep / Tree.Sources.Count) Next For Each sPath In Tree.Sources If File.Ext(sPath) = "form" Then Continue If Stat(sPath).Type = gb.Link Then Continue MConvert.ConvertFile(sPath) Inc iStep FConvert.SetProgress(iStep / Tree.Sources.Count) Next FConvert.Stop Catch FConvert.StopAll Application.Busy = 0 Message.Error("" & Subst(("Unable to convert &1"), File.Name(sPath)) & "

      " & Error.Text & "
      " & Error.Where) Return True End Public Sub GetSmallFont() As Font Dim hFont As Font = Font[Settings["/Font"]] Try hFont.Size *= GetPercentFontSize("/TitleFontSize", 80) Return hFont End Public Sub SetSmallFont(hCtrl As Control) hCtrl.Font = GetSmallFont() End Public Sub GetPercentFontSize(sSettings As String, iDefault As Integer) As Float Dim iVal As Integer Try iVal = Settings[sSettings, iDefault] If iVal < 10 Then iVal = iDefault Return iVal / 100 End Public Sub SetNormalFont(hCtrl As Control, Optional fSize As Float) Dim hFont As Font = Font[Settings["/Font"]] If fSize = 0 Then fSize = GetPercentFontSize("/ProjectFontSize", 100) Try hFont.Size *= fSize hCtrl.Font = hFont ' If hFont.ToString() = Application.Font.ToString() Then ' hCtrl.Font = Null ' Else ' hCtrl.Font = hFont ' Endif End Public Sub GetEditorFont() As Font Return Font[Settings["/Editor/Font", DEFAULT_FONT]] End Public Sub SetEditorFont(hCtrl As Control) hCtrl.Font = GetEditorFont() End Public Sub SetConsoleFont(hCtrl As Control) hCtrl.Font = Font[Settings["/ConsoleFont", DEFAULT_FONT]] End Public Sub UpdateLibraries(aLib As String[]) As Boolean Dim sPath As String Dim hLib As CLibraryInfo Dim aAdd As String[] Dim bChange As Boolean Do aAdd = New String[] For Each sPath In aLib hLib = CLibraryInfo[sPath] If hLib.NotFound Then Continue For Each sPath In hLib.Libraries If Not aLib.Exist(sPath) And If Not aAdd.Exist(sPath) Then aAdd.Add(sPath) Next Next If aAdd.Count = 0 Then Break aLib.Insert(aAdd) bChange = True Loop Return bChange End ' Private Function Sources_Read() As Collection ' ' Return $cSourceDir ' ' End ' Public Sub SendMail() Dim sTemp As String = Temp$() sTemp = File.SetName(sTemp, GetDefaultArchiveBaseName()) & ".tar.gz" Try Kill sTemp MakeSourcePackageTo(sTemp) Desktop.SendMail(Null,,, If(Project.Title, Project.Title, Project.Name),, sTemp) End Public Sub GetBackgroundColor() As Integer Return FColorChooser.FromString(Settings["/Background/Color", "#404040"]) End Public Sub GetBackgroundBgColor() As Integer Dim hColor As ColorInfo hColor = Color[Color.Merge(Color.Background, Color.Foreground)] If Application.DarkTheme Then hColor.Luminance = 255 - GetBackgroundBrightness() Else hColor.Luminance = GetBackgroundBrightness() Endif Return hColor.Color End Public Sub GetBackground() As Image Dim sBackground As String Dim iColor As Integer If Not $bBackgroundValid Then $hBackground = Null sBackground = Settings["/Background/Image", DEFAULT_BACKGROUND] Try $hBackground = Image.Load("img/background" &/ sBackground & ".png") If Not $hBackground Then $hBackground = New Image(32, 32, Color.RGB(128, 128, 128, 128)) If Application.DarkTheme Then $hBackground = $hBackground.Invert(True) iColor = GetBackgroundColor() $hBackground.Colorize(iColor) $bBackgroundValid = True Endif Return $hBackground End Public Sub DrawBackground() Dim hBrush As PaintBrush GetBackground() If $hBackground Then hBrush = Paint.Brush Paint.FillRect(0, 0, Paint.W, Paint.H, GetBackgroundBgColor()) Paint.Brush = Paint.Image($hBackground) Paint.Rectangle(0, 0, Paint.W, Paint.H) Paint.Fill Paint.Brush = hBrush Endif End Private Sub ChangeBackground(bInvalidate As Boolean) If bInvalidate Then $bBackgroundValid = False GetBackground() Endif Try ActiveForm.OnBackgroundChange FMain.OnBackgroundChange End Public Sub SetBackground(sBackground As String) If sBackground = DEFAULT_BACKGROUND Then sBackground = "" Settings["/Background/Image"] = sBackground ChangeBackground(True) End Public Sub SetBackgroundColor(sColor As String) Settings["/Background/Color"] = sColor ChangeBackground(True) End Public Sub GetBackgroundBrightness() As Integer Return Settings["/Background/Brightness", 160] End Public Sub SetBackgroundBrightness(iBrightness As Integer) Settings["/Background/Brightness"] = iBrightness ChangeBackground(False) End ' Try to save all files if there is an unexpected error Public Sub Application_Error() Try Save End Public Sub CanUseHttpServer() As Boolean If Components Then Return Components.Exist("gb.web") End Public Sub InsideDirectory(sPath As String, sDir As String) As Boolean If sPath = sDir Then Return True If Right(sDir) <> "/" Then sDir &= "/" If sPath Begins sDir Then Return True End Public Sub UpdateAllForms(Optional sOldClass As String, sNewClass As String) Dim sPath As String Dim hObject As Object Dim hForm As Object Inc Application.Busy For Each sPath In Tree.Sources If Not IsFormPath(sPath) Then Continue If Stat(sPath).Type = gb.Link Then Continue hObject = LoadFile(sPath) If Not hObject Is FForm Then Continue hForm = hObject If sOldClass Then hForm.RenameClass(sOldClass, sNewClass) Else hForm.Modify() hForm.Save() Endif Next Dec Application.Busy If sOldClass Then Compile(True) Inc Application.Busy For Each sPath In Tree.Sources If Not IsFormPath(sPath) Then Continue If Stat(sPath).Type = gb.Link Then Continue hForm = LoadFile(sPath) If hForm Then hForm.Reload() Next Dec Application.Busy Endif Catch Application.Busy = 0 Message.Error(("Unable to update forms.") & "

      " & Error.Text & "

      " & Error.Where & "
      ") End Public Sub Goto(sPosition As String) As Boolean Dim aScan As String[] Dim sClass As String Dim iLine As Integer aScan = Scan(sPosition, "*.*.*") If aScan.Count <> 3 Then Return True sClass = aScan[0] Try iLine = CInt(aScan[2]) If Error Then Return True If ExistClass(sClass) Then OpenFile(sClass, iLine) End Public Sub IsFake(Optional sDir As String) As Boolean If Not sDir Then sDir = Project.Dir Return sDir = File.Dir(Temp$()) &/ "fake" End Public Sub OpenFake() As Boolean Dim sDir As String If Project.Dir Then Return True sDir = File.Dir(Temp$()) &/ "fake" Shell "rm -rf " & Shell(sDir) Wait If MakeDir(sDir) Then Return True Try Mkdir sDir &/ ".src" Try Mkdir sDir &/ ".hidden" Copy "_fake_project" To sDir &/ ".project" Return Project.Open(sDir) End Public Sub TildePath(sPath As String) As String Dim sHome As String = User.Home If Right(sHome) <> "/" Then sHome &= "/" If IsDir(sPath) And If Right(sPath) <> "/" Then sPath &= "/" If sPath = sHome Then sPath = "~" Else If sPath Begins sHome Then sPath = "~" & Mid$(sPath, Len(sHome)) Endif Return sPath End Public Sub UntildePath(sPath As String) As String If sPath = "~" Then Return User.Home If sPath Begins "~/" Then Return User.Home &/ Mid$(sPath, 2) Return sPath End Public Sub AddRecentFile(hForm As Object) RecentFiles.Add(hForm.Path) If RecentFiles.Count > 20 Then RecentFiles.Remove(0, RecentFiles.Count - 20) End Public Sub RequireProgram(aProg As String[]) As String Dim sProg As String Dim aMissing As New String[] For Each sProg In aProg If Not System.Exist(sProg) Then aMissing.Add(sProg) Next If aMissing.Count = 1 Then Return Subst(("The &1 program is not installed on your system."), "" & aMissing[0] & "") Else If aMissing.Count > 1 Then Return Subst(("The following programs are not installed on your system: &1."), "" & aMissing.Join(", ") & "") Endif End ' Private Sub CreateComponentFile() ' ' Dim hFile As File ' ' If Type = TYPE_NORMAL Then Return ' If Exist(Project.Dir &/ ".component") Then Return ' ' hFile = Open Project.Dir &/ ".component" For Create ' Print #hFile, "[Component]" ' Print #hFile, "Key="; Project.Name ' Print #hFile, "Version="; FormatVersion() ' Close #hFile ' ' End Public Sub ReadComponentFile() As Collection Dim sPath As String = Project.Dir &/ ".component" Dim hFile As File Dim sLine As String Dim sGroup As String Dim iPos As Integer Dim sKey As String Dim cComp As New Collection If Type = TYPE_NORMAL Then Return cComp["State"] = CComponent.STABLE If Not Exist(sPath) Then Return cComp ' cComp["Need"] = New String[] ' cComp["Require"] = New String[] ' cComp["Exclude"] = New String[] ' cComp["Implement"] = New String[] ' cComp["Include"] = New String[] hFile = Open sPath Line Input #hFile, sLine If Trim(sLine) <> "[Component]" Then Return For Each sLine In hFile.Lines sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine) = ";" Then Continue If Left(sLine) = "[" Then If sLine = "[Component]" Then Break sGroup = Mid$(sLine, 2, -1) Continue Endif iPos = InStr(sLine, "=") If iPos = 0 Then Continue sKey = LCase(Left(sLine, iPos - 1)) sLine = Mid$(sLine, iPos + 1) Select Case sKey Case "need", "needs" cComp["Need"] = Split(sLine) Case "require", "requires" cComp["Require"] = Split(sLine) Case "exclude", "excludes" cComp["Exclude"] = Split(sLine) Case "implement", "implements" cComp["Implement"] = Split(sLine) Case "state" cComp["State"] = CInt(sLine) Case "hidden" cComp["Hidden"] = sLine = "True" Case "compatibleuntil" cComp["CompatibleUntil"] = sLine Case "include" cComp["Include"] = Split(sLine) End Select Next hFile.Close Return cComp Catch Message.Error(("Unable to read component description file.") & "\n\n" & Error.Text & "\n" & Error.Where) End Public Sub WriteComponentFile(cComp As Collection) As Boolean Dim sPath As String = Project.Dir &/ ".component" Dim hFile As File Dim bNew As Boolean Dim aData As String[] Dim sData As String If Type = TYPE_NORMAL Then If Exist(sPath) Then VersionControl.RemoveFile(sPath) Try Kill sPath Endif Return Endif If Not cComp Then cComp = New Collection hFile = Open Temp$("component") For Create Print #hFile, "[Component]" Print #hFile, "Key="; Name Print #hFile, "Version="; FormatVersion() If cComp["State"] Then Print #hFile, "State="; cComp["State"] If cComp["Hidden"] Then Print #hFile, "Hidden=True" If Authors Then Print #hFile, "Authors="; Replace(Project.Authors, "\n", ",") aData = cComp["Implement"] If aData And If aData.Count Then Print #hFile, "Implements="; aData.Join(",") aData = cComp["Need"] If aData And If aData.Count Then Print #hFile, "Needs="; aData.Join(",") aData = cComp["Require"] If aData And If aData.Count Then Print #hFile, "Requires="; aData.Join(",") aData = cComp["Exclude"] If aData And If aData.Count Then Print #hFile, "Excludes="; aData.Join(",") sData = cComp["CompatibleUntil"] If sData And If sData <> "0.0.0" Then Print #hFile, "CompatibleUntil="; sData aData = cComp["Include"] If aData And If aData.Count Then Print #hFile, "Include="; aData.Join(",") Close #hFile bNew = Not Exist(sPath) Try Kill sPath Copy Temp$("component") To sPath If bNew Then VersionControl.AddFile(sPath) Catch Message.Error(("Cannot write component description file.") & "\n\n" & Error.Text & "\n" & Error.Where) Return True End Public Sub UpdateComponentFile() If Type = TYPE_NORMAL Then Return WriteComponentFile(ReadComponentFile()) End Public Sub OnVendorKeyPress(Optional bPrefix As Boolean) If Key.Control Then Stop Event Return Endif If Key.Text Then If Len(Key.Text) = 1 Then If Asc(Key.Text) < 32 Then Return If Asc(Key.Text) = 127 Then Return If IsDigit(Key.Text) Then Return If IsLetter(Key.Text) Then Return If Not bPrefix Then If InStr("-_", Key.Text) Then Return Endif Endif Stop Event Endif End Public Sub RefreshIcon(sPath As String) Dim hForm As Object hForm = Files[sPath] If hForm Then hForm.Icon = GetFileIcon(sPath) If IsSourcePath(sPath) Then If File.Ext(sPath) = "class" Then sPath = FindForm(File.BaseName(sPath)) Else sPath = File.SetExt(sPath, "class") Endif hForm = Files[sPath] If hForm Then hForm.Icon = GetFileIcon(sPath) Endif End Public Sub GetBookmarks() As Collection[] Try Mkdir Desktop.DataDir &/ "gambas3/src" Try Mkdir Desktop.DataDir &/ "gambas3/template" Return [["Name": ("Installed software"), "Path": Desktop.DataDir &/ "gambas" & System.Version & "/src", "Icon": "icon:/small/download"], ["Name": ("Project templates"), "Path": Desktop.DataDir &/ "gambas" & System.Version & "/template", "Icon": "icon:/small/copy"]] End Public Sub RevertFile(sPath As String) Inc Application.Busy VersionControl.Revert(sPath) Try Project.Files[sPath].Reload If File.Ext(sPath) <> ".class" Then sPath = File.SetExt(sPath, "class") If Exist(sPath) Then VersionControl.Revert(sPath) Try Project.Files[sPath].Reload Endif Endif Project.Refresh Dec Application.Busy End Public Sub ArgumentToString(aArg As String[]) As String Dim sResult As String Dim sArg As String For Each sArg In aArg If sResult Then sResult &= " " If InStr(sArg, " ") Or If InStr(sArg, Chr$(34)) Then sResult &= Chr$(34) & Replace(sArg, Chr$(34), Chr$(34) & Chr$(34)) & Chr$(34) Else sResult &= sArg Endif Next Return sResult End Public Sub OpenTerminal(sDir As String) Try Desktop.OpenTerminal(sDir) If Error Then Message.Error(("Unable to run terminal.") & "\n\n" & Error.Text) End Private Sub MakeProjectRelativePath(sPath As String) As String If sPath Begins Project.Dir Then sPath = Mid$(sPath, Len(Project.Dir) + 1) If sPath Begins "/" Then sPath = Mid$(sPath, 2) Endif Return sPath End Public Sub ShouldTranslate(sPath As String, Optional bRecursive As Boolean) As Boolean Dim sRelPath As String Dim sFormPath As String If Not sPath Then Return sRelPath = MakeProjectRelativePath(sPath) If DoNotTranslate.Exist(sRelPath) Then Return If File.Ext(sPath) = "class" Then sFormPath = FindForm(File.BaseName(sPath)) If sFormPath Then sRelPath = MakeProjectRelativePath(sFormPath) If DoNotTranslate.Exist(sRelPath) Then Return Endif Endif If Not bRecursive Then Return True sPath = File.Dir(sPath) If sPath = Project.Dir Then Return True Return ShouldTranslate(sPath, True) End Public Sub SetShouldTranslate(sPath As String, bTrans As Boolean) Dim iPos As Integer sPath = MakeProjectRelativePath(sPath) iPos = DoNotTranslate.Find(sPath) If bTrans And iPos >= 0 Then DoNotTranslate.Remove(iPos) RefreshKey(Project.Dir &/ sPath) Else If Not bTrans And iPos < 0 Then DoNotTranslate.Add(sPath) RefreshKey(Project.Dir &/ sPath) Endif Inc Project.TimeStamp End Public Sub ShouldCompress(sPath As String) As Boolean If Not sPath Then Return sPath = MakeProjectRelativePath(sPath) Return CompressedFiles.Exist(sPath) End Public Sub SetShouldCompress(sPath As String, bCompress As Boolean) Dim iPos As Integer sPath = MakeProjectRelativePath(sPath) iPos = CompressedFiles.Find(sPath) If Not bCompress And iPos >= 0 Then CompressedFiles.Remove(iPos) RefreshKey(Project.Dir &/ sPath) Else If bCompress And iPos < 0 Then CompressedFiles.Add(sPath) RefreshKey(Project.Dir &/ sPath) Endif Inc Project.TimeStamp End Public Sub HasFlag(sPath As String, iFlag As Integer, Optional bRec As Boolean) As Boolean If Not $cPathFlag Then Return If Not sPath Or sPath = "/" Then Return If File.IsRelative(sPath) Then sPath = Project.Dir &/ sPath If Not IsProjectPath(sPath) Then Return If BTst($cPathFlag[sPath], iFlag) Then Return True If Not bRec Then Return Return HasFlag(File.Dir(sPath), iFlag, bRec) End Public Sub SetFlag(sPath As String, iFlag As Integer) $cPathFlag[sPath] = BSet($cPathFlag[sPath], iFlag) If iFlag = FLAG_ADDED Then Inc HasAdded If iFlag = FLAG_CONFLICT Then Inc HasConflict End Public Sub ResetFlags(Optional sPath As String) Dim iFlag As Integer If Not sPath Then $cPathFlag = New Collection $cPathFlag.Default = 0 HasConflict = 0 HasAdded = 0 Else iFlag = $cPathFlag[sPath] If BTst(iFlag, FLAG_ADDED) Then Dec HasAdded If BTst(iFlag, FLAG_CONFLICT) Then Dec HasConflict $cPathFlag.Remove(sPath) Endif End Public Sub AllFlags(iFlag As Integer) As String[] Dim aPath As New String[] Dim iState As Integer If $cPathFlag Then For Each iState In $cPathFlag If BTst(iState, iFlag) Then aPath.Add($cPathFlag.Key) Next Endif Return aPath End Public Sub IsModified(sPath As String, Optional bNoClass As Boolean) As Boolean If HasFlag(sPath, FLAG_MODIFIED) Then Return True If Not IsSourcePath(sPath) Then Return If Not IsFormExt(sPath) Then Return If bNoClass Then Return Return HasFlag(File.SetExt(sPath, "class"), FLAG_MODIFIED) End Private Sub ApplyRename(sOld As String, sNew As String, sPath As String) As String Dim bRelative As Boolean If File.IsRelative(sPath) Then bRelative = True sPath = Project.Dir &/ sPath Endif If sPath = sOld Then sPath = sNew Else If IsDir(sNew) Then If Right(sOld) <> "/" Then sOld &= "/" If sPath Not Begins sOld Then Return sPath = sNew &/ Mid$(sPath, Len(sOld) + 1) Else Return Endif If bRelative Then sPath = MakeProjectRelativePath(sPath) Endif Return sPath End Private Sub RenamePaths(sOld As String, sNew As String) Dim I As Integer Dim sPath As String Dim aRename As String[] Dim hForm As Object Dim sCheck As String Dim sNewFormPath As String ' Rename DoNotTranslate For I = 0 To DoNotTranslate.Max sPath = ApplyRename(sOld, sNew, DoNotTranslate[I]) If sPath Then DoNotTranslate[I] = sPath Next ' Rename CompressedFiles For I = 0 To CompressedFiles.Max sPath = ApplyRename(sOld, sNew, CompressedFiles[I]) If sPath Then CompressedFiles[I] = sPath Next ' Rename sources If IsSourcePath(sOld) Then If IsDir(sNew) Then RefreshSources Else Tree.Sources[File.Name(sOld)] = Null Tree.Sources[File.Name(sNew)] = sNew OnRefreshSources Endif Endif ' Rename opened files aRename = New String[] For Each hForm In Files sCheck = hForm.Path If sCheck = sOld Or If sCheck Begins sOld &/ "/" Then If Not aRename.Exist(sCheck) Then aRename.Add(sCheck) Endif Next For Each sCheck In aRename hForm = Files[sCheck] Files[sCheck] = Null If sCheck = sOld Then hForm.Rename(File.BaseName(sNew), sNew) Files[sNew] = hForm Else sNewFormPath = sNew &/ Mid$(sCheck, Len(sOld) + 1) hForm.Rename(hForm.Name, sNewFormPath) Files[sNewFormPath] = hForm Endif Next ' Rename breakpoints If IsSourcePath(sOld) Then If IsCodeExt(sOld) Then Design.RenameClass(File.BaseName(sOld), File.BaseName(sNew)) Endif Endif End Public Sub FindProjectPath(sPath As String) As String Dim hFile As File Dim sHeader As String Do If Exist(sPath &/ ".project") Then hFile = Open sPath &/ ".project" sHeader = Read #hFile, -256 hFile.Close If sHeader Begins Project.PROJECT_MAGIC Or If sHeader Begins Project.PROJECT_MAGIC_2 Then Return sPath Endif Endif sPath = File.Dir(sPath) If sPath = "/" Then Break Loop Catch End Public Sub CompileTranslation(bForce As Boolean, Optional sLang As String) Dim sPath As String Dim sTrans As String Dim aLang As String[] Dim dTrans As Date Dim dPath As Date If sLang Then aLang = [sLang] Else aLang = Language.GetAll(True) Endif ' If Not sLang Then ' iPos = Project.Environment.Find("LANG=*", gb.Like) ' If iPos >= 0 Then ' sLang = Mid$(Project.Environment[iPos], 6) ' Else ' sLang = System.Language ' Endif ' sLang = Language.Find(sLang) ' Endif For Each sLang In aLang sTrans = Language.GetPath(sLang, "po") Try dTrans = Stat(sTrans).LastModified If Error Then Continue sPath = Language.GetPath(sLang, "mo") If Not bForce Then Try dPath = Stat(sPath).LastModified If dPath And If dPath >= dTrans Then Continue Endif Try Kill sPath Shell "msgfmt -o " & Shell$(sPath) & " " & Shell(sTrans) Wait Next End Public Sub InitTooltip(hTooltip As Control) With hTooltip .Foreground = Color.TextBackground .Background = Color.SetAlpha(Color.TextForeground, 248) .Font.Grade = -1 End With End Public Sub HasTest() As Boolean Return Tree.HasTest() End Public Sub SaveAsExtern() Dim hForm As Object Dim sPath As String hForm = ActiveForm If Not hForm Then Return Dialog.Key = "SaveAsExtern" Dialog.Title = ("Save as") If Dialog.SaveFile() Then Return sPath = Dialog.Path Files[hForm.Path] = Null hForm.Rename(File.Name(sPath), sPath) Files[hForm.Path] = hForm hForm.Save(True) End Public Sub Browse(sRoot As String, Optional bWithDir As Boolean) As String[] Dim aDir As New String[] Dim aResult As New String[] Dim sFile As String Dim sPath As String Dim sDir As String aDir.Add("") While aDir.Count sDir = aDir[0] aDir.Remove(0) If IsForbiddenDirectory(sRoot &/ sDir) Then Continue For Each sFile In Dir(sRoot &/ sDir) sPath = sDir &/ sFile If Right(sFile) = "~" Then Continue If IsDir(sRoot &/ sPath) Then aDir.Add(sPath) If bWithDir Then aResult.Add(sPath) Else If sFile Begins "." Then Continue aResult.Add(sPath) Endif Next Wend Return aResult End Public Sub UpdateMessageBoxStyle() Message.Style = Settings["/MessageBoxStyle"] Message.ColoredButtons = Message.Style = "flat" End Public Sub AddAllFileUnderVersionControl() Dim sPath As String For Each sPath In Project.AllFlags(Project.FLAG_ADDED) VersionControl.AddFile(sPath) If Project.IsFormPath(sPath) Then VersionControl.AddFile(File.SetExt(sPath, "class")) Next Project.Refresh End Public Sub UpdateTheme() Dim sTheme As String sTheme = Settings["/Theme", "gambas"] If sTheme = "*" Then sTheme = "" Application.Theme = sTheme End Public Sub UpdateStatus(Optional bForce As Boolean) FDebugButton.UpdateStatus(bForce) End gambas-3.16.3/app/src/gambas3/.src/Project/000077500000000000000000000000001411575327000202025ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/CProjectInfo.class000066400000000000000000000124511411575327000235610ustar00rootroot00000000000000' Gambas class file Property Read Name As String Property Read Path As String Property Read Title As String Property Read Version As String Property Read Description As String Property Read Authors As String[] Property Read Icon As String Property Read Startup As String Property Read Components As String[] Property Read Deleted As Boolean Use $bDeleted Public Type As Integer Public Translate As Boolean Public ControlPublic As Boolean Public ModulePublic As Boolean Public CreateMenu As Boolean Private $sName As String Private $sPath As String Private $sTitle As String Private $sVersion As String Private $sDescription As String Private $aAuthors As New String[] Private $sIcon As String Private $sStartup As String Private $aComponents As New String[] Private $sTranslatedTitle As String Private $sTranslatedDescription As String Private $bVersionAddBranch As Boolean Private $dDate As Date Private Sub GetProjectPath(sPath As String) As String Do If Exist(sPath &/ ".project") Then Return sPath sPath = File.Dir(sPath) If sPath = "/" Then Break Loop Catch End Private Sub ReadProject() Dim hFile As File Dim sLine As String Dim iPos As Integer Dim sKey As String Dim sVal As String Dim sBranch As String Dim dDate As Date Dim sPath As String If Not $sPath Then Return sPath = $sPath &/ ".project" Try dDate = Stat(sPath).LastModified If Error Then $dDate = Now $bDeleted = True Return Endif If $dDate And If $dDate = dDate Then Return $dDate = dDate $aComponents = New String[] hFile = Open sPath For Each sLine In hFile.Lines sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine) = "#" Then Continue iPos = InStr(sLine, "=") If iPos = 0 Then Continue sKey = Lower$(Trim(Left$(sLine, iPos - 1))) sVal = Trim(Mid$(sLine, iPos + 1)) Select Case sKey Case "title" $sTitle = sVal Case "version" iPos = InStr(sVal, " ") If iPos Then sVal = Left(sVal, iPos - 1) $sVersion = sVal Case "description" $sDescription = Trim(UnQuote(sVal)) Case "authors" $aAuthors = Split(UnQuote(sVal), "\n") Case "icon" $sIcon = sVal Case "startup" $sStartup = sVal Case "component" $aComponents.Add(sVal) Case "translate" Translate = CInt(sVal) Case "controlpublic" ControlPublic = CInt(sVal) Case "modulepublic" ModulePublic = CInt(sVal) Case "createmenu" CreateMenu = CInt(sVal) Case "type" Select LCase(sVal) Case "library" Type = Project.TYPE_LIBRARY Case "component" Type = Project.TYPE_COMPONENT End Select Case "versionaddbranch" $bVersionAddBranch = CInt(sVal) End Select Next If $bVersionAddBranch Then sBranch = CVersionControlGit.GetCurrentBranch($sPath) If sBranch Then $sVersion &= " (" & sBranch & ")" Endif Close #hFile End Public Sub _new(sPath As String) $sPath = GetProjectPath(sPath) $sName = File.Name(sPath) End Public Sub GetTitle() As String If $sTitle Then Return $sTitle Return $sName End ' Public Sub GetIcon(Optional iSize As Integer) As Image ' ' Dim hImage As Image = Image.Load(Icon) ' ' If iSize Then hImage = hImage.Stretch(iSize, iSize) ' Return hImage ' ' End Private Function Name_Read() As String Return $sName End Private Function Path_Read() As String Return $sPath End Private Function Title_Read() As String ReadProject Return $sTitle End Private Function Version_Read() As String ReadProject Return $sVersion End Private Function Description_Read() As String ReadProject Return $sDescription End Private Function Authors_Read() As String[] ReadProject Return $aAuthors End Private Function Icon_Read() As String ReadProject Return $sIcon End Private Function Startup_Read() As String ReadProject Return $sStartup End Private Function Components_Read() As String[] ReadProject Return $aComponents End Public Sub GetIconPath() As String ReadProject If $sIcon Then Return $sPath &/ $sIcon Else Return "img/logo/project.png" Endif End Private Sub GetTranslation(sStr As String) As String Dim sLang As String Dim sPath As String Dim sTrans As String sLang = Language.Find(System.Language) sPath = $sPath &/ ".lang" &/ sLang & ".po" If Not Exist(sPath) Then Return sStr sTrans = CTranslation.FindTranslation(sPath, sStr) If sTrans Then Return sTrans Else Return sStr Endif ' aTrans = Split(File.Load(sPath), "\n") ' iPos = aTrans.Find("msgid " & Quote(sStr)) ' If iPos < 0 Then Return sStr ' ' sTrans = aTrans[iPos + 1] ' If sTrans Not Begins "msgstr " Then Return sStr ' ' Return UnQuote(Mid$(sTrans, 8)) End Public Sub GetTranslatedTitle() As String If Not $sTranslatedTitle Then ReadProject $sTranslatedTitle = GetTranslation($sTitle) Endif Return $sTranslatedTitle End Public Sub GetTranslatedDescription() As String If Not $sTranslatedDescription Then ReadProject $sTranslatedDescription = GetTranslation($sDescription) Endif Return $sTranslatedDescription End gambas-3.16.3/app/src/gambas3/.src/Project/CProjectList.class000066400000000000000000000336701411575327000236070ustar00rootroot00000000000000' Gambas class file Public Enum TYPE_RECENT, TYPE_EXAMPLE, TYPE_SOFTWARE, TYPE_TEMPLATE Event Click(Path As String, Another As Boolean) Event DblClick(Path As String) Event Refresh Event Fill Property AllowOpenExtern As Boolean Property Current As ProjectBox Private $hList As ScrollView Private $hFilter As ButtonBox Private $iSort As Integer Private $iType As Integer Private $hObserver As Observer Private $iArrange As Integer Private $hObsList As Observer Private $dRecent As Date Private $hHelp As WebView Private $hCurrent As ProjectBox Private $iCount As Integer Private $bNoFilter As Boolean Public Sub _new(hList As ScrollView, hFilter As ButtonBox, iType As Integer, Optional iArrange As Integer = Arrange.Row) $hList = hList '$hList.Shadow = True $hFilter = hFilter $iType = iType $iArrange = iArrange $bNoFilter = Not $hFilter.Enabled $hObserver = New Observer($hFilter) As "Filter" $hObsList = New Observer(hList) As "ScrollView" End Public Sub SetSort(iSort As Integer) $iSort = iSort Fill(True) End Public Sub SetArrangement(iArrange As Integer) If $iArrange = iArrange Then Return $iArrange = iArrange Clear Fill End Private Sub GetExamples() As String[] Dim sFile As String Dim aList As New String[] Dim sDir As String Dim hStat As Stat sDir = Desktop.DataDir &/ "gambas3/src/example" If Not IsDir(sDir) Then Return aList For Each sFile In Dir(sDir) If Left(sFile) = "." Then Continue hStat = Stat(sDir &/ sFile) If hStat.Link Then aList.Add(Project.GetAbsoluteLink(sDir &/ sFile, hStat.Link)) Else aList.Add(sDir &/ sFile) Endif Next aList.Sort(gb.Natural) Return aList End Private Sub FillWithExample() Dim sExample As String ' Dim sDir As String ' Dim sLastDir As String ' Dim hDrawingArea As DrawingArea Dim hProjectItem As ProjectBox ' Dim sGroup As String Dim aExamples As String[] Inc Application.Busy $hList.Arrangement = Arrange.None aExamples = GetExamples() $iCount = aExamples.Count If aExamples.Count = 0 Then If Not $hHelp Then Clear $hHelp = New WebView($hList) As "ExampleWebView" $hHelp.MoveScaled(0, 0, 4, 4) $hHelp.Foreground = Color.LightForeground $hHelp.SetHtml("" & Subst(("Examples are stored on the Gambas farm server. Click &1 to access the farm server and download them..."), "" & ("here") & "") & "") Endif $hList.Arrangement = Arrange.Fill $hList.Margin = False $hFilter.Enabled = False Else Clear For Each sExample In aExamples ' sDir = File.Dir(sExample) ' If sDir <> sLastDir Then ' If $iArrange = Arrange.Row And If $hList.Children.Count Then ' hPanel = New Panel($hList) ' hPanel.Resize(1, 1) ' hPanel.Expand = True ' Endif ' hDrawingArea = New DrawingArea($hList) As "dwgTitle" ' With hDrawingArea ' .Enabled = False ' .Tag = Project.ExampleTitle[sDir] ' sGroup = .Tag ' '.Font = Font["Bold"] ' .H = .Font.Height ' If $iArrange = Arrange.Row Then .Expand = True ' End With ' 'bHighlight = False ' sLastDir = sDir ' Endif hProjectItem = New ProjectBox($hList) As "ProjectItem" If $iArrange = Arrange.Row Then hProjectItem.ResizeScaled(32, 16) Else hProjectItem.ResizeScaled(1, 9) Endif hProjectItem.ShowAuthors = True hProjectItem.Path = sExample 'hProjectItem.Group = sGroup Next ApplyFilter($hFilter.Text) $hList.Margin = True $hList.Arrangement = $iArrange $hFilter.Enabled = True Endif Dec Application.Busy End Private Sub GetSoftwares() As String[] Dim sFile As String Dim aList As New String[] Dim sDir As String Dim hStat As Stat Dim sVendor As String sDir = Desktop.DataDir &/ "gambas3/src/" If Not IsDir(sDir) Then Return aList For Each sVendor In Dir(sDir) For Each sFile In Dir(sDir &/ sVendor) If Left(sFile) = "." Then Continue hStat = Stat(sDir &/ sVendor &/ sFile) If hStat.Link Then Continue aList.Add(sDir &/ sVendor &/ sFile) Next Next aList.Sort(gb.Natural) Return aList End Public Sub IsVoid() As Boolean Return $iCount = 0 End Private Sub FillWithSoftware() Dim hProjectItem As ProjectBox Dim sGroup As String Dim aSoft As String[] Dim sSoft As String Dim sDir As String Dim sLastDir As String Dim hPanel As Panel Dim hDrawingArea As DrawingArea Dim sTitle As String Inc Application.Busy $hList.Arrangement = Arrange.None aSoft = GetSoftwares() $iCount = aSoft.Count If aSoft.Count = 0 Then Else Clear For Each sSoft In aSoft sDir = File.Dir(sSoft) If sDir <> sLastDir Then If $iArrange = Arrange.Row And If $hList.Children.Count Then hPanel = New Panel($hList) hPanel.Resize(1, 1) hPanel.Expand = True Endif hDrawingArea = New DrawingArea($hList) As "dwgTitle" With hDrawingArea .Enabled = False sTitle = File.Name(sDir) If sTitle = ".extension" Then sTitle = ("IDE extensions") Else sTitle = String.UCaseFirst(sTitle) Endif .Tag = sTitle sGroup = .Tag '.Font = Font["Bold"] .H = .Font.Height If $iArrange = Arrange.Row Then .Expand = True End With 'bHighlight = False sLastDir = sDir Endif hProjectItem = New ProjectBox($hList) As "ProjectItem" If $iArrange = Arrange.Row Then hProjectItem.ResizeScaled(32, 16) Else hProjectItem.ResizeScaled(1, 9) Endif hProjectItem.ShowAuthors = True hProjectItem.ShowRemove = True hProjectItem.Path = sSoft hProjectItem.Group = sGroup Next ApplyFilter($hFilter.Text) $hList.Arrangement = $iArrange $hFilter.Enabled = True Endif Dec Application.Busy End Private Sub GetTemplates() As String[] Dim sFile As String Dim aList As New String[] Dim sDir As String sDir = System.Path &/ "share/" & "gambas" & System.Version &/ "template" If IsDir(sDir) Then For Each sFile In Dir(sDir).Sort(gb.Natural) If Left(sFile) = "." Then Continue If Not Exist(sDir &/ sFile &/ ".project") Then Continue aList.Add(sDir &/ sFile) Next Endif sDir = Desktop.DataDir &/ "gambas3/template/" If IsDir(sDir) Then For Each sFile In Dir(sDir).Sort(gb.Natural) If Left(sFile) = "." Then Continue If Not Exist(sDir &/ sFile &/ ".project") Then Continue aList.Add(sDir &/ sFile) Next Endif Return aList End Private Sub FillWithTemplate() Dim hProjectItem As ProjectBox Dim sGroup As String Dim aSoft As String[] Dim sSoft As String Dim sComp As String Inc Application.Busy $hList.Arrangement = Arrange.None aSoft = GetTemplates() $iCount = aSoft.Count If aSoft.Count Then Clear For Each sSoft In aSoft hProjectItem = New ProjectBox($hList) As "ProjectItem" hProjectItem.ResizeScaled(40, 16) hProjectItem.Path = sSoft hProjectItem.Group = sGroup hProjectItem.Template = True For Each sComp In hProjectItem.Info.Components If Not Project.Documentation.Exist(sComp) Then hProjectItem.Enabled = False Break Endif Next Next ApplyFilter($hFilter.Text) $hList.Arrangement = $iArrange $hFilter.Enabled = True Endif Dec Application.Busy End Public Sub Clear() $hList.Children.Clear $hHelp = Null $hCurrent = Null End Private Sub FillWithRecent(bClear As Boolean) Dim hProjectItem As ProjectBox 'Dim hFirst As ProjectBox Dim aRecent As CRecentProject[] Dim hRecent As CRecentProject 'Dim bHighlight As Boolean Dim sTitle As String Dim sLastTitle As String Dim hDrawingArea As DrawingArea Dim hPanel As Panel If Not bClear Then If $hList.Children.Count And If Not CRecentProject.IsOutOfDate($dRecent) Then Return Endif Inc Application.Busy 'panRecent.Hide 'lstRecent.Lock $hList.Arrangement = Arrange.None Clear() aRecent = CRecentProject.Get($iSort) $iCount = aRecent.Count For Each hRecent In aRecent sTitle = hRecent.GetTitle($iSort) If sTitle <> sLastTitle Then If $iArrange = Arrange.Row Then If $hList.Children.Count Then hPanel = New Panel($hList) hPanel.Resize(1, 1) hPanel.Expand = True Endif Endif hDrawingArea = New DrawingArea($hList) As "dwgTitle" With hDrawingArea .Enabled = False .Tag = sTitle '.Font = Font["Bold"] .H = .Font.Height If $iArrange = Arrange.Row Then .Expand = True End With sLastTitle = sTitle Endif hProjectItem = New ProjectBox($hList) As "ProjectItem" If $iArrange = Arrange.Row Then hProjectItem.ResizeScaled(32, 16) Else hProjectItem.ResizeScaled(1, 9) Endif hProjectItem.ShowAuthors = True hProjectItem.ShowRemove = True hProjectItem.Path = hRecent.Path Next ApplyFilter($hFilter.Text) 'If hFirst Then hFirst.Selected = True ' Workaround a scrollview bug that does not show the scrollbars. 'lstRecent.Unlock 'panRecent.Show $dRecent = CRecentProject.LastLoad $hList.Arrangement = $iArrange $hList.ScrollY = 0 $hFilter.Enabled = aRecent.Count Dec Application.Busy End Public Sub Fill(Optional bClear As Boolean) Select Case $iType Case TYPE_RECENT FillWithRecent(bClear) Case TYPE_EXAMPLE FillWithExample Case TYPE_SOFTWARE FillWithSoftware Case TYPE_TEMPLATE FillWithTemplate End Select Raise Fill End Public Sub ApplyFilter(sFilter As String) Dim hCtrl, hLast As Control Dim hProjectItem As ProjectBox Dim bShowEnd As Boolean If Len(sFilter) And If Len(sFilter) < 3 Then Return $hList.Arrangement = Arrange.None If $bNoFilter Or If Not sFilter Then sFilter = "*" Else sFilter = "*" & String.LCase(sFilter) & "*" Endif For Each hCtrl In $hList.Children If hCtrl Is ProjectBox Then hProjectItem = hCtrl hProjectItem.Visible = hProjectItem.Match(sFilter) ' If hProjectItem.Visible Then ' If Not hFirst Then hFirst = hProjectItem ' Endif Endif Next For Each hCtrl In $hList.Children If hCtrl Is DrawingArea Then If hLast Then hLast.Hide Endif hLast = hCtrl bShowEnd = False Else If hCtrl Is ProjectBox Then If hCtrl.Visible Then If hLast Then hLast.Show Endif hLast = Null bShowEnd = True Endif Else hCtrl.Visible = bShowEnd Endif Next If hLast Then hLast.Hide $hList.Arrangement = Arrange.Row 'hFirst.Selected = True 'hList.Unlock End Public Sub dwgTitle_Draw() Dim hDrawingArea As DrawingArea = Last Paint.Background = Color.Merge(Color.LightForeground, Color.Foreground) Paint.DrawText(hDrawingArea.Tag, 1, 0, Paint.W, Paint.H, Align.BottomNormal) End Public Sub ProjectItem_Click() Me.Current = Last Raise Click($hCurrent.Path, False) End Public Sub ProjectItem_DblClick() Me.Current = Last Raise DblClick($hCurrent.Path) End Public Sub ProjectItem_ButtonClick() Raise Click(Last.Path, True) End Public Sub ProjectItem_RemoveClick() Dim hItem As ProjectBox = Last Dim sErr As String If $hCurrent = hItem Then $hCurrent = Null If $iType = TYPE_RECENT Then CRecentProject.Remove(hItem.Path) hItem.Delete Else If $iType = TYPE_SOFTWARE Then If Message.Question(("Do you really want to uninstall this software?"), ("Uninstall"), ("Cancel")) = 1 Then sErr = CSoftware.UninstallFromPath(hItem.Path) If sErr Then Message.Error(("Unable to uninstall software:") & "\n\n" & sErr) Else Clear Fill Message(("The software has been successfully uninstalled.")) Raise Refresh Endif Endif Endif End ' Public Sub ProjectItem_preparePopUp(item As ProjectBox) ' ' $hCurrent = item ' ' End ' Public Sub GetFirst() As String Dim hChild As Control Dim hProjectItem As ProjectBox For Each hChild In $hList.Children Try hProjectItem = hChild If Not Error And If hProjectItem.Visible Then Return hProjectItem.Path Next End Public Sub Filter_Click() $hFilter.Text = "" End Public Sub Filter_Change() ApplyFilter($hFilter.Text) $hList.Scroll(0, 0) End Public Sub Filter_Activate() Dim sFirst As String = GetFirst() If sFirst Then Raise Click(sFirst, False) End Public Sub ScrollView_GotFocus() $hFilter.SetFocus End ' Public Sub ScrollView_Arrange() ' ' Debug $hList.Name;; $hList.Children.Count;; ' If $hList.Children.Count Then ' Error Str($hList.Children[0].Visible);; ' Endif ' Error ' ' End Private Function AllowOpenExtern_Read() As Boolean Return ProjectBox.ShowButton End Private Sub AllowOpenExtern_Write(Value As Boolean) ProjectBox.ShowButton = Value End Public Sub ExampleWebView_Start() Dim hTimer As Timer If Last.Link = "farm://" Then hTimer = New Timer As "TimerFarm" hTimer.Trigger Stop Event Endif End Public Sub TimerFarm_Timer() FSoftwareFarm.Run Fill End Public Sub ExampleWebView_Menu() Stop Event End Private Function Current_Read() As ProjectBox Return $hCurrent End Private Sub Current_Write(Value As ProjectBox) If $hCurrent = Value Then Return If IsNull(Value) Then $hCurrent = Value Return Endif If $hCurrent Then $hCurrent.Selected = False $hCurrent = Value If $hCurrent Then $hCurrent.Selected = True End gambas-3.16.3/app/src/gambas3/.src/Project/CProjectTree.class000066400000000000000000000632101411575327000235640ustar00rootroot00000000000000' Gambas class file Public Const KEY_SOURCE As String = "$S" Public Const KEY_MISC As String = "$O" Public Const KEY_PROJECT As String = "$P" Public Const KEY_PUBLIC As String = "$B" Public Const KEY_CONNECTION As String = "$D" Public Const KEY_EXTERN As String = "$X" Public Sources As Collection Private $hTree As TreeView Private $sDir As String Private $bCurrentProject As Boolean Private $sSourceDir As String Private $aInheritance As New String[] Private $hInfo As CProjectInfo Private $hObserver As Observer Private $cFilter As Collection Private $bHasJustCollapsed As Boolean Private $bExpandOnMouseUp As Boolean Private $cExtern As New Collection Private $sStartup As String Public Sub _new(sDir As String) $sDir = sDir $bCurrentProject = $sDir = Project.Dir If $bCurrentProject Then Project.Tree = Me $sSourceDir = sDir &/ ".src" If Not Exist($sSourceDir) Then $sSourceDir = $sDir $hInfo = New CProjectInfo(sDir) $sStartup = $hInfo.Startup End Public Sub RefreshInfo() $hInfo = New CProjectInfo($sDir) End Public Sub SetView(hTreeView As TreeView) If $hTree And If $hTree <> hTreeView Then Error.Raise("TreeView already set") $hTree = hTreeView If $bCurrentProject Then Project.ProjectTree = hTreeView $hObserver = New Observer(hTreeView) As "TreeView" FillTree End Private Sub AddFile(sDir As String, sFile As String, Optional bAfter As Boolean, Optional bIgnoreInheritance As Boolean) As Boolean Dim bIgnore As Boolean Dim sPath As String Dim sKey As String Dim bShow As Boolean Dim sExt As String Dim sParent As String Dim hPict As Picture Dim bChecked As Boolean Dim bDir As Boolean Dim sAfter As String Dim hModule As CModule Dim bSource As Boolean Dim bExtern As Boolean Dim sTitle As String Dim hStat As Stat Dim bParentLink As Boolean Dim bStartup As Boolean 'Dim bCompressed As Boolean sPath = sDir &/ sFile If $cFilter And If Not $cFilter.Exist(sPath) Then Return sKey = sPath sParent = sDir If sDir = $sDir Then sParent = KEY_MISC Else If sDir = $sDir &/ ".hidden" Then sParent = KEY_PROJECT Else If sDir = $sDir &/ ".public" Then sParent = KEY_PUBLIC Else If sDir = $sSourceDir Then sParent = KEY_SOURCE Else If sDir = $sDir &/ ".connection" Then sParent = KEY_CONNECTION Else If $cExtern.Exist(sPath) Then sParent = KEY_EXTERN If Not $hTree.Exist(sParent) Then $hTree.Add(sParent, ("Files"), Picture["icon:/small/system"], $sDir) bExtern = True Try sTitle = Project.Files[sPath].GetTitle() If sTitle Then sFile = sTitle Endif Try hStat = Stat(sPath) If Error Then Return With hStat If .Hidden Then Return bShow = False If Not bExtern Then bSource = IsSourcePath(sDir &/ sFile) If IsDir(sPath) Then If sFile = "CVS" Or If sFile = "CVSROOT" Then Return bDir = True Else 'IF InStr(.Perm.User & .Perm.Group & .Perm.Other, "x") THEN CONTINUE sExt = Lower(File.Ext(sFile)) bChecked = False If bSource Then If CModule.Ext.Exist(sExt) Then 'sIcon = IMAGE_DIR &/ sExt & ".png" bShow = sDir = $sSourceDir bChecked = True sParent = "" If sExt = "class" Then For Each hModule In CModule.All If Exist(sDir &/ File.BaseName(sFile) & "." & hModule.Key) Then bIgnore = True Break Endif Next If Not bIgnore Then 'IF sFile = "ReportContainer.class" THEN STOP If Project.UseInheritance Then sParent = FindKey(Project.GetParentClass(sPath)) If sParent Then If File.Ext(sParent) <> "class" Then sParent = "" Else If Not $hTree.Exist(sParent) Then If Not bIgnoreInheritance Then $aInheritance.Add(sPath) bIgnore = True Else sParent = "" Endif Else If File.Dir(sParent) <> sDir Then bParentLink = True Endif Endif Endif ' Else If sExt = "module" Then ' Else ' 'hModule = CModule[sExt] ' 'sParent = hModule.TreeKey ' 'If Not hModule.Used Then bIgnore = True ' sParent = sDir ' Else If sExt <> "module" Then ' 'If Not HasModule(sExt) Then ' ' bIgnore = True ' 'Endif Endif If Not sParent Then sParent = sDir If sParent = $sSourceDir Then sParent = KEY_SOURCE If Sources[sFile] <> sPath Then bIgnore = True Endif sFile = File.BaseName(sFile) bStartup = sFile = $sStartup Endif Else If IsConnectionPath(sDir &/ sFile) Then If $hInfo.Components.Exist("gb.db") And If sExt = "connection" Then sFile = File.BaseName(sFile) Else bIgnore = True Endif ' Else ' ' If $bCurrentProject Then ' bCompressed = Project.ShouldCompress(sDir &/ sFile) ' Endif Endif If Not bChecked Then If Right$(sFile) = "~" Then bIgnore = True Else If sDir = $sDir And If sExt = "gambas" Then bIgnore = True Endif Endif Endif If sExt = "mine" Or If Left(sExt) = "r" And IsDigit(Mid$(sExt, 2)) Then If Exist(sDir &/ File.BaseName(sPath)) Then bIgnore = True Endif Endif If Not $hTree.Exist(sParent) Then bIgnore = True If Not bIgnore Then hPict = GetFileIcon(sPath,, hStat,, bParentLink) If bAfter Then With $hTree .MoveTo(sParent) .MoveChild If Not bDir Then While .Available If Not IsDir(.Item.Key) Then Break sAfter = .Item.Key .MoveNext Wend Endif While .Available If String.Comp(.Item.Text, sFile, gb.IgnoreCase + gb.Natural) > 0 Then Break If bDir And If Not IsDir(.Item.Key) Then Break sAfter = .Item.Key .MoveNext Wend End With Endif If $hTree.Exist(sKey) Then With $hTree[sKey] .Text = sFile .Picture = hPict .Reparent(sParent) End With Else $hTree.Add(sKey, sFile, hPict, sParent) If bDir And If Not bSource Then $hTree.Add(sKey & "/", "",, sKey) bDir = False Endif Endif With $hTree[sKey] If bStartup Then .Font = $hTree.Font .Font.Underline = True .Font.Bold = True Else .Font = Null Endif ' If bCompressed Then ' .RichText = Html(.Text) & " ⇣" ' Else ' .RichText = "" ' Endif If $bCurrentProject Then .Editable = Not Project.IsLocked(sKey) If bAfter Then .MoveAfter(sAfter) If bShow Then $hTree.MoveTo(sKey) $hTree.MoveParent $hTree.Item.Expanded = True Endif End With If $bCurrentProject Then Project.RefreshIcon(sKey) 'hForm = Files[sKey] 'If hForm Then hForm.Icon = GetFileIcon(sKey, 16) Endif End With Return bDir End Private Procedure AddDir(Optional sDir As String) Dim cDir As New String[] Dim sFile As String Dim aFile As New String[] If sDir Then cDir.Add(sDir) Else cDir.Add($sDir) If $sDir <> $sSourceDir Then cDir.Add($sSourceDir) Endif Repeat sDir = cDir[0] cDir.Remove(0) If Not IsDir(sDir) Then Continue aFile.Clear '$bGetSource = FALSE For Each sFile In Dir(sDir, "*") If IsDir(sDir &/ sFile) Then aFile.Add("D" & sFile) Next For Each sFile In Dir(sDir, "*") If Not IsDir(sDir &/ sFile) Then aFile.Add("F" & sFile) Next aFile.Sort(gb.Natural) $aInheritance.Clear For Each sFile In aFile sFile = Mid$(sFile, 2) If AddFile(sDir, sFile, True) Then cDir.Add(sDir &/ sFile) 'AddFile(sDir, sFile, True) Next DoRefreshAfter Until cDir.Count = 0 End Private Sub FillTree(Optional bDoNotRefreshCache As Boolean) Dim sKey As String 'Dim sKeyReset As String '$bDisplayForm = Settings["/DisplayForm"] For Each $cExtern If Not Exist($cExtern.Key) Then $cExtern.Remove($cExtern.Key) Next If Not bDoNotRefreshCache Then RefreshSources With $hTree .Clear() sKey = $sDir .Add(sKey, File.Name($sDir), Project.GetIcon($sDir, 16)) .Add(KEY_PROJECT, ("Project"), Picture["icon:/small/directory"], sKey) '.Add(KEY_MODULE, ("Modules"), Picture["icon:/small/directory"], sKey) '.Add(KEY_CLASS, ("Classes"), Picture["icon:/small/directory"], sKey) .Add(KEY_SOURCE, ("Sources"), Picture["icon:/small/directory"], sKey) If $hInfo.Components.Exist("gb.db") Then .Add(KEY_CONNECTION, ("Connections"), Picture["icon:/small/directory"], sKey) If $hInfo.Components.Exist("gb.web") Then .Add(KEY_PUBLIC, ("Public"), Picture["icon:/small/directory"], sKey) .Add(KEY_MISC, ("Data"), Picture["icon:/small/directory"], sKey) '$bGetSource = TRUE AddDir() If Exist($sDir &/ ".hidden") Then AddDir($sDir &/ ".hidden") If $hInfo.Components.Exist("gb.db") And If Exist($sDir &/ ".connection") Then AddDir($sDir &/ ".connection") If $hInfo.Components.Exist("gb.web") And If Exist($sDir &/ ".public") Then AddDir($sDir &/ ".public") For Each sKey In $cExtern AddFile(File.Dir(sKey), File.Name(sKey)) Next End With With $hTree .MoveFirst While .Available .Item.Expanded = True .MoveNext Wend End With 'If sKeyReset Then sKey = sKeyReset 'SelectKey(sKey) 'DefineStartup(Startup, True) ' For Each sFamily In CFamily.List ' If Not HasModule(sFamily) Then ' For Each hFile In Files ' sPath = Files.Key ' If Not IsSourcePath(sPath) Then Continue ' If Exist(File.SetExt(sPath, sFamily)) Then ' Files.Remove(sPath) ' hFile.Delete ' Endif ' Next ' Endif ' Next End Public Function FindPath(sClass As String) As String Dim sPath As String sPath = Sources[sClass] If sPath Then Return sPath sPath = Sources[sClass & ".class"] If sPath Then Return sPath sPath = Sources[sClass & ".module"] If sPath Then Return sPath sPath = Sources[sClass & ".test"] If sPath Then Return sPath End Public Sub FindKey(sClass As String) As String Dim hModule As CModule Dim sPath As String If Not sClass Then Return For Each hModule In CModule.All sPath = Sources[sClass & "." & hModule.Key] If sPath Then Return sPath Next Return FindPath(sClass) End Public Sub RefreshSources() Dim sPath As String Dim sName As String Sources = New Collection(gb.IgnoreCase) For Each sPath In Project.Browse($sSourceDir) If CModule.Ext.Exist(File.Ext(sPath)) Then sName = File.Name(sPath) Sources[sName] = $sSourceDir &/ sPath Endif Next End Public Sub CheckDuplicates() As String[] Dim sPath As String Dim cName As New Collection Dim aList As New String[] Dim sName As String Dim sDup As String For Each sPath In Project.Browse($sSourceDir) sName = File.Name(sPath) sDup = cName[sName] If Not sDup Then cName[sName] = sPath Else If sDup <> "*" Then aList.Add(sDup) cName[sName] = "*" Endif aList.Add(sPath) Endif Next If aList.Count Then Return aList End Private Sub IsConnectionPath(sPath As String) As Boolean Return sPath Begins $sDir &/ ".connection" &/ "/" End Private Sub DoRefreshAfter() Dim sKey As String Dim iInd As Integer Dim iCount As Integer If $aInheritance.Count = 0 Then Return Do iCount = $aInheritance.Count For iInd = 0 To iCount - 1 sKey = $aInheritance[0] $aInheritance.Remove(0) AddFile(File.Dir(sKey), File.Name(sKey), True) Next If $aInheritance.Count >= iCount Then Break Loop If $aInheritance.Count Then For iInd = 0 To $aInheritance.Max sKey = $aInheritance[iInd] AddFile(File.Dir(sKey), File.Name(sKey), True, True) $aInheritance[iInd] = File.BaseName(sKey) Next 'FMain.ShowError(("The following classes have circular inheritance:") & "\n\n" & $aRefreshAfter.Join(", ")) $aInheritance.Clear Endif End Public Sub Refresh(Optional bDoNotRefreshCache As Boolean, cFilter As Collection) Dim vLayout As Variant $cFilter = cFilter vLayout = $hTree.Layout FillTree(bDoNotRefreshCache) $hTree.Layout = vLayout End Public Sub GetFileIcon(sPath As String, Optional iSize As Integer, hStat As Stat, bNoEmblem As Boolean, bParentLink As Boolean) As Picture Dim hImage As Image Dim hPict As Picture Dim sKey As String Dim sCacheKey As String Dim bLink As Boolean Dim sIcon As String Dim sExt As String Dim bStartup As Boolean Dim iFileSize As Long Dim hFile As File Dim sPrefix As String 'Dim bNoStartup As Boolean Dim bConflict As Boolean Dim sModule As String Dim sLocalPrefix As String Dim bLocked As Boolean Dim bAdded As Boolean Dim hProject As CProjectInfo Dim sLink As String Dim bExported As Boolean Dim fRapport As Float Dim bDoNotTranslate As Boolean Dim bModified As Boolean Dim iEmblemSize As Integer Dim bReadOnly As Boolean Dim bCompressed As Boolean Dim hThumb As Image Dim bImage As Boolean If iSize Then sPrefix = "icon:/" & iSize sLocalPrefix = "img/" & iSize Else sPrefix = "icon:/small" sLocalPrefix = "img/16" iSize = Stock.GetSize("small") Endif If Not hStat Then Try hStat = Stat(sPath) If Error Then Return Endif With hStat bLink = .Type = gb.Link Or bParentLink bConflict = False If $bCurrentProject Then bLocked = Project.IsLocked(sPath) bAdded = Project.IsAdded(sPath) bDoNotTranslate = Not Project.ShouldTranslate(sPath) 'bCompressFile = Project.ShouldCompress(sPath) bModified = Project.IsModified(sPath) bReadOnly = Project.IsReadOnly(sPath) bCompressed = Project.ShouldCompress(sPath) iEmblemSize = iSize Endif '$bLastAdded = bAdded If IsDir(sPath) Then If bLink Then sLink = Project.GetAbsoluteLink(sPath, .Link) 'If Left(sLink) <> "/" Then sLink = sPath &/ sLink sLink = File.Dir(sLink) hProject = New CProjectInfo(sLink) sIcon = hProject.GetIconPath() If iSize = 0 Then iSize = 16 Else sIcon = sPrefix &/ "directory" Endif Else 'bConflict = VersionControl.InConflict(sPath) If $bCurrentProject Then bConflict = Project.IsConflict(sPath) sIcon = "" 'sPrefix &/ "file" sExt = File.Ext(sPath) Select Case sExt Case "form", "class", "module", "test", "webpage", "report", "webform", "termform" If IsSourcePath(sPath) Then sModule = sExt sIcon = sExt 'bStartup = File.BaseName(sPath) = $sStartup 'And Not bNoStartup bExported = Project.IsExported(sPath) Endif Case "jpg", "jpeg", "xpm", "bmp", "png", "gif" If bLink Then Try hFile = Open sPath If Error Then iFileSize = 0 Else iFileSize = Lof(hFile) Close hFile Endif Else iFileSize = .Size Endif If iFileSize > Project.MAX_ICON_SIZE Then sIcon = sPrefix &/ "image" Else sIcon = sPath bImage = True Endif Case "svg", "svgz" sIcon = sPrefix &/ "vector" Case "htm", "html", "css" sIcon = sPrefix &/ "html" Case "js" sIcon = sPrefix &/ "script" Case "txt", "text" sIcon = sPrefix &/ "text" Case "pdf" sIcon = sPrefix &/ "pdf" Case "connection" If Exist(File.SetExt(sPath, "template")) Then bExported = True sIcon = sPrefix &/ "database" Case "console" sIcon = sPrefix &/ "terminal" Case Else Try hImage = DesktopMime.FromFile(sPath).GetIcon(iSize) If hImage Then sIcon = "//" Else sIcon = sPrefix &/ "file" Endif End Select Endif End With If Left$(sIcon) = "/" Then If Not hImage Then Try hImage = Image.Load(sIcon) If hImage Then fRapport = hImage.Width / hImage.Height If fRapport < 1 Then fRapport = 1 / fRapport If fRapport < 8 Then If bImage Then If hImage.H > (iSize * 2 - 4) Then iSize *= 2 Else If hImage.H > (iSize - 4) Then iSize = hImage.H + 4 Endif iSize -= 4 hThumb = hImage.Stretch(hImage.Width * iSize / hImage.Height, iSize) iSize += 4 hImage = New Image(hThumb.W + 4, hThumb.H + 4, Color.Transparent) hImage.DrawImage(hThumb, 2, 2) Paint.Begin(hImage) Paint.DrawRect(0, 0, hImage.W, hImage.H, Color.Merge(Color.TextBackground, Color.LightForeground)) Paint.End Else hImage = hImage.Stretch(hImage.Width * iSize / hImage.Height, iSize) Endif ' If Not bImage Then ' hImage = hImage.Stretch(hImage.Width * iSize / hImage.Height, iSize) ' Else ' iSize = 32 ' If hImage.Height > iSize Then ' hImage = hImage.Stretch(hImage.Width * iSize / hImage.Height, iSize) ' Endif ' If hImage.Width > iSize Then ' hImage = hImage.Stretch(iSize, hImage.Height * iSize / hImage.Width) ' Endif ' Endif Else hImage = Null Endif Endif If Not hImage Then hImage = Picture[sPrefix &/ "image"].Image GoSub ADD_EMBLEM hPict = hImage.Picture Else sKey = File.Dir(sIcon) &/ File.BaseName(sIcon) & "-" If iSize Then sKey &= CStr(iSize) & "-" Else sKey &= "16-" Endif If bLink Then sKey &= "l" If Not bNoEmblem Then 'If bStartup Then sKey &= "s" If bConflict Then sKey &= "c" If bLocked Then sKey &= "k" If bAdded Then sKey &= "a" If bModified Then sKey &= "m" If bExported Then sKey &= "x" If bDoNotTranslate Then sKey &= "t" If bCompressed Then sKey &= "z" If bReadOnly Then sKey &= "r" Endif If Right(sKey) = "-" Then sKey = Left(sKey, -1) sKey &= ".png" 'hPict = NULL 'IF NOT bNoStartup THEN hPict = Picture[sKey] sCacheKey = "$" & Replace(sKey, "icon:/", "$/") Try hPict = Picture[sCacheKey] If Not hPict Then If sModule Then hImage = Project.MakeModuleIcon(sModule, iSize, bStartup And Not bNoEmblem) Else Try hImage = Picture[sIcon].Image If Error Then hImage = Picture[sPrefix &/ "file"].Image Endif 'If Not hPict Then hPict = Picture[sPrefix &/ "file"] 'If Not hPict Then hPict = Picture["img/16/unknown.png"] 'hPict = hPict.Copy() If iSize Then hImage = hImage.Stretch(hImage.Width * iSize / hImage.Height, iSize) GoSub ADD_EMBLEM hPict = hImage.Picture Picture[sCacheKey] = hPict Endif Endif Return hPict ADD_EMBLEM: If bLink Then hImage = Project.AddLinkEmblem(hImage) If bCompressed Then hImage = Project.AddCompressedEmblem(hImage) If Not bNoEmblem Then If bExported Then hImage = Project.AddEmblem(hImage, "img/32/exported.png", iEmblemSize) 'If bCompressed Then hImage = Project.AddEmblem(hImage, "img/32/compressed.png", iEmblemSize) If bDoNotTranslate Then hImage = Project.AddEmblem(hImage, "img/32/do-not-translate.png", iEmblemSize) If bAdded Then hImage = Project.AddEmblem(hImage, "img/32/added.png", iEmblemSize) If bModified Then hImage = Project.AddEmblem(hImage, "img/32/modified.png", iEmblemSize) If bConflict Then hImage = Project.AddEmblem(hImage, "img/32/conflict.png", iEmblemSize) If bLocked Or If bReadOnly Then hImage = Project.AddEmblem(hImage, "icon:/32/lock", iEmblemSize) Endif Return End Private Function IsSourcePath(sPath As String) As Boolean Dim sExt As String If $sSourceDir <> $sDir Then Return sPath & "/" Begins $sSourceDir &/ "/" If Left(sPath) = "/" Then If File.Dir(sPath) <> $sSourceDir Then Return Endif sExt = File.Ext(sPath) If CModule.Ext.Exist(sExt) Then Return True End Public Sub TreeView_Expand() Dim sKey As String Try sKey = $hTree.Item.Key If Not sKey Then Return If Left(sKey) = "$" Then Return FillDir(sKey) End Public Sub TreeView_Collapse() Dim sKey As String = $hTree.Item.Key $bHasJustCollapsed = True If Not sKey Then Return If File.Dir(sKey) = $sDir And If Not IsDir(sKey) Then $hTree[sKey].Expanded = True End Public Sub TreeView_Select() 'RefreshMenu If $hTree.Current And If $hTree.Current.Children Then ' Print Mouse.X ;; Mouse.Y ' generates crashes on random places, strange... 'If Not tvwProject.Find(Mouse.X, Mouse.Y) Then $bExpandOnMouseUp = True 'Endif Endif End Public Sub TreeView_MouseUp() If $bExpandOnMouseUp And If Not $bHasJustCollapsed Then Try $hTree.Current.Expanded = True Endif $bExpandOnMouseUp = False $bHasJustCollapsed = False End Public Sub FillDir(sDir As String) If Not sDir Then Return If Left(sDir) = "$" Then Return If Not IsDir(sDir) Then Return $hTree.MoveTo(sDir) If $hTree.MoveChild() Then Return If $hTree.Item.Key <> sDir & "/" Then Return Inc Application.Busy $hTree[sDir & "/"].Delete AddDir(sDir) Dec Application.Busy Catch Debug Error.Where; ": "; Error.Text Dec Application.Busy End Public Sub EnsureKey(sKey As String) Dim sPath As String Dim sElt As String If Not $hTree Then Return sPath = "/" For Each sElt In Split(sKey, "/") sPath &/= sElt If $hTree.Exist(sPath) Then FillDir(sPath) Next End Public Sub SelectKey(sKey As String) Dim hModule As CModule Dim sBase As String If Not $hTree Then Return EnsureKey(sKey) If Not $hTree.Exist(sKey) Then If Right$(sKey, 6) = ".class" Then sBase = Left$(sKey, -6) For Each hModule In CModule.All sKey = sBase & "." & hModule.Key If $hTree.Exist(sKey) Then Break Next Endif Endif Try $hTree[sKey].Selected = True Try $hTree[sKey].EnsureVisible End Public Sub FindForm(sClass As String) As String Dim sFamily As String Dim sPath As String For Each sFamily In CFamily.List sPath = Sources[sClass & "." & sFamily] If Exist(sPath) Then Return sPath Next End Public Function ExistForm(sClass As String) As Boolean Dim sFamily As String For Each sFamily In CFamily.List If Sources.Exist(sClass & "." & sFamily) Then Return True Next End Public Sub HasTest() As Boolean Dim sPath As String For Each sPath In Sources If File.Ext(sPath) = "test" Then Return True Next End Public Sub GetTestModules() As String[] Dim sPath As String Dim aResult As New String[] For Each sPath In Sources If File.Ext(sPath) = "test" Then aResult.Add(sPath) Next aResult.Sort(gb.Natural) Return aResult End Private Sub RefreshInheritance() Dim sKey As String $aInheritance.Clear For Each sKey In Sources If Not File.Ext(sKey) = "class" Then Continue Try $hTree[sKey].Delete $aInheritance.Add(sKey) Next DoRefreshAfter End Private Sub GetOpenedItems(sParent As String) As String[] Dim iLevel As Integer Dim aOpen As String[] aOpen = New String[] $hTree.MoveTo(sParent) Do If Not $hTree.Available Then Dec iLevel If iLevel <= 0 Then Break $hTree.MoveParent $hTree.MoveNext Else If $hTree.Item.Expanded Then aOpen.Add($hTree.Item.Key) Inc iLevel $hTree.MoveChild() Else $hTree.MoveNext Endif Loop Return aOpen End Public Sub RefreshKey(sKey As String, Optional sOld As String) Dim aOpen As String[] Dim sOpen As String If Not $hTree Then Return If Not sKey Then Return If Not $hTree.Exist(sKey) And If Not Exist(sKey) And If IsSourcePath(sKey) Then sKey = FindForm(File.BaseName(sKey)) Endif If Not Exist(sKey) Then Try $hTree.Remove(sKey) Return Endif If Not sOld Or If sOld = sKey Then EnsureKey(sKey) AddFile(File.Dir(sKey), File.Name(sKey), True) Else aOpen = GetOpenedItems(sOld) EnsureKey(sOld) Try $hTree[sOld].Delete If Error Then Return If IsSourcePath(sKey) And If File.Ext(sKey) = "class" And If Not ExistForm(File.BaseName(sKey)) Then RefreshInheritance Else If AddFile(File.Dir(sKey), File.Name(sKey), True) Then AddDir(sKey) If Exist(sOld) Then If AddFile(File.Dir(sOld), File.Name(sOld), True) Then AddDir(sOld) Endif Endif For Each sOpen In aOpen If sOpen Begins sOld Then $hTree[sKey & Mid$(sOpen, Len(sOld) + 1)].Expanded = True Next Endif End Public Sub AddExtern(sPath As String) $cExtern[sPath] = True End Public Sub ExistClass(sClass As String) As Boolean If Sources.Exist(sClass & ".class") Then Return True If Sources.Exist(sClass & ".module") Then Return True If Sources.Exist(sClass & ".test") Then Return True End Public Sub DefineStartup(sClass As String) As String If sClass <> $sStartup Then Swap $sStartup, sClass RefreshKey(FindKey(sClass)) RefreshKey(FindKey($sStartup)) Endif Return $sStartup End gambas-3.16.3/app/src/gambas3/.src/Project/Component/000077500000000000000000000000001411575327000221445ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/Component/ComponentChooser.class000066400000000000000000000051421411575327000264620ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border=True" Public Const _DefaultEvent As String = "Activate" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "Chooser" Public Const _DrawWith As String = "DrawingArea" Public Enum Unchecked = 0, Checked = 1, GrayChecked = 2 Event Select Event Activate Property Border As Boolean 'Property Components As String[] Property Current As String Property ShowDeprecated As Boolean Property ShowCheckedOnly As Boolean Property Checkable As Boolean Property HiddenComponents As String[] Property CheckedComponents As String[] Property Libraries As String[] Private $hForm As FComponentChooser Public Sub _new() $hForm = New FComponentChooser(Me) End Private Function Border_Read() As Boolean Return $hForm.HasBorder() End Private Sub Border_Write(Value As Boolean) $hForm.SetBorder(Value) End ' Private Function Components_Read() As String[] ' ' Return $hForm.GetComponents() ' ' End ' ' Private Sub Components_Write(Value As String[]) ' ' $hForm.SetComponents(Value) ' ' End Private Function Current_Read() As String Return $hForm.GetCurrent() End Private Sub Current_Write(Value As String) $hForm.SetCurrent(Value) End Private Function ShowDeprecated_Read() As Boolean Return $hForm.GetShowDeprecated() End Private Sub ShowDeprecated_Write(Value As Boolean) $hForm.SetShowDeprecated(Value) End Private Function HiddenComponents_Read() As String[] Return $hForm.GetHiddenComponents() End Private Sub HiddenComponents_Write(Value As String[]) $hForm.SetHiddenComponents(Value) End Private Function Checkable_Read() As Boolean Return $hForm.IsCheckable() End Private Sub Checkable_Write(Value As Boolean) $hForm.SetCheckable(Value) End Public Sub SetFocus() $hForm.SetFocus End Private Function CheckedComponents_Read() As String[] Return $hForm.GetCheckedComponents() End Private Sub CheckedComponents_Write(Value As String[]) $hForm.SetCheckedComponents(Value) End Public Sub CheckSelection() As Boolean Return $hForm.CheckSelection() End Public Sub IsChecked(sComp As String) As Boolean Return $hForm.IsChecked(sComp) End Private Function ShowCheckedOnly_Read() As Boolean Return $hForm.GetShowCheckedOnly() End Private Sub ShowCheckedOnly_Write(Value As Boolean) $hForm.SetCheckedOnly(Value) End Public Sub HideBrowser() $hForm.HideBrowser End Private Function Libraries_Read() As String[] Return $hForm.GetLibraries() End Private Sub Libraries_Write(Value As String[]) $hForm.SetLibraries(Value) End gambas-3.16.3/app/src/gambas3/.src/Project/Component/FComponentChooser.class000066400000000000000000000431501411575327000265710ustar00rootroot00000000000000' Gambas class file Public Struct ComponentChooserItem Key As String Checked As Boolean Dependencies As String[] End Struct Static Private Const DEFAULT_ZOOM As Float = 1 Static Private $aPict As Picture[] Static Private $hPictLocked As Picture Private $aComp As String[] Private $cComp As Collection Private $bShowDeprecated As Boolean Private $aHidden As String[] Private $iTooltipLastRow As Integer Private $bShowCheckedOnly As Boolean Private $aLibraries As New String[] 'Private $iRow As Integer = -1 ' Private Sub GetParent() As ComponentChooser ' ' Return Me.Parent ' ' End Public Sub _new() Dim hBorder As Border hBorder = Border("style:none;bottom-style:solid;padding:2 0 0 8;") hBorder.Color = Color.Gradient(Color.LightForeground, Color.TextBackground) gvwComponent.Rows.Border = hBorder 'gvwComponent.Padding = 4 gvwComponent.Columns.Count = 5 gvwComponent.Columns[0].Width = 16 'gvwComponent.Columns[0].Expand = False 'gvwComponent.Columns[1].Expand = False gvwComponent.Columns[2].Expand = True gvwComponent.Columns[3].Width = 24 gvwComponent.Columns[4].Width = 24 'gvwComponent.Columns[3].Expand = False SetCheckable(False) RefreshList btnZoomNormal_Click End Private Sub RefreshList() Dim aComp As New String[] Dim hComp As CComponent Dim sComp As String Dim sFilter As String Dim I As Integer sFilter = txtFilter.Text For Each hComp In Project.Documentation.Components sComp = hComp.Key If hComp.Hidden Then Continue If hComp.Library Then Continue If hComp.Key = CComponent.PROJECT_NAME Then Continue 'If hComp.Key = Project.Name Then Continue If $aHidden And If $aHidden.Exist(sComp) Then Continue If sFilter And If Not hComp.Match(sFilter) Then Continue If $cComp Then If Not IsChecked(sComp) Then If $bShowCheckedOnly Then Continue If hComp.State = CComponent.DEPRECATED And If Not $bShowDeprecated Then Continue Endif aComp.Add(If(IsChecked(sComp), "0", "1") & sComp) Else If hComp.State = CComponent.DEPRECATED And If Not $bShowDeprecated Then Continue aComp.Add(sComp) Endif Next If $cComp Then For Each $cComp sComp = $cComp.Key hComp = Project.Documentation.Components[sComp] If hComp Then Continue If $cComp Then If Not IsChecked(sComp) Then If $bShowCheckedOnly Then Continue Endif aComp.Add(If(IsChecked(sComp), "0", "1") & sComp) Else aComp.Add(sComp) Endif Next Endif aComp.Sort(gb.Natural) If $cComp Then For I = 0 To aComp.Max aComp[I] = Mid$(aComp[I], 2) Next Endif SetComponents(aComp) End Public Sub txtFilter_Filter() RefreshList End Public Sub btnForward_Click() webAboutComponent.Forward End ' Public Sub webAboutComponent_Click((Frame) As WebFrame) ' ' btnForward.Enabled = webAboutComponent.History.Index < webAboutComponent.History.Max ' ' End Public Sub btnStop_Click() webAboutComponent.Stop End Public Sub btnReload_Click() webAboutComponent.Reload End Public Sub btnZoomIn_Click() webAboutComponent.Zoom = Round(webAboutComponent.Zoom * 1.125, -3) End Public Sub btnZoomOut_Click() webAboutComponent.Zoom = Round(webAboutComponent.Zoom / 1.125, -3) End Public Sub btnZoomNormal_Click() webAboutComponent.Zoom = DEFAULT_ZOOM End Public Sub btnBack_Click() If webAboutComponent.History.CanGoBack Then webAboutComponent.Back Else 'webAboutComponent.Stop webAboutComponent.Clear wizComponent.MovePrevious Endif End Private Sub SetComponents(Value As String[]) If Not Value Then Value = New String[] $aComp = Value gvwComponent.UnSelectAll gvwComponent.Rows.Count = $aComp.Count 'gvwComponent.Columns[1].W = -1 gvwComponent_Arrange End Public Sub gvwComponent_Data(Row As Integer, Column As Integer) Dim sComp As String = $aComp[Row] Dim hComp As CComponent = Project.Documentation[sComp] If Not hComp Then hComp = CComponent.GetUnknown(sComp) With gvwComponent.Data If hComp.State = CComponent.UNSTABLE Then .Foreground = Color.LightForeground Else If hComp.State = CComponent.DEPRECATED Then .Foreground = Color.LightForeground .Font.Strikeout = True Else If hComp.State = CComponent.Unknown Then .Foreground = Color.LightForeground .Font.Italic = True Endif Select Case Column Case 0 ' If $cComp Then ' If sComp = "gb" Then ' .Picture = $hPictLocked ' Else ' .Picture = $aPict[GetState(sComp)] ' Endif ' Endif Case 1 .Text = hComp.Key & " " .Font.Bold = True Case 2 .WordWrap = True .RichText = hComp.Name Case 3 Select Case hComp.State Case CComponent.STABLE_NOT_FINISHED .Picture = Picture["img/component/unfinished.png"] Case CComponent.UNSTABLE .Picture = Picture["img/component/experimental.png"] Case CComponent.STABLE .Picture = Picture["img/component/finished.png"] Case CComponent.DEPRECATED .Picture = Picture["img/component/deprecated.png"] 'Case CComponent.UNKNOWN ' .Picture = Picture["img/component/unknown.png"] End Select Case 4 If hComp.State <> CComponent.UNKNOWN Then .Picture = Picture["icon:/small/next"] End Select .Alignment = Align.TopNormal '.Background = If(Even(Row), Color.Gradient(Color.LightForeground, Color.TextBackground, 0.9), Color.TextBackground) .Background = Color.Gradient(Color.LightForeground, Color.TextBackground, 0.96) End With End Public Function GetCurrent() As String Try Return $aComp[gvwComponent.Row] End Public Sub SetCurrent(Value As String) gvwComponent.Row = $aComp.Find(Value) End Public Sub gvwComponent_Arrange() Dim I As Integer gvwComponent.Columns[1].Width = -1 For I = 0 To $aComp.Max gvwComponent.Rows[I].H = -1 'Debug I;; gvwComponent.Rows[I].H Next End Public Sub HasBorder() As Boolean Return wizComponent.Border End Public Sub SetBorder(Value As Boolean) wizComponent.Border = Value End Public Sub GetShowDeprecated() As Boolean Return $bShowDeprecated End Public Sub SetShowDeprecated(Value As Boolean) $bShowDeprecated = Value RefreshList End Public Sub GetHiddenComponents() As String[] Return $aHidden End Public Sub SetHiddenComponents(Value As String[]) $aHidden = Value RefreshList End ' Private Sub SetCurrentRow(iRow As Integer) ' ' If iRow = $iRow Then Return ' ' If $iRow >= 0 Then gvwComponent.Rows[$iRow].Refresh ' $iRow = iRow ' If $iRow >= 0 Then gvwComponent.Rows[$iRow].Refresh ' ' End Public Sub gvwComponent_MouseMove() Dim hComp As CComponent Dim sText As String Dim iCol As Integer Dim iRow As Integer iRow = gvwComponent.RowAt(Mouse.ScreenY - gvwComponent.ScreenY - gvwComponent.ClientY) iCol = gvwComponent.ColumnAt(Mouse.ScreenX - gvwComponent.ScreenX - gvwComponent.ClientX) If iCol < 0 Then iRow = -1 If iCol >= 3 Then Try hComp = Project.Documentation[$aComp[iRow]] If iCol = 3 Then If hComp Then Select Case hComp.State Case CComponent.STABLE_NOT_FINISHED sText = ("Not finished but stable") Case CComponent.UNSTABLE sText = ("Experimental") Case CComponent.STABLE sText = ("Stable") Case CComponent.DEPRECATED sText = ("Deprecated") End Select Else sText = "" Endif If $iTooltipLastRow <> iRow Then gvwComponent.Tooltip = sText $iTooltipLastRow = iRow Endif Else gvwComponent.Tooltip = "" $iTooltipLastRow = -1 Endif If iCol = 4 And If hComp Then gvwComponent.Mouse = Mouse.Pointing Else gvwComponent.Mouse = Mouse.Default Endif 'SetCurrentRow(iRow) End Public Sub IsCheckable() As Boolean Return $cComp End Public Sub SetCheckable(Value As Boolean) gvwComponent.Columns[0].W = If(Value, 32, 8) If Value Then If Not $aPict Then $aPict = New Picture[3] $aPict[ComponentChooser.Unchecked] = Picture["img/16/unchecked.png"] $aPict[ComponentChooser.Checked] = Picture["img/16/checked.png"] $aPict[ComponentChooser.GrayChecked] = Picture["img/16/checked-gray.png"] $hPictLocked = Picture["img/16/checked-lock.png"] Endif $cComp = New Collection Else $cComp = Null Endif End Private Sub GetState(sComp As String) As Integer Dim hComp As ComponentChooserItem If sComp = "gb" Then Return ComponentChooser.Checked hComp = $cComp[sComp] If hComp Then If hComp.Checked Then Return ComponentChooser.Checked If hComp.Dependencies.Count Then Return ComponentChooser.GrayChecked Endif End Public Sub IsChecked(sComp As String) As Boolean Return GetState(sComp) End Public Sub gvwComponent_Leave() gvwComponent.Tooltip = "" 'SetCurrentRow(-1) End Public Sub gvwComponent_Enter() $iTooltipLastRow = -1 gvwComponent_MouseMove End Public Sub SetFocus() txtFilter.SetFocus End Public Sub gvwComponent_Click() Dim sComp As String = GetCurrent() If gvwComponent.Column = 0 And IsCheckable() Then sComp = $aComp[gvwComponent.Row] If sComp = "gb" Then Return If Not Project.Documentation.Exist(sComp) Then Return Select Case GetState(sComp) Case ComponentChooser.Checked UncheckComponent(sComp) Case Else CheckComponent(sComp) End Select Else If gvwComponent.Column = 4 And If Project.Documentation.Exist(sComp) Then MHelp.InitWebViewWith(webAboutComponent, MHelp.TYPE_COMPONENT, GetCurrent(),, "v&nh") webAboutComponent.Zoom = Settings["/Help/Zoom", 80] / 100 wizComponent.MoveNext Endif ' For Each sDep In GetRequire(hCompItem.Key) ' If hCompItem.Value Then ' $cComp[sDep].Check(hCompItem.Key) ' Else ' $cComp[sDep].Uncheck(hCompItem.Key) ' Endif ' Next End Private Sub GetRequire(sComp As String) As String[] Dim hComp As CComponent = Project.Documentation[sComp] If hComp Then Return hComp.Require Else Return New String[] Endif End Public Sub CheckComponent(sComp As String, Optional sParent As String) Dim hComp As ComponentChooserItem Dim sDep As String If sComp = "gb" Then Return hComp = $cComp[sComp] If Not hComp Then hComp = New ComponentChooserItem hComp.Key = sComp hComp.Dependencies = New String[] $cComp[sComp] = hComp Endif If sParent Then hComp.Dependencies.Add(sParent) Else hComp.Checked = True Endif For Each sDep In GetRequire(sComp) CheckComponent(sDep, sComp) Next gvwComponent.Refresh End Private Sub GetDependencies(hComp As ComponentChooserItem, Optional bLib As Boolean) As String[] Dim aDep As New String[] Dim sComp As String For Each sComp In hComp.Dependencies If Not sComp Then Continue If Left(sComp) = "/" Then aDep.Add(File.Name(sComp)) Else If Not bLib Then aDep.Add(sComp) Endif Next Return aDep End Public Sub UncheckComponent(sComp As String, Optional sParent As String) As Boolean Dim hComp As ComponentChooserItem Dim sMsg As String Dim aDep As String[] Dim sDep As String If sComp = "gb" Then Return hComp = $cComp[sComp] If Not hComp Then Return If sParent Then If hComp.Dependencies.Exist(sParent) Then hComp.Dependencies.Remove(hComp.Dependencies.Find(sParent)) Return Endif Endif aDep = GetDependencies(hComp, True) If aDep.Count Then If aDep.Count = 1 Then sMsg = Subst(("This component is required by the following library:

      &1"), "" & aDep[0] & "") Else sMsg = Subst(("This component is required by the following libraries:

      &1"), "" & aDep.Join(", ") & "") Endif Message.Warning(sMsg) Return True Endif aDep = GetDependencies(hComp) If aDep.Count Then sMsg = Subst(("This component is required by:

      &1"), "" & aDep.Join(", ") & "") If Message.Warning(sMsg, ("Keep"), ("Remove all")) = 2 Then For Each sDep In aDep UncheckComponent(sDep) Next Endif aDep = GetDependencies(hComp) Endif If aDep.Count = 0 Then $cComp.Remove(sComp) Else hComp.Checked = False Endif For Each sDep In GetRequire(sComp) hComp = $cComp[sDep] hComp.Dependencies.Remove(hComp.Dependencies.Find(sComp)) If hComp.Dependencies.Count = 0 And If Not hComp.Checked Then UncheckComponent(sDep) Next gvwComponent.Refresh End Public Sub SetCheckedComponents(aComp As String[]) Dim sComp As String $cComp.Clear $aLibraries.Clear CheckComponent("gb") For Each sComp In aComp CheckComponent(sComp) Next RefreshList End Public Sub GetCheckedComponents() As String[] Dim hComp As ComponentChooserItem Dim aComp As New String[] For Each hComp In $cComp If hComp.Key <> "gb" Then aComp.Add(hComp.Key) Next Return aComp.Sort() End Public Sub CheckSelection() As Boolean Dim aComp As New String[] Dim hComp As CComponent Dim sComp As String Dim aExclude As String[] Dim aNeed As String[] Dim sImpl As String Dim sExcl As String Dim sNeed As String Dim bFound As Boolean aComp = GetCheckedComponents() For Each sComp In aComp aNeed = New String[] aExclude = New String[] For Each sImpl In Project.Documentation[sComp].Implement For Each hComp In Project.Documentation.Components If hComp.Key = sComp Then Continue If hComp.Implement.Find(sImpl) >= 0 Then If Not aComp.Exist(hComp.Key) Then Continue If aExclude.Find(hComp.Key) < 0 Then aExclude.Add(hComp.Key) Endif Next Next For Each sExcl In Project.Documentation[sComp].Exclude If Not aComp.Exist(sExcl) Then Continue If Not aExclude.Exist(sExcl) Then aExclude.Add(sExcl) Next ' IF aExclude.Count = 1 THEN ' Message.Warning(Subst(("The &2 component is incompatible with the &1 component."), "" & sComp & "", "" & aExclude[0] & "")) ' RETURN TRUE ' ELSE IF aExclude.Count > 1 THEN ' Message.Warning(Subst(("These components are incompatible with the &1 component:\n&2"), "" & sComp & "", "" & aExclude.Join(", ") & "")) ' RETURN TRUE ' ENDIF If aExclude.Count Then Message.Warning(Subst(("These components are incompatible:
      &1."), "" & sComp & ", " & aExclude.Join(", ") & "")) Return True Endif For Each sNeed In Project.Documentation[sComp].Need bFound = False For Each hComp In Project.Documentation.Components If hComp.Implement.Exist(sNeed) Then If Not aNeed.Exist(hComp.Key) Then aNeed.Add(hComp.Key) If aComp.Exist(hComp.Key) Then bFound = True Endif Next If Not bFound Then Message.Warning(Subst(("The &1 component needs one of the following components:
      &2."), "" & sComp & "", "" & aNeed.Join(", ") & "")) Return True Endif Next For Each sNeed In Project.Documentation[sComp].Require If Not aComp.Exist(sNeed) Then Message.Warning(Subst(("The &1 component needs the &2 component."), "" & sComp & "", "" & sNeed & "")) Return True Endif Next Next End Public Sub GetCheckedOnly() As Boolean Return $bShowCheckedOnly End Public Sub SetCheckedOnly(Value As Boolean) $bShowCheckedOnly = Value RefreshList End Public Sub HideBrowser() wizComponent.Index = 0 End Public Sub SetLibraries(Value As String[]) Dim sLib As String Dim hLibInfo As CLibraryInfo Dim sDep As String If Not Value Then Value = New String[] If Value.Join("\n") = $aLibraries.Join("\n") Then Return For Each sLib In $aLibraries hLibInfo = CLibraryInfo[sLib] For Each sDep In hLibInfo.Require UncheckComponent(sDep, sLib) Next Next $aLibraries = Value.Copy() For Each sLib In $aLibraries hLibInfo = CLibraryInfo[sLib] For Each sDep In hLibInfo.Require CheckComponent(sDep, sLib) Next Next End Public Sub GetLibraries() As String[] Return $aLibraries End Public Sub gvwComponent_Scroll() gvwComponent_MouseMove End Public Sub gvwComponent_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) Dim sComp As String = $aComp[Row] Dim DX As Integer 'Dim hComp As CComponent = CComponent.All[sComp] If Not IsCheckable() Then Return Select Case Column Case 0 DX = (Width - 16) \ 2 X += DX Y += DX 'Y += (gvwComponent.Rows.Height - gvwComponent.Padding * 2 - 16) \ 2 Width = 16 Height = 16 Style.PaintBox(X - 2, Y - 2, Width + 4, Height + 4) If sComp = "gb" Or If Not Project.Documentation.Exist(sComp) Then Paint.DrawPicture(Picture["img/16/checked-lock.png"], X, Y) Else Select Case GetState(sComp) Case ComponentChooser.Checked Paint.DrawPicture(Picture["img/16/checked.png"], X, Y) Case ComponentChooser.GrayChecked Paint.DrawPicture(Picture["img/16/checked-gray.png"], X, Y) Case ComponentChooser.Unchecked End Select Endif End Select End Public Sub btnDeprecated_Click() SetShowDeprecated(btnDeprecated.Value) End gambas-3.16.3/app/src/gambas3/.src/Project/Component/FComponentChooser.form000066400000000000000000000051551411575327000264320ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,84,85) Text = ("Select a component") Arrangement = Arrange.Fill { wizComponent Wizard MoveScaled(1,1,82,56) Background = Color.TextBackground Expand = True Arrangement = Arrange.Vertical Count = 2 ShowTitle = False ShowButton = False Index = 0 Text = ("") { Panel1 HBox MoveScaled(3,3,59,3) { txtFilter ButtonBox MoveScaled(0,0,41,3) Foreground = Color.LightForeground Expand = True Border = False Button = False ClearButton = True Filter = True } { btnDeprecated ToolButton MoveScaled(49,0,3,3) ToolTip = ("Show deprecated components") Picture = Picture["img/component/deprecated.png"] Toggle = True } } { Separator4 Separator MoveScaled(29,9,21,0) } { gvwComponent GridView MoveScaled(7,13,67,38) Expand = True Border = False Mode = Select.Single Grid = False } Index = 1 Text = ("") { panHelp VBox MoveScaled(0,0,81,48) Background = Color.TextBackground Expand = True { Panel8 HBox MoveScaled(1,0,79,4) { btnBack Button MoveScaled(0,0,4,4) Picture = Picture["icon:/small/previous"] Border = False } { btnForward Button MoveScaled(4,0,4,4) Picture = Picture["icon:/small/next"] Border = False } { btnStop ToolButton MoveScaled(8,0,4,4) ToolTip = ("Cancel") Picture = Picture["icon:/small/delete"] } { btnReload ToolButton MoveScaled(12,0,4,4) ToolTip = ("Reload") Picture = Picture["icon:/small/refresh"] } { Separator10 Separator MoveScaled(17,0,0,4) Visible = False } { btnZoomIn ToolButton MoveScaled(18,0,4,4) ToolTip = ("Zoom in") Picture = Picture["icon:/small/zoom-in"] } { btnZoomOut ToolButton MoveScaled(22,0,4,4) ToolTip = ("Zoom out") Picture = Picture["icon:/small/zoom-out"] } { btnZoomNormal ToolButton MoveScaled(26,0,4,4) ToolTip = ("No zoom") Picture = Picture["icon:/small/zoom-normal"] } { Panel3 Panel MoveScaled(51,0,7,4) Expand = True } } { Separator2 Separator MoveScaled(0,9,24,0) } { webAboutComponent HelpView MoveScaled(4,10,21,11) Expand = True } } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Project/Component/FSelectComponent.class000066400000000000000000000005011411575327000263770ustar00rootroot00000000000000' Gambas class file Private $sCurrent As String Public Sub Run(aHide As String[]) As String choComponent.HiddenComponents = aHide If Me.ShowDialog() Then Return $sCurrent End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() $sCurrent = choComponent.Current Me.Close(True) End gambas-3.16.3/app/src/gambas3/.src/Project/Component/FSelectComponent.form000066400000000000000000000010501411575327000262350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,86,87) Text = ("Select a component") Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { choComponent ComponentChooser MoveScaled(2,3,57,44) Expand = True } { HBox1 HBox MoveScaled(2,54,80,4) Spacing = True { Panel1 Panel MoveScaled(33,1,2,4) Expand = True } { btnOK Button MoveScaled(41,0,18,4) Text = ("OK") } { btnCancel Button MoveScaled(60,0,18,4) Text = ("Cancel") } } } gambas-3.16.3/app/src/gambas3/.src/Project/Conversion/000077500000000000000000000000001411575327000223275ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/Conversion/FConvert.class000066400000000000000000000011631411575327000251050ustar00rootroot00000000000000' Gambas class file Static $iLevel As Integer Public Sub Start(sMsg As String) Inc Application.Busy Inc $iLevel Me.Show SetMessage(sMsg) End Public Sub SetMessage(sMsg As String) lblConvert.Text = sMsg pgbConvert.Value = 0 Wait End Public Sub SetProgress(fValue As Float) pgbConvert.Value = fValue Wait End Public Sub Stop() If $iLevel = 0 Then Return Dec Application.Busy Dec $iLevel If $iLevel = 0 Then Me.Hide Else pgbConvert.Value = 1 Wait Endif End Public Sub StopAll() $iLevel = 1 Stop() End Public Sub Form_Open() Me.Center End gambas-3.16.3/app/src/gambas3/.src/Project/Conversion/FConvert.form000066400000000000000000000006571411575327000247520ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,53,13) Text = ("Gambas 3 project conversion") Resizable = False Spacing = True Margin = True { PictureBox1 PictureBox MoveScaled(1,1,11,11) Picture = Picture["icon:/128/wizard"] Stretch = True } { lblConvert TextLabel MoveScaled(14,1,38,7) Font = Font["Bold,+3"] Expand = True } { pgbConvert ProgressBar MoveScaled(14,9,38,3) } } gambas-3.16.3/app/src/gambas3/.src/Project/Conversion/MConvert.module000066400000000000000000000512541411575327000253020ustar00rootroot00000000000000' Gambas module file Private $aLine As String[] Private $sId As String Private $hForm As FEditor Private $aIsType As String[] = ["IsBoolean", "IsByte", "IsShort", "IsInteger", "IsLong", "IsSingle", "IsFloat", "IsDate", "IsString", "IsObject"] Private $aTestFunc As String[] = ["Boolean?", "Byte?", "Short?", "Integer?", "Long?", "Single?", "Float?", "Date?", "String?", "Object?", "Number?", "Null?", "Dir?", "Ascii?", "Letter?", "LCase?", "Lower?", "UCase?", "Upper?", "Digit?", "Hexa?", "Space?", "Blank?", "Punct?"] Private Sub AddDeclarationToClass(sPath As String, sDeclare As String) Dim aLine As String[] aLine = Split(File.Load(sPath), "\n") aLine.Add("", 1) aLine.Add(sDeclare, 2) If aLine[3] Then aLine.Add("", 3) File.Save(sPath, aLine.Join("\n")) End Private Sub ConvertForm(sPath As String) Dim hFile As File Dim sFullLine, sLine As String Dim sClass As String Dim aCoord As String[] Dim fW, fH As Float Dim iIndent As Integer Dim sVal As String Dim aVal As String[] Dim sName As String Dim sGroup As String Dim iLevel As Integer Dim cVirtualPos As New Collection Dim sNewClass As String Dim sProp As String Dim sValue As String Dim aScan As String[] $aLine = New String[] hFile = Open sPath Line Input #hFile, sFullLine If sFullLine = Project.FORM_MAGIC Then Return $aLine.Add(Project.FORM_MAGIC) While Not Eof(hFile) Line Input #hFile, sFullLine sLine = LTrim(sFullLine) iIndent = Len(sFullLine) - Len(sLine) sLine = RTrim(sLine) 'If Left(sLine) = "#" Then sLine = Mid$(sLine, 2) If Left(sLine) = "{" Then aVal = Split(Mid$(sLine, 2), " ", "", True) sName = aVal[0] sClass = aVal[1] sGroup = "" Try sGroup = aVal[2] 'If Left(sClass) = "#" Then sClass = Mid$(sClass, 2) If sClass = "#TrayIcon" Then AddDeclarationToClass(File.SetExt(sPath, "class"), If(Project.ControlPublic, "Public", "Private") & " " & sName & " As TrayIcon = New TrayIcon As " & Quote(If(sGroup, sGroup, sName))) Repeat Line Input #hFile, sFullLine Until Trim(sFullLine) = "}" Continue Endif If sClass = "URLLabel" Then sNewClass = "Label" Else If sClass = "WebBrowser" Then sNewClass = "WebView" Else If sClass = "ColorBox" Then sNewClass = "ColorButton" Else sNewClass = sClass Endif sFullLine = "{ " & sName & " " & sNewClass & " " & sGroup Inc iLevel cVirtualPos[iLevel] = 0 Else If sLine = "}" Dec iLevel Else If sLine Begins "MoveScaled(" Then aCoord = Split(Mid$(sLine, 12, -1)) If aCoord.Count = 4 Then fW = CFloat(aCoord[2]) fH = CFloat(aCoord[3]) If fW <= 3 Then Inc fW If fH <= 3 Then Inc fH sFullLine = "MoveScaled(" & aCoord[0] & "," & aCoord[1] & "," & CStr(fW) & "," & CStr(fH) & ")" Endif Else If sLine Begins "'Move" Then Continue Else aScan = Scan(sLine, "* = *") sProp = "" Try sProp = aScan[0] Try sValue = aScan[1] If sProp = "Border" Then If sClass = "Form" Then Select Case Trim(Scan(sLine, "*=*")[1]) Case "Window.None" sFullLine = "Border = False" Case "Window.Resizable" Continue Case "Window.Fixed" sFullLine = "Resizable = False" End Select Endif Else If sProp == "ToolBox" Then If sClass = "Form" Then sFullLine = "Utility = " & sValue Endif Else If sLine Begins "List = " & Chr$(34) Then If sClass = "ListBox" Or If sClass = "ComboBox" Then sVal = UnQuote$(Trim(Mid$(sLine, 7))) aVal = Split(sVal, "\n") sFullLine = "List = " & CControl.StringArrayPropertyToString(aVal, True) Endif Else If sLine = "Text = (\"\")" Then Continue Else If sLine = "#(Scaled) = False" Then sFullLine = "#Scaled = False" Else If sProp = "URL" Then If sClass = "URLLabel" Then Continue Else If sProp = "#X" Then sFullLine = "#MoveScaled(" & cVirtualPos[iLevel - 1] & "," & cVirtualPos[iLevel - 1] & ")" Inc cVirtualPos[iLevel - 1] Else If sProp = "#Y" Then Continue Else If sProp = "Padding" Then If sClass <> "Label" And If sClass <> "TextLabel" Then sFullLine = "Margin = True" If CInt(sValue) <= 4 Then sFullLine &= "\nPadding = " & sValue Endif Endif Else If sProp = "Spacing" Then sFullLine = "Spacing = True" Else If sProp = "Arrangement" Then If sValue = "LeftRight" Then sFullLine = "Arrangement = Arrange.Row" Else If sValue = "TopBottom" Then sFullLine = "Arrangement = Arrange.Column" Endif Else If sClass = "WebBrowser" Then If ["Java", "JavaScript", "Path", "Plugins", "Zoom"].Exist(sProp) Then Continue Else If sClass = "ValueBox" Then If sProp = "MaxLength" Then Continue Endif Endif For Each sFullLine In Split(sFullLine, "\n") If Left(sFullLine) <> " " And If iIndent > 0 Then sFullLine = Space$(iIndent) & sFullLine $aLine.Add(sFullLine) Next Wend File.Save(sPath, $aLine.Join("\n")) End ' Private Sub CheckAnalyze(aCheck As String[]) As Boolean ' ' Dim I, J As Integer ' Dim aSym As String[] = Highlight.Symbols ' Dim bNot As Boolean ' Dim bTest As Boolean ' ' Highlight.Analyze(sLine) ' ' Do ' If J >= aSym.Count And If I >= aCheck.Count Then Return False ' If J >= aSym.Count Or If I >= aCheck.Count Then Return True ' ' sCheck = aCheck[I] ' If Left(sCheck) = "!" Then ' bTest = Not (aSym[J] Like Mid$(sCheck, 2)) ' Else ' bTest = aSym[J] Like sCheck ' Endif ' ' If bTest Then ' Inc I ' Else ' J -= I ' I = 0 ' Endif ' Inc J ' Loop ' ' End Private Sub CheckArrayInstanciation(sLine As String) As String Dim aSym As String[] Dim iPos As Integer Dim iInd As Integer aSym = Highlight.Analyze(sLine, True) If aSym.Count < 6 Then Return If Not ["DIM", "PRIVATE", "PUBLIC"].Exist(aSym[0], gb.IgnoreCase) Then Return iInd = 1 Do If iInd > aSym.Max Then Return If Highlight.Types[iInd] <> Highlight.Symbol Then Return Inc iInd If aSym[iInd] = "," Then Inc iInd Continue Endif If aSym[iInd] == "AS" Then Inc iInd Break Endif Return Loop If iInd > (aSym.Max - 2) Then Return If Highlight.Types[iInd] <> Highlight.DataType Then Return If aSym[iInd + 1] <> "[" Then Return If aSym[iInd + 2] = "]" Then Return iPos = InStr(sLine, "AS " & aSym[iInd], 1, gb.IgnoreCase) sLine = Left(sLine, iPos - 1) & "As New " & Mid$(sLine, iPos + 3) $sId = "ARRD" Return sLine Catch End Private Sub CheckOpen(sLine As String) As String Dim aSym As String[] Dim iPos As Integer Dim sVar As String Dim sTry As String aSym = Highlight.Analyze(sLine, True) If aSym.Count < 5 Then Return If UCase(aSym[iPos]) = "TRY" Then sLine = Trim(Mid$(sLine, 4)) sTry = "Try " Inc iPos Endif If UCase(aSym[iPos]) <> "OPEN" Then Return iPos = InStr(sLine, " AS ", 1, gb.IgnoreCase) If iPos = 0 Then Return sVar = Mid$(sLine, iPos + 4) If Left(sVar) = "#" Then sVar = Trim(Mid$(sVar, 2)) sLine = sTry & sVar & " = " & Left(sLine, iPos - 1) $sId = "OPEN" Return sLine Catch End Private Sub FindRightBrace(aSym As String[], iPos As Integer) As Integer Dim iLevel As Integer While iPos < aSym.Count Select Case aSym[iPos] Case ")", "]" Dec iLevel If iLevel = 0 Then Return iPos Case "(", "[" Inc iLevel End Select Inc iPos Wend Return -1 End Private Sub CheckQuestionMark(sLine As String) As String Dim aSym As String[] Dim I As Integer Dim bFound As Boolean aSym = Highlight.Analyze(sLine, True) For I = aSym.Max - 1 DownTo 0 If $aTestFunc.Exist(aSym[I], gb.IgnoreCase) And aSym[I + 1] = "(" Then sLine = String.Left(sLine, Highlight.Positions[I]) & "Is" & Left(aSym[I], -1) & String.Mid$(sLine, Highlight.Positions[I + 1] + 1) bFound = True Endif Next If Not bFound Then Return $sId = "QUES" Return sLine Catch End Private Sub CheckIsType(sLine As String) As String Dim aSym As String[] Dim I, J As Integer Dim bFound As Boolean aSym = Highlight.Analyze(sLine, True) For I = aSym.Max DownTo 0 If $aIsType.Exist(aSym[I], gb.IgnoreCase) Then J = FindRightBrace(aSym, I + 1) If J < 0 Then Continue sLine = String.Left(sLine, Highlight.Positions[I]) & "TypeOf" & String.Mid$(sLine, Highlight.Positions[I + 1] + 1, Highlight.Positions[J] - Highlight.Positions[I + 1] + 1) & " = gb." & Mid$(aSym[I], 3) & " " & String.Mid$(sLine, Highlight.Positions[J] + 2) bFound = True Else If aSym[I] == "IsNumber" Then J = FindRightBrace(aSym, I + 1) If J < 0 Then Continue sLine = String.Left(sLine, Highlight.Positions[I]) & "TypeOf" & String.Mid$(sLine, Highlight.Positions[I + 1] + 1, Highlight.Positions[J] - Highlight.Positions[I + 1] + 1) & " <= gb.Float " & String.Mid$(sLine, Highlight.Positions[J] + 2) bFound = True Endif Next If Not bFound Then Return $sId = "ISTY" Return sLine Catch End Private Sub CheckQuoteShell(sLine As String) As String Dim aSym As String[] Dim I As Integer Dim bFound As Boolean aSym = Highlight.Analyze(sLine, True) For I = aSym.Max - 3 DownTo 0 If aSym[I] = "Quote" And If aSym[I + 1] = "." And If aSym[I + 2] = "Shell" And If aSym[I + 3] = "(" Then sLine = String.Left$(sLine, Highlight.Positions[I]) & "Shell$" & String.Mid$(sLine, Highlight.Positions[I + 3] + 1) bFound = True Endif Next If Not bFound Then Return $sId = "QUOT" Return sLine End Private Sub FindClassSymbol(sClass As String, sSymbol As String, aSym As String[], aType As Integer[], I As Integer, Optional bAllowAnonymous As Boolean) As Boolean Dim sType As String Dim hClass As CClassInfo If aSym[I] == sSymbol And If aSym[I - 1] = "." Then sType = $hForm.GetExpressionType(aSym.Copy(0, I - 1), aType.Copy(0, I - 1), True) If Not sType Then If bAllowAnonymous Then sType = sClass Else Return Endif Endif If sType <> sClass Then hClass = Project.Documentation.Classes[sType] If Not hClass Then Return If Not hClass.Inherits(sClass) Then Return Endif Return True Endif End Private Sub CheckReplaceClassSymbol(sId As String, sLine As String, sClass As String, sSymbol As String, sNewSymbol As String, Optional bAllowAnonymous As Boolean) As String Dim aSym As String[] Dim I As Integer Dim aPos As Integer[] Dim aType As Integer[] Dim sRest As String aSym = Highlight.Analyze(sLine, False).Copy() aType = Highlight.Types.Copy() aPos = Highlight.Positions.Copy() For I = aSym.Max DownTo 1 If FindClassSymbol(sClass, sSymbol, aSym, aType, I, bAllowAnonymous) Then sRest = String.Mid$(sLine, aPos[I] + Len(sSymbol) + 1) If sId = "FNTH" And If sRest Begins "()" Then sRest = "(\"\")" & Mid$(sRest, 3) sLine = String.Left$(sLine, aPos[I]) & sNewSymbol & sRest $sId = sId Return sLine Endif Next End Private Sub CheckUdpSocketBind(sId As String, sLine As String) As String Dim aSym As String[] Dim I As Integer Dim aPos As Integer[] Dim aType As Integer[] Dim sRest As String aSym = Highlight.Analyze(sLine, False).Copy() aType = Highlight.Types.Copy() aPos = Highlight.Positions.Copy() For I = aSym.Max DownTo 1 If FindClassSymbol("UdpSocket", "Bind", aSym, aType, I) Then sRest = String.Mid$(sLine, aPos[I] + Len("Bind") + 1) If Left(sRest) <> "(" Then Return If Mid$(sRest, 2, 1) = ")" Then Return sLine = String.Left$(sLine, aPos[I]) & "Port = " & Mid$(sRest, 2, -1) & "\n" & String.Left$(sLine, aPos[I] + Len("Bind")) & "()" $sId = sId Return sLine Endif Next End Private Sub CheckSplitterLayout(sId As String, sLine As String) As String Dim aSym As String[] Dim I As Integer Dim aPos As Integer[] Dim aType As Integer[] Dim iPos As Integer Dim iStart As Integer aSym = Highlight.Analyze(sLine, False).Copy() aType = Highlight.Types.Copy() aPos = Highlight.Positions.Copy() For I = aSym.Max DownTo 1 If FindClassSymbol("HSplit", "Layout", aSym, aType, I) Or If FindClassSymbol("VSplit", "Layout", aSym, aType, I) Then If I <= (aSym.Max - 2) And If aSym[I + 1] = "=" And InStr(String.Left(sLine, aPos[I]), "(") = 0 Then ' Assignment detection badly done If UCase(aSym[I + 2]) <> "SPLIT" Then sLine = String.Left$(sLine, aPos[I + 1]) & " = Split(" & String.Mid$(sLine, aPos[I + 2] + 1) & ", \",\")" $sId = sId Return sLine Endif Else If I <= (aSym.Max - 3) And If aSym[I + 1] = ")" And If aSym[I + 2] = "." And If UCase(aSym[I + 3]) = "JOIN" Then Continue iStart = FEditor.ExpressionStart iPos = aPos[I] + Len("Layout") sLine = String.Left$(sLine, aPos[iStart]) & "String[](" & String.Mid$(sLine, aPos[iStart] + 1, iPos - aPos[iStart]) & ").Join(\",\")" & String.Mid$(sLine, iPos + 1) $sId = sId Return sLine Endif Endif Next End Private Sub CheckReplaceFunction(sId As String, sLine As String, sFunc As String, sNewFunc As String) As String Dim aSym As String[] Dim I As Integer Dim bFound As Boolean Dim aPos As Integer[] Dim sRest As String aSym = Highlight.Analyze(sLine, False) aPos = Highlight.Positions For I = 1 To aSym.Max - 1 If aSym[I] == sFunc And If aSym[I + 1] = "(" Then sRest = Mid$(sLine, aPos[I] + Len(sFunc) + 1) 'If sId = "FNTH" And If sRest Begins "()" Then sRest = "(\"\")" & Mid$(sRest, 3) sLine = Left$(sLine, aPos[I]) & sNewFunc & sRest bFound = True aSym = Highlight.Analyze(sLine, False) aPos = Highlight.Positions Endif Next If Not bFound Then Return $sId = sId Return sLine End Private Sub CheckPublicProperty(sLine As String) As String Dim aSym As String[] Dim iPos As Integer Dim bStatic As Boolean Dim bPublic As Boolean aSym = Highlight.Analyze(sLine, True) If aSym.Count < 5 Then Return For iPos = 0 To 3 If UCase(aSym[iPos]) = "PUBLIC" Then bPublic = True Continue Endif If UCase(aSym[iPos]) = "STATIC" Then bStatic = True Continue Endif Break Next If Not bPublic Then Return If UCase(aSym[iPos]) <> "PROPERTY" Then Return $sId = "PPRO" iPos = InStr(sLine, "PROPERTY ", 1, gb.IgnoreCase) sLine = "Property " & Mid$(sLine, iPos + 9) If bStatic Then sLine = "Static " & sLine Return sLine Catch End Private Sub CheckNewKeyword(sLine As String) As String Dim aSym As String[] Dim iPos As Integer Dim bRepl As Boolean Do aSym = Highlight.Analyze(sLine, True) iPos = aSym.Find("ON", gb.IgnoreCase) If iPos < 0 Then Break iPos = Highlight.Positions[iPos] sLine = Left$(sLine, iPos) & "{On}" & Mid$(sLine, iPos + 3) bRepl = True Loop If bRepl Then $sId = "KEYW" Return sLine Endif End Private Sub CheckEventAs(sLine As String) As String Dim aSym As String[] aSym = Highlight.Analyze(sLine) If aSym.Count <= 3 Then Return If aSym[0] == "EVENT" And If aSym[aSym.Max - 1] = "AS" Then $sId = "EVAS" sLine = Left$(sLine, Highlight.Positions[aSym.Max - 1] - 1) Return sLine Endif End Private Sub ConvertClass(sPath As String) Dim sLine As String Dim hEditor As TextEditor Dim iLine As Integer Dim sNewLine As String Dim sIndent As String Dim aLine As String[] Dim iInd As Integer $aLine = New String[] $hForm = Project.LoadFile(sPath) hEditor = $hForm.GetEditor() For iLine = 0 To hEditor.Count - 1 hEditor.Goto(0, iLine) sLine = hEditor[iLine].Text If Left(LTrim(sLine)) <> "'" Then sIndent = hEditor.GetIndent(iLine) sLine = Trim(sLine) Do $sId = "" sNewLine = CheckArrayInstanciation(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckOpen(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckQuestionMark(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckIsType(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckQuoteShell(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("FNTH", sLine, "Font", "Height", "TextHeight") If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("FNTW", sLine, "Font", "Width", "TextWidth") If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("BCOL", sLine, "Control", "BackColor", "Background", True) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("FCOL", sLine, "Control", "ForeColor", "Foreground", True) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("BCOL", sLine, ".GridViewData", "BackColor", "Background", True) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("FCOL", sLine, ".GridViewData", "ForeColor", "Foreground", True) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("BCOL", sLine, "Draw", "BackColor", "Background", True) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("FCOL", sLine, "Draw", "ForeColor", "Foreground", True) If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("DBGV", sLine, "DataBrowser", "GridView", "View") If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceClassSymbol("TEXT", sLine, "gb", "Text", "IgnoreCase") If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceFunction("CSNG", sLine, "CSng", "CSingle") If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceFunction("CLNG", sLine, "CLng", "CLong") If sNewLine Then Goto NEW_LINE sNewLine = CheckReplaceFunction("CFLT", sLine, "CFlt", "CFloat") If sNewLine Then Goto NEW_LINE sNewLine = CheckUdpSocketBind("BIND", sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckSplitterLayout("SLAY", sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckPublicProperty(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckNewKeyword(sLine) If sNewLine Then Goto NEW_LINE sNewLine = CheckEventAs(sLine) If sNewLine Then Goto NEW_LINE $aLine.Add(sIndent & sLine) Break NEW_LINE: $aLine.Add(sIndent & "' [GB2:" & $sId & "] " & sLine) '$aLine.Add(sIndent & sNewLine) If InStr(sNewLine, "\n") Then aLine = Split(sNewLine, "\n") For iInd = 0 To aLine.Max - 1 $aLine.Add(sIndent & aLine[iInd]) Next sNewLine = aLine[aLine.Max] Endif sLine = sNewLine Loop Else $aLine.Add(sLine) Endif Next File.Save(sPath, $aLine.Join("\n")) $hForm.Delete $hForm = Null Project.Files[sPath] = Null 'Catch ' Print Error.Where; ": "; Error.Text End Public Sub ConvertFile(sPath As String) Select Case File.Ext(sPath) Case "module", "class" ConvertClass(sPath) Case "form" ConvertForm(sPath) End Select End Public Sub ConvertComponent(sComp As String) As String[] Dim aComp As String[] Dim iInd As Integer Dim hComp As CComponent Select Case sComp Case "gb.qt" aComp = ["gb.qt4"] Case "gb.qt.ext" aComp = ["gb.qt4.ext"] Case "gb.qt.kde.html" aComp = ["gb.qt4.webkit"] Case "gb.gtk.svg" aComp = New String[] Case "gb.image" aComp = ["gb.image.effect"] Default aComp = [sComp] End Select While iInd < aComp.Count hComp = Project.Documentation[aComp[iInd]] If hComp Then For Each sComp In hComp.Require If Not aComp.Exist(sComp) Then aComp.Add(sComp) Next Endif Inc iInd Wend Return aComp End gambas-3.16.3/app/src/gambas3/.src/Project/FArguments.class000066400000000000000000000044431411575327000233110ustar00rootroot00000000000000' Gambas class file Static Public Sub Run() As Boolean Return Not FArguments.ShowDialog() End Private Sub FromArgs(aArg As String[]) As String Dim I As Integer Dim sArg As String If Not aArg Then Return aArg = aArg.Copy() For I = 0 To aArg.Max sArg = aArg[I] If Split(sArg, " ", "\"").Count > 1 Then aArg[I] = Quote(sArg) Next Return aArg.Join(" ") End Public Sub Form_Open() Settings.Read(Me) Project.SetEditorFont(lstArg) FillList lstArg.Index = lstArg.Find(FromArgs(Project.CurrentArgument)) End Private Sub FillList() Dim aArg As String[] lstArg.Clear For Each aArg In Project.Arguments lstArg.Add(FromArgs(aArg)) Next lstArg.SetFocus() End Private Sub ToArgs(sStr As String) As String[] Dim aArg As String[] Dim I As Integer Dim sCar As String Dim sCurrent As String Dim bEscape As Boolean Dim bQuote As Boolean aArg = New String[] sStr &= " " For I = 1 To Len(sStr) sCar = Mid$(sStr, I, 1) sCurrent &= sCar If bEscape Then bEscape = False Continue Endif If sCar = "\\" Then bEscape = True Continue Endif If bQuote Then If sCar = Chr$(34) Then bQuote = False GoSub ADD_ARGUMENT Endif Continue Endif If sCar = Chr$(34) Then bQuote = True Continue Endif If sCar = " " Then GoSub ADD_ARGUMENT Endif Next Return aArg ADD_ARGUMENT: sCurrent = Trim(sCurrent) If Not sCurrent Then Return If sCurrent Begins Chr$(34) Then sCurrent = UnQuote(sCurrent) aArg.Add(sCurrent) sCurrent = "" Return End Private Sub SaveArgs() Dim aArgs As New String[][] Dim aList As String[] Dim I As Integer aList = lstArg.List For I = 0 To aList.Max aArgs.Add(ToArgs(aList[I])) Next Project.Arguments = aArgs Project.CurrentArgument = ToArgs(lstArg.Text) Project.WriteProject(True) End Public Sub btnRun_Click() 'Dim hTextBox As TextBox = lstArg.Editor 'Design.Arguments = ToArgs(hTextBox.Text) Me.Close(True) End Public Sub btnCancel_Click() Me.Close() End Public Sub Form_Close() SaveArgs() Settings.Write(Me) End Public Sub lstArg_Activate() btnRun.Value = True End Public Sub btnUndo_Click() FillList End gambas-3.16.3/app/src/gambas3/.src/Project/FArguments.form000066400000000000000000000013611411575327000231430ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,112,38) Text = ("Run with arguments") Arrangement = Arrange.Vertical Spacing = True Margin = True { lstArg ListEditor MoveScaled(1,2,73,25) Expand = True Unique = True } { HBox1 HBox MoveScaled(10,30,64,4) Spacing = True { btnUndo Button MoveScaled(1,0,16,4) Text = ("Reset") Picture = Picture["icon:/small/undo"] } { Spring1 Spring MoveScaled(19,1,6,2) } { btnRun Button MoveScaled(26,0,16,4) Text = ("Run") Picture = Picture["icon:/small/play"] } { btnCancel Button MoveScaled(43,0,16,4) Text = ("Close") Picture = Picture["icon:/small/close"] Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/FCreateFile.class000066400000000000000000000202161411575327000233430ustar00rootroot00000000000000' Gambas class file Private $sPath As String Private $sDir As String Private $sType As String Private $bDoNotSetName As Boolean Public Sub Run(sPath As String, sDir As String, sType As String) $sPath = sPath $sDir = sDir $sType = sType If Not Me.ShowModal() Then Return End Public Sub btnCancel_Click() Me.Close End Private Sub UpdateLayout() Dim sPrefix As String Dim hChild As Control Dim bOpt As Boolean sPrefix = $sType For Each hChild In panOption.Children If Not hChild.Tag Then Continue hChild.Visible = Split(hChild.Tag, ",").Exist(sPrefix) bOpt = bOpt Or hChild.Visible Next Select Case $sType Case "image" txtWidth.Value = Settings["/FCreateFile/ImageWidth", 8] txtHeight.Value = Settings["/FCreateFile/ImageHeight", 8] cmbImageType.Text = Settings["/FCreateFile/ImageType", "PNG"] End Select lblOption.Visible = bOpt If Not $bDoNotSetName Then sPrefix = UCase(Left(sPrefix)) & Mid(sPrefix, 2) Object.Lock(txtName) Select Case LCase(sPrefix) Case "text", "image", "html", "css", "js" txtName.Text = Project.GetNewName(sPrefix, $sDir) Case Else txtName.Text = Project.GetNewName(sPrefix) End Select 'txtName.SelectAll Object.Unlock(txtName) Endif txtName.SelectAll txtName.SetFocus End Public Sub Form_Open() Dim hPict As Picture $bDoNotSetName = False 'Settings.Read(Me) If Project.IsSourceDir($sDir) Then hPict = Project.MakeModuleIcon($sType, 64).Picture Else Select Case $sType Case "css" hPict = Picture["icon:/64/html"] Case "js" hPict = Picture["icon:/64/script"] Case Else Try hPict = Picture["icon:/64/" & $sType] If Error Then hPict = Picture["icon:/64/text"] End Select Endif picFile.Picture = hPict cmbParent.List = Project.GetClassesOnly() cmbParent.Add(("(No parent)"), 0) If Project.IsSourcePath($sPath) Then cmbParent.Text = Project.GetParentClass($sPath) Endif If cmbParent.Index < 0 Then cmbParent.Index = 0 If Not $sType Then $sType = "module" UpdateLayout End Public Sub txtWidth_Change() If btnLinked.Value Then txtHeight.Value = txtWidth.Value End Public Sub txtHeight_Change() If btnLinked.Value Then txtWidth.Value = txtHeight.Value End Public Sub txtName_Change() $bDoNotSetName = txtName.Text End Private Sub CreateFile() As Boolean Dim sType As String = $sType Dim sName As String = Trim(txtName.Text) Dim sMsg As String Dim sTemp As String Dim hImage As Image Select Case sType Case "image" Settings["/FCreateFile/ImageWidth"] = txtWidth.Value Settings["/FCreateFile/ImageHeight"] = txtHeight.Value Settings["/FCreateFile/ImageType"] = cmbImageType.Text End Select Select Case sType Case "text", "image", "html", "css", "js" If sName And If chkExt.Value Then If sType = "image" Then sName = File.SetExt(sName, LCase(cmbImageType.Text)) Else If sType = "html" Or If sType = "css" Or If sType = "js" Then sName = File.SetExt(sName, sType) Endif Endif sMsg = Project.CheckFileName(sName, $sDir) If sMsg Then txtName.SetFocus Balloon.Warning(sMsg, txtName) Return True Endif Case Else sMsg = Project.CheckClassName(sName, True) If sMsg Then txtName.SetFocus Balloon.Warning(sMsg, txtName) Return True Endif End Select Select Case sType Case "module" sTemp = "' Gambas module file\n\n" Project.InsertSource(sName, sType, $sDir, sTemp) Case "test" sTemp = "' Gambas test file\n\n" Project.InsertSource(sName, sType, $sDir, sTemp) Case "class" sTemp = "' Gambas class file\n\n" If chkExport.Value Then sTemp &= "Export\n" If chkCreateStatic.Value Then sTemp &= "Create Static\n" Else If chkCreatePrivate.Value Then sTemp &= "Create Private\n" Endif If cmbParent.Index > 0 Then sTemp &= "Inherits " & cmbParent.Text & "\n" sTemp = RTrim(sTemp) & "\n" Project.InsertSource(sName, sType, $sDir, sTemp) Case "form", "report", "webform", "termform" sTemp = "' Gambas class file\n\n" If sType = "webform" Then sTemp &= "Export\n\n" Endif If chkDialog.Value Then sTemp &= "Public Sub Run() As Boolean\n\n" "\tReturn Not Me.ShowModal()\n\n" "End\n\n" "Public Sub btnOK_Click()\n\n" "\tMe.Close(TRUE)\n\n" "End\n\n" "Public Sub btnCancel_Click()\n\n" "\tMe.Close\n\n" "End\n\n" sTemp = Replace(sTemp, "\t", Space$(Project.TabSize)) Endif Project.InsertSource(sName, "class", $sDir, sTemp, True, True) sTemp = Project.FORM_MAGIC & "\n\n" & "{ " & sName & " " & CFamily.Get(sType).Name & "\n" If sType = "form" Then sTemp &= " MoveScaled(0,0,64,64)\n" If chkDialog.Value Then sTemp &= " Resizable = False\n" " Arrangement = Arrange.Vertical\n" " Spacing = True\n" " Margin = True\n" sTemp &= "{ HBox1 HBox\n" " MoveScaled(1,59,62,4)\n" " Spacing = True\n" " { Panel1 Panel\n" " MoveScaled(4,0,4,4)\n" " Expand = True\n" " }\n" " { btnOK Button\n" " MoveScaled(29,0,16,4)\n" " Text = (\"OK\")\n" " Default = True\n" " }\n" " { btnCancel Button\n" " MoveScaled(46,0,16,4)\n" " Text = (\"Cancel\")\n" " Cancel = True\n" " }\n" "}\n" Endif Else sTemp &= " #MoveScaled(0,0,64,91)\n" Endif sTemp &= "}\n" Project.InsertSource(sName, sType, $sDir, sTemp) Case "webpage" Project.InsertSource(sName, "class", $sDir, "' Gambas class file\n\n", True, True) Project.InsertSource(sName, "webpage", $sDir, "\n\n<%\nPrint \"

      Gambas

      \";\n%>\n\n\n") Case "text" File.Save($sDir &/ sName, "") Inc FMain.NoMessage Project.InsertFile(sName, $sDir) Dec FMain.NoMessage Case "html" File.Save($sDir &/ sName, "\n\n\n\n\n\n\n\n\n") Project.InsertFile(sName, $sDir) Case "css" File.Save($sDir &/ sName, "BODY\n{\n}\n") Project.InsertFile(sName, $sDir) Case "js" File.Save($sDir &/ sName, "// " & sName & "\n\nfunction foo()\n{\n}\n") Project.InsertFile(sName, $sDir) Case "image" hImage = New Image(txtWidth.Value, txtHeight.Value) If cmbImageType.Text = "JPEG" Then hImage.Fill(Color.White) Else hImage.Fill(Color.Transparent) Endif hImage.Save($sDir &/ sName) Project.InsertFile(sName, $sDir) End Select End Public Sub btnOK_Click() If CreateFile() Then Return Me.Close(True) Catch FMain.NoMessage = 0 FMain.ShowError(("Cannot add file.") & "\n\n" & Error.Text & "\n" & Error.Where) End ' Public Sub Form_Close() ' ' Settings.Write(Me) ' ' End Public Sub panType_Arrange() Dim hPictureBox As PictureBox = Last.Children[0] hPictureBox.W = hPictureBox.H End Public Sub panOption_Arrange() Dim hChild As Control Dim H As Integer For Each hChild In panOption.Children If hChild.Visible Then H = Max(H, hChild.Y + hChild.H) Next panNewFile.H = H + Desktop.Scale * 2 End Public Sub chkCreatePrivate_Click() If chkCreatePrivate.Value Then chkCreateStatic.Value = False End Public Sub chkCreateStatic_Click() If chkCreateStatic.Value Then chkCreatePrivate.Value = False End gambas-3.16.3/app/src/gambas3/.src/Project/FCreateFile.form000066400000000000000000000067721411575327000232140ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,74) Text = ("New file") Icon = Picture["icon:/small/new"] Resizable = False Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True { panNewFile Panel MoveScaled(1,1,60,67) Arrangement = Arrange.Horizontal Spacing = True { picFile PictureBox MoveScaled(2,1,9,9) } { panOption VBox MoveScaled(13,1,42,63) Expand = True Spacing = True { Label9 Label MoveScaled(0,0,25,3) Font = Font["Bold"] Text = ("Name") } { txtName TextBox MoveScaled(0,3,26,4) } { lblOption Label MoveScaled(0,7,25,3) Font = Font["Bold"] Text = ("Options") } { panImageOption Panel MoveScaled(0,11,32,14) Tag = "image" { Label7 Label MoveScaled(0,0,12,4) Text = ("Width") } { txtWidth SpinBox MoveScaled(13,0,10,4) MinValue = 1 MaxValue = 1024 Step = 8 Value = 8 } { Label8 Label MoveScaled(0,5,12,4) Text = ("Height") } { txtHeight SpinBox MoveScaled(13,5,10,4) MinValue = 1 MaxValue = 1024 Step = 8 Value = 8 } { btnLinked ToggleButton MoveScaled(28,0,3,9) Picture = Picture["img/32/linked.png"] Value = True } { Label11 Label MoveScaled(0,10,11,4) Text = ("Type") } { cmbImageType ComboBox MoveScaled(13,10,18,4) #Translate = False ReadOnly = True List = ["PNG", "JPEG", "XPM", "GIF"] } { Label13 Label MoveScaled(24,0,4,4) #Translate = False Text = "px" } { Label14 Label MoveScaled(24,5,4,4) #Translate = False Text = "px" } } { panFormOption VBox MoveScaled(0,28,41,4) Tag = "form" { chkDialog CheckBox MoveScaled(0,0,30,4) Text = ("Dialog box management") } } { Panel2 VBox MoveScaled(0,33,42,17) Tag = "class" Spacing = True { Panel1 HBox MoveScaled(0,0,43,4) Spacing = True { Label10 Label MoveScaled(0,0,15,4) AutoResize = True Text = ("Parent class") } { cmbParent ComboBox MoveScaled(17,0,25,4) Expand = True ReadOnly = True } } { chkExport CheckBox MoveScaled(0,5,39,3) Expand = True Text = ("Exported") } { chkCreateStatic CheckBox MoveScaled(0,9,39,3) Expand = True Text = ("Automatic instance") } { chkCreatePrivate CheckBox MoveScaled(0,13,39,3) Expand = True Text = ("Not creatable") } } { Panel3 VBox MoveScaled(0,55,41,4) Tag = "image,html,css,js" { chkExt CheckBox MoveScaled(0,0,36,4) Text = ("Automatic extension") Value = CheckBox.True } } } } { HBox6 HBox MoveScaled(1,69,60,4) Spacing = True Invert = True { btnCancel Button MoveScaled(45,0,15,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(29,0,15,4) Text = ("OK") Default = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/FCreateProject.class000066400000000000000000000120361411575327000240730ustar00rootroot00000000000000' Gambas class file Static Public InAnotherWindow As Boolean Static Private $sPath As String Static Private $bRepository As Boolean Static Private $bAnother As Boolean Static Private $hTemplate As CProjectList Static Private $sTemplate As String Static Public Sub Run(Optional bAnother As Boolean) As String $bAnother = bAnother Inc Application.Busy If Me.ShowModal() Then Return $sPath End Public Sub Form_Open() dchProject.Bookmarks = Project.GetBookmarks() 'dchProject.SelectedPath = Settings["/FCreateProject/Path", System.User.Home] Settings.Read(Me) wizProject.Index = 0 edtOutput.ReadConfig edtOutput.Text = "" chkOther.Visible = $bAnother Settings.Read(dchProject, "dchProject") ProjectBox.ShowButton = False $hTemplate = New CProjectList(svwTemplate, txtFilter, CProjectList.TYPE_TEMPLATE, Arrange.Row) As "ProjectItem" $hTemplate.Fill $hTemplate.ApplyFilter(txtFilter.Text) txtFilter.SetFocus $sTemplate = "" Dec Application.Busy End Public Sub wizProject_Cancel() Me.Close End Public Sub ProjectItem_Click(sPath As String, (bAnother) As Boolean) $sTemplate = sPath 'Balloon.Hide End Public Sub ProjectItem_DblClick((sPath) As String) wizProject.MoveNext End Private Sub CreateProject() As Boolean Dim sDir As String Dim sName As String Dim sPath As String Dim bErr As Boolean Dim hFile As File Dim hDest As File Dim sLine As String Dim sTemp As String 'DIM hIcon AS Picture If $bRepository Then sPath = Trim(txtRepository.Text) If Right(sPath) = "/" Then sPath = Left(sPath, -1) sDir = dchProject.SelectedPath edtOutput.ReadOnly = False bErr = VersionControl.CheckoutSVN(sPath, sDir, edtOutput) edtOutput.ReadOnly = True If bErr Then Error.Raise(("Project checkout has failed.")) sDir &/= File.Name(sPath) Else sName = Trim(txtName.Text) sDir = dchProject.SelectedPath &/ sName Project.CopyProject($sTemplate, sDir) Shell "rm -rf " & Shell$(sDir &/ ".lang") Wait Try Kill sDir &/ "icon.png" sTemp = Temp$() hFile = Open sDir &/ ".project" hDest = Open sTemp For Create For Each sLine In hFile.Lines If sLine Begins "# Compiled with" Then Continue Else If sLine Begins "Title=" Then sLine = "Title=" & txtTitle.Text Else If sLine Begins "Translate=" Then If Not chkTranslate.Value Then Continue sLine = "Translate=1" Mkdir sDir &/ ".lang" Else If sLine Begins "Version=" Then sLine = "Version=0.0.1" Else If sLine Begins "Description=" Then Continue Else If sLine Begins "Icon=" Then Continue Else If sLine Begins "TabSize=" Then Continue Endif Print #hDest, sLine Next Close #hFile Close #hDest Kill sDir &/ ".project" Copy sTemp To sDir &/ ".project" Project.MakeDirectoryIcon(sDir) Endif $sPath = sDir Return False Catch Message.Error(("Cannot create project!") & "\n\n" & Error.Text) Return True End Public Sub Form_Close() Settings.Write(dchProject, "dchProject") Settings.Write(Me) End Public Sub dchProject_Icon(Path As String) If Exist(Path &/ ".project") Then dchProject.Icon = Project.GetIcon(Path, 16) Endif End Public Sub wizProject_BeforeChange() Select Case wizProject.Index Case 0 If Not $sTemplate Then Message.Info(("Please choose a project template.")) Stop Event Endif $bRepository = File.Name($sTemplate) = "~subversion" Case 1 panRepository.Visible = $bRepository panIdent.Visible = Not $bRepository If $bRepository Then txtRepository.SetFocus Else txtName.SetFocus txtName_Change Endif End Select End Public Sub wizProject_Close() Dim sMsg As String If $bRepository Then If Not Trim(txtRepository.Text) Then txtRepository.SetFocus Message.Warning(("Please enter the location of the repository.")) Return Endif Else sMsg = Project.CheckProjectName(txtName.Text, dchProject.SelectedPath) If sMsg txtName.SetFocus txtName.SelectAll Message.Warning(sMsg) Return Endif Endif ' IF NOT dchProject.SelectedPath THEN ' dchProject.SetFocus ' 'tabProject.Index = 1 ' Balloon.Warning(("Choose the project parent directory."), dchProject) ' RETURN ' ENDIF If CreateProject() Then Return 'Message(("The project has been successfully created.")) InAnotherWindow = chkOther.Value Me.Close(True) End ' Public Sub lstType_Click() ' ' $bRepository = Left(lstType.Current.Tag) = "!" ' svwOption.Enabled = Not $bRepository ' ' End Public Sub txtName_Change() If Trim(txtName.Text) Then lblFinalDir.Text = dchProject.SelectedPath &/ Trim(txtName.Text) Else lblFinalDir.Text = dchProject.SelectedPath &/ "..." Endif End Public Sub svwTemplate_MouseUp() $hTemplate.Current = Null $sTemplate = "" End gambas-3.16.3/app/src/gambas3/.src/Project/FCreateProject.form000066400000000000000000000070051411575327000237310ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,89,72) Text = ("New project") Icon = Picture["icon:/small/new"] Persistent = True Arrangement = Arrange.Fill Margin = True { wizProject Wizard MoveScaled(1,1,83,69) Arrangement = Arrange.Vertical Spacing = True Count = 3 TextFont = Font["Bold,+3"] ShowIndex = True Border = False Index = 0 Text = ("Project type") { Panel1 Panel MoveScaled(1,1,80,54) Background = Color.TextBackground Expand = True Arrangement = Arrange.Vertical Spacing = True Margin = True Border = Border.Plain { Panel3 Panel MoveScaled(6,4,38,4) Visible = False Arrangement = Arrange.Fill Border = Border.Plain { txtFilter ButtonBox MoveScaled(1,0,24,4) Enabled = False Foreground = Color.LightForeground Picture = Picture["icon:/small/clear"] Border = False } } { svwTemplate ScrollView MoveScaled(4,12,72,39) Background = Color.TextBackground Expand = True Arrangement = Arrange.Row Spacing = True Border = False } } Index = 1 Text = ("Parent directory") { dchProject DirChooser MoveScaled(4,3,73,50) Expand = True Root = "/" } Index = 2 Text = ("Project details") { panIdent VBox MoveScaled(1,0,80,39) Spacing = True { Label10 Label MoveScaled(0,0,25,3) Font = Font["Bold"] Text = ("Project name") Alignment = Align.BottomNormal } { txtName TextBox MoveScaled(0,4,49,4) } { Label2 Label MoveScaled(0,8,76,3) Font = Font["Italic,-1"] Text = ("The project name is the name of the project directory.") } { Panel2 HBox MoveScaled(0,11,74,3) Spacing = True { Label16 Label MoveScaled(0,0,23,2) Font = Font["Italic,-1"] AutoResize = True Text = ("The project final directory is :") } { lblFinalDir Label MoveScaled(24,0,39,2) Font = Font["Bold,-1"] Expand = True } } { Label3 Label MoveScaled(1,15,25,3) Font = Font["Bold"] Text = ("Project title") Alignment = Align.BottomNormal } { txtTitle TextBox MoveScaled(1,19,51,4) } { Label14 Label MoveScaled(1,23,76,2) Font = Font["Italic,-1"] Text = ("The project title is the true name of the application.") } { Panel4 Panel MoveScaled(22,27,4,1) } { chkTranslate CheckBox MoveScaled(1,29,43,3) Text = ("Project is translatable") } { chkOther CheckBox MoveScaled(1,33,43,3) Text = ("Open in another window") } } { panRepository VBox MoveScaled(1,40,81,18) Expand = True Spacing = True { Label7 Label MoveScaled(0,0,25,3) Font = Font["Bold"] Text = ("Repository") Alignment = Align.BottomNormal } { txtRepository TextBox MoveScaled(0,4,51,4) } { Label15 Label MoveScaled(0,8,76,2) Font = Font["Italic,-1"] Text = ("The project repository is directly sent to the 'svn checkout' command.") } { edtOutput TextEditor MoveScaled(0,11,79,6) Font = Font["Monospace,-1"] Expand = True ReadOnly = True } } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Project/FImportFile.class000066400000000000000000000114741411575327000234200ustar00rootroot00000000000000' Gambas class file Private $sPath As String Private $sDir As String Private $sType As String Public Sub Run(sPath As String, sDir As String, sType As String) $sPath = sPath $sDir = sDir $sType = sType If Not Me.ShowModal() Then Return End Private Sub InitFilter() Dim aFilter As String[] Dim hModule As CModule If Project.IsSourceDir($sDir) Then aFilter = ["*.module", ("Gambas modules"), "*.class", ("Gambas classes")] aFilter.Insert(["*.test", ("Gambas test modules")]) For Each hModule In CModule.All If Not hModule.Used Then Continue aFilter.Add("*." & hModule.Key) aFilter.Add(hModule.NameFilter) Next Else aFilter = ["*.png;*.jpg;*.jpeg;*.xpm;*.gif", ("Picture files"), "*.htm;*.html", ("HTML files"), "*.css", ("Cascading style sheets"), "*.js", ("Javascript files")] Endif fchExisting.Filter = aFilter End Public Sub Form_Open() InitFilter Settings.Read(Me) Settings.Read(fchExisting) fchExisting.ShowHidden = True End Private Sub ImportDependencies(sName As String, sExt As String, sOrig As String, bLink As Boolean) Dim hIn As File Dim hOut As File Dim sLine As String Dim iPos As Integer Dim sImg As String Dim sImportDir As String Dim sDestImg As String Dim sForm As String Dim bSave As Boolean Inc Application.Busy sForm = Project.Dir &/ File.SetExt(sName, sExt) sOrig = File.Dir(sOrig) hIn = Open sForm hOut = Open Temp$(sExt) For Create ' TODO: Import Image.Load(*) and SvgImage.Load(*) While Not Eof(hIn) Line Input #hIn, sLine iPos = InStr(sLine, "Picture[") If iPos = 0 Then Goto NEXT_LINE sImg = Scan(sLine, "*Picture\\[\"*\"]")[1] If sImg Begins "icon:/" Then Goto NEXT_LINE sImportDir = Project.Dir &/ "import" If Not Exist(sImportDir) Then Project.InsertDirectory(sImportDir) sImportDir &/= sName If Not Exist(sImportDir) Then Project.InsertDirectory(sImportDir) sDestImg = sImportDir &/ File.Name(sImg) If Exist(sOrig &/ sImg) Then If Not Exist(sDestImg) Then Project.InsertFile(File.Name(sDestImg), File.Dir(sDestImg), sOrig &/ sImg, True, bLink) Endif sLine = Left(sLine, iPos + 7) & Chr$(34) & "import" &/ sName &/ File.Name(sDestImg) & Chr$(34) & "]" bSave = True Else Continue Endif NEXT_LINE: Print #hOut, sLine Wend Close #hOut Close #hIn If bSave Then Kill sForm Copy Temp$(sExt) To sForm Project.RefreshKey(sForm) Endif Finally Dec Application.Busy End Private Sub ImportFile() As Boolean Dim sDir As String Dim sName As String Dim sTemp As String Dim sExt As String For Each sTemp In fchExisting.SelectedPaths sDir = File.Dir(sTemp) sName = File.Name(sTemp) sExt = File.Ext(sTemp) Select Case sExt Case "module", "test", "class" sName = File.BaseName(Project.GetUniqueSourceName(sName)) Project.InsertSource(sName, sExt, $sDir, sTemp,,, chkLink.Value) ' Case "test" ' sName = File.BaseName(Project.GetUniqueSourceName(sName)) ' Project.InsertSource(sName, "test", $sDir, sTemp,,, chkLink.Value) ' ' Case "class" ' sName = File.BaseName(Project.GetUniqueSourceName(sName)) ' Project.InsertSource(sName, "class", $sDir, sTemp,,, chkLink.Value) Case "form", "report", "webform", "termform" sName = File.BaseName(Project.GetUniqueSourceName(sName)) Project.InsertSource(sName, "class", $sDir, File.SetExt(sTemp, "class"), True, True, chkLink.Value) Project.InsertSource(sName, sExt, $sDir, sTemp, False, True, chkLink.Value) ImportDependencies(sName, sExt, sTemp, chkLink.Value) Project.OpenForm(sName) Case "webpage" sName = File.BaseName(Project.GetUniqueSourceName(sName)) Project.InsertSource(sName, "class", $sDir, File.SetExt(sTemp, "class"), True, True, chkLink.Value) Project.InsertSource(sName, "webpage", $sDir, sTemp, False, False, chkLink.Value) Case Else Inc FMain.NoMessage sName = Project.GetUniqueName($sDir, sName) Project.InsertFile(sName, $sDir, sTemp,, chkLink.Value) Dec FMain.NoMessage End Select Next End Public Sub Form_Close() Settings.Write(Me) Settings.Write(fchExisting) End Public Sub fchExisting_Activate() If fchExisting.SelectedPaths.Count = 0 Then Return If ImportFile() Then Return Me.Close(True) Catch FMain.NoMessage = 0 FMain.ShowError(("Cannot import file.") & "\n\n" & Error.Text & "\n" & Error.Where) End Public Sub fchExisting_Icon(Path As String) If Exist(Path &/ ".project") Then fchExisting.Icon = Project.GetIcon(Path) Endif End Public Sub fchExisting_Cancel() Me.Close End gambas-3.16.3/app/src/gambas3/.src/Project/FImportFile.form000066400000000000000000000005721411575327000232530ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,100,75) Text = ("Import files") Arrangement = Arrange.Vertical Spacing = True Margin = True { fchExisting FileChooser MoveScaled(3,2,76,48) Expand = True Multi = True ShowButton = True ReadOnly = True } { chkLink CheckBox MoveScaled(3,52,56,3) Text = ("Create symbolic links") } } gambas-3.16.3/app/src/gambas3/.src/Project/FMakeExecutable.class000066400000000000000000000051221411575327000242160ustar00rootroot00000000000000' Gambas class file Private $sPath As String Public Sub Run(sPath As String) As String $sPath = sPath If Me.ShowModal() Then Return $sPath End Public Sub Form_Open() Settings.Read(Me) Settings.Read(fchExec, "fchExec") fchExec.Filter = ["*.gambas", ("Gambas applications")] fchExec.SelectedPath = $sPath fchExec.SetFocus chkDebug.Value = Project.KeepDebugInfo chkCompress.Value = Project.CompressFiles chkIncVersion.Visible = Not Project.VersionFile panVersion.Visible = chkIncVersion.Visible txtMajor.Value = Project.MajorVersion txtMinor.Value = Project.MinorVersion txtRelease.Value = Project.ReleaseVersion chkIncVersion.Value = Not Project.Config["/Executable/DoNotIncrementVersion", False] chkSetVersion.Value = False chkNoTest.Visible = Project.HasTest() chkNoTest.Value = Project.Config["/Executable/NoTestModule", False] ' If Project.CreateComponent Then ' chkShortcut.Text = ("Install in the user component directory") ' Else ' chkShortcut.Text = ("Create a shortcut on the desktop") ' Endif chkShortcut.Value = Project.CreateShortcut chkShortcut.Visible = Project.Type = Project.TYPE_NORMAL txtCommand.Text = Project.RunAfterMakingExec tabExec.Index = 0 End Public Sub Form_Close() Settings.Write(fchExec, "fchExec") Settings.Write(Me) End Public Sub btnOK_Click() $sPath = fchExec.SelectedPath With Project .KeepDebugInfo = chkDebug.Value .CompressFiles = chkCompress.Value .CreateShortcut = chkShortcut.Value .RunAfterMakingExec = Trim(txtCommand.Text) .Config["/Executable/DoNotIncrementVersion"] = chkIncVersion.Value = CheckBox.False .Config["/Executable/NoTestModule"] = CBool(chkNoTest.Value) .MajorVersion = txtMajor.Value .MinorVersion = txtMinor.Value .ReleaseVersion = txtRelease.Value .WriteProject(True) End With Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub chkIncVersion_Click() If chkIncVersion.Value Then txtMajor.Value = Project.MajorVersion txtMinor.Value = Project.MinorVersion txtRelease.Value = Project.ReleaseVersion + 1 chkSetVersion.Value = False Endif End Public Sub chkSetVersion_Click() txtMajor.Enabled = chkSetVersion.Value txtMinor.Enabled = chkSetVersion.Value txtRelease.Enabled = chkSetVersion.Value btnUndoVersion.Enabled = True If chkSetVersion.Value Then chkIncVersion.Value = False Endif End Public Sub btnUndoVersion_Click() txtMajor.Value = Project.MajorVersion txtMinor.Value = Project.MinorVersion txtRelease.Value = Project.ReleaseVersion End gambas-3.16.3/app/src/gambas3/.src/Project/FMakeExecutable.form000066400000000000000000000066761411575327000240730ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,100,73) Text = ("Make executable") Icon = Picture["icon:/small/exec"] Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { tabExec TabPanel MoveScaled(4,2,92,63) Expand = True Arrangement = Arrange.Fill Count = 2 Index = 0 Text = ("Location") { fchExec FileChooser MoveScaled(4,1,76,49) Border = False Margin = True } Index = 1 Text = ("Options") { VBox1 VBox MoveScaled(1,1,89,56) Margin = True { chkIncVersion CheckBox MoveScaled(1,1,43,4) AutoResize = True Text = ("Increment version") } { panVersion HBox MoveScaled(1,5,82,4) Visible = False Spacing = True { chkSetVersion CheckBox MoveScaled(0,0,19,4) AutoResize = True Text = ("Set version to") } { txtMajor SpinBox grpVersion Name = "txtMajor" MoveScaled(25,0,9,4) Enabled = False MaxValue = 9999 } { txtMinor SpinBox grpVersion Name = "txtMinor" MoveScaled(35,0,9,4) Enabled = False MaxValue = 9999 } { txtRelease SpinBox grpVersion Name = "txtRelease" MoveScaled(45,0,12,4) Enabled = False MaxValue = 999999 } { btnUndoVersion Button MoveScaled(58,0,4,4) Enabled = False Picture = Picture["icon:/small/undo"] } } { chkDebug CheckBox MoveScaled(1,9,55,4) Text = ("Keep debugging information in executable") } { chkCompress CheckBox MoveScaled(1,13,39,4) Text = ("Compress files in executable") } { chkShortcut CheckBox MoveScaled(1,17,34,4) Text = ("Create a shortcut on the desktop") } { chkNoTest CheckBox MoveScaled(1,21,34,4) Text = ("Exclude test modules") } { Panel1 Panel MoveScaled(20,28,7,1) } { Panel2 VBox MoveScaled(1,30,86,26) Expand = True Spacing = True { Label1 Label MoveScaled(0,0,30,3) Font = Font["Bold"] AutoResize = True Text = ("Run this shell command after") } { txtCommand TextBox MoveScaled(0,4,24,4) } { TextLabel1 TextLabel MoveScaled(2,9,83,16) Background = Color.TooltipBackground Foreground = Color.TooltipForeground Padding = 8 AutoResize = True Border = Border.Plain Text = ("The following patterns will be substituted in the command :
      \n• $(FILE) will be replaced by the executable path.
      \n• $(DIR) by the project directory.
      \n• $(NAME) by the project name.
      \n• $(TITLE) by the project title.
      \n• $(VERSION) by the project version.
      \n
      \nNote : all substitutions will be quoted.") } } } Index = 0 } { HBox3 HBox MoveScaled(6,68,79,4) Spacing = True { Spring1 Spring MoveScaled(7,2,9,1) } { btnOK Button MoveScaled(40,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(59,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/FMakeSourceArchive.class000066400000000000000000000013241411575327000246770ustar00rootroot00000000000000' Gambas class file Static Public Path As String Static Public FoolGMail As Boolean Public Sub Run() As Boolean Return Me.ShowModal() = 0 End Public Sub Form_Open() Settings.Read(Me) Settings.Read(fchArchive, "fchArchive") fchArchive.Filter = ["*.tar.gz", ("Source packages"), "*.tar.bz2", ("Source packages"), "*.tar.xz", ("Source packages"), "*.zip", ("Source packages")] fchArchive.SelectedPath = Path fchArchive.SetFocus End Public Sub fchArchive_Activate() Path = fchArchive.SelectedPath FoolGMail = chkFoolGMail.Value Me.Close(True) End Public Sub fchArchive_Cancel() Me.Close End Public Sub Form_Close() Settings.Write(fchArchive, "fchArchive") Settings.Write(Me) End gambas-3.16.3/app/src/gambas3/.src/Project/FMakeSourceArchive.form000066400000000000000000000006301411575327000245340ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,102,64) Text = ("Create source package") Arrangement = Arrange.Vertical Spacing = True Margin = True { fchArchive FileChooser MoveScaled(5,1,76,51) Expand = True AutoExt = True ShowButton = True } { chkFoolGMail CheckBox MoveScaled(5,54,67,3) Text = ("Transform into a \".gmail.txt\" archive that fools GMail") } } gambas-3.16.3/app/src/gambas3/.src/Project/FOpenProject.class000066400000000000000000000073311411575327000235730ustar00rootroot00000000000000' Gambas class file Static Private $sPath As String Static Private $bAnother As Boolean Static Public InAnotherWindow As Boolean Private $iSort As Integer 'Private $bControl As Boolean Private $hRecent As CProjectList Private $hExample As CProjectList Public Sub Run(Optional bAnother As Boolean) As String $bAnother = bAnother $sPath = "" Inc Application.Busy If Me.ShowModal() Then 'Debug Return $sPath Endif 'Debug End Public Sub _new() $hRecent = New CProjectList(lstRecent, txtFilter, CProjectList.TYPE_RECENT, Arrange.Row) As "ProjectItem" $hExample = New CProjectList(lstExample, txtFilterExample, CProjectList.TYPE_EXAMPLE, Arrange.Row) As "ProjectItem" tabProject[2].Visible = False txtFilter.Text = Settings["FWelcome/Filter"] End Public Sub btnOpen_Click() If tabProject.Text = ("Open") Then $sPath = pchProject.Path Else If tabProject.Text = ("Recent") Then If Not $sPath Then $sPath = $hRecent.GetFirst() Else If tabProject.Text = ("Examples") Then If Not $sPath Then $sPath = $hExample.GetFirst() Endif If Not $sPath Then Return Me.Close(True) End Public Sub Form_Open() Dim hCtrl As RadioButton Settings.Read(Me) Settings.Read(pchProject) ' Settings.Read(dchProject) ' Settings.Read(splProject) ' dchProject.ShowFile = True ' 'dchProject.Value = Settings["/FOpenProject/Path"] ' dchProject_Change InAnotherWindow = False $hRecent.AllowOpenExtern = $bAnother $hExample.AllowOpenExtern = $bAnother $iSort = Settings["/FOpenProject/SortRecent", CRecentProject.SORT_BY_DATE] For Each hCtrl In [radSortByDate, radSortByName, radSortByPath] If hCtrl.Tag = $iSort Then hCtrl.Value = True Next pchProject.ShowAnother = $bAnother If $bAnother Then tabProject.Index = 1 tabProject_Click Dec Application.Busy End Public Sub Form_Close() Settings["/FOpenProject/SortRecent"] = $iSort Settings.Write(Me) ' Settings.Write(splProject) ' Settings.Write(dchProject) Settings.Write(pchProject) End Public Sub tabProject_Click() If tabProject.Text = ("Recent") Then $hRecent.Fill ' sorting as stored in Settings $hRecent.SetSort($iSort) $hRecent.ApplyFilter(txtFilter.Text) txtFilter.Editor.SelectAll() txtFilter.SetFocus Else If tabProject.Text = ("Examples") Then $hExample.Fill $hExample.ApplyFilter(txtFilterExample.Text) txtFilterExample.Editor.SelectAll() txtFilterExample.SetFocus Endif End Public Sub OnUpdateRecent() $hRecent.Clear If tabProject.Text = ("Recent") Then $hRecent.Fill End Public Sub btnOpenAnother_Click() InAnotherWindow = True btnOpen_Click End Public Sub radSort_Click() $iSort = Last.Tag If tabProject.Text = ("Recent") Then $hRecent.SetSort(Last.Tag) $hRecent.ApplyFilter(txtFilter.Text) txtFilter.SetFocus Endif End Public Sub ProjectItem_Click(sPath As String, bAnother As Boolean) 'InAnotherWindow = $bControl Or bAnother InAnotherWindow = bAnother $sPath = sPath btnOpen_Click End Public Sub pchProject_Activate() btnOpen_Click End Public Sub txtFilter_KeyPress() If Key.Control Then If Key.Code = Key.Enter Or If Key.Code = Key.Return Then btnOpen_Click Endif Else If Key.Normal Then If Key.Code = Key.Esc Then If txtFilter.Length Then txtFilter.Clear Else Me.Close Endif Endif Endif End Public Sub txtFilterExample_KeyPress() If Key.Control Then If Key.Code = Key.Enter Or If Key.Code = Key.Return Then btnOpen_Click Endif Endif End Public Sub pchProject_Cancel() Me.Close End Public Sub pchProject_Open((Path) As String, Extern As Boolean) InAnotherWindow = Extern btnOpen_Click End gambas-3.16.3/app/src/gambas3/.src/Project/FOpenProject.form000066400000000000000000000055761411575327000234420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,114,77) Text = ("Select a project") Icon = Picture["icon:/32/open"] Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { tabProject TabPanel MoveScaled(1,1,110,69) Expand = True Arrangement = Arrange.Vertical Count = 3 Index = 0 Text = ("Open") Picture = Picture["icon:/small/open"] { pchProject ProjectChooser MoveScaled(3,4,98,56) Expand = True ShowButton = True } Index = 1 Text = ("Recent") Picture = Picture["icon:/small/open-recent"] { Panel5 VBox MoveScaled(2,2,91,56) Background = Color.TextBackground Expand = True Spacing = True Margin = True { HBox2 HBox MoveScaled(0,0,78,4) Spacing = True { Panel2 Panel MoveScaled(1,0,25,4) Expand = True Arrangement = Arrange.Fill Border = Border.Plain { txtFilter ButtonBox MoveScaled(0,0,24,4) Picture = Picture["icon:/small/clear"] Border = False } } { radSortByDate RadioButton radSort Name = "radSortByDate" MoveScaled(29,0,16,4) Tag = "0" AutoResize = True Text = ("Sort by date") Value = True } { radSortByName RadioButton radSort Name = "radSortByName" MoveScaled(45,0,16,4) Tag = "1" AutoResize = True Text = ("Sort by name") } { radSortByPath RadioButton radSort Name = "radSortByPath" MoveScaled(61,0,16,4) Tag = "2" AutoResize = True Text = ("Sort by path") } } { lstRecent ScrollView MoveScaled(2,12,73,43) Background = Color.TextBackground Expand = True Arrangement = Arrange.Row Spacing = True Border = False ScrollBar = Scroll.Vertical } } Index = 2 Text = ("Examples") Picture = Picture["icon:/small/help"] { Panel3 VBox MoveScaled(1,1,92,60) Background = Color.TextBackground Expand = True Spacing = True Margin = True { HBox3 HBox MoveScaled(2,2,78,4) { Panel4 Panel MoveScaled(1,0,25,4) Expand = True Arrangement = Arrange.Fill Border = Border.Plain { txtFilterExample ButtonBox MoveScaled(0,0,24,4) Foreground = Color.LightForeground Picture = Picture["icon:/small/clear"] Border = False } } } { lstExample ScrollView MoveScaled(4,13,73,43) Background = Color.TextBackground Expand = True Arrangement = Arrange.Row Spacing = True Border = False ScrollBar = Scroll.Vertical } } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Project/FProjectProperty.class000066400000000000000000001012621411575327000245140ustar00rootroot00000000000000' Gambas class file 'Static Private $bShowUsed As Boolean Static Private $bShowLibraries As Boolean Static Private $bShowArguments As Boolean Private $sIcon As String Private $bCanInitComponents As Boolean Private $aEnv As String[] Private $aComponents As String[] Private $aLibraries As String[] 'Private $iDoNotRefreshComponent As Integer Private Const COMPONENT_PROPERTIES_TAB As Integer = 1 Private Const LIBRARY_TAB As Integer = 3 Private Const ARGUMENT_TAB As Integer = 5 'Private Const VERSION_CONTROL_TAB As Integer = 8 Private $bInitInfo As Boolean Private $aNeed As String[] Private $aRequire As String[] Private $aExclude As String[] Private $aImplement As String[] Private $iCurrentLibrary As Integer Static Public Function Run() As Boolean Return Not FProjectProperty.ShowModal() End Static Public Function ShowLibraries() As Boolean $bShowLibraries = True Return Not FProjectProperty.ShowModal() End Static Public Function ShowArguments() As Boolean $bShowArguments = True Return Not FProjectProperty.ShowModal() End Public Sub _new() Dim hBorder As Border tvwEnv.AddColumn("") tvwEnv.AddColumn(("Variable"), Desktop.Scale * 16) tvwEnv.AddColumn(("Value")) tvwEnv.Rows.Resizable = False hBorder = Border("style:none;bottom-style:solid;padding:" & CStr(Desktop.Scale \ 2) & ";") hBorder.Color = Color.LightForeground gvwLibrary.Rows.Border = hBorder End Public Sub Form_Open() Dim sLang As String Me.Title = ("Project properties") & " - " & Project.Name lblName.Text = Project.Name txtPath.Text = File.Dir(Project.Dir) 'txtName.Text = "" & Project.Name & "
      " & File.Dir(Project.Dir) cmbDefaultLanguage.Clear For Each sLang In Language.GetAll() cmbDefaultLanguage.Add(Language.ToName(sLang)) Next With Project txtVendor.Text = .Vendor txtTitle.Text = .Title txtDesc.Text = .Description txtAuthor.Text = .Authors btnControlPublic.Value = .ControlPublic btnModulePublic.Value = .ModulePublic btnShowDeprecated.Value = .ShowDeprecated btnWarning.Value = .Warnings txtMajor.Value = .MajorVersion txtMinor.Value = .MinorVersion txtRelease.Value = .ReleaseVersion btnTranslate.Value = .Localize cmbType.Index = .Type cmbDefaultLanguage.Text = Language.ToName(System.Language) Try cmbDefaultLanguage.Text = Language.ToName(Project.DefaultLanguage) ' Select Case .Type ' Case .TYPE_NORMAL ' radTypeNormal.Value = True ' Case .TYPE_LIBRARY ' radTypeLibrary.Value = True ' Case .TYPE_COMPONENT ' radTypeComponent.Value = True ' End Select $sIcon = .Icon UpdateIcon txtTabSize.Value = .TabSize 'cmbStackSize.Index = 0 'If .Stack Then cmbStackSize.Text = .Stack & " K" 'cmbStackTrace.Index = If(.StackTrace, 0, 1) chkGetVersionFromFile.Value = .VersionFile 'chkVersion.Value = NOT IsNull(.VersionProgram) 'cmbTerminal.Index = If(.UseTerminal, 0, 1) 'cmbRedirect.Index = If(.RedirectStderr, 0, 1) 'cmbProfile.Index = If(.Profiling, 0, 1) 'cmbHttpServer.Index = If(.UseHttpServer, 0, 1) txtLibraryPath.Text = .LibraryPath $aLibraries = .Libraries.Copy() $aComponents = .Components.Copy() lstReferences.List = .ExtraReferences End With choComponent.Checkable = True choComponent.CheckedComponents = Project.Components choComponent.Libraries = $aLibraries choComponent.ShowDeprecated = Project.ShowDeprecated 'chkShowUsed.Value = $bShowUsed $bCanInitComponents = True 'ipnProject[VERSION_CONTROL_TAB].Visible = VersionControl.Enabled gvwVcInfo.Visible = VersionControl.Enabled 'sepVcInfo.Visible = gvwVcInfo.Visible If VersionControl.Name = "Git" Then btnVersionAddBranch.Enabled = True btnVersionAddBranch.Value = Project.VersionAddBranch Else btnVersionAddBranch.Enabled = False btnVersionAddBranch.Value = False Endif ipnProject.Index = 0 InitEnvironment btnOK.Enabled = Not Project.ReadOnly And Not Project.Running $bInitInfo = False gvwVcInfo.Rows.Count = 0 Me.Center() End Public Sub Form_Activate() If $bShowLibraries Then $bShowLibraries = False ipnProject.Index = LIBRARY_TAB Else If $bShowArguments Then $bShowArguments = False ipnProject.Index = ARGUMENT_TAB Endif End Private Sub InitEnvironment() $aEnv = Project.Environment.Copy() UpdateEnv End Private Sub SaveEnvironment() Dim iInd As Integer Dim aEnv As String[] tvwEnv.Save aEnv = $aEnv.Copy() While iInd < $aEnv.Count If Not Trim(Scan($aEnv[iInd], "*=*")[0]) Then aEnv.Remove(iInd) Else Inc iInd Endif Wend Project.Environment = aEnv End Public Sub btnCancel_Click() Me.Close End Private Function DoApply() As Boolean ' Dim bRefreshForm As Boolean Dim bRefreshEditor As Boolean If choComponent.CheckSelection() Then Return True With Project .Vendor = Trim(txtVendor.Text) .Title = Trim(txtTitle.Text) .Description = Trim(txtDesc.Text) .Authors = Trim(txtAuthor.Text) .Icon = $sIcon '.Profiling = cmbProfile.Index = 0 '.UseTerminal = cmbTerminal.Index = 0 '.RedirectStderr = cmbRedirect.Index = 0 '.UseHttpServer = cmbHttpServer.Index = 0 If .ControlPublic <> btnControlPublic.Value Or If .ModulePublic <> btnModulePublic.Value Then .ControlPublic = btnControlPublic.Value .ModulePublic = btnModulePublic.Value Project.ResetScan Project.DeleteCompiledFiles Endif If .ShowDeprecated <> btnShowDeprecated.Value Then .ShowDeprecated = btnShowDeprecated.Value FToolBox.RefreshToolbar(True) Endif .Warnings = btnWarning.Value .MajorVersion = txtMajor.Value .MinorVersion = txtMinor.Value .ReleaseVersion = txtRelease.Value .VersionFile = chkGetVersionFromFile.Value '.SnapToGrid = chkSnap.Value 'IF chkShowGrid.Value <> .ShowGrid OR .Snap <> txtGrid.Value THEN ' bRefreshForm = TRUE 'ENDIF '.ShowGrid = chkShowGrid.Value '.Snap = txtGrid.Value If btnTranslate.Value And Not .Localize Then Project.DeleteCompiledFiles() Endif .Localize = btnTranslate.Value .DefaultLanguage = Language.FromName(cmbDefaultLanguage.Text) .Type = cmbType.Index If .TabSize <> txtTabSize.Value Then bRefreshEditor = True Endif .TabSize = txtTabSize.Value .LibraryPath = Trim(txtLibraryPath.Text) .Libraries = $aLibraries .ExtraReferences = lstReferences.List If VersionControl.Enabled Then .VersionAddBranch = btnVersionAddBranch.Value End With SaveComponents SaveEnvironment WriteComponent Inc Project.TimeStamp Project.WriteProject Project.MakeDirectoryIcon Project.Compile Project.RefreshRoot ' If bRefreshForm Then Project.RefreshForm If bRefreshEditor Then Project.RefreshEditor FMain.OnRefreshComponents 'Project.SetMessage(("OK")) Return BAD_GRID: Message.Error(("Snapping value is incorrect.")) Return True End Public Sub btnOK_Click() If DoApply() Then Return Me.Close(True) End Private Sub SaveComponents() Project.Components = choComponent.CheckedComponents Project.RefreshComponents End ' Public Sub gvwComponent_Data(Row As Integer, Column As Integer) ' ' Dim hCompItem As ComponentItem = $cComp[$aComp[Row]] ' Dim hComp As CComponent = CComponent.All[$aComp[Row]] ' ' With gvwComponent.Data ' ' Select Case Column ' ' Case 0 ' .Picture = hCompItem.Picture ' ' Case 1 ' .Text = hCompItem.Key ' .Font.Bold = True ' If hComp.State = CComponent.UNSTABLE Then ' .Font.Italic = True ' Else If hComp.State = CComponent.DEPRECATED Then ' .Foreground = Color.LightForeground ' '.Font.Strikeout = True ' Endif ' ' Case 2 ' .WordWrap = True ' .RichText = hCompItem.GetDescription() ' If hComp.State = CComponent.UNSTABLE Then ' .Font.Italic = True ' Else If hComp.State = CComponent.DEPRECATED Then ' .Foreground = Color.LightForeground ' '.Font.Strikeout = True ' Endif ' ' Case 3 ' Select Case hComp.State ' Case CComponent.STABLE_NOT_FINISHED ' .Picture = Picture["img/16/unfinished.png"] ' Case CComponent.UNSTABLE ' .Picture = Picture["img/16/experimental.png"] ' Case CComponent.STABLE ' .Picture = Picture["img/16/finished.png"] ' Case CComponent.DEPRECATED ' .Picture = Picture["img/16/deprecated.png"] ' End Select ' ' End Select ' ' .Alignment = Align.TopNormal ' '.Background = If(Even(Row), Color.Gradient(Color.LightForeground, Color.TextBackground, 0.9), Color.TextBackground) ' .Background = Color.Gradient(Color.LightForeground, Color.TextBackground, 0.95) ' ' End With ' ' End ' Private Function CheckComponent(sKey As String, bCheck As Boolean) As Boolean ' ' Dim bBefore As Boolean ' Dim sDep As String ' ' bBefore = IsChecked(sKey) ' If bBefore = bCheck Then Return ' ' If bCheck Then ' $cComp[sKey].Check("") ' For Each sDep In GetRequire(sKey) ' $cComp[sDep].Check(sKey) ' Next ' Else ' $cComp[sKey].Uncheck("") ' Endif ' ' End ' PRIVATE FUNCTION CheckComponent(sKey AS String, bCheck AS Boolean) AS Boolean ' ' DIM hComp AS CComponent ' DIM sComp AS String ' DIM aExclude AS NEW String[] ' DIM aNeed AS NEW String[] ' DIM sImpl AS String ' DIM sNeed AS String ' DIM bFound AS Boolean ' ' WITH cvwComponent ' ' IF NOT .Available THEN RETURN ' ' IF bCheck THEN ' ' FOR EACH sImpl IN CComponent.All[sKey].Implement ' ' FOR EACH hComp IN CComponent.All ' ' IF hComp.Key = sKey THEN CONTINUE ' IF hComp.Implement.Find(sImpl) >= 0 THEN ' IF NOT IsChecked(hComp.Key) THEN CONTINUE ' IF aExclude.Find(hComp.Key) < 0 THEN aExclude.Add(hComp.Key) ' ENDIF ' ' NEXT ' ' NEXT ' ' FOR EACH sComp IN CComponent.All[sKey].Exclude ' IF NOT IsChecked(sComp) THEN CONTINUE ' IF aExclude.Find(sComp) < 0 THEN aExclude.Add(sComp) ' NEXT ' ' IF aExclude.Count = 1 THEN ' IF Message.Warning(Subst(("The &2 component is incompatible with &1 component.\nIt will be disabled."), sKey, aExclude[0]), ("Continue"), ("Cancel")) = 2 THEN RETURN TRUE ' ELSE IF aExclude.Count > 1 THEN ' IF Message.Warning(Subst(("These components are incompatible with &1 component:\n&2\n\nThey will be disabled."), sKey, aExclude.Join(", ")), ("Continue"), ("Cancel")) = 2 THEN RETURN TRUE ' ENDIF ' ' FOR EACH sNeed IN CComponent.All[sKey].Need ' bFound = FALSE ' FOR EACH hComp IN CComponent.All ' IF hComp.Implement.Find(sNeed) >= 0 THEN ' aNeed.Add(hComp.Key) ' IF IsChecked(hComp.Key) THEN bFound = TRUE ' ENDIF ' NEXT ' IF NOT bFound THEN ' Message.Warning(Subst(("The &1 component needs one of the following components:\n&2."), sKey, aNeed.Join(", "))) ' RETURN TRUE ' ENDIF ' NEXT ' ' FOR EACH sComp IN aExclude ' IF CheckComponent(sComp, FALSE) THEN RETURN TRUE ' NEXT ' ' FOR EACH sComp IN CComponent.All[sKey].Require ' IF CheckComponent(sComp, TRUE) THEN RETURN TRUE ' NEXT ' ' .MoveTo(sKey) ' .Item.Picture = $hCheck ' ' ELSE ' ' .MoveTo(sKey) ' .Item.Picture = $hUncheck ' ' FOR EACH hComp IN CComponent.All ' IF hComp.Require.Find(sKey) < 0 THEN CONTINUE ' CheckComponent(hComp.Key, FALSE) ' NEXT ' ' ENDIF ' ' END WITH ' ' END ' Public Sub chkShowUsed_Click() ' ' choComponent.ShowCheckedOnly = chkShowUsed.Value ' ' End ' ' PRIVATE SUB FillLibrary(sLib AS String) ' ' DIM sText AS String ' ' WITH CComponent.All[sLib] ' ' sText = "

      " & sLib & "

      " & .Name & "

      " ' ' IF .Alpha THEN ' sText = sText & "
      " & ("WARNING! This component is in BETA version.") & " " & ' ("It is under development and may change without notice.") & "

      " ' ELSE ' 'sText = sText & "

      " ' ENDIF ' ' sText = sText & "" & ("Authors:") & " " & .Authors.Join(", ") ' ' IF .Controls THEN ' IF .Controls.Count THEN ' sText = sText & "

      " & ("Controls:") & " " & .Controls.Join(", ") ' ENDIF ' ENDIF ' ' txtComponent.Text = sText ' ' END WITH ' ' END ' PUBLIC SUB clvLibrary_Select() ' ' FillLibrary(clvLibrary.Key) ' 'lblLibrary.Visible = TRUE ' 'clvLibrary.Height = 200 ' 'clvLibrary.Current.EnsureVisible ' ' END Public Sub btnIcon_Click() Dim sIcon As String sIcon = FSelectIcon.Run($sIcon, FSelectIcon.SELECT_IMAGE) If Not sIcon Then Return $sIcon = sIcon UpdateIcon End ' Public Sub chkShowBeta_Click() ' ' $bShowBeta = chkShowBeta.Value ' RefreshComponents ' ' End ' Public Sub cmbComponent_Click() ' ' Dim bComp As Boolean = cmbComponent.Index = 0 ' ' If bComp Then InitRequires ' ' tabProject[REQUIRES_TAB].Visible = bComp ' 'tabProject[COMPONENT_TAB + 1].Visible = bComp ' cmbComponentState.Enabled = bComp ' ' End ' Private Sub GetParent(sPath As String) As String ' ' Dim hFile As File ' Dim sLine As String ' Dim sParent As String ' ' hFile = Open sPath ' While Not Eof(hFile) ' Line Input #hFile, sLine ' sLine = Trim(sLine) ' If Not sLine Then Continue ' If Left(sLine) = "'" Then Continue ' If sLine Like "INHERITS *" Then ' Try sParent = Trim(Scan(sLine, "INHERITS *")[0]) ' Return sParent ' Endif ' If sLine Like "EXPORT" Then Continue ' If sLine Like "CREATE" Then Continue ' If sLine Like "EXPORT *" Then Continue ' If sLine Like "CREATE *" Then Continue ' Break ' Wend ' ' End ' PUBLIC SUB cmbRequire_Click() ' ' btnAdd_Click ' ' END ' PUBLIC SUB chkVersion_Click() ' ' txtVersionProg.Enabled = chkVersion.Value ' TRY txtVersionProg.SetFocus ' ' END ' ' Public Sub btnCommit_Click() ' ' If FCommit.Run($sVerCtrlStatus, $sVerCtrlDiff) Then Return ' tabProject_Click ' ' End ' PUBLIC SUB btnSwap_Click() ' ' IF IsChecked("gb.qt") THEN ' cvwComponent["gb.qt"].Picture = $hUncheck ' cvwComponent["gb.gtk"].Picture = $hCheck ' ELSE IF IsChecked("gb.gtk") THEN ' cvwComponent["gb.gtk"].Picture = $hUncheck ' cvwComponent["gb.qt"].Picture = $hCheck ' ENDIF ' ' END Public Sub btnReset_Click() Select Case ipnProject.Text Case ("Components") choComponent.CheckedComponents = Project.Components choComponent.Libraries = $aLibraries Case ("Libraries") $aLibraries = Project.Libraries.Copy() RefreshLibraries lstReferences.List = Project.ExtraReferences End Select End Private Sub IsEnvDisabled(Row As Integer) As Boolean Return $aEnv[Row] Begins " " End Public Sub tvwEnv_Click() Dim iRow As Integer If tvwEnv.Column Then tvwEnv.Edit Else Try iRow = Key.Code If Not Error Then Stop Event Return Endif iRow = tvwEnv.Row If IsEnvDisabled(iRow) Then $aEnv[iRow] = Mid$($aEnv[iRow], 2) Else $aEnv[iRow] = " " & $aEnv[iRow] Endif tvwEnv[iRow, 0].Refresh Endif End Public Sub tvwEnv_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) If Column Then Return X += (Width - 16) \ 2 Y += (Height - 16) \ 2 'Y += (gvwComponent.Rows.Height - gvwComponent.Padding * 2 - 16) \ 2 Width = 16 Height = 16 Style.PaintBox(X - 2, Y - 2, Width + 4, Height + 4) If Not IsEnvDisabled(Row) Then Paint.DrawPicture(Picture["img/16/checked.png"], X, Y) Endif End Public Sub tvwEnv_Data(Row As Integer, Column As Integer) Dim sEnv As String = $aEnv[Row] Dim aEnv As String[] If Column = 0 Then Return If sEnv Begins " " Then tvwEnv.Data.Foreground = Color.LightForeground sEnv = Mid$(sEnv, 2) Endif aEnv = Scan(sEnv, "*=*") Try tvwEnv.Data.Text = aEnv[Column - 1] End Public Sub tvwEnv_Save(Row As Integer, Column As Integer, Value As String) Dim sEnv As String = $aEnv[Row] Dim aEnv As String[] Dim bDisabled As Boolean If Column = 0 Then Return If sEnv Begins " " Then bDisabled = True sEnv = Mid$(sEnv, 2) Endif aEnv = Scan(sEnv, "*=*") If Column = 1 Then sEnv = Trim(Value) & "=" & aEnv[1] Else sEnv = aEnv[0] & "=" & Value Endif If bDisabled Then sEnv = " " & sEnv $aEnv[Row] = sEnv If Column = 1 Then tvwEnv.Columns[1].Width = -1 End Public Sub tvwEnv_Insert() If Key.Normal Then btnOK.Value = True Else If Key.Control Then btnInsertEnv_Click Endif End Public Sub btnInsertEnv_Click() If $aEnv.Count >= 255 Then Return $aEnv.Add("=") UpdateEnv tvwEnv.MoveTo($aEnv.Max, 1) tvwEnv.Columns[1].Width = Max(tvwEnv.Columns[1].Width, Desktop.Scale * 24) tvwEnv.Edit End Public Sub mnuInsertEnv_Click() Dim sNewEnv As String = Last.Tag Dim iInd As Integer Dim aNewEnv As String[] Dim aEnv As String[] If Not sNewEnv Then Return For Each sNewEnv In Split(sNewEnv) aNewEnv = Scan(sNewEnv, "*=*") For iInd = 0 To $aEnv.Max aEnv = Scan($aEnv[iInd], "*=*") If aEnv[0] = aNewEnv[0] Then aEnv[1] = aNewEnv[1] $aEnv[iInd] = aEnv[0] & "=" & aEnv[1] tvwEnv.Refresh sNewEnv = "" Break Endif Next If sNewEnv Then $aEnv.Add(sNewEnv) UpdateEnv Endif Next End Public Sub btnRemoveEnv_Click() If $aEnv.Count = 0 Then Return If tvwEnv.Row < 0 Then Return tvwEnv.Save $aEnv.Remove(tvwEnv.Row) UpdateEnv End ' Public Sub cmbTranslate_Click() ' ' If cmbTranslate.Index = 0 Then ' cmbDefaultLanguage.Enabled = True ' cmbDefaultLanguage.Text = Language.ToName(System.Language) ' Try cmbDefaultLanguage.Text = Language.ToName(Project.Language) ' Else ' cmbDefaultLanguage.Index = 0 ' cmbDefaultLanguage.Enabled = False ' Endif ' ' End Private Sub UpdateIcon() btnIcon.Picture = Project.StretchIcon(Project.Dir &/ $sIcon, btnIcon.Width - 16).Picture btnIcon.ToolTip = $sIcon End Public Sub btnInsertLib_Click() Dim hLib As CLibraryInfo Dim sPath As String Dim I As Integer If FSelectLibrary.Run() Then Return sPath = FSelectLibrary.Path hLib = CLibraryInfo[sPath] If hLib.Classes.Count = 0 Then Message.Warning(Subst(("&1 does not export any class."), File.Name(sPath))) Return Endif For I = 0 To $aLibraries.Max If File.Name($aLibraries[I]) = File.Name(sPath) Then hLib = CLibraryInfo[$aLibraries[I]] If Not hLib.NotFound Then Message.Warning(Subst(("&1 is already used as a library."), File.Name(sPath))) Return Endif Break Endif Next If I <= $aLibraries.Max Then $aLibraries[I] = sPath Else $aLibraries.Add(sPath) I = $aLibraries.Max Endif Project.UpdateLibraries($aLibraries) RefreshLibraries gvwLibrary.Row = I End Private Sub RefreshLibraries() Dim Y As Integer 'If $iDoNotRefreshComponent Then Return gvwLibrary.Columns.Count = 1 gvwLibrary.Rows.Count = $aLibraries.Count For Y = 0 To $aLibraries.Max With gvwLibrary[Y, 0] '.Picture = Picture["icon:/large/exec"] .Alignment = Align.TopNormal .RichText = CLibraryInfo[$aLibraries[Y]].GetDescription(False) .WordWrap = True .Background = Color.Gradient(Color.LightForeground, Color.TextBackground, 0.96) End With gvwLibrary.Rows[Y].Height = -1 Next choComponent.Libraries = $aLibraries $iCurrentLibrary = -1 gvwLibrary.Row = -1 End Private Sub RemoveLibrary(sPath As String) Dim iPos As Integer iPos = $aLibraries.Find(sPath) If iPos >= 0 Then gvwLibrary.Row = -1 $aLibraries.Remove(iPos) Project.UpdateLibraries($aLibraries) RefreshLibraries Endif End Public Sub btnRemoveLib_Click() If gvwLibrary.Row < 0 Then Return RemoveLibrary($aLibraries[gvwLibrary.Row]) End Public Sub btnMoveUpLib_Click() Dim iPos As Integer = gvwLibrary.Row If iPos < 1 Then Return Swap $aLibraries[iPos], $aLibraries[iPos - 1] RefreshLibraries Dec gvwLibrary.Row End Public Sub btnMoveDownLib_Click() Dim iPos As Integer = gvwLibrary.Row If iPos < 0 Or If iPos >= $aLibraries.Max Then Return Swap $aLibraries[iPos], $aLibraries[iPos + 1] RefreshLibraries Inc gvwLibrary.Row End Public Sub chkGetVersionFromFile_Click() txtMajor.Enabled = Not chkGetVersionFromFile.Value txtMinor.Enabled = txtMajor.Enabled txtRelease.Enabled = txtMajor.Enabled End ' Public Sub UncheckComponents(aComp As String[]) ' ' Dim sComp As String ' ' For Each sComp In aComp ' If Left(sComp) <> "/" Then $cComp[sComp].Uncheck("") ' Next ' ' End Public Sub ipnProject_Click() btnReset.Hide Select Case ipnProject.Text Case ("Components") 'choComponent.SetFocus choComponent.HideBrowser btnReset.Show Case ("Libraries") RefreshLibraries btnReset.Show Case ("Options") 'panHttpServer.Enabled = choComponent.IsChecked("gb.web") 'Project.Components.Exist("gb.web") Case ("Statistics") UpdateStat UpdateVcInfo Case ("Information") UpdateInfo End Select End Private Sub AddStat(sName As String, sValue As String) Dim N As Integer N = gvwStat.Rows.Count Inc gvwStat.Rows.Count gvwStat[N, 0].Text = sName 'gvwStat[N, 0].Foreground = Color.Merge(Color.TextBackground, Color.TextForeground, 0.7) gvwStat[N, 1].Text = sValue gvwStat[N, 1].Font.Bold = True If Even(n) Then gvwStat[N, 0].Background = Color.SetAlpha(Color.TextForeground, 250) gvwStat[N, 1].Background = gvwStat[N, 0].Background Endif End Private Sub UpdateStat() Dim hModule As CModule Dim iSize As Long Dim nFunc As Integer Dim nLine As Integer gvwStat.Columns.Count = 2 gvwStat.Rows.Count = 0 gvwStat.Columns[1].Alignment = Align.Right AddStat(("Modules"), CStr(Project.GetCount("module"))) If Project.HasTest() Then AddStat(("Test modules"), CStr(Project.GetCount("test"))) AddStat(("Classes"), CStr(Project.GetCount("class"))) For Each hModule In CModule.All If Not hModule.Used Then Continue AddStat(hModule.NamePlural, CStr(Project.GetCount(hModule.Key))) Next nLine = Project.GetLinesOfCode(ByRef nFunc) AddStat(("Functions"), Format(nFunc, ",0")) AddStat(("Lines of code"), Format(nLine, ",0")) If nFunc Then AddStat(("Average number of lines by function"), Format(nLine / nFunc, ",0.0")) Try iSize = Stat(Project.GetExecPath()).Size If iSize Then AddStat(("Executable size"), Format(iSize, ",0") & " " & ("bytes")) gvwStat.Columns[0].Width = -1 gvwStat.Columns[0].Width += 16 End Public Sub cmbType_Click() Select cmbType.Index Case Project.TYPE_NORMAL ipnProject[COMPONENT_PROPERTIES_TAB].Visible = False Case Project.TYPE_COMPONENT ipnProject[COMPONENT_PROPERTIES_TAB].Visible = True 'ipnProject[COMPONENT_PROPERTIES_TAB].Text = ("Component properties") lblInfo.Text = ("Information about component") panCompatible.Hide Case Project.TYPE_LIBRARY ipnProject[COMPONENT_PROPERTIES_TAB].Visible = True 'ipnProject[COMPONENT_PROPERTIES_TAB].Text = ("Library properties") lblInfo.Text = ("Information about library") panCompatible.Show End Select End '-------------------------------------------------------------------------- Private Sub ReadComponentFile() Dim cComp As Collection Dim aVer As String[] $aNeed = New String[] $aRequire = New String[] $aExclude = New String[] $aImplement = New String[] cComp = Project.ReadComponentFile() If Not cComp Then Return If cComp.Exist("Need") Then $aNeed = cComp["Need"] If cComp.Exist("Require") Then $aRequire = cComp["Require"] If cComp.Exist("Exclude") Then $aExclude = cComp["Exclude"] If cComp.Exist("Implement") Then $aImplement = cComp["Implement"] cmbComponentState.Index = cComp["State"] btnHidden.Value = cComp["Hidden"] If cComp.Exist("Include") Then txtIncludeInfo.Text = cComp["Include"].Join(",") Try aVer = Split(cComp["CompatibleUntil"], ".") If aVer And If aVer.Count = 3 Then chkCompat.Value = True Try txtCompMajor.Value = CInt(aVer[0]) Try txtCompMinor.Value = CInt(aVer[1]) Try txtCompRelease.Value = CInt(aVer[2]) Else chkCompat.Value = False Endif End Private Sub WriteFeatures(hCont As Container, aFeature As String[]) Dim hCtrl As CheckBox For Each hCtrl In hCont.Children If hCtrl.Value Then aFeature.Add(hCtrl.Tag) Next End Private Sub WriteComponent() Dim cComp As New Collection If Project.Type <> Project.TYPE_NORMAL Then ' If the component information has not been initialized, do nothing, don't erase the component file! If Not $bInitInfo Then Return cComp["State"] = cmbComponentState.Index $aNeed.Clear WriteFeatures(panNeed, $aNeed) WriteFeatures(panNeed2, $aNeed) cComp["Hidden"] = btnHidden.Value cComp["Implement"] = $aImplement cComp["Need"] = $aNeed cComp["Require"] = $aRequire cComp["Exclude"] = $aExclude If chkCompat.Value Then cComp["CompatibleUntil"] = CStr(txtCompMajor.Value) & "." & CStr(txtCompMinor.Value) & "." & CStr(txtCompRelease.Value) cComp["Include"] = Split(Trim(txtIncludeInfo.Text)) Endif Project.WriteComponentFile(cComp) End Private Sub ReadComponent() 'Dim hComp As CComponent Dim sComp As String ReadComponentFile ' aComp = New String[] ' For Each hComp In CComponent.All ' If hComp.Hidden Then Continue ' If hComp.Key = CComponent.PROJECT_NAME Then Continue ' If hComp.Key = Project.Name Then Continue ' If hComp.Key = "gb" Then Continue ' If $aRequire.Exist(hComp.Key) Then Continue ' aComp.Add(hComp.Key) ' Next ' aComp.Sort ReadFeatures(panNeed, $aNeed) ReadFeatures(panNeed2, $aNeed) lvwRequire.Clear For Each sComp In $aRequire lvwRequire.Add(sComp, sComp, Picture["icon:/small/ok"]) Next For Each sComp In $aExclude lvwRequire.Add(sComp, sComp, Picture["icon:/small/close"]) Next End Private Sub ReadFeatures(hCont As Container, aFeature As String[]) Dim hCtrl As CheckBox For Each hCtrl In hCont.Children hCtrl.Value = aFeature.Find(hCtrl.Tag, gb.IgnoreCase) >= 0 Next End Private Sub AddRequireExclude(sComp As String, aComp As String[]) Dim sIcon As String If sComp = Project.Name Then Return If lvwRequire.Exist(sComp) Then Return If aComp = $aRequire Then sIcon = "ok" Else sIcon = "close" Endif aComp.Add(sComp) lvwRequire.Add(sComp, sComp, Picture["icon:/small/" & sIcon]) End Public Sub btnRemove_Click() Dim sKey As String Dim iFind As Integer sKey = lvwRequire.Key If Not sKey Then Return lvwRequire.Remove(sKey) iFind = $aRequire.Find(sKey) If iFind >= 0 Then $aRequire.Remove(iFind) iFind = $aExclude.Find(sKey) If iFind >= 0 Then $aExclude.Remove(iFind) End Public Sub btnRemoveAll_Click() lvwRequire.Clear $aRequire.Clear $aExclude.Clear End Public Sub chkCompat_Click() txtCompMajor.Enabled = chkCompat.Value txtCompMinor.Enabled = chkCompat.Value txtCompRelease.Enabled = chkCompat.Value End Private Sub UpdateInfo() If $bInitInfo Then Return ReadComponent 'Me.Title = 'lblTitle.Text = Project.Name ' Try aClass = Split(File.Load(Project.Dir &/ ".list"), "\n", "", True) ' If Not Error Then ' For iInd = 0 To aClass.Max ' If Left(aClass[iInd]) = "?" Then aClass[iInd] = Mid$(aClass[iInd], 2) ' Next ' Endif ' lstExport.List = aClass $bInitInfo = True End Public Sub Form_Arrange() btnReset.Move(btnReset.Parent.W - btnReset.W - Desktop.Scale, Desktop.Scale) End Public Sub btnAddRequire_Click() Dim sComp As String sComp = FSelectComponent.Run($aRequire.Copy().Insert($aExclude)) If Not sComp Then Return AddRequireExclude(sComp, $aRequire) End Public Sub btnAddExclude_Click() Dim sComp As String sComp = FSelectComponent.Run($aExclude.Copy().Insert($aRequire)) If Not sComp Then Return AddRequireExclude(sComp, $aExclude) End Public Sub panGeneral_Arrange() txtAuthor.H = panGeneral.H - txtAuthor.Y - Desktop.Scale End Public Sub txtVendor_KeyPress() Project.OnVendorKeyPress End Public Sub gvwLibrary_Select() If $iCurrentLibrary >= 0 And If $iCurrentLibrary < gvwLibrary.Rows.Count Then gvwLibrary[$iCurrentLibrary, 0].RichText = CLibraryInfo[$aLibraries[$iCurrentLibrary]].GetDescription(False) gvwLibrary.Rows[$iCurrentLibrary].H = -1 Endif $iCurrentLibrary = gvwLibrary.Row If $iCurrentLibrary >= 0 Then gvwLibrary[$iCurrentLibrary, 0].RichText = CLibraryInfo[$aLibraries[$iCurrentLibrary]].GetDescription(True) gvwLibrary.Rows[$iCurrentLibrary].H = -1 Endif btnRemoveLib.Enabled = $iCurrentLibrary >= 0 btnMoveDownLib.Enabled = btnRemoveLib.Enabled btnMoveUpLib.Enabled = btnRemoveLib.Enabled End ' Public Sub btnNewArgument_Click() ' ' Dim aArg As String[] ' ' tbvArgument.Save ' ' aArg = New String[] ' $aArg.Add(aArg) ' ' tbvArgument.Rows.Count = $aArg.Count ' ' tbvArgument.Row = $aArg.Max ' tbvArgument.Edit ' ' End ' ' Public Sub tbvArgument_Click() ' ' btnMoveDownArg.Enabled = tbvArgument.Row >= 0 And tbvArgument.Row < $aArg.Max ' btnMoveUpArg.Enabled = tbvArgument.Row > 0 ' tbvArgument.EditWith(txtArgument) ' $hComp = New FileCompletion(txtArgument) ' ' End ' ' Public Sub tbvArgument_Save(Row As Integer, (Column) As Integer, Value As String) ' ' $aArg[Row] = ArgumentFromString(Value) ' tbvArgument.Rows[Row].Height = -1 ' ' End ' ' Public Sub tbvArgument_Hide() ' ' btnMoveDownArg.Enabled = False ' btnMoveUpArg.Enabled = False ' ' End ' ' Public Sub btnMoveUpArg_Click() ' ' tbvArgument.Save ' Swap $aArg[tbvArgument.Row], $aArg[tbvArgument.Row - 1] ' tbvArgument.Refresh ' UpdateArguments ' Dec tbvArgument.Row ' tbvArgument_Click ' ' End ' ' Public Sub btnMoveDownArg_Click() ' ' tbvArgument.Save ' Swap $aArg[tbvArgument.Row], $aArg[tbvArgument.Row + 1] ' tbvArgument.Refresh ' UpdateArguments ' Inc tbvArgument.Row ' tbvArgument_Click ' ' End ' ' Public Sub tbvArgument_Insert() ' ' btnNewArgument_Click ' ' End Public Sub btnShowDeprecated_Click() choComponent.ShowDeprecated = btnShowDeprecated.Value End Private Sub UpdateVcInfo() Dim cInfo As Collection Dim sValue As String Dim iRow As Integer Dim I As Integer If Not VersionControl.Enabled Then Return If gvwVcInfo.Rows.Count Then Return Inc Application.Busy cInfo = VersionControl.Info() gvwVcInfo.Columns.Count = 2 gvwVcInfo.Rows.Count = cInfo.Count For Each sValue In cInfo gvwVcInfo[iRow, 0].Text = cInfo.Key gvwVcInfo[iRow, 0].Alignment = Align.TopNormal 'gvwVcInfo[iRow, 0].Foreground = Color.Merge(Color.TextBackground, Color.TextForeground, 0.7) gvwVcInfo[iRow, 1].Text = sValue Inc iRow Next gvwVcInfo.Columns[0].W = -1 gvwVcInfo.Columns[0].W += Desktop.Scale * 2 For I = 0 To gvwVcInfo.Rows.Count - 1 gvwVcInfo.Rows[I].H = -1 Next Finally Dec Application.Busy End Private Sub UpdateEnv() tvwEnv.Rows.Count = $aEnv.Count tvwEnv.Columns[0].Width = Desktop.Scale * 4 tvwEnv.Columns[0].Resizable = False tvwEnv.Columns[1].Width = -1 tvwEnv.Refresh End Public Sub lstReferences_Add() Dim sPath As String Dialog.Title = ("Select a Gambas executable") Dialog.Filter = ["*.gambas", ("Gambas executable")] Dialog.Path = Project.Config["FProjectProperty/LastExtraReference"] If Dialog.OpenFile() Then Return sPath = Dialog.Path Project.Config["FProjectProperty/LastExtraReference"] = sPath sPath = Project.MakeRelativeLink(sPath, Project.Dir &/ File.Name(sPath)) If lstReferences.List.Exist(sPath) Then Return lstReferences.Add(sPath) End Public Sub btnMoveUpEnv_Click() Dim iRow As Integer iRow = tvwEnv.Row If iRow < 1 Then Return tvwEnv.Save() Swap $aEnv[iRow], $aEnv[iRow - 1] tvwEnv.Refresh tvwEnv.MoveTo(iRow - 1, tvwEnv.Column) End Public Sub btnMoveDownEnv_Click() Dim iRow As Integer iRow = tvwEnv.Row If iRow < 0 Or If iRow >= $aEnv.Max Then Return tvwEnv.Save() Swap $aEnv[iRow], $aEnv[iRow + 1] tvwEnv.Refresh tvwEnv.MoveTo(iRow + 1, tvwEnv.Column) End Public Sub tvwEnv_Select() btnRemoveEnv.Enabled = tvwEnv.Row >= 0 btnMoveDownEnv.Enabled = btnRemoveEnv.Enabled btnMoveUpEnv.Enabled = btnRemoveEnv.Enabled End Public Sub tvwEnv_Hide() UpdateEnv End gambas-3.16.3/app/src/gambas3/.src/Project/FProjectProperty.form000066400000000000000000000446411411575327000243610ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,112,73) Text = ("Project properties") Icon = Picture["icon:/small/properties"] Persistent = True Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { mnuInsertEnv Menu { Menu23 Menu Text = ("GUI component") { Menu17 Menu mnuInsertEnv Name = "Menu17" #Translate = False Text = "GB_GUI=gb.qt4" Tag = "GB_GUI=gb.qt4" } { Menu1 Menu mnuInsertEnv Name = "Menu1" #Translate = False Text = "GB_GUI=gb.qt5" Tag = "GB_GUI=gb.qt5" } { Menu2 Menu mnuInsertEnv Name = "Menu2" #Translate = False Text = "GB_GUI=gb.gtk" Tag = "GB_GUI=gb.gtk" } { Menu9 Menu mnuInsertEnv Name = "Menu9" #Translate = False Text = "GB_GUI=gb.gtk3" Tag = "GB_GUI=gb.gtk3" } { Menu20 Menu } { Menu18 Menu mnuInsertEnv Name = "Menu18" #Translate = False Text = "GB_GUI_BUSY=1" Tag = "GB_GUI_BUSY=1" } { Menu10 Menu mnuInsertEnv Name = "Menu10" #Translate = False Text = "GB_GUI_DARK_THEME=1" Tag = "GB_GUI_DARK_THEME=1" } { Menu19 Menu mnuInsertEnv Name = "Menu19" #Translate = False Text = "GB_X11_INIT_THREADS=1" Tag = "GB_X11_INIT_THREADS=1" } { Menu3 Menu mnuInsertEnv Name = "Menu3" #Translate = False Text = "GB_STOCK_DEBUG=1" Tag = "GB_STOCK_DEBUG=1" } { Menu11 Menu } { Menu12 Menu mnuInsertEnv Name = "Menu12" #Translate = False Text = "LIBOVERLAY_SCROLLBAR=0" Tag = "LIBOVERLAY_SCROLLBAR=0" } { Menu22 Menu mnuInsertEnv Name = "Menu22" #Translate = False Text = "GTK_DEBUG=interactive" Tag = "GTK_DEBUG=interactive" } } { Menu13 Menu Text = ("Translation") { Menu5 Menu mnuInsertEnv Name = "Menu5" #Translate = False Text = "LANGUAGE=C ; LANG=C ; LC_ALL=C" Tag = "LANGUAGE=C,LANG=C,LC_ALL=C" } { Menu8 Menu mnuInsertEnv Name = "Menu8" #Translate = False Text = "GB_REVERSE=1" Tag = "GB_REVERSE=1" } } { Menu15 Menu Text = ("JIT compiler") { Menu21 Menu mnuInsertEnv Name = "Menu21" #Translate = False Text = "GB_NO_JIT=1" Tag = "GB_NO_JIT=1" } { Menu4 Menu mnuInsertEnv Name = "Menu4" #Translate = False Text = "GB_JIT_DEBUG=1" Tag = "GB_JIT_DEBUG=1" } } { Menu14 Menu Text = ("Embedded HTTP server") { Menu7 Menu mnuInsertEnv Name = "Menu7" #Translate = False Text = "GB_HTTPD_DEBUG=1" Tag = "GB_HTTPD_DEBUG=1" } { Menu6 Menu mnuInsertEnv Name = "Menu6" #Translate = False Text = "GB_HTTPD_PORT=8080" Tag = "GB_HTTPD_PORT=8080" } } { Menu24 Menu Text = ("Database") { Menu16 Menu mnuInsertEnv Name = "Menu16" #Translate = False Text = "GB_DB_DEBUG=1" Tag = "GB_DB_DEBUG=1" } } } { ipnProject IconPanel MoveScaled(1,1,110,66) Expand = True Arrangement = Arrange.Vertical Spacing = True Count = 7 Border = True Index = 0 Text = ("General") Picture = Picture["icon:/large/gambas"] { Panel4 VBox MoveScaled(0,0,88,65) Expand = True Spacing = True { Panel1 HBox MoveScaled(0,0,84,9) Spacing = True { VBox1 HPanel MoveScaled(0,0,72,9) Expand = True Spacing = True { Label28 Label MoveScaled(0,0,16,4) Font = Font["Bold"] Text = ("Name") } { lblName Label MoveScaled(18,0,24,4) Font = Font["+4,Bold"] Expand = True } { Label29 Label MoveScaled(0,5,16,4) Font = Font["Bold"] Text = ("Location") } { txtPath TextBox MoveScaled(18,5,27,4) Expand = True ReadOnly = True } } { btnIcon ToolButton MoveScaled(73,0,9,9) Border = True } } { panGeneral HPanel MoveScaled(0,10,87,54) Expand = True Spacing = True { Label16 Label MoveScaled(0,0,16,4) Font = Font["Bold"] Text = ("Type") } { Panel7 Panel MoveScaled(18,0,61,4) { cmbType ComboBox MoveScaled(0,0,32,4) Expand = True ReadOnly = True List = [("Normal"), ("Library"), ("Component")] } } { Label18 Label MoveScaled(0,5,16,4) Font = Font["Bold"] Text = ("Vendor") } { txtVendor MaskBox MoveScaled(18,5,44,4) Expand = True Filter = "[A-Za-z0-9_-]" } { Label10 Label MoveScaled(0,10,16,4) Font = Font["Bold"] Text = ("Version") } { HBox1 HBox MoveScaled(18,10,69,4) Expand = True Spacing = True { txtMajor SpinBox MoveScaled(0,0,9,4) MaxValue = 9999 } { txtMinor SpinBox MoveScaled(10,0,9,4) MaxValue = 9999 } { txtRelease SpinBox MoveScaled(20,0,12,4) MaxValue = 999999 } { chkGetVersionFromFile CheckBox MoveScaled(33,0,35,4) Expand = True Text = ("Get from 'VERSION' file") } } { Label12 Label MoveScaled(0,15,16,4) Font = Font["Bold"] Text = ("Title") } { txtTitle TextBox MoveScaled(18,15,60,4) Expand = True } { Label3 Label MoveScaled(0,19,16,4) Font = Font["Bold"] Text = ("Description") } { txtDesc TextArea MoveScaled(18,20,60,16) Expand = True Wrap = True } { Label11 Label MoveScaled(0,37,16,4) Font = Font["Bold"] Text = ("Authors") } { txtAuthor TextArea MoveScaled(18,37,57,16) Expand = True Wrap = True } } } Index = 1 Text = ("Information") Picture = Picture["icon:/large/info"] { Panel5 VBox MoveScaled(2,1,82,65) Expand = True Spacing = True { lblInfo Label MoveScaled(0,0,79,3) Font = Font["Bold"] Text = ("Information") } { HBox15 HBox MoveScaled(0,4,78,4) Spacing = True Indent = True { Label26 Label MoveScaled(0,0,33,4) Text = ("Progress") } { cmbComponentState ComboBox MoveScaled(34,0,32,4) ReadOnly = True List = [("Finished and stable"), ("Not finished but stable"), ("Experimental"), ("Deprecated")] } } { HBox16 HBox MoveScaled(0,9,71,4) Spacing = True Indent = True { Label25 Label MoveScaled(0,0,33,4) Text = ("This component is hidden") } { btnHidden SwitchButton MoveScaled(34,0,8,4) Animated = True } } { panCompatible HBox MoveScaled(0,14,71,4) Spacing = True Indent = True { chkCompat CheckBox MoveScaled(0,0,33,4) Text = ("Compatible until version") } { txtCompMajor SpinBox MoveScaled(34,0,9,4) Enabled = False MaxValue = 9999 } { txtCompMinor SpinBox MoveScaled(44,0,9,4) Enabled = False MaxValue = 9999 } { txtCompRelease SpinBox MoveScaled(54,0,12,4) Enabled = False MaxValue = 999999 } } { HBox14 HBox MoveScaled(0,19,71,4) Spacing = True Indent = True { Label13 Label MoveScaled(0,0,33,4) Text = ("Include information from") } { txtIncludeInfo TextBox MoveScaled(34,0,19,4) Expand = True } } { Label15 Label MoveScaled(0,24,79,3) Font = Font["Bold"] Text = ("Required features") } { HBox7 HBox MoveScaled(0,28,75,12) Indent = True { panNeed Panel MoveScaled(1,0,37,12) Expand = True Arrangement = Arrange.Vertical { CheckBox5 CheckBox MoveScaled(0,0,36,4) Tag = "Form" Text = ("Graphical form management") } { CheckBox6 CheckBox MoveScaled(0,4,36,4) Tag = "EventLoop" Text = ("Event loop management") } { CheckBox7 CheckBox MoveScaled(0,8,36,4) Tag = "ImageIO" Text = ("Image loading and saving") } } { panNeed2 VBox MoveScaled(39,0,30,12) Expand = True { CheckBox8 CheckBox MoveScaled(0,0,29,4) Tag = "OpenGLViewer" Text = ("OpenGL display") } { CheckBox1 CheckBox MoveScaled(0,4,29,4) Tag = "XML" Text = ("XML management") } } } { Panel12 HBox MoveScaled(0,41,80,3) { Label14 Label MoveScaled(0,0,35,3) Font = Font["Bold"] Expand = True Text = ("Required and excluded components") } } { HBox10 HBox MoveScaled(0,45,81,18) Expand = True Spacing = True { lvwRequire ListView MoveScaled(1,1,47,16) Expand = True Sorted = True } { VBox5 VBox MoveScaled(59,1,20,17) Spacing = True { btnAddRequire Button MoveScaled(0,0,16,4) Text = ("Require") & "..." Picture = Picture["icon:/small/ok"] } { btnAddExclude Button MoveScaled(0,4,16,4) Text = ("Exclude") & "..." Picture = Picture["icon:/small/close"] } { btnRemove Button MoveScaled(0,8,17,4) Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/remove"] } { btnRemoveAll Button MoveScaled(0,12,17,4) Text = ("Remove All") Picture = Picture["icon:/small/trash"] } } } } Index = 2 Text = ("Components") Picture = Picture["icon:/large/component"] { choComponent ComponentChooser MoveScaled(6,9,67,37) Expand = True } Index = 3 Text = ("Libraries") Picture = Picture["icon:/large/plugin"] { Panel13 VBox MoveScaled(1,1,85.75,63.875) Expand = True Spacing = True { Label9 Label MoveScaled(0,0,26,3) Font = Font["Bold"] Text = ("Libraries") } { Label17 Label MoveScaled(1,4,60,4) Visible = False AutoResize = True Text = ("Runtime library search path") } { txtLibraryPath TextBox MoveScaled(1,8,24,4) Visible = False } { Panel2 Panel MoveScaled(0,14,84.875,20.875) Expand = True Arrangement = Arrange.Vertical Border = Border.Plain { gvwLibrary GridView MoveScaled(1,0,59,14) Expand = True Border = False Mode = Select.Single Grid = False } { Separator1 Separator MoveScaled(56,14,12,0) } { HBox18 HBox MoveScaled(0,16,84,4) Background = Color.TextBackground { btnInsertLib ToolButton MoveScaled(0,0,17,4) AutoResize = True Text = Shortcut(("Add"), "A") & "..." Picture = Picture["icon:/small/add"] } { btnRemoveLib ToolButton MoveScaled(18,0,17,4) Enabled = False AutoResize = True Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/remove"] } { btnMoveUpLib ToolButton MoveScaled(36,0,4,4) Enabled = False Picture = Picture["icon:/small/up"] } { btnMoveDownLib ToolButton MoveScaled(43,0,4,4) Enabled = False Picture = Picture["icon:/small/down"] } } } { Label6 Label MoveScaled(0,39,29,3) Font = Font["Bold"] Text = ("Additional references") } { lstReferences ListEditor MoveScaled(2,43,74,20) Expand = True ReadOnly = True Unique = True } } Index = 4 Text = ("Environment") Picture = Picture["icon:/large/attach"] { Panel3 Panel MoveScaled(9,9,69,42) Expand = True Arrangement = Arrange.Vertical Border = Border.Plain { tvwEnv TableView MoveScaled(2,2,65,20) Expand = True Border = False Mode = Select.Single Padding = 4 Header = GridView.Horizontal } { Separator2 Separator MoveScaled(28,24,15,0) } { HBox3 HBox MoveScaled(1,34,64,4) Background = Color.TextBackground { btnInsertEnv MenuButton MoveScaled(0,0,11,4) AutoResize = True Text = ("&Add") Picture = Picture["icon:/small/add"] Border = False Menu = "mnuInsertEnv" } { btnRemoveEnv ToolButton MoveScaled(12,0,12,4) Enabled = False AutoResize = True Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/remove"] } { btnMoveUpEnv ToolButton MoveScaled(24,0,4,4) Enabled = False Picture = Picture["icon:/small/up"] } { btnMoveDownEnv ToolButton MoveScaled(28,0,4,4) Enabled = False Picture = Picture["icon:/small/down"] } } } Index = 5 Text = ("Options") Picture = Picture["icon:/large/options"] { Panel6 VBox MoveScaled(1,2,86,60) Expand = True Spacing = True { Label7 Label MoveScaled(0,0,84,3) Font = Font["Bold"] Alignment = Align.BottomNormal Text = ("Edition") } { HBox13 HBox MoveScaled(1,4,83,4) Spacing = True Indent = True { Label1 Label MoveScaled(0,0,46,4) Text = ("Tab size") } { txtTabSize SpinBox MoveScaled(47,0,8,4) MinValue = 1 MaxValue = 16 Value = 2 } { Label5 Label MoveScaled(59,0,22,4) Text = ("space(s)") } } { HBox4 HBox MoveScaled(1,9,83,4) Spacing = True Indent = True { Label2 Label MoveScaled(0,0,46,4) Text = ("Show deprecated components and controls") } { btnShowDeprecated SwitchButton MoveScaled(47,0,8,4) Animated = True } } { Label8 Label MoveScaled(0,14,84,3) Font = Font["Bold"] Alignment = Align.BottomNormal Text = ("Compilation") } { HBox12 HBox MoveScaled(1,18,83,4) Spacing = True Indent = True { Label21 Label MoveScaled(0,0,46,4) Text = ("Module symbols are public by default") } { btnModulePublic SwitchButton MoveScaled(47,0,8,4) Animated = True } } { HBox11 HBox MoveScaled(1,23,83,4) Spacing = True Indent = True { Label22 Label MoveScaled(0,0,46,4) Text = ("Form controls are public") } { btnControlPublic SwitchButton MoveScaled(47,0,8,4) Animated = True } } { HBox5 HBox MoveScaled(1,28,83,4) Spacing = True Indent = True { Label4 Label MoveScaled(0,0,46,4) Text = ("Activate warnings") } { btnWarning SwitchButton MoveScaled(47,0,8,4) Animated = True } } { Label19 Label MoveScaled(0,33,84,3) Font = Font["Bold"] Alignment = Align.BottomNormal Text = ("Translation") } { HBox9 HBox MoveScaled(1,37,83,4) Spacing = True Indent = True { Label24 Label MoveScaled(0,0,46,4) Text = ("Project is translatable") } { btnTranslate SwitchButton MoveScaled(47,0,8,4) Animated = True } } { HBox8 HBox MoveScaled(1,42,83,4) Spacing = True Indent = True { Label20 Label MoveScaled(0,0,46,4) Text = ("Default language") } { cmbDefaultLanguage ComboBox MoveScaled(47,0,36,4) Expand = True ReadOnly = True Sorted = True } } { Label27 Label MoveScaled(0,47,84,3) Font = Font["Bold"] Alignment = Align.BottomNormal Text = ("Version control") } { HBox6 HBox MoveScaled(1,52,83,4) Spacing = True Indent = True { Label23 Label MoveScaled(0,0,46,4) Text = ("Add branch to version number") } { btnVersionAddBranch SwitchButton MoveScaled(47,0,8,4) Animated = True } } } Index = 6 Text = ("Statistics") Picture = Picture["icon:/large/statistics"] { gvwStat GridView MoveScaled(3,4,62,25) Expand = True Grid = False Padding = 4 } { gvwVcInfo GridView MoveScaled(4,35,62,25) Expand = True Padding = 4 } Index = 0 } { Panel10 HBox MoveScaled(12,68,83,4) Spacing = True { Panel11 Panel MoveScaled(0,1,14,3) Expand = True } { btnReset Button MoveScaled(19,0,17,4) Visible = False Text = Shortcut(("Reset"), "R") Picture = Picture["icon:/small/undo"] } { btnOK Button MoveScaled(37,0,17,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(55,0,18,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/FSaveProjectAs.class000066400000000000000000000034271411575327000240560ustar00rootroot00000000000000' Gambas class file Static Private $sNewPath As String Public Sub Run() $sNewPath = "" If Me.ShowModal() Then Project.Open($sNewPath) Endif End Public Sub btnOK_Click() Dim sDir As String Dim sName As String Dim sMsg As String Dim aLine As String[] Dim iCount As Integer Dim I As Integer sName = Trim(txtName.Text) sDir = dchProject.Value sMsg = Project.CheckProjectName(sName, sDir) If sMsg txtName.SetFocus txtName.SelectAll Balloon.Warning(sMsg, txtName) Return Endif sDir &/= sName If sDir Begins (Project.Dir & "/") Then dchProject.SetFocus Balloon.Warning(("Cannot save a project inside its own directory."), txtName) Return Endif Inc Application.Busy Project.Save Project.CopyProject(Project.Dir, sDir) aLine = Split(File.Load(sDir &/ ".project"), "\n") iCount = aLine.Count I = aLine.Find("ExecPath=*", gb.Like) If I >= 0 Then aLine.Remove(I) I = aLine.Find("SourcePath=*", gb.Like) If I >= 0 Then aLine.Remove(I) If aLine.Count <> iCount Then File.Save(sDir &/ ".project", aLine.Join("\n")) Project.CleanUp(sDir) Dec Application.Busy $sNewPath = sDir Me.Close(True) Catch Application.Busy = 0 Message.Error(("Unable to save the project.") & "\n\n" & Error.Text) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() txtName.Text = Project.Name txtName.SelectAll txtName.SetFocus Settings.Read(Me) Settings.Read(dchProject, "dchProject") dchProject.Bookmarks = Project.GetBookmarks() End Public Sub Form_Close() Settings.Write(Me) Settings.Write(dchProject, "dchProject") End Public Sub txtName_Change() lblFinalDir.Text = dchProject.Value &/ Trim(txtName.Text) End Public Sub dchProject_Change() txtName_Change End gambas-3.16.3/app/src/gambas3/.src/Project/FSaveProjectAs.form000066400000000000000000000025141411575327000237100ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,72) Text = ("Save project as") Icon = Picture["icon:/small/save-as"] Arrangement = Arrange.Vertical Spacing = True Margin = True { Label2 Label MoveScaled(1,1,30,3) Font = Font["Bold"] Text = ("New project parent directory") } { dchProject DirChooser MoveScaled(1,5,64,43) Expand = True } { Label1 Label MoveScaled(1,49,19,3) Font = Font["Bold"] Text = ("New project name") } { txtName TextBox MoveScaled(1,52,41,4) } { Label3 Label MoveScaled(1,57,76,2) Font = Font["Italic,-1"] Text = ("The project name is the name of the project directory.") } { Panel1 HBox MoveScaled(1,60,74,2) Spacing = True { Label16 Label MoveScaled(0,0,23,2) Font = Font["Italic,-1"] AutoResize = True Text = ("The project final directory is :") } { lblFinalDir Label MoveScaled(24,0,39,2) Font = Font["Bold,-1"] Expand = True } } { Panel2 Panel MoveScaled(23,63,10,1) } { HBox1 HBox MoveScaled(1,65,66,4) Spacing = True Invert = True { btnCancel Button MoveScaled(48,0,16,4) Text = ("Cancel") Cancel = True } { btnOK Button MoveScaled(31,0,16,4) Text = Shortcut(("Save"), "S") Default = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/000077500000000000000000000000001411575327000210675ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/Farm/CSoftware.class000066400000000000000000000363651411575327000240300ustar00rootroot00000000000000' Gambas class file Event Change Event Screenshot Static Public InstallAge As Integer = 1 Public Enum STATE_WAIT = 0, STATE_INFO = 1, STATE_ICON = 2, STATE_READY = 3, STATE_ERROR = 4 Static Property Read IconSize As Integer Property Read Farm As String Public State As Integer Public Id As Integer Public Name As String Public Version As String Public LastVersion As Boolean Public Vendor As String Public UploadDate As Date Public Description As String Public URL As String Public RequiredGambasVersion As String Public Checksum As String Public Owner As String Public DownloadCount As Integer Public FullDownloadCount As Integer Public VoteCount As Integer Public YourVote As Integer Public Icon As Image Public Background As Image Public Tags As String[] Public Screenshot As Image Public Size As Long Public Observed As Boolean Public ErrorText As String Static Private $cCache As New Collection Private $sVersion As String Private $sFarm As String Private $hRequest As FarmRequest Private $hRequestIcon As FarmRequest Private $hRequestScreenshot As FarmRequest Private $bGotScreenshot As Boolean Private $sInstallVersion As String Private $iInstallVersionAge As Integer Static Public Sub ClearCache(Optional sFarm As String) If Not sFarm Then $cCache.Clear Else $cCache[sFarm] = Null Endif End Static Public Sub Exit() ClearCache FarmIdentity.Exit End Static Public Sub Get(sFarm As String, iId As Integer) As CSoftware Dim hSoft As CSoftware If Not $cCache.Exist(sFarm) Then $cCache[sFarm] = New Collection hSoft = $cCache[sFarm][iId] If Not hSoft Then hSoft = New CSoftware(iId, sFarm) $cCache[sFarm][iId] = hSoft Endif Return hSoft End Public Sub _new(iId As Integer, sFarm As String) ', sLogin As String, sPassword As String) Id = iId $sFarm = sFarm End Public Sub Start() Try $hRequest.Abort $hRequest = New FarmRequest($sFarm) As "Request" $hRequest.GetSoftware(Id) Try $hRequestIcon.Abort $hRequestIcon = New FarmRequest($sFarm) As "IconRequest" $hRequestIcon.GetSoftwareIcon(Id) State = STATE_WAIT End Public Sub Abort() Try $hRequest.Abort Try $hRequestIcon.Abort End Public Sub Request_Finished() Dim hReq As FarmRequest = Last Dim cResult As Collection If hReq.HasFailed() Then ErrorText = hReq.ErrorText State = STATE_ERROR $hRequestIcon.Abort Raise Change Return Endif cResult = hReq.Result Name = UnQuote(cResult["Name"]) $sVersion = cResult["Version"] Version = $sVersion & "." & cResult["Release"] LastVersion = CInt(cResult["LastVersion"]) Vendor = UnQuote$(cResult["Vendor"]) UploadDate = FarmRequest.GetDate(cResult["UploadDate"]) Description = UnQuote(cResult["Description"]) URL = Trim(UnQuote$(cResult["URL"])) RequiredGambasVersion = cResult["RequiredGambasVersion"] Checksum = UnQuote(cResult["Checksum"]) Try DownloadCount = CInt(cResult["DownloadCount"]) Try FullDownloadCount = CInt(cResult["FullDownloadCount"]) Try VoteCount = CInt(cResult["VoteCount"]) Owner = UnQuote(cResult["Owner"]) If cResult.Exist("YourVote") Then YourVote = cResult["YourVote"] Else YourVote = -1 Endif Tags = Split(cResult["Tags"]).Sort() Try Size = CLong(cResult["Size"]) State = State Or STATE_INFO Raise Change End Public Sub IconRequest_Finished() Dim hReq As FarmRequest = Last If hReq.HasFailed() Then ErrorText = hReq.ErrorText State = STATE_ERROR $hRequest.Abort Raise Change Return Endif Try Icon = Image.Load(hReq.ResultFile).Stretch(-1, CSoftware.IconSize) State = State Or STATE_ICON Raise Change End Public Sub IsFinished() As Boolean Return State = STATE_READY Or State = STATE_ERROR End Public Sub GetInstalledDir() As String Return Desktop.DataDir &/ "gambas3/src" &/ LCase(Vendor) &/ Name End Public Sub GetInstallVersion() As String Dim sPath As String Dim sLine As String If Not IsFinished() Then Return If $iInstallVersionAge >= InstallAge Then Return $sInstallVersion $sInstallVersion = "" sPath = GetInstalledDir() &/ ".project" If Exist(sPath) Then For Each sLine In Split(File.Load(sPath), "\n") If sLine Begins "Version=" Then $sInstallVersion = Trim(Mid$(sLine, 9)) Break Endif Next Endif $iInstallVersionAge = InstallAge Return $sInstallVersion End ' ' Private Sub MakeBackground() ' ' Dim X, Y As Integer ' Dim iCol As Integer ' Dim I As Integer ' ' Background = New Image(128, 128, Color.White) ' ' Randomize Val("&H" & Right(Checksum, 8)) ' ' Paint.Begin(Background) ' ' For I = 1 To 64 ' ' X = Rand(0, Background.W - 1) ' Y = Rand(0, Background.H - 1) ' ' iCol = Icon[Rand(Icon.W - 1), Rand(Icon.H - 1)] ' If Color[iCol].Alpha >= 128 Then iCol = Color.White ' iCol = Color.SetAlpha(iCol, 192) ' ' Paint.Ellipse(X, Y, 64, 64) ' Paint.Ellipse(X - Background.W, Y, 64, 64) ' Paint.Ellipse(X, Y - Background.H, 64, 64) ' Paint.Ellipse(X - Background.W, Y - Background.H, 64, 64) ' Paint.Background = iCol ' Paint.Fill ' ' Next ' ' Paint.End ' ' Background = Background.Opacity(0.3) ' ' End Public Sub GetTitle() As String Return Name & " " & Version End Public Sub IsInstalled() As Boolean Return GetInstallVersion() End Public Sub IsReallyInstalled() As Boolean Dim sVersion As String sVersion = GetInstallVersion() If Not sVersion Then Return Return Comp(Version, sVersion, gb.Natural) = 0 End Public Sub CanUpgrade() As Boolean Dim sVersion As String sVersion = GetInstallVersion() If Not sVersion Then Return Return Comp(Version, sVersion, gb.Natural) > 0 End Public Sub Install(Optional bJustDownload As Boolean) As String Dim hReq As FarmRequest Dim sDir As String Dim sPath As String Dim sExec As String Dim sOption As String Dim sName As String Dim aMissing As String[] Dim sResult As String Dim sSrcDir As String Dim sExecDir As String Dim sErr As String Dim hDesktopFile As DesktopFile Dim hProjectInfo As CProjectInfo Dim sComp As String Dim sTag As String Dim aCat As String[] Dim aExistCat As String[] ' Create directories sDir = Desktop.DataDir &/ "gambas3" sSrcDir = sDir &/ "src" &/ LCase(Vendor) Project.MakeDir(sSrcDir) sExecDir = Desktop.DataDir &/ "gambas3/bin" &/ LCase(Vendor) Project.MakeDir(sExecDir) ' Download source archive hReq = New FarmRequest($sFarm) hReq.DownloadSoftware(Id) If hReq.WaitFor() Then If Not hReq.ErrorText Then Return ("Download cancelled") Else Return hReq.ErrorText Endif Endif ' Check the checksum If FarmRequest.GetCheckSum(hReq.ResultFile) <> Checksum Then Error.Raise(("The checksum of the downloaded package is invalid.")) Endif sPath = hReq.ResultFile ' Uncompress the archive If sPath Ends ".tar.gz" Then sOption = "z" Else If sPath Ends ".tar.bz2" Then sOption = "j" Else Error.Raise("Unknown archive format") Endif Shell "cd " & Shell(File.Dir(sPath)) & " && tar x" & sOption & "f " & Shell(sPath) Wait If Process.LastValue Then Error.Raise(("Unable to uncompress source archive.")) ' Analyze the project file aMissing = New String[] sName = Name sDir = File.SetName(sPath, sName) hProjectInfo = New CProjectInfo(sDir) ' Check the components For Each sComp In hProjectInfo.Components If Not Exist(Component.Path &/ sComp & ".component") Then aMissing.Add(sComp) Endif Next If aMissing.Count Then If Message.Warning(("The following components are required:") & "\n\n" & aMissing.Join(", "), ("Abort"), ("Ignore")) = 1 Then sErr = "*" Goto LEAVE_INSTALL Endif Endif ' TODO: Check the libraries If bJustDownload Then GoSub INSTALL_SOURCE Else ' Compile the project ' TODO: Use translatable error messages? sExec = System.Path &/ "bin/gbc" & System.Version & " -a -g -x " If hProjectInfo.Translate Then sExec &= "-t " If hProjectInfo.ControlPublic Then sExec &= "-p " If hProjectInfo.ModulePublic Then sExec &= "-m " sExec &= "-j" & CStr(Settings["/CompilerJobs", 1]) & " " sExec &= Shell$(sDir) sExec &= " 2>&1" Shell sExec To sResult If Process.LastValue Then Error.Raise(("Unable to compile the project.") & "\n\n" & sResult) Endif ' Make executable sExec = System.Path &/ "bin/gba" & System.Version & " -o " & Shell$(sDir &/ sName & ".gambas") & " " & Shell$(sDir) & " 2>&1" Shell sExec To sResult If Process.LastValue Then Error.Raise(("Unable to make executable.") & "\n\n" & Trim(sResult)) ' Install executable Try Kill sExecDir &/ sName & ".gambas" Copy sDir &/ sName & ".gambas" To sExecDir &/ sName & ".gambas" Chmod sExecDir &/ sName & ".gambas" To "..x..x..x" Try Kill sDir &/ sName & ".gambas" GoSub INSTALL_SOURCE ' Make a desktop file unless the project is a library or a component If hProjectInfo.Type = Project.TYPE_NORMAL Then aExistCat = Split(File.Load("install/categories"), "\n", "", True) aCat = New String[] For Each sTag In Tags If aExistCat.Exist(sTag, gb.IgnoreCase) Then aCat.Add(sTag) Endif Next Try Kill Desktop.DataDir &/ "applications" &/ "gambas-" & LCase(Vendor) & "-" & sName & ".desktop" If hProjectInfo.CreateMenu Then hDesktopFile = New DesktopFile(Desktop.DataDir &/ "applications" &/ "gambas-" & LCase(Vendor) & "-" & sName & ".desktop") With hDesktopFile .Name = hProjectInfo.GetTitle() .Exec = sExecDir &/ sName & ".gambas" If hProjectInfo.Icon Then .Icon = sSrcDir &/ sName &/ hProjectInfo.Icon .Categories = aCat End With hDesktopFile.Save Endif If Tags.Exist("ide extension", gb.IgnoreCase) Then Try Mkdir File.SetName(sExecDir, ".extensions") Link ".." &/ File.Name(sExecDir) &/ sName & ".gambas" To File.SetName(sExecDir, ".extensions") &/ sName Endif Else If hProjectInfo.Type = Project.TYPE_LIBRARY Then sErr = Project.InstallLibrary(sExecDir &/ sName & ".gambas", Vendor, $sVersion) If sErr Then Error.Raise(sErr) Endif Endif If LCase(Vendor) <> "example" And If Tags.Exist("example", gb.IgnoreCase) Then Try Mkdir File.SetName(sSrcDir, "example") Try Kill File.SetName(sSrcDir, "example") &/ sName Link ".." &/ File.Name(sSrcDir) &/ sName To File.SetName(sSrcDir, "example") &/ sName Endif Inc InstallAge Start Return INSTALL_SOURCE: ' Make a backup of the possible old version Exec ["rm", "-rf", sSrcDir &/ sName & "~"] Wait Try Move sSrcDir &/ sName To sSrcDir &/ sName & "~" ' Move the source directory to its final location Exec ["mv", sDir, sSrcDir &/ sName] Wait If Not IsDir(sSrcDir &/ sName) Then Error.Raise(("Unable to install source directory")) ' Remove the possible old version Exec ["rm", "-rf", sSrcDir &/ sName & "~"] Wait Return Catch sErr = Error.Text & "\n\n" & Error.Backtrace.Join(" ") LEAVE_INSTALL: ' Try to remove the partial installation Try Move sSrcDir &/ sName & "~" To sSrcDir &/ sName Try Kill sExecDir &/ sName & ".gambas" Return sErr End Static Public Sub UninstallFromPath(sDir As String) As String Dim sVendor As String Dim sName As String Dim sExecDir As String Inc Application.Busy sName = File.Name(sDir) sVendor = File.Name(File.Dir(sDir)) Exec ["rm", "-rf", sDir] Wait sExecDir = Desktop.DataDir &/ "gambas3/bin" Try Kill sExecDir &/ LCase(sVendor) &/ sName & ".gambas" Try Rmdir sExecDir &/ LCase(sVendor) Try Kill Desktop.DataDir &/ "applications" &/ "gambas-" & LCase(sVendor) & "-" & sName & ".desktop" If LCase(sVendor) <> "example" Then Try Kill File.SetName(File.Dir(sDir), "example") &/ sName Endif Try Kill File.SetName(sExecDir, ".extensions") &/ sName Dec Application.Busy Catch Dec Application.Busy Return Error.Text End Public Sub Uninstall() As String Dim sDir As String Dim sErr As String If Not Me.IsInstalled() Then Return sDir = GetInstalledDir() sErr = UninstallFromPath(sDir) If sErr Then Return sErr Inc InstallAge Start End Public Sub DownloadScreenshot() As Boolean If $bGotScreenshot Then Return True $hRequestScreenshot = New FarmRequest($sFarm) As "ScreenshotRequest" $hRequestScreenshot.DownloadScreenshot(Id) End Public Sub ScreenshotRequest_Finished() Dim hReq As FarmRequest = Last If Not hReq.HasFailed() Then $bGotScreenshot = True Try Screenshot = Image.Load(hReq.ResultFile) Endif Raise Screenshot End Public Sub MustReload() $cCache[$sFarm][Id] = Null $hRequest.Abort $hRequestIcon.Abort $hRequestScreenshot.Abort End Public Sub ToggleVote() As String Dim hReq As FarmRequest hReq = New FarmRequest($sFarm) hReq.VoteForSoftware(Id, If(YourVote = 1, 0, 1)) If hReq.WaitFor(,, True) Then Return hReq.ErrorText Endif Start Catch Return Error.Text End Private Function Farm_Read() As String Return $sFarm End Public Sub Delete() As String Dim hReq As FarmRequest hReq = New FarmRequest($sFarm) hReq.DeleteSoftware(Id) If hReq.WaitFor(,, True) Then Return hReq.ErrorText Endif MustReload Catch Return Error.Text End Public Sub PaintName(X As Float, Y As Float, Width As Float) As Integer Dim iCol As Integer Dim sText As String Dim XO As Float Dim W As Integer Dim H As Integer Dim iGrade As Integer If Not Name Then Return iGrade = Paint.Font.Grade H = Paint.Font.Height Paint.Save iCol = Color.TextForeground Paint.Background = iCol XO = X sText = Version Paint.Font.Grade = iGrade W = Paint.Font.TextWidth(sText) sText = Paint.TrimText(Name, Width - W - Desktop.Scale) Paint.Font.Grade = iGrade W = Paint.Font.TextWidth(sText) Paint.DrawTextShadow(sText, X, Y, W, H, Align.TopLeft) Paint.DrawText(sText, X, Y, W, H, Align.TopLeft) sText = Version Paint.Font.Grade = iGrade Paint.DrawText(sText, X + W + Desktop.Scale, Y, W, H, Align.TopLeft) X = XO Y += H + Desktop.Scale \ 4 Paint.Font.Italic = True Paint.Font.Grade = iGrade - 1 Paint.Background = Color.Merge(iCol, Color.TextBackground) Paint.DrawText(Vendor, X, Y, Paint.W, Paint.H, Align.TopLeft) Y += Paint.Font.H Paint.Restore Return Y End Static Private Function IconSize_Read() As Integer Return Desktop.Scale * 6 End Public Sub GetUploadAge() As String Dim iDiff As Integer iDiff = DateDiff(UploadDate, Now, gb.Day) If iDiff = 1 Then Return ("yesterday") Else If iDiff < 7 Then Return Subst(("&1 days ago"), CStr(iDiff)) Endif iDiff = (iDiff + 6) \ 7 If iDiff = 1 Then Return ("last week") Else If iDiff <= 4 Then Return Subst(("&1 weeks ago"), CStr(iDiff)) Endif iDiff = DateDiff(UploadDate, Now, gb.Month) If iDiff = 1 Then Return ("last month") Else If iDiff < 12 Then Return Subst(("&1 months ago"), iDiff) Endif iDiff = DateDiff(UploadDate, Now, gb.Year) If iDiff = 1 Then Return ("last year") Else Return Subst(("on &1"), CStr(Year(UploadDate))) Endif End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/CSoftwareGroup.class000066400000000000000000000007311411575327000250310ustar00rootroot00000000000000' Gambas class file Public (Key) As String Public Name As String Public Icon As String Public Sub _compare(hOther As CSoftwareGroup) As Integer Return String.Comp(Name, hOther.Name, gb.IgnoreCase) End Static Public Sub _call(sKey As String, sName As String, sIcon As String) As CSoftwareGroup Dim hGroup As CSoftwareGroup hGroup = New CSoftwareGroup With hGroup .Key = sKey .Name = sName .Icon = sIcon End With Return hGroup End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmConfig.class000066400000000000000000000005101411575327000242330ustar00rootroot00000000000000' Gambas class file Public Sub Run() As Boolean Return Not Me.ShowModal() End Public Sub Form_Open() lstFarm.List = FarmRequest.GetFarms() End Public Sub lstFarm_Change() FarmIdentity.FarmList = lstFarm.List End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() Me.Close(True) End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmConfig.form000066400000000000000000000010271411575327000240750ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,57,23) Text = ("Farm servers") Arrangement = Arrange.Vertical Spacing = True Margin = True { lstFarm ListEditor MoveScaled(1,1,54,16) Expand = True } { HBox1 HBox MoveScaled(1,18,54,4) Spacing = True { Panel1 Panel MoveScaled(4,0,13,4) Expand = True } { btnOK Button MoveScaled(20,0,16,4) Text = ("OK") } { btnCancel Button MoveScaled(37,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmLogin.class000066400000000000000000000034461411575327000241110ustar00rootroot00000000000000' Gambas class file Static Private $sFarm As String Static Private $hIdentity As FarmIdentity Static Property Read Identity As FarmIdentity Static Private Function Identity_Read() As FarmIdentity Return $hIdentity End Public Sub Run(sFarm As String) As Boolean $sFarm = sFarm Return Not Me.ShowModal() End Public Sub btnOK_Click() Dim hReq As FarmRequest If Trim(txtLogin.Text) Then hReq = New FarmRequest(cmbFarm.Text) hReq.CheckAuth(Trim(txtLogin.Text), txtPassword.Text) If hReq.WaitFor("", "", True) Then Message.Error(("Authentication failed.")) txtPassword.Clear txtPassword.SetFocus Stop Event Return Endif Endif $hIdentity.Password = txtPassword.Text 'Settings["/Farm"] = cmbFarm.Text FarmIdentity.SaveSettings Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Private Sub InitFarms() cmbFarm.List = FarmRequest.GetFarms() cmbFarm.Text = FarmIdentity.LastFarm If Not cmbFarm.Text Then cmbFarm.Text = FarmIdentity.DEFAULT_FARM End Public Sub Form_Open() InitFarms chkRememberPassword.Value = FarmIdentity.RememberPassword End Public Sub cmbFarm_Click() $hIdentity = FarmIdentity.Get(cmbFarm.Text) txtLogin.Text = $hIdentity.Login txtPassword.Text = $hIdentity.Password End Public Sub txtLogin_Change() $hIdentity.Login = Trim(txtLogin.Text) End Public Sub txtLogin_Activate() txtPassword.SetFocus End Public Sub txtPassword_Activate() btnOK.Value = True End Public Sub btnFarmConfig_Click() If FFarmConfig.Run() Then Return InitFarms End Public Sub btnAnoymous_Click() txtLogin.Clear txtPassword.Clear btnOK.Value = True End Public Sub chkRememberPassword_Click() FarmIdentity.RememberPassword = CBool(chkRememberPassword.Value) FarmIdentity.SaveSettings End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmLogin.form000066400000000000000000000032411411575327000237400ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,28) Text = ("Login") Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox2 HBox MoveScaled(1,1,58,4) Spacing = True { Label5 Label MoveScaled(0,0,23,4) Text = ("Server") } { cmbFarm ComboBox MoveScaled(33,0,20,4) Expand = True ReadOnly = True } { btnFarmConfig Button MoveScaled(54,0,4,4) Picture = Picture["icon:/small/options"] } } { HBox3 HBox MoveScaled(1,6,58,4) Spacing = True { Label1 Label MoveScaled(0,0,23,4) Text = ("User") } { txtLogin TextBox MoveScaled(33,0,24,4) Expand = True } } { HBox4 HBox MoveScaled(1,11,58,4) Spacing = True { Label2 Label MoveScaled(0,0,23,4) Text = ("Password") } { txtPassword TextBox MoveScaled(33,0,24,4) Expand = True Password = True } } { HBox6 HBox MoveScaled(1,16,58,3) Spacing = True { Label4 Label MoveScaled(0,0,23,3) } { chkRememberPassword CheckBox MoveScaled(33,0,25,3) Expand = True Text = ("Remember password") } } { Panel2 Panel MoveScaled(26,20,7,2) Expand = True } { HBox1 HBox MoveScaled(1,23,62,4) Spacing = True { btnAnoymous Button MoveScaled(1,0,18,4) AutoResize = True Text = ("Be anonymous") } { Panel1 Panel MoveScaled(22,0,6,4) Expand = True } { btnOK Button MoveScaled(29,0,16,4) Text = ("OK") } { btnCancel Button MoveScaled(46,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmRegister.class000066400000000000000000000023221411575327000246150ustar00rootroot00000000000000' Gambas class file Public Sub Run() As Boolean Return Not Me.ShowModal() End Public Sub btnCancel_Click() Me.Close End Public Sub btnRegister_Click() Dim sLogin As String Dim sPassword As String Dim sConfirmPassword As String Dim sEmail As String Dim hReq As FarmRequest sLogin = Trim(txtLogin.Text) sPassword = Trim(txtPassword.Text) sEmail = Trim$(txtMail.Text) If Not sEmail Or If InStr(sEmail, "@") = 0 Then Balloon.Error(("Please enter a valid e-mail address."), txtMail) Return Endif sConfirmPassword = Trim(txtConfirmPassword.Text) If sPassword <> sConfirmPassword Then Balloon.Error(("Confirm password does not match."), txtConfirmPassword) Return Endif hReq = New FarmRequest(cmbFarm.Text) hReq.RegisterUser(sLogin, sPassword, sEmail) If Not hReq.WaitFor(("You have been successfully registered.\n\nYou will receive a confirmation e-mail soon."), ("Unable to register user.")) Then btnCancel_Click Endif End Private Sub InitFarms() cmbFarm.List = FarmRequest.GetFarms() cmbFarm.Text = FarmIdentity.LastFarm End Public Sub Form_Open() InitFarms End Public Sub btnFarmConfig_Click() If FFarmConfig.Run() Then Return InitFarms End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmRegister.form000066400000000000000000000040661411575327000244620ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,45) Text = ("Register") Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox1 HBox MoveScaled(2,2,58,4) Spacing = True { Label5 Label MoveScaled(0,0,25,4) Text = ("Server") } { cmbFarm ComboBox MoveScaled(33,0,19,4) Expand = True ReadOnly = True } { btnFarmConfig Button MoveScaled(53,0,4,4) Picture = Picture["icon:/small/options"] } } { HBox2 HBox MoveScaled(2,7,58,4) Spacing = True { Label1 Label MoveScaled(0,0,25,4) Text = ("User") } { txtLogin TextBox MoveScaled(33,0,24,4) Expand = True } } { HBox3 HBox MoveScaled(2,12,58,4) Spacing = True { Label2 Label MoveScaled(0,0,25,4) Text = ("Password") } { txtPassword TextBox MoveScaled(33,0,24,4) Expand = True Password = True } } { HBox38 HBox MoveScaled(2,17,58,4) Spacing = True { Label64 Label MoveScaled(0,0,25,4) Text = ("Confirm password") } { txtConfirmPassword TextBox MoveScaled(33,0,24,4) Expand = True Password = True } } { HBox4 HBox MoveScaled(2,22,58,4) Spacing = True { Label3 Label MoveScaled(0,0,25,4) Text = ("E-mail") } { txtMail TextBox MoveScaled(33,0,24,4) Expand = True } } { TextLabel1 TextLabel MoveScaled(2,27,59,11) Font = Font["Italic"] Expand = True Text = ("A confirmation mail will be sent to the specified e-mail address. Click on the link included in that mail to activate your account.\n

      \nYour e-mail will not be stored on the publishing server.") } { HBox51 HBox MoveScaled(2,40,58,4) Spacing = True { Panel3 Panel MoveScaled(2,0,13,4) Expand = True } { btnRegister Button MoveScaled(20,0,19,4) AutoResize = True Text = ("Register") & "..." } { btnCancel Button MoveScaled(40,0,16,4) Text = ("Cancel") } } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmRequest.class000066400000000000000000000020401411575327000244560ustar00rootroot00000000000000' Gambas class file Private $hRequest As HttpForm Private $iProgress As Integer Public Sub Run(hRequest As HttpForm, sTitle As String, Optional iProgress As Integer) Dim hObs As Observer $hRequest = hRequest $iProgress = iProgress hObs = New Observer(hRequest) As "Request" lblRequest.Text = sTitle & "..." Me.Title = sTitle pgbRequest.Visible = $iProgress <> FarmRequest.PROGRESS_NONE Me.ShowModal $hRequest = Null End Public Sub Request_Error() Me.Close End Public Sub Request_Finished() Request_Progress Me.Close End Public Sub Request_Cancel() Me.Close End Public Sub Request_Progress() If pgbRequest.Visible Then If $iProgress = FarmRequest.PROGRESS_UPLOAD Then Try pgbRequest.Value = $hRequest.Uploaded / $hRequest.TotalUploaded Else Try pgbRequest.Value = $hRequest.Downloaded / $hRequest.TotalDownloaded Endif Endif End Public Sub btnCancel_Click() $hRequest.Stop End Public Sub Form_Open() If Not pgbRequest.Visible Then Me.H -= pgbRequest.H End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FFarmRequest.form000066400000000000000000000010671411575327000243240ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,63,15) Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox1 HBox MoveScaled(1,1,48,4) Spacing = True { lblRequest Label MoveScaled(1,0,34,4) Expand = True } { spnRequest Spinner MoveScaled(41,0,4,4) Visible = False } } { pgbRequest ProgressBar MoveScaled(1,6,48,3) } { HBox2 HBox MoveScaled(1,10,48,4) Invert = True { btnCancel Button MoveScaled(26,0,16,4) Text = ("Cancel") } } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FPublish.class000066400000000000000000000163171411575327000236420ustar00rootroot00000000000000' Gambas class file Private $aDep As String[] Private $sScreenshot As String Private $hIdentity As FarmIdentity Private Const SCREENSHOT_SIZE As Integer = 640 Public Sub Run() As Boolean If Project.MajorVersion = 0 And If Project.MinorVersion = 0 Then FMain.ShowError(("You cannot publish a software whose version is \"0.0\".")) Return Endif Return Not Me.ShowModal() End Private Sub FillGambasVersion() Dim aVersion As String[] Dim iMajor As Integer Dim iMajorMax As Integer Dim iMinorMax As Integer Dim iMinor As Integer aVersion = Split(System.FullVersion, ".") iMajorMax = CInt(aVersion[0]) iMinorMax = CInt(aVersion[1]) If CInt(aVersion[2]) >= 90 Then Inc iMinorMax iMajor = 3 iMinor = 3 Do If iMajor > iMajorMax Or If iMinor > iMinorMax Then Break cmbGambasVersion.Add(CStr(iMajor) & "." & CStr(iMinor)) Inc iMinor Loop End Public Sub Form_Open() Dim aTag As String[] Dim sTag As String Settings.Read(Me) $hIdentity = FarmIdentity.Get(Settings["/Publish/Farm"]) $hIdentity.Init(lblIdentity) tagEditor.SetFarm($hIdentity.Farm) tagEditor.SetTags(Project.PublishTags) $aDep = Project.PublishDependencies lblProject.Text = Project.Name & " " & Project.FormatVersion() txtVendor.Text = Project.Vendor FillGambasVersion cmbGambasVersion.Text = Project.PublishGambasVersion txtURL.Text = Project.PublishWebSite txtDesc.Text = Project.Description ' cmbScreenshot.Add(("None")) ' If IsDir(Project.Dir &/ ".hidden/screenshots") Then ' For Each sScreenshot In Dir(Project.Dir &/ ".hidden/screenshots") ' If Right(sScreenshot) = "~" Then Continue ' cmbScreenshot.Add(sScreenshot) ' Next ' Endif ' ' cmbScreenshot.Text = File.Name(Project.PublishScreenshot) ' If cmbScreenshot.Index < 0 Then cmbScreenshot.Index = 0 If Project.HasModule("form") Or If Project.Components.Exist("gb.sdl") Then btnCreateMenu.Value = Project.PublishCreateMenu btnCreateMenu.Enabled = True Else btnCreateMenu.Value = False btnCreateMenu.Enabled = False Endif tbvDep.Columns.Count = 2 tbvDep.Columns[0].Text = ("Software") tbvDep.Columns[0].Expand = True tbvDep.Columns[1].Text = ("Version") tbvDep.Columns[1].Width = Desktop.Scale * 12 tbvDep.Rows.Count = $aDep.Count aTag = Split(RTrim(File.Load("install/categories")), "\n") For Each sTag In Split(RTrim(File.Load("tags.txt")), "\n") If Not aTag.Exist(sTag) Then aTag.Add(sTag) Next aTag.Sort(gb.IgnoreCase) lstTags.List = aTag End Private Sub SaveProject() Project.Vendor = Trim(txtVendor.Text) Project.PublishTags = tagEditor.GetTags() Project.PublishDependencies = $aDep Project.PublishGambasVersion = cmbGambasVersion.Text Project.PublishWebSite = txtURL.Text ' If cmbScreenshot.Index <= 0 Then ' Project.PublishScreenshot = "" ' Else ' Project.PublishScreenshot = cmbScreenshot.Text ' Endif If Project.HasModule("form") Then Project.PublishCreateMenu = btnCreateMenu.Value Project.Description = txtDesc.Text Project.WriteProject End Public Sub Form_Close() Settings.Write(Me) Settings["/Publish/Farm"] = $hIdentity.Farm SaveProject End Public Sub wizPublish_Cancel() Me.Close End Public Sub lstTags_Activate() tagEditor.Add(lstTags.Text) End Public Sub wizPublish_Close() Dim hReq As FarmRequest Dim sScreenshot As String SaveProject hReq = New FarmRequest($hIdentity.Farm) If radKeepScreenshot.Value Then Else If radDeleteScreenshot.Value Then sScreenshot = "*" Else If imvScreenshot.Image Then sScreenshot = $sScreenshot Endif hReq.PublishSoftware(Trim(txtVendor.Text), sScreenshot, cmbGambasVersion.Text, tagEditor.GetTags(), $aDep, txtURL.Text, txtDesc.Text) hReq.WaitFor(("The project has been successfully published."), ("Unable to publish project.")) Me.Close End Public Sub tbvDep_Data(Row As Integer, Column As Integer) Dim aDep As String[] = Split($aDep[Row], " ") Try tbvDep.Data.Text = aDep[Column] End Public Sub btnAddDep_Click() tbvDep.Save $aDep.Add("") Inc tbvDep.Rows.Count tbvDep.MoveTo($aDep.Max, 0) tbvDep.Edit End Public Sub tbvDep_Insert() btnAddDep.Value = True End Public Sub btnRemoveDep_Click() If tbvDep.Row < 0 Then Return tbvDep.Cancel $aDep.Remove(tbvDep.Row) 'SaveExtraDependencies Dec tbvDep.Rows.Count End Public Sub btnUpDep_Click() If tbvDep.Row >= 1 Then tbvDep.Save Swap $aDep[tbvDep.Row], $aDep[tbvDep.Row - 1] 'SaveExtraDependencies tbvDep.Refresh Dec tbvDep.Row tbvDep.Edit Endif End Public Sub btnDownDep_Click() If tbvDep.Row < $aDep.Max Then tbvDep.Save Swap $aDep[tbvDep.Row], $aDep[tbvDep.Row + 1] 'SaveExtraDependencies tbvDep.Refresh Inc tbvDep.Row tbvDep.Edit Endif End Public Sub tbvDep_Save(Row As Integer, Column As Integer, Value As String) Dim aRow As String[] If Column = 0 Then If Value And If InStr(Value, " ") Then Balloon.Warning(("Spaces are not allowed."), tbvDep.Editor) Stop Event Return Endif Else If Column = 1 Then If Value And If Not IsDigit(Replace(Value, ".", "")) Then Balloon.Warning(("Incorrect version number."), tbvDep.Editor) Stop Event Return Endif Endif aRow = Split($aDep[Row], " ") aRow.Resize(2) aRow[Column] = Value $aDep[Row] = Trim(aRow.Join(" ")) End Public Sub tbvDep_Click() tbvDep.Edit End Public Sub btnAddTag_Click() Dim I As Integer For I = 0 To lstTags.Count - 1 If lstTags[I].Selected Then tagEditor.Add(lstTags[I].Text) Next lstTags.UnselectAll End Public Sub btnClearTags_Click() If Message.Delete(("Do you really want to remove all tags?"), ("Remove"), ("Cancel")) <> 1 Then Return tagEditor.Clear End Public Sub btnSortTags_Click() tagEditor.Sort End Public Sub txtVendor_KeyPress() Project.OnVendorKeyPress() End Public Sub radScreenshot_Click() imvScreenshot.Visible = radPasteScreenshot.Value Or radLoadScreenshot.Value txtScreenshot.Enabled = radLoadScreenshot.Value If radLoadScreenshot.Value Then If Not txtScreenshot.Text Then txtScreenshot_Click Endif SetScreenshot End Private Sub SetScreenshot() Dim hImage As Image If radLoadScreenshot.Value Then Try hImage = Image.Load(Dialog.Path) Else If radPasteScreenshot.Value Then Try hImage = Clipboard.Paste() Endif If hImage Then If hImage.Width > SCREENSHOT_SIZE Then hImage = hImage.Stretch(SCREENSHOT_SIZE, -1) If hImage.Height > SCREENSHOT_SIZE Then hImage = hImage.Stretch(-1, SCREENSHOT_SIZE) If Not $sScreenshot Then $sScreenshot = File.SetExt(Temp$(), "jpg") hImage.Save($sScreenshot, 75) Endif imvScreenshot.Image = hImage imvScreenshot.ZoomFit End Public Sub txtScreenshot_Click() Dialog.Title = ("Select a screenshot file") Dialog.Filter = ["*.png;*.jpg;*.jpeg", ("Screenshot files")] If Dialog.OpenFile() Then Return txtScreenshot.Text = Dialog.Path SetScreenshot End Public Sub wizPublish_Arrange() imvScreenshot.ZoomFit End Public Sub btnRegister_Click() FFarmRegister.Run End Public Sub btnLogin_Click() If FFarmLogin.Run($hIdentity.Farm) Then Return $hIdentity = FFarmLogin.Identity $hIdentity.Init(lblIdentity) End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FPublish.form000066400000000000000000000132171411575327000234740ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,75,63) Text = ("Publish software") Icon = Picture["icon:/small/internet"] Arrangement = Arrange.Fill Margin = True { wizPublish Wizard MoveScaled(1,1,72,61) Arrangement = Arrange.Vertical Spacing = True Count = 5 TextFont = Font["Bold,+3"] ShowIndex = True Border = False ActionText = ("Publish") ActionPicture = Picture["icon:/small/internet"] Index = 0 Text = ("Software description") { lblProject Label MoveScaled(1,0,18,5) Font = Font["Bold,+2"] Background = Color.LightBackground Padding = 4 AutoResize = True } { HBox6 HBox MoveScaled(1,6,58,4) Spacing = True { Label4 Label MoveScaled(0,0,26,4) Text = ("Vendor name") } { txtVendor TextBox MoveScaled(31,0,26,4) Expand = True } } { HBox8 HBox MoveScaled(1,11,58,4) Spacing = True { Label10 Label MoveScaled(0,0,26,4) Text = ("Web site") } { txtURL TextBox MoveScaled(31,0,26,4) Expand = True } } { HBox10 HBox MoveScaled(1,21,58,4) Spacing = True { Label7 Label MoveScaled(0,0,26,4) Text = ("Create menu entry") } { btnCreateMenu SwitchButton MoveScaled(32,0,8,4) Animated = True } } { Label2 Label MoveScaled(1,26,21,4) Font = Font["Bold"] Text = ("Description") } { txtDesc TextArea MoveScaled(1,30,30,19) Expand = True Wrap = True } Index = 1 Text = ("Tags") { tagEditor CTagEditor MoveScaled(3,1,67,17) Expand = True } { Panel3 HBox MoveScaled(2,22,62,27) Expand = True Spacing = True { lstTags ListBox MoveScaled(0,0,34,15) Expand = True Mode = Select.Multiple } { VBox1 VBox MoveScaled(42,1,17,25) Spacing = True { btnAddTag Button MoveScaled(0,0,16,4) Text = ("Add") Picture = Picture["icon:/small/add"] } { btnSortTags Button MoveScaled(0,5,16,4) Text = ("Sort") Picture = Picture["icon:/small/sort-ascent"] } { btnClearTags Button MoveScaled(1,10,16,4) Text = ("Clear") Picture = Picture["icon:/small/trash"] } } } Index = 2 Text = ("Screenshot") { radKeepScreenshot RadioButton radScreenshot Name = "radKeepScreenshot" MoveScaled(0,0,53,3) Text = ("Keep the screenshot stored on the server") Value = True } { radDeleteScreenshot RadioButton radScreenshot Name = "radDeleteScreenshot" MoveScaled(0,4,54,3) Text = ("Delete the screenshot stored on the server") } { radPasteScreenshot RadioButton radScreenshot Name = "radPasteScreenshot" MoveScaled(0,8,50,3) Text = ("Upload a new screenshot taken from the clipboard") } { radLoadScreenshot RadioButton radScreenshot Name = "radLoadScreenshot" MoveScaled(0,12,55,3) Text = ("Upload a new screenshot taken from the following file:") } { Panel1 HBox MoveScaled(0,16,64,4) { txtScreenshot ButtonBox MoveScaled(15,0,48,4) Enabled = False Expand = True Picture = Picture["icon:/small/image"] ReadOnly = True } } { imvScreenshot ImageView MoveScaled(2,23,64,26) Visible = False Expand = True Border = False } Index = 3 Text = ("Dependencies") { HBox7 HBox MoveScaled(1,1,58,4) Spacing = True { Label8 Label MoveScaled(0,0,30,4) Text = ("Require Gambas version") } { cmbGambasVersion ComboBox MoveScaled(31,0,11,4) #Translate = False ReadOnly = True } { Panel2 Panel MoveScaled(44,1,11,2) Expand = True } } { HBox4 HBox MoveScaled(1,7,69,41) Expand = True Spacing = True { tbvDep TableView MoveScaled(2,2,42,22) Expand = True Header = GridView.Horizontal ScrollBar = Scroll.Vertical } { HBox11 VBox MoveScaled(49,3,18,34) Spacing = True { btnAddDep Button MoveScaled(0,0,18,4) Text = Shortcut(("Add"), "A") Picture = Picture["icon:/small/add"] } { btnRemoveDep Button MoveScaled(0,5,18,4) Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/delete"] } { btnUpDep Button MoveScaled(0,10,18,4) Text = Shortcut(("Up"), "U") Picture = Picture["icon:/small/up"] } { btnDownDep Button MoveScaled(0,15,18,4) Text = Shortcut(("Down"), "D") Picture = Picture["icon:/small/down"] } } } Index = 4 Text = ("Publish") { Panel5 HBox MoveScaled(1,1,39,4) Spacing = True { Label1 Label MoveScaled(1,0,11,4) AutoResize = True Text = ("Publish as") } { lblIdentity TextLabel MoveScaled(19,0,18,4) Expand = True Alignment = Align.Normal } } { Panel4 HBox MoveScaled(1,6,37,4) Spacing = True { btnLogin Button MoveScaled(0,0,15,4) AutoResize = True Text = ("Login") & "..." Picture = Picture["icon:/small/identity"] } { btnRegister Button MoveScaled(16,0,15,4) AutoResize = True Text = ("Register") & "..." Picture = Picture["icon:/small/new"] } } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FSoftwareFarm.class000066400000000000000000000403251411575327000246300ustar00rootroot00000000000000' Gambas class file Private $bNoRefresh As Boolean Private $SY As Integer Private $hSoft As CSoftware Private Enum WIZ_INDEX, WIZ_FARM, WIZ_SOFTWARE Private Enum SORT_DATE, SORT_DOWNLOAD, SORT_INSTALLED Private $hIdentity As FarmIdentity Private $hTimerArrange As Timer Private $hObs As Observer Public Sub Run() Me.ShowModal End Public Sub _new() dwgTitle.Background = Project.COLOR_BLUE End Public Sub Form_Open() Dim aGroup As New CSoftwareGroup[] Dim hButton As MenuButton Dim hGroup As CSoftwareGroup Dim sIcon As String Dim sVendor As String Dim hVoid As Control Settings.Read(Me) Me.Center $hIdentity = FarmIdentity.Get(FarmIdentity.LastFarm) ReloadFarm $bNoRefresh = True 'cmbFarm.List = FarmRequest.GetFarms() 'cmbFarm.Text = FarmIdentity.LastFarm cmbSort.Index = 0 $bNoRefresh = False aGroup.Add(CSoftwareGroup("Game", ("Games"), "game")) aGroup.Add(CSoftwareGroup("Development", ("Development"), "development")) aGroup.Add(CSoftwareGroup("Example", ("Examples"), "help")) aGroup.Add(CSoftwareGroup("Education", ("Education"), "science")) aGroup.Add(CSoftwareGroup("Graphics", ("Graphics"), "color")) aGroup.Add(CSoftwareGroup("Audio", ("Audio"), "audio")) aGroup.Add(CSoftwareGroup("Video", ("Video"), "video")) aGroup.Add(CSoftwareGroup("Office", ("Office"), "office")) aGroup.Add(CSoftwareGroup("Accessories", ("Accessories"), "tools")) aGroup.Add(CSoftwareGroup("Internet", ("Internet"), "internet")) aGroup.Add(CSoftwareGroup("System", ("System"), "computer")) aGroup.Sort aGroup.Add(Null) aGroup.Add(CSoftwareGroup("Library", ("Libraries"), "book")) aGroup.Add(CSoftwareGroup("IDE Extension", ("Extensions"), "plugin")) aGroup.Add(Null) sVendor = Settings["/Packager/Vendor"] If sVendor Then aGroup.Add(CSoftwareGroup(sVendor, ("My software") & "\n« " & sVendor & " »", "user")) If Project.Path And If Project.Vendor <> sVendor Then sVendor = Project.Vendor If sVendor Then aGroup.Add(CSoftwareGroup(sVendor, ("Other software from") & "\n« " & sVendor & " »", "people")) Endif aGroup.Add(CSoftwareGroup("", ("All software"), "img/48/all.png")) For Each hGroup In aGroup If Not hGroup Then hVoid = New Panel(panGroup) hVoid.ResizeScaled(1, 1) hVoid.Expand = True hVoid = New Separator(panGroup) 'hVoid.Foreground = Color.LightForeground 'Color.SetAlpha(Project.COLOR_ORANGE, 128) hVoid.ResizeScaled(1, 3) hVoid.Expand = True Continue Endif hButton = New MenuButton(panGroup) As "ButtonGroup" hButton.Text = hGroup.Name hButton.Arrow = False hButton.Border = False hButton.Tag = hGroup.Key sIcon = hGroup.Icon If InStr(sIcon, "/") = 0 Then sIcon = "icon:/48" &/ sIcon hButton.Picture = Picture[sIcon] hButton.ResizeScaled(30, 8) hButton.Mouse = Mouse.Pointing Next End Public Sub Form_KeyPress() If Key.Code = Key.Esc Then Me.Close End ' Public Sub SoftwareSeparator_Draw() ' ' Paint.Brush = Paint.LinearGradient(0, 0, 0, Paint.H, [Color.Merge(Color.TextBackground, Color.TextForeground, 0.1), Color.Transparent], [0, 1]) ' Paint.Rectangle(0, 0, Paint.W, Paint.H) ' Paint.Fill ' ' End Public Sub ButtonGroup_Click() wizFarm.MoveNext tagFarm.Clear If Last.Tag Then tagFarm.Add(Last.Tag) Reload End ' Public Sub Form_Arrange() ' ' dwgBackground.Move(svwFarm.X, svwFarm.Y, svwFarm.W, svwFarm.H) ' dwgBackground.Lower ' ' End ' ' Public Sub dwgBackground_Draw() ' ' Paint.DrawImage($hLogo, 16, 16, 256, 256) ' Paint.Font.Size = 40 ' Paint.Font.Bold = True ' Paint.Background = Color.Gray ' Paint.DrawTextShadow("Gambas\nSoftware\nFarm", 292, 16, Me.W, 256, Align.Left) ' Paint.Text("Gambas\nSoftware\nFarm", 292, 16, Me.W, 256, Align.Left) ' Paint.Fill ' ' End Public Sub cmbSort_Click() Reload End ' Public Sub cmbFarm_Click() ' ' tagFarm.SetFarm(cmbFarm.Text) ' ReloadFarm ' ' End Public Sub Reload() Dim hReq As FarmRequest If wizFarm.Index <> WIZ_FARM Then Return If $bNoRefresh Then Return timLoad.Stop $SY = svwFarm.ScrollY FarmRequestManager.Clear svwFarm.Children.Clear hReq = New FarmRequest($hIdentity.Farm) As "Request" hReq.SearchSoftware(["date", "download", "date"][cmbSort.Index], "", txtFilter.Text, tagFarm.GetTags()) spnFarm.Show spnFarm.Start End Private Sub ShowMessage(sText As String, Optional bError As Boolean) Dim hLabel As Label hLabel = New Label(svwFarm) hLabel.Text = sText If bError Then Project.SetEditorFont(hLabel) Else hLabel.Font.Italic = True hLabel.Font.Grade = 2 Endif hLabel.Foreground = Color.LightForeground hLabel.Padding = Desktop.Scale hLabel.AutoResize = True End Private Sub CheckSoftwareCount() If svwFarm.Children.Count Then Return ShowMessage(("No software found.")) End Public Sub Request_Finished() Dim hReq As FarmRequest = Last Dim sId As String Dim hSoftwareBox As SoftwareBox Dim aId As String[] Dim sText As String spnFarm.Hide If hReq.HasFailed() Then If hReq.ErrorText Then sText = hReq.ErrorText Else sText = ("Request cancelled.") Endif ShowMessage(sText, True) Return Endif 'svwFarm.Arrangement = Arrange.None aId = Split(hReq.Result["Result"]) For Each sId In aId hSoftwareBox = New SoftwareBox(svwFarm, CInt(sId), hReq.Farm) As "SoftwareBox" If cmbSort.Index = SORT_INSTALLED Then hSoftwareBox.Hide hSoftwareBox.ResizeScaled(48, 24) If cmbSort.Index = SORT_INSTALLED Then hSoftwareBox.Load Next 'svwFarm.Arrangement = Arrange.Row CheckSoftwareCount() If $SY Then Wait svwFarm.ScrollY = $SY Endif End Public Sub SoftwareBox_Ready() Dim hSoftwareBox As SoftwareBox = Last Dim hSoft As CSoftware hSoft = hSoftwareBox.Software If cmbSort.Index = SORT_INSTALLED And If Not hSoft.IsInstalled() Then Goto DELETE If chkShowAllVersion.Value = CheckBox.False Then If Not hSoft.LastVersion Then If Not hSoft.IsInstalled() Or If Comp(hSoft.Version, hSoft.GetInstallVersion(), gb.Natural) Then Goto DELETE Endif Endif Endif hSoftwareBox.Show Return DELETE: hSoftwareBox.Delete End Public Sub Form_Close() If $hTimerArrange Then $hTimerArrange.Stop FarmRequestManager.Clear FarmIdentity.LastFarm = $hIdentity.Farm Settings.Write(Me) End Public Sub txtFilter_Click() txtFilter.Clear End Public Sub txtFilter_Change() timLoad.Stop timLoad.Start End Public Sub timLoad_Timer() Reload End Public Sub tagFarm_Change() timLoad.Restart End Public Sub dwgTitle_Draw() Dim DS As Integer = Desktop.Scale Paint.Font.Grade = 8 Paint.Font.Bold = True Paint.Background = Color.Black Paint.DrawTextShadow(("Gambas Software Farm"), DS, 0, DS * 32, Paint.H, Align.Left, 8) Paint.Background = Color.White Paint.DrawText(("Gambas Software Farm"), DS, 0, DS * 32, Paint.H, Align.Left) End Private Sub ReloadFarm() Dim hIdentity As FarmIdentity CSoftware.ClearCache($hIdentity.Farm) hIdentity = FarmIdentity.Get($hIdentity.Farm) hIdentity.Init(lblIdentity) tagFarm.SetFarm($hIdentity.Farm) Reload End Public Sub btnLogin_Click() If FFarmLogin.Run($hIdentity.Farm) Then Return $hIdentity = FFarmLogin.Identity ReloadFarm End Private Sub UpdateSoftware() Dim sText As String Dim sTag As String Dim hTag As Label If Not $hSoft Then Return If $hSoft.State = CSoftware.STATE_ERROR Then Return With $hSoft 'lblName.Text = .Name & " " & .Version & " (" & .Vendor & ") " dwgName.Tooltip = "#" & $hSoft.Id panURL.Visible = Not IsNull(.URL) urlWebSite.Link = .URL If .YourVote < 0 Then btnVote.Text = ("Vote") btnVote.Enabled = False Else btnVote.Enabled = True If .YourVote = 1 Then btnVote.Text = ("Cancel my vote") Else btnVote.Text = ("Vote") Endif Endif If .CanUpgrade() Then btnInstall.Text = ("Upgrade") btnInstall.Picture = Picture["icon:/small/up"] btnDownload.Hide btnInstall.Show Else If .IsReallyInstalled() Then btnInstall.Text = ("Uninstall") btnInstall.Picture = Picture["icon:/small/undo"] btnDownload.Hide btnInstall.Show Else If Not .IsInstalled() Then btnInstall.Text = ("Download and install") btnInstall.Picture = Picture["icon:/small/add"] btnDownload.Show btnInstall.Show Else btnDownload.Hide btnInstall.Hide Endif btnRemove.Visible = FarmIdentity.Get($hSoft.Farm).Login = $hSoft.Owner sText = Trim(.Description) If Not sText Then txtDescription.Hide Else txtDescription.Text = sText txtDescription.H = txtDescription.Font.RichTextHeight(Replace(Html(sText), "\n", "
      "), txtDescription.W) + Desktop.Scale txtDescription.Show Endif lblDesc.Visible = txtDescription.Visible lblUploadDate.Text = Subst(("Published &1 (on &2)"), .GetUploadAge(), Format(.UploadDate, gb.LongDate)) 'lblUploadDate.Foreground = Color.Merge(Color.TextForeground, Color.LightForeground) Try picIcon.Picture = .Icon.Picture panTags.Children.Clear If .Tags Then For Each sTag In .Tags hTag = New Label(panTags) hTag.Text = " " & sTag & " " hTag.Padding = 4 If sTag Begins "gb." Then hTag.Background = Project.COLOR_ORANGE Else hTag.Background = Project.COLOR_BLUE Endif hTag.Foreground = Color.White hTag.Font.Bold = True hTag.AutoResize = True Next lblTags.Visible = .Tags.Count > 0 Endif imvScreenshot.Image = Null panScreenshot.Hide If .DownloadScreenshot() Then UpdateScreenshot Else spnScreenshot.Show spnScreenshot.Raise Endif End With dwgName.Refresh dwgStat.Refresh End Private Sub UpdateScreenshot() spnScreenshot.Hide If $hSoft.Screenshot Then Try imvScreenshot.Image = $hSoft.Screenshot imvScreenshot.ZoomFit panScreenshot.Show Else panScreenshot.Hide Endif End Public Sub Software_Screenshot() If $hSoft <> Last Then Return UpdateScreenshot End Public Sub SoftwareBox_Click() Dim hSoft As CSoftware = Last.Software If hSoft.State <> CSoftware.STATE_READY Then Return $hSoft = hSoft wizFarm.MoveNext End Public Sub btnGoBack_Click() wizFarm.MovePrevious End Public Sub panTitle_Arrange() Dim W As Integer W = picIcon.Parent.H - Desktop.Scale * 2 picIcon.Resize(W, W) 'dwgStat.Move(dwgStat.Parent.W - dwgStat.W - Desktop.Scale, Desktop.Scale) End ' Public Sub dwgScreenshot_Draw() ' ' Dim fScale, W, H As Float ' ' If $hScreenshot Then ' fScale = Max($hScreenshot.W / dwgScreenshot.W, $hScreenshot.H / dwgScreenshot.H) ' W = $hScreenshot.W / fScale ' H = $hScreenshot.H / fScale ' Paint.DrawImage($hScreenshot, (dwgScreenshot.W - W) / 2, (dwgScreenshot.H - H) / 2, W, H) ' Endif ' ' End Public Sub panTextDesc_Arrange() If txtDescription.Visible Then If Not $hTimerArrange Then $hTimerArrange = New Timer As "TimerArrange" $hTimerArrange.Trigger Endif Endif End Public Sub TimerArrange_Timer() txtDescription.H = txtDescription.Font.RichTextHeight(Replace(Html(txtDescription.Text), "\n", "
      "), txtDescription.W) + Desktop.Scale $hTimerArrange.Stop $hTimerArrange = Null End Public Sub panDesc_Arrange() spnScreenshot.Move(panDesc.ScreenX - spnScreenshot.Parent.ScreenX + panDesc.W \ 2 - spnScreenshot.W \ 2, panDesc.ScreenY - spnScreenshot.Parent.ScreenY + panDesc.H \ 2 - spnScreenshot.H \ 2) If wizFarm.Index = WIZ_SOFTWARE Then imvScreenshot.ZoomFit End Public Sub dwgStat_Draw() If Not $hSoft Then Return Paint.Font.Grade = 2 SoftwareBox.PaintStat($hSoft, Color.TextBackground, True) End Public Sub btnDownload_Click() Dim sName As String = $hSoft.GetTitle() Dim sErr As String If Message.Question(Subst(("Do you really want to download &1?"), sName), ("Download"), ("Cancel")) = 1 Then sErr = $hSoft.Install(True) If sErr Then If sErr <> "*" Then Message.Error(Subst(("Unable to download &1:"), sName) & "\n\n" & sErr) Else Message(Subst(("&1 has been successfully downloaded."), sName)) Reload Endif Endif End Public Sub btnInstall_Click() Dim sName As String = $hSoft.GetTitle() Dim sErr As String If $hSoft.IsInstalled() Then If $hSoft.CanUpgrade() Then If Message.Question(Subst(("Do you really want to upgrade to &1?"), sName), ("Upgrade"), ("Cancel")) = 1 Then sErr = $hSoft.Install() If sErr Then If sErr <> "*" Then Message.Error(Subst(("Unable to upgrade to &1:"), sName) & "\n\n" & sErr) Else Message(Subst("&1 has been successfully upgraded.", sName)) Goto REFRESH Endif Endif Else If Message.Question(Subst(("Do you really want to uninstall &1?"), sName), ("Uninstall"), ("Cancel")) = 1 Then sErr = $hSoft.Uninstall() If sErr Then Message.Error(Subst(("Unable to uninstall &1:"), sName) & "\n\n" & sErr) Else Message(Subst(("&1 has been successfully uninstalled."), sName)) Goto REFRESH Endif Endif Endif Else If Message.Question(Subst(("Do you really want to install &1?"), sName), ("Install"), ("Cancel")) = 1 Then sErr = $hSoft.Install() If sErr Then If sErr <> "*" Then Message.Error(Subst(("Unable to install &1:"), sName) & "\n\n" & sErr) Else Message(Subst(("&1 has been successfully installed."), sName)) Goto REFRESH Endif Endif Endif Return REFRESH: Reload End Public Sub btnVote_Click() Dim sErr As String sErr = $hSoft.ToggleVote() If sErr Then Message.Error(("Unable to modify your vote.") & "\n\n" & sErr) Else Reload Endif End Public Sub Software_Change() If $hSoft <> Last Then Return UpdateSoftware End Public Sub svwFarm_Arrange() spnFarm.Move(svwFarm.W \ 2 - 32, svwFarm.H \ 2 - 32, 64, 64) End Public Sub urlWebSite_Click() Dim sLink As String sLink = urlWebSite.Link If sLink Not Like "http*://*" Then sLink = "http://" &/ sLink Project.OpenWebPage(sLink) Stop Event End Public Sub btnRemove_Click() Dim sName As String = $hSoft.Name Dim sErr As String If Message.Warning(Subst(("Do you really want to delete &1 from the farm server?"), sName), ("Delete"), ("Cancel")) <> 1 Then Return sErr = $hSoft.Delete() If sErr Then Message.Error(Subst(("Unable to remove &1:"), sName) & "\n\n" & sErr) Else Message(Subst("&1 has been successfully removed.", sName)) Endif wizFarm.MovePrevious ReloadFarm End ' Public Sub txtVendor_Click() ' ' txtVendor.Clear ' ' End ' ' Public Sub txtVendor_Change() ' ' timLoad.Stop ' timLoad.Start ' ' End ' ' Public Sub txtVendor_KeyPress() ' ' Project.OnVendorKeyPress() ' ' End Public Sub wizFarm_Change() btnGoBack.Enabled = wizFarm.Index > 0 Select Case wizFarm.Index Case WIZ_INDEX FarmRequestManager.Clear Case WIZ_FARM If $hSoft Then $hSoft.Abort $hSoft = Null Endif imvScreenshot.Image = Null chkShowFilter_Click Case WIZ_SOFTWARE If Not $hSoft.Observed Then $hObs = New Observer($hSoft) As "Software" $hSoft.Observed = True Endif UpdateSoftware End Select End Public Sub chkShowFilter_Click() panFilter.Visible = chkShowFilter.Value If panFilter.Visible Then tagFarm.SetFocus tagFarm_Arrange End Public Sub btnRegister_Click() FFarmRegister.Run End Public Sub dwgName_Draw() If Not $hSoft Then Return Paint.Font.Grade = 4 $hSoft.PaintName(0, 0, Paint.W) End Public Sub tagFarm_Arrange() tagFarm.Parent.H = tagFarm.H panFilter.AutoResize = True panFilter.AutoResize = False panFilterFrame.AutoResize = True panFilterFrame.AutoResize = False End Public Sub chkShowAllVersion_Click() Reload End Public Sub wizFarm_Arrange() tagFarm_Arrange End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FSoftwareFarm.form000066400000000000000000000175211411575327000244700ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,102,77) Background = Color.TextBackground Text = ("Gambas Software Farm") Arrangement = Arrange.Vertical { dwgTitle DrawingArea MoveScaled(1,1,66,8) Background = &H3398C3& } { VBox1 HBox MoveScaled(0,10,88,6) Background = Color.ButtonBackground Spacing = True { btnGoBack ToolButton MoveScaled(0,0,6,6) Enabled = False Mouse = Mouse.Pointing Picture = Picture["icon:/medium/left"] } { Panel12 Panel MoveScaled(6,0,80,6) Expand = True Arrangement = Arrange.Horizontal Spacing = True Margin = True { lblIdentity TextLabel MoveScaled(21,1,16,4) Font = Font["Bold"] Expand = True AutoResize = True Alignment = Align.Right } { Panel14 Panel MoveScaled(40,1,1,4) } { btnLogin Button MoveScaled(47,1,15,4) AutoResize = True Text = ("Login") & "..." Picture = Picture["icon:/small/identity"] } { btnRegister Button MoveScaled(63,1,15,4) AutoResize = True Text = ("Register") & "..." Picture = Picture["icon:/small/new"] } } } { Separator2 Separator MoveScaled(44,18,14,0) } { wizFarm Wizard MoveScaled(1,21,97,54) Expand = True Arrangement = Arrange.Vertical Count = 3 ShowTitle = False ShowButton = False Border = False Index = 0 Text = ("") { panGroup ScrollView MoveScaled(4,17,85,36) Expand = True Arrangement = Arrange.Row Margin = True Border = False ScrollBar = Scroll.Vertical } Index = 1 Text = ("") { panFilterFrame VBox MoveScaled(0,1,92,19) Spacing = True Margin = True { HBox1 HBox MoveScaled(1,2,86,4) Spacing = True { Label1 Label MoveScaled(0,0,11,4) AutoResize = True Text = ("Show") } { cmbSort ComboBox MoveScaled(15,0,29,4) ReadOnly = True List = [("Most recent"), ("Most downloaded"), ("Installed")] } { chkShowFilter CheckBox MoveScaled(48,0,17,4) AutoResize = True Text = ("Show filters") } { chkShowAllVersion CheckBox MoveScaled(64,0,20,4) AutoResize = True Text = ("Show old versions") } } { panFilter VBox MoveScaled(1,7,89,11) Visible = False Spacing = True { panFilterTags HPanel MoveScaled(0,0,88,5) Spacing = True { Label3 Label MoveScaled(0,0,11,4) Text = ("Tags") } { tagFarm CTagEditor MoveScaled(18,0,17,4) Expand = True } } { Panel5 HPanel MoveScaled(0,7,89,4) Spacing = True { Label4 Label MoveScaled(0,0,11,4) Text = ("Filter") } { Panel2 Panel MoveScaled(28,0,34,4) Expand = True Arrangement = Arrange.Fill Border = Border.Plain { txtFilter ButtonBox MoveScaled(1,0,31,4) Expand = True Picture = Picture["icon:/small/clear"] Border = False } } } } } { Separator3 Separator MoveScaled(20,22,21,0) } { Panel7 Panel MoveScaled(1,24,91,28) Background = Color.TextBackground Foreground = Color.TextForeground Expand = True Arrangement = Arrange.Fill { svwFarm ScrollView MoveScaled(3,3,69,23) Background = Color.TextBackground Foreground = Color.TextForeground Expand = True Arrangement = Arrange.Row Spacing = True Margin = True Border = False ScrollBar = Scroll.Vertical } { spnFarm Spinner MoveScaled(77,15,10,9) Visible = False Ignore = True Type = Spinner.Circle } } Index = 2 Text = ("") { Panel9 Panel MoveScaled(6,0,77,55) Foreground = Color.TextForeground Expand = True Arrangement = Arrange.Vertical { panTitle HBox MoveScaled(2,1,71,10) Spacing = True Margin = True { picIcon PictureBox MoveScaled(1,1,8,8) Stretch = True Alignment = Align.Center } { Panel8 Panel MoveScaled(11,1,1,7) Visible = False } { dwgName DrawingArea MoveScaled(15,1,28,5) Expand = True } { dwgStat DrawingArea MoveScaled(45,1,17,4) } { Panel13 Panel MoveScaled(69,1,1,7) Visible = False } } { Separator1 Separator MoveScaled(28,17,16,0) Visible = False } { panDesc HSplit MoveScaled(2,18,73,36) Expand = True Border = False { Panel6 HBox MoveScaled(1,1,52,34) Margin = True { panTextDesc ScrollView MoveScaled(1,1,48,32) Expand = True Arrangement = Arrange.Vertical Spacing = True Border = False ScrollBar = Scroll.Vertical { lblUploadDate TextLabel MoveScaled(2,3,21,3) Font = Font["Italic"] AutoResize = True } { lblDesc Label MoveScaled(2,6,14,3) Font = Font["Bold"] Text = ("Description") } { txtDescription TextArea MoveScaled(2,10,29,4) ReadOnly = True Wrap = True Border = False ScrollBar = Scroll.None } { panURL VBox MoveScaled(2,14,29,7) Spacing = True { lblDesc2 Label MoveScaled(0,0,14,3) Font = Font["Bold"] Text = ("Web site") } { urlWebSite URLLabel MoveScaled(0,4,18,3) AutoResize = True } } { lblTags Label MoveScaled(2,21,14,3) Font = Font["Bold"] Text = ("Tags") } { panTags HPanel MoveScaled(2,24,26,8) AutoResize = True Spacing = True } } } { panScreenshot Panel MoveScaled(55,8,15,19) Visible = False Arrangement = Arrange.Fill Margin = True { imvScreenshot ImageView MoveScaled(1,1,13,15) Border = False Alignment = Align.TopLeft } } } { spnScreenshot Spinner MoveScaled(64,10,10,10) Ignore = True } } { HBox2 HBox MoveScaled(2,58,86,6) Spacing = True Margin = True { btnDownload Button MoveScaled(2,0,15,4) Mouse = Mouse.Pointing AutoResize = True Text = ("Download") Picture = Picture["icon:/small/download"] } { btnInstall Button MoveScaled(19,0,15,4) Mouse = Mouse.Pointing AutoResize = True Text = ("Download and install") } { btnVote Button MoveScaled(38,0,15,4) Visible = False Mouse = Mouse.Pointing AutoResize = True Text = ("Vote") Picture = Picture["icon:/small/bookmark"] } { Panel10 Panel MoveScaled(53,0,2,4) Expand = True } { btnRemove Button MoveScaled(57,0,15,4) Mouse = Mouse.Pointing AutoResize = True Text = ("Remove") Picture = Picture["icon:/small/remove"] } } Index = 0 } { timLoad #Timer #MoveScaled(117,2) Delay = 500 } } gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FarmIdentity.class000066400000000000000000000050271411575327000245210ustar00rootroot00000000000000' Gambas class file Public Const DEFAULT_FARM As String = "gambasfarm.org" Static Property FarmList As String[] Static Property RememberPassword As Boolean Static Property LastFarm As String Property Login As String Property Password As String Property Read Farm As String Static Private $hSettings As Settings Static Private $cPassword As New Collection Static Private $cCache As New Collection Private $sFarm As String Static Public Sub _init() $hSettings = New Settings("gambas3-farm") End Static Public Sub Get(sFarm As String) As FarmIdentity Dim hIdentity As FarmIdentity If Not sFarm Then sFarm = DEFAULT_FARM hIdentity = $cCache[sFarm] If Not hIdentity Then hIdentity = New FarmIdentity(sFarm) $cCache[sFarm] = hIdentity Endif Return hIdentity End Static Public Sub Exit() $cCache = Null End Public Sub _new(sFarm As String) $sFarm = sFarm End Private Function Login_Read() As String Return $hSettings[$sFarm &/ "Login"] End Private Sub Login_Write(Value As String) $hSettings[$sFarm &/ "Login"] = Value $hSettings.Save End Static Private Function RememberPassword_Read() As Boolean Return $hSettings["/RememberPassword", False] End Static Private Sub RememberPassword_Write(Value As Boolean) $hSettings["/RememberPassword"] = Value $hSettings.Save End Private Function Password_Read() As String If Not $cPassword[$sFarm] Then If $hSettings["/RememberPassword", False] Then Try $cPassword[$sFarm] = Desktop.Passwords["/Farm" &/ $sFarm] Endif Return $cPassword[$sFarm] End Private Sub Password_Write(Value As String) $cPassword[$sFarm] = Value If $hSettings["/RememberPassword", False] Then Try Desktop.Passwords["/Farm" &/ $sFarm] = Value End Static Private Function FarmList_Read() As String[] Dim aDefault As New String[] Return $hSettings["/FarmList", aDefault] End Static Private Sub FarmList_Write(Value As String[]) $hSettings["/FarmList"] = Value $hSettings.Save End Static Public Sub SaveSettings() $hSettings.Save End Static Private Function LastFarm_Read() As String Return $hSettings["/LastFarm", DEFAULT_FARM] End Static Private Sub LastFarm_Write(Value As String) $hSettings["/LastFarm"] = Value $hSettings.Save End Public Sub Init(hLabel As TextLabel) If Me.Login And If Me.Password Then hLabel.Text = "" & Me.Login & "@" & Me.Farm & "" Else hLabel.Text = "" & ("Anonymous") & "@" & Me.Farm & "" Endif End Private Function Farm_Read() As String Return $sFarm End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FarmRequest.class000066400000000000000000000215731411575327000243640ustar00rootroot00000000000000' Gambas class file Event Finished Public Enum PROGRESS_NONE, PROGRESS_UPLOAD, PROGRESS_DOWNLOAD Public Farm As String Public ErrorText As String Public Result As Collection Public ResultFile As String Private $sTitle As String Private $hForm As HttpForm Private $iProgress As Integer Private $bFile As Boolean Private $bFinished As Boolean Static Public Sub GetFarms() As String[] Dim aFarm As String[] aFarm = FarmIdentity.FarmList If Not aFarm Then aFarm = New String[] If Not aFarm.Exist(FarmIdentity.DEFAULT_FARM) Then aFarm.Add(FarmIdentity.DEFAULT_FARM, 0) Endif Return aFarm End Static Public Sub GetDate(sDate As String) As Date Dim dDate As Date If Len(sDate) = 14 Then Try dDate = Date(CInt(Mid(sDate, 1, 4)), CInt(Mid(sDate, 5, 2)), CInt(Mid(sDate, 7, 2)), CInt(Mid$(sDate, 9, 2)), CInt(Mid$(sDate, 11, 2)), CInt(Mid$(sDate, 13, 2))) Else If Len(sDate) = 8 Then Try dDate = Date(CInt(Mid(sDate, 1, 4)), CInt(Mid(sDate, 5, 2)), CInt(Mid(sDate, 7, 2))) Endif Return dDate End Public Sub _new(sFarm As String) Dim hIdentity As FarmIdentity Farm = sFarm hIdentity = FarmIdentity.Get(sFarm) $hForm = New HttpForm As "Request" $hForm["login"] = hIdentity.Login $hForm["password"] = hIdentity.Password End Public Sub _free() If ResultFile Then Try Kill ResultFile End Public Sub Request_Error() ErrorText = $hForm.ErrorText Result = Null ResultFile = "" $bFinished = True Raise Finished End Public Sub Request_Cancel() ErrorText = "" Result = Null ResultFile = "" $bFinished = True Raise Finished End Public Sub Request_Finished() Dim aResult As String[] Dim sLine As String Dim iPos As Integer Dim sResult As String Dim sHeader As String Dim sName As String $bFinished = True If $bFile Then ResultFile = $hForm.TargetFile If $hForm.Headers Then For Each sHeader In $hForm.Headers If sHeader Begins "Content-Disposition:" Then iPos = InStr(sHeader, "filename=") If iPos Then sName = File.SetName(ResultFile, UnQuote(Mid$(sHeader, iPos + 9))) Try Kill sName Move ResultFile To sName ResultFile = sName Break Endif Endif Next Endif Raise Finished Return Endif sResult = $hForm.Peek() aResult = Split(Replace(sResult, "\r", ""), "\n") If aResult.Count = 0 Or If aResult[0] <> "10 OK" Then If aResult.Count Then iPos = InStr(aResult[0], " ") ErrorText = Replace(Mid$(sResult, iPos + 1), "\r", "") Else ErrorText = ("No answer.") Endif Result = Null Raise Finished Return Endif ErrorText = "" Result = New Collection aResult.Remove(0) For Each sLine In aResult iPos = InStr(sLine, "=") If iPos = 0 Then Continue Result[Trim(Left(sLine, iPos - 1))] = Trim(Mid$(sLine, iPos + 1)) Next Raise Finished End Static Public Sub GetCheckSum(sPath As String) As String Dim sChecksum As String Dim iPos As Integer If Not System.Exist("sha256sum") Then Error.Raise("Cannot find 'sha256sum' program") Exec ["sha256sum", sPath] To sChecksum iPos = InStr(sChecksum, " ") sChecksum = Left(sChecksum, iPos - 1) Return sChecksum Catch Error.Raise("Unable to compute checksum: " & Error.Text) End Public Sub RegisterUser(sLogin As String, sPassword As String, sEmail As String) $sTitle = ("Register user") $iProgress = PROGRESS_NONE $hForm.URL = "http://" & Farm &/ "farm/register" $hForm.Add("login", sLogin) $hForm.Add("password", sPassword) $hForm.Add("email", sEmail) FarmRequestManager.Add($hForm) '$sGoodMsg = ("You have been successfully registered.\n\nYou will receive a confirmation e-mail soon.") '$sBadMsg = ("Unable to register user.") End Public Sub HasFailed() As Boolean Return If($bFile, IsNull(ResultFile), IsNull(Result)) End Public Sub WaitFor(Optional sGood As String, sBad As String, Optional bNoWindow As Boolean) As Boolean Dim bFail As Boolean If bNoWindow Then Inc Application.Busy Do Sleep 0.05 If $bFinished Then Break Wait Loop Dec Application.Busy Else FFarmRequest.Run($hForm, $sTitle, $iProgress) $iProgress = PROGRESS_NONE Endif bFail = HasFailed() If bFail Then If sBad And If ErrorText Then Message.Error(sBad & "\n\n" & ErrorText) Else If sGood Then Message(sGood) Endif Return bFail End Private Sub AddLanguageTag(aTag As String[], sLang As String) sLang = Language.ToEnglishName(sLang) If Not sLang Then Return If Not aTag.Exist(sLang) Then aTag.Add(sLang) End Private Sub AddTag(aTag As String[], sTag As String) If Not aTag.Exist(sTag) Then aTag.Add(sTag) End Public Sub PublishSoftware(sVendor As String, sScreenshot As String, sGambasVersion As String, aTag As String[], aRequire As String[], sURL As String, sDesc As String) Dim sSource As String Dim sIcon As String Dim sChecksum As String Dim sComp As String Dim sLang As String Dim sSave As String If Project.Compile(True) Then Return $sTitle = ("Publish project") $iProgress = PROGRESS_UPLOAD sSource = Temp$() sSource = File.Dir(sSource) &/ File.BaseName(sSource) & ".tar.bz2" 'Project.GetDefaultArchiveBaseName() & ".tar.bz2" Project.MakeSourcePackageTo(sSource) sChecksum = GetCheckSum(sSource) If Project.Icon Then sIcon = Project.Dir &/ Project.Icon If Not sIcon Or If Not Exist(sIcon) Then sIcon = "img/logo/project.png" Endif If Not Exist(sIcon) Then sIcon = "" '$sGoodMsg = ("The project has been successfully published.") '$sBadMsg = ("Unable to publish project.") For Each sComp In Project.Components AddTag(aTag, sComp) Next sSave = System.Language System.Language = "C" If Project.Localize Then For Each sLang In Language.GetAll() If Project.HasTranslation(sLang) Then AddLanguageTag(aTag, sLang) Next Endif If Project.DefaultLanguage Then AddLanguageTag(aTag, Project.DefaultLanguage) If Project.Type = Project.TYPE_LIBRARY Then AddTag(aTag, "library") System.Language = sSave $hForm.URL = "http://" & Farm &/ "/farm/publish" '$hForm.Add("login", Login) '$hForm.Add("password", Password) $hForm.Add("name", Project.Name) $hForm.Add("vendor", sVendor) $hForm.Add("version", CStr(Project.MajorVersion) & "." & CStr(Project.MinorVersion)) $hForm.Add("release", Project.ReleaseVersion) $hForm.Add("desc", sDesc) $hForm.Add("gambas", sGambasVersion) $hForm.Add("checksum", sChecksum) $hForm.AddFile("icon", sIcon, "icon.png") $hForm.AddFile("source", sSource, Project.GetDefaultArchiveBaseName() & ".tar.bz2") $hForm.Add("tags", aTag.Join(",")) $hForm.Add("dependencies", aRequire.Join(",")) $hForm.Add("url", sURL) If sScreenshot Then If sScreenshot = "*" Then $hForm.Add("screenshot", sScreenshot) Else $hForm.AddFile("screenshot", sScreenshot, "screenshot." & File.Ext(sScreenshot)) Endif Endif FarmRequestManager.Add($hForm) End Public Sub GetSoftware(iId As Integer) $hForm.URL = "http://" & Farm &/ "farm/get" $hForm.Add("id", CStr(iId)) FarmRequestManager.Add($hForm) End Public Sub GetSoftwareIcon(iId As Integer) $hForm.URL = "http://" & Farm &/ "farm/get?icon" $hForm.Add("id", CStr(iId)) $hForm.TargetFile = Temp$() $bFile = True FarmRequestManager.Add($hForm) End Public Sub SearchSoftware(sSort As String, sVendor As String, sFilter As String, aTag As String[]) $hForm.URL = "http://" & Farm &/ "farm/search" $hForm["sort"] = sSort $hForm["vendor"] = sVendor $hForm["filter"] = sFilter $hForm["tags"] = aTag.Join() FarmRequestManager.Add($hForm) End Public Sub CheckAuth(sLogin As String, sPassword As String) $hForm.URL = "http://" & Farm &/ "farm/ident" $hForm["login"] = sLogin $hForm["password"] = sPassword FarmRequestManager.Add($hForm) End Public Sub VoteForSoftware(iId As Integer, iVote As Integer) $hForm.URL = "http://" & Farm &/ "farm/vote" $hForm["id"] = CStr(iId) $hForm["vote"] = CStr(iVote) FarmRequestManager.Add($hForm) End Public Sub Abort() FarmRequestManager.Remove($hForm) End Public Sub DownloadSoftware(iId As Integer) $sTitle = ("Download software") $iProgress = PROGRESS_DOWNLOAD $hForm.URL = "http://" & Farm &/ "farm/download" $hForm.Add("id", CStr(iId)) $hForm.TargetFile = Temp$() $bFile = True FarmRequestManager.Add($hForm) End Public Sub DownloadScreenshot(iId As Integer) '$sTitle = ("Download screenshot") '$iProgress = PROGRESS_DOWNLOAD $hForm.URL = "http://" & Farm &/ "farm/get?screenshot" $hForm.Add("id", CStr(iId)) $hForm.TargetFile = Temp$() $bFile = True FarmRequestManager.Add($hForm) End Public Sub DeleteSoftware(iId As Integer) $sTitle = ("Delete software") $hForm.URL = "http://" & Farm &/ "farm/remove" $hForm.Add("id", CStr(iId)) FarmRequestManager.Add($hForm) End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/FarmRequestManager.module000066400000000000000000000030561411575327000260330ustar00rootroot00000000000000' Gambas module file Property Read Count As Integer Private $aRequest As New HttpForm[] Private Const MAX_REQUEST As Integer = 3 Public Sub Add(hRequest As HttpForm) Dim hObs As Observer 'hRequest.Debug = True hObs = New Observer(hRequest) As "Request" $aRequest.Add(hRequest) 'Debug "Add "; hRequest If $aRequest.Count <= MAX_REQUEST Then 'Debug "Submit "; hRequest hRequest.Submit Endif End Public Sub Remove(hRequest As HttpForm) Dim iPos As Integer 'Debug "Remove "; hRequest iPos = $aRequest.FindByRef(hRequest) If iPos >= 0 Then If iPos = 0 Then 'Debug "Stop "; hRequest hRequest.Stop Else $aRequest.Remove(iPos) Endif Endif End Public Sub Request_Finished() Dim iPos As Integer 'Debug "Finished "; Last If $aRequest.Count = 0 Then Return 'Debug "Remove "; Last iPos = $aRequest.FindByRef(Last) If iPos >= 0 Then $aRequest.Remove(iPos) If $aRequest.Count >= MAX_REQUEST Then 'Debug "Submit "; $aRequest[MAX_REQUEST - 1] $aRequest[MAX_REQUEST - 1].Submit Endif Endif End Public Sub Request_Error() Request_Finished End Public Sub Request_Cancel() Request_Finished End Public Sub Clear() Dim aClear As HttpForm[] Dim I As Integer If $aRequest.Count = 0 Then Return aClear = $aRequest.Copy() $aRequest.Clear 'Debug "Clear" For I = 0 To Min(aClear.Max, MAX_REQUEST) 'Debug "Stop "; aClear[I] aClear[I].Stop Next End Private Function Count_Read() As Integer Return $aRequest.Count End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/Publish/000077500000000000000000000000001411575327000224755ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/Farm/Publish/CTag.class000066400000000000000000000027241411575327000243470ustar00rootroot00000000000000' Gambas class file Inherits UserControl Property Text As String Private $hButton As ToolButton Private $hDraw As DrawingArea Private $sText As String Public Sub _new() $hDraw = New DrawingArea(Me) As "DrawingArea" $hDraw.Arrangement = Arrange.Horizontal $hDraw.Mouse = Mouse.Pointing $hButton = New ToolButton($hDraw) As "Button" $hButton.Picture = Picture["img/16/white-close.png"] $hButton.Resize(Desktop.Scale * 3, Desktop.Scale * 3) $hButton.Border = False $hButton.Show Me.Font.Bold = True End Private Sub UpdateSize() Me.Resize(Desktop.Scale * 4 + Me.Font.TextWidth($sText), Me.Font.Height + Desktop.Scale) End Public Sub DrawingArea_Draw() Dim X As Integer 'Paint.Rectangle(0.5, 0.5, Paint.W - 1, Paint.H - 1, 3) 'Paint.Background = Color.LightForeground 'Paint.Stroke Paint.FillRect(0, 0, Paint.W, Paint.H, If($sText Begins "gb.", Project.COLOR_ORANGE, Project.COLOR_BLUE)) Paint.Background = Color.White X = Desktop.Scale * 3 Paint.DrawText($sText, X, 0, Paint.W - X, Paint.H, Align.Left) End Public Sub DrawingArea_Font() UpdateSize End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) If InStr(Value, ".") = 0 Then Value = UCase(Left(Value)) & Mid$(Value, 2) $sText = Value $hDraw.Refresh UpdateSize End Public Sub Button_Click() Dim hParent As CTagEditor = Me.Parent.Parent.Parent Me.Delete hParent._RaiseChange() End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/Publish/CTagCompletion.class000066400000000000000000000031751411575327000264020ustar00rootroot00000000000000' Gambas class file Inherits Completion Static Private $aTag As String[] Public Farm As String Private $cCache As New Collection Private $aCache As String[] Static Public Sub _init() Dim I As Integer $aTag = ["Example", "Game", "OpenGL", "Database", "Multimedia", "Command-line", "Network", "Web", "Accessories", "Internet", "System"] For I = 5 To CInt(Split(System.FullVersion, ".")[1]) + 1 $aTag.Add("Gambas 3." & CStr(I)) Next $aTag.Sort() End Public Sub Fill(Text As String, Explicit As Boolean) Dim aTag As String[] Dim sTag As String Dim hHttpClient As HttpClient Dim sResult As String Dim I As Integer Dim aCache As String[] If Not Text Then If Not Explicit Then Return If $aCache Then Me.List = $aCache Return Endif Endif aTag = New String[] For Each sTag In $aTag If Left(sTag, Len(Text)) == Text Then aTag.Add(sTag) Next If Farm Then aCache = $cCache[Left(Text)] If Not aCache Then hHttpClient = New HttpClient hHttpClient.URL = Farm &/ "/farm/tags?name=" & URL.Encode(Left(Text)) hHttpClient.Async = False hHttpClient.Timeout = 3 hHttpClient.Get() sResult = hHttpClient.Peek() If sResult Begins "10 OK" Then aCache = Split(Replace(sResult, "\r", ""), "\n") Endif $cCache[Text] = aCache Endif For I = 1 To aCache.Max sTag = aCache[I] If Left(sTag, Len(Text)) == Text Then If Not aTag.Exist(sTag) Then aTag.Add(sTag) Endif Next aTag.Sort() Endif If Not Text Then $aCache = aTag Me.List = aTag End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/Publish/CTagEditor.class000066400000000000000000000066071411575327000255220ustar00rootroot00000000000000' Gambas class file Export Event Change Inherits UserControl Private $hView As Panel Private $hEditor As MaskBox Private $hBorder As Panel Private $hCompletion As CTagCompletion Private $hTimerArrange As Timer Private $bInArrange As Boolean Private $hWatcher As Watcher Public Sub _new() $hBorder = New Panel(Me) As "View" $hBorder.Border = Border.Plain $hBorder.Arrangement = Arrange.Fill $hBorder.Mouse = Mouse.Text $hBorder.Background = Color.TextBackground $hView = New Panel($hBorder) As "View" $hView.Border = False $hView.Arrangement = Arrange.Row $hView.Margin = True $hView.Spacing = True $hTimerArrange = New Timer As "TimerArrange" Me.Proxy = $hView Clear() End Public Sub SetFarm(sFarm As String) $hCompletion.Farm = sFarm End Private Sub ResizeEditorNow() Dim DS As Integer Dim H As Integer If Me.Design Then Return If Not Object.IsValid($hEditor) Then Return $bInArrange = True DS = Desktop.Scale $hEditor.Resize(DS * 2 + Max(Desktop.Scale * 12, $hEditor.Font.TextWidth($hEditor.Text) + 8), $hEditor.Font.Height + DS) $hEditor.Raise '$hView.EnsureVisible($hEditor.X, $hEditor.Y - MARGIN, $hEditor.W, $hEditor.H + MARGIN * 2) With $hEditor H = .Y + .H + DS + 2 End With Me.H = H $bInArrange = False End Private Sub ResizeEditor() If $bInArrange Then Return $hTimerArrange.Trigger End Public Sub View_MouseDown() ResizeEditor $hEditor.SetFocus End Public Sub View_Arrange() ResizeEditor End Public Sub TimerArrange_Timer() ResizeEditorNow End Public Sub Editor_Change() ResizeEditor End Public Sub Add(sTag As String) AddTag(sTag) End Private Sub AddTag(sTag As String) Dim hTag As CTag sTag = Trim(sTag) If Not sTag Then Return If GetTags().Exist(sTag, gb.IgnoreCase) Then Return hTag = New CTag($hView) hTag.Text = sTag $hEditor.Text = "" ResizeEditor Raise Change End Public Sub Editor_Activate() AddTag($hEditor.Text) End Public Sub Editor_KeyPress() Dim hTag As CTag Dim sText As String If Key.Code = Key.Backspace And If $hEditor.Length = 0 Then If $hView.Children.Count >= 2 Then hTag = $hView.Children[$hView.Children.Count - 2] sText = hTag.Text hTag.Delete $hEditor.Text = sText $hEditor.Pos = $hEditor.Length ResizeEditor Raise Change Stop Event Endif Endif End Public Sub GetTags() As String[] Dim hChild As Control Dim aTag As New String[] For Each hChild In $hView.Children If hChild Is CTag Then aTag.Add(CTag(hChild).Text) Endif Next Return aTag End Public Sub SetTags(aTag As String[]) Dim sTag As String Clear() For Each sTag In aTag AddTag(sTag) Next End Public Sub Completion_Activate() Editor_Activate End Public Sub _RaiseChange() Raise Change End Public Sub Clear() If $hView.Children.Count = 1 Then Return $hView.Children.Clear $hEditor = New MaskBox($hView) As "Editor" $hEditor.Name = "txtTagEditor" $hEditor.Border = False $hEditor.MaxLength = 24 $hEditor.Filter = "[0-9A-Za-z .-]" ResizeEditor $hWatcher = New Watcher($hEditor) As "EditorWatcher" $hCompletion = New CTagCompletion($hEditor) As "Completion" End Public Sub Sort() SetTags(GetTags().Sort(gb.IgnoreCase)) End Public Sub SetFocus() Try $hEditor.SetFocus End gambas-3.16.3/app/src/gambas3/.src/Project/Farm/SoftwareBox.class000066400000000000000000000151461411575327000243700ustar00rootroot00000000000000' Gambas class file Inherits UserControl Event Ready 'Event Install 'Event Vote Event Click Static Private $hVote As Image Static Private $hVoteOff As Image Static Private $hInstall As Image Property Read Id As Integer Property Read Software As CSoftware Private $hDrawingArea As DrawingArea Private $hSoft As CSoftware Private $hSpinner As Spinner Private $sFarm As String Private $iId As Integer Private $bHighlight As Boolean Private $bInit As Boolean Public Sub _new(iId As Integer, sFarm As String) ', sLogin As String, sPassword As String) If Not $hVote Then $hVote = Picture["icon:/small/bookmark"].Image $hVoteOff = $hVote.Copy().Desaturate() $hInstall = Picture["icon:/small/download"].Image Endif 'Me.Foreground = Color.TextForeground $sFarm = sFarm $iId = iId $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Mouse = Mouse.Pointing $hDrawingArea.Focus = True $hDrawingArea.Tracking = True $hSpinner = New Spinner($hDrawingArea) $hSpinner.Hide ' panAction = New Panel($hDrawingArea) ' panAction.Spacing = True ' panAction.Invert = True ' panAction.Ignore = True ' panAction.ResizeScaled(21, 5) ' panAction.Arrangement = Arrange.Horizontal ' ' btnInstall = New ToolButton(panAction) As "btnInstall" ' btnInstall.ResizeScaled(10, 5) ' btnInstall.Font.Grade = 1 ' btnInstall.AutoResize = True ' ' btnVote = New ToolButton(panAction) As "btnVote" ' btnVote.ResizeScaled(10, 5) ' 'btnVote.Font.Bold = True ' btnVote.Font.Grade = 1 ' btnVote.AutoResize = True $hSoft = CSoftware.Get($sFarm, $iId) Object.Attach($hSoft, Me, "Software") End Public Sub Load() $bInit = True If $hSoft.State <> CSoftware.STATE_READY Then Reload Else Raise Ready Endif End Public Sub Software_Change() $hDrawingArea.Refresh If $hSoft.IsFinished() Then $hSpinner.Hide ' If $hSoft.State = CSoftware.STATE_READY Then ' ' 'UpdateButtons ' ' Endif Raise Ready Endif End Public Sub DrawingArea_Arrange() $hSpinner.Move($hDrawingArea.W \ 2 - 16, $hDrawingArea.H \ 2 - 16, 32, 32) 'panAction.Move($hDrawingArea.W - Desktop.Scale - panAction.W, Desktop.Scale) End Public Sub DrawingArea_Enter() $bHighlight = True $hDrawingArea.Refresh End Public Sub DrawingArea_Leave() $bHighlight = False $hDrawingArea.Refresh End Public Sub DrawingArea_Draw() Dim X, Y, W, H As Integer Dim P As Integer Dim iCol As Integer Dim sText As String Dim HN As Integer If Not $bInit Then Load W = Paint.W H = Paint.H P = Desktop.Scale * 2 ' If $hSoft.IsInstalled() Then ' If $hSoft.CanUpgrade() Then ' iCol = &HDF6B00& ' Else ' iCol = &H3398C3& ' Endif ' Else ' iCol = Color.LightForeground ' Endif 'Paint.Brush = Paint.RadialGradient(X, Y, Desktop.Scale * 24, X, Y, [Color.Merge(iCol, Color.TextBackground, 0.6), Color.TextBackground], [0.0, 1.0]) 'Paint.Rectangle(0, 0, W, H) 'Paint.Fill Paint.AntiAlias = False Paint.Rectangle(X + 1, Y + 1, W - 3, H - 3) Paint.Background = GetBackgroundColor() Paint.Fill(True) If $hDrawingArea.HasFocus Or If $bHighlight Then Paint.Background = Color.LightBackground Paint.LineWidth = 2 Else Paint.Background = Color.LightForeground Endif Paint.Stroke Paint.AntiAlias = True If Not $hSoft Then Return If $hSoft.CanUpgrade() Then iCol = Project.COLOR_ORANGE Else If $hSoft.IsReallyInstalled() Then iCol = Project.COLOR_BLUE Else iCol = 0 Endif If iCol Then Paint.Polygon([Paint.W - 2, Paint.H - P * 3 - 2, Paint.W - 2, Paint.H - 2, Paint.W - 2 - P * 3, Paint.H - 2]) Paint.Background = Color.SetAlpha(iCol, 128) Paint.Fill Endif X += P Y += P W -= P * 2 H -= P * 2 If $hSoft.State = CSoftware.STATE_ERROR Then Paint.Font.Italic = True Paint.Background = Color.Gray Paint.DrawText($hSoft.ErrorText, X, Y, W, H, Align.TopLeft) Return Endif Paint.Save Paint.Rectangle(X, Y, W, H) Paint.Clip With $hSoft If .Icon Then Paint.DrawImage(.Icon, X, Y) X += .Icon.W + P Else X += CSoftware.IconSize + P Endif Paint.Font.Grade = 1 HN = $hSoft.PaintName(X, Y, W - X + P) X = P '-= CSoftware.ICON_SIZE + P sText = .Description Paint.Font.Grade = -1 HN = Max(CSoftware.IconSize, HN) W = Paint.W - X - P * 2 Y += HN H = Paint.H - Y - P * 3 'If .URL Then H -= Desktop.Scale Paint.Background = Color.TextForeground Paint.DrawText(Paint.TrimText(sText, W, H), X, Y, W, H) If $hSoft.IsFinished() Then Y = Paint.H - P * 2 H = P Paint.Font.Grade = -3 Paint.Font.Italic = True Paint.DrawText(Subst(("Published &1"), .GetUploadAge()), X, Y, W, H) PaintStat($hSoft, GetBackgroundColor()) Endif End With Paint.Restore End Private Function Id_Read() As Integer Return $hSoft.Id End Public Sub Reload() $hSpinner.Show $hSoft.Start '$hDrawingArea.Refresh End Public Sub DrawingArea_MouseDown() Raise Click End Private Function Software_Read() As CSoftware Return $hSoft End Static Private Sub GetBackgroundColor() As Integer Return Color.Merge(Color.TextForeground, Color.TextBackground, 0.97) End Static Public Sub PaintStat(hSoft As CSoftware, (iBg) As Integer, Optional (bWithSize) As Boolean) Dim sDownload As String Dim X, Y As Integer Dim P As Integer P = Desktop.Scale * 2 With hSoft If .FullDownloadCount <> .DownloadCount Then sDownload = CStr(.DownloadCount) & " / " & CStr(.FullDownloadCount) & "" Else sDownload = "" & CStr(.DownloadCount) & "" Endif Y = Paint.H - P - $hInstall.H 'W = Paint.Font.TextWidth(sVote) X = Paint.W - P - Paint.Font.RichTextWidth(sDownload) - 1 - $hInstall.W - P \ 2 'Paint.FillRect(X - P, 0, Paint.W - X + P * 2, $hInstall.H + P * 2, iBg) Paint.DrawImage($hInstall, X, Y) X += $hInstall.W + P \ 2 Paint.DrawRichText(sDownload, X, Y, Paint.W - X, $hInstall.H, Align.Left) ' 'Paint.DrawImage(If(.YourVote = 1, $hVote, $hVoteOff), X, Y) ' ' X += 20 ' Paint.DrawText(sVote, X, Y, Paint.W, 16, Align.Left) ' ' X += W + 8 ' ' Paint.DrawImage($hInstall, X, Y) ' ' X += 20 ' Paint.DrawText(sDownload, X, Y, Paint.W, 16, Align.Left) ' ' If bWithSize Then ' Y += 24 ' Paint.DrawText(Project.GetFileSize(.Size), P, Y, Paint.W - P * 2, 16, Align.Right) ' Endif End With End gambas-3.16.3/app/src/gambas3/.src/Project/Library/000077500000000000000000000000001411575327000216065ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/Library/CLibraryInfo.class000066400000000000000000000116751411575327000251720ustar00rootroot00000000000000' Gambas class file Static Property Read UserPath As String Public Name As String Public Path As String Public NotFound As Boolean Public Version As String Public (Classes) As String[] Public Libraries As String[] Public Info As String Public Require As String[] Public CompatibleUntil As String Private $sDesc As String Static Private $cAll As New Collection Static Private $sInfo As String Public Sub Check(sPath As String) As Boolean Dim bNotFound As Boolean sPath = SolvePath(sPath) If sPath Then bNotFound = False Else bNotFound = True Endif Return bNotFound <> NotFound End Static Public Sub _get(sPath As String) As CLibraryInfo Dim hLib As CLibraryInfo = $cAll[sPath] If hLib Then If hLib.Check(sPath) Then hLib = Null Endif If Not hLib Then hLib = New CLibraryInfo(sPath) $cAll[sPath] = hLib Endif Return hLib End Static Public Sub Clear() $cAll.Clear End Static Public Sub Exit() Clear() End Static Public Sub SolvePath(sPath As String, Optional bKeepPath As Boolean) As String Dim sSolve As String If Left(sPath) = ":" Then sPath = Mid$(sPath, 2) sSolve = CLibraryInfo.UserPath &/ sPath & ".gambas" If Not Exist(sSolve) Then sSolve = Component.Path &/ sPath & ".gambas" Else sSolve = sPath If sSolve Not Ends ".gambas" Then sSolve &= ".gambas" Endif 'sSolve = File.SetExt(sSolve, "gambas") If bKeepPath Or If Exist(sSolve) Then Return sSolve End Public Sub _new(sPath As String) Dim sLine As String Dim iPos As Integer Dim sData As String Dim aData As String[] If Left(sPath) = ":" Then Name = File.Name(sPath) iPos = RInStr(Name, ":") If iPos Then Version = Mid$(Name, iPos + 1) Name = Left(Name, iPos - 1) Endif Else Name = File.BaseName(sPath) Endif sPath = SolvePath(sPath, True) Classes = New String[] Libraries = New String[] Require = New String[] Path = sPath If Not sPath Or If Not Exist(sPath) Then NotFound = True Return Endif Exec [System.Path &/ "bin/gba" & System.Version, "-x", sPath, ".startup"] To sData aData = Split(sData, "\n") Try Version = aData[4] For iPos = 5 To aData.Max If aData[iPos] Then Break Next While iPos <= aData.Max If Left(aData[iPos]) = "/" Then Libraries.Add(aData[iPos]) Inc iPos Wend Exec [System.Path &/ "bin/gba" & System.Version, "-x", sPath, ".list"] To sData Classes = Split(sData, "\n", "", True) Exec [System.Path &/ "bin/gba" & System.Version, "-x", sPath, ".component"] To sData For Each sLine In Split(sData, "\n", "", True) sLine = Trim(sLine) If sLine Begins "Requires=" Then Require.Insert(Split(Trim(Mid$(sLine, InStr(sLine, "=") + 1)))) Else If sLine Begins "CompatibleUntil=" Then CompatibleUntil = Trim(Mid$(sLine, InStr(sLine, "=") + 1)) Endif Next End Public Sub GetInfo() Exec [System.Path &/ "bin/gba" & System.Version, "-x", Path, ".info"] To Info End Public Sub GetHelp() As String Dim sData As String Dim aData As String[] Dim iPos As Integer If Not $sDesc Then Exec [System.Path &/ "bin/gba" & System.Version, "-x", Path, ".project"] To sData aData = Split(sData, "\n") iPos = aData.Find("Description=*", gb.Like) If iPos >= 0 Then $sDesc = UnQuote(Scan(aData[iPos], "Description=*")[0]) Else $sDesc = " " Endif Endif Return Trim($sDesc) End Public Sub GetDependencyName() As String Dim sProject As String Dim sLine As String Dim sVendor As String Dim sVendorPrefix As String Exec [System.Path &/ "bin/gba" & System.Version, "-x", Path, ".project"] To sProject For Each sLine In Split(sProject, "\n") If sLine Begins "Vendor=" Then sVendor = Mid$(sLine, InStr(sLine, "=") + 1) Else If sLine Begins "Vendor=" Then sVendorPrefix = Mid$(sLine, InStr(sLine, "=") + 1) Endif Next Return Package.GetPackagePrefix(Project.TYPE_LIBRARY, sVendor, sVendorPrefix, True) & Package.GetPackageName(Name) End Private Sub AddInfo(sTitle As String, sValue As String) If $sInfo Then $sInfo &= "
      " $sInfo &= Subst(("&1: &2"), sTitle, sValue) End Public Sub GetDescription(bLong As Boolean) As String Dim sDesc As String If NotFound Then bLong = True $sInfo = "" AddInfo(("Location"), Path) If NotFound Then $sInfo &= "
      " & ("WARNING! Library not found.") & "" Else AddInfo(("Provides"), Classes.Join(", ")) If Require.Count Then AddInfo(("Requires"), Require.Join(", ")) Endif sDesc = "

      " & File.Name(File.Dir(Path)) & " ▸ " & Name & " " & Version & "

      " If bLong Then sDesc &= "

      " & $sInfo & "" Return sDesc End Static Private Function UserPath_Read() As String Return Desktop.DataDir &/ "gambas3/lib" End gambas-3.16.3/app/src/gambas3/.src/Project/Library/FSelectLibrary.class000066400000000000000000000053161411575327000255140ustar00rootroot00000000000000' Gambas class file Static Public Path As String Public Sub Run() As Boolean Return Not Me.ShowModal() End Public Sub btnOK_Click() Dim sKey As String sKey = cvwLibrary.Key If Not sKey Then Return If Not cvwLibrary.Current.ParentKey Then Return Path = ":" & sKey Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Private Sub RefreshLibraries() Dim sDir As String Dim sVendor As String Dim sLib As String Dim bParent As Boolean Dim aLib As String[] Dim sKey As String Dim hPict As Picture cvwLibrary.Clear For Each sDir In [CLibraryInfo.UserPath, Component.Path] If Not IsDir(sDir) Then Continue For Each sVendor In Dir(sDir, "*", gb.Directory).Sort(gb.Natural) bParent = cvwLibrary.Exist(sVendor) For Each sLib In Dir(sDir &/ sVendor, "*.gambas", gb.File).Sort(gb.Natural) sLib = File.BaseName(sLib) sKey = sVendor &/ sLib If cvwLibrary.Exist(sKey) Then Continue aLib = Split(sLib, ":") If aLib.Count <> 2 Then Continue If Not bParent Then If sVendor = "(unknown)" Then With cvwLibrary.Add(sVendor, "", Picture["icon:/small/directory"]) .Expanded = True .RichText = "" & ("unknown") & "" End With Else cvwLibrary.Add(sVendor, sVendor, Picture["icon:/small/directory"]).Expanded = True Endif bParent = True Endif If sDir = Component.Path Then hPict = Picture["icon:/small/component"] Else hPict = Picture["icon:/small/book"] Endif cvwLibrary.Add(sKey, aLib[0], hPict, sVendor)[1] = aLib[1] Next Next Next If cvwLibrary.Count Then cvwLibrary.Show panNoLibrary.Hide Else cvwLibrary.Hide panNoLibrary.Show Endif End Public Sub Form_Open() Settings.Read(Me) cvwLibrary.Columns.Count = 2 cvwLibrary.Columns[0].Text = ("Library") cvwLibrary.Columns[0].Expand = True cvwLibrary.Columns[1].Text = ("Version") RefreshLibraries End Public Sub cvwLibrary_Select() If cvwLibrary.Key And If Not cvwLibrary.Current.ParentKey Then cvwLibrary.MoveChild cvwLibrary.Item.Selected = True Endif btnRemove.Enabled = cvwLibrary.Key btnOK.Enabled = btnRemove.Enabled End Public Sub btnRemove_Click() Dim sPath As String If Not cvwLibrary.Key Then Return sPath = CLibraryInfo.UserPath &/ cvwLibrary.Key & ".gambas" Try Kill sPath Try Rmdir File.Dir(sPath) RefreshLibraries cvwLibrary_Select End Public Sub cvwLibrary_Activate() btnOK.Value = True End Public Sub Form_Close() Settings.Write(Me) End gambas-3.16.3/app/src/gambas3/.src/Project/Library/FSelectLibrary.form000066400000000000000000000020771411575327000253530ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,50) Text = ("Select a library") Arrangement = Arrange.Vertical Spacing = True Margin = True { cvwLibrary ColumnView MoveScaled(5,5,39,31) Expand = True } { panNoLibrary Panel MoveScaled(9,21,43,17) Visible = False Background = Color.TextBackground Expand = True Arrangement = Arrange.Fill Margin = True Border = Border.Plain { TextLabel1 TextLabel MoveScaled(5,2,34,12) Font = Font["Italic"] Text = ("No library has been found on your system.") } } { HBox1 HBox MoveScaled(1,44,62,4) Spacing = True { btnRemove Button MoveScaled(2,0,16,4) Enabled = False Text = ("Uninstall") Picture = Picture["icon:/small/undo"] } { Panel1 Panel MoveScaled(23,0,4,4) Expand = True } { btnOK Button MoveScaled(29,0,16,4) Enabled = False Text = ("OK") Default = True } { btnCancel Button MoveScaled(46,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Project/Library/LibraryItem.class000066400000000000000000000055401411575327000250640ustar00rootroot00000000000000' Gambas class file Inherits UserControl Property Path As String Private $hDrawingArea As DrawingArea Private $sPath As String Private $hLibraryInfo As CLibraryInfo Private $sText As String Private $iTextW As Integer Private Const ICON_SIZE As Integer = 32 Private Const PADDING As Integer = 6 Private $bHighlight As Boolean Property Background As Integer Public Sub _new() $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Mouse = Mouse.Pointing Me.H = Max(ICON_SIZE, Desktop.Scale * 12) + PADDING * 2 End Private Sub IsSelected() As Boolean Return Me.Background = Color.SelectedBackground End Private Sub SetPath(sPath As String) $sPath = sPath $hLibraryInfo = CLibraryInfo[sPath] Me.Refresh End Public Sub DrawingArea_Draw() Dim X, W As Integer If Not $hLibraryInfo Then Return With $hLibraryInfo $sText = Subst("", If(IsSelected(), "white", "black")) $sText &= "" & .Name & " " & .Version & "" '$sText &= Subst("", If(IsSelected(), "white", "gray")) & Replace($sPath, System.User.Home, "~") & "" $sText &= "


      " & ("Location") & " : " & Replace($sPath, User.Home, "~") & "" If .NotFound Then $sText &= "

      " & ("WARNING! Library not found.") & "" Else $sText &= "
      " & ("Provides") & " : " & .Classes.Join(", ") & "" 'If .Libraries.Count Then $sText &= "
      " & ("Depends on") & " : " & .Libraries.Join(", ") & "" If .Require.Count Then $sText &= "
      " & ("Requires") & " : " & .Require.Join(", ") & "" $sText &= "
      " Endif $iTextW = Draw.RichTextWidth($sText) Draw.Picture(Picture["icon:/" & ICON_SIZE & "/exec"], PADDING, PADDING) X = ICON_SIZE + PADDING * 2 W = Max(Me.W - X - PADDING, $iTextW) If IsSelected() Then Draw.Foreground = Color.SelectedForeground Draw.RichText($sText, X, PADDING, W, Desktop.Scale * 6, Align.TopLeft) End With End Public Sub DrawingArea_Enter() 'If Me.Parent Is ListContainer Then If Me.Background = Color.Default Then $hDrawingArea.Background = Color.LightBackground $bHighlight = True Endif 'Endif End Public Sub DrawingArea_Leave() If $bHighlight Then $hDrawingArea.Background = Color.Default Endif End Private Function Background_Read() As Integer Return Super.Background End Private Sub Background_Write(Value As Integer) Super.Background = Value $hDrawingArea.Background = Color.Default End Private Function Path_Read() As String Return $sPath End Private Sub Path_Write(Value As String) SetPath(Value) End gambas-3.16.3/app/src/gambas3/.src/Project/Patch/000077500000000000000000000000001411575327000212415ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Project/Patch/FMakePatch.class000066400000000000000000000066371411575327000242470ustar00rootroot00000000000000' Gambas class file ' (C) 2013, 2014 Tobias Boege Private $sOldName As String Private $hViewer As FPatch Public Sub wizMakePatch_BeforeChange() Dim hProject As CProjectInfo Select Case wizMakePatch.Index Case 0 wizMakePatch[1].Enabled = radArchive.Value wizMakePatch[2].Enabled = Not radArchive.Value Case 1 If Not Exist(fchOld.SelectedPath) Or If IsDir(fchOld.SelectedPath) Then Message.Warning(("Please select the origin archive.")) Stop Event Endif Project.Config["/FMakePatch/LastArchive"] = fchOld.SelectedPath $sOldName = File.BaseName(fchOld.SelectedPath) If File.Ext($sOldName) = "tar" Then $sOldName = File.BaseName($sOldName) Case 2 If Not IsDir(pchOld.Path) Or If Not Exist(pchOld.Path &/ ".project") Then Message.Warning(("Please select the origin project.")) Stop Event Endif Project.Config["/FMakePatch/LastProject"] = pchOld.Path $sOldName = File.Name(pchOld.Path) hProject = New CProjectInfo(pchOld.Path) $sOldName &= "-" & hProject.Version End Select End Private Function GetDiff() As String Dim sOld As String If radArchive.Value Then sOld = fchOld.SelectedPath Else sOld = pchOld.Path Endif Project.Config["/FMakePatch/MakeName"] = CBool(chkMakeName.Value) Project.Config["/FMakePatch/EditPatch"] = CBool(chkEditPatch.Value) If Not chkMakeName.Value Then Project.Config["/FMakePatch/PatchName"] = fchPatch.Value Endif Project.Save() Return Patch.GenerateForOld(sOld) End Public Sub wizMakePatch_Close() Dim sDiff As String If Not fchPatch.Value Then Message.Warning(("Please enter the patch file name.")) Return Endif ' Get the edited patch If chkEditPatch.Value And If $hViewer Then sDiff = $hViewer.Patch.MakeText() Else sDiff = GetDiff() Endif File.Save(fchPatch.Value, sDiff) Message.Info(("Patch has been successfully generated.")) Me.Close() Catch Message.Error(("Unable to generate the patch.") & "\n\n" & Error.Text) End Public Sub wizMakePatch_Cancel() Me.Close() End Public Sub chOld_Activate() wizMakePatch.Index = 3 End Public Sub fchPatch_Activate() wizMakePatch_Close() End Public Sub Form_Open() Settings.Read(Me) Settings.Read(fchPatch) chkMakeName.Value = Project.Config["/FMakePatch/MakeName", True] chkEditPatch.Value = Project.Config["/FMakePatch/EditPatch", True] fchOld.SelectedPath = Project.Config["/FMakePatch/LastArchive", User.Home] pchOld.Path = Project.Config["/FMakePatch/LastProject", User.Home] $hViewer = New FPatch(panViewer) End Public Sub Form_Close() Settings.Write(Me) Settings.Write(fchPatch) End Public Sub wizMakePatch_Change() Dim sName As String If wizMakePatch.Index = 3 Then $hViewer.Clear() Try $hViewer.Parse(GetDiff()) If Error Then Message.Error(("Unable to generate the patch.") & "\n\n" & Error.Text) Endif Else If wizMakePatch.Index = 4 Then If chkMakeName.Value Then sName = $sOldName sName &= "~" If $sOldName Not Begins sName & "-" Then sName &= Project.Name & "-" Endif sName &= Project.FormatVersion() fchPatch.SelectedPath = fchPatch.Dir &/ sName & ".patch" Else fchPatch.SelectedPath = Project.Config["/FMakePatch/PatchName"] Endif Endif End Public Sub chkEditPatch_Click() wizMakePatch[3].Enabled = chkEditPatch.Value End gambas-3.16.3/app/src/gambas3/.src/Project/Patch/FMakePatch.form000066400000000000000000000044741411575327000241020ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,82,65) Text = ("Generate patch") Icon = Picture["icon:/small/text"] Arrangement = Arrange.Vertical Spacing = True Margin = True { wizMakePatch Wizard MoveScaled(1,1,79,63) Expand = True Arrangement = Arrange.Vertical Spacing = True Count = 5 TextFont = Font["Bold,+3"] ShowIndex = True Border = False Index = 0 Text = ("Select patch origin") { Panel1 VBox MoveScaled(0,0,70,45) Expand = True { Label1 Label MoveScaled(0,0,18,4) Font = Font["Bold"] Text = ("Patch origin") } { radArchive RadioButton radType Name = "radArchive" MoveScaled(1,4,40,4) Text = ("Source archive") Value = True } { radProject RadioButton radType Name = "radProject" MoveScaled(1,8,45,4) Text = ("Project directory") } { Label2 Label MoveScaled(0,13,23,4) Font = Font["Bold,"] Text = ("Options") } { chkMakeName CheckBox MoveScaled(1,17,64,4) Text = ("Automatic patch name") Value = CheckBox.True } { chkEditPatch CheckBox MoveScaled(1,21,64,4) Text = ("Edit patch") Value = CheckBox.True } { Panel2 Panel MoveScaled(14,26,19,2) } { TextLabel1 TextLabel MoveScaled(0,29,69,9) Font = Font["Italic,-1"] Text = ("This wizard will generate a patch between an origin project and the current project.") } } Index = 1 Text = ("Select source archive") { fchOld FileChooser chOld Name = "fchOld" MoveScaled(2,2,75,48) Expand = True Filter = [("*.gz;*.bz2;*.xz"), ("Source packages")] ShowFile = False } Index = 2 Text = ("Select project directory") { pchOld ProjectChooser chOld Name = "pchOld" MoveScaled(2,1,68,49) Expand = True Border = True } Index = 3 Text = ("Edit patch") { panViewer Panel MoveScaled(2,1,70,45) Expand = True Arrangement = Arrange.Fill } Index = 4 Text = ("Choose patch file name") { fchPatch FileChooser MoveScaled(0,1,77,51) Expand = True Filter = [("*.patch;*.diff"), ("Patch/Diff files")] } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Project/Patch/FPatch.class000066400000000000000000000110741411575327000234400ustar00rootroot00000000000000' Gambas class file ' (C) 2013, 2014, almost-2015 Tobias Boege '' Get the edited patch back Property Read {Patch} As Patch Private $hPatch As New Patch Private $hObs As Observer ' Whether we behave like a window or just an embedded control (see FMakePatch, Step #4) Private $bWindowed As Boolean Public Sub _new() $bWindowed = Not Me.Parent panSelectPath.Visible = $bWindowed panButton.Visible = $bWindowed Me.Margin = $bWindowed End Public Sub Form_Open() Settings.Read(Me) gvwHunks.Font = Project.GetEditorFont() gvwHunks.Columns.Count = 4 gvwHunks.Columns[0].Width = Desktop.Scale * 4 gvwHunks.Columns[1].Expand = True gvwHunks.Columns[2].Expand = False gvwHunks.Columns[3].Expand = False $hObs = New Observer(gvwHunks.Proxy, True) As "Observer" edtPatch.ReadConfig edtPatch.ShowLineNumber = True End Private Sub Check(iRow As Integer, bActive As Boolean) $hPatch[iRow].Active = bActive gvwHunks[iRow, 0].Picture = If(bActive, Picture["img/16/checked.png"], Picture["img/16/unchecked.png"]) edtPatch.Highlight = IIf($hPatch[gvwHunks.Row].Active, "diff", "") End Public Sub Observer_MouseDown() Dim bSelect As Boolean Dim iRow As Integer With gvwHunks If .ColumnAt(Mouse.X) = 0 Then iRow = .RowAt(Mouse.Y) If iRow >= 0 Then bSelect = Not $hPatch[.Row].Active For Each iRow In .Rows.Selection Check(iRow, bSelect) Next Endif Stop Event Endif End With End Public Sub gvwHunks_Select() With gvwHunks If .Row < 0 Then edtPatch.Text = "" Return Endif If $hPatch[.Row].Active Then 'gvwHunks[.Row, 0].Picture = Picture["img/16/checked.png"] edtPatch.Highlight = "diff" Else 'gvwHunks[.Row, 0].Picture = Picture["img/16/unchecked.png"] edtPatch.Highlight = "" Endif edtPatch.Text = $hPatch[.Row].Text End With End ' Public Sub gvwHunks_Activate() ' ' Dim iRow As Integer = gvwHunks.Row ' ' If iRow >= 0 Then Check(iRow, Not $hPatch[iRow].Active) ' ' End Public Sub edtPatch_Highlight(Text As String) TextHighlighter.Add(Highlight.Preprocessor, String.Len(Text)) End Private Sub RefreshHunks() Dim iInd As Integer Dim sToFile As String ' Dim sLineInfo As String ' Dim iAltColor, iJ As Integer Dim aScan As String[] ' iAltColor = Color.Merge(Color.TextBackground, Color.LightBackground) gvwHunks.Rows.Height = Max(gvwHunks.Font.Height, 20) gvwHunks.Rows.Count = $hPatch.Count For iInd = 0 To $hPatch.Count - 1 With $hPatch[iInd] gvwHunks[iInd, 0].Picture = Picture["img/16/" & IIf(.Active, "checked.png", "unchecked.png")] gvwHunks[iInd, 0].Padding = 2 If .ToFile Then sToFile = Scan(.ToFile, "+++ */*\t*")[1] Else If iInd Then sToFile = gvwHunks[iInd - 1, 1].Text Endif gvwHunks[iInd, 1].Text = sToFile aScan = Scan(RTrim(.LineInfo), "@@ -* +* @@") 'sLineInfo = aScan[0] & "\t--> " & aScan[1] gvwHunks[iInd, 2].Text = aScan[0] gvwHunks[iInd, 3].Text = "--> " & aScan[1] ' If Even(iInd) Then ' For iJ = 0 To gvwHunks.Columns.Count - 1 ' gvwHunks[iInd, iJ].Background = iAltColor ' Next ' Endif End With Next gvwHunks.Columns[2].Width = -1 gvwHunks.Columns[3].Width = -1 btnApply.Enabled = True btnRevert.Enabled = True End Public Sub btnApply_Click() $hPatch.Apply() Project.ReadProject() Project.Refresh(True) End Public Sub btnRevert_Click() $hPatch.Revert() Project.ReadProject() Project.Refresh(True) End Public Sub btnClose_Click() Me.Close End Public Sub Form_Close() ' Save configuration only if we're windowed (else we're just a ' control in some other window where it makes no sense to save ' our geometry). If $bWindowed Then Settings.Write(Me) End Public Sub txtPath_Click() Dialog.Title = ("Select patch") Dialog.Filter = ["*.patch;*.diff", ("Patch/Diff files")] Dialog.Path = Project.Config["/FPatch/LastPatch", User.Home] If Dialog.OpenFile() Then Return If Not Project.IsPatchFile(Dialog.Path) Then Message.Warning(("That file does not look like a patch file!")) Return Endif Project.Config["/FPatch/LastPatch"] = Dialog.Path txtPath.Text = Dialog.Path Inc Application.Busy Parse(File.Load(Dialog.Path)) Dec Application.Busy End Public Sub Clear() $hPatch = New Patch RefreshHunks() End Public Sub Parse(sFile As String) Inc Application.Busy $hPatch.Parse(sFile) RefreshHunks() Finally Dec Application.Busy End Private Function Patch_Read() As Patch Return $hPatch End gambas-3.16.3/app/src/gambas3/.src/Project/Patch/FPatch.form000066400000000000000000000027301411575327000232750ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,79,71) Text = ("Patch the current project") Icon = Picture["icon:/small/pen"] Arrangement = Arrange.Vertical Spacing = True Margin = True { panSelectPath VBox MoveScaled(2,3,67,8) Spacing = True { Label1 Label MoveScaled(0,0,21,3) Font = Font["Bold"] Text = ("Select patch") } { txtPath ButtonBox MoveScaled(0,4,19,4) Picture = Picture["icon:/small/open"] ReadOnly = True } } { VSplit1 VSplit MoveScaled(2,14,75,42) Expand = True Spacing = True Border = False { gvwHunks GridView MoveScaled(4,5,58,15) Font = Font["Monospace"] Expand = True Mode = Select.Multiple Grid = False } { edtPatch TextEditor MoveScaled(7,24,53,13) Expand = True ReadOnly = True } } { panButton HBox MoveScaled(3,64,59,4) Spacing = True { btnApply Button MoveScaled(0,0,15,4) Enabled = False Text = Shortcut(("Apply"), "A") Picture = Picture["icon:/small/apply"] } { btnRevert Button MoveScaled(16,0,16,4) Enabled = False Text = Shortcut(("Revert"), "R") Picture = Picture["icon:/small/undo"] } { Panel1 Panel MoveScaled(34,0,2,3) Expand = True } { btnClose Button MoveScaled(39,0,16,4) AutoResize = True Text = Shortcut(("Close"), "C") Picture = Picture["icon:/small/close"] } } } gambas-3.16.3/app/src/gambas3/.src/Project/Patch/Patch.class000066400000000000000000000115561411575327000233370ustar00rootroot00000000000000' Gambas class file ' (C) 2013, 2014 Tobias Boege '' Represent a patch hunk Public Struct Hunk Command As String '' Hunk command FromFile As String ToFile As String LineInfo As String '' Line information Active As Boolean Text As String End Struct '' Get the number of hunks Property Read Count As Integer Private $hHunks As Hunk[] Static Private $sIgnoreFile As String Static Public Sub _init() $sIgnoreFile = "/tmp/gambas-patch-ignore" ' Prevent UID/PID leakage File.Save($sIgnoreFile, "") Chmod $sIgnoreFile To "rw-------" File.Save($sIgnoreFile, ".settings\n.action\n.info\n.list\n.startup\n.pot\n") End Static Private Function PrepareOldSource(sOldSource As String) As String Dim sOld As String = File.SetExt(Temp$("a"), "") Dim sOldArchive As String = Temp$("source-archive") & ".tar.gz" Dim sType As String If IsDir(sOldSource) Then If Not Exist(sOldSource &/ ".project") Then Error.Raise(("The directory is not a Gambas project")) Return Null Endif Project.MakeSourcePackageFromTo(sOldSource, sOldArchive) sOldSource = sOldArchive Endif If Right$(sOldSource, 3) = ".gz" Then sType = "z" Else If Right$(sOldSource, 4) = ".bz2" Then sType = "j" Else If Right$(sOldSource, 3) = ".xz" Then sType = "J" Else Error.Raise(("Unsupported source archive format.")) Return Null Endif Mkdir sOld Shell Subst$("tar -&1xf &2 -C &3 --strip-components=1", sType, Shell$(sOldSource), sOld) Wait If Exist(sOldArchive) Then Kill sOldArchive Return sOld End Static Private Function PrepareNewSource() As String Dim sNew As String = File.SetExt(Temp$("b"), "") Dim sNewArchive As String = Temp$("source-archive") & ".tar.gz" Project.MakeSourcePackageTo(sNewArchive) Mkdir sNew Shell Subst$("tar -zxf &1 -C &2 --strip-components=1", sNewArchive, sNew) Wait Kill sNewArchive Return sNew End '' Generate a patch for the old source archive or directory to ascend to the current project's state Static Public Function GenerateForOld(sOldSource As String) As String Dim sOld As String Dim sNew As String Dim sCmd As String Dim sPatch As String sOld = PrepareOldSource(sOldSource) sNew = PrepareNewSource() sCmd = Subst$("cd &1; ", File.Dir(sOld)) sCmd &= Subst$("diff -urNaX &1 &2 &3", $sIgnoreFile, File.Name(sOld), File.Name(sNew)) Shell sCmd To sPatch Shell Subst$("rm -r &1 &2", Shell(sOld), Shell(sNew)) Return sPatch End Public Sub _new(Optional sPath As String) $hHunks = New Hunk[] If Not sPath Then Return Parse(File.Load(sPath)) End '' Parse the patch and add its hunks to the current object Public Sub Parse(sText As String) Dim aLines As String[] Dim iInd As Integer Dim hHunk As Hunk Dim bFirst As Boolean = True Dim bInHeader As Boolean = False hHunk = New Hunk hHunk.Active = True aLines = Split(sText, "\n") For iInd = 0 To aLines.Count - 1 If Left$(aLines[iInd], 4) = "diff" Then GoSub ADD_HUNK bInHeader = True hHunk.Command = aLines[iInd] Else If Left$(aLines[iInd], 3) = "---" Then GoSub ADD_HUNK bInHeader = True hHunk.FromFile = aLines[iInd] Else If Left$(aLines[iInd], 3) = "+++" And If bInHeader Then hHunk.ToFile = aLines[iInd] Else If Left$(aLines[iInd]) = "@" Then GoSub ADD_HUNK bInHeader = True hHunk.LineInfo = aLines[iInd] Else If aLines[iInd] = "" Then Continue Else bInHeader = False Endif hHunk.Text &= aLines[iInd] & "\n" Next ADD_HUNK: If Not bInHeader Then If Not bFirst Then $hHunks.Add(hHunk) hHunk = New Hunk hHunk.Active = True Endif bFirst = False Endif Return End '' Generate a patch file from all activated hunks Public Function MakeText() As String Dim iInd As Integer Dim sText As String For iInd = 0 To $hHunks.Count - 1 If Not $hHunks[iInd].Active Then Continue sText &= $hHunks[iInd].Text Next Return sText End Private Sub DoPatch(Optional sOpt As String = "") Dim sCmd As String Dim sTemp As String = Temp$("current-patch") Dim sBackup As String = Temp$("backup") & "/" Dim sRes As String File.Save(sTemp, MakeText()) Try Mkdir sBackup sCmd = Subst$("cd &1; patch &2 -B &3 -r - ", Shell$(Project.Dir), sOpt, sBackup) sCmd &= Subst$("-bsNp1 <&1", Shell$(sTemp)) Shell sCmd To sRes If Process.LastValue Then If Dir(sBackup).Count Then Shell Subst$("cp -r &1 &2", Dir(sBackup).Join(" "), Shell$(Project.Dir)) Wait Message.Error(("Patch didn't apply:\n") & sRes) Else Project.ReloadAll() Endif Shell "rm -r " & Shell(sBackup) End '' Apply this patch Public Sub Apply() DoPatch() End '' Revert this patch Public Sub Revert() DoPatch("-R") End '' Get a hunk from this patch Public Sub _get(iIndex As Integer) As Hunk Return $hHunks[iIndex] End Private Function Count_Read() As Integer Return $hHunks.Count End gambas-3.16.3/app/src/gambas3/.src/Project/ProjectBox.class000066400000000000000000000261351411575327000233170ustar00rootroot00000000000000' Gambas class file Inherits UserControl Event Click Event DblClick Event ButtonClick Event RemoveClick Static Public ShowButton As Boolean Property ShowPath As Boolean Property Path As String Property Highlight As Boolean Property Selected As Boolean Property ShowAuthors As Boolean Property Read Info As CProjectInfo Property Read Deleted As Boolean Public ShowRemove As Boolean Public Group As String ' for examples Public Template As Boolean Static Private $hRemove As Image Static Private $hRemoveGray As Image Private $hDrawingArea As DrawingArea Private $sPath As String Private $hProjectInfo As CProjectInfo Private $hIcon As Image Private $bShowPath As Boolean Private $bShowAuthors As Boolean Private ICON_SIZE As Integer = Desktop.Scale * 4 Private $bCanHighlight As Boolean = True Private $bHighlight As Boolean Private $hObs As Observer 'Private $iIdealH As Integer Private $iIdealW As Integer Private $bSelected As Boolean Private $sToolTip As String Private $bInsideButton As Boolean Private $bInsideRemove As Boolean Public Sub _new() $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Mouse = Mouse.Pointing $hDrawingArea.Focus = True $hDrawingArea.Tracking = True $hObs = New Observer(Me) As "ProjectItem" If Not $hRemove Then $hRemove = Picture["icon:/small/close"].Image $hRemoveGray = $hRemove.Copy().Desaturate().Lightness(0.5) Endif ' If Not $hGradient Then ' ' $hGradient = New Image(128, 128) ' ' Paint.Begin($hGradient) ' Paint.Brush = Paint.RadialGradient(0, 0, 64, 0, 0, [Color.Merge(Color.LightForeground, Color.TextBackground, 0.8), Color.TextBackground], [0.0, 1.0]) ' Paint.Rectangle(0, 0, 128, 128) ' Paint.Fill ' Paint.End ' ' Endif End Private Sub SetPath(sPath As String) $sPath = sPath $hProjectInfo = New CProjectInfo(sPath) $hIcon = Null $sToolTip = Replace($sPath, System.User.Home, "~") $iIdealW = 0 'Me.H = Me.IdealHeight Me.Refresh End ' Private Sub GetTitle() As String ' ' Dim sTitle As String ' Dim bSelected As Boolean ' ' bSelected = Me.Background = Color.SelectedBackground ' ' With $hProjectInfo ' sTitle = .Title ' If Not sTitle Then sTitle = .Name ' sTitle = "" & .Name & " " & .Version ' sTitle &= Subst("
      ", Hex$(If(bSelected, Color.SelectedForeground, Color.Gradient(Color.TextBackground, Color.TextForeground, 0.75)), 6)) & .Title ' If $bShowAuthors And If .Authors And If .Authors.Count Then ' If .Title Then sTitle &= " - " ' sTitle &= "" & If(.Authors.Count = 1, ("Author"), ("Authors")) & " : " & .Authors.Join(", ") & "" ' Endif ' sTitle &= "" ' If $bShowPath Then sTitle &= Subst("
      ", If(bSelected, "white", "gray")) & Replace($sPath, System.User.Home, "~") & "" ' End With ' ' Return sTitle ' ' End Public Sub DrawingArea_MouseMove() Dim DS As Integer = Desktop.Scale Dim bInButton As Boolean Dim bInRemove As Boolean Dim sTooltip As String If Rect(DS, DS, ICON_SIZE, ICON_SIZE).Contains(Mouse.X, Mouse.Y) Then sTooltip = $sToolTip If sTooltip <> $hDrawingArea.Tooltip Then $hDrawingArea.Tooltip = sTooltip If ShowButton Then bInButton = Rect(0, $hDrawingArea.H - DS * 4, $hDrawingArea.W, DS * 4).Contains(Mouse.X, Mouse.Y) If bInButton <> $bInsideButton Then $bInsideButton = bInButton $hDrawingArea.Refresh Endif If ShowRemove Then bInRemove = Rect($hDrawingArea.W - DS - $hRemove.W, DS, $hRemove.W, $hRemove.H).Contains(Mouse.X, Mouse.Y) If bInRemove <> $bInsideRemove Then $bInsideRemove = bInRemove $hDrawingArea.Refresh Endif End Public Sub DrawingArea_Draw() Dim X, Y, W, H, HT As Integer Dim XS, YS, WS, HS As Integer Dim sText As String Dim P As Integer Dim bSmall As Boolean Dim WT As Integer Dim iCol As Integer Dim iBg As Integer If Not $hProjectInfo Then Return P = Desktop.Scale bSmall = $hDrawingArea.H <= P * 12 X = 1 Y = 1 W = Paint.W - 1 H = Paint.H - 1 XS = X YS = Y WS = W HS = H With $hProjectInfo If Not $hIcon Then $hIcon = Project.StretchIcon(.GetIconPath(), ICON_SIZE) Endif Paint.AntiAlias = False Paint.Rectangle(X, Y, W - 1, H - 1) If $bSelected Then 'Or If $bHighlight Then iBg = Color.Merge(Color.LightBackground, Color.TextBackground) Else If $bHighlight Then iBg = Color.Merge(Color.LightBackground, Color.TextBackground, 0.9) Else iBg = Color.TextBackground 'Color.Merge(Color.TextForeground, Color.TextBackground, 0.97) Endif Paint.Background = iBg Paint.Fill(True) 'Paint.Brush = Paint.RadialGradient(X, Y, Desktop.Scale * 24, X, Y, [Color.Merge(Color.LightForeground, Color.TextBackground, 0.6), Color.Merge(Color.TextForeground, Color.TextBackground, 0.97)], [0.0, 1.0]) 'Paint.Fill(True) 'Paint.Brush = Null 'Paint.DrawImage($hGradient, X, Y, W, W) If $hDrawingArea.HasFocus Or If $bHighlight Then Paint.Background = Color.LightBackground Paint.LineWidth = 2 Else Paint.Background = Color.LightForeground Endif Paint.Stroke Paint.AntiAlias = True Paint.Save X += P Y += P W -= P * 2 H -= P * 2 If ShowButton And If $bHighlight Then H -= P * 2 Paint.Rectangle(X, Y, W, H) Paint.Clip Paint.DrawImage($hIcon, X, Y) iCol = Color.Foreground 'If($bSelected, Color.SelectedForeground, Color.Foreground) X += ICON_SIZE + P If Template Then sText = .GetTranslatedTitle() Else sText = .Name Endif 'Paint.Font = Font["+1"] Paint.Background = iCol 'Color.SetAlpha(iCol, 128) 'Paint.DrawTextShadow(sText, X, Y, W, H, Align.TopLeft) Paint.Font.Bold = True Paint.DrawText(sText, X, Y, W, H, Align.TopLeft) WT = Paint.Font.TextWidth(sText) Paint.Font.Bold = False If Template Then X -= ICON_SIZE + P sText = .GetTranslatedDescription() Paint.Font = Font["-1"] W = W - X - P * 2 H = H - Y - ICON_SIZE sText = Paint.TrimText(sText, W, H) Paint.DrawText(sText, X, Y + ICON_SIZE + P, W, H) Else If bSmall Then Paint.Font.Bold = False sText = " • " & .Version 'Paint.Background = Color.Red 'Paint.DrawTextShadow(sText, X + WT, Y, Paint.W, Paint.H, Align.TopLeft, 4) Paint.DrawText(sText, X + WT, Y, Paint.W, Paint.H, Align.TopLeft) HT = Paint.Font.Height sText = .GetTranslatedDescription() If Not sText Then sText = .GetTranslatedTitle() Paint.Font = Font["-1"] W = Paint.W - X - P * 2 H = Paint.H - Y - HT - P - 3 Paint.DrawText(Paint.TrimText(sText, W, H), X, Y + HT + 3, W, H) Else Paint.Font.Bold = False sText = .Version 'Paint.DrawTextShadow(sText, X + 1, Y + Paint.Font.Height + 1, Paint.W, Paint.H, Align.TopLeft, 4) Paint.DrawText(sText, X, Y + Paint.Font.Height, Paint.W, Paint.H, Align.TopLeft) X -= ICON_SIZE + P sText = .GetTranslatedDescription() If Not sText Then sText = .GetTranslatedTitle() Paint.Font = Font["-1"] W = W - X - P * 2 H = H - Y - ICON_SIZE sText = Paint.TrimText(sText, W, H) Paint.DrawText(sText, X, Y + ICON_SIZE + P, W, H) Endif Paint.Restore End With If ShowButton And If $bHighlight Then X = 0 Y = Paint.H - P * 4 W = Paint.W H = P * 4 Paint.Font.Grade = -1 If $bInsideButton Then Paint.Background = Color.SelectedBackground Paint.DrawTextShadow(("Open in another window") & "…", X + P, Y, W - P * 2, H, Align.Normal) Else Paint.Background = Color.LightForeground Endif Paint.DrawText(("Open in another window") & "…", X + P, Y, W - P * 2, H, Align.Normal) Endif If ShowRemove And If $bHighlight Then Paint.FillRect(Paint.W - $hRemove.W - P - P \ 2, P \ 2, $hRemove.W + P, $hRemove.H + P, iBg) Paint.DrawImage(If($bInsideRemove, $hRemove, $hRemoveGray), Paint.W - $hRemove.W - P, P) Endif Me.Enabled = Not $hProjectInfo.Deleted If Not Me.Enabled Then Paint.FillRect(0, 0, Paint.W, Paint.H, Color.SetAlpha(Style.BackgroundOf($hDrawingArea), 64)) ' If Template And If $sPath = GetParent().Current Then ' Paint.FillRect(0, 0, Paint.W, Paint.H, Color.SetAlpha(Color.SelectedBackground, 128)) ' Endif ' End Public Sub DrawingArea_Enter() If $bCanHighlight And If Me.Enabled Then 'If not $bHighlight Then '$hDrawingArea.Background = Color.LightBackground $bHighlight = True $hDrawingArea.Refresh 'Endif Endif End Public Sub DrawingArea_Leave() If $bHighlight And If Me.Enabled Then '$hDrawingArea.Background = Color.Default $bHighlight = False $hDrawingArea.Refresh Endif End Public Sub DrawingArea_KeyPress() If Key.Code = Key.Space Then Raise Click End ' Private Function Background_Read() As Integer ' ' Return Super.Background ' ' End ' ' Private Sub Background_Write(Value As Integer) ' ' Super.Background = Value ' $hDrawingArea.Background = Color.Default ' ' End Private Function ShowPath_Read() As Boolean Return $bShowPath End Private Sub ShowPath_Write(Value As Boolean) $bShowPath = Value Me.Refresh End Private Function Path_Read() As String Return $sPath End Private Sub Path_Write(Value As String) SetPath(Value) End Private Function Highlight_Read() As Boolean Return $bCanHighlight End Private Sub Highlight_Write(Value As Boolean) $bCanHighlight = Value $hDrawingArea.Mouse = If(Value, Mouse.Pointing, Mouse.Default) End Private Function Info_Read() As CProjectInfo Return $hProjectInfo End Public Sub DrawingArea_MouseUp() If Mouse.Left Then If $bInsideButton Then Raise ButtonClick Else If $bInsideRemove Then Raise RemoveClick Stop Event Else Raise Click Endif $hDrawingArea.Refresh Endif End Public Sub DrawingArea_DblClick() 'If Not Object.IsValid(Me) Then Return If Mouse.Left Then Raise DblClick End Private Function ShowAuthors_Read() As Boolean Return $bShowAuthors End Private Sub ShowAuthors_Write(Value As Boolean) $bShowAuthors = Value $hDrawingArea.Refresh End Public Sub Match(sFilter As String) As Boolean If Not sFilter Then Return True With $hProjectInfo If .Name Like sFilter Then Return True If String.LCase(.GetTranslatedTitle()) Like sFilter Then Return True If .Version Like sFilter Then Return True If $bShowAuthors And If String.LCase(.Authors.Join(" ")) Like sFilter Then Return True If String.LCase(Group) Like sFilter Then Return True If String.LCase(.GetTranslatedDescription()) Like sFilter Then Return True If .Components.Exist(sFilter) Then Return True End With End Private Function Selected_Read() As Boolean Return $bSelected End Private Sub Selected_Write(Value As Boolean) $bSelected = Value $hDrawingArea.Refresh End Private Function Deleted_Read() As Boolean Return $hProjectInfo.Deleted End gambas-3.16.3/app/src/gambas3/.src/Save.module000066400000000000000000000021231411575327000206770ustar00rootroot00000000000000' Gambas module file Public NewFile As Boolean Private $sPath As String Private $bRename As Boolean Public Sub Begin(sPath As String, Optional bKeep As Boolean) $bRename = False $sPath = sPath NewFile = Not Exist(sPath) Try Kill sPath & "~" If Not NewFile Then If bKeep Then Copy sPath To sPath & "~" Else Move sPath To sPath & "~" Endif Endif $bRename = True End Public Sub End() Dim sForm As String VersionControl.UpdatePath($sPath) Try Project.Tree.RefreshKey($sPath) If File.Ext($sPath) = "class" Then sForm = Project.Tree.FindForm(File.BaseName($sPath)) If sForm Then Try Project.Tree.RefreshKey(sForm) Endif Try Project.Tree.SelectKey($sPath) $sPath = "" $bRename = False End Public Function Error() As Boolean Dim sError As String sError = Error.Text & " (" & Error.Where & ")" Debug sError If $bRename Then Try Kill $sPath Try Move $sPath & "~" To $sPath Endif FMain.ShowError("" & ("Cannot save file !") & "\n\n" & sError, $sPath) Try Save.End Return True End gambas-3.16.3/app/src/gambas3/.src/Search/000077500000000000000000000000001411575327000200015ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Search/CGrepResult.class000066400000000000000000000001731411575327000232300ustar00rootroot00000000000000' Gambas class file Public Path As String Public Age As Integer Public Command As String Public Result As CSearchResult[] gambas-3.16.3/app/src/gambas3/.src/Search/CSearchResult.class000066400000000000000000000012131411575327000235340ustar00rootroot00000000000000' Gambas class file Public Path As String Public (File) As String Public (Line) As Integer Public Pos As Integer Public Column As Integer Public Text As String Public Bytes As Integer Public Length As Integer Public Control As String Public {Property} As String Public (Highlight) As String Public RichText As String Public Location As String Public Dark As Boolean Public OnDisk As Boolean Public Sub InitFromLine(sLine As String) As Boolean Dim aResult As String[] aResult = Split(sLine, ":") {Line} = CInt(aResult[0]) Pos = CInt(aResult[1]) Bytes = CInt(aResult[2]) Length = CInt(aResult[3]) Catch Return True End gambas-3.16.3/app/src/gambas3/.src/Search/CSearchTask.class000066400000000000000000000135141411575327000231670ustar00rootroot00000000000000' Gambas class file Inherits Task Public Search As String Public IgnoreCase As Boolean Public WordsOnly As Boolean Public RegularExpression As Boolean Public Where As String Public Update As String[] Public Const ALL_FILES As String = "*" Public Const SOURCE_FILES As String = "$" Public Const DATA_FILES As String = "@" Private $aExt As String[] = ["jpg", "jpeg", "bmp", "gif", "png", "ico", "xpm", "tga", "gambas", "wav", "ogg", "mp3", "mp4", "avi", "webm"] Public Sub Main() Dim sDir As String Dim sFile As String Dim sPath As String Dim sName As String Dim sExt As String Dim aFile As String[] Dim aSort As String[] Application.Priority = 10 If Update Then sDir = "" aFile = Update Else Select Case Where Case ALL_FILES, DATA_FILES sDir = Project.Dir Case SOURCE_FILES sDir = Project.SourceDir Case Else sDir = File.Dir(Where) aFile = [File.Name(Where)] End Select Endif If Not aFile Then ' TODO: Project.Browse 'aFile = RDir(sDir).Sort(gb.Natural) aFile = Project.Browse(sDir, True) aFile.Sort(gb.Natural) aSort = New String[] For Each sPath In aFile aSort.Add(File.Name(sPath)) Next aFile.SortUsing(aSort) Endif For Each sFile In aFile If Right(sFile) = "~" Then Continue sPath = sDir &/ sFile sFile = Mid$(sPath, Len(Project.Dir) + 1) If Left(sFile) = "/" Then sFile = Mid$(sFile, 2) If Left(sFile) = "." And If sFile Not Begins ".public/" Then If Where = DATA_FILES Then Continue If sFile Not Begins ".src/" Then Continue Endif If IsDir(sPath) Then Continue sExt = LCase(File.Ext(sFile)) If $aExt.Exist(sExt) Then Continue sName = File.Name(sPath) If sName Begins "core." Then Continue If sName Begins "vgcore." Then Continue If sName Begins "callgrind.out." Then Continue If sName Begins "cachegrind.out." Then Continue If Not Project.IsTextFile(sPath) Then Continue ' TODO: If bReplace And If Not Access(sPath) Then Continue Print "/" &/ Mid$(sPath, Len(Project.Dir) + 1) ' If sFile Begins ".src/" Then ' FDebugInfo.SetSearchListInfo(sName) ' Else ' FDebugInfo.SetSearchListInfo(sFile) ' Endif GrepFile(sPath) ', bReplace) 'Debug sName Next End Private Sub GrepQuote(sStr As String) As String Dim I As Integer Dim sCar As String Dim sResult As String For I = 1 To String.Len(sStr) sCar = String.Mid$(sStr, I, 1) If Len(sCar) > 1 Or If IsLetter(sCar) Or If IsDigit(sCar) Then sResult &= sCar Else sResult &= "\\" & sCar Endif Next Return sResult End Private Sub GrepFile(sPath As String, Optional bUseReplaceString As Boolean) Dim sText As String Dim aGrep As String[] Dim sGrep As String Dim sFind As String Dim sTemp As String ' Dim iAge As Integer ' Dim hGrepResult As CGrepResult Dim iPos As Integer Dim sSearch As String Dim hFile As Object Dim sResult As String Dim iFilePos As Integer hFile = Project.Files[sPath] If sPath Then If Not hFile Or If Not hFile.IsModified() Then sTemp = sPath 'Project.GetUncompressedPath(sPath, True) Endif Endif If Not sTemp Then Try sText = hFile.GetText() If Error Then Return sTemp = Temp$("grep") File.Save(sTemp, sText) Endif aGrep = ["grep", "-nobs"] If bUseReplaceString Then ' aGrep.Add("-F") ' aGrep.Add("--") ' aGrep.Add(ReplaceString) Else If IgnoreCase Then aGrep.Add("-i") If RegularExpression Then aGrep.Add("-E") Else If WordsOnly Then aGrep.Add("-E") Else aGrep.Add("-F") Endif aGrep.Add("--") sSearch = Search If WordsOnly Then sSearch = "(^|[^_$[:alnum:]])" & GrepQuote(Search) & "($|[^_$[:alnum:]])" aGrep.Add(sSearch) Endif aGrep.Add(sTemp) ' If sPath Then ' hGrepResult = $cGrepCache[sPath] ' ' If hGrepResult Then ' Try iAge = hFile.Age ' If iAge = hGrepResult.Age Then ' If aGrep.Join("\n") = hGrepResult.Command Then ' Return hGrepResult.Result ' Endif ' Endif ' Endif ' Endif 'grep -nR -F -I -i -w -ob --exclude=*~ --exclude-dir=.svn -s -- "Date" * .src Exec aGrep To sGrep For Each sFind In Split(sGrep, "\n", "", True) If hFile Then ' If hFile Is FOutput Then ' hResult.Path = "" ' hResult.File = "Console" ' Else 'hResult.Path = sPath ''hResult.File = hFile.Name 'Endif Else 'hResult.Path = sPath ''hResult.File = If(Project.IsSourcePath(sPath), File.BaseName(sPath), File.Name(sPath)) Endif 'hResult.Highlight = TextEditor.GetModeFromPath(sPath) iPos = InStr(sFind, ":") If iPos = 0 Then Continue sResult = CStr(CInt(Left(sFind, iPos - 1))) sFind = Mid$(sFind, iPos + 1) iPos = InStr(sFind, ":") If iPos = 0 Then Continue iFilePos = CInt(Left(sFind, iPos - 1)) sFind = Mid$(sFind, iPos + 1) If WordsOnly Then If IgnoreCase Then If String.LCase(sFind) Not Begins String.LCase(Search) Then iFilePos += String.Len(String.Left(sFind)) Else If sFind Not Begins Search Then iFilePos += String.Len(String.Left(sFind)) Endif sFind = Search Endif sResult &= ":" & CStr(iFilePos) sResult &= ":" & CStr(Len(sFind)) & ":" & CStr(String.Len(sFind)) '& ":" & sFind Print sResult Flush 'Sleep 0.005 Next ' If sPath Then ' If hFile Then Try iAge = hFile.Age ' hGrepResult = New CGrepResult ' With hGrepResult ' .Result = aResult.Copy() ' .Age = iAge ' .Path = sPath ' .Command = aGrep.Join("\n") ' End With ' $cGrepCache[sPath] = hGrepResult ' Endif End gambas-3.16.3/app/src/gambas3/.src/Search/FSearch.class000066400000000000000000001026561411575327000223550ustar00rootroot00000000000000' Gambas class file Public IgnoreCase As Boolean Public RegularExpression As Boolean Public IgnoreStrings As Boolean Public IgnoreComments As Boolean Public WordsOnly As Boolean Public CurrentProcedure As Boolean Public CurrentProcedureName As String Public SearchString As String Public ReplaceString As String Public BrowseTimeStamp As Integer Public OnlySource As Boolean Public OnlyData As Boolean Private $hCurrent As Object Private $sGrep As String Private $bReplace As Boolean 'Private $aBrowse As New CSearchResult[] Private $bCancel As Boolean Private $cGrepCache As New Collection Private $cRefreshBrowse As New Collection Private $hFont As Font Private $CW As Float Private $hStyle As TextHighlighterStyle[] Private gvwFind As GridView Private Const GO_FORWARD As Integer = 0 Private Const GO_BACKWARD As Integer = 1 Private Const DO_REPLACE As Integer = 2 Private Const DO_ALL As Integer = 4 Private Enum SEARCH_STRING, SEARCH_REPLACE, SEARCH_AFTER_REPLACE, SEARCH_UPDATE Private $hTask As CSearchTask Private $sTaskBuffer As String Private $sTaskPath As String Private $bTaskOnDisk As Boolean Private $aResult As New CSearchResult[] Private $iTaskIndex As Integer Private $sTaskFullPath As String Private $bTaskUpdate As Boolean Private $bReplaceAll As Boolean Private $iReplaceFrom As Integer Private $bIgnoreFileChange As Boolean Private $nReplace As Integer Private $bUseReplaceString As Boolean Public Sub _new() Me.Utility = Settings["/UseUtilityWindows", 1] gvwFind = FDebugInfo.GetSearchList() Object.Attach(gvwFind, Me, "gvwFind") lblMessage.Padding = Desktop.Scale ReadConfig End Public Sub Form_Open() Settings.Read(Me) chkCaseSensitive.Value = Settings["/FSearch/CaseSensitive", False] 'radCurrentProcedure.Value = Settings["/FSearch/CurrentProcedure", False] chkHighlight.Value = Settings["/FSearch/Highlight", False] chkIgnoreComments.Value = Settings["/FSearch/IgnoreComments", False] chkIgnoreStrings.Value = Settings["/FSearch/IgnoreStrings", False] chkRegularExpression.Value = Settings["/FSearch/RegularExpression", False] chkWordsOnly.Value = Settings["/FSearch/WordsOnly", False] 'radSourceFileOnly.Value = Settings["/FSearch/SourceOnly", False] gvwFind_Font lblMessage.Hide End Public Sub Form_Close() Settings.Write(Me) Settings["/FSearch/CaseSensitive"] = CBool(chkCaseSensitive.Value) 'Settings["/FSearch/CurrentProcedure"] = CBool(radCurrentProcedure.Value) Settings["/FSearch/Highlight"] = CBool(chkHighlight.Value) Settings["/FSearch/IgnoreComments"] = CBool(chkIgnoreComments.Value) Settings["/FSearch/IgnoreStrings"] = CBool(chkIgnoreStrings.Value) Settings["/FSearch/RegularExpression"] = CBool(chkRegularExpression.Value) Settings["/FSearch/WordsOnly"] = CBool(chkWordsOnly.Value) 'Settings["/FSearch/SourceOnly"] = CBool(radSourceFileOnly.Value) End Public Sub ReadConfig() Dim I As Integer Project.SetSmallFont(gvwFind) $hFont = Font[Settings["/Editor/Font", Project.DEFAULT_FONT]] While $hFont.Height > gvwFind.Font.Height Dec $hFont.Size If $hFont.Size < 6 Then Break Wend $CW = Paint._EstimateFixedFontCharWidth($hFont) $hStyle = MTheme.GetStyles() For I = 0 To $aResult.Max $aResult[I].RichText = "" Next gvwFind.Refresh End Public Sub UpdateTitle() Dim sWhere As String ' If $hCurrent Is FOutput Then ' sWhere = ("Console") If $hCurrent Then sWhere = $hCurrent.Title Else sWhere = ("Project") Endif Me.Title = ("Search & Replace") & " - " & sWhere End Public Sub Update(Optional bForce As Boolean) Dim bCode As Boolean 'Dim hWindow As Window Dim bAllProject As Boolean $hCurrent = Project.ActiveForm If Not Me.Visible And If Not bForce Then Return ' Try hWindow = Application.ActiveControl.Window ' If hWindow = Me Then Return ' $hCurrent = hWindow If $hCurrent Then If $hCurrent Is FEditor Or If $hCurrent Is FTextEditor Then bCode = $hCurrent.GetEditor().Highlight Endif radCurrentProcedure.Enabled = bCode radCurrentFile.Enabled = True 'radCurrentFile.Value = True Else bAllProject = True radCurrentProcedure.Enabled = False radCurrentFile.Enabled = False Endif UpdateReplaceState If radCurrentProcedure.Value And If Not radCurrentProcedure.Enabled Then radCurrentFile.Value = True Endif If radCurrentFile.Value And If Not radCurrentFile.Enabled Then radEverywhere.Value = True Endif If Project.IsFake() Then radSourceFileOnly.Enabled = False radDataFileOnly.Enabled = False radEverywhere.Enabled = False If radSourceFileOnly.Value Or If radEverywhere.Value Or If radDataFileOnly.Value Then radCurrentFile.Value = True Endif UpdateTitle End Public Sub Form_Show() Update() End Public Sub Form_Activate() Update() RefreshBrowse() End Public Sub cmbSearch_Activate() If btnNext.Visible Then btnNext.Value = True Else btnBrowse.Value = True Endif End Public Sub cmbReplace_Activate() If btnReplace.Visible Then btnReplace.Value = True Else If btnReplaceAll.Visible Then btnReplaceAll.Value = True Endif End Private Sub ShowMessage(sMsg As String, hCtrl As Control) If Me.Visible Then lblMessage.Text = sMsg lblMessage.Show Else Project.SetMessage(sMsg) Endif hCtrl.SetFocus End Private Sub GrepQuote(sStr As String) As String Dim I As Integer Dim sCar As String Dim sResult As String For I = 1 To String.Len(sStr) sCar = String.Mid$(sStr, I, 1) If Len(sCar) > 1 Or If IsLetter(sCar) Or If IsDigit(sCar) Then sResult &= sCar Else sResult &= "\\" & sCar Endif Next Return sResult End Private Sub GrepFile(hFile As Object, Optional sPath As String, Optional bUseReplaceString As Boolean) As CSearchResult[] Dim sText As String Dim aGrep As String[] Dim aResult As New CSearchResult[] Dim sFind As String Dim hResult As CSearchResult Dim sTemp As String Dim iAge As Integer Dim hGrepResult As CGrepResult Dim iPos As Integer Dim sSearch As String If sPath Then If Not hFile Or If Not hFile.IsModified() Then sTemp = sPath Endif Endif If Not sTemp Then Try sText = hFile.GetText() If Error Then Return aResult sTemp = Temp$("grep") File.Save(sTemp, sText) Endif aGrep = ["grep", "-nobs"] If bUseReplaceString Then aGrep.Add("-F") aGrep.Add("--") aGrep.Add(ReplaceString) Else If IgnoreCase Then aGrep.Add("-i") If RegularExpression Then aGrep.Add("-E") Else If WordsOnly Then aGrep.Add("-E") Else aGrep.Add("-F") Endif aGrep.Add("--") sSearch = SearchString If WordsOnly Then sSearch = "(^|[^_$[:alnum:]])" & GrepQuote(SearchString) & "($|[^_$[:alnum:]])" aGrep.Add(sSearch) Endif aGrep.Add(sTemp) If sPath Then hGrepResult = $cGrepCache[sPath] If hGrepResult Then Try iAge = hFile.Age If iAge = hGrepResult.Age Then If aGrep.Join("\n") = hGrepResult.Command Then Return hGrepResult.Result Endif Endif Endif Endif 'grep -nR -F -I -i -w -ob --exclude=*~ --exclude-dir=.svn -s -- "Date" * .src Exec aGrep To $sGrep 'For Read Write As "Grep" ' Print #hProcess, sText; ' Close #hProcess ' Repeat ' Wait 0.01 ' Until hProcess.State <> Process.Running For Each sFind In Split($sGrep, "\n", "", True) hResult = New CSearchResult If hFile Then ' If hFile Is FOutput Then ' hResult.Path = "" ' hResult.File = "Console" ' Else hResult.Path = sPath hResult.File = hFile.Name 'Endif Else hResult.Path = sPath hResult.File = If(Project.IsSourcePath(sPath), File.BaseName(sPath), File.Name(sPath)) Endif hResult.Highlight = TextEditor.GetModeFromPath(sPath) iPos = InStr(sFind, ":") If iPos = 0 Then Continue hResult.Line = CInt(Left(sFind, iPos - 1)) sFind = Mid$(sFind, iPos + 1) iPos = InStr(sFind, ":") If iPos = 0 Then Continue hResult.Pos = CInt(Left(sFind, iPos - 1)) sFind = Mid$(sFind, iPos + 1) If WordsOnly Then If IgnoreCase Then If String.LCase(sFind) Not Begins String.LCase(SearchString) Then hResult.Pos += String.Len(String.Left(sFind)) Else If sFind Not Begins SearchString Then hResult.Pos += String.Len(String.Left(sFind)) Endif sFind = SearchString Endif hResult.Bytes = Len(sFind) hResult.Length = String.Len(sFind) aResult.Add(hResult) Next If sPath Then If hFile Then Try iAge = hFile.Age hGrepResult = New CGrepResult With hGrepResult .Result = aResult.Copy() .Age = iAge .Path = sPath .Command = aGrep.Join("\n") End With $cGrepCache[sPath] = hGrepResult Endif Return aResult End Private Sub InitSearch() As Boolean SearchString = cmbSearch.Text ReplaceString = cmbReplace.Text Project.StoreCombo(cmbSearch) Project.StoreCombo(cmbReplace) IgnoreCase = Not chkCaseSensitive.Value IgnoreStrings = chkIgnoreStrings.Value IgnoreComments = chkIgnoreComments.Value RegularExpression = chkRegularExpression.Value WordsOnly = chkWordsOnly.Value CurrentProcedure = radCurrentProcedure.Value OnlySource = radSourceFileOnly.Value OnlyData = radDataFileOnly.Value If Not SearchString Then Return True End Private Sub DoReplace(aResult As CSearchResult[], iInd As Integer, sReplace As String) Dim iAdd As Integer iAdd = Len(sReplace) - aResult[iInd].Bytes aResult.Remove(iInd) While iInd < aResult.Count aResult[iInd].Pos += iAdd Inc iInd Wend End Private Sub Run(iAction As Integer) Dim aResult As CSearchResult[] Dim iCurrentPos, iPos, iInd As Integer Dim iTry As Integer Dim nReplace As Integer Dim hEditor As FEditor Dim hTextEditor As TextEditor Dim iLastPos As Integer If InitSearch() Then Return ResetBrowse If CurrentProcedure Then If $hCurrent Is FEditor Then hEditor = $hCurrent CurrentProcedureName = hEditor.GetProcAt(hEditor.GetEditor().Line) Endif Endif Try hTextEditor = $hCurrent.GetEditor() If Error Then Return aResult = GrepFile($hCurrent) If iAction And DO_REPLACE And If iAction And DO_ALL Then Try hTextEditor.Begin While aResult.Count If $hCurrent.SetPosition(aResult[0], True) Then aResult.Remove(0) Else $hCurrent.SetPosition(aResult[0], False) If Not $hCurrent.Replace(ReplaceString) Then Inc nReplace DoReplace(aResult, 0, ReplaceString) Endif Endif Wend Try hTextEditor.End Else iCurrentPos = $hCurrent.GetPosition() iLastPos = iCurrentPos If Not $hCurrent.GetSelection() Or If iAction And DO_REPLACE Then If iAction And GO_BACKWARD Then Inc iCurrentPos Else Dec iCurrentPos Endif Endif If aResult.Count Then For iTry = 1 To aResult.Count If iAction And GO_BACKWARD Then For iInd = aResult.Max To 0 Step -1 iPos = aResult[iInd].Pos If iPos < iCurrentPos Then Break Next If iPos >= iCurrentPos Then iInd = aResult.Max iPos = aResult[iInd].Pos Endif Else For iInd = 0 To aResult.Max iPos = aResult[iInd].Pos If iPos > iCurrentPos Then Break Next If iPos <= iCurrentPos Then iInd = 0 iPos = aResult[iInd].Pos Endif Endif If $hCurrent.SetPosition(aResult[iInd], True) Then Goto FIND_NEXT $hCurrent.SetPosition(aResult[iInd], False) If iAction And DO_REPLACE And If iPos = iLastPos Then If Not $hCurrent.Replace(ReplaceString) Then DoReplace(aResult, iInd, ReplaceString) Endif iAction = iAction And Not DO_REPLACE Else Return Endif FIND_NEXT: iCurrentPos = iPos Next Endif Endif If iAction And DO_REPLACE And If iAction And DO_ALL Then If nReplace = 0 Then ShowMessage(("Search string cannot be found."), cmbReplace) Else If nReplace = 1 Then ShowMessage(("Search string replaced once."), cmbReplace) Else ShowMessage(Subst(("Search string replaced &1 times."), nReplace), cmbReplace) Endif Else ShowMessage(("Search string cannot be found."), cmbSearch) Endif End ' Private Sub UpdateSpan(iRow As Integer) ' ' Dim hResult As CSearchResult ' Dim iLastFile, iLastLine As Integer ' ' If iRow >= $aBrowse.Count Then Return ' ' iLastFile = iRow ' iLastLine = iRow ' ' gvwFind[iRow, 0].RowSpan = 1 ' gvwFind[iRow, 1].RowSpan = 1 ' ' Inc iRow ' ' While iRow < $aBrowse.Count ' ' hResult = $aBrowse[iRow] ' ' If hResult.File <> $aBrowse[iLastFile].File Then ' iLastFile = iRow ' iLastLine = iRow ' Else If hResult.Line <> $aBrowse[iLastLine].Line Then ' iLastLine = iRow ' Endif ' gvwFind[iLastFile, 0].RowSpan = iRow - iLastFile + 1 ' gvwFind[iLastLine, 1].RowSpan = iRow - iLastLine + 1 ' ' Inc iRow ' ' Wend ' ' End Public Sub AddFound(hResult As CSearchResult, Optional iIndex As Integer = -1) If iIndex < 0 Then iIndex = $aResult.Count $aResult.Add(hResult) Else $aResult.Add(hResult, iIndex) Endif If iIndex > 0 Then If hResult.File = $aResult[iIndex - 1].File Then hResult.Dark = $aResult[iIndex - 1].Dark Else hResult.Dark = Not $aResult[iIndex - 1].Dark Endif Endif ' iInd = iIndex ' While iInd > 0 ' If $aBrowse[iInd - 1].File <> hResult.File Then Break ' Dec iInd ' Wend ' gvwFind[iInd, 0].RowSpan = iIndex - iInd + 1 ' ' iInd = iIndex ' While iInd > 0 ' If $aBrowse[iInd - 1].File <> hResult.File Then Break ' If $aBrowse[iInd - 1].Line <> hResult.Line Then Break ' Dec iInd ' Wend ' gvwFind[iInd, 1].RowSpan = iIndex - iInd + 1 End Private Sub FindPathInBrowseResult(sPath As String) As Integer Dim iInd As Integer For iInd = 0 To $aResult.Max If $aResult[iInd].Path = sPath Then Repeat $aResult.Remove(iInd) If iInd >= $aResult.Count Then Break Until $aResult[iInd].Path <> sPath Return iInd Endif Next Return -1 End Private Sub UpdateSearchList() Dim sMsg As String gvwFind.Rows.Count = $aResult.Count gvwFind.Refresh If $aResult.Count = 0 Then sMsg = "" Else If $aResult.Count = 1 Then sMsg = ("One match") Else sMsg = Subst(("&1 matches"), $aResult.Count) Endif If $nReplace Then If sMsg Then sMsg &= " ‒ " If $nReplace = 1 Then sMsg &= ("One replacement") Else sMsg &= Subst(("&1 replacements"), $nReplace) Endif Endif FDebugInfo.SetSearchListInfo(sMsg) End ' Private Sub BrowseFile(sPath As String, bReplace As Boolean, Optional iIndex As Integer = -1, Optional bRefresh As Boolean) ' ' Dim hFile As Object ' Dim aResult As CSearchResult[] ' Dim iInd As Integer ' Dim hResult As CSearchResult ' Dim iStart As Integer ' ' If iIndex < 0 Then ' iStart = $aResult.Count ' Else ' iStart = iIndex ' Endif ' ' hFile = Project.Files[sPath] ' aResult = GrepFile(hFile, sPath) ' If aResult.Count = 0 Then Return ' ' Try hFile = Project.LoadFile(sPath) ' If Not hFile Then Return ' ' If bReplace Then ' ' For iInd = aResult.Max DownTo 0 ' hResult = aResult[iInd] ' If hFile.SetPosition(hResult) Then Continue ' hFile.Replace(ReplaceString) ' Next ' ' aResult = GrepFile(hFile, sPath, True) ' ' Endif ' ' For iInd = 0 To aResult.Max ' hResult = aResult[iInd] ' If Not hFile.SetPosition(hResult, True) Then ' hResult.Path = sPath ' AddFound(hResult, iIndex) ' If bRefresh Then ' If iIndex >= 0 Then gvwFind.Rows[iIndex].Refresh ' Endif ' If iIndex >= 0 Then Inc iIndex ' Endif ' Next ' ' UpdateSearchList ' ' End Public Sub ResetBrowse(Optional bKeepResult As Boolean) If $hTask Then $hTask.Stop() timFillList.Stop If bKeepResult Then Return $bReplaceAll = False $bUseReplaceString = False 'gvwFind.Rows.Count = 0 gvwFind.Clear gvwFind.Rows.Height = Max(gvwFind.Font.Height, $hFont.Height) + 4 $aResult.Clear ClearCache UpdateSearchList End ' Private Sub Browse(Optional bReplace As Boolean, Optional bAgain As Boolean) ' ' Dim sDir As String ' Dim sFile As String ' Dim sPath As String ' Dim sName As String ' Dim sExt As String ' Dim fTime As Float ' ' If Not bAgain Then ' If InitSearch() Then Return ' Else ' If Not SearchString Then Return ' Endif ' 'OnlySource = bOnlySource ' ' InBrowse = True ' ' CurrentProcedure = False ' BrowseTimeStamp = Project.TimeStamp ' ' FDebugInfo.ShowSearchList ' ' Inc Application.Busy ' FDebugInfo.EnableGUI(False) ' 'tabSearch.Enabled = False ' ' 'btnClose.Text = ("Cancel") ' $bCancel = False ' ' ResetBrowse ' ' Inc FMain.NoMessage ' ' If OnlySource Then ' sDir = Project.Dir &/ ".src" ' Else ' sDir = Project.Dir ' Endif ' ' fTime = Timer ' ' For Each sFile In RDir(sDir).Sort() ' ' If Left(sFile) = "." And If sFile Not Begins ".public/" Then ' If OnlyData Then Continue ' If sFile Not Begins ".src/" Then Continue ' Endif ' ' If Right(sFile) = "~" Then Continue ' ' sPath = sDir &/ sFile ' ' If IsDir(sPath) Then Continue ' If InStr(sPath, "/.svn/") Then Continue ' ' sExt = UCase(File.Ext(sFile)) ' If $aExt.Exist(sExt) Then Continue ' ' sName = File.Name(sPath) ' If sName Begins "core." Then Continue ' If sName Begins "vgcore." Then Continue ' If sName Begins "callgrind.out." Then Continue ' If sName Begins "cachegrind.out." Then Continue ' ' If Not Project.IsTextFile(sPath) Then Continue ' ' If bReplace And If Not Access(sPath) Then Continue ' ' If sFile Begins ".src/" Then ' FDebugInfo.SetSearchListInfo(sName) ' Else ' FDebugInfo.SetSearchListInfo(sFile) ' Endif ' ' BrowseFile(sPath, bReplace) ' If (Timer - fTime) > 0.2 Then ' fTime = Timer ' Wait 0.01 ' Endif ' If $bCancel Then Break ' ' 'Debug sName ' Next ' ' gvwFind.Columns[0].Width = -1 ' gvwFind.Columns[1].Width = -1 ' ' If bReplace Then ' SearchString = ReplaceString ' IgnoreCase = False ' RegularExpression = False ' WordsOnly = False ' Endif ' ' Finally ' ' Dec FMain.NoMessage ' ' UpdateSearchList ' ' 'lblBrowse.Hide ' FDebugInfo.EnableGUI(True) ' 'btnClose.Text = ("Close") ' Dec Application.Busy ' ' InBrowse = False ' ' End Public Sub btnNext_Click() Run(GO_FORWARD) End Public Sub btnPrevious_Click() Run(GO_BACKWARD) End Public Sub btnClose_Click() Me.Close End Public Sub Cancel() $bCancel = True End Public Sub FindNext() Update(True) Run(GO_FORWARD) End Public Sub FindPrevious() Update(True) Run(GO_BACKWARD) End Public Sub FindProject(sText As String) 'WakeUp(False) cmbSearch.Text = sText radEverywhere.Value = True Search(SEARCH_STRING) End Public Sub BrowseAgain() Search(SEARCH_STRING) End ' Public Sub UpdateSearchString(sText As String) ' ' If sText <> cmbSearch.Text Then cmbSearch.Text = sText ' ' End Private Sub ShowString() Dim hForm As Object Dim bIgnoreCase As Boolean = chkCaseSensitive.Value = False Dim bWordOnly As Boolean = chkWordsOnly.Value Dim sStr As String If chkHighlight.Value And If Me.Visible And If chkRegularExpression.Value = False Then sStr = cmbSearch.Text For Each hForm In Project.Files Try hForm.OnShowString(sStr, bIgnoreCase, bWordOnly) Next End Public Sub cmbSearch_Change() 'If Not cmbSearch.Text Then Stop 'FMain.UpdateSearchString(cmbSearch.Text) ShowString lblMessage.Hide End Public Sub OnNewForm(hForm As Object) Dim sStr As String If chkHighlight.Value And If Me.Visible And If chkRegularExpression.Value = False Then sStr = cmbSearch.Text Try hForm.OnShowString(sStr, chkCaseSensitive.Value = False, chkWordsOnly.Value) End Public Sub chkCaseSensitive_Click() ShowString End Public Sub chkHighlight_Click() ShowString End Public Sub btnReplace_Click() Run(GO_FORWARD + DO_REPLACE) End Public Sub btnReplaceAll_Click() If Message.Question(("Do you really want to replace every string?"), ("Replace"), ("Cancel")) <> 1 Then Return If btnBrowse.Visible Then Search(SEARCH_REPLACE) Else Run(GO_FORWARD + DO_REPLACE + DO_ALL) Endif End Public Sub WakeUp(bReplace As Boolean, Optional bKeepSearchIn As Boolean) Dim sFind As String $bReplace = bReplace Me.Show If Not bKeepSearchIn Then radCurrentFile.Value = True Update() If Not $hCurrent Is FForm Then Try sFind = $hCurrent.GetSelection() Endif If $bReplace And If sFind Then cmbReplace.SelectAll cmbReplace.SetFocus Else cmbSearch.SelectAll cmbSearch.SetFocus Endif If sFind Then cmbSearch.Text = sFind cmbSearch.SelectAll Endif ShowString End Public Sub Form_Hide() If Not FMain.Enabled Then $bCancel = True ShowString End Public Sub btnBrowse_Click() 'Browse(False) Search(SEARCH_STRING) End Public Sub gvwFind_Font() gvwFind.Rows.Height = Max(gvwFind.Font.Height, $hFont.Height) + 4 gvwFind.Columns[0].Width = -1 gvwFind.Columns[1].Width = -1 gvwFind.Columns[0].Width = Max(gvwFind.Columns[0].Width, Desktop.Scale * 20) gvwFind.Columns[1].Width = Max(gvwFind.Columns[1].Width, Desktop.Scale * 20) gvwFind.Refresh End Public Sub gvwFind_Draw(X As Integer, Y As Integer, (Width) As Integer, Height As Integer, Row As Integer, Column As Integer) Dim hResult As CSearchResult Dim sText As String Dim iCol As Integer Dim XX As Integer Dim WW As Integer If Column <> 4 Then Return hResult = $aResult[Row] sText = hResult.Text iCol = hResult.Column Paint.Font = $hFont X += Desktop.Scale \ 2 If hResult.Highlight And Len(sText) < 1024 Then If $CW Then XX = $CW * iCol WW = $CW * hResult.Length X -= Max(0, XX - $CW * 40) Else XX = $hFont.TextWidth(String.Left(sText, iCol)) WW = $hFont.TextWidth(String.Left(sText, iCol + hResult.Length)) - XX X -= Max(0, XX - $hFont.TextWidth("0") * 40) Endif Paint.FillRect(X + XX, Y, WW, Height, $hStyle[Highlight.Highlight].Color) TextHighlighter[hResult.Highlight].Paint(sText, X, Y, $hStyle) Else If iCol > 40 Then sText = String.Mid$(sText, iCol - 40) iCol = 41 Endif If $CW Then XX = $CW * iCol WW = $CW * hResult.Length Else XX = $hFont.TextWidth(String.Left(sText, iCol)) WW = $hFont.TextWidth(String.Left(sText, iCol + hResult.Length)) - XX Endif Paint.FillRect(X + XX, Y, WW, Height, $hStyle[Highlight.Highlight].Color) Paint.Background = $hStyle[Highlight.Normal].Color Paint.DrawText(sText, X, Y + $hFont.Ascent) Endif ' If $CW And If hResult.Highlight And If iLen < 1024 Then ' ' sText = hResult.RichText ' ' If Not sText Then ' sText = TextHighlighter[TextEditor.GetModeFromPath(hResult.Path)].ToRichText(hResult.Text, $hStyle) ' hResult.RichText = sText ' Endif ' ' bRichText = True ' ' Endif ' ' Paint.Font = $hFont ' ' ' If bRichText Then ' ' If iCol >= 40 Then ' ' X -= (iCol - 40) * $CW ' ' Endif ' ' Else ' If iCol >= 40 Then ' sText = String.Mid$(sText, iCol - 39) ' iCol = 40 ' Endif ' 'Endif ' ' If System.RightToLeft Then ' X -= -1000000 ' Width += 1000000 ' Width -= Desktop.Scale \ 2 ' Else ' X += Desktop.Scale \ 2 ' Width = 1000000 ' If $CW Then ' XX = X + $CW * iCol '$hFont.TextWidth(String.Left(sText, iCol)) ' WW = $CW * hResult.Length '$hFont.TextWidth(String.Mid$(sText, iCol + 1, hResult.Length)) ' Else ' XX = X + $hFont.TextWidth(String.Left(sText, iCol)) ' WW = $hFont.TextWidth(String.Mid$(sText, iCol + 1, hResult.Length)) ' Endif ' Endif ' ' Paint.FillRect(XX, Y, WW, Height, $hStyle[Highlight.Highlight].Color) ' ' Paint.Background = $hStyle[Highlight.Normal].Color ' ' If bRichText Then ' Paint.DrawRichText(sText, X, Y, Width, Height, Align.Normal) ' Else ' Paint.DrawText(sText, X, Y, Width, Height, Align.Normal) ' Endif End Public Sub gvwFind_Data(Row As Integer, Column As Integer) Dim hResult As CSearchResult Dim iCol As Integer If Row > $aResult.Max Then Return With gvwFind.Data hResult = $aResult[Row] Select Case Column Case 0 .Text = hResult.File .Alignment = Align.Normal .Picture = Project.GetFileIcon(Project.Dir &/ hResult.Path, 16) Case 1 .Text = hResult.Location .Alignment = Align.Normal Case 2 .Text = CStr(hResult.Line) & " " .Alignment = Align.Right Case 3 .Text = CStr(hResult.Column + 1) & " " .Alignment = Align.Right End Select If Column = 4 Then iCol = $hStyle[Highlight.Background].Color 'If hResult.Dark Then iCol = Color.Merge(iCol, $hStyle[Highlight.Normal].Color, 0.05) .Background = iCol Else If hResult.Dark Then .Background = Color.Merge(Color.TextBackground, Color.TextForeground, 0.05) Endif End With End Public Sub gvwFind_Click() gvwFind_Select End Public Sub gvwFind_Select() Dim hFind As CSearchResult Dim hForm As Object If $aResult.Count = 0 Then Return If gvwFind.Row < 0 Then Return If Not gvwFind.Rows[gvwFind.Row].Selected Then Return hFind = $aResult[gvwFind.Row] Try hForm = Project.OpenFile(Project.Dir &/ hFind.Path) If Not hForm Then Return Project.Activate(hForm) hForm.SetPosition(hFind, False) gvwFind.ScrollX = 0 Me.Hide End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then If IsSearching() Then Cancel Else Me.Close Endif Else If Key.Code = Key.F3 Then btnNext.Value = True Endif End Private Sub ClearCache() $cGrepCache.Clear $cRefreshBrowse.Clear timRefresh.Stop End Public Sub OnProjectChange() ClearCache gvwFind.Rows.Count = 0 gvwFind.Hide $aResult.Clear Update(True) End Public Sub OnFileChange(sPath As String) 'If Not $cGrepCache.Exist(sPath) Then Return If $bIgnoreFileChange Then Return 'Debug sPath $cRefreshBrowse[sPath] = True timRefresh.Restart End Public Sub RefreshBrowse() Dim sPath As String Dim aPath As String[] If Not FDebugInfo.IsSearchListVisible() Then Return If $cRefreshBrowse.Count = 0 Then Return If IsSearching() Then Return Object.Lock(gvwFind) aPath = New String[] For Each $cRefreshBrowse sPath = $cRefreshBrowse.Key $cGrepCache[sPath] = Null aPath.Add(sPath) Next If aPath.Count Then Search(SEARCH_UPDATE, aPath) $cRefreshBrowse.Clear Object.Unlock(gvwFind) gvwFind.Refresh gvwFind.ScrollX = 0 timRefresh.Stop BrowseTimeStamp = Project.TimeStamp UpdateSearchList Catch Debug Error.Text Error Error.Backtrace.Join("\n") End Public Sub timRefresh_Timer() RefreshBrowse End Public Sub UpdateReplaceState() Dim bEnable As Boolean If radEverywhere.Value Or If radSourceFileOnly.Value Or If radDataFileOnly.Value Then bEnable = Not Project.Running btnReplaceAll.Enabled = bEnable cmbReplace.Enabled = bEnable Else bEnable = Not Project.Running If $hCurrent And If $hCurrent.ReadOnly Then bEnable = False btnReplace.Enabled = bEnable btnReplaceAll.Enabled = bEnable cmbReplace.Enabled = bEnable Endif End Public Sub OnProjectDebug() UpdateReplaceState End Public Sub radSearch_Click() btnBrowse.Visible = radEverywhere.Value Or radSourceFileOnly.Value Or radDataFileOnly.Value Or radCurrentFile.Value btnReplace.Visible = Not (radEverywhere.Value Or radSourceFileOnly.Value Or radDataFileOnly.Value) btnNext.Visible = btnReplace.Visible btnPrevious.Visible = btnReplace.Visible UpdateReplaceState cmbSearch.SelectAll cmbSearch.SetFocus End ' Public Sub cmbSearch_KeyPress() ' ' If Key.Code = Key.Down Then ' Try cmbSearch.Text = cmbSearch[cmbSearch.Find(cmbSearch.Text) - 1].Text ' Stop Event ' Else If Key.Code = Key.Up Then ' Try cmbSearch.Text = cmbSearch[cmbSearch.Find(cmbSearch.Text) + 1].Text ' Stop Event ' Endif ' ' End Public Sub chkWordsOnly_Click() ShowString End Public Sub chkRegularExpression_Click() ShowString End Public Sub GetHighlightStyle() As TextHighlighterStyle[] Return $hStyle End Public Sub IsSearching() As Boolean Return timFillList.Enabled End Public Sub SearchTask_Read(Data As String) $sTaskBuffer &= Data timFillList.Start End Public Sub timFillList_Timer() Dim sLine As String Dim hResult As CSearchResult Dim hFile As Object Dim fTimer As Float Dim iPos As Integer Dim bUndo As Boolean Dim hNewFile As Object fTimer = Timer $bIgnoreFileChange = True While (Timer - fTimer) < 0.02 If $iReplaceFrom > 0 Then Dec $iReplaceFrom hResult = $aResult[$iReplaceFrom] hNewFile = Project.LoadFile(Project.Dir &/ hResult.Path) If hNewFile <> hFile Then If bUndo Then Try hFile.GetEditor().End bUndo = False Endif hFile = hNewFile Endif If Not hFile Then Continue If hFile.SetPosition(hResult) Then Continue If Not bUndo Then Try hFile.GetEditor().Begin bUndo = True Endif If Not hFile.Replace(ReplaceString) Then hResult.Text = String.Left(hResult.Text, hResult.Column) & ReplaceString & String.Mid(hResult.Text, hResult.Column + hResult.Length + 1) hResult.Length = String.Len(ReplaceString) hResult.Bytes = Len(ReplaceString) Inc $nReplace Endif Continue Endif iPos = InStr($sTaskBuffer, "\n") If iPos = 0 Then Break sLine = Left($sTaskBuffer, iPos - 1) $sTaskBuffer = Mid$($sTaskBuffer, iPos + 1) If sLine Begins "/" Then $sTaskPath = Mid$(sLine, 2) $sTaskFullPath = Project.Dir &/ sLine If $bTaskUpdate Then $iTaskIndex = FindPathInBrowseResult($sTaskPath) Else $iTaskIndex = -1 Endif hFile = Project.Files[$sTaskFullPath] If hFile And If hFile.IsModified() Then $bTaskOnDisk = False Else $bTaskOnDisk = True Endif hFile = Null Else If Not hFile Then hFile = Project.LoadFile($sTaskFullPath) If Not hFile Then Continue hResult = New CSearchResult hResult.Path = $sTaskPath hResult.File = hFile.Name hResult.OnDisk = $bTaskOnDisk If hResult.InitFromLine(sLine) Then Error "gambas3: warning: incorrect search result: "; sLine Continue Endif If hFile.SetPosition(hResult, True) Then Continue hResult.Highlight = TextEditor.GetModeFromPath($sTaskFullPath) AddFound(hResult, $iTaskIndex) If $iTaskIndex >= 0 Then Inc $iTaskIndex 'FOutput.Insert(hResult.File & " " & hResult.Line & " " & hResult.Column & "\n") Endif Wend $bIgnoreFileChange = False UpdateSearchList If bUndo Then $bIgnoreFileChange = True Try hFile.GetEditor().End $bIgnoreFileChange = False Endif If $sTaskBuffer Then Return If $hTask Then Return If $iReplaceFrom > 0 Then Return If $bReplaceAll Then If $iReplaceFrom < 0 Then $iReplaceFrom = $aResult.Count Return Endif Endif gvwFind.Columns[0].Width = -1 gvwFind.Columns[1].Width = -1 If gvwFind.Columns[1].Width >= Desktop.Scale * 32 Then gvwFind.Columns[1].Width = Desktop.Scale * 32 gvwFind.Columns[4].W = -1 timFillList.Stop FDebugInfo.StopSearch If $bReplaceAll Then ClearCache Search(SEARCH_AFTER_REPLACE) Endif End Public Sub SearchTask_Kill() If $hTask = Last Then $hTask = Null End Private Sub Search(iMode As Integer, Optional aPath As String[]) If InitSearch() Then Return Me.Hide FDebugInfo.ShowSearchList FDebugInfo.StartSearch $sTaskBuffer = "" $sTaskPath = "" $bTaskOnDisk = False $iTaskIndex = -1 $bTaskUpdate = iMode = SEARCH_UPDATE ResetBrowse($bTaskUpdate) $hTask = New CSearchTask As "SearchTask" If iMode = SEARCH_AFTER_REPLACE Then $bUseReplaceString = True With $hTask If $bUseReplaceString Then .Search = ReplaceString .IgnoreCase = False .RegularExpression = False .WordsOnly = False Else .Search = SearchString .IgnoreCase = IgnoreCase .RegularExpression = RegularExpression .WordsOnly = WordsOnly Endif If $bTaskUpdate Then .Update = aPath Else If radEverywhere.Value Then .Where = CSearchTask.ALL_FILES Else If radSourceFileOnly.Value Then .Where = CSearchTask.SOURCE_FILES Else If radDataFileOnly.Value Then .Where = CSearchTask.DATA_FILES Else .Where = $hCurrent.Path Endif End With $bReplaceAll = iMode = SEARCH_REPLACE $iReplaceFrom = -1 If iMode = SEARCH_STRING Or If iMode = SEARCH_REPLACE Then $nReplace = 0 End gambas-3.16.3/app/src/gambas3/.src/Search/FSearch.form000066400000000000000000000114521411575327000222040ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,87,43) Visible = False Action = "find" Text = ("Search & Replace") Icon = Picture["icon:/small/find"] Persistent = True Resizable = False Utility = True Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True { Panel2 HBox MoveScaled(1,1,85,36) Spacing = True { VBox3 VBox MoveScaled(0,0,59,35) Expand = True Spacing = True { HBox1 HBox MoveScaled(0,0,51,4) { Label1 Label MoveScaled(0,0,16,4) Text = ("Search") } { cmbSearch ComboBox MoveScaled(18,0,32,4) Expand = True } } { HBox2 HBox MoveScaled(0,5,51,4) { Label2 Label MoveScaled(0,0,16,4) Text = ("Replace") } { cmbReplace ComboBox MoveScaled(18,0,32,4) Expand = True } } { HBox4 Panel MoveScaled(-1,10,58,25) Expand = True Arrangement = Arrange.Horizontal Spacing = True Margin = True Border = Border.Plain { VBox2 VBox MoveScaled(1,0,29,25) Expand = True { Label4 Label MoveScaled(0,0,19,3) Font = Font["Bold"] Alignment = Align.TopNormal Text = ("Options") } { chkCaseSensitive CheckBox MoveScaled(0,3,30,4) Text = Shortcut(("Case sensitive"), "C") } { chkWordsOnly CheckBox MoveScaled(0,7,30,4) Text = Shortcut(("Words only"), "W") } { chkRegularExpression CheckBox MoveScaled(0,11,30,4) Text = Shortcut(("Regular expression"), "x") } { chkIgnoreStrings CheckBox MoveScaled(0,15,30,4) Text = Shortcut(("Ignore strings"), "I") } { chkIgnoreComments CheckBox MoveScaled(0,19,30,4) Text = Shortcut(("Ignore comments"), "g") } } { Panel3 Panel MoveScaled(31,11,1,5) } { panSearchIn VBox MoveScaled(33,0,24,24) Expand = True { Label3 Label MoveScaled(0,0,19,3) Font = Font["Bold"] Alignment = Align.TopNormal Text = ("Search in") } { radCurrentProcedure RadioButton radSearch Name = "radCurrentProcedure" MoveScaled(0,4,25,4) Text = Shortcut(("Current function"), "u") } { radCurrentFile RadioButton radSearch Name = "radCurrentFile" MoveScaled(0,8,25,4) Text = Shortcut(("Current file"), "f") Value = True } { radSourceFileOnly RadioButton radSearch Name = "radSourceFileOnly" MoveScaled(0,12,25,4) Text = Shortcut(("Source files"), "S") } { radDataFileOnly RadioButton radSearch Name = "radDataFileOnly" MoveScaled(0,16,25,4) Text = Shortcut(("Data files"), "D") } { radEverywhere RadioButton radSearch Name = "radEverywhere" MoveScaled(0,20,25,4) Text = Shortcut(("All files"), "l") } } } } { HBox5 VBox MoveScaled(61,0,23,35) Spacing = True { btnNext Button MoveScaled(0,0,22,4) Text = Shortcut(("Next"), "N") Picture = Picture["icon:/small/down"] } { btnPrevious Button MoveScaled(0,5,21,4) Text = Shortcut(("Previous"), "P") Picture = Picture["icon:/small/up"] } { btnBrowse Button MoveScaled(0,10,17,4) Visible = False Text = Shortcut(("Browse"), "B") Picture = Picture["icon:/small/find"] } { btnReplace Button MoveScaled(1,14,17,4) Text = Shortcut(("Replace"), "R") Picture = Picture["icon:/small/replace"] } { btnReplaceAll Button MoveScaled(2,18,17,4) Text = Shortcut(("Replace all"), "a") Picture = Picture["icon:/small/wizard"] } { Panel1 Panel MoveScaled(7,26,3,3) Expand = True } { chkHighlight CheckBox MoveScaled(0,30,25,4) Text = Shortcut(("Highlight search"), "H") } } { timRefresh #Timer #MoveScaled(52,1) Delay = 500 } { timFillList #Timer #MoveScaled(75,24) Delay = 100 } } { lblMessage Label MoveScaled(1,38,64,4) Visible = False Font = Font["Bold"] Background = Color.TooltipBackground Foreground = Color.TooltipForeground Border = Border.Plain } } # Gambas Action File 3.0 { Actions { Action find Text = "Search Replace" Picture = "icon:/small/find" } } gambas-3.16.3/app/src/gambas3/.src/Translation/000077500000000000000000000000001411575327000210725ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Translation/CTranslation.class000066400000000000000000000151651411575327000245320ustar00rootroot00000000000000' Gambas class file Public Header As String Public Keys As New String[] Public Translations As New Collection Public Comments As New Collection Private Const MODE_NONE As Integer = 0 Private Const MODE_MSGID As Integer = 1 Private Const MODE_MSGSTR As Integer = 2 Public Sub _new(sLang As String) LoadTranslation(sLang) End Static Public Sub SubstHeader(sHeader As String, Optional sLang As String) As String Dim sDate As String sDate = Format(DateAdd(Now, gb.Second, System.TimeZone), "yyyy-mm-dd hh:nn UTC") sHeader = Replace(sHeader, "$(PACKAGE)", Project.Name) sHeader = Replace(sHeader, "$(VERSION)", Project.FullVersion) sHeader = Replace(sHeader, "$(NOW)", sDate) sHeader = Replace(sHeader, "$(DATE)", sDate) sHeader = Replace(sHeader, "$(NAME)", Settings["/Identity/Name", User.Name]) sHeader = Replace(sHeader, "$(MAIL)", Settings["/Identity/Mail", User.Name & "@" & System.Host]) sHeader = Replace(sHeader, "$(LANG)", sLang) Return sHeader End Private Sub CheckTranslate(sMsgComment As String, cCache As Collection) As String Dim iPos As Integer Dim sFile As String Dim sPath As String Dim aFile As String[] Dim I As Integer Dim aResult As New String[] Dim bShouldTranslate As Boolean aFile = Split(sMsgComment, " ", "", True) For I = 0 To aFile.Max sFile = aFile[I] If sFile Begins "." Then aResult.Add(sFile) Else sPath = sFile iPos = InStr(sPath, ":") If iPos Then sPath = Left(sPath, iPos - 1) If cCache.Exist(sPath) Then bShouldTranslate = cCache[sPath] Else bShouldTranslate = Project.ShouldTranslate(Project.FindPath(sPath), True) cCache[sPath] = bShouldTranslate Endif If bShouldTranslate Then aResult.Add(sFile) Endif Next Return aResult.Join(" ") End Private Sub LoadTranslation(sLang As String) Dim sPath As String Dim hFile As File Dim sLine As String Dim sMsgId As String Dim sMsgStr As String Dim sMsgComment As String Dim iMode As Integer Dim bFuzzy As Boolean Dim iPos As Integer Dim cCache As New Collection Dim cKey As New Collection Dim bIgnore As Boolean sPath = Language.GetPath(sLang, "po") If Not Exist(sPath) Then Return hFile = Open sPath While Not Eof(hFile) Line Input #hFile, sLine If Not sLine Then Break Header &= sLine & "\n" Wend iPos = InStr(Header, "#, fuzzy") If iPos = 0 Then iPos = InStr(Header, "#,fuzzy") If iPos Then Header = Left(Header, iPos - 1) Header &= SubstHeader(File.Load("po-header.txt"), sLang) Do If Not Eof(hFile) Then Line Input #hFile, sLine If sLine Begins "#" Then If sLine Begins "#:" Then sMsgComment = Trim(sMsgComment & " " & Mid$(sLine, 3)) Continue Else If sLine Begins "#," Then If InStr(sLine, "fuzzy") Then bFuzzy = True Continue Endif Else If sLine = "# gb-ignore" Then bIgnore = True Endif Else If Left$(sLine, 6) = "msgid " Then sMsgId = Mid$(sLine, 8, -1) iMode = MODE_MSGID Continue Endif If Left$(sLine, 7) = "msgstr " Then sMsgStr = Mid$(sLine, 9, -1) iMode = MODE_MSGSTR Continue Endif If Left$(sLine) = Chr$(34) Then If iMode = MODE_MSGID Then sMsgId = sMsgId & Mid$(sLine, 2, -1) Else If iMode = MODE_MSGSTR Then sMsgStr = sMsgStr & Mid$(sLine, 2, -1) Endif Continue Endif Endif Endif If Trim(sMsgId) Then If sMsgComment Then sMsgComment = CheckTranslate(sMsgComment, cCache) If Not sMsgComment Then sMsgId = "" sMsgComment = "" sMsgStr = "" bFuzzy = False bIgnore = False Continue Endif Endif 'Inc iIndex If Not cKey.Exist(sMsgId) Then Keys.Add(sMsgId) cKey[sMsgId] = True Else Error "gambas3: warning: duplicate translation: "; sMsgId Endif If sMsgStr = "-\\n" Then sMsgStr = "-" If bIgnore Then sMsgStr = "-" bIgnore = False Endif If bFuzzy Then bFuzzy = False Else Translations[sMsgId] = sMsgStr Endif Comments[sMsgId] = sMsgComment sMsgId = "" sMsgComment = "" sMsgStr = "" Endif If Eof(hFile) Then Break Loop Close #hFile End Static Public Sub FindTranslation(sPath As String, sFind As String) As String Dim hFile As File Dim sLine As String Dim sMsgId As String Dim sMsgStr As String Dim sMsgComment As String Dim iMode As Integer Dim bFuzzy As Boolean Dim bIgnore As Boolean If Not Exist(sPath) Then Return sFind = Replace(sFind, "\n", "\\n") hFile = Open sPath While Not Eof(hFile) Line Input #hFile, sLine If Not sLine Then Break 'Header &= sLine & "\n" Wend ' iPos = InStr(Header, "#, fuzzy") ' If iPos = 0 Then iPos = InStr(Header, "#,fuzzy") ' If iPos Then Header = Left(Header, iPos - 1) ' ' Header &= SubstHeader(File.Load("po-header.txt"), sLang) Do If Not Eof(hFile) Then Line Input #hFile, sLine If sLine Begins "#" Then If sLine Begins "#:" Then Continue Else If sLine Begins "#," Then If InStr(sLine, "fuzzy") Then bFuzzy = True Continue Endif Else If sLine = "# gb-ignore" Then bIgnore = True Endif Else If Left$(sLine, 6) = "msgid " Then sMsgId = Mid$(sLine, 8, -1) iMode = MODE_MSGID Continue Endif If Left$(sLine, 7) = "msgstr " Then sMsgStr = Mid$(sLine, 9, -1) iMode = MODE_MSGSTR Continue Endif Endif If Left$(sLine) = Chr$(34) Then If iMode = MODE_MSGID Then sMsgId = sMsgId & Mid$(sLine, 2, -1) Else If iMode = MODE_MSGSTR Then sMsgStr = sMsgStr & Mid$(sLine, 2, -1) Endif Continue Endif Endif If Trim(sMsgId) Then If sMsgStr = "-\\n" Then sMsgStr = "-" If bIgnore Then sMsgStr = "-" bIgnore = False Endif If bFuzzy Then bFuzzy = False Else If sMsgId = sFind Then If sMsgStr = "-" Then sMsgStr = sMsgId Close #hFile Return Replace(sMsgStr, "\\n", "\n") Endif Endif sMsgId = "" sMsgComment = "" sMsgStr = "" Endif If Eof(hFile) Then Break Loop Close #hFile End gambas-3.16.3/app/src/gambas3/.src/Translation/FNewTranslation.class000066400000000000000000000011101411575327000251700ustar00rootroot00000000000000' Gambas class file Static Private $sLang As String Static Public Function Run() As String FNewTranslation.ShowModal Return $sLang End Public Sub Form_Open() Dim sLang As String For Each sLang In Language.GetAll() If Project.HasTranslation(sLang) Then Continue lstLanguage.Add(Language.ToName(sLang)) Next Try lstLanguage.Index = 0 End Public Sub btnOK_Click() $sLang = Language.FromName(lstLanguage.Text) Me.Close End Public Sub btnCancel_Click() $sLang = "" Me.Close End Public Sub lstLanguage_Activate() btnOK.Value = True End gambas-3.16.3/app/src/gambas3/.src/Translation/FNewTranslation.form000066400000000000000000000005501411575327000250350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,59,58) Text = ("New translation") Resizable = False { btnOK Button MoveScaled(23,53,17,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(41,53,17,4) Text = ("Cancel") Cancel = True } { lstLanguage ListBox MoveScaled(1,1,57,51) Sorted = True } } gambas-3.16.3/app/src/gambas3/.src/Translation/FTranslate.class000066400000000000000000001121271411575327000241700ustar00rootroot00000000000000' Gambas class file ' This must be put in an external help to define. ' 'F1 = this Help 'F3 = Find NEXT 'F4 = Find NEXT untranslated String 'Shift + F4 = Find previous untranslated String 'F5 = COPY untranslated String 'F6 = This String must NOT be translated 'F7 = Verify the translation 'F8 = Clear this translation 'Ctrl+F = goes TO Find - field 'Alt+Up / Alt+Down = moves on String up / down Private Const MODE_NONE As Integer = 0 Private Const MODE_MSGID As Integer = 1 Private Const MODE_MSGSTR As Integer = 2 Private Enum EXPORT_ALL, EXPORT_UNTRANSLATED, EXPORT_TRANSLATED Private Const TABLE_HEIGHT_MAX As Integer = 256 Private $sLang As String Private $sPath As String Private $sHeader As String Private $bModify As Boolean Private $bIgnore As Boolean Private $nTrans As Integer Private $sErrMerge As String Private cvwTranslateOrg As ColumnView Private $bDeleteIfVoid As Boolean Private $cCacheImport As Collection Private $bStatValid As Boolean Static Private $sTranslateShell As String Static Private $sTranslateEngine As String Static Public Sub Run() If Project.GetClasses().Count = 0 Then Message(("The project is void. There is nothing to translate.")) Return Endif If Settings["/AutomaticTranslation/Enabled"] Then $sTranslateShell = System.Find("trans") $sTranslateEngine = Settings["/AutomaticTranslation/Engine", "google"] Else $sTranslateShell = "" $sTranslateEngine = "" Endif FTranslate.ShowModal End Public Sub _new() With cvwTranslate .Columns.Count = 4 '.Columns[0].Text = ("Untranslated") '.Columns[2].Text = ("Comments") End With cvwTranslateOrg = New ColumnView(Me) With cvwTranslateOrg .AutoResize = False .Visible = False .Columns.Count = 4 '.Columns[0].Text = ("Untranslated") '.Columns[2].Text = ("Comments") End With cvwLang.Columns[0].Text = ("Language") With cvwLang .AddColumn(("Progress"),, Align.Right) .AddColumn(("Not translated"),, Align.Right) .AddColumn(("File")) .AddColumn(("Size"),, Align.Right) End With mnuAutoTrans.Enabled = $sTranslateShell btnAutoTrans.Enabled = mnuAutoTrans.Enabled Project.SetSmallFont(panTransToolbar) Project.SetSmallFont(panToolbar) End ' Private Sub GetTransCount(sLang As String) As Integer ' ' Dim hFile As File ' Dim iVal As Integer ' ' If Not Exist(Language.GetPath(sLang, "mo")) Then Return ' ' hFile = Open Language.GetPath(sLang, "mo") ' ' iVal = Read #hFile As Integer ' If (iVal = &H950412DE) Xor (System.ByteOrder = gb.BigEndian) Then ' hFile.ByteOrder = gb.LittleEndian ' Else ' hFile.ByteOrder = gb.BigEndian ' Endif ' iVal = Read #hFile As Integer ' iVal = Read #hFile As Integer ' ' Close #hFile ' ' Return iVal - 1 ' ' End Private Sub ComputeTransStat(sLang As String, Optional nTrans As Integer) Dim nStr As Integer Dim hTrans As CTranslation If nTrans = 0 Then nTrans = cvwTranslateOrg.Count hTrans = New CTranslation(sLang) nStr = hTrans.Translations.Count With cvwLang[sLang] .[1] = Min(100, (nStr * 100) \ nTrans) & "% " .[2] = CStr(nTrans - nStr) & " " .[3] = sLang & ".po" Try .[4] = Project.GetFileSize(Stat(Language.GetPath(sLang, "po")).Size) End With End Public Sub Form_Open() Dim sLang As String Dim sPath As String Dim sName As String Dim aName As String[] Inc Application.Busy $sLang = "" Settings.Read(Me) $bStatValid = False cvwLang.Clear cmbLang.Clear cmbLangSource.Clear cmbLangSource.Add(("(Default)")) 'For Each sLang In Language.GetAll() aName = New String[] For Each sLang In Project.GetTranslations() sName = Language.ToName(sLang) aName.Add(sName) cvwLang.Add(sLang, sName) Next aName.Sort(gb.Natural) cmbLang.List = aName aName.Add(("(Default)"), 0) cmbLangSource.List = aName sPath = Settings["/FTranslate/ImportPath"] If Not sPath Then sPath = System.User.Home dchImport.SelectedPath = sPath ' If IsDir(sPath) Then ' dchImport.SelectedPath = sPath ' Else ' dchImport.SelectedPath = sPath ' fvwImport.Current = File.Name(sPath) ' Endif dchImport.FileView.Filter = ["*.po", ("Translation files")] Project.SetEditorFont(txtOrig) Project.SetEditorFont(txtTranslate) Dec Application.Busy If SetLang() Then Me.Close Return Endif tabTranslate_Click End Private Sub ErrorMessage(sText As String, sDetail As String) Dim iPos As Integer sText = "

      " & Html(Trim(sText) & "\n\n") sDetail = Trim(sDetail) If sDetail Then If String.Len(sDetail) > 1024 Then sDetail = String.Left(sDetail, 1024) iPos = RInStr(sDetail, "\n") If iPos Then sDetail = Left(sDetail, iPos - 1) sDetail &= "\n[...]" Endif sText &= "" & Html(sDetail) & "" Endif Message.Error(sText) End Private Sub SetLang(Optional sLang As String) As Boolean Dim sDir As String Dim sPath As String Dim sMsgId As String Dim iIndex As Integer Dim sMsg As String Dim sCurrent As String Dim sName As String Dim hTrans, hTransSrc As CTranslation Dim sLangSrc As String Inc Application.Busy sCurrent = cvwTranslate.Key SaveTranslate If Not sLang Then sLang = Language.Find(System.Language) sDir = Project.Dir &/ ".lang" sPath = Language.GetPath(sLang, "po") 'lblFile.Text = File.Name(sPath) cmbLang.ToolTip = File.Name(sPath) $bDeleteIfVoid = False If Not Exist(sPath) Then Copy sDir &/ ".pot" To sPath VersionControl.AddFile(sPath) $bDeleteIfVoid = True 'SHELL "cp " & Project.Quote(sDir &/ ".pot") & " " & Project.Quote(sPath) WAIT Else If Stat(sPath).Size = 0 Then $bDeleteIfVoid = True Else Try MergeMessage(sPath, Shell$(sPath) & " " & Shell$(sDir &/ ".pot")) If Error Then Try Copy sDir &/ ".pot" To sPath ErrorMessage(Subst$(("The '&1' command has failed."), "msgmerge"), $sErrMerge) 'ResizeTable 'cmbLang.Text = Language 'Dec Application.Busy 'Return True Endif ' SHELL "msgmerge -o " & Project.Quote(sPath & ".new") & " " & Project.Quote(sPath) & " " & Project.Quote(sDir &/ ".pot") & " > " & Project.Quote(sTemp) & " 2>&1" WAIT ' IF Exist(sPath & ".new") THEN ' KILL sPath ' RENAME sPath & ".new" AS sPath ' ELSE ' PRINT "msgmerge -o " & Project.Quote(sPath & ".new") & " " & Project.Quote(sPath) & " " & Project.Quote(sDir &/ ".pot") & " > " & Project.Quote(sTemp) & " 2>&1" ' PRINT File.Load(sTemp) ' Error.Raise(("The 'msgmerge' command has failed")) ' ENDIF ' TRY KILL sTemp Endif cvwTranslate.Clear 'cvwTranslate.Columns[2].AutoResize = FALSE hTrans = New CTranslation(sLang) If cmbLangSource.Index > 0 Then sLangSrc = Language.FromName(cmbLangSource.Text) hTransSrc = New CTranslation(sLangSrc) Endif $sHeader = hTrans.Header For Each sMsgId In hTrans.Keys Inc iIndex If hTransSrc Then cvwTranslate.Add(iIndex, hTransSrc.Translations[sMsgId]) Else cvwTranslate.Add(iIndex, sMsgId) Endif cvwTranslate[iIndex][1] = hTrans.Translations[sMsgId] cvwTranslate[iIndex][2] = hTrans.Comments[sMsgId] cvwTranslate[iIndex][3] = sMsgId Next $nTrans = hTrans.Translations.Count MakeFileChoice UpdateOrg(True) 'cvwTranslate.Columns[1].Text = Language.ToName(sLang) txtOrig.Text = "" Object.Lock(txtTranslate) txtTranslate.Clear Object.Unlock(txtTranslate) $bIgnore = False If cvwTranslate.MoveTo(sCurrent) Then Wait ' let the columnview be sorted cvwTranslate.MoveFirst Endif Try cvwTranslate.Item.Selected = True Try cvwTranslate.Item.EnsureVisible $sLang = sLang $sPath = sPath $bModify = False sName = Language.ToName($sLang) Try cvwLang.Add($sLang, sName) If Not Error Then cmbLang.Add(sName) 'If Not Error And If chkStat.Value Then cvwLang[$sLang][1] = "0%" 'Try cvwLang[$sLang].Selected = True Try cmbLang.Index = cmbLang.Find(sName) DisplayTrans Finally ResizeTable Dec Application.Busy Catch sMsg = Error.Text & "\n\n" & Error.Backtrace.Join(" ") & "\n\n" & Trim($sErrMerge) ErrorMessage(Subst(("Cannot read translation file for language '&1'"), Language.ToName(sLang)), sMsg) $bIgnore = False Return True End Public Sub btnOK_Click() Me.Close End Private Sub FormatComment(sComment As String) Dim sFile As String Dim sPath As String Dim iPos As Integer Dim sSuffix As String Dim hLabel As Label Dim hSep As Separator panComment.Children.Clear For Each sFile In Split(sComment, " ", "", True) iPos = RInStr(sFile, ":") If iPos Then sSuffix = Mid$(sFile, iPos + 1) sFile = Left$(sFile, iPos - 1) Else sSuffix = "" Endif If sFile Not Begins "." Then sPath = Project.FindPath(sFile) sFile = Mid$(sPath, Len(Project.SourceDir) + 2) Endif If sSuffix Then sFile &= " (" & sSuffix & ")" If panComment.Children.Count Then hSep = New Separator(panComment) hSep.Resize(1, 1) Endif hLabel = New Label(panComment) hLabel.Text = " " & sFile & " " hLabel.Padding = Desktop.Scale \ 2 hLabel.AutoResize = True Next End Public Sub cvwTranslate_Select() With cvwTranslate txtOrig.Text = .Current[0] $bIgnore = True txtTranslate.Text = .Current[1] $bIgnore = False FormatComment(.Current[2]) End With txtTranslate.SetFocus End Public Sub txtTranslate_Change() Dim nTransOld As Integer If $bIgnore Then Return nTransOld = $nTrans If cvwTranslate.Current[1] Then Dec $nTrans cvwTranslate.Current[1] = txtTranslate.Text If cvwTranslate.Current[1] Then Inc $nTrans If $nTrans <> nTransOld Then DisplayTrans $bModify = True End Private Sub WriteTranslation(sPath As String, Optional iMode As Integer = EXPORT_ALL) As Boolean Dim hFile As File Dim sStr As String Dim bTrans As Boolean If Not sPath Then hFile = Open String For Write Else hFile = Open sPath For Create Print #hFile, $sHeader Endif With cvwTranslateOrg .MoveFirst() While .Available sStr = .Item[1] If iMode = EXPORT_TRANSLATED Then If Not sStr Then Goto NEXT_TRANS Else If iMode = EXPORT_UNTRANSLATED Then If sStr Then Goto NEXT_TRANS Endif If Not sPath Then Print #hFile, Mid$(Quote(.Item[3]), 2, -1) Else If sStr Then If Right$(.Item[3], 2) = "\\n" Then If Right$(sStr, 2) <> "\\n" Then sStr = sStr & "\\n" Endif Else While Right(sStr, 2) = "\\n" sStr = Left(sStr, -2) Wend Endif Endif If sStr = "-" Then sStr = "" Print #hFile, "# gb-ignore" Endif Print #hFile, "#: "; .Item[2] Print #hFile, "msgid "; Chr$(34); .Item[3]; Chr$(34) Print #hFile, "msgstr "; Quote(UnQuote(sStr)) Print #hFile Endif If sStr Then bTrans = True NEXT_TRANS: .MoveNext() Wend End With If Not sPath Then sStr = Close #hFile Clipboard.Copy(sStr) Else Close #hFile Endif Return Not bTrans End Private Sub SaveTranslate(Optional bForce As Boolean) Dim bNoTrans As Boolean Dim bExistMO As Boolean Dim sPathMO As String If Not $sLang Then Return If Not $bDeleteIfVoid Then If Not ($bModify Or bForce) Then Return Endif UpdateOrg() Project.CreateLangDirectory() sPathMO = File.SetExt($sPath, "mo") bExistMO = Exist(sPathMO) If $nTrans = 0 Then VersionControl.RemoveFile($sPath, True) Try Kill $sPath If Not Error Then Inc Project.TimeStamp If bExistMO Then VersionControl.RemoveFile(sPathMO, True) Try Kill sPathMO Endif Return Endif Inc Application.Busy 'PRINT "Saving "; $sPath bNoTrans = WriteTranslation($sPath & ".new") Try Kill $sPath If Not bNoTrans Then Move $sPath & ".new" To $sPath 'Project.CompileTranslation(True, $sLang) Project.Compile() 'Shell "msgfmt -o " & Shell$(sPathMO) & " " & Shell$($sPath) Wait 'If Not bExistMO Then VersionControl.AddFile(sPathMO) Else 'PRINT "Void translation" Try Kill $sPath & ".new" If bExistMO Then VersionControl.RemoveFile(sPathMO, True) Try Kill sPathMO Endif Endif Inc Project.TimeStamp ComputeTransStat($sLang) $bModify = False $bStatValid = False Finally Dec Application.Busy Catch Message.Error(("Cannot save translation.") & "\n\n" & Error.Text) End ' Private Function QuoteTranslation(sStr As String) As String ' ' ' sStr = Replace(sStr, "\n", "") ' ' sStr = Replace(sStr, "\\" & Chr$(34), "\n") ' ' sStr = Replace(sStr, Chr$(34), "\\" & Chr$(34)) ' ' sStr = Replace(sStr, "\n", "\\" & Chr$(34)) ' ' sStr = Replace(sStr, "\\", "\\\\") ' ' ' ' Return Chr$(34) & sStr & Chr$(34) ' ' Return Quote(sStr) ' ' End ' Private Function QuoteTranslation(sStr As String) As String ' ' sStr = Replace(sStr, "\n", "") ' sStr = Replace(sStr, "\\n", "\n") ' Return Quote(sStr) ' ' End ' Private Function UnQuoteTranslation(sStr As String) As String ' ' sStr = Unquote(sStr) ' sStr = Replace(sStr, "\n", "\\n") ' Return sStr ' ' End Public Sub btnSave_Click() SaveTranslate(True) End Public Sub btnCopy_Click() txtTranslate.Text = cvwTranslate.Current[0] End Public Sub txtFind_Click() Dim sStr As String Dim sFind As String Dim sKey As String sFind = String.LCase(txtFind.Text) If Not sFind Then Return If cvwTranslate.Count = 0 Then Return With cvwTranslate sKey = .Key Do .MoveNext() If Not .Available Then .MoveFirst() Endif sStr = String.LCase(.Item[0] & "\n" & .Item[1]) If InStr(sStr, sFind) Then .Item.EnsureVisible .Item.Selected = True Return Endif If .Item.Key = sKey Then Balloon.Info(("Search string cannot be found."), txtFind) Return Endif Loop End With End Public Sub txtFind_Activate() txtFind_Click End ' Public Sub cvwLang_Select() ' ' Dim sLang As String = cvwLang.Item.Key ' ' If sLang = $sLang Then Return ' ' SetLang(sLang) ' ' End Public Sub cmbLang_Click() Dim sLang As String = Language.FromName(cmbLang.Text) If sLang = $sLang Then Return SetLang(sLang) End Public Sub mnuDelete_Click() If Message.Delete(("Do you really want to delete this translation ?"), ("Delete"), ("Cancel")) = 2 Then Return With cvwTranslate .MoveFirst() While .Available .Item[1] = "" .MoveNext() Wend .MoveFirst() .Item.Selected = True .Item.EnsureVisible() $nTrans = 0 End With SaveTranslate(True) cvwLang.Remove($sLang) cmbLang.Remove(cmbLang.Index) SetLang() End Public Sub mnuNew_Click() Dim sLang As String sLang = FNewTranslation.Run() If Not sLang Then Return SetLang(sLang) ' IF sLang = $sLang THEN ' Message(("This is the same translation !")) ' RETURN ' ENDIF ' ' IF Message.Question(("Do you really want to replace this translation ?"), ("Replace"), ("Cancel")) = 2 THEN RETURN ' ' 'TRY KILL Project.Dir &/ $sLang & ".po" ' SHELL "cp -f " & Project.Quote(Project.Dir &/ ".lang" &/ sLang & ".po") & " " & Project.Quote(Project.Dir &/ ".lang" &/ $sLang & ".po") WAIT ' ' SetLang($sLang) End Public Sub txtTranslate_KeyPress() If Key.Alt Then With cvwTranslate If Key.Code = Key["Up"] Then If Key.Shift Then If btnPreviousTranslated.Enabled Then btnPreviousTranslated_Click Else If Key.Control Then If btnPreviousUntranslated.Enabled Then btnPreviousUntranslated_Click Else .MoveTo(.Key) .MoveAbove() If .Available Then .Item.Selected = True .Item.EnsureVisible() Endif Endif Else If Key.Code = Key["Down"] Then If Key.Shift Then If btnNextTranslated.Enabled Then btnNextTranslated_Click Else If Key.Control Then If btnNextUntranslated.Enabled Then btnNextUntranslated_Click Else .MoveTo(.Key) .MoveBelow() If .Available Then .Item.Selected = True .Item.EnsureVisible() Endif Endif Endif End With Else If Key.Shift Then If Key.Code = Key.F4 Then btnPreviousUntranslated_Click() Endif Else If Key.Control Then If Key.Code = Key["F"] Then txtFind.SetFocus Endif Else If Key.Normal Then Select Case Key.Code Case Key.F3 txtFind_Click Case Key.F4 btnNextUntranslated_Click Case Key.F5 btnCopy_Click Case Key.F6 btnDoNotTranslate_Click Case Key.F7 btnVerify_Click Case Key.F8 btnClear_Click End Select Endif End Public Sub mnuReload_Click() If Message.Question(("Do you really want to reload this translation ?"), ("Reload"), ("Cancel")) = 2 Then Return SetLang($sLang) End Public Sub btnClear_Click() txtTranslate.Clear End Private Sub ExportTranslation(iMode As Integer) Dialog.Title = ("Export a translation") Dialog.Path = Settings["/FTranslate/ExportPath", System.User.Home] &/ Project.Name & "-" & $sLang & "-" & Project.FormatVersion() & ".po" Dialog.Filter = ["*.po", ("Translation files")] Dialog.AutoExt = True If Dialog.SaveFile() Then Return Settings["/FTranslate/ExportPath"] = File.Dir(Dialog.Path) UpdateOrg Try Kill Dialog.Path WriteTranslation(Dialog.Path, iMode) End Private Sub CopyTranslation(iMode As Integer) UpdateOrg WriteTranslation("", iMode) End Public Sub mnuExportAll_Click() ExportTranslation(EXPORT_ALL) End Public Sub mnuExportTranslated_Click() ExportTranslation(EXPORT_TRANSLATED) End Public Sub mnuExportUntranslated_Click() ExportTranslation(EXPORT_UNTRANSLATED) End Public Sub mnuCopyAll_Click() CopyTranslation(EXPORT_ALL) End Public Sub mnuCopyTranslated_Click() CopyTranslation(EXPORT_TRANSLATED) End Public Sub mnuCopyUntranslated_Click() CopyTranslation(EXPORT_UNTRANSLATED) End Private Sub InitIndex() $cCacheImport = New Collection cvwTranslate.MoveFirst While cvwTranslate.Available 'Debug cvwTranslate.Item[0]; "|"; cvwTranslate.Item[1]; "|"; cvwTranslate.Item[2]; "|"; cvwTranslate.Item[3] $cCacheImport[cvwTranslate.Item[3]] = CInt(cvwTranslate.Item.Key) cvwTranslate.MoveNext Wend End Private Sub FindIndex(sMsgId As String) As Integer If Not sMsgId Then Return If $cCacheImport.Exist(sMsgId) Then Return $cCacheImport[sMsgId] End Private Sub ImportMessage(sPath As String, bReplace As Boolean) As Integer Dim hFic As File Dim sLine As String Dim sMsgComment As String Dim bFuzzy As Boolean Dim sMsgId As String Dim iMode As Integer Dim sMsgStr As String Dim iIndex As Integer Dim nTrans As Integer Dim sCharset As String ' sTemp = Temp$() ' sOutput = Temp$() ' Shell "msgconv -t UTF-8 -o " & Quote.Shell(sTemp) & " " & Quote.Shell(sPath) & " > " & Quote.Shell(sOutput) & " 2>&1" Wait ' If Process.LastValue Then ' $sErrMerge = "\n\n" & DConv(File.Load(sOutput)) ' Error.Raise(("Unable to convert translation file to UTF-8.")) ' Endif InitIndex hFic = Open sPath Do If Not Eof(hFic) Then Line Input #hFic, sLine If Left$(sLine) = "#" Then If Left$(sLine, 2) = "#:" Then sMsgComment = Trim(Mid$(sLine, 3)) Continue Endif If Left$(sLine, 2) = "#," Then If InStr(sLine, "fuzzy") Then bFuzzy = True Continue Endif Endif Continue Endif If Left$(sLine, 6) = "msgid " Then sMsgId = Mid$(sLine, 8, -1) iMode = MODE_MSGID Continue Endif If Left$(sLine, 7) = "msgstr " Then sMsgStr = Mid$(sLine, 9, -1) iMode = MODE_MSGSTR Continue Endif If Left$(sLine) = Chr$(34) Then If iMode = MODE_MSGID Then sMsgId = sMsgId & Mid$(sLine, 2, -1) Else If iMode = MODE_MSGSTR Then If Not sMsgId Then If sLine Like "\"Content-type:*; charset=*" Then sLine = Replace(Mid$(sLine, 2, -1), "\\n", "") Try sCharset = UCase(Trim(Scan(sLine, "*; charset=*")[1])) If sCharset = "UTF-8" Then sCharset = "" Endif Else sMsgStr = sMsgStr & Mid$(sLine, 2, -1) Endif Endif Continue Endif Endif If Trim(sMsgId) Then If sCharset Then sMsgStr = Conv(sMsgStr, sCharset, "UTF-8") iIndex = FindIndex(sMsgId) If iIndex <= 0 Then sMsgId = CControl.RemoveShortcut(sMsgId) sMsgStr = CControl.RemoveShortcut(sMsgStr) iIndex = FindIndex(sMsgId) Endif If iIndex > 0 Then If bReplace Or If cvwTranslate[iIndex][1] = "" Then If sMsgStr = "-\\n" Then sMsgStr = "-" If bFuzzy Then bFuzzy = False Else cvwTranslate[iIndex][1] = sMsgStr If sMsgStr Then Inc $nTrans Inc nTrans Endif Endif Endif Endif Endif sMsgId = "" sMsgComment = "" sMsgStr = "" bFuzzy = False If Eof(hFic) Then Break Loop Close hFic Return nTrans End Public Sub btnImport_Click() Dim sPath As String Dim sTransDir, sTrans As String Dim nTrans As Integer sTransDir = dchImport.SelectedPath If Not chkBrowse.Value Then sTrans = dchImport.FileView.Current If Not sTrans Then Message.Warning(("Please select the translation file to import.")) Return Endif Endif Settings["/FTranslate/ImportPath"] = sTransDir 'If IsDir(Dialog.Path) Then ' If Message.Warning("You have selected a directory. Do you want to browse it recursively and import all found translation files?", ("Cancel"), ("Browse")) = 1 Then Return 'Endif ' If Not (File.BaseName(Dialog.Path) Like (Project.Name & "-" & $sLang & "-*")) Then ' If Message.Warning(("Warning ! The translation file does not match the current language."), ("Continue"), ("Cancel")) <> 1 Then ' Return ' Endif ' Endif Inc Application.Busy sPath = Language.GetPath($sLang, "po") 'SHELL "msgmerge -o " & Project.Quote(sPath & ".new") & " " & Project.Quote(Dialog.Path) & " " & Project.Quote(sPath) & " 2>/dev/null" WAIT 'MergeMessage(sPath, "-o " & Quote.Shell(sPath & ".new") & " " & Quote.Shell(Dialog.Path) & " " & Quote.Shell(sPath)) If chkBrowse.Value Then For Each sTrans In RDir(sTransDir, "*.po") nTrans += ImportMessage(sTransDir &/ sTrans, chkReplace.Value) Next Else nTrans = ImportMessage(sTransDir &/ sTrans, chkReplace.Value) Endif DisplayTrans $bModify = True SetLang($sLang) Dec Application.Busy If nTrans = 0 Then Message.Info(("No translation were picked up.")) Else If nTrans = 1 Then Message.Info(("One translation was picked up.")) Else If nTrans > 0 Message.Info(Subst(("&1 translations were picked up."), nTrans)) Endif 'SaveTranslate(TRUE) Catch Application.Busy = 0 Message.Error(("Cannot import translation file.") & "\n\n" & Error.Text & $sErrMerge) End Private Function GetSymbols(sStr As String) As String Dim sSym As String Dim iInd As Integer Dim sCar As String Dim bGetNext As Boolean For iInd = 1 To Len(sStr) sCar = Mid$(sStr, iInd, 1) If bGetNext Then sSym = sSym & sCar bGetNext = False Else If Asc(sCar) < 128 Then If InStr("abcdefghijklmnopqrstuvwxyz- ',;:", LCase(sCar)) = 0 Then sSym = sSym & sCar If sCar = "\\" Then bGetNext = True Endif Endif Next Return sSym End Public Sub btnVerify_Click() Dim sKey As String If Not cvwTranslate.Key Then Return With cvwTranslate sKey = .Key .MoveCurrent Do .MoveNext() If Not .Available Then .MoveFirst() Endif If .Item.Key = sKey Then Balloon.Info(("Everything seems to be correct."), btnVerify) Return Endif If .Item[1] Then If .Item[1] <> "-" Then If GetSymbols(.Item[0]) <> GetSymbols(.Item[1]) Then .Item.EnsureVisible .Item.Selected = True Balloon.Warning(("Translated string symbols do not match untranslated string ones."), txtTranslate) Return Endif Endif Endif Loop End With End Public Sub btnDoNotTranslate_Click() txtTranslate.Text = "-" End Private Sub DisplayTrans() Dim nNotTrans As Integer nNotTrans = cvwTranslate.Count - $nTrans If nNotTrans = 0 Then lblInfo.Text = Subst(("&1 strings. Everything is translated!"), cvwTranslate.Count, nNotTrans) Else If nNotTrans = 1 Then lblInfo.Text = Subst(("&1 strings. One is not translated. &3% done."), cvwTranslate.Count, nNotTrans, ($nTrans * 100) \ cvwTranslateOrg.Count) Else lblInfo.Text = Subst(("&1 strings. &2 are not translated. &3% done."), cvwTranslate.Count, nNotTrans, ($nTrans * 100) \ cvwTranslateOrg.Count) Endif btnNextUntranslated.Enabled = cvwTranslate.Count - $nTrans btnPreviousUntranslated.Enabled = btnNextUntranslated.Enabled btnNextTranslated.Enabled = $nTrans > 0 btnPreviousTranslated.Enabled = btnNextTranslated.Enabled End ' PUBLIC SUB Form_Resize() ' ' DIM H AS Integer ' DIM D AS Integer ' ' D = ME.ClientH - cvwTranslate.Y - 120 ' ' H = (D - TABLE_HEIGHT_MAX) \ 2 ' IF H < 48 THEN ' cvwTranslate.H = D - 48 * 2 ' H = (D - cvwTranslate.H) \ 2 ' ELSE ' cvwTranslate.H = TABLE_HEIGHT_MAX ' ENDIF ' ' cvwTranslate.W = ME.ClientW - 16 ' ResizeTable ' ' lblOrig.Move(8, cvwTranslate.Y + cvwTranslate.H + 8) ' lblComment.Move(lblOrig.X + lblOrig.W, lblOrig.Y) ' lblComment.W = ME.ClientW - lblComment.X - 8 ' txtOrig.Move(8, lblOrig.Y + lblOrig.H, cvwTranslate.W, H) ' ' panTranslate.Move(ME.ClientW - panTranslate.W, txtOrig.Y + txtOrig.H + 8) ' lblTranslation.Y = panTranslate.Y + 8 ' txtTranslate.Move(8, lblTranslation.Y + lblTranslation.H, cvwTranslate.W, H) ' lblInfo.Y = ME.ClientH - lblInfo.H - 8 ' btnOK.Move(ME.CLientW - btnOK.W - 8, ME.CLientH - btnOK.H - 8) ' ' ' END Private Sub ResizeTable() Dim I As Integer With cvwTranslate .Columns[0].Width = .ClientW \ 2 .Columns[1].Width = .ClientW - .Columns[0].Width '- 16 For I = 2 To .Columns.Max .Columns[I].Width = 0 Next End With End Public Sub btnNextUntranslated_Click() Dim sKey As String With cvwTranslate sKey = .Key .MoveCurrent() Do .MoveBelow() If Not .Available Then .MoveFirst() Endif If Not .Item[1] Then .Item.EnsureVisible .Item.Selected = True Return Endif If .Item.Key = sKey Then Return Loop End With End Public Sub btnPreviousUntranslated_Click() Dim sKey As String With cvwTranslate sKey = .Key .MoveCurrent() Do .MoveAbove() If Not .Available Then .MoveLast() Endif If Not .Item[1] Then .Item.EnsureVisible .Item.Selected = True Return Endif If .Item.Key = sKey Then Return Loop End With End Private Sub MergeMessage(sPath As String, sOption As String) Dim sTemp As String sTemp = Temp$ Shell "msgmerge --no-wrap -F -o " & Shell$(sPath & ".new") & " " & sOption & " > " & Shell$(sTemp) & " 2>&1" Wait If Exist(sPath & ".new") Then Kill sPath Move sPath & ".new" To sPath $sErrMerge = "" Try Kill sTemp Else 'PRINT "msgmerge -o " & sOption $sErrMerge = DConv(File.Load(sTemp)) Try Kill sTemp Error.Raise(Subst$(("The '&1' command has failed."), "msgmerge")) Endif End Public Sub Form_Close() Inc Application.Busy If cmbFileChoice.Index <> 0 Then ShiftToSort SaveTranslate Settings.Write(Me) Dec Application.Busy End Public Sub cmbFileChoice_Click() If cmbFileChoice.Index = 0 Then ShiftToSort() Else ShiftToSort(cmbFileChoice.Text) Endif End ' PRIVATE SUB MakeFileChoice() ' ' DIM sTempIn AS String ' DIM sTemp AS String ' DIM sControl AS String ' DIM myPattern AS String = " " ' DIM iPos AS Integer ' DIM aChoice AS NEW String[] ' ' cbxFileChoice.Clear ' cbxFileChoice.Add("(" & ("All files") & ")") ' ' WITH cvwTranslate ' .MoveFirst ' DO WHILE .Available ' sTempIn = .Item[2] & myPattern ' DO ' iPos = InStr(sTempIn, myPattern, iPos) ' IF iPos = 0 THEN ' BREAK ' ELSE ' sTemp = Left(sTempIn, iPos) ' sTempIn = Mid(sTempIn, iPos) ' sTemp = "." & Trim(Left(sTemp, InStr(sTemp, "."))) ' IF InStr(sControl, sTemp) = 0 THEN ' sControl = sControl & sTemp ' aChoice.Add(Replace(sTemp, ".", "")) ' ENDIF ' ENDIF ' LOOP ' .MoveNext ' LOOP ' END WITH ' ' cbxFileChoice.Sorted = TRUE ' ' END ' Private Sub MakeFileChoice() Dim sFile As String Dim aChoice As New String[] Dim iPos As Integer cmbFileChoice.Clear 'cbxFileChoice.Add("(" & ("All files") & ")") With cvwTranslate .MoveFirst Do While .Available For Each sFile In Split(.Item[2], " ", "", True) iPos = InStr(sFile, ":") If iPos Then sFile = Left(sFile, iPos - 1) If Left(sFile) <> "." Then sFile = File.BaseName(sFile) If aChoice.Find(sFile) < 0 Then aChoice.Add(sFile) Next .MoveNext Loop End With aChoice.Add("(" & ("All files") & ")", 0) cmbFileChoice.List = aChoice.Sort() Object.Lock(cmbFileChoice) cmbFileChoice.Index = 0 Object.Unlock(cmbFileChoice) End Private Sub ShiftToSort(Optional sSortText As String) Dim iPos As Integer Dim sKey As String Dim sLastKey As String Dim nI As Integer UpdateOrg() 'sSearchText = " " & sSortText $nTrans = 0 sLastKey = cvwTranslate.Key cvwTranslate.Clear With cvwTranslateOrg .MoveFirst Do While .Available If sSortText Then iPos = InStr(" " & .Item[2], " " & sSortText) Else iPos = -1 Endif If iPos <> 0 Then sKey = .Item.Key cvwTranslate.Add(sKey, .Item[0]) If .Item[1] Then Inc $nTrans For ni = 1 To .Columns.Count - 1 cvwTranslate.Item[nI] = .Item[nI] Next Endif .MoveNext Loop End With If cvwTranslate.Count Then Try cvwTranslate.MoveTo(sLastKey) If Not cvwTranslate.Available Then cvwTranslate.MoveFirst Endif cvwTranslate.Item.Selected = True cvwTranslate.Item.EnsureVisible() Endif DisplayTrans ResizeTable End Private Sub UpdateOrg(Optional bNew As Boolean) Dim nI As Integer Dim sKey As String If bNew Then cvwTranslateOrg.Clear With cvwTranslate .MoveFirst Do While .Available sKey = .Item.Key If bNew Then cvwTranslateOrg.Add(sKey, .Item[0]) For ni = 1 To .Columns.Count - 1 cvwTranslateOrg.Item[nI] = .Item[nI] Next Else cvwTranslateOrg.MoveTo(sKey) cvwTranslateOrg.Item[1] = .Item[1] Endif .MoveNext Loop End With End Private Sub UpdateStat() Dim sLang As String If $bStatValid Then Return Inc Application.Busy cvwLang.Header = True 'Shell "grep -c \"^msgid\" " & Shell$(Project.Dir &/ ".lang/.pot") To sRes 'nTrans = Val(sRes) - 1 ' Remove the < msgid "" > line For Each sLang In Language.GetAll() If Project.HasTranslation(sLang) Then ComputeTransStat(sLang) Endif Next ' 'cvwLang.Resizable = True ' For iCol = 0 To 3 ' cvwLang.Columns[iCol].Width = -1 ' Next ' 'cvwLang.Resizable = False ' ' For iCol = 0 To 3 ' iWidth += cvwLang.Columns[iCol].Width ' Next $bStatValid = True Dec Application.Busy End Public Sub panLang_Resize() ResizeTable End Public Sub Form_Activate() ResizeTable End Public Sub cvwLang_Compare((Key) As String, OtherKey As String) Dim iVal, iOtherVal As Integer Dim iComp As Integer iComp = String.Comp(cvwLang[Key][0], cvwLang[OtherKey][0]) Select Case cvwLang.Columns.Sort Case 1 iVal = CInt(Trim$(Replace(cvwLang[Key][1], "%", ""))) iOtherVal = CInt(Trim(Replace(cvwLang[OtherKey][1], "%", ""))) If iVal > iOtherVal Then iComp = 1 Else If iVal < iOtherVal Then iComp = -1 Endif Case 2 iComp = Sgn(CInt(Trim(cvwLang[Key][2])) - CInt(Trim(cvwLang[OtherKey][2]))) Case 3 iComp = String.Comp(cvwLang[Key][3], cvwLang[OtherKey][3]) Case 4 iVal = Stat(Language.GetPath(Key, "po")).Size iOtherVal = Stat(Language.GetPath(OtherKey, "po")).Size If iVal < iOtherVal Then iComp = -1 Else If iVal > iOtherVal Then iComp = 1 Endif End Select Finally cvwLang.Compare = iComp End Public Sub panTranslate_Arrange() ResizeTable End Public Sub tabTranslate_Click() If tabTranslate.Index = 1 Then UpdateStat End Public Sub chkBrowse_Click() dchImport.FileView.Enabled = chkBrowse.Value = 0 End Public Sub cmbLangSource_Click() SetLang($sLang) End Public Sub Form_Arrange() ResizeTable End Public Sub btnNextTranslated_Click() Dim sKey As String With cvwTranslate sKey = .Key .MoveCurrent() Do .MoveBelow() If Not .Available Then .MoveFirst() Endif If .Item[1] Then .Item.EnsureVisible .Item.Selected = True Return Endif If .Item.Key = sKey Then Return Loop End With End Public Sub btnPreviousTranslated_Click() Dim sKey As String With cvwTranslate sKey = .Key .MoveCurrent() Do .MoveAbove() If Not .Available Then .MoveLast() Endif If .Item[1] Then .Item.EnsureVisible .Item.Selected = True Return Endif If .Item.Key = sKey Then Return Loop End With End Private Sub StripLang(sLang As String) As String Return Replace(sLang, "_", "-") End Private Sub GetAutomaticTranslation(sText As String) As String Dim sLangSrc As String Dim sLangDest As String Dim sResult As String Dim iPos As Integer Dim iPos2 As Integer Dim sDigit As String Dim aText As String[] Dim I As Integer Inc Application.Busy If cmbLangSource.Index > 0 Then sLangSrc = Language.FromName(cmbLangSource.Text) Else sLangSrc = Project.DefaultLanguage Endif sLangSrc = StripLang(sLangSrc) sLangDest = StripLang(Language.FromName(cmbLang.Text)) aText = New String[] Do iPos = InStr(sText, "\\n") If iPos = 0 Then aText.Add(sText) Break Else aText.Add(Left(sText, iPos - 1)) sText = Mid$(sText, iPos + 2) Endif Loop For I = 0 To aText.Max sText = aText[I] If Not Trim(sText) Then Continue Do iPos = InStr(sText, "&", iPos + 1) If iPos = 0 Then Break If IsDigit(Mid$(sText, iPos + 1, 1)) Then sText = Left(sText, iPos - 1) & "[-" & Mid$(sText, iPos + 1, 1) & "-]" & Mid$(sText, iPos + 2) Else If Mid$(sText, iPos + 1, 1) = "{" Then iPos2 = InStr(sText, "}", iPos + 1) If iPos2 Then If IsDigit(Mid$(sText, iPos + 2, iPos2 - iPos - 1)) Then sText = Left$(sText, iPos - 1) & "[-" & Mid$(sText, iPos + 2, iPos2 - iPos - 1) & "-]" & Mid$(sText, iPos2 + 1) Endif Endif Endif Loop Exec [$sTranslateShell, "-e", $sTranslateEngine, "-b", sText, sLangSrc & ":" & sLangDest] To sResult iPos = 0 Do iPos = InStr(sResult, "[-", iPos + 1) If iPos = 0 Then Break iPos2 = InStr(sResult, "-]", iPos + 1) If iPos2 Then sDigit = Trim(Mid$(sResult, iPos + 2, iPos2 - iPos - 2)) If Len(sDigit) = 1 Then sResult = Left(sResult, iPos - 1) & "&" & sDigit & Mid$(sResult, iPos2 + 2) Else If Len(sDigit) > 1 Then sResult = Left(sResult, iPos - 1) & "&{" & sDigit & "}" & Mid$(sResult, iPos2 + 2) Endif Endif Loop aText[I] = Trim(sResult) Next sResult = aText.Join("\\n") Dec Application.Busy If sResult Then If String.Left(sText) = String.UCase(String.Left(sText)) Then sResult = String.UCaseFirst(sResult) Else If String.Left(sText) = String.LCase(String.Left(sText)) Then sResult = String.LCase(String.Left(sResult)) & String.Mid$(sResult, 2) Endif Endif Return sResult End Public Sub btnAutoTrans_Click() Dim sText As String sText = GetAutomaticTranslation(txtOrig.Text) If Not sText Then Message.Warning(("Automatic translation has failed.")) Return Endif txtTranslate.Text = sText End Public Sub mnuAutoTrans_Click() Dim sText As String If Message.Question(("Do you want to fill the translation automatically?"), ("Fill"), ("Cancel")) = 2 Then Return Inc Application.Busy cvwTranslate.MoveFirst While cvwTranslate.Available If Not cvwTranslate.Item[1] Then cvwTranslate.Item.Selected = True cvwTranslate.Item.EnsureVisible Wait sText = GetAutomaticTranslation(txtOrig.Text) If Not sText Then Message.Warning(("Automatic translation has failed.")) Break Endif txtTranslate.Text = sText Wait Endif cvwTranslate.MoveNext Wend DisplayTrans $bModify = True SaveTranslate Dec Application.Busy End gambas-3.16.3/app/src/gambas3/.src/Translation/FTranslate.form000066400000000000000000000216251411575327000240300ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,116,76) Text = ("Project translation") Icon = Picture["icon:/small/language"] Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { mnuTranslation Menu Visible = False { mnuNew Menu Text = Shortcut(("New"), "N") & "..." Picture = Picture["icon:/small/new"] } { mnuReload Menu Text = Shortcut(("Reload"), "R") Picture = Picture["icon:/small/undo"] } { mnuDelete Menu Text = Shortcut(("Delete"), "D") Picture = Picture["icon:/small/delete"] } { Menu1 Menu } { mnuAutoTrans Menu Text = ("Automatic translation") & "..." Picture = Picture["icon:/small/fill"] } { Menu2 Menu } { mnuCopy Menu Text = ("Copy") Picture = Picture["icon:/small/copy"] { mnuCopyUntranslated Menu Text = Shortcut(("Untranslated strings"), "U") & "..." } { mnuCopyTranslated Menu Text = Shortcut(("Translated strings"), "T") & "..." } { mnuCopyAll Menu Text = Shortcut(("All strings"), "A") & "..." } } { mnuExport Menu Text = ("Export") Picture = Picture["icon:/small/save-as"] { mnuExportUntranslated Menu Text = Shortcut(("Untranslated strings"), "U") & "..." } { mnuExportTranslated Menu Text = Shortcut(("Translated strings"), "T") & "..." } { mnuExportAll Menu Text = Shortcut(("All strings"), "A") & "..." } } } { tabTranslate TabPanel MoveScaled(1,1,107,72) Expand = True Arrangement = Arrange.Vertical Count = 3 Index = 0 Text = ("Translation") { panTranslate VBox MoveScaled(1,1,105,6) Spacing = True Margin = True { HBox2 HBox MoveScaled(1,0,102,4) { btnMenu MenuButton MoveScaled(0,0,6,4) AutoResize = True Picture = Picture["icon:/small/language"] Border = False Menu = "mnuTranslation" MenuOnly = True } { cmbLangSource ComboBox MoveScaled(6,0,21,4) Expand = True ReadOnly = True } { PictureBox2 PictureBox MoveScaled(28,0,4,4) Picture = Picture["icon:/small/right"] Alignment = Align.Center } { cmbLang ComboBox MoveScaled(32,0,18,4) Font = Font["Bold"] Expand = True ReadOnly = True } { btnNew ToolButton mnuNew Name = "btnNew" MoveScaled(50,0,4,4) ToolTip = ("Add a new translation") Picture = Picture["icon:/small/add"] } { Panel8 Panel MoveScaled(55,0,3,4) } { Label1 Label MoveScaled(63,0,7,4) AutoResize = True Text = ("Show") } { Panel9 Panel MoveScaled(72,0,1,4) } { cmbFileChoice ComboBox MoveScaled(76,0,24,4) Expand = True ReadOnly = True } } } { Separator6 Separator MoveScaled(30,8,10,0) } { panToolbar HBox MoveScaled(3,10,91,4) { btnSave ToolButton MoveScaled(0,0,9,4) ToolTip = ("Save translation") AutoResize = True Text = ("Save") Picture = Picture["icon:/small/save"] } { btnVerify ToolButton MoveScaled(12,0,11,4) ToolTip = ("Verify the translation") AutoResize = True Text = ("Verify") Picture = Picture["icon:/small/apply"] } { Separator7 Separator MoveScaled(25,0,0,4) } { txtFind ButtonBox MoveScaled(33,0,16,4) Expand = True Picture = Picture["icon:/small/find"] Border = False } } { Separator2 Separator MoveScaled(21,15,11,0) } { VSplit1 VSplit MoveScaled(1,17,98,44) Expand = True { cvwTranslate ColumnView MoveScaled(7,2,70,8) Expand = True Sorted = True Header = False AutoResize = False Border = False ScrollBar = Scroll.Vertical } { VBox2 VBox MoveScaled(3,15,85,28) Expand = True { panComment HBox MoveScaled(7,0,11,4) } { Separator4 Separator MoveScaled(0,4,15,0) } { Panel7 Panel MoveScaled(1,6,40,6) Expand = True Arrangement = Arrange.Fill Padding = 2 { txtOrig TextArea MoveScaled(0,0,39,5) Background = Color.Background ReadOnly = True Wrap = True Border = False } } { Separator5 Separator MoveScaled(3,13,15,0) } { panTransToolbar HBox MoveScaled(1,15,82,4) { btnNextTranslated ToolButton MoveScaled(1,0,4,4) ToolTip = ("Find next translated string") Picture = Picture["icon:/small/down"] } { btnPreviousTranslated ToolButton MoveScaled(5,0,4,4) ToolTip = ("Find previous translated string") Picture = Picture["icon:/small/up"] } { btnPreviousUntranslated ToolButton MoveScaled(9,0,4,4) ToolTip = ("Find previous untranslated string") Picture = Picture["icon:/small/rewind"] } { btnNextUntranslated ToolButton MoveScaled(13,0,4,4) ToolTip = ("Find next untranslated string") Picture = Picture["icon:/small/forward"] } { Separator9 Separator MoveScaled(19,0,0,4) } { btnClear ToolButton MoveScaled(21,0,4,4) ToolTip = ("Clear this translation") Picture = Picture["icon:/small/delete"] } { btnDoNotTranslate ToolButton MoveScaled(25,0,4,4) ToolTip = ("This string must not be translated") Picture = Picture["icon:/small/warning"] } { btnCopy ToolButton MoveScaled(29,0,4,4) ToolTip = ("Copy untranslated string") Picture = Picture["icon:/small/copy"] } { btnAutoTrans ToolButton MoveScaled(34,0,23,4) AutoResize = True Text = ("Automatic translation") Picture = Picture["icon:/small/fill"] } } { Separator8 Separator MoveScaled(1,20,15,0) } { Panel1 Panel MoveScaled(1,21,40,6) Background = Color.TextBackground Expand = True Arrangement = Arrange.Fill Padding = 2 { txtTranslate TextArea MoveScaled(0,0,39,5) Wrap = True Border = False } } } } { Separator1 Separator MoveScaled(15,62,15,0) } { HBox6 Panel MoveScaled(1,63,102,4) Arrangement = Arrange.Horizontal AutoResize = True Spacing = True Margin = True { PictureBox3 PictureBox MoveScaled(0,0,4,4) Picture = Picture["icon:/medium/info"] AutoResize = True Alignment = Align.Center } { lblInfo Label MoveScaled(11,0,9,3) Expand = True AutoResize = True } { btnOK Button MoveScaled(83,0,18,4) AutoResize = True Text = Shortcut(("Close"), "C") Picture = Picture["icon:/small/close"] Cancel = True } } Index = 1 Text = ("Statistics") { cvwLang ColumnView MoveScaled(1,1,19,25) Mouse = Mouse.Arrow Expand = True Mode = Select.None Sorted = True Header = False Resizable = True Border = False ScrollBar = Scroll.Vertical } Index = 2 Text = ("Import") { dchImport DirChooser MoveScaled(2,1,100,48) Expand = True Border = False ShowFile = True ShowDetailed = True ShowSplitter = False } { Separator3 Separator MoveScaled(19,51,16,0) } { HBox4 HBox MoveScaled(1,55,100,10) Spacing = True Margin = True { Panel4 VBox MoveScaled(1,1,53,8) AutoResize = True { chkBrowse CheckBox MoveScaled(0,0,33,4) AutoResize = True Text = ("Import all translations recursively") } { chkReplace CheckBox MoveScaled(0,4,33,4) AutoResize = True Text = ("Replace existing translations") } } { Panel5 Panel MoveScaled(60,3,1,4) Expand = True } { Panel3 VBox MoveScaled(68,2,28,6) AutoResize = True Invert = True { btnImport Button MoveScaled(0,0,18,4) ToolTip = ("Import a translation file") AutoResize = True Text = Shortcut(("Import"), "I") Picture = Picture["icon:/small/open"] } } } Index = 0 } } gambas-3.16.3/app/src/gambas3/.src/Translation/Language.module000066400000000000000000000135211411575327000240260ustar00rootroot00000000000000' Gambas module file Private Name As New Collection Private EnglishName As New Collection Public Sub _init() Name["af"] = ("Afrikaans (South Africa)") EnglishName["af"] = "Afrikaans" Name["ar"] = ("Arabic (Egypt)") Name["ar_TN"] = ("Arabic (Tunisia)") EnglishName["ar"] = "Arabic" Name["az"] = ("Azerbaijani (Azerbaijan)") EnglishName["az"] = "Azerbaijani" Name["bg"] = ("Bulgarian (Bulgaria)") EnglishName["bg"] = "Bulgarian" Name["ca"] = ("Catalan (Catalonia, Spain)") 'Name["ca_ES"] = ("Catalan (Catalonia, Spain)") EnglishName["ca"] = "Catalan" Name["cy"] = ("Welsh (United Kingdom)") EnglishName["cy"] = "Welsh" Name["cs"] = ("Czech (Czech Republic)") EnglishName["cs"] = "Czech" Name["da"] = ("Danish (Denmark)") EnglishName["da"] = "Danish" Name["de"] = ("German (Germany)") Name["de_BE"] = ("German (Belgium)") EnglishName["de"] = "German" Name["el"] = ("Greek (Greece)") EnglishName["el"] = "Greek" Name["en"] = ("English (common)") Name["en_GB"] = ("English (United Kingdom)") Name["en_US"] = ("English (U.S.A.)") Name["en_AU"] = ("English (Australia)") Name["en_CA"] = ("English (Canada)") EnglishName["en"] = "English" Name["eo"] = ("Esperanto (Anywhere!)") EnglishName["eo"] = "Esperanto" Name["es"] = ("Spanish (common)") Name["es_ES"] = ("Spanish (Spain)") Name["es_AR"] = ("Spanish (Argentina)") EnglishName["es"] = "Spanish" Name["et_EE"] = ("Estonian (Estonia)") EnglishName["et"] = "Estonian" Name["eu"] = ("Basque (Basque country)") EnglishName["eu"] = "Basque" Name["fa"] = ("Farsi (Iran)") EnglishName["fa"] = "Farsi" Name["fi"] = ("Finnish (Finland)") EnglishName["fi"] = "Finnish" Name["fr"] = ("French (France)") Name["fr_BE"] = ("French (Belgium)") Name["fr_CA"] = ("French (Canada)") Name["fr_CH"] = ("French (Switzerland)") EnglishName["fr"] = "French" Name["gl_ES"] = ("Galician (Spain)") EnglishName["gl"] = "Galician" Name["he"] = ("Hebrew (Israel)") EnglishName["he"] = "Hebrew" Name["hi"] = ("Hindi (India)") EnglishName["hi"] = "Hindi" Name["hu"] = ("Hungarian (Hungary)") EnglishName["hu"] = "Hungarian" Name["hr"] = ("Croatian (Croatia)") EnglishName["hr"] = "Croatian" Name["id"] = ("Indonesian (Indonesia)") EnglishName["id"] = "Indonesian" Name["ir"] = ("Irish (Ireland)") EnglishName["ir"] = "Irish" Name["is"] = ("Icelandic (Iceland)") EnglishName["is"] = "Icelandic" Name["it"] = ("Italian (Italy)") EnglishName["it"] = "Italian" Name["ja"] = ("Japanese (Japan)") EnglishName["ja"] = "Japanase" Name["km"] = ("Khmer (Cambodia)") EnglishName["km"] = "Khmer" Name["ko"] = ("Korean (Korea)") EnglishName["ko"] = "Korean" Name["la"] = ("Latin") EnglishName["la"] = "Latin" Name["lt"] = ("Lithuanian (Lithuania)") EnglishName["lt"] = "Lithuanian" Name["ml"] = ("Malayalam (India)") EnglishName["ml"] = "Malayalam" Name["mk"] = ("Macedonian (Republic of Macedonia)") EnglishName["mk"] = "Macedonian" Name["nl"] = ("Dutch (Netherlands)") Name["nl_BE"] = ("Dutch (Belgium)") EnglishName["nl"] = "Dutch" Name["no"] = ("Norwegian (Norway)") EnglishName["no"] = "Norwegian" Name["pa"] = ("Punjabi (India)") EnglishName["pa"] = "Punjabi" Name["pl"] = ("Polish (Poland)") EnglishName["pl"] = "Polish" Name["pt"] = ("Portuguese (Portugal)") Name["pt_BR"] = ("Portuguese (Brazil)") EnglishName["pt"] = "Portuguese" Name["qcv_ES"] = ("Valencian (Valencian Community, Spain)") EnglishName["qcv"] = "Valencian" Name["ro"] = ("Romanian (Romania)") EnglishName["ro"] = "Romanian" Name["ru"] = ("Russian (Russia)") EnglishName["ru"] = "Russian" Name["sl"] = ("Slovenian (Slovenia)") EnglishName["sl"] = "Slovenian" Name["sq"] = ("Albanian (Albania)") EnglishName["sq"] = "Albanian" Name["sr"] = ("Serbian (Serbia & Montenegro)") EnglishName["sr"] = "Serbian" Name["sv"] = ("Swedish (Sweden)") EnglishName["sv"] = "Swedish" Name["tr"] = ("Turkish (Turkey)") EnglishName["tr"] = "Turkish" Name["uk"] = ("Ukrainian (Ukrain)") EnglishName["uk"] = "Ukrainian" Name["vi"] = ("Vietnamese (Vietnam)") EnglishName["vi"] = "Vietnamese" Name["wa"] = ("Wallon (Belgium)") EnglishName["wa"] = "Wallon" Name["zh"] = ("Simplified chinese (China)") Name["zh_TW"] = ("Traditional chinese (Taiwan)") EnglishName["zh"] = "Chinese" End Public Sub Find(Optional sLang As String, Optional cCol As Collection) As String Dim iPos As Integer Dim sOrg As String If Not sLang Then sLang = System.Language If Not cCol Then cCol = Name sOrg = sLang Do If cCol.Exist(sLang) Then Return sLang iPos = InStr(sLang, ".") If iPos Then sLang = Left$(sLang, iPos - 1) Continue Endif iPos = InStr(sLang, "_") If iPos Then sLang = Left$(sLang, iPos - 1) Continue Endif Return sOrg Loop End Public Function ToName(Optional sLang As String) As String Dim sName As String sLang = Find(sLang) sName = Name[sLang] If sName Then Return sName Else Return ("Unknown") & " (" & sLang & ")" Endif End Public Function ToEnglishName(sLang As String) As String Return EnglishName[Find(sLang, EnglishName)] End Public Function FromName(sName As String) As String Dim sStr As String 'PRINT "sName = "; sName For Each sStr In Name If sStr = sName Then Return Name.Key Next End Public Function GetAll(Optional bCurrentOnly As Boolean) As String[] Dim aLang As New String[] Dim sStr As String If bCurrentOnly Then For Each sStr In Dir(Project.Dir &/ ".lang", "*.po") aLang.Add(File.BaseName(sStr)) Next Else For Each sStr In Name aLang.Add(Name.Key) Next Endif aLang.Sort(gb.Language) Return aLang End Public Sub GetPath(sLang As String, sExt As String) As String Return Project.Dir &/ ".lang" &/ sLang & "." & sExt End gambas-3.16.3/app/src/gambas3/.src/Util.module000066400000000000000000000035611411575327000207250ustar00rootroot00000000000000' Gambas module file Public Sub GetFileSize(iSize As Long) As String If iSize < 1000 Then Return Subst(("&1 B"), CStr(iSize)) Else If iSize < 1000000 Then Return Subst(("&1 KiB"), Format(iSize / 1024, "0.#")) Else If iSize < 1000000000 Then Return Subst(("&1 MiB"), Format(iSize / 1048576, "0.#")) Else Return Subst(("&1 GiB"), Format(iSize / 1073741824, "0.#")) Endif End Public Sub CompressForGmail(sPath As String) As String Dim sDest As String Dim hFile As File Dim sBase64 As String Dim I As Integer sDest = sPath & ".gmail.txt" hFile = Open sDest For Output Create Print #hFile, "" sBase64 = Base64(File.Load(sPath)) For I = 1 To Len(sBase64) Step 76 Print #hFile, Mid$(sBase64, I, 76) Next Print #hFile, "" Close #hFile Try Kill sPath Return sDest End Public Sub UncompressForGmail(sPath As String) Dim aData As String[] Dim sDest As String aData = Split(File.Load(sPath), "\n") If Not aData.Last Then aData.Remove(aData.Max) If aData[0] Not Like "" Or If aData.Last <> "" Then Error.Raise(("Incorrect format")) aData.Remove(0) aData.Remove(aData.Max) sDest = sPath & ".tmp" File.Save(sDest, FromBase64(aData.Join(""))) Try Kill sPath If sPath Ends ".gmail.txt" Then Move sDest To Left(sPath, -10) Else Move sDest To sPath Endif End Public Sub Main() Dim A As Float Print Chr$(34); For A = 0 To 6 If A > 0 Then Print ";"; Print CStr(Round(Cos(Pi(2) * A / 6), -10)); ","; CStr(Round(Sin(Pi(2) * A / 6), -10)); Next Print Chr$(34) Print "["; For A = 0 To 6 If A > 0 Then Print ","; Print CStr(Round(Cos(Pi(2) * A / 6), -10)); ","; CStr(Round(Sin(Pi(2) * A / 6), -10)); Next Print "]" End gambas-3.16.3/app/src/gambas3/.src/Util/000077500000000000000000000000001411575327000175115ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Util/MErrorMessage.module000066400000000000000000000512441411575327000234410ustar00rootroot00000000000000' Gambas module file '{ Private Const ERR_001 As String = ("&1 cannot be static") Private Const ERR_002 As String = ("&1 declaration does not match") Private Const ERR_003 As String = ("&1 is declared but is not a function") Private Const ERR_004 As String = ("&1 is not a structure") Private Const ERR_005 As String = ("&1 is not declared") Private Const ERR_006 As String = ("&1 must be static") Private Const ERR_007 As String = ("&1: not in archive") Private Const ERR_008 As String = ("&1: syntax error") Private Const ERR_009 As String = ("&1: syntax error in form file") Private Const ERR_010 As String = ("&1: too many nested containers") Private Const ERR_011 As String = ("'&1' already declared") Private Const ERR_012 As String = ("'&1.&2' is incorrectly overridden in class '&3'") Private Const ERR_013 As String = ("'&1.&2' is not a property") Private Const ERR_014 As String = ("'&1.&2' is not static") Private Const ERR_015 As String = ("'&1.&2' is read only") Private Const ERR_016 As String = ("'&1.&2' is static") Private Const ERR_017 As String = ("'&1.&2' is write only") Private Const ERR_018 As String = ("',' or ')'") Private Const ERR_019 As String = ("A module cannot raise events") Private Const ERR_020 As String = ("A property implementation cannot be public") Private Const ERR_021 As String = ("A property must be public") Private Const ERR_022 As String = ("Access forbidden") Private Const ERR_023 As String = ("Alias name must be a string") Private Const ERR_024 As String = ("Ambiguous expression. Please use brackets") Private Const ERR_025 As String = ("Argument cannot be passed by reference") Private Const ERR_026 As String = ("Arrays of structure are not supported") Private Const ERR_027 As String = ("Assertion failed") Private Const ERR_028 As String = ("Bad archive: &1: &2") Private Const ERR_029 As String = ("Bad argument") Private Const ERR_030 As String = ("Bad character constant in string") Private Const ERR_031 As String = ("Bad constant type") Private Const ERR_032 As String = ("Bad event handler in &1.&2(): &3") Private Const ERR_033 As String = ("Bad expression: &1") Private Const ERR_034 As String = ("Bad form file version") Private Const ERR_035 As String = ("Bad format in section: ") Private Const ERR_036 As String = ("Bad format string") Private Const ERR_037 As String = ("Bad number of dimensions") Private Const ERR_038 As String = ("Bad project file: line &1: &2") Private Const ERR_039 As String = ("Bad regular expression: &1") Private Const ERR_040 As String = ("Bad string conversion") Private Const ERR_041 As String = ("Bad subscript range") Private Const ERR_042 As String = ("Bad use of virtual class") Private Const ERR_043 As String = ("Bad version string") Private Const ERR_044 As String = ("Cannot change current directory to '&1': &2") Private Const ERR_045 As String = ("Cannot create .startup file") Private Const ERR_046 As String = ("Cannot create action file: &1") Private Const ERR_047 As String = ("Cannot create callback: &1") Private Const ERR_048 As String = ("Cannot create class information: &1: &2") Private Const ERR_049 As String = ("Cannot create file: &1") Private Const ERR_050 As String = ("Cannot create temporary archive file: &1") Private Const ERR_051 As String = ("Cannot find dynamic library '&1': &2") Private Const ERR_052 As String = ("Cannot find symbol '&2' in dynamic library '&1'") Private Const ERR_053 As String = ("Cannot inherit itself") Private Const ERR_054 As String = ("Cannot inherit twice") Private Const ERR_055 As String = ("Cannot instantiate native types") Private Const ERR_056 As String = ("Cannot load class '&1': &2&3") Private Const ERR_057 As String = ("Cannot load component '&1': &2") Private Const ERR_058 As String = ("Cannot load source file: &1") Private Const ERR_059 As String = ("Cannot make executable: &1: &2") Private Const ERR_060 As String = ("Cannot mix NEW and embedded array") Private Const ERR_061 As String = ("Cannot mix NEW and embedded structure") Private Const ERR_062 As String = ("Cannot open file '&1': &2") Private Const ERR_063 As String = ("Cannot open file: &1") Private Const ERR_064 As String = ("Cannot raise events in static function") Private Const ERR_065 As String = ("Cannot read file: &1: &2") Private Const ERR_066 As String = ("Cannot register class '&1'") Private Const ERR_067 As String = ("Cannot remove file '&1': &2") Private Const ERR_068 As String = ("Cannot rename file '&1' to '&2': &3") Private Const ERR_069 As String = ("Cannot run child process: &1&2") Private Const ERR_070 As String = ("Cannot set file owner: &1: &2") Private Const ERR_071 As String = ("Cannot use &1 twice") Private Const ERR_072 As String = ("Cannot use &1 with &2") Private Const ERR_073 As String = ("Cannot use NEW operator there") Private Const ERR_074 As String = ("Class '&1' is not creatable") Private Const ERR_075 As String = ("Comparison operator expected") Private Const ERR_076 As String = ("Component name must be a string") Private Const ERR_077 As String = ("Component not found: &1") Private Const ERR_078 As String = ("Constant string expected") Private Const ERR_079 As String = ("Contents already declared") Private Const ERR_080 As String = ("Default case already defined") Private Const ERR_081 As String = ("Default case must be the last one") Private Const ERR_082 As String = ("Device is full") Private Const ERR_083 As String = ("Directory is not empty") Private Const ERR_084 As String = ("Division by zero") Private Const ERR_085 As String = ("Dynamic symbols cannot be used in static function") Private Const ERR_086 As String = ("Embedded arrays are forbidden here") Private Const ERR_087 As String = ("End of file") Private Const ERR_088 As String = ("Equality or inequality operator expected") Private Const ERR_089 As String = ("Expression too complex") Private Const ERR_090 As String = ("Expression too complex. Too many operands") Private Const ERR_091 As String = ("Extern library name must be a string") Private Const ERR_092 As String = ("File already exists") Private Const ERR_093 As String = ("File is a directory") Private Const ERR_094 As String = ("File is locked") Private Const ERR_095 As String = ("File name is too long") Private Const ERR_096 As String = ("File or directory does not exist") Private Const ERR_097 As String = ("Forbidden GOSUB") Private Const ERR_098 As String = ("Forbidden GOTO") Private Const ERR_099 As String = ("Free object referenced") Private Const ERR_100 As String = ("Illegal instruction") Private Const ERR_101 As String = ("Internal compiler error") Private Const ERR_102 As String = ("Invalid assignment") Private Const ERR_103 As String = ("Invalid date") Private Const ERR_104 As String = ("Invalid object") Private Const ERR_105 As String = ("Invalid path") Private Const ERR_106 As String = ("IsMissing() requires a function argument") Private Const ERR_107 As String = ("Jump is too far") Private Const ERR_108 As String = ("Label '&1' not declared") Private Const ERR_109 As String = ("Library name must be a string") Private Const ERR_110 As String = ("Loop variable already in use") Private Const ERR_111 As String = ("Loop variable cannot be an argument") Private Const ERR_112 As String = ("Loop variable cannot be global") Private Const ERR_113 As String = ("ME cannot be used in a static function") Private Const ERR_114 As String = ("Mathematic error") Private Const ERR_115 As String = ("Missing #Endif") Private Const ERR_116 As String = ("Missing ']'") Private Const ERR_117 As String = ("Missing '}'") Private Const ERR_118 As String = ("Missing operator") Private Const ERR_119 As String = ("Missing right brace") Private Const ERR_120 As String = ("Multidimensional array") Private Const ERR_121 As String = ("NEW cannot have arguments passed by reference") Private Const ERR_122 As String = ("No instantiation method") Private Const ERR_123 As String = ("No parent class") Private Const ERR_124 As String = ("No return value") Private Const ERR_125 As String = ("No startup method") Private Const ERR_126 As String = ("Non terminated string") Private Const ERR_127 As String = ("Not a directory: &1") Private Const ERR_128 As String = ("Not a function") Private Const ERR_129 As String = ("Not a procedure") Private Const ERR_130 As String = ("Not an array") Private Const ERR_131 As String = ("Not an enumeration") Private Const ERR_132 As String = ("Not an object") Private Const ERR_133 As String = ("Not enough argument to New()") Private Const ERR_134 As String = ("Not enough arguments") Private Const ERR_135 As String = ("Not enough arguments to &1()") Private Const ERR_136 As String = ("Not implemented yet") Private Const ERR_137 As String = ("Not supported") Private Const ERR_138 As String = ("Null object") Private Const ERR_139 As String = ("Number") Private Const ERR_140 As String = ("Number or Date expected") Private Const ERR_141 As String = ("Number or date") Private Const ERR_142 As String = ("Number, Date or String") Private Const ERR_143 As String = ("Number, String or Object") Private Const ERR_144 As String = ("Object") Private Const ERR_145 As String = ("Out of bounds") Private Const ERR_146 As String = ("Out of memory") Private Const ERR_147 As String = ("Out of range") Private Const ERR_148 As String = ("Overflow") Private Const ERR_149 As String = ("Overriding an already inherited class is forbidden") Private Const ERR_150 As String = ("Read error") Private Const ERR_151 As String = ("Read-only array") Private Const ERR_152 As String = ("Return value datatype not specified in function declaration") Private Const ERR_153 As String = ("STOP instruction encountered") Private Const ERR_154 As String = ("SUPER cannot be used alone") Private Const ERR_155 As String = ("Serialization error") Private Const ERR_156 As String = ("Stack overflow") Private Const ERR_157 As String = ("Standard type") Private Const ERR_158 As String = ("Stream is closed") Private Const ERR_159 As String = ("String expected") Private Const ERR_160 As String = ("Structures must be public") Private Const ERR_161 As String = ("Subroutine arguments cannot be passed by reference") Private Const ERR_162 As String = ("Syntax error") Private Const ERR_163 As String = ("Syntax error at function declaration") Private Const ERR_164 As String = ("Syntax error in event name") Private Const ERR_165 As String = ("Syntax error in file open mode") Private Const ERR_166 As String = ("Syntax error in return type") Private Const ERR_167 As String = ("Syntax error. &1 expected") Private Const ERR_168 As String = ("Syntax error. '...' must be the last argument") Private Const ERR_169 As String = ("Syntax error. CASE or DEFAULT expected after SELECT") Private Const ERR_170 As String = ("Syntax error. CLASS needs an identifier") Private Const ERR_171 As String = ("Syntax error. Cannot use this syntax in assignment") Private Const ERR_172 As String = ("Syntax error. INHERITS needs a class name") Private Const ERR_173 As String = ("Syntax error. Identifier expected") Private Const ERR_174 As String = ("Syntax error. Identifier expected for property name") Private Const ERR_175 As String = ("Syntax error. Identifier expected for property synonymous") Private Const ERR_176 As String = ("Syntax error. Identifier expected for property variable") Private Const ERR_177 As String = ("Syntax error. Invalid identifier in function name") Private Const ERR_178 As String = ("Syntax error. Invalid optional parameter") Private Const ERR_179 As String = ("Syntax error. Invalid property type") Private Const ERR_180 As String = ("Syntax error. Invalid return type") Private Const ERR_181 As String = ("Syntax error. Invalid type description of &1 argument") Private Const ERR_182 As String = ("Syntax error. Invalid type description of &1 field") Private Const ERR_183 As String = ("Syntax error. Needless arguments") Private Const ERR_184 As String = ("Syntax error. Point syntax used outside of WITH / END WITH") Private Const ERR_185 As String = ("Syntax error. STRUCT needs an identifier") Private Const ERR_186 As String = ("Syntax error. The &1 argument is not a valid identifier") Private Const ERR_187 As String = ("Syntax error. The &1 field is not a valid identifier") Private Const ERR_188 As String = ("Syntax error. VarPtr() takes only one identifier") Private Const ERR_189 As String = ("System error #&1: &2") Private Const ERR_190 As String = ("The '!' operator must be followed by an identifier") Private Const ERR_191 As String = ("The '.' operator must be followed by an identifier") Private Const ERR_192 As String = ("The function must take a fixed number of arguments") Private Const ERR_193 As String = ("The special method &1 cannot be a function") Private Const ERR_194 As String = ("The special method &1 cannot be implemented") Private Const ERR_195 As String = ("The special method &1 cannot be static") Private Const ERR_196 As String = ("The special method &1 must be a function") Private Const ERR_197 As String = ("The special method &1 must be public") Private Const ERR_198 As String = ("The special method &1 must be static") Private Const ERR_199 As String = ("The special method &1 must return a boolean") Private Const ERR_200 As String = ("The special method &1 must take a variable number of arguments only") Private Const ERR_201 As String = ("The special method &1 must take at least one argument") Private Const ERR_202 As String = ("The special method &1 takes no arguments") Private Const ERR_203 As String = ("The special method must return an integer") Private Const ERR_204 As String = ("The special method must take exactly one argument") Private Const ERR_205 As String = ("The special method must take exactly two arguments") Private Const ERR_206 As String = ("The special method signature is incorrect") Private Const ERR_207 As String = ("This expression cannot be a statement") Private Const ERR_208 As String = ("This expression cannot be passed by reference") Private Const ERR_209 As String = ("Too many arguments") Private Const ERR_210 As String = ("Too many arguments to &1()") Private Const ERR_211 As String = ("Too many array declarations") Private Const ERR_212 As String = ("Too many constants") Private Const ERR_213 As String = ("Too many different classes used") Private Const ERR_214 As String = ("Too many dimensions") Private Const ERR_215 As String = ("Too many dynamic variables") Private Const ERR_216 As String = ("Too many events") Private Const ERR_217 As String = ("Too many expressions in CASE") Private Const ERR_218 As String = ("Too many external functions") Private Const ERR_219 As String = ("Too many functions") Private Const ERR_220 As String = ("Too many imbricated #If...#Endif") Private Const ERR_221 As String = ("Too many labels") Private Const ERR_222 As String = ("Too many local variables") Private Const ERR_223 As String = ("Too many nested control structures.") Private Const ERR_224 As String = ("Too many property synonymous") Private Const ERR_225 As String = ("Too many simultaneous new strings") Private Const ERR_226 As String = ("Too many static variables") Private Const ERR_227 As String = ("Too many unknown symbols") Private Const ERR_228 As String = ("Trailing backslash") Private Const ERR_229 As String = ("Type mismatch") Private Const ERR_230 As String = ("Type mismatch: wanted &1, got &2 instead") Private Const ERR_231 As String = ("Unable to create closure") Private Const ERR_232 As String = ("Unable to get file position") Private Const ERR_233 As String = ("Unable to load class file") Private Const ERR_234 As String = ("Unable to prepare function description") Private Const ERR_235 As String = ("Unexpected &1") Private Const ERR_236 As String = ("Unexpected end of line") Private Const ERR_237 As String = ("Unexpected string") Private Const ERR_238 As String = ("Unknown class '&1'") Private Const ERR_239 As String = ("Unknown error") Private Const ERR_240 As String = ("Unknown file extension") Private Const ERR_241 As String = ("Unknown identifier: &1") Private Const ERR_242 As String = ("Unknown operator") Private Const ERR_243 As String = ("Unknown symbol '&2' in class '&1'") Private Const ERR_244 As String = ("Unknown user or group") Private Const ERR_245 As String = ("Unsupported datatype") Private Const ERR_246 As String = ("Unsupported string conversion") Private Const ERR_247 As String = ("Useless LOCK") Private Const ERR_248 As String = ("VarPtr() argument must be a dynamic, a static or a local variable") Private Const ERR_249 As String = ("Void identifier") Private Const ERR_250 As String = ("Void key") Private Const ERR_251 As String = ("Write error") Private Const ERR_252 As String = ("cannot find component") Private Const ERR_253 As String = ("cannot find library") Private Const ERR_254 As String = ("class name hidden by global declaration: &1") Private Const ERR_255 As String = ("class name hidden by local declaration: &1") Private Const ERR_256 As String = ("constant hidden by local declaration: &1") Private Const ERR_257 As String = ("extern function hidden by local declaration: &1") Private Const ERR_258 As String = ("function hidden by local declaration: &1") Private Const ERR_259 As String = ("global variable hidden by local declaration: &1") Private Const ERR_260 As String = ("integer and boolean mixed with `&1' operator") Private Const ERR_261 As String = ("uninitialized global variable: &1") Private Const ERR_262 As String = ("uninitialized variable: &1") Private Const ERR_263 As String = ("unknown error") Private Const ERR_264 As String = ("unused argument: &1") Private Const ERR_265 As String = ("unused extern function: &1") Private Const ERR_266 As String = ("unused function: &1") Private Const ERR_267 As String = ("unused global variable: &1") Private Const ERR_268 As String = ("unused variable: &1") '} ' E_CHILD specific errors, updated by hand Private Const ERR_CHILD_1 As String = ("cannot open slave pseudo-terminal: ") Private Const ERR_CHILD_2 As String = ("cannot initialize pseudo-terminal: ") Private Const ERR_CHILD_3 As String = ("cannot plug standard input: ") Private Const ERR_CHILD_4 As String = ("cannot plug standard output and standard error: ") Private Const ERR_CHILD_5 As String = ("cannot run executable: ") Private $aErr As String[] Private Sub AddError(sErr As String) If Not Trim(sErr) Then Return If UCase(sErr) = sErr Then Return If $aErr.Exist(sErr) Then Return $aErr.Add(sErr) End Public Sub Main() Dim sErr As String Dim hFile As File Dim sLine As String Dim iPos, iPos2 As Integer Dim sGrep As String Dim iInd As Integer Dim sData As String Dim sPath As String Dim bIgnore As Boolean Dim sRoot As String $aErr = New String[] sRoot = "~/gambas/git/master" For Each sPath In [sRoot &/ "main/gbx/gb_error.c", sRoot &/ "main/gbc/gb_error.c"] hFile = Open sPath While Not Eof(hFile) Line Input #hFile, sLine If InStr(sLine, "const char *const _message[") Then Break Wend Line Input #hFile, sLine Do Line Input #hFile, sLine iPos = InStr(sLine, Chr$(34)) If iPos = 0 Then Break iPos2 = InStr(sLine, Chr$(34), iPos + 1) sErr = Mid$(sLine, iPos + 1, iPos2 - iPos - 1) If Left(sErr) = "." Then sErr = Mid$(sErr, 3) AddError(sErr) Loop Close #hFile Next Shell "cd " & sRoot &/ "main" & "; grep -h \"THROW(\" gbc/*.c share/*.h gbx/*.c" To sGrep For Each sLine In Split(sGrep, "\n") sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine, 2) = "//" Then Continue iPos = InStr(sLine, "THROW(") sLine = Mid$(sLine, iPos) While sLine iPos = InStr(sLine, Chr$(34)) If iPos = 0 Then Break bIgnore = Mid$(sLine, iPos - 2, 2) = "$(" iPos2 = InStr(sLine, Chr$(34), iPos + 1) sErr = Mid$(sLine, iPos + 1, iPos2 - iPos - 1) sLine = Mid$(sLine, iPos2 + 1) If Not bIgnore Then AddError(sErr) Wend Next Shell "cd " & sRoot &/ "main" & "; grep -h \"COMPILE_print(MSG_WARNING,\" gbc/*.c" To sGrep For Each sLine In Split(sGrep, "\n") sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine, 2) = "//" Then Continue iPos = InStr(sLine, "COMPILE_print(") sLine = Mid$(sLine, iPos) While sLine iPos = InStr(sLine, Chr$(34)) If iPos = 0 Then Break 'If Mid$(sLine, iPos - 1, 1) <> "(" Then Continue iPos2 = InStr(sLine, Chr$(34), iPos + 1) sErr = Mid$(sLine, iPos + 1, iPos2 - iPos - 1) sLine = Mid$(sLine, iPos2 + 1) AddError(sErr) Wend Next $aErr.Sort For iInd = 0 To $aErr.Max $aErr[iInd] = "Private Const ERR_" & Format(iInd + 1, "000") & " As String = (" & Quote($aErr[iInd]) & ")" Print $aErr[iInd] Next sPath = sRoot &/ "app/src/gambas3/.src/Util/MErrorMessage.module" sData = File.Load(sPath) iPos = InStr(sData, "\n'{\n") If iPos = 0 Then Return iPos2 = InStr(sData, "\n'}\n", iPos + 1) If iPos = 0 Then Return sData = Left(sData, iPos + 3) & $aErr.Join("\n") & Mid$(sData, iPos2) File.Save(sPath, sData) End gambas-3.16.3/app/src/gambas3/.src/Util/MRemoveAccents.module000066400000000000000000000030231411575327000235710ustar00rootroot00000000000000' Gambas module file Private Const NO_ACCENTS As String = "AEIOUYBCDFGHJKLMNPQRSTVWXZaeiouybcdfghjklmnpqrstvwxz" Public Sub Main() Dim hFont As Font = Font["Gambas,9"] Dim WC As Integer = hFont.TextWidth(" ") Dim hImage As New Image(WC * 2, hFont.Height, Color.White) Dim iCode As Integer Dim iComp As Integer Dim X As Integer Dim iScore As Integer Dim aScore As New Integer[52] Dim aAccent As New String[52] Dim iBest As Integer Dim Y As Integer Dim I As Integer 'For iCode = 65 To 687 For iCode = 7680 To 7935 Print Format(iCode, "###");; String.Chr(iCode);; iBest = 1024 For iComp = 1 To 52 hImage.Fill(Color.White) Paint.Begin(hImage) Paint.Font = hFont Paint.DrawText(Mid$(NO_ACCENTS, iComp, 1) & String.Chr(iCode), 0, 0, WC * 2, hImage.H, Align.TopLeft) Paint.End iScore = 0 For Y = 0 To hImage.H - 1 For X = 0 To WC - 1 If hImage[X, Y] <> hImage[X + WC, Y] Then Inc iScore If hImage[X, Y] = Color.Black Then Inc iScore Endif Next Next aScore[iComp - 1] = iScore If iScore < iBest Then iBest = iScore Next For iComp = 1 To 52 If aScore[iComp - 1] = iBest Then Print Mid$(NO_ACCENTS, iComp, 1); aAccent[iComp - 1] &= String.Chr(iCode) Break Endif Next Print Next For I = 1 To 52 Print aAccent[I - 1]; "["; Mid$(NO_ACCENTS, I, 1); "]"; Next Print End gambas-3.16.3/app/src/gambas3/.src/Util/MSdlDefaultFont.module000066400000000000000000000033561411575327000237220ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hFont As Font = Font["Gambas,10"] Dim hImage As New Image(hFont.TextWidth(" "), hFont.Height, Color.White) Dim C As Integer Dim Y As Integer Dim X As Integer Dim V As Integer Dim hFile As File hFile = Open "~/gambas/git/master/gb.sdl2/src/default_font_data.h" For Create Output To #hFile Print "#define DEFAULT_FONT_WIDTH "; hImage.W Print "#define DEFAULT_FONT_HEIGHT "; hImage.H Print "#define DEFAULT_FONT_ASCENT "; 10 Print "#define DEFAULT_FONT_DESCENT "; 3 Print Print "const char _default_font_33_126[] = {" For C = 33 To 126 GoSub WRITE_CHAR Next Print "};" Print Print "const char _default_font_160_687[] = {" For C = 160 To 687 GoSub WRITE_CHAR Next Print "};" Print Print "const char _default_font_880_1319[] = {" For C = 880 To 1319 GoSub WRITE_CHAR Next Print "};" ' Print ' Print "typedef" ' Print " struct {" ' Print " int start;" ' Print " int end;" ' Print " char *data;" ' Print " }" ' Print "FONT_SLICE;" ' Print ' Print "FONT_SLICE _default_font[] = {" ' Print " { 32, 126, _default_font_32_136 }," ' Print " { 160, 687, _default_font_160_687 }," ' Print " { 0 }" ' Print "};" Output To Default Close #hFile Return WRITE_CHAR: hImage.Fill(Color.White) Paint.Begin(hImage) Paint.Background = Color.Black Paint.Font = hFont Paint.DrawText(String.Chr$(C), 0, 0, hImage.W, hImage.H, Align.TopLeft) Paint.End Print " "; For Y = 0 To hImage.H - 1 V = 0 For X = 0 To hImage.W - 1 If hImage[X, Y] <> Color.White Then V += Shl(1, X) Next If Y Then Print ", "; Print "0x"; Hex$(V, 2); Next Print "," Return End gambas-3.16.3/app/src/gambas3/.src/VersionControl/000077500000000000000000000000001411575327000215625ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/VersionControl/CVersionControl.class000066400000000000000000000034761411575327000257140ustar00rootroot00000000000000' Gambas class file Create Static Public Const Name As String = "" Public Const LongName As String = "" Public Const DoNotPush As Boolean = False Public Const CancelUpdate As Boolean = False Public Const NeedMove As Boolean = True Public Sub AddFile((sPath) As String, Optional (bForce) As Boolean) End Public Sub AddDir((sPath) As String) End Public Sub RemoveFile((sPath) As String, Optional (bForce) As Boolean) End Public Sub RemoveDir((sPath) As String) End Public Sub MoveFile((sOld) As String, (sNew) As String) End Public Sub MoveDir((sOld) As String, (sNew) As String) As Boolean End Public Sub CheckPaths() End Public Sub UpdatePath((sPath) As String, Optional (sPath2) As String) End Public Sub Status(Optional (sPath) As String) As String End Public Sub Commit((sChange) As String, (bDoNotPush) As Boolean) As Boolean End Public Sub Update() As Integer End Public Sub Revert(Optional (sPath) As String) As Boolean End Public Sub InConflict((sPath) As String) As Boolean End Public Sub SolveConflict((sPath) As String, Optional (iAccept) As Integer) As Boolean End Public Sub GetVersion((sDir) As String) As String End Public Sub Diff((sPath) As String, Optional (bFull) As Boolean, (bNoWhiteSpace) As Boolean) As String End Public Sub History((sPath) As String, Optional (sPath2) As String, (bFull) As Boolean) As String End Public Sub HighlightHistory((sText) As String) End Public Sub Info() As Collection End Public Sub CleanUp((sPath) As String) End Public Sub GetBranches(ByRef (sCurrent) As String) As String[] End Public Sub GetDefaultJournal() As String End Public Sub SetBranch((sBranch) As String) End Public Sub CanControlProject() As Boolean End Public Sub ControlProject() As Boolean End Public Sub HasRemote() As Boolean End gambas-3.16.3/app/src/gambas3/.src/VersionControl/CVersionControlGit.class000066400000000000000000000324631411575327000263560ustar00rootroot00000000000000' Gambas class file Inherits CVersionControl Create Static Public Const Name As String = "Git" Public Const LongName As String = "Git" Public Const DoNotPush As Boolean = True Public Const CancelUpdate As Boolean = True Public Const NeedMove As Boolean = False Private $aConflict As String[] = ["DD", "AU", "UD", "UA", "DU", "AA", "UU"] Private $bHasGit As Boolean Private $bCheckGit As Boolean Private $sRoot As String Private $bCanControl As Boolean Private $bCanInit As Boolean Private $bHasRemote As Boolean Private $iPadHistory As Integer Private $hHighlightDiff As TextHighlighter Private Sub Init() If $bCheckGit Then Return $bHasGit = System.Exist("git") $bCheckGit = True End Private Sub RunShell(sCmd As String, Optional bSilent As Boolean) As String Return VersionControl.Shell("cd " & Shell(Project.Dir) & " && " & sCmd, bSilent) End Private Sub FindRoot() As String Dim sDir As String Dim sPath As String Dim sData As String sDir = Project.Dir While Len(sDir) > 1 sPath = sDir &/ ".git" If Exist(sPath) Then If Exist(sPath &/ "HEAD") Then Return sDir Try sData = File.Load(sPath) If sData Begins "gitdir:" Then Return sDir Endif sDir = File.Dir(sDir) Wend End Public Sub Check() As Boolean Dim sResult As String Dim sRoot As String Init() If $bHasGit Then sResult = RunShell("git status --porcelain .project") If Process.LastValue Then $bCanInit = True $bCanControl = False Else $bCanInit = False $bCanControl = sResult Begins "??" If Not $bCanControl Then sRoot = FindRoot() If sRoot Then $sRoot = sRoot $bHasRemote = RunShell("git remote show") Return True Endif Endif Endif Endif End Public Sub GetBranches(ByRef sCurrent As String) As String[] Dim sResult As String Dim sBranch As String Dim aBranches As New String[] Dim bCurrent As Boolean sResult = RunShell("git branch -a", True) For Each sBranch In Split(Trim(sResult), "\n") sBranch = Trim(sBranch) If sBranch Begins "*" Then sBranch = Trim(Mid$(sBranch, 2)) bCurrent = True Else bCurrent = False If sBranch Begins "+ " Then sBranch = Mid$(sBranch, 3) Endif If sBranch Begins "remotes/origin/" Then sBranch = Mid$(sBranch, 16) If InStr(sBranch, " -> ") Then Continue Endif If bCurrent Then sCurrent = sBranch If Not aBranches.Exist(sBranch) Then aBranches.Add(sBranch) Next aBranches.Sort(gb.Natural) Return aBranches End Static Public Sub GetCurrentBranch(Optional sDir As String) As String Dim sCurrent As String If Not sDir Then sDir = Project.Dir sCurrent = Trim(VersionControl.Shell("cd " & Shell(sDir) & " && git branch --show-current", True)) 'If sCurrent = "master" Then sCurrent = "" Return sCurrent End Public Sub Diff(sPath As String, Optional bFull As Boolean, bNoWhiteSpace As Boolean) As String Dim sDiff As String Dim sCmd As String Dim sHead As String Dim sFull As String Dim iPos As Integer Dim sOption As String 'If VersionControl.Shell("cd " & Shell(Project.Dir) & " && git log -1", True) Then If RunShell("git log -1", True) Then sHead = "HEAD" Else sHead = "--staged" Endif If bFull Then sFull = " -U100000" If bNoWhiteSpace Then sOption = " -b --ignore-blank-lines" If IsDir(sPath) Then sCmd = "cd " & Shell(sPath) & " && git diff" & sOption & sFull & " " & sHead & " ." Else sCmd = "cd " & Shell(File.Dir(sPath)) & " && git diff" & sOption & sFull & " " & sHead & " " & Shell(File.Name(sPath)) Endif sDiff = VersionControl.Shell(sCmd) If bFull Then iPos = InStr(sDiff, "@@\n") If iPos Then sDiff = Mid$(sDiff, iPos + 3) Else sDiff = "" Endif Endif Return sDiff End Public Sub History(sPath As String, Optional sPath2 As String, bFull As Boolean) As String Dim sCmd As String Dim sFull As String If bFull Then sFull = "-p -b " If IsDir(sPath) Then sCmd = "cd " & Shell(sPath) & " && git log --date=rfc2822 " & sFull & "." Else sCmd = "cd " & Shell(File.Dir(sPath)) & " && git log --date=rfc2822 " & sFull & Shell(File.Name(sPath)) If sPath2 Then sCmd &= " " & Shell(File.Name(sPath2)) Endif Return VersionControl.Shell(sCmd) End Public Sub Status(Optional sPath As String) As String Dim sStatus As String If Not sPath Then sPath = Project.Dir sStatus = VersionControl.Shell("cd " & Shell$(sPath) & " && git status .", True) Return sStatus End Public Sub GetDefaultJournal() As String Dim aStatus As String[] Dim I As Integer aStatus = Split(Status(Project.Dir), "\n") For I = 0 To aStatus.Max aStatus[I] = "# " & aStatus[I] Next Return "# " & VersionControl.GetDelimChange() & "\n#\n" & aStatus.Join("\n") End Public Sub Update() As Integer Dim aEnv As String[] aEnv = VersionControl.LANG_ENV.Copy() aEnv.Add("PWD=" & Project.Dir) VersionControl.Run(["git", "remote", "update", "origin", "--prune"], True, True, aEnv) Return VersionControl.Run(["git", "pull", "-q"], True, True, aEnv) End ' Public Sub UpdatePath(aPath As String[]) ' ' Dim sStatus As String ' Dim sCmd As String ' Dim sPath As String ' ' sCmd = "cd " & Shell$(Project.Dir) & " && git status -uall --porcelain -z" ' For Each sPath In aPath ' sCmd &= " " & Mid$(sPath, Len(Project.Dir) + 2) ' Next ' ' sStatus = VersionControl.Shell(sCmd, True) ' UpdatePathFromStatus(sStatus) ' ' End Public Sub CheckPaths() Dim sStatus As String 'sStatus = VersionControl.Shell("cd " & Shell$(Project.Dir) & " && git status -uall --porcelain -z .", True) sStatus = RunShell("git status -uall --porcelain -z .", True) UpdatePathFromStatus(sStatus) End Private Sub UpdatePathFromStatus(sStatus As String) Dim sFile As String Dim sPath As String For Each sStatus In Split(sStatus, Chr$(0), "", True) sFile = Mid$(sStatus, 4) sPath = $sRoot &/ sFile If sPath Not Begins Project.Dir Then Continue If sStatus Begins "??" Then Project.SetFlag(sPath, Project.FLAG_ADDED) Else If $aConflict.Exist(Left(sStatus, 2)) Then Project.SetFlag(sPath, Project.FLAG_CONFLICT) Else If InStr("MDR", Mid$(sStatus, 2, 1)) Or If InStr("AMR", Left(sStatus)) Then Project.SetFlag(sPath, Project.FLAG_MODIFIED) Endif Next End Public Sub AddFile(sPath As String, Optional (bForce) As Boolean) RunShell("git add " & Shell(sPath)) End Public Sub AddDir((sPath) As String) ' git does not track directories ' AddFile(sPath) End Public Sub Revert(Optional sPath As String) As Boolean If sPath Then RunShell("git checkout " & Shell(sPath)) Else RunShell("git checkout " & Shell(Project.Dir)) Endif End Public Sub RemoveFile(sPath As String, Optional (bForce) As Boolean) RunShell("git rm " & Shell(sPath)) End Public Sub RemoveDir((sPath) As String) ' git does not track directories ' RemoveFile(sPath) End Public Sub Commit(sChange As String, bDoNotPush As Boolean) As Boolean Dim sFile As String Dim aEnv As String[] If sChange Then sFile = Temp$() File.Save(sFile, sChange) 'VersionControl.Run(["git", "commit", "-F", sFile, Project.Dir], False, False, VersionControl.LANG_ENV) RunShell("git commit -F " & Shell$(sFile) & " .") ', Project.Dir) If Process.LastValue Then Return True Endif If Not bDoNotPush And If $bHasRemote Then aEnv = VersionControl.LANG_ENV.Copy() aEnv.Add("PWD=" & Project.Dir) VersionControl.Run(["git", "push"], True, True, aEnv) If Process.LastValue Then VersionControl.ShowError(("Unable to push the project.")) Endif End Public Sub Info() As Collection Dim cInfo As New Collection Dim aResult As String[] Dim sResult As String Dim nModif As Integer Dim sText As String cInfo[("Local root path")] = $sRoot aResult = Split(VersionControl.Shell("cd " & Shell(Project.Dir) & " && git log -n1"), "\n") cInfo[("Last commit")] = Trim(Mid$(aResult[0], InStr(aResult[0], " ") + 1)) cInfo[("Last commit author")] = Trim(Mid$(aResult[1], InStr(aResult[1], " ") + 1)) cInfo[("Last commit date")] = Trim(Mid$(aResult[2], InStr(aResult[2], " ") + 1)) aResult = Split(RunShell("git branch -vv"), "\n") For Each sResult In aResult If sResult Begins "*" Then aResult = Scan(sResult, "* * * [[]*] *") If aResult.Count = 0 Then aResult = Scan(sResult, "* * *") cInfo[("Current branch")] = aResult[1] If aResult.Count >= 4 Then cInfo[("Origin")] = aResult[3] Break Endif Next Try nModif = Split(Trim(RunShell("git status --porcelain")), "\n").Count If nModif = 0 Then sText = ("The current branch is up to date.") Else If nModif = 1 Then sText = ("One file to commit in the current branch.") Else sText = Subst(("&1 files to commit in the current branch."), nModif) Endif If nModif Then Try nModif = Split(Trim(RunShell("git status --porcelain " & Shell(Project.Dir))), "\n").Count sText &= "\n" If nModif = 0 Then sText &= ("None in the current project.") Else If nModif = 1 Then sText &= ("One in the current project.") Else sText &= Subst(("&1 in the current project."), nModif) Endif Endif cInfo[("Status")] = sText aResult = Split(RunShell("git remote -vv"), "\n") Try cInfo[("Remote repository URL")] = Scan(aResult[0], "* * *")[1] Return cInfo End Public Sub SetBranch(sBranch As String) RunShell("git checkout " & Shell(sBranch) & " 2>&1") End Public Sub MoveFile(sOld As String, sNew As String) RunShell("git mv " & Shell(sOld) & " " & Shell(sNew) & " && git add " & Shell(sNew)) If Exist(sOld) And If Not Exist(sNew) Then Move sOld To sNew End Public Sub MoveDir(sOld As String, sNew As String) As Boolean MoveFile(sOld, sNew) End Public Sub UpdatePath(sPath As String, Optional sPath2 As String) Dim sStatus As String Dim sCmd As String ' svn status is automatically recursive! sCmd = "cd " & Shell$(Project.Dir) & "; git status -uall --porcelain -z " & Shell(Mid$(sPath, Len(Project.Dir) + 2)) If sPath2 Then sCmd &= " " & Shell(Mid$(sPath2, Len(Project.Dir) + 2)) sStatus = VersionControl.Shell(sCmd, True) UpdatePathFromStatus(sStatus) End Public Sub CanControlProject() As Boolean Return $bCanControl Or $bCanInit End Public Sub ControlProject() As Boolean If Not CanControlProject() Then Return True If $bCanInit Then If Message.Warning(("A new Git repository will be created for this project."), ("OK"), ("Cancel")) = 2 Then Return RunShell("git init && git add .") If Process.LastValue Then Return True Else RunShell("git add .") Endif End Public Sub HasRemote() As Boolean Return $bHasRemote End Public Sub SolveConflict(sPath As String, Optional iAccept As Integer) As Boolean If iAccept Then Select iAccept Case VersionControl.ACCEPT_OURS RunShell("git checkout --ours " & Shell$(sPath)) Case VersionControl.ACCEPT_THEIRS RunShell("git checkout --theirs " & Shell$(sPath)) End Select Return Process.LastValue Endif RunShell("git add " & Shell$(sPath)) If Process.LastValue Then Return True VersionControl.CheckPaths() If Project.HasConflict Then Return 'FVersionControl.Run(True) RunShell("git commit -m " & Shell$(("Solve conflict."))) ', Project.Dir) End Private Sub FormatDate(sDate As String) As String Dim dDate As Date Try dDate = Date.FromRFC822(sDate) If Not dDate Then Return "?" Return Format(dDate, gb.LongDate) End Public Sub HighlightHistory(Text As String) Dim iState As Integer Dim iLen As Integer iState = TextHighlighter.State iLen = String.Len(Text) TextHighlighter.Limit = False If $iPadHistory = 0 Then $iPadHistory = Max(Max(String.Len(("Date")), String.Len(("Author"))), String.Len("Commit")) Endif TextHighlighter.Alternate = True If Text Begins "commit " Then TextHighlighter.TextAfter = String.PadRight("Commit", $iPadHistory) & " : " & Mid$(Text, 8) TextHighlighter.Add(Highlight.DataType, String.Len(TextHighlighter.TextAfter)) 'TextHighlighter.Add(Highlight.DataType, String.Len(Text)) TextHighlighter.Limit = True Else If Text Begins "Merge: " Then TextHighlighter.TextAfter = String.PadRight("Merge", $iPadHistory) & " : " & Mid$(Text, 8) TextHighlighter.Add(Highlight.Number, String.Len(TextHighlighter.TextAfter)) 'TextHighlighter.Add(Highlight.DataType, String.Len(Text)) TextHighlighter.Limit = True Else If Text Begins "Author: " Then TextHighlighter.TextAfter = String.PadRight(("Author"), $iPadHistory) & " : " & Mid$(Text, 9) TextHighlighter.Add(Highlight.Function, String.Len(TextHighlighter.TextAfter)) 'TextHighlighter.Add(Highlight.Function, String.Len(Text)) Else If Text Begins "Date: " Then TextHighlighter.TextAfter = String.PadRight(("Date"), $iPadHistory) & " : " & FormatDate(Mid$(Text, 7)) TextHighlighter.Add(Highlight.Preprocessor, String.Len(TextHighlighter.TextAfter)) 'TextHighlighter.Add(Highlight.Preprocessor, String.Len(Text)) Else TextHighlighter.Alternate = False If Not $hHighlightDiff Then $hHighlightDiff = TextHighlighter["diff"] $hHighlightDiff.Run(Text) 'TextHighlighter.Add(Highlight.Normal, iLen) Endif End gambas-3.16.3/app/src/gambas3/.src/VersionControl/CVersionControlSubversion.class000066400000000000000000000216061411575327000277670ustar00rootroot00000000000000' Gambas class file Inherits CVersionControl Create Static Public Const Name As String = "Svn" Public Const LongName As String = "Subversion" Private $sRealDir As String Private $bHasSVN As Boolean Private $bCheckSVN As Boolean Private $sSvnVersion As String Private $bSvn17 As Boolean Private $bCanControl As Boolean Private Sub SvnPath$(sPath As String) As String If InStr(sPath, "@") Then sPath &= "@" If sPath Begins Project.Dir Then sPath = $sRealDir &/ Mid$(sPath, Len(Project.Dir) + 1) Return sPath End Private Sub Init() If $bCheckSVN Then Return $bHasSVN = System.Exist("svn") $bCheckSVN = True If $bHasSVN Then If Not $sSvnVersion Then Exec ["svn", "--version", "--quiet"] To $sSvnVersion $sSvnVersion = Trim($sSvnVersion) $bSvn17 = Comp($sSvnVersion, "1.7", gb.Natural) >= 0 Endif Endif End Public Sub Check() As Boolean Dim sResult As String Dim sDir As String Shell "readlink -f " & Shell$(Project.Dir) To $sRealDir $sRealDir = Trim($sRealDir) Init() If $bHasSVN Then $bCanControl = False If $bSvn17 Then sResult = VersionControl.Shell("svn status " & Shell$(SvnPath$($sRealDir) &/ ".project") & " 2>&1") If Process.LastValue = 0 And If sResult Not Like "svn:*W155007*:*" And If sResult Not Like "svn:*W155010*:*" Then Return True Else If Exist($sRealDir &/ ".svn") Then Return True Endif If $bSvn17 Then sDir = $sRealDir Do sDir = File.Dir(sDir) If Exist(sDir &/ ".svn") Then $bCanControl = True Break Endif If sDir = "/" Then Break Loop Else $bCanControl = Exist($sRealDir &/ "../.svn") Endif Endif End Public Sub AddFile(sPath As String, Optional bForce As Boolean) Dim aCmd As String[] aCmd = ["svn", "add", SvnPath$(sPath)] If bForce Then aCmd.Add("--force", 2) VersionControl.Run(aCmd) End Public Sub AddDir(sPath As String) VersionControl.Run(["svn", "add", SvnPath$(sPath)]) End Public Sub RemoveFile(sPath As String, Optional (bForce) As Boolean) Dim aCmd As String[] aCmd = ["svn", "remove", SvnPath$(sPath), "--force"] 'If bForce Then aCmd.Add("--force", 2) VersionControl.Run(aCmd) End Public Sub RemoveDir(sPath As String) RemoveFile(sPath, True) End Public Sub MoveFile(sOld As String, sNew As String) AddFile(sNew) RemoveFile(sOld, True) End Public Sub MoveDir(sOld As String, sNew As String) As Boolean VersionControl.Run(["svn", "move", "--force", SvnPath$(sOld), SvnPath$(sNew)]) End Private Sub UpdatePathFromStatus(sStatus As String) Dim sFile As String Dim sExt As String Dim sPath As String For Each sStatus In Split(sStatus, "\n") sFile = Mid$(sStatus, 9) sPath = Project.Dir &/ sFile If Left(sStatus) = "D" Then Project.SetFlag(sPath, Project.FLAG_LOCKED) Else If Left(sStatus) = "C" Then Project.SetFlag(sPath, Project.FLAG_CONFLICT) Else If Left(sStatus) = "?" Then If Left(File.Name(sFile)) = "." Then Continue If sFile Begins ".lang/" Then Continue If sFile Begins ".gambas/" Then Continue If sFile = Project.Name & ".gambas" Then Continue sExt = File.Ext(sFile) If Left(sExt) = "r" And IsDigit(Mid$(sExt, 2)) And If Exist(Project.Dir &/ File.Dir(sFile) &/ File.BaseName(sFile)) Then Continue Project.SetFlag(sPath, Project.FLAG_ADDED) Else If Left(sStatus) <> " " Then Project.SetFlag(sPath, Project.FLAG_MODIFIED) Endif Next End Public Sub CheckPaths() Dim sStatus As String sStatus = VersionControl.Shell("cd " & Shell$($sRealDir) & "; svn status --no-ignore", True) UpdatePathFromStatus(sStatus) End Public Sub Status(Optional sPath As String) As String Dim sStatus As String Dim sCmd As String sCmd = "cd " & Shell$($sRealDir) & "; svn status -q" If sPath Then sCmd &= " " & Shell$(SvnPath$(sPath)) sStatus = VersionControl.Shell(sCmd, True) Return sStatus End Public Sub Commit(sChange As String, (bDoNotPush) As Boolean) As Boolean Dim sFile As String = Temp$() File.Save(sFile, sChange) VersionControl.Run(["svn", "commit", "--file", sFile, SvnPath$($sRealDir)], True, False, VersionControl.LANG_ENV) Return Process.LastValue End Public Sub Update() As Integer Return VersionControl.Run(["svn", "update", SvnPath$($sRealDir), "--accept", "postpone"], True) End Public Sub Revert(Optional sPath As String) As Boolean If sPath Then VersionControl.Run(["svn", "revert", SvnPath$(sPath)]) Else VersionControl.Run(["svn", "-R", "revert", SvnPath$($sRealDir)]) Endif Return Process.LastValue End Public Sub InConflict(sPath As String) As Boolean If Not Exist(sPath) Then Debug sPath; ": does not exist" Return False Endif If Dir(File.Dir(sPath), File.Name(sPath) & ".r*").Count Then Return True End Public Sub SolveConflict(sPath As String, Optional iAccept As Integer) As Boolean Dim aArg As String[] Select Case iAccept Case VersionControl.ACCEPT_OURS aArg = ["svn", "resolve", SvnPath$(sPath), "--accept", "theirs-full"] Case VersionControl.ACCEPT_THEIRS aArg = ["svn", "resolve", SvnPath$(sPath), "--accept", "mine-full"] Default aArg = ["svn", "resolved", SvnPath$(sPath)] End Select VersionControl.Run(aArg) Return Process.LastValue End Public Sub Checkout(sPath As String, sDir As String) As Boolean VersionControl.Run(["svn", "checkout", SvnPath$(sPath), SvnPath$(sDir)], True) End Public Sub GetVersion(sDir As String) As String Dim sRes As String If Exist(sDir &/ ".svn") Then sRes = VersionControl.Shell("cd " & Shell$(sDir) & "; " & VersionControl.LANG_ENV.Join(" ") & " svn info") Try sRes = Scan(sRes, "*\nRevision: *\n*")[1] If Error Then Return "?" Else Return "r" & sRes Endif Endif End Public Sub Diff(sPath As String, Optional (bFull) As Boolean, (bNoWhiteSpace) As Boolean) As String Dim sDiff As String sDiff = VersionControl.Shell("svn diff " & Shell$(SvnPath$(sPath))) Return sDiff End Public Sub History(sPath As String, Optional sPath2 As String, (bFull) As Boolean) As String Dim sCmd As String sCmd = "svn log " & Shell$(SvnPath$(sPath)) If sPath2 Then sCmd &= " " & Shell$(SvnPath$(sPath2)) Return VersionControl.Shell(sCmd) End Private Sub FormatSvnDate(sDate As String) As String Dim aDate As String[] aDate = Split(sDate, "*-*-* *:*:* *") Try Return Format(Date(CInt(aDate[0]), CInt(aDate[1]), CInt(aDate[2]), CInt(aDate[3]), CInt(aDate[4]), CInt(aDate[5])), gb.GeneralDate) If Error Then Return sDate & " ?" End Public Sub Info() As Collection Dim sLine As String Dim aLine As String[] Dim sUrl As String Dim cInfo As New Collection Dim cData As New Collection If VersionControl.Run(["svn", "info", SvnPath$($sRealDir)], False, False, VersionControl.LANG_ENV) = 0 Then cData.Clear For Each sLine In Split(VersionControl.Output, "\n", "", True) aLine = Scan(sLine, "*: *") 'If aLine[0] = "Repository Root" Then sUrl = Trim(aLine[1]) cData[Trim(aLine[0])] = Trim(aLine[1]) Next cInfo[("Local root path")] = cData["Working Copy Root Path"] cInfo[("Revision")] = cData["Revision"] cInfo[("Last commit author")] = cData["Last Changed Author"] cInfo[("Last commit date")] = FormatSvnDate(cData["Last Changed Date"]) sUrl = cData["Repository Root"] Endif If sUrl Then If VersionControl.Run(["svn", "info", SvnPath$(sUrl)], True, False, VersionControl.LANG_ENV) = 0 Then cData.Clear For Each sLine In Split(VersionControl.Output, "\n", "", True) aLine = Scan(sLine, "*: *") cData[Trim(aLine[0])] = Trim(aLine[1]) Next cInfo[("Remote repository URL")] = sURL cInfo[("Remote revision")] = cData["Revision"] cInfo[("Remote last commit author")] = cData["Last Changed Author"] cInfo[("Remote last commit date")] = FormatSvnDate(cData["Last Changed Date"]) Endif Endif Return cInfo End Public Sub CleanUp(sPath As String) VersionControl.Run(["svn", "cleanup", SvnPath$(sPath)]) End Public Sub GetDefaultJournal() As String Return VersionControl.GetDelimChange() & "\n\n" & Status() End Public Sub UpdatePath(sPath As String, Optional sPath2 As String) Dim sStatus As String Dim sCmd As String ' svn status is automatically recursive! sCmd = "cd " & Shell$($sRealDir) & "; svn status --no-ignore " & Shell(Mid$(sPath, Len(Project.Dir) + 2)) If sPath2 Then sCmd &= " " & Shell(Mid$(sPath2, Len(Project.Dir) + 2)) sStatus = VersionControl.Shell(sCmd, True) UpdatePathFromStatus(sStatus) End Public Sub CanControlProject() As Boolean Return $bCanControl End Public Sub ControlProject() As Boolean If Not $bCanControl Then Return True If VersionControl.Run(["svn", "add", "--parents", SvnPath$($sRealDir)]) Then Return True End Public Sub HasRemote() As Boolean Return True End gambas-3.16.3/app/src/gambas3/.src/VersionControl/FConflict.class000066400000000000000000000132011411575327000244550ustar00rootroot00000000000000' Gambas class file Private $sPath As String Private $sLoadedPath As String Private $bModify As Boolean Private $iType As Integer Private Const TYPE_TEXT As Integer = 0 Private Const TYPE_IMAGE As Integer = 1 Private Const TYPE_BINARY As Integer = 2 Public Sub Run(sPath As String) As Boolean If Message.Warning(Subst(("This file is in conflict. You must resolve the conflict in order to use the file again.")), ("&Edit"), ("Close")) = 2 Then Return $sPath = sPath FConflict.ShowDialog End Public Sub btnCut_Click() edtConflict.Cut End Public Sub btnCopy_Click() edtConflict.Copy End Public Sub btnPaste_Click() edtConflict.Paste End Public Sub btnUndo_Click() edtConflict.Undo End Public Sub btnRedo_Click() edtConflict.Redo End Public Sub btnIndent_Click() edtConflict.Indent End Public Sub btnUnindent_Click() edtConflict.Unindent End Public Sub btnClose_Click() Me.Close End Private Sub LoadFile(sPath As String) Inc Application.Busy If $iType = TYPE_TEXT Then edtConflict.Load(sPath) $bModify = False edtConflict.SetFocus Else fprInfo.Hide 'Else If $iType = TYPE_IMAGE Then ' ivwImage.Image = Image.Load(sPath) Endif fprInfo.Path = sPath $sLoadedPath = sPath sPath = Mid$(sPath, Len(Project.Dir) + 1) If Left(sPath) = "/" Then sPath = Mid$(sPath, 2) lblPath.Text = sPath panConflict_Arrange ' Dec Application.Busy Catch Application.Busy = 0 Message.Error(("Unable to load file:") & "\n" & sPath & "\n\n" & Error.Text) End Private Sub GetFileType() As Integer Select Case String.LCase(File.Name($sPath)) Case "changelog" Return TYPE_TEXT End Select Select Case LCase(File.Ext($sPath)) Case "class", "module", "test", "form", "text", "txt", "html", "css", "svg", "desktop", "inf" Return TYPE_TEXT Case "jpg", "jpeg", "png", "gif", "xpm", "bmp" Return TYPE_IMAGE End Select Return TYPE_BINARY End Public Sub Form_Open() Dim hTabPanel As TabPanel Dim sFile As String Dim hMenu As Menu 'Me.Title = Mid$($sPath, Len(Project.Dir) + 2) & " - " & ("Version conflict") Me.Icon = Project.GetFileIcon($sPath) $iType = GetFileType() 'tabConflict[0].Visible = $iType = TYPE_TEXT 'tabConflict[1].Visible = $iType = TYPE_IMAGE If $iType = TYPE_TEXT Then fprInfo.Add(panEditor, ("Text")) Else If $iType = TYPE_IMAGE Then fprInfo.Add(panImage, ("Image")) Endif hTabPanel = Container(fprInfo.Children[0]).Children[0] hTabPanel.Index = hTabPanel.Count - 1 edtConflict.ReadConfig edtConflict.Styles[Highlight.Comment].Bold = True hMenu = New Menu(mnuOpen) As "mnuOpen" hMenu.Text = File.Name($sPath) For Each sFile In Dir(File.Dir($sPath), File.Name($sPath) & ".*") hMenu = New Menu(mnuOpen) As "mnuOpen" hMenu.Text = sFile Next btnOpen.Menu = "mnuOpen" LoadFile($sPath) Settings.Read(Me) End Public Sub edtConflict_Highlight(Text As String) Dim iState As Integer iState = TextHighlighter.State TextHighlighter.Limit = False If Text Begins "<<<<<<" Then 'iPos = String.InStr(sText, " ") TextHighlighter.Add(Highlight.Comment, String.Len(Text)) 'Highlight.Add(Highlight.Keyword, String.Len(sText) - iPos) TextHighlighter.State = Highlight.Number TextHighlighter.Limit = True Else If Text Begins "======" Then TextHighlighter.Add(Highlight.Comment, String.Len(Text)) TextHighlighter.State = Highlight.Function Else If Text Begins ">>>>>>" Then TextHighlighter.Add(Highlight.Comment, String.Len(Text)) 'iPos = String.InStr(sText, " ") 'Highlight.Add(Highlight.Comment, iPos) 'Highlight.Add(Highlight.Keyword, String.Len(sText) - iPos) TextHighlighter.State = Highlight.Normal Else TextHighlighter.Add(iState, String.Len(Text)) Endif End Public Sub Form_Close() If $bModify Then Select Case Message.Question(("The file has been modified.\nDo you really want to close the dialog?"), ("Close"), ("Cancel")) Case 2 Stop Event Return End Select Endif If panConflict.Visible Then Settings.Write(Me) End Public Sub edtConflict_Change() $bModify = True End Public Sub btnSolve_Click() Dim iInd As Integer Dim sText As String btnSave_Click For iInd = 0 To edtConflict.Count - 1 sText = edtConflict[iInd].Text If sText Begins "<<<<<<" Or If sText Begins "======" Or If sText Begins ">>>>>>" Then edtConflict.GotoCenter(0, iInd) Message.Warning(("Some conflicts are not yet resolved.")) Return Endif Next If VersionControl.Resolve($sPath) Then Message.Error(("Unable to resolve the conflict.")) Return Endif Me.Close End Public Sub btnSave_Click() Select $iType Case TYPE_TEXT edtConflict.Save($sPath) $bModify = False Default If $sLoadedPath <> $sPath Then Kill $sPath Copy $sLoadedPath To $sPath $bModify = False Endif End Select End Public Sub btnOpen_Click() If $iType = TYPE_TEXT Then If $bModify Then Select Case Message.Question(("The file has been modified.\nDo you really want to open another file?"), ("Open"), ("Cancel")) Case 2 Return End Select Endif Endif Dialog.Path = $sPath Dialog.Filter = [File.Name($sPath) & "*", ("Conflict files")] Dialog.ShowHidden = True If Dialog.OpenFile() Then Return LoadFile(Dialog.Path) $bModify = True End Public Sub mnuOpen_Click() LoadFile(File.Dir($sPath) &/ Last.Text) End Public Sub panConflict_Arrange() lblPath.W = lblPath.Font.TextWidth(lblPath.Text) + 8 lblPath.Move(panConflict.W - lblPath.W, 0) lblPath.Raise End gambas-3.16.3/app/src/gambas3/.src/VersionControl/FConflict.form000066400000000000000000000055571411575327000243320ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,102,74) Text = ("Version conflict") Icon = Picture["icon:/small/warning"] Arrangement = Arrange.Vertical { mnuOpen Menu Visible = False } { panConflict VBox MoveScaled(1,10,86,52) Expand = True Spacing = True { fprInfo FileProperties MoveScaled(2,2,54,21) Expand = True Border = False } { panImage Panel MoveScaled(58,6,25,15) Visible = False Arrangement = Arrange.Fill { imvImage ImageView MoveScaled(2,2,16,10) } } { panEditor Panel MoveScaled(4,25,71,24) Visible = False Arrangement = Arrange.Vertical { HBox4 HBox MoveScaled(4,2,63,4) { btnCut ToolButton MoveScaled(4,0,4,4) ToolTip = ("Cut") Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton MoveScaled(8,0,4,4) ToolTip = ("Copy") Picture = Picture["icon:/small/copy"] } { btnPaste ToolButton MoveScaled(12,0,4,4) ToolTip = ("Paste") Picture = Picture["icon:/small/paste"] } { btnUndo ToolButton MoveScaled(16,0,4,4) ToolTip = ("Undo") Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton MoveScaled(20,0,4,4) ToolTip = ("Redo") Picture = Picture["icon:/small/redo"] } { btnIndent ToolButton MoveScaled(24,0,4,4) ToolTip = ("Indent") Picture = Picture["icon:/small/indent"] } { btnUnindent ToolButton MoveScaled(28,0,4,4) ToolTip = ("Unindent") Picture = Picture["icon:/small/unindent"] } { Panel2 Panel MoveScaled(32,0,4,4) Expand = True } } { Separator1 Separator MoveScaled(29,7,20,0) } { edtConflict TextEditor MoveScaled(4,10,19,12) Expand = True Border = False Highlight = "Custom" } } { lblPath Label MoveScaled(44,2,12,4) Ignore = True } } { panButton HBox MoveScaled(1,64,96,6) Spacing = True Margin = True { btnOpen MenuButton MoveScaled(0,0,15,4) ToolTip = ("Open") AutoResize = True Text = ("Open") & "..." Picture = Picture["icon:/small/open"] } { btnSave Button MoveScaled(22,0,16,4) Text = Shortcut(("Save"), "S") Picture = Picture["icon:/small/save-as"] } { Panel1 Panel MoveScaled(48,0,3,3) Expand = True } { btnSolve Button MoveScaled(58,0,16,4) Text = Shortcut(("Solve"), "v") Picture = Picture["icon:/small/apply"] } { btnClose Button MoveScaled(75,0,16,4) Text = ("Close") Picture = Picture["icon:/small/close"] Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/VersionControl/FFileInfoVC.class000066400000000000000000000064651411575327000246560ustar00rootroot00000000000000' Gambas class file Class DesktopMime Static Private $sPath As String Static Private $sPath2 As String Public Sub Run(sPath As String) As Boolean $sPath = sPath If Project.IsFormPath($sPath) Then $sPath2 = File.SetExt($sPath, "class") Else $sPath2 = "" Endif Return Not FFileInfoVC.ShowModal() End Public Sub Form_Open() Dim sPath As String sPath = $sPath If Left(sPath) = "$" Then sPath = Project.GetSpecialDir(sPath) If Not sPath Then sPath = Project.Dir Me.Title = Subst(("'&1' version control"), File.Name(sPath)) edtChange.ReadConfig edtHistory.ReadConfig edtHistory.ShowModified = False btnClose.SetFocus tabInfo_Click End Public Sub btnClose_Click() Me.Close End Private Sub LoadVersionControlInfo() Dim sDiff As String Dim bHideUndoButton As Boolean edtChange.SetFocus Inc Application.Busy edtChange.Font = Font[Settings["/Editor/Font", Project.DEFAULT_FONT]] sDiff = VersionControl.Diff($sPath) If $sPath2 Then sDiff &= "\n" & VersionControl.Diff($sPath2) sDiff = Trim(sDiff) If sDiff Then edtChange.Highlight = "Diff" edtChange.Text = sDiff edtChange.Show lblVersioning.Hide Else edtChange.Hide If Project.IsLocked($sPath) Then lblVersioning.Text = ("This file is locked, and will be deleted on the next commit.") Else If Project.IsAdded($sPath) Then lblVersioning.Text = ("This file is not versioned, and must be added to the repository.") bHideUndoButton = True Else lblVersioning.Text = ("This file has not been modified since the last commit.") bHideUndoButton = True Endif lblVersioning.Show Endif btnRevert.Visible = Not bHideUndoButton Dec Application.Busy End Public Sub btnRevert_Click() If Message.Warning(("You are going to cancel your changes!"), ("Continue"), ("Cancel")) = 2 Then Return Project.RevertFile($sPath) LoadVersionControlInfo End ' Public Sub panStat_Arrange() ' ' Dim hModule As CModule ' ' If $bStat Then Return ' ' Inc Application.Busy ' ' gvwStat.Columns.Count = 2 ' ' AddStat(("Modules"), Project.GetCount("module")) ' If Project.HasTest Then AddStat(("Test modules"), Project.GetCount("test")) ' AddStat(("Classes"), Project.GetCount("class")) ' For Each hModule In CModule.All ' If hModule.Used Then AddStat(hModule.NamePlural, Project.GetCount(hModule.Key)) ' Next ' AddStat(("Lines of code"), Format(Project.GetLinesOfCode(), ",#")) ' ' gvwStat.Rows.H = Desktop.Scale * 4 ' gvwStat.Columns[0].Width = Desktop.Scale * 16 ' ' Dec Application.Busy ' ' $bStat = True ' ' End Public Sub tabInfo_Click() Select Case tabInfo.Index Case 0 btnRevert.Show chkShowHistoryChanges.Hide LoadVersionControlInfo Case 1 btnRevert.Hide chkShowHistoryChanges.Show If edtHistory.IsVoid() Then edtHistory.FillWithHistory($sPath, $sPath2) End Select End Public Sub edtHistory_Highlight(Text As String) VersionControl.HighlightHistory(Text) End Public Sub edtChange_KeyPress() If Key.Code = Key.Escape Then Me.Close End Public Sub edtHistory_KeyPress() If Key.Code = Key.Escape Then Me.Close End Public Sub chkShowHistoryChanges_Click() edtHistory.FillWithHistory($sPath, $sPath2, chkShowHistoryChanges.Value) End gambas-3.16.3/app/src/gambas3/.src/VersionControl/FFileInfoVC.form000066400000000000000000000026011411575327000245000ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,125,90) Arrangement = Arrange.Vertical Spacing = True Margin = True { tabInfo TabPanel MoveScaled(1,2,59,43) Expand = True Arrangement = Arrange.Vertical Count = 2 Index = 0 Text = ("Changes") { lblVersioning TextLabel MoveScaled(2,5,42,6) Visible = False Font = Font["Italic"] Expand = True Padding = 15 } { edtChange TextEditor MoveScaled(6,13,40,18) Expand = True Border = False ReadOnly = True Wrap = True } Index = 1 Text = ("History") { edtHistory TextEditor MoveScaled(4,4,38,13) Expand = True Border = False Highlight = "Custom" ReadOnly = True Wrap = True } Index = 0 } { HBox1 HBox MoveScaled(4,54,78,4) Spacing = True { btnRevert Button MoveScaled(0,0,18,4) AutoResize = True Text = Shortcut(("Undo changes"), "U") Picture = Picture["icon:/small/undo"] } { chkShowHistoryChanges CheckBox MoveScaled(19,0,29,3) AutoResize = True Text = ("Display changes in history") } { Panel3 Panel MoveScaled(55,0,1,4) Expand = True } { btnClose Button MoveScaled(61,0,16,4) Text = ("Close") Picture = Picture["icon:/small/close"] Default = True Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/VersionControl/FProjectVersion.class000066400000000000000000000127221411575327000256770ustar00rootroot00000000000000' Gambas class file Private $sChange As String Private $sDiff As String Private $cInfo As Collection Private Const DELIM_CHANGE As String = ("This line and the following will be ignored") Public Sub Run() As Boolean Return Not Me.ShowModal() End Private Sub RefreshStatus(bRemote As Boolean) Inc Application.Busy GetAuthentication $sChange = VersionControl.Status() $sDiff = VersionControl.Diff(Project.Dir) btnCommit.Enabled = $sChange btnRevert.Enabled = btnCommit.Enabled tabVersion[1].Visible = $sChange tabVersion[2].Visible = $sChange $cInfo = VersionControl.Info(bRemote) txtRepository.Text = $cInfo["url"] gvwInfo.Columns.Count = 3 gvwInfo.Rows.Count = 3 gvwInfo.Columns[0].Text = "" gvwInfo.Columns[1].Text = ("Local") gvwInfo.Columns[2].Text = ("Remote") gvwInfo.Columns.Width = -1 gvwInfo.Rows.Height = gvwInfo.Font.Height + 8 Dec Application.Busy End Private Sub GetAuthentication() VersionControl.User = txtName.Text VersionControl.Password = txtPassword.Text End Public Sub Form_Open() Settings.Read(Me) txtName.Text = Project.Config["/VersionControl/User"] chkRemember.Value = Project.Config["/VersionControl/RememberPassword", 0] chkRemember.Enabled = Desktop.Passwords.Enabled If chkRemember.Value Then Try txtPassword.Text = Desktop.Passwords[Project.Name &/ "VersionControl"] If Not txtName.Text Then txtName.SetFocus Else txtPassword.SetFocus Endif 'chkTerminal.Value = Project.Config["/VersionControl/UseTerminal", 0] RefreshStatus(False) edtChange.Highlight = "diff" edtChange.ReadConfig 'edtChange.Flags[Editor.ShowCursorPosition] = True edtChange.Text = "\n---- " & DELIM_CHANGE & " ----\n\n" & $sChange edtDiff.Highlight = "diff" edtDiff.ReadConfig edtDiff.Text = $sDiff 'panAdded.Visible = Project.AddedPaths.Count > 0 sepCommit.Visible = panAdded.Visible End Public Sub btnCommit_Click() Dim sChange As String Dim iPos As Integer Dim bRes As Boolean If Not Trim(txtName.Text) Then Balloon.Warning(("Please enter a user name."), txtName) txtName.SetFocus Return Endif sChange = Trim(edtChange.Text) Project.Config["/FCommit/LastCommit"] = sChange iPos = InStr(sChange, "---- " & DELIM_CHANGE) If iPos Then sChange = Left(sChange, iPos - 1) If Not Trim(sChange) Then Balloon.Warning(("Please enter the journal."), btnCommit) Return Endif Inc Application.Busy GetAuthentication bRes = VersionControl.Commit(sChange) If Not bRes Then Project.Refresh Dec Application.Busy If bRes Then Message.Error(("The project could not be committed.")) Endif End Public Sub btnCancel_Click() Me.Close End Public Sub btnCut_Click() edtChange.Cut End Public Sub btnCopy_Click() edtChange.Copy End Public Sub btnPaste_Click() edtChange.Paste End Public Sub btnUndo_Click() edtChange.Undo End Public Sub btnRedo_Click() edtChange.Redo End Public Sub btnIndent_Click() edtChange.Indent End Public Sub btnUnindent_Click() edtChange.Unindent End Public Sub tbtClear_Click() edtChange.Clear edtChange.SetFocus End Public Sub btnLastDesc_Click() Dim sLast As String = Project.Config["/FCommit/LastCommit"] If sLast Then edtChange.Text = sLast End Public Sub btnUpdate_Click() Dim bErr As Boolean Dim hFile As Variant Inc Application.Busy GetAuthentication bErr = VersionControl.Update() Project.Refresh Dec Application.Busy If bErr Then Message.Error(("Unable to update project from repository.")) Else Message.Info(("Project has been updated from repository successfully.")) Endif RefreshStatus(True) For Each hFile In Project.Files If Project.IsConflict(hFile.Path) Then Try hFile.Close Next End Public Sub btnRevert_Click() If Message.Warning(("You are going to cancel your changes!"), ("Continue"), ("Cancel")) = 2 Then Return Inc Application.Busy VersionControl.Revert Project.Refresh Project.ReloadAll Dec Application.Busy End Public Sub btnInfo_Click() RefreshStatus(True) End Public Sub btnOK_Click() Me.Close End Public Sub Form_Close() Settings.Write(Me) Project.Config["/VersionControl/User"] = Trim(txtName.Text) Project.Config["/VersionControl/RememberPassword"] = If(chkRemember.Value, 1, 0) If chkRemember.Value Then Try Desktop.Passwords[Project.Name &/ "VersionControl"] = txtPassword.Text Else Try Desktop.Passwords[Project.Name &/ "VersionControl"] = "" Endif 'Project.Config["/VersionControl/UseTerminal"] = If(chkTerminal.Value, 1, 0) End Public Sub btnCleanUp_Click() Dim sDir As String sDir = $cInfo["path"] If Not sDir Then sDir = File.Dir(Project.Dir) VersionControl.CleanUp(sDir) End Public Sub tabVersion_Click() If tabVersion.Text = ("Journal") Then edtChange.SetFocus Endif End Public Sub gvwInfo_Data(Row As Integer, Column As Integer) Dim sField As String With gvwInfo.Data Select Case Column Case 0 Select Case Row Case 0 .Text = ("Revision") Case 1 .Text = ("Author") Case 2 .Text = ("Date") End Select Case Else sField = ["revision", "author", "date"][Row] If Column = 2 Then sField = "remote." & sField .Text = $cInfo[sField] End Select .Padding = 8 End With End gambas-3.16.3/app/src/gambas3/.src/VersionControl/FProjectVersion.form000066400000000000000000000130601411575327000255310ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,90,69) Text = ("Project Version Control") Icon = Picture["icon:/small/calendar"] Arrangement = Arrange.Vertical Spacing = True Margin = True { tabVersion TabPanel MoveScaled(1,1,87,62) Expand = True Arrangement = Arrange.Vertical Count = 3 Index = 0 Text = ("Update") { Panel4 HBox MoveScaled(1,1,81,22) { Panel2 VBox MoveScaled(1,1,23,21) Spacing = True Margin = True { btnUpdate Button MoveScaled(1,1,18,4) Text = Shortcut(("Update"), "U") Picture = Picture["icon:/small/down"] } { btnRevert Button MoveScaled(1,6,18,4) Text = Shortcut(("Revert"), "R") Picture = Picture["icon:/small/undo"] } { btnCommit Button MoveScaled(1,11,18,4) Text = Shortcut(("Commit"), "C") Picture = Picture["icon:/small/ok"] } { btnCleanUp Button MoveScaled(1,16,18,4) Text = Shortcut(("Clean up"), "n") Picture = Picture["icon:/small/wizard"] } } { Separator4 Separator MoveScaled(26,3,0,16) } { Panel6 Panel MoveScaled(27,9,1,5) } { Panel5 Panel MoveScaled(29,1,51,19) Expand = True Arrangement = Arrange.Vertical Spacing = True Margin = True { Label3 Label MoveScaled(1,1,24,3) Font = Font["Bold"] Text = ("Authentication") } { HBox2 HBox MoveScaled(1,5,49,4) Spacing = True { Label1 Label MoveScaled(0,0,16,4) Text = ("User") } { txtName TextBox MoveScaled(17,0,32,4) Expand = True } } { HBox3 HBox MoveScaled(1,10,49,4) Spacing = True { Label2 Label MoveScaled(0,0,16,4) Text = ("Password") } { txtPassword TextBox MoveScaled(17,0,32,4) Expand = True Password = True } } { chkRemember CheckBox MoveScaled(1,15,23,4) AutoResize = True Text = ("Remember password") } } } { Separator3 Separator MoveScaled(31,24,19,0) } { Panel3 VBox MoveScaled(1,25,78,9) Margin = True { Label5 Label MoveScaled(0,0,24,3) Font = Font["Bold"] Text = ("Repository") } { txtRepository Label MoveScaled(0,3,29,4) } } { Separator2 Separator MoveScaled(30,36,14,0) } { gvwInfo GridView MoveScaled(2,38,75,12) Expand = True Border = False Header = GridView.Horizontal } { Panel7 HBox MoveScaled(2,51,67,6) Background = Color.TextBackground Margin = True { btnInfo Button MoveScaled(1,1,28,4) Text = Shortcut(("Refresh information"), "i") Picture = Picture["icon:/small/refresh"] } } Index = 1 Text = ("Journal") { panAdded Panel MoveScaled(1,4,78,7) Visible = False Arrangement = Arrange.Horizontal Spacing = True Margin = True { PictureBox1 PictureBox MoveScaled(0,0,5,5) Picture = Picture["icon:/large/warning"] AutoResize = True } { TextLabel1 TextLabel MoveScaled(6,0,69,6) Font = Font["Bold"] Expand = True Text = ("Some files are not versioned and should be added manually to the repository.") } } { sepCommit Separator MoveScaled(2,13,35,0) } { HBox4 HBox MoveScaled(4,15,69,4) { btnCut ToolButton MoveScaled(0,0,4,4) ToolTip = ("Cut") Picture = Picture["icon:/small/cut"] } { btnCopy ToolButton MoveScaled(4,0,4,4) ToolTip = ("Copy") Picture = Picture["icon:/small/copy"] } { btnPaste ToolButton MoveScaled(8,0,4,4) ToolTip = ("Paste") Picture = Picture["icon:/small/paste"] } { btnUndo ToolButton MoveScaled(12,0,4,4) ToolTip = ("Undo") Picture = Picture["icon:/small/undo"] } { btnRedo ToolButton MoveScaled(16,0,4,4) ToolTip = ("Redo") Picture = Picture["icon:/small/redo"] } { btnIndent ToolButton MoveScaled(20,0,4,4) ToolTip = ("Indent") Picture = Picture["icon:/small/indent"] } { btnUnindent ToolButton MoveScaled(24,0,4,4) ToolTip = ("Unindent") Picture = Picture["icon:/small/unindent"] } { tbtClear ToolButton MoveScaled(28,0,4,4) ToolTip = ("Clean up") Picture = Picture["icon:/small/clear"] } { btnLastDesc ToolButton MoveScaled(33,0,22,4) AutoResize = True Text = ("Previous description") Picture = Picture["icon:/small/redo"] } } { Separator1 Separator MoveScaled(21,20,35,0) } { edtChange TextEditor MoveScaled(3,21,65,21) Font = Font["Monospace"] Expand = True Border = False } Index = 2 Text = ("Changes") { edtDiff TextEditor MoveScaled(1,2,78,48) Font = Font["Monospace"] Expand = True Border = False ReadOnly = True } Index = 0 } { HBox1 HBox MoveScaled(1,64,54,4) Spacing = True { Panel1 Panel MoveScaled(3,0,4,4) Expand = True } { btnOK Button MoveScaled(37,0,15,4) Text = ("Close") } } } gambas-3.16.3/app/src/gambas3/.src/VersionControl/FVersionControl.class000066400000000000000000000102561411575327000257110ustar00rootroot00000000000000' Gambas class file Public Sub Run() As Boolean Return Not Me.ShowModal() End Private Sub GetChanges() As String Dim sChange As String Dim iPos As Integer sChange = Trim(edtJournal.Text) iPos = InStr(sChange, "- " & VersionControl.DELIM_CHANGE & " -") If iPos Then iPos = RInStr(sChange, "\n", iPos) If iPos Then sChange = Left(sChange, iPos - 1) Else sChange = "" Endif Endif Return sChange End Private Sub DoCommit() Dim sChange As String Dim bCommit As Boolean Dim bPush As Boolean If Last = btnCommit Or If Last = btnCommitPush Then bCommit = True If Last = btnCommitPush Or If Last = btnPush Then bPush = True If bPush And If Not bCommit Then VersionControl.Commit("", False) Me.Close Else ' If Not VersionControl.Diff() Then ' If chkDoNotPush.Visible Then ' If Message.Question(("There is nothing to commit.") & "\n\n" & ("Do you want to push the repository?"), ("Push"), ("Cancel")) = 1 Then ' VersionControl.Commit("", False) ' Me.Close ' Endif ' Else ' Message.Info(("There is nothing to commit.")) ' Endif ' Return ' Endif sChange = GetChanges() If Not Trim(sChange) Then tabVersionControl.Index = 0 edtJournal.Goto(0, 0) edtJournal.SetFocus Balloon.Warning(("Please enter the journal."), btnCommit) Return Endif 'Project.Config["/FCommit/LastCommit"] = RTrim(sChange) If VersionControl.Commit(sChange, Not bPush) Then Return Me.Close(True) Endif End Public Sub btnCommit_Click() DoCommit End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Dim DS As Integer Me.Title = ("Version control") & " (" & VersionControl.Name & ")" edtJournal.ReadConfig edtDiff.ReadConfig edtHistory.ReadConfig edtHistory.ShowModified = False Project.SetEditorFont(trmShell) edtJournal.Text = RTrim(Project.Config["/FCommit/LastCommit"]) & "\n\n" & VersionControl.GetDefaultJournal() edtJournal.Goto(0, 0) LoadDiff tabVersionControl_Click btnCommit.Visible = edtDiff.Visible If VersionControl.DoNotPush And VersionControl.HasRemote() Then btnCommitPush.Visible = edtDiff.Visible btnPush.Visible = Not edtDiff.Visible Else btnCommitPush.Hide btnPush.Hide Endif 'chkDoNotPush.Visible = VersionControl.DoNotPush And VersionControl.HasRemote() DS = Desktop.Scale Me.Resize(FMain.W - DS * 16, FMain.H - DS * 16) End Public Sub Form_Close() Project.Config["/FCommit/LastCommit"] = RTrim(GetChanges()) Try trmShell.Kill End Private Sub LoadDiff() Dim sDiff As String Dim aDiff As String[] Dim sLine As String Dim bHide As Boolean If edtDiff.IsVoid() Then Inc Application.Busy sDiff = VersionControl.Diff() If chkHideTrans.Value Then aDiff = New String[] For Each sLine In Split(sDiff, "\n") If sLine Begins "diff " Then bHide = InStr(sLine, "/.lang/") > 0 aDiff.Add(sLine) Else If Not bHide Then aDiff.Add(sLine) Endif Next sDiff = aDiff.Join("\n") Endif If sDiff Then edtDiff.Text = sDiff edtDiff.Show panNothing.Hide Else edtDiff.Text = "-" edtDiff.Hide panNothing.Show Endif tabVersionControl[0].Visible = edtDiff.Visible tabVersionControl[1].Visible = edtDiff.Visible Dec Application.Busy Endif End Public Sub tabVersionControl_Click() Select Case tabVersionControl.Index Case 0 edtJournal.SetFocus Case 1 Case 2 If edtHistory.IsVoid() Then edtHistory.FillWithHistory(Project.Dir) Case 3 Try trmShell.Exec(["bash"], ["PWD=" & Project.Dir]) trmShell.SetFocus End Select chkHideTrans.Visible = tabVersionControl.Index = 1 And edtDiff.Visible End Public Sub edtHistory_Highlight(Text As String) VersionControl.HighlightHistory(Text) End Public Sub btnPush_Click() DoCommit End Public Sub btnCommitPush_Click() DoCommit End Public Sub chkHideTrans_Click() edtDiff.Clear LoadDiff End gambas-3.16.3/app/src/gambas3/.src/VersionControl/FVersionControl.form000066400000000000000000000043741411575327000255530ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,122,66) Icon = Picture["icon:/small/save"] Arrangement = Arrange.Vertical Spacing = True Margin = True { tabVersionControl TabPanel MoveScaled(1,1,59,54) Expand = True Arrangement = Arrange.Vertical Count = 4 Index = 0 Text = ("Journal") { edtJournal TextEditor MoveScaled(13.25,11.125,16,16) Expand = True Border = False } Index = 1 Text = ("Changes") { edtDiff TextEditor MoveScaled(12,23,16,16) Expand = True Border = False Highlight = "Diff" ReadOnly = True Wrap = True } Index = 2 Text = ("History") { edtHistory TextEditor MoveScaled(12,10,16,16) Expand = True Border = False Highlight = "Custom" ReadOnly = True Wrap = True } Index = 3 Text = ("Terminal") { trmShell TerminalView MoveScaled(11.25,13.75,16,16) Expand = True Border = False ShowLink = True } Index = 0 } { HBox1 HBox MoveScaled(1,59,120,4) Spacing = True { chkHideTrans CheckBox MoveScaled(0,0,24,4) AutoResize = True Text = ("Hide translation changes") } { panNothing Panel MoveScaled(9,0,31,4) Arrangement = Arrange.Horizontal AutoResize = True Spacing = True { PictureBox1 PictureBox MoveScaled(0,0,4,4) Picture = Picture["icon:/medium/warning"] Alignment = Align.Center } { lblNothingToCommit Label MoveScaled(4,0,25,4) Font = Font["Bold"] Text = ("There is nothing to commit.") } } { Panel1 Panel MoveScaled(41,0,2,4) Expand = True } { btnCommit Button MoveScaled(44,0,16,4) Text = ("Commit") & "..." Picture = Picture["icon:/small/apply"] } { btnCommitPush Button MoveScaled(61,0,24,4) AutoResize = True Text = ("Commit and push") & "..." Picture = Picture["icon:/small/upload"] Default = True } { btnPush Button MoveScaled(86,0,16,4) Text = ("Push") & "..." Picture = Picture["icon:/small/upload"] } { btnCancel Button MoveScaled(103,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/VersionControl/FVersionError.class000066400000000000000000000015121411575327000253550ustar00rootroot00000000000000' Gambas class file Static Private $sText As String Static Private $sDetail As String Public Sub Run(sText As String, sDetail As String) Dim iBusy As Integer $sText = sText $sDetail = Trim(sDetail) iBusy = Application.Busy Application.Busy = 0 Me.ShowModal() Application.Busy = iBusy End Public Sub btnOK_Click() Me.Close End Public Sub Form_Open() Dim DS As Integer = Desktop.Scale lblError.Text = Html($sText) If $sDetail Then Project.SetEditorFont(trmDetail) MTheme.InitControl(trmDetail) panExpand.Hide trmDetail.Print(Replace($sDetail, "\n", "\r\n")) trmDetail.Show Me.Resize(DS * 100, trmDetail.Y + DS * 30) Else trmDetail.Hide panExpand.Show Me.Resize(Min(lblError.Font.TextWidth($sText), DS * 40), trmDetail.Y + DS * 6) Endif End gambas-3.16.3/app/src/gambas3/.src/VersionControl/FVersionError.form000066400000000000000000000014071411575327000252160ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,41,20) Arrangement = Arrange.Vertical Spacing = True Margin = True { HBox2 HBox MoveScaled(1,1,39,7) Spacing = True { PictureBox1 PictureBox MoveScaled(0,0,7,7) Picture = Picture["icon:/huge/error"] Stretch = True } { lblError TextLabel MoveScaled(11,1,25,5) Expand = True } } { trmDetail TerminalView MoveScaled(2,9,35,3) Visible = False Expand = True ReadOnly = True } { panExpand Panel MoveScaled(33,13,4,1) Expand = True } { HBox1 HBox MoveScaled(2,15,37,4) Centered = True Spacing = True { btnOK Button MoveScaled(9,0,16,4) Text = ("OK") Default = True Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/VersionControl/VersionControl.module000066400000000000000000000336071411575327000257700ustar00rootroot00000000000000' Gambas module file Property Read Name As String Property Read Enabled As Boolean Property Read Output As String Property Read DoNotPush As Boolean Private $hVC As CVersionControl Private $bEnabled As Boolean Private $bEnd As Boolean Private $hEditor As TextEditor Private $bOutput As Boolean Private $sOutput As String Private $dOutput As Date Private $bIdent As Boolean Private $bAuth As Boolean Private $sUser As String Private $sPassword As String Private $sLastResult As String 'Public (User) As String 'Public Password As String 'Public UseTerminal As Boolean Public LANG_ENV As String[] = ["LC_ALL=C.UTF-8", "LANG=C.UTF-8", "LANGUAGE=C.UTF-8"] Public Const DELIM_CHANGE As String = ("This line and the following will be ignored") Public Enum ACCEPT_OURS = 1, ACCEPT_THEIRS = 2 Private $bCancel As Boolean Private Sub OnVersionControlChange() FMain.OnVersionControlChange FDebugInfo.OnVersionControlChange End Private Sub GetTextEditor() As String Dim sProg As String If Desktop.Is("kde4") Or If Desktop.Is("kde5") Then sProg = "kwrite" Else If Desktop.Is("xfce") Then sProg = "mousepad" Else If Desktop.Is("lxde") Then sProg = "leafpad" Else If Desktop.Is("mate") Then sProg = "pluma" Else sProg = "gedit" Endif For Each sProg In [sProg, "kwrite", "gedit", "emacs"] If System.Exist(sProg) Then Return sProg Next End Public Sub Refresh() $hVC = CVersionControl $bEnabled = False If Settings["/VersionControl/Enabled", 1] Then If CVersionControlSubversion.Check() Then $hVC = CVersionControlSubversion $bEnabled = True Else If CVersionControlGit.Check() Then $hVC = CVersionControlGit $bEnabled = True Endif Endif $bAuth = False CheckPaths OnVersionControlChange If $bEnabled Then If Not Env["EDITOR"] Then Env["EDITOR"] = GetTextEditor() If Not Env["EDITOR"] Then Message.Warning(("Please set the $EDITOR environment variable with your favorite graphical text editor. Some version control commands need it.")) Endif Endif Endif End Public Sub Disable() If $hVC And If $hVC Is CVersionControl Then Return $hVC = CVersionControl $bEnabled = False OnVersionControlChange End Public Sub Insert(sText As String) If $hEditor Then $hEditor.Print(DConv(sText)) Else FDebugInfo.InsertVersionControl(sText) Endif End Public Sub Shell(sCmd As String, Optional bSilent As Boolean, Optional aEnv As String[]) As String Dim sResult As String If Not bSilent Then Insert(sCmd & "\n") Shell sCmd With aEnv To sResult If Process.LastValue Then $sLastResult = sResult Insert(sResult) Endif Return sResult End Public Sub Run(aCmd As String[], Optional bIdent As Boolean, Optional bOutput As Boolean, Optional aEnv As String[]) As Integer ' Dim sPassword As String Dim hProcess As Process Dim sCmd As String $bEnd = False $bIdent = bIdent $sOutput = "" $bOutput = bOutput $dOutput = Now $sLastResult = "" $bCancel = False ' If bIdent Then ' 'aCmd.Add("--non-interactive") ' If User Then ' aCmd.Add("--username") ' aCmd.Add(User) ' If Password Then ' sPassword = " --password " & Password ' aCmd.Add("--password") ' aCmd.Add(Password) ' Endif ' Endif ' Endif hProcess = Exec aCmd With aEnv For Input Output As "Process" sCmd = aCmd.Join(" ") 'If sPassword Then sCmd = Replace(sCmd, sPassword, "********") Insert(sCmd & "\n") Do Wait If $bEnd Then Break If DateDiff($dOutput, Now, gb.Second) >= 15 Then Try Close #hProcess hProcess.Kill Process_Error(("Command timeout.") & "\n" & ("Please check your network connection.") & "\n") $bCancel = True Break Endif Sleep 0.1 Loop If $bCancel Then Return -1 If Process.LastValue Then $sLastResult = $sOutput Return Process.LastValue End Public Sub Process_Error(({Error}) As String) $sOutput &= {Error} Insert({Error}) End Public Sub Process_Read() Dim sData As String Dim iPos As Integer Dim sLine As String Dim hProcess As Process hProcess = Last sData = Read #hProcess, -4096 $sOutput &= Replace(sData, "\r", "") If $bOutput Then Insert(sData) 'Insert(sData) $dOutput = Now iPos = RInStr($sOutput, "\n") If iPos = 0 Then sLine = $sOutput Else sLine = Mid$($sOutput, iPos + 1) Endif If $bIdent Then If Right(RTrim(sLine)) = ":" Then If InStr(sLine, "username", 1, gb.IgnoreCase) Then 'If $bOutput Then Insert(sLine) If Not $bAuth Then If GetAuthentication() Then Goto CANCEL Endif If Not $sUser Then Goto CANCEL Print #Last, $sUser Insert($sUser & "\n") $sOutput = "" Else If InStr(sLine, "password", 1, gb.IgnoreCase) Then 'If $bOutput Then Insert(sLine) If Not $bAuth Then If GetAuthentication() Then Goto CANCEL Endif Print #Last, $sPassword Insert("********" & "\n") $sOutput = "" Else If InStr(sLine, "passphrase", 1, gb.IgnoreCase) Then 'If $bOutput Then Insert(sLine) If Not $bAuth Then If GetAuthentication(True) Then Goto CANCEL Endif Print #Last, $sPassword Insert("********" & "\n") $sOutput = "" Endif Else If RTrim(sLine) Ends "(yes/no)?" Then Print #Last, "yes" Insert("yes\n") $sOutput = "" Endif Endif Return CANCEL: $bCancel = True hProcess.Kill End Public Sub Process_Kill() $bEnd = True End Public Sub AddFile(sPath As String, Optional bForce As Boolean) $hVC.AddFile(sPath, bForce) $hVC.UpdatePath(sPath) ' If $bCVS Then ' 'NB: For CVS file must already exist ' Run(["cvs", "add", sPath]) ' Endif End Public Sub AddDir(sPath As String) $hVC.AddDir(sPath) ' If $bCVS Then ' 'NB: For CVS, directory must already exist ' Run(["cvs", "add", sPath]) ' Endif End ' Must be called *after* the file has been deleted Public Sub RemoveFile(sPath As String, Optional (bForce) As Boolean) $hVC.RemoveFile(sPath, bForce) ' If $bCVS Then ' 'NB: For CVS do 'cvs remove file' first then delete file ' Run(["cvs", "remove", sPath]) ' Endif CheckPaths End ' Must be called *after* the directory has been deleted ' The directory must be empty Public Sub RemoveDir(sPath As String) $hVC.RemoveDir(sPath) ' If $bCVS Then ' 'NB: For CVS do 'cvs remove dirname' first then delete dirname ' Run(["cvs", "remove", sPath]) ' Endif CheckPaths End ' Must be called *after* the file has been moved Public Sub MoveFile(sOld As String, sNew As String) $hVC.MoveFile(sOld, sNew) ' If $bCVS Then ' 'NB: make sure the file is added BEFORE ' AddFile(sNew) ' 'NB: make sure the file deleted AFTER ' RemoveFile(sOld) ' Endif CheckPaths End Public Sub CheckPaths() Project.ResetFlags If Not $bEnabled Then Return $hVC.CheckPaths() End Public Sub UpdatePath(sPath As String, Optional sPath2 As String) If Not $bEnabled Then Return Project.ResetFlags(sPath) If sPath2 Then Project.ResetFlags(sPath2) $hVC.UpdatePath(sPath, sPath2) End Public Sub MoveDir(sOld As String, sNew As String) As Boolean $hVC.MoveDir(sOld, sNew) CheckPaths End Public Sub Status(Optional sPath As String) As String Return $hVC.Status(sPath) End Public Sub Commit(sChange As String, bDoNotPush As Boolean) As Boolean Dim bRes As Boolean Inc Application.Busy bRes = $hVC.Commit(sChange, bDoNotPush) If Not bRes Then Project.Refresh Dec Application.Busy If bRes Then ShowError(("The project could not be committed.")) Endif Return bRes End Public Sub Update() Dim hFile As Object Dim sFile As String Dim sPath As String Dim aRemove As String[] Dim iResult As Integer Inc Application.Busy iResult = $hVC.Update() CheckPaths Project.Refresh Dec Application.Busy If iResult < 0 Then Return ' cancelled If iResult Then ShowError(("Unable to update project from repository.")) Else Message.Info(("Project has been updated from repository successfully.")) Endif For Each sFile In [".project", ".startup", ".component", ".info"] sPath = Project.Dir &/ sFile If Exist(sPath) And If Project.IsConflict(sPath) Then SolveConflict(sPath, ACCEPT_THEIRS) Next For Each sFile In [".settings"] sPath = Project.Dir &/ sFile If Exist(sPath) And If Project.IsConflict(sPath) Then SolveConflict(sPath, ACCEPT_OURS) Next aRemove = New String[] Project.Workspace.Lock For Each hFile In Project.Files If hFile Is FConflictEditor Then Continue sPath = hFile.Path If Project.IsConflict(sPath) Then aRemove.Add(sPath) Next Project.Workspace.Unlock Project.Reload If aRemove.Count Then FMain.DoFilter(Project.FILTER_CONFLICT) Endif End Public Sub Revert(Optional sPath As String) As Boolean If sPath Then Return $hVC.Revert(sPath) If Message.Warning(("You are going to cancel your changes!"), ("Continue"), ("Cancel")) = 2 Then Return Inc Application.Busy $hVC.Revert() 'Project.Refresh Project.Reload Dec Application.Busy End Public Sub CheckoutSVN(sPath As String, sDir As String, hEditor As TextEditor) $hEditor = hEditor CVersionControlSubversion.Checkout(sPath, sDir) $hEditor = Null End Public Sub InConflict(sPath As String) As Boolean Return $hVC.InConflict(sPath) End Public Sub SolveConflict(sPath As String, Optional iAccept As Integer) As Boolean If $hVC.SolveConflict(sPath, iAccept) Then Return True CheckPaths If Project.HasConflict Then Project.Refresh Else Project.Reload Endif End Public Sub GetVersion(sDir As String) As String Return $hVC.GetVersion(sDir) End ' Private Sub RemoveFirstLines(sStr As String, iCount As Integer) As String ' ' Dim iPos As Integer ' ' While iCount ' iPos = InStr(sStr, "\n", iPos + 1) ' If iPos = 0 Then Return ' Dec iCount ' Wend ' ' Return Mid$(sStr, iPos + 1) ' ' End Public Sub Diff(Optional sPath As String, Optional bFull As Boolean, bNoWhiteSpace As Boolean) As String If Not sPath Then sPath = Project.Dir Return $hVC.Diff(sPath, bFull, bNoWhiteSpace) End Public Sub History(Optional sPath As String, sPath2 As String, bFull As Boolean) As String If Not sPath Then sPath = Project.Dir Return $hVC.History(sPath, sPath2, bFull) End Public Sub HighlightHistory(sText As String) $hVC.HighlightHistory(sText) End Public Sub CanControlProject() As Boolean Return False ' Dim sDir As String ' ' If $hVC <> CVersionControl Then Return ' ' If $bSvn17 Then ' sDir = $sRealDir ' Do ' sDir = File.Dir(sDir) ' If Exist(sDir &/ ".svn") Then Return True ' If sDir = "/" Then Return False ' Loop ' Else ' If Exist($sRealDir &/ "../.svn") Then Return True ' Endif ' ' If Exist($sRealDir &/ "../CVS") Or Exist($sRealDir &/ "../CVSROOT") Then Return True End Public Sub ControlProject(sType As String) Dim hVC As CVersionControl Dim bErr As Boolean Select Case sType Case CVersionControlSubversion.Name hVC = CVersionControlSubversion Case CVersionControlGit.Name hVC = CVersionControlGit Default Return End Select If Not hVC.CanControlProject() Then Return If Message.Question(Subst(("Do you really want to put this project under version control with &1?"), hVC.LongName), ("Yes"), ("No")) = 2 Then Return Project.CleanUp Try Kill Project.Dir &/ ".settings" bErr = hVC.ControlProject() Project.Config.Save If Not bErr Then Refresh Project.Refresh FVersionControl.Run() Else ShowError(("The project could not be put under version control.")) Endif End Public Sub Info() As Collection Return $hVC.Info() End Public Sub CleanUp(sPath As String) $hVC.CleanUp(sPath) End Private Function Enabled_Read() As Boolean Return $bEnabled End Private Function Output_Read() As String Return $sOutput End Public Sub GetBranches(ByRef sCurrent As String) As String[] Return $hVC.GetBranches(ByRef sCurrent) End Private Function Name_Read() As String Return $hVC.Name End Public Sub GetDefaultJournal() As String Return $hVC.GetDefaultJournal() End Public Sub GetDelimChange() As String Dim sStr As String sStr = String.Left("-------- " & DELIM_CHANGE & " ", 77) sStr &= String$(78 - String.Len(sStr), "-") Return sStr End Private Sub GetAuthentication(Optional bNoUser As Boolean) As Boolean Dialog.NoUser = bNoUser Dialog.Key = Project.Name &/ "VersionControl" If Dialog.AskPassword() Then Return True $sUser = Dialog.User $sPassword = Dialog.Password $bAuth = True End Private Function DoNotPush_Read() As Boolean Return $hVC.DoNotPush End Public Sub SetBranch(sBranch As String) Dim sCurrent As String Inc Application.Busy $hVC.SetBranch(sBranch) GetBranches(ByRef sCurrent) If sCurrent = sBranch Then Project.Reload Dec Application.Busy If sCurrent <> sBranch Then ShowError(Subst(("Unable to switch to branch `&1`."), sBranch)) Endif Project.UpdateTitle End Public Sub InitControlProjectMenu(hParent As Menu) Dim hMenu As Menu Dim hVC As CVersionControl hVC = CVersionControlSubversion GoSub CHECK_CONTROL hVC = CVersionControlGit GoSub CHECK_CONTROL Return CHECK_CONTROL: If hVC.CanControlProject() Then hMenu = New Menu(hParent) As "ControlProject" hMenu.Text = Subst(("With &1"), hVC.LongName) hMenu.Tag = hVC.Name Endif Return End Public Sub ControlProject_Click() ControlProject(Last.Tag) End Public Sub ShowError(sErr As String) FVersionError.Run(sErr, $sLastResult) End Public Sub HasRemote() As Boolean Return $hVC.HasRemote() End Public Sub GetSolveConflictMessage() As String Return $hVC.GetSolveConflictMessage() End Public Sub NeedMove() As Boolean Return $hVC.NeedMove End gambas-3.16.3/app/src/gambas3/.src/Welcome/000077500000000000000000000000001411575327000201675ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/.src/Welcome/CCoolButton.class000066400000000000000000000103251411575327000234120ustar00rootroot00000000000000' Gambas class file Property Enabled As Boolean Property ToolTip As String Property Foreground As Integer Property Background As Integer Property Highlight As Integer Public Tag As Variant Private $hPanel As DrawingArea Private $hPict As Picture Private $sText As String Private $iBackground As Integer = Color.Default Private $bInside As Boolean Private $iHighlight As Integer = Color.SelectedBackground Event Click Public Sub _new(hContainer As Container, W As Integer, H As Integer, sText As String, vIcon As Variant, Optional sFont As String) $hPanel = New DrawingArea(hContainer) As "Panel" $hPanel.Resize(W, H) $hPanel.Mouse = Mouse.Pointing $hPanel.Arrangement = Arrange.Horizontal $hPanel.Spacing = True $hPanel.Focus = True If TypeOf(vIcon) = gb.String Then $hPict = Picture[vIcon] Else $hPict = vIcon Endif $sText = sText If sFont Then $hPanel.Font = Font[sFont] End Private Sub UpdateBorder() '$hPanel.Border = If($bInside Or $hPanel.HasFocus, Border.Plain, Border.None) $hPanel.Refresh End Public Sub Panel_Draw() If $iBackground <> Color.Default Then Paint.FillRect(0, 0, Paint.W, Paint.H, $iBackground) Endif If $bInside And If Me.Enabled Then Paint.FillRect(0, 0, Paint.W, Paint.H, Color.SetAlpha(Color.TextForeground, 224)) Endif Paint.DrawPicture($hPict, 16, ($hPanel.H - $hPict.H) \ 2) 'If $bInside Then Draw.Foreground = Color.Gradient($hPanel.Foreground, $iHighlight) Paint.Background = If(Me.Enabled, $hPanel.Foreground, Color.Merge($hPanel.Foreground, $hPanel.Background)) 'Paint.DrawTextShadow($sText, $hPict.W + 24, 0, $hPanel.W - $hPict.W - 32, $hPanel.H, Align.Normal) Paint.DrawText($sText, $hPict.W + 24, 0, $hPanel.W - $hPict.W - 32, $hPanel.H, Align.Normal) ' If $bArrow Then ' Draw.Picture(Picture["img/16/white-arrow.png"], Draw.W - 24, (Draw.H - 16) \ 2) ' 'Draw.Style.Arrow(Draw.W - 32, (Draw.H - 32) \ 2, 32, 32, Align.Right) ' Endif If $hPanel.HasFocus Then Paint.AntiAlias = False Paint.LineWidth = 2 Paint.Background = Color.SetAlpha($iHighlight, 128) Paint.Rectangle(2, 2, Paint.W - 4, Paint.H - 4) Paint.Stroke Paint.AntiAlias = True Endif End Public Sub Panel_Enter() '$hPanel.Background = $iHighlight 'Color.LightBackground '&88D5FF& $bInside = True UpdateBorder End Public Sub Panel_Leave() '$hPanel.Background = Color.Default 'Last.Parent.Background $bInside = False UpdateBorder End Public Sub Panel_GotFocus() UpdateBorder End Public Sub Panel_LostFocus() UpdateBorder End ' Public Sub Panel_KeyPress() ' ' If Key.Code = Key.Space Then Pressed(True) ' ' End Public Sub Panel_KeyRelease() If Not $hPanel.Enabled Then Return If Key.Code = Key.Space Then 'Pressed(False) Panel_Leave Raise Click Endif End Public Sub Panel_MouseDown() If Not Mouse.Left Then Return 'Pressed(True) End Public Sub Panel_MouseUp() Dim X As Integer Dim Y As Integer If Not Mouse.Left Then Return If Not $hPanel.Enabled Then Return 'Pressed(False) X = Mouse.X Y = Mouse.Y If X < 0 Or If Y < 0 Or If X >= $hPanel.W Or If Y >= $hPanel.H Then Return Raise Click Stop Event End Private Function Enabled_Read() As Boolean Return $hPanel.Enabled End Private Sub Enabled_Write(bEnabled As Boolean) $hPanel.Enabled = bEnabled End Public Sub Move(X As Integer, Y As Integer) $hPanel.Move(X, Y) End Public Sub Resize(W As Integer, H As Integer) $hPanel.Resize(W, H) '$hLabel.Resize(W - ($hImage.X + $hImage.W + 8) - 8, H - 8) End Private Function ToolTip_Read() As String Return $hPanel.ToolTip End Private Sub ToolTip_Write(sToolTip As String) $hPanel.ToolTip = sToolTip '$hImage.ToolTip = sToolTip '$hLabel.ToolTip = sToolTip End Private Function Foreground_Read() As Integer Return $hPanel.Foreground End Private Sub Foreground_Write(Value As Integer) $hPanel.Foreground = Value End Private Function Highlight_Read() As Integer Return $iHighlight End Private Sub Highlight_Write(Value As Integer) $iHighlight = Value End Private Function Background_Read() As Integer Return $iBackground End Private Sub Background_Write(Value As Integer) $iBackground = Value $hPanel.Refresh End gambas-3.16.3/app/src/gambas3/.src/Welcome/CSnowFlake.class000066400000000000000000000002521411575327000232110ustar00rootroot00000000000000' Gambas class file Public X As Float Public Y As Float Public Size As Short Public DX As Float Public DY As Float Public IgnoreTree As Boolean Public Stopped As Booleangambas-3.16.3/app/src/gambas3/.src/Welcome/CTear.class000066400000000000000000000001021411575327000222050ustar00rootroot00000000000000' Gambas class file Public Seed As Integer Public Age As Integer gambas-3.16.3/app/src/gambas3/.src/Welcome/CUser.class000066400000000000000000000003421411575327000222360ustar00rootroot00000000000000' Gambas class file Public Name As String Public Score As Float Public (Color) As Integer Public {Step} As Integer Public XD As Integer Public YD As Integer Public Size As Float Public (Image) As Image Public Bold As Boolean gambas-3.16.3/app/src/gambas3/.src/Welcome/CWelcome.class000066400000000000000000000256561411575327000227320ustar00rootroot00000000000000' Gambas class file Static Private BACKGROUND_COLOR As Integer = Project.COLOR_BLUE Static Private TEXT_COLOR As Integer = Project.COLOR_ORANGE Public NoTear As Boolean Private $hLogo As Image Private $hText As Image Private $hObs As Observer Private $hTimer As Timer Private $hSnow As Image Private $aSnowFlakes As New CSnowFlake[] Private MAX_SNOW_FLAKES As Integer = 250 Private $aImage As Image[] Private $bIgnoreTree As Boolean Private $bSnow As Boolean Private $aTears As New CTear[] Private $bTear As Boolean Private $hTear As Image Private $iTearAge As Integer Private $bWithPlatform As Boolean Public Sub _new(hDrawingArea As DrawingArea, Optional bHasTear As Boolean, bWithPlatform As Boolean) Dim I As Integer Dim dNow As Date hDrawingArea.Background = BACKGROUND_COLOR $hObs = New Observer(hDrawingArea) As "dwgWelcome" $bWithPlatform = bWithPlatform $bTear = bHasTear dNow = Now If dNow >= Date(Year(dNow), 12, 25) Then $aImage = New Image[8] For I = 0 To $aImage.Max '$aImage[I] = hSnowFlake.Stretch(I + 1, I + 1) $aImage[I] = New Image(I + 1, I + 1, Color.Transparent) Paint.Begin($aImage[I]) 'Paint.Background = &HF0F0F0& Paint.Brush = Paint.RadialGradient((I + 1) / 2, (I + 1) / 2, (I + 1) / 2, (I + 1) / 2, (I + 1) / 2, [Color.White, Color.SetAlpha(Color.White, 255)], [0, 1]) Paint.Ellipse(0, 0, $aImage[I].W, $aImage[I].H) Paint.Fill Paint.End Next $bSnow = True Endif If $bSnow Or If $bTear Then $hTimer = New Timer As "SnowTimer" $hTimer.Delay = 50 Endif End Static Public Sub PaintText(sText As String, X As Integer, Y As Integer, iColor As Integer) As Integer Dim XR As Integer Dim hShadow As Image Dim hSize As RectF Dim hFont As Font Dim iRadius As Integer hSize = Paint.TextSize(sText) iRadius = Ceil(hSize.H / 4) hShadow = New Image(hSize.W + iRadius * 2, hSize.H + iRadius * 2, Color.Rgb(0, 0, 0, 255)) hFont = Paint.Font Paint.Begin(hShadow) Paint.Font = hFont Paint.Brush = Paint.Color(Color.Black) Paint.Text(sText, iRadius, iRadius, hSize.W, hSize.H) Paint.Fill Paint.End hShadow.Fuzzy(iRadius) Paint.DrawImage(hShadow, X - iRadius, Y - iRadius - Paint.Font.Ascent) Paint.Brush = Paint.Color(iColor) Paint.Text(sText, X, Y) XR = X + Paint.PathExtents.Width Paint.Fill Return XR End Public Sub dwgWelcome_Draw() Dim X, Y As Integer Dim hDrawingArea As DrawingArea = $hObs.Object Dim I, S As Integer Dim hSnowFlake As CSnowFlake Dim hFir As Image Dim sText As String Dim sVersion As String Dim hTear As CTear Dim R As Float Dim iAge As Integer Dim XT As Float Dim DXT As Float Dim YT As Float Dim J As Integer Dim bDraw As Boolean Dim DYT As Float Dim iLum As Integer Dim hRect As RectF Dim DS As Integer DS = Desktop.Scale If Not $hLogo Then 'hSvgLogo = SvgImage.Load("img/logo/gambas.svg") '$hLogo = New Image(hSvgLogo.Width, 256, Color.Transparent) $hLogo = Image.Load("img/logo/head-256.png") 'Paint.Begin($hLogo) 'Paint.Scale(1.1, 1.1) 'hSvgLogo.Paint 'Paint.End $hText = New Image(hDrawingArea.Width, hDrawingArea.Height, Color.Transparent) Paint.Begin($hText) Paint.Translate(DS, DS * 2) Paint.Font = Font["+10,Bold"] Y = Paint.Font.Ascent sVersion = Project.FullVersion If sVersion Begins "3.14." And If sVersion Not Ends ".90" Then If sVersion Ends ".0" Then sVersion = Left(sVersion, -2) X = PaintText("Gambas " & sVersion, 8, Y, Color.White) 'TEXT_COLOR) X += DS * 17 For I = -6 To 14 Paint.Font = Font[Format(I, "+0") & ",Italic,Bold"] PaintText("π", X, Y, Color.White) X -= Paint.Font.H / 6 Next Else X = PaintText("Gambas " & sVersion, 8, Y, Color.White) 'TEXT_COLOR) Endif 'Paint.Font = Font["+12,Bold"] 'PaintText(Project.FullVersionWithRevision, X + 8, Paint.Font.Ascent, Color.White) 'Color.SelectedForeground) Paint.Font = Font["+4,Bold"] Y += Paint.Font.Height PaintText("http://gambas.sourceforge.net", 12, Y, TEXT_COLOR) 'Color.LightForeground) Paint.Font = Font["Bold"] Y += 16 'PaintText(("This program is published under the GNU General Public License.") & "\n" & ("The Gambas font is published under the SIL Open Font License."), 12, Y, Color.SelectedForeground) sText = ("This program is published under the GNU General Public License.") & "
      " & ("The Gambas font is published under the SIL Open Font License.") Paint.Background = Color.Black Paint.DrawRichTextShadow(sText, 12, Y, Paint.W - 24, Paint.H - Y - 6, Align.TopNormal, Paint.Font.Height \ 4, 1) Paint.Background = Color.SelectedForeground Paint.DrawRichText(sText, 12, Y, Paint.W - 24, Paint.H - Y - 6, Align.TopNormal) If $bWithPlatform Then Paint.Font = Font["Bold,-3"] sText = UCase(Desktop.Platform) hRect = Paint.TextSize(sText) hRect.Adjust(-DS / 2, -DS / 4) hRect.Move(DS, Paint.H - hRect.H - DS * 3) GoSub DRAW_TEXT X = hRect.X + hRect.W sText = Mid$(UCase(Env["GB_GUI"]), 4) hRect = Paint.TextSize(sText) hRect.Adjust(-DS / 2, -DS / 4) hRect.Move(DS + X, Paint.H - hRect.H - DS * 3) GoSub DRAW_TEXT Endif Paint.End '$hLogo.Brightness(-0.1) Endif 'Paint.DrawImage($hLogo, hDrawingArea.W - $hLogo.Width, -10 - DS) Paint.DrawImage($hLogo, hDrawingArea.W - $hLogo.Width - DS, 0) If $hTimer Then If $bTear Then If Not $hTear Then $hTear = New Image($hLogo.W, $hLogo.H, Color.Transparent, Image.Premultiplied) $hTear.Fill(Color.Transparent) Paint.Begin($hTear) Paint.Translate(112, 87) 'Debug $aTears.Count I = 0 While I < $aTears.Count hTear = $aTears[I] Inc hTear.Age bDraw = False Randomize hTear.Seed XT = Rnd(-4, 4) YT = 0.0 DXT = Rnd(-2, 2) DYT = 0.1 For J = 0 To hTear.Age iAge = hTear.Age - J XT += DXT + Rnd(-0.1, 0.1) YT += DYT iLum = Color[$hLogo[XT + 112, YT + 87]].Luminance If iLum < 24 And If DYT > 0.5 Then DYT = 0.1 Else DYT = Max(0.5, DYT + 0.025) Endif DXT *= 0.8 If iAge < 128 And If (YT - R) < (Paint.H - 87) Then R = Max(0.5, 3 - Sqr(iAge) / 4) Paint.Ellipse(XT - R, YT - R, R * 2, R * 2) Paint.Background = Color.RGB(220, 230, 255, 192) ', 255 + (iAge \ 8) - 16) Paint.Fill bDraw = True Endif Next If bDraw Then Inc I Else $aTears.Remove(I) Endif Wend Paint.End Paint.DrawImage($hTear, hDrawingArea.W - $hLogo.Width - DS, 0) Endif If $bSnow Then If Not $hSnow Then $hSnow = New Image(hDrawingArea.Width, hDrawingArea.Height, Color.Transparent) Paint.Begin($hSnow) hFir = Image.Load("welcome/fir.png") Paint.DrawImage(hFir, 430, $hSnow.H - hFir.H) Paint.End Endif Paint.DrawImage($hSnow, 0, 0) For I = 0 To $aSnowFlakes.Max hSnowFlake = $aSnowFlakes[I] With hSnowFlake S = 1 + .Size \ 2 ' If .Alpha Then ' 'Paint.Background = Color.SetAlpha(&HF0F0F0&, .Alpha) ' 'Paint.Ellipse(CInt(.X) - S \ 2, CInt(.Y) - S \ 2 + 1, S, S) ' 'Paint.Fill ' Paint.DrawImage($aImage[.Size], CInt(.X) - S, CInt(.Y) - S,,, (255 - .Alpha) / 255) ' Else Paint.DrawImage($aImage[.Size], CInt(.X) - S, CInt(.Y) - S) 'Endif End With Next Endif $hTimer.Start Endif Paint.DrawImage($hText, 0, 0) Return DRAW_TEXT: Paint.FillRect(hRect.X, hRect.Y, hRect.W, hRect.H, TEXT_COLOR) Paint.Background = Color.White Paint.DrawText(sText, hRect.X, hRect.Y, hRect.W, hRect.H, Align.Center) Return End Fast Public Sub SnowTimer_Timer() Dim hDrawingArea As DrawingArea = $hObs.Object Dim hSnowFlake As CSnowFlake Dim I As Integer Dim H As Integer Dim S As Integer Dim X As Integer Dim Y As Integer Dim C As Integer Dim hTear As CTear Dim iSize As Integer $hTimer.Stop If Not Object.IsValid(hDrawingArea) Then Return If $bSnow Then H = hDrawingArea.H - 1 Paint.Begin($hSnow) Paint.Background = Color.SetAlpha(&HF0F0F0&, 128) While I < $aSnowFlakes.Count hSnowFlake = $aSnowFlakes[I] With hSnowFlake .X += .DX .Y += .DY X = CInt(.X) Y = Min(H, CInt(.Y)) C = Color[$hSnow[X, Y]].Alpha If .Stopped Then If Abs(.DX) < 0.25 Or If C >= 64 Then $aSnowFlakes.Remove(I) .DX = 0 .DY = 0 iSize = CInt(.Size * 0.75) S = 1 + iSize \ 2 If .IgnoreTree Then While Y > 0 If Color[$hSnow[X, Y]].Alpha >= 16 Then Break If Color[$hSnow[X - S, Y]].Alpha >= 16 Then Break If Color[$hSnow[X + S, Y]].Alpha >= 16 Then Break Dec Y Wend Endif Paint.DrawImage($aImage[iSize], X - S, Y - S) ',,, 0.5) 'Paint.Ellipse(X - S - 0.5, Y - S - 0.5, S * 2, S * 2) 'Paint.Fill Else .DX *= 0.5 .DY *= 0.5 Inc I Endif Else If Y < H Then 'And If C <> Color.White Then If .IgnoreTree Or If C >= 64 Then Inc I Continue Endif Endif If Y >= H Or If .IgnoreTree Then .DX = 0 .DY = 0 Endif .Stopped = True Inc I Endif End With Wend Paint.End If $aSnowFlakes.Count < MAX_SNOW_FLAKES Then For I = 0 To Rand(4) hSnowFlake = New CSnowFlake hSnowFlake.X = Rand(-10, hDrawingArea.W + 10) hSnowFlake.Size = Rand($aImage.Max) hSnowFlake.DY = 0.5 + hSnowFlake.Size / 3 + Rnd hSnowFlake.DX = (Rnd * 3 - 1.5) * hSnowFlake.DY hSnowFlake.IgnoreTree = $bIgnoreTree $bIgnoreTree = Not $bIgnoreTree $aSnowFlakes.Add(hSnowFlake) Next Endif Endif If $bTear Then Inc $iTearAge If Not NoTear And If $aTears.Count < 3 Then Randomize If $aTears.Count = 0 Or If Rnd < 0.005 Then hTear = New CTear hTear.Seed = Rand(2147483647) $aTears.Add(hTear) Endif Endif Endif hDrawingArea.Refresh End gambas-3.16.3/app/src/gambas3/.src/Welcome/FAbout.class000066400000000000000000000216261411575327000224050ustar00rootroot00000000000000' Gambas class file 'Static Private $aSupport As String[] 'Static Private $iWait As Integer 'Static Private $iSupport As Integer 'Private $aUser As New CUser[] 'Private $hBack As Picture 'Private $iStep As Integer 'Private $iFirst As Integer 'Private $bDrawAbout As Boolean Private Const NSTEP As Integer = 100 Private $hWelcome As CWelcome Private $aCache As Image[] Private $Y As Integer Private $YP As Integer Private $bPressed As Boolean Static Public Sub Run() Dim hForm As FAbout hForm = New FAbout hForm.ShowModal End Public Sub _new() ' Dim hImage As Image ' Dim hBackground As Image Me.Background = Color.SetAlpha(Color.TextBackground, 30) 'hImage = Image.Load("img/background/tawhid.png") 'hBackground = New Image(hImage.W, hImage.H, Color.SetAlpha(Color.TextBackground, 160)) 'hBackground.PaintImage(hImage, 0, 0) 'Me.Picture = hBackground.Picture End Public Sub Form_Open() $hWelcome = New CWelcome(dwgWelcome, False, True) End Public Sub btnClose_Click() Me.Close End Private Sub RemoveLink(sStr As String) As String Dim iPos As Integer Dim iPos2 As Integer Do iPos = InStr(sStr, "", iPos) If iPos2 = 0 Then iPos2 = Len(sStr) + 1 sStr = Left(sStr, iPos - 1) & Mid(sStr, iPos2 + 1) Loop Return Replace(sStr, "", "") End Private Function GetStars(iStar As Integer) As String Dim sStar As String Dim iInd As Integer For iInd = 1 To iStar If ((iInd - 1) Mod 5) = 0 Then sStar &= "★" Else sStar &= "☆" Endif Next Return sStar End Private Sub FillAbout() Dim hFile As File Dim sText As String Dim sLig As String Dim sMail As String Dim sCountry As String Dim sName As String Dim aAuthor As New String[] Dim aFinancial As New String[] Dim aSplit As String[] Dim iPos As Integer Dim I As Integer Dim N As Integer Dim sDesc As String Dim sColor As String Dim hFont As Font hFile = Open "AUTHORS" For Input While Not Eof(hFile) Line Input #hFile, sLig sLig = RTrim(sLig) If Not sLig Then Continue If Left(sLig) = "#" Then Continue If Not IsSpace(Left(sLig)) Then If sName Then aAuthor.Add(sName & "\n\n" & Html(sMail) & "\n" & sCountry & "\n" & sDesc) sName = Trim(sLig) sMail = "" sCountry = "" sDesc = "" iPos = RInStr(sName, "<") If iPos Then sMail = Mid$(sName, iPos + 1) If Right(sMail) = ">" Then sMail = Left(sMail, -1) sName = Trim(Left(sName, iPos - 1)) Endif iPos = RInStr(sName, "(") If iPos Then sCountry = Mid$(sName, iPos + 1) If Right(sCountry) = ")" Then sCountry = Left(sCountry, -1) sName = Trim(Left(sName, iPos - 1)) Endif Else sLig = RemoveLink(Markdown.ToHTML(LTrim(sLig))) If sLig Begins "

      " Then sLig = Mid$(sLig, 4) If sLig Ends "

      " Then sLig = Left$(sLig, -4) If sDesc Then sDesc &= "
      " sDesc &= sLig Endif Wend If sName Then aAuthor.Add(sName & "\n\n" & sMail & "\n" & sCountry & "\n" & sDesc) Close #hFile hFile = Open "support.txt" For Input ' While Not Eof(hFile) Line Input #hFile, sLig iPos = InStr(sLig, " ") If iPos = 0 Then Break sName = Mid$(sLig, iPos + 1) sText = sName & "\n" & Left(sLig, iPos - 1) aFinancial.Add(sText) ' iPos = aAuthor.Find(sName & "\n*", gb.Like) ' If iPos < 0 Then ' aAuthor.Add(sText) ' Else ' aAuthor[iPos] = sText & Mid$(aAuthor[iPos], Len(sName) + 2) ' Endif Wend Close #hFile aAuthor.Sort(gb.Language + gb.IgnoreCase) aFinancial.Reverse() gvwAbout.Columns.Count = 1 N = 6 gvwAbout.Rows.Count = aAuthor.Count + aFinancial.Count + N + 2 gvwAbout.Columns[0].Width = Me.ClientWidth - Desktop.Scale * 6 gvwAbout.Padding = 0 ' Space gvwAbout.Rows[0].H = dwgAbout.H ' Gambas gvwAbout[1, 0].RichText = "Gambas Almost
      Means BASic !" gvwAbout[1, 0].Font = Font["+10"] gvwAbout[1, 0].Alignment = Align.Top 'gvwAbout[1, 0].WordWrap = True ' Logo gvwAbout[2, 0].Picture = Picture["icon:/128/gambas"] gvwAbout[2, 0].Alignment = Align.Top ' Licence title 'gvwAbout[3, 0].Text = ("License") 'gvwAbout[3, 0].Font = Font["Bold,+2"] 'gvwAbout[3, 0].Alignment = Align.Top ' Licence gvwAbout[4, 0].RichText = "

      " & String.UCase(("License")) & "


      " & lblLicense.Text gvwAbout[4, 0].WordWrap = True gvwAbout[4, 0].Alignment = Align.Top gvwAbout[4, 0].Padding = Desktop.Scale * 3 ' Authors title gvwAbout[5, 0].RichText = "

      " & String.UCase(("Authors")) & "

      " 'gvwAbout[5, 0].WordWrap = True gvwAbout[5, 0].Alignment = Align.Top For I = 1 To 5 gvwAbout.Rows[I].H = -1 Next gvwAbout.Rows[4].H += Desktop.Scale * 2 sColor = "#" & Hex$(Color.Merge(Color.TextBackground, Color.TextForeground, 0.8), 6) For I = 0 To aAuthor.Max aSplit = Split(aAuthor[I], "\n") sName = String.UCase(aSplit[0]) '"" & String$(64, "─") & " sText = "

      " & sName & "" If aSplit.Count = 2 Then sText &= "

      " sText &= "" sText &= ("Financial support") & "
      " & GetStars(CInt(aSplit[1])) Else sText &= "
      " If aSplit[3] Then sText &= " (" & aSplit[3] & ")" If aSplit[2] Then sText &= "
      " & aSplit[2] & "" sText &= "

      " sText &= "" sText &= aSplit[4] If aSplit[1] Then sText &= "
      " & ("Financial support") & "
      " & GetStars(CInt(aSplit[1])) sText &= "
      " Endif 'sText &= "" gvwAbout[N, 0].WordWrap = True gvwAbout[N, 0].RichText = sText gvwAbout[N, 0].Padding = Desktop.Scale gvwAbout[N, 0].Alignment = Align.Center gvwAbout.Rows[N].Height = -1 Inc N Next gvwAbout[N, 0].RichText = "

      " & String.UCase(("Financial support")) & "

      " 'gvwAbout[N, 0].WordWrap = True gvwAbout[N, 0].Alignment = Align.Top gvwAbout.Rows[N].H = -1 gvwAbout.Rows[N].H += Desktop.Scale * 3 Inc N hFont = gvwAbout.Font.Copy() For I = 0 To aFinancial.Max aSplit = Split(aFinancial[I], "\n") sText = String.UCase(aSplit[0]) hFont.Size = Min(24, CInt(aSplit[1]) / 2 + 7) gvwAbout[N, 0].Font = hFont gvwAbout[N, 0].WordWrap = True gvwAbout[N, 0].RichText = sText 'gvwAbout[N, 0].Padding = Desktop.Scale gvwAbout[N, 0].Alignment = Align.Center gvwAbout[N, 0].Padding = 0 gvwAbout.Rows[N].Height = hFont.H + Desktop.Scale \ 4 Inc N Next ' Final space 'gvwAbout[N, 0].Background = Color.Yellow gvwAbout.Rows[N].H = dwgAbout.H End Private Sub ScrollText(D As Integer) Dim hImage As Image $Y += D If D > 0 Then While $Y >= dwgAbout.H $Y -= dwgAbout.H hImage = $aCache[0] $aCache[0] = $aCache[1] $aCache[1] = $aCache[2] $aCache[2] = hImage Inc $YP If ($YP * dwgAbout.H) >= (gvwAbout.ScrollH - dwgAbout.H) Then $YP = 0 PaintAbout($aCache[2], $YP) Wend Else If D < 0 Then While $Y < 0 If $YP = 2 Then $Y = 0 Break Endif $Y += dwgAbout.H hImage = $aCache[2] $aCache[2] = $aCache[1] $aCache[1] = $aCache[0] $aCache[0] = hImage Dec $YP If $YP < 0 Then $YP = gvwAbout.ScrollH \ dwgAbout.H - 1 PaintAbout($aCache[0], $YP - 2) Wend Endif dwgAbout.Refresh End Public Sub timAbout_Timer() ScrollText(If($bPressed, 16, 1)) End Public Sub dwgAbout_Draw() Paint.DrawImage($aCache[0], 0, -$Y) If $Y > 0 Then Paint.DrawImage($aCache[1], 0, dwgAbout.H - $Y) End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then Me.Close End Public Sub dwgWelcome_MouseDown() Me.Close End Private Sub PaintAbout(hImage As Image, iPos As Integer) gvwAbout.Move(Me.ClientW, 0, dwgAbout.W, dwgAbout.H) If iPos < 0 Then iPos += gvwAbout.ScrollH \ dwgAbout.H gvwAbout.Scroll(0, iPos * dwgAbout.H) hImage.Fill(Color.Transparent) Paint.Begin(hImage) Paint.ClipRect = Rect(0, 0, dwgAbout.W, dwgAbout.H) gvwAbout.ScrollArea_Draw Paint.End End Public Sub Form_Arrange() Dim I As Integer FillAbout $aCache = New Image[3] For I = 0 To $aCache.Max $aCache[I] = New Image(dwgAbout.W, dwgAbout.H) PaintAbout($aCache[I], I) '$aCache[I].Save("~/cache-" & CStr(I) & ".png") Next $YP = 2 End Public Sub dwgAbout_MouseDown() $bPressed = True End Public Sub dwgAbout_MouseUp() $bPressed = False End Public Sub dwgAbout_MouseWheel() Dim I As Integer For I = 1 To 32 ScrollText(If(Mouse.Forward, -2, 2)) Wait Next End gambas-3.16.3/app/src/gambas3/.src/Welcome/FAbout.form000066400000000000000000000022431411575327000222350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,73,68) Text = ("About Gambas") Icon = Picture["img/logo/head-32.png"] Resizable = False Transparent = True Arrangement = Arrange.Vertical { dwgWelcome DrawingArea MoveScaled(0,0,69,26) } { lblLicense TextLabel MoveScaled(8,8,43,22) Visible = False Text = ("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, 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.\n") Alignment = Align.Top } { dwgAbout DrawingArea MoveScaled(27,40,24,18) Expand = True } { gvwAbout GridView MoveScaled(7,34,16,16) Background = Color.Transparent Expand = True Ignore = True Border = False Grid = False ScrollBar = Scroll.None } { timAbout #Timer #MoveScaled(48,38) Enabled = True Delay = 25 } } gambas-3.16.3/app/src/gambas3/.src/Welcome/FSystemInfo.class000066400000000000000000000154701411575327000234330ustar00rootroot00000000000000' Gambas class file Private $sInfo As String Public Sub btnClose_Click() Me.Close End Public Sub btnCopy_Click() Clipboard.Copy($sInfo) End ' Private Sub FindLibraryRec(sDir As String, sPattern As String) As String ' ' Dim sSubDir As String ' Dim sLib As String ' Dim aDir As String[] ' ' Try aDir = Dir(sDir, sPattern) ' If aDir And If aDir.Count = 1 Then Return aDir[0] ' ' Try aDir = Dir(sDir, "*", gb.Directory) ' If Not Error Then ' For Each sSubDir In aDir ' sLib = FindLibraryRec(sDir &/ sSubDir, sPattern) ' If sLib Then Return sLib ' Next ' Endif ' ' End Static Private Sub ReadLsbRelease(sPath As String) As Collection Dim cCol As New Collection Dim sLine As String Dim aLine As String[] For Each sLine In Split(File.Load(sPath), "\n", "", True) aLine = Scan(sLine, "*=*") Try cCol[aLine[0]] = UnQuote(aLine[1]) Next Return cCol End Static Private Sub GetDistribution() As String Dim cDist As Collection = ["lsb-release": "/etc/lsb-release", "vector": "/etc/vector-version", "slackware": "/etc/slackware-version", "debian": "/etc/debian_version", "redhat": "/etc/redhat-release", "arch": "/etc/arch-release", "SuSE": "/etc/os-release", "gentoo": "/etc/gentoo-release", "conectiva": "/etc/conectiva-release", "mandriva": "/etc/mandriva-release", "pardus": "/etc/pardus-release", "kanotix": "/etc/kanotix-release"] Dim sPath As String Dim sDistro As String Dim cData As Collection Dim iPos As Integer For Each sPath In cDist sDistro = cDist.Key If Not Exist(sPath) Then Continue If sDistro = "lsb-release" Then cData = ReadLsbRelease(sPath) sDistro = cData["DISTRIB_DESCRIPTION"] If sDistro Then Return sDistro Return cData["DISTRIB_ID"] & " " & cData["DISTRIB_RELEASE"] Else Return sDistro & " " & Trim(File.Load(sPath)) Endif Next If Exist("/etc/issue") Then sDistro = File.Load("/etc/issue") If sDistro Then iPos = InStr(sDistro, "\\") If iPos Then sDistro = Left(sDistro, iPos - 1) Endif Else Exec ["uname", "-s"] To sDistro Endif Return Trim(sDistro) End Static Public Sub GetInfo() As String[] Dim aText As New String[] Dim sTemp As String Dim cSearch As Collection Dim cFile As Collection Dim sDir As String Dim sFile As String Dim sPattern As String Dim aLib As New String[] Dim aSearchPath As New String[] Dim sVar As String Dim aEnv As String[] aText.Add("[System]") ' getting Version: set to FullVersionWithRevision at Project.initVersion aText.Add("Gambas=" & Project.FullVersionWithRevision) aText.Add("OperatingSystem=" & System.Family) Exec ["uname", "-r"] To sTemp aText.Add("Kernel=" & Trim(sTemp)) aText.Add("Architecture=" & System.Architecture) aText.Add("Distribution=" & GetDistribution()) aText.Add("Desktop=" & Desktop.Type) aText.Add("Font=" & Application.Font.ToString()) aText.Add("Scale=" & Desktop.Scale) aText.Add("Theme=" & Style.Name) aText.Add("Language=" & System.Language) If System.Family = "FreeBSD" Then Exec ["sysctl", "-n", "hw.physmem"] To sTemp sTemp = CStr(CLong(Trim(sTemp)) \ 1024) Else Exec ["cat", "/proc/meminfo"] To sTemp Try sTemp = Scan(sTemp, "*MemTotal:*\n*")[1] If Error Then sTemp = "" Else While Not IsDigit(Right(sTemp)) sTemp = Left(sTemp, -1) Wend sTemp = Trim(sTemp) Endif Endif If sTemp Then Try sTemp = Format(CInt(sTemp) / 1024, "0") & "M" If Not Error Then aText.Add("Memory=" & sTemp) Endif If System.Family = "Cygwin" Then aSearchPath = ["/bin", "/usr/lib"] cSearch = ["QT4": "cygQtCore*.dll", "QT5": "cygQt5Core*.dll", "GTK+2": "cyggtk-x11-2*.dll", "GTK+3": "cyggtk-3-*.dll", "SDL": "cygSDL-*.dll", "GStreamer": "cyggstreamer-*.dll", "Poppler": "cygpoppler-*.dll", "Curl": "cygcurl-*.dll", "OpenGL": "cygGL-*.dll", "Cairo": "cygcairo-[0-9]*.dll", "DBus": "cygdbus-[0-9]*.dll", "SQLite 3": "libsqlite3*.dll"] Else sVar = Env["LIBPATH"] If sVar Then aSearchPath = Split(sVar, ":") Else aSearchPath = ["/usr/lib"] Endif cSearch = ["QT4": "libQtCore.so.*.*.*", "QT5": "libQt5Core.so.*.*.*", "GDK2": "libgdk-x11-2*.so.*.*.*", "GTK+2": "libgtk-x11-2*.so.*.*.*", "GDK3": "libgdk-3*.so.*.*.*", "GTK+3": "libgtk-3*.so.*.*.*", "SDL": "libSDL-1.*.so.*.*.*", "GStreamer": "libgstreamer-*.so.*.*.*", "Poppler": "libpoppler.so.*.*.*", "Curl": "libcurl.so.*.*.*", "OpenGL": "libGL.so.*.*.*", "Cairo": "libcairo.so.*.*.*", "DBus": "libdbus-[0-9].so.*.*.*", "SQLite": "libsqlite3.so.*.*.*"] Endif If Stat("/lib", False).Type = gb.Directory Then 'Some systems link /lib to /usr/lib aSearchPath.Add("/lib", 0) Endif cFile = New Collection aText.Add("") aText.Add("[Libraries]") For Each sDir In aSearchPath For Each sFile In RDir(sDir, "", gb.File, False) sFile = File.Name(sFile) For Each sPattern In cSearch If sFile Like sPattern And If Not cFile.Exist(sFile) Then aLib.Add(cSearch.Key & "=" & sFile) cFile[sFile] = True Break Endif Next Next Next aText.Insert(aLib.Sort()) aText.Add("") aText.Add("[Environment]") aEnv = New String[] For Each sVar In Env aEnv.Add(sVar) Next aEnv.Sort For Each sVar In aEnv aText.Add(sVar & "=" & Env[sVar]) Next Return aText End Public Sub Form_Open() Dim aText As String[] Dim sText As String Dim I As Integer Dim aLine As String[] Inc Application.Busy aText = GetInfo() MakeAnonymous(aText) Project.SetEditorFont(gvwInfo) gvwInfo.Rows.Count = aText.Count + 1 gvwInfo.Columns.Count = 3 With gvwInfo[0, 0] .Text = ("Please copy these informations in all your bug reports.") .ColumnSpan = 3 .Font = Font["Italic,-1"] .Foreground = Color.LightForeground End With gvwInfo.Rows[0].Height = Desktop.Scale * 4 I = 1 For Each sText In aText If Left(sText) = "[" Then With gvwInfo[I, 0] .Text = Mid$(sText, 2, -1) .Font.Bold = True .Font.Underline = True .ColumnSpan = 3 .Padding = 4 End With Else If sText Then aLine = Split(sText, "=") gvwInfo[I, 0].Text = Space$(2) & Trim(aLine[0]) gvwInfo[I, 0].Padding = 4 gvwInfo[I, 2].Text = Trim(aLine[1]) gvwInfo[I, 2].Padding = 4 Endif Inc I Next gvwInfo.Columns[0].Width = -1 gvwInfo.Columns[1].Width = Desktop.Scale * 2 $sInfo = aText.Join("\n") Dec Application.Busy End Sub MakeAnonymous(aText As String[]) Dim I As Integer Dim sText As String For I = 0 To aText.Max sText = Replace(aText[I], System.Host, "") sText = Replace(sText, User.Home, "") aText[I] = Replace(sText, User.Name, "") Next End gambas-3.16.3/app/src/gambas3/.src/Welcome/FSystemInfo.form000066400000000000000000000014541411575327000232660ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,98,75) Background = Color.TextBackground Text = ("System information") Icon = Picture["icon:/large/system"] Arrangement = Arrange.Vertical Spacing = True Margin = True { gvwInfo GridView MoveScaled(5,5,49,22) Font = Font["-2"] Expand = True Grid = False ScrollBar = Scroll.Vertical } { HBox1 HBox MoveScaled(1,62,66,4) Spacing = True { Panel1 Panel MoveScaled(19,1,7,4) Expand = True } { btnCopy Button MoveScaled(34,0,15,4) Text = Shortcut(("Copy"), "C") Picture = Picture["icon:/small/copy"] } { btnClose Button MoveScaled(50,0,16,4) Text = ("Close") Picture = Picture["icon:/small/close"] Default = True Cancel = True } } } gambas-3.16.3/app/src/gambas3/.src/Welcome/FWelcome.class000066400000000000000000000227551411575327000227320ustar00rootroot00000000000000' Gambas class file Class Media Class MediaPlayer Static Public Filter As String Static Private $sPath As String Private btnNew As CCoolButton Private btnOpen As CCoolButton Private btnOpenExtern As CCoolButton Private btnRecent As CCoolButton Private btnExample As CCoolButton Private btnQuit As CCoolButton Private btnAbout As CCoolButton Private btnFarm As CCoolButton Private btnSoft As CCoolButton Private $iRecent As Integer Private Const LIST_NONE As Integer = 0 Private Const LIST_RECENT As Integer = 1 Private Const LIST_EXAMPLE As Integer = 2 Private Const LIST_SOFTWARE As Integer = 3 Private HEIGHT_BUTTON As Integer = Desktop.Scale * 7 Private $hWelcome As CWelcome Private $iSort As Integer = CRecentProject.SORT_BY_DATE Private $hRecent As CProjectList Private $hExample As CProjectList Private $hSoft As CProjectList Private $hPlayer As MediaPlayer ' Static Public Function Run() As String ' ' 'DIM hForm AS Form ' ' $sPath = "" ' 'hForm = NEW FWelcome ' FWelcome.ShowModal() ' Return $sPath ' ' End ' Public Sub _new() $hRecent = New CProjectList(lstRecent, txtFilter, CProjectList.TYPE_RECENT, Arrange.Row) As "ProjectItem" $hExample = New CProjectList(lstExample, txtFilterExample, CProjectList.TYPE_EXAMPLE, Arrange.Row) As "ProjectItem" $hSoft = New CProjectList(lstSoft, txtFilterSoft, CProjectList.TYPE_SOFTWARE, Arrange.Row) As "ProjectItem" End Public Sub Form_Open() Dim W As Integer Dim sFont As String Dim hCtrl As CCoolButton Dim bHasTear As Boolean 'Settings.Read(Me) 'Me.Center sFont = "Bold" W = panButton.ClientW btnNew = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("New project..."), "icon:/large/new", sFont) As "btnNew" btnOpen = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Open project") & "...", "icon:/large/open", sFont) As "btnOpen" btnRecent = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Recent projects"), "icon:/large/open-recent", sFont) As "btnList" btnExample = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Examples"), "icon:/large/help", sFont) As "btnList" btnSoft = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Installed software"), "icon:/large/download", sFont) As "btnList" btnFarm = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Software farm") & "...", "icon:/large/book", sFont) As "btnFarm" btnOpenExtern = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Open file") & "...", "icon:/large/file", sFont) As "btnOpenExtern" btnAbout = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("About Gambas") & "...", "icon:/large/info", sFont) As "btnAbout" btnQuit = New CCoolButton(panButton, W, HEIGHT_BUTTON, ("Quit"), "icon:/large/quit", sFont) As "btnQuit" btnRecent.Tag = LIST_RECENT btnExample.Tag = LIST_EXAMPLE btnSoft.Tag = LIST_SOFTWARE For Each hCtrl In [btnNew, btnOpen, btnRecent, btnExample, btnSoft, btnFarm, btnOpenExtern, btnAbout, btnQuit] hCtrl.Foreground = Color.Foreground 'hCtrl.Highlight = &H61A7C3& Next ' Fill recent list $iSort = Settings["/FWelcome/SortRecent", CRecentProject.SORT_BY_DATE] UpdateMenuSort $hRecent.SetSort($iSort) If CRecentProject.All.Count Then Toggle(LIST_RECENT) Else Toggle(LIST_EXAMPLE) Endif bHasTear = PlaySound() $hWelcome = New CWelcome(dwgWelcome, bHasTear) $hSoft.Fill End Private Sub PlaySound() As Boolean Dim dNow As Date Dim iYear As Integer Dim dEaster As Date Dim sPlay As String Dim sTemp As String Dim bHasTear As Boolean dNow = Date(Now) 'dNow = Date(2020, 12, 25) iYear = Year(dNow) dEaster = Date.EasterDay(iYear) If dNow = Date(iYear, 12, 25) Then sPlay = "bells.mp3" Else If dNow = Date(iYear, 8, 15) Or If dNow = dEaster Or If dNow = dEaster + 39 Then sPlay = "spiritus.mp3" bHasTear = True Else Return Endif Component.Load("gb.media") $hPlayer = New MediaPlayer As "MediaPlayer" sTemp = Temp$() Copy "welcome" &/ sPlay To sTemp $hPlayer.URL = Media.URL(sTemp) $hPlayer.ProgressiveDownload = True $hPlayer.Play(True) Return bHasTear End ' Public Sub cvwRecent_Click() ' ' $sPath = CRecentProject.All[Val(Last.Key)].Path ' Me.Close ' ' End ' PUBLIC SUB timMessage_Timer() ' ' IF System.RightToLeft THEN ' INC lblMessage.X ' IF lblMessage.X >= panMessage.W THEN ' lblMessage.X = - lblMessage.Width ' ENDIF ' ELSE ' DEC lblMessage.X ' IF lblMessage.X <= (- lblMessage.Width) THEN ' lblMessage.X = panMessage.Width ' ENDIF ' ENDIF ' ' END Public Sub btnNew_Click() $sPath = FCreateProject.Run() txtFilter.SetFocus If $sPath Then Project.Open($sPath) End Public Sub btnOpen_Click() $sPath = FOpenProject.Run() txtFilter.SetFocus If $sPath Then Project.Open($sPath) Else $hRecent.Fill Endif End Public Sub btnOpenExtern_Click() If FMain.OpenExternFile() Then FMain.Close End Public Sub btnList_Click() Toggle(Last.Tag) End Public Sub btnQuit_Click() $sPath = "" FMain.Close() End Private Sub Toggle(iState As Integer) Dim hCtrl As CCoolButton If $iRecent = iState Then Return $iRecent = iState lstRecent.Hide txtFilter.Hide lstExample.Hide txtFilterExample.Hide lstSoft.Hide txtFilterSoft.Hide Select Case $iRecent Case LIST_NONE panList.Hide Case LIST_RECENT panList.Raise lstRecent.Show txtFilter.Show panList.Show txtFilter.SetFocus Case LIST_EXAMPLE $hExample.Fill panList.Raise lstExample.Show txtFilterExample.Show panList.Show txtFilterExample.SetFocus Case LIST_SOFTWARE $hSoft.Fill panList.Raise lstSoft.Show txtFilterSoft.Show panList.Show txtFilterSoft.SetFocus End Select For Each hCtrl In [btnRecent, btnExample, btnSoft] hCtrl.Background = If($iRecent = hCtrl.Tag, Color.SetAlpha(Color.TextForeground, 240), Color.Default) 'hCtrl.Foreground = If($iRecent = hCtrl.Tag, Color.TextForeground, Color.White) Next End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then btnQuit_Click Else If Key.Alt Then If Key.Code = Key["P"] Then Toggle(LIST_RECENT) Stop Event Else If Key.Code = Key["E"] Then Toggle(LIST_EXAMPLE) Stop Event Endif Endif End Public Sub Form_Hide() 'Settings.Write(Me) Settings["/FWelcome/SortRecent"] = $iSort Settings["/FWelcome/Filter"] = txtFilter.Text End ' PUBLIC SUB dwgRound_Draw() ' ' Draw.FillColor = LAST.Foreground ' Draw.LineStyle = Line.None ' Draw.FillStyle = Fill.Solid ' Draw.RoundRect(0, 0, LAST.W, LAST.H) ' ' END Public Sub dwgExample_Draw() Dim hDrawingArea As DrawingArea = Last 'Draw.FillRect(Draw.Clip.X, Draw.Clip.Y, Draw.Clip.Width, Draw.Clip.Height, Int(Rnd(0, &H1000000))) Draw.Font = hDrawingArea.Font Draw.Text(hDrawingArea.Tag, 4, 0, Draw.W - 16, Draw.H - 4, Align.BottomNormal) Draw.Foreground = Color.Merge(Draw.Foreground, Color.White, 0.7) Draw.Line(4, Draw.H - 4, Draw.W - 9, Draw.H - 4) End ' Public Sub dwgExample_Draw() ' ' Dim hDrawingArea As DrawingArea = Last ' ' With hDrawingArea ' Draw.Font = .Font ' ' 'Draw.Foreground = .Foreground ' 'Draw.Line(0, .H / 2 - 2, .W - 1, .H / 2 - 2) ' 'Draw.Picture($hPicture, 0, 0, .W, .H) ' ' 'Draw.FillStyle = Fill.Solid ' 'Draw.LineStyle = Line.None ' 'Draw.FillColor = .Background ' 'Draw.Rect(8, 0, Draw.TextWidth(.Tag) + 8, .H) ' ' Draw.Text(.Tag, 8, 0, .W - 8, .H - 2, Align.Normal) ' ' End With ' ' End ' Private Sub GetTitle(hProjectInfo As CProjectInfo) As String ' ' With hProjectInfo ' Return "" & .Name & " " & .Version & "
      " & .Title & "" ' End With ' ' End Public Sub lblWebSite_MouseDown() Last.Foreground = Color.LightBackground End Public Sub lblWebSite_MouseUp() Last.Foreground = Color.TextBackground If Mouse.X >= 0 And If Mouse.Y >= 0 And If Mouse.X < Last.W And If Mouse.Y < Last.H Then Wait Desktop.Open(Last.Text) Endif End Public Sub lblWebSite_Enter() Last.Foreground = Color.LightBackground End Public Sub lblWebSite_Leave() Last.Foreground = Color.Default End Public Sub lstRecent_Menu() mnuSort.Popup End Private Sub UpdateMenuSort() Dim hMenu As Menu For Each hMenu In mnuSort.Children If hMenu.Tag = $iSort Then hMenu.Checked = True Break Endif Next End Public Sub mnuSort_Click() $iSort = Last.Tag $hRecent.SetSort($iSort) 'UpdateMenuSort End Public Sub ProjectItem_Click(Path As String, (Another) As Boolean) $sPath = Path Project.Open($sPath) End Public Sub ProjectItem_Refresh() CRecentProject.Check() $hRecent.Fill $hExample.Fill End Public Sub ProjectItem_Fill() If Last = $hSoft Then btnSoft.Enabled = Not $hSoft.IsVoid() If Not btnSoft.Enabled And If $iRecent = LIST_SOFTWARE Then Toggle(LIST_RECENT) Endif End Public Sub btnAbout_Click() FAbout.Run txtFilter.SetFocus End Public Sub btnFarm_Click() FSoftwareFarm.Run $hExample.Fill $hSoft.Fill End Public Sub panList_Arrange() Dim iArr As Integer iArr = If(panList.W > Desktop.Scale * 70, Arrange.Row, Arrange.Vertical) 'Debug iArr;; panList.W;; Desktop.Scale * 64 $hRecent.SetArrangement(iArr) $hExample.SetArrangement(iArr) End Public Sub Form_Activate() If $iRecent = LIST_EXAMPLE Then txtFilterExample.SetFocus Else txtFilter.SetFocus Endif End Public Sub MediaPlayer_End() 'Debug $hPlayer = Null '$hWelcome.NoTear = True End gambas-3.16.3/app/src/gambas3/.src/Welcome/FWelcome.form000066400000000000000000000052321411575327000225570ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,87,81) Background = Color.TextBackground Foreground = Color.TextForeground Text = ("Welcome to Gambas 3") Icon = Picture["img/logo/logo-ide.png"] Arrangement = Arrange.Vertical { mnuSort Menu { mnuSortByDate Menu mnuSort Name = "mnuSortByDate" Text = ("Sort by date") Radio = True Checked = True Tag = "0" } { mnuSortByName Menu mnuSort Name = "mnuSortByName" Text = ("Sort by name") Radio = True Tag = "1" } { mnuSortByPath Menu mnuSort Name = "mnuSortByPath" Text = ("Sort by path") Radio = True Tag = "2" } } { dwgWelcome DrawingArea MoveScaled(4,1,20,24) } { HBox1 Panel MoveScaled(1,27,78,41) Expand = True Arrangement = Arrange.Horizontal { panButton ScrollView MoveScaled(6,3,35,35) Background = Color.ButtonBackground Foreground = Color.TextForeground Arrangement = Arrange.Vertical Border = False ScrollBar = Scroll.None } { Separator1 Separator MoveScaled(43,10,0,6) } { panList Panel MoveScaled(46,5,28,30) Visible = False Background = Color.TextBackground Mouse = Mouse.Arrow Expand = True Arrangement = Arrange.Vertical { Panel3 HBox MoveScaled(0,0,27,4) { panFilter Panel MoveScaled(2,0,21,4) Expand = True Arrangement = Arrange.Fill Padding = 1 { txtFilter ButtonBox MoveScaled(1,0,5,4) Picture = Picture["icon:/small/clear"] Border = False } { txtFilterExample ButtonBox MoveScaled(7,0,5,4) Visible = False Picture = Picture["icon:/small/clear"] Border = False } { txtFilterSoft ButtonBox MoveScaled(13,0,6,4) Visible = False Picture = Picture["icon:/small/clear"] Border = False } } } { Separator2 Separator MoveScaled(3,6,20,0) } { lstRecent ScrollView MoveScaled(2,7,9,9) Expand = True Spacing = True Margin = True Border = False ScrollBar = Scroll.Vertical } { lstExample ScrollView MoveScaled(16,17,8,10) Expand = True Spacing = True Margin = True Border = False ScrollBar = Scroll.Vertical } { lstSoft ScrollView MoveScaled(6,19,8,10) Expand = True Spacing = True Margin = True Border = False ScrollBar = Scroll.Vertical } } } } gambas-3.16.3/app/src/gambas3/AUTHORS000077700000000000000000000000001411575327000207032../../../AUTHORSustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/_fake_project000066400000000000000000000002301411575327000204400ustar00rootroot00000000000000# Gambas Project File 3.0 # Compiled with Gambas 3.5.90 Title=Fake project Description="This is a fake project just for allowing to open a single file" gambas-3.16.3/app/src/gambas3/font/000077500000000000000000000000001411575327000166755ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/font/font.allow000066400000000000000000000002221411575327000206770ustar00rootroot00000000000000 Gambas gambas-3.16.3/app/src/gambas3/font/font.conf000066400000000000000000000001321411575327000205060ustar00rootroot00000000000000 gambas-3.16.3/app/src/gambas3/font/gambasb12.otb000077700000000000000000000000001411575327000260742../.hidden/font/gambasb12.otbustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/font/gambasb13.otb000077700000000000000000000000001411575327000260762../.hidden/font/gambasb13.otbustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/font/gambasb16.otb000077700000000000000000000000001411575327000261042../.hidden/font/gambasb16.otbustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/font/gambasr12.otb000077700000000000000000000000001411575327000261342../.hidden/font/gambasr12.otbustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/font/gambasr13.otb000077700000000000000000000000001411575327000261362../.hidden/font/gambasr13.otbustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/font/gambasr16.otb000077700000000000000000000000001411575327000261442../.hidden/font/gambasr16.otbustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/gitignore000066400000000000000000000002321411575327000176360ustar00rootroot00000000000000#---- Gambas files to ignore (v5) *.gambas .lock *~ core core.* vgcore vgcore.* .kdbg* .*.prof .lang/*.pot .gambas/* .settings .startup .list .info #---- gambas-3.16.3/app/src/gambas3/help/000077500000000000000000000000001411575327000166575ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/help/class-help.html000066400000000000000000000006121411575327000215770ustar00rootroot00000000000000

      $(title)

      $(help)

      ShowSymbols[ ShowSymbols]
      $(symbols)
      gambas-3.16.3/app/src/gambas3/help/component-help.html000066400000000000000000000010651411575327000224770ustar00rootroot00000000000000
      $(title)

      $(help)

      ''Classes''
      $(classes)
      gambas-3.16.3/app/src/gambas3/help/property-help.html000066400000000000000000000010611411575327000223550ustar00rootroot00000000000000

      $(class).$(name)

      Property $(name) As $(type)

      $(help)

      $(warning)

      gambas-3.16.3/app/src/gambas3/help/symbol-help.html000066400000000000000000000005021411575327000217750ustar00rootroot00000000000000

      $(title)

      $(syntax)

      $(help) gambas-3.16.3/app/src/gambas3/help/wiki/000077500000000000000000000000001411575327000176225ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/help/wiki/critical.png000066400000000000000000000011151411575327000221200ustar00rootroot00000000000000PNG  IHDR sIDATHǵOHTQR­Quf  8aDZڄ mZ!]4-L(q}-ޙ;ڛ;cн;{y"oi`6?WSB.*ּH6[Y:݈㌰HIlՕo9cO"Wnh][9$s1>@%I"SnRpnȘ@x,$\x,B]ЩIrq=ek4@AacxA:+^֩RKૺ=môZ>ג pxeHi-˝""g2jUĹ/;0Z f G pE5^BrAt"sxpx߲%Qbڕ\;LD/|'fBZ $mۙ!t@).DL#ZY~Qo&p;nQ7K/M{sP&mc,FJaGV(gi $dC[1D,2IENDB`gambas-3.16.3/app/src/gambas3/help/wiki/error-bg.png000066400000000000000000000002311411575327000220430ustar00rootroot00000000000000PNG  IHDRb PLTE.tRNS~g-9IDAT]1 K BfriB\(8lj\WZ W&:FKIENDB`gambas-3.16.3/app/src/gambas3/help/wiki/info.png000066400000000000000000000014111411575327000212600ustar00rootroot00000000000000PNG  IHDR sIDATHǍKTQϛtr[(Bp+*laEAJpcAAbCJ?y޽޹s|9|s$dJ/ڽHriٙw>8 9,GܲlbA.J8x, p5Lss8Y@-U^%:#+"謩^^)Ru$+'%"niIx*>>+I-Aq+RU~~xU]{gQc7OLUN&MS˛Ըq=eUlFRXaCO3vtỏBت}[ 4~1.|2VeSu¸nEKZZDA&%""$B* E=ߠkXr[$c^4RaHj3ִ,R/4$PaeE$sEr&!0kב.d}Khqˊ ެI>(rüG"Ѻ[8byu.!^GbaP{݌C CVf'a6/!;WR7(f)ܲ1  $Y.;ikwJPnz5.D,0L`8>hxHm$IF=5{-PQ&n1k)B/"IJՙBlz QuaIENDB`gambas-3.16.3/app/src/gambas3/help/wiki/page.html000066400000000000000000000012541411575327000214260ustar00rootroot00000000000000 Offline help $(noheader)

      $(link)
      $(page)
      gambas-3.16.3/app/src/gambas3/help/wiki/style-custom.css000066400000000000000000000002211411575327000227770ustar00rootroot00000000000000BODY { height: auto; overflow: auto; box-sizing: border-box; } BODY P { line-height: 1.5em; } BODY > DIV:last-child { height: 1em; } gambas-3.16.3/app/src/gambas3/help/wiki/style-offline.css000066400000000000000000000003341411575327000231140ustar00rootroot00000000000000.login { display: none !important; } .header { position: absolute; top: 0; left: 0; right: 0; padding: 0 2em; border-bottom: solid 1px #C0C0C0; box-sizing: border-box; } .page { background: white; }gambas-3.16.3/app/src/gambas3/help/wiki/style.css000077700000000000000000000000001411575327000277312../../../gambas-wiki/.public/style.cssustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/help/wiki/tip.png000066400000000000000000000010261411575327000211230ustar00rootroot00000000000000PNG  IHDR sIDATHǽ1kSQ bA֡"Oqn:EM~|qr*+TBR"TKjvs%/y%w?^Ȁ[b˄q<>fyv޺kW 3C33B x%LDl/at#>x-Z] %EpW\g1ӛ11K6Z` xA+Fy K0\ pXb=*S}ΧW3dvaF?iP%a>cBmoQF{|~}|OIENDB`gambas-3.16.3/app/src/gambas3/help/wiki/up.png000066400000000000000000000002711411575327000207540ustar00rootroot00000000000000PNG  IHDR7IDAT(1ao@TZƭH.-K nhD-ttȊ&f2EkvHBߵNʄ0x_˴,u/3=.z¨QC : O`hEME(=(}<IENDB`gambas-3.16.3/app/src/gambas3/help/wiki/vb.png000066400000000000000000000016131411575327000207400ustar00rootroot00000000000000PNG  IHDR DPLTE̞7Rəy @mٶ|-ZzK‹4oҩ"a͠&lǖzWǕrҪ ׳#P>հd}ײ^<ʛŒϤҪ‹.sAyۼ͟}ٸ{]\fŒ˜΢bHϥkܼ״Iں{G'9O d\ tRNS? vIDAT8}[ATP0;PvnXO;{wg0 Gb80]tL,@ "' QO4pL!b PW->CzF0WV}̱NKy \> !(*ƒ2 sTRcZ%B:FlfoHA0wG+Ynb_!hF#G'prjz "(`n^./.r`Vk2 Dq8{KTI'j'h;;gtUKUonXy@G /ra7fwf@>Kӣ f~Q H+ orBFK&1gIENDB`gambas-3.16.3/app/src/gambas3/help/wiki/warning.png000066400000000000000000000013001411575327000217670ustar00rootroot00000000000000PNG  IHDR D#PLTE̞7Rəy @mٶ|-ZzKA‹4ʛoҩ"WǕ>ײʚ.s^͟}~ iP\{|Hkܼ{Gѧۻrb'9O , tRNS? vCIDAT8}gW@E2ްaW]pvI&d|_'eN-!v:IptsK+ 6"jP c:$| tj@wO%`[z `fh: F1`R[&0 ̨q6rU s"B-,X0P\6VV# T( zW*mx7ܣ]e`ϟ{ .ppoS:=)XpNh ..^p2nSWI Z}1x#1O |V#uM?IfHJύH3IENDB`gambas-3.16.3/app/src/gambas3/img/000077500000000000000000000000001411575327000165035ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/16/000077500000000000000000000000001411575327000167315ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/16/arrange-h.png000066400000000000000000000002411411575327000213000ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqJ+tRNS,~%IDATcX L`$la d:IENDB`gambas-3.16.3/app/src/gambas3/img/16/arrange-hcenter.png000066400000000000000000000002441411575327000225040ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiq,tRNS,~(IDATc ;jU3@RF@F*WIENDB`gambas-3.16.3/app/src/gambas3/img/16/arrange-lr.png000066400000000000000000000002441411575327000214710ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiq,tRNS,~(IDATc 8@B F` @F+bIENDB`gambas-3.16.3/app/src/gambas3/img/16/arrange-tb.png000066400000000000000000000002421411575327000214570ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiq,tRNS,~&IDATc c jf8( 02 UԴIENDB`gambas-3.16.3/app/src/gambas3/img/16/arrange-v.png000066400000000000000000000002361411575327000213220ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqJ+tRNS,~"IDATcX LȄ $'"@F/&IENDB`gambas-3.16.3/app/src/gambas3/img/16/arrange-vcenter.png000066400000000000000000000002461411575327000225240ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiq,tRNS,~*IDATc Shjf8$50,duIR_IENDB`gambas-3.16.3/app/src/gambas3/img/16/checked-gray.png000066400000000000000000000003221411575327000217620ustar00rootroot00000000000000PNG  IHDRRgAMA asRGB pHYs+PLTELiq/tRNSj+Ӻ;4IDATc` 0@BP5E , $d)B\'PA"T D(H2Ѻ4DIENDB`gambas-3.16.3/app/src/gambas3/img/16/checked-lock.png000066400000000000000000000002351411575327000217530ustar00rootroot00000000000000PNG  IHDRR pHYs+PLTEGpL```^^^^^^``` &tRNSQ6{`$IDATc`D Ff0L L0Z&IENDB`gambas-3.16.3/app/src/gambas3/img/16/checked.png000066400000000000000000000002761411575327000210320ustar00rootroot00000000000000PNG  IHDRR pHYs+PLTE___]]]GpL```______```ބtRNSj+g=IDATcPB E#(C Pdc2 3F!2!A* @vvusO.IENDB`gambas-3.16.3/app/src/gambas3/img/16/close-window.png000066400000000000000000000002441411575327000220510ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqe5tRNS,~+IDATc`@ L L VhZ+$JQQ{I%IENDB`gambas-3.16.3/app/src/gambas3/img/16/collapse-container.png000066400000000000000000000002451411575327000232220ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqc5tRNS@f*IDATc ``p`8" 1b\V% IENDB`gambas-3.16.3/app/src/gambas3/img/16/configure.png000077700000000000000000000000001411575327000317742../../../../../comp/src/gb.form.mdi/img/configure.pngustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/16/control.png000066400000000000000000000006331411575327000211210ustar00rootroot00000000000000PNG  IHDR(-S pHYs+PLTEMMMHHHQQQLLLiiiNNNFFFXXXOOOBBBяIDAT]G0DQg0`&pM1Kԭ#&LjMԊ򦔪q P{Ӏ!@F /Ќ"@"$'c'd<(-R(W TJ cuƤIدrE#gap@5:4`? J`IENDB`gambas-3.16.3/app/src/gambas3/img/16/cursive.png000066400000000000000000000010471411575327000211210ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGBPLTELiqUUU@@@@@@CCC@@@AAA@@@@@@DDD>>>??????UUU333@@@@@@@@@DDD???AAA@@@@@@@@@AAA???@@@BBBBBB???@@@AAAAAA@@@AAA@@@@@@MMM>>>===CCC@@@@@@???AAA@@@@@@AAA???@@@FFF@@@??????AAA@@@???AAA@@@@@@@@@@@@@@@@@@???DDD>>>BBB@@@@@@@@@GzkHtRNSL.x-E"e'ПK#avnRœ !&gr/ =;AJcH(Y)6wnIDATc` X3`XͬuT2IENDB`gambas-3.16.3/app/src/gambas3/img/16/delete-container.png000066400000000000000000000002531411575327000226610ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqa^tRNS@f3IDATcFDDh5 U H80h5Bp- 0̅## 1IENDB`gambas-3.16.3/app/src/gambas3/img/16/embed-container.png000066400000000000000000000002371411575327000224750ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqtRNS@f'IDATcFLh5" `k& 2 T5/[IENDB`gambas-3.16.3/app/src/gambas3/img/16/expand-container.png000066400000000000000000000002451411575327000226770ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiq$/tRNS@f*IDATc ``p`8" 1b\V% IENDB`gambas-3.16.3/app/src/gambas3/img/16/fantasy.png000066400000000000000000000007361411575327000211120ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGBPLTELiq???@@@???@@@@@@999@@@@@@@@@BBBAAA@@@@@@@@@BBB@@@AAAAAAEEE@@@??????@@@AAA@@@UUU@@@DDD@@@???@@@@@@AAAAAA???@@@@@@AAA@@@???BBB333===DDD@@@@@@@@@>>>@@@@@@@@@@@@AAA@@@???CCC@@@@@@'S;tRNSE s2^>~+ΩA'_crzYF"oP%$l<IDATӍCJ; `4_3,grN%j۳|\u^` SޅTf)DRP߱c~D(ń=<CǶ9`ٯ2J/YzV=Xg䘍 {5CIENDB`gambas-3.16.3/app/src/gambas3/img/16/max-window.png000066400000000000000000000002511411575327000215270ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiq?tRNS~u#,IDATc` aHg``v OES8L'IENDB`gambas-3.16.3/app/src/gambas3/img/16/monospace.png000066400000000000000000000005641411575327000214300ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGB~PLTELiq@@@@@@@@@@@@@@@@@@@@@@@@999AAAAAACCC@@@III???@@@??????AAA@@@@@@@@@@@@BBB@@@???AAA???@@@@@@CCC>>>@@@AAA@@@@@@???@@@@@@???!*tRNSpl  ?J&AaCH:e8*%cnȏxqxb^IDATӥE0B ww@;9$(QӣrvL: tbC}>>???@@@???@@@@@@???@@@@@@@@@@@@@@@AAA???333@@@@@@AAA@@@???AAA@@@??????999CCC@@@@@@@@@???@@@@@@@@@AAA@@@@@@@@@AAABBB??????@@@>>>@@@@@@I6?tRNS` Jt3HL뛝-ѫawM,N0K@jDɕ .ϪG#im),*GIDATc` (j"썬mL@^&c "-J8m٘9`|eM{3;s5{v(_F^]. i/ 2! f/ R@ ,B"CIENDB`gambas-3.16.3/app/src/gambas3/img/16/tabmove.png000066400000000000000000000004231411575327000210730ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGBEPLTELiq츺讯޼ܶȋ tRNS@@@mLVIDATuI @Q*E;GoH^ ay[cpېjmp=7  +䟠O%T6~7W@2:IENDB`gambas-3.16.3/app/src/gambas3/img/16/tabstrip.png000066400000000000000000000003701411575327000212670ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGBBPLTELiq츺讯޼ܶ 1 tRNS@@@mL>IDATc`a(`P"B<@>6 8.LW ph2"IENDB`gambas-3.16.3/app/src/gambas3/img/16/tile.png000066400000000000000000000001701411575327000203720ustar00rootroot00000000000000PNG  IHDR%=m"gAMA asRGBPLTE___8jIDATc`π~ZzIENDB`gambas-3.16.3/app/src/gambas3/img/16/toggle-container.png000066400000000000000000000002441411575327000227000ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqtRNS@f,IDATcX B4:1420810208&JzAF$ c-IENDB`gambas-3.16.3/app/src/gambas3/img/16/unchecked.png000066400000000000000000000002341411575327000213670ustar00rootroot00000000000000PNG  IHDR%=m"gAMA asRGB pHYs+PLTELiq@@@lc"HtRNS@fIDATcX? IENDB`gambas-3.16.3/app/src/gambas3/img/16/white-close.png000066400000000000000000000002351411575327000216620ustar00rootroot00000000000000PNG  IHDRbgAMA asRGB PLTELiqAԗtRNS N$IDATct5H(z E  #\X ^ssCIENDB`gambas-3.16.3/app/src/gambas3/img/32/000077500000000000000000000000001411575327000167275ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/32/added.png000066400000000000000000000005061411575327000204770ustar00rootroot00000000000000PNG  IHDR D pHYs+@?>??@?B??@?>?HtRNS[!y ts'PEIDAT8͒ De׉cMQ>QcIҌK "g^;(r:2Ȩޟܝ/릲<FtSWkV @(VmKV O$$EEdXK|2n$0-yhOsNb?}A#*SIENDB`gambas-3.16.3/app/src/gambas3/img/32/comment.png000066400000000000000000000003771411575327000211060ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB?PLTELiq______```______```@@@YYYUUU___fff___^^^ddd___\\\______"gftRNS|㰱$p>IDAT8c`3| E YXy;SHD7E 0u$0?~F(`1nlIENDB`gambas-3.16.3/app/src/gambas3/img/32/compressed.png000066400000000000000000000003331411575327000216000ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLitRNS]RIDAT(c`h"Y`0"ES !pF Ca( 9`Ad%( J+ Qhhg K\E9Ĕ=IENDB`gambas-3.16.3/app/src/gambas3/img/32/conflict.png000066400000000000000000000005061411575327000212370ustar00rootroot00000000000000PNG  IHDR D pHYs+rw)ew^,/65oT. B p焌 {p,ڊو$u|NfNHq}N;*1}U-.HKI:IENDB`gambas-3.16.3/app/src/gambas3/img/32/filter-menu.png000066400000000000000000000010221411575327000216570ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB`PLTELiq-z_ tRNS      $IDAT8˕z Q3ٗɬeL$t* @55CGG@a%Їgk9ĭ^}.Up`}]ɬ1@8v#H Wx|HW]O0}P;ƪ ` 8Ϗ|&L@-`YL >Ri^OtA=(0Y60KX3͒/ #-9:t;+J\UP䢮֞Dg:\7E`IߎPA6}-/kB.IENDB`gambas-3.16.3/app/src/gambas3/img/32/filter.png000066400000000000000000000010111411575327000207130ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB`PLTELiq-z_ tRNS      ypIDAT8˭r E/Kgi/+H7N3Փ- Е@=cOGp*ݿdd;ꆿ8&eE >@|=5h_H>K$@eEEe8π fh3@&`Ȁvx(Q3UŚ 聦xF%,([!w0X4SȢra 587k>0շ4PvGdu{g*lk)I1ƞL/t 1pq7tY+ޭR t(IENDB`gambas-3.16.3/app/src/gambas3/img/32/green-arrow.png000066400000000000000000000003311411575327000216620ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTELiqu-t,h(Fu--u-- tRNSj @bFIDAT(c``&2 L/G h %@%hf 4CM d``DA 7n]:IENDB`gambas-3.16.3/app/src/gambas3/img/32/inheritance.png000066400000000000000000000002321411575327000217230ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```?CmtRNS@f'IDATc`V @pq*I #4)e9v*,|-IENDB`gambas-3.16.3/app/src/gambas3/img/32/linked.png000066400000000000000000000003061411575327000207020ustar00rootroot00000000000000PNG  IHDR $gAMA asRGBPLTELiq]]]ddd___```aaa```IUKtRNSI=IDATc` b``4sb`N``H䦁$J*6 d(xE(Br IENDB`gambas-3.16.3/app/src/gambas3/img/32/magic.png000066400000000000000000000003611411575327000205150ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTELiqAjtRNSMUsxIDATm; EQZ[,θ ce&3Kb!tU Ac:!+:JV8uIγfOB+Li|qo-Z?׈Q#F}mS*ܑIENDB`gambas-3.16.3/app/src/gambas3/img/32/modified.png000066400000000000000000000006131411575327000212150ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL777777778877667777::7788777777777777~~||}}ÒetRNS[!y ts>R+IDAT8͒ EE/mQ\BNds{L:4fEDO rS|hqKVU0 V&UaIENDB`gambas-3.16.3/app/src/gambas3/img/32/opengl.png000066400000000000000000000024611411575327000207240ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTELiqYW^\d[lXfTo`xg\m┤wnkp¼݋폦\bor偟Zjۼimܠt륽w{Ւf׻ŲV~^riVMvbJrQxVxY}Ζʞidiˮųt휤yk𓫻gsWz߫^b{fPsəsuNx񕪹鉟rދ駰aـlu񆚨{Ç|qᎮ}yrp{jy]~h6ܛtRNSIIDAT8c``NNNV~qdQYX_cPj+Ɋ5YZ˪X/'#>:QYGR>/s]]maFZ\Z\'wkǤԳpMN`-1KqtNY(s/2nK*ai< Y%~i&uXO* eYzV0۵} Vh Jp}js'z۸qR@ C%Y =Nyn6i í}K~޵3|t.[2%T#("ӗD=߸\={bBr#B󯉘Xѣ7)N,@jJ GZeST9Q#MhW""v|ka&0TE0 F732ddVDIENDB`gambas-3.16.3/app/src/gambas3/img/32/startup.png000066400000000000000000000002771411575327000211450ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___tRNS+NNIDATeй@CQ'vU*"Uڞݟ 4\qũ< ,NC;# Շz,ǁOoy"'iH=IENDB`gambas-3.16.3/app/src/gambas3/img/32/tab.png000066400000000000000000000003161411575327000202030ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTELiq]]]___ddd```aaa```BX,tRNS&jEIDAT(c`dD!!hn BIj`%( %480!֢; @ a=IENDB`gambas-3.16.3/app/src/gambas3/img/32/tile.png000066400000000000000000000001641411575327000203730ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTE___8jIDATc``uMc?͋IENDB`gambas-3.16.3/app/src/gambas3/img/32/uncomment.png000066400000000000000000000005051411575327000214420ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBQPLTELiq___@@@YYY___```______```UUU___fff___^^^ddd___\\\______#VtRNS|$rmIDAT8ݐ D[?hϦW@o&}LQ HpQxWq#x66(ߖMxx`BbO!#Hy(oX r1lJ䪠PKk !=IENDB`gambas-3.16.3/app/src/gambas3/img/32/wrap.png000066400000000000000000000003141411575327000204040ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTELiq```UUU`````````ccc``````$ntRNS rqK;IDAT(c`P@It ("a-a( %h I)']G+IENDB`gambas-3.16.3/app/src/gambas3/img/48/000077500000000000000000000000001411575327000167365ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/48/all.png000066400000000000000000000027611411575327000202220ustar00rootroot00000000000000PNG  IHDR00` gAMA asRGBPLTELiqllfokkkkkkkijfkkkkklllkjjkjkklpkjk)w|nW6lն+–?wϬϭvq A×E62>c.KGԵ1F3ܿM6/*4@يrUuҔeBwdjPƊsѭ^ʄ5,ډQ7t;`IÒہրօ`ˢlR8X5oОߎb78LŴ戹=J]>#tRNSmۑQ'gwvZY&hxAIDATHǕVC1-ņ;lpE }Ȑსswwwww^.^i{i$U|bbaaƸh:/t?t辑T%?8PsEeeE\e-0ٝoPFE&$".]p=B\RH@ ~''x j4&#ٸp`<]ѕ:GjOO>hNFWGN/+lj<뾤?%o܄d&S]l.Z7nPOdUzڝ׶>kq D,H7O/уs(`PGEkOzr}`fQ8f7 Z\s<;D˰`/2hu^dx֩j<` ?K!*|O^dZIyUH(̸}w/*xUblh LՆؐWQ9$Ȉzǃsd;E{;FIrdž"h6%UD*g/9ɘ>#wGALϚtDcr t9m [y @cl(=A'v$U`|ax`F QnBz-j̘wgFƒrԅ*&#R jaEkj pÔKȝ'jag/_ݗ3.6jBmq0RMp& ʥR{wX  +/`B A L՘_Qmv\UPT._X~+fAnn{˶T{^c?s<*r\q:@NE\!n/=R\(vmBԑKl ߳3PB.5GqDE?#b,rLfω$AMG@"D_a94 Ky}^BY@R,h0twA&B֑X4)V`+rvKPg܈Tgr&#/$i MW2DqH1 `937'`M!^s&F@MYTbDZ+9SF_ VϼsQSOqHfƄ=ۿg$)ܽO. F"xcXOP >J-DąNnTd.6@kHɃttAs,_ ӯrN\tuP6Y|mLYsmw.ԙhuE^tI9FA-복w&JO ޞp8U܋jx.^jD.u@ϻ5YHt7qd4îg8iv<(?vw&?o%loGbmVAslh-@FU@FRgd{Jkֵ!9m_Fh8\9Hqߺ# ]Ĕ QEۥm.jd r= +굊u'CGK@Άq%g2$w}|6|t@PE1hnCZ95bEfYS.qߺ&nyDjj !Z/7GM!rRA+9KE,A Wϫ/w\,~ylHi9i68?G!PGoX)D6AhAQhaZoxhL3rpQZ9HH,Zs8 ~evr.Cs4ۄE\> !~̓ԭZy'#该t5QzFNaU2w(?3&)%|jQnbZ4U@vu-5BffnB^ҡSZhJMW"Jjq}v" ]j&WQA\1roryVfAE?R[j#"']TZcϔKay;izr.u9 ֟,d&MFp7 &pQt7 "d>؍ Qi;tzм!˭svv+% C3Ƿ輇Blw-}yAJo~ E?P8[TKV-iy@O@fRjD/zT{}6|Rl#|q^^GV8ڒI9!`Aźnbn>3+bg)~~Xů'pF[~RR^.m[1S`?1oAYE׬Ivq; ֦bClQ.c6AD(Ea)BL,0lb I֬~3_hM.NoQ-G o^`&K53B^' %%D$ C1M l=a "g[T-⋚-a I$w"x{A!`YA۠$VLIC95Ώb|rW ܌+vs9e!e-`CYv=sهB@[pK;3=U/a"3g6hV- o/v)K(Ni->j)@$-6D^ i6OZ j%LK0cCWxl[<}o /-j)/&*9?AD[r7xf2_Gȁ_dVQZ@ =kIbI2'}6Yf9@:<'oC''+h п<2 Kdd.1 Lycbf2ZI#GT%>6,<ڙN#bnfHd 5CmxBk]?)6jX|wJGу\1Zđ[cZv s#*tO>1l%,I[q{a~ /-oъ&:,r]rJf>& 2ٛyτN+y]4Q;%9)X .Yh3}M 1;d@D 1l'ee^nb*lOnPB]*x2 R{"lV\J%aq&!0_ޢ_ ҲۋvRF j 7ߢgXi]*(2ސZEv5# ,aDgۏHC sQ TQ'(O]v#8i*L=E2̗]$S뿧y#!#I+Љ!Τ=9cntn 6z:QhOG^pP)qla(r1q:Oj |aL6@E)H:HAVи4#TJ43tަΛ0Kg(8%V) ,֦{7Ǡ!ݯ+hq o@.+vf_s.QཐQ,p*^6cH~^E? E jˣhq }cg0@kK+#Py$Cm@5% βdeL@;!Ñ})a# p*@]N™#![n$& @j YMfZGNϼ qt`/;+3픎+i TWazGSu /on fz^M<YC=ðb[G?gASzg` WG̵6_׽yio8N#Y6%\TT $Ęҷ0$ʲgmQAX.z~UAg@rHaPp?<7j#\@ RK̲I+U錇2Ҵo"]bK/)ʌ5lZ1@* CIY'pZQFdr3R5| 󎞋ʁL.[>T X"u6^S>BGR`J+1yD?X@T, W :l55tl[4׽) 4i3YN ^oѴ(;R{qF2-/4g,8O{ { ~/S- N [snQ]c.53_Ɠ2PCץ(LKĸL\=aIړ>?d1ҡ/Ƶohcy駘`)Ph~RrAZ vL_2͞Tn0obKf|OuT~_Edc{p77؛cTG% j>1!;e!)㷗Ʌ%"r p}D(/$ψCx{ƮT<~пw"fa-?.EeAA¾ywC oHLfӦ?PoFIwy]; s hx_C%ΚSZ?{4#fȸ.<- tDEۥ@ {@k ie^\ë]#l;8c_ 3I)Ͷᅡb@ "+ ,F mͽ}>[x_h96lܼa P]*~~q6|4b3 X"3>K5Pk71Sj\s3 i7m|׾׿EyqSV0X).LzΗ Xn"MjO^ -./!\4G~5cA{/:-BΠ%ڭ?y?8.*ؠO{ %r*_qigkۥVF]gݲ.KXu,^נaz٢Z`({`/jy2}Fr? ")ݯu4.2Yq8* ;3R%c 5wZ*jcR\̬3U:$eN#Jz;8 |r%$N,[V&xd#̂7&Bb [xXFU]Yf 53U}oYK'7Qx= .o0NѾ JSx_zE`C!-툂X$*Zd<ֆo ?dlb.ڍ~&#
      e{p{"R{ Ud*еc< &wKFG8d~r=hb֝AR8㻞i{7Fi>PO W9j =O:E:=!74!cq>Dz25$ ?)H:Ux!Vd&*AHmN T6s|g2'ޑtd2c87:om}3PCCQ.9B VRQ߄j:yڒYԞ" /.+I3GhU?!bm=kGHr6*&3^ !+ڱ0~~h@XĘug]պTXtjBȻ85pÇNP!l%"/|iV\ o+)*Oz#u\r8 F?B, bMԘ²J@8mbݓ7?lz9T}_ҀFAUmKf\uF%!Mgo2MFbCc@斪h9/O7ܛ ,FMhc`PbHF0G<0]Jx-7cq g#iT sF,ǚt"f,!v.0~uyc;W1˓Bc]h쐩8K@zя Ќ8'MDH_(>С6!P߸s^kw2~wQ=DXz%[9|?uXzyբIUG@/Ak>! CNC#1t:$[njz50Jm(b0׫V*ia8Ƚ@eqQ&}!,jc`o>9NgF g M YΓ7]5?:)3}/݃IO&Oƒu"Z5:dV-,:d܄%)@N=xy)}Mo#6>w"CHɬ'x+'pwP.&.ږ33ԤtU icd _y[vm7Aij;TW`+kjCB=y뛨eg]DžwI+z`$|Da 'cc=+yA!!70; dɅzW hDaC7r }~m5E_Tea;p$1$̗茞 4!5jp;*vi"cTh)zlHaדa[ws,&}BNw?=Oa)m^@CA?c669)a,, 2gq,w.F|)L!>Xc!вhB${/# '(td+jB,!lfE?3goDܼ‰]IENDB`gambas-3.16.3/app/src/gambas3/img/background/christ.png000066400000000000000000000002721411575327000226250ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTE_tRNS0S#HIDAT8cX CZ `h@д4624 U EAtN Zh-0S4IENDB`gambas-3.16.3/app/src/gambas3/img/background/circle.png000066400000000000000000000003011411575327000225630ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTELiq=1 tRNSzxLJKI돨+IDAT(c`%HEUP0EIP`F@tūqNIENDB`gambas-3.16.3/app/src/gambas3/img/background/cross.png000066400000000000000000000002221411575327000224550ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTELiqKkFtRNS~rIDATc` TCwQY'!aIENDB`gambas-3.16.3/app/src/gambas3/img/background/cubism.png000066400000000000000000001745551411575327000226330ustar00rootroot00000000000000PNG  IHDR@@NUgAMA asRGBPLTE^^^XXXRRRSSSbbb```VVVWWW___]]]aaaPPPQQQTTT\\\NNNUUUOOOccc[[[ZZZdddYYYMMMLLLeeeKKKhhhgggfffiiiEEEIIIGGGJJJjjjHHHkkkFFFooonnnlllDDDCCCmmmAAABBB@@@:::000???999>>>777===;;;ppp888///555111666rrr222<<+PH'k(")'ca7檤4|Akp>?U*q\Q,?ɠ"DLT*1Q!'$)!u`Y]9oc$w^Χ&_~:P*$&ρ9kΐjogǎܽ><uBX#kdȿS(By^T/ISDITU5-nWdk Zh P>B;8[/lN5 OUZH ᝕Je[V`;ڣA#pAIp9?4n7BFCeI! т79,$Zݖu=>zv#'BJh8 .%@\C&S.jN0P9r{7jFQp{)3Wُ3}?d[:%[<>^>![Ə>>?>3>-뙨~cL l .qbE0t4Qٖղ9KfqƘ6F) U~wrrBH21= d,!fN#C3af0tl 5msafhhd[i%,Y&RnCړ]H$=. j(* Y[_r9At0lGEךN ǀ#PG"~4dl!Gؤ(2䌬J!"![DfHNGᣟy@F:M0o0~&ьX1cou" +p~E>?@,NVE--4 cD.l(6y}T.d^4hl6n`k(fP}>Ib(zQm,`OшV=#RL"l{92xTEe{T8ᳬ9& V·G@2, TIH# 1"JֶcgYK9C[-%Y{vp)\&쁉9 **ư@x{xi\p]gَ I] v/Wx{?_.W.Oc=f(#Q89\.YT4]Eې_:K~ep*Xyxy{{"KDob_\dq0." PJ8DXG6>|h_?ټ=9mXZL6cCJ \A3)^ִZDK 9,W‹{p kE˙~h}u;Ss p;"ldYR "@䏹_ω-Lfj[ B4`ع}}} 1C|3JrQl8lf.NײuV(w&P z\BbFx3&繇Wwʂ);حwax~P@:`3fGD ȁēh9nv+u̔~BhAZlb +Lz^W4EIlȯ%(*eT5_s4..w̭K*1ݱ4Atd7l|@ŗ gSb%$ؗp8]EKʉ&95!GY\h[b}3w7T=GNJ-V. 3F%4&Tojx@nMe}ow7elq?K^F92m]BhҸXm&$> W0 fu?!bHVd Vt;P%wf3y]a ߡ@R,R(O0QDkX(Z섢KVC/<<>8kfRJ+tT({R.]ԭՁq]/NVB9:7#jpwŚ3<9BaB BL_>](or}M=b%w:}d9e9M=."EE"ɇވI\J{ꪓɣIHA{鵚v _V|| ]]vyH?'pwS($AT4e + ])=T1chyXlHxT?8Kyɵ|M4?Zy4FK)V50d3 7;͂sS̽pEn/NuD!8\}v]GKe0~jٰ f蜅L$(1 O۞lv6+Q'^H…ISM31RrX*rI6 -'`(xI^[]7 Jg#K @]VQʥ*&\#am oDG+-m9v]3؅@"mY_-s2ŭ=@c1ErL1]'G^ ڎ^$ ! &R>_e[Zbzu])Cɚ?B5m|ܸٔ uda40q+ŲԪgۛ"63N)mbE8 a }2!`W:`k2 ́RbS  J/_Q'gg/??o?d+ VI)^Nl>R,= eC)lrNJ0깹h,ɷ Kl%ɹ"\O {F6t| k=_].aLEYחO-%t(k]\`X A<oO ;t NВSVF^m?N/gf.W0aVj~BWW7zDclrK7K,`0XW$6!mǏ71DWhaO!`^΁ٞ8MVʩ9 `cvr4w4>n]^5ŢVo Zv#|5~7fZӱpkb4yrL!1*ۃc5 VrC4翅,V4}VMnm&ww/ U"Ao(ohuTBуJ048K"( `4B .JF(vw:4WDn&Zg?%qN?4FýI潆`\dw\4R AI^|XOleYpF @1}Y4vP[{rMFM, /\c8~~y3mn"p4 w?Gc=+q<'j1[e-'9I $C1"(Jכ C>&"}HOkE!IW?ۉ ew^*^2 \g/bQ䄃{7q]I]褴YipkȌA[P4쁢$KBhY5}$PkZ >͟y>*QGPEרc+F^h*>kDoejl4E[zkj>_؊W*b3kBJdOr6ݗOo_u9yif#>kɃe4tG&]6ױ2TJ5eĨ[4S]S xb A䞭__H) -ݎO.eszu6^m&,J!%hZ|\:;Ař].H*[z?r3ioሢ,4+oɷ;Y |}GdieUkOwdK&ܒrP*,%"0+3 &o%>I!8d3-LQ|c0x<[NRK:t9zyԢY]6NcF! 7۬e >&JS3'O(?\Ap r^G.x@Gw-Un `q|c}}L^.;p0[/H67kRyu#yx.#*dM&d|{ }A|^A;9Ccܞdz`l澺KnUhLf`^%L2wTW pȪ[e+G% j܁w/Z-QNۭpl6/'P6"+U}^@Z?- !qw`01d%SŪ/Q/-aTJ`R=Bf8тS11B;CVS|HF}?)¼l8T9dJiU 'yUIW >ܕGEVhlLFjz6@<=>4m~hdr;:^=CCS1ݣhU#C,xTMJ:jªYXBa r:B*كyx>nNΥ~bH߯h:6?^Ă`:HQ跛m6~=玢y|;:C~AŽ-!'OF,_-VQ"LvKNlƦwoNv+@9BNUGc3"OS&T!ࢠJ訉xx E} bf wG d=ŜgF?;Xc~'~R!3bxA̻s^fY/dY5_iX,D!Z ehN-Z{^A9o"H[BIzdqp=-'b*yQXelÁ0>;}>񁸓)ީșdr0*V"f9#>Jdb/Gx"Z=,2&ʟTE-#;#dx`W<5NjgvN諞7juG,@ wu]5Frk<\D8F)ꙝ],v2$DŽ&ԴꝔLɊfS5p1C7bpG1,OHvLWوRɔ9I04wts:]"g[Lv M6p^)2]9x6:NJ+#)38WIC۽>'4&vY7/5N]/@fv%SaߩGcT[Wu&{Q7H%0/|6CюX7&rA:{k#ȏ)3R?*n Ɔ~CV.Qӏo.Nޛ)bi Rz8xAr㢛nAE0g`噵5ۛjz,w˻Xa$v"oN_hi??BQ5TOGU &\E@TC{YMUѾ$mA"!uӍ4o?8.,K,al&wljXk?Dk8 X %V<](Mx"CUܲxyvҭVxS潺ooI|/(.C}̸%z: K]YS{I]H5tH>,(:Ì@OQ?R';5iM&Lռ(:RY+N8zM9,6;ۼp9EE$6Ǫsk.~eSer=痗YTv(Y ;NP:gWJU'lZڮ>}E7kh g]I3(ƚs#DY8E7ת<3n ~ R {,AY$6l9o~(.h&gQ.yDq3]]PIt|2;ߞ_^ygB^vdo\3l &O|쐜lp}"D1|[D׳⁎m/BIS}QN9{CM,^ж l$^҇֞G);+Ä9w4 I#OWhBӡm^qXx^}yz|#'f9g٣^p]gh(n6*t2B?Z vFh?\('9iʘ^*6|^8p/ #ėݜ!/;. -O$?kI"U9:apw$qtWHjbc8?2锈y%].Q-`8cZ"oど/ūlIQYMjMkkГ6X>QFNQU8zSAn2skY1"j"%KezY ,I8`wGSc7]23Z7yE);~xy?u:V#mw ώ͛;؂ mLl]_qAB Eq8Z6؃Z=aJN*T9x}db2Eso<Q?.킯es5Nbbs Lj#9ɿ﬒a;8*'EV{yyxĊɤQ A#jp-2__?sjG$p[JۡL Ko#>6h4!H22{yca]+==5,*Z{@Ytj)2b ED>XǦq,3S˒yWgx:)R"r_#Y /Mm-,KWs!=D>~d, Gqj;^q1xtt7|iнx;܎8S#4GɨU;⨻! 1)É7MFPPO6Pɪlei@l 6%Eq("5yJ{rf ]ri|<`tE0"f6 ex>jټ<E߈Gz &]a3+G3`qUYN|xlދA3bL8( L1L<+'[O? )1ޞcX62͊G7RUw$B0FV](Q!5a khk|@"y(qo3 0>gǧQT?>ou\R̔,$e3Qx0gfɩɪCjT.SwPLR:Jf`|X ar>DidzN5{Y!ey3ھJ[s$jBD=* M+$[C],Q&0;Y>߿9ax0\ܗO_0]' !dߨ`@jl@WWI&>qAПh-lj܀O]ܐ  U<9!!:r6Qqd*+G`,gT^Z#TcFfsWy!;)Njr, 1Ap.}ޣ[;6\o#E,1%N %J1eؙV E'DZa6r^B,8xIAU2v&W*j~kQ#rg8TY,Nj|ϳţJYipapDP3ȃWі0^(G+#嬱 aI-lL˴>vEfsr(}`1iXHjEr\H.;0^A呖P⮗=*Ҁ:2>[~N)RmcXZcT%`@dej;q߄JBiԩ_+'ZʏfmoE44'B$f"?4=s$Wtrˋrus+ 뿍нf;ɘkHEfLsXfU#r?4 Kj[RY!" 4(5$T ;kb #F"kp< ȌP< Kxr4Nn)O|3= 8%TC!K^{=^_nory`?~} Oܾx`&\{_A`P?oꢐrFB1 !/<6_+Z41|Z$t|a"͚ 9Z.Sde,HQϿsMV-Hp$ JVӗjH)&珋oOm~AT[;ٰi}tIW2Q }4tѭT/Q2Rc1f H-bs1IO:QHMt 'jSJ ㋈38z=1u.h! X8Ccݓ.ơErH"ǑړPʓ%fozwxssw{ׯHzjߜ_۪ N2K!7}q*20fbb|OEɰ5opSUz%97<7֬% 3AT9-AGPxHdʢXK ?szQe}R#X*6POGSr=f8\?nȌfKc8X'" zRu3;B+ViM :GJJ+cUyUd ^b:acD; Ӕ)$5iXSMB&Wt}?ULBt!6B6GlP:x=*.ZcG?,(dؗ_yz}2ϯ^2>~gDqKj<~7A]$\@#>+ :1-T9:iXʡD8BAIaruEĐW|";"O:"c-97%(dž{xnۤ)/KK^3,)E>3u{0 QYSk̆2ðއJ^^;|a dZRog z8C{T7~hnzd~u#n xrN#YĦF֣C:N`_(㲙5)N&,+ 7 )4Y%".^ xl,޸@1-Nu'-\fڸ".ixQ0~I)'-"FZ'T6rz>5)a9uόˍACn©h7W̢ 1gց627%:~,Ԩ7lS ƴmvu=ŀe)-&ZA)z$5qJ&+N'@Qfj6a#{F;e$p{ݚ8~Qو0Ϧ&%Y/gp"9ruK͕0EB10s/|2D*f31ĊdրtR[܃\0bAzAT€zjgTbHUTc),X7ڧC1< I82$I5ӚR];2'ditINHm)UDGNs 6gv)%M# x~5<3.cd2[FLN*)~([!'P5Hf^`o%̀ij.*IOTH3 j,Uy16ilWU` !5J\1&2{%MrC㱻=vf@Bk~K ʘThuB_0kP؀Iךq--&<`#!x] S/ lh#"lik5UnDΊS_hXlGwqfpϟOJ0l|}X^ z&mo YN4wa$']mň.–-{1>q5@ б #;]4Ym,Zoq`OͩDl Ug׋%+&u{ ׂD+?ݡY;fg8 y0첌[P`Dr:?=8K8DmH ,ڿg)DPN2+)B|F>˳VUV)HBA }n8p㰞*:B^~p܋/(b%wNsnTqLQp6j@q;ʈ{SC *\Iޗ`}Pz3P$^l'k+ cNOrҀpۄ'b*W] 1Y.JY!~R+CA;`NtBzbZIZR;Cn.8dFc ^\ylwXlHD0 ˘*kBSkFVKE׍*gI5fK Xt8$d’\\*cſCz߿|~`g! k KI~TD21IrxtaPJdӴ+rv P{ IZvqw<[H+dقeaRm?/6h+SjW3X[Up%Z|> B=)m3̟5`?^nW6WMMJ7dpvK.7*YGj%U7)#֭}XiCXPj^&%УG*:;!Fexs<``yyXehx'hiKx!T*Cf@$C-W,"T墓52JTJV+xuwI}o8Dy0qmo ( -I% 3$I'mEr$$3R@.*#Pڀ4vf@ soĀ+h0; g1C0mʚYEk*wT/oM8CHBqN~QCnT;tz~<ǧ31d8 ieErq2 ?!l((.<\_(z{]h}w6AXnP&'Cil:T⮪OI -RGNspS0<)u~F)hਿ3'AI|9C^ibƶ\+$&lДCH"x u6|r|@p4My8Rt^>1Sc+t.Fh8pe` ̜rԉǣ ?$AXܖYi, CeJ%s ȫ)C%QF`t#;/=}.k|6ŦG ~UO],Yj+S#c9X-Ʀ]}G@\͡8--oq[}+9'g)xe&( DYCezT2yK c~)#7Qבq;yg8NɈ1 8+bqb H7߃z}s9e.ƘIr;~J֮2t$t@ HL211&Kq-*,g \E*l@E*bgDZɦ/:>haKXY]ur2W3 C? `ę\5<@->UT%*Rl&՚+^+I@ٸL/ &alӇ(=Nԙ6q5Qxf`}6IH`Il%lIF!*ؕ?9wz8u3f5PL6_mdV `!L @h%!d% GZ)؛׶lF iCv#9icT,pzFbtt hc"w% RSRmtdcb,jR"&L14%"J(LzOЄ li".ገ|:[obxxhr6;Ksd6)wbn ó>b5 ŤȔ#P 05'KWH,w)]=ZfSN }NTK^.c0">"J,nǏc˒ jnuuO2VTc TF7wxRvVZ}E\q>ɇFgL">[Uz=1߃:k(nRDsF$W xu;Vڡcv% /,ptjTr9M2lo!Cc;؉A7C y(3vT6'J"Q~ WjXA9]7 , H6ͣ]9IUu'VD֡\<1}Rh&ׯyP:8 ,Y+.|F.\{F G猕+O)[tJC&k DQ[/m|2Ԕ$(EwW!TㄩCFD4 ?S;~cU3)2a(O?XCh"- :Ҩ3zI,+Plbhk$N1އ뒮n@;<\, %Yrm +W Do[i^uf.D"eV0mST M&hzYˍMNu_incl2~T6?̚kl2Y 3Lv1M0hu\y<]EbOV XE' e|>lq&{iJ; cJPTO[`9$oȩem"(ߎd<ЎN3a~xqG 1܈{Ӊ"'fvXmS@Ga0*0Ʒ[rV/(A|áq~3ˤ腄x1;vru] 97?@<0|O`sj С.#@5f.;niQCd5 Wt%NNvă\o^VQcANò{d@ZE13V.N2/P "-$:=nWDn<u1>p~W =FYiuÁbyv=CT" |0Pa.q!3p.v 6l lb_H_Adåĩ0Oooޗ17Dʳ[[hg_ɐBe0VL\`<#Cw&I 8sX,V۾%8"] `ftczP{#[rt !΃:11E@pW59$-T/ !Az{f!=Ii@_e[=>·UpH az= @&1nPLuʊ˪ Vw*k'qu(Bڭ^!mTGr>ޑ_V Gd7j FY` p9Q),FN9J yD7Hi66Gy$1/#zNV mSB:UDқ=WnU9w |)qrԣrAcq yn/1iἬL7wϤ0ɡZ5Zm. nc0z): G *VPv復swjGR5A ٛW8@-[@&fc*M2fO=>C!U f)-Z(?>4t) R]! @`E*8@i @JZ`K|tET%W`q&L_OAgJ:1 Fc |@J;YNfMNdɱAҍ}UԶbؓpI4T{<{|~,+& χ=v{ϑf\E PR3lH2gyL.FBy}X4 0ZoeMXR_ʐqh h`z0ˆ^G[5@| d ?aiYXGQ5MvSqF#/R+w+CbPDzR6z}d.P+ >7nz2#6DR2X:֨Х"n?p,xSrUh[9O(J,  x$8˔ßl @Wʭ;UIeU +Uo7ݎkA؄0!Ehw;*itwléi~m= UN$_@R݅H˓5.97o ϯr)#%-E|>cJضh3 - HmBU_W>šbYZ77_JR{qΞZЃkMKXWYx :L/*CxL8UH+8.Kly>~eT ] e~Cd18(AZI%`!F˫|GNUr F#.ĕX/.hh#~9%ɺ&L)7"Ɇn<>{ g,X_u[Y ``ܸiՇ} cNOw>7B#1,X1դcnIU A؎B_s)2%2h=<݀в2iN#|!V $L擹gĪxvQ]t>wXq_stzz}Kk ] F"_.'d}8{ -:QҌ#+SDuŜѼ9&mO Z7Jz "r 62 % -fJ$ A`Mf?CxZ- P`CE 0?$nHF!@&CHO&2Z ǂX7P~z(@kgI]L2@/_`r\܂ a @Pf 3 0UxeO&pأ[O }[S <4Skz ];iPw*/A@5xd+GzFT>>≮:3h+FHb(x*GFi9ϓ1G`0:vp>Bj:5-ѧ7-F7b7?=::- TĔ&b+3Ț@>ZcBЦ?LkʚʐZ#!, a&d°T!kJVDb, ID),qcÝs.Ymd(W1yb1WKG-z/ғʶT]b2@qZh+W{ % uQxL 9-&8?zXe( m- aݟLm if-!1\cqo2XfXxMOyUpD:[@zqZZ.A+F(@dM8b6+@k6KK,cbh^Lj7q >l-=0os7ZkQ )e>M dm;-]A T30cm;l&3쏭s2Mۡ,ٔzhOov\tz.;'.0+a3qFEӘ̱|~ڄ_6V3 Q||6FMo!dpNbsgd5z^EȤ+tSy@2w FO;}Աի$=$9N3N`Dɿp[ ~7+P ]0\65^I_Η;߿_v5%tc_1;ȭM1xht;?*]P aKbWX\AHߞXdD\J7za}Sa n.3aҐ[hcOIA- s`I-&@: 3Fِ_?^鎙V C0 '"n?әaX(ov~"nJl[g;ǟ<9-vWjhZef lv)l@,XarLJ|> b D G} `w)ҐX,['٬x˅}C&9,2}P2[{1 j8W,F[u]~PBK~KbBQt9Tnɑdd|m.z~yғjjSif!i #hu 0ooTŀk7xPtV!֢r?$!ЩC}!}8(Zmm-rǢ IDATGer)f T|)5(JJ2=U5̢Dڹ v^ʠ>_B}"z;AԵЮMڜ6DCS<)@H@0J)`Twv'i$o`铅2pCNX*+=K ]g*Lw`Z.YA0_|T Zl 7uB.o t R)څN._]89iEpWL®7Oal2̖E%S0t%:pt*_E,25/ H8Wa.5S?>T'scl𚜌_a̝u. A4?SRtB$AJɟ1LȕUgvz6g`diffإ~hM>ٓ "A ޚG% :@2Vp=x'Fy$=!N*2tN"- YZ-h/QZ+ ![!{5Z^нz%L!n{ޙ:j,Wo/L8i3xP^p'Y;?M~^ F:E3uh2W `5KSo/^j p9C;s nO1* u1X͖bmM=]Z1 7h=;D$;'t!(%)lZK8ӳ״ahj7x\S!`1ЅצGfA׺tApB-Wl:< TqX/4CH!N4it^)shjB5YͶ%ku R}f֍@[.ϗ lk 2ܪ5~w#`󸇤7RsS$@O bg9T$v ^v cz-eZ|3n{T\?>==--&¬力Pʽ =?Zv\IX!V5c\0Fn|aE F n$t6)&ʦ؀ G#p %J'yRr 𘕼Xbt6wƴr Q!dHA$h; n,sER8 BKL_|;Li'wL~~_Z)E@NÞhJ6HV:m)&U @:ؤY\nE:F ЁҡW9OO//T_гSuK/\ u"q2>ytwȶgnޚiXJ";l{z=> 8MUJ( tY2~~7ԵB>++>Lij2;ϷfuA6[SmCt r`jk[x^\qz ds㋼kƀuAb`To S&z;bReIv%!jXMޔ d mYעpᤶ(HP5 \vsBMH@QBH@HA(Os7{D`JX6\AFFqRR)OOJpfNi]Cao/^Z0$bJ ^EQ%k^:FSإBR&\91: '_}t Vû@2"=qE~i ,ԌLStãYDaW,G!SYKn!ϝpv۾bF WM\S#V3lPdT,. ԁz!(4L w~'(9;KR)$!(~z6B ~U 21wgx,cZ)܋+: |F%K&4ۛڴ %Ŧ3͗:m1˥?`=: :9Yw\Ė0}QNȪJ2#,a C#~o̠Ig%aX]4vKpvaWd]|VyEKTMa!jNyyn=GM@MuUب&ݢũ~6eH!,Mq䱋h?%z[6e{&Ăd3ss2_9_}Zv11 ~SVio9e+J ncrR݅ARf,$NJ%!f[G_".gR2N&bإr14< Yke}syO4-HNiZL}?#xLŏj7ݖUo0ʓ:Mw1|P`Ż˱!g c `#-8l_ nv^!3a:J Ss JHNHRyq P`DpxjDecc č&RSGw_Lx Q㆚0d^b+!.Oc`ʋ<)`:Mll z4̾]ST#@ DG.$P9X> ͑~À/H~#5ntzA?f{D}Z P}8b1L>܄H:yOw|] QK '(QT"8[B}x y߿~|^JӕCx ܲd%]&QqESw=J{N:mP ]C7jAFF 0v:GrK"(?H^kژ Zn?#.=ӿ{n,TJL!YZTPc'c0pzi ~urɆTux?Rv=-W6pr~H}Mq|*}QnD-$^#~ ]N% EWv <r\p=[ {j@IgѶ $Y,h0LXPAٟO'Ntwa_}( ROZHd<]MAɋYޱ=Qg(!lIHu"\Q̦=A*-. kdUxBhYPBDYקowP~NF'Kd磚 Q4 WQTF҄Q=0L/W. i &5Pv7xXjd 9R"dBA<(-i *¥<dE8!I*Y>2.jln` RdAW |q%n?^/uy:\I.!h&GS<%OnKUb"eusUcqծ $XF('b$~PG YqwIx-6.sQ3S ;s% $pda'Imδ.Z=^U4io5;iԬV Pr=*5fMpg`f^b^WK9"χJe+WjiW(,`CYf5߽C+o0M( gl H `J"Nڕaɀ0K3(TrIQ!_kJ'77 T[B)yT*$Hp6nGdܻ6t$D D JP/ e>ɪ1Lgu!-<v4fw(KϘX>||b sӄDE "hPJ*L  s^0 TM A`!GA$bL$95'#xL$f*0D@Ek+Nؔz-F$D$h(B~u<=݁ >)V-( H*8|Р'UĵU;*k\3CmX ʺ##pOzş^ D<mDh3.=bN+u"ʚ쟡)hURD^ѱYz(+l۹\Cb$lxA,YRY%!'4Ξ>/N 6*:tÕZ-M%!ޯ=Z*a]rWˌJg";/]OeF*e6!OCoD.麅9! 3[s<4g̚Ȓ(\B+-H% kY+ J`cl` 613:aROu-dޛv8-od~[cW`||y愥BV+aT/\{QQt2gyїX:t[ 0P(;Ig:Y"H=<+Lwo^PBǧy2[[˛ J 6TdTz*^axڥ%rz?VDA*k :$&3yXr O-H$C0)3" m#on$}zxؗ `eG> w72B?oFALQ$|<"ҿ.4*/ur"Arlʖ1&%!kL7o2'ծ t~2P?FҺA2.d`5:Χy^X{VkU[_O?ۨd;=aZn  ϛ.M(=3m`yhh+$' ѻS$6DM+;N:' ~vQP5P~F(8Ǘ7 (|Gյh-Ѧl^Hn@ K_]d&w+n}fk2fTթSKw[fc -|C])m%Kӛu%_=^cv ;A  bć%_2ϲ2_tϤ>r<W pDz4WǓH1Mg CJBw:8!?`ÝV SR:OA$d)d\eT?n.Ԭ l?<ܟ|8nrA2_b ŤV*D.ٿDg=IZs Kj9Ut?LN Rɧ5&0I뛖%!+=Q+P>= q1j3DP| są+w4 NLvۃv"b]06KjFbW! !Ͻx{:?RZQ*ȊGD/䩑\R*ؠA1>W(n;x0ܖ窱j/nyt/V;:^ͮx3C3^Ǩg'SurS˙60 L>=}߮7JUA7 ^nZ)#5J&RkCo}E 񢲖U@S;%'Hq ZC cNI"71kڭKW;X9r[~X߄SbUQ!I,|uGqgJRDhU&l^ZidJB`~Žݽ69oC6Y.Yh7|rvsTք+NB$zFY4]c8M~O>Q),$5jO7TJ\"^+gG;Xc31NU8>bD?LG!"[i1bzWOwg7_O^ = M:(4ҜK]8v{y{$xaX)q;p@XJ{ ՖR2_GCL|kaW#H$Y0iPt=䧍M^BjiD6qgn\ֳHlI,&8T~mߏ4^/ժV58o%He(<<|./0)J uܳ<Ʀ43U5$O7ϹF2yH N~d3fb)`#!9"8>Ƌ?9݈ /4lŔMy1I"Z:3*r^xVW^U<%퓱w2?SUjc"uqJ"7woDm'J̴R`esj+nk:R0s0-{Fa AUkpyP=}y8j!џMcT-~t,ʧc#Bl4dj4:RH޸EM8xu55bԜO◬{z%.5zBAYK]B×rZ#d6I]lSl^GŔpi$9<3.2T7GŹyD_1d3JkMnĪ0$v`pAmVu׫ji4Tn/ 9g@\>p'v>.[.IlgLr1.,Gw@EyZVE.Q&e)5R)5Hp;X/px]O$Ӵ[j~h\ TjFN҈@ۢJ1X\h/(ӮaM_ZHbqKKj?}* ΂pU`13^[% uCWSW"*t,"B |94 ~SwovթYd KZ$4T]=f& 5ë=n@B-"|^3.ӉJ&\ NK] ٫۳ž(S K='u#1jrxtt]FKP9IwGQdi9,ev{k j\P؉#0hHf .u/o_)SC#z\9߫\ۉ S^>h<.x4?~ L\\%* 2 G 8h̜y# $O SQX#_JppR}JFb.xDMAPA"^@M jfDLyV>|!RX{]{u[NnTZ[d2*2mG S!%lGh>rȥ'&&Qq©W`0.t aR\On ͫ|V(_*6wK/_<9hRHkH\#Re $1٢I-f4&Z٥z^5 CvogU'qd 1U8{˴ZpAQdq4ǔm~cai?NQCfK VU7^Z#> MSjd"y;ؿ-P1BlCT[C'J ݘG>߅(ڥ&һodиDfv qqWJQ8_$}tt\wA Pv:7:RR39@bQ) "1 <b˗ZCU6ϏX~-^^q(xSӉpegŹCT`2lZ\se v8ƭp<J2]`rJJum,U6qM:1 jAB(TvX* w! ͧŸyqɮ97XQ R .q hTn~<B f`t)I1m\]WR$#D,󨽯 DݣS~$TefjKm}X [NMmֱ$?1,8O7]K3k#6LAk& =A ɴ`lE㚣OLD"eR2#ЭDX aݷ]#Sn0.cHz?^JFb>x#iYZ.[n8{L5\.i0EyFm(vxˊ;A.@Ïbw}Gm/A9wz:Uw+R>(xL.ʦ/1C^<@XHn@hf~`Q 8_)?d \w).|^(W |uu(8~_)-@t|E\] B.F1nFұ0n- &lL 4m dzk.Z:$=zӦtkK峱 ؤ"Yw- 6(x¡a3Ru 7QHu#X,OUAl,VnP<ߡ}6-i:@W"i)WtJø aȿ$%OhgC BruZC'ʙ}Ba+hTN' QpÑp@]jz\VX~`* tk񮹮B`4ʼn}{m n; Gj&=I_G0 3x:@Rp v|Q qK %2$gJc₅j4"ߞ0{:$NyսLnCN6WX{6^bww{YF[QltPL{ ##Sqn{ n#Lӝ7e+<`wlA\1mCK"1'9ӕvEdmid_eWMD411anCbI{wU-iRZ]qFY% N7ȻSFPTxYUOI@ .mxېH"j:YF`EDkohas)<~b %ɍқR㣋`pIYKvOEfvb(1GX`|o1 F%b^VmVA4(^Ccլ;YTFΦCUD@Ks(`fmRϑ!e6ک%!I7 O$_mفCEFbq,Z?Vg,@q3pZ3IAWs/\jb&Lh w ] Gu $@Xp$w0˚:X^%2 O6 W촓Ah8}U_RdfZhS~<\ tvB W)IC?_θ;gE`[>@P w-pr (L\12KɕW&MPfJփ=%lT4_vAvgFܸSJ]02RmF\T\ù`Vz -C(,fCƝm*)0O$ë1qNfc0 a+)w9}"_PG0(&%J| 3mJ:-w1dv9 (aRZN*smk?9G}j%zr,3`(HM.RVRd9τ@ܩ):5 K$]JV٬vĎ9r A*m+[4,@7W+5OOӪę5$L4\Fm#.+y`U!Q"196BӒQa"W[68TT@m40K4o$â+e"ٌyM؂RVB >!苸ɗ*"N@k6QU$4$Ö%Na8d =[]`t FAjݤ^n0j;1:Rc򋲓!l'i4c'`t}|,j1 $E`0(a.xj +̠OD͸~-eQOQk}BaM4HG2ճ/$#e.E w#&͜ _.(ͤ;z=k+JspM1!+a:1X,uLl$r Qq; v0@0J+M8XjJkRk W߆J$4SɏUqO@o_2sE @?SLd( %fdo]'nFi;:8IEvE\yz׷Lx}nή6\~t>%]©jǸ|8! 9,wF+wqJ|H2!() _c#/0W,w>qt5XPl&Y$"[W~r` =@bSI{&Cayl"dH-k0.)kxc_q ,&3 +4j!Hk KG=B͸'Q 9Q Ti\H[Zb -xyhYv2}.K7Gh4+$:*,Q4wOO/]ޛZ|^?K̚=@5 )Lq/!gGo3 rMפ yS8QA-u&.6;{M~R.fDk#p%[˩9;sT`oh!Blze:ҝj: <PVWE_a{p/\țeWoֽY4_鞊N5:ʾBҁ "YCJIkd[rr3 _ur9DZ@v!vH@s!ţZ <^Wt,8*e6wqiF6ToҴY'U,@Ec ,䨯sj\ 9rYȗf-vl[ptYiQa? svreTMd$ά:[4587WǖFHpAш nAfQG\ŵ90IpNKY ɿ ણgUʫpxM+6DCUlO`ȫ)ɅLdhdI8?`Y1Ȗ)2ts$, k'RG訠] u0ˆ2_N$eZ7[BCkYץ\S?c\ i c_FR>eS0Mz$?8pW W9$>>^p<؝B϶bqv" =*dz[&dX|"JٹR9idQgrH(9T&i6X9 Jeif"|ws;^ ~n7*2'{*!xJJ`~.6m3v  Já͇{F^7m u5kJLP2BrneC R2-}0e hR$|nR }dB  8EI$2t\ S=%ʣ\]6$b·Y2lS )&@AĠa|\,oo_?%(}Ǐ?^ݫ>y}Sʯ#W2d);waM0_3vh 7ɱHR'@&bXsayㅓU͗TN >@R0$=\{nႳwjVE% *R*/n Y˟_Oo`_~k;8LS R K4 z-G8obJ:&PЮz@Q|IWWZ-7T~DIʢ;40R@Eb:ѩpRxw` %O:5ebS/ /XTNŷf{[HB<Bw3 Bl VPE֤e^`Φ|ևdVwdU 8Rb T٢ғ W>gx*-Ǵc!G1Td{.Kw^6! [jI/ $LaIBPwսz70Oon qef0[s@3Ib`\sӁ8) +%,)߆]%121 vʹ Dr|֨Bu  Vxeݔ*i>8L?OյnQۀ5qH tTI4T*"˼W~Zۤ:nm ;m):!T!dԖ+ <* ʵ \f7V#`,J%(c O>?V+ZpWԨ ڳ\Nٔ@7wXXbe4JȮ_,eW0-b!/8NIQG3 wDb(5SėHpyzV:N~:]IT'vT>[)*/TNI#&,n.ۅ. hҦJX>;: 钏Weo@4wf Irh3eL>N䝈 j] |kx/fPڞl<9IQ>AIr bRy 8 v W}d2{Ea YOQ,RyIJ5`AZPˋ%X,:c93ȈUi,g<c'|<\. ??Ug=[Gǹ=8ʦC1ܐZweuA=Lm-sن\C^ ;? AGѫ:fGu6QB ]aAM+i,V4xhj:P94&K3`AHJTW`C(ϻ۱Tg%{$e\4r!;1өdZ)e'!kӻN܋Ee088 V&0gM1*< ԀlJG܋Jf<3@8T ;l$!pPеh;*r{ݮkbvƈnpFn WPpUTlAִ8m3\( rN UjIKx$ve ! Xj*.UGlZWʅg" A`\$nxpZU݊ H|A`ېkwdE'W\NP\sΙPp;,}}3t*C'9ڏk^ Vݽ Mb/z?F`)=oJ8SUFBߧh5ml7LfN7 'ilqC[dPmhuHpFg *J -uzns¹ͷކwߟw+|OuvBٗ!|aT*bs 8{LuVw0"|'Os-bTRiHh/XY5y!YǴc'U?Tt@) A4;J]2Š SYg*,, ֔>L0xt,%5oxxzthCBL$A=i4).򶧋9(z$E{-<7Ԅt凔!||QE {*b(aq:ajSe`\ED`Uၹ!CupaBUނp?'"R,^UB8vw71riqBiҭ(G2-ڳYU>ԩT2@0ͺ=Wq/4`@6Zsu~{ss{{{z˿LvͼYx#`\3_Ҳ:Do`h Lf<39BH=@(j? Grd:|EUB0^߱ģ}>ܞrKĉ*E;>_)jyBfkԪy/39s;fk8 qk.z o4NOA=<<ܽ xFbs B>TEH YXViKa$'8.C#܋( Á7ZMȕs]'wb\nNԊѶшJ&)!RFܬRD ,ƍD5!yF?}TOx`NZڠs>&*#T݌sӡ\ l蕷IWChԂ=X.W Z/9Yeכlp 1NhqJbZ_ .hO)#74xx4hֱ 7\KG [^cV3gA2_d[CPa0y8QRȵ\-Xu zd ,hwQ) g{lyDa]rQ HW=P X PI4 Z"XE4eNDA?9mlJ @`6@,c[ňcg8ؕT/^"1LMqsM\Ӳf9QI:|l9cۛ, T\VCf> [ KD4PZ*5#r׳R4+UXPjno& X1#,Ql$kA?|s0 ֱ,_bS+K/S38J۶Kg]Is=;9epbb^.b 7ڸ;pb%>A5_ x{\(:7zbv' *r7q9^"b/`!^;PJ0^g t=L@QծpRF(R,T-˨A*(UTJ€pO{Hf&=r X~l*LGJ :@$c4]²F-Ta)vslTz\ͺI%l^uuJZ6TFWPv(BHݪ AltB c~3&7 vA۪tr{рX^n1{ 2v3]1sa_^><ZQn"ȝ-~#MA:>xIr118o|*cAٹdAb:N>1?}9-+< 'hTCLKP6(!vbKeM)eܶGyTJe SݧG:/FHOPFlEG17 ~҂?"is&WҬ4ۨ%b8|6Иc'\Af')}N#:;9;#1PFP=^U*cgUR'MÒb$yYD0c<@mPFvbPcLX݋ÝR,N.0_'Ժ? n.=P LƟ_?@t R`M>37Ӏ<̲>B!EZ'аsgTESؚ=dz ᾤzJ<#G=T$'\v,ۢl%a@K:c>O%d*'bAVΎj9K x#-`EX({C/' j|ANN?g1.xs~Sbx0&ف\-͝6Xl..Tj_TȃK V9>4Z04˗-ʕ> &V2xHH)RmSԸL9[-w1CvK})l4j5"A=?ƿ?~o9۔$0gk+HZ)7oĐ @O'Y(A\NpTrTD4n_C[Z>hKtJL NwO D2!5tŪahe$'E%FDьa@yd;CUD;Da8kQ)Ԉ=w=sF/@oVg]DXG 0}9$TM&!NB4WMׯ jj `@(MΠXRWh2)>kYI 3 F,åΟ|>lBݬ*\8+t+Gѥ*P3wo|qO_l4#p/#_fLO/b@0q+WYOTuE4eRuMi[4  HDXEED.r[vz~k?{2ЙNQV˾azݾ\,>e}r})bt 2t+.3XAr6 |0Pa.K08"H&mlB|ı|Y(N3 4 QDS:_;LB7D1b7 #i;Jt#atDfZ<x|M9ʾɊJ\_ARV\~{:J}D +@ŢiL)/B`K l}*nX(ͷ}kR\C)XHzw^_z7*tn8\!8y):Qĸ22UB(Ž11MݡC1Gt^mM狗G覿ؙ"|p[2i"J@٣LkJ0t9$HF T)lX vPhH=O 6fqtiJ@L(\z@|ώ9BhZuBȎ$XmEj k ӹyRpK}VhI-_d@AT+̃aQ2Okzy{cn aMEy.r{M1S BRcd]<uNoWY-6j~h.NXW%E w"/HJUkd8aנ5]^oj>̀礖!;Yhh@OۉQ7M-(OS;lv6\2( kT1$@Bre*!}"Ѯ{ol$}Isj2ӄ^,~ǏՙI%]EXiѭ_ᑴW}{&H!wH ؔT\B?j>A0Hؾo 9  cxj,8BnP.O,@;)va xt- E]?15WL90(Fh^q[цSS[-hQă,<wEw79m:/ [esˆ3x1| t'^E c\r4鲣k|8 G.tYngKӱz~3׵ T)0`@8%h(+WßY1 )2P|u=~coxN3hQZI%`#U G*\v{4|>$RFb 򄩶_@-  (JFr |nk+h0%#ܶSDwS_=p.sX{֜rr̖hvΞe>t)EJa =֣"ӦkړA-%hPdJ߷kN3͘ZrXqĈ֟ia{%n0Su& = b<~Z^`TeKGLd 𚗽Nݫ@qJ5;$B+VU%b>-JVG zq7fiȲ`6+*Աa$]fW*?d| )^`w6SX(FSit FZ3W8 ['u2OCvp-<|L]7#!Xh~FfW!~w7 |V=8:Vn)ؗg,>b–xhT0+ȊA!()/T0x_?p}z ?pb_~p+Gљ0&&r"[޳H,vo4yRd9!5ftwS\R°юĞt!5,0 l=p;_;1J0 Ew~nV?[5=&ALslEWײVЄvM ]f]]S)t?\130JP=|}G Ő}th" $,XE}y?黏EV5@*i/=4'*.Eْ]HeJGb~?nUq@+wxrlzON EdYYZtROm.El5 q8e5bѠGxiE)|W2?nW=<Xr-`&)HgagngǧX=prI{ۑ@PM(>){Ido-a#H6?wo4 bJX yNq M_LUtYi4]io[m}ߗ1瘘י$)_GfbY^O:u YDCZnUÝzOA 6urlmc+ *aP3k5z1Y Xm"\] /zNr8^\zRp*En2wޞNǧoϏi%iB;ejz %HGU<#͋r;??2/qYΘ: >O3W tlk:54ͷEgmhTODTPIJÊM3 Cf`"R;q9Ss#:k>>|}|~~OњΖ1ɰA .7B͠3Hy<<>>>=?>JlENH0+EaN'WN6YoB |n_2"0JTPZ$䡡 A|,ڢ$10J}i fepW<@=2z~kݘVu6GTTnjIAd+ Fs5E _=/ŒA eR6YF-lv?V{fOKZ=ɖ_Zٍ9斑JQ } (6W1cSW=`SFc nU+( &h`Уsl? u{5 ܆,jeI&@ ~~Xpsv+$|eSYĢڷ}š@?pjs%|!vڦ٬;,&BXI_뷧k‰.!Ϭd,R.]$f^̒!&F90&k3 ( pt @M ~YZ@R3.^ Wă<\Z1gXDb#ӡ!Vv:EobE-( >vkQY`idq3ktAY@؀cj, wJ Nق]{U$,5v~}(,VtBk92,!̝U. HoQ _a>=y{A5MƹUIDATbϓochdd?$Av03v-nJxmuj;~mB35o0B7xwaYЇU|KDժkv`HUҺYbK&2ѹaQ'0WAGtGL\׌Qz-m.H\ۥOׅ?%˹*aJ('|J Y|0Ƌ$tA5u\\5f֔ӊ)ysk0.)). þGeDqC@㖤R|ILt_BQJUҜ{9t[YP0l)`urr+# bF8: ҨO/K"BP3}" iVO$";"p=;ٺ/ Yaլ͹\6-j\NRkh0Ӌ7wkrhCx̤ R$U-Xah.)pW 6Hmlu wܲ-+ H>>>GhFhJkeӪ Fw^!O ~4nRs1Z('m@v`gCN) ^k;wH)Gxu{ǣ=ը&HWbӇQXi8)G1hJy`¢Na04e*6y-ʼirJȔP)yJ"NGB2k0j8HNўؿ{7IH gp"-ZӴ۩0 Yb.JPh`0c(u5Y?9Kp(M:mH%O﯏CR9]KqpLeiyXլ5mo=wZUd!hjhm01Dl D > (TT~6 kA us rc+ 8,x( UEYANځr@yB8WdܦPSe)tw iCǬIHeKgJ fg-X&P!D ,`W/oY8³Fmw5o?nQ5+E\V@-:Vl1+%%0v|qn5 KuEiIW `>t5P+P^d{H\_/ϫ͍h( enqɚoXfnF]si^w_eB-B&ʳ( `x`\ m\[-[JfCvS J$H>:G흃SYm+.fK.Sk1+KFɪD_-att{0,=IpX m8nē?<? x{3`VS %eEǵgR͹|Kj/E]wGyK? ,7`Lu:.)8w\"(kiT 4%CIh \*@rCWVgENtJ7eID>O5B}++G6̫~b.#)Q}S1x8.p,qIJ2"3M2ilEɆ!3??0ATf>w;eq h߬ca$|Sc+1a\ M ~ggxIku ,4.]~bR]|KG7&D?2U$Sy{{jOMj$jCŤe26eH޽[FH&YPmUjwZyv()<\Ř5FM[̏F[WQ.U>t,8fDŽT !#&>y`z1 :Z03gUEsOqL %@ ߬׬Et2 ϲXIyMyWcnmb7-rG^3)`ܨQ˕|AT2?u~)߃=(`bϻB,8aZ~95tnA8UK%EYtA[ v-_L@6 r" /fP Х=@HL Ò"RP(jG [m cL PPNK=PԳ-o:>1C7)u<ࣩ%XAnuܘxhyuP)@h_q n!ϯFRaHlU* or(HhW*) á~T"DE:.k2ޭ<?oOr6#+&cx˒Ҿ\گ,F6z="`Lx}r:N#:Ņ9)n5BʧT@c% aEa#)\>A;F0Bxr5;_dX+(fD]zN'D.gu$4 ja"()Y}ҹG_>-{)ƺZ~8d$r)[eMI*Tܺ@'NTi؀'(rNDj`$Y{1g5(.\ l ,d~3da>>݋d0;*>45mc$E:P@(=1zj # NMT;,x5yϗ;SVdF&z|[vPt';;GS8 G15֐f_9L'Va5V^Svms! YlF=[8\%ya5`^ AٹTMm:CrIGY ȡQ8ѕA8 9r{Ʋ%xs9ƌ 1e˼vW?/XF9=cuZ:ʘ"hӓFh.aD$ <ܶV n胺\+bG@)Bh3AATlY^&B~d,w8H%-ha j)qQzXuq~ڸ~Ӻ Z"nrt+%vڞqb'ީ!k}qSpR6bvAtth )b[PhvNLj,%$Ã?i:)Y(r T|3L Jl2 sTO=F-3[24m!⁊4b`& Cx >e5R? H ߐ)vYpE a`Yb@-`|zzf7u`2R}_y㏫\p6Y~k:t\I8cb/EץD0gJ RmqIȁ |}ݷ5LJ r_,q?Yb;`Gj`Mu#̆P&lCSd\)b9S|d6[|Ksj^-Ā(0R9WWHSct>>тY: 7Ձ!+d@QKnܻҧfhg cH1d~2Wr{Oh?)HbqE H<-%嵸m<(a@ Z-&%"ЅR[5)[ņK/#^QS zH/LejQV"w!%V$BMf "GXr!bu)T`F&bά DHv7 \A\~A3"~uH*.~Q|[{@Fqq#-aP7I`} FNܲwuUC8=rnj8&(Os f`&،v, k ULvRH?Q OMZyFQIfHF OTT.H2^ᓫ~qf`)2Q.J -6; z<$0 Vi1{cCnt7R0А9 :sx {5 ˫??78RC`C.'/ˍxUq9A/I N6|"(PK+cf:|8.K `Iw IcDNF&'p*ه)xiqڑZnU7j%Y28ʼx+K!+ؔ [qH3C H>Jľ:f <=B9g>f!d5)9,&g:3I({߽? wwC;ÀW,{kCO_V|ov|o?;4GuIENDB`gambas-3.16.3/app/src/gambas3/img/background/hline.png000066400000000000000000000002121411575327000224220ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTELiqp$tRNS>7VEIDATc h`:o hIENDB`gambas-3.16.3/app/src/gambas3/img/background/hose.png000066400000000000000000001267501411575327000223010ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBPLTE}}}}}}}}}}}}}}}}}}|||}}}|||}}}|||}}}|||}}}|||}}}||||||}}}}}}{{{}}}{{{}}}{{{}}}}}}{{{~~~~~~~~~zzzLDBtRNS734<:;5968=2>1?0/@A-.BC,D+*E)F(G'H&%IJ$KL#"M!NO PQRSTVUYWZX IDATxU璣VD!$BD aRR#N5a}TLMVѠCۯhNSIrOH~l%7DO.S\mtT4%nd#se1%0qw,l˺E.@0~Y@U9n^|=wjcLrMECi#$@T:D(QU}sTD5l%]ٻI7v֒&TNCИtP"LBkuþoq|l?u{lO(8[7hl!bαÄ VyPJaZjٳP$h&CYWq^g>Uzz޻EDtQ0EԒ+ ^R@eCLPjM,}8ibVVsg:8T&PFTkt{寏e8qoq޶MA&A IUS.(!b uY@P]$Kt^2s.߯ގ\OSY(O WJKZIj+K3t:j19İ hu [U:$ԣ(" (y(MuֽbZR4 &ie);hZq,R Cq&ׂ͖9-Aَ#d'a=%q>L2~<_e,}P)(S":e5EbLsb \DФ,B|F#"2E8 h< Xazmo pϯo=>B <"Zk]֨!aF*2(Eo >ݴU!chxzj}Lp_^"orڠTI!SniGsdYas j^EnX1q\6X CSa496SAeT+"] _>~=.~{|\}ۆFMSh ^1lRjL9`Dm9\4s9 \%,2Xf}rq9]K[TU]]L;eJEa]UbyT$930sKR )}Lca[-qS f)Miy;sqTr)Po lRնؗKyT$[ݧ^C$jM^R<֌> ".|YT94OiIE  G"cE&0XTQ} |jwpfH #:L$_zCǥ__u' YwkYp@_N9R d 2T-I+Fp>7I߶&@P(MʲSc;mBkeiQ8x 2 ʊ3I| m|=+xz\7mƮs,:. HebeL㶎E)X߯~yP~̥)!*-/~\_J52@sc㧌MץCB(v},eM(&p[@@QڭD$L:e7x3m#=۱oP!CS`*sEe!n;bppPeTSZ`^Mo[>}Mi =1E`POR$s8@{fKS Ą B펀0TKL~ =d1 .Ln_)a6 Mr _;>o RA c>!OC4a>CzZE-ܗc]Wb_E y4 bʼn̾]!ўvI)ڵ ā~%5NV=Gj#a UPuI`RUY!s~Ysd`!3:`XgmI}^{d˲r,$s7Gh8C5 &3XrC0Z[}??Gf$+nEQy$$+k}c^rtCEu {-Uٖ<lUauQ(s`JFҊQBqo|MMzR1w^^wOһI؏/|h4 33pA |8a}+ZcunӤeTv}y -/J3GucP\nkN[icW (ѭ|Dzxn[ݝ>LIGmt@j"Kc+>Ѕ ,{{h n>+NށyM$V?tzLyr뫩bwgR)DgF^/d?>8FfPKRaGW閼QdIMtctuY"[A!*#28FE)cIpj{G֭ovi8:|ª,mVXژD~poO@@Z֊G/h 6J 2왩=p`(xqgqY2RQWd4=h`t$Ě nKhJ`a..Βc*|0ʧ<ƨ+1ӞDt|QN8/b-OwD֡oN;,]Sx_tfdL `=˲x j)ÂAO߂co󹌘OwS"Zy]C6sF3e-#=WeLbpc m (-\y)_ɒjRij2)U5XD}us?9BO>|p"w-R1e.q㵯{G2:GaK0]5ϷrAV=q&x:2:w],m½UлRmEea⸜ `-nt^(Mh2+=Gu뛤Cv'X['1;aUCfDEy~_p# h wK_ܛ}h v~rb@*1<GQY=!j-> fYսG3 0 $63lgѥTcm@[ ٘ \>j)sCc!kFHʡӁM+S}}^|T_qFa-v߇zHw"Hqۀmo.nFcA\#)X66Z:6a"]U" &AϏB]'d6Jc8%ȵw{bUOnC^HS?tBXpygA{7Ri͔z`P|@;?|(κ?ea~]:ϰ N( Mo}6'_kl\8E=&|fΪ7T8jԤk|+Eg= hv zkP12ʧޝǯarGc=Lxǥ&PxK#8D)u ǚx"M$핱2V l>X|TKN.?zӂy"*h[Mw|nNL_绹~L" '!7 <@'?NڡI(ޟ=Υ:V_1Xg["HLʙy6U4cEn6!Yw9w )[[*%RI鈆|#㼖zRq+1QÊ܈ZIUKY&G#&~}\qW?Mł Nr(X5A=r@$h\&#vKN9QC89Bʄ 2ܕkPה󃗹4Ƙ&(O{N#a 邤63 )S.%+umSN*sr 5+ûs HWޓ؅W5y/[%4q]T@1 T \(Qc̝@`:sԧlurZ6 -/E0U23;%E|.}T~ a\3 }H2:0jq2Xio5H+A)zAֽtT~+0֝H8>h4h; ?cµ6SElFyunMQ%8ІNEBC[:#%TcHu-\Vb>lq:jjl'B2L3We w/ڏy[_ǜ.wpl\ ۜ$I} "Zs`u(W|‰(-H)uiFRɯ{KJIA* ˦*+4ʰ]%۵eŷ{ԅb΍2v/d^gjLO$ff}}T:i6 py],{= ^uV:]7vq߶~د{?5뚜aNw2N2]j@g|wJet$v +MmXe| ؍ҵ 3T7=@! Fv~n՞UQF D2sL" e N4AL3˰=wi\Oj\Թ}?|v:{lҍ]S 5-6Ж锬m%pձ(щ-p:VAqu"Fz̄ ZMnPKף]Y=t صbTb\GC/K{.򢨉-9^#ajP/"E ױXϊXx_Hl67i̧}r$DjoT__RaԿ.nۜ5xÒrSݻ"g*aZS1 t[0aWcN _e])I ;˱``y}ȳ!+IS !Aa!zc}^qXU,ǁWIvX;&+J2@6f / >ĉ+ɻ,]fv57".yn[G6o˱MNtga!]M@{ DثB8r3zBn`#ޯE]ڌ{q_OB5XxY6p (w{;vpOPJC⛊6tmBNJ-55s#HlXݙ%"1"{~dNɄ2"GQ^ij?Jp|yDoT e$!hx!ey4Dqab7 ֤T"!m9SzzFIe@W֣L·u\WMcgmD_<$U֮2v2nL;_ڜ$)K"-dPBgXӳ `31%0yz3X# KW }^z_m9pe)G=j+/*2g'C0>denƿW<׸;ܘ>EvNhQ$ێ:E_0wL:(GHJH6+j^ZT*#^ RNaPрJE>0pfVӖpmJ?ƅ`_uJ l⁷潛mA ?|sEa5\"$@uì$\-d xRGƢxIU=ٹ>3"X6 *REԏu=V3^%S)$eEz=ײ~S&pH[(Ŏg *ĪoQ-aPNCJAG#YBg]B*azŝjΩی IA|_t z˴2WɺNIʔdUY=yV0 uU8[:4̓raڟo.g̅2FF"U1_,bcr1fsL!`S flZ0@Gq%n"\^d}}6v}1mY/T^4WQN"ϘK%$;eru} p3ЩI3.𕖛hčR<< ;%-l/t2s)0B4fY̓Dl~[Лn}-7!֟yB^Y<Z]Ma# /3rr_f[h[UbM< e(UZQ"1Tl:@d+cxDJ#tb\< )ȕ(!gO:f;EeBڶc9c.ڶ{CqVYwy5|.5)ΣNZ軵[StFF3[[։ZkW +zrPYd+šGU j{9&`)FEmQ$Hhlx๤{ntiTN `C?|h{O:Y87)6$p p\GF Ly$Օ}>[έU93w/%]=TJUZ䣔y u2N@NyUpf*A d',f75 `(& >a)'׾u8 lB4yiЀ-`pAaŷ_ص?nely/:s_f$U8~X8c'yC(`$RxJ۾Z;?S<eURX0d3;27==v`o-S,*$CP"a8>s`#M[?~-O&|Dm/#聗WYY`(Ff1$ +2"oUkőq'4ŽS.^LMD/psw,ϫv(&hRYr 4<{UP^^@E]8'ҏYϟs_/vrRٵy3EY&=tEhC"X-4Ha"dxOY ۨaLHB`hNjwEU[^kceC0v,@;Jח_Z7beS=hx(_Th/U<0-Ojs@۝MƮN#jlMK!uyUwL?Ý&R -OJ$ND"1b 7) R>5.[mBkcÆdFHއw0m]ˁ=o|j?VVs ^5y>}_ߺ R$N3BV'e5I]9^-A`|0뜼곛 A'}٪: `-X\@2IC9'.evpp1 c],Ijןo֝o^c'|?Gwא~j`k65r/ N?jSf0]jߴUfGǧD aFrDsG O`5*yNˮ[t:0&1D(FD&B{C)L^vヾ?O |ev\mv,1|{ If-u1@as}ϫWm^uz4NpB~& -j\#3\s}ؙIhU!HXE̅Vp~<|# KckNtC97&X&j7C}֥><`Xsg\O:s?U3J{GmU6ɤ?΅u*MQHTډ.YPÜ|^(xׄ\TYZ?__E*0?u+lEWڨ:ߦ@$o?GWӱBL:~%qw׾ ۩ƚ.2 !*ۤ-"/cH%]@dE{ՐJ1f.AUH#A;ϋ_^~+B_׳^+y_*~MY_@Uu@}uS8©z)v=J;#*jbh(b:|s왃 !W.x)?𿩣|NU:/o@?vrR烫E|q F^}`<͈_rj/PH)؛?rDū$ng!km֚[?ݴsmȎ^{paׄ<IW*on+S6ǒ +*fD$z1SPՁ10šg uw㲭SE#I'Z(v?j>sDn/U"+~8@E9MWM&#$@~U3Ӛ_[5o ;*d%anSyiG񽈊,Y#O0>CSg>̪)NNBUC2!uX#C766SI!ziZοa3 Ma]ㄾ.1~"~* 0Wmj1>tdOqo甇=wNUHgvY캿}-n 9x1oX":cQQRu%{U{u93mQ1cgI#c $ &Vd3@/z2e߁%P8<3nч'%mWEF+Мp v_ل)i\]#{ ;OY7~ؑAY%D(~D#uK3}Z|fKQihq;B괋^Dsy +?k@L Sɢ(qa% _'LtƑ(J(Q-^8`Fٜ $$.*7{ðf!F6t4JY&;n%Z `}s?gx4eN=$gH`E6 IVGZ?,_,pˢߋٟ >YLW>y}[Kikxn^ŌH 1e msQuňؾnRܺ9WR:D2,ƸNZcJ,δjWVYgfϹ <IJ3]Cm,#y%Mh"7,&Ol1j3_K$1d}=F 2ު1H :lz~=6_Ǵu+X_J4b1HGh  v,#H ڑܼetd\`RPIbwE%;pG F…yFi_,uT P]߳_yX); S}i`z~63CFy͗ͺI"u;IDW! (z{3Dz+h 5!gK] UWYU3'L]i&N4G43IFcE,bP73p<@|$hл<0;}%ʈXн" VDiT (yTC8&*?վV&N^#J(19PYҭm'beZUSK=O5bM+:˂EAYh5{iFf ϼ=/ӎ:_o;AYӃ]SuH h C&XG6ՍN~b<j 6]v.|o \p,$$L=ﮆwuy?]ZU(tU-;q?DMW! AUhpVN|%Դ7(P;[|Hm:,D4cgS1.Ar_kTOv,P00RVZ]Z) ̀a 1yl7sdsju_sVqa{šCI#َeP幠6vShnny"uKC1Ub2;\-6YH?6OG@{]?lXօC?qK9DkQukH5 m3ˢ)Eة V(#& X7qzwA$뼆;ޙhr>.i@s '6RgBECRKUM}o<)vC,-gjyPK4hT2KȌNk98x ;2TK(< ozK 8_?C:GfA~LJ"ˠUgc0/kLG";v|aEz .^)F@T$sr,9]R'@[Nn:6jDdUVSKiveն7!WKDt jZu&]^"\86,(;mɌZlo k=\( Sib6[4=mTO}M_-\Ӯ2T9WX[-s)&4}Yh[랢z⫫ozAQ$Cx`&#ai\]ZkD ц6RC1Ge'ARdtU,I'-{f@v|Mks%uX$@!¶( VT%G.O,1U/5vZyU4ߟliȨpHB>M$q 1a\# MHcupV' qr{YyMw5Eͺnwtbh l+ [ _aGNL% UӪ_ph"l}?K㟟ۛz W3Xl -ZJG-Qq?6Q= Y\B$Mvbi.w[#`MEuL[*4lmE 4+'lȬQoTWc#_PU1L]T.؏='b˼;:˰0;_d3fxzYȷ?d t܄?B.Z4kiy3AQjt}+{izfYZ{޳U:gL #Y%ĉc2JoԺDFnZ: bDNJ._خX5f~\R*j}̵2;;n`8z8S WTtEᢃ㹉tm(}1p:>L|Bȭ'R }H0{5a hB3Ԫk1‡M"4pԐ^Y]xe} \&w-׷nV$Lo(c Q]-FH&Z%6]#[5|j`Hda$?c]ܶu"rKgvqI6HhŖae.}6RY4b@2LTe ]Sgdm3p 9Z-ghQm-A!4rk"s,H y8Yo[ӱQ,SULV c|<^=ŖS uxϳ?=ϼ=4M|4s-sW2Ӵ'>vتE, :tq']ê[T;;M&{׫w/dO"♳E^^AŴ7 H;5_X92 %p2:Ȓڎ/Cw@b[yPY]V22*{~<:oXcoG7jk32*Eb\[6P'~L)Wvâ ڐ'{fu?_w2- %6O`y=m_v?/M] s[y]\ocYɚvMkC}9coyΏض[Q1 !l=}VEHcD{|?S;˧.̚!l,Y}S_ K1Z3?Q6;ɻս\t5 wim?ܷg56`o;-EczfcdP'oLQԊhgb!:|sYeS6 Sސ\+_ؖ=;o}>N'שkzVT#7䈐@q icOAeChkAbVUl ?|iFȶ Kxf-X~\Ưx*]=/.MolM:М6q!؏W8@֔ D|,@֝g6"*.{VTa_9TVvo)U1K|E~BUAM,,P4>Ɯ `0<ߔc%J A~}ox!ƨW=TJwX[ cv%5Y "u:4ANA X,[EIQWuEA>4dǠ %b^sǮjz3̮fvNZb=Ab/.0;b2e-9]GxɏO<:--$_]QgV^HLʁ &1< i7VNvPy};̚J޵# x?hNc>V+l9aݴ/"~>x*`)<7ˎqXC zNiCkׯ3MB'ܿr8VE.mjkt &o4F$4, :V;tU; zP' _QQ%%w4fRu!Q^^[nWk^f8Vtӱ~gG>JDE:lhs׀=D̰9AI"۹l 29=[̻Y6z㶠c]7<ϯ \.f|4Vv +#g); r͇m;wA˳Aճ])D =,n,)wb7:ͬCv+\ j5O?T;-DkϟZӀiFmLmUWcwUtqKx~ O0ǒ.c{c7a_h5y|^{l pPO[И @J?r. G"A{Aeh0yނ+N,*>n%s!}KlY83YKas-eyC(=Dʛj2?Q /!`@ LvVm[*S 閎nmP/a;/u2X6rEVvq6 14oPM -ۄ.hBP`/H *Ԧ~9$%F*Eр3'Zb8~þ웒Yjbgk3AE̼Xw?]o>ݘ JDZA8l1cqU]FttNy׳5C`r֌+Pg,Gje^U5`ԕAN)nrSpW;'P .F Ⱦ"pvBຶ^vӏ1ꄕ@Nᗇ!rdiG5IAgdopgQ z#Y[}S4zJ0@VyY g/5%O@zA~S-]k+ 1*cm”܁}-}2]^_0aEgf1(U { "{hi S[Ł[QBMlؓ2)DVxX{r S[J1$xz4L_E=t}mt5]} ^Ҵ,SdMsȦ P!|^ cS,evEg>׷6H슈䙔M$~? y꘭c`iIV:X Y:COC0cېz֯^r-ְx$by\O:L~jݼf,}E/(.n6U]ץ(`hGF*y)vԔ 9FL3vd_8OΨh$UIuC;')d<[T 3P%XIFd۱֪dD@A(~Kj%J,v$L:1#ȸ5)4P(2hċØ3 :[ "&|P~.^޼W* J$MXǬ؃"MBz /Cߎ445ӴͫbvuC}^bHR'x Szu ~ya?/>Ԥ40&wƘ*=_K¢JZ a)M!t:W_?.{I\++sBQLЬu/he:2vI+Vi,R_\[Gv7nW q~MVuy`2qO2h6G3luw< @5$kBT.KsДmHs#Ե&u`}?l񣫯{)syQGYx-$X-+pMLYu4chN(UkwFzV^-Z@x,HOM5{ `)]X$OC@֍ ed~͇  D7E*?vU/SFzH詒uP]0y|4?>~_u1n9Hlfb/و6Wol:<Û llVFh EI}NN,´?ЬS_feX>nܗےX"( _$zYlE)SᰡDVX#k Eœ`nc2|LJx9dK wZ)U #T2l{O=]ni\Ѕ瑒سKXW62bh4=/c{@zn +ζ}}۶!J_4)]f[cɺɲJujh8$ C*TӓjD4ԕSR-x'Nc#[ō\ ɚdX(U֕ IJljRB5LRob{Zx!Bu25y/*QY~yw_qԭ}+T7tkSXٺ_.da˼B:vDT8Z m\'5-[cwC_OE@GJC iȵ-3(oF1#GR8L/I"fRԘ~~D )sZ#s[P}WD庖_eyC)OPvYpbhz6X3Ul~): gHYxf+װH n ǡ*IǞ?W؟N2)s=^Bϊ.ͣϊn3hL6Qn9IuJW 2`>,bltXJ#::i&^FMMr ۍ;`X/ޭ MQ^!QHJB_^2f*Ts-LhFbEAWTec9.Q8+bt5N%:(\Q40|.YMJ~l_%nKYfmG=ʦY. #z<F 9ȗͳO!{Ahs*9׹Ia(E>IF=5H;ȃoӹξ$pb$ݦs۰|]PLxoӶBr mt6Y@lMW4zϬt L 3|~P5훋ccԅ\%aB قr`2ˎ>Sϒzt5sg|֌h.OGf3K7fe `-mz?_C|/~ Hpx^yإi :&t߮>YQ\*wux|>?kO¶F91&6MXx2ReLM5DCOm.T%T@X&Z@n+GhRFurΎ8zޛ<"{z/HX)Ol Y$bW2KF[дHU9x"?KW䨎2cg{LDGL(UeJU%>zTǿ(H7e-h0[ xXpֶiQ6s ũJE?C A$ ?\7K`ꐮiA3mD"ɄCтf_Hן8@u{my4s x'ǂ>Uy(=6*^wgG72G IDAT.,wm{bPx6L/{_$T5T&y6/ʲ$bAGA'L?TaR"£ɜ Ңқ`n#Gh*ֵ_#틼#1Y_~~z쏮uZ}mf=`gJ(0U^F]*O?Wn?̭jQ7-&rHWx%Hm=cUxM5 7$%!ku#0kuήTdM4ԭ8^w3_{*'3E+a=f $m։* (؆2ܺ5ϲ}޶}?3 `'PcR!FrhY&=/N` 1/;S!8pfV[!tj;kOzV[ѸeYV?}+NMP}7quE{oQ4Ї`8 m P F@7Nt@P!iƆ!Iދ}HHl/OzSB3`Sb6NxV@RiUMM'zηtSyN=YLޏcyO>D4jBjDt5z۶=~89N|ND L/cvYL6)?G)ĵ9Zeqn?w$fjGGPΑ^p"hSmϟg7?D]nikAȪ'ep[|Kl|n=FFrD h"ޭVy,p]R(S@쓞7>rx>`(evhR'Aglr"TuǂeV(ig5{~Yٱwxٕ@`4+Buo}G8(0B,}&|,O'*Bs{j[ EVjb8t әN:_&CkJr*.`2EQ(Td5eUb܂U^d)/=aF6C)@{ͨ{_xySx4u^ 8u$u ~t#oⰴ`p T9 4. 梄|ơLRG"J8B:%RW2,Y#/US@@,`:i!R>2ڊۚ( 쩙C7y]/n2pWG[asˀ%I'+4mϣnpL9Y25IܦiO&;d++ j,ʱB^*ʏU8Ed"تmul(ZǂB4~>۫V# %&=2o ,Hpʉ@˅^vA,uEPo{PIh &^(qutJ:& œѽf6Lñ! RHv[y X.\*Ö:As+ղprܐ$ sx/ (wR 0;UߟDéچgO!n"0@Nu.@`|Vo*NPi(xj2R.6SPv`:~]cR 5ے*V+yΣwpW3˳52[!o0}74`3jtmEE7 tjDF"Z?mIN I nBĽw{9'l3GÞTʔ2 ~yԥyGܔT.<8tqBL~~]L9kn~t.M 5F TQ2׌rLUm~< @y7la%ne'Ra3*rK?`QWXN>_N;]Ȟ]@2yB#C)ǑЎ="u w()x{A*ʮؘc[zT6(_h u 2 ڦ%7[7jI?0 (Pt i؏ϩ5446S͈nvGqJ +pxk,#N&N9f_AHMoe?+`w$ضG saTC>ø wyrEe vui+@ټQ*r1 D"?謮UL~K b:a&^rxOT+Jj'$pK?@:^(Nʈ\P1ϾRjk/ؗH5D`w(N4uҁhIQEZ(OF[_2 (p,QHs`5A>k!r 菹O`A(PB{vqjKX 6[m!W)q@2v \Է"wH5;\g=;3K o.Mݲ& I+[7״7Bda= 8v粮Y]:g61VdL3dU 9P:T1i ?kdĹXZ kUxn@|>ea F8׭F DI@9Yiژ4s=qP?Z \|n."K $z"=s@1KQ?u0pgÐnTYȓ~*t6ly=Z`[$]k:y0a8p(H+϶L&'*]Ֆ '`wF(DFv۵,@:~HA | yy<"/LV[;xFڱQkFma{"qUED(w8)$D?+5LKBЫLn3 "k mkt5U?-UM`)`<s43q~σ΀T{T ֧\ zi( ,Γ>( H}Y`3zfcR# SWvm; FR0C]pX ]|R$F߃j:i/A@=iʫWumˡ p4Ts'S5oM#j] ʋ߶S6C @4O OJx:,tGB.rIcswڃקx;#V~ LD]L{\&!˄gFqǢ+D]?tHcL{:HVo|w%=eJdoy-TI~Z(Ԓ(ӑi!ZIb^7bzpzD_pBqX+AϽ&uxԯ. Rv@C=Itq~Ȱ;*ĮJ<a ճYP&*e7K)%\/-id*<*ދw KFt{GlaQk [OЄPw~.,?Q̕Dc*2jc^H 2MBf=f422cPd#]e-a;EFOD >ꆱH6ƀ .Z~F.NLzv (w .qz;7Y@~]@;E˼y VqmX@D7f<@к %3e“beRbm\X"TYj~k oCv=w P%s:;xh?jw^@G+2ĂtGɋGz޾lhE;@ ]^S"X7On1?V3nKh٩S9ip]WSRJ;G-A-)UC*>6eFjc RU> 0dI$8 )7>X7϶R,YVsC=y58`c>]$cE,"t0ޞtC2nH֤bS5MURdsH-+B:˥^)i=Ӏ噠$`pÆ=ѪB|p`+D{Ǽ )udNExqmH`p)"wGҹ#AHA=hKLQq6W^,lDN <;QX4xky_Q*M w@],SI_/eKuv;Vӫ*f/S FT$@t#MIH @hratpn %r\ nHK@wiW뾿dy~=쯟?g'! ]??겙f ޏx 8\6BChjNd^lt)tu+}n>;*[{YF.d`5.WRq/˨f&۲d^ZswT7* d%Yo5}P7и-a]>פ Dټ?)`gDyz鑟T"nI|YoN/U&,9JMOu +AzjۜulN" eԟdV%ͦnrSJMz,X)(h{`8goӼF ?B&/C|e0f;Kƴоue{_vߝDǡxJ󯵰5_rN-(2-I^WKK ^ͪ;9SA*IL<~5"=,C1J$Jƒm-YĸqSdI`>X+گ  y8Q㴘iԅkO[j7ߝ_<&Ne5.Frȟ\e{8ǢSԟ^^~וS)x}0_D)!Z(gg:taKYO%Rؠӑ#ԁןt^\?1b"V> IDAT04b)%mp0:+MMC?Cy=4&5+I iYUz}ֈm 5}q_×j9 fj6;u2dGDX%@$\\jiW'ʏ}J: H/!ͦJ01zy|.JU#=tL CW6TnRsjD`E+C+R'TnI^^z{rc.҃G }myE5+I)P gY}I+@reH]"Y)+!)!&R8"BghNˁy{[X5xnا wE+y8٦ 8|q6S˒ rW- VLeNzrYA'Js;]VFZjTԚQZ$Հu*H65 }L4Ue#%z~9McT4yL IPS]ܮc~QsE/炢P/Gn 432 zA9 KPi/.v;KoؑOtk e-FMt$]a=tT#\F*EA/2ӲIY) U~Dčor0PY(3iGNVy%%//{Ej`olh&KCSusv_:M#[,+{M3qG0oJ}[*utu` ElQɌ23Nʸhv#<%q0:<*b֦/E[qkWV4*'"s*E,<}W KFSr p[uҗO|ܶ 3?0\ WR<]cuz~-c"rPa%;1~hDsF->;)1 T8U0P*w,~ĉ ķfUЗ^vQu IhQ@~z^u 1NgS)\|v.gCVЈ(Bcm_J $3{M׃T&Qh=ؖy0cK\c(5BCE|A p?15#Ifxg}—=*'{oZ+it-tO^>X * 'ih0&q)ד)ߦ{|Q^V cM/s Z)#QUtfeJMEBnogruܻ$TDUBec}ո_WkXJ+ PU^S)H&fV|wq]ERj۶?QcYlSSg~0ZH(7 kf;*p~/W >B-ؿ~h1fxwX]0eohmMiqs{=\Z-UY(g96tfan[AN6Oz"finڅ}*N  K Cn> HGȤ ̀S@Q(gTЕMK &*|1n6C'"f+H+ !rSH:Ju]HZqV/=I6(7Ke0cW;N=ib:ޅt#O[6zVeHom Kiv{7A!H:q#I ȶnv,_1?cK$.U@wUo@Ý!HhЏvz4^u/-h%'1ىVI)IkXwUƀR/:H{(NKв9g﷏?noD95Y=9<"`!ؚ*'%[gAjFUvP eq+VFǫn`Q`IU%hsIi :c?ڗ1(uq*IfkJJ5Diۈ8hվ]c/lql6>Uo2KFr-2:93B)U@<5qAlP݀W)2] G ȮTqRE,E\ǗU$ 9+˕5yJ eйa V٪ _Hʑ$Ï'vn euzWqex[~?n8_rd∦&l{ETtaB ʲP*-Of<%ӃK2p鮖%jdWWY:sj̥[*,k)"=Qg|l[Vž7?u uP dw+ۇ`\7UܟO;ǟ1/ήٍB V2FjEd\oO +L{6jZ֯.eQVrЃԈ&MH Rͺnvxb`q"ktt# XzŽZ'uӪ^ph؈:d%ji^~_F@Lu9d""_T(3m ' pnjf[,ܶg.N,2c:%m9c#X  xe%N({?ՀoP^ʰ"_`u1]R|K߱{NK]~&1 ؼeYYVp?mUˮg)"ExٻI8YfkaӖd"%iQByծ#mq ,,F l%ĉ!j1 ڨtƴ| 2Y +#vF|17Ï?߯$t&eδ%#?VS' uSU$좕J-3`8[Z$e+F4i͞z{Db: B3(NJ):֐=FL΂ʆnK**krtG3HI%2iM#Mq]ZJSm|Eb-Zk 4ce-iJMbJQT\t`cf<7QC eU } "Pf:?#n bT;mOK_y7 +`$g@K? Z hVK `"e||UFy!PN0* {\Kh5*,UͧFI=}rl˟۶N$Ri{n Ys<~_@r49}\~h\oƯܫ+4V+ʱUYY@PU;NTU峠@3=vwXn7p2o(j)-)ԄW%9zO^u$ݟ&D26&Gt*T&Tz]5?ϳՀf4qG.=[3m$؝Cio"Uf[쬣.U8؅ +B\ Z:?\vHMDyl~]ut?Tԫ iYu-RE<P+\],\6 bY[`}d#r@$`u4={RQ|1pɀ^55T0%v^'荼lTRz~U^Q5q|[.b^&O\mNi:GR\FޞLJlOo.1(A*c'4FrS02QsvDW244-İr=jgIgĔ:~|7k2~ ^NOšO:w⫦:9!ѓDi#bAޣ[GuUw3,lJu'9}m"46IHz\HIj*SyDyƁ>3L&.bHLFcG#we|5x=<.V,K#EH#T[SLf$IpmS`~ם!׭VW| )lǤ%/߷:'ħn2)ieyר$1>ֱDNpR@RQ~0\^(n(L/׊=R_??׃HiK2]Bդ ׻,;)?(7 s[yY EƲ4w,5zu<Z-E5vFem=q2:"gFQRxmj@!K\ğNDp0Y06IN [hN]!Ti@d2CnæBA46MJmZZUHΙI8}н. ܍q-BK|SY!dtW6KYgكQ7Je,J"vjpp=U2 >rS8|yV4ee m-´AЗLo(zӬX94^H|1SPvquɇ<9`cROFd@pA:~hNOh`{C6j^fdyGD0\yk7tG5Э|*i&z`gr7OHM{f:nMsb Ş؁;#J@5`#׵#Zl QP$MRZS<)"Z?ʻcHW+ĺ ~ Fi #/JyZ# !ᥑgfu;;R*2IIy6;ik&U4.@tp8YtF‘툊M"ySڔɦBw7xޛJ6Q`Sۈ-*U94׊Sd$<%sg[#kR 0ULм[HlQH8u t7'75=5,(.`G̸#$V-S: _!Q,{ry'H_:-m~6p5CU*rʲnƱ!(S4U>ʁ47ufrY #!:&ڞa;Ɉ^Ց-2b2dgTyQoT hZCp,O #3- ۤopʮca|u&sq|Ӱ+؀b@mZX@-7- VU!Ag]5W'\(+8Q䒅;fJb^0E+/{pV޻h8)8 98Y<Ěׅ_a>FS!ْ1!߯gūisR}ݐJIPպc jjy͌Dׂ:K2?j!\'X Y;/jW␹䟔E. Iy}C˗kkM]іj"`v!-<=s:!S#Yŗ ll9նAR޿~>SaƏ?ZW#q]Yb&mclpASXĮa IUF$d]eLlOuȞJjm %H5THEl@l7Xt.̜&b=ک_DMsaZDKf<G,*PO;=EGTFOVU P%VpLț? 6IDATC?')Y?W@Б @?'ﰥGw_dq(mWw$$&~eX6lQj?gĆaW%)6;rPй:2~5WHͼVmYB/%q,5u gmmpL?8Wb^?3b>،ʶhsuEР'rdv>YFQ6:Vj L bdPȰ*͜TA5\d""6 ~v-<~ ms~BJb $"#UHS>,;Y7Gm n@orV2+ ^j•lSG҉ Z[yT򄯫H&̨2ibiµsCϘ@ BRf` 8pdL7D&)f7†\egU|;_1/'Ŵ40f? 4ReҹgB (# ƚL㾍*Ԫcn?zwvcZp@T,vrs]%t4yױ*5CRȬ9|gk wh( -@Yuxu8c~nEvۧ6>էfP\wBZZ@13 (lZ ؒՐJ)AX͆kO?73S5bFN|~*K (Yִz&)63 x<ـCSl@SnVd*N6MYuw@8z<5T˺l˜CPG%w (L3ണ*wNASXU섅>LzYN?J́ͨXgdESk}6Y0(Nu;vK"f}?/*kx1/`b>7TJ <nyry<U`xtB\.L0!V]cLiAI(`6[I,>̥Xv"Ay{x+f` dץc?|&_}4:3s^p J詥Lc<"lZ>ax"a87{`d9}DxV_f< ךydxjs{* DMS PS~D ."yچcX]kj2 1cmQ8pdbVOw" *gձ(hoܛXd<0ujC3XViX #8PZe횶mkQQҋ)Њ &{iw}~}Z`|^duwJL`Ϫ9%&3k024Y% =єxj5ΘTYr>qvpJFv,;/pv}}㵎1$HH{&v);ȳ5}b˅1݈o=t M4m*ShN׎fnj.Z?Ah{QӓimaZ_ uy_* ѐK= T)C ۑGhMudC^]sׯoZD˹JxWP4ӫ4{+gY~(8yN*OE rb+;`qb.:b݆͛"2E?oLv"igqJT}A{_  N4<|ht;NJ^A`lnj*hF_?קۯϯ,X%~F^mFXI sffnqRDԪ!8#;qiK_fyQ1`#@Xɱ*0 JVеB,R \PSJvVIENDB`gambas-3.16.3/app/src/gambas3/img/background/illusion.png000066400000000000000000000056021411575327000231710ustar00rootroot00000000000000PNG  IHDRb5wgAMA asRGB pHYs+PLTE___iiigggaaakkkccceeesssmmmuuuooo}}}yyy{{{qqqwwwڂa0tRNS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~eL ?IDATh[i{: KdEmkO" -|7237>?L$aʯC 3.Bo[/v[a /Gpfϙ_#Y#}"_Xz0W)G3DIȴ=r>ӷ&CpVؙ:o1. Ӛ4Q`g Fr0(hŢǡCQ-lè{#wE+d:c̓;0o5͚lİ[r[X'iAɭϬ X38JL MS%E\x`?s$^_kNXI"Vd%MWwՐDVң]Gt?(+ + - n6#n[1h-;cֹmt^Nn uW Tӥ~p'wBz!)?xƥ3d fgP䔪 W]wj4 %Xg χ1Bx!]ۊSmB@#7Z>}/:n {}.MޞbҒ|b\C:a!8U!xeBڃ|8NΨvźt1حws^Y %ѲITSeTBlfDam[3i l`Ÿ,AoWf-[/i{ӬaHthQ#x npRKM TgKo诎s߭~r#!)MQINJbN 8+M' AKnr](DRpP[[o:O,l]oBl=i6m )lqaoc9Dmr$yq˨V+uةmvvSg3WO@ ~?A%7Ӝ75Oz$RVR2[z_xQ&y3+=Ix TYՏӹuŷ|_J!}e!=EG|UI3EL|X#ty˂ q${vCqu^Q}}*hBLBKg .^=oAf.ghOO-.BR(aBuI"%ߌ]&ߧ<$V״6^dL el;Rgs ś@"4[=L)1&1̌%el4+zN2g.y)L D>TZDOuDsN$Ȧ0 pX@Fn=R< ЛHǿy);&29`Ni6C q5Rg '1` @Cߚ*dQSjcaԉ%($= V$@Fc_ϑQS{fkN~ ;/`;u IrhlgkשJ`q9{^u0+3s*@7Zʶ-Tcr`% \?Xxr-6J_JI\D;8+qpVXۓ2g6!z^8r,= .~vuLЯns$  # qPkB7"ܛ*8/8Ϻv1UzB߄+mVYn9ePG~} g:D۪nH1Ju51 I"ரGyS*1ipqմ4X vrZUDCDGS 9y=Ćlj .>sTs 3/Gg6Ӿ}Q=\E'p2+;_4KD)R7H,CR"uy@,4E5RZ#):"Zғz7.1(^Vdס*EDUwX,$U צ!Bt%./S?Gļ*]oϤP_NpV#@ Vh}? R"2d;"m=o(tteDk(؄Rlh[BX 耴M <bqD=b-p\ v 6@5G;-F#M΋a7Gu "`QMNb~b_c*$$|cVWt>I 6 |W5m^i{/zMLUn #ُTeI&*R}UJǁ7zŪ]0!Gb]!ӟ^[s~} bE |-lWͰ]IENDB`gambas-3.16.3/app/src/gambas3/img/background/labyrinth.png000066400000000000000000000017151411575327000233300ustar00rootroot00000000000000PNG  IHDR@@^7gAMA asRGBPLTELiq N^tRNS?.MWIDAThZ0 S^ËՒ:@]l.Z%Rv}D)<!ۘ>o"] ~]:?֛A\>U <{x2y; Sq!$z.(iUV`P䢩=..[8OL(YWFJ 124Xǵ@P15|vWk({5S 1jJa=3cPY4i5R3NȳNGU M(P'AL* rCXvF9;kE8n:AǠa">PǴka:3mq a"NafqUn_aP^w?GL@SS11ۈ>(=24>2/!88(4lOY5pK;u z25"t wϜFz̡f寑޽N^h*$!@J]j S-XF8^6JQe}8%:u !r5TnğZG/wuzw*.)Cn<" Q<j#n:]d2Zo|I&7rLIۍ |L]/xnu1ɗv Aǥk} +۸,E3|K̀#nCM0 5ݶ)5W_G&wf^ eE; P~FP-X͖?ƾ0r1s7}; ` ƍu@沣lLE~?P32Mnm?^SuIENDB`gambas-3.16.3/app/src/gambas3/img/background/light.png000066400000000000000000000001611411575327000224350ustar00rootroot00000000000000PNG  IHDR%=m"gAMA asRGBPLTE1cYB IDATc` 0ǪIENDB`gambas-3.16.3/app/src/gambas3/img/background/list000066400000000000000000000002301411575327000215130ustar00rootroot00000000000000gambas christ tawhid baraka cubism weave mosaic oil labyrinth warda nature smoke hose medracim illusion quasi star point cross circle vline hline squaregambas-3.16.3/app/src/gambas3/img/background/medracim.png000066400000000000000000005206511411575327000231220ustar00rootroot00000000000000PNG  IHDRa) [gAMA asRGBPLTE|||{{{___dddssstttgggfffbbbhhhoooiiimmmZZZvvv]]]```pppwwwXXXyyy\\\nnn[[[eeexxxzzzUUUlllaaajjjWWWuuuYYY}}}kkkTTTVVV~~~cccrrr^^^qqqQQQRRRSSSPPPKKKOOOMMMLLLFFFHHHNNNGGGIIIJJJCCCDDDEEEBBB@@@AAA???===>>>:::;;;999<<<555777666888444333222000111...---///+++***,,,$$$((()))'''&&&%%%### """!!! 1tRNS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&H IDATxiT pR@TPC4QD"0$ hYyzki̭qM;pr]yz{3a?ͽ}瑁+B(eG t*i6]o<+V +qE.X[!7`#r]5~S־~\;Xpa! 졷^1 % s>l}TAPlP^P. S滺/^8]\ 19k}h~"r4J9`| @t^a&kMwPBW/7ufW9pM3|.&TBL٤Nwā0 %C B+oJTT*筡XgLa4ADfߟ5)Js͖_ϰneױkצɾoEc4ZTj"4Q5x [܍HaBow8Wp&qUr; gR1&i{;563v !!QbA4Bd'Vt!&f]J QyD 9j{JѴۗn'd~~잖rw TQ8M=0tRkD@&la4{}CB4Jff] 9#14&Ho.aXh[륜SʂuC9} .ʐ%P*Wbk_9?햄 _i3 荓d&y5(QMZ 2CxUvc{x0`'jbZb| EAx&}0ܙu^[LN3\XOg,VtA)6loFM0n{<PjI v3[eS;j1"$7 ɖk,H7?f /T@ΧD\i̶wwGбp97+x7/upAexœRR:XAwL@Cە)tdsDLYK si V"ѹ< PS5`FrhG1ʢf)ΣWo{x213:y&|Κt{+ȧ|g ?ԧ_m6T)l"RFUNL)Ps&+0iр$՘±JX67Lw, j@7σ7 !X TyŜ.MD$9^s}N&t%/^:ܩz0AH0jkT `gr~`;%-ܼY:!r8:7Āf6 mM?)분Yz4I*0 !P"ubYfN1 4P9s"P:f̡b2㝖-sjĉ3iZBg$%@) ѣW?~uuϼ\iu1i$w}>C`qI*(Έ<ڭ%س!aB9,ḙ9&E%B ~*=ov}wrMUFrQ#LZ\,j+Ko&pCnײַ=6߯_;=b7J hӐt $ (! @ ( B(W⁀dj˴9]Yz^{|qrYSƷXnz&k^5$StSc*vc$ĤcIMcy&dHtq;%|O[tBm*(‡`lh"Jq80?Y4瓯+K-Dh;=[C(J?Z6vrv]*tyGB~W,fZcpƝ#q2 ".2b+B$O'7zP2؂$jq|s='X؂VmlߝYlbW֒ڗs$a!lrg/ߤ__3ד7-](0ˇ.+Cp9 zk7Jo; *. h;rXIk0 I4 [#ę羗%<jQN =tL6:'rc7nDt`vf<$&#c8R្powJi& L '*4!UG_>짼_H 3+blpo"LE6c,[#'\k*K|\Y23@y >$mÞJ){'CU0~X&V}|6w׾l =]&Qyw?ƫXo̯<{HQw6.ݑ8F.(-Iv)EtI9 4lBXx ОS@E1x zP/ML9(3Mbf4Zf5gEŢ׋TEPy}*B7X+$JjZ26QDQ6Wkn8@dt[d??Bon|jza|el_ىcMqdҌwḾBzCg[TdN'k4M-} Z>zj+ ZR̕fbY6W:f{cmPx'JO ^,Z9㿏w,_諛G.tsOԃ)~M jJ=eIa\ؕƾ3Al"M=H ׄqC@D9PNbk#&s: nzd5LNpNڙ&<'%nͿLi ".]'f"$rqi׹NpQA۵s9o@R\d& '~WZVR[M? 5% XrdOgWy/|Q/li^JSH2"ā?=x:9gՖAQ {H$S.h%dWx0]?NYu HQŌk{;oRm曱ݵCX?jthtND<bl}cPt kɧ" h#ƧNK.]Hjl lu祊)Sbʐ#<4P Syb?hB9dsHV%PW2a)a]_<BRoDe Rb%Z3+:ggqWsV@xtSP!@&lg׷}?'B0~՚*|!wJ4ylH@y"&1bACA{Xz2ߚS1!90&_wҴ56z{~ӵ1ަ*҅h@{}~^^XԇW݄heC8Ij 8Dv6N[xB&F-|"#=m3Cpu%a Ri9p5tx4<U*pAn-OmQ < ,ÑGmrCBS6@ (ٓv|*7pU#!cp^䇡{{/IMBɅo7a'QghR$d %s@_`Hc2atsH/L8_Uw1vJ%̈U=]_w aq4@~g*bjcij4rmm{ƖS{thXh:<8G<\MLtrmՔ.`Σ'Ul1Kc*0496襺?Myvi^ZY^l.VV7"-(5M BQǪsfZiq-1f# @CWݿwgoxþ8n2dqlDSl/|d/ /[3qzB.'BKIۜLp0tg0VEyea2Tg:= L8J$<6_Zk-A"^xZ2:sgԵ䚟_BBk F׈˳<;vī#͸韆=4BCxYf8wˍRyu̻v}XU(כ5$_}z`w/ 㴐+[_E,/n0.4wj6J$ nnK*9 }hےポ܂˰LRT汨"6"I˻ڿf[Ym.c0KxFi h-hͩ1O)BA" U.`l",B봛C"'k,7&V181;), (@]uOwҙխn)O'#F?a㏯bM&$V*0 "^]n ü*zr^EL7dFTA=g5 W,)~ 9YʦӶb0&v3 p@Z\Βe}(2IUp}r!ϧFv )!~;~TR>4`%˛5L--5QLY@uF@M*^+ цJF) ϐU7'A10+%gTh 1!irUwsOǏ7+R.f9`| Ɔat:JvBÛjk -LvM ͖׍[K; x wQLjbCاF BC2ʌ?$L( w/N1^$/vܮ%.9oԽ$3V ǣxMI`Ǵ+Y H#ox팧W I~1-CUǜ3E|h!s[+)=4aU_F֤t8~%9od7ځp/$yx+Dr2a:įשi{i^R&=șӓóvv{Gw&@SE( WƺbnWȜ͆ۑ %WJ\Ajko۔iQvzC(nb`ĢHISdZgp˥ucZ! ɝдw^$B-[9w4 CwnpfP9!&plė`CH {{~G=Iï^tr ]ZPIaeHEH]ۣ~ LpXУ;nnRl..TQGM=1mb*d5<]rTcf5 |(PJ 'Be]ϙ]wo0f !: _oh ĥC86؄>v]x?E[zkk^Mx@[Θ9ەT0s (R=卹 غ.ɝf0fۀ-K$uMCZ`d&4l XƲinxA IDAT O?vڔb`VR *% *PDQxxDc՚l&Mifw:ݣɴv3?x?< 3 Q\p'{w; )/|ylE%)s)_BJpY0xW&vVҝmZTP"hJrHU$~A z5RdD.@vV8"D"AͫGwu,v!~,5XK1skl.MP#>"s*_ȮL*7li皏GKkSO+k|i$?ec6[y @`i Fsw;~z~J!t퀅ۙɽ"FNt'Vnow\研EkQjAފ;)8&`]fE,!ޗ߿J J_( :?ynF=PRL Ҭ U˛spڒr<Qzsa۶v__իvWy*ʳSLVF3p3i6`c ݄vD*.=d6FjPA ᶁ5Wad3LOXφ,J^o(:?K^j<̭yr+s& -s@}u%AXz7‰{cny!2oib&$Q& 3 ZF溅ȋ>_ 2)Z0QG#qbbGA-IR8"kPRĚs pX'C Taj1Kfft}} KTh I*5!NvMpTCNG1 &3=G^V{bɫb-Su3 $RFCڂ |$b?n)KY-ɪ\D>\W" D3^e_({Rǹp##k |\_|C#E -aa%ˇ`2Ԇ:b3_M[rpc [UC@,ܲ0⧁Or;:%K%پ8rm&` \˪ ȾQ;ep+ef΂"Aĩpexhd@ Ϳê"w)Gŋ7@^Ÿ{4$܆ضN0s_aMGM*{]ocIZR`ԈF8nKWVn\[AY/@ ʍ25gK-%\2o| B P?MtwƷ$Hlͷ `zIzH3*:]:?~Ua]OvďzȄv&X>;,_0x+nF7ݝvWwҋ[r5;է߷`6G@.( hD@Q( ȡ(-I34&Ni:I_ugߠ1>TuǠџx}{qA%#1= Ż?C"V=IYdz]ፉaI!E|2ھХnj9dRH0OP2fcwѠn6dOJD$x| ,7@1f:_ŕ fӌ D.ꪁ ^IVZ2K4,[%UIʴ4QWx\f0V072˲3DMĐdewv)iUp&ֱDN\-/7^gND<$NsկkDo_~a NL@4mr^pd&v@½KP7&J= *xRrΣ{{}VfDB}~Ho6R? o\|ٕ*6)L.lU=:Q^JoǢbCwZOe85-Tyۃ@gJ 3<LfU[i#]pDn@hdQTH`g:C$?BdWQEE^τi NUF͏+j/&kxp"UtV" 6Ә!,'|.C<>> ok-/ mZVlncx/^^UOx\H58@n_VS8%.UV6B}y.1USmVUP4џӾDPN 0r>屻x?em m|\\u2q=s_:4A-F %%2O3&Vb`}!Fb! A@0|0_Dff#HlC\=)kHiHLozM+QpH{2pj,qijN;p;)]vm aKT[b!mTzhtQ߳?/pS{R@p& o{o` h t]{`?6.oj~1cc_xe$xõ*O"ڸDBAlyZ>f q01iaѰ6W\ (+g^Oנ><}pGD-5x$ 0t|ʢf/w:WV%yk_aRch6U*L#Y+!ng:'Tinn`VdM:~:"/ˤbKfLB.,/8 [ g;<$,t~?("QEf3Tp+ ! ,̾Y ղM;NuMSbyƞc&!A\UXMZ=)Hd5sɌHKO^PQV_OkEuN[${P{ŏmi:*CN98s&HO Crr߉ KwO󫧡~J; ,c9;N/YqwׯO.wvS {FR:N)t? pUlA1]2*E&y/J&"ÈYaJ.,J%^wtH51*.; bfڢ3CcWw9JzꐳXRxl 0c= {e0_#rj_$*!BvfQ.`OGSSи;1Ň녹Ldn7Hj ODC[8t% >ٔL󈢒:vVLo$ jtP%}rd޺ KKBHYP%QTH% L\k_b:I9zdFP껷0XܷBNdlTv" f ?urVf.N!\9_{ܷ:u?dM T(m~yfX<;nr/$8gL[x>u0od8rG"I;y sgEgU%fq}Dy N> W3+TjX{V^YG#ViTkufFR i(ARdVhǫy Ť0^b0PkbMApTx)2o&FUq(sCjA{qڋt\4_xTJ~^1qJ,Ԕ0EHPjg0-tGb^6̧7~i*_;  9oCeغ zh述XR $υd5vxZIxy|qw:QFox5zaŸiS槑^5JV D`i&^}"Nd!ӕ2ik֕*>dAJslf5Om1>ǒAG!thLJO;kQ퇶ލws 7R`Pz{/2K"wiRտ{G|*B&2+΍ǦBcf%=M:_XGAY}Z-PSPE6W 0صp'ntA!(a H`);; !0mE\PpfH@ ϓr9Bwg![Y,G{PoNPu7.Az|Xd wh:%2E~NR1;$Fp̈́f)=BuZ]׍+{0,~2|h[tgx^<ړpw3\;0ćĀ́? O 0.z,_zń5Rܷ4Bܟ֤[r&o1 zvY.@@ El foxuRhuK)88Kdݟ7ມ  JGIN/OU!wK<{W̆>d33`֍Gqw瘉06@`[d7ZԋN4<ۨ+B6Z*`d Xa}f˥VDCF5p}JD?}> llmf7Mvׇ#:W7@۳_0{ [6:.xV~L:Мɔ)ω雂ng~XЖ+$7dk4-Z~=IO&p{kM!*QƞT+d5f-6h#U0 $oB1*@[ECG,̍ZGQ[g vRiJl*k (kqJXx+Aj:m<%ic iWZ/`@@,"e@@@eUpB  !I !I06v<3iLҙ4g:]~ <){~|H[e@ak){3HlnCEmBSNa?=eCSt4G.jW ݆֗C?k?:8u r7ǖYz.-SH}txsR&ꦢRL^qɭ9Ӊ`|x(<=~GH^Nݿ R\ Zٛ͟" Mcvn@H|.ѵfIC݊>p|<_@46?D 9$KU ]I 8䆝 @c%2[r,zV H#n@pAj p {̧ v{L[v5  S~;d:YӣȄqweA[񫵅x%i 3C2'(ddɺ exjˀă1"P ~!2r%=[/G !),]#i{zʜE) }?z1 $Є丝F`iGB؁ZSSaGݥ!@N79a2]bƞK͔l̅\Nj},el+3jk0!: vLnP!Z:g]#B6㎐hRnt|ok@&JLE.Fל^*/(cl_nV٣TQuMY~xVUns|T5XӮ e j8O_ٱȻ J iַkI]e;i:%ZOlhz^dwxXY |84x6CE:e/c~:W̋lIsv#)وSђNŹJuA/piw؊ 壳k{6vHR$C0H%}Q1Y+mKMҋDr=|:-иn2+9I)wŷ!u 8O{X `|müس4iI*AME2H6F'B&-2Z|mìW*%:ZT?vO!{Pwcl_j|W 'x1'~e赱MtQ`\drv\Hl{-31SPd5OoyXn$YKm%v sFUb7(E>|3u5[-RGNVuϒz%QuݴJTncZDyY#9SEbU&y[c!7Qn^¢q+dtDmG^~;wK>*eQ csq$7\~['8gPn枃び7 }ѲL-DU9}5Ұ'*ַ%u΄Z8ΜX .5Ơ"tuD5 Ofs0RE6V Ae@!o{  ww *z(YEZ0E7 ʖzz#]*q<1NNFv=qX#P$0C?했Ptz ~|;x&?)H|yrkblas;TC@<Dѳ8SkgոS /%r|ը=:ziogocKKϐ6SSd^V{xe:>,ct}4Llajs6m76P9` 8z0qeG] fG#$`2Uyܽ<\MKn'{}PP=%~3uČF:ҏnrBh_]\Vή)yvO'ӓgsi^9ae>׌N:R(zP?_m&NƘBlx#&a_?5ODA;~`J*urY;sg*=q@)+dѼ~-<ڣĚ,l/_=hؼG.Y -]KU'b9 G^g+HA4,%uA "fKa)*n3FV5hN!fRCOcbȢ12&Ys~+rg(;jr}آEV541f%/ } =$F^Pz*<^F)L9ڬ|3U$Ռ 3p,/`_^@liKEOr|[1XɀTG @ ܌= p;nE@#@MaAY9Dnيsm!ɫQ k3JRuxL^r6]\ȔZr I$ scp ,-, DZnA#`r Cnp#角?`>c>vg"櫖:lx2l`T_4]#Im pRaX,^eDmlf|KË -mKF^N"eNe"ǂ OWt~o`=Zʏ'z+piE 4Iw>~}ۛx{Chםn}]~(WOlDWg>}pcysq2AC2->SdKdK'8gM@({dp[iB18YIlk*jɬtx25{%ğB[;z'BCꡄ[HHds'C;{tt< W%*^O( KP.DZ嫪GLi*`i_ +ft^`U,OS<ڡM0JN>S3fzz*!DNu8V{j&oZc%>zŷC4WNHAS6 wl6mޚ(e ȑdF"r/,+嘔RE d7Z'WLܵJ̫̐fk;*ø_rX㟮ֲ~Z5Pxɶϝ&Cw6Kԣ64(7aL6DugǣQ1lU:UP&:aE8fK2TPm\N*`aTH7f74Un=9G3ӷg<adcDtʍ]s:iwSaR.*X+ -e1R޽6 r'HVu;\oJPA]AFuRn4\׀-00\#KpDڟL;9([f=H2YLP'yT54ܾbeG\v3[K υȒ+GݞYʂ~GϭG?3E8zefl>^3 ]۬Z#u>~t';~nlXbX8k*cf\ O|hO,CtjK(bX JjtU_ a$xPQd+VJ!+0IgS7ۗ;|NgE>EaՖRSXd+gN ΗDVA CDy TAhh+p@miWȆ8,fKcru4.pֿُI>*)ɟCy`jOsrQB<F#fI MdUka J$@F&5+/}6տ4~Ǡ8J~Qp7UPO¨\> ֳ_$)2͞k-^A˘Tv9yR`de0'7ɽDu󒩆-rklri3P GuHs!Apdi_f;$qT#87yT0ϟˆn{!!ZbauÄ\Ȅ4|MA3s'k{e~g@p^f`O`?Lfm^?)2Ëg(^Ō3dnaz+o*f+'ԛ wxʦYBAzVϠ1 GDU|9Ql_h|U!FQY4xܛrRfߕ}[ELTk,l5-mm]~kipK_=էkHC.Y+:ڑz p= 7ЬŒ&ps:7ԫ|9KSv? ,>-f`*>lT*]tIM;[ H> 1x46mi)?£a,))LJo*+>#3dZ_y?Im 0(Q+=CIWI5.ڲ5"u_/삾G]eT+M|PKjH$]=&4:ڪUR;b?,̓d0EE$ Qvsֳ昀C# -g8ӵNSl%R7?z *4?: a7&|ܶ_k\7Y/^0T#M3Ki2 yCg&d=%q-%D!$lB!펲 16Bvd,xzE$Bᥬ CLUy{ńkkqVFJX~Լݭz1nx54("ڧN?8yfa#1E|V*Ry;8UH.jCIr\2yƾ!mO8QdY*TTt"̭Gw{n{p3fJ"_|-aSѓvь=K<%= sdmDq϶w?]ZoARɄHщqdqT) 7U۬!,Tyz1k,H$DZK1R:g}XMi 96LCD snǺlQ2TUxVF٘=Ls#6FƏ2O |urײNS7cz|}><|\3Vl3j>$(n\H(P,'!y"m55xww|m}|BB3(kc5=76CХۓ:iuft?>ң0 lإAkh4ς|30!w݁S7hx ]foh\҃rQH1ݣf!Bp`=FbR6{Kpq6glBxp80fB5^6|rGr  ҊT[/JhPIsbIz:EKôJqu?nO|214u ͋Exz8]pk̅&wQmsyz;I+tC7A#ߟ zӌAӍgvvHv|ZhNOp*d2{,1&)V;jp7!ţ@x 97g_MĮП9x^3$\ʜ7w:$foS:k~ BV)ʵMį*w&n9}bR(@8r9qajiwLnwx"U"%RNPX)pE*y$W޼=z4Ӌ4fu^ "#PF&4[RF5IhEBHEGf㞘н +RKڃ(:=oru@5%, A{*Bk,g3)]1Bşi_yГ,6O33wxLH]~^a.8V#lu _V^7@B{HP`Vn2x|z,(jxCup<+ӊe$+cAE}RD,!i[0HSqB FP:6˨l|fZ<}ߜ |pk;mqobc qsϖML\:+ZI)Q@(@5(L ^o7+%1Q}],ְ%]4(0wrF%+i!}`sK/+khZu޾-%w}z73Cd5j'ii㹀$8t3gݭ"*";nSA;6*w!+ܬuD-` ^_F+fert5!Y?ɖ)Do0-ƘeA)a05JyMΈx*0/3+x1} a MPd-_)B,B˾DI/MH$$ >ڭ |UͪJ"r%tm`Yr5 5ހr?W84+G<}rۻp.8_r7ns0DU,Z(w\gQ\7 & V۸v, ݭȕڞO8cVGF;3 0nqZ=PƅU0P1^1*Q8"m@ `gsC;cL=0&/_H w? )-0.X_/zvJ8H:JRfW4Y34ۨ/N$ vvޥs;,gxNMYT'ɏ ei4dlHFѱw =NvMI  aYȿ7ej+G?ZKOn0U.5C-sKh$㼘! 1!acveAy !(#^x,ʺ{ ^Éޅ3:N{uzVӪsZgڛf437H voC30P,j @!=Re lvQ.+9@B 1I`s𫊾}=6M,a%\K- \wɍpOQ5aw'W~>rh<_r+uiHVq +r3PUX:hmDY- <}.-F;3I΄`\IҮUǥ9WxCђsjzzDsD ",CpTіІ_ߞY1qz^|i$G IDATثƙJ͓ޛ!ςg2AdK DF&*YJx4{o6Xg+>UD;%EX h /J5dHq14\t2os>tʐcLIB.i/PTa+TN4c!v{c|_3Z[ӟ^8vNwX&JT&J Z6 dzЭ2a4 1gâ0}=J_(Gc\At34U'b(&0pE+>z:NUZཷGo<.[[{mT"һNաPN/wv)Nh$;ڳ q~)t;Wg&29fueko{ؼɲB(BHQ[Px<G r떻߽~rm繣3='f3,d V2o5ixXiS*eЃvuȬNZ>eȑ%2L$ fr٠ͭ66̶et?]=u촚rK+WfgnHVZMe;d?ܿv퓛%dTd>kȗ rc q#X c8+5K5J>w63$?è2|YN=c/urX 8e\DIfj:28}U^[OȟzcUQyRgdm5zzO/LIckaZ-"h,j['`*U΂ҝV =qi&mVHD- ΪSi6ń1.qҸ?gֳOKSݏ'Er!g~=VckطDTϫM@Vtu^YuDb<96Wk{ pDR,;*ւMͻ\EVBSlvsI0IRRF7ņ1KH9 sl(lv_ VQ'UU+e!?#_ZXդ-ҁkӭ7wkq"BUJBk_V䪥Pbuc|4Pb aF#!hoOϤ+p|"L2>-JT^eQ&Վ,NX;nxߨXPg/]ՙj8ɷU~=m:-Q}Th,`gݳSonX{SFeQTs;GI-9`S; ^tCS).hnrn) Dcf(KcSUc7m$-00(Nk+k&fKM& OzqJ:A8EP䡢B`#5@yH(%6I=pf+m{ʹN[vfۛm~{Ŕ7Վ,;s_F傳lNyX<${*瞌֮d8 p$u-2IO3 R܀䊡9y( or(!$?a"MTr "'bO:|9C2h^l+j~>uC>?D6"[).j$ LZF.rp퀢LnM>_y2ܳj҃8M}ޱYI*Bn# au0eqh p8Ġ-S`"<^_w A$>DD=TKҍv/nޞRެ}~vߛU ^u⪰yTynicL֛|rG{pb_[R\YV a(xۮ+s DHQ:~+Ўl*Q,ǩgZ9=m'Yo n==? 2uQ7g6{ww*{;u ZQސw0J@0mT}|C{¤j"7c`g K]@7XD.!%QkaA!$Z?d^2}5T@WLd]p]Soa8ΗtnI[M*v{PoP7yWrnǯs4VqgD֚/HBI3P֫fQ&q"5 FPMaDICKe )#`A@&9L$9-j*j46:t]о$\ph{%cw/Nϖq{_fӹ6B0P˯?x!]#dtqacٝmD Œ!<v]K[]FF'Dx"rfH*_WɋC㋴,KЌ@Vm_ʛ(8~(w`䝱7x6}؞>ƒrpH;p?hLv'i6H.yi bӠpv1 .Fe)Nb*kXrZe>_g۹Tꥱ^ãx 5KT*+PYLdligbs֖cv_'W U9%}攂,8Kںk?Y]tiӦA y{dpyW]A=yIƧ Z't.Jږ $>2fj Cd٢ӉdCL8*=Z~(&g}߂Z?=&v#<)^[{l߱=s? {/5+La'u8Cs{zA-n剢lb!Hƫ2JyXY 0*8(43 ғ%YJ0nvCY-gW`>)Xaïj4o_+R%Gy5UKBD|eim?:;驧W^4EhS_j(X(5iaΤ3.Hrмg@RD4 _f,; u^U$_I5&~x46jOi_fԾm5tA,!Xv& )\6kfjYG`Y J;(%&M'HPAA  f 8|5%YL";Pŏg_-zWr}9-ޗzcjs͇Ρ CC˩4M?Kl0'Hܭ8͟7ˆtr`:;xu^7S%it8/\`8uŗ;JA8'(r@H()by!(x}y䙩ij4:[{noܱim߾7;?mӷ3wjVIlJŢD!wx.Q*6Y*M g2CE5Kbgj& %?1qc݃҃ ѡ;8>8*]8ll)x Rc̔v^oOLB~:O, .&D=f Ye+SPȒC#8bwjWXCнy}}~i)W~VE_]\\_^$':/#WV{޿uIaV`~hJB%qr~u}^?SwNV=B}}QiH\SlL j"7hUlΙV c$Zh.:[N9z♦U7B /-.Nv]YDfz F4Edtibjͣ50CFUCE,W WB4V3Kn12xjʝS;3 HAuV*Nf׹ı%矞s*Lu|'JcM f N$O0RZ&ԙzp^PCр1uZy_#iEX 5 Q3LX*V?t Wuʦ57^_,,׶*ɯONϰ-Uš'O^ -gΞN #7?}*ʡ@1"TD "EAAG`btj45Iaݙld6=&3;CN_ڿe~{:z[ 96*hsVl$ !L_S eCT*;UoCu}XxX6.x [`ALJ{p9ApG \)mauZ*|aA>H3t[}.7?~ $TPU˻[F\V'q,39!7k6K'g5\;TyYALYA8?&#oS~(U%>i sĐ i]O[p8 'l?ښ GSH_pY.3^|xg~FO =1*^ }!țT&.t"Ρl_Oe9&lMc*{]D*4*0x4-Go@Iy>aen^\QbKȆV Zs 'Pg|Po(7DֵP@7YA'N EPkf(WNJlش)P0,aU8 @3eDҳ'O'QX IDAT FW+Q.8wLw+J؈1@aɠfOb}NBjezߞ0(;8'eJ vWwa5!//-֤-+E!.Q2sv:PGVkE MS\fIY$S.Hi؎m4(cSzာ֗tfwr~_x3kj tNuϳBӂ[j x 7Ԣ\ZvUYdj#,N̽-.raH-oRR57> EقHm &S ܫD>f־Kd NP%'M>0Qapg{ʚy5vkk=5Ms:OrGhwB <3rFW*HX"\*w/OcwIfs{yuwRUviZD$}u.p(Tvj:vzej e8C~%T)#+hC|͹Е;4.yrߔMs*;g"VmuMĩNs,A:(I7z'k1`cwcq?gU"LΌJTGa(f(zŤZ6*L_.ybK"sp&򨣍n-7$$U%=l#g`DMrn[c2Aٍi6fP:)C1WͷbΔ=aK>慩o}S;vo7`g Ӗ {C80,'??JD6Yꅃ`ۧ %A4gۂI_h%׋:TVꙶ6L7C_U7zqH:Hu$ΦY;YFBrFoȓEeL[ݿ b]9Hn_Y[u}P>Hr3B94rBUgfXfvqQ}6cT"֫{ DX&h :9^H&wmaLpq:$hzu`^&Uf5Sj `a3aMdͰ`dbuq*+~ٞ36:U `8^0Mz.|`qү#N)5TW EeّUeGeQTD@WTD4-s2nz+38uvkjidt6kαNwa^m;nmcRzo^' K5婑ewI:$pD+Rkœ|Á$Cq.X3 ЮYhv=+ :A]&sĘh)N3gDy#(p&L{e^H\2>^  Uy}QO` UUvOZoFK=B#z;Zks7}j(&)۷7 6>]ݱò0d*ӕ'z^+JӮ| dH``I &W&=,FHTa$Zd߮"s狇ZuXR1}ij4=k@7$t( ֊=ҙ6T"OBϰxn}>YГnںcXU'Q ~qq6!Ŭ͸E||vZ?뿿rB@omыT$Ss+\E0> 2riV9TAgrtpnffɃՍ[lLٜ; Z eR a}&P:=zL{e ŽF'ZbK"9ߙƒ5\5]Xm Xl>]$TT JK.\=~%>|Ѷ(`T_qG쵗b#~*{fkÈѓʙ] ;^ww%kG@Z7}L3&zt Owe~f˗O o>4ejuk\\DZᆺZj+? aJ7wjZjCXV"S)1*0/40;|\8|ZwU`6E125v pd3()&CwutX)|2,"s Dpaf+J$h$j{pIP0\=?i@Jgb8FSsQbaW<}n8ƫ"jI!tfWV斫ΖYDuJFHǢ|ee˗)B Ph:*Ou~ݺ-3QK^>Kxۗv9;/O&u+ΎhKAJ.t3-C/ՅKo|  DKnv#%aY_[-7÷%TژZX! n*q3I$0Ps^\<|Q0͸?ף#Mȴ J -VV 6ޣ#]2 OnpM&:A4aRz`[[TW,lJA jFk\£z@pTuRSG1k~kl?mᶯvt֋MplU?|پĥxfׄOo>s[>6EL!@{} \rrJ}Aܖ,+f1x&>t޾h}1v˛w6Gj徘7Q $ME<L[F('LDJizc{,V*͊V9VUQFJ&(<8 CU%t?I9XDawRe{x9 !FR/{鿽6 %clETrf4sdҬurD~:quo%:aH95qNꐆ߿z/.~[/'<}ǯuG9&\R+kCG]Dy<C?vs?NddAΟ,s[,T* 1q vzs  9:*dzUVhsK˃RBVI1F=0ƢHQg)hCi()8<.7 r/+C@@!Dj b,FUcʒ4%FטXk˫y51٩nkӴ;I-zӞ9~>&V(pUUT0%pNx]\d.K%&yPi HhcFYWq;&D[!atV?2۵oߧ*#m{#".b7n į⼄~S5kǟdëS{_Ny۽-28_ztܩX Nߺߟ/_bvM 8"əŹD#͟Jb) &&zD.{rc&SQ!!^ t)7?>sST%0&R$RQ[d")A);`LIPQy2ήbcdcFL *X}c+K:we3uX/&F6RΊS{❰HGK^J/s毆DwwE>\ub){Y#+dӞο| g(cTQ*pJ! PX_B rF 6ah˛󽱌!;7y&%2y(kKbu6'DyҥhPaE,[2;[BFiJPV^h/;o@KhG`1୪+Cݾޤ=Se?ζG/>)+{UqCoߓRe.'=.rX%, J5 @Ҧq[ͼH:mH<:YSΌd_bG48赖34Ґ%ט`I7B]J' 0,|XP0&Jk)HB(L_=;eTN e6ʵEw;xGkh5Ɖ,q]<;1(ovyQTU^Xu*#9W! =ooW~ף 5&/<#jpB߾SLjBSi xv{bpopufj []L}.'t)GH$͏iuEOԦ3Ln./..,˃Am|fxxzf|,FbaI9 32`9̀f'"AV)h(D1(8DjAAB 3/ӌA{,m>3 *|ixn:@ Q?$gvCXӛ}іeѨe x2['>dh^mh9 6IC@d{Z[HzW;xh~Mo&;[M7՟'a*k/ۜn7 6sVM:Cbp'^yX! IaVGD$9?k!A96'!ZĴUt1`2gdS(I/5=x[2$pXZVO_O-DgP2Ȥrb_=KKS/( j>>֥~x̫6U*sJV{4n u?v.N\U$(V2ѝLe2,R:">g2S|{bLtvBW( /q|MLuXK0.Ap('a+[taLx0!fSTG"#4fM<7r^H!$#s4@BM{h)6R|]uoّW('&g)9Ulˎ0`G㨣,V\ÍJqQ0jo{V/V$!epk{ΎL_/j$_^ ?Q?Z 5TzřH3WGhgw~=3t ,>L$eڬȄ'20mkdQUW sY߈#>Nȣv}Rae28]]TY2VHcRBfhXgG2kX:c$uҝVCGps IjYYYꓟ]DUb&?MBK]\Uht59;*QB?5gѪLGY|kg,AZIXY5ý/x^΃0@j | S^/ŒեKuܞOr^3[YxoWH+Oܩ߽ptK~w] Db F.f9?nN3t̒%@$׵$%l=K`K4Q[!ϔuQ k]<4r(ի\vX5nƳ1 V'(j dTx<.g@4Da9BX,!BЃR'eφ&sSѳZ%C#,F6F)%rjKB JfV+Q2P<t{q)ش-$o{ َ}۠TeqrfAk6 dEzrds&E/-nAnʝ Y,̈́C Z@h2u:zW c\-"㛫B0l2p@Cﺸ~WP4(E43Qg [Dxs/l.TKkR.-Q7/ī'KD[IePj3R.a&4'A*e! yeX Mʑ yleFD0ڄFL.YԐUN=b#r!9޼*VoÝxJ}c4mjal#@Qm^w4KFZӪkMywnr`v[av2V>>Lj&`-_߬vl> X? |HJ 6~͉>[N/EJfG IDATI)V6<֨fI1`Б1B{/{Gx{P讻{Fo 0a@D s %hdb5ea-!%ˈ44M٥j|i@ t64Ol" Oin7X`P΂޶#z u247#|yP+e7WwD&%[[)lӯ+D;8B)!eAyz.kYY|{<#@ݝ9ȯ<{OQ5ONh  aX&>G%ӗv7s1_0+  :AQŧ[[?>iJkBb£9˸ &r_7Daq*]㝹>JE,WFW C`UZKBF1YE޲Qol2=xOhG+kz*+늲3]!bib#zQ$g.hfף{ϟ2`w_.7#gN3 vC)cr.IJK쫓ľ,ٿ98X2 ,GM>ĺ!W^M͐be0ӷO֋]7Kӄ[so5 ]TNo2UҔ$65}Fw}K]BaU PΔ@mpblwPj5nP 5uuY.;OGN*,Z@)1k<k(8*rU.@QS""&* xIQcV5dgmZ 8gw9β}S:C;{Zi,Yrc5[B.>]JT&'U_VeYDj 88XH],dHO)@|*I΍ih? WYJؘF|[J6APaպhVSA]7t]:͐.8L!G)-YͧSjyٽvUݨCw,=׊Ztg ]D_Z}A>C.1\L>K ʣs&z<*N*ϨbF.Q11(H*&Mi{z==y_u^*#`$ɤØYb^Ym1/^UNv@2k}O;3aaLoJ;EDAn ƲB WPD/w4kix ^bǕ)@=!7u3z(1n Lh1-NּX昹?jJ%"K@tWV mͺ.$z} Ǵf[q)9iGXgZrw8i[VNɹ.g.mΠ 0\"91 VzNW ̃ʣCIE2ɢ1"2LE8H}`-Y'>ӽ}=<==<~4*)Lg!L* 1ϻi*Qxt!WVy|jju#L&7Rɀ$n^6$ziս#K| BE#(EMx:-u,fiid3Dz>8rq+ݒH~Go=1t`iVaN$2035-[x?f+bӦi30ḓ{ErPLǯ5vevX'=g 󈘊\ +ͨ [{>xv'g7_Oh':a1ԯ"5'BB*hd5s1EV!#ښ20vCKEK[sȄ~Dn:, $GN9VcUH5:(hȁ2q߳+Ԁ~ j/k[kw6脽@m,=S#:9sٞlZqKX[-ʤժr,Sko9Ǯ5|e.H3m{&e8;>BJ(n\!{iĊ鱩xV?NbRHd 󓪨Yb<ӯǻG9=+3> C\JtAҟmwx?9 BU~zh,5X\ <Q{n R4ID%\*kKZ͵{T +D bYZS%QH2ևaۿe^ru,>zź=ϲawm3 E妟D3ou`z5JUuIu T?}`ct}>apJ@da >::Jkc)dM[ w85 <,% IbSTG{ޯ>ޗ/ޓ]1maGF%. A^3v ry:j+K~u d; 8 eP,TR,E0jp~# OPR)TJ" E#I62ia+s{kc:=s9{v>ٙ}}=,o{ռ(kKQ k?kݹK8戥uѷw&gϦmsaن4E58&jbCϗVlkv㱃ueyZ :8 ŁGUUɳTbd{-7"Cw]\.ER5' $,e Oe{{ ]o.?B; _^go..ooB>pJ(I襙]kŹa_A9ŞqDȇV"dV^_cxX)HcfA ^")ktTzGo?oA@]-5lEkDU${~io>Y̔Z}X.GAR^OrVf_8 Zk}`2GI,m&bqa7=I 2Fm/C3 dc7?F WPpؗgY`"@"ɨ1S\d~s? D$}U*GH|N3K'0,Rw-)::;;zYXPE#'HWELBZ׬{LQ+U(s hHW+}J,qtX(2>}lk1v%2 T5E-D0!n@gM 9L6aTDL.XPEc9X|ҴҝMnf)q|MC=߁{: ߜyGǡ9^חtvI̷8E 8ߜ&EY2[3}Pc7$2eADE ͌%Sj.phu>~P6PFm.F=a:P8f=_B_S_ɛᆮחlp'F AMX p@1J&M#7/o>'}|y~EѕGRZ2I&sJ@Z=ݭDA ~raI HVH<|8%)’0(Y6+;/ƨ; <w?iD %[/jF[< @d3  zN5 bHL7_- S+2-4p Bmpft88P#*8CrJ 63.܁kKZ*HgcRg?2}@ ;mP:AaD&GdHfC ~H`X\7C$v)泩$=Y1|\^;鸖 JHIP ?zqϞ?rG-g|%n0ώwb>H}B&2A grw:ElI|ɐI0&|j9^.~*:|; KOit!yzz?3M'BoZ&PR@ˍ[4EYcq2M۶2)K~7ixc{TbVQìi6:VaaEFvBkPGQA[Q' + W'9$3K޾_|x)a1(_@m?+9mޙՏHU ʰh4V_ s궛E9=tg؈ƅwB@\R2N"Ց \b}a*V@`>\ <;KiJXP퐩?`LI+W*܊W[0&O=ձ#\RI_kسjsQ'bbv2+ j0dj5ϑ7vbjr";V/hl[͓=|܁(_ |ũ eW :6`L,݉QKmChפ%u0(@Oz|X ӂbF;pOD 0'1+N*KM/?KH7$nnfP9 Pp+J^ vbGgg/6q,B%zz]aI>8Cu8yJeOƚ9t2 ; zKy0KhL`IqVlan`N-쓶@Q5O])6=V`.˃[QӮ dSR@5@eGYY QP \AA,rCpK',m4oYSMՙ-5t=ŽK\<(M'ԴHC{q^,RjY{vJt3H ,Yv(l?{qjma0nFUAqh$PFD5czԘ?J-A"M7FPPIMWk!3v//mm^ͮae8fcW5LVGqeYc&hP4s0(ZaCa*'to=RjK@ q7\ȹD\U{e Ku lh"*aE$JF-mﯶ o/"Fb^;~(RW0R([^[4''/O|nS0ZۊmgE"`or#3O"ng;Z*Cz&=hMy&ѡX TOɈzgx (!6Vb<<4t߯cMXHf :6(T9'yH,lr93K˖CT2sb?(]~w_S}R+<Efs(GPCCtrZSk@˲ c|Kzԝjzrht=Jh|Ne/zYϯH' T*|lTzD^nNk y؜Cin7 IDATnq35 VCxu-3YW6!G"kYa%pj]!VpZLdL؛U=H0[+t-z`H~tfhˍK{οZMЭ2y0ԦTp'/Ca|!Ԣ` ʰCdqi3" ŝ@w0l+fF(*;RR3KDFM3vٳhim-:jwQ᳝݇dчw!(p9ä41ec5L[&g!WǍɱw!#X4Rm 'L)(0{ tx7X@@Shn.Y}h H@@A)ɵXvs!* E뼝tyUz70vכ^ }4'Ia!Ҿ>-$hTU3bs9lK߫\ai֤B##8j$+^d#V͆3#leLM|gڮ\hh;{2P^_|&r2b,- Xo^mmW,{|Q]eG}k?<@rZ֣Fz(#B\^ 8t'LR[} E1uttger4`ϒaS&]hwo:ӯ?b!c <˧@)50MFIPd0ߓi ބlBHSs8lt\q|&sqy~6i:Qa.aV ?}geGO`2ɠ30ё+P~6OWzs#_gv 2PIU"dXbT:JTFSZ(9MsNQq:8 ЏdeKO LU&L0[qyddTZ `>ۡ|ětjkl:XJ69(r*륄[sc}1E' +fEuژO/ i8 gϙ,&qHo3f%P["k7?Ikm%cf#zX oVU,/(gȠgΚ@ r *r!( *"r@&^QcƍuLN6N׸9ھd=| ޮ1$@U:PRnrgx1&.a=#ٝjYx./PĄe##(xӪC ;-Q%㒔( BHWSZKKg}vs[E͟t"-UҠ\Ec[8T餛jG8(ѯDeuy2`LZ+*'L]еȥbR_*|!}wvFp[ Kqݍ7V:5z5s-OͰ?jnNIׅAj?#+z:<ӓ+뒕KpUz U(8A(.P3 i.!OE/B/gC@Ft.{#ùG\6aVep3uɑZO- Gº@nbY3tT^׀$Uh%ިg"9j<`08q.JqZ^Й.o 'di"/v6uG#i}$`Uj0{[߃I/Y:ԅ{&Q;5mdxkX{ElXHSyfF\< 'O3եm|Μ8)Jr' %x+ahyt,nFyB"lkhpI5TqBt+IOS e0pims֭P=8f@mTX.A_V)MKL ͵٣~M܁l_ZJ/^~T{6ԛN:E(!BI 2Q|$ be]`9=ݠJ!h/sGۅc+c;Հ[5}߷n?Z+m/.,M?T싅Y˳)FC ľr?%Q5M2<8ĜM$˱*HsQ1DE݄n(-k' Պb¡ǧқH,DB,8mv4f#s%tƩwߞn _d&Ɍ-jB@÷SyWaXAd[J'\Jztce5Q?112ի! '3$84dBT<(5?M $}96[M3 ._H#z)$<6-&\.i'CDӱtJ0\@PT&;ǽt̒cnL-i h]eQdf?jݮ]Fv1p.32%C& >ā|O;\,q\vz*BC ϟO_#ͶBn6T 7B/Z KRU֬GVӅ!E,'Ww)I.9"{>c˱Fv~=z6|ZZj\Q~o$uR\-̐@ ǚl7k( +RP 4cjJP&H`0{ҸD({8Z .Bɸi6K%qxse}:RZO6Yڒ,.@SdoqMS߸KL&slhw _`ɧ7 41ېZaҰW'w-7lImVXzet(- JF2<[/|J/MjniRe.q rM[K(2W .~x7`b^㦟 8lE#̺L 0̾/**[X4*l  nA=j\bI&IMb̙L2$i$͜i>yn׌)gm1cDL/ gb|[׮$װX *|M?|H<~lr)-O,!e)[B$)G+ *P16X/8zi :Z׷~;6l:gxix؜kQ37wo-է9'$|?-ş|yjvȵ吭?DŤ&^bM`edQ\:ߵJX4Cj< 3[s⧋c:Dppp \HB%&:Zxe 0ЊfzK6*JGh_~[/LaK&r2~f8tegbƚU h~L'4{k1 ڝURL`bhޚ#s ΦRy)И;F֙\@D`|Zbmɜ.]2Bz4V`2)1?U+"TIyv 9jcޭ@1Ny*F4nj- )@=1uc fI;BKhxL.Fic~ >gPŽݕFu-/9]ڳB Ps<5;I3bPbV&fbky:xtP-{ sTqqcK}||1nVHOm,ϗޮ0vf6gn&[ak#7 82Cpzsg7/zqz –=怶l•5E 2N/&aj}D0KANp^oX/NS 2BUb"@ 1&:APsk&D]*=>C$с?",$ $Si{ܑ)ߌ` Vd2Q+g+qkSלG~Op^8|cCWO萛j;9i}@(;|"43uql/w@悌 tuP;mK7fbe΁8{hAMk7N\а c\:GH'sLJp>;|^ca18.) k hQYE tt˟3yA&v~-Hc/?pJ,xۺS&a"gDU3YՊQDy\;5 QN0@_K+/Z|dItInO糛^>L˫zѠ 3"6X;qϏ7ޯӀ" d,!1?"BmWd+o4y@?Eg֔fPDE@@PYADd_A3 [w1I1w:6өt:553ՕM1s:_Ev2h#d #_3CewqWOita=Փ{/nǯ$I@DMg=\CV]GphMms+Q#ifK[ӬYIqJ{7%v L#ʺ0Z1_҇>bk˒v?VndD|U%c nfI4@:j3b77)hˇ=9PoIL 4a1%{Jua3de0&tKw?\o5[&* !&,'!oLZո*mr{谬{î.\lzy!r&sGF;270v3;XձajWk|o9]\|ӰܠB9*]4 fM+)X;KĮw(~܎.o^c0RΟTU\>TFj<98qޫcڔq6FKM=u1Ci\UJuE,m4X* zOI{:d^m/S;I,vfX5W8pn„qsMAs_CQ~'lci5:دR&.Ua'bJ,,f*.|Ouj*ĝ|PnrS/ųGNP6QZс?X[4l#Z)79 8$(E=hPm))7GD}SC'z̭:2ػJ$`tˬ`nt`mAex_B>z cԀPpؚ^ah#p" hp{?X+ՍIґ&K³P H'd1[& pW͈݇Q\EPؤX,@cMiq>geg1m*N'jP+W\ьɵX>K#wl26YjSȀ'9\'pPLb2dDNF0ǘ+ &l h OdL/Io|Z^^a2*13B-[%= QhrPlkO)p:6yUpqDV#duId-z}<sc vc0|E?y߹e* >+Ei=(Bɽ^88(4_inRz7f} L۽JBn@#+ .{ W9rt"V%6I 'KI8 :.)# sI3A(\" "((Oт\(} x*XIMǴflgv$ydprr}#LNXiŻO???-&yi940eJְVL' -h|@ RuZs |*'``^{EEQy_P 4 #,hKc-v}*#n$QBfxhmuEu< oΞB XQ fLqڍ<֘xs'aN=irO(̬=mq.z){ٳquUT$ \siC{8gmOzDidi)YU%Gcͯ`ETj\.$#Qۼs[Xs`CK'ŀ)o_&l'&咄rmm{yx^[:{<̤5Cl,KG(l$+}NؼojFP"`C T×uKj aCaUr%Y5N3:-6#4*I.`/-s %Nu]@WO`zu}#?фC?(ح;;uGShjGT>NyUA TUyWZϖzb|'ñȗ951K9C|JnvbFT]~|JW:XV1W5X3-}Lm^;"QAB'@[i]4RiE&MRv pI)F| V_VMH+>ϬL_]Q_dveHV I1.Rݩ :hu($ٱeM5efLàFl%v`D@Kр@k嚉U@ =,~{DC1EA|}kX_Y IDATM"{wlAuUP s1= (-v[Sz֨0qs|v"P:*\*8F W777S;Kv.8[yS!CwdQlg7ViAIM3'~摢Ӥ`Ļggq\Iq񆡝ٌ VvF6u=6gs&&w*)+pUE#xD2t:E*Wd 4kюe<\Y!/cv06 l hc4Ɛ1, 0~`ȏ=4Gz6ar擧D#`:ӫሦ`deigy%un}yߵ묪r{JD99mdۉ܋3n@P%ej=C'bdp̼x:A2S'Fpa,0@nFȫIRa'jJPV.lp VJ^'pU4uLϒaS匰/;vbQ CGT\\0SC(5ƱYܶ r b|6#RiY:Xl @*Q0~M.—VˏnRwY^' $}?C_̗,@ӻQLߞo.?^!*qre k|;=\=8I] gэt8A qjd5Myp ngŭrU ={g.^7K&E#UCZaMEOYǷ{C# -#fRx38J;] ^}=+}AʹtD1ÙH*&뵢Nu?GՑqMjnJ^]]̠=?;2[gVqfZF!Hj4Ɲ: CvvKeЅO6|4R/Zmu ^KƁ&O*YnAŃưy ctN@x3;Xc(4P(r)0(A0*H4$Q9ve ஘u]F'=6jR;ݦL;MNCW)5`I'=Ὠ.n )=*QJ:SP]RuzLJn a8L(8\[?S( ˳zm/ַrXܜˌnqHG|y,>'rARcBK "z2hX6͝6xeMf L'1mDU>o!}|2NBe_:Zq隬Z΁ifg/LMܾ>y;n ܚ:&j=nƽ:mr(;5%AXu0cO_('J`|}8"ȭ"VV4T_-&'@pñq{}EK+,鞺b ;-xbM1itE+-8 n6h62:ܖ>x6Im7zU+lg~}%1_LG .ɮo3: MCêskW/. ~!,k #zjW _M = `p8\r}du?n/ XV#S*"sŤ)$ִt hjB_ 1aUGDD|ͅ"cHm!}Bhx)ـ\Ԃ'4TYt~ƈCX`=[7n5XL$Y`FZ[7~ZKZϓ>Oi(lNy*0(2ݥkV!W$6M\遊[ƘPGAXl#/:JRЭz`Ъ~t@g!,,&U!-ŃN.B(u KORe'ڮ|=҂/gNOvvE`(4_RmtvBp@ՑY>Iop3. rF xtϬ9އ\v羏ol%BӾ*VPWRM43(b,Ey2۴lP= TͲj%9}8;?=Yj #wRqMnVe4T!T:,VngUvf葤z|AR(LkVYK$7eed}$>=܌=;[^/(RʲNTw_'^7|~.d}ٛ {Y,wь L):T13P,yޝ<==<Ϟ7OOApyƋE9:hm$ 4_~Ftʖo➞[u_{?E CO,G4V8VH y|jHkm&yNorHΠ7^IH$nj,MUxUo+&~y~Eţ-bCc0cT4Ԥ HR8R C)Ky7q.1]-mj=ptwϷ7$do`A/ƬnZIt9eqqO㿬g+?]xE8bXsK>:9w~XˁupٍRKd!RZ&8G~+ZdbZMavGԜ1%k v^0qo%wРh>_zoڮ37vu_}*؄B5H8p |TC^~͈'`$lZÊ-"kY#5TSQfVc M! C( 4q<3l PuL$lAq=Ce9XiuưOL3kSHbecm_ 7@Q㫁 <\5g4}=ʕ&L*x@E$ώ}KugXju9&"2> "QLRcٲ<ć7Gh$ШX\CkMUx_'EVw#Y?ݚs/;nŝPr9 aSr06s&H0DbogI+j7ìޱVNk,ȑH,H$HG9 *m DSDNh]=RZc?&䝅k訽h:ʓBd'V#љçpR57.gV3a! ^.KΌ"k?.:+[DLR%8VP\ qUfA8 2ϳjBZ9a8p ]A1*k`hR!1:%ONNN/L)Wk9ԲG4?wh_oMۢ=S+#~!#khvav& Ƣ>$a FcVln[SK`k.n7UD X Ci6p莲ƽ 8F/>MI1rdRf'U * `LMlF ic~~>8Wz=֠rƣ\Xdzc_]zPxyhw'/ `bozfU};N| Ok_-/qzLh`ʹLz VUp$iC֚F4B-n/?_M-~}1N?xqdS ,zX $PRbaٮ`I1vVIǬ]@@,(TJ){ڪeM+;{/ |i 'DdKr ́GR cy@MG(f ^^O/g2?y8*IŽhv;N]-3>xVyt)h[T$)>D*@&*8uPIШZo2<00" Z4pRt^,O}pe2Ul!<0ppboϯG{_;ӖBjq\ !,R~ZbMyG;۫QTy6sINCH) 0Nd]f`5~N#5^9rp6d@Q@A(84KoQ2Mu=e:k :v3L]I& QBTPAE wCCD-AQ@nX,& %x͐ ԛe25gfNtN4Ӈ>9O߼9y 侍= Xz0H-*|򨳿5ң_vSu+5oEpf@J% +> ~RёH\;<3$D7ɣ ehPig5IpC[/FpldTkƥ33FڬA_=쌦N܅LtaєDd"( ;G o^~p׋Pg?Qei&mlU4@ nfzą91reqY~.O"QKJ,Z9ߺh/T<]s=: CO()=ze1I䎭W_Gj} Mp{4j2Φ]?{9&:jiwK&iH2O!Ț@4J&i]A5a+X>^~:.X Wc0qET| Lmd0Ұ ˅RGHƑEJK_\סO⵨gGg?f>|6/W&FÊ8s7tV3?%ivGܳᗑPXQ4CD%W@qR`ZQ.syg5y: Bx,;+kPЬ:Q4R*(z΂`Uf " >_UX%kBX!G,"}*37K2 |}_O"(:պ@ Gy6~RQ5y6bUcehS#' k'Z33A-b4:@4PdZl?vØ4=4s|~u 7AnG%N.(.sF]뺵#ضFbd^ uvA)EkҜM*򇼰򑛳Cx;Q\x/˾Qe2$,pYnTdE4 V%M& >DʹOjPmRڍQ`3l`de%m?[1 Of#J( $MkNS[ds,* FhmS-ZݜsG]1a.7W5áwJKz%=ļffECnn^y$(v2L$XШ'FRfpܝRKd`P*_Њ+JU^YP $A~u>s-ڛ-ʢƚwiV zQS9LFr{Ϋ<9d޿\x Ċ`c0X=!ݭ lf3&&O-QY-Q*\8~/*K,@2H.+ y(D1W<яۡQH;@Ӱ6Yű2G!F>M hAK=2T]BP/u3z,*_$-5mɓ i$daD%HTfx [am\ad<-Jjݙi`ď >bVL?l缟v\Tqq .6 K_츻l'l1BF*Ir-[=5{;VL ܦžsr!TMNbQ{Z6jyH:?+Dh"/H(P *-L{e5ΜwzM3ޙ杷pϽWFQdEu8> _i[DJUtk `&9` ^}%Wo OmҨ9g#Z2MB!@ E#n I|Ӄ=ڵw)aA?:5e505Ϭ0A 1=DZ>".ķ]$G85=-'/\PǏd@VW\˲TfA>s1qq}:c{^ YR1'g9Ğ'^IQ"r;=irϯHbp*$΋`5ΚdVAS1uJXuoqp,6*&F- T)dzTZ$Y\ ~T[T'Lt b%b~s`)PsmH?Oyv&vuQ.ͽTA1uX"anJW-ymBh Ph%etW|7LJDRgtGcbWь{֕]iUuF󑀈g 14QQM,2S;W+M9>dy 'wOb_6S;? , ywe}My r(SfWFN7/.U11!d ,n`37RKP XM6Is!@"Ң|RKcri0=BwQGđ둤!;9yփvwD%kEjwQžBz:R&,m6j?vzJ@.x(6HԴ«Zʨ`)tYj33 0)9g}Q(WY>81N+[]1&S'c+6*K &voMϧ}8Pp]!\gcZΌb^EtlnCR)T.G7$CEFZ/F"ZPݾ}?۸;|m$U/tˉþ(oV{,loJNv0zHe;Ê#ӫ$"pZX,Cc-kgA3@"]f;p!R\#z5QX̊/o?|K2Gjd"{GcuphӮO6ӎd&鹛{R!(S)BTXZU5:_R*ޝ%x>DcGX&g˪UC9+.յ-B1})PV$$\n*̨)Ĉ3f6pFb ڮpRp+L:=֣^26|ѩL˩x^g8>C~A 5ޤ.ToL3!$iAR|Ic,vxKRDgHgm]wqiPyZgx l\]|=Yqx޵;=bؾtQ W ?zШօb[eGW[~tA AM5թcSJWV+Ew%0} AcX#+47zH$C7*ZOs9RP3=%*l..1't2jEUU@WUcoI *>$m,O-H2%U`3 Op)g[RB9&D#v R9lR\lm]л>MJ^eO^=ѱ_9~Cjhg Va=eAY{ 8`fiioX]6f5@~oj50>Nso_0>H'9ֹйdWhYN;2e9r"L,|)ekWZYKaLmS>2`jx&-yјu~X#| 7 P{l?^ P24C'0 GQJ.n2V\2,>3 S,]I~`a'Vf_$&uSfF?*~t0K -^Lb"BHF%O D[/==`X\`zIjq`DYeWZQòzA~0 dgZ)+Ķs{w>l<)::{8OP~c@i>cuG5/zJGl1.rrB [.9/gӼ(-L^e +DaohEpD6x7Dg:jJ6X 'ppgLK2rj[&yv8S:W) t4! I GMjV!Cxj-{DNY 19=\l";cu]QdD"P_f"mҩնm~\-&&\siFL)$ T:,= hNdXom?ͼ;HW22 Qq"'\s2R!cfP3-//;\W|HRgo_cszlA'uf]@PXf' oͼxm*NTCu~[?Ui^bNE)<-N2ö=ppD~3.R'=i'Px or#O pr )8W^+FFx|.9kkj1t6G:Ok%3hBF[ G 9 RB!) ƽów# 6szSSŲůul&&m~XfV-*pTZ-,aEY ER00AA]_[ T.9fGZ0&uþNFMk:OD#Ds`'.NYg@bPX0RH\ D1FmAzmAҦufŏvۚɕ9BaN;_9 _+ḼԼȺ%tb|nO(L:_+kGȪw^qZ zBf9Gqe(MM2C6^qY eTd(`PFx o Bf.hdWK[x'_gE:ZbrW@0 1aAaүl!lJNlo!MDŽմ\B'5 :gX0iz>aM"DZC,3H1JMkh^c5HBzi089^}Y %[h8`zڇ]|hr+|nQLr 'su`! qYgj7;׹ˬj{hY(:J"IFNT<}/j̺vvk˙Y5ltl]=p93ajO+-FqrYev2h#pM[5%aCWX6r(Jdj= %-q))qol>`4<8 Ѵ$Y= 7\䶌ѷ9-<7/z _\lkCdFB0TP!r,'dX~L}4iVIV.<(OJ M/>~ڞ?2EjYvq6Xfz,KxZ"Qd)ZQ?oiS{toP}gC.[rK $d]Fm< +gKUfoRP_Bu2+Q fMpZ$I4 ` p\ tdwvœi< bYhZn57Kltا R4yh5zts,y{Dvj:)Qbp(aNO RIfTUulX= )PTdT?f( "M,Ptoµк˺YY*5-7H) tA7O5?NȻ+vww[ĝIx\Y< TeLO f}wdEKH1 2jZpN%R2;: v?Vh(M[ T)$+n(:gO"0Džzڿzѩѯ՗0S7ZZA`9oIt'!XMII"#O|k=4fm{Fя& $KN;+E&#-śƯz(VK|bk*Sŭ :Q} 2DyYdLF;O9>6hְZS!!u8FiTtl, :;_P_U-ɺ‡fA%Ed 'VoQ{¬N;Lhb{$?:z{{3:bJgj4)+J&)E )4̚ Jh(Z[e&8rh;3.&dxH_,&1f`_u_0l$bxDO[ 4z~VqveƲmqEMa$&T<e(L7>sƗ~sƗIjbv-({DU1)kqZ*seDdp) P xXoל7%=QI҄dyXer _2?GF`[ܼ͵ LJô7WhQOC8|k(?:cƅMv)Y£v="vh|L&3@;>qv7xY +#c3L}keE;eYB7"Lh{w1D%)z@`iIA. -Eu`' ǭǗfŶt" M !\A1 B\@ .S ypI`LC<f`zm;N4dn/-K)E(HlG `[iÌAaTy^n{}bv'oǶDkN6Erhd2`?lt.qlA).dɸ^xk¸Le) B>̼|ACS tf!^v NM*g+I Rιn(h Ů}2xYQ~7JDVqwxy:|H,4Qe1JK=HH.dv)ZMH6U'KUf X|S,0mst~ffuѦuZ/N&zc>XS~ ? 2GJ.SB=(v8a)ny$F bǖXQ%qgJ_ouLjVQvu9bwe"uLqfBtE?ǯd^*].&z_׸ɟ(-C$&?luF%2@}q!6jjEOKT+8e<;Q̣ZyՇªb} w|b@Fhd5@khZ bq@=#`PIYbn;/)U 7vYTNLP= S$!B R9>`,8SU!lf`m,VR9 1u>069I.5u1R/% P/N,cZqpvno)) G1Y)ŲĐՇS{{jKM:?cur l;}̙S&so皛zufnxZZkgrƗ` /̹߼%8M&~ P ="}dd,FvJ1-@R*&:-&pWCFjϸ|Xڴ #ywb39:jq2XjkE z 5F3aK,&@aO7hQ&-Ki ,i F i,X01R\$!~0]Ťif>_1Q SS`.1i%f= G0'B8sf=o!H6GvbvygU~J45a^Qek_j}zōŶëJGTvbEeE}t8|gV,PHO+U&tB͕Wl8f7)-?7Mvq>6tv޻йE?PGB I`0SGv4rkbV?21K!]!#dN3p}*zǭyqww|bpqkf_KJd+nED;6(F^jF313G&6G1H1/Kz~ ,=0KX=zEQl0 !z`m_lXz\s?y<~&!u!=f/S.GA!ol_l~iT3KGTnYZ 2LDZ^pEl;5Ö&ϋLNb|pxJ[h`h7=S3;]kgBz9@Kͪ+m>R}hdf(,5"!Iz[ x(`eefK=PS_0tJ{nT^Ҕp"c],[! [6#W Ct7Ɩ~ТlP||_z3 Ðs=&0-833 $,37oMq.e$mA@mvϸ{3 LE@CEW~열w^pk=@a'USz842N3PHmn5, .COH>ELrDgyAtsxZ21ϒsǖ94^ТZ}"6H~fi'3# zu6:bbc>]ĭ8Ԓ6.iimaGBY Bi#}lN J]ӼY,$ S ,g;>|hO0e{qOr?c1W8ao5H7.]*'H lAHi5`R\f`'Hu0]'t9fHm>%6fP H!J;>. zG.24LO7GF L}}ky0"nZ|Q.tх(ljG.jhvbE|KсA 'UaISU{pd}'t0R1zu/(͵MmC\S&3Kڷ$oAR]˪=f ,g5"NT0+A<`/ t¸yCpz~Pǡ+֟wQjWkb) hhnt+ZdlwyWW#2)DjL;z2'lo C? ._ u~ 1 B,so0lBsc_~t9 =f ,89c-C' +_8u66#;^JT)Zn} MX`2;Z[\o/ ]'Gѐ; %b}q)m !`U-ZX_[S!J׹ 9PJ6g<>Hnju`A_/׺h5I1AosBiagQrXlFt?4.lpԵ¼˪YْBQ1zgpvbwp|APwp}bR~ [=~MO+,@~ IP'=F&P4F~ Sf8R&$, RI=1`icGC3+C.??" &J M;5YTRO)*2Rmm> [ 1T4*(C[$6%xpuȂ#ݻJ$ d-\_Bl!1L:AA3Go? ڡ-5FרL%ĐcAU[VZxL]zH9~m_.Ks0z6t7 kTX8Ycm%uli__>6.&_S\A25Ra5$6&. SC28 4m =``(#7WM00BYQk/s+SX;n:.?8 {#<)Շ~oH#rpp7<u-;Mj%/K .uB9GH= ./D)u dÈ``&l0~ <3.1 &9\ z·@EHsBR q}K4bPdG;@PKXϕ|^#>äśX Y^{b{ZoG>wrh*2g8I=Il=,@`ab Ui-c,Ka+C?G!)FIKGG"a5;"`18FU1/6H,HU&8]_]~u`IB]B6 c 1S?c@9l`4raH r n" |P!&>1YD2!PXcIS0; P{mc.~ EngnnDE5X~]Ǿ1SS]\f"0!&`&FvO|KC.9}% 7_ ˚rwϣe{|M\ڶvpUpNK>tB_8C"Auu&էcfI%= ,.B9@&1,=_,ll__u]c]ѡmuzXf9s@8 _\&@l[#%?[BiiA6F58R@bg(}ZVh!I6m :D ^Ė+52=JM3/%?ԺܰJ{tM]U BVAUؾ]]8]vq^g-tխP~fžʝ'H._uA3zn? XBb [z7$|:\Ҁm6'Rwy68ϸ{OG?so_u,1u >V`K:$i  RtFs'`_Bu\]\f_0<XB6086Pf >$@I6/)[t'.I&0"H4$/'.@[PIdyp{YYhUL<0/ >J}O}x*W.3uK[E3^V~1ӻK_ym** ,smwp=f``z-BfftՃ~TQhv\i@lumC~9!,W%,c(v.aX6>CF(@sI=\ΟάЕO% JKAF~թSw8u~jk}m99]!>m_@]A;?P1] . .,9*/RX<7N c&,~s1 " ?GR 6&'F=821c+ I!],U7.[!4GlcQ[.@ 'L;fS RS,5?9fiugb|dp},aImR? -d8(UhVնA/4K;4&Qddu˸DC\(@S9c,Ϭp6i9>z;wfեt\, 9ƛ9S(b}RutlPTioc~oږiخ%fhdj(kF `@T52T-lpԬмyost8>>ҘZ͟pwk~6bw|¬0SB Dz`SR`!1'i2a,3]%$!I=-aHH=XG $F] ,utsfll.o Ŵ]8\ i7-A5RR5AF  09`7[JI0 =2xbZ; .Pŭ8]&b*#6I=&WI\+W|);e+m6:'ɒ(׸2SpsGRU0̸Xvv^kb{^BT/Aus'$@cm8ozmUGMlKI6.7s\RuQ>zoU0i`BSgl>mP'IR=?>fCTVCJK8HC"=: ++T3_>cc[yLTn-he.{O~Zo6RKy%8EϺ \3 804GI {ΨA.]`=WR=sL a"?'8<Fc×ƾ_ZV`š >l?Q2$3 `zF41"gqjpd3LϬ?i<_ű^}9wa]1 $u`=,'?SWe#@ cR)C:Vh=:TV:/@1!Al-PIF[aaK 3R=]'K{N6IY"V;G?UF)2mN3 QJd, v#+Q)'6xZ %eD.7J;HK_F=/!xM@xr@h%u' lB3#QFrֻͻ}RNVzR d-~t,ktD(c,6S;Vo>.IN5UzXw$ &DվH|KŲ彉^̕E*^}.NpUe(1a->(3!p{KØvyK!*w^R/=)Z''$t#28.#W*H]8NVI@;*["T&"D=cB9R5RXA$3.+7&.&m9Šc % 3%=0V -5%H "H / ]`({+f& ]n@ 8F$nbd^6st;Nk_zi!T{V иӻ /_`-]J$thdYN ۂa`A7VGBl"!ZMnQVh#)^  5@ /z=1z~8BsutzoB]f 33GV%z&%%'G * C (9I F6 7х} 9U->f& {n>BB%7t[#qµ˼_=5B%?.R2qa*AԪkCR3$ >,]5cvMVNp-%7*0c5K19Wq0ʖ%wH>5hbcBټ8BgPII'*ͰкV0 Q;1/#=Xëv c ȻȰΰvO6#|ZtՇ@:+>lI3  `*B4:5a;5"?!-R3*9D"( G _R$K(7hj;GgpN2ItzK܂\aY++}H=IH&1%HK *6&^#Rףμx ,R>z-y{wUFP2?ٸ=W7COTre)4"/Z2\;bCR^ ?q%:lX5C1 i=>.' (;W(E R8v *#fe<27+$$7EJ%_AɼIw?J[ d7]9SFd[Kj^kPei1r*2R+:V 'L2'R/X-/Ul; T aO79;`%r ~PtRk0ۻٸj?M,/L)IC8/ \iU/ 1F\i3PK#8 k.C3(}tDAnk)-$V{ 7a1/kG6B/, *8'KpO=qH?YIDF 'q5!5 ;0d+QJHxHZ(:YIJ%qqx2E,YEp;!U+o#B AQ8\;Iű 0̹[QaE5v^0>,6bqZ=1Bo Ht :%Sa%4*Pc$7W CM~fBB]R.* BM]Y.r<=$t.\h`D#.G<ߢ3!,湸F_?I;QT)}#.`3a]Bܑ+InRb7EhjvyZ%CAI95LHhNc@*~.*L,%}e5bCOT==Ii.q 9 Tm gWs:t@ [BI0³̬8@߆I%uik.|la}prjU-q.=@=1LGW ӱH'4ժIgVxdp:咧+yNy2e.ybEЗ\r%ˏx?vݗƺ|qSoDu]紎թ];:tzzp0dSB&$D޾ܾb78hѲ5>L߁Q3ex6JyC`:% C梑9H*O¦},7 MbU2Jm aH?_L:Y8=p;g]l@|a{8cV4žg X (&y!iԈ9J%Oue&-\ߛ._1چqaD7&s`v9V~Z 'SG_4B/针鷥Uǧgn2M-gE/-!!bF:a;RZRaN6ZUDR`$jj?'Ȕȥ8 RY! M|#p-O$ _KŒ iP(thHA*;z@ǁ@I}0X.OBno|QRa2 hs#[]df̩o)sf[{F&]bQ8!# }]ݬ<: d#h- u,uu bZևД~ \iG2"SA{Q^ʘKō1`d宨 7G9qg8+diÕ=u ״#GujH8Gh[+(*Ӹv$ElX|dH Tw*@Ꟃ+xLv`&cJ}Mb,ʂ) W4S8~URrcC 2[|z:ozO,'.nX;z6(TU"j;k#y\+IV/WpncGu0Ԭb/LLz<*9S?XQ~]PSu[4 ޟ5Bի. Ձ*BPkHQUث,l&5%pAo[[Ơh]~:?||uWMXWՁ/\岢s$a<|@6ˌFE7" 2A2AevNQ bŊ GOC`8b(K<-%qqÔ$Ṉ͑㲨?kz}ce8A -6g̫6, ~շ_ [I,淎cj]a4]BHە!&'R>\~:?q)v{$B`s]ޯL.SW󢖕 nhD|$12  F5Sj],;lTO] t@ڇ#01hbEHsJ#Ր2`īc Kda `1 :èTGσ<^Fʮz!4zʁPhTIܢj&MT/kI}1A}/~ٴ _/X#;CpُZֶ˖gUZb+Oc)tĜ0ׅ6ɹ *1>9Uou , l (˺ye(kБ?XK6X09`/ K{N k 'rwqYJz)s{7{(wwqN$-qY:& RCHUSmT漬̬y4KS_d+xXD54WDI7:rHYDOOOZ[ HSE)VSbF4Akh~IY2%UF C 5kl+dK<{2^#d#G@FA2#?5]]h{DQh^dű]`IHcIuR9P (hr*o~bWv[00b/2%r{aц2R!VG2G$ _ӻܹ  M n @VUQJFvj;z'wOYvj'FDaLpk:s.; (nBU,FtI{<: *"(^) V2W?J< ,*EN(rRV.pDW+ivwgp1HR*2q*#<M:8^=H<;'IU^•ggnR/[bۋcTcɺ{r^t\?~/&m fz_]wTi1]czmBHmKc^]uPl 8N.1sS T8Ao=#0ASS8 :JjE'bnT6 Tqz45goz{Ore|rY++2zy=Ny # `-? 2Wwpd<0ijGV55KgW%0>mí\ i IDAT|.D RKNPp̣ W m`X0?u \i_*90B_m0 9ul(\\z Rl]'6l6WUi6,TZߑE'gx*Sf*v;/7at 4 (~4.~4&G n*dv[tscUz8Ϫ}ED2iT L!SS=[͂NC(Bpx=M{< *ZIRYG q[{Z ^ (WvfAlU91 oOS$/K++J>v=x8T5! "%R IFĭ]z?69eśo0&ʃeg#UhMGD|i1$&Q5!lAH0~ %C|ߢ'PSoBX~oNSRuUP]9!_3 l/:8PuR49ASS]>BuH 5$x+v;?64[4r}>=o=p)t$էTt\8oVmX%<>I>U;Εb $:;O Zd5NX @ڃlc?98! jJ@7S2OY;%=63jI! ('f)%q V/W,QZLr}nI`;N*Ye;{@7? %IzoQ d=rIRzmþ㓾S7<Íf4_-xOEgl]COWdȸdo U6CyXe  `0BX_`B]] &G3uXi.? GGW? ! t!A'uSUǴtط O#64I=W/PPL»_z1ʏ$S3 ~m"tPj9omPjc_/w+ m9'LSTk )XAPtXsb+odNj( NjvKcRAUGyF> ^DA=D$7Tm;(, ep* ?MećX ^l y|ɘƒ0V~+:e/z,eV{:J|k,U HhP.vJg:AIDJC~ahlD$2'oXeJa> 7%Tx(LI[7թ #| p ,myz{Lq_}HiLQ :zd]d&ccuhJ'}=Zu"5Ĭ[Ae$h w8M/Իdg )EZbU|V i<"fZ8Mo;(lK>+%НyI/-*)!+vVSSLk9X)6%%JV )IVeJʜ;V>T0,+֖A{MtJ1cGH RDO.u A3?.޾DvˇaLGW'}$uC2E\X S 4Ru QvqPhNT@bTcYeTA 3=SvׂEԜz]YIIH3n[ԀQ|.Vv߼r sDT\i_)k=aaXIgOeW~)}Qu9rW|K"ѧ7Ȉ01sa6THoAor״Ő͍Sp,݀W(8>$'rYksT;d&Uv$|&NV vK{Ng*aTQmi6huDse'd)S:sW[o/_VX380!D5ɨJ1[~)X@ xx txTϡA4ו?(p.1j2n1-yS ΓJKtֱ~4kl6,$:l˷򜵶`*}Lgߦ=~\x}Mkj,bx)}p&Bm؝r0~A8ЀE j $OBWlJy#BA BA =8xOfWsĠn?m?QeZ+rj/eH3 <#(\H -0}X ;ps_Usמ_Zd/=CٓBo(R{XPjH-vYZ}ջd+c^Q)q; 90C{(PZo)4Vlx̫Wea59SkM^6>rm#qޚ C`NhE:9JEnZa=Q2XJcX&zD-K1Eɵ ܾskc3%6ʘB1QfJsEǡHM!z9Eւ8TN]} `ه?)z.p V^Q @f$.㝫 AU]S:x=r.D^˲hU"@rOQ-d5-ٓWfCH^hp*ՅwHagmp͖c45,/t3pC@m VV.\Җ1VvD;\86Bc\!'SlcSc@]o]9$sm`c&lmRmǾPgU'q0S8DD`ssBBSX`zB6]'A۟ߣ %/K Xbj+jVQg &$4*b1@gt8s1M3=K>)Jl\ W@X aPw~zmB3Y}ȼ;":B6tA!1If`IimvEh}Ln(g@iƅ=he l7,B6jE 5F=TR,;G3|KGD}Zo{rN;N<0@G-K,V^pEQNFi~H"]>P\RKaF0FxC$0Hmzs `-'6locHSH9Hf_PAA0550> tam S6`UAfy<*+ELѷ9>\fS]S8Y2p7=%4$Z27qr/7yDT oV-K& `([zc9aNC'!SG#Gm iPA= zHdn# _H8Sfts!3`u 'h*-j![ =X MX|ri? 66 !0j} nCC)vT'x7hٙ5rD7R~) w 0Cuk4|V eRx; 1X 1j:?9[&~mi,9'X 'lX tmc_P8lB P9`cfS>sf=z~i)tfՠ\;18fX9SAAS`sc:(#I'MȟS9M|L0M(/ZR UNP.7_9"$80uZvF`";>6 XtPvNԒD*Am&8)@ (A'OUqd2/'<7wn**-iX2imI'Gj_eJA5HmKD[^_#h&4W ]x#D2NQ-I[(@ ͂*T7,1 ! %8!zX'SI8xQG9'Xză ~u?uoHA]X >  2--ZZnc'XB!!_S1=fm>Uo Ff_zf_.Xt!@fuo06B~[be++VzZ)hϰJ{m=qO֢xW`P>l  6[7a>`'^ ,m?61n>2ZROG"5`'M f8=6s3&luOE"V;GFrCt{Y!  QJ!-i(** KFF`>`0f97 ffi(13*e(:'=pq7E)DEYvMY+μZ긜׵3"&ؽ9F\]8`"czosH>ueg-._]0c]>ui>SX$VkF$7G|=AX9P]SmJl>9>UXtc! u2l/3cu\ o8I`z 0cU099!:{QM2M抣ϼ$gZ9)YКN͹У6"`c$H/%F@8ҝ+ \DеAuiIқ"N\S S҉pEDDDD< 0 D P4"A(DSS<<,v[ct˚}l*ƴlT?4;+>Q!eazƛҳ\|Z 0)(aTBaV n&mFd.Cf鐑+#T;$mz煘ԬNA"zN06L-o}# L>LL8ڴj2dqwי_~OoV -vDvG#ɂRbQ ahnva2.è[XӠDSB7GhkU},Eo@PG:"C _O& h۳#yA] l]M :!tuPnT&uۜ8hZxcFnWg6AZ0۸թYtsuwoudv£[\_ f2ЀXVZR}x}@p쭸O0ouI5j; IO=e f4)BrOQ7({2QCuM)Yǣ7rW_yzet{+}FQo6fi񘟰S4pScujG*{iBKdSLf3FuI|ߴ0"Dq %O 4Pok](xAclmzͭl\n>?ݞutZ!D|PgesT,<`~##w,\qvͭ2ʗl\R( az-EQ_tKQhRP(zJJa1X1 Cm27) U"JÝDybmzU4TAnz& >m ɵjSw߬F1Y~B|^%\c3f8l `)ɧybH?;qb׍[ Ղ0t =/ DFxkƗoS ЊYh)tIЈݹ@Bbw[[jCK88ČD[)Jfe+u,l`~D3z4w̕&5?S}ZV VO,7tş&S_`uŕ:X{8@$HCG8EygF{^ԧ-*#M^^Ӻ/sc~TBꛧ %3wGըۄbHI műԓ-=:>h%D% 2i; CfW22>BO=ZxDrix@Thpt+<(&+rT6_Uf@F2ŝv9/Z%ˆHfin) ) #$q=Z )hHK K2Cɋ6fO~6/iE:n2gYBEMHӕAVXJ}tuP MBx>GoAXaQ865M%;>n/HKa)\>Vc%Ȉa\=a|i; :8)o.B@+1]OqߵZ>v8IqXY.%uJ *ן8ha 2 ti+( #/3Gn_P:B fB5meLsqU]p"U?->^ ? ÈX`NvcAm)Rt$aR }|i5)"}n!%dH$r#""w q8*!mERc]%UZ=tkj1]mghPl(՝{;ow~o} T3(!1qקb&T[8 (q_@k7#2P N Pf;ʤfZM Z,C')/f4X@L"R6>z(X uc¢*JaU02@Y쌐 n01k'G[>x?~8[;8:=>{N,W^nf+% -3t_{0d2ݸ#k1jJ([!NV=8By]"l|o3w-RzlhGߩ~467-\8ҾF/qgu\P8RTC8g~9\udO9T&<]+ (<Ǹ_!ĥ36;](Z4|QY>Zy<[R2*]=wwDW׬7 X>ǎ >k]=0o8DTז$3/'O tY9,Τ3"iH9J8J,TMV ܮiFkQ^cxPjP"g)^SRCLM]sr yo4:fI:6FjkջG',4Y~cpqq)R{Jt`Uos>H4mO+MZ ~ x% $J35 TSz *RSGnJ籢+Y,܄.Ғ{ MΣ>_VpP\|N&kZCeSg IDAT⨅gi.&D 4muݣS DqL=f,;Ckhtz u2d1c#;{DrW[~5IfbIEafA7  :(6]G/zHyļ8n p{ :gG]ޭڊH9 `|6֢ĨPtlv܏ѠEӸp$GTAu$HWep(r `C1%v5̿'6MNN ,WכRR,񿼰.mvv>x6OW]w}I`*5rKS?.kP=`!LZiS`SsBiE` &_l\"(ҧPWЇg7"6FP $~%t<ʊ:tz&m HFVf`|~#J|Y_;"U5jd<ȕžpbu|zm˯|1En95z>$%pBD>4H"CbI@Nss3I a}I@df8'ǎ'&&w!Tھn]ߺOowW&Wt)E߳aغ )9eIeCaqj{1EO|69>joh_I̚V4-*)B/QvA m7fUiWd^,r%T4IyȄ{ŽGqK-MeHI˕ߥ}u85W翜k]!5O`:=Mc(=d1߿$ @m~`m]ѶN$#pQ\-32"Io#!MJ53]U~$G=V11;wL-+3un̵԰w֢w*Ɨ)S>A\=ݬz~mGEydY?Hz6m!%BlK89G_P9i1O)7 c]GQ!<_? P 6 z~Bl@Gg&c4=1H*L>2\LPn&nWB N)N۸|yhWWQjgytÅBjIfB"7R-qqxlt Iog%IVe2#{&.Xt? zi@oJsTQMx\$̻͎ѿ'6 ~*Dk"!a"; x =>?iRA/8޻g^ӂ7XYhPF08/"<1 Hc8pԬוrA~!~i0[1Ĵ~A_o_&,1XU;.c>To<) aF'<.d@`916aV8mc~#-T7".5KH$"%N:-P }EkY%;OT5;0RdwɕIQ׹TpNc1RBS3t5`R'VA39f#-#SIw^{xXciP6S6~}N6nVT&I_UTŽo=FVyL?v¸и)u/V`6UdžiPzP)Zall<:WnMFP<%9B%K>jޣ⬰Fe7GRM09P, X8H;ޑ21-7WHm dHf Aqxn$0"9_i AH'fA@oOU]YZ &7/4V+D7Gp1;%G2Z" iFO F53%6C3T?3* tIZ$NCQ 2jFvC*[`ZI4xЕY)ɸ{ת+Fo9~~v 2)G}5uf!POR7~.$KR$c  m!'ѯ+BU:)gNH@aBi;]-/nRBJjϹ[_o4<\@i7=(.%Z}*24R+,`i0)g=IΎ^Y6~`vk^5a;RBiiݨq<.A_+$YkG2aw^Ww(N+:!B??[VB_ oc`iY(C"&Q*/=V@8 -%"%G0,/ ti0t t`RBB6_V4? T=)!:.CG]!EIThɰvbDLD¬ɪdNyj4@us7B)#vn]\?@7[_FL!z?dgp2KX li/%I.J*;tCU,CG9AW|ZxiBJ6 Zjiشc&mAo9Y9~bZ a$6!G=[vLKWŔfu]Xc drGEQɵbrZ1/`IT%K28DbGZhy}xn(V:[ Rn,B@z!_]l4B]# X1?C=[,%?RU@%fBP]Ag i*L#*H*kY]+pT=EEC/ ej~JD׼{kjR޸jD£W6/15z9#1rc6Y^?iU\yz]_IS+-9K?UMt-8Zhbx Wms/=0MQq~A6tq%Iato!o~0U+<`B#*8VbgE^‹k0\`]']0m~8-h+<+HTp/I. j^7=4O$5yhr{aCa@[5?p[T$G~X'n@"4 [knR$Q%,D}c5<6Lb|}!cL!'lzB]] .>=?X#R5$5z\e*}dxeM{wxӣn)WGl\ S9s,iSr ܠ"rx((^(5BEQhLl0MhfM&n;fvwfgEv?3,tݸg#.>?6XJm>f_zQ*/‰O^jo99W5LC}cţAKj|+elu:{y9 y_BW0hyAT,/fHu/>])cn&Vp`2HUBWkg5Ӌ/S%gv: ٪i;gbsLM98φI҈:6 ڨAEB;@QH1G,`LD߁#‘p\O5VCL)Ifq^rޣZw ,|@cCW*q'WHEC Fk]ՕLKҁ{MbPsII``lS`,j$f`dFj_$q[MAS9ߗ/u?lz4"lA넓24ccΆKCD7J'9Zn×]\Bc =}5nb p;vr]۽Mb==1Վk\ 6j3J͔A" _lpU]fKz^av`|S]c+P^mVSYК'p7z4sϟ%džn&u4؟;P^lG Ւ0R~: + rN[?"߼-f \ڜ6V;(z ="yuBgU.$@8]I=N4$sd_K:|\bP&jE*m],C'*)bi!+1:n t$lC |9*rJe@P7$F^AdlD7e=]gŽj\a:ZN03}+p>.NX:/ 8%6uT>°\U]yo-ߺ;T>> gK߻*BK+E~̩Ůlט RC!򪠅2ʙiJըwdwec$S_ m]O6 yo/հI1Wم=A!Cl>s}A0>qdPPmi"{~Pv KPfȨ0jG'V:8D+ؿ2ֶ-[, ?{H|24P,`Gj JTmZ* SGgH驭`]8rsTtl?z9p4^K?%n.pp'x!F=^Go iJ\"2EA@ؿ*;-ֻ\o2 Z1#_Ŀ{˿pb -ˈ t8:X`.c_O\΀W.}>:]7ɳrչl0FklX e@|tW[=LXE.a: ۣ4Xb3;*K w9J8iMݑeiu6m/bf72 : Me+C{5k&GJl"$dsĎZkm#΃2 ƅI(؝oMY}'Vٚ q Φb.1*"ꎡlzػXsWOrozM̌QIV] O:w{im<Ř]9 ȩ |:fB2D0{bED Z=?e24C /ëbP8c5(\dͶp#cNL !ȡ"x "ވ ( QH]kMͦL6͇_:LtTF}JG1[9LOO48S} !9wwaYNO|m3=*l3wzu!w v#!H^Ca Ƨ09:Ng(#̀-97IhsAnov=D $VetR-rDtq=> $óx-*E#YHJ"fhV:gW欪ޗxtaZdM CW|tk:[5ov_,jA_`Ë}-FQba̎ @or[J4<4z<:mŹ?`6ON~J"ZS5ywiVVƒZUm3Em+rBfYnίgSvL`PՄifO]Warnhi%0AE}=\0 UBQF-1'G8b&Ƨ ȩhhd ]:hTpفhhTC.tKL_39|W̻xQ޾ݦ9tuoY㳏M͓hA3vn<' 6=W/(NPJi>_""=.ĆSi1+y>CٌDI{aF&n:SIkI}1{ó4~'EZщ/PdI6g5NZs-"\.U55-hOYdGG)0F_*X"G)ig3JTf3.ǥ&Wݹzch49n^fLWK*C3+g5bGj̉IS#&Ojylݲ]=0pIV±Mhtߌm8/=R3ޫϾ)%WZv%tɡ爻cĦ'ԇ7_WX* WߦT<@q(SjwE@鎿 cS.d},,|R-e}ѹϗ ewd#Z9eq=^e5X 5԰ tn#VebC!c`&y0a20=-Dg 2ŭǴPy[Q:*7 yb׬51@c|5cCiC&쭞 KL/g,-\)yMaC˯#vZzH^Չ̭6Ukm/azVt)ݬúhm"8؜2{Fޅw.8ҔX DAyMk1Ǧd*o"!@ &^}lRNY3s ߑ3dXٌ/r0Uv+ 8 rKCEPA"((^}&4kbf1v]e_݇GX?[.r OV_>ll?"е&bT8?Oh`z% iUX x݄E,P7`ӄkGOjݡ#ZM3Z/ D<  ,vSZ *4>Vam;2.MMov_d-|qql. =ڲEr.I=E}<#2Yj_2,+Qtvjρ{I9t~#Fʽy8]9ddȻmv|`pţ{qj$cƓER)ܟON P!ϔV &OȀ F1XX7w*ĖYˀ"+lڲ0"8/Ȯ`dHP~^WTA餜4ZZffT?M-|r E2(YS.ya ꬁZw+%Qf+ }o)zه8\͑7wϒgBJRUk8qK[7,0 Mg!jNrph IDAT@_T=&T SMlqr&CA7Uà%5`T  N}vwOPM/Cc2!Ye =1ۏOz+"@aTj.ӚK{ Gř3b;2r'!+1Q؆*FF꒼ *&{Fiׄ<3vޏ;\Hxݜ]0?9,8mooGVZ^3d֚5GOdU"\*B/e P(H"-bj8 SҳNX{]r:b#|±ּjD6݀KrehV r^nDmj~̳mq^ 9PD!IEܚ4 ]J|,񿖵GGsߎ9a4વ|p)h.]|e"e[o9]Y.btCKxR82dyix ߕFRU5"gA,͡N>&&`Vw1Gt έABN$BtZuKH dZf9E쬉a6b[q>ێ~b'm@D E9jM l];i2縲Uki1S?yb 'Pq;W.coc4[x[Dk/X('Àjmpe2>ƿ9b5x5"gFĠi W,t3i*%hiuB;)\,>$~1 gs02-H0 +8!a)&btRdɐFo:Vn*g0MӆD+\#Q$OTY C ]ɞ*ˇ65eू{~ڬzHv͊QJuv=/gRɌ]!5㯾;kԍ79Py3~|J>_JKHA |Z|' j. KyGqbd w;uqZ"aGr^˔.ˆB\Y&!3ryQ+{n-$z@o2#y0= av}=~&>5R~hDX6eWƭV4 "-RHzxL0g~E.#Q=* Vz*Yvڈg,|*ڢ3LZNac*~4"R2 >Dbvu%ًuP=ҍ =~WNG_ A* GWh0{Z} C/;?̵ BZ CC@ap9y)TMg3ƫc֍mG-=:K'ZUbB6anFE >xS0sݸ<1+'J s6TXEԿ~"{~;C1&>L~}Ui!Mz" W [*=ϑYGlq]O3pᣗl2S;7CzѠ<pG30Z˽ *lz TpIB"g'-=xpB9[Mk%J6s7u>d+> pã<^eCW0beBp|;5'L}7psLJ4|kDҸ`s6;y>%t6?G1R>@`A=傒B$}Xb6=?=yq^M:,vg~ F}t_#+P;o4@ƽѬ7$&s镃I` >wVЭKN#79*(S6  4O:Op15uc ?fC`ܕmDs`6orZ'샭%\xnv.g}G7uZvOf\}Vn=ѕdL9r=wTKo V9R`CZ/34gx?}ؐԍ}!'J^C?Iάn'>[9< HE,ڭ.<>Z7'd>Ozq-FC^$F€W$7z[%f>igllk{,1`Śi= `w!QGmiA .Xt".͘h$NyBzzWЙ[/M8^VטQgpDr7bc[y:6b(53#Xl:^{sMg +5XXCչHbĉ|t#ksϓFF\J @[8o`"V./ˬ>ҳėZ>Ow)h)O|*TNPŗk'ʙ3OgPfT lھ7Px@2Ρ/.gDY36֎QVOl,ICzQbD-4h7x[B]ŪȾz{iV+9 Ov:9-x1%*$Rrt_}l%(x$J.:DJH;>vΝ}u X} t/`mb 3EWM2\-ks2(HNOz(N^7M;spnvik Td&B̭,@ijȮWdUd>5=Z Du;_ftIM6j/;2 totzi»N{\hw^s6j~ AHZVr]UH/^"1ʥT+;!tı`F/7W6Lmxk7=UjxO-+7E;w%`%3O)9컡vUҵ+X74[l@oʑ{#@(qRbNM8ZvR(gU)ӛ͟]kZϼ ne\<%(`(ܼvE@8C//+U [-.?BX;]TS#0wP gΗxJA=g*.sX,VΡ&Q3F{cKkHV-DR7dUFP:QFpʯDVDɼV뗵Ē%сSLnk__4QnO?Y6AZCc-ω-ܞ^Z(Ne7/:l2sG"ݾ1f{T鹭;/^\0|n>ތtH+v%‰tI wak< Z"KUN=<8.(vm[.o<@mכÁr;'@WY,<$7t27YroaPN1,y찓FK54NX K&)N֚YReƜm}7̉TDTYGMPUfvA1S-z(8w"=R,6gװj5$δ93= kBۗ9o%HF/G-)Elfկ7W5YTmSVE͕@?}a|O.-=*I sSjC@У1Zj eI?VIP'ǼTeV"X N$Gdzn\]n(2$QwRC^*w q'3)ꪞY{A/j" J$T9tg+\!JGu'L< "Kgq4܄ !q+5srgMw[g/i& Vr\Ӟ(wbf`z~:|9WHʌb J&u1=/㕸Y\.C,IQ@)o$j((^Jfuj0!nhTHKL#fS[|*x.;1 }rBibk cZ KNՕ}1 L|ƔZK?h'Զi{'矮rGOGn3<;>j*fe6RH*$EDT8*Ǔh{LM!`p<&t;[)ZgIphajJyQ+tؔ U[Ԉf?9<:AVGKc0BۢjH}ظ81To=i%9\XD8G@ E)CK rZ X`ڒn[5 -YC/&vbL6LM3y~Z^RX'-X ߫ێ1pU'k)K"ݩXYKS02jXʘ:n8 KF] =Z7+}du#ὦCsK_sBaN*o=5Χj$w…"X=MD>?=:<*%7; (KjN; s`{ Yl2y gwlH0Š dP08I%yF( & ASp'D gX JchHJܥGŁϑR׋? }vyӓؒ 4a"@42i J0$ y Ӕ~kdx,aI!M_a2 u|r\o VK3\oU8ZMt{I*xS8je3ՓOI75><ڮf. Ȫvyg#yju D8*a٨NOXNǽ5Q />ȚAy*÷ /ߜG/.d;AVl~I-t|*4)J۽?O׼_$H^d{Z` v.e9#0b<D>׷LkPkШ()m]1o"T &@ܒ[29?:3'?8 c!PL\F:mD[zNn3k5YCܳ8w.NO8oQoXlV-JLaV$M%aGn\ϱ[]#_u.V#\]s ,S!y$Fn %#):艟d?wEC4I@B4] [*[ZI1DV9Oݔ`ƪјCꙋ Š{x@>xքh(h-866 )FJ"~hO4DצC)(׋[]lmeιphl+$C{zoE0˶]4I= IDATEy=q820 x߸tMSggߧB^4<&kut%/n'ܷzc|41>^^'X+}>=™ t$ȿ?4l3QWAuڣ[=:F3k }(f:UP*J@H(f.Kwv}=جU^9cRFфSύɱx"g"q@ԇĊx͔ܐpXI Ϗ/kS [SZ`M'\ pE4b0  D@ 5 nl`K[-]fqӡq6L43ia;S:ߟt䉩{OMwrgq9 yxFr=,t-ӿL L+?]mۿVlOt6{ek t?n]gV̀I(b#t02U~17մ%U+b<@}dm3CG;i{,6b'),a7NbYs6,mQ~Fgj*CS^eǮn4Vqaz;^z{[J~48K s~0 \W{ͪ kvx֓K)yJ]SN@RH͜\Xh29tO/d'wϾHj7>_gyO3+!<ώ 7IއBS&SVU:3.X`gȈgT-ga+ gE|̆x DIAL6z;qDvLԭx֒U U(oL!qBg=+puGq} ql56t}Q+Y\֩K攼 :$lD]YF"X MB2gM849\C4()dUziϤH-.Z惡f{;U;V,kދ3٭gI.$g1Jv0;ݠ>`0/F-sB1U폡"X hZw.60 b'XVz!N[trY=M2D$$q>{/Y |* }2_%u12%^пoǧC#fA.㽝΁!yufL6K1dfhԝnm$A`PH 2dM'Naa_a{g'6\8zA \UKJ(JIi+#ƍ:4kxWz6ФO14c5f$QbV&+ ܌WUI<=<(3o}3NMѝNSlĶt#}cpDEO=8r BY;/|!S!j7sk$CZ<-6L $JDS13)a"@u-GeǕ|Wj+El4 f8\1T2qeSG._8wb>.8C/5,wʬtg% Uǫw{yW[R/դL≐aJ䠫Hhg's #-=bw˒ I|]^8jvV9^(sL) 匜:&:K2Ojn۸8wnfA kT*Vs *R!5皕 EJlVt#u;aGB ag ؓamD!&H;Hn쌙wwC;]rzo/v^jb~0`u,8y>@VTKݻz43"jmֽ7ëkE,po@9Sg" Htu#zvsN{="dL5D6T_"oDجENDh,@QؠlpƋ.xgp{w'v/gyX{}x\e+dK* ^Ҡ @SB"8lR*b!Q#CF8OmXs%+ )"2#j`2CO[xVj~]|5Օ>g6F lBjgDn~ GjǽqM9KHZx~ҶP BN JQWŵZͱ5kXdCxcƥ h%7q8Y[\ZLF4_(eZ%C*YDHwTs=;H!Yei{sŹCc'`7D4nAX{ Wv%ӽ "΁CjtiP̷y!6h^ǃNZBV>*gn}`$?Mo$t޹|u r4o}:qF?i'K]BeV\4ODT!Lz}P͛X0ψ0ͶȂR8<&H@#% Q8Z/Z Ép6ٗ]ѷ/޸I_?r)q/ݬa7s=bc""MP,Af2{"H͆=aa#]aEmt* 3^7d*06Z"8)giaq M OszQbj?/Y9*:~ <+DehXcN!%VJR˴x䵈R`^u"$M{ΠVX* חĝ~kh=HTw/XlFhzp^zY"xj|{U4\A$[L3 |鲄KbAa3TgZ.E +%j 5FWrHՐOi#ݪBcKT)&7'N 7vG"7 !?]ZCstt=Nkgp Ȍ/z|J8kK ͔E@J%U\jF~7Ca8pv6?n;V7yc1S Unp`ݡs\>@X\jc 0H h]y,X0øSvN aet7{uYud#[LtjM5h贫"s;wOzw8S[ih~iL ׈kO6y#?%J2'c.J0Gxd0,Xn&BivִBd_/|W/04TIHKr'!nR@Sb[c;SQSțhښ"ϯ9Ck M^kN)V<obL^hgoGu*g7\oajǾF#>w[t' ,쌣:ONQ°̑!ae6K&~( 2w@ GbD-GRK8Lӥ+܆/?5]kStcyZ oJʱ?¬i _lp06,<ޗ怲ȝ?|^uWuǃ=L^CG,loŹN)valц$5c2C Z-3$09j@T4orQdÐPG_ӂ='KUKӪK$< ozz_l%K GZ'iwἤᙔAU9 :jibX UХ+x\@DH'\f*`)t稄QRB<|^($D%~3q9 >[Ν}% ~!wkdOѿU&9N5x A}c}z2\R# x6x f;_r*ec.C.Ā"2{ rVØ6$LM%s~Lm鄷$}^ب!|Ƥy21cbL>>*p}F7Ҥdk0ąmWp=/c@N5CD ]VAא 2:17b@ K,rw.l/7]ΘƂ[^ǃc'z{Aw9V?AÃ͗K~QvBF3xI|^(},]lbX!_94  ESNQ\`c#LAHDbZ(d.Mt)PM6;!$5H7{x ^euU7F! ,Bjз)_sm fsLј8}WkW+AiթԆvC]OFf*9bHSyeE06E.(#;$[TNA:$hjr1&_X#Z0WvvS'ePdsrG{='7ן׈TE"zCfYfʘ)IrãcN 2V+* ɪ_9<~b}{r`F Qxi`k,L-¤` b( 8\Y4 J#k%E5Q:4L2Pdnt%t/bfeabWmT3K5uN}{"neiiڝPvBQiw8JRJi>+ͯ3a pXQ4CL'!;aҸrDe6@pfʟP q,\EE4 s 8z{ kNռ9n6EOwCҤG2*o?eĽ_n9P F$Y)bv޾0U(^a.\BVwzd B#$~* IDAT#-NЭmFqY"l2ΩR!\H)ƩTQJc@*!e&۱7FדG.׍sMA2Hm3-yh`ӬP_384;HzxS*&n8Iw92sN0.ы01֋-HUl̰rD:,w˱\4 h Ih+%4TEvE-T|m+4D+vx±hʌn믵%4~Hhu|ZRy n^ddbٽ`ļl~uy>6Uqք\}-ңy1l~ա"'ۖ-nM[TZo `"nkSM.AJM׆ƫ.7sM!fh~5p1R Mow!xNBۮ,ϯxpxng$y k; QnJJ*t#%[4DAsa:c`g;9g}u}bϾٯ-~?{H֚U:HiPT,"g4՜8^772JL) kД:կco5ӈ~u޼8rq݃rn",,0aIeJL*<Ҥ&ͮ.w緗QjڳHgqj uuR}w!- + sAj 1+Gl Y\[#>R&э$(jgnrcC!*Y!yb䖋} _ q΀05>CAS h 0F8 aF~yv`%7^QP?LK)]Ex)Q! N&,F1v{2.$ У85Հ L}-#ׇmn- }GK iH2&\S)h28AE0F㡟3qr9hg<8ObN>(yTiT^k+osOs{|Pز Ͷfyw|BPzg:y@|}VP2 +G(*i _ڰXI4F6yGH;}LϟHܓv4NTӮi")Djml'ڗy]46.kS.TV1*>\`0f GDKQH+aB"i[Fa^ HݿY4`֬р4~U9:ΉYUJZw/n%t-8ə!OwQz|jE~26"߾ڨYB+SKK ,)_[wلez^LiRۻ;Z6 `]Uk-1X좨%TE{Wh} zzj9791? H+S&9-{61]HR$g>R>V8Ye@%E OBO"ێȔg6}>3& ai='LN"m,ϦL -hkYRbaT|؏b ʃ !H}D$sj3O;cUωz)9fkoG? p=2/460[_!+ъmUGpw#{lµ0IΧ!qTsE\Y2Qy0͊) 7:Y.^  6uJ1XϏclGq~ȹ0> 3 "HTo ]8RmRKeoAſJ[d>FIUen1ɽ9͝>2C'Pn}o4C>j.znu2VJnD$;!3<á=?LG' ιCҬ %,y`Υ%DQ?S =2p9GR`n~(i$7A%LfFF,85WnK[eILCxSQj! Y^>_|}ous:"-X"'j 8 d}%Ϝm=>\.SuTvӣbӥc?K=AbYmiQYؑ$pnIݽX?JLe0x-3}3NBRF]W2v^$g2Iߘ,p ^[_?:d@sU༧M:mJ;10 ("9䐈 @EAQ ^׊f151Qx%[st'MdvL_wv۷x9EJ$MH ɩwik0 d#pq$RZ~^7FXLLl$LɃsWْ,i)SQfb^nPR(H!ͩy2י~ݽ}R3#P>7R|:>|IM{ïm@#BkoVᬹs{{e X\&0蜉QA`IQJ!oni> m%iIMpP4eQXzթ Q@ֳYW7!6f2 :|z]_@.5i2NW._q.jK_~EG<]5(( Wݮhp(qOODXpBll^2 ŰT2#lLJy:a-ʗ,uX4G!Ŵ}ە+6Z4s\䝙<|7? ,mJ}?>fOǧ֮dB,&h߰P^?f@B3 2KXϥ3>ԕ' 0bh#w6:= l9V]Z0Zd/]M^4DcA'W|gCI 4:8*ОN]3)1f'NxʡvBh XMjWonf 4P~*gQkYy /dtg22^"kb8ie<69ff7mFK9`RO-aTTf$-VNYyU3 Z LRH|٭.6`J-|n8jUxF_W̲1zR4e zI ac%\fF2}B<6];k~|D yQtGHhhtu46IwG{BiH 9)fee>ؗe-"3􎌦LԴD~>Sg/&Z/J*ꅹWζXLAM7ߟL-ƾ`a.Gޛ&zaws+Fo2pxePF\UqK_S/,VW*GK- *(2]ٕ_C\PNfL A[͂gt) n HdהayIwԡ^,}["hml.M8tŃpgA/^" |ƣYW;eL6:% v>Eya]zI)la U <̮m,DmAD%[k+/Y++C.odsba(N?wHuo7v]gǎbmQ@-bV`ڇsy4%PdэEZdFx֬'{M{t"ⅿ?8T+a6 Fu4Qn]; MΚ0r}( Pn/@DP!"(1FWTMIs4Wi2iIm23n7nҝi3`_{xj^/ {D[@j_Qf5YÄ;? TKdb>֒T5J2F;` J(In\G=H',lݻN*D7ˬx-kKyԝƖ ^?^U; SV#%t/-TX 8A${lZKo>u49q9xG;aAmNRZFBZLW[MQ^I"1;P5jn- jF9KuAQ2^^(vu 8!9Ct ewTGӀ0V"Au/j_\7 2js=K/b,z8R|aiq?)LPT)["+Mfo0t+nʼ|S1J@w*ҔKsBQ"~WN3 f굇\#/U1KdtvA*G8eSߔv?79k* 1#FuY P M7~1ha[(OhSṺyU0#/FRѼ`%uuG Q;Ue=zt3QH|ˎODn iL g֋[ngj\[:,X8?<X<5`D4+(҈z9Jv´j Zyvޥ @Qi7mmaX= ,$ l/0= >L\v_Q+T&׿q6b`:֚˗mպ1g# >8#q_H)-}fj~*QK8%e.ʙ$`m)҂H.! R<Փn.|y]=pΊf nnߙJI@D[9-:bx+ח{DF@MޅR :qXCQ׼ep$M2[3p@{=  BzuVof󩙳f"O5\n*J4;T?(ZvIJtUPrg>jg)6v1 S .`vˀqe.[ z Hp ;gWn NVz5?WzO>{᫗?IB1}2e +cq_ 7c$JR+iOt(6T>,7WԺZ+%=Rs1"˯߾N#S+ E2V)ԕʲsɅNMX)z,Ñ`;3I A!bAEΞF30n0Rɐ[\cQ1^Crhu1 fpס;Zt&YH%CQG16ɍ;"3_1{P2`R{I 赵#>-G?`4֏wJVq=߅sBDx_޼:Z΢:0'$7d!^@F$ I,ԓH!*JRjVEg:팎Xuhgcgzuކ>_'o^<~Tul<75Ƣvx!pa @CR'#;K9ʉesU~ Mߐ F B͘nLvS3ToeX艛8ٹL, -'İ;Z"M%-ryTP-7/ˈ0I`o<`eE SW`4[L ۙl:i C> 2XmYbxtȓ149_))~J!A7wВ(hRmb-< Ȩ&YwvExxQYMu=xɓw_<_m_7^o\zO]Jh\7T&+s(0@o]1؋ yC,Z\93:OVWSCЅ,Mo^iv^AUJSVp!)*fB 7r(f qf;Fn=z QN KRɈ6Kj6NCf84*][+qD,F— g:Qpx]zU-$}SǩfcI,XTȶ~w£'UlXSUcm_,L!go߽y/n{w^y۵?ݫV~ylV[ړDà=z?$s:C^Xlf U)(5XXו}m! f3*K їijolpTH(]B7-Wk AnqDeR#1$wR) V)zK.&liЕ Tqa+OW޿T[gg&.,`<LICs 21âW1&9GA|zD fmLN-(+Q *R~|^@?wWHNlf0`;'>3=C샡ϟ>yv{/Z_^= t()t-}{ԑRlς;#\uǗ}CsDS-THB)(9>q;BSљtd(,cdVC3G tf"%:OkIg2"J"8m4ۋ]-E0fh@ q xd,`P@XIFۍiͮLud{x>AC{4!֦^Nv PNVJdQT)F`A^+K;"k/=9UOcN*h>֚ǗRoRS).,{~O]}d-8X+e_;ggl[(vj o..,/?sc.`)U~Be c)?}y~ll,㇫;COt6eL *K˜V^BH89 @ĉ*phFn8`Ǘ"ZTzqj+m\w\uI<*EXiTw?9o %G8- rG/ u³m&#-+r IDAT8"R~#u8NLö rI҃SU"&2VB\Zع=Z?/n~}D+?ϓ??>Q,L|[j.#<-4IzKC׶[=l/֚Nfz[V9oyw}> {U5L" (bKeE0 LH% E@D qlu* x;A~'2`5tQ"` PEl*.(ӜL4k'J]1rj43WN 2 _]jc,VBNj I(=KĀ3]sD>JҾ,}cw_|SZݔ0ZGO5FA?\{1 {¼JhK fY6|.>ggRm`\J'zPqcSt2ݐ|eW x5M>sUȁ"ֈ "qqH$B$`Kpf\G@ 0.<C`F+æ$P4QggcITK"fXBĉ y;Oh/}z&b-R/ޢGғytkk8m7ꅡasYԤR,]<|١0!]{mL׍C#z鵧?tpasM)䇊4;ʙ ع=Y_ !ĂWmK7&*hVO)ŧl*qYtW&Ƕ@ (}^zr3j bV wD8!$4eFp*v%25A/iM~~hw{Mwoe0'kFX1 L?3P"-dHz~˞WrЇCXYZ+7U<͟s:Feoq~Y.d* \LU$-jL{m'=5{غtN,LF=+[[JfNǓ7^ 󶪈=ƭnX(&8Ρ!rt:.g*96 Mذ@f3ӓ!D@r[gD"{'h}uFŔlskSZrQ!*w<@x5Q$F%5Kj11f]77nlmw7әvfsfyydj뉱WG_jYEs#ߔQ'h1KkRft/;9U:Ǜ6v?c9Nza& SӔU9ߘ%?&lg[xדZe"tȰk!Խ٠)X PBO"]ms0dDuQ ޾ʎ 4:1y J -, &ۢ*b{ix4Fra G݀HS@õ<)D<-.m(2Y6)F*n߯)˥x'3٨6 wɭYQG-mu~#IQj|؛˸) dYW3ZKȓY_~|wg3?9(;/.ЮO:^tmq̊;kOG`e]e|%;cǿVvT )$nȆĝVVYmˉ띥Q-ڸ:?OU ^Y_d Ţ< )I D1DBQ+ (Br吨%yFp8jp9_\FA"TZʎ\hH*\L$Sa&F''ʋM~#M" x'Mtfmݡ@z=̅3S=wo'w3D3,[XDꥉڛW? 2Ƃlw}NKCssH)ccɭR誥hPMafar):Lxβ,|%挎Bmw#gβ?.6wTS#Đw%gV[SDkΈGmupFa|󧹥@fh>Y ^Äܫ__ GSN:͠qd)f7{N޼v3B:+,#2ch۽g'G:xua6:+lJ\"`If:&xy ?D SI7c_]~ڃ[h]PIdP :R`G{fעyB.XRQ*'ʭ"9`q!1Ht½R:"Q9&YQYޭOOq;-K]b[Ӿ ;qrXKpBHK:܊THi^T5F+PBd09,K>ل3iWPps|wY(جÝz=o7`l}x}- A11IDx$ =7Nh/I/8xA Y4l 4f"r1nt:~K<,Q*+Y A{-OH>=Ԧ\vqBUWVW'>pprpiI,ށ7/Nj#awdM6& <Íٹ0dV{ipF P1qRGePJe\b"BK0Ɨv_ܹ;4Zg}i|+^Z RT-sr յ S &Ye $<2lLQyFre%fX -HI4QLWb\02~!kƭ2[]XĽxv1qEAEf|Z4ûjw6 ,,]'$ݽ䎔\ٺryk{aI`h<"LdܰN[ݞ2!O8\7;T*څG#}%1y& YBL{z:36G^Y~y>?k\8 h-,N3Q0܅R>lMu^0u@jUuiY՛1 4f9=pVLLJűUWt'< P2YK,#@@hH^"y䉆4Db֊kպOFk[t8L49u. <%7k!^VEIb3,PODlxJYuO2B*cV14RɂN<ɈkxvX%mTQ\,$ABZ2ˋ>ypGb:W/5+ ,$ t1Fah3:xLk>N,z:xogo(0g+Q ) Qs#=!LDPtϰ"Da5fnF\’b+_g%<0sĵ8Ӌfnb$5ia Ai1e3̱CH¾j 2=Ppt::(و37nỌ۾n){fFC3v.Ji+rllpv@D9QI5-Z ŒS]-'MTr,xY.&DO:N<>}poz}m<!tP4 %׊@\(@&\vĞY_ t \~KaՑ {)& lBT9=C`/LZ#Nu9˪=W+g)F! DG$b51;mއhy?6iG$RlDE2Q X)u̓V5˶4v(k*+kcc;׆om*yvv^w{4]ِE8STX0uns6 ) "LfZG%Y1&㢅f :g hjj"Y\qz}Zݗׯ|z󛃯_W~PB Z'0 Ġ}kuy]7)[^{|OuIVX:R e'{`M}" F'Cq7 +L-eUEАrVu72|H]p,3_~ dcw#r%背 @\5.ͣPElO7;e#1smɬfYGGCE9\Ѡ໗v.[}*>rcw'|sjv7C.- N-_!I!ź*7ԴQ@&+* 3\o(SPJS)BE7BLt!\IL}d:3YÜÜ3[F}~>ge|y}#~?2;WAUh~"D^>t;]gKϩuw 8^\\>9*3MH [#5V2FD;S8DKBI`vVaj~;B,z~ap!6xzŁPl@J(k>E[LnT7J4TJI4}wYܷM7|OY bUDwj(tgcj ܖur92\]%'gV-5Ķ;7^.VffeRH-[~'<虻ON͙X(dxO;^ڕAOE(FADq%"ݣ/.ŷ/ӭ+ =vt9=ka|PLDFg!m2Y8jc(E"5K" ^vofaAtOAd| &"F@%شwSo"j}0[.e/BB3L]Gó?|yuhͶQ63t@Eڬ;:t&0 ^j{5֪ۛr:NҲ\ 76_-aTӬ~ $+e8 CH7E҂HE6Qhi"*%gUsM7t~uzΝy={^KF٧0*J#%WƚyXs)> RA%Y$dǁ"`Puvlʤ 5<~A(o::6`ftAp3t#3L) Ͳk˯?`m:WSqReYXEgvvmGKbz814kڜ!PZUCrqi6G v{ DP,* gGZjƅ$2wݨR 'NA,dw$d,uML+bӓ8|8OT S{GΝ=ϙz߃s ut|~z}^:\u4Krp~4dxi(_L=JIxLөK2Ddz j[ֺ̾ E)Qg#a7-oWx5S߫1~V rT((eird]l iRmr]ylo_V I #>7ig-0L KZl|^e;3$ݝj`2Ĺ[8R0凜|0ŤQ4BceX0T Ixm`֎z׹{x9{O֑ ۻ]v잹z\]=A ('WH^XS .Njx,',ʩ1$l~@,I|"4D1llCQ4lLX2u F* bUjWL,bJ~9P=ri1!3r k "ei-b*GbI:bŧn^>*ik S6I)6241fj&51(J_/*gRq~CO}.͙Ǖc IDAT 3Rd2RYHKb G<Ǯqtts͹sv^;6vov.]]Εw\ /2dydE1k]ۣ"PoIBQ  <٬-5ˏB%f۴/om455vyҎmdJUaA\}PNdfUeh?{M븳ctcĺ$341\&Jd4,-rd@EEx%!D; %IQaKV-yj]]d0g8ˮwwv̽9?0ZŪFS @Rz JklTe:>VRmV4~@7;pqjk;hLe6]%,U(uU#73%Kcq1!W0U6G3ъ=k2B0"z !δ%zM針˛' ?ZN|<=Z?vvr%27s'Z'p\kUhKT KV[D: JP^n{vY:O@*B_dmoZ,lWT ʡ|Y=|E,V9]nbPE!3&S]A w{X]Lq;ـ=QE\1]PNFcI 39LjI3$Hj ~YESgQFsh@Na")Y\a @CؑVz\}ɦfxj_X[]!q<\8GܷF,_*ǐxђNDGx5Opb-qCKG:}̋j*/5)N)-i4M߿hl1",8, Z8eRd32p6/Kv=*ϭ.?lM8:^ڛU+jyz~vJSj{$tm\qRJa.JU.uQ3@@힊`t.6OMujx16E%^}lʡ`6w˯K TT ﮅ'&U,> ^z$H u掼Z|J-xѝ({.8ACLۼIiF'0GV+#_t@6 Jltq<C;BB2}5/'ץ8+CхA֝'b?Ԍch>Sj} FUp?pW)g^2rڭȖ [GVD/YCD*2_YZ EZ2q$j0v>b]Fħf4Bp2v :P.J5J1pAVPe0@kO[9huB mG :D}t …|Kue69b~1qHlD7^kv89p^"9xN,qzy$ s)'F;^,,' 9jy({[S=u,^o+I3HU7-α*u僴1V<`ﯯji4%CEi=3[ : 򾤲/N5Ba`%b^g `|"h &F]RnM*W %<u~v22|M!:͑B~[N?z@շ=¶Y>ʆݜ\D zۿgt2MR~== ۬2Q$L:i9V-29ދ}2z\Zِ{-aDdyhyp&"BZ,;[;diE p|`hy*Bd\eoM& ݜϳ!q M6$f&킷P[tfrE^ĵqXDrGr}FA˞r4Gb-Lw62WN58R>%=ta&Dt}`Ee &jAo\珟2N ^W/% <PJrFtoJկf^7_աR"T|'n[⃨ &p`bV^%3]]ȪJI&oəul>Xp09{r(RJKYb)|TנDmӍfhVM[ܮS'̎)w$ <|˨ޒ&"#[sPSCTbKtIC":k$˔vՒ\͆F];6t 7M5@דܭy63@k_7[랗vD]p,"J~;FU,^D0'{S){wb*d}bF+( ['];,4TSwG;>}6Q:F?:Ny޳N"_xF*X5u*KAm)%:tsia0$ E1 @hWCkOo/v̙ MO͵dMk `MM-e=Zh"0 I/w%s<.pIY(/^k(ݴpn#[1P$)/h{5\ Wu[,˕ _zmw#~q:aP$.^$)ZL[.ˍϟV ߣy1BAG?faR=Å+0Ǡ`CHŌUn%ӱ|7 X\kЃzS(!D5U}$<]Ƈ]ڝhkg,Wr::)Ob5x &\m5He !&$OY֫f)-mV:~(9&dؔj(d^ԫ[k_Z};Mݎ񏯊-Hߗ>}^ =LpzE^FM<ƨaC-sLoOiラ(o0Դg@5z<4 \r  EE@AACKQQTDѨc41qdL]Iul&COW?fxM9T 4L (U{t!IֆwD6NVvsgC_9s4K,o<{σqA(65t=DZͭ(;n1b)$5El"רزH(me%|2RZz9Ggɦ#S+!4BJOF{} k=8ʻN5Ǧˋ7wT5HM :/;㢡ЛO 0̥k0DE6h9w[ɕsI֜+lX@i2Q+*+-=hOLlIDĄꊸQϋt7KfRwR'(VS$&t9.q<ɾu|d."=f?8t3ٻz3C{C52jܰDCG_z΁kiz|\Xk!xF@41"q2 Rjvͫ#ui&*R»ljC3:%Oǡ |-ճhjRL6 /XyRUZ(w/.bFG yKa*?w~߿ZSY \^)˨I Ӆ.!0I rX-.kny}k8&,S Wvn]QPګhCEG[4GBj b:AܳXbygKz\8Vd~:6 ]e:ݜ_N^,kE`-Gx6ѠSe-Ƽi;H 1Tֵ  |j߶3BH-U&IC4(9|,SE*\~>Qrؙjm@XqnTMwI.,,h" ˨nE_"ޯIw-wǼQ+aٱ"ygySO;KV! n*\es՗U,l$(%D8{҃MkB$sl."ZHj"" n96]|隍M{g q~يTz& sx8{6=Blٯ.r=t=VbN)bh ;gfA[W&&(+0ֶG,0bn U %_z#Fs.YȬzUiʹ@{}%}ǏGf-zQ~?j7V$Z4.4Ix>8 'n};1^diݓTǩIQȣMz9|;h:i+Lux`N'?u2ed(.i#=e@@S\VҘlmdI_h c;)U1[MUq|@c)r*}R.Op\XSn| EN#AA,b)34ͳ) tޛ (EtA@AJ MXĮ&I$tuy͙N23vfgvxL=ިVP> Y$`ݶI7k٧OLx]8^"kv< _ͽ^<ln` ¢1_߼J,Uzuq,fX)5weILEey]=j%yDshv J?Nf ҕ2gENK|^2sγ@Rchow5+:$ Ч'J0 aGOٿͤfD.=rp'Sb0b exu9j]CWQMZ񗇩ѧ''ۊc^R9>$D_ύh pa% م`\*BnI3*k VF`#attiZ`΋[yj?J^wQ]c,]E˶/~ŜGT1wwnc2n@3BK[3Z| #ScJ\ǣ[AZ ,; Lvy8h4 ,gVճ탣!q6;{V,-T"}dt3ja,- W2y}|Z,&V9|Sb-B&˒?vs1^{wr|ɐY}6./_ӽA&F8Sn-42c'*R?9TLHQ U+T*|(xI~T%?vlcCG;<%C6rCrh[W?L2<<ؾ$ #G!%Vs+hx/a;8T$D]|F:};١p&͵hDr9%2[(u jbO Js`ݔ3 "!(^K_,4dI_[zT*ˀHla"uzЇD*yQY Sj,$Qn@/K{?ҿK`*nD)#Bs[XPj+Yir].ki$6[M~oh'N^JyAވ'>2.'{?O֠<6 oB\-Ȝ/5D@kQX݅| #( 2:KX5 ǝw ܄o+7_~I:06 0LG |3a_ BG=fkh# k"32f1Dj|0|[rW+b[XXZO>]>>3Ű 0>Zޟ;{9v6UW1B[ĵ0!mH%l&H͞zA!6bP5J~3Kk.S ^YKj;QNɦ  9 5LP$l%+v`f!Ȇn]Dfv( osKV&tgt=NI5ܼX1¤ٍ.pHURLfV٪\ǦoE&y0.uHćF6p0rͬ1<ok;;.OU4[Kl:OXp m1~x5 ~"e߼~cb֣n3^|lP+dϫ7 N 1g&{ڍ;RrM7H9M5h] iP kak䐅VW?<РP IDATs||] 1i[⩊fME= MPiٵ.7C)F, zuPi&blhڇ'qDLD $A5@9=)耖xAuM?Eg@/(ܗrEAADQx!G11sh&M7f$ɶ;;n'ٙ}b x|1sݾH86U.%X:t!/Wb_WxCpB$9jgG'%(-. R"O;VVs왼p8 t7~rx5Yӏz%-}΍mkSbsY]-~iCa E-֭;(|հT<w׍:TkF,J*صA$BLܸ-spp^jʴ4b5udƒ:6D~OV# ; T+n0;֦0h]vEzΣX $ r{9(q"#vffGF3@by,=J4ˬ|==^xLq3$)f=-p6u|08\\L,%qq+tB}z'oʻn\ysO@-Cֹ>lUIZ0(#xJfl@ߪ7RBN/>#4 ~? =%@ Z;".Y $FY! cP`0^0j1@Qky_RtzQF*;T Lyڗ_ V`GR|Hkj>-~ޱ'F¢O&T.zcԄQE~>(ͽ8Nj#A $R'Rfv&3'־|TjOp¸=S p:sO~DUIW*3cֻƢD1I@3$dqe(8ǎi-9*jKYq({NId ^1QC=JlZJ>ʧ FI Ґ0f򍋚:z12CK(&==Qg[XQ/hz%C]&1Z6} j4lV0ɘPleۂb( YD84cg9 ;ݽT G2쨁g ?aϻ{;GrbҥRnsnOةU|cԥWXߪ0OGO!v.Bbt6=4R^@B6Г d̪|f_ں4G&xVb^e\oNѯbKq ӫv/_7!T[E y=GvCFY)_/)tҒ(*ِ* LBT"bbj/dkX8M6~g)1v@9̚N Ωr!DCQn@.Q9D@DnQ11;Y]'6L*dR8ybW誮Kxtd3tS @n6Ozd3 l 1{](:]}Wɮz':V7@+9£w,u=×LQq =~w>1z^o֗xjhLjrFgP: LaEFw%z}D8 9=*Ah[!ի7e.u8*GmEx_۞XAd! R; .b@It=w 2Gy__/amnJ}=3,3O02ӥo=GgTgk?WXC\.Pv֗gӚHk;#Zglղac"h SLD>uߊKF4,߱Z'&E|ÝX2=k4x >F͚|,&uKr:k@cz؟[cz_݋/Ov'dVX]ݼki}}%cP/h$m(Hb_\u.Y$.PIX)ʵNCѕK'@[kX)yD]i2%D,6NOw֚`~soA_UJ!)Ƭfڠ O@%:Obs@9Y^E#]l 6Gf޷ۇg!@sbfk]:`į׸Vy ^H>gh"Q!g.hFWg0IU#`Bg:KKAKj;eVO#77$3Q3p.51bҭP*xLTV![~>n_k)ч d 0:n/5r=7z.8_v$Mkꉥ;,]+|| BkqgwH'yGUG={hm Z r0dPɐImjv a֔Tz@Q;0ǽf:~4R07ϫj=fy$P&E3QۛrG w``ꗿP#Ha\q=OՀMSp8dҖbH]>y+v(/E`$5flzMDnnJHr:/Lgl,Kd{kJQӛC I~="A le"$Oeat+3\e 7_8v A=C@caVA+:|ƒ0* ^3Cei`2B#8"GJsAo6m$)Ⱦ T+U orcUoOL~)QV.[usԻ- JM4id {soώ g d}N̥E"b#ՍLi0)=.{Ӻkt7]{/_a. 6=ObjY/^3F=Iz.JMvEC%SI4099Ma[Χt*G, "R!"Au]~ '9ﬥoL}F}U%'& E,S`6u"b KQLkŗkVF֬36-OH2ӯeB9DVE>ۼjzoGhY//V]$͝d\[Aʼn`т6iidG`6BZk a%o? c Ed\LL-B.^!)lRָ 5Xmj'\g( [l,P[E+LfJ X2'KONL x \Q!fXPoa9]g"qJϱvtrC卵_6`,P-M*"^l[5L#v*nOH"@k)v@ hǭ33,۸-3;B"/6L[v~tו^}^42Wڊ`#sjh' #v>z!Կ-o޽=X]T*1Og(8KEIJ*lJ.VQ"pH+FQ) (vFD3-WF@DK'JKͅr]ei"C$㯷~6gϳA+2,7V[dqr|b١9'5 @HjG¦NYE}sf@:˰(Jjԕ:QTpc B/W0Cv9py*GFZ`ym*pY* (x3564rZ5ke($d{c}\=ى+75W(H<ie)l,䷼IٸdEwb-nM:NS,á?:\%Cd!E#Q; xTb&sR&Ok }zMFΎO5KFP֍pNǿ?flE&F|s V8Y;8ZX]"yV0Ǒ]xhF1k˺ $jl6Ë[+ #Y/G|7BšVzXGwegOOx]у36L3n)8yQ6|y3ҪHԵ4 םb?O_@Nndk9@_pرR])!xz>G}XZ3D(Q _.\.%f.Cܞa=w8{EUb%"E[RYh5uqD)e9nXb'~t47bѹPc>ZڵHdiX)`t)QT1QBT2ʐܜssAKrz-Zɓhl26#R]}ޡ_S4Oϔ>(?k@T@G6!<o  Cuv=so(ӶJ؝A: G> Zήgӥ"~2O}8;D*|h.3F@ͥM=fr&м0Y;$6w'>`^DDxc@jn2U1z8^&*dn[~믻\j"Rp&OBk.okAdCxYĕXB /m( xjC `z  c,X[ 9 5bkņN#Y5WvSLLԁ 5șΣo"U!uؗ7x\OSh 4b]6@Y},~LwbV!|=N`d V"~q*8>jZs!l>ܪG ![^n'L7 vNϱxyz`lA*e4]qYŢu~z#>˗/b5΀_r:VʭgX1XoI UJ ))`G ;F"Q6@$M{#5/G'X޲֦֞lv^m9Oy>/U ciK8LoFe2OOAz11481"}.{o^l8y,~w-ڌRH'|rtjM}^RNǪnEDM=v.OaV (ѥ1NJjpbS;c04 N`HdV"Qav&%jfL-lvU6T&j b&Uﲹ<M5۠cc#ny7njs@ x,nDfwx6D~`шMF>+~ X]_uSϦ7ַfb*V;uPh0v7E}[m2ė1aoЀ7?|`/85t^?PVPE 3  V9,(֩nD&HP"p\0#yy9< 8A(.gKabxMH2a02654>9N6:^}jV\`a鄸^CTdF\qG#T1e4JtoFWL3wNen_[ׯ]Iߙ O b]S`| Rں܊% Ce?=Rit p}"Ɔ4C2q,IT̸rUA;t1SKsKӽz7H~{÷Hǡ /~p9mUF^_8ƂW`x{%(8>dvPRACmp 0`ʬ X: `] 4jr<\ ɲ(]9(>i`Kj0sYы쪖0Q]$L/?iHd"5!($Eguy?|}|,U#BC $_|iI*HދIXK,/4|RHE5 j,Z9zN텒,. ti[ v%F ':K>^ݭ/<3H %[YFo7҈6l0<(ɘe·-Un2>2MWE1بb]JlgYtdRD/ EWf¼Ç;2r%p0AFd'TsT}1ƺh= G4,;Ğ] D{Ӌl8p[ :|h-\a MRG|TYhm)_idלâh\YlLfT'G XB8`q Tbo&C+qf gߺy_ݖTJa͓/Oםip IDAT\x;m3P]I&ɀ1$ ET:(('(ʊXb˥A" ,1GDݚ,L'g:ӸfLl9OSb!`fi=J̗+E\Y&XjGZhM=V)c RÅ.Kp:\]znp[~ޫ)IrūSsI,we'ۘ)L"ܞ=AY=ױkH$K7V,~gce>"Ņ'$NSS)~epsϷ:F-']? IvܬzSi ˻r.edLp&qK+/#')mMuՂY_Ɲ_\Ino<0~49ͱJ*¶skD<,Zz]d-؁/pY Jk; ^2 HXu{98x(R}؍6ΌOL Q JBD11)ÄTMag$fdt5BGS`NGo>.Ch {ZCfnI5wҭ[{[Kl[ Y@\>؁PD;b4ȴ28U,"9tB LW8>EXlS_dΓ+|qm8edfxflٶO컟;}/+XٳnС `[4l#q>=zݴOťxFP hGB֪ IKֹ%K9.|r(޽$&!f0R *$DET *#* x>W1X\1jDA3`p8h!Ԙ5qi8(%rёz }m_z[Rc[_Fw cqS=8š}QJˬPR[W""pAAwak+ ZjG!!Yi0;djW"w|䇽u봀:imM^V/o *o1kGu# T/8: Bd Ug؊V&_IHni䦁P.%WFŶwVB2ZFFҠЦf]:\\I!_=91Ǹ:xz[?p:߅n7JϼGCgN#*`/.-&h=83h}c\yQ5KdFT7G^|@7egWtPªҚ AjAIH@ҍ_3e/ .^0sD?#܄I2@s%L-n^stŃLj%~`LS/Ht!r]DIfI8s(eul!@L5;^.)wRK 1D4XZfřWˡ9Y(]>^^eLLZc {"#%˫):O?E[˫ 풚&|٣phucDSá 2fIo f"*k1/ 2+aTUA n*x gS 1b AĊPK@DŠ AHw@$aA1.NKdnn&3b77so3y{~ Y;pX-( IYE%Y%p1duMزYε3k kIjA2jQ5MGjSG|j騃9"DA8LmIvݼ\P*dߠ&('S n!P1g:<!O%H|MHjVg8l)Fa߿[&AFPMl280n=7p #wsSSlOgw zQo_(P%137^\Yԑt'&/w#ٲ lU' 5<$႒3>Ul\Tayn>xYhu:NvIuYXjiUzezJ#MA#" D W(VQ{c향cUܻҥ {ͤȨmGjfT73 Ki Q*CP86NAFL ]ZD2injyFy˰k H*/+6ҘR A M-ƒ[eƘ/|BaLeyJmakO&SR:[NLlӖA@u:= qX9\#ŕub~.mvs=6Çw_2r[^dx *: $8dLrEQrm JR40PU:I0{O[Ll ƃ=3gTEA\ZJݣi0+צs-[R-A+*1f4h+26ײ- 2 }؛&|σ/{|ڬֵMw; ;fq|o}}r:'{tH}0FW>À`; PXm.ǒi0[a4 91,ȡ7bPhek4ZNG?]I" \wk 8U>?NBn!{G">ÊK䍶/_T [GN!k )'#m;b4|D=l,l݉p6\[w J4F$g"O"XnQŽal&3zRsouL PVflET7 \ P]#BlĔNٝi|-[SSI# `0d<N/ l"pGiY4q\$"}E cS㵢s4ҿ=Zwv2Vwd%Pyt KX,mC@o~t" fz_oL]Y&F tle `iAIX]]6A֒|eP} :Q ?O}x,A hWTW&~~tHt~uv&>Ga_~ON u=2AaZ+pn_iOderh*LLpaMs_ d+D*'-O /Fg$lAWzWnf\6UIIq.c$ <(pRl!t%j E> N\ %XPekHP6ΨdVmŘ?Ğ9oc)ME}n4Tf~9q^¢EOof`zs@iSfA7Ua [.lB,؈(~9tfU[HS6VШ}x)xENso_0>H'9ֹйdWhYN;2e9r"L,|)ekWZYKaLmS>2`jx&-yјu~X#| 7 P{l?^ P24C'0 GQJ.n2V\2,>3 S,]I~`a"WUcoI *>$m,O-H2%U`3 Op)g[RB9&D#v R9lR\lm]л>MJ^eO^=ѱ_9~Cjhg Va=eAY{ 8`fiioX]6f5@~oj50l1.rrB [.9/gӼ(-L^e +DaohEpD6x7Dg:jJ6X 'ppgLK2rj[&yv8S:W) t4! I GMjV!Cxj-{DNY 19=\l";cu]QdE'Vf_$&uSfF?*~t0K -^Lb"BHF%O D[/==`X\`zIjq`DYeWZQòzA~0 dgZ)+Ķs{w>l<)::{8OP~c@i>cuG5/zJxm*NTCu~[?Ui^bNE)<-N2ö=ppD~3.R'=i'Px or#O pr )8W^+FFx|.9kkj1t6G:Ok%3hBF[ G 9 RB!) ƽów# 6*D"P_f"mҩնm~\-&&\siFL)$ T:,= hNdXom?ͼ;HW22 Qq"'\s2R!cfP3-//;\W|HRgo_cszlA'uf]@PXf' oͼ9BaN;_9 _+ḼԼȺ%tb|nO(L:_+kGȪw^qZ zBf9Gqe(MM2C6^qY eTd(`PFx o Bf.hdWK[x'_gE:ZbrW@0 1aAaүl!lJNl?szSSŲůul&&m~XfV-*pTZ-,aEY ER00A A]_[ T.9fGZ0&uþNFMk:OD#Ds`'.NYg@bPX0RH\ D1FmAzmAҦufŏvۚɕ̚=&K I?o0>;׹ˬj{hY(:J"IFNT<}/j̺vvk˙Y5ltl]=p93ajO+-FqrYev2h#pM[5%aCWX6r(Jdj= %-q))qol>`4<8 Ѵ$Yo!MDŽմ\B'5 :gX0iz>aM"DZC,3H1JMkh^c5HBzi089^}Y %[h8`zڇ]|hr+|nQLr 'su`! qYgj7~ڞ?2EjYvq6Xfz,KxZ"Qd)ZQ?oiS{toP}gC.[r( "M,Ptoµк˺YY*5-7H) tA7O5?NȻ+vww[ĝIx\Y< TeLO f}wdEKH1 2jZpN%R2;: v?Vh(M[ T)$+n(:gO"0Džzڿ$gĐ> +gKUfoRP_Bu2+Q fMpZ$I4 ` p\ tdwvœi< bYhZn57Kltا R4yh5zts,y{Dvj:)Qbp(aNO RIfTUulX= )PTdT?, :;_P_U-ɺ‡fA%Ed 'VoQ{¬N;Lhb{$?:z{{3:bJgj4)+J&)E )4̚ Jh(Z[e&8rh;3.&dxH_,&1f`_6hְZS!!u8FiTt _2?GF`[ܼ͵ LJô7WhQOC8|k(?:cƅMv)Y£v="vh|L&3@;>qv7xY +#c3L}keE;eYB7"Lh{w1D%)z@`iIA. -Eu`' 佐طڈ,C \>u_0l$bxDO[ 4z~VqveƲmqEMa$&T<e(L7>sƗ~sƗIjbv-({DU1)kqZ*seDdp) P xXoל7%=QI҄dyXer¸Le) B>̼|ACS tf!^v NM*g+I Rιn(h Ů}2xYQ~7JDVqwxy:|H,4Qe1JK=HH.dv)ZMH6U'KUf X|S,b IDAT0mst~fǭǗfŶt" M !\A1 B\@ .S ypI`LC<f`zm;N4dn/-K)E(HlG `[iÌAaTy^n{}bv'oǶDkN6Erhd2`?lt.qlA).dɸ^x*].&z_׸ɟ(-C$&?luF%2@}q!6jjEOKT+8e<;Q̣ZyՇªb} w|b@Fhd5@khZ bq@=#`PIYbn;/)U 7vYTNLP= S$!B R9>`,8SU!fuѦuZ/N&zc>XS~ ? 2GJ.SB=(v8a)ny$F bǖXQ%qgJ_ouLjVQvu9bwe"uLqfBtE?ǯdkgrƗ` /̹߼%8M&~ P ="}dd,FvJ1-@R*&:-&pWCFjϸ|Xڴ #ywb39:jq2XjkE z 5F3aK,&@aO7hQ&-Ki ,i F i,X01R\$!~0]Ťlf`m,VR9 1u>069I.5u1R/% P/N,cZqpvno)) G1Y)ŲĐՇS{{jKM:?cur l;}̙S&so皛zufnxZZMvq>6tv޻йE?PGB I`0SGv4rkbV?21K!]!#dN3p}*zǭyqww|bpqkf_KJd+nED;6(F^jF313G&6G1H1/Kz~ ,=0KX=zEQl0 !zif>_1Q SS`.1i%f= G0'B8sf=o!H6GvbvygU~J45a^Qek_j}zōŶëJGTvbEeE}t8|gV,PHO+U&tB͕Wl8f7)-?df(,5"!Iz[ x(`eefK=PS_0tJ{nT^ҔpR}h3 Ðs=&0-833 $,37oMq.e$mA@mvϸ{3 LE@CEW~열w^pk"c],[! [6#W Ct7Ɩ~ТlP||_z}lN J]ӼY,$ S ,g;>|hO0e{qOr?c1W8ao5H7.]*'H lAHi5`R\f`'Hu0]'ҥo`_i` zcm>=@a'USz842N3PHmn5, .COH>ELrDgyAtsxZ21ϒsǖ94^ТZ}"6H~fi'3# zu6:bbc>]ĭ8Ԓ6.iimaGBY BiKڷ$oAR]˪=f ,g5"NT0+A<`/ t¸yCpz~Pǡ+֟wQjWkb) hhnt+ZdlwyWW#2)DjL;z2'lo C? ._ u~ 1 B,so0lBt9fHm>%6fP H!J;>. zG.24LO7GF L}}ky0"nZ|Q.tх(ljG.jhvbE|KсA 'UaISU{pd}'t0R1zu/(͵MmC\S&3<>Hnju`A_/׺h5I1AosBiagQrXlFt?4.lpԵ¼˪YْBQ1zgpvbwp|APwp}bR~ [=~MO+,@~ IP'=F&P4F~ Sfфsc_~t9 =f ,89c-C' +_8u66#;^JT)Zn} MX`2;Z[\o/]'Gѐ; %b}q)m !`U-ZX_[S!J׹ 9PJ6g]zH9~m_.Ks0z6t7 kTX8Ycm%u@8R&$, RI=1`icGC3+C.??" &J M;5YTRO)*2Rmm> [ 1T4*(C[$6%xpuȂ#ݻJ$ d-\_Bl!1L:AA3Go? ڡ-5FרL%ĐcAU[VZx &9\ z·@EHsBR q}K4bPdG;@PKXϕ|^#>äśX Y^{b{ZoG>wrh*2g8I=Il=,@`ab Ui-c,Ka+C?G!)FIKGG"a5;"`18FU1/6H,HU&8 li__>6.&_S\A25Ra5$6&. SC28 4m =``(#7WM00BYQk/s+SX;n:.?8 {#<)Շ~oH#rpp7<u-;Mj%/K .uB9GH= ./D)u dÈ``&l0~ <3.E5X~]Ǿ1SS]\f"0!&`&FvO|KC.9}% 7_ ˚rwϣe{|M\ڶvpUpNK>tB_8C"Auu&էcfI%= ,.B9@&1,=_,ll__u]c]髅]_]~u`IB]B6 c 1S?c@9l`4raH r n" |P!&>1YD2!PXcIS0; P{mc.~ Engnn-tխP~fž 'H._uA3zn? XBb [z7$|:\Ҁm6'Rwy68ϸ{OG?so_u,1u >V`K:$i  RtFs'`_Bu\]\f_0CF(@sI=\ΟάЕO% JKAF~թSw8u~jk}m99]!>m_@]A;?P1] . .,9*/RX<7N c&,~s1 " ?GR 6&'kXB6086Pf >$@I6/)[t'.I&0"H4$/'.@[PIdyp{YYhUL<0/ >J}O}x*W.3uK[E3^V~1ӻK_ym** ,smwp=f``z-BfftՃ~TQhvRutlPTioc~oږiخ%fhdj(kF `@T52T-lpԬмyost8>>ҘZ͟pwk~6bw|¬0SB Dz`SR`!1'i2a,3]%$!I=-aHH=XG $F] ,uF=821c+ I!],U7.[!4GlcQ[.@ 'L;fS RS,5?9fiugb|dp},aImR? -d8(UhVնA/4K;4&Qddu˸DC\(@S9c,Ϭp6i9>z;wfեt\, 9ƛ9S(b}OI]9m[ սt]اfQ!nng}G/0ʗVH>6:'ɒ(׸2SpsGRU0̸Xvv^kb{^BT/Aus'$@cm8ozmUGMlKI6.7s\RuQ>zoU0i`BSg@tsfll.o Ŵ]8\ i7-A5RR5AF  09`7[JI0 =2xbZ; .Pŭ8]&b*#6I=&WI\+W|);e+ml?Q2$3 `zF41"gqjpd3LϬ?i<_ű^}9wa]1 $u`=,'?SWe#@ cR)C:Vh=:TV:/@1!Al-PI%l>mP'IR=?>fCTVCJK8HC"=: ++T3_>cc[yLTn-he.{O~Zo6RKy%8EϺ \3 804GI {ΨA.]`=WR=sL aXw$ &DվH|KŲ彉^̕E*^}.NpUe(1a->(3!p{KØvyK!*w^R/=)Z''$t#28.#W*H]8NVI@;*["T&"D=cB9R5RXA$3.+7&.&/F[aaK 3R=]'K{N6IY"V;G?UF)2mN3 QJd, v#+Q)'6xZ %eD.7J;HK_F=/!xM@xr@h%u' lB3#QFrֻͻ}RNVzR d-~t,ktD(c,6S;Vo>.IN5U#)^  5@ /z=1z~8Bsutm9Šc % 3%=0V -5%H "H / ]`({+f& ]n@ 8F$nbd^6st;Nk_zi!T{V иӻ /_`-]J$thdYN ۂa`A7VGBl"!ZMnQV7*0c5K19Wq0ʖ%wH>5hbcBټ8BgPII'*ͰкV0 Q;1/#=Xëv c ȻȰΰvO6#|ZtՇ@:+>lI3  `*B4:f& {n>BB%7t[#qµ˼_=5B%?.R2qa*AԪkCR3$ >,]5cvMVNp-c6^_%ѥ/ ! :eU"K{A:Fqj1]j磹 {G@o-$; ֕|f՘$*BSU[Y!čǁL&2nμϺϣFu2eM1/1'2$tI\0,Q9%ekP+fSe +5-4#+D/.t"MUSR/->H 1 tF[ I/WWE75OVi7-P< I(G=W7COTre)4"/Z2\;bCR^ ?q%:5a;5"?!-R3*9D"( G _R$K(7hj;GgpN2ItzK܂\aY++}H=IH&1%HK *6&^#Rףμx ,R>z-y{wUFP2?ٸ d7]9SFd[Kj^kPei1r*2R+:V 'L2'R/X-/Ul; T aOYlX5C1 i=>.' (;W(E R8v *#fe<27+$$7EJ%_AɼIw?J[8 k.C3(}tDAnk)-$V{ 7a1/kG6B/, *8a79;`%r ~p&o_IDATPtRk0ۻٸj?M,/L)IC8/ \iU/ 1F\i3W CM~fBB]R.* BM]Y.r<=$t.\h`D#.G<ߢ3!,湸F_?I;QT)}#.`3a]Bܑ+InRb7EhjvyZ%CAI95LHhNc@*~.*L,%}e5bCOT==Ii.q 9 Tm gWs:@'KpO=qH?YIDF 'q5!5 ;0d+QJHxHZ(:YIJ%qqx2E,YEp;!U+o#B AQ8\;Iű 0̹[QaE5v^0>,6bqZ=1Bo Ht :%Sa%4*Pc$KQ5jU;u+#H_F_cX,dR2w}T8!%TsU4(I}?4 =M5~oa4c-Z x}QZvV %e9Nͬdx(VZTDhgypkT(Gu>Ri]VBK:KV]@N+:Hx4$=Jwzt`!_@.!KP)@t@ [BI\"q R FQ 3!%(NGE"r#3Jxwj:`U[ʾD,?_Ⱥ4wwxxJиw a"(3TS $6!0] k,@o .6cc.8s dc:v):q̋H ),_/n$U[cIk{ _6*1Ff.j7R[5 U= JܺԜ1E27:yB3+/a6-Y݂͟#\6pgiZn| @ &]]m/55tSebM^=G4 .IE:uuu%K A $.!!P16`,Ac2 yQ rJA(=Za$ W7wVO<\_o>L;rD)m30fNC75'ʯű9C[D ʴF_ y{#MȼYO58еLߋ4pL|}bZKJM, 3'Ao,S ÌDqc ,`Uo0$"z 8w k^Qw "c>f.a_Ck'&aWSe86m#Vaj7o`H1TVȨrh  h#sNZd5/7l S\4[-*)Zn-tȚ4,<R+1A XV_y##gaLOL*jD #4#CL;g7 WqNQ9R/L@$Q9DP РMeʫ133mњf2͚W뵝;oj}?`eddDK5ifQ$l]BDW'h!_Q֌1 (ɥ:kQPo޹)cU OGHuW-Žv;4E':5ߖW޵mj6پ kFqOj4Tj"$Mx9=`xot{Yc4; fi`ʘ<"&#SM/v^]z˂hU*FtruXYM&#P3COlV쭐r܁dD|c5p`1c)2x!V(^dQ"pz)FF@*eWS} :QKu4U[#7jdc%b1.Pz(_ک+8V]ݠ/, *bqgc/&uI[Xv߱~wiޤ3U-r}5`T'Z idBM@v3gDVw4cKDe(J]>Fp-|FP?&*ztwb;dS_޼y~k3ZF\K~UEZlOH1`jF)!bd@U-+ q|hEIfrU'vqO|Ī0Ziԗ_\hV&fr yAXZ͖X.Fc$=_ UȪmh.fov!^?[J }T1WT;Q2)v}S%cUTDuM.Oăf01ש :S4TI#~I\\;Z"n/Y ZG؈]ϟY.O$)$}:Hhswb $:;O Zd5NX @ڃlc?98! jJ@7S2OY;%=63jI! ('f:fAlU91 oOS$/K++J>v=x8T5! "%R IFĭ]z?69eśo0&ʃeg#UhMGD|i1$&Q5!lAH0~ %C|ߢ'PSoBX~oNSRuUP]9!.? GGW? ! t!A'uSUǴtط O#64I=W/PPL»_z1ʏ$S3 ~m"tPj9omPjc_/w+ m9'LSTk )XAPtXsb+odNj( NjvKcRAUGyF> ^DA)%q V/W,QZLr}nI`;N*Ye;{@7? %IzoQ d=rIRzmþ㓾S7<Íf4_-xOEgl]COWdȸdo U6CyXe  `0BX_`B]] &G3uX=^1o l'\(l`l0B9ASҮ$Y2|%7_-d!n2dH0 r̜zt g.RSHP'a519 H6_u 3xSDܼa0RSILu:!\7>8\6P ]X540sk^[a rRdM"|&%=1T#R([2B=D$7Tm;(, ezIAOE=AB$Udm@RzA@!ABc\A@Yt^+.Y3P >RV n"dUו0x7s,|3zI\Af8 ~R‚8BA1]0vwtABX f 0x dOgg5M*gaEy& SOD,:K)DI*B$ ?40w[d7x%%b[G41hixLW3FĐe HX>RX&sʐ6"9Rc/y0iZ""~LQE}!/a nި p|Tgy: C{4?bhq48<|_6lcABUt\6'`"o!6,XSt~*X9ElZAn@zU!om \lǴsVεd |, hC,$LC^?WTk%].d$8v@"iB'>G .>@~gۼx:'ic_`iT%&1n[] gItf08%]:ES]yjDG(KjkZD$D823%(! nBE>%IIF@[I I]6F[H\ +Y}p 9)pe6yF@VoWJ]TRĤK H]PF& (83R.W\ jJYraB $4@tNS FkEqLWNM[)gJ-QkG%Z&1\AXs>A9Ǵ >!_S i [`.s_ć/\9!iIuح ˹Z181a/pN3 Cqw}{5Q u`VF vYE^ mz1/;R]`RmFz^E oG" 'A Skt@!<99s 6 \eyaXk{V-LC7EO@ւ5'*1286x@H{ 7%-8$ LM$Uv|hDyN8k\@,m)5a!Tp+ҧ*E VB]<$ā 0 ]oX9,F@* Mtfi"!Lx;PZYD "^jp{= UzB7e\]kQ5fDCkSR+ sE )[7J\.WK QN> T4)-?[<J>n{k/k}EY/ۋޢ\Xaj 0Qvgi.f?h: X0['VƌL_Xʶ=_o~8HW͂ !npf_B9%|CMZ8(T#ϵ%>:l99Us Tz;B6l&aG@% o\7t`! >A0i™֜a*I%k:s ,W:^3CJU.Rpa4Z S*L1I@ii6M2342F 0'\ss%bsH:zX/oH SEz_bNj<QwQ=1#7^mQ; &sD:;,;DTC G,9rOp4. JgjMbYQA-wzNP`DCo$ʮ2H~XLPHG0 Xif({CBFWKcf9Hc_>BT%f~ H\slz`IP؁sAuu?~''D$&D`ssBBSX`zB6]'A۟ߣ %/K Xbj+jVQg &$4*b1@gt8s1M3=K>)Jl\ W@X aPw~zmB3Y}ȼ;":B6tA!1If`IimvEh}Ln(g@iƅ=he l7,*iGVv G21/4S`gOD7,CDk]kw7Y݋V ~IB=ci/P;Fk~>t3pC@m VV.\Җ1VvD;\86Bc\!'SlcSc@]o]9$sm`c&lmRmǾPgU'q0S8DAjNuIENDB`gambas-3.16.3/app/src/gambas3/img/background/mosaic.png000066400000000000000000002243571411575327000226200ustar00rootroot00000000000000PNG  IHDR@@NUgAMA asRGBPLTEIIIWWWLLLfffUUURRRHHHMMMSSSJJJZZZYYYXXX]]][[[aaa^^^jjjQQQ\\\```OOOTTTKKKbbbBBBNNNkkkdddPPPnnnmmm___GGGeeeAAAgggVVVlllhhhccciiiFFFxxxEEECCCoooDDDwww@@@===ppp<<>>(((:::;;;zzz{{{777)))999888333555'''666***111&&&000222,,,%%%~~~|||}}}...---///+++ $$$###"""!!!   Zj"tRNS?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????x IDATxlSjpIB @[%kTEjUU[[k紶uzvggw~}H%~faY'(Y1{ts)=-D򞇓KIdaeP @)aYW@Ruٯ+w/ "6o2+`-5l_Lo% JTᰶGa<3u$ 6M. "C*){u`̒atl'C`޷!j(9MDvO//_$ D&́9؟d+u LGSŌU#"? >6G6> ~Я1CC瓬hpx;Ӭeޛ-u^uSĆA0Ab1lHlsf^˯w6񓗒;LnhcY%Iu;8E)QkEPHbn}$.h>.?P՝Tɻ[s`$醟L>ɨKp\5#A KO $F].i+8Ϟ[ęNs߀|WՆlb1}fIOYbJe_#ۑ?}X̑4uSe@ xg𬎁m(~^p>*u.o+W.$U x/4sϱ ˪h쥧 \8 X\ (ٲ筥izc涳wFBjx0L?[9-icO2KuP,RkukI!{ 32]=B%RO:Re+`!`w{LFF\O[Ɛ>wP01NYGt*?/4f_2̟ȷ(4 M4KNc44" bAAň1&ccIeLB=Ș(o)g ]u8HJ*͙RO·ӷd9<;H1z ;]?}M;y;[mM>~<,O lޛݻl+]ѧ..G<ɏv\*o53 |X"Ŷs8q?:ef3e(*e/,^T2ùJԬgkX"e\Jey F)/EMOjJWZ3X|0wk*=flF gw׸8+^/s/!oޙM^\JxyJ?z]oƀ }ō 63qdO&C]7wdz%Êw_F~'PVoR=0JDJ,s9W_YAZ;3Zas|ڧ BҎ/ ?fxrĔRhoH;zLb!`E$8n ^]ZOyc@p0B 5xfl42ʹӦ4d%VIjōQpҹw#P|70)V9ޛyjxQeh^oFIgBc=C(PdȃuЧܮN&3]D,,?+q%-n_[揙/OB FGHL{M)"Fr4z;a(S%akm`3!ZVB$&p7+$R]i$V %;6N/[.mcfgD1‚@ҀYE@cF)}1!.flt}R4R7܈d>[P)P0~HЃqMpa=uP4-2o3VE9-q4Ɇ8KȰߘv,}Vlޝ7UF[CY\HD*ݥ΋; #hqv]TgϞK( Jا^;Fa]=J[6Pv)O667tf@o2@i1kZ>}v\KUTpr4 Q_l~uh%܈[GU%+lUeO \h K:Ԁ_o_I~bʤ'|H"7z?>Y ExiplF$XJO* Boo3xt, x:-p}:M;ow&~OBu{aryrkr$MI1$ @BʂEa!fuV&aUuvp?.+m= @XA¾,\VZK{۩ʝ3s:g̿;7w\0] (VL l0.˂!z A"RE"Ͷ?ޝw_9IKWUZ\gӂ_6CQJR`=Z˖-^?T۠qXX?#폃FT&u<lu7s aea.MNg%ub͈sF4\H b'BdfLAm D屆 N1Duv`HYEoE_zu;M05O-K##~"Mn}uD#>=J(as܈B E iѲJq:۟WAȍ%i~v*0>Ym%X@dwA+KX+m_8l_"W +S;l$J@ %WY[vh&-Ĩ`S7Bny~k-|!o]ryͬI07 0Pi=40D]&& @75i]CpPxt\g\F,B0%w+.5NxIsؤCxH([\oւ_@[`jBPH`rJjRχ͸%?(XT[!@5O,O0V ^J3PO?QO zf8Y~lwhDZ)$.H4(H.Jm`pb.?3~U2{huQIB.XG in->i̟}y+UIXb3Ì"bjVQ}z©ax Z7d0TܛBO, R@8h/^} >r f*׾EƜ 6\ {qqR]c?`BZRʣ+DXu׷MSv}5,Һh~ȍ;y"5 lMSZgTq4Vh :HNˠQ62WH^9v=&6$~9Ko¸/dGwgf}щZX[#.-rt2Q+~8$"}txxxRŝb򲐛JMO3,Hr:yU^ ٹkr>\fA meYQS*CPjUY[`oYL%#]YCZ%O \s }ҫ!n4L&zwf A>cԪ0B݉YA<'&C.]2*M pS׽`=5r-[X_݃ X UU&nzDzyݳfo/^Yե?o\hd@*FxqAp%''F@)쩹嫡>+Io{;QELuc0LA `Q#~i{d۷JTӀѪu{]( _~2䥐Eky2rEd%Uu_g?9}TށV7E< cCkXQ7Rk]?e.%:;YMC٪|2+\Տ"NڽKUN|@>눂(q04z8I,z J+ S4(Dir@@I`g 24(xj P9-!{9k٢ #(؎!==It "Mqz=;2Le2Z:MGȒԑ36gE3f'ɹ+r4&ءꂽvWwv?#&pghhD|90 |ԇr"E*67vΑ|sGF%2qNVB+Fz-)[lZp桴g?]ֳP QȢ PC_ܴŒlDe K|;^)d~J1 TTJb徎jǁU&? Ay ]gqTb͙OwcLcV “C:gEP?F=$atǭtg` g2>*6|7e^ yvm}:*d-B{2h}]Eͺbӻn=V51p(g F6CI =lҍffcҫAVu> bdht+z:rt"X?G-h?ysJY)Sz[N]:B_|Y=(45ұg)x+(,W۵rL2/bۼ̯ɯoͷj L^+B-K)z˦O>VM4AI.H>RZډLj}z7|bsO"R<@@JrrbҢY?Kz-Q ,|^:BűA/oD w !݅J IDATqJc>R2\zR ,|䯏Az @gD }%fϔa.;Ѵ*g6_ Ǘ6T k ^ámw@ۊ.бupcG?>ۗBbn930CLU|2 a'HjMc: Н\r5rfj̱y*)MR:qaw57v } Jstf<@hpd5"U0;> P4\,11B * 5^ 9fJPIF?>mCٿRxm-}u ٬PL@Ov~lc> šEW`X3id:< Nlv6b&5[/zHi:oġ)¨iC'MK!?UYVGNRif;kW-)~7,GQG熄4vQ\HHl)pE݊c_[" dϮV%~C1h$2Fȁ52l@!`1 Wf)&"rԷwP2hiIӪT"*#+,'0LRFV$E*V~tZRf4)Y`;H3D@P98*k3 ժd||UhlNKøD"E^`l0&ވqz6Τ893a!J8f1[?k~qhW>Zq=%3xhdZ Aт,.B+?1 (9PI.Ԯ7OnǞF{!QCIs5 k. wHO&KϛI o\qP,)ګsj~ u/ |WCejdEkw wz}NBC@Vz]K1֡ y o> ZZر2RJ\taƄGq$ؚԠ\m6[x=ZQv=cRf6]_:1ڙ#8Ds=\_g=m,ί̟\xs~PGK)X=K@_lL6 .KN?3/WCE~pl{A8BdĕT',\`A>6tT!pL8}aCة tt%N|O̱V()Zn-CѾ$inbjŶb'Z䇬8{WyB~dX++1E}R* PWy_$,6C}"ZB,]yhlAP 煢,h "sf0q0ӭ:FT](xee~+Qラ0d*U//hʄOjPpUԡE[ 6{!P64[~ۄŤ`z(^ZC¡,`'ypMtWMf80f<ǟ'FQM&@>V[F4iC.UGSr9;>s^+2TE.^[l4=aHbh} I;Gǿn>"c!!U?QQ,>~X4VhzQ 6!E,B낹b8NpM=y^xKDB$TB`1J9'Fd#ivA z%͕E NMk''q:F=.SG$*WX939<DA(jJFNr{91i,kUL/J [i&6wժˤCyҪH4DaD`6N[n58(k!Ԋu !w~~Q{=Bt+9N%taЩh57΄#X@q*f./Js'|!cО# ajONAm1(cl^Hm z ?ԃ/|+#u@+OBk@zyr,lXCP.;zRd͡.nk4."+nEJ7}V vU: tJQur8i"(^wS9+l p^͡XRmqqiiia#GǎH3k!~?!}ř?qihh. EGEzx%Q̤2If2&[M?$S> VYPy>o!D>2\R@tilQ7Jry,4%24.dB_7w(˜Ml`|lThHnDttnNKZ5d_mVN<Ҝ@BM/UkK/1atA@yN@y0gV|֠asO`,X$,̜ݓɉ~1 p v"V}X~;r}UD {Ɍ}Ĵpԓ9$Ш7'v+#k#OI~ y*;}$Yt T3Nҍ㺀!Z Z )?6OZl!ap\i%.hYNx*'7z82ܭ7ݝ{+0 CS@;W$yhcXDX'3(0ǴG,ckAƫg,v^HLT|Emh"T 6.TlwU~G_xe[Ԥy D/M<#hx@@"*g/BЭ$ߥӋKư19i lQpb +SТXң Rvot>]r ̬k࠯]B9F}-[/͟.̘!@,_]v/k2Z9oy'@fpQkg/;QD5V'|r]6]Ft]/t8@E.)$[5%.t{eF$TGX&FML΅ ζG1=e,AQjl=n6%ѩjcqi/Ll&"{`-'v04ڲzO *pHo~DM\&ieCX]4$ %xҕCmHYl0+,^Q6Je/o|wh[J/rTD?ji-n,|a<%<§pÛ<,GNz1;a[x0;={ETGAf}f2_.+tҬ4{5A4 (rĘh̝;c&LN{ngVE)cϡiFcqĪj#JaZQ|dmuu~ܜ|x8Qf{* C)TD"GpSΏ3\G?x EYp U&hc6Y2 -W/Cq\>hJ5ɬtWTI̴$T*7ooϏbZ.+d=d"iӤir5mv8o&LK!@rۜFճLtZ׮-2= u.7p;̓Q(j+ƃp?dl ƶ={S}R@ \ZQ< C31 H=!V*7sP1 Z6?ʬQ췸 n$MZSMrZ5GT7msd1E9`˿Y/퀗]Gu*Z@5bvlݕ@HX_7ICjSv؝St?NޙAy˧d%i,tc)/#N8P0[($*YYP?w>>۬*Fb8Q'dNt/Yˏ j(U)I\U,Qrӵ a?nf2c;B{@1Sߜ~SQ%heRH]Y8X@x+ਙ Xuau+ћÕ95ˇ/6!m᝔Ho:ZLuT@Pv pv/͓p:x87g¬pt *}(EU mݧOeC_)o`ed$_йVX`[lHpz|tRu 93OpDݲCMNGLK!J懻^si: j}K\:(ThZ /,jDl|[ ]*k7 ?"&N(3@l'(T@>ecpR$ iZ=z:'8\H"v &khȀ`<Юִ;Z¢ͤ>AKMy cPzLόƃI-`$W x( ,0REmH\fqV \U0FZ#H#0󏹌ϦlfSUϖD ,0~Q/n=+o^ [Xn_+#<1u}uۑy#jz*U*}K4N tL;m@(ud.1^ ʡ5lsdo\RIҦ! r2d4b0$ "OUՁ56ݢƣJH+!!D&Y&^q,ǂSp>Z4738Li)qW B@$XRz݃AG\"I3 rtD_v_4/!?Yɖ˯[ZR>a?B#L-*B+ccs}m;)44A?k &z1%dDTr!.~~ntB߮z{E4ŕv.avAh6AdѰI ('d=ƌ13739ϽU:A婷>c8PJ5DdvMH,8ם3dNO Xfۣ) {DbÑ텫%#y3Ξ?X8:}|\LIy~'ge9iL~8(2;@Vr#fzj/Kvot%;k! kkvBB:~uy5a2 AʸۜКpx͊Ml|lJ)'B^5ZdnM$"9IX`g95dZiikp)Ѵ%a~"\l4KJPQ$C)<' -ը}^jqxk?beBby`هf.Lti IDAT,W*dgƭ1~ץ$JM"c_se)eB;\g7(88Lwlǃ>?^5v1:|S2UzsN񹳫.tM'@Da.H-ꮏMMoex~1aJ$;Ju1Li0}ER)x(ы |ᖭiBkXYU0?$vn\Vg]أY})":UE6"YP(»)IXiM1j776V~W}z/spqߡ$x <>4}zs[md25BQr.7|su?6'!He0 kb(!H;W*rg,B!TwL~̃+`K"jo?R{mO[Cld6@pG\ڑrK<eL\:B'Ö}ԡ{Pd Ubm}B8l59]PR h! ZGH˅!1D'pټ=ljMHGȐ" /VH [#MY\Zs81"|c,G1+ߨ75N%CbV'ӍX'B}j:I_! #L;6[Ʋ+J<2E&3w{LָBJ TY]7NGt:dv%Xx̔AL%Q@2EP)߆~rX{qt~o:4AHiXnIg&>664 %ng%zn,{ꏸmRMx:}f0!~$$~J?u$_+F1eܖ|v%c=KI7}xpJϥڃ^}PۃDٻ.E1܆/NXz? WBܽ\YDJ"?NLɀQ&\UZuqB&Ʒq32@.P.߶㑞|GO. Y?Ȓ,w tο5+ezrUMM؞!MSJH !qqNau9+ߌR9V9J?&Tx6!?E_)+q !{YnWy%CH$ L=_fl|hz@G{^?JMg [?2:>m@a\54yf硹*l4ov!06l\k&Ug RҠwz1e.@h(9?RyTXGJA+8Rfu5A==8 \nGGL&פ5ΰ /u5a>׮.@yxCՌ)Ѳ]Z@U.zoڷl*&zFcmu"ڸx43 wNW҇-B-v6SV?M&w9r.% aXgrMld4*dyo땊ӌY069$ uXz\ OP[G*֠;"(|o LA?dPaA,zCl|+t^Sd%PEZHD~lVգkBVZűʭX*({{zp=l J[oY )`:4,S\ŭ,)(@AA@DA)@5!$DŘDv'LҷtZ֬O3}d7g眽j=fK慄0:Wp:KR+lo”o>^kUwg"U|rmrej=KC{ɗ^- +LZu ӽmX0 pKWP<2;okrV# J]/_λHuN!{L|{SM>Hmfh@++<,ӈy8+c'Yb"Sp<\7s#N]HW! ySO/y &| OG_78ںZ9/1M+!PO֡0|ۖqTD3ǪpZ;9a/u[]}<^+xx1b.^=> @~e3gUn0tFjO ^cXZ@) ݘ e6³5@H BЕI J??E I6v, `qXVE'j/]$s~z3?Vusy1vM{ ݭX? Nq dhx(]QZ4,H|Zi2fV+Gk)'l-rk#U?><@ yp)A+c٤(tqXecAw_1Rɱ/{ѻN -:`>VɖforW+PyfLE}"]] MF'uWKtl^g\q_NH;KԸgs~N0Njp ,8bR.G6?X$I- :r|駾7*U5J~!w;^)u*$vm ͑f6Ka|.F5n\(R>k2?v!}v{ fk'm42:]5V:!KW-L?sʐ%CB}HMr.H8ӈm _ȠwT@w.8Jꀠz&h5lY*8-uVA/~ Px=9?'=A~m?kV̩8H #'J˳97s4驰WG8z+jFb'Z^PyZ9e3Ս|+g1-ͽR+{nᬾC͔55AAITi:pJQϐz&+8#,gM3BO++c(GOdy'fwaqhzoӪZ=¤#FH4J)/㌨]($+BUz0\7-Hx< Kxb'M ŽiYY~Vhgw?<}_1xƣg*uFT6JfL7~EPsm+t3VhZ s3$X-im;zTBZI[i6T;8~ϢlM~zhյo!'kh1+N#=MoB,EX&aX$E&2%#c#kό/$'ɼ$2Uēq?ss[_UݲA44RYZ7,a} bȉGy0D"-R\s"8#[ZBdxzK2}~cj7Ne7nNr pNZAUVulDj /^- 8"M׫A#JHҠ'2&[HL5>܁$U.JN_Q c'uoʹ4}*$zNc !j3(Lff GG/ i8e.w.;hLFjwQ[cṴw'yǙ},yח(*7qb/D)#_epr^lyi?xa"dքp6mМFWG؃4^ʴ{AdRC.5[vk+Tmе,N~(z47^e-:JbaX2첝/ѷ?=ZXqCJWYO|@0@#Dgz7}5 IŢN&& [9Tu JՎih&b)O&ihqKJ_́ $lA;8앉EcڕTqeۻ' zi9#U nLqn;53%*#t:mo}%f q%< D+l妧> ~s9 |'!u;r}%Ee ϒ.;4^zJ ,ar0zcdF?n$p6c1X֨Z*`8]_xʷ,eVnwb)+8~ &SVB$+tL #aRDIb9 |ԲzfG69Q{ t>ؕFD=Ih@cs&cWE& ~ҹLJ8\|s1!L/&p\TDr؜bbڊ`qm[s;+ڥ܅O+I-%.Z "i\32tP"Tx7XYA}`)?~'pDŽ8Uik3b^NuedfB]ryРgIߜF0+.xw !DGٍQ1v1c0m쿥ё?iQ+u]x?ěB=:̿Q2t[r]:,>?] PB^ddb CÇ\=':Bqf\ cs}>7'd8>T:6]c37 (pS r9@9&${>]'yBg@7T{ks΁jŴs(,wu "ޯ\Jf7A!đEΙ\ v w9˂oFLjt׿~ `yS(ubP&= {F[Vdo *ص' 6c T%J?kr$B]x"8l9ȷ7t(,P\B3_6eא~ 8Ŵ{>[qC͛Հ~ m.;_«mŔZ1KMgaI=b$%v^Eã4;|m~,13~xrF~zWcU̿~Z4g|cAIZ~I%`d `-p<:m~/\o/}zqnp#+ Ƅufdg_mAd]SY4M 4 6oKDAlDDQDFc'yYgv*;U['=d/Baׯs~tҟʭ JE@xASDUv+eK Ua$T;~Kײ>%z R{J `,/N3+oq#0aQP8];5q d:/\&-[ck C:D0W{a}O[KM&z@g"7"5Tl3c?VH& w)j"_>޸cYWu<*4%c&&VYMb,5!TGNmI:N׽4thqzlrRv).`u*RĸYJˁL@ʁ01ɎGR^b% [HIH[Fl?ϟj=A/|Lx5GYPc#It3$qe &y!\Q= &nC)o~I U+R6xZ5` @ 4}ZщjѧO&hX!(!-,O])a2JPsJ@P{9 ;^M:۪tknZ"h{]w[v]_^|5 &F6QYUk#02/\? 4$BP4q'ۙI;; MRP95% AZnTl$M؉$$!C#鞊 暀JІamAFPБvwyEGxVщ~7c;Fx`U `U~Ȇ4Ѵ :[`0~ kK/32'=w;U/ß/a5}J*|"ތ?d}XYA&g.jzT{q"XlJTxFS4YÅJm(%΄a@7::zXpdc!<5S(yW{MŞ.5mp|t \ y>>RTʡS[|y+a7YdJ26Pʙv_1\RI'^>]NwUIhRL+Wvt {r2BA fks.<'FK @LA-x (:-;%^n"; Ͱݤ2CxP2(=VQS3_/3+8&Γ)i ZEj/"0I|=:7]0xr`7F+ 1 .f.vi8NYTEc~dԸgWFko*^ݘdF":=6 '{!39RN}('SJ댪ȺFȺQT,}fMh`hy}(W,{ <Z"ï7ҚgXvl|yĬK#c( IDATjX$ՂT~LM͋(#fۼ _m?hgmBP|ъNK3%+Q7,M@OZw!CED<.cvv@S)lW Ss/2Oo ΪɨqP] zh uy_筢 +%5ьҙ2&Ӈ0U΂1bv:E'EsG삌\HiΧ,gCOǯ/+2f=\gð߼6C+m1Qݸ2CfKsX^˺͑/;/^!dhyXGbx #JB5t/TCwv* >PVmJ`6Q345W"fr fA@i,+QV`+~(ߜ4g76¯~#  Ty ?x'YeD;b&kOD̍ڛ}=e^<sQK)Y I ih(r`"ǵ\@d)7CWL)l5Rh;Qr1wa( z7ڀRko?}-႔[:dCVS1\(V^3!T" qu_idYe+@b-] ʦ hܗ$mbNII&I3tn }}lLR@>8bB9,N0J\_o2ݗ Soxh;vouddQ0NLl֭2=2b_R)07]cPtaE"Ƞ8Fs{)d\æ>ccʼn 22á@ {b,׃Wrmiiuu^5]Ttix:`+6 V& }fE{PFv|X B#QZV9Cӧ击`,B_j)MKb daȿ/JE*@ !cTA9|- *ŀ ¨;p/x{`7OcVz\1N-podI5C:q r7e]od3z36NmnD$^&A;0 q**/{;ZCy#Evε!q2$ @'J fckejc3oxtxwEaȪl Kl6əEYDy _ W&D_9DyjO;PG|u 4 [ ^QL\|]W5CNvpry'SZ l%{נ[Z$l t a-΋xawM2x ע;P^E3ŌșMdz,Tqw-[M&K ͝vS\9T\,VD.FT?^{-ggL4J4HPfa oN*?(N|~rVJIM_o l@{+X$g=Tَ~JH'^ڜfBU@+CHHT0 fYr/[vнq 2->+ZHhV[o%qhfQ 4YtYfd/tThd&׃a[|-+1K"lؤ:py~pePZX| .g5Rnܼ?PQEzYwD*Ǜ .5B/L+ !*bz{"LVi!i]F 0|Lcnͭr1%faY⻼A8<2d:BMSrH1pG*UO*a;|3oh:rÔcUGrTOkE. N<|iX.M/boZx$S[m"‹?d)eZn]j9 n@*cҡTTNRE0ú-DNНbPrP (7z 9,9NXfcU! -P;faMio@LO'~8S`E"@Xb94*]4%+U(}+yZd2Ө.?hp4wQuAVh +~X84b-by*e:#@o.~tJdlJ:A9[F;*7@ jRйYd܎F4,ؿ$,]ywq)26 z(b ј ]aݣ쫳mNBk;WQv;)편@dXo.D>)[n}<_ 3/ [qYH1A5.,VщZΞHLRvbTMM1?1SN<>ǦI37##u<&NSHRHQeT2?oUݩhGh*Xf;Xn;vYY{>~P=pJ8WZ 3< 0Z9 )t拌(U5B̴~Ac[ ӱ}\WYAb-(X,7Q(@D0 B "qLb;c:I,g}N~R샡:s-s=SAh=Rb/.j\>L['}HgS.5v2fʡ5E,Md)mFB󋔗(>F)1X"ʋ3_21(灉.\\&'` 52~g rmXA2+i6.MfK'ާ)+S!Z\t.vRK>Z瑙Ƕ~<}5_:3_>]n._L:̓D~GeRk|_j~2>Rt#>@UOL\k|g2]*.|1ܫ=fQ*E2hEHX6\-@O(Ű. P#%Xe{Ƈ>f@̝s8WNtfOF}4e (jԲT'$ 9>rqq@ۢF)VZ\fWUTj̧:뼷27xV)On^\b&3hTdeY.`>ozJp2NMB ݷoL?^i H11eCHޡ4w}#OI| R\a,K#|X<ml*uT ,~yf= "9vF֗d"D)b(*&tfH`W=}Nu)!!8UP']v՝Coc54T^@e%S` $%Hdd/-Zv9Dݚ^`5_aXu|s UCG7-%ƾjl2'ûj1avC(! V;4ڄ?=dT`6n  zd4GF,AR9:3l WCxqVOFa6JL jg*RB^Us% YvYHQ%e<ҭ3nk蝍!띾jpsj5$ı'r^b.yΧ%z Z=t,*|{m* e\04& YX2:pHI ?Jn v XJDk.bF4=#[BNF1ݪ$Ⱦ6vzC. ?p?LTw>;ZƞAqZ-gf }˵8u*]krs0eV7Sd0I2 T2c(Ub1~vyzR1`B>Z+F|Pe6AJ!XлPEQh mZa7g TCn1/:4!wtM4> <ȱKd#֝5H;9)p6\t!މnxQd%ͥ.J2ՙ?eqٛi]MA@Qw j܂hLd'A%F4c^&Uf9Ԥ'=BT@3+Css`̺5cVe"c 2\(JՒ,N-m{ӣNLKL$njKEK@ET?f0H+#zLK%lV[QG_>L4?2^J6Ҹ*!3wncH8a[E#HrLmmT]ƶ?WMRi~tـu88%bY/Syy|s{=}C Y21) B8V+PUJ _lM)+W q \LդX.TW6Yr2$PZQ62R>8 .mphppz7Ld~Ȑ^+FrBb$5q*E J4@5;x&diJ-0+ fZA蚴Q޽ 0pq^_ TSr?`%@bZ6*AiDVPqZ_>UG#k >qgF0֠U/{ri9H4/ n9m+3p {V2h϶~}l7y, Cc.p*%۴ˮ5z6Zy;6xN`% ePj]KCb$n ŋ`ɯA#dFS}hx"P̅®f/z:^J+]zYza]:脇\M4?B<){EՐLGx:a% vdegӅ2]dj ؒ .݌.@e7:6AF!C/&@yAȖH-'ǿwXB=2S[=;;[rlT*f럿R~JŢl.i'f+J[|ZAY/J[~Ҵ@]Vh[IV~ʽڭB-D3twOh:ׇMDwxt-vSԿB B\9H+'7&(zv'?:!Ҡ[eo&#EzNݍ91W'z4_O`Cm#|KlX\X*u\6DְW٘? 9nB$M,'}ddFC3Ǘy:Q,MسNkbZ&'b nOmCUh<8 KmdzԫA5!ضv;E.Wgپy_9Bbl2J1> i8 ډx~Hw)è\U4- FY !3l drU~4(w*N =\4KV:m"b8>!&vgD5O +BJ(M3)"'xutuRLq߽jj 3!#؞Uߓvpa w?n <_9?{W^OtSu^ݿbWf̛}ipޔR+_KiӅBmժ&?DD HbG$ ]G ɳ=G\T Jm(N[a/L< ~&_Eztoj'یn?/ݵ!dJkIhbx/d#F$Hi|e]JRTfǡ!m+;89}WCɥiEOq\llm L8 au:\= Z@S[}ٸ*}YHz6"hz$wҾWBb8'NkO{#̱Y1j׳1+tKLX'~-]ۑʏ}q4 ,(;SÝg^7^IR  Cnꅽ,I\<)/~ ˟>}:9AJe)7`Ou(_x9eO\D f~ r#N[;؊t];Y4ܛֳIh/왡#,>){K9p.|(Es6nTp{ ~4*|} ~Lpq gisxt%A0}r}ssNZN%ZY/1 Bm,Ɨg20Х/=ʵ:Z '|q5!J+^Yߞjdh@>'su_i$[gShfih@}QF@㒸QQir`2љ1q7 F}_uo]ުX@.%2~L\NEHl@s.K qO+9L,t}Y+޸xBT%Z.)Zgz=qߝ =~éԡ(UAzh1I-A!f ޑ/kU]쓤A %FJPs IDAT }5}97XVG2x31z/[B^@`eF%=~ @EvY_װsX4oo;.fğKG,E'6J!H~|$v=.6 "a]Ƞ\@(XuՀKXbB+QLNB"}6k?{o$*䭻}]vb0-jЎ jC ;!% UXugʇxJd%o 5~m3lTEoK-Z X{4Lԫ4boyi%F8Kޣ}we.\dWD:F!wtC-~翿j$Ѡ63m1d&?_>sfi4]\K'z"e#u00fr됃%~_ltM\d؂j,p\#Fj2v"дh(AQY= =L wtБ}(\T RIOT[bPd{m%M-`G$׺>5YĢ{GzAzp  %Կ?jݫ. @fE<7hcglLM^.bnHeu1ǸY9PntBI2-ɬZ!A^ TXfG L=먏NTj)Ooї s,`c1[ ;lR ԕ [+xdz.Fgj0ú͎Tp"Dőxpn;\{|]ޤ+^6 miW#o.?] $|)vaF'u. NDu^)JhSju 7Qa_ dA(yP 4g@iy&I/&>]r ;G["ruMBL( $2W%kQv i~0mNo87 CM$}>~yPLctk\2E=| Eg&/1u{U \GuZ+N9o\< Q軘8+Le&,*(VN Mm?V6J|b1߀oGO{GE2{v2Mٞ+M?B4D'e0feJasV.7G+'KrMW .1M^-ܑzv >֙DS&kPR ǡZvf<|8=P*ǵ9Yz^ySY%+pkzĕTb/8) yWC4@? uRFiUyԧ=47oZo!srX+1VŸ-%j:y0 3b[P$9NN`D|v2006I5ZiH؂LݮyJo|Ùw3Lc'϶%ňEpQ-js'9V@k=y},GoG?6\vKm\;kC&`h OP->}Š.!t)PQ,ԩMj!x0nt'&3{<} O rFWj){x3e̛ ed 5[Jh}qiuʹm+&=~?+l" 4o͎@(Fp7%$AuaLI&d~y?_nu0w=.A4r c"Fp,II':>!⇵T8QdQ? 0)RdmHj !| 6VxF.n-z aiͽݖ@cٔAYQQS@He88 2lWdVr!mwG+0^ÔJA̴`J(4{DrzP&M]w5JzzR* {f}q J>?@%($>y;Gv ۿݠl$6ԟs?a>b[Gg F3VXqDmyۧb"\.x,el* kP6~Pj!&RW3C>o.DjHF2q  űh~no5{7}2 Mn8Y!1 (d~meWGs(ge8S>#s[ܾ^"jepq9Ea$v R/ȿTj9c՗~ZkŻ`<-Vt׋\$ @eGݤAB?|>ز GcXZ6]',H bdUO=J? jzXu*`;;;[OOOR&JЊqT;(bh 70qa z_&"nPS7M^=N,7r2?(CW&VPtُs^ 9*3HKNhU\&]_XM dӥ`.F;;sw#'ک].:HXLH#V}c Ljb}L(*7w/}vEm̦FcyGo:d` Uٚo5Y^[DVY3_-h1n'a!P_7-Έ?~]Ʌل}`[NELaP6Lw7_Z E -.j#3";8tS0X .:y-P+2ZN$^kwnc$m+Ic3ᗋɠ ]~:tD.kLd+<"߄wXi] =:-C +(~K`䤇I"sjqQ~XͿ4q}{+j]RV24;5ںχ(6ڣA5h;L]"UU5#׈iGs5agKZ~_[ @ ^o s4+HLU_ f+IU,odR_ۺw(TdvQ=U=Byvݜz`c =^}ת}!N jweM\o0Y8ߠPƧRkv3S>f\7J$3dY?a5ƶP2C rAt Tx[ 8[vL-ڈNBb/ҟ .N 劍hOJ$q̔Vjt5Xw ±䷗WDkhw]ߎol(|=osrZYxl%fo>IM,<߼$ Jpz;Us=qw:"pqʬ&Jixn"^y|>Z vJɶ7FO6m_`_׻FJ%P;-.krIS5J`w_oo,카UN&€  Dn pPLa FH$G•bIQ4^+ާ2OOJR)qགྷ?+5 4K#&lQP0J0JFEM$WM<oLn&s̹39ouև9PUU"f>t4O]:TQX8XEcGOr|˅E ?D\&Z( ;\y'U ꯷?wt cw:tK?|XhDHdxq.A12q4NsF<-,9"ɏFJІ"QCcmO'zM`/iF()ks zS*XB[W\$Eg*:K<9嘿=O`skwNOI&z0rn"\9V8(T&|};a^?9z?o<}4(3< ,`Oqn3-=+ٶapf'_QsR> >AC,%(s#D\r]Q%AVuotڰ6K+mkn4A? b!K"e(Ӭ"2yg% S$GNyZ`dFwHiEł=WLkժ+٨(+IpnfbAckE5;_a\hir>`ɧW|ҮPKFZ,l]H[AchWIZ?[KX{jH#Hu[;u*ֶ/eWq| ,nUrFk I ſr_a!s+D М)2 )IZYll!%*}^a} t3կn'J#w *&Zj2ial N^>vStzPPϿ?9nQgP"3m4Tm`Y'a3!`#²~zy1U[.4N/~| :'ѹVD>Fߔ(5J\,ef?-H&gj!@8R)"t_Vp$]b8CuaAFz DY~ג[PY:Sm>I oI"N7n Bc{8v\LrFM3F~iqd{fUW(IIc}XDW$}3>!v9D2b椤_Lɸz_ } 2N{Z"VAqA|k:> N1r@ b;3"$G"ltHRDko)Pbȼ;gL\_7zhV tFdԜ{tepUz얮*]S 7,/ `;BݜVʳ+AU]NɴCtCL!uEπ;i.֯" dK8I.HRw6ҘVV"riÿ> yBB>R`U~7#MG)qwFw>[V@I;̗;z%`83GΉax8VtCK`n4#S>7056=#o˶oGe_LXR NzJ 5X췫h.ϛO#?rIZp@.(iy_n|\ ;2٥(Eʎ ͆w vjޚs ZC9-@4;׸JU:83܀.J@݌~0I-}Rj˛竍٩c۹үb<[ ¾/ě a/awKf&1 o`)$]K³-Bwh_J\43m5IBh ylFGΗ7ƈI&Da|~l EVݤM/aqK}Fc~@(T|^i})F ׿ x  ѭF5[398y&Zl1~4d"!|ALAWq F\igNgʨѺFbQWi D3nT;QhQ6f0P?:ǧŔBEVOG5%!-yUX&ƳW|xa,]=$|OTvLXhv5#LuVQ:ګ>&.-g Z-~~qԤ%Y{{tlXi) zD* HXmA}Ouʤ*'euA]Kqe_MT"@[+Ɩ $(Nz}F:a5O?F75uKwC ~:O^C\۹]n %2om-ݴ3iӀK㶋qCQ:{#6˪B)eHa㩬'@#^41P=(dď,/Bo6:T*ʻ{:57IflD̔(wHS= ]t rUIhO:=M;xvVe4'QXl'r="cd0jI:%0.ÇiZKCb^^V[AO2<3I7Y&˯upiJt67ݾX 4;<?_QQ###'JGI#jӧ`>@>OX/O_Lߚ,f,g3K"گ0c\.%D7XM@ImN챕/6XN(Zk2 #0>xk~+ &>*Q|H2 Is ] XNqn&]VB9~}NbE-'WRG^%G`|G*^1z"UbYN2Zl:??ډ^sP@Cg  KS]#dKNE w/l}}wcm:Zj a8 ""m|z;vFXHxBHCd~8[$_/4&`l.}.jȅ o,E'iBA(z~J u0.'%~0N IDATP>AOzurڑ܃9ڽ?7vc.ЯkL+LaH}"'9 <1>=gAגe5k{RbVkm=zqpr{*JM"Ti%xn*{pO)x!'srxEwm ޷8$$Dv1]]JG|!=՚ \[d0E:vY|w'xrrV˙礣S!{޺kOLYTd3 H!KзvZ//* . 5ޕեg9w,6 +el\ro>195EBpH~Ydh -hNAK5B>ZˈUjx #S'y9mW)-(ujAs*6өj^;ac?^eZ=u|%9@sҼ'  xRlt4hmF'zvu&E-}p%.M`&}D PnmFFv 87ɀEXҵ vt_3P |x3e?mnoơŪDi/cc6սEe 7JE({Ɲm,``;mNh~n O~7||zYFe~%a@ 1V$?zYW'(b "0fWt PJ:M(D("f3rH[J[P}Z0r`(5( $qex6Y?сgǚ홗2 Crh䏚 [z4;wB,d7 '˵[9@9]_&1;apCê <(]t`GKת&ioh]EvNIw1VlVq8veB0J^6/R>@&)g)4C(x$[k zB+aqB90gޞ\^.&ձ4ր"t2#F</ а+ :M "FRiȌjbch Y塽 ?yIf8&`N̏ermxu15h7V:e~tf+cW#$ag% P!,+559/EcW.D&1;z$)[)'VUqTukz(o6=vT:7QTapQ B뵇b֟=!Mbo/慔ɔk'Nnm5|ө))K䳝>τn*\TU 6Z'G #~Qh߷1ArYyȌ9$谏p>ͨߍY2(AѹիnhRCS`}&`p⮻3@:jj?8if gŌyD)Ova| Y*+;\t*J% -|m$dxOQsb oʈ*U-䁟lBf֔]ש ҮI^:iHXY "{& m*B^γ Z +Ue{W߻ڢV UmfY]tv8qga)>Jgۥs)8R 4}~?F #+ͯ_g*R Ŧ |M᲌FAڣFB +ѼϷ>]iņ[vuBR4xt4[e5 'ƪJq-39+thR /,JPe~䜵uwI!p=(eQ*}nZ& V kתŠT_F9AUPz,{Sǃ)<`g('F&uɿMadOT>ﮃ~H4XE-VX`.uW? P3`cxڊ_3S9;Yjbif$dg; _v g+dZ0>И@7wĠ]TwXl!c5rOВ鈊GuI->2SmbPeA݈($T; vj%m ̞]P6`l߻m%`8IJ,)T2/rC:)]F촎[ ?h< BuYk>MziXn5$5#a;E^7(2䧹8'!B?d]iW[-)(湠gD AѨ%&Ɛh<5N׫/[λWqsg>(WkLLڿF`7wq1JH40EUs)Yvy*`͎y{G"\IKM2P(hpNP6L_.Kw˰oTԡ#) 9GK@HGZPɤ",?VHigA,D91[<)djR}Qb,,F Wf'8SԿo8Fdr5{(nP(J/j[_[JnCL'de)PE[6Nd}iшx3@:mJS)ۋad3I E%t$zNB A \ի.9hlbnqѬ&+Ƶrmc%j׺@|q'85Jp_9Bƾ?- + 2RC!xr9\$a.e`NDFo'nsnd`B .;xsȱqnA3+|۞B]+ _ޯRJAST0>OX ^  [Z_c0J9FJٴOzt'NU'-~ §B^G#ǂzylVk$Exwiwej~ד^ N t7~X/|v 4PZ יVRkQP4c%WJ9 `x}RBLrGM_9'aKxd'?.r7mP[铁ng ]'qzyV?NO8bi3)o@AtØ^}ҭJ DG \3%,462W46(<W yMø檇ClY׊,%xcz8^Mv-c:2AdlU^Nk(BubW: BUGPlwg/*AF W_~8Aw; \ae(+  WzSeex\{?{296w*Rܤ֡fc!诚ٝίL$IXUvIV) eG tՈE)pՓF6*^d2 {]ŹމEL +7CRzsU=VBB 8/_99W/Z-bn'uDc9!I$_릔 qԬ1jAT6}ZL߉hE4M<,U?TˡziNՙEs9χBPTrdԸvD7OX~j]x׉vXnX,<.UfTG%Gׯn.Aqnl2]"fʩxNAs qA`r. '_z~ Q9=FhF TazhssђI&~Bpo^,3Ƴ`D{%8Օ!gw_%N Qϭ_'KN@VGحծw3 >7W)G1-^o7KB9|N`0өHчN)6v,go oL=>I֢56SoMT@a %&,2 bs)!!WZW(5|c%&Bpa5_s-)/=ulItB`EZ擅t"v9`J?"Rr:2΁kGJlN#ˢ 4M&h 2BBE,,+r44cϸj<;\5?s}HORνVc7ofaTѻBb2V[(4 P\ "[9U4$KtCPRD(Te@n[Z]U\f6"Q(q0]"OzeqVAםt;~`mNG)3kJauV2X~Wx w3B5seq?!E*ܺm8o!,bQDj]^n ̻8yb] Bv|Yy ?^a[ea *ߤu2tlL?OL&ǹ|J1K#"~s9| Kl̬]a048QDΗP#=k.Dt pTj>,_n~roaΩߞ A^P.fA:}8 EUL KD:Zoj{&+cjϜtn8,Z\,yj^OXcOEN,}-DF47,-'wX 5gy_;*NZ e! ǰԥ3U"BJdG%J߾^—n g޾vrT6@ 2QsyLl?~nգH8#&ikUSz AT«-0oL7FY t8C'!ת-$Lzfjo(u ds{;bJDNxGĸƹl|h` v  1 iݳ0Y nh)EP>oH2X/ griùpD"ADQ7'a醖RU37,[/eEr9:O&27%`by5qvbTYdi 5m~ %{='.6hi6C63PN>8=@,(+jd{y< <" %BX;!SbVP3`~@WT0t 6^1Z/YIaۄ2}i11daa=qU,:,r+#^ԤWRlE ikU*oõݧ?[i Տ?qH3Cl4'jP319ם>x5:\ (p^GuNfy'3NݛlvaLFdsOywU:ox!,dM,hooGl6)& =ЫOQM 'bֈP۠6E! ȪMet,#Z?8q4R<4Y4]`!.{/f^%#&}E`N~1æ`? ԕ+E&=r;KssSVC=}eEN@;k$ƔH`pŞʢ|i_1R [s"b,vdzza}lWka`!6f2s@ӁXR3HLc`wQBA(I+ IDAT'KqGqt3*FQcLƭFUKrMn&ZY{Ȋ<ᤱXCZغXˁ` 2@C6'lq'h).:"kf[:GSL6!ɪ &'a)GJ(TNom-5Ȁ n L/m':ψA9v#zfAj0h Ev[%yՙrly'TeS9Uȼy}}s~h (6xR+X.^>~ GPpbIRrZ0H9\.sQZXwܭ#fI[hm׏owʈ> G ;~nb4+k?qX6hBYer6r1,YIgqlBh0Ėo ofi48<n`v ]߸`M8(m4qS1=hSHeOo/﷫azb;hrXǹCnQJeA=`EHm?/*ůr17wFce@({(; 9PvTԢ-Q?D }/6fz(( zb_aobuA? \x$- Ew? |p࠮mo!Ġ:đTkgVLlfx@RuZIG ?q@Wb#n_/efNx" yhNԷ 69!{7c60>=R <7 !FN8>gEE$]KpGH|6ӝ |_z+9VEїSMD_ސ\r)Z >U}9SAF|'p[Kk7'ɯOd@̴.kAT$!צ7*9'Cb"+SS oE{2h^iڿ}8%ydQ45r]6*Ƒc ƽϬs[=}G8-A`@:ܼI8I|v:k=TkmDq4fn=P泤RaxX}:רE;|I7ڑy1#/O&Nz.4P zXNF*# l֠3_"D&:4n?oP7Xiu|^?{^ ]iI X2З[0E%rk&I@8]fAeXlL9A xPAb|[iJ TR#P%'0z/(∵4ڇŋcI-%1'~Un$JY~[FӖSU3tDx&%Gj./(uf>qFoGCQLu,'cFT[FH]fu:u| q|tou.ڹPlG?wdK8á['DeDm"o{}4+{ȶl=s]F@])y}_"6mJ7q`6Q_$4xbc ,=Xh~| SOj .nvu#=k8g#\n朁9ھߩGs"f!2%u; 34*GL%h"C+E"{" jJ2 "ͳWק˳(Ωt \XA?Kzgzcvyw}:`rZt * _Hy_x+ *JAYFd{[Ц9±ĞA!ez@M~]~G)ϐjFMjhnz~Lja}#jiyj{gĆm pbn?:i˳!%]#i^Ef"gK#>7̲ ybQy DP_ta zȕ&J돻_듾S.Kf#@ʇ:{;O4n2~Ѳr) `{Q@. Cc"A{H0p== d_LVԒ('SX&T:[yg$_6HֈɀCKUgƕX2CC8XQXO_mXK!Rq9S(0QJ|m#l1͐CTcΣÁ>~~` ~{h#8Hܳ_6R[㙐>r`'(Tp#ִ# S%G*_xU~`qh6eOA=L@fkKZC,ɑIe C>~V3(vj6N0e,LoXO,@"U}UR .Awk`ɨzF%ڡKb#dJc!`!h$l@(2qݰqZ9WK*uAn NG(8x:]"'h#\+/96(";%a^$SgPH!thAF k#-r& Au7/)L>$q@oѥں1+|H@Іԗ0v`Dh|z)]D% 09 CRM.6xdfO,]p*{ />L+O[,_(& K4P/bXh^j{P[<)RiOEDq,%}xb &'=ij؃i:Ѡ" !ը݀ybgwd7c.XoXF$`ıh>T3ѫk6<}Zj<[ZQkVx8ߜc K'. z iSG` 'M>k=C*O'V^ON1lXbBjd1ZuNϏ p\Nvǟ'Q(PrϖDL7Ȕ:=[K&RX=i5nJo%)xzvuu}zn\D<T휉 Py U ip%M 3#~!XX`J'FM:fU0'ZN~!%},DSt (HN^t:p+ligF,q 0LiV%'?եD1K+JsXI Fs )zΞsK^%[{^)N֎|\dⷄͪ]'s90N-0 ͱѼNd1I,w-H*ޝŦ@L[MuxOwn#M™y Pa8{ROZ*1h݋:_osLHJ )V1^'tR d^:ihc-tJ("lJz{+S(7.|n/#:|l$n.kPp"Z!Qh:bCfWF&Y\u11P581U&X_~f-k{{{};{?6R~.2τkSU*U?X Zv>Auag,0]LBVh]]Bl8 ^T?߫ Q !h v|z6'U\Y=gAL;h:#@~!"獤Q Ac[㜄5/8^T{u㷉g,)> zʿt,'V½H [gmJ>OU3g98a2IHR\͠НoBRu90Z؉iz'}n WZ^Ѽjs1 O! r}Gc:\)cM|3޾wtߩA+~Vx#N ތktk~RD0F?IKR? m}Us=i}6ÄYx5dFIS nǃ 4 6+Vp{Bze _p`hDj5( Iœ{((_ -l:ORMcbkZ`m-HNC $k ȗS;;@Q0D<%\DO2ZsئJ6PǏ^-$bd &hQX,[S\.6?pVdöNOAi^ƨO~ ⮓@##)RPwgiQJrˆx׈x*~5@sKy)=~ )A%P$!-K\]`+ ;8K2̩{ZHE/~XkvEQ#6GPq4vLrNah0yħ+ۛB(U *`|ULe2 ;L#AUX,)jGD܁ ^,(4#ʷ](T1xMP)ON]HTY+?<~~kfyR1i7_yR9 r7UمFAN/J>&SF Vo:e ZP[_a3I"=a9 7\m >QbF#䘧,M!j(K3J#8žJbA"R, R [Bq{F'1gN9fyjp{޽{iwV0$]8)"ٻ.`86 {ܞ{\`Ww&)QB?0%jzORCc Sqw7!"-[b>Vf*sV rx|9zAyn&2²S R~z #ՙ3>= ::99b{}>qOq4 /ҚjԤF5d!fÙP҉s_%Ǖ([J}0±jN&&,بf3Fc<rrJrYʵN,! x~t`XgA\z }S.F&G` tH|":[EI\A%i&X%X{к/rsf-020<@5"1p}?O꜅܅fi6x-p{*<3~ (Q3d~rJ(ăYM)C(K Fwa-') %r2{oDV⏍H̒Ma5 .1*Kjk5hba㳒^E OެU\\zKh+RT[o@=!(\i|fI}hwM_}#b+I@ӏnUy;|PEpKPժHVMmaI{P^(p 1Mת~=.bʅ e˥l>@BwzmC;{ ڔ\7KQ4Z3I36<_>ΐ>eb)rȏMXD2-4v{*ha]יb @Xi0Eu=)Y,/!*bcm )>Āoŵ(EYorC6b ,fmuLиsDc{Yiu2C]h4}\+ֿ Ѫ? rꄂi[Kʲ/e>VdcT@USC͠؉#o0~lD'$Jtrѫ5P/-_GY6!/#d(a'۩C=g8(9Q_ QFK&3?K%ik,/>js(aku^=2ϛ%8Rq{4 :?>{(}Nٵ^ 8[EK*aX^c۫S (*[:=XyNB" Ō"k}뮵Zkdv- -%?I{ ^h0ֵ A|(]ϰPYAh-f˧ggV_,_[lS0i5B?An5P֠56`J啌 HvP(a"?>DWVV Z}KXP8?q[yߧ aah(ܙ TB .?; >av"b@,2ˠ!,62mYւ6Rbb;rӴ/iʾw+Gy]{jZ|}'#0:e=:9=P8."FE~i%={i "=ոPv9:L&6 2^@q2In@ӕb`"Qn%9r\Mq89]M LaFOn\z6PPNi{S[?ANo\:m:(O Y xB :~cVI!d/- vvvi$)6J՛#@*cD#g4J<8F7tܰ'N!|f cE^az}"- dxqrV-0CYSN3:FvR"@}!Ww$$ku,Xo.X$r29{I ypY;%5kh}~ Ɗ̕o[S:V[^̥㑑F`Q-,.~RFVt|/` QbuGNLL.d1-dl k2 JʓV'P K]( ҅vm~$OEF鷜V2:?^ZtSra*PdvlBlk;P-<ՐqaԐf)!%P;4#3B 3_Caayh )t㢔PTڅ=<uAY-NtM ^GT_?ޘn[&LduMdz`yI[!V,V`!$(@+ ւEq SGqA2 poT9zxpI=ׂ \<$4No.)[ҡ«$ :鼍hwi4frV8M -Izۙr?}^l"6CxGvI,(T*=GM-d z{P[zc_\rb)oqrс &JuC3.$UG"Z׮ Ҋ=~:94jikF*nwP+&KeVΩ*&d68zS9ybD! >=zzYñ98QnJr?]\> !1z]aGh,0@So9Q_FuKPX.ϲnSTVor߮HBkѩz# dψO6U7.f|R-NϢh^;/(E"g4cKWNYS J^ P'^Ym?wo"̪GLc{8ړwVͬl}JY[7ҏؠO0@/\ь&۫lVuRm,9B%;&'Ÿ7ZWWFvEմZR[]BhC@Mj3c/Y<+$q*IU*ļZxJn}=|q^O' \oœⴄ-eJڗUy5o2vp֘dthCQ6h꫄v3P#w91M^Ir*u@;쩽{'pōA",燷MvV+^G3UIo^")XĹ4GꡨO;QOȐg F#VXswR9B?Pos?fSV4KT}(QTnpdLKv bjG1z|mXw3W;B"' }BbH?RFZ?~b6~݇U%I)TH޻߸?.fY0P0w|z@:]`|l"фR$w:W8BQdi^Pu$+־Be~w,6V6ffz;C*+i~"Ot~IdM{`壌0vCdJz+ J7+KL[g5vA*xօJ>*=C)e+F 5D J}'F%!{{bS D"hwQB&k2=:8%8oz`.fU^Rۍ4#MT|P:e`+@zS afUTfkk񪃢%Dr0p궇e0"*luw.7cFo~<괥N.4RgT*Q7G.Ax%gv?(ˮ?Gf_ zl}QYNX5=-tɁB1]LkGj)gcՅ/6W!8h Dn?_coV =ܩ炰߼hr'tNk@3DVelT8g{3NChܓi/NX2mx_P;,k0s5#JPqk ėj%`eC_CfPj=?nL-yHk|MYq#5@R|A.׳¸g Lp"Jɉ5dx̓kvjob|Jv;Gd>OKQ7H'PZ?2[H~)דf: L[dPڝDj#].dPr1XFVz[W*+/3ݔL1W@ ܱp:+Ӆ}W&`R؉Hv6SHPc $2szZaT2Kt (_Ý |vW\? Qzɣ Y5OӫN޷s A__2uL9|-rԣ؛&J!.25kȩ3=il7~|rq(s݊#\ ͅOB}w>Q$;~SzL{t1҅>}?\D_@0]-ĩPY l@? 4N7'>x)05A?L4]3*3q̈=z^d8J:Ʉe|}y.JQҍIgձr|ܟJr ¸e 6$8 77J^w`ǭbe.a:tc믧}:òt%\ C {LG".%O6l)+V@SE:l׉Ra( dYvuZJlYP(YG`] woM/ h9 ʋHKEuY+pbKep ([k7fwOVtكc J_OS?lD Q0v "A>&/evك:J|J|9p]/ Ѣ0s B':0GnԽ n+3 ;a!#ux~< 1mw>?/̕bd:"8Jqmv6+pХ* 6bq)*qTrnul8a3^}֨/p^ iT+.:WV}o~$#qpyePvpȮ~JI Ӎ*#,աiAtr}6̽o-^ȗDŽ`\Le=iÕFp~^oaB\8]~ $+J$weqH8Fٯ5*W}2gX\p_S?$67358v&M}{zN.>?*@ ||ԸZ_۔ ]E gҎܞ18b(wf*v8̭/^d%aH !vVI, ǚ{KKi͇ӓu`~Y,1La `*"R:%T_ n,Mۏi~VDKF b}Z"QA'g'hiThBU*v *J 0ق;oD*5dJ'}Ăh# & _+M7"ɍ9MPTn:^iׂ@ɢao{Q+jtpNVmn)Ato)#ʌp*c"!.T<__~FBH117vIAIQ}+H6<& );SP3 ൅J8$"1Z.ۗNʥ ̛~ts}-njֽH{ ρP~R}̻Thv.[VMj 'ʣ( \W)ҙZETn')pKS)1`jʕu 19.p)ʪ`.wv!c"rD[A3qDŽ kR* u*vV<ў?X4ً"t6V88Tf7~8L[e t.;V|) IDAT*`ua_aG@G*Jyf?mPʃTԾꇉTecHBkTrVGa9*l3)o:¦V+MP[L*N{|rЌ 3?&UpB1Bkt tQ.E?ͬV|fӻaG:~oh^szB]5CcGRf`oa8ihŧ0ins}_WA߀P*ү|pgl;|0FU/hrZ(<Ű*Zf?WiwcĿ)-(D^yеNknT8%4X98' 0 E*08#b 8 %NR\}0z0E]j7sBVם6ޟ۴u3aQq PT}iZ,T>?Q#>itչV1ItԔ +l㬊, lh; @KDQq .F!f$s1N^4uN&9y{?yuV[U??!  d{ UC\< ~cs2T:Q jU'j1n#c 5D6rF}zGkOHf iZb/,hdk K^پe*А`&)Z4d~:HE4UbKF5XoP JԿ700UUfgO×/ H́薏N=<-߷``t~m^*[pCO:68XV7[aH%!40!W9IJx,>?R72fa|V9ѣW%yU e$J@%㤭'T}9 YatW*<\L&y #4H RB]<Ȩ2RV:}]PHOa^+a WoCNb>$Kr ח|>=qOa 8 `+ %N^\W+҄8{ZTS N=r[N.kE "0?pr[MS@ ~j>IzMZxXgh$2?į7Q{w\yƐC>Wmjv(B&`Agw9X 廓1"#Izis;$ʶ(ܟ5kÛF!$LBa5:v\4u~C$x/&~Փ2੓;ufe6[$׈b܏e3r!$mki,X2:@5Vx">Abbm߹{ܐv_+V HcK!O3,qVG2߻&X+:D[;[1+/VCq4ug?VeRka$F[P02LgxܔkW v;Lmw$W&xEpQ'^zfJXr`rX ^i21#,$Zb_w(!*1#r14 :I[w )~9DmJ3#K%OJ ^7$S;9<>u~ l_>=_Ś7~ihG[bq|B>n3߳/65sv=&⡎g`&MQExյ?P[߄1-୽Â`Ik"ow|G+BejsL_CvVkG}o>)z{"Y,T`2Ş啧sd3h5m/nInBD|\+cEVF-ps8j(Vҁ;mxLR`ŊE .֭8Y ШhsHH]u=PNN|觢̔mV3KBӴa k{r5w ̠TYTuNQ_ 684N92_~fB/r>e%M$rZJk$oG 7i;5;xJG[;Dm_VJk6Φ %!Lsu ?? N%ե>Euq8بևcjKB ~ 2 ^&x`|0Ɠ̒$jd&JHƔӼ %j( 4[n8* ;lGJXػ/!W|̋w9y !Gt^)T{9֤S6L[7wyE@:G'ajUcl#?)#>}{9 vt:agmOqydJ'♥őAg¹Q9f23J#8P^Ŏ,o"Ȫ1B5v܍"!!f7>9?:UwG~}.\ZeKWDF7 AlK;u"drn\8WFHpH fh =G DMzg6MZGWxƴ׍z6bs?PDNH\O$Ȟi}i [ӵ`D:R ahu%b@[dhNlo{]Zs//`Eg˩d*/.|X*FSde45kJ,%hCT/x0w#)Me?LB0΃Ζ{BHI`0[5z^烿hc(SMr ;2.n~kUW X.18~ɘ9=GJCf pY03HQxhƴ:>{=}gyݬW*5Z2G{Wm?(H TBBĐz2V.BO;iϹ(75REb!$U˻QoCkl`(qkyxt5<GL.?u$717j˹a;;P;jNZ  CWҜ$qa+Ɏ@mrôxz`͞ ϧCjZf +5'L\l} Dg @ wRN'(=s!˗V UJr2m4 DKXt3r1]JMЀ|b]"eYRíR)N;F,,v2mqNČڕb9M*T2H1Ռwp= ctV{q#4)8zb@$<_]}*FAlydklç9VOnǑLJf^*k%gr,DUK QYspyIq#X$sG\hɳrCdE": }\ 8!9j D-JK~ѨKpZ)GGVp1dǕf.o`dprVS?Yv ,F.s'x}lS>8ѫB%F >.n}`2yTJgITo7N5@vh%KhR ů0^-߱a/뗭Z5I8J$b'~ WJ|z`S@çLUγ%=~}-"ciDfҙʭ~`-!]~Ue12C t'iVyVp_BC ^'8C\Jxl>f`.3Ȇ҆p)ONڨdsSW]ۂLK,h!?t@SϘhǷe1pWNKꢶqgyM9?-,l }dPEAw.#*5hO`'ΞIO_Ωs՘qC_N:~(tZbXNpN#/BB-4E(|V*!aާI쨔99|b8sMya xFVڷ\&R ҫ5HAfA7'6E"f4|ǵ& c SalPq;H#Nz,w TCM6$4C+};j%eb-JcuYgA厊m#F]=2?~3QytzJTXc^w4 +ZEI+D3Wly=_A"Pe\hu!@s1/Khݘ gxSS_o `;e} 'b7Չmk,C^U*%ϔVtGmzT"kO(^墖3SVd񓓪vEAȌ>K* (Ԋy} qs"x2x .grـQRQZb|יBG+ ]~-bCY\-dGдgG>^kEfUMuMIR_ "`RiGVr޸! Ku!X7!ao5lEπ@;wfEZy0`1^edzF#yV9=J6 XbidD.[E&IW}v/r3P5"f2h]FXi"z2QnNM%iũbO3Ӽ]-԰Z9p.L$Tv2m{i"1}/4+$+Y5s. 9."ԕ=ǃFKSAPuY/5x$Zdg/|2նH ~d*seԭRv`x{s{0 @ e;Uŵdv2JψFI"Q]fE\'|ZOt0Pw?&(IĤzdm-#׏7[?_N#(9-Ί?! ȝԋ,@TdF]}A9<J1=94wUgLuہ/Pjb3+2S+(:E-9 PmnvFzR tA"04;L:#(y|hl'C)ܠjx_)?4>X넟IpCw|7R"2`Jn9[+%>nCgv?츔ጶ46*2 nYg"uBB;=71| АyT dՇOR ڛ6`b-@l= SB#('`(`"ٹ4#0 #W{6[J~<n qq2 %:_&j,a%O Fmzn;ez(\pwO!Eo9oqQN@gh-r.<%}vuY GW(YFK SV%Z^u\+3:29t`S+u) j-cZC(ܓG =?NPFRRkI(H`neDf WGoh=~ƪ(冉gv O?*ar,?Dpgֈ^9ŸqAx %ȵ*(Qelk [KǷG}㋧k"rgWCRQ;`0Ήtf&Wav1'EL^[ѶL ,<׶V"3mK#[8Bc4@w446" FDi%Bhf:$sg#xi@z+ǩ:Ω z[2) ZX6v, &rc ҉f -< kE?zIR8ߌ!ό'о q8iaƎHaҩ;/gg GSµaW&DZβaS2)) |Щ~:al,|^7YZ$K;ţۃ뿾{L&*})]S0^Sc4p`UX_P3v&rK؊h&pL~j|4 񽽽53(b0@@:׷MM4n[Ahp rnF3ms#?u l%-w?ӡӕԀexgFIhY4<蛣E(C6'~1=.sQIDAT D`plPqDhhV|JQ¦YSF(t%1XB/:#(Grg*]"ḭ|`0<Vwd586<9`4I_D. 6vosnvDSn~HR,~ *OvLd?`cqYYBp :RS^ ӦJ99^~m+>S;:9_e+>ߔ)m|*Xd;oWH 4 uX\Z"T,L篸~*@ 3 U(!F5xS'';i=RȭZja$7D-ZA W;g (,/3Vtg7 66uN|m,Lʧ~kD-Nvϭk!DHfu"X*)gBw5bj7>RiK]E!7a<糨(tH>_6eg ,]q[}Cx)u00(0'4҉)ƚ.EH3ԅ|aU'a=]v P8dHۯ-}(ߗS![H 8ЈH65q &fJɩ` . >$|m9_fBVӮγ01ZSȬWI*9ꉿvӂI/&"ԇ_>h9)x~ VJ<6|QN,kѭ_?uqD+*nXo|"N=}VS-vv};mvbSN7ؗv4Ooƒo77]6 "ÏaCL/~]88nzM~1A= Ht/ qD.yxN"vݰ?yOeN_v @_> w#GlL~ ~}%e< EJ^'3?Y=4q}#Jo fרz#Ǜ6basiyccqto}A4C :D<8MDBv;-i^9?tĹɒ PAG[.>jn@tRNS*&#(-0,+%/).'$"! 1235467 8 9 : ;<=>?~X IDATxVv $Qw qMsg}Xg|fncD3,q0bsHMtre5"-Ҽ6hσima˜|麏g&2gŗ>}~]O/G#F7a7!]U=<)b\q>jeSw$.g6.Ӱ Ÿ+("seyhN%7m=ϊ@#cMTHm+ "۠]+,?,eJdiO46}dR|2H*Ce]":\5$e~}OyAAnX&rc'Ȕ^;3p0Lu8aYU_Y]GxXM付fDp8v4voHw2o İP$07hC^:Fn-fD!0ho?_%i^?[a+ #OVkSKE)zf*je)=WhEδDm=߰vEVZ⤅n[ڠ6vn˧/=tm8*-Jy='a0-8.χ2JӬkW1RS>|8[P Uh+Պ|3teq`Aa*LHnNo (~!0eX11XvZ+!Yw~@[*0%`פNTCG=<|\c,TShadK$2"Jy?˼,a]&Vk׵NE=+JGd!3el?o )t O2Q_(qj|xm"\*Etnզ11\@օnOc_.cej!fa]pq8aZI VB(xT+*Ӣpx^guUqiWGP YB-96.84]pdC55Bx0~)5A86}/H SSnmɺtd*|ғ 2-[nsv]X23~Ur3y1Wăp+ dkEpk%UzH0+"P(m`)aS=2n[BNRCʷM;9zMbӜwYD25F~pXڼEN FpL;K)2A2+22o|zi'ui΀STS wuE44嶞۱#cv?t;q] š,Ƀd6G0 ɁtY떛*>u V }}@ǏNs Q2Xz^dC͔"m6^B[[.bKJCv)3I~fk硅N,;BİU\$py|XffW1ROoqvFz"|XN޿,m$E~yNܗA1,1V\:PuRezdzM 9@CЛ`xUt)}S$,imm$th ܞ0 l0M4)'\, h(pBOp.8@6#Yad/#Q| N@DhksۮKYK %k5Y< ˶DV(SU jxWq1%GVdUGyN'4%U;b+\]k]m]e[:ϲ-,ʏ1W* \GJ{ <=B[ pTHb<1$T :rzo$7Ѿ n`"筧B 6?UGB-n? ) }KC`I:[}ۼYv 刲6UtAܫǾ, q}}~<_uM$46ƕ | GBH@)Jc"8@D1Bs|`|dᤐ[[QܕFyK0P+. *-IUucaǨ&]xv萊:s<"<( 梚 (=JtY]WCwm[½RS4ʗ(iJ4)k_ Aؒ p~Awe@#7$Y*|B7K(pM&D vAan\.hָjqlh6;$мtdF* B)[󅄿2pIs$*Pް 3z];DI$nP {x*"t/GIARMk]H1dE@jrD6!}[ϟE ;[BH|[b&r$H:8#UQ)`%E@\0L5|,JˋnUA!㸼}ކHHpL'yFж}4"|@FI|A}$r%E00N 8O ›SLs#1I\-7w6tW[x{ͼ$pd,@~'/27qi]}[6mi9"M{nswCoD3B4I,Q&uǐ,;P2 l~d(n(AU,Q"%ƽ tHF䔩cyl.?ϳw&Iǭà#rg~#>'^ݖF\ooYe $- /=}Mcch<]$8]gG33׏cZ`"j۵HFw H?b @K G@7 `f o / K ˓/z ~nTPl?ZBv]$mc}4{2j]$<_1\v\F~giڔxB.@u^gd*ϫB CP8CpZ #0\ŚsC:P\ Ԥ`jUʀj`)JOEVuquĐ"5 OU1͂'Md 0 "}5oc+]F,+R`uQ 6R6BsWkM/ +H{W}%'<m]湣aYx}FjzF$Z7ѥ51_y408:s7U&"Ӭ"(.A !g6ޘz !=4L/N\G|'4λz8- S|4- s$jƒ UO|6۟XhظJ^`JZAk\}'\Ri[o]!;3 $I')QBi][(UI!p/~NK.8|CܧK?3Dό5iJ*da㘆<c ~8eYA4*M7]ND:^&M9ޯFM۷C_R'CTUć(t]mGd|7a~A8uIIH9c\ޚ~*$=kׁ|ߟpȥABhMpT&9:yη݉PL3YeY:^X1J3!H&:yHr4%P8M\)h]uuX4 Uhb gJ@@CKge,+BK`l²P+dVnWW78'e%X*o&ߣ(헱key~'DiS[2C%wTIns](Tt9" C c b1#.1k {C2Un.!qQPt#ӂ( ) 9u4?%|;]~!\QtW9ELUvW)E]E3>MNHl4ˮֹ-PA6?/o9DX\Uϊӌzۮ€#*3AL1vh Cm]h= EaEGhH;,spXCو?`]J%M*ta1~kZ|\R y٘(N0Dw7IVp`Ԛ1g&vu.,~.3x iekNGP,DFtk-8)p6J pDT5s)Y(@(:|c ?wPO a$6W0j~5ٲa|~Jr8vuH:k{ go0~pD´7m$^/kXyCnh8 .DJK le%@p4~H)n+,,24'8f Zt 1EAdx=6SkScbԭE 4bz G~ދ# rFw [_ʪ%鞏mU=]0 "~~j'|Ē&a>5p[)uŴ%y&D > _i-ZhXlynD xP#u% sg#",898Tz9ptESU6hũ@Q1v_s!P>֪CaVC4e*)СӡeBU`^΂aEC,xBT\` xZ(LR!0YmxCpdh:E(0 a|]SX2:oG: %{(iR9>͠f[9),r0wdC.>Ԙd\]#VxEL" +yR> ?Q|p^ϻë-tFJ ‰ RǑcMjpIL -U21uƷϘF uA0Us䒪_<ˑӒ1w]? ~u;\彑QœL3y{tm] wIDɖ)7mT80_jݷS0]^|45!HA+ߨga[Xǽ@OpQx z9P-*ZRsc\ᩭ;Dq@+<# 0K~oJ8`+6|iʌZ d(\ Վ!hu Ygf ZLLٯ7C3g(#WV~Dg? hY͹>8"mبEiUz0E]_ g# 0>\N/ S\Ԓ?If&z%|R~{S)mnjܷm42}KʛLw5d/}1 q^b}]X\T .U"p *&@AۥSx\ rtBtTgD2 ֮N{68m$a?9 ^&P93ز1?2nGr=#tBXZVl(G-X :zuQ PjeNֺj@%9fvď\"w_4>*"NQx62X$9.8ij)oeg`\/: \J-zn?7ͨ4`W;=Ԏ.U7_<'in7Lx#BH}d~O! 3:XuFEq̷ZnǮw.qUx{@,5[f֤&k넧SX!KXnEB<#>t Scjdu+bM)fշΗ^J浒Yƨv`BNXhR+WHAfyqmyZ`ޯCdeo 8%@ 1@EnxMmXnQNx߻q8JR#:$*\g  =f.)mdd:HHRÃ}XGw0,?hlM9Tǧ~azd<%ƗF? fKgDٗ7dTwIp7<- *@A$ȡt =ߏvjmBߵ#x ;fIwuN=5+0Emz˨h0Zr%BUIW"_:}Zr AoY_67|6c־}5>/G 01?yGie-H rdns#+@ 6t=4o4N^nKuΫϟ`.A B3m} ){DSL~/:1Hn1 Vì}/  P7O 1x~lf X "[@ "o5u+ruSfuPX #5,$f ] wOb@HT1b8,ȑPZ<ZivD; #<<.D2L8 !L@3^r! X΢+L!{9>C/6ja5`2/k+ꇚg|VN$)cיr"&ՠMQTē}ӗswt"ͨ]; \1VtԲƸ-hnnuvX _eBhR"!#j@e SkP ❵@=pmFWp`Z!PuC 훤jhǏ▩4Gt 4OW\6cӶE)s]Pa 7^$uRn~[|XI!_Z?DrJBS_$$Tp!ؑxjc6dGJx}~?ΗJB>#]jB I4 i9c} IDAT,d觹(2#+۬ݲ-=n Nbp""GW#>o u |[溃~ﲒXg0%:>/+%" hF͂&;z#Q3Xaޓ,wM;*8N mh?|45 AEVNyyާ!Py< u@ W &M%myyC>Bfaz}um*xi\ޕ4CN_8*5PW~zہr!) A0 uѠ%MSCXiz\$Y WdGߟ}@*SC2~zNӝz ԣ 9mPgs1EO'R^$]O 5RtVϯ/۶&3M,<oؒNɆ,Xtm{E0X[@i0E Q3KmU > F,&Ig{ڰ B]^Ls؝F8(XcBwc!%ˣ沵oc4R%8Cy;%>]4 r=5,ܦ{z 6HմZ[O>%!DRN)bm>t˺"qr寧!6SZ:I`hY8`$ Ĥۭm+Vth6*YziF=}?TcvWxޡʚSG`mK|:+i0GC͕\:*eR%-MhZ7ԔŴO:!  yZq)_6O_?pm |S\lft +jFŝL s M=MjZEt SWOPc5+\0EDtxW%8 E? |&z?t2 rj` M8aCQLX_@`KX=U?LM`HN}}ӝ3tE-I)>Ht` 1s,wLOI(aٍ GkdkAQR80cCm'ha\FJ ѠV-5QDepp1]B(A"![_j$@)8 OavZqށJP؀Rmzqz6@ )/"T<(Lj kZU{@u0*5@hT+%~[zy hW-&PáxZ~lw_.χ̨ WX6x'Bx|" ܏aѻ ]E m|ud˲Lυȍ,TQ li`DؤkxJg*0Wi"b+HG!X [ {܊ iw׵zPSw@8gy{ǝ:C 9bxj3Jɡ:¸}~m {F΁_9bhXbTu7i=ápiEwk< M1jVr5>wFܠF[d 0 (DjsH 9$rJ+U`:}iڊz0K +{!+YRa NC O벪aX7{i`qپeټ>0%"jG:@Nj Ӥ1hcj%=Mf]ߡ%8}4&u,G*W_î(J Ydc16#<ѽ8 x FTfi i ex6^,CLI7"qDX) /uD2'05*h|^sKq%PvMڅCYatJ0?3, EWUBz~0nNJRn;HePt]R~ybr7S8q9$%`DMӸ$2T-1ua lS]:p .*k(,h-a]ϳ.jXfm璤s1<+=V1R%?w7Y 'V4\ mG$CN.rA?"”9#BSxJWZ~sѤa )<#؉ AgMXP)T[UM5U-u|4 %ÖQ[E:7k\ ]d fĮubۉSS1OF t;ًbo1 l]?`ļhaWS^yѥ$#nDD7ip,;&wb(K7 [W8O -EnyG|{4xXo_ֹ>|Ej:{ׄxz՟q$2iEm2 F\_FG4O5+ل1DKR4MYub}=wv6䎳{9q]:Q`2o1Nz@5BJyf @V4C,Ƃpi'3 +ISKxvo=@SӺ܏zXw*r@`YssE;iBlZVo4t$0H!Z#i`iU(74z:YפuKE~r p>ךɇ|=wmcRC˄z:"9ɑ*V:w^Z$o#`&a XYHڙd[殩my߉%3vXZئaF.N2a)U$NM B/4(2P{.W,D乧lقt~P̉adK΂~X2hN"٭[װ0b$ "c tmPHSKTey>~{ =隬>\u |kcaX0Hw׽Iʘƻ]D& I̡NR}dcHᓆ<*>JO['i"7pT#co{632'}ܟ^o͕'vp:;G|d0OC(hKrYB#&Nv4PpiRM1rX|qH>=ET266MQ"*`5&\2}x=+4 ӟ)Jjr GdqϷϿ= mǑYn)QMA4N9+H$ex,)؀q^^x4A쉨(6@-v;m_A PBU"A>WO5.b-ֈn.UǀVCCM?wЅ}a鯵+l-B~@9R+hPq@,1O I Ftr@DUPgqC&. ujcI̝g@@ 9YZ,x=d{t=T URDpL^݇2V{I߫WTUx(ũL,ě8;,m(s׃u)طx/L1]7zLց^BxqS vNF 45j$$9V4.C w+"*Cmۉ\vJKe4ɀ<(2JP Pm?}?Bo:TRQ¢HS4a+h(z?sC~׸AHey"4^w^;W&@[ d3s7_Gf4ߟ+]d@K;>;ukaQ9)2B:"'m]+ 4@5&`ݢ#Hv&|{~݆aX zhS }Lgsq*3-_PGc.,E 9r:R!`%mjY,K QA z2$ 'fUjkk LYP@;%VL`9l)BXZЀ;s}_Jp=/>qϛ3~6d ">s<dC*]충Һ. Lje47mi]wAj$)LgăFu شd$p|: K: d8v2G0R[ׁNKg@Sʹٯ9U0X%5@?YʑT~ 7%e#6WƒI)}[St' T+]ʧ`6H*eW Ypt~`YH PG0_ ]^<4e 3/w G₆H/8A֨ˠWRrex t<4eR~rq`ՑzeXkPqM=A*B:gJ£7[zݛCjh_/keP`㩴 T@ʚij,_sݖ EQCgPD8@cm+;D>I pTbYb^W@pi`/PPO؞XJw3ovXC~>Λ}9oq-C/q̌+.ed#)%4!x&\Y׆WoF}@]Emn*VY[@8h]rA"VA6Ì w>ҬQ<mReIlZb1'0fbmO FPIPxAaGǃͶTi4RhOŰm\:4$&Ќ7Sh(UE$rӒO V,;z3\o}t:=g9G)ڶk<κC$EA qmI]pܮ$3wlڳ,UcMpGb|> p`.=+&ѦAdŸVp|ȉ* a3# ^zQ1EEe]VfE<U Fz4: ƑD#qߗC7Д0RBI }ZQ<M ScQ2!Xb=H$aL t_lwJ/ixNׂsV飻viphF9c IDAT$H:7S@x>U S2%P =(y4Ck+"4"ǐ U:0zN||lK> ˊg‚49#K=^(lZK9mcJۭ%Cu=~uxoqucoiFf94=!l'KPTCt}r#~XFp=H=j (7Ck*-,݂֏K__Knţ zݶEDhǪo9t4zF ry%$*EF/Q"32~ GMyDd2PpZ3Mi$Tbȃ.֪|lTR:#T[! :Ol$ yEc lV.vOvlLͶIis,eVe- Á؈D@ r҂^%uQsb8Hr=§L PkRg{ZAq|!]Π\ϵcASFQHɇk\CC됐t}>5ǵk :X^tggvnKX ">蜛~Yt `K_ JcX1l&IƖN"-B͕G"(|4AjAYE ZYOK;&j8rƱf@Zg%R.Sv'mbڷ}sCqUn!:ʳ4tBs@ N'dB6RùW|eV d{]iP0i>rhY= *6`\u&ġh&b%%St [U ]ҥO ҭq@.74|/k;~~Jh%Hq*;ͩo'Dz@- #@m_2 M>nMO*&yx|0z"1r-Uhias m)MȑR@]B<﷞5te璣pM֐ZҸn =2? `Y>폙ǺQԎfkKiLɖ~f5"ʇEDFT>uӼY5TE.&R~xA5"?b]L~ywqy0PYn"T#4sifWie3lh P^[#HB"0Zq/'|3+37n9H\־. 9y/.JE! Q,5B IF殲 GCG*Ѿ( 8pUhmy}qshBZcdO)׶ 4 *IOkwGL !]-Katiq.$4$f"ɟ,Wh i&zt t^5 F}_.t> Z~ ]r&P:uNQXv<& 弧'!{D |!x^4 W7yUqy|v<0ZoӅ˰o~9ox3RH u%5?qN,dmHfIY&Х8瘵FUTQ 0$]\kd{ҞvkI]2.j?C ~P8pGi4 ByGǏOR,cL+a3@n'~Yӭu~Ԡ VB1f[ϚuAiXtB %.==}:/ˌQ/2^C7w_wD}:n۾19HUzV*R5Rz0{b HnY?mYm] nclI- _$@P,JR:=ܾn#2BӉ@wNj{Y F|bT#9pހM^JeA?F*VM;>ySh,=^%>EeBQV̛t.Un2xA* X3hS g!K(#ZY^=Jh^䬇X{UNrQ@* 01mrr\yXHu`5^?jrP, 'kC\IL@ 5$"U!u|/OaY{{o*P2/SvBzQ_]TF-C ]B+?#xl*,*79FZ% sfQ2-g\<+"ip^hr) E6Aܛ!!7]:-Aϸ: 6F IPRZJ;c[r09 :i}(ѲL.y_$ʥ@__2ZB.XsGF7P床kr^: j_5`C,"!`VLB1Mܗ*[%UgP MJoݧY7ŝQdǣPBI"]`Aiq%!l| ]d]bUM!g9 >CaMZ^Xm5n(O,׶ӼQq'h:mb|:Ƅ=RaxH> Ouz(-|ڕ|BAGJ^!cO },5O߿_2UBmm[R35]WC 5IYӘzy!˜KϨOڶGV쌴G˂|BV`0V^8J+)ɈDr,(t<2"<* mZ{AyZ9': oDCJeڀoDC}￿7K؏4z}n:$ƲePO^z>6iGx>?7qignN7u4zVفLUa%]U1xR:xUTt >|j}unģez?y84/_xax}75+5޾}8:.eJ[UX'O#cw"_#J=y $p+M-U> zk[{|L2 Q;|jAs ֞VH] }Z:dOVm02c+Dtx G>Orӡ~?ulqAYǫJ0Kd*:MZo(ynJw}%҆ M} V2z:alw]E5lN]PHpwmCkx?UkS,G B(>}yFM~tqjTKןu~=_ $#Jj|>%>$9=|~@7x@!kӹy ,԰I@_4V{N n[;F-+aZC@HAYO`tȹLhݍ[+t&hǧ!Qz<ҕR(L980B Os/ˏ6e=ijGGR 0ޏCDb2ݕZ+U::=$yRf@sV-sVAPR5NiP~h-ЉVg ƺQQ@e)p?Ven OTۊG-230@I"g6w :}nӺrw-C:#Yq̣հelد`79fZ^*pRQ"nN FȺ8ݓ9-8&q ((g[scxwuw]bA=y~< Ͳi2߶k' <>d=s k]y` &xOW[e+p Ǡvsi*ͩ>+V`Xuc>#>LQtE@C/u]OeY&~Q%ӜJ:ȯ5 pAR Uj_*9"fEJ:ogv O.K2yw~4\e &mFDB415:VL `U4EzC#`>4MiͶ$M*gGm[ee]Fb&ːvM +5 YR -SIBmkMd+׿1L^#qtM msZ^ X4U* NytL#PKoO"NJrD$t[zDJiS` +[$ %f!z0ǫ‡[0x.[$ב`$𸙟aʅYXPM U01GvHBuUVp|JCTuq,9r`%h[,"Ǽ XaՀdK+\z9@Y@׵@C>bbM [< 7Ǣucf3b!|nk&˾. ]Alh[la,Ms˗pҷD\ęle%+m{£sM|ĪMsҶs-]@Oq^!א> 6DKUn5 lCz .Ջȣf)@Yu| M+.Z*1:T XYyoTFUz\-f: $!TZ} hv|f%F'E4~}?nyݒj_7m[y6 IX,S/Yon H햄+d)mQ5*RāP'CiށoP p#"!r\H'M2m.g=]az($"g41c1&IKP ƭ熉`]H$\:osUTۚ}&Ҡ!57]j.06*f9Cis=HA˼gSCnw9e"z8Á?Jak4I?KsgcZq0{~~Zn 猄jO@%i(%~&39])@,rzq7A5 h"Oj(h3 JςFF…WCIۦnᓤGo2ʷy}h5"-Y%`DގcxOsESܨ"b4t|UҹjF%{92N&RY.qʤN5X-^/$,hesc& DCR"M_ yZҍuFÁ{o6UQ.='Ǻ|핖:̞Pu"m;$0_x栏fv=~)띌lI9V%# 8"֩ j CcdEQ lC Eq]]{Kub!:A6%R5W\n:-e%? uRb,T45ْtG9z0D+ɇ!DJTuJ7p1zYfõbt ;Z^/!P库rkhTkʼ\ULpL}M .YSpB–F:)(gvSrC:˩3H7(4,.vRM!NzYw0j1 0JR)vu1qsolԦg3E$#wjer_:|f1MsC7~3B *˙O/6ND%zƈ롤ŐHVK OmIwG*ў:35 CivβF uF;'IQ0/<ZPJ4)=Y"5i>QGfq<7P8-y=<$:YvspTNk/]aþmZͤ (]$M;$V7Px(@,cQ0TȮl9SLe| QC.\KS `cɹ0WjB_2e@C* LqJ41ۯP{H_Wq =C2Wuf9!: r~*S(&&Pi@+}`1Rq 4aeTɩG͐aLN1hk a͹#//w2E2H2En'2~sgW~)RrYw_J=ssjlzyRh楗TD16pxEF4̗??pǟgag.(8>P;'q/ IRJG|YPӒDٰ- 4FM-dEڶWq2v u_W !Uȧ/R1_7:x5p8LItl=Pw"5np9\&˒ ie] h/@p%M\KX=I[@P7c#hU=g>JQfآꂑmec-vTho;YZy$RJپ}msJ>۹vt^8,aZqEAm3JRG $DLR&Ntq\.K*C*zw6]m評(tPĂ%wTS4R(AB #H)V"UэqW`庖rkxhN!NtQ؉ad{{l7OK,eMW5IR8r0I(IgEh.9U*=x<󲔂Fd%$SJX2h !IEf 'HHNk R-&(, H C^r nݷ(liojjyUE,;9<T# }M K- Sz^\YN) -"+M\A3"+LCaCמW8- ̡,9L4AxLz$Cqy ew^GB"F>brۅdPz2˲=jZef_ 7D[f֧!){h|bJB&KoGnBC17k@a9W)kpɊ` K]8kj[e IDATs ~/4 # P" H ;YWXe?8zcײDېXKЈ |)f U\݀>8(-y04qNyy%rN}ۂ/t$L4GT 62yj \`w~Z֠uk:nm 1 )&X~(to1;Mߧ+ԺjC!*2GUH2=g32&R"e$ߝhk۝v[fhA"z"p@8 @Mcwj|u;Eq]#J[ŕ@,l6퓓Ifu=%hUw*Zg}*ɓrL +N\cL]'xhGӭyؓmʸˮdˊҖ7!V}p-9s0DΤ(/ZUN+:X9ylS4:*L {c!;MHƝ+lSAйv&S/BďNXwv9\Pe$#x o0"m5[$nkĪ0W'ME,memJż͕d.Ч6% 넫u(tp6tt>d:V]]@7wt8'wy zbh %eI4cDԎ|dtNdr  N ܔöz0hW%Ȯw-sb:ـ) }$(Y} ܦ;倰G'OI yuMQmX+jҴh lZi=W":!͐3Tto)&r@D  {^HY|(PgWMGbH"0lK緽w:z>}QC2@=ޢ;}@i|oXPPTxL@H> $*.56%j{t3ԕbgǤXHŧK2*3\s7#XI QW@\v~,&\r䉙 Wƍ:R/AG+r#,Z$WN>mUB{%2QmomSĤ]D >qThZr0nm3x7-xH^vWH8 5Zy֍wYh#7RPn !#Pex{nwg,7"5i-~PiS@o" Zm#no)C͔PCBqxfl$[u}9I.L[S}E֖Uw# mƶ.SATF;Ltdҵf͛u6hUSgyV _{r"M_ގu?K׺()PU]ZYYk9։pNO+%3*3" Kko-nХ%VR١~<~*/KQ8ug KaǃvWm:S0euyAW눤URu70MVpn&,I06mGtDO^MDGKca_Xl5ptm sݶ1=koٙD`A뺬T(KK' ƄI6Nb*H{EFt@1MhSG_oa$tLG85Wi~Ĺco/O(4S(Jn{Hu*]t< `DIgc3(,2y&\b#qy܄y#tLMev*(WUf@\nqIa^e7=Խ(m)hU}߯˹3V: Me&Q1{V2/ q=9wKY#ڎYϳ @Mx;PGoor)FѡFITK̕l ?(v/'VSrB ^u9 Cj HLQby+CP\/&z~gqmЈ!ᚣ]Zx\w{섾\2y^ '^Dq| (?ކڂqMEҌ@S6G"J乳<"!e9㯇.eT>a{W8wcȃE(幔JS2X km+x<޺e!%1u; .>u{{ gFW!- "e#[ W%BգD`v*dIL|%}r"D,8ֳmGP ^#/Wӣe%cr`a9uh۱>}0k'g/4BsҤ+TXL 7<'m#mXٷ9A^N \X՗JǶ[=vBȸ *?eFh9 >Q}Zܗ_)t=[/Eg%S@8+s;jeu!"vei K-c+$I3t[9sjBJ,' C(|u9Il>C:㭒 3V`R(盥*LV-%w6 >NXju܇λ#R,g/cq 2)VB;`₦{tnf{ނiaF}++.e QolBvIRĔ`cŻ /"Bqݎ{xe94%8YV]D%XN¤,{¾.˷&[G 6JFeSϿJ˷%U5Fu` ,7i<0 c?.M;cb-ġezl(+c`#08gUl^t݉2MYdiYY LN^}sKU]UW[XEl͗pw5b|Ҥnq&E}CJMgj Lݐ0`{>J3u^ڟ؈!:XOcaidxTO@Ǣʫ(G$q}VlA}3sɰԙ(7y]T=SXrcbNXo_>]Py' w.7Ӂ(+<y>wԷIJ*GAlVԬk @bMڿ~l(NWl5ʚx苲:~>-\Su@(Y=gFu#\bM% Fx.OXObAf9 q6D7MKS>}吝OD}>V`0&q;ޓy3%gZ5@a%IZEj|2??n}.u *mUyq8QVEz.Ǒm.x"R¬ad% X`4hQ^?ۮ*܄&X0abs#'u]UmٖJBUI*/!Fjཫz2Bw\]pYɋP/dQ,1 x1&dqC\Eٞ7/QrKj>`2B88k! mόt^O>6Kxox׷ ɶ4^aaxYM4,d]U bO3@DʊnbLK%}fÍ[}b+ 4Y\ NЊǯG6ޮl?Swau2 vWbvٸz>gmNbPkoQA8XgQ{"@Tf;b_|p'G c찵%|C&[ ?,Gyrk D^=K]!&MEY9|+.Um5_wù%UY313DEhr!ؽW׺*#ϲsk‡Gx /MNSjoL݂񶁅%{$}?i$)9\b7е_d0ܗ-xG oX\y|7nE>u'xe񼓠ɭ?xa7m_离Tcfk+U2.}a6}h&?ʀ%!Hei,,C;OTg[tS3q-13MA&<9PSU0 U|6K#b /^Y ~oH,u]e<;vTc7_*?(KåD,Dc7QkZwVz}=%( P>u@قM8OA^ͽ"ұٗ:=+x˄=(CAUɅIЪlԚJ@Y@TyHDUs^Q<ܴy(1޲LTq9*?,X]f* >/f1Co^1 ўT腻y}yJc2-+H he%X:A¨/a~hrf עVk\vwv4#YTg?ymuQr=6>L 虁 yُyz)<\T{ y0P"WAtz6XlyY(HgLϏ,(0/?_Es.fKAVdj) 3^>`l P0B>R/[fIΖ?{dA[G7L,fy>^g*$ St S8QZ*/I޺4tAB#z ܛe[9PG5Ʒr#=c- _?{6Qt4{,~vE V5Z[w)j`kז$l`|b2U˟=c1иӀGs hun6`|o3zҤ7Pked`A[GP: ًH Zf|d8ϛQWvF3/=BcO$KEgN3lۦ#{/{KK MKb$UXIb_iXPD1󴚿`]1eR!-"rx.#%70I?~9;[,fXen'1H+h-7?\ 5`sratʡKxT9\kHw/Pӕ}#m엗lZNX6&躪Dd^Pʾt};s|+w:R VI :90呲f鱬 k8XN־hG5c@^ IDATKUb>k%{|Kv=NDn kAs]6U5>ML0Mwo;=Fl5YqL?oi?cZ5"ϫ,@vtdS Kngl , kEVOͲbZ\uccAcw+`j6S̈݅ ؀¦|}m^,qeRE"u,&L@9 &Waj % /ߟsZ HHP(ǭsՏAY7&jC%X2yהG Ԁ5J|]{Oc)cݙH̊nAxr!.q=mև>NsB D.VQ4/x(mKF{`7ZV9v*H <+dlKLmٵ=H,5iU[쯉z-cmfdz#Y(ؒ~^T]"Ŗt2{4vr/\Xu3nYD_~1L!6+Ih@bt,v'xeY>?F3\D%,niQfIV/8)o\,̋KZDWԐHӢK&"Vl/G A;ё-ފnX>5Tz@\"xO1RShQ-LnyNTTj@)OCs#zoPNR{M]%uMSjNR _5fCB,KM*1DtwQԷ$ Ɓ!&EoVax=]./.`S '[*~顭;x(dzҡP_.w㬐+hs|~yC85tfn8&)(lq!(0,Xa$FJRՒU-[Kbt}ř`.UNR駓 R q!CkETx?~_/Q+7 G$}FeY5M=JT6]Ċހ娿*@gmv9 I`ꢻ>-)eRy/Ϸ*nU.i|R 8khU&Yφ lpA}J(:֌U!ڗe?\ަ2V@/pD\: ?d:釔 ǀ2JEuچv^kOi* ƞJP\P7lA'^ي N\; ^$, `Nͱ*3J 0T~V![}K%j^? a@@m2G,UQP| RjO FdC42q3}\>~챻_)O!T"n0Ll #^yq9wX;ݾWHGW1ȝL)u#mȻV # 3|[al0d& k/OR ^[ `XϹPH9[6g[=s07JƴieʠõS,ZQ‰.P#bQpN`g<Èv|'OuLx5j&M7- J2Af^.H8lq~YH ZT1N!t"JzD%BElJ I+T|ꏥfTwsCVUl[ e$ׁCbl-!vil}]'$iR[R*$y\"lfFA Kv3$Cn4 [zZ;"g{6_1#Q?h |~kdSXǍk iګI{3YBq]^z)Ybz(hCpshs1b隱/ tKǮ=[.O"kRgAC0'|rÀ$<|eRH+rlMXu-^T, ޯHop7V3ӭ&J( lCSW>4xr.umJ`b-%ՒR/8LQ` UeEA:MۡɅt4]ݎHi ;|5|*E$ot`x @ӽXVSu\)b2s*sb6Z"}vnq^mU&~0LXe40z.H #%LDL% A8joզ[,Z]ۮ*cE;Nx4/;|y<?~:#8<~>rZz ^+y{ێewe2hvS%ezy xɹFStwB^;25ϣivRm_ }xyMH"Vx:?Trj*3tX;$"w( )P_rda朽M*o} 0˞ۧEҮ:x&q nVDlN3k!XhKҩK1 vNshOg볗*We'|jI>a+v#Tqxܴ]bK#DPD)a iz/I׵ݸĨ޻,*V&u1oٜ=vD1E6qWW||?qO7: G15R44ȒԤxq,hS%-(:lj" ЏHZtSgq(fڇ8$:4jhvm]9n[[vZXff:zm>f(9UJyrySbd {M/TrB bZ*w#zW'tJ`)s*,KxzaT7_>׿ 4 ɰd^tC AE<)@+:Kg~eZד9e~lvĴUI+vs E_͌á-ڣ) l g^'nv t6Ufs覙)3vlpjUf+zFU{&Q}{yOLZeI!(>=}&p8AM#3%M3wP+@zf4^ptj1Im,4eC Md-Lud2YẁN0܇T u) (=!$pOܐaNk `H6'w %.5t auX/̈́ PEnWFKZ$_RĀeYu媿H4Ebl:\- mOT7c6BWxb*7}~Nm@;PKO|~-Es2A]RZ-Z̗Ȫ ũhtD'KS-8rR(xy/86@ޏs_u׼&y\c țH"]+# v8F@R \TLGj=S: $m̷hEn.ɲڹ.dkjP￯>^灚y \B]Q!u`c*,EVMEL 4- ݲ@3=t||݌}m,c@̊"LX I%_R+R4 3 06l9߫/SV̉ic5{(f`VTDI6mA?ʜ)$Pb6N;Y2`  f)ۘxq/'Cwyi._Ba!(.3qXAyz:aIvۀt陑o4dāR  ɏx~kdxD%h wTJgW;[_Ƽ :Cxy2,EeK@x{ H_XEP ndMUe5%Z֛OY>>mF %t5XG d2=P2䀬 5PB@i`P`LX>EZ@ {5FyQ>K$^plE!< *Ti(p k) PLSc$\d݇26^ r}ד?ϩe#ALz#/M3B&ucNF9G;PE 0?^Dž1pwIjfl"O _%U:  6窦1,2 ؒ*>TѡfU  9͒vz %Ti6ǥZ>?t< @$&XYB$b8 طLk]X =ˉt(|a.4IsH b$i}"r6ax7H$_=Ҍ]iEEy"&kQieWFR&p08K)}Zt L" >?dso"}>^[ϕPuҕ#tpO20jǀ ,x׍L3n]oǡ a!\Tbc! cÔA#% w(qLM8h[(,c shb,ByΪ]tJZ>`PNed.l7Th% z22JL!<`y ڒϹNo Z}}o?Ϡ/ݦ/ֽF#놫PX.g$p+|h^Țҧ%(# Qa1~N>n;^ W;??^Mwm;:BP"?FJq㑈83IƋ'mmR=0G@|*yPB2bQ|g}7]ˢLVퟏiyKdaX muvXe D|C~iMl?.քYcd!Z_x$ CYg9XȆoz27JE.A 7AB'5r|^@ d̻$8z}m߲FOR/i Q}a.6ibcub/IG3. ?D3j7ed]J߿9G,ye>FUFP d:|{UdTKKG:.JǤ9^ w-|Pï.na%maAXFMy<`'dQ0ݯ:σI8KC_sG"~NM۶:(`!]&gZғŲ GrjNBXQjf5GH?HPÒn::SI䧎Q&$fñ1E@)>eS:!6Tr:iԘL2 JҜsh=cN(uR85<ϛ>d@-EVG&}Mz*cӯvjʘE}TL p7fa_1`& S=o%8$ Vktem2[p 0#EeJ\RQ}K"i,pN,$Xp{!ޖQAҘt>9ׁ~y;)zRD~q4jm*c(U*p!haWD m 3VԤiJOK3v-‹ƈb773eux|sA:T<5 ݘIgU RIDATUu#FxQF⦑ >adPBi!Hs;E ;ZfnAiX$imEεG go6x5M$e6D+-/h5tu"0h Y]ɀ}}(1b !,H{l!0eWD*8=N^PX򒱀l:2Պ"ʄpHsfqж!m;l"UH6\{@N F5tRT9'[8D>[5h Z,)t c a6ǯ?ۂ =Pg% K|hGe]Q-CM`ڸq.C>(Z(]ob.ch[wڌ1}Pϗbq;72} ( C P7Wy'$HnY]g/Ir& nB eCMQEDI~xق,rN&QnfIl:/Ғ&(2?xǤ"C]q_& &FY( _'3,ٴEx,ԦpV˕1xvWԠVZ3V+IO+?2d˨]{?2 !~9WZzruoVrCct)PK(H37%Y 4 2b EqgT#(aݕ4:[$iǯEVDi /M7;2zVT1|fn>Zu;=Wm UN#*Sy4'2Gi`hfX@`_-c\e`lh΁zphkVaז=e.G7 ƠVit˹I} -YB5ySewQBK_Q7G,{jҁG(۹Mj~‡ƐY$͒A<ěYqh#0evhT4R ^vdIڷպe~Ey,(߅]#'.Z\+ ݭPDs).eV?dtհ-ϴk=rCM׀D(7yDg fYQU2XJIQP6zRup& :8) ;v9Vi #z?1Q= >z_j5d`#'M%-8qHqIH,-j;mMϷul;Nru;n҂gy@|Fi+c>>c QKplٺ.V-.yNqѾ^dp=B^qytbN?C8O `q_y~M 8±X4UR$12WlJT 3Qtb7 Am6 = Mc[LNf7=Ϫ^VRݴ`3vA"E5N<)EဝgDc ӐwHhQ:8)'(ffy~>_ ${rz|>-r䔊~eMnJ/$Á:F^|zg 4-)ş2ZImIɻwJk[-{PD1VՇo3v1fB'+Z+Rw-Nҽ|x IQ]1i,}?^_nE}ienͤ,ۺUMQvN*WAyfǤJڷ_Kh24,vmėRc/P-8SV/i4HH"S+gMSăt~' R֞ˏd}W %Qw73:C9C}ߏdߏuKP>-dvJ_βS 'vZ nmr<3 GkNk/쯮ĨA[,T4}hL8a^Zz i&{ֈ?$HIÁ| AqTfyl7ԗ\ XE”\VmM/Xs]Ky1Kɒ,f;ލܣuŃ NCSXH+9澗H%M;(v hJUy*\mAo :NKR,'UAB4i ޹g pyb ~ZU4E.Y{t/0^ee]3"nrk'ei͏JdP~@MXP3Q iD Ƕ^jròmq6Ҫ#q%Y* "L.`ˀqn&R;n"}261-vbvEI p?/EWV9)AP3aߟ <{,mXw~aJpaJ^x4v8ZV'Zy2Ma4/}??VY~h. >37%%َZu"8;"]#')j X_z]l(iɂLשpba?͡KSܘ'kƞCUxUv[ܾL,;*Ks=;;yKmYD(JK8 IP 2~}+L0*04Vy7:mAjcG_ߏ,k٬Utg@z;9Y+]Be#-i.p+2<‡$`} ^ΥY T>vpdb4qM@5Տ Up*. P֟@"hFaRB@%J}?WBc4NHۺm4iLN~xF_1v!shr"<&Z nQGvKF ~ԘE ^!);K7֧G ~g¦,//ML6ͽ=gEf>= )XA\Sť/θ/urJR=a 6ȦyIݶYX!oScn~=yАY*zSNN!B/UHM!?%F } 妝#n֩(RpnEos޾I $9ۜ/5< /x(iV㘵]7a.S%]rHU\JH 19s˖фݙn/ڌ{655um];Wѯ:?8u|{E--~$ipז:[}M> .TڡJX,_I%P1Эo/X2Oɰ7QV@D-Dmmyfݶ\m۫eׇC{*r5g!o4#l Ư g뚑BqNLyHd`M$MMȊ-u} ˁ}tۖ:ecykWJP-ד*=P|ӉA+`Y%֑`  EzERc8Gݤjy*9/q)t?Rʥ S(Q5er?IC$f:M(S^F;?OQ{e:R:fV&>K@F)-D APC+G.RlM;&"5: 4 uٰ9C>^r C4%L<۳0D56u5Z z%ez;yTW6b}L_A?u)Y:.(G84Oa"0c?9 .&"HpۖjDN~޽X˅``* ATR2>vub$T=$5@moWQNQ b q>@g(+1Β$UxnPaY5\JGDĮ(JgcݩjhF'PE7}~>B7 n Nr!iA^ŮB 2b`KGp9Jp&^ySY[u;]?Kq,5vN?T".S؉0 Vb4;fXw;K'ʂ1RSd|}>F0~Y{qߧy(Y1]W>>???ddd[[[888...eee000999///666fff777bbbaaawww```---ccc111nnn555ooo444\\\]]],,,qqq^^^vvvlll333ggg___222mmmhhhkkk+++jjjiiippp&&&uuurrr***xxxttt%%%yyy~~~sss'''zzz}}}$$$|||{{{(((!!!))) ###"""(tRNS???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????H IDATx|Sg C|\s<M4/S*Ew@o݉ k$Id~DЏLIk^۽Z訬K×_/Cd9NaaVUM1) fnF{k𭴑6t1_%Kz+ZNaX؉C!C5M ӱ* *VBmGȦl#0l*.Ia|B8iULHqP*sqE骭dJ(7:Ji4:ʰ?$cf jk2Fl#NN#vg~~vt?eYV+N|2)~\q\p<OFQZmzmd) ϶ЈH7(Ki*O9x>M!ܔ(g9[`gytCGq@tSd5=\iyycc ~zٿ {%k=.7zm7`U4Ѝ4$_$<Ǿ(}~]O4m&Dz1#.bI 4<oTR.{ I8vWk@ro7}n2~yS<HymZ~& եR.#awrp5W:?>ivZmǮ 3A`Yd1$ q%~'wm]Qs很]^. 3x 2]; QDX Þ3a]OsnjApͬ~+&aJ h{ g:ʗt xN'UՖd d- ~BtIQ>n~Y)ͣ~w'|N % |@ ʼn9N{{zJN-bF?+׻P;Q;{GbGzDGR- 4VbԼ{×_xf f!|i̮0.w_k&s3uyL'W]Mۆ4( $],&,TR5̽WYMB8.W|C.ucVϹxpOĝiړJe; lRo?Ɖ-rOm޿9{fɓHxȫt:{ KרQ-7S`4rOO;=`qĞdnɰo9؟#nj!_(JBQ~v%ܓz Oε1 @dk%6eJr%ϷVW23wZ>>:r*wpݧIe0i{iN9YwVkZ/"F,x`NʼncXMGa?@ȓw?jBT, BH_>OX|]5Ϲ;O.l@UȬ8Tc;e3)غ:뙒"rmf=G6ùǞ!Ҭx }猞Vb&wV8 w9\\:NTzYot#>O_^- ܘ}$bjճS`ANsAEMR4\.d_rwX*۳Ia"wwI3Y^d*IԩWNTk=#{y\*غwpO9wW\PL wnҥngи6`+x44DcXsFFBJ^hW(N'x4'TQ#<5v/~HSy~%3ڜܤ:r[.îJIiNUI|qGn埥]|7 ]|$,[._:aL ̠2"B bcI5ĩԔoмRЧWlY,&V;{ Ztyęō7h":28&-ƬEnC$rAo%9YGGF͎B$G솿;uM{i}^ᤇ;Yh Vd $oZtwyF)]7m lf!*1Rst|͝npǀ1Wk NL&NHz_]\DG O,ZD$r5)]H4J91ISۛyO?P M-9jui}y٘zwư`Ejnބp+wԼ߈&Wԑf>o#aQzwg;9(Ncfp|e2z ius>Kd<&C[[D876K% v}|~{pwN'o`~Cc\{gU"0 A[Rl;ɽRqTnaу]7_=K䮹}K$3P`KYK+#ٕﭮ.LmlLFG?tOS2>#!==|ec` w!E@SUQs7 L'*ܥteX,%aqVǯ_ K xu'GL9STs';2i: SLVxc\7]nKӀ=wnlo8~S/PecCK6f*cݔ|eDA{=JR [״dch_jquڒGۜa)֔^iZQ~}d`e+;O.P+&=E |#rXk~|Iۏ36zD Kρh ]z>Ϯt}='U֐B7˛鱕ӵLMJ!s>dQ*5B|VQ]+Ȱ3nu!4mue[MNB$OKId";^)awY:9-nc"_M rrxV[[d gT1iW]MV m3B]M`9]0K!6[, pc @j ߻3~YH_7äl zvy,"ٍ);ɯi=@{r|dثA?~tViw9}ꈏOWz1WK'%iQ^-L:+R|6lFw396ͺ_*ghxhK]rA2kdvN/v@{e+n}*-E7O]ɝ)+ E9|/EbcuW*+y,OHQ.ck;;BKլ$]7KeS $\Ў$+Wr9ɃP*}6w]N1˜vN~sitةwU儌S XXY\y~<)}(o,-4f4IwTH(?Sin{ϛۇ=??]Cf, pq>XsVҍ5ˢawը'@nd䍲Zrzx,YՊcU*`TM. N; v>_0k;J=%ׄê!w#phxxx0HLX`L iiyvHg*sXw3_'$gusm);GV_ED*;[_$̦A~NG{s9Ëc,<Aj<psrr]OBX./y M*pMMHsFw w;cOx;&>2s>fP)gkϹ'c/뫻vKl Y֘"v;(~d2.w fьySUhXC ktq #PBV҇{`GrzT?Ș?3se?xMZ껻J Ύ4Yw9"0^/n/}xj.<؅smOidOfxdF@|P*IDBAKo-S_>bvWgz=FQ `Qu=ףjoX?!u?SW9c{M|?xwJT=nG ۶(He@d&)vqi~<.tVwW? xvIWTʓFjdr/S?3*yL-PaEL5ib$M93[ţaU-ewv< }G](w֙ } )xL*IkQ`cL;5[zIv/#!&ځB.tb?PVkJӎfwuIڂ.RV\Ii@xB_4:m%!#XX!HP!TXbW::)yx~p3익E>ZjXj>srT$5Q0S:2ب$mН)H)Y@\;Pn)wp64}Vhrx2ITpN{HPϓ -8Pk] ^vp'Qr^\;aw~k9>*n`@4VÊ9Sx#UU|UF{HgLtdʽQgvQ2uOh "Ϣ*g3v/3Y%:fl=/DoMG%Pu;SBNpyzKNGW݋:1G^;К:[,ME"ݐZ.t(`>7*rj_4x5j3pory$2SB=g4QrLA9502¾y~T8 Ab)28ȾG$цh~٨n7dbH 9sU7NS{55{}|^wsR c&Bᮛ YV'M41pߠbcK )vkSGDݥC~MST@U;+{!6aM YV|4~}"JO6EntXo !Ėy XchA}~{] tDP?/5/=܌)y&_^7maM"̘VO ➚pi$F@qTK,e/KΐM.РGZU=I4=ixPn|B-]$7(&hӧg|@wy~ fmw\LрQ{,% Xt[QeKd%KRJij34~;Щc_3{(Qz' y6ig?9K䒒3P@XT=%~/$d"MRlWPg>qRDR6ݑ, @ocO@bwowՋNсhH he=Ec|OHt;8c+K&ui_rL/{L&o,UG'2_&Ç`0i3yz3u!D_`%swlTHg0$4nhw؁8BӬqؿM+I;2VCL3obL0'+_ddeyNU~TK:G-W2Qʼn~o \|ZV4d`f_i<߹豮>$Y(`W˫G_0u{CNN4؀Ptobd }pśu D\}X =xFyүf*.6-@OHx4IAs>D~}$.^Ov=D/G/ЙOfПӘM ]1N }|F,1BbX| N:.4;/">+M!{3Syonq1e^$ Gx8Zef͝2l[W|*,qxJMK#-tJ'/MJ2nG v32ߌ.؉ wZML-=?AO >|Ko"u _k:/m+'gb5 +{|J~k]lӖ෿C$ݑ̔@>IczF4*ು%n" 3s/0|&k|]$ܬ {݋\VF}*WP?mBgդa>^U{i;!Ow Vu^`3{|J#ˁc_łX8Vӓ[啯/lqEw@ȯ3]~i4Tp %g՞v3B^ q a#ѓak141 ulTa׭1Y IDATh4u>]0>;ekE*f^}^IFp"sGh>!&s`.zDAV*)tC0 GDV$tShQYoͭT_OSe>}gmxn\ᾭv wȤ(c ?{X vJ<&ɰ> x<ٰ74ӴH$,$ڰ2^\ JdӥzƽY Q2Lͧm}] mbt$b*ĄYl)Q[> Î]E P%ܕa>x/y=%qZRBهa[l FSU}:]RSl=\NNz@;aϋoݠ(CMvp#J4|Gӑ=bwǣ½oCΧsɝ%ey@Advg6JIwk@WSx|rX$ܛu<\}6Ý}!!zm^o@Hv.%W$c(ZN"tKƓNg$3_U^Be, V/MrNoep.7F;5o/oRF Qgc*qf5&=8Y){{6I}:On}v!X"/(05d܉] Ŀ~ܬ7yףoHR^S=L0 z0_ /_a՛:z=O7r\ƺlź!i"ځv/D&+Ǫh2шW;2m*=t2Jw$t,%zh B=0bS u'ǃIH@ &H_ װ!DLXc2,%/po)͜Tv\գapAiV&S|ѳI5ҍv"538]]YL/t3Eўv2yJP7h`a v88ChmZ t2Š [Ǔ--w^jB gaw{✌zIq) k':u]س< 9Ļ$'VN.QTHT'4ܯ`v C|<'VӯGxU=kf@/ @xCqNxzsVv+N6L{O[z\.oԔd%sHҊߖV$yoZ;s:Ո*D2!BJg^SĞl2@.28Ӝ }-@BSC6ٯ'电֟O'KvSF5ZPQ_uPM3Y_ ,;|É}/1f+gKe옌'8~>h<# G{T$eCȔ J`S/ҳ?7z(RWdžxJ"ڷ%&.^=?Da̚Tve ЂFQԳ1#xGdU=Dh;HرN/c)^Mpݦh TMݹC5v>pL&]L w89ņ/ʣr*x8#Nx&1#g^EmMic uA0-"Sy{b1A\Byh]?& ;CcHԭCmN+" xTyxH* F]ӷ rጂ]ތj>?z2 *#%`IyMt{>Wۂji~uiь]wH̸؞!Þ7{W[! atT&%¬%l.ڄȹ,pi6ks Q!xy/P_^Oݠ}:Sʼn)U.z"Uj{)wFE+d,_9ۍQzŋŨe9[o.KFƺy'~Fj[~`yZSȾ Km{1$JݽFDOHHIninغ֞&rOHf;CI!u(:[Stt>gfzߨE)wg[D T2:]o3\^ry?x6 SͧO?9p3]n(Q6}1SM6o|jYB%A.l.kz||Z^enp"/_FfĐv 1 |/>CôhwRح gg,5Y[+4(_v UÈb{Pԧ;IUc&D-s5Jh x0 xy;E-)nEQv;XA^Q<ޞCH!A wdS-=^B):1lzݶ.\fsOEŤ_z%_2d,ج^6cg3o!KhM'r廝.sB'7%G,tvXkoKC.&h6kv.(wtP+`C^~}p$a7У.8H3+DibUM`#v{/JMn}= 2-6ls`Yi42("\ܭtT{ѴϮ r-Vm_s"Y]/B"?DretAf-7;+QV3g!Cw'35L8ms5KZ`1~jeWm W(,a.I3;ߺD.xA.3#hVxݹDY*.+:܋O;6s :l}PKsT)PHY5j2B\6R\ϩX:#)`tV%Gۢ^r"ׁczt{R; Pd6y;\Yt5-k1wF&G^몕]H)d%rz~>8dHY%ͯ5]}zv&"θC) qBג%X. vM2)!7p#`Ӯ},WJkM>fKVdI#]==(`toF>7.[29v=1nj-43)CeIDQת,a4@tx\@yϢL!nG< {:83KfW_}}2e5pfB|sfkFmoRmq( +&N70[ h}|I34wĐ}^&˖Ѭ[$}% ٙ>1AN.&9@1!lVnFӊUQRrEjO3IR&t]Za6{ < -x:VT1~.v]%h/F61& :yqKL-X{I.WķW`sȣ;3>f{{?Bv"~2ъnl>B$gnՐ)Au~4­sr@+ o,>%2r Dd[ܟHίB6#T0\і>qxC$>EtFHS+HL%e6F5`­3^t:ŰGlDzܶrf"=IȡǞ\.$hK!fԑWSoQ *~M ϏSIZLѴ-*~MW\' \Sరl dR~#}Cv$ rY~ՃI4w3$Dea1NGR޷_Hnm!b D-\r)gPO^/Ԛv{4S{+#BV*=ffWl6SQmQv~q.'YVtlIYy@kmv>KKjt:Bsi?|)=TV+©z9MoʓiʲA Y^H5+M!/ѰwQ'sekӫ!Օ66 E}dB w0Uc/3~/*syT$Fmz=}-YU1%|c^Fqowˢ!)[6s.w%Dx0GPd7qd(|f8ÄBTNWT_64ݸe X1k+8An_~aw DT(1vVŗťJP3 Njjop kJ|AYm7]wͥ*Z `!vfEkDcs86S2V?dQRn Z$&HkeOc&V Kj_$ԄqdA>lo#Pcdc+0/7W'w"Vk涒6NwA/:Q(X{M<˯oF7 c)%Fnkl>R=rt T4 jjV^-X1 o|ŭ( )!d7eSPRSxB_u$Rl>9>p'ЉΕx/(厎ڻ8X $>idˋ_D$@b%3#sojh/߲`< 'ܙP#eMUZ.:ݜ{Tҁ\76=Dr&ƻq3z>Ie8"IzjIRex#iD$* .|3Dj Xfb* Ӝ51E/CD'Iߠ}nBlq`ta pK ̰ZkDzXAzuN"+jd}ً|$l%gV,9u3R֕tk:[J.Jz Lpw;^X6E ΨS1"OH> &ѿߟ߾}0x}N;gWX4sr2bILG ԭ#}۾ΎFID.DOŋVC햘x|ME0^Z@+dRP^0 h|QʰV3b'5}wCMBɰc_NF⮌T 5V5wk ^UY68bid9RLz(("Z;qxХ(PR]ZWtC{iwQ0U8/.zKҊ >3}ë<dݦ .!1ETR;&@y(vU;,f9FqÅǻ Elw֫R {Ár$un鋃|v+(hhn#EUG#~M9᠛f'Zo?LL4h nXʥ| ^y J#3$z7AvFbئQ\12zI_lf9!L߆.H6]9Δ;] ;bt\o+oO$7.gp`J H/u:s3o_S<Ȅ;5F8w81,۹亞|+Xf0o>=>=֕NOmBAkV hq'oBZGcq4/3 rVen%c6z-O(hv xg(Ϫ,HrRo,9GG#!rP  FIJK)ex/HLR:y k3x|hFNpX1@_;ѱXц|IROޡ$h;z162S=qܢG#n$D˭)gZH$\{Gp~y6]bF7,>טZZfQFg IDAT/n /=NIͿs~ ; b1: |s%oT'>r1-oiM2lלnU=:w/?z}ð_v@y$k=>y"kaC E=wMU6_a6h6q`G׃I-7˯ޛ軣>-heۧ#< n"q''7JT5ɒl-p"yN:7=(>&^t I:,^rzQIWRC԰zrK} o~= GN@Sd{{4^nF` 724b4j:׸b@agXZAז7Zʃh5&_İ1łJ̉ǂac'K8n}dTYCGf{٤w7ss( Rn|bػ|]X8ݿk76_nRӠ42ZVe4PqΓ?굪2M%ÚO2qFLgO^J` lS@_UWs\a VC(KjTHvwD;~wܩ p=HbPS6}szwr0W0;/PK%3Dq:ůhvV5I 9۫/u} ũBno_uZ+'Dlq [Cwb&ZܽqV2)ul+G`h%RFP&*_meتN/+dz1y4zI <壚;,$e.w-wo&+I%RDCr{0<C!<< زiv6SWyϷ/^˻v,D+o %{{ т5=Ёd㴛Mhg𳿒t]%FǷuj+VMѨN4|!~ on&O=md|q+ 7y=i gjқxueMiAta_E(L \V/7[ѤB^NʸϡٕC]5vⷿ#дM^^r= 6 KBl]Ns'#냐=N_]y&җIѲ-&+7]jCgW8Hut[$I:aTʐJmxQ'7`Y%/t:~9+ 6 [Օap)Cq?vG}Do<+ Vd8?:Lg`RrK:wNMx ߲}9ϧe.7^a/]b'!k0gqVҐTb\k>jBx]n)N}L˲s;nY,;:?%rsxmwINsnwՂ 0{FU- ?:q<g>fyQ愎40E?hE puk~M v>G LlvXg{׆22lf᧳prRՕX42~lL$Krˁ*$ci=-e4"K A#s >(o|qfN ۻL>r BY5={ʯ`sLLvW3T˛r"yݳ0Ak/OC׾L%w@oZnMho`BvMm: 3W$"M"=?nTbr%iЁ*)Q`N/Q0-AlLsnȓI'%NqmVI*bpy{$W0fVdC6+^KVX+3pzK}KYJčƣZg U޿>>>@͎]on0whu9RR\/NdYy|oOh]mϬWmn22~> h\-nټ][IWOΝ| p2:@\!XSgJe%V AvnS@Pż,QMĎd+a'|v;zB&0۔PjB> (HN i!9 *'#^w'碯}ESnF9/+-OG1ctuU- 7O烞W_ 55OOao]bK20d}7RM6 8cwPBR Йx[G)@U.wZ>D fkI=hfi9D~s NMQS+B=!d'_^KOg#;Ci:HE~Y9F!)$o>? 9WVsaֈS3^q7* J6kM`#t( e6gym2mas>:w@VjM%첇8 Q0` z|56%Ռat 8-Vm˻. vM䏡 ڠ;r鲟sT6v%NEreB <|+~Of3]\;l5޵aZ _aVΥB6pNsj=9'=+eXi6ĒId_痄_?Y-5h2 .VWb/dgFa^ЩިJ v7*罝Bx5R<364f'KHvo$D/6lsHjx^@@V4MgޒqI`ᝒ#MmRZ_-WHCL=G|ًw~( ν{z8pW?ˇܐk'+DC;\Ap b3 Y #rN$AL=RF$FB/~8q^$ˑ4S {MAvjRv?FkJd h#Mxܱnr$QX@ZwgU Q GX9w?4Fwb[T]kSZ= C@ bDn oM*F'SU7'^{3:4Mս{E[@ A85wo)2NlsfF(e*oŇ`D3?n[xGgg7C{s|{+J]ή45 ;_3uҸ .>f//a#u7$?nfxfEjӒD.*Ie.%^ڐ 9%U|+jRUƯob]:SsBQF⊪B1=8t)Wp=)%U¢:ᱥQ͠t7R$V>yN..ℕ;ش;RŵUopZiި3-eEXݙ߼h,fӒ{B. `][ bGzZcq˖'j0鞟-H * <0Q\ފ:R.TdN3AWq DrEr\ܹùVn.mމkpO[\":͜]4IV48Z{rθg\ܡTr~3a]}y1 юR^{u']?aZ{+g\^Vaj9Z_/f٨CUe 9 Ѩ`m3sxזX i Hw?n|ERrpPqO%(2B <̾:mƝ* MfO[ܷg`f)v(㛣ofOsf;\ݐ?ޖ|`,+yb ʰ<=\ [F}{ع}a~*o5B@ʠ.22T,:m,:`XkKb19{K, Kg"]L[W=tx;G,P6p䖦O`\*&rDf'bFsBIGot~r` .OU@XaO}z9>ޜu-bWr5t-CN&gT+"gu*QO^U)d;r)'dzVJ|4BA_PD u"F~Y-;P`ԕΪ VEqd M9n'ě%|S1f};z %]jmqy&MVꗬ:V(󌰣taG܁1%C"aߐ\Z1>=}`$5>tJiUƶ1JKJǺJMxMi,l5IM1wݲ GkAEm@wGKu^{sJĝ pWA2zo6T3!R0G=25<$آ8_;$8 'w{GwX(E]Z y:xP񴕸FpQ\gޒbPM `"`C (d] ?ޱ9b{j9I82H$WjG3o s&lJP~'xOAqq5)3@5p'/6tq'vw #v`V<*pv+ \W0_BNe(8fK -h) &{q?!`i%<0ʳeЦJLI‹|z@ܝHǸ?qW0[6Jԋ;)/) $nT],ՆPo܍'qspͯOSHxXO8yu{D8vyJIwJ(q=慀]g/b䫍zud2ˣowWPpyzY?Txw?TIs?xRzKXOx1x\ ܂)R( RΞ:bB?8rsf1jz}Xst ]t1wѩ.[˳ Q0Mnx-G/ nwK|{a@.{%Œ/{FACuNTdNֺ]m4i"JbiR5L)U3$g:M]Rਭs2/_6w+@]dX߁UhH91)0r$Y,+IT)EcҊHآ e6G{(rV'sRwf¯&v7=]@ۂX&FG?<&aMFLju*iW%]a-> 1ZUYfcLPf԰> m ~e0^5b]FJ3W3 CiVKyZҒA9 D\mT0]H2Ku;j),_ǣ{YWM q>μ`b&xnuT|ŝL*5I*99rRu-owE` Qۗ, ܩ^[O|M'&P6`1B]A?rqdoS)6)d?K ӻ7J|̾hkiKWR m,e+TR LXbp ?QsϽ}h=}}.KPn-=$8'8NDtUEb<)fLU[ZhXע7hY'S'vr[h$cSǥ:o%lT+_@ $$g+̒cV&r@2)X% N#KnK(TF7{/wg泬 mIǵ.RĤr`:pĵJM>܋ 0|z7֮'"փTRΥnj4n)iK\A+Ǯ.qzUb^Dd{,Dm\EX}#Ċ_vX0c9o>l֋*\>B|"<\\5@/+GC~yRdon8(%Sð% "=,XzGf.6w9jJIئ VЙmKe\a^2:DZmDRIzl"(ze0f21pOQ&g)WpU&RÛۇǫ!zX@L6蟟^ʣٱ#X *O5^`k1 ;5d%'[`UbqsX@!Rd}L.ml^jRNᮊ6j34O/KU< IDATC"j41怖x!wLg&R0.9]:%̩|*E)ïtK`/*/7 Yd*1%sO>HyDzV7]c+M஁W; tЩ1WaFz2ZYt=)jQX2}gP|,/Xw%:W7 q?-9iV.6Wzd8! ]g0x=Uˁ)rP1owww?Ktgsz|IuoG+#VovlepapW3rkɩYYqڨ/tTd`LtVLv)𢵟cv{EJ/{kj PU)˂'ĖE0T.Z;R2~|quߏ~m|KDFv'aX8SeP L@Z㋙S:]~;JbicK8s0fG07;3ַRG)dzEp7Y&ge*lsB7E2kyEPT jLn"X]}9SAB}Y_Xel6.֦[guÝc3"t")B@wbijX/qwNv`pi064T{MPTFVܦn6 s:?aMy7!ߙ4ߜ.Օ]+ 3 Fcw`y%!wg=BKpc\%/n1EXSkX mټÅjCxDܪpg=鰰*/bܶ`M:e4)KAXI aԪ;4"FK%hUܘ d.KR]B-j.6Q^;}_><9Cؘߘ//_b60;/}w_=98}ͽ[{1ґ'k-Tlejک-sZ Å#?APsTbtɘ[pwZ|%CYr3 H4_S0Y2>=^2.bD31RS.(]* ŭ#?|托ϳ J@#.lm’ ܬ;}5< n$[g*{Eк؟OtZ]:HʡrX9Zѡr0'< U*IF/&j4ϝ5A|aVj3g򛭓mUaUS^;]Nǧ},~ոc [xWDDo60} '`rD94DER2YSZ?Eo Q82&cIu5Y -) #?W0fM؜^ :Ny(iZfܗTUus|;^( xhYԇ*4)gl4/)Gmlmc[6=èBXcYQ97Ę љ\%BBa5pf7JNb"5t:MÍL$C_gh<ev^uV6ERws p\wԷ04ɖFr)CJr~J_Y} Oӥ7 DD.03[pdŅ]n}Cbje dWە#0u;8H+?*ƈ*v8I~L/kH]rV[\Yߡ?9KgRӧ|E=V~+pfPxy^IIRa$MM"ۋ;1f9;'1R4f/lQМ#qQ;l(F#Fހhr`wYRw|];ۏ_|xsIIX!_㝽djesNlrt#/7#zx] x9Bmb7)e~j>˝}z?n%Xv=i6#1p].7 9>ٹ+p(nk1Z&; #luϊ'ŕiB}f V:*lCffilvJ,$}]4Dz@&S`_;A?+hc*ڵvd 8x;~O^I=< <#| gĚ lw=;y[,Ta#{!]bKMğD4lҨF\ڗS=l4aeΨB\V`9 . *d2"dg0Ӻy]?@38<9;ULswϸ>k=Xx:__nnI%ذA})LwztQQdmFeO%D*zlTKGlwP>Q)=@)ĠXJDM޶a_Y\ʢ}~p,J{.zauk9tcR .ǂ7k'(U Qdn W\N9 Oh9!', ?5dew\O*&*e+qJtT8*V笸m|+KiX$ 9^yRa~*}K\'woSa7,+K@Ɋ?;-5~{gkQZE8^9kj*[HiC#ktSVX,Wr]֣=9v܀(]m(EOOOοu8—OhTbQrP;gH-i~m+] ^̊ZRie bX$7)رAAb,+ Kd\a*ĜuY\;7hx~@ E%+{ߙR.J5Ӭlw:P-?/`o=E=u?idQtojC(!" %j$M hXs{dn6M;{߹眪PϷ-iЩ^/*~ee>~Y" t$da!qs "Ali35Th,-QYa\<$֗ ~^bf+ A ^zvٔOƙ~>SUB!gU!ږ ldPoV{W_;]J")on&?5gp%,QOVIJ+N{uoq/>,}ZY+ lSpxYa6%|bϋ%A*/SܷP@qo'}:| ۫|\Kۗ_dR cQ-aiݾT4(%?}Ib,litzӮ>܎ ;Զ/4>; aTf-q5B}cj̚Vee+]qq_Ie5?Q%q6Z!2 bA{*EC|v%xBnyO;N+XK`-Vڳ?3U/žT,\tbS+&ϦP,O)ܻZ=\HyPX6N݄`qyq1lpY"Ռ^g):b!56_սGfb] [#MGհߖ YD+ '4Kx 1 Rܤr"+m!zwH|bj'NaV.k+%/y˱p )#I'[ZY|gVay>HV?M2e:}~,o]1nУ́QdYaNۥw2[` /q~e-<ϡfn8ٲ6/+kk4k; [XlcE'+1,SN͐٥hW` d5O0xP @lɹ4L3C=J0eL^rrʘ=}Sh!VПsQRbU0n$ +KKAUz|am7/˸E7a8E4E~BkZػWLM/Ih]u/e)#Tu?9Ron;fƹiCUPC8;[ <%'}J?7!F#<ClT.o w :UeCD''Vrׯ_pC#]QBie w ho)/qJڙpNj`^&80!&6)LMV4t#.'NO;ᄀqְcFI3wX~\52R;sTC܀ ^yz&w[l )abJI.uqFyD+|5 HFj('t.M1|R}Y? Rx]atXibJ1 n̆gcAL,o  -T"gR$IQ|_'qIV=!˵CӹQηX -oUoǷ#J1/b‡p{ٲ|w &$KlePւu-LGovv۲JEAq/%xд*QiYy.Mt 0A)bXٜŦތ(\h墸u$kꩲ(WǪdxzY'03 4zwo| OϏ9!'?Vxr3=<X?܋P ^ a)tkM5ye( ?@ˁ`mI'HZTqݔU=Q)yL"JMYÉUk AQbR'.5Խ32vf80ivҵev`M?_~z{9r'A^Rw-I>gTu^60jP"ne5],4hC $؍>ĸhgk+)2}IES$ʱ=flg8UR8!?TRHDX7ה,+5CIߢds~<]:;塋fbF߹zxL_gƜǗקoC/5`J8: <03.p^inņ+i++=qBD2-ZܜMhu1֫d9` R򀯱rґ+t qr<' ꨡj:,5R\W0+=Ueǁأ,{$O0&wxBoJci8/[23~w.5)CB#:Hbѷ'An/W>-}C\RxKZomLhƲ,%cQPjX4 l^l(vZs i5NLlbلO'g%ZʒEM H1$+Cx8*P0:jY35:[=_9^DwoYeE>I=3qs?FqgF~ft_#r%3O 8]9el.PwaE[{+ F2d|cԃ7%0^bm̐dg]֨3D>n՟B>D.'Q. :ز Y7Dnyh;K^HRk yO>E9)!˗r-Pf=npB8V] ;q[. UBg@ 4Cv/g}I+(.4x,7^G>ތURX.Wu_^NNTR2#c8u?0ኆMsXdr*G$ۭp12EE=ۓF/{8TaVkZY1vUG$ }N'G TʖE06?y*}z͛?8_Ep>gu0g5T,qڙ4&t2C-2< @q@~+nVa}oU 4qR4e|衩 SEA&Φ[|r,d=O6H`%ӕsa9(92iT-'1t#T#:@5`ӂ$*^ 1 i\ӓ_on3mPױ.ՖIUCHi)x5j'v4\x7$Wc4]s!(IiowT'EB\gs|Eٟ1%ùNEn?՜S2G:œ/Вg89g<7T<g\4:1xV]_x2ˤ:U] 3"Bq EQzGݝ- Ez@T6dȧ"t.A2p*q%p\)16Ftl/ֽz&`ދw% /D8w!\:";.\.f:Vȏ7 mW*(l_^w6Cd\{PR4Y8.hUp_MQ?*H4I>uh^"8M4J1%-R43 񱓂90Vevݭ_ x2E;W*~%)nfQ)٠9rly^s;X}I9@ 0ٸ_츌ޠy=]JI_rqrGn_`fnval L)Iw ć JC+}UbmNY"ZżVlzvE 7m-GrSU#w=~" vi:--|1.23B( cbaMd+Z)ذ4BϞU/&CN|> pFSr{yyy4:Z P2H}lL֢ fa! 2+슉*䗺rm٧;2t2.n ػ{l& u+N |I W:0lfLәiŭZr\^[(v.IG Yդoyr\K.ֆ+5:fB(GI" {}#dBJVm!;궐ײ"bSA{n;-v="O[*ɨx9=)`rEb+eMgWTߌY*Yg|_>厤Fr "30' â53рE9+L#ǐFk"јu!&;0{BHZ&V1q:UUM]eݛ@l&Jn=vbWw&׃rN] {dA"]N"212 3U_ؙh+o^ݽ{KNK\*isso]taLd]=;kFCLx}S "0{ (c T2U,}G˹7Z/#;ܐsx'Q [>I^C"E -1Jqt%Kg%['̳w#VNj8 P_wR[&(~1צp`mf4 '[e\h2U X>gD6W(HH>a󭬤Hkë.|y ^$^x<``4AÎRE$XPy̍6\?Gחw"ogbIe1*;gOI|qA@ Gks|n$="}3I J c\6A(/Vhmf~I)TN +4d>rX;J1q}zK}#`=J r&+R: 7GrY/w{yzyIȋdR"KPi` ĝ~woh4 a|{{.{OyT%!y QƘ&6bMnjx~-Z]NGkҔ]z1ȏq'kۨ‡W5?R<3 zXŽaq]\O^Uf=t+SWe c (c ^?/?Nj"MR?`T|f 2 /`4"_' FϫAG\>p9ahl ?\_4v l #RY7HEMOWMH"⧋l>lkmJc[3<[P|a$/G`rsH.UR~?{xΔ2*&zUEZ o&:`a gz?'i09A&x|y+T7st)gKYaF &&B2''WﭑqdR2RA=[?>,.a&bqivEJ^t!aWV\ek;b:럿 {v3܈g_^okY^D~1&rk%X '{o.Ng-.ʦ>`ܸ.D mHANB12b+1J?&uIQxikdTqu,˅myï&*܍7#y-?{G}B.?,s,Gi@g3؎m۱g千`ӻ;Jww8B0L#,]&?_%^]Tב,&]8xez%ެ߾Z*dc`v篡}V~F)(Jx&ڍ38Wyq;*#\O磽J*rIru;fXq;d/2L.Ve1[Bوh7|sFݯqkr_<[2 u"ޅH ? q rWp wz?4M) pY9Ҭ\!]ؠvxow[Ӈπ,@. > D 7T~\$,vRǟ6a Y4di&S,זXg6LG>ѸfO@e%?f eBlZQr+wjT vYBDݱ1Ļ -f cmʣێk .W[cMk䌰,ώ:WC]:ӻp`,"4dRy,ak1$ An\2:9cKlqS|أՅ-b,; pFe{IԕGǸl Y9Y?9Y [,I`1ܗ2q%q ;@W 3`.gc! >B(9!F:=;w(jEۦԵݏjF3PNY=|2n4 E"8ATo;|UxQĕ@TW2NME ꍲD4ns d7' xE˗3lwP:m@ӺraS6Hi@M?܇/Xl"۽}ZBBsxǒx w/(Iu=&(;u\K6^ͅub4O a|zO!6X5ɥ,*6avdLw:›¶#,&K˛)=[zp\IW09}lunԴ81(^ґX*rgF6[<4eMwU/4OUuvMfwB%jk ḳ4SF Jw5?NTLBHh}8TJ(ʊHa#Bt\RH[jLʵwJ@ OvXpoػEx;6BŌ^/;WW rI(?_̕:b#1Z'Ąv;A\?HПa:*p+GZgT082aGܷ[b׆vF]H4 2` +2 2Pޯ7aVg fQVʥb"R88[]>I w$m]yD;ZyeR?؟<CnhL(W`ilv#Z> p2d }8mJipb3qd#aKL7 w2iJΐn&/#H0~Hf",^T`zzv;;fCpʳ`mL˚O6eS-z>Ь] c͵1#%պ=P˷ ;s\A産exNQ($Qb#j{;۠.E`z9wCXzl;v >MH8^-.F$L_hL(R'`̃R.a a' Ő=~Υ`zhS4sJ& 0̽#jc'2殫|l|}zfC3 Rɱ4=C0t.E-[%H"lVwԿs Q- a</uQ|bUA򝙛6FjDLL|d v0f/ =?0*20 xO r;sRVĻ%L@tk 'wl*'Eq' rzvh?tq8ntXxevOuN*G/SN*?c{gu0`tRA}z~@ZQ< 1q%5"^| |)Wb؝.ɲ LvfxneRk1*DExq a^['`c!~ucN07&eE Z[B5QΧ J.Naa]S >5D0gQw^O(|(wZ ]-*ACgU`exX>A5X ]\/]d9 aƠjvpwuzw@&A11VClD1FSTGo9#`EtAP ^-*[ xc$풤NtGuT aX<١̛ma IDAT6tx.׻ad^*s7Y&O̝@+F+%$'Vgf!FUo)ǒGְ4a!ő }{}!保}5)Xd/DN/-l~>5̝sL. ܌=awq^;l0|q}' 0pW" L-Oyt7LpOi/r $7IqRd4W#=Gܞ-3i6 wh`JhrJX<\lH'P`lJ=`OgwT!0X;lP˽ޱ E=Qҳ H;X:r&x!ed\ƝGmoA6,Y=3DPRY0 HM)s6[@ONm.ombi Q٣*5D EWW/R ӻg߿>޷*s7 ;\2vgRNʭ0)4X)[H#uM"BDQs);"enJiLM%_~ys]Mđ)n)^ QpR^TCuL@"f 9jKSfXo=)܅GϟU`A%V9[㾷SJR]լs&`O@^L> db}>_ K<`nz[blLabKny\^ΥX+)'r oLt"Q3(9ldy4T (<]g-^xǻ&;zՙ܃#\sXh vpʺ(X2x{in2d' w=_PM9ttG׈%7GݩPx"z Kx pGz 4 a D:=9ɦ-SJx!B|g=I{n>쭬4(w$*zeL6v6=[[[i40^1]gphuD4T"SLy0Eĝ(~p`x R[So?5MNIՕ}AP`Ggb|붐D2!N z;bAL̤PElOw;6 X֪+|$)r|-0kbL^_( "|Ӷ4u( E J+V%9I u1邂5~20]-oUR2v+]nSRpM ? ~w5: w rb"jl;GĎa 1 hz Hg2dž4S&ID9d'_>4WV7bQl?Q+7?`451Ucc箙ch6Ygw?xvokRRIG Q{tgqo]< /ͩCl,N`L(ϐ/l Q-Hn}]^9 `!DU,LHH4L*GV6LB"M%HUOJ'Jh4l/[v1瑓2C233xG ö'O`4Eb̛Fc[gUxXo^o"vbZvcLu *ʬ{9 eMa9q lU\*Z`"ɋ(+$Reh..uS.%?z=*wϏts#UPƪAuvmawQxdҶK\(񒎆+W\7YBu0YB̒ƹӓ՟*y]2b>R]5MޝS nݨOT>db3EAC}> 7w'A3?#qS߻T{iknP3TۃRdtF)'p6hR(y<`Pbecc LܸҮ z,3+ ͝[x-WR5⮨g <^Tx F=#dI͝Q^n KP|m]*.sN-҈JbZ&_P~W+jLRE DRn`aBA`.)P8Gs*1p1c~\^OxDiD/W̹m*.n`٬O`QdNn4(s{A"a->Ŧ7-<F"[ioƍHqf*;ft&QFyߜӿ3aN'h˸v3(qA'6]8W e~<>>=/T7C%HA͹0$o%RjY*M:.HB{:,%ʩRn(rgӾ&+dy };%Ao%,О1+O~{>Tt9f` vtD:%MIbK I@N 1Y<9wndx}n =WEv[a7ǫG^@|N F7z3~2-bGė.g9f1yPfsA}xmi~=ʗ$t?g,~H۞JIuЮKrƨŝ$\*G*i'nN~淪{/t:#n룤M+c2T [37S;iB#|3cLr͂Wp@sgS(2|b΃5ޤJmq[;a4lD,G]Ede];l9ˇXc/7u(W2;t(~uk쫸xqC˄h?yH[zWޡipA?^]]?+znv|1E m+51DL3V7VI2Ku-MX% #]ϬMJFQāUaO cGWK')<シKf4>oP|_jr\ &ԡB29d'}V`/T\У 'Rzrsvj6Ir- ݓ9A7Cܗ Η]=% lcںQ@-wK,ccRo:P%=@2kc7*{WnW޿{5艹˹ k556t^.dw^{pxd|-VsY/@3#inaxdmgxig(P=eLP@qV]a?]c5i938TGgk=N:H4_$*SۑG5,c]Lܯ7 C*DO?(ߋ8*^uQQ] uUygMc}Ž{qfviF5yy9d!w*sݵY0'ɗ? .yeXVhD"4{c[k+M{2LjRvKx6$NWސYgٶO">Tsj4v+ʽZ7]^An0x,Zy(ޤaė);ֻS=@G+V;j}Բ:+ך\i:^U\QcL<v?=pkF [@Z8s 5hD. g^BsuFy}t3tf_q!?\st' LYSnxjY*N N;Ю\ߖ;6cf= \)7ZN#H]۩QӏNR.n{'XGs[+sp7b5!jWf #Fl7cWԵӼ4Ƀ$u@x>aoGI3gvĕwT*kl8v!1imd.K)sdg ~=aAԫ푕 .^(O*ER^0iWƝjI'BH}^AE鎠͚Y2Ȫ L˖Q#!)et8wIVX?`gؓè $Gмp,n(sF엷kr+t*J0xXDMKFOQ#1w pS8*_NS ƹ_(ݶX^5׶Z;[-wBYD&৳C`cYYer|rqfs&p׼+ MPwUq9ҳƪӊS'B]5ɡڕ9{(?M@4dvk~.KTnBw|Kα7=ǔ$~8?? 7Astz'3dJ3aw_ |xF <8T%%ogCg7l&5br k8\PĻ/>(ܿnqC #t \?Œ8ߚYȫhzeJɰhk NGPx/O]B"UsGrpo/\͛ :5)R>d3&+mĂǣm,4th+3^~ya,y %8ܫhtpVnz.*gJE>iǚ(S|*F_Ńw:{ ,Vm w2:xW@;'ykRfG1E Ő#:ȃyz+ħju!^H*2 g۔ Y4BKuCv vSarܥO G.8ʹ$88\ 8{*z8l^.7'M̗(,{ڽDW84ӷ2v"զ|mz#__?epػ-Ă =?odX~v;[״ d.k殹0Jt=Ag:ɼ=ӸAvT2U [jUӰ#t]2ˈ.N;]Y }AۀU_<8d!=cl=ipg)zA5}&nD1KҰlK'>o7!gR)ULv˯*4-.*XLuaĤnTTVA7ջ3hQ{*(j; = x>r,p2]=!FN|d D\͠Y[(q]~}YmV؜||vGu ;y )y!h~[vj2QC ?7t~R:*iŴVdwkVu^Ezu2VWyIAGp`"@6[#DWA :* *`q|qi圉E>8qtyע|73q\ݑqQhT gqg5&Pm-kӶShթzz?xo>oᛵj9I-|F'\ΓԲBZE]lpհy] ieYKu#A9YOL义gtE}`xsvoePS}}\Ir}>ndpW-"gXQhaeSsTqGHix~@*J~ʬ;j)-aӷyڸ9pzWM%-ZvGÒjn J([Be'$ $i@F6Cy)AJjl[)B Ů=*gGp']f J{33!.֟ mu9Њɬ"T <K)Hʥ)V/%q {^7 IDAT"ۈ bzIGg=y;%,蠧ώ^@?i݉e拠n "(ǐG@ddv.@ ^Lπ&>ĥkͦ2{.r v;fDž f8]V ֭n9г$BP;! 0@,A|\|t\9/6 Ɣc|}~~H1f㉚בCBwm@䮷d4t}K3& :Kմ;F1 Mۢy (g:QbUAdZ+Ѧ4Ϩi??= "E;/8}&7fN-N3tc<MZ!~X%R8jl DܖT<^Oܚy^&.$]h@nO8! 4(k^;/A}߿Mb `[JKAMO=E8c۔/ )|nnȵ%@i qx =?jW`OX0G\dË_E*}r$ac-f6ӥD)~npo vV'T߿\{hK"Ҍ!M/oߍ뗅cںn VDnHn h/iL8lL@Hҩ=>H[fQ/"x+7Gmaj oy;txz4Սy'of֗]`jxR$V_Юa+ =N)fg],VǦŢv~v_?<savSaJUQ%vw{,8k)΋k^z`ݰ,Ŗ^h(*! ]7 QɽNAbDi}vOmI3Y=|Rq\wiPi돦Uٱ#hS*dw4{M$ɹ'hMߧ@TSr33_Ĕf+%@z΁>l`^ۘ=2f7=1+a_fΞAPvӧR$,Qwpȁ4 55kԨY_:&J"qd.bSv _l[(vihK+),DzE|%+^ wqxHWA92, /ހy3&g墴cx ߆(N;(ǒ@ =>(h& x4O&Z.K7zkP(תNh̍Ex=xBlN|lkUlЯ>`h:dV>+4PW  8ɡĞHc&VΆ%9݋I6aHsru~g3oDc7K] i> bt݈~:_΃tx[h>`"׷ (i! ]?Ε/H9A`!bSڞ?WW֛FDi}1;!c:bi}~K⑒Ω{!JdCuuZNۊ .>PIL#dcNa4}A{@KQ r8]?#t*/S!>Y}$ç/ ^,'-fbR d@t}O 6&9@U\ѨgOwЙ[۞ݓ:3fhY5+͸OP2-VZ}*#eZ6MiJlI&!#"]^e0%'ݞ#1&";N@8pM!CDùĈ'":OR(_,%lE0P1 ) HKw’A,wQ橛Uc@+o81"#,xs?~sxc疢f2`X7G\Dz^aFn @SxX΍3"p_yftQwubt }|uT>=ݿ<" {&@3#"Wr g_knjNP^Fh9cھ-jwEZ -#HBX K/%wX٤.P IL[[G-;IE:+. 'n7Q4ZMqP^ ݎ6UV}v 3rv)uIƴ*tC`HBfĥd-=A@s;Q$S > ,y әJq{ ]`V:-TZ6B&w#IRpE 1 Oi z%#v-fZepYz Dw90@UCSIC.Ixe}n|. ŷ?tB{)sQ쭉(du [Aut}4S7m;W.``]Ezv[  }2 `B2@J:ixW%B hzh,mi)E-z—#_|v (lhIq\G )F;LHW64IW _gs#S'˽r]uJ!`cm *N%()v;6XMU["(A}؄^RVQg(KʼnƮNZmqw]:IV[N?HeB~}U{ isv'h?H 4ȗBuf1<&z,4D(4>%V@1aUVn,8#PFa_Խzݗ`^!_o? /o}5bj8Nv2^hϞECf@ O iJ$Q)vV+qtyD~,G*äND@갃@N+$ML@W1 $vٻ#"1Uxny(sRj:۬^ Tbq/?8c4mf/xEw) c9c /9jce!;B_}#PZ4´٬6Zj\^rשp'9N =d%ʚd0Hd`3G*E:p`Ot>WrӝcI,_̎“;T|X1\rUˑHdnhe)C x:Eݶe{m,((N?ߞb_q=E0޳`p$Gݩ㚓}챥&y%}b;ɦiav 󟂪#`]+R5b5\y~2~>ner>z<5jo jŭhyS=ip6gjNDEWpWy qn R=ݒ;;M%@TĪ+ǟ?}AϛE+iU c 4Ik:ah餗("ШO)K o5<`֩} [5o8ƍo??n8nz2zqjتN ;L/w՜ujqZq!+@աgZ5i.,*䖆w$e)*\fv[5n4ʰ/d}7=Nßy&җPv| on 'r-¦ I|uė]F* Jq&-uBooɇ7W7W~[x,ktA>vi7Drpp}5 ;nfP\M הIS_׮z)<ߑG`q~|pId=Odi'f ASCx٘FGpdl6h!l*8o  (L%\PUK",%\(.o"q]'κ6 7>߽IȪ#L$$!E7R1UN u=ZffzcEɺT,ZEq+ ʭDp (&cfB'9};Q׵׺l{T-7ZJ!Κ8חr[z-%ψԐwa2Lv $.g.` #bJz7;d{Juv\D4zPQ1˵4Λ&]-~-Ys+V&@`6)pDQmm*m'ؽXLfv34y'.ೳT";3^h;[T+BVqe,t.ڃ,Tch D~Q2FjL !WªtB7`ѻxƻ4Pm/o9i,3i%jDu#T8ZpvV+?QW*r^̠t-<Ț5VgLe0}0<]kϛI]((`)dI-oDsL3 SQ:j0-1).(J/C,rd\UX] O,8øŝo.69NSp"/I,^y`:``Lc)8clnAtR-] ّjp0ɵoVs<5,]j@Fu^AJSV1,zʙ ȁ #\an7v il1@NK \BuO`/xQuLPr-Twga^=;֖wd'H35'qT$N 81 -z$ƨ)U-oϡPLa51~GH2!FOp=zIvݗGVG;TFD f؏[*!Sv'O+Oʕe 8p"Dv*<wPpshO7ыFo#ޝ^`,v7VwK-i,&ez9#+fvYC0R\5fuE5[XK]s}ZCQG]^Pkf.o IDAT39ukB*T&(EܨD8ýĸ(*+x֝YDBT9C-b6}~Fhjk} Gw|@ߡQ4NU W/T!ZR'UPRCAX@}+UK)oJ\*҈#ht ^ ;W`?qftZ`)zk"a][Ly1I9 @(`h2mft?ӚhJ*]ԑu5F7vg4nvKհRI o>z Zҏ`Yzf+x{G۫3CSۜk¸=D?g` Yv(㛣ofOsf;\_~w^H.; xkuaoRO2wS1+|@'WLBr{J#xKNQ/碼T?+xi'P0\ӅxR.';qbѦT:# 9=<PRIUWMs vgKΡ.:$ .= huQWNmZ!u*Q:HY!Jc$j*[k5tۺƽOH2,[fKK3'4cH0R*QR\{ONI3Vw+>ۛG{Gri!b1pssC]X{+Zel td V{Lc`g=jm-_lL2njk8"' e0E@)4m^{sJ˫۪.!^T $^l~iatIuO1ߕyShKkrB ~?(/ ^}}RÎ=~bK?0)d#x7~#sFgޒbP`f.`C (0W/a O.T)TnQ I"0!?R:$qc+WkUe{Ra̩n园!VW4I|ġ?)$ш{qEگ2 0&Hakkobq1T6F?H{! H:|F`(`ȟA`?~W7Wv3@5p'ttqogvw* cS7vQ8 I+įQ mbPɩ[y4*Cl1?ԗ$ 9W x@3/$OaTD!4O j4#Pww%owxcQ/ǻ[*cC+Ͽ&YeTNaaT`vOǥ'*\`!ŦG`O}&~Ofri_QP` }S6D$?ܞՐ@bmi(|gsZYi)~Frs15Z^RʹRͶ'.U%tD2Xtsa5ųTʫ?"N㛡njqW6[;3ze*IljO9UwehmC Xuv\k $SH-m7*N7TkS&_9:pc^ՠ"nCtNPSdt,Ē}t免FPy﮾Ryy7IT/ުH/yRKX蓖{"c-cȍ}Qn IXFyVhZAnOPzta̓[j8%.@cz^І+(KNt$U)i/n1X贷P*sR4si &{o%W.FVCᜨ&/wJ֝uЭFlgUuRn Tp c`f$7(9 b q^-)s*"C֭tDQ~bNZTt(-Pۗg7:a([8S84t+4{ĚZJYb@VQƣ<|vs 9xFziɩ({Όn>̃8*r4RM٢٨ðXZ8lȠ 5zB1 ޽*s|+ ?Y.u[0^ktKv6? tLF>QDQ{}8(5  +-U614idm3_CܜF/߼[ -;_wXSjs3E>0Hzt-6vuD8X?5&Հ"CڹʽkjC1|:L=*\q9tZx̶(oPy(| Z@-HchNVW̯{}̤vډZKhWCz-6b 'J*|e=BhXbneS^MxT֩jE9?2]`~|  |/l8a'ܡʫD2bo22XU 7 W.u1_ |(5Ktzј[53>ɒ9~H5n g#ێ1_vu ?i#;T^ u9+&f]WFA0tG ǂeC>Dʰo<|z}|StCR/LxKu|5Tx~wov[WfԋbV@EV#ݨlOjDID1'r 9חֆ'O;hjU^W}^sYtcC^kbA.tLWa O9dX=RYll1{BzWP)3R&MlfM 6d#;2*؋R8tquջ_am*3oT&G :uK?WywyǮI!nFD肄oj*.wPdwi@93U ƟRKR{p`,z Vv)ucvzFj 9[._IeK2T.Z;r1~t^?O~YOyffNO"V v}x$qFpW+zPþ],%m=I-Tv?ڭJ_r~ni ;($Y($OܞVԟ0+ m w[3y]2%ȆaO{O Vy nR}N:V|緗4Ral<8[*@Z,8;5ꏷ?S[?}ûJ>:8\{-}g/g|u=ɪ}N2udljZːe ^M;5x04|2PNCc<_\~6d-xZ"K›6C&eY V ZGp'Jcu051 L"cy )l9-P=_>8>F!і؞NJ;ʸӿ5_.}߉×)C="hݟ2;;V-!jm`ouuS;s8e@hAO<yٰ y b{V)fO*#8u )KƧw#@,Fәo f(#e5X A3Y^6Qz";ۖ6a0I\}c1o. j@Vܦ^Zđ߄'Q^H#yA_q0N@Kq4xvmK+Q۵q7^n5qa]A_[+ eU㎥6 Zq՞䨫۫roRI rj4Aم΅^B{vd38E'W| S-6_~Eܓ7gvsXE%c{N;|ẺyP,VWWw7M{B8Z5՘> Ur|xn؝M53N /e@ [-|c݊;P9 GkLCAo "^EƇMnvpї 59xO7[Y⚬@c iܫ'W‰ "m-Jc(*psP+\__Ӂo$N'kmڐ!+([@1? oai;uj=BEiK;*WE9;i@G9 <=zlQ,?44 }S}H2 P觀 Sfr0QrHCOxSTʙgd} 4WĪ+ʂ3v_ dzՇW?9?nR=վ @=J~H|ag_0D.ϵY#Z2aKE)l]O%0P,EHA @IDMGcSnI7hr4Nt͞^!4K^ɩ960\a4}xIJթ4j`lř^Lo%aD*'~F_o>hqXʙI.O'Ӊd1WCGdb } m Θާ'9F_wGq ^N\'vmG|_zZ mFV\n>uv*@ha75oh Ajb6WZ\: RNNtҝ=*_7gEd|Eߟ}8'Sd~%SGWs6zr1S؁gvֽp3ݾ?xteI$nY?҉wn ԡ rPUi& ?ͻ v(~^'bZ7xshib1G#Fl8[ IDAT2ST]%c`Fqb1 7l ,#(S*43?!eLe+@L/ZY먪īHAME=GdAMHcY6 B--:'@.,vn>a y(mJdeo;wn4Tܫf)R]:ްXsG<[{$$ZžI{F^%^( dD b*!51p ٨ЫT&3a?v`?+qW>6ߎw[d!p9ꓮ'#W0m?/(]P6y{MUx){mQNMVg5˲ `\j>(! ,5Ib7-62󆴃e2Qz>IBqfO'(ܝӏX +@.Ǒ>n~aH! YsؕNo%vWkX {Ao|]z|sWV/ۍ\]f`q[ms̵*!սT`?Ih&$ga!Qb5ՠⶺl6RK[dܠ,CQ$+Z3|!*ضuY;7kzqi~J y"+{ٕû % [U2( N%adnn~.ָϰ *q#OgVFY)Z½] &)aZ~:"BMᦌZ 0X_59xEÅ'5f]2U$3\o:e[le2;w,‘uzQpH蘪<#A+G)KN8vt2;<ǟ/J-lzQd6s2ɘ}T 9jT*v!jbd{cO!hH H*}u֖Б m|&7}`( (`n ȷ'rL jehGk}4& :wG }_qDn$L"7e̲6}[.{_Iu?iKtڅ]a^4)@\!BHM߆WӿΙgMkzgf3缾\\]~zrb07oָ G}6+,BG,؄eLlj[#xQGd-RFö /c&d(4amT(ˢX4;:O G>#П)FC6oMv``xQy/- źyX `A]Ĥ;b rRa K R0_ K_v/:j]OQNDZ&!Y`B*2#UsҮ@/J8|/)֋]}Zťp#ɇ)Uk գĎ[(\,C5lt{K^3 ㍭kD`؋`U M?󑕔%tNPzm__" H]vsd{dclX" -t֜qf;X Oyuɱl@xP*|zF4a;~mg2;&o񛁟]+ATnUB)fY̬$-)^Phha~m52k},|rɊÕ`7PܖJc 6*P9޶Vj9; !.'* w$mzSKw- X*[bT3ܦƅb)ig5۰뻛3Ętrw8{[iӳIPafܝի0mimlVlcvґ>m6*-nNQ9rC[ "N[k, )f`fvʈH%UX 0"b _BWkb㆒rܢds7ᙉLi;kKape%4'߯gA+OW? ^gk뾻c[ց(@DVMjlTn2A '2XZ&KRwiz%D<ǹf,+L^JM5V@6Fچoa"*ǃT*k?zQHTՠ4,;0ǩ 4zn%i'28qwSq]aThBd鸜|Bbf ƭyJUzQksskAޏLe\i1G8T|\.l>JE-X, 7|xx59;NC];Ua2lyox]h<8C 5p7GOTa_/5<=?O_u7So[-÷} K16Ď&1;LXZ&'v^,l5=RF̚ ;v2q6Jc~xͩD g;M&P =f0gf5?p=Ćyg6gy(Wy=& OMx-ߟ?yZ5jn%5w#n%u8q¶AZov"Prm!Ԥء.F@ Mw![eJ3%)oQ}bw9$1[^~adK4w1\Rͻ q6]O zW>Xo J@aTn y#ؒ$J1 [iy<9 !<F͛+L#8{ےWcu%i,noRʐFfNRç bmYxgH6pkpw{',ew,󰋛AnMR9dv]M6%xV:5z-7F*=:ry43w]:F[|)ЌSˬ6RౝfY,.نlJ&ϋhmKJX8V#;qŭޔ&YS!~M3i{9c)xfʓU0\ 1T,8㳻ӻ_7Tv SA=sUOdbKߔ!ZȲhP%o J` 2J$ +Mf|^=[U^YI/s<<{">,(cб-ajJdfUXZ)zRM|yGiF'5_3]١nǺ:?U]![鰍;%m *Orc'Wc Ja(IZtnQ 1@l!>TCo\gIC:K>~ lpj9W]𬀒+7H"C|}VUɦ|w%(O1~wrqP{::'x7Z=#w)_p,ByQqfEv"0֐VWf3~0c*IT6dT^4JHKeh"汌!Ipqrhwm$_pçt16aey׈pwL5(6VHOb͝_LJۇKTwoCb4elڸ\HHms3ڵު(#chH44шz1hbX$3 w4]:G4Ԝo/*h2׎c cκ䑈<%< Wݎwy` ɒ Crj ikx~G9`rp?{P_r<+@to][6dcEfꢜ jI|HQX4to ;@zRlIg)ك!51B$UErgL`JŹ;Qv`¥G7pFUd-_@0RۃAZ; %[~}8'2n;t5Gfٯw _q\spFmq9xu r//=}_@g$])x#N1mvх/1 D6˺>/{hf]O/LLi`jhQ)aÉ4mj,anj]^Uc{oUpK.INbW=UvD"?xy(q) ᎪXPA:)&Xy]IڣA;s]|?~\IP.|'emdi{mZH2lgcޚ$bATI#h~Aʖf\nr~ n!H-Q1nMW47j9tx7쯞֟UO9.:U;H(ű(>'VL!՚n/ܹ~ iv3$K1lK>;Z0(Zps>_](y$"0Y` Ƹlsb*)5vqHP&B#+)RZ NhIp~o`<_.?ca'l*][t"|2[L'zs(D_/kB^$R11IdҦ6atĝys"e>=-mD[Gg?,RmNM*t6)L%D٢JPc2b9`{ڿbޕݙ7} zpK#cOLA4f݂;r&lNNcv}~؋?K7wEl3D Xä|ea wZgG=zQ'a?/ؘ#`:.bu+Z~3)¥*`', s$”KZ*@S/&"A53EZCmٟVG_;s6c#SƉLAt3Dwu5<܊㝵g|)柟4cW3NwXׁ;o|Y˜H۳Vt&hpԃAUyUҮt G|5v)2;=mjJCl=s56;XY,91 Uq KH"sBv:^4[-P|Q+P_"pd"x牭Ѻ<}G6 =4C e -Rڇ1ruSPk#sߛj@ђoSq*uMRyWۭI2A!e9"Q *fKQ7K9uzM~prݩׯU ϯEvede{u{#>F;*D?TS$wOf4fBZ,곬<'_P=S wwš{Jm3ec&#T{;plء"PѨ&S z%,/7l*jvPi4KZv(z[!> tFE3Z%F"`jaӵG+ 6M陹3s>hJ~l\Qka^==>A}U/{>^2:`S#uf4}u:P9zQc2I- JBw9M#&.]m5Rq8m%~^VZIDAT*?ѯÎ8yl4A}>?.p(ܗ%0Hp]} Ks]s*>†h듼^l@]cV&^ɥщ#o0Vy7zw)!vc[7BQnLvO&[Sbbn4Tx#6src4sJNy!T$pִ? ǀ}tΜY6F3Sc,$xpAsb~!\%aAMFL$fsY/0T-wA0t#gia 7mPzZo'BIr~hN:I3i~!IENDB`gambas-3.16.3/app/src/gambas3/img/background/point.png000066400000000000000000000002071411575327000224600ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTELiqtRNS+NIDATc`"`lTPNIENDB`gambas-3.16.3/app/src/gambas3/img/background/quasi.png000066400000000000000000001032341411575327000224550ustar00rootroot00000000000000PNG  IHDR8SgAMA asRGBPLTEٟtRNS Ӑ IDATx|1rJ e)2swJ 6#p8C#`&e̼"fp/EIF,Jdi^HDȥf"UNT_6>UyLVg?H"w?#P9=flYy_lM>cAMqM ehLBZt:C*)j-[P:2֐'zױ;ϥ{+ބsf`l4y4M>cAUqU nlW̹䅖tyҪ]e"td ߈/z7 )JwuFWd#fnffݦӦol34ƝxU$S&Eՠ]/mm~e(*l-,YQ-,pLL\mgiҦ3 ׌׻EGOy ]t\d:\,C 7w^\ lDa|D7}X|_  ۖ> +l[[+ @zzTa/+\a=e߇.MҾuXaҫƝUX "w>"w?1\1Ö< 0p1|b8Gc qqDF\bPJC [z`nB [Ɲq YG@d~1K[YDc!K琥sDT"sj @dN, (%1KJSB2Kk֠qkys@d3c9 XsDa0pu8: # jY5 JY5R0Uٮ6ó: l w^Ɲ/9p +s) XH1@HP r"_E!b> ,t@bz @Bt( w^C/y8ylqu#CH4xj}UACU5뫒/^/zz6"rrw8 eDHDن Byk1\ë6lH5t(D19zvk~z%B~BrigӏLNDH81*"d:zGG6L;j&)eT Ή,WP~M B~CAY\}&rg$r\deS\^%Z"ȦUF^8BOS"'Eo!0z @  $/Ǵyó4>,' KDx}eINlGב% jJ5 s{vw5h kYXh~mtx>,?Afs쨓x{6wG2:F1|bx1,}Q b}!UU*rN,],;tg:\7:w^i[QΏ$kshL7147kQlVِx[- iS ޒV=4r7цb5em _^HŴa]kZo fd tҥo oݰt~lG[C2ۧ^& yhmplYh; jhУq;} P@~lg.b?&u4ck}LF0e#dLG!M>b|X} C3Oa!axlEl,Mݣ9c8I>/؋nZaGCϹ#_eQà렵 CxݾIn]u} ChM59X[(>kߦGQyIK_zpvW:qIq.h%yz^9~ہy,Skaz"R9ZD$9u/SK-eT(odX'F_#ebBsg#)`64:{ 70<( &  zzqBP gW"lcMMvu}_Uu1Ǘ0aȩ{R0݁v8bEmmb`_SSwq@:UT? j#!?~9='Jop Gfw.8݁r|Bm"Xb#|6Q8~H^I s.![H<@Fm'p6%GN]N(o-x݁n916Q8~#t#- F,ǯ,ޠ;Pw@q6i´8˰42(vUha#4h#}10V!M;_ ,.H .<¥s6LRl5> .mUD?iKY@S.B;G?θ>dPp6+%RìjDȩ (u|ȑS@mWH5QPD}AA)u8ul?h2h2-h2a%LHTQ2 !ʉՁzxV */sq.Ďp|Uas݁κ^xOmGm7S^ً 3l_8u?s.Lq3Ȍfq!v+~6™{;OwuW?5~p0WoW~;ßV B;p&WwXgf#'G{N;J;8~ʹ݁^}1AM}ԽҊPT*aҏF虍Ʊ}8UJKNqVtއtWf#Hc"VH9Jc8A: Ei E"-e#FPQh%5Zp~ci=~XZU,=NK3iI%xZ>uZP@P%m#FpL~Gu/TXl9ŖbN [Fh#8U2G0! 33ooÕ*89 A gN2)L)8@N_ 'YP(ucp|%4%GZAAFWagJN1/m8SX0͂T66b# ypRSw$㿀GɃy{<Ȗ 2-KK%yiu#[2/-dKqwdl =m aؖZNݑZ_C-@P[jâ!BÖȇyE|'b#pv :Խ Ftm;PNS,m#Q}}2QꎎPQu?mFDxF&>r-#8NSx}mjx׊5PWw@O˔#@5mLa8Cn*&o~˩;xMx=wNb#  ^ K_sꎮK3w&D}oiglئADl5h:hӚy,qqJHķR*o&*[0ocp@YwY4mt=Kn;"*qWȈ DUYw"e1,C*ЪC uǚU [6Rw`NJNAPr̔T2ԽZ ,U-> ״uK5niܣ%Xܣq[2@]Ƞ5><~rOy Y}>gdiI9š~<\MPpf=L o03lF*{ Nbo~ N7>4]*+ƯWzX{XGVazUN\N"b 9P8(M{EUv ykV_%A3CW>t uadOg ~9I3,CMzMAPUiٗ#d_+a6v`̶e5vUՒkj UieZP*$2-  p{j3. ZuP)40?`~Xc~8 q!*ą,*ȥ~wC}<6ï;\etN-I[ *]s057?S e#d9>SWL;E HEͱ 1i#4`#8= WL2X[0XC(u?XFVs^tŅ6B_1QL5tNY8󦻍cZ:%Y Xd݅N8#H ;&]脾Ln_;vt=̳f nG_,;SO~Թ4vvu.Ͱ7mu:m7j{Nި.;S'Lg8C|~O! ;S#:-gS;Fݗ^^#r9`;SQeZK=]ZzFUNtb j ]ZB/DEU8ZӴQ#Lk pdFVz5^0]4oc60ܲ\eaCsGpňr@#(-<C݀6@[Jn_#f$Hpꎸr&vať]G+FkN[߀'tz$v iD-i_F/Hpi'u ph9 Id /1U}c^T"ðQ~\T|mfdKn?/[ҋEi`bF/h0MoP}[|on lY~FH#fmnRPG<lŦ휳oE~#wbuUUmwڰ8()w8Ƞnnd }<*E~hWWU05pCw<G2"?4$,* wj8HPs?ܡݤ,'*i]pgώfVFZ~Q<7-((&/icÖ[Z$vqZ7=6N 8/ZC"6Xr#?(}{d$k, ~M&oZ1d/{iaJ8c\2,EK˜eԽڰe)㲄A9]c TFl>dK<^w.p.FS=K场M) ӞϼaZ)MmSCn –=aSç3Cz6) ?=U#LKB=??4qoJSFPƴ 7~þwXafvffQ8->`SZ;®3g#g\7P}:pGc'<ncCs z9{1 -@;91uuZ% ^w4ubqF-|w4wb˫-hҸ|ګi?h+ù|`h M#hGk{wHkk{#^(U5„Z:ł SNcxA {0=B&l-)ᖮxD{#1j dKᥥRxi<.NT`\F >NW!4<a\6YaUhM08]P#Lq|ȪȇK |4!ŇcU5Kr" qk DV5 \vځw vxBGߓH{{+gwf?F1l0ڨd u㛱uţD && VBDRG\Go־ga3]5?<&'\UjfTr|)V<<VJyHsYEhVDj@_dPsxIUT p|xOdB;"4 xʫS9'}P@`$k72CUPPCPG8CoA;jv)-=pJnUfi@^F;l$T1XwrPǏhu_ЁQB}y'<27ځu5ؔPEg=qNa<rv``^F;."*4(zȀOځzS~9Jic_3@Q]8@A$NȊ]s`0?\p.)׵"v{~*dH20?+)u@ۨd1`+';JW_^LMES k4۫ 0`_O@溊7?a9>\~¨F9Sr&|5u"ªORJ$W+F[v E=Z]f 5r[gP;4U &_&93ƦcQd3?>q(ǟSyOUcOSA8FyD?tOUgKn3^3*U7}"Du>]τ\AO u"8.q6c4_ ǟ$y $>EV8~8a!G8̬P1Sd*6z|%f%LD(YO mJI3,y?y%7V;Pj9H'{,f~LihX;^BcKNvzX]0=<ÿt">̧K=,vaL?.4'>Di͚PwY$te<݋qV:+l4v:|N8~8JqwX:M~g{)Z$pwt +'BCd]sw16s`8 X:wBCdUs@'t_9Z:7B}=~kR+~#3V`G ^ځ Ki*<Zg\'/GOxC<P# ;g|p gOE ͟uN-ZCMeNZ ]PwZRFp3^}$a]m<@304Mqj3nŒRwu<\Tqʩ%x S@O.9uxN+ 䄬&(mtNA* Kt>R\W`~v[|{FU#|CC? u3܂ D-w+b}Mi"F*4 Q3`Yi1p a 8ĥ+\j<%HK0HW!,㨚8R@DCQd<i }{HUl>ki=\ uGa^h8A*Ig$QzxD[IKR6EU!4/r6/ť/`h;K@)U9Bh"l",ʇ_Pwء䒒rŤ\UŬ0ɞE)„w<⛸_=b_:眺@Ua`iuGQU9nꮆ '!^T_j9lA-8e ^(xEU YGFhQ<8g4Gljh<| _i78z=vP`Rq8j`$`m??"6G/@(ÿ<xLP-m_xG~M/K]~.ZʟZ{jɢ%hkIMoZZRP ^Kэb=p<6Ey#xx*zl-n-j Ǹ鴵~;q.a֧J.b&Qoz.׊WgG-;\io<@-;| $Z 2*]퀳0-$L )v7i 8nv1t\çpAb\9>dmN@m@N@\7)j9ܣE-z3X #[@dK'l˖e/̈́i-\aZ^ )a}4}+aزdFzSF0asJzx%s29w^)s0os׫U3U!Dxg.߰!vᥠ GV=5 !p#+8-[媨sG1ZQMUw¡͈!QA3MU$o4䱏8vSn*!d xv7P4]4cxo4BU5xs58 .2vYG骅!?G(ރEx[fL ()p2xN [z}LÖAYi wM1\Aujh@QyցPК<6X9gmPG-{H7Hڂaz GHGl-.Z0.yE+EK־`Mɘi+[P!u7S9&Ԙlem Rm$LMYmʖ :joVFҁ҄A/B53ݝC]뭾+vWiRf<ڄ*gD-U0[0a*VxX'\V)@0cځHG6@)?cNy `J#i]V#(5@-x ځ[ )ȓ48/?Uk*D;ji6GV0}F|,=jעs-?j%Gx0ڏbQ; P?Xm# Ae(&`'(5O'(T0ˁB}>E>ApMPP9 wH]Z& `@* 9 wO\:GdroE s/ ;`\(~ad>*9 ZuX Ɓ-mK3K-!&9t tq08\ 0)guldl:ԴN @Tw p2 zfF(Ȋ $4P+R[:w"w=+s㢮" RNh+zm-yA&. Mw#Yʏds@a vTC{pJ?tρE ֌ $A3⎷UrVX!n2ݔ=Q3bgòY m(ִ Dya怵.0%1Y}vxŠQ9p ILVߠ+ [\^`Rbzq9 JLV/40=4}i]?04N_dYUG& wn$> #Hxk?¡ umAQWH S ZhLV\u/~s%)TO Y_)6-W+\uGp3݌H]nbA9LPxOYj;A}dࠠL0_wD!D!w`ǫv&yU~!x ;vށL£e =OKw2g=gڴQS6%fa%s3Xמ Xg6ϣ{t*4/#8>qqFZ H+p+51!;g; Nސ&U_yX国o??<=ST7r>Z4ȓa j3 EZ&C0^<$2n efwxz2ASM@ww-3LV65<=P c$`ݢ w_!`zd:r>/@wvt:‚sKum0{`U/E:倃Z{1Y}Ἧ꾡=A?P;тER7E7x, IDATBߦmRSPKTӥ*u4*@B7BFoy pFvh#1stGeL;19-G~ w*egr5( Bӽ'!!J1=cL*i?'?H_ٔw83xH)w85ᴚq kx5@k83pgfxJ}|JO1y=)]@s qL2噊 ߈b(lžhLd4++fdZs^M"_y1 ] [ n|:p[ 3ŀ˥@w)#KЁ 0,ԮD_r:4;$y)h8ac*1~ߣ]E_ ax+^H2RH>QHoD}xȪ1FA2uP:IvFWtt:1 ەsl |7*83[d a6J_*՞Y]<- NxzB7O{|ZIx#Od VjQpŊIM1')n;8 m}H8#KqCoPΥ<߼Fshc5KǑ"T{Ѿ-(WCWXM2`ՄxF.zT]oz2xBʷʖdxxF6zu A~agЖdxy92Pup;0LQ쾘 &0#my #mXP00'#DDƦTK1ޣw6 wbqF0F0Ru>dZenSrF|7e͆q[fͨf,vbRN ɧ盚*Dqӥ-(DRrJB4RLnYŧK1`Pl7?܀(u]AuGG-27TU޸ JY.*, ?htbB| epPzw%3pPzk5|Szt4傞9k#RM}@gUZߘqJ OguZ^Fz Q6=9xf+228 83҅sz=݅^ ]^[ [xROFd|~A s?ш z(;NfD_}szZAYdӖWӖ|9G= K_M=9Gˈ_MSiO{<8y<"݈w@qCx"}Z4>o!|Z`}z;x5߬ G/ h}%Rj4aeyaH#T^ l/S>zZJ~9+x3wJI@\z9txfZ>w!{z6|3AfKlZȖMLV?.]onI`iAt&&= 6{(1Y0jӥ =?_m~Xa'ă(M+LVt ,.$@aS%!i _/$Aas=_Rb8a+@PМ?@:~ǧ:ĭ`(Et,H#u)flCLy~sfF"E˨"H "ʹAWށ/UV}UW *`t|⬠2O#meQ5" TPR T0f)ʁB.PMP9S_?R ej5~;l:8odņ#7فO> *MGUg|\͡;p>&;GAev@ &1?,#ddo>ZnJYn*M gtp}|8UUv@  Aq`iBi4 zdqUВqI23XQmohS@S`d lo4lo @^`v@>%>&g`ez&;^^3(;(_(oi~a&붘ɍ }&z`)3e9&sabx}b Q$^2`o߷lv5/ _?b 12BcpJ@ct_"M/+0$7l ɥ3a}|=V- b`еt{g[Sd^>]G~en7EUp)ݬe{_zafSX]Z*@G/{_i#tPoYG80FX>ŊKAfI 'Ֆ=^3YEg~ Z)z+E=^3Yerg~ Zs46nZ3:X>5Z`i-^c nj4?/~v?/Bt֎WX+9gV{1vKʏ.1k>~4Э Djc* `hPn0|ǯB$(o7Dl4p~+.a-,@n-?@jʞpů_U0@a"WjLΞp/ _~sف2z^g8s#ssH'0x]g.q`x`h%f`|y0= d=>lvف%UJ\݁㡻Cw9^فH#v,,T(̡9; Gidi%rr/7%,5,? @C ŕPѽ4>~>,51R Wbcq7=\THX ޛ9"9;c'cgy봳ǴN#g1iaZPހ蟬ѓt e@п]ooW ~ ~?  g[g$蒾KM%Q}| ׅCQy5*ɦC`Pv A,q\n*9080roJ iUH٦*;tf/uAP]%\vo*:00pd7|mdkC,:bKg`(;Pvb6Dw|u֕[ bKWQv zuYIc%a00h"Ŋ+);cAFNX:yt20huΜ|}&e-Th6Պ-G}3^/H@4G,8m* Zq- \DH6W?T ߏ[/9~\jX?*tʹaQyB RYq{=إ)* 5UzdNe'gJCwjC<C@9f$y8(`ȃBEI%!wMv ,B{ب3Q )3,Dn@JQ&@T85Y8q0W&;sv@!Fv&`rZ\k@&*v`? d7فYA3t (Q"A:9F:9F:'_?_߃uЮKv7 Soadh,[X+IJ=KZ3= #xSȧt˧/V@D1SX Zq`UR_Pa9S I=3LZ^88; '-t#'- m*S* xQyh9K*9KkllR2ZU9k[[*׽zu[<*׽~ҩV>~>r8\@w'2ODކ봞*uRu:Ҵ*'>Ҵzفx 7=;0=w0]1~D[鎳GTK 自Kj.?9gntvҦ ;.  P&qe=Iq%qvZgZl4XJPpdBz .9;@g%[rJ%P([[3p!L˅0Rفdzڢrj!8SsOÕ?@omRUH )uԩR# 1;3 [v5pU+U"eWv\UamבG+'k2[g6rY'd"uf5\氘Hw_֕XX H@a3{5V}#9Z]mE3hgϠWΠ]Cv !-ͯl?t6dXehYe(Qe菩 mCv @vT_/CKdUdZYTpQEGt&!;SvP[-X^X_kT~UGj=Ꝺ[QYQY!>L 6au}}|h9;v&7ӜTf(R6DBL3~bt){=TvEUƴ{(2 t!BdfؕR.MCKEJ.-de.5vb 9z{W︓ â&_?li tyddYZl7lB!L qSTG SU_7|yS/21~UegFt[vݫ#{nf.Tgn!Ϧ4BO = >@*||O4p@EE*4x>>9f-PvN3A%{)*"THUp;+xtЧ*b8Ac5AO_N2Nyt+'-V#'RR SM)f}Z|rkȡ[t gR`d|6l~>aCmD0!0|m!F.׫w˥ܣF56wϽiiz`po[soM[)<PQGvǹ(cv`ggg;4br[3;0AIA0#{ uSVbOFy<LuPn c F =Sm }zթt~t~tv *|aA3Dw?AIEg/6 s̗&mI=%W;CJ`\T`]_h"^hpc_>ƇLJ<>('ف\O? ax#t1I69E:qL9]8W8zd Ô0L' IDAT[\Dq[9_^f3;p=e2Af/>ȄiZ^#Kx@>e|2QuG|T OwCwÇɗ1;P";u2)@.#z^F4KOoJky3;Avw36Mj\7'8pql҇ fd:7LxB…b0#~Z*=g}sXuo ލ4j!`FȘF4´NW{pXu~+RZFFHFh4$fK3k"M"M!͖LRl)R&J2$Iu,(`.vFHbHIlTkUId0EOOYh-ZC0i`N!+k[KwYgBbZtӊiK|v`!V:iґ *v`!AR:i; `_Hvj%7ineT?zN-Y:QeL\N YE^hˠpR:l*5#2eӭt 3<pG]ɡBd##oeh׭u Gqǎ2T303A>Zj/mϑw$Bv _Z;}ف2j\FeDoy2bGBS<KxRZŝsFX¨ѲFMKXrZЊ  e̖6`""v%iG3p7(z0= к%>aYtQJ%B~ ^ "pKkq^ $Z=Ckhkihï ۣ+b[%Y* )^0.u-Kd:(1Zʲˮ,9Z"3ۄ #txA֙u\gVcBCu.ʦLea]˅u<Xxxp|c`ųzchstg`zghwtTk`MzTkhM{to`zohtr@jY=n9$ViGG#rѡA|P ~tAyX <]lZV/A-GWիKBؒq`Z쀨/J}0gƁiNG.:܉";eA>zs3Ct8i #; ?~F\B8fNh' RC~7 %q@| ~l `z `plczcqlgƳzgslYkzYkШulozoЊwlrlzrlydvNzvN{\iz0~iz0=zfR:?NvcWAyěnb-,j&? =cv_p"+dyA).ƆN)W3)ULE[8JSnwtk1F:e\ͤtw1% _zCFA}h%6`\29W3)HTMTUdkI4'ʟbnO+|v@vBJ RN:sKj]$tUeWy\R[Vݫê;m|c*jn3|E)սaV9"zF;uPy$""N<S~2d vԺ@QU[Y)1"BŻ/w_pT"VAgG9ݔ8<&K@F2򍨃RS O}Ar~p~5'P0Ϝ)OuUboQ!P3FayQbLL$cv(˥?>(J(zU'٨FFj[fJc 3c3ceL O2E FfB3 ̙ GooLo Ty$^@#t1ωS5  فho3-؁9e>0<5d^@'t|SS-SȽ ^6|Q :AR: g_8JmIҳ)8IO( Aׂxgaf^-{Wa7 ~: ga.xAr {n _ǿف-؁~vΦ(~O- فh vୟ>Hxe,;dz _NWdQln ]O?`@vS;U[G5I3VYhkE!.p ,GؐBl#\QyТZu#ܺl1;3sKL|8n#4qD{=?ט'q ȟ4'Pc!6BLDVFd>~gc~F>UH8!*sk#37~o4Ǘ/ip`”As|;P\<}鋉Y#$HΑ41׊6.L K9({bv .\2f<3 u"kdE_ME&n Ay݁o3R7lް ڰ) F_® Ay;sFuePUa_va솷렼$lո%%g`KΟ<d= { AnKo˖ȗ^-1{Kym>tu4:9N9Vc} {7|'Sٯ %x}62ʠĉ>UXdgΈx7ܷ?1ɘ3E)bZ4`9YtLGbVq7ԘKƤ1%PcLk,ozD +q@)]!(3w>(h*Ep#v$Ď$?>˧>%?V3Y~̰̰ `/ 6aw;50^!l܉RfR1#}7m ܾMmLZȡzw|-͕gXXYZ" 6H4ug) 0&L`xRE L5Y-$@pz=ךwsr` L mwvL C`-hRT+eȣR n[n1.DWNZ[j#,-/v{l]ή] ("?hiTLc1~MmglZ= G$e3 qF ˾P/ B=K⨇:,G*j"l-eش} EEf#L=?s :Uu#}LK~aÈ|iP3fړ KKM=6AԠiOF42xX?ʈ5ۨ ޹ ^jNZϋZE0 WLlH袎率]CWӧUEbS)[߭MLɘs ؼb5S7.r+ =´naLBO0@)sΕgf G?p4n%Fbm9Dbm&?(` -`sl[| Uo6%~#?_#}XVn |%.g,9,cJ6C!1c3gƦsP,JWK]Zy]:p.} 촥w#rn#T*|np!9Ʋze;?] :{-:0L;4#d0wVHo !n@&9c\I.݁!lC꿱_lO9 aw@s 7HwߐD6ou"WimWc۰;`aLkM?%1s#;'*jI_ 3DV"XQ/(G boLޘbfK(@#ƥ(a3P>3Vy? Gd U"k?@+`S,(˟|({rbSr 8:tTv5*4=C耜nǕ +OGᾤ;:ufQwFW GJ=K,e#݁Y/eXV/>]rv=Vv_p@A]Gu 1c-FXy0-.tp2 V<rS^yy$g+ExhE@ZQF݁1di^i?6ogca;b oI֯@Iy"ҵDAGQ0>B"%(:Ys۠9onvFhm;RPc2jI[j Ri+)mq (~@<[ B{B{/HZjI!VjԽ22,! LUGL(Љ?@mxҵy8`*)]ldn9qȗ9W!ȥc9|Y<Y~C<ۘvZ#"!*gL'T Vd3fzЮ2 }yO?aw.25[z'ʪْm#0rΌ&,ɬ;(:MmI 9UTi;ʪAXd#:RN: mDY%s [t芐hXmWڮv xh:Pe.ʌ6,f뭘-dhg7Qi@Y:UDFT V24w p!u2AY5Yhpw^^9g"RuN2^8x$AuxpuW^^:gLVBΓS=Ǖ/R_3<&FyUIsٹ~?Uo(Px RVrm?WG-jVmr'9nS iɸU}~sHi5U}K?_KkIDATLIȓ´Pf4ǿ8AMSSSSwLG.ʹZn3Gl#dF(ԽԽ!rg[~r6Bm.!bB2 qT|zoJK5ۥ Q#DeuC5`*3&2@d~19R^|?.YV#,)")g^w Wb~ * ?'>M 03{욱lb>u puq x= ?OH80{؏UVC{8DN99r2R⤵G6Xj3{.k ;5uSxPJݾl-Z)}($ jϺۅAI{)ǀK1lWj$l$w tnBniz҇:WvN-6m Qsi~{Υ}siFhpmI*I,0ߑ|a}x@/?[Z _ =\Eߝ.0/c͇`Ux~CIENDB`gambas-3.16.3/app/src/gambas3/img/background/smoke.png000066400000000000000000000617521411575327000224610ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBPLTE{{{{{{{{{|||||||||{{{||||||}}}||||||zzz}}}zzz}}}yyy}}}yyy}}}xxxxxxwww}}}sssuuuqqq5tRNS#!($ '&%")*+1,203/-4.56789:;<=  IDATxLYr؄- !;N%έ[ueαcgIv}ùtMO/VnXf^Zjm|Y, ~Ǫq???y|NJoF->x5;qxøc=M4͹Ov^.Mu;]xvt]?p7\ 6y޶*EUJk<.ޔǸ݂p&/ج˼8>ׯϏO|y:γR?X#;Яu׋ Ђ+('>kv}8O-; V( ^I;<$Ȝ)h^VUzA߿LJ<ΝyUc IPl#.S:p+Ms2zp@k q hó][H-#P%K_riR x K<Ǐ; @Q$1oguefEٯ$: 0nB~;鰀Hg"R(!)@IMV J 2Wn2ĩfƦ?/D|~H~!\nz&?{c"tį JzN T 2*(k_TC~2S$|}4Svl3/Y|-X@0{Z o'@R`=5@XYK+錬$mB }=J3|]z៝; >qahCD ;]DP 2G=ZyHwJ$raEAغԐUx;v-C)ttwc3n(!CywJe`B`fhv2Yj>fEvQo$@r _>ˌ C.Ђ&}t?翥O+h3 * f(^:;^!(T~ۑ>"n3)N\Fc GpOzBgw]>2P ? `ߥ5=';UВdCO X(L$z2_ҬR)9 Y66^2&#[b`31JxɰYV[!HR2Nv临m' EfܸY*To~&u%s.ϭ3mMM*c;"N'7p @2F U(VM&\|!=%lXj w͋T' Gb`ZrBZ u!bUr6…HC `p'b2ƶgj00h%lRh Ӈ5EG_ȱ4ׯIh)jG=O3PמGl']b`6ba x@\=C2$AnVi4E<"{Wi2IMCF s/p,c|uʄ99iZJIfUy ODh!vNPh+Doď6+1Ywɗ&;<¬^$\_}=9*3}4G? ]"~D^ vL/j(ǁA }^01 4AM^^o8#-.&͆o.뾫aQZJ,L^^ZDY2E@;Ea4 *4[N2 jP TEZ)lZymF5R$6U6\ݜ㮍"͈AFjIVTkRC#h-H%,4~|))5Mz5~b@؄x*jם^1*JswuȼgeB,3)"g"LĹm.Dm*WD/R!0NqbsV뛴;.M؜DGNnH<Y 1ky3RpP-M ,c cD  (#s,}WrvBjg ђ\>'zR ?4z kl#c9p9$ =000x\hY8+)6l%*+3;vf ʼnOGzlSeBܓİXU۠+ ChpVjxtc_Q*?:Q5whH``f=P\"^4!ozsRR /CclVr<\&-(·0sfz"#A(blp"V7Et}%&hha6N @C׆_3_;P1pPlql%1PgM@82|yNK|"T5#AaSWb;ƈ>揕)liR'@Ǣ<5cvZ?%C=eFR@h@X.-,0Kݱ%W^"Do QEnwC2cg4 ,V/ZWCѿ8?X!$PD+`) oNq"šuiڹ;ljXDh9̠D1 8Zlڣ$CGB(6Ҩ(F-0 i]eZjl,~)?*hfFB,797&a 1 qODC˟&_*Vũ)aeFpp1ԗINƹw8C?6ƅ#(RDqp)0H=Wk=$<7C<)91?O‚K?ݾj6Tޣ-R*R^Azth@\B1$'$?H MD ,\݄DD,tNR `RA6ߤuK]h[$0ݻ7b Zȇ>m Z0" kϹ.:DQB&DWs7\ܷ<>N)aܘ;/Ȗ}{{lfN%\Վ7n>vAJwĚg%@YgTL T%NT ߰<̀glyQы:ˠϪb+E&k@` NfE#xk/gm0D323s"҉I?$ <$_+R!&[l񞮹#AWm }a ƺ }Lz B7Q.L2 tQaj1y&K)NNi#Ė,Q^ߘ/cAD~e I0w9vv/\z;vf3)Cdǣ @!@p!&2>hdNV*J62C^xM4%y%Kf8dw\a6X bR M-N1Q;!o}B]10=uA$Fd[/$wr|s>g#վvŝZvۗC;ᾢ#-|/&gPnD܎Ɔ{ -3.8:A 5 2);tAZE،nс# 6<Y Q3&B@ZaVpĖįiFH w>H^^xTWe|4k7hi|ɏ̄g]E w n#ϟ"5%@~ȕ0YbJK}ʶ1'z.e W.9JS9ߣP#>Xj9/bY6ʨ_5OiR$@@[w+vemB3{k39kp+\"T7$X'>>kǠ~W0^]4>ig'6m3e5fkUmkN0mDػHA[R&@-qDSڒtB jx>Ys l0IHv *!at' 䭶;}2K}Z6o5|Lr `GUJ^?} 5Nr̞5h>+ #*IK9<,㋏Jo F6)2 ׅO,Kv  kbZ|^/EB ")6yTf<%=& V_ ],oKg)R* U"> QFjV, #zUZܽpߪI @L.Ϙ|'2ጋs]/=%0є4Q_p 6!sF sYȈ'Bf ҨFACA+~ئ5"{P#^^v6tcN ~L ? >>''R횿z Z%q{ Q{va%o6AѴNjV8'7%{0!5 xA6d%~;=B?W&-81doiv!m{Et3C"H~QB-`%0I/ `EtQfL_OJiͨ7!4w~!G%"zou(9.\>{T;B樁>i@Pu d!#r @@xMB-xW,F Ր((^ |ekUIV:dR^{عBx ͌jW=`A#{M?#/ cǧrf d Ҍ pUFtzHݵ^/6-S5>c- |FoA߁&Kwϳճw5] a/Ӑ̹4)۾5MÓ@ZjF+K/f4Bz-+Ϗ_Q~BrY^ A#D&6饍X*.[xfcpkS &)rIAxY]9ރUp/p̈́ QDnY IDAT#&bc\yZ)јSd1[v23si C,ּFB8 $hkpB/2/!ن5s7?ωPWᛛNFыCb/qL{[Y˾X솶s6L,=p@j-ؤ%^;vb:+S0kv,[wk!{yE 6SLbKN㬜˴soYiyINv͙/e۪Y:6`k)s?w \y2hحVعrOZ._6@ m6 *YC@K@tP~tł||%HVϼ^鵩*9t'EKT 4)\KD< S]*ElCC]t% (>Xд(j~`\(yd*T?A7;>=(9Ɂ/oΨئΚ#ٴ?GTw초%ZI~7Ta7[F6迲i2.M/XHXXj v-g<CaE_L /бNo?ilIjhkeV8 99b9^햻[aV+P)[JtwQ[n?U!!E92s[FV (zLb˶{Y7[ę9S-ߣI ];+w L[xOZr줅pԤS~,l·PLCwR~G+ݙ]Né0 rJc sV"qWvÝN@JÒW+. `#+k}  ⫠>BDK6F H pګj^ us.FG/H }~-B^CsݭjKIlZ]ۥ;m:bE|fY2G6RE-{(R|t[dfMf@l8M@O[*:pEӎwhTTd1UDxJW1RY^5-H[W[Ǖvysbs=$brXy0ľ!"9uw c15_/*mønh|ݪ s*[sQK $IJz d#>ih.|AC<Kݤܥ } I'0bgvZ[#B+0td~Z-oFGxzw9F69Z-;Ι C.~|:MɿK:yZ_1YD (k̜i%},)v)wdl|uYu\a[ t#[Y5#1c=uB8'khEFQm,-]oS5؇6I6k;˹G[Clk˒[^bURjݬqHU)I}Ҩ ݘ%m4= HY|"/+Q>1~_ֱ< 'sm_o?9KkC@%/jJwrUa C(X@bM"uS} ᐥ^zK:Fn睚:!)zt+/_M.)|}S t ILc'i3=/HeL(Ƿ7lpvw°ogЮ>wV;g!fF;ݡx+ ) PxL.@fT̪N O[-سSc4uShx4N?)kG ̧޶yAԶyoO|C17Ug6EQ*/J4ةt6xw=Twʶ@x} U2a4>plDXDKRɍT6),u A)e,+&O G3JzqOfJqYz^K8xQ &R1V;@'0 g) 2(?#j@AkYe 1 gJ 5yohDVc Z$1V?zv6m`jxTL,|'#0J GBrjjv(4 \9NەoR+ kf:4 GF}cs+0#VW&!x 0R1R\p 7UE*F*'s͝:Os7S{eΉ_qTw+e3Xq8SY\&$rG!N- ЂZ kl0ƉI^7g@1%? ard}=@ȩ}ԾeO3 *O{~I+@` f݈#q -XN ܥ;rfN)?^uDCmI(,luBq m?E ΂*3fE? qu-sRvZS~2#3,kGHgVíJ}مL4=XÙ=3Hw51uoZ,v+؉E^M_a [hD*u!PV=qO,彪T2Ɗ-%hĝ/eel+h!ل^Q,L/_,61#/ȚT;q26/ f}W ~;e$rE1 ?kL/G~[h:4y^~ģUU# S *>@ Ꙋ yQWb͞=2 vl5<"V&v8xwi-9"@ SC/K&6N"_ nqT!Msō#[ԹK/4֑)<?zxET#ѧ]N˓+|y LoB`w_HQLc^r~zi98DjP[sFI//s 3dM/( ldʰ 7q%zrz J:˓ ME X 9@/ Lw91ǦW]u hhy8pWdh$6xwcV'帔9=81Ah/irzKb{0ؐsGw,S.k1I=%[#K[Ƞc8{ȭL7i(l `i3b^^#o(3 n`xMC0W1C=ПBv=d!xh@=rDy`+3t.0zS[)iUut}__0};lwcPL'WW C"d vIV$ ]bfi!?-Uz`3y|sN=ryׯ_/Y{,^GR&Xo•, X{qak9m :INg.#b"\N|y >sҫ`It-+Sw/̹ͅ2~݌S# BQ` 2NкzsO[K :B4N-]??WHv/m"os-'@o)@{O ͏ar%f=!-w$tmgWrɊ̨EFk|<W@Dm],=|W-&%F%dD{D&񩸩{ ,K=M~V- O0E 43b_ %E.pI[ ބ| ^.^i#gU;,!& UL`{(O@i"YEVj"29-i6Vi!ҡV %^yyvy<.x^T/ lgaʛ~D¢2(~/#z`ШE)ܣ:\FrPG+؟Nce(@szX;kҬȜ+W8c6v\SvQ0 NzRLcN*~B!X)T[z&mb [7_v\P֍񔏔??;l<Д9uI8lԈt+km@\Xjy<PgCςG`ɺxrlMݓGT轸ís=[@25 P.)_~6l-sN.q)7ɰLT&4fq䈚}YJ80 6dW_@IW 7[)nax8^`KBCT@T| ^?~%z~U2x/0h}Wl=h;\#:?p2w}`p8a!u`}q z9[,$bp`'%gQHNotNdS-C 5w[^p`nKAq3*4 O"7K?e`g`I(wŵEBVF7ο$* 8ʳ3'}f4;9|orq-FWÌg#޶Ѻ%erO[:d}{;jxQrrrjjj[Xfo6Nr\Kxt?AOCuvF#)>)e&56 Ru ekqÓȯn'Z 6'>2\PϞ6*g؈?r:6ō `0^s΢|d(T{+w07N ֜ʊ`f\.yqMuu̾Q]^iv30'<Rxd?mWLw+#5 K-&56taڻuUPL[n]qDd.yt˪v2/# N%*( mBs '&:zC}㒖WQNbғB>Mdž}/'ހ 8Q?49L412jlB-GBoPH-B *ev§+~0\=+nEgqʚ3.H㛡}1E& !"y%.p̫A_~stxGnh.3q}hHP JAp-I#2j`ԟn8x\aDH1cH?"^hWe8 ?{2 łzTHVV, 4;&̖|":βЈ.{-%*:] O 2Vږ{*ooz5-6ܗw+g$;c\v14wv@)Ȍ'>\.:8xH@2d!124Z+:oGp~=/ zE燫N=<׭tz{ϕm:#>Hcp2H|: ",IV|%ǥEٽZ΃ )ZHu?Z>#2El0PRolh$vFX:QsèmaK m¥Q몊wYXT#+Қ7e<Q&Gl+Kp}!8bHD8"8ُox.)~i?uuua (}YH(>~T0WD쪛3NJ}N"Ḍܩu#LmWbm0jƎbJI_(>wNHa'#n\e c'!?2ߢ3l O`6hXy\vSL$R(HdvmK/> j%*/"s0NuT|''G_deu؎ lCF+o[l3J;;AOҫK]bY]JdfM+t ! '7ً0]gmTeͪ6^X&?V5V& 8F88BnY;7$KtJx0hL!'>?=|bcW/EFZBftbp;d{Tmbt+KD<ord&q]!6d5@t& u6XRهasҘTkP#bj5dEm\^oަzD2q1IZ5Tu^i鴹4Ȕǫ7@*G& fp>.f3JM7 P[^ ݮt4mlЩnY4 |`!1h6߉2dKlZD.m C~dnTo`RS*jv'BwjPsqzd"^5M9k0W`җLI;̓p4ɶv8-DM'ڑh]kEGAc-b>TQnkw؆1<*3exlO&6a9Z?; 2I\+. C,:pVT `lB`&ĭ=5ҤkkT@c N*N4A4V&X-]D }R0B̰HNƲ/@F_P~0ì}jng?\YRM2ONN)lvLO w{DĶ]p7ͼ$Rh+R n^L_uG8}B% ,0s tW'~o[=Զ.k;$LF28 |3b[tRC07f >Cc.XHXP:۰Jْ2DsI:<3!Ү%-R.,%X(*21U_5%*<"_h4q'ČJX(f%{m-\̀~%?;SɈk@ gc~gkEvAEM쾱³RCQ3Ujj%[9ڀh&/ J j%{煡"ooPgP$f,|ə iNFhy.BT_/% + ~Z/j7?.{UؕERn=B] EXY etތ`Baz%Y9J} GkQI 6f lU F%%ҭLtw9qfF8̎`xV>f16%k._,I ϿLM@p鎰ða_mOc"UvM%!T1D%Z+?qk-1)"\^$A#7xdD$P,.0qknA[9mQU KZ5C{ Qk+(rfE3ΐMK։'$D?ʸ<'G\IЅ#+ oAk=Y]$\"@蔪vAFSh#u&qPC7W~:ʻ$p̠XMVָhW[o-ƶmIs^j竬\F1z93 XIE֞&$eSFː ЙQ-ʃ H3gg /O74leA*{@'0h+y,z49MP!M3šJZBC&3xOΟ0I)3–T1"RB:@Dʓq%cV|gr 0AH>!քW*ScGߨd}>*Ή7a(XP?6OzpPy;R5ǧa앒 7Νni,~z9,Yl IĄr$rMBCUly{>{1o %Y@u<>uf Q;Ql<& WZBk+dlw2=nc 0 _$ YϺŰz<:(hV^(lT ,5x Y",\0:TN s ^HI;۝2EQB eq< q?^?D4эٗC WB8IAIFOb,".(8 q4>bO7zDE=u,H!I ss86(4ܨH;~@bxD Y %BK;<&$JNЮPG/x5C0Dπ&`T}ƞe&C&tZqB'U ż<)QQα]0 x[`835kJCNaAZ=:.4SGީlq>HֵcЕ|I^^=h0=E xCW:'[&| ̳IBx JaM:ab'R6SU5<&r\4 NF !]KRSN>6>#oRԚmD⺆\Zϋ`R|m"m9tLؼH& sBȶąq aB1^wEP( XV E1+qKIT XoLQͬϡuQֆ˫:Ubd}XMfS2.C:!\1zŔufB7 *St7ǃQ{QC(` ]i"qCnlKNj)?1AKb^d0[Q }Ahyio0.GL,_IF%CI =n矋 _I-OKf_(4s,g6[zuCކ*|@r>1E<"hv"/&N_%8Cp$?'Aa x&L umvVU>"Nf~88 ^u'N 2P@W2.t<YHƬM,Q,6t2z9 RMcb2 :@nf/Vk glǂB`5C,28Tj2mڡYc;edJ4h,>4 ^ %&!|^>`Cf>p^cSpʨK#M:! "v70<-k+[p\Sʁ/SbNm7H=cÞk^4߹q詿aM Xu]qP̎2Ҫ¿[Mc93wYP%V \@ (*v Iu>+!ǽ&wJi(mw81'W$%(zcL%;.@a@iyʑ%p7g6dlq(?[##&O%/%&5h`J̨J[sѫ!TX{́P:5!RbMzΧGT/ ^)lw;O_M)Y$aᷭ0[ `mG:oyf:څi=o:ҞKA Ǫ&6N܅jؠ{Vw'qy=%-΄I(CL￲J7딤aI%zw߶=m9#P]$XL=} 'y3^(Lgon[ɺGD8u9&Һ&i ^Ys ޢQ&p5)e+ov7;6W†6y|(֢tG,X85i,QW-Hgv_"vs=jF-%'Z3ҩ}RS bK{&`t@.Y OQ~5ȡ-ZP JlLy:A0ra-U7,jVNrg{C`f^L$i~Hu±Z]oZw4xP8;S|%TsP }j:}04VAR^fQWٽ?/J2;Xhv[+@O3QȒađ.4ċ2OYd6gWO @AlT4!5k\qu%ڻMZd~7/k'r=SSR' bq#EQ0;)-הRv A'sݛ攦71AI[J4QŬI7pԍM9RT&͐c6ɃgKYlH>$WpRU`8FоO U\}\,/qȻiy򼏠ww(a LviJn /C\Vs) q+:g&J7hH)L5#&ǝ815j>qcxdBYD nq4rE{RZ#KB~Ṱ@'QI/OL*in Tv=YЁpRX$Sġبcƒ:hW:iOWwb\ w`.z0iep+}tkZ)]RQO' zUtV¶6jiбY[ްeۢ}) lSvU7X ~/yX Uc>z:#A攼 uY4ds0@pW%--6KF=d'lÓ`Tvkّ:`sph˜^+ }H̡5T}AFK]\oMfx%d 䜪}!c( )$wz!L)0p\9ͫC|n '|׫<ś)Li]Ơ4.P$# e*5Pzl VMD[rmDD4WJz6~z<=_ X=2zƝJq /gi<^m X5;f+c(_Rp 'u]jFm݃մLq6: zD\\Μk66afӧ}2άG`;[ç-TU~ODCh]kKIVJP3udHة!-F%:Syy<Μ"T:XmEUO26Hj,~4ҳs3sz}D7?n}-"I& Sl~(T޾S1*'r[]_dLM+u]r nC\2< [Ml/ѝX hz0(BH,Bql\ ?kY|E= L'h:#w^IyS@-߈n nDK}˿H3kECf`'8uqM1QF0c]On\? A 9G9P;bP\ P[1 Z }^u~ GwQ.xj$zclpHx KA9` SK[ٴ{!cuv묒 e #ŜR0lR2>"&:'LiX_WyNj'p܇}!e[;eq m۶eQJ€^ɌMM)\ n GxtiYќ|6"|Ҏ$X=b7ɱ>a"T6ͳ;Ю;S-ۻ-c!Vgqxt5dbs K59z."~nWBƎT썩Oܱ]짲]mKٟ63~ i:urYhqr5eOԈ&(J DeG2]N=-ղ״pLȯbwc@Ң1|y Ooa%E3?aF~5u;Mdۮg;bl>4yf~~D*kN/]Bv(PD*%lXi?p{}y3^h<[u@*//% rs:+$ۙO߿]?Rqv{q.g2o) I\ݰV4- VŔfyfnTܖgz|} z5￯\|kd8 b&Wٱ@-jIDAT Ϸ+Q5gn$|_et刼;È Expi'@3-WbFydoI%#7_b%|]q7Pd(2G .5 UAQc= ,ѥk4_Bp=ԉ q}||W@|^O$xll<^݉\s+9``"` -]zu̧crF"@ o&TH0fT\׏|'A$.1C*,pKlP,˷_F<'tc9Fj'ha͌ؗ^ԢZ@sz<~|'nѣ$A=BMMY}d/4|)/_C}J1O;#8ͪ(2R7uwfyQv>djP-xxb'lT`̘ٙ&{_ҫ<98 lJvBK5u|:qjΩk/vIXs2=翿cw4 ”7:۞z(GZœsY2ڿ/FI-IENDB`gambas-3.16.3/app/src/gambas3/img/background/square.png000066400000000000000000000007401411575327000226310ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEzzz{{{{{{{{{{{{|||zzz|||yyy|||yyy|||xxx|||xxx|||www|||uuu}}}sss}}}qqq}}}mmm}}}fff}}}UUU}}}xL>tRNS $"#!%&'()*+,-./012 3 45 6789:;<=>EzIDAT8˅݊;#_ϧnZL'An*A)&i@>|c/ _D|:M[w!?D~| 9K7o#D /??8OS=IENDB`gambas-3.16.3/app/src/gambas3/img/background/star.png000066400000000000000000001027261411575327000223110ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBPLTELiq7tRNS   !#")%$&'(,+*-/.1043256Wz IDATxlvb c'n ㎻JV R}ڵ0 H/h48n4.k]ۏ4}QuP+<ԑp S1}l?~;TMS uI̩K){m8VEe{ 7(, b"_[EJwuynC3/;74<ye騤#ǦUe b눦V}yY OO.Q쿲WA7cl]E?G.[X猤|^̈o:4-voK #q b3$Bp~Ә+, ycm ܷ @_{ `>^V)!nmȤ%7px< 2s^ M Ƽ2-@Xq:u$_UEl4kqt兔RJqy-󈱟 C88&GAeE2 MJ矏}|y]o,J}@A߰ܧbz` % 5UQC,*L?o#ZUeХ;YWeq^>X Lg>r_4Gep?V3U SyY׵?3l+wptڱNH`A=?9 1aFqz:U[L!@I@Eg]{#k ip 22ie}&j5uuOf?): h짉ìH *#;m. hve @G|"}+,+ ^ !FGq.CD4 I*r(7-vz&qx@ +}.dOHRR ujXX6}\0(GKN9gV O* ȴ5yOL6p(y%޴\S#0p0bu!/6mc3>.4f @@ԩ4G+ p<*rO1 B(ٮ܉ڭ` GH5!|a x'U`uVZ5Q+i}@Z%ӀM"߷66AI,8|3%A&rhz>7͘Л=5b[4ðVί3D\uI@ %<2{ʀʕ++1W_Vbo66 !]?ӺN#~Ms!M5]7#QH\vݦ 1z%5̲]^ " +!D61U,U @Gl56e;Uoܗ.WAE\4fH,V3o+Ʀ Qmsl(ԁ w $EVg?8oW8 @>h[,gcUy(4]KhF^~=To,'mg~ߖ>yB߱3lVGx2oa\f0d5d~42<:SzmpZ{ L`jh>1,spJ;#oA*.Msi|~]OE\23:-;s^8Q5-# KF7m6ΠU qF^㐦֏K6/w\1/C׬[Z{5K܅&zv^NϹ{# :NM(0O3kŭT]BU|w)e4+,8>J(ηE6vݰ,zX: 3zc@Ld'|y||uJKJzz^ Tww!czeL8m(Sj;&@O^&ߠe]Q@lQ&_42AUe C웈ڭAgÙ J**-= o|ABkZr\u?>'Mvd񺿾\/lHkڎq|~}}.4J&G }h;@IxQV֓?#i]$r۟Y0 >2Fru~}q汮msopa)HBLJb3o(|4¡0z"`"Al?JbyD O\ mL }v+|N0$;qWLW\qjOE=麭Cy @fѸL Li t1R(&HܑɲY> ּon.O{=lgVnQi,k?ҍuF"&Mͷ;ĢǬh2IXIh*"+" <|Х+4c|y0[|CD L20p]"H 2%%8 v?MğumRAq=]׏eP'1 Q֩%,$XP6wHHhC$RPlk4eF kzLku'Rjjv[:xb T+h?U6mZ֣Bh0nԑ`r <@Ӹ/<uoLѵ@2@I!r ~U N`wp h2tWLܿn7ڳ $~Z".U]ղ883g[@;f"y\w@/zƀ(%`#]zLcAH(=M\d[V8N/K:0fQ2P(oN545Iu|̥&0Oz*`$X:AXРTnh`T[h#Ӳ#_%Yut0v~lDKaOc1ooo s"FYQXHGیڑDN43~Mxk񄀧GT7~|4-Z*| %ENN;Zdhr|ΓLPF夹VMP55o_Kf.l.gZb%>/) ?0%hmpŁbx :}khQT}|0yNED qHl:iΚkB>eG \G]Fu)PB0E3.-OAj~hcqY6 7"UyMEJ -RW[KzP(!bD8:`4*PP´ٗǿjRxj\6mM 6czANht:xrsD\AH4EKTU*4$qwVk ߀]1hn(aB;U&vFT 4 a0w\Bg(qkE{э#ٿZl-q0u;=p80%ţoŬvPda[uГC{4[d!˽YCS p@a+|ҁbA>=0 T*5P>d? pcG0C%:A%: TdjZv\uzĪ- K`6&:zPdqp4uǩ)EңǾ{,5qϒ*g?#_x&vY\R-b[m 1-}8>@ jy+;pF%Əſ/ SFg(&5jAa?T6 :O>D@1a+!tZ# :?DMKB,`.323?U-}L_] d0[ 0vrh<w\_dyʒVf^Ѕb<IX;>|H?QNLg{h/Wg0E"gmj_Q+uȣxbbm%d$Hr]>R ڳmthGs9 5p0p* *,@Uʾ_VvA ]]>dfNBTOCκ܊b?t Z`l'lj:&ĒTiZiÂ(=׺w)?_:R:I (|~2,2(BwOO*_}סM3DoWM_ҌGBnPu$t[eϥ[wyi'~_e(Oᭈ9 utEhV{ZvQDu7td0Nv*;~zsOaeb6*j 5җCw÷,\羽Eg//XZ nʠ% ?LX DIkyV"Qhڪ"QXNM=l_r>gov/d< '>G1ؗJQqmh| #D6`?>>:Pj8\K꜋  )8Y;ABe9 #" ګ2yשdFR, cNu#u HLŹۯ1dQM{Ye \@k/Ylv 5[+{N^c\U\w<5UzY@O 8_iEizJ~3ɺzrYNeZ.Ox e3Ҕ6Ǯh(rJѶջ Q~˔ۅ՗ҭUA; B ҡkjAoO I|t{GPB~#5p`3OITW]0(?&ϭ'-{4V^PDqpo@κC)k2_2UV ߨ@Iя<ÿ{Qy uϖo"¥ '%8"r7UyF4}AF ܌r? yip@Z}͒A*L Yr`b>t-߸_zAy7ďOI+'C`.2Bg`( pE㈉(/|Q'戞2(xҶWǢES}|v$18!Nwğ+E7džQ5J`/`QHhb:te-Q.q P/jn~WJVpm-cij? m.PK3qpYzቱ,NcAŗOgk<*=h2h.B~$XtJ>=THEH?U3ӱY ǂ8QOCBp*8h./BًR8Z`=, !D F75A*rt&{/sp uupA+߀dA`hHȽRSad9y^xHeДNawn>(s82 4`*Uq+`0 1C2 zr_]rGvf%Б"Ks#|%ewv,/Ta*;nE StPx1s"i_????/dQgG@#%oFm#(;`j>b o L10 3GZX3%)K8ژ(|nHmKOMh2phidy̘!ZЂn:;bn h $&>k ].4VAP_}QqA`-C×aH"ܙuǃ;D#? ij Ek?k5sL'ӓXXK/>wQ?&oRr7_R`7\mݷk!+D4+zx@"!QDd0\;ZA)s ccQ5{@;m\hyÓ8Dd(SF*˗/ y| d冔"AN$@އSŸ}(oŨ\e' CI:lw}=ev%`$BqԲp|ViL~&˝$w5,W9.~_<E4p,bNF{A&?۾8ҥôj9)xwC+々om_?4lJ 斷ɢόXqp&'zarXhI)({=I_Jh{Vq%ZnAĀ!n6n$_f驮:i5"%6-.qQI~;B`ho~Ѵf[vtb(rh_}?ٶH OOnH!X Ybt|j(ʄ#-Pf;nM ^ ץjfR,ڦ=V#gX`.["!rkR)uf)ӆk## W(EЂ5ۭ@;B_~p|R8+; #8/̫R!l9x+8ݐ@`8;3kL k`%<"D0u`FNЀFq 8zOz]V+- )8P #!ǦsA*a-i.qA[wW IDATNTBm^h@/@c,:|Zqɦ5.u%񐦦Dbx?uؘSgp $rkwtqlAѥ9b~8Ȑd2 2 \XԬ[>}"e5sYA;> v{>tqW8/7qvb ĝL-gdjZGrR= h`\j~Q9<^~Vvc[kx>UyP}]ǣ1(U~qX~Ԗ4RKp0kWR .m]a1L)r;K=DT`iPZGֿ'7u|}!َQ3Nm?,1t۲"( G.u|>\ӗ}7>937&lΜ>95bV ~hTM~YsEq@v*ĵJ~\_ [}4svE8}K/%v9=ډ.Go%7  NmJ`uIda18HOxP cȩN 0LBi(Ԏ=9a];$aH՗ΡϨr=_-;({ v[\ȵݸ(1޸D{-& eIhn9 qNP_=%H0~ՄsW[يJz=H4rWSeV&O/bEsL+ZmXzeݖ;-,i,l@dBo1$m(/hBF5pi^)@;%?נLp&L e,㦹 wbρrRk~*; 18s{ MICK)2 )V 4zȐ \倔(cB*Y?rX̸j$@\Pe A@cYu7\K8a*PKЋIu_ |HRS ˥9Q>oU\g e0B,-\ Z`G6Cr?j.Ѩq+[RL>%Jqv;Ouk|Vføn=߿y#z-kg@XUJ(&=%Qa\$u٭ APW9J]~ce̋TBP0/QeC_8 gU,DGbjs+ _ӱ̪IF[mv/-⳨%ύใˊ`DIu jr=P7"*n3mpL1m,fl{iAD6[A{}&-8ܘˍ $M$p;*ۚ#uz"eӋE9/@n#*ײMfBdA)TK(8R7mA p(qJLDvЦi2&ra#“BBg[FKSU^ucNR@23xI$v HbK``{?ԍK ˴eBDMSW..0 _ptBʁgt0| E4=zD& (Dn!ʲ DmEMo$3#vcJ?=j ;}C.Ёp3W@Y{r5z!N) *umHZ*P^YJ-(+팈}bRN2+sOQb(Uq;^OM _dI%ğGI-w,y(~f&  D i\JWt+OKKV\Q"I$|`Ԭ%ɗDGݲ۹o[SقՏ`Ԣ~v95QL-J؍syoD#vOIE9#N4@F>sU丳 NمCfV6UEᏌŽDU׼YM qz1b o 꺜^\\ xnQ3+NBCQH r T)zxmf؎z{j@+M6yE.IzqPPv>Up#qVƃFR.~JQl7*ŭT < ˏ YTeb˥&tfVJ;>)&51=I9m*,*&JHIPQK[8weBBtϯaۈ+ި/̀zmxr9@ҢT0J6`6"ן,oUS3@# Xo;x Eo+ 6ݝ(d  5WZ eESl *-(`퍐ikiMYZg avnP kQVjqVBɸP+lE6UV(mQ!Ap*2GQg14w`8 OoZ[~,=V_i)t<~ZwV,mo ,~9tlߞ^nb͗>fʦ ,DJ)5Z`l;$rQ~AΥ\? *EbVRs,KXmR<u,Vs 38'H|6MS7̈H0"Л[df+(ɱ'gaYq|" 9aLޣj:sI&)vSPHDնc> ڶgW^vn__šo+"D|eÜ ⨇=L#M+&4fæ!`#,%SYڠ%YMvӎ\HwC6= N PTLO XP?/?^Y+{i0 p={ayy.3>|>~ ~_37'X4iVJU$$+' {;+N݀:jQ6uq/n0rYvڌa*ЕsUBJp hY}]O{bx=PG*VU%s7;)e- v*@?eS͎a x>i2@ilE ?jՕj"Pl曟f]mL3?>&ƌ?/bӹPvp$ Q2bY->+9$YϹ"TR$93Rk+:*0p`m+{Im /aP&}W}8FMʶSו -Fx!@{[}Oy FmCUz鷽Ӯ h%W صN{ţS'kn(3c茐PV/-P CjkW:V/[κG^^lAO&/%sM~tqhBm;VǞ1n^ 6E؛{3<]?a~r[ PǐFDޣ]-eVD`x`K p9ǏKYF-  KB*eTR8,t70@/哦H5KMٽ<.8fZ)HIK`_l83 +WZ7= jgf HQLPӡZZlBC.> 0P=}RPٴ>׏VS}eEZz92/!7gE #WNIUI_RTkRY3zNM_ QlI6cq1X'ܺ=~&mϧšz3@\x)\X ~/H]x Ɨ"3@/4'gԥg QyI @^"L`}|IdOS?q@g#D". KDqM/NXrjisad̩ڐcP1:P r/Ł00@XkrPTavzA?6i6E 6&4XChQEԬ"ćXp =EgX*xlP( `T@2j ]*1L\PI*R]\U_ Ey"Z0ia`qPaJmr߄K}\'Hb\o8Y= 5a*f JU͏R*SrN'6 MRʜ>V\1NJm4bX[Oٴ¦Z#{$2ӟo_MH)0@:B2 ZKa& j;?KV n@l[./%NS̀ iaZ8~+堽N=I_r Sp}lKg])5CAY`VeP*kX4h=H6BcqOd43ţ#燼<"@֥kFGIe|l7uapfrBdo:M_j鬝 )^~~@ -Pū*A(l{ QuQ-~?I r=Ry0"PbtX< :QȀi~i}r ǰ ;W1ryiNI0x&{Jx{$r#e; .lj"i>P%Y)g%Xy0hb@ûv0"z72a}^T\@MfJɥ\+SJ@#4 \)W* M9kHG h=xbʜ6܀oPvE6[(W? -U xȼ2,8:K ,] kJO^2vaa[I4-v vx;o0"K]34L/ Db]%Q'G[ᛥuAχ j E+=:<Lr =#%Z6˒HFHd]{T0qϲClblXlaSb1rqDZPǺKܬ.rII-d[2 22 ,:ròMG?ƶT87ʆ%]=*[[D]A[q;e~N=Npy{7fnQiLQOWNr j8~J+X6z, OS5;MU^.sKмIuTpWIG$ί+hV$?qxe۷;/?n$![eB|]C$uy>&x>:a_r_y0Xţp|]Si6R1KV[8FAb8 iHj'uw6$q 50H_Q,r<:l}Un Sq)>P}gADÚ\~|xKuKĻف挗DO}Co85oK #Z(Hby|شr<:z_2δXUOMytLjӱzPJ"W Ouy}Iun'<衘9UaQD -;Ӝpde**1 nmZ'}DMT'|~w GNfr# spv?Pݼ*^g^t ?ye`e݆OG[0ClHT3eEcɛxC6cK]]K񇨥?w*5tpVE(d* W㼜=Mt{@?l]ٖ: d!YH/sUɆ@00{BؒUZ`pUC&Bqb_A7\pʯ:kg(y ;ӿhإRL ) 1iak9l;"xb(2tRpl @^$IT3Q|O.˹MLEyX,Y `RFRuEe7g*U%SA @{ tԅnkR-"*ucq@(E IDAT'xE (!yC A.ZR~ɗ\}uTst (.’kn6~<_`g+iZΪQ>ϟz+a@GNF9qV-*13%YE#%е!§%t>6vq;墖V. +wg2|n}[߽۬d:YjxyPVzt 15@ĵ+ _U6[H, c}B)ӧbr1c7XkJj?Ew b`_?Hdb.\ QbkZ??yǰҼAz**ݦQD{}]"mT'B6-2OCB{e,r_h1;@o*t!Y0)K<_>"!cAp殭&H6g@MpQXb<uԂ"c)lU. ;D.cЮOUpa`P':Aڦ>Bpo2HS9 $|7>u/ӹ ٢LnD߼E̴̓GFi~>ּ&f14q–6%K[l#l ʯ!-ĥۂ+>J0V_ ~/9,RV I2Y+YߣsǦ@[!8&yB d$kK,Ra"ypb$QZ,Fc֡2A*x?'Wj݀ ɒt'Iy6B [WwHസ؅6a7t-c؋_JzDm!M_a CS tazfWqF Jj5@Cp*vT81^m>vtc*P߃~>|o7C%|>o5 喾 S,J7fmW-K']ٽ4YH/ x>+maNup_2B1YnO'#9k=ϡG3?My[@yEk>(m脢z+Jݙ[kM7"O[~X E(G.:f6dԧLl&tڢښ3{FOYU6I{pou GO_+"8mB,Nay,N{䢮~Xò:|M3@&"']4{ u8R*WYbKB]=Kޘ|lf}d02p^ bժ8۬?'&&BC-(a\bHW2A;ՕrKY6}qpyHuhTpjB[#a=wZt#Y'Ы J%ǹh2n.=Lp*{?:Oz |Ջ$ *w>'v.[- 擊Kb @0$ Mvwi5RSp&g>AFR/ܢG 8+;ن 8άȅxr>{tU']^*NBS*qo9O*&}Z^ZXBBFh'UF|'u|m>aZh[@݈:XUY7?c &k{f|$YH} 9*Κ t*tJzUkJ*78$Fi.ͮ(P\mHpэEy/H 4 %d1uo^C^@SAq)<¤.$wC5 G%1Ht d0e`u3~e;r7r۔wY$27ʇ95: <7$ JlhЮp*S>qP9pdGuiǕW X|2T)9ad eMWXf6hK[5ǥͱ}I}`ևA%/l5Q n\#Yҥj_E,t暦rD@'|Q@*ve?]翘ç=CbEWo t7\M4 It[# U0~!d=a\= i hppYE1C& 6~w?c/#J1uUVzcx>ta}\ U- gށb޿_\ Jz43U\M}-z,)iކ a2YBr!f)X ږnya 3u lWL{trDgr]?~} yײZ۠6~<o@G)Pϟ.9g0>'cg-/?m N R==_9PwǴ8 LC$v@o/_w2O}/ϑ^ \@7ٶ=|)+arWF`N6l|{'?MMJ6[ٵCqaM1PXEh Xfu|jD8ɫ̕E$ΨAv8"9 Lng0I{2?^/`#v T$i}l?]kWoo˅> @5 oL56sgFb]f?}'t!$̀b RZw&᭟@|bA yy nL*|GsWytNGWU|^+SJ q(z2S@3DPA]G{qN(rpGF9k¤hu8;y V/M-riGZjv{7_mIU=@S~: n5sϹR{;k`%lgaom̄ ɯ?g<*Vf$A3~+N+p=}E'+Uñ˄tNxC˙i4^Y?|p"21_TL~tO3ݤCibxT>9,8uWY EoJvطW:&>NxeưEbV /r؋UVPLF\҇ڠLBbftl7z]Lk_WMv(}~Btɶ-tNSΖnԕETvqF?Octh9  @/iז:-!z`L *-@ԯ">:hRۡhXk} ,q0*oDV޲i_%7 mD,:H3?3)m # /e鄧ǠR+h(\. QUגuT8K/mhet O~Cf'z"^}RܴM;K=#g+MO\hB%4L $gvǎY&Fa[pL+^M(|GJxES?ި@(fĦBOSq=Gӆc nˢ˙eJ;zj L(r1Y~X:80l7Ӵ|>VN1U,qTyGtz}uXw7ia8 Ȝ"oEHA\Ҡ{C:' TܯDٜ Z1PͳQ|ZLE0|&9r[NTۦýi;%ӊQbp?L^T,_ÿ7L5~'Z߻ =c(~ o9'o\: ȲFX&u2TFYU:J1> }b! ?#ԇmMaLhۈKe`]9Cu>px jqN=L$ih*#_hčz#Q$)CS799,ʵ4P . n<.E~a}wH+/EI{.Ϗ$TJEV2>w4^ԗ(&@N:@K&tJ|ݘߴƀ -1'fn |TVtiCipsf|/]X:3ج=[G3o~;6?T86a~fnmGo3-%bj훮&ǭ=h@o4(@M9`K3 ifKtvFvJ{fLsVIaD`)Я`a= =R/rApf:S%zd>q*m  iJi6ao& Y@d LΩo(yڡBgwdEmbyxhkՕ9*yNBՃ& /45x#t=_BoYq AE7XbT{ھQv۹ ,jFbtA tWkkc:c&ȡb@ Gf#i"$_pZ0q|Ms Ё,D|H6?6?fbhrs; ;#lD&dק*oÅV>:2]g"WWr;nhYe g+?e/lJvBDڎ18h&B"NP蜵Go^(,m=ϱrJ[@Ч(VZjtۄ6 3xNz4`kbIeΊzvXƲ>H:@wv  Ch ` =: #*`(ߥ ~Tj5ٺj3m=>VĒv%ض":3QހDI*beI.Ȓ5_Y/^9@8,(A-n[;"(H0?#)^ 1fBrs,`{.sUghBRA+QvXb XIHwq%}TRWb{dhU8[T"$K``t; } }u>ӟ8MG9 gdt >bNa_ _I>1D 6\"Qe$0mQ!1qf0l-Ps dpr(%y4*Qa̬Пȋ-@qT x$HJ\(wG]T,xb^9+QJnfoD{+-QUt0%oBm50 FC;NIB)7!>S~8uCَ+'̽s^R9'nu yȗ.&f@jsW^Qq=(8bc4hmS$<][M)l׵Ϗذ lZ?$݈ͥ`NHZѣP Qb Ľe=> k16(zpHX9d џ#9q(NjŒEJӻKWY[|2>[/z).jvvT~NOq }ɿT(yLRQ pabJ&@i[%j vM;iW|T<;ϊCю= &Yb~ԯϯg $LJc_o&nNfSm)FRq h(@*byu4jTYb4t;\SҲJdBӛi*Qe% |my X?"{^G}5XÞ@Vʌ$B1~%@}W1ӨQB@P6+A]&\=])?sثfct4~4 ەD]lұkiܼ]d㹝 "ët 7_> ipJڀSh;|Lȏ1~hP6TCK}N)&ρOmM &^;NrlWHC@vUOrm$5G ~HjѱÃm̬ NQ_R GcVH a.m?[*SqiGHu֏`;3~*&-y jDd^5s ;=danVcQ,wRb&MERjtv7kwy$1aM9(<(B! :G_!0:}9V73} t7Mi V& ((E"\n9@7?nncT"8;Z@8Δl[`Ty)ݵ73zz:Y5"擡E#!`KMDZ9(HFE`$w`!dѸF̝ٿ$R&V7,5U k済Cjݰ!99 V*Vrx[.ZLTr K5~çd2_?)C>O0VnK朆aށo>j(XI T@ZQ9 49.9tH+:vWk?`C!YU)eIk~ő.ENf$]#-bmrozEJGlG+JgJJij]l$tn"`02vb-]HEbͭ9Kggy>njw7 10КqlVs{ [`%M'1]) #|)75rǟ*v@ڈQ5E \tWpT(J .D8 Ίv{TX"lbƮӘlgҽTp8T 5Œ[boy5b… IDAT냂ώ>k4|'¡4 hhc P @N׀Uk:4B,IƳhF›'fowtAwlïISyB>}"&פl޳1mKm=jA:>bC_JZRnbi4FQYkH5Q7D) 7}.?h%Bu)͖ej+Uq;s–{!m~5ׄe\Of!&_|[Qr腌׃߿Ķ*|iφVш0GV;u}/g!kvLm*c]g]aG4')0 mig,_dгnPs:( Mr%~}Mny#\]zFROIxm{;-Дs&j @Jt!1겨y4@+r0#ߺsWrt{Iù"pIw<^RIV*&dUc{ U%W*N,v" [F3sEScIZN_%~;>3a>+_W\$ACn@oh˰ĂP@md6e{c&Fz+654k9穫%) \ :d , ݝٕ5pf]Hn;,?NM{<y$pTG8bzH*ohsZ͈Az߀ӗ{}70#~1HVP$֚!,,UV{ý1Hp2w g$)-uxr_PϜGO5i8Ϸ?|O-'@`JEv\rv@ߪ֮5X͹tN1\J!$vt@)4L ;4x!Zh><>s|ʟUhc1 BR0vpE0^ΧA e$'~+O_h]%qyKȻ7U_^, Sw~t[*5GxKZ ;^cg)V>٣ѻ5n.bS1Ŗ{u е#8dvA#yYv6 C;[?N+ 6C05": 0W#=ʠ5$d, P1 ɽ9R\$kRgb2@ZdD"4 o@F^jrg&8JI`̸x6Uu\Z|O~ϺTpӏ%4uՅ CN`YڒNeyc\ zT1 _hޑQt{-Q4aI!j }plvXAq?ˉc#lz1- VeS#kk,+(r hG1ao0wؾ̈(Mj B{5%m/z{zhF_}pow:$.RPdo^Ϗkʼϖ~? t4-:mGfUJ$//:%]ୢZ%V?BXFC E{s62 O~Oy.Tr$Cy!mnl v(5q {?6d8PHN'x u"ǻ}ǼV!u6ɲm}~ qc}X>BW'eyQ:$ʛq|~sՅhyr!huHq~25J؄dgډ 2lWjcMe-8-N@ 4q3p~A[9~RW/4Dz`G; >_Om| @hy`o u A9qCW]KmRع.>k  N(c N0yN8!G/uD/@ 'Cs)(SPYE$wu7TTjo>~JWF _u_`O9%w_K-m2oJvLpua#̀N7 97ndZdaH$Y /Ps-%" [PʍҹC`i ɛ5;9, }~Yz$pԣ)y-lzxA2`5c=b(f;z! ]y "O.tGY@5g˟$XbvߍA' ]y"2Niڱ;u.wf~<Si#b ` P .'ʆa%-0`45PxU|O:(J|jx{ d4r?N?]ׁ丑a $C3{'nj"f6e2)OcKLD>fVJΑ 4ePAXdRy ^Y>q<^X4Lsx2iFijoG[6Cz82qEPL_ym3銪LU-ҟ=~b@IqArvV t V63xد@n d,'+hI adR6ش@J&Lm%9w4W4G{ (2۱!_`Q u9/pə/_{'M[܏lPYŻ3N0V~mhSSLnU~bxgzf[ :kraP_85~t}^( aV )m!Nj Yzwr`~+)Fʯ qynla^jX9/!KGI6r0W^\|l֗ig>JZPK<6Ů*b.aUH4͒JSM )b">^ooPD,("&I @6LY˂&U2e ##RjKI(XPg`u 0 L-rr.IV"oȸ^./BB륋}qtOm'g` 68a,rrg)4ԌT嗢|l%$VUVf>v`mjr.}=D"S~IaąI+feE!b88/KA3쯯@he02BJnQ{#NU ǡ&˽Dzn^yڡ>زPnvz8~\qߢ'=^H0Y"i,U=-#\x]TG.0Bɥ:QZvx|6Dq:/~(*@ů|E zһFPC;J$_ s !pB+BWBy ^~fh aʣe `iq~ V[uv"! -2PN$e s}U!Zo~|ZvG hB <*CNtD<4q f?9wv@24H_P J('-0G4],e?Gr/̈{k΀3.ׅ Sa,I(U]Q0o[R` m~wh+h@9S|pCSP\3!ŐCZBu]:*}A99dzfփàDbعH}''3){%ʫ$rEFπ~gBg=s9~1;8*.aKu0$|7gh dEf` 0m4c,ӈ60DQ { kݗIC ¼Utf(}9u2)f lS ~ ޜywl |\ [G%d67lRmV?RkrB3)00 #z>UBM¿ % AEUgA)T? V1%wwGHPֿ:;{2M*6(6hh Vݙ_*,顦Dµ.k]r&ip<[WE Xj̴ F1 W38Ф֞~Ŷ~B 4o_v\e9WsrVV]t.l~] `8^ݒ5=%2GO|?WFG=)t0Ehҧw:`K[ԣyX:Wn5ler#X9h j 3D8 j @5M[uBs `!?$g.v@SAtEimֈG\ZihEP@0c??]JR!`SPb((G lk~νwZ h#ZK͌!h',!ڥ(dN̍ ~yHCXR3.~05w3߭OuM:enjgRpY@0*~NOfRh#`m]钢þ,"~܈yU113]YjTq9XtL6Px "\DB$5 NVUL{s9 /oxC; lwSݹsv4<_^.H|} @-1\``DEU\5-L)[>): t5Y dE"ZLNgX(7aqhd տ;E\ ]g81I)X5( GZ!B0jNxgw^x1-]Жx"rAd` +ǾL` @sM}Db\rLMc˗-[oMOp Uqs8 2hD5tCf|T96oPhp:`b\A_#A QƤWI!CLfe,t#jNHԈ iլFk! xT{L[qk.y#-2?uMڟ i\v L+i a ֡[YLf8ϗ /HnVk "F2n s-6Q{LU25tb"nhYϰ-Vmx;q cENPZwvc)_[wGϧywt1w;8?󣴛1s>^N@-pZ2c/9 I >Id̏uIǔVˊGr#}d gMJ&bʴB[ʷuH3j&n:].sS8 v«ױP٢. uB4A*?߀2˞%WD[=@…v.;<^$y(2\_$]8&"ұ=S5J~~Cܫ:%!fϧ2 FQ >QmʼIUo%WX 1{tfp pIH-Mxi[9LHRZ~n7%W;O%[IO K13UDne5D(R@7yEӲ IfтIxϏϕDU3-9XB^g3C3k\IDATLg q2uk!] EL A+U ,T(kjmo}LG ]q A.D܉%Q^O5!/7 w\ fWq5Ԧڬ%T= !+ Pf 4KDkyQl87j%7/(`P[_HrMCJH) Z`bm-BL5+Ϣ ~>_/B{^TK ҅(K:n3^r$oH?sy0Luw{Hg(or%!~Mh^T{-׉g^ҹU4[D d1TLZz :K~.za<I}ȕ,UB 2 LL^e.fS毻3JfM`Jfw콂bzV=,P亰 6*V7I0\x쪐20ڨwc?x Hr<7w=b7-nmK7$D<^{hɣ ҧ vkmѼ5.u!`)rF H6H}/P-J?j7ڥ% }ڿYȪVPEuq[`їx*HzψR";2b]SƟ3o!UvX. Qr7Yh]0N~]YQDh]v%LC&B@殥6z C(+);Un;`DX"??䪪sUW?sŬα=gs 4 M4]=@Rt r"$KY{:| `fƪt/Z=t޶͍FED%#6; etSpC zo;f4O}^B>$2(B.W 4'Lř޺ (H6 LmE;Af;fhq:nިi,ex=Xl]^j].'DLIENDB`gambas-3.16.3/app/src/gambas3/img/background/tawhid.png000066400000000000000000000536661411575327000226300ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBPLTELiqޠڱΰကʍƥҭјͩԡ†ڍ億ǃ·ؤ֓ɦŒґ̲ͭГ؀ոǐƪ܁ˏڈ䢢Ǜɞǻ֕֯ߞ޻󦦦ޮԺp׺UtRNS&'3)%#$(*>+=-,>"!1.>7 87064//.:<9>2=.,190<<4;31>71*2395/2!+38=.+'6>>;7<6&<.;7>)5/199 155>%;*(:4&(5;3735 0>=9;76,4=4):->*/:::6;,(=84-47;<>=<9:$;;:>5<: <:,&1 <8>.8&;;=>=:% 8:3*= ??)5"2,(&"6'!4/"(%") 5#&0$4$563 !*?V IDATxڔmLTW^gaQAUY`xJYTuED ҭ/|0~P *VUيZcFڤ-nҭi9sνd9gh^ޣǿ41f.,MK8/\^HfҷƖ1'ƒG]ntp"&EK|-_?q}}M/氰J'? ?8" GL|zKLrLLLjNGhmMG^/UەӅx p3N/M?^Eu9ґ\lv0jpcZ, dgD:ڤs~~T%N'Bձ^ <-.;::|ޥ60`=sx{FƮHG*={TnW9Px<E0w04442'+q8pX,;3k*5vt`b$ɻW!WI/v':N|ͅ PRҞ$lL@mXV;3F ;½|C Y,422&0&>n )_I [al*AF$ @l #bOj/i?私Y?+ O*>5(?M˯K ~gw>~F*!!j (){_N18~?%|0)2eޣ G*%8::vm~ŷNPd]W 16$Uwj?d/|-Iӗ6KGvڵyTo^71Mq#ڗ$+_(| hևصzj\\|pI l߮)Kx_^_tMG!V`KRwl~XBad<>d`[&0XM`bz*Q`\r;wP}׵Ȏ#G ]nw_%/hC`+!@;O*S}J$dYK~U U&Ý;"mdر# H~4oد1$[n.d!@N@Xzx2<<7 L|ҵ*5GUas#+ H?8bw}//@ׁ pFN"p༭)x;7rYYs|߯U F58ha:0rp M(G.|? @#_xu" V<W; "6YT| 65 hu A9O.͛OϿgg" ># \;ܹOd`$пr*;FE? ]8> i:.C&׿P#K6 _m?<PZ*yZ) !p, !гp[LV@YY|䖈\+ ?{zeuuL655''4"׫٭1c%G=+pRal8|@?p=L |?=St0 +V &f zF@) waeeeq| p G?ʟvw09+ OT?J?%%sssۯw!@hpphk7:Y@ Dg@===d >խ[tB?0s3U/xGu+ ~4}B^_u*~eJMg8}̙'Iibcz@}NV~ߧrmO'?Ҙ|ykkkxm`UGtvkB25nTX#/^L|#Wd 0Y=?6vRqs ./Xq]v `[:JysQQ6F|@<6L*}`܏\;z?&+h5`$~Y= 䤪 G  ]fzNs??+dXEۂ@m->xD-~<#@~?Cxa _Vv ۿرc,stuu;'N=&+cgxF@!"'"@qEEd*V_䞒yf ;~׷@?}M_740Hgo*1.@7p@di/m]ļx]]Qs: Tgj>6z<ο8V V"fV No$+^H \Zwq8_(zmgܳb"5Ӆgt[A`>ȇ\ a֨; *^#@.7rrk(L`T&U.GݝV<4_Kd Ȃ PT#M~ _E߶t%|\6 d~{T{{{ 7 /M!!k[ #9?Het 埂&P2I |t A0* D0SaC% eJg$FonD?sv=(@2 1pW6P`@ Y.#*_> Cxj3eJXU_/O:ɓ?/m.OLQBٯ3 ؃F\n`#0˘ϚJo ̟| L(e@$ku#?8)**}4'=GH7>1?0_[J0Oj(ˀN3r#Q/G`a(%mݺϞ{kMBDl ; Ox$HJuEpD܀-@ee?6w_T ، ̠mjcexs1L1?>?8A E?,IشeGʫV@:K,g`¢Eި??? H>N#^SrWֱm&_*_2?N.~ OE 6.}1<+3@+cbTOj~M^a hd\!;𢸟C€ "~@<ĈЮߩ2Ɯ))*{FSs%` `g  T! Hp(V ܿ``+/>Sp~oMM?՚Ks@e.[+L6`l1V?*KeY@L%g/_q""w@?  ֭[di?`,%@I*q*NJ.r%˔@a޽^ڃ寲0K֓/j'NҢ&sH  } 5|9| Z,"df5+O|2Cw ?,Zluʿ2|`O3eG@  ?ʡ3`| G߱c5:4.j@Dō pXu f82 W`x˖]+w? )=_ހ_{z hs}5j(ӝQh|jjhߜC`96Y3 T138j;dlO ƚ:|/DZ\iq~h #C@FOe~^0 xd7?`H4fj]$MKK]-49oYQftO 4 rV+3sLq10IB},j_UOvՈ`*n@S5_64FC࠭lγ1i<%6|f@cǢ0O;u8΀aR_~]z̊bS oPvV-X!(`7=zɓ'w]l ?YHIas~JFҋ/2ׯ;wo0-'mmmVEcXDP<{2|{LXhpڀ;l?+I'FvGga&enLr嘹]7 ;?h]\V3991*w΀d K/'r!@R6doeܑ˙;#"VxwH(=a {`vQ -#OA,)XiX7Lj_J37 B}iyyBLN&SQhKG!>,J/{;Nj~08A\Ewvk~fIRn]H>`;fs0a"{'I5v?p ^hTh;)gffBB1>TnH1tW3CݹsBa@54U"?~~~XC 4a׽ @  Mz`X3ؽ Ê@;d?S+UN[x23U[0@09 K,W,zu` X d00 U?o3iwՄFXyylc;0=?[{ߦ$?{iƩ͛!9U+Ih h)lU~6P v.Y"xo^o^VVcߪꑿH:JKK]%YPKf70 P罄u„$ XL/[Ԛ}L V`_s`SJKv ܀r k:+*A` \9~܂d.?++((GGvN&~0&`%:xbƈ6__/ lxZx7d#~U?oIo6@rϐZW@F&3p! ( jD{3vNit—崢BZ-`_F{Cd3/`DI,k7ā~ӧ=j  `q\儿knq Ҳx4l歷p X'&Bog'Կ%WB~/1PpY/[!>FMfeth`.7% c0}B_Qv ԧR@"/Rȶs*e.j< ;j,Q%#$5&c=sx<{qK ?fWvfJ L-S`&} 8Ajn@.ab@lU#|~ErBEE\. 2?w$KbLwZF)*9T0w%iS' 800h@NvHMME?R?')D'fLEȇ+AD &!z}5;vs0wJoa]hrUq l O&f(eC?A{SAJ~zw!(9otnC;@$krv };_ijU6*P=/ Z~$]20pG2GaS ;jӵZDQoN!`Lkf^D5pCb6AVw-h@ϓ63Р6<7smӨ/*6=ZT0`H3?2y:iL^M,C~v/P O C c@hS-.3` f-Zj nc_S;ol.5T|)ejUdM'KJV[Yz)7BSG߲nJ~6wrj>he^D}+L1ǫ ?7OdL z)GdpFC5La Rg,C_=?ОϚH3VDx璫n~u ;a2fC"MwSZ1!xuߢ )]|9 _Jj#,.s3?Jө|Sj-,) E6?_ϡ3rrƕZ /_ب IDAT`1]S`>f?#7T plL=N#ʴhⷞ gXЫ 10H)#WfZҧs!=߁@#\\UsG"=B sb(j֚ Q(U<\D1!-Bd5,>sR91?vF qp{//b b`20B4_FC[m_1̅LTc7S79! tAJSuucדcE60fן\{Bn ~ 翯wBz.jJӌk?CCO1я^WXT˰+|-};/v21c %GR_;\GގS,lnNwX){ &QQ|(?ğLaDᴭ]/#F"οh>2D;S? yvB@3Ut`fW}+aOdW7K~f@Vʏ67?3Q t<5! ;Fg5)S ?j~/o?2gE{{b;;ǖ.+*U~i@Ŀz85|u1&~'0n80Jb>.B µ?SVL6^f IY)Lg m( |~˶m^̀srh-{j䀲Yt֪dO&:!0iv^W{qpK|yww}3:?8+?v1`=jh`k0q@,Y5>KZ o? _'O? Cn *SlD  Pak܍xtL/?{R{w48Ld0dYln%*Bk"vk"R2Q`ªHMІ&9}9a?~?{{d] o,Z,e2BN @pT|^jm.tԿ[è;UE1?hӻG[^_Eڹsrl]E 202Q̼hBLpf+_8{@3{R1 P1L6>;"wo0Fчr%7FKtEp^˜|3o.sm\?Xp,?D4mMw,ٴ,4L>]nl6&!j5\FuRx4 +~K>w˭~@`('%r Mȧbby8䬡A8I Ό5?ЁO-~?"Epj E + @zF L[8 k``@X ѓ'WpYu_Ɉ.\kB0]$'[+F{L @N< т@zJ?ǖ矢[OO~Յh ^RKC% =Bߚa\7Ujn5Iό&PZ/~K}TןH$p7e[(͚YFHE%Y~@DlF|B`FH\p>-+rHɋjvߴ ]ꟚOéS,hЏNr=v <Ge@З3,HƟrʱ?QP"y+@"vx:5(`U9tx AG@9x?Cq_z Hzn/v~_UJ >B~l^q4MVx4cViN!bϱdU9~{#έ_`gm宬yQA$`]פ&V0˸-?Kh:2?ʂB3=ʗk 0ej:@!lEǦu?]+LV4 ؇EmDWz?kx5}ino@h yl,D րcX)Y>cʊL^#~+,/st>}/swUDH'Bb;:CocewLq{{ML7B}4hk}k WD\/l}m7M&E`Zlq= - _qr53YgnzO1@Mnlu7y*~iI' b.jaWA_G2hm;$A@;5}phG?UU^,xߗ“PX뢬9J^h:o*lN)Xɧ0lc"N: T[5iƬӬ7?H7@cnEz uhO+ @k 8N(aG_3SO'#3/#a1?a I>0pcpn1(Ia s?GR1m˹~{ۤ6Bᘖ07 Aeb=՟svE,kd LgtG-ǻK%5f.y܂1&2^hڛ\g&=fM2On3~yj>i#_QOHKM _O~tX!qIR&?ZPٳǠ^J`sJf>gS+01F xq-%rò{< @J- 1ٶ^Ek28O/h\ڴ*ℑKaVdN``am7@.Kp>ҏ׬#G_HP\gvE(tN`2T*@u{ 6II~ h+) A,! 7??Hí1vK(aNY0ۥ9#, W )W\6l^f-2CO1.KDhr&˜kN@}yQg 8hRCB/K CM ʇ1Y~p!uX?$h @z**dp1:4.gvrНlիW 5Upkt/ZћQ]' uİ8ʿcMx]@X,\EY2gDE ZKM8:Y WP% [>;YTE矗7-?h YE5 NX˩$tE|Y.]w5\T___?f.*jkk?ZQ_33i*}OKZ@:e"D2u *TȑGo{/[#h@~:m/ပVV_[-oXvAwH"00xl; .fum8UFx nX {kKwQ> ۴NnٲA(;.+?P2T~PʋdkPQ@/P 8V/Rl)A!q6$ ZmcRA48EǴ˂3kss}_P}?}=|h;cgi2hչ<͓BXTQQ/r0{<ݹ \!BE 0`79ha/ :$χUd&_Q~ iZ lmۦS!@/ ?׭(<϶j鳋_gi)@u)h3毥kJ :XLM`kY  C.NL`itC 7-WLo:J]cwmf̈$;C)s3F>N?ލlxb?[K5<˞bk'زq1c~X#@52]>G0=3߇1|,)>P*@Ӓ&q ܮr{/=G$ u(T}WhH`r~GDb7Tݿc~=$%)Bm@ @ wQ_UXo9`~?rW؅~#xiF˚,J` ""U|ΫZ*ǞP}OgR{J 0fsVFP^X%UK+F]]\D[u7bw%?XǀҿM VHP-/!F%&0w;&:wWw~Y/H~ Iv8{SIaHE,4# L}Uߡz$v,^E-_TwL)NQr{eI1Fw @%jUz'm۟<擷ib^S. w  ;l ^f_Ui:]}h_ M_]~@ڟROJ;`z"AϽ Z#`?9=QhؐYĶ^4H \vgI0K,?Bt~mP:ڵk]?p$ZU~_=4$0T%0t-l@rreYt'ɏZ_:={W[3Wf?aqq1%01__.w%N@p9u*J,jڪ3;-ބZo)[ڍP(/'Z |tpxoyE P^F`+MP#cH #Ղ,|޽{_~? TlK *O?w(ܕErΩ@z(?+s+/C;Ȅxalō?nڴo t~Xaˑ;r-BG'Hq! lfa3" H 8@*QRZ[~q"6=Xх Tž3^jJcgt :X~(ܗE[<0 Z?T\3J6)>,a"_Ħ0GDZTq:M'߃ E~(8iɐYEsp)D>4C2mj?__ ocǰ g|J& OzKl AJ[m=h=@ '_!nVȗOeːm$o }m _t>OR c+\6b 8'Mh*[a+~|IYV*u P%Xc{:_/n[-AaXHƈ~ډ_q_\@)q5 V~opp&l#rGu -,wF+5NsPZÇ/_`& #! mi 5(IoНC`aTU1}2n|pe?7@iF⛔/&5qxHN$AADw}5kd|'WEZKi~D75QAk8ebKII3B~:><]_\zP АˣߍEEi·)C_$lO{%W G[V Gk PHw j`o. һ_C]ό5 4*b4 Hhf*#~GL~7})H2ByMlϲ3ņ~L 7H  Fhґ3џL7#> g{Ƭp-WRGd?lGԜ=M3&uvETmsؽ5hvÙ3?) -bgꏚ:-`MiK\'6x8id${nCGH& kL5.vx&`V,"9`A mTnyls `-AZI@/7A;BF ^*> e*UZD@ZJ౴?[CI@nW#PL? N4@ص  2EW3:Z✌7?Je;# O._Ng v}G SJ+{"ӡN \4E1v9?P埐`ӿv(DSeHnrWLyMܫDVWL vJ8wdhL Z?W #0ooDF P nOl y˰[5ըET L`pQϥ_xū_&54[]lo?z pzߑן Dyj1%Om `z__D8~I`ܲm1EA`XҌ%ΘRS}Ї`xWhcmpq8a3K;_ q8l}xa3 vsjo 6tv?-iF`9s_]PDVN:wYV nIaw'TB~Wիu樇ΫuGSxhV)OzhOmU\~?UhA&89ةeU&ԯS+o1n> 9qѻ2tQ7` . peF@l) 鏜H_ϡgڳ%E9-Xkn xqSxpHѮ7%X> Qn#p e Ma*j6wAꯩpύkZ*U=+ d,Q;ѳSXx4?q>b B$WBcn_oX`dEwLp!WNl x{/6ן={Bct /}7fh`-,mP! BJWeeocී宅uYvŪM+99-U_q>/G0־assMFcx 08+!c/@@XSi/>'%ϮVۿ;_rEJ?6DN o&_f2^ǶD!E TM2M@aN`hh{fE'/\(yP(=1W1yӠe7T5x)ޖ g#bD~o`'cؿɧx}<8. &8h[kļH͚b!0AdX)"W k~$PZ-۹~XT+讇@4O}i Gl%pJW7W7xc%vT<Tb%V_0F[8ah/YK #ullj8{u^a DʂZ, )C kʼ~_?L|:K[IStSWar~oM=9}Z<xbmtp' $]Vk>N1٢w$ͬHyes V>r7#iwΙу:黍:U XgPb3y<|ۿyH!/ pu P_whwF׭{6UI@l~b++#H'9Y;t#c$փ8Q' R/Rh(ON3 m xjl6I ɥQ34C|%B\(EDCgƘ1p]ETڢEeu]"D6b^|P= uV&h %_N=|kjV/^x.L {](`&uq(}I& eTyȣ'&O<[~Y[EOK({~-Hm6fDGlc�3M!rQS|$ad9kZ~קf_=|j+?)~N ,}c5]墴dG@ W~!eG7kTER'Aw ly! \^Fp `]`_&[}N0JN|?ȋhnUh.]$'OO%EN!/8(ʖcaXL1nz'T*a R|W!B5./JwV7UdW䞒!|hjh{A&iqaE3J|K+&0n^ɀ׀ (|;1-ܢ^[PNL0 8)Nxs,Se+JS y@`Ɉ"+{x+-w6W֯؉!`:X1WmKm$Nv\<LMOhK<ܑH<Bƾ$q]IͦE:Mez/p+o<-9qr#򟍜ixnt:O:57ոIENDB`gambas-3.16.3/app/src/gambas3/img/background/vline.png000066400000000000000000000002051411575327000224420ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTELiqp$tRNS>7VEIDATc {IIENDB`gambas-3.16.3/app/src/gambas3/img/background/warda.png000066400000000000000000000577601411575327000224450ustar00rootroot00000000000000PNG  IHDR gAMA asRGB PLTEbbbSSS\\\cccZZZ^^^eee```aaaddd___[[[]]]IIIRRRfffTTTGGGUUULLLOOOMMMPPPWWWhhhQQQgggYYYVVVKKKXXXHHHNNNjjjiiiFFFJJJkkklllqqqEEEmmmnnnCCCDDDoooBBBpppAAAwwwsssttt@@@rrr444;;;>>>===000uuu888yyy222333666555vvv???999<<<...:::777xxxzzz|||///111,,,~~~---{{{***+++}}}''')))(((&&&%%%$$$!!!""" ###ѾDzֺy:0tRNS?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? k IDATxVYwHՊ$. 1x@v8r }fȜ!3v<.z*Uս߽#'9Kc0Z&3;>%ϫ*.>4b̋H2*T0Skj얋C^o׫UvJi!"c*jqx90-#(G,6$D pW-sTUpFQU-dTUUUD%æi nixo5|Up(;lxXm~7s1_]UUXQ]C!Qh:ٻrx4&AMM0?[M?/O0e߷~5ׇY3b4MQ Ch"^ha$iR޽^>UD)a/(o(,"XpG3d0$q(b핛A5TBZkLrc}X-~Z.c"ne,ɐ #E(c8@ e FӕL᷽WU2aK4\;Q-vy7oL!ӌ&NYǕDleEyW Up<ΆbZ/|_uUVyA'Ȓ<A]Ydx<;{lAt~\]6{ŜXU XH:!a)6 #I:S8䳇W&(K`~ƒB Zxd<_g+%1A#~7D$@,[j'ALRQvw~`GoƧN΋eY 3 RW2Db+ 8%5&@Џ7AE0xA31G d9f;:8j1/+󷷷777*N XȀ P\4$D+ }PyWe;+7Zzy lsv{K4˂*Jg0UJ\5j 2d`bl<((/.5,C9iZ|pui5Vڞ;.V?.Vmɀ)ͮONG" c2LNx*d4Rx">% $Pާg(*خfvxpWYЗ 5P J9q`&Hp bH\CLT@E#?W=/N~?PqPp2֣4EB("9ЕuAԗZU"^~ ~z~nQfkX2ˤ^iL$- ɑq> Y]RD1U~~ns<̦y6Hi!4$HuX&S2!XL/ Bɰ#rф5Z]i$ Q LB]s C"PÕrΠu6<('Xn~x<\8?%\5\XHe/.+;HJOVLQnhGefE/WvvrV-~1: e1Ǥ^*/b\!4 i} lqhdJbmkZѳdh2B+!UPTxW :V{;l/{|?Vi] E 0,'[J%(R1zЮ 6.]>M ix7!m"Z%.З@ řd AEcgo2)k,A2 ĩ4`m4nYshB,B!!$.e6,;IvxIqTR3U}3wj"ۈ}{sT.I!cdĺ{$>U󗕰bXͧëmbr/O|]+~?r֍jeW*XDHVdgwyvϚM dj,aQ ƿqJy`tZ&CD,LfӅT|fh4 @ewfWMNf mk%gAi<D)[ɥls6Xynwt?8{)t5,Tokra7-DD8;:Y4@Ōvj&wwo?<>>燗[4Qyc3+B`&+b"$f>Hsđy߾P_2a? 8M?X,83T\)d-Z ݴ uzx||z]s_~hѬ_[̜`b$`;Nϳl"#Lfx}w뛫nnY?&r*+& ipe,M nHb*80Fawe!49 @q†SB^`Tg1QFqWr] vye3N3{DAq;gtUE 3!}w>hd!G8goov7W7v񎜪-bᇇI$&qt\}!o(a\-)~T$\I*Ѳrd"~LY /AcyY7Lz9l̶A_q7N6G"4QD8n}HK/<v˙p\ ŨRQ)1i%5U<lifJ㙠Q+ YL$]PuYqF3tQcxF셷WכyS??G$p{r> ət1)oʹ7Y.!pV˨7( E dBq̪Q3ˑ9dh2o٨wn[32Dbmem2ÐѻX&Ws_0,AƲ|rN OZ(nTFg0wW<]2 HziGBFJMbO'syʱKb:"BTWc{q{$J/!# zlaDS1rjF}OHBpfvM(.A0c*jlk6 +XbUBTu5-h8xjШp.s+̡():-}:9q:;E$J ?3)T"10}ADSkdN RuT/sL8VZǧR$ Hk@AZW# )I(,-oVΪJj! Nf:,a<&'=̢^P.%سG+d #ZHη/z;qgՆY]to3e6BbƂQe@#\ɿB&|YګfɈ_vۧggJMFsF lD,0~泴o| Qyaκc=@|î3S8[6DJ ly|515ۛnIJoYppKJq44:ELSlޫ"nU^y{qbR⸍VhZV`0+l=EujX`D8RLAot:N"&p>ﯼ5z 1`30,ZIJnޝo|iD6ŊbIClп(Z޾믿Q{t:|/_|xԪq4T SÐM9I;M11uX 7YX|fxT_>+0r Uhzң,I2-@$r· sQ =3=~sSU Z^~"8Ae6 D'_4Ǎd,Zb\,h<+ f=݁}-[㘽@ȠVZjVBH0Ȝ=P dkOwoat&̣V^/v$RӠ^׊]f0l9@ yb>͂$ Fd`xd6Vi4un7r4=aW8o&f\Fb1Y(b`wf3 {#\lЁQ3`@+C䑣8S(Z,u+eLթP_!V|yX~klv2i{lk߱l'vvtJ3dOaQD>b5l -{&l C.4~O>EU뼿8}{Pu9,n1lQv;\nݳ &͊K&DxX,i!fyE`"C(<-(9bY'rmQ5R1V-: 9:>rmҌ)5+AҶRղ(,&6rEP"{ntn뷿n%^.zu+|, :o^ߗf2$e\Cx48 "$2YOV+S6ˢe}}XLӿޢৗ՗~VR(/8JKWu, NH UDZ"pL4(Era:x!rbv;{EONJ'`asz m}zyxBz|+U#rbذ Y&>b4V bРZ*%Gj *`H/E؁ӹ1@d-w"˰~&t0-M PNBP`Mb,~À$Q" (rը'9ANJ)"ѬN^?#ծ^>(Pf!9-l:)& Ό|sN %&g"[ :,(;+#TA^'CUh 6fYZ7(`ǒ1H%-.t ZJGH[67%2]NRǥ:\餜H~{\?\&ǠaiD$I4F`v>@Ad'×{}y|NdPjZ^c;vTŨ*Z˅FFk\>Kx/hvjLphmd:L4 2PFoZOI/jrv`]8_,XPXI44.s((xhF6צMtIў4?s[_J]暿wGM4d@&.ܛ@(tP#Lj (S;.mhI8!9^m}T3yzy n~ݽ M1);])ҫրNzɌ&Fw *^ryKBVPhLehVY/^gGO>/^&Gzk~ V`0rA9E VL2w0uC8ET욤5nf{4T?ohtܭsdXvUЗJN1U@5t,*UmU1mQE~Dd>GDm )&B-iuxg$,d3 ˰2f9uFDgfZ0.ìq$f5۬o/5[./.^uoU[i q!b;nky'n6]%^_^=a-=PZ +jUz)c 9XlC =kw}UsInIP^L;<A<xE;|%g"Z,@)3Sbtij51#Nx= 5鐤x)_SdaC0x]/ODb$rbY( 5B[u'N. It<:8;Nr,*YV̤AB)k6p6I;g$Wy02PI%uy*iӴ v3LAζdax__/dZ \Lo^u┩r-vP.XB20D"$"")&B>_saMNJi2KTl[#lA(q>YƁ,@QnvLaWr6G"r'%)XCy e7fi ȵ%,IۀUKq7$Do7-*hjćA1 it\6Ad /F.ra.!d IDAT!Ld3].c5oJ8η@a4f]CD|r,WG_C.1RUJ(#@g1@Pztљc1{bb')1'oj\eq)ʩ#)txQ$ĸ2oK9tnss|2]OpHiPv#ǠZJM!Y's=h~:-G ӣͪVȢSRbRl갩V/N/WK[s&]]_>GE^d,DW/&x*:.2_ܫ%5Bλ2%9YY&d)g-2RFFfRW!%Vd* =k3-r"h3_08O.S2@9U*x֡8vE"JBީBBI%Yeqgv,&YA9W6 0lw)oP\wxN*E2bX6S[ŧWxڏ~P&Poo?J)2W.8ѣ!9bb9*?,T%:[\" sx5 kr`Ţ?^gF\ UY%rϴu[2[-AAs"cU ]-iΘ%Yo656R4ÏvX.(xx9Lʺ/3?m#bcA4Թ"rK,d`ܾ,f ʄg" `4æ8sdK<kД63nUM:3cN5'"i"ܴ_MU,%H55(rr&t^uC{t)%wa{ &DIL8/'iٔ?hQLWϿ'Ͱ2#Ymp1CXne@$A0ASXYJ%\VNuEq ux:h0fzJx@±/Ԁ|{};a*DTW-qEHU|P:5xVTlS hAV-óJ_|:z[Cj@5}mT",\(؟ ڝ4QJE1qfR bJ Հ\x +GQك-(CCРp195CDZњoݫ_>viK0d`]t]lLksQJИDvE 83/3ι155eΙ/>=m[> ;~ȴhBQH0r(8qzNY4\T/҂<s:덌S/a{tel6끏ƩsHb8\ k- 057c!Jc9 wzy9_N7Sťՙ)mR(@тE@ω(Yi}Lg)Ak V sl}nDV T+tVR<^6wr@XRD!Tn8i\qڅ VcO_ʓ3bA#9S|[n鈗szx9/뙛>0)taLZdX$AcKR̃A:QN} EF ceZ'?ۣ^tڄ<> /~JZ3i\;0gd:lJkO&漹R ~Pu9¢~M²Cp DҌI >F t6J{\!,|{}kEkg2eTY:$ZS="(lZ0n^U漋# 6o X KJP0(2puKCNUPef3^nLs97=7۬K-.)[bR_~0ϯ+*|؜쮊\ Bkn_T Yv D[erjIY,u*E 4"mIQoVTPЕfs@fA'Ģфͫd uP%7qxT/Xh ڏ3 w.@cϪ63{g<=SeW+b itV{rTѡ>fXkx46AY]R>|KX:cN޼ o|8 Ks=r<lxgRfx 8#O(1JoWqb¥OIuydͩYX++Sf\oj:]F/zmQu?罂tW}i?f}~pc8WԤ?w)%A[lJ ?|v7iuJ&SdBz[hJVP:ON|>Yg;d{$$!CiECV5s{h~2k6hOY%ʋXn=-8͛\]v/ɽ 5"tӔ_"HKoy! \==1Icbz|Մ@qID.}z D}r}G^!UdX* FcC2V?o#Rj h V/?YC;괧3Z京/I_NonN$(kWC^̓DNKW/H爆Y6C"3y n^ {y34NL7.gHd%ptypR2~#fJN\TZ e̒ƀO߾~{;<2DlRQ^5s9b|.XlK ~F$=kO>i)TJsN[X 1"$3A"I E lTC hU&<颮:R|d1^(:Ə~uss5YKGj?5+8tsL}d(aꊙ/k   x!ưEjxw S%:]#!&U=Yao6Y7Ǖ/+QJkzZBZrB<4+A됑!9,P GAat#NsJ1SkYDА&A|xݼ>}?.h.;@z3WFePW,2Z$:N?(~tg˃@ -mv5>lX2O497?߿*mѮ4ź.)VE,,^Cq\\"A69tEY2.DRn 6Vr6./mV:it&Ni /adԅ ǩ#AYr~-RI'L: yiHT&+ l2Z2SRDsN,^b4A3Llh|[b]d'>пJ@<7,4͹24«d4;ۗjHf 4~ xY#jPY݌HJ a<jEl@qr"e4$OCdxwϟCJ44 u&kjsPP[!N hIG7nyZ{GCRuA.4> ֲĶ˷_.Ӧ4! >>1EH4hci(<*κ% D[5T"wYwt_ Y $!KlrzL%1Uz.U'ɪ p"4>3NQ3|;|C*HΦ݌lWj.=>]9 YOZ!d0|jf(p`7& R{ A3PS<4 #9Lգs$ɦDnOx†HI?NCD<'C.ɚ{wk*/]7v5Nu`ݾ-pwrJqr*V 'SMI214;] RȊQOP"eGXBW0jj Ӳ@:|FJ{L7Ϣ|?" N&KՑ"XxIt>Ry'SYճ^xMIEb{4@j"gHxfprWwWg|(vb Nynwk"E 2(I$%VU2Ӥ_ʬ RNEO$K񚸿N|܈6AZOf~ծ:Mlw;T*m*}x|"?#Ff w-./폠?duDO\$q:G.Yڮ2a9\[$7x!POLC8소c͆b{鳴xE, ph8Қ`_Mg~ ~ig$Jju_̴JȋYx}{z}>k(nT̊ZF0֨ 4 H3$xJ ࡩ3|^}(h>[=juMRn?|΋IAoQiaRX}8r4hSg Hhh\ 'uzB v ; ~c(XYehi*y*T15^џN #sgg$oGp8B6?!#T;| ޿!+ֽQ勉خzsZ_o8- I2 #+l[vGuƣ,7Ma܁y:7_P#^OƟ'i2jwz_Ge PS #e TYdG)|a[iT~ƫZE5Gn$ |{pݮH_lGt^wǗ`ZMo)y}JiF?vd05?ˇ 6 B! ZR.$C> H:wr|GAu*lTNtI$ V) 2A! y+UEXo<,PH 67NMsYu8;gOLs/'XKr{֕U>F@F(][p`mp"@t<EAj t{Ψ4j f&Z[4$JHlq:q9MFIP8[ g;P-* cK4?!RɀZ c(ЦmieW:}suzzV݊Z&Ir\,H{Mwww? 9쌭b?V&J`fY|':}1D]i^DӽѠh\$pDEgEQ5D2 )I#{Ukh)ԙxĄ^nm\ΤqF Y~A Na;`ە3zl!zf:̐Bx.JV &=ҜݏGNGJSk)ņb[74h{80"q Jw2f[ eڨ]) 7 ,g!D"gp` tvǛKZCF*a @~mRLÁ }JBC`7z)tI2$gEbjr~q=<)M8HhlvG F`Ԕ5Tn+ vONw#KIDAT%FCz9C9:TY2-VQ7̒ Ҕz}E@%= (5T0hXP2MեWK^i5 3GI@ԄK~zR'6caܷ8'÷ۥ&#')Iimnj8¦SMϗv":`4(.`'q[Bu[eb&JAgL> ƣ]|0:Y Q{l4z^Gi(B5/y1+ܬ v"4A~ *Oyiˇi/1WZh ,t~8ti8 ݰQخTg5*}xcʄsi=GEӍGQ1bʡ`cg󠴇)jB&G ˠzeqxBhwn(=),<~.IF4?^ 4ƅCHz(}Z0Qk6qg@@2*㣳').~nWV[XThw0К⁕RX*߷I[p:M6,x4/+|kRDm0t!\,fpLkb6Lh6^\:ldP2!%3 NAE Hwۓdjپw|h Q)IYT*':q$Cu|""q9~dmb>@ ,&x8]Dn$/}$GCVrXƥ>#t"H^B[̮ nؒ;Ceym+͇O{TXywxۧ/o0&;x<@$6a *_eg$33r5B':X-|<th* $Ƹӛ=dÀz%Y^#x@GĦfFuK:[H£D6,|8L(bRrT?/l/_r87]|Zl<ޣ(#hw,ۮUꕢ'8/KМ67KziЇOTǃQ-+#^ka;Ib^zx%iZ!pra -1Zm MʻajyYŒL2kt*h]H4#ĸ]a>"rPp|x Yz۷}x7K1n<ة .[׭i] Fwӛɸ:;=.Q5R, Ϩ/ւK Q\H"QI$$%% $I`_*xnR$BjI|D}>M{q,lTw<{]*Үکv)б$h62%j;nz"Uȫv"  mR#Jp3?@aQ Z.EҕjTʗQĖdlH>BlvުGp]첀h7ҩ_ઋ?>Ą>b/>}ݛQ@ J-\:Y.ONCʯRȝNxBV\)yZЖոR(ZVkE'Gǀ] \t#L~S"Cm5^'t"]L~Wn(£P뀋o3[Qt6^]T ({|r]3‰%6_EVmr\qS&S8^lUpdBJDBbͅCJl8j]N$ڊuO.'d4$y:"ۙc~1y ˄+JqSh?~޼ΦaP@񈭼e?ڝFvV댦7gq~Z\T%0RR~gͱTch.?<>Zdb)"1/sAG'0@`w vlWj~S>R~ݜOA NdU|J(R젹h*/mVQ~q_rHUcDXh  bVu_^ua,AzuRU)}&J{\-A$wX"I,7bK]ȭ7FR睐 מ@΀J"j +}(2rG=()Ȣg1R~r3D,2 Nvǧ'V{4{peնmoȪCj- πCuW1/qCcU"!_ܞ_2%G3 ruhGfXܪ}K=0ҮZP*M bnw8Q> 3T50gEMT0?8-fKA w-[]\B%:UMHF6UʄJս񟿽L߼yw4D\aݠ_1X[AtVyVZZL ;~< :F)&^7<>E"(Q]-5(bCUm 6|A"l(-4kcI i$]Sb~<*l",>g+dAE2vTktWt%*ULjfRI*s~s߽{n/'ZN*>_w4ԌG.J< w;JF\!]t=x|s'/mʇr2ɮ:R=gS+j gؒHj yMWr|^/1_PYfl )W;k-Tj@uϢ@ -۲\jKy).V73nf:ºn& &J<| IBV$62ۆi4 N1 xǪGb2̮ `^1or,z*ThV@=xb@xQqzWY=ݫI[XpޠjgM:2QhN9ܵBdSIRQ(HUѝL$9(Wg$U*XMG^mMPD3PۆJl|k V\]~8'gA*U5Z< z>Ĵ.u؏~=Y;$ : AR IXoU{fmGѓ*H,xH"FV B GfFZ,<ޅo>k bDZ㇇wamGPz`9,S/cI0~mWvM+dH S /zDst=[^ߢ#hJc{tO>&|9xE UR'-̄h x7dJDwjsSƳ뗓7*D=JNڎwo |kj7֙BF֬-v//Ǘ]u &u) w8$ 33#!![h:Z=@cm6I@* P+ؓ$6U;bF^S!zs| !d!9%AgyB بk:v:َ*/t?>&`b&ڳJt{k{|<'Vm엷 5A2[x: {<~I$V$R#yb!hiWX;R|39@_ד $akIȓavVo^ԼX|% Xwvw7ΪTrC0zӏ cm8S<ݷ9(&AqS˝ Ϸ/VONk716Dp[ X.qᡸ$L굛T$mU5h~rwcB^gG23sxTvOkzxae삔 tHg_<=r2[ G*2x`"W h p$$?ۿ{٤t:A+X*vN"󃻛Aǂ*0,zDXbA%@R$`4myE%2crZXDO_}ឥ A<̬46ƚL**=ش[ojM#98<^vڲXeS+d9 IbR$?Wz_rpr/E!xJYw5OR8H8 ٢c˿X !4x" cy3 ͺl:4:; (Kߍ7<:/i՗dn*ccJx:@uyv hj2VA,p;B~w~Ιhz{3`Wu'\4rڻx`4}I٤˙KV_&Jh<\N'Ē@DilGQrΝW3挪#Γ;F)PBNN5;%YlD*Z\ZsQ^a71aukwۭk+v\m-u=&^z^^V]5=wuNa7 |PpEAv~G'w{}PNv61h[@|l"T1wYmj&i6;# r4H[ic.v9 j}{8u-=;t?{mnؙC&gm߫:լڢG`3ǝqq %[`k`XRޢ(E(EQ -)oQ?HyA[Rޢ(E(ļEEQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EEQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ(E(EQ -)oQ?HyA[Rޢ()!E(EQ -)oQ?HyA[Rޢ(E(dٻ0I(IENDB`gambas-3.16.3/app/src/gambas3/img/background/weave.png000066400000000000000000001653711411575327000224540ustar00rootroot00000000000000PNG  IHDR@@NUgAMA asRGBiPLTE}}}{{{yyywwwuuusssqqqmmmoookkkiiigggeeecccaaa>1#tRNS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~4v IDATxYb#9D+\vY(LKhx;^6-y~Kcقyڐ΅kHc/K [tȱJ#{2EWj9p,m*&joܢ[;7h8zk &d]#*{+ld g^Ag${խQ6v#Y|:::*:B(*HǨx4_vt8F*WoTR׀ ̾ìw~sfpR@7"aj-[CQFYlm*"U  Co/h&}m ~Mv(}\{Ϟ.rh;LBC !*E[#} R8Z Zr>heIqno}k;gy E/Pm:بA,kѠGpL.vITj@F|+dBe*D#x[OFx*x> a6N0+ ~فK(A Za1ޡ/33X?" }W~PѪ@Z;^"FsE1B9 ~'ZxbBuc- Xc@P~-hy`(5#+-,gPa ` :dxsle zT$؅x<ERT4x܇gC6;f\cKL?iQXIY8GcD5žգ]*fAȦu}@%\I|&k`(柶@4qH̰%ibj͙{VW sا0ۯeDhDqo%3Aʼ2 X]@&dOKhxF2?ăaAf=w$W#iQl;`Bm31\hOWq *MW0}iT8 ʠo|U6z~Yo;:'FK0n/P+H-?{9NxpZ·6%; eObqXOMgzQ+|mX_`Eϫvbn `>8t }l`0oNV3G|>9%idL<8 T{qH]Xz]4cLuYΒi1ĸUBr&P^K$Z#iv;XY23CI(Rzc8qqGX8d'UuKS{Ȱ8t4fb~h /]q4\tI,~L0v@xڞJ_#v[*_ݧ_ePQ:,Q ~A.MG 4;e73 ZxL!

      {g (U:qDXnQN51 3 `dE$h̑ W4#??X0=z&x!3±Eilj<Ɛx()q1WʢA`#f/Xo'cBmmh#/luLDS_'tH:rj&? d+D` QK+\CGGD ,aR@;mRkNWǵIH8Ax a,+*NsPkfѮi_[vD:B(͂ Hl mt 2cI+jjZ EѤ7 "Cky0 a7a7kB꼨%7ˠBYS u~ap$n% ܾmaI谑7-GQ֣#Wnڤ*$Ѧգ.\0!nzBpY'Rn ׁtIӡD.ѵƀ{ C9z#%D@;+z;+q/eۻmLdkϿ~ҺkT#Z =#O? >k7mu_"EytwH:2J90w#ůz9 4QfN4r;I!kIF=(A]Q)ܤ{f'M4)(CLKEh2IJ~Wv`R_2v ,-ݶnɛ"G) hutfu/k!/x1^FG %#!v-]i?" %(6{D,cLl'-U\< tP+|t8C@ZN 1|w^DQ.M60Ro(❽ xsZHD=~SExHÛFuD,e=`M kY.얷N `zJkYjwG-vz9}u"݉#xIe&0DH;z& -6ƽ`[xEѶVI˧,8p3&%'Js+tt= 9|`ȸxI= #ŘZΑP|:kӜuWJZZYJKe)z!R:m#>k#ٮ܈l8pS34AuX>A\9Dnc&, kj3WH!9Jłɼ-}+z!0*dc( ‹xqx Z Z5V⌹^d'ܖ$q(ȋHIDIu<8r3 %A8HwB\{!Xu7;߶b1P gYNeJ(YlhVS*>#IT9 H곌¢r1)THB-}_2A:Ćl?gL-3.xc}.vqZ,0Wl2נ~m9Xl<=J8ov^J@cf n<֦[]d(uDZqJu`;. ɂ)|(!ap`*{y)8/"+j>[ycS)e`?bBZ Rf[*z>F[~}Ai~}5-{hLr9MM."M'mI=hMn.}q(lB́ W'\,iջMj1 M֨,Xܨ櫍'#:u&~qOx$a={v*fM۪Y3?mAxPfj`vrCC61e>^y/P Cyw.e?- 5<>ͭW4l e[PyxfPڀm8 !IY9x~` v;нy~KhGo Q婗glB\ С5 VkN:01_8({}=e.܅»6}r}Vn׸Ldc:) N/Ο#,[826X]Wa[-~F1FmmHtqf*!e1EpxXoS;>j\8؉ *խqEB8`)}}ȗ8. S`~ _ SJ/?G T6͋F=c+A k_,.mN+{~ش|rŇ9:./lP3ByY,8:h/n4ao?iy)xb 7PJB2}HMB)SЀ#9[yPFjW;`ЃWq}MZ̯p-ѰMZ`dJr[zSyj|ra{`iTM9^ˬşvRщQ$ebqSuOfWEޤA[S%؏b_((m2> GÕ臠 Hb_m|Qv)XQ1UFvvlP9qIVt|'bdG  t8w12eGX"nc2 (Kgw VwJn @j΀)aq CY%"M 3"DdžpAQaD1͜v ˡ]KWOн?|N-GӀw6w9pDfwsh%qhflx%-n9n@Tz}LX$&ķDJͨY/sFl8ʀ-zI B|w4!9u"Q/^^FCTr{)!F<:@9%[|7q sl7nOwNWZCEKv"qկAňzIr1q@-@o9h_MrC<2 ?k{Q8'a0GoWɞk9nyAW#A$+\S ,<:6U@2x8`w](vosFХV\sMt0{t9MR'vtoe -:N~.;Ǔ9l\&L3KJa?_}jrZj(ŋ ;8ԫmnT"6ۆج !;l+~t/pev6\qgP4}s?Z!g+.~C;#=>gs┇*n$u@HI͇0~@bh10<q(MmV9vrfjc .s^7)QO6)sU]܉TDGaynm?MH7/sNGDr/٢ؽ %-M۟vL$G vєJDw+()3:9eL,EY.fG;nmslmo6۰Ø8h* ur_*:F|NՔ.EBglt^?[ `2 *^v |Om8P;Cd̯a0dQ'm XΟ(Ob/! k8S_nJNv8P_5"οFTݜ:?& )ْ~GGvHB9qލln[n@E $@HHg?z&Zxl RU]] _*~X;;Z]NwnZ RG_&ݺDXfZl5D”34&նΩ6pNBdӖpȽcg6CY!B>RB18\Z ortjx\Wpd)&,ơB5nk!:W('?TdHuik?SatWA扼ғCC Ki>SQܝ-1籎rqD:}J҈(za~LzHz9w Q}vX 8@WGQ8 =>QKYv93e"ՑG_$I{PwCr.)f Vk]ZB~8iР̥Iz-Ŕ%SC;q\v4iϢ? B')ί4PT"k:N !42ԛ'"ޗ#Xbʟ_ ;@9p$[vgj'x]#@+fb:UƜ¥޻O]pk^OaYtDLkS8w>a3]̩SF@Ӛ6)S.T8F#̚͠2js *eHlmS 'HjMUMaNXOkl9+A޵&`K#r[ѝmNo뒳Eƥjm^T0L7N!ѠYq9`@5 ,Xxt KR$([v2,qF#e&HE vzR_u*hId!wI]9"W-_Ic4C\2KWسS0iSӈ *NuܨO\;`LH•/"o͟1ۨG0^L B?{fp].$UT?έ fdWdvkJBYdS֋b?^,q}K~:'J Hx~Ȩ GϠP {q IDAT{ ]R8] TP5MwP Jhfb9siE4W=t *ȯS=x)G9Ωwp'O714&I/^tJ)_-*i?_8OtSonw=3iQjx=A&yvݫ{fQs$mF ~Jܗ0[/6@( 9LޕΏ᠛.S6C R&"]fۧ*R`UөQ! u]SQy:: x?/WSISU8SƔ9D;t&T kOcAT īuP*;ΉQvLm3v)y"ϭKբq:(e Ѭu1 l .֛KX0Go5qu0!zA9kAwR%EBU,Xm 8 R4% bHkWQr[c]d+}KAv]W&:V}60Ć5O¤i1no4ˤٽE-! 0Ī*#G_-BPS hW-oK_yXO3Iͼ2йtf nsʗF& k(7jQw0_\!VRlR9G4 ->JPy>kWH28ul('.HK~~~R-GǷP^orBX/>SW'Gr#ǭ~hmS+Mi.:uq/8ZPpVG,C:mYZG4^.8eK7ZN1/[Qzo@yAv(QUKPToOvSG*ӒM:WZ1 ^qq(|i ptUkztLi66`t,̏RԾ"HqwgdׁA:q}M'\K$<҆]}$uH|2l.D%(u" b BړNLpWx%^s TYEnPH.gOi@8 SHbGP9]7 PP$ E:NRcIF}瞹GC˪j8Ф =|(I`TZZDVi%GɊ)^'>2iO:uвŜt1!RI}RF"OfU@1"]wIV^?\ù5>M1#F?秕9,njJEX}xR}uP Yf \?N6_$zDNu&y4{TI&"vi+jrU(c1Q)(d^kY~9btȔϦRFt&%rKǦćʪRZRzrthHût2!(XzPS4#y2i"jFz_`+TLj)$qߠu+^W Ii]UαB>dB`hN\+yk3ڝ\=j"I뾚RjS5:ԷK/Op]AB5*Xa_:и meAw5&tSG}41OvF:3MǗwWZ?= \%&oWK% 5(,b*egJ\hQj2ֶaؙ̳_E^)xܢ*VƇnEֻconj1) *}Xu*wW"S'X S t^ k:3:"*-$_T"fvhA +CLVU愫0K 0tt\C}kt_|±)^ P/TݱBw<Ӳȗ;V.gw:etҤ~WFXoh.j'?Y"uٺm!85s YS/$EZ?QKEYL05?Ck:UBX>vUMv;\Nl:6z r@u8Q&P.HcZ^:r+79:5ty?YϷf0`V:3Vg ǟ[NI;]-w@.T  ˫t]vȰt}ԕ~?U lKM6,{ vCSՕȏP\n]eX2<ҵ8tݶخBv#%2'Ƴ&`N >򈑧m:4VqGk$:yi "=:Դ|+yn/;.&4:P>խ* $0ۮ)҂ʽZaTMq}eJХ9u&:֐rnl+H)2 5F mdž-RD"9r};5m-ɋm>O)ut邊i=i*JDPFN\vʧ,R㉧0އ[8wu/nIἸdp6^]{4-r%_Ό%nDd't*<,7Vm.V#pf6A8o2 Cְ4H]Od+1@$𚿥)8ro$dL!Nw&ml~OA0c `"LD-yk*j!5{T}(F"U|pK-!y1Yqd4}WP+k*-*Sea:vx ](ܳ apň O9`RRm{A5buW~WwG(8в6նZ?>iaMc©d~mլL8茓2]znYapqes$Tcw_i\@BC)w׬Go.oϰZ+*Oy5f)S¢v[|9W=bG1ʪ^`D|i]T2 LA|0 (cLA+*ʸ:u0N.?/ hyvn9xhF\Թw&܏T@_/8k/$A.m3Z}ܘ̿d>0>Y}AUlZ98X%N@|fɅ#-_U*VQ]^F :wTa| nFtj,Tf1^lma{LDO}hn6' j6'e I\8!8zeFx6}\PՔPQ] Z_,:ռH͈̉,_|Ÿ.0Ŋ!´]v$( Tw+Cif&ؠ '2Ӄmd~[3 ai93%lK c( GF1wQ&ʦpw<2 m Wc&EB3`dm!n}%8:Pd³\l80AE1U sUK8JCX_,e[h܉9̓WǕd0Txa 7e`4`>4AψKHϛs4uK!%S`=!&bhuJmx&?3Wػ$4`*>>;x?^[?d.R7["-8) 6JCb .3;)-2L1uʅJ:L*%4 KU@4s?.ǠdY7>V,ӫeXD\mp0s)L"7NYR~27WLw&(rq1 x.$Ճ +/MSă :,'P~nq1ZudhMNUa\Ru>n|-@A L' :MjS0b2Kl7>Q?vy,yNE6"(,O~zKyj^J5ܕ6?um]saC?F'YSћAt*਼~+YPoaʪo-^H(c/&]dM ehIR|9QA>*6NśOQ>}G zUy]BՕm'+6WXzfU(8P5lt4/l9(yk"΁6g4%('dzJ|*RI =T7's6`!9R@PH/꼺q#2M/lGM6f=4-f]P1|r(oX1eNY ?>ЎP"1܋QRw-%(l&xg8}7!JcL3_x(ks@&^BxPP*TD>/i8MGO YXC_b[Ʉ+cP qg__b(̦jz.0 c]x#v\bGu=3{?ڭz fq@#4Ȃ!Y1+=#ql~x4cǀ5X%)2w$*,">/ϫTAڦ ӦZ7wBPE\ Z9p߬XKF3(XzbB IDAT{S;4L=*Bb^MS!;GY*je~ ǀ2d|%c\&_~_ m~'+7#\a5W4xeR;yݺ 륡J6ty@}{NF` tg u:(g^ =18!ݚ~K㻼C@bpF#k=n9)k?qCNa?SxZ+/ƌ~oBHGC XҀ$^x]i1)ο"5&Rf HRЃ]G b[:)li)lF}7k 6؎}sFLhݍѡ!nX\Eqd΍l#pv'ԋ*ϯg?Js3_1V[zm׭fc8Ax#OUX<QH\VDt(U1#gSHFS)c cw9H]8}g(j#qުv<nNwVE迯ji+ ϝ=KLp <D }2MV 7=B|G \\+Yks;k'N`ps^y OEt~&:}FЈ%dC Ćb)=|GdV٬)[ā]2S0۰ָu昃# ?(ʐHVfKpC,f%w 0ˁwJo!Cn3X\OۥQzǂ2$&H u[ʖ;Va?)>`Cᤜo}oUY1(JGq y"ĺ,˦ Nxi]-%mfNHu=,01=;qvd!ü=Ե@Ӌ<dMXj%B.J)5uGU YR9.K2 2Wf`3%:ցJp^N,)2>.-4Ҷ(L32LT&5۬(u>aطG#KgL%v,uЫ+=ČCգmJ'r@]灈`U$/_rÝGou%ʙ^@q`O-86iTƘGm 2^BN4{( 80+U(f!FUUf& ($Cvcp&Kz/A\>( vO1/uܽQ}El H$hOVz3 Bf/h G-yNxjݦ` |N`DPgBËHR18&EټzA7z̟3~Q/dCҘjDY@ɽBk82}+@LIIP)Xt?_W=!f~h1\:z( *ޚ(e>zG(}ca9}OfgZAH\Q]5`g!Uƅj6(|' d TiC6Owl(0~;C~33K0Qϛ+~[_'>uM#C <)pX`A& p:$5éFEQ1O1xSؘL̚i5`_ڼ +n]h=*J*ϑ^mK;a3+TL+HPؓ N(y>qV w; Qjx4ek ޽ұ@9`K)::G=~yp4`!呋fCYUa-ÂdY c tws3c}LeëBF5 g [g̰$3Kp@&(bp%~)5#VF5# "G4掕nULcz)ÄwFvEofU8d;̗Z۵{ޭyj^ Z6f#^5bVC\4 YvZ!<:GP0⫮BW#N.J6IH簙tWC ;&Vos=V(ZHgZ_yzZO~_-g~ < kLXAvE&DTݼ'}er&:#k\|4xJ1"8!PbLWyH',]xU&QID R(xڴq@M,G A0 ώiȻaVj.Rikۜ љj\85Ybc$VLcS(TJ[5@7:bTbKΌ9mnM(qv[eJ[0uVTD+Z3}=QX&t#Aor¦N`_ LNa=PeNxX]_AhC} 6K*xaB*_Aa,pM~eEj ov;X07q8axcN3:S",2=5 G+ v*1bG1L;ɸh{Q'(@(u7W?!O<2on J1bGW;qR]o*tP%`qJe%lӔŃV^8CK}:E%o˼Qn=YllAb#Ia?;$aPl "y,cJdO3yfL]LYeO*Wz818mJM#(bKR9;', 7ag RW2U;g5Um= QQ@_)SE2KǙ4PwHHDF0{F2Dc TiW̦\磦U -Ue1=M9Jt&U:X $5*.^WиUp"7SDt&*A"]{]bWe xڼXm}TtLo."pQi1ҩ>p "!< uk? 6` $MtclDHGJdcA LOx!JI) e:688WsNa ØZuM ̾^"~-z=Bln)- H_H}%}4J0Q!,ْ8E6ι'q#m \p#bf:g]_7O3<BjN9v(G}V(Z`=KxýiY (-h??ȗ.|~&y{uf΃ b8|݀ pgaQH& ؤE3wg={%KJ>3Vbg{ sg>|<0/c{4, =A:Cx Hnؽ"ȣ35CHq' !gxanSz+ja; RMՒJʮV"*Y̬,Uk Uɏ3m^gcn UCt ^ }eoXO:YTe#9FV5G$R]z* 1,tYf6^K(NRo)`QrvЊ+/Rh򞑯zPLdbSO^}"[+F"foB6sT?֔{6 мd1^twYA+ J3U̪8-63.'sG$ ֯ ho}Հӡ?0COa +ͧ[;]jkg}N4 (+^@ՠǺ̩^^h7|Ԙ|Gp Uh<k@ޭvѰ`0qr O OgzD]!:_&tfY05KsRѯH V6Q e `ڮl&BK5wC3T|&Ni2N c1 : N<_jEEǐ|TA] :s_e7TkbW8Ԩ0UzT+5kl$,F݁/Gdd] 'H^R@Syfb# 7kŜԑ]^s䭊oܲ^? Dm;&^P3%bGBQM$M U~3vD)PW4a1($ uU+3rNU= <0"n;Iɺ 0CxE]f9ʊfY=^x:$L9Vuo,T6wZbpUu@3kjBq4A+Lettb}qA˒v2ѱTv}M ATZؖek2ܣwyգt>6!Ư86z$ ;Ul &.,XЮ^LJ)[\s4(J|Fպ5̳vTC b% SB Wo@[k2/R[㈂WgKU0@჌x> ,(*;5ץ;A//{F9>pg*jMU^Xl`V>?U*ݺSpгǩ7:݆s޺it+0Ɣ?(G<#,vl0 aاos=0-[Phͷt I[GSVr}a뗵J m9 kr";\XNaNWi*"wP8ʿmYk+՚ɘS01s?xD`D`xl!tذ0 ay&H9-և֣퉯b=+$DztB@o7n{sso3jy@JփAGe*K'U22u6`7%1Zʨ/֫+lgרy WB{{ uv_~osF1)R.Ve74:΁\f_N%2j->$?Jw&Il1ı鬱09xqg鼖$( G Yg==H3Kw >hݯ@@UG VۏV&,z[x.p8d(׭^W Dp ׯǽVH_(ϫ3lCYS|4%r3Av+ 8Z֏WBhaiA'0nRɠ~Ώ-Me2=r'h]}lO""/vWh[V֬iꏪtAƻ17= +;*k|TA;At zʸ>S"m:X6ҖG+EӅ$5 w3T1B؉zJ6u ۷Sր3lMa5мV!9*r;!@8;r\EBQ;~;Fn:Ltkc`|bl,pމ!SKmÑtP,jhdaH/˜v+ NEFei@204Ί.(=FN3甇EظrRd-d6l7@aA5!5=:Xǹ^7#]yS@]/- % ׸G>te]d~J[J}QnRA0ֿQc%\J\)Z7vw+n ]Rs)^o|(]s/z^6BJcݵx);VߧBܵ\eǚ~hmnN U-hӡ`D$) Ӟ_eiöV$(C>U~`qV]KֵJ=%&ڑ΍FPҨ]kj/+$ M)"e49gՙ;#|!/xL-crTKb#""tHT-;&&rC` \ ?hw˭l3uKc-d?x NTIfLY}c`UFKJN)"0 ת6 2BFhuJyO cr2Ӝ#䩐DdksΪ{@ᎄ2yƎ:٠XȯT8:k=}7bCHC>Vt"~(ʓ햙Pĥ-WylN5n(A;z+Pom~DCQbeLQ`ķUdx@ao*Dԁ^x>]/b:tk|)g` j7ϟo9ᦘҙi z;!"_>̘>Iw.3JN])zyȜS }K(JԚI"oՀh8g_B >},䘴T3&{ЩECm1`HCSn &blwUNd BdZLF)/Ng]5QUlsqQ3nތEF Nѹ@ߏs}EPPQ-tX27|DН)`TGz^zJTւGPP`hI^x,>Ҭ/A2r4;h&2d :h93̓@m+~?d’%ũ3e͠(F1[p2::Φ͎VlUE @4Y sߧ㫐xX [(Cg[,p.8O**JWwٜw~BPއR*pBQ 8NO!x:,W;N>Z@Os5ȿ@ZhrX* '`?wH/y`pQj`o|G5.2y@4 ߶ięDgJRUxޕ`{5}^ЮFVPe{: ԧmWS6|֔G6\6 R Կnvoci֞~TN츾Qͅ!~C 0?. TǨD*y0̪tl1a̺zPoo{u*)&36zO5fž%V1ZAKH ÃKƺUe~&RMEhVYDی\q#<=NT_Lh8qg ß&*-fXENxY;^i rgAJ%3$])ᙰ l:mцjxx;3<Hʛ-h|3`6uG.+eF2( (2(|M{gV?>N.)v{]AR_ӪEbQW%lsq)KbdT0y A8Bf> }-{{?O̶F>hOfnApePƞu1зeh} H^qny[x :h: `Ϥr9UKlw $}ZbObiP1՗)ợw=NvPHoiȊj{`Guc=m9B_3Do1:>^uwOq B{ M&n Wټn.Up Xꗃ`Dl=NEEPj stdOl|'Q+w1AΘ'+\fLtYE"jJ xĆ|ʝ=2K<sMuD>1ab/>Gky|z$t]i@n0{MKvO9(M`sݰY!^!{Gys6x8@#5kky:ccI1g U[Ɗ`e쳔mz veurܳޖoS]'j-*'[W8i~r MFz"XJoD"֣XŴRwKb`/񁏕wClm: h*&8D8/Z! |c*(/?4FDh|NFXH="cBYjT3TNaCmE 9PwcYs'r!/V1zv J^vP^U;.B 7ϱֱIƷJ J_Uk+.;:mW38~bbS F7ߒ/s5l]D:d(u@|bPtr13 1Q(ʠ!ssO  *\هh|گp^Qt=OnM)yze_!9z=|tRќ>b`\}"!.a{Zaï8TnU8JM1`֯,(!2#Dgc7%3*{il&A TowX[5B7|Ƞkk3<+-rБׂ4 P (˰<#Ta릤bG9sֻTF1p3K/Jvܴ6 p8vfNY)f 7_A-[EbTb1!xvg LIuY?yU[8hbҙ.GjCQX hCt=NRyʏLe ]ϓ ҳ*aXi Sұ#kr 0CGQ--|Cžk,8K 6w,Av̿U4n$]cx&" |3:?(qQ&Cu6)㥸rNj 5rf}mUXKcT)*΍*<ta@sI ;!xuR3 u++i@B"]b l9Xe@+T]skh6zki1q]qQآ<7;utF)z{r[W xU6&L%֜6D! { "0r<~M4׍K%Ddtq9@6즹+f\LZT PÒB35Ә r|yt To.ݚR~JP).^"X8QJ]1PoZ/ONG@Ȯ+ѫO].fAV(5PX,fܜƤg,f@#ULN.'(YPP,mL c];}+^_`hWg= ##!`J\iP2Z?OÝ6nk_SP+tu:nݝ" EpmpiaiB2xJq_6=+bؕ li; |EC@yu^@E~QԀ!'X E?9L% K/=sGkEQ׵.뽥ٹB֯`U0H4 sEE+Wן40r%XbP7ܐc11S%X\ot %MvS;pdqbN +uԍ!ὛyU%#mndwC G&x{򍴋7]e>>ĂK{^dmH9e~0^9YukTFKхr>4Hyuԧ}_=<̾"͋[_LMIQ'0H,n  Lr9tH2 __@c@qLs]]OqERp=:(*i\٬XqdQRzz\q!.U=NiIgtqeU㎒#<_ כ/ޙ)7Z .TMGO_kJcB(jt*>'@ FDC;Qgy*i D?ƠpʚʏѮ?% x#UY`4^S'{v>=:H7nC%ZP<\s] t"HMT]~TGDJ+ʎkncWCROymїH̲7Dsms/0 wd;ٜj~ḻ 7ظc|'GlE=q(]r ]Dg!@Q]YSAVktPA/GW"ץjg[˙4sc^MKL. IDATϸOlIHLl 3T߃6~cR-|mlU%Ms⁨5t]yb̌9?Ź1!n/7='e "{JB]X3<gz0nq$BDf<g,p# X NcMG -:T:% |4ِM/@:àpNB]6Io0F v*Ncm^Sr|5lYٴ57cnqf/~Wʘ+#l9c43/i⃃ˆ@ g=t caDecкOh`,-ͣGY} ❨N%;Z9Q;5MEC%hQcy{N((+2L 1;7/B1zٝr3uL h-1w]?6}W|N1vKqܗ).9|߁vc*ȃNnZ Ei}R ʚjMepjsyN[ /c>9*%ߔ20'XWH%C{|3W EP*Okj:KK%4"~Esp8{v J4IDU6TƧ3ceZ=>k *E~]uN}]Dso ?Vg ïh4M@3xx%D;+7L1^mnD9W 9 Ѫy*FgS^FHsjXtĴ\P5މif.x ޛ "05t_|*W3H+ ᓡ4L}0U( 4- B/delOUggO 3*dtcPiDKLF 5-=x +iWAne}h8O\8 **+/(~QE,(pЊE!bLz*bbl[U `kkɜF=yM)lCr)e61 U#l 9gk%h, ы昞7H <[90ѡLf^-@B%0WoJ OCn5Gth rM .XrF{:  i !Vg4CSZ`LLX&%HU>QfۏWseb^|u{fC&Ĩzq&v\VVc/+rLIv$덝N:\MXiY"ќIhQ3} j G*sgoRɞmFVkbfno(ZPXr3"܂²#gcy$oR,mA}D,*Pm7Q~8ز&V&݄WtbBej)p0%%TGޖ(Πě0pJ}DFGְUFZ(ftf'EW(=B̓Gjۂbe`c[5YQF sz7 ;}*,P1:f~C ]MQD2X=; 8&dfFyڕ*J#?u(ïdޚ|8_}%'[:iNhhը|U cW͡ZM(\ APܜ=V}@d۳ lSbO#c>A!@&\A^4W<7^aС[G/EձL\%~WH\Mb= dwf4!u13ӭ4禷y /;z-TiTHQAtW˹tlX9u4~{B\44h%]+Pg$^ 6liby@3m;Ǭ'He nU';lZ!/&1;"jN s2=ݮPM`|?tF W f4b9|k6Lz5 7xȰikU1*vXY쎯8;|Gʬvc^p_!1(`F(ztcMPQSt_MK)㱦hkquÅŢai%Vf+Λ +t gyU?!r%\˰v M,`W_I!fSw LA;-Sls2tvEFz1kN~U#Zg<JIBz9gݿU<1!4(&e"* #*xٶs6EF 2f kי̓fA?tt0ƻb꽩^۪%w|!*H :08F &!خb6 C(&6fiy&qVJ BlYd*V.{fj Wi/g q;:aBgO_ 7c*\W>660%CGDpoV#9LX1U8C6I3Vc !d!,ZA$`ݮ;,a"} z|)'%ԡ|\ÔJM$,4F+5_ޞ¦W: -m)ҏN^sq Xd SI3Tں1&IVDYS1Y>Q4HeUifmzIHUxۅn gY>Ղ9,ב!)sq.8eh|0|3%@_=a;&<$Q=YA7Rݣ>iy2f|-7 APS`t"њTApa^P~õpu\k`HlZr'Z0s u }0-h0XAjm{gNŰ k ~( xOVFClv)Sc1D ^ƍhZ ebȃ.?En^Jpd%q†mT$":D1V4ْ8E;A\9!T z~ #,,eBwTnPD="bv 9P2EHTv3Gs`s.7+n1xrAq7Pyv:Ob%폢pv7w!ty\SG<<9Da< i?p#<1@<*$>b!ƀU0:Zx |+'9,F>-XaFʨ_uslAQA}a+(pi n.'S;ntXc+h ^VC܊)T)7~D=' wS̥zC`6z9ӨNeTӵ `` Ҟct.n v7gC"+V7..C@؁\\ݑunP1>dK~yt0J Y(_*Ɉ[Vm8&VWu- 'زQvHjڳ|zq2a\a;,K*QP͈U~aO y 9Sj"Byg H~Ϸq~*zHJpB;`QN"LdvTvly+3'B4):aIea<6\P{Fה]ԍl[D鏈e) ]wKB4Yj*X7R|@y*WNu~oYՆAJqC(?xgVCmJQ΁̧rOSyA"8M1%C L_z=pWkďoIl :gG$Quw钡x< OaVxîPݝrSQw-8zdH3>άNC+XTn>ݮ!  M] N#BYy5\,kj8 lMz=&=2)x^4`"6tH3'h e0uY;S v{;t4L5lpM ؃W:`cvzq6sbLt=*:f}aWPSh-raPX߀8-PyD<@_1b:qݩ`T܆PwEoG"bphod,8_ /l6ӎK hEOLM{@&ŒP@뷸E2cڤ bCD_$Գsl6 &2rig2hL%n}'+ 9RFei )>f#HJuC 1B#*t~vH`Or?"U=kAP-N:͈nKR"6xgZ#mԵgjꦔ|.Nv_cy8I;vŚ$*uuW<-Qnrғ*Teda) &y1yykB]P2V*zs@,3a ;*ٹ{BYXàG >b @f.ݯSX ޵A͠iJ-b tt]c;z=vM8Nc~;$d9_9QLR} H.ZڽbkoU,E)v$t9+ 50@ShF| 6)a9J&=;R!NёjU? LiyU_vMJ>&*j8^rC! b\@b 7KRSe]P!a *E56Y{<1"T[q#v4u? T3AF .Bߐ}NL2RA_o}G;3`K.<| 9^tv7bƎx!]I4sGsUӱ QsP- )n#]ٿ5.R5Px ٠\3Qϧw>R'fP;[L+س衪; Pg5u!H99j C+QĔ>pܾO8b=PQࢍƔO iЄBC>#d$ۦ:cYgjfT$~~X\E#x%l^͚+MqGkJq Ak;䞬->㢠w]l\ĒKt'.k-,Y]0 E,13nOzm x]@_[d ,|S kT I*vjl h>c$cr|zB^^-4:S|v~wy}'2mI7R x]?ۍ^ TQ5"%x$^aDk]Agfuc[$xb/TPc> 0K>*{y}hw-ADj.3 jG9 IDATN;h%#ER74IJ%~y+>$*u~T]ߥ^s*pkS|mE 9Tc7d-WlP݇>kɟ[[@(ttc )5Y{y"Bs_,&z `>b>~!+3 SO{ϠnCa + ymfSt^~NĜ袜T3WMN RQz6)...&HMjA +tLi),m.uV0@y RΜ+^=sT߸O9vPbٛsHS6+"xD}kYwz~ygzi?p5/!:%ӯVrZJ)$&ǽbOl ^ӈsgnQe?OЃ >oj$ZoLn+i|3+IӦ8Y[6K,7[IyFwSm+Q 0~uvÜ59yw~Klĸ?xT9xKc|md;_Xa[CDp=0-˳j&b 4N;/*8̈́\ܷt9V gT%O$Of-Jb?I&49{+9O7/KKLέn5'p:XӾ7)}Ob[op/#/q# sSi2=zIj*/$7$"3+=Xer!`qzRޅJ*f:[Rv_M㙂ze+ Һ%35FEmԫD.\+u(S4q>>L)N*KZv (3Ay‰S]rH,l!߉rw\Drphd3[:.D8_S?'Ҕ>Ӯ_i!R1Y`ItH̃b:`i/Zpc9R$ly~"V! 4*݈oJ>*=\&'9g{?mf69]#0s_K{ކ(Vkb'\v)"a=Q)/T,)Uo#)c'㎲hM2SyWkC5$ ;>|nAl ISH8 襄d~os1^{nJ(E}RX݀HC˳V2B\9/4m9z$Xgi|;&U3_Ib\$<{:o8^ӅM<C.l\Xx$$<`cyWRr:&'K3c É"*vPȷJp;~>\KݒGEf{KJ> "7s95 !MVbb _PQ!xNg^&}!n(xS/KLKkp$G싛LZR4K!=-҇-(ѩ9[uF`|ARTIE|fuٶZWٰ:.oy(9,E\ ڟx"4&p:Y)zjB3k]&kk Z'җhVH3n8'ؕ4Knn59>,$}BnP_3[#~ ׄƚѡ4+w:zj#F"'up.%&T5HLbzmIg\$3߈J卜97vG$ð#ܜ=\1k"w|X$Cʘ8?S_Gݟ>ׁKWz7q1inꭔM(Wؙ:D)7z+ 1Iw}ΪwIѴ|pQesH_if qƕVS0V0)R[Rg _L4(_3"85Z^-K Hݺ|s_?2ژw l{@gWʦ؟cI?6_E$?J۱2 Vt[ilY'},l`Q5٦1j*.\6*ƦޛUr~m?fM)mC-BySK[uDWi#S \Ԋ +VUDy8QGXwkgӁ+rR6!?G~AAFq=PV?.W%uinI+.',\ aO< eÄ42 Osnh-H ];T')mW覯C }USwMAc+{,hSȬ'$S))p8 8{YBԳJA*C~M >@YC%A-QA*u>ipa2Yh6lz(`uD|3t+*VSOTI W7Omȣ+Xz‹(Iiy=; A~*c>NS(sSasjIe>+ע p -3jt@Hn!j#A̰7d ͕vQjtNRR(L-=i mtx!fl\R "J䝸oXӟy\ ~c2e>QR&!Z`q%- 2n'x:G37]R&w6bD7}SJ]p&[ؾ66W Xo{8n Y⣜N5&ϫNJhI-6/'7DsNzSVf`@E/ZꚯPn5Qna݇M|*&}}6jƌ[trOLֿ x䞒tr%~ޞ~glQ^+דMS-Qnb>Y^31T_ԦJo( %Oi붦g<7, ֓ꮅ7헌<oKB9ynT:A?n.QRy]N.bᴼ70=Ɍ0@۔ۇko; ~ҼPtH6n~)7Z~vyIE@@FP=Ttmn{}]G1E++2ؕn*Z&H0Ϳfvx=s9'9>QpkLcޞZd7a m9? % XX\wJ !̫<&'lX$>su(Kp\.jV[I%ΖvB9&vqtkNsrMy0VfBB [Ұ5UK/k<>ߐ+^ϚJ}x'_szy)Eḙ#[z.؛v*\q[ޗCUgt*bކR@2+C #Ve!I{hV֩l^c?[В:-ښ$I %9?443mvRqN}|3G KjB@Z R(s=d]j:s1 xDtMif(XoKx=yjL,O;Ogn2$Aʋ~Vz 0֦eð'm)MghЛZ=v׿_XtиĢ^ Lܶ?l^hkiʤw}o8n98ܘ ^z僗}T?@-Spl9XZՍ< IuӖ<Yfwn[%$$ a)KKp Lt, N>O]eQyך[ޔ+$m+.U~wnd"|RX,ؘi"mTy ڴ-ysAڒ9RaV(kjqVc[a/-8e~"$9IqT tx-N:E~RH5)&DX @ί 86+W#OoFBV1Dt+Mqȣj>!qUҝ9] ЦFh\GVHQs-g'xU-Ėu9O{n(QOG"q_?A}q7/Yi:n~Vڟ|'EIk9mwf}QN5g=6Y̕'}@E%c9~"[ 2M $uY{pFR,K QxYiW˒FtW@0b_* P͝#Bm˿6x7~B_vAUMZe e*$<+0y_B|Qܞau'F" ərd-g3:ŏNyk 6z %w N$Avhz1NWW2!5pX"imQ?74;Udûpj8;x= nvIl*1t S8t`-^X6 \)+"6.;PATUsCUeS3"Ì&Js<!5gI\޷)b;&m ykCo:$~q_|ܱ-J i77ppaNS3;#0P ٴ>r9U #b^ꭺTz64\V hՓE]w#C>򁫀߷ա YHu,*c"H]}[ץ#1~2~dtU^ R3"ׂ Y6I P;gFpv&M kJ}1&){|AT:*d,GЬRL_ qO n3NMuzUv|Z#7U,n=x?r/*e,}'Ml0J~ڱ8`(mLj_=v?iAM\ >Wɤ)NAFY$0Rc=8$w#C=5^\&ɤr7@ZA'Fͥli0dk/A֟zEPź}L^v];,N*;%cf8hj8}p|cLW6J?kIb lp5H͵'(Z̭{GYPv7Jorjk;`:Xtf`PUhKKqr̞"([̒άeC•m{ꉀf լ@ 0cDVFDf衔QR p87 SB^惄>+Ι ̯FguǐlH)ZEs Qc3Ba3 4 g8)MpETl}y%%C2?Hg,ԛ^(#ͤ3+;W=O2 GP3Dc^T3*7n3+!Y ^̈ZR׳y}ŵsRGyo~׊ɘ aH4 ]gb1Tk&jжWP#K}AiicV PJXw/zڃA)!-fhL]u(hS,REw'|U]6v&?w #f82-c4^\KTyʤFDm4Q>n+"M"VI 񊋎WYl QpzF j0~T'1?>IATEl06m^!-7EnL]9ō =^2z~뒪=IId1o(y.LB!쟶~_k8 2 r D[LErDȜG/9(8@!jԥ\J> DQ>˽?7^rXCCY>0JUķmfB/;H IDAT,=Ծ 壻ɜU* &R E}9hg"(FnTa- 1 " gʩB1lDl$Ya꧑x@|{΢_j]l(T}V6#b~0 e Z'z;+cΘo1ZOi@Rxȸ}~ AyuC-t\U2 G544*eklOlWk\XPj |X,JJq-nyBp?;@S~T군Vc5:5 ˜ (JP?7:|/;,UI{SYP. vD9="5ŷl1F A(Pڞ0.gN@##|lCݠiRc&BO;]8>@5+QB?tl$Y{n짞JԨrU@2ruuf9h@^S"}ad]RJ1!ŷ_֣BgQƨH(uX # -sCNphv@wW ėz sިKG{S*ev9qFT1 r:ȳ*.n=1(Vq8cp`t0$2G,#L 5f)4TlQSun̟}|b4UP0̚(t`KX W}E;VD!OMT(ѐkUGgkxb1ލLFS#. 12=S1e/WuԦk:3s0M9}U҂By8eEY;gD0<_|!vbHzF4qSAP< L@@#1Eg!"ovzO )@^fHzČ]$R;keuf/ k_? W1^M7(}GS= ze:͞jJM8KJd,ʊGw򂭃{Gs^FCx; lI12ct VT[5b$aͥJޤ2UA} FR捯0Ƕ5͆ݤսȬ#e?LcRXy"%njZXAgh>M y ë7z sc!?Ma8 $}<`61&)|j`dlή%ABW̶vU3(0&#Zg0]̫$bqځ鹱jS@G`/Sjcm$?f5-W@K.U!gHehDX+q6eΪVnUEKbcXz zESuU_uEjVOlB dFCqe@ϊv}ycfPCmnPi^g$ꄑ 5n"d8GՌzzDI)e!Եa-ǭj {V+-c޺bhW:vh(،g+eW[G 0kA?BY_SioG`v$ p'^Aٙ3SGF0&S*<3Ox}cd\ftʹh651Skr2׍4J$8:[+0p1b.(8n"/|stǕPi$+xp/iE#3*3T0} >w<޴STQj9~OZj-umPSUհ APБ bSZNzOgB> a?!TSТ?e܉zʕVpؠaAh6 ld`?@SWSPQј(&)z:=1<AY/;) S|olKc.n x2Ņż7"Fވ)gJLN3R$a֧sN*hۀ&64͒׭ )cg^ */c=3ӟxJIOJM [Jezᛔ2{"^ 9RZVƭ"3 vuߵ>U͂y p$ ZaR6 j[&I~e ˼cUH 9iT! a`A$ H{U{fVd@ġ]"ߺ S|&\C,-c2E?=28b 8asNa9r04M6_.@<]Ѣz:3DN2so@)2/M3cev?~AR~c!Qҵǃ~"{34>H.`0޹D2hۈ\7PwAAeCMo{tV΃bՈ|= s6ZYH& |SDL*^I-}zAyd3U8#:H# @;VXFtc  kE հl|4bZ_eҥ_T-lʑ9Jr\\^Z sQgH z &-Y'!vzi%l7=-3+KnP˄v<* `!tP@Oo;jN>x U' rK 2yv( 4o٦z0PBOE,$_{+#vJDbp"Fe]Kac /V@y[ Q#9˻z@{g4f+t`URdGS4(@󒣓Ygwtwq̠Nt ȋJ]VO18bMϥ U+<"5 /XGD< : 3{VQhrj`.va$*ea*?T}lCybG'cOgsP~mM$aUL>"IiNdtA~t9"ED8T!4~4Ӣg`_]-a&D>MŶA0yyN@y{MDمփh//&B%- eɺKDRsco8m` wq.##Ir>} zWriUx#دʮsos*RmIak46=>[6q{~=kdESf i̻KBa<7GĘBQצO Cr %r3AVRb3ȣ@9nqZ;1L 㶝(!T-TKز;f6R U"E 6]:wAְQv.Hn?*|{DoY,c'Kq`QSfNN$΂zu`T-#GUw+u;~QV J|+(cL 2/slvTGؤJ+ɐؐͧ[A!縳$ƥ\$zS"fқfMȶin-{pFt ( E\UeI WLA. &zꙩf|OZ;˻ȍ3{YIQE~'4_H i=,UzV}u#pgO(g!Yo>LόTp?= pAE7!5-)tZCzEI5 rwyU[T)\߫LV> ĜcЧРAGW]ƻcVnդ"/T a@sRqbЋcH.'Kѣ$A$5a6׏X:m "8x,wWr*7N*'"q`Ij'!sbI6D+ 7;RdB/`AUe sp}ׂBh*tSFcdduǚa8{שu] 4ڹ#\U~Z?!hg{_eW"^"-nΟHXYy5v!=d݊Pv-?q/r9X``%b1}f\JF\HS RS5 D ʥ7s ]:tFR@4ZM|A^\*YuP9&J59N7|U!pa*, Xiy5$g%EU b+x/`@ds9wjz 7N?#,I /)2UfZ\nUZDJK1,u}UgLIB$da8wԨ +\ ʄV~i9%+p<镧45dk/6o'gyvm *7Ʋi$YCkJ߬k.Vޖf弶^O<9vHa^-E)ia'gM8<➶E=C,_h}Fd"l$h ̔ 8c]k_aA[iD MS E4TA͓}B{LWSRM}y#U$3 fBYU u4 ̬G'sKi^w4h/ ! 4 wf{DS/Ӹ*#ypf8RFKRW7f`9IpLGP80(h>ϯ>6Rͅ $yK.tKikK)\:` -?G'˦*O˖p$-MGeGhaST2'N{ܛƽӢI1F^!cfQmȃw8*n{xKR! m.qh}d +(PlTփ~li]LluD,Rމ6 {@KR 3S aMLR-u=tSy"!$519 m+ΡX7f';pEn%̽ov\Η0J"}UK@K"{XC[Fn!K{5vW1QM ~:H_`2Bpu`\]NkI _ɽ2 YF=fVٵd¡E|K\0IH|8 Y̨UfBʤMX1QnqqSi+V(VG=8e 4 "H~.Jd8`3cn7LR]zǝ__~Đ*fbgo‘Fw>ff RVm̫ZFҹH۳#(y*ńxD>8__ aJ!BJ!w9&:M{>>]R I =!W㆘Kl1zסkfڡ=J#ӱ0N]i@.c_-^ץ]F _,Uu  JuІ2g7攬Yw@rkکnڠ:^/d}MOGfVi+*fsSZœo(R5\yLב}Tik/kN+oΔ+Z4dtMyTaՉKӖCnv/*հ=Zm "9oAL v])(з/4MКvk#v=v}:cbI1{)_{Ċ`3}.+,j2-Nr]11-xa*B}iՅm&%[izv 5WCTS .t^n}}@߶(2)@[Ӄ{Whc>>{ϸ '[H$^%̝֌(6!7);2h4Fslz5#=iR@} 8A&& U x1|-۳!Y.=鱺v*Ӎ :㊼KGKU CzVU!>C)<TK:?/>_WLA,a"+Mu}Q"bð!)J40hFANvmOtѨW4}Q4o$=g1IENDB`gambas-3.16.3/app/src/gambas3/img/broken.svg000066400000000000000000000075231411575327000205130ustar00rootroot00000000000000 image/svg+xml gambas-3.16.3/app/src/gambas3/img/component/000077500000000000000000000000001411575327000205055ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/component/deprecated.png000066400000000000000000000003441411575327000233140ustar00rootroot00000000000000PNG  IHDRRgAMA asRGB$PLTELiq!! !!$$ feI tRNS>QM GIDATc`\Ci`+ !i1 uF0CZ`Ib`X _fj .I ,.IENDB`gambas-3.16.3/app/src/gambas3/img/component/experimental.png000066400000000000000000000003201411575327000237030ustar00rootroot00000000000000PNG  IHDRRgAMA asRGBPLTELiqN tRNSMQՋ  t4:IDATc`X T0@C+HY`,``@fR5' /DIENDB`gambas-3.16.3/app/src/gambas3/img/component/finished.png000066400000000000000000000003161411575327000230040ustar00rootroot00000000000000PNG  IHDRRgAMA asRGB!PLTELiq???~???>>ooGG``llmmmm89tRNSQ‹7L:IDATc`  )`6sihh8544J+fpZj . lJIENDB`gambas-3.16.3/app/src/gambas3/img/component/unfinished.png000066400000000000000000000004221411575327000233450ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGB>oo``GGmmllmmmڨtRNSQ MQ‹ =ZIDATӝK DӊwmXf2ce{;gʰk ~yܟ)u:V%""@\#EeIENDB`gambas-3.16.3/app/src/gambas3/img/component/unknown.png000066400000000000000000000004601411575327000227120ustar00rootroot00000000000000PNG  IHDR(-S pHYs+cPLTEGpL<<<@@@FFF@@@@@@AAA@@@BBB@@@FFFAAA>>>UUU@@@???@@@@@@@@@AAA@@@AAA@@@???@@@EEEAAA@@@CCC@@@@@@@@@X< tRNSl# -ETCy;"觛EGIDATc` I" H(ȋ+! J)pVDssȰF ΄*@6 YjIENDB`gambas-3.16.3/app/src/gambas3/img/contrib/000077500000000000000000000000001411575327000201435ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/contrib/Radoslav.gif000066400000000000000000000045451411575327000224150ustar00rootroot00000000000000GIF89a({{~~AABsuxyagfklppsuw|~z{{||}|} (ȹ8NFUhr~~~{{{uuulllbbbTTT222%%% !?,(pH,Ȥrl:ШtJZجvEL ϗKj_0 5t9p]v?xm0{CzD}?sCy0vC*)* c?ih cvs0?.,-B.qE2443~D˺,.32ˎr?)$"'? c( !"$'?9;:8ӑF ~!PǎDnb4V$ !,6v0ŋ6byԠoǍpNp`C!R[bH7lB'Oh#-X0y C(ZIB4]j+VQd5N@O{X 0XD <YE,r֨k3u蓚OP&L"ûyH3wXU<uTl\m ΒxCzlC8ؠ $ pЀNm[~e ;X.pődx6YUdued@5-Ї?H#p(898`@݃B R $ 2D5 +0 %d8›ry_c %d Dpq`\zeE=u:`Y,/y֙ᥦ[F ٩W{ ` pld>jUtBx0I:88z l:VjfIZ@pPh Phb)TP $pGF@6Zt s(YqHK22pڅ·_q@B "踟%p%h+?QeYE$o szvsr40^7j'`g%,~FBAtPUDCe0*|+ Pe&Yͩlhbm(^h- fÇQGX"A(Bxƨl\W sp';De \Y#VC\'2v.%)`?)E=wEe[C w0g{0PWmYeQUKht1@7w'"B 8!{A0?ܠ# OR ' 4ܐ .p>8P @:׿QP( B <U!, c8 07UBqAC5vF.p0 C3l.PPd ]8 LC#07 84v $7!HBR8@ P*:E/%Χho8DXpnPX8TBfdN ޣF ^ FM0Fp.Ќn<3zS l <4oCY>9v`';Abun0[L6BZj}ʼntQ4l`~%XRqVI&H^䷕TZBʄmg8!r(f`$P@? L ſH@$87?8Mq*+#G1%xR+i փyR7I@Ɛց E|r f@Ov\'br1⹞$2nQ8<R6axƑ(g]7@)uɁ~1,x{ԫ@o \۔`H :.1c TQԇ" ! 22q05:߫eF( [!I`6&Nj7V.\(rS!|@^K^uQ@n oXž @`HfhTcOtGfk-PafͻxdGH70GXe70{6X[VG;~/uack6!Hج5R#ܽDp0#E +ON=8RI\k#4O_9E)ġh#N3̥,u>2]:n#K~R=Z󯃝YŮYR^e Vt]d2\y]X:NwRגN_rIENDB`gambas-3.16.3/app/src/gambas3/img/control/checkbox.png000066400000000000000000000003451411575327000224610ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+!PLTEGpLaaa```````````````򒒒b}dtRNS* FXIDATHc` 0 "iEr40+ EAtt( 1@ :PQ  s7`DcTF7MkXIENDB`gambas-3.16.3/app/src/gambas3/img/control/columnview.png000066400000000000000000000002521411575327000230600ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTE```Uu#AIDATHc$袀\RPJpࢄ (R QT0[zU@?̉fIENDB`gambas-3.16.3/app/src/gambas3/img/control/combobox.png000066400000000000000000000004621411575327000225030ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+-PLTEGpLaaa```````````````aaakkkֶEtRNS* FIDATHc`Tx@H9^Ƞ~; [ b4|T Wj <2۫p+(LKQ[i=8%;gډǛ@#  Pp*l;$OM0CPB`1H eT'o$0ZYQ (CՑ .IENDB`gambas-3.16.3/app/src/gambas3/img/control/deprecated.png000066400000000000000000000014431411575327000227730ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTE??;;>>==>>>>GpLUU<<>>@@@@@@==@@>>@@;;@@7777<<<<>>==BB==>>??>>33;;==??<<==??LL======>>==@@??::??????????5tRNS8[ygf1<,SP A r|P On3m 2uf9}rrOIDATXv0@" o[OB2/y2#JH؃<[7]=le-gA2mJFVjpiAK=n /{nt3y[ |ǣj0d|N;+Nw_gFYN%0Yxw)P=^h~ɹԝ-uERvZk2O_gg/h8IENDB`gambas-3.16.3/app/src/gambas3/img/control/dial.png000066400000000000000000000017601411575327000216060ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL```______```___`````````mmm```UUU___``````|||lll```wwweeeggg{{{WKtRNSgQm V5huZcwZ'-t6sYd&3v.[tѰU1IDATXWg{06,)MwљgVFH)$ۑuu?~}NlEa {jhj Rm<}dp~AF8Ix+},!boST} ~" !=8(%d)=bh\"4͝g_K&p0r[v nӰE܁c{@~@sq&5,l#GD_Wy@y`m.6 f3 HYH zf~5~bG( qp Q"&)Lk9yp?*xa5  *1}IENDB`gambas-3.16.3/app/src/gambas3/img/control/dnsclient.png000066400000000000000000000044351411575327000226620ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL``````bbbaaalnnUUUmnno``````hlmonknmlnlne|```nUnbnnmnnonokonoo```njjjbbbaaa弼qslypooonm][└ikeeedddt凵uhabmmmkbŵ]ȇ딽误nm݄mdcxfmoһaduӏ̗gwwwvvv⓶sbjrf|`ab߿^{ājϖ_ι}ȶnkj☘ssssqqq搲Ӈܭwیzigvپ~؅ߋՇɡu¤xxxw݅n̞Ӟggg{{{o럟w1.tRNS/#_ VYKdO4La33J|{Q_c3-IDATXݖwXG" 4ӳon;#Eb=b$jEiQӛՄ33{w.俼vn߾yP(8b(''QG8vݺǣ(ru) vIc(Yq=37b *(,׎x?qes2=x5MPMs17_d]pǿ|ac&|I/t3ח,9wd?l Q8}]zH(_꠸y2Q8{f.n׺6gPJQMbxþEl=hRTàGXm T%&'?&悗rZ3.:vnEAUjƃ2!YF' _z%AM!h7 -\!]zuhkujζ|FT!}rs?&4צG44Sj_}{PYxٔbh|IJzi.J]__rrd{-8o AfrEaSf,W-OOfh$p]-c߹_|>#cU-*bk6|m͔2"{xs9r(o& 0j(+:j3N}&@\&Wvg}F& ~OVL=5klY\Y,䔍!rk|xf%TΜcU >.l؏g|0]rQCE>meoxGBcJpD/1ҭG] $SJ+đ~9ou`/-it3VfW3q;3wduA-Jl1k$aAvw'<%,eLdXn<8KP !Do$!=/F+rJC7nDwQ6m8dӞGI{,1+vtNakWKPGGĪp~O<2KN|co;lIGa#$%L_plIOCi5FAKho )WJG7$.hExIMi୦N 0Jh(W˥#z(Ai~ i]JhϲkvPF0@ӿ*: Py N$@4tVӈPkRi.͂\!M7-Fu\)6XM ㈚T*I L;qS-LnnnU$v}ljl `>ĐIENDB`gambas-3.16.3/app/src/gambas3/img/control/drawingarea.png000066400000000000000000000007141411575327000231570ustar00rootroot00000000000000PNG  IHDR@@ pHYs+lPLTE```ooqooovᰰr{{ IDATX0P} BJ 1&#4Mǖhm+Ȼ-/.8rp)'$ H]g7]㷍YUfxdt@ñkЩ@IPu@ϟ68i@/ "I@g̫يu`وKг)&HnJ;X޶i<"04ACR/y]x^ |ܲYmYsW S#ͨ8IENDB`gambas-3.16.3/app/src/gambas3/img/control/embedder.png000066400000000000000000000026731411575327000224500ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL```aaa``````fff``````___```aaa`````````````````````]]]``````ddd```aaa```fff```___^^^```aaa___ZZZ``````___```bbb``````aaafff^^^```aaa___```UUU______```aaajjjbbb___``````aaaaaa```bbb___```fff```___aaa___ddd````````````]]]aaaaaa^^^```___```^^^```[[[```\\\___```UUU``````]]]___```^^^``````___UUU___`````````aaa```___``````aaa`````````___````````````^^^aaa```aaa```___```aaa```___ccc```___aaa``````___bbb`````````````````````aaaaaaaaa```___``````^^^^^^aaaaaa```]]]```___```aaa````````````aaa```KdtRNS" x(e }YP;:vZN šQΣ-ۃ5 zGL'ݳ)&nI@c0 S.mC?3bɪ#81qWuB~o<͸tdHA6y!̞2а]\sIDATX[0MH8Ѱ0B Jt@*B)t{)q$ǖl+<Y򽶤ʟQ2e6cðH3|0w,gxSX@pJ}F"hD 0x](']ʦ)\+mg_{cY0yW=Dmij%l`lH,F w+ĜB&[#s*9B* 8-7kd*%pMm۫#4<.!]]<DO 6$*:6>LI;Fo2B&>@ _c25.YTO) ^/JWlOʗumq?JB|9x}RENE0 d4Hwr%qGZFoЫ== QtZ Љ^{eI[@7^:SЀ™piR^mau@;P_^ϒb; @|ýAl,tXn\tip@1#Lrل(O\N8zoIw[lp" ]l z&]Nh`$ҥ]HѨ" Q5SwX%H*m>>???AAAAAA@@@@@@@@@@@@@@@@@@@@@BBB@@@@@@???@@@EEE@@@???@@@AAA@@@@@@999@@@@@@UUU@@@AAA@@@```@@@m3=tRNStNhqR(7jAB|z/@5dSӀ,Z9T2ecM0 ^#ufU)ْs$wkFxY <nWbrIDATXO@-t0m ƌ5-Y&Mo_$mC, @!TբX$Orݭ2Ai/LA`e+@+Y{%GTc 8pII/-=;t{v`6I O =+uRu" T w> +%p _.~`kp5b lODC"IRh"j d7^جc4FroC m<}s/0ʰ¨} s*R,gԦ(6SX3+W*o'@α':_#7(IENDB`gambas-3.16.3/app/src/gambas3/img/control/ftpclient.png000066400000000000000000000042211411575327000226600ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpLbbb``````lnUUUaaae```mon```lnonkmnoomnmple|nnb`ojmmnmnnmnomno```oyyyeeenqtlnaaabbbum]mkhxiժsߋZzvnȇaj֎怱c^bdloҼaajɌdut~f|bjr߄㜷mش^}◵ƴɆyà_픔芷_w[dgnfΰ۠Ԗl֙jṡܭڐӠ傂wیz}^gxxxvٮk~⎎lllfffոc\iυ禾֏ޚݣꓷڃr둵i1tRNS/#_ 3KdU`YWLaPK{Q[}O{5~IDATXc`΀_[PM\[t,lTSkcր ]aQUҿ#*x)l0ƶ/Wd@<kfqԯ VKǰV,L/  {+PaHJϸѾIoxUy{uۤI}9mdZ\e|뽌ҏoi ?̨pMa u,7;,9}_t_B15Rel^O}6ta HJޏ(pܑga)QTD\$̚RfRBb7%2a*2ݰF⛛Qj \}kяC܀pA`5^2R%;uv\:9 `|d> FC#)pnX b`FX=0WO0 `b`bFkbckk+?P`8H F 1Uo%8H6E-?!؄\lC0{-CC60Sf3֤LLX2+ \gg ʋ4 U `bb&U33#H/Q o fdIENDB`gambas-3.16.3/app/src/gambas3/img/control/glarea.png000066400000000000000000000033651411575327000221330ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTE```+0»--s'...拏n^x6& 4hWm sJ7.Kt +??þ}44mm(($|yE1" ۦ=Knﬣ/>9$SBueYGk\.Wⲫ䫣 -{÷V э')씈gZ"55^^1 <##ʖ/c;99UUN\VxA0'QP>)fك^50MmAᚐJ׿͇~Xk}阺A1-KE^Zc ^R^Wtt̚,!|s!!D6@@MMϕާ+w cfqϙmRt_o>2 ddQE-*ԵD _wrNf7 ccbSd$;;FfZZ##t!wߑ 4Kq}l1Zo44a펎鰰Jeگ᝝3CC#|]䄍??Q`+__ fIDATXc``N&+̀jm'vk; ~LJ3s/99gb)T`q#,,L,` GYX\XK0`g1Uq -^"!dOmd*Oˑffρ1Y\I0`]8"/*# L>0}Ϥ]K@I#XW_R@ɥ_WofS ;{S#0&$Ni +) ``a943}CordpwF'V!M[sR .+Gql\NMY8jirpsp0ppII*$?VLQ!d,R|py|;]T0k5r VKө| \$**I{87utDDT8'+2 j r_prDrI+rz CMQ//a61N eVn 5kx4܀]T%))e9- d^6Bxxyqxcw*'gj*H:6Ttp) ,[ 7n>b6= a"T=~ {aa #!&5pDD# <'z@,p E =y Sæc5`8 +2qBLyȡ0VC|NJ*8S8R-ÇЄ˅WSeL) dȈHy0ّԜ@m#W&ĕ39!)!q2B,ڕM-3YKi2za?0 $b362Bd@Jʹ1K\"dTiU:nEZ\$Oz(0gW$5`З%}0֘ݠ;P3;{3f\4n?IENDB`gambas-3.16.3/app/src/gambas3/img/control/gridview.png000066400000000000000000000002111411575327000225030ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTE``` &IDAT8cE &81P6QdS3|A IENDB`gambas-3.16.3/app/src/gambas3/img/control/hbox.png000066400000000000000000000003751411575327000216360ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpLE!^tRNSLK"|IDATHcH#+` F*".: W`$F(HSdFApj-48)i<pWDH`W@ B$MBE0 F&` !\tz4o* (ӵQ;IENDB`gambas-3.16.3/app/src/gambas3/img/control/hpanel.png000066400000000000000000000004001411575327000221320ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpLE!^tRNSLK"IDATHcH#+` FG+0K`F#)2` ZiF5t F4+e"$ER+ h!G&"#`tL0†.:=/FhbPZQIENDB`gambas-3.16.3/app/src/gambas3/img/control/hsplit.png000066400000000000000000000004271411575327000221770ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpLE!^tRNSLK"IDATHcHC 0 4 Q @ Ds"4$I Ր9 WU7% D ;݄j XRHU@ $ME( F&`%9cѼ9`p*/}&IENDB`gambas-3.16.3/app/src/gambas3/img/control/httpclient.png000066400000000000000000000042651411575327000230560ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpLbbb``````lnUUUaaae```mo```lhnoknmnnoomnnle|nbnojmnmnmnnmno```oeeelllnbbbqs߅aaaln]mjktߊxanhbtmZzvedvvv焴mꎺd]xoһubsbjrf|cccҙvچja~c^j`ϑ_ʝ蓼[}m͗ㇶ㴴niɔf꥽lօݐ̓״ݶṡ܈吲Ӡ匮Ͼ^zegi^zk~خ티աisssiiiႂu—腪ǘw匌ih뀯r".tRNS/#_ 3KdU`YWLaPK{Q[}O{s!IDATXUw\W}0h/A@ Ca. Q%ChQqoQq|vi{.)~3Oqutt>tnSi3Mu0b(chߘA>|DAdhT֮] # ukH>s>U%7D6"{@Yqًx!d8 9]/^O {Jm;7$E<غ+Lrf/h:-"HNע57ŅS^~vG\FwD m#%11Rp^|y~.xWPw6,JkT1Kɡzv*Lma_5Q%H'N穻Bl_U( 4x#B(*Y}ۑ-~Vpafͳ@38M}g i:&-B]Bo%BݜEf-v>M-#ʄfn?jޢ7k韙X5ͻ? XQlgb|봰F\a= yVDUtצ8Ua7d_/8·|5-**$teYѳٷp C39}-N-fzlϠ4-ܕE y쟎4Aq#tb#fZ-EHݞ{^ͱ-ǢP=hB0 JH:R'E\.aeʵ h*ZXk/|TYPv QRq}(@S@:(@dRx]X@@!m=Ӊ -0JY0M(T_Zgws\`O5 Njï*3&aT5$ւ׼a5 4H1=oxX7GQW[h09Zqs> xBf"q3!\Lbh{8+Ibd('j4 ۏMe9 vMd'p !o|QAB=DGd.,@'|Byde`|VdKX"}2٣^@c&Ͳg0` g|G Y~y kʟ +|yj l&`*vv>1EٖD ~V4 gD"ܥJkJތlaym^(4*$;ۻ8!ۛ֨IENDB`gambas-3.16.3/app/src/gambas3/img/control/iconview.png000066400000000000000000000002271411575327000225150ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTE```>1IDAT8cE B[``$_0r@th F>H7IENDB`gambas-3.16.3/app/src/gambas3/img/control/label.png000066400000000000000000000021331411575327000217470ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpLAAA@@@???AAA@@@@@@@@@@@@333@@@@@@@@@??????@@@@@@AAABBB@@@???<<>>@@@@@@AAAAAACCC@@@@@@@@@???@@@@@@AAA@@@???@@@???>>>@@@AAA@@@999AAA@@@@@@@@@@@@@@@UUUAAA@@@@@@@@@@@@@@@@@@@@@???@@@GGGBBB???@@@>>>IIIFFFAAABBBAAAAAAEEE@@@???@@@@@@???FFFDDD@@@@@@UUUAAA???@@@AAA???AAA@@@@@@@@@@@@@@@AAA@@@???AAACCC@@@@@@@@@@@@???@@@eL5 tRNS;+Dh,:RײMȁ.9-؃N/&l{1kv poEP#i%'2jK0sI Jcn]ϰ4?Xqֿ86IDATXUw1(J*@)5vvMSOٙr9AQbײ'j @{S`pGp+yD- y5ڏ^$-$I˭,ҨS Ю8e+S=MHUa8Iz㭸Lfz 8dÌ?<R7"7Ԯ ?8CL@fZ`"CN(9PV9"w8(]25'yQZ3Z hW8C\vxH@esK0O^/ؿuoB%PWKL!@W,HH<1&pL_Fϸf}(bk0O7+ GY}"8k ~'zxv5"n*CId6 +Q`"c ÙPFIENDB`gambas-3.16.3/app/src/gambas3/img/control/lcdnumber.png000066400000000000000000000003241411575327000226430ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTEGpL@@@???@@@0*tRNSQB_IDAT8c`l?$ . X]!Z` P :x·.g Xj~4^j|X3'x" <RR io"Kz@lo Zۇ `0L& "?Б״_%IENDB`gambas-3.16.3/app/src/gambas3/img/control/printer.png000066400000000000000000000006051411575327000223550ustar00rootroot00000000000000PNG  IHDR@@ pHYs+BPLTEGpLB tRNSי0/-EIDATX E2EZQ4̰J^in& nAق1{.5NiG)6.o+b<;U϶E{ eGlpR-13sLd,r+Jҷyb/ćpHwH5kafG@ Np" p1 ruo(-M uomoV{?e~y .`h$|84'KVߒ*TYIb 7{IENDB`gambas-3.16.3/app/src/gambas3/img/control/scrollarea.png000066400000000000000000000007521411575327000230240ustar00rootroot00000000000000PNG  IHDR@@ pHYs+oPLTE```qooooovᰰr{{7!IDATX@PH* `pXTr_ ˁe!S{ *T2Hp}ϼݮ4+Yj݀`n2J,JS+t|@˱{и+rnMg%e8ј"ڿЩvOW<ys8YpJlZM- (mz>wb`y@K rހ m׶#` }/ f&~^E3~z<'MNyIENDB`gambas-3.16.3/app/src/gambas3/img/control/scrollbar.png000066400000000000000000000004731411575327000226600ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+'PLTEGpL______aaa`````` tRNSKL*YIDATHc`@" x! ΜQo3x:s@)©$'tn up+6Df޽,@0lmx)؎Gn0U0`T`S@0 ݻw1 T| *`FZ$\ WU3c- Eu,IENDB`gambas-3.16.3/app/src/gambas3/img/control/scrollview.png000066400000000000000000000003121411575327000230560ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpL```=tRNS@fNIDATHc0 \@PpTQS˨QWJ"J>@%A);+D).  ^tNe̅IENDB`gambas-3.16.3/app/src/gambas3/img/control/select.png000066400000000000000000000022631411575327000221530ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpLfffUUUjjj````````````___``````````````````aaa```___```___aaafffaaa`````````___```\\\UUU``````bbbaaa```aaa___bbb^^^``````^^^```^^^bbb``````___^^^aaa``````___``````___```^^^______```aaa``````]]]___aaaZZZ`````````fff```___``````aaa```aaa```___``````^^^aaaddd`````````]]]```___```___aaaUUU```______````````````aaaaaa``````ccc]]]mmm`````````^^^aaa``````___^^^``````___^^^``````aaaaaaaaa``````ccc````````````aaa`````````aaa```9ltRNS HN ?g(- x i46p&'nI@E^J9_}wXӿ*fA=![ͣWKzG`$ o.ϵvQRl\eUdu25}IDATXWS1Gknl@%CQ@[) EAh$흓9y9ɍ`nPZGf~@C9@0bjA ;dVZDE ,Kg 0p /h.4R]%HMV:I O +OBz.r<yli$TW@J,`H Xo V)%*J C @0tRNS@fIDAT(c` 72F"/ IENDB`gambas-3.16.3/app/src/gambas3/img/control/serialport.png000066400000000000000000000015171411575327000230610ustar00rootroot00000000000000PNG  IHDR@@ pHYs+)PLTEGpL___``````aaa``````aaa``````fff```aaa___ddd```aaa`````````aaa___``````aaa```aaa```___UUUaaa``````___aaaaaa```^^^___aaa````````````^^^___```___```___]]]```iiisssgggeeeooofffbbb͑ʈxxx쪪ccc& ?4tRNS\T0 DkWP"s@JdiYw31; 4IDATXGw0I{Ɔ{?"֒xk%i~<KտRװ{p4Oj,K"@3.4x'Lncd-p<%FP {=/Y&@x)/*?*\WRv[ @(-z- ńsnEhHQ*ZT+W$ ݨ^465m[9.ʗM\ʢrٍn]?F|1sOcbŇo?(c.s;*f<)XӸG͸P{3>5PH8 mf$(xX!FxpՃ6`4 >I} `+G"Z@[aPPMʎo0Ώ. T!7@0 c}5rVEZ mc-)=]琢8Hmǖ|ZtB. dM84(Cs8 A6&c=+K ȲDٜVN3Ȓ'&rFBrrW׻RvrW)s&P[wSnr|~ {_VjQ>m޽{=kgu-bf{f=;btz vÃ#ȉO-!9}teAnuAJd6z$O@;.IENDB`gambas-3.16.3/app/src/gambas3/img/control/slider.png000066400000000000000000000007271411575327000221610ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL```mmm```______```UUU``````___`````````___```wwweeeaaaggguuu`abdksjttRNS*V*Z[CYiIDATX0"[Vw1A MMۙ)cB~NcÈӵ5~(eQp@ZQ|~-jk @|W3WT8e/m_78d=.PbM\ 8P zB+h?lvl{鳣L:7un:{?LVaDĤB 2*C_IENDB`gambas-3.16.3/app/src/gambas3/img/control/socket.png000066400000000000000000000012001411575327000221520ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL______bbb`````````UUUUUU````````````^^^`````````aaa``````````````````___aaa```aaa```aaa```___```___aaaaaaccc``````bbb```fff`````````______```````````````v'3tRNS  rQpT(7ϋL'M8KUEKIDATXr0E2wcK^L [>vispbEy8@XXzK[?,GC B#>H[pU/Uo("JOa˅O`) "d TQ# pOxn2;h-oncQ t|i:CkZzϫ-fD$PZ&W5ifV@w~K{gc\p{[OCCi:&9'c"m@FE&;HDV@@!iXQƣSZ8o?Q=_=VW_nlʚw0QYVHnʏ(ߨMQF+G4vH-$}[w d^l/z-ꫮ#G~9An1IENDB`gambas-3.16.3/app/src/gambas3/img/control/textedit.png000066400000000000000000000017401411575327000225250ustar00rootroot00000000000000PNG  IHDR@@ pHYs+bPLTEGpL@@@`````````aaa``````GGGYYYDDDAAAŃxxxFFFǹVVVWWWRRRhhhqqqАSSSKKKttt󢢢ᡡZZZLLLEEEwww\\\rrrzzzuuuCCCצ˽bbbsssJJJ^^^PPPBBBԱ{{{fffmmm?n tRNS*kIDATXgS0`[FB;\o{/w'Z3@|e}FlY4-b㦥aܧE=Hisnaukj`ǭP5tWýYt2 z =UN6L%gORue٬Z 2ְ˶D}{vSjҹ$AX_=a,Ƒ|J@G8dGjJ,gxQm]4#%-]7`LJ ~H-!֮ٹtI@@j`i56Eo,k?T@ Mbz0H3p`h1Ʃm>>???@@@@@@@@@@@@GGG@@@???@@@@@@@@@@@@@@@???@@@AAA@@@???BBB@@@@@@???@@@??????@@@@@@???@@@AAA@@@???AAA@@@@@@@@@@@@@@@@@@===AAA@@@@@@@@@@@@@@@===CCCLLL???@@@@@@AAA@@@CCC@@@@@@???@@@@@@???IIIAAAAAAAAACCC????????????AAA???CCC@@@@@@<<>>AAA@@@AAA@@@@@@@@@BBB@@@@@@???AAABBB???AAA???@@@???BBBFFF@@@AAA@@@@@@???AAA@@@@@@@@@???@@@@@@%ftRNS (9#Z:a΅zYϥ/E A$D'=ve<`ojd cO"h^?uy.&,M-SbLGBiF nqHs]ޝIDATXWQA`dPD\W45})5R۵=ͥl;]yat4f<2{5S]MQ,h!]$^˲ $Y%LJH y&%E _4RlˋD2[=5~߰zgD=^J;rTK5_.Ty]orc_)ݒ&rE!Hv<W ~?"oDqo`E$..bnYp$|\sy+ & 8[(#-Q0H@O0@960LEAY+TxLn=7QC 70 dM(GH~y- QBPJ{p܀ " (pSyƏ76L<% rQ_XϓPy;DHр|]K͑< F#y"6"0xG}IlOu~u.G+5 bMڷEgU96ޜTIENDB`gambas-3.16.3/app/src/gambas3/img/control/timer.png000066400000000000000000000016651411575327000220210ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL}}}yyyoo۫ϗ㺺/#L%tRNS pT'LΚ67K6qdIDATXZ0Y.(+m,/e&@i6܅4L&ԿXe;bZi6+r&szsc#tc3ee=z؏ړփ=j Ǯ堾&4a7^;7c{<w !-s<fYiX:P+)ZHBn<`)g 0Õ̇Ϥ7q73,0.SgRSPqFV)x`$ @M`;7 њBLDp>,Zd}@U,=}@X>"ZkT|@S<Ma? ৠ)EdA$(R2LBĆ3P8 U()ҸJR:ZZ.F\m\Iїz_.0(ٰ!/q"KDEyGyp{ZiV꾤͊Zlos.答rQ?!Եn'O7qʣk'[ng_+?(q:p~IENDB`gambas-3.16.3/app/src/gambas3/img/control/togglebutton.png000066400000000000000000000003531411575327000234070ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+!PLTEGpLaaa```````````````tttȑtRNS* F^IDATHc` HIH9@}E*BRކ IA9|Zf9i F*U@3(EBL}4 PA)2hEU-ӉC!IENDB`gambas-3.16.3/app/src/gambas3/img/control/toolbutton.png000066400000000000000000000017121411575327000231030ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL)```ddddddkkk+<=̥A4;y1[-FC0B̖2H.4*2֢=Եݤӣ>l}|˅[áO\agjw|JVڗܚh,385Dts{xʷ׀KQXXbiƗќLZe6365Gz:ݢEyɅ tRNS*wIDATXUS@{JJ*V@wwwww^%-l݀0N}-07R (fbvM2zB{0ǘ'6I$b[)zT1D8&ZHۇpI9)rT]`us^7.uU);rğ |9`q}~swN:Ō8Yy0h7 00Jhԕ$HATIENDB`gambas-3.16.3/app/src/gambas3/img/control/trayicon.png000066400000000000000000000023261411575327000225240ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL)()bbbUUUaaa`````````"*``````)```)(@)3)*)))))*)))))($)()))*))**)-**((*$')(()$*()))((*)***(*)*)()*)*)*)())*)())))*()(*())))))*(3)*))))*))(())*))```䦦bbbdddqqqeeellltRNS-/ RH2~LpnIVPU=S< Xʹᨱh$be*,g+_oϑf9 tZ:WGIDATXgWZA"Ekbz1DMbޣ1,@vs=u?|aμww&*ȫl@ [UY} SdB$Ԕ#`c=A Y?z$AH%ȑ,`$0 $Q>LVяsq6li=KSM5):1h[O }Zݺ^2S)=6#@NdLVόw"荒Y~+aRbdC/)LE-:u?~}Y[1JD}/1+anwY8eVw1fCx 1Mt(|.?Y,Oŀ3D}C'6baX/;iZLj:uD@30FwUao\Ts~|$M aXj' v?I^\Y?W1G ZTqȀ:GvuN[GO[|]SIENDB`gambas-3.16.3/app/src/gambas3/img/control/treeview.png000066400000000000000000000003631411575327000225250ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTE```Л IDATHc`@G *H`u$!+peGH< (S@ $ME0CzlEQ-P` pآ EHGdCVt$Ao (A=FSIQ኿ٸvIENDB`gambas-3.16.3/app/src/gambas3/img/control/udpsocket.png000066400000000000000000000021331411575327000226710ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL______bbb`````````UUUUUU````````````^^^`````````aaa``````````````````___aaa```aaa```aaa```___```___aaaaaaccc``````bbb```fff`````````______```````````````霜qqqզaaagggbbbiiieeehhhppp{{{lll⾾죣dddooozzzєӢmmmȤttt॥ᛛuuu|||ٶxxx뺺ccc(93tRNS  rQpT(7ϋL'M8KUE?IDATX@CBӸ{z3IZz빻KO?h.Ir/xvfrB#?C>/x}!+p*qw%CH|}D"p^yM~ j` -p!ோV9N\=8HY{wH@ HQ<_%X5@RpJ-O|PFU鬂r ixAڨQ F*U0`Jj&X3$4IENDB`gambas-3.16.3/app/src/gambas3/img/control/void2.png000066400000000000000000000003421411575327000217130ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpLdddaaa```aaa````````````^ tRNS* UIDATHc`2$+0 , 0`Oe& F*U0`TQ Vx V+w& | ZpaIENDB`gambas-3.16.3/app/src/gambas3/img/control/voidbutton.png000066400000000000000000000006751411575327000230760ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTELiqͅ8tRNSIDAT8ˍG@DVAqL2v]o[[Dcš̮Mad răJ> \B̂2Y 7:ʂSzqpA](Ё~׆Mh# t`ZV @qp zP.ٵIENDB`gambas-3.16.3/app/src/gambas3/img/control/vpanel.png000066400000000000000000000004221411575327000221540ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpLE!^tRNSLK"IDATHcH#+` FaCD# ̒@Z * MD @@rlL)  WiBf#A(-5 WӄFPL Q "@GhzMaV@i QݕIENDB`gambas-3.16.3/app/src/gambas3/img/control/vsplit.png000066400000000000000000000004351411575327000222140ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpLE!^tRNSLK"IDATH1 Ezvw/GІ.ХC_~BA9 j5XAg Yq  "(bWL $ @kW)HhIb-`ik goz¼C A"AC R0{Ts5X:IENDB`gambas-3.16.3/app/src/gambas3/img/control/webview.png000066400000000000000000000026301411575327000223420ustar00rootroot00000000000000PNG  IHDR@@ pHYs+FPLTE```n/go pu7m0hÇ۷`30Kalvfnwfw0$U5ѻb > T rO  v(ď5`C>_7DzEԅEEEi}XC의MBW@o|/ ܴ-*+q٪Dǡ-P2x&6l j43Gf7S(!q`: -R-䩵 pm@F,}yd'8Zsj,VURً)b@?PB4YDT%OX (oL$~թ2@ @b7 K=V@-Vse5P-e0@Ía hw 6[D+mUmo#hy HO)8EL%$5edYR9-A6OLbb*($9Q@H6ӌrvSyEs&<}xjJ7ҩ; e>&$;Ýq<:3CnVE\VW9ApD;ދgLi;ý2rLOe_cro`$jYdz3ngZkr#}y i2*$Ul;27)JY= vbwۘ|ꑊmOFUvWb'ZO?n-Ս_^ IENDB`gambas-3.16.3/app/src/gambas3/img/crash/000077500000000000000000000000001411575327000176035ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/crash/atari-dark.png000066400000000000000000000003271411575327000223320ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpLc"tRNS@fgIDATXI C\җ䔴 xI]U҃{ 3h /hh&( Ze,0ܛ>1҂6֌?8DIENDB`gambas-3.16.3/app/src/gambas3/img/crash/atari.png000066400000000000000000000003271411575327000214130ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL/tRNS@fgIDATXI C\җ䔴 xI]U҃{ 3h /hh&( Ze,0ܛ>1҂6֌?8DIENDB`gambas-3.16.3/app/src/gambas3/img/draw/000077500000000000000000000000001411575327000174405ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/draw/duplicate.png000066400000000000000000000002471411575327000221230ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpLJrtRNS@f4IDATcP8תUXXTV g00 :.DW(>IENDB`gambas-3.16.3/app/src/gambas3/img/draw/invert.png000066400000000000000000000003561411575327000214610ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````aaa=atRNS+NnIDAT(υK EQЀn@pP ('f6Mރsܹ(rP?ea `g@8 4` 2  6@Áڰ3­h70Š()IENDB`gambas-3.16.3/app/src/gambas3/img/draw/move.png000066400000000000000000000003071411575327000211140ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL??==????????tRNS*3)FIDAT(cHKKc``HS  (,=L" (PNK3BKKKDpKKK/P&@-eB0%f8MSIENDB`gambas-3.16.3/app/src/gambas3/img/draw/offset.png000066400000000000000000000002351411575327000214340ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```i%ftRNS@f*IDATc``ĀH`Tыi;n)8Gf EIENDB`gambas-3.16.3/app/src/gambas3/img/family/000077500000000000000000000000001411575327000177645ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/family/column-i.png000066400000000000000000000002451411575327000222160ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS10IDATc`D|w,Hj $:IENDB`gambas-3.16.3/app/src/gambas3/img/family/column.png000066400000000000000000000002431411575327000217660ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1.IDATc`{$D<_@_ a1@ u  ,$.NIENDB`gambas-3.16.3/app/src/gambas3/img/family/expand.png000066400000000000000000000001771411575327000217560ustar00rootroot00000000000000PNG  IHDR, pHYs+PLTEGpLd# tRNS4IDATc08P IENDB`gambas-3.16.3/app/src/gambas3/img/family/fill-c.png000066400000000000000000000002031411575327000216330ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLCtRNS@fIDATc`@@' \$n 6IENDB`gambas-3.16.3/app/src/gambas3/img/family/fill.png000066400000000000000000000002041411575327000214140ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLCtRNS@fIDATc```E2X\ {IENDB`gambas-3.16.3/app/src/gambas3/img/family/horizontal-c.png000066400000000000000000000002361411575327000231040ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1)IDATc`@a"lA@ ,M6yIENDB`gambas-3.16.3/app/src/gambas3/img/family/horizontal-i-c.png000066400000000000000000000002401411575327000233250ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1+IDATc`@ b3~@Fzb `uPd WIENDB`gambas-3.16.3/app/src/gambas3/img/family/horizontal-i.png000066400000000000000000000002371411575327000231130ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1*IDATc`@"j`<b`Y:$ RN<IENDB`gambas-3.16.3/app/src/gambas3/img/family/horizontal.png000066400000000000000000000002351411575327000226630ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1(IDATc`@ "20".@X`1(!CFIENDB`gambas-3.16.3/app/src/gambas3/img/family/hsplit.png000066400000000000000000000002411411575327000217720ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpLDtRNST d20IDATc aLFMuaH5e CԤ%X ,d x)FIENDB`gambas-3.16.3/app/src/gambas3/img/family/row-i.png000066400000000000000000000002431411575327000215260ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1.IDATc`P  /@B$1v\eIENDB`gambas-3.16.3/app/src/gambas3/img/family/row.png000066400000000000000000000002451411575327000213020ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS10IDATc` fL 700@f0fIENDB`gambas-3.16.3/app/src/gambas3/img/family/vertical-c.png000066400000000000000000000002401411575327000225170ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1+IDATc`0o``Ȭ$/ v W ozCIENDB`gambas-3.16.3/app/src/gambas3/img/family/vertical-i-c.png000066400000000000000000000002421411575327000227470ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1-IDATc`0 A$000@h o68KIENDB`gambas-3.16.3/app/src/gambas3/img/family/vertical-i.png000066400000000000000000000002401411575327000225250ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1+IDATc`F$// L10p ܨIENDB`gambas-3.16.3/app/src/gambas3/img/family/vertical.png000066400000000000000000000002361411575327000223040ustar00rootroot00000000000000PNG  IHDRF} pHYs+ PLTEGpL tRNS~oS1)IDATc`r @H0B`v 10MIENDB`gambas-3.16.3/app/src/gambas3/img/family/vsplit.png000066400000000000000000000002741411575327000220160ustar00rootroot00000000000000PNG  IHDRy pHYs+PLTEGpLbMltRNSt,CIDATcAAE0C""hbeC@ ((c((BB,LP\  4aIENDB`gambas-3.16.3/app/src/gambas3/img/logo/000077500000000000000000000000001411575327000174435ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/logo/archlinux.png000066400000000000000000000041311411575327000221450ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiq""7<99LH*;6;25XES9T1$=OUPMA=9@KG0/#A4WRCDLF%%BA@-/21%JEUC'.;'H*=573*GQN#C#!99,+:0.VTDFQA9J;2NMY"6=X$O]ߔætRNS1dyV\s`]%Ցaj /~U?z!S-G=m:XSE [uc'.}""g޳=Ќ;^ݱq% jƍ6_SAν~;.A6noć8vy ̊88xq  aWW/?dkvIENDB`gambas-3.16.3/app/src/gambas3/img/logo/debian.png000066400000000000000000000043451411575327000214010ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiq:蓪쨺剢ꝲBꝲ1]pY}B;/ZUy.Z9 =霱$S兟@hVz OAi꠴.[F쨻)W瑨6B拤u!P1\= <珧ICiKr:d挤Vz2^Fna-Zꝲ-Z@i刡;e|Dk*Wl;e1\-Y]䄞%T瑩;ek*WI_Qv3_y P)Vp\'U=fjAX{N|DkLwCk쨻,XGic{yy6 O6a&T%SDkWzaFHKq6꠴e0\^TwgY|FmHoKq剢;d >Vz @f]瓪Lr697:= >8 ADIL-Z%S!PLr)W!9tRNSq  &#:n!aMs%"8it=J<>_3y7e(w G/HFAsvAt~|:CMXF1%U4Ô(*rc[*5R)nݐoVвrM}kL_\ adκU51ՌmnghŗSFX߇oaۇ|I]j>Vύuc /IDATXc` 8oE;sݹ7,gU&-'U7&O@>~Bvm?"ү:S;|I1xOp?6[BBBr6xC nvX `QXPqA<&$(´["`5 z0?w$V̄:Bw+|P KB!T+@3an)8È]00Hd^|E 264 bff'yDěקh130L | &u>y)w~22H|.`D2p&$a #?.T 믧QYM;|0@Aԏ 4EΜ` h@2PE. )14)i`أ MzE-f4)&`d zk\W+ 3!&i}LE˾F3/ y ~C$L86ᇙ͐\g&b1, C Cd?9k`:X&wH]lW `njha |_a@QD^(qr0pLa0[G("}sD L{(u~ =KB׼],i}X>| QX]0\}o1Kb~|m2\}00Qp̯/e-x `ǬllƈY6K_ja|/6z="vB SA;X h @60U-&\ jn㯠@s ,lv[`At?|=.A `>8J]I L`ᛣ%&X:pf<×`}뇯k(HR,uK?DId10}2muQ'@]0 ŷw+2Urp6_VAI߶ex,[ry?Ӏ>u+b =F2RWyqՖ/1 ژL2E:bxk^φ&RB+}?%׷-킃~ rJpCw+M'dvIPjoЧ–kM}#v*oJ/W<Sh eXs Hz_RJw(,a5 i@x8Mh{))f]hfxoM,v04=c۸ R-Go$?Jyأq2YA rfy² y[/}*k .R ڍ k0d O}(S\Tv*ػ FcDي|~يP Δ`z;CI-$Jm$mɆb^$}>_Lwv-xCs N4mzYA E:S BOX!b?J =~ޭ*b֛\ a!, (}9K1Ξ_$߉ZFԁ(5ީ63@_]U`>_xXJ @|EhZ#B`!laDAӔ&Y2dg>E3Ç]ƐwR*/zG&*JuD*BH%X-X.6ja7oТ\C`xcHγE@sصwӻ鬵8Xi<-iInH秓Xc[mOmB[ :q4rJRXm&\O{71%њHO*_ƪ5 ^a0޻zx  ]m_yy&n\1^PFj'Vk,x5teͭww9԰@:ɯOE:9J$@j ̈@_!FfJl-;[+8%YYǒuލ*ʵH$fl4812Ŷ7*zgK3R9.NV8^|)AE֯ʣ&£ɢF2m[ XBS03_V1(,p3!Awe'4 ~#cJ~+q*:ʃK*W=vО|k?$pl~^|YM4v7vwݍt+}ճ+w<‘L,cIENDB`gambas-3.16.3/app/src/gambas3/img/logo/folder.png000066400000000000000000000051271411575327000214310ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBmPLTELiq+*ӡN˕>ϛHϚHբPŐ:ŋ:МHы:1,10./2,-.-/02,.2/1++2/23.p2+0-+*+ݬ^*,01-0-`ab c d e f g h i W],/,31.q213.-0/**]\_^[Zl m o k [j p b n k b k j q g d c r d ` ` ]l b n d _ a _ \a d ` f h _ ] f m ^ h c Zi s ^_ ] ] Y_ Y^ q ^ c ^ ` g _c n _ Wi g Xe f V\ Z ^ i j o Xc g UWf b ]n ]e a m [p کZTa 5+g X ۡC`f h ʔ=r >RV-] It]c d zrhH-g}]Hˢ tRNS|O7rpIDATx_SWn{f$$ݢذ1!  $aAE B(P8p:{M} Q{ IyB!B!BIȑ#S~7{m߾m[VVH-[v*))=ph3'f {EEΝ;7l]~}nnnQݻwfsSޙ3g]+2@- `Ԑ摍ID`ۋ+X A PD;ԔOS,2@-].ͿW6HH Zivw*VAӡ?h|}"4>щb7+*O`tr.O`ttlL4yOIIE `$͟2!/16c e1:+9r.L2JI$I$ zI>Iޑ$.@;$ k^oKx}&I\% T_@W$ $קx@@% TPI^$ӳpzB$q$P!Iվ$.[^/K.I$PsI.I$PIIǒS@$ $PI8='I{% T{D$qޗ$.pH/JB!B!B!tk`IENDB`gambas-3.16.3/app/src/gambas3/img/logo/gambas.svg000066400000000000000000001124521411575327000214230ustar00rootroot00000000000000 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 gambas-3.16.3/app/src/gambas3/img/logo/head-16.png000066400000000000000000000010021411575327000212670ustar00rootroot00000000000000PNG  IHDR(-SgAMA asRGBPLTELiq))()*))$,)((())) ))()()))))(()))))))*)()))))(()$)*))*"*)-()))jr?tRNS`LJfy&>ʹғ鶏oqFMijGwIDATӍ0C4dQ{!^˵d隱qq=m:wԖV 8^.Q#@ T4 CтVQH/]WX#/& MX/츩[Ay<4%X۷?pIENDB`gambas-3.16.3/app/src/gambas3/img/logo/head-256.png000066400000000000000000000337461411575327000214010ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGB pHYs+PLTELiq(9@3+@@;@@>B@=A;B7=BBBB<B3B9@BABC<CB8=@?A>A?<3>BCB@>@B>AB@B?B?A?BBABA@CB@AB.A>B ?BBAABABCCBBABC3DC @B2BBB21CCC$uBCCBBC/%xOxC)+C1!mC|}K, vI zѿ&` &=\e q܆çkl\,tXa[ؐLrxy]4d^'0vgfl@uT9%[J+BZ+Riux(Riˆ@mSG2n~Qx>占<B"nߵ le0&&̨R>\] :FR 6V5p:RL+GĜ@ xTytDNU Jyκ/+?ff\5SЯVN_?z}ܿ˃׷7:"DPf5-k/ e$d,AdM%6n8}bZ*Rךr}ytXMwo*:d?>D8c ZSbЏ!0)nrvz`wA@%hT8?p9C0?;"?U ‘UMDYL^kTimPYhwU&kQMP*?tddP9>֫kuebڀ VI,% ^MC|"ׄ4&j*ߥflIlT):*ϫ1V(9]Nޥ{^e@m؀jO w- AÍP-Ш֩b9{Pzfo?*FXJp65X-9psNppN7FJno^հCe HpCG~I ' ӵp8PRSD&0E piBo%ۦCp]O%׮:xߊ;ʬ˜-4E O(O65#0eUˋ'dv4l@}6QG(mв0ܥROJ4U (h ЗKlAy@nܨQG`RàJCM0@hT[1_ƗXQżYPdaJ4#]z!\/k 5ٗ1^l!'!݅ 4U#l- WwȎGOf@_R,߾/ZS\V֑7b@]Hn@ɡL}y~rN:.+0TA_ŝ-[?O>*Τ2gas&4f @>9\v ?Yg_*`wCm,1͵g ԝGҦ(IhɃda!J "Y,XƮ(J#ZnwjkۮkGAtݶvN=C^p;s'|9׀1RxF ~7s-PIPp jriYM_a9ce1?;51%`A^ P P"OmbSSJX( ]뭂B~iZQRL++ ū@+}(6R!T[PBgPAuy|x>(S[WI 8 `r&vZ5U` A6sVRKUs/C,dy* V_WR XWh D||)dS<!0 sgAh6xB)-1@Yt3[:Z z1"9 b@Ṋ##7?3N&|r7|'&(Nb( b,}큄hB <~[@'N% ; XVgpIؕm߽I@lhK*@G- _0ߛT"tH@S$zR1As^| 5@XAxtqgbǯea*? Z`Q$5~bI IrꢲRljdZX. .5\š]w#gY}Y ?:~Y,)-|;G۱M#:EW&f %Z{?l\o- EԖwG-uzKSLʺslf]Jlc2k U&voshYh nギg̥¿$S!23gMBHJy^gwk[rئI1Q=GoB}^>]kQxA 20,G ,k>btK]::]OG&nP;]tŠFYWφ&qK _Y!=TA P,>'+(P e]hjqδsPMv %BWjPP=2&Pw6u*HC0΀Ly'gҌR۵i10v!G7Hi8ͯ ǽ%q<;Z*Q-?k^S!@(\>2\qK&vWw'>+X'ӈK1r^F{>WWQ_%P`RvYV UNHzZc!iinr65|'ZKEXA1#"*#.⎖֡?[ue @@5,}Y}+Qw DG e3aol1qq1ˁqA@H}~w~DmВELUTP@DLJQ yϮf^f5;Ư͘(1veѪҰ)I+s0 y?6|5/8Á"Xy;NUT*2} :iaX!BV,+YW%E0:'Q`PX[VeVSt ѡ)euZ4Z քFctVMzoHa)F()`FxdԚ Ag _ԛRx}M5|h`rO{eJn4 ?M΃ݮ rxOEi\#?AZe(_1sE,HN)'(|NT6ZDu@%,r8C[2 o%Jk(QF̮Ͷ+z{I*IBQ&iͤM~r:c? VRiP BvipC}W6L p RBVR;^J'4 $>wXۤF7/| d Q$QH97R$]k{}R\|6c] |P´ dۧW3Ź„B7܊ax_ XPJXFbuvi4jOpgAn nG,ڵZ, oF/̬9l$7d痗BؿL8xn8f|  ~ Ԥ⚂Cxx#`TDLpTrKCs9_>2bFf3^gUYO`SV@2S:;t @*V^J,gFF h XAASLBu$Q@ @`׿ 숅V$ !0rwA~*/+ GVj]uܤ:A8a@HXtM?El+Dx>(OZ(Yײ0tgS4vҝYǾ, Q`"֠6*R&䫣jju:M3M{},D}h|{/=g=s~-JHO/D&]8#8HmUv}i!8 5HnJ zE@Rݔ3R)wdc )1,0r3SSRbcdK0-ƒ.P,>BMGm=@W)R%`%}O"*@8S6l.wV5}J@uf tEil Gۤ` Y kBAe˰'pAIs$r@&" zr<8"&+?sĔg'kg%H'c@O$y4[9A`@NEn0= R'm]Օ]mo㸚 m,,g{@r\@s/VZX@y+,=tj8U~Tv&x $sBa2"tpn@Tc_͢;a)TCH/Ƥdӂʤq 9T$!\XF"1YhC|MRC;¨ \ I}lAOa$w٬RyPA=b:'v@@b`Xu_|pxf 80WwMD`ѐbvS"(aag8b^gۿ*J=`Xf G8xl@x!LDFq-\a3n" D U`y(<," J<b;:JЌn=KW]s"1Uh{ABBqtqyaLǦlqhJ| %tybб=Qb5N"@0*lԇR &b) *-@H.[/HS`BlI^:CI$D 9lJ\^3:a  8Eu&*Gg pbx5>Auax(Xj08 +kf(Oz u^Ɏ;!p @p]^-YrĝJ $zw()[F%<xfO?2 DwE&^ODB9@ A:S y1(4hE <Ni"'iv{ ktMjU6Z*`zM @}a}WH ={6jl3#&/=~ſ_2M=90Wͻd!SZWvyi`Tz~Q3eshc~Hf+yKz#hh1GD@rr#v[7~- ޷Hcbt}.yT]E@X; .C{om5rX90:j?@x.=ƈ3~)q0)L[FZ89XVs5L2ܹ?8TrQF@BSmm 80\0Ɛj/Zyjy!<$߫[VG/՟`\2lZDlDEl(XJ _: oW0dT+a)@1qQp#S5KEFc۴j]c-c7(8?(k゙1ԲrG',t ,BOpQ'i|TS@6&Uf-~ͫj }W3! 䇷ŋ9YIDATv{Yɪu2U5M V(k!x@o78˦PP9՛͍ ~ >tC</%kb{QɖL| tB@IGrc7'  a Vzg^Iqrm[!԰&E5vy|Y%1j& joaUʀ+o>(#dZCЙ٘P:OѦP:ͶBe-52]G_fIdd4a|ArGV>vYuH\H( Uړ⊋0C:0H 6Ȩo}[[Nl͠cp`9y,(@9β 'Հ ϔ.S*r n}::YZ:%qVK!f4[Hՠ <*<L/OٞSΑ}5 8Z,DߚZv0$[KJ+I< .P(r޸JVZX([B+˃o.ٍ138hnqc!`9k_ ϋ|ss) :؏4FK`l̇3$KxZ* Xz{/.&{ J,aEk;)MF#Nx|AˉvR,4հ9nVgcuW>mIDYZNt}c8{Ћ鞪*$HNUk'Eઃ[zy v7|zF~9b6Y$or^ۥF=aipfuZ!Ȋ#zfj!p\t N 7;r6؂ /yfPѬ0ɂ.9Tj{PhF1`sȠ#w@Adh$ZIn68q7B.sosSZ(H,*KNV:+=|ͭӖd8 A8nd@@~nru~l~d~^֚v@-*뛻jH*2:ȱpt}һܺ055ѩv.n&ckaȫg(òFFhJJTZi EHP?]鷻y_*:oZY uVP_j=Z;h`ꥥ\,ϋHZiFnUaoE4 ^>(?wM2D"AHԳEe|g98D-4I#?@9@b?l :16_fRːIh}Qh%l@!(eZdqX ]H '^*x\yO<Ȝ@k rA@}?rȾ,6 jv'Vӕ8dNsWu3ϯc:hiv¬ܜs$9˹s~T+ 4C7)\R@Qz p_lg;laE I &ٱg?V W@4C3 srBsO'|&}4`Ur9; ?<6:?>w@;1VgY|1$+sCX}B6;J21>7J*' o  `xV$;H_`8f.\*hA4HrA~ ;2?'Hn4Aӭ8Ix1=8F h*먁^@qP0K @ OQ!VB# S/okJZq{;I0* k"Bx"j`Fz7be;`Syb C@}%Mҡ_j\S"62heYKT4&( ď1"CcUj`QeoT|rjb R@pFB {>}eR{hVa8mq?Ѝ;12kŒc@1&M`h璼]aK=EN'pT%6j) x|L\C  fbI@;Ҝ:SP^5/ Z>P{e |cKV3Ru|rc3peϩ9ێ <LXg|u~7?ӄ\A'hƾwJRHN&Eb:De/9*) yy'MbN!/]t:!ͭ B _'FLşp! HU_ƒOk9;3x!(Xg|{ qϙD Շʕmgn}u)e  lc@u5mm-wtCcd?sZ3h>t Z|^G'h@Dfg7SLƳO$ZY |U+ W]8; =qGALG'",ك-k<㤚1>e2?֤/6{12?VIm@J>3zphfŋ?N5?ͨ di^F;koj\x@+HLnXF[쨍''5@1|x]] k~W>.ۻ&0:-v(/(jR> mp4ҘYLh4$$& U4cXĝql9Ͻo?d(ҷfv< G:fw}&4RPr^} S~]ߑWpu_Li ,r\vmzke .(?onO02A9[f?Wn|9w//L/3p-o\` yYsx<<3L8:iE냟7XýR OZ3{r -u/e1Ej)xQŷԘkk R8}V?I.sRŠN4#bi_GE@c`*1ތCuaze)R %T8S#!wkƀ`${`_qolΟWn-L'j5>+덿 x(4nP8z`oT9nAN2\5ϰʐfs= tXa$-K_G|^Ie %> Kg~9]lJ5!_g#gjE\,dg{/Hˀ*޳<\1B#q/_uhOG+Ms@@Y<:Y @dB! {6[ i0rlQ!W5&<(NEP>4 VZtTzJUjPn1`$L,;!Da8tOJm&𓬩ڇip~e@v 8HXDX!u`<@'dbx=Lj|B/{_(hɨK + s2KhtI' č Ol.iFC!n'F< i3!i/鐭Y7jV!0Ѥ44>_ 29ʎ[Mp05 U.@aR as'r)x >ߐ|"`;Ѻ߀+43 [f D""Dt;%r}{.2+.k740OUCI݂lfp#P9KszCgYh)Ԝ廄~kJGg/ eo_IENDB`gambas-3.16.3/app/src/gambas3/img/logo/head-32.png000066400000000000000000000016621411575327000213010ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBePLTELiq)(@"+))())3)))*)))+)))))($)()))*))**)-*((*+$')(()$*()))((*)+*(+)+)()*)***)*)()))))()(*())))())*)))*(3*))))+))(())+))vtRNSR-H2~LpnIVPUS=< Xʋᨱh$e*,b+g_of9· tZ:WkiIDAT8Sb@@  E}hևC2;3w{!quҜ\SQ)mU3ϥ+G'X% '?^̎ιp$2f.51M6[{Ec\.=BQQVFĀ1y#=05eCgqNj@C6'$yߚ􆖪Q/gB5~j` j3{21 "]R뚐%%=vkGĜtb~bX@Kͤ& ixSSdj4jH;rq\?r#<ɳ]6Nt[z5#1?oENkgk{*t{!{{ϯ7늶dy!IENDB`gambas-3.16.3/app/src/gambas3/img/logo/logo-ide.png000066400000000000000000000152621411575327000216560ustar00rootroot00000000000000PNG  IHDRkXTgAMA asRGBPLTELiq~"~"~"~"~!~"~"}"}!}!~"~""}!~""~""~"~"~"}"~!~!~"~"~"~!p*u}"~"~"~!}!~!t|!}"~"~"#~"}!~"~#!r/~"~"~"~!| ""!|'!!~"~"#))}#")())/()))2|!)()'~n(~L)~"+*1.~"5~#9oTBLkN~uE2Pg뉹؝;>*zx/G,-~,L\ذS8a4~OԣX~&iJW)Uֹ{ԡYę~Ibv|~:wD5b>E,JĊ:̧;~?x\d$~/7fㄶג2~,LƐxwd~ _Uz̿'qg~H͑,@$v%`ƢtkM-\F"H3!7O6kPsK0Ԝ@3(/{xpBu1.psRׁT#ˀ(a@Dڗ.Hkt }'HH d>,AL& r,_տ} ?_V~,ĥ8& 7IO?upg+ mW$H9@ͮ}_`.eǸE"U8l@[FP 0< ࣛ~B9ы^c-dU@5?:`uƱ*~Qzv`dob[b0`c@K2Y(Wm)R`s|̣Ϙ9ѹ7< \Ù(pL f3yw:QE@sȂ=q< ԯ1:[08n@2K`<0%r ƥSa a@6|K]x`Ox*w%@d :'<* | wjI%0. >uiJzڢ具*:Z&N>ZfSd0IKL-T`+q08b ]_#^&)PeQ g!ܲg^ziWV:+īV@ϚPNk-Ϸ0E+@ܿ,Bl ~g\C)ƒ@^6WB^X«\Y%3x6>/ ~OlW+1S8>g9?6mJ.gT\Xhtt <0Ig=ˑ_ƭ`_tM3z>> \b1Y;{S_)hW3~RB8_w6óke\_5ӂkq@h0hL)Ph"7@(dV3ϼnV(*1[򌖴j Vm8W( W2ZR22lVBU%:ԏ,Gɡǖ%?˱q`\?6&͓" -)6k{H{Ps1-rsy]FBQU?+IF Ͻ[723ӱ vў{AV̯%b"~=@'6D'=Wȑg+fˏ O8=v[j bM"`R2CJ LxW͞$6#^{Qj@GݏJ@&ĭPs:ń~D1HXZAhBvPN$ߋEY* bbD;'NVEcSJ @]oF;mj9u>M.l!ÔAM?Ѡu@\-̞?0Lrh KYozq@'h )|ˢyDx`<2RL3,r9 [5f Mä:;r ˜Ow.ZSjeMk]k8.%D|r\Gp{nN#Kb"4hApf8 oI#S)BL3P w㈳1h)j몊OMɸĦ{Ze`lXi@d(\(tZ] JcJXkSI2 -~=y88a}!i-'ǩh <zEDoP{ec"!|)1X}X&yiEFo^p&EzV /iK{vF贄rӸCcaʟ"iC"~iWQ$+qfjba/!\)aE‘ 9_EFѓ\^ G'8.yefZR7藙 2 p?zP"OIkaim7LICc11YLMfRĿ:EQlؒ?o5!k#P*7r 8 P,@ћo`Il J7'(+VrƸYu*>M>Eǿr'NM ΀z)Y_RFI;Bgߕt9AG"9S jY!}˨b>6H|U)/q! mXm @fS`%J_%AMey1{M-vz e䦢?ԩm)ii)mj`bNt^{ khSgFV'Ҍ |$cށc%qhcpBE`d0tI' ((|;`*uF"β BEQ)R'_7Z)pӘ@AxL"KE"0rIءBiӗN".+A(6;e' (9+ܥwc q97RRǨI'}Eh[״?SC"N!@~.o0o)*,!P<f(( X!*I|(8dftdL,|MMM3ޅ~}3{~>^\iKSxhY& FO8 \͜K*DZY24LyN 2 ;+8diz `m4$F@׍x,msp:a=Nafp'La_L ꒲vռW߷ݶ3Onnp &^I)y' c7ZE+@AEH?-S n-ǐt.!~>!e] {8j9@(>8JRU nX#0 h}n8=1B%O\d~Z0r7@=o~|ѺѦfuc2D$~OH>MBюUpF2/b.X\v"_6bR]wOؔe^숫sGvyPeiUTߺrKMYcmI=y}\0  åUF1\*_¿OO:NvbѼz_9*_hzob!'\*eZ0ˍ#`Wƿlſ". dh({?N-8E"%P*P:kmGmM Rd`N|-`f#u؊d$P:3 ncEs0.Z pgXڋS:vcs4@l=cG>n[m)9MD**sj( >9tҲ@y`wW6?YKu\F-qǘ6"%ڕ3I򧠍GF\ NUlwμoǞӶKa b@`/0%>EL\2މJˈ214s7 o @oF J2+e vLaR&_L" 0]4cuJJ_[U}"GvPLUl()d?ށscM(eNi49 ?kmۉ 53tŒx5!Kk ;2`Oka1cmYx[V(GkD̉*s@AkǎN j #-,ßQL?ԷҏW-4bº4-?=,}&s>&G OOS}Ȏ=lS@&Qz]ZGN;.ѧiDBb)-3/;?6HB1#ܳ*w|HgrB~O?aOÉd.?t);}Fd@->oS" 0.n*D&d#2y~$ ƔE?O㈌0rjbo|(zF-"3fW[=EّHW-iPQ{C_?&`b*o,>" a B;ϋOu!D1$w)yW}@6bzu\,@'2(liE#Ч3{[n)դ`cc̩ץѧDYmKcOg0l~w>oJOb2p'~qD]̷zܳYʗpŒS]Q)G]ojݛ>z {{导{ʂyEF ٛ} }ʄ 1-Vy٣]N«lM7&ż>%[j\^ҵ݇.BeƬTz먋 'p+臦i@;U<>YO ɪ@3#&Q~T-qK$T}`|q_̍Uc!|R샞܈?D&g)!0."Eo7%bH<)9;Df?E<bD~gB7 ybf) ẢīJfƤϤg"9kBTpdh46=#28jBoiLܥIENDB`gambas-3.16.3/app/src/gambas3/img/logo/logo.png000066400000000000000000000120541411575327000211130ustar00rootroot00000000000000PNG  IHDRgAMA asRGBPLTELiq%AT )5 !+.KX3B#32(y35)z4344, * )50 /)|;L]w#k-:*~3FZ 0Ri8H.-+0I^Of.KaXq%q &0$n5 "h `{2&t  *?QBU1=V-+?#)Dʥl#e&vTmPt3A02:,_|988?AAeMOP J#$%lܝ+ MY_eeezڈ܍;;/0/E<\]]4?.1'vvhjje*^m7y݌'#LDCbp:XxnU2re ^0>@&^-+>PX ҝizaY"3+o wIDk'ʴ"sQ;tRNS xTs6;OI)}Dn!%?Y.1i_b̅IDATxYwTSYIH!$@B HG//y )@B(A@z"H H ʌ8cGܵά}ձ͎=N/;;{{_ 2=?8wޯ|{o(999G  1aӞr {8޼؁pgpclDCTi6މaf-Nn0X^4禂K4'swHjE.2LABoD51 &߈eI]\> Fټpx>s,J)_@|I-YL[0GF- pV"&"LZs"3ϧD Z$a*,76yoeٍ%!B .K׵d:b>m<="(J(E69 DȤ aV=tlʌp*~ `L4,&*ИW]nD_-Q3ocСѫff+FJPDhخ„4Cqύ@TNWkM^lN%S݋Ɔ#Οx2-O+A} z7rt!X89'#> +"^dmp蘐`@wt6d5[՛.e9i"N8&wQOIhxgWh2!n= ͎ c+Q+*/ڛ݃@] ԗ"v;Ԏdrm8PD ʡ9Tp^2~.m@ ůFhVfBrDdZ ^V )l O<͆߉4=pRH8J`uE( (l-OМyNwc[aݥNg/K@+Gq91ss 7ћhYLfֳ Eo<{w7!Jy(-E>{k7(4Հ<Ҕ IlAeZ P,H"ܱ`}tLEX<qw.YM+`GCC&4Aj /' >-$ܳ7?X:dcg27vbȪa|#d*M}ל#>w?V;!aL3/gh4!PY ls\BHp:i?- VgPG '%Z~2Xt6 9@)eZ 8vH*AW|3֠Hҿ`͵~eFPa* g.D|0l?)-GLJEX` @R%>R;ۭѽ%n׼ڍ';> L}ꌏFR,<m~ k=9ޱoW*$)IJ*cfZt~:tN|kuj /tI:ne cZfq]aCh)kO?ӘyǻF-5+Pt[Dz5k e ?\TP]8뢈%hQ\&!g bg1N@Zo_T!A 0+"58Wwr w|jJJ>\Cώ]0T.ޔW'[jV׫k8b&`z/iШ0\}jb?sY_nIY%UV YT6sǿo$5A8ԉ%ʫ$^ӣU@0O:|`E}çNJǪN# ^1Ѕ^N-kyz$`xQ18/.]zhǏcD B&;'1ւo5{Fh,S71b@)?g.V,I~SSGfȢ/ng`*6DEϛM H.@+ x} KւDzW׎g-O&K $4<%+igɪL#_6GqdHSF$$"(/dy}zl,PHVl$a٠eTJ?EɗPXq!OX"p*U{@W?y;lrϏM2|| yeI=>]k23),OZ(Z! ǹzGq\cBt q^/ &5"WكP mWdm=6D˚*r &c=0:lD[\|kGFhJO^{**$t=׭ԛynȇʯROE$ɰ?M?=v\?-x?I~9 Z2>L'KS)N i8.Sp OAIAz\; #]iAA:fxlǡZ &;v4TEWTA *{21ә6JҖ[KK)m(-^ %]\cvD^6&՘Ӻ1lMRh݇&y8~sHռc%dKk߀) >(m34~btFu}~Ÿ7gTw_7~QQ8aI26?q_4b[,jo; -]{-viW?2⩖̩W\dz euy4 Voa3pgn(şq]a\{kA=wG  =GcX㭪吶Y}; X];^z"uj .6B7Ǥ>QYyjBo;dYVJ݆^a5kq:B5A<&_z ~\-Cak\bMIjvɥ |Vlw,)t8`<|nw%j׳p"9_ƪfyԸ\p3pL8C R3Fh6{fF+$Xucj4Y ijqq'Zt Xncc͘`e}ݶTPnl{ j^VHߞ#8~\_qj"9u^U1kja;oƦB/(w\Kv!/H`D82P]]HkQZqvoDd7RZQ<7$#)̼(eVҨ%HlR+:踮80mA`H)*j.ZIYD֨F_ރbH= ҤfU_ "H81V: ? ےAesRC7bJDz4pmO=NAOGik?"CBsN:근:5/s[zx,Itա!`SZ ;LM,b`}M~p Zs3-d t]Y$pZ05sXL]'=h?:@#1ؽ=ɦ.ZcRyޜܬl*[d(.21@r[֙ޑp+RX۳κ i;-/OAMZen WȣokN]r=vfX UGΘ>lcDӕ3(qckHof {;"J 8{W+)-es iiVHY;ISTԙ.'R `luQ 0sK\McB׸ Zr&#[$eΈZ^B;(`JVPz12Rj!BD<[klEm#E!50 :R`O"l[{tcJ* "$IO.'p E7 518*R"xetk<皼㮲lk_V9n̦^<7? #sU*m5J782 KK 2O}GoFlFlF_:*1IENDB`gambas-3.16.3/app/src/gambas3/img/logo/mageia.png000066400000000000000000000036571411575327000214070ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiq6EbBy,6O+6O?Rs6g*4L3A]:Jh.:T8JgEZ}@St*5M.9R*5M9Jh)3K7Fc8HfCXz`Z1>X?Rs1>X:Jh2@\,7P-9R?Rs1>Y@St-9RCWzEZ}2DZ}[R',8O+5M.:T?RrBTu?Qr?RsAUv:Lj=Oo:Ji8>Pp%>Oo:Ki@StZF[~1>Y2@[BWy@Ss@Ss?Rs(2IQq8He(0F4C_BVwBTv(2I+6N(1H8Ge9HfDX{%.D%.C'1GB(7,F[YG^/DXz6)dE[~b'M_a)*5L+5M*5L>JU/Y:Kj0=Xb(;MlD=On?Rr^b_?Rr<4B^5D`1>X1*J:Ki04B]=MlDXz_VATu5Da'0G&/E7FbEZ}&/E.:S%.C7GdDX{G^;1>XG\7FcaF\)3J%.C'0ET%.C%.CNM]*G\V1;_OF_MZFE\&F]@>&;`*5V**/X@St9Hf:Ki'0GF\*4L*5MEZ}/*qj2A;q:m` w.Lغ?߀#f;S}f3)u1X"E*T&nuEp[ZUV&tEMgwPXMaϯ_@KTFs :D5m}+(FIDATXc`~`6gS_)E>~<s<~lD?~<*6@fV@GV0~U8$ZBH6UV}xa3=q 6A~ml :#T MĄ.|"rB0!&43`e&+>V;30?/?/ĢJ0>SrM2Y.0Z\NJ>x % `R"Zʏd?PQWd Wks{`=iHzקO}\?&: z;QF 'o^o=p3!1Tx 쇇ϟ<b0g=v+@Sā8F9>4bs00}-YQ; 6@nݹpz&(&|bd)@1s, ?;؄*| _a@$S`U$(!EZ`7@ 51@Q^=" Ha!'hPH>|XP`c@ȅn}Trh_;4AC+ x&tn( pc1+v<@f&܄ 2YQH,{2A2TRnTDB!E/$ciA Q+ E(BLw;ժlH֔a&؀~P.`5ș[`~k+7yvz@)q9qD80ǜ)x -bMLϘj^ ;Aj4A<1hu+5;7v@SLE˖㮞ٲڏj`o-I9yr/2rk0 Z~IENDB`gambas-3.16.3/app/src/gambas3/img/logo/package-gnu.png000066400000000000000000000061361411575327000223410ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiqU1mXxyk=}8y͋AihD^#Z|ߘ7qdLGZI YU67N';Ka[-P285=RM'B"W?FH^yVC*uiq/#|d Znf564TVSUuwtª<=; mol𮯭GIFAB@$%#kh{}|hjg|qceb+,*^`]b"oZe,WT_wݛ4?Lwb4tY[Xiq[f}NCMOLDxzDnG[qxRh22i $ck$8fqϧ%o!o][@tRNSD*+QA}C;~Da#VP3TJioܙܵd^prT_gIDATXõWXSYJLbW638}f{@PHo!DEH$2:P7) 4X{[ا$ ( MBy?ጄ?NǯYLR2NN>0>m!GF_ &6n~wmޑ6x$ oMa[oi X?_F9K C|@ /io )T玪]Xir**`VQ7´ X6d >k>"Ro/9ܑ`!AVA"faHPGڛC]V@ᙴnP-~V9u_!~zб+LZNzyWX) ;tw˿:)6) XK]\Z^|fBL+`P}EhG @Z[e֢>{Yw)6O].vjry-rfm'h9p rXf5ptrwqۉ.Jbpg 5HOdݖO5'n}UUkاVeUaF> (Ɂ7U$A C6>'#Rd@YaLbc@c/-naPMʄ 侞T#.B1icQ Bɩ% ѐ>s@R.S h+[hڐP!B 2nTyJ $j.`-Df=zWEl2r*HAJ7P,{ KPxbZ Ԗgv,3͈«2e+keY_FRb+32v?>?zj9c t!t/TjQw4 #Wap=dHdsq`[JsR` tY@8#)]0sR!e$PL< +cgdݻ H[F</,X uPR9Wg:!$6ѸO~N6~V X:+Q4J&=1SP:rVMwbh*@sv;? ~--'q-x_ i;y9Ӄ5ˬxIENDB`gambas-3.16.3/app/src/gambas3/img/logo/project.png000066400000000000000000000024541411575327000216240ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL=5ë3fff``````457|HU6PO}EȂR̒9aA}LnlM4w<ƣuQv?ǟe:YΚ@NzD`8ė8B~^мbѡみf҃kMKʨhm݊Ts5<;9ŵ>ZjӍݪGiC܎ޑaxי@:6?{ >tRNSp8IDATXU{0ahMyaeZys8Vl)fOEbYZ>RӢ1!Ғl8Ҧi,'kKS2fNŹ~_pDX %U xxx4 BBBqR s===TTTA<____QQQ(((ZZZ^WWWebyOOOIIILLL***WHHHC `E A H }zzz­xP yyylll; ʱ\\\:::333MMM FFFNNNptRNS@fHIDAT8m{cA'sMl$MR۶ݵm]۶m۶ ܤy?3gKS' C쓡VO%Pи!iW \W#͎x6x]MG7Ν32mH;8EBA@%\}գ;*%f IE|؏n:xZy*HC'Q#F̈ GϟpǏMwn0v1cR ]!KS#{C7zY]abDAf(+W MY3DMAb~L$R)3J>6s&Ѣk\ޥj qvD[š(g0k Ġ .k7dŪ3(aW!&P b0.MU{b~WHF({JJjS'V>20R0+XVHmSbx]P )~eX|@'Q oz=oN`U.xmU0j6Ig="UL'AT4Z9_ޜ'FnAiGRzrp"RED|E" \61ކT# k̷: ¦ß4L0 py!nYl՗l Hi"3=‰tx]DzT*˹\sHIr=bj-TLQٱ΂UF H w KxTa*fH!UYnnRA]zrE!Wz`Essig6WT ^7Bu[FYnS:Rn@)i(hΡ֙I)6JOh҅ oMD [toll}mZ7RF{m|AP Z&!-Ԃl&J06a޹;c69J-nsJ+rhL%8;xo [I9fG'kR<2ӱ5i޻6MnɮMkҒ%.vDn^ "@?IENDB`gambas-3.16.3/app/src/gambas3/img/logo/slackware.png000066400000000000000000000074001411575327000221260ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiqhimoqvor|ctin]its}vw}go_meq^fvy]hQcsvXg[gw{gfqZliomreliqYftxkp]egpZgcmfh|ZiNfIaMeUmTlJbJaLdMePgSkWnMdMdUlPhKcRj$!/MeKcLcUmRkKcVnYpVnQiOgTkSjOfLdUmMe# +SjUnLPqNdWoOeWnOe]s# .IaLcRjQhVjLd$"2_u}Vl/,>Ui$ 2Pf+,FPgbw[q)*BdzMfri~BQf|04WH`Sh''=DUCSPSt8Asn>K96F7>kWjRh׈BNBO(%8FXLa.1P37^>M3:b04SHGQDBNFULbRhlIY9DwyYqI[YnM_4;g/0JjbC|Np}wb;M$m/$:i.;h}{?DLE}!Μ=`nDHIIBﮫ~3}ʬ77fAdJJqq^nݝq[OyYY.O8,.AXGL;zu2}|++++QQQz@*1LJ׫Ly/%%(=NSAuf֌R6Ab\ChR"o1!<ǣxR)+ Z!W*r)%%Ȯw}{|7qLSS @ NB!7v'/|c7'S•bc.DQ:V((=<mcXqR"=:Iv !֍-0Jb=m-];5%C5tZIkl7W#ߙWp/{^/p>dRZɶ37|ITX/l6CË Sʽ:r57HV'ʅ&zyf'~]B#T$ j+jq,6I#kBzL`Hš57v޽5GX{0cp8(9:YZP W3'KU8[;֭=pPQYuÑ, (غ`t(,C LM]g5}AMB3ǬK'je@A2Ƕm;,!ģp|E]Z 0qatǣ7~b^l5Dr㩼|_Ђ@B<@hQX--ࢢ".?zV81 f "9F) \ǪfUGH ;έG>_kt& ZZ5sE[S"Bxz/z쨊(! Ә5x Q5O^/[ ;hZ h0̞Gu 8(C<%o~ ԣ?ϗ w3>K>28CzdJLwV y~xdû@p\.@a%HKF*L,]L3Oii;$Z*54ݻor$F* gpV䑸3q44ͯ? Iˆ}% 9ZɔdF@+00>0D[^x3H W@ftӖ줿>-$؀daH/Im&CBf%C YK*B=x* `zQ-WJ@tۑ硐%q?'4HJJf $E`eB OC Z't[PPp<'zmYm}v").Rpj?tLh&p)Huτ88ߑB6̥`.pRdc'fZi+}%AҤ[Au: Q|v`3E4!pKvY~|r/዇}A__LW spHhrIru?4hBtGGG" JNH5fIo {-)T4 5yü [G?;%=\I% H ^s_[MSv12|Ⱥc֍ _/?-/!Lu&"ScDcӃ[Pa+k<F0dC%][Wܹv <} ː4%90`jM]&olrA8q:ag8Dh7ECA8XV}j˓%-[R !tA!Bki5m0KbRzS[we[OݽHLb9 =A(" t# tvA'Q譃_X;z٭nאy~EY㗓rL6TS8jL?t^_HoSruA6sp^^ZJ&ɓLRt:Z%z6ch/.=K,%찇+k0sI{6aA Մ“aq1)J*=jؾh(B8%p1[Ws$9%oaW'?#?-G|,;P!3mIY$3XC``> Im7&)vp/` `Dӊ&祖x'e3""?PJժFSzɩ馍MP@ !,zAVv;(G|B@(kӃ>`α}C8ʃ a@K}:b%aCjJ-2[Gik^eT6.;_#wqs3J6IENDB`gambas-3.16.3/app/src/gambas3/img/logo/suse.png000066400000000000000000000045221411575327000211330ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiqYO[OND.aYԙ)_Wxw8t2\`v6^t$dYp-r0PE_SNDt3}BSHx<|=Dx<|Co*QwYMz;r2Vzvw8]Rhfr0WM{=B`NFXMUH}@Vjz:v6z@Fv6|CRGx:y<=c^x:u4w7|AP{>mw7YMq0՚#`Tu4z=s3y;m|EJt6r.~Hւ=mcn-R}?@jdTJb{D}=s/WLDWKp.z9dv6|;s5Z6XS{>Oa"`VZ0d\r0Iq._u8-_Ux5P5nd#_VHwo^T|=*\WSKv9TIWOVLQE2d[WNYP&[RHx8 _TZMy@K}:s/z;t/H{5x5s4x7y85`W,`W!IA-MFZN`W~F-c[TKp(UH9fb-e[SVM6ib"aU4e]\R [P,dZt5MG"SK UL]QM}u3c^Jwpw4z?}BaԁdBy7n(n' SIm(o&n) SHn%m'TIm'm)l'o)n%m&o, SFo(n*o)m$l+ TH TJn)k(y7r, RHq.ֆo%[|=p's/pM΂HSyۖw3 RFijڍߦݙ沚eYNVtRNSJ^ 7/()RNkmÎpA [V]Xb<թx^ٸ̗FǾgKj"Ng^qz ~v4qI:DO?:z';L/Tϟb ^lUr^oxfyKaFV6iAC8T5]7E IDATXVgTY D@4]X؀]w-ֵ꺺{sd&3IM^7v`Grs|ᄍ 1P6|csmi97ci)>5C|K=8SUg& 01MO*a}Ɠ%%WY B K s!%2S!OzzB`L3ܷިZ7:A>#_^h]o"Atvti~څs[߼tPԇE"$oݜ^~EHYC]$ z2'_uPw!w19g %Qvu]gl` r8eԵk6W,yBŎeDhJl~6++{L3 2\+BAOd6@rR{Y1ȸ`Go #_)65`BOfpEn4׈ązW4>Pr* .kEu`#iG 6Y5+6QH qA)b9a{MrL%-q#_U\Ydчp4Q7c "w?kf,((ʪo2lFO( ɪ!ѓ_-$>XkU\!W~[1ٞtnЪ{FVr =Zk0GlT: >h wCG4hNmO,\"K*@% P>qqh,ĥ!8y"UT>D< 6j5PՍ4ΦЍ궶=@KM ~e";aXmSow hq _е<*<-xyo.u\yg#_m1? w~ ^3IENDB`gambas-3.16.3/app/src/gambas3/img/logo/ubuntu.png000066400000000000000000000041011411575327000214670ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGBPLTELiqb c bc c c c c c cc  c c c c cc c c cc c cc c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c w;tRNS J */R&. }Cz##? bL\۱i*<-T~ W ̥9V|ruJ%.ݰf{bv=֡OZTC"#%"%L  뿄,t64+&1H_W/J& Yj_ ?&<ğu]Xf`WL@F0 ?Y>W 8 byj$zXp__s>mf_ޗe%5p<AxgY06ۦ¡tńTcFJHE6a6-]vR!r8a3Ij5RXG`/-B7fC21Mg4Qa"pĒz"Ma~_Č+7"59.L+za:)M܀[01`~o D沀Y +20XC3̖ DD.e` 6 _I )q1Lem|]T|;1rTT/@$Pv7:Bq. .BDT;h.PY`o?3@7!K5rlI Mr <3LBθb8\?g.{ Ux4MX[Yva\Ő A%jXf?|ź(RŲU^GI?%u-l^g$Peh)d3pUȕkPi~+;?TwgJ[ elC)4}8x% !5PAL!BRC.#&2#pn>f-BEvp#2~]\0I:hxf@B1EvTlf*3aNIP0Lᄞfb`x0qH7m=9<duy# 8A1gatB^dD^+Y `H~IENDB`gambas-3.16.3/app/src/gambas3/img/module/000077500000000000000000000000001411575327000177705ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/module/class.png000066400000000000000000000017031411575327000216040ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLfff___```______UUUaaabbb`````````aaa```aaafff^^^___bbb___]]]^^^[[[`````````mmm``````aaa``````___ccc```ccc`````````aaa````````````______```___aaa___```___^^^aaa`````````___^^^```______``````j=AtRNSg'JQ4jOm,WzXfnN{l-IkV VIDATxis0 T*"Wz 3IwGiTwT@@@՞]߫*YT B[o&f_WO B0K aynw[vN$ɪDw@/=T4u^ 5 GA[딺k;_c'4WpKbtZ/2}{]@UՖ?."lN}tjr^X,gwl/`ИX?lt @!@AՅ%BkS1x1/^R ,hkVTޚ7Z=Ҟ;spB#EHE!΢I2nyVIl=_Ow=Wϲm:xު7{eټKv?yqhp=!ܧnUnwu7| µ=7jE)   (X /_=nm+ʀɶCvbKmȸh+o6xVO^l c`m`B]` 2/e@frTb"U@]γҩ SyVfs**6CTU ac7WM^IENDB`gambas-3.16.3/app/src/gambas3/img/module/report.png000066400000000000000000000005221411575327000220100ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL``````UUUbbbaaa```````````` tRNS /qWIDATh홱 P Elw7[B±cG?AR6CB=wzp>`!ќ(NZk6]NW_& ӣo о 8Koj)=M] @&(G_b5)|@> $^/z?z׻IENDB`gambas-3.16.3/app/src/gambas3/img/module/termform.png000066400000000000000000000002631411575327000223320ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL```EtRNS@fFIDATHc`,? @G)0èH LdIxZ`4ߎ F0H8#$IENDB`gambas-3.16.3/app/src/gambas3/img/module/test.png000066400000000000000000000007421411575327000214600ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL`````````ccc```````````` :tRNS ާ TYIDATh10arT;7Hf/@E!+cFb;~obb3ǿ> cq8زXpYJ;,`wtV熚@stVij(LDJ3#s- </e5 3@W@mh` &h$p6 6NH` hp` h`Ap S` 0}]6F} Ƌ@$:BBtRNS04C*ge{zMyqvr+puxqLsN))C4ou/ۇx۬ԯIDATxWGE6`p5K8z $$z`:ޓo; CXcnvfvv yCX!2` 2 ؟oqCۏGŮ9_S,7{oIڴvSͧko i^B̮lػ~Ts}چDLZ@j!.:}T7Kdq3%>eN=eE1o]mC|227rO6{o@A=CMwG yW*mïYoҙ{܋bC;`?ZjjJoLS_ |GЫ ~ېVCQ71PW,,pSf-;`^e"̄^arko}6&g hj9KG_*ϿҥfBOT~gn{l"c"p%N 2^ oŏ%n .DPAI\Y WK^ !)צ/*lHz(J&C4gaTNΟl+LVQ&#L@7eP._:J.y^ ! e qfUkN/NyШUQc6`&aIJ8 'ɩΉ>_ig?QZ5@*2 Xe8n#4Pժ|0;^] ) ZJ,>T& P{W Njh40hG<mz2*hP*n2`jW .?l}P>xk}o$3vg_ht8MOx0_үg[X>QU{z Z.%*{꒔mrv](.0P(^)p@*д4 ]1btq1w!I102D/ځL1w,4w[B=iRJJ{HrWBb0v3SJM\ mEJ-);^rME1C|i9;\BI.;(•Gct1fW\G\;>f B]f\:RrH㬀*-9-@A/H8@Ԏ,5|zǀ@y05rT\dX h7{n ~d".T:LǷ(yO2Hݒft[ WyB*=,+"Jb7Ws[:T _>mlIf8͍(Vհ[Pn4IHӉ/*FG#԰iP+5"ײ6iEivi+NDmNOٸD(ٺM^-׼r5wԭv85忠d@d32 Cl?ohsIENDB`gambas-3.16.3/app/src/gambas3/img/module/webpage.png000066400000000000000000000035521411575327000221150ustar00rootroot00000000000000PNG  IHDR pHYs+RPLTEGpLddd```fff```aaa``````aaaUUU`````````______```UUUfffUUU___^^^[[[___bbbaaa```______aaa```bbbaaa```aaa``````ZZZ````````````^^^````````````mmm```aaa````````````bbbaaa`````````cccfff``````^^^___jjj`````````aaa^^^aaa```___```````````````___``````aaa`````````aaa___```___aaaddd]]]```^^^```aaa]]]aaa``````]]]```aaa___```___```aaabbbaaa```^^^```___aaa`````````aaaaaa```aaa``````___```aaaaaa```___```___```___```^^^aaa```````````````aaa```___``````aaa``````___``````___bbb``````___`````````______]]]___```aaa```aaa___aaa``````______ccc```___``````aaa```aaa]]]___```aaaaaaccc___``````^^^___```Ds)tRNS d`D +I'O>B%&E"0 rX] g1qͣ-u2j^CY!6e7)_8 s;7;UgH&MZ1MH H $'@ 0E@8f |;$y T8*yY;*FY8(K#8P P% !TT}ny{9Pݲ}1OF@t ZVn@gSLQDx БT~^ Z 1xa X~` @]g;h@;CB6 DB?\ 6Luaz(o0NS`?lh sPCc"y?&S9,NjEO 6(E&"Kл< $ -dh8+zZCWj O J{:pzO/σswӇ L7efp1xjYD2#@}nd#>480[Ҝ_g r-n|9 ; x.7d4*x;?u(_A= =w47ȯ+v;JO2apMo&(#%SF_*ve Kiח=UofJtޖ=ku&x={JIeKsD5D]I963ڙUq -@.4;b]0`:65 m6AkaH;nuIR}6ܡkn|@c5 ?Qf @Aj?(pJ qSUftNeV,ۯ̓ ;~ Ŵhb-EE@3Ɔh>BhE@ >gl8v & &p I $@BH `~#M~|&*NIENDB`gambas-3.16.3/app/src/gambas3/img/symbol/000077500000000000000000000000001411575327000200105ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/img/symbol/constant.png000066400000000000000000000002121411575327000223420ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpLOO&tRNS@fIDATc`!` ȈZJA94t- I09IENDB`gambas-3.16.3/app/src/gambas3/img/symbol/control.png000066400000000000000000000002151411575327000221740ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL;%3DhtRNS@fIDATc` p@g($ fܩF%_,IENDB`gambas-3.16.3/app/src/gambas3/img/symbol/event.png000066400000000000000000000005021411575327000216340ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpL%$%&&%$&%%&;%9;(-65,Ӫ1ӫ1)-qt tRNS# M"J1jIDAT8G QT,{Z!Ilo(cJiܰ ,{IENDB`gambas-3.16.3/app/src/gambas3/img/symbol/method.png000066400000000000000000000005771411575327000220070ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpL"" %%  !!""ooffnnWWAAll**aaHHIIhhbb]S[tRNS乨[y! tsoUIDAT8͒I EEA 3fT RUW0fRkX pt]_y??!"/,2aKGn,fri6MtN{D6*qH5wֽ&H#7푛Ft?75u!  FIENDB`gambas-3.16.3/app/src/gambas3/img/symbol/property-ro.png000066400000000000000000000002141411575327000230150ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL_dtRNS@fIDATc`!Zj@ C]msIENDB`gambas-3.16.3/app/src/gambas3/img/symbol/property.png000066400000000000000000000002151411575327000224000ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL_ybtRNS@fIDATc` A & fܩE=IENDB`gambas-3.16.3/app/src/gambas3/img/symbol/s-method.png000066400000000000000000000006001411575327000222320ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL  !!ooOOnn--""cccc\\AtRNS[!y tsZb-IDAT8R , PJ+KP C@=ܒBK9HՅ|ө]J0%]rѻ1^\`P^ Cz~04ؖ@ ^0 XTF& -C,~T1sy̝{3f˝;c{uǵ5~ak 7QIENDB`gambas-3.16.3/app/src/gambas3/img/symbol/s-property-ro.png000066400000000000000000000002121411575327000232530ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL_ybtRNS@fIDATc`!` ȈZJA94t- I09IENDB`gambas-3.16.3/app/src/gambas3/img/symbol/s-property.png000066400000000000000000000002151411575327000226400ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL_ybtRNS@fIDATc` AFԪUK =U+-)MoƈIENDB`gambas-3.16.3/app/src/gambas3/img/symbol/s-special.png000066400000000000000000000005671411575327000224060ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpLPPPPOOOOOOOONNMMNNOORROOOOOOOOOOPPOOllWWPPxxssTtRNS [!yts$_IDAT8R DGcC@T;ޘ/ q 4:RJ%?s>$Wuf AVAf.(Pw&F'0s[uE. rG6XT[TY=T ?_>[n鯛6؞i;) +ZzePIENDB`gambas-3.16.3/app/src/gambas3/img/symbol/unknown.png000066400000000000000000000003411411575327000222130ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpLUUU```````````````ccc]]]ٓ~e tRNS rxHIDAT(c`b@$Hn$3g5D [@ːt@ `h0ZP8ԂY!z٪IENDB`gambas-3.16.3/app/src/gambas3/img/symbol/variable.png000066400000000000000000000002151411575327000223010ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL\tRNS@fIDATc` p@g($ fܩF%_,IENDB`gambas-3.16.3/app/src/gambas3/img/waiting.gif000066400000000000000000000230221411575327000206330ustar00rootroot00000000000000GIF89a/ꥥ򭭭䚚! NETSCAPE2.0! XMP DataXMP ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  ! /,pH,Ȥrl:ШtJZجvzxL.zn|N~R G &&D&$B  q - BLh7DER8_ " 8Dj7|Aɓ%V Ap%2 OB8ŀ (t L)S X4뉢>(P4g ([.ZWJknM(C R0a 8 _HII( '(XcCB @ $,bC˭O LH1ߪ+fl3(Fԫ+ 7/Ͽ(h& 6F(Vhfv ($h(,! 3,@@ pH\ @ .Pah,đ;s-gc PAjX,eR&Qg eZ yn ^ j^^""(^*"PQR(QD$ȟCiB3%3   ' h8Ѝ{TP' )\@А؂ ) @@ 5 H@,C"$ *1tYaL2H(8&@g˗1Jab,`hϐ"`PΪ=<! ,,@@ @pH\@Q TE,K` ŔQ"vLT!8;6RDwk|]1D $* EIc, DM $ S$rS SD'RC%bB , 4R7! -PqxR8@B$/2p #HF `ň 8p k3 )b!D:aPT&͢G@SFt6qlѰZɲ! /,@@ pH\$ Œ, hTQE2mRb!Z :aIId"Y GnCD"vXK|mm CII "}32B $a/ &C'D&2ĐD'D÷*%_ؼ߮ NR)'B :@c 0< .8D1a P$¢"I*X⢂HXaB )RdŇ:1ȤaÇV0pD"UT MZv%VL/Q۴! 3,@@ pH\$4R$BP t*h"ix9:PDzR萫&:^~9cT)I{k"~q SM' B  d$vBwCU%C113' (R&2S DURTh8 Rg .DiHD&R#SP`L`!P$!HfH!K!X\fO :'xz',`,0⦇K[QK'7alY/?!ڽ-ܻ3! .,@@ @pH\$A$Ĩt(9XaKD t\!ëSȘA nB! 1,@@ pH)PCҜ&Ũ4H$B}iB\(WkxKG,LPՂ %%o$aS 'g|j$$R0 ) x'  D  S)C0 t"C0,tD  B.E'1/-Q"!/@# ("@1ሆE4hQ+(VHA ' |\8X頦.$sR r@(DhK@p@ԗ^*B8Zz&^YDB5asd7 ! /,@@ pH|-2p 2ŨQLą4Y(2WT b,t:E*z o%bS zi'l^p)R. {p%D-0S % sC!¯.tB(C#!C$ B##D*B+ +ED88P_(PPDPH@CRP$ #(% "eVB2 ӂNB&pj /BH3'Spy Y":0l(@c Ҥ1nkڻB ! 0,A@ @pHH2 bPС˨L ĉr":QgZHW-*hqy03Ryj *a!-w)X}NO#!/,GDa%qB ++!!rC DO 0CP$$`$(P@Hh0̄he$R cFH@@H""D I!403K ,Ȍ*$Nr6pytbxCRL0@W!3hX4HQVFRC _!,Y[C Pb 'B ! 0,D@ @psadP9&' tItѫ:L"V>-W".n*_D +uweVJlo* Duz{ NC !s*rsDO) 0P %%؅`) ۸s$$` $PO A! (P⠐"H,pċ>H@{"  )#C0|ĵ@7n|I 83uL(e`q$* jNj&Š `j&"(֜ ! ),F@ Pl<0֢X PaRl1 bP8B2*^ >pƊiy0JEF oc#/-.0z 'QqSFw{b`)*pO  *' Q  `*%Q%%P %OCB )$^gB] @QPHtDH@ IDD( PH,l!G>V  t60EGV b@`01hP" C+! ',G@ `0*g gZz0,ʝVB`CtK2 6"_-PdhF+TK{d ( hh h  Q *(\(*OPO *CB)'%% %$ $ g,(0FC(<_ h$ 'b0!4 h!F @@7-4`q@4(2L3Ζ,|AP79XR! Jxӂ BZǛ `! .,D@ @pHt0JEl:c2X"cz00OEbWk, , {Oj zN )O) N (' NC *C((CB).   %%)C"% A C.p`ω @&dB@%#BSАj…C$XH OI@4@@L24Q baO8:hQp:"%T ,%ZXՂء к,,B ! 1,B@ pH,q4"ʨI->W^MkFC"/++!(TG2hx` 鈤@B0Y 0<(a@"Hr`dGD@0`@LS,Q0ɓ@@6t(РkANz!d | hQnzYL2U$0{$! 1,@D pH,lK eTXRe07D:WcvBꍫf>-Ug=0}G,,F  && , ((u ' $u( 1_ B (Y **BN  A "$ @ސ 6HH L!PI$@`cEH$%NPD7 Ȥ4͜TtACЎ(((*ѩ6,5 (Y=0! ! 2,@F @pH,rL2MJ%iVdb{dW3E!2<zp}#/- }B/z(2.00 ,   } )),})2 d B  T'( ,CO(\8AD "4Hp#BDC"D@`  PQ -v82Cr O?- (ap OA/dL4(Uh9@%J ;RvI! 2,@G @L%,dQ]Ш`2LV(V{1x"-c3 @Pl y{'~E+zzi2+#!! z#/2- $..' 0  ,2Oj  B R ) E*""HH`„  ݿ2(dpD .p" X$0<0`D@dyB% <̙sgϟAR0*ÁMxSGH8֞> @!Ѽ?wjp!a ! &,@D @Дh Ȥ̌htAbPvXZeVbXivK @{QK I& ~   ' $ *!##!!!/!""-&q..-B $Z 00B 0I ,`Ñ @% RLHa.( p"LP EP$I24)M h8@L6b"P B1dX*Q =@Q\H8P§ԠCRЂ 4h0P( u! (,@A @p(Td)Pb2b5٨(aRiepG |uxGH' G pD D ~B( ("D"%("   B*Y##+E$X/!CسV .6b% x`$0`aH<8&@ Xj$%<(a@O *\8 $,`Ɔ' P4Y UtP\ӪPF*`! Nj8@7V 0,Ȁ+]:`!3,@@ pH\ NĤrIT&sX* pНN"@$(/\`. &xJJ JI mD C $DB3"""" 3̼w$$Jx D%e+ QQ@z3xa |a (8xP( 0\lG%) aRN 'PL a 29֬ P^@ AE1x0##&YuJZ=xQ ͐BQ(HEի 0P ;gambas-3.16.3/app/src/gambas3/install/000077500000000000000000000000001411575327000173755ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/install/Makefile.am000066400000000000000000000054621411575327000214400ustar00rootroot00000000000000EXTRA_DIST = $(PACKAGE) all: @(if test "$(COMPONENT_build)" = "1"; then \ echo "Building $(COMPONENT_name) component..."; \ else \ echo "Compiling $(PACKAGE) project..."; \ fi) @(cd $(srcdir)/$(PACKAGE); \ $(GAMBAS_path)/gbc$(VERSION) $(COMPILE_FLAGS); \ $(GAMBAS_path)/gba$(VERSION)) install-exec-local: @(cd $(srcdir)/$(PACKAGE); \ if test "$(COMPONENT_build)" = "1"; then \ echo "Installing $(PACKAGE).gambas in $(GBLIBRARY_path)"; \ $(INSTALL) -d $(DESTDIR)/$(GBLIBRARY_path); \ $(INSTALL) $(PACKAGE).gambas $(DESTDIR)/$(GBLIBRARY_path)/$(COMPONENT_name).gambas; \ echo "Installing $(PACKAGE).component in $(GBLIBRARY_path)"; \ $(INSTALL) -d $(DESTDIR)/$(GBLIBRARY_path); \ $(INSTALL) .component $(DESTDIR)/$(GBLIBRARY_path)/$(COMPONENT_name).component; \ chmod a-x $(DESTDIR)/$(GBLIBRARY_path)/$(COMPONENT_name).component; \ echo "Installing $(PACKAGE).info in $(GBINFO_path)"; \ $(INSTALL) -d $(DESTDIR)/$(GBINFO_path); \ $(INSTALL) .info $(DESTDIR)/$(GBINFO_path)/$(COMPONENT_name).info; \ chmod a-x $(DESTDIR)/$(GBINFO_path)/$(COMPONENT_name).info; \ echo "Installing $(PACKAGE).list in $(GBINFO_path)"; \ $(INSTALL) .list $(DESTDIR)/$(GBINFO_path)/$(COMPONENT_name).list; \ chmod a-x $(DESTDIR)/$(GBINFO_path)/$(COMPONENT_name).list; \ if test -d .hidden/control; then \ echo "Installing controls in $(GBCONTROL_path)"; \ $(INSTALL) -d $(DESTDIR)/$(GBCONTROL_path)/$(COMPONENT_name); \ $(INSTALL) .hidden/control/*.png $(DESTDIR)/$(GBCONTROL_path)/$(COMPONENT_name); \ chmod a-x $(DESTDIR)/$(GBCONTROL_path)/$(COMPONENT_name)/*.png; \ fi \ else \ echo "Installing '$(PACKAGE)' executable in $(bindir)..."; \ $(INSTALL) -d $(DESTDIR)$(bindir); \ $(INSTALL) $(PACKAGE).gambas $(DESTDIR)$(bindir); \ ln -sf $(PACKAGE).gambas $(DESTDIR)$(bindir)/$(PACKAGE); \ if test "$(PACKAGE)" != $(PACKAGE_LCASE); then \ echo "Creating lower case symbolic link..."; \ ln -sf $(PACKAGE).gambas $(DESTDIR)$(bindir)/$(PACKAGE_LCASE); \ fi \ fi) uninstall-local: @(if test "$(COMPONENT_build)" = "1"; then \ echo "Removing $(COMPONENT_name) component..."; \ rm -f $(DESTDIR)/$(GBLIBRARY_path)/$(COMPONENT_name).gambas; \ rm -f $(DESTDIR)/$(GBLIBRARY_path)/$(COMPONENT_name).component; \ rm -f $(DESTDIR)/$(GBINFO_path)/$(COMPONENT_name).info; \ rm -f $(DESTDIR)/$(GBINFO_path)/$(COMPONENT_name).list; \ rm -rf $(DESTDIR)/$(GBCONTROL_path)/$(COMPONENT_name); \ else \ echo "Removing executable..."; \ rm -f $(DESTDIR)$(bindir)/$(PACKAGE).gambas; \ rm -f $(DESTDIR)$(bindir)/$(PACKAGE); \ rm -f $(DESTDIR)$(bindir)/$(PACKAGE_LCASE); \ fi) dist-hook: @(cd $(distdir)/$(PACKAGES); \ 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 ".kdbg*" -o -name ".svn"`;) gambas-3.16.3/app/src/gambas3/install/acinclude.m4000066400000000000000000000104511411575327000215670ustar00rootroot00000000000000####################################################################################### ## ## GB_FIND() macro is part of gambas$(VERSION) project ## by Benoit Minisini ## others are from me (Laurent Carlier) ## ####################################################################################### ## --------------------------------------------------------------------------- ## GB_INIT_PROJECT ## Initialization and checking for gambas things ## ## $1 = gambas$(VERSION) project to build ## $2 = name of the project in lowercase ## $3 = component name ## --------------------------------------------------------------------------- AC_DEFUN([GB_INIT_PROJECT], [ if !(test -e $1/.project); then AC_MSG_ERROR(Cannot find .project file for $1 !) fi AM_INIT_AUTOMAKE PACKAGE_LCASE=$2 AC_SUBST(PACKAGE_LCASE) ## List of needed components COMPONENTS=`cat $1/.project | grep "^Component=" | sed s/"Component="//g` ## Check if the project is a component COMPONENT_build=`cat $1/.project | grep "^Type=Component" | sed s/"Type=Component"/1/g` AC_SUBST(COMPONENT_build) if test "$COMPONENT_build" = "1"; then COMPONENT_name=$3 AC_SUBST(COMPONENT_name) fi AC_MSG_CHECKING(for gambas$(VERSION) binaries) GAMBAS_path=`gbx$(VERSION) -e system.path`/bin if test "$?" != "0"; then AC_MSG_RESULT(No) AC_MSG_ERROR(Failed to find gambas$(VERSION) utilities, check your gambas$(VERSION) installation !) else AC_MSG_RESULT(Ok) AC_SUBST(GAMBAS_path) fi ## Find component components path AC_MSG_CHECKING(for gambas$(VERSION) components path) GBLIBRARY_path=`gbx$(VERSION) -e component.path` if test "$?" != "0"; then AC_MSG_RESULT(No) AC_MSG_ERROR(Failed to find gambas$(VERSION) library path !) else AC_MSG_RESULT(Ok) AC_SUBST(GBLIBRARY_path) fi GBINFO_path=`echo $GBLIBRARY_path | sed s/"\/lib\/gambas$(VERSION)"/"\/share\/gambas$(VERSION)\/info"/` AC_SUBST(GBINFO_path) GBCONTROL_path=`echo $GBLIBRARY_path | sed s/"\/lib\/gambas$(VERSION)"/"\/share\/gambas$(VERSION)\/control"/` AC_SUBST(GBCONTROL_path) GBHOME_path=`gbx$(VERSION) -e user.home`/.local/lib/gambas$(VERSION) for comp in $COMPONENTS; do if test "$comp" = "$1"; then continue; fi AC_MSG_CHECKING(for $comp component) GB_FIND(${comp}.component, $GBLIBRARY_path $GBHOME_path, ./) if test "$gb_val" = "no"; then AC_MSG_RESULT(No) AC_MSG_ERROR(Failed to find $comp component !) else AC_MSG_RESULT(Ok) fi done $(EXTRA_TEST) ]) ## --------------------------------------------------------------------------- ## 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" for gb_main_dir in $2; do if test -d $gb_main_dir; then cd $gb_main_dir for gb_search_dir in $3; do for gb_dir in $gb_search_dir/ $gb_search_dir/*/ $gb_search_dir/*/*/; do gb_new_file_list="" gb_find_dir="" for gb_file in $gb_file_list; do 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 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 ]) gambas-3.16.3/app/src/gambas3/install/categories000066400000000000000000000025511411575327000214500ustar00rootroot00000000000000AudioVideo Audio Video Development Education Game Graphics Network Office Settings System Utility Building Debugger IDE GUIDesigner Profiling RevisionControl Translation Calendar ContactManagement Database Dictionary Chart Email Finance FlowChart PDA ProjectManagement Presentation Spreadsheet WordProcessor 2DGraphics VectorGraphics RasterGraphics 3DGraphics Scanning OCR Photography Publishing Viewer TextTools DesktopSettings HardwareSettings Printing PackageManager Dialup InstantMessaging Chat IRCClient FileTransfer HamRadio News P2P RemoteAccess Telephony TelephonyTools VideoConference WebBrowser WebDevelopment Midi Mixer Sequencer Tuner TV AudioVideoEditing Player Recorder DiscBurning ActionGame AdventureGame ArcadeGame BoardGame BlocksGame CardGame KidsGame LogicGame RolePlaying Simulation SportsGame StrategyGame Art Construction Music Languages Science ArtificialIntelligence Astronomy Biology Chemistry ComputerScience DataVisualization Economy Electricity Geography Geology Geoscience History ImageProcessing Literature Math NumericalAnalysis MedicalSoftware Physics Robotics Sports ParallelComputing Amusement Archiving Compression Electronics Emulator Engineering FileTools FileManager TerminalEmulator Filesystem Monitor Security Accessibility Calculator Clock TextEditor Documentation Core KDE GNOME GTK Qt Motif Java ConsoleOnly Screensaver TrayIcon Applet Shellgambas-3.16.3/app/src/gambas3/install/group/000077500000000000000000000000001411575327000205315ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/install/group/archlinux000066400000000000000000000005141411575327000224510ustar00rootroot00000000000000admin cli-mono comm database devel debug doc editors electronics embedded fonts games gnome graphics gnu-r gnustep hamradio haskell httpd interpreters java kde kernel libs libdevel lisp localization mail math misc net news ocaml oldlibs otherosfs perl php python ruby science shells sound tex text utils vcs video web x11 xfce zope gambas-3.16.3/app/src/gambas3/install/group/autotools000066400000000000000000000000051411575327000225000ustar00rootroot00000000000000none gambas-3.16.3/app/src/gambas3/install/group/debian000066400000000000000000000006101411575327000216730ustar00rootroot00000000000000admin cli-mono comm database debug devel doc editors education electronics embedded fonts games gnome gnu-r gnustep golang graphics hamradio haskell httpd interpreters introspection java javascript kde kernel libdevel libs lisp localization mail math metapackages misc net news ocaml oldlibs otherosfs perl php python ruby rust science shells sound tex text utils vcs video web x11 xfce zope gambas-3.16.3/app/src/gambas3/install/group/fedora000066400000000000000000000005531411575327000217170ustar00rootroot00000000000000Amusements Games Graphics Applications Archiving Communications Databases Editors Emulators Engineering File Internet Multimedia Productivity Publishing System Text Development Debuggers Languages Libraries System Tools Documentation System Environment Base Daemons Kernel Libraries Shells User Interface Desktops X X Hardware Support gambas-3.16.3/app/src/gambas3/install/group/mageia000066400000000000000000000024251411575327000217020ustar00rootroot00000000000000Accessibility Archiving Backup Cd burning Compression Other Communications Bluetooth Dial-Up Fax Mobile Radio Serial Telephony Databases Development Basic C C++ C# Databases Debug Erlang GNOME and GTK+ Java KDE and Qt Kernel OCaml Other Perl PHP Python Ruby Tools X11 Documentation Editors Education Emulators File tools Games Adventure Arcade Boards Cards Other Puzzles Shooter Simulation Sports Strategy Geography Graphical desktop Cinnamon Enlightenment GNOME Icewm KDE MATE Other WindowMaker Xfce Graphics 3D Editors and Converters Utilities Photography Scanning Viewers Monitoring Networking File transfer IRC Instant messaging Mail News Other Remote access WWW Office Dictionary Finance Management Organizer Utilities Spreadsheet Suite Word processor Publishing Sciences Astronomy Biology Chemistry Computer science Geosciences Mathematics Other Physics Security Shells Sound Editors and Converters Midi Mixers Players Utilities System Base Boot and Init Cluster Configuration Fonts True type Type1 X11 bitmap Internationalization Kernel and hardware Libraries Networking Packaging Printing Servers X11 Terminals Text tools Toys Video Editors and Converters Players Television Utilities gambas-3.16.3/app/src/gambas3/install/group/mandriva000066400000000000000000000020161411575327000222540ustar00rootroot00000000000000Accessibility Archiving Backup Cd burning Compression Other Books Computer books Faqs Howtos Literature Other Communications Databases Development C C++ Databases GNOME and GTK+ Java KDE and Qt Kernel Other Perl PHP Python X11 Editors Education Emulators File tools Games Adventure Arcade Boards Cards Other Puzzles Sports Strategy Graphical desktop Enlightenment FVWM based GNOME Icewm KDE Other Sawfish WindowMaker Xfce Graphics Monitoring Networking Chat File transfer Instant messaging IRC Mail News Other Remote access WWW Office Publishing Sciences Astronomy Biology Chemistry Computer science Geosciences Mathematics Other Physics Shells Sound System Base Configuration Boot and Init Hardware Networking Other Packaging Printing Fonts Console True type Type1 X11 bitmap Internationalization Kernel and hardware Libraries Servers X11 Terminals Text tools Toys Video gambas-3.16.3/app/src/gambas3/install/group/self000066400000000000000000000000051411575327000214000ustar00rootroot00000000000000none gambas-3.16.3/app/src/gambas3/install/group/slackware000066400000000000000000000005531411575327000224330ustar00rootroot00000000000000Amusements Games Graphics Applications Archiving Communications Databases Editors Emulators Engineering File Internet Multimedia Productivity Publishing System Text Development Debuggers Languages Libraries System Tools Documentation System Environment Base Daemons Kernel Libraries Shells User Interface Desktops X X Hardware Support gambas-3.16.3/app/src/gambas3/install/group/suse000066400000000000000000000145101411575327000214340ustar00rootroot00000000000000Amusements/Games/3D/Other Amusements/Games/3D/Race Amusements/Games/3D/Shoot Amusements/Games/3D/Simulation Amusements/Games/Action/Arcade Amusements/Games/Action/Breakout Amusements/Games/Action/Other Amusements/Games/Action/Race Amusements/Games/Action/Shoot Amusements/Games/Board/Card Amusements/Games/Board/Chess Amusements/Games/Board/Other Amusements/Games/Board/Pool Amusements/Games/Board/Puzzle Amusements/Games/Logic Amusements/Games/Other Amusements/Games/RPG Amusements/Games/Strategy/Other Amusements/Games/Strategy/Real Time Amusements/Games/Strategy/Turn Based Amusements/Toys/Background Amusements/Toys/Clocks Amusements/Toys/Graphics Amusements/Toys/Other Amusements/Toys/Screensavers Development/Languages/C and C++ Development/Languages/Fortran Development/Languages/Java Development/Languages/Other Development/Languages/Perl Development/Languages/Python Development/Languages/Scheme Development/Languages/Tcl Development/Libraries/C and C++ Development/Libraries/Cross Development/Libraries/GNOME Development/Libraries/Java Development/Libraries/KDE Development/Libraries/Other Development/Libraries/Parallel Development/Libraries/Perl Development/Libraries/Python Development/Libraries/Tcl Development/Libraries/X11 Development/Libraries/YaST Development/Tools/Building Development/Tools/Debuggers Development/Tools/Doc Generators Development/Tools/GUI Builders Development/Tools/IDE Development/Tools/Navigators Development/Tools/Other Development/Tools/Version Control Documentation/Howto Documentation/HTML Documentation/Man Documentation/Other Documentation/SuSE Hardware/Fax Hardware/ISDN Hardware/Joystick Hardware/Mobile Hardware/Modem Hardware/Other Hardware/Palm Hardware/Printing Hardware/Psion Hardware/Radio Hardware/Scanner Hardware/TV Hardware/UPS Productivity/Archiving/Backup Productivity/Archiving/Compression Productivity/Clustering/Computing Productivity/Clustering/HA Productivity/Databases/Clients Productivity/Databases/Servers Productivity/Databases/Tools Productivity/Editors/Emacs Productivity/Editors/Other Productivity/Editors/Vi Productivity/File utilities Productivity/Graphics/3D Editors Productivity/Graphics/Bitmap Editors Productivity/Graphics/CAD Productivity/Graphics/Convertors Productivity/Graphics/Other Productivity/Graphics/Vector Editors Productivity/Graphics/Viewers Productivity/Graphics/Visualization/Graph Productivity/Graphics/Visualization/Other Productivity/Graphics/Visualization/Raytracers Productivity/Hamradio/Fax Productivity/Hamradio/Logging Productivity/Hamradio/Morse Productivity/Hamradio/Other Productivity/Hamradio/Packet Productivity/Hamradio/Psk31 Productivity/Hamradio/Satellite Productivity/Multimedia/CD/Grabbers Productivity/Multimedia/CD/Players Productivity/Multimedia/CD/Record Productivity/Multimedia/Other Productivity/Multimedia/Sound/Editors and Convertors Productivity/Multimedia/Sound/Midi Productivity/Multimedia/Sound/Mixers Productivity/Multimedia/Sound/Players Productivity/Multimedia/Sound/Utilities Productivity/Multimedia/Sound/Visualization Productivity/Multimedia/Video/Editors and Convertors Productivity/Multimedia/Video/Players Productivity/Networking/AOLInstantMessenger Productivity/Networking/Archie Productivity/Networking/Boot/Clients Productivity/Networking/Boot/Servers Productivity/Networking/Boot/Utilities Productivity/Networking/Diagnostic Productivity/Networking/DNS/Servers Productivity/Networking/DNS/Utilities Productivity/Networking/Email/Clients Productivity/Networking/Email/Mailinglists Productivity/Networking/Email/Servers Productivity/Networking/Email/Utilities Productivity/Networking/Ftp/Clients Productivity/Networking/Ftp/Servers Productivity/Networking/ICQ Productivity/Networking/IRC Productivity/Networking/LDAP/Clients Productivity/Networking/LDAP/Servers Productivity/Networking/LDAP/Utilities Productivity/Networking/Napster Productivity/Networking/News/Clients Productivity/Networking/News/Servers Productivity/Networking/News/Utilities Productivity/Networking/NFS Productivity/Networking/NIS Productivity/Networking/Novell Productivity/Networking/Other Productivity/Networking/PPP Productivity/Networking/Radius/Clients Productivity/Networking/Radius/Servers Productivity/Networking/Routing Productivity/Networking/Samba Productivity/Networking/Security Productivity/Networking/SSH Productivity/Networking/System Productivity/Networking/Talk/Clients Productivity/Networking/Talk/Servers Productivity/Networking/Web/Browsers Productivity/Networking/Web/Frontends Productivity/Networking/Web/Proxy Productivity/Networking/Web/Servers Productivity/Networking/Web/Utilities Productivity/Office/Dictionary Productivity/Office/Finance Productivity/Office/Organizers Productivity/Office/Other Productivity/Office/Spreadsheets Productivity/Office/Suite Productivity/Other Productivity/Publishing/DocBook Productivity/Publishing/HTML/Editors Productivity/Publishing/HTML/Tools Productivity/Publishing/Other Productivity/Publishing/PDF Productivity/Publishing/Presentation Productivity/Publishing/PS Productivity/Publishing/SGML Productivity/Publishing/TeX/Base Productivity/Publishing/TeX/Fonts Productivity/Publishing/TeX/Frontends Productivity/Publishing/TeX/Utilities Productivity/Publishing/Texinfo Productivity/Publishing/Troff Productivity/Publishing/Word Productivity/Publishing/XML Productivity/Scientific/Astronomy Productivity/Scientific/Chemistry Productivity/Scientific/Electronics Productivity/Scientific/Math Productivity/Scientific/Other Productivity/Scientific/Physics Productivity/Security Productivity/Telephony/Clients Productivity/Telephony/H323/Clients Productivity/Telephony/H323/Servers Productivity/Telephony/H323/Utilities Productivity/Telephony/Servers Productivity/Telephony/SIP/Clients Productivity/Telephony/SIP/Servers Productivity/Telephony/SIP/Utilities Productivity/Telephony/Utilities Productivity/Text/Convertors Productivity/Text/Spell Productivity/Text/Utilities System/Base System/Benchmark System/Boot System/Console System/Daemons System/Emulators/Other System/Emulators/PC System/Fhs System/Filesystems System/GUI/GNOME System/GUI/KDE System/GUI/Other System/I18n/Chinese System/I18n/Japanese System/I18n/Korean System/Kernel System/Libraries System/Management System/Monitoring System/Packages System/Shells System/Sound Daemons System/X11/Displaymanagers System/X11/Fonts System/X11/Icons System/X11/Servers/XF86_3 System/X11/Servers/XF86_4 System/X11/Terminals System/X11/Utilities System/YaST gambas-3.16.3/app/src/gambas3/install/group/ubuntu000066400000000000000000000006101411575327000217730ustar00rootroot00000000000000admin cli-mono comm database debug devel doc editors education electronics embedded fonts games gnome gnu-r gnustep golang graphics hamradio haskell httpd interpreters introspection java javascript kde kernel libdevel libs lisp localization mail math metapackages misc net news ocaml oldlibs otherosfs perl php python ruby rust science shells sound tex text utils vcs video web x11 xfce zope gambas-3.16.3/app/src/gambas3/install/menu/000077500000000000000000000000001411575327000203415ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/install/menu/archlinux000066400000000000000000000013601411575327000222610ustar00rootroot00000000000000Applications Accessibility Amateur Radio Data Management Editors Education Emulators File Management Graphics Mobile Devices Network Communication File Transfer Monitoring Web Browsing Web News Office Programming Project Management Science Astronomy Biology Chemistry Data Analysis Electronics Engineering Geoscience Mathematics Medicine Physics Social Shells Sound System Administration Hardware Language Environment Monitoring Package Management Security Terminal Emulators Text TV and Radio Viewers Video Web Development Games Action Adventure Blocks Board Card Puzzles Simulation Strategy Tools Toys Help Screen Saving Locking Window Managers FVWM Modules Window Maker gambas-3.16.3/app/src/gambas3/install/menu/autotools000066400000000000000000000000051411575327000223100ustar00rootroot00000000000000none gambas-3.16.3/app/src/gambas3/install/menu/debian000066400000000000000000000013601411575327000215060ustar00rootroot00000000000000Applications Accessibility Amateur Radio Data Management Editors Education Emulators File Management Graphics Mobile Devices Network Communication File Transfer Monitoring Web Browsing Web News Office Programming Project Management Science Astronomy Biology Chemistry Data Analysis Electronics Engineering Geoscience Mathematics Medicine Physics Social Shells Sound System Administration Hardware Language Environment Monitoring Package Management Security Terminal Emulators Text TV and Radio Viewers Video Web Development Games Action Adventure Blocks Board Card Puzzles Simulation Strategy Tools Toys Help Screen Saving Locking Window Managers FVWM Modules Window Maker gambas-3.16.3/app/src/gambas3/install/menu/fedora000066400000000000000000000023171411575327000215270ustar00rootroot00000000000000Amusement Applet Archiving Audio Video Audio Midi Mixer Player Sequencer Tuner Audio Video Editing Disc Burning Music Video Player TV Development Building Debugger GUI Designer IDE Profiling Project Management Revision Control Translation Web Development Education Art Construction Music Languages Science Astronomy Biology Chemistry Geology Math Medical Software Physics Teaching Electronics Emulator Engineering File Manager Game Action Game Adventure Game Arcade Game Board Game Blocks Game Card Game Kids Game Logic Game Role Playing Simulation Sports Game Strategy Game Office Calendar Contact Management Database Dictionary Chart Finance Flow Chart PDA Presentation Spreadsheet Viewer Word Processor Graphics 2D Graphics Vector Graphics Raster Graphics 3D Graphics Scanning OCR Photograph Viewer Network Dialup EMail File Transfer Ham Radio Instant Messaging IRC Client News P2P Remote Access Telephony Web Browser Settings Accessibility Desktop Settings Hardware Settings Package Manager Screensaver Shell System Filesystem Monitor Security Terminal Emulator Tray Icon Utility Accessibility Calculator Clock Text Editor gambas-3.16.3/app/src/gambas3/install/menu/mageia000066400000000000000000000054151411575327000215140ustar00rootroot00000000000000Office # Office Accessories # Office;Utility Address Books # Office;ContactManagement Communications Fax PDA # Office;PDA Phone # Network;Telephony Other Drawing # Graphics;2DGraphics Graphs # Office;Chart Presentations # Office;Presentation Publishing # Graphics;Viewer Spreadsheets # Office;Spreadsheet Tasks Management # Office Time Management # Office;Calendar Other # Office Word processors # Office;WordProcessor Internet # Network Chat # Network File Transfer # Network;FileTransfer Instant Messaging # Network;InstantMessaging Mail # Office;Network;Email News # Network;News Video Conference # Network Other # Network Remote Access # Network;RemoteAccess Web Browsers # Network;WebBrowser Web Editors # Network;WebDevelopment More Applications Accessibility # Utility;Accessibility Communications Databases # Database Development # Development Code Generators # Development;Building Development Environments # Development;IDE Interpreters # Development Tools # Development Other # Development Documentation Other Editors # TextEditor Education Economy Geography History Languages Literature Sciences # Science Sports Other Emulators # Emulator Finances # Office;Finance Games # Game Adventure # Game;AdventureGame Arcade # Game;ArcadeGame Boards # Game;BoardGame Cards # Game;CardGame Puzzles # Game Sports # Game;SportsGame Strategy # Game;StrategyGame Other # Game Toys # Amusement Sciences # Science Artificial Intelligence # Science Astronomy # Science;Astronomy Biology # Science;Biology Chemistry # Science;Chemistry Computer Science # Science Data Visualization # Science Electricity # Science Geosciences # Science;Geology Image Processing # Science Mathematics # Science;Math Numerical Analysis # Science Parallel Computing # Science Physics # Science;Physics Robotics # Science Other # Science Shells # Shell Multimedia Graphics # Graphics Sound # Audio;AudioVideo Video # Video;AudioVideo Other System # System Archiving # Archiving Backup # Archiving CD Burning # Archiving;AudioVideo;DiscBurning Compression # Archiving Other # Archiving Configuration # Settings Boot and Init # Settings;System GNOME # Settings;DesktopSettings;GNOME Advanced # Settings;DesktopSettings;GNOME Accessibility # Settings;DesktopSettings;GNOME;Accessibility Hardware # Settings;HardwareSettings KDE # Settings;DesktopSettings;KDE Components # Settings;DesktopSettings;KDE System # Settings;DesktopSettings;KDE Networking # Settings;Network Packaging # Settings;PackageManager Printing # Settings Users # Settings Other # Settings File Tools # System;FileSystem Monitoring # System;Monitor Session Window managers Terminals # TerminalEmulator Text Tools Other gambas-3.16.3/app/src/gambas3/install/menu/mandriva000066400000000000000000000054151411575327000220720ustar00rootroot00000000000000Office # Office Accessories # Office;Utility Address Books # Office;ContactManagement Communications Fax PDA # Office;PDA Phone # Network;Telephony Other Drawing # Graphics;2DGraphics Graphs # Office;Chart Presentations # Office;Presentation Publishing # Graphics;Viewer Spreadsheets # Office;Spreadsheet Tasks Management # Office Time Management # Office;Calendar Other # Office Word processors # Office;WordProcessor Internet # Network Chat # Network File Transfer # Network;FileTransfer Instant Messaging # Network;InstantMessaging Mail # Office;Network;Email News # Network;News Video Conference # Network Other # Network Remote Access # Network;RemoteAccess Web Browsers # Network;WebBrowser Web Editors # Network;WebDevelopment More Applications Accessibility # Utility;Accessibility Communications Databases # Database Development # Development Code Generators # Development;Building Development Environments # Development;IDE Interpreters # Development Tools # Development Other # Development Documentation Other Editors # TextEditor Education Economy Geography History Languages Literature Sciences # Science Sports Other Emulators # Emulator Finances # Office;Finance Games # Game Adventure # Game;AdventureGame Arcade # Game;ArcadeGame Boards # Game;BoardGame Cards # Game;CardGame Puzzles # Game Sports # Game;SportsGame Strategy # Game;StrategyGame Other # Game Toys # Amusement Sciences # Science Artificial Intelligence # Science Astronomy # Science;Astronomy Biology # Science;Biology Chemistry # Science;Chemistry Computer Science # Science Data Visualization # Science Electricity # Science Geosciences # Science;Geology Image Processing # Science Mathematics # Science;Math Numerical Analysis # Science Parallel Computing # Science Physics # Science;Physics Robotics # Science Other # Science Shells # Shell Multimedia Graphics # Graphics Sound # Audio;AudioVideo Video # Video;AudioVideo Other System # System Archiving # Archiving Backup # Archiving CD Burning # Archiving;AudioVideo;DiscBurning Compression # Archiving Other # Archiving Configuration # Settings Boot and Init # Settings;System GNOME # Settings;DesktopSettings;GNOME Advanced # Settings;DesktopSettings;GNOME Accessibility # Settings;DesktopSettings;GNOME;Accessibility Hardware # Settings;HardwareSettings KDE # Settings;DesktopSettings;KDE Components # Settings;DesktopSettings;KDE System # Settings;DesktopSettings;KDE Networking # Settings;Network Packaging # Settings;PackageManager Printing # Settings Users # Settings Other # Settings File Tools # System;FileSystem Monitoring # System;Monitor Session Window managers Terminals # TerminalEmulator Text Tools Other gambas-3.16.3/app/src/gambas3/install/menu/self000066400000000000000000000000051411575327000212100ustar00rootroot00000000000000none gambas-3.16.3/app/src/gambas3/install/menu/slackware000066400000000000000000000023171411575327000222430ustar00rootroot00000000000000Amusement Applet Archiving Audio Video Audio Midi Mixer Player Sequencer Tuner Audio Video Editing Disc Burning Music Video Player TV Development Building Debugger GUI Designer IDE Profiling Project Management Revision Control Translation Web Development Education Art Construction Music Languages Science Astronomy Biology Chemistry Geology Math Medical Software Physics Teaching Electronics Emulator Engineering File Manager Game Action Game Adventure Game Arcade Game Board Game Blocks Game Card Game Kids Game Logic Game Role Playing Simulation Sports Game Strategy Game Office Calendar Contact Management Database Dictionary Chart Finance Flow Chart PDA Presentation Spreadsheet Viewer Word Processor Graphics 2D Graphics Vector Graphics Raster Graphics 3D Graphics Scanning OCR Photograph Viewer Network Dialup EMail File Transfer Ham Radio Instant Messaging IRC Client News P2P Remote Access Telephony Web Browser Settings Accessibility Desktop Settings Hardware Settings Package Manager Screensaver Shell System Filesystem Monitor Security Terminal Emulator Tray Icon Utility Accessibility Calculator Clock Text Editor gambas-3.16.3/app/src/gambas3/install/menu/suse000066400000000000000000000023171411575327000212460ustar00rootroot00000000000000Amusement Applet Archiving Audio Video Audio Midi Mixer Player Sequencer Tuner Audio Video Editing Disc Burning Music Video Player TV Development Building Debugger GUI Designer IDE Profiling Project Management Revision Control Translation Web Development Education Art Construction Music Languages Science Astronomy Biology Chemistry Geology Math Medical Software Physics Teaching Electronics Emulator Engineering File Manager Game Action Game Adventure Game Arcade Game Board Game Blocks Game Card Game Kids Game Logic Game Role Playing Simulation Sports Game Strategy Game Office Calendar Contact Management Database Dictionary Chart Finance Flow Chart PDA Presentation Spreadsheet Viewer Word Processor Graphics 2D Graphics Vector Graphics Raster Graphics 3D Graphics Scanning OCR Photograph Viewer Network Dialup EMail File Transfer Ham Radio Instant Messaging IRC Client News P2P Remote Access Telephony Web Browser Settings Accessibility Desktop Settings Hardware Settings Package Manager Screensaver Shell System Filesystem Monitor Security Terminal Emulator Tray Icon Utility Accessibility Calculator Clock Text Editor gambas-3.16.3/app/src/gambas3/install/menu/ubuntu000066400000000000000000000013601411575327000216060ustar00rootroot00000000000000Applications Accessibility Amateur Radio Data Management Editors Education Emulators File Management Graphics Mobile Devices Network Communication File Transfer Monitoring Web Browsing Web News Office Programming Project Management Science Astronomy Biology Chemistry Data Analysis Electronics Engineering Geoscience Mathematics Medicine Physics Social Shells Sound System Administration Hardware Language Environment Monitoring Package Management Security Terminal Emulators Text TV and Radio Viewers Video Web Development Games Action Adventure Blocks Board Card Puzzles Simulation Strategy Tools Toys Help Screen Saving Locking Window Managers FVWM Modules Window Maker gambas-3.16.3/app/src/gambas3/install/slack-desc-header000066400000000000000000000005721411575327000225630ustar00rootroot00000000000000# HOW TO EDIT THIS FILE: # The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' on # the right side marks the last column you can put a character in. You must make # exactly 11 lines for the formatting to be correct. It's also customary to # leave one space after the ':'. gambas-3.16.3/app/src/gambas3/layout/000077500000000000000000000000001411575327000172445ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/layout/$compact.layout000066400000000000000000000017601411575327000222010ustar00rootroot00000000000000# Gambas IDE layout [General] ShowMenus=False ToolboxSize=1 CloseWithMiddleClick=False ProjectFontSize=100 TitleFontSize=80 DebuggerFontSize=100 [Help] Zoom=90 [Property] Help=False [Toolbar] FMain.main="Tiny,menu-file,new-project,open-project,save-project,save-project-as,project-property,|,menu-edit,menu-project,exec,translate,|,compile,compile-all,menu-debug,start,pause,stop,step,forward,return,until,gui,|,option,menu-tool,menu-view,menu-help,~,find-project,go-back,go-forward,$btnShowMenu" FEditor.editor="Tiny" FTextEditor.text="Tiny" FConnection.connection="Tiny" FForm.form="Tiny,show-class,save,reload,run-me,|,undo,redo,|,menu,grid,tooltip,|,raise,lower,align-top,align-bottom,align-left,align-right,same-width,same-height,arrange-hcenter,arrange-vcenter,|,move-tab-first,move-tab-previous,move-tab-next,move-tab-last,show-tab,|,text-font,text-bold,text-italic,text-underline,text-zoom-in,text-zoom-out,text-zoom-normal,format-background,format-foreground,~,locked" FImageEditor.image="Tiny" gambas-3.16.3/app/src/gambas3/layout/$default.layout000066400000000000000000000005221411575327000221720ustar00rootroot00000000000000# Gambas IDE layout [General] ShowMenus=True ToolboxSize=1 CloseWithMiddleClick=False ProjectFontSize=100 TitleFontSize=80 DebuggerFontSize=100 [Help] Zoom=80 [Property] Help=True [Toolbar] FMain.main="Tiny" FEditor.editor="Tiny" FTextEditor.text="Tiny" FConnectionEditor.connection="Tiny" FForm.form="Tiny" FImageEditor.image="Tiny" gambas-3.16.3/app/src/gambas3/license000066400000000000000000000011011411575327000172650ustar00rootroot00000000000000 Gambas 3 Integrated Development Environment (c) YEAR Benoît Minisini, Fabien Bodard, Charlie Reinl, José Luis Redrejo, Robert Rowe 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, or (at your option) any later version. The Gambas font is licensed under the SIL Open Font License, Version 1.1. You will find a copy of the license inside the IDE source code, and it is also available with a FAQ at: http://scripts.sil.org/OFL gambas-3.16.3/app/src/gambas3/markdown/000077500000000000000000000000001411575327000175515ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/markdown/markdown.css000066400000000000000000000227241411575327000221140ustar00rootroot00000000000000HTML { margin: 0; padding: 0; } BODY { padding: 1em; margin: 0 auto; font-family: sans-serif; /*font-size: 10pt; font-family: default-font;*/ background: white; color: #404040; box-sizing: border-box; height: 100vh; } A { text-decoration: none; } A:link { color: #4765BF; } A:visited { color: #6547BF; } /*A[id] { position: relative; display: block; top: -1em; height: 1em; margin-bottom: -1em; pointer-events: none; }*/ P { margin-bottom: 0; margin-top: 0.75em; } H1,H2,H3,H4,H5,H6 { margin-bottom: 0; } H1,H2 { letter-spacing: 1px; /*padding: 0.2em 0;*/ /*border-bottom: solid 1px #D8D8D8;*/ /*font-weight: normal;*/ } CODE { background-color: #F4F4F4; display: inline; } PRE { background-color: #F4F4F4; display: inline-block; padding-left: 0.5em; margin: 0px; margin-top: 0.75em; white-space: pre-wrap; } HR { margin-top: 0.75em; margin-left: -0.5em; margin-right: -0.5em; padding: 0px; height: 1px; border: none; border-top: solid #D8D8D8 1px; } PRE HR { margin-bottom: -0.75em; } TABLE.table, TABLE.error { border-bottom: solid #D0D0D0 1px; border-right: solid #D0D0D0 1px; padding: 0; margin-top: 0.75em; border-spacing: 0; empty-cells: show; line-height: 1.75em; } TABLE.table > TBODY > TR > TD, TABLE.error > TBODY > TR > TD { border-top: solid #D0D0D0 1px; border-left: solid #D0D0D0 1px; padding: 0.25em 0.5em; vertical-align: top; } TABLE.table > TBODY > TR > TH, TABLE.error > TBODY > TR > TH { border-top: solid #D0D0D0 1px; border-left: solid #D0D0D0 1px; padding: 0.25em 0.5em; text-align: left; vertical-align: top; } TABLE.desc { border: solid #D8D8D8 2px; border-collapse: collapse; padding: 0px; margin-top: 0.75em; border-spacing: 0; empty-cells: show; } TABLE.desc > TBODY > TR > TD { border: none; padding: 6px 12px; } TABLE.desc > TBODY > TR > TH { text-align: left; border: none; padding: 6px 12px; } .unknown { color: red; margin-top: 0.5em; } DIV.error { color: red; /*text-shadow: red 0 0 1px;*/ padding: 2px 6px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUAAAD%2F7u7%2F7e3%2F7%2B%2F%2BPcSkAAAAA3RSTlMAfr5nEw4tAAAAOUlEQVQI113IMREAIAwEwUuFDKzgDJzFQsTQZp6v2XJpQlyGKKY4bOFqXBdX4Vp%2FpQtX4Bq4JjrkA%2BVGH43yEeBLAAAAAElFTkSuQmCC'); } DIV.message { color: red; font-style: italic; } .command { display: inline-block; margin-left: 0.5em; vertical-align: top; } DIV.table { margin-top: 0.75em; } DIV.box { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; padding: 0.5em; } DIV.info { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; padding: 0.5em; padding-left: 48px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAQlBMVEUAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F4%2B%2F6my%2FFfouU8juA3i9%2Fn8ftZn%2BReouXV5vh1r%2Bmbxe%2F8%2Ff7DagSmAAAACXRSTlMAL5jZ%2BgmZwdqDjccrAAAAnUlEQVQ4y%2B2T2w6DIBBEFRAZQBQv%2F%2F%2BrRW1apMA2Pnte9yS7gZmm%2BYuWcYELgrP2M%2B4kssjuPe%2BhjR3chcEajf40JMbJZZhGyGM%2FdHYeDI39DgbjChiwICj4kmDBgyAQ3TcDc3QpRBAAVxIckAoJv8KyrktV2ICtKuwv%2FAg3BfK7ycCQkSNDS8b%2BLI5Pi%2BO%2FxSGrd5RXpeVVUXmrvAAKHimlkIXqtwAAAABJRU5ErkJggg%3D%3D') 8px 8px no-repeat; min-height: 32px; } DIV.warning { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; padding: 8px; padding-left: 48px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABTVBMVEUAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F5cz%2Fq1j%2FqFD%2F4sb%2F%2BPH%2FpUv%2Fnz%2F%2F9%2FD%2Fypb%2FyJH%2F8%2Bf%2FoUT%2FoUL%2F8eL%2FwoT%2FvXr%2F7dr%2Fn0D%2F59D%2FuXP%2FsmX%2F%2Fv3%2F5cr%2F69b%2F3Lr%2FsWL%2FqlX%2F%2FPj%2F3Ln%2F0aP%2F%2FPn%2Fqlb%2FpEj%2F9u7%2F06j%2Fxo3%2FoEH%2F79%2F%2Funb%2F5cv%2F%2Ffz%2FsGL%2Fz5%2F%2F2rX%2FqFL%2F%2Bvb%2FvXz%2F9%2B%2F%2Fo0f%2F9ev%2FxIj%2F7dv%2FvHj%2Fq1f%2FokT3KuRtAAAAN3RSTlMAJKvu56gdJe8BwEtQA9TaBWJtCuXsEHqLFfL5IZGpI%2Fo5xzZW3gdzE%2Fsmrz%2FMAlviCXbZ8PzmANTsKgAAAT1JREFUOMuVk1dTwkAUhaMhEey9Y%2B%2FYC0eDXuyIith7QVRi%2F%2F%2BPLhLCmt1lxvOye%2Bd8M7vzzVxN%2B1dKSnWfYar7Mj9YdCURKMfikhUBAgqgAssrRBRFpbyvqsYq62kNNbVSoA7rG1lgcwv1sr6hEdv0mxiamiVAC3biOYB20Sr2be3Yc3raT3R0CkAQB6xKAkl2HKLL23f3JI5YkxXFjuMT9HoAA6dUAOgMfX9t9eP8ggcurzDgkXxNPEA3GBwSJXPA7R2GRckcQPfwjwiSeYAeEBQlUwpIOdfHxOiYKDmWTsfyPp8QEiXzeX7BOCc5l4xtZ9whjYnJguRcbMB2h9c3TBUkSwB6x%2FSMK1nyBMU%2FMKuFHMnSfGJOm8eXGvjGguaDpQYshNkfI0qCLZGhmTqKJLuGphFW1eFii5zPD%2F8qlVWc9uRAAAAAAElFTkSuQmCC') 8px 8px no-repeat; min-height: 32px; } DIV.tip { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; padding: 8px; padding-left: 48px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAANlBMVEUAAABduV1fv19fv19evl5gv2Bgv2Bev15gv2Bgv2Bfv19hwmFfwF9fvl9Zv1lfv19fv19fv18phBhlAAAAEXRSTlMAC7P8aoCg4EDAaxXZjhTT%2B7cu0agAAABZSURBVDjLY2CgOmBkYmZixKeARVBQkAWfAlagAlaKFLARUsBOQAGHIAEFnCAFXPidKCjIgdN8sH5BQW50CZAghEQAZh5ePrwKgICfMgUChKwYdcPAuGGAAQCcmhl8u8INnAAAAABJRU5ErkJggg%3D%3D') 8px 8px no-repeat; min-height: 32px; } DIV.critical { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; padding: 8px; padding-left: 48px; background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Ff33zs7uk5PnZmbiSkrgOzv%2B%2FPzzsbHjUlLfNzfkU1P639%2FlX1%2F2x8fhQEDnZ2fgPDxe2mETAAAAGXRSTlMADleYyuv7JJz2Cov8I9Iw6tGKmw2Xyfrps1b8VAAAAQRJREFUOMuNk9mWgyAQRIlb3FDjmnI3uP%2F%2FB0505hgTg8x94tAFdDddhGxcJFlRNU1VZOlCjlx1AxuGfv0Im5aNNMuLsqrKIs9S2Ja5j1MHdfNgG21Tw6GvuOuh69kbfQfP3c57GEb2wTjA%2B7vDdDBU7EA14Pabh4VuZF8YO%2FhrfXbds6%2F0tb1Uq6NhHBoEz%2F4Z6YMnaFMjJBIyxiWDRGTkfEGOiCgo%2BIIJMVFRLkscWHZLqERDxRfMSMQC4RPCJIVlChv1bHV72mrhZ51%2FN%2F3PwIhHjju0d3o%2B9nf33Dg3ureW6a%2FWm8p5LqfVev6b9ZZqg715A0qOhFIUq0mixpEUvnZ%2FAHCUY4z3Ilx4AAAAAElFTkSuQmCC') 8px 8px no-repeat; min-height: 32px; } DIV.seealso { display: inline-block; border: none; padding: 0; } DIV.example { border-left: solid 0.5em #E0E0E0; padding: 0.5em; margin-top: 0.75em; } DIV.example:before { display: block; content: '$EXAMPLE'; font-weight: bold; font-size: smaller; } DIV.example-title { color: #404040; font-weight: bold; } DIV.seealso > UL:first-child { margin-top: 0.75em; } TEXTAREA { font-family: monospace; } TABLE.index { border: none; padding: 0; margin-top: 0.75em; } TABLE.index TD { border: none; padding: 1px 6px; vertical-align: baseline; } DIV.index { display: inline-block; font-size: 85%; padding: 0; margin-top: 0.75em; } /*------------------------------------------------------------------*/ /*DIV.example:before { content: 'Example'; display: block; font-weight: bold; font-size: larger; margin-bottom: 0.75em; }*/ DIV.syntax { margin-top: 0.75em; display: inline-block; border: solid #D8D8D8 1px; background-color: #F8F8F8; padding: 0.25em 0.75em; font-family: monospace; white-space: pre-wrap; } DIV.syntax > P:last-child { margin-bottom: -0.75em; } DIV.syntax > P { line-height: 1.1em; } DIV.since { display: inline-block; background: #FF8080; color: white; font-weight: bold; padding: 0 0.5em; line-height: 1.2rem; text-transform: uppercase; font-size: 80%; } .letter { font-weight: bold; vertical-align: baseline; color: white; background-color: #606060; padding: 0 0.25em; margin-right: 0.25em; text-align: center; } TR { vertical-align: top; } TABLE.no-border { margin: 0; margin-top: 0.75em; border: none; } TABLE.no-border > TBODY > TR > TD { border: none; } TABLE.no-border > TBODY > TR > TH { border: none; } .symbol { color: black; } TABLE.symbols > TBODY > TR > TH { text-align: left; vertical-align: top; padding-right: 16px; padding-top: 16px; } TABLE.symbols > TBODY > TR > TD { vertical-align: top; padding-right: 16px; } TABLE.full { width: 100%; line-height: 1.5em; } UL,OL { padding-left: 2em; margin-bottom: 0; margin-top: 0.75em; } LI UL,LI OL { margin-top: 0; } P:first-child,UL:first-child,OL:first-child,TABLE:first-child { margin-top: 0; } H1:first-child { margin-top: 0; } DIV.table:first-child { margin-top: 0; } DIV.syntax > P:first-child { margin-top: -0.75em; } DIV.result { border: solid 1px #D8D8D8; border-top: none; background-color: #F8F8F8; } DIV.result PRE { padding: 0.5em 1em; margin: 0; } DIV.code { border: solid 1px #D8D8D8; margin-top: 0.75em; background-color: #F4F4F4; } DIV.code PRE { padding: 0.5em 1em; margin-top: 0; border: none; } IMG.screenshot { box-shadow: 0 0 0.5em rgba(0,0,0,0.25); } gambas-3.16.3/app/src/gambas3/markdown/markdown.js000066400000000000000000000047711411575327000217420ustar00rootroot00000000000000var goto_line_timer; function $(id) { return document.getElementById(id); } function do_goto_line(line) { var sel = [null, null, null]; var r1, r2; var i, n; var elt = $('l' + line); var elt_next; for (i = 0; i < sel.length; i++) { sel[i] = $('_sel' + i); if (!sel[i]) { sel[i] = document.createElement('div'); sel[i].id = '_sel' + i; sel[i].style.position = 'absolute'; sel[i].style.backgroundColor = '#FFFF80'; sel[i].style.opacity = '0.3'; sel[i].style.pointerEvents = 'none'; sel[i].style.zIndex = 1000; document.body.appendChild(sel[i]); } sel[i].style.display = 'none'; } if (!elt || elt == undefined) { document.body.scrollTop = 0; return; } r1 = elt.getBoundingClientRect(); r1.x = r1.left + document.body.scrollLeft; r1.y = r1.top + document.body.scrollTop; r1.width = r1.right - r1.left; r1.height = r1.bottom - r1.top; for (n = 1;; n++) { elt_next = $('l' + (line+1)); if (elt_next) { r2 = elt_next.getBoundingClientRect(); r2.x = r2.left + document.body.scrollLeft; r2.y = r2.top + document.body.scrollTop; r2.width = r2.right - r2.left; r2.height = r2.bottom - r2.top; } else return; /*else r2 = {x: 0, y: document.body.offsetHeight, width: document.body.offsetWidth, height: 0};*/ /*if (!elt_next || r2.y > r1.y || r2.x != r1.x)*/ break; } //alert(line + ': ' + r1.x + ' ' + r1.y + ' / ' + (line + n) + ': ' + r2.x + ' ' + r2.y); sel[0].style.left = r1.x + 'px'; sel[0].style.top = r1.y + 'px'; sel[0].style.right = '0'; sel[0].style.height = r1.height + 'px'; sel[0].style.display = 'block'; sel[1].style.left = '0'; sel[1].style.top = (r1.y + r1.height) + 'px'; sel[1].style.right = '0'; sel[1].style.height = Math.max(0, (r2.y - r1.y - r1.height)) + 'px'; sel[1].style.display = 'block'; sel[2].style.left = '0'; sel[2].style.top = r2.y + 'px'; sel[2].style.width = (r2.x + r2.width) + 'px'; sel[2].style.height = r2.height + 'px'; sel[2].style.display = 'block'; //elt.scrollIntoView({block:'center'}); //alert(document.body.scrollTop + ' / ' + ((r1.y + r2.y) / 2) + ' / ' + (document.body.offsetHeight/2)); document.body.scrollTop = (r1.y + r2.y) / 2 - window.innerHeight / 2; } function goto_line(line) { if (goto_line_timer) clearTimeout(goto_line_timer); goto_line_timer = setTimeout(function() { do_goto_line(line); goto_line_timer = undefined;}, 100); }gambas-3.16.3/app/src/gambas3/po-header.txt000066400000000000000000000004131411575327000203320ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: $(PACKAGE) $(VERSION)\n" "PO-Revision-Date: $(DATE)\n" "Last-Translator: $(NAME) <$(MAIL)>\n" "Language: $(LANG)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" gambas-3.16.3/app/src/gambas3/pot-header.txt000066400000000000000000000003551411575327000205230ustar00rootroot00000000000000# Generated by the Gambas IDE #, fuzzy msgid "" msgstr "" "Project-Id-Version: $(PACKAGE) $(VERSION)\n" "POT-Creation-Date: $(NOW)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" gambas-3.16.3/app/src/gambas3/shortcut.desktop000066400000000000000000000002221411575327000211710ustar00rootroot00000000000000[Desktop Entry] Type=Application Encoding=UTF-8 Exec='$(EXEC)' Icon=$(ICON) Name=$(NAME) StartupNotify=true Terminal=$(TERMINAL) TerminalOptions= gambas-3.16.3/app/src/gambas3/snippets000066400000000000000000000137361411575327000175310ustar00rootroot00000000000000[Snippets] Count=94 Snippet[1]="fo\nFor ${1:Var} = ${2:Start} To ${3:End}\n\t${}\nNext" Snippet[2]="fe\nFor Each ${1:Var} In ${2:Collection}\n\t${}\nNext" Snippet[3]="if\nIf ${1:Test} Then\n\t${}\nEndif" Snippet[4]="ie\nIf ${1:Test} Then\n\t${2}\nElse\n\t${3}\nEndif" Snippet[5]="ps\nPublic Sub ${1:Name}(${2:Arguments})\n\n\t${}\n\nEnd" Snippet[6]="pf\nPublic Function ${1:Name}(${2:Arguments}) As ${3:ReturnType}\n\n\t${}\n\nEnd" Snippet[7]="sps\nStatic Public Sub ${1:Name}(${2:Arguments})\n\n\t${}\n\nEnd" Snippet[8]="spf\nStatic Public Function ${1:Name}(${2:Arguments}) As ${3:ReturnType}\n\n\t${}\n\nEnd" Snippet[9]="s\nPrivate Sub ${1:Name}(${2:Arguments})\n\n\t${}\n\nEnd" Snippet[10]="f\nPrivate Function ${1:Name}(${2:Arguments}) As ${3:ReturnType}\n\n\t${}\n\nEnd" Snippet[11]="ss\nStatic Private Sub ${1:Name}(${2:Arguments})\n\n\t${}\n\nEnd" Snippet[12]="sf\nStatic Private Function ${1:Name}(${2:Arguments}) As ${3:ReturnType}\n\n\t${}\n\nEnd" Snippet[13]="d\nDim ${1:Var} As ${2:Type}" Snippet[14]="v\nPrivate $${1:Var} As ${2:Type}" Snippet[15]="pv\nPublic ${1:Var} As ${2:Type}" Snippet[16]="spv\nStatic Public ${1:Var} As ${2:Type}" Snippet[17]="sv\nStatic Private $${1:Var} As ${2:Type}" Snippet[18]="pc\nPublic Const ${1:Name} As ${2:Type} = ${3:Value}" Snippet[19]="c\nPrivate Const ${1:Name} As ${2:Type} = ${3:Value}" Snippet[20]="pr\nProperty ${1:Name} As ${2:Type}" Snippet[21]="prr\nProperty Read ${1:Name} As ${2:Type}" Snippet[22]="spp\nStatic Property ${1:Name} As ${2:Type}" Snippet[23]="sppr\nStatic Property Read ${1:Name} As ${2:Type}" Snippet[24]="wh\nWhile ${1:Test}\n\t${}\nWend" Snippet[25]="re\nRepeat\n\t${}\nUntil ${1:Test}" Snippet[26]="do\nDo\n\t${}\nLoop" Snippet[27]="w\nWith ${1:Expression}\n\t${}\nEnd With" Snippet[28]="op\n${1:File} = Open ${2:Path} For ${3:Mode}" Snippet[29]="se\nSelect ${1:Expression}\n\tCase ${2:Compare}\n\t\t${3}\n\tCase ${4:Compare}\n\t\t${5}\n\tDefault\n\t\t${6}\nEnd Select" Snippet[30]="_n\nPublic Sub _new(${1:Arguments})\n\n\t${}\n\nEnd" Snippet[31]="_g\nPublic Function _get(${1:Indexes}) As ${2:Type}\n\n\t${}\n\nEnd" Snippet[32]="_p\nPublic Sub _put(${1:Value} As ${2:Type}, ${3:Indexes})\n\n\t${}\n\nEnd" Snippet[33]="_c\nPublic Function _compare(${1:Other} As ${2:Type}) As Integer\n\n\t${}\n\nEnd" Snippet[34]="ev\nEvent ${1:Name}" Snippet[35]="gpl\n'\n' ${1:$TITLE}\n' ${2:$DESCRIPTION}\n' \n' Copyright (C) ${3:$AUTHORS}\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 2 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, write to the Free Software\n' Foundation, Inc., 51 Franklin St, Fifth Floor, \n' Boston, MA 02110-1301 USA\n'\n" Snippet[36]="main\nPublic Sub Main()\n\n\t${}\n\nEnd\n" Snippet[37]="r\nReturn " Snippet[38]="di\nDim i${1:Var} As Integer" Snippet[39]="db\nDim b${1:Var} As Boolean" Snippet[40]="ds\nDim s${1:Var} As String" Snippet[41]="dc\nDim c${1:Var} As Collection" Snippet[42]="df\nDim f${1:Var} As Float" Snippet[43]="da\nDim a${1:Var} As ${2:Type}[]" Snippet[44]="vi\nPrivate $i${1:Var} As Integer" Snippet[45]="vb\nPrivate $b${1:Var} As Boolean" Snippet[46]="vs\nPrivate $s${1:Var} As String" Snippet[47]="vc\nPrivate $c${1:Var} As Collection" Snippet[48]="vf\nPrivate $f${1:Var} As Float" Snippet[43]="va\nPrivate a${1:Var} As ${2:Type}[]" Snippet[49]="pvi\nPublic ${1:Var} As Integer" Snippet[50]="pvb\nPublic ${1:Var} As Boolean" Snippet[51]="pvs\nPublic ${1:Var} As String" Snippet[52]="pvc\nPublic ${1:Var} As Collection" Snippet[53]="pvf\nPublic ${1:Var} As Float" Snippet[54]="pva\nPublic ${1:Var} As ${2:Type}[]" Snippet[55]="svi\nStatic Private $i${1:Var} As Integer" Snippet[56]="svb\nStatic Private $b${1:Var} As Boolean" Snippet[57]="svs\nStatic Private $s${1:Var} As String" Snippet[58]="svc\nStatic Private $c${1:Var} As Collection" Snippet[59]="svf\nStatic Private $f${1:Var} As Float" Snippet[60]="sva\nStatic Private $a${1:Var} As ${2:Type}[]" Snippet[61]="spvi\nStatic Public ${1:Var} As Integer" Snippet[62]="spvb\nStatic Public ${1:Var} As Boolean" Snippet[63]="spvs\nStatic Public ${1:Var} As String" Snippet[64]="spvc\nStatic Public ${1:Var} As Collection" Snippet[65]="spvf\nStatic Public ${1:Var} As Float" Snippet[66]="spva\nStatic Public ${1:Var} As ${2:Type}[]" Snippet[67]="todo\n' TODO: " Snippet[68]="note\n' NOTE: " Snippet[69]="fixme\n' FIXME: " Snippet[70]="dai\nDim a${1:Var} As Integer[]" Snippet[71]="dab\nDim a${1:Var} As Boolean[]" Snippet[72]="das\nDim a${1:Var} As String[]" Snippet[73]="dac\nDim a${1:Var} As Collection[]" Snippet[74]="daf\nDim a${1:Var} As Float[]" Snippet[75]="vai\nPrivate $a${1:Var} As Integer[]" Snippet[76]="vab\nPrivate $a${1:Var} As Boolean[]" Snippet[77]="vas\nPrivate $a${1:Var} As String[]" Snippet[78]="vac\nPrivate $a${1:Var} As Collection[]" Snippet[79]="vaf\nPrivate $a${1:Var} As Float[]" Snippet[80]="svai\nStatic Private $a${1:Var} As Integer[]" Snippet[81]="svab\nStatic Private $a${1:Var} As Boolean[]" Snippet[82]="svas\nStatic Private $a${1:Var} As String[]" Snippet[83]="svac\nStatic Private $a${1:Var} As Collection[]" Snippet[84]="svaf\nStatic Private $a${1:Var} As Float[]" Snippet[85]="pvai\nPublic {1:Var} As Integer[]" Snippet[86]="pvab\nPublic {1:Var} As Boolean[]" Snippet[87]="pvas\nPublic {1:Var} As String[]" Snippet[88]="pvac\nPublic {1:Var} As Collection[]" Snippet[89]="pvaf\nPublic {1:Var} As Float[]" Snippet[90]="spvai\nStatic Public ${1:Var} As Integer[]" Snippet[91]="spvab\nStatic Public ${1:Var} As Boolean[]" Snippet[92]="spvas\nStatic Public ${1:Var} As String[]" Snippet[93]="spvac\nStatic Public ${1:Var} As Collection[]" Snippet[94]="spvaf\nStatic Public ${1:Var} As Float[]" gambas-3.16.3/app/src/gambas3/support.txt000066400000000000000000000055711411575327000202140ustar00rootroot0000000000000060 Maurizio Da Lio 37 GNU/Linex 33 Radoslav Dejanovic 26 Chris McLennan 24 David Müller 24 Ricardo Díaz Martin 18 Kari Laine 18 Jon Nicholson 16 DistroWatch.com 16 Brian Grindley 15 Yvick Miossec 15 Christian Henri Fischer 13 Gianluigi Gradaschi 12 Leo Barnhoorn 12 Eric Damron 12 Hans-Martin Bundeshund 12 Michael Zbinden 12 Eight Virtues 12 Laurent Carlier 12 Gerry Douglas 12 José Ignacio Dominguez Romero 12 Paolo Milliery 12 Kitiipong Mapagdee 12 Jacky Tripoteau 12 Edward Kelm 11 Sharon Mayost (שרון מיוסט) 10 Thierry Senges 10 Nando Favaro 9 Technical Racing Products 9 David Losada 8 Laurent Gallego 8 Mark Dootson 8 Two-Second Software 8 Boris Diskus 8 Hermann Friedhoff 8 Mohee Jarada 8 Hugo Sutherland 8 Phil Denby 8 Evan Owen 8 Mario Carena 8 Christian Beck 8 Joel Barnett 7 John Laurence 7 Roy Jones 7 Nicola Giacobbe 7 Robert Blick 6 Yves Ribéreau 6 Alberto Alday 6 Terry Blunt 6 David Nelson 6 Leonardo Miliani 6 Thierry Lescoat 6 Charles Guerin 6 Pearces Hardware 6 Adrian Nicol 6 Olivier Cruilles 6 Thomas Westhoff 6 Louis W Adams Jr 6 Santos Fernández Vázquez 6 Adolf J. Winterer 6 Alexander G Schaller 6 Randall Wilkinson 6 Ron Klinkien 6 David Villalobos 6 Gordon Karnauka 5 Pierre Chassagneux 5 Igor Furlan 5 Fernando J Parra Velandia 5 Steven Heather 5 David Asorey Alvarez 5 Jorge Enguidanos Naranjo 5 Mike Daugird 5 Andrea Chabala 5 Peter Lang 5 Amos Bilardo 5 Gianni Piccini 5 Enrico Righetto 5 Franck Tomesch 5 Salim Safran 5 Antonio Giovanni Di Motta 5 Michael Perryman 5 Stefan Sprickmann 5 Shant Katcherian 5 Donald Montaine 5 J-M. Blandin 5 Hans Binder 5 Christopher Bray 4 James Skagg 4 Frank Berg 4 Robin Hahn 4 ViridumSoft 4 Allen Murphy 4 Kenneth Gerhardstein 4 Serge Derrick 4 Jorge Carrión 4 Vincent Bermel 3 Dallen Wilson 3 Vincent Benner 3 Luciano Tomé dos Santos 3 Ron Onstenk 3 Luca De Giorgi 3 Stefano Palmeri 3 Giorigio Pontremolesi 3 N. Althuisius 3 Robert Roomberg 3 Emil Tchecov 3 Candice Menat 3 Daniel Bassa 3 Richard Englert 3 Netsinerji Ticaret Cemalettin Polat 3 Sandro Catallo 3 Dimosthenis Koptsis 3 Luca Brandani 3 Frank Tomesch 3 Nicola Giacobbe 3 John Tsatsakis 3 Peter Garlick 3 Milton Gallinger 3 Eric Villeminot 3 Pablo Garcia Morano 3 Jean Charles Authier 3 Torsten Gaidies 3 Andy Wood 3 James Carver 3 Rainer Hirthammer 3 Twitch CalumaXs 3 Peter Pach 3 Andres Carranza Silva 3 DaifNet 3 Alessandri Guzman Abad 2 Eloy Velázquez López 2 Keian Rao Haau 2 Reza Salari 2 Vincenzo Domenico Femia 2 Yannick Butin 2 Sergio Caparrós 2 Jason Scurtu 2 Gaja Sophie Peters 2 Pier Sante Zaccheroni 2 Joris Alders 2 Jason Scurtu 2 Ľuboš Ilenčík 2 Jose Aguilar Vega 2 Olivier Reichelt 2 Manfred Heyen 2 John Terry 2 Timucin Kanatli 2 Brice Vidal 2 Mathew Rule 2 Daniel Reumerman 2 Francisco Mora Sánchez 1 Louviaux 1 Cooke Dylan 1 Ľuboš Ilenčík 1 Leonardo Suárez Arce 1 Marco Iosif Constantinescu 1 Rodrigo Sanchez Reyes 1 José Robson Araujo Silva gambas-3.16.3/app/src/gambas3/tags.txt000066400000000000000000000002371411575327000174300ustar00rootroot00000000000000Audio Database Example Gambas 3.6 Gambas 3.7 Gambas 3.8 Gambas 3.9 Game IDEPlugin Image JustInTime Library Multimedia MySQL OpenGL PostgreSQL SQLite Video Web gambas-3.16.3/app/src/gambas3/template/000077500000000000000000000000001411575327000175425ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/template/CClass.class000066400000000000000000000001111411575327000217320ustar00rootroot00000000000000' Gambas class file @IF COMPONENT EXPORT @ENDIF PUBLIC SUB _new() END gambas-3.16.3/app/src/gambas3/template/CContainer.class000066400000000000000000000001141411575327000226120ustar00rootroot00000000000000' Gambas class file EXPORT INHERITS UserContainer PUBLIC SUB _new() END gambas-3.16.3/app/src/gambas3/template/CControl.class000066400000000000000000000005641411575327000223210ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Sub _new() Dim hLabel As Label hLabel = New Label(Me) As "MyLabel" hLabel.Text = "Gambas!" hLabel.Font = Font["+4,Bold,Italic"] hLabel.Border = Border.Plain End Public Sub MyLabel_Enter() Last.Text = "Gambas Almost Means BASIC!" End Public Sub MyLabel_Leave() Last.Text = "Gambas!" End gambas-3.16.3/app/src/gambas3/template/FMain.class000066400000000000000000000001111411575327000215540ustar00rootroot00000000000000' Gambas class file Public Sub _new() End Public Sub Form_Open() End gambas-3.16.3/app/src/gambas3/template/FMain.form000066400000000000000000000001001411575327000214100ustar00rootroot00000000000000# Gambas Form File 3.0 { FMain Form MoveScaled(0,0,50,50) } gambas-3.16.3/app/src/gambas3/template/FTest.class000066400000000000000000000001111411575327000216070ustar00rootroot00000000000000' Gambas class file Public Sub _new() End Public Sub Form_Open() End gambas-3.16.3/app/src/gambas3/template/FTest.form000066400000000000000000000000771411575327000214600ustar00rootroot00000000000000# Gambas Form File 3.0 { FTest Form MoveScaled(0,0,50,50) } gambas-3.16.3/app/src/gambas3/template/MMain.module000066400000000000000000000000551411575327000217520ustar00rootroot00000000000000' Gambas module file Public Sub Main() End gambas-3.16.3/app/src/gambas3/template/MTest.module000066400000000000000000000001361411575327000220050ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hClass As CClass hClass = New CClass End gambas-3.16.3/app/src/gambas3/template/_project000066400000000000000000000024561411575327000213010ustar00rootroot00000000000000# Gambas Project File 3.0 Title=$(TITLE) @ @IF CONSOLE OR GAME OR WEB @IF COMPONENT Startup=MTest @ELSE Startup=MMain @ENDIF @ENDIF @IF GRAPHIC @IF COMPONENT Startup=FTest @ELSE Startup=FMain @ENDIF @ENDIF @ @IF DATABASE Component=gb.db @ENDIF @ @IF NETWORK Component=gb.net Component=gb.net.curl Component=gb.net.smtp @ENDIF @ @IF REGEXP Component=gb.pcre @ENDIF @ @IF SETTINGS Component=gb.settings @ENDIF @ @IF SCIENCE Component=gb.gsl @ENDIF @ @IF VISUAL Component=gb.vb @ENDIF @ @IF XML Component=gb.xml Component=gb.xml.xslt @ENDIF @ @IF OPENGL Component=gb.opengl @ENDIF @IF GRAPHIC Component=gb.image @IF GTK Component=gb.gtk Component=gb.form @IF OPENGL Component=gb.gtk.opengl @ENDIF @ENDIF @IF QT Component=gb.qt4 Component=gb.qt4.ext Component=gb.form @IF OPENGL Component=gb.qt4.opengl @ENDIF @ENDIF @IF GUI Component=gb.gui Component=gb.form @IF OPENGL Component=gb.gui.opengl @ENDIF @ENDIF @IF DATABASE Component=gb.db.form @ENDIF @ENDIF @ @IF IMAGE Component=gb.image.effect @ENDIF @ @IF GAME Component=gb.image Component=gb.image.io Component=gb.sdl Component=gb.sdl.sound @ENDIF @ @IF WEB Component=gb.web @ENDIF @ @IF TRANSLATE Translate=1 Language=$(LANGUAGE) @ENDIF @IF VISUAL ControlPublic=1 ModulePublic=1 @ENDIF @IF COMPONENT MakeComponent=1 @ENDIF gambas-3.16.3/app/src/gambas3/template/ccontainer.png000066400000000000000000000031061411575327000223750ustar00rootroot00000000000000PNG  IHDR szz IDATXåklwfegD5HH|t劫~rrc@Z)5'Wkcp˄]4oژ*yck`0 X͏ᑟCcyT?vKFC0*ݡ%ECc g]!aqTDʊL1i)荷 yV< MJSxIˋu$"`":ACUr# v5X8| ƍ$8*EX&7v Kc xPۖ/Д`_ d_FP䔠tGèsuZ'ʗ1 "d&F"^K`阋mZs'd6P`@""10S3u\$lCxQ"cQӋPdfڼFP鱹{;͋lETD8&OۏO?)-dLاҍkSa}"rVWvooӶw}3ru᪣@ !3\NQzT$Zө6jr޳>;p8 3SN|<=]=8p}lrHD̆;Ǫuvۊf0.q DAEҩ!!g?o[?LXJQŤ&td_y78 LN)=;?(={p0V5-HDDRv!zS7W?z.mz:v{zkŪfR }9Yx/=*zڃnD=uu`-!5mƷ[s%w%bwֵJj+ifpIT)s޽mY &^Chľ؝|=廸IENDB`gambas-3.16.3/app/src/gambas3/template/ccontrol.png000066400000000000000000000031061411575327000220730ustar00rootroot00000000000000PNG  IHDR szz IDATXåklwfegD5HH|t劫~rrc@Z)5'Wkcp˄]4oژ*yck`0 X͏ᑟCcyT?vKFC0*ݡ%ECc g]!aqTDʊL1i)荷 yV< MJSxIˋu$"`":ACUr# v5X8| ƍ$8*EX&7v Kc xPۖ/Д`_ d_FP䔠tGèsuZ'ʗ1 "d&F"^K`阋mZs'd6P`@""10S3u\$lCxQ"cQӋPdfڼFP鱹{;͋lETD8&OۏO?)-dLاҍkSa}"rVWvooӶw}3ru᪣@ !3\NQzT$Zө6jr޳>;p8 3SN|<=]=8p}lrHD̆;Ǫuvۊf0.q DAEҩ!!g?o[?LXJQŤ&td_y78 LN)=;?(={p0V5-HDDRv!zS7W?z.mz:v{zkŪfR }9Yx/=*zڃnD=uu`-!5mƷ[s%w%bwֵJj+ifpIT)s޽mY &^Chľ؝|=廸IENDB`gambas-3.16.3/app/src/gambas3/template/list000066400000000000000000000004611411575327000204410ustar00rootroot00000000000000_project @IF CONSOLE OR GAME OR WEB @IF COMPONENT CClass.class MTest.module @ELSE MMain.module @ENDIF @ENDIF @IF GRAPHIC @IF COMPONENT CControl.class CContainer.class FTest.class FTest.form .hidden/control/ccontrol.png .hidden/control/ccontainer.png @ELSE FMain.class FMain.form @ENDIF @ENDIF gambas-3.16.3/app/src/gambas3/theme/000077500000000000000000000000001411575327000170315ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/theme/amber000066400000000000000000000007171411575327000200470ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Keyword="#DD9300,Bold" Function="#DD4A00" Operator="#DD4A00,Bold" Symbol="#202020" Number="#0000FF" String="#00C000" Comment="#FFD480" Breakpoint="#FF5F5F" Current="#FFAA00" Datatype="#DD9300" Selection="#F4B679" Highlight="#CF9FFF" CurrentLine="#FFEFCF" Error="#028078,Underline" Help="#FFD480,Bold" Preprocessor="#FF00FF,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/amethyst000066400000000000000000000007351411575327000206170ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Keyword="#BF00FF,Bold" Function="#FF00FF" Operator="#FF00FF,Bold" Symbol="#000000" Number="#808000" String="#FF8000" Comment="#BF7FFF,Italic" Breakpoint="#FF5F5F" Current="#EFBFFF" Datatype="#BF00FF" Selection="#E0AAE0" Highlight="#9FFF9F" CurrentLine="#F9E7FF" Error="#008000,Underline" Help="#BF7FFF,Bold,Italic" Preprocessor="#0000FF,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/blues000066400000000000000000000007011411575327000200640ustar00rootroot00000000000000[Theme] Background="#143250" Normal="#BFBFBF" Keyword="#80CEFF" Datatype="#0094F0" Function="#FFFFFF" Operator="#F0AB4A,Bold" Symbol="#BFBFBF" Number="#D96D6D" String="#FFFF80" Comment="#3F7F3F" Help="#BFBFBF,Bold" Preprocessor="#B94B4B,Bold" Breakpoint="#BF4749" Current="#5F5FBF" Selection="#1F5F97" Highlight="#0055FF" CurrentLine="#00376F" Error="#D96D6D" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/emerald000066400000000000000000000007351411575327000203720ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Highlight="#FFCF9F" Selection="#B0F0D0" Keyword="#00C0A0,Bold" Datatype="#00806B" Operator="#00C000,Bold" Function="#00C000" Symbol="#000000" Number="#FF00FF" String="#00007F" Comment="#805500,Italic" Breakpoint="#FF5F5F" Current="#BFFFBF" CurrentLine="#E7FFE7" Error="#800080,Underline" Help="#805500,Bold,Italic" Preprocessor="#FF8000,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/gambas000066400000000000000000000007541411575327000202140ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Keyword="#000000,Bold" Datatype="#DF6B00,Bold" Function="#3398C3,Bold" Operator="#000000,Bold" Symbol="#000000" Number="#FF0000,Bold" String="#7F0000" Comment="#888786,Italic" Help="#888786,Bold,Italic" Preprocessor="#006E28,Bold" Breakpoint="#FF5F5F" Current="#42C9FF" Selection="#A4D9F0" Highlight="#8BDF37" CurrentLine="#E7F7FF" Error="#BF0303,Underline" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#FFFF7F" gambas-3.16.3/app/src/gambas3/theme/obsidian000066400000000000000000000007361411575327000205520ustar00rootroot00000000000000[Theme] Background="#000000" Normal="#FFFFFF" Keyword="#F0F000,Bold" Function="#7F7FFF" Operator="#FF00FF,Bold" Symbol="#E0E0E0" Number="#808000" String="#FF0000" Comment="#BF7FFF,Italic" Breakpoint="#FF5F5F" Current="#607080" Datatype="#FF5F5F" Selection="#9000C0" Highlight="#5FC08E" CurrentLine="#303030" Error="#C00000,Underline" Help="#BF7FFF,Bold,Italic" Preprocessor="#00C000,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/pastel000066400000000000000000000007011411575327000202420ustar00rootroot00000000000000[Theme] Background="#042C37" Normal="#BBD2D2" Keyword="#2BA8C8" Datatype="#ACEE90" Function="#FEF9ED" Operator="#F17F7F" Symbol="#C5DEDE" Number="#ECB075,Bold" String="#FEFEBE" Comment="#266F82" Help="#C3DCDC,Bold" Preprocessor="#EB3632,Bold" Breakpoint="#280000" Current="#355B82" Selection="#000014" Highlight="#2F8DA0" CurrentLine="#003846" Error="#EF5454" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/quest000066400000000000000000000007351411575327000201220ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Keyword="#000000,Bold" Datatype="#0057AE" Function="#0095FF" Operator="#000000,Bold" Symbol="#000000" Number="#B08000" String="#BF0303" Comment="#888786,Italic" Breakpoint="#FF5F5F" Current="#BFDFFF" Selection="#81AFDE" Highlight="#FFFF00" CurrentLine="#E7F3FF" Error="#BF0303,Underline" Help="#888786,Bold,Italic" Preprocessor="#006E28,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/quick000066400000000000000000000007011411575327000200660ustar00rootroot00000000000000[Theme] Background="#003F77" Normal="#BFBFBF" Highlight="#BF5C00" Selection="#1F5F97" Keyword="#BFBFBF" Datatype="#9FFF9F" Operator="#E0E000,Bold" Function="#BFBFFF" Symbol="#FFFFFF" Number="#FF9F9F" String="#C0C0FF" Comment="#5FBF5F" Breakpoint="#BF4749" Current="#5F5FBF" CurrentLine="#00376F" Error="#808000" Help="#5FBF5F,Bold" Preprocessor="#FF0000,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/ruby000066400000000000000000000007351411575327000177420ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Highlight="#AAEEFF" Selection="#E0A9A9" Keyword="#FF3F3F,Bold" Datatype="#FF3F3F" Operator="#C00000,Bold" Function="#C00000" Symbol="#000000" Number="#00C000" String="#808000" Comment="#FF8000,Italic" Breakpoint="#FF5F5F" Current="#FFBFBF" CurrentLine="#FFE7E7" Error="#008000,Underline" Help="#FF8000,Bold,Italic" Preprocessor="#0000FF,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/sapphire000066400000000000000000000007201411575327000205660ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Keyword="#0080FF,Bold" Function="#0000FF" Operator="#0000FF,Bold" Symbol="#000000" Number="#FF0000" String="#FF00FF" Comment="#7FBFFF" Breakpoint="#FF5F5F" Current="#BFDFFF" Datatype="#0080FF" Selection="#DFECFF" Highlight="#E0E000" CurrentLine="#E7F3FF" Error="#808000,Underline" Help="#7FBFFF,Bold" Preprocessor="#00C000,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/visual000066400000000000000000000007351411575327000202640ustar00rootroot00000000000000[Theme] Background="#FFFFFF" Normal="#000000" Highlight="#5FFFFF" Selection="#9DA2CC" Keyword="#0006FF,Bold" Datatype="#000066" Operator="#000066,Bold" Function="#000066" Symbol="#000066" Number="#000000" String="#558888" Comment="#008800,Italic" Breakpoint="#FF5F5F" Current="#BFBFFF" CurrentLine="#E7F3FF" Error="#004040,Underline" Help="#008800,Bold,Italic" Preprocessor="#808000,Bold" Escape="String,Bold,Dotted" Label="Normal,Dotted" Constant="Number" Alternate="#E0E0E0" gambas-3.16.3/app/src/gambas3/theme/zen000066400000000000000000000006651411575327000175570ustar00rootroot00000000000000[Theme] Background="#042C37" Normal="#BBD2D2" Keyword="#2BA8C8" Constant="#ECB075" Datatype="#ACEE90" Function="#FEF9ED" Operator="#F17F7F" Symbol="#C5DEDE" Label="#BBD2D2,Dotted" Number="#ECB075" String="#FEFEBE" Escape="#FFFF7F,Dotted" Comment="#266F82" Help="#8EA0A0" Preprocessor="#EB3632,Bold" Breakpoint="#FF7F7F" Current="#355B82" Selection="#1C5260" Highlight="#2F89A0" CurrentLine="#003846" Error="#EF5454" Alternate="#404040" gambas-3.16.3/app/src/gambas3/tips/000077500000000000000000000000001411575327000167065ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/tips/tips.ca.txt000066400000000000000000000405641411575327000210210ustar00rootroot00000000000000[WELCOME]

      Benvingut a Gambas !

      Gambas és un entorn gràfic de desenvolupament basat en un intèrpret Basic avançat.

      El propòsit de Gambas és permetre crear aplicacions potents de manera fàcil i ràpida. Però la netedat dels vostres programes resta sota la vostra responsabilitat...

      Gaudiu-lo !

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Cada projecte ha de tenir una classe d'inici. Aquesta classe d'inici ha de tenir definit un mètode públic i estàtic anomenat Main sense arguments, el qual actuarà com a mètode d'inici del vostre programa.

      Podeu definir la classe d'inici fent clic sobre ella amb el botó dret del ratolí a l'arbre de projecte, i seleccionant Classe d'inici al menú contextual.

      No és necessari definir un mètode Main en un formulari d'inici, per que ja en te un de predefinit.

      Aquest mètode d'inici predefinit instancia el formulari i el mostra, igual que a Visual Basic™.

      [OPEN]

      La instrucció OPEN de Gambas no fa el mateix que la de Visual Basic. No retorna el fitxer com un integer, si no com un objecte File.

      Per tant, en comptes d'escriure :

      DIM handle AS Integer
      ...
      OPEN "elmeufitxer" FOR READ AS #handle

      heu d'escriure :

      DIM handle AS File
      ...
      handle = OPEN "elmeufitxer" FOR READ
      [CATDIR]

      Sabeu que podeu concatenar noms de directori i noms de fitxer amb l'operador "&/"? Aquest operador afegeix si cal els separadors de directoris, així que el camí resultant és perfecte.

      Per exemple:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      No és meravellós ?

      [EXEC]

      Podeu crear un fitxer executable de tot el vostre projecte. Seleccioneu Crea executable dins el menú Projecte.

      Quan Gambas crea un fitxer executable, el posa per defecte dins del directori del vostre projecte. El nom de l'executable és el mateix que el del vostre projecte.

      [PATH]

      Els camins relatius tenen un significat especial a Gambas. Sempre fan referència a fitxers dintre dels vostres projectes.

      No existeix el concepte de directori actual, ni paraula clau com CHDIR per canviar-lo.

      Aneu amb compte: només heu de fer servir camins relatius per accedir als fitxers del projecte, ja que els camins absoluts deixaran de funcionar quan creeu un executable. [GLOBAL] No hi han variables globals a Gambas!

      Com a solució temporal, poseu-les dins del mòdul principal i declareu-les com a PUBLIC.

      Si en comptes d'un mòdul principal teniu un formulari principal al vostre projecte, llavors declareu-les com a STATIC PUBLIC.

      Per accedir a aquestes variables heu de fer servir el nom de mòdul principal ò del formulari: ElMeuModulPrincipal.LaMevaVariableGlobal ò ElMeuFormulariPrincipal.LaMevaVariableGlobal. [EMPTY]

      Per saber si una cadena és buida, no és necessari fer servir la funció Len(). Ho poseu comprovar directament ja que una cadena buida és FALSE i una cadena no buida és TRUE.

      Per exemple, en comptes de fer :

      IF Len(LaMevaCadena) > 0 THEN ...
      IF Len(LaMevaCadena) = 0 THEN ...

      Heu de fer :

      IF LaMevaCadena THEN ...
      IF NOT LaMevaCadena THEN ...
      [TRANSLATE]

      Les aplicacions del Gambas son totalment traduïbles, permetent que indiqueu quines cadenes s'han de traduir i quines no.

      Per a marcar una cadena com a traduïble, només l'heu de tancar entre parèntesis:

      PRINT ("Traduïu-me")
      PRINT "Però no em traduïu!"
      [SUBST]

      La substitució és molt útil per a la internacionalització de la vostra aplicació. Es fa amb l'instrucció Subst().

      Té com a mínim 2 paràmetres. El primer és la màscara de text a on s'aplica la substitució. Després hi són les vostres variables, a on la primera té el número 1. S'usa d'aquesta manera: &1, &2, ...

      Subst(("Substitució de &1, &2 i &3"), "primer", "segon", "tercer")
      
      '...retornarà això:
      'Substitució de primer, segon i tercer
      [EVENT]

      Tots els controls i tots els objectes que poden rebre esdeveniments, tenen un observador d'esdeveniments i un nom de grup d'esdeveniment.

      L'observador d'esdeveniments captura tots els esdeveniments rebuts per l'objecte, i el nom de grup de l'esdeveniment és el prefixe del procediment encarregat de gestionar l'esdeveniment.

      Per defecte, l'observador d'esdeveniments és l'objecte a on heu creat el control, i el nom de grup és el nom del control.

      D'aquesta manera, un formulari rep tots els esdeveniments produïts sobre el control que heu creat dins d'ell.

      ' Gambas form
      Public Sub _new()
        Dim hButton As Button
        hButton = New Button(Me) As "ElMeuBoto"
      End
      
      Public Sub ElMeuBoto_Click()
        Print "Heu fet clic a ElMeuBoto!"
      End
      
      [GROUP]

      Tot control te la propietat (Group). Quan aquesta propietat es fa servir, el prefix del nom del gestor d'esdeveniments és el nom del grup i no el nom del control.

      Suposem que teniu un Botó anomenat btnAction amb el gestor d'esdeveniments Click següent :

      PUBLIC SUB btnAction_Click()

      Si definiu la propietat (Group) de btnAction com a ElMeuGrup, llavors el gestor d'esdeveniments que rebrà els esdeveniments del botó serà el següent :

      PUBLIC SUB ElMeuGrup_Click()

      Aquesta propietat us permet gestionar els esdeveniments de diversos controls en una sola funció. I els controls del mateix grup no han de ser del mateix tipus !

      Nota : Els veterans del vell Visual Basic reconeixeran el concepte de control array, però en una implementació més potent. :-)

      [FORM]

      A Gambas, un formulari és el seu propi observador d'esdeveniments, de manera que podeu gestionar directament els seus esdeveniments (com Resize, Activate, ...) dins del seu propi codi de classe.

      D'aquesta manera, els novells provinents de Visual Basic no es desorientaran :-).

      [EMBED]

      A Gambas podeu fer que qualsevol formulari estigui incrustat dins d'altres formularis !

      Per fer servir aquesta poderosa eina, només heu d'instanciar el formulari passant un contenidor pare com a últim argument del constructor.

      Per exemple :

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Crea un quadre de diàleg
      hForm = NEW MyDialog
      ' Insereix un formulari dins d'aquest quadre de diàleg
      ' Observeu que aquest formulari rep dos paràmetres abans del contenidor
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Mou i canvia la mida del formulari
      hSuperControl.Move(8, 8, 128, 64)

      Aneu amb compte: un formulari incrustat dins d'un altre formulari segueix sent un formulari, i per tant el seu propi observador d'esdeveniments.

      [TAG]

      Cada control te una propietat anomenada Tag. Aquesta propietat és per al programador, i pot contenir qualsevol dada VARIANT que trobeu pertinent.

      Això és molt útil quan voleu distingir controls del mateix grup dins d'un gestor d'esdeveniments comú.

      [LAST]

      La paraula clau LAST retorna l'últim control que ha rebut un esdeveniment. Això és molt útil quan vulgueu escriure un gestor d'esdeveniments que sigui independent de qualsevol nom de control.

      Per exemple, suposem que voleu escriure un programa calculadora. Heu definit deu botons, un per cada dígit, tots dins del mateix group "Digit". El valor Tag de cada control és el que es mostrarà en el botó. El vostre gestor d'esdeveniments tindria un aspecte com això :

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Les ben conegudes rutines de BASIC Left$, Right$ i Mid$ tenen un comportament molt útil a Gambas

      El segon paràmetre de Left$ i Right$ és opcional, i és 1 per defecte.

      Left$("Gambas") retorna "G"
      Right$("Gambas") retorna "s"

      Aquest segon paràmetre pot ser negatiu, i llavors dona el nombre de caràcters que no es mostraran.

      Left$("Gambas", -2) retorna "Gamb"
      Right$("Gambas", -2) retorna "mbas"

      Així mateix, el tercer argument de Mid$ pot ser negatiu, i llavors representa el nombre de caràcters des del final de la cadena que no es mostraran.

      Mid$("Gambas", 2, -2) retorna "amb" [OBSERVER]

      La classe Observer us permet interceptar tots els esdeveniments produïts per un objecte abans de que siguin enviats.

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Obtingut primer"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Obtingut després"
      END
      L'Observer pot canceŀlar l'esdeveniment per prevenir que efectivament es produeixi. [STRING]

      Gambas fa servir el joc de caràcters UTF-8 per representar cadenes a la memòria.

      Però totes les funcions estàndard de cadenes del Gambas treballen amb ASCII: Left, Mid, Right, UCase...

      Si voleu manipular cadenes UTF-8, heu de fer servir els mètodes de la classe estàtica String, els quals tenen el mateix nom que els seus homòlegs estàndards.

      PRINT Len("pròleg");; Left$("pròleg", 4)
      7 prò
      PRINT String.Len("pròleg");; String.Left("pròleg", 4)
      6 pròl
      [ASSIGNMENT]

      El Gambas implementa les dreceres d'assignació tal com els programadors de C/C++ fan servir també.

      LaMevaVariable += 2 és una equivalència de LaMevaVariable = LaMevaVariable + 2

      LaMevaVariable &= "Pròleg" és una equivalència de LaMevaVariable = LaMevaVariable & "Pròleg"

      etc... [DEBUG]

      Podeu fer servir l'instrucció DEBUG per a imprimir missatges de depuració a la consola (és a dir, la sortida d'errors estàndard). Es comporta exactament igual a la instrucció PRINT.

      Aquests son missatges prefixats amb el nom de la classe, nom del mètode i número de línia de la instrucció DEBUG.

      Els missatges de depuració es suprimeixen automàticament quan es crea un executable sense informació de depuració. [TRY]

      La gestió d'errors al Gambas es fa amb les següents instruccions: TRY, ERROR, CATCH, i FINALLY.

      TRY prova d'executar la sentència sense llançar l'error. La instrucció ERROR es fa servir just després de saber si la sentència s'ha executat correctament.

      TRY ElMeuFitxer = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "No puc fer el que vull!"
      [CATCH]

      La gestió d'errors al Gambas es fa amb les següents instruccions: TRY, ERROR, CATCH, i FINALLY.

      CATCH indica el principi de la part de gestió d'errors d'una funció o procediment. Es posa al final del codi de la funció.

      El part del catch s'executa si es produeix un error entre el principi i el final de la funció.

      Si es produeix un error dins la part del catch, aquest és tractat normalment.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' S'executa només si hi ha un error
        PRINT "No es pot processar el fitxer "; FileName
      END
      [FINALLY]

      La gestió d'errors al Gambas es fa amb les següents instruccions: TRY, ERROR, CATCH, i FINALLY.

      FINALLY inclou el codi que s'executa al final de la funció, fins i tot si s'ha produït un error durant la seva execució.

      La part finally no és obligatòria. Si hi ha una part catch a la funció, la part finally l'ha de precedir.

      Si es produeix un error dins la part del finally, aquest és tractat normalment.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
      FINALLY ' S'executa sempre, fins i tot si s'ha produït un error
        CLOSE #hFile
      CATCH ' S'executa només si hi ha un error
        PRINT "No es pot processar el fitxer "; FileName
      END
      [OPTIONAL]

      Les funcions i procediments al Gambas poden tenir paràmetres opcionals.

      Els paràmetres són opcionals simplement posant l'indicador OPTIONAL just a davant de la variable

      PRIVATE SUB LaMevaFuncio(param AS String, OPTIONAL optim AS String)
        ...
        PRINT param & " requerit, '" & optim "' opcional"
        ...
      END
      
      'cridant la funció:
      
      LaMevaFuncio("parametre") 'sense argument opcional (si no cal)
      LaMevaFuncio("parametre", "parametre_opcional")
      
      [ARRAY]

      Al Gambas podeu recórrer fàcilment una matriu d'una coŀlecció de variables amb la funció FOR EACH.

      Exemple:

      DIM xml AS NEW XmlDocument
      DIM node AS XmlNode
      DIM i AS Integer
      
      'Obre l'xml
      xml.Open("pokus.xml")
      'Children s'indexa via [i], perquè és una matriu
      FOR i = 0 TO xml.Root.Children.Count - 1
        'Attributes es recorren via FOR EACH, perquè és una coŀlecció
        FOR EACH node IN xml.Root.Children[i].Attributes
          DEBUG node.Name;; Node.Value
        NEXT
      NEXT
      [ICON]

      Podeu fer servir les icones internes per a crear una interfície més agradable de la vostra aplicació, les quals estan disponibles en diverses mides (des de 16x16 fins a 128x128)

      Per exemple:

      Imatge1.Picture = Picture["icon:/32/warning"]
      [SETTINGS]

      Si necessiteu desar la configuració del vostre programa (tal com la mida i posició de la finestra), llavors esteu de sort. Això és molt elegant i fàcil de fer a Gambas.

      Podeu desar tota la configuració d'un objecte, o només una propietat.

      Exemple:

      'Desa la posició d'un objecte
      Settings.Write(ME)
      
      'Carrega l'objecte
      Settings.Read(ME)
      
      'Desa la propietat
      Settings["win/x"] = ME.X
      
      'Llegeix la propietat
      'podeu utilitzar el valor per defecte com aquest: ["win/x", 0]
      ME.X = Settings["win/x"]
      

      Atenció: heu d'incloure el component: gb.settings

      [EDITOR]

      Alguns consells de l'editor...

      Dues classes de comentaris

      ' Comentari normal
      '' Comentari en negreta

      Els comentaris en negreta es fan servir per a documentar el vostre codi.

      Com utilitzar fragments de codi

      Si escriviu main i després premeu la tecla TAB, s'insereix automàticament al vostre codi una funció d'inici Main estàtica pública.

      Si escriviu ds i després premeu la tecla TAB, s'insereix automàticament una declaració de variable del tipus string, i seguidament ja podeu escriure el nom de la variable.

      Els fragments de codi són totalment configurables des del diàleg de les opcions globals de l'IDE. [END]

      Ja heu llegit tots els consells del dia. Espero que us hàgiu convertit en un expert en Gambas! :-)

      Si voleu contribuir, envieu nous consells a l'adreça següent :

      g4mba5@gmail.com

      Gràcies per endavant !

      [MESSAGE]

      Per a informar als usuaris, podeu usar les classes del Gambas Message i Balloon. Message prové dels components (QT, GTK+)i el Balloon de gb.form.

      Message i Balloon tenen els següents tipus possibles: Message.Delete(), .Error(), .Info(), .Question() i .Warning()

      A cada botó del diàleg Message podeu establir les vostres pròpies etiquetes. Després de prémer el botó, us tornarà un valor numèric (de 1 a X, depenent del tipus i la quantitat de botons).

      DEBUG Message.Info("Bon dia món!")  'retornarà 1
      
      Message("Bon dia món!")  'El mateix però el formulari més curt

      Mentre creeu el Balloon heu de definir el contenidor pare. Opcionalment podeu definir el temps de mostra en ms, i la posició X,Y.

      Balloon.Info("Bon dia món!", ME)
      'Mostrarà el «ballon» dins el formulari principal
      
      'més reduït sense icona: Balloon("Bon dia món!", ME)
      gambas-3.16.3/app/src/gambas3/tips/tips.cs.txt000066400000000000000000000376641411575327000210520ustar00rootroot00000000000000[WELCOME]

      Vítej v Gambasu !

      Gambas je grafické vývojové prostředí založené na pokročilém Basic interpretovy.

      Cílem Gambasu je umožnit Vám, vytvářet užitečné programy snadno a rychle. Ale čistota těchto programů zůstává na vaší plné odpovědnosti...

      Užijte si to !

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Každý projekt musí mít hlavní třídu. Hlavní třída definuje veřejnou statickou metodu nazvanou Main, argumentů, která bude fungovat jako spouštěcí metoda vašeho programu.

      Hlavní třídu můžete nastavit tak, že ve stromu projektu kliknete pravým tlačítkem myši a v popup menu vyberete položku Hlavní třída.

      Po startu není nutné nastavovat methodu Main, protože je již přednastavená.

      Tato metoda je zodpovědná za vytváření instance a poté zobrazení formuláře, jako ve Visual Basic™.

      [OPEN]

      Instrukci OPEN nemůžete použít v Gambasu stejně jako ve Visual Basic. Soubor totiž nevrácí integer, ale objekt File.

      Takže místo:

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      musíte psát:

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR] Víte, že můžete spojit názvy adresářů a souborů operatorem &/ ?

      Tento operátor se v případě potřeby postará o správné přidání oddělovače '/' do cesty.

      Například:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      No není to úžasné ?

      [EXEC]

      Z celého projektu můžete vytvořit spustitelný soubor. Klikni v menu Projekt a Vytvořit/Spustitelný....

      Když Gambas vytvoří spustitelný soubor, tak jej defaultně vloží do stejné složky ve které se nachází projekt. Spustitelný soubor má pak stejné jméno jako projekt.

      [PATH]

      Relativní cesta má v Gambasu zvláštní význam. Vždy se totiž odkazuje na soubory uvnitř svého projektů.

      Neexistuje žádný koncept akuálního adresáře, ani žádné slovo pro změnu jako CHDIR.

      Buť tedy opatrný: musíš použít relativní cesty pouze pro přístup k souborům projektu. Protože absolutní cesty již nefungují ve vytvořeném spustitelném programu.

      [GLOBAL]

      V Gambasu nejsou globální proměnné!

      Jako dočasné řešení, je můžete vkládat do hlavního modulu a deklarovat je jako PUBLIC.

      Pokud nemáte hlavní modul, ale hlavní formulář, pak deklarujte jako STATIC PUBLIC.

      Pro přístup k těmto proměnným, musíte používat název modulu nebo formuláře: MyMainModule.MyGlobalVariable nebo MyMainForm.MyGlobalVariable.

      [EMPTY]

      Chcete-li jestli je řetězec prázdný, není nutné srovnání s "" nebo používat funkci Len(). Je možné testovat přímo, protože prázdný řetězec je ekvivalentní k FALSE a neprázdný řetězec je ekvivalentní k TRUE.

      Například, než psát:

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      Místo toho můžete psát:

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [TRANSLATE]

      Program napsaný v Gambasu je přeložitelný do jakéhokoli jazyka, za předpokladu, že uvedete, které řezezce musí být přeloženy, a které ne.

      Chcete-li označit řetězec pro překlad, stačí je uzavřít mezi kulaté závorky:

      PRINT ("Mě přelož")
      PRINT "Ale mě nepřekládej!"
      [EVENT]

      Každý ovládací prvek či objekt, kterému lze přiřadit událost, má pozorovatele událostí a událost název skupiny.

      Pozorovatel události zachytává každou událost vyvolanou objektem. Název skupiny událostí tvoří prefix volané procedury, která se stará o vykonání události.

      Defaultně je pozorovatel události tvořen mateřským objektem kontrolního prvku a název skupiny je tvořen názvem kontrolního prvku.

      Touto cestou formulář dostává všechny události vyvolané vnitřními prvky.

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "You have clicked MyButton !"
      END
      
      [FORM]

      V Gambasu, je formulář vlastní pozorovatel událostí, takže si může svoje události spravovat přímo (jako Resize, Activate, ...) ve svém vlastním kódu.

      Tímto způsobem, nováčci přícházející z Visual Basic a nejsou dezorientovaný :-).

      [EMBED]

      Do formuláře Gambasu můžete vložit jakýkoliv jiný formulář !

      Stačí předat rodičovský kontejner formuláře jako poslední argument konstruktoru.

      Například:

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Vytvoření dialogu
      hForm = NEW MyDialog
      ' Vložení formuláře do tohoto dialogu
      ' Všimněte si, formulář má ještě dva parametry před rodičovským kontejner
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Nastavení polohy a velikosti formuláře
      hSuperControl.Move(8, 8, 128, 64)

      Buďte opatrní: formulář vložený do jiného formuláře je stále formulářem, a tak ma i vlastního pozorovatele událostí.

      [GROUP]

      Každý ovládací prvek ma vlastnost (Group) [skupinová akce]. Pokud je tato vlastnost nastavena, tak název skupiny je předpona pro zpracování událostí a ne název ovladacího prvku.

      Předpokládejme, že máte Button nazvaný btnAction s následným zpracováním událostí Click:

      PUBLIC SUB btnAction_Click()

      Pokud nastavíte vlastnost (Group) v btnAction na MyGroup, pak zpracování událostí bude od tlačítka příjímat následující událost:

      PUBLIC SUB MyGroup_Click()

      Tato vlastnost umožňuje zpracovávat události z různých ovládacích prvků v jedné funkci. A ovladací prvky vůbec nemusí být stejné!

      Poznámka: Zkušený veterán Visual Basicu možná pozná pojem control array, ale v mnohem silnější implementaci. :-)

      [TAG]

      Kazdý ovládací prvek má vlastnost Tag. Tato vlastnost je pro programátory, a může obsahovat jakoukoli VARIANTu dat, kterou považujete za relevantní.

      Je to velmi užitečné, když chcete odlišit různé ovládací prvky stejné skupiny při společném zpracování událostí.

      [LAST]

      Klíčové slovo LAST vrací objekt posledního ovládacího prveku, od kterého obdržel událost. Je to velmi užitečné, pokud chcete psát obsluhu událostí, která je nezávislá na názvech prvků.

      Například, předpokládejme, že chceme napsat program kalkulačky. Máte nadefinovaná tlačítka pro každé z deseti čísel. Každé je ve stejné skupině (group) "Digit". Tag každého prvku má nastaveno číslo, které je na tlačítku. Zpracování události pak může vypadat takhle:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Známé rutiny BASICu jako Left$, Right$ a Mid$ jsou i v Gambasu

      Druhý parametr Left$ a Right$ je volitelný, a defultni hodnota je 1.

      Left$("Gambas") vrací "G"
      Right$("Gambas") vrací "s"

      Tento druhý parametr může být i záporný, a pak udává počet znaků od konce řetězce.

      Left$("Gambas", -2) vrací "Gamb"
      Right$("Gambas", -2) vrací "mbas"

      Podobně, tak třetí parametr v Mid$ může být záporný, a pak udává počet znaků od konce řetězce.

      Mid$("Gambas", 2, -2) vrací "amb"

      [OBSERVER]

      Třída Observer (pozorovatel událostí) vám umožňuje zachytit všechny události vyvolané objekty ještě před tím než jsou skutečně poslány.

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Spuštěno první"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Spuštěno další"
      END

      Pozorovatel událostí může zastavit událost, v zájmu ochrany objektu.

      [STRING]

      Gambas používá pro reprezentaci řetězců v paměti znakovou sadu UTF-8.

      Ale všechny standartní řetezcové funkce pracují s ASCII: Left, Mid, Right, UCase...

      Pokud chcete pracovat s UTF-8 řetězci, musíte používat metody statické třídy String, které mají stejné názvy jako jejich standartní protějšky.

      PRINT Len("bébé");; Left$("bébé", 3)
      6 bé
      PRINT String.Len("bébé");; String.Left("bébé", 3)
      4 béb
      [ASSIGNMENT]

      Gambas implementuje zkrácené přiřazování na které jsou zvykli programátoři z C/C++.

      MyVariable += 2 je ekvivalent MyVariable = MyVariable + 2

      MyVariable *= 4 je ekvivalent MyVariable = MyVariable * 4

      MyVariable &= "Great" je ekvivalent MyVariable = MyVariable & "Great"

      A tak dále...

      [DEBUG]

      Také můžete používat instrukci DEBUG pro tisk ladících zpráv do konzole (tedy standartní chybový výstup). Chová se stejně jako instrukce PRINT.

      Tyto zprávy obsahuji název třídy, název metody a číslo řádku z místa volání instrukce DEBUG.

      Při vytváření spustitelného souboru jsou ladící zprávy automaticky odstraněny.

      [TRY]

      Správa řízení chyb je v Gambasu řízena skrze instrukce: TRY, ERROR, CATCH, a FINALLY.

      TRY se pokusí provést výraz bez chyb. Instrukce ERROR se používá aby se vědělo, jestli byl výraz proveden správně.

      TRY MyFile = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "Nemůžu dělat, to co chci!"
      [CATCH]

      Správa řízení chyb je v Gambasu řízena skrze instrukce: TRY, ERROR, CATCH, a FINALLY.

      CATCH označuje začátek řízení chyb části funkce nebo procedůry. Píše se na konec kodu funkce.

      Catch blok se provede jen tehdy, když se uvnitř výkoného bloku kodu, vyskytne chyba.

      Vyskatne-li se chyba během provádění bloku catch, je běžně zobrazena.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' Vykonán pouze v případě, že se vyskytla chyba
        PRINT "Nemůže zpracovat soubor "; FileName
      END
      [FINALLY]

      Správa řízení chyb je v Gambasu řízena skrze instrukce: TRY, ERROR, CATCH, a FINALLY.

      FINALLY zavádí kód vykonání na konci funkce, i když byla chyba vyvolána během jejího plnění.

      Finally blok není povinný. Je-li tu blok Catch blok ve funkci, tak musí finally blok předcházet.

      Vyvstane-li chyba během provádění Finally bloku, je běžně zobrazena.

      SUB ProcessFile(FileName AS STRING)
        ...
        Open FileName For Read As #hFile
        ...
      Finally ' Provedeno vždy, i když byla chyba vyvolána
      
        Close #hFile
        
      Catch ' Vykonán pouze v případě, že se vyskytla chyba
        
        Print "Cannot print file "; FileName
        
      End
      [OPTIONAL]

      Funke a procedry v Gambasu mohou mít volitelné parametry.

      Provádí se to tak že se před název proměnné napíše instrkukce OPTIONAL. A ta oznamuje že je parametr volitelný.

      PRIVATE SUB MyFunction(param AS String, OPTIONAL optim AS String)
        ...
        PRINT "povinný " & param & ", nepovinný '" & optim "'"
        ...
      END
      
      'volání v kodu:
      
      MyFunction("parametr") 'není-li za potřebí tak se nemusí volat
      MyFunction("parametr", "param")
      
      [ARRAY]

      V Gambasu se dají procházet proměnné (typu array, collection) za pomocí FOR EACH (pro collection a pole) nebo FOR cyklus (pro pole)

      Například:

      DIM xml AS NEW XmlDocument
      DIM node AS XmlNode
      DIM i AS Integer
      
      'otevre xml
      xml.Open("pokus.xml")
      'Children se musi indexovat přes [i]!, je to array
      FOR i = 0 TO xml.Root.Children.Count - 1
        'Attributes se musí procházet přes FOR EACH, je to collection
        FOR EACH node IN xml.Root.Children[i].Attributes
          DEBUG node.Name;; Node.Value
        NEXT
      NEXT
      [ICON]

      Můžete použít i vestavěné ikony pro doplnění krásy své aplikace, a máte zde i například na výběr rozměr od 16x16 až po 128x128

      Například:

      Image1.Picture = Picture["icon:/32/warning"]
      Image2.Picture = Picture["icon:/small/error"]
      

      Pozor: musíte mít zapnutou komponentu: gb.form. [SETTINGS]

      Pokud si potřebujete uložit konfigurací programu, jako je třeba velikost a poloha okna, je to jednodušší než jste čekaly.

      Můžete ukládat konfiguraci celého objektu, nebo jen jeho dílčí hodnotu.

      Například:

      'uložení polohy onjektu
      Settings.Write(ME)
      
      'Načtení objektu
      Settings.Read(ME)
      
      'Uložení hodnoty
      Settings["win/x"] = ME.X
      
      'Načtení hodnoty
      'lze zadat i defaultni hodnotu: ["win/x", 0]
      ME.X = Settings["win/x"]
      

      Pozor: musíte mít zapnutou komponentu: gb.settings

      [MESSAGE]

      V Gambasu můžete pro informování uživatele užít následující třídy: Message a Balloon. Message je z komponenty (QT, GTK+), a Balloon z gb.form.

      Třída Message a Balloon má možné typy: Message.Delete(), .Error(), .Info(), .Question() a .Warning()

      U každého Message jdou nastavit i vlastní popisky tlačítek, po zmáčknutí tlačítka v dialogu je vrácena číselná hodnota tlačítka od 1 do X, dle typu a počtu tlačítek.

      DEBUG Message.Info("Ahoj světe!")  'vrátí číslo 1
      
      Message("Ahoj světe!")  'To samé zkráceně

      Při vytváření Balloon se musí uvést rodičovský kontejner, volitelně jde nastavit i pozice X a Y, lze nastavit i prodleva zobrazení v ms a font.

      Balloon.Info("Ahoj světe!", ME)  'zobrazí bublinu na hlavním formuláři
      
      'lze zkátit na: Balloon("Ahoj světe!", ME) ale pak je bez ikony
      
      [SUBST]

      Pro jednoduší překlad textů v gambasu je možno použít substituci, instrkukce Subst().

      Má minimalné 2 parametry, kde první je textová maska na kterou se substituce aplikuje, další parametry jsou vaše proměnné, kde první vložený parametr má pořadové číslo 1. Jako substituční znak se užívá &1, &2, ..., číslo je dle pořadí vložené proměnné.

      Subst(("Nahrazeni za &1, &2 a &3"), "prvni", "druhou", "dalsi")
      
      'vypise:
      'Nahrazeni za prvni a za druhou, dalsi
      [EDITOR]

      Několik typů v editoru:

      Dva typy komentářů:

      'normální komentář
      ''tučný komentář

      Tučné komentáře jsou používány pro dokumentování kódu.

      Jak používat úryvky kodu:
      'napíšete:

      main
      'a pak zmáčknete tabulátor, a doplní se útržek kódu,
      'podle toho jak je v nastavení definován

      Úryvky kodu jsou zcela konfigurovatelné z globálního dialogu nastavení IDE.

      [END]

      Přečetly jste všechny tipy dnů. Doufám, že jste se stal nyní odborníkem na Gambas ! :-)

      Pokud chcete přidat nové tipy z vaší vlastní zkušenosti, neváhejte a pošlete je na adresu:

      g4mba5@gmail.com

      Díky předem !

      gambas-3.16.3/app/src/gambas3/tips/tips.de.txt000066400000000000000000000310771411575327000210250ustar00rootroot00000000000000[WELCOME]

      Willkommen zu Gambas!

      Gambas ist eine graphische IDE, die auf einem modernen Basic-Interpreter basiert.

      Gambas möchte Sie in die Lage versetzen, schnell und einfach komplexe Programme zu schreiben. Sauberes Programmieren bleibt natürlich Ihr Verantwortungsbereich...

      Viel Spaß damit!

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Jedes Projekt braucht eine Startklasse. Diese muss eine gemeinsame (statische) Methode namens Main ohne Argumente definieren, die dann als Startpunkt für die Anwendung fungiert.

      Sie können die Startklasse definieren, indem Sie im Projektfenster mit der rechten Maustaste darauf klicken und Startklasse im Popupmenü auswählen.

      Wenn die Startklasse ein Formular ist, muss sie keine Methode Main besitzen, da ein Formular bereits eine vorgefertigte mitbringt.

      Diese vordefinierte Methode tut dasselbe wie es in Visual Basic™ Standard ist: Das Formular wird instanziert und angezeigt.

      [OPEN]

      Die OPEN-Anweisung von Gambas funktioniert nicht wie die in Visual Basic™. Sie liefert keine Dateinummer zurück, sondern ein File-Objekt.

      Also, anstatt

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      schreiben Sie:

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR]

      Wussten Sie, dass Sie Verzeichnis- und Dateinamen mit dem &/-Operator zusammenhängen können? Dieser Operator kümmert sich automatisch um die Schrägstriche, sodass im Ergebnis weder welche fehlen noch doppelt vorhanden sind.

      Zum Beispiel:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      Ist das nicht praktisch?

      [EXEC]

      Sie können eine ausführbare Datei aus Ihrem gesamten Projekt machen. Wählen Sie Ausführbare Datei erstellen aus dem Menü Projekt.

      Wenn Gambas eine ausführbare Datei erstellt, legt es das Ergebnis direkt im Verzeichnis Ihres Projekts ab. Der Name der Datei ist der des Projekts.

      [PATH]

      Relative Pfade haben in Gambas eine spezielle Bedeutung. Sie verweisen immer auf Dateien innerhalb Ihrer Projekte.

      Es gibt kein Konzept von current directory, und keinen Befehl wie CHDIR, um es zu ändern.

      Vorsicht: um Projektdateien zu öffnen, dürfen Sie nur relative Pfadangaben verwenden, weil absolute Pfadangaben nicht mehr vorhanden sind, wenn Sie eine ausführbare Datei erstellt haben. [GLOBAL] In Gambas gibt es keine globalen Variablen!

      Hilfsweise können Sie solche Variablen im Modul Main definieren und als PUBLIC deklarieren.

      Wenn Sie in Ihrem Projekt kein Modul Main haben, sondern ein Formular Main, dann deklarieren Sie sie dort als STATIC PUBLIC.

      Um diese Variablen zu verwenden, müssen Sie den Namen des Moduls/Formulars Main angeben: MyMainModule.MyGlobalVariable oder MyMainForm.MyGlobalVariable. [EMPTY]

      Wenn Sie prüfen wollen, ob ein String leer ist, müssen Sie nicht die Len()-Funktion verwenden. Sie können den String direkt mit IF testen, da ein leerer String FALSE und ein nicht-leerer TRUE ergibt.

      Also, anstatt

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      sollten Sie schreiben:

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [TRANSLATE]

      Gambas-Anwendungen sind übersetzbar, vorausgesetzt Sie geben an, welche Ausdrücke übersetzt werden sollen und welche nicht.

      Um Ausdrücke zum Übersetzen zu markieren, setzen Sie sie einfach in Klammern:

      PRINT ("Übersetze mich")
      PRINT "Aber mich nicht übersetzen!"
      [EVENT]

      Jedes Steuerelement und jedes Objekt kann Events auslösen. Es besitzt einen Event-Observer und einen Event-Gruppennamen.

      Der Event-Observer fängt jedes vom Objekt ausgelöste Event auf, und der Event-Gruppenname ist das Präfix des Methodennamens, der beim Auslösen des Events aufgerufen wird.

      Standardmäßig ist der Event-Observer das Objekt, in dem Sie das Steuerelement erstellt haben, und der Gruppenname ist der Name des Elements.

      Auf diese Art und Weise erhält ein Formular die Events aller seiner Steuerelemente.

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "Sie haben auf MyButton geklickt!"
      END
      
      [FORM]

      In Gambas ist ein Formular sein eigener Event-Observer, sodass Sie seine Events (wie Resize, Activate etc.) im Code der Klasse selbst managen können.

      Auf diese Weise werden auch Umsteiger von Visual Basic™ nicht orientierungslos :-).

      [EMBED]

      Sie können jedes Formular in andere Formulare mit Gambas einbetten!

      Um so etwas mächtiges zu tun, erstellen Sie einfach eine Instanz des Formulars, wobei Sie als letztes Argument für den Konstruktor den Container für die Form angeben.

      Zum Beispiel:

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Dialog erstellen
      hForm = NEW MyDialog
      ' Formular in den Dialog einfügen
      ' Achtung: Diese Form hat zwei Konstruktorargumente vor dem Containerargument
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Die Form auf die richtige Größe bringen
      hSuperControl.Move(8, 8, 128, 64)

      Achtung: Eine eingebettete Form ist immer noch ihr eigener Event-Observer und erhält damit ihre Events selbst!

      [GROUP]

      Jedes Steuerelement hat eine (Group)-Eigenschaft. Wenn diese Eigenschaft gesetzt ist, ist das Präfix des Eventhandlers eben dieser Gruppenname und nicht der Namen des Elements.

      Nehmen wir an, Sie haben einen Button namens btnAction mit folgendem Click-Eventhandler:

      PUBLIC SUB btnAction_Click()

      Wenn Sie die (Group)-Eigenschaft auf MyGroup setzen, sieht der Eventhandler, der die Events des Buttons erhält, so aus:

      PUBLIC SUB MyGroup_Click()

      Dadurch können Sie die Events von verschiedenen Steuerelementen in einer einzelnen Funktion behandeln. Die Steuerelemente einer Gruppe müssen nicht vom selben Typ sein!

      Bemerkung: Der Visual Basic™-Veteran mag das Konzept der Control Arrays wiedererkennen, aber in einer leistungsfähigeren Implementation. :-)

      [TAG]

      Jedes Steuerelement hat eine Tag-Eigenschaft, genau wie in Visual Basic™. Sie erfüllt für das Objekt selbst keinen Zweck, sondern kann vom Programmierer benutzt werden, um irgendwelche VARIANT-Daten zu speichern, die er für nützlich hält.

      Das ist zum Beispiel praktisch, wenn Sie mehrere Steuerelemente derselben Gruppe in einem Eventhandler unterscheiden wollen.

      [LAST]

      Das LAST-Schlüsselwort gibt das letzte Steuerelement zurück, das ein Event ausgelöst hat. Dies ist sehr nützlich, wenn Sie einen Eventhandler schreiben wollen, der vom Namen eines Elements unabhängig ist.

      Zum Beispiel, wenn Sie einen Taschenrechner schreiben wollen, können Sie zehn Buttons erstellen, einen für jede Ziffer, und jeden in derselben Gruppe namens "Digit". Angenommen, Sie setzen die Tag-Eigenschaft von jedem Button auf die Ziffer, die er repräsentiert, dann können Sie folgenden Eventhandler schreiben:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Die bekannten BASIC-Routinen Left$, Right$ und Mid$ sind in Gambas verbessert:

      Der zweite Parameter von Left$ und Right$ ist optional, und standardmäßig 1.

      Left$("Gambas") ergibt "G"
      Right$("Gambas") ergibt "s"

      Er kann auch negativ sein und gibt so die Anzahl Zeichen an, die nicht zurückgegeben werden sollen.

      Left$("Gambas", -2) ergibt "Gamb"
      Right$("Gambas", -2) ergibt "mbas"

      Genauso kann das dritte Argument von Mid$ negativ sein und gibt dann die Anzahl an Zeichen vom Ende des Strings an, die nicht zurückgegeben werden sollen.

      Mid$("Gambas", 2, -2) ergibt "amb" [OBSERVER]

      Die Observer-Klasse erlaubt es, alle Ereignisse eines Objekts abzufangen, bevor sie tatsächlich gesendet werden.

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Got it first"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Got it next"
      END
      Der Observer kann ein Ereignis abbrechen, um zu vermeiden, dass ein Objekt es überhaupt auslöst. [STRING]

      Gambas verwendet den UTF-8-Zeichensatz, um Ausdrücke im Arbeitsspeicher zu verwalten.

      Aber alle standardmäßigen Stringfunktionen von Gambas verwenden ASCII: Left, Mid, Right, UCase...

      Wenn Sie UTF-8-Ausdrücke bearbeiten wollen, müssen Sie die Methoden der statischen String-Klasse verwenden, die den gleichen Namen haben wie ihre standardmäßigen Entsprechungen.

      PRINT Len("bébé");; Left$("bébé", 3)
      6 bé
      PRINT String.Len("bébé");; String.Left("bébé", 3)
      4 béb
      [ASSIGNMENT]

      Gambas hat die Zuweisungs-Abkürzungen eingebaut, die C/C++ Programmierer gewohnt sind.

      MyVariable += 2 ist gleichbedeutend mit MyVariable = MyVariable + 2

      MyVariable &= "Great" ist dasselbe wie MyVariable = MyVariable & "Great"

      Und so weiter... [DEBUG]

      Sie können die DEBUG-Anweisung benützen, um Debug-Meldungen auf der Konsole auszugeben (vor allem die standardmäßigen Fehlerausgaben). Das funktioniert genau so wie die PRINT-Anweisung.

      Bei diesen Meldungen wird die Klasse, Methode und Zeilennummer der DEBUG-Anweisung vorangestellt.

      Die Debug-Meldungen werden automatisch gelöscht, wenn eine ausführbare Datei ohne Debug-Informationen erstellt wird. [TRY]

      Die Fehlerbehandlung wird in Gambas mit folgenden Befehlen ausgeführt: TRY, ERROR, CATCH, und FINALLY.

      TRY versucht, einen Befehl auszuführen, ohne einen Fehler auszulösen. Die Anweisung ERROR wird direkt danach verwendet, um zu prüfen, ob der Befehl korrekt ausgeführt werden konnte.

      TRY MyFile = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "Ich kann nicht!"
      [CATCH]

      Die Fehlerbehandlung wird in Gambas mit folgenden Befehlen ausgeführt: TRY, ERROR, CATCH, und FINALLY.

      CATCH zeigt den Beginn einer Fehlerbehandlungsroutine in einer Funktion oder Prozedur an. Dieser Befehl wird ans Ende des Codes gestellt.

      Die CATCH-Anweisung wird ausgeführt, wenn ein Fehler zwischen dem Anfang und dem Ende der Funktion oder Prozedur auftritt.

      Wenn während der Verarbeitung der CATCH-Anweisung ein Fehler auftritt, wird er er normal angezeigt.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' wird nur ausgeführt, wenn ein Fehler auftritt
        PRINT "Kann Datei nicht laden "; FileName
      END
      [FINALLY]

      Die Fehlerbehandlung wird in Gambas mit folgenden Befehlen ausgeführt: TRY, ERROR, CATCH, und FINALLY.

      FINALLY leitet den Code am Ende der Funktion ein, der ausgeführt wird, selbst wenn ein Fehler in der Funktion aufgetreten ist.

      Der Abschnitt FINALLY ist nicht obligatorisch. Wenn in der Funktion eine CATCH-Anweisung vorkommt, muss FINALLY davor stehen.

      Wenn im FINALLY-Abschnitt ein Fehler auftritt, wird er normal angezeigt.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
      FINALLY ' wird immer ausgeführt, auch wenn ein Fehler auftritt
        CLOSE #hFile
      CATCH ' wird nur bei einem Fehler ausgeführt
        PRINT "Kann die Datei nicht ausgeben "; FileName
      END
      [END]

      Jetzt haben Sie alle Tipps des Tages gelesen. Ich hoffe, Sie sind jetzt ein Gambas-Experte geworden! :-)

      Wenn Sie neue Tipps beisteuern wollen, senden Sie sie an folgende Adresse:

      g4mba5@gmail.com

      Danke im Voraus!

      Deutsche Übersetzung der Tipps: Georg Brandl, g.brandl@gmx.net

      gambas-3.16.3/app/src/gambas3/tips/tips.en.txt000066400000000000000000000371331411575327000210360ustar00rootroot00000000000000[WELCOME]

      Welcome to Gambas!

      Gambas is a graphical development environment based on an advanced Basic interpreter.

      Gambas aims at enabling you to make powerful programs easily and quickly. But clean programs remain on your own responsibility...

      Enjoy it !

      Benoît Minisini
      g4mba5@gmail.com


      [STARTUP]

      Startup class

      Each project must have a startup class. This startup class must define a static public method named Main with no arguments, that will act as the startup method of your program.

      You can define the startup class by clicking on it with the right mouse button in the project tree, and by selecting Startup class in the popup menu.

      It is not necessary to define a Main method in a startup form, because it already has a predefined one.

      This predefined startup method instanciates the form and shows it, like in Visual Basic™.

      [OPEN]

      Open

      The Open instruction of Gambas does not work like the Visual Basic™ one. It does not return the file as an integer, but as a File object.

      So, instead of typing :

      Dim handle As Integer
      ...
      Open "myfile" For Read As #handle

      you must type :

      Dim handle As File
      ...
      handle = Open "myfile" For Read
      [CATDIR]

      Path concatenation

      Do you know that you can concatenate directory names and file names with the &/ operator ? This operator deals with the trailing slashes so that the resulting path is perfect.

      For example:

      Print "/home/gambas" &/ ".bashrc"
      → /home/gambas/.bashrc
      
      Print "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      → /home/gambas/tmp/foo.bar
      

      Isn't it marvelous ?

      [EXEC]

      Executable

      You can make an executable file from your entire project. Select Make executable in the Project menu.

      When Gambas makes an executable file, it puts the result in the directory of your project by default. The executable name has the same name as your project.

      [PATH]

      Relative paths

      Relative paths have a special meaning in Gambas. They always refer to files inside your projects.

      There is no concept of current directory, and no keyword like CHDIR to change it.

      Be careful: you must use relative paths only for accessing project files, because absolute paths won't work anymore when you make an executable.

      [GLOBAL]

      Global variables

      There is no global variables in Gambas!

      As a workaround, put them in your main module and declare them as Public.

      If you do not have a main module in your project, but a main form, then declare them as Static Public.

      To access these variables, you must use the name of the main module or form: MyMainModule.MyGlobalVariable or MyMainForm.MyGlobalVariable.

      [EMPTY]

      Empty strings

      To know if a string is empty, it is not necessary to use the Len() function. You can directly test it, as an empty string is False and a non-empty string is True.

      For example, instead of doing :

      If Len(MyString) > 0 Then ...
      If Len(MyString) = 0 Then ...

      You should do :

      If MyString THEN ...
      If Not MyString THEN ...
      [TRANSLATE]

      Translation

      Gambas applications are fully translatable, provided that you tell it which strings must be translated, and which one must not.

      To mark strings as translatable, just enclose them between braces:

      Print ("Translate me")
      Print "But do not translate me!"
      [SUBST]

      Subst$

      The Subst$() function is very useful to internationalize your application.

      It takes at least two arguments. The first one is the text mask which the substitution applies on. The other ones are the substitution arguments, numbered from one.

      Each &X pattern in the substitution string will be replaced by the Xth substitution argument. For example:

      Print Subst(("Substitution of &1, &2 and &3"),
        "first", "second", "third")
      
      → Substitution of first, second and third
      [EVENT]

      Event Handlers

      Every control, and every object that can raise events, has an event observer and an event group name.

      The event observer catches every event raised by the object, and the event group name is the prefix of the procedure called to manage the event. That function is called event handler.

      By default, this event observer is the object where you have created the control, and the group name is the name of the control.

      This way, a form receives all events raised by the controls you created inside.

      ' Gambas form
      Dim hButton As Button
      
      Public Sub _new()
        hButton = New Button(Me) As "MyButton"
      End
      
      Public Sub MyButton_Click()
        Print "You have clicked MyButton !"
      End
      
      [GROUP]

      Control groups

      Every control has a (Group) property. When this property is set, the prefix of the event handler name is the name of the group and not the name of the control.

      Let's suppose you have a Button named btnAction with the following Click event handler :

      Public SubbtnAction_Click()

      If you set the (Group) property of btnAction to "MyGroup", then the event handler that will receive events from the button will be the following :

      Pubic Sub MyGroup_Click()

      This property lets you handle events of different controls in a single function. And the controls of the same group do not need to have the same type !

      Note : The old Visual Basic™ veteran may recognize the concept of control array, but in a more powerful implementation. :-)

      [FORM]

      Forms

      In Gambas, a form is its own event observer, so that you can directly manage its events (like Resize, Activate, ...) into its own class code.

      This way, newbies coming from Visual Basic™ are not disorientated :-).

      [EMBED]

      Embedding forms

      You can embed any form into other forms with Gambas!

      To do such a powerful thing, just instanciate the form by passing a parent container as last argument of the constructor.

      For example:

      Dim hForm As MyDialog
      Dim hSuperControl As MyForm
      ' Create a dialog
      hForm = New MyDialog
      ' Insert a form into this dialog
      ' Note that this form takes two parameters before the container
      hSuperControl = New MyForm(Param1, Param2, MyDialog)
      ' Moves and resizes the form
      hSuperControl.Move(8, 8, 128, 64)
      

      Be careful: a form embedded into another form is still a form, and so is its own event observer.

      [TAG]

      Tag Property

      Each control has a Tag property. This property is for the programmer, and can contain any Variant data that you find relevant.

      This is very useful, when you want to distinguish controls of the same group in a common event handler.

      [LAST]

      Last

      The Last keyword returns the last control that has received an event. This is very useful when you want to write an event handler that is independent of any control name.

      For example, let's suppose you want to write a calculator program. You have defined ten buttons, one for each digit, each one in the same control group "Digit". The Tag of each control is set to the digit drawn in the button.

      Your event handler may look like that :

      Public Sub Digit_Click()
      
        Display = Display & Last.Tag
        RefreshDisplay
      END
      
      [LEFT]

      Left$ / Mid$ / Right$

      The well known BASIC routines Left$, Right$ and Mid$ have useful behaviours in Gambas

      The second parameter of Left$ and Right$ is optional, and is one by default.

      Left$("Gambas") returns "G"
      Right$("Gambas") returns "s"

      This second parameter can be negative, and then gives the number of characters not to extract.

      Left$("Gambas", -2) returns "Gamb"
      Right$("Gambas", -2) returns "mbas"

      Likewise, the third argument of Mid$ can be negative, and then gives the number of characters from the end of the string not to extract.

      Mid$("Gambas", 2, -2) returns "amb"

      [OBSERVER]

      Observer

      The Observer class allows you to intercept all events raised by an object before they are actually sent.

      MyTextBox = New TextBox(Me) As "MyTextBox"
      MyObserver = New Observer(MyTextBox) As "MyObserver"
      ...
      Public Sub MyObserver_KeyPress()
        Debug "Got it first"
      End
      
      Public Sub MyTextBox_KeyPress()
        Debug "Got it next"
      End

      The observer can cancel the event with Stop Event to prevent the object from effectively raising it.

      [STRING]

      UTF-8 Strings

      Gambas uses the UTF-8 charset to represent strings in memory.

      But all standard string functions deal with ASCII only: Left, Mid, Right, UCase...

      If you want to deal with UTF-8 strings, you have to use the methods of the String static class, which have the same name as their standard counterparts.

      Print Len("bébé");; Left$("bébé", 3)
      → 6 bé
      
      Print String.Len("bébé");; String.Left("bébé", 3)
      → 4 béb
      [ASSIGNMENT]

      Assignments

      Gambas implements the assignment shortcuts that the C/C++ programmers are used to.

      MyVariable += 2
      MyVariable *= 4
      MyVariable &= "Great"
      is an equivalent of
      MyVariable = MyVariable + 2
      MyVariable = MyVariable * 4
      MyVariable = MyVariable & "Great"

      And so on...

      [DEBUG]

      Debug

      You can use the Debug instruction to print debugging messages to the console (namely the standard error output). It behaves exactly like the Print instruction.

      These messages are prefixed with the class name, method name and line number of the Debug instruction. If you don't want that prefix, you can use the Error instruction instead of Debug.

      The debugging messages are automatically removed when creating an executable without debugging information.

      [TRY]

      Error management (1)

      Error management in Gambasis done with the following instructions: Try, Error, Catch, and Finally.

      Try tries to execute a statement without raising an error. The Error keyword is used just after to know if the statement was executed correctly.

      Try MyFile = Open "/etc/password" For Write
      If Error Then Print "I cannot do what I want!"
      [CATCH]

      Error management (2)

      Error management in Gambasis done with the following instructions: Try, Error, Catch, and Finally.

      Catch indicates the beginning of the error management part of a function or procedure. It is put at the end of the function code.

      The catch part is executed when an error is raised between the beginning of the function execution and its end.

      If an error is raised during the execution of the catch part, it is normally propagated.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
        Close #hFile
        
      Catch ' Executed only if there is an error
      
        Print "Cannot process file "; FileName
      
      End
      [FINALLY]

      Error management (3)

      Error management in Gambasis done with the following instructions: Try, Error, Catch, and Finally.

      Finally introduces the code executed at the end of the function, even if an error was raised during its execution.

      The finally part is not mandatory. If there is a catch part in the function, the finally part must precede it.

      If an error is raised during the execution of the finally part, it is normally propagated.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
      Finally ' Always executed, even if a error is raised
      
        Close #hFile
        
      Catch ' Executed only if there is an error
        
        Print "Cannot print file "; FileName
        
      End
      [OPTIONAL]

      Optional

      Functions and procedures in Gambas can have optional arguments.

      Optional arguments are done simply by putting down the Optional keyword just before the argument name.

      Optional arguments can have an explicit default value too.

      Private Sub MyFunction(Param AS String, Optional Optim AS String = "Default")
        ...
        Print "Required: "; param; ", Optional: "; optim
        ...
      End
      [ARRAY]

      For Each

      In Gambas you can easily loop through an array, a collection, or many other enumerable classes with the For Each instruction.

      For example:

      Dim Xml As New XmlDocument
      Dim Node As XmlNode
      Dim I As Integer
      
      ' Open XML file
      Xml.Open("pokus.xml")
      ' Children is indexed via [i], since it's an array
      For I = 0 To Xml.Root.Children.Count - 1
        'Attributes are looped via For Each, since it's a collection
        For Each Node In Xml.Root.Children[i].Attributes
          Print Node.Name;; Node.Value
        Next
      Next
      [ICON]

      Default Icons

      You can use built in icons for nicer GUI of your application, which are available in several predefined sizes ("small", "medium", "large",...) or absolute sizes (from 16x16 to 256x256).

      For example:

      Image1.Picture = Picture["icon:/32/warning"]
      Image2.Picture = Picture["icon:/small/error"]
      

      Warning: the gb.form component is required.

      [SETTINGS]

      Settings

      If you need to store the configuration of your program (like the geometry of your forms), then you are a lucky guy. It's very easy and elegant in Gambas. :-)

      To save the position of a form:

      Settings.Write(TheForm)

      To recall it:

      Settings.Read(TheForm)
      To save any settings:
      Settings["Slot/Key"] = Value
      And to read the settings back:
      Value = Settings["Slot/Key", DefaultValue]
      These settings are stored in the ~/.config/gambas3/<MyApplication>.conf file, where <MyApplication> is the name of your project.

      Warning: The gb.settings component is required.

      [EDITOR]

      Here is a few editor tips...

      Two Types Of Comments

      ' Normal comment
      '' Bold comment

      Bold comments are used for documenting your code.

      How To Use Code Snippets

      Let's type main then the TAB key. A static public Main startup function is automatically inserted in your code.

      Let's type ds then the TAB key. A local string variable declaration is automatically inserted, and you can type the variable name immediately.

      Code snippets are entirely configurable from the Preferences dialog of IDE's Tools menu.

      [END]

      That's All Folks!

      You have read all the tips of the days. I hope you have became a Gambas expert now ! :-)

      If you want to contribute, send new tips to the following address:

      user@lists.gambas-basic.org

      Thanks beforehand !

      gambas-3.16.3/app/src/gambas3/tips/tips.es.txt000066400000000000000000000304371411575327000210430ustar00rootroot00000000000000[WELCOME]

      ¡Bienvenido a Gambas!

      Gambas es un ambiente integrado de desarrollo basado en un intérprete Basic avanzado.

      Gambas pretende permitirle crear poderosos programas rápida y fácilmente. Pero la claridad de éstos programas es su propia responsabilidad...

      ¡Disfrútelo!

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Cada proyecto debe tener una clase de inicio. Ésta clase de inicio debe definir un método estático y público llamado Main sin argumentos, que actuará como el método de inicio de su programa.

      Usted puede definir la clase de inicio haciendo click sobre ella con el botón derecho del ratón en el árbol del proyecto, y seleccionado Clase de inicio en el menú contextual.

      No es necesario definir un método Main en un formulario de inicio, porque éste ya tiene uno predefinido.

      Éste método predefinido de inicio instancia el formulario y lo muestra, como en Visual Basic™.

      [OPEN]

      La instrucción OPEN de Gambas no trabaja como la de Visual Basic™. Ésta no retorna el archivo como un entero, sino como un objeto File.

      Así que, en lugar de escribir:

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      debe escribir:

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR]

      ¿Sabía que puede concatenar nombres de directorios y nombres de archivos con el operador &/? Éste operador maneja las barras inclinadas de tal forma que la ruta resultante es perfecta.

      Por ejemplo:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      ¿No es maravilloso?

      [EXEC]

      Usted puede crear un archivo ejecutable del proyecto entero. Seleccione Crear ejecutable en el menú Proyecto.

      Cuando Gambas hace un archivo ejecutable, por defecto pone el resultado en el directorio del proyecto. El nombre del ejecutable tiene el mismo nombre de su proyecto.

      [PATH]

      Las rutas relativas tienen un significado especial en Gambas. Ellas siempre se refieren a archivos dentro de sus proyectos.

      No existe el concepto de directorio actual, ni palabra reservada como CHDIR para cambiarlo.

      Tenga cuidado: debe utilizar rutas relativas sólo para acceder archivos del proyecto, porque las rutas absolutas no trabajarán más cuando usted cree un ejecutable.

      [GLOBAL]

      ¡No hay variables globales en Gambas!

      Como apoyo, póngalas en su módulo principal y declárelas como PUBLIC.

      Si no tiene un módulo principal en su proyecto, pero sí un formulario principal, entonces declárelas como STATIC PUBLIC.

      Para acceder a esas variables, debe utilizar el nombre del módulo o formulario principal: MyMainModule.MyGlobalVariable o MyMainForm.MyGlobalVariable.

      [EMPTY]

      Para saber si una cadena está vacía, no es necesario usar la función Len(). Usted puede probarla directamente, ya que una cadena vacía es FALSE y una no vacía es TRUE.

      Por ejemplo, en lugar de hacer:

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      Usted podría hacer:

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [TRANSLATE]

      Las aplicaciones Gambas son completamente traducibles, usted decide cual cadena debe ser traducida, y cual no.

      Para marcar una cadena como traducible, sólo enciérrela entre paréntesis:

      PRINT ("Tradúceme")
      PRINT "¡Pero no me traduzcas a mi!"
      [EVENT]

      Cada control, y cada objeto que puede lanzar eventos, tiene un observador de eventos y un nombre de grupo de evento.

      El observador de eventos atrapa cada evento lanzado por el objeto, y el grupo de nombre es el prefijo del procedimiento llamado para manejar el evento.

      Por defecto, este observador de eventos es el objeto donde usted creó el control, y el nombre de grupo es el nombre del control.

      De esta forma, un formulario recibe todos los eventos lanzados por los controles que usted creó dentro de él.

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "¡Usted ha presionado MyButton!"
      END
      
      [FORM]

      En Gambas, un formulario es su propio observador de eventos, así que usted puede manejar sus eventos directamente (como Resize, Activate, ...) dentro su propio código de clase.

      De esta forma, los novatos que vengan de Visual Basic™ no estarán desorientados :-).

      [EMBED]

      ¡Usted puede incrustar cualquier formulario dentro de otros con Gambas!

      Para hacer una cosa tan poderosa, sólo instancie el formulario pasando un contenedor padre como último argumento del constructor.

      Por ejemplo:

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Crear un dialigo
      hForm = NEW MyDialog
      ' Insertar un formulario dentro de éste dialogo
      ' Note que éste formualario toma dos parámetros antes del contenedor
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Mover y redimensionar el formulario
      hSuperControl.Move(8, 8, 128, 64)

      Tenga cuidado: un formulario incrustado dentro de otro es aún un formulario, y entonces es su propio observador de eventos.

      [GROUP]

      Cada control tiene una propiedad (Group). Cuando ésta propiedad es configurada, el prefirjo del nombre del manejador de eventos es el nombre del grupo y no el nombre del control.

      Supongamos que tiene un Butón llamado btnAction con el siguiente manejador de eventos Click:

      PUBLIC SUB btnAction_Click()

      Si usted configura la propiedad (Group) de btnAction a MyGroup, entonces el manejador de eventos que recibirá los eventos del botón será el siguiente:

      PUBLIC SUB MyGroup_Click()

      Esta propiedad permite manejar eventos de diferentes controles en una función. ¡Y los controles del mismo nombre de grupo no tienen que ser del mismo tipo!

      Nota: Los viejos veteranos de Visual Basic™ podrían reconocer el concepto de arreglo de controles, pero en una implementación más poderosa. :-)

      [TAG]

      Cada control tiene una propiedad Tag. Ésta propiedad es para el programador, y puede contener cualquier dato de tipo VARIANT que usted pueda encontrar relevante.

      Ésto es muy útil, cuando quiere distinguir controles del mismo grupo en un manejador de eventos común.

      [LAST]

      La palabra clave LAST retorna el último control que ha recibido un evento. Ésto es muy últil cuando usted quiere escribir un manejador de eventos que es independiente de cada nombre de control.

      Por ejemplo, supongamos que usted quiere escribir un programa de una calculadora. Usted ha definido diez botones, uno para cada dígito, cada uno en el mismo group "Digit". El Tag de cada control es configurado para el dígito dibujado en el botón. Su manejador de eventos podría lucir así:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Las bien conocidas rutinas BASIC Left$, Right$ y Mid$ tienen conductas útiles en Gambas.

      El segundo parámetro de Left$ y Right$ es opcional, y es uno por defecto.

      Left$("Gambas") retorna "G"
      Right$("Gambas") retorna "s"

      El segundo parámetro puede ser negativo, y entonces da el número de caracteres a no extraer.

      Left$("Gambas", -2) retorna "Gamb"
      Right$("Gambas", -2) retorna "mbas"

      Asimismo, el tercer argumento de Mid$ puede ser negativo, y entonces da el número de caracteres desde el final de la cadena a no extraer.

      Mid$("Gambas", 2, -2) retorna "amb" [OBSERVER]

      El clase Observer le permite interceptar todos los eventos lanzados por un objeto antes que de que sean enviados.

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Tengo ésto primero"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Tengo ésto después"
      END

      El observador puede cancelar el evento para prevenir que el objeto eventualmente lo lance.

      [STRING]

      Gambas usa el juego de caracteres UTF-8 para representar cadenas en la memoria.

      Pero todas las funciones de cadena estándar de Gambas trabajan con ASCII: Left, Mid, Right, UCase...

      Si quiere manipular una cadena UTF-8, tiene que usar los métodos de la clase estática String, la cual tiene el mismo nombre de sus homólogos estándar.

      PRINT Len("bébé");; Left$("bébé", 3)
      6 bé
      PRINT String.Len("bébé");; String.Left("bébé", 3)
      4 béb
      [ASSIGNMENT]

      Gambas implementa los atajos de asignación a los que los programadores de C/C++ están acostumbrados.

      MyVariable += 2 es equivalente a MyVariable = MyVariable + 2

      MyVariable &= "Great" es equivalente a MyVariable = MyVariable & "Great"

      Así consecutivamente...

      [DEBUG]

      Usted puede usar la instrucción DEBUG para imprimir mensajes de depurado en la consola (llamada la salida de errores estándar). Ésta se comporta exactamente como la instrucción PRINT.

      Los mensajes tienen el prefijo del nombre de la clase, nombre del método y número de línea de la instrucción DEBUG.

      Los mensajes de depurado son automáticamente removidos cuando se crea un ejecutable sin la información del depurado.

      [TRY]

      El manejo de Errores en Gambas es echo con las siguientes instrucciones: TRY, ERROR, CATCH, y FINALLY

      TRY trata de ejecutar una sentencia sin lanzar un error. La instrucción ERROR es usada justo después para saber si la instrucción fue ejecutada correctamente.

      TRY MyFile = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "¡No puedo hacer lo que quiero!"
      [CATCH]

      El manejo de Errores en Gambas es echo con las siguientes instrucciones: TRY, ERROR, CATCH, y FINALLY.

      CATCH indica el inicio de la parte de manejo de errores de una función o procedimiento. Es puesto al final del código de la función.

      La parte catch es ejecutada cuando un error es lanzado entre el inicio de la ejecución de la función y su final.

      Si un error es lanzado durante la ejecución de la parte catch, éste es normalmente propagado.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' Ejecutado sólo si hay un error
        PRINT "No se puede procesar el archivo "; FileName
      END
      [FINALLY]

      El manejo de Errores en Gambas es echo con las siguientes instrucciones: TRY, ERROR, CATCH, y FINALLY.

      FINALLY introduce el código ejecutado al final de la función, aunque un error haya sido lanzado durante su ejecución.

      La parte finally no es mandatoria. Si hay una parte catch en la función, la parte finally debe de precederle.

      Si un error es lanzado durante la ejecución de la parte finally, éste es normalmente propagado.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
      FINALLY ' Siempre ejecutada, aunque un error sea lanzado
        CLOSE #hFile
      CATCH ' Ejecutado sólo si hay un error
        PRINT "No se puede imprimir el archivo "; FileName
      END
      [END]

      Usted ha leído todos los consejos de los días. ¡Espero que ahora se haya convertido en en experto en Gambas! :-)

      Si quiere contribuir, envíe nuevos consejos a la siguiente dirección:

      g4mba5@gmail.com

      gambas-3.16.3/app/src/gambas3/tips/tips.fr.txt000066400000000000000000000443161411575327000210440ustar00rootroot00000000000000[WELCOME]

      Bienvenue dans Gambas !

      Gambas est un environnement graphique de développement basé sur un interpréteur Basic avancé.

      Le but de Gambas est de vous permettre de concevoir de puissants programmes, et ce facilement et rapidement. Mais la propreté de ces programmes reste sous votre entière responsabilité...

      En espérant que vous l'apprécierez !

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Classe de démarrage

      Tout projet doit avoir une classe de démarrage. Cette classe de démarrage doit posséder une méthode publique statique appelée Main ne possédant aucun paramètre. Celle-ci agira alors comme méthode de démarrage de votre programme.

      Pour définir la classe de démarrage, cliquez dessus avec le bouton droit dans l'arbre du projet, et cochez l'entrée Classe de démarrage dans le menu contextuel.

      Il n'est pas nécessaire de définir la méthode Main dans un formulaire de démarrage, car celui-ci en possède une par défaut.

      Cette méthode de démarrage par défaut se charge d'instancier puis d'afficher le formulaire, à la manière de Visual Basic™.

      [EXEC]

      Exécutable

      Vous pouvez créer un fichier exécutable à partir de votre projet. Pour cela, sélectionnez Générer l'exécutable... dans le menu Projet.

      L'exécutable est placé par défaut dans le répertoire du projet. Il porte le même nom que le projet. [OPEN]

      Open

      L'instruction Open de Gambas ne fonctionne pas comme celle de Visual Basic™. Elle ne retourne pas le fichier ouvert sous forme d'un entier, mais d'un objet de la classe File.

      Ainsi, au lieu de taper :

      Dim Handle As Integer
      ...
      Open "mon-fichier.txt" For Read As #Handle

      Vous devez taper :

      Dim Handle As File
      ...
      Handle = Open "mon-fichier.txt" For Read
      [CATDIR]

      Concaténation de chemins

      Savez-vous que vous pouvez concaténer des noms de répertoires et de fichiers avec l'opérateur &/ ?

      Cet opérateur s'occupe d'ajouter le caractère de délimitation de répertoire '/' lorsque c'est nécessaire.

      Par exemple :

      Print "/home/gambas" &/ ".bashrc"
      → /home/gambas/.bashrc
      
      Print "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      → /home/gambas/tmp/foo.bar
      

      N'est-ce pas merveilleux ? :-) [PATH]

      Chemins relatifs

      Les chemins relatifs ont une signification particulière dans Gambas. Ils font référence aux fichiers situés à l'intérieur de votre projet.

      Il n'y a pas de concept de répertoire courant, et aucune instruction telle que CHDIR qui serait susceptible de le modifier.

      Attention : vous devez toujours utiliser des chemins relatifs pour accéder aux fichiers de votre projet, car les chemins absolus vers ces fichiers n'ont plus de signification lorsque le projet est transformé en exécutable. [GLOBAL]

      Variables globales

      Il n'y a pas de variables globales en Gambas !

      Par contre, vous pouvez placer les variables auxquelles vous désirez accéder depuis n'importe quelle partie de votre projet à l'intérieur de votre module principal en les déclarant Public.

      Si vous n'avez pas de module principal, mais un formulaire principal, déclarez-les comme Static Public.

      Pour accéder à ces variables, vous devez utiliser le nom du module ou du formulaire principal ainsi :

      MonModulePrincipal.MaVariableGlobale

      ou bien

      MonFormulairePrincipal.MaVariableGlobale [EMPTY]

      Chaînes vides

      Pour savoir si une chaîne est vide, il n'est pas nécessaire d'effectuer une comparaison avec "" ou bien d'utiliser la fonction Len(). Il est possible de la tester directement, car une chaîne vide est équivalente à False et une chaîne non-vide est équivalente à True.

      Par exemple, plutôt que de faire :

      If Len(MaChaine) > 0 Then ...
      If Len(MaChaine) = 0 Then ...

      Vous devriez plutôt faire :

      If MaChaine Then ...
      If Not MaChaine Then ...
      [TRANSLATE]

      Traduction

      Un programme écrit en Gambas est traduisible dans n'importe quel langue, à condition que vous indiquiez parmi les chaînes de caractères du programme lesquelles doivent être traduites, et lesquelles ne le doivent pas.

      Pour indiquer quelles chaînes doivent être traduites, il suffit de les écrire entre parenthèses:

      Print ("Traduisez-moi")
      Print "Mais ne me traduisez pas!"
      [SUBST]

      Subst$

      La fonction Subst$() est très utile pour internationaliser votre application.

      Elle prend au moins deux arguments. Le premier est le masque de texte à l'intérieur duquel les substitutions vont s'appliquer. Les autres sont les substitutions, numérotées en commençant par un.

      Chaque occurence &X de la chaîne de substitution sera remplacée par le Xème argument à substituer. Par exemple :

      Print Subst(("Substitution de &1, &2 et &3"),
        "premier", "deuxième", "troisième")
      
      → Substitution de premier, deuxième et troisième
      [EVENT]

      Gestionnaires d'évènements

      Chaque contrôle, et chaque objet pouvant générer des évènements, possède un observateur d'évènement et un nom de groupe d'évènement.

      L'observateur d'évènement reçoit chaque évènement généré par un objet, et le nom de groupe d'évènenement est le préfixe de la fonction qui sera appelée pour gérer l'évènement. Cette fonction est appelée gestionnaire d'évènements.

      Par défaut, l'observateur d'évènement est l'objet à l'intérieur duquel vous avez créé le contrôle, et le nom de groupe est le nom du contrôle.

      De cette manière, un formulaire recevra tous les évènements des contrôles lui appartenant.

      ' Gambas form
      Dim hButton As Button
      
      Public Sub _new()
        hButton = New Button(Me) As "MonBouton"
      End
      
      Public Sub MonButton_Click()
        Print "Vous avez cliqué sur MonBouton !"
      End
      
      [FORM]

      Formulaires

      En Gambas, un formulaire est son propre observateur d'évènements, afin que vous puissez directement gérer ses évènements (comme Resize, Activate, ...) dans le code même de la classe associée.

      De cette manière, les débutants venant de Visual Basic™ ne sont pas désorientés :-). [EMBED]

      Formulaires imbriqués

      Vous pouvez imbriquer un formulaire à l'intérieur d'un autre en Gambas ! Pour cela, instanciez simplement votre formulaire en lui passant un conteneur parent en argument supplémentaire.

      Par exemple :

      Dim hForm As MyDialog
      Dim hSuperControl As MyForm
      
      ' Création d'une boîte dialogue
      hForm = New MyDialog
      ' Insertion d'un formulaire dans le dialogue
      ' Notez que le constructeur du formulaire prend deux arguments avant 
      ' le conteneur
      hSuperControl = New MyForm(Param1, Param2, MyDialog)
      ' Déplacement et redimensionnement du formulaire
      hSuperControl.Move(8, 8, 128, 64)
      

      Attention : un formulaire imbriqué reste un formulaire, et par conséquent est son propre observateur d'évènements.

      [GROUP]

      Groupes de contrôles

      Chaque contrôle possède une propriété (Group). Lorsque cette propriété est définie, le préfixe de chaque gestionnaire d'évènement devient le nom de ce groupe et non plus le nom du contrôle.

      Supposons qu'on ait un Button appelé btnAction avec le gestionnaire d'évènement Click suivant :

      Public Sub btnAction_Click()

      Si vous définissez la propriété (Group) de btnAction à "MyGroup", alors le gestionnaire d'évènement sera le suivant :

      Public Sub MyGroup_Click()

      Cette propriété vous permet de gérer les évènements de différents contrôles au sein d'une seule fonction. Et les contrôles d'un même groupe peuvent être de types différents !

      Remarque : le bon vieux vétéran du Visual Basic reconnaîtra éventuellement le concept de tableau de contrôle, mais dans une implémentation bien plus puissante. :-)

      [TAG]

      La propriété Tag

      Chaque contrôle possède une propriété Tag. Cette propriété est destinée au programmeur, et peut contenir n'importe quel donnée de type Variant que vous trouverez adéquate.

      Ceci est très utile si, par exemple, vous voulez distinguer les contrôles d'un même groupe au sein de leur gestionnaire d'évènement commun.

      [LAST]

      Last

      Le mot-clef Last retourne le dernier contrôle ayant reçu un évènement. Ceci est très utile si vous voulez écrire un gestionnaire d'évènement indépendant d'un nom de contrôle.

      Par exemple, supposons que vous voulez programmez une calculatrice. Vous avez défini dix boutons, un pour chaque chiffre, tous dans le même groupe "Digit". La propriété Tag de chaque bouton contient le chiffre dessiné sur le bouton.

      Votre gestionnaire d'évènement ressemblera à ceci :

      Public Sub Digit_Click()
      
        Display = Display & Last.Tag
        RefreshDisplay
      
      End
      [LEFT]

      Left$ / Mid$ / Right$

      Les fonctions BASIC bien connues que sont Left$, Right$ et Mid$ possèdent des syntaxes spécifiques bien utiles en Gambas.

      Le deuxième argument de Left$ et de Right$ est optionnel, et vaut un par défaut.

      Left$("Gambas") retourne "G".
      Right$("Gambas") retourne "s".

      Ce second argument peut être négatif. Il donne alors le nombre de caractères à ne pas extraire.

      Left$("Gambas", -2) retourne "Gamb".
      Right$("Gambas", -2) retourne "mbas".

      De même, le troisième argument de Mid$ peut être négatif. Il donne alors le nombre de caractères depuis la fin de la chaîne à ne pas extraire.

      Mid$("Gambas", 2, -2) retourne "amb".

      [OBSERVER]

      Observer

      La classe Observer vous permet d'intercepter n'importe quel évènement de n'importe quel objet avant même qu'il ait été effectivement émis.

      MyTextBox = New TextBox(Me) As "MyTextBox"
      MyObserver = New Observer(MyTextBox) As "MyObserver"
      ...
      Public Sub MyObserver_KeyPress()
        Debug "Reçu en premier"
      End
      
      Public Sub MyTextBox_KeyPress()
        Debug "Reçu en dernier"
      End
      L'observateur peut annuler l'évènement avec Stop Event pour empêcher son émission. [STRING]

      Chaînes UTF-8

      Gambas utilise le jeu de caractères UTF-8 pour représenter les chaînes de caractères en mémoire.

      Mais les fonctions de traitement de chaînes de caractères standardes ne fonctionnent qu'avec de l'ASCII : Left, Mid, Right, UCase...

      Si vous voulez manipuler des chaînes de caractères UTF-8, vous devez utiliser les méthodes de la classe statique String, qui possèdent les mêmes noms que leur équivalent standardes.

      Print Len("bébé");; Left$("bébé", 3)
      → 6 bé
      
      Print String.Len("bébé");; String.Left("bébé", 3)
      → 4 béb
      [ASSIGNMENT]

      Assignations

      Gambas implémente les raccourcis d'assignation auxquels les programmeurs C/C++ sont habitués.

      MyVariable += 2
      MyVariable *= 4
      MyVariable &= "Great"
      équivaut à
      MyVariable = MyVariable + 2
      MyVariable = MyVariable * 4
      MyVariable = MyVariable & "Great"

      Et ainsi de suite... [DEBUG]

      Debug

      Vous pouvez utiliser l'instruction Debug pour imprimer des messages de débogage sur la console (c'est-à-dire la sortie erreur standard). Elle se comporte exactement comme l'instruction Print.

      Ces messages sont prefixés avec le nom de la classe, le nom de la méthode et le numéro de ligne de l'instruction Debug. Si vous ne voulez pas de ce préfixe, vous pouvez utiliser l'instruction Error à la place de Debug.

      Les messages de débogages sont automatiquement ignorés lorsque vous créez un exécutable privé des informations de débogage. [TRY]

      Gestion des erreurs (1)

      La gestion des erreurs en Gambas s'effectue à l'aide des instructions suivantes : Try, Error, Catch, et Finally.

      Try essaie d'exécuter une instruction sans déclencher d'erreur. Le mot-clef Error est utilisé juste après pour savoir si l'instruction s'est exécutée correctement.

      Try MyFile = Open "/etc/password" For Write
      If Error Then Print "Je ne peux pas faire tout ce que je veux !"
      [CATCH]

      Gestion des erreurs (2)

      La gestion des erreurs en Gambas s'effectue à l'aide des instructions suivantes : Try, Error, Catch, et Finally.

      Catch marque le début du gestionnaire d'erreurs d'une fonction ou d'une procédure. Il doit être placé à la fin du code de la fonction.

      Ce gestionnaire d'erreur est exécuté lorsqu'une erreur est levée entre le début et la fin de l'exécution de la fonction.

      Si une erreur survient pendant l'exécution du gestionnaire d'erreur, elle est propagée normalement.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
        Close #hFile
        
      Catch ' Exécuté seulement si il y'a eu une erreur
      
        Print "Impossible de traiter le fichier "; FileName
      
      End
      [FINALLY]

      Gestion des erreurs (3)

      La gestion des erreurs en Gambas s'effectue à l'aide des instructions suivantes : Try, Error, Catch, et Finally.

      Finally introduit une partie de code exécutée à la fin de la fonction dans tous les cas, même si une erreur a été levée pendant l'exécution de la fonciton.

      L'utilisation de Finally est facultative. Mais si l'instruction Catch est utilisée, alors Finally doit obligatoirement la précéder.

      Si une erreur survient pendant l'exécution du code introduit par Finally, elle est propagée normalement.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
      Finally ' Toujours exécuté, même s'il y a eu une erreur
      
        Close #hFile
        
      Catch ' Exécuté seulement en cas d'erreur
        
        Print "Cannot print file "; FileName
        
      End
      [OPTIONAL]

      Optional

      Les fonctions ou procédures de Gambas peuvent avoir des arguments optionels.

      Les arguments sont rendus optionnels en les prefixant simplement avec le mot-clef Optional.

      Les arguments optionnels peuvent aussi avoir une valeur par défaut explicite.

      Private Sub MyFunction(Param AS String, Optional Optim AS String = "Default")
        ...
        Print "Obligatoire: "; param; ", Optionnel: "; optim
        ...
      End
      [ARRAY]

      For Each

      En Gambas vous pouvez facilement enumérer le contenu d'un tableau, d'une collection, ou de toute autre classe enumérable, avec l'instruction For Each.

      Par exemple :

      Dim Xml As New XmlDocument
      Dim Node As XmlNode
      Dim I As Integer
      
      ' Ouverture du fichier XML
      Xml.Open("pokus.xml")
      ' Les noeuds enfants sont indexés avec [I], car il s'agit
      ' d'un tableau
      For I = 0 To Xml.Root.Children.Count - 1
        ' Les attributs sont énumérés avec For Each, car il s'agit
        ' d'une collection
        For Each Node In Xml.Root.Children[i].Attributes
          Print Node.Name;; Node.Value
        Next
      Next
      [ICON]

      Icônes prédéfinies

      Vous pouvez utiliser les icônes prédéfinies pour améliorer l'apparence de vos interfaces. Ces icônes sont disponibles en tailles prédéfinies ("small", "medium", "large",...) ou bien en tailles absolues (de 16x16 à 256x256).

      Par exemple :

      Image1.Picture = Picture["icon:/32/warning"]
      Image2.Picture = Picture["icon:/small/error"]
      

      Attention : le composant gb.form est requis. [SETTINGS]

      Settings

      Si vous avez besoin de mémoriser la configuration de votre programme (comme la géométrie de vos formulaires) alors vous être chanceux. C'est très simple et très élégant à faire en Gambas. :-)

      Pour enregistrer la position d'un formulaire :

      Settings.Write(TheForm)

      Pour la rappeler :

      Settings.Read(TheForm)

      Pour enregistrer un élément de configuration :

      Settings["Slot/Key"] = Value

      Et pour le rappeler :

      Value = Settings["Slot/Key", DefaultValue]
      La configuration est enregistrée dans le fichier ~/.config/gambas3/<MonApplication>.conf, où <MonApplication> est le nom de votre projet.

      Attention : Le composant gb.settings est requis. [EDITOR]

      Voici quelques astuces de l'éditeur...

      Deux types de commentaires

      ' Commentaire normal
      '' Commentaire en gras

      Les commentaires en gras sont utilisés pour documenter votre code.

      Comment utiliser les fragments de code

      Saisissez main puis appuyez sur la touche TAB. Une fonction de démarrage publique et statique Main est automatiquement insérée dans votre code.

      Saisissez ds puis appuyez sur la touche TAB. Une déclaration de variable locale de type String est insérée automatiquement, et vous pouvez saisir le nom de la variable immédiatement.

      Les fragments code sont intégralement configurables depuis la boîte de dialogue des options globales de l'environnement de développement.

      [END]

      C'est terminé !

      Vous avez lu toutes les astuces du jour. J'espère que vous êtes devenu un expert Gambas maintenant ! :-)

      Si vous désirez ajouter de nouvelles astuces de votre cru, n'hésitez-pas à les envoyer à l'adresse suivante :

      g4mba5@gmail.com

      Merci d'avance !

      gambas-3.16.3/app/src/gambas3/tips/tips.it.txt000066400000000000000000000404401411575327000210430ustar00rootroot00000000000000[WELCOME]

      Benvenuto in Gambas !

      Gambas è un ambiente grafico di sviluppo basato su un interprete avanzato Basic.

      L'obiettivo di Gambas è quello di permettere di creare programmi potenti in maniera facile e veloce. Ma la responsabilità di creare programmi puliti è tutta vostra...

      Spero vi piaccia!

      Benoît Minisini
      g4mba5@gmail.com




      [STARTUP]

      Ogni progetto deve avere una classe di inizio. Questa classe di inizio deve definire un metodo pubblico (public) e statico (static) denominato Main senza argomenti, che si comporterà come il metodo di inizio del tuo programma

      Puoi definire la classe di inizio cliccando su di essa con il tasto destro del mouse e selezionando Classe di avvio nel menù a cascata

      Non è necessario definire un metodo Main in un Form di avvio perché ne esiste già uno predefinito.

      Questo metodo predefinito inizializza il form e lo mostra, come in Visual Basic™.

      [OPEN]

      L'Istruzione OPEN di Gambas non si comporta nella stessa maniera che in Visual Basic. Non ritorna il file come un Integer, ma come un ogetto File.

      In pratica, invece di digitare:

      DIM handle AS Integer
      ...
      OPEN "ilmiofile" FOR READ AS #handle

      Devi digitare :

      DIM handle AS File
      ...
      handle = OPEN "ilmiofile" FOR READ
      [CATDIR]

      Lo sapevi che puoi concatenare nomi di directory e nomi di file con l'operatore &/? Questo operatore aggiunge se necessario la slash ("/") in maniera tale che l'indirizzo risultante sia perfetto.

      Per esempio :

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      Non è stupendo ?

      [EXEC]

      Puoi realizzare un file eseguibile di tutto il tuo progetto. Seleziona Crea eseguibile nel menu Progetto.

      Quando Gambas crea un file eseguibile, colloca il risultato direttamente nella directory del tuo progetto e il nome del file eseguibile sarà quello del tuo progetto

      [PATH]

      I percorsi relativi hanno un significato speciale in Gambas. Sono sempre riferiti a file dentro il tuo progetto.

      Non c'è il concetto di directory corrente, e nessuna parola chiave come CHDIR per cambiarla.

      Attenzione: devi usare i percorsi relativi solo per accedere ai file di progetto, perché i percorsi assoluti non funzioneranno quando crei l'eseguibile. [GLOBAL] Non ci sono variabili globali in Gambas!

      Come sostituto, dichiarale nel modulo principale come PUBLIC.

      Se non hai un modulo principale nel tuo progetto, ma un form principale, allora dichiarale come STATIC PUBLIC.

      Per accedere a queste variabili, devi usare il nome del modulo principale o form: MyMainModule.MyGlobalVariable o MyMainForm.MyGlobalVariable. [EMPTY]

      Per sapere se una stringa è vuota non è necessario usare la funzione Len() . Puoi direttamente testare la stringa, visto che una stringa vuota è FALSE e una non vuota è TRUE.

      Per esempio, invece di :

      IF Len(Lamiastringa) > 0 THEN ...
      IF Len(Lamiastringa) = 0 THEN ...

      Puoi fare :

      IF Lamiastringa THEN ...
      IF NOT Lamiastringa THEN ...
      [TRANSLATE]

      Traduzione

      Le applicazioni Gambas sono completamente traducibili, a condizione che tu dica quali stringhe devono essere tradotte e quali no.

      Per contrassegnare le stringhe come traducibili, racchiudile tra parentesi tonde:

      Print ("Traducimi")
      Print "Non tradurmi!"
      [SUBST]

      Subst$

      La funzione Subst$() è molto utile per internazionalizzare la tua applicazione.

      Ci vogliono almeno due argomenti. Il primo è la maschera di testo su cui si applica la sostituzione. Gli altri sono gli argomenti di sostituzione, numerati a partire da uno.

      Ogni modello &X nella stringa di sostituzione verrà sostituito dall'argomento di sostituzione X. Per esempio:

      Print Subst(("Sostituzione di &1, &2 e &3"),
        "primo", "secondo", "terzo")
      
      → Sostituzione di primo, secondo e terzo
      [EVENT]

      Tutti i controlli e tutti gli oggetti che possono avere eventi, hanno un Osservatore di eventi e un nome di gruppo del evento.

      L'osservatore di eventi coglie tutti gli eventi prodotti dall'oggetto, e il nome del gruppo del evento è il prefisso del procedimento incaricato di gestire l'evento.

      Di default, questo osservatore di eventi è l'oggetto dove si è creato il controllo, e il nome di gruppo è il nome del controllo.

      In questo modo, un form riceve tutti gli eventi prodotti dai controlli che tu ci hai creato dentro.

      ' Gambas form
      
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        ...
        hButton = NEW Button(ME) AS "Ilmiopulsante"
        ...
      END
      
      PUBLIC SUB Ilmiopulsante_Click()
        ...
      END
      
      [GROUP]

      Tutti i controlli hanno una proprietà (Group). Quando questa proprietà è utilizzata, il prefisso del gestore di eventi è il nome del gruppo e non il nome del controllo.

      Supponiamo di avere un Button chiamato btnAzione con il gestore di eventi Click seguente :

      PUBLIC SUB btnAzione_Click()

      Se definisci la proprietà (Group) di btnAzione come IlMioGruppo, Allora il gestore di eventi che riceverà gli eventi del pulsante sarà il seguente:

      PUBLIC SUB IlMioGruppo_Click()

      Questa proprietà permette di gestire vari eventi con una semplice funzione. E i controlli dello stesso gruppo non devono per forza essere dello stesso tipo !!!

      Nota : I veterani del vecchio Visual Basic riconosceranno il concetto di control array, soltanto che qui viene implementato in un modo più potente. :-)

      [FORM]

      Un form è l'osservatore di eventi di se stesso, in questo modo puoi gestire direttamente i suoi eventi (Resize, Activate, ...) dentro il codice della sua stessa classe.

      In questo modo, i nuovi arrivati da Visual Basic non si sentiranno persi :-).

      [EMBED]

      Con Gambas puoi fare in modo che qualsiasi form venga racchiuso in un altro form!

      Per fare una cosa così utile devi soltanto inizializzare il form passando un contenitore padre come ultimo argomento nel costruttore.

      Per esempio :

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Crea un dialogo
      hForm = NEW MyDialog
      ' Inserisce un form in questo dialogo
      ' Nota che questo form riceve due parametri prima del contenitore
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Muove e ridimensiona il form
      hSuperControl.Move(8, 8, 128, 64)

      Ricorda che: un form racchiuso in un altro continua ad essere un form e quindi osservatore di eventi di se stesso.

      [TAG]

      Tutti i controlli hanno una proprietà chiamata Tag Questa proprietà è pensata per essere usata dai programmatori e può contenere qualsiasi dato VARIANT che credi utile.

      Questo è molto utile quando vuoi differenziare controlli dello stesso gruppo nello stesso gestore di eventi.

      [LAST]

      La parola chiave LAST ritorna l'ultimo controllo che ha ricevuto un evento. E' molto utile quando vuoi scrivere un gestore di eventi che sia indipendente dal nome del controllo.

      Supponiamo di voler scrivere un programma calcolatrice. Hai definito dieci pulsanti, uno per ogni numero e tutti con lo stesso group "Digit". Il valore del Tag di ogni controllo sarà il numero visualizzato da ogni pulsante. Il tuo gestore di eventi sarà più o meno così :

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Le famose routine Left$, Right$, Mid$ di BASIC hanno un comportamento molto utile in Gambas.

      Il secondo parametro di Left$ e Right$ è facoltativo, e per default è pari a uno.

      Left$("Gambas") ritorna "G"
      Right$("Gambas") ritorna "s"

      Il secondo parametro può essere negativo e in questo caso rappresenta il numero di caratteri da non ritornare.

      Left$("Gambas", -2) ritorna "Gamb"
      Right$("Gambas", -2) ritorna "mbas"

      Allo stesso modo, il terzo parametro di Mid$ può essere negativo, e quindi rappresentare il numero di caratteri dalla fine della stringa da non ritornare.

      Mid$("Gambas", 2, -2) ritorna "amb" [OBSERVER]

      Observer

      La classe Observer ti consente di intercettare tutti gli eventi generati da un oggetto prima che vengano effettivamente inviati.

      MyTextBox = New TextBox(Me) As "MyTextBox"
      MyObserver = New Observer(MyTextBox) As "MyObserver"
      ...
      Public Sub MyObserver_KeyPress()
        Debug "Got it first"
      End
      
      Public Sub MyTextBox_KeyPress()
        Debug "Got it next"
      End
      L'osservatore può annullare l'evento con Stop Event per prevenire l'oggetto dal sollevarlo effettivamente. [STRING]

      UTF-8 Strings

      Gambas utilizza il set di caratteri UTF-8 per rappresentare le stringhe in memoria.

      Ma tutte le funzioni di stringa standard riguardano solo ASCII: Left, Mid, Right, UCase...

      Se si desidera gestire le stringhe UTF-8, è necessario utilizzare i metodi della classe statica String, che hanno lo stesso nome delle loro controparti standard.

      Print Len("bébé");; Left$("bébé", 3)
      → 6 bé
      
      Print String.Len("bébé");; String.Left("bébé", 3)
      → 4 béb
      [ASSIGNMENT]

      Assegnazioni

      Gambas implementa le scorciatoie di assegnazione a cui i programmatori C / C ++ sono abituati.

      MyVariable += 2
      MyVariable *= 4
      MyVariable &= "Great"
      è un equivalente di
      MyVariable = MyVariable + 2
      MyVariable = MyVariable * 4
      MyVariable = MyVariable & "Great"

      E così via... [DEBUG]

      Debug

      È possibile utilizzare l'istruzione Debug per stampare messaggi di debug sulla console (ovvero l'output di errore standard). Si comporta esattamente come l'istruzione Print.

      Questi messaggi hanno come prefisso il nome della classe, il nome del metodo e il numero di riga dell'istruzione Debug. Se non si desidera il prefisso, è possibile utilizzare l'istruzione Error anziché Debug.

      I messaggi di debug vengono automaticamente rimossi durante la creazione di un eseguibile senza eseguire il debug delle informazioni. [TRY]

      Gestione degli errori (1)

      La gestione degli errori in Gambas viene eseguita con le seguenti istruzioni: Try, Error, Catch, and Finally.

      Try prova a eseguire una dichiarazione senza generare un errore. La parola chiave Error viene utilizzata subito dopo per sapere se l'istruzione è stata eseguita correttamente.

      Try MyFile = Open "/etc/password" For Write
      If Error Then Print "Non posso fare quello che voglio!"
      [CATCH]

      Gestione degli errori (2)

      La gestione degli errori in Gambas viene eseguita con le seguenti istruzioni: Try, Error, Catch, and Finally.

      Catch indica l'inizio della parte di gestione degli errori di una funzione o procedura. È messo alla fine del codice della funzione.

      La parte catch viene eseguita quando viene generato un errore tra l'inizio dell'esecuzione della funzione e la sua fine.

      Se viene sollevato un errore durante l'esecuzione della parte catch, l'errore viene propagato normalmente.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
        Close #hFile
        
      Catch ' Eseguito solo se c'è un errore
      
        Print "Impossibile elaborare il file "; FileName
      
      End
      [FINALLY]

      Gestione degli errori (3)

      La gestione degli errori in Gambas viene eseguita con le seguenti istruzioni: Try, Error, Catch, and Finally.

      Finally introduce il codice eseguito alla fine della funzione, anche se viene sollevato un errore durante l'esecuzione.

      La parte finally non è obbligatoria. Se c'è una parte catch nella funzione, la parte finally deve precederla.

      Se viene generato un errore durante l'esecuzione della parte finally, l'errore viene propagato normalmente.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
      Finally ' Viene sempre eseguito, anche se viene sollevato un errore
      
        Close #hFile
        
      Catch ' Eseguito solo se c'è un errore
        
        Print "Impossibile stampare il file "; FileName
        
      End
      [OPTIONAL]

      Optional

      Le funzioni e le procedure in Gambas possono avere argomenti opzionali.

      Gli argomenti opzionali vengono semplicemente fatti mettendo la parola chiave Optional subito prima del nome dell'argomento.

      Gli argomenti opzionali possono avere anche un valore predefinito esplicito.

      Private Sub MyFunction(Param AS String, Optional Optim AS String = "Default")
        ...
        Print "Necessario: "; param; ", Opzionale: "; optim
        ...
      End
      [ARRAY]

      For Each

      In Gambas puoi facilmente scorrere un array, una raccolta o molte altre classi enumerabili con l'istruzione For Each.

      Per esempio:

      Dim Xml As New XmlDocument
      Dim Node As XmlNode
      Dim I As Integer
      
      ' Apre un file XML
      Xml.Open("pokus.xml")
      ' I children sono indicizzati tramite [i], poiché si tratta di un array
      For I = 0 To Xml.Root.Children.Count - 1
        ' Gli attributi vengono ciclati tramite For Each, poiché si tratta di una collection
        For Each Node In Xml.Root.Children[i].Attributes
          Print Node.Name;; Node.Value
        Next
      Next
      [ICON]

      Icone di default

      Puoi utilizzare le icone incorporate per una migliore GUI della tua applicazione, le icone sono disponibili in diverse dimensioni predefinite ("small", "medium", "large",...) o in dimensioni assolute (da 16x16 a 256x256).

      Per esempio:

      Image1.Picture = Picture["icon:/32/warning"]
      Image2.Picture = Picture["icon:/small/error"]
      

      Attenzione: è richiesto il componente gb.form. [SETTINGS]

      Settings

      Se hai bisogno di memorizzare la configurazione del tuo programma (come la geometria dei tuoi form), allora sei un ragazzo fortunato. In Gambas è molto semplice ed elegante. :-)

      Per salvare la posizione di un form:

      Settings.Write(TheForm)

      Per richiamarlo:

      Settings.Read(TheForm)
      Per salvare qualsiasi impostazione:
      Settings["Slot/Key"] = Value
      E per rileggerne le impostazioni:
      Value = Settings["Slot/Key", DefaultValue]
      Queste impostazioni sono memorizzate nel file ~/.config/gambas3/<MyApplication>.conf, dove <MyApplication> è il nome del tuo progetto.

      Attenzione: è richiesto il componente gb.settings. [EDITOR]

      Ecco alcuni suggerimenti per l'editor...

      Due tipi di commenti

      ' Commento normale
      '' Commento in grassetto

      I commenti in grassetto sono usati per documentare il tuo codice.

      Come utilizzare i frammenti di codice

      Digita main quindi il tasto TAB. Una funzione statica e pubblica di avvio Main viene automaticamente inserita nel codice.

      Digita ds quindi il tasto TAB. Una dichiarazione locale di variabile stringa viene inserita automaticamente ed è possibile digitare immediatamente il nome della variabile.

      I frammenti di codice sono completamente configurabili dalla finestra di dialogo Preferenze del menu Strumenti dell'IDE. [END]

      Hai letto tutti i suggerimenti del giorno. Spero che ora tu sia un esperto di Gambas ! :-)

      Se vuoi contribuire, invia i nuovi consigli al seguente indirizzo :

      user@lists.gambas-basic.org

      Grazie in anticipo !

      gambas-3.16.3/app/src/gambas3/tips/tips.nl.txt000066400000000000000000000201241411575327000210350ustar00rootroot00000000000000[WELCOME]

      Welkom bij Gambas !

      Gambas is een grafisch ontwikkel omgeving gebaseerd op een geavanceerdd Basic interpreter.

      Gambas is geschreven om eenvoudig en snel krachtige applicaties te ontwikkelen. Het bouwen van de programmacode blijft je eigen verantwoordelijkheid...

      Veel plezier ermee !

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Elk project moet een startup class hebben. Deze startup class moet een piblieke methode Main hebben, zonder argumenten. Deze Main methode fungeerd als de opstart methode voor de applicatie.

      Je kunt de startup class definieren door in de projectboom met de rechter muisknop op het object te klikken en startup class in het popup menu te selecteren

      Het is niet nodig om een Main methode in een opstart formulier te declareren, omdat het opstart formulier al een Main methode bevat.

      Deze reeds gedefinieerde Main methode initieerd het formulier, net zoals in Visual Basic™.

      [OPEN]

      De OPEN instructie van Gambas werkt niet zoals de Visual Basic variant. Het retourneerd geen integer, maar een File object.

      Dus in plaats van:

      DIM handle AS Integer
      ...
      OPEN "mijnfile" FOR READ AS #handle

      gebruik je :

      DIM handle AS File
      ...
      handle = OPEN "mijnfile" FOR READ
      [CATDIR]

      Weet je dat je directory- en filenamen kunt koppelen met de &/ operator ? Deze operator lost alle problemen met eindigende slashes voor je op.

      Bijvoorbeeld:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      Is dit niet fantastisch ?

      [EXEC]

      Je kunt een 'executable' file (binairy) maken van je gehele project. Selecteer Make executable in het Project menu.

      Als Gambas een binairy file voor je maakt, plaatst het het resultaat in de standaard directory van je project. Deze executable krijgt dezelfde naam als het project.

      [PATH]

      Relatieve paden hebben altijd een speciale betekenis in Gambas. Ze refereren altijd naar bestanden in je project.

      Er is geen concept als current directory, en geen commando als CHDIR om het te veranderen.

      Wees voorzichtig: je moet altijd relatieve paden gebruiken voor verwijzingen naar andere files in het project, omdat volledige paden niet meer werken als er een executable van het project gemaakt wordt.

      [GLOBAL] Er zijn geen globale variabelen in Gambas!

      Als oplossing kun je ze in je main module plaatsen en declareren als PUBLIC.

      Als je geen main module hebt, maar een main form, declareer ze dan als STATIC PUBLIC.

      Om bij deze variabelen te komen gebruik je de naam van de module: MijnMainModule.MijnGlobaleVariable of MijnMainForm.MijnGlobaleVariable. [EMPTY]

      Om te kijken of een string leeg is hoef je geen gebruik te maken van de Len() functie. Je kunt het direct testen: een lege string is FALSE en een niet-lege string is TRUE.

      Bijvoorbeeld, in plaats van :

      IF Len(MijnString) > 0 THEN ...
      IF Len(MijnString) = 0 THEN ...

      Kun je sneller :

      IF MijnString THEN ...
      IF NOT MijnString THEN ...
      [EVENT]

      Elke controller, en elk object dat een gebeurtenis (event) kan oproepen, heeft een event observer en een event group name.

      De event observer ondervangt ieder event opgeroepen door het object, en de 'event group name' is het voorvoegsel van de procedure die opgeroepen wordt om het event af te handelen.

      Standaard is de event observer het object waar je de controller gemaakt hebt, en de group name is de naam van de controller.

      Op deze manier ontvangt een formulier alle gebeurtenissen die door controllers op dit formulier gemaakt zijn.

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "You have clicked MyButton !"
      END
      
      [FORM]

      In Gambas, is een formulier zijn eigen event observer, zodat je gebeurtenissen als Resize, Activate, ...) kunt afhandelen in zijn eigen class code.

      Op deze manier worden de newbies van Visual Basic niet teveel afgeschrikt :-).

      [EMBED]

      Je kunt bij Gambas een formulier in een ander formulier invoegen  !

      Om zo'n krachtige actie te doen hoef je enkel een ouder container (parent) mee te geven als laatste parameter bij het oproepen van het formulier.

      Bij voorbeeld :

      DIM hForm AS MijnDialog
      DIM hSuperControl AS MijnForm

      ' Create a dialog
      hForm = NEW MijnDialog
      ' Insert a form into this dialog
      ' Note that this form takes two parameters before the container
      hSuperControl = NEW MijnForm(Param1, Param2, MijnDialog)
      ' Moves and resizes the form
      hSuperControl.Move(8, 8, 128, 64)

      Let op: een formulier ingevoegd in een ander is nog steeds een formulier, met zijn eigen event observer.

      [GROUP]

      Elke controller heeft een (Group) eigenschap. Als deze eigenschap wordt gebruikt wordt de naam van de groep gebuikt voor het afhandelen van de events, en niet de naam van de controller.

      Stel: we hebben een Button genaamd btnAction Met de volgende Click event handler :

      PUBLIC SUB btnAction_Click()

      Als je de (Group) eigenschap van btnAction zet op MijnGroup, dan wordt de event handlerdie alle events ontvangt:

      PUBLIC SUB MijnGroup_Click()

      Op deze manier kun je verschillende controllers dezelfde functie toekennen. De controllers hoeven hiervoor niet eens van hetzelfde type te zijn!

      NB : Een oude Visual Basic veteraan zal het systeem van een control array herkennen, maar dan in een krachtigere uitvoering :-).

      [TAG]

      Elke controlller heeft een Tag eigenschap. Deze eigenschap is voor de programmeur, en kan elke gewenste VARIANT gegevens bevatten die je relevant vindt.

      Deze eigenschap is erg handig om verschillende controllers die bij elkaar in dezelfde group zitten te onderscheiden binnen de gezamenlijke event handler van deze group.

      [LAST]

      Het LAST commando retourneerd de laatst opgeroepen controller. Dit is erg handis als je een event handler wilt schrijven die onafhankelijk is van de controller naam.

      Bijvoorbeeld: Stel je wilt een rekenmachine programmeren. Je hebt tien knoppen gedefinieerd, elk voor een cijfer, en de knoppen gehangen aan de group "Digit". De Tag van elke controlller is gelijk aan het getal op de button. Je event handler kan er dan zo uit zien :

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      De bekende BASIC routines Left$, Right$ en Mid$ hebben handige functies in Gambas

      De tweede parameter van Left$ en Right$ is optioneel, en is standaard 1.

      Left$("Gambas") retourneerd "G"
      Right$("Gambas") retourneerd "s"

      De tweede parameter mag negatief zijn, en geeft dan het aantal karakters dat je niet wilt.

      Left$("Gambas", -2) retourneerd "Gamb"
      Right$("Gambas", -2) retourneerd "mbas"

      Vanzelfsprekend, het derde argument van Mid$ mag negatief zijn, en geeft dan het aantal karakters vanaf het eind van de string dat genegeerd moet worden.

      Mid$("Gambas", 2, -2) retourneerd "amb" [END]

      Je hebt alle tips van de dag gelezen. Ik hoop dat je nu een Gambas expert geworden bent ! :-)

      Als je tips toe te voegen hebt, zend je nieuwe tips dan naar het volgende adres :

      g4mba5@gmail.com

      Alvast bedankt !

      gambas-3.16.3/app/src/gambas3/tips/tips.pl.txt000066400000000000000000000210041411575327000210350ustar00rootroot00000000000000[WELCOME]

      Witaj w Gambasie !

      Gambas jest zintegrowanym środowiskiem programistycznym bazującym na zaawansowanym interpreterze Basica.

      Gambas umożliwi Ci łatwe i szybkie tworzenie programów. Jednak to, czy programy będą ładne, funcjonalne i przejrzyste zależy tylko od Ciebie...

      Miłej pracy !

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Każdy projekt musi mieć klasę startową. Klasa startowa musi definiować statyczną metodę publiczną o nazwie Main bez argumentów, która uruchomi Twój program.

      Możesz zdefiniować klasę startową poprzez kliknięcie prawym klawiszem myszki w drzewie projektu i wybrać opcję Klasa startowa w menu podręcznym.

      Nie jest konieczne definiowanie metody Main w formularzu startowym, ponieważ jest już w nim predefiniowana.

      Ta predefiniowana metoda startowa inicjuje formularz i wyświetla go podobnie jak w Visual Basic™.

      [OPEN]

      W Gambasie instrukcja OPEN nie działa jak ta w Visual Basicu. Nie zwraca pliku jako integer, ale jako obiekt File.

      Dlatego, zamiast pisać :

      DIM hPliku AS Integer
      ...
      OPEN "MójPlik" FOR READ AS #hPliku

      musisz napisać :

      DIM hPliku AS File
      ...
      hPliku = OPEN "MójPlik" FOR READ
      [CATDIR]

      Czy wiesz, że możesz połączyć ścieżkę z nazwą pliku używając operatora &/ ? Ten operator połączy dwa łańcuchy znaków dodając między nimi '/', jeśli wcześniej go tam nie było, lub zredukuje jego wielokrotność.

      Przykład:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      Czyż to nie wpaniałe ?

      [EXEC]

      Z projektu możesz utworzyć plik uruchamialny. Wybierz opcję Utwórz plik uruchamialny w menu Projekt.

      Kiedy Gambas stworzy plik uruchamialny umieści go w domyślnym katalogu projektu. Nazwa pliku uruchamialnego jest taka sama jak nazwa Twojego projektu.

      [PATH]

      Ścieżki względne mają specjalne znaczenie w Gambasie. Zawsze odwołują się do pliku wewnątrz Twojego projektu.

      Nie istnieje idea bieżącego katalogu i nie ma słowa kluczowego takiego jak CHDIR, które pozwalałoby na zmianę katalogu roboczego.

      Uwaga: musisz używać tylko ścieżek względnych do dostępu do plików wewnątrz projektu, ponieważ ścieżki bezwględne po utworzeniu pliku uruchamialnego nie będą działać poprawnie. [GLOBAL] W Gambasie nie ma zmiennych globalnych!

      Aby to obejść, zadeklaruj zmienne jako PUBLIC w module startowym.

      Jeśli nie masz w projekcie modułu startowego tylko formularz startowy, wtedy zadeklaruj zmienne jako STATIC PUBLIC.

      Aby mieć dostęp do tych zmiennych musisz użyć nazwy modułu lub formularza startowego przed nazwą zmiennej: MójModułStartowy.MojaZmiennaGlobalna lub MójFormularzStartowy.MojaZmiennaGlobalna. [EMPTY]

      Nie jest konieczne użycie funcji Len() aby się dowiedzieć czy łańcuch znaków jest pusty. Możesz przetestować go bezpośrednio; jeśli łańcuch jest pusty, to zostanie zwrócone FALSE, a jeśli nie jest pusty zostanie zwrócone TRUE.

      Na przykład, zamiast :

      IF Len(MójŁańcuchZnaków) > 0 THEN ...
      IF Len(MójŁańcuchZnaków) = 0 THEN ...

      Możesz wpisać :

      IF MójŁańcuchZnaków THEN ...
      IF NOT MójŁańcuchZnaków THEN ...
      [EVENT]

      Każda kontrolka i każdy obiekt, który może wywołać zdarzenie posiada obserwatora zdarzenia (event observer) i nazwę grupy zdarzenia.

      Obserwator zdarzenia wyłapuje każde zdarzenie wywołane przez obiekt, a nazwa grupy zdarzenia jest prefiksem procedury wywołanej do zarządzania zdarzeniem.

      Domyślnie, obserwator zdarzenia jest obiektem utworzonej kontrolki, a nazwa grupy jest nazwą tej kontrolki.

      W ten sposób formularz otrzymuje wszystkie zdarzenia wywołane przez kontrolki utworzone wewnątrz tego formularza.

      ' Gambas form
      DIM hPrzycisku AS Button
      
      PUBLIC SUB _new()
        hPrzycisku = NEW Button(ME) AS "MójPrzycisk"
      END
      
      PUBLIC SUB MójPrzycisk_Click()
        PRINT "Kliknąłeś w MójPrzycisk !"
      END
      
      [FORM]

      W Gambasie formularz jest obserwatorem własnych zdarzeń, w związku z czym możesz bezpośrednio zarządzać jego zdarzeniami (takimi jak Resize, Activate, ...) w kodzie jego własnej klasy.

      Dzięki temu początkujący w Gambasie, pracujący wcześniej w Visual Basicu nie są zdezorientowani :-).

      [EMBED]

      W Gambasie możesz osadzać dowolny formularz w innym formularzu !

      Aby uzyskać tak wspaniałą funkcjonalność wystarczy zainicjować formularz poprzez podanie nadrzędnego kontenera jako ostatniego argumentu konstruktora.

      Przykład :

      DIM hFormularza AS MójFormularz
      DIM hPodformularza AS MójPodformularz

      ' Tworzenie formularza głównego
      hFormularza = NEW MójFormularz
      ' Wstawienie podformularza do formularza głównego
      'Zauważ, że ten formularz pobiera dwa parametry przed kontenerem
      hPodformularza = NEW MójPodformularz(Param1, Param2, MójFormularz)
      ' Przenieś i zmień wielkość formularza
      hPodformularza.Move(8, 8, 128, 64)

      Uwaga: formularz osadzony w innym formularzu jest nadal formularzem i tym samym jest własnym obserwatorem zdarzeń.

      [GROUP]

      Każda kontrolka posiada właściwość (Group). Kiedy właściwość ta jest ustawiona, prefiks nazwy uchwytu zdarzenia jest nazwą grupy, a nie nazwą kontrolki.

      Załóżmy, że masz Przycisk o nazwie btnMójPrzycisk z następującym uchwytem zdarzenia Click:

      PUBLIC SUB btnMójPrzycisk_Click()

      Jesli ustawisz właściwość (Group) dla btnMójPrzycisk na MojaGrupa wtedy uchwyt zdarzenia, który otrzyma zdarzenia z przycisku będzie następujący:

      PUBLIC SUB MojaGrupa_Click()

      Ta właściwość pozwala Ci na wychwytywanie zdarzeń różnych kontrolek w jednej funkcji, a kontrolki tej samej grupy nie muszą być tego samego typu !

      Notatka : Starzy weterani Visual Basica moga rozpoznać ideę tablicy kontrolek (control array), ale w bardziej funkcjonalnej implementacji. :-)

      [TAG]

      Każda kontrolka ma właściwość Tag. Ta właściwość jest przeznaczona dla programistów i może zawierać dowolne dane typu VARIANT, które uważa on za istotne.

      To jest bardzo użyteczne kiedy chcesz rozróżnić kontrolki tej samej grupy we wspólnym uchwycie zdarzenia.

      [LAST]

      Słowo kluczowe LAST zwraca ostatnią kontrolkę, która odebrała zdarzenie. Jest to bardzo użyteczne kiedy chcesz napisać uchwyt zdarzenia, który jest niezależny od nazwy kontrolki.

      Przykładowo, przypuśćmy, że chcesz napisać program kalkulator. Zdefiniowałeś przyciski, po jednym dla każdej cyfry, każdy w tej samej grupie o nazwie "Cyfry". Właściwość Tag każdej kontrolki zawiera cyfrę widoczną na przycisku. Twój uchwyt zdarzenia może wyglądać tak:

      PUBLIC SUB Cyfry_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Dobrze znane funkcje z BASICa: Left$, Right$ i Mid$ mają dodatkową użyteczność w Gambasie.

      Drugi parametr Left$ i Right$ jest opcjonalny i domyślnie zwraca jeden znak.

      Left$("Gambas") zwraca "G"
      Right$("Gambas") zwraca "s"

      Drugi parametr może być ujemny i wtedy funkcja zwraca wartość bez określonej ilości niechcianych znaków.

      Left$("Gambas", -2) zwraca "Gamb"
      Right$("Gambas", -2) zwraca "mbas"

      Na podobnej zasadzie, trzeci argument funkcji Mid$ może mieć również wartość ujemną.

      Mid$("Gambas", 2, -2) zwraca "amb" [END]

      Przeczytałeś wszystkie porady dnia. Mam nadzieję, że dzięki nim stałeś się ekspertem programowania w Gambasie ! :-)

      Jesli chcesz dodać nowe porady, prześlij je na adres  :

      g4mba5@gmail.com

      Z góry dziękuję !

      gambas-3.16.3/app/src/gambas3/tips/tips.ru.txt000066400000000000000000000612741411575327000210650ustar00rootroot00000000000000[WELCOME]

      Добро пожаловать в Gambas!

      Gambas - это графическая среда разработки, основанная на продвинутом интерпретаторе Basic.

      Цель Gambas - дать вам возможность легко и быстро создавать мощные программы. Но чистые программы остаются на вашей ответственности...

      Наслаждайтесь!

      Benoît Minisini
      g4mba5@gmail.com


      [STARTUP]

      Класс запуска

      Каждый проект должен иметь класс запуска. Этот класс запуска должен определять статический открытый метод с именем Main без аргументов, который будет действовать как метод запуска вашей программы.

      Вы можете определить класс запуска, щёлкнув по нему правой кнопкой мыши в дереве проекта и выбрав класс запуска во всплывающем меню.

      Нет необходимости определять метод Main в форме запуска, поскольку он уже имеет предопределённый метод.

      Этот предопределённый метод запуска создаёт экземпляр формы и показывает её как в Visual Basic™.

      [OPEN]

      Открыть

      Инструкция Open в Gambas не работает как в Visual Basic™. Она не возвращает файл как целое число, а как объект File.

      Итак, вместо того, чтобы написать:

      Dim handle As Integer
      ...
      Open "myfile" For Read As #handle

      Вы должны написать:

      Dim handle As File
      ...
      handle = Open "myfile" For Read
      [CATDIR]

      Конкатенация путей

      Знаете ли вы, что вы можете объединить имена директорий и файлов с помощью оператора &/? Этот оператор имеет дело с косыми чертами, так что получающийся путь идеален.

      Например:

      Print "/home/gambas" &/ ".bashrc"
      → /home/gambas/.bashrc
      
      Print "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      → /home/gambas/tmp/foo.bar

      Разве это не чудесно?

      [EXEC]

      Исполняемый файл

      Вы можете создать исполняемый файл из всего вашего проекта. Выберите Создать исполняемый файл в меню Проект.

      Когда Gambas создаёт исполняемый файл, он по умолчанию помещает результат в директорию вашего проекта. Имя исполняемого файла совпадает с именем вашего проекта.

      [PATH]

      Относительные пути

      Относительные пути имеют особое значение в Gambas. Они всегда ссылаются на файлы внутри ваших проектов.

      Нет понятия текущей директории и нет ключевого слова, такого как CHDIR, чтобы изменить её.

      Будьте осторожны: вы должны использовать относительные пути только для доступа к файлам проекта, потому что абсолютные пути больше не будут работать, когда вы создаёте исполняемый файл.

      [GLOBAL]

      Глобальные переменные

      В Gambas нет глобальных переменных!

      В качестве обходного пути, поместите их в свой основной модуль и объявите их как Public.

      Если у вас нет основного модуля main в вашем проекте, но есть основная форма, то объявите их как Static Public.

      Чтобы получить доступ к этим переменным, необходимо использовать имя основного модуля main или форму: MyMainModule.MyGlobalVariable или MyMainForm.MyGlobalVariable.

      [EMPTY]

      Пустые строки

      Чтобы узнать, является ли строка пустой, нет необходимости использовать функцию Len(). Вы можете непосредственно проверить это, так как пустая строка - False, а непустая строка - True.

      Например, вместо того, чтобы делать:

      If Len(MyString) > 0 Then ...
      If Len(MyString) = 0 Then ...

      Вы должны делать:

      If MyString THEN ...
      If Not MyString THEN ...
      [TRANSLATE]

      Перевод

      Приложения Gambas полностью переводимое, при условии, что вы сообщаете ему, какие строки должны быть переведены, а какие нет.

      Чтобы пометить строки как переводимые, просто заключите их в круглые скобки:

      Print ("Translate me")
      Print "But do not translate me!"
      [SUBST]

      Subst$

      Функция Subst$() очень полезна для интернационализации вашего приложения.

      Требуется как минимум два аргумента. Первый - это текстовая маска, к которой применяется подстановка. Другие являются аргументами замещения, пронумерованными от одного.

      Каждый &X шаблон в строке замены будет заменён X-ым аргументом замены. Например:

      Print Subst(("Substitution of &1, &2 and &3"),
        "first", "second", "third")
      
      → Substitution of first, second and third
      [EVENT]

      Обработчики событий

      Каждый элемент управления и каждый объект, который может вызывать события, имеет наблюдателя событий и имя группы событий.

      Наблюдатель событий перехватывает каждое событие, вызванное объектом, а имя группы событий является префиксом процедуры, вызываемой для управления событием. Эта функция называется обработчиком событий.

      По умолчанию этот наблюдатель событий является объектом, в котором вы создали элемент управления, а имя группы - это имя элемента управления.

      Таким образом, форма получает все события, созданные элементами управления, которые вы создали внутри.

      ' Gambas form
      Dim hButton As Button
      
      Public Sub _new()
        hButton = New Button(Me) As "MyButton"
      End
      
      Public Sub MyButton_Click()
        Print "You have clicked MyButton !"
      End
      [GROUP]

      Группы элементов управления

      Каждый элемент управления имеет свойство (Group). Когда это свойство установлено, префикс имени обработчика события - это имя группы, а не имя элемента управления.

      Предположим, у вас есть кнопка с именем btnAction со следующим обработчиком события Click:

      Public SubbtnAction_Click()

      Если вы установите свойство (Group) для btnAction в значение "MyGroup", то обработчик событий, который будет получать события от кнопки, будет выглядеть следующим образом:

      Pubic Sub MyGroup_Click()

      Это свойство позволяет обрабатывать события различных элементов управления в одной функции. И элементы управления одной и той же группы не обязательно должны быть одного типа!

      Примечание: Старый ветеран Visual Basic™ может распознавать концепцию управляющего массива, но в более мощной реализации. :-)

      [FORM]

      Формы

      В Gambas форма является собственным наблюдателем событий, так что вы можете напрямую управлять её событиями (такими как Resize, Activate, ...) в своём собственном коде класса.

      Таким образом, новички из Visual Basic™ не дезориентированы :-).

      [EMBED]

      Встраивание форм

      Вы можете встроить любую форму в другие формы с Gambas!

      Чтобы сделать такую мощную вещь, просто создайте экземпляр формы, передав родительский контейнер в качестве последнего аргумента конструктора.

      Например:

      Dim hForm As MyDialog
      Dim hSuperControl As MyForm
      ' Создать диалог
      hForm = New MyDialog
      ' Вставьте форму в этот диалог
      ' Обратите внимание, что эта форма принимает два параметра перед контейнером
      hSuperControl = New MyForm(Param1, Param2, MyDialog)
      ' Переместить и изменить размер формы
      hSuperControl.Move(8, 8, 128, 64)

      Будьте осторожны: форма, встроенная в другую форму, всё ещё является формой, как и её собственный наблюдатель событий.

      [TAG]

      Свойство тега

      Каждый элемент управления имеет свойство Tag. Это свойство предназначено для программиста и может содержать любые данные Variant, которые вы считаете уместными.

      Это очень полезно, когда вы хотите различить элементы управления одной и той же группы в общем обработчике событий.

      [LAST]

      Последний

      Ключевое слово Last возвращает последний элемент управления, который получил событие. Это очень полезно, когда вы хотите написать обработчик событий, который не зависит от имени элемента управления.

      Например, предположим, что вы хотите написать калькулятор. Вы определили десять кнопок, по одной для каждой цифры, каждая в одной группе элементов управления "Digit". Tag каждого элемента управления устанавливается на цифру, нарисованную на кнопке.

      Ваш обработчик событий может выглядеть так:

      Public Sub Digit_Click()
      
        Display = Display & Last.Tag
        RefreshDisplay
      END
      [LEFT]

      Left$ / Mid$ / Right$

      Хорошо известные базовые процедуры Left$, Right$ и Mid$ имеют полезное поведение в Gambas

      Второй параметр Left$ и Right$ является опциональным и по умолчанию равен единице.

      Left$("Gambas") возвращает "G"
      Right$("Gambas") возвращает "s"

      Этот второй параметр может быть отрицательным, а в таком случае указывается количество символов, которые не нужно извлекать.

      Left$("Gambas", -2) возвращает "Gamb"
      Right$("Gambas", -2) возвращает "mbas"

      Точно так же, третий аргумент Mid$ может быть отрицательным, а в таком случае указывается количество символов в конце строки, которые не нужно извлекать.

      Mid$("Gambas", 2, -2) возвращает "amb"

      [OBSERVER]

      Наблюдатель

      Класс Observer позволяет вам перехватывать все события, вызванные объектом, до того, как они действительно будут отправлены.

      MyTextBox = New TextBox(Me) As "MyTextBox"
      MyObserver = New Observer(MyTextBox) As "MyObserver"
      ...
      Public Sub MyObserver_KeyPress()
        Debug "Got it first"
      End
      
      Public Sub MyTextBox_KeyPress()
        Debug "Got it next"
      End

      Наблюдатель может отменить событие с помощью Stop Event, чтобы не дать объекту эффективно поднять его.

      [STRING]

      Строки UTF-8

      Gambas использует кодировку UTF-8 для представления строк в памяти.

      Но все стандартные строковые функции имеют дело только с ASCII: Left, Mid, Right, UCase...

      Если вы хотите работать со строками UTF-8, вы должны использовать методы статического класса String, которые имеют то же имя, что и их стандартные аналоги.

      Print Len("bébé");; Left$("bébé", 3)
      → 6 bé
      
      Print String.Len("bébé");; String.Left("bébé", 3)
      → 4 béb
      [ASSIGNMENT]

      Присваивания

      Gambas реализует ярлыки присваивания, к которым привыкли программисты C/C ++.

      MyVariable += 2
      MyVariable *= 4
      MyVariable &= "Great"
      является эквивалентом этого:
      MyVariable = MyVariable + 2
      MyVariable = MyVariable * 4
      MyVariable = MyVariable & "Great"

      И так далее...

      [DEBUG]

      Отладка

      Вы можете использовать инструкцию Debug для вывода сообщений отладки в консоль (то есть стандартный вывод ошибок). Она ведёт себя так же, как инструкция Print.

      Эти сообщения имеют префикс имени класса, имени метода и номера строки инструкции Debug. Если вам не нужен этот префикс, вы можете использовать инструкцию Error вместо Debug.

      Сообщения отладки автоматически удаляются при создании исполняемого файла без отладочной информации.

      [TRY]

      Управление ошибками (1)

      Управление ошибками в Gambas осуществляется с помощью следующих инструкций: Try, Error, Catch и Finally.

      Try пытается выполнить инструкцию, не вызывая ошибки. Ключевое слово Error используется только для того, чтобы узнать, правильно ли был выполнен оператор.

      Try MyFile = Open "/etc/password" For Write
      If Error Then Print "I cannot do what I want!"
      [CATCH]

      Управление ошибками (2)

      Управление ошибками в Gambas осуществляется с помощью следующих инструкций: Try, Error, Catch и Finally.

      Catch указывает начало части управления ошибками функции или процедуры. Он ставится в конце кода функции.

      Часть catch выполняется при возникновении ошибки между началом выполнения функции и её концом.

      Если возникает ошибка во время выполнения части catch, она нормально распространяется.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
        Close #hFile
        
      Catch ' Выполняется только в случае ошибки
      
        Print "Cannot process file "; FileName
      
      End
      [FINALLY]

      Управление ошибками (3)

      Управление ошибками в Gambas осуществляется с помощью следующих инструкций: Try, Error, Catch и Finally.

      Finally представляет код, выполняемый в конце функции, даже если во время её выполнения возникла ошибка.

      Часть finally не является обязательной. Если в функции есть часть catch, то часть finally должна предшествовать ей.

      Если возникает ошибка во время выполнения части finally, она нормально распространяется.

      Sub ProcessFile(FileName As String)
        ...
        Open FileName For Read As #hFile
        ...
      Finally ' Всегда выполняется, даже если возникла ошибка
      
        Close #hFile
        
      Catch ' Выполняется только в случае ошибки
        
        Print "Cannot print file "; FileName
        
      End
      [OPTIONAL]

      Опциональный

      Функции и процедуры в Gambas могут иметь опциональные аргументы.

      Опциональные аргументы можно сделать, просто указав ключевое слово Optional непосредственно перед именем аргумента.

      Опциональные аргументы также могут иметь явное значение по умолчанию.

      Private Sub MyFunction(Param AS String, Optional Optim AS String = "Default")
        ...
        Print "Required: "; param; ", Optional: "; optim
        ...
      End
      [ARRAY]

      For Each

      В Gambas вы можете легко проходить через массив, коллекцию или множество других перечисляемых классов с помощью инструкции For Each.

      Например:

      Dim Xml As New XmlDocument
      Dim Node As XmlNode
      Dim I As Integer
      
      ' Открыть файл XML
      Xml.Open("pokus.xml")
      ' Потомки индексируются через [i], так как это массив
      For I = 0 To Xml.Root.Children.Count - 1
        'Атрибуты зацикливаются через For Each, так как это коллекция
        For Each Node In Xml.Root.Children[i].Attributes
          Print Node.Name;; Node.Value
        Next
      Next
      [ICON]

      Значки по умолчанию

      Вы можете использовать встроенные значки для более приятного графического интерфейса вашего приложения, которые доступны в нескольких предопределённых размерах («маленький/small», «средний/medium», «большой/large», ...) или абсолютных размерах (от 16x16 до 256x256).

      Например:

      Image1.Picture = Picture["icon:/32/warning"]
      Image2.Picture = Picture["icon:/small/error"]

      Предупреждение: требуется компонент gb.form.

      [SETTINGS]

      Параметры

      Если вам нужно сохранить конфигурацию вашей программы (например, геометрию ваших форм), то вы счастливчик. Это очень легко и элегантно в Gambas. :-)

      Чтобы сохранить положение формы:

      Settings.Write(TheForm)

      Для того, чтобы вспомнить:

      Settings.Read(TheForm)
      Чтобы сохранить любые настройки:
      Settings["Slot/Key"] = Value
      И прочитать настройки обратно:
      Value = Settings["Slot/Key", DefaultValue]
      Эти настройки хранятся в файле ~/.config/gambas3/<MyApplication>.conf, где <MyApplication> - это название вашего проекта.

      Предупреждение: требуется компонент gb.settings.

      [EDITOR]

      Вот несколько советов по редактору...

      Два типа комментариев

      ' Нормальный комментарий
      '' Жирный комментарий

      Жирные комментарии используются для документирования вашего кода.

      Как использовать фрагменты кода

      Давайте напечатаем main, затем нажмём клавишу TAB. Статическая публичная функция запуска Main автоматически вставляется в ваш код.

      Давайте напечатаем ds, затем нажмём клавишу TAB. Объявление локальной строковой переменной вставляется автоматически, и вы можете сразу же ввести имя переменной.

      Фрагменты кода полностью настраиваются в диалоговом окне «Предпочтения» меню «Инструменты» среды IDE.

      [END]

      Это всё, друзья!

      Вы прочитали все полезные советы. Я надеюсь, что теперь вы стали экспертом Gambas! :-)

      Если вы хотите внести свой вклад, отправьте новые советы по следующему адресу:

      user@lists.gambas-basic.org

      Заранее спасибо!

      gambas-3.16.3/app/src/gambas3/tips/tips.sl.txt000066400000000000000000000170261411575327000210510ustar00rootroot00000000000000[WELCOME]

      Dobrodošli v Gambas!

      Gambas je grafično razvojno okolje temelječe na Basic interpreterju.

      Cilj Gambasa je omogočiti uporabniku hitro in enostavno izdelavo zmogljivih programov. Čista in lepa koda seveda ostaja tvoja odgovornost...

      Uživaj!

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Vsak program mora imeti zagonski razred. V njem mora biti določena javna metoda z imenom Main brez argumentov, ki bo služila kot zagonska metoda programa.

      Zagonski razred lahko določiš z desnim klikom na razred v drevesu projekta in nato v meniju izbereš Zagonski razred.

      Določitev metode Main v zagonski formi ni nujna, ker je ta metoda že vnaprej določena.

      Ta vnaprej določena metoda instancira in prikaže formo, prav kakor v Visual Basicu™.

      [EXEC]

      Iz celotnega projekta lahko izdelaš izvršljivo datoteko. V meniju Projekt izberi Izdelaj izvršljivo datoteko.

      Gambas bo izdelal izvršlivo datoteko in jo zapisal v mapo, kjer je shranjen projekt. Izvršljiva datoteka ima enako ime kot projekt.

      [PATH]

      Relativne poti imajo v Gambasu poseben pomen. Vedno se nanašajo na datoteke znotraj projektov.

      Koncepta trenutne mape ni, kot tudi ni ključne besede CHDIR za njeno spreminjanje.

      Pozor: relativne poti uporabljaj samo za dostop do datotek projekta, ker absolutne poti ne bodo več delovale, ko bo izdelana izvršljiva datoteka. [GLOBAL] V Gambasu ni globalnih spremenljivk!

      To lahko obideš tako, da spremenljivke najaviš v glavnem modulu kot PUBLIC.

      Če projekt nima glavnega modula, ima pa glavno formo, jih najavi tam kot STATIC PUBLIC.

      Za dostopanje do takšnih spremenljivk moraš uporabiti ime modula ali forme: MojGlavniModule.MojaGlobalnaSpremenljivka ali MojaGlavnaForma.MojaGlobalnaSpremenljivka. [OPEN]

      Ukaz OPEN v Gambasu ne deluje popolnoma enako kot v Visual Basicu, ker ne vrača vrednosti tipa integer, ampak objekt tipa File.

      Tako je treba namesto

      DIM handle AS Integer
      ...
      OPEN "mojaDatoteka" FOR READ AS #handle

      napisati

      DIM handle AS File
      ...
      handle = OPEN "mojaDatoteka" FOR READ
      [CATDIR]

      Ali veš, da lahko združuješ imena map z operatorjem &/? Ta operator poskrbi za vodilne in sledilne poševnice tako, da je sestavljena pot vedno pravilna.

      Na primer:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      Lepo, ne?

      [EMPTY]

      Za ugotavljanje ali je niz prazen, ni treba uporabiti funkcije Len(). Ali je niz prazen, lahko preveriš neposredno, saj prazen niz vrne FALSE, neprazen pa TRUE.

      Namesto

      IF Len(mojNiz) > 0 THEN ...
      IF Len(mojNiz) = 0 THEN ...

      je tako bolje napisati

      IF mojNiz THEN ...
      IF NOT mojNiz THEN ...
      [EVENT]

      Vsaka kontrola in vsak objekt, ki lahko sproža dogodke ima svoj prestreznik dogodkov (event observer) in svoje ime skupine dogodkov (event group name).

      Prestreznik dogodkov prestreže vsak dogodek, ki ga sproži objekt, ime skupine dogodkov pa je predpona procedure, ki jo kličemo za upravljanje dogodka.

      Privzeto je, da je prestreznik dogodkov objekt, ki vsebuje kontrolo, ime skupine dogodkov pa je enako imenu kontrole.

      Na ta način lahko npr. forma prestreže vse dogodke, ki jih sprožijo kontrole na njej.

      ' Gambas forma
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "MyButton pritisnjen!"
      END
      
      [FORM]

      V Gambasu predstavlja forma svoj lastni prestreznik dogodkov. Tako je možno neposredno upravljanje njenih dogodkov (kot so Resize, Activate itd.) v kodi njenega razreda.

      Tako se pribežniki iz Visual Basica ne počutijo izgubljene. :-)

      [EMBED]

      V Gambasu je možno katerokoli formo vstaviti v druge forme. 

      Za izvedbo tega je treba instancirati formo tako, da ji podamo nadvsebnik kot zadnji argument konstruktorja.

      Na primer: 

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Ustvarimo pogovorno okno
      hForm = NEW MyDialog
      ' Vstavimo formo v to pogovorno okno
      ' (Forma ima pred vsebnikom še dva druga parametra)
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Premaknimo in razvlečimo formo
      hSuperControl.Move(8, 8, 128, 64)

      Pozor! Forma, vstavljena v drugo formo, je še vedno forma in je zato tudi svoj lastni prestreznik dogodkov.

      [GROUP]

      Vsaka kontrola ima lastnost (Group). Ko nastavimo to lastnost, je predpona upravljalca dogodkov ime skupine in ne več ime kontrole.

      Imejmo na primer gumb z imenom btnAction z naslednjim upravljalcem dogodka Click:

      PUBLIC SUB btnAction_Click()

      Če postavimo lastnost (Group) kontrole btnAction na MyGroup, bo upravljalec dogodkov, ki bo sprejemal dogodke z našega gumba naslednji:

      PUBLIC SUB MyGroup_Click()

      Ta lastnost omogoča upravljanje dogodkov z različnih kontrol v eni sami funkciji. Pri tem ni treba, da so kontrole istega tipa.

      Opomba: Izkušeni Visual Basic veteran bo omenjeno prepoznal kot koncept polja kontrol (control array), vendar v mnogo močnejši izvedbi. :-)

      [TAG]

      Vsaka kontrola ima lastnost Tag. Ta lastnost je namenjena programerju in lahko vsebuje kakršenkoli podatek tipa VARIANT, ki je pomemben za program.

      To je zelo uporabno, kadar je treba razlikovati kontrole znotraj skupine pri uporabi skupnega upravljalca dogodkov.

      [LAST]

      Ključna beseda LAST vrne zadnjo kontrolo, ki je prejela dogodek. To je zelo uporabno, kadar želimo napisati upravljalca dogodkov, ki naj bo neodvisen od imena kontrole.

      Vzemimo, da želimo izdelati kalkulator. Določimo deset gumbov, svojega za vsako številko, in jim določimo skupino "Digit". Lastnost Tag za vsak gumb je številka, napisana na njem. Upravljalec dogodka za takšno skupino gumbov je tedaj lahko videti takole:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Dobro znane BASIC funkcije Left$, Right$ in Mid$ imajo v Gambasu dodatno uporabnost.

      Drugi parameter pri Left$ in Right$ je neobvezen in ima privzeto vrednost 1:

      Left$("Gambas") vrne "G"
      Right$("Gambas") vrne "s"

      Drugi parameter ima lahko negativno vrednost. Tedaj predstavlja število znakov, ki naj jih funkcija ne vrne:

      Left$("Gambas", -2) vrne "Gamb"
      Right$("Gambas", -2) vrne "mbas"

      Negativen je lahko tudi tretji argument pri Mid$. Tedaj podaja število znakov s konca niza, ki naj jih funkcija ne vrne:

      Mid$("Gambas", 2, -2) vrne "amb" [END]

      Tukaj se Nasveti dneva končajo. Upam, da si po njihovem branju izvedenec za Gambas! :-)

      Če želiš prispevati, pošlji nove nasvete na naslov: 

      g4mba5@gmail.com

      Hvala v naprej!

      gambas-3.16.3/app/src/gambas3/tips/tips.sv.txt000066400000000000000000000274301411575327000210630ustar00rootroot00000000000000[WELCOME]

      Välkommen till Gambas !

      Gambas är en grafiskt utvecklingsmiljö grundad på en avancerad Basic interpretator.

      Gambas mål är att få dig att göra kraftfulla program, enkelt och snabbt. Men rena strukturerade program är ditt eget ansvar...

      Lycka till!

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Varje projekt måste ha en startup class. Denna startup-class måste definiera en statisk publik metod kallad Main utan argument, som kommer att fungera som uppstartmetod för ditt program.

      Du kan definiera startup-classen genom att klicka på den med höger musknapp i projektträdet och genom att välja Startup class i popup-menyn.

      Det är inte nödvändigt att definiera en Main-metod i ett startupp- formulär, ty det har redan en fördefinierad sådan.

      Denna fördefinierade uppstartmetod instansierar formuläret och visar det, som i Visual Basic™.

      [OPEN]

      OPEN-instruktionen i Gambas fungerar inte på samma sätt som den i Visual Basic. Den lämnar inte filen, som ett heltal, utan som ett File-objekt.

      Så i stället för att skriva:

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      måste du skriva:

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR]

      Vet du att du kan slå ihop mappnamn och filnamn med &/-operatorn? Denna operator tar hand om avslutande snedstreck "/" så att den resulterande sökvägen blir perfekt.

      Till exempel:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      Är det inte förunderligt?

      [EXEC]

      Du kan göra en körbar fil utgående från ditt hela projekt. Välj Gör exekverbar i Projekt-menyn.

      När Gambas gör en körbar fil, läggs resultatet i din projektmapp som standard. Den körbara filen får samma namn som ditt projekt.

      [PATH]

      Relativa sökvägar har speciell betydelse i Gambas. De refererar alltid till filer inuti ditt projekt.

      Det finns ingen innebörd i current directory och inget nyckelord som CHDIR att ändra det.

      Var försiktig: du måste använda relativ sökväg endast för att komma åt projektfiler, ty absoluta sökvägar fungerar inte längre, när du gör en körbar fil. [GLOBAL] Det finns inga globala variabler i Gambas!

      Ett sätt att kringgå detta är att placera dem i din huvud/main-modul och deklarera dem som PUBLIC.

      Om du inte har en huvud/main-modul i ditt projekt, men ett huvud/main- formulär, deklarera dem som STATIC PUBLIC.

      För att komma åt dessa variabler, måste du använda namnet på huvudmodulen eller huvudformuläret: MinMainModul.MinGlobalaVariabel or MinMainForm.MinGlobalaVariabel. [EMPTY]

      För att veta om en sträng är tom, är det inte nödvändigt att använda Len()-funktionen. Du kan testa den direkt, eftersom en tom sträng är FALSE och en icke-tom sträng är TRUE.

      Till exempel, i stället för att göra:

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      Bör du göra:

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [TRANSLATE]

      Gambastillämpningar är helt och hållet översättningsbara, förutsatt att du talar om vilka strängar som skall översättas.

      För att markera att en sträng är översättningsbar, så sätt den bara inom parantester:

      PRINT ("Översätt mig")
      PRINT "Men inte mig!"
      [EVENT]

      Varje kontroll och varje objekt, som kan ge avbrott, har en avbrottshanterare och ett avbrotts-group name.

      Avbrottshanteraren fångar varje avbrott åstadkommet av objektet och avbrottsgruppnamnet är prefix för den procedur, som anropas för att hantera avbrottet.

      Som standard är denna avbrottshanterare det objekt där du har skapat kontrollen och gruppnamnet är samma som kontrollens.

      På detta sätt får ett formulär mottaga alla avbrott som åstadkommits av de kontroller du skapade inuti.

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "You have clicked MyButton !"
      END
      
      [FORM]

      I Gambas är ett formulär sin egen avbrottshanterare, så att du direkt kan hantera dess avbrott (som Resize, Activate, ...) in till dess egen klasskod.

      På detta sätt blir nybörjare, som kommer från Visual Basic inte disorienterade :-).

      [EMBED]

      Du kan inbädda vilket formulär som helst i andra formulär med Gambas  !

      För att åstadkomma en så kraftfull sak, bara instanciera formuläret genom att skicka ett förälderbehållare (parent container) som sista argument hos konstruktorn (contructor).

      Till exempel :

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Skapa en dialog
      hForm = NEW MyDialog
      ' Tag in ett formulär i denna dialog
      ' Notera att detta formulär tar två parametrar före behållaren (container)
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Flytta och justera storlek på formuläret
      hSuperControl.Move(8, 8, 128, 64)

      Var uppmärksam: ett formulär inbäddat i ett annat är fortfarande ett formulär och dessutom sin egen avbrottshanterare.

      [GROUP]

      Varje kontroll har en (Group)-egenskap. När denna egenskap sätts, är prefixet för avbrottshanterarens namn, namnet på gruppen och inte namnet på kontrollen.

      Låt oss anta att vi har en Knapp kallad btnAction med följande Click avbrottshanterare:

      PUBLIC SUB btnAction_Click()

      Om du sätter (Group)-egenskapen hos btnAction till MyGroup, så kommer avbrotsshanteraren att mottaga avbrott från knappen att se ut som:

      PUBLIC SUB MyGroup_Click()

      Denna egenskap låter dig hantera avbrott från skilda kontroller med en enkel funktion och kontrollerna i samma grupp behöver inte ha samma typ!

      Notera : Den gamle Visual Basic-veteranen kan kanske känna igen konceptet i kontroll array, men i en kraftfullare implementering. :-)

      [TAG]

      Varje kontroll har en Tag-egenskap. Denna är till för programmeraren och kan innehålla vilken VARIANT-data som du tycker är relevant.

      Detta är mycket användbart, när du vill åtskilja kontroller i samma grupp i en gemensam avbrottshanterare.

      [LAST]

      Nyckelordet LAST returnerar den sista kontroll, som har mottagit ett avbrott. Detta är mycket användbart om du vill skriva en avbrottshanterare, som är oberoende av namn på kontroller.

      Till exempel, låt oss anta du vill skriva ett kalkylatorprogram. Du har definierat tio knappar, en för varje siffra, var och en i samma group "Digit". Tag-en för varje kontroll sätts till siffran ritad i knappen. Din avbrottshanterare skulle kunna se ut som:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      De välkända BASIC rutinerna Left$, Right$ och Mid$ har användbara uppträdande i Gambas

      Andra parametern i Left$ och Right$ är frivillig och sätts till ett som standard.

      Left$("Gambas") returnerar "G"
      Right$("Gambas") returnerar "s"

      Andra parametern kan vara negativ och betyder då antal tecken som ej skall tas ut.

      Left$("Gambas", -2) returnerar "Gamb"
      Right$("Gambas", -2) returnerar "mbas"

      På samma sätt med tredje argumentet till Mid$ kan vara negativt och ger då antal tecken från slutet på strängen som ej skall tas ut.

      Mid$("Gambas", 2, -2) returnerar "amb" [OBSERVER]

      Observer-klassen tillåter dig att fånga upp alla händelser skapade av ett objekt innan de verkligen sänds.

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Got it first"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Got it next"
      END
      "Observatören" kan avbryta händelsen för att förhindra att objektet att åstadkommer den (händelsen). [STRING]

      Gambas använder UTF-8-teckensätt för att representera strängar i minnet.

      Men alla Gambas standardsträngfunktioner hanterar ASCII: Left, Mid, Right, UCase...

      Om du vill manipulera UTF-8-strängar, måste du använda metoder hörande till String-static klass, vilka har samma namn som deras motsvarande standard.

      PRINT Len("bébé");; Left$("bébé", 3)
      6 bé
      PRINT String.Len("bébé");; String.Left("bébé", 3)
      4 béb
      [ASSIGNMENT]

      Gambas implementerar förenklad tilldelning, som C/C++ programmerare är vana vid.

      MyVariable += 2 är samma sak som MyVariable = MyVariable + 2

      MyVariable &= "Great" är samma sak som MyVariable = MyVariable & "Great"

      och så vidare... [DEBUG]

      Du kan använda DEBUG-instruktionen till att skriva ut avlusningsmeddelandem till konsolen (nämligen standard error output). Den uppför sig precis som PRINT- instruktionen.

      Dessa meddelanden föregås av klassnamn, metodnamn och radnummer för DEBUG-instruktionen.

      Debugmeddelandena tas automatiskt bort när en exekverbar fil utan avlusningsinformation görs. [TRY]

      Felhantering i Gambas görs med följande instruktioner: TRY, ERROR, CATCH och FINALLY.

      TRY försöker utföra en sats utan att åstadkomma ett fel. ERROR- instruktionen används just för att ta reda på om satsen utfördes korrekt.

      TRY MyFile = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "I cannot do what I want!"
      [CATCH]

      Felhantering i Gambas görs med följande instruktioner: TRY, ERROR, CATCH och FINALLY.

      CATCH utvisar början på felhanteringsdelen i en funktion eller procedur. Den placeras i slutet på funktionskoden.

      Catch-delen utförs när ett fel har åstadkommits mellan början på funktionen och dess slut.

      Om ett fel inträffar under utförande av catch-delen, fångas den.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' Utförs endast om det finns ett fel
        PRINT "Cannot process file "; FileName
      END
      [FINALLY]

      Felhantering i Gambas görs med följande instruktioner: TRY, ERROR, CATCH och FINALLY.

      FINALLY inleder den kod, som utförs vid slutet av funktionen, även om ett fel åstadkomms under funktionsutförandet.

      Finally-delen är inte obligatorisk. Om det finns en catch-del, så måste finally-delen föregå den.

      Om ett fel inträffar under utförande av finally-delen, fortsättes normalt.

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
      FINALLY ' Utförs alltid, även om fel inträffat
        CLOSE #hFile
      CATCH ' Utförs endast om fel inträffat
        PRINT "Cannot print file "; FileName
      END
      [END]

      Du har nu lästa alla Dagens Tips. Hoppas att du blivit en Gambas-expert nu! :-)

      Om du vill bidraga, sänd nya tips till följande adress :

      g4mba5@gmail.com

      Tack på förhand!

      gambas-3.16.3/app/src/gambas3/tips/tips.tr.txt000066400000000000000000000201621411575327000210530ustar00rootroot00000000000000[WELCOME]

      Gambas'a Hoş Geldiniz !

      Gambas gelişmiş bir Basic yorumlayıcısı üzerine kurulu grafiksel bir geliştirme ortamıdır.

      Gambas sizin kolay ve hızlı bir şekilde güçlü programlar yapabilmenizi amaçlar. Ama düzgün programlar sizin kendi sorumluluğunuzda kalır...

      Eğlenmenize bakın !

      Benoît Minisini
      g4mba5@gmail.com

      [STARTUP]

      Her proje bir başlangıç sınıfı içermelidir. Bu başlangıç sınıfı, programınızın başlangıç yöntemi olarak davranacak, parametre almayan Main adlı durağan (static) ve genel (public) bir yöntem tanımlamalıdır.

      Proje ağacında sağ fare tuşuyla üzerine tıklayarak ve açılan menüden Başlangıç sınıfı'nı seçerek başlangıç sınıfını tanımlayabilirsiniz.

      Bir başlangıç formunda Main yöntemi tanımlamanıza gerek yoktur; çünkü formlar zaten öntanımlı bir yönteme sahiptir.

      Bu öntanımlı başlangıç yöntemi formu örnekler ve gösterir. Aynı Visual Basic™'de olduğu gibi.

      [OPEN]

      Gambas'ın OPEN yönergesi Visual Basic'deki gibi çalışmaz. Dosyayı bir tamsayı (integer) yerine File nesnesi olarak döndürür.

      Yani, şu şekilde yazmak yerine :

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      aşağıdaki gibi yazmalısınız :

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR]

      Dizin ve dosya adlarını &/ işleciyle birleştirebileceğinizi biliyor muydunuz ? Bu işleç eğik çizgilerle ilgilenir. Böylece sonuçta oluşacak yol adı kusursuz olur.

      Örneğin:

      PRINT "/home/gambas" &/ ".bashrc" /home/gambas/.bashrc PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar" /home/gambas/tmp/foo.bar

      Harika değil mi ?

      [EXEC]

      Projenizin tümünden çalışabilir bir dosya oluşturabilirsiniz. Bunun için Proje menüsünden Çalışabilir dosyayı oluştur seçeneğini tıklayınız.

      Gambas çalışabilir bir dosya oluşturduğunda, sonucu doğrudan projenizin dizinine koyar. Bu dosya projenizle aynı adı alır.

      [PATH]

      Göreceli yol adlarının Gambas'da özel bir anlamı vardır. Bu yollar her zaman projenizdeki dosyaları gösterir.

      Geçerli dizin kavramı yoktur, ve değiştirmek için CHDIR gibi anahtar bir sözcük de yoktur.

      Dikkatli olun: göreceli yol adlarını sadece proje dosyalarına erişmek için kullanın, çünkü çalışabilir dosya oluştuğunda tam yollar çalışmayacaktır. [GLOBAL] Gambas'da global değişkenler yoktur!

      Mümkünse, bu değişkenleri ana modülünüze koyun ve onları PUBLIC olarak bildirin.

      Eğer projenizde bir ana modül değil de bir ana form varsa, STATIC PUBLIC olarak bildirin.

      Bu değişkenlere erişmek için, ana modülün veya formun adını kullanmalısınız: MyMainModule.MyGlobalVariable veya MyMainForm.MyGlobalVariable. [EMPTY]

      Bir dizgenin boş olup olmadığını öğrenmek için, Len() işlevini kullanmak zorunda değilsiniz. Doğrudan boş bir dizge FALSE ve dolu bir dizge TRUE olarak sınanabilir.

      Örneğin, şu şekilde yapmak yerine :

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      Şöyle yapabilirsiniz :

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [EVENT]

      Olay meydana getiren her denetim ve nesnenin, bir olay gözlemcisi ve bir olay grup adı vardır.

      Olay gözlemcisi oluşan her olayı yakalar. Olay grup adı ise olayı yöneten yordamın önekidir.

      Öntanımlı olarak, bu olay gözlemcisi denetimi oluşturduğunuz nesnedir ve grup adı da o denetimin adıdır.

      Böylece bir form, üzerinde oluşturulan denetimlerden gelen tüm olayları alır.

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "You have clicked MyButton !"
      END
      
      [FORM]

      Gambas'da, bir form kendi olay gözlemcisidir. Böylece tüm form olaylarını (Resize, Activate, vb...) kendi sınıf kodundan yönetebilirsiniz.

      Bu sayede, Visual Basic'den gelen yeni kullanıcılar yolunu şaşırmaz :-).

      [EMBED]

      Gambas ile bir formu diğer formların içine gömebilirsiniz  !

      Böyle güçlü bir şey yapmak için, sadece yapıcı işlevin son argümanı olarak bir sahip kap (container) vererek formu örnekleyin.

      Örneğin :

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' Bir iletişim penceresi oluştur
      hForm = NEW MyDialog
      ' Bu iletişim penceresine bir form yerleştir
      ' Unutmayın, bu form kaptan önce iki parametre daha alır
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' Formu taşır ve yeniden boyutlandırır
      hSuperControl.Move(8, 8, 128, 64)

      Dikkatli olun: başka bir form içine gömülen bir form hala formdur ve bundan dolayı kendi olay gözlemcisine sahiptir.

      [GROUP]

      Her denetim bir (Group) özelliğine sahiptir. Bu özellik girildiğinde, olay yöneticisinin adı denetim adı yerine grup adını önek olarak alır.

      Diyelim ki btnAction adında bir Button nesneniz var. Bu nesneye ait Click olayının yöneticisi de aşağıdaki gibi olsun :

      PUBLIC SUB btnAction_Click()

      Eğer btnAction nesnesinin (Group) özelliğini MyGroup olarak değiştirirseniz, bu butondan olayları alacak olay yöneticisi şöyle olur :

      PUBLIC SUB MyGroup_Click()

      Bu özellik tek bir işlevde değişik denetimlerin olaylarını yönetmenize olanak sağlar. Bu denetimlerin aynı türden olmaları da gerekmez !

      Not : Eski Visual Basic emektarları denetim dizisi (control array) kavramını hatırlayabilir, ancak bu daha güçlü bir uygulama. :-)

      [TAG]

      Her denetim bir Tag özelliğine sahiptir. Bu özellik programcı içindir ve ilgili bulduğunuz herhangi bir veriyi içerebilir.

      Bu yöntem, bir olay yöneticisinde aynı grupta yer alan denetimleri ayırt etmek için çok kullanışlıdır.

      [LAST]

      LAST anahtar sözcüğü bir olay algılayan en son denetimi döndürür. Bu, herhangi bir denetim adından bağımsız bir olay yöneticisi yazmak istediğinizde çok kullanışlıdır.

      Örneğin, diyelim ki bir hesap makinesi programı yapmak istiyorsunuz. Her rakam için bir tane olacak şekilde on tane tuş tanımladınız ve hepsi "Digit" grubunda yer alsın. Her denetimin Tag özelliği tuşta yer alan rakamı içersin. Olay yöneticiniz şunun gibi olacaktır :

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      Çok bilinen BASIC işlevleri Left$, Right$ ve Mid$ Gambas'da çok kullanışlı davranışlar gösterir

      Left$ ve Right$ işlevlerinin ikinci parametreleri seçimliktir ve biri öntanımlıdır.

      Left$("Gambas") --> "G" değerini,
      Right$("Gambas") --> "s" değerini döndürür.

      İkinci parametre negatif olabilir ve bu ayıklanmayan karakterlerin sayısını verir.

      Left$("Gambas", -2) --> "Gamb"
      Right$("Gambas", -2) --> "mbas"

      Aynı şekilde, Mid$ işlevinin üçüncü parametresi negatif olabilir ve bu değer dizge sonundan itibaren ayıklanmayan karakter sayısını verir.

      Mid$("Gambas", 2, -2) --> "amb" [END]

      Tüm ipuçlarını okudunuz. Umarım şimdi bir Gambas uzmanı olmuşsunuzdur ! :-)

      Eğer katkıda bulunmak istiyorsanız, aşağıdaki adrese yeni ipuçları gönderin :

      g4mba5@gmail.com

      Şimdiden teşekkürler !

      gambas-3.16.3/app/src/gambas3/tips/tips.zh.txt000066400000000000000000000254541411575327000210600ustar00rootroot00000000000000[WELCOME]

      欢迎使用Gambas

      Gambas是一个基于高级Basic语言解释器的图形界面的开发环境。

      Gambas的目标是使你能轻易而快速地开发出功能强大的程序。但是高效而简洁的程序还得靠你自己的努力...

      希望你能喜欢!

      Benoît Minisini
      English:g4mba5@gmail.com
      中文:yizhou.he@gmail.com

      [STARTUP]

      每一个工程都需要有一个启动类,这个启动类必须定义一个名为Main的无参数的静态公用方法,它将成为你的程序的启动方法。

      定义启动类的方法是,用鼠标右键点击工程目录树中要设为启动类的类,并在弹出的右键菜单中选中启动类

      你不需要在启动窗体中定义一个Main方法,因为Gambas己经预定义好了。

      这个预定义的启动方法创建并显示窗体就像Visual Basic™一样。

      [OPEN]

      GambasOPEN函数和Visual Basic的不太一样,它并不返回一个整型变量,而是返回一个文件对象。

      所以,不要使用:

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      而应该使用:

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR]

      你知道吗?你可以使用&/操作符连结文件路径中的目录和文件,此操作符处理路径尾的斜杠以免重复。

      例如:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      怎么样?好用吧!

      [EXEC]

      可以将你的整个工程生成一个可执行文件,在工程菜单中选择生成可执行文件

      Gambas生成可执行文件时,默认将产生的可执行文件放到你的工程目录下,可执行文件名和你的工程名相同。

      [PATH]

      相对路径在Gambas中有特殊含义,它们总是指向你工程内的文件。

      这里没有当前目录的概念,没有CHDIR之类的关键字来改变它。

      注意:只能使用相对路径访问你的工程文件,因为绝对路径在你生成可执行文件后就不再可靠了。 [GLOBAL] Gambas里不再有全局变量了!

      相应的,在你的主模块中声明它们为PUBLIC(公用类型)。

      如果你的工程中没有主模块,只有主窗体,那么声明它们为STATIC PUBLIC(静态公用类型)。

      要访问这些变量,你必须使用主模块名或主窗体名:MyMainModule.MyGlobalVariableMyMainForm.MyGlobalVariable。 [EMPTY]

      要知道一个字符串是否为空,没必要使用Len()函数,你可以直接测试它,因为空字符串为FALSE非空字符串为TRUE

      例如,你不用写:

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      你只需写:

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [TRANSLATE]

      Gambas应用程序是可完全翻译的,条件是你应声明哪些字符串是必须要翻译的,哪些不必翻译。

      用括号括起来就表明该字符串是可以被翻译的。

      PRINT ("我可以被翻译!")
      PRINT "我不能被翻译!"
      [EVENT]

      每个控件和每个对象都可以产生事件,都有一个event observer(事件观察器)和一个事件 group name(组名)。

      事件观察器捕捉对象产生的每一个事件,事件组名将是你用来处理事件的类名的前缀。

      默认的事件观察器是你创建的控件的容器对象,事件组名是控件名。

      这梓,一个窗体接收你在它上面创建的所有控件发生的事件。

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "You have clicked MyButton !"
      END
      
      [FORM]

      Gambas中,一个窗体是它自己的事件观察器,所以你可以直接在它自己的类代码中管理它的事件(像ResizeActivate, ...)。

      这样,从Visual Basic转来的新手们就不会迷失方向:-)。

      [EMBED]

      Gambas中,你可以在窗体中嵌入窗体!

      要实现如此强大的功能,只要在初始化窗体对象时将父容器做为最后一个参数传给窗体构建函数。

      例如:

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' 创建一个对话框
      hForm = NEW MyDialog
      ' 在此对话框中插入一个窗体
      ' 注意此窗体需要三个参数,最后一个参数是容器对象
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' 移动并改变窗体的大小
      hSuperControl.Move(8, 8, 128, 64)

      小心:嵌入后的窗体还是个窗体,它还是它自己的事件观察器。

      [GROUP]

      每个控件都有一个Group(组)属性,当此属性被设置,事件处理名称的前缀就将是组名而不是控件名。

      假定你有一个Button(按钮)名叫btnAction 有一个Click事件处理:

      PUBLIC SUB btnAction_Click()

      如果你将btnAction(Group)属性设为MyGroup,那么事件处理从按钮收到的事件将是:

      PUBLIC SUB MyGroup_Click()

      此属性让你在一个函数中处理不同的控件的事件,同组中的控件不需要有相同的类型!

      注释: Visual Basic老手可以认为是控件数组,但有更为强大的用法。:-)

      [TAG]

      每一个控件都有Tag属性,此属性是为编程者设计的,可以是任何你想要的VARIANT(变体类型)数据。

      这在使用同组的公用事件处理中区别控件时非常有用。

      [LAST]

      LAST关键字返回发生事件的最近控件,当你要写一个独立于控件名的事件处理类就非常有用。

      例如,假设你要写一个计算器程序。 你定义了十个按钮,每个数字一个,它们都在一个名叫"Digit"的,每个控件的Tag属性都被设为相应的数字。 你的处理程序将会是:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      大名鼎鼎的BASIC函数Left$Right$Mid$Gambas中有了新功能。

      Left$Right$的第二个参数是可选的,默认值为1。

      Left$("Gambas") 返回"G"
      Right$("Gambas") 返回"s"

      第二个参数可以是负数,它将指定反方向上将被切掉的字符个数。

      Left$("Gambas", -2) 返回"Gamb"
      Right$("Gambas", -2) 返回"mbas"

      相同的,Mid$的第三个参数也可以是负数,指定字符串末端将被切掉的字符的个数。

      Mid$("Gambas", 2, -2) 返回"amb" [OBSERVER]

      Observer类允许你将对象发生的所有事件在被发送之前截获。

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Got it first"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Got it next"
      END
      Observer能取消事件防止对象有效的发出它。 [STRING]

      Gambas使用UTF-8字符编码在内存中描述字符串。

      但是所有的标准Gambas字符串函数处理ASCII码: LeftMidRightUCase...

      如果想处理UTF-8编码的字符串,必须使用String静态类的方法,它们有和标准字符串处理函数相同的名字。

      PRINT Len("bébé");; Left$("bébé", 3)
      6 bé
      PRINT String.Len("bébé");; String.Left("bébé", 3)
      4 béb
      [ASSIGNMENT]

      Gambas实现了C/C++程序员常用的快捷赋值。

      MyVariable += 2 等价于 MyVariable = MyVariable + 2

      MyVariable &= "Great" 等价于 MyVariable = MyVariable & "Great"

      诸如此类... [DEBUG]

      可以使用DEBUG语句打印调试信息到控制台(也就是标准错误输出),用法和PRINT语句完全一样。

      调试信息前缀有类名,方法名和DEBUG语句所在行号。

      调试信息在生成不包含调试信息的可执行文件时被自动删除。 [TRY]

      Gambas使用下面的语句实现错误管理: TRYERRORCATCHFINALLY

      TRY尝试执行一个语句而不引发错误,随后使用ERROR语句检测语句执行中是否发生错误。

      TRY MyFile = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "I cannot do what I want!"
      [CATCH]

      Gambas使用下面的语句实现错误管理: TRYERRORCATCHFINALLY

      CATCH标明函数或者过程中错误管理部分(错误陷阱)的代码起始。

      当错误发生于函数执行的起始到终止之间,执行错误陷阱部分。

      如果错误发生于执行错误陷阱代码期间,会正常传送。错误陷阱不保护自己!

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' 仅仅发生错误时执行
        PRINT "Cannot process file "; FileName
      END
      [FINALLY]

      Gambas使用下面的语句实现错误管理: TRYERRORCATCHFINALLY

      在函数的尾部,FINALLY语句引领的代码被执行,即使在其执行期间有错误发生。 FINALLY部分是非托管的。如果函数中有错误陷阱,FINALLY部分必须位于陷阱之前。

      FINALLY部分是非托管的。如果函数中有错误陷阱,FINALLY部分必须位于陷阱之前。

      如果错误发生于FINALLY部分执行期间,错误会正常传送。

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
      FINALLY '总是执行,即使有错误发生
        CLOSE #hFile
      CATCH ' 仅当错误发生时执行
        PRINT "Cannot print file "; FileName
      END
      [END]

      你己读完所有今日提示。我希望你己经是一个Gambas的专家了!:-)

      如果你想为Gambas贡献一份力量,用电子邮件发送新提示到:

      英文:

      g4mba5@gmail.com

      中文:

      yizhou.he@gmail.com

      预先感谢!

      gambas-3.16.3/app/src/gambas3/tips/tips.zh_TW.txt000066400000000000000000000331001411575327000214550ustar00rootroot00000000000000[WELCOME]

      歡迎使用Gambas

      Gambas是一個基於高級Basic語言直譯器的圖形界面的開發環境。

      Gambas的目標是使您能輕易而快速地開發出功能強大的程式。但是高效而簡潔的程式還得靠您自己的努力...

      希望您會喜歡!

      Benoît Minisini
      English:g4mba5@gmail.com
      中文:yizhou.he@gmail.com

      [STARTUP]

      每一個專案都需要有一個啟動類別,這個啟動類別必須定義一個名爲Main的無參數靜態公用方法,它將成爲您的程式的進入點。

      定義啟動類別的方法是,用鼠標右鍵點擊工程目錄樹中要設爲啟動類別的類別,並在彈出的右鍵菜單中選中啟動類別

      您不需要在啟動視窗中定義一個Main方法,因爲Gambas己經預定義好了。

      這個預定義的啟動方法創建並顯示視窗, 就像Visual Basic™一樣。

      [OPEN]

      GambasOPEN函數和Visual Basic的不太一樣,它並不回傳整數,而是回傳一個檔案物件。

      所以,不要使用:

      DIM handle AS Integer
      ...
      OPEN "myfile" FOR READ AS #handle

      而應該使用:

      DIM handle AS File
      ...
      handle = OPEN "myfile" FOR READ
      [CATDIR]

      您知道嗎?您可以使用&/來連接資料夾和檔案名稱,這個運算子會自動處理路徑結尾的/以免重複。

      例如:

      PRINT "/home/gambas" &/ ".bashrc"
      /home/gambas/.bashrc
      
      PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
      /home/gambas/tmp/foo.bar
      

      怎麼樣?好用吧!

      [EXEC]

      可以將您的整個專案生成一個可執行檔,在專案選單中選擇生成可執行檔

      Gambas生成可執行檔時,預設會將產生的可執行檔放到您的專案目錄下,可執行檔名和您的專案名稱相同。

      [PATH]

      相對路徑在Gambas中有特殊含義,它們總是指向您專案內的文件。

      這裏沒有當前目錄的概念,沒有CHDIR之類的關鍵字來改變它。

      注意:您只能用相對路徑存取專案中的檔案,因爲絕對路徑在您生成可執行檔後就不再可靠了。 [GLOBAL] Gambas裏不再有全域變數了!

      新的處理方法是,在您的主模組中宣告它們爲PUBLIC(公用類型)。

      如果您的專案中沒有主模組,只有主視窗,那麼宣告它們爲STATIC PUBLIC(靜態公用類型)。

      要存取這些變數,您必須使用主模組名或主視窗名:MyMainModule.MyGlobalVariableMyMainForm.MyGlobalVariable。 [EMPTY]

      要知道一個字串是否爲空,並不需要使用Len()函數,您可以直接測試它,因爲空字串爲FALSE非空字串爲TRUE

      例如,您不需要寫:

      IF Len(MyString) > 0 THEN ...
      IF Len(MyString) = 0 THEN ...

      您只需寫:

      IF MyString THEN ...
      IF NOT MyString THEN ...
      [TRANSLATE]

      Gambas應用程式是可完全翻譯的,條件是您應指定哪些字串是必須要翻譯的。

      用括號將字串括起來就表示該字串是可以被翻譯的。

      PRINT ("我可以被翻譯!")
      PRINT "我不能被翻譯!"
      [EVENT]

      每個控制項和每個物件都可以產生事件,都有一個event observer(事件觀察器)和一個事件 group name(組名)。

      事件觀察器捕捉物件產生的每一個事件,事件組名將是您用來處理事件的類別名稱的前綴。

      預設的事件觀察器是您創建的控制項的容器物件,事件組名是控制項名。

      在這種狀況下,一個視窗會接收您在它上面創建的所有控制項發生的事件。

      ' Gambas form
      DIM hButton AS Button
      
      PUBLIC SUB _new()
        hButton = NEW Button(ME) AS "MyButton"
      END
      
      PUBLIC SUB MyButton_Click()
        PRINT "You have clicked MyButton !"
      END
      
      [FORM]

      Gambas中,一個視窗是它自己的事件觀察器,所以您可以直接在它自己的類代碼中管理它的事件(像ResizeActivate, ...)。

      這樣,從Visual Basic轉來的新手們就不會迷失方向:-)。

      [EMBED]

      Gambas中,您可以在視窗中嵌入視窗!

      要實現如此強大的功能,只要在初始化視窗物件時將父容器做爲最後一個參數傳給視窗構建函數。

      例如:

      DIM hForm AS MyDialog
      DIM hSuperControl AS MyForm

      ' 創建一個對話框
      hForm = NEW MyDialog
      ' 在此對話框中插入一個視窗
      ' 注意此視窗需要三個參數,最後一個參數是容器物件
      hSuperControl = NEW MyForm(Param1, Param2, MyDialog)
      ' 移動並改變視窗的大小
      hSuperControl.Move(8, 8, 128, 64)

      小心:嵌入後的視窗還是個視窗,它還是它自己的事件觀察器。

      [GROUP]

      每個控制項都有一個Group(組)屬性,當此屬性被設置,事件處理名稱的前綴就將是組名而不是控制項名。

      假定您有一個Button(按鈕)名叫btnAction 有一個Click事件處理:

      PUBLIC SUB btnAction_Click()

      如果您將btnAction(Group)屬性設爲MyGroup,那麼事件處理從按鈕收到的事件將是:

      PUBLIC SUB MyGroup_Click()

      此屬性讓您在一個函數中處理不同的控制項的事件,同組中的控制項不需要有相同的類型!

      註釋: Visual Basic老手可能會認為這個屬性和VB中的控制項陣列相似,但更為強大。:-)

      [TAG]

      每一個控制項都有Tag屬性,此屬性是爲編程者設計的,可以是任何您想要的VARIANT(可變類型)數據。

      這在使用同組的公用事件處理中區別控制項時非常有用。

      [LAST]

      LAST關鍵字回傳最近一次發生事件的控制項,當您要寫一個獨立於控制項名的事件處理函式就非常有用。

      例如,假設您要寫一個計算器程式。 您定義了十個按鈕,每個數字一個,它們都在一個名叫"Digit"的群組,每個控制項的Tag屬性都被設爲相應的數字。 您的處理程序將會是:

      PUBLIC SUB Digit_Click()

        Display = Display & LAST.Tag
        RefreshDisplay

      END

      [LEFT]

      大名鼎鼎的BASIC函數Left$Right$Mid$Gambas中有了新功能。

      Left$Right$的第二個參數是可選的,預設值爲1。

      Left$("Gambas") 回傳"G"
      Right$("Gambas") 回傳"s"

      第二個參數可以是負數,它的用途是指定反方向上將被切掉的字元個數。

      Left$("Gambas", -2) 回傳"Gamb"
      Right$("Gambas", -2) 回傳"mbas"

      相同的,Mid$的第三個參數也可以是負數,指定字串末端將被切掉的字元的個數。

      Mid$("Gambas", 2, -2) 回傳"amb" [OBSERVER]

      Observer類別允許您在物件發出事件之前先攔截它。

      MyTextBox = NEW TextBox(ME) AS "MyTextBox"
      MyObserver = NEW Observer(MyTextBox) AS "MyObserver"
      ...
      PUBLIC SUB MyObserver_KeyPress()
        DEBUG "Got it first"
      END
      
      PUBLIC SUB MyTextBox_KeyPress()
        DEBUG "Got it next"
      END
      Observer能取消事件,防止物件對外發出事件。 [STRING]

      Gambas使用UTF-8字元編碼在記憶體中描述字串。

      但是所有的標準Gambas字串函數只處理ASCII碼: LeftMidRightUCase...

      如果想處理UTF-8編碼的字串,必須使用String靜態類別的方法,它們的名字和標準字串處理函數完全相同。

      PRINT Len("bébé");; Left$("bébé", 3)
      6 bé
      PRINT String.Len("bébé");; String.Left("bébé", 3)
      4 béb
      [ASSIGNMENT]

      Gambas實現了C/C++程序員常用的快捷賦值。

      MyVariable += 2 等價於 MyVariable = MyVariable + 2

      MyVariable &= "Great" 等價於 MyVariable = MyVariable & "Great"

      諸如此類... [DEBUG]

      可以使用DEBUG語句列印除錯信息到控制台(也就是stderr),用法和PRINT語句完全一樣。

      除錯信息前綴有類別名稱,方法名稱和DEBUG語句所在的行號。

      除錯信息在生成不包含除錯信息的可執行檔時會被自動刪除。 [TRY]

      Gambas使用下面的語句實現錯誤管理: TRYERRORCATCHFINALLY

      TRY嘗試執行一個語句而不引發錯誤,隨後使用ERROR語句檢測語句執行中是否發生錯誤。

      TRY MyFile = OPEN "/etc/password" FOR WRITE
      IF ERROR THEN PRINT "I cannot do what I want!"
      [CATCH]

      Gambas使用下面的語句實現錯誤管理: TRYERRORCATCHFINALLY

      CATCH標明函數或者過程中錯誤管理部分(錯誤處理常式)的程式碼的開頭。

      當錯誤發生於函數執行的起始到終止之間時,會跳去執行錯誤處理常式的部分。

      如果錯誤發生於執行錯誤處理常式期間,會繼續向下一層傳送。錯誤處理常式不保護自己!

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
        CLOSE #hFile
      CATCH ' 只在發生錯誤時執行
        PRINT "Cannot process file "; FileName
      END
      [FINALLY]

      Gambas使用下面的語句實現錯誤管理: TRYERRORCATCHFINALLY

      在函數的尾部,FINALLY語句引領的代碼被執行,即使在其執行期間有錯誤發生。 FINALLY部分是非必要的。如果函數中有錯誤處理常式,FINALLY部分必須位於處理常式之前。

      FINALLY部分是非必要的。如果函數中有錯誤處理常式,FINALLY部分必須位於處理常式之前。

      如果錯誤發生於FINALLY部分執行期間,錯誤會正常傳送。

      SUB ProcessFile(FileName AS STRING)
        ...
        OPEN FileName FOR READ AS #hFile
        ...
      FINALLY ' 即使有錯誤發生也會被執行
        CLOSE #hFile
      CATCH ' 只在錯誤發生時執行
        PRINT "Cannot print file "; FileName
      END
      [OPTIONAL]

      Optional

      Gambas裡面,函數和程序的參數可以含有選擇性的參數。

      定義選擇性參數的方法是在參數名稱面加上 Optional 關鍵字。

      您也可以在選擇性參數後面加上預設值,例如:

      Private Sub MyFunction(Param AS String, Optional Optim AS String = "Default")
        ...
        Print "Required: "; param; ", Optional: "; optim
        ...
      End
      [ARRAY]

      For Each

      Gambas 裡面,您可以輕易地用迴圈跑過陣列、集合以及其他支援 For Each 的可列舉類別。

      例如:

      Dim Xml As New XmlDocument
      Dim Node As XmlNode
      Dim I As Integer
      
      ' Open XML file
      Xml.Open("pokus.xml")
      ' Children is indexed via [i], since it's an array
      For I = 0 To Xml.Root.Children.Count - 1
        'Attributes are looped via For Each, since it's a collection
        For Each Node In Xml.Root.Children[i].Attributes
          Print Node.Name;; Node.Value
        Next
      Next
      [ICON]

      預設圖示

      您可以使用內建的圖示來建構更美觀的圖形程式。這些內建圖示提供多種大小 ("small", "medium", "large",...),您也可以使用絕對大小 (從 16x16 到 256x256)。

      例如:

      Image1.Picture = Picture["icon:/32/warning"]
      Image2.Picture = Picture["icon:/small/error"]
      

      警告: 這個功能需要 gb.form 元件. [SETTINGS]

      設定

      如果您需要在程式中儲存一些設定值 (如視窗位置、大小),您很幸運,在 Gambas 中做到這個是易如反掌。 :-)

      儲存視窗位置:

      Settings.Write(TheForm)

      回復視窗位置:

      Settings.Read(TheForm)
      儲存設定的方法:
      Settings["Slot/Key"] = Value
      讀取設定的方法:
      Value = Settings["Slot/Key", DefaultValue]
      這些設定將被儲存在 ~/.config/gambas3/<MyApplication>.conf 中, <MyApplication> 是您的專案名稱。

      警告: 這個功能需要 gb.settings 元件。 [EDITOR]

      來點編輯器的提示...

      兩種註解類型

      ' 普通註解
      '' 粗體註解

      粗體註解可以用來替程式碼撰寫文件.

      如何使用程式碼片段

      輸入 main 然後按下 TAB 鍵. 編輯器將自動插入 static public Main 到程式碼中.

      輸入 ds 然後按下 TAB 鍵. 編輯器將自動插入區域字串變數的宣告, 之後可以立即輸入變數名稱.

      程式碼片段可以在開發環境的選項中設定. [END]

      您己讀完所有的每日提示提示。我希望您己經是 Gambas 的專家了!:-)

      如果您想爲Gambas貢獻一份力量,請用電子郵件發送新提示到:

      英文:

      g4mba5@gmail.com

      中文:

      yizhou.he@gmail.com

      預先感謝!

      gambas-3.16.3/app/src/gambas3/usage000066400000000000000000000012161411575327000167560ustar00rootroot00000000000000 Gambas 3 Integrated Development Environment Usage: $ gambas3 [ [ ...]] Open the IDE with the specific project, optionally opening the specified project files. If no argument is specified, open the IDE with a nice welcome dialog. $ gambas3 Open the IDE for editing the specified file if the IDE has an editor for it. $ gambas3 --cleanup Clean the project directory up (i.e. remove temporary, generated, and backup files). $ gambas3 --version | -V Display Gambas version. $ gambas3 --license | -L Display Gambas license. $ gambas3 --help Display this help. gambas-3.16.3/app/src/gambas3/welcome/000077500000000000000000000000001411575327000173625ustar00rootroot00000000000000gambas-3.16.3/app/src/gambas3/welcome/bells.mp3000066400000000000000000004202631411575327000211130ustar00rootroot00000000000000ID3@Y  2>fRTYER2014TDRC2014TRCK1TIT2Cloches n1Xing P  "%')+.0368:=?ADFHKMOQTWY\^acfilnqsvy{~ LAME3.100H $ PE: ?LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100UUUUUUUUUU% ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUdULAME3.100UUUUUUUUUUK ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU\?'?LAME3.100UUUUUUUUUUtp 'UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ;wl]JLAME3.1005LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUHC~*BvLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUۃ,@ (X!ջ_ZLAME3.100dB(fSLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUނtF0(Tu/AՉkLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@hUU@@gӒLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUނB hTUUUt*LAME3.100TC hQpy*LAME3.1008C`@h\t2LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU EB h@?T5~>LAME3.100BX)Aeg/Q1=LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUC (7$!y.ILAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTo߀B (T /,v?LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH߃@ ( @pg6kLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUBD`hb_.9xLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUAHE$&T!7*LAME3.100TC@@@` ۄLAME3.100@İ ۈP}LAME3.1007AD)@iku.LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ED`UU@5RȪLAME3.100@>D( NLAME3.100@@İ` @ n ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUC``(  PO >bLAME3.100E h`XwLAME3.100E@`hdg LAME3.100A`  _P;LAME3.100UUUUUUUUUUUUNCB1ЊwB1%PA/TSE`sAܽjLAME3.100Jo{uꃂ븐=:dzd5eD `( $ tGCLAME3.100D%![+$HLJom1/ٜ /E]`h8n]& j F0' gBLAME3.100@" }"*te) z!G)LAME3.100UUUUUUUUUUUUUUUU˷*K9 /qIg D:@R\Bp(` 7!Q7ZLAME3.100DHQ~!B" "kLAME3.100&~A7E0 7(`p%z3"BXr?)LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUȄ_".BxIE%D B (`p pL[nLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUFd7AtG : &@+LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOBI>;P yn+6LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUHB4+GD@3h 3 uLAME3.100 0(hQ }.߬AGG"P`5`@qO# _*LAME3.100P-7*w[j h+C$ .07RuuLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 0(+AD`(h/B A|TSB~LAME3.100HB:_AGC$D`*hFVbA]ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@Q@g+CD/h`( Z@ D9_LAME3.100@@Q,V[x)C1h f$LAME3.100@P ^;'+D@@:(P( $b3-vLAME3.100 1Z~+A@@8h( t'm YULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@o+D@@/h`&:ru@LAME3.100DA+E`&hT$  @C'-3LAME3.100@PFtC@'`$ փ$SOĎRLAME3.100HPp)'П+C`-h #^_OWELAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUHo0v+E`0h @ GULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUrt(P+E$`2h`(m mdNw LAME3.100Ao _T)E, 5h`L2ЋLAME3.100@(upuپ+C,6h !(Su ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU a@A+D =` 4Hp ^ vULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@oC)H`8h 1 W wLAME3.100ZlB@0h 0 ?*LAME3.100A9G`0 0:n1 LAME3.100$60AGED`4h Q+ h8LAME3.100Cm+?`/(`@j" *яLAME3.100@Z7DH6(`2>۶ [4sJLAME3.100DXA)E7h` ]`=LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUrDR,o+C@#hT< o0pLAME3.100D`7@2:|)Ch#'ԠLt) ?}B}ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU`lQ H)F()(`͒# |.؀LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDZTg)EȠ!` /LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPmpC" D:`p\v*LAME3.100@m7CB'`$D\%ŀ@ c LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR+ED %([3G*LAME3.100x)B .h@QydpLAME3.100@R)E 1h ,1倡iBLҸLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@W+CD`'(PA+LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUL)Eh+(` XQVDb@LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@D)Ch'(`p [XW \'jLAME3.100F`-b8E `0D076LAME3.100mDC`($DD,HS.#/LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUHC` `4a`(O@4lH ~8C" (< KuV='W~CvӄV f _yKc/(O 砖 l)DD`!(` yʷ;`#vѫ-'mC|W&0Ր, \̋%& #ŮCeTz<"T)CH!T$Fɠa#ŦUtw7nHc``V`j4?)ȈA@C h6ǻO`Fq$n],YmJ\"ט4'=VYG׉p`2-![i(n%$0Bet$GyE}$E@{S0Tt4YpaP3Q&$[c M~S"Aᑤ'Ql!aLAME3.100H%Hcq l$OD{QJi4w݄O),#qp C6lb9 LAME3.100K|6 @/ЈAnT$E{M୏it{#ט'G\8 `y5D[LAME3.100UUUUUHZւ%Ed xH?ߵ }Bf W,Hq|Ix4"DaQ`ij~ #u?ӎLAME3.100P%Q^M:䥩 6*ZK! DYG )4)ETc >0L]RLAME3.100-#& 13ĒB_P9 .p bH]DiO* ܌rpTjy*LAME3.100jZ%fI|a +YWPi/g@ZDiST *t,D=q5LAMEUm 07{ DQph׼Z=z. r~X O%|CYKJ{ (U"Mv:%z:LAME3.100UUUd+.Xrpg FXqP7,0z>1coWCYE#(63$=bTLAl4J E1$`H RE$5ex|CYI |(Ք נ AJ~LAME3.100UUUUUUUU@(HBOP0D& MkG.)-CIKb ((ӡp/@ O8˪LAME3.100b@ XW.JW@$tZ&/CYG B (4\qiO?bnLAME3.100PĪ0ʄ -W8܌@u|  CDYM`q (mjuLAME3.100UUUUUUUUU)("#();.ǯ40u5 ZDiA ` (>eLAME3.100UUUUUUUUUU–*jU"/5b_ j UoezDYG@i(`T'[_ aXCYIm )(!p&eLAME3.100UUUUUUUUUUUUUUUUUUUUUUUH%<;pa3 "ݝv?WCXYG!%D t (p04D o04(yULAME3.100UUUUUUUUUUUUUUUUP#0dVT~A/j)Ȏg<@t GD- N(`(< E5LAME3.100UUUUUUUUUUUUUUUUUUU Heo/0gKƀb* /C0YK, ^ tPCM ɕbLAME3.100X s  S!)CYM w)* f?>LAME3.100FP ,( o?*H@CLIM c (XBNT ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUlf hM(W/ y~,CYMA^)$ؗ=ƁY.hLAME3.100h*dP-]A8uz?@,BNB)K(Te> mLAME3.100H!Am(%n/TGlC<9Ih ^( /a ~庪LAME3.100>$ d_k9M0 [(43ACsy ɿ zLAME3.100 h x91o]vBPGC0`L`&Bcy@G{LAME3.100H,_3@,o€ œGA0`Gѐ(m l=TPUff@xb 4(lpٙc@@|N?Ӊf+&gU*:YB;DD`S)#4 _3 fp RTLjNNC#8!ǔm.쿁232PBnIE`KcVxb+M Ǡ;`@^rQꮭŔ{FNhy>:UM;*4ϑYDjBIEJ L$}=SJw;6Q9A˖[7Lm?]K3ݘv b,냨C5~|؅e$/LGE%D P(`&(~ƞ㾴XXrۉ-^iqP?mgdo|Lnvq1*#*qCsOFk1B*2B7KD`B)P$##$)t{cU)qYY ; V6=ZaEt֞5+#JRb Zhdȧ"!B7C$`j)tp¦_Fd ^+.TZj{A(F6ahRMLDq-#4HM<˩-4xezxثa6U*2OHHw% +)D"= [KƋmI֌v)jbQ̤fOo=]r3Btͤ.DASpo?'6ʼU04GUhT>kb48,fzbe)`f4klͳ:iF PD C?(Ny0q!W AҦ!HӼWUhā6·ՈH:wȐ.P@4FK<L_;PU`@ 3_P)`? G5h^0 \ osf4#dVPyv I@ DX5K:jJd:R{laA0jd`ÍQ&j$G|{z3%ꮉ$FQ໑i4( +t@K]R-ؒ)!jly ʴ7]u8SY6ڡQ W'Ƌ9ne ީ쵁8FR`i`ԛ&1$FlG@+<`@ :=˅UGu'n2-TCd(n h( h.%+:D*F$EtyG1D@(6({|X=+. B)W_Y;e3z 0i 5¿RSt͕LAMEUbO` 60⌢r YJۢLEIG (%ƣt|T+5ubWI շB2^z LAMEܻZSïmJvo&-!EXiM )')#[ Ir x]_LAME3.100UU 4mK$t/Aʸ ʍJVߗ$DiM-एit&( Rsni;HH˷*y0yLAME3.100UUUUR%ÑAGvTg_ 4{Q$f"(D{O-Et4(| #,-;LAMElQ"kDh6!=] obF؟g'MQ%  ,DYM1D`)tW|} jULAME3.10 -v;%T^Z@4'۶1.>_`XLAME3.100eKX؀rF>P24'Jna+#\9XzDKCFx!+ `J~CIGcE*JIMxCWE!%D Y)06TB6Ձ_Q/LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUlcPe}M_~4B9EBX ($by8vLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUHHa@,lqD)"dH xCGK\ ( 'X+xj0?LAME3.100⨬9XQ~VC9K W#a O7ӆLAME3.100l @`gCr`xSoñB7D=D`Sp$"@xfA*o(oLAME3.100p ` xMm%BIQ`S%XQvLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQ&zIG`M(6l59LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR@RdV@J~Bp7C0DV )06(dE T2źQLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU qQBGEa<`Mp%#"h,ѽLAME3.100pa QSBG0`<NPÕzLAME3.100`Db7BdGIP`;h`%Kn; [5LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUD G]J 3` &|iXÿRuLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU` M$#A|E``;pDҠ@zg,е[LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@L>ED`1h ` HkqI/nELAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU<#2SF`1h`p$D@e;:LAME3.100  EB`)`Vg) %΀zjLAME3.100@9׊|)AB /h`DEQ84@ݶ-LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ Y+@((` T 1H) QLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa@dJ 0(` X(H@1iFLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ ,E" /`D+LAME3.100 $rE 3(`v됁#?LAME3.100 C -`$D D'*rLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUC`) 00D00nR5{LAME3.100Il%$Eb / 0,`HJUh>&cRkWk)2+ݔIMSq^ו%&GPPuh)CF`(`0$DaJ߳ &QYw! "(5jrsgژ0;Bָa'H>" )(`DuXxASP3w5iIsye,sXJfjmL#7߯`;T7CHiAb Ta$*mc'Yy|}8+;7 }Qكxu4$ OjO ! rK>$_b M02jhH vtAXUk_uԅxh . oCPXfXJϪɊmK#e72k4 Wk)'c}eFku:vv[ a D&HߑÁϖo!ګ @c-%. G^=S`GF=W<"sX ELrA DC$GaKkĒdkyPsT7N>1ǻz S*&pckzG%*V-.: &=`jSm!8;rr$0[ ɑjgH$rw&Ù| ?Ԏ>+Yzd$̻a2 ']/h``f X-CBj5  n7<4W,T瓫< 96t31D [coH'ۂZƋdG< X}01OÍ&PQFA's`[MeM[6YΊo[LFNy\kje*vF?4Y6`뼔5$Tx ܭd`9} *785J%Ք Sp6#SsL~Hg1uQ}' e)4%_2yX?1*6_[>sw(a P$lSPb+Cg(2_Q 6\g5~L8%}P{;*ԱB9f 9xwU?%~P b$FQ5P꒩tǖ ܃m`:(2*LL(X=eف4QD&UiLi,kZ!Z$F{Ub )t  ? Fӱ0v`'d w0cn p8O@bhJ Wu(Ap6V)`ymR5 %?'ht$EiM itVhSs1@g/3fo)^a_4J.?LնrP5~A>2B~ׯPD' w@6fgcs$E{MK j`4D2@za:wY v( S¸{bCYzI` ?A *h sYb$E\{U頯i\}Swas1')+ WDm%2gযK m^`.QGX4pzCw 揉+K82ZE}Mjt qAUzX7dKqfM:wBy\xgLAMrF{P 䩘IiC@ ۊK[-DiO,G jÓS0dŁ`/8SnZ{sR=JLAŮ@& " 5L 9.i$E,{S`i4J ,{Y(/]8]@ ULAME3.100UŪF N끢-'k @)"w;⁖6:DiW(`j4tQ}AA9eīLAME3.100UUnlAHeFKO qOB&|ܚ3Ѩw5@D}OP*4wTLTɽ6LAME3.100UUUUUŒ\ S=$P]doQ;!9Xm%,`t^)T›DYO)t5TU# ػ$FLAME3.100M#%A1wtb0!@$_Լ*|a1GD{M`)_(L_P)KLAME3.100UUUUUUUUUU"!JHү*3=E)' }A41E @NID[K )t ؼ !fI>DJLAME3.100^ zE$(8y+> p Ȁ DtiO` (w> >`8jLAME3.100 xr\ud^|m,c`vACYE#E`)0v4FV?ȿLAME3.100UUUUUUUUUUUUUUUU(s^ L~B~CHBH+SxCYK@`(,v48IoyLAME3.100UUUUUUUUUUUUUUUUUUUm(@ vvk>.C9K`y4v(:R;LAME3.100UUUUUUUUUUUUUUUUUUUUUI | fuI`,`D(YKs)pV4,_Ix5eLAME3.100UUUUUUUUUUUUUUUUUUʀ6lkZe|u laCIE`ht(:ʦ`Q#vLAME3.100UUUUUUUUUUUUUUUUUUUUUL"`%M 2nALPfkpC GG"DctV4P3Л LAME3.100b X0 iZy?C`IO^`UI^޴ ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUea@_h 0rGM`f(\^ ;'lD$bPP/"g+,)&K؄r40xBG,woC YKDU (WXn+YLb_5^nbѰYl 5ݓ  d*!TuKmB٠,adBWE#D`X44*Y1,!w[4Ke 8BZ[AU Brrm(ޡ ߏ%Y=P4FÓL$FlSX tgT#l~n`Njp>k}ҁTc'[] Ѡ;\2XmPkԑk~Jj]L~AZbB$FTUjϳh1ނ-o`+`0-խQFX 5+kd;uFmͥEr{ 8'pwB݂hEkS0଍*tDXp y}(AmC~izۭ2[BcҲ7<O鞘 EZdkcO@^]F$E{U)rj4@IB8Bݰt΋I7+7[ZW- K { _4-'p? (:>}N $EkU-ਏjEF, 5MWn8 P1R:$dnfڄ1 UEIY0l!t,&0>%$dx铹f5?x]YP EiSn`j65i=?|u 6ڳuLAME3.100UU$EiK )wt:1°LKMO*I'@ D4iC%`u (tTPڍ|H'CLAME3.100@:ZM rq'g~6dBD?CYGu(puTnQÿ6K?LAME3.100UUUUUUUUUUUUUUUUUUUUUh$ "`p/8/+&tІ47C\YE%L v(h4sJZg侀ULAME3.100UUUUUUUUUUUUUUUUU e<<(Bk~7j"APkCYE g ($`@fWLAME3.100UUUUUUUUUUUUUUUUUUU 7Fkl?u7*0(`ECWED`m($WOߔ5:o[*LAME3.100H Ed\?P%@p"ìGEN ] (`(̿Gh/9RNLAME3.100UUUUUUUUUUUUUUUUUUUU I1]@rxfw?R ZC YC ^du`t}soCLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUh@ ז]BIC#D dwM][>MdJFB?we y{  (" DÁ;iTܤB7GcD ]dQV.2d+Tu$לڋ5blTN5:^qpfTRc{7vs;Bvagy4}genC@GEDBZ (8`ygGi=&+(Xz* !ù* }1Uj٠ Y^)siBGA ]p(!}yї */PeOg >dH5GF:VɑdDK~L"Vd5ƒGYB9EeF`^谠*, QN68ZUWI9LI~d"(z&~5u/43[ #TOԎ>,RpM'BGIJ X(l(D02g;!֭R4v#yf&moڔd?R¥'o 8 -P"va ;DD MА(DV1G+!@xCI_*._~pM nN B3tA {3$F[Eri4" mf棇/8nyGAu-I3>NbӬ~g)'1 h2$gY 2bؑUz5[KՃXm|4GDW ` ,U9m˔O6`FZSDQ&ŸR#@:tWf=``zXi̙j@*B6!1wvgBef8s([Ā˺M $F|Sv`jt􍬭;Nk2(B--8q,)0E#em渎OaSfTiR&H[DV]i|!ĭz&$EW`4#DwS;P$a9# FEp,{ɓ"0 2=@`J ]JlWc@"d!b~cAOJʒs9$FQEёj4) к* `L|*}wC$=`,As=Ɇ8.!oPF5JM.˹490->#22H&/1ܛWeN>u4GdS44Ŗ%7BC/onqTH7B8cz.͂ ID:CغvAu\q=Y KBk%'3őB)lHl` e$FM5P BY _-aIV޳ÖQl /(,eL G@M(?^qFJZf`R:RC "ml}-\$EUQ Ð)TmlVY)1?е[rD: uWS1P]o\Fjt[&[oנJ~URE+ AK *Y\s$EiWE`*5;#@@IY`:Z5!eOT,uր[tTs}~}!a^jIn/}ORLA*ņr _-B] vE$YMd` )TGpV-XXrLԣ8r &LAM jf^bT"OcΡ xjEE0iQ` i6L^& XNnH1ܒϦbzqLAME3.100n, <\D!o[E{O4tEpdtZ+P50K! ~8b78 Y*L &!_GP+=+ 萔! K$@DD8060+E`Kvx6n4QOYZ*UGHmKr0Ϛ!E*QM7,3!9cvOu%6vB7AD@M, P h@m,D"V /(xWjsj|PWP]q&U/IB7Ee0O( %0hQb141Vo"\S&Ea!ZH:F d ]a`7C <( w1|:Գ;F{sZJlY4r.jiN3{H*!F0v ~ʬa9I5(` 8&W]/q4}MG } m-V x7и7"5F7RWG?<nzS>3B7A@A,sI8#TRwїW f83BYZt/C曐ꏳ$čĝ n.+5R=[ YCY?$p (498ڷ R5ŔI׎z,bliBͮ6+_E:\CrR|gpeI4Ht}Ca/+<ŕe ٹZft'I ?/"`_ $pq_Wy'JrUDē{m`Gfj' zVeuϺԸ:X@J9 ' D<Axp&H"Qo$F|}UX *6X5I+ZpFNfИÆ (.HspC̶q,nhoh4jڷ/+2hUgdsX!-6]GWY[i$EyU jՉ@Xμ3ݚ#U*f_~!>fgjL6Ȝ5?vR^!ODLA7lvZ"H2$FQV`Ə04NEʉa@ބ<|l Nr`9L;zKM-cc޶Hb&iDLYE-`m (d(H^q,"huLAME3.100UUUUUUUUUUUUUUUUUUUUUUU j`U/ /}1\CYA#w (ƈ~n :ȕLAME3.100UUUUUUUUUUUUUUUUL&@!<5AJ<xX(@IJ#CYG$Ip (*J  :.ܢLAME3.100EHBi UaWf~ZF' kGCYG5B`f t̹0VjSoLAME3.100UUUUUUUUUUUUUUUUUUUUUUm*J@(v*/um%1B%Geb ^),2cn*z A;LAME3.100 D(t*xQ~S  CYI%Df(`Ũ䭼2}LAME3.100lB!j_a E拿N̠(tC0GI$ Wf](øɵl`~`#Nük`IcrV2@ &z?fm>YNɊRV%EBIGe`Spp)D1#L2^?TV@DnBHb5gG[śAP%/tNd60 wcɷ\B)Gd`֎(mtp27? /*Qe$S QsɥNQf}ꪓjlr/d^[&Ok]5A?F٨z$F[ n.bppR1]* hb "1~2 N(xgO!򧣿jAjy61ܩz䫕?6I1TW׈E1uFr64GW<-$ 8ҫj:!G"lEUam!A$*ۙL+- LJ1KpA{ɳ Of7EDY0;kLhI\=a~M}Yl@0Q4GYTߓ*tƪف=/-{↪#jnOJx'Ca[;/ހ*?Y#R} vU'+M-#F%ij- {s Vc}kþ~$FSRhϓ*4 ̎8&L`?\£)k#/j$K # IG\p[mٸ N= hM͋b͋}dT݄8/A)$FUp ȏj­ʒ~*b`O`)o -(1ҁ jԄ12Tv;ʇ*̓W0DP\ž{Ȟ&7bKԗx(>a)C&$FLyU ʏ*tĴ |#Z,+yU]uxd$I!}7tXQIB+dul(AT |} i~_@O#>sYfVEiU2` *ǔ|qXý*[@^]@$Rw!dd@{JUcg G7XZf=A$S $EpyU*t2ّ =Zmmr*IƸ1|PkIg \/IY@T`c;\GEBh jvoX$EyU Cѩ)"z={ P;x8״FRWop~\]m0Z./;SALAME3.10PPm L@%͊1EyS*t.I*'v!HXnL2CYV$w 1FĊq[X3܅mEiUI`*t,D%N)C;G u e]?uLAMEU 11db"=GZW)Q-WEiWO 꼴zڧr^)mˣQY0`^؟WLAME3.10֊HJP~@,Pi]9#5-$EiS`*D@7,4(-Q}xq<5i'|/PaBVP{eLAME3.100.@YdjA6Z 0ZIz}5֙,=ӊE$YIe i<-Wj~!7T]LAME3.10(w`$^yrQA*?|DS,Ac.ҾE iSV )DחNaH|ULAv)Z}E'7I3lhd>\Qbǥ!(S a=GCQMG w) [@ɖQ q~YLAME*%iSP~^seAӒz,K@ݵE+xDWQf)v46~eJLAMENH-s7qFe|__W~m(l* DGO堂jTBm8:ULAMEUUUEJUX)QpݖAO L,/r6M荒jx% zDYQ x)dJYMEdkLAME3.10088*W>IH;SaklQ!^C9K}*5K+}~LAME3.100FjfIW}Rhx R0xPߎ;qG@* D[O )Ĕ`P?L2cLAME3.100k7î$KZ d0ky)^.PP*DYK )(i>Vs]<=LAME3.100UUUUUUUUUUrxm[c UbFWK^}.49ёDYO㠅)EA:ۈLAME3.100UUUUUUUUUUUۊ@E OE,Z kxău?`DPYM=D (F2h'ynLAME3.100UUUUUUUUUn@Ba>C9Uz6)V_6n?əiD`YQG (r(ξؒJLAME3.100$p{W/D sLǴG.S:J~C9Q Šf)z[cl5LAME3.100UUUUUUUU n@nJS![ǭD@ Z+mk5CTDTIKt( ̀G+~ºLAME3.100UUUUUUUUUdl( #r#y7ICIE'a(GzM7cULAME3.100UUUUUUUUUUUUUUUUUUN@ÒR& FoLNspFhED8CWIc䕘4 m vYŠLAME3.100mdrdapAt_%VTCCGe초41} 6vkKߢLAME3.100e$T6 E~RD$`r%PC9Gmd&q kLAME3.100nsq1QA0LCII s )04cAHB%WCCULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUa4sK2-`W[{a8CGIHqt;}[\LAME3.100B?96UX_ mҾ؃;]MtB(A07Ge\(%\heze#@5thGgRTJrRM!@5p@Tm2q60u`wMy217OP M蠰 (u»3:/CNeCeV|r]ta[6[E 1zT¤9F$N)Бj=L80[Uzhɞ_ RYH-ܠoQNt$L;iQA=!IFFPOomȳp9F *U'Avd#+Cwz@n69 @+A;/]չZQrR7Gf O(ФĆ} u;߅L>a0MfM+ Q^H%g@lㅙ >̏lܥj˕B7C ($ƲDgp/M8#]:gŷp<﨎 >Q>l0VSPlhJ"Z^NNJNPdFkI`)t4ڜ}]oZ$/BSb:`K5M'䨪 QUFEnXQ3H>fFI]j`ؽ$E}O *: 38u{J#@z\BYl@eZ!q!~"^Fba G6. +yL}0TED[U i(V ^!!? 3TqLD 9nS=ULAME3.100&!FdfY(2.lEh{QN6.ET2SmoUP52LAME3.100^ԪX]2õ޲1 ,$EiOv)ÚjnjR_y  'r)m`,6LAMEUUҺjbriƕaz ;LD# Bn ɬ1ʆEaS ()(}lau7أLּmdC:jBzUUnKw_ Y^rѭ=QЩDXYEL)4Ԝ<%*LAME3.100UU2j۟ څTY+ PNq`.@K|8 OKDYKp *4l%Tu6ÿ*LAME3.10I 5^7 ZӇ$o~#]=Ue+DRDXYM }|\n)\!.RLAME3.100UU$Y ѯJF8zE^_wpr@4z H#DHWK`x)tO URLAME3.100"Rydc f# }],,Y*nNe/XȊ3C9C%E@(CYIH (4hR@w̪LAMEjHBWJ(\/x.BwNI)Ys@#"RCYIBy )tDǖ}2j]s2sW[X@ E$EVf,5DYA'Go (𱝌V.E1W +2$Z<(dY[Ns8O*뉡J75(|)S7N&? kJÄWG `i )PZی)!FZMQ(,;* Ic6qR徚̧p Wg!k|W0ML9!i CIOP q)4De׌QXU=$Sna&zBRǺ]D5m;:P{Fc3{ob9,CGG H )4=yg'^;LEyW\ch9 ;ioANA~]%8sf8M3$HiK=׋tDZ4}@j¢[b֡R4B Ee\B_Re{֏`BlԳ(J ]$EWYᠥ* 0SRO"WfɮM^FiDnw~*_2 Fc/bx!kflLzڊ R ۠3"6/ZREEOU)tĨ%%ߒf?Ō&lw RCJh 凪c:!LmZryJ$ ;DaQj452y_D2ls %<`E!kFpq "0hٻ(U? $EaS ջ^`Qol/|S:a AQ` X]Z]TGWY7ޭ,fӢs^f!ap27`kśPVBDaS jt3q i!&G SǵH&-ܕ1 YZj_8d"~#gn]y8i+,'=7reR$EQQm(ڏ*|ť\|mgվz2DB.`lvgI3R6@dVڊ/ԫ#;O:^ T] 80'ۚ=r|$FySǍjgK8HZK*Fv4'wbp0#9b?H8 ,iMMp #7MꨈbQ!5NR y >>.$FiW |(O4ˉB5=U,`zC&B>@hK;P2NgO}_þL̗\+M_j7!h :w $G@SK-8Oyy5A`F݄K N$G`Yphȑ+5F[׈Ic;`$r*YJ(A',̽RsRP$\ 2Pf. xwL<(zُ(o ӕ5u?)0I wx̊G4Fl}Y ɏfՍ j9- 0T;%צ%GxSZ1qʟ$Qka)*^Erĉ߫a6c{IR-O>OR(ש4unCAwl$F[@Œ+<Ĩf#~^r!bSiXj#ETjD-FC<Gy;AVYMSd/8fۆaMJE_MP i)VHBO3G$_QČObJ<(+# _5?E/E(V KZ$EdQO್ߢ8oW[*VD]EӍ/IڸY.k59'gWWhmU7z-‚j0>M*wPKj,h[\VE`oMV()<2 p>Ɇmz"cܑZ u%V™{UU`2R#ݵAU(}=[SE aQc` *4¤D]@VKWECh> ڠtY1]+@}C, 4ֱsXfE$Q߬}$EHQI )jD\Q5>ר @mbT2F~iʓTG_m̩lBgcFD8hl~] .5hj$E0YOh RN1h,/2VFQ&k6fA~?i>UW!N@*S0LJƧ*؛es9K:/buO8 Zڼ b1ELQO` *46DY9JwnsòX iO\QcMct30lc:}"]BqԊj;,DxQS )44XCS$lwB$'-γLC0k?.u,_!o0RĠuDQM j4,Yi՘l.trY26}QQzVB@z[T=vQ#wBtjVPD0cDlQQ i0<|(! N#<( q{0Җy ]=+Q4G=ũR˩A]+ ($Et_Mٍin~lhڡlhF*Q*xfdQ4,jaj A{([(u5U-EVhJ6;\a MB6uk$FpqQ (j|֭8YמIZxR6$wahal[\&~RU!!̬F kS , jpIujV3'ן/T"F?D7n2L!фXwv%CW#,a$$E{UK`j­X{IuuS'CͿH ?X7׉ K"L A%!hAr hK9UN2È-+x3zV9^]8cQcc$F{S` k< *vMNC~X+'(Ae؍^#hjb3+gf \ 컄1<(t <62jV3/T؈6wFa3 $F{S *-Ԅ5'E[& |%=Q6u9[!;igj kcC S/D4ՂGi€4*.2n$F iSd *îWux`Uh@ H4 n!X$HDmV4}`v7& M}8daVlXpgHa\ܗx=EiU!P`* J=w5R6F/ƩEY P,K.Gċp aILOx)3ұ4GoW `͒*uVq_ÅL|7QςoAJ#S7Ag`IMQH f2X{e葉^$M*T{;血7 GuvE(fDz ^j&|hl$Fh[Cϒ* *&Vb5bE H3$]$K +#F"ϥnٛA9*#-<2 5>W+vLmVE2*$ԝUǘ *[kCZ9Tb>`&%Dmb*&!p-|@1RX:2!B08 l8LYɅ4F}_i`tiVss$` \R6FL$QJ 9|}9RYWnbш8 ΓBD$5bBt5N.GgJIutazYrY1ZFaE |qFY[xj! @UJXB<\$P*idn41~ՙv054Nk)$GXY4 0ЏyMHnlb`CS*jK p3BC 0$CA#d?un\)A9j2D&>)$Ea[LБpRn/( d"8f! e[ߡȐ>H~Sj  bA}9BӋ1eRE/Hh1I|4#L =4FdQ@k10rܶQ?5bmk1Ϩ K!0ը7gyѿE<M`Ft,, +rQ,%tfJ-p D+=:OzC&ExoY +(Fȟ36,v~uʏR-@ P"@ RTحM'T#*J E8aUཋ1Vl/.b$BdBܰ|]2G8ctb 7W4Z$vD$E_] +|ҼbnlC3745.sәQ!*z5/?>wbe-fӐ`)%:v:~$M$ET@'c"`LxU [?lfD Nh^;%L AX0$F|Y$頧*Ut@1U"OlF6f-?Nnh*q%| 1cx*Pr#&a:S@ h[u8^N f E$kS$H &J9sc~# LU0RtXT\ h8+$FoM4 č6Egxt?l.IUρn'OD=&H+J,JՈo_[fX9KLk /Y˂G SL16Tݓ$FdiWV 4Ŗ USI+Α.Oa pHHC NXVUʡErϸSZubCVLjrU)`ԱDq)|PEaU礲@t<+c?,fWZ 5#`uZbaCAԄj%Oo C|MG]zX $E`oQ ,vN7סΞ檘fwE Ʉ~ ᾲɩ "HV?"&t ف6`^}UR) !-4t}(v*p* o$Ea[頬iĝeMs],+3XR %TjkoTbUITV| +g2UR) mpwW0H!, UEH3r/QSPf BEoOE,C%nn (% kbV'Gŝgk ]-AyE'j9VגEIЙY5]D_O)R> 9"]{༽APE$9 D02ƠY9PʈExRY=` @Zɲ]Mo+4aq`ҍ+,uY96'x-x"),ؠ>SU-$2lř2v0ҽc?!/Bu Pϖ.)Ϣd`ydrM jc;yusDG% Xvh~ |24GYx(<3Tԝx D.D ;N˵L;VuԮI(ȄXYjKU=^4FYŢ$Tf*P &^!v%d݆1O8LJjlҌ5{,&W ܋vRP̖6%!*g'O\@ge+1hNz7@$GdUh<5\PUQ8kfe*8B~EΏ+[WBT Cxq! )"A%<) Ury$kÁ&A34HY笶`*4!ra]hxj>e1* Ƭ͈)e 0m Of'QZY4GlWGt,ՖGX!̖U=S%ZU")WN("7 )[VXWur~j)Yh(?pI~ˏpPri$AC’7¶QI *B!$FSp ߐ+|ŵdGMG-X'6]!@n{s_(ƥ=C3mQ3vǒ;NR/^'WMwμ<ui\V/c0 Q 4GS%t}C?9V@u. ~de&t ٌW=hVRFa(5+_F EHQt- 騆1v~FZm e2\/N+ps5tQ˙ ($F{Q`<&tJچCs$ewq J~2"]^xb/$Շ%}:u>>j3Z!À;* z^qN1"9٠ $FyS<*4O`f Q-L:MSMRH, YTuBmC`E =PzD#H0|K<&nωA<$FdiSlΐ*4~UyBc%E M"9 n]P#~^!$aF++:-)O5egMnUD>mE4F{QV`jŵH:` Tmfs1ऩwӔpy 976~>ьu*IxjǞVDL]Hl5r).qFֆ)WeCaK=nxRc"\W7FH{QE ǶD!- ]܂6l ]elE}u!Qɔ٘ޘ0S5J=Õu Q=%$FpiSt` )ǭ[텥8`*>%#b@DU [UL;Iٰ{ŒZzlTfcHS!X7mڭ;#7"4Sb%Mcf$FLyQ`*Il8qUAp""k9 rI· Ny=Z$~qϠyE"ʄ/+4J*LGkT hB\vp 4FyWO( k<^kKa=rͻE%3sqBql5m'pPZ51A㞜Aw2uƝgk.%>N12 bcbeQV{$F[vQh_'[k​6s. RF*N.f#1z)rgd+*fUOCͅ~&cEB"dS ҝ pB$FxY|!oIA2&~l/D\AE2=dOQwW4scM:9j%jl}^1"/*EĜ$FW礫`,wyY!1pVL{_i˼J"$}5$Ea]夣ʍ+,l. VfQەi}le޴ CP@/EJu "J -޲`go|LO9co}S+.q,$F$oY簥+|%{a1PI3G/ŏ1X ΡXvg/шxbD H'NZŵ^O O-a0v#UBӠ3! J\d& %EsU`< =4D|oS*d5>'n8|9aFlxXPX4~H$EoULÊHyR!/I!#*Mtdo>bq_/15TsFmwk:j|T_TJw!ɟMӁ Y1+$ ZYçi>EqSm *t yZ latb^E8g*x3a"[ H4ksQ|Bs 0π_[8g$F UT <,&"g OK5& oħK~W]˝(+&0~wPVRHy M_jp).#ExoS 45,%MԂWB76*ﷀS (Rww^F7`EYAr 5y ɣR17,>HDYSe )Ю~eTkXN&'$kXCxꃂEH`Y;hOHH\2o(ޫO~{aEfb5BVV֝?hjqI)I)V !spzjg2P} CP $EPYW癩` j| )E)^T Av[lPZlدzظbĊ % BÙURu6Қ9}~oBLϯSAU3 88ƘE,YUf s`.&}C{izC-\GɑzfcsP@ #srG-* t4!wDQS` i pL 6HaErt_T zW~Pvw +˹nL8mrebeEHWK<`i44x#s!x`lHSʒqi+j_i8D{$][Ղ--rH;:4 ~jj!Т!F!YM% ) [5+VWI/J,LrxQp4 `,=YsMm<ؤ,E0I1,hEQM *8 2q i̶j~` ZnøF y[ PjP* | )0knSwP#E$F{UK+j:n7-'?6R]K}G!5N6C-hؘ~oЈCRHD~\C I)IakDf}#$FӐtղN"nK#4FdyO4 |}0 ?amH;& S&EY-ߌ?I (-V{EeU0dz>)p J5xsorxO* 3^|5BiQVL=(LIq4jv$F[`Ƒj:?k2JDK\ɆCQa¶~*$CbTH)jtʝ@Ϟ)!*R0ܺOl bX$E%124FYkh vr0.v~y$?a&ۍ'ࢍij6ec$0e F?lG2cR MyPBot#F-mɼ1uJkÁB_U%m0~1U.$G]砬辒,<|lpdaQ7p6 MBŸmbY՞/w!C&y‚?C)r&s2&xWvV?0mL6 A}J~ $F]礬ْ+<sydz G3CrT`pR6pCA hA;{ 2ςf6&ni1WixeAl[U z?I$G06MTlP*4GYRБ bm#b0ve` ȇzk']UxD q!+~ⲏ. a#^ousxV#f$6T[?ߕeTw 3T& Y IV$F([M+Ĵvrh7^5JD)Sd>P~ ƽ X:sR6f#x" x^Kq:?4]& B$Ea献`ȏ)Ase?"I…&ʨ%-= m@wr2j;*d DD?$:Q\A7l?Q^"{bmP$E](E.{is*>mB uDQn9M3+IE-L)(G2k:76Xݬ};U7b8mڗȗFB@F`Y ŝ4"bc󼞫UCѫ$EY礩`*Uܣr"'%%wpMrL"4/hK:6|NF ~<)jhVT*9SM(>gV7PzP2w$FHsSG谐*t<ˇ7XN;YW{E1*!}]*>q%42SvćvFAe\ nԪ&/bh!^ \LEY礧` <E"r-Xd6PCis+-yynX "U~C+`$@ձf$EoUC +<, 9 VDnx.`WnvN(e;J:+M VHܷjެa"XBmfD@C$E_Uௌ4,L"o 5Iȥ?UН`j(0яy$/̅A"P @6F*|PlH%^9Uh϶S{P!]`mx1顊SEpaQ࿐*t`'% ?ggIt넁J @kn-+4+*]Ŋܶ0J'4z<$EQK4%t*,F^xg tM9 f.og4pFz#GnFqZly(LRybc*D|M< W#(U 5_2V-3DqSEE^A~ ^<*<X ^J쑥 Y0+ڔ-1"i[[JQ|Qw Іʀ3DQQI@ ),=ZWjK?ߚ5Hvci#TH2KOlVs QXe%[V Wrdo$E WQb ,lVvLsq~q<"ڥ-^tufy#TV8 ␓CGvR!!3f6A:eU@6*~b?SBI` tDB.>>aZ@$Ei]簧 ݑk|ĉ|m,fM T~q)^@3 7B+WMAhz*zHŌSxAvE9=`f;uNQc44]FEnN? 6ZB eAYhR" VkXc7Y|Lw7V8w'14ZjX'Xc1Nmim j4HYS)sP3rªMB4,$Q'~A<^t*5ǘ30 ?$FL{Saj|(ʺD%M`!dw1 OS8yj fġ1C:xBcDkD6񡀏l=$F{Qj *^Dn,+-zG HLW+h9О:l(S(&6Imm&BD:X2d߼=o`p~D$F!ut(JF1s ǚ 'fB]RR05Hd"dRY*%["I$E{S祧 )]3uaȇt}xZrI3DQD?2] !.& E?aaSp><9D55BdBÞ[jٖ6hK),1Զ$E8[Sc`=-DBð>fVJJkz`tu漩c+Ur#2, A2|gF#7ƃdIIF4{Wi *,< <#q0S\ =JCE*s}b{ ȳh}&mRs ep̾z-}$EqU簧<,L{P>HY2WmNgp}D {e+3)E#u6lNʴ\+Xt gKtG9zF?u$Eq[Cऋ+Dҍô'|(~H`Ul|6e$FqYk,enYa{wyr{rtm#)v\*>*6ĀċgC7͓5g@M*9IRJw$FqQN  RDA>, !Az׾Q 6CW\Ab- td^Z}NpݑVxMGdQǩ {(Z=Hv-DOS`|RwHaSq[j]z?h ,5-E8!MOǖ:H=T6逺$Eo[R |"@"1l7k>GjYogIGJI!ߍ,kVF{b9- $f-0Ͱ lDo(DAM ` 4 $ P/Amljb2a*|&hbkwKEhoS[Fu<ǔNAJq.Ý*cӎN"\*"=ϱU]4G[<šhDQ L*"'z1?m /ܘ% 0(qs7(Z&a#L@ Jx=/zx$"$FiWc̏+|,4 5Ǝ5"]ֳQG !,'.5pMI}0F&\y,6R$MEIkzbOZ$G|[癨ཏ4&0KOh7b߼cbz\l(kONSO5a/VD)_cԥisxygw[_xY:D$;wpCG-4G$[cőth1D螳ajvÏ̶xdV#9јZPȝ})lb9W0RDž9 .2ŜRHҽ@Y~Ǒ` Ԡ$Fȍ]$ |l(S `k xT$8xOyD]iulTPa$,&)s *uV7"(:#Gj%>1;>/&3$G[ ڏìx}2ܩ-HA #rv-M8OaEyh1Gdה־kׅ@EAk#D DS?YIGa  }4GO`Ək|4^{䄲ٚlM4QY$ɷ-X4yHCa>B'AI~v=pfGgcKx"is  ywGs` :ގ$F iSc` 7pAS %珢$d! @̮{'s=x:OौP\QTi;W,ΎjhD[`>^$K%"aHq%$F}U污jz<-wWӄN߯M7ksq"Ky8F@%8P.t>9?5aPDb; L22$F{Q-j($XGQu rأ", P9x&p$.gc;Nuzӿ*&䦵"טv>p4!))kb$F KAํ*=, P6znq5[.:t m xxF56 V`T`$SI%p.MYᲓ 8-M64G`S) 4?nFF"sr"G…P 3=[PDq@ IqzƯQds `p;||vpVتj`X)[s5Ϯ cm$̍Y| L% vLS(AТVָR$_WǰȑN@oau!ն*@bhy؍YG\ǀʭ?Z@;:/ЗgZ! h-.=HZîI1ͮ.|}S/4FН]< hQ }PwRUd/sǶ0他Bsq ੄ D¡.S[^U}1 @؅[ i R Ti.^{cNXnj$FcLƌ+|1b`᷂JԘ1%$ rOܫ$PD=(Z]̷\#Y#/zS v/+ P ǧ!4L3 F}TRe$F@oa ȏ|D*#3ffb/<)kA8%:3yy43jP5OWD23_ÊZ5Z _I*pPa_(CWWi$El] +=(CPujEr"g<FlTLWtǜR !ic$Hyc&F>w5sxR@Pdߤ_13ǯfd$E_Q hpsu q#ԥ!A7E,]eǰ=xP 5ˮBrEK SCL@)Ev*$FUǥN 0czfjM;o$w.P5ݛ]ՖΎ< 190z#O-BF8 V?=**^br:s$FtqQя<(ZLr y m  '[vB0S`6(Lɘö,M;fG`j $FpU1 |LR0HCEB d,#UX?IF3y~%MS^jddDJNL)$FoY籩` 4)e1k]UT25B KN$I+IP ujm7dտ^3D? 8ripC&y% J(v)Tr$FqY籬໌*-Džf/- APEevݨC -#)žyF @vųq2w!CP6r0 SXTtWƊ$FhST`<5ۅM)WqہhY߯501o[x9R- so?)ة JVwG#dFV J5 8G.~q R$FM$ dd`fҴȃXa8~*i 8*7"Y'l`E{8E@vrH49FT<u툵Ʊ~V\ėU ה$FsU1G*tǕJ^~Oop+ /|""M(!mՎtx#L8Z*>GX/8X¢49L/C{җL !I FqSR )8+ҝ+3n(34葡:)Tr0"!7'jF9"pfSc\>循@g?H%fξќ mG$EoSऊ*|t,bh'~PZ6}fLE~lG{"hLM{(_i % ,({n+n̫ZU5nZ+$Zӭ1MVRDaY笣ఋ*4G֮tI((YjE%Av:|@&'&DBZMB-w;|TZCop:+N0D |Qm$>59gUDR# ?m#0$~ھ|׎Yqr ձ. kŴJytϭ%DXDE)X#k;4GWx -4#>N3V5."4@ 7i(6+E-30_+o"J#H%u|y\B;2'GxLnQmCU]jo.*FXjDHUX!+<5hnᳰ~c/UFD$)7`; -舣abCTHj6:kQa4$ˌVJ w{6g=,wi9 ګ W8edcx e$D@˜8=L4H]筩$tK$zɼM Қ*}cOt9yG #%-!; tղӵAzH&yfBbT.&ٛ1x7`'k:ea$ Doav޻4[p󑪽5lTʘlvZ9Ѳ|eo@*6rc7-VmcQ7kD$Q@<ςdau2WWf_@E%K4gYx k}vNg4HTUk t-&j}וͫy*V/m)uuu9Úҽu`GÍs*0; _P(Sա7 <ԈQ)SONս-Ej0x~܍K$G$]祧 Ւ|p'&S9'Ԋߘi]Ij/;{oa^,,kIrEh>|)py@nk%I "`ʠr4G Y硪ݐ*4<~5+P.@mH3m> S5t*S8CkPc"tn}$HmvjTiA1s.|82(_ԣە4ԫ0JeGeU$F}Y硫 +|"$508A?J-jX{b ZEŲi|z٘Fށ)<9p<)~=@KjߔH YJ#4F@iYc*PoeQqD9xv}Oz40kǐs ^h ܨpA4جley,z|v%+]K6,j'=5rYUFEiWjtŊ$!ILOw%"Yw 5EȢl֘YP=Vr\R$dڧm(x9AZn$F{Uk4oN=REHZi$!9A?Q#]/Md|OP"DA'6>S AzfF%Nҕ'X<-$#V5$F kU1a`+<ĨdV i-L2i2lwgkKx?ڀ`hQܠ9jx2dNz~ 8C@p,φ~7W#gQdt$Fp}U%jt ,O%xRq7P7y`v46n\ƙ qzDGQ(ibj# 4dF00ZgHUֈR`(#M0I;^`$FyS笴` *$fb̿, ֵ΋MEm'RCA)=ڡ4t)zYGɆ2EDkh}*@$F kUg ʍ)> >02 #7-A 7&C23`ZX?:v7~/ۯ\i CCB?6FNɫL.B$EiOG \FI]D/!\]DґPk?SQ'LbS M9? OdQX%[xC~ձEn8HPmp ~/3DbC7-rv://EyU+Ո,.Z'BSPF>.ҋ f`FdZb(%2ȃs^nQH?8@#7ՈRP"$F{WO jdV`RDDH/> AUnㅖd~jx@B(Kȣ뵇αj> {sAx_$Fl{Oi512f`#G=f WLi' 0jRڣ+4hBzU$Y-EQM`8~^tGzZfpW߮U$FyU祧* <@!F UI̗cs]%;'.U"c%CaV!HKcs O9Ո3pdLr75C_C$Dqa瘨+<,-a@QVw/ꌭoJgj(dF1f#Y ^ٸ1l+E䕚uD2B8&: P.0F$FqW礭 *LI98w~iE&.-3#9<]6?/&`8ɜEa0/;V4=]ކ.d ªeD#p$F4a]f`+ H <'GPIJaVV%4X(M9cGb/fASC0'gu9hʢ+WAP_DQ|i&_$E[I+|D\^U{,|U4M]!>{6g7]UApBewLe:>Y`LÆf}O!ofM ƿ=s1gPJEx_aG*pl(%=`w4"֣e~VܨaP%c>DPBG9U0mcI,֞i$Ff]Lj#@b!7uhr/^*r@&0x(vNB$E_W祣蕁Q8%͔2a@o-8[ʽvu5@!Uq% Y4Vjmz6Z߶&QjD$EoY礥觎*tmSifQCl,f.Cg ̼N@6RW}f>ҿGAl԰ZA;fGKC@2Som)씹R$E_W +|,S%iHD-"9/UڋYe+sRR@( rKM`L`s:$E`QO ಍WL@4R$빐-\05?R 6dUFRn35D/kDeɉiWak*'pmuCj p̜ 9E_WM +< ,9 I{X+4-{Y+ګ:Md{ ?w^P&y,GI1؀vl>C̐?j[Q$E0QW`w(AW_]*  8\9R 7[d&DWQ]]_D]LxYF5!2S@JkK5=G]qu0VUdF oU笧` sn"P(Y x[e2vd=onhXq<MSc8ltA&i ņ@$E_W籣ࠊ,M*j@Y "-4NE 0(͢rCX?&| ,S00T ";j׉%3tG)i;-F*\;:^Ⲁ@9&Efh@_6P.60b^m%SVr*1R@f|pۛ4HQv`jť?RW1qv@_=7bGt1]xqi cC9Vvtkp*eed@E#1O[E) آoml3Ws`4Fy[M ґlqQ旁; Ҙ$ˣ3 g#ĩ#^* F# }E<}F"uu}B ֓'|߲t J5C,`dY%&mIECYd6|#P"'`z>!*$G0Sǭ |ڿ9"`)x‚%'<<ˋqi{1[=67#'S%%"2,Bkǽ7E4V4G}[䑫tyEbMlV1y( oQYH}B{ x&5 a'@ܳV.Rdg|s <fSL ZIwXvwzOT"!$F}Ucב= ph9T^4wGԻJב1b̒Fda7Ig%~M aU(wlX˩ {(4GTSX 葫<4K2Ocdy[nXvB4JV j<0Lh 8Yu4A 3.X dgLp$EyS໏jtKa>"IUfPS6g I5.zEoq"oU:x ,ޚYbHu~ĽJ0)(^L4Qh<$E}W牬 i5Dq=vMf,Lbs. R&mbgCʨ$zӝ\S|&BMe9:V5:{ޫF {W笩ຍjQPMYSQB0҉MF!dQi1C;F_'WwW1dILD& W!&W4F}UV` ) )v2Qط%.,8EHmNFt V哤\ǐښAz[?<Ϻw,sU0f‚fhF Xc5HcոTzNYkEkU4eF(,Kks&WaނyܻtT'w-Sg3>!O@>=jTmZ2\F$cEώ+LrG&}`sePuJ9qK? ]Ujdi \ -Q)[ASjm&HvsC=2Qlԃ3C4o[ +tÚ(*y~Q}çuCca &TBq-bXlO>)DQ^V[cϐ~Ff9H%YGQQHx-Άd>65|$F`Wc%eԍ|CTP e42L^<'y. `a(3;?<(r򏸣)IPBjWzCd\ G9@/rǟFh$Fx[%E ,eCU 3 ! ?g$d.~M0:͊Gk/I PA8ʂ8 Y 2ж2-vK$F_gt3TP$ ʕj~U;ý"~ްy2gҘsp^jF(t$N>,f#xWCD*9CˏV;5$Fqag{Uaw 9S'P' `oT`v_ʼnO_;Gd% V;yNW44(G at'= | $FЁa<ఋyN Dݎ<*xby1)%@2In D>Y@,g]#BP&{6c %j#dB*YrgX(u0$E__UgjAAU[?`f*}1sӈ_TTFZʾ6+wD :w28x0E7qc^jwy\ſwi5خ$FQa`ȑ<<7繆1@M8- EҎs]8{`ö4؍B H0șHa 'M9hz> /B 'T*PSCE%4F]X kkc2`,G. b*~AZvEnՈSW )\ F'\*5VrNQ[B*/V'2rp)-,itk9UKzKքNw$Fa<SS+$(+hgh)X a [kxtRp`(ipDSb70zaLX^-71ͥ03:;E@o[ᠽ +<4H]m sa,er)77_Jع;!rrp.vtpB4 JM$F$o[|| M%Е=С@|-DV dt ؇zlRxSH}x P#d0C򃚃jގ(D9 '=gDo:$ES ٷ46n-B|3,ObMj;t =l'{Vr- TL8' N;325}(@ VR$FoY籣赌*,A+~!E:GP{P<c3OXy=y^pdS#hme*>IXɥLnBe}0]EoWO * m:mqؠyRS'g'1s0&\= Q^rpeQ6zZ!?J8$FY0ඏ4w@Ņ{")ip~"ۚHN|:LR#T(h܍j7e)bUe,+Vp@,SuxGrw$FHqU砨*,]DIݕy074@CRR I *̩:TVN-աCl.2LxuT~:6!bd5T ė$EsSM M~}(;Ad@k"aT$EDH N6wv B-adS$F%i[ P观2$EaQa` 0(>Su\&  ?]\\T8>& kKu„'jrySI3P bHMxEk |Zu-zÒ&ExaUM *4\z\KoeɺRz9d/zT֮KUҽTwIB.6+6]RfMclȔ?*bw2(odQb~V%K@Z4m_- zICs$ 4G$_M+| ElHP< kLlSp#cyLI03B|obʆېc\(WNveYрg'Y/y Py P"'/ 4=!$,h44HY`쑫<|EF%eh<6WEcX4~nfPaLIGl*OBAOBBCn`>V G7lAq@"OO [WwPgfN]+>4HTYi`ґk$:a/8%FT7Ho ?- 4r,䖥~ӊAPh։"V$[/:&L.-ZV&=69Bi"/3UMo&j#f@x^4G\[ *g]r)h@`cpN"0Y^]5Y eKj[R;djhSW ]`lpF{0Lanlm -ҟzp ʷ Lڊݤ{Q.`|q^$F[n+|(;tQP7lQeU$GlW筩,<$:핑2v*wp0 ,,J+wi&_ v@h$xl:h}(.;$ "&-2G NJ¹ W6&1 7T$EiW!L`ʏ*5-y)b0ACS@ ?!8š_$U{9~U@"5E9ψ !#E[S䆁Hdk(CEy[ hXDF$GkS`*ƭxEanjdssm,uACss'fSbTbD dQ[^B5:if ˤ$EX{_眩` *,:P~jv?rrOY0qο<@y_Q:y@?d6P<wPA19T|UX9͔:YF m`]EiS=G jtơDMѿʣ<$E[` j}5eSāO=g;8bYf8‡ص?0ҦaH6 ӞJ+-#Cȗ%?ƒr>z_i.` j?Ѥ$F@aY癬઎+|4 t yzfj/ V<\׎4)ǖkSKNa\&CF7R:@/xzG_ـ*Y^b]B&$FqWPԐ+<),v,v/EPH`)@dI0jگ v.Pl41vS:uCH) )YZsC$F(U`,<\$K{2V@dS_">^[B :pmKKՇ. V9`8r8r.pT3Z><.J.G03|=ʇpu2-΍ $EaQ筬)"6ASqYNuLȸ C͸}Nz 'nT)C)Vب]Av"zŻK&!4#MFcQV )LXjܶhXL9ͻMg~9*` g/&~hFT:e  JSӨzc$EYO )-q$'F 5V*/m"r _A>rOC^qr, @djWEOۭ|jU>Vc嘉`}mOD2@U3+S{P)is Z$G}S1j4S/оroЪur1 $Cpc!A首^WY^9Iu žH 1oV6t>M',s( //]3Q4FqW` +iss~Fs gQūOQ&Ttu|@ꪑէ`~QD " qlB$Zgu_r΃gM}r~RApAYɺbҊF(y]砯 k\ zQWE+51/'(KK_b Q-(ai 89ƄMgd$FkY%G j<%SmQ0s `T$P~{Te ZrM"a޾5,6 uN (xf>OPmAE}W *8S `Udb lsb@(뫢?ՠڋRC&DXW"W)g* C$FiS%` jܼ"Doks{/ô9{tm71+8A$q1O7GR)ڢj W2~z}P.-! u+8$Fx{Uc` k<<0S6wT詙HE0umiFʼn i*|2+ ] afojEU{.Q$EhkW`kOg8TǁTk锃y* ]&@@F"F {SI൏+<s !}Jjy{H_<2[)KU^/𦽈 ɡܤ eP-Lme= $E`kQI@j4TRQt &m}=Kا[^>h|MF*!:"5:G6XZQY!e0ϻ~)lp5+$FXiS` *ĝQacٜǭڋ  .xǓn iy/BS•to?A$Wa!M isǠ|9ZP =G}qKP։^U3Dk5 G45Cυ96OsԉbF׆ġxOYa}uᷝ/{$ag=`<Y g(Mz/?UژB N4(4]ǰh,!' ŧsrU#uP2t?^dFGMً#RBY1;qG]YJ/U$}c)hSI?`U?9rfƼv,<Ȯp}ߋm2ΦYVp"#` !G׸aVqWQ b܇W??i4GP[V(܏}(NF=l+6Pbs"HavӖP2)ߏ$:1UpS=|!e)?5S[HUv~=cspy}T^GuȘ_L)oF(aUǰ`+f Z#7z!߀zܨp8z0 |IO \מ,yf@q2"> ׼#D$FTW%Gk|rA0)px0s $7)\/!/W.%1rO7ا;R:&lfxr22tE4T&E$FYM+|w?KR.C E XL߁Y I( v5>>T*  hV6P܍*$Eā[,44Y=?=f|}~?^ S bs30#/ _k_ o?t*qQV RTw6*`4FoU祲 j܌Oh/ ~Y?1$&846RzUCN0b(T3.*!'$ ےIb O nށHi='|Ҥ KII $EqSR N+H*G.$'Z0uP g՘!97GR, ^}2_7ʄEf t.-GD3sDF T4Gh[(Ώk :)@S Q5*79uP>7X]4Ϡh{ئCIB<5sRi]S0mrS*"<Wl ;o+8y TX)B3J3r3$A3$G0_  mxiot _"ܟ$@qF$[#}bq@'`dwPN}1.N*-[5lʹ&<ڥ`"B$Fha SV;^w99o|ʻ@ʒ بK@DgB󠯝ɡLkw @N! {S_Ko$0~yjM4Fak|l/JD|,aHE9\o1ͯ·YTeA;ѻW&_(S#1&ccBdlt$1(F)nK :*] QV{.٩ ddGt$Gĕ[Gh?Tydm R6GWXó4d$ { qxzm"TdBHT9B*0-#,4FЍYr؍<G~*ؼ%'" oan%Z[F#ȼt9eO& kcREz$Fj-[⚯ ^w$G$Yi ֐+<$AP1< Yg KpM7QXY|3+C+ FHPP{R }pxee Dy$3{v4F_d`|䃠38OK&#N؉F֩NؔѲ.ܼ/1 |~~#oCQr?a 9[%i͓c@QPw%5*@Jkn $F(y_ ,|t]NV6 "}A% D$]1LY_ \\qhB^\lAW=%gOZmWmTI\j"m$0{~9[Uo-\@Fxy[C్*"_C#qK I ?8 EnF6Zܘv@ Ơ;*Y|$ELkWཏŕß)4БTv(IdJ#>vZ>`ʌcd.HV媙VN9 6b`v4$VzhP'47 ^dIQtZ|Im$EiWejڋwbOBW %c@0tNʯJZPS\9^l}"U: ?m*!eDm3t8 b:RFe5~C/`YF,kS,R *tЀևFv˴wث?&Z.KP2u]P6C *+ bh ^k|~IJnk$EiO<`4 z>]h0D\KPl(%T`[a3D%M@jeL&LF֐{A&X&?!K[$F(kKT`j44,AjK ,9.OiUV}VQNޤi88&++8%ATLbL~,&v,2JC' l"WRG`Hv$EySM`jS[uIX-_c =1B b# },JdM;z1c@"L` K[J- /BΟfq5 !TaEYS`)<>M1iΦ,QSHd+!yPݛ>U0q٨t.-.Eܐ׉XA3&kASVW44{r!{d^sInex0%0Y$[`+xk [s9'bǓWiA9^lcjn$AՍJ:TĤGxձz}k..@g$a砯 +ʼn= Cq L;[‘5 zup|Y‚(u'jq/ЛugEm*XUK*5'*#1Y'$F,],oA ia^c}&؝^&g]!_.>$Fhq_a+\tw bfi6 ME*Xg|8$FPa]໌+t$W3Lje͏?ֈNU.C,K_ܶX9h [3Dfki*(ˮL3`m)]hp2Y} {1$FoYM +|=,0 ŵ)R~+h[1W,yDHGۂV`|g* G&\V$Y8I7.8-xBcP6xڞH-$FdYG *[ȿ=\Bu+AΏDv1`!,d]%'ubLË4Pw#PT(v=)39κTWw$Ec_ GkWS\a44FVVnW}NOj+#l( #5}W婏Eguaꛟ/ۅO6|(3{M$EsUhԜ4>I!DsJ3p}n(C:)՝A_(,sxQՉI[#4G[ o`ӏ+t| 5`Z#E+M;* gjTڪaq2QFťr"Wۚs0=e[dHfBAnШT&II*H(S,5mmJ^~HltC .$F{UˠL&W󈌛| ɉZYa%'(V;]ݚ jBԝ ɔ30q'OBGHmmuI @N E{U੏+< rA$ 3@m0?ErwtD#dT Zep)"}$FL{Uv jCT>װ\@$oO@/._CL5)Y W,> &V5EZqkQi!8T%| Mrjyh1LLsTԓEkU礧jdyvRK=PRiӞOr_@tz4<4Ď#nۯKK.cC=U@2Rt>?$Fl{U眰 *H\XV*5L~ؑ ,.)P zO@M [Y=R,B]pJI`V"qθo0>RKXG]IL]$E{Wํ<|GL~ ]R~uo[pF`@ b.c>S[:*E='J:ΑW㏙ -P*he$EiW *Ԭ@zK-Ņ)wQ9KnR Ѵ!.r]ofYA0grE{QA *UPAߞ?+ק<$EiWG்*t-gT03 `p5#eli]e?C/ KM>{a[ 2b*3rDvcp p]uCAC^Fk)jRD{Q|00?QkRRw^F-Uf_OA bi>«{L bj& u BN֞rygKc*3`DE7θ)X̍VgF֦&n8ﶙv #knuOFKԨ).{ _&+$Fc砭(Β,<љ^NOe&jbJu}OHmtc@5qV9DnI$)y$ @)J(?O/,~q3)0dD:$Fԏe瘬‘|k"w$(?9"?4 4}Hڟ-7xBtEzb]HLH>uR"GXlT(''IVC 4_E8K-|muM6;S0A0jrҧ:S z\>l꺀}c"_D5D/R4W?]+-5P`׽w4a!$G]L *UW ) y0u0!\N خe4!\CG@ZHh 6a؎[4/FO.nZP)cs,*9%izfI[8Q4GcV ̏4e6faQfp3}.*G1Lmɝ: F$M^. 4y]IhHq!Hdޤ[oYI]Qv1A,R$~NB$F|}a෎,|5,KQtct͖stՓFo% Ԑ5QQz8v"XQztIړw BDy;0bv2ҘBAF4aaE<,84h=6Lb4 Qlӓn%t PbH\DU44sH$F4cW籥+43sn"zQ@1$s @{ oM*PmGCIA_-[Pv|SK@0_t8ء,: :4KBsYƐzA4FYEА+(d츄Yng|Jcs#BZk [o NJgU6;L*ҙک?=-eےEaO11"G=]'U3J U6YSQI-e$F]祥 +< BLeMN= 9!r?A=t0U k?xH@yU튁󄑭hM{GF{3Oŝ^ʯ05mNsEuL$FcW豍-Q[.$=ˎКs d+E΁AhUBq6{}:#S% p 3A,y* O6w$E܁YCঐ+||8+,?,2 oS[c&%Bp_ : ȧ0RlsqkTAHTLJ@E CED_YE౐+<4@+{`ȄJF5`Aas8Y³vn4fJd>v3B`$EsY砬轐+|ŕf$P+X*]6R[ӓac6ó<+R*3[6mToPtg>zT#eKvӝ '(jL5o; wNo$FHia礡ಌ,<岉.z@&"q#4tUr!6{@q`?  ijdh",5}t WqOjQܺ9҄RD;%o$Gl[簯(,'LU$b?@Mc 0t$cge%k?]jr$4`v,,VͪGJϯ t|/>JE74G ]簧kW%\m4_09'Bv8!Ty@Df˯#$Gt{UX *,$ҞW5`xӁ4Zhe9H'0ePHu0XLZR3zo >;c[H!íkKU3͘38/"JЮ x:$Ei]`Џ| :'r#AHZdj'=\lXKߊt\y:X73sڂhqyR7tQb;c>ctbvg$Ey]৏uy/d,+Gmߠ"Jd)R[9Wgc5@s`-B sTe׌k*6ADZVn#`\HI4kf7@S/F}UMh FZ:-!S`<"XD=PwUsʀt#Km=hA%#3$F聇 , q)"}^D~%fATZ|2R*TP 8tN`,Q'}I$^$EkU *$ Q 49g/f&&!?ѧ򤻿/wBX KapJ Pz݈j]X#T)%^WoC񸛨:$EkS j2=z})hi[D@NvwK%S"Kbԣ>y05CB)3Ӽ@/0b>29j##LNڅaGy$Fh}SI໏4xr +XCcJ=!+%B]΁R&{ "u37m@`3Q!_^Wjւ_"l8!@E?n`N 0+`F}QjtĻ 0 $6<3_P+-FST*7B{8i}: Bޞ[i!P$EYS㠫 j$ OpnLZܰ_>kJ u*U) ׫ɗ#!#d0G/^loj |rp_,gB| [M($E{S%A๏}D;m{H^{ _/U% ”>SAr204a &R=LBeNиэ{Qf<頦)Ơ.EkQIऌ)e6/m57 ;vc@JE+N(] ; N$ B:c`odͭ.GZf$E4YS izmP]ghbtQED$G ai`+|e!plRr2oJ2lRX.[b^. ?NV!bQp#3ki}D5\00O^tN$FY癬+| /:d2 Lbm<]\HUqP26APFbh|x%vF: ó lf)GD'0MBi0$-jQ&$EQ_ː+|491 3t*9W#QA7BfvΗꅫ&9Lҟ,\1$w22y=%FKzlDސvVSdoh}Q8M4G ]`+<*$G9Ts͑Qp"u8dTA;d>OX}>3U5A2ͦj7W*OKLl]"ݹ mko܊f1'{ͬ$FY ό+<5^;zZy!Y;"܋DS+ނ >./ Y)@C#x~ټ\޶;^Mw$F8UV *L'%C}\1{[઻bq)Zf2!E9$@`:ElaW@͐)t5B+r~0|Wlg 54&Lbu5=C/:0jT%Y)*IȚϳ/y.r,2I,D rLW3 16)(l8ޮE$`oU @̢ʪ3>^$he;JbQ`): wz̹~N -M)jgt:J/"M7]%P?+ecNNaՆ Q$bS/j$F<}WKk|}c^d_*Ж?;Jw~Qێ^LIXEM@T%7%@\Q݅xBž&WU\+a`QԨcsSc$W1^uIO$FhWa +|mJdʹsn4mCi{;qXf]͈PAaN\^ܴTδf+u,Ґ$jT42"W6&1<8(^rI9;%y$EXiYE`+|uxi95<NTơ΃]79hܿpΑEcĪ: @d2G^pB`T9rsU@#d$E{[N |/"Pt#u `x;t2m b3Kxa鄂yN/Wh'T #BA؄)cR$F@iU `jtm9!x-~AE3`ϯ Bq4Eэby&m| L EM:CO)MI ˜ m (I,jIEiW簫 *4WxN.g4A@\,D 0]Dؙ2-V:r| ,aUVqP4_ CZrU]~z ÙMmb]C&`rd̞R A H t T"5]%Hc &}+a=) $EhiUm j-iZN-]e1Ck UR#p,0=&GځF-[RI UR;'f\dQ^dz> gt?6[h)@fEYW0h *-D ifhc2I/? ,yB!3TVb hp58ҢFX8#\SZcr$EYU ( *dNF2:e H;UJA1s&873𶛕#"!thMucrNQuL ϶LbfzE4iW(P` *Gאcʡ6F"&(2p@"0iw+Q}+ L@`͊'ŕRS` F+ZD[Q * ,ɌDƉumz.}*Y!D%ࡥ}A0w 6BȨTi@DYU+Ktؔ"-S.Y$FYGҐ+<,&(60S2"04m~BuBW6,RN".y&J|<Q2B 2bEI"Z6{j?U4GWÏ|'K>>j3A3w-GGsQs0iiXs8jNVJI5JsT  ҡL&E { eUHU# "_.B$FWI`<:OrBU_el z5\ fJf ]8sA F(&D&O"CM/?yo!w?/wc$Eq[>"ozohzDr5($XJlLC2"$OhK+:,V s/rDh-83FhM4ƙ$FqY祧|/ֲ(D6eTF4B?1"?kf,a3 NM0م7ְgͣi&P~48RNP3P$F@q[Cോ<#e˸L25~fhCQD$(4mR#}c *?Ds&PR&lmOS3#2a:z!0F$ESWɎ*C"HLSmExSD|!bCt[ɪku.k/O MلP#+Gr 4HW`+<<a0|by$7-# l~<?:n|jdTCY}fG{d.UBGV+W"-4HlO=`֎*K}(b7ASE1A'`q:K@`S`,g?|W4kovw|.O5*۪Lk\Vr?GK4 Ϥ^$S DBQ0<$Fi] `ȍ+|-9Pļ1)QZ""(# 4Q;B*loL'"4.B=!+H6V%ܢQp#<@zb& TL* 04Wi?pi4G{WX +}7$9/}"  Tl:Xʆ7}&QGeevӐLaCvޥxC>jtu"Q? %ܩxav`k(}^,3,<bBX%$GY簸 ɐ+4Դ<;Єv-pzJ~vR&AF2um\enq`ycT6/,`);/p 4GQVݐ+<<$ii'Q 3Y|#0^8Dq'841oqo6$z1TE!1&"3,2##i*E¢Knq jzկgj؄&bc>4GyW5rӏ+<Ԭ$`u&N7?I$FaIhǍ+|Ċ 2dky#52o|mXKYmg~TMdSU/j)*EHHY`OR/X0x9A]jl,ʍ 5}!1dDM"x$Fy]i +=D0/ʫSDc YD@ rC0%o~_s)Y*ɉtMDAw:@c%GWvDx4Gy[`<ZJڕ33m$L#~Uwm΀~'N`75^HH!D|Qbhl#(Ґm]Hb v0f#!/d@r#N~o~ jnQ$FdsYШŋ+Öw00CRG3P^#G ɔ±0!OM996EEFR둸fHԏ!:ݜY dS"C?$Ey[R( l|ĘQ@T31QB~R]87yLX]шMu,b֐wLcCV*x28%Ea}He?2 Űe5MnE]] 0`YO` W7XU Ԩkѣ:*D&(gxn2,!.D -I"$Ek[$k|}d!B #BR1f IM>jb*DѤѴa@ج54 %W*e>b:%&p`;y$F{YҠ+|uWVUݔ_ H V\T'Cu>`?+JHC7gtcP%W?>4)+Dcm2vs=G[8hQ΍&hϻaD_]Ak< <38V(/"aͮZ̒%B(B:gkJvJHj Q2~04f1?$F{]Nۏj44C1:ff OɈ$68R2b*3vpw+CV.6pb•|}e5%FqEɮd,f9 *$F{[$K x (A%/sxê9 \c^'@ѐV`G02U>"}N)2<rNoe$EQ_T <<ʏW &p(CUF戛HkHb)EXs_ ^Z vhd *HG>jk ދ0H˭ɖDEk[P j Ke thSGaM#im톊[$ XY5a}Xs:&b.\ēlC$F ][I*Cu"PdZ7K'3,մ7 !UZ9@+)v *q Lw5I]b0 aP%PH`$F@iS` PiE"4nTW E]U( *'(>߹2*B@KtjU!@OY[>5+Y! >TDzҮ5rL@?naJ= 0eu5s$Ԡ$żiW, 8%AEap< Oh8Is%D %G sp7S5%g'BZUR{syfzj9lc)=z=r c$Ed]S <Ē4mS< h?UWW(t&]9J jT7n@R xp=m˷rKjgic..FQWDDQQN4 *ή9[J u"U!)<@CըPdQ[>CAwS@ᐍyYoY&emVX4}} ʗ$E]St(j$ɣa`e7ieXH˧6Z#H܃[:t1ը3Iu M b p̢6` C Q0wGʿ|>G` H 0 M4H Wc+|1A"%OwCc,-wXb\ D P2x QhEl1$G<] +ԉ,a⭈B"4Oi< QЬsys?yy`SϊޗvZiC'\Y$44GHc,֨ɏ<1;73zm us:u0X`z8$8څg|d*.xmQ4ݖV`v qP ߉.V]}qp)h}9G_$Ft_lΎ,|5,nWȉRTv &T!jX'qw@ T2I뜐W"@F *żD&AgU$EocLʑ+ԴTh*@Qd8LM1(l_=u FDDhtJt[rXZB6uח"֫$F]=`ߎ|U$($ XڟF09) |͈nOPms B4YՕJ0b\2& Zw@!G=^@W@$FeW祥<= 8T8ښddCL@BZbW8\TT 3̇Ho@=ʘҺ[\9 "_DmH ݱ3|j`$F4Whஎ+4'g'+TGRpnqKՉ`ۃA$EXa_a+=`]ᅨ7:I53%#JӀ޺Xs2M" >ڭm#KYkyEJ.#P%F<-hO$Fo[Ũʎ+ hr QpRY=Wʉ LzFq﹋™'W[ رHs"/&iRhҲ>l5?<٧ITɃ224G]['(+$F8q_C` <VQn@vD0eS*AѡPpq{- j*J&թECeRk~zHE22NR~0nf$FLq] ( B >OF=,5NRnkH'fsJ\@w2) X.M6 z&P6ZU _QJap淈RFH aFL]_P+|awRq:$hGg{±ԆdϮպe5B*uVV ȹE,W+7ƨP$Eti_Ckánihewь(ms[]G5ÓQ  epIčWHo*e$d [1 63 $}a>_A֭-2F$Eq]礧 |5LX̄ $6ramdk"1Nܙ8 /u6%C?@E\ , H |Z1|t ^G |>ITSyZT5#Elo[J | {* lc=V;C٪8=4jֆMhw ]'^ C6 AfBaQfOh 㐣8[3 h); &AI;$]py0P9)SE]]簡 || 5J&z`pP"2lH:Pb<* !%˽CFp兔 ȹ #($E_Y 5nG ۲P!dcޕ.Zd7}(")!db1hjaQr@caœ $ Ԅ)(h^ڢ z',ۗ7nՅED]]K` |X64C;EbY"T6¬GUhYehd6\W*K'Jkd$x"gf$EQ_E *4#;:s7%Gp Ki,xF *YkFe79VʈW>ھ`P9 Eh5'z#IǙ.gu#S?@RSEpiU <$ T9L#lA+X|U'g[c$Kp*N)fAdmx:X̊QMrIj, R%MZZ~eC3@+ڿMb<+.)D1! kETAE8Q[* U7,[ ^O=ͤ #ҙ^!@ihE܏,AW4SR9L޴'>w332=&D .-FlxZs# !h$G@[癩 k<Yl^F A`eƑ2#}ŧ#D&{$EQa <d:$$Vu!,!Al6OzwP#+qjkmLl fo`C"aUY'ązvW+ŧc_22$FqU祥ЏlI*Iuiut^lc 'z XD_4O1`B6nL7jIB匬H5Ԙ c6.1$F\oY祫 ԏ<4#++0d}6ƽ5~M5 7vk wm{'Kk|i:V"GaI!+v@ە5:-BRƈϴZ-$FW獬ා(<588[/A"9#S,4,l/sUAS$̀qBH8^e¢dMD (arK0=\ HP3h@k$E]Aଌ*5866$CRIU!2xq1Bl&m%KupcuTՌz Dc $F[祥 k-V3KݣwW[ ak2@i@ F1zTؗp2)0Wqlw(2wձNdIlOi<ɷC$EaSA*4߇ /"a&$0\۶^$S#}4ĚON-VFhI=ZwGaLB>>.蜒L( t .sO$FpWǠO Ϗ<%]Haz|f$v7.ɍJ&9EHc!膼3۳~;T0~eRDGAmΎ]c2*$kl`4GHq]Ƒl|&&Vj 0-OAy~:BBň {G:TʜFUWX"w JO=MS"S!mp(Q> LM5E&ow*@`B&sVcW]y]L$@_ (<Ĕ<>rP Ȅ$FYKTFKۣQ A2"242-& K4"ӊ'iDl~IB5E JD:'ELAw=4G}S(jCP/i/\xV/*S7I8V2*q+T3pS0s:Um2Fj@ P,_g6m9(S[[F *4Ug$GL{We܏jò \Uaء\3ìU̬CZ2" E\iSA +<ĈJBx6~|5DM'@(  Pܱ,y#10K3V)'>ƆCƚ$ETgUjĊcV٘EvX1ShG+ƒȞ p磢cFd[jKhՀB6p` 190y_XޛQaKإC$Fx{QQ j|wD ,Ey 6u*D:9Б u  ~X̂ClKcCFr+ۘ-g!a]: *{O@D4X&EkYC j&AeX naEpALpvX <@8"(X掗+XWR{WOrM~ Cs$EiS$ *lF ˬAѦP4h4"Uރ =ˋ!f0M} JR#+ o4VUKp0e0@ñڡ_+fDiS$E )ĈtK3N:!k%Ӡx4$şB}c|LAM+^t-xED"Qɘht`z+eDDIQA *n ^dK""$EtYS *æ ]CUl 4L#a O …nU 6zLAMEoF6úL"Y!ط . h <#Ơ.N,lE [U簡}*t,SMrLAME3.100vX1Br~b25&X4?>%3/\roR*R<\DYQ`~*4PvRZ-! cH{3Բ)qxr\ ҥ$f}KD$GM `*|h1t4Hzudt yA n"n HP< r(ĮXCC ā{A9NUO0vq}qX96s"3 EEI=j`)TP$^$  TTV'lXLN " y" S'{U݉'$F@U,Q *tǖЃKI:0 $K'+<*1[Go/jA1R|AA(Y HLqfQNedH1M@,Ph@$F$MR)72.<$іG2[tTLh8ڡP.,ږ>%S5Ȟܘq,8D'!1 Ht6EOtn:I. b#Y$FO%i`*4.Kk%G`buQ0Θ/rqv2p8 Yw^kW@҇52D4K}!@OB!\@>,w7=7>$EoS$್t4RYeCRSa1J+,hXAB|{V͑k&l֌DQFQDAwqༀOGbj>f %5T;( % "+YgEaS .βAQC1$EwQ*tĊ $I'H\8”"7lXW~5wC2E=-:Fc&sJbNYY(0KI8T 494V!N$EoYP@jDM̔2w) Ml E{ Z`ANF,=gbI83B-ȕoi!֢*Ѕ}e)iZFEqWp @ RlK]Aa82$6'> $ EqN\8xlqɜ)a>&/6|H!}E-Euaz $FQW k|Ĕ Ii[oJzpFSAMWK A@>1`8'y qVtBa! -<| C)SDaUR ČP %g/迯Њ0d39x1$to |O65nXg$Xkv$EyYJ +<!"3d}ŧ4 .EB0u U3RL4PirX8TQ^Ah]CkPzLs"EXiWҠ *tšTDtdPGHIUGΈK9xRyhyrJvm)$S91)7F`$EkS0 jt¦S[7|łIHe FK9 xRCLH$5CX!cSp6H48N8 p8F_nmlA$/SwFiU0認*t?+uR&/t,#tK4?Y@DXE(¡2JPIJKљ$EiQp*ɢ|u=d _@-nhG( Akb 6ჵϋ]&hFOP< TT[zJ-r)K_$Չ.@$PNJ A$EaK *4L(Ե*[sS F34PMVΑN*M% C7դp˲ ܠX[(+K 9%ȹp _Mɟ&wf=E(aOC*P]WN⯘4Ѫ  EM6_bK$3=$UTK$֣Фd$۬Ge~VAD7M()\qW$_O Z-(.xqVS߄$LW;]59fK@2i#&(1 $vag 0D]M젍6YR25-% fAq%5iG暴Y ̇p-8gKٔ,V1b#:)?E 0EaQ𠜋4d1k[EdRB(R U Xn_G LAME3.100UU$Mbiq$lG"'=DYS0` *:d BN |,9>Ĩg,(8wLAMƃaja\riqĢHw`WooPDYQ0t,Ue\.a] 2>s{ *~iWЄ*?LAME3.10-;Cr숊<̏& A$D]Mv( *\3BbyW [QfGL~*? /]LAMEUUUmB`. *&2f.3M.Kmfޒ0X8p@; pRR;E\YM *4oT~9#`*LAME3.100> DL$ӒFR(kC|pZhEK4%%!&D\ISG 06$CKWNULAME3.100UUUUUhl2ŧr$nS6IXk4G[,hDYI )Tx&&G@LAME3.100UUUX74q?ˣr8؆ Ca l!I⨉ґC9J0 )tĈt,EKlPCQ;pLA*xD.$OԤjT%V='o1|$$AfĢ2\ M9H 4DIK蠜 )t tNfs{Up |kZ_rORWX^9LVRD,@r&ZeN-Љu_ !7DYMP`y鴓ahoеXǿ.1)z`^F(,ҍZ"A֣N][=E䈽<'(uKk`q(DGG%' )Ĉ|I(r c`m8G$Ƅ'HH. psVZL9D$YI$P| ( Q\z#ſ.;ܨ c?L9ﱫJZCSZwqQG5 6+;) ،D qmf<(k`Hel 8D\P8k숌0Xm$ElqW$ ΍pÖz(67e?nEcIɱ8VG dVDGTZcP]c$H%ꅼJF- Lq![ukh5EoS ో42&,Zv^CUl|8$P't3M L F "@qEnYTdׂfȨ!b-~$EaO!LjtʪC;I HXmC Z#MhM!kj\Ĺ(+_U(Cy10 $tC ުԦG CݩmE(_M )p-C(ub{?*Ox#hi-:oi!pwD$"jtxaq'߾3r8:EaS頟 i5ieNwT H8&"vr#VejF?ё#<2ʓ=2^8;4$Eh_S` i!'fр'հ$GC?M:v}s'jA(.M$"' 7.M*JH"^K#OC 6*OHKB4DOM i-ThaBJ" Z;fR ~kVA5"vDPЃQ Bf G{/)mkHEQM0 i49&2؈DĴO `i4a~0izGv /0YR㬣$#%zlAnNVx]$F4Kv`iUy#yGd돡IBM(j3ʵ9Sw_TpAOR!HWDQoQߙ@1֠Uhp5ŪD_WG 4[9cR^p GEh,IXРvUOLAME3.100PW`ge]3ނBRqC7CkeP-{P+l]LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUJDSp$SjHxQC$L`Eh`e4p մ磊9uLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU\?X6B+B ahpt(Gf 3xLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU#B4E`Th\.0m"C7ɪLAME3.100L+C4hLHBmPJITnLAME3.100-CB@ # jsp0ᬽLAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU(7CJAh (@"Y%LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU!A* 7 LUX)ULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUhC` ' UUUUUUUU!jLAME3.100LE B`'`LAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU4C@ hTUUUUUUUUUUUUUULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU>@ hTUUUUUUUUUUUUUULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUE B` LUUUUUUUUUUUUUULAME3.100UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@ hLUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUd> (TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU܃B ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 4UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgambas-3.16.3/app/src/gambas3/welcome/border.png000066400000000000000000000006651411575327000213540ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTE000000111000000000000UUU000...000000///333000///000000000000***000000000000000000000000//////...000111///111111111000000000///333333@@@******000$_1tRNSzͣp+J%Ե\2Sf9A  'HIDATẊ bXbo9ěn#}K$% C%їHt$'Pb+qI%D&QH\%MDOb%q%KD$1K$D(J $gxKeP_ >ɦIIENDB`gambas-3.16.3/app/src/gambas3/welcome/corner.png000066400000000000000000000054241411575327000213650ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTE@@@000***333***@@@GpLUUU333333$$$***111...999111111......///000//////000000000000///000000000111000777000000111000000000///000000000000000000///000000111000000---222000333000'''///333666333111111555000222222///000///000000000,,,///,,,...000000000...000333111000000000111---000000222000111000000///333000111000...000222///000000000111000//////000///000111...111///111000///000///000000000111//////000...000000///111///000000000000111///000000000000000000111000000000000111000111000000111...000000000000000000000000000000///000///000000111000111000///111000///...000000111---111///111111111000000111000111//////000000///000000000111///111111000000111...111000000///000000000000//////000///222000000000111111///000111000//////111000000000000///000///111000000,DtRNS   9 2A%+fz\pSJ噬Ծ$ 1I*)8[@R,!E( ?"HeyZ#0n.6o;wbW/7>QP&O54G'k̸ջmL`_dˍY=ɪ؟uѧtU~:rMs-xgchN]CVȩǔ֨TBDav{`>AgHS E?jAcZZZp=?eˁ ʕK2%3ɺ`YY 'u$[h"x~-Kfo)hMFs @`ztAc !G[ol{CCC}@XO_щ,m/a?00G!)CKtmo-0=%((6b2 ?o%h!t@ #ၐ 9 F.O|cM[u1)wbWtudX X>^t8qLeCcI񖖖2DP}cC2ee.ziH 3.o+n_;Ex^Y(O#uU7"F6lp$ ` % ֱp$`%Dyp}788x0 HۭtԳnvf$lr@>PeGf4.F%=o).q!?@5)`p[%;+v.y'-J#[#pB\wv@:}SV~qۮ;ԓ;64)`3 c6 8"^ٯ?[ߛwyaoMRb#3)RC'6N6(,-:3!^"9σ|pgqޢHԫ32phh )w̫D_~ 8g03)=e~ૃj|CD@w/ ᅂOIi{ TSԣAu5kf?+,L8dltnr{Uqx02GJo8uۦ'/LMVmlE%B|̚d}#ksGy(V~>իř/9 =p.eɉ-;; G;7JJ0s2@`F;{{'Wɻvг4q K=i 5]7_h1}(@,ԔՓz-i=4ng-YJKΓB IT?0hgꟋopIH\~5C"e IV(,UUQWC3Tb5kg Yo~IENDB`gambas-3.16.3/app/src/gambas3/welcome/fir.png000066400000000000000000000154531411575327000206600ustar00rootroot00000000000000PNG  IHDR2^ c pHYs+PLTEGpLU'&f()rgs'jrmmo#z+($zu$}m p'"v`jlnp!u p#zr#yl tqpr%} r!v'~o"sr!t&~$x r rs!ts rp["uS no"xpprqfop!sjn'"w"w!shm"w tf<!vY$|o&!um en%|#yq qnc$|`q${ rchfdfLBgkj${%}krkoeplmmrllhig#xlH kA ulnH CC E C nj#vg@h_I BC AdcgCfbp"w${E E A r\,^z N]y++ M*+x*s_w(`fN Q+) OS *uj)&}(!pzo$wji' Wvda mvQ 'p%z"rgmfq#udZ_ UQ #t\ ?b]&|b B!q$yCT lX G[$m J Z ^!_ &x!e W&r StRNS  1*7? ;%"GMBwnUЉR`.Jg]Y{jU囨ElܻQqK5c$}afy؞[rЋԂţqwetǝEoIDATx̚kPSgC@5\_E^G]YqYVY-]qcuwgiv/{Nrr$9 䢘( Fmj+ taڙ=D!!'w}<ޒGWs` $KHo&uM$Ku$K8jVngI<[s8I)7U$+kAI$!Y۸_#\$$EFr* H>U"?1.ɶ" /.%(ɦt !.+`qxkCҎXn徟ѝ-i sY] .@CQb'w@g qV>=ߞ^͘sKv?Ix9eu\h5ˡ ';8fO+W"Gzpqkd|&Ȋ|DRޑ oH7?b5<t SV;D"a(#Q6R}lc &0E@l $N7.cvJX- p9Z>-n.-SUv)=`&BH27Y0TƒyG=C fްzvdm 0]d6 K^{Kbd y L1A˒y!Iau6ť PCf'z@vɈY%lq+EaJFx1[$IJU,^.pӐCta,(>,W/e Y%%ru cp'^UaoC,OX嚬ᦖ 70u0n'\e( iLiA1g،1˔R*sk-eqBA= ZհcJMJA,OR?a?lNW,aU-i@O0`;_ls!ISP 8oݱCظ~`(lf&A>icT\*jL&/(/BdN#L~ţhAU/ $-m %|8>pڑPnɫqĿ(6vf''Cj58,jpB_If1oM̞5kQIB &9MDVvXaj4U^<_UPa8=h{ ᴽQ]jϢC) lNO_zww(j˳i\Z .V&HrPNt+৖\սM`I2~ a{16? NoH~glU-RGYs]alKᕤDF5i+~z6_bslT`oMYtBqTY`g 渰23Mk jE281[ 5lz?K {]OJ# m9P(8[T!x~Ӑ{G‡]h߹7.݅dVk𩛷/B2ŏ#!- SSv6%IC;g|n ? vxN#B  t7'[5-hTiJV!SDn:(|F'.zfbK"DEq]H)I淊cRjg1 e-?]dVqYwO-lkjg[s͙UՐbeyIPm~{* o_U*_l # NRmkaqk%o^`W{=zf}'">&8sf1YPtBYL{+Uuޞ;jݚ?&w(1L嬝AiU"ʲ}iz : ၅M7hbOg6J;XqI?_P+zo jQut.,h5JVvb}ʡ&8n )2zT5wΞ93:zȒllck7' F$icOH4GW7k_<轮y"HN{z9&ɮ"ĄzZv7Ni-=׾?AdĽre鳌HILڽ$'H\k/_>?]2fO>i=Dp H}ʹjW5OZhߪ!%XF8;d\}ӣ M 7ANc Qq4W'iRd;s8RjZTqHk;c\,{IXXq6ocιa"R^t =I8*˭(KWkg%%η3.єiuj43r9i'fV 1!%\G7C@Ȕ(A1`) ۴|fpM4cB#YuԚ)$8HfctQP7eصsˎRB?u@p DHîqrn>k(t2% ?f~vzN =oi'L,x_0!`O.E|kFY5h7t>/ B!tTCSTeU4{ Qh2ȵ =N):v^Qw-ʡ&!Z\8$K&A;p*b.Wx!kz _~4g+W4Wkoؠs8䡝:\>6UOft8tdl?/73Yv7/C܈pFqOef2@3@1D J(2Ci NL6> m.FsQjꢁR/לk:IFQwE)r3h"B0pn^88Η5;f0Fnjċr WA5?cM2@B`m0\ z#rR۟W$d: t`R +z9JY/Y*;ΪGu9XuD;=wo<S~[N]-2 0X>.iNѻ>k=hoo $~ %pi܋*?/O)nŨ ܑ % Ll=>gl45w0lJ72ȞLz' r$Ty狚fW7L2h =A-;Z"znhJʃ4;xwܩKc4zXq9E#a W."-^yh{ E"ArBe [BY?{CvQqA`z&)]M ߩ!s^G ht|Ų.= /C?("pi0}@2VuRO.J,#ݣ}E;ל*{A5H$rML mlĶV(%e{Rm.ara͞A,ɥp,8POoMX5^7zBN9M/}p;[GVQ$[6 .ITA~Ճw/p>Ձ$% AJ8G ԴO~*`oU(_k#>Dfj GҸ7ӗ$عkm큐:\jQK$Ȟ[Y_@ZixcKy]]6BTz*_bC 8 ͈hN8Èh\x35x6?4EAYyMGAM`iV&&)í@$/fWtLjX Sqd ؗ_S֗)"HUBeGQbu:a.xas0+pu#Z ܓU"р^@qxTFّB3׬ˏLd|_t:-)V W|ӤcpjW7jO ib#ԭQ%1fWtΉ"*(얲dws`.S&I 1RtHNA4IlKeYB A~rӽiZI@rBK0q ~LF{eFCr҈*/r$wO9N~ mt4dJJQhb)=uTe 8' 1ԙCoN JGaUmB^6,G-+C-}~x< _~P%٧ ) =l (q&NU޼SQXUWP&mUNYUJ2758j  x|PV5mR C̥-a z 7? 3xh );SҘzc!1:Ȳok'Ov91#k1 nY%XmžzhFH +#\n!w xׄTN69s]`n~nJ.gT54QANbQzdeO+ .>̴y ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100փD ? LAME3.100UUUUF 'UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU*uLAME3.100B hLAME3.100B ( +;ELAME3.100UUUU؃8 <@ g@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUT LAME3.100׃$@ DjLAME3.100@ g@ -fLAME3.100فP <@ hT?UQLAME3.100UUUUكh <@ g@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU G3LAME3.100UUUUځ@ gUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU LAME3.100؃<> g@*I'LAME3.100UUUU<@ hTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ίg  o*LAME3.100UUUUف @@ (UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU +HdW|JLAME3.100ڃ 8 g o0 o'LAME3.100UUUU @@ hUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU i|LAME3.100ہ B0@@$ݿo8[zLAME3.100A4C! TP `<{p >LAME3.100A G  "@ rBA |zLAME3.100A4G , hp  <;_!`9ϠLAME3.100UUUUAXcEM (DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU <'<1r*LAME3.100AdcCM "D l~awLAME3.100A|cAM . H;/ALAAmFLAME3.100AeG!M & @$gʿrv?QaXxG w6ChLAME3.100AG@2Dp ܪ0BHƻpYͲLAME3.100A]C%M7hdP xbٍębݢLAME3.100UUUUApcB6P UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU)}|˦F +EiLAME3.100AcA 0p `2 ,ZfkLAME3.100AC%B ;( D 5s]@R@X܅pLAME3.100X%=(2 D _u D˶һL8ILAME3.100UUUU !A07'`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUD:/pR]$LAME3.100$!G`1"`/( (LP8@)#S>+ط4LAME3.100!C%b`3h  L46M@ Y J6?~LAME3.100!H$ .( ,F'Gh bЂyOLAME3.100UUUUTA`)`$\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@C@G@ 8]R-@ڕLAME3.100UUUU!?1b0'\UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUKEp#4و/t~LAME3.100!B15(0D}ys|}@I rO +]LAME3.100UUUUA1b`%TNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUD0 @5:30Ր%_BpN]LAME3.100UUUUA#C" C)pTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgpp܀`5(0( LAME3.100UUUU`!R$`*)^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$(#l>@DHT-}|b~}LAME3.100UUUUh!P `4)LUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=! Q Ȱ1LAME3.100!N%4)T8`O26%awLAME3.100UUUU!R<5),TUUUUUUUUUUUUUUUUUUUUUUUUUUUUF9*L`hNqàsm8A/jLAME3.100!P>*$T  L@& ?A:dD ۗ-Y1&ojLAME3.1004-W$`6LD4,vI %x%N7@=\_sɪNbMLAME3.100UUUU-P0C`HLUUUUUUUUUUUUUUUUUJ Hx24<0|?`jwΎM?2LAME3.100UUUUB!S%"O TUUUUUUUUUUUUUUUUau`6F,J/|L n-56Bm19*LAME3.100B/U%B]*|,Tƀ eb{[z@ 4-PįZ> LAME3.100B-MCs9(`6pNhR@av|% Q LAME3.100UUUUD[[倰l*UUUUUUUUUUUƀ X,V͛ LX"`dߘBLAME3.100iWjTp>:c` }Z^lĖ= @G$ !⭫|")jLAME3.100C2ƒ`NxmYê.cuLAME3.100UUUUCiSPl **UUUUUUUUvg?qaeS؁AO)<05L #Hnנds|4H^AC8Of.΢%RLAME3.100CLYQPl * E  TTԮr1# \h,ʬF:Ċ?ܣLAME3.100C8YQPX<d M Xyl&( h. 0!~/*LAME3.100C WYPQ*t$L @T 7x:  FjLAME3.100!S K*P$w`?rrbVOt6_Pxvh.8L t<LAME3.100BQ%]j\A㣞A(.5`HN*NHn` =xLAME3.100UUUUCYMPRjtLUUUUUUUUU+@Wd߸z7(p G+w/C}sBI uܘ2>0p '7A|%L":?nM J/]LAME3.100UUUUC[QdtUUUUUUUUUUUP@H5mLO7+DOhE@~?| #LAME3.100C]UPUp !.<㤝QQ:G }/#do+ 55w-x9uLAME3.100UUUUCpiWPl*UUUUUUUUXJէ)& ƄG9p #8!AL "vIXu KlsX*LAME3.100CiSz*ܪ T I@n@,d163SOPEULAME3.100UUUUìiY偮q *6UUUUUUUUUUUUU^4G֋ eRBfwl=V[u*)RkY?qULAME3.100UUUUðiUna +x*UUUUUUUUUUUUUUUHh-6Dbwe6@,LAME3.100C`iQP*tĪ:G )to>Q p (hY@09d31%QU_vqjLAME3.100DgSp(m @g5Eı8YHe{jk08+dH8Rpt5LAME3.100UUUUCoSvj4dUUUUUU@!ćeTeMnXP)~?`N#`-O3gqG LAME3.100CaQl4h d#lig__$t|.2(u8!G&9 LAME3.100UUUUCiQjplUUUUUUUUVse! ݚvxMܵnԀ7Z@$XPrWFf3MpLAME3.100UUUUC8]Ott)UUUUU> hB'.H3X2eqs`<&uM%jLAME3.100CkU1C`*4>L'@DbI:DfQۀTdo0'_ⱭsiLAME3.100DkOnplR5@K͚2Ʉo,t$ gV=@9/>I]\J3dLAME3.100CiOP*t>L,@BA=BDzy- ױz!`$WΒ>3A+xP/ILAME3.100UUUUCiUn *4UUUUUUUUUUUGˀ@6AZxU{!AA_sLDBh5BL*LAME3.100D0]U=C`o (lK@ kWG缹P0" ހjAP42 *kO3~q&-LAME3.100UUUUDbEa _ЍU֡>?LAME3.100UUUUDiK0`w *tdUUUUUUUUUUUUUUUUUUZa P253aϢ )w?B mLAME3.100C]S%C`y4mn @z NMzQ? @ 8p4#-nM={^Obs]LAME3.100UUUUC]S$C`mj%UUUUUUUUUUDUvэOOǸH. 噤EI!#4'zڝLAME3.100UUUUDH]OHvlUUUUUUUUUM@& Va|L6S fQlT1%7!/ %LAME3.100UUUUCiQ$ wj4mUUUUUUUUUUUUÙdSU 9G7&m aA<"F%ʐlnu LAME3.100UUUUC\;WJ`Z*tdUUUUUUUTBH("ʺN 5Q<qKT(=}O{LAME3.100$B#Q< m 4mKB8eau- s7 %0 <?k.J>S `̔NLAME3.100è_MHd\1Hda4./\@܌-gW>tKC)k L {^sγv?Y6.P}LAME3.10FjJC[M0`qtlZ$ϭn,Ӵj졙mB b?@#[dWKw}FfLAME0m:CQQ0`silS H xUOOB$R,Bm`J;p%&_'m2j( <9]&9LAMv[@?dC_U$`lipToHUscI 鰶>D"Au"APCp)n&QDpI'OgG[I%NϦLAMEqMCOK$h~4(lo&Hk4ܱv(UE2!qm8bEQX-b?z5jaKXRDoG1C`4liԦ9fܬe7=*., AX,;@?V~ -EPMLAM`hHD[Q0 )t0\fDV&h󃍸?j8$/弅 HhhY3C"]6Ԩ  FF*őB>;DoK1`4lSL CeRgY C1?( BuUfp9#EsKLAME` pРE,oG%`lKL0y|ɉ]a\ph.ov}K h`D0 G`nu~yr4-7ULAME3.100UUiEoOC` 45f͇@a%o?_K-ٓ{nE`VzjxiC؄x %NLAME3.100E oOE (4l7)0=dFɌCtdSJ7#&O@U9V&[5Lb íTR~I%ILAME3.100DmQ` (4M&kj;o]{Kڧӵ8(-"Gœ/{A@eULAME3.100UUUUD[OJ` itmUUUUUUUUUU@@M5krD"};\v6 ~m0l(5]c4n 8`JGLAME3.100UUUUDkO$h!UUUUUUUUUUUUkL HbM0p"-nɩ}e}+U\.sLAME3.100DkM$(xi0dBp-bU=n_ ~_3#+ 'Utr #gv:2_yuLAME3.100UUUUCEGC vi0 UU]Xц>YZ1nTBzh ,*s.0zE$'+.~Ȋ&k|8ULAME3.100UUUUDkW$Aht4UU=45X"/VEDumȕ~&g@5^ByY8 3SݡUELAME3.100UUUMD|kS$v 鴐!ԃ f8@ X(>TS#>a|5Y3L.{^T3.mLAME3.100UUmCGE'`ritdr &u.‰iI)VNkt@9 U Sl4yvڙ,aP$ 0>M#JFy}j*vLAw_0OD\kU0C j4,!T ꜘFVX'?SptnGLՂ~ K*uuPdBa0OՖ @ D\kS肍jm]Œ@9BN(>g( (03<;Cx//3F F[<.6XL xLAkɀD\SGF)4l!ޝbQmClA8jk>w4R(vY =Sy'ťPgLAME3.100UUUUDkS1`5pL?\E$F fYIzIQȆzzEd9ؑZ4Qa=Dn<}*LAME3.100DkUo iwo<ЮچeaA@J9Զ>,Ihƒn{J4zigd:_|LAM CqDkU尰`j(-:Ye_A@N;Tf+I1`i53 *lD e}ULAME3.100UyEHkQ!hj(,B@0[8ɇ(տو)E89M2c$|`,E 5&ULAME3.100UUUUDkQ j4U1 | ƩZG/ 3=5q{<$Csb2OUoS)TMsLAME3.100DkO( *-Ī#+y?@(鏩 'ܸF@u{yB*(V P،imLAME3.100UUUUDkK`i\UUUUUUUUUUUUUUUUUaB8(7av  !3>'LLAME3.100UUUUDuW$zUUUUUUUUUUUUUUUUUG" b0t ;.Ô_NkBZ+}cȴ=+Qð K>LAME3.100_A C AxR z'.݇(p>ÈC:LAME3.100HSQ0Dxi0DAs{cq-?WWMID󗣅>'LAME3.100DIG@( EYT:ι4<0T U"&}@MQLAME3.100ЗG$LN)dVٝ$c7?Do-!I7P澗Fu7I:RʉziZLAME3.100CSI`al%̪M ! >s1@T;b  ZH? ^͚ LAME3.100UUUUClGG%Bf褰UUUUUUUUUU`1AL{wU~ud&Qvq/XJ$ 6p64eNbf<&D %LAME3.100CGG(VQ\@-RKM,EA <"p>]{ִ&LAME3.100B?@I`p ̪P80@0 `S(xPe`Ps=LAME3.100UUUUC;C`sԔUUUUUUUUUUUUUUUUUUUUUI"fIo޾d|r(0W?/#,==LAME3.100UUUUCpGE = n\UUUUUUUUUUUUUUUG'B/q**rlg|s$?|H^x 6M:LAME3.100CdOGC ̪`"}AaCtyYw ;ZaG(g ͝DHs<-g=LAME3.100UUUUCOI`g谰$UUUUUUU]b0TOE7Psʹah)!$X#_(Xq%`ďD%W.5xi4qOLAME3.100UUQC2Te`}ArLAFLAME3.100UUPC0OE C`t$dVfPkh >DyOk=`:XoNl5X6B!r< (0ޭ0q:wΪh1l@nHpTCoIk pMn%a}Y-⽻0HI* x}6Ja5" fA<+ԓt_cUa,P=DoA 1C y 0l8WR1fm*yt>ļwzc6[V8.pQqc/FH^ΫEv4K6O(+DpoM%C`4( (a !.8ZP!^:"jGL?#{AaE}줾IfG TMV깈wʏ<L DxoM谦5 %*\.m- $[q6SAۏ($V$"4VjUu?LAME3.100UUUUDOMC` 4 UUUPFdHpl>\HՅȵŨw<Ç3 bViE-4n.VLǓQA1(LAME3.100UUUUDmSౣ 4LUUU9-Fư (N-M5g0d#S;3O\<7rZU\8þ.LZULAME3.100UUEhqG5I8#  uɉW^F }x r A3bGfy1gfҗ&LAME3.100EHqK`)4lxEfr#8%,Qz(YՒ}a6!hF&pڷ?[FM\WSILAME3.100UUUUEx{S,` ,uUUwe$ I^GAؠN||sg~0Rg r"HFrl;wFb.0!᪞ZLAME3.100UUUUELuSe *t ,UUUUUUWgBfB8]2}Fl1;/|8[$R+ SQ"@A5LAME3.100DXOGa` ,oA7Egw;;'C;C8m,m7FV|]ULAME3.100UUUUDOM`UUUUwW 1=`ȽWFj1?o(f6<0H'X p]a{-JLAME3.100DoYRT`m!Y<,S9N;Q5MWq fk(hf@Win#NLAME3.100ZD\_UL }t`@y7 'H*!c3<`0|_ɨkP.r4pɣ#ũ}LAME3.100DiO )h8 .ȯ kWw t}]0-)1W6c FLAME3.100UUUUD kW h )((UUUUUUUUUUUUUUUUUUUUU#"@48R%O旎d #HYzΡau34QLAME3.100UUUUDkS$h 4vdUUUUUUUUUUUUUUUUUUUUFm8ӷASsԬDp&0a]Y 0L+-$ uLAME3.100UUUUCېJ̕l( QGqhZLAME3.100CCC$a`ai-mVP8iA& l)iA@Ux1/ 7-e|I_BovzOB\ 2€^LAME3.100CEKl`oT]Y@h@,h7/O.+|0!_Z\UeNjLAME3.100BEQL`b4̪am,S-+@#Qgo𶓌(|SNravpH}|+>LAME3.100BQ`ei0vdtH蒉@$@{JXâb}EQ;؀(~嗭HfrruLAME3.100UUUUCCSl(^pbUUUUUUUUUUUUUUUUp8 ݉ CD~5V:|pڋ[gʚrwY7_1_ JLAME3.100UUUUC S hh𐉔UUUUUUUUUUUUUU+L(ݿvp"d0.䯓 &hE(,h.LAME3.100C47GFqhd*mwM>%APsq /Ppk M~7!Oa3WLAME3.100CxcQ0^ i$ E 0O $[X mLAME3.100UUUUCcE&n it UUUUUUUUU´m>!bcyiZ3k4HJ%n\Gpc["»k|%zǼ9rLAME3.100UUUUCaKLho*UUUUUUUUUUU2 vR;OR¯oB Qa]#d5oYM?S/LAME3.100UUUUDmG=B4UUUUUUUUUUUUUsы("WQ2CL,H\in`b_J)LAME3.100UUUUDeG`~ԔUUUUUUUUUUUUUUUUUUUUUUUUUUUUU T&_p$]}RTqzdXt"S`LAME3.100UUUUCmO s DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU G.-*HQ0?LRABh*LAME3.100CP'C khd U;)\-r(k}46OLAME3.100UUUUDGLdUUUUUUUUUUUUUUUUUUUUUUUUUUUUM0cGuHS<1"H@h!BKB"vuLAME3.100ChE 1~&`(e\^s?P#(Lh@sMM!Y`JӁPM#hPT(!(IiVm:yQG*^LAMEggiB!IS iP 'Pk64`g/z^h+;K-;=9I钉sf` v n9iLAME3.10fB|YIL`ithsi<;P F/6ݡmŷ3ifp ~Ɓ)CQnvT߀_gVgF]D (C mE%s 4L֛`U;E9>W6"TĮa$N.>g֐{l&ȞLvWgGmF$תCeKB |W3 Wf .Tzz6' tix*}oѬ8Cv/wd3+uLAMl8rkD`oMyjtcrɭ[] 8#7rI  šI.Fl$CNSPEr;EGgPEa3U0$LAME3.100EkUC *h@,<o(Km&P]DK'p܈faTRA"wVT4LAME3.100UUUD[WMp\SMD#fә$Q2;yێO*  ާgny~Zڂ'>LAME3.10`C rJEl[I

      ^d'TRva )jLAME3.100DlgOR(*4Ĕ2c 󤃺# P&j%.Yj۷HMM?0@JFe1bnMoi|*[LAME3.100UUUDQG jКzSt'%A,];u 3Fĭ(ڂ¿זS}zh^.O6fP%LAME3.100UUUUDt[M`tDݐXaK݅ tļX5x`t1Ph JiꗚZ!xzo$LAME3.100DsQ)$D 7vPY7v!NOQ7 ݋hZyOWŜ9K5LAME3.100UUUUDiQE )geUd PPqA׸VH>P661eQ  )l & EcnfpDggn2 1 VP j3M|GB,i9 gjLAME3.100C]OAh )tpPp.ʂ).C.'I$#lR e ^ 4ULAME3.100UUUUD WMR | )UUhqDf@PHDoj@)dXE[+ئcUBmdL FJLq5*LAME3.100C_G 0A('`Ӵ9@!*H^K?cx^6RsSp$\.Rh!C@::}q+UKyq2~!;vd LAME3.100UUUUDYGR`ztUUUsUEx fጨ)_>d^0p-+\ifւ:'RK g:n_lpTLAMEU.CaUT )4 ,8kW~#6 0Fs; <33 KrޝTO9ʽ,G lPMjvYLAME3.100UUUUDkW$C}*4<`5$80S!-R mķ‡>& [(:ò|0#wf Rklg?O~LAME3.10f>DXgW()PŘ :!>_wq=[vZ@O-DПm!:& h#LAMd9 DkU itĔ4JHCj啬nNC4mP*3D;%B$hЂp` a\CFt XLAW.ې5 `DdiW$ w*TCOXw-}//@49RʈvѽgLn ]U'Ld*LAME3.100UUUDTkS㠑 jt]ًJ2H[@AB2vavEhf$ ,B_Th.<^<7;Q]JLAME3.100DiO,𠚍*̘Ym݀pU%;Ԁ?ak45.mAfCQXbgGJ -}LAMEUUYfJDkKz &!ul#5  TL6U xTCQ 6[-=8PDPAŲw )\]7a<\E閑55wQZ N0,Efqb;`O&FSLAev`Xk%rC5S,@}j4G_C.*U/=B:  x¢tAf,q:zLAfwv[+D8eW,耍*t๳͐jК^I-0*V@ס١wK9PEUA,\u *M]BULtԄ$eUh{-„f& o/xfBpF?h;1 ~Z|#eELAME3.100UUUUCQUy|UUUUUUUUUk8M@- y4\k2qrϊ˴:# pKtWG"J/LAME3.100UUUUD(mS tUUUUUUUUUUUUUUUUUUyKx-P K)C(p]==?S>Kz"LAME3.100ELmQ!t=trozG*LAME3.100wvC([ j)w)㽊*UħPty =AyP. [?H ꘻iI*TP4::LAME3.100UUUUDcS䀨(jt,UUUUUU-_/qJ֩JQ*!(/ "6%Z ۉ&LAME3.100QSBr*Ԫ?%H ݾXeٔ7exN^*.щrT^[R`ӥmGLAME3.100UUUgDliW `~ *w 0\wuHw$,B9ʣWO*([C[kT: IR\н o09LAME3.10hXDhgO臌6e:<V^)rw+[=Рr.}oT1rd7r"k(7#&LAMsI@MDTQYF`r <,WҒ Zh(lt}CƑxhpmBTԪ!̂t/.UѫPʬPWvm;DgW G *4p=lV| LnmV/:V1Lp/g`6RAEiS5-hjt$.쟀G?:ehgduoe\h%͜U=U$&&Wv򘙼]R 'U=}9ElkSj4}¨0GOV\O9GpЫ c10Qch`gmW}J&#ۑɠRuLAME3.100U[E|iWF *ƩvԔ5 8ɠ &D2$ڸm/LE1)|^Y^$;[S!;*.RLAME3.100Ei[硦 *4=ฟ2a}-hƀviio(Ba|,YB6a qwLAME3.100UUUUEkUὢ k|ƭUUUUU`\h>ahR5`J5";9pmŌ"EMqvkT+chބƄQLAME3.100U}EtqO1` jUҹ@dC3Y`, 8#u&LW .x$*BRUaLAME3.100}Dx=Uah <]A \zPҴdUe gcD<0ol~ z>jaBQ 6M LAME3.100EkS ` jǔHgsxuf)c'c/Y 㚨!Voï:;3|_Q m.n`jLAME3.100DgU *v\[G@Yirؠ]R үۇ'pLAME3.100UUUUD4iID|UUUU@(j$>"ljM=&lkfn\l/ط^#LAME3.100C=W *TKl@VA#XƄS,nkvѭUeԸ );B_KX\LAME3.100DPi]K v*4UUxo:E5(r9HHwq(#s <WLAME3.100CkS r*$oK Ab@f;fGőeDٌD9``[ >d6_=U R ?, dTua4ډ'T-6yyLAME3.100UUUUChOUDnt$UUUUUUUUUUUUUU[@d'J-$t+ڡHj~ðPVS*dp6ۑD2-LAME3.100UUUUDQY倬`r4 UUUUUUUUUUUgw`/dFIWTNPcj$D<}qޣ€d BmjLAME3.100CQS~ +<]hlA`90'T1tF. D^rX~%"ڷzLAME3.100COE&`y)!]m~]pj:d@'sMC8C<{OpDJ"M[/MƟ d=H=={V^LAME3.100CGOL`v OhAa9Y*ʣ/^}ppLWd_LAME3.100UUUUD,QW `UUUUUUUUUUUUxu} n1ބjs*W,&F!-}&ȥgwVOچLAME3.100UUUUChQUk`r t!UUUUUUUUUUUUvu`e*!,]7PSLJVEL!cYj= e8Ws&*LAME3.100COWhq $gfp |i%6!&$rnF#tVpy.dиɪLAME3.100CQQ)`qihV``/f*UDk>n E܃i4 s_!Jh3(+3$j++oANWXT(7LAME3.100UUUUD$eUL`mUUUUUUUUUUUUUUUP4 \pĸ߭ɽxL|mU opU*LAME3.100COULj$vp9&bt{Dʌ'wCa@E0v2|[LAME3.100CQWw *ge!D^ZNk/D؃.)uÝEP1LAME3.100COS`o |$tV`?ꃗ<tๆj_-ɩ*LAME3.100ChQO`bjj0ZkA@a#z`` D-n^7;ULAME3.100UUUUC4OML`m |UUUUUUUUUUUUUUUUUUUUUUUUUmpWE~ؙ0(yeRLAME3.100CtOG`k *t\{R t0E/p t:7LAME3.100COW``p{@>ٳQYn[Z8iLAME3.100COW倬`[ t hp@ ])]@6k8LAME3.100BQMJT UhF'#YE5`4 _njLAME3.100BU I+|mFbሃ!hI*PWP p{?*LAME3.100BQ`U+< ixp $ QxPYp:QLAME3.100BUB`W` }@p.jp*PNԔJ6V!ĘeLAME3.100UUUUށ@J" )UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUkHX +`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@hCˈ0j0oHZiLAME3.100UUUU4 L (*`DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@*'9{l ϠLAME3.100 P H$' r ,ĀT7xLAME3.100V P`b@ $C([YpWLAME3.100UUUUN 1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU&@1 r@FT-/BLAME3.100H -1J B0%sa,LAME3.100UUUUA . UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.E*LAME3.100-CH!$Q,_l f LAME3.100 B 0 $Q |P?LAME3.100UUUU܁C$" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUN`DFc5߂ULAME3.100UUUUC" $UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQs!LAME3.100UUUUT @ DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU)L"LAME3.100UUUU܁ E DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUh0e0PB r ğLAME3.100ށLA0 cDX(Q@Y6  fuƩcLAME3.100UUUU8C" )``UUUUUUUUUUUUUUUUUUUUUUUUUUUp(vcfyN~CY !XΤ&>+!PCmQ ǨL"AsIfOI 1M.<m]p!>~"xfpu9 6Ԕ@_Zi0f?E DmU4I 5y) J`75PCʓnw YBp32cBhx@xiECq,# D[Wi`|j)z;i#17AmP1G鍭X5ЩHyGۓ/&bnji,]܊B]bnfuI kW k8q}yN;y 8-σnϴ WS4dAy {mȦ GnF`9Ѹ*W E kWI`<Ɲ4 7A|&!CjvM5KH1Lakr^ ZӅH\.0LK$E,Y䩨*gL )P'[ѣdpj Y\>B]AB!h{^qLKn{F@mY5m 54nhV/_@%їyp"ͱ0r)=<[kg#ަnb#7"Z]jW\DpN1=\ p EuYh |,H `dz:F}"y GQ=n 7Vаri@$BTSJ\>dwylĨ2(hUw}4x>>qaEuY筩 |ŝ,up=f&q9iJĸM ¢T5Pwd&+T@lks} Q*@ Eo] <-a8co/ZJ^i_ /E!1F!9 W S^iCSUDZ  Vpc"e[ż kƝ,cpz>LA HGEG-j!)T~O ű5`]:p 3 ]iǺ$&+[8Ew]=B [T#\x`vJ"V(_ [_"*V .@O _^仌° e Alc593"Eu_h詎Ɯ적U |E-_6F<5|KQU A1 (xed3Cw<Due` +ƥ0p&AЏ o l'09dR5\YܾP6&ryB6JcDDKa,Qɏp -Z_7Xt(e :iUAQEtw_, +Õ$wy?xk9Dz= w{PrW$>o'-R`EEP pWDrJ󔁆%?b_4ya(I`,AJ g2K><9Uiy,PA퓆U 3Z8:TQHԣkP\N{"gWh j|Ǵm5a@}x!e 1/yݘ!wpd6t"ME,qYnjuF,_1B&9fK $_$ol@`.GG@ëA9!lݵ97JAraPNp4ǃaEcc$G k= .,g͑GbV e6w[/t4@lo蒃Wt@@ԝG`-ZYuE\y[f 4_aI6М3 H^ʠʜ07-`֟+VÕR%ګ""/ ȖT3J3F>& Eq]čwr߀!0BB9.U2P|Jx`EI7W7 )hJ [T$j%P FЧsa'rB_E%"TEDQ_<( <,sj'1_0N'H $pGӇ>5 aqmϏ%kI\EQ }[VM95;rvny5G 0S,M<4|CeՈg6goⵥpCI`Lhs{_uȒÃQO 4>stЎ^ s(O(D$W`K7x\Jb5v%7[wRh\,mH8Q ]Mh jE~OD*O %p֥<2(׆?PJ']LnH T'aQ$Пۤ<{7"8)z/:mJ|>pg bFXK]dࡌl|ĉ->O:pVWϐUp ApPֳxE+ %9^p2 6 ew--$"bAp"q~TEcan k|UoNWxo2`0g1|L|0EcZ"nug~jŰK.9Zܧu7/ $:(ux Fy[4l<%^SF_o:{;҇w1p ڢ8Ȫ_0~}iWH[R]tƀ;wt$!O確 :a⁃wEkcp`|{0'n?*  ,D cLg|'a_㹽j$2꧶!H] #~K vYEk]!O ,|ũ]&wtu N[woZk֦|i5dbTEKH\L8{" ~E̅ru]")~ Eia` '*r+mF\د[L^8ѽ/R >p\DG:4]h) >T$5T5FpiW=e *|L?JP0&FY+Xe\׽.pܖM)׻ o }C H"p;R1QЕN F4u_穴`|5Hu! \mb@8[&U>ΐ:4`A Uoa+ZvP`hȀ?nޢodf=y"b F Ћu*Aa}c ,uWl|lY0'?OŕRn&~!S)LMcV҄7#}S%poQ@@K8@'Dx!:cnX=);ϻd tw]佲 ێޚJc* kԹ&r/7N7¯BRz n8T 4; OwjSO$4 hl }wcLЎ<6LUT'/9̫#Q0DχyT@4o z)<O`&DZDpتtZf>{59ǖG:z> Fua穖`glJ"ez%bIu9?=6s_I ,3=*"l$+j6_u$z}D?F5ebw3G'- xa=J켖D50NR8UBx|LCPBy5UK !s9{I; gAGm.Lİ>l) 5uEm(aÒJoĴ(->)x Կ]筮|5\" jDC΅ó% ؾdiMiO`9_x_;Z!]cK2)Fq[;e<ѿ31J6o3YbF@w_Lh,|ǝTbS/#ft~?=9&,=ֿAZ滨2>ft D| @TʓWK rx`ETmiK ʼndS߄sUDHF# Z]89|@TB OI2 j/(bueZY[X!fߦdC#)L6ʐUMC{ZlP'7Dy2 G{[r j=l~@G:FN4 Jhjj-{e2Nf $ų6L{t^#''2 k8P!e\/Fh'әUzRh·R`}Clq4c0wU j=D)@պAw g;$ `/5g3 zHZ@mR;hW}7h#Q7T<4#3D A/Lr{A8/)ǛOūZgC W=L<4t,p\Tl|cJ1v())ΨIJmZN {6@q$TUҾ8( nm葔=GH$.^Mp*4㩞H:0U,hȩ}]+z!Wl* v$UU :;xn<&uRXs='r`~ s~z7j2u~BK ~+ժBx˒Cak"F}PB٪!-z0uG`` Oi#f ˛@ $PBfKz6rQ>fh1'IQu#`߾[d'y  3! Fc=+<52 Ŏ 'I}z'eO\N3*J.ҏ %Ob3`g;L&&:!UAhSnT/-ZJ,4kиF0ԷWᣠo }4K%ΚV!F^U:u4"^j̠ο(XlWF`NGE V 4IG&plE߽ ,8&OgdnաmrFh%J @{]1+Q+E_W#` j u7,P"W =WjC9Y֨9 MKʫ0@57Z"!Mddm9eW EgY hD?A% @1--?` ԑ3wV듪PDUE]aN,| IJ9껩=+?\:JWb77y v0Vd E| '?̬R։#:YuMF Fma爮`|,gyBT* +j7tZCi6k`&j'D   .Fp*g5)8;E#=-H:F.0~,fȘ,Eo]0|5 G`IKؔ|lA^3ĐpvAD Yh:E&CfD𷌢 FDg]a`<_$ZX,o]AԜaΐ;U`W6w --Nm$I%mI\xOq|8ٳaB u:%$Q"(E|ܚz ixbQ.RJbWbFu FTu_`|$L:w0Mںdbͬ䂏+tbo 1U>d$dfQW|Y0 . k0oy!tL2IRZ F@ic=Eȍ+|L1Kr13}5E<$ZRAGᲦPvfa%9ٞmTVȩZ3dzAJjuB@O*H:āVFxi_ z>bgӣ5s;wՒ $w]佥ꎫy i9%< B߁~OeO2%M t`:Fc[ | C#z}4m몠!Wq>$HrTZc s-j=4/J_U2 JFS]G`<1&=aPDG-i2f熼(:  4@ i_l%B.ҟG_%˒E(mcCsi|#y`x_PA+YbOc ?30RuDrLJK赋0m keJ఍-<Ĉ v|S ѢbHMh0 ˫,)2ÑǬ*LAME (xv;dt/tձŸzN5]  ]]M ,|fT/0ѼC r9Ӂƪ3KUe1 8t-jfjP&0s38cwCf+* Z+nE(ki m<.MVu_ 3V"Mnj\gpOҵX紆~dUW T lki rn6ro8ʈ49^e*!di E@_tHM F \O6.j u[`‰'V= A`^g -Mq5/PV-X$M[0ӚߨW9M=m{߄@ Y(X:tQ$9yM.FK_&DOg l|Dcf|.-0(PD4m_SB1NucC'.A&fd* :+脐稙@#m8;fr E Qce l|EQd,T^\8 "6cLH28) XplA7R,l֎MŘpfR7FsW0h+| <@2HaNu} #V2q(g*gc G/ߘM0S(-"i_FU 2B Ei[c kL NZU.k䓈\!vGnn"3_jk'GR ]zaw@Ox 7h>MF? E[[- <02im*:DʤE[!ƥ8=]y&ڑ=pA0Y ^bei۵_Zw uD;Y=d <dA z,)lEwSVf^-"世|e<-v^XġaY0aV2N F"K EC_%" .͂˄٭8 NVE0U(`4ŌaEj2v .e29b -~iv:%CGDo_$`V a;U.fk7KoQtQd/"@&L]e0o7jb|H^(f\ U$Ŝ,P GBDe_$`k|¡%x*= resďVF'tklK>ZW  i(;Y]3W$ҙ6TEo_⤥ 뼓U!͂j`y~Unz 6A'mXVQ 4 cp6dH #<;@/) F s]䭮čdRl~*qEiOcT4=GAʜ, e⪘DEa] j!&]%ɼt+cYV;j׌P&-y(I2\tMH:T5%SuIqy&c[&,|J w'tC)wJLJna?"2aK Wg^w^w4v5{b#A5[zp3 Ho_M` 뼖-$RG#kw8*DJ GgYpG$fȬĨ&"BpK9 b4c9NڐL*"k(j8QCP0[*@e4I` Fm_=c֍%ͬ>Op%G\Sv-YK:4ٵZޮUL>VS V\#xC{!5A@G/bZF# rue FwYr ƊTp4(Cq k(bE$QYn`k| BҪ1c8OuXIǛm@rV^&FְM5EKB W3I阥\Ve 7EdaaAGQ~ր&6G$AiԺ!IEGY`k<5"\ǭt0CۻS~( 7\=(pšCl/ }"_膸em_p 4EJEc]<( 4 5N`Av>Hx sY<~+);< =G}f*@u6/^j>I ̡G㩚~/EHkY젡k!ZO Ea]6( k|4]`1RbJ6(vG` lv"4<}+U+!:2Idh@  ^`hpdr8rOd@$#%m!a#E?~!n6ğ*xVh >.YA=@w[ ʎjCˬ11Q>UϠFH~+iI@.\ՌpL b PZN,7=I#C&V[PhiKbhw$ FuU癌 kfgP$S'?ۇ sYR` | ܃n]Hjj)y0Z NG[PF%2CIGX!χ>\l@۪XZ_Šn0o2m:Jύ0?WQ4`7xE$_Y簬(*|yHՑ&cgzG@6,t$}J<4g8% ^Cid!!E{Hx:zzv %v=DGY . ")#y}Lkp֧ƒp^j4q 6b9[(NS sΠ2ޗJgoTELa_  +ń{?Ev06}/p_+Кmp{F`[BG ϗ Sg@t5 ju!+a{2EP_] 舍l<Ĕ5a,)y Tqs PrFw?/X <'*4RO a8:* Ehk]E k4yvfTd^K\`:f 1h58 7v p]Bc2haGOr,?>E'E]_礧 ,|Ĉ7ebPb?N.ptȚ ;wbäx#dൟOhwOup%P]o%j@cF萵E4kcG :iCn~àʾb_~jz?a ĵϘ,m@~U¿g;80ʮ7ѼF`kW1 kH_v5J*1'Kfо@H`㊚x}CAX/SFB)B 4i v F@iY籧,G( VP}RʅhLO+$R+U30:wn4Xd F *{7Tof"WdzPdCB;E UaEu_G`<)$$1!]9dٗ 5C'Kߴ :_ [%֓* 3 kHw\Y}7]&ރ ˭zʲ:eluv@aFww ;7 n?>)vI HaуEم叔j0]<`M z$+׸PbP;bFX"9V,VdYwW,S,bK,a'(riY䤩 +| %vB"5DY V%n-l91>nŨцdJ(Ԡߎy( VZ{+"5AݱӤL F[U=p`׍*<.=L"ȍ ۞kj%RM 0xfE%iH;Rf8ib(FçohRh3^Jvμk%oJoȭ,aanK96~ʥѱi:lB;F[Y$`<),:0#:X4uFW&Zn7 :cEwTu}f'AcODr쿮iX[@>4w꿒 { uWhUp+ȻC=;Kf4FGPYxᗮ:aGf| bne &!z XSYZsKTVG1RZ s[6`⎫<P}ł2?- ]]e氌^Wv*/УmX>\*w@ O6@@`9[)H}ʽ,-ŠLAME3.100VEQ[`栕+Fdxjir؇b^pX. qAaw';F#@~BH@tmX@ӕLAMEswxEkWg +|<GNvsW!rDMg %%8`ՙ6G\=ѹeVf=`V>U;)DQU!n蕊*eTP4d}u,߉ww 7 6 R!frxko0Ei - PjGƉJ,DkY0` é"(KLʂYpE7-}"pNp]:ԗ)d3a&{2kj,ix#~~;O-1>_sE4OY睐*4h0L2 @҄DU~}Ӳ-AutpF춙,g`!$@#Q̓JD tduFfEqSl`WP1 w ?Z^O5fD0x9" T9Kн Jέ%h3&f72*wS7cUEgah Ta5,f")}%RU3 TCP˔n%_J㊘6%A%O d5- Fb $K~sHS4R Eua砩@===KBl,zP)Qdi.jt)3ZW=VEUz_?S̮mFuY<<Ǟ ~6rYUQB6V`2W8 4"90#Xoj# ԃ*B Ew],` 괖,e m,Xv!,Р];|uhqey7Cw ]SF@"ϭ8E@4! Pe?o yk*Ftw[ < a̘Č1T l8a63;,@@ !Бඅn* Cu)h:}`45FDsUh*lpj3 &VДA x'SO խr]e1=-Oߦ,f~vi"RwG0,EcWn衊+W(C,~,m۶P'e d5= mqJRc|ڦDn8VæED]]䌮 +ĉͭ"9 _B̊wfWPv>b+6֪j]wS's_m#q\E'-$q F i]T ljաث eV3pQ&햃 ь#EvzbޜbJ#7UM ) n=q=r NV y%qtEg]$n詋k|gtt=P R~Y˩W2^OI`tԦuGz*ƝD4gk%fDkv{bg\o֏E,Qcl`kǘ"Κ 0=}O6FDpw/C y7DJ#C^0 K@N f 2;R踼uɕy踔*5{3whTm? UFpsY೎^b_2]czICZ*$>94ڿY'iȲ 8=8!hGEZ}m<6ijKA#cmu Eiank5x]XX4&"%XH VūAp3XLo2<ư7u@'ء\t9ƫ{'t2 srsB D2 Fs_獰`µD3T9qiN $xcuY(  :rFp#]+iՇDcJLnaʬ F$s_|&3BA9ۚBOlnHjD'֊`PlpXD:սU#Cߒ oJCqPKBBZ]WK+s%h/ Fu]`Ǝk5$v5œFWC⁻H0EƬgspSe7+vdb[j"Cu!{B9Ga"ygcAVO }rF0kaN`l<;Ydƺy̌4޻4R518D`fo 7aJK9<حYXfC6ϴV0E_] |D ܟqjp{J"+Sp”@MԱwlxߟG&aZ^>l9ͧ`Eb4E)"mEiU$k̭SX+eH+if}ZӴO2oą"#S#M*'wPBcu]"NJaF]>a EkY  j-tG:lp4-Ҧîbjp | YH^~m"Ke `8Z䖐3aUm8 uu脒_ix4? 4/4EkU0 *4 JV=Wt>|ftn(L+.L&B u[ 7x̓g$N#B+$[_r1a9PEkW PjM 8 4S ~XEcIӼ+X~*[ßSdHLAtB@ix XgBŸ0qlɱNK61e FW(jǝ @̄n 4 LT*tШs> =lMPC-Lt(98Pm%li{,D~Cwf/ POwl1T˺*~;tYpjEiQ 2 *tL&_ky@'j4kK %T1=J0 v}̎p,2_g1@ pLEi[瘰k|ǜ:ݳ|,!R ҽ@#Z췙R\heݐO‡nl@Y{~:A]&_n<;apEA[+< LWCb)åW3!uN4B3w{ 6WDhD0ĒD㥤X!W0Ô l EkWV *L躋aȌXBhAՔQܱҢ#>@yLM҂^8HUTRt~ExkY Р jtǯhiOdIGBY^86Fga{WABO c988 6$ϲz_dYEkU<` jژdt F4TD vr?KU_zkxt1w*&n؈XMdA$w@F٠UEkU + T^NG"#-!tƶPQvE?.¤SĘhSm(g0  B'Q9{.:LAME5boDaY献|R%][ G-#\2g fzOB'%Γsdj ׊+LچzBcOD }a[G+|L{˾|i*#z??MO`Dvz`,ɠo:exV*t׫b+T_a P` ĔU9J< jU#TSԟCɻrJ !Q!=(Xٌ劉1 :7h_ݵ'}5dcY%஌k<Tj: Ɂj8|H +G߿Y-p% !>tT&Ar?[s6y'.#sBzB$̝'Ӱ(IE,a]` +Ĵ0 fЬW9@SahGYxCoX1)%C{I¶tՀ$EvY` (2A/kWUmOMC곡^4bY0a]`+<FP$DUؐC!-U{U=WϪ"w7q6wKG59$*ljƥL-V}!>+na/{ lc_ k rpWyhv1)[K"a겆2BdBN|E?JTFh" (GFe{ A(cƢc=CP!EduP uEcU +|&Tc G:oaD_ Uxf2cxx;d&&8|6 oęwQ]6bϵ<b ]IcRaU<ྌ+|!ddVBYC7t(5wg${a+D||]GK{jd ?"\[4Fn7EɪeVg=6D bblcPb٭vz'؎åa` A\nt`eo/[J\IEaW$ |74lxUк71do|#Tr@Ll5;MCj~ƆqU>W,ZnZK7o./EcS诌kƪX9Y~;Mg^oXEr#\*[\´eīAnJ5*@3DgV K6;K}(ݒun?qEM[=0`*ĠPyV>4ԼYyD@J3)s&d!~@7V.ϩ(N|cFm~B}mr,bEkYT`jU e ̄ÿ5Ps iZX.j^1ψo{FY%]d/U K.b[~!$qcF8kUi *,ّFDaB,?d͌xV6fw;t)8%X6ÉՉ«4dmA0m E|M[(`tlj7EFtC䵦9Y^8q)4PcZ%7?SqtEC *xv~֚7h2|UCG*24 ETuSI` 44  +' &N14-[t,ٵ,[ƒs7Ve 봤 FH`Z"6zaTu)Jr EmOR` |`8˝A͆{ʪt:21fwq7p`^ї 6=\|sE8y6< H$.%CրHv;x\ 2sPps7EteQ$N *t!cLzXYx@X2 xp뉾unQ%nn5?SSJj/W1ngV>#?C{HoZJD S&4uY!$qtFmY |b|⠾ ;3xl6KvUH|#_ߚ37)t}Є~˴^.r,:iD EOW( l}2u%Y`  i _Iwp_u =89OUL" +gY;q^jچ Z h9 } FkW< |C{"Z1,s E@1gODDh`Tgw@ns5tKG/!'O3atn@AnFugH6up+y4)HEeW- 4< ޏ=';X+U*橶97V*ܻ&e8)mH9_N=jw88vBrNXęE'bT!kFξy}>IAi 3oP <6jBWh POEpQ_< <Ǫz RTT|֎ Ha/@h5%S}g5[ mZIWnL N{S {TgpPElsWt jtǨ B}Co)OЄ.d}TaVԯ5UG7A jwڝU Y6ah+F`ELOW=n`*L>};r YHT`z/* DHj7x3Ry Jwn)x=J\#EPYW1` <ĜE C#g-x(֌ *Q5mb@hnMOHu2{KN Q| EmQ4 ύ|ĮD@XWAs>S;8#bH%;M @f_ xGUE{-@ L lH"ϱ;] 8 Fzʒj 7wKޡer YFa[,` FyF`r0#"#LArE &(ˋ,ѿ 3DUuWV'JKGD EtOQ%d *1*[MkSeX`Q&}6:(71ܫcWNe߰BmI_v_e Lgt&m  8/R!# I&c_reI7EoYn` t-6V~{&#h# 2_q'@TDU YIfQ@b:158!­Fh{,8;FmQr k-18×@q)^.!ʻts* WIu*n /RriGjK FtmY=l ƍ54;*;+ʖjurg:\ c߶Sx@$x9ˋBПp?q{rU`+ 'a` A(  F(u_ |*}6؁wy;4UywY~'tQOȬS'%6D;AM%J0"eZ ~\@eS#rNL@ť\&v45([ETaU򪹛CmnW&S߶q LgE_Q *ĔΥ@hr6@s'n48:B'JUGKw:*}]i A>;P,oV?%5 vGfYp8WEla],` áܩ]eI28 KlSPͅ >Dҗpwd4Lb$`|Yم LAMEwF7wEe[h¦UH . ɕ|((L< fg6R͖!@Q2=cLLAMEV&@E eS` <&ᘒW.NJmI7aJ"}A|B"LMNL@F3l ۥ^D״:RˡMNZLAME3.100Ec]rǭ''@$Rd6T!%o=HZ]K*6`9ؼKQʰzLAME3.10wmDcW &IKexޝd^Q@ZCTs[jf ,Va=Zm*#>cKKXp7|R{ LAME3.100SD=Qc`tLG@t$eH|.{A[$iGj3C#Q#J@{pw)\>BW_GULAME3.100EpeWI ǔ݌9j]Ǿuiڿ.f=(FÉd!G&`:n:ɺLAME3.100E0OU`!ĪFʪAMf%# PFv6T:,@jab0gfG2ヴ; rX ӾLAME3.100vGwEQOTW1dM1y un0<LAMEUUUFj8D9Qa" &`%b>ZGԓI4\"v*gq%ZV!`ePӍ99*9ߚ#/E_2LAME3.100DaUꨐ)tġ]W-C KuӢYNHp@Fll-J LL`y \βZLAME3.100EOMj0-Īl6RL}P4"Qh.͜$Pm )"ߨNyZL=ʙ6/!ULAME3.100UUUUDOK0`tUUUUUp"uB~: hˌad}Ab4Bö ey| X|CKc<ʏ=x*LAME3.100CQQ0C`i0Ȫo t L|`\oIBU%^>P&[tT?(UltuULAME3.100UUUUDOW估 )4ƝUUUUUUUUUUUBuWB,1* XvqR=^*#LA.lLAME3.100DQIFō%_vб^>'PBQmz-B7zo`iإŝ=MLAME3.100UUUUDOO ~谐1UUUUUlHy<΄G4ـ`ʼM=c~ЃuAIHTLAME3.100D$GG` (MV# 7=} MUrvR+<,f9?S>*Qo0*RCҚLAME3.100UUUUCGM1t 0dUUUUUUUUUUUUUYuû;+4]z9{(> o}c0ywVLAME3.100CXGS0Fsi1Ī!U/y/UWcf 9? U=e(!W\ۄ)&ӖLAME3.100CGE +<hxCAVԸeڂ@r\qU'8%bw.26JՍX'wLAME3.100UUUUCGO(yǝDUUEq8;sk:$F WjFӑRrz̈́yt/ZqVhOOLAMEW@C`GE$NggUΓ&mgq{19qwizԙf@3d7&$Z ,v:S­z;,LAME3.100DUA'LxIs[@=N#eHUQ">?Js\$ k&aT+JO}z̫LAMEUUUpwsC3Ql p` En-5ΝUs3'^rW (2+DL"=NͶ*ӍXm>&n 2HD[rfҕ*LAME3.100CCKN4l0N^@D 7 ҝ ).FEil*lvΠ>qC 3;Yr HhULAME3.100UUUUDkOl tEUuv}R9̀EEt tԢV!cչ%׻ = l A5G lK5LAME3.100UUUUDOOl(itǤUUUUUUUUUUUUUUU`@|FJJ dYMq2 NL/yuoܡLAME3.100UUUUDcUc( hUUUUUUUUUUUUUUUU]|ڋ@Caδ)l?CRcVjԦ#i,k%aYqkZLAME3.100D3K1"(h$h4`6Q݉kU-ڢߦ!QGRrLAME3.100DxoMm OVBM=̋";5ލəH>7T%LAME3.100D7Gdv06|I8sܻT3ϤQczmlȨ.U Q )hjLAME3.100DXGUl t E xTEq%!JT+?6Ct[^B雰-LAME3.100UUUUC3HqELAMEUU_c B8AB P`$@f!<.ӎ%{vtSCzC;Î( BG@$iGO;k- ZLAME3.100B3G`=蠐$ p  ؔ'@!a(g!2.eng&[@5 <0ehcX1C̥xLAME3.100$C$v0* ~`oV9 ]IK/Uծ۶WSߖ?ҏLAME3.100ԣITƆjtPp 0A٬g, ̏,+,-A- E}s)#x.PȳgͦLAME>0DO )t I^1pr(DVBSq 4Bd[OL޿K01LAME3.100UUUUQRUUUUUp(kx6;j_k.Zj$Za 1CJ:a!LAME3.100UUUUDTQ$jgUUUUU913tqW=Nل,7Ңq6Hw` Ll$! CLAME3.1004Q`apGqɏȡC$"UJ<3 9;qYԡ_LAME3.100D83Ql@k@'5 d-ʫsYZkHG[;XK`D`vz$2WPb LAME3.100UUUUDp3Ml@q<UUUUUUUUUUUU:ø4aBR=u^:lg?颬z@~q(َ-$EsBOaϭLAME3.100UUUUSh*4 Yb, @/Bh'M7I#Ӥ\W|FAO$Hxku<„*LAME3.100DxKBsdcpqRv-2YL]_=g#FVWz:O$ 3g2ZSCD8]?j U߃اLAME3.10DgK4mh "M@MҮv T`tH"xqz$9TaN\(HeTid*,H'XɢLAME3.100DgU 4&LR <0-@uoG6ATb5w`|'*l&$nxLAME3.100bDeUh B\|VtD7հt9\AK1NທH"_"V٫0QLAM[ EDaU焰<I2Mŕ$WESۓV# Gv 2њy_!- mbc%D8,EdoU tT/l7AI|2쐣BwכWGH3J;>n޺w ׎zosDloӮ2-4ʀVFeEgWr j4 DCچz GKaOsG*~"ʯSke9Lm)5yo}@y2]R%Lpe77m&uD3Of) DBD ɲ>SAk8ͭB!LAMEUehxEgY`jm/_?l)]\^\9ާj@|EVUOw\(]sLAME3.100UcEgWF*pDXeoD "lD> \{GC 0kNrR_5  z7pFha/njLAME3.100D-Y礥 +<buf {75u%>0k(ʕGEq@3V4\N5+ZMMWyJLAME3.100+DWSL` {'p@'Nv<\U9pP=Н[i1(A0*LAME=4IpDSU礥(4"3vY |.oNP7{,6 PhEv` n_T)ۍqLhKh$EHYW(*LVMpi_nH"'X 5yMḦ"|CI$$, <Tuu}f`.XELWY簦jpRО5!ʟP(%u)66Vj"!!뤮8cEPQ DuWfF}vͩcJ=Y t'WWOku@GF2*ղF1wz!:jjDl'Q ` ghm}<6cqs@gg@4d*y}+CakI^֐{d{:\2cF8U($Shwo ¢IB{E.tv*03 `q!6-%@'U_zۇxX EOWp*ݏ  d?ȍDVzl-%Iw  3O] y)ƿդF7n0Qa2ETkWn( "urw> *6UؘYͣmĄԦ+O<\ҶNS5~08{o;0S|jMŽEmU`j:'Dl6 C9@`,'3˔~<TDC{(jikl [cE kW焰 jl,FvY' %m 6nHu eQnWԝ<NVs- "*E$ {s+WGEkU `a sx.= cGHXoo%uٖVCf~eQD7f? CF j@EmW `< L+{ɡVK$&ƻ.OАލ/0!Y[5:S xiI] UէS߁_8EQY献 |[:c=9"*+ ZRrxDԉnh% gQO7v7؁Ig-QREloY ij;D؛x#8Q׾E@YQ:/R!3@o3 Q,ɛV%OR?$ E4kWG`+|~&40'ue}e ;ȳ |CG\^'l1UaGN8!Yd(c3iJ {]Lԏ"N3RR t8&K m!: m ͗MnA5BO.Kb`, YRh֒k ]~(˻)BJ& ΕS!pKjVtDix pl";[: ҀHȌ*qѩz0HQ FD)Y0 <-ݩc7ϡ<&=635to ORCc]OʳTƽH)3ظpAD0<# |h ' uGO yEOSG`kLթȄ!JMp4_db]Dǘي1 `!S@":zK]マ/qbQ!@t)+@cԞ&*vd]S0dsYa jE걡xV_[7!3݉AeC?͕SX Gs_8iɸ@\YP WwlHc`N<Ot yw pK f]p>=W ȷwp+ mWv k|Ʋ|M_oC5 (-fL6_ + " eY79{Hյxr ̅JuC9'`s0WK~OCzQ| tQOaŠԇE8%Fhm.{x #+@^JciJy&d:Re/ChnpQ(`ORW~ǣ,t ]筩 ƍj4PYV@_@l5B6W(ww':mjE3UT'o%* T,M^l:N*6AՌUė u[稲\'4v\J;^dxf%DUG3-6jB$Yp 9<ۊʪUA a:ub{(P7 vK2T^I= u_ekT2RøqLD͓cpUw1ʹ:$𠕋_S~ RH(.T|H5Q4 2AsBhtY8=ET{[Eॎ+ŕq4=8:;OC9D 9@if9Y HGZ*bT ˪%] UXqE{]$I`+<% { ~Zǰ BǞJ>7aZ×sڈVc#x[2W9L䩡&Gvg,B`ALQDI]1` jtĉ Tisyp(PB苜P-֢./5C)7RI>0ű$ QgEtc[Ns Tvk QpPHQ{}\#|,>f;+ K:p =u>(A EHgWl DTCqa`>Ŏ#e7(wOYj(M3_IQ x7wUȈi&'dU.*׻ζ%sT1ʙ zpI=@ig|m(i*p[3cK^E@i]I`<Ĉ-LV CgQ i~fk)$U, G A] hMf7n %AXJ:th|#ؒFDm]%+|L^B;KDܔҝLMRCE;[ "y(*f'.i5)[ZGV^ٰ09 :N}Ԫfh1zb;T`?StNbztnf i 4wU$m ֗|A(+X=(``&PT)J^]xghu9Yte(}[}r{{vnf2d<3>!N O@Ka) 2zXEEeO tCU.`NUnj[:LSɪthe'@&ۂ3#h ]4F2^mm\T\ EgQ U"!W *tG =?=:06أ>|rC>y;efI [ YeLeHXaljpEPSUhhte : kxwWI)hqFNK P}Bz4P Ξhw"d" D=Sa`) U}Cf`sy]!MU o?/ s Ԓś驼:S/[Qlm@N "ǯ!E`y[$ை<FvXuh~)^:#+:0QFtr, KĠ9m ^! (oW= 5*gg媤w-/ᬫ>&]$^ oAQGee%Ah+dB>t;LI.t|- EuYL <ũ i9 ONJjS;&FVf(71zan}BfaE:T˜x S/|O}C1yBMg?2"Љ Szd[7X wYEɎ|Ƕhř @پ|3+8ir.Ih5 έi%؎@xzv6-QEgfovtΰ["XQ8e9}%TB 8VloU籩 +MAPcFCCzz+m0:QtVg0@DKL՚L [4 >lLAm̘ gE?[lk|FI2jӺpvx0(VM}øXgѸU="5o8 LAME]] k_ьkƞLUY + 'xF~}+0 mNGAIZ"j FPy[r`jey'ՁҾ" +Kf;1HC t"r+NX-%XM1&\َ7ض1c6rZȥ/nz' {SDHGS( _7*C_Zz mפ'7[bQٰExs6|kL:щ͟Mv]zi1YY0Ơ  A[Rn\3U I#I{fh-#q Svbm.Ab.~dHtK^cy|3RXflF(e[0 l|{K=̉zR?`^Zo)&y<=QʦI}@%m5KM*4 ESa簥 ǜl'YA=~ yK9P%?m-A*glz'^H=(q 㩕sxygPk̄8D<}x`c^EgU,oF#OU+ ́]<-$8 jeRc[1Aǣ\GO; X ;m9e|`?+F]2 cvuCWk2gً ,{ `u_k}.4 桡y PTO;IQ"tL`:NVx8%+39,WƭڮrM_"GIYH㥕k Hw[V` |TjSwG q3YS}F"P1AIeϨWhyp 3/5,Y9( nx3qZcAswFk] +4| 1Rh4-U@# 8S^V oC ґaMK"_~&Q2$ k_N k5̣՚ĥ*8#l5xOVTQ3G wsJ2!  KWZI.?#'"z?8GʁtM08#wMˀ F@man`k< R|2J[7@QgWr` G)GhŃn†ޒYc\Ͼ@E*x bt_%vp?q3x9qoES_fซ,`k*@jS9yKk+=u?:͎Y<7t@Rބ-Sנ&5?A=* H' FuWh <ǚ_FpLN!}Izwhͨs(ټ@(<*,:YtUp.BICɷi 02g/P #nxrR'(kFLq[t |M dפQTQ> Zꡱyv󑪠><i?CVt^3NGu]%` Óau0uXBw1&Ji\ m.G}(LDC,) Ek] kÊLPy Хj)zUZ-|i[ߪdOL2yRŀΎa0mzPA& mrb(uA8)WEti[ࠍ< e4qކ-Q8o:Nj '/A[ zvVg}YQGeܜT템KTINٗaEQcn kbtdBuw -a={.mF*@3&sJ¸Ʌ442?= <&&jɓ%t,5-djEm]` se'x2%l \?ޡQGhbѪ!_鄧u$,ᄨ`KJTK>0J(GEk[ (+%ݩ9 b]ᓥZeȼnLQq!r "`BS4!%I2mae 3#x65E]]<~`\(6XEOc <&ڬIYh<_R aRSC'`]0J:EwbP|bLz $} E0i_P`<ȭIT,Ե^np* KUiB͵AReg0û5A4;e2Aڼ}!kPeG/ݻEk]p +¢DڞCڈ@ hr32bǻL9 :ušIM_ظ4pk+2 pb}nv! wN Eg[!0 k|žEd((g ˪yfzB ETK4}5AVZPFFN$Eq*%T)4Bvg=䷏6R~'bpF@UW`n@* C 1rSF@k[(l$m厦F~%Y]P908yx2[1IMy"`d]w, xqa-Ρo]*sc 4;ź5{5b@f$F8o_f 6@wb αRa(_lKɗ; }&Ha)}p2Ј2^lF*p0"E7o Flo_佬`ō|!! C]SI@)JFɳtT\b4Y&\'(B HNڦ?'k*Da~h+>#O>YUxPP%HX: FcY` < ]=S&Wʎ gR x.\hRJء`,{K%Ti|9y YpG(1 ǁB*>宥2vEi[$K( | Sz|E6lT[EU! `T^h6w{Ij'$rLU7N%ͮ΃F(e_(+< Zl*V53HDP9$eehau3}KP`V oEPpFxgQ` ȢfD Epic ྎ,U)MDSrU1E'BtMRߊ(rK 6WeD3ox|Fwc h +f|!b%\5 wh@2iHe\܌ZPhʼn57YRa[Z5 mc ` |ǭ$]J=>0k喅W#طQD8 JfsS*1v5yPAp/"@Ru/jjX'"^H00yan+6X0Tク Aֵz mFq@[!;GB} w}VV?T;ks=gjW|L9em(eO؛fܨUo7 n5j- {] k FZ%ԇ~q H"@T/Ɗho7zg \x O\iЍ hN t\߲ s|-`Bl8 padLȟ골r0{_Kg|-/!f+)el(>peއU%kw!)صU̚(:*ɽГGwf6~ϳ-UC 8)PY,%X!ro G!M+<,g w_`ח+|eUJIJvX+T#drqCggbUAwA1X'(U0P"ejﰓwm} &wD9V>]dQ!Fy]砮` gl򓘴p֞je"WF([%@&@ Uba/"6u_*5}gyc3f Fph( F a_ ĉ\49AbĤq<$#ab\~Z-I0ͻBHM;z@x=sh'(g 4F$7ԖxCzI]u7pvϒ `39FDY]Ǩ\ǛN)1?VjOkpYYI !iI2AN7 NTy-"~X 2Pyrf#Š+<>0 xi\ EuWN݉^ö򁧀v9Fw@,AH*މ:T҈B />}Єՙ\^ 4# ꖯN6܁$: F0uWg軋+|!4F¯Q`21S>y1n\cUha?gҿSeڋ*jPCEF%HVc)3iߤ".U +FuWhǜ"殠m!ERFiF{ pp ڡ&tgI"rg5ҹF&Elc[ Nh<@I*4hjM|vMfrFf fiQWPJ7 )5s4J: 1v/'.z E@i]g(+|qMB>]6&.ab J+ 4 (my=Yd^aJ`= >LiKp f꼠S8v#E/]& |]ea f0 D$L"A慣JS~+Adʩ;!\]_‚  E,J[,ɔ:QR7z%ƌ00]8^1y{!t luYx ҎǪ0"?8Heb701<*Qƴ|M=9oEnx7(x G/Қ{ZrZbmѬUj.SV< |uY`k<X`67VT@H Ob$P_G8 suo.VT>՚Fc~׊r5bd~! |NL$v:@E;2VHE@S[P`qb^i<:T-]2Xas"ކȥ 8 WM#GIUg~`26lFR#EuYL |3˯&mm^8Ŕq'aPu%iHs9"N"۵ORgSz%A&}!2h}zEsY 'gTۧ^KgFfZ$~EӸ'jd {YZ\3*i H 0"+yBI"cȘd߀}v`e E\iY>B` {QcM QH֥PA5wfUDjLAME5"D1]$ kĉL܂ ni_xVdaB#gbiW/Zӹ*LAME#E]Ym35$-0%ĒPD Y]FY[SG LAMEEH]WCǕTFId:`;/t#_@vL!X+08qB=9L)CKUC{LAMv^DaWP ce  #($ziK6ݼd_lQ{hk8ӉW ׸EI%ޢi0rc$Q:b:PE "ĥ`M!4$XQez7DaaEk|ĝ,4/<-W{L@&~JEql$<PeP} j`jAIV".y^?)J巄 E{[+<$~.ЌNZ8)vUyn7R=!+:ҽQFߟ~z̀Qf@mnZ=5`5L@O~?*$~8DEaa N`,<ģ&\Y=QQ!BYZbj@ 5 G[Lw=]j`oXIEpi] + %!T؀\`'3jQ`I =Wℳh&5,KE,e_%$6 ءDa_L k||A0!y@`uМtX@q\ MDX.,~P}_FExO Eu[$訠lНߋQ .ꖘ'E ]TeqgGԽX<ΙEcY k|̃%U-Qp`2`&HжbtQCJ~a7@rb6xНh()XF*Ab{^ EHq[簥kʼn%^PAUߊIw$O\ C+BNS%"C4Xq|3wλ- (T\!/: s%Xa]礬`l<<~ p╔ CinWzf#O'و$½_Bͷ08:7,#0. 'O2Q fǀgDYiP,< :.߁uv3h~ nUN4';ƪ!&!Tkh>Ip\PHC*thXqa k|rp)>t'& q|Jǐ{Wa慣9Z'D_"'TJkFw[$`||=arMnm 5Q٥x &Ff-dr@dž3F4_, .nV#zw/ZbxEu[`|TA-H+-}CWz5H-iSj2hnE?R ㋵CJȗ[@X?y)JE{]L`k K )#OKO/3+ D 9-TYdG3v$ Cx' :BPSeG1t2= 폖ڨEs[(k‰AbS{-T(82h5pzsY8J|DMm("5岦cfD j6lT>j DiW#iKh!G1^+> {Y<k| o#P4~ֶQ<;l6+R# s,ʔ?v̸-. R>H6Ծ  =U'($3ÒIdԨ$:硟akEc]P` tgT!$ \IB! v ؑ|/^*aPwԂ X6F{/5_'~cځv+HCsH׼F}[r`kǝi-NktBOx'oQ8% 7XIaPc[UBS"p%XYj( ʯ EcY<ৌk|,27v.5TX8 -,p'i!(r|>„I *%_x\LϢ٪VadJ4hn>aEG|Fts] k% g54!)_"&zͳ(#ʃUv8gl~J YfI]uWb>ka_H]Es[)6E mB-QtǼ5h8= E[YΨ k<򢍣@V:?QeǼAI$h UBtPH7H8 @[ṂrEup#l$^/H%B?(Ўq n±n݅pfEa[T` +ǖ @$H @͂1(mj%p(f'1 *FpN7Xk3D^tDJ909*Em[t`l<ʼnԟ^#w&8Y,-/*40|'w+ ǾKX80ivbGf0o1!.9DoI"dЭ+~$ "퀾?>@}p[ É1NEpi_,h< ~&Uk mp< JV0D_4syiT*RS'tHf#OquTtNjTfEE\[W(N|Ţي%&uec @RC)" Vg{TdQ585rRLqjQt FTmW%nƍj49++5G?u"eO 4/4&;Qw3XLbMݶm_|{ 1 _›]#4qX 1]]hs5# Fy[ٍP QBhEv(6y$ח8]2EѿӆΉkg%/'ILֻNLhΎQbȥ@%꘰*ALAM 2ʇFhwU`<Ǖ\2xH.Дih Խ 8O\;079ڣEs5F4$hh~P@. FuQc`t\v h[Tɤ-w_CptvU9>CIj4Ug>s.mvS .M ]6LAMw6G6AW(Ae N #- WĖ.y FhoY=l`EP5dZ~c:9wie >FsJX%u_pwrae^^SH*fR=:_ \ \%Z7JNRX}2UG FoQa'h jǨA#6DwGתG hx B(hI/`^C󾀙DC[ 1 *R;>q#C26A_.#ZXeMՆ) EkUr뼐aSrJJ)|_ E?O ;}A=\obPr|a.'~ Fz2 mE _6G{ dE8mMr`ns43FpvBq 5~px/zuI@Ĺ:u<HŦ((zw&e}(E0EW礥 +<lj%H b":12'/CdA㻄@eE\ryuȱBO1Z`sLՉIQDc[R`k|E^baDe`yY33j{4:8ûiL d"o9ȁ{3/_:=D6P4u:Ywl':;#GdIEle]%G +ŠyOwŃ2,F4 1<{-y}<;YA^AQBJpJVa~~߂nxLAME3.100x9DYW0G DY <bp4/:UOѸGE3C;u7*?H3?O ܾ"LAME+j_Da] L9F" HE]?F:9D- c={DNÌ}k՗y}jDuaHࢎĉ̆tō? ֖.if.₮_9weq^S+Z Nc_ LAME3.108xEDu]C઎| cz sef?sD^~ _Yi l-"!c|+LAME3.1007Ew]瀲 , Q@3 M* ZCr ݨLAMEUGxDuYꀎ|V< 6x)tb*mHkD;yQG)!^u j; L|: ѹFdLAMHxDua, Dm5a} QOmAP LSI (! :^aeEά3"G_xw89nC (dE(m[簨 |%kl !aRP4_ܣ-u ɸUx&J(gR.Sq`m[ %-C8-jWG7w`D1a`5#E7v$\{d@i}I8wEAwS5nOh ů8aPDuQ4 |IW(X}M18(7O֘_x5/[-?#o0N=ѻ',C`20\-EwU0kbGBU*8Wx^s,7jhVڮtBY(8z IˊLO,kǘ D;]H+')ۯQLAMJi](& noV3y|+xupyjrAWB?qPE4u[PGړm-LAMGii|նLNn#=f9oG;rNf9||p|]t ]&EHYY〷4ǵTȦ?L~9LAME3.100iz  H1T }0 b2Q*/vp[2/u |$%4tEwW/`|IyߕlMॗWy]\u_C8ǩ Ɠipt>J=jJBmGy b{;7)Q`,MDhC[u uBDh=eHsjph;a-{fܡ-ETw], |í986sZ{"[f F:~p|RX=\FT<=zIDzNv4q% HEwYN`<  B^!Zȶ9P((-З*\ +[NIƛ[ڦ%=t -źqLlRKeGHE a_N |LjU5M/䚤A6K۞q|4Էb^JcF*ѵ;n& hEP_[HjyyH~ Pf~d$+ toԗ^]RNHCVx4 t?T5&Hy|EsU伣蝎jtgymz0>N (@!Ĕ#E}T[8/ LAME3.100EHu[簨ಎǜf( bhY('2\`fʟ׾ ̤j=^J'ADX(&MULAME3.100UUUUDcS<ꠟ jtǔUw8 y!|[O}3h*\"g#sЭqع+JLAME3.100DeUżG + 7H0ݱR5zJ^6v5 K ,4til So>SfαMq0㦪LAME3.100DPaY=F(jnj'(v 0Ӱ^͠aZ!irFaG61bD%=ɀ%oKڨLAME3.100UUUUDaWуڒ"B#M#LAME3.100DaQR`r* xxiR r.&47$<+D b ABsLAME3.100CeMDp *4-Eڟ#GR E9Y}74jv?bkjgvLAME3.100DUQDu| Ք ,a-aů@tV ,ڱ< ι1?K3AVLAME3.100DUUC`j5wvXx1u/ dkv8\.0Ψ[>Q".Y 1LAME3.100UUUUC!Y%dkEe#0ɾD8P ?LAME3.100B!C<* C`, (=Tpq:u(FrOwR`xvfLAME3.100h!C)9( @>_C|DdÿVLAME3.100? AP (0n"=@C:5 ULAME3.100UUUU°!I&D(`DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUlDlm+2*/:eLAME3.100BB E`򤔪N">d#P ϴ9#() LAME3.100J J鐐`T"#Mo=DrLAME3.100!T F*ā 8v2{װS ( p-LAME3.100UUUUF DP1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$d,4{3ZoLAME3.100UUUU!Hd ;(4DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU;> & LAME3.100UUUUC`+`$DUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUDnπ1,e6CjLAME3.100? (`,GW`%a8xLAME3.100B +5 `QSQ LAME3.100UUUUA 7' ,UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUk_ @FtLAME3.100!A1B 4( 'D*zǨ0!LAME3.100H .(`&DJvթn8PPLAME3.100?d ) 'Īo4@a@O@AALAME3.100UUUUhE7 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUURC nq@7ɪLAME3.100=< 0`%H1qA6*ULAME3.100UUUUtA %tUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULrRLAME3.100߀8>@ %`oR@@7NqLAME3.100߀@Bp#P05xS ~LAME3.100UUUUB .PWUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU z AJRLAME3.100߀>%B %``  BUlLAME3.100߃p=h '|b6LAME3.100߁XA ``ʁ?LAME3.100UUUU E@ UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU*lZLAME3.100 B@0#`` +b#ULAME3.100UUUU A@ hUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU lLAME3.100݀A`h !zLAME3.100݀E h`$*_LAME3.100݀ C@  87VLAME3.100ہB `8,LAME3.100UUUUہ<@ (TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100UUUUD (TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100UUUUB0 gUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100UUUUE h@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100UUUUt :@ 'UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUULAME3.100UUUU׃0 <@ 'UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU׃<B hUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 4UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgambas-3.16.3/app/src/gb.wiki/000077500000000000000000000000001411575327000157445ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.directory000066400000000000000000000000411411575327000177440ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/src/gb.wiki/.icon.png000066400000000000000000000102051411575327000174560ustar00rootroot00000000000000PNG  IHDR@@iqLIDATxݛyUW?s}}}%! &Mĸe\F3ꌎFGBUR)KT$&Fj0cT"!Ha3릻i[:U{,< %Hu}̓Uz:XsQY]y:/áq| o\'60߃l&j~e䟱7cLgld"'6Pd5.p懈5[J0pqfec_ˋ{ZªIT,y5_/;~o?gMq69(jkn  kiKGJ)db}`Z^v _Y}~A^v/1Q~p㍭9lVtl֑ Fsl"bs}[Q(+i~:{g1n?U&# a*8g:g ˖.|lIowäڄsi|UYu@ٽY|މ=`X8t. XAm^he+yۜQo<$/ YZ[䚱(Rx@f9Œ(O<| D`g#X 9Y! .4*q f\fV^޺C L}h:Jr Q;a֒J| =wf 0פL #HٙRyD%ӖH_"G l?Nb+Z|˂Ƕ=5xT*HԑKw/6vΨC:ƾ~'0owoO xZJu <6p&H,b Eί+ԐdƌV*>ۅWJō:rn;dCիA'\>ޠ~73~(.èRq)0C >0o~ -Gp{>MmT\!.ڀm#A*4F/ܐM7FtL? n>C͸|8#V<起QzC4޷1u5TmFQBbBkfgbJg'99m3Z¦6l*KVdK#cF\VCTB\J 'R52n#hl:c8~wcS R \CEUY h7Z.DTpv]^MX-͍<ԓlKH~0;(9|s70jeU.߫^2ڨJ0qu[^&P1=Y%bƸr& >;ɺlm $-hAIDM4&y&M!+ gaw C\jCHQV9CQ']Vj`!vHX/YW""%0~xqMI=g!8rE3c]tx)S]EAAwRugpJ!(kJ }bo++Xz8&´:MvS>ENt',=+u$^* u(&Ҥ9¨jA/;bL yzh;G;2[`E^ 'K Vx^Қc%dWBڝx͈BFNK)WX'4eNvΉU৒8&zW%y 7/}OˆVGtolGX\ jRqgbj&_F+BZ{-xsۨp6SWtc Z+O#;j'|n~o'nt/q.qQD2!JsPnI!^Ҍ0KFr_ τm F)ިQE4'PYXQ;K)/-A$aQGu$S1Dpm(chJ[[g?z.;LBٹi3]"B("Z)I!a(W̛:1F0, 8!1˅^J!q2Oblt&R4zBnTR"d*őd yٔF[8Vq/H(%hL >=_; JZM2:E9- q FְeV|ь;/|CAk[T#d Z9{H` %ѷd*1Y2okLQq-^To_K[ N E(ϣ-GZ9y+_xmow~ ZkRLwj<-7X2kD&3#Ԫ7Q}/`z}(,)? +FYȜ&s !zo4-uN_ZL/ܻ+;H]}FuE-1ۯ#Q(63x 7-†#:'Mk  MCMz./'|L<: $7i׎df}!]iJ/9LP8E R=v2&P_ʊ`)Oވ\;E2=R;rME%sC>~IkH眭)/ϯҽIǷn:RQzUo.(d8z#u"vo Jljciݵ EzGx\N&z(Ty2rkw>h=qLGL3,O^"BS)>dmozDi.ZQ|jR&OCe6myկ鄋-ds8tIEKYs>O˱z%c '|0Cb<RYќAraP/@Ll?1%r7 綻yWOMPt:WP[sݬyfunn"e-#Keg83^ۗ~ޤ7\ 2}k'S@<=Wi 5Q=n=9'D\u;d8Dl@&:^A(U"9F"\86@ /  \fNu{oI@q+ {?("\a;Yzv8$*@qW Ta~Z> ꏭ"\Pĵ x+hL/ͭĎlϏ4c| "Lh0=5콗dRZD/`a_hdښh$];QUj: MwPZ9p %_vDG&޸ZM|ǝy/|B$j16EY(㢳w5p6$I ?l %%,PoiIENDB`gambas-3.16.3/app/src/gb.wiki/.lang/000077500000000000000000000000001411575327000167435ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.lang/it.po000066400000000000000000000064431411575327000177260ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.wiki 3.14.90\n" "PO-Revision-Date: 2019-12-03 15:02 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "gb.wiki" msgstr "" #: Admin.module:22 WHeader.webpage:165 msgid "Administration" msgstr "Amministrazione" #: Parser.module:39 msgid "Only in &1 version" msgstr "Solo nella versione &1" #: Parser.module:188 WHeader.webpage:146 msgid "Cancel" msgstr "Annulla" #: Parser.module:473 msgid "Syntax" msgstr "Sintassi" #: Parser.module:481 msgid "Example" msgstr "Esempio" #: Parser.module:500 msgid "See also" msgstr "Guarda anche" #: Parser.module:504 msgid "Errors" msgstr "Errori" #: Parser.module:507 msgid "Description" msgstr "Descrizione" #: Parser.module:507 msgid "Message" msgstr "Messaggio" #: Parser.module:1209 msgid "Contents" msgstr "Contenuto" #: Parser.module:1218 msgid "This documentation page does not exist in version &1." msgstr "Questa pagina di documentazione non esiste nella versione &1." # gb-ignore #: WAccount.webpage:10 WAdminMain.webpage:16 WLogin.webpage:7 msgid "Username" msgstr "" # gb-ignore #: WAccount.webpage:19 WAdminMain.webpage:17 WLogin.webpage:12 msgid "Password" msgstr "" #: WAccount.webpage:28 msgid "Repeat your password" msgstr "Ripeti la password" # gb-ignore #: WAccount.webpage:37 WAdminMain.webpage:19 msgid "Email" msgstr "" #: WAccount.webpage:46 msgid "Update" msgstr "Aggiorna" #: WAdminMain.webpage:4 msgid "User management" msgstr "Gestione utenti" #: WAdminMain.webpage:7 msgid "Create user" msgstr "Crea un utente" #: WAdminMain.webpage:8 msgid "Edit user" msgstr "Modifica utente" #: WAdminMain.webpage:9 msgid "Delete user" msgstr "Elimina utente" #: WAdminMain.webpage:18 msgid "Confirm" msgstr "Conferma" #: WAdminMain.webpage:29 msgid "Name" msgstr "Nome" #: WAdminMain.webpage:63 msgid "Database management" msgstr "Gestione del database" #: WAdminMain.webpage:65 msgid "Download database" msgstr "Scarica il database" #: WAdminMain.webpage:69 msgid "Purge temporary files" msgstr "Elimina i file temporanei" #: WAdminMain.webpage:73 msgid "Clear page cache" msgstr "Cancella la cache della pagina" #: WEdit.webpage:8 msgid "Save" msgstr "Salva" #: WEdit.webpage:9 msgid "Delete" msgstr "Elimina" # gb-ignore #: WHeader.class:18 msgid "Home" msgstr "" #: WHeader.webpage:45 msgid "Gambas Documentation" msgstr "Documentazione di Gambas" #: WHeader.webpage:127 msgid "Previous" msgstr "Precedente" #: WHeader.webpage:136 msgid "Next" msgstr "Successivo" #: WHeader.webpage:148 msgid "Create" msgstr "Crea" #: WHeader.webpage:148 msgid "Edit" msgstr "Modifica" #: WHeader.webpage:152 msgid "Rename" msgstr "Rinomina" #: WHeader.webpage:156 msgid "Undo" msgstr "Annulla" #: WHeader.webpage:164 msgid "Search" msgstr "Ricerca" #: WHeader.webpage:184 msgid "Documentation" msgstr "Documentazione" #: WHeader.webpage:187 msgid "History" msgstr "Storia" #: WHeader.webpage:208 msgid "Warning!" msgstr "Attenzione!" # gb-ignore #: WLogin.webpage:17 msgid "Login" msgstr "" #: Wiki.module:40 msgid "This page is not translated." msgstr "Questa pagina non è tradotta." #: Wiki.module:45 msgid "This page is not up to date." msgstr "Questa pagina non è aggiornata" gambas-3.16.3/app/src/gb.wiki/.lang/nl.po000066400000000000000000000065231411575327000177220ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2014 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.wiki 3.10.90\n" "POT-Creation-Date: 2019-03-31 15:23 UTC\n" "PO-Revision-Date: 2017-08-26 19:26 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 "gb.wiki" msgstr "-" #: Admin.module:22 WHeader.webpage:165 msgid "Administration" msgstr "Administratie" #: Parser.module:39 msgid "Only in &1 version" msgstr "Enkel in &1 versie" #: Parser.module:188 WHeader.webpage:146 msgid "Cancel" msgstr "Annuleren" #: Parser.module:473 msgid "Syntax" msgstr "Syntaxis" #: Parser.module:481 msgid "Example" msgstr "Voorbeeld" #: Parser.module:500 msgid "See also" msgstr "Zie ook" #: Parser.module:504 msgid "Errors" msgstr "Fouten" #: Parser.module:507 msgid "Description" msgstr "Omschrijving" #: Parser.module:507 msgid "Message" msgstr "Boodschap" #: Parser.module:1209 msgid "Contents" msgstr "Inhoud" #: Parser.module:1218 msgid "This documentation page does not exist in version &1." msgstr "Deze documentatie pagina bestaat niet in versie &1." #: WAccount.webpage:10 WAdminMain.webpage:16 WLogin.webpage:7 msgid "Username" msgstr "Gebruikersnaam" #: WAccount.webpage:19 WAdminMain.webpage:17 WLogin.webpage:12 msgid "Password" msgstr "Wachtwoord" #: WAccount.webpage:28 msgid "Repeat your password" msgstr "Herhaal uw paswoord" #: WAccount.webpage:37 WAdminMain.webpage:19 msgid "Email" msgstr "-" #: WAccount.webpage:46 msgid "Update" msgstr "-" #: WAdminMain.webpage:4 msgid "User management" msgstr "Gebruikersbeheer" #: WAdminMain.webpage:7 msgid "Create user" msgstr "Creëer gebruiker" #: WAdminMain.webpage:8 msgid "Edit user" msgstr "Bewerk gebruiker" #: WAdminMain.webpage:9 msgid "Delete user" msgstr "Verwijder gebruiker" #: WAdminMain.webpage:18 msgid "Confirm" msgstr "Bevestigen" #: WAdminMain.webpage:29 msgid "Name" msgstr "Naam" #: WAdminMain.webpage:63 msgid "Database management" msgstr "Database beheer" #: WAdminMain.webpage:65 msgid "Download database" msgstr "Database downloaden" #: WAdminMain.webpage:69 msgid "Purge temporary files" msgstr "Tijdelijke bestanden opschonen" #: WAdminMain.webpage:73 msgid "Clear page cache" msgstr "Pagina cache opschonen" #: WEdit.webpage:8 msgid "Save" msgstr "Opslaan" #: WEdit.webpage:9 msgid "Delete" msgstr "Verwijder" #: WHeader.class:18 msgid "Home" msgstr "-" #: WHeader.webpage:45 msgid "Gambas Documentation" msgstr "Gambas documenatie" #: WHeader.webpage:127 msgid "Previous" msgstr "Vorige" #: WHeader.webpage:136 msgid "Next" msgstr "Volgende" #: WHeader.webpage:148 msgid "Create" msgstr "Creëer" #: WHeader.webpage:148 msgid "Edit" msgstr "Bewerk" #: WHeader.webpage:152 msgid "Rename" msgstr "Hernoem" #: WHeader.webpage:156 msgid "Undo" msgstr "Ongedaan maken" #: WHeader.webpage:164 msgid "Search" msgstr "Zoeken" #: WHeader.webpage:184 msgid "Documentation" msgstr "Documentatie" #: WHeader.webpage:187 msgid "History" msgstr "Geschiedenis" #: WHeader.webpage:208 msgid "Warning!" msgstr "Waarschuwing!" #: WLogin.webpage:17 msgid "Login" msgstr "-" #: Wiki.module:40 msgid "This page is not translated." msgstr "Deze pagina is niet vertaald." #: Wiki.module:45 msgid "This page is not up to date." msgstr "Deze pagina is niet up to date" gambas-3.16.3/app/src/gb.wiki/.lang/pt_BR.po000066400000000000000000000065011411575327000203130ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.wiki 3.14.90\n" "PO-Revision-Date: 2020-06-12 00:11 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "gb.wiki" msgstr "" #: Admin.module:22 WHeader.webpage:165 msgid "Administration" msgstr "Administração" #: Parser.module:39 msgid "Only in &1 version" msgstr "Apenas na versão &1" #: Parser.module:188 WHeader.webpage:146 msgid "Cancel" msgstr "Cancelar" #: Parser.module:473 msgid "Syntax" msgstr "Sintaxe" #: Parser.module:481 msgid "Example" msgstr "Exemplo" #: Parser.module:500 msgid "See also" msgstr "Veja também" #: Parser.module:504 msgid "Errors" msgstr "Erros" #: Parser.module:507 msgid "Message" msgstr "Mensagem" #: Parser.module:507 msgid "Description" msgstr "Descrição" #: Parser.module:1209 msgid "Contents" msgstr "Conteúdo" #: Parser.module:1218 msgid "This documentation page does not exist in version &1." msgstr "Esta página de documentação não existe na versão &1." #: WAccount.webpage:10 WAdminMain.webpage:16 WLogin.webpage:7 msgid "Username" msgstr "Nome de usuário" #: WAccount.webpage:19 WAdminMain.webpage:17 WLogin.webpage:12 msgid "Password" msgstr "Senha" #: WAccount.webpage:28 msgid "Repeat your password" msgstr "Repita sua senha" # gb-ignore #: WAccount.webpage:37 WAdminMain.webpage:19 msgid "Email" msgstr "" #: WAccount.webpage:46 msgid "Update" msgstr "Atualizar" #: WAdminMain.webpage:4 msgid "User management" msgstr "Gerenciamento de usuário" #: WAdminMain.webpage:7 msgid "Create user" msgstr "Criar usuário" #: WAdminMain.webpage:8 msgid "Edit user" msgstr "Editar usuário" #: WAdminMain.webpage:9 msgid "Delete user" msgstr "Excluir usuário" #: WAdminMain.webpage:18 msgid "Confirm" msgstr "Confirmar" #: WAdminMain.webpage:29 msgid "Name" msgstr "Nome" #: WAdminMain.webpage:63 msgid "Database management" msgstr "Gerenciamento do banco de dados" #: WAdminMain.webpage:65 msgid "Download database" msgstr "Baixar banco de dados" #: WAdminMain.webpage:69 msgid "Purge temporary files" msgstr "Limpar arquivos temporários" #: WAdminMain.webpage:73 msgid "Clear page cache" msgstr "Limpar cache de página" #: WEdit.webpage:8 msgid "Save" msgstr "Salvar" #: WEdit.webpage:9 msgid "Delete" msgstr "Excluir" #: WHeader.webpage:45 msgid "Gambas Documentation" msgstr "Documentação do Gambas" #: WHeader.webpage:127 msgid "Previous" msgstr "Anterior" #: WHeader.webpage:136 msgid "Next" msgstr "Próximo" #: WHeader.webpage:148 msgid "Edit" msgstr "Editar" #: WHeader.webpage:148 msgid "Create" msgstr "Criar" #: WHeader.webpage:152 msgid "Rename" msgstr "Renomear" #: WHeader.webpage:156 msgid "Undo" msgstr "Desfazer" #: WHeader.webpage:164 msgid "Search" msgstr "Buscar" #: WHeader.webpage:184 msgid "Documentation" msgstr "Documentação" #: WHeader.webpage:187 msgid "History" msgstr "Histórico" #: WHeader.webpage:208 msgid "Warning!" msgstr "Atenção!" #: WHeader.class:18 msgid "Home" msgstr "Início" # gb-ignore #: WLogin.webpage:17 msgid "Login" msgstr "" #: Wiki.module:40 msgid "This page is not translated." msgstr "Esta página não está traduzida." #: Wiki.module:45 msgid "This page is not up to date." msgstr "Esta página não está atualizada." gambas-3.16.3/app/src/gb.wiki/.lang/ru.po000066400000000000000000000153001411575327000177300ustar00rootroot00000000000000# 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/src/gb.wiki/.project:16 msgid "gb.wiki" msgstr "gb.wiki" #: app/src/gb.wiki/.src/Parser.module:39 msgid "Only in &1 version" msgstr "Только в версии &1" #: app/src/gb.wiki/.src/Parser.module:188 app/src/gb.wiki/.src/Views/WHeader.webpage:8 msgid "Cancel" msgstr "Отмена" #: app/src/gb.wiki/.src/Parser.module:473 msgid "Syntax" msgstr "Синтаксис" #: app/src/gb.wiki/.src/Parser.module:481 msgid "Example" msgstr "Пример" #: app/src/gb.wiki/.src/Parser.module:500 msgid "See also" msgstr "См. также" #: app/src/gb.wiki/.src/Parser.module:504 msgid "Errors" msgstr "Ошибки" #: app/src/gb.wiki/.src/Parser.module:507 msgid "Message" msgstr "Сообщение" #: app/src/gb.wiki/.src/Parser.module:507 msgid "Description" msgstr "Описание" #: app/src/gb.wiki/.src/Parser.module:1209 msgid "Contents" msgstr "Содержания" #: app/src/gb.wiki/.src/Parser.module:1218 msgid "This documentation page does not exist in version &1." msgstr "Эта страница документации не существует в версии &1." #: app/src/gb.wiki/.src/Views/WHeader.webpage:1 msgid "style.css" msgstr "style.css" #: app/src/gb.wiki/.src/Views/WHeader.webpage:2 msgid "Gambas Documentation" msgstr "Документация Gambas" #: app/src/gb.wiki/.src/Views/WHeader.webpage:3 msgid "lang/" msgstr "язык/" #: app/src/gb.wiki/.src/Views/WHeader.webpage:4 app/src/gb.wiki/.src/Views/WHeader.webpage:5 msgid "Previous" msgstr "Назад" #: app/src/gb.wiki/.src/Views/WHeader.webpage:6 app/src/gb.wiki/.src/Views/WHeader.webpage:7 msgid "Next" msgstr "Далее" #: app/src/gb.wiki/.src/Views/WHeader.webpage:9 msgid "Edit" msgstr "Редактировать" #: app/src/gb.wiki/.src/Views/WHeader.webpage:10 msgid "Create" msgstr "Создать" #: app/src/gb.wiki/.src/Views/WHeader.webpage:11 msgid "Rename" msgstr "Переименовать" #: app/src/gb.wiki/.src/Views/WHeader.webpage:12 msgid "Undo" msgstr "Откатить" #: app/src/gb.wiki/.src/Views/WHeader.webpage:13 msgid "Search" msgstr "Поиск" #: app/src/gb.wiki/.src/Views/WHeader.webpage:14 app/src/gb.wiki/.src/Controllers/Admin.module:22 app/src/gb.wiki/.src/Controllers/Admin.module:51 app/src/gb.wiki/.src/Controllers/Admin.module:109 msgid "Administration" msgstr "Администрирование" #: app/src/gb.wiki/.src/Views/WHeader.webpage:15 msgid "Documentation" msgstr "Документация" #: app/src/gb.wiki/.src/Views/WHeader.webpage:16 msgid "History" msgstr "История" #: app/src/gb.wiki/.src/Views/WHeader.webpage:17 msgid "Warning!" msgstr "Предупреждение!" #: app/src/gb.wiki/.src/Views/WAccount.webpage:11 app/src/gb.wiki/.src/Views/WLogin.webpage:8 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:17 msgid "Username" msgstr "Имя пользователя" #: app/src/gb.wiki/.src/Views/WAccount.webpage:20 app/src/gb.wiki/.src/Views/WLogin.webpage:13 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:18 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:39 msgid "Password" msgstr "Пароль" #: app/src/gb.wiki/.src/Views/WAccount.webpage:29 msgid "Repeat your password" msgstr "Повторите ваш пароль" #: app/src/gb.wiki/.src/Views/WAccount.webpage:38 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:20 msgid "Email" msgstr "Электронная почта" #: app/src/gb.wiki/.src/Views/WAccount.webpage:47 msgid "Update" msgstr "Обновить" #: app/src/gb.wiki/.src/Views/WEdit.webpage:9 app/src/gb.wiki/.src/Views/WEdit.webpage:19 msgid "Save" msgstr "Сохранить" #: app/src/gb.wiki/.src/Views/WEdit.webpage:10 app/src/gb.wiki/.src/Views/WEdit.webpage:20 msgid "Delete" msgstr "Удалить" #: app/src/gb.wiki/.src/Views/WHeader.class:18 msgid "Home" msgstr "Дом" #: app/src/gb.wiki/.src/Views/WLogin.webpage:18 msgid "Login" msgstr "Логин" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:5 msgid "User management" msgstr "Управление пользователями" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:8 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:22 msgid "Create user" msgstr "Создать пользователя" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:9 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:42 msgid "Edit user" msgstr "Редактировать пользователя" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:10 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:59 msgid "Delete user" msgstr "Удалить пользователя" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:19 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:40 msgid "Confirm" msgstr "Подтверждение" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:30 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:49 msgid "Name" msgstr "Имя" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:64 msgid "Database management" msgstr "Управление базой данных" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:66 msgid "Download database" msgstr "Скачать базу данных" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:70 msgid "Purge temporary files" msgstr "Очистить временные файлы" #: app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage:74 msgid "Clear page cache" msgstr "Очистить кэш страницы" #: app/src/gb.wiki/.src/Controllers/Wiki.module:40 msgid "This page is not translated." msgstr "Эта страница не переведена." #: app/src/gb.wiki/.src/Controllers/Wiki.module:45 msgid "This page is not up to date." msgstr "Эта страница не актуальна." gambas-3.16.3/app/src/gb.wiki/.lang/zh.po000066400000000000000000000063071411575327000177320ustar00rootroot00000000000000#, 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 "gb.wiki" msgstr "-" #: Admin.module:22 WHeader.webpage:165 msgid "Administration" msgstr "管理员" #: Parser.module:39 msgid "Only in &1 version" msgstr "仅存在于&1版中" #: Parser.module:188 WHeader.webpage:146 msgid "Cancel" msgstr "取消" #: Parser.module:473 msgid "Syntax" msgstr "语法" #: Parser.module:481 msgid "Example" msgstr "示例" #: Parser.module:500 msgid "See also" msgstr "参见" #: Parser.module:504 msgid "Errors" msgstr "错误" #: Parser.module:507 msgid "Description" msgstr "描述" #: Parser.module:507 msgid "Message" msgstr "消息" #: Parser.module:1209 msgid "Contents" msgstr "目录" #: Parser.module:1218 msgid "This documentation page does not exist in version &1." msgstr "在&1版中该文档页不存在。" #: WAccount.webpage:10 WAdminMain.webpage:16 WLogin.webpage:7 msgid "Username" msgstr "用户名" #: WAccount.webpage:19 WAdminMain.webpage:17 WLogin.webpage:12 msgid "Password" msgstr "口令" #: WAccount.webpage:28 msgid "Repeat your password" msgstr "重复口令" #: WAccount.webpage:37 WAdminMain.webpage:19 msgid "Email" msgstr "邮箱" #: WAccount.webpage:46 msgid "Update" msgstr "更新" #: WAdminMain.webpage:4 msgid "User management" msgstr "用户管理" #: WAdminMain.webpage:7 msgid "Create user" msgstr "创建用户" #: WAdminMain.webpage:8 msgid "Edit user" msgstr "编辑用户" #: WAdminMain.webpage:9 msgid "Delete user" msgstr "删除用户" #: WAdminMain.webpage:18 msgid "Confirm" msgstr "确认" #: WAdminMain.webpage:29 msgid "Name" msgstr "名称" #: WAdminMain.webpage:63 msgid "Database management" msgstr "数据库管理" #: WAdminMain.webpage:65 msgid "Download database" msgstr "下载数据库" #: WAdminMain.webpage:69 msgid "Purge temporary files" msgstr "清除临时文件" #: WAdminMain.webpage:73 msgid "Clear page cache" msgstr "清除页面缓存" #: WEdit.webpage:8 msgid "Save" msgstr "保存" #: WEdit.webpage:9 msgid "Delete" msgstr "删除" #: WHeader.class:18 msgid "Home" msgstr "主页" #: WHeader.webpage:45 msgid "Gambas Documentation" msgstr "Gambas文档" #: WHeader.webpage:127 msgid "Previous" msgstr "前一个" #: WHeader.webpage:136 msgid "Next" msgstr "后一个" #: WHeader.webpage:148 msgid "Create" msgstr "创建" #: WHeader.webpage:148 msgid "Edit" msgstr "编辑" #: WHeader.webpage:152 msgid "Rename" msgstr "重命名" #: WHeader.webpage:156 msgid "Undo" msgstr "撤销" #: WHeader.webpage:164 msgid "Search" msgstr "搜索" #: WHeader.webpage:184 msgid "Documentation" msgstr "文档" #: WHeader.webpage:187 msgid "History" msgstr "历史" #: WHeader.webpage:208 msgid "Warning!" msgstr "警告!" #: WLogin.webpage:17 msgid "Login" msgstr "登录" #: Wiki.module:40 msgid "This page is not translated." msgstr "该页面未翻译。" #: Wiki.module:45 msgid "This page is not up to date." msgstr "该页面非最新。" gambas-3.16.3/app/src/gb.wiki/.project000066400000000000000000000004331411575327000174130ustar00rootroot00000000000000# Gambas Project File 3.0 Title=gb.wiki Startup=Main UseHttpServer=1 Icon=help.png Version=3.14.90 VersionFile=1 Component=gb.db Component=gb.web Authors="sebikul " Environment="HTTP_HOST=localhost\nPATH_INFO=/help" TabSize=2 Translate=1 Language=en_US Packager=1 gambas-3.16.3/app/src/gb.wiki/.src/000077500000000000000000000000001411575327000166115ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.src/Actions.module000066400000000000000000000055631411575327000214310ustar00rootroot00000000000000' Gambas module file Property Read Refresh As Boolean Property Read Undo As Boolean Property Read View As Boolean Property Read Show As Boolean Property Read Get As Boolean Property Read OnlineHelp As Boolean Property Read NoTitle As Boolean Property Read NoImage As Boolean Property Read NoCache As Boolean Property Read Edit As Boolean Property Read Rename As Boolean Property Read Help As Boolean Property Read Image As Boolean Property Read History As Boolean Property Parsed As Boolean Public $bParsed As Boolean Private $bRefresh As Boolean Private $bUndo As Boolean Private $bView As Boolean Private $bShow As Boolean Private $bGet As Boolean Private $bOnlineHelp As Boolean Private $bNoTitle As Boolean Private $bNoImage As Boolean Private $bNoCache As Boolean Private $bEdit As Boolean Private $bRename As Boolean Private $bHelp As Boolean Private $bHistory As Boolean Public Sub _init() Dim sField As String For Each sField In Request.Get.Fields Select Case sField Case "refresh" $bRefresh = True Case "undo" $bUndo = True Case "view" $bView = True $bShow = True Case "show" $bShow = True Case "wiki" $bGet = True Case "help" $bView = True $bShow = True $bOnlineHelp = True Case "notitle" $bNoTitle = True Case "noimage" $bNoImage = True Case "nocache" $bNoCache = True Case "edit" $bEdit = True Case "rename" $bRename = True Case "hist" $bHistory = True End Select Next If Not $bShow Then $bShow = Main.IsWget Or Request.Get.Exist("show") $bHelp = $bShow Or Request.Get.Exist("help") Or Request.Path Like "/help*" End Private Function Refresh_Read() As Boolean Return $bRefresh End Private Function Undo_Read() As Boolean Return $bUndo End Private Function View_Read() As Boolean Return $bView End Private Function Show_Read() As Boolean Return $bShow End Private Function Get_Read() As Boolean Return $bGet End Private Function OnlineHelp_Read() As Boolean Return $bOnlineHelp End Private Function NoTitle_Read() As Boolean Return $bNoTitle End Private Function NoImage_Read() As Boolean Return $bNoImage End Private Function NoCache_Read() As Boolean Return $bNoCache End Private Function Edit_Read() As Boolean Return $bEdit End Private Function Help_Read() As Boolean Return Request.Path Begins "/help" End Private Function Image_Read() As Boolean Return (Left$(File.Name(Request.Path)) = ":") End Private Function History_Read() As Boolean Return $bHistory End Public Sub Debug() 'Print WWiki.oPage.Content End Private Function Rename_Read() As Boolean Return $bRename End Private Function Parsed_Read() As Boolean Return $bParsed End Private Sub Parsed_Write(Value As Boolean) $bParsed = Value End gambas-3.16.3/app/src/gb.wiki/.src/Controllers/000077500000000000000000000000001411575327000211175ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.src/Controllers/Admin.module000066400000000000000000000041651411575327000233640ustar00rootroot00000000000000' Gambas module file Public Sub Main() If Not Users.Current.IsAdmin Then UserManage.Login() Return Endif If Path.Components.Count > 1 Then Select Case Path.Components[1] Case "create" usrCreate() Case "delete" usrDelete() End Select Else WHeader.Title = ("Administration") WAdminMain.Render() Endif End Private Sub usrDelete() If Request.Method <> "POST" Then Main.ThrowError("Invalid method") Endif If Not Request.Post["sUsername"] Then Error.Raise("No username!") Endif If Not Users.Find(Request.Post["sUsername"]) Then Error.Raise("Username already in use!") Endif Users.Delete(Request.Post["sUsername"]) Response.Redirect("/admin") Quit Catch WHeader.Title = ("Administration") WHeader.Warning = Error.Text WAdminMain.Render() End Private Sub usrCreate() Dim sField As String Dim sRequired As String[] = ["sName", "sPassword", "sPasswordAgain", "sEmail"] Dim uUser As _User If Request.Method <> "POST" Then Main.ThrowError("Invalid method") Endif For Each sField In sRequired If Not Request.Post[sField] Then Error.Raise("Missing: " & sField) Endif Next If Request.Post["sPassword"] <> Request.Post["sPasswordAgain"] Then Error.Raise("Passwords do not match") Endif If Len(Request.Post["sPassword"]) < 6 Or Not IsAscii(Request.Post["sPassword"]) Then Error.Raise("Passwords invalid. Too short or contains invalid characters.") Endif If Len(Request.Post["sName"]) < 6 Or Not IsAscii(Request.Post["sName"]) Then Error.Raise("Username invalid. Too short or contains invalid characters.") Endif If Not Request.Post["sEmail"] Then Error.Raise("Email not set.") Endif uUser = Users.Create(Request.Post["sName"]) If Not uUser Then Error.Raise("Username already in use!") Endif uUser.Username = Request.Post["sName"] uUser.Password = Request.Post["sPassword"] uUser.Email = Request.Post["sEmail"] uUser.Update() Response.Redirect("/admin") Quit Catch WHeader.Title = ("Administration") WHeader.Warning = Error.Text WAdminMain.Render() End gambas-3.16.3/app/src/gb.wiki/.src/Controllers/Image.module000066400000000000000000000022171411575327000233520ustar00rootroot00000000000000' Gambas module file Public Sub Send() Dim rPage As Result Dim rPageDef As Result Dim sPath As String sPath = Path.Page rPage = DB.Find(DBScheme.TABLE_PAGES, DBScheme.PAGE_PATH & "= &1 AND " & DBScheme.PAGE_LANG & "= &2", sPath, Main.Language) rPageDef = DB.Find(DBScheme.TABLE_PAGES, DBScheme.PAGE_PATH & "= &1 AND " & DBScheme.PAGE_LANG & "= &2", sPath, Main.DEFAULT_LANG) If rPageDef.Available Then If Not rPage.Available Then ' IF sPath = $sPath THEN ' sWarn = ("This page is not translated.") ' $bNew = TRUE ' ENDIF rPage = rPageDef Else ' IF rPageDef!dDate > rPage!dDate THEN ' IF sPath = $sPath THEN sWarn = ("This page is not up to date.") ' ENDIF Endif Endif 'DEBUG DB.Tables["page"].Fields["sdata"].Type 'PRINT #File.Err, rPage.Fields["sData"].Type; "/"; Len(rPage["sData"].Data) 'DEBUG rPage!sData.Length sPath = Temp() File.Save(sPath, rPage["sData"].Data) Response.AddHeader("Last-Modified", CGI.FormatDate(rPage!dDate)) Response.SendFile(sPath, Mid(rPage!sHTML, InStr(rPage!sHTML, " ") + 1)) Quit End gambas-3.16.3/app/src/gb.wiki/.src/Controllers/UserManage.module000066400000000000000000000036311411575327000243600ustar00rootroot00000000000000' Gambas module file Public Sub Login() If Request.Method = "POST" Then Users.Login(Request.Post["sUsername"], Request.Post["sPassword"]) If Users.Current.Type > Users.USER_GUEST Then Response.Redirect("/help") Quit Endif Endif WHeader.Title = "User Login" WLogin.Render() End Public Sub Logout() Users.Logout() Response.Redirect("/help") Quit End Public Sub Account() WHeader.Title = "Account Managment" If Request.Method = "POST" Then usrEdit() Return Endif WAccount.Render() End Public Sub usrEdit() Dim sField As String Dim sRequired As String[] = ["sEmail"] Dim uUser As _User If Request.Method <> "POST" Then Main.ThrowError("Invalid method") Endif If Request.Post["sPassword"] Then sRequired.Add("sPassword") sRequired.Add("sPasswordAgain") Endif For Each sField In sRequired If Not Request.Post[sField] Then Error.Raise("Missing: " & sField) Endif Next If Request.Post["sPassword"] Then If Request.Post["sPassword"] <> Request.Post["sPasswordAgain"] Then Error.Raise("Passwords do not match") Endif If Len(Request.Post["sPassword"]) < 6 Or Not IsAscii(Request.Post["sPassword"]) Then Error.Raise("Passwords invalid. Too short or contains invalid characters.") Endif Endif If Not Request.Post["sEmail"] Then Error.Raise("Email not set.") Endif If Request.Post["sUsername"] <> Session["username"] Then 'TODO: Main.ThrowError("Hacking attempt, the admin has been notified!") Endif uUser = Users.Get(Session["username"], False) If Not uUser Then Main.ThrowError("Username does not exist!") Endif If Request.Post["sPassword"] Then uUser.Password = Request.Post["sPassword"] Endif uUser.Email = Request.Post["sEmail"] uUser.Update() Response.Redirect("/account") Quit Catch WHeader.Warning = Error.Text WAccount.Render() End gambas-3.16.3/app/src/gb.wiki/.src/Controllers/Wiki.module000066400000000000000000000021131411575327000232260ustar00rootroot00000000000000' Gambas module file Public Sub Page() If Actions.Edit Then WHeader.Title = Pages.Current.Title WEdit.Render() Else If Actions.Get Get() Else WHeader.Title = Pages.Current.Title WWiki.Render() 'Print Parser.Encode(Pages.Current.Content) Endif End Public Sub Get() Dim rPage As Result Dim rPageDef As Result Dim sWarn As String Dim sPath As String rPage = DB.Find("page", "sPath = &1 AND sLang = &2", Path.Page, Main.Language) rPageDef = DB.Find("page", "sPath = &1 AND sLang = &2", Path.Page, Main.DEFAULT_LANG) If rPageDef.Available Then If Not rPage.Available Then If sPath = Path.Page Then sWarn = ("This page is not translated.") Endif rPage = rPageDef Else If rPageDef!dDate > rPage!dDate Then If sPath = Path.Page Then sWarn = ("This page is not up to date.") Endif Endif Endif If Not rPage.Available Then Return Endif Response.Buffered = True Response.ContentType = "text/plain;charset=UTF-8" Response.Begin() Print rPage!sDesc Response.End End gambas-3.16.3/app/src/gb.wiki/.src/DBScheme.class000066400000000000000000000012701411575327000212520ustar00rootroot00000000000000' Gambas class file Create Static Public Const TABLE_USERS As String = "users" Public Const TABLE_PAGES As String = "page" Public Const PAGE_PATH As String = "sPath" Public Const PAGE_LANG As String = "sLang" Public Const PAGE_DATE As String = "dDate" Public Const PAGE_TITLE As String = "sTitle" Public Const PAGE_CONTENT As String = "sDesc" Public Const PAGE_DATA As String = "sData" Public Const PAGE_HTML As String = "sHTML" Public Const PAGE_USER As String = "sUser" Public Const USER_ID As String = "id" Public Const USER_USERNAME As String = "sUser" Public Const USER_PASSWORD As String = "sPass" Public Const USER_EMAIL As String = "sEmail" Public Const USER_TYPE As String = "iType" gambas-3.16.3/app/src/gb.wiki/.src/Main.module000066400000000000000000000124461411575327000207130ustar00rootroot00000000000000' Gambas module file Public Const DEFAULT_LANG As String = "en" Public Const DEFAULT_VERSION As Integer = 3 Property Language As String Property Version As Integer Property Read IsWget As Boolean Public hConn As New Connection Public Langs As String[] = [DEFAULT_LANG, "fr", "de", "es", "it", "nl", "pl", "pt", "pt_BR", "mk", "sq", "ca", "hu", "cs", "tr", "ar", "fa", "id", "vi", "ko", "ja", "ru", "zh", "zh_TW", "eo"] Private $sLanguage As String Private $iVersion As Integer Public Sub Main() ' Request.Debug = True 'Session.Unique = True 'Response.Buffered = True Session.CookiePath = "/" Session.Load() 'WHeader.Render() If Request.Path = "/favicon.ico" Then Response.SendFile(".icon.png") Return Endif SetLang() SetVer() 'Session["username"] = "sebikul" 'Response.Begin() OpenDatabase() 'db.Debug = True 'Users.Create("asd1", "asd1", "asd2") ' ' Users.Edit("asd1", "jajajaj", "holaa") Select Case Path.Section Case Path.PATH_ADMIN Response.ContentType = "text/html;charset=UTF-8" Admin.Main() ' Print "DEBUG: Admin.Main()
      " Case Path.PATH_WIKI Response.ContentType = "text/html;charset=UTF-8" Wiki.Page() ' Print "DEBUG: Wiki.Page()
      " Case Path.PATH_ACCOUNT Response.ContentType = "text/html;charset=UTF-8" UserManage.Account() ' Print "DEBUG: UserManage.Account()
      " Case Path.PATH_LOGIN Response.ContentType = "text/html;charset=UTF-8" UserManage.Login() ' Print "DEBUG: UserManage.Login()
      " Case Path.PATH_LOGOUT Response.ContentType = "text/html;charset=UTF-8" UserManage.Logout() ' Print "DEBUG: UserManage.Logout()
      " Case Path.PATH_IMAGE Image.Send() ' Print "DEBUG: Image.Send()
      " Case Path.PATH_404, Path.PATH_MAIN Response.ContentType = "text/html;charset=UTF-8" Response.Redirect("/help") Return End Select Debug() ' Response.End() ' Session.Save() Catch Response.ContentType = "text/html;charset=UTF-8" Print "

      Unexpected error while displaying this page.

      " Print "
      "; Error.Text, Error.Code
        Print ""; Error.Where; ""
        Print "

      "; Error.Backtrace.Join("
      "); "

      " Debug() Print "
      " End Private Sub OpenDatabase() hConn.Type = "mysql" hConn.Login = "gbwiki" hConn.Password = "" hConn.Name = "gambas" Try hConn.Open() If Error Then CGI.Error(Error.Text) Endif End ''TODO: Implement Public Function PrintTitle(sTitle As String) As String Return sTitle End Private Function Language_Read() As String Return $sLanguage End Private Sub Language_Write(Value As String) If Not Langs.Exist(Value) Then Return $sLanguage = Value End Public Function EncodeLink(sLink As String) As String Return Replace$(sLink, "&", "&") End Public Function GetImage(sImg As String, Optional sAdd As String, Optional sAlign As String = "center") As String If sAdd Then sAdd = " " & sAdd Return "" End Private Function Version_Read() As Integer Return $iVersion End Private Sub Version_Write(Value As Integer) If Value < 2 Or Value > 3 Then Return $iVersion = CInt(Value) End Private Function IsWget_Read() As Boolean Return Application.Env["HTTP_USER_AGENT"] Like "WGet*" End Private Sub SetLang() If Request.Get.Exist("lang") Then Session["lang"] = Request.Get["lang"] Response.Redirect(Path.Path) Quit Endif If Session["lang"] Then Me.Language = Session["lang"] Else Me.Language = DEFAULT_LANG Endif 'System.Language = Me.Language End Private Sub SetVer() If Request.Get.Exist("ver") Then Session["ver"] = Request.Get["ver"] Response.Redirect(Path.Path) Quit Endif If Session["ver"] Then Me.Version = Session["ver"] Else Me.Version = DEFAULT_VERSION Endif End Public Sub ThrowError(sError As String) 'TODO: Set rendering as buffered 'TODO: Clear buffer if executed and print Me.Error CGI.Error(sError) ' Print Me.Error End Private Sub Debug() Print "
      " Print "
      " Print "Application.Root: " & Application.Root & "
      " Print "Application.Host: " & Application.Host & "
      " Print "Application.Request: " & Application.Request & "
      " Print "Request.Path: " & Request.Path & "
      " Print "Path.Page: " & Path.Page & "
      " Print "Language: " & Me.Language & "

      " Print "Users.Current.Username: " & Users.Current.Username & "
      " Print "Users.Current.IsAdmin: " & Users.Current.IsAdmin & "
      " Print "Users.Current.Type: " & Users.Current.Type & "

      " Print "Session.Username: " & Session["username"] & "
      " Print "Session.uid: " & Session["uid"] & "

      " Print "Actions.Parsed: " & Actions.Parsed & "
      " Print "Actions.Show: " & Actions.Show & "
      " Print "Actions.View: " & Actions.View & "
      " Print "Actions.Edit: " & Actions.Edit & "
      " Print "Actions.Help: " & Actions.Help & "
      " Print "Actions.OnlineHelp: " & Actions.OnlineHelp & "
      " Print "Actions.Image: " & Actions.Image & "
      " Print "Path.Section: " & Path.Section & "

      " Print "Wget: " & Main.IsWget & "
      " End gambas-3.16.3/app/src/gb.wiki/.src/Models/000077500000000000000000000000001411575327000200345ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.src/Models/Comments.module000066400000000000000000000000261411575327000230260ustar00rootroot00000000000000' Gambas module file gambas-3.16.3/app/src/gb.wiki/.src/Models/Pages.module000066400000000000000000000021131411575327000222770ustar00rootroot00000000000000' Gambas module file Property Read Current As _Page Private $oPage As _Page Public Sub LoadCurrent() If $oPage Then Return $oPage = Get(Path.Page) ' If Not $oPage Then ' $oPage = New _Page ' Endif End Public Function Get(sPath As String, Optional bReadOnly As Boolean = True, Optional sLang As String) As _Page Dim rPage As Result Dim oTemp As _Page rPage = Find(sPath, bReadOnly, sLang) If Not rPage Then Return oTemp = New _Page(rPage, bReadOnly) Return oTemp End Public Function Find(sPath As String, Optional bReadOnly As Boolean = True, Optional sLang As String) As Result Dim rPage As Result If Not sLang Then sLang = Main.Language If bReadOnly Then rPage = DB.Find(DBScheme.TABLE_PAGES, DBScheme.PAGE_PATH & " = &1 AND " & DBScheme.PAGE_LANG & "= &2", sPath, sLang) Else rPage = DB.Edit(DBScheme.TABLE_PAGES, DBScheme.PAGE_PATH & " = &1 AND " & DBScheme.PAGE_LANG & "= &2", sPath, sLang) Endif If rPage.Available Then Return rPage Endif End Private Function Current_Read() As _Page LoadCurrent() Return $oPage End gambas-3.16.3/app/src/gb.wiki/.src/Models/Users.module000066400000000000000000000056331411575327000223530ustar00rootroot00000000000000' Gambas module file Public Const USER_GUEST As Integer = 0 Public Const USER_WRITER As Integer = 1 Public Const USER_ADMIN As Integer = 2 Property Read Current As _User Private $oUser As _User Public Function _get(sUsername As String) As _User Return Get(sUsername) End Public Sub LoadCurrent() If $oUser Then Return If Not Session["username"] Then $oUser = MakeGuest() Else $oUser = Get(Session["username"]) Endif End Public Function Get(sUsername As String, Optional bReadOnly As Boolean = True) As _User Dim rUser As Result Dim oTemp As _User rUser = Find(sUsername, bReadOnly) If Not rUser Then Return oTemp = New _User(rUser, bReadOnly) Return oTemp End Public Function Find(sValue As String, Optional bReadOnly As Boolean = True, Optional bEmail As Boolean) As Result Dim rUser As Result If bReadOnly Then rUser = DB.Find(DBScheme.TABLE_USERS, IIf(bEmail, DBScheme.USER_EMAIL, DBScheme.USER_USERNAME) & "= &1", sValue) Else rUser = DB.Edit(DBScheme.TABLE_USERS, IIf(bEmail, DBScheme.USER_EMAIL, DBScheme.USER_USERNAME) & "= &1", sValue) Endif If rUser.Available Then Return rUser Endif End Public Sub Login(sUsername As String, sPassword As String) Dim rUser As Result 'If Me.Current Then Return rUser = DB.Find(DBScheme.TABLE_USERS, DBScheme.USER_USERNAME & "= &1 AND " & DBScheme.USER_PASSWORD & "= &2", sUsername, sPassword) If Not rUser.Available Then Return Session["uid"] = rUser[DBScheme.USER_ID] Session["username"] = rUser[DBScheme.USER_USERNAME] Session["expiration"] = DateAdd(Now, 1, gb.Day) $oUser = New _User(rUser) End Public Function Create(sUsername As String) As _User Dim rUser As Result Dim oTemp As _User If Find(sUsername) Then Return rUser = Main.hConn.Create(DBScheme.TABLE_USERS) oTemp = New _User(rUser, False) Return oTemp End Public Sub Delete(sUsername As String) Dim rUser As Result rUser = Find(sUsername, False) If Not rUser Then Return rUser.Delete() End Public Sub Logout() Session.Abandon() End ' Public Function Edit(sUsername As String, sPassword As String, sEmail As String) As Integer ' ' Dim rUser As Result ' ' rUser = Main.hConn.Edit(DBScheme.TABLE_USERS, "&1 = &2", DBScheme.USER_USERNAME, sUsername) ' ' rUser[DBScheme.USER_PASSWORD] = sPassword ' rUser[DBScheme.USER_EMAIL] = sEmail ' ' rUser.Update() ' ' Return rUser[DBScheme.USER_ID] ' ' End Public Function List() As String[] Dim rUser As Result Dim sUsers As New String[] rUser = DB.Exec(Subst("SELECT &1 FROM &2 ORDER BY &1 DESC", DBScheme.USER_USERNAME, DBScheme.TABLE_USERS)) For Each rUser If rUser.Available Then sUsers.Add(rUser[DBScheme.USER_USERNAME]) Next Return sUsers End Private Function MakeGuest() As _User Dim oTemp As _User oTemp = New _User(Null, Null, True) Return oTemp End Private Function Current_Read() As _User LoadCurrent() Return $oUser End gambas-3.16.3/app/src/gb.wiki/.src/Models/_Page.class000066400000000000000000000052231411575327000221000ustar00rootroot00000000000000' Gambas class file Property Title As String Property Language As String Property Path As String Property {Date} As Date Property Content As String Property HTML As String Property User As String Property Read Type As Integer Private $rPage As Result Private $bReadOnly As Boolean Public Sub _new(rTemp As Result, Optional bReadOnly As Boolean = True) $rPage = rTemp $bReadOnly = bReadOnly End Private Function Title_Read() As String If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_TITLE] End Private Function Language_Read() As String If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_LANGE] End Private Function Path_Read() As String If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_PATH] End Private Function Date_Read() As Date If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_DATE] End Private Function Content_Read() As String If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_CONTENT] End Private Function HTML_Read() As String If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_HTML] End Private Function User_Read() As String If Not $rPage.Available Then Return Return $rPage[DBScheme.PAGE_USER] End Private Function Type_Read() As Integer End Private Sub Title_Write(Value As String) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return $rPage[DBScheme.PAGE_TITLE] = Value End Private Sub Language_Write(Value As String) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return If Not Main.Langs.Exist(Value) Then Return $rPage[DBScheme.PAGE_LANG] = Value End Private Sub Path_Write(Value As String) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return $rPage[DBScheme.PAGE_PATH] = Value End Private Sub Date_Write(Value As Date) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return $rPage[DBScheme.PAGE_DATE] = Value End Private Sub Content_Write(Value As String) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return $rPage[DBScheme.PAGE_CONTENT] = Value End Private Sub HTML_Write(Value As String) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return $rPage[DBScheme.PAGE_HTML] = Value End Private Sub User_Write(Value As String) If $bReadOnly Then IsReadonly() If Not $rPage.Available Then Return $rPage[DBScheme.PAGE_USER] = Value End Public Sub Update() $rPage.Update() End Private Sub IsReadonly() Dim sText As String sText = "Trying to modify a readonly page instance!

      " sText &= System.Backtrace.Join("
      ") Main.ThrowError(sText) End gambas-3.16.3/app/src/gb.wiki/.src/Models/_User.class000066400000000000000000000053071411575327000221450ustar00rootroot00000000000000' Gambas class file Property Read IsAdmin As Boolean Property Read IsGuest As Boolean Property Username As String Property Password As String Property Email As String Property Type As Integer Private $rUser As Result Private $bReadOnly As Boolean Private $bIsGuest As Boolean Public Sub _new(Optional rTemp As Result, Optional bReadOnly As Boolean = True, Optional bIsGuest As Boolean = False) If rTemp Then $rUser = rTemp $bReadOnly = bReadOnly $bIsGuest = bIsGuest End Private Function Type_Read() As Integer If $bIsGuest Then Return Users.USER_GUEST If Not $rUser Then Return If Not $rUser.Available Then Return Return $rUser[DBScheme.USER_TYPE] End Private Sub Type_Write(Value As Integer) If $bReadOnly Or $bIsGuest Then IsReadonly() If Value < 1 Or Value > 3 Then Return If Not $rUser Then Return If Not $rUser.Available Then Return $rUser[DBScheme.USER_TYPE] = Value End Private Function Username_Read() As String 'If $bIsGuest Then Return "guest" If Not $rUser Then Return If Not $rUser.Available Then Return Return $rUser[DBScheme.USER_USERNAME] End Private Sub Username_Write(Value As String) If $bReadOnly Or $bIsGuest Then IsReadonly() If Not $rUser Then Return If Not $rUser.Available Then Return If Not Users.Find(Value) Then $rUser[DBScheme.USER_USERNAME] = Value Endif End Private Function Password_Read() As String If Not $rUser Then Return If Not $rUser.Available Or $bIsGuest Then Return Return $rUser[DBScheme.USER_PASSWORD] End Private Sub Password_Write(Value As String) If $bReadOnly Or $bIsGuest Then IsReadonly() If Not $rUser Then Return If Not $rUser.Available Then Return $rUser[DBScheme.USER_PASSWORD] = Value End Private Function Email_Read() As String If Not $rUser Then Return If Not $rUser.Available Or $bIsGuest Then Return Return $rUser[DBScheme.USER_EMAIL] End Private Sub Email_Write(Value As String) If $bReadOnly Or $bIsGuest Then IsReadonly() If Not $rUser Then Return If Not $rUser.Available Then Return If Not Users.Find(Value,, True) Then $rUser[DBScheme.USER_EMAIL] = Value Endif End Private Function IsAdmin_Read() As Boolean Return Me.Type = Users.USER_ADMIN End Public Sub Reload() If $bIsGuest Then Return $rUser = Users.Find(Me.Username, $bReadOnly) End Public Sub Update() If $bReadOnly Or $bIsGuest Then IsReadonly() If Not $rUser Then Return $rUser.Update() End Private Function IsGuest_Read() As Boolean Return Me.Type = Users.USER_GUEST End Private Sub IsReadonly() Dim sText As String sText = "Trying to modify a readonly or guest user instance!

      " sText &= System.Backtrace.Join("
      ") Main.ThrowError(sText) End gambas-3.16.3/app/src/gb.wiki/.src/Parser.module000066400000000000000000000757651411575327000213000ustar00rootroot00000000000000' Gambas module file Private Const LETTER_DIGIT As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" Private $sVersion As String[] Private $iIgnore As Integer 'Private $sLangVerSuff As String Private $sPath As String Private $bExample As Boolean Private $cGotSpecial As Collection 'Private $hComp As CComponent 'Private $hClass As CClassInfo 'Private $hSym As CSymbolInfo Private $sSection As String Private $aSection As String[] Private $bVerbatim As Boolean Private $bCode As Boolean Private $iNoWiki As Integer Private $sRes As String Private $sList As String Private $iPos As Integer Private $bWhite As Boolean Private $cCompRedirect As Collection Private $bSyntax As Boolean Private $sTitle As String Private $iNoEncode As Integer Private $sOnlyVersion As String Private Sub GetOnlyIn(sVer As String) As String Return "
      " & Subst(("Only in &1 version"), Html(sVer)) & "
      \n" End Private Sub UCaseTitle(sTitle As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String Dim bLastLetter As Boolean If String.UCase(String.Left(sTitle)) = String.Left(sTitle) Then Return sTitle If Main.Language <> "en" Then Return String.UCase(String.Left(sTitle)) & String.Mid$(sTitle, 2) For iInd = 1 To String.Len(sTitle) sCar = String.Mid$(sTitle, iInd, 1) If String.UCase(sCar) <> String.LCase(sCar) Then If Not bLastLetter Then sCar = String.UCase(sCar) Endif bLastLetter = True Else If sCar = "(" Then bLastLetter = True Else bLastLetter = False Endif Endif sRes &= sCar Next Return sRes End Private Function GetRealPath(sPath As String) As String Dim rPage As Result Dim iInd As Integer For iInd = 1 To 10 rPage = DB.Find("page", "sPath = &1 AND sLang = &2", sPath, Main.DEFAULT_LANG) If rPage.Available And If Left$(rPage!sTitle) = "@" Then sPath = GetAbsolutePath(sPath, Mid$(rPage!sTitle, 2)) Else Break Endif Next Return sPath End Private Function GetAbsolutePath(sRoot As String, sPath As String) As String Dim sElt As String Dim sRes As String If Left(sPath, 2) <> "./" And Left(sPath, 3) <> "../" Then If Left(sPath) <> "/" Then sPath = "/" & sPath Return sPath Endif sRes = sRoot If Right(sRes) = "/" And Len(sRes) > 1 Then sRes = Left(sRes, -1) For Each sElt In Split(sPath, "/") If sElt = "." Then Continue If sElt = ".." Then 'IF sRes = sRoot THEN CONTINUE sRes = File.Dir(sRes) Continue Endif sRes &/= sElt Next Return sRes End Private Sub EncodeLink(sLink As String) As String Return Replace$(sLink, "&", "&") End Private Sub GetLinkClass(sClass As String, bLTR As Boolean, sTitle As String) As String If System.RightToLeft And If Not bLTR And If IsAscii(sTitle) Then sClass &= "lang=\"en\" " bLTR = True Endif If bLTR Then sClass &= "dir=\"ltr\" " Return sClass End Private Function GetLink(sPath As String, Optional sMyTitle As String, Optional bNoImage As Boolean, Optional sClass As String, Optional bLTR As Boolean) As String Dim sTitle As String Dim sRelPath As String Dim sSuff As String Dim iPos As Integer Dim sMoreSuff As String If sClass Then sClass = "class=\"" & sClass & "\" " If sPath Like "http://*" Or If sPath Like "https://*" Or If sPath Like "mailto:*" Then If Not sMyTitle Then sMyTitle = sPath Return "
      " & Html$(sMyTitle) & "" Else iPos = RInStr(sPath, "?") If iPos Then sMoreSuff = Mid$(sPath, iPos + 1) sPath = Left(sPath, iPos - 1) Endif If sPath = "/" Then Else If sPath Like (Replace($sPath, "[", "[[]") &/ "*") Then sRelPath = "." &/ Mid$(sPath, Len($sPath) + 1) Else sRelPath = sPath Endif sPath = LCase(GetAbsolutePath(GetRealPath($sPath), sRelPath)) Endif sTitle = GetTitle(sPath) ' If Not sTitle Then ' If sPath Like "/comp/gb.qt4*/*/*" Then ' sPath2 = Replace(sPath, "/gb.qt4", "/gb.qt") ' sTitle2 = GetTitle(sPath2) ' If sTitle2 Then ' sPath = sPath2 ' sTitle = sTitle2 ' Endif ' Endif ' Endif If sMyTitle <> ("Cancel") Then Else sTitle = sMyTitle Endif 'sSuff = AddParam($sLangSuff, sMoreSuff) 'If IsComponentPath(sPath) Then 'If InStr("?&", Left(Right$(sMoreSuff, 3))) And If Left$(Right$(sMoreSuff, 2)) = "v" And If IsDigit(Right$(sMoreSuff)) Then If Left(Right$(sMoreSuff, 2)) = "v" And If IsDigit(Right$(sMoreSuff)) Then Else 'If $sVersion = "3.0" Then sSuff = AddParam(sSuff, "v3") Endif 'Endif If sTitle Then If Left(File.Name(sPath)) = ":" And Not bNoImage Then If Actions.NoImage Then Return "" If sMyTitle Then sTitle = sMyTitle sMoreSuff = "" iPos = InStr(sTitle, "|") If iPos Then sMoreSuff = Mid$(sTitle, iPos + 1) sTitle = Left(sTitle, iPos - 1) If sMoreSuff = "<" Then sMoreSuff = " align=\"left\"" Else If sMoreSuff = ">" Then sMoreSuff = " align=\"right\"" Else sMoreSuff = " class=\"" & sMoreSuff & "\"" Endif Endif Return "\""" Else If sMyTitle Then sTitle = sMyTitle Return "" & Html(sTitle) & "" Endif Else If Main.IsWget Then If sMyTitle Then Return "" & Html(sMyTitle) & "" Else Return "" & Html(sRelPath) & "" Endif Else If sMyTitle Then Return "" & Html(sMyTitle) & "" Else Return "" & Html(sRelPath) & "" Endif Endif Endif Endif End Private Sub AddRedirect(sSrc As String, sDest As String) If Not $cCompRedirect Then $cCompRedirect = New Collection $cCompRedirect[sSrc] = sDest End Private Function AddIndexEntry(aPath As String[], iInd As Integer) As String Dim sRes As String Dim aSplit As String[] Dim sPath As String Dim sTitle As String Dim sDisplay As String Dim sOldTitle As String aSplit = Split(aPath[iInd], "\n") sTitle = aSplit[0] sDisplay = aSplit[1] sPath = aSplit[2] If iInd Then aSplit = Split(aPath[iInd - 1], "\n") sOldTitle = aSplit[0] Endif If String.UCase(String.Left(sTitle)) <> String.UCase(String.Left(sOldTitle)) Then If System.RightToLeft Then sRes = "" & String.UCase(String.Left(sTitle)) & "\n" Else sRes = "\n" Endif sRes &= "" & GetLink(sPath, UCaseTitle(sDisplay), True, "arrow") & "\n" Return sRes End Private Function SubstitutePath(sPath As String) As String If Actions.OnlineHelp Then If sPath Like "/comp/gb.qt4*" Then If sPath = $sPath Then AddRedirect("/comp/gb.qt", "/comp/gb.qt4") sPath = Replace(sPath, "/comp/gb.qt4", "/comp/gb.qt") Else If sPath Like "/comp/gb.gtk*" Then If sPath = $sPath Then AddRedirect("/comp/gb.qt4", "/comp/gb.gtk") sPath = Replace(sPath, "/comp/gb.gtk", "/comp/gb.qt4") Else If sPath Like "/comp/gb.gui*" Then If sPath = $sPath Then AddRedirect("/comp/gb.qt4", "/comp/gb.gui") sPath = Replace(sPath, "/comp/gb.gui", "/comp/gb.qt4") Endif Endif Return sPath End Private Function GetTitle(sPath As String, Optional bVersion As Boolean) As String Dim rPage As Result Dim sNewPath As String Dim sTitle As String Dim iPos As Integer Dim sVer As String Dim aVer As String[] If sPath Not Begins "/" Then sPath = "/" & sPath 'Print System.Backtrace.Join("\n") rPage = Pages.Find(sPath) If rPage.Available Then 'IF sPath LIKE "/comp/*/*/*" THEN ' RETURN GetTitle(File.Dir(sPath)) & "." & rPage!sTitle 'ELSE sTitle = rPage!sTitle iPos = RInStr(sTitle, "#") If iPos > 1 Then sVer = Mid$(sTitle, iPos + 1) sTitle = Left(sTitle, iPos - 1) If bVersion Then aVer = Split(sVer, ",") If aVer.Find($sVersion) < 0 And If aVer.Find(Left($sVersion)) < 0 Then sTitle = "" Endif Endif Endif Return sTitle Else sNewPath = SubstitutePath(sPath) If sNewPath <> sPath Then Return GetTitle(sNewPath) 'Print "
      GetTitle: " & $sPath & " " & sPath & " ?
      " 'ENDIF Endif End Private Function GetIndex2(sRoot As String) As String Dim rPage As Result Dim sRes As String Dim aPath As New String[] Dim iInd As Integer Dim iInd2 As Integer Dim sPath As String Dim sTitle As String Dim sPrefix As String Dim aArg As String[] Dim sDisplay As String Dim bKeepPrefix As Boolean If Not sRoot Then Error.Raise("@index needs an argument") aArg = Split(sRoot, " ", Chr$(34)) sRoot = aArg[0] If aArg.Count >= 2 Then sPrefix = aArg[1] If Left(sPrefix) = "(" And If Right(sPrefix) = ")" Then sPrefix = Mid$(sPrefix, 2, -1) bKeepPrefix = True Endif Endif rPage = DB.Find("page", "sLang = &1 AND sPath LIKE &2", Main.DEFAULT_LANG, sRoot &/ "%") ' $Lang For Each rPage If InStr(Mid$(rPage!sPath, Len(sRoot) + 2), "/") Then Continue 'If IsCommentPath(rPage!sPath) Then Continue 'FIXME: sPath = rPage!sPath If Left(rPage!sTitle) = "@" Then If sPath Like (Replace(sRoot, "[", "[[]") &/ "*") Then Continue Endif sTitle = GetTitle(sPath, True) If Not sTitle Then Continue sDisplay = sTitle If sPrefix Then If sTitle Like (Replace(sPrefix, "[", "[[]") & "*") Then sTitle = LTrim(Mid$(sTitle, Len(sPrefix) + 1)) If Not bKeepPrefix Then sDisplay = sTitle Endif Endif aPath.Add(sTitle & "\n" & sDisplay & "\n" & rPage!sPath) Next aPath.Sort(gb.IgnoreCase) sRes = "\n" For iInd = 0 To aPath.Count \ 4 sRes &= "\n" iInd2 = iInd While iInd2 < aPath.Count sRes &= AddIndexEntry(aPath, iInd2) iInd2 += 1 + aPath.Count \ 4 Wend sRes &= "\n" Next sRes &= "
      \n" Return sRes End Private Sub EnterSection(sSection As String) Dim sParam As String Dim iPos As Integer 'IF $sSection <> "example" AND IF $sSection <> "syntax" AND IF $sSection <> "title" THEN ' AddPara ' ENDIF If sSection Then iPos = InStr(sSection, " ") If iPos Then sParam = Mid$(sSection, iPos + 1) sSection = Left$(sSection, iPos - 1) Endif Endif sSection = LCase(sSection) FinishList 'LeaveSection() $aSection.Push($sSection) $sSection = sSection $bVerbatim = False $sList = "" If $iIgnore > 0 And If $sSection <> "only" Then Return Select Case $sSection Case "syntax" If sParam <> "no-title" Then If $bSyntax Then $sRes &= "
      " & $sTitle & "
      " Endif sParam = ("Syntax") '$sRes &= "
      " & sParam & "
      \n" $sRes &= "
      "
            $bSyntax = True
      
          Case "example"
            If Not $bExample Then
              $bExample = True
              $sRes &= "

      " & ("Example") & "

      \n" Endif $sRes &= "
      " $bVerbatim = True ' IF NOT sParam THEN sParam = ("Example") ' $sRes &= "
      " & sParam & "
      \n" ' $sRes &= "
      "
            $iNoWiki = 1
      
          Case "code"
            $sRes &= "
      " $bVerbatim = True $iNoWiki = 1 $bCode = True Case "seealso" '$sRes &= "

      \n" '$sRes &= "
      " & ("See also") & "
      \n" $sRes &= "
      \n" $sRes &= "

      " & ("See also") & "

      \n" $iPos = Len($sRes) Case "error" $sRes &= "

      " & ("Errors") & "

      \n" '$sRes &= "
      " & ("Errors") & "
      \n" $sRes &= "\n" $sRes &= "
      " & ("Message") & "" & ("Description") & "
      \n" $bWhite = True Case "warning", "info", "vb", "critical", "tip" $sRes &= "
      \n" '$sRes &= "
      " & Main.GetImage($sSection) & "\n" Case "title" If Not sParam Then sParam = "gray" $sRes &= "
      " Case "box" If sParam Then $sRes &= "
      " & Html(sParam) & "
      " $sRes &= "
      \n" Case "only" ' $cGotSpecial["only"] = True If sParam <> $sVersion Then 'If IsComponentPath($sPath) Then ' $sRes &= "
      " 'Else ' $sRes &= "" ' '$sRes &= "" ' $sRes &= "\n" $sRes &= "
       " & sParam & "  
      " ' $sRes &= "
       " & sParam & " 
      " 'Endif $sOnlyVersion = $sVersion $sVersion = sParam 'InitVersion($sVersion) Inc $iIgnore Endif Case "html" Inc $iNoEncode End Select End Private Sub FinishList() If $sList Then $sRes = $sRes & $sList & "\n" $sList = "" Endif End Private Sub RemovePara() If Right($sRes, 5) = "

      \n" Then $sRes = Left$($sRes, -5) & "\n" Endif End Private Sub LeaveSection() Dim sTmp As String FinishList RemovePara If $iIgnore = 0 Or If $sSection = "only" Then Select Case $sSection Case "syntax" $sRes = RTrim($sRes) & "

      \n" Case "example" $sRes = RTrim($sRes) & "\n" $bVerbatim = False $iNoWiki = 0 Case "code" $sRes = RTrim($sRes) & "\n" $bVerbatim = False $iNoWiki = 0 $bCode = False Case "error" $sRes &= "

      \n" Case "seealso" sTmp = Mid$($sRes, $iPos + 1, -4) sTmp = Replace(sTmp, "", ", ") sTmp = Replace(sTmp, ",,", ",") sTmp = Replace(sTmp, ", ,", ",") $sRes = Left$($sRes, $iPos) & sTmp & Right$($sRes, 4) '$sRes &= "
      \n" $sRes &= "
      \n" Case "warning", "info", "vb", "critical", "tip" $sRes &= "
      \n" Case "title" $sRes &= "" ' no '\n' to prevent an '

      ' to be added Case "box" $sRes &= "\n" Case "only" If $sOnlyVersion Then 'If IsComponentPath($sPath) Then ' $sRes &= "" 'Else ' $sRes &= "

      " 'Endif $sVersion = $sOnlyVersion 'InitVersion($sVersion) $sOnlyVersion = "" Dec $iIgnore Endif Case "html" Dec $iNoEncode End Select Endif Try $sSection = $aSection.Pop() End Public Function Encode(sText As String) As String Dim iPos As Integer Dim iPos2 As Integer Dim iPos3 As Integer Dim sCar, sPrev, sNext As String Dim bBold As Boolean Dim bItalic As Boolean Dim bUnderline As Boolean Dim bTT As Boolean Dim sTitle As String Dim sLink As String Dim sLinkTitle As String Dim bLinkTitle As String Dim bLastVoid As Boolean Dim bHeader As Boolean Dim sArg As String 'Dim hSym As CSymbolInfo Dim iLevel As Integer Dim iLevelLen As Integer Dim bList As Boolean Dim sStr As String Dim iInTable As Integer Dim bTitleIndex As Boolean Dim bUseThisTitleForIndex As Boolean Dim sTitleIndex As String Dim sTitleIndexStamp As String Dim iTitleIndex As Integer Dim iTitleIndexStart As Integer Dim iLastTitleLevel As Integer Dim iTitleLevel As Integer Dim bBegin, bEnd As Boolean Actions.Parsed = True $sRes = "" $aSection = New String[] EnterSection("") For Each sStr In Split(RTrim(sText), "\n") If Left$(sStr) = "{" And If Len(sStr) >= 2 Then EnterSection(Trim(Mid$(sStr, 2))) Continue Endif If RTrim(sStr) = "}" Then LeaveSection() Continue Endif If $bVerbatim Then If sStr = "==" Then $bVerbatim = False $sRes = $sRes & "

      \n" Else If sStr = "--" Then $sRes = $sRes & "
      " Else If Left(sStr, 4) = "
      " Then $sRes &= "
      " sStr = Mid$(sStr, 5) Endif If Left(sStr) = "\\" Then sStr = Mid$(sStr, 2) If $sSection = "example" Or If $sSection = "code" Then sStr = Html$(sStr) iPos = Len(sStr) - Len(LTrim(sStr)) If iPos > 0 Then sStr = String$(iPos, " ") & Mid$(sStr, iPos + 1) Endif sStr = Replace(sStr, " ", "  ") $sRes &= sStr & "
      \n" Else $sRes &= sStr & "\n" Endif Endif Continue Endif If $iIgnore Then Continue If $iNoEncode Then $sRes &= sStr & "\n" Continue Endif If $bCode Then '$sRes &= HighlightCode(sStr) & "\n" Endif If $iNoWiki = 0 Then sStr = RTrim(sStr) sTitle = "" If Not sStr Then ' IF bLastVoid THEN ' $sRes = $sRes & "
      \n" ' ELSE ' bLastVoid = TRUE ' $sRes = $sRes & "\n" ' ENDIF If Right($sRes, 5) <> "

      \n" Then $sRes = $sRes & "

      \n" Else $sRes = $sRes & "\n" Endif Continue Endif While Left(sStr) = " " sStr = Mid$(sStr, 2) $sRes &= " " Wend bLastVoid = False bList = False iPos = InStr(sStr, " ") If iPos >= 2 Then If Left$(sStr, iPos - 1) = String(iPos - 1, "*") Then iLevel = iPos - 1 iLevelLen = iLevel * 6 If Len($sList) > iLevelLen Then sCar = Mid$($sList, 1 + iLevelLen) $sList = Left($sList, iLevelLen) Else If Len($sList) < iLevelLen Then sCar = String$((iLevelLen - Len($sList)) \ 6, "

        \n") $sList &= String$((iLevelLen - Len($sList)) \ 6, "
      \n") Else sCar = "" Endif $sRes &= sCar & "
    • " sStr = Trim(Mid$(sStr, iPos + 1)) bList = True Else If Left$(sStr, iPos - 1) = String(iPos - 1, "#") Then iLevel = iPos - 1 iLevelLen = iLevel * 6 If Len($sList) > iLevelLen Then sCar = Mid$($sList, 1 + iLevelLen) $sList = Left($sList, iLevelLen) Else If Len($sList) < iLevelLen Then sCar = String$((iLevelLen - Len($sList)) \ 6, "
        \n") $sList &= String$((iLevelLen - Len($sList)) \ 6, "
      \n") Else sCar = "" Endif $sRes &= sCar & "
    • " sStr = Trim(Mid$(sStr, iPos + 1)) bList = True Endif Endif If Not bList Then FinishList If Left$(sStr) = "@" Then iPos = InStr(sStr, " ") If iPos Then sArg = Trim(Mid$(sStr, iPos + 1)) sStr = Left$(sStr, iPos - 1) Endif sStr = Mid$(sStr, 2) Try $cGotSpecial[sStr] = True Select Case sStr Case "classes" '$sRes &= GetClasses() Continue Case "no-classes" Try $cGotSpecial["classes"] = False Continue Case "symbols" '$sRes &= GetSymbols() Continue Case "components" '$sRes &= GetComponents() Continue Case "redirect" iPos = InStr(sArg, " ") 'If iPos Then AddRedirect(Trim(Left(sArg, iPos - 1)), Trim(Mid$(sArg, iPos + 1))) Continue ' @index /path prefix Case "index" $sRes &= GetIndex2(sArg) Continue Case "title-index" sTitleIndexStamp = "{~" & Format(Int(Rnd(1000000)), "000000") & "~}" $sRes &= sTitleIndexStamp bTitleIndex = True Continue ' @list /path +-number Case "list" '$sRes = $sRes & GetList(sArg) Continue ' @header /path +-number Case "header" '$sRes = $sRes & GetList(sArg) Continue Case "syntax" If sArg Then 'hSym = $hClass.Symbols[Replace(sArg, ".", ":")] 'If hSym Then EnterSection("syntax no-title") Else 'hSym = $hSym 'If hSym Then EnterSection("syntax") Endif 'If hSym Then '$sRes &= GetSymbolSyntax(hSym) 'LeaveSection() 'Endif Continue Case "version" '$sRes &= GetGambasVersion() Continue Case "only-in", "only" $sRes &= GetOnlyIn(sArg) Continue Case "since" '$sRes &= GetSince(sArg) Continue Case "changes" '$sRes &= GetLastChanges() Continue Case "translate", "todo" '$sRes &= GetTranslate() Continue Case "class-stat" '$sRes &= GetClassStat(sArg) Continue Case "no-autolink" Continue Case "include" '$sRes &= GetInclude(sArg) Continue Case Else $sRes &= "
      " & sStr & " ?
      " Continue End Select Else If Left$(sStr) = "+" Then $bExample = False iPos = 1 While Mid$(sStr, iPos, 1) = "+" Inc iPos Wend sStr = LTrim(Mid$(sStr, iPos)) If Len(sStr) Then 'DEC iPos If bTitleIndex And If iInTable = 0 Then Inc iTitleIndex iTitleLevel = iPos - 1 $sRes &= "" bUseThisTitleForIndex = True Else bUseThisTitleForIndex = False Endif $sRes &= "" iTitleIndexStart = Len($sRes) sTitle = "" Endif Endif If Left(sStr, 2) = "[[" Then $sRes = $sRes & "\n" bHeader = True $sRes = $sRes & "\n" bHeader = False Else $sRes = $sRes & "\n" Endif $sRes = $sRes & "
      \n" $bWhite = True Inc iInTable Continue Else If Len(sStr) <= 2 Then If sStr = "]]" Then If bHeader Then $sRes = $sRes & "
      \n" Dec iInTable Continue Else If sStr = "[]" Then bHeader = False Continue Else If sStr = "--" Then $sRes = $sRes & "
      \n" Continue Else If sStr = "==" Then $bVerbatim = True $sRes = $sRes & "
      "
                Continue
                '       ELSE IF sStr = "[" THEN
                '         IF bHeader THEN
                '           $sRes = $sRes & "\n"
                '         ELSE
                '           $sRes = $sRes & "\n"
                '         ENDIF
                '         CONTINUE
                '       ELSE IF sStr = "]" THEN
                '         IF bHeader THEN
                '           $sRes = $sRes & "\n"
                '           bHeader = FALSE
                '         ELSE
                '           $sRes = $sRes & "\n"
                '         ENDIF
                '         CONTINUE
              Else If sStr = "][" Then
                $bWhite = Not $bWhite
                If bHeader Then
                  If Right($sRes, 9) = "\n" Then
                    If $bWhite Then
                      $sRes = Left$($sRes, -9) & "\n"
                    Else
                      $sRes = Left$($sRes, -9) & "\n"
                    Endif
                  Else
                    If $bWhite Then
                      $sRes = $sRes & "\n\n"
                    Else
                      $sRes = $sRes & "\n\n"
                    Endif
                  Endif
                  bHeader = False
                Else
                  If $bWhite Then
                    $sRes = $sRes & "\n\n"
                  Else
                    $sRes = $sRes & "\n\n"
                  Endif
                Endif
                Continue
              Else If sStr = "-" Then
                If bHeader Then
                  $sRes = $sRes & "\n"
                Else
                  $sRes = $sRes & "\n"
                Endif
                Continue
                'ELSE IF sStr = "_" THEN
                '  $sRes = $sRes & "

      " ' CONTINUE Endif Endif Endif For iPos = 1 To Len(sStr) sCar = Mid$(sStr, iPos, 1) If sCar = "\\" Then Inc iPos sCar = Mid$(sStr, iPos, 1) If sCar = "<" Then sCar = "<" Else If sCar = ">" Then sCar = ">" Else If sCar = "&" Then sCar = "&" Endif Else If sCar = "\"" Then sCar = """ Else If sCar = "<" Then iPos2 = InStr(sStr, ">", iPos) If iPos2 = 0 Then iPos2 = Len(sStr) + 1 sCar = Mid$(sStr, iPos, iPos2 - iPos + 1) iPos = iPos2 If sCar Like " 0 Then If iPos > 1 Then sPrev = Mid$(sStr, iPos - 1, 1) Else sPrev = "" Endif If iPos < Len(sStr) Then sNext = Mid$(sStr, iPos + 1, 1) Else sNext = "" Endif If InStr(LETTER_DIGIT, sPrev) And If InStr(LETTER_DIGIT, sNext) Then Goto NEXT_CAR If Asc(sPrev) <= 32 And If Asc(sNext) <= 32 Then Goto NEXT_CAR ' bBegin = False ' bEnd = False ' ' If Asc(sPrev) <= 32 Or If InStr("('\">", sPrev) Then bBegin = True ' If Asc(sNext) <= 32 Or If InStr(".;:,)!?'\"<", sNext) Then bEnd = True ' ' If Not bEnd And If Not bBegin ' If InStr("*/_=", sPrev) Then bBegin = True ' If InStr("*/_=", sNext) Then bEnd = True ' Endif ' ' If bBegin And bEnd And If Asc(sPrev) <= 32 And If Asc(sNext) <= 32 Then Goto NEXT_CAR bBegin = Asc(sNext) > 32 bEnd = Asc(sPrev) > 32 If sCar = "*" Then If Not bBold And If bBegin Then bBold = True sCar = "" Else If bBold And If bEnd Then bBold = False sCar = "" Endif Else If sCar = "/" Then If Not bItalic And If bBegin Then bItalic = True sCar = "" Else If bItalic And If bEnd Then bItalic = False sCar = "" Endif Else If sCar = "_" Then If iPos = Len(sStr) And If Not bUnderline Then sCar = "
      " Else If Not bUnderLine And If bBegin Then bUnderline = True sCar = "" Else If bUnderLine And If bEnd Then bUnderline = False sCar = "" Endif Else If sCar = "=" Then If Not bTT And If bBegin Then bTT = True sCar = "" Else If bTT And If bEnd Then bTT = False sCar = "" Endif Endif Else If sCar = "[" Then If Mid$(sStr, iPos + 1, 1) <> " " Then sLink = "" sLinkTitle = "" bLinkTitle = False iPos2 = iPos + 1 While iPos2 <= Len(sStr) sCar = Mid$(sStr, iPos2, 1) If sCar = "]" Then Break If sCar = "\\" Then Inc iPos2 sCar = Mid$(sStr, iPos2, 1) Endif sLink &= sCar Inc iPos2 Wend iPos3 = InStr(sLink, "|") If iPos3 Then sLinkTitle = Mid$(sLink, iPos3 + 1) sLink = Left$(sLink, iPos3 - 1) Endif sCar = "[" If iPos2 <= Len(sStr) And If Len(Trim(sLink)) Then If sLink Begins "../" Then sLink = File.Dir(Path.Page) &/ Mid(sLink, 4) Endif sCar = GetLink(Trim(sLink), Trim(sLinkTitle)) iPos = iPos2 Endif Endif Else If sCar = "%" Then If Mid$(sStr, iPos + 1, 1) <> " " Then iPos2 = InStr(sStr, "%", iPos + 1) If iPos2 Then sLink = Mid$(sStr, iPos + 1, iPos2 - iPos - 1) sCar = Main.GetImage(sLink) iPos = iPos2 Endif Endif 'ELSE IF Asc(sCar) > 127 THEN 'sCar = "&#" & Asc(sCar) & ";" Else If sCar = "&" Then If Not IsLetter(Mid$(sStr, iPos + 1, 1)) Then sCar = "&" Endif Endif NEXT_CAR: $sRes &= sCar Next If bList Then $sRes &= "
    • " If sTitle Then If bUseThisTitleForIndex Then While iTitleLevel > iLastTitleLevel sTitleIndex &= "
        \n" Inc iLastTitleLevel Wend While iTitleLevel < iLastTitleLevel sTitleIndex &= "
      \n" Dec iLastTitleLevel Wend sTitleIndex &= "
    • " & Mid$($sRes, iTitleIndexStart + 1, Len($sRes) - iTitleIndexStart) & "
    • \n" Endif $sRes &= sTitle Endif $sRes &= "\n" Next BREAK_ALL: While $aSection.Count LeaveSection() Wend If bTitleIndex Then sTitleIndex = "
      " & ("Contents") & "
      \n" & sTitleIndex & "
      " $sRes = Replace($sRes, sTitleIndexStamp, sTitleIndex) Endif While Right$($sRes) = "\n" $sRes = Left$($sRes, -1) Wend If Not $sRes And If $cGotSpecial.Exist("only") Then Return Encode("{warning\n" & Subst(("This documentation page does not exist in version &1."), $sVersion) & "\n}\n") Endif Return $sRes End gambas-3.16.3/app/src/gb.wiki/.src/Path.module000066400000000000000000000041521411575327000207160ustar00rootroot00000000000000' Gambas module file Property Read Section As Integer Property Read Page As String Property Read Components As String[] Property Read Path As String Public Enum PATH_404, PATH_MAIN, PATH_ADMIN, PATH_WIKI, PATH_IMAGE, PATH_LOGIN, PATH_LOGOUT, PATH_ACCOUNT Public Function Build(Optional sPath As String[]) As String Dim sUrl As String 'sUrl = "/help" ' If sPath Then sUrl = sUrl &/ sPath.Join("/") sUrl = sPath.Join("/") If CGI["QUERY_STRING"] Then sUrl &= "?" & CGI["QUERY_STRING"] Return sUrl End Public Function Static(sPath As String) As String 'sPath = "static/" &/ sPath 'If Exist(sPath) Then Return Application.Root &/ sPath ' Return "http://gambasdoc.org/" & sPath End Private Function Components_Read() As String[] Dim sComponents As String[] Dim sPath As String sPath = Request.Path If Left(sPath) = "/" Then sPath = Mid(sPath, 2) Endif If Right(sPath) = "/" Then sPath = Mid(sPath, 1, -1) Endif sComponents = Split(sPath, "/") If sComponents[0] = "help" Then sComponents.Remove(0) Return sComponents End Private Function Path_Read() As String 'Return Application.Protocol & "://" & Application.Host &/ Application.Root &/ Request.Path ' Return Application.Protocol & "://" & Application.Host & IIf(Application.Port <> 80, ":" & Application.Port, "") &/ Request.Path End Private Function Section_Read() As Integer Select Case Request.Path Case Like "/admin*" Return PATH_ADMIN Case Like "/help*" Return PATH_WIKI Case Like "/account" Return PATH_ACCOUNT Case Like "/login" Return PATH_LOGIN Case Like "/logout" Return PATH_LOGOUT Case Like "/image*" Return PATH_IMAGE Case "/" Return PATH_MAIN Case Else Return PATH_404 End Select End Private Function Page_Read() As String Dim sPath As String If Request.Path Like "/image*" Then Return Mid(Request.Path, 7) If Request.Path Not Like "/help*" Then Return Request.Path sPath = Mid(Request.Path, 6) If Not sPath Then Return "/" If sPath Not Begins "/" Then sPath = "/" & sPath Return sPath End gambas-3.16.3/app/src/gb.wiki/.src/Views/000077500000000000000000000000001411575327000177065ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.src/Views/Admin/000077500000000000000000000000001411575327000207365ustar00rootroot00000000000000gambas-3.16.3/app/src/gb.wiki/.src/Views/Admin/WAdminMain.class000066400000000000000000000000251411575327000237460ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage000066400000000000000000000045601411575327000242630ustar00rootroot00000000000000<% Dim sUser As String %> <>

      <%=("User management")%>

      <%=("Create user")%> <%= ("Edit user")%> <%=("Delete user")%>

      <%=("Username")%>
      <%=("Password")%>
      <%=("Confirm")%>
      <%=("Email")%>

      " >

      <%=("Name")%>
      <%=("Password")%>
      <%=("Confirm")%>

      ">

      <%=("Name")%>

      " >

      <%=("Database management")%>

      " >
      ">
      " >
      <
      >gambas-3.16.3/app/src/gb.wiki/.src/Views/WAccount.class000066400000000000000000000000251411575327000224550ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/app/src/gb.wiki/.src/Views/WAccount.webpage000066400000000000000000000017331411575327000227710ustar00rootroot00000000000000<>

       

      <%=("Username")%>:  
      <%=("Password")%>:  
      <%=("Repeat your password")%>:  
      <%=("Email")%>:  

      " />

       

      <>gambas-3.16.3/app/src/gb.wiki/.src/Views/WEdit.class000066400000000000000000000000251411575327000217460ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/app/src/gb.wiki/.src/Views/WEdit.webpage000066400000000000000000000016631411575327000222640ustar00rootroot00000000000000<> <% If Actions.Image Then %>

         ">   ">

      <% Else %>

         ">   ">

      <% Endif %> <
      > gambas-3.16.3/app/src/gb.wiki/.src/Views/WHeader.class000066400000000000000000000111731411575327000222570ustar00rootroot00000000000000' Gambas class file Property Title As String Private $sTitle As String Property Warning As String Private $sWarning As String Private Sub PrintPath() Dim sComponent As String Dim aComponents As New String[] Print "
      " Print "" Print "\""" Print "" If Request.Path Like "/help/*" Then 'aComponents.Add("help") Print " > "; "Home"; For Each sComponent In Path.Components If Not sComponent Then Continue aComponents.Add(sComponent) If Actions.Help Then Print " > "; "" & sComponent & "" Else Print " > "; sComponent Endif Next Else Print " > "; "Home"; " > "; WHeader.Title Endif Print "
      " End Private Sub PrintDivLang() If Main.Version Then Print "
      "; Else Print "
      "; Endif End Private Sub PrintVersion() If Main.IsWget Then Return Print "
      " Print "

      <%=("Password")%>:  

      " />

       

      <>gambas-3.16.3/app/src/gb.wiki/.src/Views/WWiki.class000066400000000000000000000000241411575327000217630ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/app/src/gb.wiki/.src/Views/WWiki.webpage000066400000000000000000000004631411575327000222770ustar00rootroot00000000000000<> <% If Actions.Image Then %> <% Else Print IIf(Pages.Current.HTML, Pages.Current.HTML, Parser.Encode(Pages.Current.Content)) 'Print IIf(Pages.Current.HTML, Pages.Current.HTML, Parser.Encode(Pages.Current.Content)) Endif %> <> gambas-3.16.3/app/src/gb.wiki/help.png000066400000000000000000000030331411575327000174010ustar00rootroot00000000000000PNG  IHDR szzIDATXŗ͏W羪Ll&fH'#GH0KYɋ,"HHl"!ȻX({? `d0($eb˒鞮zﲨv-Uǫ~s=ܝ'kH?N>'wO! SL0w) pO(y|<#p;;?{3'Nz<]r{ $$ؾR2`V 8O?::\ x0;sQʯ歽p?q DIyNY{Zb5y6ߤ17ˏ^?ʛ-shw8v^kt|՜`\Z0r.y&͕1@,#@`О\͛Z}E,iV&n>(qg3"4/|c2G׆;>9fk,u5WV;B1YFw~nnܸ_y0R VN,_ dF*_P@;{TNN 8)UoRW})U :PJUZ5>sH.2?#ܫl'ZK=K9)5sH}̈FL(4p?27p@7TI^eS۰Wkɚk/DxX\ޥ1N?6Fy 4A4[}'{:ŨLDoiF,<`p*RX/ s)Uk|_9Z`b*闀"Ÿ?k:%Ȃ#9 aYII $lT3ȂHi-R:86:x&:Ʒ\9#Qp0*}:!Y6}4eKL Ty'JcS'2~u&_i&3NO<Ǝ+u:urOTԔ1ՌRaSOx>O,L\3m:fx<( RJe 81FEDƼu~k媜M-nؿGQ6(pHQ&BLͤ3vSu#X~k0<512Ix56ѨDwKIa2WLZkx sS1} ^Uʀ,Gs>w?I RvJm([ح!!h3$zIENDB`gambas-3.16.3/app/src/gbs3/000077500000000000000000000000001411575327000152505ustar00rootroot00000000000000gambas-3.16.3/app/src/gbs3/.directory000066400000000000000000000000411411575327000172500ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/app/src/gbs3/.hidden/000077500000000000000000000000001411575327000165615ustar00rootroot00000000000000gambas-3.16.3/app/src/gbs3/.hidden/CHANGELOG000066400000000000000000000014311411575327000177720ustar00rootroot00000000000000* Thu Mar 18 2021 benoit 3.15.90 - Updated Convert to project and reader to correctly handle Class Ref statements * Tue Mar 09 2021 benoit 3.15.90 - Improved readability and optimized functions * Mon Mar 08 2021 benoit 3.15.90 - Updated stdio process - bad filename * Mon Mar 01 2021 benoit 3.15.90 - Bug Fixes and updates * Fri Feb 26 2021 benoit 3.15.90 - Updated Modules/Unit Test/ Most modiles rewrite * Fri Aug 14 2020 benoit 3.15.90 * Wed Aug 05 2020 benoit 3.15.90 - Fixed redirect from std in * Wed Aug 05 2020 benoit 3.15.90 - Added more verbose output * Wed Aug 05 2020 benoit 3.15.90 - Initial release gambas-3.16.3/app/src/gbs3/.icon.png000066400000000000000000000412761411575327000167760ustar00rootroot00000000000000PNG  IHDR\rfsBIT|d IDATxIdYsd1ff\YYUYU=@z!x +I 6d ,-4)5rb;kG{D$ 7v횹/p,&e_xy8p,0N8 ñ8p,0N8 ñ8p,0N8 ñ8p,0N8 ñ8p,0N8 ñ8p,0N8 wU?C=]e8s☣)9~TH09~.1~G 0G_SJhfx1z??H4eҷƘ#?.~!L񉟓ΧxM>117{zFǗ3>}W_>c̹x'k'-'wcDLi?@ U%󺓻'}BcxGvcyoڳr8,gb=>Qmsb4';85'2]ǎ?eL]7x{?~|RxmݯON~Gǘsu.)6. ű/$v?y1c^L<8r',_~9[?c矼N9=fOP6״~lt,g1R?G sJ5vs+ Ǐ mGv1‘O_=5O(?}AXZ9y\HpX+́{j?S|OFX<y*r+ hat䛙8xq\{.tF>B)屼zWxTX~߉έl~qr4)Ȯ,8e'/LLE N(Fw#G5O?yg{ENTo8NB<|usNs&U_yH0 D_ߧF r6#-M]p}8N4IM`)6ԢS;ۓWḂ`ؾ^k8nY*gQMbڣ/njM8$z{ۻ ̱t{9$^H*pXnMk⯼gG2cPJ{8;џPRT߅zd4K܂0[g 8N4s[.Yjȑo?`OE8;?'f|I~I@7OSW޷=TyrG_=:(SZu,w"6_"0”^q1IS^I;v#G @"Y>HM ƣ%FV>_3V9+?1Ʌޚ5jG8މxؿK0E@K#G8/^yyк_-XRܬyc81sPcAJ&oF=#0/!#qzy ]V;I;'}GM:wĴ0z =Gnw\^i "# Ɍ&ʋ?Q[e bUo=? ؄!Ƌ}2P \ـ/#qj=CO4m.kU58!9:BmÕzѧ(ɧZ#^х& k0:/z,T-/,m#+w8fNfʖLgMXF8,sOh~n;.!JlcU8EBtu*/T<;q t@5 Pc~_?R<KTxJ(tNNP W4, "sd޷KTx.輘?97`sic'RkRH4&POk*N?m4#1p\.P5cZd+SiFM-~qK!0Ҡ<73];"S>r\LӢ@nkǿO_-;2Wp!@Jخ*3h(Kph<\9 B 1Z߱\I bkLUo@ g|_6wt9?'/fںP!t@L ߟ-!-rRpl's8.+LRyMgtL /9IQ`40O|2sFgyif÷czY/PFQɇIi+m>E< TLc~onr⬘Rgt8^a7">.@Nd潩V'osu{t 9.N8g v?Iv19 c IFvUЃ]\㲰yvX>E\q.8 Ygx.,ErqX[n{4&ip̃ P?J2xx@©S'f[G>|lo|^riq?eigEht <#f縤8 823Pl"pfW4XH p,0N8 Qg2m0Z")"i΋]m@1}ф,GK“HOo HOsLzk$X@ R !^-H_aAsd*)J]ZX5B H/N_ZXJdnSj*S27kT5v<:^xT9d8ȋ)'ޥjhJX (O5"z 0A6|TمYasc@/ K5h pG[r'v˵[X! YN>H^%^Y-Tm  ^;'ᵮ!(H>!}"p5EAv&2Z,5wс9qQ9 YiG֮oooMx7>|{_$"C(jQXk dmlscޮd^ߔ$%+[IC \8 `t^ϓl~!Eڏ߲2l!jxB "n~||Arg$~AsmԾcl3Z@۟'M )/$BvoolEx燄w>"s8n< ފH0aj7"zC;?_ƻ_VP!1ښTgrM>HJգ22 ?')4y b8Ag2F;??6qs Ts?BD-{TgILz/rpNg`C-zq_z׈^}^etdPG0qFz0H)ռ8 &3'P57GeYqz $~#BM zN6YNqIZwN/$pl;~ rSDO0y0/;͓15&(6IܸptQc71[NtP ? j^Ο O۱%sf V Ay jN #g6H윾ezoڏo}lBSR(UBB3H 3 )aӜPI۔]66ye_I۟>铏)z 6$6*̀)p7S)D7Y9fPnxp0`o׷Rw.+u+u޽͍Y✯v|ow&H!xgJg#iU퀿ɣ_Qth(bl=MɆ)2A*4 LQaWï}:nU[>vXT?Չ9u??ހ_?FZzf8t㜯w7|an/YA~smUC_6[+Vy#[>5O _COęN'[]Zǻך#Pj˄w~Nz$~as1 M'䁇8[UuUAgL̑'- uƠ`VO2Ru R1{8 3YkDd<8.>_8dgp=c!+rq^?ekOsn/ר8{{>{;Љ, -F+d#@VM77"?|H~j&Z:ט€.(饳l4cfuDx{vo䣵!5݄>Vn|INN~OVrK8vnBXBs0iaʗ;}~xgV`׻t0H j7dK=xvDIdz 6IvɌרڿ=/giVf]b3] KNJPI'<&'U,BS\oӂ_=щS/\zIΜ q16Z0HK2:qg=576C/D57[u.&Z(Q9l< vVߵQcp ҋ{9|ǣ (0Ԗ6x6g~;T$HtYx't4/~e(ueueuAހϷ{<*c1YaMG1oXi8,8D-7 ~M۞uLMsLa>C`5^|?QwՀ |xȯvÌ_=5CF3Jzp|a 촡37]̌N8'`Qf[뵯ڛ?:'Z車7MvZWY i|B/ 3{ |7> ]._ n6whGo zZxMtҟ9H-}geub.@x!u cuR%X"O#hGaJ7>0 =ByZkuh#з`i:qv7z{z>~nB/y=)|R RMlf>I>c)4G-4CV|?zmwhGL*( n) 8fs_,J#Rk lݛKZhw:}u! Ю ]6w @2]&<)hwVj,Eoo4?w7{Yoז֠y^>%iGw =⬠9L)r￱wxmεE|7KBN| gb(cYx'˄y+Yk#kK)RHA#` >۽vΝQ]wV|F[wga;+ 3ͧO{R: %%cݛm>z3̷TeFaFÕ>moQ "drc)b g۱+⍵\krͼn#)ZZ#F;bR? 1ϢyUJpN/œ? Ƞ^f͇$УT|i#x}ݵ:+uW'NW}y}> <wZuZ%]m6H?Bѹ4~IN>GbR-PY=3f^J'_'hlQyzVƜ{a ì`mR!g>nʎo/+ l !ʳyc{d+CWvͧx8SvӮsT4sX=> GSKHP%1y\S< ̂s6[!(?wy&}gdᝀ"@mfn3/EsE %6$9i"D[ ΩK]Ԃ; ԜO6S"kzQ@M΂m>bNJExyaF= 9J!$n0_9"FCbL@R @R lY3\K&4EBI^M؞sܸ1/aј"b`_,P1q,d1Ƌ+$=W6BaV0kaZpokٮbpopߞ1bٛy/rYq&sw5:G}t:y`$y'y9Bk$3΀AFrƸ _ fo@ sm$'?(/{9ΆkoC@5"j.{qw=:'ۛsӂv|ØN|V(||_ϡ䅡x9M 3SKa.+ 4̱M3QkCmv0rdL,3{'jZFNPhC^)_ݓaRh0Qm wrॉrc)2tAǝn6 8`9V3Dy_?._~:wƜv~_VST;W}vCvVNl϶{]jskf+2=8Yӥ/+ RA0G E/1m731_nCض݀Σ%z-0m fw|C0H0wO:%ؼzIN7Sì`w#k^q32W:# }gizd %m6&{NmloVO|ǃnji)! ONu"~7j WOI<:9_RMlfl *yV9ɫ)&cbj,' =qRD\:Ìǝv|'[]>F#ĻIn; 3v O:Ko >vMNl#o7lCm:J*?+'ݧs )SHoN(߷9B&;O(:[,>x5>}ܙ r3 hC'|F~A.r&@66[݄=6:\kR<#by[y`nBW2E>W.)QEo:mrD|ݣ/`"a$^I8RI0z'&]3%R!J }' |e%Cc6^HTZF1H [/Uvͧo[cSu Y s$!|}ge[ CH q06+-? ?xhU3JЮZgc=9iR:K'4ِ!}4kaCx3N,|& GX*5_4 |E&{|[K|K5v>n-g|N?oERH.UV!!˜u'oGDi=PZgCv?9^f|eMo_kڪmjZbcl?wɶ$=R"oKm_MMFvtIlSҭs4R|!wyV@9~ #l4ƀSjn-4֧|5_rc)⍵:wVk)l,TzqwK8G A3M9iqN-OAպylBh;˴"'1|;I'p>'\_IVwV뼱VRD41w`dHo9 TH?@zs +Pz=h.!_!k+DouRyV7 ҂_?01̚gn3UYe_m#^0J< Jg)yp`{mݼ@ Xk}nyZ77Rg)9al4CN7A ;MZ!2:U'wQ( +L D!:QJKgCȰIxCudcXs`7xMKZz3`fOc a57V7Bs e' g~̀usf;dЊ|Jmeε&8#4K5fӃPL{d_Y7ag(PA'$b\%&YS@u6YL"ϑ6f+/|4 mFz7T3"in1~~OB7[+5jeviBOzf+uRR ozOt 9=e725Tz*|1x׍l1o0@WJT1HX|68Г5C/Pe3R0p1EF~'75%)%^Ehi@8pQ6(( g{Cd "-BE-`l˟絃QgģsK[B9ST~C$3ҭO? T)ȣR)O9O@JF<'Tε Uӝ/|ט"_&^zCf2oI^W;[X@< К"M)bv-]6PkHV9Wφ6gѯ~w޽3xQ <[8<[&YLΟߝrTq ?7_AdzwL zvfI7Zǭ9O۶~NrH?l\#"‹"]2:fӋEfΕ0q1VH 5*cmvqjI`MTc Y_F-J#hG>?d :y]/I"BHTEuC, ́T V%ށE9_U9_>"y osiFջoG-} 1E⇩41;Ń%| nkc &7sG&1yLэ){mmTm a^4V/J0O L!&tcǿ%yq3HrjuWG^2Qܹc E :KEIǨ*-w7_| ym|1Y9࡝շ%gvhG=ܷ˼=x𛭩\|j3`D W65L'0~2Rе)^Y'?xD|;x!QP>B61Fye0"c: '־L'v&lĞsRG6Uj?p3✀g@ 0 OPoRO}^>I D]L~Z2jm⵮ZcaԶc˃*(3E)R~)t:#^&>nQv(֛I.fSNn*m~*||0e}'ƙgDR"OYjsv6 )z>!Y_kmZ쭱zLH?gԦ'{ݧݧ-mjW~k~78pa5y&LF\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "gbs3" msgstr "" #: .project:2 msgid "Gambas Script" msgstr "Gambas Script" #: CComponent.class:53 msgid "Warning: cannot read" msgstr "" #: MMain.module:117 msgid "no input file specified" msgstr "" #: MMain.module:118 msgid "Type " msgstr "Type " #: MMain.module:118 msgid "for more information" msgstr "" #: MMain.module:131 msgid "input file does not exist" msgstr "" #: MMain.module:170 msgid "compiling server page" msgstr "" #: MMain.module:215 msgid "Segmentation fault" msgstr "Segmentation fault" #: MMain.module:257 msgid "GAMBAS Scripter version" msgstr "" #: MMain.module:259 msgid "GAMBAS Webpage Scripter version" msgstr "" #: MMain.module:289 msgid "Option Is Not supported For WebPages" msgstr "" #: MMain.module:330 msgid "Unknown option" msgstr "" #: MMain.module:360 msgid "Create project" msgstr "" #: MMain.module:448 msgid "gbs: process file: " msgstr "gbs: process file: " #: MMain.module:473 msgid "gbs: include script file: " msgstr "gbs: include script file: " #: MMain.module:500 msgid "Unexpected CLASS declaration" msgstr "Unexpected CLASS declaration" #: MMain.module:504 msgid "Class name missing" msgstr "Class name missing" #: MMain.module:507 msgid "create class" msgstr "" #: MMain.module:521 msgid "Unexpected Structure declaration" msgstr "Unexpected Structure declaration" #: MMain.module:526 msgid "Structure name missing" msgstr "Structure name missing" #: MMain.module:530 msgid "Struct Defined outside main" msgstr "" #: MMain.module:544 msgid "use library" msgstr "" #: MMain.module:548 msgid "use component" msgstr "" #: MMain.module:555 msgid "Comma missing" msgstr "Comma missing" #: MMain.module:563 msgid "Main procedure already defined" msgstr "" #: MMain.module:585 msgid "missing" msgstr "" #: MMain.module:589 msgid "procedure not defined, creating it" msgstr "" #: MMain.module:604 msgid "Unknown component" msgstr "" #: MMain.module:644 TcMMainFunctions.test:51 msgid "Unknown Library" msgstr "" #: MMain.module:646 msgid "use Library Path" msgstr "" #: MMain.module:749 msgid "Unknown component: &1" msgstr "Unknown component: &1" #: MMain.module:814 msgid " Not Allowed" msgstr " Not Allowed" #: MMain.module:814 TbCommandLinePrograms.test:23 msgid "From" msgstr "" #: MMain.module:814 TbCommandLinePrograms.test:23 msgid "Redefinition of variable" msgstr "" #: TbCommandLinePrograms.test:23 msgid "Not Allowed" msgstr "" #: TbCommandLinePrograms.test:34 msgid ": Unknown component:" msgstr "" gambas-3.16.3/app/src/gbs3/.lang/OldTranslation/fr.po000066400000000000000000000071551411575327000221630ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gbs3 3.15.90\n" "POT-Creation-Date: 2020-07-23 19:28 UTC\n" "PO-Revision-Date: 2020-07-17 20:33 UTC\n" "Last-Translator: brian \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 "gbs3" msgstr "" #: .project:2 msgid "Gambas Script" msgstr "Script Gambas" #: CComponent.class:53 msgid "Warning: cannot read" msgstr "" #: MMain.module:117 #, fuzzy msgid "no input file specified" msgstr ": aucun fichier d'entrée spécifié" #: MMain.module:118 msgid "Type " msgstr "Type" #: MMain.module:118 #, fuzzy msgid "for more information" msgstr "--help 'pour plus d'informations." #: MMain.module:131 #, fuzzy msgid "input file does not exist" msgstr ": le fichier d'entrée n'existe pas:" #: MMain.module:170 #, fuzzy msgid "compiling server page" msgstr "gbw: compilation de la page du serveur" #: MMain.module:215 msgid "Segmentation fault" msgstr "Erreur de segmentation" #: MMain.module:257 #, fuzzy msgid "GAMBAS Scripter version" msgstr "Version de GAMBAS Scripter" #: MMain.module:259 #, fuzzy msgid "GAMBAS Webpage Scripter version" msgstr "Version de GAMBAS Webpage Scripter" #: MMain.module:289 msgid "Option Is Not supported For WebPages" msgstr "" #: MMain.module:330 #, fuzzy msgid "Unknown option" msgstr ": Option inconnue:" #: MMain.module:360 #, fuzzy msgid "Create project" msgstr "gbs: créer un projet" #: MMain.module:448 msgid "gbs: process file: " msgstr "gbs: fichier de processus:" #: MMain.module:473 msgid "gbs: include script file: " msgstr "gbs: inclure le fichier de script:" #: MMain.module:500 msgid "Unexpected CLASS declaration" msgstr "Déclaration CLASS inattendue" #: MMain.module:504 msgid "Class name missing" msgstr "Nom de classe manquant" #: MMain.module:507 #, fuzzy msgid "create class" msgstr "gbs: créer une classe:" #: MMain.module:521 msgid "Unexpected Structure declaration" msgstr "Déclaration de structure inattendue" #: MMain.module:526 msgid "Structure name missing" msgstr "Nom de structure manquant" #: MMain.module:530 #, fuzzy msgid "Struct Defined outside main" msgstr "gbs: Struct Défini en dehors du principal:" #: MMain.module:544 #, fuzzy msgid "use library" msgstr "gbs: utilisez la bibliothèque:" #: MMain.module:548 #, fuzzy msgid "use component" msgstr "gbs: utiliser le composant:" #: MMain.module:555 msgid "Comma missing" msgstr "Virgule manquante" #: MMain.module:563 #, fuzzy msgid "Main procedure already defined" msgstr "gbs: Procédure principale déjà définie" #: MMain.module:585 #, fuzzy msgid "missing" msgstr "Virgule manquante" #: MMain.module:589 #, fuzzy msgid "procedure not defined, creating it" msgstr "gbs: procédure principale non définie, créez-la" #: MMain.module:604 #, fuzzy msgid "Unknown component" msgstr "Composant inconnu: &1" #: MMain.module:644 TcMMainFunctions.test:51 #, fuzzy msgid "Unknown Library" msgstr "Bibliothèque inconnue: &1" #: MMain.module:646 #, fuzzy msgid "use Library Path" msgstr "gbs: utilisez le chemin d'accès à la bibliothèque:" #: MMain.module:749 msgid "Unknown component: &1" msgstr "Composant inconnu: &1" #: MMain.module:814 msgid " Not Allowed" msgstr "Interdit" #: MMain.module:814 TbCommandLinePrograms.test:23 #, fuzzy msgid "From" msgstr "De" #: MMain.module:814 TbCommandLinePrograms.test:23 #, fuzzy msgid "Redefinition of variable" msgstr "Redéfinition de la variable" #: TbCommandLinePrograms.test:23 #, fuzzy msgid "Not Allowed" msgstr "Interdit" #: TbCommandLinePrograms.test:34 #, fuzzy msgid ": Unknown component:" msgstr "Composant inconnu: &1" gambas-3.16.3/app/src/gbs3/.lang/de.po000066400000000000000000000063031411575327000172010ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gbs3 3.15.1\n" "PO-Revision-Date: 2020-08-18 19:09 UTC\n" "Last-Translator: brian \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "gbs3" msgstr "gbs3" #: .project:2 msgid "Gambas Script" msgstr "Gambas-Skript" #: CComponent.class:53 msgid "Warning: cannot read" msgstr "Warnung: kann nicht lesen" #: MMain.module:159 msgid "no input file specified" msgstr "Keine Eingabedatei angegeben" #: MMain.module:160 msgid "Type" msgstr "Art" #: MMain.module:160 msgid "for more information" msgstr "für mehr Informationen" #: MMain.module:177 msgid "input file does not exist" msgstr "Eingabedatei existiert nicht" #: MMain.module:216 msgid "compiling server page" msgstr "server-Seite kompilieren" #: MMain.module:261 msgid "Segmentation fault" msgstr "Segmentierungsfehler" #: MMain.module:316 msgid "GAMBAS Scripter version" msgstr "GAMBAS Scripter Version" #: MMain.module:318 msgid "GAMBAS Webpage Scripter version" msgstr "GAMBAS Webpage Scripter Version" #: MMain.module:348 msgid "Option Is Not supported For WebPages" msgstr "Option wird für Webseiten nicht unterstützt" #: MMain.module:389 msgid "Unknown option" msgstr "Unbekannte Option" #: MMain.module:419 msgid "Create project" msgstr "Projekt erstellen" #: MMain.module:507 msgid "process file" msgstr "Prozessdatei" #: MMain.module:532 msgid "include script file" msgstr "skriptdatei einschließen" #: MMain.module:559 msgid "Unexpected CLASS declaration" msgstr "Unerwartete CLASS-Deklaration" #: MMain.module:563 msgid "Class name missing" msgstr "Klassenname fehlt" #: MMain.module:566 msgid "create class" msgstr "klasse erstellen" #: MMain.module:580 msgid "Unexpected Structure declaration" msgstr "Unerwartete Strukturdeklaration" #: MMain.module:585 msgid "Structure name missing" msgstr "Strukturname fehlt" #: MMain.module:589 msgid "Struct Defined outside main" msgstr "Struktur Außerhalb der Hauptleitung definiert" #: MMain.module:599 msgid "Syntax error" msgstr "Syntax-Fehler" #: MMain.module:603 msgid "use library" msgstr "Bibliothek benutzen" #: MMain.module:607 msgid "use component" msgstr "Komponente verwenden" #: MMain.module:614 msgid "Comma missing" msgstr "Komma fehlt" #: MMain.module:622 msgid "Main procedure already defined" msgstr "Hauptverfahren bereits definiert" #: MMain.module:644 msgid "missing" msgstr "fehlt" #: MMain.module:648 msgid "procedure not defined, creating it" msgstr "Prozedur nicht definiert, erstellt" #: MMain.module:663 msgid "Unknown component" msgstr "Unbekannte Komponente" #: MMain.module:703 TcMMainFunctions.test:51 msgid "Unknown Library" msgstr "Unbekannte Bibliothek" #: MMain.module:705 msgid "use Library Path" msgstr "Verwenden Sie den Bibliothekspfad" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "From" msgstr "Von" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Not Allowed" msgstr "Nicht erlaubt" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Redefinition of variable" msgstr "Neudefinition der Variablen" #: TbCommandLinePrograms.test:35 msgid " Unknown component" msgstr "Unbekannte Komponente" gambas-3.16.3/app/src/gbs3/.lang/en_US.po000066400000000000000000000061321411575327000176220ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gbs3 3.15.1\n" "PO-Revision-Date: 2020-08-18 19:09 UTC\n" "Last-Translator: brian \n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "gbs3" msgstr "gbs3" #: .project:2 msgid "Gambas Script" msgstr "Gambas Script" #: CComponent.class:53 msgid "Warning: cannot read" msgstr "Warning: cannot read" #: MMain.module:159 msgid "no input file specified" msgstr "no input file specified" #: MMain.module:160 msgid "Type" msgstr "Type" #: MMain.module:160 msgid "for more information" msgstr "for more information" #: MMain.module:177 msgid "input file does not exist" msgstr "input file does not exist" #: MMain.module:216 msgid "compiling server page" msgstr "compiling server page" #: MMain.module:261 msgid "Segmentation fault" msgstr "Segmentation fault" #: MMain.module:316 msgid "GAMBAS Scripter version" msgstr "GAMBAS Scripter version" #: MMain.module:318 msgid "GAMBAS Webpage Scripter version" msgstr "GAMBAS Webpage Scripter version" #: MMain.module:348 msgid "Option Is Not supported For WebPages" msgstr "Option Is Not supported For WebPages" #: MMain.module:389 msgid "Unknown option" msgstr "Unknown option" #: MMain.module:419 msgid "Create project" msgstr "Create project" #: MMain.module:507 msgid "process file" msgstr "process file" #: MMain.module:532 msgid "include script file" msgstr "include script file" #: MMain.module:559 msgid "Unexpected CLASS declaration" msgstr "Unexpected CLASS declaration" #: MMain.module:563 msgid "Class name missing" msgstr "Class name missing" #: MMain.module:566 msgid "create class" msgstr "create class" #: MMain.module:580 msgid "Unexpected Structure declaration" msgstr "Unexpected Structure declaration" #: MMain.module:585 msgid "Structure name missing" msgstr "Structure name missing" #: MMain.module:589 msgid "Struct Defined outside main" msgstr "Struct Defined outside main" #: MMain.module:599 msgid "Syntax error" msgstr "Syntax error" #: MMain.module:603 msgid "use library" msgstr "use library" #: MMain.module:607 msgid "use component" msgstr "use component" #: MMain.module:614 msgid "Comma missing" msgstr "Comma missing" #: MMain.module:622 msgid "Main procedure already defined" msgstr "Main procedure already defined" #: MMain.module:644 msgid "missing" msgstr "missing" #: MMain.module:648 msgid "procedure not defined, creating it" msgstr "procedure not defined, creating it" #: MMain.module:663 msgid "Unknown component" msgstr "Unknown component" #: MMain.module:703 TcMMainFunctions.test:51 msgid "Unknown Library" msgstr "Unknown Library" #: MMain.module:705 msgid "use Library Path" msgstr "use Library Path" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "From" msgstr "From" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Not Allowed" msgstr "Not Allowed" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Redefinition of variable" msgstr "Redefinition of variable" #: TbCommandLinePrograms.test:35 msgid " Unknown component" msgstr "Unknown component" gambas-3.16.3/app/src/gbs3/.lang/fr.po000066400000000000000000000064031411575327000172210ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gbs3 3.15.1\n" "PO-Revision-Date: 2020-08-18 19:09 UTC\n" "Last-Translator: brian \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 "gbs3" msgstr "gbs3" #: .project:2 msgid "Gambas Script" msgstr "Script Gambas" #: CComponent.class:53 msgid "Warning: cannot read" msgstr "Attention: impossible de lire" #: MMain.module:159 msgid "no input file specified" msgstr "aucun fichier d'entrée spécifié" #: MMain.module:160 msgid "Type" msgstr "Type" #: MMain.module:160 msgid "for more information" msgstr "pour plus d'informations" #: MMain.module:177 msgid "input file does not exist" msgstr "le fichier d'entrée n'existe pas" #: MMain.module:216 msgid "compiling server page" msgstr "compilation de la page du serveur" #: MMain.module:261 msgid "Segmentation fault" msgstr "Erreur de segmentation" #: MMain.module:316 msgid "GAMBAS Scripter version" msgstr "Version de GAMBAS Scripter" #: MMain.module:318 msgid "GAMBAS Webpage Scripter version" msgstr "Version de GAMBAS Webpage Scripter" #: MMain.module:348 msgid "Option Is Not supported For WebPages" msgstr "L'option n'est pas prise en charge pour les pages Web" #: MMain.module:389 msgid "Unknown option" msgstr "Option inconnue" #: MMain.module:419 msgid "Create project" msgstr "Créer un projet" #: MMain.module:507 msgid "process file" msgstr "fichier de processus" #: MMain.module:532 msgid "include script file" msgstr "inclure le fichier de script" #: MMain.module:559 msgid "Unexpected CLASS declaration" msgstr "Déclaration CLASS inattendue" #: MMain.module:563 msgid "Class name missing" msgstr "Nom de classe manquant" #: MMain.module:566 msgid "create class" msgstr "créer une classe" #: MMain.module:580 msgid "Unexpected Structure declaration" msgstr "Déclaration de structure inattendue" #: MMain.module:585 msgid "Structure name missing" msgstr "Nom de structure manquant" #: MMain.module:589 msgid "Struct Defined outside main" msgstr "Struct Défini hors main" #: MMain.module:599 msgid "Syntax error" msgstr "Erreur de syntaxe" #: MMain.module:603 msgid "use library" msgstr "utiliser la bibliothèque" #: MMain.module:607 msgid "use component" msgstr "utiliser le composant" #: MMain.module:614 msgid "Comma missing" msgstr "Virgule manquante" #: MMain.module:622 msgid "Main procedure already defined" msgstr "Procédure principale déjà définie" #: MMain.module:644 msgid "missing" msgstr "manquant" #: MMain.module:648 msgid "procedure not defined, creating it" msgstr "procédure non définie, création" #: MMain.module:663 msgid "Unknown component" msgstr "Composant inconnu" #: MMain.module:703 TcMMainFunctions.test:51 msgid "Unknown Library" msgstr "Bibliothèque inconnue" #: MMain.module:705 msgid "use Library Path" msgstr "utiliser le chemin de la bibliothèque" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "From" msgstr "De" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Not Allowed" msgstr "Interdit" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Redefinition of variable" msgstr "Redéfinition de la variable" #: TbCommandLinePrograms.test:35 msgid " Unknown component" msgstr "Composant inconnu" gambas-3.16.3/app/src/gbs3/.lang/it.po000066400000000000000000000064311411575327000172270ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gbs3 3.15.1\n" "PO-Revision-Date: 2020-08-18 19:09 UTC\n" "Last-Translator: brian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "gbs3" msgstr "gbs3" #: .project:2 msgid "Gambas Script" msgstr "Script di Gambas" #: CComponent.class:53 msgid "Warning: cannot read" msgstr "Attenzione: impossibile leggere" #: MMain.module:159 msgid "no input file specified" msgstr "nessun file di input specificato" #: MMain.module:160 msgid "Type" msgstr "Genere" #: MMain.module:160 msgid "for more information" msgstr "per maggiori informazioni" #: MMain.module:177 msgid "input file does not exist" msgstr "il file di input non esiste" #: MMain.module:216 msgid "compiling server page" msgstr "pagina del server di compilazione" #: MMain.module:261 msgid "Segmentation fault" msgstr "Errore di segmentazione" #: MMain.module:316 msgid "GAMBAS Scripter version" msgstr "Versione Gripas Scripter" #: MMain.module:318 msgid "GAMBAS Webpage Scripter version" msgstr "Versione dello Scripter della pagina Web GAMBAS" #: MMain.module:348 msgid "Option Is Not supported For WebPages" msgstr "L'opzione non è supportata per le pagine Web" #: MMain.module:389 msgid "Unknown option" msgstr "Opzione sconosciuta" #: MMain.module:419 msgid "Create project" msgstr "Crea progetto" #: MMain.module:507 msgid "process file" msgstr "file di processo" #: MMain.module:532 msgid "include script file" msgstr "include il file di script" #: MMain.module:559 msgid "Unexpected CLASS declaration" msgstr "Dichiarazione di CLASSE imprevista" #: MMain.module:563 msgid "Class name missing" msgstr "Nome della classe mancante" #: MMain.module:566 msgid "create class" msgstr "creare classe" #: MMain.module:580 msgid "Unexpected Structure declaration" msgstr "Dichiarazione di struttura imprevista" #: MMain.module:585 msgid "Structure name missing" msgstr "Nome della struttura mancante" #: MMain.module:589 msgid "Struct Defined outside main" msgstr "Struct Definito all'esterno principale" #: MMain.module:599 msgid "Syntax error" msgstr "Errore di sintassi" #: MMain.module:603 msgid "use library" msgstr "usa la libreria" #: MMain.module:607 msgid "use component" msgstr "usa componente" #: MMain.module:614 msgid "Comma missing" msgstr "Virgola mancante" #: MMain.module:622 msgid "Main procedure already defined" msgstr "Procedura principale già definita" #: MMain.module:644 msgid "missing" msgstr "mancante" #: MMain.module:648 msgid "procedure not defined, creating it" msgstr "procedura non definita, creandola" #: MMain.module:663 msgid "Unknown component" msgstr "Componente sconosciuto" #: MMain.module:703 TcMMainFunctions.test:51 msgid "Unknown Library" msgstr "Biblioteca sconosciuta" #: MMain.module:705 msgid "use Library Path" msgstr "usa il percorso della libreria" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "From" msgstr "A partire dal" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Not Allowed" msgstr "Non autorizzato" #: MMain.module:873 TbCommandLinePrograms.test:23 msgid "Redefinition of variable" msgstr "Ridefinizione della variabile" #: TbCommandLinePrograms.test:35 msgid " Unknown component" msgstr "Componente sconosciuto" gambas-3.16.3/app/src/gbs3/.project000066400000000000000000000034711411575327000167240ustar00rootroot00000000000000# Gambas Project File 3.0 Title=gbs3 Startup=ScriptMain Icon=icon.png Version=3.16.90 VersionFile=1 Component=gb.eval Component=gb.pcre Description="Gambas Script" Authors="Fabien Bodard, Benoit Minisini, Brian G" Arguments=[["--help"],["--use","'gb.notify,gb.web'","-e","For i as Integer = 0 To 10:Print \"Hello World\":Next"],["~/bin/who"],["-c","-T","~/bin/mytest"],["-v","TestApp"],["--verbose","TestAppWithMain"],["--verbose","TestLazyApp"],["-c","~/testerror.gbs"],["~/Scripts/TestQuoteAtEnd"],["-c","~/Scripts/AForm"],["-c","-v","-w","~/Scripts/GambasHelpSearch"],["-c","-v","-w","~/Scripts/AMain"],["-c","-v","-w","~/Scripts/gshoutput"],["-c","-v","-w","~/Scripts/TestSets/TestWebApp.gbs"],["--convert-project","~/Projects/TestPrograms/testerror"],["--convert-project","~/Projects/TestPrograms/testusingtxthighlight","~/Scripts/TestSets"],["-c","-v","~/Scripts/TestSets/testusingtxthighlight.gbs"],["-l","library"],["-c","-v","-w","~/Scripts/TestScripterNoMain"],["-c","-v","-w","~/Scripts/TestGUI.gbs"],["-c","-v","-w","~/Scripts/TestSets/CPU_Test.gbs"],["-c","-v","-w","~/Scripts/TestSets/TestWebPage.gbs"],["-c","-v","-w","--convert-script","~/Scripts/TestSets/CPU_Test.gbs","~/Scripts"],["-c","-v","-w","~/Scripts/CPU_Test"],["-c","-v","-w","-p","~/Scripts/TestPlugin","~/myplugins"],["-c","-v","-w","~/Scripts/RunComponent"],["-c","-v","-w","~/Scripts/testshell.gbs"],["-v","~/Projects/TestTimer"]] CurrentArgumentList=["--convert-project","~/Projects/TestPrograms/testerror"] TabSize=2 Translate=1 Language=en_US SourcePath=/home/brian/Desktop Maintainer=benoit Vendor=Princeton Address=benoit@localhost Url=http://gambas.sourceforge.net/en/main.html License=General Public Licence PackageName=gbs3-3.15.90 PackageVersion=10 CreateEachDirectory=1 Packager=1 Systems=ubuntu Menus=ubuntu:"Applications/Programming" Groups=ubuntu:"devel" gambas-3.16.3/app/src/gbs3/.src/000077500000000000000000000000001411575327000161155ustar00rootroot00000000000000gambas-3.16.3/app/src/gbs3/.src/CComponent.class000066400000000000000000000210631411575327000212130ustar00rootroot00000000000000' Gambas class file Static Public $cComponents As New Collection ' list of components used by script Static Public $aImplemented As New String[] Static Public $aSortKey As New Integer[] Static Public $bInitDone As Boolean = False Static Public All As New Collection Static Public (Classes) As Collection Static Private $iKey As Integer Public Const STABLE As Integer = 0 Public Const STABLE_NOT_FINISHED As Integer = 1 Public Const UNSTABLE As Integer = 2 Public Key As String Public Name As String Public Authors As New String[] Public Hiddens As New String[] Public Controls As New String[] Public Require As New String[] Public Exclude As New String[] Public Implement As New String[] Public Need As New String[] Public Loaded As Boolean Public ClassList As New String[] Public State As Integer Public SortKey As Integer Public Version As String Public Family As String Public ThirdParty As Boolean Static Public WhoImplement As New Collection Public Path As String Static Public Features As New Collection Private $bCalcKey As Boolean 'Static Private KeyWords As Collection = ["author": 0, "authors": 0, "require": 1, "requires": 1, "exclude": 2, "excludes": 2, "implement": 3, "implements": 3, "need": 4, "needs": 4, "version": 5, "[component]": 6] Static Private KeyWords As Collection = ["require": 1, "requires": 1, "exclude": 2, "excludes": 2, "implement": 3, "implements": 3, "need": 4, "needs": 4, "[component]": 6] Static Private Sub InitComponent(sFile As String) Dim hComponent As CComponent ' Dim hFic As File ' Dim sLig As String ' Dim sKey As String Dim sPath As String ' Dim iPos As Integer ' Dim sGroup As String Dim CompText As String Dim CompLines As String[] Dim ComSplit As String[] sPath = Component.Path &/ sFile ' Try hFic = Open sPath ' If Error Then ' Error ("Warning: cannot read");; sPath ' Return ' Endif Try CompText = File.Load(sPath) If Error Then Warning(("Component: cannot read") & ":" & sPath) Return Endif CompLines = Split(LCase(CompText), "\n", "", True) ' Line Input #hFic, sLig ' sLig = Trim(sLig) If CompLines[0] = "[component]" Then hComponent = New CComponent hComponent.Key = File.BaseName(sFile) 'hComponent.ThirdParty = Not $cName.Exist(hComponent.key) 'hComponent.Name = $cName[hComponent.Key] If Not hComponent.Name Then hComponent.Name = " " 'Subst(("&1 component"), hComponent.Key) 'While Not Eof(hFic) For i As Integer = 1 To CompLines.Max ComSplit = Split(CompLines[i], "=,", "", True) ' Line Input #hFic, sLig ' sLig = Trim(sLig) If ComSplit.count = 0 Then Continue If ComSplit[0][0] = ";" Or If ComSplit[0][0] = "'" Then Continue ' If Not sLig Then Continue ' If Left(sLig) = ";" Or Left(sLig) = "'" Then Continue ' If Comsplit[0] = "[component]" Then Break ' If sLig = "[Component]" Then Break 'If Left(sLig) = "[" And If Right(sLig) = "]" Then ' If ComSplit[0][0] = "[" And Comsplit[0][Comsplit[0].len - 1] = "]" Then ' sGroup = Mid$(ComSplit[0], 2, -1) ' Continue ' Endif With hComponent Dim index As Variant = KeyWords[ComSplit[0]] If IsNull(index) Then Continue On index Goto lAuthor, lRequire, lExclude, lImplement, lNeed, lVersion, lComponent Continue lAuthor: .Authors = ComSplit.extract(1, -1) Continue lRequire: .Require = ComSplit.extract(1, -1) Continue lExclude: .Exclude = ComSplit.extract(1, -1) Continue lImplement: .Implement = ComSplit.extract(1, -1) Continue lNeed: .Need = ComSplit.extract(1, -1) Continue lVersion: .Version = ComSplit[1] Continue lComponent: Break End With Next If hComponent.Key Then All[hComponent.Key] = hComponent Endif Endif ' Close #hFic ' Catch ' ' Debug "Unable to read component file:";; sFile End Static Public Sub Exist(ComponentName As String) As Boolean Return All.Exist(ComponentName) End Static Public Sub _init() If $bInitDone = True Then Return Dim aComp As String[] Dim sFile As String aComp = Dir(Component.Path, "*.component").Sort() For Each sFile In aComp InitComponent(sFile) Next SortComponents() WhoImplement["form"] = ["gb.gui"] GetWhoImplement() Reset() $bInitDone = True End Static Public Sub Reset() If $bInitDone = False Then Return Dim hComponent As CComponent For Each hComponent In All hComponent.Loaded = False Next Classes = New Collection(gb.IgnoreCase) End Static Public Sub Exit() If $bInitDone = False Then Return All.Clear() End Static Public Sub Clear() If $bInitDone = False Then Return Reset() $cComponents.Clear() ' list of components used by script $aImplemented.Clear() $aSortKey.Clear() All.Clear() $bInitDone = False End Static Private Sub GetWhoImplement() Dim s As String Dim hComp As CComponent For Each hComp In CComponent.All For Each s In hComp.Implement If WhoImplement[s] = Null Then WhoImplement[s] = New String[] If Not WhoImplement[s].Exist(hComp.Name) Then WhoImplement[s].Add(hComp.key) Next Next End Public Sub CalcSortKey() Dim sComp As String Dim sNeed As String Dim hComp As CComponent If SortKey = 0 Then If $bCalcKey Then Return $bCalcKey = True If Require.Count Or If Need.Count Then For Each sComp In Require hComp = All[sComp] If Not hComp Then Continue If hComp <> Me Then hComp.CalcSortKey Next For Each sNeed In Need For Each hComp In All If hComp.Implement.Find(sNeed) >= 0 Then hComp.CalcSortKey Endif Next Next Endif Inc $iKey SortKey = $iKey 'DEBUG Key;; "=";; SortKey $bCalcKey = False Endif End Static Private Sub SortComponents() Dim iMax As Integer Dim hComponent As CComponent Dim cNewAll As New Collection ' Dim iInd As Integer Dim Lsort As New String[] Dim skey As String For Each hComponent In All hComponent.CalcSortKey iMax = Max(iMax, hComponent.SortKey) 'DEBUG hComponent.Key;; hComponent.SortKey Next For Each hComponent In All Lsort.Add(Format(hcomponent.SortKey, "0000") & ":" & hComponent.key) Next Lsort.Sort() ' For iInd = 1 To iMax ' For Each hComponent In All ' If hComponent.SortKey = iInd Then ' cNewAll.Add(hComponent, hComponent.Key) ' 'DEBUG hComponent.Key;; hComponent.SortKey ' Endif ' Next ' Next For Each skey In Lsort Dim compkey As String = Split(skey, ":")[1] cNewAll.Add(All[CompKey], Compkey) Next All = cNewAll End Static Public Sub ListAllComponents() Dim AllComp As New String[] For Each CComp As CComponent In All AllComp.Add(All.key) Next AllComp.Sort() Print AllComp.Join("\n") End Static Public Sub processComponent(CompName As String, Progline As Integer, sPath As String) If Not CComponent.Exist(CompName) Then CompileError(sPath, ProgLine, Subst(("Unknown component") & ": &1", CompName)) Else $cComponents[All[CompName].SortKey] = CompName $aSortKey.Add(All[CompName].SortKey) $aImplemented.Insert(All[CompName].Implement) Endif End Static Public Sub GetRequiredComp(sComp As String) Dim s As String If Not All.Exist(sComp) Then Return For Each s In All[sComp].Require If Not $cComponents.Exist(All[s].SortKey) Then $cComponents.Add(s, All[s].Sortkey) $aSortKey.add(All[s].SortKey) $aImplemented.Insert(All[s].Implement) GetRequiredComp(s) Endif Next End Static Public Sub GetNeededComp(sComp As String) Dim s, t As String Dim bExist As Boolean If Not All.Exist(sComp) Then Return For Each s In All[sComp].Need If $aImplemented.Exist(s) Then Break For Each t In WhoImplement[s] If $cComponents.Exist(t) Then bExist = True Break Endif Next If Not bExist Then t = WhoImplement[s][0] $cComponents.Add(t, All[t].SortKey) $aSortKey.add(All[t].SortKey) $aImplemented.Insert(All[t].Implement) Endif GetNeededComp(t) Next End Static Public Sub ComponentEntries() As String Dim s As String Dim i As String Dim sPrjFileContent As String = "" For Each s In $cComponents GetNeededComp(s) Next For Each s In $cComponents GetRequiredComp(s) Next CComponent.Exit $aSortKey.Sort For Each i In $aSortKey sPrjFileContent &= "Component=" & $cComponents[i] & "\n" Next Return sPrjFileContent End gambas-3.16.3/app/src/gbs3/.src/ClassDef.class000066400000000000000000000026211411575327000206310ustar00rootroot00000000000000' Gambas class file Public sName As String = "" Public aText As String[] Public aTokens As Variant[] Public aTypes As Variant[] Public aPositions As Variant[] Public iLineNumber As Integer Public sDefinedIn As String Public sExtention As String Public Sub _new(ClassName As String, ClassText As String[], ClassTokens As Variant[], ClassTypes As Variant[], ClassPositions As Variant[], Optional extention As String = "Class") sName = ClassName atext = ClassText aTokens = ClassTokens aTypes = ClassTypes aPositions = ClassPositions sExtention = extention End Public Sub Save(sPrjPath As String, bFast As Boolean, bUnsafe As Boolean) As Boolean Dim ClassFile As String Dim DirectiveFast As String = IIf(bFast = True, IIf(bUnsafe = True, "Fast Unsafe\n", "Fast\n"), "") If sExtention == "CONNECTION" Then If Not Exist(sPrjPath &/ ".connection") Then Mkdir sPrjPath &/ ".connection" Endif ClassFile = sPrjPath &/ ".connection" &/ sName & "." & sExtention Else ClassFile = sPrjPath &/ ".src" &/ sName & "." & sExtention Endif Verbose("Writing " & sExtention & " " & sName & " to : " & ClassFile & " From Script : " & sDefinedIn & "." & iLineNumber) Try File.Save(ClassFile, DirectiveFast & aText.Join("\n")) If Error Then CompileError(sDefinedIn, iLineNumber, "Unable to Write" & sExtention & sName & " to " & Quote(ClassFile) & " Reason : " & Error.text) Endif End gambas-3.16.3/app/src/gbs3/.src/Compile.module000066400000000000000000000015701411575327000207170ustar00rootroot00000000000000' Gambas module file ' Reduced execute time, on sample from 3900, to 2200 good savings Private $sCommand As String = System.Path &/ "bin/gbc" & System.Version Private $sBuffer As String Public GoodCompile As Boolean = False Public Sub _call(Parameters As String, ProjectPath As String) As String Dim mmProc As Process $sBuffer = "" Dim CmdChain As String[] = [$sCommand, Parameters, ProjectPath] Try mmProc = Exec CmdChain For Read As "CompRead" If Error Then Error.Raise("Compiler error:" & Error.text) Endif mmProc.Wait() If mmProc.value = 0 Then GoodCompile = True Else GoodCompile = False Endif Verbose("Compile exit code=" & mmProc.Value) Return $sBuffer End Public Sub CompRead_read() Dim sLine As String Read #Last, sLine, -256 $sBuffer &= sLine End Public Sub CompRead_Error(ErrText As String) $sBuffer &= errText End gambas-3.16.3/app/src/gbs3/.src/CompileError.module000066400000000000000000000003151411575327000217250ustar00rootroot00000000000000' Gambas module file Public Sub _Call(sPath As String, iLine As Integer, sMessage As String) Error.Raise(File.Name(Args[0]) & ": " & sPath & "." & iLine & ": " & sMessage) End ' Gambas module file gambas-3.16.3/app/src/gbs3/.src/Context.class000066400000000000000000000117021411575327000205710ustar00rootroot00000000000000' Gambas class file Public $bTestMode As Boolean = False ' used to test the application from the test suite Public $sTestModeCapture As String ' Used to capture executed program output in test mode Public gbsver As String = "gambas" & System.version ' Version name of the current program Public $bListComponents As Boolean = False ' List all the available components Public $bListLibraries As Boolean = False ' List all the available Libraries Public $bHasLibraries As Boolean = False ' The user included some libraries Public $bHasComponents As Boolean = False ' The User specified some components Public $bAllowLazyScript As Boolean = True ' Allow to generate program from a lazt script Public $bArchiveOutput As Boolean = False ' Indicates that the user want to save the archive as an executable Public $bScriptSourceStdIn As Boolean = False ' If file name is - or no filename is provided input from file.in(stdin) Public $sPreambleHeader As String ' contains comments and such to be put before the file Public $sProgramHeader As String ' Contains statements and variable definitions needed before pubic sub main is defined Public $sCompilerOptions As String ' Contains all the compiler options -- fast, unsafe etc Public $sStructures As String ' Public structs that are global and outside and before the public sub main definition Public $sFinalProgram As String ' The final program Assembled from the script file to be written before compile is invoked Public $bClassAsStartup As Boolean = False ' This indicates that the startup is a class not a module we create Public $bBuildOnly As Boolean ' add support to have scripter build the project only and print out the source files 'Public $bPrecompiler As Boolean ' precompiler is enabled on the command line programs {i}var1 = 3 -> Dim Var1 as integer : var1 = 3 Public $sUse As String ' List of the componants to be used from the command line Public $aIncFiles As New String[] ' files to be included Public $bNoCache As Boolean ' turns off script compiled version caching, or ignores the cache already there Public $bVerbose As Boolean = False ' Turns on the verbose, out put of the script compiler Public $bWarning As Boolean ' added to support warings to be displayed Public $bWebPage As Boolean ' Used to indicate if we are Building a web page project Public $bExecuteFromArgs As Boolean ' Indicates that the program was defined on the gbs command line Public $bFast As Boolean ' This indicates that the script will compile with the fast i.e jit compiler Public $bUnsafe As Boolean ' turns off all bounds and memory checks for variables and calls Public $bExport As Boolean Public $bDebug As Boolean ' Enables the debug switch during gbc compiling Public $bTrace As Boolean ' Turns on tracing in the compiler Public $bTerseListing As Boolean ' limit the output from a script error Public $bCreateProject As Boolean ' Create a project from the script file Public $bPlugin As Boolean ' if true then generate a plugin, class with script name and _Call() as the entry point ' can be loaded with component.load followed by class.load both with the basename of the script '' Reset all internal tables and conditions '' Used for Test harness Public Sub _ResetAll() '$hOutClass = Null $bScriptSourceStdIn = False ScriptPreProcess.reset() $sProgramHeader = "" $sStructures = "" '$sClassDefinition = "" If $bHasComponents Then CComponent.Clear() $bHasComponents = False Endif If $bHasLibraries Then Libraries.Clear() $bHasLibraries = False Endif ' GenerateFilesFromArgs.$aVarsDecl.Clear() ' Changed from string[] $bWebPage = False $bBuildOnly = False ' add support to have scripter build the project only and print out the source files if verbose set '$bPrecompiler = False $bArchiveOutput = False $bExport = False $sUse = "" $aIncFiles.Clear() $sFinalProgram = "" $bNoCache = False $bVerbose = False $bWarning = False ' added to support warings to be displayed $bExecuteFromArgs = False $bFast = False $bUnsafe = False $bDebug = False $bTrace = False $bTerseListing = False End gambas-3.16.3/app/src/gbs3/.src/ConvertProject.module000066400000000000000000000107361411575327000223020ustar00rootroot00000000000000' Gambas module file Public cSources As New Collection(gb.ignorecase) Private Sub ConfigureSources() cSources.Add(".src", "class") cSources.Add(".src", "module") cSources.Add(".src", "form") cSources.Add(".src", "webform") cSources.Add(".src", "webpage") cSources.Add(".connection", "connection") End Public Sub _call(sInputProjectDir As String, Optional sOutputScriptDir As String = "") ConfigureSources() Dim s As String Dim sourceProject As String = sInputProjectDir Dim DestPath As String = sOutputScriptDir Dim sPath As String = "" If Not Exist(SourceProject) Then warning("Unable to find source project " & SourceProject, True) Return Endif Dim ScriptFile As String = "#!/usr/bin/env gbs3 \n'Auto Generated Script " & CStr(Now) & " Version (" & Application.version & ")\n" Dim ScriptName As String = Split(sourceProject, "/").last If DestPath <> "" Then ' we have the destination directory If Not Exist(DestPath) Then warning("Output Path for script not found : " & DestPath, True) Return Endif DestPath = DestPath &/ ScriptName & ".gbs" Else DestPath = Env["PWD"] &/ ScriptName & ".gbs" Endif Dim aProjectFile As String[] Try aProjectFile = Split(File.Load(sourceProject &/ ".project"), "\n", "\"\"", True, True) If Error Then Warning("Unable to access the project file : " & SourceProject &/ ".project", True) Return Endif Dim Startup As String = "" For Each s As String In aProjectFile Dim aSS As String[] = Split(s, "=", "\"\"", True, True) If AsS[0] == "COMPONENT" Or If AsS[0] == "LIBRARY" Then ScriptFile &= "Use " & Quote(AsS[1]) & "\n" Else If aSS[0] == "STARTUP" Then Startup = aSS[1] ScriptFile &= "#Script Startup=" & Quote(Startup) & "\n" Else If aSS[0] == "TITLE" Then ScriptFile &= "#Script Title=" & Quote(aSS[1]) & "\n" Else If aSS[0] == "DESCRIPTION" Then ScriptFile &= "#Script Description=" & Quote(aSS[1]) & "\n" Else If aSS[0] == "NAME" Then ScriptFile &= "#Script Name=" & Quote(aSS[1]) & "\n" Else If aSS[0] == "AUTHORS" Or If Upper(aSS[0]) = "AUTHOR" Then ScriptFile &= "#Script Authors=" & Quote(aSS[1]) & "\n" Else If aSS[0] == "VERSION" Then ScriptFile &= "#Script Version=" & Quote(aSS[1]) & "\n" Else If aSS[0] == "LICENSE" Then ScriptFile &= "#Script License=" & Quote(aSS[1]) & "\n" Else If aSS[0] == "USEHTTPSERVER" Then ScriptFile &= "#Script UseHttpServer=" & Quote(aSS[1]) & "\n" Endif Next For Each sourceDir As String In cSources sPath = SourceProject &/ sourceDir If Not Exist(sPath) Then warning("Source Path Not found " & Quote(sPath) & " Ignored") Continue Endif Dim aFiles As String[] = Dir(sPath, "*." & cSources.key, gb.file) For Each s In aFiles Dim Program As String Try Program = File.Load(sPath &/ s) If Error Then Warning("Unable to generate Script using file:" & Error.text & " : " & sPath &/ s, True) Return Endif If cSources.key == "module" Or If cSources.key == "class" Then Program = ConvertContextWords(Program) Endif If cSources.key == "module" And aFiles.Count = 1 Or If cSources.key == "module" And File.basename(s) == Startup Then ScriptFile &= Program & "\n" Else ScriptFile &= cSources.key & " " & File.BaseName(s) & "\n" & Program & "\nEnd " & cSources.key & "\n" Endif Next Next Try File.Save(DestPath, ScriptFile) If Error Then Warning("Unable to write Output Generated script to : " & DestPath, True) Else Chmod DestPath To "rwxr-xr-x" Endif End Sub ConvertContextWords(Program As String) As String Dim OutPutProgram As String = "" Dim ProgLines As String[] = Split(Program, "\n") For Each sLine As String In ProgLines Highlight.Analyze(sLine) If Highlight.Types.count = 2 And If Highlight.Types[0] = Highlight.Keyword And If Highlight.Symbols[0] == "class" And If Highlight.Types[1] = Highlight.symbol Then sline = Replace(sline, "class", "ClassRef", gb.IgnoreCase) Endif OutPutProgram &= sLine & "\n" Next Return OutPutProgram End gambas-3.16.3/app/src/gbs3/.src/GenerateFiles.module000066400000000000000000000047561411575327000220550ustar00rootroot00000000000000' Gambas module file Public $cFirstParse As Collection = ["PUBLIC": 0, "CLASS": 1, "STRUCT": 2, "SUB": 3, "FUNCTION": 4, " PROCEDURE": 5, "FAST": 6, "INCLUDE": 7, "END": 8, "ENUM": 9] Public $cPublicParse As Collection = ["SUB": 0, "FUNCTION": 1, "PRODCEDURE": 2, "STRUCT": 3, "ENUM": 4] Public $cEndParse As Collection = ["STRUCT": 0, "CLASS": 1, "ENUM": 2] Public $cSubPars As Collection = ["MAIN": 0] Public Sub _Call($oContext As Context, Path As String, sPrjPath As String) Dim cReader As Reader Dim cDef As ClassDef If $oContext.$bExecuteFromArgs Then Verbose("Begin Script Process : from args or -e < ") cReader = New Reader($oContext, "", Path) Else If $oContext.$bScriptSourceStdIn And Not $oContext.$bWebPage Then Verbose(("Begin Script Process : Read From StdIn")) cReader = New Reader($oContext, "") Else Verbose(("Begin Script Process") & ": " & File.Name(Path)) cReader = New Reader($oContext, Path) Endif If cReader.HasBlocks() Then For Each cDef In cReader.getBlocks() If cDef.sExtention == "module" And If cDef.sName == ScriptPreProcess.GetStartup() Then $oContext.$sFinalProgram = cDef.aText.Join("\n") & "\n" Else If cDef.sExtention == "class" And If cDef.sName == ScriptPreProcess.GetStartup() Then $oContext.$bClassAsStartup = True Endif cDef.Save(sPrjPath, $oContext.$bFast, $oContext.$bUnsafe) If $oContext.$bBuildOnly And $oContext.$bTestMode Then Error cDef.sExtention & " "; cDef.sName; "\n"; cDef.aText.Join("\n"); "\nEnd " & cDef.sExtention & "\n" Endif Endif Next Endif 'If Not cReader.bModuleStartup Then If cReader.IsMainDefined() Then $oContext.$sFinalProgram = cReader.GetProgram() Else If cReader.HasPublicOrSub() Then cReader.DisplayWarnings() If $oContext.$bAllowLazyScript Then Warning("Auto Generation of Public Main() entry point") $oContext.$sFinalProgram = GenerateFromLazyScript($oContext, cReader) Else CompileError(Path, 1, "Script Contains Public or Sub Definitions Without Having a 'Public Sub main()' defined") Endif Else If $oContext.$bPlugin Then $oContext.$sFinalProgram = "Public Sub _call(...) as variant\n" & cReader.GetProgram() & "\nEnd\n" Else $oContext.$sFinalProgram = "Public Sub main()\n" & cReader.GetProgram() & "\nEnd\n" Endif Endif 'Endif verbose("Completed Generation of files ") 'Stop End gambas-3.16.3/app/src/gbs3/.src/GenerateFilesFromArgs.module000066400000000000000000000055721411575327000235130ustar00rootroot00000000000000' Gambas module file '' The following table is used by the precompiler to translate from {i} to Integer for example ' Public $cNativeTypes As Collection = ["i": "Integer", "s": "String", "f": "Float", "d": "Date", "b": "Boolean", "v": "Variant", "o": "Object", "l": "Long", "p": "Pointer"] ' Public $aVarsDecl As New Collection ' Used by preprocessor to store generated variable definitions Public Sub _Call($oContext As Context, sLine As String, sPrjPath As String) Dim bCrochetOuvert As Boolean Dim s As String Dim i As Integer Dim sCode As String 'Use management If $oContext.$sUse Then UseLibComp._FromString($oContext.$sUse) Endif For i = 1 To Len(sLine) s = Mid(sLine, i, 1) If s = "[" Then bCrochetOuvert = True If s = "]" Then bCrochetOuvert = False If s = ":" And Not bCrochetOuvert Then s = "\n" sCode &= s Next sCode &= "\n" $oContext.$bExecuteFromArgs = True GenerateFiles($oContext, sCode, sPrjPath) ' $aVarsDecl.Clear() ' If $oContext.$bPrecompiler Then ' For Each s In Split(sCode, "\n") ' sNew &= PrecompileLine(s) & "\n" ' Next ' 'We look in the code if none of the insertion declaration exist already. ' For Each sI As String In $aVarsDecl ' If Not InStr(sNew, sI, 0, gb.IgnoreCase) Then ' aDims.Add(sI) ' Endif ' Next ' ' sCode = sNew ' ' Endif 'scode = "Public Sub Main()\n" & aDims.Join("\n") & "\n" & sCode ' scode = "Public Sub Main()\n" & sCode & "\nEnd\n" ' $oContext.$sFinalProgram &= sCode End 'Public Function PrecompileLine(sLine As String) As String ' ' Dim sVar As String ' Dim sType As String ' Dim sDecl As String ' Dim aSymbols As String[] = Highlight.Analyze(sline, True) ' Dim aTypes As Integer[] = highlight.types ' ' For i As Integer = 0 To aSymbols.Max ' ' If aTypes[i] = highlight.symbol And If aSymbols[i].len = 3 And If (aSymbols[i][0] = "{" And aSymbols[i][2] = "}") And If i + 1 <= aSymbols.max And If aTypes[i + 1] = Highlight.Symbol Then ' If $cNativeTypes.Exist(aSymbols[i][1]) Then ' sType = $cNativeTypes[aSymbols[i][1]] ' sVar = aSymbols[i + 1] ' sDecl = "Dim " & sVar & " As " & sType ' 'If Not $aVarsDecl.Exist(sDecl) Then $aVarsDecl.Add(sDecl) ' If Not $aVarsDecl.Exist(sVar) Then ' $aVarsDecl.Add(sDecl, sVar) ' Else ' If $aVarsDecl[sVar] <> sDecl Then ' CompileError(sline, 1, ("Redefinition of variable") & " " & sDecl & " " & ("From") & " " & $aVarsDecl[sVar] & " " & ("Not Allowed")) ' Endif ' Endif ' Inc i ' Endif ' Endif ' Next ' ' For i = 0 To aSymbols.max ' If aTypes[i] = Highlight.symbol And If aSymbols[i].len = 3 And If (aSymbols[i][0] = "{" And aSymbols[i][2] = "}") Then ' sLine = Replace(sline, aSymbols[i], "") ' Endif ' Next ' ' Return sLine ' ' End gambas-3.16.3/app/src/gbs3/.src/GenerateFromLazyScript.module000066400000000000000000000100371411575327000237300ustar00rootroot00000000000000' Gambas module file Private aDefWords As Collection = ["PUBLIC": True, "STATIC": True, "STRUCT": True, "FAST": True, "UNSAFE": True, "PRIVATE": True, "ENUM": True] Private aDefFunc As Collection = ["SUB": True, "PROCEDURE": True, "FUNCTION": True] Private aSpecial As Collection = ["STRUCT": True, "ENUM": True] Private $iAdjustedOffset As Integer Public Sub _call(oContext As Context, Program As Reader) As String aDefWords.default = False aDefFunc.default = False aSpecial.default = False ' Dim DefOutput As String = "'Gambas Module 3.15.3\n" Dim DefOutput As String = "" 'If oContext.$bExport Then DefOutPut &= "Export\n" ' If oContext.$bFast Then ' DefOutPut &= "Fast" & IIf(oContext.$bUnsafe, " Unsafe\n", "\n") ' Endif Dim MainOutput As String If oContext.$bPlugin Then MainOutput = "Public Sub _call(...) as Variant\n" Else MainOutput = "Public Sub Main()\n" Endif $iAdjustedOffset = 0 For Each i As Integer In Program.GlobalItemPosition For Each s As String In Program.ProgramSymbols[i - $iAdjustedOffset] If Not aDefwords[s] Then If Not aDefFunc[s] Then DefOutPut &= ProcessVariable(program, i - $iAdjustedOffset) Break Else DefOutPut &= ProcessBlock(Program, i - $iAdjustedOffset, ["END"]) & "\n" Break Endif Else If aSpecial[s] Then If s = "ENUM" Then Dim DefEnum As String = ProcessVariable(Program, i - $iAdjustedOffset) If Upper(DefEnum) Begins "ENUM" Then DefEnum = "Public " & DefEnum DefOutPut &= DefEnum & "\n" Break Else Dim DefStruct As String = ProcessBlock(Program, i - $iAdjustedOffset, ["END", "STRUCT"]) If Upper(DefStruct) Begins "STRUCT" Then DefStruct = "Public " & DefStruct DefOutPut &= DefStruct & "\n" Break Endif Endif Next Next MainOutPut &= Program.ProgramLines.Join("\n") & "\nEND\n" Verbose("Before Compile--------------------------------------------------") Verbose(MakeListing.GenListing(oContext, DefOutput & MainOutPut)) Verbose("_____________________________________________") Return DefOutput & MainOutPut End Private Sub ProcessBlock(Program As Reader, Index As Integer, EndWith As String[]) As String Dim Matched As Boolean = False For i As Integer = index To Program.ProgramLines.max If index > Program.ProgramLines.max Then Break 'DefBlock &= Program.ProgramLines[Index] & "\n" Matched = True If Program.ProgramSymbols[i].count = EndWith.count Then For j As Integer = 0 To EndWith.max If EndWith[j] <> Program.ProgramSymbols[i][j] Then Matched = False Break Endif Next If Matched Then Break Endif Next If i > Program.ProgramLines.max Then Dim sEndBlock As String = "" sEndBlock &= EndWith.Join(" ") & " " CompileError(Program.sSourceFile, index, Subst("Missing &1 for :&2\n", sEndBlock, Program.ProgramLines[index])) Endif Return AdjustProgram(Program, i, index) End Public Sub AdjustProgram(Program As Reader, EndIndex As Integer, StartIndex As Integer) As String Dim DefOutPut As String = "" Dim BlockLen As Integer = (EndIndex + 1) - Startindex $iAdjustedOffset += BlockLen DefOutPut = Program.ProgramLines.Extract(StartIndex, BlockLen).Join("\n") & "\n" Program.ProgramSymbols.Delete(StartIndex, BlockLen) Program.ProgramTypes.Delete(StartIndex, BlockLen) Return DefOutPut End Private Sub ProcessVariable(Program As Reader, index As Integer) As String Dim DefOutPut As String = "" Dim aSymbols As String[] = Program.ProgramSymbols[index] Dim aTypes As Integer[] = Program.ProgramTypes[index] For i As Integer = 0 To aSymbols.max If aTypes[i] = Highlight.operator And If aSymbols[i] = "=" Then DefOutPut = ProcessAssignment(Program, index, i) Return DefOutPut Endif Next DefOutPut = Program.ProgramLines[index] & "\n" AdjustProgram(Program, Index, Index) Return DefOutPut End gambas-3.16.3/app/src/gbs3/.src/Libraries.module000066400000000000000000000122501411575327000212400ustar00rootroot00000000000000' Gambas module file Public gbsver As String = "gambas" & System.version ' Version name of the current program Public $cLibraries As New Collection ' List of libraries used by script ' Search local directory then system directory for libraries Public $aLibraryPaths As New String[] Public $sLibraryNoVendor As String = User.home &/ "/.local/share/" &/ gbsver &/ "lib/(unknown)" ' Gambas module file Private $bInitialized As Boolean = False '' This function looks for XDG-DATA-HOME and XDG-DATA-DIRS and replaces '' Entries in the $aLibraryPaths config array as needed Public Sub ConfigureLibraries() Dim aDataPaths As String[] '' Check if already initialized If $bInitialized Then Return Endif $bInitialized = True If Env["XDG_DATA_HOME"] <> "" Then $aLibraryPaths[0] = Env["XDG_DATA_HOME"] &/ gbsver &/ "lib" Endif $aLibraryPaths.Add(User.home &/ "/.local/share/" &/ gbsver &/ "lib") $aLibraryPaths.Add("/usr/lib" &/ gbsver) If Exist("usr/lib/" &/ System.Architecture) Then $aLibraryPaths.Add("usr/lib/" &/ System.Architecture &/ gbsver) Endif ' As an optional extra use the LD_LIBRARY_PATH to look for shared libraries as well If Env["LD_LIBRARY_PATH"] <> "" Then aDataPaths = Split(Env["LD_LIBRARY_PATH"], ":", "", True) For iI As Integer = 0 To aDataPaths.Max aDataPaths[iI] &= "/" & gbsver Next $aLibraryPaths.Insert(aDataPaths, 1) Endif ' look in all the directories specified by the XDG_DATA paths If Env["XDG_DATA_DIRS"] <> "" Then aDataPaths = Split(Env["XDG_DATA_DIRS"], ":", "", True) For iI As Integer = 0 To aDataPaths.Max aDataPaths[iI] &= "/" & gbsver &/ "lib" Next $aLibraryPaths.Insert(aDataPaths, 1) Endif ' For backward compatibility look for an executable of the provided name If Env["PATH"] <> "" Then aDataPaths = Split(Env["PATH"], ":", "", True) $aLibraryPaths.Insert(aDataPaths) Endif End Public Sub ListLibraries() Dim LibList As New String[] For Each sPath As String In $aLibraryPaths LibList.Insert(ListLibrariesIn(sPath)) Next LibList.Sort() Print LibList.Join("\n") End Public Sub ListLibrariesIn(sPath As String, Optional Level As Integer = 0) As String[] Dim fileList As String[] Dim LibList As New String[] If Not Exist(sPath) Or If level > 4 Then Return LibList FileList = Dir(sPath, "*:*.gambas", gb.file) For Each sFile As String In FileList LibList.Add(sPath &/ sFile) Next FileList = Dir(sPath, "", gb.Directory) For Each sFile As String In FileList LibList.Insert(ListLibrariesIn(sPath &/ sFile, Level + 1)) Next Return LibList End Public Sub ProcessLibrary(LibName As String, ProgLine As Integer, Path As String) Dim LibAndVersion As String[] Dim LibEntry As String = "" Dim LibPath As String[] Dim LibFilename As String Dim LibDirPath As String Dim WantedVersion As String If Not $bInitialized Then ConfigureLibraries() Endif LibFileName = File.Name(LibName) ' If full path then get the file name part LibDirPath = File.Dir(LibName) ' Get the dir path portion LibAndVersion = Split(LibFileName, ":", "", True) If LibAndVersion.count = 1 Then LibAndVersion.add("") ' add a "" to get highest version if no version provided LibPath = Split(LibAndVersion[0], ".", "", True) ' We should now have a vendor and libname or just one entry if no vendors WantedVersion = LibAndVersion[1] ' The version that we will look for If LibDirPath <> "" Then ' we have an absolute path or home based path Try LibEntry = CheckLibVersions(LibDirPath &/ LibPath.Join("/"), WantedVersion) ' if no version force to highest by using "" Else If LibPath.count = 1 Then ' We have an unknown vendor we can only check the (unknown) local directory then Try LibEntry = CheckLibVersions($sLibraryNoVendor &/ LibPath[0], WantedVersion) Else For Each SearchLocation As String In $aLibraryPaths Try LibEntry = CheckLibVersions(SearchLocation &/ LibPath.Join("/"), WantedVersion) If Error Then Continue If LibEntry <> "" Then Break Next Endif Endif If LibEntry = "" Then CompileError(Path, ProgLine, Subst(("Unknown Library") & ": &1", LibName)) Else Verbose(("use Library Path") & ": " & LibEntry) $cLibraries.Add(LibEntry, LibFileName) Endif End Public Sub CheckLibVersions(sPath As String, Version As String) As String Dim sDir As String = File.Dir(sPath) If Not Exist(sDir) Then Return "" Dim sName As String = File.Name(sPath) & ":" & version & "*" & ".gambas" Dim sEntries As String[] = Dir(sDir, sName, gb.file).Sort() If sEntries.count > 0 Then Return sDir &/ sEntries[sEntries.max] ' return the highest level library Else Return "" Endif End Public Sub clear() $cLibraries.Clear() End Public Sub LibraryEntries() As String Dim sPrjFileContent As String = "" For Each ci As String In $cLibraries sPrjFileContent &= "Library=" & ci & "\n" Next Return sPrjFileContent End gambas-3.16.3/app/src/gbs3/.src/MServerPage.module000066400000000000000000000050011411575327000215000ustar00rootroot00000000000000' Gambas module file Private $hOut As File Private $bLastPrint As Boolean Private $iLenPrint As Integer Private Sub PrintHTML(sStr As String) If Len(sStr) Then $iLenPrint += Len(sStr) If $iLenPrint > 32000 Then $bLastPrint = False If Not $bLastPrint Then $iLenPrint = Len(sStr) Print #$hOut, "PRINT "; Else Print #$hOut, " "; Endif Print #$hOut, Quote(sStr); $bLastPrint = True Endif End Private Sub PrintSemiColon() If $bLastPrint Then Print #$hOut, ";" $bLastPrint = False End Public Sub ReadFile(sPath As String) As String Dim sSourceFile As String = "" If ScriptMain.$oContext.$bScriptSourceStdIn Then While Not Eof(File.in) Try sSourceFile &= Read -254 Wait Wend Else sSourceFile = File.Load(sPath) Endif Return sSourcefile End Public Sub Make(sPath As String) As String Dim sData As String Dim iPos As Integer Dim iPos2 As Integer Dim sCar As String Dim sWait As String sData = ReadFile(sPath) sPath = Temp$("gs") $hOut = Open sPath For Create Print #$hOut, "USE \"gb.web\"" Print #$hOut, "PUBLIC SUB Main()\n" " Response.Buffered = TRUE\n" " Response.Begin\n" " _PrintPage()\n" " Response.End\n" "END" Print #$hOut, "\nPRIVATE SUB _PrintPage()" If sData Like "#!/*" Then iPos = InStr(sData, "\n") If iPos = 0 Then iPos = Len(sData) Endif Do iPos2 = InStr(sData, "<%", iPos + 1) If iPos2 = 0 Then PrintHTML(Mid$(sData, iPos + 1)) Break Else PrintHTML(Mid$(sData, iPos + 1, iPos2 - iPos - 1)) iPos = iPos2 Endif ' Search for closing "%>" by jumping Gambas syntax Do Inc iPos2 If iPos2 > Len(sData) Then Break sCar = Mid$(sData, iPos2, 1) If sWait Then If sCar = "\\" Then Inc iPos2 Else If sCar = sWait Then sWait = "" Endif Else If sCar = Chr$(34) Then sWait = Chr$(34) Else If Mid$(sData, iPos2, 2) = "%>" Then Break Endif Loop PrintSemiColon If Mid$(sData, iPos, 3) = "<%=" Then If (iPos2 - iPos - 3) > 0 Then Print #$hOut, "PRINT HTML(Str("; Trim(Mid$(sData, iPos + 3, iPos2 - iPos - 3)); "));" Endif Else Print #$hOut, Trim(Mid$(sData, iPos + 2, iPos2 - iPos - 2)) Endif iPos = iPos2 + 1 Loop PrintSemiColon Print #$hOut, "END" Close #$hOut Return sPath End gambas-3.16.3/app/src/gbs3/.src/MakeListing.module000066400000000000000000000040241411575327000215330ustar00rootroot00000000000000' Gambas module file Public Sub _call(oContext As Context, sPrjPath As String, CompileErrors As String) As String Dim aErrors As String[] = Split(CompileErrors, "\n", "", True, True) Dim sOutput As String = "" For Each CompileError As String In aErrors Dim aErrorParts As String[] = Split(CompileError, ":") Dim sSource As String Try sSource = File.Load(sPrjPath &/ ".src" &/ aErrorParts[0]) If Error Then Return "Error : UnKnown Module/Class Dumping everything!:\n" & DumpAll(oContext, sPrjPath) Endif Dim aFileParts As String[] = Split(aErrorParts[0], ".") If Trim(aErrorParts[2]) == "error" Then aErrorParts.add("0", 2) sOutPut &= Subst("# Gambas &1 file : &2:&3:&4:&5\n", aFileParts[1], aFileparts[0], aErrorParts[1], aErrorParts[2], aErrorParts.last) & GenListing(oContext, sSource, aErrorParts[1], aErrorParts[2], aErrorParts.extract(4, -1).Join(":")) Next Return sOutPut End Public Sub GenListing(oContext As Context, sSource As String, Optional iLine As Integer = 0, iPosition As Integer = 0, sError As String = "") As String Dim aLines As String[] = Split(sSource, "\n", "\"\"", False, True) Dim sOutput As String = "\n" For i As Integer = 0 To aLines.Max If Not oContext.$bTerseListing Or If i + 1 = iline Or If oContext.$bVerbose And iLine = 0 Then sOutPut &= Subst("&1&2:&3\n", Format(i + 1, "####0"), IIf((i + 1) = iLine, "*", " "), aLines[i]) Endif If i + 1 = iLine Then sOutPut &= Space(5 + iPosition) & " ^" & sError & "\n" Endif Next Return sOutput End Private Sub DumpAll(oContext As Context, sPrjPath As String) As String Dim sOutPut As String = "" For Each sPrjSource As String In Dir(sPrjPath &/ ".src") sOutPut = Subst("# Gambas &1 file :&2\n", Split(sPrjSource, ".")[1], Split(sPrjSource, ".")[0]) sOutPut &= GenListing(oContext, File.Load(sPrjPath &/ ".src" &/ sPrjSource)) & "\n" Next Return sOutPut End gambas-3.16.3/app/src/gbs3/.src/MakeVirtualProject.module000066400000000000000000000073311411575327000231030ustar00rootroot00000000000000' Gambas module file Public $sPrjPath As String Public $hOutFile As File ' Main Module Output file '' returns the Project path after it is created Public Sub _Call($oContext As Context, sPath As String, Optional sProjectLocation As String = "") As String Dim sPrjFileContent As String Dim RootModule As String = "" $oContext.$sFinalProgram = "" $oContext.$sStructures = "" $oContext.$sProgramHeader = "" $oContext.$sCompilerOptions = "" If $oContext.$bCreateProject Then Dim sPathInfo As String = File.Dir(sPath) If sPathInfo = "" Then sPath = Env["PWD"] &/ sPath If sProjectLocation = "" Then sProjectLocation = Env["PWD"] $sPrjPath = sProjectLocation &/ File.BaseName(sPath) ScriptPreProcess["Name"] = File.BaseName(sPath) ScriptPreProcess["Title"] = File.BaseName(sPath) & " From Script" & sPath Else If $oContext.$bPlugin Then $sPrjPath = Temp("project" & "-" & File.BaseName(sPath)) Else $sPrjPath = Temp("project") Endif If Exist($sPrjPath) Then Dim rmresult As String = "" Exec ["rm", "-r", $sPrjPath] Wait To rmresult Endif Endif Verbose(("Create project") & ": " & $sPrjPath) Try Mkdir $sPrjPath If Error Then CompileError(sPath, 0, "Unable to create project directory : " & $sPrjPath & " : " & Error.text) Endif Try Mkdir $sPrjPath &/ ".src" If Error Then CompileError(sPath, 0, "Unable to create project .src directory : " & $sPrjPath & " : " & Error.text) Endif $oContext.$sPreambleHeader = "' Gambas module file\n" If $oContext.$bExecuteFromArgs Then GenerateFilesFromArgs($oContext, sPath, $sPrjPath) Else GenerateFiles($oContext, sPath, $sPrjPath) Endif If $oContext.$bExport Then $oContext.$sCompilerOptions &= "Export\n" If $oContext.$bFast Then $oContext.$sCompilerOptions &= "Fast" If $oContext.$bUnsafe Then $oContext.$sCompilerOptions &= " Unsafe" $oContext.$sCompilerOptions &= "\n" Endif Dim sExtention As String If $oContext.$bPlugin Then sExtention = ".class" Else sExtention = ".module" Endif If $oContext.$bClassAsStartup And If Not $oContext.$bPlugin Then RootModule = $sPrjPath &/ ".src" &/ "ScriptInfoModule.module" Else RootModule = $sPrjPath &/ ".src" &/ ScriptPreProcess["Startup"] & sExtention Endif Try $hOutFile = Open RootModule For Write Create If Error Then Error.Raise("Unable to create " & Right(sExtention, -1) & " file") Endif sPrjFileContent &= ScriptPreProcess.GetProjectOptions() If UseLibComp.HasComponents Then sPrjFileContent &= CComponent.ComponentEntries() CComponent.Clear() Endif If UseLibComp.HasLibraries Then sPrjFileContent &= Libraries.LibraryEntries() Endif If $oContext.$bBuildOnly And If $oContext.$bTestMode Then Error "Project file {\n"; sPrjFileContent; "\n}" Error $oContext.$sPreambleHeader Error $oContext.$sCompilerOptions Error $oContext.$sStructures Error $oContext.$sProgramHeader Error $oContext.$sFinalProgram Endif Verbose(".project File\n" & sPrjFileContent) File.Save($sPrjPath &/ ".project", sPrjFileContent) If $oContext.$sPreambleHeader <> "" Then Print #$hOutFile, $oContext.$sPreambleHeader If $oContext.$sCompilerOptions <> "" Then Print #$hOutFile, $oContext.$sCompilerOptions If $oContext.$sStructures <> "" Then Print #$hOutFile, $oContext.$sStructures If $oContext.$sProgramHeader <> "" Then Print #$hOutFile, $oContext.$sProgramHeader If $oContext.$bPlugin Then Print #$hOutFile, PluginInfo() If $oContext.$sFinalProgram <> "" Then Print #$hOutFile, $oContext.$sFinalProgram Close $hOutFile Return $sPrjPath ' Catch ' Print "MVP";; Error.text;; Error.where End gambas-3.16.3/app/src/gbs3/.src/ParseArgs.module000066400000000000000000000146671411575327000212310ustar00rootroot00000000000000' Gambas module file Enum eVersion, eLicense, eHelp, eNoCache, eDebug, eVerbose, eExec, eFast, eUnsafe, eTrace, eUse, eWarnings, eBuildOnly, eList, eStdio, eLazyStrict, eTerseListing, eConvertProject, eConvertScript, ePlugin Public $bExit As Boolean = False Public $cPossibleArgs As Collection = [ "-V": eVersion, "--version": eVersion, "-L": eLicense, "--license": eLicense, "-h": eHelp, "--help": eHelp, "-c": eNoCache, "--nocache": eNoCache, "-g": eDebug, "--debug": eDebug, "-v": eVerbose, "--verbose": eVerbose, "-e": eExec, "-f": eFast, "--fast": eFast, "-U": eUnsafe, "--unsafe": eUnsafe, "-t": eTrace, "--trace": eTrace, "-u": eUse, "--use": eUse, "-w": eWarnings, "--warnings": eWarnings, "-b": eBuildOnly, "--buildonly": eBuildOnly, "-l": eList, "--list": eList, "-": eStdio, "-S": eLazyStrict, "--strict": eLazyStrict, "-T": eTerseListing, "--terse-listing": eTerseListing, "--convert-project": eConvertProject, "--convert-script": eConvertscript, "-p": ePlugin, "--plugin": ePlugin ] Public Function _Call(c As Context, aArgs As String[]) As String Dim I As Integer Dim sApp As String Dim index As Variant If File.Name(aArgs[0]) = "gbw" & System.version Then c.$bWebPage = True For I = 1 To aArgs.Max If aArgs[I] = "--" Then Inc I Break Else If Left(aArgs[I]) <> "-" Then Break Endif index = $cPossibleArgs[aArgs[I]] If IsNull(index) Then '' note if I raise and error here it causes a double free error in tcache Error File.Name(aArgs[0]) & " : " & ("Unknown option") & " : " & aArgs[I] $bExit = True Break Endif On index Goto gVersion, gLicense, gHelp, gNoCache, gDebugInfo, gVerbose, gExecCommandLine, gFast, gUnsafe, gTrace, gUse, gWarnings, gBuildOnly, gList, gStdIn, gLazyStrict, gTerseListing, gConvertProject, gConvertScript, gPlugin gVersion: Print Application.Version $bExit = True Break gLicense: Print If Not c.$bWebPage Then Print ("GAMBAS Scripter version") & " " & Application.Version Else Print ("GAMBAS Webpage Scripter version") & " " & Application.Version Endif Print File.Load("license") $bExit = True Break gHelp: If Not c.$bWebPage Then Print File.Load("usage-gbs") Else Print File.Load("usage-gbw") Endif $bExit = True Break gNoCache: c.$bNoCache = True Continue gDebugInfo: c.$bDebug = True Continue gVerbose: c.$bVerbose = True Verbose.$bVerboseOn = True Continue gExecCommandLine: If Not c.$bWebPage Then c.$bExecuteFromArgs = True Else Error.Raise(File.Name(aArgs[0]) & ": -e " & ("Option Is Not supported For WebPages")) Endif Continue ' gPreCompile: ' c.$bPrecompiler = True ' Continue gFast: c.$bFast = True Continue gUnsafe: c.$bUnsafe = True Continue gTrace: c.$bTrace = True Continue gUse: If Not (aArgs[I + 1] Begins "-") Then c.$sUse = aArgs[I + 1] Inc I Endif Continue gWarnings: c.$bWarning = True Warning.$bWarningOn = True Continue gBuildOnly: c.$bBuildOnly = True Continue gList: If Not (Application.aArgs[I + 1] Begins "-") Then Select Case Upper(aArgs[I + 1]) Case "COMPONENT" c.$bListComponents = True CComponent.ListAllComponents() CComponent.Exit() Case "LIBRARY" c.$bListLibraries = True Libraries.ConfigureLibraries() Libraries.ListLibraries() Default Error.Raise(aArgs[I + 1] & " Not Support List Type - Library or Component - are supported") End Select Endif $bExit = True Break gStdIn: ' Run from stdin Until eof recieved c.$bScriptSourceStdIn = True c.$bNoCache = True Break gLazyStrict: ' define if publics should generate error if no main or be processed c.$bAllowLazyScript = False Continue gTerseListing: ' only show the actual line the error was on c.$bTerseListing = True Continue gConvertProject: ' do a project to script conversion If i + 1 > aArgs.max Then warning("Not enough parameters for Project conversion - need []", True) Else Dim ScriptDest As String = "" If i + 2 <= aArgs.max Then ScriptDest = aArgs[i + 2] Endif ConvertProject(aArgs[I + 1], ScriptDest) Endif $bExit = True Break gConvertScript: ' do a script to project conversion If i + 1 > aArgs.max Or If i + 2 < aArgs.max Then warning("Not enough parameters for Script conversion - need []", True) $bExit = True Break Else c.$bCreateProject = True Endif Continue gPlugin: If i + 1 > aArgs.max Or If i + 2 < aArgs.max Then warning("Not enough parameters for plugin - need []", True) $bExit = True Break Endif c.$bBuildOnly = True c.$bPlugin = True c.$bExport = True c.$bClassAsStartup = True Continue Next If $bExit Then Return Null 'Make the remainder of the arguments available to the 'main program, and pass the first one as the file to execute If I <= aArgs.max Then sApp = aArgs[I] Inc I While I < aArgs.Count ScriptMain.$aAppArgs.Add(aArgs[I]) Inc I Wend Return sApp End gambas-3.16.3/app/src/gbs3/.src/PluginInfo.module000066400000000000000000000017021411575327000213760ustar00rootroot00000000000000' Gambas module file '' returns the addition to the plugin class file to support plugin information '' adds version property to plugin file to get the actual plugin versio not the calls app version '' adds all #Script entries as read only properties that were defined in the script Public Sub _call() As String Dim InfoProgPart As String = "" Dim InfoPropertyPart As String = "" Dim InfoDefPart As String = "" For Each sEntry As String In ScriptPreProcess.ProjectInfo InfoPropertyPart &= "Property Read " & ScriptPreProcess.ProjectInfo.key & " as string\n" InfoDefPart &= "Private $s" & ScriptPreProcess.ProjectInfo.key & " as string = " & Quote(sEntry) & "\n" InfoProgPart &= "Function " & ScriptPreProcess.ProjectInfo.key & "_Read() as string\n" InfoProgPart &= "Return $s" & ScriptPreProcess.ProjectInfo.key & "\n" InfoProgPart &= "end\n" Next Return InfoPropertyPart & InfoDefPart & InfoProgPart End gambas-3.16.3/app/src/gbs3/.src/ProcessAssignment.module000066400000000000000000000061751411575327000230040ustar00rootroot00000000000000' Gambas module file Private StartIndex As Integer Private EndIndex As Integer Private Source As Reader Private CurrentSymbol As Integer Private ContinueSet As Collection = [",": True, "&": True, "&/": True] Private ContinueTypeAfterSet As Collection = [CStr(Highlight.string): True, CStr(Highlight.symbol): True] Private ContinueTypeAfterStr As Collection = [CStr(Highlight.String): True] Public Sub _Call(Program As Reader, index As Integer, EqualPos As Integer) As String Source = Program StartIndex = index EndIndex = index CurrentSymbol = EqualPos ContinueSet.default = False ContinueTypeAfterSet.default = False ContinueTypeAfterStr.default = False Dim StringOnly As Boolean = False While Advance() Dim sSym As String = GetSymbol() Dim iType As Integer = GetType() If iType = Highlight.Keyword Then Backup() Break Else If StringOnly And iType <> Highlight.string Then Backup() Break Else If isLast() And iType = Highlight.string Then stringOnly = True Continue Else StringOnly = False Endif If sSym = "[" Then ProcessBraces() Break Else If sSym = "(" Then ProcessBraces("(", ")") Endif If isLast() And If ContinueSet[sSym] Then StringOnly = False Continue Else If isLast() And If iType = Highlight.string Then stringOnly = True Continue Else If isLast() Break Endif Wend Return GenerateFromLazyScript.AdjustProgram(Program, EndIndex, StartIndex) End Private Sub ProcessBraces(Optional OpenBrace As String = "[", CloseBrace As String = "]") While Advance() Dim sSym As String = getSymbol() If sSym = OpenBrace Then ProcessBraces(OpenBrace, CloseBrace) Else If sSym = CloseBrace Then Return Endif Wend End Private Sub Advance() As Boolean If endindex = Source.ProgramLines.max And CurrentSymbol = Source.ProgramSymbols[endIndex].max Then Return False If Source.ProgramSymbols[endindex].max = -1 Or CurrentSymbol = Source.ProgramSymbols[endindex].max Or If Source.ProgramTypes[endindex][CurrentSymbol] = Highlight.comment Then CurrentSymbol = 0 Inc endindex If Source.ProgramSymbols[endindex].count = 0 Then Return Advance() Endif Else Inc CurrentSymbol Endif Return True End Private Sub Backup() As Boolean If endIndex = startIndex And currentSymbol = 0 Then Return False If CurrentSymbol = 0 Then Dec EndIndex CurrentSymbol = Source.ProgramSymbols[endIndex].Max If CurrentSymbol = -1 Or If Source.ProgramTypes[EndIndex][CurrentSymbol] = Highlight.comment Then Backup() Endif Endif Return True End Private Sub isLast() As Boolean If CurrentSymbol = Source.ProgramSymbols[endindex].max Or If Source.ProgramTypes[endindex].max = Highlight.comment And CurrentSymbol = Source.ProgramSymbols[endindex].max - 1 Then Return True Endif Return False End Private Sub getSymbol() As String Return Source.ProgramSymbols[endindex][currentSymbol] Catch Stop End Private Sub getType() As Integer Return Source.ProgramTypes[endindex][currentSymbol] End gambas-3.16.3/app/src/gbs3/.src/Reader.class000066400000000000000000000476721411575327000203660ustar00rootroot00000000000000' Gambas class file Public Enum rText, rTokens, rTypes, rPosition Public ProgramLines As New String[] ' List of all program lines Public ProgramSymbols As New Variant[] ' List of all tokens Public ProgramTypes As New Variant[] ' List of all Public ProgramPositions As New Variant[] ' Position of token text in each line Public GlobalItemPosition As New Integer[] ' Position of each Globaly define variable Public sSourceFile As String = "" ' The Source File Private CurrentLineNumber As New Integer[] ' Current line number of text in a file Public CurrentLine As Integer = -1 ' current line being processed Public CurrentToken As Integer = -1 ' we have not gotten first token yet Public key As Integer = -1 ' the key to the datasets Private MainDef As New Collection(gb.ignorecase) ' Points to main if found in this file Private BlockList As New Integer[] ' List of all discovered block definitions start Private BlockLineNumbers As New Integer[] ' Line number of the definition Private BlockNames As New String[] ' List of the block names being created Public BlockDefined As New Collection(gb.ignorecase) ' Collection of defined blocks Public BlockType As New String[] ' Type of block being created Private $bInClass As Boolean = False ' Processing a class block Private cIncludedFiles As New Collection(gb.Ignorecase) ' List of already included files, only load included files once Private cIncludeStack As New String[] ' List of files included into this build, to check for circular refrence Private sDefaultFilePath As String = "" ' Directory to look for included file with no full path defined Private bPublicOrSubDef As Boolean = False ' Used to indicate that the script contained public or Subroutines Private aWarnings As New String[] ' Builds an array of possible warnings Private $oContext As Context ' all the global variables Private $sEntryPoint As String = "MAIN" 'Defines the default type of entry point for the generated program Private $cBlockTypes As Collection = ["MODULE": ["END", "MODULE"], "CLASS": ["END", "CLASS"], "FORM": ["END", "FORM"], "CONNECTION": ["END", "CONNECTION"], "WEBFORM": ["END", "WEBFORM"], "WEBPAGE": ["END", "WEBPAGE"] ] Private $sCurrentBlock As String = "" Static Public $sScriptFilter As New Collection Public Sub _New(cContext As Context, Optional SourceFile As String = "", Sourceprogram As String = "") Dim SourceBuffer As String $oContext = cContext ' Access to global variables cIncludeStack.Push(SourceFile) ' Add this file to the stack for processing sDefaultFilePath = File.Dir(SourceFile) ' Set the default file path to use for includes sSourceFile = SourceFile If SourceProgram <> "" Then ' Updated to correctly process -e thru full process for -e < filename cases SourceBuffer = SourceProgram Else If SourceFile = "" Then SourceBuffer = GetStdio() Else $oContext.$aIncFiles.Add(SourceFile) $oContext.$aIncFiles.Add(Stat(SourceFile).LastModified) SourceBuffer = GetFile(SourceFile) Verbose("Processing Script File : " & File.Name(SourceFile)) Endif TokenizeFile(SourceBuffer) End Public Sub GetStdio() As String Dim buffer As String Dim SourceBuffer As String = "" While Not Eof(File.in) buffer = Read -256 SourceBuffer &= buffer Wend Return SourceBuffer End Private Sub GetFile(SourceFile As String) As String Dim buffer As String Try Buffer = File.Load(SourceFile) If Error Then Error.Raise("Unable to read file : \"" & SourceFile & "\"") Endif Return buffer End Private $cKeywords As Collection = ["PRIVATE": True, "PUBLIC": True, "STATIC": True, "SUB": True, "FUNCTION": True, "PROCEDURE": True, "STRUCT": True, "ENUM": True, "CLASSREF": True] Private Sub TokenizeFile(SourceBuffer As String) Dim SourceList As String[] Dim sClassName As String = "" Dim MainPos As Integer = 1 Dim sline As String Dim bDoFilter As Boolean = ($sScriptFilter.count > 0) $cKeywords.default = False If $oContext.$bPlugin Then $sEntryPoint = "_Call" CurrentLineNumber.Push(0) SourceList = Split(SourceBuffer, "\n", "", True) For Each sLine As String In SourceList If bDoFilter Then ScriptKeywordFilter(sLine, $sScriptFilter, CurrentLineNumber.last, cIncludeStack.last) 'filter the script if needed Inc CurrentLineNumber.last If Left(sLine, 3) = "#!/" Then sLine = "' " & sLine ' eliminate the script header Highlight.Analyze(sLine) Dim aTypes As Integer[] = Highlight.Types Dim symbols As String[] = Highlight.symbols '' Here we look for any definition which will be a seperate source type or includes other sources '' Building the source pool as we go '' Check for The definition of main, Knowing this speeds up process of program portion of the script If aTypes.count >= 4 And If aTypes[0] = Highlight.Keyword Then MainPos = 1 If symbols[0] = "PUBLIC" And aTypes[1] = Highlight.keyword Or If aTypes[1] = Highlight.symbol Then If aTypes[1] = Highlight.symbol Then MainPos = 0 If symbols[MainPos] = "SUB" Or If symbols[MainPos] = "PROCEDURE" Or If symbols[MainPos] = "FUNCTION" Then If Upper(symbols[MainPos + 1]) == $sEntryPoint Then If aTypes.count = 4 Then Warning(Subst("&1 Was Not Declared as Public, assuming Public Sub &1", $sEntryPoint)) sLine = "Public " & sline Endif MainDef.Add(CurrentLineNumber.last, cIncludeStack.last) If MainDef.count > 1 Then Warning(Subst("Multiple &1 Definitions :", $sEntryPoint), True) For Each i As Integer In MainDef Verbose(Subst("&1 Defined : &2", $sEntryPoint, Quote(MainDef.key) & "." & i), True) Next CompileError(cIncludeStack.last, CurrentLineNumber.last, "Too Many " & $sEntryPoint & " Definitions") Else Verbose($sEntryPoint & " Defined : " & cIncludeStack.last & "." & CurrentLineNumber.last) Endif Endif Endif Endif Endif '' Check for specific keywords that trigger reliance upon MAIN being defined If symbols.count > 0 And If aTypes[0] = Highlight.keyword Or $cBlockTypes.Exist(Upper(symbols[0])) Then If symbols[0] = "EXPORT" Then $oContext.$bExport = True sLine = "' " & sLine Goto ContinueRecord Else If Not $bInClass And If $cKeywords[symbols[0]] Then aWarnings.Add("Warning : Defined without " & $sEntryPoint & " : " & symbols[0] & ":" & File.name(cIncludeStack.last) & "." & CurrentLineNumber.last & " : " & sline) bPublicOrSubDef = True GlobalItemPosition.Add(ProgramLines.count) Goto ContinueRecord Else If Not $bInClass And If symbols[0] = "FAST" Then If aTypes.count > 2 Then aWarnings.Add("Warning : Defined without " & $sEntryPoint & " : " & symbols[0] & ":" & File.Name(cIncludeStack.last) & "." & CurrentLineNumber.last & " : " & sline) bPublicOrSubDef = True GlobalItemPosition.Add(ProgramLines.count) Goto ContinueRecord Else If $oContext.$bFast = True Then ' already defined Warning("FAST Duplicate Definition at " & File.Name(cIncludeStack.last) & "." & CurrentLineNumber.last) sLine = "' " & sLine Goto ContinueRecord Else If aTypes.count = 1 Then Verbose("FAST(Jit) activated for Module:" & File.name(cIncludeStack.last) & "." & CurrentLineNumber.last) $oContext.$bFast = True sLine = "' " & sline Goto ContinueRecord Else If aTypes.count = 2 And If symbols[1] = "UNSAFE" Then Verbose("FAST UNSAFE(Jit and nochecks) activated for Module:" & File.name(cIncludeStack.last) & "." & CurrentLineNumber.last) $oContext.$bFast = True $oContext.$bUnsafe = True sLine = "' " & sline Goto ContinueRecord Else CompileError(cIncludeStack.last, CurrentLineNumber.last, "UnKnown Entry : " & symbols[0] & " Following 'FAST' Definition") Endif '' check for inclusion of Components or libraries Else If symbols[0] = "USE" If symbols.count >= 2 Then ProcessUse(sLine) Continue Else CompileError(cIncludeStack.last, CurrentLineNumber.last, "USE statement without component or library definitions") Endif '' Check for the end of a class definition Else If symbols[0] = "END" And symbols.count = 2 Then If aTypes[1] = Highlight.symbol Or aTypes[1] = Highlight.keyword And If symbols[1] == $sCurrentBlock Then If Not $bInClass Then CompileError(cIncludeStack.last, CurrentLineNumber.last, "Syntax error : Unexpected : " & sLine) Endif sClassName = BlockNames.Pop() BlockType.Pop() BlockDefined.Add(ProcessClass(sClassName, BlockList.Pop(), BlockLineNumbers.Pop(), Lower($sCurrentBlock)), sClassName & "." & $sCurrentBlock) $bInClass = False Continue Endif Endif '' Check for the definition of a block and make where it is defined If $cBlockTypes.Exist(Upper(symbols[0])) Then $sCurrentBlock = (Upper(symbols[0])) If symbols.count < 2 Then CompileError(cIncludeStack.last, CurrentLineNumber.last, Subst("&1 : Name Missing ", $sCurrentBlock)) Endif If aTypes[1] = Highlight.symbol Then If $bInClass Then If symbols[0] == "class" And If $sCurrentBlock == "class" Or $sCurrentBlock == "module" Then Warning("Found class definition inside a &1, Assuming that it is a class refrence not the beginning of a new class") Goto ContinueRecord Else CompileError(cIncludeStack.last, CurrentLineNumber.last, Subst(" &1 : Unexpected &1 definition inside &1 definition : ", $sCurrentBlock) & sLine) Endif Endif Dim cdefBlock As ClassDef = BlockDefined[symbols[1] & "." & $sCurrentBlock] If Not IsNull(cdefBlock) And If cdefBlock.sExtention == $sCurrentBlock Then CompileError(cIncludeStack.last, CurrentLineNumber.last, $sCurrentBlock & " : " & symbols[1] & " Already defined") Endif Verbose("Begin to define Block : " & $sCurrentBlock & " : " & symbols[1]) BlockList.Push(ProgramSymbols.Count) BlockNames.Push(symbols[1]) BlockLineNumbers.Push(CurrentLineNumber.last) BlockType.Push($sCurrentBlock) $binClass = True Continue Endif Endif Endif ''Check for an include statement -- Include is not a keyword, perhaps it should be If aTypes.count >= 2 And If aTypes[0] = Highlight.symbol And If aTypes[1] = Highlight.string And If symbols[0] == "INCLUDE" Then Warning("'Include' is Replaced by '#Include' and may not be supported in future releases") ProcessInclude(symbols, atypes, sDefaultFilePath) Continue '' Check for PreProccessor lines Else If aTypes.count >= 2 And If aTypes[0] = Highlight.Preprocessor Then If symbols[0] == "#SCRIPT" Then Highlight.Analyze(Right(Trim(sline), -1)) ScriptPreProcess(Highlight.symbols, Highlight.types, CurrentLineNumber.last, cIncludeStack.last) sLine = "'" & sLine Goto ContinueRecord Else If symbols[0] == "#INCLUDE" Then ProcessInclude(symbols, atypes, sDefaultFilePath) Continue Endif Else If aTypes.count = 2 And If symbols[0] == "CLASSREF" And If aTypes[1] = Highlight.symbol sline = Replace(sLine, "ClassRef", "Class", gb.ignorecase) $oContext.$sProgramHeader &= sLine & "\n" Continue Endif ContinueRecord: ProgramLines.Add(sLine) ProgramSymbols.Add(Highlight.symbols) ProgramTypes.Add(Highlight.types) ProgramPositions.Add(Highlight.Positions) Next If BlockNames.count > 0 Or If $bInClass Then If $sCurrentBlock == "class" Then BlockList.Pop() BlockType.Pop() Warning(Subst("Class '&1' Defined in Script at Line &2, No End Class encountered, Assuming this was a class refrence not a class definition", BlockNames.Pop(), BlockLineNumbers.Pop())) Else CompileError(cIncludeStack.last, CurrentLineNumber.last, "Missing 'END " & $sCurrentBlock & "' For " & $sCurrentBlock & ": " & BlockNames.Pop()) Endif Endif CurrentLineNumber.Pop() End Public Sub ProcessClass(name As String, Start As Integer, DefLine As Integer, Optional ClassType As String = "class") As ClassDef Dim cDef As ClassDef Verbose("Defining " & ClassType & " : " & name & " in script file : " & UnQuote(File.Name(cIncludeStack.last)) & "." & DefLine) cDef = New ClassDef(name, ProgramLines.Extract(start, -1), ProgramSymbols.Extract(start, -1), ProgramTypes.Extract(start, -1), ProgramPositions.Extract(start, -1), ClassType) cDef.iLineNumber = DefLine cDef.sDefinedIn = cIncludeStack.last Return cDef End Public Sub ProcessUse(sLine As String) Warning("Use :" & File.Name(cIncludeStack.last & "." & CurrentLineNumber.last & ":" & sLine)) UseLibComp(cIncludeStack.last, CurrentLineNumber.last, sLine) End Public Sub UseList() As String Dim UseCompLibList As String = "" If UseLibComp.HasComponents Then UseCompLibList = CComponent.ComponentEntries() Endif If UseLibComp.HasLibraries Then UseCompLibList &= Libraries.LibraryEntries() Endif Return UseCompLibList End Public Sub ProcessInclude(Includes As String[], atypes As Integer[], sDefaultPath As String) Dim buffer As String Dim sFilePath As String Dim Start As Integer = 1 For i As Integer = Start To Includes.Max If Trim(Includes[i]) = "" Then Continue If Includes[i] = "," Then Continue If aTypes[i] = Highlight.comment Then Break sFilePath = UnQuote(Includes[i]) If File.Dir(sFilePath) = "" Then sFilePath = sDefaultPath &/ sFilePath Endif If cIncludedFiles[sFilePath] Then Continue ' we only include things once Verbose("Including script file : " & sFilePath & " From File : " & cIncludeStack[cIncludeStack.max] & "." & CurrentLineNumber.last) If cIncludeStack.Find(sFilePath) > -1 Then Warning(cIncludeStack.last & ":" & CurrentLineNumber.last & ":" & "Include \"" & sFilePath & "\" Possible Circular Refrence") Continue Else cIncludeStack.Push(sFilePath) Endif $oContext.$aIncFiles.Add(sFilePath) $oContext.$aIncFiles.Add(Stat(sFilePath).LastModified) buffer = GetFile(sFilePath) TokenizeFile(buffer) cincludedFiles.Add(CurrentLineNumber.last, cIncludeStack.Pop()) ' Keep Track of what is already included Next End Public Sub Eof() As Boolean If currentLine + 1 > ProgramLines.max Then Return True Endif Return False End Public Sub advance() As String[] If currentline = ProgramLines.max Then Return Null Endif Inc CurrentLine CurrentToken = -1 Return ProgramSymbols[CurrentLine] End Public Sub NextToken() As String If CurrentToken + 1 > ProgramSymbols[CurrentLine].max Then advance() Else Inc CurrentToken Endif Return ProgramSymbols[CurrentLine][CurrentToken] End Public Sub backToken() If CurrentToken = 0 Then back() Else Dec CurrentToken Endif End Public Sub back(Optional count As Integer = 1) If CurrentLine - count >= 0 Then CurrentLine -= count Else CurrentLine = -1 Endif CurrentToken = ProgramSymbols[CurrentLine].max End Public Sub Text(Optional index As Integer = CurrentLine) As String If index >= 0 And index <= ProgramLines.max Then Return ProgramLines[index] Else Error.Raise("Out of bounds Program Text Line Number : " & index) Endif End Public Sub Tokens(Optional index As Integer = CurrentLine) As String[] If index >= 0 And index <= ProgramLines.max Then Return ProgramSymbols[index] Else Error.Raise("Out of bounds Program Tokens Line Number : " & index) Endif End Public Sub Types(Optional index As Integer = CurrentLine) As Integer[] If index >= 0 And index <= ProgramLines.max Then Return ProgramTypes[index] Else Error.Raise("Out of bounds Program Types Line Number : " & index) Endif End Public Sub Positions(Optional index As Integer = CurrentLine) As Integer[] If index >= 0 And index <= ProgramLines.max Then Return ProgramPositions[index] Else Error.Raise("Out of bounds Program Positions Line Number : " & index) Endif End Public Sub _get(index As Integer, Optional Setof As Integer = rText, SubIndex As Integer = -1) As Variant Dim result As Variant[] Select Case Setof Case rText Return Text(index) Case rTokens Result = Tokens(index) Case rTypes Result = Types(index) Case rPosition Result = Positions(index) End Select If SubIndex >= 0 Then If subIndex < result.Count Then Return result[SubIndex] Else Error.Raise("Out of bounds Program Get Line Number : " & index) Endif Endif End Public Sub _next() As String[] If Enum.index = Null Then Enum.index = 0 Else Inc Enum.index Endif If Enum.index > ProgramLines.max Then Enum.Stop Else Return ProgramSymbols[Enum.Index] Endif End Public Sub IsMainDefined() As Boolean If MainDef.count > 0 Then Return True Endif Return False End Public Sub HasBlocks() As Boolean If BlockDefined.count > 0 Then Return True Endif Return False End Public Sub HasPublicOrSub() As Boolean Return bPublicOrSubDef End Public Sub getBlocks() As Collection Return BlockDefined End Public Sub GetProgram() As String Return ProgramLines.Join("\n") End Public Sub DisplayWarnings() For Each sMessage As String In aWarnings Warning(sMessage) Next End gambas-3.16.3/app/src/gbs3/.src/ScriptKeywordFilter.module000066400000000000000000000020151411575327000233010ustar00rootroot00000000000000' Gambas module file '' Apply the keyword filter to the passed in source line '' This is an initial implentation, should maybe allow some sort of '' call to plugins or such, but for now just a bunch of '' regular expressions '' Causes a compile error if anything matches '' Therefore never returns unless all is well '' This is a seperate module so as not to load the gb.prc module if not used by the scripter '' This is expensive the first time a plugin script is processed but of course does not '' effect the cached plugins that have be created, as they are not processed Public Sub _Call(sLine As String, KeywordPatternTable As Collection, iLine As Integer, sPath As String) For Each Pattern As String In KeywordPatternTable Verbose(Subst("Script Apply Filter : &1 > &2", Quote(KeywordPatternTable.key), Quote(Pattern))) If RegExp.Match(sLine, Pattern) Then CompileError(sPath, iLine, "\nPlugin Error: " & KeywordPatternTable.key & "\nPlugIn Error: " & sLine & "\n") Endif Next Return End gambas-3.16.3/app/src/gbs3/.src/ScriptMain.module000066400000000000000000000233551411575327000214050ustar00rootroot00000000000000' Gambas module file Export Public $oContext As New Context ' Global variables Public $sPath As String Private $sPrjPath As String Public $sArchivepath As String ' When Create Executable option is used this is the destination for the archive from gba3 Public $sMd5 As String ' Project md5 string to check if needs to rebuild or just execute Public $aAppArgs As New String[] ' This is a list of all args on the script command line after the script name, these are passed to the executing project based on the script file Public $bExecProjectDirectory As Boolean ' Set when the input is an actual project directory not a script Public $bRunAsPlugin As Boolean ' Set when scripter is running as a plugin Public $sExecutable As String ' Path to executable used by plugin interface Public $sStartupClass As String ' Name of plugin class to start Public $sLastCompileError As String ' The text of the last eorror message Public Sub _ResetAll() $oContext._ResetAll() $aAppArgs.Clear() $sPath = "" $sPrjPath = "" $sArchivePath = "" $sMd5 = "" $bExecProjectDirectory = False $sExecutable = "" $sStartupClass = "" $sLastCompileError = "" End Public Sub Main() As Integer Dim aArgs As New String[] For Each s As String In Args aArgs.Push(s) Next Return ScripterMain(aArgs) End Public Sub ScripterMain(aArgs As String[]) As Integer Dim sName As String Dim sCacheDir As String = File.Dir(File.Dir(Temp$())) &/ "script-cache" Dim sRes As String Dim bCompile As Boolean Dim sDir As String With $oContext ' System.language = "fr_FR" If Not Exist(sCacheDir) Then Mkdir sCacheDir If Not .$bTestMode Then ' for testmode the test suite will set the parameters and paths $sPath = ParseArgs($oContext, aArgs) If ParseArgs.$bExit Then If $bRunAsPlugin Then Return 0 Else Quit 0 Endif Endif Endif '' Check if we are making a project from this script If $oContext.$bCreateProject Then MakeVirtualProject($oContext, $sPath, IIf($aAppArgs.count > 0, $aAppArgs[0], "")) If $bRunAsPlugin Then Return 0 Else Quit 0 Endif Endif '' We are creating a temp project to execute If $oContext.$bPlugin Then ScriptPreProcess["Startup"] = File.BaseName($sPath) If $aAppArgs.count > 0 Then sCacheDir = $aAppArgs[0] Else sCacheDir = User.home &/ ".local/lib/gambas" & System.Version Endif If Not Exist(sCacheDir) Then Try Shell "mkdir -p " & sCacheDir Wait If Error Then CompileError("Unable to create cache directory " & sCacheDir) Endif Endif Endif sName = File.Name($sPath) If Not $sPath Then verbose("Reading from default Stdin") $sPath = Read Lof(File.In) ' This is invoked when cmd line is like ' gbs -e < filename' verbose(" Input read :\n" & $sPath) If Not $sPath Then Warning(("no input file specified"), True) Return 1 Else $oContext.$bExecuteFromArgs = True verbose("execute from command line: " & $sPath) sName = File.Name($sPath) Endif Endif If Not $oContext.$bExecuteFromArgs And If Not $oContext.$bScriptSourceStdIn Then ' md5sum requires the absolute path unless we are using a shell which expands it so ./ddd and ~/ can not be calculated for md5sum Process sName = File.Name($sPath) $sPath = File.RealPath($sPath) '' Check if we are being asked to just execute a project directly If Exist($sPath) And If Stat($sPath).Type = gb.directory Then $bExecProjectDirectory = True Endif If Not $bExecProjectDirectory And Not Exist($sPath) Then $sPath = Application.Dir &/ IIf($sPath = "", sName, $spath) If Not Exist($sPath) Then Warning(("input file does not exist") & ": " & sName, True) Return 1 Endif Else Exec ["md5sum", $sPath] To $sMd5 Endif Else Shell ("echo '" & $sPath & "'|md5sum") To $sMd5 Endif If $sMd5 = "" Then ' when there is no path or the source inside the archive then this returns nil bCompile = True Else $sMd5 = Scan($sMd5, "* *")[0] If $oContext.$bFast Then $sMd5 &= "-f" If $oContext.$bNoCache Or $oContext.$bExecuteFromArgs Then bCompile = True Else Dim sCheckCachePath, sCheckFileName As String If $oContext.$bPlugin Then sCheckCachePath = sCacheDir &/ "plugins" &/ $sMd5 sCheckFileName = File.BaseName($sPath) & ".gambas" $sExecutable = sCacheDir &/ File.BaseName($sPath) & ".gambas" $sStartupClass = File.BaseName($sPath) Else sCheckCachePath = sCacheDir &/ $sMd5 sCheckFileName = sName Endif If Not Exist(sCheckCachePath &/ sCheckFileName) Then bCompile = True Else bCompile = Not IsValid(sCheckCachePath & ".info") Endif If Not bCompile Then verbose("Script is in Cache and will not be compiled: " & $sPath) Endif Endif Endif If bCompile Then '' if we are executing a project then set some info up If $bExecProjectDirectory Then $sPrjPath = $sPath Goto lExecuteProject Endif '' a normal script is being run If $oContext.$bWebPage Then If $oContext.$bVerbose Then Print "gbw: " & ("compiling server page") $sPath = MServerPage.Make($sPath) If $oContext.$bVerbose Then Print String$(20, "-") Print File.Load($sPath) Print String$(20, "-") Endif Endif $sPrjPath = MakeVirtualProject($oContext, $sPath) If $sPath = "-" Then $sPath = "mStdIoSource" sName = $sPath $oContext.$aIncFiles.push($sPath) Endif lExecuteProject: Dim parmstring As String = "-a" If $oContext.$bdebug Then parmstring &= "g" If $oContext.$bWarning Then parmstring &= "w" 'If $oContext.$bVerbose Then Parmstring &= "v" Verbose(System.Path &/ "bin/gbc" & System.Version & " " & parmstring & " " & $sPrjPath & " 2>&1") sRes = Compile(parmstring, $sPrjPath) If Not Compile.GoodCompile Then ' Error sRes If Not $oContext.$bTerseListing Then Print File.Load($sPrjPath &/ ".project") Endif $sLastCompileError = sres Print MakeListing($oContext, $sPrjPath, sRes) Return 1 Endif Dim sFileName As String If $oContext.$bPlugin Then If Not Exist(sCacheDir &/ "plugins") Then Try Mkdir sCacheDir &/ "plugins" Endif sFileName = File.BaseName(sName) & ".gambas" For Each sDir In Dir(sCacheDir &/ "plugins", "*", gb.Directory) If Exist(sCacheDir &/ "plugins" &/ sDir &/ sFileName) Then Try Kill sCacheDir &/ "plugins" &/ sDir &/ sFileName Try Kill sCacheDir &/ "plugins" &/ sDir & ".info" Try Rmdir sCacheDir &/ "plugins" &/ sDir Endif Next $sArchivePath = sCacheDir &/ "plugins" &/ $sMd5 &/ sFileName Try Mkdir sCacheDir &/ "plugins" &/ $sMd5 Else Try Mkdir sCacheDir &/ $sMd5 sFileName = sName $sArchivePath = sCacheDir &/ $sMd5 &/ sFilename Endif Dim ArchiveCmd As String[] = [System.Path &/ "bin/gba" & System.Version, "-o", $sArchivePath, $sPrjPath] If $oContext.$bVerbose Then ArchiveCmd.Add("-v", 1) Verbose(ArchiveCmd.Join(" ")) Exec ArchiveCmd To sRes If $oContext.$bPlugin Then Try Kill sCacheDir &/ sFileName Try Link $sArchivePath To sCacheDir &/ sFileName $sExecutable = sCacheDir &/ sFileName $sStartupClass = ScriptPreProcess["Startup"] Endif 'Exec [System.Path &/ "bin/gba" & System.Version, "-o", $oContext.$sArchivePath, $oContext.$sPrjPath] To sRes If $oContext.$bPlugin Then File.Save(sCacheDir &/ "plugins" &/ $sMd5 & ".info", $oContext.$aIncFiles.Join("\n")) Else File.Save(sCacheDir &/ $sMd5 & ".info", $oContext.$aIncFiles.Join("\n")) Endif Endif If Not $oContext.$bBuildOnly Then $sArchivePath = sCacheDir &/ $sMd5 &/ sName Dim RunParms As String[] = [System.Path &/ "bin/gbr" & System.Version, "-a", $sPath, $sArchivePath] If $oContext.$bTrace Then RunParms.add("-t", 1) $aAppArgs.Insert(RunParms, 0) Verbose($aAppArgs.Join(" ")) Dim starttime As Float = Timer verbose("***************** Script Output Begins Bellow This Line (" & CStr(Now) & ")**************************") If $oContext.$bTestMode Then Exec $aAppArgs To $oContext.$sTestModeCapture Else Exec $aAppArgs Wait Endif verbose("***************** Script Output Ends ****(" & CStr(Now) & ")**********************") verbose("Execution Time = " & CStr(Timer - starttime)) If Process.LastState = Process.Crashed Then Warning(("Script had Segmentation fault, Code=" & Process.LastValue), True) Endif If $oContext.$bTestMode Then Return Process.LastValue Else Quit Process.LastValue Endif Endif If $oContext.$bTestMode Or If $bRunAsPlugin Then Return 0 Else Quit 0 Endif Catch Error Error.Text; " : "; Error.where ' added for debugging If UseLibComp.HasComponents Then '' added because get circular ref from ccomponent otherwise on exit CComponent.All.Clear() Endif If $oContext.$bTestMode Or If $bRunAsPlugin Then Return -2 Else Quit -2 Endif End With End Public Function IsValid(sPath As String) As Boolean Dim aFileInfo As String[] Dim i As Integer If Not Exist(sPath) Then Return False aFileInfo = Split(File.Load(sPath), "\n") For i = 0 To aFileInfo.Max Step 2 If Stat(aFileInfo[i]).LastModified > CDate(aFileInfo[i + 1]) Then Return False Next Return True Catch Return False End gambas-3.16.3/app/src/gbs3/.src/ScriptPreProcess.module000066400000000000000000000137061411575327000226050ustar00rootroot00000000000000' Gambas module file '' This function will process any compiler options provided '' verify if they are valid and format info to be added to the project file '' Or other #Script commands '' in the script file add the following format '' #Script type="Library" '' #Script Vendor="mycompany" '' #SCript Version="1.0.3" Public isLibrary As Boolean = False Public isComponent As Boolean = False Public isInstall As Boolean = False Public hasVendor As Boolean = False Public hasAuthor As Boolean = False Public hasVersion As Boolean = False Public hasOptions As Boolean = False Public PublicFiles As New String[] Public ProjectInfo As Collection Public Enum eType, eVersion, eDescription, eMaintainer, eAuthor, eVendor, eLicense, eInstall, eTitle, eName, eNotFound, eIgnored, eStartup, eUseHttpServer, ePublic, eError, eScript ' On Goto SYMTYPE, SYMVERSION, SYMDESCRIPTION, SYMMAINTAINER, SYMAUTHORS, SYMVENDOR, SYMLICENSE, SYMINSTALL, SYMTITLE, SYMNAME, SYNOTFOUND, SYMIGNORED, SYMSTARTUP Public KeyWords As Collection = ["TYPE": eType, "VERSION": eVersion, "DESCRIPTION": eDescription, "MAINTAINER": eMaintainer, "AUTHORS": eAuthor, "AUTHOR": eAuthor, "VENDOR": eVendor, "LICENSE": eLicense, "INSTALL": eInstall, "TITLE": eTitle, "NAME": eName, "ERROR": eError, "SCRIPT": eScript, "STARTUP": eStartup, "USEHTTPSERVER": eUseHttpServer, "PUBLIC": ePublic] Public CompTypes As Collection = ["LIBRARY": 0, "COMPONENT": 1, "PROGRAM": 2] 'Private processLine As String[] Public Sub _init() CompTypes.default = 3 KeyWords.default = eNotFound ProjectInfo = New Collection(gb.ignorecase) ProjectInfo.Add("# Gambas Project File 3.0", "Header") ProjectInfo.Add("Gambas Script", "Title") ProjectInfo.Add("MMain", "Startup") ProjectInfo.Add("Ordinary", "Vendor") ProjectInfo.Add("0.0.1", "Version") ProjectInfo.Add("General Public License 2.0", "License") ProjectInfo.Add("", "Type") End Public Sub reset() _init() End '' Script Preprocessor entries will look like this '' #Script name="xxxx" '' #Script startup="MySub" '' #Script Version ="0.2.3" , ... '' #Script .... Public Sub _call(aSymbols As String[], aTypes As Integer[], LineNumber As Integer, sPath As String) 'Dim inLine As String Dim KeyIndex As Integer Dim i As Integer ' If hasOptions Then ' options have already been defined ' ScriptMain.CompileError("Options", LineNumber, "Project Options already defined") ' Endif If aSymbols.count < 2 Then Return For i = 1 To aSymbols.Max If aSymbols[i] = "," Then Continue KeyIndex = KeyWords[Upper(aSymbols[i])] Inc i If aSymbols[i] <> "=" Or If aTypes[i + 1] <> Highlight.string Then CompileError(sPath, LineNumber, "Invalid #Script PreProcess Command Format :" & aSymbols.Join(" ")) Return Endif Inc i On KeyIndex Goto SYMTYPE, SYMVERSION, SYMDESCRIPTION, SYMMAINTAINER, SYMAUTHORS, SYMVENDOR, SYMLICENSE, SYMINSTALL, SYMTITLE, SYMNAME, SYNOTFOUND, SYMIGNORED, SYMSTARTUP, SYMUSEHTTPSERVER, SYMPUBLIC Continue SYNOTFOUND: CompileError(sPath, LineNumber, "Invalid #Script PreProcess Command:" & aSymbols[i]) Break SYMTYPE: Dim TypeIndex As Integer TypeIndex = CompTypes[Upper(UnQuote(aSymbols[i]))] Select Case TypeIndex Case 0 'Library ProjectInfo["Type"] = UnQuote(aSymbols[i]) isLibrary = True Case 1 'Component ProjectInfo["Type"] = UnQuote(aSymbols[i]) isComponent = True Case 2 'program ' does nothing Case 3 ' unknown thingy CompileError(sPath, LineNumber, "Invalid #Script 'Type' Definition:" & aSymbols[i]) End Select Continue SYMVERSION: ProjectInfo["Version"] = UnQuote(aSymbols[i]) Continue SYMDESCRIPTION: ProjectInfo["Description"] = UnQuote(aSymbols[i]) Continue SYMMAINTAINER: ProjectInfo["Maintainer"] = UnQuote(aSymbols[i]) Continue SYMAUTHORS: ProjectInfo["Authors"] = UnQuote(aSymbols[i]) Continue SYMVENDOR: ProjectInfo["Vendor"] = UnQuote(aSymbols[i]) Continue SYMLICENSE: ProjectInfo["License"] = UnQuote(aSymbols[i]) Continue SYMNAME: ProjectInfo["Name"] = UnQuote(aSymbols[i]) Continue SYMINSTALL: isInstall = IIf(Upper(UnQuote(aSymbols[i])) = "TRUE", True, False) Continue SYMTITLE: ProjectInfo["Title"] = UnQuote(aSymbols[i]) Continue SYMSTARTUP: ProjectInfo["Startup"] = UnQuote(aSymbols[i]) Continue SYMUSEHTTPSERVER: ProjectInfo["UseHttpServer"] = UnQuote(aSymbols[i]) Continue SYMPUBLIC: Dim sPublicFilePath As String = UnQuote(aSymbols[i]) Dim sPPATH As String = File.Dir(sPublicFilePath) If sPpath = "" Then sPublicFilePath = Env["PWD"] &/ sPublicFilePath Endif If Not Exist(sPublicFilePath) Then CompileError(sPath, LineNumber, "Unable to find Public file:" & sPublicFilePath) Endif PublicFiles.Add(sPublicFilePath) Continue SYMIGNORED: Next If (isLibrary Or isComponent) And If ProjectInfo["vendor"] = "" Then ProjectInfo["vendor"] = IIf(isLibrary, "(unknown)", "gb") Warning("Using default project vendor (unknown)") Endif End Public Sub GetProjectOptions() As String Dim sOptOut As String = ProjectInfo["Header"] & "\n" For Each s As String In ProjectInfo If s <> "" And If ProjectInfo.key <> "Header" Then sOptOut &= ProjectInfo.key & "=" & s & "\n" Endif Next Return sOptOut End Public Sub SetStartup(StartupName As String) ProjectInfo["Startup"] = StartUpName End Public Sub GetStartup() As String Return ProjectInfo["Startup"] End Public Sub _put(value As Variant, index As String) ProjectInfo[index] = value End Public Sub _get(index As String) As Variant Return ProjectInfo[index] End gambas-3.16.3/app/src/gbs3/.src/ScriptTestPluginMode.module000066400000000000000000000013611411575327000234150ustar00rootroot00000000000000' Gambas module file Public Filter As Collection = ["Print statement is not allowed in script": ".*Print.*", "Comments not allowed in scripts": ".*'.*$"] Public Sub main() Scripter.SetKeyWordFilter(Filter) Dim TestPlugin As Object = Scripter("TestPlugin", ["-w", "-v"], ["NewTestPlugin", "CD", 100, 200]) If TestPlugin Then Print TestPlugin("Element 1", 1, 2, "Element 3", "Last Item 4") Else Print "Error in compile of plugin 1:"; Scripter.CompileResult Endif Dim TestPlugin2 As Object = Scripter("TestPlugin2", ["-w", "-v"], ["New testPlugin2"]) If TestPlugin2 Then Print TestPlugin2() Else Print "Error in compile of plugin 2:"; Scripter.CompileResult Endif End gambas-3.16.3/app/src/gbs3/.src/Scripter.class000066400000000000000000000037151411575327000207450ustar00rootroot00000000000000' Gambas class file Export Static Public CompileResult As Integer = 0 Static Public CompileError As String = "" '' This allows integration of scripter into an application that uses plugins '' the call would be Scripter(MyScript,"-b -c etc these are other parameters") '' This returns the instanciated class of the plugin script Static Public Sub _call(ScriptPath As String, Optional CompileParameters As String[] = [], PluginNewParameters As Variant[] = Null) As Variant Dim PluginClass As Class Dim PluginObject As Object If Not Component.IsLoaded("gb.eval") Then Component.Load("gb.eval") If Not Class.IsLoaded("ScriptMain") Then Class.load("ScriptMain") If Not Class.IsLoaded("Highlight") Then Class.load("ScriptMain") ScriptMain.$bRunAsPlugin = True Dim aParms As String[] = CompileParameters aParms.Add("gbs" & System.version, 0) aParms.Push("-p") aParms.Push(ScriptPath) CompileResult = ScriptMain.ScripterMain(aParms) If CompileResult <> 0 Then Warning("Plugin Compile Failed :" & ScriptMain.$sLastCompileError) CompileError = ScriptMain.$sLastCompileError Return Null Endif Component.Load(ScriptMain.$sExecutable) PlugInClass = Class.Load(ScriptMain.$sStartUpClass) If IsNull(PluginNewParameters) Then PlugInObject = PluginClass.New() Else PlugInObject = PluginClass.New(PlugInNewParameters) Endif ScriptMain._ResetAll() Return PluginObject End '' Allow user to define keyword filter, this will allow to stop certain functions from '' being allowed inside a script file. as need by the pluging user '' This filter set is a set of regular expressions which will be used to match program lines '' Entry would be : "Message if matched":"Regular expression" '' example "File IO not permitted":"*Open* For * Write" '' to prevent opening a file for or input output would look like Static Public Sub SetKeyWordFilter(KeyManagement As Collection) Reader.$sScriptFilter = KeyManagement End gambas-3.16.3/app/src/gbs3/.src/TestSuite/000077500000000000000000000000001411575327000200465ustar00rootroot00000000000000gambas-3.16.3/app/src/gbs3/.src/TestSuite/TSR.module000066400000000000000000000166011411575327000217310ustar00rootroot00000000000000' Gambas module file ' This module is only used for testing and need not be included in the final executable Public $bTestDebug As Boolean = False Private gbsver As String = "gambas" & System.version Private ShellScript As String = "#!/bin/bash\n" "mkdir /usr/lib" &/ gbsVer &/ "biz1\n" "touch /usr/lib" &/ gbsVer &/ "biz1/liba:1.1.0.gambas\n" "touch /usr/lib" &/ gbsVer &/ "biz1/liba:1.2.0.gambas\n" "touch /usr/lib" &/ gbsVer &/ "biz1/liba:2.1.0.gambas\n" "touch /usr/lib" &/ gbsVer &/ "biz1/liba:3.1.3.gambas\n" Private $InitDone As Boolean Public Sub CreateTestEnvironment() If $InitDone Then Return 'Test.Note("Initialize the component collection") 'System.language = "de_DE.UTF-8" ScriptMain._ResetAll() ScriptMain.$oContext.$bTestmode = True If Not Exist("/usr/lib" &/ gbsVer &/ "biz1") Then If Not Exist(User.home &/ "bin") Then Mkdir User.home &/ "bin" Endif File.Save(User.home &/ "bin/makegbs" & System.version & "tests", ShellScript) Chmod User.home &/ "bin/makegbs" & System.version & "tests" To "rwxr-xr-x" Test.Note("") Test.Note("You must have a directory called /usr/lib/" & gbsVer & "/biz1 in your system for this test suite to pass") Test.Note("It must contain liba:1.1.0.gambas, liba:2.1.0.gambas, liba:3.1.3") Test.Note("The tests will fail if not present, not a problem. You can copy and paste following into a terminal and try again") Test.Note("sudo mkdir /usr/lib/" & gbsVer & "/biz1") Test.Note("sudo touch /usr/lib/" & gbsVer & "/biz1/liba:1.1.0.gambas") Test.Note("sudo touch /usr/lib/" & gbsVer & "/biz1/liba:1.2.0.gambas") Test.Note("sudo touch /usr/lib/" & gbsVer & "/biz1/liba:2.1.0.gambas") Test.Note("sudo touch /usr/lib/" & gbsVer & "/biz1/liba:3.1.3.gambas") Test.Note("") Test.Note("Or you may execute the shell script : sudo " & User.home &/ "bin/makegbs" & System.version & "tests") Test.Note("From your ~/bin directory") Test.BailOut("Please create the required directories before continuing") Endif 'Test.Note("") Try Mkdir User.home &/ ".local" Try Mkdir User.home &/ ".local/libtest" Shell "/bin/touch " & User.home &/ ".local/libtest" &/ "libe:1.1.0.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/libtest" &/ "libe:2.2.1.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/libtest" &/ "libe:2.2.0.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/libtest" &/ "libe:2.2.3.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/libtest" &/ "libe:3.1.9.gambas" Wait Try Mkdir User.home &/ ".local/share" Try Mkdir User.home &/ ".local/share" &/ gbsVer Try Mkdir User.home &/ ".local/share" &/ gbsVer &/ "lib" Try Mkdir User.home &/ ".local/share" &/ gbsVer &/ "lib/biz1" Try Mkdir User.home &/ ".local/share" &/ gbsVer &/ "lib/(unknown)" Shell "/bin/touch " & User.home &/ ".local/share/" &/ gbsVer &/ "lib/biz1/liba:4.2.1.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/share" &/ gbsVer &/ "lib/biz1/liba:4.3.2.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/share" &/ gbsVer &/ "lib/biz1/liba:5.2.1.gambas" Wait Shell "/bin/touch " & User.home &/ ".local/share" &/ gbsVer &/ "lib/biz1/liba:6.1.8.gambas" Wait Shell "/bin/touch '" & User.home &/ ".local/share" &/ gbsVer &/ "lib/(unknown)/liba:7.1.8.gambas'" Wait $InitDone = True If $bTestDebug Then Test.Note("When Gambas ide creates a library with no vendor using make executable then an (unknown) directory is created in the users .local library") If $bTestDebug Then Test.Note("This differs from create installation which forces a vendor name before continuing") End '' ************************************************************************************** '' Test Support routines '' ************************************************************************************** Public Sub CompareStringArray(sA As String[], sB As String[]) As Boolean Dim bResult As Boolean = True Dim bFinalResult As Boolean = True Dim sPrintLine As String For i As Integer = 0 To IIf(sA.max > sB.max, sA.max, sB.max) Try bResult = (sA[i] == sB[i]) If Error Then bResult = False Error.Clear() Endif If Not bResult Then bFinalResult = False Next If bFinalResult = False Then Test.Note(Subst("Compare size a=&1, b=&2", sA.count, sB.count)) For i As Integer = 0 To IIf(sA.max > sB.max, sA.max, sB.max) Try bResult = (sA[i] = sB[i]) If Error Then bResult = False Error.Clear() Endif sPrintLine = Format(i + 1, "000#") & IIf(bResult = True, " = ", " - ") If i <= sA.max Then sPrintLine &= Mid(Replace(Quote(sA[i]), " ", ".") & Space(38), 1, 38) & " | " Else sPrintLine &= Space(25) & " | " Endif If i <= sB.max Then sPrintLine &= Mid(Replace(Quote(sB[i]), " ", ".") & Space(38), 1, 38) Endif Test.Note(sPrintLine) Next Endif Return bFinalResult End Public Sub CompareStringContent(sA As String[], sB As String[]) As Boolean Dim bResult As Boolean = True Dim bFinalResult As Boolean = True Dim sPrintLine As String If sA.count <> sB.count Then bFinalResult = False Else For i As Integer = 0 To sA.max Try bResult = sB.Exist(sA[i], gb.IgnoreCase) If Error Then bResult = False Error.Clear() Endif If Not bResult Then bFinalResult = False Endif Next Endif If bFinalResult = False Then Test.Note(Subst("Compare size a=&1, b=&2", sA.count, sB.count)) For i As Integer = 0 To IIf(sA.max > sB.max, sA.max, sB.max) Try bResult = (sA[i] == sB[i]) If Error Then bResult = False Error.Clear() Endif sPrintLine = Format(i + 1, "000#") & IIf(bResult = True, " = ", " - ") If i <= sA.max Then sPrintLine &= Mid(Replace(Quote(sA[i]), " ", ".") & Space(38), 1, 38) & " | " Else sPrintLine &= Space(25) & " | " Endif If i <= sB.max Then sPrintLine &= Mid(Replace(Quote(sB[i]), " ", ".") & Space(38), 1, 38) Endif Test.Note(sPrintLine) Next Endif Return bFinalResult End Public Sub Printoutput(mObject As Object, func As String, ...) As String ' to capture a printed string from function and list of parameters Dim buffer As New Byte[1000000] Dim len As Integer Dim mFile As File mFile = Memory buffer.data For Write Output To mFile Object.Call(mObject, func, Param.all) len = Seek(mfile) Flush Close mFile Output To Default Return buffer.ToString(0, len) End Public Sub PrintErrOut(mObject As Object, func As String, ...) As String ' to capture a printed string from function and list of parameters Dim buffer As New Byte[1000000] Dim len As Integer Dim mFile As File mFile = Memory buffer.data For Write Error To mFile Object.Call(mObject, func, Param.all) len = Seek(mfile) Close mFile Error To Default Dim s As String = buffer.ToString(0, len) Return s End Public Sub ErrorMsgOut(mObject As Object, func As String, ...) As String ' test when bad data is passed to my function and i have error messages Try Object.Call(mObject, func, Param.all) If Not Error Then Return "No Error" Else Return Error.Text Endif End gambas-3.16.3/app/src/gbs3/.src/TestSuite/TaMServerPages.test000066400000000000000000000026341411575327000236040ustar00rootroot00000000000000' Gambas test file Public Sub _Setup() TSR.CreateTestEnvironment() CComponent._init() End Public Sub _Teardown() CComponent.Clear() End Public Sub WebPageProgramCreation() ScriptMain._ResetAll() ScriptMain.$oContext.$bWebPage = True 'Test.Note("Generate the script to be executed from the web page") Dim sServerPage As String = MServerPage.Make("WebPageTest") Dim aServerPageCompiled As String[] = Split(File.Load("WebPageCompiled"), "\n", "\"\"", True, True) Dim aServerData As String[] = Split(File.Load(sServerPage), "\n", "\"\"", True, True) Assert.Equals(TSR.CompareStringArray(aServerData, aServerPageCompiled) = True, True, "Compile Web Page, test for correct source code output") End Public Sub RunWebPageGeneratedProgram() 'Test.Note("Run the full web page generation and check we have valid output from the generated program") ScriptMain._ResetAll() ScriptMain.$oContext.$bWebPage = True ScriptMain.$oContext.$bTestmode = True ScriptMain.$oContext.$sTestModeCapture = "" ScriptMain.$sPath = "WebPageTest" Try ScriptMain.Main() Dim aServerOutput As String[] = Split(ScriptMain.$oContext.$sTestModeCapture, "\n", "", True, True) Dim aServerExpected As String[] = Split(File.Load("WebPageExpected"), "\n", "", True, True) Assert.Equals(TSR.CompareStringArray(aServerOutput, aServerExpected) = True, True, "Verify That a correct Basic webpage is generated") End gambas-3.16.3/app/src/gbs3/.src/TestSuite/TbCommandLinePrograms.test000066400000000000000000000040051411575327000251350ustar00rootroot00000000000000' Gambas test file Public Sub _Setup() TSR.CreateTestEnvironment() CComponent._init() End Public Sub _Teardown() CComponent.Clear() End Public Sub CreateProgramFromCommandLineArgs() ScriptMain._ResetAll() ScriptMain.$oContext.$bExecuteFromArgs = True ScriptMain.$oContext.$sUse = "gb.eval.highlight,gb.pcre,gb.notifyt" Dim sResult As String = TSR.ErrorMsgOut(GenerateFilesFromArgs, "_call", ScriptMain.$oContext, "Dim I As Integer:Print I:Inc I", "projectpath") Dim sExpect As String = "gbs" & System.Version & ": gb.eval.highlight,gb.pcre,gb.notifyt.0: Unknown component: gb.notifyt" Assert.Equals(sResult, sExpect, "Test For bad Component ") If TSR.$bTestDebug Then Test.note(sResult) Test.Note(sExpect) Endif ScriptMain.$oContext.$sFinalProgram = "" 'ScriptMain.$oContext.$bPrecompiler = True ScriptMain.$oContext.$bExecuteFromArgs = True ScriptMain.$oContext.$sUse = "gb.eval.highlight,gb.pcre,gb.web" GenerateFilesFromArgs(ScriptMain.$oContext, "Dim i As Integer:i=9:Print i:Inc i", "sourcepath") Assert.Equals(TSR.CompareStringArray(Split(ScriptMain.$oContext.$sFinalProgram, "\n", "", True), Split("Public Sub main()\nDim i As Integer\ni=9\nPrint i\nInc i\n\nEnd\n", "\n", "", True)), True, "Verify program is formatted Correctly from command Line") End ' Gambas test file Public Sub ExecuteACommandLineProgram() ScriptMain._ResetAll() ScriptMain.$oContext.$bTestMode = True 'ScriptMain.$oContext.$bPrecompiler = True ScriptMain.$oContext.$bExecuteFromArgs = True ScriptMain.$sPath = "Dim Var1 as string =\"Hello World\":Print \"We say\";;Var1:For i as integer = 0 to 2:Print i:next" ScriptMain.Main() If TSR.$bTestDebug Then Test.Note("Application Output") Test.Note(ScriptMain.$oContext.$sTestModeCapture) Endif Assert.Equals(ScriptMain.$oContext.$sTestModeCapture, "We say Hello World\r\n0\r\n1\r\n2\r\n", "Check the output from the Executed command line script") End ' Public Sub PreCompile() ' Dim a As Integer = 0 ' Inc a ' End gambas-3.16.3/app/src/gbs3/.src/TestSuite/TcMMainFunctions.test000066400000000000000000000137441411575327000241410ustar00rootroot00000000000000' Gambas test file Private $sTestRoot As String = User.home &/ ".local" Public Sub _Setup() TSR.CreateTestEnvironment() CComponent._init() End Public Sub _Teardown() CComponent.Clear() End Public Sub Components() ' Test.Note("Testing Needed Component") ScriptMain._ResetAll() CComponent._init() Assert.Equals(CComponent.WhoImplement["form"][0], "gb.gui", "Check if 'form' is correctly set on init of components") CComponent.GetNeededComp("gb.form") Assert.Equals(CComponent.$cComponents[CComponent.$cComponents.first], "gb.gui", "Forms need gui first in components") End Public Sub ValidFileRebuildCheck() ' Test.note("Testing If rebuild Of script required check") Assert.Equals(ScriptMain.IsValid("TestFile.info"), True, "Check if rebuild required - not needed") Assert.Equals(ScriptMain.IsValid("TestFileFail.info"), False, "Check if rebuild required - Needed") End Public Sub CheckLibraryVersions() Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/libe", "3.1"), $sTestRoot &/ "libtest/libe:3.1.9.gambas", "Veryify we can get the correct library n.n.x") Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/libe", "2"), $sTestRoot &/ "libtest/libe:2.2.3.gambas", "Veryify we can get the correct library n.x.x") Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/libe", "1.1.0"), $sTestRoot &/ "libtest/libe:1.1.0.gambas", "Veryify we can get the correct library n.n.n") Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/libe", "1"), $sTestRoot &/ "libtest/libe:1.1.0.gambas", "Veryify we can get the correct library n.x.x") Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/libe", ""), $sTestRoot &/ "libtest/libe:3.1.9.gambas", "Veryify we can get the correct library x.x.x") Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/", "3.4.4"), "", "Veryify we can get the correct library bad directory name") Assert.Equals(Libraries.CheckLibVersions($sTestRoot &/ "libtest/libd", ""), "", "Veryify we can get the correct library Bad Lib Name") End Public Sub CheckProcessLibrary() 'Test.Note("Verify Library search and versioning") 'Test.Note("") ScriptMain._ResetAll() Assert.Equals(TSR.ErrorMsgOut(Libraries, "ProcessLibrary", "DummyLibName", 1, "~/projects"), "gbs" & System.Version & ": ~/projects.1: " & ("Unknown Library") & ": DummyLibName", "Verify that error is generated when not found") Libraries.ProcessLibrary($sTestRoot &/ "libtest/libe:2", 1, "~/projects") Assert.equals(Libraries.$cLibraries[Libraries.$cLibraries.first], $sTestRoot &/ "libtest/libe:2.2.3.gambas", "Test for absolute path in library name") Libraries.$cLibraries.Clear() Libraries.ProcessLibrary("biz1.liba:3.1", 1, "~/DummyProg") Assert.Equals(Libraries.$cLibraries[Libraries.$cLibraries.first], "/usr/lib/gambas" & System.version & "/biz1/liba:3.1.3.gambas", "Test for auto select from system library n.n.x") Libraries.$cLibraries.Clear() Libraries.ProcessLibrary("biz1.liba:6.1.8", 1, "~/DummyProg") Assert.Equals(Libraries.$cLibraries[Libraries.$cLibraries.first], User.home &/ ".local/share/gambas" & System.version & "/lib/biz1/liba:6.1.8.gambas", "Test for auto select from User .local library n.n.n") Libraries.$cLibraries.Clear() Libraries.ProcessLibrary("biz1.liba:", 1, "~/DummyProg") Assert.Equals(Libraries.$cLibraries[Libraries.$cLibraries.first], User.home &/ ".local/share/gambas" & System.version & "/lib/biz1/liba:6.1.8.gambas", "Test for auto select from User .local library n.n.n") Libraries.$cLibraries.Clear() Libraries.ProcessLibrary("biz1.liba:4.2", 1, "~/DummyProg") Assert.Equals(Libraries.$cLibraries[Libraries.$cLibraries.first], User.home &/ ".local/share/gambas" & System.version & "/lib/biz1/liba:4.2.1.gambas", "Test for auto select from User .local library n.n.x") Libraries.$cLibraries.Clear() Libraries.ProcessLibrary("biz1.liba:4", 1, "~/DummyProg") Assert.Equals(Libraries.$cLibraries[Libraries.$cLibraries.first], User.home &/ ".local/share/gambas" & System.version & "/lib/biz1/liba:4.3.2.gambas", "Test for auto select from User .local library n.x.x") Libraries.$cLibraries.Clear() Libraries.ProcessLibrary("liba:", 1, "~/DummyProg") Assert.Equals(Libraries.$cLibraries[Libraries.$cLibraries.first], User.home &/ ".local/share/gambas" & System.version & "/lib/(unknown)/liba:7.1.8.gambas", "Test for auto select from User .local unknown library x.x.x") End Public Sub FullReadCompileCheck() Dim workdir As String Dim ShouldBefile As String[] = Split(File.Load("TestAppCompiled"), "\n") ScriptMain._ResetAll() ScriptMain.$oContext.$bBuildOnly = True workdir = Temp() Mkdir workdir Try Copy "TestApp" To workdir &/ "TestApp" Try Copy "TestAppInclude" To workdir &/ "TestAppInclude" Try Copy "TestAppInclude2" To workdir &/ "TestAppInclude2" ScriptMain.$sPath = workdir &/ "TestApp" Dim CompiledResult As String[] = Split(TSR.PrintErrOut(MakeVirtualProject, "_Call", ScriptMain.$oContext, ScriptMain.$sPath), "\n", "", True) Assert.Equals(TSR.CompareStringArray(CompiledResult, ShouldBeFile), True, "No Main Test a Basic App with all supported types") End Public Sub FullReadCompileCheckWithMain() Dim workdir As String Dim ShouldBefile As String[] = Split(File.Load("TestAppWithMainCompiled"), "\n") ScriptMain._ResetAll() CComponent._init() ScriptMain.$oContext.$bBuildOnly = True workdir = Temp() Mkdir workdir Try Copy "TestAppWithMain" To workdir &/ "TestAppWithMain" Try Copy "TestAppInclude" To workdir &/ "TestAppInclude" Try Copy "TestAppInclude2" To workdir &/ "TestAppInclude2" ScriptMain.$sPath = workdir &/ "TestAppWithMain" Dim CompiledResult As String[] = Split(TSR.PrintErrOut(MakeVirtualProject, "_Call", ScriptMain.$oContext, ScriptMain.$sPath), "\n", "", True) 'File.save(User.home &/ "Desktop/maincompiled", CompiledResult.Join("\n")) Assert.Equals(TSR.CompareStringContent(ShouldBeFile, CompiledResult), True, "With Main Test a Basic App with all supported types") End gambas-3.16.3/app/src/gbs3/.src/TestSuite/TdGeneralCompile.test000066400000000000000000000003711411575327000241260ustar00rootroot00000000000000' Gambas test file Public Sub LazyApps() Dim cContext As New Context Assert.Noterror(GenerateFiles(cContext, "TestLazyApp", "")) cContext = New Context CComponent.Clear() Assert.Noterror(MakeVirtualProject(cContext, "TestLazyApp")) End gambas-3.16.3/app/src/gbs3/.src/UseLibComp.module000066400000000000000000000023601411575327000213270ustar00rootroot00000000000000' Gambas module file Public HasComponents As Boolean = False Public HasLibraries As Boolean = False Public Sub _FromString(Comp As String) Dim aComp As String[] = Split(Comp) For i As Integer = 0 To aComp.Max aComp[i] = Quote(aComp[i]) Next _call(Comp, 0, "use " & aComp.join()) End Public Sub _call(Path As String, iLine As Integer, sLine As String) Dim aNewLines As String[] = Split(Replace(Trim(sLine), "use ", "", gb.ignorecase)) Dim sRefrence As String = "" For iInd As Integer = 0 To aNewLines.Max Try sRefrence = Eval(aNewLines[iInd]) If Error Then CompileError(Path, iLine, ("Syntax error")) Endif Dim s As String = sRefrence If s Like "*:*" Or s Like "/*" Then Verbose(("Use library") & " " & s) Libraries.ProcessLibrary(s, iLine, path) HasLibraries = True Else Verbose(("Use component") & " " & s) CComponent.ProcessComponent(s, iline, path) HasComponents = True Endif ' If iInd < aNewLines.Max Then ' s = aSym[iInd + 1] ' If s <> "," Then ' CompileError(Path, iLine, ("Comma missing")) ' Endif ' Endif Next End gambas-3.16.3/app/src/gbs3/.src/Verbose.module000066400000000000000000000002551411575327000207330ustar00rootroot00000000000000' Gambas module file Public $bVerboseOn As Boolean = False Public Sub _Call(sMsg As String) If $bVerboseOn Then Error "gbs"; System.Version; " : "; sMsg Endif End gambas-3.16.3/app/src/gbs3/.src/Warning.module000066400000000000000000000004011411575327000207240ustar00rootroot00000000000000' Gambas module file Public $bWarningOn As Boolean = False Public Sub _Call(sMsg As String, Optional bIsError As Boolean = False) If $bWarningOn Or bIsError Then Error "gbs"; System.Version; IIf(bIsError, " Error : ", " Warning : "); sMsg Endif End gambas-3.16.3/app/src/gbs3/.test000066400000000000000000000005451411575327000162340ustar00rootroot00000000000000[TestSuites] Count=0 TestWith=0 Default="TaMServerPages.RunWebPageGeneratedProgram;WebPageProgramCreation,TbCommandLinePrograms.CreateProgramFromCommandLineArgs;ExecuteACommandLineProgram,TcMMainFunctions.CheckLibraryVersions;CheckProcessLibrary;Components;FullReadCompileCheck;FullReadCompileCheckWithMain;ValidFileRebuildCheck,TdGeneralCompile.LazyApps" gambas-3.16.3/app/src/gbs3/RunComponent000066400000000000000000000017471411575327000176330ustar00rootroot00000000000000#!/usr/bin/env -S gbs3 -c -v -w #Script Version="1.0.2" #Script Startup="MySelf" if not component.load(system.find("gbs3")) then print "Scripter not found" quit 1 endif dim cClass as Class = class.load("Scripter") dim Scripter as object = cClass.new() Public SharedInfo as string[] = ["This is the shared info"] Dim TestPlugin,TestPlugin2 As Object TestPlugin = Scripter(User.home &/ "Scripts/TestPlugin",, ["This is the list of Parameters for Class.new(...)", "CD", 100, 200]) If TestPlugin Then print TestPlugin.version Print TestPlugin("Element 1", 1, 2, "Element 3", "Last Item 4","MoreTests") Else Print "Error in compile of plugin" Endif TestPlugin2 = Scripter(User.home &/ "Scripts/TestPlugin2") If TestPlugin Then print TestPlugin.version Print TestPlugin("Element 1", 1, 2, "Element 3", "Last Item 4","MoreTests","Testtoo") Else Print "Error in compile of plugin" Endif QUIT 0 catch Print error.text&"\n" & error.where gambas-3.16.3/app/src/gbs3/TestApp000066400000000000000000000005131411575327000165520ustar00rootroot00000000000000#!/usr/bin/gbs3 use "gb.eval.highlight","gb.pcre" #SCRIPT Version="1.0.5" Dim x as string = "hello" #INCLUDE "TestAppInclude" dim cNew as new TestIt print "From Include of class ",cNew();;"Static Class Include ";TestStatic() 'bogomips for i as integer = 0 to 20 print x;;i next Print "Version Number :";;application.version gambas-3.16.3/app/src/gbs3/TestAppCompiled000066400000000000000000000014351411575327000202330ustar00rootroot00000000000000Class Testit public a as integer = 3456 public sub _Call() as integer return a end End Class Class TestStatic Static Public sIncludeString AS string = "This is Include Too" Static Public sub _Call() as string return sIncludeString end End Class Project file { # Gambas Project File 3.0 Title=Gambas Script Startup=MMain Vendor=Ordinary Version=1.0.5 License=General Public License 2.0 Component=gb.image Component=gb.gui Component=gb.eval Component=gb.eval.highlight Component=gb.pcre } ' Gambas module file Public Sub main() ' #!/usr/bin/gbs3 '#SCRIPT Version="1.0.5" Dim x as string = "hello" dim cNew as new TestIt print "From Include of class ",cNew();;"Static Class Include ";TestStatic() 'bogomips for i as integer = 0 to 20 print x;;i next Print "Version Number :";;application.version Endgambas-3.16.3/app/src/gbs3/TestAppInclude000066400000000000000000000001701411575327000200550ustar00rootroot00000000000000class Testit public a as integer = 3456 public sub _Call() as integer return a end end class Include "TestAppInclude2"gambas-3.16.3/app/src/gbs3/TestAppInclude2000066400000000000000000000002331411575327000201370ustar00rootroot00000000000000class TestStatic Static Public sIncludeString AS string = "This is Include Too" Static Public sub _Call() as string return sIncludeString end end class gambas-3.16.3/app/src/gbs3/TestAppWithMain000066400000000000000000000004661411575327000202220ustar00rootroot00000000000000#!/usr/bin/gbs3 Use "gb.eval.highlight","gb.pcre" Public x As String = "hello" INCLUDE "TestAppInclude" Public Struct testStruct Hp As String g As Integer f As Variant End Struct Public Sub main() dim cNew as new TestIt print "Included Class Result ";cNew() For i As Integer = 0 To 20 Print x;;i Next Endgambas-3.16.3/app/src/gbs3/TestAppWithMainCompiled000066400000000000000000000013221411575327000216670ustar00rootroot00000000000000class Testit public a as integer = 3456 public sub _Call() as integer return a end End Class class TestStatic Static Public sIncludeString AS string = "This is Include Too" Static Public sub _Call() as string return sIncludeString end End Class Project file { # Gambas Project File 3.0 Title=Gambas Script Startup=MMain Vendor=Ordinary Version=0.0.1 License=General Public License 2.0 Component=gb.eval Component=gb.eval.highlight Component=gb.pcre } ' Gambas module file ' #!/usr/bin/gbs3 Public x As String = "hello" Public Struct testStruct Hp As String g As Integer f As Variant End Struct Public Sub main() dim cNew as new TestIt print "Included Class Result ";cNew() For i As Integer = 0 To 20 Print x;;i Next Endgambas-3.16.3/app/src/gbs3/TestFile.info000066400000000000000000000000451411575327000176430ustar00rootroot00000000000000TestFile.info 01/01/2025 15:30:24.001gambas-3.16.3/app/src/gbs3/TestFileFail.info000066400000000000000000000000511411575327000204340ustar00rootroot00000000000000TestFileFail.info 01/01/1945 15:30:24.001gambas-3.16.3/app/src/gbs3/TestLazyApp000066400000000000000000000012471411575327000174170ustar00rootroot00000000000000#!/usr/bin/gbs3 'Lazy App #Script Version="1.9.3" #Script Author="Gambas" #Script Title="My Application" dim a as string = "fgfgfgfg" Public b as string = "sdfsdsdfsdfsdfsdf - 1" "asaasdadsasdasd - 2" "asdasdasdasasdasdasd - 3" & space(34) & "Second Last String - 4" "TheLastString - 5" dim c as integer = 6 print application.Version;;application.Title struct s a as integer b as float end struct public struct d a as integer b as float end struct sub as() as string print "hi" print 10 + 45 end public sub bs() as integer print "hi" print 1 end public enum q,w,e,r,t,y enum w1,r1,t1,y1,u1 For I as integer = 0 to 3 print i nextgambas-3.16.3/app/src/gbs3/TestPlugin000066400000000000000000000016011411575327000172670ustar00rootroot00000000000000#!/usr/bin/env gbs3 'Auto Generated Script 03/09/2021 17:23:23.708 Version (0.0.0) #Script Version="8.9.3" #Script Title="Plugin tester" #Script Description="This plugin is a test for the scripter" Public $sParmInfo as string = "" Dim s As String = "sdfdfsdfdfssdfdsf" Dim i As Variant = s Dim sSum as string= "" Print "------------------------------------------------------" testptr(i) for each s as string in param testptr(s) sSum &= s & " , " next return "Sum ["&sSum&"]" Public Sub testptr(data As Variant) Dim j As Pointer j = VarPtr(data) Print "Input =", j, data print "New Parm was : ";;Quote($sParminfo) End public sub _new(...) dim parminfo as string = "" for each v as variant in param ParmInfo &= quote(cstr(v)) & "," next print "defined Version = "& $sVersion &" Parminfo = ";ParmInfo $sParmInfo = parminfo end gambas-3.16.3/app/src/gbs3/TestPlugin2000066400000000000000000000015341411575327000173560ustar00rootroot00000000000000#Script Version="5.9.3" #Script Name="AnotherTest" #Script Title="Plugin tester Too" #Script Description="This plugin is a test for the scripter too" Public $sParmInfo as string = "" Dim s As String = "Class Info String" Dim i As Variant = s Dim sSum as string= "" print "*************************************************" testptr(i) for each s as string in param testptr(s) sSum &= s & " , " next return "Sum ["&sSum&"]" Public Sub testptr(data As Variant) Dim j As Pointer j = VarPtr(data) Print "Input =", j, data print "New Parm was : ";;Quote($sParminfo) End public sub _new(...) dim parminfo as string = "" for each v as variant in param ParmInfo &= quote(cstr(v)) & "," next print "defined Version = "& $sVersion &" Parminfo = ";ParmInfo Print $sName $sParmInfo = parminfo end gambas-3.16.3/app/src/gbs3/TestWebPageSource000066400000000000000000000004771411575327000205360ustar00rootroot00000000000000USE "gb.web" PUBLIC SUB Main() Response.Buffered = TRUE Response.Begin _PrintPage() Response.End END PRIVATE SUB _PrintPage() PRINT " #!/bin/env /usr/bin/gbw3\n \n \n \n

      Gambas3 Web Server.

      \n \n "; print "A01 ON" PRINT "\n \n "; ENDgambas-3.16.3/app/src/gbs3/WebPageCompiled000066400000000000000000000005001411575327000201550ustar00rootroot00000000000000USE "gb.web" PUBLIC SUB Main() Response.Buffered = TRUE Response.Begin _PrintPage() Response.End END PRIVATE SUB _PrintPage() PRINT " #!/bin/env /usr/bin/gbw3\n \n \n \n

      Gambas3 Web Server.

      \n \n "; print "A01 ON" PRINT "\n \n "; END gambas-3.16.3/app/src/gbs3/WebPageExpected000066400000000000000000000003201411575327000201620ustar00rootroot00000000000000Content-type: text/html;charset=utf-8 Content-Length: 146 #!/bin/env /usr/bin/gbw3

      Gambas3 Web Server.

      A01 ON gambas-3.16.3/app/src/gbs3/WebPageTest000066400000000000000000000002561411575327000173500ustar00rootroot00000000000000 #!/bin/env /usr/bin/gbw3

      Gambas3 Web Server.

      <% print "A01 ON" %> gambas-3.16.3/app/src/gbs3/icon.png000066400000000000000000000027701411575327000167140ustar00rootroot00000000000000PNG  IHDR@@gAMA asRGB pHYs+PLTELiqiUgfhgffggfhgggmgghgfggggggghggghifghghgg)gum3j~&*p/NfԷ:ոTv0@TwUFzqmON.8=;;GZ,[,lߛަnЏ[ZgFkie}%M9ڎ>P,tRNS'g4WmlONXVԑ8fIDATXõWg[06#ޥ+JB{]B tX'َ>$zNwgI8J-ZeT2dw&eXTO.rYG=+ŭJ)YfS;&%̱ܚ=2Վͭ2oJyf'::::&f==K~Xnpv&(/`3YzR|*-DRP01U/z"D- LN8濍R7"̛x0ߠ! b`bK+@Y06HʢAPd9o=K s{)B}(SxsI/ZsQzx_h\/^>~ay]F'xGĤr07\qɨ&ZbJ!,;(Ȭ ln^69ǂAոifZ~À2BӠʕc/\+9Y~;~7$5K5WFVB2Q2Uq/|, a~VQ+dIc!c!jV.}"e(gsdAi?3'G3Lr0|Ïypcs#Rq側;֣I?5CylOʗOI2NgIA9SP~K &)B1]+#jw-~ۮXQo,'JE6e͕K7EJ33ܪqQ[fE|歩<)P@Suەn{L+ۍi)؞ p|kdlxxlkh\ cL}#7tΉ5x]KFߒdwE]{&Rlͷ[l?>:fuQIENDB`gambas-3.16.3/app/src/gbs3/license000066400000000000000000000004261411575327000166170ustar00rootroot00000000000000(c) Fabien Bodard, Benoît Minisini, Brian Grindlay 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, or (at your option) any later version. gambas-3.16.3/app/src/gbs3/usage-gbs000066400000000000000000000033411411575327000170510ustar00rootroot00000000000000 Compile and execute a Gambas script. Usage: gbs3 [options][--] [", I) If iPos = 0 Then Highlight.Text = String.Mid$(sText, I) GoSub READ_SCRIPT iNextState = Highlight.State iTagMode = Highlight.Tag Goto END_TEXT Else If iPos > I Then Highlight.Text = String.Mid$(sText, I, iPos - I) GoSub READ_SCRIPT Endif Add("", Highlight.Keyword) iTag = TAG_HTML I = iPos + 9 bNextLimit = True Goto STATE_HTML Endif READ_STYLE: sText = Highlight.Text While sText MeetCodeAt = 0 HighlightCSS.Run() If MeetCodeAt = 0 Then $sBufferAfter &= sText Break Endif $sBufferAfter &= String.Left(sText, MeetCodeAt - 1) Highlight.AlternateState = True Add("<%", Highlight.Keyword) I = MeetCodeAt + 2 GoSub READ_CODE sText = String.Mid$(sText, I) Highlight.Text = sText Wend Return STATE_STYLE: Highlight.Tag = iTagMode iPos = String.InStr(sText, "", I) If iPos = 0 Then Highlight.Text = String.Mid$(sText, I) GoSub READ_STYLE iNextState = Highlight.State iTagMode = Highlight.Tag Goto END_TEXT Else If iPos > I Then Highlight.Text = String.Mid$(sText, I, iPos - I) GoSub READ_STYLE Endif Add("", Highlight.Keyword) iTag = TAG_HTML I = iPos + 8 bNextLimit = True Goto STATE_HTML Endif STATE_CODE: 'Print "**** STATE_CODE" GoSub READ_CODE If I > iLenText Then Goto END_TEXT Else Goto STATE_HTML Endif STATE_CODE_COMMENT: GoSub READ_CODE_COMMENT If I > iLenText Then Goto END_TEXT Else Goto STATE_HTML Endif READ_STRING: sQuote = sCar Add(sQuote, Highlight.String) Do GoSub NEXT_CHAR Add(sCar, Highlight.String) If sCar = sQuote Then Break If sCar = "\\" Then GoSub NEXT_CHAR Add(sCar, Highlight.String) Endif Loop Return IGNORE_STRING: sQuote = sCar 'Add(sQuote, Highlight.String) Do GoSub NEXT_CHAR 'Add(sCar, Highlight.String) If sCar = sQuote Then Break If sCar = "\\" Then GoSub NEXT_CHAR 'Add(sCar, Highlight.String) Endif Loop Return READ_CODE: PushHighlightState Highlight.AlternateState = True Highlight.State = Highlight.Normal Highlight.Tag = 0 bClose = False iStart = I Do If I > iLenText Then Break GoSub NEXT_CHAR If sCar = Chr$(34) Then GoSub IGNORE_STRING Else If sCar = "'" Then I = iLenText + 1 Else If sCar = "%" And If String.Mid$(sText, I, 1) = ">" Then bClose = True Break Endif Loop If bClose Then $sBufferAfter &= AnalyzeCode(String.Mid$(sText, iStart, I - iStart - 1)) Add("%>", Highlight.Keyword) Highlight.AlternateState = False iTagCode = 0 Inc I PopHighlightState iNextState = Highlight.State Else $sBufferAfter &= AnalyzeCode(String.Mid$(sText, iStart)) iTagCode = TAG_CODE iTagMode = Highlight.Tag iNextState = Highlight.State PopHighlightState Endif Return READ_CODE_COMMENT: iPos = String.InStr(sText, "--%>", I) If iPos = 0 Then Add(String.Mid$(sText, I), Highlight.Help) I = iLenText + 1 iTagCode = TAG_CODE_COMMENT Else Add(String.Mid$(sText, I, iPos - I + 3), Highlight.Help) I = iPos + 3 iTagCode = 0 Endif Return NEXT_CHAR: If I > iLenText Then Goto END_TEXT sCar = String.Mid$(sText, I, 1) Inc I If iStyle = STYLE_WEB And If iTagCode = 0 And If sCar = "<" And If String.Mid$(sText, I, 1) = "%" Then If String.Mid$(sText, I, 3) = "%--" Then Add("<%--", Highlight.Help) I += 3 GoSub READ_CODE_COMMENT Goto NEXT_CHAR Else Highlight.AlternateState = True sCar = String.Mid$(sText, I + 1, 1) If sCar = "=" Then Add("<%=", Highlight.Keyword) I += 2 Else If sCar = "!" Then iPos = String.InStr(sText, "%>", I) If iPos = 0 Then iPos = iLenText + 1 Add("<" & String.Mid$(sText, I, iPos - I + 2), Highlight.DataType) I = iPos + 2 Highlight.AlternateState = False Goto NEXT_CHAR Else Add("<%", Highlight.Keyword) Inc I Endif GoSub READ_CODE Goto NEXT_CHAR Endif Endif Return END_TEXT: Highlight.Text = $sTextAfter & $sBufferAfter Highlight.State = iNextState Highlight.Tag = iTag + iTagCode + Shl(iTagMode, 8) + If(bNextLimit, TAG_NEXT_LIMIT, 0) Highlight.ShowLimit = bLimit 'Print "--> "; Bin$(Highlight.Tag, 16);; Highlight.Text End gambas-3.16.3/comp/src/gb.eval.highlight/.src/OldHighlighter/HighlightJavascript.module000066400000000000000000000167251411575327000307760ustar00rootroot00000000000000' Gambas module file Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$" Private Const DIGIT_CAR As String = "0123456789.+-eE" Private $cKeyword As New Collection Private $cOperator As New Collection Private $aKeywords As String[] Public Sub _init() Dim sStr As String $aKeywords = New String[] For Each sStr In ["break", "case", "catch", "const", "continue", "debugger", "default", "delete", "do", "else", "finally", "for", "function", "if", "in", "instanceof", "new", "return", "switch", "throw", "try", "typeof", "var", "void", "while", "with"] $cKeyword[sStr] = 0 $aKeywords.Add(sStr) Next For Each sStr In ["false", "null", "this", "true", "undefined"] $cKeyword[sStr] = 1 $aKeywords.Add(sStr) Next For Each sStr In ["{", "}", ".", ">=", "+", "<<", "!", "=", ">>=", ";", "==", "-", ">>", "~", "+=", ">>>=", "(", ",", "!=", "*", ">>>", "&&", "-=", "&=", ")", "<", "===", "%", "&", "||", "*=", "|=", "[", ">", "!==", "++", "|", "?", "%=", "^=", "--", "^", ":", "<<=", "]", "<=", "/", "/="] $cOperator[sStr] = True Next End Public Sub GetKeywords() As String[] Return $aKeywords End Public Sub Run() Dim iState As Integer Dim iTag As Integer Dim sText As String Dim iLenText As Integer Dim iPos As Integer Dim sCar As String Dim bSingleLineComment As Boolean Dim bSingleQuoteString As Boolean Dim sIdent As String Dim bTestShowLimit As Boolean Dim bLastExpr As Boolean iState = Highlight.State iTag = Highlight.Tag sText = Highlight.Text iLenText = String.Len(sText) bLastExpr = True If iState = Highlight.Operator Then bLastExpr = False For iPos = 1 To iLenText sCar = String.Mid$(sText, iPos, 1) If HighlightHTML.AllowCode And If sCar = "<" And String.Mid$(sText, iPos, 2) = "<%" Then HighlightHTML.MeetCodeAt = iPos Highlight.State = iState Highlight.Tag = iTag Return Endif If iState = Highlight.Normal Then If sCar = "/" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "/" Then iState = Highlight.Comment bSingleLineComment = True Else If sCar = "*" Then sCar = String.Mid$(sText, iPos + 2, 1) If sCar = "*" Then iState = Highlight.Help Else iState = Highlight.Comment Endif bSingleLineComment = False Else If Not bLastExpr And If String.Mid$(sText, iPos + 1, 1) <> " " Then ' Regular expression sIdent = sCar While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If sCar = "\\" Then Inc iPos sIdent &= sCar & String.Mid$(sText, iPos, 1) Continue Endif sIdent &= sCar If sCar = "/" Then Break Endif Wend While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Not IsLetter(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend Highlight.Add(Highlight.DataType, String.Len(sIdent)) iState = Highlight.Normal Continue Else Highlight.Add(Highlight.Operator) Continue Endif Else If sCar = "\"" Then iState = Highlight.String bSingleQuoteString = False Else If sCar = "'" Then iState = Highlight.String bSingleQuoteString = True Else If Asc(sCar) <= 32 Then Else If IsDigit(sCar) Then sIdent = sCar sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Or If sCar = "X" Then sIdent &= sCar Inc iPos While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Not IsHexa(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend Else While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If InStr(DIGIT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend Endif Highlight.Add(Highlight.Number, String.Len(sIdent)) iState = Highlight.Normal bLastExpr = True Continue Else If Len(sCar) >= 2 Or If InStr(IDENT_CAR, sCar) Then sIdent = sCar While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Len(sCar) = 1 And If Not IsDigit(sCar) And If InStr(IDENT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend If $cKeyword.Exist(sIdent) Then iState = Highlight.Keyword If sIdent = "function" Then bTestShowLimit = True If $cKeyword[sIdent] = 1 Then bLastExpr = True Else iState = Highlight.Symbol bLastExpr = True Endif Highlight.Add(iState, String.Len(sIdent)) iState = Highlight.Normal Continue Else sIdent = sCar While iPos < iLenText If $cOperator.Exist(sIdent) Then Break Inc iPos sCar = String.Mid$(sText, iPos, 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If IsBlank(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend bLastExpr = False If $cOperator.Exist(sIdent) Then iState = Highlight.Operator If sIdent = ")" Or If sIdent = "]" Then bLastExpr = True Else iState = Highlight.Error Endif Highlight.Add(iState, String.Len(sIdent)) iState = Highlight.Normal 'Dec iPos Continue Endif Else If iState = Highlight.Comment Or If iState = Highlight.Help Then If Not bSingleLineComment Then sCar = String.Mid$(sText, iPos, 2) If sCar = "*/" Then Highlight.Add(iState, 2) Inc iPos iState = Highlight.Normal Continue Endif Endif Else If iState = Highlight.String Then If sCar = "\\" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Then Highlight.Add(iState, 3) iPos += 2 Continue Else If sCar = "u" Then Highlight.Add(iState, 5) iPos += 4 Continue Else Highlight.Add(iState, 2) Inc iPos Continue Endif Else If sCar = "\"" And If Not bSingleQuoteString Then Highlight.Add(iState) iState = Highlight.Normal bLastExpr = True Continue Else If sCar = "'" And If bSingleQuoteString Then Highlight.Add(iState) iState = Highlight.Normal bLastExpr = True Continue Endif Endif Highlight.Add(iState) Next If iState = Highlight.Comment And If bSingleLineComment Then iState = Highlight.Normal Endif If iState <> Highlight.Comment And If iState <> Highlight.Help Then iState = Highlight.Normal Endif If bTestShowLimit Then Highlight.ShowLimit = LTrim(sText) Begins "function " Endif Highlight.State = iState Highlight.Tag = iTag End gambas-3.16.3/comp/src/gb.eval.highlight/.src/OldHighlighter/HighlightSQL.module000066400000000000000000000077031411575327000273230ustar00rootroot00000000000000' Gambas module file Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_" Private $cDatatype As Collection Private $cFunction As Collection Private $cKeyword As Collection Private $cOperator As Collection Private Sub LoadFile(sPath As String) As Collection Dim sWord As String Dim cCol As New Collection(gb.IgnoreCase) For Each sWord In Split(File.Load(sPath), "\n", "", True) cCol[sWord] = True Next Return cCol End Public Sub _init() $cDatatype = LoadFile("sql/datatypes") $cFunction = LoadFile("sql/functions") $cKeyword = LoadFile("sql/keywords") $cOperator = LoadFile("sql/operators") End Private Sub CheckWord(sWord As String) As Integer If $cKeyword.Exist(sWord) Then Return Highlight.Keyword If $cOperator.Exist(sWord) Then Return Highlight.Operator If $cFunction.Exist(sWord) Then Return Highlight.Function If $cDatatype.Exist(sWord) Then Return Highlight.DataType Return Highlight.Normal End Public Sub Run() Dim iState As Integer Dim iTag As Integer Dim sText As String Dim iLenText As Integer Dim iPos As Integer Dim sCar As String Dim sWait As String Dim iLen As Integer iState = Highlight.State iTag = Highlight.Tag sText = Highlight.Text iLenText = String.Len(sText) For iPos = 1 To iLenText sCar = String.Mid$(sText, iPos, 1) Select Case iState Case Highlight.Normal If Len(sCar) > 1 Then Highlight.Add(Highlight.Error) Else If Asc(sCar) < 33 Then Highlight.Add(iState) Else If sCar = "#" Or If String.Mid$(sText, iPos, 2) = "--" Then Highlight.Add(Highlight.Comment, iLenText - iPos + 1) Break Else If String.Mid$(sText, iPos, 2) = "/*" Then iState = Highlight.Comment Highlight.Add(iState) Else If sCar = "'" Or If sCar = "\"" Then iState = Highlight.String Highlight.Add(iState) sWait = sCar Else If sCar = "`" Then iState = Highlight.Symbol Highlight.Add(iState) sWait = sCar Else iLen = Helper.ReadNumber(sText, iPos) If iLen > 0 Then Highlight.Add(Highlight.Number, iLen) iPos += iLen - 1 Continue Endif iLen = Helper.ReadIdentifier(sText, iPos, IDENT_CAR) If InStr(IDENT_CAR, String.Mid$(sText, iPos, 1)) Then iState = CheckWord(String.Mid$(sText, iPos, iLen)) Else While iLen > 0 iState = CheckWord(String.Mid$(sText, iPos, iLen)) If iState <> Highlight.Normal Then Break Dec iLen Wend Endif If iLen > 0 Then If iState <> Highlight.Normal Then Highlight.Add(iState, iLen) iPos += iLen - 1 iState = Highlight.Normal Continue Else Highlight.Add(Highlight.Symbol, iLen) iPos += iLen - 1 Continue Endif Endif Highlight.Add(Highlight.Error) Endif Case Highlight.Symbol Highlight.Add(iState) If sCar = sWait Then iState = Highlight.Normal Endif Case Highlight.Comment Highlight.Add(iState) If String.Mid$(sText, iPos, 2) = "*/" Then Highlight.Add(iState) Inc iPos iState = Highlight.Normal Endif Case Highlight.String Highlight.Add(iState) If sCar = "\\" Then Highlight.Add(iState) Inc iPos Else If sCar = sWait Then iState = Highlight.Normal Endif End Select Next 'If bTestShowLimit Then ' Highlight.ShowLimit = LTrim(sText) Begins "function " 'Endif Highlight.State = iState Highlight.Tag = iTag End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter.class000066400000000000000000000467701411575327000250710ustar00rootroot00000000000000' Gambas class file Export Create Static Create Private Class Paint Class Color Static Public Const Name As String = "" Static Property Read DefaultStyle As TextHighlighterStyle[] Static Public _Highlight As Byte[] Static Public (Line) As Integer Static Public State As Integer Static Public Tag As Integer Static Public TextAfter As String Static Public Alternate As Boolean Static Public Limit As Boolean Static Public Comment As Boolean Static Public CanRewrite As Boolean Static Private $aStyle As TextHighlighterStyle[] Static Public Sub Add((State) As Integer, Optional Count As Integer = 1) Dim iState As Integer Dim I As Integer iState = State If Alternate Then iState += 128 If _Highlight.Count = 0 Or If _Highlight[_Highlight.Max - 1] <> iState Or If _Highlight[_Highlight.Max] > (255 - Count) Then For I = 1 To Count \ 255 _Highlight.Add(iState) _Highlight.Add(255) Next Count = Count % 255 _Highlight.Add(iState) _Highlight.Add(Count) Else _Highlight[_Highlight.Max] += Count Endif TextHighlighter.State = State End ' Static Public Sub Remove(Count As Integer) ' ' Dim N As Integer ' ' Do ' ' If Count = 0 Or If _Highlight.Count = 0 Then Return ' ' N = Min(Count, _Highlight[_Highlight.Max]) ' If N = _Highlight[_Highlight.Max] Then ' _Highlight.Delete(_Highlight.Max - 1, 2) ' Else ' _Highlight[_Highlight.Max] -= N ' Endif ' Count -= N ' ' Loop ' ' End Static Public Sub _get(Type As String) As TextHighlighter Try Return Class.Load("TextHighlighter_" & Type).AutoCreate() Error.Raise("Cannot load highlighter: '" & Type & "'") End Public Sub Run((Text) As String) End Public Sub GetKeywords() As String[] End Public Sub ToHTML(Text As String, Optional Styles As TextHighlighterStyle[]) As String Dim aResult As New String[] Dim sLine As String Dim aHighlight As Byte[] Dim Y As Integer Dim I As Integer Dim sHTML As String Dim aText As String[] Dim iState As Integer Dim hStyle As TextHighlighterStyle Dim bAlt As Boolean Dim iLen As Integer Dim P As Integer Dim sLineHtml As String Dim iColor As Integer Dim sOldStyle As String Dim sStyle As String If Not Styles Then Styles = TextHighlighter.DefaultStyle TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 0 TextHighlighter.Alternate = False TextHighlighter.Limit = False aText = Split(Text, "\n") iColor = 0 aResult.Add("
      ")
        sOldStyle = "color:#000000;"
        
        For Y = 0 To aText.Max
          
          aHighlight = New Byte[]
          
          TextHighlighter._Highlight = aHighlight
          TextHighlighter.TextAfter = ""
          TextHighlighter.Line = Y
          
          sLine = aText[Y]
          Me.Run(sLine)
          If Y = 0 Then TextHighlighter.Limit = False
          
          If TextHighlighter.TextAfter Then sLine = TextHighlighter.TextAfter
      
          sLineHtml = ""
          P = 1
          
          For I = 0 To aHighlight.Max Step 2
            
            iState = aHighlight[I] And 31
            Try hStyle = Styles[iState]
            If Error Then hStyle = Styles[0]
            bAlt = aHighlight[I] >= 128
            iLen = aHighlight[I + 1]
            
            sHtml = Replace(Html(String.Mid$(sLine, P, iLen)), " ", " ")
            P += iLen
            
            If hStyle.Bold Then sHtml = "" & sHtml & ""
            If hStyle.Underline Then sHtml = "" & sHtml & ""
            
            sStyle = ""
            If bAlt Then sStyle &= "background:#" & Hex$(Styles[Highlight.Alternate], 6) & ";"
            If hStyle.Color Then sStyle &= "color:#" & Hex$(hStyle.Color, 6) & ";"
            
            If sStyle <> sOldStyle Then
              sOldStyle = sStyle
              sHtml = "" & sHtml
            Endif
            
            sLineHtml &= sHtml
            
          Next
          
          If P < String.Len(sLine) Then sLineHtml &= Html(String.Mid$(sLine, P))
          
          ' If TextHighlighter.Limit Then 
          '   If Y And If Not Trim(aResult[aResult.Max]) Then
          '     aResult.Add("
      ") ' Else ' aResult.Add("
      ") ' Endif ' Endif aResult.Add(sLineHtml & "\n") Next aResult.Add("
      ") Return aResult.Join("") End Static Private Function DefaultStyle_Read() As TextHighlighterStyle[] If Not $aStyle Then $aStyle = New TextHighlighterStyle[32] $aStyle[Highlight.Background] = TextHighlighterStyle(&HFFFFFF&) $aStyle[Highlight.Normal] = TextHighlighterStyle(&H000000&) $aStyle[Highlight.Keyword] = TextHighlighterStyle(&H000000&, True) $aStyle[Highlight.Datatype] = TextHighlighterStyle(&HDF6B00&, True) $aStyle[Highlight.Function] = TextHighlighterStyle(&H3398C3&, True) $aStyle[Highlight.Operator] = TextHighlighterStyle(&H000000&, True) $aStyle[Highlight.Symbol] = TextHighlighterStyle(&H000000&) $aStyle[Highlight.Number] = TextHighlighterStyle(&HFF0000&, True) $aStyle[Highlight.String] = TextHighlighterStyle(&H7F0000&) $aStyle[Highlight.Comment] = TextHighlighterStyle(&H888888&, False) $aStyle[Highlight.Help] = TextHighlighterStyle(&H888888&, True) $aStyle[Highlight.Preprocessor] = TextHighlighterStyle(&H006E28&, True) $aStyle[Highlight.Breakpoint] = TextHighlighterStyle(&HFF5F5F&) $aStyle[Highlight.Current] = TextHighlighterStyle(&H42C9FF&) $aStyle[Highlight.Selection] = TextHighlighterStyle(&HC3EDFF&) $aStyle[Highlight.Highlight] = TextHighlighterStyle(&H7FFF00&) $aStyle[Highlight.CurrentLine] = TextHighlighterStyle(&HE7F3FF&) $aStyle[Highlight.Error] = TextHighlighterStyle(&HBF0303&, False, True) $aStyle[Highlight.Escape] = TextHighlighterStyle(&H7F0000&, False, True) $aStyle[Highlight.Label] = TextHighlighterStyle(&H000000&, False, True) $aStyle[Highlight.Constant] = TextHighlighterStyle(&HA00000&, True) $aStyle[Highlight.Alternate] = TextHighlighterStyle(&HA00000&, True) Endif Return $aStyle.Copy() End Public Sub ToRichText(Text As String, Optional Styles As TextHighlighterStyle[]) As String Dim aResult As New String[] Dim sLine As String Dim aHighlight As Byte[] Dim Y As Integer Dim I As Integer Dim sHTML As String Dim aText As String[] Dim iState As Integer Dim hStyle As TextHighlighterStyle Dim bAlt As Boolean Dim iLen As Integer Dim P As Integer Dim sLineHtml As String Dim iColor As Integer Dim sOldStyle As String Dim sStyle As String If Not Styles Then Styles = TextHighlighter.DefaultStyle TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 0 TextHighlighter.Alternate = False TextHighlighter.Limit = False aText = Split(Text, "\n") iColor = 0 aResult.Add("") sOldStyle = "color=\"#000000\"" For Y = 0 To aText.Max aHighlight = New Byte[] TextHighlighter._Highlight = aHighlight TextHighlighter.TextAfter = "" TextHighlighter.Line = Y sLine = aText[Y] Me.Run(sLine) If Y = 0 Then TextHighlighter.Limit = False If TextHighlighter.TextAfter Then sLine = TextHighlighter.TextAfter sLineHtml = "" P = 1 For I = 0 To aHighlight.Max Step 2 iState = aHighlight[I] And 31 Try hStyle = Styles[iState] If Error Then hStyle = Styles[0] bAlt = aHighlight[I] >= 128 iLen = aHighlight[I + 1] sHtml = Replace(Html(String.Mid$(sLine, P, iLen)), " ", " ") P += iLen If hStyle.Bold Then sHtml = "" & sHtml & "" If hStyle.Underline Then sHtml = "" & sHtml & "" sStyle = "" 'If bAlt Then sStyle &= "background:#E0E0E0;" If hStyle.Color Then sStyle &= " color=\"#" & Hex$(hStyle.Color, 6) & "\"" If sStyle <> sOldStyle Then sOldStyle = sStyle sHtml = "" & sHtml Endif sLineHtml &= sHtml Next If P < String.Len(sLine) Then sLineHtml &= Html(String.Mid$(sLine, P)) ' If TextHighlighter.Limit Then ' If Y And If Not Trim(aResult[aResult.Max]) Then ' aResult.Add("
      ") ' Else ' aResult.Add("
      ") ' Endif ' Endif aResult.Add(sLineHtml & "\n") Next aResult.Add("
      ") Return aResult.Join("") End ' Public Sub Paint(Text As String, X As Integer, Y As Integer, Optional Styles As TextHighlighterStyle[]) As String ' ' Dim sLine As String ' Dim aHighlight As Byte[] ' Dim Y As Integer ' Dim I As Integer ' Dim sHTML As String ' Dim aText As String[] ' Dim iState As Integer ' Dim hStyle As TextHighlighterStyle ' Dim bAlt As Boolean ' Dim iLen As Integer ' Dim P As Integer ' Dim sLineHtml As String ' Dim iColor As Integer ' Dim sOldStyle As String ' Dim sStyle As String ' Dim iLine As Integer ' ' If Not Styles Then Styles = TextHighlighter.DefaultStyle ' ' TextHighlighter.State = Highlight.Normal ' TextHighlighter.Tag = 0 ' TextHighlighter.Alternate = False ' TextHighlighter.Limit = False ' ' aText = Split(Text, "\n") ' ' iColor = 0 ' ' For iLine = 0 To aText.Max ' ' aHighlight = New Byte[] ' ' TextHighlighter._Highlight = aHighlight ' TextHighlighter.TextAfter = "" ' TextHighlighter.Line = iLine ' ' sLine = aText[iLine] ' Me.Run(sLine) ' If Y = 0 Then TextHighlighter.Limit = False ' ' If TextHighlighter.TextAfter Then sLine = TextHighlighter.TextAfter ' ' P = 1 ' ' For I = 0 To aHighlight.Max Step 2 ' ' iState = aHighlight[I] And 31 ' Try hStyle = Styles[iState] ' If Error Then hStyle = Styles[0] ' bAlt = aHighlight[I] >= 128 ' iLen = aHighlight[I + 1] ' ' sHtml = Replace(Html(String.Mid$(sLine, P, iLen)), " ", " ") ' P += iLen ' ' If hStyle.Bold Then sHtml = "" & sHtml & "" ' If hStyle.Underline Then sHtml = "" & sHtml & "" ' ' sStyle = "" ' 'If bAlt Then sStyle &= "background:#E0E0E0;" ' If hStyle.Color Then sStyle &= " color=\"#" & Hex$(hStyle.Color, 6) & "\"" ' ' If sStyle <> sOldStyle Then ' sOldStyle = sStyle ' sHtml = "" & sHtml ' Endif ' ' sLineHtml &= sHtml ' ' Next ' ' If P < String.Len(sLine) Then sLineHtml &= Html(String.Mid$(sLine, P)) ' ' ' If TextHighlighter.Limit Then ' ' If Y And If Not Trim(aResult[aResult.Max]) Then ' ' aResult.Add("
      ") ' ' Else ' ' aResult.Add("
      ") ' ' Endif ' ' Endif ' ' aResult.Add(sLineHtml & "\n") ' ' Next ' ' aResult.Add("") ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' Dim I As Integer ' Dim hStyle As TextEditorStyle ' Dim bAlt As Boolean ' Dim iLen As Integer ' Dim P As Integer ' Dim sStr As String ' Dim X2 As Integer ' Dim iState As Integer ' Dim XMin As Integer ' Dim XMax As Integer ' Dim aStyle As TextEditorStyle[] ' Dim hImage As Image ' ' Dim XX, YY, XB, LB As Integer ' Dim hPos As Point ' Dim iNextBreak As Integer ' Dim iLayout As Integer ' Dim iRest As Integer ' Dim bBreak As Boolean ' Dim sKey As String ' Dim W As Integer ' Dim iLayoutCount As Integer ' Dim iCol As Integer ' Dim iBg As Integer ' ' Dim aText As String[] ' Dim iColor As Integer ' Dim iLine As Integer ' ' ' ' XMin = X + $hView.ScrollX ' XMax = XMin + $hView.ClientW ' aStyle = $hStyles._GetStyles() ' iBg = aStyle[iNextState].Background ' ' XX = X ' YY = Y ' ' If aLayout Then ' iLayoutCount = aLayout.Count ' iNextBreak = aLayout[0] ' Else ' iLayoutCount = 0 ' ' Always greater than String.Len(), and faster ' ' Add a big number in the case of an incorrect highlighting ' iNextBreak = Len(sText) + 1000000 ' Endif ' ' For I = 0 To aColor.Max Step 2 ' ' If Not aLayout Then ' If XX > XMax Then Break ' Endif ' ' iState = aColor[I] And 31 ' hStyle = aStyle[iState] ' bAlt = aColor[I] >= 128 ' If iRest Then ' iLen = iRest ' iRest = 0 ' Else ' iLen = aColor[I + 1] ' Endif ' ' If bBreak Then ' If iBg <> Color.Default Then Paint.FillRect(XX, YY, Paint.W, H, iBg) ' XX = X + LinePos(Row, P).X ' YY += H ' bBreak = False ' Endif ' ' If P + iLen >= iNextBreak Then ' ' bBreak = True ' ' iRest = P + iLen - iNextBreak ' iLen = iNextBreak - P ' ' Inc iLayout ' ' If iLayout < iLayoutCount Then ' iNextBreak += aLayout[iLayout] ' Else ' iNextBreak = Len(sText) + 1 ' Endif ' ' If iRest Then I -= 2 ' ' If iLen = 0 Then Goto NEXT_PATTERN ' ' Endif ' ' hPos = LinePos(Row, P + iLen) ' X2 = X + hPos.X 'LineWidth(Row, P + iLen) ' ' If Not aLayout Then ' If X2 < XMin Then Goto NEXT_PATTERN ' Endif ' ' iBg = hStyle.Background ' If iBg <> Color.Default Then Paint.FillRect(XX, YY, X2 - XX, H, iBg) ' If bAlt Then Paint.FillRect(XX, YY, X2 - XX, H, Color.SetAlpha(&HD0D0D0&, 192)) ' ' sStr = String.Mid$(sText, P + 1, iLen) ' ' If hStyle.Bold Then ' ' hTemp = New Image(X2 - X, H, Color.Transparent) ' ' Paint.Begin(hTemp) ' ' Paint.Font = $hFont ' ' Paint.Translate(- X, - Y) ' ' Endif ' ' 'If hStyle.Bold Then Paint.Font = $hFontBold ' If InStr(sStr, "\t") Then ' GoSub DRAW_TEXT_WITH_TAB ' Else If Trim(sStr) Then ' If Not $bRemoteDisplay And If iLen <= 16 Then ' sKey = Chr$(iState) & sStr ' hImage = $cCacheText[sKey] ' If Not hImage Then ' ' W = X2 - XX ' If W <= 0 Then W = TextWidth(sStr, 1, iLen) ' If hStyle.Bold Then W += ($BW + 1) \ 2 ' hImage = New Image(W, H, Color.Transparent) ' ' Paint.Begin(hImage) ' Paint.Font = $hFont ' Paint.Translate(- XX, - YY) ' GoSub DRAW_TEXT ' Paint.End ' ' If $cCacheText.Count > 256 Then ' For Each $cCacheText ' $cCacheText.Remove($cCacheText.Key) ' Break ' Next ' Endif ' ' Else ' ' $cCacheText.Remove(sKey) ' ' Endif ' ' $cCacheText[sKey] = hImage ' Paint.DrawImage(hImage, XX, YY) ' Else ' GoSub DRAW_TEXT ' Endif ' Endif ' 'If hStyle.Bold Then Paint.Font = $hFont ' ' ' If hStyle.Bold Then ' ' Paint.End ' ' 'hTemp.Save("~/temp.png") ' ' Paint.DrawImage(hTemp, X, Y) ' ' Paint.DrawImage(hTemp, X + 1, Y) ' ' Endif ' ' If hStyle.Underline Then ' Paint.FillRect(XX, YY + H - 1, X2 - XX, 1, Color.SetAlpha(hStyle.Color, 128)) ' Else If hStyle.Dotted Then ' Paint.Background = Color.SetAlpha(hStyle.Color, 128) ' Paint.LineWidth = 1 ' Paint.Dash = [1] ' Paint.MoveTo(XX, YY + H - 0.5) ' Paint.RelLineTo(X2 - XX, 0) ' Paint.Stroke ' Endif ' ' ' If $YM >= 0 Then ' ' If Row = $YMO And If $XMO >= P And If $XMO < (P + iLen) Then DrawMatch(SX, Y, H, $XMO, $YMO) ' ' If Row = $YM And If $XM >= P And If $XM < (P + iLen) Then DrawMatch(SX, Y, H, $XM, $YM) ' ' Endif ' ' NEXT_PATTERN: ' ' P += iLen ' XX = X2 ' ' Next ' ' sStr = String.Mid$(sText, P + 1) ' If sStr And If XX <= XMax Then ' ' Paint.Background = $iForeground ' DrawText(sStr, X, XX, YY) ' ' Endif ' ' If iBg <> Color.Default Then Paint.FillRect(XX, YY, Paint.W, H, iBg) ' ' Return ' ' DRAW_TEXT: ' ' iCol = hStyle.Color ' Paint.Background = iCol ' If hStyle.Bold Then ' LB = $BW ' XB = XX ' While LB >= 2 ' Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) ' Inc XB ' LB -= 2 ' Wend ' If LB Then ' Paint.Background = Color.SetAlpha(iCol, 128) ' Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) ' Endif ' Else ' Paint.DrawText(sStr, XX, YY + $iAscent) 'DrawText(sStr, SX, X, Y) ' Endif ' ' Return ' ' DRAW_TEXT_WITH_TAB: ' ' iCol = hStyle.Color ' Paint.Background = iCol ' If hStyle.Bold Then ' LB = $BW ' XB = 0 ' While LB >= 2 ' 'Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) ' DrawText(sStr, X + XB, XX + XB, YY) ' Inc XB ' LB -= 2 ' Wend ' If LB Then ' Paint.Background = Color.SetAlpha(iCol, 128) ' 'Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) ' DrawText(sStr, X + XB, XX + XB, YY) ' Endif ' Else ' 'Paint.DrawText(sStr, XX, YY + $iAscent) 'DrawText(sStr, SX, X, Y) ' DrawText(sStr, X, XX, YY) ' Endif ' ' ' If hStyle.Bold Then ' ' 'Paint.Background = Color.Gradient(iCol, $iBackground) ' ' DrawText(sStr, X, XX + 1, YY) ' ' Endif ' ' 'Paint.Background = iCol ' ' DrawText(sStr, X, XX, YY) ' Return ' ' ' End ' ' Public Sub Paint(Text As String, X As Float, Y As Float, Optional Styles As TextHighlighterStyle[]) As String Dim sLine As String Dim aHighlight As Byte[] Dim I As Integer Dim aText As String[] Dim iState As Integer Dim hStyle As TextHighlighterStyle Dim bAlt As Boolean Dim iLen As Integer Dim P As Integer Dim iColor As Integer Dim iLine As Integer Dim sText As String Dim XB As Integer Dim fCharWidth As Float Dim LH, BW As Integer Dim LB As Integer Dim X0 As Float fCharWidth = Paint._EstimateFixedFontCharWidth(Paint.Font) LH = Paint.Font.Height + 1 BW = 1 + LH \ 6 Y += Paint.Font.Ascent X0 = X If Not Styles Then Styles = TextHighlighter.DefaultStyle TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 0 TextHighlighter.Alternate = False TextHighlighter.Limit = False aText = Split(Text, "\n") For iLine = 0 To aText.Max aHighlight = New Byte[] TextHighlighter._Highlight = aHighlight TextHighlighter.TextAfter = "" TextHighlighter.Line = iLine sLine = aText[iLine] Me.Run(sLine) If Y = 0 Then TextHighlighter.Limit = False If TextHighlighter.TextAfter Then sLine = TextHighlighter.TextAfter P = 1 For I = 0 To aHighlight.Max Step 2 iState = aHighlight[I] And 31 Try hStyle = Styles[iState] If Error Then hStyle = Styles[0] bAlt = aHighlight[I] >= 128 iLen = aHighlight[I + 1] If fCharWidth Then X = X0 + fCharWidth * (P - 1) Else X = X0 + Paint.Font.TextWidth(String.Left(sLine, P - 1)) Endif sText = String.Mid$(sLine, P, iLen) P += iLen iColor = hStyle.Color Paint.Background = iColor If hStyle.Bold Then LB = BW XB = X While LB >= 2 Paint.DrawText(sText, XB, Y) Inc XB LB -= 2 Wend If LB Then Paint.Background = Color.SetAlpha(iColor, 128) Paint.DrawText(sText, XB, Y) Endif Else Paint.DrawText(sText, X, Y) Endif Next If P < String.Len(sLine) Then Paint.DrawText(String.Mid$(sLine, P), X, Y) Y += LH Next End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighterStyle.class000066400000000000000000000006171411575327000261000ustar00rootroot00000000000000' Gambas class file Export Public (Color) As Integer Public Bold As Boolean 'Public Italic As Boolean Public Underline As Boolean Static Public Sub _call((Color) As Integer, Optional (Bold) As Boolean, (Underline) As Boolean) As TextHighlighterStyle Dim hStyle As New TextHighlighterStyle hStyle.Color = Color hStyle.Bold = Bold hStyle.Underline = Underline Return hStyle End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_C.class000066400000000000000000000176141411575327000253260ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "c" Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$" Private Const DIGIT_CAR As String = "0123456789.+-eE" Static Private $cKeyword As New Collection Static Private $cOperator As New Collection Static Private $cType As New Collection Static Private $aKeywords As String[] Static Public Sub _init() Dim sStr As String $aKeywords = New String[] For Each sStr In ["auto", "break", "case", "const", "continue", "default", "do", "else", "enum", "extern", "for", "goto", "if", "register", "return", "sizeof", "static", "struct", "switch", "typedef", "union", "volatile", "while"] $cKeyword[sStr] = 0 $aKeywords.Add(sStr) Next For Each sStr In ["FALSE", "NULL" "TRUE"] $cKeyword[sStr] = 1 $aKeywords.Add(sStr) Next For Each sStr In ["{", "}", ".", ">=", "+", "<<", "!", "=", ">>=", ";", "==", "-", ">>", "~", "+=", "(", ",", "!=", "*", "&&", "-=", "&=", ")", "<", "%", "&", "||", "*=", "|=", "[", ">", "++", "|", "?", "%=", "^=", "--", "^", ":", "<<=", "]", "<=", "/", "/="] $cOperator[sStr] = True Next For Each sStr In ["void", "signed", "unsigned", "char", "short", "int", "long", "float", "double", "int64_t", "uint64_t", "int32_t", "uint32_t", "int16_t", "uint16_t", "int8_t", "uint8_t", "uchar", "ushort", "uint", "ulong"] $cType[sStr] = True $aKeywords.Add(sStr) Next End Public Sub GetKeywords() As String[] Return $aKeywords End Public Sub RunWith(sText As String, cKeyword As Collection, cOperator As Collection, cType As Collection) Dim iState As Integer Dim iTag As Integer Dim iLenText As Integer Dim iPos, iSavePos As Integer Dim sCar As String Dim bSingleLineComment As Boolean Dim bSingleQuoteString As Boolean Dim sIdent As String Dim iPosType, iPosIdent, iPosAfterIdent As Integer Dim bLastExpr As Boolean iState = TextHighlighter.State iTag = TextHighlighter.Tag iLenText = String.Len(sText) bLastExpr = True If iState = Highlight.Operator Then bLastExpr = False If Left(LTrim(sText)) = "#" Or If iState = Highlight.Preprocessor Then TextHighlighter.Add(Highlight.Preprocessor, iLenText) If Right(RTrim(sText)) = "\\" Then iState = Highlight.Preprocessor Else iState = Highlight.Normal Endif Else For iPos = 1 To iLenText If iState = Highlight.Normal Then sCar = String.Mid$(sText, iPos, 1) If sCar = "/" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "/" Then iState = Highlight.Comment bSingleLineComment = True Else If sCar = "*" Then sCar = String.Mid$(sText, iPos + 2, 1) If sCar = "*" Then iState = Highlight.Help Else iState = Highlight.Comment Endif bSingleLineComment = False Endif Else If sCar = "\"" Then iState = Highlight.String bSingleQuoteString = False Else If sCar = "'" Then iState = Highlight.String bSingleQuoteString = True Else If Asc(sCar) <= 32 Then Else If IsDigit(sCar) Then sIdent = sCar sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Or If sCar = "X" Then sIdent &= sCar Inc iPos While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Not IsHexa(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend Else While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If InStr(DIGIT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend Endif TextHighlighter.Add(Highlight.Number, String.Len(sIdent)) iState = Highlight.Normal bLastExpr = True Continue Else If Len(sCar) >= 2 Or If InStr(IDENT_CAR, sCar) Then sIdent = sCar iSavePos = iPos While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Len(sCar) = 1 And If Not IsDigit(sCar) And If InStr(IDENT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend If cKeyword.Exist(sIdent) Then iState = Highlight.Keyword If cKeyword[sIdent] = 1 Then bLastExpr = True Else If cType.Exist(sIdent) Then iState = Highlight.Datatype bLastExpr = True If iPosType = 0 Then iPosType = iSavePos Else iState = Highlight.Symbol If iPosAfterIdent = 0 Then iPosIdent = iSavePos iPosAfterIdent = iSavePos + String.Len(sIdent) Endif bLastExpr = True Endif TextHighlighter.Add(iState, String.Len(sIdent)) iState = Highlight.Normal Continue Else sIdent = sCar While iPos < iLenText If cOperator.Exist(sIdent) Then Break Inc iPos sCar = String.Mid$(sText, iPos, 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If IsBlank(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend If cOperator.Exist(sIdent) Then iState = Highlight.Operator Else iState = Highlight.Error Endif TextHighlighter.Add(iState, String.Len(sIdent)) iState = Highlight.Normal bLastExpr = False 'Dec iPos Continue Endif Else If iState = Highlight.Comment Or If iState = Highlight.Help Then If Not bSingleLineComment Then sCar = String.Mid$(sText, iPos, 2) If sCar = "*/" Then TextHighlighter.Add(iState, 2) Inc iPos iState = Highlight.Normal Continue Endif Endif Else If iState = Highlight.String Then sCar = String.Mid$(sText, iPos, 1) If sCar = "\\" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Then TextHighlighter.Add(iState, 3) iPos += 2 Continue Else If sCar = "u" Then TextHighlighter.Add(iState, 5) iPos += 4 Continue Else TextHighlighter.Add(iState, 2) Inc iPos Continue Endif Else If sCar = "\"" And If Not bSingleQuoteString Then TextHighlighter.Add(iState) iState = Highlight.Normal bLastExpr = True Continue Else If sCar = "'" And If bSingleQuoteString Then TextHighlighter.Add(iState) iState = Highlight.Normal bLastExpr = True Continue Endif Endif TextHighlighter.Add(iState) Next If iState = Highlight.Comment And If bSingleLineComment Then iState = Highlight.Normal Endif If iState <> Highlight.Comment And If iState <> Highlight.Help Then iState = Highlight.Normal Endif Endif TextHighlighter.Limit = False If iPosIdent >= 1 And If Not IsSpace(Left(sText)) Then If InStr(String.Mid$(sText, iPosAfterIdent), "(") Then If RInStr(sText, ";") = 0 Then TextHighlighter.Limit = True Endif Endif Endif TextHighlighter.State = iState TextHighlighter.Tag = iTag End Public Sub Run(Text As String) RunWith(Text, $cKeyword, $cOperator, $cType) End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_CPlusPlus.class000066400000000000000000000036521411575327000270330ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "c++" Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$" Private Const DIGIT_CAR As String = "0123456789.+-eE" Static Private $cKeyword As New Collection Static Private $cOperator As New Collection Static Private $cType As New Collection Static Private $aKeywords As String[] Static Public Sub _init() Dim sStr As String $aKeywords = New String[] For Each sStr In ["asm", "auto", "break", "case", "catch", "class", "const", "const_cast", "continue", "default", "delete", "do", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "for", "friend", "goto", "if", "inline", "mutable", "namespace", "new", "operator", "private", "protected", "public", "register", "reinterpret_cast", "return", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", "throw", "try", "typedef", "typeid", "typename", "union", "using", "virtual", "volatile", "while"] $cKeyword[sStr] = 0 $aKeywords.Add(sStr) Next For Each sStr In ["false", "null" "true", "FALSE", "TRUE", "NULL"] $cKeyword[sStr] = 1 $aKeywords.Add(sStr) Next For Each sStr In ["{", "}", ".", ">=", "+", "<<", "!", "=", ">>=", ";", "==", "-", ">>", "~", "+=", "(", ",", "!=", "*", "&&", "-=", "&=", ")", "<", "%", "&", "||", "*=", "|=", "[", ">", "++", "|", "?", "%=", "^=", "--", "^", ":", "<<=", "]", "<=", "/", "/="] $cOperator[sStr] = True Next For Each sStr In ["void", "bool", "signed", "unsigned", "char", "short", "int", "long", "float", "double", "int64_t", "uint64_t", "int32_t", "uint32_t", "int16_t", "uint16_t", "int8_t", "uint8_t", "wchar_t"] $cType[sStr] = True $aKeywords.Add(sStr) Next End Public Sub GetKeywords() As String[] Return $aKeywords End Public Sub Run(Text As String) TextHighlighter_C.RunWith(Text, $cKeyword, $cOperator, $cType) End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_CSS.class000066400000000000000000000156341411575327000255740ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "css" Static Private $cProp As New Collection Static Private $aKeywords As String[] Static Public Sub _init() Dim sProp As String Dim iPos As Integer $aKeywords = New String[] For Each sProp In Split(File.Load("css/properties"), ", \n", "", True) iPos = InStr(sProp, " ") If iPos Then sProp = Left(sProp, iPos - 1) $cProp[sProp] = True $aKeywords.Add(sProp) Next For Each sProp In Split(File.Load("css/values"), ", \n", "", True) sProp = Trim(sProp) $aKeywords.Add(sProp) Next End Public Sub GetKeywords() As String[] Return $aKeywords End ' Private Sub AnalyzeCode(sText As String) As String ' ' Dim iInd As Integer ' Dim iPos As Integer ' Dim iLen As Integer ' ' If Not sText Then Return ' ' Highlight.Analyze(sText, True) ' ' iPos = 0 ' For iInd = 0 To Highlight.Symbols.Max ' ' If iPos < Highlight.Positions[iInd] Then ' Highlight.Add(Highlight.Normal, Highlight.Positions[iInd] - iPos) ' iPos = Highlight.Positions[iInd] ' Endif ' ' iLen = String.Len(Highlight.Symbols[iInd]) ' Highlight.Add(Highlight.Types[iInd], iLen) ' iPos += iLen ' ' Next ' ' If iPos < String.Len(Highlight.TextAfter) Then ' Highlight.Add(Highlight.Normal, String.Len(Highlight.TextAfter) - iPos) ' Endif ' ' Return Highlight.TextAfter ' ' End Public Sub Run(sText As String) Dim iState As Integer Dim iNextState As Integer Dim iInd As Integer Dim sOrgText As String Dim sCar As String Dim bLimit As Boolean Dim iTag As Integer Dim sProperty As String Dim sWait As String Dim iSaveState As Integer Dim iPos, iPos2 As Integer Dim bEscape As Boolean Dim N As Integer iState = TextHighlighter.State If iState = Highlight.Normal Then iState = Highlight.Keyword iTag = TextHighlighter.Tag sOrgText = sText iNextState = iState For iInd = 1 To String.Len(sText) iNextState = iState sCar = String.Mid$(sText, iInd, 1) If bEscape Then If IsHexa(sCar) And If N < 6 Then Inc N Goto NEXT_STATE Else bEscape = False Goto NEXT_STATE Endif Endif If sCar = "\\" Then bEscape = True N = 0 Goto NEXT_STATE Endif Select Case iState Case Highlight.String If sCar = sWait Then iNextState = iSaveState Goto NEXT_STATE Case Highlight.Comment If sCar = "/" And If iInd > 1 And If String.Mid$(sText, iInd - 1, 1) = "*" Then iNextState = iTag Endif Goto NEXT_STATE Case Highlight.Preprocessor If sCar = "{" Then iState = Highlight.Keyword iNextState = Highlight.Keyword bLimit = True Endif Goto NEXT_STATE Case Else If sCar = "/" And If Mid$(sText, iInd, 2) = "/*" Then iTag = iState iState = Highlight.Comment iNextState = iState Goto NEXT_STATE Else If TextHighlighter_Html.AllowCode And If sCar = "<" And If Mid$(sText, iInd, 2) = "<%" Then TextHighlighter_Html.MeetCodeAt = iInd Break Endif End Select Select Case iState Case Highlight.Keyword, Highlight.Datatype, Highlight.Function, Highlight.Operator If sCar = "." Then iState = Highlight.Datatype iNextState = iState Else If sCar = "#" Then iState = Highlight.Function iNextState = iState Else If InStr("():", sCar) Then iState = Highlight.Operator iNextState = iState Else If IsSpace(sCar) Then iState = Highlight.Keyword iNextState = iState Else If sCar = "{" Then iState = Highlight.Keyword iNextState = Highlight.Symbol iTag = Highlight.Symbol bLimit = True Else If sCar = "@" Then iState = Highlight.Preprocessor iNextState = iState bLimit = True Endif Case Highlight.Symbol If sCar = "." Then iState = Highlight.Datatype iNextState = iState Else If InStr(":()", sCar) Then iState = Highlight.Keyword iNextState = Highlight.Number Else If sCar = "}" Then iState = Highlight.Keyword iNextState = Highlight.Keyword iTag = Highlight.Keyword Else If IsSpace(sCar) Then iState = Highlight.Symbol iNextState = iState Else sProperty = String.Mid$(sText, iInd) iPos = String.InStr(sProperty, ":") iPos2 = String.InStr(sProperty, "/*") If iPos = 0 Then iPos = String.Len(sProperty) If iPos2 = 0 Then iPos2 = String.Len(sProperty) iPos = Min(iPos, iPos2) Dec iPos sProperty = String.Left$(sProperty, iPos) If Not sProperty Then Goto NEXT_STATE If sProperty Then If $cProp.Exist(sProperty) Then TextHighlighter.Add(Highlight.Symbol, iPos) Else If sProperty Begins "-" And If sProperty Like "-*-*" Then TextHighlighter.Add(Highlight.Symbol, iPos) Else TextHighlighter.Add(Highlight.Error, iPos) Endif Else TextHighlighter.Add(Highlight.Symbol, iPos) Endif iInd += iPos - 1 Continue Endif Case Highlight.Number If sCar = Chr$(34) Or If sCar = "'" Then iSaveState = iState sWait = sCar iState = Highlight.String iNextState = iState Else If sCar = ";" Then iState = Highlight.Keyword iNextState = Highlight.Symbol Else If sCar = "}" Then iState = Highlight.Keyword iNextState = Highlight.Keyword iTag = Highlight.Keyword ' Else If sCar = "#" Then ' ' iState = Highlight.Preprocessor ' iNextState = iState Endif Case Highlight.Preprocessor If Not IsHexa(sCar) Then iState = Highlight.Number iNextState = iState Dec iInd Continue Endif End Select NEXT_STATE: TextHighlighter.Add(iState) iState = iNextState Next If iNextState = Highlight.String Then iNextState = iSaveState TextHighlighter.State = iNextState TextHighlighter.Tag = iTag TextHighlighter.Limit = bLimit End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_Diff.class000066400000000000000000000015161411575327000260060ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "diff" Public Sub Run(sText As String) Dim iState As Integer TextHighlighter.Limit = False If Left$(sText, 6) = "Index:" Or Left$(sText, 4) = "diff" Then iState = Highlight.Keyword TextHighlighter.Limit = True Else If Left(sText, 3) = "===" Then iState = Highlight.Keyword Else If Left(sText, 3) = "+++" Then iState = Highlight.Operator Else If Left(sText, 3) = "---" Then iState = Highlight.Operator Else If Left(sText) = "+" Then iState = Highlight.Number Else If Left(sText) = "-" Then iState = Highlight.String Else If Left(sText) = "@" Then iState = Highlight.Comment TextHighlighter.Limit = True Else iState = Highlight.Normal Endif TextHighlighter.Add(iState, String.Len(sText)) End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_Gambas.class000066400000000000000000000034251411575327000263310ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "gambas" Class Highlight Static Private $aKeywords As String[] Static Public Sub _init() Component.Load("gb.eval") End Public Sub GetKeywords() As String[] If Not $aKeywords Then $aKeywords = System.Keywords.Copy() $aKeywords.Insert(System.Subroutines) Endif Return $aKeywords End Private Sub IsProc() As Boolean Dim aSym As String[] Dim I As Integer Dim sSym As String aSym = Highlight.Symbols For I = 0 To aSym.Max sSym = aSym[I] If sSym == "PRIVATE" Or If sSym == "PUBLIC" Or If sSym == "STATIC" Or If sSym == "FAST" Then Continue If sSym == "SUB" Or If sSym == "PROCEDURE" Or If sSym == "FUNCTION" Then Return True Else Return False Endif Next End Public Sub Run(Text As String) Dim iState As Integer Dim iTag As Integer Dim iPos As Integer Dim I As Integer Dim iLen As Integer iState = TextHighlighter.State iTag = TextHighlighter.Tag Highlight.Analyze(Text, TextHighlighter.CanRewrite) TextHighlighter.Limit = IsProc() TextHighlighter.Comment = Left(LTrim(Text)) = "'" iPos = 0 For I = 0 To Highlight.Symbols.Max If iPos < Highlight.Positions[I] Then TextHighlighter.Add(Highlight.Normal, Highlight.Positions[I] - iPos) iPos = Highlight.Positions[I] Endif iLen = String.Len(Highlight.Symbols[I]) TextHighlighter.Add(Highlight.Types[I], iLen) iPos += iLen Next If iPos < String.Len(Highlight.TextAfter) Then TextHighlighter.Add(Highlight.Normal, String.Len(Highlight.TextAfter) - iPos) Endif TextHighlighter.State = iState TextHighlighter.Tag = iTag If TextHighlighter.CanRewrite Then TextHighlighter.TextAfter = Highlight.TextAfter End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_Html.class000066400000000000000000000307331411575327000260450ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "html" Static Public MeetCodeAt As Integer Static Public AllowCode As Boolean Public Const STYLE_HTML As Integer = 1 Public Const STYLE_WEB As Integer = 2 Private Const TAG_HTML As Integer = 0 Private Const TAG_MARKUP As Integer = 1 Private Const TAG_MARKUP_SCRIPT As Integer = 2 Private Const TAG_MARKUP_STYLE As Integer = 3 Private Const TAG_COMMENT As Integer = 4 Private Const TAG_SCRIPT As Integer = 5 Private Const TAG_STYLE As Integer = 6 Private Const TAG_CODE As Integer = 16 Private Const TAG_CODE_COMMENT As Integer = 32 Private Const TAG_NEXT_LIMIT As Integer = 64 Private Enum TAG_VARIABLE, TAG_CODE_MARKUP Static Private $sTextAfter As String Static Private $sBufferAfter As String Static Private $aStateStack As Integer[] ' TODO: call TextHighlighter_Gambas ! Private Sub AnalyzeCode(sText As String) As String Dim iInd As Integer Dim iPos As Integer Dim iLen As Integer Dim iState As Integer Dim iTag As Integer 'Print "AnalyzeCode: "; sText If Not sText Then Return iState = TextHighlighter.State iTag = TextHighlighter.Tag Highlight.Analyze(sText, True) iPos = 0 For iInd = 0 To Highlight.Symbols.Max If iPos < Highlight.Positions[iInd] Then TextHighlighter.Add(Highlight.Normal, Highlight.Positions[iInd] - iPos) iPos = Highlight.Positions[iInd] Endif iLen = String.Len(Highlight.Symbols[iInd]) TextHighlighter.Add(Highlight.Types[iInd], iLen) iPos += iLen Next If iPos < String.Len(Highlight.TextAfter) Then TextHighlighter.Add(Highlight.Normal, String.Len(Highlight.TextAfter) - iPos) Endif TextHighlighter.State = iState TextHighlighter.Tag = iTag Return Highlight.TextAfter End ' Private Sub IsMarkup(sStr As String, iPos As Integer, sMarkup As String) As Boolean ' ' Dim sTest As String = String.Mid$(sStr, iPos, Len(sMarkup)) ' ' If sTest = sMarkup Or If sTest = (Left(sMarkup, -1) & " ") Then Return True ' ' End Private Sub Add(sText As String, iState As Integer) $sBufferAfter &= sText TextHighlighter.Add(iState, String.Len(sText)) If Len($sBufferAfter) > 1024 Then $sTextAfter &= $sBufferAfter $sBufferAfter = "" Endif End Private Sub RunWith(Text As String, iStyle As Integer) Dim iState As Integer Dim iTag, iTagCode, iTagMode As Integer Dim sText As String Dim I, iLenText As Integer Dim sCar As String Dim iPos As Integer Dim iNextState As Integer Dim bLimit, bNextLimit As Boolean Dim sQuote As String Dim sMarkup As String Dim bClose As Boolean Dim iStart As Integer Dim sHighlightText As String 'Print " "; Bin$(TextHighlighter.Tag, 16);; Text AllowCode = iStyle = STYLE_WEB iState = TextHighlighter.State iTag = TextHighlighter.Tag And &HF iTagCode = TextHighlighter.Tag And &H30 bLimit = TextHighlighter.Tag And TAG_NEXT_LIMIT iTagMode = Shr(TextHighlighter.Tag, 8) sText = Text iLenText = String.Len(sText) sHighlightText = sText $sTextAfter = "" $sBufferAfter = "" I = 1 If iTagCode Then On Shr(iTagCode, 4) Goto STATE_HTML, STATE_CODE, STATE_CODE_COMMENT Else iTagMode = 0 iTagCode = 0 TextHighlighter.Alternate = False On iTag Goto STATE_HTML, STATE_MARKUP, STATE_MARKUP, STATE_MARKUP, STATE_COMMENT, STATE_SCRIPT, STATE_STYLE Endif STATE_HTML: iTag = TAG_HTML iTagMode = 0 iTagCode = 0 TextHighlighter.Alternate = False Do GoSub NEXT_CHAR If sCar = "<" Then If String.Mid$(sText, I, 3) = "!--" Then Add("", I) If iPos = 0 Then Add(String.Mid$(sText, I), Highlight.Comment) iNextState = Highlight.Comment Goto END_TEXT Else Add(String.Mid$(sText, I, iPos - I + 3), Highlight.Comment) I = iPos + 3 iTag = TAG_HTML Goto STATE_HTML Endif STATE_MARKUP: bClose = False iState = Highlight.Keyword Do GoSub NEXT_CHAR If sCar = ">" Then Add(">", Highlight.Keyword) Break Else If sCar = "/" And If String.Mid$(sText, I, 1) = ">" Then bClose = True Add("/>", Highlight.Keyword) Inc I Break Else If IsSpace(sCar) Then Add(sCar, Highlight.Normal) iState = Highlight.Keyword Continue Else If sCar = "=" Then Add("=", Highlight.Keyword) iState = Highlight.String Continue Else If sCar = Chr$(34) Or If sCar = "'" Then GoSub READ_STRING Continue Endif Add(sCar, iState) Loop If Not bClose Then If iTag = TAG_MARKUP_SCRIPT Then iTag = TAG_SCRIPT iTagMode = 0 TextHighlighter.State = Highlight.Normal bLimit = True Goto STATE_SCRIPT Else If iTag = TAG_MARKUP_STYLE Then iTag = TAG_STYLE iTagMode = 0 TextHighlighter.State = Highlight.Normal bLimit = True Goto STATE_STYLE Endif Endif Goto STATE_HTML STATE_DOUBLE_MARKUP: Add("<<", Highlight.Preprocessor) Inc I iState = Highlight.Preprocessor Do GoSub NEXT_CHAR If sCar = ">" And If String.Mid$(sText, I, 1) = ">" Then Add(">>", Highlight.Preprocessor) Inc I Break Else If sCar = " " Then Add(" ", iState) iState = Highlight.Preprocessor Continue Else If sCar = "=" Then Add("=", Highlight.Preprocessor) iState = Highlight.String Continue Else If sCar = Chr$(34) Or If sCar = "'" Then GoSub READ_STRING Continue Endif 'If iState = Highlight.Keyword Then sMarkup &= sCar Add(sCar, iState) Loop Goto STATE_HTML READ_SCRIPT: sText = sHighlightText While sText MeetCodeAt = 0 TextHighlighter_Javascript.Run(sHighlightText) If MeetCodeAt = 0 Then $sBufferAfter &= sText Break Endif $sBufferAfter &= String.Left(sText, MeetCodeAt - 1) I = MeetCodeAt + 2 sMarkup = "<%" GoSub READ_CODE sText = String.Mid$(sText, I) sHighlightText = sText Wend Return STATE_SCRIPT: TextHighlighter.Tag = iTagMode iPos = String.InStr(sText, "", I) If iPos = 0 Then sHighlightText = String.Mid$(sText, I) GoSub READ_SCRIPT iNextState = TextHighlighter.State iTagMode = TextHighlighter.Tag Goto END_TEXT Else If iPos > I Then sHighlightText = String.Mid$(sText, I, iPos - I) GoSub READ_SCRIPT Endif Add("", Highlight.Keyword) iTag = TAG_HTML I = iPos + 9 bNextLimit = True Goto STATE_HTML Endif READ_STYLE: sText = sHighlightText While sText MeetCodeAt = 0 TextHighlighter_CSS.Run(sHighlightText) If MeetCodeAt = 0 Then $sBufferAfter &= sText Break Endif $sBufferAfter &= String.Left(sText, MeetCodeAt - 1) sMarkup = "<%" I = MeetCodeAt + 2 GoSub READ_CODE sText = String.Mid$(sText, I) sHighlightText = sText Wend Return STATE_STYLE: TextHighlighter.Tag = iTagMode iPos = String.InStr(sText, "", I) If iPos = 0 Then sHighlightText = String.Mid$(sText, I) GoSub READ_STYLE iNextState = TextHighlighter.State iTagMode = TextHighlighter.Tag Goto END_TEXT Else If iPos > I Then sHighlightText = String.Mid$(sText, I, iPos - I) GoSub READ_STYLE Endif Add("", Highlight.Keyword) iTag = TAG_HTML I = iPos + 8 bNextLimit = True Goto STATE_HTML Endif STATE_CODE: 'Print "**** STATE_CODE" sMarkup = "" GoSub READ_CODE If I > iLenText Then Goto END_TEXT Else Goto STATE_HTML Endif STATE_CODE_COMMENT: GoSub READ_CODE_COMMENT If I > iLenText Then Goto END_TEXT Else Goto STATE_HTML Endif READ_STRING: sQuote = sCar Add(sQuote, Highlight.String) Do GoSub NEXT_CHAR Add(sCar, Highlight.String) If sCar = sQuote Then Break If sCar = "\\" Then GoSub NEXT_CHAR Add(sCar, Highlight.String) Endif Loop Return IGNORE_STRING: sQuote = sCar 'Add(sQuote, Highlight.String) Do GoSub NEXT_CHAR 'Add(sCar, Highlight.String) If sCar = sQuote Then Break If sCar = "\\" Then GoSub NEXT_CHAR 'Add(sCar, Highlight.String) Endif Loop Return READ_CODE: GoSub PUSH_STATE TextHighlighter.Alternate = True If sMarkup Then Add(sMarkup, Highlight.Keyword) TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 0 bClose = False iStart = I Do If I > iLenText Then Break GoSub NEXT_CHAR If sCar = Chr$(34) Then GoSub IGNORE_STRING Else If sCar = "'" Then I = iLenText + 1 Else If sCar = "%" And If String.Mid$(sText, I, 1) = ">" Then bClose = True Break Endif Loop If bClose Then $sBufferAfter &= AnalyzeCode(String.Mid$(sText, iStart, I - iStart - 1)) Add("%>", Highlight.Keyword) GoSub POP_STATE TextHighlighter.Alternate = False iTagCode = 0 Inc I iNextState = TextHighlighter.State Else $sBufferAfter &= AnalyzeCode(String.Mid$(sText, iStart)) GoSub POP_STATE iTagCode = TAG_CODE iTagMode = TextHighlighter.Tag iNextState = TextHighlighter.State Endif Return READ_CODE_COMMENT: iPos = String.InStr(sText, "--%>", I) If iPos = 0 Then Add(String.Mid$(sText, I), Highlight.Help) I = iLenText + 1 iTagCode = TAG_CODE_COMMENT Else Add(String.Mid$(sText, I, iPos - I + 3), Highlight.Help) I = iPos + 3 iTagCode = 0 Endif Return LOOK_CHAR: If I > iLenText Then sCar = "" Else sCar = String.Mid$(sText, I, 1) Endif Return NEXT_CHAR: If I > iLenText Then Goto END_TEXT sCar = String.Mid$(sText, I, 1) Inc I If iStyle = STYLE_WEB And If iTagCode = 0 And If sCar = "<" And If String.Mid$(sText, I, 1) = "%" Then If String.Mid$(sText, I, 3) = "%--" Then Add("<%--", Highlight.Help) I += 3 GoSub READ_CODE_COMMENT Goto NEXT_CHAR Else sCar = String.Mid$(sText, I + 1, 1) If sCar = "=" Then sMarkup = "<%=" I += 2 Else If sCar = "!" Then iPos = String.InStr(sText, "%>", I) If iPos = 0 Then iPos = iLenText + 1 Add("<" & String.Mid$(sText, I, iPos - I + 2), Highlight.DataType) I = iPos + 2 TextHighlighter.Alternate = False Goto NEXT_CHAR Else sMarkup = "<%" Inc I Endif GoSub READ_CODE Goto NEXT_CHAR Endif Endif Return PUSH_STATE: If Not $aStateStack Then $aStateStack = New Integer[] $aStateStack.Push(TextHighlighter.State) $aStateStack.Push(TextHighlighter.Tag) Return POP_STATE: TextHighlighter.Tag = $aStateStack.Pop() TextHighlighter.State = $aStateStack.Pop() Return END_TEXT: TextHighlighter.TextAfter = $sTextAfter & $sBufferAfter If bLimit And If Not Trim(TextHighlighter.TextAfter) Then bLimit = False bNextLimit = True Endif TextHighlighter.State = iNextState TextHighlighter.Tag = iTag + iTagCode + Shl(iTagMode, 8) + If(bNextLimit, TAG_NEXT_LIMIT, 0) TextHighlighter.Limit = bLimit 'Print "--> "; iNextState;; Bin$(TextHighlighter.Tag, 16);; TextHighlighter.TextAfter End Public Sub Run(sText As String) RunWith(sText, STYLE_HTML) End Public Sub RunWebpage(sText As String) RunWith(sText, STYLE_WEB) End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_Javascript.class000066400000000000000000000172461411575327000272530ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "javascript" Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$" Private Const DIGIT_CAR As String = "0123456789.+-eE" Static Private $cKeyword As New Collection Static Private $cOperator As New Collection Static Private $aKeywords As String[] Static Public Sub _init() Dim sStr As String $aKeywords = New String[] For Each sStr In ["break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "enum", "export", "extends", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "return", "super", "switch", "throw", "try", "typeof", "var", "void", "while", "with", "yield"] $cKeyword[sStr] = 0 $aKeywords.Add(sStr) Next For Each sStr In ["false", "null", "this", "true", "undefined", "NaN", "Infinity"] $cKeyword[sStr] = 1 $aKeywords.Add(sStr) Next For Each sStr In ["{", "}", ".", ">=", "+", "<<", "!", "=", ">>=", ";", "==", "-", ">>", "~", "+=", ">>>=", "(", ",", "!=", "*", ">>>", "&&", "-=", "&=", ")", "<", "===", "%", "&", "||", "*=", "|=", "[", ">", "!==", "++", "|", "?", "%=", "^=", "--", "^", ":", "<<=", "]", "<=", "/", "/="] $cOperator[sStr] = True Next End Public Sub GetKeywords() As String[] Return $aKeywords End Public Sub Run(sText As String) Dim iState As Integer Dim iTag As Integer Dim iLenText As Integer Dim iPos As Integer Dim sCar As String Dim bSingleLineComment As Boolean Dim sQuoteChar As String Dim sIdent As String Dim bTestShowLimit As Boolean Dim bLastExpr As Boolean iState = TextHighlighter.State iTag = TextHighlighter.Tag iLenText = String.Len(sText) bLastExpr = True If iState = Highlight.Operator Then bLastExpr = False Else If iState = Highlight.String Then sQuoteChar = "`" Endif For iPos = 1 To iLenText sCar = String.Mid$(sText, iPos, 1) If TextHighlighter_Html.AllowCode And If sCar = "<" And String.Mid$(sText, iPos, 2) = "<%" Then TextHighlighter_Html.MeetCodeAt = iPos TextHighlighter.State = iState TextHighlighter.Tag = iTag Return Endif If iState = Highlight.Normal Then If sCar = "/" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "/" Then iState = Highlight.Comment bSingleLineComment = True Else If sCar = "*" Then sCar = String.Mid$(sText, iPos + 2, 1) If sCar = "*" Then iState = Highlight.Help Else iState = Highlight.Comment Endif bSingleLineComment = False Else If Not bLastExpr And If String.Mid$(sText, iPos + 1, 1) <> " " Then ' Regular expression sIdent = sCar While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If sCar = "\\" Then Inc iPos sIdent &= sCar & String.Mid$(sText, iPos, 1) Continue Endif sIdent &= sCar If sCar = "/" Then Break Endif Wend While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Not IsLetter(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend TextHighlighter.Add(Highlight.DataType, String.Len(sIdent)) iState = Highlight.Normal Continue Else TextHighlighter.Add(Highlight.Operator) Continue Endif Else If InStr("\"'`", sCar) Then iState = Highlight.String sQuoteChar = sCar Else If Asc(sCar) <= 32 Then Else If IsDigit(sCar) Then sIdent = sCar sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Or If sCar = "X" Then sIdent &= sCar Inc iPos While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Not IsHexa(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend Else While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If InStr(DIGIT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend Endif TextHighlighter.Add(Highlight.Number, String.Len(sIdent)) iState = Highlight.Normal bLastExpr = True Continue Else If Len(sCar) >= 2 Or If InStr(IDENT_CAR, sCar) Then sIdent = sCar While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Len(sCar) = 1 And If Not IsDigit(sCar) And If InStr(IDENT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend If $cKeyword.Exist(sIdent) Then iState = Highlight.Keyword If sIdent = "function" Then bTestShowLimit = True bLastExpr = $cKeyword[sIdent] = 1 Else iState = Highlight.Symbol bLastExpr = True Endif TextHighlighter.Add(iState, String.Len(sIdent)) iState = Highlight.Normal Continue Else sIdent = sCar While iPos < iLenText If $cOperator.Exist(sIdent) Then Break Inc iPos sCar = String.Mid$(sText, iPos, 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If IsBlank(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend bLastExpr = False If $cOperator.Exist(sIdent) Then iState = Highlight.Operator If sIdent = ")" Or If sIdent = "]" Then bLastExpr = True Else iState = Highlight.Error Endif TextHighlighter.Add(iState, String.Len(sIdent)) iState = Highlight.Normal 'Dec iPos Continue Endif Else If iState = Highlight.Comment Or If iState = Highlight.Help Then If Not bSingleLineComment Then sCar = String.Mid$(sText, iPos, 2) If sCar = "*/" Then TextHighlighter.Add(iState, 2) Inc iPos iState = Highlight.Normal Continue Endif Endif Else If iState = Highlight.String Then If sCar = "\\" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Then TextHighlighter.Add(iState, 3) iPos += 2 Continue Else If sCar = "u" Then TextHighlighter.Add(iState, 5) iPos += 4 Continue Else TextHighlighter.Add(iState, 2) Inc iPos Continue Endif Else If sCar = sQuoteChar Then TextHighlighter.Add(iState) iState = Highlight.Normal bLastExpr = True Continue Endif Endif TextHighlighter.Add(iState) Next If iState = Highlight.Comment And If bSingleLineComment Then iState = Highlight.Normal Endif If iState <> Highlight.Comment And If iState <> Highlight.Help Then If iState <> Highlight.String Or If sQuoteChar <> "`" Then iState = Highlight.Normal Endif Endif TextHighlighter.Limit = False If bTestShowLimit Then If LTrim(sText) Begins "function" Or If Trim(sText) Like "*: function(*" Then TextHighlighter.Limit = True Endif Endif TextHighlighter.State = iState TextHighlighter.Tag = iTag End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_SQL.class000066400000000000000000000106151411575327000255750ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "sql" Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789" Static Private $cDatatype As Collection Static Private $cFunction As Collection Static Private $cKeyword As Collection Static Private $cOperator As Collection Static Private $aKeywords As String[] Static Private Sub LoadFile(sPath As String, Optional bKeyword As Boolean) As Collection Dim sWord As String Dim cCol As New Collection(gb.IgnoreCase) For Each sWord In Split(File.Load(sPath), "\n", "", True) cCol[sWord] = True If bKeyword Then $aKeywords.Add(sWord) Next Return cCol End Static Public Sub _init() $aKeywords = New String[] $cDatatype = LoadFile("sql/datatypes") $cFunction = LoadFile("sql/functions") $cKeyword = LoadFile("sql/keywords", True) $cOperator = LoadFile("sql/operators") End Private Sub CheckWord(sWord As String) As Integer If $cKeyword.Exist(sWord) Then Return Highlight.Keyword If $cOperator.Exist(sWord) Then Return Highlight.Operator If $cFunction.Exist(sWord) Then Return Highlight.Function If $cDatatype.Exist(sWord) Then Return Highlight.DataType Return Highlight.Normal End Public Sub Run(sText As String) Dim iState As Integer Dim iTag As Integer Dim iLenText As Integer Dim iPos As Integer Dim sCar As String Dim sWait As String Dim iLen As Integer iState = TextHighlighter.State iTag = TextHighlighter.Tag iLenText = String.Len(sText) For iPos = 1 To iLenText sCar = String.Mid$(sText, iPos, 1) Select Case iState Case Highlight.Normal If Len(sCar) > 1 Then TextHighlighter.Add(Highlight.Error) Else If Asc(sCar) < 33 Then TextHighlighter.Add(iState) Else If sCar = "#" Or If String.Mid$(sText, iPos, 2) = "--" Then TextHighlighter.Add(Highlight.Comment, iLenText - iPos + 1) Break Else If String.Mid$(sText, iPos, 2) = "/*" Then iState = Highlight.Comment TextHighlighter.Add(iState) Else If sCar = "'" Or If sCar = "\"" Then iState = Highlight.String iTag = Asc(sCar) TextHighlighter.Add(iState) Else If sCar = "`" Then iState = Highlight.Symbol TextHighlighter.Add(iState) sWait = sCar Else iLen = Helper.ReadNumber(sText, iPos) If iLen > 0 Then TextHighlighter.Add(Highlight.Number, iLen) iPos += iLen - 1 Continue Endif iLen = Helper.ReadIdentifier(sText, iPos, IDENT_CAR) If InStr(IDENT_CAR, String.Mid$(sText, iPos, 1)) Then iState = CheckWord(String.Mid$(sText, iPos, iLen)) Else While iLen > 0 iState = CheckWord(String.Mid$(sText, iPos, iLen)) If iState <> Highlight.Normal Then Break Dec iLen Wend Endif If iLen > 0 Then If iState <> Highlight.Normal Then TextHighlighter.Add(iState, iLen) iPos += iLen - 1 iState = Highlight.Normal Continue Else TextHighlighter.Add(Highlight.Symbol, iLen) iPos += iLen - 1 iState = Highlight.Normal Continue Endif Endif TextHighlighter.Add(Highlight.Error) Endif Case Highlight.Symbol TextHighlighter.Add(iState) If sCar = sWait Then iState = Highlight.Normal Endif Case Highlight.Comment TextHighlighter.Add(iState) If String.Mid$(sText, iPos, 2) = "*/" Then TextHighlighter.Add(iState) Inc iPos iState = Highlight.Normal Endif Case Highlight.String TextHighlighter.Add(iState) If sCar = "\\" Then TextHighlighter.Add(iState) Inc iPos Else If sCar = Chr$(iTag) Then iState = Highlight.Normal Endif End Select Next 'If bTestShowLimit Then ' Highlight.ShowLimit = LTrim(sText) Begins "function " 'Endif TextHighlighter.State = iState TextHighlighter.Tag = iTag End Public Sub GetKeywords() As String[] Return $aKeywords End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_Sh.class000066400000000000000000000213251411575327000255100ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "sh" Private Const IDENT_CAR As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_" Private Const DIGIT_CAR As String = "0123456789" Static Private $cKeyword As New Collection Static Private $cOperator As New Collection Static Private $cType As New Collection Static Private $aKeywords As String[] Static Public Sub _init() Dim sStr As String $aKeywords = New String[] For Each sStr In ["function", "do", "else", "test", "for", "to", "in", "fi", "if", "elif", "then", "return", "exit", "while", "until", "done", "break", "continue", "select", "case", "esac"] $cKeyword[sStr] = 0 $aKeywords.Add(sStr) Next For Each sStr In ["false", "null" "true"] $cKeyword[sStr] = 1 $aKeywords.Add(sStr) Next For Each sStr In ["{", "}", "$", "#", "[", "]", "-gt", "-lt", "-ge", "-ne", "-le", "-eq", "<<<", ".", "+", "<<", "=", ">>", "==", "-", ">>", "~", "+=", "(", ",", "!=", "*", "-=", "&=", ";;", ")", "<", "%", "&", "];", "@", "!", ";", ">", "|", "?", "^", ":", "<=", "/", "`"] $cOperator[sStr] = True Next ' As there is no datatype defining in sh we can use Type for popular commands. For Each sStr In ["echo", "read", "cd", "which", "rm", "cp", "mv", "rmdir", "cat", "grep", "awk", "tr", "sed", "sleep", "clear", "sudo", "su", "source", "eval", "export", "time", "date", "pwd", "set", "unset", "chown", "chmod", "exec", "alias", "unalias", "bg", "bind", "builtin", "caller", "command", "compgen", "complete", "compopt", "declare", "dirs", "disown", "enable", "fc", "fg", "getopts", "hash", "help", "history", "jobs", "kill", "let", "local", "logout", "mapfile", "popd", "printf", "pushd", "readarray", "readonly", "shift", "shopt", "suspend", "test", "times", "trap", "type", "typeset", "ulimit", "umask" "wait"] $cType[sStr] = True $aKeywords.Add(sStr) Next End Public Sub GetKeywords() As String[] Return $aKeywords End Public Sub RunWith(sText As String, cKeyword As Collection, cOperator As Collection, cType As Collection) Dim iState As Integer Dim iTag As Integer Dim iLenText As Integer Dim iPos, iSavePos As Integer Dim sCar As String Dim bSingleQuoteString As Boolean Dim sIdent As String Dim iPosType, iPosIdent, iPosAfterIdent As Integer Dim bLastExpr As Boolean iState = TextHighlighter.State iTag = TextHighlighter.Tag iLenText = String.Len(sText) bLastExpr = True If iState = Highlight.Operator Then bLastExpr = False If Left(LTrim(sText)) = "#" Or If iState = Highlight.Comment Then TextHighlighter.Add(Highlight.Comment, iLenText) Else For iPos = 1 To iLenText If iState = Highlight.Normal And If iTag <> Highlight.String Then sCar = String.Mid$(sText, iPos, 1) If sCar = "\"" Then iState = Highlight.String iTag = False bSingleQuoteString = False Else If sCar = "'" Then iState = Highlight.String bSingleQuoteString = True iTag = True Else If Asc(sCar) <= 32 Then Else If InStr(Trim(sText), "function") = 1 Then TextHighlighter.Add(Highlight.Keyword, 9) TextHighlighter.Add(Highlight.Function, RInStr(sText, "(") - 10) Break Else If sCar = "#" Then sCar = String.Mid$(sText, iPos - 1, 1) If sCar <> "{" Then TextHighlighter.Add(Highlight.Comment, iLenText) Break Else TextHighlighter.Add(Highlight.Operator, 1) Continue Endif Else If IsDigit(sCar) Then sIdent = sCar sCar = String.Mid$(sText, iPos + 1, 1) If sCar = "x" Or If sCar = "X" Then sIdent &= sCar Inc iPos While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Not IsHexa(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend Else While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If InStr(DIGIT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend Endif TextHighlighter.Add(Highlight.Number, String.Len(sIdent)) iState = Highlight.Normal bLastExpr = True Continue Else If Len(sCar) >= 2 Or If InStr(IDENT_CAR, sCar) Then sIdent = sCar iSavePos = iPos While iPos < iLenText Inc iPos sCar = String.Mid$(sText, iPos, 1) If Len(sCar) = 1 And If Not IsDigit(sCar) And If InStr(IDENT_CAR, sCar) = 0 Then Dec iPos Break Endif sIdent &= sCar Wend If cKeyword.Exist(sIdent) Then iState = Highlight.Keyword If cKeyword[sIdent] = 1 Then bLastExpr = True Else If InStr(RTrim(sText), "()", String.Len(sText) - 2) Then If Not InStr(RTrim(sText), "=", String.Len(sText) - 3) Then iState = Highlight.Function bLastExpr = True Else iState = Highlight.Symbol bLastExpr = True Endif Else If InStr(RTrim(sText), "() {", String.Len(sText) - 4) Then iState = Highlight.Function bLastExpr = True Else If cType.Exist(sIdent) Then iState = Highlight.Datatype bLastExpr = True If iPosType = 0 Then iPosType = iSavePos Else iState = Highlight.Symbol If iPosAfterIdent = 0 Then iPosIdent = iSavePos iPosAfterIdent = iSavePos + String.Len(sIdent) Endif bLastExpr = True Endif TextHighlighter.Add(iState, String.Len(sIdent)) iState = Highlight.Normal Continue Else sIdent = sCar While iPos < iLenText If cOperator.Exist(sIdent) Then If sIdent = "-" Then sCar = String.Mid$(sText, iPos + 1, 2) Select sCar Case "eq", "ne", "gt", "lt", "ge", "le", "o " TextHighlighter.Add(Highlight.Operator, String.Len(sCar) + 1) iPos += String.Len(sCar) + 1 Break End Select Endif Break Endif Inc iPos sCar = String.Mid$(sText, iPos, 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If IsBlank(sCar) Then Dec iPos Break Endif sIdent &= sCar Wend If cOperator.Exist(sIdent) Then iState = Highlight.Operator Else iState = Highlight.Error Endif TextHighlighter.Add(iState, String.Len(sIdent)) iState = Highlight.Normal bLastExpr = False 'Dec iPos Continue Endif Else If iState = Highlight.String Then sCar = String.Mid$(sText, iPos, 1) If sCar = "\\" Then sCar = String.Mid$(sText, iPos + 1, 1) If sCar <> "'" And If sCar <> "\"" Then TextHighlighter.Add(Highlight.Escape, 2) Inc iPos Else TextHighlighter.Add(Highlight.Escape, 1) If sCar = "\"" Then Inc ipos Endif 'Inc iPos Continue Else If sCar = "\"" And If Not iTag Then TextHighlighter.Add(iState) iState = Highlight.Normal iTag = iState bLastExpr = True Continue Else If sCar = "'" And If iTag Then TextHighlighter.Add(iState) iState = Highlight.Normal iTag = iState bLastExpr = True Continue Endif Endif TextHighlighter.Add(iState) Next If iState <> Highlight.Comment And If iState <> Highlight.Help And If iState <> Highlight.String Then iState = Highlight.Normal Endif Endif TextHighlighter.Limit = False ' If iPosIdent >= 1 And If Not IsSpace(Left(sText)) Then ' If InStr(String.Mid$(sText, iPosAfterIdent), "(") Then ' If RInStr(sText, "\\") = 0 Then ' TextHighlighter.Limit = True ' Endif ' Endif ' Endif TextHighlighter.State = iState TextHighlighter.Tag = iTag End Public Sub Run(Text As String) RunWith(Text, $cKeyword, $cOperator, $cType) End gambas-3.16.3/comp/src/gb.eval.highlight/.src/TextHighlighter_WebPage.class000066400000000000000000000002531411575327000264450ustar00rootroot00000000000000' Gambas class file Inherits TextHighlighter Public Const Name As String = "webpage" Public Sub Run(sText As String) TextHighlighter_Html.RunWebpage(sText) End gambas-3.16.3/comp/src/gb.eval.highlight/css/000077500000000000000000000000001411575327000206445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.eval.highlight/css/properties000066400000000000000000000347051411575327000227740ustar00rootroot00000000000000@font-face font-family,src,font-stretch,font-style,font-weight,unicode-range,inherit,initial,unset @font-feature-values inherit,initial,unset @keyframes #animationname,#keyframes-selector,#css-styles,inherit,initial,unset align-content stretch,center,flex-start,flex-end,space-between,space-around,initial,inherit,unset align-items stretch,center,flex-start,flex-end,baseline,initial,inherit,unset align-self auto,stretch,center,flex-start,flex-end,baseline,initial,inherit,unset animation @animation-name,@animation-duration,@ animation-timing-function,@animation-delay,@ animation-iteration-count,@animation-direction,@animation-fill-mode,@animation-play-state,initial,inherit,unset animation-delay #time,initial,inherit,unset animation-direction normal,reverse,alternate,alternate-reverse,initial,inherit,unset animation-duration #time,initial,inherit,unset animation-fill-mode none,forwards,backwards,both,initial,inherit,unset animation-iteration-count #number,infinite,initial,inherit,unset animation-name #keyframename,none,initial,inherit,unset animation-play-state paused,running,initial,inherit,unset animation-timing-function linear,ease,ease-in,ease-out,ease-in-out,step-start,step-end,steps,cubic-bezier,initial,inherit,unset backface-visibility visible,hidden,initial,inherit,unset background @background-color,@background-image,@background-position,@background-size,@background-repeat,@background-origin,@background-clip,@background-attachment,initial,inherit,unset background-attachment scroll,fixed,local,initial,inherit,unset background-blend-mode normal,multiply,screen,overlay,darken,lighten,color-dodge,saturation,color,luminosity,inherit,initial,unset background-clip border-box,padding-box,content-box,initial,inherit,unset background-color #color,transparent,initial,inherit,unset background-image url,none,initial,inherit,unset background-origin padding-box,border-box,content-box,initial,inherit,unset background-position lefttop,leftcenter,leftbottom,righttop,rightcenter,rightbottom,centertop,centercenter,centerbottom,#x%y%,#xposypos,initial,inherit,unset background-repeat repeat,repeat-x,repeat-y,no-repeat,initial,inherit,unset background-size auto,#length,#percentage,cover,contain,initial,inherit,unset border @border-width,@border-style,@border-color,initial,inherit,unset border-bottom @border-bottom-width,@border-bottom-style,@border-bottom-color,initial,inherit,unset border-bottom-color #color,transparent,initial,inherit,unset border-bottom-left-radius #length,#%,initial,inherit,unset border-bottom-right-radius #length,#%,initial,inherit,unset border-bottom-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset border-bottom-width medium,thin,thick,#length,initial,inherit,unset border-collapse separate,collapse,initial,inherit,unset border-color #color,transparent,initial,inherit,unset border-image @border-image-source,@border-image-slice,@border-image-width,@border-image-outset,@border-image-repeat,initial,inherit,unset border-image-outset #length,#number,initial,inherit,unset border-image-repeat stretch,repeat,round,space,initial,inherit,unset border-image-slice #number,#%,fill,initial,inherit,unset border-image-source none,#image,initial,inherit,unset border-image-width #length,#number,#%,auto,initial,inherit,unset border-left @border-left-width,@border-left-style,@border-left-color,initial,inherit,unset border-left-color #color,transparent,initial,inherit,unset border-left-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset border-left-width medium,thin,thick,#length,initial,inherit,unset border-radius #length,#%,initial,inherit,unset border-right @border-right-width,@border-right-style,@border-right-color,initial,inherit,unset border-right-color #color,transparent,initial,inherit,unset border-right-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset border-right-width medium,thin,thick,#length,initial,inherit,unset border-spacing #lengthlength,initial,inherit,unset border-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset border-top @border-top-width,@border-top-style,@border-top-color,initial,inherit,unset border-top-color #color,transparent,initial,inherit,unset border-top-left-radius #length,#%,initial,inherit,unset border-top-right-radius #length,#%,initial,inherit,unset border-top-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset border-top-width medium,thin,thick,#length,initial,inherit,unset border-width medium,thin,thick,#length,initial,inherit,unset bottom auto,#length,#%,initial,inherit,unset box-decoration-break inherit,initial,unset box-shadow none,#h-shadow,#v-shadow,#blur,#spread,#color,inset,initial,inherit,unset box-sizing content-box,border-box,initial,inherit,unset break-after inherit,initial,unset break-before inherit,initial,unset break-inside inherit,initial,unset caption-side top,bottom,initial,inherit,unset clear none,left,right,both,initial,inherit,unset clip auto,#shape,initial,inherit,unset color #color,initial,inherit,unset column-count #number,auto,initial,inherit,unset column-fill balance,auto,initial,inherit,unset column-gap #length,normal,initial,inherit,unset column-rule @column-rule-width,@column-rule-style,@column-rule-color,initial,inherit,unset column-rule-color #color,initial,inherit,unset column-rule-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset column-rule-width medium,thin,thick,#length,initial,inherit,unset column-span none,all,initial,inherit,unset column-width auto,#length,initial,inherit,unset columns auto,@column-width,@column-count,initial,inherit,unset content normal,none,counter,attr,#string,open-quote,close-quote,no-open-quote,no-close-quote,url,initial,inherit,unset counter-increment none,#idnumber,initial,inherit,unset counter-reset none,#name,#number,initial,inherit,unset cursor alias,all-scroll,auto,cell,context-menu,col-resize,copy,crosshair,default,e-resize,ew-resize,grab,grabbing,help,move,n-resize,ne-resize,nesw-resize,ns-resize,nw-resize,nwse-resize,no-drop,none,not-allowed,pointer,progress,row-resize,s-resize,se-resize,sw-resize,text,#URL,vertical-text,w-resize,wait,zoom-in,zoom-out,initial,inherit,unset direction ltr,rtl,initial,inherit,unset display inline,block,flex,inline-block,inline-flex,inline-table,list-item,run-in,table,table-caption,table-column-group,table-header-group,table-footer-group,table-row-group,table-cell,table-column,table-row,none,initial,inherit,unset empty-cells show,hide,initial,inherit,unset filter none,blur,brightness,contrast,drop-shadow,grayscale,hue-rotate,invert,opacity,saturate,sepia,url,initial,inherit,unset flex @flex-grow,@flex-shrink,@flex-basis,auto,initial,none,inherit,unset flex-basis #number,auto,initial,inherit,unset flex-direction row,row-reverse,column,column-reverse,initial,inherit,unset flex-flow #flex-direction,#flex-wrap,initial,inherit,unset flex-grow #number,initial,inherit,unset flex-shrink #number,initial,inherit,unset flex-wrap nowrap,wrap,wrap-reverse,initial,inherit,unset float none,left,right,initial,inherit,unset font #font-style,#font-variant,#font-weight,#font-size/line-height,#font-family,caption,icon,menu,message-box,small-caption,status-bar,initial,inherit,unset font-family #family-name,generic-family,initial,inherit,unset font-feature-settings inherit,initial,unset font-kerning inherit,initial,unset font-language-override inherit,initial,unset font-size medium,xx-small,x-small,small,large,x-large,xx-large,smaller,larger,#length,#%,initial,inherit,unset font-size-adjust #number,none,initial,inherit,unset font-stretch ultra-condensed,extra-condensed,condensed,semi-condensed,normal,semi-expanded,expanded,extra-expanded,ultra-expanded,initial,inherit,unset font-style normal,italic,oblique,initial,inherit,unset font-synthesis inherit,initial,unset font-variant normal,small-caps,initial,inherit,unset font-variant-alternates inherit,initial,unset font-variant-caps inherit,initial,unset font-variant-east-asian inherit,initial,unset font-variant-ligatures inherit,initial,unset font-variant-numeric inherit,initial,unset font-variant-position inherit,initial,unset font-weight normal,bold,bolder,lighter,initial,inherit,unset hanging-punctuation none,first,last,allow-end,force-end,initial,inherit,unset height auto,#length,#%,initial,inherit,unset hyphens inherit,initial,unset image-orientation inherit,initial,unset image-rendering inherit,initial,unset image-resolution inherit,initial,unset ime-mode inherit,initial,unset justify-content flex-start,flex-end,center,space-between,space-around,initial,inherit,unset left auto,#length,#%,initial,inherit,unset letter-spacing normal,#length,initial,inherit,unset line-break inherit,initial,unset line-height normal,#number,#length,#%,initial,inherit,unset list-style #list-style-type,#list-style-position,#list-style-image,initial,inherit,unset list-style-image none,url,initial,inherit,unset list-style-position inside,outside,initial,inherit,unset list-style-type disc,armenian,circle,cjk-ideographic,decimal,decimal-leading-zero,georgian,hebrew,hiragana,hiragana-iroha,katakana,katakana-iroha,lower-alpha,lower-greek,lower-latin,lower-roman,none,square,upper-alpha,upper-greek,upper-latin,upper-roman,initial,inherit,unset margin #length,#%,auto,initial,inherit,unset margin-bottom #length,#%,auto,initial,inherit,unset margin-left #length,#%,auto,initial,inherit,unset margin-right #length,#%,auto,initial,inherit,unset margin-top #length,#%,auto,initial,inherit,unset mark inherit,initial,unset mark-after inherit,initial,unset mark-before inherit,initial,unset marks inherit,initial,unset marquee-direction inherit,initial,unset marquee-play-count inherit,initial,unset marquee-speed inherit,initial,unset marquee-style inherit,initial,unset mask inherit,initial,unset mask-type inherit,initial,unset max-height none,#length,#%,initial,inherit,unset max-width none,#length,#%,initial,inherit,unset min-height #length,#%,initial,inherit,unset min-width #length,#%,initial,inherit,unset nav-down auto,#id,#target-name,initial,inherit,unset nav-index auto,#number,initial,inherit,unset nav-left auto,#id,#target-name,initial,inherit,unset nav-right auto,#id,#target-name,initial,inherit,unset nav-up auto,#id,#target-name,initial,inherit,unset object-fit inherit,initial,unset object-position inherit,initial,unset opacity #number,initial,inherit,unset order #number,initial,inherit,unset orphans inherit,initial,unset outline @outline-color,@outline-style,@outline-width,initial,inherit,unset outline-color invert,#color,initial,inherit,unset outline-offset #length,initial,inherit,unset outline-style none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset,initial,inherit,unset outline-width medium,thin,thick,#length,initial,inherit,unset overflow visible,hidden,scroll,auto,initial,inherit,unset overflow-wrap inherit,initial,unset overflow-x visible,hidden,scroll,auto,initial,inherit,unset overflow-y visible,hidden,scroll,auto,initial,inherit,unset padding #length,#%,initial,inherit,unset padding-bottom #length,#%,initial,inherit,unset padding-left #length,#%,initial,inherit,unset padding-right #length,#%,initial,inherit,unset padding-top #length,#%,initial,inherit,unset page-break-after auto,always,avoid,left,right,initial,inherit,unset page-break-before auto,always,avoid,left,right,initial,inherit,unset page-break-inside auto,avoid,initial,inherit,unset perspective #length,none,initial,inherit,unset perspective-origin #x-axis,#y-axis,initial,inherit,unset phonemes inherit,initial,unset pointer-events auto,none,inherit,initial,unset position static,absolute,fixed,relative,sticky,initial,inherit,unset quotes none,#stringstringstringstring,initial,inherit,unset resize none,both,horizontal,vertical,initial,inherit,unset rest inherit,initial,unset rest-after inherit,initial,unset rest-before inherit,initial,unset right auto,#length,#%,initial,inherit,unset tab-size #number,#length,initial,inherit,unset table-layout auto,fixed,initial,inherit,unset text-align left,right,center,justify,initial,inherit,unset text-align-last auto,left,right,center,justify,start,end,initial,inherit,unset text-combine-upright inherit,initial,unset text-combine-upright inherit,initial,unset text-decoration none,underline,overline,line-through,initial,inherit,unset text-decoration-color #color,initial,inherit,unset text-decoration-line none,underline,overline,line-through,initial,inherit,unset text-decoration-style solid,double,dotted,dashed,wavy,initial,inherit,unset text-indent #length,#%,initial,inherit,unset text-justify auto,inter-word,inter-ideograph,inter-cluster,distribute,kashida,trim,none,initial,inherit,unset text-orientation inherit,initial,unset text-overflow clip,ellipsis,#string,initial,inherit,unset text-shadow #h-shadow,#v-shadow,#blur-radius,#color,none,initial,inherit,unset text-transform none,capitalize,uppercase,lowercase,initial,inherit,unset text-underline-position inherit,initial,unset top auto,#length,#%,initial,inherit,unset transform none,matrix,matrix3d,,translate,translate3d,translateX,translateY,translateZ,scale,scale3d,scaleX,scaleY,scaleZ,rotate,rotate3d,rotateX,rotateY,rotateZ,skew,skewX,skewY,perspective,initial,inherit,unset transform-origin #x-axis,#y-axis,#z-axis,initial,inherit,unset transform-style flat,preserve-3d,initial,inherit,unset transition @transition-property,@transition-duration,@transition-timing-function,@transition-delay,initial,inherit,unset transition-delay #time,initial,inherit,unset transition-duration #time,initial,inherit,unset transition-property none,all,#property,initial,inherit,unset transition-timing-function ease,linear,ease-in,ease-out,ease-in-out,step-start,step-end,steps,cubic-bezier,initial,inherit,unset unicode-bidi normal,embed,bidi-override,initial,inherit,unset user-select auto,none,text,all,inherit,initial,unset vertical-align baseline,#length,%,sub,super,top,text-top,middle,bottom,text-bottom,initial,inherit,unset visibility visible,hidden,collapse,initial,inherit,unset voice-balance inherit,initial,unset voice-duration inherit,initial,unset voice-pitch inherit,initial,unset voice-pitch-range inherit,initial,unset voice-rate inherit,initial,unset voice-stress inherit,initial,unset voice-volume inherit,initial,unset white-space normal,nowrap,pre,pre-line,pre-wrap,initial,inherit,unset widows inherit,initial,unset width auto,#length,#%,initial,inherit,unset word-break normal,break-all,keep-all,initial,inherit,unset word-spacing normal,#length,initial,inherit,unset word-wrap normal,break-word,initial,inherit,unset writing-mode inherit,initial,unset z-index auto,#number,initial,inherit,unsetgambas-3.16.3/comp/src/gb.eval.highlight/css/values000066400000000000000000000051011411575327000220630ustar00rootroot00000000000000absolute alias all all-scroll allow-end alternate alternate-reverse always armenian attr auto avoid backwards balance baseline bidi-override block blur bold bolder border-box both bottom break-all break-word brightness capitalize caption cell center centerbottom centercenter centertop circle cjk-ideographic clip close-quote col-resize collapse color color-dodge column column-reverse condensed contain content-box context-menu contrast copy counter cover crosshair cubic-bezier darken dashed decimal decimal-leading-zero default disc distribute dotted double drop-shadow e-resize ease ease-in ease-in-out ease-out ellipsis embed end ew-resize expanded extra-condensed extra-expanded fill first fixed flat flex flex-end flex-start font-family font-stretch font-style font-weight force-end forwards generic-family georgian grab grabbing grayscale groove hebrew help hidden hide hiragana hiragana-iroha horizontal hue-rotate icon infinite inherit initial inline inline-block inline-flex inline-table inset inside inter-cluster inter-ideograph inter-word invert italic justify kashida katakana katakana-iroha keep-all large larger last left leftbottom leftcenter lefttop lighten lighter line-through linear list-item local lower-alpha lower-greek lower-latin lower-roman lowercase ltr luminosity matrix matrix3d medium menu message-box middle move multiply n-resize ne-resize nesw-resize no-close-quote no-drop no-open-quote no-repeat none normal not-allowed nowrap ns-resize nw-resize nwse-resize oblique opacity open-quote outset outside overlay overline padding-box paused perspective pointer pre pre-line pre-wrap preserve-3d progress relative repeat repeat-x repeat-y reverse ridge right rightbottom rightcenter righttop rotate rotate3d rotateX rotateY rotateZ round row row-resize row-reverse rtl run-in running s-resize saturate saturation scale scale3d scaleX scaleY scaleZ screen scroll se-resize semi-condensed semi-expanded separate sepia show skew skewX skewY small small-caps small-caption smaller solid space space-around space-between square src start static status-bar step-end step-start steps sticky stretch sub super sw-resize table table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group text text-bottom text-top thick thin top translate translate3d translateX translateY translateZ transparent trim ultra-condensed ultra-expanded underline unicode-range unset upper-alpha upper-greek upper-latin upper-roman uppercase url vertical vertical-text visible w-resize wait wavy wrap wrap-reverse x-large x-small xx-large xx-small zoom-in zoom-outgambas-3.16.3/comp/src/gb.eval.highlight/sql/000077500000000000000000000000001411575327000206535ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.eval.highlight/sql/datatypes000066400000000000000000000007441411575327000226010ustar00rootroot00000000000000:: BIGINT BIGSERIAL BINARY BIT BLOB BOOL BOOLEAN BOX BYTEA CHAR CHARACTER CIDR CIRCLE DATE DATETIME DEC DECIMAL DOUBLE DOUBLE ENUM FIXED FLOAT FLOAT8 INET INT INT2 INT4 INT8 INTEGER INTERVAL LINE LONG LONGBLOB LONGTEXT LSEG LZTEXT MACADDR MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MONEY NUMERIC OID PATH POINT POLYGON PRECISION REAL SERIAL SERIAL8 SMALLINT TEXT TIME TIMESTAMP TIMESTAMPTZ TIMESTAMP WITH TIMEZONE TIMETZ TINYBLOB TINYINT TINYTEXT VARBINARY VARBIT VARCHAR VARYING YEAR gambas-3.16.3/comp/src/gb.eval.highlight/sql/functions000066400000000000000000000032041411575327000226050ustar00rootroot00000000000000ABBREV ABS ACOS ADDDATE AES_DECRYPT AES_ENCRYPT AGE AREA ASCII ASIN ATAN ATAN2 AVG BENCHMARK BIN BIT_AND BIT_COUNT BIT_LENGTH BIT_OR BOX BROADCAST BTRIM CAST CBRT CEIL CEILING CENTER CHAR CHARACTER_LENGTH CHAR_LENGTH CHR CIRCLE COALESCE COL_DESCRIPTION CONCAT CONCAT_WS CONNECTION_ID CONV CONVERT COS COT COUNT CURDATE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRVAL CURTIME DATABASE DATE_ADD DATE_FORMAT DATE_PART DATE_SUB DATE_TRUNC DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR DECODE DEGREES DES_DECRYPT DES_ENCRYPT DIAMETER ELT ENCODE ENCRYPT EXP EXPORT_SET EXTRACT FIELD FIND_IN_SET FLOOR FORMAT FOUND_ROWS FROM_DAYS FROM_UNIXTIME GET_LOCK GREATEST HAS_TABLE_PRIVILEGE HEIGHT HEX HOST HOUR INET_ATON INET_NTOA INITCAP INSERT INSTR ISCLOSED ISFINITE IS_FREE_LOCK ISOPEN LAST_INSERT_ID LCASE LEAST LEFT LENGTH LN LOAD_FILE LOCATE LOG LOG10 LOG2 LOWER LPAD LSEG LTRIM MAKE_SET MASKLEN MASTER_POS_WAIT MAX MD5 MID MIN MINUTE MOD MONTH MONTHNAME NETMASK NETWORK NEXTVAL NOW NPOINT NULLIF OBJ_DESCRIPTION OCT OCTET_LENGTH ORD PASSWORD PATH PCLOSE PERIOD_ADD PERIOD_DIFF PG_CLIENT_ENCODING PG_GET_INDEXDEF PG_GET_RULEDEF PG_GET_USERBYID PG_GET_VIEWDEF PI POINT POLYGON POPEN POSITION POW POWER QUARTER QUOTE RADIANS RADIUS RAND RANDOM RELEASE_LOCK REPEAT REPLACE REVERSE RIGHT ROUND RPAD RTRIM SECOND SEC_TO_TIME SESSION_USER SET_MASKLEN SETVAL SHA SHA1 SIGN SIN SOUNDEX SPACE SQRT STD STDDEV STRPOS SUBDATE SUBSTR SUBSTRING SUBSTRING_INDEX SUM SYSDATE SYSTEM_USER TAN TIME_FORMAT TIMEOFDAY TIMESTAMP TIME_TO_SEC TO_ASCII TO_CHAR TO_DATE TO_DAYS TO_NUMBER TO_TIMESTAMP TRANSLATE TRIM TRUNC UCASE UNIX_TIMESTAMP UPPER USER VARIANCE VERSION WEEK WEEKDAY WIDTH YEAR YEARWEEK gambas-3.16.3/comp/src/gb.eval.highlight/sql/keywords000066400000000000000000000112021411575327000224410ustar00rootroot00000000000000ABORT ACCESS ACTION ADD ADMIN AFTER AGGREGATE ALIAS ALL ALLOCATE ALTER ANALYSE ANALYZE AND ANY ARE AS ASC ASENSITIVE ASSERTION ASSIGNMENT ASYMMETRIC AT ATOMIC AUTHORIZATION AUTO_INCREMENT BACKWARD BDB BEFORE BEGIN BERKELEYDB BETWEEN BINARY BOTH BREADTH BY CACHE CALL CALLED CARDINALITY CASCADE CASCADED CASE CAST CATALOG CATALOG_NAME CHAIN CHANGE CHARACTERISTICS CHARACTER_LENGTH CHARACTER_SET_CATALOG CHARACTER_SET_NAME CHARACTER_SET_SCHEMA CHAR_LENGTH CHARSET CHECK CHECKED CHECKPOINT CLASS CLASS_ORIGIN CLOB CLOSE CLUSTER COALESCE COBOL COLLATE COLLATION COLLATION_CATALOG COLLATION_NAME COLLATION_SCHEMA COLUMN COLUMN_NAME COLUMNS COMMAND_FUNCTION COMMAND_FUNCTION_CODE COMMENT COMMIT COMMITTED COMPLETION CONDITION_NUMBER CONNECT CONNECTION CONNECTION_NAME CONSTRAINT CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINTS CONSTRAINT_SCHEMA CONSTRUCTOR CONTAINS CONTINUE CONVERT COPY CORRESPONDING COUNT CREATE CREATEDB CREATEUSER CROSS CUBE CURRENT CURRENT_DATE CURRENT_PATH CURRENT_ROLE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CURSOR_NAME CYCLE DATA DATABASE DATABASES DATE DATETIME_INTERVAL_CODE DATETIME_INTERVAL_PRECISION DAY DAY_HOUR DAY_MINUTE DAY_SECOND DEALLOCATE DEC DECIMAL DECLARE DEFAULT DEFERRABLE DEFERRED DEFINED DEFINER DELAYED DELETE DELIMITERS DEPTH DEREF DESC DESCRIBE DESCRIPTOR DESTROY DESTRUCTOR DETERMINISTIC DIAGNOSTICS DICTIONARY DISCONNECT DISPATCH DISTINCT DISTINCTROW DO DOMAIN DOUBLE DROP DYNAMIC DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE EACH ELSE ENCLOSED ENCODING ENCRYPTED END END-EXEC EQUALS ESCAPE ESCAPED EVERY EXCEPT EXCEPTION EXCLUSIVE EXEC EXECUTE EXISTING EXISTS EXPLAIN EXTERNAL FALSE FETCH FIELDS FINAL FIRST FOR FORCE FOREIGN FORTRAN FORWARD FOUND FREE FREEZE FROM FULL FULLTEXT FUNCTION GENERAL GENERATED GET GLOBAL GO GOTO GRANT GRANTED GROUP GROUPING HANDLER HAVING HIERARCHY HIGH_PRIORITY HOLD HOST HOUR IDENTITY IF IGNORE ILIKE IMMEDIATE IMMUTABLE IMPLEMENTATION IN INCREMENT INDEX INDICATOR INFILE INFIX INHERITS INITIALIZE INITIALLY INNER INNODB INOUT INPUT INSENSITIVE INSERT INSTANCE INSTANTIABLE INSTEAD INTERSECT INTERVAL INTO INVOKER IS ISNULL ISOLATION ITERATE JOIN KEY KEY_MEMBER KEYS KEY_TYPE KILL LANCOMPILER LANGUAGE LARGE LAST LATERAL LEADING LEFT LENGTH LESS LEVEL LIKE LIMIT LINES LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION LOCATOR LOCK LOWER LOW_PRIORITY MAP MASTER_SERVER_ID MATCH MAX MAXVALUE MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MESSAGE_TEXT METHOD MIN MINUTE MINVALUE MOD MODE MODIFIES MODIFY MODULE MONTH MORE MOVE MRG_MYISAM MUMPS NAME NAMES NATIONAL NATURAL NEW NEXT NO NOCREATEDB NOCREATEUSER NONE NOT NOTHING NOTIFY NOTNULL NULL NULLABLE NULLIF NUMBER NUMERIC OBJECT OCTET_LENGTH OF OFF OFFSET OIDS OLD ON ONLY OPEN OPERATION OPERATOR OPTIMIZE OPTION OPTIONALLY OPTIONS OR ORDER ORDINALITY OUT OUTER OUTFILE OUTPUT OVERLAPS OVERLAY OVERRIDING OWNER PAD PARAMETER PARAMETER_MODE PARAMETER_NAME PARAMETER_ORDINAL_POSITION PARAMETERS PARAMETER_SPECIFIC_CATALOG PARAMETER_SPECIFIC_NAME PARAMETER_SPECIFIC_SCHEMA PARTIAL PASCAL PASSWORD PATH PENDANT PLI POSITION POSTFIX PRECISION PREFIX PREORDER PREPARE PRESERVE PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE PUBLIC PURGE READ READS REAL RECURSIVE REF REFERENCES REFERENCING REGEXP REINDEX RELATIVE RENAME REPEATABLE REPLACE REQUIRE RESET RESTRICT RESULT RETURN RETURNED_LENGTH RETURNED_OCTET_LENGTH RETURNED_SQLSTATE RETURNS REVOKE RIGHT RLIKE ROLE ROLLBACK ROLLUP ROUTINE ROUTINE_CATALOG ROUTINE_NAME ROUTINE_SCHEMA ROW ROW_COUNT ROWS RULE SAVEPOINT SCALE SCHEMA SCHEMA_NAME SCOPE SCROLL SEARCH SECOND SECTION SECURITY SELECT SELF SENSITIVE SEQUENCE SERIALIZABLE SERVER_NAME SESSION SESSION_USER SET SETOF SETS SHARE SHOW SIMILAR SIMPLE SIZE SOME SONAME SOURCE SPACE SPECIFIC SPECIFIC_NAME SPECIFICTYPE SQL SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQLCODE SQLERROR SQLEXCEPTION SQL_SMALL_RESULT SQLSTATE SQLWARNING SSL STABLE START STARTING STATE STATEMENT STATIC STATISTICS STDIN STDOUT STRAIGHT_JOIN STRIPED STRUCTURE STYLE SUBCLASS_ORIGIN SUBLIST SUBSTRING SUM SYMMETRIC SYSID SYSTEM SYSTEM_USER TABLE TABLE_NAME TABLES TEMP TEMPLATE TEMPORARY TERMINATE TERMINATED THAN THEN TIMEZONE_HOUR TIMEZONE_MINUTE TO TOAST TRAILING TRANSACTION TRANSACTION_ACTIVE TRANSACTIONS_COMMITTED TRANSACTIONS_ROLLED_BACK TRANSFORM TRANSFORMS TRANSLATE TRANSLATION TREAT TRIGGER TRIGGER_CATALOG TRIGGER_NAME TRIGGER_SCHEMA TRIM TRUE TRUNCATE TRUSTED TYPE UNCOMMITTED UNDER UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNLOCK UNNAMED UNNEST UNSIGNED UNTIL UPDATE UPPER USAGE USE USER USER_DEFINED_TYPE_CATALOG USER_DEFINED_TYPE_NAME USER_DEFINED_TYPE_SCHEMA USER_RESOURCES USING VACUUM VALID VALUE VALUES VARIABLE VARYING VERBOSE VERSION VIEW VOLATILE WHEN WHENEVER WHERE WITH WITHOUT WORK WRITE XOR YEAR YEAR_MONTH ZEROFILL ZONE gambas-3.16.3/comp/src/gb.eval.highlight/sql/operators000066400000000000000000000002441411575327000226140ustar00rootroot00000000000000^ ^= ~ ~= ~* < <^ << <<= <= <> <-> = => > >^ >= >> >>= | || ||/ |/ - , ; := ! !~ !~* != !! ?| ?|| ?- ?-| ?# / . .. ( ) @ @-@ @@ * ** & &< &> && # ## % + AND NOT OR gambas-3.16.3/comp/src/gb.form.dialog/000077500000000000000000000000001411575327000173605ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.dialog/.component000066400000000000000000000002001411575327000213530ustar00rootroot00000000000000[Component] Key=gb.form.dialog Version=3.16.90 Authors=Benoît Minisini,David Villalobos Cambronero Needs=Form Requires=gb.form gambas-3.16.3/comp/src/gb.form.dialog/.directory000066400000000000000000000000411411575327000213600ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form.dialog/.hidden/000077500000000000000000000000001411575327000206715ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.dialog/.hidden/icon.png000066400000000000000000000003471411575327000223330ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEࠠo```Ua~XuIDATHc0&HAV@d#M HS +p,PPP#p)()ǭl ! 8$^ũzėQE,[IENDB`gambas-3.16.3/comp/src/gb.form.dialog/.icon.png000066400000000000000000000130131411575327000210720ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+IDATxMl$IZ7"ev{=fD#-т@͎F @ع,N{;q۞qGp`WB,;xv]嬬UveT_| }Q{؟4GW՟IT>KtTiӯ3/UnhX;~ZƸy)U݇_?8V*?B뾏>7_ܼ&o^e߼k+?ϫ_)cL}+EOX 3,db,ZrZ Xϖ.&ATJ`RGuv;c"mc@AR7lä啖?\G+WEϷ?'"ruG{~ Tsle*k`rW8a+laa j [+QFto//׷&.0uޱ>FD;ڪP~ KMK|S?\ڲt/1)WQ~zBkի{+[~`c/ gQ0>4-XV-7Ԭ_Ãh~xM.4ZscMѧBu`)Ta^Ws^~N#^@bG_Dž8[}h_T#,+J}Py(Lr}5=g?JGO#h;k[Vź / _mrϯ*-}UVDykSHA@Kp|[]-?ʿ_;&>(Cgw/=`>KwYW$⌾eVeABw5ﮅh׽>xP{ Ƒ/>oOjݶ<1+TZшJ WO[w*#ϩL^hp4[0KT"{]诛[V>q,jÖ5}i[~^Ws~&^[ycMQ g?{}*>-gy~G"}꼅. M lWQ$QlJ]Q$UWT~<@C+ ku=g(h]c4&۫ g}d|=P}u;- Tܦq?h@1o\_5 "c_=ǢN?燿+"1@BrUN wOE ) Z#+WG̿U1DT8Y5}y*Za2`>Jyw0ћN 0#|50Xh;^ X[Zɛ{~. ߧv a|uH0`mS[X@%{uիQgw/ ?ZUs_~V eI@uL? aA /yҭ ev^[5SoW$9zMsBwnh.`/yݕC|L(}}*f(ӵ ?e[/_'c߷[ÁXPł^gq2.@ݘڌ:;VY\ *?^LD瓯76yF#SvMk nLv ʎpؑF5A?>kڛgP6yіw8\T+g!AD#eʢ,ZXPdiI:;}|%'(M}+ q~_<kU~2kKwyLTJT&JDQ_i'A+eu$5L[Uӄ}ZbG#m8PwrUPny菼WAvb[zJEVkG+D-yp~/hUAߡi06XcV0!,[~ CղrN`0< o)*CxV<,=3.VaUnRfYlV2[] 7(hQL'ز"Fߙ[~+{lхE/lilmo%5H?/aT2G 1Lpj-?K\qpgwAceT`an$?[~ZKN2N[J }6{tw_/ #Zukx=+Lчb/E^D$ü𺇔/LYXw{aD+2O4Tm\K@bdaD ?~ZCkxG E_~lD])J)X:{Okh"u,F76o~?N).`Oko-#((Hg87/@976 8ER͖F^+q:sőAeY]O!:H#}qQ0 X=PMh0n $*D"ՉR][XߢwQQe~qf&m%Z!aaw}/fimDJ)@kc ,f 7a6EV{jlIbjU6^Zdh?86}?*P=тYYX 7= 36O㮾p=Ξ~l<>c <`{yO^ |'`l(p4*6;zo 7Gi剉ahlp$>\I"YZz4,}OuloN 4{So O7Dk-h'|0GAtpkԌߟ*/h]&0~v%0Z F);1{0wp5X;bMϗv>DM0h$ICvp;+ ZE3]+s+}gxF.%1Gg.@_hC1G| jI9)Fsb?Z,`c@$X|m׳$ 'zfH0 DZ#nMz_Z-fԕ1"'VX{>|s>OkZxśv?OS|t{7s1ɮxvvi $whүgGD `Ll¯gFD `c@$GH63#"H0j̤WHϞ7>={^M\~e i?OS\V3oƲ},Çx7 5f }kaүg&I63D `<88jaggGKQe Ȧ n<+W[o5qY1NL z޲OeeExuhu]\\ 2FpS0@$+"' Bv=ψ`݀$`|" 'z(ڴyF H0VD I2,^ b{;NKp&T$Wȫk+N=U Wu Z1I.c@$$whүgv(`pz ,伃 @0?`|1㼃$`ףM:*j_ `lu4ig=O .3f٧B`+A vo)H@V즖31I vS?i}Q뙏@mdFgv6Ь-EEBn Ҵ寒 Hly[Ic$Xlj$ERq`u?i j l.Vk[IH@(V IB)zanmmݎkNVCXcvv8>>.Zf 1ٳg8<<>/Z_L1O )9>>n'z3c@$+"X $ &z݀$]"D NH0&WX?5xq枳 l_Foex~a.|qF. q4!m5;O2?h}?58mK `/.潽wл6\hu0@$#7l]iucm_ \n^wm';( i)t} `݀$I@M.`c@$+"$ل_|$ 'zfH0VDv),C[iPC^YGM$'''hXO,083As^S0M`D~=3 ` ل_ό? ^)- #"X $ `c@$+"H0"$w ` o/ L .`ɉ'IENDB`gambas-3.16.3/comp/src/gb.form.dialog/.lang/000077500000000000000000000000001411575327000203575ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.dialog/.lang/ca.po000066400000000000000000000022361411575327000213050ustar00rootroot00000000000000# Catalan translation of gb.form.dialog # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as gb.form.dialog package. # Jordi Sayol , 2007-2010. # # msgid "" msgstr "" "Project-Id-Version: gb.form.dialog\n" "POT-Creation-Date: 2002-11-01 04:27+0100\n" "PO-Revision-Date: 2010-12-16 23:29+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" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Extensió automàtica" #: FDirDialog.form:38 FFileDialog.class:90 FInputDate.form:47 msgid "Cancel" msgstr "Canceŀla" #: .project:1 msgid "Enhanced standard dialogs" msgstr "Diàlegs estàndards millorats" #: FDirDialog.form:32 FInputDate.form:41 msgid "OK" msgstr "D'acord" #: FFileDialog.class:90 msgid "&Overwrite" msgstr "&Sobreescriu" #: FFileDialog.class:90 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Aquest fitxer ja existeix.\n\nEl voleu sobreescriure?" gambas-3.16.3/comp/src/gb.form.dialog/.lang/cs.po000066400000000000000000000016451411575327000213320ustar00rootroot00000000000000#, 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 "Enhanced standard dialogs" msgstr "Rozšířené standardní dialogy" #: FDirDialog.form:32 FInputDate.form:41 msgid "OK" msgstr "-" #: FDirDialog.form:38 FFileDialog.class:92 FInputDate.form:47 msgid "Cancel" msgstr "Zrušit" #: FFileDialog.class:92 msgid "&Overwrite" msgstr "&Přepsat" #: FFileDialog.class:92 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Tento soubor již existuje.\n" "\n" "Chcete jej přepsat?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Automatické rozšíření" gambas-3.16.3/comp/src/gb.form.dialog/.lang/de.po000066400000000000000000000016611411575327000213130ustar00rootroot00000000000000#, 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 "Enhanced standard dialogs" msgstr "Erweiterte Standarddialoge" #: FDirDialog.form:32 FInputDate.form:41 msgid "OK" msgstr "-" #: FDirDialog.form:38 FFileDialog.class:93 FInputDate.form:47 msgid "Cancel" msgstr "Abbrechen" #: FFileDialog.class:93 msgid "&Overwrite" msgstr "&Überschreiben" #: FFileDialog.class:93 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Diese Datei existiert bereits.\n" "\n" "Wollen Sie sie überschreiben?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Automatische Erweiterung" gambas-3.16.3/comp/src/gb.form.dialog/.lang/es.po000066400000000000000000000017671411575327000213410ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.6.0\n" "POT-Creation-Date: 2015-09-20 17:52 UTC\n" "PO-Revision-Date: 2014-10-13 17:28 UTC\n" "Last-Translator: jesus \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Enhanced standard dialogs" msgstr "Diálogos estándar mejorados" #: FDirDialog.form:32 FFontDialog.form:35 FInputDate.form:41 msgid "OK" msgstr "OK" #: FDirDialog.form:38 FFileDialog.class:101 FFontDialog.form:41 #: FInputDate.form:47 msgid "Cancel" msgstr "Cancelar" #: FFileDialog.class:101 msgid "&Overwrite" msgstr "&Sobrescribir" #: FFileDialog.class:101 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Este archivo ya existe\n" "\n" "¿Quiere sobrescribirlo?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Extensión automática" #: FFontDialog.form:12 msgid "Select a font" msgstr "Seleccionar fuente" gambas-3.16.3/comp/src/gb.form.dialog/.lang/es_ES.po000066400000000000000000000017701411575327000217220ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.6.0\n" "POT-Creation-Date: 2015-09-20 17:52 UTC\n" "PO-Revision-Date: 2014-10-13 17:28 UTC\n" "Last-Translator: jesus \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Enhanced standard dialogs" msgstr "Diálogos estándar mejorados" #: FDirDialog.form:32 FFontDialog.form:35 FInputDate.form:41 msgid "OK" msgstr "-" #: FDirDialog.form:38 FFileDialog.class:101 FFontDialog.form:41 #: FInputDate.form:47 msgid "Cancel" msgstr "Cancelar" #: FFileDialog.class:101 msgid "&Overwrite" msgstr "&Sobrescribir" #: FFileDialog.class:101 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "El archivo ya existe.\n" "\n" "¿Deseas sobrescribirlo?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Extensión automática" #: FFontDialog.form:12 msgid "Select a font" msgstr "Seleccionar fuente" gambas-3.16.3/comp/src/gb.form.dialog/.lang/fr.po000066400000000000000000000024631411575327000213330ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.10.90\n" "POT-Creation-Date: 2021-02-17 15:38 UTC\n" "PO-Revision-Date: 2017-10-09 23:08 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 "Enhanced standard dialogs" msgstr "-" #: FAskPassword.form:22 msgid "Authentication" msgstr "Identification" #: FAskPassword.form:50 msgid "User" msgstr "Utilisateur" #: FAskPassword.form:64 msgid "Password" msgstr "Mot de passe" #: FAskPassword.form:77 msgid "Remember password" msgstr "Se souvenir du mot de passe" #: FAskPassword.form:97 FDirDialog.form:32 FFontDialog.form:35 #: FInputDate.form:41 msgid "OK" msgstr "OK" #: FAskPassword.form:103 FDirDialog.form:38 FFileDialog.class:107 #: FFontDialog.form:41 FInputDate.form:47 msgid "Cancel" msgstr "Annuler" #: FFileDialog.class:107 msgid "&Overwrite" msgstr "&Remplacer" #: FFileDialog.class:107 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Ce fichier existe déjà.\n" "\n" "Désirez-vous le remplacer ?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Extension automatique" #: FFontDialog.form:12 msgid "Select a font" msgstr "Sélectionnez une police" gambas-3.16.3/comp/src/gb.form.dialog/.lang/it.po000066400000000000000000000023241411575327000213340ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.12.90\n" "PO-Revision-Date: 2019-01-15 14:36 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Enhanced standard dialogs" msgstr "Dialoghi standard avanzati" #: FAskPassword.form:22 msgid "Authentication" msgstr "Autenticazione" #: FAskPassword.form:51 msgid "User" msgstr "Utente" #: FAskPassword.form:65 msgid "Password" msgstr "-" #: FAskPassword.form:78 msgid "Remember password" msgstr "Ricorda la password" #: FAskPassword.form:98 FDirDialog.form:32 FFontDialog.form:35 FInputDate.form:41 msgid "OK" msgstr "-" #: FAskPassword.form:104 FDirDialog.form:38 FFileDialog.class:107 FFontDialog.form:41 FInputDate.form:47 msgid "Cancel" msgstr "Annulla" #: FFileDialog.class:107 msgid "&Overwrite" msgstr "&Sovrascrivi" #: FFileDialog.class:107 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Questo file esiste già.\n\nVuoi sovrascriverlo?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Estensione automatica" #: FFontDialog.form:12 msgid "Select a font" msgstr "Seleziona un font" gambas-3.16.3/comp/src/gb.form.dialog/.lang/ja.po000066400000000000000000000014301411575327000213070ustar00rootroot00000000000000#, 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" #: FDirDialog.class:83 FFileDialog.class:102 FInputDate.class:84 msgid "OK" msgstr "-" #: FDirDialog.class:89 FFileDialog.class:47 FInputDate.class:90 msgid "Cancel" msgstr "キャンセル" #: FFileDialog.class:47 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "ファイルが既に存在します。\n" "\n" "上書きしますか?" #: FFileDialog.class:47 msgid "&Overwrite" msgstr "上書き(&O)" gambas-3.16.3/comp/src/gb.form.dialog/.lang/nl.po000066400000000000000000000024651411575327000213370ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2014 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.12.2\n" "PO-Revision-Date: 2019-04-06 18:33 UTC\n" "Last-Translator: gbWilly \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 "Enhanced standard dialogs" msgstr "Verbeterde standaard dialoog" #: FAskPassword.form:22 msgid "Authentication" msgstr "Authenticatie" #: FAskPassword.form:51 msgid "User" msgstr "Gebruiker" #: FAskPassword.form:65 msgid "Password" msgstr "Wachtwoord" #: FAskPassword.form:78 msgid "Remember password" msgstr "Wachtwoord onthouden" #: FAskPassword.form:98 FDirDialog.form:32 FFontDialog.form:35 FInputDate.form:41 msgid "OK" msgstr "OK" #: FAskPassword.form:104 FDirDialog.form:38 FFileDialog.class:107 FFontDialog.form:41 FInputDate.form:47 msgid "Cancel" msgstr "Annuleren" #: FFileDialog.class:107 msgid "&Overwrite" msgstr "&Overschrijven" #: FFileDialog.class:107 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Dit bestand bestaat reeds.\n\nWil je het overschrijven?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Automatische extentie" #: FFontDialog.form:12 msgid "Select a font" msgstr "Selecteer een lettertype" gambas-3.16.3/comp/src/gb.form.dialog/.lang/pt_BR.po000066400000000000000000000023551411575327000217320ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.14.90\n" "PO-Revision-Date: 2020-06-12 00:22 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Enhanced standard dialogs" msgstr "Diálogos padrão melhorados" #: FAskPassword.form:22 msgid "Authentication" msgstr "Autenticação" #: FAskPassword.form:51 msgid "User" msgstr "Usuário" #: FAskPassword.form:65 msgid "Password" msgstr "Senha" #: FAskPassword.form:78 msgid "Remember password" msgstr "Lembrar senha" #: FAskPassword.form:98 FDirDialog.form:32 FFontDialog.form:35 FInputDate.form:41 msgid "OK" msgstr "OK" #: FAskPassword.form:104 FDirDialog.form:38 FFileDialog.class:107 FFontDialog.form:41 FInputDate.form:47 msgid "Cancel" msgstr "Cancelar" #: FFileDialog.class:107 msgid "&Overwrite" msgstr "&Sobrescrever" #: FFileDialog.class:107 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "O arquivo já existe.\n\nDeseja sobrescreve-lo?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "Extensão automática" #: FFontDialog.form:12 msgid "Select a font" msgstr "Selecione uma fonte" gambas-3.16.3/comp/src/gb.form.dialog/.lang/ru.po000066400000000000000000000052601411575327000213500ustar00rootroot00000000000000# 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" #: comp/src/gb.form.dialog/.project:21 msgid "Enhanced standard dialogs" msgstr "Расширенные стандартные диалоги" #: comp/src/gb.form.dialog/.src/FAskPassword.form:5 msgid "Authentication" msgstr "Аутентификация" #: comp/src/gb.form.dialog/.src/FAskPassword.form:29 msgid "User" msgstr "Пользователь" #: comp/src/gb.form.dialog/.src/FAskPassword.form:40 msgid "Password" msgstr "Пароль" #: comp/src/gb.form.dialog/.src/FAskPassword.form:51 msgid "Remember password" msgstr "Запомнить пароль" #: comp/src/gb.form.dialog/.src/FAskPassword.form:67 comp/src/gb.form.dialog/.src/FDirDialog.form:21 comp/src/gb.form.dialog/.src/FFontDialog.form:24 comp/src/gb.form.dialog/.src/FInputDate.form:28 msgid "OK" msgstr "ОК" #: comp/src/gb.form.dialog/.src/FAskPassword.form:72 comp/src/gb.form.dialog/.src/FDirDialog.form:26 comp/src/gb.form.dialog/.src/FFileDialog.class:107 comp/src/gb.form.dialog/.src/FFontDialog.form:29 comp/src/gb.form.dialog/.src/FInputDate.form:33 msgid "Cancel" msgstr "Отмена" #: comp/src/gb.form.dialog/.src/FFileDialog.class:107 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Этот файл уже существует.\n" "\n" "Хотите перезаписать его?" #: comp/src/gb.form.dialog/.src/FFileDialog.class:107 msgid "&Overwrite" msgstr "Перезаписать" #: comp/src/gb.form.dialog/.src/FFileDialog.form:16 msgid "Automatic extension" msgstr "Автоматическое расширение" #: comp/src/gb.form.dialog/.src/FFontDialog.form:5 msgid "Select a font" msgstr "Выбрать шрифт" gambas-3.16.3/comp/src/gb.form.dialog/.lang/sv.po000066400000000000000000000015011411575327000213440ustar00rootroot00000000000000#, 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" #: FFileDialog.class:133 msgid "Automatic extension" msgstr "Automatisk ifyllnad" #: FDirDialog.class:89 FFileDialog.class:85 FInputDate.class:90 msgid "Cancel" msgstr "Avbryt" #: FDirDialog.class:83 FFileDialog.class:147 FInputDate.class:84 msgid "OK" msgstr "OK" #: FFileDialog.class:85 msgid "&Overwrite" msgstr "&Skriv över" #: FFileDialog.class:85 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Denna fil finns redan.\n\nVill du skriva över den?" gambas-3.16.3/comp/src/gb.form.dialog/.lang/zh.po000066400000000000000000000023421411575327000213410ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.dialog 3.15.90\n" "PO-Revision-Date: 2020-11-18 18:30 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Enhanced standard dialogs" msgstr "增强标准对话框" #: FAskPassword.form:22 msgid "Authentication" msgstr "身份验证" #: FAskPassword.form:50 msgid "User" msgstr "用户" #: FAskPassword.form:64 msgid "Password" msgstr "口令" #: FAskPassword.form:77 msgid "Remember password" msgstr "记住口令" #: FAskPassword.form:97 FDirDialog.form:32 FFontDialog.form:35 FInputDate.form:41 msgid "OK" msgstr "确定" #: FAskPassword.form:103 FDirDialog.form:38 FFileDialog.class:107 FFontDialog.form:41 FInputDate.form:47 msgid "Cancel" msgstr "取消" #: FFileDialog.class:107 msgid "&Overwrite" msgstr "(&O)覆盖" #: FFileDialog.class:107 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "这个文件已经存在。\n\n是否确定覆盖它?" #: FFileDialog.form:22 msgid "Automatic extension" msgstr "自动添加扩展名" #: FFontDialog.form:12 msgid "Select a font" msgstr "选择字体" gambas-3.16.3/comp/src/gb.form.dialog/.project000066400000000000000000000007231411575327000210310ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Enhanced standard dialogs Startup=Main Icon=.hidden/icon.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.settings Authors="Benoît Minisini\nDavid Villalobos Cambronero" Environment="GB_GUI=gb.qt5" TabSize=2 Translate=1 Language=en Type=Component Maintainer=David Villalobos Cambronero Vendor=Princeton Address=david_villalobos_c@yahoo.com License=General Public Licence Packager=1 gambas-3.16.3/comp/src/gb.form.dialog/.src/000077500000000000000000000000001411575327000202255ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.dialog/.src/Dialog.class000066400000000000000000000040221411575327000224510ustar00rootroot00000000000000' Gambas class file Export Static Property Read Paths As String[] Static Property AutoExt As Boolean Static Property {Date} As Date Static Property FixedOnly As Boolean Static Property Key As String Static Property User As String Static Property Read Password As String Static Property NoUser As Boolean Static Private $sKey As String Static Public Function OpenFile(Optional Multi As Boolean) As Boolean Return FFileDialog.OpenFile(Multi) End Static Public Function SaveFile() As Boolean Return FFileDialog.SaveFile() End Static Public Function SelectDirectory() As Boolean Return FDirDialog.SelectDirectory() End Static Private Function Paths_Read() As String[] Return FFileDialog.Paths End Static Public Function SelectDate() As Boolean Return FInputDate.SelectDate() End Static Private Function Date_Read() As Date Return FInputDate.Date End Static Private Sub Date_Write(Value As Date) FInputDate.Date = Value End Static Private Function AutoExt_Read() As Boolean Return FFileDialog.AutoExt End Static Private Sub AutoExt_Write(Value As Boolean) FFileDialog.AutoExt = Value End Static Public Function SelectFont() As Boolean Return FFontDialog.SelectFont() End Static Private Function FixedOnly_Read() As Boolean Return FFontDialog.FixedOnly End Static Private Sub FixedOnly_Write(Value As Boolean) FFontDialog.FixedOnly = Value End Static Private Function Key_Read() As String Return $sKey End Static Private Sub Key_Write(Value As String) $sKey = Value End Static Public Sub AskPassword() As Boolean Return FAskPassword.Run() End Static Private Function Password_Read() As String Return FAskPassword.Password End Static Private Function NoUser_Read() As Boolean Return FAskPassword.NoUser End Static Private Sub NoUser_Write(Value As Boolean) FAskPassword.NoUser = Value End Static Private Function User_Read() As String Return FAskPassword.User End Static Private Sub User_Write(Value As String) FAskPassword.User = Value End gambas-3.16.3/comp/src/gb.form.dialog/.src/FAskPassword.class000066400000000000000000000036231411575327000236270ustar00rootroot00000000000000' Gambas class file Class Desktop Static Public NoUser As Boolean Static Public (User) As String Static Public Password As String Private $bHasDesktop As Boolean Private $bHasSettings As Boolean Private $sKey As String Public Sub Run() As Boolean ' Dim hWindow As Window Dim bRet As Integer Dim iBusy As Integer ' hWindow = New Window ' hWindow.Move(0, 0, Screen.Width, Screen.Height) ' hWindow.Background = Color.Black ' hWindow.Opacity = 40 ' hWindow.Border = False ' hWindow.SkipTaskbar = True ' hWindow.Show iBusy = Application.Busy Application.Busy = 0 bRet = Not Me.ShowModal() Application.Busy = iBusy Return bRet End Public Sub btnOK_Click() {User} = txtUser.Text Password = txtPassword.Text If $sKey Then Settings[$sKey &/ "User"] = txtUser.Text Settings[$sKey &/ "Remember"] = chkRemember.Value If $bHasDesktop And If chkRemember.Value Then Desktop.Passwords[Dialog.Key] = txtPassword.Text Endif Endif Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() $bHasSettings = Component.IsLoaded("gb.settings") $bHasDesktop = Component.IsLoaded("gb.desktop") If Dialog.Title Then Me.Title = Dialog.Title If $bHasSettings And If Dialog.Key Then $sKey = "gb.form.dialog" &/ Dialog.Key If NoUser Then txtUser.Enabled = False Else If $sKey Then txtUser.Text = Settings[$sKey &/ "User"] Else txtUser.Text = {User} Endif If $bHasDesktop And If $sKey Then chkRemember.Show chkRemember.Value = Settings[$sKey &/ "Remember", False] If chkRemember.Value Then txtPassword.Text = Desktop.Passwords[Dialog.Key] Endif Else panPassword.H -= chkRemember.H Endif If txtUser.Length Or If NoUser Then txtPassword.SetFocus Else txtUser.SetFocus Endif 'Me.Raise End Public Sub Form_Close() NoUser = False Dialog.Key = "" End gambas-3.16.3/comp/src/gb.form.dialog/.src/FAskPassword.form000066400000000000000000000030131411575327000234560ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,57,21) Text = ("Authentication") Icon = Picture["icon:/small/security"] Resizable = False Arrangement = Arrange.Vertical AutoResize = True Spacing = True Margin = True { panPassword HBox MoveScaled(1,1,52,13) Spacing = True { PictureBox1 PictureBox MoveScaled(1,1,8,11) Picture = Picture["icon:/huge/security"] AutoResize = True } { Panel4 VBox MoveScaled(9,0,41,13) Expand = True Spacing = True { HBox2 HBox MoveScaled(0,0,39,4) { Label1 Label MoveScaled(0,0,13,4) Text = ("User") } { txtUser TextBox MoveScaled(21,0,17,4) Expand = True } } { HBox3 HBox MoveScaled(0,5,40,4) { Label2 Label MoveScaled(0,0,13,4) Text = ("Password") } { txtPassword TextBox MoveScaled(21,0,17,4) Expand = True Password = True } } { chkRemember CheckBox MoveScaled(0,9,23,4) Visible = False Text = ("Remember password") } } } { Panel2 Panel MoveScaled(20,15,3,1) } { HBox1 HBox MoveScaled(1,16,51,4) Spacing = True { Panel1 Panel MoveScaled(3,0,2,4) Expand = True } { btnOK Button MoveScaled(11,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(30,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form.dialog/.src/FDirDialog.class000066400000000000000000000022111411575327000232140ustar00rootroot00000000000000' Gambas class file Public Sub SelectDirectory() As Boolean Return Not Me.ShowModal() End Public Sub Form_Open() ' DEBUG "Dialog.Title:";; Dialog.Title ' DEBUG "Dialog.Path:";; Dialog.Path Me.Title = Dialog.Title dchChoose.Root = "/" dchChoose.ShowHidden = Dialog.ShowHidden If Component.IsLoaded("gb.settings") And If Dialog.Key Then Settings.Read(Me, "gb.form.dialog" &/ Dialog.Key) Settings.Read(dchChoose, "/gb.form.dialog" &/ Dialog.Key &/ "dchChoose") Endif If Not Dialog.Path Then dchChoose.SelectedPath = "~" Else dchChoose.SelectedPath = Dialog.Path Endif If Component.IsLoaded("gb.settings") Then Settings.Read(Me, "gb.form.dialog/FDirDialog") End Public Sub btnOK_Click() Dialog.Path = dchChoose.SelectedPath Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub dchChoose_Activate() btnOK.Value = True End Public Sub Form_Close() If Component.IsLoaded("gb.settings") And If Dialog.Key Then Settings.Write(Me, "gb.form.dialog" &/ Dialog.Key) Settings.Write(dchChoose, "/gb.form.dialog" &/ Dialog.Key &/ "dchChoose") Endif Dialog.Key = "" End gambas-3.16.3/comp/src/gb.form.dialog/.src/FDirDialog.form000066400000000000000000000010231411575327000230520ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,52) Arrangement = Arrange.Vertical Spacing = True Margin = True { dchChoose DirChooser MoveScaled(2,1,56,36) Expand = True } { HBox1 HBox MoveScaled(1,43,56,4) Spacing = True { Panel1 Panel MoveScaled(3,0,4,4) Expand = True } { btnOK Button MoveScaled(22,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(39,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form.dialog/.src/FFileDialog.class000066400000000000000000000057511411575327000233710ustar00rootroot00000000000000' Gambas class file Static Public Paths As String[] Static Public AutoExt As Boolean Private $bMulti As Boolean Private $bReadOnly As Boolean Private $bAutoExt As Boolean Public Sub OpenFile(bMulti As Boolean) As Boolean $bMulti = bMulti $bReadOnly = True $bAutoExt = False Return Not Me.ShowModal() End Public Sub SaveFile() As Boolean $bMulti = False $bReadOnly = False $bAutoExt = True Return Not Me.ShowModal() End Public Sub Form_Open() ' DEBUG "Dialog.Title:";; Dialog.Title ' DEBUG "Dialog.Path:";; Dialog.Path Me.Title = Dialog.Title fchChoose.ReadOnly = $bReadOnly fchChoose.Multi = $bMulti 'fchChoose.Root = "/" fchChoose.Filter = Dialog.Filter fchChoose.ShowHidden = Dialog.ShowHidden If Component.IsLoaded("gb.settings") Then If Dialog.Key Then Settings.Read(Me, "gb.form.dialog" &/ Dialog.Key) Settings.Read(fchChoose, "/gb.form.dialog" &/ Dialog.Key &/ "fchChoose") Else Settings.Read(Me, "gb.form.dialog/FFileDialog") Endif Endif If Dialog.Path Then fchChoose.SelectedPath = Dialog.Path If fchChoose.Filter.Count > 1 Then chkAutoExt.Visible = $bAutoExt chkAutoExt.Value = AutoExt Endif fchChoose.SetFocus End Private Sub SetExtension(sPath As String) As String Dim aFilter As String[] Dim iInd As Integer Dim sExt As String Dim bGotIt As Boolean aFilter = Dialog.Filter For iInd = 0 To aFilter.Max Step 2 Try sExt = Scan(Split(aFilter[iInd], ";")[0], "\\*.*")[0] If Not sExt Then Continue If sExt = "*" Then Continue If sPath Ends "." & sExt Then sPath = Left$(sPath, -Len(sExt) - 1) bGotIt = True Break Endif Next If Not bGotIt Then sPath = File.SetExt(sPath, "") Try sExt = Scan(Split(aFilter[fchChoose.FilterIndex * 2], ";")[0], "[*].*")[0] If sExt Then sPath &= "." & sExt Return sPath End Public Sub fchChoose_Activate() Dim sPath As String Dim aPath As String[] If fchChoose.Multi Then aPath = fchChoose.SelectedPaths If aPath.Count = 0 Then Return Paths = aPath Else sPath = fchChoose.SelectedPath If Not sPath Or If IsDir(sPath) Then Return Dialog.AutoExt = chkAutoExt.Value If Dialog.AutoExt Then sPath = SetExtension(sPath) Dialog.Path = sPath ' If Not fchChoose.ReadOnly Then ' If Exist(sPath) Then ' If Message.Warning(("This file already exists.\n\nDo you want to overwrite it?"), ("&Overwrite"), ("Cancel")) = 2 Then Return ' Endif ' Endif Endif Me.Close(True) End Public Sub fchChoose_Cancel() Me.Close End Public Sub Form_Close() If Component.IsLoaded("gb.settings") Then If Dialog.Key Then Settings.Write(Me, "gb.form.dialog" &/ Dialog.Key) Settings.Write(fchChoose, "/gb.form.dialog" &/ Dialog.Key &/ "fchChoose") Else Settings.Write(Me, "gb.form.dialog/FFileDialog") Endif Endif Dialog.Key = "" End Public Sub chkAutoExt_Click() fchChoose.AutoExt = chkAutoExt.Value End gambas-3.16.3/comp/src/gb.form.dialog/.src/FFileDialog.form000066400000000000000000000005151411575327000232200ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,81,62) Arrangement = Arrange.Vertical Spacing = True Margin = True { fchChoose FileChooser MoveScaled(3,1,72,48) Expand = True ShowButton = True } { chkAutoExt CheckBox MoveScaled(3,54,53,3) Visible = False Text = ("Automatic extension") } } gambas-3.16.3/comp/src/gb.form.dialog/.src/FFontDialog.class000066400000000000000000000016641411575327000234170ustar00rootroot00000000000000' Gambas class file Static Public FixedOnly As Boolean Static Public Function SelectFont() As Boolean Return Not FFontDialog.ShowModal() End Public Sub btnOK_Click() If dlgFont.SelectedFont Then Dialog.Font = Font[dlgFont.SelectedFont] Else Dialog.Font = Null Endif Me.Close(True) End Public Sub btnCancel_Click() Me.Close End Public Sub Form_Open() Me.Title = Dialog.Title dlgFont.FixedOnly = FixedOnly If Component.IsLoaded("gb.settings") And If Dialog.Key Then Settings.Read(Me, "gb.form.dialog" &/ Dialog.Key) Endif If Dialog.Font Then dlgFont.SelectedFont = Dialog.Font.ToString() Else dlgFont.SelectedFont = Null Endif dlgFont.SetFocus() End Public Sub dlgFont_Activate() btnOK.Value = True End Public Sub Form_Close() If Component.IsLoaded("gb.settings") And If Dialog.Key Then Settings.Write(Me, "gb.form.dialog" &/ Dialog.Key) Endif Dialog.Key = "" End gambas-3.16.3/comp/src/gb.form.dialog/.src/FFontDialog.form000066400000000000000000000011331411575327000232440ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,75,56) Text = ("Select a font") Persistent = True Arrangement = Arrange.Vertical Spacing = True Margin = True { dlgFont FontChooser MoveScaled(2,2,66,48) Expand = True ShowRelative = False } { Panel2 HBox MoveScaled(6,51,49,4) Spacing = True { Panel1 Panel MoveScaled(0,0,8,4) Expand = True } { btnOK Button MoveScaled(11,0,15,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(27,0,15,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form.dialog/.src/FInputDate.class000066400000000000000000000007511411575327000232620ustar00rootroot00000000000000' Gambas class file Static Public {Date} As Date Public Function SelectDate() As Boolean Return Not Me.ShowModal() End Public Sub Form_Open() Me.Center lblMessage.Text = Dialog.Title Me.Title = lblMessage.Text dlgDate.Value = {Date} End Public Sub btnCancel_Click() Me.Close(False) End Public Sub btnOK_Click() {Date} = dlgDate.Value Me.Close(True) End Public Sub dlgDate_Activate() btnOK.Value = True End Public Sub Form_Close() Dialog.Key = "" End gambas-3.16.3/comp/src/gb.form.dialog/.src/FInputDate.form000066400000000000000000000012451411575327000231170ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,59,43) Arrangement = Arrange.Vertical Spacing = True Margin = True { lblMessage TextLabel MoveScaled(1,1,48,4) Visible = False Font = Font["+1"] AutoResize = True Alignment = Align.Center } { dlgDate DateChooser MoveScaled(1,6,48,31) Expand = True } { HBox1 HBox MoveScaled(1,38,48,4) Spacing = True { Panel1 Panel MoveScaled(7,0,2,4) Expand = True } { btnOK Button MoveScaled(15,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(32,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form.dialog/.src/Main.module000066400000000000000000000001431411575327000223160ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dialog.Key = "test-the-key" Dialog.OpenFile() End gambas-3.16.3/comp/src/gb.form.editor/000077500000000000000000000000001411575327000174075ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.editor/.component000066400000000000000000000001451411575327000214120ustar00rootroot00000000000000[Component] Key=gb.form.editor Version=3.16.90 Needs=Form Requires=gb.eval.highlight,gb.util,gb.form gambas-3.16.3/comp/src/gb.form.editor/.directory000066400000000000000000000000411411575327000214070ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form.editor/.hidden/000077500000000000000000000000001411575327000207205ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.editor/.hidden/CHANGELOG000066400000000000000000000001221411575327000221250ustar00rootroot00000000000000* Sat Jun 13 2020 Benoît Minisini 3.14.90 - Version initiale gambas-3.16.3/comp/src/gb.form.editor/.hidden/control/000077500000000000000000000000001411575327000224005ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.editor/.hidden/control/texteditor.png000066400000000000000000000003641411575327000253040ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTE```FIDATHc`@PP ccC '44G!@V/K HP{(+PA~*e.o; pIՃRҨQh5 }1#{uIENDB`gambas-3.16.3/comp/src/gb.form.editor/.icon.png000066400000000000000000000140021411575327000211200ustar00rootroot00000000000000PNG  IHDR\rf pHYs+IDATxM#IZ7"n=)%R,B{apƅܸ! H!qHPsVZT-iόu]v:CdDF?i?>Rt:]_D"""""""""""""""""""""""""""""""""""""""""""""""/b |ﻏOߓ`2]?Kd񬐀V]gv[x,#{J (e~%D Q~ZRROjy,sG|M"@._en'g7u3<<P{ms~S8juGCCk-~"_?ߞ.]T[O?5 (N׉r+h,#k%c4RP=KL_ߵtUTƋ/>! [IzU :k'xږŕŸ~߾l/׹LB5te-cv\hP7uTdjN@-3mYK'(ƷclUѿU{yVl.$}Ywii a|VӼ>'F_|{?ʽf :Oʙ=mߞx>cPJsRk+G#:?R#)TPAIrn&^2@`=l!+-OZgoH_Wo]>aF/ǫ ~ +V^i傀|y^|m=~n-߲$3@-drI+I/!Ϋ⢔IRbpuQnA OBBkgҴXx@$߷ba-w5pi?NM&XUnxFؿ2Eh$Z}.`xonJJٖ}K6Qh@փB)ǩOWHn^(@QB5}A?;/@{~1`= X-F3?{(hH=.zJ-NͽL?]hSFL ȷ !MmBKhimE!ްԥ (t?۞fmǭR=`r6о?zf0^2zmOy@80v yҵO~3FʋgPk.&ZcorVNk]^ȇE" #t-o*YJ@k56؉?B&ؓ_[V-ob*6|kZd LoJH)(3(T>w?ToWn +g[$3C*&䭪i/nC#Z$reUfyꏼ^ubKz^e֣ZO1+e-vk~bAi;=RÄfxҽGmg(OUeV@@a4Qyy|ю V?=1Y:KEzfa/3qbN 5|.An$+lo2v{M[y]hi>?[~{XN@+eU-~0 oYnD9kpl0u`5NL!nM]kg B|f{~_d P`& 8bO`'q"l Zhn vkvͶ>*FlhD` 8SEE߯${>nG|a~򚛔m*\^L`O@$5-$ӥDy_y^x>ݶ 3x: JE /?3"*BQ!*_och\8{0ltpeSKff'Z4N)v~z姃w&D6oO P ;BлH'll`9?zn@qϲrfE(3MZ|{o@{~.5}+gmhn97}U: < kG O3lcD3.>1N>]fLeݧƇ~}ދ&JLgMxH|kj$ze5p7t~~G'Ѓ =.սyX}>xf/9o3@}9bC2Zc5\?UP PD̓aqG^CV0r[_ӣ=8 w؏VG˝:$ַ>*Mң/kD/6o<*=bkWM_txjw^i},ѡb)Fz/"/@1tjgӗ~AD;P;Ht< QY/]zvQ8 '@n(e[Ȣ&\hni4%ڢx`d] kݕ nnVk׻D[4I[ y<*" zhnooO*vrRJ4 Z-zȣR-BH)V F[ŷ^OF-T piqҔ5"by4ڻ?:H  @}apPf\_\\t:x`ؑLnBoXjT >5zA?/-i/oe]fjZx~c@@ڬקO&,x}zt:h4Ze p~~o#,n 9G9#oNZ5eY0v5? t\ _${"?l Olf`ZiSk~zǟgpcZiS95ϟe.//3\^^|v7#a ߃iO/V+ dY`^ ~f, ^ %uff`^[{"ԝ0vwڒ©ô+qXSx_~xf`Ma74Cz&pyU7m >`lN~;\E@]`XSϔiu%lN"5UeńU&t[yD+b̶(b Dc `M4n#So˄sH:Ff"inYl=^o==p~Y\>7A!|E?6^r~ϟot9^0r,)Nzu&m hob/mu,!H7̫ۛ^}[Y7`k}nZ3|Kϟ??^xf`M׷뇯8]2/ Kak~K}}}vԽ'`&=~0ſ:m˄5uo wԽ'`0q+/ &A[RfW-Ukj k~5ވxf%U5}-U5:| H1" (b D(-Q"@1^ HQxf.Q"@1Hqxf@11E(b,R"?yK0\3DՀ؏gfDc G(n"!@$Hti"I02 tHF?F$ o4h4HӔA`:RJprr" 7 (prrp}n@33:RJ$Iz$HE(b Dc̫)jEw}<3 ȏgfDc Q"@1P"?E(b DՀ؏g)nE(b Dc ȏg".Q݀tB@JZNRjė~;pXaX<+g  z 1RЖb8b</>ĄW,`0@Zmp8D`0@ec=W gF#4mx<`0 c0WjáBen!95& &ɮwґϫb3GxOa@1H1fDc QxK0H1^ H1"@]Oc" Q =x`IENDB`gambas-3.16.3/comp/src/gb.form.editor/.project000066400000000000000000000013551411575327000210620ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Text editor with syntax highlighting Startup=FTestEditor Icon=.hidden/control/texteditor.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.eval Component=gb.eval.highlight Component=gb.util Environment="GB_GUI=gb.qt5\n GB_NO_JIT=1" TabSize=2 Language=en_US Type=Component Maintainer=Benoît Minisini Address=g4mba5@gmail.com Url=www.endoftheinternet.com License=General Public License Prefix=1 PackageName=gambas3-gb-form-editor-3.14.90 PackageVersion=2 CreateEachDirectory=1 Packager=1 Systems=debian,fedora,slackware,ubuntu Groups=debian:"admin" Groups=fedora:"Amusements/Games" Groups=slackware:"Amusements/Games" Groups=ubuntu:"admin" DoNotTranslate=".src/test" gambas-3.16.3/comp/src/gb.form.editor/.src/000077500000000000000000000000001411575327000202545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.editor/.src/CCommand.class000066400000000000000000000144731411575327000227750ustar00rootroot00000000000000' Gambas class file Public Enum BEGIN, {END}, {LINK}, INSERT, DELETE, CHANGE 'Public View As Editor Public Type As Integer Public X As Integer Public Y As Integer Public SX As Integer Public SY As Integer Public XA As Integer Public YA As Integer Public Text As String Public Right As Boolean Public State As CCommandBefore Property Read Length As Integer ' /**---- GCommand -----------------------------------------------------------*/ ' ' struct GCommandDocument ' { ' public: ' GEditor *view; ' int cx; ' int cy; ' int sx; ' int sy; ' int sx2; ' int sy2; ' ' GCommandDocument() { } ' GCommandDocument(GDocument *doc); ' void process(GDocument *doc) const; ' void print() const; ' bool equals(GCommandDocument *o) const; ' }; ' Public Sub _new(hDoc As CDocument, iType As Integer, Optional sText As String, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer, hState As CCommandBefore, Optional bRight As Boolean) With hDoc.Current Type = iType X = X1 Y = Y1 XA = X2 YA = Y2 SX = .SelectionColumn SY = .SelectionLine Text = sText State = hState Right = bRight End With End Public Sub Print(sPrefix As String) Print sPrefix; Print ["BEGIN", "END", "LINK", "INSERT", "DELETE"][Type];; Print "X =";; X;; "Y =";; Y;; "SX =";; SX;; "SY =";; SY;; "XA =";; XA;; "YA =";; YA;; "Text =";; Quote(Str(Text)); End Static Public Sub _call(hDoc As CDocument, iType As Integer, Optional sText As String, X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer, hState As CCommandBefore, Optional bRight As Boolean) As CCommand Return New CCommand(hDoc, iType, sText, X1, Y1, X2, Y2, hState, bRight) End Public Sub MoveCursor(hDoc As CDocument) If SX <> X Or If SY <> Y Then hDoc.Current.Goto(SX, SY) hDoc.Current.Goto(X, Y, True) Else hDoc.Current.Goto(X, Y) Endif End ' GCommandDocument::GCommandDocument(GDocument *doc) ' { ' view = doc->currentView(); ' ' view->getCursor(&cy, &cx); ' ' if (doc->hasSelection()) ' doc->getSelection(&sy, &sx, &sy2, &sx2, false); // TODO: store insertMode ' else ' sx = sy = sx2 = sy2 = -1; ' } ' ' void GCommandDocument::process(GDocument *doc) const ' { ' //qDebug("goto %d %d", cx, cy); ' view->cursorGoto(cy, cx, false); ' if (sx >= 0) ' { ' //qDebug("select %d %d %d %d", sx, sy, sx2, sy2); ' doc->startSelection(view, sy, sx); ' doc->endSelection(sy2, sx2); ' } ' } ' ' void GCommandDocument::print() const ' { ' qDebug("- %d %d [%d %d %d %d]", cx, cy, sx, sy, sx2, sy2); ' } ' ' Public Sub Equals(hOther As CCommand) As Boolean ' ' If hOther.X = X And If hOther.Y = Y And If hOther.SX = SX And If hOther.SY = SY Then Return True ' ' End ' bool GCommandDocument::equals(GCommandDocument *o) const ' { ' return view == o->view && cx == o->cx && cy == o->cy ' && sx == o->sx && sy == o->sy && sx2 == o->sx2 && sy2 == o->sy2; ' } ' ' class GCommand ' { ' public: ' enum Type ' { ' None, Begin, End, Move, Insert, Delete, Indent, Unindent ' }; ' GCommandDocument info; ' ' virtual ~GCommand() { } ' virtual Type type() const { return None; } ' virtual int nest() const { return 0; } ' virtual void print() const { } ' virtual bool merge(GCommand *) const { return false; } ' virtual void process(GDocument *doc, bool undo) const { } ' virtual bool linked() const { return false; } ' virtual bool remove(GCommand *) const { return false; } ' }; ' ' class GBeginCommand: public GCommand ' { ' public: ' bool _linked; ' ' GBeginCommand(GCommandDocument *info, bool linked = false) { _linked = linked; this->info = *info; } ' Type type() const { return Begin; } ' void print() const { qDebug("Begin"); info.print(); } ' int nest() const { return 1; } ' bool linked() const { return _linked; } ' void process(GDocument *doc, bool undo) const { info.process(doc); } ' }; ' ' class GEndCommand: public GCommand ' { ' public: ' bool _linked; ' ' GEndCommand(bool linked = false) { _linked = linked; } ' Type type() const { return End; } ' void print() const { qDebug("End"); } ' int nest() const { return -1; } ' bool linked() const { return _linked; } ' bool remove(GCommand *o) const { return (o->type() == Begin); } ' }; ' ' class GDeleteCommand: public GCommand ' { ' public: ' int x, y, x2, y2; ' GString str; ' ' GDeleteCommand(GCommandDocument *info, int y, int x, int y2, int x2, const GString &str) ' { ' this->x = x; this->y = y; this->x2 = x2; this->y2 = y2; this->str = str; ' this->info = *info; ' } ' ' Type type() const { return Delete; } ' void print() const { qDebug("Delete: (%d %d)-(%d %d): '%s'", x, y, x2, y2, TO_UTF8(str.getString())); info.print(); } ' ' bool merge(GCommand *c) const ' { ' if (c->type() != type()) ' return false; ' ' GDeleteCommand *o = (GDeleteCommand *)c; ' ' if (info.view != o->info.view) ' return false; ' ' if (x2 != o->x || y2 != o->y || o->y != o->y2) ' return false; ' ' o->str.prepend(str); ' o->x = x; ' o->y = y; ' //o->info = info; ' return true; ' } ' ' void process(GDocument *doc, bool undo) const ' { ' if (undo) ' doc->insert(y, x, str); ' else ' doc->remove(y, x, y2, x2); ' ' info.process(doc); ' } ' }; ' ' class GInsertCommand: public GDeleteCommand ' { ' public: ' GInsertCommand(GCommandDocument *info, int y, int x, int y2, int x2, const GString &str): ' GDeleteCommand(info, y, x, y2, x2, str) {} ' Type type() const { return Insert; } ' void print() const { qDebug("Insert: (%d %d)-(%d %d): '%s'", x, y, x2, y2, TO_UTF8(str.getString())); info.print(); } ' ' bool merge(GCommand *c) const ' { ' if (c->type() != type()) ' return false; ' ' if (str.length() && str.isNewLine(0)) ' return false; ' ' GInsertCommand *o = (GInsertCommand *)c; ' ' if (o->info.view != info.view) ' return false; ' ' if (o->str.length() && o->str.isNewLine(str.length() - 1)) ' return false; ' ' if (x != o->x2 || y != o->y2) ' return false; ' ' o->str += str; ' o->x2 = x2; ' o->y2 = y2; ' return true; ' } ' ' void process(GDocument *doc, bool undo) const ' { ' GDeleteCommand::process(doc, !undo); ' } ' }; ' Private Function Length_Read() As Integer Return Abs(X - XA) End gambas-3.16.3/comp/src/gb.form.editor/.src/CCommandBefore.class000066400000000000000000000002501411575327000241040ustar00rootroot00000000000000' Gambas class file Public BreakpointBefore As Collection Public BreakpointAfter As Collection Public BookmarkBefore As Collection Public BookmarkAfter As Collection gambas-3.16.3/comp/src/gb.form.editor/.src/CDocument.class000066400000000000000000001005501411575327000231650ustar00rootroot00000000000000' Gambas class file Event _Fake Property Text As String Property Read Count As Integer Property Read Max As Integer Property Read Current As TextEditor Property Highlight As String Property Mode As String Property Read Length As Integer Property Read Keywords As String[] Property Breakpoints As Integer[] Property DisabledBreakpoints As Integer[] Property Bookmarks As Integer[] Property EndOfLine As Integer Property CloseBraces As Boolean Property CloseStrings As Boolean Property Read DiffMode As Boolean Public Const ROW_NOT_FOUND As Integer = -2 Public Lines As String[] Public LinesInfo As CLineInfo[] Public LineLength As Integer[] Public XAfter As Integer Public YAfter As Integer Public DiffAdded As Integer[] Public DiffRemoved As Collection Private $aUndo As New CCommand[] Private $aRedo As New CCommand[] Private $iNoUndo As Integer Private $hDefaultInfo As New CLineInfo Private $hHighlight As TextHighlighter Private $iBegin As Integer Public _Mode As TextEditorMode Private $sMode As String Private $bCloseBraces As Boolean Private $bCloseStrings As Boolean Private $iEndOfLine As Integer = gb.Unix Private $sEndOfLine As String = "\n" Private $cBreakpoint As Collection Private $cBookmark As Collection Private $hCommandBefore As CCommandBefore Private $bHighlighting As Boolean Private $cHighlightLater As Collection Private $iNoHighlight As Integer Private $bRewrite As Boolean Private $bEndOfLine As Boolean Private $bCustomHighlight As Boolean Private $iFirstInvalidHighlight As Integer Private $iDoNotHighlightLine As Integer Private $bHighlightAll As Boolean Public Sub _new() _Mode = New TextEditorMode Clear End Public Sub Clear() Dim hView As TextEditor Dim aViews As TextEditor[] Lines = New String[1] LinesInfo = New CLineInfo[1] LineLength = New Integer[1] $aUndo.Clear $aRedo.Clear $iBegin = 0 $iNoHighlight = 0 $cHighlightLater = Null $cBreakpoint = New Collection $cBookmark = New Collection $iFirstInvalidHighlight = 0 Try aViews = GetAllViews() If aViews Then For Each hView In aViews hView.Goto(0, 0) Next Endif End Private Function Text_Read() As String Return Lines.Join($sEndOfLine) End Private Sub UpdateLineLength() Dim I As Integer LineLength = New Integer[Lines.Count] For I = 0 To Lines.Max LineLength[I] = String.Len(Lines[I]) Next End Private Sub Text_Write(Value As String) Clear If Value Then Lines = Split(Value, "\n") LinesInfo = New CLineInfo[Lines.Count] UpdateLineLength 'HighlightFrom(0) LayoutLines Endif End Private Sub LayoutLines() Dim hView As TextEditor For Each hView In GetAllViews() hView._UpdateAllHeight Next End Public Sub Load(sPath As String, bAddNewLine As Boolean) Dim hFile As File Dim sLine As String '' TODO: handle local paths hFile = Open sPath Clear Lines.Clear For Each sLine In hFile.Lines Lines.Add(sLine) Next If Not hFile.EndOfFile Then Lines.Add("") Else If bAddNewLine And If Trim(sLine) Then Lines.Add("") Endif LinesInfo = New CLineInfo[Lines.Count] UpdateLineLength 'HighlightFrom(0) LayoutLines End Public Sub Save(sPath As String) Dim hFile As File Dim I As Integer hFile = Open sPath For Create hFile.EndOfLine = $iEndOfLine For I = 0 To Lines.Max - 1 Print #hFile, Lines[I] Next Print #hFile, Lines[Lines.Max]; Close #hFile Reset(True) End Private Function Count_Read() As Integer Return Lines.Count End Private Function Max_Read() As Integer Return Lines.Max End Public Sub Begin(Optional bMerge As Boolean) If $iNoUndo Then Return Inc $iBegin If bMerge Then AddUndo(CCommand(Me, CCommand.LINK)) AddUndo(CCommand(Me, CCommand.BEGIN,, Me.Current.Column, Me.Current.Line)) DisableHighlight End Public Sub End() If $iNoUndo Then Return If $iBegin = 0 Then Error.Raise("Missing call to Begin") Dec $iBegin EnableHighlight AddUndo(CCommand(Me, CCommand.END,, Me.Current.Column, Me.Current.Line)) CheckUnlock End Private Function Current_Read() As TextEditor Return Object.Parent(Me) End Private Sub GetAllViews() As TextEditor[] Return Me.Current._GetViews() End Public Sub Refresh(Optional Y As Integer = -1) Dim hView As TextEditor If Y < 0 Then For Each hView In GetAllViews() hView.Refresh Next Else For Each hView In GetAllViews() hView._RefreshLine(Y) Next Endif End Private Sub RemoveCollection(cCol As Collection, Y As Integer, N As Integer) As Collection Dim cNew As Collection Dim bValue As Boolean Dim iLine As Integer If cCol.Count = 0 Then Return cCol cNew = New Collection For Each bValue In cCol iLine = CInt(cCol.Key) If iLine < Y Then Else If iLine >= (Y + N) Then iLine -= N Else Continue Endif cNew[iLine] = bValue Next Return cNew End Private Sub RemoveLines(Y As Integer, N As Integer) Lines.Remove(Y, N) LinesInfo.Remove(Y, N) LineLength.Remove(Y, N) StartBefore() $cBookmark = RemoveCollection($cBookmark, Y, N) $cBreakpoint = RemoveCollection($cBreakpoint, Y, N) End Private Sub InsertCollection(cCol As Collection, Y As Integer) As Collection Dim bValue As Boolean Dim iLine As Integer Dim cNew As Collection If cCol.Count = 0 Then Return cCol cNew = New Collection For Each bValue In cCol iLine = CInt(cCol.Key) If iLine >= Y Then Inc iLine cNew[iLine] = bValue Next Return cNew End Private Sub SameCollection(cCol1 As Collection, cCol2 As Collection) As Boolean Dim vVal As Variant If cCol1.Count <> cCol2.Count Then Return If cCol1.Count = 0 Then Return True If cCol1.Count > cCol2.Count Then Swap cCol1, cCol2 For Each vVal In cCol1 If cCol2[cCol1.Key] <> vVal Then Return Next Return True End Private Sub StartBefore() If $iNoUndo Then Return If Not $hCommandBefore Then $hCommandBefore = New CCommandBefore With $hCommandBefore .BreakpointBefore = $cBreakpoint.Copy() .BookmarkBefore = $cBookmark.Copy() End With Endif End Private Sub EndBefore() As CCommandBefore Dim hCommandBefore As CCommandBefore = $hCommandBefore If $iNoUndo Then Return $hCommandBefore = Null If Not hCommandBefore Then Return With hCommandBefore If SameCollection(.BreakpointBefore, $cBreakpoint) Then .BreakpointBefore = Null Else .BreakpointAfter = $cBreakpoint.Copy() Endif If SameCollection(.BookmarkBefore, $cBookmark) Then .BookmarkBefore = Null Else .BookmarkAfter = $cBookmark.Copy() Endif If Not .BookmarkBefore And If Not .BreakpointBefore Then Return End With Return hCommandBefore End Private Sub InsertLine(Y As Integer) ' Inserting a void line is supposed to keep highlighting valid. Lines.Add("", Y) LineLength.Add(0, Y) LinesInfo.Add(CLineInfo(), Y) LinesInfo[Y].Modified = True StartBefore() $cBookmark = InsertCollection($cBookmark, Y) $cBreakpoint = InsertCollection($cBreakpoint, Y) End ' void GDocument::insertLine(int y) ' { ' lines.insert(y, new GLine()); ' modifyLine(lines.at(y), y); ' FOR_EACH_VIEW(v) { v->lineInserted(y); } ' } Private Sub ClearHighlight(Y As Integer) SetInfo(Y).ClearHighlight() $iFirstInvalidHighlight = Min($iFirstInvalidHighlight, Y) 'Debug "valid "; $iFirstInvalidHighlight End Public Sub SetLine(Y As Integer, sLine As String, Optional bNoRefresh As Boolean) Dim hView As TextEditor If Info(Y).Colors Then ClearHighlight(Y) If sLine = Lines[Y] Then Return Lines[Y] = sLine LineLength[Y] = String.Len(sLine) SetInfo(Y).Modified = True For Each hView In GetAllViews() hView._ClearCachePos(Y) hView._UpdateLineHeight(Y) hView._RaiseChange Next If Not bNoRefresh Then Refresh(Y) End Public Sub Insert(sText As String, X As Integer, Y As Integer) Dim iLen As Integer Dim sRest As String Dim aText As String[] Dim I, N As Integer Dim sLine As String Dim hView As TextEditor Dim XO, YO As Integer Dim bHighlight As Boolean Dim YA As Integer Dim XA As Integer If Not sText Then Return 'Debug X;; Y;; Quote(sText);; System.Backtrace.Join(" ") XO = X YO = Y ' While Y >= Lines.Count ' InsertLine(Lines.Count) ' Inc N ' Wend iLen = LineLength[Y] If X > iLen Then SetLine(Y, Lines[Y] & Space$(X - iLen), True) sRest = String.Mid$(Lines[Y], X + 1) aText = Split(sText, "\n") N = aText.Max If N > 0 Then For Each hView In GetAllViews() hView._BeforeInsert(YO, N) Next Endif For I = 0 To aText.Max - 1 SetLine(Y, String.Left(Lines[Y], X) & aText[I], True) X = 0 Inc Y InsertLine(Y) bHighlight = True Next sLine = String.Left(Lines[Y], X) & aText[aText.Max] XA = String.Len(sLine) YA = Y SetLine(Y, sLine & sRest, True) XAfter = XA YAfter = YA If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.INSERT, sText, XO, YO, XA, YA, EndBefore())) Endif For Each hView In GetAllViews() If N > 0 Then hView._ClearCachePos hView._RaiseChange hView.Refresh Else hView._RefreshLine(YO) Endif hView._AfterInsert(YO, YAfter, N) Next If bHighlight Then ClearHighlight(YO) 'HighlightFrom(YO) XAfter = XA YAfter = YA End Public Sub Remove(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer, Optional bRight As Boolean) Dim sText As String Dim hView As TextEditor Dim bHighlight As Boolean sText = GetText(X1, Y1, X2, Y2) If Y1 > Y2 Then Swap X1, X2 Swap Y1, Y2 Endif If Y1 = Y2 Then If X1 > X2 Then Swap X1, X2 Endif If X2 > X1 And If X1 < LineLength[Y1] Then SetLine(Y1, String.Left(Lines[Y1], X1) & String.Mid$(Lines[Y1], X2 + 1)) Endif Else If Y1 < Y2 Then bHighlight = True SetLine(Y1, String.Left(Lines[Y1], X1) & String.Mid$(Lines[Y2], X2 + 1), True) RemoveLines(Y1 + 1, Y2 - Y1) RaiseChange Refresh Endif XAfter = X1 YAfter = Y1 If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.DELETE, sText, X1, Y1, X2, Y2, EndBefore(), bRight)) Endif For Each hView In GetAllViews() hView._AfterRemove(Y1, Y2) If Y2 > Y1 Then hView._ClearCachePos Next If bHighlight Then ClearHighlight(Y1) XAfter = X1 YAfter = Y1 Endif End Public Sub Info(Y As Integer) As CLineInfo Dim hInfo As CLineInfo hInfo = LinesInfo[Y] If Not hInfo Then hInfo = $hDefaultInfo Endif Return hInfo End Public Sub SetInfo(Y As Integer) As CLineInfo Dim hInfo As CLineInfo hInfo = LinesInfo[Y] If Not hInfo Then hInfo = CLineInfo() LinesInfo[Y] = hInfo Endif Return hInfo End Public Sub GetText(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As String Dim sText As String If Y1 > Y2 Or If Y1 = Y2 And X1 > X2 Then Swap X1, X2 Swap Y1, Y2 Endif If Y1 = Y2 Then Return String.Mid$(Lines[Y1], X1 + 1, X2 - X1) sText = String.Mid$(Lines[Y1], X1 + 1) & "\n" If (Y2 - Y1 - 1) > 0 Then sText &= Lines.Copy(Y1 + 1, Y2 - Y1 - 1).Join("\n") & "\n" sText &= String.Left(Lines[Y2], X2) Return sText End Private Sub AddUndo(hCmd As CCommand) Dim hLast As CCommand Dim hPrevious As CCommand If $iNoUndo Then Return 'hCmd.Print("AddUndo: ") If hCmd.Type = CCommand.END And If $aUndo.Count And If $aUndo[$aUndo.Max].Type = CCommand.BEGIN Then $aUndo.Pop ' Else If hCmd.Type = CCommand.END And If $aUndo.Count >= 2 And If $aUndo[$aUndo.Max - 1].Type = CCommand.BEGIN Then ' $aUndo.Remove($aUndo.Max - 1) Else $aUndo.Add(hCmd) Endif $aRedo.Clear If $aUndo.Count >= 2 Then hLast = $aUndo.Last hPrevious = $aUndo[$aUndo.Max - 1] If hLast.Type = hPrevious.Type Then If hLast.Length = 1 And If hLast.Text <> "\n" And If hPrevious.Text <> "\n" And If hLast.Y = hPrevious.Y Then If hLast.Type = CCommand.INSERT Then If hLast.XA = hPrevious.X Then hPrevious.Text = hLast.Text & hPrevious.Text hPrevious.X = hLast.X $aUndo.Pop Else If hLast.X = hPrevious.XA Then hPrevious.Text &= hLast.Text hPrevious.XA = hLast.XA $aUndo.Pop Endif Else If hLast.Type = CCommand.DELETE Then If hPrevious.X = hLast.XA Then hPrevious.Text = hLast.Text & hPrevious.Text hPrevious.X = hLast.X $aUndo.Pop Else If hPrevious.X = hLast.X Then Inc hPrevious.XA hPrevious.Text &= hLast.Text $aUndo.Pop Endif Endif Endif Endif Endif End Public Sub Undo() Dim hCmd As CCommand Dim L As Integer Dim bOverwrite As Boolean Dim hCommandBefore As CCommandBefore If $aUndo.Count = 0 Then Return DisableUndo DisableHighlight bOverwrite = Me.Current.Overwrite Me.Current.Overwrite = False Do Repeat hCmd = $aUndo.Pop() 'Print "Undo: "; 'hCmd.Print With hCmd Select Case .Type Case CCommand.BEGIN .MoveCursor(Me) Dec L Case CCommand.END Inc L Case CCommand.INSERT Me.Current.Remove(.X, .Y, .XA, .YA) Case CCommand.DELETE Me.Current.Goto(.X, .Y) Me.Current.Insert(.Text) If .SX <> .X Or If .SY <> .Y Then Me.Current.Goto(.SX, .SY) Me.Current.Goto(.XA, .YA, True) Else If .Right Then Me.Current.Goto(.X, .Y) Endif End Select hCommandBefore = .State If hCommandBefore Then With hCommandBefore If .BreakpointBefore Then $cBreakpoint = .BreakpointBefore.Copy() If .BookmarkBefore Then $cBookmark = .BookmarkBefore.Copy() If .BookmarkBefore Or If .BreakpointBefore Then Refresh RaiseChange Endif End With Endif End With $aRedo.Add(hCmd) Until L = 0 If $aUndo.Count And If $aUndo.Last.Type = CCommand.LINK Then $aRedo.Add($aUndo.Pop()) Else Break Endif Loop Me.Current.Overwrite = bOverwrite EnableUndo EnableHighlight End Public Sub Redo() Dim hCmd As CCommand Dim L As Integer Dim bOverwrite As Boolean Dim hCommandBefore As CCommandBefore If $aRedo.Count = 0 Then Return DisableUndo DisableHighlight bOverwrite = Me.Current.Overwrite Me.Current.Overwrite = False Do Repeat hCmd = $aRedo.Pop() 'Print "Redo: "; 'hCmd.Print With hCmd Select Case .Type Case CCommand.BEGIN Inc L Case CCommand.END .MoveCursor(Me) Dec L Case CCommand.DELETE ' If .SX <> .X Or If .SY <> .Y Then ' Me.Current.Goto(.SX, .SY) ' Me.Current.Goto(.X, .Y, True) ' Else ' Me.Current.Goto(.X, .Y) ' Endif Me.Current.Remove(.X, .Y, .XA, .YA) Case CCommand.INSERT .MoveCursor(Me) Me.Current.Insert(.Text) End Select hCommandBefore = .State If hCommandBefore Then With hCommandBefore If .BreakpointAfter Then $cBreakpoint = .BreakpointAfter.Copy() If .BookmarkAfter Then $cBookmark = .BookmarkAfter.Copy() If .BookmarkAfter Or If .BreakpointAfter Then Refresh RaiseChange Endif End With Endif End With $aUndo.Add(hCmd) Until L = 0 If $aRedo.Count And If $aRedo.Last.Type = CCommand.LINK Then $aUndo.Add($aRedo.Pop()) Else Break Endif Loop Me.Current.Overwrite = bOverwrite EnableUndo EnableHighlight End Private Function Highlight_Read() As String If $hHighlight Then Return $hHighlight.Name End Private Sub Highlight_Write(Value As String) Dim Y As Integer Value = LCase(Value) If Value And If Value <> "none" And If Value <> "custom" Then If Value == "c++" Then Value = "cplusplus" $hHighlight = TextHighlighter[Value] Else $hHighlight = Null Endif For Y = 0 To LinesInfo.Max If LinesInfo[Y] Then LinesInfo[Y].ClearHighlight() Next $iFirstInvalidHighlight = 0 'Debug "valid "; $iFirstInvalidHighlight End Public Sub HasHighlight() As Boolean If $hHighlight Then Return True If Object.CanRaise(Me.Current, "Highlight") Then Return True End Private Sub HighlightLine(Y As Integer) As Boolean Dim aHighlight As Byte[] Dim PY As Integer If Info(Y).Colors Then Return If Y = 0 Then TextHighlighter.State = Highlight.Normal TextHighlighter.Tag = 0 TextHighlighter.Alternate = False Else PY = Y - 1 With Info(PY) TextHighlighter.State = .State TextHighlighter.Tag = .Tag TextHighlighter.Alternate = .Alternate End With Endif TextHighlighter.Limit = False With SetInfo(Y) aHighlight = New Byte[] .Colors = aHighlight TextHighlighter._Highlight = aHighlight TextHighlighter.TextAfter = "" TextHighlighter.Line = Y 'Debug "Before: State = "; .State;; "Tag = "; .Tag;; "Alternate = "; .Alternate;; "Limit = "; .Limit '$hHighlight.Run(Lines[Y]) If $bCustomHighlight Then Current_Read()._RaiseHighlight(Lines[Y]) Else $hHighlight.Run(Lines[Y]) If Y = 0 Then TextHighlighter.Limit = True Endif If TextHighlighter.TextAfter And If Lines[Y] <> TextHighlighter.TextAfter Then If Not $bRewrite Then $bRewrite = True $bEndOfLine = Me.Current.Column >= LineLength[Me.Current.Line] Me.Current.SaveCursor Begin(True) Endif Me.Current.Goto(0, Y) Me.Current.Remove(0, Y, LineLength[Y], Y) Me.Current.Insert(TextHighlighter.TextAfter) .Colors = aHighlight Endif If .Alternate <> TextHighlighter.Alternate Or If .State <> TextHighlighter.State Or If .Tag <> TextHighlighter.Tag Or If .Limit <> TextHighlighter.Limit Or If .Comment <> TextHighlighter.Comment Then .Alternate = TextHighlighter.Alternate .State = TextHighlighter.State .Tag = TextHighlighter.Tag .Limit = TextHighlighter.Limit .Comment = TextHighlighter.Comment 'Debug "Update: State = "; .State;; "Tag = "; .Tag;; "Alternate = "; .Alternate;; "Limit = "; .Limit If Y < Lines.Max Then SetInfo(Y + 1).ClearHighlight() Endif End With Return True End Private Sub StartHighlight() As Boolean Dim hView As TextEditor $bRewrite = False $bEndOfLine = False $bCustomHighlight = False $iDoNotHighlightLine = -1 $bHighlighting = True If Not $hHighlight Then If Object.CanRaise(Me.Current, "Highlight") Then $bCustomHighlight = True Else Return Endif Endif TextHighlighter.CanRewrite = _Mode.Name If Not $bHighlightAll And If TextHighlighter.CanRewrite Then For Each hView In GetAllViews() If Not hView.ReadOnly And If hView.HasFocus Then $iDoNotHighlightLine = hView.Line Break Endif Next Endif Return True End Private Sub EndHighlight() If $bRewrite Then Me.Current.RestoreCursor If $bEndOfLine Then Me.Current.Goto(-1, Me.Current.Line) End() Endif $bHighlighting = False End Public Sub HighlightUntil(Y As Integer) Dim bRefresh As Boolean Dim L As Integer Dim iNextFirst As Integer If $bHighlighting Then Return Y = Min(Y, Lines.Max) If $iNoHighlight Then $cHighlightLater[Y] = True Return Endif If $iFirstInvalidHighlight > Y Then Return If Not StartHighlight() Then Return iNextFirst = -1 For L = $iFirstInvalidHighlight To Y If L = $iDoNotHighlightLine And If Info(L).Modified Then If iNextFirst < 0 Then iNextFirst = L Continue Endif If HighlightLine(L) Then bRefresh = True Next If iNextFirst < 0 Then iNextFirst = L EndHighlight() If $iFirstInvalidHighlight <> iNextFirst Then $iFirstInvalidHighlight = iNextFirst 'Debug "valid "; $iFirstInvalidHighlight Endif If bRefresh Then Refresh End Public Sub HighlightAll() $bHighlightAll = True HighlightUntil(Lines.Max) $bHighlightAll = False End Private Function Length_Read() As Integer Dim Y As Integer Dim L As Integer For Y = 0 To Lines.Max L += LineLength[Y] Next L += Lines.Max * Len($sEndOfLine) Return L End Private Function Keywords_Read() As String[] Try Return $hHighlight.GetKeywords() End Public Sub HasBreakpoint(iLine As Integer) As Boolean Return $cBreakpoint.Exist(iLine) End Public Sub IsBreakpointDisabled(iLine As Integer) As Boolean If $cBreakpoint.Exist(iLine) Then Return Not CBool($cBreakpoint[iLine]) End Public Sub SetBreakpoint(iLine As Integer, bOn As Boolean, Optional bDisable As Boolean) If bOn Then If $cBreakpoint.Exist(iLine) And If $cBreakpoint[iLine] = Not bDisable Then Return StartBefore $cBreakpoint[iLine] = Not bDisable Else If Not $cBreakpoint.Exist(iLine) Then Return StartBefore $cBreakpoint.Remove(iLine) Endif If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.CHANGE,,,,,, EndBefore())) Endif RaiseChange End Private Function Breakpoints_Read() As Integer[] Dim aRes As New Integer[] For Each $cBreakpoint aRes.Add(CInt($cBreakpoint.Key)) Next Return aRes End Private Sub Breakpoints_Write(Value As Integer[]) Dim Y As Integer If $iBegin Then StartBefore $cBreakpoint.Clear If Value Then For Each Y In Value $cBreakpoint[Y] = True Next Endif If $iBegin And If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.CHANGE,,,,,, EndBefore())) Endif Refresh End Public Sub HasBookmark(iLine As Integer) As Boolean Return $cBookmark.Exist(iLine) End Public Sub SetBookmark(iLine As Integer, bOn As Boolean) If bOn Then If $cBookmark.Exist(iLine) Then Return StartBefore $cBookmark[iLine] = True Else If Not $cBookmark.Exist(iLine) Then Return StartBefore $cBookmark.Remove(iLine) Endif If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.CHANGE,,,,,, EndBefore())) Endif RaiseChange End Private Function Bookmarks_Read() As Integer[] Dim aRes As New Integer[] For Each $cBookmark aRes.Add(CInt($cBookmark.Key)) Next aRes.Sort Return aRes End Private Sub Bookmarks_Write(Value As Integer[]) Dim Y As Integer If $iBegin Then StartBefore $cBookmark.Clear If Value Then For Each Y In Value $cBookmark[Y] = True Next Endif If $iBegin And If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.CHANGE,,,,,, EndBefore())) Endif Refresh End Private Function EndOfLine_Read() As Integer Return $iEndOfLine End Private Sub EndOfLine_Write(Value As Integer) Select Case Value Case gb.Unix $sEndOfLine = "\n" Case gb.Windows $sEndOfLine = "\r" Case gb.Mac $sEndOfLine = "\r\n" Case Else Return End Select $iEndOfLine = Value End Private Sub IsWordChar(sCar As String) As Boolean If IsSpace(sCar) Then Return If IsPunct(sCar) And If InStr("_$", sCar) = 0 Then Return If String.Code(sCar) = 160 Then Return Return True End Public Sub WordLeft(X As Integer, Y As Integer, Optional bWord As Boolean) As Integer Dim sLine As String = Lines[Y] Dim X2 As Integer Dim sCar As String X2 = X If Not bWord Then While X2 > 0 If Not IsSpace(String.Mid$(sLine, X2, 1)) Then Break Dec X2 Wend Endif If X2 > 0 Then If IsWordChar(String.Mid$(sLine, X2, 1)) Then Do Dec X2 If X2 <= 0 Or If Not IsWordChar(String.Mid$(sLine, X2, 1)) Then Break Loop Else If Not bWord Then Do Dec X2 If X2 <= 0 Then Break sCar = String.Mid$(sLine, X2, 1) If IsWordChar(sCar) Or If IsSpace(sCar) Then Break Loop Endif Endif Return X2 End ' int GDocument::wordLeft(int y, int x, bool word) ' { ' int xw = x; ' GString s = lines.at(y)->s; ' ' if (!word) ' { ' while (xw > 0 && s.isSpace(xw - 1)) ' xw--; ' } ' ' if (xw > 0) ' { ' if (s.isWordChar(xw - 1)) ' { ' for(;;) ' { ' xw--; ' if (xw <= 0 || !s.isWordChar(xw - 1)) ' break; ' } ' } ' else if (!word) ' { ' for(;;) ' { ' xw--; ' if (xw <= 0 || s.isWordChar(xw - 1) || s.isSpace(xw - 1)) ' break; ' } ' } ' } ' ' return xw; ' } ' Public Sub WordRight(X As Integer, Y As Integer, Optional bWord As Boolean) As Integer Dim sLine As String = Lines[Y] Dim iLen As Integer = LineLength[Y] Dim X2 As Integer Dim sCar As String X2 = X If X2 < iLen Then If IsWordChar(String.Mid$(sLine, X2 + 1, 1)) Then Do Inc X2 If X2 >= iLen Or If Not IsWordChar(String.Mid$(sLine, X2 + 1, 1)) Then Break Loop Else If Not bWord Then Do Inc X2 If X2 >= iLen Then Break sCar = String.Mid$(sLine, X2 + 1, 1) If IsWordChar(sCar) Or If IsSpace(sCar) Then Break Loop Endif If Not bWord Then While X2 < iLen If Not IsSpace(String.Mid$(sLine, X2 + 1, 1)) Then Break Inc X2 Wend Endif Endif Return X2 End ' int GDocument::wordRight(int y, int x, bool word) ' { ' int xw = x; ' GString s = lines.at(y)->s; ' int len = s.length(); ' ' if (xw < len) ' { ' if (s.isWordChar(xw)) ' { ' for(;;) ' { ' xw++; ' if (xw >= len || !s.isWordChar(xw)) ' break; ' } ' } ' else if (!word) ' { ' for(;;) ' { ' xw++; ' if (xw >= len || s.isWordChar(xw) || s.isSpace(xw)) ' break; ' } ' } ' } ' ' if (!word) ' { ' while (xw < len && s.isSpace(xw)) ' xw++; ' } ' ' return xw; ' } ' Public Sub Reset(Optional bSave As Boolean) Dim I As Integer For I = 0 To Lines.Max If Info(I).Modified Then With SetInfo(I) .Modified = False .Saved = bSave End With Endif Next Refresh End Public Sub DisableHighlight() Inc $iNoHighlight If $iNoHighlight = 1 Then $cHighlightLater = New Collection End Public Sub EnableHighlight() Dim cHighlightLater As Collection Dec $iNoHighlight If $iNoHighlight = 0 Then cHighlightLater = $cHighlightLater For Each cHighlightLater 'HighlightUntil(cHighlightLater.Key) Next $cHighlightLater = Null Endif End Public Sub DisableUndo() Inc $iNoUndo End Public Sub EnableUndo() Dec $iNoUndo CheckUnlock End Public Sub IsLocked() As Boolean Return $iBegin + $iNoUndo End Private Sub CheckUnlock() Dim hView As TextEditor If IsLocked() Then Return For Each hView In GetAllViews() hView._RaiseCursor Next End Public Sub HasLimit(Y As Integer) As Boolean Dim hInfo As CLineInfo Dim YS As Integer If Y = 0 Then Return True If Not Trim(Lines[Y]) Then Return False hInfo = Info(Y) If hInfo.Comment Then YS = Y Do Dec Y If Y < 0 Then Break hInfo = Info(Y) If hInfo.Comment Or If hInfo.Limit Then Return False If Trim(Lines[Y]) Then Break Loop Y = YS Do Inc Y If Y >= Lines.Count Then Return False If Trim(Lines[Y]) Then hInfo = Info(Y) If Not hInfo.Comment Then Return hInfo.Limit Endif Loop Else If Not hInfo.Limit Then Return Do Dec Y If Y <= 0 Then Return True hInfo = Info(Y) If hInfo.Comment Then Return False If hInfo.Limit Then Return True If Trim(Lines[Y]) Then Return True Loop Endif End Private Function Mode_Read() As String Return $sMode End Private Sub Mode_Write(Value As String) Value = LCase(Value) If Value And If Value <> "none" Then If Value == "c++" Then Value = "cplusplus" _Mode = TextEditorMode[Value] Else _Mode = New TextEditorMode Endif Highlight_Write(Value) _Mode.CloseBraces = $bCloseBraces _Mode.CloseStrings = $bCloseStrings $sMode = Value End Private Function CloseBraces_Read() As Boolean Return $bCloseBraces End Private Sub CloseBraces_Write(Value As Boolean) $bCloseBraces = Value _Mode.CloseBraces = Value End Public Sub GetIndentText(iStart As Integer, iEnd As Integer) As String Dim iLine As Integer Dim sLine As String Dim sIndent As String Dim sResult As String For iLine = iStart To iEnd - 1 sLine = Lines[iLine] If LTrim(sLine) Then sIndent = Left(sLine, Len(sLine) - Len(LTrim(sLine))) If Not sResult Then sResult = sIndent Else If sIndent Begins sResult Then Else sResult = sIndent Endif If Not sResult Then Break Endif Next Return sResult End Private Function DisabledBreakpoints_Read() As Integer[] Dim aRes As New Integer[] Dim bOn As Boolean For Each bOn In $cBreakpoint If Not bOn Then aRes.Add(CInt($cBreakpoint.Key)) Next Return aRes End Private Sub DisabledBreakpoints_Write(Value As Integer[]) Dim Y As Integer If $iBegin Then StartBefore If Value Then For Each Y In Value If $cBreakpoint.Exist(Y) Then $cBreakpoint[Y] = False Next Endif If $iBegin And If $iNoUndo = 0 Then AddUndo(CCommand(Me, CCommand.CHANGE,,,,,, EndBefore())) Endif Refresh End Private Sub RaiseChange() Dim hView As TextEditor For Each hView In GetAllViews() hView._RaiseChange Next End Private Function CloseStrings_Read() As Boolean Return $bCloseStrings End Private Sub CloseStrings_Write(Value As Boolean) $bCloseStrings = Value _Mode.CloseStrings = Value End Public Sub IsDiffAdded(iRow As Integer) As Boolean Dim iMin As Integer Dim iMax As Integer Dim I As Integer Dim R As Integer Dim L As Integer If Not DiffAdded Then Return iMin = 0 iMax = DiffAdded.Count \ 2 While iMax > iMin I = (iMin + iMax) \ 2 R = DiffAdded[I * 2] L = DiffAdded[I * 2 + 1] If iRow < R Then iMax = I Else If iRow >= (R + L) Then iMin = I + 1 Else Return True Endif Wend End Public Sub IsDiffRemoved(iRow As Integer) As Boolean If Not DiffRemoved Then Return Return DiffRemoved.Exist(iRow) End Public Sub EnterDiffMode(Added As Integer[], Removed As Collection) Dim aText As String[] Dim hView As TextEditor If DiffRemoved Then LeaveDiffMode If Added Then DiffAdded = Added.Copy() DiffRemoved = New Collection If Removed Then For Each aText In Removed DiffRemoved[CInt(Removed.Key) - 1] = aText Next Endif For Each hView In GetAllViews() hView._EnterDiffMode() Next End Public Sub LeaveDiffMode() Dim hView As TextEditor DiffAdded = Null DiffRemoved = Null For Each hView In GetAllViews() hView._LeaveDiffMode() Next End Public Sub FindPreviousDiff(Y As Integer) As Integer If Me.DiffMode Then If IsDiffAdded(Y) Then While Y > 0 Dec Y If DiffRemoved[Y] Then Return Y If Not IsDiffAdded(Y) Then Break Wend Endif While Y > 0 Dec Y If DiffRemoved[Y] Then Return Y If IsDiffAdded(Y) Then While Y > 0 Dec Y If Not IsDiffAdded(Y) Then Return Y + 1 Wend Return Y Endif Wend If DiffRemoved[-1] Then Return 0 Endif Return -1 End Public Sub FindNextDiff(Y As Integer) As Integer If Me.DiffMode Then If IsDiffAdded(Y) Then While Y < Lines.Max Inc Y If DiffRemoved[Y] Then Return Y If Not IsDiffAdded(Y) Then Break Wend Endif While Y < Lines.Max Inc Y If DiffRemoved[Y] Then Return Y If IsDiffAdded(Y) Then While Y < Lines.Max Inc Y If Not IsDiffAdded(Y) Then Return Y - 1 Wend Return Y Endif Wend Endif Return -1 End Private Function DiffMode_Read() As Boolean Return DiffRemoved End gambas-3.16.3/comp/src/gb.form.editor/.src/CLineInfo.class000066400000000000000000000027571411575327000231240ustar00rootroot00000000000000' Gambas class file Property Modified As Boolean Property Saved As Boolean Property Alternate As Boolean Property Limit As Boolean Property Comment As Boolean Private Enum FLAG_MODIFIED, FLAG_SAVED, FLAG_ALTERNATE, FLAG_LIMIT, FLAG_COMMENT Public Colors As Byte[] Public Tag As Short Public State As Byte '= Highlight.Normal Private $iFlag As Byte Static Public Sub _call() As CLineInfo Dim hInfo As CLineInfo hInfo = New CLineInfo Return hInfo End Private Sub SetFlag(iFlag As Integer, Value As Boolean) If Value Then $iFlag = BSet($iFlag, iFlag) Else $iFlag = BClr($iFlag, iFlag) Endif End Private Function Modified_Read() As Boolean Return BTst($iFlag, FLAG_MODIFIED) End Private Sub Modified_Write(Value As Boolean) SetFlag(FLAG_MODIFIED, Value) End Private Function Saved_Read() As Boolean Return BTst($iFlag, FLAG_SAVED) End Private Sub Saved_Write(Value As Boolean) SetFlag(FLAG_SAVED, Value) End Private Function Alternate_Read() As Boolean Return BTst($iFlag, FLAG_ALTERNATE) End Private Sub Alternate_Write(Value As Boolean) SetFlag(FLAG_ALTERNATE, Value) End Public Sub ClearHighlight() Colors = Null End Private Function Limit_Read() As Boolean Return BTst($iFlag, FLAG_LIMIT) End Private Sub Limit_Write(Value As Boolean) SetFlag(FLAG_LIMIT, Value) End Private Function Comment_Read() As Boolean Return BTst($iFlag, FLAG_COMMENT) End Private Sub Comment_Write(Value As Boolean) SetFlag(FLAG_COMMENT, Value) End gambas-3.16.3/comp/src/gb.form.editor/.src/FFind.class000066400000000000000000000031301411575327000222660ustar00rootroot00000000000000' Gambas class file Private $hTimer As Timer Private Sub GetEditor() As TextEditor Return Me.Parent.Parent End Public Sub Form_KeyPress() Select Case Key.Code Case Key.Escape btnClose_Click Stop Event ' Case Key.PageDown, Key.PageUp ' If Key.Normal Then GetEditor().View_KeyPress Case Key.Home, Key.End If Key.Control And If Not Key.Shift Then GetEditor().View_KeyPress Case Key.Enter, Key.Return If Key.Shift Then btnPrevious_Click Else btnNext_Click Endif Stop Event Case Key.F3 If Key.Shift Then btnPrevious_Click Else btnNext_Click Endif Stop Event End Select End Public Sub Form_GotFocus() txtFind.SetFocus txtFind_Change End Public Sub btnClose_Click() Dim hEditor As TextEditor = GetEditor() Me.Hide hEditor.HighlightString("") hEditor.SetFocus End Public Sub txtFind_Change() GetEditor()._Search(txtFind.Text) End Public Sub btnNext_Click() If GetEditor()._Search(txtFind.Text, True) Then Blink End Public Sub btnPrevious_Click() If GetEditor()._Search(txtFind.Text, False) Then Blink End Private Sub Blink() panFind.Background = Color.LightBackground txtFind.Background = Color.LightBackground If $hTimer Then $hTimer.Restart() Else $hTimer = New Timer(100) As "Blink" Endif End Public Sub Blink_Timer() panFind.Background = Color.TextBackground txtFind.Background = Color.Default $hTimer = Null End Public Sub btnClear_Click() txtFind.Clear End gambas-3.16.3/comp/src/gb.form.editor/.src/FFind.form000066400000000000000000000016261411575327000221340ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,62,9) Arrangement = Arrange.Vertical { Separator1 Separator MoveScaled(8,1,16,0) } { panFind HBox MoveScaled(1,2,57,5) Background = Color.TextBackground Expand = True { PictureBox1 PictureBox MoveScaled(1,1,3,3) Picture = Picture["icon:/small/find"] Alignment = Align.Center } { txtFind TextBox MoveScaled(6,0,25,4) Expand = True Border = False } { btnClear ToolButton MoveScaled(33,1,3,3) Picture = Picture["icon:/small/clear"] } { btnNext ToolButton MoveScaled(38,1,3,3) Picture = Picture["icon:/small/down"] } { btnPrevious ToolButton MoveScaled(43,1,3,3) Picture = Picture["icon:/small/up"] } { btnClose ToolButton MoveScaled(52,0,4,4) Visible = False Picture = Picture["icon:/small/close"] } } } gambas-3.16.3/comp/src/gb.form.editor/.src/Helper.module000066400000000000000000000025001411575327000226770ustar00rootroot00000000000000' Gambas module file Public Sub ReadNumber(sText As String, iPos As Integer) As Integer sText = String.Mid$(sText, iPos) iPos = 1 If IsDigit(Left(sText)) Then Inc iPos Else If InStr("+-", Left(sText)) And If IsDigit(Mid$(sText, 2, 1)) Then iPos += 2 Else Return 0 Endif While IsDigit(Mid$(sText, iPos, 1)) Inc iPos Wend If Mid$(sText, iPos, 1) = "." Then Inc iPos Else Return iPos - 1 Endif While IsDigit(Mid$(sText, iPos, 1)) Inc iPos Wend If InStr("eE", Mid$(sText, iPos, 1)) Then Inc iPos Else Return iPos - 1 Endif If InStr("+-", Mid$(sText, iPos, 1)) And If IsDigit(Mid$(sText, iPos + 1, 1)) Then iPos += 2 Else If IsDigit(Mid$(sText, iPos, 1)) Then Inc iPos Else Return iPos - 1 Endif While IsDigit(Mid$(sText, iPos, 1)) Inc iPos Wend Return iPos - 1 End Public Sub ReadIdentifier(sText As String, iPos As Integer, sIdentCar As String) As Integer sText = String.Mid$(sText, iPos) iPos = 1 If InStr(sIdentCar, Left(sText)) Then While InStr(sIdentCar, Mid$(sText, iPos, 1)) > 0 And Asc(Mid$(sText, iPos, 1)) > 32 Inc iPos Wend Else While InStr(sIdentCar, Mid$(sText, iPos, 1)) = 0 And Asc(Mid$(sText, iPos, 1)) > 32 Inc iPos Wend Endif Return iPos - 1 End gambas-3.16.3/comp/src/gb.form.editor/.src/Main.module000066400000000000000000000003341411575327000223470ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hFile As File Dim I As Integer hFile = Open "~/test.txt" For Create For I = 1 To 40000 Print #hFile, String$(80, CStr(I) & " ") Next hFile.Close End gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditor.class000066400000000000000000004224031411575327000234030ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border=True,ShowPreview,ScrollBar{Scroll.*}=Both,Highlight{None;Custom;C;CPlusPlus;CSS;Diff;Gambas;HTML;JavaScript;SQL;WebPage;Sh}=None,Mode{None;Custom;C;CPlusPlus;CSS;Diff;Gambas;HTML;JavaScript;SQL;WebPage;Sh}=None,ReadOnly,TabSize{Range:2;64}=2,TabIndent,Wrap,ShowPosition,ShowLimit,ShowCurrent,ShowLineNumber,ShowModified,ShowBraces,ShowIcon,ShowExpand,ShowCursor=True,ShowSpaces,ShowIndent,CloseBraces,CloseStrings" Public Const _DrawWith As String = "-" Public Const _DefaultEvent As String = "Change" Public Const _Similar As String = "TextArea" Public Const _Group As String = "View" '' This event is raised when the cursor has moved. Event Cursor '' This event is raised when the editor has scrolled. Event Scroll '' This event is raised when the editor contents has changed. Event Change '' This event is raised when the user has clicked twice inside the margin. '' '' The cursor has been moved to the clicked line before raising the event. Event Margin '' This event is raised when a text line must be highlighted. '' '' - ~Text~ if the text to highlight. '' '' This event is only raised when the [../highlight] property is set to `"custom"`, `"none"` or a null string. Event Highlight(Text As String) '' Return or set the editor contents. Property Text As String '' Return the number of lines. Property Read Count As Integer '' Return the number of lines minus one. Property Read Max As Integer '' Return the current line position, starting from zero. Property Read Line As Integer '' Return the current column position, starting from zero. Property Read Column As Integer '' Return the line position of the selection mark. '' '' If no text is selected, the same value as [../line] is returned. Property Read SelectionLine As Integer '' Return the column position of the selection mark. '' '' If no text is selected, the same value as [../column] is returned. Property Read SelectionColumn As Integer '' Return the old line position before a cursor move. '' '' This property is only meaningful during a [../.change] event handler. Property Read LastLine As Integer '' Return the old column position before a cursor move. '' '' This property is only meaningful during a [../.change] event handler. Property Read LastColumn As Integer '' Return if some text is selected. Property Read Selected As Boolean '' Return the selected text if any. Property Read SelectedText As String '' Return or set if the editor is in read-only mode. Property ReadOnly As Boolean '' Return or set if the editor right scrollbar is replaced by a preview. Property ShowPreview As Boolean '' Return or set the editor mode. '' '' The editor mode tells how the text is highlighted, and how the editor behaves. '' '' The property can take the same values as the [../highlight] property. '' '' If the editor mode is 'NULL', then there is no custom editor behaviour, and the text is highlighted only if the [../highlight] property is set. Property Mode As String '' Return or set the highlighting mode. '' '' It can take one of the following values: `"c"`, `"c++"` or `"cplusplus"`, `"css"`, `"custom"`, `"diff"`, `"gambas"`, `"html"`, `"none"`, `"javascript"`, `"sh"`, `"sql"`, `"webpage"`. '' '' If the highlighting mode is set to `"custom"`, `"none"` or a null string, then the [../.highlight] event will be raised each time a line must be highlighted. '' If you do not implement the handler for that event, nothing will be highlighted. '' '' The property is 'NULL' by default. Property Highlight As String '' Return or set the line number offset. '' '' The value of this property will be added to actual line number for displaying. Property LineNumberOffset As Integer '' Return or set the tab size. '' '' It is the number of spaces used for indenting. Property TabSize As Integer '' Return or set if the ident is made of tab characters. '' '' If this property is 'TRUE', each indentation uses one `"\t"` character. '' If this property is 'FALSE', each indentation uses the number of space characters defined by the [../tabsize] property. Property TabIndent As Boolean '' Return the length of the editor contents. '' '' It is the number of UTF-8 characters, not the number of bytes. Property Read Length As Integer '' Return or set if a border must be drawn around the editor. Property Border As Boolean '' --> /comp/gb.qt4/scrollview/scrollbar Property ScrollBar As Integer '' Return or set if the editor is in overwrite mode. Property Overwrite As Boolean '' Return the height of a line in pixels. Property Read LineHeight As Integer '' Return the current line as a virtual object. Property Read Current As _TextEditor_Line '' --> /comp/gb.qt4/control/font Property Font As Font '' Return or set the debugger stop line. Property StopLine As Integer '' Return or set the newline separator used by the editor. '' '' The possible values are: '' * [gb.Unix] (../../gb/unix) for lines separated by '[/lang/chr]\(10)'. '' * [gb.Windows] (../../gb/windows) for lines separated by '[/lang/chr]\(13) & [/lang/chr]\(10)'. '' * [gb.Mac] (../../gb/mac) for lines separated by '[/lang/chr]\(13)'. Property EndOfLine As Integer '' Return or set the list of lines having a breakpoint Property Breakpoints As Integer[] '' Return or set the list of lines having a disabled breakpoint Property DisabledBreakpoints As Integer[] '' Return or set the list of lines having a bookmark Property Bookmarks As Integer[] '' Return a virtual object that allows to define the editor highlighting style Property Read Styles As _TextEditor_Styles '' Return or set the main view of a editor. '' '' This property allows different editors to share the same contents. '' '' - If this property is 'NULL' (the default), then the editor has its own contents. '' - Otherwise, the editor uses the contents of its view. Property View As TextEditor '' Return the language keywords associated with the editor mode, as defined by the [../mode] property. Property Read Keywords As String[] '' Return or set if the editor wraps its contents. Property Wrap As Boolean '' Return or set if the "diff mode" is activated. '' '' When the "diff mode" is activated, the editor becomes read-only, and displays each added or removed text defined '' by the [../enterdiffmode] method. Property Read DiffMode As Boolean '' --> /comp/gb.qt4/scrollview/scrollx Property ScrollX As Integer '' --> /comp/gb.qt4/scrollview/scrolly Property ScrollY As Integer '' --> /comp/gb.qt4/scrollview/scrollwidth Property Read ScrollWidth, ScrollW As Integer '' --> /comp/gb.qt4/scrollview/scrollheight Property Read ScrollHeight, ScrollH As Integer '' Return or set if the function limits are visible. Property ShowLimit As Boolean '' Return or set if the current line is highlighted. Property ShowCurrent As Boolean '' Return or set if the line numbers are displayed. Property ShowLineNumber As Boolean '' Return or set if the modified lines are highlighted in the margin. Property ShowModified As Boolean '' Return or set if the cursor current position is displayed. Property ShowPosition As Boolean '' Return or set if the breakpoint or bookmark icons are visible. Property ShowIcon As Boolean '' Return or set if matching braces are highlighted. Property ShowBraces As Boolean '' Return or set if the cursor is visible. Property ShowCursor As Boolean '' Return or set if the functions can be collapsed and expanded. Property ShowExpand As Boolean '' Return or set if trailing whitespaces are displayed as dots. Property ShowSpaces As Boolean '' Return or set if indentation is highlighted with vertical lines. Property ShowIndent As Boolean '' Return or set if braces are automatically closed. Property CloseBraces As Boolean '' Return or set if strings are automatically closed. Property CloseStrings As Boolean Private Const MATCH_STRING As String = "()[]{}" Static Private $cShortcut As Collection Static Private $bRemoteDisplayChecked As Boolean Static Private $bRemoteDisplay As Boolean Public _Views As TextEditor[] Private $hVPanel As Panel Private $hPanel As Panel Private $hView As ScrollArea Private $hSideBar As DrawingArea Private $hImageSideBar As Image Private $hLabelFrame As Panel Private $hLabel As Label Private $hFind As FFind Private $hDoc As CDocument Private $hRows As _TextEditor_Rows Private $hStyles As _TextEditor_Styles Private $bStyleChanged As Boolean Private $iLargestLine As Integer Private $iWidth As Integer Private $LH As Integer Private $BW As Integer ' bold width Private $MW As Integer Private $iWidthLineNumber As Integer Private $iWidthModified As Integer Private $iPosIcon As Integer Private $iTabSize As Integer = 2 Private $iTabWidth As Integer Private $fTabSymbolSize As Float Private $iSpaceWidth As Integer Private $bTabIndent As Boolean Private $X As Integer Private $X0 As Integer Private $Y As Integer Private $XY As Point Private $bShowCursor As Boolean Private $bHideCursor As Boolean Private $LX As Integer Private $LY As Integer Private $hTimerCursor As Timer Private $hTimerChange As Timer Private $hTimerEnsureVisible As Timer Private $SX As Integer Private $SY As Integer Private $SXY As Point Private $bMouseDown As Boolean Private $hTimerScroll As Timer Private $XM As Integer Private $YM As Integer = -1 Private $XMO As Integer Private $YMO As Integer Private $IY1 As Integer Private $IY2 As Integer Private $IP As Integer Private $bReadOnly As Boolean Private $bOverwrite As Boolean 'Private $bTerminal As Boolean Private $iBackground As Integer Private $iForeground As Integer Private $iSelectedBackground As Integer Private $iLimitColor As Integer Private $iIndentColor As Integer Private $iMatchColor As Integer Private $iCurrentColor As Integer Private $iLineNumberOffset As Integer Private $hTabImage As Image Private $hFont As Font 'Private $hFontBold As Font Private $iAscent As Integer Private $fCharWidth As Float Private $cCachePos As New Collection Private $cCacheView As New Collection Private $iStopLine As Integer = -1 Private $bShowLimit As Boolean Private $bShowCurrent As Boolean Private $bShowLineNumber As Boolean Private $bShowModified As Boolean Private $bShowPosition As Boolean Private $bShowIcon As Boolean Private $bShowBraces As Boolean Private $bShowExpand As Boolean Private $bShowSpaces As Boolean Private $bShowIndent As Boolean Private $bFirstFocus As Boolean Private $aFold As Integer[] Private $iSaveCursor As Integer Private $aSaveCursor As Integer[] Private $hFontNumber As Font Private $cLineLayout As Collection Private $hTimerHeight As Timer Private $bNoResizeContents As Boolean Static Private $cGlobalCacheText As New Collection Private $cCacheText As Collection Private $sCacheTextKey As String Private $cCacheLine As New Collection Private $iLastScrollX As Integer Private $hTimerCacheLine As Timer Private $iCacheLineH As Integer Private $bUpdateHeightAllowed As Boolean Private $bPrint As Boolean Private $sPrintBuffer As String Private $iMarginColor As Integer Private $hTimerSideBarMouse As Timer Private $hTimerSideBarRefresh As Timer Private $hRectSideBar As Rect Private $fBarLineHeight As Float Private $bShowPreview As Float Private $hSideBarViewer As TextEditor 'Private $hTimerSideBarViewer As Timer Private $iScrollBar As Integer Private $iMD As Integer Private $iMY As Integer = -1 Private $bSideBarLockViewer As Boolean Private $iSideBarWhere As Integer Private $iSideBarClick As Integer Private Enum SIDEBAR_NONE, SIDEBAR_VIEW, SIDEBAR_UP, SIDEBAR_DOWN Private $sHighlightString As String Private $iHighlightStringMode As Integer Private $iHighlightStringLen As Integer Private $bHighlightWordOnly As Boolean Private $bDiffReadOnly As Boolean Private $cDiffLayout As Collection Public _TopHeight As Integer Private $hMultiLineImage As Image '' Create a new TextEditor Public Sub _new() Dim sDisplay As String If Not $cShortcut Then $cShortcut = [ "CTRL+A": "SelectAll", "CTRL+C": "Copy", "CTRL+INSERT": "Copy", "CTRL+V": "Paste", "SHIFT+INSERT": "Paste", "CTRL+X": "Cut", "SHIFT+DELETE": "Cut", "CTRL+Y": "Redo", "CTRL+Z": "Undo", "CTRL+F": "Find"] Endif If Not $bRemoteDisplayChecked Then If Env["XDG_SESSION_TYPE"] <> "wayland" Then sDisplay = Env["DISPLAY"] If sDisplay And If Left(sDisplay) <> ":" Then $bRemoteDisplay = True Endif $bRemoteDisplayChecked = True Endif $hVPanel = New Panel(Me) $hVPanel.Arrangement = Arrange.Vertical $hVPanel.Border = Border.Plain $hPanel = New Panel($hVPanel) As "ViewPanel" $hPanel.Arrangement = Arrange.Horizontal $hPanel.Expand = True $hView = New ScrollArea($hPanel) As "View" $hView.Border = False $hView.Focus = True $hView.Tracking = True $hView.Mouse = Mouse.Text $hView.Expand = True Me.Proxy = $hView $iScrollBar = $hView.ScrollBar $hTimerCursor = New Timer As "TimerCursor" $hTimerCursor.Delay = 500 $hTimerCacheLine = New Timer As "TimerCacheLine" $hTimerCacheLine.Delay = 5000 $hRows = New _TextEditor_Rows As "Rows" $hStyles = New _TextEditor_Styles As "Styles" '$hPanel.Background = $hStyles[Highlight.Background].Color _SetDocument(Null) End Private Function Text_Read() As String $hDoc.HighlightAll() Return $hDoc.Text End Private Sub CalcBoldWidth() If Color[$hStyles[Highlight.Background].Color].Luminance < Color[$hStyles[Highlight.Normal].Color].Luminance Then $BW = 1 + $LH \ 4 Else $BW = 1 + $LH \ 6 Endif End Private Sub CalcSizes() Dim hParent As Control $hFont = $hView.Font '$hFontBold = $hView.Font.Copy() '$hFontBold.Bold = True $LH = $hFont.Height + 2 CalcBoldWidth $hRows.Height = $LH hParent = Me Do hParent = hParent.Parent If Not hParent Is TextEditor Then $hFontNumber = hParent.Font.Copy() Break Endif Loop $hFontNumber.Size *= $LH / $hFontNumber.Height $iAscent = $hFont.Ascent + 1 $iLargestLine = -1 $iSpaceWidth = $hFont.TextWidth(" ") $iTabWidth = $hFont.TextWidth("m") * $iTabSize $fTabSymbolSize = Max(1, $hRows.H / 5) $hTabImage = Null $hMultiLineImage = Null $fCharWidth = Paint._EstimateFixedFontCharWidth($hFont) ' $fCharWidth = $iSpaceWidth ' For I = 33 To 255 ' If I > 126 And If I < 160 Then Continue ' If I = 173 Then Continue ' If $hFont.TextWidth(String.Chr$(I)) <> $iSpaceWidth Then ' $fCharWidth = 0 ' Break ' Endif ' Next ' ' If $fCharWidth Then ' sText = String$(4, "AbCdEfGh01#@WwmM") ' $fCharWidth = $hFont.TextWidth(sText) / Len(sText) ' Endif If Not $bRemoteDisplay Then $sCacheTextKey = $hFont.ToString() $cCacheText = $cGlobalCacheText[$sCacheTextKey] If Not $cCacheText Then $cCacheText = New Collection $cGlobalCacheText[$sCacheTextKey] = $cCacheText Endif Endif _ClearCachePos UpdateMargin UpdateWidth Refresh End Private Sub Init() $bStyleChanged = True $X = 0 $Y = 0 $XY = New Point $X0 = 0 $SX = 0 $SY = 0 $SXY = New Point $YM = -1 $hRows.Clear $hRows.Count = $hDoc.Count CalcSizes $cCachePos.Clear $cCacheView.Clear If Not $bRemoteDisplay Then ClearCacheText ClearCacheLine Endif $bShowCursor = True Goto(0, 0) Scroll(0, 0) Refresh End Private Sub Text_Write(Value As String) $hDoc.Text = Value Init If $bShowPreview Then $hTimerSideBarRefresh.Trigger End '' Load a file into the editor. '' '' - ~Path~ is the path of the file to load. '' - If ~AddNewLine~ is 'TRUE', then a newline will be added to the end of the file if there is not. Public Sub Load(Path As String, Optional AddNewLine As Boolean) 'Inc Application.Busy Goto(0, 0) $hDoc.Load(Path, AddNewLine) Init If $bShowPreview Then $hTimerSideBarRefresh.Trigger 'Dec Application.Busy ' Catch ' ' Dec Application.Busy ' Error.Propagate End '' Save the editor contents into a file. '' '' - ~Path~ is the path of the file to write. Public Sub Save(Path As String) 'Inc Application.Busy $hDoc.HighlightAll() $hDoc.Save(Path) $hTimerChange = Null 'Dec Application.Busy ' Catch ' ' 'Dec Application.Busy ' Error.Propagate End '' Clear the editor contents Public Sub Clear() Me.Text = "" End Private Sub HasWidthLayout() As Boolean If Not $cLineLayout Then Return If $cLineLayout.Count Then Return True If $cDiffLayout And If $cDiffLayout.Count Then Return True End Private Sub UpdateMargin() Dim MW As Integer MW = 0 $iWidthLineNumber = 0 $iPosIcon = 0 If $bShowLineNumber Then $iWidthLineNumber = (CInt(Log10($hDoc.Count + $iLineNumberOffset)) + 1) * $hFont.TextWidth("9") + 8 MW += $iWidthLineNumber Endif If $bShowIcon Or If $bShowExpand And $hDoc.HasHighlight() Then $iPosIcon = MW MW += $LH Endif If $bShowModified Then $iWidthModified = $hFont.H \ 2 Else $iWidthModified = 2 Endif MW += $iWidthModified If MW <> $MW Then $MW = MW $hView._SetShadowOffset(0, 0, $MW - $iWidthModified, 0) If $cLineLayout Then _UpdateAllHeight UpdateWidth Endif Endif End Public Sub View_Font() CalcSizes UpdateSideBarFont End Private Sub HasSelection() As Boolean If $X <> $SX Or If $Y <> $SY Then Return True End Private Sub DrawText(sText As String, SX As Integer, X As Integer, Y As Integer) Dim iTab, iTab2, iLen As Integer Dim YT As Integer Dim XX, YY As Float YT = Y + $iAscent Do iTab2 = InStr(sText, "\t", iTab + 1) If iTab2 = 0 Then Paint.DrawText(Mid$(sText, iTab + 1), X, YT) Return Endif iLen = iTab2 - iTab - 1 If iLen > 0 Then Paint.DrawText(Mid$(sText, iTab + 1, iLen), X, YT) X += $hFont.TextWidth(Mid$(sText, iTab + 1, iTab2 - iTab - 1)) Endif If Not $hTabImage Then $hTabImage = New Image($fTabSymbolSize * 2.5, $hFont.Height, Color.Transparent) Paint.Begin($hTabImage) XX = $hTabImage.W / 2 YY = $hTabImage.H / 2 Paint.LineWidth = $fTabSymbolSize / 4 Paint.Background = $iMarginColor Paint.MoveTo(XX - $fTabSymbolSize, YY - $fTabSymbolSize) Paint.LineTo(XX, YY) Paint.LineTo(XX - $fTabSymbolSize, YY + $fTabSymbolSize) Paint.MoveTo(XX, YY - $fTabSymbolSize) Paint.LineTo(XX + $fTabSymbolSize, YY) Paint.LineTo(XX, YY + $fTabSymbolSize) Paint.Stroke Paint.End Endif Paint.DrawImage($hTabImage, X, Y) X = SX + (((X - SX) + $iTabWidth) \ $iTabWidth) * $iTabWidth iTab = iTab2 Loop End Private Sub DrawMatch(X As Integer, Y As Integer, H As Integer, XM As Integer, YM As Integer, bOther As Boolean) Dim XY As Point Dim WW As Integer XY = LinePos(YM, XM) WW = TextWidth($hDoc.Lines[YM], XM + 1, 1) If Not bOther Then Paint.FillRect(X + XY.X, Y + XY.Y + H - 2, WW, 2, $iMatchColor) Else Paint.FillRect(X + XY.X, Y + XY.Y, WW, H, $iMatchColor) Endif End ' Public Sub PrintCache() ' ' Dim hImage As Image ' Dim iSize As Integer ' Dim cCache As Collection ' ' For Each cCache In $cGlobalCacheText ' For Each hImage In cCache ' iSize += hImage.W * hImage.H ' 'Debug Mid$($cCacheText.Key, 2) ' Next ' Next ' Debug iSize ' ' End ' Fast Private Sub DrawHighlightedText(Row As Integer, sText As String, aColor As Byte[], X As Integer, Y As Integer, H As Integer, aLayout As Integer[], iNextState As Integer) Dim I As Integer Dim hStyle As TextEditorStyle Dim bAlt As Boolean Dim iLen As Integer Dim P As Integer Dim sStr As String Dim X2 As Integer Dim iState As Integer Dim XMin As Integer Dim XMax As Integer Dim aStyle As TextEditorStyle[] Dim hImage As Image Dim XX, YY, XB, LB, DB As Integer Dim hPos As Point Dim iNextBreak As Integer Dim iLayout As Integer Dim iRest As Integer Dim bBreak As Boolean Dim sKey As String Dim W As Integer Dim iLayoutCount As Integer Dim iCol As Integer Dim iBg As Integer 'Dim hTemp As Image XMin = X + $hView.ScrollX XMax = XMin + $hView.ClientW aStyle = $hStyles._GetStyles() iBg = aStyle[iNextState].Background XX = X YY = Y If aLayout Then iLayoutCount = aLayout.Count iNextBreak = aLayout[0] Else iLayoutCount = 0 ' Always greater than String.Len(), and faster ' Add a big number in the case of an incorrect highlighting iNextBreak = Len(sText) + 1000000 Endif For I = 0 To aColor.Max Step 2 If Not aLayout Then If XX > XMax Then Break Endif iState = aColor[I] And 31 hStyle = aStyle[iState] bAlt = aColor[I] >= 128 If iRest Then iLen = iRest iRest = 0 Else iLen = aColor[I + 1] Endif If bBreak Then If iBg <> Color.Default Then Paint.FillRect(XX, YY, Paint.W, H, iBg) PaintMultiLine(X, YY, Paint.W - $MW, H, iLayout = 1, False) XX = X + LinePos(Row, P).X YY += H bBreak = False Endif If P + iLen >= iNextBreak Then iRest = P + iLen - iNextBreak iLen = iNextBreak - P Inc iLayout If iLayout < iLayoutCount Then iNextBreak += aLayout[iLayout] Else iNextBreak = Len(sText) + 1 Endif If iLen <= 0 Then Goto NEXT_PATTERN If iRest Then I -= 2 bBreak = True Endif hPos = LinePos(Row, P + iLen) X2 = X + hPos.X 'LineWidth(Row, P + iLen) If Not aLayout Then If X2 < XMin Then Goto NEXT_PATTERN Endif iBg = hStyle.Background If iBg <> Color.Default Then Paint.FillRect(XX, YY, X2 - XX, H, iBg) If bAlt Then Paint.FillRect(XX, YY, X2 - XX, H, Color.SetAlpha(aStyle[Highlight.Alternate].Color, 160)) sStr = String.Mid$(sText, P + 1, iLen) ' If hStyle.Bold Then ' hTemp = New Image(X2 - X, H, Color.Transparent) ' Paint.Begin(hTemp) ' Paint.Font = $hFont ' Paint.Translate(- X, - Y) ' Endif 'If hStyle.Bold Then Paint.Font = $hFontBold If InStr(sStr, "\t") Then GoSub DRAW_TEXT_WITH_TAB Else If Trim(sStr) Then If Not $bRemoteDisplay And If iLen <= 16 Then sKey = Chr$(iState) & sStr hImage = $cCacheText[sKey] If Not hImage Then W = X2 - XX If W <= 0 Then W = TextWidth(sStr, 1, iLen) If hStyle.Bold Then W += ($BW + 1) \ 2 hImage = New Image(W, H, Color.Transparent) Paint.Begin(hImage) Paint.Font = $hFont Paint.Translate(-XX, -YY) GoSub DRAW_TEXT Paint.End If $cCacheText.Count > 256 Then For Each $cCacheText $cCacheText.Remove($cCacheText.Key) Break Next Endif Else $cCacheText.Remove(sKey) Endif $cCacheText[sKey] = hImage Paint.DrawImage(hImage, XX, YY) Else GoSub DRAW_TEXT Endif Endif 'If hStyle.Bold Then Paint.Font = $hFont ' If hStyle.Bold Then ' Paint.End ' 'hTemp.Save("~/temp.png") ' Paint.DrawImage(hTemp, X, Y) ' Paint.DrawImage(hTemp, X + 1, Y) ' Endif If hStyle.Underline Then Paint.FillRect(XX, YY + H - 1, X2 - XX, 1, Color.SetAlpha(hStyle.Color, 128)) Else If hStyle.Dotted Then Paint.Background = Color.SetAlpha(hStyle.Color, 128) Paint.LineWidth = 1 Paint.Dash = [1] Paint.MoveTo(XX, YY + H - 0.5) Paint.RelLineTo(X2 - XX, 0) Paint.Stroke Paint.Dash = Null Endif ' If $YM >= 0 Then ' If Row = $YMO And If $XMO >= P And If $XMO < (P + iLen) Then DrawMatch(SX, Y, H, $XMO, $YMO) ' If Row = $YM And If $XM >= P And If $XM < (P + iLen) Then DrawMatch(SX, Y, H, $XM, $YM) ' Endif NEXT_PATTERN: P += iLen XX = X2 Next sStr = String.Mid$(sText, P + 1) If sStr And If XX <= XMax Then Paint.Background = $iForeground DrawText(sStr, X, XX, YY) Endif If aLayout Then PaintMultiLine(X, YY, Paint.W - $MW, H, False, True) If iBg <> Color.Default Then Paint.FillRect(XX, YY, Paint.W, H, iBg) Return DRAW_TEXT: iCol = hStyle.Color Paint.Background = iCol If hStyle.Bold Then LB = $BW XB = XX DB = 2 * Max(1, LB \ 4) While LB >= DB Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) XB += DB \ 2 LB -= DB Wend If LB Then If DB < 4 Then Paint.Background = Color.SetAlpha(iCol, 128) Else XB -= DB \ 4 Endif Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) Endif Else Paint.DrawText(sStr, XX, YY + $iAscent) 'DrawText(sStr, SX, X, Y) Endif Return DRAW_TEXT_WITH_TAB: iCol = hStyle.Color Paint.Background = iCol If hStyle.Bold Then LB = $BW XB = 0 While LB >= 2 'Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) DrawText(sStr, X + XB, XX + XB, YY) Inc XB LB -= 2 Wend If LB Then Paint.Background = Color.SetAlpha(iCol, 128) 'Paint.DrawText(sStr, XB, YY + $iAscent) 'DrawText(sStr, SX, X + 1, Y) DrawText(sStr, X + XB, XX + XB, YY) Endif Else 'Paint.DrawText(sStr, XX, YY + $iAscent) 'DrawText(sStr, SX, X, Y) DrawText(sStr, X, XX, YY) Endif ' If hStyle.Bold Then ' 'Paint.Background = Color.Gradient(iCol, $iBackground) ' DrawText(sStr, X, XX + 1, YY) ' Endif ' 'Paint.Background = iCol ' DrawText(sStr, X, XX, YY) Return End Private Sub GetTabSizeAround(Row As Integer) As Integer Dim iBefore As Integer Dim Y As Integer Dim iAfter As Integer Y = Row While Y > 0 Dec Y iBefore = GetLineIndent(Y, True) If iBefore >= 0 Then Break Wend Y = Row Do Inc Y If Y >= $hDoc.Count Then Break iAfter = GetLineIndent(Y, True) If iAfter >= 0 Then Break Loop If iBefore = iAfter Then Return iAfter - 1 Return Min(iBefore, iAfter) End Private Sub PaintMultiLine(X As Integer, Y As Integer, Width As Integer, Height As Integer, (bStart) As Boolean, bEnd As Boolean) ' Dim D As Float ' Dim LW As Integer 'If Not Wrap_Read() Then Return If Not $cLineLayout Then Return If Not bEnd Then If Not $hMultiLineImage Then $hMultiLineImage = New Image($LH \ 2, $LH, $iBackground) Paint.Begin($hMultiLineImage) Paint.Arrow(0, 0, $LH \ 3, $LH, Align.Right) Paint.Background = Color.SetAlpha($iForeground, 64) Paint.LineWidth = $LH / 16 Paint.Stroke Paint.End Endif X += Width - Height \ 2 Paint.DrawImage($hMultiLineImage, X, Y, Height \ 2, Height) Endif ' Paint.Save ' Paint.AntiAlias = False ' ' D = Height / 3 ' LW = CInt((Height + 23) / 24) ' ' If bStart Then ' Paint.MoveTo(X, Y + LW * 2) ' Paint.RelLineTo(D, 0) ' Paint.RelLineTo(0, Height - LW * 2) ' Else If bEnd Then ' Paint.MoveTo(X, Y + Height - LW * 2 - 1) ' Paint.RelLineTo(D, 0) ' Paint.RelLineTo(0, -Height + LW * 2 - 1) ' Else ' Paint.MoveTo(X + D, Y) ' Paint.RelLineTo(0, Height) ' Endif ' ' Paint.LineWidth = LW ' Paint.Background = Color.SetAlpha(Color.TextForeground, 128) ' Paint.LineJoin = Paint.LineJoinMiter ' Paint.Stroke ' ' Paint.Restore End Private Sub DrawLine(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer) Dim X1 As Integer Dim Y1 As Integer Dim X2 As Integer Dim Y2 As Integer Dim iCol As Integer Dim hInfo As CLineInfo Dim WC As Integer Dim sCar As String Dim aLayout As Integer[] Dim I As Integer Dim P, L As Integer Dim D As Float Dim sText As String Dim YY As Integer Dim H As Integer Dim XY1X As Integer Dim XY2X As Integer Dim XY1Y As Integer Dim XY2Y As Integer Dim XS As Integer Dim XX As Integer Dim hPos As Point Dim iEndingSpaceLimit As Integer Dim XP, IP As Integer Dim XY As Point Dim HH As Integer Dim aDiffLayout As Integer[][] Dim aText As String[] H = $LH If Row < 0 Then Paint.FillRect(X, Y, Width, Height, Color.SetAlpha($hStyles[Highlight.Removed].Color, 224)) Paint.Rectangle($MW, Y, Width - $MW, Height) Paint.Clip Paint.Translate($MW, 0) Goto TOP_DIFF Endif ' Diff background and initial diff ' Current line or stop line Try aLayout = $cLineLayout[Row] HH = H If aLayout Then HH += aLayout.Count * H If $hDoc.IsDiffRemoved(Row) Then Paint.FillRect(X, Y + HH, Width, Height - HH, Color.SetAlpha($hStyles[Highlight.Removed].Color, 224)) ' If Row = $Y And If aLayout Then ' Paint.FillRect(X, Y, Width, Height, $iMarginColor) ' Endif If Row = $iStopLine Then Paint.FillRect(X, Y, Width, HH, $hStyles[Highlight.Current].Color) Endif If $hDoc.DiffAdded And If $hDoc.IsDiffAdded(Row) Then Paint.FillRect(X, Y, Width, HH, Color.SetAlpha($hStyles[Highlight.Added].Color, 224)) Paint.Rectangle($MW, Y, Width - $MW, Height) Paint.Clip Paint.Translate($MW, 0) hInfo = $hDoc.Info(Row) sText = $hDoc.Lines[Row] ' Highlighted string If $sHighlightString Then P = 0 L = $hDoc.LineLength[Row] Do P = String.InStr(sText, $sHighlightString, P + 1, $iHighlightStringMode) If P = 0 Then Break If $bHighlightWordOnly Then If P > 1 And If Not IsWordLimit(String.Mid$(sText, P - 1, 1)) Then Goto NEXT_SEARCH If (P + $iHighlightStringLen) < L And If Not IsWordLimit(String.Mid$(sText, P + $iHighlightStringLen, 1)) Then Goto NEXT_SEARCH Endif XY = LinePos(Row, P - 1) Paint.FillRect(X + XY.X, Y + XY.Y, TextWidth(sText, P, $iHighlightStringLen), H, $iMatchColor) NEXT_SEARCH: P += $iHighlightStringLen Loop Endif ' Selection If HasSelection() Then X1 = $X Y1 = $Y XY1X = $XY.X XY1Y = $XY.Y X2 = $SX Y2 = $SY XY2X = $SXY.X XY2Y = $SXY.Y If Y1 > Y2 Or If Y1 = Y2 And X1 > X2 Then Swap X1, X2 Swap Y1, Y2 Swap XY1X, XY2X Swap XY1Y, XY2Y Endif If Row >= Y1 And If Row <= Y2 Then iCol = Color.SetAlpha($iSelectedBackground, 32) ' If Y1 = Y2 Then ' Paint.FillRect(X + X1X, Y, X2X - X1X, Height, iCol) ' Else If Row = Y1 Then ' Paint.FillRect(X + X1X, Y, Width - X1X, Height, iCol) ' Else If Row = Y2 Then ' Paint.FillRect(X, Y, X2X, Height, iCol) ' Else ' Paint.FillRect(X, Y, Width, Height, iCol) ' Endif If Y1 < Row Then XY1X = 0 XY1Y = 0 Endif If Y2 > Row Then XY2X = 0 XY2Y = HH Endif If XY2Y = XY1Y Then Paint.FillRect(X + XY1X, Y + XY1Y, XY2X - XY1X, H, iCol) Else Paint.FillRect(X + XY1X, Y + XY1Y, Width, H, iCol) Paint.FillRect(X, Y + XY1Y + H, Width, XY2Y - XY1Y - H, iCol) If XY2Y < HH Then Paint.FillRect(X, Y + XY2Y, XY2X, H, iCol) Endif Endif Endif ' Matching characters If $YM >= 0 Then If Row = $YMO Then DrawMatch(X, Y, H, $XMO, $YMO, False) If Row = $YM Then DrawMatch(X, Y, H, $XM, $YM, True) Endif ' Text If hInfo.Colors Then DrawHighlightedText(Row, sText, hInfo.Colors, X, Y, H, aLayout, hInfo.State) Else Paint.Background = $iForeground If aLayout Then P = 1 YY = Y XX = X XS = X + LineStartPos(Row) For I = 0 To aLayout.Max DrawText(String.Mid$(sText, P, aLayout[I]), X, XX, YY) PaintMultiLine(X, YY, Width - $MW, H, I = 0, False) YY += H XX = XS P += aLayout[I] Next DrawText(String.Mid$(sText, P), X, XX, YY) PaintMultiLine(X, YY, Width - $MW, H, False, True) Else DrawText(sText, X, X, Y) Endif Endif ' Ending spaces If $bShowSpaces And If sText Ends " " Then XX = X + $iSpaceWidth \ 2 - 1 YY = Y + H \ 2 - 1 For P = String.Len(sText) DownTo 1 If String.Mid$(sText, P, 1) <> " " Then Break hPos = LinePos(Row, P - 1) If (XX + hPos.X) <= iEndingSpaceLimit Then Break Paint.FillRect(XX + hPos.X, YY + hPos.Y, 2, 2, $iLimitColor) Next Endif ' Indent vertical lines If $bShowIndent Then P = GetLineIndentMark(Row, sText) D = $iSpaceWidth / 8 If $IP And If Row >= $IY1 And If Row <= $IY2 Then IP = X + $IP Paint.Translate($iSpaceWidth \ 2, 0) XP = 0 Do If $bTabIndent Then Inc XP XX = X + XP * $iTabWidth Else XP += $iTabSize If $fCharWidth Then XX = X + CInt($fCharWidth * XP) Else XX = X + $hFont.TextWidth(String$(XP, " ")) Endif Endif If XX >= P Then Break If IP And If XX = IP Then IP = 0 Paint.Rectangle(XX, Y, D, HH) Paint.Background = $iMarginColor Paint.Fill 'Paint.FillRect(XX + D, Y, D, Height, $iMatchColor) Else Paint.Rectangle(XX, Y, D / 2, HH) Paint.Background = $iIndentColor Paint.Fill Endif iEndingSpaceLimit = XX Loop Paint.Translate(-$iSpaceWidth \ 2, 0) ' If IP Then ' If Row = $IY1 Then ' Paint.FillRect(IP - D * 3, Y + H \ 2, D, Height - H \ 2, $iMatchColor) ' Paint.FillRect(IP - D * 3, Y + H \ 2, D * 2, D, $iMatchColor) ' Else If Row = $IY2 Then ' Paint.FillRect(IP - D * 3, Y, D, Height - H \ 2, $iMatchColor) ' Paint.FillRect(IP - D * 3, Y + Height - H \ 2 - D, D * 2, D, $iMatchColor) ' Endif ' Endif Endif ' Cursor If Row = $Y And If Not $bHideCursor Then If $bShowCursor Or If Not Me.HasFocus Then If $bOverwrite Then sCar = String.Mid$($hDoc.Lines[$Y], $X + 1, 1) If sCar = "\t" Then WC = $iTabWidth Else WC = Max($iSpaceWidth, $hFont.TextWidth(sCar)) Endif Else WC = 2 Endif Paint.FillRect(X + $XY.X, Y + $XY.Y, WC, H, Color.SetAlpha($iForeground, 128)) Endif Endif ' Diff text TOP_DIFF: If $hDoc.IsDiffRemoved(Row) Then Paint.Background = $hStyles[Highlight.Removed].Color aDiffLayout = $cDiffLayout[Row] aText = $hDoc.DiffRemoved[Row] YY = Y + HH For L = 0 To aText.Max sText = aText[L] If aDiffLayout Then aLayout = aDiffLayout[L] If aLayout Then P = 1 XX = X XS = X + GetTextStartPos(sText) For I = 0 To aLayout.Max If YY > -H Then DrawText(RTrim(String.Mid$(sText, P, aLayout[I])), X, XX, YY) PaintMultiLine(X, YY, Width - $MW, H, I = 0, False) Endif YY += H If YY >= Height Then Break XX = XS P += aLayout[I] Next If YY > -H And If YY < Height Then DrawText(String.Mid$(sText, P), X, XX, YY) PaintMultiLine(X, YY, Width - $MW, H, False, True) Endif YY += H Else DrawText(sText, X, X, YY) YY += H Endif Next Endif End Public Sub _PaintRow(Row As Integer, X As Integer, Y As Integer) Dim H As Integer Dim hInfo As CLineInfo Dim sText As String Dim aLayout As Integer[] Dim P As Integer Dim YY As Integer Dim XX As Integer Dim XS As Integer Dim I As Integer Dim bRemoteDisplay As Boolean Dim iSaveMW As Integer CheckStyle H = $LH Try aLayout = $cLineLayout[Row] sText = $hDoc.Lines[Row] hInfo = $hDoc.Info(Row) If hInfo.Colors Then bRemoteDisplay = $bRemoteDisplay $bRemoteDisplay = True iSaveMW = $MW $MW = 0 DrawHighlightedText(Row, sText, hInfo.Colors, X, Y, H, aLayout, hInfo.State) $MW = iSaveMW $bRemoteDisplay = bRemoteDisplay Else Paint.Background = $iForeground If aLayout Then P = 1 YY = Y XX = X XS = X + LineStartPos(Row) For I = 0 To aLayout.Max DrawText(String.Mid$(sText, P, aLayout[I]), X, XX, YY) PaintMultiLine(X, YY, Paint.W - X, H, I = 0, False) YY += H XX = XS P += aLayout[I] Next DrawText(String.Mid$(sText, P), X, XX, YY) PaintMultiLine(X, YY, Paint.W - X, H, False, True) Else DrawText(sText, X, X, Y) Endif Endif End Private Sub DrawMargin(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer) Dim iCol As Integer Dim hInfo As CLineInfo Dim YL As Integer Dim S, SS As Float Dim H As Integer Dim sStr As String Dim bLimit As Boolean Dim X1 As Float Dim X2 As Integer Dim iRow As Integer hInfo = $hDoc.Info(Row) bLimit = $hDoc.HasLimit(Row) X += $hView.ScrollX H = $hRows.H ' Limit YL = -1 If $bShowLimit And If Row > 0 Then If Not RTrim($hDoc.Lines[Row]) And If Row < $hDoc.Max Then If $hDoc.HasLimit(_ViewToReal(_RealToView(Row) + 1)) Then YL = Y + Height \ 2 Else If bLimit And If RTrim($hDoc.Lines[_ViewToReal(_RealToView(Row) - 1)]) Then YL = Y Endif Endif ' Margin Paint.FillRect(X, Y, $MW, Height, $iBackground) If $bShowIcon Or If $bShowExpand Then If $hDoc.HasBreakpoint(Row) Or If $hDoc.HasBookmark(Row) Or If hInfo.Limit Then If $hDoc.HasBookmark(Row) Then ' SS = S / 3 ' Paint.MoveTo(0, SS) ' Paint.RelLineTo(SS, SS) ' Paint.RelLineTo(2 * SS, - SS * 2) ' Paint.LineWidth = SS / 2 ' Paint.Background = $hStyles[Highlight.Current].Color ' Paint.Stroke X1 = X + $MW - $LH / 2 - $iWidthModified X2 = X + $MW - $iWidthModified Paint.MoveTo(X, Y + 2) Paint.LineTo(X1, Y + 2) Paint.LineTo(X2, Y + Height / 2) Paint.LineTo(X1, Y + Height - 2) Paint.LineTo(X, Y + Height - 2) Paint.LineTo(X, Y + 2) Paint.Background = $hStyles[Highlight.Selection].Color Paint.Fill Endif Paint.Save Paint.Translate(X + $iPosIcon + H / 4, Y + H / 4) S = H / 2 Paint.LineWidth = S / 6 If $hDoc.HasBreakpoint(Row) Then Paint.Ellipse(0, 0, S, S) If $hDoc.IsBreakpointDisabled(Row) Then Paint.Background = Color.SetAlpha($hStyles[Highlight.Normal].Color, 228) Else Paint.Background = Color.SetAlpha($hStyles[Highlight.Breakpoint].Color, 128) Endif Paint.Fill(True) Paint.Stroke Endif If $bShowExpand Then If hInfo.Limit Then SS = S / 2 Paint.Background = $iForeground 'Style.PaintArrow(0, 0, S, S, If(_IsRowExpanded(Row), Align.Bottom, Align.Right)) 'Style.PaintArrow(X + $iPosIcon + 3, Y + 3, S, S, If(_IsRowExpanded(Row), Align.Bottom, Align.Right)) Paint.MoveTo(0, SS) Paint.RelLineTo(S, 0) If Not _IsRowExpanded(Row) Then Paint.MoveTo(SS, 0) Paint.RelLineTo(0, S) Endif Paint.LineCap = Paint.LineCapRound Paint.Stroke Endif Endif Paint.Restore Endif Endif If $bShowModified Then If hInfo.Modified Or If hInfo.Saved Then If hInfo.Modified Then iCol = Color.Merge($iBackground, Color.Red, 0.2) Else If hInfo.Saved Then iCol = Color.Merge($iBackground, Color.Green, 0.2) Endif Paint.FillRect(X + $MW - $iWidthModified, Y, $iWidthModified - 1, Height, iCol) Endif Endif If YL >= 0 Then Paint.FillRect(X, YL, Width, 1, Color.SetAlpha($iMatchColor, 64)) If YL < 0 Or If YL = Y Then If $bShowLineNumber Then iRow = Row + 1 + $iLineNumberOffset If iRow Mod 10 = 0 Then iCol = $iForeground Else iCol = $iLimitColor Endif Paint.Background = iCol sStr = CStr(iRow) Paint.Font = $hFont Paint.DrawText(sStr, X, Y, $iWidthLineNumber - 4, H, Align.Right) ' If Row = $Y Then ' Paint.Background = Color.SetAlpha(iCol, 128) ' Paint.DrawText(sStr, X + 1, Y, $iWidthLineNumber - 4, H, Align.Right) ' Endif Endif Endif End Fast Private Sub TextWidth(sText As String, iStart As Integer, iLength As Integer) As Integer Dim aText As String[] Dim I As Integer Dim W As Float Dim fCharWidth As Float fCharWidth = $fCharWidth sText = String.Mid$(sText, iStart, iLength) If Not IsAscii(sText) Then fCharWidth = 0 I = InStr(sText, "\t", iStart) - iStart If I < 0 Or If I >= iLength Then If fCharWidth Then Return fCharWidth * iLength Else Return $hFont.TextWidth(sText) Endif Endif If iLength <= 0 Then Return 0 aText = Split(sText, "\t") If fCharWidth Then For I = 0 To aText.Max - 1 W += fCharWidth * String.Len(aText[I]) W = (CInt(W + $iTabWidth) \ $iTabWidth) * $iTabWidth Next W += fCharWidth * String.Len(aText[aText.Max]) Else For I = 0 To aText.Max - 1 W += $hFont.TextWidth(aText[I]) W = (CInt(W + $iTabWidth) \ $iTabWidth) * $iTabWidth Next W += $hFont.TextWidth(aText[aText.Max]) Endif Return Ceil(W) End Fast Private Sub LinePos(Y As Integer, Optional X As Integer = -1) As Point Dim aLayout As Integer[] Dim I As Integer Dim P As Integer Dim hPos As Point Dim cCache As Collection Dim XO As Integer Dim XX As Integer XO = X Try hPos = $cCachePos[Y][XO] If hPos Then Goto RETURN_POS If $cLineLayout Then aLayout = $cLineLayout[Y] If aLayout Then For I = 0 To aLayout.Max If X < aLayout[I] Then Break P += aLayout[I] X -= aLayout[I] Next XX = TextWidth($hDoc.Lines[Y], P + 1, X) If I Then XX += LineStartPos(Y) hPos = Point(XX, I * $LH) Goto CACHE_POS Endif Endif hPos = New Point If X < 0 Then hPos.X = TextWidth($hDoc.Lines[Y], 1, $hDoc.LineLength[Y]) Else hPos.X = TextWidth($hDoc.Lines[Y], 1, X) Endif CACHE_POS: cCache = $cCachePos[Y] If Not cCache Then If $cCachePos.Count > 80 Then For Each $cCachePos $cCachePos.Remove($cCachePos.Key) Break Next Endif cCache = New Collection $cCachePos[Y] = cCache Endif cCache[XO] = hPos 'If Y = 28 Then Debug "calc";; X;; Y;; "->";; hPos;; hPos.X;; hPos.Y RETURN_POS: Return hPos End Private Sub GetTextStartPos(sText As String, Optional aLayout As Integer[]) As Integer Dim S As Integer S = Len(sText) - Len(LTrim(sText)) If aLayout And If S >= aLayout[0] Then S = aLayout[0] - 1 Return TextWidth(sText, 1, S) End Private Sub LineStartPos(Y As Integer) As Integer Dim S As Integer Dim aLayout As Integer[] S = Len($hDoc.Lines[Y]) - Len(LTrim($hDoc.Lines[Y])) Try aLayout = $cLineLayout[Y] If aLayout And If S >= aLayout[0] Then S = aLayout[0] - 1 Return LinePos(Y, S).X End Private Sub FindLargestLine() As Integer Dim I As Integer Dim W As Integer Dim WM As Integer = -1 If $hDoc.Count >= 10000 Then Inc Application.Busy For I = 0 To $hDoc.Count - 1 W = LinePos(I).X If W > WM Then WM = W $iLargestLine = I Endif Next If $hDoc.Count >= 10000 Then Dec Application.Busy Return WM End Private Sub UpdateWidth(Optional Y As Integer = -1) Dim W As Integer If Wrap_Read() Then If $iWidth <> $hView.ClientWidth Then $iWidth = $hView.ClientWidth _ResizeContents Endif Return Endif If $iLargestLine < 0 Or If $iLargestLine > $hDoc.Max Then FindLargestLine Y = -1 Endif If Y < 0 Then W = LinePos($iLargestLine).X + $MW + 2 Goto UPDATE_WIDTH Endif W = LinePos(Y).X + $MW + 2 If W > $iWidth Then $iLargestLine = Y Goto UPDATE_WIDTH Else If W < $iWidth And If Y = $iLargestLine Then W = FindLargestLine() + $MW + 2 Goto UPDATE_WIDTH Endif Return UPDATE_WIDTH: $iWidth = Max($hView.ClientWidth, W) _ResizeContents End Public Sub TimerCursor_Timer() If $bMouseDown Then Return $bShowCursor = Not $bShowCursor _RefreshLine($Y) If $YM >= 0 Then If $YM <> $Y Then _RefreshLine($YM) If $YMO <> $Y Then _RefreshLine($YMO) Endif End Public Sub View_KeyPress() Dim Y As Integer Dim sAction As String Dim sTab As String Dim bCancel As Boolean Dim aLayout As Integer[] Dim I, P As Integer Dim bSaveOverwrite As Boolean = $bOverwrite Dim X As Integer bCancel = Raise KeyPress If bCancel Then Goto STOP_EVENT Try sAction = $cShortcut[String.UCase(Shortcut.FromKey())] If sAction Then Select Case sAction Case "Copy" Copy() Case "Paste" If $bReadOnly Then Goto STOP_EVENT Paste() Case "Undo" If $bReadOnly Then Goto STOP_EVENT Undo() Case "Redo" If $bReadOnly Then Goto STOP_EVENT Redo() Case "Cut" If $bReadOnly Then Goto STOP_EVENT Cut() Case "SelectAll" SelectAll Case "Find" ShowFind End Select Goto STOP_EVENT Endif If Key.Text And If Asc(Key.Text) >= 32 And If Asc(Key.Text) <> 127 Then If $bReadOnly Then Goto STOP_EVENT If $hDoc._Mode And If $hDoc._Mode.OnKeyPress(Me) Then Goto STOP_EVENT Insert(Key.Text) Goto STOP_EVENT Endif Select Case Key.Code Case Key.Right If Key.Control Then If $X >= $hDoc.LineLength[$Y] Then Goto(0, _ViewToReal(_RealToView($Y) + 1), Key.Shift) Else Goto($hDoc.WordRight($X, $Y), $Y, Key.Shift) Endif Else If Key.Normal Or If Key.Shift Then If $X >= $hDoc.LineLength[$Y] Then Goto(0, _ViewToReal(_RealToView($Y) + 1), Key.Shift) Else Goto($X + 1, $Y, Key.Shift) Endif Endif Goto STOP_EVENT Case Key.Left '$X = NormalizeColumn($X, $Y) If Key.Control Then If $X = 0 Then Goto(-1, _ViewToReal(_RealToView($Y) - 1), Key.Shift) Else Goto($hDoc.WordLeft($X, $Y), $Y, Key.Shift) Endif Else If Key.Normal Or If Key.Shift Then If $X = 0 Then Goto(-1, _ViewToReal(_RealToView($Y) - 1), Key.Shift) Else Goto($X - 1, $Y, Key.Shift) Endif Endif Goto STOP_EVENT Case Key.Up If Key.Alt Then If Me.DiffMode Then Y = $hDoc.FindPreviousDiff($Y) If Y >= 0 Then Goto($X, Y, Key.Shift) Else If $bReadOnly Then Goto STOP_EVENT MoveSelection(True) Endif Else If Key.Control Then Y = FindPreviousLimit($Y) If Y >= 0 Then Goto($X, Y, Key.Shift) Else Goto(0, 0, Key.Shift) Endif Else GotoXY($X0 + $MW - $hView.ScrollX, $hRows._GetRowY($Y) - $hView.ScrollY + $XY.Y - $hRows.H, Key.Shift) Endif Goto STOP_EVENT Case Key.Down If Key.Alt Then If Me.DiffMode Then Y = $hDoc.FindNextDiff($Y) If Y >= 0 Then Goto($X, Y, Key.Shift) Else If $bReadOnly Then Goto STOP_EVENT MoveSelection(False) Endif Else If Key.Control Then Y = FindNextLimit($Y) If Y >= 0 Then Goto($X, Y, Key.Shift) Else Goto(-1, $hDoc.Max, Key.Shift) Endif Else X = $X0 + $MW - $hView.ScrollX Y = $Y GotoXY(X, $hRows._GetRowY($Y) - $hView.ScrollY + $XY.Y + $hRows.H, Key.Shift) ' ?? If $Y = Y Then GotoXY(X, $hRows._GetRowY($Y + 1) - $hView.ScrollY, Key.Shift) Endif Goto STOP_EVENT Case Key.Home If Key.Control Then Goto(0, 0, Key.Shift) Else Try aLayout = $cLineLayout[$Y] If Not aLayout Or If $X < aLayout[0] Then P = GetLineIndent($Y) If P = $X Then P = 0 Goto(P, $Y, Key.Shift) Else P = aLayout[0] For I = 1 To aLayout.Max If $X < P + aLayout[I] Then Break P += aLayout[I] Next If P = $X Then P = GetLineIndent($Y) Goto(P, $Y, Key.Shift) Endif Endif Goto STOP_EVENT Case Key.End If Key.Control Then Goto(-1, $hDoc.Max, Key.Shift) Else Try aLayout = $cLineLayout[$Y] If Not aLayout Then Goto(-1, $Y, Key.Shift) Else P = 0 For I = 0 To aLayout.Max P += aLayout[I] If $X < P Then Dec P Break Endif Next If P = $X Or If I = aLayout.Count Then P = -1 Goto(P, $Y, Key.Shift) Endif Endif Goto STOP_EVENT Case Key.PageUp 'Y = RealToView($Y) 'Y = $hRows._FindRowFromPos($hRows._GetRowY($Y) + $hRows._GetRowHeight($Y) - $hView.ClientH) 'Y = ViewToReal(Y) 'Goto($X, Max(0, Y), Key.Shift) If Not Key.Control And If Not Key.Alt And If Not Key.Meta Then If GotoXY($X0 + $MW - $hView.ScrollX, $hRows._GetRowY($Y) + $XY.Y - $hView.ClientH - $hView.ScrollY, Key.Shift) Then Goto(0, 0, Key.Shift) Goto STOP_EVENT Endif Endif Case Key.PageDown 'Y = RealToView($Y) 'Y = $hRows._FindRowFromPos($hRows._GetRowY($Y) + $hView.ClientH) 'Y = ViewToReal(Y) 'If Y >= 0 Then 'Goto($X, Y, Key.Shift) 'Else 'Goto($X, $hDoc.Max, Key.Shift) 'Endif If Not Key.Control And If Not Key.Alt And If Not Key.Meta Then If GotoXY($X0 + $MW - $hView.ScrollX, $hRows._GetRowY($Y) + $XY.Y + $hView.ClientH - $hView.ScrollY, Key.Shift) Then Goto(-1, $hDoc.Max, Key.Shift) Goto STOP_EVENT Endif Endif Case Key.Enter, Key.Return If $bShowExpand Then If Key.Control Then Y = FindPreviousLimit($Y + 1) If Y >= 0 Then If Key.Alt Then If _IsRowExpanded(Y) Then CollapseAll Else ExpandAll Endif Else ToggleRow(Y) Endif Endif Goto STOP_EVENT Endif Endif If $bReadOnly Then Goto STOP_EVENT If Not $bPrint Then $bOverwrite = False sTab = GetLineIndentText($Y) If $hDoc._Mode.BetweenBraces(Me) Then Insert("\n" & String.Left(sTab, $X) & GetTab() & "\n" & String.Left(sTab, $X)) Goto(-1, $Y - 1) Else Insert("\n" & String.Left(sTab, $X)) Endif 'If Not $bPrint Then $bOverwrite = True $bOverwrite = bSaveOverwrite Goto STOP_EVENT Case Key.BackSpace If Key.Control Then If $bReadOnly Then Goto STOP_EVENT DeleteWordLeft Else If Key.Normal Then If $bReadOnly Then Goto STOP_EVENT If $hDoc._Mode And If $hDoc._Mode.OnKeyPress(Me) Then Goto STOP_EVENT DeleteLeft Endif Goto STOP_EVENT Case Key.Delete If Key.Control Then If $bReadOnly Then Goto STOP_EVENT DeleteWordRight Else If Key.Normal Then If $bReadOnly Then Goto STOP_EVENT DeleteRight Endif Goto STOP_EVENT Case Key.Tab If $bReadOnly Then Goto STOP_EVENT If Key.Control Then Insert("\t") Else DoIndent(Key.Shift) Endif Goto STOP_EVENT Case Key.BackTab If $bReadOnly Then Goto STOP_EVENT DoIndent(True) Goto STOP_EVENT Case Key.Insert Me.Overwrite = Not $bOverwrite Goto STOP_EVENT End Select Return STOP_EVENT: Stop Event End '' Hide the current selection if any. Public Sub HideSelection() If HasSelection() Then Refresh $SX = $X $SY = $Y $SXY = $XY.Copy() End Public Sub _RaiseCursor() If $iSaveCursor Then Return If $X = $LX And If $Y = $LY Then Return If $hDoc.IsLocked() Then Return EnsureVisible If $bShowPosition Then UpdatePosition TimerChange_Timer Raise Cursor $LX = $X $LY = $Y End '' Move the cursor to the specified position. '' '' - ~NX~ and ~NY~ are respectively the column and the line of the new position. '' - If ~Mark~ is 'TRUE', then the text between the old position and the new position is selected. Public Sub Goto(NX As Integer, NY As Integer, Optional Mark As Boolean) Dim SX As Integer Dim SY As Integer Dim SXY As Point Dim iLen As Integer If NY < 0 Then Return If NY > $hDoc.Max Then NY = $hDoc.Max NX = -1 Endif NY = CheckFolded(NY) If NY <> $Y Then SX = $SX SY = $SY SXY = $SXY $hDoc.HighlightUntil($Y) ' As Goto is used for selecting text, it ensures that the selecting text has been rewritten if needed. If Mark Then If $SX <> SX Or If $SY <> SY Then $SX = SX $SY = SY $SXY = LinePos($SY, $SX) Endif Endif Endif iLen = $hDoc.LineLength[NY] If NX < 0 Or If NX > iLen Then NX = iLen If Not Mark Then HideSelection _RefreshLine($Y) 'Debug "$XY.X =";; $XY.X If NX <> $X Or If NY <> $Y Then If Not Mark Then _RefreshLine(NY) Else _RefreshLine(Min(NY, $Y), Max(NY, $Y) - Min(NY, $Y) + 1) Endif $X = NX $Y = NY $XY = LinePos($Y, $X) '$XM = 0 '$YM = -1 Endif $X0 = $XY.X If Not Mark Then $SX = $X $SY = $Y $SXY = $XY Else Clipboard.Current = Clipboard.Selection Copy() Clipboard.Current = Clipboard.Default Endif $bShowCursor = True $hTimerCursor.Restart If Not $bReadOnly Then $hTimerCursor.Start CheckMatch CheckIndentMark _RaiseCursor End Private Sub EnsureVisible(Optional bCenter As Boolean) Dim Y As Integer Dim H As Integer 'Y = RealToView($Y) If Me.DiffMode Then Y = $hRows._GetRowY($Y) + $XY.Y H = $hRows._GetRowHeight($Y) If $Y = 0 And If _TopHeight Then Y = 0 H += _TopHeight * $LH Endif Else H = $hRows.H '_GetRowHeight(Y) Y = $hRows._GetRowY($Y) + $XY.Y Endif If bCenter Then Y = Y - $hView.ClientH \ 2 + H \ 2 H = $hView.ClientH Endif If $bMouseDown Or If $XY.X > ($hView.ClientW - $MW) Then $hView.EnsureVisible($XY.X, Y, $iSpaceWidth + $MW, H) Else $hView.EnsureVisible(0, Y, $hView.ClientW, H) Endif End '' Move the cursor to the specified position and center the view around it. '' '' - ~NX~ and ~NY~ are respectively the column and the line of the new position. Public Sub GotoCenter(NX As Integer, NY As Integer) Goto(NX, NY) EnsureVisible(True) ' If Not $hTimerEnsureVisible Then ' $hTimerEnsureVisible = New Timer As "EnsureVisible" ' $hTimerEnsureVisible.Trigger ' Endif End Public Sub EnsureVisible_Timer() EnsureVisible(True) $hTimerEnsureVisible.Stop $hTimerEnsureVisible = Null End Private Sub PosToColumn(Y As Integer, PX As Integer, RY As Integer, Optional bIgnoreMargin As Boolean) As Integer Dim I As Integer Dim iLen As Integer Dim D As Integer Dim F As Integer Dim sStr As String Dim LP As Point Dim J As Integer sStr = $hDoc.Lines[Y] iLen = $hDoc.LineLength[Y] If Not bIgnoreMargin Then If PX < $MW Then Return 0 Endif ' if (px < margin || px >= visibleWidth()) ' _posOutside = true; ' If iLen = 0 Then Return PX \ $hFont.TextWidth("m") PX += $hView.ScrollX - $MW RY = (RY \ $hRows.H) * $hRows.H ' px += contentsX(); ' D = 0 F = iLen J = -1 Do I = (D + F) \ 2 If I = J Then Break J = I LP = LinePos(Y, I) If RY < LP.Y Or If RY = LP.Y And PX < LP.X Then F = I Else If RY > LP.Y Or If PX > LP.X Then D = I + 1 Else D = I Break Endif ' 'LP = LinePos(Y, I + 1) ' If RY > LP.Y Or If PX >= LP.X Then ' D = I '+ 1 ' Continue ' Endif ' ' D = I ' Break Loop If LP Then If LP.Y < RY Then D = Min(iLen, D + 1) Else If LP.Y > RY Then D = Max(0, D - 1) Endif Endif ' _posOutside = d > len; Return D End Private Sub PosToLine(PY As Integer) As Integer Return $hRows._FindRowFromPos(PY + $hView.ScrollY) End Public Sub View_MouseDown() Dim Y As Integer Dim X As Integer Dim RY As Integer Dim MW As Integer $bFirstFocus = True If Mouse.Right Then Return Y = PosToLine(Mouse.Y) RY = $hRows.RelativeY If Y >= 0 Then MW = $MW MW -= $iWidthModified If Mouse.X < MW And If Mouse.X >= $iPosIcon Then If Mouse.Left Then Goto(0, Y, Mouse.Shift) If Mouse.Normal And If $bShowExpand And If $hDoc.Info(Y).Limit Then ToggleRow(Y) Endif Endif Else 'X = NormalizeColumn(PosToColumn(Y, Mouse.X, RY), Y) X = PosToColumn(Y, Mouse.X - $iSpaceWidth \ 2, RY) Goto(X, Y, Mouse.Shift) Endif Endif $bMouseDown = True End Public Sub View_DblClick() Dim X, Y As Integer If Mouse.Right Then Return If $bShowIcon Or If $bShowExpand Then Y = PosToLine(Mouse.Y) If Mouse.X < $MW And If Mouse.X >= $iPosIcon Then If $bShowExpand And If $hDoc.Info(Y).Limit Then If _IsRowExpanded(Y) Then ExpandAll Else CollapseAll Endif Else Goto(0, Y) Raise Margin Stop Event Endif Endif Endif If Mouse.X >= $MW Then X = $X If $X >= 0 Then Goto($hDoc.WordLeft($X, $Y, True), $Y) If $X < $hDoc.LineLength[$Y] Then X = $hDoc.WordRight($X, $Y, True) Goto(X, $Y, True) Endif End Public Sub View_MouseDrag() If Mouse.Right Then Return If Not $hTimerScroll Then $hTimerScroll = New Timer As "TimerScroll" $hTimerScroll.Delay = 50 $hTimerScroll.Start Endif End Public Sub View_MouseMove() Dim Y, RY As Integer Dim X As Integer Dim PX As Integer PX = Mouse.ScreenX - $hView.ScreenX If PX < $MW Then $hView.Mouse = Mouse.Default Else $hView.Mouse = Mouse.Text Endif If $bMouseDown Then Y = PosToLine(Mouse.ScreenY - $hView.ScreenY) RY = $hRows.RelativeY If Y >= 0 Then 'X = NormalizeColumn(PosToColumn(Y, Mouse.ScreenX - $hView.ScreenX, RY), Y) X = PosToColumn(Y, PX, RY, True) Goto(X, Y, True) Endif Endif End Public Sub View_MouseUp() If $hTimerScroll Then $hTimerScroll.Stop $hTimerScroll = Null Endif If Mouse.Middle And If Not $bReadOnly Then Clipboard.Current = Clipboard.Selection Paste Clipboard.Current = Clipboard.Default Endif $bMouseDown = False End Public Sub TimerScroll_Timer() View_MouseMove End Private Function Line_Read() As Integer Return $Y End Private Function Column_Read() As Integer Return $X End Private Function SelectionLine_Read() As Integer Return $SY End Private Function SelectionColumn_Read() As Integer Return $SX End Private Function Selected_Read() As Boolean Return HasSelection() End Private Sub DeleteSelection() As Boolean If HasSelection() Then Remove($SX, $SY, $X, $Y) Return True Endif End ' Private Sub NormalizeColumn(X As Integer, Y As Integer) As Integer ' ' Return Min(String.Len($hDoc.Lines[Y]), X) ' ' End '' Insert some text at the current cursor position. '' '' - ~Text~ is the text to insert. '' '' The text can be multi-line. The line separator is always `"\n"` in that case. Public Sub Insert(Text As String) Dim aText As String[] Dim I As Integer If Len(Text) = 1 And If Text <> "\n" And If Not HasSelection() And If Not $bOverwrite Then $hDoc.Insert(Text, $X, $Y) Goto($hDoc.XAfter, $hDoc.YAfter) Return Endif $hDoc.Begin DeleteSelection If Text Then '$X = NormalizeColumn($X, $Y) If $bOverwrite Then aText = Split(Text, "\n") For I = 0 To aText.Max - 1 Remove($X, $Y, $X + String.Len(aText[I]), $Y) If $Y = $hDoc.Max Then $hDoc.Insert(aText[I] & "\n", $X, $Y) Else $hDoc.Insert(aText[I], $X, $Y) Endif Goto(0, $Y + 1) Next Remove($X, $Y, $X + String.Len(aText[aText.Max]), $Y) $hDoc.Insert(aText[aText.Max], $X, $Y) Else $hDoc.Insert(Text, $X, $Y) Endif Goto($hDoc.XAfter, $hDoc.YAfter) Endif $hDoc.End End Public Sub _BeforeInsert(Y1 As Integer, N As Integer) $hRows._BeforeInsert(Y1, N, $cLineLayout) End Public Sub _AfterInsert(Y1 As Integer, Y2 As Integer, N As Integer) Dim Y As Integer _ExpandInsert(Y1, N) If Not Wrap_Read() Then If $iLargestLine >= Y1 Then $iLargestLine += N For Y = Y1 To Y2 UpdateWidth(Y) Next Endif ' If $cLineLayout Then ' ' 'If N > 0 Then _UpdateAllHeight(True) ' ' Endif UpdateMargin UpdateCount End Private Function SelectedText_Read() As String If Not HasSelection() Then Return Return $hDoc.GetText($X, $Y, $SX, $SY) End '' Copy the current selected text to the clipboard. '' '' If no text is selected, nothing is done. Public Sub Copy() If Not HasSelection() Then Return Clipboard.Copy(Me.SelectedText) End '' Paste the contents of the clipboard inside the editor. Public Sub Paste() Dim sText As String If Clipboard.Type <> Clipboard.Text Then Return sText = Clipboard.Paste("text/plain") If Not sText Then Return Insert(sText) End '' Select all editor contents Public Sub SelectAll() Goto(0, 0) Goto(-1, $hDoc.Max, True) End '' Remove the text located between two cursor positions. '' '' - ~X1~ and ~Y1~ are the column and row of the first position. '' - ~X2~ and ~Y2~ are the column and row of the other position. '' - Set ~Right~ to 'TRUE' if the cursor was at the beginning of the selection. Public Sub Remove(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer, Optional bRight As Boolean) 'Goto(X1, Y1) If Y1 = Y2 And If Abs(X1 - X2) = 1 Then $hDoc.Remove(X1, Y1, X2, Y2, bRight) Goto($hDoc.XAfter, $hDoc.YAfter) Return Endif $hDoc.Begin $hDoc.Remove(X1, Y1, X2, Y2, bRight) Goto($hDoc.XAfter, $hDoc.YAfter) $hDoc.End End Public Sub _AfterRemove(Y1 As Integer, Y2 As Integer) Dim X As Integer Dim Y As Integer If Y1 > Y2 Then Swap Y1, Y2 _ClearCachePos If Y2 > Y1 Then $hRows._AfterRemove(Y1, Y2, $cLineLayout) Endif _ExpandRemove(Y1, Y2) Y = Min($Y, $hDoc.Max) X = Min($X, $hDoc.LineLength[Y]) If X <> $X Or If Y <> $Y Then Goto(X, Y) $SX = $X $SY = $Y If Not Wrap_Read() Then If $iLargestLine >= Y1 Then If $iLargestLine <= Y2 Then $iLargestLine = -1 UpdateWidth Else $iLargestLine -= Y2 - Y1 Endif Endif Else 'If Y2 > Y1 Then _UpdateAllHeight(True) Endif UpdateMargin UpdateCount End Private Sub DeleteLeft() Dim sTab As String If DeleteSelection() Then Return '$X = NormalizeColumn($X, $Y) If $X = 0 Then If $Y > 0 Then Remove($hDoc.LineLength[$Y - 1], $Y - 1, 0, $Y) Endif Else sTab = GetLineIndentText($Y) If Len(sTab) = Len($hDoc.Lines[$Y]) Then If Right(sTab) = "\t" Then Remove($X - 1, $Y, $X, $Y) Else If Not $bTabIndent Then Remove((($X - 1) \ $iTabSize) * $iTabSize, $Y, $X, $Y) Else Remove($X - 1, $Y, $X, $Y) Endif Else Remove($X - 1, $Y, $X, $Y) Endif Endif End Private Sub DeleteWordLeft() Dim X As Integer If DeleteSelection() Then Return If $X = 0 Then DeleteLeft Return Endif X = $hDoc.WordLeft($X, $Y) If X = $X Then Return Begin() Goto(X, $Y, True) DeleteSelection() End() End Private Sub DeleteWordRight() Dim X As Integer If DeleteSelection() Then Return If $X >= $hDoc.LineLength[$Y] Then DeleteRight Return Endif X = $hDoc.WordRight($X, $Y) If X = $X Then Return Begin() Goto(X, $Y, True) DeleteSelection() End() End Private Sub DeleteRight() If DeleteSelection() Then Return If $X >= $hDoc.LineLength[$Y] Then If $Y < $hDoc.Max Then Remove($X, $Y, 0, $Y + 1, True) Endif Else Remove($X, $Y, $X + 1, $Y, True) Endif End Private Sub GetLineIndent(Y As Integer, Optional bIgnoreEmpty As Boolean) As Integer Dim sText As String Dim I As Integer Dim sCar As String sText = $hDoc.Lines[Y] For I = 1 To Len(sText) sCar = Mid$(sText, I, 1) If sCar <> " " And If sCar <> "\t" Then Break Next If bIgnoreEmpty And If I > Len(sText) Then Return -1 Return I - 1 End Private Sub GetLineIndentText(Y As Integer) As String Return String.Left($hDoc.Lines[Y], GetLineIndent(Y)) End ' Private Sub IsVisible(Y As Integer) As Boolean ' ' If Y < $hView.RowAt(0) Then Return ' If Y > $hView.RowAt($hView.ClientH - 1) Then Return ' Return True ' ' End Private Sub CheckMatch() Dim sCar As String Dim X, Y As Integer Dim iMatch As Integer Dim N, L As Integer Dim sOther As String Dim sLine As String Dim iLen As Integer Dim iOldXM, iOldYM As Integer If $iSaveCursor Then Return iOldXM = $XM iOldYM = $YM $XM = 0 $YM = -1 If $bShowBraces Then Y = $Y X = Min($hDoc.LineLength[Y], $X) If X > 0 Then sCar = String.Mid$($hDoc.Lines[Y], X, 1) iMatch = InStr(MATCH_STRING, sCar) If iMatch Then Goto FIND_MATCH Endif Inc X sCar = String.Mid$($hDoc.Lines[Y], X, 1) iMatch = InStr(MATCH_STRING, sCar) If iMatch Then Goto FIND_MATCH Endif Goto FOUND FIND_MATCH: If Odd(iMatch) Then sOther = Mid$(MATCH_STRING, iMatch + 1, 1) Else sOther = Mid$(MATCH_STRING, iMatch - 1, 1) Endif L = 1 Dec X $XMO = X $YMO = Y sLine = $hDoc.Lines[Y] iLen = $hDoc.LineLength[Y] Do If Odd(iMatch) Then Inc X While X >= iLen X = 0 Inc Y If Y > $hDoc.Max Then Goto FOUND Inc N If N > 1000 Then Goto FOUND sLine = $hDoc.Lines[Y] iLen = $hDoc.LineLength[Y] Wend Else Dec X While X < 0 Dec Y If Y < 0 Then Goto FOUND Inc N If N > 1000 Then Goto FOUND sLine = $hDoc.Lines[Y] X = $hDoc.LineLength[Y] - 1 Wend Endif Select Case String.Mid$(sLine, X + 1, 1) Case sOther Dec L If L = 0 Then $XM = X $YM = Y Goto FOUND Endif Case sCar Inc L End Select Loop FOUND: If $XM <> iOldXM Or If $YM <> iOldYM Then _RefreshLine(iOldYM) _RefreshLine($Y) _RefreshLine($YM) Endif End Private Sub GetLineIndentMark(Y As Integer, Optional sText As String) As Integer Dim P As Integer If IsMissing(sText) Then sText = $hDoc.Lines[Y] P = Len(LTrim(sText)) If P = 0 Then P = GetTabSizeAround(Y) + 1 P = LinePos(Y, String.Len(sText)).X + (P - String.Len(sText)) * $iSpaceWidth Else P = Len(sText) - P P = LinePos(Y, P).X Endif Return P End Private Sub CheckIndentMark() Dim Y1, Y2 As Integer Dim IM1, IM2 As Integer Dim IY1 As Integer Dim IY2 As Integer Dim IP As Integer Dim IM0 As Integer Dim bStop As Boolean Dim bLimit1 As Boolean Dim bLimit2 As Boolean Dim bEqual2 As Boolean Dim bEqual1 As Boolean If $iSaveCursor Then Return IM0 = GetLineIndentMark($Y) If IM0 = 0 Then Goto SET_RESULT bStop = False Y1 = $Y While Y1 > 0 Dec Y1 If Not Trim($hDoc.Lines[Y1]) Then Continue IM1 = GetLineIndentMark(Y1) If IM1 < IM0 Then bLimit1 = True Break Else If IM1 > IM0 Then If Not bEqual1 Then bStop = True Else If bStop Then bLimit1 = True Break Endif bEqual1 = True Endif Wend bStop = False Y2 = $Y While Y2 < $hDoc.Max Inc Y2 If Not Trim($hDoc.Lines[Y2]) Then Continue IM2 = GetLineIndentMark(Y2) If IM2 < IM0 Then bLimit2 = True Break Else If IM2 > IM0 Then If Not bEqual2 Then bStop = True Else If bStop Then bLimit2 = True Break Endif bEqual2 = True Endif Wend 'Debug "----" 'Debug "Y1=";; Y1 + 1;; "Y2=";; Y2 + 1;; "bLimit1=";; bLimit1;; "bLimit2=";; bLimit2;; "bEqual1=";; bEqual1;; "bEqual2=";; bEqual2 If bLimit1 And If bLimit2 Then IM1 = GetLineIndentMark(Y1) IM2 = GetLineIndentMark(Y2) If IM1 < IM2 Then If IM2 = IM0 Then Y1 = $Y Else If IM1 > IM2 Then If IM1 = IM0 Then Y2 = $Y Endif Else If bLimit1 Then Y2 = $Y Else If bLimit2 Then Y1 = $Y Endif 'If bEqual1 Or If bEqual2 Then IP = Max(GetLineIndentMark(Y1), GetLineIndentMark(Y2)) 'Else 'IP = Min(GetLineIndentMark(Y1), GetLineIndentMark(Y2)) 'Endif If IP = 0 Then IY1 = 0 IY2 = 0 Else IY1 = Y1 IY2 = Y2 Endif 'Debug "=> "; IY1 + 1;; IY2 + 1;; IP SET_RESULT: If IP <> $IP Or If IY1 <> $IY1 Or If IY2 <> $IY2 Then If $IP Then _RefreshLine($IY1, $IY2 - $IY1 + 1) $IP = IP $IY1 = IY1 $IY2 = IY2 If $IP Then _RefreshLine($IY1, $IY2 - $IY1 + 1) Endif End Public Sub _RefreshLine(Y As Integer, Optional N As Integer = 1) Dim I As Integer Dim hPict As Picture If Y < 0 Or If Y > $hDoc.Max Or If N <= 0 Then Return N = Min(N, $hDoc.Count - Y) If Not $bRemoteDisplay Then For I = Y To Y + N - 1 hPict = $cCacheLine[I] If hPict Then $iCacheLineH -= hPict.H $cCacheLine.Remove(I) Endif Next Endif If N = 1 Then $hView.RefreshRect(0, $hRows._GetRowY(Y), $hView.ScrollW, $hRows._GetRowHeight(Y)) Else $hView.RefreshRect(0, $hRows._GetRowY(Y), $hView.ScrollW, $hRows._GetRowY(Y + N) - $hRows._GetRowY(Y)) Endif End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ReadOnly_Write(Value As Boolean) If Me.DiffMode And Not Value Then Return $bReadOnly = Value $hTimerCursor.Enabled = Not Value $hView.Mouse = If($bReadOnly, Mouse.Default, Mouse.Text) Refresh End Private Function Highlight_Read() As String Return $hDoc.Highlight End Private Sub Highlight_Write(Value As String) $hDoc.Highlight = Value If $bShowPreview Then $hSideBarViewer.Highlight = Value End Private Function LineNumberOffset_Read() As Integer Return $iLineNumberOffset End Private Sub LineNumberOffset_Write(Value As Integer) $iLineNumberOffset = Value UpdateMargin Refresh End Private Function TabSize_Read() As Integer Return $iTabSize End Private Sub TabSize_Write(Value As Integer) $iTabSize = Max(1, Value) CalcSizes End Private Sub GetSelection(ByRef X1 As Integer, ByRef Y1 As Integer, ByRef X2 As Integer, ByRef Y2 As Integer) X1 = $X Y1 = $Y X2 = $SX Y2 = $SY If Y1 > Y2 Then Swap X1, X2 Swap Y1, Y2 Endif If X1 > X2 Then Swap X1, X2 Endif End Private Sub GetTab(Optional X As Integer) As String If $bTabIndent Then Return "\t" Else Return Space$($iTabSize - X Mod $iTabSize) Endif End Private Sub DoIndent(bBack As Boolean) Dim X1, Y1, X2, Y2 As Integer Dim Y As Integer Dim iInd As Integer Dim sTab As String Dim I As Integer If Not HasSelection() Then If Not bBack Then Insert(GetTab($X)) Return Endif Goto(0, $Y) Goto(-1, $Y, True) Endif GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2) If X2 = 0 Then Dec Y2 iInd = 1024 For Y = Y1 To Y2 I = GetLineIndent(Y, True) If I >= 0 Then iInd = Min(iInd, I) If iInd = 0 Then Break Next If bBack And iInd = 0 Then Return $hDoc.Begin If Not bBack Then sTab = GetTab(iInd) For Y = Y1 To Y2 Goto(0, Y) Insert(sTab) Next Else If $bTabIndent Then sTab = "\t" Else sTab = Space$(Min(iInd, $iTabSize)) Endif For Y = Y1 To Y2 If $hDoc.Lines[Y] Begins sTab Then Remove(0, Y, Len(sTab), Y) Next Endif Goto(0, Y1) Goto(0, Y2 + 1, True) $hDoc.End End '' Start a serie of changes that will be undone in one shot. '' '' ## See also '' - [../end] Public Sub Begin() $hDoc.Begin End '' End a serie of changes. '' '' ## See also '' - [../begin] Public Sub End() $hDoc.End End Private Function Length_Read() As Integer Return $hDoc.Length End Private Function Border_Read() As Boolean Return $hVPanel.Border <> Border.None End Private Sub Border_Write(Value As Boolean) $hVPanel.Border = If(Value, Border.Plain, Border.None) End Private Function ScrollBar_Read() As Integer Return $iScrollBar '$hView.ScrollBar End Private Sub ScrollBar_Write(Value As Integer) $iScrollBar = Value Select Case $iScrollBar Case Scroll.None, Scroll.Horizontal $hView.ScrollBar = $iScrollBar If $bShowPreview Then $hSideBar.Hide Case Scroll.Vertical If $bShowPreview Then $hView.ScrollBar = Scroll.None $hSideBar.Show Else $hView.ScrollBar = $iScrollBar Endif Case Scroll.Both If $bShowPreview Then $hView.ScrollBar = Scroll.Horizontal $hSideBar.Show Else $hView.ScrollBar = $iScrollBar Endif End Select End Public Sub _ClearCachePos(Optional Y As Integer = -1) If Y >= 0 Then Try $cCachePos.Remove(Y) Else $cCachePos.Clear Endif End Public Sub _ResizeContents() If $bNoResizeContents Then Return If $iWidth < $hView.ScrollWidth Then _UpdateAllHeight Else If $iWidth > $hView.ScrollWidth And If HasWidthLayout() Then _UpdateAllHeight Endif ClearCacheLine $hView.ResizeContents($iWidth, $hRows._GetHeight()) End Private Sub CheckStyle() If $bStyleChanged Then $iBackground = $hStyles[Highlight.Background].Color $iForeground = $hStyles[Highlight.Normal].Color $iSelectedBackground = $hStyles[Highlight.Selection].Color $iLimitColor = Color.Gradient($iBackground, $hStyles[Highlight.Comment].Color) $iIndentColor = Color.SetAlpha($iLimitColor, 160) $iMatchColor = $hStyles[Highlight.Highlight].Color '$iIndentColor = Color.Gradient($iBackground, $iForeground) $iMarginColor = Color.SetAlpha($iForeground, 192) $iCurrentColor = Color.SetAlpha($iForeground, 248) CalcBoldWidth $hMultiLineImage = Null $bStyleChanged = False Endif End Public Sub View_Draw() Dim I As Integer Dim XO, YO, XX, YY, X, Y, H As Integer Dim iRow, iRow2 As Integer Dim hClip As Rect Dim hRect As Rect Dim aRow As Integer[] Dim iMaxRow As Integer Dim W, NL As Integer 'Dim hImage As Image Dim hPict As Picture Dim iCount As Integer Dim YR As Integer Dim HR As Integer 'Dim bHighlight As Boolean If Not $bUpdateHeightAllowed Then $bUpdateHeightAllowed = True _UpdateAllHeight(True) Endif CheckStyle 'Debug Me.Font.ToString();; Draw.Font.ToString() iCount = $hDoc.Count NL = $hView.ClientH \ $hRows.H + 1 hClip = Paint.ClipRect If iCount < NL Then Paint.FillRect(hClip.X, hClip.Y, hClip.W, hClip.H, $iBackground) iRow = $hRows._FindRowFromPos($hView.ScrollY + hClip.Y) iRow2 = $hRows._FindRowFromPos($hView.ScrollY + hClip.Y + hClip.H - 1) If iRow2 = CDocument.ROW_NOT_FOUND Then iRow2 = $hRows.Count - 1 XO = -$hView.ScrollX XX = XO YO = -$hView.ScrollY YY = YO + $hRows._GetRowY(iRow) hClip = Paint.ClipRect Y = YY If System.RightToLeft Then X = $hView.ClientW Else X = 0 Endif ' Cells hRect = New Rect($hView.ClientX - $hView.Proxy.X, $hView.ClientY, $hView.ClientW, $hView.ClientH) hClip = hClip.Intersection(hRect) If Not hClip Then Return iRow = _RealToView(iRow) iRow2 = _RealToView(iRow2) iMaxRow = iRow2 - iRow aRow = New Integer[iMaxRow + 1] For I = 0 To iMaxRow aRow[I] = _ViewToReal(iRow + I) Next 'bHighlight = $hDoc.StartHighlight() $hDoc.HighlightUntil(aRow[aRow.Max]) Y = YY For I = 0 To iMaxRow iRow = aRow[I] If iRow >= iCount Then Break ' If bHighlight Then ' If iRow <> $Y Or If Not $hDoc.Info(iRow).Modified Then $hDoc.HighlightLine(iRow) ' Endif H = $hRows._GetRowHeight(iRow) If $bShowCurrent And If iRow = $Y Then YR = Y HR = H Endif If H >= $hView.ClientH Or If $bRemoteDisplay Then Paint.Save DrawLine(XX, Y, $iWidth, H, iRow) ',Y) Paint.Restore Else hPict = $cCacheLine[iRow] If Not hPict Then hPict = New Picture($iWidth, H) hPict.Fill($iBackground) Paint.Begin(hPict) Paint.Font = $hFont DrawLine(0, 0, $iWidth, H, iRow) ', Y) Paint.End $cCacheLine[iRow] = hPict $iCacheLineH += H Paint.DrawPicture(hPict, XX, Y) While $iCacheLineH > $hView.ClientH For Each hPict In $cCacheLine $iCacheLineH -= hPict.H $cCacheLine.Remove($cCacheLine.Key) Break Next Wend Else Paint.DrawPicture(hPict, XX, Y) Endif Endif Y += H Next 'If bHighlight Then $hDoc.EndHighlight() W = $MW W -= $iWidthModified 'If W > 0 Then Paint.FillRect(XX + $hView.ScrollX, hClip.Y, W, hClip.H, $iMarginColor) If $MW Then Paint.Font = $hFontNumber Y = YY For I = 0 To iMaxRow iRow = aRow[I] If iRow < 0 Then Y += $hRows._GetRowHeight(iRow) Continue Endif If iRow >= iCount Then Break Paint.Save H = $hRows._GetRowHeight(iRow) DrawMargin(XX, Y, $iWidth, H, iRow) Paint.Restore Y += H Next Paint.FillRect(XX + $hView.ScrollX + W - 1, hClip.Y, 1, hClip.H, $iMarginColor) Endif If HR Then XX += $MW - $iWidthModified Paint.FillRect(XX, YR, $iWidth, 1, $iMarginColor) Paint.FillRect(XX, YR + HR - 1, $iWidth, 1, $iMarginColor) Paint.FillRect(XX, YR + 1, $iWidth, HR - 2, $iCurrentColor) Endif $hTimerCacheLine.Stop $hTimerCacheLine.Start 'PrintCache End Public Sub View_Resize() UpdateWidth End Private Function ShowLimit_Read() As Boolean Return $bShowLimit End Private Sub ShowLimit_Write(Value As Boolean) $bShowLimit = Value Refresh End Private Function ShowCurrent_Read() As Boolean Return $bShowCurrent End Private Sub ShowCurrent_Write(Value As Boolean) $bShowCurrent = Value Refresh End Private Function ShowLineNumber_Read() As Boolean Return $bShowLineNumber End Private Sub ShowLineNumber_Write(Value As Boolean) $bShowLineNumber = Value UpdateMargin Refresh End Private Function ShowModified_Read() As Boolean Return $bShowModified End Private Sub ShowModified_Write(Value As Boolean) $bShowModified = Value UpdateMargin Refresh End '' Return a virtual object representing a specific line. '' '' - ~Line~ is the line number of the returned object. Public Sub _get(({Line}) As Integer) As _TextEditor_Line Dim hLine As _TextEditor_Line hLine = New _TextEditor_Line Object.Attach(hLine, Me, "Line") hLine._Line = {Line} Return hLine End Private Function Count_Read() As Integer Try Return $hDoc.Count End Public Sub View_Scroll() If $hView.ScrollX <> $iLastScrollX Then ClearCacheLine $iLastScrollX = $hView.ScrollX Endif If $bShowPreview Then $hSideBar.Refresh Raise Scroll End Public Sub _RaiseChange() If $hTimerChange Then Return $hTimerChange = New Timer As "TimerChange" RefreshSideBar $hTimerChange.Trigger End Public Sub TimerChange_Timer() If Not $hTimerChange Then Return $hTimerChange = Null Raise Change End Private Function ShowPosition_Read() As Boolean Return $bShowPosition End Private Sub UpdatePosition() Dim sText As String If $hLabel And If $hLabel.Visible Then If $bOverwrite Then sText &= " Overwrite" sText &= " " & CStr($X + 1) & " : " & CStr($Y + 1) $hLabel.Text = " " & Trim(sText) & " " $hLabelFrame.Move($hView.ClientW - $hLabel.W, $hView.ClientH - $hLabel.H, $hLabel.W, $hLabel.H) $hLabel.Move(0, 0) Endif End Private Sub ShowPosition_Write(Value As Boolean) Dim hSave As Container $bShowPosition = Value If $bShowPosition Then If Not $hLabel Then hSave = $hView._Container $hView._Container = Null $hLabelFrame = New Panel($hView) $hView._Container = hSave $hLabelFrame.Background = Color.SetAlpha($hStyles[Highlight.Background].Color, 64) $hLabelFrame.Ignore = True $hLabel = New Label($hLabelFrame) ' TODO: NULL + gb.gtk => crash! $hLabel.AutoResize = True $hLabel.Font = Font[Me.Parent.Font.ToString()] ' TODO: Setting font directly sets nothing $hLabel.Foreground = $hStyles[Highlight.Normal].Color $hLabel.Show Endif UpdatePosition Else If $hLabel Then $hLabelFrame.Delete $hLabel = Null $hLabelFrame = Null Endif Endif End Public Sub View_Arrange() UpdatePosition If $cLineLayout Then UpdateWidth End Private Function Overwrite_Read() As Boolean Return $bOverwrite End Private Sub Overwrite_Write(Value As Boolean) $bOverwrite = Value UpdatePosition _RefreshLine($Y) End Private Function ShowIcon_Read() As Boolean Return $bShowIcon End Private Sub ShowIcon_Write(Value As Boolean) $bShowIcon = Value UpdateMargin Refresh End Private Function LineHeight_Read() As Integer Return $LH End Private Function Font_Read() As Font Return $hView.Font End Private Sub Font_Write(Value As Font) $hView.Font = Value End Private Function Current_Read() As _TextEditor_Line Return _get($Y) End Private Function StopLine_Read() As Integer Return $iStopLine End Private Sub StopLine_Write(Value As Integer) $iStopLine = Value Refresh End Private Function EndOfLine_Read() As Integer Return $hDoc.EndOfLine End Private Sub EndOfLine_Write(Value As Integer) $hDoc.EndOfLine = Value End Private Function Breakpoints_Read() As Integer[] Return $hDoc.Breakpoints End Private Sub Breakpoints_Write(Value As Integer[]) $hDoc.Breakpoints = Value End Private Function Bookmarks_Read() As Integer[] Return $hDoc.Bookmarks End Private Sub Bookmarks_Write(Value As Integer[]) $hDoc.Bookmarks = Value End '' Select a specific text range. '' '' - ~Column~ and ~Line~ define the starting column and line of the text range. '' - ~Column2~ and ~Line2~ define the ending column and line of the text range. Public Sub Select(Column As Integer, ({Line}) As Integer, Column2 As Integer, Line2 As Integer) Goto(Column, {Line}) Goto(Column2, {Line2}, True) End Private Function ShowBraces_Read() As Boolean Return $bShowBraces End Private Sub ShowBraces_Write(Value As Boolean) $bShowBraces = Value CheckMatch Refresh End Private Function Styles_Read() As _TextEditor_Styles Return $hStyles End '' Find the line position of the previous function limit. '' '' - ~Y~ is the line position where the search starts. '' '' If no limit is found, '-1' is returned. Public Sub FindPreviousLimit(Y As Integer) As Integer Do Dec Y If Y < 0 Then Return -1 If $hDoc.Info(Y).Limit Then Return Y Loop End '' Find the line position of the next function limit. '' '' - ~Y~ is the line position where the search starts. '' '' If no limit is found, '-1' is returned. Public Sub FindNextLimit(Y As Integer) As Integer Do Inc Y If Y > $hDoc.Max Then Return -1 $hDoc.HighlightUntil(Y) If $hDoc.Info(Y).Limit Then Return Y Loop End Private Function View_Read() As TextEditor Return Object.Parent($hDoc) End Private Sub View_Write(Value As TextEditor) Me.View._RemoveView(Me) If Value Then Value._AddView(Me) GotoCenter(Value.Column, Value.Line) Endif End Public Sub _GetDocument() As CDocument Return $hDoc End Public Sub _SetDocument(hDoc As CDocument) If hDoc Then If hDoc = $hDoc Then Return $hDoc = hDoc Else $hDoc = New CDocument Object.Attach($hDoc, Me, "Document") Endif Init If $hDoc.DiffMode Then _EnterDiffMode End Public Sub _AddView(hOther As TextEditor) If hOther = Me Then Return If Not _Views Then _Views = New TextEditor[] _Views.Add(hOther) hOther._SetDocument($hDoc) End Public Sub _RemoveView(hOther As TextEditor) If Not _Views Then Return Try _Views.Remove(_Views.FindByRef(hOther)) If _Views.Count = 0 Then _Views = Null End Public Sub View_GotFocus() $hTimerCursor.Start If Not $bFirstFocus Then $bFirstFocus = True EnsureVisible(True) Endif If Object.Parent($hDoc) <> Me Then _Views = Me.View._Views _RemoveView(Me) _AddView(Me.View) Me.View._Views = Null Object.Attach($hDoc, Me, "Document") Endif End Public Sub View_LostFocus() $hTimerCursor.Stop $hDoc.HighlightUntil($Y) $hTimerCacheLine.Trigger End Public Sub _GetViews() As TextEditor[] Dim aView As New TextEditor[] Dim hView As TextEditor If Object.IsValid(Me) Then aView.Add(Me) If _Views Then For Each hView In _Views If Object.IsValid(hView) Then aView.Add(hView) Next Endif Return aView End '' Return the relative horizontal position in pixels of a specific cursor position. '' '' - ~Column~ and ~Line~ are the column and line position. If omitted, the current cursor position is used. Public Sub ToPosX(Optional Column As Integer = $X, ({Line}) As Integer = $Y) As Integer Return LinePos({Line}, Column).X - $hView.ScrollX + $MW End '' Return the relative vertical position in pixels of a specific cursor position. '' '' - ~Line~ is the line position. If omitted, the current cursor position is used. Public Sub ToPosY(Optional ({Line}) As Integer = $Y) As Integer Return $hRows._GetRowY({Line}) - $hView.ScrollY End '' Return the relative position in pixels of a specific cursor position. '' '' - ~Column~ and ~Line~ are the column and line position. If omitted, the current cursor position is used. Public Sub ToPos(Optional ({Line}) As Integer, Column As Integer) As Point Dim hPoint As Point If IsMissing({Line}) Then {Line} = $Y If IsMissing(Column) Then Column = $X Endif hPoint = LinePos({Line}, Column).Copy() hPoint.X += $MW - $hView.ScrollX hPoint.Y += $hRows._GetRowY({Line}) - $hView.ScrollY Return hPoint End '' Convert a cursor position into pixel position '' '' - ~Line~ and ~Column~ define the cursor position. If omitted, they are replaced by the cursor position. '' '' This method returns the position in pixels as a [/comp/gb.qt4/point] object. Public Sub CursorAt(Optional ({Line}) As Integer, Column As Integer) As Point If IsMissing({Line}) Then {Line} = $Y If IsMissing(Column) Then Column = $X Return ToPos({Line}, Column) End '' Return the column located under the specified mouse cursor position. '' '' - ~X~ and ~Y~ are the position of the mouse cursor relative to the TextEditor control. Public Sub ToColumn(X As Integer, Y As Integer) As Integer Dim L As Integer Dim RY As Integer L = PosToLine(Y) RY = $hRows.RelativeY If L < 0 Then Return L Return PosToColumn(L, X, RY) End '' Return the line located under the specified mouse cursor position. '' '' - ~Y~ is the vertical position of the mouse cursor relative to the TextEditor control. Public Sub ToLine(Y As Integer) As Integer Return PosToLine(Y) End Private Sub GotoXY(X As Integer, Y As Integer, bMark As Boolean) As Boolean Dim L As Integer Dim RY As Integer Dim X0 As Integer L = PosToLine(Y) If L < 0 Then Return True RY = $hRows.RelativeY X0 = $X0 Goto(PosToColumn(L, X, RY), L, bMark) $X0 = X0 End '' Indent the selected text, or the current line if there is no selected text. Public Sub Indent() DoIndent(False) End '' Unindent the selected text, or the current line if there is no selected text. Public Sub Unindent() DoIndent(True) End Private Function Keywords_Read() As String[] Return $hDoc.Keywords End '' Undo the last change. Public Sub Undo() $hDoc.Undo End '' Redo the last undone change. Public Sub Redo() $hDoc.Redo End '' Convert the selected text to upper case. '' '' If no text is selected, that method does nothing. Public Sub UpperCase() Dim X As Integer Dim Y As Integer If Not HasSelection() Then Return X = $SX Y = $SY Insert(String.UCase($hDoc.GetText($X, $Y, $SX, $SY))) Goto($SX, $SY) Goto(X, Y, True) End '' Convert the selected text to lower case. '' '' If no text is selected, that method does nothing. Public Sub LowerCase() Dim X As Integer Dim Y As Integer If Not HasSelection() Then Return X = $SX Y = $SY Insert(String.LCase($hDoc.GetText($X, $Y, $SX, $SY))) Goto($SX, $SY) Goto(X, Y, True) End Private Sub PrintNewLine() 'Dim X As Integer = $X Goto(-1, $Y) Insert("\n") 'If $bTerminal Then Goto(X, $Y) End ' static void print_text(void *_object, const char *str, int lstr, bool esc = false) ' { ' QString s = QString::fromUtf8(str, lstr); ' int line, col; ' uint i, len; ' ' //fprintf(stderr, "-> %.*s\n", lstr, str); ' ' WIDGET->getCursor(&line, &col); ' /*if (col == 0) ' { ' DOC->remove(line, 0, line, DOC->lineLength(line)); ' WIDGET->cursorGoto(line, 0, false); ' }*/ ' ' // if (col < DOC->lineLength(line)) ' // { ' // end = col + s.length(); ' // if (end > DOC->lineLength(line)) ' // end = DOC->lineLength(line); ' // DOC->remove(line, col, line, end); ' // } ' ' if (!esc) ' { ' i = 0; ' for (;;) ' { ' if (col == MAX_CONSOLE_WIDTH) ' { ' print_newline(THIS); ' col = 0; ' } ' len = s.length() - i; ' if ((col + len) >= MAX_CONSOLE_WIDTH) ' len = MAX_CONSOLE_WIDTH - col; ' DOC->remove(WIDGET->getLine(), col, WIDGET->getLine(), col + len); ' WIDGET->insert(s.mid(i, len)); ' i += len; ' if (i >= (uint)s.length()) ' break; ' col += len; ' } ' } ' else ' { ' if (col >= MAX_CONSOLE_WIDTH) ' print_newline(THIS); ' DOC->remove(WIDGET->getLine(), col, WIDGET->getLine(), col + s.length()); ' WIDGET->insert(s); ' } ' ' //qApp->processEvents(QEventLoop::ExcludeUserInputEvents, 0); ' //BREAKPOINT(); ' } ' ' static int ansi_read_integer(const char *str, int len, int def, int *pos) ' { ' int value = 0; ' int n = 0; ' uchar c; ' ' str += *pos; ' len -= *pos; ' ' while (len > 0) ' { ' c = str[n]; ' if (c < '0' || c > '9') ' break; ' value = value * 10 + c - '0'; ' len--; ' n++; ' if (n > 6) ' { ' value = -1; ' break; ' } ' } ' ' if (n == 0) ' value = def; ' ' while (len > 0) ' { ' c = str[n]; ' len--; ' n++; ' if (c == ';' || c < '0' || c > '9') ' break; ' } ' ' *pos += n; ' return value; ' } ' ' Private Sub PrintAnsi(Text As String, I As Integer) As Integer ' ' Dim C As String ' Dim L As Integer ' ' If I > Len(Text) Then Return 0 ' ' C = Mid$(Text, I, 1) ' If InStr("[]()", C) Then ' For L = I + 1 To Len(Text) ' If IsLetter(Mid$(Text, L, 1)) Then Break ' Next ' L -= I ' Endif ' ' End ' static int ansi_process(void *_object, const char *str, int len) ' { ' uchar c; ' int n, m, l, pos; ' bool print; ' ' if (len == 0) ' return 0; ' ' c = *str; ' if (c == '[' || c == ']' || c == '(' || c == ')') ' { ' for (l = 0; l < len; l++) ' { ' c = str[l]; ' if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) ' break; ' } ' } ' else ' l = 0; ' ' if (l >= len) ' return 0; ' ' print = false; ' ' if (*str == '[') ' { ' pos = 1; ' ' switch(str[l]) ' { ' case 'A': ' n = ansi_read_integer(str, l, 1, &pos); ' if (n > 0) WIDGET->cursorRelGoto(-n, 0, false); ' break; ' ' case 'B': ' n = ansi_read_integer(str, l, 1, &pos); ' if (n > 0) WIDGET->cursorRelGoto(n, 0, false); ' break; ' ' case 'C': ' n = ansi_read_integer(str, l, 1, &pos); ' if (n > 0) WIDGET->cursorRelGoto(0, n, false); ' break; ' ' case 'D': ' n = ansi_read_integer(str, l, 1, &pos); ' if (n > 0) WIDGET->cursorRelGoto(0, -n, false); ' break; ' ' case 'G': ' n = ansi_read_integer(str, l, 1, &pos); ' if (n > 0) WIDGET->cursorGoto(WIDGET->getLine(), n - 1, false); ' break; ' ' case 'd': ' n = ansi_read_integer(str, l, 1, &pos); ' if (n > 0) WIDGET->cursorGoto(n - 1, WIDGET->getColumn(), false); ' break; ' ' case 'H': case 'f': ' n = ansi_read_integer(str, l, 1, &pos); ' m = ansi_read_integer(str, l, 1, &pos); ' ' while (DOC->numLines() < n) ' DOC->insertLine(DOC->numLines()); ' ' WIDGET->cursorGoto(n - 1, m - 1, false); ' THIS->terminal = TRUE; ' //qApp->processEvents(QEventLoop::ExcludeUserInputEvents, 0); ' break; ' ' case 'J': ' n = ansi_read_integer(str, l, 1, &pos); ' switch(n) ' { ' case 0: WIDGET->clearDocument(false, true); break; ' case 1: WIDGET->clearDocument(true, false); break; ' case 2: WIDGET->clearDocument(true, true); break; ' } ' ' case 'K': ' n = ansi_read_integer(str, l, 0, &pos); ' switch (n) ' { ' case 0: WIDGET->clearLine(false, true); break; ' case 1: WIDGET->clearLine(true, false); break; ' case 2: WIDGET->clearLine(true, true); break; ' } ' break; ' ' case 's': ' WIDGET->saveCursor(); ' break; ' ' case 'u': ' WIDGET->restoreCursor(); ' break; ' ' case 'X': ' n = ansi_read_integer(str, l, 1, &pos); ' WIDGET->clearAfter(n); ' break; ' ' default: ' print = FALSE; ' } ' } ' ' if (print) ' { ' fprintf(stderr, "ESC "); ' for (n = 0; n <= l; n++) ' { ' uchar c = str[n]; ' ' if (c < 32) ' fprintf(stderr, "\\x%02X", c); ' else ' fputc(c, stderr); ' } ' fputc('\n', stderr); ' ' //qApp->processEvents(QEventLoop::ExcludeUserInputEvents, 0); ' //BREAKPOINT(); ' } ' ' return l; ' } ' Private Sub PrintAnsi(Text As String, I As Integer) As Integer Dim C As String Dim N As Integer Dim aParam As New Integer[] Dim bDigit As Boolean C = Mid$(Text, I, 1) If C = "[" Then ' [ N = 1 Inc I While I <= Len(Text) Inc N C = Mid$(Text, I, 1) If IsDigit(C) Then If Not bDigit Then aParam.Add(0) bDigit = True Endif aParam[aParam.Max] = aParam[aParam.Max] * 10 + Asc(C) - 48 Else If C = ";" Then bDigit = False Else Break Endif Inc I Wend If I > Len(Text) Then $sPrintBuffer = Chr$(27) & Mid$(Text, I, N) Return N Endif Select Case C Case "A" If aParam.Count Then RelGoto(0, -aParam[0]) Else RelGoto(0, -1) Endif Case "B" If aParam.Count Then RelGoto(0, aParam[0]) Else RelGoto(0, 1) Endif Case "C" If aParam.Count Then RelGoto(aParam[0], 0) Else RelGoto(1, 0) Endif Case "D" If aParam.Count Then RelGoto(-aParam[0], 0) Else RelGoto(-1, 0) Endif Case "K" aParam.Resize(1) Select Case aParam[0] Case 0 ClearLine(False, True) Case 1 ClearLine(True, False) Case 2 ClearLine(True, True) End Select End Select Endif Return N End '' Print some text inside the editor. '' '' The difference with [../insert] is that some control characters are replaced by editor commands. '' '' For example, 'Chr$(12)' will clear the editor, Chr$(8) will delete the character left to the cursor and move the cursor left. '' Some VT-100 sequences are interpreted too. '' '' [[ warning '' This function is deprecated. You should not use it in new code. '' ]] Public Sub Print(Text As String) Dim I, J, C As Integer Dim bSaveOverwrite As Boolean $hDoc.DisableUndo bSaveOverwrite = $bOverwrite $bOverwrite = True $bPrint = True If $sPrintBuffer Then Text = $sPrintBuffer & Text $sPrintBuffer = "" Endif J = 1 For I = 1 To Len(Text) C = Asc(Text, I) If C < 32 Then If I > J Then Insert(Mid$(Text, J, I - J)) J = I + 1 If C = 9 Then Insert("\t") Else If C = 13 Then Goto(0, $Y) Else If C = 10 Then PrintNewLine Else If C = 12 Then Clear Else If C = 7 Then ' Flash Else If C = 8 Then If $X > 0 Then Goto($X - 1, $Y) Else If C = 27 Then I += PrintAnsi(Text, I + 1) J = I + 1 Else Insert("^" & Chr$(64 + C)) Endif Endif Next If I > J Then Insert(Mid$(Text, J, I - J)) $bOverwrite = bSaveOverwrite $bPrint = False $hDoc.EnableUndo End ' else if (c == 27) ' { ' i++; ' i += ansi_process(THIS, &str[i], len - i); ' j = i + 1; ' i--; ' } ' else ' { ' QString tmp; ' tmp.sprintf("^%c", c + 64); ' print_text(THIS, tmp, 2, true); ' } ' } ' } ' ' if (i > j) ' print_text(THIS, &str[j], i - j); ' ' DOC->end(); ' ' END_METHOD ' '' Find the previous line containing a specific string. '' '' - ~String~ is the string to search. The search is case insensitive. '' - ~Start~ is the line position where the search starts. '' '' If no string is found, '-1' is returned. Public Sub FindPreviousString(Search As String, Start As Integer) As Integer If IsAscii(Search) Then Do If Start < 0 Then Return -1 If InStr($hDoc.Lines[Start], Search, 1, gb.IgnoreCase) Then Return Start Dec Start Loop Else Do If Start < 0 Then Return -1 If String.InStr($hDoc.Lines[Start], Search, 1, gb.IgnoreCase) Then Return Start Dec Start Loop Endif End '' Find the next line containing a specific string. '' '' - ~String~ is the string to search. The search is case insensitive. '' - ~Start~ is the line position where the search starts. '' '' If no string is found, '-1' is returned. Public Sub FindNextString(Search As String, Start As Integer) As Integer If IsAscii(Search) Then Do If Start >= $hDoc.Count Then Return -1 If InStr($hDoc.Lines[Start], Search, 1, gb.IgnoreCase) Then Return Start Inc Start Loop Else Do If Start >= $hDoc.Count Then Return -1 If String.InStr($hDoc.Lines[Start], Search, 1, gb.IgnoreCase) Then Return Start Inc Start Loop Endif End Private Function ScrollX_Read() As Integer Return $hView.ScrollX End Private Sub ScrollX_Write(Value As Integer) $hView.ScrollX = Value End Private Function ScrollY_Read() As Integer Return $hView.ScrollY End Private Sub ScrollY_Write(Value As Integer) $hView.ScrollY = Value End Private Function ScrollWidth_Read() As Integer Return $hView.ScrollWidth End Private Function ScrollHeight_Read() As Integer Return $hView.ScrollHeight End '' --> /comp/gb.qt4/scrollview/scroll Public Sub Scroll(X As Integer, Y As Integer) $hView.Scroll(X, Y) End Private Function ShowCursor_Read() As Boolean Return Not $bHideCursor End Private Sub ShowCursor_Write(Value As Boolean) $bHideCursor = Not Value Refresh End '' Cut the current selected text and copy it to the clipboard. '' '' If no text is selected, the entire editor contents is cut. Public Sub Cut() If Not HasSelection() Then Goto(0, $Y) If $Y < $hDoc.Max Then Goto(0, $Y + 1, True) Else Goto(-1, $Y, True) Endif Endif Copy() DeleteSelection() End '' Refresh the editor view. Public Sub Refresh() ClearCacheLine $hView.Refresh RefreshSideBar End '' Reset the modified and saved flags of each line. Public Sub Reset() $hTimerChange = Null $hDoc.Reset End Public Sub _RaiseHighlight(sText As String) Raise Highlight(sText) End Public Sub _ViewToReal(Y As Integer) As Integer Dim I As Integer Dim M As Integer Dim J As Integer Dim YO As Integer If Y <= 0 Then Return Y YO = Y If $aFold Then Try Y = $cCacheView[Y] If Error Then M = $hDoc.Max For I = 0 To $aFold.Max Step 2 If Y <= $aFold[I] Then Break J = I + 1 If $aFold[J] < M Then Y += $aFold[J] - $aFold[I] Else Y = M + 1 Endif Next $cCacheView[YO] = Y Endif Endif Return Y End Public Sub _RealToView(Y As Integer) As Integer Dim I As Integer Dim YY As Integer Dim J As Integer Dim YO As Integer If Y <= 0 Then Return Y YO = Y If $aFold Then Try Y = $cCacheView[-Y] If Error Then YY = Y For I = 0 To $aFold.Max Step 2 If Y < $aFold[I] Then Continue J = I + 1 If Y <= $aFold[J] Then YY -= Y - $aFold[I] Else YY -= $aFold[J] - $aFold[I] Endif Next Y = YY $cCacheView[-YO] = Y Endif Endif Return Y End ' int GEditor::realToView(int row) const ' { ' uint i; ' GFoldedProc *fp; ' int y; ' ' //fprintf(stderr, "realToView: %d -> ", row); ' ' y = row; ' ' for (i = 0; i < fold.count(); i++) ' { ' fp = fold.at(i); ' if (row < fp->start) ' continue; ' if (row <= fp->end) ' y -= row - fp->start; ' else ' y -= fp->end - fp->start; ' } ' ' //fprintf(stderr, "%d\n", y); ' ' return y; ' } ' Private Sub UpdateCount() Dim Y As Integer 'Dim X As Integer _ClearCachePos $hRows.Count = _RealToView($hDoc.Max) + 1 Y = _ViewToReal(_RealToView($Y)) 'X = NormalizeColumn($X, Y) Goto($X, Y) $hView.Refresh RefreshSideBar End Public Sub _CheckRowWithFolding(Y As Integer) As Integer Dim NY As Integer Dim I As Integer If Not $aFold Then Return Y NY = Y For I = 0 To $aFold.Max Step 2 If Y > $aFold[I] And If Y <= $aFold[I + 1] Then NY = $aFold[I] Break Endif Next Return NY ' int GEditor::checkCursor(int y) ' { ' uint i; ' GFoldedProc *fp; ' int ny; ' ' ny = y; ' for (i = 0; i < fold.count(); i++) ' { ' fp = fold.at(i); ' if (y > fp->start && y <= fp->end) ' { ' ny = fp->start; ' break; ' } ' } ' ' return ny; ' } ' End Public Sub _CollapseRow(Y As Integer, Optional bNoRefresh As Boolean) Dim iStart As Integer Dim iEnd As Integer Dim iPos As Integer Dim I As Integer Dim NY As Integer If Not $hDoc.Info(Y).Limit Then Y = FindPreviousLimit(Y) Endif If Y < 0 Or If Y >= $hDoc.Count Then Return iStart = Y iEnd = FindNextLimit(iStart) If iEnd < 0 Then iEnd = $hDoc.Max Else Dec iEnd Endif iPos = -1 If Not $aFold Then $aFold = New Integer[] For I = 0 To $aFold.Max Step 2 If iEnd >= $aFold[I] And If iStart <= $aFold[I + 1] Then Return If iPos < 0 And If iStart < $aFold[I] Then iPos = I Endif Next If iPos < 0 Then $aFold.Add(iStart) $aFold.Add(iEnd) Else $aFold.Add(iStart, iPos) $aFold.Add(iEnd, iPos + 1) Endif NY = _CheckRowWithFolding(Y) If NY <> Y Then Goto($X, NY) If Not bNoRefresh Then $cCacheView.Clear UpdateCount Endif End Public Sub _ExpandRow(Y As Integer) Dim I As Integer For I = 0 To $aFold.Max Step 2 If Y >= $aFold[I] And If Y <= $aFold[I + 1] Then $aFold.Remove(I, 2) $cCacheView.Clear UpdateCount Break Endif Next End Private Function ShowExpand_Read() As Boolean Return $bShowExpand End Private Sub ShowExpand_Write(Value As Boolean) If Not Value Then ExpandAll $bShowExpand = Value UpdateMargin End Public Sub _IsRowExpanded(Y As Integer) As Boolean Dim D As Integer Dim F As Integer Dim I As Integer If Not $aFold Then Return True If Y < 0 Then Return True D = 0 F = $aFold.Count While F > D I = ((F + D) \ 4) * 2 If $aFold[I] = Y Then Return If $aFold[I] < Y Then D = I + 2 Else F = I Endif Wend Return True End Fast Public Sub _IsRowVisible(Y As Integer) As Boolean Dim D As Integer Dim F As Integer Dim I As Integer If Not $aFold Then Return True If Y <= 0 Then Return True D = 0 F = $aFold.Count While F > D I = ((F + D) \ 4) * 2 If $aFold[I] = Y Then Return True If $aFold[I] < Y Then If Y <= $aFold[I + 1] Then Return False D = I + 2 Else F = I Endif Wend Return True End Public Sub _GetLastVisibleRow() As Integer Dim N As Integer N = $hDoc.Max If Not _HasFolding() Then Return N If _IsRowVisible(N) Then Return N Return $aFold[$aFold.Max - 1] End Public Sub _IsFirstLineVisible() As Boolean Return $hRows._FindRowFromPos($hView.ScrollY) <= 0 End Private Sub ToggleRow(Y As Integer) If _IsRowExpanded(Y) Then _CollapseRow(Y) Else _ExpandRow(Y) Endif RefreshSideBar End ' bool GEditor::isFolded(int row) ' { ' uint i; ' GFoldedProc *fp; ' int d, f; ' ' d = 0; ' f = fold.count(); ' ' while (f > d) ' { ' i = (f + d) / 2; ' fp = fold.at(i); ' if (fp->start == row) ' return true; ' else if (fp->start < row) ' d = i + 1; ' else ' f = i; ' } ' ' return false; ' } ' ' Private Sub CheckFolded(Y As Integer) As Integer Dim I As Integer If Not $aFold Then Return Y For I = 0 To $aFold.Max Step 2 If Y <= $aFold[I + 1] Then If Y > $aFold[I] Then Return $aFold[I] Break Endif Next Return Y End ' int GEditor::checkFolded(int row) ' { ' uint i; ' GFoldedProc *fp; ' ' for (i = 0; i < fold.count(); i++) ' { ' fp = fold.at(i); ' if (row <= fp->end) ' { ' if (row > fp->start) ' return fp->start; ' else ' break; ' } ' } ' ' return row; ' } ' '' Collapse all functions Public Sub CollapseAll() Dim Y As Integer Y = 0 Do _CollapseRow(Y, True) Y = FindNextLimit(Y) If Y < 0 Then Break Loop $cCacheView.Clear UpdateCount EnsureVisible(True) RefreshSideBar End ' void GEditor::foldAll() ' { ' int row; ' ' if (getFlag(NoFolding)) ' return; ' ' row = 0; ' for(;;) ' { ' foldLine(row, true); ' row = doc->getNextLimit(row); ' if (row < 0) ' break; ' } ' ' setNumRows(numLines()); ' //updateContents(); ' } ' '' Expand all functions. Public Sub ExpandAll() $aFold = Null UpdateCount $cCacheView.Clear EnsureVisible(True) RefreshSideBar End ' void GEditor::unfoldAll() ' { ' foldClear(); ' setNumRows(numLines()); ' ensureCursorVisible(); ' //redrawContents(); ' } ' ' Private Sub _ExpandRemove(Y1 As Integer, Y2 As Integer) Dim N As Integer Dim I As Integer If Not $aFold Then Return If Y2 <= Y1 Then _ExpandRow(Y1) Return Endif N = Y2 - Y1 While I < $aFold.Count If Y2 < $aFold[I] Then $aFold[I] -= N $aFold[I + 1] -= N I += 2 Else If Y1 > $aFold[I + 1] Then I += 2 Else $aFold.Remove(I, 2) Endif Wend $cCacheView.Clear End ' void GEditor::foldRemove(int y1, int y2) ' { ' uint i; ' GFoldedProc *fp; ' int n; ' ' if (getFlag(NoFolding)) ' return; ' ' if (y2 < 0) ' { ' unfoldLine(y1); ' return; ' } ' ' n = y2 - y1 + 1; ' ' for (i = 0; i < fold.count(); i++) ' { ' fp = fold.at(i); ' if (y2 < fp->start) ' { ' fp->start -= n; ' fp->end -= n; ' } ' else if (y1 > fp->end) ' continue; ' else ' { ' fold.remove(i); ' i--; ' } ' } ' } ' Private Sub _ExpandInsert(Y As Integer, N As Integer) Dim I As Integer If Not $aFold Then Return If N = 0 Then _ExpandRow(Y) Return Endif While I < $aFold.Count If $aFold[I] > Y Then $aFold[I] += N $aFold[I + 1] += N I += 2 Else If $aFold[I + 1] >= Y Then '$aFold[I + 1] += N $aFold.Remove(I, 2) Else I += 2 Endif Wend $cCacheView.Clear End ' ' void GEditor::foldInsert(int y, int n) ' { ' uint i; ' GFoldedProc *fp; ' ' if (getFlag(NoFolding)) ' return; ' ' if (n == 0) ' { ' unfoldLine(y); ' return; ' } ' ' for (i = 0; i < fold.count(); i++) ' { ' fp = fold.at(i); ' if (fp->start > y) ' { ' fp->start += n; ' fp->end += n; ' } ' else if (fp->end >= y) ' { ' fp->end += n; ' fold.remove(i); //unfoldLine(fp->start); ' i--; ' } ' } ' } ' Private Sub MoveSelection(bUp As Boolean) Dim X, Y As Integer Dim X1, Y1, X2, Y2 As Integer Dim sText As String Dim bSelect As Boolean X = $X Y = $Y If Not HasSelection() Then X1 = 0 Y1 = $Y If $Y < $hDoc.Max Then X2 = 0 Y2 = $Y + 1 Else X2 = $hDoc.LineLength[$Y] Y2 = $Y Endif Else bSelect = True GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2) X1 = 0 If X2 > 0 And If Y2 < $hDoc.Max Then Inc Y2 X2 = 0 Endif Endif If bUp Then If Y1 = 0 Then Return Else If Y2 = $hDoc.Max Then Return Endif Goto(X1, Y1) Goto(X2, Y2, True) $hDoc.Begin sText = $hDoc.GetText(X1, Y1, X2, Y2) Remove(X1, Y1, X2, Y2) If bUp Then Dec Y1 Dec Y2 Else Inc Y1 Inc Y2 Endif Goto(X1, Y1) Insert(sText) If bSelect Then Goto(X1, Y1) Goto(X2, Y2, True) Else If bUp Then Goto(X, Y - 1) Else Goto(X, Y + 1) Endif Endif '$hDoc.HighlightFrom($Y) $hDoc.End End '' Save the current cursor position and selection range. '' '' Calls to this method and [../restorecursor] can be imbricated. Public Sub SaveCursor() If $iSaveCursor = 0 Then $aSaveCursor = [$X, $Y, $SX, $SY] Inc $iSaveCursor End '' Restore the cursor position and selection range saved by the [../savecursor] method. '' '' Calls to [../savecursor] and this method can be imbricated. Public Sub RestoreCursor() Dim X, Y, SX, SY As Integer Dec $iSaveCursor If $iSaveCursor Then Return X = $aSaveCursor[0] Y = $aSaveCursor[1] SX = $aSaveCursor[2] SY = $aSaveCursor[3] Goto(SX, SY) If X <> SX Or If Y <> SY Then Goto(X, Y, True) End Private Sub LayoutText(sText As String, iLen As Integer, iWMax As Integer) As Integer[] Dim aLayout As Integer[] Dim S As Integer Dim L As Integer Dim D As Integer Dim F As Integer Dim P As Integer Dim W As Integer aLayout = New Integer[] 'iWMax = Max(iWMax, 64) S = 1 L = iLen Do D = S F = L + 1 While F > D + 1 P = (D + F) \ 2 W = TextWidth(sText, S, P - S + 1) If W > iWMax Then F = P Else D = P Endif Wend If D >= L Then Break If String.Code(sText, D) > 32 Then ' For P = D - 1 DownTo S ' If InStr(" ,.;:-([])", String.Mid$(sText, P, 1)) Then ' Inc P ' Break ' Endif ' Next P = String.RInStr(sText, " ", D - 1) If P >= S And If Trim(String.Mid(sText, S, P - S + 1)) Then D = P Endif If aLayout.Count = 0 Then iWMax -= GetTextStartPos(sText) aLayout.Add(D - S + 1) S = D + 1 'sText = String.Mid$(sText, D + 1) 'If Not sText Then Break Loop Return aLayout End Private Sub LayoutDiff(Y As Integer, WMax As Integer) As Integer Dim aText As String[] Dim aDiffLayout As Integer[][] Dim sText As String Dim H As Integer Dim aLayout As Integer[] aText = $hDoc.DiffRemoved[Y] If aText Then aDiffLayout = New Integer[][] If Wrap_Read() Then For Each sText In aText aLayout = LayoutText(sText, String.Len(sText), WMax) If aLayout.Count = 0 Then aDiffLayout.Add(Null) Inc H Else aDiffLayout.Add(aLayout) H += aLayout.Count + 1 Endif Next Else H = aText.Count aDiffLayout.Resize(H) Endif If H > 1 Then $cDiffLayout[Y] = aDiffLayout Else $cDiffLayout[Y] = Null Endif Endif Return H End Public Sub _UpdateLineHeight(Y As Integer) Dim aLayout As Integer[] Dim H As Integer Dim WMax As Integer If Y = 0 Then _TopHeight = 0 If Not $cLineLayout And If Not $cDiffLayout Then Return H = 1 WMax = $hView.ClientW - $MW - $LH \ 2 If $cLineLayout Then aLayout = LayoutText($hDoc.Lines[Y], $hDoc.LineLength[Y], WMax) If aLayout.Count >= 1 Then $cLineLayout[Y] = aLayout H += aLayout.Count ' Print " -> [ "; ' For D = 0 To aLayout.Max ' Print aLayout[D];; ' Next ' Print "]" Else $cLineLayout[Y] = Null 'Print Endif Endif If $hDoc.DiffRemoved Then H += LayoutDiff(Y, WMax) If Y = 0 Then _TopHeight = LayoutDiff(-1, WMax) Endif $hRows._SetRowHeight(Y, H) If Y = 0 Then $hRows._SetRowHeight(-1, _TopHeight) If Y = $Y Then $XY = LinePos($Y, $X) If Y = $SY Then $SXY = LinePos($Y, $X) Try $cCachePos.Remove(Y) End Public Sub _UpdateAllHeight(Optional bNow As Boolean) Dim TY As Integer If Not $bUpdateHeightAllowed Then Return If Not $cLineLayout And If Not $cDiffLayout Then TY = $hRows._GetRowY($Y) - $hView.ScrollY $hRows.Clear _ClearCachePos $XY = LinePos($Y, $X) $SXY = LinePos($SY, $SX) $hView.ScrollY = $hRows._GetRowY($Y) - TY Return Endif If Not $hTimerHeight Then $hTimerHeight = New Timer As "TimerHeight" $hTimerHeight.Delay = 50 Endif If bNow Then TimerHeight_Timer Else $hTimerHeight.Start Endif End Public Sub TimerHeight_Timer() Dim Y As Integer Dim CY, TY As Integer Dim fTimer As Float 'Debug Me.Window.Title;; $iWidth;; $hView.ClientW If $hView.Scrolling Then Return fTimer = Timer Y = $hRows._GetRowY($Y) If Y < $hView.ScrollY Then TY = 0 CY = PosToLine(TY) Else If Y + $LH >= $hView.ScrollY + $hView.ClientH Then TY = $hView.ClientH CY = PosToLine(TY) Else TY = Y - $hView.ScrollY CY = $Y Endif 'If $hDoc.Count >= 10000 Then Inc Application.Busy $bNoResizeContents = True For Y = 0 To $hDoc.Max _UpdateLineHeight(Y) Next $bNoResizeContents = False _ClearCachePos _ResizeContents $hView.ScrollY = $hRows._GetRowY(CY) - TY 'EnsureVisible $hView.Refresh $XY = LinePos($Y, $X) $SXY = LinePos($SY, $SX) If $hTimerHeight Then $hTimerHeight.Stop fTimer = Timer - fTimer $hTimerHeight.Delay = Max(20, CInt(fTimer * 1500)) Endif 'If $hDoc.Count >= 10000 Then Dec Application.Busy End Private Function Wrap_Read() As Boolean Return $cLineLayout End Private Sub Wrap_Write(Value As Boolean) If Value Then If $cLineLayout Then Return $cLineLayout = New Collection Else If Not $cLineLayout Then Return $cLineLayout = Null Endif _UpdateAllHeight(True) CalcSizes EnsureVisible End ' Public Sub Test() ' ' Dim Y As Integer ' Dim RY As Integer ' Dim ORY As Integer = -1 ' ' For Y = 0 To 2500 ' RY = $hRows._GetRowY(Y) ' If _IsRowVisible(Y) Then ' Print Y; ": "; RY / $LH ' 'ORY = RY ' Endif ' Next ' ' End Public Sub _GetRowHeight(Y As Integer) As Integer Return $hRows._GetRowHeight(Y) End ' Public Sub _Lock() ' ' Inc $iLock ' ' End ' ' Public Sub _Unlock() ' ' Dec $iLock ' If $iLock = 0 Then ' ' Endif ' ' End ' Public Sub Styles__Change() If $bStyleChanged Then Return $bStyleChanged = True $hMultiLineImage = Null ClearCacheText If $hLabelFrame Then $hLabelFrame.Background = $hStyles[Highlight.Background].Color $hLabel.Foreground = $hStyles[Highlight.Normal].Color Endif If $bShowPreview Then $hSideBar.Background = $hStyles[Highlight.Background].Color SyncSideBarViewerStyles $hTimerSideBarRefresh.Trigger Endif $hView.Refresh End Private Function ShowSpaces_Read() As Boolean Return $bShowSpaces End Private Sub ShowSpaces_Write(Value As Boolean) $bShowSpaces = Value $hView.Refresh End Private Function ShowIndent_Read() As Boolean Return $bShowIndent End Private Sub ShowIndent_Write(Value As Boolean) $bShowIndent = Value $hView.Refresh End ' void GEditor::clearLine(bool before, bool after) ' { ' int ox = x; ' ' doc->begin(); ' ' if (before) ' { ' QString ins; ' ' doc->remove(y, 0, y, x + 1); ' ins.fill(' ', ox + 1); ' doc->insert(y, 0, ins); ' x = ox; ' } ' ' if (after) ' { ' doc->remove(y, x, y, doc->lineLength(y) -1); ' } ' ' doc->end(); ' } ' ' Private Sub ClearLine(bBefore As Boolean, bAfter As Boolean) Dim OX As Integer OX = $X $hDoc.Begin() If bBefore Then $hDoc.Remove(0, $Y, $X + 1, 0) $hDoc.Insert(Space$(OX + 1), 0, $Y) $X = OX Endif If bAfter Then $hDoc.Remove($X, $Y, $hDoc.LineLength[$Y], $Y) Endif $hDoc.End() End Private Sub RelGoto(DX As Integer, DY As Integer) Goto(Max(0, $X + DX), Max(0, $Y + DY)) End Public Sub TimerCacheLine_Timer() ClearCacheLine $hTimerCacheLine.Stop End Private Sub ClearCacheLine() If $bRemoteDisplay Then Return $cCacheLine.Clear $iCacheLineH = 0 End Private Sub ClearCacheText() If $bRemoteDisplay Then Return $cCacheText.Clear End Public Sub _HasFolding() As Boolean If $aFold And If $aFold.Count Then Return True End Private Sub DrawBarImage3() Dim aLines As String[] Dim H, F As Integer Dim I As Integer Dim N As Integer Dim iRow As Integer Dim aLineLength As Integer[] Dim iLen As Integer Dim Y As Integer Dim X As Integer Dim sLine As String Dim sIndent As String Dim aLinesInfo As CLineInfo[] Dim hInfo As CLineInfo Dim iCol As Integer Dim J As Integer Dim FX As Float Dim bModified As Boolean Dim bSaved As Boolean Dim iAlpha As Integer Dim iColComment As Integer Dim iColNormal As Integer Dim iColModified As Integer Dim iColSaved As Integer aLines = $hDoc.Lines aLineLength = $hDoc.LineLength aLinesInfo = $hDoc.LinesInfo N = _RealToView(aLines.Max) If N <= Paint.H Then F = 1 H = Max(N, CInt(Paint.H / 2)) Else F = CInt(N / Paint.H) H = (N + F - 1) \ F Endif FX = (Paint.w - 4) / 100 'Max(4, Min(8, F)) iAlpha = 255 - 128 \ F iColComment = Color.SetAlpha($hStyles[Highlight.Comment].Color, iAlpha) iColNormal = Color.SetAlpha($hStyles[Highlight.Normal].Color, iAlpha) iColModified = Color.SetAlpha(Color.Merge($iBackground, Color.Red, 0.4), 128) iColSaved = Color.SetAlpha(Color.Merge($iBackground, Color.Green, 0.4), 128) $hImageSideBar = New Image(Paint.Width - 1, H, $hStyles[Highlight.Background].Color) Paint.Begin($hImageSideBar) For I = 0 To N Step F bModified = False bSaved = False 'Paint.FillRect(0, Y, 4, 1, $iMarginColor) For J = I To Min(N, I + F - 1) iRow = _ViewToReal(J) sLine = RTrim(aLines[iRow]) iLen = Min(String.Len(sLine), 100) If sLine Then sLine = RTrim(aLines[iRow]) hInfo = aLinesInfo[iRow] X = 0 If IsSpace(Left(sLine)) Then sIndent = GetLineIndentText(iRow) sIndent = Replace(sIndent, "\t", Space$($iTabSize)) X = Len(sIndent) Endif If hInfo And If hInfo.Comment Then iCol = iColComment Else iCol = iColNormal Endif Paint.FillRect(X * FX + 5, Y, (iLen - X) * FX, 1, iCol) Endif If $bShowModified Then If Not bModified Then If hInfo Then If hInfo.Modified Then bModified = True Paint.FillRect(0, Y, Paint.W, 1, iColModified) Else If hInfo.Saved And If Not bSaved Then bSaved = True Paint.FillRect(0, Y, Paint.W, 1, iColSaved) Endif Endif Endif Endif Next Inc Y Next Paint.End End Public Sub SideBar_Draw() Dim D As Integer = Desktop.Scale * 2 Dim NL, Row As Integer Dim X, Y, W, H As Integer Dim iBorder As Integer = IIf(System.RightToLeft, 0, 1) Dim iCount As Integer = $hRows.Max '_RealToView($hDoc.Max) NL = $hView.ClientH \ $hRows.H + 1 Row = _RealToView($hRows._FindRowFromPos($hView.ScrollY)) $fBarLineHeight = Min(2, Paint.Height / (iCount + 1)) Paint.AntiAlias = False 'Barre Cache If Not $hImageSideBar Then DrawBarImage3() Paint.DrawImage($hImageSideBar, iBorder, 0, Paint.W - 1, Paint.H) 'Border Line Paint.FillRect(If(System.RightToLeft, Paint.W - 1, 0), 0, 1, Paint.H, $iLimitColor) 'Arrow Buttons If $iSideBarClick <> SIDEBAR_VIEW And If $hSideBar.Hovered Then If $hView.ScrollY > 0 Then Paint.FillRect(iBorder, 0, Paint.W - 1, D, Color.Background) Style.PaintArrow((Paint.W - D) / 2, 0, D, D, Align.Top) ' If($iSideBarStyle = 1, Style.Hovered, 0)) Endif If $hView.ScrollY < $hView.ScrollHeight - $hView.ClientHeight Then Paint.FillRect(iBorder, Paint.H - D, Paint.W - 1, D, Color.Background) Style.PaintArrow((Paint.W - D) / 2, Paint.H - D, D, D, Align.Bottom) ', If($iSideBarStyle = 2, Style.Hovered, 0)) Endif Endif 'ViewPort Rectangle $hRectSideBar = Rect(iBorder, $fBarLineHeight * Row, Paint.Width - 1, Max($fBarLineHeight * NL, 10)) Paint.Rectangle(iBorder, $fBarLineHeight * Row, Paint.Width - 1, $hRectSideBar.Height) Paint.Background = Color.SetAlpha(Color.SelectedBackground, 128) Paint.Fill() 'Draw the Tooltip If $iSideBarClick Then Paint.AntiAlias = True Paint.Background = Color.TooltipBackground W = Paint.Font.TextWidth(CStr(Row) & "00") H = Paint.Font.H * 2.8 Y = $iMY + D If Y + H > Paint.H Then Y = Max(0, $iMY - H - D) 'Y = Max(0, IIf(Paint.Height - ($iMY + (Paint.Font.H * 3 + 6)) < 0, $iMY - ((Paint.Font.H * 3 + 6)), $iMY - H)) X = IIf(System.RightToLeft, Paint.Width - W - 3, 3) Paint.Rectangle(X, Y, W, H, Paint.Font.H / 4) Paint.Fill 'Paint.Font.Grade = - 1 Paint.Background = Color.TooltipForeground 'Paint.DrawText(_ViewToReal((Row + 1)) & "\n-\n" & _ViewToReal(Min((Row + NL), iCount)), X + 3, y + 3, W - 6, H - 6, Align.Center) Paint.DrawText(CStr(PosToLine(0) + 1), X, Y, W, H \ 2, Align.Center) Paint.DrawText(CStr(PosToLine($hView.ClientH - $LH \ 2) + 1), X, Y + H - H \ 2, W, H \ 2, Align.Center) Paint.FillRect(X + D / 4, Y + H \ 2, W - D / 2, 1, Color.SetAlpha(Color.TooltipForeground, 128)) Endif End Private Sub SideBarClick(Y As Integer) $iMY = Y Y = Min(Max(0, Floor(((Y - $iMD)) / $fBarLineHeight)), $hRows.Max) '_RealToView($hDoc.Max)) Me.GotoCenter(0, _ViewToReal(Y)) End Public Sub SideBar_MouseMove() Dim iCurLine As Integer Dim X As Integer Dim D As Integer = Desktop.Scale * 2 Dim iCount As Integer = $hRows.Max '_RealToView($hDoc.Max) Dim iWhere As Integer If Mouse.Y < D Then iWhere = SIDEBAR_UP Else If Mouse.Y > Last.ClientH - D Then iWhere = SIDEBAR_DOWN Else iWhere = SIDEBAR_VIEW Endif If iWhere <> $iSideBarWhere Then $iSideBarWhere = iWhere $hSideBar.Refresh Endif Select Case $iSideBarClick Case SIDEBAR_VIEW $hSideBarViewer.Hide SideBarClick(Mouse.Y) Case SIDEBAR_UP, SIDEBAR_DOWN $hSideBarViewer.Hide Case Else If Not $hSideBarViewer.Visible Then UpdatePreviewViewer iCurLine = _ViewToReal(Min(Max(0, Floor((Mouse.Y - $iMD) / $fBarLineHeight)), iCount)) $hSideBarViewer.GotoCenter(0, iCurLine) X = IIf(System.RightToLeft, $hSideBar.Left + $hSideBar.Width, $hSideBar.Left - $hView.Width / 2) $hSideBarViewer.Move(X, Min(Max(1, Mouse.Y - ($hView.Height / 5) / 2), $hSideBar.Height - $hSideBarViewer.Height)) $hSideBarViewer.Raise $hSideBarViewer.Show End Select ' If Mouse.Y > $fBarLineHeight * iCount Then ' If Not $bSideBarLockViewer Then $hSideBarViewer.Hide ' Else ' If $iMD > 0 Then ' If Not $bSideBarLockViewer Then $hSideBarViewer.Hide ' Else ' If Not $bSideBarLockViewer Then ' If $hSideBarViewer.Visible Then ' X = IIf(System.RightToLeft, $hSideBar.Left + $hSideBar.Width, $hSideBar.Left - $hView.Width / 2) ' $hSideBarViewer.Move(X, Min(Max(1, Mouse.Y - ($hView.Height / 5) / 2), $hSideBar.Height - $hSideBarViewer.Height)) ' $hSideBarViewer.Raise ' 'iCurLine = Min(Max(0, Floor(((Mouse.y - $iMD)) / $fBarLineHeight)), iCount) ' iCurLine = _ViewToReal(Min(Max(0, Floor((Mouse.Y - $iMD) / $fBarLineHeight)), iCount)) ' 'If $hSideBarViewer.Line <> iCurLine Then ' $hSideBarViewer.GotoCenter(0, iCurLine) ' '$hSideBarViewer.Tag = iCurLine ' 'Endif ' Endif ' Endif ' Endif ' ' $iMY = Mouse.Y ' If Mouse.Left Then ' $bSideBarMouseDown = True ' If $iMD = 0 Then ' If $hRectSideBar.Contains(Mouse.x, Mouse.y) Then ' If Not $bSideBarLockViewer Then $hSideBarViewer.Hide ' $iMD = Mouse.y - $hRectSideBar.Top ' Endif ' Endif ' Endif ' ' Endif End Public Sub SideBar_Enter() $hSideBar.Refresh End Public Sub SideBar_Leave() $iSideBarWhere = SIDEBAR_NONE $iSideBarClick = SIDEBAR_NONE $hSideBar.Refresh '$hTimerSideBarViewer.Stop If Not $bSideBarLockViewer Then $hSideBarViewer.Hide End Public Sub TimerSideBarMouse_Timer() Dim DY As Integer DY = If($iSideBarClick = SIDEBAR_DOWN, $LH, -$LH) If $hView.ScrollY + DY < 0 Or If $hView.ScrollY + DY >= $hView.ScrollH Then Try $hTimerSideBarMouse.Stop $hTimerSideBarMouse = Null Else $hView.ScrollY += DY If Not $hTimerSideBarMouse Then $hTimerSideBarMouse = New Timer As "TimerSideBarMouse" $hTimerSideBarMouse.Delay = 250 $hTimerSideBarMouse.Start Else If $hTimerSideBarMouse.Delay <> 10 Then $hTimerSideBarMouse.Delay = 10 $hTimerSideBarMouse.Restart Endif Endif End Public Sub SideBar_MouseDown() If Mouse.Left Then SideBar_MouseMove $iSideBarClick = $iSideBarWhere Select Case $iSideBarClick Case SIDEBAR_UP, SIDEBAR_DOWN TimerSideBarMouse_Timer Case Else SideBarClick(Mouse.Y) End Select ' If $iSideBarStyle > 0 Then ' If Not $bSideBarLockViewer Then $hSideBarViewer.Hide ' Select Case $iSideBarStyle ' Case 1 ' $hView.ScrollY -= $LH ' Case 2 ' $hView.ScrollY += $LH ' End Select ' Else ' ' If $hRectSideBar.Contains(Mouse.x, Mouse.y) Then ' If Not $bSideBarLockViewer Then $hSideBarViewer.Hide ' $iMD = Mouse.y - $hRectSideBar.Top ' Else ' SideBarClick(Mouse.Y) ' $bSideBarMouseDown = True ' $iMY = Mouse.Y ' Endif ' ' Endif Endif ' If Mouse.Middle Then ' If $iSideBarStyle > 0 Then ' If $iSideBarStyle = 1 Then ' Me.GotoCenter($SX, 0) ' Else ' Me.GotoCenter($SX, $hDoc.Count) ' Endif ' Else ' If $hSideBarViewer.Visible Then $bSideBarLockViewer = Not $bSideBarLockViewer ' Endif ' Endif End Public Sub SideBar_MouseUp() $iSideBarClick = SIDEBAR_NONE $iMD = 0 '$iMY = -1 Try $hTimerSideBarMouse.Stop $hTimerSideBarMouse = Null $hSideBar.Refresh End Public Sub SideBar_MouseWheel() 'C'est po bien !!!! Mais bon. $hView.DrawingArea_MouseWheel End Public Sub TimerRefreshBar_Timer() $hImageSideBar = Null If $bShowPreview Then $hTimerSideBarRefresh.Stop $hSideBar.Refresh UpdatePreviewViewer Endif End Public Sub SideBar_Arrange() $hTimerSideBarRefresh.Restart End Private Function ShowPreview_Read() As Boolean Return $bShowPreview End Private Sub UpdateSideBarFont() Dim hFont As Font If Not $hSideBarViewer Then Return hFont = Me.Font.Copy() hFont.Grade -= 2 $hSideBarViewer.Font = hFont End Private Sub ShowPreview_Write(Value As Boolean) If $bShowPreview = Value Then Return $bShowPreview = Value If Value Then $hTimerSideBarRefresh = New Timer As "TimerRefreshBar" $hTimerSideBarRefresh.Delay = 250 ' $hTimerSideBarViewer = New Timer As "TimerShowPreviewViewer" ' $hTimerSideBarViewer.Delay = 100 $hSideBarViewer = New TextEditor(Me) As "SideBarViewer" $hSideBarViewer.Hide $hSideBarViewer.ReadOnly = True SyncSideBarViewerStyles $hSideBarViewer.ShowCursor = False $hSideBarViewer.Ignore = True $hSideBarViewer.Enabled = False $hSideBarViewer.ScrollBar = Scroll.None ScrollArea($hSideBarViewer.Proxy).NoShadow = True $hSideBar = New DrawingArea($hPanel) As "SideBar" $hSideBar.Width = Desktop.Scale * 8 $hSideBar.Background = $hStyles[Highlight.Background].Color $hSideBar.Tracking = True UpdateSideBarFont ScrollBar_Write($iScrollBar) Else If $hSideBar Then '$hSideBar.Hide $hSideBar.Delete $hSideBar = Null $hTimerSideBarRefresh.Stop $hTimerSideBarRefresh = Null $hSideBarViewer.Delete $hSideBarViewer = Null '$hTimerSideBarViewer.Stop '$hTimerSideBarViewer = Null ScrollBar_Write($iScrollBar) Endif Endif End Private Sub SyncSideBarViewerStyles() $hSideBarViewer.Styles._SetStyles($hStyles._GetStyles()) With $hSideBarViewer .ShowExpand = Me.ShowExpand .ShowIcon = Me.ShowIcon .ShowIndent = Me.ShowIndent .ShowLimit = Me.ShowLimit .ShowLineNumber = Me.ShowLineNumber .ShowModified = Me.ShowModified .ShowSpaces = Me.ShowSpaces .Highlight = Me.Highlight End With End ' Public Sub TimerShowPreviewViewer_Timer() ' ' $hSideBarViewer.Move($hSideBar.Left - $hView.Width / 2, Min(Max(1, $iMY - ($hView.Height / 5) / 2), $hSideBar.Height - $hSideBarViewer.Height), $hView.Width / 2, $hView.Height / 5) ' $iSideBarNBLines = Ceil(($hSideBarViewer.ClientH / $hSideBarViewer.LineHeight) / 2) ' $hSideBarViewer.View = Me ' $hSideBarViewer._SyncFolding() ' $hSideBarViewer.Show ' '$hSideBarViewer.ShowExpand = True ' $hSideBarViewer.Raise ' $hTimerSideBarViewer.Stop ' ' End Private Sub UpdatePreviewViewer() $hSideBarViewer.Resize($hView.Width / 2, $hView.Height / 5) $hSideBarViewer.View = Me $hSideBarViewer._SyncFolding() ' $hSideBarViewer.Show ' '$hSideBarViewer.ShowExpand = True ' $hSideBarViewer.Raise ' '$hTimerSideBarViewer.Stop End Public Sub SideBarViewer_MouseDown() $hSideBarViewer.Hide $bSideBarLockViewer = False End Public Sub SideBar_Menu() Stop Event End Public Sub _GetFolding() As Integer[] Return $aFold End Public Sub _SyncFolding() Dim hSrc As TextEditor hSrc = Me.View If hSrc = Me Then Return $aFold = hSrc._GetFolding() If $aFold Then $aFold = $aFold.Copy() End Private Function Mode_Read() As String Return $hDoc.Mode End Private Sub Mode_Write(Value As String) $hDoc.Mode = Value End Private Function CloseBraces_Read() As Boolean Return $hDoc.CloseBraces End Private Sub CloseBraces_Write(Value As Boolean) $hDoc.CloseBraces = Value End Private Function TabIndent_Read() As Boolean Return $bTabIndent End Private Sub TabIndent_Write(Value As Boolean) $bTabIndent = Value End Private Sub RefreshSideBar() If $bShowPreview Then $hTimerSideBarRefresh.Restart End '' Return the indent of a line or of a line range. '' '' - ~StartLine~ is the first line of the range. '' - ~EndLine~ is the last line of the range (not included). If not specified, the indent of the sole ~StartLine~ is returned. '' '' The indent is the smaller initial space characters part of each line. Public Sub GetIndent(StartLine As Integer, Optional EndLine As Integer) As String If EndLine = 0 Then EndLine = StartLine + 1 Return $hDoc.GetIndentText(StartLine, EndLine) End '' Return the highlighting a specific line. '' '' - ~Y~ is the line number. '' - The list of tokens is returned in ~Symbols~. '' - The highlight colors of each token is returnd in ~Types~. '' '' If no highlighting is associated with the specified line, ~Symbols~ and ~Types~ are set to 'NULL'. Public Sub GetHighlight(Y As Integer, ByRef Symbols As String[], ByRef Types As Integer[]) Dim aColors As Byte[] Dim sLine As String Dim I As Integer Dim P As Integer $hDoc.HighlightUntil(Y) Try aColors = $hDoc.LinesInfo[Y].Colors If Not aColors Then Symbols = Null Types = Null Return Endif Symbols = New String[] Types = New Integer[] sLine = $hDoc.Lines[Y] P = 1 For I = 0 To aColors.Max Step 2 Types.Add(aColors[I]) Symbols.Add(String.Mid$(sLine, P, aColors[I + 1])) P += aColors[I + 1] Next End Private Function DisabledBreakpoints_Read() As Integer[] Return $hDoc.DisabledBreakpoints End Private Sub DisabledBreakpoints_Write(Value As Integer[]) $hDoc.DisabledBreakpoints = Value End '' Highlight a specific string everywhere in the editor. '' '' - ~Text~ is the text to highlight. '' - If ~IgnoreCase~ is 'TRUE', then the text case is ignored. '' - If ~WordOnly~ is 'TRUE', then text is highlighted only if it is a entire word. '' '' The text is highlighted with the [Highlight.Highlight](/comp/gb.eval/highlight/highlight) color. Public Sub HighlightString(Text As String, Optional IgnoreCase As Boolean, Optional WordOnly As Boolean) $sHighlightString = Text $iHighlightStringLen = String.Len(Text) $iHighlightStringMode = If(IgnoreCase, gb.IgnoreCase, gb.Binary) $bHighlightWordOnly = WordOnly ClearCacheLine $hView.Refresh End Private Sub IsWordLimit(sCar As String) As Boolean sCar = String.RemoveDiacritics(sCar) If IsLetter(sCar) Or IsDigit(sCar) Or If InStr("_$", sCar) Then Return Return True End Private Function LastLine_Read() As Integer Return $LY End Private Function LastColumn_Read() As Integer Return $LX End Private Function CloseStrings_Read() As Boolean Return $hDoc.CloseStrings End Private Sub CloseStrings_Write(Value As Boolean) $hDoc.CloseStrings = Value End Private Function Max_Read() As Integer Return Count_Read() - 1 End '' Enter "diff mode". '' '' - ~Added~ is the list of line numbers that are added. These lines are highlighted with the [Highlight.Added](/comp/gb.eval/highlight/added) color. '' - ~Removed~ is a collection of string arrays indexed by line number, the string array containing the lines of text that were removed at that line number. '' The removed lines are highlighted with the [Highlight.Removed](/comp/gb.eval/highlight/removed) color. '' '' In "diff mode", the editor becomes read-only. '' '' ## See also '' - [../leavediffmode] Public Sub EnterDiffMode((Added) As Integer[], (Removed) As Collection) $hDoc.EnterDiffMode(Added, Removed) End Public Sub _EnterDiffMode() Dim bEnsureVisible As Boolean $cDiffLayout = New Collection $bDiffReadOnly = Me.ReadOnly Me.ReadOnly = True bEnsureVisible = _IsFirstLineVisible() _UpdateAllHeight(True) If bEnsureVisible Then $hView.EnsureVisible(0, 0, Me.ClientW, $LH) End '' Leave 'diff mode'. '' '' The editor returns to its normal state. '' '' ## See also '' - [../enterdiffmode] Public Sub LeaveDiffMode() $hDoc.LeaveDiffMode() End Public Sub _LeaveDiffMode() $cDiffLayout = Null Me.ReadOnly = $bDiffReadOnly _UpdateAllHeight(True) End Private Function DiffMode_Read() As Boolean Return $hDoc.DiffMode End '' Find the line position of the previous difference. '' '' - ~Y~ is the line position where the search starts. '' '' If no difference is found, '-1' is returned. Public Sub FindPreviousDiff(Y As Integer) As Integer Return $hDoc.FindPreviousDiff(Y) End '' Find the line position of the next difference. '' '' - ~Y~ is the line position where the search starts. '' '' If no difference is found, '-1' is returned. Public Sub FindNextDiff(Y As Integer) As Integer Return $hDoc.FindNextDiff(Y) End Private Sub ShowFind() If Not $hFind Then $hFind = New FFind($hVPanel) $hFind.H = Desktop.Scale * 3 $hFind.Show $hFind.SetFocus() End Public Sub _Search(sText As String, Optional bMoveNext As Boolean) As Boolean Dim HH As Integer Dim Y As Integer Dim X As Integer Dim YY As Integer HighlightString(sText, True) If Not sText Then EnsureVisible Return Endif If IsMissing(bMoveNext) Then Y = FindNextString(sText, $Y) Else If bMoveNext Then Y = FindNextString(sText, $Y + 1) Else Y = FindPreviousString(sText, $Y - 1) Endif If Y < 0 Then Return True X = String.InStr($hDoc.Lines[Y], sText) - 1 If IsMissing(bMoveNext) Then HH = $hRows.H YY = $hRows._GetRowY(Y) + LinePos(Y, X).Y $hView.EnsureVisible(0, YY, $hView.ClientW, HH) Else Goto(X, Y) Endif End '' Return if the editor contents is void. Public Sub IsVoid() As Boolean If $hDoc.Count > 1 Then Return If $hDoc.Length Then Return Return True End '' @{since 3.16} '' '' Return the selected lines if any. '' '' The selection is first extended so that partially selected lines are included in the selection. '' '' If nothing is selected, 'NULL' is returned Public Function GetSelectedLines() As String[] Dim X1, Y1, X2, Y2 As Integer If Not HasSelection() Then Return GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2) If X2 Then Inc Y2 Select(0, Y1, 0, Y2) Return $hDoc.Lines.Copy(Y1, Y2 - Y1) End gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode.class000066400000000000000000000150001411575327000241770ustar00rootroot00000000000000' Gambas class file Static Public Const Name As String = "" Static Public Const BRACES_OPEN As String = "([{" Static Public Const BRACES_CLOSE As String = ")]}" Static Public Const STRING_DELIM As String = "\"" Static Public Const ESCAPE_CHAR As String = "\\" Public CloseBraces As Boolean Public CloseStrings As Boolean Public InsideStringEscape As Boolean Static Public Sub _init() Try Component.Load("gb.util") End Static Public Sub _get(Type As String) As TextEditorMode Try Return Object.New("TextEditorMode_" & Type) 'Error.Raise("Cannot load highlighter: '" & Type & "'") Return New TextEditorMode End Public Sub IsIdentCar(sCar As String) As Boolean If IsLetter(sCar) Or If IsDigit(sCar) Then Return True End Private Sub IsSpacePunctCar(sText As String, iPos As Integer) As Boolean Dim sCar As String Try sCar = String.Mid$(sText, iPos, 1) If Not sCar Then Return True If Len(sCar) > 1 Then Return If IsPunct(sCar) Then Return True If IsSpace(sCar) Then Return True End Public Sub InsideString(hEditor As TextEditor) As Boolean Dim iLen As Integer Dim I As Integer Dim sInside As String Dim sLine As String Dim sCar As String Dim sDelim As String Dim iCol As Integer InsideStringEscape = False iCol = hEditor.Column If iCol = 0 Then Return sLine = hEditor.Current.Text iLen = hEditor.Current.Length sDelim = Me.STRING_DELIM For I = 1 To iCol sCar = String.Mid$(sLine, I, 1) If sCar = sInside Then sInside = "" Else If InStr(sDelim, sCar) Then If Not sInside Then sInside = sCar Else If sCar = ESCAPE_CHAR Then If sInside Then If I = iCol Then InsideStringEscape = True Inc I Endif Endif Next If sInside Then I = InStr(sLine, sInside, iCol + 1) If I = 0 Then InsideStringEscape = True Endif Endif Return sInside ' If Not sInside Then Return ' ' For I = I To iLen ' ' sCar = String.Mid$(sLine, I, 1) ' If sCar = sInside Then Return True ' If sCar = ESCAPE_CHAR Then Inc I ' ' Next ' ' Return False End Public Sub BetweenBraces(hEditor As TextEditor) As Boolean Dim sLine As String Dim X As Integer Dim iLen As Integer Dim iPos As Integer If InsideString(hEditor) Then Return sLine = hEditor.Current.Text iLen = hEditor.Current.Length X = hEditor.Column If X = 0 Or If X = iLen Then Return iPos = InStr(Me.BRACES_OPEN, String.Mid$(sLine, X, 1)) If iPos = 0 Then Return Return String.Mid$(sLine, X + 1, 1) = Mid$(Me.BRACES_CLOSE, iPos, 1) End Public Sub CanCloseBraces(hEditor As TextEditor) As Boolean Dim sLine As String Dim X As Integer Dim iLen As Integer Dim sCar As String If Not CloseBraces Then Return sLine = hEditor.Current.Text iLen = hEditor.Current.Length X = hEditor.Column If X >= iLen Then Return True sCar = String.RemoveDiacritics(String.Mid$(sLine, X + 1, 1)) If IsLetter(sCar) Or If IsNumber(sCar) Then Return False 'If InsideString(hEditor) Then Return Return True End Public Sub OnKeyPress(hEditor As TextEditor) As Boolean Dim sLine As String Dim X As Integer Dim sCar As String Dim iPos As Integer Dim sText As String Dim sSearch As String sText = Key.Text If Key.Code = Key.BackSpace Then If Not CloseBraces And If Not CloseStrings Then Return If hEditor.Selected Then Return X = hEditor.Column If X = 0 Then Return sLine = hEditor.Current.Text sCar = String.Mid$(sLine, X, 1) sSearch = "" If CloseBraces Then sSearch = Me.BRACES_OPEN If CloseStrings Then sSearch &= Me.STRING_DELIM iPos = InStr(sSearch, sCar) If iPos = 0 Then Return sSearch = "" If CloseBraces Then sSearch = Me.BRACES_CLOSE If CloseStrings Then sSearch &= Me.STRING_DELIM sCar = String.Mid$(sLine, X + 1, 1) If sCar <> Mid$(sSearch, iPos, 1) Then Return hEditor.SaveCursor() hEditor.Select(X - 1, hEditor.Line, X + 1, hEditor.Line) hEditor.Insert("") hEditor.RestoreCursor() hEditor.Goto(X - 1, hEditor.Line) Return True Endif InsideStringEscape = False If CloseBraces Then iPos = InStr(Me.BRACES_OPEN, sText) If iPos Then If hEditor.Selected Then If hEditor.SelectionLine = hEditor.Line Then hEditor.Insert(sText & hEditor.SelectedText & Mid$(Me.BRACES_CLOSE, iPos, 1)) Return True Endif Endif If CanCloseBraces(hEditor) Then hEditor.Begin hEditor.SaveCursor() hEditor.Insert(sText) hEditor.Insert(Mid$(Me.BRACES_CLOSE, iPos, 1)) hEditor.RestoreCursor() hEditor.Goto(hEditor.Column + 1, hEditor.Line) hEditor.End '$bCanCloseBracesComputed = False Return True Endif Return Endif iPos = InStr(Me.BRACES_CLOSE, sText) If iPos Then If String.Mid$(hEditor.Current.Text, hEditor.Column + 1, 1) = sText Then hEditor.Goto(hEditor.Column + 1, hEditor.Line) Return True Endif Return Endif Endif If CloseStrings Then iPos = InStr(Me.STRING_DELIM, sText) If iPos Then ' If hEditor.Selected Then ' If hEditor.SelectionLine = hEditor.Line Then ' hEditor.Insert(sText & hEditor.SelectedText & sText) ' Return True ' Endif ' Endif If Not InsideString(hEditor) Then If IsSpacePunctCar(hEditor.Current.Text, hEditor.Column) And If IsSpacePunctCar(hEditor.Current.Text, hEditor.Column + 1) Then GoSub INSERT_STRING Return True Endif Else If hEditor.Column < hEditor.Current.Length Then If Not InsideStringEscape Then If String.Mid$(hEditor.Current.Text, hEditor.Column + 1, 1) = sText Then hEditor.Goto(hEditor.Column + 1, hEditor.Line) Return True Endif If IsSpacePunctCar(hEditor.Current.Text, hEditor.Column) And If IsSpacePunctCar(hEditor.Current.Text, hEditor.Column + 1) Then GoSub INSERT_STRING Return True Endif Endif Endif Endif Endif Return INSERT_STRING: hEditor.SaveCursor() hEditor.Insert(sText & sText) hEditor.RestoreCursor() hEditor.Goto(hEditor.Column + 1, hEditor.Line) Return '$bCanCloseBracesComputed = False End gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_CSS.class000066400000000000000000000001411411575327000247070ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode Static Public Const STRING_DELIM As String = "\"'" gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_Gambas.class000066400000000000000000000032071411575327000254570ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode Static Public Const Name As String = "gambas" Public Sub IsIdentCar(sCar As String) As Boolean If IsLetter(sCar) Then Return True If IsDigit(sCar) Then Return True If sCar = "_" Or If sCar = "$" Then Return True End Private Sub ToggleAroundCurrentWord(hEditor As TextEditor, sBraces As String) Dim sLine As String Dim X1, X2 As Integer Dim iLen As Integer sLine = hEditor.Current.Text iLen = hEditor.Current.Length X1 = hEditor.Column While X1 > 0 If Not IsIdentCar(String.Mid$(sLine, X1, 1)) Then Break Dec X1 Wend X2 = hEditor.Column While X2 < iLen If Not IsIdentCar(String.Mid$(sLine, X2 + 1, 1)) Then Break Inc X2 Wend If X1 = X2 Then Return If X1 >= 1 And If String.Mid$(sLine, X1, 1) = Left(sBraces) And If X2 < iLen And If String.Mid$(sLine, X2 + 1, 1) = Right(sBraces) Then sLine = String.Left(sLine, X1 - 1) & String.Mid$(sLine, X1 + 1, X2 - X1) & String.Mid$(sLine, X2 + 2) X1 = hEditor.Column - 1 Else sLine = String.Left(sLine, X1) & Left(sBraces) & String.Mid$(sLine, X1 + 1, X2 - X1) & Right$(sBraces) & String.Mid$(sLine, X2 + 1) X1 = hEditor.Column + 1 Endif hEditor[hEditor.Line].Text = sLine hEditor.Goto(X1, hEditor.Line) End Public Sub OnKeyPress(hEditor As TextEditor) As Boolean Dim sBraces As String If Key.Alt Then For Each sBraces In ["()", "{}", "[]"] If InStr(sBraces, Key.Text) Then ToggleAroundCurrentWord(hEditor, sBraces) Return True Endif Next Endif If Key.Text = "'" Then Return Return Super.OnKeyPress(hEditor) End gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_HTML.class000066400000000000000000000034611411575327000250330ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode Static Public Const Name As String = "html" Static Public Const STRING_DELIM As String = "\"'" Static Private $aDoNotClose As String[] = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"] Private Sub InsertClosingMarkup(hEditor As TextEditor) Dim sLine As String Dim X, X1, X2 As Integer Dim iLen As Integer Dim sCar As String Dim sMarkup As String sLine = hEditor.Current.Text iLen = hEditor.Current.Length X = hEditor.Column X1 = X While X1 > 0 If String.Mid$(sLine, X1, 1) = "<" Then Break Dec X1 Wend If X1 = 0 Then Return X2 = X1 Do Inc X2 If X2 > iLen Then Break sCar = String.Mid$(sLine, X2, 1) If sCar = " " Or If sCar = ">" Then Break Loop sMarkup = String.Mid$(sLine, X1 + 1, X2 - X1 - 1) If Not sMarkup Then Return If sMarkup Begins "/" Then Return If sMarkup Begins "%" Then Return If $aDoNotClose.Exist(sMarkup, gb.IgnoreCase) Then Return hEditor.Insert("") hEditor.Goto(X, hEditor.Line) End Public Sub BetweenBraces(hEditor As TextEditor) As Boolean Dim sLine As String Dim X As Integer Dim iLen As Integer If Me.InsideString(hEditor) Then Return sLine = hEditor.Current.Text iLen = hEditor.Current.Length X = hEditor.Column If X = 0 Or If X = iLen Then Return If String.Mid$(sLine, X, 1) = ">" And If String.Mid$(sLine, X + 1, 2) = "" Then hEditor.Insert(">") If Not Me.InsideString(hEditor) Then InsertClosingMarkup(hEditor) Return True Endif Return Super.OnKeyPress(hEditor) End gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_Javascript.class000066400000000000000000000003071411575327000263710ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode Static Public Const BRACES_OPEN As String = "([{" Static Public Const BRACES_CLOSE As String = ")]}" Static Public Const STRING_DELIM As String = "\"'`" gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_SQL.class000066400000000000000000000001411411575327000247160ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode Static Public Const STRING_DELIM As String = "\"'" gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_Sh.class000066400000000000000000000004571411575327000246430ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode Static Public Const BRACES_OPEN As String = "([{" Static Public Const BRACES_CLOSE As String = ")]}" Static Public Const STRING_DELIM As String = "\"'" Public Sub OnKeyPress(hEditor As TextEditor) As Boolean Return Super.OnKeyPress(hEditor) End gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorMode_WebPage.class000066400000000000000000000000621411575327000255730ustar00rootroot00000000000000' Gambas class file Inherits TextEditorMode_HTML gambas-3.16.3/comp/src/gb.form.editor/.src/TextEditorStyle.class000066400000000000000000000013011411575327000244120ustar00rootroot00000000000000' Gambas class file Event Change Public Background As Integer Public (Color) As Integer Public Bold As Boolean Public Underline As Boolean Public Dotted As Boolean Public Sub _new(Optional (iColor) As Integer, Optional bBold As Boolean, bUnderline As Boolean, bDotted As Boolean) Background = -1 Color = iColor Bold = bBold Underline = bUnderline Dotted = bDotted End Public Sub Copy() As TextEditorStyle Dim hStyle As TextEditorStyle hStyle = New TextEditorStyle With hStyle .Background = Background .Bold = Bold .Color = Color .Underline = Underline .Dotted = Dotted End With Return hStyle End Public Sub RaiseChange() Raise Change End gambas-3.16.3/comp/src/gb.form.editor/.src/_TextEditorStyle.class000066400000000000000000000030471411575327000245620ustar00rootroot00000000000000' Gambas class file ''' This virtual class represents one highlighting style. Export Create Static Static Public _Style As TextEditorStyle '' Return or set the main color of the style. Property Color As Integer '' Return or set the background color of the style. Property Background As Integer '' Return or set if the text should be bold. Property Bold As Boolean '' Return or set if the text should be underlined. Property Underline As Boolean '' Return or set if the text should be dotted. Property Dotted As Boolean Private Function Color_Read() As Integer Return _Style.Color End Private Sub Color_Write(Value As Integer) If _Style.Color = Value Then Return _Style.Color = Value _Style.RaiseChange End Private Function Bold_Read() As Boolean Return _Style.Bold End Private Sub Bold_Write(Value As Boolean) If _Style.Bold = Value Then Return _Style.Bold = Value _Style.RaiseChange End Private Function Underline_Read() As Boolean Return _Style.Underline End Private Sub Underline_Write(Value As Boolean) If _Style.Underline = Value Then Return _Style.Underline = Value _Style.RaiseChange End Private Function Background_Read() As Integer Return _Style.Background End Private Sub Background_Write(Value As Integer) If _Style.Background = Value Then Return _Style.Background = Value _Style.RaiseChange End Private Function Dotted_Read() As Boolean Return _Style.Dotted End Private Sub Dotted_Write(Value As Boolean) If _Style.Dotted = Value Then Return _Style.Dotted = Value _Style.RaiseChange End gambas-3.16.3/comp/src/gb.form.editor/.src/_TextEditor_Line.class000066400000000000000000000122641411575327000245110ustar00rootroot00000000000000' Gambas class file ''' This virtual class represents a specific line of a [../texteditor]. Export Event _Fake Public _Line As Integer '' Return or set the text contents of the line. '' '' You must not put line separator characters (`"\r"` or `"\n"`) in the text of a line. Property Text As String '' Return the line length in UTF-8 characters. Property Read Length As Integer '' Return if the line has a limit mark, i.e. if it is the beginning of a function. Property Read Limit As Boolean '' Return a virtual object that represents the initial highlighting state of the line. Property Read InitialState As _TextEditor_State '' Return the line height in pixels. Property Read Height, H As Integer '' Return or set if the line is expanded. '' '' Only lines whose [../limit] is 'TRUE' can be expanded or collapsed. Property Expanded As Boolean '' Return or set if the line is a breakpoint. Property Breakpoint As Boolean '' Return or set if the line is a disabled breakpoint. Property Disabled As Boolean '' Return or set if the line is a bookmark. Property Bookmark As Boolean '' Return if the line is an added line in "diff mode". Property Read Added As Boolean Private Sub GetView() As TextEditor Return Object.Parent(Me) End Private Sub GetDoc() As CDocument Return GetView()._GetDocument() End Private Function Text_Read() As String Return GetDoc().Lines[_Line] End Private Function Length_Read() As Integer Return GetDoc().LineLength[_Line] End Private Sub Text_Write(Value As String) With GetView() If ._GetDocument().Lines[_Line] <> Value Then .SaveCursor .Begin .Remove(0, _Line, String.Len(._GetDocument().Lines[_Line]), _Line) .Insert(Value) .End .RestoreCursor Endif End With End '' Refresh that line. Public Sub Refresh() With GetDoc() .Info(_Line).ClearHighlight '.HighlightFrom(_Line) .Refresh(_Line) End With End Private Function Limit_Read() As Boolean Dim hDoc As CDocument hDoc = GetDoc() hDoc.HighlightUntil(_Line) Return hDoc.Info(_Line).Limit End Private Function Breakpoint_Read() As Boolean Return GetDoc().HasBreakpoint(_Line) End Private Sub Breakpoint_Write(Value As Boolean) With GetDoc() .SetBreakpoint(_Line, Value, GetDoc().IsBreakpointDisabled(_Line)) .Refresh(_Line) End With End Private Function Bookmark_Read() As Boolean Return GetDoc().HasBookmark(_Line) End Private Sub Bookmark_Write(Value As Boolean) With GetDoc() .SetBookmark(_Line, Value) .Refresh(_Line) End With End Private Function InitialState_Read() As _TextEditor_State Dim hState As _TextEditor_State hState = New _TextEditor_State If _Line > 0 Then hState._State = GetDoc().Info(_Line - 1) Return hState End '' Purge the line from its comments and/or strings, according to its highlighting. '' '' - If ~KeepComment~ is set, the comments are kept intact. Comments are the characters associated with [Highlight.Comment](/comp/gb.eval/highlight/comment) or [Highlight.Help](/comp/gb.eval/highlight/help) styles. '' - If ~KeepString~ is set, the strings are kept intact. Strings are the characters associated with [Highlight.String](/comp/gb.eval/highlight/string) style. '' - ~Replace~ is the character that replaces the removed elements. By default it is a space. '' '' If the line is not highlighted, then it is returned as is. Public Sub Purge(Optional KeepComment As Boolean, KeepString As Boolean, Replace As String = " ") As String Dim hDoc As CDocument = GetDoc() Dim aColor As Byte[] Dim sPurge As String Dim I As Integer Dim iState As Byte Dim sText As String Dim X As Integer Dim bReplace As Boolean sText = hDoc.Lines[_Line] aColor = GetDoc().Info(_Line).Colors If Not aColor Then Return sText X = 1 For I = 0 To aColor.Max Step 2 iState = aColor[I] bReplace = False If Not KeepComment Then If iState = Highlight.Comment Or If iState = Highlight.Help Then bReplace = True Endif Endif If Not KeepString And If iState = Highlight.String Then bReplace = True Endif If bReplace Then sPurge &= String$(aColor[I + 1], Replace) Else sPurge &= String.Mid$(sText, X, aColor[I + 1]) Endif X += aColor[I + 1] Next Return sPurge End Private Function Expanded_Read() As Boolean Return GetView()._IsRowExpanded(_Line) End Private Sub Expanded_Write(Value As Boolean) With GetView() If Value Then ._ExpandRow(_Line) Else ._CollapseRow(_Line) Endif End With End Private Function Height_Read() As Integer Return GetView()._GetRowHeight(_Line) End Private Function Disabled_Read() As Boolean Return GetDoc().IsBreakpointDisabled(_Line) End Private Sub Disabled_Write(Value As Boolean) With GetDoc() .SetBreakpoint(_Line, GetDoc().HasBreakpoint(_Line), Value) .Refresh(_Line) End With End '' Paint that line on the current painter at a specified position. '' '' - ~X~ and ~Y~ are the top left position where the line must be painted. Public Sub Paint(X As Integer, Y As Integer) GetDoc().HighlightUntil(Y) GetView()._PaintRow(_Line, X, Y) End Private Function Added_Read() As Boolean Return GetView()._IsAdded(_Line) End gambas-3.16.3/comp/src/gb.form.editor/.src/_TextEditor_Rows.class000066400000000000000000000201741411575327000245530ustar00rootroot00000000000000' Gambas class file Property Count As Integer Property Read Max As Integer Property Height, H As Integer Public RelativeY As Integer Event _Fake Private $nRows As Integer Private $cHeight As Collection Private $aHeight As Integer[] Private $iHeight As Integer Private $cCacheRowY As New Collection Private $cCacheRowFromPos As New Collection Private $iLastRow As Integer Private Sub GetView() As TextEditor Return Object.Parent(Me) End Private Function Count_Read() As Integer Return $nRows End Private Sub ClearCache() $iLastRow = 0 $cCacheRowY.Clear $cCacheRowFromPos.Clear End Private Sub Count_Write(Value As Integer) Dim hView As TextEditor = GetView() ClearCache If Value = $nRows Then Return $nRows = Value hView._ResizeContents End Private Sub StripCache(cCol As Collection) If cCol.Count < 256 Then Return For Each cCol cCol.Remove(cCol.Key) Break Next End Fast Public Sub _GetRowY(iRow As Integer) As Integer Dim hView As TextEditor = GetView() Dim Y As Integer Dim DH As Integer = $iHeight Dim I As Integer Dim iViewRow As Integer If iRow < 0 Then Return iViewRow = hView._RealToView(iRow) If Not $cHeight Then Return (iViewRow + hView._TopHeight) * DH Try Return $cCacheRowY[iRow] If $cCacheRowY.Exist($iLastRow) And If Abs(iRow - $iLastRow) < iRow Then If $iLastRow < iRow Then If Not hView._HasFolding() Then For I = $iLastRow To iRow - 1 Y += CInt($cHeight[I]) - 1 Next Else For I = $iLastRow To iRow - 1 If hView._IsRowVisible(I) Then Y += CInt($cHeight[I]) - 1 Next Endif ' I = $iLastRow ' While I < iRow ' If hView._IsRowVisible(I) Then Y += CInt($cHeight[I]) - 1 ' Inc I ' Wend Else If Not hView._HasFolding() Then For I = $iLastRow - 1 DownTo iRow Y -= CInt($cHeight[I]) - 1 Next Else For I = $iLastRow - 1 DownTo iRow If hView._IsRowVisible(I) Then Y -= CInt($cHeight[I]) - 1 Next Endif ' I = $iLastRow ' While I > iRow ' Dec I ' If hView._IsRowVisible(I) Then Y -= CInt($cHeight[I]) - 1 ' Wend Endif Y += iViewRow - hView._RealToView($iLastRow) Y *= DH Y += $cCacheRowY[$iLastRow] Else Y = iViewRow If Not hView._HasFolding() Then For Each I In $aHeight If I >= iRow Then Break Y += CInt($cHeight[I]) - 1 Next Else For Each I In $aHeight If I >= iRow Then Break If hView._IsRowVisible(I) Then Y += CInt($cHeight[I]) - 1 Endif Next Endif If hView._TopHeight Then Inc Y 'Y += hView._TopHeight Y *= DH Endif $cCacheRowY[iRow] = Y StripCache($cCacheRowY) $iLastRow = iRow Return Y End Public Sub _GetRowHeight(iRow As Integer) As Integer 'Debug iRow;; System.Backtrace.Join("|") Try Return $cHeight[iRow] * $iHeight Return $iHeight End Private Sub AddSorted(iRow As Integer) Dim I, J As Integer Dim F As Integer 'If iRow >= GetView().Count Then Stop I = 0 J = $aHeight.Max If J < 0 Or If iRow > $aHeight[J] Then $aHeight.Add(iRow) Return Endif F = $aHeight.FindSorted(iRow) If F < 0 Then F = -1 - F $aHeight.Add(iRow, F) ' '' TODO: Binary search ' $aHeight.Add(iRow) ' $aHeight.Sort End Public Sub _SetRowHeight(iRow As Integer, H As Integer) Dim hView As TextEditor = GetView() 'Dim DH As Integer = $iHeight Dim OH As Integer 'Dim bCancel As Boolean ClearCache If Not $cHeight Then $cHeight = New Collection $cHeight.Default = 1 $aHeight = New Integer[] Endif ' If H < 0 Then ' bCancel = hView._RaiseRowSize(iRow) ' If Not bCancel Then Return ' H = hView._GetPreferredHeight(iRow) ' Endif If H <= 1 Then If $cHeight.Exist(iRow) Then $cHeight.Remove(iRow) $aHeight.Remove($aHeight.Find(iRow)) hView._ResizeContents() Endif Else If $cHeight.Exist(iRow) Then OH = $cHeight[iRow] Else OH = -1 Endif If H <> OH Then If OH < 0 Then AddSorted(iRow) $cHeight[iRow] = H hView._ResizeContents() 'hView._RaiseRowResize(iRow) Endif Endif End Public Sub _GetHeight() As Integer Dim N As Integer N = GetView()._GetLastVisibleRow() Return _GetRowY(N) + _GetRowHeight(N) ' Dim hView As TextEditor = GetView() ' Dim H, DH As Integer ' Dim I As Integer ' ' DH = $iHeight ' H = $nRows ' If $cHeight Then ' For Each I In $aHeight ' If hView._IsRowVisible(I) Then H += CInt($cHeight[I]) - 1 ' Next ' Endif ' ' Return H * DH End Public Sub _FindRowFromPos(Y As Integer) As Integer Dim hView As TextEditor = GetView() Dim DH As Integer = $iHeight Dim iCache As Long Dim D As Integer Dim F As Integer Dim I As Integer Dim RY As Integer Dim RH As Integer Dim J As Integer 'If Y = 0 Then Stop If Not $cHeight Then I = Min($nRows - 1, Y \ DH) - hView._TopHeight If I < 0 Then Return -1 RelativeY = Y - I * DH Return hView._ViewToReal(I) Endif If hView._TopHeight And If Y < (hView._TopHeight * DH) Then Return -1 Try iCache = $cCacheRowFromPos[Y] If Not Error Then If iCache < 0 Then Return CDocument.ROW_NOT_FOUND RelativeY = iCache And &HFFFFFFFF& Return Lsr(iCache, 32) Endif D = 0 F = $nRows While F > D I = (F + D) \ 2 J = hView._ViewToReal(I) RY = _GetRowY(J) RH = _GetRowHeight(J) If Y < RY Then F = I Else If Y >= RY + RH Then D = I + 1 Else Break Endif Wend I = J RelativeY = Y - RY If I >= hView.Count Then I = CDocument.ROW_NOT_FOUND iCache = CDocument.ROW_NOT_FOUND Else iCache = Shl(CLong(I), 32) + RelativeY Endif $cCacheRowFromPos[Y] = iCache StripCache($cCacheRowFromPos) Return I End Private Sub Height_Read() As Integer Return $iHeight End Private Sub Height_Write(Value As Integer) $iHeight = Value ClearCache End Private Function Max_Read() As Integer Return $nRows - 1 End ' Public Sub Remove(Start As Integer, Optional Length As Integer = 1) ' ' GetView()._RemoveRows(Start, Length) ' ' End ' ' Public Sub Insert(Start As Integer, Optional Length As Integer = 1) ' ' GetView()._InsertRows(Start, Length) ' ' End Public Sub Clear() If $cHeight Then $cHeight.Clear $aHeight.Clear Endif ClearCache End Public Sub _AfterRemove(Y1 As Integer, Y2 As Integer, cLineLayout As Collection) Dim Y As Integer Dim I As Integer Dim YY As Integer If Not $aHeight Then Return While I < $aHeight.Count If $aHeight[I] > Y1 Then Break Inc I Wend While I < $aHeight.Count Y = $aHeight[I] If Y > Y2 Then Break $aHeight.Remove(I) $cHeight.Remove(Y) cLineLayout.Remove(Y) If $cHeight.Count <> $aHeight.Count Then Stop Wend While I < $aHeight.Count Y = $aHeight[I] YY = Y - (Y2 - Y1) $aHeight[I] = YY $cHeight[YY] = $cHeight[Y] $cHeight.Remove(Y) cLineLayout[YY] = cLineLayout[Y] cLineLayout.Remove(Y) If $cHeight.Count <> $aHeight.Count Then Stop Inc I Wend ClearCache 'If $aHeight.Count And If $aHeight[$aHeight.Max] >= GetView().Count Then Stop 'If _GetHeight() <> _GetRowY($nRows - 1) + _GetRowHeight($nRows - 1) Then Stop End Public Sub _BeforeInsert(Y1 As Integer, N As Integer, cLineLayout As Collection) Dim I As Integer Dim Y As Integer If Not $aHeight Then Return For I = $aHeight.Max DownTo 0 Y = $aHeight[I] If Y <= Y1 Then Break $aHeight[I] = Y + N $cHeight[Y + N] = $cHeight[Y] $cHeight.Remove(Y) cLineLayout[Y + N] = cLineLayout[Y] cLineLayout.Remove(Y) Next 'If $cHeight.Count <> $aHeight.Count Then Stop ClearCache 'If $aHeight And If $aHeight.Count And If $aHeight[$aHeight.Max] >= GetView().Count Then Stop 'If _GetHeight() <> _GetRowY($nRows - 1) + _GetRowHeight($nRows - 1) Then Stop End gambas-3.16.3/comp/src/gb.form.editor/.src/_TextEditor_State.class000066400000000000000000000012501411575327000246730ustar00rootroot00000000000000' Gambas class file ''' This virtual class represents the initial highlighting state of a specific line. Export Public _State As CLineInfo '' Return the initial highlighting state value. Property Read State As Byte '' Return the initial highlighting tag value. Property Read Tag As Short '' Return the initial highlighting alternate flag. Property Read Alternate As Boolean Private Function State_Read() As Byte If _State Then Return _State.State Else Return Highlight.Normal Endif End Private Function Tag_Read() As Short If _State Then Return _State.Tag End Private Function Alternate_Read() As Boolean If _State Then Return _State.Alternate End gambas-3.16.3/comp/src/gb.form.editor/.src/_TextEditor_Styles.class000066400000000000000000000106341411575327000251040ustar00rootroot00000000000000' Gambas class file ''' This virtual class represents the highlighting styles of the TextEditor. Export Event _Change Private $aStyle As TextEditorStyle[] Public Sub _new() Dim I As Integer $aStyle = New TextEditorStyle[32] ' $aStyle[Highlight.Background] = New TextEditorStyle(Color.White) ' $aStyle[Highlight.Normal] = New TextEditorStyle(Color.Black) ' $aStyle[Highlight.Keyword] = New TextEditorStyle(Color.Black, True) ' $aStyle[Highlight.Datatype] = New TextEditorStyle(&HDF6B00&, True) ' $aStyle[Highlight.Function] = New TextEditorStyle(&H3398C3&, True) ' $aStyle[Highlight.Operator] = New TextEditorStyle(Color.Black, True) ' $aStyle[Highlight.Symbol] = New TextEditorStyle(Color.Black) ' $aStyle[Highlight.Number] = New TextEditorStyle(&HFF0000&, True) ' $aStyle[Highlight.String] = New TextEditorStyle(&H7F0000&) ' $aStyle[Highlight.Comment] = New TextEditorStyle(&H888888&, False) ' $aStyle[Highlight.Help] = New TextEditorStyle(&H888888&, True) ' $aStyle[Highlight.Preprocessor] = New TextEditorStyle(&H006E28&, True) ' $aStyle[Highlight.Breakpoint] = New TextEditorStyle(&HFF5F5F&) ' $aStyle[Highlight.Current] = New TextEditorStyle(&H42C9FF&) ' $aStyle[Highlight.Selection] = New TextEditorStyle(&HC3EDFF&) ' $aStyle[Highlight.Highlight] = New TextEditorStyle(&H7FFF00&) ' $aStyle[Highlight.CurrentLine] = New TextEditorStyle(&HE7F3FF&) ' $aStyle[Highlight.Error] = New TextEditorStyle(&HBF0303&, False, True) ' $aStyle[Highlight.Escape] = New TextEditorStyle(&H7F0000&, True, False, True) ' $aStyle[Highlight.Label] = New TextEditorStyle(Color.Black, False, False, True) ' $aStyle[Highlight.Constant] = New TextEditorStyle(&HA00000&, True) ' $aStyle[Highlight.Alternate] = New TextEditorStyle(&HE0E0E0&) ' $aStyle[Highlight.Added] = New TextEditorStyle(&00FF00) ' $aStyle[Highlight.Removed] = New TextEditorStyle(&FF8080) $aStyle[Highlight.Background] = New TextEditorStyle(Color.TextBackground) $aStyle[Highlight.Normal] = New TextEditorStyle(Color.TextForeground) $aStyle[Highlight.Keyword] = New TextEditorStyle(Color.TextForeground, True) $aStyle[Highlight.Datatype] = New TextEditorStyle(&HDF6B00&, True) $aStyle[Highlight.Function] = New TextEditorStyle(&H3398C3&, True) $aStyle[Highlight.Operator] = New TextEditorStyle(Color.Black, True) $aStyle[Highlight.Symbol] = New TextEditorStyle(Color.Black) $aStyle[Highlight.Number] = New TextEditorStyle(&HFF0000&, True) $aStyle[Highlight.String] = New TextEditorStyle(&H7F0000&) $aStyle[Highlight.Comment] = New TextEditorStyle(&H888888&, False) $aStyle[Highlight.Help] = New TextEditorStyle(&H888888&, True) $aStyle[Highlight.Preprocessor] = New TextEditorStyle(&H006E28&, True) $aStyle[Highlight.Breakpoint] = New TextEditorStyle(&HFF5F5F&) $aStyle[Highlight.Current] = New TextEditorStyle(&H42C9FF&) $aStyle[Highlight.Selection] = New TextEditorStyle(Color.SelectedBackground) $aStyle[Highlight.Highlight] = New TextEditorStyle(&H6FE06F) $aStyle[Highlight.CurrentLine] = New TextEditorStyle(Color.LightBackground) $aStyle[Highlight.Error] = New TextEditorStyle(&HBF0303&, False, True) $aStyle[Highlight.Escape] = New TextEditorStyle(&H7F0000&, True, False, True) $aStyle[Highlight.Label] = New TextEditorStyle(Color.Black, False, False, True) $aStyle[Highlight.Constant] = New TextEditorStyle(&HA00000&, True) $aStyle[Highlight.Alternate] = New TextEditorStyle(&HE0E0E0&) $aStyle[Highlight.Added] = New TextEditorStyle(&00FF00) $aStyle[Highlight.Removed] = New TextEditorStyle(&FF8080) For I = Highlight.Custom To $aStyle.Max $aStyle[I] = New TextEditorStyle Next For I = 0 To $aStyle.Max Object.Attach($aStyle[I], Me, "Style") Next End Public Sub _GetStyles() As TextEditorStyle[] Return $aStyle End Public Sub _SetStyles(aStyle As TextEditorStyle[]) Dim I As Integer $aStyle = New TextEditorStyle[aStyle.Count] For I = 0 To $aStyle.Max $aStyle[I] = aStyle[I].Copy() Object.Attach($aStyle[I], Me, "Style") Next End '' Return the highlighting style associated with a specific highlight constant. '' '' - ~Style~ is one of the [/comp/gb.eval/highlight] constants. Public Sub _get((Style) As Integer) As _TextEditorStyle Dim hStyle As TextEditorStyle Try hStyle = $aStyle[Style] If Not hStyle Then Error.Raise("Invalid argument") _TextEditorStyle._Style = hStyle Return _TextEditorStyle End Public Sub Style_Change() Raise _Change End gambas-3.16.3/comp/src/gb.form.editor/.src/test/000077500000000000000000000000001411575327000212335ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.editor/.src/test/FTest.class000066400000000000000000000002501411575327000233040ustar00rootroot00000000000000' Gambas class file Public Sub DrawingArea1_Draw() 'Paint.Font = Font["Liberation Mono,20"] 'Debug Paint.Font.ToString() Paint.DrawText("Gambas", 20, 20) End gambas-3.16.3/comp/src/gb.form.editor/.src/test/FTest.form000066400000000000000000000003551411575327000231500ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,109,86) { Panel1 Panel MoveScaled(5,8,56,40) Font = Font["Monospace,Italic"] Border = Border.Plain { DrawingArea1 DrawingArea MoveScaled(3,2,46,30) } } } gambas-3.16.3/comp/src/gb.form.editor/.src/test/FTestEditor.class000066400000000000000000000151261411575327000244630ustar00rootroot00000000000000' Gambas class file Private Sub Reload() 'Dim I As Integer ' System.Profile = False ' 'TextEditor1.Load("~/test.txt") ' For I = 1 To 100 ' TextEditor1.Insert(String$(80, CStr(I) & " ") & "\n") ' Next ' System.Profile = True 'TextEditor1.Mode = "gambas" 'TextEditor1.Load("~/gambas/3.0/test/test-git/CHANGELOG", True) 'Dim I As Integer TextEditor1.Load("~/gambas/3.0/issues/2135/20210315-200320104-FMain.class", True) 'TextEditor1.Load("~/er/git/erfm/client/index.html") TextEditor1.Mode = "gambas" 'TextEditor1.Load("~/asap/omogen/git/master/gambas/omogen-sanef-fox/.public/scheduler.js") 'TextEditor1.Mode = "javascript" 'TextEditor1.Load("~/Fichier texte") 'TextEditor1.Mode = "C" 'TextEditor1.Load("~/gambas/git/master/main/lib/jit/gb.jit/gambas.h") 'TextEditor1.Styles[Highlight.Custom].Background = Color.SetAlpha(Color.Red, 224) 'TextEditor1.Styles[Highlight.Custom + 1].Background = Color.SetAlpha(Color.Green, 224) 'Button5_Click End Public Sub Form_Open() 'Debug Style.ScrollbarSize Application.Animations = True Application.Shadows = True 'TextEditor1.LineNumberOffset = 10000 'Image.Debug = True Reload 'TextEditor1.Mode = "gambas" 'TextEditor1.Load("~/asap/omogen/git/master/gambas/guygle.cgi/.src/GuygleObject.class") 'TextEditor1.Load("~/asap/guygle/trunk/gambas/guygle.cgi/.src/Site/Dialog.class") 'TextEditor1.Load("~/gambas/3.0/issues/754/test/.src/Main.module") 'TextEditor1.Load("~/gambas/3.0/trunk/comp/src/gb.form.editor/.src/TextEditor.class", True) 'TextEditor1.Load("/var/log/thttpd/debug.log.old") 'TextEditor1.Load("~/cosme/style.css") 'TextEditor1.Load("~/gambas/3.0/trunk/app/src/gambas3/.src/Project.module") 'TextEditor1.Load("~/gambas/3.0/trunk/gb.qt4/src/CWidget.cpp") 'TextEditor1.Load("~/gambas/3.0/trunk/main/share/gb_reserved_temp.h") 'TextEditor1.Goto(0, TextEditor1.Count - 1) 'TextEditor1.Highlight = "webpage" 'TextEditor1.Load("test.html") ' For Each sLine In Split(File.Load("/proc/self/maps"), "\n") ' If InStr(sLine, "[heap]") Then ' aScan = Scan(sLine, "*-* *") ' Print "------------ Heap size is " & Format(Val("&H" & aScan[1] & "&") - Val("&H" & aScan[0] & "&"), "#,##0") & " bytes." ' Break ' Endif ' Next 'TextEditor2.View = TextEditor1 'TextEditor1.Text = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" 'TextEditor1.Text = "If sType = \"class\" And If Dir(File.Dir(sPath), File.BaseName(sPath) &/ \".*\").Count >= 2 Then Dec iCount\n'titi\n'tata" TextEditor1.SetFocus End Public Sub TextEditor1_Margin() TextEditor1[TextEditor1.Line].Breakpoint = Not TextEditor1[TextEditor1.Line].Breakpoint End Public Sub txtPrint_Activate() 'TextEditor1.Print(UnQuote(txtPrint.Text)) TextEditor1.HighlightString(txtPrint.Text, True) End Public Sub Button1_Click() TextEditor1.Wrap = Not TextEditor1.Wrap TextEditor1.SetFocus End Public Sub Button2_Click() TextEditor1.PrintCache End Public Sub txtPrint_KeyPress() Debug Key.Code;; Quote(Key.Text) End Public Sub Button3_Click() TextEditor1.Clear End Public Sub Button4_Click() Reload End ' Public Sub Button5_Click() ' ' Dim sText As String ' Dim N As Integer ' Dim I As Integer ' Dim J As Integer ' ' TextEditor1.Mode = "javascript" ' ' sText = File.Load("~/asap/omogen/git/master/gambas/guygle.exec/.hidden/Uncompressed/planning.js") ' ' Do ' Inc N ' lblCount.Text = CStr(N) ' ' TextEditor1.Text = sText ' Wait ' ' For I = 1 To 100 ' TextEditor1.Goto(Rand(0, 255), Rand(0, TextEditor1.Count - 1)) ' Wait ' ' TextEditor1.Begin ' For J = 1 To 100 ' If Rnd < 0.1 Then ' TextEditor1.Insert("\n") ' Else ' TextEditor1.Insert("Gambas") ' Endif ' Next ' TextEditor1.End ' Wait 0.1 ' ' TextEditor1.Undo ' Wait ' ' Next ' ' TextEditor1.Text = MCompressFile.Javascript(sText) ' Wait ' ' For I = 1 To 100 ' TextEditor1.Goto(Rand(0, 255), Rand(0, TextEditor1.Count - 1)) ' Wait ' Next ' ' Loop ' ' End ' Public Sub TextEditor1_Highlight(Text As String) ' ' If Text Begins "<<<<<<" Then ' TextHighlighter.Add(Highlight.Keyword, String.Len(Text)) ' TextHighlighter.State = Highlight.Custom ' Else If Text Begins "======" Then ' TextHighlighter.Add(Highlight.Help, String.Len(Text)) ' TextHighlighter.State = Highlight.Normal ' TextHighlighter.Tag = 1 ' Else If Text Begins ">>>>>>" Then ' TextHighlighter.Add(Highlight.Keyword, String.Len(Text)) ' TextHighlighter.State = Highlight.Custom + 1 ' TextHighlighter.Tag = 2 ' Else ' If TextHighlighter.Tag = 1 Then ' TextHighlighter.State = Highlight.Custom + 1 ' TextHighlighter.Tag = 0 ' Else If TextHighlighter.Tag = 2 Then ' TextHighlighter.State = Highlight.Normal ' TextHighlighter.Tag = 0 ' Endif ' TextHighlighter.Add(TextHighlighter.State, String.Len(Text)) ' Endif ' ' End Public Sub Button6_Click() TextEditor1[TextEditor1.Line].Bookmark = Not TextEditor1[TextEditor1.Line].Bookmark End Public Sub Button5_Click() Dim aText As String[] Dim I As Integer If TextEditor1.DiffMode Then TextEditor1.LeaveDiffMode() Else aText = New String[] For I = 1 To 100 aText.Add(String$(80, CStr(I) & ".")) Next TextEditor1.EnterDiffMode([3, 4, 12, 2, 20, 6], ["0": aText, "3": ["Différence", "sur plusieurs lignes", "c'est possible ?"]]) Endif End Public Sub Button7_Click() TextEditor1.Styles[Highlight.Background].Color = Color.SoftBlue End Public Sub btnComment_Click() Dim iStartLine As Integer Dim iEndLine As Integer Dim iLine As Integer Dim sIndent As String If TextEditor1.ReadOnly Then Return 'IF NOT Editor.Selected THEN RETURN If TextEditor1.Selected Then 'TextEditor1.StoreSelection iStartLine = Min(TextEditor1.SelectionLine, TextEditor1.Line) iEndLine = Max(TextEditor1.SelectionLine, TextEditor1.Line) sIndent = TextEditor1.GetIndent(iStartLine, iEndLine) TextEditor1.Begin TextEditor1.SaveCursor For iLine = iStartLine To iEndLine - 1 TextEditor1[iLine].Text = sIndent & "' " & Mid$(TextEditor1[iLine].Text, Len(sIndent) + 1) Next TextEditor1.RestoreCursor TextEditor1.End 'Modify 'TextEditor1.RecallSelection Else 'Comment only the current line iLine = TextEditor1.Line sIndent = TextEditor1.GetIndent(iLine, iLine + 1) TextEditor1[iLine].Text = sIndent & "' " & Mid$(TextEditor1[iLine].Text, Len(sIndent) + 1) Endif End gambas-3.16.3/comp/src/gb.form.editor/.src/test/FTestEditor.form000066400000000000000000000026171411575327000243220ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,122,78) Stacking = Window.Above Arrangement = Arrange.Vertical { Panel2 HBox MoveScaled(2,2,118,4) Spacing = True { txtPrint TextBox MoveScaled(0,0,24,4) } { Button1 Button MoveScaled(25,0,9,4) Text = ("Wrap") } { Button2 Button MoveScaled(34,0,9,4) Text = ("Cache") } { Button3 Button MoveScaled(43,0,9,4) Text = ("Clear") } { Button4 Button MoveScaled(52,0,9,4) Text = ("Reload") } { Button5 Button MoveScaled(61,0,9,4) Text = ("Diff") } { Button6 Button MoveScaled(71,0,12,4) Text = ("Bookmark") } { Button7 Button MoveScaled(84,0,10,4) Text = ("Style") } { btnComment Button MoveScaled(96,0,12,4) Text = ("Comment") } } { Panel1 VSplit MoveScaled(8,11,76,52) Expand = True { TextEditor1 TextEditor MoveScaled(14,5,47,33) Font = Font["Gambas"] Background = Color.TextBackground Border = False Wrap = True ShowPosition = True ShowLimit = True ShowCurrent = True ShowLineNumber = True ShowBraces = True ShowIcon = True ShowExpand = True ShowSpaces = True ShowIndent = True CloseBraces = True CloseStrings = True } } { Timer1 #Timer #MoveScaled(48,67) } } gambas-3.16.3/comp/src/gb.form.editor/Text1000066400000000000000000000002731411575327000203410ustar00rootroot00000000000000 background: white; margin: 0; padding: 0; } @page { <%_PageLayout%> } TR.light:hover { background: none; } TR.dark:hover { background: #E5EAEE; } #print { display: none;gambas-3.16.3/comp/src/gb.form.editor/test.html000066400000000000000000000020651411575327000212570ustar00rootroot00000000000000<> <%If Not Request.Exist("show")%>
      <%_Print()%>
      <%Else _Show() Endif%> <
      > ?toto ?titi gambas-3.16.3/comp/src/gb.form.mdi/000077500000000000000000000000001411575327000166725ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.component000066400000000000000000000001551411575327000206760ustar00rootroot00000000000000[Component] Key=gb.form.mdi Version=3.16.90 Authors=Benoît Minisini Needs=Form Requires=gb.form,gb.settings gambas-3.16.3/comp/src/gb.form.mdi/.directory000066400000000000000000000000411411575327000206720ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form.mdi/.hidden/000077500000000000000000000000001411575327000202035ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.hidden/control/000077500000000000000000000000001411575327000216635ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.hidden/control/toolbar.png000066400000000000000000000002751411575327000240370ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpL???AAA@@@@@@tRNSJ9AIDATHc``(n.4TƯ@54@ # z FCr4$s( Y2/DIENDB`gambas-3.16.3/comp/src/gb.form.mdi/.hidden/control/workspace.png000066400000000000000000000002661411575327000243730ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpL```tRNS@f@IDATHcPB I \$PlV W6@W Q 9$~@)mIENDB`gambas-3.16.3/comp/src/gb.form.mdi/.icon.png000066400000000000000000000122761411575327000204160ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+IDATxOlGZ_U{gIMY)( d#$"6Ei8=q 6X!i9 ΐ7dL3vWqxzߪ_oZvw3oU=T%pY̬;Ͽp^c|n?B4^]c%a}ޏ57i\~\.c0G^$_nm/>'z?O'o HMɻ|Y1r>ko4}cޏ~ƿ9WWkY^ţ(o{{ɛrr.Wwq-}}x@m@z=h3i/mK_io}LO{_`c~P7If ż7{zMޏV3zBЃU=W.l7$l_ãh#qxK.4پu]5Bsh)L&=_='i.4nmj9{۴W:?dɫ޿<@1bШ4"C}eۛ!|^[#8ƅGunmO|ɭ1iX!bH^٨e f_RK(2xmu:_nu>x|ƀ|]Jl ےퟞLgyX!z~\I깗oeLTD$(%wc?y,IڼE>.-#[7l=O*Izi\4 xWñh賾kFiF&{E fE^u~: ؼf q~?^Tޭ<@5P4f?qsdz@ڂYm. zܰںn++{Za&$W{e, q īi/K{}|@ž*--xOz;@Dԏ+ںi'eV$D(m=v8FP7i_m߈1$+ke_8ad#[D<ʨ'^Yg}d`@>K47WH4'NJfWTI(JUYygd22V Ftw/\q~e<]  Knni?fe~Vy^=lV}qsyC~Syz2\`!NJP[uS:W$7ֳkF:X\_!(de܄hBmʆWmH4%k}ԉT3X0F/u0rFIj9ёJQ~\МӏCrP*+v9to|_LzY:;o4 KM'O7"9~ :b.,}g{\_[эme<ݍ/C|STc}gdV( V~IbrNTpl[Ocɤsz|$ME hopWc]Mz]U.)<7z:lkETb;8BPrs0KO՝oX\37ms籱"tc^ҽGihZ/QSן)^j_%}TN ((UAWT^e1 YM'9C#, ݆߫^Z=/oRdCcb\W@E_+z"O+F++UUy%yK_B`\b腒/,){Uk嵓˄COzjGx&rj` ʞDىY..BEڵk82P Boza/M^G>|zh8…=֔ӄdu2̗P\e"ړЕatT]zN5טkqoL홨w/^I寯.6c&,ZBF굢ҽ8,.)^|Wrn$y/"v#'pM/{**oa#`ZON/jzǹfмIg4j7X ׊DC_D<}<aŠ|}q7[pV^^/Gzۿv\+Bfߗw^u3\wb:sHq[{4~betl?p|r_p{/V~`$kڽ( v֛ti{z㍝b/nK?W|K#up綾n2܏UrV ?`YdH{})z.(p!NSb_+p fnQ`S~WW˧8"sX$s`].Z5_]K^wXB4g;wWKG$|<8?y#eE0+Fu] \H|.Ò"?,3G'~Ё37d!1 cgbcӯu]s+o~u],)" c4@XmAE9kz (K9nw(-tr*޴?֖/&-쓀PE 5?]r@L5 ;9h4FQB^39 x5=[:4S ݻwO;;;wwW/΄,&K0ƱN XhD:- r@hD2?j9:ռt\3L>S޽{L}wh]=|,GGy o$2Fd$ Ld 1 c$gDr?rk{{[~/p8ޞNCzuΝ҉GzqEImllΝ;z.Jg:~2?2-g" c4@Ƙ@2?2ՀZ3I@-!1 c4@hD2?2Fd$ -g@ƸY|&2FdY- 1 c4@H"oD@h2Fy|j@d-!1}># e~>2Fd 1fg" cX 2ѣљGi8v]thooOFEp8^Wv@?Y|& e~>3~vvv.FVhh0޽{F]e!} 9"a1[3C>2,H]紻˔ HN8eIF#O( Dj@d- 1fg" cOu2F1 c4@Ƹ%1@Ƹ9 c4@<׏WI@ c B" IENDB`gambas-3.16.3/comp/src/gb.form.mdi/.lang/000077500000000000000000000000001411575327000176715ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.lang/ca.po000066400000000000000000000064201411575327000206160ustar00rootroot00000000000000# Catalan translation of gb.form.mdi # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as gb.form.mdi package. # Jordi Sayol , 2007-2010. # # msgid "" msgstr "" "Project-Id-Version: gb.form.mdi\n" "POT-Creation-Date: 2002-11-01 04:27+0100\n" "PO-Revision-Date: 2011-03-20 15:17+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" #: FToolBarConfig.class:43 msgid "'&1' toolbar configuration" msgstr "Configuració barra d'eines '&1'" #: FShortcut.class:37 msgid "Action" msgstr "Acció" #: FMain.form:49 Form2.form:16 msgid "Button1" msgstr "Botó 1" #: FShortcut.form:60 FToolBarConfig.form:61 msgid "Cancel" msgstr "Canceŀla" #: FToolBarConfig.form:126 msgid "&Close" msgstr "&Tanca" #: FWorkspace.class:607 msgid "Close &all other tabs" msgstr "Tanca totes les &altres pestanyes" #: FWorkspace.class:602 msgid "&Close current tab" msgstr "&Tanta la pestanya actual" #: FToolBarConfig.form:81 msgid "ComboBox1" msgstr "Quadre combinat 1" #: FToolBarConfig.form:34 msgid "Configure..." msgstr "Configuració..." #: FToolBar.class:977 msgid "Configure &1 toolbar" msgstr "Configura la barra d'eines &1" #: FToolBar.class:979 msgid "Configure main toolbar" msgstr "Configura la barra d'eines principal" #: FShortcut.form:15 msgid "Configure shortcuts" msgstr "Configura les dreceres" #: FToolBarConfig.class:375 msgid "Do you really want to reset the toolbar?" msgstr "Voleu reinicialitzar la barra d'eines?" #: FToolBarConfig.class:162 msgid "Expander" msgstr "Extensor" #: FShortcut.form:37 msgid "Find shortcut" msgstr "Cerca drecera" #: FShortcut.class:161 msgid "Go back" msgstr "Enrere" #: FToolBarConfig.form:39 msgid "Icon size" msgstr "Mida de l'icona" #: FToolBarConfig.form:52 msgid "Large" msgstr "Gran" #: FToolBarConfig.form:47 msgid "Medium" msgstr "Mitjà" #: .project:1 msgid "Multiple document interface management" msgstr "Gestió de la interfície de documents múltiples" #: FWorkspace.form:35 msgid "Next tab" msgstr "Pestanya següent" #: FShortcut.form:54 msgid "OK" msgstr "D'acord" #: FMain.form:64 msgid "Orientation" msgstr "Orientació" #: FWorkspace.form:29 msgid "Previous tab" msgstr "Pestanya anterior" #: FShortcut.form:43 FToolBarConfig.class:375 msgid "Reset" msgstr "Reinicialitza" #: FToolBarConfig.form:113 msgid "&Reset" msgstr "&Reinicialitza" #: FToolBarConfig.class:159 msgid "Separator" msgstr "Separador" #: FShortcut.class:38 msgid "Shortcut" msgstr "Drecera" #: FToolBarConfig.form:42 msgid "Small" msgstr "Petit" #: FWorkspace.class:594 msgid "&Sort tabs" msgstr "&Ordena les pestanyes" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Aquesta drecera encara la fa servir la següen acció:" #: FToolBarConfig.class:45 msgid "Toolbar configuration" msgstr "Configuració de barra d'eines" #: FToolBarConfig.form:120 msgid "&Undo" msgstr "&Desfés" #: FMain.form:59 msgid "Window" msgstr "Finestra" #: FShortcut.class:161 msgid "You are going back to the default shortcuts." msgstr "Esteu tornat a les dreceres predeterminades" gambas-3.16.3/comp/src/gb.form.mdi/.lang/cs.po000066400000000000000000000060261411575327000206420ustar00rootroot00000000000000#, 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 "Multiple document interface management" msgstr "MDI rozhranní" #: FMain.form:49 FMain1.form:58 msgid "Button1" msgstr "-" #: FMain.form:59 msgid "Window" msgstr "Okno" #: FMain.form:64 msgid "Orientation" msgstr "Orientace" #: FMain1.form:44 msgid "Help" msgstr "Nápověda" #: FMain1.form:79 msgid "Reparent" msgstr "-" #: FShortcut.class:40 msgid "Action" msgstr "Akce" #: FShortcut.class:42 msgid "Shortcut" msgstr "Zkratka" #: FShortcut.class:170 msgid "Go back" msgstr "Vtátit se" #: FShortcut.class:170 msgid "You are going back to the default shortcuts." msgstr "Jděte zpět na výchozí zkratky." #: FShortcut.form:15 msgid "Configure shortcuts" msgstr "Nastavení zkratek" #: FShortcut.form:38 msgid "Find shortcut" msgstr "Najdi zkratku" #: FShortcut.form:44 FToolBarConfig.class:382 msgid "Reset" msgstr "Obnovit" #: FShortcut.form:55 msgid "OK" msgstr "-" #: FShortcut.form:61 FToolBarConfig.form:63 msgid "Cancel" msgstr "Zrušit" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Zkratka se již používá na následující akci:" #: FToolBar.class:1105 msgid "Configure &1 toolbar" msgstr "Nastavit &1 panel nástrojů" #: FToolBar.class:1107 msgid "Configure main toolbar" msgstr "Nastavit hlavní panel nástrojů" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "'&1' nastaveni panelu nástrojů" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Nastavní panelu nástrojů" #: FToolBarConfig.class:141 msgid "Separator" msgstr "Oddělovač" #: FToolBarConfig.class:143 msgid "Expander" msgstr "-" #: FToolBarConfig.class:145 msgid "Space" msgstr "Mezera" #: FToolBarConfig.class:382 msgid "Do you really want to reset the toolbar?" msgstr "Opravdu chcete obnovit panel nástrojů?" #: FToolBarConfig.form:36 msgid "Configure..." msgstr "Nastavit..." #: FToolBarConfig.form:41 msgid "Icon size" msgstr "Velikost ikony" #: FToolBarConfig.form:44 msgid "Small" msgstr "Malé" #: FToolBarConfig.form:49 msgid "Medium" msgstr "Střední" #: FToolBarConfig.form:54 msgid "Large" msgstr "Velké" #: FToolBarConfig.form:129 msgid "&Reset" msgstr "O&bnovit" #: FToolBarConfig.form:136 msgid "&Undo" msgstr "&Zpět" #: FToolBarConfig.form:142 msgid "&Close" msgstr "Za&vřít" #: FWorkspace.class:587 msgid "&Sort tabs" msgstr "&Seřaď záložky" #: FWorkspace.class:595 msgid "&Close current tab" msgstr "&Zavři aktuální záložku" #: FWorkspace.class:600 msgid "Close &all other tabs" msgstr "Zavři &všechny ostatní záložky" #: FWorkspace.form:30 msgid "Previous tab" msgstr "Předchozí záložka" #: FWorkspace.form:36 msgid "Next tab" msgstr "Další záložka" gambas-3.16.3/comp/src/gb.form.mdi/.lang/de.po000066400000000000000000000110371411575327000206230ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2018-06-16 14:02 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 "Multiple document interface management" msgstr "MDI-Management" #: FMain.form:65 msgid "Hello" msgstr "" #: FMain.form:106 msgid "Border" msgstr "" #: FMain.form:111 msgid "Window" msgstr "Fenster" #: FMain.form:116 msgid "Orientation" msgstr "Orientierung" #: FMain1.form:44 msgid "Help" msgstr "Hilfe" #: FMain1.form:58 msgid "Button1" msgstr "-" #: FMain1.form:79 msgid "Reparent" msgstr "Neu zuordnen" #: FMain2.form:25 msgid "Agnostic Scan Tool" msgstr "" #: FMain2.form:30 msgid "Menu1" msgstr "" #: FMain2.form:35 msgid "Save" msgstr "" #: FMain2.form:41 msgid "Save as" msgstr "" #: FMain2.form:50 msgid "Properties" msgstr "" #: FMain2.form:59 msgid "Quit" msgstr "" #: FMain2.form:95 msgid "Numériser Texte" msgstr "" #: FShortcut.class:65 msgid "Action" msgstr "Aktion" #: FShortcut.class:67 msgid "Shortcut" msgstr "Kurzbefehl" #: FShortcut.class:178 msgid "Go back" msgstr "Zurück" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Zurück zu den Standard-Kurzbefehlen." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "" #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "" #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "" #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "" #: FShortcut.class:314 #, fuzzy msgid "Export shortcuts" msgstr "Kurzbefehle einrichten" #: FShortcut.class:327 #, fuzzy msgid "Import shortcuts" msgstr "Kurzbefehle einrichten" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Kurzbefehle einrichten" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Kurzbefehl suchen" #: FShortcut.form:49 FToolBarConfig.form:127 msgid "Reset" msgstr "Zurücksetzen" #: FShortcut.form:55 msgid "Import" msgstr "" #: FShortcut.form:61 msgid "Export" msgstr "" #: FShortcut.form:72 msgid "OK" msgstr "-" #: FShortcut.form:78 FToolBarConfig.form:72 msgid "Cancel" msgstr "Abbrechen" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Dieser Kurzbefehl ist bereits mit der folgenen Aktion belegt:" #: FToolBar.class:1215 msgid "Configure &1 toolbar" msgstr "Werkzeugleiste &1 einrichten" #: FToolBar.class:1217 msgid "Configure main toolbar" msgstr "Hauptwerkzeugleiste einrichten" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Werkzeugleiste '&1' einrichten" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Werkzeugleiste einrichten" #: FToolBarConfig.class:146 msgid "Separator" msgstr "Trenner" #: FToolBarConfig.class:148 msgid "Expander" msgstr "Erweiterer" #: FToolBarConfig.class:150 msgid "Space" msgstr "Leerstelle" #: FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "Wollen Sie die Werkzeugleiste wirklich zurücksetzen?" #: FToolBarConfig.form:35 #, fuzzy msgid "Configure" msgstr "Einrichten..." #: FToolBarConfig.form:40 msgid "Icon size" msgstr "Icon-Größe" #: FToolBarConfig.form:43 msgid "Tiny" msgstr "" #: FToolBarConfig.form:48 msgid "Small" msgstr "Klein" #: FToolBarConfig.form:53 msgid "Medium" msgstr "Mittel" #: FToolBarConfig.form:58 msgid "Large" msgstr "Groß" #: FToolBarConfig.form:63 msgid "Huge" msgstr "" #: FToolBarConfig.form:105 msgid "Size" msgstr "" #: FToolBarConfig.form:121 #, fuzzy msgid "Undo" msgstr "&Rückgängig" #: FToolBarConfig.form:133 #, fuzzy msgid "Close" msgstr "&Schließen" #: FWorkspace.form:36 msgid "Show" msgstr "" #: FWorkspace.form:41 #, fuzzy msgid "Sort tabs" msgstr "Tabs &sortieren" #: FWorkspace.form:50 #, fuzzy msgid "Close tabs on the right" msgstr "Schließe &alle anderen Tabs" #: FWorkspace.form:55 #, fuzzy msgid "Close other tabs" msgstr "Schließe &alle anderen Tabs" #: FWorkspace.form:60 #, fuzzy msgid "Close all tabs" msgstr "Schließe &alle anderen Tabs" #: FWorkspace.form:67 msgid "Attach tab" msgstr "" #: FWorkspace.form:71 #, fuzzy msgid "Detach tab" msgstr "Nächster Tab" #: FWorkspace.form:76 #, fuzzy msgid "Close tab" msgstr "Schließe aktuellen &Tab" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Vorheriger Tab" #: FWorkspace.form:91 msgid "Next tab" msgstr "Nächster Tab" #~ msgid "&Reset" #~ msgstr "Zu&rücksetzen" gambas-3.16.3/comp/src/gb.form.mdi/.lang/es.po000066400000000000000000000102701411575327000206400ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.8.90\n" "PO-Revision-Date: 2015-09-20 17:53 UTC\n" "Last-Translator: Jesus \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Multiple document interface management" msgstr "Interfaz de administración de múltiples documentos" #: FMain.form:97 msgid "Border" msgstr "Borde" #: FMain.form:102 msgid "Window" msgstr "Ventana" #: FMain.form:107 msgid "Orientation" msgstr "Orientación" #: FMain1.form:44 msgid "Help" msgstr "Ayuda" #: FMain1.form:58 msgid "Button1" msgstr "-" #: FMain1.form:79 msgid "Reparent" msgstr "Cambiar padre" #: FShortcut.class:65 msgid "Action" msgstr "Acción" #: FShortcut.class:67 msgid "Shortcut" msgstr "Acceso directo" #: FShortcut.class:178 msgid "Go back" msgstr "Ir atrás" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Esta restaurando los accesos directos a sus valores predeterminados." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Imposible exportar archivo de atajos." #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Este archivo no es un archivo de atajos de Gambas." #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Imposible importar archivo de atajos." #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "Archivos de atajos Gambas" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "Exportar atajos" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "Importar atajos" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Configurar accesos directos" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Buscar acceso directo" #: FShortcut.form:49 FToolBarConfig.form:135 msgid "Reset" msgstr "Reiniciar" #: FShortcut.form:55 msgid "Import" msgstr "Importar" #: FShortcut.form:61 msgid "Export" msgstr "Exportar" #: FShortcut.form:72 msgid "OK" msgstr "OK" #: FShortcut.form:78 FToolBarConfig.form:69 msgid "Cancel" msgstr "Cancelar" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Este acceso directo ya está usado por la siguiente acción:" #: FToolBar.class:1195 msgid "Configure &1 toolbar" msgstr "Configurar la barra de herramientas &1" #: FToolBar.class:1197 msgid "Configure main toolbar" msgstr "Configurar la barra de herramientas principal" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Configuración de la barra de herramientas '&1' " #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Configuración de la barra de herramientas" #: FToolBarConfig.class:142 msgid "Separator" msgstr "Separador" #: FToolBarConfig.class:144 msgid "Expander" msgstr "Expansor" #: FToolBarConfig.class:146 msgid "Space" msgstr "Espacio" #: FToolBarConfig.class:382 msgid "Do you really want to reset the toolbar?" msgstr "¿Realmente desea restaurar la barra de herramientas?" #: FToolBarConfig.form:37 msgid "Configure" msgstr "Configurar" #: FToolBarConfig.form:42 msgid "Icon size" msgstr "Tamaño del icono" #: FToolBarConfig.form:45 msgid "Small" msgstr "Pequeño" #: FToolBarConfig.form:50 msgid "Medium" msgstr "Medio" #: FToolBarConfig.form:55 msgid "Large" msgstr "Largo" #: FToolBarConfig.form:60 msgid "Huge" msgstr "Muy grande" #: FToolBarConfig.form:142 msgid "Undo" msgstr "Deshacer" #: FToolBarConfig.form:148 msgid "Close" msgstr "Cerrar" #: FWorkspace.form:36 msgid "Show" msgstr "Mostrar" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "Ordenar pestañas" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "Cerrar las pestañas de la derecha" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "Cerrar las otras pestañas" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "Cerrar todas las pestañas" #: FWorkspace.form:67 msgid "Attach tab" msgstr "Anclar pestaña" #: FWorkspace.form:71 msgid "Detach tab" msgstr "Desanclar pestaña" #: FWorkspace.form:76 msgid "Close tab" msgstr "Cerrar pestaña" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Pestaña anterior" #: FWorkspace.form:91 msgid "Next tab" msgstr "Pestaña siguiente" gambas-3.16.3/comp/src/gb.form.mdi/.lang/es_ES.po000066400000000000000000000102651411575327000212330ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.8.90\n" "PO-Revision-Date: 2015-09-20 17:52 UTC\n" "Last-Translator: Jesus \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Multiple document interface management" msgstr "Interfaz de administración de múltiples documentos" #: FMain.form:97 msgid "Border" msgstr "Borde" #: FMain.form:102 msgid "Window" msgstr "Ventana" #: FMain.form:107 msgid "Orientation" msgstr "Orientación" #: FMain1.form:44 msgid "Help" msgstr "Ayuda" #: FMain1.form:58 msgid "Button1" msgstr "-" #: FMain1.form:79 msgid "Reparent" msgstr "Cambiar padre" #: FShortcut.class:65 msgid "Action" msgstr "Acción" #: FShortcut.class:67 msgid "Shortcut" msgstr "Acceso directo" #: FShortcut.class:178 msgid "Go back" msgstr "Ir atrás" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Esta restaurando los accesos directos a sus valores predeterminados." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Imposible exportar archivo de atajos." #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Este archivo no es un archivo de atajos de Gambas." #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Imposible importar archivo de atajos." #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "Archivos de atajos Gambas" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "Exportar atajos" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "Importar atajos" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Configurar accesos directos" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Buscar atajo" #: FShortcut.form:49 FToolBarConfig.form:135 msgid "Reset" msgstr "Reiniciar" #: FShortcut.form:55 msgid "Import" msgstr "Importar" #: FShortcut.form:61 msgid "Export" msgstr "Exportar" #: FShortcut.form:72 msgid "OK" msgstr "OK" #: FShortcut.form:78 FToolBarConfig.form:69 msgid "Cancel" msgstr "Cancelar" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Este acceso directo ya está usado por la siguiente acción:" #: FToolBar.class:1195 msgid "Configure &1 toolbar" msgstr "Configurar la barra de herramientas &1" #: FToolBar.class:1197 msgid "Configure main toolbar" msgstr "Configurar la barra de herramientas principal" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Configuración de la barra de herramientas '&1' " #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Configuración de la barra de herramientas" #: FToolBarConfig.class:142 msgid "Separator" msgstr "Separador" #: FToolBarConfig.class:144 msgid "Expander" msgstr "Expansor" #: FToolBarConfig.class:146 msgid "Space" msgstr "Espacio" #: FToolBarConfig.class:382 msgid "Do you really want to reset the toolbar?" msgstr "¿Realmente desea restaurar la barra de herramientas?" #: FToolBarConfig.form:37 msgid "Configure" msgstr "Configurar" #: FToolBarConfig.form:42 msgid "Icon size" msgstr "Tamaño del icono" #: FToolBarConfig.form:45 msgid "Small" msgstr "Pequeño" #: FToolBarConfig.form:50 msgid "Medium" msgstr "Mediano" #: FToolBarConfig.form:55 msgid "Large" msgstr "Grande" #: FToolBarConfig.form:60 msgid "Huge" msgstr "Muy grande" #: FToolBarConfig.form:142 msgid "Undo" msgstr "Deshacer" #: FToolBarConfig.form:148 msgid "Close" msgstr "Cerrar" #: FWorkspace.form:36 msgid "Show" msgstr "Mostrar" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "Ordenar pestañas" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "Cerrar las pestañas de la derecha" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "Cerrar las otras pestañas" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "Cerrar todas las pestañas" #: FWorkspace.form:67 msgid "Attach tab" msgstr "Anclar pestaña" #: FWorkspace.form:71 msgid "Detach tab" msgstr "Desanclar pestaña" #: FWorkspace.form:76 msgid "Close tab" msgstr "Cerrar pestaña" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Pestaña anterior" #: FWorkspace.form:91 msgid "Next tab" msgstr "Pestaña siguiente" gambas-3.16.3/comp/src/gb.form.mdi/.lang/fr.po000066400000000000000000000143601411575327000206440ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.10.90\n" "POT-Creation-Date: 2020-11-18 18:30 UTC\n" "PO-Revision-Date: 2018-03-17 10:03 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 "Multiple document interface management" msgstr "Interface de gestion multi document." #: FMain.form:35 FMain2.form:35 Form3.form:113 msgid "Save" msgstr "" #: FMain.form:66 msgid "Hello" msgstr "" #: FMain.form:107 msgid "Border" msgstr "" #: FMain.form:112 msgid "Window" msgstr "" #: FMain.form:117 msgid "Orientation" msgstr "" #: FMain1.form:44 msgid "Help" msgstr "" #: FMain1.form:58 msgid "Button1" msgstr "" #: FMain1.form:79 msgid "Reparent" msgstr "" #: FMain2.form:25 msgid "Agnostic Scan Tool" msgstr "" #: FMain2.form:30 msgid "Menu1" msgstr "" #: FMain2.form:41 msgid "Save as" msgstr "" #: FMain2.form:50 msgid "Properties" msgstr "" #: FMain2.form:59 msgid "Quit" msgstr "" #: FMain2.form:95 msgid "Numériser Texte" msgstr "" #: FShortcut.class:65 msgid "Action" msgstr "Action" #: FShortcut.class:67 msgid "Shortcut" msgstr "Raccourci" #: FShortcut.class:178 msgid "Go back" msgstr "Revenir" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Vous allez revenir aux raccourcis initiaux." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Impossible d'exporter les fichiers de raccourcis." #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Ce fichier n'est pas un fichier de raccourcis Gambas." #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Impossible d'importer les fichiers de raccourcis." #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "Fichiers de raccourcis Gambas" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "Exporter les raccourcis" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "Importer des raccourcis" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Configurer les raccourcis" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Trouver un raccourci" #: FShortcut.form:49 FToolBarConfig.form:127 msgid "Reset" msgstr "Réinitialiser" #: FShortcut.form:55 Form3.form:171 msgid "Import" msgstr "Importer" #: FShortcut.form:61 Form3.form:461 msgid "Export" msgstr "Exporter" #: FShortcut.form:72 msgid "OK" msgstr "OK" #: FShortcut.form:78 FToolBarConfig.form:72 msgid "Cancel" msgstr "Annuler" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Ce raccourci est déjà utilisé par l'action suivante:" #: FToolBar.class:1219 msgid "Configure &1 toolbar" msgstr "Configurer la barre d'outils &1" #: FToolBar.class:1221 msgid "Configure main toolbar" msgstr "Configurer la barre d'outils principale" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Configuration de la barre d'outils « &1 »" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Configuration de la barre d'outils" #: FToolBarConfig.class:146 msgid "Separator" msgstr "Séparateur" #: FToolBarConfig.class:148 msgid "Expander" msgstr "Extenseur" #: FToolBarConfig.class:150 msgid "Space" msgstr "Espace" #: FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "Désirez-vous vraiment réinitialiser la barre d'outils ?" #: FToolBarConfig.form:35 msgid "Configure" msgstr "Configurer" #: FToolBarConfig.form:40 msgid "Icon size" msgstr "Taille des icônes" #: FToolBarConfig.form:43 msgid "Tiny" msgstr "Minuscule" #: FToolBarConfig.form:48 msgid "Small" msgstr "Petite" #: FToolBarConfig.form:53 msgid "Medium" msgstr "Moyenne" #: FToolBarConfig.form:58 msgid "Large" msgstr "Grande" #: FToolBarConfig.form:63 msgid "Huge" msgstr "Enorme" #: FToolBarConfig.form:105 msgid "Size" msgstr "Taille" #: FToolBarConfig.form:121 Form3.form:403 msgid "Undo" msgstr "Annuler" #: FToolBarConfig.form:133 msgid "Close" msgstr "Fermer" #: FWorkspace.form:36 msgid "Show" msgstr "Afficher" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "Trier les onglets" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "Fermer les onglets à droite" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "Fermer les autres onglets" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "Fermer tous les onglets" #: FWorkspace.form:67 msgid "Attach tab" msgstr "Attacher l'onglet" #: FWorkspace.form:71 msgid "Detach tab" msgstr "Détacher l'onglet" #: FWorkspace.form:76 msgid "Close tab" msgstr "Fermer l'onglet" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Onglet précédent" #: FWorkspace.form:91 msgid "Next tab" msgstr "Onglet suivant" #: Form3.form:81 msgid "Connection editor" msgstr "" #: Form3.form:92 msgid "Show system tables" msgstr "" #: Form3.form:103 #, fuzzy msgid "New table" msgstr "Onglet suivant" #: Form3.form:121 msgid "Reload" msgstr "" #: Form3.form:132 #, fuzzy msgid "Delete table" msgstr "Détacher l'onglet" #: Form3.form:135 msgid "Remove" msgstr "" #: Form3.form:141 msgid "Rename table" msgstr "" #: Form3.form:144 msgid "Rename" msgstr "" #: Form3.form:150 #, fuzzy msgid "Copy table" msgstr "Fermer l'onglet" #: Form3.form:153 msgid "Copy" msgstr "" #: Form3.form:159 #, fuzzy msgid "Paste table" msgstr "Fermer l'onglet" #: Form3.form:162 msgid "Paste" msgstr "" #: Form3.form:168 msgid "Import text file" msgstr "" #: Form3.form:213 msgid "Fields" msgstr "" #: Form3.form:229 msgid "Add" msgstr "" #: Form3.form:243 msgid "Down" msgstr "" #: Form3.form:250 msgid "Up" msgstr "" #: Form3.form:258 msgid "Copy field list" msgstr "" #: Form3.form:276 msgid "Indexes" msgstr "" #: Form3.form:293 msgid "New index" msgstr "" #: Form3.form:353 msgid "Run query" msgstr "" #: Form3.form:359 msgid "New query" msgstr "" #: Form3.form:361 msgid "New" msgstr "" #: Form3.form:367 msgid "Remove query" msgstr "" #: Form3.form:375 msgid "Clear" msgstr "" #: Form3.form:382 msgid "Cut" msgstr "" #: Form3.form:410 msgid "Redo" msgstr "" #: Form3.form:451 msgid "Edit" msgstr "" #: Form3.form:458 msgid "Export to CSV file" msgstr "" #: Form3.form:488 msgid "Delete" msgstr "" #: Form3.form:496 msgid "Select all" msgstr "" #: Form3.form:504 msgid "Unselect all" msgstr "" gambas-3.16.3/comp/src/gb.form.mdi/.lang/it.po000066400000000000000000000101031411575327000206400ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.12.90\n" "PO-Revision-Date: 2019-01-15 14:39 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Multiple document interface management" msgstr "Interfaccia di gestione multi documento" #: FShortcut.class:65 msgid "Action" msgstr "Action" #: FShortcut.class:67 msgid "Shortcut" msgstr "Scorciatoia da tastiera" #: FShortcut.class:178 msgid "Go back" msgstr "Torna indietro" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Stai ritornando alle scorciatoie da tastiera predefinite." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Impossibile esportare i file delle scorciatoie da tastiera." #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Questo file non è un file di scorciatoie da tastiera Gambas" #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Impossibile importare i file delle scorciatoie da tastiera." #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "File delle scorciatoie da tastiera di Gambas" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "Esporta le scorciatoie da tastiera" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "Importa le scorciatoie da tastiera" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Configura le scorciatoie da tastiera" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Trova la scorciatoia da tastiera" #: FShortcut.form:49 FToolBarConfig.form:127 msgid "Reset" msgstr "Resetta" #: FShortcut.form:55 msgid "Import" msgstr "Importa" #: FShortcut.form:61 msgid "Export" msgstr "Esporta" #: FShortcut.form:72 msgid "OK" msgstr "OK" #: FShortcut.form:78 FToolBarConfig.form:72 msgid "Cancel" msgstr "Annulla" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Questa scorciatoia da tastiera è già in uso dalla seguente azione:" #: FToolBar.class:1215 msgid "Configure &1 toolbar" msgstr "Configura la barra degli strumenti &1" #: FToolBar.class:1217 msgid "Configure main toolbar" msgstr "Configura la barra degli strumenti principale" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Configurazione della barra degli strumenti '&1'" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Configurazione della barra degli strumenti" #: FToolBarConfig.class:146 msgid "Separator" msgstr "Separatore" #: FToolBarConfig.class:148 msgid "Expander" msgstr "Espandi" #: FToolBarConfig.class:150 msgid "Space" msgstr "Spazio" #: FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "Vuoi veramente resettare la barra degli strumenti?" #: FToolBarConfig.form:35 msgid "Configure" msgstr "Configura" #: FToolBarConfig.form:40 msgid "Icon size" msgstr "Misura dell'icona" #: FToolBarConfig.form:43 msgid "Tiny" msgstr "Molto piccolo" #: FToolBarConfig.form:48 msgid "Small" msgstr "Piccolo" #: FToolBarConfig.form:53 msgid "Medium" msgstr "Medio" #: FToolBarConfig.form:58 msgid "Large" msgstr "Grande" #: FToolBarConfig.form:63 msgid "Huge" msgstr "Molto grande" #: FToolBarConfig.form:105 msgid "Size" msgstr "Misura" #: FToolBarConfig.form:121 msgid "Undo" msgstr "Annulla" #: FToolBarConfig.form:133 msgid "Close" msgstr "Chiudi" #: FWorkspace.form:36 msgid "Show" msgstr "Mostra" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "Ordina le chede" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "Chiudi le schede sulla destra" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "Chiudi le altre schede" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "Chiudi tutte le schede" #: FWorkspace.form:67 msgid "Attach tab" msgstr "Aggiungi scheda" #: FWorkspace.form:71 msgid "Detach tab" msgstr "Rimuovi scheda" #: FWorkspace.form:76 msgid "Close tab" msgstr "Chiudi scheda" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Scheda precedente" #: FWorkspace.form:91 msgid "Next tab" msgstr "Scheda successiva" gambas-3.16.3/comp/src/gb.form.mdi/.lang/ja.po000066400000000000000000000014761411575327000206330ustar00rootroot00000000000000#, 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:49 msgid "Button4" msgstr "" #: FMain.class:65 Form2.class:22 msgid "Button1" msgstr "" #: FMain.class:70 msgid "Button2" msgstr "" #: FMain.class:75 msgid "Button3" msgstr "" #: FWorkspace.class:617 msgid "&Close current tab" msgstr "現在のタブを閉じる(&C)" #: FWorkspace.class:622 msgid "Close &all other tabs" msgstr "その他の全てのタブを閉じる(&A)" #: FWorkspace.class:772 msgid "Close current tab" msgstr "現在のタブを閉じる" gambas-3.16.3/comp/src/gb.form.mdi/.lang/nl.po000066400000000000000000000076451411575327000206560ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2014 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.12.2\n" "PO-Revision-Date: 2019-04-06 18:36 UTC\n" "Last-Translator: gbWilly \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 "Multiple document interface management" msgstr "Multiple document interface beheer" #: FShortcut.class:65 msgid "Action" msgstr "Actie" #: FShortcut.class:67 msgid "Shortcut" msgstr "Snelkoppeling" #: FShortcut.class:178 msgid "Go back" msgstr "Ga terug" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Je gaat terug naar de standaard snelkoppelingen." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Niet in staat om snelkoppeling bestanden te exporteren." #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Dit bestand is geen Gambas snelkoppeling bestand." #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Niet in staat om snelkoppeling bestanden te importeren." #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "Gambas snelkoppeling bestanden" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "Exporteer snelkoppeling" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "Importeer snelkoppelingen" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Snelkoppelingen configureren" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Vind snelkoppeling" #: FShortcut.form:49 FToolBarConfig.form:127 msgid "Reset" msgstr "Opnieuw instellen" #: FShortcut.form:55 msgid "Import" msgstr "Importeer" #: FShortcut.form:61 msgid "Export" msgstr "Exporteer" #: FShortcut.form:72 msgid "OK" msgstr "OK" #: FShortcut.form:78 FToolBarConfig.form:72 msgid "Cancel" msgstr "Annuleren" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Deze snelkoppeling is reeds gebruikt door de volgende actie:" #: FToolBar.class:1215 msgid "Configure &1 toolbar" msgstr "Configureer &1 werkbalk" #: FToolBar.class:1217 msgid "Configure main toolbar" msgstr "Configureer hoofdwerkbalk" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "'&1' werkbalk configuratie" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Werkbalk configuratie" #: FToolBarConfig.class:146 msgid "Separator" msgstr "Scheiding" #: FToolBarConfig.class:148 msgid "Expander" msgstr "Expander" #: FToolBarConfig.class:150 msgid "Space" msgstr "Spatie" #: FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "Wil je werkelijk de werkbalk resetten?" #: FToolBarConfig.form:35 msgid "Configure" msgstr "Configureer" #: FToolBarConfig.form:40 msgid "Icon size" msgstr "Afmeting icoon" #: FToolBarConfig.form:43 msgid "Tiny" msgstr "Klein" #: FToolBarConfig.form:48 msgid "Small" msgstr "Klein" #: FToolBarConfig.form:53 msgid "Medium" msgstr "Middel" #: FToolBarConfig.form:58 msgid "Large" msgstr "Groot" #: FToolBarConfig.form:63 msgid "Huge" msgstr "Reusachtig" #: FToolBarConfig.form:105 msgid "Size" msgstr "Grootte" #: FToolBarConfig.form:121 msgid "Undo" msgstr "Ongedaan maken" #: FToolBarConfig.form:133 msgid "Close" msgstr "Sluiten" #: FWorkspace.form:36 msgid "Show" msgstr "Toon" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "Sorteer tabs" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "Sluit tabs aan de rechterkant" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "Sluit overige tabs" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "Sluit alle tabs" #: FWorkspace.form:67 msgid "Attach tab" msgstr "Tab bevestigen" #: FWorkspace.form:71 msgid "Detach tab" msgstr "Tab loskoppelen" #: FWorkspace.form:76 msgid "Close tab" msgstr "Sluit tab" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Vorige tab" #: FWorkspace.form:91 msgid "Next tab" msgstr "Volgende tab" gambas-3.16.3/comp/src/gb.form.mdi/.lang/pt_BR.po000066400000000000000000000076671411575327000212570ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.14.90\n" "PO-Revision-Date: 2020-06-12 05:15 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Multiple document interface management" msgstr "Gerenciamento de interface de múltiplos documentos (MDI)" #: FShortcut.class:65 msgid "Action" msgstr "Ação" #: FShortcut.class:67 msgid "Shortcut" msgstr "Tecla de atalho" #: FShortcut.class:178 msgid "Go back" msgstr "Voltar" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Você está revertendo para as teclas de talhos padrão." #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Não foi possível exportar arquivos de teclas de atalho." #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Este arquivo não é um arquivo de teclas de atalho do Gambas." #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Não foi possível importar arquivos de teclas de atalho." #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "Arquivos de teclas de atalho do Gambas" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "Exportar teclas de atalho" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "Importar teclas de atalho" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "Configurar teclas de atalhos" #: FShortcut.form:42 msgid "Find shortcut" msgstr "Procurar teclas de atalho" #: FShortcut.form:49 FToolBarConfig.form:127 msgid "Reset" msgstr "Redefinir" #: FShortcut.form:55 msgid "Import" msgstr "Importar" #: FShortcut.form:61 msgid "Export" msgstr "Exportar" #: FShortcut.form:72 msgid "OK" msgstr "OK" #: FShortcut.form:78 FToolBarConfig.form:72 msgid "Cancel" msgstr "Cancelar" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Esta tecla de atalho já está sendo usada para a seguinte ação:" #: FToolBar.class:1215 msgid "Configure &1 toolbar" msgstr "Configurar barra &1" #: FToolBar.class:1217 msgid "Configure main toolbar" msgstr "Configurar barra principal" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Configuração da barra '&1'" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Configuração da barra" #: FToolBarConfig.class:146 msgid "Separator" msgstr "Separador" #: FToolBarConfig.class:148 msgid "Expander" msgstr "Expansor" #: FToolBarConfig.class:150 msgid "Space" msgstr "Espaço" #: FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "Você realmente deseja redefinir a barra?" #: FToolBarConfig.form:35 msgid "Configure" msgstr "Configurar" #: FToolBarConfig.form:40 msgid "Icon size" msgstr "Tamanho do ícone" #: FToolBarConfig.form:43 msgid "Tiny" msgstr "Minúsculo" #: FToolBarConfig.form:48 msgid "Small" msgstr "Pequeno" #: FToolBarConfig.form:53 msgid "Medium" msgstr "Médio" #: FToolBarConfig.form:58 msgid "Large" msgstr "Grande" #: FToolBarConfig.form:63 msgid "Huge" msgstr "Imenso" #: FToolBarConfig.form:105 msgid "Size" msgstr "Tamanho" #: FToolBarConfig.form:121 msgid "Undo" msgstr "Desfazer" #: FToolBarConfig.form:133 msgid "Close" msgstr "Cancelar" #: FWorkspace.form:36 msgid "Show" msgstr "Exibir" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "Ordenar abas" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "Fechar abas à direita" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "Fechar outras abas" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "Fechar todas as abas" #: FWorkspace.form:67 msgid "Attach tab" msgstr "Anexar aba" #: FWorkspace.form:71 msgid "Detach tab" msgstr "Destacar aba" #: FWorkspace.form:76 msgid "Close tab" msgstr "Fechar aba" #: FWorkspace.form:85 msgid "Previous tab" msgstr "Aba anterior" #: FWorkspace.form:91 msgid "Next tab" msgstr "Próxima aba" gambas-3.16.3/comp/src/gb.form.mdi/.lang/ru.po000066400000000000000000000224511411575327000206630ustar00rootroot00000000000000# 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" #: comp/src/gb.form.mdi/.project:31 msgid "Multiple document interface management" msgstr "Управление многооконным интерфейсом" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:9 msgid "Show" msgstr "Показать" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:13 msgid "Sort tabs" msgstr "Сортировать вкладки" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:20 msgid "Close tabs on the right" msgstr "Закрыть вкладки справа" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:24 msgid "Close other tabs" msgstr "Закрыть другие вкладки" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:28 msgid "Close all tabs" msgstr "Закрыть все вкладки" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:33 msgid "Attach tab" msgstr "Присоединить вкладку" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:36 msgid "Detach tab" msgstr "Отсоединить вкладку" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:40 msgid "Close tab" msgstr "Закрыть вкладку" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:47 msgid "Previous tab" msgstr "Предыдущая вкладка" #: comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form:52 msgid "Next tab" msgstr "Следующая вкладка" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBar.class:607 comp/src/gb.form.mdi/.src/ToolBar/FToolBar.class:613 msgid "." msgstr "." #: comp/src/gb.form.mdi/.src/ToolBar/FToolBar.class:1215 msgid "Configure &1 toolbar" msgstr "Настроить &1 панель инструментов" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBar.class:1217 msgid "Configure main toolbar" msgstr "Настроить главную панель инструментов" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "Конфигурация панели инструментов '&1'" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "Конфигурация панели инструментов" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:146 msgid "Separator" msgstr "Разделитель" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:148 msgid "Expander" msgstr "Расширитель" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:150 msgid "Space" msgstr "Пробел" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "Вы действительно хотите сбросить панель инструментов?" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:387 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:85 comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:33 msgid "Reset" msgstr "Сброс" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:387 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:39 comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:178 comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:57 msgid "Cancel" msgstr "Отмена" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class:421 msgid "Configure '&1' toolbar..." msgstr "Настроить '&1' панель инструментов..." #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:10 msgid "Configure" msgstr "Настроить" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:14 msgid "Icon size" msgstr "Размер иконки" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:16 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:72 msgid "Tiny" msgstr "Крошечный" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:20 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:72 msgid "Small" msgstr "Маленький" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:24 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:72 msgid "Medium" msgstr "Средний" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:28 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:72 msgid "Large" msgstr "Большой" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:32 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:72 msgid "Huge" msgstr "Огромный" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:67 msgid "Size" msgstr "Размер" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:80 msgid "Undo" msgstr "Откатить" #: comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form:90 msgid "Close" msgstr "Закрыть" #: comp/src/gb.form.mdi/.src/Tests/FMain.form:39 msgid "Hello" msgstr "Привет" #: comp/src/gb.form.mdi/.src/Tests/FMain.form:72 msgid "Border" msgstr "Граница" #: comp/src/gb.form.mdi/.src/Tests/FMain.form:76 msgid "Window" msgstr "Окно" #: comp/src/gb.form.mdi/.src/Tests/FMain.form:80 msgid "Orientation" msgstr "Ориентация" #: comp/src/gb.form.mdi/.src/Tests/FMain1.form:24 msgid "Help" msgstr "Справка" #: comp/src/gb.form.mdi/.src/Tests/FMain1.form:36 msgid "Button1" msgstr "Кнопка1" #: comp/src/gb.form.mdi/.src/Tests/FMain1.form:53 msgid "Reparent" msgstr "Ремонт" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:5 msgid "Agnostic Scan Tool" msgstr "Агностический сканер" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:9 msgid "Menu1" msgstr "Меню1" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:13 msgid "Save" msgstr "Сохранить" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:18 msgid "Save as" msgstr "Сохранить как" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:25 msgid "Properties" msgstr "Свойства" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:32 msgid "Quit" msgstr "Выход" #: comp/src/gb.form.mdi/.src/Tests/FMain2.form:62 msgid "Numériser Texte" msgstr "Сканирование текста" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:65 msgid "Action" msgstr "Действие" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:67 msgid "Shortcut" msgstr "Комбинация клавиш" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "Вы возвращаетесь к комбинациям клавишам по умолчанию." #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:178 msgid "Go back" msgstr "Назад" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "Невозможно экспортировать файлы комбинаций клавиш." #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "Этот файл не является файлом комбинаций клавиш Gambas." #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "Невозможно импортировать файлы комбинаций клавиш." #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:313 comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:326 msgid "Gambas shortcuts files" msgstr "Файл комбинаций клавиш Gambas" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:314 msgid "Export shortcuts" msgstr "Экспорт комбинаций клавиш" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class:327 msgid "Import shortcuts" msgstr "Импорт комбинаций клавиш" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:5 msgid "Configure shortcuts" msgstr "Настройка комбинаций клавиш" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:27 msgid "Find shortcut" msgstr "Найти комбинацию клавиш" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:38 msgid "Import" msgstr "Импорт" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:43 msgid "Export" msgstr "Экспорт" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form:52 msgid "OK" msgstr "ОК" #: comp/src/gb.form.mdi/.src/Shortcut/FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Эта комбинация клавиш уже используется следующим действием:" gambas-3.16.3/comp/src/gb.form.mdi/.lang/sv.po000066400000000000000000000055231411575327000206660ustar00rootroot00000000000000#, 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" #: FToolBarConfig.class:34 msgid "&1 toolbar" msgstr "&1verktygsrad" #: FShortcut.class:28 msgid "Action" msgstr "Åtgärd" #: FMain.class:65 Form2.class:22 msgid "Button1" msgstr "Knapp1" #: FMain.class:70 msgid "Button2" msgstr "Knapp2" #: FMain.class:75 msgid "Button3" msgstr "Knapp3" #: FMain.class:49 msgid "Button4" msgstr "Knapp4" #: FShortcut.class:153 FToolBarConfig.class:338 msgid "Cancel" msgstr "Avbryt" #: FToolBarConfig.class:452 msgid "&Close" msgstr "&Stäng" #: FWorkspace.class:670 msgid "Close &all other tabs" msgstr "Stäng &alla andra flikar" #: FWorkspace.class:665 msgid "&Close current tab" msgstr "&Stäng aktuell flik" #: FWorkspace.class:947 msgid "Close current tab" msgstr "Stäng aktuell flik" #: FToolBar.class:859 msgid "Configure &1 toolbar" msgstr "Konfigurera &1 verktygsrad" #: FToolBar.class:861 msgid "Configure main toolbar" msgstr "Konfigurera huvudverktygsrad" #: FShortcut.class:231 msgid "Configure shortcuts" msgstr "Konfigurera genvägar" #: FToolBarConfig.class:338 msgid "Do you really want to reset the toolbar?" msgstr "Vill du verkligen återställa verktygsraden?" #: FShortcut.class:253 msgid "Find shortcut" msgstr "Leta genväg" #: FShortcut.class:153 msgid "Go back" msgstr "Gå bakåt" #: FToolBarConfig.class:398 msgid "Icon size" msgstr "Ikonstorlek" #: FToolBarConfig.class:410 msgid "Large" msgstr "Stor" #: FToolBarConfig.class:36 msgid "Main toolbar" msgstr "Huvudverktygsrad" #: FToolBarConfig.class:410 msgid "Medium" msgstr "Medium" #: FWorkspace.class:857 msgid "Next tab" msgstr "Nästa flik" #: FShortcut.class:270 msgid "OK" msgstr "OK" #: FWorkspace.class:851 msgid "Previous tab" msgstr "Föregående flik" #: FShortcut.class:259 FToolBarConfig.class:338 msgid "Reset" msgstr "Återställ" #: FToolBarConfig.class:439 msgid "&Reset" msgstr "&Återställ" #: FToolBarConfig.class:141 msgid "Separator" msgstr "Skillnadstecken" #: FShortcut.class:29 msgid "Shortcut" msgstr "Genväg" #: FToolBarConfig.class:410 msgid "Small" msgstr "Liten" #: FWorkspace.class:657 msgid "&Sort tabs" msgstr "&Sortera flikar" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "Denne genväg används redan av följande åtgärd:" #: FToolBarConfig.class:380 msgid "Toolbars configuration" msgstr "Verktygsradskonfiguration" #: FToolBarConfig.class:446 msgid "&Undo" msgstr "&Ångra" #: FShortcut.class:153 msgid "You are going back to the default shortcuts." msgstr "Du kommer att ta tillbaka standardgenvägarna." gambas-3.16.3/comp/src/gb.form.mdi/.lang/zh.po000066400000000000000000000072601411575327000206570ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.mdi 3.15.90\n" "PO-Revision-Date: 2020-11-18 18:30 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Multiple document interface management" msgstr "多文档界面管理" #: FShortcut.class:65 msgid "Action" msgstr "动作" #: FShortcut.class:67 msgid "Shortcut" msgstr "快捷键" #: FShortcut.class:178 msgid "Go back" msgstr "回溯" #: FShortcut.class:178 msgid "You are going back to the default shortcuts." msgstr "将恢复到缺省快捷键。" #: FShortcut.class:264 msgid "Unable to export shortcut files." msgstr "不能导出快捷键文件。" #: FShortcut.class:281 msgid "This file is not a Gambas shortcuts file." msgstr "该文件不是Gambas快捷键文件。" #: FShortcut.class:305 msgid "Unable to import shortcut files." msgstr "不能导入快捷键文件。" #: FShortcut.class:313 msgid "Gambas shortcuts files" msgstr "Gambas快捷键文件" #: FShortcut.class:314 msgid "Export shortcuts" msgstr "导出快捷键" #: FShortcut.class:327 msgid "Import shortcuts" msgstr "导入快捷键" #: FShortcut.form:17 msgid "Configure shortcuts" msgstr "配置快捷键" #: FShortcut.form:42 msgid "Find shortcut" msgstr "查找快捷键" #: FShortcut.form:49 FToolBarConfig.form:127 msgid "Reset" msgstr "重置" #: FShortcut.form:55 msgid "Import" msgstr "导入" #: FShortcut.form:61 msgid "Export" msgstr "导出" #: FShortcut.form:72 msgid "OK" msgstr "确定" #: FShortcut.form:78 FToolBarConfig.form:72 msgid "Cancel" msgstr "取消" #: FShortcutEditor.class:75 msgid "This shortcut is already used by the following action:" msgstr "这个快捷键已经被下面的动作使用:" #: FToolBar.class:1219 msgid "Configure &1 toolbar" msgstr "配置&1工具条" #: FToolBar.class:1221 msgid "Configure main toolbar" msgstr "配置主工具条" #: FToolBarConfig.class:47 msgid "'&1' toolbar configuration" msgstr "'&1'工具条设置" #: FToolBarConfig.class:49 msgid "Toolbar configuration" msgstr "工具条设置" #: FToolBarConfig.class:146 msgid "Separator" msgstr "分隔符" #: FToolBarConfig.class:148 msgid "Expander" msgstr "扩展" #: FToolBarConfig.class:150 msgid "Space" msgstr "空白" #: FToolBarConfig.class:387 msgid "Do you really want to reset the toolbar?" msgstr "你确定要重置工具条吗?" #: FToolBarConfig.form:35 msgid "Configure" msgstr "配置" #: FToolBarConfig.form:40 msgid "Icon size" msgstr "图标大小" #: FToolBarConfig.form:43 msgid "Tiny" msgstr "微小" #: FToolBarConfig.form:48 msgid "Small" msgstr "小" #: FToolBarConfig.form:53 msgid "Medium" msgstr "中等" #: FToolBarConfig.form:58 msgid "Large" msgstr "巨大" #: FToolBarConfig.form:63 msgid "Huge" msgstr "巨大" #: FToolBarConfig.form:105 msgid "Size" msgstr "大小" #: FToolBarConfig.form:121 msgid "Undo" msgstr "撤销" #: FToolBarConfig.form:133 msgid "Close" msgstr "关闭" #: FWorkspace.form:36 msgid "Show" msgstr "显示" #: FWorkspace.form:41 msgid "Sort tabs" msgstr "排序选项卡" #: FWorkspace.form:50 msgid "Close tabs on the right" msgstr "关闭右侧选项卡" #: FWorkspace.form:55 msgid "Close other tabs" msgstr "关闭其他选项卡" #: FWorkspace.form:60 msgid "Close all tabs" msgstr "关闭所有选项卡" #: FWorkspace.form:67 msgid "Attach tab" msgstr "附加选项卡" #: FWorkspace.form:71 msgid "Detach tab" msgstr "分离选项卡" #: FWorkspace.form:76 msgid "Close tab" msgstr "关闭选项卡" #: FWorkspace.form:85 msgid "Previous tab" msgstr "前一个标签" #: FWorkspace.form:91 msgid "Next tab" msgstr "下一个标签" gambas-3.16.3/comp/src/gb.form.mdi/.project000066400000000000000000000007341411575327000203450ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Multiple document interface management Startup=FMain Icon=.hidden/control/workspace.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.settings Authors="Benoît Minisini" Environment="GB_GUI=gb.qt5\n GTK_DEBUG=interactive" TabSize=2 Translate=1 Language=en Type=Component Maintainer=benoit Address=benoit@localhost License=General Public Licence Prefix=1 Packager=1 DoNotTranslate=".src/Tests" gambas-3.16.3/comp/src/gb.form.mdi/.src/000077500000000000000000000000001411575327000175375ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.src/Action/000077500000000000000000000000001411575327000207545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.src/Action/Action.class000066400000000000000000000037121411575327000232230ustar00rootroot00000000000000' Gambas class file Export Static Property Read List As String[] Static Private $aWindow As New Window[] Static Private $iId As Integer Static Public Sub Configure() As Boolean MAction.InitAction Return FShortcut.Run() End Static Public Sub _ConfigureToolbar(hToolbar As ToolBar) MAction.InitAction FToolBarConfig.Run(hToolbar) End Static Private Function List_Read() As String[] Return MAction.GetList() End Static Public Sub _Register(Control As Object, Old As String, (Key) As String) Dim hObs As Observer Dim hWin As Window Super._Register(Control, Old, Key) If Key Then If Control Is Menu Then hWin = Control.Window If Not $aWindow.Exist(hWin) Then $aWindow.Add(hWin) Inc $iId hObs = New Observer(hWin) As "Window" Endif Endif Endif End Static Private Sub SetShortcut(hMenu As Menu) Dim sShortcut As String If hMenu.Action Then sShortcut = MAction.GetShortcut(hMenu.Action) If sShortcut Then hMenu.Shortcut = sShortcut Endif For Each hMenu In hMenu.Children SetShortcut(hMenu) Next End Static Public Sub Window_Open() Dim hWin As Window = Last Dim hMenu As Menu For Each hMenu In hWin.Menus SetShortcut(hMenu) Next End Static Public Sub Window_Close() Try $aWindow.Remove($aWindow.Find(Last)) End Static Public Sub Add(Action As String, Text As String, Optional (Picture) As String, Optional HasShortcut As Boolean, DefaultShortcut As String) MAction.Add(Action, Text, Picture, HasShortcut, DefaultShortcut) End Static Public Sub AddFrom(Control As Object) Dim sAction As String Dim sText As String Dim sShortcut As String Dim bHasShortcut As Boolean sAction = Control.Action If Not sAction Then Return Try sText = Control.Text Try sShortcut = Control.Shortcut If sShortcut Or If Control Is Menu Then bHasShortcut = True Add(sAction, sText,, bHasShortcut, sShortcut) End gambas-3.16.3/comp/src/gb.form.mdi/.src/Action/CAction.class000066400000000000000000000056201411575327000233260ustar00rootroot00000000000000' Gambas class file Public (Key) As String Public Text As String Public Display As String Public DefaultShortcut As String Public (Shortcut) As String Public Icon As Picture Public IconPath As String Public HasShortcut As Boolean Private $sOldShortcut As String Private Sub UnquoteShortcut(sStr As String) As String sStr = Replace(sStr, "&&", Chr$(1)) sStr = Replace(sStr, "&", "") sStr = Replace(sStr, Chr$(1), "&") Return sStr End Public Sub _new(sKey As String, bHasShortcut As Boolean, cSlot As Collection, Optional hMerge As CAction) Dim sPicture As String Dim aControl As Object[] 'Debug sKey;; bHasShortcut;; cSlot["Picture"] Key = sKey Text = Tr$(cSlot["Text"]) If hMerge And If Not Text Then Text = hMerge.Text Display = UnquoteShortcut(Text) DefaultShortcut = cSlot["Shortcut"] If hMerge And If Not DefaultShortcut Then DefaultShortcut = hMerge.DefaultShortcut HasShortcut = bHasShortcut If hMerge And If Not HasShortcut Then HasShortcut = hMerge.HasShortcut Shortcut = MAction.GetShortcut(Key) If Not Shortcut Then Shortcut = DefaultShortcut $sOldShortcut = Shortcut sPicture = cSlot["Picture"] If Not sPicture Then aControl = Action[sKey].Controls If aControl.Count = 1 And If Object.Type(aControl[0]) = "MenuButton" Then sPicture = "icon:/small/menu" Endif Endif If Left(sPicture) = "$" Then Else If sPicture Then If sPicture Not Begins "icon:/" Then sPicture = ".." &/ sPicture IconPath = sPicture Try Icon = Picture[IconPath] Endif If hMerge Then If Not sPicture Or If Left(sPicture) = "$" And hMerge.IconPath Then IconPath = hMerge.IconPath Icon = hMerge.Icon Endif Endif End Public Sub Save() Dim hAction As Object If Not HasShortcut Then Return If Shortcut = $sOldShortcut Then Return If Shortcut = DefaultShortcut Then MAction.SetShortcut(Key, "") Else MAction.SetShortcut(Key, Shortcut) Endif hAction = Action[Key] hAction.Shortcut = Shortcut Action["." & Key].Shortcut = Shortcut $sOldShortcut = Shortcut End Public Sub _compare(hAction As CAction) As Integer Return String.Comp(Display, hAction.Display) End Public Sub GetConfigIcon(Optional W As Integer) As Picture Dim aIcon As String[] Dim aControl As Object[] Dim sType As String If Icon Then If W = 0 Then Return Icon If IconPath Begins "icon:/" Then aIcon = Split(IconPath, "/") aIcon[1] = W Return Picture[aIcon.Join("/")] Else Return Icon.Image.Stretch(W, W).Picture Endif Endif aControl = Action[Key].Controls If aControl.Count = 0 Then Return If W = 0 Then W = Stock.GetSize("small") sType = Object.Type(aControl[0]) If sType = "MenuButton" Then Return Picture["icon:/small/menu"] IconPath = "./control" &/ LCase(sType) & ".png" Try Return Picture[IconPath].Image.Stretch(W, W).Picture End gambas-3.16.3/comp/src/gb.form.mdi/.src/Action/MAction.module000066400000000000000000000072501411575327000235210ustar00rootroot00000000000000' Gambas module file Public Const MIME As String = "text/x-gambas-action" Public Actions As Collection Public Toolbars As Collection Private $cShortcut As Collection Public Sub SetShortcut(sAction As String, sShortcut As String) If Left(sAction) = "." Then sAction = Mid$(sAction, 2) Settings["gb.form.mdi/Shortcuts" &/ sAction] = sShortcut End Public Sub GetShortcut(sAction As String) As String If Left(sAction) = "." Then sAction = Mid$(sAction, 2) Return Settings["gb.form.mdi/Shortcuts" &/ sAction] End Private Sub InitShortcut() Dim iInd As Integer Dim sKey As String Dim sList As String $cShortcut = New Collection sList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-*/." For iInd = 1 To Len(sList) sKey = Mid$(sList, iInd, 1) $cShortcut[Key[sKey]] = sKey Next For iInd = 1 To 12 sKey = "F" & CStr(iInd) $cShortcut[Key[sKey]] = sKey Next For Each sKey In ["Backspace", "Del", "Down", "End", "Enter", "Esc", "Home", "Ins", "Left", "Pause", "PgDown", "PgUp", "Return", "Space", "Right", "Up"] $cShortcut[Key[sKey]] = sKey Next End Public Sub FindShortcut() As String Dim sShortcut As String Dim sMod As String If Not $cShortcut Then InitShortcut sShortcut = $cShortcut[Key.Code] If sShortcut Then If Len(sShortcut) > 1 Or If Not Key.Normal Then If Key.Control Then sMod &= "Ctrl+" If Key.Meta Then sMod &= "Meta+" If Key.Alt Then sMod &= "Alt+" If Key.Shift Then sMod &= "Shift+" Return sMod & sShortcut Endif Endif End Private Sub LoadAction(sFile As String) Dim hFile As File Dim sAction As String Dim sToolbar As String Dim sLine As String Dim aLine As String[] Dim hAction As CAction Dim hToolbar As CToolbar Dim cSlot As New Collection Dim bHasShortcut As Boolean hFile = Open sFile While Not Eof(hFile) Line Input #hFile, sLine sLine = Trim(sLine) If Not sLine Then Continue If Left(sLine) = "#" Then Continue If sLine Begins "{ Action " Then cSlot.Clear bHasShortcut = False sAction = Trim(Mid$(sLine, 10)) Else If sLine Begins "{ Toolbar " Then cSlot.Clear sToolbar = File.BaseName(sFile) & "." & Trim(Mid$(sLine, 10)) Else If sLine = "}" Then If sAction Then hAction = New CAction(sAction, bHasShortcut, cSlot, Actions[sAction]) Actions[hAction.Key] = hAction sAction = "" Else If sToolbar Then hToolbar = New CToolbar(sToolbar, cSlot) Toolbars[hToolbar.Key] = hToolbar sToolbar = "" Endif Else aLine = Scan(sLine, "* = *") If aLine.Count <> 2 Then Continue cSlot[aLine[0]] = UnQuote(aLine[1]) If aLine[0] = "Shortcut" Then bHasShortcut = True Endif Wend Close #hFile End Public Sub InitAction() Dim sFile As String If Actions Then Return 'Debug "Loading actions..." Actions = New Collection Toolbars = New Collection ' Why loading gb.form.mdi actions?? ' For Each sFile In Dir(".action", "*.action") ' LoadAction(".action" &/ sFile) ' Next For Each sFile In Dir("../.action", "*.action") LoadAction("../.action" &/ sFile) Next End Public Sub Add(sKey As String, sText As String, sPicture As String, bHasShortcut As Boolean, sDefaultShortcut As String) Dim hAction As CAction InitAction hAction = New CAction(sKey, bHasShortcut, ["Text": sText, "Picture": sPicture, "Shortcut": sDefaultShortcut], Actions[sKey]) Actions[hAction.Key] = hAction End Public Sub GetList() As String[] Dim aList As New String[] InitAction For Each Actions aList.Add(Actions.Key) Next Return aList.Sort() End gambas-3.16.3/comp/src/gb.form.mdi/.src/MMain.module000066400000000000000000000001011411575327000217370ustar00rootroot00000000000000' Gambas module file Public Sub Main() Action.Configure End gambas-3.16.3/comp/src/gb.form.mdi/.src/Shortcut/000077500000000000000000000000001411575327000213525ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class000066400000000000000000000151331411575327000243250ustar00rootroot00000000000000' Gambas class file Private SHORTCUTS_MAGIC As String = "# Gambas shortcuts file 1.0" Private $aAction As CAction[] Private $hEditor As FShortcutEditor Private $hVoid As Picture Public Sub Run() As Boolean Return Not Me.ShowModal() End Public Sub _new() $hEditor = New FShortcutEditor(Me) $hEditor.Hide $hEditor.Ignore = True End Private Sub RefreshTable() Dim iInd As Integer Dim hAction As CAction Dim hIcon As Picture For iInd = 0 To $aAction.Max hAction = $aAction[iInd] tvwShortcut[iInd, 0].Text = hAction.Display tvwShortcut[iInd, 0].Padding = 4 hIcon = hAction.GetConfigIcon(Desktop.Scale * 2) If Not hIcon Then hIcon = $hVoid tvwShortcut[iInd, 0].Picture = hIcon tvwShortcut[iInd, 1].Text = hAction.Shortcut tvwShortcut[iInd, 1].Padding = 4 Next tvwShortcut.Columns[1].Width = -1 'tvwShortcut.Width - Desktop.Scale * 24 tvwShortcut.Columns[1].Width += 12 * Desktop.Scale tvwShortcut.Rows.Height = tvwShortcut.Font.Height + 8 End Public Sub Form_Open() Dim hAction As CAction Dim hImage As Image $aAction = New CAction[] For Each hAction In MAction.Actions If hAction.HasShortcut Then $aAction.Add(hAction) Next $aAction.Sort 'Debug tvwShortcut.Row;; tvwShortcut.Column tvwShortcut.Rows.Count = $aAction.Count 'Debug tvwShortcut.Row;; tvwShortcut.Column tvwShortcut.Columns.Count = 2 'Debug tvwShortcut.Row;; tvwShortcut.Column tvwShortcut.Columns[0].Text = ("Action") tvwShortcut.Columns[0].Expand = True tvwShortcut.Columns[1].Text = ("Shortcut") hImage = New Image(16, 16, Color.Transparent) $hVoid = hImage.Picture RefreshTable Settings.Read(Me, "gb.form.mdi/FShortcut") End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() tvwShortcut.Save SaveShortcut Me.Close(True) End Public Sub tvwShortcut_Click() Dim hAction As CAction If btnFind.Value Then Return If tvwShortcut.Row < 0 Then Return hAction = $aAction[tvwShortcut.Row] 'If tvwShortcut.Editor And If $hEditor.Define(hAction) Then Return Object.Lock(tvwShortcut) tvwShortcut.Column = 1 Object.Unlock(tvwShortcut) tvwShortcut.EditWith($hEditor) End Private Sub SaveShortcut() Dim hAction As CAction For Each hAction In MAction.Actions hAction.Save Next Settings.Save End Public Sub Form_Close() Settings.Write(Me, "gb.form.mdi/FShortcut") End Public Sub tvwShortcut_Save(Row As Integer, (Column) As Integer, Value As String) If $hEditor.BadShortcut Then Return tvwShortcut[Row, 1].Text = Value $aAction[Row].Shortcut = Value End Public Sub btnFind_Click() If btnFind.Value Then tvwShortcut.Cancel btnFind.SetFocus Else tvwShortcut_Click Endif End Public Sub btnFind_KeyPress() Dim sShortcut As String Dim iRow As Integer If btnFind.Value Then sShortcut = Shortcut.FromKey() 'MAction.FindShortcut() If sShortcut Then For iRow = 0 To tvwShortcut.Rows.Count - 1 If tvwShortcut[iRow, 1].Text = sShortcut Then tvwShortcut.Row = iRow Break Endif Next Endif Stop Event Endif End Public Sub btnFind_LostFocus() btnFind.Value = False End Public Sub btnDefault_Click() Dim hAction As CAction Dim iRow As Integer If Message.Warning(("You are going back to the default shortcuts."), ("Go back"), ("Cancel")) = 2 Then Return tvwShortcut.Cancel For iRow = 0 To tvwShortcut.Rows.Count - 1 hAction = $aAction[iRow] hAction.Shortcut = hAction.DefaultShortcut tvwShortcut[iRow, 1].Text = hAction.Shortcut Next SaveShortcut End Public Sub HandleKey() As Boolean Dim iRow As Integer = tvwShortcut.Row If Not Key.Normal Then Return Select Case Key.Code Case Key.Up Dec iRow Case Key.Down Inc iRow Case Key.Home iRow = 0 Case Key.End iRow = tvwShortcut.Rows.Count - 1 Case Key.PageUp iRow -= Max(1, tvwShortcut.ClientH \ tvwShortcut.Rows.H - 1) Case Key.PageDown iRow += Max(1, tvwShortcut.ClientH \ tvwShortcut.Rows.H - 1) Default Return False End Select If iRow >= 0 And If iRow < tvwShortcut.Rows.Count Then tvwShortcut.Row = iRow timAfter.Trigger Endif Return True End Public Sub timAfter_Timer() tvwShortcut_Click End ' Public Sub tvwShortcut_MouseDown() ' ' tvwShortcut_Select ' ' End ' ' Public Sub tvwShortcut_MouseUp() ' ' tvwShortcut_Select ' ' End Private Sub Export(sPath As String) Dim hFile As File Dim hAction As CAction Dim aKey As New String[] Dim sKey As String hFile = Open sPath For Create Print #hFile, SHORTCUTS_MAGIC For Each hAction In $aAction aKey.Add(hAction.Key) Next aKey.Sort For Each sKey In aKey Print #hFile, sKey; "="; MAction.Actions[sKey].Shortcut Next hFile.Close Catch Message.Error(("Unable to export shortcut files.") & "\n\n" & Error.Text) Try hFile.Close End Private Sub Import(sPath As String) Dim hFile As File Dim sMagic As String Dim sLine As String Dim iPos As Integer Dim sShortcut As String Dim hAction As CAction hFile = Open sPath Line Input #hFile, sMagic If sMagic <> SHORTCUTS_MAGIC Then Message.Error(("This file is not a Gambas shortcuts file.")) Close #hFile Return Endif While Not Eof(hFile) Line Input #hFile, sLine sLine = Trim(sLine) If Not sLine Or If Left(sLine) = "#" Or If Left(sLine) = ";" Then Continue iPos = InStr(sLine, "=") If iPos = 0 Then Continue sShortcut = Trim(Mid$(sLine, iPos + 1)) sLine = Trim(Left$(sLine, iPos - 1)) hAction = MAction.Actions[sLine] If Not hAction Then Continue hAction.Shortcut = sShortcut Wend hFile.Close RefreshTable Catch Message.Error(("Unable to import shortcut files.") & "\n\n" & Error.Text) Try Close #hFile End Public Sub btnSave_Click() Dialog.Path = Settings["gb.form.mdi/FShortcut/Path", User.Home &/ Application.Name & ".gambas.shortcuts"] Dialog.Filter = ["*.gambas.shortcuts", ("Gambas shortcuts files")] Dialog.Title = ("Export shortcuts") Try Dialog.AutoExt = True If Dialog.SaveFile() Then Return Settings["gb.form.mdi/FShortcut/Path"] = Dialog.Path Export(Dialog.Path) End Public Sub btnLoad_Click() Dialog.Path = Settings["gb.form.mdi/FShortcut/Path", User.Home] Dialog.Filter = ["*.gambas.shortcuts", ("Gambas shortcuts files")] Dialog.Title = ("Import shortcuts") If Dialog.OpenFile() Then Return 'Enhanced Dialog.OpenFile() is buggy If Not Dialog.Path Or If IsDir(Dialog.Path) Then Return Settings["gb.form.mdi/FShortcut/Path"] = Dialog.Path Import(Dialog.Path) End gambas-3.16.3/comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form000066400000000000000000000024711411575327000241640ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,91,84) Text = ("Configure shortcuts") Icon = Picture["icon:/small/shortcut"] Arrangement = Arrange.Vertical Spacing = True Margin = True { tvwShortcut TableView MoveScaled(3,1,76,70) Expand = True Mode = Select.Single Header = GridView.Horizontal ScrollBar = Scroll.Vertical Resizable = False } { timAfter #Timer #MoveScaled(63.4286,29.1429) } { HBox2 HBox MoveScaled(1,77,89,4) Spacing = True { btnFind ToggleButton MoveScaled(0,0,22,4) AutoResize = True Text = ("Find shortcut") Picture = Picture["icon:/small/find"] } { btnDefault Button MoveScaled(23,0,19,4) AutoResize = True Text = ("Reset") Picture = Picture["icon:/small/refresh"] } { btnLoad Button MoveScaled(43,0,4,4) ToolTip = ("Import") Picture = Picture["icon:/small/open"] } { btnSave Button MoveScaled(48,0,4,4) ToolTip = ("Export") Picture = Picture["icon:/small/save"] } { Panel1 Panel MoveScaled(53,0,2,3) Expand = True } { btnOK Button MoveScaled(56,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(73,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Shortcut/FShortcutEditor.class000066400000000000000000000031561411575327000254760ustar00rootroot00000000000000' Gambas class file Property Text As String Property Read BadShortcut As Boolean Private $hAction As CAction Private $bBadShortcut As Boolean Public Sub Define(hAction As CAction) As Boolean If $hAction = hAction Then Return True $hAction = hAction End Private Function Text_Read() As String Return lblShortcut.Text End Private Sub Text_Write(Value As String) If Not lblShortcut Then Return 'Object.Lock(txtShortcut) lblShortcut.Text = Value 'Object.Unlock(txtShortcut) End Public Sub btnClear_Click() lblShortcut.Text = "" CheckShortcut End Public Sub Form_KeyPress() Dim sShortcut As String If Not FShortcut.HandleKey() Then sShortcut = Shortcut.FromKey() 'MAction.FindShortcut() If sShortcut Then lblShortcut.Text = sShortcut CheckShortcut Endif Endif Stop Event End Private Sub CheckShortcut() Dim hAction As CAction Dim hSame As CAction Dim sShortcut As String = lblShortcut.Text If sShortcut Then For Each hAction In MAction.Actions If hAction = $hAction Then Continue If hAction.Shortcut = sShortcut Then hSame = hAction Break Endif Next Endif If hSame Then $bBadShortcut = True Balloon.Warning(("This shortcut is already used by the following action:") & "

      " & hSame.Display & "", lblShortcut) Else $bBadShortcut = False Balloon.Hide Endif End ' Public Sub txtShortcut_Change() ' ' CheckShortcut ' ' End Private Function BadShortcut_Read() As Boolean Return $bBadShortcut End ' Public Sub Form_Open() ' ' panSpace.Width = 2 ' ' End gambas-3.16.3/comp/src/gb.form.mdi/.src/Shortcut/FShortcutEditor.form000066400000000000000000000007441411575327000253340ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,29,9) Background = Color.TextBackground Arrangement = Arrange.Fill { Panel1 Panel MoveScaled(1,1,26,6) Background = Color.TextBackground Arrangement = Arrange.Horizontal Padding = 2 { lblShortcut Label MoveScaled(3,1,17,4) Background = Color.TextBackground Expand = True } { btnClear ToolButton MoveScaled(21,1,4,4) Picture = Picture["icon:/small/clear"] } } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/000077500000000000000000000000001411575327000206415ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FMain.class000066400000000000000000000016451411575327000226700ustar00rootroot00000000000000' Gambas class file Private $hWatcher As Watcher Public Sub Button1_Click() Workspace1.Border = Not Workspace1.Border End Public Sub Form_Open() Application.MainWindow = Me Workspace1.CloseWithMouse = True $hWatcher = New Watcher(ToolButton1) As "Watcher" Workspace1.Lock Button2_Click Button2_Click Button2_Click Button2_Click Workspace1.Unlock Button3.Action = "orientation" Action.AddFrom(Button3) End Public Sub Watcher_Move() ' Toto 'Debug ToolButton1.X;; ToolButton1.Y End Public Sub Button2_Click() Dim hForm As Form = New Form1 Workspace1.Add(hForm) End Public Sub Button3_Click() If Workspace1.Orientation = Align.Top Then Workspace1.Orientation = Align.Bottom Else Workspace1.Orientation = Align.Top Endif End Public Sub Workspace1_Activate() 'Try Debug Workspace1.ActiveWindow.Title End Public Sub ToolButton1_Click() Action.Configure End gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FMain.form000066400000000000000000000044541411575327000225270ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,77,74) Arrangement = Arrange.Vertical { ToolBar1 ToolBar MoveScaled(0,0,45,5) Key = "test" Separator = True { ToolButton1 ToolButton MoveScaled(0,0,5,4) Visible = False Action = "a" AutoResize = True Text = ("Save") Picture = Picture["icon:/22/bookmark"] } { ToolButton2 ToolButton MoveScaled(5,0,4,4) Action = "b" Picture = Picture["icon:/22/computer"] } { Separator1 Separator MoveScaled(10,0,1,4) } { ToolButton3 ToolButton MoveScaled(13,0,4,4) Visible = False Action = "c" Picture = Picture["icon:/22/edit"] } { ToolButton4 ToolButton MoveScaled(18,0,4,4) Action = "d" Picture = Picture["icon:/small/save"] } { ToolButton5 ToolButton MoveScaled(23,0,11,4) Enabled = False Action = "e" Text = ("Hello") Picture = Picture["icon:/small/save"] } } { Panel2 HBox MoveScaled(2,8,72,51) Expand = True { SidePanel2 SidePanel MoveScaled(1,4,15,46) Arrangement = Arrange.Fill Orientation = Align.Left { TreeView2 TreeView MoveScaled(1,11,12,16) Border = False } } { Workspace1 Workspace MoveScaled(24,0,28,50) Expand = True Border = False } { SidePanel1 SidePanel MoveScaled(54,2,15,46) Arrangement = Arrange.Fill Orientation = Align.Right { TreeView1 TreeView MoveScaled(0,11,15,21) Border = False } } } { Panel1 HBox MoveScaled(2,61,70,4) { Button1 Button MoveScaled(0,0,16,4) Text = ("Border") } { Button2 Button MoveScaled(17,0,16,4) Text = ("Window") } { Button3 Button MoveScaled(34,0,16,4) Text = ("Orientation") } } } # Gambas Action File 3.0 { Actions { Action a Text = "Save" Picture = "icon:/22/bookmark" } { Action b Text = "" Picture = "icon:/22/computer" } { Action c Text = "" Picture = "icon:/22/edit" } { Action d Text = "" Picture = "icon:/small/save" } { Action e Text = "Hello" Picture = "icon:/small/save" } } { Toolbars { Toolbar test Text = "" List = "a,b,c,d,e" Default = "b,|,d,e" } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FMain1.class000066400000000000000000000010531411575327000227420ustar00rootroot00000000000000' Gambas class file Public Sub _new() End Public Sub Form_Open() Application.MainWindow = Me End Public Sub Button1_Click() Label1.H = tlbrMain.Children[0].H Print tlbrMain.H;; tlbrMain.Children[0].H;; ToolButton1.H End Public Sub Button2_Click() If Panel2.Parent = Panel1 Then Panel2.Reparent(Me) Else Panel2.Reparent(Panel1) Panel2.Next = ToolButton6 Endif End Public Sub Panel2_MouseDrag() Drag(Panel2, "Coucou") End Public Sub Label1_DragMove() Debug End Public Sub Label1_Drop() Debug Drag.Data End gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FMain1.form000066400000000000000000000036231411575327000226050ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,55,50) Drop = True { tlbrMain ToolBar MoveScaled(1,1,45,6) Key = "tb_main" Separator = True { ToolButton1 ToolButton MoveScaled(0,0,4,4) Action = "a1" Picture = Picture["70a017.png"] } { ToolButton2 ToolButton MoveScaled(4,0,4,4) Action = "a2" Picture = Picture["70a017.png"] } { ToolButton3 ToolButton MoveScaled(8,0,4,4) Action = "a3" AutoResize = True Text = ("Help") Picture = Picture["70a017.png"] } { ToolButton4 ToolButton MoveScaled(13,0,4,4) Visible = False Action = "a4" Picture = Picture["icon:/small/add"] } } { Button1 Button MoveScaled(2,10,16,4) Text = ("Button1") } { Panel1 Panel MoveScaled(5,18,46,6) Arrangement = Arrange.Horizontal Border = Border.Plain { ToolButton5 ToolButton MoveScaled(2,1,5,4) Border = True } { ToolButton6 ToolButton MoveScaled(7,1,5,4) Border = True } } { Button2 Button MoveScaled(9,28,16,4) Text = ("Reparent") } { Panel2 Panel MoveScaled(45,27,4,4) Background = Color.LightBackground Border = Border.Plain } { Label1 Label MoveScaled(8,36,11,6) Drop = True Border = Border.Plain } { Panel3 Panel Label1 Name = "Panel3" MoveScaled(29,40,8,6) Drop = True Border = Border.Plain } { Separator1 Separator Label1 Name = "Separator1" MoveScaled(40,40,0,7) Drop = True } } # Gambas Action File 3.0 { Actions { Action a1 Text = "" Picture = "70a017.png" } { Action a2 Text = "" Picture = "70a017.png" } { Action a3 Text = "Help" Picture = "70a017.png" } { Action a4 Text = "" Picture = "icon:/small/add" } } { Toolbars { Toolbar tb_main Text = "" List = "a1,a2,a3,a4" Default = "a1,a2,a3" } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FMain2.class000066400000000000000000000000241411575327000227400ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FMain2.form000066400000000000000000000050241411575327000226030ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,136,100) Text = ("Agnostic Scan Tool") Icon = Picture["scanner.png"] Arrangement = Arrange.Vertical { Menu1 Menu Text = ("Menu1") Visible = False { mnuSave Menu Action = "save" Text = Shortcut(("Save"), "S") Picture = Picture["icon:/small/save"] } { mnuSaveAs Menu Action = "saveas" Text = ("Save as") & "..." Picture = Picture["icon:/small/save-as"] } { Menu2 Menu } { Properties Menu Action = "properties" Text = Shortcut(("Properties"), "P") Picture = Picture["icon:/small/properties"] } { Menu3 Menu } { mnuQuit Menu Action = "quit" Text = Shortcut(("Quit"), "Q") Picture = Picture["icon:/small/quit"] } } { ToolBar1 ToolBar MoveScaled(0,1,131,8) Key = "toolbar" { btnNew ToolButton MoveScaled(2,0,8,7) Action = "open" Picture = Picture["icon:/small/new"] } { btnProperties ToolButton MoveScaled(10,0,7,6) Action = "properties" Picture = Picture["icon:/small/properties"] } { btnSaveAs ToolButton MoveScaled(77,0,5,5) Action = "saveas" Picture = Picture["icon:/small/save-as"] } { btnQuit ToolButton MoveScaled(89,0,6,6) Action = "quit" Picture = Picture["icon:/small/quit"] } { MenuButton1 MenuButton MoveScaled(25,2,27,4) PopupMenu = "Menu1" Text = ("Numériser Texte") Picture = Picture["icon:/small/text"] } { btnSave ToolButton MoveScaled(62,2,5,5) Action = "save" Picture = Picture["icon:/small/save"] } { Button1 Button MoveScaled(99,2,18,3) } } { Separator1 Separator MoveScaled(2,8,124,0) } { MessageView1 MessageView MoveScaled(3,10,126,4) } { View DocumentView MoveScaled(3,16,52,42) Expand = True } } # Gambas Action File 3.0 { Actions { Action open Text = "" Picture = "icon:/small/new" } { Action properties Text = "Properties" Shortcut = "" Picture = "icon:/small/properties" } { Action quit Text = "Quit" Shortcut = "" Picture = "icon:/small/quit" } { Action save Text = "Save" Shortcut = "" Picture = "icon:/small/save" } { Action saveas Text = "Save as" Shortcut = "" Picture = "icon:/small/save-as" } } { Toolbars { Toolbar toolbar Text = "" List = "open,properties,saveas,quit,save" Default = "open,properties,saveas,quit,$MenuButton1,save,$Button1" } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FTestBackground.class000066400000000000000000000001411411575327000247110ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Workspace1.Image = Image.Load("70a017.png") End gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FTestBackground.form000066400000000000000000000002421411575327000245510ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Fill Margin = True { Workspace1 Workspace MoveScaled(2,5,55,48) } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FTestSidePanel.class000066400000000000000000000001671411575327000245060ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim hForm As Form hForm = New Form1 Workspace1.Add(hForm) End gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/FTestSidePanel.form000066400000000000000000000005641411575327000243450ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,104,64) Background = &HFFFF00& Arrangement = Arrange.Horizontal { SidePanel1 SidePanel MoveScaled(1,2,20,57) Visible = False Background = &HFFFFFF& Orientation = Align.Left Separator = True Transparent = True } { Workspace1 Workspace MoveScaled(44,7,48,52) Expand = True } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/Form1.class000066400000000000000000000003011411575327000226460ustar00rootroot00000000000000' Gambas class file Static $iCpt As Integer Public Sub Form_Close() 'Message.Info("Hello") End Public Sub Form_Open() Inc $iCpt Me.Title = "#" & $iCpt Label1.Text = Me.Title End gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/Form1.form000066400000000000000000000004701411575327000225130ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,39,36) Background = Color.LightBackground Arrangement = Arrange.Vertical { Panel1 Panel MoveScaled(6,2,16,6) } { Label1 Label MoveScaled(5,13,17,8) Font = Font["+3"] Padding = 4 AutoResize = True Border = Border.Sunken } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/Form2.class000066400000000000000000000004201411575327000226510ustar00rootroot00000000000000' Gambas class file Public Sub Panel_Draw() Draw.Style.Button(0, 0, Draw.W, Draw.H, False) Draw.Rect(0, 0, Draw.W, Draw.H) Draw.Text(Last.Name, 0, 0, Draw.W, Draw.H, Align.Left) End Public Sub Panel_Drop() Print Drag.Formats.Join(" ") Print Drag.Data End gambas-3.16.3/comp/src/gb.form.mdi/.src/Tests/Form2.form000066400000000000000000000006701411575327000225160ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,91,58) { DrawingArea3 DrawingArea Panel Name = "DrawingArea3" MoveScaled(1,17,32,7) } { DrawingArea4 DrawingArea Panel Name = "DrawingArea4" MoveScaled(1,25,32,7) } { DrawingArea1 DrawingArea Panel Name = "DrawingArea1" MoveScaled(1,1,32,7) Drop = True } { DrawingArea2 DrawingArea Panel Name = "DrawingArea2" MoveScaled(1,9,32,7) } } gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/000077500000000000000000000000001411575327000211015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/CToolbar.class000066400000000000000000000005221411575327000236340ustar00rootroot00000000000000' Gambas class file Public (Key) As String Public Text As String Public DefaultConfig As String[] Public List As String[] Public Sub _new(sKey As String, cSlot As Collection) Key = sKey If cSlot Then Text = cSlot["Text"] DefaultConfig = Split(cSlot["Default"], ",") List = Split(cSlot["List"], ",") Endif End gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/FToolBar.class000066400000000000000000001060611411575327000236040ustar00rootroot00000000000000' Gambas class file Public Enum ICON_TINY, ICON_SMALL, ICON_MEDIUM, ICON_LARGE, ICON_HUGE Public ToolbarKey As String Public $bDesign As Boolean Static Private $cRegister As New Collection Static Private $hExpanderBg As Picture Static Private $hConfigureImage As Image Private Const SEPARATOR_SIZE As Integer = 5 Private $hObserverParent As Observer Private $bLock As Boolean Private $bHidden As Boolean Private $bVertical As Boolean = False Private $bReallyVertical As Boolean Private $bAutoResize As Boolean Private $bConfigure As Boolean Private $bInside As Boolean Private $bPressed As Boolean Private $sDropAction As String Private $iIconSize As Integer Private $iButtonWidth As Integer Private $nRow As Integer Private $bOpened As Boolean Private $iHandleSize As Integer Private $iLock As Integer Private $aHidden As Control[] Private $aDisabled As Control[] Private $hTimerUpdate As Timer Public Sub _new() $iHandleSize = 1 'Max(4, Desktop.Scale) $iButtonWidth = Desktop.Scale * 2 + GetRealIconSize() dwgHandle.Width = $iHandleSize $hObserverParent = New Observer(Me.Parent.Parent) As "Container" $hTimerUpdate = New Timer As "TimerUpdate" $bAutoResize = True UpdateHandle panWhere.Background = Color.SetAlpha(Color.TextForeground, 192) End Private Sub GetToolBar() As ToolBar Return Me.Parent End Public Sub IsVertical() As Boolean Return $bReallyVertical End Public Sub SetVertical(bVertical As Boolean) $bReallyVertical = bVertical Update End Public Function GetContainer() As Container Return panToolBar End Private Function GetToolBarWidth(Optional (bPadding) As Boolean) As Integer Dim hCtrl As Control Dim W As Integer Dim WH As Integer If $bReallyVertical Then ' For Each hCtrl In panToolBar.Children ' If Not hCtrl.Visible Then Continue ' W = Max(W, hCtrl.W) ' Next ' ' W = Max(W, $iButtonWidth) W = $iButtonWidth Else If dwgHandle.Visible Then WH = dwgHandle.W For Each hCtrl In panToolBar.Children If hCtrl.Visible Then If hCtrl.Expand Then Return GetFreeWidth() - WH W += hCtrl.W Endif Next Endif 'If bPadding Then W += panToolBar.Padding * 2 Return W End Private Sub GetToolBarHeight(Optional WW As Integer, (bPadding) As Boolean) As Integer Dim hCtrl As Control Dim X, W, H As Integer Dim SH As Integer If $bReallyVertical Then If dwgHandle.Visible Then SH = dwgHandle.H For Each hCtrl In panToolBar.Children If hCtrl.Visible Then If hCtrl.Expand Then Return GetFreeHeight() - SH H += hCtrl.H Endif Next Else If dwgHandle.Visible Then SH = dwgHandle.W 'If ToolBarKey = "image" Then Debug ToolBarKey;; "WW =";; WW $nRow = 1 X = SH For Each hCtrl In panToolBar.Children If hCtrl.Visible Then 'If ToolBarKey = "image" Then Debug ToolbarKey;; $nRow;; hCtrl.Name;; X;; hCtrl.W;; If(hCtrl.Expand, "E", "") W = hCtrl.W If hCtrl.Expand Then W = Desktop.Scale If (X + W) > WW Then X = SH Inc $nRow Endif X += W Endif Next H = $iButtonWidth * $nRow 'If ToolBarKey = "image" Then Debug ToolBarKey;; $nRow Endif 'If bPadding Then H += panToolBar.Padding * 2 'If ToolBarKey = "image" Then Debug ToolBarKey;; "H = "; H Return H End ' Private Sub GetMaxWidth() As Integer ' ' Dim W As Integer = Me.Parent.Width ' If sepToolbar.Visible Then Dec W ' Return W ' ' End Private Function GetFreeWidth() As Integer Return Me.Parent.Parent.ClientW End Private Function GetFreeHeight() As Integer Return Me.Parent.Parent.ClientH End Private Sub GetParentArrangement() As Integer Dim hObject As Object = GetToolBar().Parent Dim iArrange As Integer Try iArrange = hObject.Arrangement If Not Error Then Return iArrange If hObject Is VBox Then Return Arrange.Vertical Else If hObject Is HBox Then Return Arrange.Horizontal Endif End Private Sub SetArrangement() Dim hToolbar As ToolBar = GetToolBar() Dim SH As Integer Dim X, Y, W, NX, WT As Integer Dim hCtrl As Control If $bDesign Then Return 'If $bInSetArrangement Then Return 'If ToolbarKey = "image" Then Debug ToolBarKey;; panToolBar.W; " x "; panToolBar.H;; "["; hToolbar.Arrangement; "]" If Not $bReallyVertical Then If dwgHandle.Visible Then SH = dwgHandle.W If $nRow = 1 Then For Each hCtrl In panToolBar.Children If hCtrl.Visible Then If hCtrl.Expand Then 'Debug ToolbarKey;; "Expand";; hCtrl.Name Inc NX Else WT += hCtrl.W Endif Endif Next WT = Max(0, panToolBar.W - WT) 'Debug ToolBarKey;; "WT = "; WT;; NX Endif X = If(System.RightToLeft, panToolBar.W - SH, SH) For Each hCtrl In panToolBar.Children If Not hCtrl.Visible Then Continue W = hCtrl.W If hCtrl.Expand Then If $nRow = 1 Then If NX And If WT > 0 Then W = WT \ NX WT -= W Dec NX Else W = Desktop.Scale Endif Else If hCtrl.Next Then W = Desktop.Scale Else W = Max(Desktop.Scale, panToolBar.W - X) Endif Endif Endif If System.RightToLeft Then X -= W If X < 0 Then X = panToolBar.W - SH Y += $iButtonWidth If hCtrl.Expand And If Not hCtrl.Next Then W = X 'panToolBar.W - X Endif 'If ToolbarKey = "editor" Then Debug ToolBarKey;; hCtrl.Name;; X;; Y;; W hCtrl.Move(X, Y, W, $iButtonWidth) Else If (X + W) > panToolBar.W Then X = SH Y += $iButtonWidth If hCtrl.Expand And If Not hCtrl.Next Then W = panToolBar.W - X Endif 'If ToolbarKey = "editor" Then Debug ToolBarKey;; hCtrl.Name;; X;; Y;; W hCtrl.Move(X, Y, W, $iButtonWidth) X += W Endif Next Else If $nRow = 1 Then hToolbar.Arrangement = If($bReallyVertical, Arrange.Vertical, Arrange.Horizontal) Else hToolbar.Arrangement = If($bReallyVertical, Arrange.Vertical, Arrange.Row) 'Arrange.Row 'If($bVertical, Arrange.Column, Arrange.Row) Endif Endif 'If ToolbarKey = "image" Then Debug "==>";; ToolBarKey;; panToolBar.W; " x "; panToolBar.H;; "["; hToolbar.Arrangement; "]" End Private Sub Update() Dim W, H As Integer Dim XH, YH, WH, HH As Integer Dim XP, YP As Integer Dim hToolbar As ToolBar = GetToolBar() If Not Object.IsValid(hToolbar) Then Return If Not Object.IsValid(hToolbar.Parent) Then Return If $iLock Then Return If $bLock Then Return $bLock = True 'If ToolBarKey = "image" Then Debug System.Backtrace.Join(" ") 'hToolbar.Arrangement = Arrange.None CheckSeparators If Not $bReallyVertical Then If System.RightToLeft Then XH = Me.W - $iHandleSize YH = 0 XP = 0 Else XH = 0 YH = 0 XP = $iHandleSize Endif YP = 0 WH = $iHandleSize HH = Me.H Else XH = 0 YH = 0 WH = Me.W HH = $iHandleSize XP = 0 YP = $iHandleSize Endif If Not dwgHandle.Visible Then WH = 0 HH = 0 XP = 0 YP = 0 Endif If $bDesign Then If dwgHandle.Visible Then dwgHandle.Move(XH, YH, WH, HH) If Not $bReallyVertical Then panToolBar.Move(XP, YP, Me.W - WH, Me.H) Else panToolBar.Move(XP, YP, Me.W, Me.H - HH) Endif Else panToolBar.Move(XP, YP, Me.W, Me.H) Endif Else panToolBar.Show If Not $bReallyVertical Then If $bAutoResize Then W = Max($iHandleSize, Min(GetToolBarWidth() + WH, GetFreeWidth())) 'H = Max(GetToolBarHeight(True), panToolBar.H) Else W = Max($iHandleSize, GetToolBarWidth() + WH) Endif If GetParentArrangement() = Arrange.Vertical Then W = Max(W, GetToolBar().Parent.ClientW) H = GetToolBarHeight(W, True) Else If $bAutoResize Then 'W = Max(GetToolBarWidth(True), GetMaxWidth()) H = Max($iHandleSize, Min(GetToolBarHeight() + HH, GetFreeHeight())) Else 'W = GetToolBarWidth(True) H = Max($iHandleSize, GetToolBarHeight() + HH) Endif W = GetToolBarWidth(True) Endif 'W += $iHandleSize If dwgHandle.Visible Then dwgHandle.Move(XH, YH, WH, HH) If Not $bReallyVertical Then panToolBar.Move(XP, YP, W - WH, H) Else panToolBar.Move(XP, YP, panToolBar.W, H - HH) Endif 'If ToolBarKey = "image" Then Debug ToolBarKey;; panToolBar.W; " x "; panToolBar.H;; "(";; H;; HH; ")" Endif If Not $bReallyVertical Then sepToolbar.Move(0, Me.H - 1, Me.W, 1) Else sepToolbar.Move(Me.W - 1, 0, 1, Me.H) Endif 'dwgHandle.Refresh $bLock = False If sepToolbar.Visible Then If $bReallyVertical Then Inc W Else Inc H Endif Endif 'Debug panToolBar.X;; panToolBar.Y;; panToolBar.W;; panToolBar.H;; "/";; W;; H 'If panToolBar.Children.Count Then Debug "=>";; panToolBar.Children[0].X;; panToolBar.Children[0].Y;; panToolBar.Children[0].W;; panToolBar.Children[0].H If Not $bDesign Then Me.Resize(W, H) Me.Parent.Resize(W, H) Endif SetArrangement End Public Sub TimerUpdate_Timer() Update End Public Sub Form_Resize() $hTimerUpdate.Trigger End Public Sub Container_Arrange() $hTimerUpdate.Trigger End Public Sub panToolbar_BeforeArrange() If $bDesign Then Return 'If ToolbarKey = "image" And If panToolBar.H = 630 Then Debug System.Backtrace.Join(" ") Update SetArrangement End Public Function IsHidden() As Boolean Return $bHidden End Public Sub SetHidden(bHidden As Boolean) If bHidden = $bHidden Then Return $bHidden = bHidden Update Action.Raise(Me.Parent) End ' PUBLIC SUB dwgHandle_DblClick() ' < ' SetHidden(NOT $bHidden) ' ' END Public Sub dwgHandle_Draw() Dim iFlag As Integer If $bInside Then iFlag += Draw.Hover If Not Me.Enabled Then iFlag += Draw.Disabled 'Draw.Style.Button(1, 1, dwgHandle.W - 2, dwgHandle.H - 2, $bPressed And $bInside, Not Me.Enabled) 'Draw.Style.Handle(1, 1, dwgHandle.W - 2, dwgHandle.H - 2, Not $bVertical, iFlag) 'If $bInside Then If $bInside Or If $bConfigure Then Draw.FillRect(0, 0, dwgHandle.W, dwgHandle.H, Color.Merge(Color.LightForeground, Color.TextBackground, 0.3)) Else Draw.FillRect(0, 0, dwgHandle.W, dwgHandle.H, Color.LightForeground) Endif 'Endif 'Draw.Style.Separator(0, 0, dwgHandle.W, dwgHandle.H, $bVertical, Not Me.Enabled) 'Draw.FillX = 0 'Draw.FillY = 0 'Draw.Style.Separator(1, 1, dwgHandle.W - 2, dwgHandle.H - 2, $bVertical, Not Me.Enabled) End Private Sub UpdateHandle() 'If $bInside Or If $bConfigure Then ' dwgHandle.Background = Color.Merge(Color.Background, Color.Foreground, 0.3) 'Else ' dwgHandle.Background = Color.Default 'Endif dwgHandle.Refresh End Public Sub dwgHandle_Enter() If $bDesign Then Return $bInside = True UpdateHandle End Public Sub dwgHandle_Leave() If $bDesign Then Return $bInside = False UpdateHandle End Public Sub dwgHandle_MouseDown() If $bDesign Then Return $bPressed = True dwgHandle.Refresh 'SetHidden(NOT $bHidden) End Public Sub dwgHandle_MouseUp() If $bDesign Then Return $bPressed = False If $bInside Then dwgHandle.Refresh If ToolbarKey Then Action._ConfigureToolbar(Me.Parent) Endif 'SetHidden(NOT $bHidden) End Public Sub IsAutoResize() As Boolean Return $bAutoResize End Public Sub SetAutoResize(bAutoResize As Boolean) $bAutoResize = bAutoResize Update End Private Sub SetObserverOn(hCtrl As Control) Dim hObs As Observer Dim hCont As Container hObs = New Observer(hCtrl) As "Item" If Not hCtrl Is Container Then Return hCont = hCtrl For Each hCtrl In hCont.Children SetObserverOn(hCtrl) Next End Private Sub InitToolbar() Dim hCtrl As Control Dim sAction As String Dim aList As String[] Dim aReparent As Control[] If Not ToolBarKey Then Return aList = GetDefaultConfig() If Not aList Then Return ' Debug panToolBar.Children.Count ' Debug System.Backtrace.Join("\n") aReparent = New Control[] For Each hCtrl In panToolBar.Children If hCtrl.Action Or If hCtrl Is Separator Then SetObserverOn(hCtrl) sAction = hCtrl.Action If sAction Then If Left(sAction) = "." Then sAction = Mid$(sAction, 2) If Not aList.Exist(sAction) Then aReparent.Add(hCtrl) Endif Endif Next For Each hCtrl In aReparent hCtrl.Reparent(panHide) hCtrl.Show Next End Public Sub FindControl(sAction As String, Optional bHiddenOnly As Boolean) As Control Dim hCtrl As Control If Not bHiddenOnly Then For Each hCtrl In panToolBar.Children If hCtrl.Action = sAction Or If hCtrl.Action = ("." & sAction) Then Return hCtrl Next Endif For Each hCtrl In panHide.Children If hCtrl.Action = sAction Or If hCtrl.Action = ("." & sAction) Then Return hCtrl Next End Public Sub Form_Open() 'Debug panToolBar.Children.Count If Not $bDesign Then $bOpened = True InitToolbar RegisterToolbar 'If ToolBarKey = "main" Then System._Breakpoint() LoadConfig(True) Endif End ' Public Sub panToolBar_Menu() ' ' Debug "Toolbar menu" ' ' End ' ' Public Sub Item_Menu() ' ' Debug "Item menu" ' ' End Private Sub FindToolbar() As CToolbar Dim hToolbar As CToolbar MAction.InitAction hToolbar = MAction.Toolbars[ToolbarKey] If Not hToolbar Then hToolbar = New CToolbar(ToolbarKey, Null) hToolbar.DefaultConfig = GetCurrentConfig() MAction.Toolbars[ToolbarKey] = hToolbar Endif Return hToolbar End Private Sub GetCurrentConfig() As String[] Dim aConfig As New String[] Dim hCtrl As Control Dim sAction As String For Each hCtrl In panToolBar.Children If hCtrl.Action Then sAction = hCtrl.Action If Left(sAction) = "." Then sAction = Mid$(sAction, 2) aConfig.Add(sAction) Else If hCtrl Is Separator aConfig.Add("|") Else If hCtrl Is ToolBarExpander Then aConfig.Add("~") Else If hCtrl Is Panel And If Panel(hCtrl).Children.Count = 0 Then If hCtrl.Expand Then aConfig.Add("~") Else aConfig.Add("-") Endif Else If hCtrl.Visible Then aConfig.Add("$" & hCtrl.Name) Endif Next Return aConfig End Private Sub GetDefaultConfig() As String[] Dim aConfig As String[] aConfig = FindToolbar().DefaultConfig If aConfig Then Return aConfig End Public Sub SetConfigureMode(bConfigure As Boolean) Dim hChild As Control If $bConfigure = bConfigure Then Return $bConfigure = bConfigure ' For Each hChild In panToolBar.Children ' hChild.Drop = $bConfigure ' Next ' For Each hChild In panHide.Children ' hChild.Drop = $bConfigure ' Next Me.Drop = $bConfigure 'panToolBar.Enabled = Not $bConfigure 'Me.Parent.Enabled = Not $bConfigure If $bConfigure Then 'hColor = Color[Color.LightBackground] 'hColor.Saturation /= 2 'Me.Background = dwgHandle.Background 'hColor.Color Else 'Me.Background = Color.Default Endif UpdateHandle 'dwgHandle.Enabled = Not $bConfigure Lock() If $bConfigure Then $aHidden = New Control[] $aDisabled = New Control[] For Each hChild In panToolBar.Children If hChild Is Separator Then Continue If Not hChild.Visible Then $aHidden.Add(hChild) hChild.Show Endif If Not hChild.Enabled Then $aDisabled.Add(hChild) hChild.Enabled = True Endif Next For Each hChild In panHide.Children If hChild Is Separator Then Continue If Not hChild.Enabled Then $aDisabled.Add(hChild) hChild.Enabled = True Endif Next Else For Each hChild In $aHidden hChild.Hide Next $aHidden = Null For Each hChild In $aDisabled hChild.Enabled = False Next $aDisabled = Null SaveConfig 'panToolBar.Refresh Endif Unlock() panToolBar.Refresh End Public Sub Form_Drag() If Not $bConfigure Or If Drag.Format <> MAction.MIME Then HideWhere(True) Stop Event Return Endif End Private Sub WaitALittle(iCount As Integer) Dim eTime As Float Dim eWait As Float eTime = Timer 'Wait eWait = (0.01 / iCount) - (eTime - Timer) If eWait > 0 Then Sleep eWait End Private Sub HideWhere(bAnim As Boolean) Dim D As Integer If Not panWhere.Visible Then Return If $bVertical Then D = panWhere.H Else D = panWhere.W Endif 'panWhere.Border = Border.None If bAnim Then For D = D - 1 To 1 Step -2 If $bVertical Then panWhere.H = D Else panWhere.W = D Endif WaitALittle(D) Next Endif panWhere.Hide End Private Sub ShowWhere(sAction As String, bAnim As Boolean, Optional hCtrl As Control) Dim D As Integer Dim DM As Integer Dim W, H As Integer If Not hCtrl Then If sAction And If Not FToolBarConfig.IsSpecialAction(sAction) Then hCtrl = FindControl(sAction) If Not hCtrl Then Return Endif Endif If hCtrl Then W = hCtrl.W H = hCtrl.H panWhere.Move(hCtrl.X, hCtrl.Y) Else If $bVertical Then W = GetToolBarHeight() H = If(sAction = "-", Desktop.Scale, SEPARATOR_SIZE) Else W = If(sAction = "-", Desktop.Scale, SEPARATOR_SIZE) H = GetToolBarHeight() Endif Endif If $bVertical Then DM = H panWhere.W = W Else DM = W panWhere.H = H Endif panWhere.Show If bAnim Then For D = 1 To DM - 1 Step 2 'For D = DM To DM If $bVertical Then panWhere.H = D Else panWhere.W = D Endif WaitALittle(DM) Next Endif If $bVertical Then panWhere.H = DM Else panWhere.W = DM Endif 'panWhere.Border = Border.Plain 'Debug panWhere.X;; panWhere.Y;; panWhere.W;; panWhere.H;; panWhere.Visible;; panWhere.Parent.Name End Public Sub Form_DragMove() Dim hCtrl As Control Dim bBefore As Boolean Dim bAnim As Boolean Dim X, Y As Integer If Not $bConfigure Or If Drag.Format <> MAction.MIME Then HideWhere(True) Stop Event Return Endif hCtrl = panToolBar.FindChild(Drag.X - panToolBar.X, Drag.Y - panToolBar.Y) If Not hCtrl Then Stop Event Return Endif While hCtrl._Parent <> panToolBar hCtrl = hCtrl._Parent Wend If hCtrl = panWhere Then Return X = Drag.X - panToolBar.X - hCtrl.X Y = Drag.Y - panToolBar.Y - hCtrl.Y If $bVertical Then bBefore = Y <= (hCtrl.H \ 2) 'If Not bBefore And If Drag.Y > ((hCtrl.H * 2) \ 3) Then Return Else bBefore = X <= (hCtrl.W \ 2) 'If Not bBefore And If Drag.X > ((hCtrl.W * 2) \ 3) Then Return Endif If bBefore Then If panWhere.Next = hCtrl Then Return Else If hCtrl.Next = panWhere Then Return Endif bAnim = Not panWhere.Visible 'panWhere.Hide 'HideWhere(False) If bBefore Then panWhere.Next = hCtrl Else panWhere.Next = hCtrl.Next hCtrl.Next = panWhere Endif ShowWhere(Drag.Paste(MAction.MIME), bAnim) End Private Sub GetControlAction(hCtrl As Control) As String Dim sAction As String sAction = hCtrl.Action If Left(sAction) = "." Then sAction = Mid$(sAction, 2) If Not sAction Then If hCtrl Is ToolBarExpander Then sAction = "~" Else If hCtrl Is Separator sAction = "|" Else If hCtrl Is Panel And If Panel(hCtrl).Children.Count = 0 Then sAction = "-" Endif Endif Return sAction End Private Sub OnMouseDrag(hCtrl As Control) Dim sAction As String While hCtrl._Parent <> panToolBar hCtrl = hCtrl._Parent 'Debug "-> "; hCtrl Wend If Not $bConfigure Then Return sAction = GetControlAction(hCtrl) If Not sAction Then Return $bLock = True 'Lock() DragStart(True) panWhere.Next = hCtrl.Next hCtrl.Next = panWhere ShowWhere(sAction, False, hCtrl) hCtrl.Hide 'Unlock() ' Debug "----------------" ' ' Debug System.Backtrace.Join(" ") ' For Each hCtrl In panToolBar.Children ' Debug hCtrl.Name;; hCtrl.Visible;; hCtrl.X;; hCtrl.Y;; hCtrl.W;; hCtrl.H ' Next ' ' Debug "----------------" FToolBarConfig.DragAction(hCtrl, sAction) $bLock = False End Public Sub Item_KeyPress() If $bConfigure Then Stop Event End Public Sub Item_MouseDown() If $bConfigure Then Stop Event End ' Public Sub Item_Enter() ' ' $iBackground = Last.Background ' ' If $bConfigure Then ' Last.Background = panWhere.Background ' Stop Event ' Endif ' ' End ' ' Public Sub Item_Leave() ' ' If $bConfigure Then ' 'If InStr("~-|", GetControlAction(Last)) Then ' Last.Background = $iBackground ' 'Endif ' Stop Event ' Endif ' ' End Public Sub Item_Menu() If $bConfigure Then Stop Event Else If Not Application.ActiveControl Is TextBox Then FToolBarConfig.OpenMenu(Me.Parent) Stop Event Endif Endif End Public Sub Item_MouseDrag() OnMouseDrag(Last) End Public Sub Form_Drop() panWhere_Drop End Public Sub DragStart(bOutside As Boolean) $sDropAction = "" If bOutside Then panWhere.Resize(SEPARATOR_SIZE, SEPARATOR_SIZE) 'Debug panWhere.Reparent(panToolBar) Endif End Public Sub DragEnd(bAnim As Boolean) Dim hCtrl As Control If $sDropAction Then If $sDropAction = "|" Then AddSeparator(panWhere) Else If $sDropAction = "~" Then AddExpander(panWhere) Else If $sDropAction = "-" Then AddSpace(panWhere) Else hCtrl = FindControl($sDropAction) If hCtrl Then ShowControl(hCtrl) hCtrl.Show hCtrl.Enabled = True hCtrl.Next = panWhere.Next Endif Endif Update Endif HideWhere(bAnim) 'Debug panWhere.Reparent(Me) End Public Sub panWhere_Drag() If Not $bConfigure Or If Drag.Format <> MAction.MIME Then Stop Event Return Endif End Private Sub AddSeparator(Optional hNext As Control) Dim hSep As Separator Dim hObs As Observer Dim W, H As Integer Lock() If $bVertical Then W = GetToolBarHeight() H = SEPARATOR_SIZE Else W = SEPARATOR_SIZE H = GetToolBarHeight() Endif hSep = New Separator(panToolBar) hSep.Next = hNext hSep.Resize(W, H) hSep.Drop = True hObs = New Observer(hSep) As "Item" Unlock() End Private Sub AddSpace(Optional hNext As Control) Dim hSpace As Panel Dim hObs As Observer Dim W, H As Integer Lock() If $bVertical Then W = GetToolBarHeight() H = Desktop.Scale Else W = Desktop.Scale H = GetToolBarHeight() Endif hSpace = New Panel(panToolBar) hSpace.Next = hNext hSpace.Resize(W, H) hSpace.Drop = True hObs = New Observer(hSpace) As "Item" Unlock() End Public Sub ToolBarExpander_Draw() If $bConfigure Then If Not $hExpanderBg Then $hExpanderBg = Picture["img/expander.png"] Draw.Tile($hExpanderBg, 0, (Last.H - $hExpanderBg.H) / 2, Last.W, $hExpanderBg.H) Endif End Private Sub AddExpander(Optional hNext As Control) Dim hExp As ToolBarExpander Dim hObs As Observer Dim W, H As Integer Lock() If $bVertical Then W = GetToolBarHeight() H = SEPARATOR_SIZE Else W = SEPARATOR_SIZE H = GetToolBarHeight() Endif hExp = New ToolBarExpander(panToolBar) As "ToolBarExpander" hExp.Next = hNext hExp.Resize(W, H) hExp.Drop = True hObs = New Observer(hExp) As "Item" Unlock() End Public Sub panWhere_Drop() 'Debug $sDropAction = Drag.Paste(MAction.MIME) End Public Sub SetText(sText As String) Me.Text = sText If $bDesign Then Return If sText Then dwgHandle.ToolTip = Subst$(("Configure &1 toolbar"), sText) Else dwgHandle.ToolTip = ("Configure main toolbar") Endif End Private Sub RegisterToolbar() Dim aSlot As FToolBar[] If Not ToolbarKey Then Return 'Debug ToolbarKey If Not $cRegister.Exist(ToolbarKey) Then $cRegister[ToolbarKey] = New FToolbar[] Endif aSlot = $cRegister[ToolbarKey] If Not aSlot.Exist(Me) Then aSlot.Add(Me) Endif End Private Sub UnregisterToolbar() Dim aSlot As FToolBar[] Dim iInd As Integer If Not ToolbarKey Then Return 'Debug ToolbarKey aSlot = $cRegister[ToolbarKey] If aSlot Then iInd = aSlot.Find(Me) If iInd >= 0 Then aSlot.Remove(iInd) Endif Endif End Public Sub SetKey(sKey As String) If ToolbarKey = sKey Then Return If $bOpened Then UnregisterToolbar ToolbarKey = Object.Type(GetToolBar().Window) & "." & sKey If $bOpened Then InitToolbar RegisterToolbar Endif 'dwgHandle.Visible = ToolbarKey Update End Public Sub GetKey() As String Dim iPos As Integer If Not ToolBarKey Then Return iPos = InStr(ToolBarKey, ".") Return Mid$(ToolBarKey, iPos + 1) End Public Sub Form_Close() UnregisterToolbar End Private Sub ToolbarToStockSize(iSize As Integer) As String Select Case iSize Case ICON_HUGE Return "huge" Case ICON_MEDIUM Return "medium" Case ICON_LARGE Return "large" Case ICON_TINY Return "tiny" Default Return "small" End Select End Private Sub CalcIconSize(iIconSize As Integer) As Integer Return Stock.GetSize(ToolbarToStockSize(iIconSize)) End Private Sub GetIcon(hAction As CAction) As Picture Dim aIcon As String[] Dim hIcon As Picture Dim iSize As Integer Dim sIcon As String iSize = CalcIconSize($iIconSize) sIcon = hAction.IconPath If sIcon Begins "icon:/" Then aIcon = Split(sIcon, "/") aIcon[1] = iSize hIcon = Picture[aIcon.Join("/")] Else hIcon = hAction.Icon If hIcon Then hIcon = hIcon.Image.Stretch(iSize, iSize).Picture Endif Endif Return hIcon End Private Sub ResizeControl(hCtrl As Control, iDim As Integer) Dim hToolButton As Object Dim sAction As String Dim hAction As CAction If $bReallyVertical Then hCtrl.W = iDim Else hCtrl.H = iDim Endif If hCtrl Is ToolButton Or If hCtrl Is MenuButton If hCtrl.Action Then hToolButton = hCtrl If Not hToolButton.Text Then If hCtrl Is ToolButton Then hCtrl.Resize(iDim, iDim) Else hCtrl.Resize(iDim + Desktop.Scale * 2, iDim) Endif Endif sAction = hCtrl.Action If Left$(sAction) = "." Then sAction = Mid$(sAction, 2) hAction = MAction.Actions[sAction] If hAction And If hAction.IconPath Then hToolButton.Picture = GetIcon(hAction) Endif Endif Endif End Private Sub CheckSeparators() Dim hLast As Control Dim hChild As Control If $bDesign Then Return For Each hChild In panToolBar.Children If hChild Is Separator Then hChild.Resize(SEPARATOR_SIZE, SEPARATOR_SIZE) If FToolBarConfig.WillBeDeleted(hChild) Then Continue hChild.Show Endif Next If $bConfigure Then Return For Each hChild In panToolBar.Children If Not hChild.Visible Then Continue If Not hLast Or If hLast Is Separator Then If hChild Is Separator Then hChild.Hide Continue 'Else If hLast And If hChild.Expand Then ' hLast.Hide Endif Endif hLast = hChild Next If hLast And If hLast Is Separator Then hLast.Hide End Private Sub StockToToolbarSize(sSize As String) As Integer Select Case LCase(sSize) Case "medium" Return ICON_MEDIUM Case "large" Return ICON_LARGE Case "huge" Return ICON_HUGE Case "tiny" Return ICON_TINY Case Else Return ICON_SMALL End Select End Public Sub GetLayout(Optional bReset As Boolean) As Variant Dim sSize As String Dim aConfig As String[] Dim aDefaultConfig As String[] If Not bReset Then aConfig = GetCurrentConfig() aDefaultConfig = GetDefaultConfig() If aConfig.Join(",") = aDefaultConfig.Join(",") Then aConfig = Null Endif sSize = Choose($iIconSize + 1, "Tiny", "", "Medium", "Large", "Huge") Return [sSize, aConfig] End Public Sub SetLayout(vLayout As Variant, Optional bInit As Boolean) Dim sSize As String Dim aConfig As String[] Dim bEnabled As Boolean Dim iInd As Integer Dim hCtrl As Control Dim sAction As String MAction.InitAction sSize = vLayout[0] aConfig = vLayout[1] $iIconSize = StockToToolbarSize(sSize) $iButtonWidth = 12 + Max(Me.Font.Height * 0.8, GetRealIconSize()) If Not aConfig Then 'If $iIconSize = ICON_SMALL Then ' If bInit Then Goto RAISE_CONFIGURE 'Endif aConfig = GetDefaultConfig() If Not aConfig Then Goto RAISE_CONFIGURE Endif bEnabled = panToolBar.Enabled panToolBar.Enabled = True panToolBar.Hide Lock() iInd = 0 While iInd < panToolBar.Children.Count hCtrl = panToolBar.Children[iInd] ResizeControl(hCtrl, $iButtonWidth) If hCtrl.Action Then hCtrl.Reparent(panHide) Else If FToolBarConfig.IsSpecialAction(GetControlAction(hCtrl)) Then hCtrl.Delete Else Inc iInd Endif Wend For Each hCtrl In panHide.Children ResizeControl(hCtrl, $iButtonWidth) Next For Each sAction In aConfig 'Print "Action "; sAction If sAction = "|" Then 'Print "--> AddSeparator()" AddSeparator() Else If sAction = "~" Then AddExpander() Else If sAction = "-" Then AddSpace() Else If Left(sAction) = "$" Then hCtrl = Me[Mid$(sAction, 2)] If hCtrl And If Object.IsValid(hCtrl) Then 'Print "--> Reparent to panToolbar" hCtrl.Reparent(panToolBar) hCtrl.Raise Endif Else hCtrl = FindControl(sAction) If hCtrl Then 'Print "--> Reparent to panToolbar" 'bVisible = hCtrl.Visible hCtrl.Reparent(panToolBar) hCtrl.Raise If bInit Then hCtrl.Show 'If hCtrl.Visible <> bVisible Then Debug "**** VISIBLE CHANGED FOR "; sAction Endif Endif Next ' For Each hCtrl In panToolBar.Children ' If hCtrl Is Separator Then Continue ' If hCtrl.Action Then Continue ' hCtrl.Raise ' Next panToolBar.Enabled = bEnabled panToolBar.Show Unlock() RAISE_CONFIGURE: If Not $bConfigure Then GetToolBar()._RaiseConfigure End Static Public Sub LoadLayout(sKey As String) As Variant Dim sSize As String Dim aConfig As String[] sSize = Settings["/gb.form.mdi/Toolbars/" &/ sKey &/ "Size"] aConfig = Settings["/gb.form.mdi/Toolbars/" &/ sKey &/ "Layout"] Return [sSize, aConfig] End Public Sub LoadConfig(Optional bInit As Boolean) Dim vLayout As Variant If Not ToolbarKey Then Return If $bDesign Then Return vLayout = LoadLayout(ToolbarKey) If Not vLayout[0] And If Not vLayout[1] Then vLayout = LoadLayout(GetKey()) SetLayout(vLayout, bInit) End Static Public Sub SaveLayout(sKey As String, vLayout As Variant, Optional hIgnore As FToolBar) Dim hForm As FToolBar Dim sSize As String Dim aConfig As String[] If Not vLayout Then Settings["/gb.form.mdi/Toolbars/" &/ sKey &/ "Size"] = Null Settings["/gb.form.mdi/Toolbars/" &/ sKey &/ "Layout"] = Null Return Endif sSize = vLayout[0] aConfig = vLayout[1] Settings["/gb.form.mdi/Toolbars/" &/ sKey &/ "Size"] = sSize Settings["/gb.form.mdi/Toolbars/" &/ sKey &/ "Layout"] = aConfig Settings.Save If $cRegister.Exist(sKey) Then For Each hForm In $cRegister[sKey] If hForm = hIgnore Then Continue hForm.LoadConfig() Next Endif End Public Sub SaveConfig(Optional bReset As Boolean) Dim aConfig As String[] Dim aOldConfig As String[] Dim bChange As Boolean Dim sSize As String Dim aLayout As Variant If Not ToolbarKey Then Return If $bDesign Then Return If Not Object.IsValid(Me.Parent.Parent) Then Return aLayout = GetLayout(bReset) ' Print Me; ": Saving config for "; ToolbarKey; ": "; ' If aConfig Then ' Print aConfig.Join(",") ' Else ' Print "NULL" ' Endif 'Print "Default config is ";; FindToolbar().DefaultConfig.Join(",") sSize = aLayout[0] aConfig = aLayout[1] If sSize <> Settings["/gb.form.mdi/Toolbars/" &/ ToolbarKey &/ "Size"] Then 'Settings["/gb.form.mdi/Toolbars/" &/ ToolbarKey &/ "Size"] = sVal bChange = True Endif If Not bChange Then bChange = True aOldConfig = Settings["/gb.form.mdi/Toolbars/" &/ ToolbarKey &/ "Layout"] ' If aOldConfig Then ' Debug "old config = "; aOldConfig.Join() ' Else ' Debug "old config = NULL" ' Endif ' If aConfig Then ' Debug "new config = "; aConfig.Join() ' Else ' Debug "new config = NULL" ' Endif If Not aOldConfig And If Not aConfig Then bChange = False Else If aOldConfig And If aConfig And If aOldConfig.Join(",") = aConfig.Join(",") Then bChange = False Endif Endif If Not bChange Then Return SaveLayout(GetKey(), Null) SaveLayout(ToolbarKey, aLayout, If(bReset, Null, Me)) End Private Sub Lock() Inc $iLock End Private Sub Unlock() If $iLock <= 0 Then Return Dec $iLock If $iLock = 0 Then Update Endif End Public Sub HideControl(hCtrl As Control) 'panToolBar.Enabled = True hCtrl.Reparent(panHide) 'panToolBar.Enabled = False End Public Sub ShowControl(hCtrl As Control) 'panToolBar.Enabled = True hCtrl.Reparent(panToolBar) 'panToolBar.Enabled = False End Public Sub SetDesign() $bDesign = True dwgHandle.ToolTip = "" dwgHandle.Mouse = Mouse.Default End Public Sub GetIconSize() As Integer Return $iIconSize End Public Sub GetStockIconSize() As String Return ToolbarToStockSize($iIconSize) End Public Sub GetRealIconSize() As Integer Return CalcIconSize(GetIconSize()) End Public Sub SetIconSize(iSize As Integer) If $iIconSize = iSize Then Return $iIconSize = iSize UpdateSize End Public Sub SetStockIconSize(sSize As String) SetIconSize(StockToToolbarSize(sSize)) End Private Sub UpdateSize() Inc Application.Busy SaveConfig LoadConfig Dec Application.Busy End Public Sub HasSeparator() As Boolean Return sepToolbar.Visible End Public Sub SetSeparator(bVisible As Boolean) If sepToolbar.Visible = bVisible Then Return sepToolbar.Visible = bVisible Update End Public Sub Form_Menu() FToolBarConfig.OpenMenu(Me.Parent) End Public Sub panToolbar_Draw() If $bConfigure Then If Not $hConfigureImage Then $hConfigureImage = Picture["img/configure.png"].Image ' If Color[Color.Background].Luminance > 127 Then ' $hConfigureImage = Image.Load("img/configure.png") ' Else ' $hConfigureImage = Image.Load("img/configure_dark.png") ' Endif Endif Paint.Brush = Paint.Image($hConfigureImage) Paint.Rectangle(0, 0, panToolBar.W, panToolBar.H) Paint.Fill ' Else If GetToolBar().Design Then ' Paint.Rectangle(0.5, 0.5, Paint.W - 1, Paint.H - 1) ' Paint.LineWidth = 1 ' Paint.Background = Color.LightBackground ' Paint.Stroke Endif End Public Sub Form_Font() If $bOpened Then UpdateSize End gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/FToolBar.form000066400000000000000000000007161411575327000234420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,81,7) { dwgHandle DrawingArea MoveScaled(1,1,3,3) Visible = False Mouse = Mouse.Pointing } { panWhere Panel MoveScaled(30,5,3,1) Visible = False Drop = True } { panHide Panel MoveScaled(46,9,24,5) Visible = False } { sepToolbar Separator MoveScaled(54,4,9,1) Visible = False Ignore = True } { panToolbar DrawingArea MoveScaled(6,1,45,3) } } gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class000066400000000000000000000223151411575327000247310ustar00rootroot00000000000000' Gambas class file Private $hToolbar As ToolBar Private $hForm As FToolBar Private $hInside As DrawingArea Private $hPopupToolbar As ToolBar Static Private $aDeleteLater As New Control[] Public Sub _new() End Public Sub Run(hToolbar As ToolBar) Me.Load SetCurrentToolbar(hToolbar) Me.Show End Private Sub GetForm(hToolbar As ToolBar) As FToolBar Return hToolbar._Container.Parent End Private Sub SetCurrentToolbar(hToolbar As ToolBar) 'Debug hToolbar;; "-";; $hToolbar If hToolbar = $hToolbar Then Return If $hToolbar Then Try $hForm.SetConfigureMode(False) $hToolbar = Null $hForm = Null Endif If Not hToolbar Then Return $hToolbar = hToolbar $hForm = GetForm(hToolbar) If $hToolbar.Text Then Me.Title = Subst(("'&1' toolbar configuration"), $hToolbar.Text) Else Me.Title = ("Toolbar configuration") Endif cmbSize.Index = $hForm.GetIconSize() InitAction $hForm.SetConfigureMode(True) End Public Sub btnClose_Click() Me.Close End Public Sub AddAction(sAction As String) Dim hItem As Control Dim W As Integer Dim sText As String 'Debug sAction If Left(sAction) = "." Then sAction = Mid$(sAction, 2) For Each hItem In svwAction.Children If hItem.Tag = sAction Then hItem.Show Return Endif Next hItem = New DrawingArea(svwAction) As "Item" hItem.Tag = sAction hItem.Mouse = Mouse.Pointing W = Stock.GetSize("small") + Desktop.Scale * 2 sText = GetActionText(sAction) If sText Then W += hItem.Font.TextWidth(sText) + Desktop.Scale hItem.Resize(W, Desktop.Scale * 4) End Private Sub InitAction() Dim hCtrl As Control Dim sAction As String Dim aAction As String[] svwAction.Children.Clear svwAction.Arrangement = Arrange.None AddAction("|") AddAction("-") AddAction("~") 'Print $hToolbar.Children.Count;; $hToolbar._Container.Children.Count aAction = MAction.Toolbars[$hForm.ToolbarKey].List If aAction Then For Each sAction In aAction If Not MAction.Actions.Exist(sAction) Then Continue hCtrl = $hForm.FindControl(sAction, True) If Not hCtrl Then Continue AddAction(sAction) Next Endif svwAction.Arrangement = Arrange.Row End Public Sub Item_Enter() $hInside = Last $hInside.Refresh End Public Sub Item_Leave() $hInside = Null Last.Refresh End Private Sub GetActionText(sAction As String) As String Select Case sAction Case "|" Return ("Separator") Case "~" Return ("Expander") Case "-" Return ("Space") Case Else Return MAction.Actions[sAction].Text End Select End Private Sub DrawItem(hCtrl As Control, sAction As String, bScreenshot As Boolean) Dim hAction As CAction Dim hIcon As Picture Dim sText As String Dim W As Integer Dim bText As Boolean Dim H As Integer 'If hItem.Tag Then hAction = MAction.Actions[hItem.Tag] bText = Draw.W > Draw.H Paint.FillRect(2, 2, Paint.W - 4, Paint.H - 4, Color.TextBackground) Paint.DrawRect(1, 1, Paint.W - 2, Paint.H - 2, Color.LightForeground) If hCtrl.Hovered Then Paint.DrawRect(0, 0, Paint.W, Paint.H, Color.LightBackground) Endif Draw.Foreground = hCtrl.Foreground Draw.Font = hCtrl.Font hAction = MAction.Actions[sAction] If hAction Then hIcon = hAction.GetConfigIcon(If(bScreenshot, $hForm.GetRealIconSize(), 0)) If hIcon Then H = Stock.GetSize("small") If bText Then Draw.Picture(hIcon, 8, (Draw.H - H) / 2, H, H) Else Draw.Picture(hIcon, (Draw.W - H) / 2, (Draw.H - H) / 2, H, H) Endif W = H Else W = $hForm.GetIconSize() Endif If bText Then Draw.Text(hAction.Display, W + 12, 0, Draw.W - W - 16, Draw.H, Align.Normal) Else Select Case sAction Case "|" hIcon = Picture["img/separator.png"] Case "~" hIcon = Picture["img/expander.png"] Case "-" hIcon = Picture["img/space.png"] End Select sText = GetActionText(sAction) If bText Then Draw.Picture(hIcon, 8, (Draw.H - hIcon.H) / 2) Else Draw.Picture(hIcon, (Draw.W - hIcon.W) / 2, (Draw.H - hIcon.H) / 2) Endif W = hIcon.W If bText Then Draw.Text(sText, W + 12, 0, Draw.W - W - 16, Draw.H, Align.Normal) 'Draw.Style.Separator(8, (hItem.H - W) / 2, W - 4, W, False) Endif End Public Sub Item_Draw() DrawItem(Last, Last.Tag, False) End Private Sub GetItemScreenshot(hAction As CAction) As Picture Dim hPict As Picture Dim hItem As Control hItem = $hForm.FindControl(hAction.Key) hPict = New Picture(hItem.W, hItem.H) Draw.Begin(hPict) Draw.FillRect(0, 0, Draw.W, Draw.H, Color.Background) DrawItem(hItem, hAction.Key, True) Draw.End Return hPict End Static Public Sub IsSpecialAction(sAction As String) As Boolean Return InStr("~|-", sAction) End Public Sub DragAction(hCtrl As Control, sAction As String) Dim hAction As CAction Dim bOutside As Boolean Dim hDest As Control Dim bAnim As Boolean If Not sAction Then Return bOutside = hCtrl.Window = Me ' If bOutside Then ' If sAction <> "|" Then hCtrl.Hide ' Else ' hCtrl.Hide ' Endif If sAction Then hAction = MAction.Actions[sAction] 'hItem = $hForm.FindControl(sAction) $hForm.DragStart(bOutside) 'If hItem Then ' Drag.Icon = GetItemScreenshot(hItem) If hAction Then Drag.Icon = GetItemScreenshot(hAction) Else If sAction = "~" Then Drag.Icon = Picture["img/expander.png"] Else If sAction = "|" Then Drag.Icon = Picture["img/separator.png"] Else If sAction = "-" Then Drag.Icon = Picture["img/space.png"] Else Drag.Icon = Null Endif 'Debug "START DRAG";; sAction hDest = Drag(hCtrl, sAction, MAction.MIME) 'Debug "END DRAG" If hDest Then If bOutside Then If hDest = panAction Then Else If Not IsSpecialAction(hCtrl.Tag) Then hCtrl.Hide Endif Endif Else If hDest = panAction Then If hCtrl.Action Then $hForm.HideControl(hCtrl) Else $aDeleteLater.Add(hCtrl) hCtrl.Hide Endif bAnim = True Else If Not hCtrl.Action Then $aDeleteLater.Add(hCtrl) hCtrl.Hide Endif Endif Endif Else If Not bOutside Then hCtrl.Show Else bAnim = True Endif Endif $hForm.DragEnd(bAnim) If $aDeleteLater.Count Then timDeleteLater.Trigger End Public Sub Item_MouseDrag() Dim hItem As DrawingArea = Last '$hInside = Null 'hItem.Refresh DragAction(hItem, hItem.Tag) End Public Sub Form_Close() SetCurrentToolbar(Null) Settings.Write(Me, "/gb.form.mdi/FToolbarConfig") End Public Sub Form_Open() Me.Center Settings.Read(Me, "/gb.form.mdi/FToolbarConfig") End Public Sub panAction_Drag() If Drag.Format <> MAction.MIME Or If Drag.Source.Parent = svwAction Then Stop Event Return Endif Drag.Show(panAction) End Public Sub panAction_Drop() Dim sAction As String = Drag.Paste(MAction.MIME) If Not IsSpecialAction(sAction) Then AddAction(sAction) End Public Sub btnReset_Click() If Message.Question(("Do you really want to reset the toolbar?"), ("Reset"), ("Cancel")) = 1 Then $hForm.SaveConfig(True) InitAction Endif End ' Public Sub btnUndo_Click() ' ' $hForm.LoadConfig ' InitAction ' ' End ' Public Sub cmbSize_Click() ' ' $hForm.SetIconSize(cmbSize.Index) ' ' End Public Sub cmbSize_Click() $hForm.SetIconSize(cmbSize.Index) End Public Sub OpenMenu(hToolbar As ToolBar) If $hForm Then Return If Not hToolbar.Key Then Return $hPopupToolbar = hToolbar 'mnuConfigure.Text = Me.Title & "..." 'Subst(("Configure '&1' toolbar..."), hToolbar.Key) mnuVerySmallSize.Checked = False mnuSmallSize.Checked = False mnuMediumSize.Checked = False mnuLargeSize.Checked = False mnuHugeSize.Checked = False Select Case GetForm(hToolbar).GetIconSize() Case FToolBar.ICON_HUGE mnuHugeSize.Checked = True Case FToolBar.ICON_LARGE mnuLargeSize.Checked = True Case FToolBar.ICON_MEDIUM mnuMediumSize.Checked = True Case FToolBar.ICON_TINY mnuVerySmallSize.Checked = True Case Else mnuSmallSize.Checked = True End Select mnuToolbar.Popup 'If Not Me.Visible Then SetCurrentToolbar(Null) End Public Sub mnuSmallSize_Click() GetForm($hPopupToolbar).SetIconSize(FToolBar.ICON_SMALL) End Public Sub mnuMediumSize_Click() GetForm($hPopupToolbar).SetIconSize(FToolBar.ICON_MEDIUM) End Public Sub mnuLargeSize_Click() GetForm($hPopupToolbar).SetIconSize(FToolBar.ICON_LARGE) End Public Sub mnuHugeSize_Click() GetForm($hPopupToolbar).SetIconSize(FToolBar.ICON_HUGE) End Public Sub mnuVerySmallSize_Click() GetForm($hPopupToolbar).SetIconSize(FToolBar.ICON_TINY) End Public Sub mnuConfigure_Click() SetCurrentToolbar($hPopupToolbar) Me.Show End Static Public Sub WillBeDeleted(hCtrl As Control) As Boolean Return $aDeleteLater.Exist(hCtrl) End Public Sub timDeleteLater_Timer() Dim hCtrl As Control For Each hCtrl In $aDeleteLater hCtrl.Delete Next $aDeleteLater.Clear End gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form000066400000000000000000000040261411575327000245660ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,71,30) Visible = False Utility = True Arrangement = Arrange.Vertical { mnuToolbar Menu { mnuConfigure Menu Text = ("Configure") & "..." Picture = Picture["icon:/small/options"] } { Menu2 Menu Text = ("Icon size") { mnuVerySmallSize Menu Text = ("Tiny") Toggle = True } { mnuSmallSize Menu Text = ("Small") Toggle = True } { mnuMediumSize Menu Text = ("Medium") Toggle = True } { mnuLargeSize Menu Text = ("Large") Toggle = True } { mnuHugeSize Menu Text = ("Huge") Toggle = True } } { Menu1 Menu } { Menu3 Menu Text = ("Cancel") Picture = Picture["icon:/small/close"] } } { panAction Panel MoveScaled(1,3,53,16) Background = Color.TextBackground Drop = True Expand = True Arrangement = Arrange.Fill { svwAction ScrollView MoveScaled(1,2,45,11) Spacing = True Margin = True Border = False ScrollBar = Scroll.Vertical } } { Separator2 Separator MoveScaled(20,22,10,0) } { HBox2 HBox MoveScaled(1,23,69,6) Spacing = True Margin = True { Label2 Label MoveScaled(0,0,5,4) AutoResize = True Text = ("Size") } { cmbSize ComboBox MoveScaled(7,0,24,4) ReadOnly = True List = [("Tiny"), ("Small"), ("Medium"), ("Large"), ("Huge")] } { Spring1 Spring MoveScaled(32,0,2,4) } { btnUndo Button MoveScaled(35,0,16,4) Visible = False Text = Shortcut(("Undo"), "U") Picture = Picture["icon:/small/undo"] } { btnReset Button MoveScaled(36,0,16,4) Text = Shortcut(("Reset"), "R") Picture = Picture["icon:/small/refresh"] } { btnClose Button MoveScaled(53,0,16,4) Text = Shortcut(("Close"), "C") Default = True Cancel = True } } { timDeleteLater #Timer #MoveScaled(43,1) } } gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/ToolBar.class000066400000000000000000000066151411575327000235020ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,-Arrangement,-Padding,-Spacing,-Indent,-Invert,Key,Text,Action,Orientation{ToolBar.Horizontal;Vertical},Size{Tiny;Small;Medium;Large;Huge}=Small,AutoResize=True,Separator" Public Const _DefaultArrangement As String = "R" Public Const _DefaultSize As String = "36,4" Public Const _Similar As String = "Panel" Public Enum Horizontal, Vertical Event Configure Property Design As Boolean Property Orientation As Integer Property AutoResize As Boolean Property Key As String Property Text As String Property Separator As Boolean Property Size As String Property Settings, Layout As String Private $hForm As FToolBar Public Sub _new() $hForm = New FToolBar(Me) Me._Container = $hForm.GetContainer() 'Super.AutoResize = True End Public Sub Configure() If Not Me.Key Then Error.Raise("The Key property must be defined") Action._ConfigureToolbar(Me) End Private Function Design_Read() As Boolean Return Super.Design End Private Sub Design_Write(Value As Boolean) Super.Design = Value If Value Then $hForm.SetDesign() End ' Private Function Hidden_Read() As Boolean ' ' Return $hForm.IsHidden() ' ' End ' ' Private Sub Hidden_Write(Value As Boolean) ' ' $hForm.SetHidden(Value) ' ' End ' Private Function Action_Read() As String ' ' Return Action.Get(Me) ' ' End ' ' Private Sub Action_Write(Value As String) ' ' Action.Register(Me, Value) ' ' End Private Function Orientation_Read() As Integer Return If($hForm.IsVertical(), 1, 0) End Private Sub Orientation_Write(Value As Integer) $hForm.SetVertical(Value) End Private Function AutoResize_Read() As Boolean Return $hForm.IsAutoResize() End Private Sub AutoResize_Write(Value As Boolean) $hForm.SetAutoResize(Value) End Private Function Key_Read() As String Return $hForm.GetKey() End Private Sub Key_Write(Value As String) $hForm.SetKey(Value) End Private Function Text_Read() As String Return $hForm.Text End Private Sub Text_Write(Value As String) $hForm.SetText(Value) End Public Sub _RaiseConfigure() Raise Configure End Private Function Separator_Read() As Boolean Return $hForm.HasSeparator() End Private Sub Separator_Write(Value As Boolean) $hForm.SetSeparator(Value) End Private Function Size_Read() As String Return $hForm.GetStockIconSize() End Private Sub Size_Write(Value As String) $hForm.SetStockIconSize(Value) End Static Private Sub LayoutToString(vLayout As Variant) As String Dim aSettings As New String[] aSettings.Add(vLayout[0]) If vLayout[1] Then aSettings.Insert(vLayout[1]) Return aSettings.Join() End Static Private Sub LayoutFromString(sLayout As String) As Variant Dim aSettings As String[] Dim sSize As String aSettings = Split(sLayout) If aSettings.Count = 0 Then Return sSize = aSettings[0] aSettings.Remove(0) If aSettings.Count = 0 Then aSettings = Null Return [sSize, aSettings] End Private Function Settings_Read() As String Return LayoutToString($hForm.GetLayout()) End Private Sub Settings_Write(Value As String) $hForm.SetLayout(LayoutFromString(Value)) End Static Public Sub GetLayout((Key) As String) As String Return LayoutToString(FToolBar.LoadLayout(Key)) End Static Public Sub SetLayout((Key) As String, sLayout As String) FToolBar.SaveLayout(Key, LayoutFromString(sLayout)) End gambas-3.16.3/comp/src/gb.form.mdi/.src/ToolBar/ToolBarExpander.class000066400000000000000000000001351411575327000251600ustar00rootroot00000000000000' Gambas class file Inherits DrawingArea Public Sub _new() Super.Expand = True End gambas-3.16.3/comp/src/gb.form.mdi/.src/Workspace/000077500000000000000000000000001411575327000214755ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/.src/Workspace/CWindow.class000066400000000000000000000003121411575327000240720ustar00rootroot00000000000000' Gambas class file Public (Window) As Window 'PUBLIC Watcher AS Watcher Public Observer As Observer Public Resizable As Boolean Public Grid As Integer Public Detached As Boolean Public Text As String gambas-3.16.3/comp/src/gb.form.mdi/.src/Workspace/FWorkspace.class000066400000000000000000000450071411575327000245760ustar00rootroot00000000000000' Gambas class file Public CloseButton As Boolean Private $aWindow As New CWindow[] Private $hCurrent As CWindow Private $hLast As CWindow Private $bMove As Boolean Private $X As Integer Private $Y As Integer Private $W As Integer Private $H As Integer Private $iNoWait As Integer Private $iBackground As Integer = Color.Default Private $bNoClose As Boolean Private $iLock As Integer Private $bBorder As Boolean = True Private $nDetach As Integer Private Enum CLOSE_ALL, CLOSE_OTHER, CLOSE_RIGHT Private $hImage As Image ' Public Sub _new() ' ' If Not $hTile Then $hTile = Picture["img/hash.png"] ' '$hWatcher = NEW Watcher(panChild) AS "panChild" ' 'TitleBar = tabWorkspace ' '$bLogo = Application.Name = "gambas" & System.Version ' ' If $bLogo Then ' ' picLogo.Picture = Picture.Load("img/logo.png") ' ' picLogo.Resize(picLogo.Picture.W, picLogo.Picture.H) ' ' Endif ' ' End Public Sub Form_Open() UpdateSize End Public Function GetActiveWindow() As Window If $hCurrent Then Return $hCurrent.Window End Private Function GetIndex(hWin As Window) As Integer Dim iInd As Integer For iInd = 0 To $aWindow.Max If $aWindow[iInd].Window = hWin Then 'DEBUG $aWindow[iInd];; "=>";; iInd Return iInd Endif Next Return -1 End Private Sub GetWorkspace(hWindow As Window) As Workspace Dim hCtrl As Control = hWindow While hCtrl If hCtrl Is Workspace Then Return hCtrl hCtrl = hCtrl.Parent Wend End Public Sub Add(hWin As Window, Optional bResize As Boolean, Optional iGrid As Integer) Dim iInd As Integer Dim hWindow As CWindow Dim hPrev As Workspace Dim hObserver As Observer Dim hTabButton As Container If GetIndex(hWin) >= 0 Then Return hPrev = GetWorkspace(hWin) If hPrev Then hPrev.Remove(hWin) If bResize Then hWin.Reparent(dwgBorder) Else hWin.Reparent(panWorkspace) Endif ' We must be sure that the window is opened, otherwise CheckWindow() will remove it. hWin.Show hWin.Hide hWindow = New CWindow hWindow.Window = hWin hWindow.Resizable = bResize hWindow.Grid = iGrid $aWindow.Add(hWindow) If $aWindow.Count > 1 Then iInd = tabWorkspace.Count Object.Lock(tabWorkspace) Inc tabWorkspace.Count tabWorkspace.Index = iInd tabWorkspace.Current.Text = "" Object.Unlock(tabWorkspace) UpdateSize Else If $iLock <= 0 Then ShowTabStrip Endif 'DEBUG "ADD "; hWin hTabButton = tabWorkspace._GetButton(tabWorkspace.Count - 1) hObserver = New Observer(hTabButton.Children[0]) As "Button" hWindow.Observer = New Observer(hWin, True) As "Watcher" UpdateTitle(hWin) ActivateWindow() End ' Private Sub GetTopLevelWindow(hCtrl As Control) As Window ' ' Dim hWin As Window ' ' Do ' hWin = hCtrl.Window ' If hWin.TopLevel Then Return hWin ' hCtrl = hWin.Parent ' Loop ' ' End Public Sub Detach(hWin As Window) Dim iInd As Integer = GetIndex(hWin) Dim hWindow As CWindow If iInd < 0 Then Error.Raise("Unknown window") If $nDetach = $aWindow.Max Then Error.Raise("Cannot detach the last window") hWindow = $aWindow[iInd] If hWindow.Detached Then Return tabWorkspace[iInd].Visible = False 'hWin.Utility = True hWin.Reparent(Null) hWin.Show hWindow.Detached = True Inc $nDetach GetParent()._RaiseDetach(hWin) End Public Sub Attach(hWin As Window) Dim iInd As Integer = GetIndex(hWin) Dim hWindow As CWindow If iInd < 0 Then Error.Raise("Unknown window") hWindow = $aWindow[iInd] If Not hWindow.Detached Then Return tabWorkspace[iInd].Visible = True 'hWin.Utility = False hWin.Reparent(panWorkspace) If tabWorkspace.Index = iInd Then hWin.Show hWindow.Detached = False Dec $nDetach ActivateWindow() GetParent()._RaiseAttach(hWin) End Public Sub SetResizable(hWin As Window, bResize As Boolean, Optional iGrid As Integer) Dim iInd As Integer = GetIndex(hWin) Dim hWindow As CWindow If iInd < 0 Then Return hWindow = $aWindow[iInd] hWindow.Resizable = bResize hWindow.Grid = iGrid If bResize Then hWin.Reparent(dwgBorder) Else hWin.Reparent(panWorkspace) Endif If hWindow = $hCurrent Then ActivateWindow() End Public Sub Exist(hWin As Window) As Boolean Return GetIndex(hWin) >= 0 End Private Sub RemoveWindow(hWin As Window, Optional bClose As Boolean) Dim hWindow As CWindow Dim iInd As Integer = GetIndex(hWin) If iInd < 0 Then Return If bClose Then If Object.IsValid(hWin) And If Not hWin.Closed Then If hWin.Close() Then Return Endif Endif Inc $iNoWait hWindow = $aWindow[iInd] If hWindow.Detached Then Dec $nDetach If $hCurrent = hWindow Then $hCurrent = Null If $hLast = hWindow Then $hLast = Null $aWindow.Remove(iInd) If $aWindow.Count Then If iInd = 0 Then Object.Lock(tabWorkspace) tabWorkspace.Index = 1 'panChild.Reparent(tabWorkspace) tabWorkspace.Index = 0 Object.Unlock(tabWorkspace) Endif tabWorkspace[iInd].Delete Else HideTabStrip Endif If $hCurrent Then ActivateWindow($hCurrent.Window) Else ActivateWindow Endif Dec $iNoWait End Public Sub Remove((Window) As Window) RemoveWindow(Window) End Private Sub UpdateTitleFromIndex(iInd As Integer) Dim hObject As Object Dim sRichText As String With $aWindow[iInd].Window hObject = $aWindow[iInd].Window $aWindow[iInd].Text = .Text Try sRichText = hObject.RichText If sRichText Then tabWorkspace[iInd].RichText = sRichText Else tabWorkspace[iInd].Text = .Text Endif tabWorkspace[iInd].Picture = .Icon ' If $hCurrent And If $hCurrent.Window = hWin Then ' lblTitle.Text = " " & .Text ' imgIcon.Picture = .Icon ' Endif End With End Private Sub UpdateTitle(Optional hWin As Window) Dim iInd As Integer If Not hWin Then If Not $hCurrent Then Return hWin = $hCurrent.Window Endif iInd = GetIndex(hWin) If iInd < 0 Then Return UpdateTitleFromIndex(iInd) End Public Sub Watcher_Title() 'DEBUG LAST.Name;; LAST.Title 'IF NOT $hCurrent THEN RETURN 'IF LAST.Control <> $hCurrent.Window THEN RETURN UpdateTitle(Last) End Public Sub Watcher_Resize() 'DEBUG LAST;; LAST.Control If Not $hCurrent Then Return 'IF LAST.Control <> $hCurrent.Window THEN RETURN MoveHandle End Public Sub Watcher_Icon() 'DEBUG LAST;; LAST.Control Watcher_Title End Public Sub Watcher_Activate() ActivateWindow(Last) End Public Sub Watcher_Close() Dim hWin As Window = Last RemoveWindow(hWin) End Private Sub CheckWindow() Dim hWindow As CWindow Dim iInd As Integer While iInd < $aWindow.Count hWindow = $aWindow[iInd] If Object.IsValid(hWindow.Window) And If Not hWindow.Window.Closed Then Inc iInd Continue Endif RemoveWindow(hWindow.Window) Wend End Private Sub MoveHandle() ' Dim hWin As Window = $hCurrent.Window ' ' panRight.Move(hWin.Width, Max(0, (hWin.Height - panRight.Height) / 2)) ' panDown.Move(Max(0, (hWin.Width - panRight.Width) / 2), hWin.Height) ' panRightDown.Move(hWin.Width, hWin.Height) ' dwgBorder.Move(0, 0, hWin.Width + 4, hWin.Height + 4) ' ' dwgBorder.Lower ' panRight.Raise ' panDown.Raise ' panRightDown.Raise End Private Sub GetParent() As Workspace Return Me.Parent End ' Private Sub IsDetached(hWindow As Window) As Boolean ' ' Dim iInd As Integer ' ' iInd = GetIndex(hWindow) ' If iInd < 0 Then Return ' Return Not tabWorkspace[iInd].Visible ' ' End Public Sub ActivateWindow(Optional hWindow As Window) Dim hWin As CWindow Dim iInd As Integer 'IF $iLock > 0 THEN RETURN If $aWindow.Count Then 'DEBUG "ACTIVATE "; $hCurrent;; "->";; ' IF hWindow THEN ' ERROR hWindow ' ELSE ' ERROR $aWindow[tabWorkspace.Index].Window ' ENDIF If hWindow Then iInd = GetIndex(hWindow) If iInd < 0 Then Return If Not $aWindow[iInd].Detached Then Try tabWorkspace.Index = iInd Return Endif Else iInd = tabWorkspace.Index Endif hWin = $aWindow[iInd] If Not Object.IsValid(hWin.Window) Then Return $hCurrent = hWin 'WITH tabWorkspace ' $hCurrent.Move(.X + .ClientX, .Y + .ClientY, .ClientW, .ClientH) 'END WITH If $iLock = 0 Then If $hCurrent.Resizable Then $hCurrent.Window.Move(0, 0) MoveHandle svwWorkspace.Raise Else panWorkspace.Raise Endif With $hCurrent.Window If $hCurrent.Detached Then .Raise Else .Show Endif '.Raise If Not Application.ActiveControl Or If Application.ActiveControl.Window <> $hCurrent.Window Then .SetFocus Endif End With If Not $hCurrent.Detached And If $hCurrent <> $hLast Then If $hLast Then $bNoClose = True $hLast.Window.Hide $bNoClose = False Endif $hLast = $hCurrent Endif UpdateTitle Endif Endif If $iLock = 0 Then GetParent()._Activate End Public Sub tabWorkspace_Click() ActivateWindow() End Public Sub UpdateSize() Dim Y, H As Integer Dim W As Integer Dim X As Integer If tabWorkspace.Visible Then If imgBackground.Visible Then Me.Background = Color.Default imgBackground.Hide panWorkspace.Background = Color.Background 'panWorkspace.Border = If($bBorder, Border.Plain, Border.None) Endif 'If $bLogo Then picLogo.Hide With tabWorkspace X = .ClientX Y = .ClientY H = .ClientH W = .ClientW panWorkspace.Move(X, Y, W, H) svwWorkspace.Move(X, Y, W, H) End With Else svwWorkspace.Move(0, 0, Me.ClientW, Me.ClientH) panWorkspace.Move(0, 0, Me.ClientW, Me.ClientH) Me.Background = If($iBackground = Color.Default, Color.Merge(Color.Background, Color.Foreground), $iBackground) imgBackground.Background = Me.Background If Not imgBackground.Visible Then imgBackground.Show panWorkspace.Border = Border.None panWorkspace.Raise Endif Endif If CloseButton Then tabWorkspace.CloseButton = $aWindow.Count >= 1 Else tabWorkspace.CloseButton = False Endif 'DEBUG tabWorkspace.Visible;; "Index =";; tabWorkspace.Index;; "ClientY =";; tabWorkspace.ClientY ' WITH tabWorkspace ' DEBUG ME.W;; ME.H;; "/";; tabWorkspace.W;; tabWorkspace.H;; "/";; .ClientW;; .ClientH;; .ClientX;; .ClientY ' END WITH End Public Sub mnuClose_Click() $aWindow[tabWorkspace.Index].Window.Close 'CheckWindow End Private Sub CloseWindows(iMode As Integer) Dim hWindow As CWindow Dim hCurrent As CWindow Dim bClose As Boolean hCurrent = $aWindow[tabWorkspace.Index] {Lock} For Each hWindow In $aWindow.Copy() Select Case iMode Case CLOSE_OTHER If hWindow = hCurrent Then Continue Case CLOSE_RIGHT If hWindow = hCurrent Then bClose = True Continue Else If Not bClose Or If hWindow.Detached Then Continue Endif End Select If hWindow.Window.Close() Then Break Next 'CheckWindow {Unlock} If iMode = CLOSE_ALL Then GetParent()._RaiseCloseAll() End Public Sub mnuCloseOther_Click() CloseWindows(CLOSE_OTHER) End Public Sub mnuCloseAll_Click() CloseWindows(CLOSE_ALL) End Public Sub mnuCloseRight_Click() CloseWindows(CLOSE_RIGHT) End Public Sub Handle_MouseDown() $bMove = True $X = Mouse.ScreenX $Y = Mouse.ScreenY $W = $hCurrent.Window.W $H = $hCurrent.Window.H 'DEBUG Mouse.ScreenX;; Mouse.ScreenY 'DEBUG $X;; $Y End Public Sub Handle_MouseMove() Dim W, H, G As Integer Dim hPanel As Panel If Not $bMove Then Return hPanel = Last With $hCurrent.Window W = .W H = .H 'DEBUG "(";; W;; H;; ") + (";; Mouse.ScreenX;; Mouse.ScreenY;; ") -> "; If hPanel <> panRight Then H = $H + Mouse.ScreenY - $Y If hPanel <> panDown Then W = $W + Mouse.ScreenX - $X W = Max(1, W) H = Max(1, H) If Not Mouse.Shift Then G = $hCurrent.Grid If G Then W = Max(1, Int(W / G + 0.5)) * G H = Max(1, Int(H / G + 0.5)) * G Endif Endif 'PRINT #File.Err, "(";; W;; H;; ")" .Resize(W, H) End With $bMove = False MoveHandle $bMove = True End Public Sub Handle_MouseUp() $bMove = False End Public Function GetCountWindows() As Integer Return $aWindow.Count End Public Function GetWindows() As Window[] Dim aWin As New Window[] Dim hWindow As CWindow For Each hWindow In $aWindow aWin.Add(hWindow.Window) Next Return aWin End Public Sub dwgBorder_Draw() Return Draw.LineStyle = Line.Solid Draw.LineWidth = 4 Draw.Foreground = Color.SelectedBackground Draw.Line(dwgBorder.W - 2, 0, dwgBorder.W - 2, dwgBorder.H) Draw.Line(0, dwgBorder.H - 2, dwgBorder.W, dwgBorder.H - 2) 'Draw.Tile($hTile, dwgBorder.W - 8, 0, 8, dwgBorder.H) 'Draw.Tile($hTile, 0, dwgBorder.H - 8, dwgBorder.W, 8) End Public Sub imgIcon_DblClick() mnuClose_Click End Public Sub lblTitle_MouseDown() ActivateWindow() End Public Sub tabWorkspace_MouseUp() ActivateWindow() End ' Private Sub FindTabFromTitle(sTitle As String) As Integer ' ' Dim iInd As Integer ' ' For iInd = 0 To tabWorkspace.Count - 1 ' If tabWorkspace[iInd].Text = sTitle Then Return iInd ' Next ' ' Return -1 ' ' End Public Sub tabWorkspace_Menu() Dim iInd As Integer Dim hMenu As Menu Dim aTitle As New String[] Dim sTitle As String Dim hWin As CWindow Dim sText As String 'GetParent()._Menu mnuShow.Children.Clear For iInd = 0 To tabWorkspace.Count - 1 aTitle.Add(tabWorkspace[iInd].Text & "\t" & Format(iInd, "000")) Next aTitle.Sort For Each sTitle In aTitle iInd = CInt(Mid$(sTitle, InStr(sTitle, "\t") + 1)) With tabWorkspace[iInd] hMenu = New Menu(mnuShow) As "mnuWindow" sText = $aWindow[iInd].Text If Not sText Then sText = " " hMenu.Text = sText hMenu.Picture = .Picture hMenu.Checked = iInd = tabWorkspace.Index hMenu.Tag = iInd End With Next mnuSort.Enabled = $aWindow.Count >= 2 mnuDetach.Enabled = $nDetach < $aWindow.Max mnuAttach.Children.Clear For Each sTitle In aTitle iInd = CInt(Mid$(sTitle, InStr(sTitle, "\t") + 1)) hWin = $aWindow[iInd] If Not hWin.Detached Then Continue With tabWorkspace[iInd] hMenu = New Menu(mnuAttach) As "mnuAttach" If .Text Then hMenu.Text = .Text Else hMenu.Text = " " Endif hMenu.Picture = .Picture hMenu.Checked = iInd = tabWorkspace.Index hMenu.Tag = iInd End With Next mnuAttach.Enabled = mnuAttach.Children.Count > 0 mnuCloseRight.Enabled = tabWorkspace.Index < (tabWorkspace.Count - 1) mnuCloseOther.Enabled = $aWindow.Count >= 2 mnuWindow.Popup End Public Sub mnuWindow_Click() ActivateWindow($aWindow[Last.Tag].Window) End Public Sub SetBackground(iColor As Integer) $iBackground = iColor UpdateSize 'panWorkspace.Refresh End Public Sub GetBackground() As Integer Return $iBackground End Private Sub HideTabStrip() tabWorkspace.Hide UpdateSize End Private Sub ShowTabStrip() If $aWindow.Count Then tabWorkspace.Show UpdateSize Endif End Public Sub Lock() Inc $iLock If $iLock = 1 Then panWorkspace.Hide HideTabStrip Endif End Public Sub UnLock() If $iLock <= 0 Then Return Dec $iLock If $iLock = 0 Then CheckWindow ActivateWindow ShowTabStrip panWorkspace.Show Endif End Public Sub GetOrientation() As Integer Return tabWorkspace.Orientation End Public Sub SetOrientation(iOrientation As Integer) tabWorkspace.Orientation = iOrientation UpdateSize End Public Sub mnuSort_Click() Dim iInd As Integer Dim aTitle As New String[] Dim aWindow As CWindow[] Dim hWin As Window Dim sTitle As String hWin = GetActiveWindow() For iInd = 0 To tabWorkspace.Count - 1 aTitle.Add(tabWorkspace[iInd].Text & "\t" & Format(iInd, "000")) Next aTitle.Sort aWindow = New CWindow[$aWindow.Count] For iInd = 0 To aWindow.Max sTitle = aTitle[iInd] aWindow[iInd] = $aWindow[CInt(Mid$(sTitle, InStr(sTitle, "\t") + 1))] Next $aWindow = aWindow For iInd = 0 To $aWindow.Max UpdateTitleFromIndex(iInd) Next ActivateWindow(hWin) End Public Sub mnuPreviousTab_Click() Try Dec tabWorkspace.Index End Public Sub mnuNextTab_Click() Try Inc tabWorkspace.Index End Public Sub tabWorkspace_Close(Index As Integer) If GetParent()._RaiseClose($aWindow[Index].Window) Then Stop Event Return Endif $aWindow[Index].Window.Close End Public Sub tabWorkspace_Arrange() UpdateSize End Public Sub Form_Resize() UpdateSize End Public Sub SetBorder(bBorder As Boolean) $bBorder = bBorder tabWorkspace.Border = bBorder UpdateSize End Public Sub HasBorder() As Boolean Return $bBorder End Public Sub imgBackground_Draw() If Not $hImage Then Return Paint.Brush = Paint.Image($hImage) Paint.Rectangle(0, 0, Paint.W, Paint.H) Paint.Fill End Public Sub GetImage() As Image Return $hImage End Public Sub SetImage(hImage As Image) $hImage = hImage panWorkspace.Refresh End Public Sub GetTabPanel() As TabPanel Return tabWorkspace End Public Sub tabWorkspace_Move(Source As Integer, Target As Integer) Dim hWindow As CWindow Dim I As Integer hWindow = $aWindow[Source] $aWindow.Remove(Source) $aWindow.Add(hWindow, Target) For I = 0 To $aWindow.Max UpdateTitleFromIndex(I) Next End Public Sub mnuDetach_Click() Detach($aWindow[tabWorkspace.Index].Window) End Public Sub mnuAttach_Click() Attach($aWindow[Last.Tag].Window) End Public Sub CloseAll() CloseWindows(CLOSE_ALL) End Public Sub tabWorkspace_CloseAll() CloseWindows(CLOSE_ALL) End Public Sub Button_MouseDown() If Mouse.Middle And If Not tabWorkspace.Closable Then tabWorkspace_Close(tabWorkspace._GetIndex(Last.Parent)) Stop Event ' BUG: Needed, as sometimes the MouseDown event is raised twice Endif End Public Sub SetCloseWithMouse(bVal As Boolean) tabWorkspace.Closable = Not bVal End Public Sub IsCloseWithMouse() As Boolean Return Not tabWorkspace.Closable End gambas-3.16.3/comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form000066400000000000000000000060171411575327000244320ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,69,74) Arrangement = Arrange.Fill { mnuWindow Menu Visible = False { mnuShow Menu Text = ("Show") } { mnuSort Menu Action = "workspace-sort-tab" Text = ("Sort tabs") Picture = Picture["icon:/small/sort-ascent"] } { Menu1 Menu } { mnuCloseRight Menu Action = "workspace-close-right" Text = ("Close tabs on the right") } { mnuCloseOther Menu Action = "workspace-close-other" Text = ("Close other tabs") } { mnuCloseAll Menu Action = "workspace-close-all" Text = ("Close all tabs") } { Menu2 Menu } { mnuAttach Menu Text = ("Attach tab") } { mnuDetach Menu Text = ("Detach tab") } { mnuClose Menu Action = "workspace-close" Text = ("Close tab") Picture = Picture["icon:/small/close"] } } { mnuMove Menu { mnuPreviousTab Menu Action = "workspace-previous-tab" Text = ("Previous tab") Shortcut = "Ctrl+PgUp" } { mnuNextTab Menu Action = "workspace-next-tab" Text = ("Next tab") Shortcut = "Ctrl+PgDown" } } { svwWorkspace ScrollView MoveScaled(2,45,35,23) Visible = False { panRight Panel Handle Name = "panRight" MoveScaled(8,5,1,1) Background = Color.TextBackground Mouse = Mouse.SizeE Border = Border.Plain } { panDown Panel Handle Name = "panDown" MoveScaled(6,7,1,1) Background = Color.TextBackground Mouse = Mouse.SizeS Border = Border.Plain } { panRightDown Panel Handle Name = "panRightDown" MoveScaled(8,7,1,1) Background = Color.TextBackground Mouse = Mouse.SizeSE Border = Border.Plain } { dwgBorder DrawingArea MoveScaled(16,6,15,11) Background = Color.Background Border = Border.Raised } } { tabWorkspace TabPanel MoveScaled(3,8,40,32) Visible = False Expand = True Closable = True Moveable = True Highlight = True Index = 0 Text = ("") Index = 0 } { panWorkspace Panel MoveScaled(40,43,28,25) Ignore = True Arrangement = Arrange.Fill { imgBackground DrawingArea MoveScaled(3,4,16,17) Visible = False } } { timCheck #Timer #MoveScaled(59,18) Delay = 0 } } # Gambas Action File 3.0 { Actions { Action workspace-close Text = "Close tab" Shortcut = "" Picture = "icon:/small/close" } { Action workspace-close-all Text = "Close all tabs" Shortcut = "" } { Action workspace-close-other Text = "Close other tabs" Shortcut = "" } { Action workspace-close-right Text = "Close tabs on the right" Shortcut = "" } { Action workspace-next-tab Text = "Next tab" Shortcut = "Ctrl+PgDown" } { Action workspace-previous-tab Text = "Previous tab" Shortcut = "Ctrl+PgUp" } { Action workspace-sort-tab Text = "Sort tabs" Shortcut = "" Picture = "icon:/small/sort-ascent" } } gambas-3.16.3/comp/src/gb.form.mdi/.src/Workspace/Workspace.class000066400000000000000000000111011411575327000244540ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Orientation{Align.Top;Bottom}=Top,Image,Border=True,CloseButton=True" Public Const _DefaultEvent As String = "Activate" Public Const _Group As String = "Special" Event Activate Event Close({Window} As Window) Event Attach({Window} As Window) Event Detach({Window} As Window) Event CloseAll Property ActiveWindow As Window Property Read Windows As Window[] Property Read Count As Integer Property Font As Font Property Background As Integer Property Orientation As Integer Property Border As Boolean Property Image As Image Property Picture As Picture Property CloseWithMouse As Boolean Property CloseButton As Boolean ''if false the close all tabs button is not shown Property Read TabPanel As TabPanel Static Private $bPictureWarning As Boolean Private $hWorkspace As FWorkspace Private $hPicture As Picture Public Sub _new() 'SUPER.Background = Color.Yellow $hWorkspace = New FWorkspace(Me) $hWorkspace.CloseButton = True 'ME.Container = $hWorkspace.Container End Public Sub Add(hWindow As Window, Optional Resizable As Boolean) $hWorkspace.Add(hWindow, Resizable) End Public Sub Remove(hWindow As Window) $hWorkspace.Remove(hWindow) End Public Sub Exist(hWindow As Window) As Boolean Return $hWorkspace.Exist(hWindow) End Public Sub Detach(hWindow As Window) $hWorkspace.Detach(hWindow) End Public Sub Attach(hWindow As Window) $hWorkspace.Attach(hWindow) End Public Sub Lock() $hWorkspace.Lock End Public Sub Unlock() $hWorkspace.UnLock End ' PUBLIC SUB SetResizable(Window AS Window, Resizable AS Boolean, OPTIONAL Grid AS Integer) ' ' $hWorkspace.SetResizable(Window, Resizable, Grid) ' ' END Private Function ActiveWindow_Read() As Window Return $hWorkspace.GetActiveWindow() End Private Sub ActiveWindow_Write(Value As Window) $hWorkspace.ActivateWindow(Value) End Private Function Windows_Read() As Window[] Return $hWorkspace.GetWindows() End Public Sub _Activate() Raise Activate End Public Sub _RaiseClose(hWindow As Window) As Boolean Dim bCancel As Boolean bCancel = Raise Close(hWindow) Return bCancel End Public Sub _RaiseAttach(hWindow As Window) Raise Attach(hWindow) End Public Sub _RaiseDetach(hWindow As Window) Raise Detach(hWindow) End Public Sub _RaiseCloseAll() Raise CloseAll End ' Private Function ShowTitle_Read() As Boolean ' ' Return $hWorkspace.IsShowTitle() ' ' End ' ' Private Sub ShowTitle_Write(Value As Boolean) ' ' $hWorkspace.SetShowTitle(Value) ' ' End Private Function Font_Read() As Font Return $hWorkspace.GetTabPanel().Font End Private Sub Font_Write(Value As Font) $hWorkspace.GetTabPanel().Font = Value End Private Function Background_Read() As Integer Return $hWorkspace.GetBackground() End Private Sub Background_Write(Value As Integer) $hWorkspace.SetBackground(Value) End Private Function Orientation_Read() As Integer Return $hWorkspace.GetOrientation() End Private Sub Orientation_Write(Value As Integer) If Value = Align.Top Or If Value = Align.Bottom Then $hWorkspace.SetOrientation(Value) End Private Function Border_Read() As Boolean Return $hWorkspace.HasBorder() End Private Sub Border_Write(Value As Boolean) $hWorkspace.SetBorder(Value) End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) If Not $bPictureWarning Then $bPictureWarning = True Error "gb.form.mdi: warning: Workspace.Picture property is deprecated. Use Workspace.Image instead" Endif $hPicture = Value If Value Then $hWorkspace.SetImage($hPicture.Image) Else $hWorkspace.SetImage(Null) Endif End Private Function Count_Read() As Integer Return $hWorkspace.GetCountWindows() End Private Function Image_Read() As Image Return $hWorkspace.GetImage() End Private Sub Image_Write(Value As Image) $hWorkspace.SetImage(Value) End Public Sub CloseAll() $hWorkspace.CloseAll End Private Function CloseWithMouse_Read() As Boolean Return $hWorkspace.IsCloseWithMouse() End Private Sub CloseWithMouse_Write(Value As Boolean) $hWorkspace.SetCloseWithMouse(Value) End Private Function CloseButton_Read() As Boolean Return $hWorkspace.CloseButton End Private Sub CloseButton_Write(Value As Boolean) $hWorkspace.CloseButton = Value End Private Function TabPanel_Read() As TabPanel Return $hWorkspace.GetTabPanel() End Public Sub _RefreshPicture() ' Prevent the Workspace Picture property to be refreshed. End gambas-3.16.3/comp/src/gb.form.mdi/70a017.png000066400000000000000000000030061411575327000202160ustar00rootroot00000000000000PNG  IHDR szzIDATXŗ[]We29' +P1 RC b[*RVD A"%ۣ E$P Rhs?˺}>ə錓|g[߷nI]gyn)o47EgFH|sTPx)j#x]aZvdY fԡ-=(h=$50@n-<&lHXpf挆 e4%/Pv\p z Ƕh11Yc[hcǥ: ~BG!m=ږ;; uD9ZRyxy5Y15hmQJD*%hnV (BXcTH n{?-@@<)y$9R&[wvn+n}9s5a#5TAI)AQ!/_D9Yn^ɷ˩? hD%M1HX'5bw+j!Bì_y蛨qz-@(~|r ڠ;2 !ɡR!ɯ*-2^WKrZ»0$c'a\q/wT>}`f5_FX&6QBH=>:\]IUT^i8(||z'{C _Hj,R HI!B{yvP9E)+a\Q bb% ? L뭤%R!j QP<)D7"U|V+֩U18wӖڰ`e7aQ]j#$1$&zr\*W(ǫx7ĕ{R= .x!&JN"#%ELb"xG+\=吪{݈dW[V_{$91e1!;r>F%!1\V+bpfPBMu&[\8-"i/j*\h~e8 mOħFڹ\O`kW|c(@/mzn:]j <=~pYtuv0mڠF#@@Q7|Ovgo=ĉ gPHhu>m 0~L>@tGgs(e(,!aOrN{y\ { QV3ɔ} Z ?$K탙Ӟۯ /o_N (p x_f{W[6̀(e&d,IW׼.< |mežKz;!QLIENDB`gambas-3.16.3/comp/src/gb.form.mdi/control/000077500000000000000000000000001411575327000203525ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.mdi/control/buttonbox.png000066400000000000000000000004421411575327000231040ustar00rootroot00000000000000PNG  IHDR sIDATHԱ @?(,.6N:`06 w;%1įxq$M/azr?`sv4K|B{XՀ}. @V~'H} s# |yX, U|M/ S4  Ph`#!90$FD:JPnc ôV"IENDB`gambas-3.16.3/comp/src/gb.form.mdi/control/combobox.png000066400000000000000000000004371411575327000226740ustar00rootroot00000000000000PNG  IHDR sIDATH핽 0Cn` :%kd ֈR'tHMŅ`~D=;mx1TM `މ:R`ƶ:b,UIdiD{n^*A[A?^!l;xkFoгl.],}O5qØM#׹PXTD@@?w>*eIENDB`gambas-3.16.3/comp/src/gb.form.mdi/control/datebox.png000066400000000000000000000010701411575327000225040ustar00rootroot00000000000000PNG  IHDR DPLTEܤ݅ぁ hhhvBr=XXXYYY~~~VVVЂgggUUUWWWfffߗ```___y>tRNSfIDAT8][0I[AFT$FY?Qթv0nB6VFӜlOQhk@7,[ɒbJRv:J]{.e1&OF]{8NWqziotգg1&K$Bڗ78}t" n`xh,@dih@0/J6 CxcJ?o'f~?AA! 7`0vb×IENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/expander.png000066400000000000000000000002741411575327000217650ustar00rootroot00000000000000PNG  IHDRRgAMA asRGB pHYs+PLTELiqstRNS>}<|6%IDATc` (B0ÅB P& P4Qx'4IENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/handle-v.png000066400000000000000000000001441411575327000216510ustar00rootroot00000000000000PNG  IHDRnv+IDATץ1 I>~"ػ$ Zg<QIENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/handle.png000066400000000000000000000001411411575327000214030ustar00rootroot00000000000000PNG  IHDRnv(IDATץ10?YFB0L%-3. βIENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/hash.png000066400000000000000000000001261411575327000210760ustar00rootroot00000000000000PNG  IHDRt&tRNSIDATcgz-IENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/roll.png000066400000000000000000000001321411575327000211200ustar00rootroot00000000000000PNG  IHDRt&tRNSIDATc X9F'a+IENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/separator.png000066400000000000000000000001341411575327000221520ustar00rootroot00000000000000PNG  IHDR:tRNSv8IDATc`x(ĀFr~WٗIENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/space.png000066400000000000000000000001341411575327000212450ustar00rootroot00000000000000PNG  IHDR:tRNSv8IDATc` h+pIENDB`gambas-3.16.3/comp/src/gb.form.mdi/img/unroll.png000066400000000000000000000001351411575327000214660ustar00rootroot00000000000000PNG  IHDRt&tRNSIDATc9aF?9:'DJIENDB`gambas-3.16.3/comp/src/gb.form.print/000077500000000000000000000000001411575327000172555ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.print/.component000066400000000000000000000001431411575327000212560ustar00rootroot00000000000000[Component] Key=gb.form.print Version=3.15.90 Authors=Benoît Minisini Needs=Form Requires=gb.form gambas-3.16.3/comp/src/gb.form.print/.directory000066400000000000000000000000411411575327000212550ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form.print/.hidden/000077500000000000000000000000001411575327000205665ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.print/.hidden/printer.png000066400000000000000000000010661411575327000227620ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpLzzz|||}}}}}}~~~Մފ)#tRNS ɽ2%/vPvQKIDATX0Eq).ྋuCqIzaVw"CPQZ-K.P]i/TIh/5RQ)JLЧtq@= \a}E(\an/"+ ԮL 2͢x~,@:y@cY xى#AC^@A]"H@ Z bZl 3[D`OͱΩK̆)lg#7MDJIENDB`gambas-3.16.3/comp/src/gb.form.print/.icon.png000066400000000000000000000142351411575327000207760ustar00rootroot00000000000000PNG  IHDR\rf pHYs+OIDATxKHV3VF4 р` H 3ذ-رbnVl`l HF3b;ݷ^vigUfO2H+qD Q_d |/\6h| w5\1/-7v79?/6}T#R̓nL8S#,/y?Ǘ$㋬KߌjxyB1?x s:uUd}PS*R,_lOŵ'??VD *j=h;[דz-MH-B֩b*Ya_}A5QOU篿?z_}^RD ֵ;WV^3h/uprZ/pZXp K7_>Z^,0X5Moߜ뫫?QY"kwͣ'VkCY: ?YZjU^ۙƑUTzmQХZ<nC+}>﬷& @X/_X懏QotUg|Y|re'/vDūKӒ_ˬ| ~?|/54+# -+5R>' 1QHK$-u>+]o@ 4UvRI]տ+uU޿W,d]3gM&$${^7 lPM{1@mz /ꑀ?}?uz1bИꪽ[{#yp$^k>ݍ4zW=W[? hZlcz'j >iz110e{'wmkoO=ҖB#l|wB |E^xfϝo+/cߵ32@M'O/&_N-R$u]i{ u(@DF TMQW=gL^k5 L8V/O?N>1@s<#5qZo@SRDZ8uQSfXlᜯ>4qe2c>.#TU'cUkp T\cH7-mqR a2`>*ѶXQtq.̵AatPz_j+{vhFئsj&/|-EAet+(`"*Y&;\c?Сb" w?Kq?'EzWC?r(NM[*Z}ϻΛ* ͡;ۗpO++{Cډÿ[}@..L_d}]qS@#}ෙDM\LYN~_˫oSuԷ&.v4} $ ֧3ìF{ʓ]̪BsSxa@EZFsTaY?_QwqpŮ- eށ,>pm]ob2 a᠙UA;xK֋gP:EQ;8\TneKP(XE!(eeY0{jls6Pp|!_m|-V~_Hu>U ?(+y͟ "I)\ޕ(JDy* q;AeA29j'?2ȧUk VuÞ˕˦=(B5ىm.%AE8P0)D5y/%?hpP48 *) a=0|͏"BqaBtX.FY0:8]хרÓѵ'Aힿfj'u`pTė,CQt$&/7T4>_m;Zԯ5 5Zet(Wm~t6Ʊa/-n?4M:58OQC.xf5?Q'Q@O,~p1.?š py 0d{|_l5?\ Qlp6jQCtmn]l7ߖGKOBQD^dp-RWeZ'q٦-w2,N&%( W*_^XsMqIA}_}\@h7YXjm@8'??(K=" w1E8WoǏ P?9zYOG"/o(GF-'Z̟׷R\fQF^dA7 ]BB0H'Y;l~BY8}l@uϺzdИV<#h kQ璘70 "5A :Gx́,RJ{R$vg'&6"Pp4 %q#Y#ȳ„ T Oy}yW뇄~:e'h8WlX /o~:e'xFkZiN2ʡ*Pހ\Nw6D~=6Z:3Rނu),B֯v#IG!.>k@}W%.<ˠ ~L{Oԏ23^adHf/~C|zmDLP*kgY$yuK7{ &jTS̒V^7 BVI ËU`%e _8 Qֽy׾!>Kvo8n#''>P@BtfݹCt=?^w X׾!>r*Hv`Ory1GNJ>^mI-3?:R#Dk6р 6`@4`,рm0":L pIA)&Mm'*1s^!1WdA v7'Nb$ }̢}QNa,z$BbnXWޥ2Z7H>e'LD"1s}}k߻ttd2'w@ c@4`L1d)? \9~0 mL FrvXy,˰X,ih?~z`O|0L0Lwi$Cc*i2 {WWW5Rp>il.{"""cc{v.cXk8$ 0D^8=р`qz>~0 0^ 6[I[;}vl[Pda6G(?(l6>^4Mk#wip1N^";#bb縰3\"I_itH$f]1͐;8Ij1 A:nbt8gcDKXw;$,:萪C6ƛ?t/? rti`Qc`/xgS`"L1nsܤ,]bZ(o)sݝxdI.CC s[D6ë;hO0%,+B {.F GdY$V8lwZ6oE,Kwɏt-"# EXkE =Ht *أp%0Dhp^(*qPW5L`dQ&$`|ΞUdҳy;"ES I(z *Arw9_yo,ep`E>Xe_ӾR/T.rpgEr*:A{_ @4`Lva4p$J3jP/D&503S&a-czz!YޏށݬN-$cԋfa6dg,$`^J_\~-#ꅨ@RaOAhxKN ?a@4`leeܔ),^.|NUݚnc5`C[SAv+aFc!_v? :vWc 5%J\ s=觶$cOG3=1`4S,b(f!М\y?' & 8͏6%Irjj=?&W"yWWWǵWWWԜ9nnniX,6m&oH50艈Z81qvvV?qqq/^zifm#)8vp]b/р 0D$`=c8HN%XF9w @81Lc6Xj> _Xq Q3{.F*#GWx-ho @4`ȏQ9XR.tGFqn&%٠i^KplVc㟚)Fv,6>C 3ǫ0u_bdG߇^MhGFL? swknxbb`!/CKD;T/̠֮|]i<h  $ 7kKcbfdCcE 3X\5Gq}c n/|?u5"Ù,~H߬JHWK:RD"MD$B6 u" \)b]:I 0Dh˖ljp$_ox5`O~9{@;f~'F]`/u;c v  c@ ~,@@ ~˖ia/@ovр 0^ b}y[?4i {^C$ X,o۽/,Y7;a?,ib6 nlg,_~7& ;7xǐDZD4`D`Qv8b߻st D=[@A@q 0 RD[@NѾwl(A¸߻0IdS TnYFSF=bulq)р 0 #c@4`,р1 H4`р 0h$0^ H4`  [ /Fѩ`h 0DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD=FhшIENDB`gambas-3.16.3/comp/src/gb.form.print/.lang/000077500000000000000000000000001411575327000202545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.print/.lang/es.po000066400000000000000000000057311411575327000212310ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.13.90\n" "PO-Revision-Date: 2019-07-05 03:31 UTC\n" "Last-Translator: benoit \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Generic preview and print form" msgstr "" #: FPreview.form:79 msgid "Print preview" msgstr "" #: FPreview.form:87 msgid "Print to file" msgstr "" #: FPreview.form:113 msgid "Printing" msgstr "" #: FPreview.form:138 msgid "One page" msgstr "Una página" #: FPreview.form:146 msgid "Two pages" msgstr "Dos páginas" #: FPreview.form:154 msgid "Full width" msgstr "Ajustar ancho" #: FPreview.form:162 msgid "Real size" msgstr "Tamaño real" #: FPreview.form:172 msgid "Zoom out" msgstr "" #: FPreview.form:185 msgid "100 %" msgstr "" #: FPreview.form:191 msgid "Zoom in" msgstr "" #: FPreview.form:200 msgid "Print" msgstr "Imprimir" #: FPreview.form:208 msgid "Show options" msgstr "" #: FPreview.form:231 msgid "Printer" msgstr "Impresora" #: FPreview.form:256 msgid "Two-sided" msgstr "" #: FPreview.form:263 msgid "None" msgstr "Ninguno" #: FPreview.form:263 msgid "Short side" msgstr "Lado corto" #: FPreview.form:263 msgid "Long side" msgstr "Lado largo" #: FPreview.form:267 msgid "File" msgstr "Archivo" #: FPreview.form:293 msgid "Resolution" msgstr "" #: FPreview.form:305 msgid "dpi" msgstr "" #: FPreview.form:328 msgid "Range" msgstr "Rango" #: FPreview.form:344 msgid "Copies" msgstr "Copias" #: FPreview.form:366 msgid "Orientation" msgstr "Orientación" #: FPreview.form:373 msgid "Portrait" msgstr "Retrato" #: FPreview.form:373 msgid "Landscape" msgstr "Paisaje" #: FPreview.form:383 msgid "Paper" msgstr "Papel" #: FPreview.form:390 msgid "Custom" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A3" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A4" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A5" msgstr "" # gb-ignore #: FPreview.form:390 msgid "B5" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Letter" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Executive" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Legal" msgstr "" #: FPreview.form:405 msgid "Width" msgstr "Ancho" # gb-ignore #: FPreview.form:416 msgid "mm" msgstr "" #: FPreview.form:426 msgid "Height" msgstr "Altura" #: FPreview.form:449 msgid "Grayscale" msgstr "" #: FPreview.form:455 msgid "Full page" msgstr "" #: FPreview.form:460 msgid "Collate copies" msgstr "" #: FPreview.form:465 msgid "Reverse order" msgstr "Orden inverso" #: FPreview.class:265 msgid "PDF files" msgstr "" #: FPreview.class:265 msgid "Postscript files" msgstr "" #: FPreview.class:280 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:364 msgid "This file already exists.\nDo you want to replace it?" msgstr "" #: FPreview.class:364 msgid "Replace" msgstr "" #: FPreview.class:389 msgid "Layout..." msgstr "Disposición..." #: FPreview.class:401 msgid "Printing..." msgstr "Impresión..." gambas-3.16.3/comp/src/gb.form.print/.lang/es_ES.po000066400000000000000000000057341411575327000216230ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.13.90\n" "PO-Revision-Date: 2019-07-05 03:31 UTC\n" "Last-Translator: benoit \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Generic preview and print form" msgstr "" #: FPreview.form:79 msgid "Print preview" msgstr "" #: FPreview.form:87 msgid "Print to file" msgstr "" #: FPreview.form:113 msgid "Printing" msgstr "" #: FPreview.form:138 msgid "One page" msgstr "Una página" #: FPreview.form:146 msgid "Two pages" msgstr "Dos páginas" #: FPreview.form:154 msgid "Full width" msgstr "Ajustar ancho" #: FPreview.form:162 msgid "Real size" msgstr "Tamaño real" #: FPreview.form:172 msgid "Zoom out" msgstr "" #: FPreview.form:185 msgid "100 %" msgstr "" #: FPreview.form:191 msgid "Zoom in" msgstr "" #: FPreview.form:200 msgid "Print" msgstr "Imprimir" #: FPreview.form:208 msgid "Show options" msgstr "" #: FPreview.form:231 msgid "Printer" msgstr "Impresora" #: FPreview.form:256 msgid "Two-sided" msgstr "" #: FPreview.form:263 msgid "None" msgstr "Ninguno" #: FPreview.form:263 msgid "Short side" msgstr "Lado corto" #: FPreview.form:263 msgid "Long side" msgstr "Lado largo" #: FPreview.form:267 msgid "File" msgstr "Archivo" #: FPreview.form:293 msgid "Resolution" msgstr "" #: FPreview.form:305 msgid "dpi" msgstr "" #: FPreview.form:328 msgid "Range" msgstr "Rango" #: FPreview.form:344 msgid "Copies" msgstr "Copias" #: FPreview.form:366 msgid "Orientation" msgstr "Orientación" #: FPreview.form:373 msgid "Portrait" msgstr "Retrato" #: FPreview.form:373 msgid "Landscape" msgstr "Paisaje" #: FPreview.form:383 msgid "Paper" msgstr "Papel" #: FPreview.form:390 msgid "Custom" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A3" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A4" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A5" msgstr "" # gb-ignore #: FPreview.form:390 msgid "B5" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Letter" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Executive" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Legal" msgstr "" #: FPreview.form:405 msgid "Width" msgstr "Ancho" # gb-ignore #: FPreview.form:416 msgid "mm" msgstr "" #: FPreview.form:426 msgid "Height" msgstr "Altura" #: FPreview.form:449 msgid "Grayscale" msgstr "" #: FPreview.form:455 msgid "Full page" msgstr "" #: FPreview.form:460 msgid "Collate copies" msgstr "" #: FPreview.form:465 msgid "Reverse order" msgstr "Orden inverso" #: FPreview.class:265 msgid "PDF files" msgstr "" #: FPreview.class:265 msgid "Postscript files" msgstr "" #: FPreview.class:280 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:364 msgid "This file already exists.\nDo you want to replace it?" msgstr "" #: FPreview.class:364 msgid "Replace" msgstr "" #: FPreview.class:389 msgid "Layout..." msgstr "Disposición..." #: FPreview.class:401 msgid "Printing..." msgstr "Impresión..." gambas-3.16.3/comp/src/gb.form.print/.lang/fr.po000066400000000000000000000061501411575327000212250ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.13.90\n" "POT-Creation-Date: 2020-11-18 18:34 UTC\n" "PO-Revision-Date: 2019-07-08 00:03 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 "Generic preview and print form" msgstr "Formulaire de prévisualisation et d'impression générique" #: FPreview.class:305 msgid "PDF files" msgstr "Fichiers PDF" #: FPreview.class:305 msgid "Postscript files" msgstr "Fichiers Postscript" #: FPreview.class:365 FPrinting.form:30 msgid "Cancel" msgstr "Annuler" #: FPreview.class:365 msgid "Replace" msgstr "Remplacer" #: FPreview.class:365 msgid "" "This file already exists.\n" "Do you want to replace it?" msgstr "" "Ce fichier existe déjà.\n" "Voules-vous le remplacer ?" #: FPreview.form:79 msgid "Print preview" msgstr "Prévisualisation de l'impression" #: FPreview.form:87 msgid "Print to file" msgstr "Imprimer dans un fichier" #: FPreview.form:106 msgid "Toggle option panel" msgstr "" #: FPreview.form:118 msgid "Print" msgstr "Imprimer" #: FPreview.form:132 msgid "Zoom out" msgstr "Réduire" # gb-ignore #: FPreview.form:138 msgid "100 %" msgstr "" #: FPreview.form:144 msgid "Zoom in" msgstr "Agrandir" #: FPreview.form:152 msgid "One page" msgstr "Une page" #: FPreview.form:160 msgid "Two pages" msgstr "Deux pages" #: FPreview.form:168 msgid "Full width" msgstr "Pleine largeur" #: FPreview.form:176 msgid "Real size" msgstr "Taille réelle" #: FPreview.form:208 msgid "Resolution" msgstr "Résolution" # gb-ignore #: FPreview.form:220 msgid "DPI" msgstr "" #: FPreview.form:230 msgid "Two-sided" msgstr "Recto-verso" #: FPreview.form:237 msgid "Long side" msgstr "Côté long" #: FPreview.form:237 msgid "None" msgstr "Aucun" #: FPreview.form:237 msgid "Short side" msgstr "Côté court" #: FPreview.form:247 msgid "Copies" msgstr "Copies" #: FPreview.form:263 msgid "Orientation" msgstr "Orientation" #: FPreview.form:270 msgid "Landscape" msgstr "Paysage" #: FPreview.form:270 msgid "Portrait" msgstr "Portrait" #: FPreview.form:280 msgid "Paper" msgstr "Papier" #: FPreview.form:301 msgid "Width" msgstr "Largeur" # gb-ignore #: FPreview.form:311 msgid "mm" msgstr "" #: FPreview.form:321 msgid "Height" msgstr "Hauteur" #: FPreview.form:338 msgid "Grayscale" msgstr "Niveaux de gris" #: FPreview.form:343 msgid "Collate copies" msgstr "Assembler les copies" #: FPreview.form:348 msgid "Reverse order" msgstr "Inverser" #: FPreview.form:356 msgid "Margins" msgstr "Marges" #: FPreview.form:365 msgid "Left" msgstr "Gauche" #: FPreview.form:386 msgid "Right" msgstr "Droite" #: FPreview.form:407 msgid "Top" msgstr "Haute" #: FPreview.form:428 msgid "Bottom" msgstr "Basse" #: FPrinting.form:11 msgid "Printing" msgstr "Impression en cours" #~ msgid "Layout..." #~ msgstr "Mise en page..." #~ msgid "Show options" #~ msgstr "Afficher les options" #~ msgid "Printer" #~ msgstr "Imprimante" #~ msgid "File" #~ msgstr "Fichier" #~ msgid "Full page" #~ msgstr "Pleine page" #~ msgid "Close" #~ msgstr "Fermer" gambas-3.16.3/comp/src/gb.form.print/.lang/it.po000066400000000000000000000054271411575327000212400ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.13.90\n" "PO-Revision-Date: 2019-07-13 13:52 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Generic preview and print form" msgstr "Finestra generica anteprima e stampa" #: FPreview.class:298 msgid "PDF files" msgstr "File PDF" #: FPreview.class:298 msgid "Postscript files" msgstr "File Postscript" #: FPreview.class:358 FPrinting.form:30 msgid "Cancel" msgstr "Annulla" #: FPreview.class:358 msgid "Replace" msgstr "Sostituisci" #: FPreview.class:358 msgid "This file already exists.\nDo you want to replace it?" msgstr "Questo file già esiste.\nDesideri sostituirlo?" #: FPreview.form:79 msgid "Print preview" msgstr "Anteprima di stampa" #: FPreview.form:87 msgid "Print to file" msgstr "Stampa su file" #: FPreview.form:99 msgid "Toggle option panel" msgstr "Attiva o disattiva il pannello delle opzioni" #: FPreview.form:114 msgid "One page" msgstr "Una pagina" #: FPreview.form:122 msgid "Two pages" msgstr "Due pagine" #: FPreview.form:130 msgid "Full width" msgstr "Intera larghezza" #: FPreview.form:138 msgid "Real size" msgstr "Dimensione reale" #: FPreview.form:151 msgid "Print" msgstr "Stampa" #: FPreview.form:165 msgid "Zoom out" msgstr "Rimpicciolisci" # gb-ignore #: FPreview.form:172 msgid "100 %" msgstr "" #: FPreview.form:178 msgid "Zoom in" msgstr "Ingrandisci" #: FPreview.form:209 msgid "Resolution" msgstr "Risoluzione" # gb-ignore #: FPreview.form:221 msgid "DPI" msgstr "" #: FPreview.form:231 msgid "Two-sided" msgstr "Fronte retro" #: FPreview.form:238 msgid "Long side" msgstr "Lato lungo" #: FPreview.form:238 msgid "None" msgstr "Nessuno" #: FPreview.form:238 msgid "Short side" msgstr "Lato corto" #: FPreview.form:248 msgid "Copies" msgstr "Copie" #: FPreview.form:264 msgid "Orientation" msgstr "Orientamento" #: FPreview.form:271 msgid "Landscape" msgstr "Orizzontale" #: FPreview.form:271 msgid "Portrait" msgstr "Verticale" #: FPreview.form:281 msgid "Paper" msgstr "Carta" #: FPreview.form:302 msgid "Width" msgstr "Larghezza" # gb-ignore #: FPreview.form:312 msgid "mm" msgstr "" #: FPreview.form:322 msgid "Height" msgstr "Altezza" #: FPreview.form:339 msgid "Grayscale" msgstr "Scala di grigi" #: FPreview.form:344 msgid "Collate copies" msgstr "Assembla le copie" #: FPreview.form:349 msgid "Reverse order" msgstr "Ordine inverso" #: FPreview.form:357 msgid "Margins" msgstr "Margini" #: FPreview.form:366 msgid "Left" msgstr "Sinistra" #: FPreview.form:387 msgid "Right" msgstr "Destra" #: FPreview.form:408 msgid "Top" msgstr "Superiore" #: FPreview.form:429 msgid "Bottom" msgstr "Inferiore" #: FPrinting.form:11 msgid "Printing" msgstr "Stampa" gambas-3.16.3/comp/src/gb.form.print/.lang/nl.po000066400000000000000000000063461411575327000212360ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.13.90\n" "PO-Revision-Date: 2019-07-05 03:31 UTC\n" "Last-Translator: benoit \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 "Generic preview and print form" msgstr "" #: FPreview.form:79 msgid "Print preview" msgstr "" #: FPreview.form:87 msgid "Print to file" msgstr "Afdrukken naar bestand" #: FPreview.form:113 msgid "Printing" msgstr "Afdrukken" #: FPreview.form:138 msgid "One page" msgstr "Een pagina" #: FPreview.form:146 msgid "Two pages" msgstr "Twee pagina's" #: FPreview.form:154 msgid "Full width" msgstr "Volledige breedte" #: FPreview.form:162 msgid "Real size" msgstr "Echte afmeting" #: FPreview.form:172 msgid "Zoom out" msgstr "Zoom uit" # gb-ignore #: FPreview.form:185 msgid "100 %" msgstr "" # gb-ignore #: FPreview.form:191 msgid "Zoom in" msgstr "" #: FPreview.form:200 msgid "Print" msgstr "Afdrukken" #: FPreview.form:208 msgid "Show options" msgstr "Opties weergeven" #: FPreview.form:231 msgid "Printer" msgstr "Printer" #: FPreview.form:256 msgid "Two-sided" msgstr "Dubbelzijdig" #: FPreview.form:263 msgid "None" msgstr "Geen" #: FPreview.form:263 msgid "Short side" msgstr "Korte zijde" #: FPreview.form:263 msgid "Long side" msgstr "Lange zijde" #: FPreview.form:267 msgid "File" msgstr "Bestand" #: FPreview.form:293 msgid "Resolution" msgstr "Resolutie" # gb-ignore #: FPreview.form:305 msgid "dpi" msgstr "" #: FPreview.form:328 msgid "Range" msgstr "Bereik" #: FPreview.form:344 msgid "Copies" msgstr "Kopieën" #: FPreview.form:366 msgid "Orientation" msgstr "Oriëntatie" #: FPreview.form:373 msgid "Portrait" msgstr "Portret" #: FPreview.form:373 msgid "Landscape" msgstr "Landschap" #: FPreview.form:383 msgid "Paper" msgstr "Papier" #: FPreview.form:390 msgid "Custom" msgstr "Aangepast" # gb-ignore #: FPreview.form:390 msgid "A3" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A4" msgstr "" # gb-ignore #: FPreview.form:390 msgid "A5" msgstr "" # gb-ignore #: FPreview.form:390 msgid "B5" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Letter" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Executive" msgstr "" # gb-ignore #: FPreview.form:390 msgid "Legal" msgstr "" #: FPreview.form:405 msgid "Width" msgstr "Breedte" # gb-ignore #: FPreview.form:416 msgid "mm" msgstr "" #: FPreview.form:426 msgid "Height" msgstr "Hoogte" #: FPreview.form:449 msgid "Grayscale" msgstr "Grijswaarden" #: FPreview.form:455 msgid "Full page" msgstr "Volledige pagina" #: FPreview.form:460 msgid "Collate copies" msgstr "Sorteer kopieën" #: FPreview.form:465 msgid "Reverse order" msgstr "Omgekeerde volgorde" #: FPreview.class:265 msgid "PDF files" msgstr "PDF bestanden" #: FPreview.class:265 msgid "Postscript files" msgstr "Postscript bestanden" #: FPreview.class:280 msgid "Cancel" msgstr "Annuleer" #: FPreview.class:364 msgid "This file already exists.\nDo you want to replace it?" msgstr "Dit bestand bestaat reeds.\nWil je het vervangen?" #: FPreview.class:364 msgid "Replace" msgstr "Vervangen" # gb-ignore #: FPreview.class:389 msgid "Layout..." msgstr "" #: FPreview.class:401 msgid "Printing..." msgstr "Afdrukken..." gambas-3.16.3/comp/src/gb.form.print/.lang/pt_BR.po000066400000000000000000000054371411575327000216330ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.14.90\n" "PO-Revision-Date: 2020-06-12 05:29 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Generic preview and print form" msgstr "Formulário genérico de visualização e impressão" #: FPreview.class:305 msgid "PDF files" msgstr "Arquivos PDF" #: FPreview.class:305 msgid "Postscript files" msgstr "Arquivos postscript" #: FPreview.class:365 FPrinting.form:30 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:365 msgid "Replace" msgstr "Substituir" #: FPreview.class:365 msgid "This file already exists.\nDo you want to replace it?" msgstr "Este arquivo já existe. Sobrescrever?" #: FPreview.form:79 msgid "Print preview" msgstr "Visualizar Impressão" #: FPreview.form:87 msgid "Print to file" msgstr "Imprimir para arquivo" #: FPreview.form:106 msgid "Toggle option panel" msgstr "Alternar painel de opções" #: FPreview.form:118 msgid "Print" msgstr "Imprimir" #: FPreview.form:132 msgid "Zoom out" msgstr "Menos zoom" # gb-ignore #: FPreview.form:138 msgid "100 %" msgstr "" #: FPreview.form:144 msgid "Zoom in" msgstr "Mais zoom" #: FPreview.form:152 msgid "One page" msgstr "Uma página" #: FPreview.form:160 msgid "Two pages" msgstr "Duas páginas" #: FPreview.form:168 msgid "Full width" msgstr "Largura total" #: FPreview.form:176 msgid "Real size" msgstr "Tamanho real" #: FPreview.form:208 msgid "Resolution" msgstr "Resolução" # gb-ignore #: FPreview.form:220 msgid "DPI" msgstr "" #: FPreview.form:230 msgid "Two-sided" msgstr "Dois lados" #: FPreview.form:237 msgid "Long side" msgstr "Lado longo" #: FPreview.form:237 msgid "None" msgstr "Nenhum" #: FPreview.form:237 msgid "Short side" msgstr "Lado curto" #: FPreview.form:247 msgid "Copies" msgstr "Cópias" #: FPreview.form:263 msgid "Orientation" msgstr "Orientação" #: FPreview.form:270 msgid "Landscape" msgstr "Paisagem" #: FPreview.form:270 msgid "Portrait" msgstr "Retrato" #: FPreview.form:280 msgid "Paper" msgstr "Papel" #: FPreview.form:301 msgid "Width" msgstr "Largura" # gb-ignore #: FPreview.form:311 msgid "mm" msgstr "" #: FPreview.form:321 msgid "Height" msgstr "Altura" #: FPreview.form:338 msgid "Grayscale" msgstr "Escala de cinza" #: FPreview.form:343 msgid "Collate copies" msgstr "Agrupar cópias" #: FPreview.form:348 msgid "Reverse order" msgstr "Ordem inversa" #: FPreview.form:356 msgid "Margins" msgstr "Margens" #: FPreview.form:365 msgid "Left" msgstr "Esquerda" #: FPreview.form:386 msgid "Right" msgstr "Direita" #: FPreview.form:407 msgid "Top" msgstr "Topo" #: FPreview.form:428 msgid "Bottom" msgstr "Inferior" #: FPrinting.form:11 msgid "Printing" msgstr "Imprimindo" gambas-3.16.3/comp/src/gb.form.print/.lang/ru.po000066400000000000000000000123601411575327000212440ustar00rootroot00000000000000# 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-07-16 08:59+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" #: comp/src/gb.form.print/.project:17 msgid "Generic preview and print form" msgstr "Общий предпросмотр и форма печати" #: comp/src/gb.form.print/.src/FPreview.class:298 msgid "PDF files" msgstr "Файлы PDF" #: comp/src/gb.form.print/.src/FPreview.class:298 msgid "Postscript files" msgstr "Файлы Postscript" #: comp/src/gb.form.print/.src/FPreview.class:358 msgid "" "This file already exists.\n" "Do you want to replace it?" msgstr "" "Этот файл уже существует.\n" "Вы хотите заменить его?" #: comp/src/gb.form.print/.src/FPreview.class:358 msgid "Replace" msgstr "Заменить" #: comp/src/gb.form.print/.src/FPreview.class:358 comp/src/gb.form.print/.src/FPrinting.form:20 msgid "Cancel" msgstr "Отмена" #: comp/src/gb.form.print/.src/FPreview.form:5 msgid "Print preview" msgstr "Предпросмотр печати" #: comp/src/gb.form.print/.src/FPreview.form:11 msgid "Print to file" msgstr "Печать в файл" #: comp/src/gb.form.print/.src/FPreview.form:20 msgid "Toggle option panel" msgstr "Переключить панель опций" #: comp/src/gb.form.print/.src/FPreview.form:33 msgid "One page" msgstr "Одна страница" #: comp/src/gb.form.print/.src/FPreview.form:40 msgid "Two pages" msgstr "Две страницы" #: comp/src/gb.form.print/.src/FPreview.form:47 msgid "Full width" msgstr "Полная ширина" #: comp/src/gb.form.print/.src/FPreview.form:54 msgid "Real size" msgstr "Реальный размер" #: comp/src/gb.form.print/.src/FPreview.form:65 comp/src/gb.form.print/.src/FPreview.form:318 msgid "Print" msgstr "Печать" #: comp/src/gb.form.print/.src/FPreview.form:76 msgid "Zoom out" msgstr "Уменьшить" #: comp/src/gb.form.print/.src/FPreview.form:82 msgid "100 %" msgstr "100%" #: comp/src/gb.form.print/.src/FPreview.form:87 msgid "Zoom in" msgstr "Увеличить" #: comp/src/gb.form.print/.src/FPreview.form:112 msgid "Resolution" msgstr "Разрешение" #: comp/src/gb.form.print/.src/FPreview.form:123 msgid "DPI" msgstr "DPI" #: comp/src/gb.form.print/.src/FPreview.form:131 msgid "Two-sided" msgstr "Двусторонний" #: comp/src/gb.form.print/.src/FPreview.form:137 msgid "None" msgstr "Нет" #: comp/src/gb.form.print/.src/FPreview.form:137 msgid "Short side" msgstr "Короткая сторона" #: comp/src/gb.form.print/.src/FPreview.form:137 msgid "Long side" msgstr "Длинная сторона" #: comp/src/gb.form.print/.src/FPreview.form:145 msgid "Copies" msgstr "Копии" #: comp/src/gb.form.print/.src/FPreview.form:158 msgid "Orientation" msgstr "Ориентация" #: comp/src/gb.form.print/.src/FPreview.form:164 msgid "Portrait" msgstr "Книжная" #: comp/src/gb.form.print/.src/FPreview.form:164 msgid "Landscape" msgstr "Альбомная" #: comp/src/gb.form.print/.src/FPreview.form:172 msgid "Paper" msgstr "Бумага" #: comp/src/gb.form.print/.src/FPreview.form:190 msgid "Width" msgstr "Ширина" #: comp/src/gb.form.print/.src/FPreview.form:198 comp/src/gb.form.print/.src/FPreview.form:214 comp/src/gb.form.print/.src/FPreview.form:251 comp/src/gb.form.print/.src/FPreview.form:268 comp/src/gb.form.print/.src/FPreview.form:285 comp/src/gb.form.print/.src/FPreview.form:302 msgid "mm" msgstr "мм" #: comp/src/gb.form.print/.src/FPreview.form:206 msgid "Height" msgstr "Высота" #: comp/src/gb.form.print/.src/FPreview.form:220 msgid "Grayscale" msgstr "Оттенки серого" #: comp/src/gb.form.print/.src/FPreview.form:224 msgid "Collate copies" msgstr "Собрать по копиям" #: comp/src/gb.form.print/.src/FPreview.form:228 msgid "Reverse order" msgstr "Обратный порядок" #: comp/src/gb.form.print/.src/FPreview.form:235 msgid "Margins" msgstr "Поля" #: comp/src/gb.form.print/.src/FPreview.form:242 msgid "Left" msgstr "Слева" #: comp/src/gb.form.print/.src/FPreview.form:259 msgid "Right" msgstr "Справа" #: comp/src/gb.form.print/.src/FPreview.form:276 msgid "Top" msgstr "Сверху" #: comp/src/gb.form.print/.src/FPreview.form:293 msgid "Bottom" msgstr "Низ" #: comp/src/gb.form.print/.src/FPrinting.form:5 msgid "Printing" msgstr "Печать" gambas-3.16.3/comp/src/gb.form.print/.lang/zh.po000066400000000000000000000052511411575327000212400ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.print 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:34 UTC\n" "PO-Revision-Date: 2020-11-18 18:34 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Generic preview and print form" msgstr "通用预览和打印窗体" #: FPreview.class:305 msgid "PDF files" msgstr "PDF文件" #: FPreview.class:305 msgid "Postscript files" msgstr "Postscript文件" #: FPreview.class:365 FPrinting.form:30 msgid "Cancel" msgstr "取消" #: FPreview.class:365 msgid "Replace" msgstr "替换" #: FPreview.class:365 msgid "" "This file already exists.\n" "Do you want to replace it?" msgstr "" "此文件已存在。\n" "是否替换它?" #: FPreview.form:79 msgid "Print preview" msgstr "打印预览" #: FPreview.form:87 msgid "Print to file" msgstr "打印到文件" #: FPreview.form:106 msgid "Toggle option panel" msgstr "切换选项面板" #: FPreview.form:118 msgid "Print" msgstr "打印" #: FPreview.form:132 msgid "Zoom out" msgstr "缩小" #: FPreview.form:138 msgid "100 %" msgstr "" #: FPreview.form:144 msgid "Zoom in" msgstr "放大" #: FPreview.form:152 msgid "One page" msgstr "单页" #: FPreview.form:160 msgid "Two pages" msgstr "双页" #: FPreview.form:168 msgid "Full width" msgstr "全宽" #: FPreview.form:176 msgid "Real size" msgstr "实际尺寸" #: FPreview.form:208 msgid "Resolution" msgstr "分辨率" #: FPreview.form:220 msgid "DPI" msgstr "" #: FPreview.form:230 msgid "Two-sided" msgstr "双面" #: FPreview.form:237 msgid "Long side" msgstr "长边" #: FPreview.form:237 msgid "None" msgstr "无" #: FPreview.form:237 msgid "Short side" msgstr "短边" #: FPreview.form:247 msgid "Copies" msgstr "份数" #: FPreview.form:263 msgid "Orientation" msgstr "方向" #: FPreview.form:270 msgid "Landscape" msgstr "横向" #: FPreview.form:270 msgid "Portrait" msgstr "纵向" #: FPreview.form:280 msgid "Paper" msgstr "纸张" #: FPreview.form:301 msgid "Width" msgstr "宽度" #: FPreview.form:311 msgid "mm" msgstr "" #: FPreview.form:321 msgid "Height" msgstr "高度" #: FPreview.form:338 msgid "Grayscale" msgstr "灰度" #: FPreview.form:343 msgid "Collate copies" msgstr "逐份打印" #: FPreview.form:348 msgid "Reverse order" msgstr "倒序" #: FPreview.form:356 msgid "Margins" msgstr "页边距" #: FPreview.form:365 msgid "Left" msgstr "左边" #: FPreview.form:386 msgid "Right" msgstr "右边" #: FPreview.form:407 msgid "Top" msgstr "顶边" #: FPreview.form:428 msgid "Bottom" msgstr "底边" #: FPrinting.form:11 msgid "Printing" msgstr "打印" gambas-3.16.3/comp/src/gb.form.print/.project000066400000000000000000000005061411575327000207250ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Generic preview and print form Startup=MTest Icon=.hidden/printer.png Version=3.15.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.settings Authors="Benoît Minisini" Environment="GB_GUI=gb.qt5" TabSize=2 Translate=1 Language=en_US Type=Component Packager=1 gambas-3.16.3/comp/src/gb.form.print/.src/000077500000000000000000000000001411575327000201225ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.print/.src/FPreview.class000066400000000000000000000360441411575327000227070ustar00rootroot00000000000000' Gambas class file Private Const SCALE As Float = 0.1 ' 0.1 mm Private $bPrintToFile As Boolean Private $aModeButtons As New ToolButton[] Private $hPrinter As Printer 'As "Printer" Private $bVerif As Boolean Private $bPrinting As Boolean Private $iFileRes As Integer = 150 Private $hObs As Observer Private $iScaleMode As Integer Private Enum MODE_CUSTOM, MODE_PAGE, MODE_DUAL_PAGE, MODE_FULL_WIDTH, MODE_REAL_SIZE Private $hTimerPaginate As Timer Private $bPaginate As Boolean Private $hTimerPaginateLater As Timer Public Sub Run(hPrinter As Printer) As Boolean $hPrinter = hPrinter $hObs = New Observer($hPrinter) As "Printer" Return Not Me.ShowModal() End Public Sub _new() $hTimerPaginate = New Timer As "TimerPaginate" $hTimerPaginateLater = New Timer As "TimerPaginateLater" $hTimerPaginateLater.Delay = 100 End Public Sub Form_Open() 'Dim hButton As ToolButton Dim s As String Dim hMenu As Menu 'SetPicture(btnOnePage, "img/print-one-page.png") 'SetPicture(btnTwoPages, "img/print-two-pages.png") 'SetPicture(btnFullWidth, "img/print-full-width.png") 'SetPicture(btnRealSize, "img/print-real-size.png") For Each s In Printer.List hMenu = New Menu(mnuPrint) As "mnuPrintPrinter" hMenu.Tag = s hMenu.Text = s Next $aModeButtons = [btnOnePage, btnTwoPages, btnFullWidth, btnRealSize] If Component.IsLoaded("gb.settings") Then Settings.Read(Me, "/Printing/Window") Settings.Read(dvwPrint, "Printing/Preview") txtFile.Text = Settings["/Printing/OutputFile"] ' 'Settings.Read(Me, "FPreview") ' Settings.Read(dvwPrint, "View") ' ' If dvwPrint.ScaleMode = dvwPrint.Custom Then ' sldZoom.Value = dvwPrint.Zoom ' Else ' For Each hButton In $aModeButtons ' hButton.Value = False ' Next ' $aModeButtons[dvwPrint.ScaleMode - 1].Value = True ' ' Endif ' ' txtFile.Text = Settings["FPreview/OutputFile", User.Home &/ "report.pdf"] ' $hPrinter.OutputFile = txtFile.Text ' $hPrinter.Name = Settings["FPreview/Printer"] ' If Settings["FPreview/PrintToFile"] = True Then ' tabPrint.Index = 1 ' Endif ' ' Try $hPrinter.Duplex = Settings["FPreview/Duplex"] ' Try $hPrinter.GrayScale = Settings["FPreview/GrayScale"] ' Try $hPrinter.ReverseOrder = Settings["FPreview/ReverseOrder"] ' Try $hPrinter.CollateCopies = Settings["FPreview/CollateCopies"] ' Try $iFileRes = Settings["FPreview/FileResolution", 150] ' Try $hPrinter.Duplex = Settings["FPreview/Duplex", Printer.Simplex] = cmbDuplex.Index Endif SelectPrinter($hPrinter.Name) $bPrinting = False cmbPaper.Text = "A4" SetZoom(MODE_PAGE) Paginate dvwPrint.SetFocus End Private Sub SelectPrinter(Optional sName As String) Dim hMenu As Menu If sName Then $hPrinter.Name = sName $hPrinter.OutputFile = "" $hPrinter.Resolution = 1200 $bPrintToFile = False Else If Not txtFile.Text Then txtFile.Text = User.Home &/ "print.pdf" $hPrinter.OutputFile = txtFile.Text $hPrinter.Resolution = $iFileRes $bPrintToFile = True Endif mnuPrintToFile.Checked = $bPrintToFile For Each hMenu In mnuPrint.Children If Not hMenu.Tag Then Continue If $bPrintToFile Then hMenu.Checked = False Else hMenu.Checked = hMenu.Text = sName Endif Next $hPrinter.FullPage = True $hPrinter.Duplex = cmbDuplex.Index chkGrayScale.Value = $hPrinter.GrayScale 'chkFullPage.Value = $hPrinter.FullPage chkReverseCopies.Value = $hPrinter.ReverseOrder chkCollateCopies.Value = $hPrinter.CollateCopies 'txtFile.Text = User.Home &/ "print.pdf" With $hPrinter txtMarginLeft.Value = .MarginLeft txtMarginRight.Value = .MarginRight txtMarginTop.Value = .MarginTop txtMarginBottom.Value = .MarginBottom End With If $bPrintToFile Then Object.Lock(cmbResolution) Try cmbResolution.Index = Max(cmbResolution.Find(Str($iFileRes)), 0) Object.Unlock(cmbResolution) txtFile.Show panResolution.Show panRectoVerso.Hide btnPrinter.Picture = Picture["icon:/small/pdf"] btnPrinter.Text = mnuPrintToFile.Text Else txtFile.Hide panResolution.Hide panRectoVerso.Show btnPrinter.Picture = Picture["icon:/small/print"] btnPrinter.Text = sName Endif RefreshPrintButton End ' Public Sub SetReport(hReport As Report) ' ' View.Report = hReport ' GetValuesFromReport() ' ' End ' Private Sub GetValuesFromReport() ' ' cmbPaper.Index = View.Report.Paper ' $hPrinter.Orientation = View.Report.Orientation ' ' If View.Report.Paper = Printer.Custom Then ' pnlCustom.Enabled = True ' $hPrinter.PaperWidth = TSizeParse[View.Report.Width].ToInch() * 10 ' $hPrinter.PaperHeight = TSizeParse[View.Report.Height].ToInch() * 10 ' Else ' $hPrinter.Paper = View.Report.Paper ' Endif ' ' cmbOrientation.Index = $hPrinter.Orientation ' cmbDuplex.Index = $hPrinter.Duplex ' cmbPaper.Index = $hPrinter.Paper ' View.Refresh ' ' Object.Lock(spWidth) ' spWidth.Value = $hPrinter.PaperWidth ' Object.Unlock(spWidth) ' Object.Lock(spHeight) ' spHeight.Value = $hPrinter.PaperHeight ' Object.Unlock(spHeight) ' ' End ' Public Sub dvwPrint_Zoom() ' ' Object.Lock(sldZoom) ' sldZoom.Value = dvwPrint.Zoom * 100 ' SetScaleMode(MODE_CUSTOM) ' Object.Unlock(sldZoom) ' ' End Public Sub btnMode_Click() SetZoom(Last.Tag) End Public Sub chkGrayScale_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.GrayScale = Last.Value dvwPrint.Desaturate = $hPrinter.GrayScale 'dvwPrint._GrayScale = Last.Value End ' Public Sub chkFullPage_Click() ' ' 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) ' $hPrinter.FullPage = Last.Value ' ' End Public Sub chkReverseCopies_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.ReverseOrder = Last.value End Public Sub chkCollateCopies_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.CollateCopies = Last.Value End Public Sub cmbOrientation_Click() Select Last.Index Case 0 $hPrinter.Orientation = Printer.Portrait Case 1 $hPrinter.Orientation = Printer.Landscape End Select txtWidth.Value = $hPrinter.PaperWidth txtHeight.Value = $hPrinter.PaperHeight Paginate End Public Sub cmbPaper_Click() Dim iPage As Integer Select Case Last.Text Case "Custom" iPage = Printer.Custom Case "A3" iPage = Printer.A3 Case "A4" iPage = Printer.A4 Case "A5" iPage = Printer.A5 Case "B5" iPage = Printer.B5 Case "Letter" iPage = Printer.Letter Case "Legal" iPage = Printer.Legal Case "Executive" iPage = Printer.Executive End Select $hPrinter.Paper = iPage txtWidth.Value = $hPrinter.PaperWidth txtHeight.Value = $hPrinter.PaperHeight pnlCustom.Enabled = iPage = Printer.Custom Paginate End Public Sub cmbDuplex_Click() $hPrinter.Duplex = Last.index End Public Sub txtFile_Click() Dialog.Path = txtFile.Text Dialog.Filter = ["*.pdf", ("PDF files"), "*.ps", ("Postscript files")] If Dialog.SaveFile() Then Return txtFile.Text = Dialog.Path $bVerif = True $hPrinter.OutputFile = Dialog.Path End Private Sub RefreshPrintButton() btnPrint.Picture = Picture[If($bPrintToFile, "icon:/small/pdf", "icon:/small/printer")] btnPrint2.Picture = btnPrint.Picture End ' Public Sub txtRange_Change() ' ' SetRange(txtRange.Text) ' ' End ' ' Public Sub txtRange_Click() ' ' Last.Text = "" ' 'TextBox1_Change ' ' End Public Sub txtWidth_Change() $hPrinter.PaperWidth = Last.Value Paginate End Public Sub txtHeight_Change() $hPrinter.PaperHeight = Last.Value Paginate End Public Sub cmbPrinter_Click() SelectPrinter(Last.Text) End Public Sub btnPrint_Click() Dim iReturn As Integer If $bPrintToFile Then If Not $hPrinter.OutputFile Then txtFile_Click If Not $hPrinter.OutputFile Then Return If Exist($hPrinter.OutputFile) And Not $bVerif Then iReturn = Message.Warning("" & $hPrinter.OutputFile & "\n\n" & ("This file already exists.\nDo you want to replace it?"), ("Replace"), ("Cancel")) If iReturn = 2 Then Return Try Kill $hPrinter.OutputFile $bVerif = False Endif Endif $bPrinting = True RefreshPrintButton $hPrinter.Print End Private Sub BeginPaint(fZoom As Float, Optional hDevice As Object) 'Debug "fZoom = "; fZoom If Not hDevice Then hDevice = Paint.Device Paint.Begin(hDevice, RectF(0, 0, ($hPrinter.PaperWidth - txtMarginLeft.Value - txtMarginRight.Value) / SCALE, ($hPrinter.PaperHeight - txtMarginTop.Value - txtMarginBottom.Value) / SCALE)) Paint.Scale(fZoom) Paint.Translate(txtMarginLeft.Value * 10, txtMarginTop.Value * 10) End Public Sub Printer_Begin() If $bPrinting Then Me.Enabled = False FPrinting.Show() BeginPaint(Paint.W / $hPrinter.PaperWidth * SCALE) Paint.FontScale = 25.4 / 72 / SCALE * 72 / 96 * 96 / $hPrinter.Resolution Endif End ' Public Sub Printer_Paginate() ' ' If dvwPrint.Report._LayoutNotFinished Then ' dvwPrint.LockLayout ' dvwPrint.Report.Layout(dvwPrint.Report.PageCount) ' Else ' $hPrinter.Count = dvwPrint.PageCount ' ProgressBar1.Pulse = False ' lblPrint.Text = ("Printing...") ' dvwPrint.UnlockLayout ' Endif ' ' End Public Sub Printer_Draw() If Not $bPrinting Then Return Paint.FontScale = 25.4 / 72 / SCALE * 72 / 96 * 96 / $hPrinter.Resolution FPrinting.SetProgress($hPrinter.Page / dvwPrint.Count) End Public Sub Printer_End() If Not $bPrinting Then Return Paint.End FPrinting.Close $bPrinting = False RefreshPrintButton Me.Enabled = True End Public Sub txtCopies_Change() $hPrinter.NumCopies = Last.Value End Public Sub Form_Close() If Component.IsLoaded("gb.settings") Then Settings.Write(Me, "/Printing/Window") Settings.Write(dvwPrint, "Printing/Preview") Settings["/Printing/OutputFile"] = txtFile.Text ' ' 'Settings.Write(Me, "FPreview") ' ' Settings.Write(dvwPrint, "View") ' ' Settings["FPreview/OutputFile"] = txtFile.Text ' ' Settings["FPreview/Printer"] = $hPrinter.Name ' ' Settings["FPreview/PrintToFile"] = tabPrint.Index = 1 ' ' Settings["FPreview/Duplex"] = cmbDuplex.Index ' ' Settings["FPreview/GrayScale"] = tgbGrayScale.Value ' ' Settings["FPreview/ReverseOrder"] = tgbReverseCopies.Value ' ' Settings["FPreview/CollateCopies"] = tgbCollateCopies.Value ' ' Settings["FPreview/FileResolution"] = $iFileRes ' ' Settings.Save() Endif End ' Private Sub SetPicture(hCtrl As ToolButton, sImage As String) ' ' Dim S As Integer ' ' S = Stock.GetSize("small") ' hCtrl.Picture = Image.Load(sImage).Stretch(S, S).Picture ' ' End ' Public Sub btnZoomIn_Click() SetZoom(MODE_CUSTOM, 2 ^ (Int(Log2(dvwPrint.Zoom) * 2 + 1) / 2)) End Public Sub btnZoomOut_Click() SetZoom(MODE_CUSTOM, 2 ^ (Int(Log2(dvwPrint.Zoom) * 2 - 1) / 2)) End Public Sub btnShowSide_Click() If panSide.Visible Then panSide.Hide btnShowSide.Picture = Picture["icon:/small/options"] btnPrint.Show Else panSide.Show btnShowSide.Picture = Picture["icon:/small/close"] btnPrint.Hide Endif dvwPrint_Arrange End Public Sub mnuPrintToFile_Click() SelectPrinter() If Not panSide.Visible Then txtFile_Click End Public Sub mnuPrintPrinter_Click() SelectPrinter(Last.Text) End Public Sub cmbResolution_Click() If $bPrintToFile Then $iFileRes = cmbResolution.Text $hPrinter.Resolution = $iFileRes Else $hPrinter.Resolution = 1200 Endif End Private Sub SetZoom(iMode As Integer, Optional fZoom As Float) Dim hButton As ToolButton $iScaleMode = iMode dvwPrint.Center = False For Each hButton In $aModeButtons Object.Lock(hButton) hButton.Value = hButton.Tag = $iScaleMode Object.Unlock(hButton) Next Select Case $iScaleMode Case MODE_CUSTOM dvwPrint.Columns = 0 dvwPrint.Arrangement = Arrange.Row If fZoom Then dvwPrint.Zoom = fZoom Case MODE_PAGE dvwPrint.Center = True dvwPrint.Columns = 0 dvwPrint.Arrangement = Arrange.Fill Case MODE_DUAL_PAGE dvwPrint.Center = True dvwPrint.Columns = 2 dvwPrint.Arrangement = Arrange.Row Case MODE_FULL_WIDTH dvwPrint.Columns = 0 dvwPrint.Arrangement = Arrange.Vertical Case MODE_REAL_SIZE dvwPrint.Columns = 0 dvwPrint.Arrangement = Arrange.Row dvwPrint.Zoom = 1 End Select End Public Sub dvwPrint_Draw(Page As Integer, (Width) As Integer, (Height) As Integer) If $bPaginate Then Return 'Paint.FontScale = dvwPrint.Zoom '* $hPrinter.Resolution / Paint.ResolutionY 'Paint.Font.Size *= dvwPrint.Zoom BeginPaint(Paint.W / $hPrinter.PaperWidth * SCALE) ' printer : Paint.FontScale = 25.4 / 72 / SCALE * 72 / 96 * 96 / $hPrinter.Resolution Paint.FontScale = 25.4 / 72 / SCALE * 72 / 96 ' => Paint.FontScale = 25.4 * Paint.W / $hPrinter.PaperWidth / $hPrinter.Resolution (or 96 for screen) ' => Paint.FontScale = Paint.W / ($hPrinter.Resolution * $hPrinter.PaperWidth / 25.4) (or 96 for screen) $hPrinter._SetPage(Page + 1) Object.Raise($hPrinter, "Draw") Paint.End End Private Sub EndPaginate() Object.Raise($hPrinter, "End") Paint.End dvwPrint.Count = $hPrinter.Count dvwPrint.Reset $bPaginate = False End Private Sub Paginate() Dim hImage As Image $hTimerPaginateLater.Stop If $bPaginate Then EndPaginate $bPaginate = True dvwPrint.DocWidth = $hPrinter.PaperWidth / 25.4 * Desktop.Resolution dvwPrint.DocHeight = $hPrinter.PaperHeight / 25.4 * Desktop.Resolution ' Debug dvwPrint.DocWidth;; dvwPrint.DocHeight hImage = New Image(16, 16) 'BeginPaint(dvwPrint.DocWidth / $hPrinter.PaperWidth * SCALE, hImage) BeginPaint(dvwPrint.DocWidth / $hPrinter.PaperWidth * SCALE, hImage) Paint.FontScale = 25.4 / 72 / SCALE * 72 / 96 Object.Raise($hPrinter, "Begin") If $hPrinter._IsCountSet() Then EndPaginate Else $hTimerPaginate.Trigger Endif End Public Sub TimerPaginate_Timer() Object.Raise($hPrinter, "Paginate") If $hPrinter._IsCountSet() Then EndPaginate Else $hTimerPaginate.Trigger Endif End Public Sub dvwPrint_Arrange() panZoom.Move(dvwPrint.X + (dvwPrint.W - panZoom.W) \ 2, 0) SetZoom($iScaleMode) End Public Sub TimerPaginateLater_Timer() Paginate End Public Sub txtMargin_Change() $hTimerPaginateLater.Restart End Public Sub btnClose_Click() Me.Close End ' Public Sub dvwPrint_Zoom() ' ' lblZoom.Text = Format(dvwPrint.Zoom, "0 %") ' SetZoom(MODE_CUSTOM) ' ' End Public Sub Cancel() $hPrinter.Cancel End ' Public Sub panSide_Arrange() ' ' btnCloseSide.Move(panSide.W - Desktop.Scale * 4, 0, Desktop.Scale * 4, Desktop.Scale * 4) ' ' End Public Sub btnPrinter_Click() btnPrint_Click End Public Sub dvwPrint_Zoom() lblZoom.Text = " " & Format(dvwPrint.Zoom, "0 %") & " " btnRealSize.Value = Round(dvwPrint.Zoom, -4) = 1 End gambas-3.16.3/comp/src/gb.form.print/.src/FPreview.form000066400000000000000000000177221411575327000225470ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,107,90) Text = ("Print preview") Icon = Picture["icon:/small/preview"] Arrangement = Arrange.Vertical { mnuPrint Menu Visible = False { mnuPrintToFile Menu Text = ("Print to file") & "..." } { Menu1 Menu } } { panPreview HBox MoveScaled(1,1,94,4) { btnPrinter MenuButton MoveScaled(0,0,34,4) Border = False Menu = "mnuPrint" MenuOnly = True } { btnShowSide ToolButton MoveScaled(34,0,4,4) ToolTip = ("Toggle option panel") Picture = Picture["icon:/small/close"] } { Spring1 Spring MoveScaled(42,0,2,4) } { btnPrint ToolButton MoveScaled(83,0,10,4) Visible = False AutoResize = True Text = ("Print") Picture = Picture["icon:/small/print"] } { panZoom HBox MoveScaled(46,0,31,4) Ignore = True { btnZoomOut ToolButton MoveScaled(0,0,4,4) ToolTip = ("Zoom out") Picture = Picture["icon:/small/zoom-out"] } { lblZoom Label MoveScaled(4,0,7,4) Alignment = Align.Center Text = ("100 %") } { btnZoomIn ToolButton MoveScaled(11,0,4,4) ToolTip = ("Zoom in") Picture = Picture["icon:/small/zoom-in"] } { btnOnePage ToolButton btnMode Name = "btnOnePage" MoveScaled(15,0,4,4) Tag = "1" ToolTip = ("One page") Picture = Picture["icon:/small/page"] Toggle = True } { btnTwoPages ToolButton btnMode Name = "btnTwoPages" MoveScaled(19,0,4,4) Tag = "2" ToolTip = ("Two pages") Picture = Picture["icon:/small/page-two"] Toggle = True } { btnFullWidth ToolButton btnMode Name = "btnFullWidth" MoveScaled(23,0,4,4) Tag = "3" ToolTip = ("Full width") Picture = Picture["icon:/small/zoom-width"] Toggle = True } { btnRealSize ToolButton btnMode Name = "btnRealSize" MoveScaled(27,0,4,4) Tag = "4" ToolTip = ("Real size") Picture = Picture["icon:/small/zoom-normal"] Toggle = True } } } { Panel1 HBox MoveScaled(1,6,84,83) Expand = True { panSide VBox MoveScaled(0,0,38,83) Spacing = True Margin = True { txtFile ButtonBox MoveScaled(1,1,29,4) Picture = Picture["icon:/16/open"] ReadOnly = True } { panResolution HBox MoveScaled(1,6,35,4) Spacing = True { TextLabel1 TextLabel MoveScaled(1,0,18,4) Text = ("Resolution") Alignment = Align.Normal } { cmbResolution ComboBox MoveScaled(20,0,9,4) #Translate = False ReadOnly = True List = ["75", "150", "300", "600", "1200"] } { Label11 Label MoveScaled(30,0,4,4) Text = ("DPI") } } { panRectoVerso HBox MoveScaled(1,11,38,4) Spacing = True { Label2 Label MoveScaled(0,0,18,4) Text = ("Two-sided") } { cmbDuplex ComboBox MoveScaled(18,0,18,4) Expand = True ReadOnly = True List = [("None"), ("Short side"), ("Long side")] } } { HBox1 HBox MoveScaled(2,16,34,4) Spacing = True { Label4 Label MoveScaled(0,0,18,4) Text = ("Copies") } { txtCopies SpinBox MoveScaled(13,0,9,4) MinValue = 1 Value = 1 } } { Panel14 HBox MoveScaled(2,21,36,4) Spacing = True { Label10 Label MoveScaled(0,0,18,4) Text = ("Orientation") } { cmbOrientation ComboBox MoveScaled(19,0,15,4) Expand = True ReadOnly = True List = [("Portrait"), ("Landscape")] } } { Panel8 HBox MoveScaled(2,26,36,4) Spacing = True { Label3 Label MoveScaled(0,0,18,4) Text = ("Paper") } { cmbPaper ComboBox MoveScaled(19,0,15,4) #Translate = False Expand = True ReadOnly = True List = ["Custom", "A3", "A4", "A5", "B5", "Letter", "Executive", "Legal"] } } { pnlCustom VBox MoveScaled(2,31,36,9) Spacing = True { Panel3 HBox MoveScaled(1,0,32,4) Spacing = True { Label5 Label MoveScaled(0,0,18,4) Text = ("Width") } { txtWidth SpinBox MoveScaled(14,0,9,4) MaxValue = 1000 } { Label7 Label MoveScaled(27,0,4,4) Text = ("mm") } } { Panel17 HBox MoveScaled(1,5,31,4) Spacing = True { Label6 Label MoveScaled(0,0,18,4) Text = ("Height") } { txtHeight SpinBox MoveScaled(14,0,9,4) MaxValue = 1000 } { Label8 Label MoveScaled(27,0,4,4) Text = ("mm") } } } { chkGrayScale CheckBox MoveScaled(2,41,34,3) Text = ("Grayscale") } { chkCollateCopies CheckBox MoveScaled(2,44,35,3) Text = ("Collate copies") } { chkReverseCopies CheckBox MoveScaled(2,47,36,3) Text = ("Reverse order") } { Expander1 Expander MoveScaled(1,51,37,23) Arrangement = Arrange.Vertical Spacing = True Border = False Text = ("Margins") TextFont = Font["Bold"] { Panel2 HBox MoveScaled(0,0,32,4) Spacing = True { Label1 Label MoveScaled(0,0,16,4) Text = ("Left") } { txtMarginLeft SpinBox txtMargin Name = "txtMarginLeft" MoveScaled(14,0,9,4) MaxValue = 1000 } { Label9 Label MoveScaled(27,0,4,4) Text = ("mm") } } { Panel4 HBox MoveScaled(0,5,32,4) Spacing = True { Label12 Label MoveScaled(0,0,16,4) Text = ("Right") } { txtMarginRight SpinBox txtMargin Name = "txtMarginRight" MoveScaled(14,0,9,4) MaxValue = 1000 } { Label13 Label MoveScaled(27,0,4,4) Text = ("mm") } } { Panel5 HBox MoveScaled(0,10,32,4) Spacing = True { Label14 Label MoveScaled(0,0,16,4) Text = ("Top") } { txtMarginTop SpinBox txtMargin Name = "txtMarginTop" MoveScaled(14,0,9,4) MaxValue = 1000 } { Label15 Label MoveScaled(27,0,4,4) Text = ("mm") } } { Panel6 HBox MoveScaled(0,15,32,4) Spacing = True { Label16 Label MoveScaled(0,0,16,4) Text = ("Bottom") } { txtMarginBottom SpinBox txtMargin Name = "txtMarginBottom" MoveScaled(14,0,9,4) MaxValue = 1000 } { Label17 Label MoveScaled(27,0,4,4) Text = ("mm") } } } { Spring6 Spring MoveScaled(17,75,3,2) } { HBox2 HBox MoveScaled(3,78,30,4) { Spring4 Spring MoveScaled(2,1,3,2) } { btnPrint2 Button btnPrint Name = "btnPrint2" MoveScaled(7,0,12,4) AutoResize = True Text = ("Print") Picture = Picture["icon:/small/print"] } { Spring5 Spring MoveScaled(20,2,5,1) } } } { dvwPrint DocumentView MoveScaled(43,10,40,43) Expand = True ShowShadow = True ShowPage = True } } } gambas-3.16.3/comp/src/gb.form.print/.src/FPrinting.class000066400000000000000000000002311411575327000230450ustar00rootroot00000000000000' Gambas class file Public Sub SetProgress(fVal As Float) pgbPrinting.Value = fVal End Public Sub btnCancel_Click() FPrinting.Cancel() End gambas-3.16.3/comp/src/gb.form.print/.src/FPrinting.form000066400000000000000000000007111411575327000227060ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,56,13) Text = ("Printing") & "..." Resizable = False Arrangement = Arrange.Vertical Margin = True { pgbPrinting ProgressBar MoveScaled(1,1,53,3) } { Spring1 Spring MoveScaled(27,5,2,2) } { Panel1 HBox MoveScaled(11,8,42,4) Invert = True { btnCancel Button MoveScaled(24,0,16,4) Text = ("Cancel") Picture = Picture["icon:/small/cancel"] } } } gambas-3.16.3/comp/src/gb.form.print/.src/MTest.module000066400000000000000000000020541411575327000223660ustar00rootroot00000000000000' Gambas module file Private $hPrinter As Printer Public Sub Main() Application.Theme = "gambas" $hPrinter = New Printer As "Printer" $hPrinter.MarginTop = 15 $hPrinter.Preview() End Public Sub Printer_Begin() Debug $hPrinter.Count = 3 End Public Sub Printer_Draw() Dim H As Float Debug $hPrinter.Page;; "/";; Paint.W;; Paint.H Paint.Font = Font["Liberation Sans,10"] Debug "Paint.Width = "; Paint.Width Debug "Printer.Resolution = "; $hPrinter.Resolution Debug "Paint.ResolutionX = "; Paint.ResolutionX Debug "Paint.FontScale = "; Paint.FontScale Debug "Paint.Font.Size = "; Paint.Font.Size H = Paint.TextSize(" ").H Debug H;; Paint.TextHeight;; Paint.Font.H Paint.Font = Font["Liberation Sans,10"] Paint.DrawText(CStr($hPrinter.Page) & " WÊyg_", 0, 0, Paint.W, H, Align.Center) Paint.LineWidth = 1 Paint.Rectangle(0, 0, Paint.W, H) Paint.Stroke Paint.Background = Color.Red Paint.DrawRichText(File.Load("molly-malone.txt"), 0, 100, Paint.W, Paint.H) 'Paint.DrawText("ABCD",10,) End gambas-3.16.3/comp/src/gb.form.print/.src/Printer.class000066400000000000000000000013441411575327000225760ustar00rootroot00000000000000' Gambas class file ''' This class allows to print documents on printers, or save them in a file. Export '' Return or set the default top margin in millimeters. Property MarginTop As Integer Use $iMarginTop '' Return or set the default right margin in millimeters. Property MarginRight As Integer Use $iMarginRight '' Return or set the default bottom margin in millimeters. Property MarginBottom As Integer Use $iMarginBottom '' Return or set the default left margin in millimeters. Property MarginLeft As Integer Use $iMarginLeft Public Sub _new() $iMarginTop = 10 $iMarginRight = 10 $iMarginBottom = 10 $iMarginLeft = 10 End '' Open the print preview as a modal form. Public Sub Preview() FPreview.Run(Me) End gambas-3.16.3/comp/src/gb.form.print/molly-malone.txt000066400000000000000000000017431411575327000224300ustar00rootroot00000000000000

      Molly Malone

      1. In Dublin's fair city,
      Where girls are so pretty,
      I first set my eyes on sweet Molly Malone,
      As she pushed her wheelbarrow
      Through streets broad and narrow,
      Crying, "Cockles and mussels, alive, alive oh"!

      Chorus

      Alive, alive oh! alive, alive oh!
      Crying, "Cockles and mussels, alive, alive oh"!

      2. Now she was a fishmonger,
      And sure t'was no wonder,
      For so were her mother and father before,
      And they each wheeled their barrow,
      Through streets broad and narrow,
      Crying, "Cockles and mussels, alive, alive oh"!

      Chorus

      3. She died of a fever,
      And no one could save her,
      And that was the end of sweet Molly Malone.
      Now her ghost wheels her barrow,
      Through streets broad and narrow,
      Crying, "Cockles and mussels, alive, alive oh"!

      Chorus

      gambas-3.16.3/comp/src/gb.form.stock/000077500000000000000000000000001411575327000172445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/.component000066400000000000000000000000761411575327000212520ustar00rootroot00000000000000[Component] Key=gb.form.stock Version=3.16.0 Requires=gb.form gambas-3.16.3/comp/src/gb.form.stock/.directory000066400000000000000000000000411411575327000212440ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form.stock/.hidden/000077500000000000000000000000001411575327000205555ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/.hidden/CHANGELOG000066400000000000000000000001221411575327000217620ustar00rootroot00000000000000* Sat Jun 13 2020 Benoît Minisini 3.14.90 - Version initiale gambas-3.16.3/comp/src/gb.form.stock/.hidden/earth.png000066400000000000000000000074321411575327000223740ustar00rootroot00000000000000PNG  IHDRpp>ytEXtSoftwarewww.inkscape.org< pHYs)7)7PLTEGpL +++;;;AAATTTeeeppp444ئ崴]]]zzzUUUꨨttt|||뻻///IIIأ555MMMeee[[[~~~qqq>>>̈GGGs)#tRNS0 13)%+ .4r(" 5,$L;Tt>Vj8.@E{H(x +cJ^ f'N;XmN]&8\/V:p'> C(D|؋@͂nYi3G[S)Is6wЀij3]p:5[6ZI/OURւώ0PǓ-!5C =9mQb3e" DG` ġÉŎu2vj3瑳6O3|ӿM^%dMmzC }ZoʯȈ,Md؟G?8[T׈W^*߃Dsbx}׳2 Ek$s0[A(5h^\Ld0n17U/ s ۻXp}v2XFujYD$9*j&˱v<|c#@Ez⫉ Γ.AIOTeC1I.Chаk $%/('.g%f8@G$埔_4A I1٪D|ll^Vq@= Z3 IQ 4S6h &`%xd .1>Dj+@42Q/>lY0LAۖG-^MQ w^i[HbR{8>)n/Pwb\ X*qGT[|vsBT2ɔӹ-dp^ YE}W s**8G1WтOt\IFgt[Y2oBMZ;"\Z#[e#7| r>A?o tm* NnT+bkλ^KT궺S"jM Ԛ6ו0}ָԲ1k|-{YץS`\pQ!7g^k3̿3@oœeL ]"n 顬T%_7l!cy,l g__IENDB`gambas-3.16.3/comp/src/gb.form.stock/.hidden/goutte.png000066400000000000000000000010771411575327000225770ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL______```]]]___```___aaa```___`````````^^^```___```^^^``````______aaammm```eeebbb```~ffb``xxdaa{{ffkbbrrsspp~~xxfaaff`aa~~wdd~~nnmm{{iiii||nnmm}}~~nnmmOvtRNSܡ)@G L`%]&^IDAT8˭v0P$VqtlmʪmJbx񼞽\ {\Zs@@Q |#|#^1o/vD;-u͖hA]D=JӋTU'+Tvn`±{~sYH?L;L0\x0+)( F<I/N~Jj 5-Z $<4@5$ϛHԢPő:ȋ:oo22//1+/0+0,,3p21++*.-.-/o12+2.,/ݬ^0*___2`d b ac f e g .-h Wi 01]\--,33q2/l k ^ 0```1끲**,,1n _..-c ׇ[_ZnS^ [b i _ 76a q o g f ۏ_pRˌ:d ϞZp ] ̣Aj ^_ l ca^a ` h ѤX]O4<5nT96ͦ?Δ7Ω?ZYСY͒8] ̏9Ub c E52m3b31Y4I4֐61s 0}1?6A5h2ҦW1kd[tgXpOˊ;Ω>T41ߎ4gb\?ې5LJ11y1}kUˎ;zHtLoeZpppv1lTы8A00p2B3wgV}DҥX.Γ8eee0t230A:֦:/|97Ԅ8UMxx~~~D܌TکZڥL4xFEA+5x2ۡCӞ=םOcSa>xVVh TwkKX7|;_Fzzz tRNS|OčIDATx{PSW}t]-nǶ]1H`7qبݨHA4yR 5!P+RBJ"]Vw{νIMrO~s3<`0 `0 `0ѢGO 338x; vmڪ*%dˋ[^$-Y&??' 6@ao Ya>L <;I`x?|x+$~M@m a;6 串;@=+)@A;=.h7ӯ<(hsy[δHm$}NJÀl|ɞsЕ+`m)1BIf`-l,!e Rc!܈sTXu#:h@@Y  ^rBIiLLpMRxdAII` s $*(yNYUk TJ@ RLNI? AA4U.-=yTU v\)Txe:4- HRR?s-r*+ Y?BjZ"P@v%4$+;8T s">"Uřy.;PEj'ꗐ='dkdkW $x6d@ $\in\\Q\L&K_d SO ~ȼ"@e^V%PP@LAFҐm`uu$V`@&TTaRq tUIH@l,y dq߿)#b PAA!aѪhAlT!@ &u<  Ձ J@&/@M%dB111 R0/ =@)(h@ Z@&/ /-ѡ߿B@Ѐ l,bP B@!Y$e1]߽1Op"`y s)yCV@J,&Ş7^5O`x">BƧA/_<ժ˗Uķ oG#`\E G`G6|xQecƧ&.hH XP|x }X'+CW F. }R*z( xR$0 xT$`X? XڗY;FnOϢmĊ6-;6OFǞFyM٠6֎'lA GV08=VQ@X)Tϡ^[s(e+`/ˇ]DL6<11]X~{t,!2V\" &+D>YʊO.eKȊ˰, \S@Ǣ @L `O@Ǣ @L `@Ǣ @LQ/y5W= &`X^.1Y, XtbXD'pf c &;μB7tP'M@d@y_?б:V"@H/T?Cg_lc ؊p] p_ p_ \ +:x?@Ǣ @LQo%`Ct,dﷀ.W?Y'#_{d(_^сL?r-c3K@ }+b| `C 6eIKOGb6~QZ#{V$n_EL!ďE`y ޙ籪5>Nb hh>| V㠗;Fݮ ԗ)(FЩ5Ncv c 7w̍6qW/ūx>#HFmwk]ksXno{rN>]3 8+>pDrC~ t 8|xo6zR&vzWA$ǿTk[x P{z`eYSS/`7.ylM,IeaA$ȳ}'M_L' p}sG=x{ z`/ yٖG1(P'yDI  <{ tBmɉCo8[+.ӌ&}?]~`Ks_ HΡCM3t%i*Ts5J.|~t룟/=v)9XH/`kKK)_Z>T/ %5'û`%G*9^GNOdh{$)F,~b46ܓlyuf`mh99櫐Ɩ<JRW6?Va))SQێ u/W8˴\ hZyX;@:.B咈=G "Hȣĩ˯+:+m2SצorpshɰTӊC)nUw1vòv \]b!ںpS lMQ0M֞Sbg-@Uy75 `ZfsP}*W%ll^M(n#S%Zb#>@۠gǿt RsLK(^+|<_.`bg|y?v c w?K򦘧\ط X{P ~0?!Y Qj~W&`A&DVAXƶ T*L@cNjpCIרNJB|alQ7n}q,251[X _.`b!<ʲ+cu`9hA4B:N_ClSq ӃL#]P&I䠙w;XiR#)*v}SV|zZy{fx;@v $:v¬;aV@H w¬;      /!UnO/IENDB`gambas-3.16.3/comp/src/gb.form.stock/.project000066400000000000000000000007631411575327000207210ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Default stock icons Startup=Main Icon=.hidden/icon.png Version=3.16.0 VersionFile=1 Component=gb.image Component=gb.gui Environment="GB_GUI=gb.qt5" TabSize=2 Language=fr Type=Component Maintainer=Benoît Minisini Address=g4mba5@gmail.com Url=www.endoftheinternet.com License=General Public License Prefix=1 PackageName=gambas3-gb-form-stock-3.14.90 Packager=1 Systems=debian Groups=debian:"admin" Tags=2DGraphics,3DGraphics,Accessories,Database,FileTransfer,Debugger gambas-3.16.3/comp/src/gb.form.stock/.src/000077500000000000000000000000001411575327000201115ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/.src/Main.module000066400000000000000000000207461411575327000222150ustar00rootroot00000000000000' Gambas module file ' Pour récupérer les icônes manquantes depuis subversion : ' $ for i in `svn status | grep "! " | cut -b 9-`; do svn revert $i; done ' Class Image Class SvgImage Class Color Class Paint Private Const UPDATE_ICONS As Boolean = False ' Private Sub Copy(sSrc As String, sDest As String) As Boolean ' ' If Not Exist(sSrc) Then Return True ' If Exist(sDest) Then ' If Not UPDATE_ICONS Then Return True ' Try Kill sDest ' Endif ' Try Copy sSrc To sDest ' If Error Then ' Print Error.Text ' Return True ' Endif ' Print sSrc; " ==> "; sDest ' ' End ' ' Private Sub MakeStock() ' ' Dim hFile As File ' Dim sLine As String ' Dim aLine As String[] ' Dim sIcon As String ' Dim sPath As String ' Dim sPathOrg As String ' Dim sTheme As String ' Dim sSize As String ' Dim sTemplate As String ' Dim sExt As String ' 'Dim sSrc As String ' Dim sFullPath As String ' Dim hImage As Image ' Dim hSvgImage As SvgImage ' Dim bOK As Boolean ' Dim bFound As Boolean ' Dim sTest As String ' Dim aPath As String[] ' Dim sOther As String ' Dim iPos As Integer ' Dim sCheck As String ' ' hFile = Open "~/gambas/3.0/trunk/comp/src/gb.form/map/icon.map" ' ' Try Mkdir "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock/16" ' Try Mkdir "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock/22" ' Try Mkdir "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock/32" ' Try Mkdir "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock/scalable" ' ' While Not Eof(hFile) ' ' Line Input #hFile, sLine ' aLine = Scan(sLine, "* *") ' If aLine.Count < 2 Then Continue ' sIcon = aLine[0] ' If Left(sIcon) = ";" Then Continue ' sPath = Trim(aLine[1]) ' If Not sPath Then Continue ' ' ' aPath = Split(sPath, ";") ' ' For I = 0 To aPath.Max ' ' sPath = aPath[I] ' ' If sPath Begins "[elementary]" Then Break ' ' If Left(sPath) <> "[" Then Break ' ' Next ' ' Print sIcon;; sPath ' aPath = Split(sPath, ";") ' ' For Each sSize In ["scalable", "16", "22", "32"] ' ' 'Try Kill "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & ".png" ' 'Try Kill "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & ".svg" ' ' bOK = False ' ' For Each sTheme In ["elementary/&2/&1", "Tango/&1/&2", "Humanity/&2/&1", "gnome/&1/&2", "hicolor/&1/&2", "oxygen/base/&1/&2"] ' ' 'If sIcon = "favorite" And If sTheme Begins "elementary/" Then Continue ' ' sTemplate = "/usr/share/icons" &/ sTheme ' 'If Not Exist(sTemplate) Then Continue ' ' For Each sPathOrg In aPath ' ' If sPathOrg Begins "[" Then ' iPos = InStr(sPathOrg, "]") ' sCheck = Mid$(sPathOrg, 2, iPos - 2) ' If Left(sCheck) = "-" Then ' If sSize = "scalable" Or If CInt(sSize) > 32 Then Continue ' If sTheme Not Like Mid$(sCheck, 2) Then Continue ' Else If Left(sCheck) = "+" Then ' If sSize = "scalable" Or If CInt(sSize) <= 32 Then Continue ' If sTheme Not Like Mid$(sCheck, 2) Then Continue ' Else ' If sTheme Not Like sCheck Then Continue ' Endif ' sPathOrg = Mid$(sPathOrg, iPos + 1) ' Endif ' ' If sPathOrg = "#" Then Continue ' ' If sPathOrg Begins "$(mime)/" Then ' ' bFound = False ' ' For Each sTest In ["mimetypes", "mimes"] ' sPath = Subst(sTemplate, sSize, sTest) ' If Exist(sPath) Then ' sPathOrg = Replace(sPathOrg, "$(mime)", sTest) ' bFound = True ' Break ' Endif ' sPath = Subst(sTemplate, "32", sTest) ' If Exist(sPath) Then ' sPathOrg = Replace(sPathOrg, "$(mime)", sTest) ' bFound = True ' Break ' Endif ' Next ' ' If Not bFound Then Goto NEXT_ICON ' ' Endif ' ' sPath = sPathOrg ' ' If sSize = "scalable" Then ' sExt = ".svg" ' bOK = True ' If Copy(Subst(sTemplate, sSize, File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), sExt), "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & sExt) Then ' bOK = False ' For Each sOther In ["64", "48", "32", "24", "16"] ' If Not Copy(Subst(sTemplate, sOther, File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), sExt), "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & sExt) Then ' bOK = True ' Break ' Endif ' Next ' Endif ' Else ' sExt = ".png" ' bOK = True ' If Copy(Subst(sTemplate, sSize, File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), sExt), "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & sExt) Then ' If Copy(Subst(sTemplate, sSize & "x" & sSize, File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), sExt), "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & sExt) Then ' sFullPath = Subst(sTemplate, sSize, File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), ".svg") ' If Not Exist(sFullPath) Then sFullPath = Subst(sTemplate, "24", File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), ".svg") ' If Not Exist(sFullPath) Then sFullPath = Subst(sTemplate, "16", File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), ".svg") ' If Not Exist(sFullPath) Then sFullPath = Subst(sTemplate, "32", File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), ".svg") ' If Not Exist(sFullPath) Then sFullPath = Subst(sTemplate, "48", File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), ".svg") ' If Not Exist(sFullPath) Then sFullPath = Subst(sTemplate, "64", File.Dir(sPath)) &/ File.SetExt(File.Name(sPath), ".svg") ' If Exist(sFullPath) Then ' hSvgImage = SvgImage.Load(sFullPath) ' hImage = New Image(CInt(sSize), CInt(sSize), Color.Transparent) ' Paint.Begin(hImage) ' hSvgImage.Resize(CInt(sSize), CInt(sSize)) ' hSvgImage.Paint ' Paint.End ' sPath = "~/gambas/3.0/trunk/comp/src/gb.form.stock/stock" &/ sSize &/ sIcon & sExt ' hImage.Save(sPath) ' Print sFullPath; " => "; sPath ' Else ' bOK = False ' Endif ' Endif ' Endif ' Endif ' ' If bOK Then Break ' ' Next ' ' If bOK Then Break ' ' Next ' ' NEXT_ICON: ' ' If Not bOK Then Print sIcon;; "("; sSize; "): *NOT FOUND*" ' ' Next ' ' ' Wend ' ' Close #hFile ' ' End ' Public Sub Main() Dim sFile As String Dim sDir As String Dim sPngQuant As String 'MakeInternet Quit sPngQuant = System.Find("pngquant") sDir = "/home/benoit/gambas/git/master/comp/src/gb.form.stock" For Each sFile In RDir(sDir) If File.Ext(sFile) <> "png" Then Continue Print sFile 'Kill sDir &/ File.Dir(sFile) &/ File.BaseName(sFile) & "png" Exec [sPngQuant, "-f", "--ext", ".png", sDir &/ sFile] Wait Next End Public Sub MakeInternet() Dim hImage As Image Dim iColor As Integer Dim I As Integer Dim J As Integer Dim X As Float Dim Y As Float Dim R As Float Dim A As Float Dim P As Float Dim RMax As Float Dim RMin As Float hImage = New Image(128, 128) iColor = Color.Orange For J = 0 To 127 For I = 0 To 127 P = 0 For Y = J - 64 + 0.25 To J - 63 - 0.25 Step 0.5 For X = I - 64 + 0.25 To I - 63 - 0.25 Step 0.5 'X = J - 64 + 0.5 'Y = I - 64 + 0.5 R = Mag(X, Y) A = Ang(X, Y) If A < 0 Then A += Pi(2) A = Frac(A / Pi(2) * 3) RMax = 56 - 12 * A RMin = 32 + 12 * A If R <= RMax And If R >= RMin Then P += 4 * Min(0.25, Min(RMax - R, R - RMin)) Next Next If P Then hImage[I, J] = Color.SetAlpha(iColor, 255 - 255 * P / 4) Next Next hImage.Save("~/internet.png") End gambas-3.16.3/comp/src/gb.form.stock/.src/_DefaultStock.class000066400000000000000000000053221411575327000236710ustar00rootroot00000000000000' Gambas class file Export Class Image Class SvgImage Static Private $cSynonymous As New Collection Static Private $bDebug As Boolean Static Public Sub _init() Dim hFile As File Dim sLine As String Dim iPos As Integer hFile = Open "links" For Input For Each sLine In hFile.Lines sLine = Trim(sLine) iPos = InStr(sLine, " -> ") If iPos < 2 Then Continue $cSynonymous[Trim(Left(sLine, iPos - 1))] = Trim(Mid$(sLine, iPos + 4)) Next $bDebug = Env["GB_STOCK_DEBUG"] = "1" End ' Static Private Sub MakeDark(hImage As Image) As Image ' ' Dim X As Integer ' Dim Y As Integer ' Dim hColor As ColorInfo ' Dim iLum As Integer ' Dim iFg As Integer ' Dim iBg As Integer ' ' iFg = Color[Color.Foreground].Luminance ' iBg = Color[Color.Background].Luminance ' hImage = hImage.Copy() ' ' For X = 0 To hImage.W ' For Y = 0 To hImage.H ' hColor = Color[hImage[X, Y]] ' iLum = hColor.Luminance ' hColor.Luminance = iFg - (hColor.Luminance - iBg) ' hImage[X, Y] = hColor.Color ' Next ' Next ' ' Return hImage ' ' End ' ' Static Private Sub Stretch(hImage As Image, iSize As Integer) As Image If hImage.W = iSize And If hImage.H = iSize Then Return hImage Return hImage.Stretch(iSize, iSize) End Static Private Sub LoadIcon(sKey As String, iSize As Integer, sStock As String) As Image Dim sPath As String sPath = sStock &/ CStr(iSize) &/ sKey If System.RightToLeft And If Exist(sPath & "-rtl.png") Then sPath &= "-rtl" If $bDebug And If iSize = 32 And If Not Exist(sPath & ".png") Then Error "gb.form.stock: unknown icon: " & sKey Return Image.Load(sPath & ".png") End Static Public Sub LoadImage(sKey As String, iSize As Integer, Optional sStock As String) As Image Dim hImage As Image If $cSynonymous.Exist(sKey) Then sKey = $cSynonymous[sKey] If Not sStock Or If Not IsDir(sStock) Then sStock = "gambas" 'If sKey = "tools" Then Debug sPath If iSize > 32 Then Try hImage = LoadIcon(sKey, 128, sStock) If Not Error Then Goto RETURN_IMAGE Endif hImage = LoadIcon(sKey, 32, sStock) RETURN_IMAGE: hImage = Stretch(hImage, iSize) If Application.DarkTheme And If hImage Then hImage = hImage.Invert(True) 'Color.Background, Color.Foreground) Return hImage End Static Public Sub LoadSvgImage(sKey As String, Optional sStock As String) As SvgImage Dim sPath As String If $cSynonymous.Exist(sKey) Then sKey = $cSynonymous[sKey] If Not sStock Or If Not IsDir(sStock) Then sStock = "gambas" sPath = sStock &/ "scalable" &/ sKey If System.RightToLeft And If Exist(sPath & "-rtl.svg") Then sPath &= "-rtl" 'If sKey = "tools" Then Debug sPath Return SvgImage.Load(sPath & ".svg") End gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/000077500000000000000000000000001411575327000214445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/000077500000000000000000000000001411575327000217565ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/delete.png000066400000000000000000000035271411575327000237350ustar00rootroot00000000000000PNG  IHDR pHYs+}PLTEGpL___bbb]]]____________bbb^^^______^^^```_________^^^______UUU___^^^``````dddUUU___```]]]_________``````_________]]]^^^___]]]___`````````^^^ZZZ```___^^^```_________^^^___```UUU______^^^_________^^^```_________^^^______^^^```YYY___^^^```_______________^^^ccc```___```^^^^^^```___bbb___[[[```____________mmm]]]fffaaa___^^^______aaa___aaa___```___^^^_________```bbb___^^^```___8"~tRNS/! .Lr^3QR sSG71~wK_vmB9葞V4'B/40-k(P>B䆏i[|ϑ/ެcV7yў,%>gOqfmfs~w5#[U6FdI:#+K;.wi%;TջHV eWk>AwFiE?=⸍,6WKkE[Fc!U6_EMݸ4Xh^%l"o_lo !<B|y?VLj~y]@gN>kPnJ={Lgl3_w#NHgH}I!ǔ|\@\NZ> AA"3s1zIg !_O\Փz cCe/-3 썎~0+^!R[Vt"?|AaE%!JבFy  垴UKć(+oI¶A{?\ %`3<|r^{"1DʇMmCiz|! 3G/)|#xq|h<6JʇuX!x`Nc|KhGЌ !bS>b)FmF|fَHҔ|D@Y1!gPj^a{$&v|Tb⚚q[rj%.- |lB(фJ4|lFQ棋T2= L'+T5P))~Ǘj%k~bu'sr’:{#١ 桕Μ}l'=4w\ʏn ǿhrt+?6z6%  !?>IxpMr -RIKލ[OLZ>)W8է?Ra")mw~\ټ|shzs{3;!;^4ƴ'pLEd_O=;F(y? Kšo'eӽ#gy`Nj0?\N;}^z'fnL/l6|jǩ.v6uUb^J IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/error.png000066400000000000000000000022701411575327000236160ustar00rootroot00000000000000PNG  IHDRgAMA asRGB pHYs+PLTEGpL___UUU_____________________^^^```dddbbbUUU___```]]]^^^______]]]______^^^]]]^^^```______^^^__________________^^^______^^^_________^^^___```^^^___``````____________^^^```___```^^^^^^```___bbb```____________mmm```______```______```______{lOtRNS3QR/ rGsL!&՗wS|Ěq{H<=֒PI' vFM˦xޙK6IDATxiS0b;66!B.r {):N$Kt|d!KWHHHHHvj޳jY&3+׬ ܟH{o@C#H}]iɴ HCJ`#8[IʸbB J(wU+3Os| zm%Ύ H_ 0X}ݯP$> ,KG* #1|JF>)%/LȗfS9}ECޤoӑ7*[jv= %-{pu!RTep( 3pB}Q.08ߊ?PؖYwБW{7qu;ȉ 6 ߾ Wߟb <ޟ?F-+ùjK:ٌ:Hv1Pr靋ד£^v>fmtc4th6A; v%rIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/gambas.png000066400000000000000000000052511411575327000237210ustar00rootroot00000000000000PNG  IHDRgAMA asRGBPLTEGpL______bbb______fff_________UUU______```___ddd___bbb___^^^cccfff___```_________[[[___UUU@@@^^^^^^UUU^^^_________^^^^^^^^^aaaYYY___``````______^^^```UUU___]]]```]]]```_________```_________```___ZZZ__________________``````___^^^_______________``````^^^aaa]]]```___```______^^^______```___```^^^```[[[^^^___cccfff^^^___```______________________________]]]______```_________^^^^^^___```___\\\```^^^```^^^bbb___```______^^^___aaa```^^^aaa______``````______^^^```___``````^^^^^^```_________^^^_________```___\\\mmm______aaa]]]```___^^^^^^```^^^^^^```___^^^______^^^___________________________]]]^^^___^^^___^^^___^^^bbb^^^^^^___]]]___```^^^^^^___^^^]]]____________tRNS /w R l;Io6Y5xQ  Ue[ 3vP^(u&7c}nߍ.m\H箏tyGF8fdr+sEJ9"0S:]L*M׭V-_O~$i2!%qZXDg>C{,z#`Nkg˱QQ371X PV0WjXYj)YB;.A5FCӢl]{;PlghY  Jڻk]Jn#ƽKZ O[,B/#ktw|LWNR^Z= v@n*>UEQ?okh QEFJrWښ+w# E[OoY0x>#mGPDOidPGf=@$bmI8v ;st m7ƆDDOCPMؖ :,Xi2mS}2eCB` 1yHG$ÿ zu;@.w}3L5EfM ԅ8QF@'$1xO$u> $D_e(gz1 PlIBuP@Q6$k2 n0  8@']Ũg ưֆ-0>?d1T47T -#oALekg[% ߋtsX: O Ӯ3?[ hd8yRF!@ UIv67]'ŏgAg.1apaϷb7 J+ԙֹC7A#p kOCsp (VA X6NŴ^{~p78P =Br=ӚGJ45*IZ uP@F'=&ۦ(["\&ٞ2V'3¼m*W E*JyT9TɊϪAףyehsJóƓBxJH_,m-?=Y!ǨBhv>o_mVN'z%z)YIё |߉<,Rяp֓SW΁" ԯ>NQfJpnR ʰ?ZLć-\AMw>ne;\S 8]jrrP`Sk?:WXN(J*N?2; sJe!>R~:d\Ίdn'H}iH7kڹ`M1#TΊ䳜;rsS #EH]q rRitq&riT 9$*ק G~bS+^x9 wf~\բI1qȕ}Xu⑫qn}Q+#%V!;MtGvFHs^1aV8sf,'_sm':#Ͽd䶔ӑnK?B#RIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/info.png000066400000000000000000000006161411575327000234220ustar00rootroot00000000000000PNG  IHDR pHYs+ H:S{<DDGO(@q7&E9n  Ԡ Hr)ipU$41K6^ 0`z%4 "2Ѿ)̷c<#PyYh, rEP&jpzDTm/ɜxDFIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/internet.png000066400000000000000000000052711411575327000243210ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL[[[jjj]]]`````````^^^aaa```aaa^^^^^^___```[[[ZZZ^^^```aaa`````````___[[[\\\```]]]___`````````fff``````\\\\\\ZZZccc```[[[ddd\\\\\\```\\\ZZZ^^^]]]```\\\UUU```fff```\\\```___```^^^```______``````UUU```]]]```______aaa___```bbb```___```___`````````mmm\\\fff``````bbbbbb````````````aaaaaaaaa___```]]]aaa``````]]]``````aaa```````````````\\\___\\\```aaa``````aaa___[[[```[[[```\\\[[[\\\``````___```\\\aaaaaaccc```___````````````___```ddd````````````^^^___bbb```___```___```___^^^^^^```\\\aaa````````````\\\hhh|||jjj^^^ccclll]]]pppxxxddd'tRNS @܌9Q#M%?bR)n,n5R&R o 1Jc f|k/=V[` Jr<4pz27~!̈́5_x&hK6*IuޮL;XZI'śvA6K̑UrIDATxZ_G_Hǂ UP ,6$boƮMQQQ. c7۝}f}>ǽ7oތ @`)Fv8q.ăc{#!e_%0^׶b{b}P}7_Oo n " 0 cK}N !& dZ'?C'2&@:y :M@NvL@&H};~+?!1C>Yt@:{DCe'z|Y~vetFNVVLg7e`!t(촚c`?%9*:fZό|IC`mi%CV֦(o]Q_aRߧpqI߾%ŇosdC `Æu9taE w1S$@Rpoqjb42@ʀ%c?+ EK.5p]>J6Ũ*ttҿds{ϲ%6EMZ"PC5u>'7XcߠMr c*r`SG?eK2eC@W!n&Zuu_,VE@DyrJ4m Wȥ k}}{=$QT>qԋHqKD#gHr,\,ÜGXr0%6Gl$ DAAL ?0rٮ |C&4$>Fn>UrM@f0#Ue J^M*v@B Q듈]]aW#2h*~A>22C!;0y Bwد l=s<9 f dSMƾn23RĚ.89U@@_ xeO|0*>t큟q7X!WOczYrf{`R` t5!-1_6 jOhri\d6[;_ge>$C^ِy9VZ=G ;Y۠MONB2ߑ&1bKuo !xgG͇v砋dN#vA_m VUxvvH  3MfMoIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/question.png000066400000000000000000000051701411575327000243360ustar00rootroot00000000000000PNG  IHDR pHYs+vPLTEGpLUUU```___`````````___```^^^```ddd```bbbUUU```]]]`````````___aaa______]]]^^^aaa``````aaabbb`````````______```______``````aaa```___```aaa`````````___``````aaa```___````````````^^^```bbb```___``````______aaammm```______`````````___aaa```aaa͞۔kkkdddbbbƜmmm݅hhhrrr蓓eeecccfffކ{{{iiizzzssslllѱwwwggg}}}pppxxxvvvڳqqqDznnnħْˋooo̟uuu𮮮ԍꑑՉ|||ι򵵵tttϏ+OtRNS3QR/ rGs!&L<՗Sw{H|ؚ=qǨPI' vFM˦xޅKRySMIDATx[WIF% 3KP QAH`"z^9sz{C̬woP=U_}]$ vdjtdl檈śfܴ85bUfld|rTܲ)LY5zr+i+{24h[q(! V㑒$7Mᑖ0)cK'~ֹV V:;|&Mw T"jW^As9T4\)-M;?'lWwDEƇ<ioAM Xek@"%G/&pbw^xg5[,t?KTK/)eװ x#|EтQ7v!GS ,z8 ?r?Z9b_ 1B٢+W )?=R7(MtYD&[ D3.y(KƈLzl\]PzbAF,ӝo tAmltY+o-|Eϯx ]0mMni1c #4`֣?_et =/*Q]@XDS5+,D'Vk aˀt 3 @G7u(doŀMZKX-,"+, <CS"\QBř[0H~=-=$ucB8A]7g(΃# Ib]d0"2ſ΋$ǘ^p, Hnb J6 ! OU%S8L♀DRIXX.77JD*5> pS3')Tɩ =wE鹀pC\B@Ѹ F@R J@9!M'*-r~&DAy&Rw.DR0LbĀc  P @?ʆiŀ|bN kM!isA fs D[=.i\b׍{G?yC\^=h=(`fkX^"`T`Q Ǹ|֧]+ +(Jc}P+o{e<=vxT$UKb^|M6qYiwwa{%O۫6wue|T{ yq!R"Wڝ#șPi#4JyҊU/oǹP86xrI#($&<{ =t_m~|n~?J_6buJhHHhꈵ ҳs$ 7<>2IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/128/warning.png000066400000000000000000000016411411575327000241330ustar00rootroot00000000000000PNG  IHDRgAMA asRGB pHYs+PLTEGpL`````````_______________mmm```_______________@@@______^^^____________]]]^^^______]]]UUU______aaa___|||eee!tRNS-ײ3S.,!2S|IDATxr@@Q^WGA?0UJGAszqgݫft/wYܮ3_?U>mu2ܝTT}*" f I@{q\  $@2@$@27$ Y~Hb p!@#@.`N6%`L>[7\ 0#4GQL0axH04'q@ DE. (&*U@!v @P@m5ge tx !'d9^Xlv>6R- {yoH ؞[;).ژHv;+#p88Z=PF@JzK'&P-PvECVq7=2!PlvǺ>*n!)q$B w)cc>7F26` 5&62è}Z? [O~ۅl4Ηgt~_,SIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/000077500000000000000000000000001411575327000216705ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/access.png000066400000000000000000000003111411575327000236320ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___aaaJ+tRNS@fGIDAT(c` Q.CA' * " Ԉ_PFJJ(~ ~BGIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/add.png000066400000000000000000000002441411575327000231260ustar00rootroot00000000000000PNG  IHDR IgAMA asRGB pHYs+PLTEGpL___>="tRNS@fIDATc`H ,sp1F5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/agenda.png000066400000000000000000000002441411575327000236150ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL`````````׭2CtRNSP,IDAT(c` # 0 B=w 2ATH%%RIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-bottom.png000066400000000000000000000002161411575327000247710ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@fIDATc` XCCƈZE+]+J$UOIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-center.png000066400000000000000000000002251411575327000247450ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f%IDATc` ATتUSHg`C',YIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-height.png000066400000000000000000000002171411575327000247360ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___]: tRNS@fIDATc`` EfZ5<>Ex\dIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-left.png000066400000000000000000000002201411575327000244120ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f IDATc` AڎXj) s&'ClWKIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-middle.png000066400000000000000000000002201411575327000247160ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f IDATc`2XCCҊa%GpR+] #IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-right.png000066400000000000000000000002231411575327000246000ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f#IDATc` 2V"i! g(oIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-top.png000066400000000000000000000002201411575327000242620ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f IDATc`UKi 3a+]HIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/align-width.png000066400000000000000000000002201411575327000245770ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f IDATc` Ac0L۩ :qBIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/apply.png000066400000000000000000000003501411575327000235210ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^^^^ddd```___```______'8tRNS\.[ZYh{_IDAT(c`90@3 (v8*FSШ@H P@`& 6@T7(v؁ & T hAV@_+"7XIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/archive.png000066400000000000000000000002271411575327000240200ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f'IDATc``X@HA9)l`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/attach.png000066400000000000000000000013571411575327000236500ustar00rootroot00000000000000PNG  IHDR D pHYs+ PLTEGpL```aaa```aaa___`````````aaa````````````aaaaaa```^^^```aaa___``````ccc```___aaa```aaaaaa___``````UUU___^^^`````````bbb___ccc```aaaUUUmmm``````___``````^^^```````````````````````````___bbb___```___```fff___``````aaabbb``````aaa```UUUaaa`````````^^^``````___```aaa___```aaa``````) _tRNS:UGHE 1d,Bs {Q4\RvMe.z]` +~_%l@D&۝TCr|, IDAT8˵N1 ědɆ${^EB/ѱadC=#Vogc$|{GflVav*+1ǶHGoM>iˊ\ 5t e<rx˧>ӸcۑΖ~=cy`(s8QPaUvrI?j]rLLsCOg%90+5ɡ w L@J؊,5/F?K IDAT8˭0fo9uȏ%L˞mGP(_> />̶xxݐ6 qd5) o)E`Z|P JcL,N0RG Gp?Y2kb[e]̵FCǞ^3Wg[/@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/average.png000066400000000000000000000012501411575327000240060ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```fff___``````UUU````````````aaa`````````UUUaaa___``````aaabbb``````___aaa___aaa```]]]```___````````````___aaa___``````aaa```___`````````^^^```___```___aaa```ddd````````````aaaaaa______```___```aaa```^^^aaa```ccc```___mmmaaa^^^```RPtRNSv(* SUyW;J_N%Trw޿H#|R8qKBz&e$j bIDAT8Rr0<16% @B59Ɍ-܃7W%,C2Mzlع |?b e{k7Xt\I0r@B4Ձ!ӎT="|s)FMJ3I~h>."Á/{ # ۏ+'MoYE%G 0a ߀ b/.rX59h}_8IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/battery.png000066400000000000000000000002411411575327000240450ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@f)IDATc`VZ@!,#hÈZj)5&cEqIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/bicycle.png000066400000000000000000000007701411575327000240140ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL``````___aaa]]]___```___``````@@@______```cccIII______```___^^^``````````````````______```]]]```aaa```___`````````YYY___]]]```]0,tRNS")J1X_c!<IDAT8˭0 Z*x>i*X@G?a6IV,m[\`Њ#Ot$ڈQD6F"C\\ }Y1 Xmծ#oXD|ˏGVz/pCW4`J  .U} (hʣ+V! j 9̈nj"фIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/blue.png000066400000000000000000000010261411575327000233240ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL]]]___```aaa`````````___aaa``````___```````````````]]]aaa``````ɗpppiiikkkyyyfffhhhgggۼztRNS)G`@ܠ+ <3ܢIDAT8˭@ E鲀"ٵbw/]G1./ܧ 9sd%)oy^d+ B@P3 *:D;i"ޯRPwo9c hFcF9e )@CkER@9V cx9QL;1pp=嵉u-mb bxmB`!1`c*|gQ|9BAN62~1DlӴ-8fIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/blur.png000066400000000000000000000032431411575327000233440ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLUUU```___@@@fff___FFF___IIIZZZUUUbbb]]]UUU]]][[[UUU^^^]]]\\\^^^LLL]]]___```\\\^^^```___@@@@@@WWW______^^^___XXX___[[[^^^___^^^^^^_________\\\___YYYYYYZZZUUU```]]]]]]^^^^^^YYY^^^\\\^^^]]]\\\______^^^```^^^_________aaaXXXUUU^^^\\\^^^^^^^^^[[[\\\]]][[[^^^^^^___^^^\\\]]]^^^aaaRRR___^^^^^^______^^^```XXX]]]___]]]```______```^^^\\\\\\^^^QQQ^^^^^^```\\\______^^^___\\\^^^]]]___]]]```]]]^^^^^^YYYWWW______^^^______```______^^^^^^___UUU^^^^^^]]]```[[[```^^^]]]^^^^^^___^^^___\\\^^^___]]]^^^______^^^^^^XXX^^^UUU```___KKK^^^___UUU^^^]]]UUU^^^______```]]]___PPP```YYY___]]]```^^^______^^^]]]\\\```___```[[[^^^______```___```ZZZ______^^^```]]]^^^]]]^^^]]][[[___^^^\\\```___(&tRNS  !7c' 5E] ,CN2(,sS؎$WFV =;K*jov.baO44{}فt@6Z/ѲlI5.Օe;k)G+mag4nz m;?Q10)I\+LfAf"uДͫy١ˆMN6efVu.q'1@Dinp2i:T]me ܶeӒ*'aN"YrPy bu\`F;+5U8[Zm`G˜wԡe=\>ޛV! 4Jr wݸs[|7DyzݑL} ضUUYfB{F%u*pjnSCɬU,nND't^ #$bSclrsrr2Jՙ-/ ,VaY{ 5t-QR&S-P*[Mg%V. eٔl]$"xy?>еG˗.LhJ cbAJlJRN^bg+{2v6I>qӍ;,yr0pZ99@%lL\yy1O Qx12}NS|a.YD@FTЊ>R+}QIqGLnXޟ67{  1xM񡤧jvG~۝bX0bɉEzX-! ^IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/brush.png000066400000000000000000000005161411575327000235230ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpL```___```aaa```````````````bbb``````````````````______UUU```bbb```\\\``````[!tRNS+*@'0oIDAT8I QA}WQW,$ʵJeLq2:x4 Vp' kV{aHBIYHb;Y}]a&OF]. `aZ(_( fd|]Om\IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/bus.png000066400000000000000000000004451411575327000231720ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpLIII``````]]]```______``````_________```G tRNS(s-YIDAT(c`  jBue.0 0E @vd { 6_80`'pM K̅ \dbW}B0eL$ b^E`ݛHHNDUجIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/c.png000066400000000000000000000006501411575327000226210ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpLTTT___666pppMMMeeeSSS444xxx///iiiJJJ***QQQבYYYhhhtttXXXtRNS@fIDAT8c`U Q* r8hp L"8psJpPũDpXɌF&iX+.)5]Nn%)&N\h(~A&),2 ., 13IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/calculator.png000066400000000000000000000002311411575327000245230ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f)IDATc`@[S30u!"X]0:ByIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/calendar.png000066400000000000000000000002751411575327000241530ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL___^^^______dK_tRNSQ6IDAT(c` ( h Ah(cE4pqIMqq qq sq!W`DBp6љIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/call.png000066400000000000000000000006431411575327000233140ustar00rootroot00000000000000PNG  IHDR D pHYs+rPLTEGpL_________```___fff______```___^^^___ZZZ___fff___^^^^^^___ddd___UUUbbb______^^^______aaa___```___```^^^___aaa___ %tRNSڻ% q5gL /1„B`32ڊIDAT8˽0E22 h/vR{{nTmRW "+1 !s#O;`;'Vd^s<|78#G7;r?m=E_4]b|> p~<|3n?.ˋRIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/camera.png000066400000000000000000000003521411575327000236260ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB$PLTEGpL___fffooovvvuuutRNS@fWIDAT(c`PrPEZ"LI $ $(8-SPI@P0IMP C1;l Ń)F0`!+IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cancel.png000066400000000000000000000005211411575327000236210ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB-PLTEGpL______```_________]]]bbb______```_________a&LtRNSWZT-*{:`IDAT(c``1 A, y A&wJE J =u(U+* QPQYH<$`%( ߽KAٻwI|P2|,#Ed% 7|S›%0_B T"Bc*LRPC9`5P)^KDa)YwIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cap-butt.png000066400000000000000000000002101411575327000241060ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc` 0tdu+5hIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cap-round.png000066400000000000000000000005111411575327000242630ustar00rootroot00000000000000PNG  IHDR D pHYs+HPLTEGpL```````````````___^^^___fffbbb___`````````UUU`````````___``````mmm```tRNSV. 4[Z5 'IDAT8; DAdn,$$TpK BE8)Wy(Rq8.+j<_Ts$ZIq8"Hc- HpLB(I> LIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cap-square.png000066400000000000000000000002071411575327000244360ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc``"u#e IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/car.png000066400000000000000000000005521411575327000231450ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL___```aaa```___``````III```___```___```_________]]]ccc___^^^bbb___]]]```BmiKtRNS*s(Ԯ44lKIDAT8 D!!dOW(ImQǾ3a,itR [LhY`βj_Y`F\/y[Ãר;7̰ Y,pB2ܹ$@A~{C _T`iJ۪WWYM^y`Pz#g5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cdrom.png000066400000000000000000000006541411575327000235070ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBZPLTEGpL____________```]]]______^^^``````___aaa______```_________qqqttteeeddd3TtRNS)cJ?>KEIDAT8˭S[ D ׬RI;0, *QX$7H(@cp,y"JJ! oIIQYg+~oQ jiYࢭsߖQ&[ WG %es=Dcύ !el{hDWmщ]{09`eIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/clear-rtl.png000066400000000000000000000004021411575327000242570ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL```___tRNS+N}IDAT(ϵ D?9qa  DkryGPiVN [f,*$* AOB@z>Vmɧ)^c%\ig= %P7d15muaIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/clear.png000066400000000000000000000004031411575327000234610ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL```___tRNS+N~IDAT(ϵ Dq6h@6 :@)F?mr\^{JW{@cƸT%% 8 i#$F*d#",w@2yn53ثW%#+X/ԟ;uc/(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/clock.png000066400000000000000000000007551411575327000235000ustar00rootroot00000000000000PNG  IHDR D pHYs+oPLTEGpL_________@@@___]]]^^^_______________]]]```_______________tttrrrԨtRNS)c>?JKƜDIDAT8˭׮0D@1%٬+e^o%,-+X❄%wib p/zj) (еKܗoM<%;;RM J 6Uq`k01j#\ @7@KDR"5"idtPTjP}J.X]7Y71̡'1arrL+m?BÙ?e1 #{|/236yIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/clone.png000066400000000000000000000003471411575327000235020ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpL```UUU`````````cccccc```]]]```G&7 tRNS r y*VIDAT(c` :!٤VZ$ @K@+@ `h0Z& ;jժ(~ZjP ֈ[pIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/close.png000066400000000000000000000004631411575327000235060ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL___aaa``````aaa```aaa``````______`````` tRNSWZT*-{GnIDAT(c`P p E+N 4޽T"{*$ RxrL"P P)Pd %r(``P{7ŭnw&!V CP*"+\sD* q0=d i_3l IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cloud.png000066400000000000000000000005451411575327000235100ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL````````````bbb``````aaa```UUU````````````````````````____________`````````m tRNS/ @P雫::IDAT8Փ !\rhUڢGvFqJyiUFWCJ!w:oOuj˵!_(=OƵ8hkD'UgC$xHQLxK%@#H`kL5keZRIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/color.png000066400000000000000000000004441411575327000235160ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB0PLTEGpL___^^^_________r tRNSQQQ‹oyIDAT(c`^ـ"pݻ7( N$v@> -bX0f RM 7^{-@Tv@JX@ #H@ $MC b:_dIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/component.png000066400000000000000000000002201411575327000243720ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTEGpL___>="tRNS@fIDATc`? 8BN! IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/computer.png000066400000000000000000000003751411575327000242410ustar00rootroot00000000000000PNG  IHDR Tg pHYs+$PLTEGpLbbb___``````aaa___````````````#Fo tRNSNM2iIDAT(c` B8v~B!2"  VU@d @)d@-ջ, t! Ds9vIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/connect.png000066400000000000000000000004241411575327000240270ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB pHYs+0PLTEGpL_________```______```___UUU```______^^^mmm___ tRNSV[Z@-RIDAT(c`+`Hb?BAMM?@!@<@?.OP Xp1<0]#V_B)fC+ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/contrast.png000066400000000000000000000006061411575327000242350ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL````````````___```aaa]]]```ccc___`````````aaa```___```eeeaaadddJ"tRNS乨[y! tsUIDAT8͒ DKKաB}y@R&"ϋRf]qEkO;"Rׯq0W=N={czTq|j|@JL -P: -9|"EWiXv}~wn"0;"r\~[쓘8ye x7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/copy.png000066400000000000000000000002601411575327000233460ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___]: tRNS@f=IDATc`A bU@f| TPRTrtGg00@#3R0ԩH 4.}o8IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cpp.png000066400000000000000000000007551411575327000231670ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpL '''___;;; KKK"""$$$PPPIIIˋvvvaaaLLL888GGG|||kkkZZZ\\\[[[ڷ111HHHtRNS@fIDAT8 0 ԍMҽ{3VBz>!1E~ I@M S=NK,ģ.DSu[jMs _ALFDc^w:n`VWFwZUY5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/crop.png000066400000000000000000000003661411575327000233460ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___```___^^^f6tRNS~vH{IDAT(ϝ]@0). . qHWѪ*0%ݟgѐ*6dQl=/='vnUSxJDA(U6x <%c GP̴\`ceյQBIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/css.png000066400000000000000000000012321411575327000231640ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB2PLTEGpL222___ccc555ZZZũ͊<<< 777%%% }}}RRRlll&&&!!!ƓUUU$$$BBBSSSGGG ㋋///nnnxxx...mmmJJJ666ppphhh(((zzzeeeaaa---www000HHH{{{444 K 8tRNS@fIDAT8c`U B\ EA*02cdaWUWd ،99X858 $=) mNd5 ʬ@_1X@=IE %=DM #;;[g {*'3DSkvw$'g";'(C6M^80n;2{xtL2;;3#<À$+Ka{Gn9_n9>/i4朶NL2=-EX$$y$FdbC+Q(,*s{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/cut.png000066400000000000000000000015241411575327000231730ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL`````````````````````fff````````````^^^______mmmccc______[[[^^^```___aaa```aaa`````````___aaa`````````aaaaaaaaa______```___aaa___aaa``````bbb______```ccc```______``````]]]``````bbbUUU```___aaabbb___```___`````````___aaa```````````````___`````````ccc```___``````UUU``````aaa```#^tRNS HxA+$.8ν`፰aq>3[7y?KTIDAT8˭ jtKK?Säml42 IDAT8˭钂0 CQ@PK.aվ+nrag1kWcyͨz$_zkH~hG.GZȹpG4YӝvލoOK@?ۅChX"MhZ's_)Ez_*xvTƢP$hqU468D֠8ĨHEv2TCqsv`upb ,9MYPBWTC6Ko,n)݁(umD#?C~G< ZU'/1;qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/desktop.png000066400000000000000000000002421411575327000240450ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f2IDATc``@jժQ(( &l I \TAXQ%&IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/development.png000066400000000000000000000003621411575327000247210ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB!PLTEGpL_________\\\^^^_________ddd___J*2 tRNSMLUYIDAT(c` 0b`j B@ (jɴ @@ZpU+V-FRX M PU 8 $LH )smh:sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/difference.png000066400000000000000000000002551411575327000244720ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```i%ftRNS@f:IDATc`\` ?jCUBCQ  @ K$nIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/directory.png000066400000000000000000000002271411575327000244030ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@fIDATc`\V" `0*OZBIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/disconnect.png000066400000000000000000000004301411575327000245240ustar00rootroot00000000000000PNG  IHDR D pHYs+6PLTEGpL```___``````___```aaaaaa___```UUU``````___```mmm```XM>*tRNS[VZ૔*kIDAT8ݒI 0 E1r*Bҿpo #џH[ԼװjNP24B`EHA`". x%L7IZ%`pL(j|,+l2^|cXw5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/down.png000066400000000000000000000003131411575327000233420ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB pHYs+ PLTEGpL```___tRNS+N=IDATc` p- U@beZ,$j0mժ 0E]Y+ڥ@l F" wIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/download.png000066400000000000000000000005451411575327000242110ustar00rootroot00000000000000PNG  IHDR D pHYs+HPLTEGpL```bbbccc````````````UUU```aaa``````^^^````````````]]]______```tRNS/r̀ ԙQ˂gfIDAT8˭D b*Zc4r;ޘ"nNt%MФc/y%i_ǰ9 t81j븞"gJaOkm҃bkR`,/8p Ƙ)Uq+fB? wmV?(szhIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-arrow.png000066400000000000000000000005271411575327000244670ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpL^^^___```______aaa```aaa______`````````aaa``````___```aaa___```___```aaa```bbbaaa```MtRNS&+kf i<:'6zzIDAT8G0D2fHanVj}i ¸RƼVH g _o1q/ ճNu݃RJX:ͥQ5Fu>p~O;e8sA $0IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-circle.png000066400000000000000000000007121411575327000245720ustar00rootroot00000000000000PNG  IHDR D pHYs+iPLTEGpL___aaa___```@@@```___^^^___]]]]]]^^^____________fff``````bbb^^^___bbb\\\cccaaa```____________```*"tRNScW) FE>?JK܋#IDAT8˭S0 *m)9 D^6V8ehlM!eшanO,9*|@#F:q!.C!c3- Wת5Z  .ŋߡ~9x4t4E -^Ӏoc c6D@qXqycY#%Ѯo<[Jyы2KӬ=s_)DGIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-line.png000066400000000000000000000002551411575327000242620ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLaaa```aaa```______```;tRNSkiiɸ(IDAT(c` 0 ()0wDSP"0``0)`` 1;H&EIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-path.png000066400000000000000000000006071411575327000242700ustar00rootroot00000000000000PNG  IHDR D pHYs+iPLTEGpL___aaa``````aaa```UUUbbb___`````````]]]______```______````````````mmm_________fff___UUUccc``````_"tRNSO-Gr z)̢@ ǿzIDAT8˭R0c0†GuHH!Yqy,n$ Ŷ<~J ֑ I&A,k+꾝;DU=U(95JE|eP4x7W#Ƒ J&m3%E;>bnfc0f, {r\IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-polygon.png000066400000000000000000000013541411575327000250230ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```fff```UUU``````ccc___``````mmm```___```___aaaaaa``````aaa___``````]]]```aaaaaa```aaa```aaa``````_________bbb``````````````````___```aaaaaa___``````aaa^^^```aaa^^^`````````___ccc``````___aaa````````````ddd```aaaUUU______^^^``````aaa`````````````````````___aaa___``` N[tRNSE,؝݋j>7-t{O:q2#3c (0׃D+*1?6}$=~8%JK;TZϪ[۵IDAT8˽r0Dqff2333N〥ytή44vO^oyb _7܁u1s3ѝ*:C!{Ib#&m*Whf >wh5Et5-~;YozjgH/g5>Svc ib/#@<4%).aOjIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-rectangle.png000066400000000000000000000002101411575327000252660ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc`@ .@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/draw-text.png000066400000000000000000000010431411575327000243130ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLaaa_________aaaaaa______UUU______YYY^^^^^^______fff______bbbaaa______```hhhccc___aaa___``````^^^___`````````_______________bbbbbb___[[[___`````````___``````aaa___```\\\^^^___``````___]]]______]]]aaa```8EtRNSg KI3/ԇ%#PV'|qޕ[uzflw,a 5 ZIDAT850N afffw+%eM ŕdьV٤[-يC盾d\N,c: rc= 8yzʂ,jmCM̩;LTrπ?dvG#Aja)IӚȪ| "{% MIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/drink.png000066400000000000000000000004001411575327000234770ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL`````````ccc```^^^___```UUU```___``````9 tRNS@w ucIDAT(c` d"@Fd4%z )5M\E͌h J."9MXE3)``нŋE3F} (vl!az((i2; IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/earth.png000066400000000000000000000011731411575327000235030ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```______mmm___``````_________```______```^^^fffUUU``````^^^``````aaajjj`````````bbb``````ccc___```UUUbbb`````````bbb```^^^```aaa``````aaa```___aaa______`````````aaa___aaaaaa```.=tRNSV[߫F>ڈIb(Y / 'pj9|;"U2GB2IDAT8ݓn0 E)y+ގ㑽l:UIlKqT=) D{3+1" -I{/Z8 F㱮!& q|eqE \ԪR#9}\Q.sBKEbJ_*a_,7`<y;ȷ$kÁy ѣaS6K2?r:ϰ^ p+ ccMK?pҤ<$`+",ψ"^;q8A 6]\vSߦ_N3`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/edit.png000066400000000000000000000003421411575327000233220ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```sss-rtRNS@fiIDAT(ϥ EQW:Ag)&i%о?M)^v{VtTX(@A j}@ 8P܁F`^ؾ;%h'*nSIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/eject.png000066400000000000000000000002761411575327000234750ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NEIDATӕ10 t1  .>yt4FsrvבeBBD(nlQ? /xtIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-cool.png000066400000000000000000000007621411575327000244460ustar00rootroot00000000000000PNG  IHDR D pHYs+uPLTEGpL``````______```]]]___`````````___aaa_________`````````zzzfffhhhssskkkggg(tRNS)cJ>?K)itIDAT8˭Sr0 61w $bkN %C:}ڱ˞FeaRUON&C1gPGŏtj5܏jhbq~ph}nfZv yEY8z +< w~oK17AIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-crying.png000066400000000000000000000007731411575327000250070ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL``````______```]]]___`````````___aaa_________`````````򓓓fffhhhkkkssstttggguuu‘tRNS)cJ>?K)itIDAT8˭S0 rɍ 7c:3Cf&Բ7eYyaR5L_/@X ND|[ΤKMYnPT+G _#T '0 │B-oQsn<r#rQ d_U5Q2-rZ2okƱQ-jÚXuF48fvWx#VݳcYi_v~/ˏqK^'1HVIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-happy.png000066400000000000000000000007151411575327000246310ustar00rootroot00000000000000PNG  IHDR D pHYs+lPLTEGpL``````______```]]]___`````````___aaa_________`````````򓓓fffhhhssskkkgggXg|tRNS)cJ>?K)itIDAT8˭S l;8t' le4%YX^Nq 4gVS;nǑ+Gp_#@  %'fB Lȿ#J$[|͂, 8+eJzM+FQGu#Nò b٬uDqUu~n۹@kXVt5r/C{?g#!eqI'L0y1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-laugh.png000066400000000000000000000006551411575327000246130ustar00rootroot00000000000000PNG  IHDR D pHYs+]PLTEGpL``````______```]]]___`````````___aaa_________`````````򓓓fffsssUItRNS)cJ>?K)itIDAT8˭ E̦ر@b(Q&Myސl8KH; 9|wp"]? 121F֏ڙ-* 0P7%G/te>w`AeFQ,޾BZ-1xX~ܠ"}0QT\^y"}ٶeO*v~/Xx?IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-plain.png000066400000000000000000000005731411575327000246150ustar00rootroot00000000000000PNG  IHDR D pHYs+HPLTEGpL``````______```]]]___`````````___aaa_________`````````򓓓ntRNS)cJ>?K)itIDAT8˭ DA. (?, DxxiAE؊\jJy$4@0B:|B\:w;gG-F@y& t[`@`{&Zt^3e/dA1Ӱnb%i݅Ah׾py(lm[ V'/Y$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-raspberry.png000066400000000000000000000006261411575327000255220ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL``````______```]]]___`````````___aaa_________`````````eeeutRNS)cJ>?K)itIDAT8˭ aе.G -@ȃ=j!?K)itIDAT8˭S g+c;>M6n,8PꝄ}R@.=8_.=~S׍Ze*SRj [~J(Ai" $!3JḮXFx')ж$2$I/S%:8:9A?/ϹYpfv\ˊF.gh,~$<.Qy_\;0yǤIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-surprise.png000066400000000000000000000006471411575327000253700ustar00rootroot00000000000000PNG  IHDR D pHYs+WPLTEGpL``````______```]]]___`````````___aaa_________`````````zzzHtRNS)cJ>?K)itIDAT8˭ E,ߙeLf쁻AErN)x$=@N} %3=u6Sf΅=֏ƚD4ƁAE4@@pPr -$?ZT^Z2(5 XoIciɂtFuueZW+WkqPu]5<߸/IIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-uncertain.png000066400000000000000000000007111411575327000254740ustar00rootroot00000000000000PNG  IHDR D pHYs+xPLTEGpL``````______```]]]___`````````___aaa_________`````````򓓓xxxzzz񠠠dddnnnooofffg;tRNS)cJ>?K)itIDAT8˭ {vؽ "XmAb.XP8ELH\;!mQ@i`eZ /_>0fDIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/emote-wink.png000066400000000000000000000007161411575327000244610ustar00rootroot00000000000000PNG  IHDR D pHYs+lPLTEGpL``````______```]]]___`````````___aaa_________`````````򓓓fffhhhssskkkgggXg|tRNS)cJ>?K)itIDAT8˭S0 >ѡjNu}njY,KEIDAT8˭ @vaQAH5y"R Vj &amhM:]a.g Qp{1â\QkGl&kVfXIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/factory.png000066400000000000000000000003661411575327000240520ustar00rootroot00000000000000PNG  IHDR D pHYs+3PLTEGpL```aaa^^^```ccc___``````______``````ccc``````HtRNS]1УFupRMIDAT8c`.DR Eb")`abDR Ï@@ @@ U0P!nIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/file-manager.png000066400000000000000000000002411411575327000247220ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f1IDATc`@X(P0@fD"1X!R$3VBgg Dg;,IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/file.png000066400000000000000000000002641411575327000233170ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^```___```HStRNSkJ9IDAT(c` \]E"` A A.x@`T &@@TiᣨIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/fill.png000066400000000000000000000004011411575327000233170ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___tRNS(muIDAT(Ͻ 0  fJv ۔%EAŗc?,[AdVH ¬ |.Te*MAPChS 3_^ lsbvvޏ gpliIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/filter.png000066400000000000000000000002751411575327000236670ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NDIDATc`  C^ 1M2JV (+f0Bڢb)͸TIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/find.png000066400000000000000000000006221411575327000233160ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBWPLTEGpL^^^^^^___```_________```]]]______hhh^^^ttt^^^```_________bbb_________eee_________f8tRNS +xWG)ݢ@{* IDAT8ݓ Eet 49,$HQUg ^jXZ:'5m#-< {C5`c< 9aFo% 8_/N\^]aFkCeXEklz{2eNF'6pRNֱh;~N'IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/firewall.png000066400000000000000000000005741411575327000242110ustar00rootroot00000000000000PNG  IHDR D pHYs+TPLTEGpLaaafff`````````aaa````````````````````````ccc```___```yyynnnyBtRNSd*U%$juIDAT8͓ eU,Yc "C@4ͳjW*2-23a:c +lZmpxL8_  |I='B(,W4xbOqRHjPf ۋM]$B:7_R'.yIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/first.png000066400000000000000000000003161411575327000235250ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^```\\\___*tRNȘUIDAT( 0 CQ+Y 8dh{/P|xdiS9@<"+xDV/ "`9/F FХynfsIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/flag.png000066400000000000000000000002611411575327000233060ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS)8IDATc`\ VX ZcL1 B1\;@`Kc@IIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/flip-h.png000066400000000000000000000003041411575327000235520ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NKIDATc````38A4. ĘdHK,c%P*0p``0& p)bvp+"Alh9&ڷIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/flip-v.png000066400000000000000000000003011411575327000235650ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NHIDATc` P(#k%TɪUElVAIZQjTz1wܩp# ˨g9F IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/floppy.png000066400000000000000000000002701411575327000237060ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL^^^___; tRNS)3\K "t9hrDa' wӿ0d,V1WҊvIDAT8˵RA EU@QATE\dQ*yIMfv?mXo{l x߄2AEf3*>5t8Հ:Ε&pI$,6_Dahj Fk!sy>m&Py0n +;R+ݥà"|prr_"3pXAѽzH:ԴE8ӀXş۵, BqIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/forward.png000066400000000000000000000003151411575327000240410ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NTIDATӍ 0 3G䦬A E@ ZTff%dZl!s C8);9Fj;zJ9=hIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/fullscreen.png000066400000000000000000000002371411575327000245420ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f/IDATc`H`2`@fDZ Lۉr3O1^(wIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/gambas.png000066400000000000000000000016471411575327000236400ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB\PLTEGpL___```___cccttt___^^^]]]^^^___RRR__________________^^^______^^^aaa___```___hhh____________^^^___```______^^^___^^^[[[^^^```___^^^```______hhhZZZ```_________^^^_________^^^ttt```___\\\___^^^___ccc_________```^^^bbb______``````_________```_______________\\\^^^^^^^^^___``````___^^^aaa```^^^____________lll______^^^``````aaa___bbb______fff______AʠstRNSR-אH2~LpnIUVP=S< hX$be*,+go_9Ϧf껇 tZ:W(jIDAT8SU{@@ H$P(8{byC!lG؏zQa@nrp6M_U! u!P2ǛJ}5@85j`OjjlB ȉq8Zw qf!!B=돛pQ21N'7R=@[Ї[^K6 lBB -&&kS: 9)u/ ;d/<o*w(*1dh>̒67%H#Z&ݬFHٸ&,GSU8T`s<ɚq>P 5kĠOe݁_ _Eǟ_oO/liIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/game.png000066400000000000000000000003371411575327000233120ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^`````````___``` tRNSQ‹o[IDAT(c` 0:(Hd%, $&> -bX04 0AT & ! 5 # ,@K e7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/gamma.png000066400000000000000000000005601411575327000234610ustar00rootroot00000000000000PNG  IHDR D pHYs+rPLTEGpLUUU```fff]]]UUU^^^```@@@]]]```___aaa^^^____________aaa```[[[```______```____________cccbbb______aaa```x%tRNS ,l8!+9S3*b[s6^BAQhsIDAT8c`<(+`dREFJeX@ENYU -\@, Ғ 8HW _V0n @͏O(f*f!O<|(à  !pIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/gnu.png000066400000000000000000000015711411575327000231730ustar00rootroot00000000000000PNG  IHDR D pHYs+PPLTEGpLaaa```fff```bbb```___fffaaa`````````mmm```]]]^^^```bbb[[[aaa```ddd___``````___```___```UUUaaa```___````````````]]]aaa```aaa```aaa___aaaaaa``````aaa`````````````````````______````````````______UUU```jjjaaa___```aaa```___aaaaaa]]]```___bbb```___bbbaaaccc``````___]]]^^^ccc```^^^dddbbb``````aaa\\\``````___`````````___`````````L<otRNS I'gh^u!y2cYWeڂ3{U N*RGL 4}+/ps)0jZXkȼ'kTIDAT8˽Uw@7H @ܭq@z:\.]gڎ/"# t*AH"#i7{sZw+V>(tׯ@ںfd*˵<r tD#.WanO\IBjM<w5 [w[̫;MgѢ3tz$_s`>)Ԙ_:6u\hI38g'lԤѦOoY%`J+|6}kxY5HglO^ %?ɨ[vL&X` 5uߗ4:<oEŽ`7w}8tIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/green.png000066400000000000000000000011061411575327000234740ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL斖߁󍍍Ϗԣ첲ޛ񗗗򝝝-@'tRNS)`@G+ oͶIDAT8˭r@ EYZ ơHHrț C6bltȎmk*0h6Q D~E{ ,%BҶzh|Km3eehix P.{sv#eqY/;,fñqw~=~&oDy_5@K}7|` ss(௧_' W" x@q@H&:Ԯ٦ڥ?oPSOX5"΋V=ycTA& Q{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/grid.png000066400000000000000000000002131411575327000233170ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTEGpL___>="tRNS@fIDATc`|@':0p%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/group.png000066400000000000000000000010071411575327000235300ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL`````````aaabbbUUUaaaUUUfff``````aaa``````^^^``````dddaaa`````````___```aaa```bbboooxxxnnn`KDaep%S$u\gIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/h.png000066400000000000000000000003551411575327000226300ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB6PLTEGpLcccSSS{{{www___OOO---///UUUXXXw}tRNS@fHIDAT8c`U I~<R隉8>Iu+isT1꿓PIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/harddisk.png000066400000000000000000000002231411575327000241640ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL___GQtRNS@f#IDATc` pK"d 3XS6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/hardware.png000066400000000000000000000002471411575327000241760ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___ MtRNS@f/IDATc`0B ?#lժFhh$0+pFfI7=zܩIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/headset.png000066400000000000000000000010211411575327000240050ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLUUU```___```___mmm`````````___```aaa```______jjj``````^^^^^^fff___```ccc___```aaa`````````aaaUUUbbb___aaa```_________`````````&Dv,tRNSb>ڋ(YF I˒g'Vi[FLIDAT8˽ٲ0D!a}4\Ѳ_:>^Byi&v/?;@eEӶM)I&Ô d KU,AXD\aA? O8^8nw#4C7ԅ*MuzZ n?H,ST(xf!Q@xZh!Dpwo'|%`oqӯ(KSjKrA0xcIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/help.png000066400000000000000000000011341411575327000233250ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL``````______```^^^___UUU`````````______``````dddjjjfffyyymmmrrrӸ}}}vvvႂccckkknnn宮⦦lllzLtRNS(ڋI>bg IDAT8˭Sr llVrK{q?,؉' s+qT**#>"V@& x^CXhz6ԅz`XCd(<}09]Bo+#)WU{`_T9εQ N'x |+݉tׅ $Wp|W G`h'Hz&GȷbJ|LKS@AmF0{4x5j}Yˤp纅xZef.Hgr鼟W.~~O/{z +GzIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/home.png000066400000000000000000000003331411575327000233250ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL______\!tRNS+N\IDAT(c` 0 )06FU"llIE%%d% J @ @ +A!ԑpad)-CYp 4%lIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/house.png000066400000000000000000000002751411575327000235250ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS)LIDATʱ CQӸLy< #$>Q_<ګS)9@R+ QTH!gR[fgO4j/IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/html.png000066400000000000000000000007501411575327000233440ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLccc___ooo}}}mmmᄒkkk˜Ύdddwww֩bbb򖖖Ԓȟ```eeeuuuZtRNS@fIDAT8G0P {oS ;@&Y#4.1iڪjY|_..Qr`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/identity.png000066400000000000000000000011031411575327000242220ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL]]]_________`````````___`````````______aaa```___``````uuussseeęӡbbb}}}lllmmm񹹹򺺺ltRNS)c̊>?JKJm'IDAT8˭玂@ދJloj2 ߵ,7BsRT־ҁ$ۦi8h_-M3ȑ`PJyk}_ƞhy(tWe:TEOF<:տAJy#BP*%A0bZr藁hR [JհE~`"0`GL 1'DK-&9s˜ƁWQBJ?܇H*>IDAT8˭ג0 PLqhM%L^'A$JU~4>Ϗ\;msZ1}?HWu6;i$=x=Ā%0G!,$k"P ( <Tq4+@bK\b \[%uHj5ɍiF<'f7,7-lqC+K1\k#Si$q/3?N˜IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/indent.png000066400000000000000000000002631411575327000236600ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````___ZtRNS+N?IDATc`pZj w1._`0D;] aV-;ABxگIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/info.png000066400000000000000000000003241411575327000233300ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___iiiׇdtRNS@fOIDAT(c` QV%$[@=5E@MP0 E@UP0 C QPP @' =@N@s>%s>/ρ'IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/insert-image.png000066400000000000000000000006361411575327000247670ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL```bbb___``````````````````______@@@\\\___```___```iiiotRNS Z 88[[[ ڛ4IDAT8  R-. Ti/p b#G+n^HLⲌ 4OBZ5(B8 92hWV ;Tʭ GH7@ @CvL"|8g$V,ӣGP Q0hu JQO3?IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/insert-link.png000066400000000000000000000020671411575327000246420ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLbbb]]]``````______UUU```______```fff``````___```mmm______^^^___]]]______fff```UUU_________^^^UUU_________fff___UUU]]]aaa^^^bbb]]]______[[[______bbb^^^_________^^^```___aaa___```^^^```______^^^___^^^______]]]___```___aaa^^^____________```^^^_________@@@___aaa___```______^^^_________^^^``````]]]______^^^^^^\\\______```aaa```___ccc___^^^^^^^^^______^^^```_________```_________ccc_________```___tRNS ԇZĚ,8 ; 7:'? .31Ϙ@N><ⅣB9SC+20ξFý=!6&*Qi [JԿaYrIDAT8˵Rec@ 6`m]aN;V(|h_rz3Rm&6KDFb ʙ4WI+DZe%D~ u ʵɚ]cCN]^_aa" [^{_+olSͽ)bTϬK|xI"MgS+#qeDtoI.Wj|h{ (_=??}uF^NOJߟ=Qs y/^Vޠ ' P4O}J(c}h| S5G b_LǺr嗠MY4Ds㓒0!= =TL+-S]0!h +;2wA[X6iZ/Uck;.o0EPZ3R0ZZ7^ŦIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/insert-text.png000066400000000000000000000005411411575327000246640ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL```bbb___````````````````````````______\\\___```tRNS [Zԇ8 8^IDAT80 ɾtoY_ Z\$O!Jvt xUwFMS#'T"8)*G\:|8W$ te# - E.vuX5@۪cBɻIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/internet.png000066400000000000000000000021541411575327000242300ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL\\\ZZZ```___\\\\\\[[[\\\UUUUUU`````````@@@`````````NNN___```___```___{{{```___aaa```___\\\UUU___```___]]]```___LLL\\\]]]___``````___```___```^^^^^^[[[______aaa___```aaa`````````______^^^ZZZccc___``````___\\\``````aaa^^^```______```___^^^YYY^^^^^^```___```______]]]``````___^^^^^^]]]aaa^^^___```^^^______``````aaa``````___bbb```mmm^^^_________III_________^^^aaaYYY``````aaa\\\^^^___^^^```___```___```\\\rrrssseeel^YtRNSX }eE ÈXXf"@'M! /?yj[D*aW-+>m_qTQ& JڟL,ZIpkiA7_2glԏbIDAT8͒W[Q'uM4 FAQYPAETJ&-sf&$q\3}3;G.O=~[)!Pౢ]118-r- Zg>LFɷonJvn q"𬲬7YFIOK-?k4Gu 2Foll%1ʈG @6dT St ɞ&*m!iXh+O'!)mHRy^wbD *--钌HK`@r&ARi\g] {X2Jݒs3 T^R7?{t:2&ŗ*$e֞9&<-rb=S%x/*k-4bPot5\pc=ƶZ?IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/intersection.png000066400000000000000000000002441411575327000251040ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```i%ftRNS@f1IDATc`@ Zj)d (gFZ ۍ~E-ӡIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/invert.png000066400000000000000000000011621411575327000237050ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLaaa___`````````___]]]______``````______```]]]fff```mmm{{{ddd̓gggpppoooJ-tRNS?cc>)JK)܊???? (IDAT8˭z0 FMft%1 dkcrnK$I'*cײܱ){d̠zz|Wtc| DW`p:dm"ĈٙBt(`S` *УK6>>jjjqqqTTTǯ{{{ ׳OOO...```MMMۈ^^^~~~---"{tRNS@fIDAT8PPtRʲIpW8yh~| hU{#Yz;H%8\VGVKݣfaof}RdzsHmR TDO~aIQNK (/.'I|(_Jj#'Ѭx0R;}D!]-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/jump.png000066400000000000000000000003661411575327000233560ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL___bbb______^^^^^^___7tRNS*cBWiIDAT(ϕ 0 7 \oD9>mb\JP%(A 'i9ՠ2z -z?uvoIDAT8˵I0 **Xɣ8R?*r!r Sv$T/.G|/,$9il(0xh}< B+@/zXusfb IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/lamp.png000066400000000000000000000005641411575327000233340ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBTPLTEGpL```^^^```]]]______UUU```bbb___ddd```^^^___\\\___fff^^^______\\\bbb____{tRNS /!c=#$"7D|IDAT8˵0 IR CT[U-ŇyXSS8kuś:>FbgZIhj aE5/0~p8, Sͱo/.cd2N=^F(N%8_c$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/language.png000066400000000000000000000002501411575327000241560ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+N/IDATc`\`PbPZcL1 cۢ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/last.png000066400000000000000000000003161411575327000233410ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^```\\\___*tRNȘUIDAT(c`X & !".h&".R"RpT4't4CmQ@pBw Fa3DmIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/layout.png000066400000000000000000000006061411575327000237150ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpL`````````___``````^^^``````aaa```bbbɛcccrrriiiܐ& tRNS5#(6?jIDAT8˭ `JKm(49Fg~)~WW=&LyӷD9Ѱ>+DUCSw'҉"&]86].A _Rij') BX z \ DZp0 @,AZX:{p"X yN͒ \-|cmċ)IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/left.png000066400000000000000000000003531411575327000233310ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB pHYs+PLTEGpL^^^\\\[[[]]]___tRNS~ϒQIDAT(c`Hg@P @S &M@1U` PLU0; T0t2; 0= އIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/lightness.png000066400000000000000000000006031411575327000243750ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpLbbbmmm___UUU^^^]]]```___hhhUUU```_________```___```gggwwwvvvD#tRNS/< YXIDAT8˭ "^ {']u^0-`gZz BD<8і^ZJqxw6]EA[&ubC]\DMҸ迊$04n@f׭y;cdS,2{}^W[=pVb[]qdwv`#qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/link.png000066400000000000000000000017301411575327000233340ustar00rootroot00000000000000PNG  IHDR D pHYs+wPLTEGpLfff```______UUU___]]]UUU```______UUUmmm___fff]]]______^^^bbbfff_________^^^^^^@@@[[[]]]__________________bbb^^^______^^^______]]]___^^^___aaa____________aaa______```^^^```______^^^___^^^______]]]___```___aaa___^^^_______________``````^^^_________^^^______aaa___]]]```[[[___aaa^^^```_________^^^``````___```]]]___^^^___UUU____________```______ccc^^^^^^___^^^_________w |tRNS   ,Ě ;?'.&731:+@N><ⅣB9SC8D2)0*Fý=!6 JކQais,IDAT8˵SU{@L HRܽXq/=$37.Ed٭i{Ay-Eu5/cUOŌPo c)vN`߈z M G|^}?ӝ fVD"\n8wpԩ-,e,\QN^lF#TuO:|gΈd+$7r%[J#sjIT,?Ge޾_k|]K)FZ:O`w|aǪ؉Fln##qvXl{rmcCA'sxЂ.2C1NH s㤘[*F4NB[o& Tktr>vj{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/linux.png000066400000000000000000000024371411575327000235430ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL@@@;;;;;; ///DDD///@@@@@@AAA===444PPPxxxŽLLL[[[III999&&&***)))111+++---***222DDD333@@@777CCC)))EEEEEEEEE555<<<,,,333444222BBB000+++...DDD***111555<<<666===CCCCCC888999???999>>>󶶶EEECCCAAA...着+++---***222꿿KKK///(((:::aaaۛyyyĆhhh䠠!!!VVVzzz\\\fff'''RRR돏&&&000GGG444555FFF===ג^^^999SSSMMMqqq||| ntRNS%'9 DW֐w<̤ nbłJ"tvP2;X  Xә-g%0>I>]M;V-%gחIDAT8c` X c)W ՁA; @pr I&pqR6.W,RϪ¸f¹8DL>?BNǪ'^;]ݯHas''cgD肎'/M^0zsc Pk ,uǴ$jh?]?eqkʛꈦ eY rA]^ y:;XPm^WPDYXP͝kσӷpR((ھcNN$if.['@@Ƕ=KgYY )а+++ߓW[M4!!36̬Me ͅP!ZK+ o X}:\S 6.,XS5 VH9 nlnn.,Fr$Ҕ)t͌Lڔ%YEQGS LL(<,Zߊ_},IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/lock.png000066400000000000000000000004011411575327000233210ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpL```UUUaaa]]]bbb_________fff^^^^^^fffmmm]]]___>tRNS O/  p\IDAT(c` W"Uϴ$K. YN. ?p O``.?$O? .AIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/love.png000066400000000000000000000011461411575327000233450ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```aaa\\\mmm````````````cccaaa```]]]``````aaa```aaa```aaa``````aaaaaa```^^^___``````````````````bbbUUUbbb```___`````````fffUUU___```fff___fff`````````aaa```___aaaaaa`````````___```_________`````````^^^`````````EFtRNS"yT=q\&漝E< 'm Xޑ|[(F¨PUW#lIDAT8˽0E#Q{'93Ds9g!n)9> 9<(N"c眖֮MX1+G7)vKUĞ+F%sBBT– IXHRA aXS!x,$D>RyTc0c=g@${˂OUe~0V$wt YBsYƳx+ y\>ҊR){*XjTGIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/lower.png000066400000000000000000000002151411575327000235240ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@f IDATc`$$C`@Xŧ*md$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/mail.png000066400000000000000000000002501411575327000233150ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@f0IDATc` pHP0@gZJ*#jժ L@v.EfDvUgtIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/make-all.png000066400000000000000000000003001411575327000240520ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```^^^^^^___ytRNS#݄GIDAT(c` 0Re @P=h J2)*qDMX#8Q`xb1"D7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/make.png000066400000000000000000000003521411575327000233130ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa_______________tRNS*cBWeIDAT(c` /B#B@MI!T#Bh J lfDSVR8F4@%hg`:`2KV@P-/B0///Fp////P&gy*iIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/marker.png000066400000000000000000000007261411575327000236640ustar00rootroot00000000000000PNG  IHDR D pHYs+~PLTEGpL^^^```___```______[[[______```aaa___```]]]]]]___^^^``````___```]]]^^^```_________```]]]^^^```333@@@```^^^____________```H7)tRNSlk(GG{; D+@,AhWViCIDAT8˭S DZ{K0c48qvnz{,!J 4G1b` =B()S HV=A=IbJ% K>s@0686l5ܧntC :\#Ȑ"16 1e#4) `jmt߬} ,* VIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/math.png000066400000000000000000000015351411575327000233330ustar00rootroot00000000000000PNG  IHDR D pHYs+PPLTEGpLUUU```fff___`````````UUU```___aaa```aaabbb```aaaddd`````````___bbb___aaaccc```___bbbccc````````````cccfff```aaabbb```^^^``````aaa```___aaa___```fff]]]___```______aaa``````^^^```___```___````````````___``````aaa`````````___```fff```___```___```cccmmm``````___[[[```UUU``````___````````````aaa```aaa```aaaaaaaaajjj````````````potRNS`>Y\'̄M _,<$՗g6᮲KoN38cm{Hȩ꒫ [Fn0 ڜbR"lT w8IDAT8͓WW@H@#{{7g$=>3/NwTN]V5z$TΣpSpᢦA_r3Tj;<_e5G^Bei/XF"2 dX 2 d3/I |RiWgFaB@Hץpo E p ;ňf^.hppmؾR3/:[`ݒOztc"yE@kG_j^J i28IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/md.png000066400000000000000000000007211411575327000227760ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLvvv󊊊```aaajjjЁ􈈈񝝝sssmmmhhhڳlll͹zzz宮bbboookkkZʸtRNS@fIDAT80 @ˆ{KQqlDj%+`GDH+/;4]RHG z6ZZa5_.ܞ :=7Dw\`Q-r`a%}؜{) M4cc*1 (2y0cWIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/media-player.png000066400000000000000000000002631411575327000247500ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```؞4itRNS@f=IDAT(c` QV%EOHH†i33JA$gTkQ j-}|Ka TKˑIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/menu.png000066400000000000000000000002221411575327000233360ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+N!IDATc` pX$P j\j@.þIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/microphone.png000066400000000000000000000007021411575327000245400ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBcPLTEGpL]]]___^^^___XXXaaa___^^^```___^^^___RRR___```______``````___^^^^^^^^^aaa___^^^_________^^^ccc___?9 tRNS![Q r'fjy>s tiT*IDAT8Փ EFXhL&בFOтfGe(7z-0-s`` t¢(,[A2?~]IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/multimedia.png000066400000000000000000000004241411575327000245300ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB6PLTEGpLXXX___```______``````__________________^^^\\\___/ tRNS 7S|_IDAT8K / VIZ;-G79<O VЁ& :7Xd KuIҐN EiȶtNeƶm2IPIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/muted.png000066400000000000000000000005241411575327000235150ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB pHYs+6PLTEGpL___^^^___aaa```___```]]]______```___^^^```^^^______-|otRNSgkҀimi<IDAT8˭K DAqYk&&4C]ཤZBV8`q0&}2qP^ 5 %m ϒ:d$b|2>u߰Kמ><&IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/network.png000066400000000000000000000003161411575327000240670ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLaaaddd``````````````````btRNS*koXEIDAT(c` t 00p49RF-P(H XAhffjAH1H'b\XIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/new-appointment.png000066400000000000000000000012321411575327000255210ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL___@@@```___bbb___``````___]]]^^^]]]_________``````_______________```______```___```\\\___```___```___rrrtttԨ.tRNScZ)?K >J3 [8[8 [J!,#IIDAT8˭ז@DG$9g?k "amΜqG5F'InMaFBtN0<[e\ɵl(/sbA~Dg((MUg plǰ(G[>f ` : ũ`=K@p2$Eb t͇p%}dMEMf\Lݙk+Sc(~&DcɻPʰ>f怩UM4ab+ C4`C3hB= K[kItqLV e>̘/7(^Rjua޾q)92IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/new-dir.png000066400000000000000000000005321411575327000237430ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL```bbb___````````````````````````\\\___```utRNS[Z 88_ vIDAT8 0}n=T :?>.8?_nYAͼ0dLhZnqA݌P.ˈD߀ hDE2R  U'!הU<20LlQD`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/new-mail.png000066400000000000000000000005551411575327000241140ustar00rootroot00000000000000PNG  IHDR D pHYs+TPLTEGpL```bbb___```````````````UUU```___\\\```_______________```tRNS[Z 8 [8ֿ֙rIDAT8ՓI E 1`2vYQ*ʪ} $'x~a>_?A6gdں^ts<14Ah JBSP =`ETREy~ Q#$JkЉgnbEOzOtNJ% 2hon-`Ā ߯e[/nD߁E4D*rYm;ĊZ{Yέzbi /@.hi& BgaM>n%&O!x~ܠd(4->O8t3tM;@O@P@Ũ#ؗ|nЦka"9S)-ڼ;C׌IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/new.png000066400000000000000000000005361411575327000231730ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL```bbb___```````````````\\\___]]]```aaa``````___^tRNS"Z] 77"]zIDAT8  ҁ&.\.HȜIQvn!zA׃~Rh-Ƹ$ 3$`-<'^!Ain?zD)W=,r)4jVgXO#@ !IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/next.png000066400000000000000000000003021411575327000233470ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NIIDATmϫ Cю3DMϴD]ӏ' t0\@At!(F9LQlS}a|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/notification.png000066400000000000000000000006031411575327000250630ustar00rootroot00000000000000PNG  IHDR D pHYs+]PLTEGpL```___aaa___`````````mmm```^^^```^^^aaa```aaa```aaaaaa```UUUdddaaa___```___``````___aaa```tRNSғ(6.YDgqp"S#R73jIDAT8˭ EQ kz?3F2y[,;7NK,! ) }ĜZ>G틠qo$/tV6h 0` @i2'pEG n^W*knzAov%E (PCI!:!tIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/office-calc.png000066400000000000000000000002361411575327000245320ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@f&IDATc`\`^P BaZc@u/ m'%9IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/office-draw.png000066400000000000000000000003551411575327000245670ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL___:{tRNS@flIDAT(ϭ aVx) ?MCʅo~U IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/page-two.png000066400000000000000000000002661411575327000241250ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````tRNS)BIDATc` pZBkժH_hOƫW2@ @ZVAk q [#Lw6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/page.png000066400000000000000000000002441411575327000233120ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````tRNS)0IDATc`\` ? vƯU 0XKP0'wBxYIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/paste.png000066400000000000000000000002701411575327000235110ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB pHYs+ PLTEGpL___ MtRNS@f+IDATc`BCQ 4PjRTta06u:WIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/pause.png000066400000000000000000000002111411575327000235050ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTEGpL___>="tRNS@fIDATc` 5q(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/pda.png000066400000000000000000000003471411575327000231460ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpLaaa```````````````򓓓( tRNS* FZIDAT(c` 0AT@$ j33 *H AiiG, .0 syL WD1*CFD<wc=IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/pdf.png000066400000000000000000000007541411575327000231550ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpLgggaaa___򺺺˚zzzeeeӆ藗tttiiirrr؃񕕕dddvvv볳mmm܇֏еtRNS@fIDAT8G0 ۲CI${Y 5Ҵ/D%0+6h2P` *վ,-fYPh!8%0W:=ءM9CXz^Y!q]|XF R)}0E>*aX9 *L?j^8y;5Z٢+_s%M]T *}$0LIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/pen.png000066400000000000000000000003371411575327000231630ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```^^^```___```}|QtRNS:tcIDAT(c`*`@qDS₪DM#d$-tP TQLp 5`PA654IE  zR jJW5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/people.png000066400000000000000000000010071411575327000236600ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL`````````aaabbbUUUaaaUUUfff``````aaa``````^^^``````dddaaa`````````___```aaa```bbboooxxxnnn`KDaep%S$u\gIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/percent.png000066400000000000000000000016631411575327000240440ustar00rootroot00000000000000PNG  IHDR D pHYs+kPLTEGpLfff``````UUU```___```fff```mmm```___aaa```````````````fff___``````aaa````````````___aaa``````^^^``````___bbb```aaa```aaa```aaaaaaaaaaaa]]]___``````aaa``````^^^```ccc``````\\\```^^^___ddd```___aaa``````___]]]______UUUaaa````````````___```bbb______`````````^^^^^^___bbb`````````````````````aaa______aaa``````___```___`````````aaajjj`````````bbbbbb___```߽3xtRNSѭT0 }̹Q]^l*L7t G6ȷkos_m!V¨P'S>w1<ڜ͸аYvہM /l#jIDAT8˭WW@  Ҕ&{{]x0 y=so&D9K-/H0T`,]?b `\rMiL + D1qCyBgB#*X% }},U5Y1q?#:1bج2ā@"jǥ~<>ڋ{-.$7%[ٻx@3"P2&"{2jVK͞!ț)m B.q3 g6~*CF'7GPD`ŃHw:WnE~>y,kz@"w +o`bvdKդ hzdԦ;y/(_ ]NWZIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/phone.png000066400000000000000000000003471411575327000235130ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpLaaa```````````````򓓓( tRNS* FZIDAT(c` 0AT@$ j33 *H AiiG, .0 syL WD1*CFD<wc=IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/pin.png000066400000000000000000000010311411575327000231570ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```______^^^```___``````aaa````````````[[[```___``````UUUUUU___^^^``````````````````^^^aaa```aaa___```````````````aaa___`````````___aaa___aaa`````````______aaa___```*H9tRNSvAy `@c+-ItSwHRuܩۨJC:DFKG;y>IDAT8͓0E@@A@@{/?& 8C}=g7wB~K+5XNq0,F9xR Ĺ wKTbRCKGGYbG`nf4;GĜOfsB'Ϋ0ajp߿ȸn^7B#y~aD~?冉 7b(*xXK3)nfdn`NH V 4.XwS`a7eXz8yhl 9s"Oiw_Mu"o牤йWI!H< jH VŋۊFs1~ U5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/play.png000066400000000000000000000002701411575327000233420ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL_________$tRNS@GPR;IDATӍα 0AF}/ *3^NL?MKϜgKU/PIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/plugin.png000066400000000000000000000003751411575327000237010ustar00rootroot00000000000000PNG  IHDR Tg pHYs+$PLTEGpL[[[```___```___aaammm`````````A5 tRNSklx/hIDAT(c` )0m"{ F؍``Ll2"l(Al.؁nh;.("!E`#4p8,@햯IIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/preview.png000066400000000000000000000007351411575327000240640ustar00rootroot00000000000000PNG  IHDR D pHYs+uPLTEGpL```___```___]]]```___aaaZZZ```______```______^^^```____________^^^^^^___```ʘddd핕aaaH6tRNSWvwZsSZO2ٽIDAT8˭0DC R>8oa.gw6';FϚB72P@B x+#X❂B6)|$&AQ/>e 8G=u0 Y)ti\o Z/!RǹM?/wD_k,IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/previous.png000066400000000000000000000003111411575327000242450ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NPIDATm ! DQTXb{9D1kjOH%(c 4%sMJx~r/L%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/print.png000066400000000000000000000002551411575327000235340ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___]: tRNS@f:IDATc` cgA O1d*cBe`):)qOIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/printer.png000066400000000000000000000003731411575327000240640ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpLaaa_______________```򒒒tRNS*[nIDAT(c` N4( [QrC48U,A62l,Ř(@x9 kՑN/O(R 3   s }IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/program.png000066400000000000000000000002731411575327000240470ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL___`StRNS@f=IDAT(c` PVA$@St%tB*$A0!` %P!$2B(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/properties.png000066400000000000000000000002221411575327000245660ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f"IDATc``X31th>\{BIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/question.png000066400000000000000000000012641411575327000242500ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```UUU```___``````______^^^``````______``````sssӪaaacccjjjΔʋ袢}}}mmmxxx܎dddeeeyyyߵ͸|||쬬ߓtRNSb(>ËI= -ZIDAT8˭Sr04"qkzN?ɘ8I&"AwBQTMCm0Z4h2@"hI=THL`"d^ϣ8O0@ xFm tK&9 lx;Z盠n9AV́P+2&7cRoK (/ua"ԼYU|$DD])i+r~`lفY?rN7Cy7?秧g|1k@ *IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/quit.png000066400000000000000000000005761411575327000233700ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBBPLTEGpL```____________]]]___@@@^^^```aaa____________ccc_________stRNS)cJ?K>OdIDAT8˭ D- (՛c<haCYyAUl="tRNS@f"IDATc`>$?@?Q6CTIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/recent.png000066400000000000000000000005341411575327000236600ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBWPLTEGpLwwwiiiaaa___```cccߟü|||bbbsssttt;a9tRNS@fIDAT8˵0 PJ -twVԱ`bEN=LmiJ\ hIHЏ9  >dd $=OM/%xP(ߦފuf7qQLזU? . ?{_IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/record.png000066400000000000000000000005011411575327000236500ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB9PLTEGpL_________^^^___^^^___]]]___^^^aaa___^^^_______________hvZtRNS y![tsCIDAT8͒I0 J'j/Fg]r.,/ަu0WX4qCYp,lןG߻51MXM(XMX lQ+y(kG 9\Ȇ|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/red.png000066400000000000000000000007661411575327000231610ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLذդ㧧̩躺`btRNSG`@)+ Ȕ_IDAT8˭0 E"?N }>iΤ7TQ )|_ @4P9 haB(#h Lc$Cc8eNwZPHʸ7:FsV@>~Lh½ :q~=`@Xgv]3,d9[Șdz(uE֭EڹV7g۞f'{5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/redo.png000066400000000000000000000005571411575327000233360ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBNPLTEGpL_________```^^^lll_______________bbbhhhccc______^^^___^^^ttt^^^___fffaaa___]tRNS+ x"lm#IDAT8˵0 CSGL-Z<ᷪmbYvZG#ó,n!so痮ZEβCA꫉Qe:V-ݙ.`=d$m/(-j3d/wc`+sρoaÕWIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/refresh.png000066400000000000000000000007231411575327000240360ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBlPLTEGpL^^^RRR^^^___^^^]]]______``````______^^^]]]___aaa____________^^^___```^^^```___```aaa^^^_________^^^___^^^["tRNSy[f'! ji?3>~tIDAT8͒ E+vwm )qS{9I?!Tvr0Vt" ]/"n.VGX$JiKF*Z9jpeF!Ψh=$}n/3@'KT=#`MZotyn$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/remove.png000066400000000000000000000002361411575327000236740ustar00rootroot00000000000000PNG  IHDR IgAMA asRGB pHYs+PLTEGpL___>="tRNS@fIDATc` :A FoIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/rename.png000066400000000000000000000003231411575327000236430ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```^^^___<{htRNSO08XIDAT(c` P* )@Q" @S`8 BQ0#+``6qqEV@FVbDڀ /[kn{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/repeat.png000066400000000000000000000003221411575327000236530ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+NaIDATmб @P0G̓i"_$?HFDdBYeݡbԽ\z@L@@#1 {=b%шz46C5BIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/replace.png000066400000000000000000000006241411575327000240130ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpL^^^^^^UUU___```___^^^aaa]]]______]]]mmm]]]`````````aaa____________]]]_________```w˄tRNS +xWG)ܡݢ@*{ 梔IDAT8ݓ EewĚ&>>`EI$*+Ƣ:  eQHay vC`wwls _oNp]y@ ZksЯEm MP ZF,+ϧe= u]P&K̨Ħ#6_x%}7̛IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/resize.png000066400000000000000000000003511411575327000236760ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa```aaa``` > tRNS\, lIDAT(ϭ 0 -lP0 *q@<ݿ-lȠOUPTFf;+JJȤ ,zGqQ,P vHq0 e\ x9IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/restart.png000066400000000000000000000007111411575327000240610ustar00rootroot00000000000000PNG  IHDR D pHYs+cPLTEGpL``````______```]]]___`````````___aaa_________`````````jjjfffsssLAtRNS)cJ>?K)itIDAT8˭0 7qq;6/B?z9-BQmuFmssTfr? =0$C'OIO6c`<g@hbP;@ƸhLJ=08`sTЬaF k:fȌt[&8=]x`aj\ IO87.,*:$X7InG7n;A1zx~ex~c?/NYKxIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/revert.png000066400000000000000000000004311411575327000237030ustar00rootroot00000000000000PNG  IHDR D pHYs+BPLTEGpLddd```___aaa󉉉װ_$)tRNS@fpIDAT8͒@0D2w4A4Lv'T ? | .ls*NM`t,zvE=-af֤p p"\a .8 0՞9chIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/rewind.png000066400000000000000000000003131411575327000236630ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NRIDATӍ 0 OAWdi1263G(PBG86eoQy,MUS>|[&exg|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/right.png000066400000000000000000000003411411575327000235110ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB pHYs+PLTEGpL\\\```^^^___ _btRNSKIDAT(K QT V@go젎"St&A@q; S ༘C 5{-lIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/rotate-left.png000066400000000000000000000002731411575327000246260ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NBIDATc` 8@i( Ɛ1 UP* XRK3j0` 6:` A$Rey3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/rotate-right.png000066400000000000000000000002731411575327000250110ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NBIDATc` 0L0c XR &K0`vc 1p2 2HgUTVIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/rotate.png000066400000000000000000000005461411575327000237010ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpL___``````ccc```___``````___```___```aaa``````___UUU```___``````mmm___```xVStRNS,V[2Z3qYu*IDAT8͒I! D X-2Tad. _8d@3n?lit&ӯ"W?j$Fz!z7JDekUqWsDOTX`|$1Jű}"|WaU.L$ejP2Fd XX́O_`jKHؕmR"u6/ۗ#TV 6-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/saturation.png000066400000000000000000000006761411575327000246000ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL______```]]]___```___aaa`````````^^^```______```^^^`````````___```___bbbaaaeeemmm```sssnnndddyyy,stRNS)@G `Lݢȍ%]^&-IDAT8˭ ЖBZ?PZDIy'3050/pp^LQ׶Q׍*׎]7F pN|!7!l% IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/save-as.png000066400000000000000000000003041411575327000237320ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL___.tRNS@fQIDATc`\`#4tժPVZ fTZ̈[j+jUWBq[P`\ BO1Mr`K#)%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/save.png000066400000000000000000000003061411575327000233330ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___.tRNS@fKIDATc`\`#4tժPVZ fTZ̈[j+jUWBq[PЂS v;],(#aIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/scanner.png000066400000000000000000000003761411575327000240350ustar00rootroot00000000000000PNG  IHDR Tg pHYs+-PLTEGpL___```aaaaaa`````````___```aaa```aaa```pS tRNSZW*Y޻_^IDAT(c` ( (FU &x W6Uݻ&޽{À.r޽À&pMUd-n{ lL銔iIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/science.png000066400000000000000000000005621411575327000240120ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL___aaa```___aaaaaa]]]___```````````````___```___```ppp +tRNSG*)@ݢ IDAT8͓ EٚK_jQ(Pz<(3W.`^JoN¥WuvABkBg-QXm0 ` ςw 0lO@CVxńZ.>F\C+藺Z#8[e~02ۃi$"o/_&՘GIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/screen.png000066400000000000000000000002561411575327000236600ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````___@tRNS+N7IDAT(c` QV%$@HPB HB E4J ęw0/qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/script.png000066400000000000000000000006531411575327000237060ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpLŽ___vvvݵ```ttt۽䳳߰瓓𿿿ܫؘiiirrr~~~wwwxxxcccdddsssfffztRNS@fIDAT8œ@ S.kz /#D#k| @I>׈W@dU"ZV:`D,ȖT x(:d1(5ހ)jM."$7<ȅ˯̽h3Gڜ$}0|]zn'Y?+cEsEmIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/security.png000066400000000000000000000005311411575327000242440ustar00rootroot00000000000000PNG  IHDR D pHYs+EPLTEGpLaaafff````````````aaa`````````````````````ccc```___```mtRNSd*U%$%IDAT8˵K CGAMvâ/@Kȷjwم2ERxrAۊ.;_ǜq`b`t1MUP(  "5+P>{ǖ%{ŞJB3>fuņ{Rq ^&X=3`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/select-all.png000066400000000000000000000003611411575327000244230ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL`````````___^^^"tRNSO08sIDAT(ϭѽ 4r. Vp@AA .!1_-,s] = fqJb >`49e6lݽ9VJF3AiIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/select.png000066400000000000000000000003061411575327000236540ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___```^^^ꔀtRNS+NOIDAT(c`  \\@A.J 9ƴNآQ rA  9q IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/server.png000066400000000000000000000002311411575327000237000ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@f!IDATc`0#P @eN Bf$֡IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/share.png000066400000000000000000000004131411575327000234760ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpL``````^^^UUU```______`````````i tRNSQ nїŒzIDAT(c`  *WZU,`X,X, XgB`I]G G¬s: 䞩 >{` YGC b8 X=} B@ƈˆJyZQZ/IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/shortcut.png000066400000000000000000000010231411575327000242450ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLbbbaaa```綶dddiiiggg҄}}}uuuxxxjjj܎kkkȳɮpppsss𔔔ښ{{{떖ߑ6tRNS@fIDAT8@PŕE){?LԄY^@&aAM r+ Sb`@Id1氘"5{"TPdA0`r=ow am1|pKƞMpAj8`XA!Fe( 31+ ^ )&+ЩU7Koj2I6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/shuffle.png000066400000000000000000000004411411575327000240310ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL```[[[`````````]]]`````````aaa```^^^```[-g tRNSz%IDAT(c` 0 \D+.Vr[ w@"p"p*p.#wZ|7lνkl PÀF^Fq:S a`h0Z4a8н@A//(FbH| IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/sort-ascent.png000066400000000000000000000002531411575327000246400ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+N:IDATc`L+(fZA']lV0Z&kCjq  !k IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/sort-descent.png000066400000000000000000000002561411575327000250130ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+N=IDATc`4(m%!Z5d*"UV00Zà. t'!+| IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/spell-check.png000066400000000000000000000013031411575327000245650ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL___``````aaa````````````bbbaaa```___```aaa``````fffaaa`````````aaa```aaa````````````aaa```___`````````````````````___aaa^^^```___aaa``````fff___aaa```ZZZaaa^^^``````___```````````````````````````ccc``````bbb___aaa```aaa```````````````___```[[[```___aaaaaa``````?u|ZtRNS#gH GEzگѶZrv褆_QsTި:"(Seu/;?WXx]Nq\3i IDAT8gOA;=@@;b]TJ ,A3$o*vfˆڏ~ov,G G-*_dg7/cU C}; qG( Ӏ)}Fzz.P,&2 ,¬5@ 7c`Kꙁql=v6&alD}N]vpM'sA0M^=D[w_oI/DIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/star.png000066400000000000000000000016011411575327000233450ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBnPLTEGpL333^^^_________^^^______[[[^^^___]]]]]]^^^\\\]]]^^^^^^^^^___]]]_________aaa______]]]```^^^@@@[[[```^^^______bbb____________^^^___^^^```______\\\^^^^^^^^^^^^______bbb^^^\\\^^^\\\^^^^^^^^^___^^^^^^___^^^]]]\\\^^^^^^___]]]^^^^^^]]]```^^^^^^^^^^^^]]]^^^```_________^^^___^^^___jjjwwwaaa⯯~~~ƀtttΨxo\tRNS.^R7'JI{Cc*VhP( ў}xP눻n/6F$r,WU[|I(1^wvCdYzv!,Ŕo;py m+'GN(%XR1D\#{d"g ||g!x* Q\s1@(s ~*pIUξ.*FXԇAZd,>$U6І9TJ$`@'4JR{F?n="tRNS@fIDATc`0KGf۽IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/sum.png000066400000000000000000000011221411575327000231760ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL^^^```ccc``````````````````fff`````````]]]UUU```aaaaaaaaa```aaa```[[[```bbbfff```bbb`````````bbb___``````fff`````````ddd___``````^^^aaaccc``````___```___```___aaa``````````````````aaa```aaaaaaaaa```___ZZZ``````}HtRNS$(עжyDl< /='N%HVz&+bYݽeOWUzIDAT8˭@ +E Kvzao2JҟTet/ !R> >tK&'Te2ADI4(!"" *Hs=9D#B Fu_H d# AcYU"3+km p ?A6Ñ}%˼wړq\@Q_-J0.sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/sun.png000066400000000000000000000006441411575327000232070ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB`PLTEGpL___XXXYYY```^^^^^^_________\\\^^^___\\\^^^\\\______```[[[[[[^^^\\\___eeetttddd״m tRNS /GPHPGHQQOҥdIDAT8˽ 75noet9سGo K@|t${ '"2)3ʼnY b2rֺ6=rDMU9ڱ?-( 4Hw}E`񊕏1FݭnVǥ"qNL/~f1r|+jIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/system.png000066400000000000000000000002561411575327000237250ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````___,AtRNS+N7IDAT(c` \PVc$0*ࢄ (lFj$!"d%BEAYIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/table.png000066400000000000000000000002271411575327000234660ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@fIDATc`\`аD2v hKQ\IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/tablet.png000066400000000000000000000004141411575327000236500ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpL```{{{gggddd!ϡtRNS@fuIDAT(c` QV%$@몐$d@;4Ȑ/!7ٿEE@(B`! [G ! 10;AT * /@0ԑ#HY.IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/tag.png000066400000000000000000000003701411575327000231510ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```[[[````````` btRNSm&{IDAT(ύ; D@,O` <Uيty$YY@"{= dᖽ-@02_#zxCU'LX0FSA_BW16lP_ r9Gs:IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/terminal.png000066400000000000000000000002431411575327000242100ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```tRNS@f0IDATc`\`qQ8fd[䭡YX$7 |FtIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-baseline.png000066400000000000000000000012051411575327000251400ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```^^^`````````___``````aaa[[[``````UUU```````````````___```aaaaaa___aaaaaaaaadddaaa___aaa^^^`````````UUU___```aaa```^^^```___aaa````````````mmm```UUU```jjj````````````bbb___dddaaaccc```````````````fff___```fff```````````````岗+MtRNSܜ~2?"I8 :Q\U` J0Xg$ZomfR M IDAT8ݒR0ĿB--Xz@ATN/_v@d3ɗ Q2DzFQ_dMdGSLȣ|x&2/SW_;Xr E%Yo(W(>mPjYх!=b^?)8 pÒIfh,IPLlbY2*vqIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-bigger.png000066400000000000000000000015421411575327000246210ustar00rootroot00000000000000PNG  IHDR D pHYs+YPLTEGpL___``````aaa``````aaa```[[[``````aaafff___```mmm```aaa]]]````````````___```___`````````^^^aaaUUU``````^^^```______``````aaa```___```fff______```___```___```aaa``````aaa___```aaa```aaa___ZZZUUU___``````ddd``````___``````ddd``````aaa``````^^^aaafff^^^``````bbb```aaa___``````aaafff```ccc```aaa``````___^^^``````______``````^^^```aaa``````1nrtRNSDlHa  0}.u>㺽L{#RVk8\3dSvZbQ&'Mqs%ȱ,@^9ncgҀP1IDAT8ݐUs@FH"-ZBa;';D?MӼ.=0"(Fzs 0L wf͏<=X'?K8S0.&aڟ2 A1npK͵AXJ-3/oKXI6ѵ/Baش' N@DMva,_x#`+1cB< VSq! ,Bo/.(JfV޹R6aY/%6(N&!uzlm$QwU`oZE#*?yUڊ\\IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-bold.png000066400000000000000000000011551411575327000243020ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```aaaUUU```UUU``````aaafff^^^````````````UUUaaa````````````___aaa```___aaa``````ZZZ___fffaaa`````````````````````jjjddd______aaa_________``````___```___```ccc```mmm```___aaa``````___`````````^^^```aaa```aaa```^^^```KtRNST L Q@JƜCYHM VlFuK$NI:1IDAT8ݒ0C]Ji3;aגɘSqjbԛjo`Z2G>ˀ HvkT#f@/̾IМWBA}} ;.$JtޡjSQE#S*<aNU-dE8#33C{5Qk!B2_}IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-bottom.png000066400000000000000000000012201411575327000246570ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```^^^`````````___``````aaa[[[``````UUU```````````````___```aaaaaa___aaaaaaaaadddaaa___aaa^^^````````````UUUmmm___```aaa```^^^```___aaa````````````UUU```jjj````````````bbb___`````````ddd```aaaccc```fff___```fff```````````````ozMtRNSܜ~̉2?"I8 :Q\U` J0XZog$mfR M$3IDAT8ݓYS@'! r*! šr)*BcPI1;_LJ-L|)"} M."\ sRrq-$pkl$*  p]="tRNS@fIDATc`@ASu ][3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-fill.png000066400000000000000000000002031411575327000243010ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`@n;$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-italic.png000066400000000000000000000012111411575327000246200ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```aaaaaa``````aaaaaaaaa`````````aaa___fff```___^^^]]]```^^^___```jjj``````ccc```^^^`````````___aaaaaa^^^______```___```UUU````````````______aaa___```bbb```___aaa`````````mmm```aaa``````bbbaaa`````````^^^```^^^aaa```UUU`````````___```TQtRNS2qlD0gS.!Z9 ($7>b ~i8 멢W`3gd#.eN6ܿ/0|WZSvO mDBj>/!pT }[o-/G(Op& <õBaJ- wH)(~mp*i8 V-qp v$oQhuM(?n-)՟PIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-left.png000066400000000000000000000002061411575327000243100ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`@A[u% O2UIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-lower.png000066400000000000000000000016031411575327000245100ustar00rootroot00000000000000PNG  IHDR D pHYs+_PLTEGpL``````aaa``````aaa````````````___``````___```___```aaabbb``````aaa```UUU```aaa``````fff```^^^``````]]]```^^^___`````````ZZZ```UUUaaammm___bbbUUUddd``````]]]___````````````aaa]]]aaaaaa]]]```````````````fff```aaa``````````````````aaa______``````aaaaaa```aaa```````````````^^^``````aaaaaaaaa``````___fff___```___```fff`````````aaa______ccc```ttRNSD=lkRf\' BIHSM p)G 7!uPx aU8O@9}rLWnb$EPJIDAT8ՒUw@h(*P\K]: mOxnCfvYa/&˲S"e1F(b ?j&`UXE ED9KQ/,E7 (W|Wp7CӀvʢ`Y-k@`uځ8}ډ4PyMIrq4 ?=ΎMnZ;5'@gXrm?="tRNS@fIDATc`@X dIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-smaller.png000066400000000000000000000015061411575327000250210ustar00rootroot00000000000000PNG  IHDR D pHYs+DPLTEGpLaaa___```aaa``````aaa``````___```ddd```UUUaaa___fff[[[aaa`````````___ccc````````````bbb___fff`````````______aaaddd````````````UUU___```^^^aaa`````````aaa]]]^^^fffUUU`````````aaa```````````````___```ccc``````^^^______``````bbb```aaa^^^___```aaa```jjj````````````````````````aaa`````````aaa______bbbaaa___^^^`````````#ktRNSDlb~ R[$/Hv0= QWzM2 9ȏGeu'a&L 8pt-^c iA·\lT1IDAT8ݒrAENB=9]jTs*o=3J%v{S=`E4VE<8bXnV}ɩ,7| N=+VR^) h!&WP p)B%<^nt~s\:xk6!Ňg~̙ёUG5wD7S"*# E½fsNi?Mס|IDAT8R1l-(PP0fdws3IΆk~1kR 4'BtIY$:g"0Ya40{%X #CwתuLvy@-i 1\A tlGl>xͥvPt󭋸4_2 !xa:mH>y~9!Iz FR)@-M'[@> QIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-super.png000066400000000000000000000013741411575327000245230ustar00rootroot00000000000000PNG  IHDR D pHYs+)PLTEGpL``````aaa```[[[````````````___^^^``````````````````````````````bbbaaa```]]]``````UUU````````````^^^aaa___UUUaaa```````````````fffaaa___^^^```aaa```````````````aaa___```aaa```aaa```aaa```\\\`````````aaaaaaaaa___aaa]]]aaa```___ddd```___``````bbb``````___bbb```___```___aaa```aaa`````````UM btRNSeB(`4\!X z89y>:xk6Ňϥg~̙ёUG5wD7*S"#E fsNi?MnD IDAT8V1YeRǽPw)4t9d{s9/2C'A4NZV5WxyC:<׶( S^ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-top.png000066400000000000000000000012201411575327000241550ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```^^^`````````___``````aaa[[[``````UUU```````````````___```aaaaaaaaa___aaaaaadddaaa___aaa^^^````````````UUUmmm___```aaa```^^^```___aaa````````````UUU```jjj````````````bbb___`````````ddd```aaaccc```fff___```fff```````````````<MtRNSܜ~̉2?"I8 :Q\U` J0XZog$mfR M/IDAT8ݒYS@'$Bx x+r;P'^TZ(/_0I@S?bS8w%P9TWY>K`${ 8H9π(nX[qD` @x}dV[Uf:Gj5 Qaq'!mO,k,ESk%E{4޴6)IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-underline.png000066400000000000000000000012461411575327000253500ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLaaa```````````````aaaaaafff`````````^^^```aaaaaaZZZaaa```^^^```___]]]``````___``````___```___```fffUUU```aaa``````ccc[[[```````````````___``````]]]______``````^^^``````aaa```___``````___``````UUUaaa___mmm```___```^^^```aaa```aaa___]]]```aaaaaa``` _UtRNSlD=q\&v fk+ a$HM)3{.8֒NCGPE9ty!BIDAT8͓N1F *   _N"aI^ݴ_Tay v>2 zVk\hg{c Bh+GJ$IP)|v!B^3&DBD|5>/6a N<مu{,/+9wsZR-CrܛП[1fu$@ =΅IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text-upper.png000066400000000000000000000015721411575327000245200ustar00rootroot00000000000000PNG  IHDR D pHYs+YPLTEGpL`````````[[[```aaaaaa`````````___`````````______```````````````^^^```______```UUU```aaa``````aaa``````]]]```````````````fffaaaUUU``````___aaa```aaa```___UUUfff_________^^^aaaaaa``````aaa`````````ZZZfff___```___ddd````````````aaa`````````aaa___aaa`````````^^^``````bbb``````aaa```___```aaa`````````aaaaaaaaa```\\\``````aaaaaa```^^^```HV/rtRNSlDez>85k\B` ( uaL {#V9y:xX3漉0dSH64Z~̙UwG7&cZIIDAT8ՑrAEX !r!B9U[swMjX,70)@+wHJCد}S{Jk*6[S"vkP#vcH*`]ۆDaY`0IP)+p*>UixT]83*9ܠç d 5+3#8 ߍPHV3Md}dzL`j~٭.T]l%5^1sBۡK{yG-PaX 5/iڔx^{)3f~9fQdIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/text.png000066400000000000000000000002351411575327000233620ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL___GQtRNS@f%IDATc`\`# HfDZ1 q30|vXSIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/tools.png000066400000000000000000000004671411575327000235450ustar00rootroot00000000000000PNG  IHDR Tg pHYs+-PLTEGpL````````````UUUaaa``````bbb`````````aaa```5tRNS /LIDAT(c` L)6{2uݻw lh )`( AhL@Z#i*azPwO޽{K$ Wh RliD6!G Qp@( @ZPL!Z2 0aK`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/top.png000066400000000000000000000002631411575327000232010ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___tRNS+NBIDATc`L 0:@l %PFJU V(Z (kժP%0E\  IGIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/town.png000066400000000000000000000003521411575327000233650ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````^^^``````\7tRNS}oo [iIDAT(c` P* $"RP4 ,dyLHJ 恕A JXbPD#@ذ 5SS|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/train.png000066400000000000000000000006441411575327000235170ustar00rootroot00000000000000PNG  IHDR D pHYs+]PLTEGpL``````______`````````___III```]]]___]]]```UUU___``````UUU___```aaa```___bbb\\\``````___```D@tRNSؙNs(  *//jEIDAT8˽ ūjmm"`4k\GIcyo,`W{K =et:Gjk}€Z/9FD#/fX\o;tg+tgly+ZHrkcLn0askS~5sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/transparency.png000066400000000000000000000002101411575327000251000ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc`C03MP #mIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/trash.png000066400000000000000000000002761411575327000235240ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLaaa``````````````` ֲtRNS*V:IDAT(c` 0*AX@$ j$B OC 0H/a @yx4ԉW VuIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/undo.png000066400000000000000000000005501411575327000233430ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBNPLTEGpL_________```^^^lll_______________bbbhhhccc______^^^___^^^ttt^^^___fffaaa___]tRNS+ x"lm#IDAT8˭K D/*BfQ!8p8_u\-̮h@1p†ܪvPO&*(0Z[FJ$O3e` HɚBP'~>:[VA`&/>ocCIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/unindent.png000066400000000000000000000002631411575327000242230ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````___ZtRNS+N?IDATc` pZjC&Q?@08fqQU;w~s`Z+07_G80fh~Fs_I?,IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/vector.png000066400000000000000000000004211411575327000236750ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB3PLTEGpLccc```ooo___ރƫ߿A4tRNS@foIDAT8˭K D) -??$DW:U$^Zf:)7z6`<Z<&IDZE9PI2("i>YnsA^aX긭ejetRIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/video.png000066400000000000000000000003211411575327000235000ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL```RRR]]]___^^^___[otRNSrׅ?PXHIDAT(c` P l0DEX &]dX!pu $3 ̰ `h!l` BpMIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/view-detail.png000066400000000000000000000002061411575327000246060ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc` `e$m?}IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/view-icon.png000066400000000000000000000002031411575327000242710ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`  ^8W@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/view-normal.png000066400000000000000000000003251411575327000246360ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___tRNS@f_IDAT(c` \PVc$@2"B  J "l(P , *   k0Z a8sާ="tRNS@f!IDATc`8& ^49jIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/volume.png000066400000000000000000000007331411575327000237100ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpL__________________XXX_________eee]]]^^^___aaa```___^^^RRR___aaa^^^_________```_________^^^```^^^aaa```_________```______```___,tRNScWۀ  )>J؊,5/F?K IDAT8˭0fo9uȏ%L˞mGP(_> />̶xxݐ6 qd5) o)E`Z|P JcL,N0RG Gp?Y2kb[e]̵FCǞ^3Wg[/@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/vpn.png000066400000000000000000000005001411575327000231740ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBTPLTEGpL\\\^^^]]]^^^^^^^^^^^^___^^^^^^^^^^^^\\\^^^___^^^\\\```^^^[[[YYYUUU^^^______ztRNS@?ࠞߝxw[Zx/dIDAT8c`*`eab`dũ@T p Iq13sIP/%) &(ŋC;ơE<R(`TNt!Ⱦ A徠<;cIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/walk.png000066400000000000000000000015561411575327000233430ustar00rootroot00000000000000PNG  IHDR D pHYs+_PLTEGpL```___```III```___``````___```UUU___```UUU___```]]]```]]]```^^^```___]]]```@@@```___`````````______]]][[[XXX``````___```]]]_________\\\``````^^^___]]][[[]]]```___fff___^^^^^^___```[[[``````aaaUUU___]]]^^^```___```ZZZ___```___```^^^____________LLL```]]]___```___UUU```333___``````___^^^___```___\\\``````^^^```___```aaa______```___aaa``````-ttRNS0 WTgc5%V.q{[ p POІEߧ9xH#-2Or5IDAT8˝r0E$b;NO7;f}=xw%sոҨ (^<(& P"!WԨ.uцd/x8,cÉsKĿw1DE4o 8-L…uBn {-tkw{|}fӱYw3-$$f)G NzBoN{Z*PL6wa.K$ vļcXͲ=`EؾRpɟr]ϷǷw .@\ {#A8bY,  n!-4TDPP4!6pTǎdۊ` ^31dl7c-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/window.png000066400000000000000000000002311411575327000237010ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```aUUivtRNS@f&IDATc``ʈZ U*00|َfjIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/wizard.png000066400000000000000000000004561411575327000237030ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpL```^^^]]]``````aaa```aaaaaa___```aaa```___```|%jtRNSmgik_9UIDAT(c` +b^{~L@p1F4[߽CU"#w0{'jC4+0 =lGȎ|f Dh)yL $?qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/worship.png000066400000000000000000000003621411575327000240720ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa______UUU]]]aaa``` tRNS?N BpfiIDAT(c` p4h/@ &TbGEG"p>TUDhP1M@$ %HAm,P2P!@R?IduUIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/wrap.png000066400000000000000000000004231411575327000233460ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpL`````````fffaaa```___aaa```bbb___```\\\``` tRNSԇ ?ZvVnIDAT(c` K*o@wG: "̚M-6M@P  p+ 9L_A ytFtÐ @;Qޯ&eN{}nu\Qf'8\?Iҫh+hwF>~pB.3]uMqiIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/zoom-normal.png000066400000000000000000000007671411575327000246620ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBoPLTEGpL____________@@@______^^^___```UUU___^^^___bbbfff]]]^^^^^^]]]______```aaa___^^^____________aaa______```ccc___z2$tRNS#W ^" lm]87ԅ*{畀IDAT8˵۶ EC CV{W?c,fb|eGQU9BvRW-xZ)Tr\W N8fSqgWy ^ ~^>Pa ?!Z&)Li͇ۜ9jsDZoYDOP4&lB`$eJ}0-]艬';uVc[߆N?kbCY ۶2sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/zoom-out.png000066400000000000000000000007021411575327000241660ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB`PLTEGpL___aaa______________________________bbb```ccclll___^^^^^^_________```___^^^______bbb^^^fff___[#tRNS#W ^" lm]87ԅ{*=#IDAT8˵ EE)o]e1Җ4indvB~l&J$K\1ϕ^1Wr@ǣЗ,{\,DiR`hxlRp**B:HDJ*[mP!!"Xd[hPQeMֲL7'=^8#)cTꃙ3'\/~mmX_3̵G,vX`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas-mono/32/zoom-width.png000066400000000000000000000011331411575327000244750ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL_________^^^___fffddd]]]______```___^^^___@@@___^^^^^^```___^^^aaaUUU___```aaa___```___```_________hhh```aaa```eee```^^^\\\UUU``````mmmaaaccc______]]]aaa______```6tRNSW #ml*{ ^P"& x+,Ξ7IDAT8˵v0Ea{N}EH"1d'Mucf؊ \̈:_Q0 1 uܮYJ˾FAobm!ג(֎yKҫ^3$0Wt90% ~)Y&x$0qC ozJ>2_2_ SJD[4H$Hj9bLV뫻^X8OxH8ҰƝ9}mbM=\(Bh_^3$PIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/000077500000000000000000000000001411575327000204765ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/gambas/128/000077500000000000000000000000001411575327000210105ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/gambas/128/access.png000066400000000000000000000005421411575327000227600ustar00rootroot00000000000000PNG  IHDR1| pHYs+0PLTEGpLootsqXy tRNS@fIDAThc`  0h4uS#o% ߀oJ`OI5@B 4` 2 (Nf.LE`{@8(Ng&ʳ3LҨG|FrD02 nY)qԀQF 5`Ԁag2=j0j6`tLuԀQF` 1- IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/agenda.png000066400000000000000000000005041411575327000227340ustar00rootroot00000000000000PNG  IHDR1| pHYs+$PLTEGpL``````UUUbbbaaa`````````oo```K tRNS /IDATh @@ xL^,C ‚| 1/-b~8)[wq! P`@h/?#$<3=D$+ dK dk ,)(0uZKψ 2LY?p' ;Q@@k*ĐWIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/archive.png000066400000000000000000000002611411575327000231360ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpLuO?jtRNS@f>IDATXױ AtIh($$D(kj j:p>'g)߻|X;1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/audio.png000066400000000000000000000030301411575327000226130ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL_UU__`Ub`_^`_____m__`]__`_`\‹]__^_^c]^_^_`_^____^_`[__```__f__^_`a`_^^^b`_a^_]d`_____]^_`^`^__`_______`]__^_`____a__]___^__`Y`_FntRNS 'ȧq38<0 կgG&Wnr RXHfF{KLQ./-Nv4l]%p;„P)toesS2|!V9=u;OIDATx[gW0ufHCBHh))m(ЖʦN{꧷$pXϯc}Ur>0_ۆOn/ i_$̠wf0*g Iw@"S}9x_^y/Hl+Mŧ#]K V7 j1ڱ9 Ư\ ;FG]]jQ ~7?`% nH8h%.A7){J ؔFm~~8e? ^ly~=3?0^fçt{,V/Kgek]HzEOHKW&km/1Y_{%!n9ir[MI<D_Qܔ(t +gu++^){ -" ' U չ0hPi+\/ 0tw.S1c=Fyh!!Rl`Cr9*d59CAX1UiC`X<*hEW8p'a(zC ,!q , ~g9``߇pOa>J *;g6! gӊ~mRE8G '"}1B_ %6-@؅I1[Ϳ-Ns g}m:rzVli=???tѭU߇>Z} Z"~"B,]~}1A&\Qfl/uZ Us@ mE:WZkc@fh]hD0@x^_<\B2q2=5r)k>N A]t^zU/nm>Ȝ?IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/battery.png000066400000000000000000000002551411575327000231720ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpLo___$tRNS@f:IDATXױ 01̒Y,v9)iW=LRIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/bicycle.png000066400000000000000000000030061411575327000231270ustar00rootroot00000000000000PNG  IHDR pHYs+bPLTEGpL```[[[``````___```mmm```___bbb`````````aaa``````___fffbbb``````___``````___``````___aaa``````aaaaaa```aaaaaa```]]]```_________`````````````````````aaacccaaaUUU````````````aaa___```fff`````````UUU```^^^```aaa___```___```___```\\\```]]]```___``````aaa```___```UUU```_________```dddaaa```````````````___```______aaa___aaa___]]]``````^^^```aaa```PutRNSJ5Ow# 'Z>٨Ey?![F· Yt @Nb&+ns)0xhԋ3vȊ(uKۮ; ѲPFKIDATxgW@!!(5RDŮ(X{2u!$3)s=ǼaCr; (P i-IjQ&~26<'zuܧu$,euLP]`UHqD5d0- @"4#B4/DЦz9&4$Wa[ )ߖfԖ:o}6=;쉜~WSⶸ?A^"q cPƠ<Š/b I71(%A ` JP0(M! r0$PE&ks}&TQ'pw!)p{[+;>dMdNQ_8OT}=).M^9/^\\^(^m6 P|"L?sH>} Э+M`b鶟 .$)44٦x_H  uJ8Ce` Pd|'ߒaź\Q<5aٗΙ&sE@v]Xba$ /l_ؾ}a /l_ؾ}|n/e a~r6?+8 ;vЀ߯{`@?6 oLgT@YP@;71% (9D@Pv}ۏNbq95&q6j y $q$G9Vr<y,X_L|a /l_~~9;`"`yȯ!Ep:jw)PJ^>TjT`!&P`fXMP `~eЯ*`_]W8n~a_T8w?SYQZRO4UAsW(w$Q@cŊ; 3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/bus.png000066400000000000000000000016121411575327000223070ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL```aaa```UUU___``````___```ffffff______```aaa]]]___aaa```aaa````````````______cccccc``````[[[`````````bbb___``````______```^^^``````___```aaa````````````````````````] Uf7tRNSy#+ 3fg![W2$Ҙ0 %>&st sEIDATxgs0 GPtQ?+mZ'X\~ғ`+DD" E@ 0G~[Rcw3ƭ7ʦ?3`fOPi?Dk/U*8?C|D~( s( [(@ @? x$˂iWQXVZJ),[,@FGY6HiU;Uc1@@ z!B/#1zCߒ7mμ-naD@@@@MknR½B_U`;y򗥼.̫ м,td^eȼoBcx)&>>f's̓L\lȁ>qC8@^aP#[ΏӸHlIk?sKP>>n?'18P'58P'((TKIנ|Ap>A{1dU!}y<˯9CD4~t1TvDzWIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/c.png000066400000000000000000000023051411575327000217400ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL11PP44MMYYrr&&,,ڍddpp$$TTffꭹ gg>>88yy33zz??::{{ LL^^jj//vv));;||ýGGAASS__ww<<}}NNZZll~~xxCC==OO喐[[UUaa騺mmJJDD 嗑bbnn!!쵆99 EEWWQQccoo*tRNS@f{IDATxWAp0B=khz{{&̝pޝ}sd1'A$Iw!@\i~tdW338W-3 NN9 tI @2_&w&?Ѐ̐3Fڮ\ӹغ [E:>9" Bڴt*ƨb# OS"}6٣|i*m҂ +k?;iw(V-y ~6s _:?^o?΄M7U|C"dЪ p@  7Նh/aw}{+rZ)].8`H=u+-(NˬRy`mGrQZ鰞_2mz 6PQfWؤG=ze8|:.LkSz5<[P?.*f@/+; t$S}Jqy6¡N[xvUfQz <kWfyFeuO| 0~L\ 6MoIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/calculator.png000066400000000000000000000003151411575327000236460ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL```"' |tRNS@fWIDAThձDA-hA ZM͏.p/%i)?M&PF{ 6`&;@da4+IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/calendar.png000066400000000000000000000006551411575327000232750ustar00rootroot00000000000000PNG  IHDR pHYs+Z*.wzW<`U u0o?>t|aq ґ]IvK6 @8M =~(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/camera.png000066400000000000000000000010771411575327000227530ustar00rootroot00000000000000PNG  IHDR pHYs+TPLTEGpL[ϩtRNS@fIDATxr vU5Ng JZ`;W8v7  dxf^!enrn]}_ݘ+k0R}&qH(+rHhi65@"-@7"% iItBT2++e"@Vi=OP᭱JQ8@PۜE!e!Jx\>e=fs΍38Stvvp.,KDG1e:2] {I^ kڜm#!P?};PVeͤdZ   ȿ=>6*IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/car.png000066400000000000000000000021321411575327000222610ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL``````aaaUUU___fff```___``````]]]```aaa______```___```cccaaaaaa```___aaa```````````````___```ccc[[[```bbb___``````aaa```___````````````___```````````````___fffccc`````````bbbaaabbb```mmm^^^aaa______```aaa``````___`````` : JtRNSW# +!y3[$2Ջ0 ʘtf sЗ%>Ig4I^J_ݟlm3IDATxYW0q({$4-Y I нC9Hv,i4VzJ׾,p8p8b@Q2_L(æCG=zC| (D1 9Ľ=@3F?oÌ)` lOۀFu/!ʚ^2F),'yP|l)\2 3y3RE4;5W5wt\Ƀ!f%YU?Ff%6Ppp \DW  |Ce%NL\:S>& L?._zp `PHTi |1!S/藀zAH~ zASP)PE1>&$H2 1P4VAЭhl˨zk2 i TV*i tWi Kuǀևj2GLDi:mASw*nƤYɛSsIhDs"qHu(u#o,{3#L<˞iK_CVKT:g` TsHT:O tT:oojJ'NkM9DZbC-J]_{y4Z:;]mOui1aVp ʃIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/cdrom.png000066400000000000000000000027541411575327000226320ustar00rootroot00000000000000PNG  IHDR pHYs+DPLTEGpL̾򪪪ɯT0OtRNSR3 Q/rGs&!L՗䒌HS|Ć=wq{ؚP< I'vFMxޅK^k}IDATx[gS1\Ϧ4SLwtlm BٻX&FTVO* 'hFk3pjKj6D^. 3:?MlW8XiTXhaH'eJjLiRҤ ~=[S@[1 d'QHó1b# *HP6 051h?F v ܙԤ E[ġ&yf2ٔCѦ9kP?yc#qfߏל+ "'@/<8@;:nps^Eg"n Y,O9(0X6=俀|OC|)&ߌȷc<%#OJrģOGG3i{MR("Ҡ hdTnL*zܨ$jj1ʼ)..rJ]O~aAeC~iEmG~qIuKyU\TǏ*`?ĕp(+bBu P֧IMz9߂xALoa\WgUE끜ﴅ͇. !f;+nⶸ1Cw^ޟPOqIp0R_Dc7d?=(cVC'Oמ§^r[p9sEmnFžW{WEUoۊ[nqMIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/clock.png000066400000000000000000000037401411575327000226150ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLooϗȃ靝·򲲲͆ 0OtRNS/3 QRrGL&s!Swؚ. Oߕ pydup"̄'f.s_ 0[\d@|$qvO7~j#Ž?%Y^2ۋg< G ן)C~ 'P!/X8l, PY'@܊H=̓:0oeiyb΀J` Z& >X!G+?@2`klQw,K+6&2!W@'udrGAew=Y>Xcg03:RlzSm.kRz8V'`$ {(3O$LCf[J <ϬS@ՕݕlV2t 0X--% S %l+`ڤw h7[V 2i:\͖5 C&MKKG%LK@ْ ;$MZ.e,@b 4-Tb~=Vp `A`P ~WȏRa0?#~4D~| b?>#)/FX 1=!BBOd HI I)=- -oLd ژfnțS 7srBb  %j"LGF`X$#PI,R\%@iz"0zځXЎlhِH@ZHQ.)@\Rn)px?_VߣuX: m ]Li>Y8xK,1L,ƾk(x12 5x#ԇra濬 efC?y3v&oh(_]u_\?zzPhl>66;06YzM{siD*en',Co$W co%yp5=e/S`BB_RL"K.l:s|SM~؍nr+W[ie5ޗ j/YZ;Byyv/ 2?j:[IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/cloud.png000066400000000000000000000021451411575327000226260ustar00rootroot00000000000000PNG  IHDR pHYs+ PLTEGpL=XtRNSg'4Ïl 6NԵW)[xK7X?L%&0dߖO>m/V Ɨ cIDATxWs@F% zTS1!;~/38 _DbɈ|:&_/.^ TiPo(C*c:JZjv5aBFc#GR۹y^5Ka#8;ڍwhuNkn=h{j],5YU1_(-57ugD"H$I M||BIIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/color-picker.png000066400000000000000000000006541411575327000241140ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL``__]tRNS,Mߵ4IDATh 0 p_qg3'H$rłl"K1DB[~B}x uU`PgϾxu/0o9=934o 4`@0nЀ7iL.LI7ee妬f?'Pi+ ;'Z@KH:03 x'yl   P?oPPPPPPPPH$r(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/color.png000066400000000000000000000021711411575327000226350ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLppntt____oo__o]]pUUoppoonn]]__``tooopoo__nnn__oo^^ooooo__^^onnnfoo^^__ooffoqqoo^^ooonnooffoon____``oo]]____ooooqnnn__``ooo__ooooo__oߗrARtRNS[[[6xx 6ww wx7776n#@IDATxiW0Q@ ʢl ;wk?$S9s=}L2@ W9[_\]lm"v{j/=}߿ ^yI7YHƆۤ&"g2/, Ә6?-𬉷&1u ♛5LMqhV07L@M~ z)FoFB~%ÿ_&gi8X"@9iuD!!ggzV-Ei|gt@ ?aTӹ>&r9ѦsE7o^Xˇc O#l)YR.xl!gIH?@wGDxE'P@7@>%t";v!iI>~BwB/:+fP3΀NtX!iFYQiLLR|`?- QjbXf ȴ `A?q@ؙܙtR~nj0)? *L@%5Ff&$ a|&H($R ]}CB^ћz;ƿ_/r#8i`  ||#"   -܂"Ѐ"рnF:BTCfx@P;*zhMo+~ vO A8pA8pA8pA@A w2#l2[RmpIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/cpp.png000066400000000000000000000023431411575327000223020ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL##;;WWcc{{ BB 裉::‡LLXX//~~ ggmm88؝nntt??߀ ..@@ddvvpp55È MMզ**kk66wwHH ``++xxѨss>>yyDD҅PP''hhzz99KK䒘""ꪶiiZ RtRNS@fIDATxgS@`H9؀c C ;{w#I<|1NӐ@ feh> t\җ%Mzu 5u"[=5̀`Xżͬ\dPo9ܰкN7iHO˚[7E#VtWL#:u,z{78OY%T!>'vR 0O$TQ"ofq"=gF­L5+ Leg6_ T_e_ -i52bJmLӤ=-cبi=hqu1ߢO4K`_QF3d4/nkoَxWLxG] #b|a|L,߶"OVD;(dS3#_\dlrofG__{6Hܯş̹}()վh?`4K{:mF?캹ݤz~*wʸ7*;ԟo7+ج~5*+{vS @ +6h_:<IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/css.png000066400000000000000000000042351411575327000223120ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLlnk`4pn˦&vG[\–cȠoq Ϭp ʤJm,r N;ͨtԵmqlyBI@pӴƝxQ>q yΫerҲڿm׺ĚT~!anЮػbOO7|P)jͫ?$P8Qx:Blw4*ZƏZ!ˏf;y/85ă^"znGf/?󑙉w]籴:%UYʹ*dP=f ~R}9]~=@}6K{,] xPK=+Om< =n).qX/ n'Dc3@ F< c,gB= F0=wa},c9=}LX}TO{x2Hl(\r$&RĴʼn618#vΚj*a\ruX2K81mdS$=6_l?Lŋ.RBڋFGs8w514pҼpYJ.]ݿ*4\fJcw-z^[,JQf_LP @(P6X(p*Wm*-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/cut.png000066400000000000000000000053101411575327000223100ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL```ccc```oo````````````aaaaaa```oofffiibbbsspp```aaa```iinnoooooorroommnnoo___bbbaaaoooooooooooooonnooooooUU___nnooooooooooUUoo^^^oooooonnoooooonnoooooommoo______]]][[[___^^^___^^^___XXX```___[[[ttwbbppmmppjjffnnqqoooorrppooooooooppoooooo___PPP```oooonn```ppnnnddoo```nnnnooppnnffooooppoonnl__mm___oooooorreeooppppoojjnnnnccc^^^``````______```UUU]]]```___^^^_________```___```___bbbff```qqpp___nnoonnooooggnnnnooaaapp___ooeemm___aaaooh]]ooweell```oommnnff]]]b``hhgg```aaaaaa```oo```nnfaatbbrbbiikkmmb``jaaggnnnnmbbmaacaahhhhB1tRNSϿoO?/ _'(7 GrQuAs哧 ޿عafj6\-"*P&9\ͮUsh@ IT#$g+P6(DNއ !&~y+px-:w]Cԫe\+`d)GoIDATxZWI]²" HFLY`9f=pg:sNs9i_r,;ս=lx uWUu&m&yRES[Jv(+WeePlA6T-+~4 rK[2jԍ@&o0Mqp64y3V?%30.,EJ嶇!a+=j'hإ$pD؟<*#~lme1DˌXTmqD|g+lc>|pRI@Jg:g\")yHZPiYD%-VTyB!M֊g 9BZJUa ;hv5UǞ/lÎ| ʫN U+%pmc0MI%K/,j6JM "tEc&S&G"r+gʒ9E \vF `~Ͱ?? EHd:a!YD:Aea2 0~@"E iC@aA&&ϊyWoi+^x2G={@[Q @)/l`D,qȺ9bo2>q`,,SXlm&=#,N ѴV,/B8 0 ZA!Վ-*Bd+s>y͈޳"~)ґR, g, g #)s@!5x֔\_h4/¯ yX0ݥj𒒟by9 Sɢ骚=4.sr;LW<jgQMNm?МjJ{wZc}~ν[?o/V)rhkqfgn+_ҥ'ڋF >5,i"h\L.ʖ>!~2m@pIT=) . қDlwZ9mJtĩ\!7^<q8H9>O./^Pl[8rC;^~1e z,qG? c8 BzAWۛ d1 CL Ɵ@1KMQxP !@qŜ=- sP=-1+[T`j6k07d9 tOM*W,PtXR(hג~8Pe (#Iݠ)뙤r"<M$Q󁲐0`T.PT(qu DMeMmp2sILd'Q@K.'rz/]M#TA{|CΆ;Rn6@?k~Jꚥs$,V10Fqna Y-*fJ4qCLV F-bS$nNc6iUqh %W8`a=M0)/ $}?i$Nf,J)dNܓ;+F\o:C? tgf x%Bw B]i7] V:sN: ]-x3JXss]`ُ-μI$c8x4? E%7vnvBco4]sHi3W V~& F]; flm.YY.ϳ xrflUM_d@s8Z PڤM.Q=kIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/database.png000066400000000000000000000035731411575327000232720ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLNvPxOwOwOwOwNwPwJuUFtQwOxOxUUNzOwNwOwOwOw@OwMtQuPxQyNwPxOwOvOwOxOxOuOwOvNxOvOwOwPvOwPxOvOwOwQwOwOwOvOwNxPxOwNvNwOwOvOwPwPwNwPxPwImPxOwNvOwOwOwOwNvNwOwNvoOwonhaZjjlPxdOwVlOxZQzmWQ{[iS|QzZPxXnVPx\Zohkhl[eb\[WhccV`_ibdVnfmPyOxQyYWjR{aVXS}f@<3rOtRNSR3 /QrG!Ls&|qw={ؚPǓ<՗HSٛIvF 'MޅKxJIDATx[[1ZhBU Y{ޕXDDD=!$]\B||H/w/_H#4`lnc9/W՘޻C\Ee&]V: cK8"}OɉN P"Û3'` 9<%x&a7...4a|nme&<StxfemnW9/d/`o;/<;$Ǻ' {U@ (;,rBd)!V07?MhGd !a)bmzH p|msDσl* g`-$r~?pHm|ZgicQǃb-TJUL?8 M"mPCjOﵙX@a3 kO\ /qDNkp"O3)ukoA6vX>L_V3@a^,-'#!&-I_|*B@ʭIh" {OV?(AhRD,1*$hKRA$*J&b0#U"JvgM"8h0NyaVOtO8*`M! CD@l)%&^3E _H ea87 Yvi a˚X됦 45(+` zaKX3h-bBRf+ (T PP^ OB韡@$=K_/)"-R2I\d'fof7ҷ;QfY^^_^Ja9Zjz?(,H?"FI?tK^9{|Oe c\3=CF[*eRQ`ddemJ4-0olvQvZ㤡q>ihi-gN4NÓL ;Aizo36n66o&:06o =zkw|;v\pgNJzt*2Sld*_/vHp3\(ze=Lk>wZxTзU G* &e7o_e7|ݯWWUZ*߱~i?zIK{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/delete.png000066400000000000000000000035241411575327000227640ustar00rootroot00000000000000PNG  IHDR pHYs+}PLTEGpLmmlloooooooooovvooppoooooo``oooottjjooooUUoooonnppnnppppooooooppppooqqqqooooooqqoooonnooqqiipprrppooooooqqoonnooppoossoonnkknnnnooppppoonnnnoooonnooooooooooooooppoonnnnooookkoonnnnoooonnppppmmmmmmppoooommoooorrooppwwoollppnnppooooppoooooooooooooo?~tRNS/! ̙.L ^3rQR =-sSqAwF|)Eʷ5긍,6WKk[c!Uv_EMûqP9z=+֟f?}}}B?*D>+<\X1 WuD!7i;B!i%%Ou':81"?_O#U%d_R[qq pi,6ѿXe9UU\?qUVO[OƔ7ρ7:0z~>HmWщPS>tQʻh1/w6">XPZ *>!'x$_3}#h0=Eȇi>+>!{p_R|H<)q %CZ<9 R>pn{G@3 @L |w0#?&|_B#>%~f|g\ K1j32#6#vlGl|@Ҙ#̂ &( ˭#1̎KܒSK>.9uIm\]c B&AǖhE*k>H%/ߢtB=> RW{'|VR?(VGpr)><),,i ّ;ZljZIϋv҃Kc~p&GkoZ~|oJjP<r ] 8 GD,¾Jj!sle<%2i\\d2H\bEQ̶8=B(fmdzMÓMރ솇H_PxR2ZY{06 aS a0k˟}vf'nl+n?P~Ζ1Cz${%G~Ϧ{ҝ_) ~j$~Cw^]O݂;_vSw.SQ -t~e+[7 ^jIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/desktop.png000066400000000000000000000003251411575327000231670ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL```optRNS@f_IDAThٻ 0 EѬ &Ҡ(|Js8],[iM~d}f2c03o >-X,gn\łIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/development.png000066400000000000000000000007141411575327000240420ustar00rootroot00000000000000PNG  IHDR1| pHYs+'PLTEGpL```bbb___``````aaa___`````````oo` tRNSNMp?5IDAThֽ @ `~h؃h s!! ;X˳^&ԪH-` `\%G(kP6 \;o[;\;osD?Zk7nS0V7(B`m3@ fJj$Alb*ֺ!>I{?bo QFeBuFpAApICpQeSS60`s|{'Cc @_o5: @XY%"p-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/directory.png000066400000000000000000000002421411575327000235200ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpLo߸MUtRNS@f2IDATX֡ @@dI`$oFh^YuD!IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/download.png000066400000000000000000000021461411575327000233300ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLbbb```^^^fff```p``````aaafffaaaddd______```bbb___`````````UUU]]]aaaaaa``````___```aaa`````````````````````___bbb^^^```aaaaaa```[[[___`````````]]]___aaa______````````````aaa___aaa`````````___```___fff```aaa``````___```ccc``````o=߽OtRNS'QmgYwvxh4&7ZOɀ[WǨ Xl$^E`:IDATxr0EFI*$v=&N&q'G ,04,YdLdԬVӋ*|ou6E{E /jƗb9%GƯt}C%PN_uOwOlw7 sIλ*(@:cPԵ>S/(tI5K3u<M\J>QK|DK+m JL`Fbs v^XVtr+艵Sj-u2PyК|޼ kPH~ۄ$Qq"2zT5rտ+&%0 O ۙl;DS7S's\7 Wh 4q̀@Wȇ|!BDoF1}CBޒ7m9hvp0@ޑ tRWkʁG9J+CK5Z%o-Y컽= d #6`߀#x&2Z`ȈfЮHL"̈LFĈ\Z X~?a5@  H    Hw,Y =ZWM_IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/drink.png000066400000000000000000000010571411575327000226300ustar00rootroot00000000000000PNG  IHDR pHYs+TPLTEGpL``````bbb```````````````___aaa___```___dddbbbaaa`````````aaa```___^^^aaa```]ԉtRNSx 0STf/gABϏZIDATxW0a ߓ%@?:Sh4: @> DF ?@~&T w#og P@^#JyJ2ȫu@b1w;f~+i_,0 E~-pg Y~U"7 B GAX V#OB?G@@@@@@@ zƣuףqT{{vj777={A_-c?g GT/V'd9 Lp3YZ[:Zn}F1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/earth.png000066400000000000000000000057021411575327000226250ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL/gtco$jPmbo.gD|`/f.hG~?wa.fu.f3kBz/gt[\n,f5lmonoUvQWf9q6n.goZ=uZfoF~o-fo;s]N_nn.f1m0ddj-f]+j]nooR.g,g6niomoiC|ppb.eoE}dIG.fo.g.g.e2i.fojoK/f.d*go.]oJnp.fnI.e-eooUoop1k/gVoo.e/f/g-apd`-hdapo@yK.f/go0f/f/hln/go/fAxnE|,d.foE~/fMo@x1gpk0f0fo1g8oo0flpk/goC{bne_K4lQmY@y7pLRjU;s>va:rl0h1ihNT[\ڌtRNS /'qBoPmLGEE ջW8lنZ&s s{w\ߕRTlHH<~3!HAMsm *WR:B.گ&/* ˍ"/Nfԗ5ReS"===)7kǟPL!~ʹ:S!9ppuu47kWV zIDATxZg@G^q ii"MwQQ5&ƒh{O؍%$ؙmefoͯ~ݼٙ7o,EСC:tСC8?oZWo2䕦і߰4|X5%,}Ɣ*G 5,Ym vY~l5LjfEMb ƙu ~ƚ[fVX`d zߧ-ct(b&H37щ1^n 0W4U'ioӎ-s_U F#غbո`OߚiE1{2T!56$ߣf1Z. Kd0 pB\d9Kon"2ゑ%< 8HwO] (AC,I6:(7/緳d"`qHIg~]b8. 4w^sf:vA^4<P{l:f ѐ XCw0_#o l5]!dhXױ̢;Xp>ZG>/hWbdhO`~BaR()h3bw߁a&ךO8rO89>p5n8{ >˛E$ʡ T>~ S|xk[2nN>RPv %Wct)0,ei&YlAC+ q:yeZ>AӒ9ViQ\NpD%^Ln{9,V9G1w9vm]+kZc1mTAء?M8ʚ}a`%zLl,]}DDA~ޘ[m'ҫc;u{PV6R$tRNS@fKIDAThԽm0Ea*}$ @ ٿ`YwHu}8~N\udp}&| A@b ( " 8  \gK,6K@)h` &l4ln c5Xϳ`@ %@&P.`/8zcL@ǫA@PtA0t $_x H`d <{ \LIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-cool.png000066400000000000000000000036571411575327000235740ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿```ξ bb^ed\{wLba_!jhXed] wtO:49qoTfe[7)aa`.kjXjiXwsO@ȸǸroR ξfe\&"}F}yK'ĵpnThgZ6,(ba^yuNxuNcc^ͼͽ 'cc];49&7"}FŶ-|xKgfZuA/%OtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'2IDATx[{GdI㎍{wc0TVUr#1n7\C ƎdI77{{/ޏyOWvgggRH!J?WӚSng_ xJ+z.+&HuyF`LwH8PP?cY)cJ>SW1KIBhu'0\Jݺl^\K[da:y^?Cٙ]; vw6/bj!%[ &̍}hgw+lZ kEjֳ@L[66?2|:/6=M3sퟘmn?Pz hِPiet =e=~ΦͼehA]' }gN(oԿ$R/|~-vܯWSq=5ƮvˎB 7\h!,IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-crying.png000066400000000000000000000037131411575327000241240ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿```bb^ɹ9:sqR{IspRed\fe[ @qoT.aa` roRǸ7)aa_ôfe\&"ba^}F}yKhgZ'6ĵpnT,(yuNxuNͼcc^ͽwtO |xK'cc]@6п Ͼ 5&."}F-ŶgfZ7omT{wK2 2 omU++'`_OtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'?IDATx[WSGՈKE}ߑQVm$$".jj?F{$>wsz8o2̝{ܹC9 S`qOCz{:S ʐ3AAUnkETV~"ʓ:Z'<}->h#H#|7H:0 'H  O_G>.R7ŗ"E /w#eߔyY6  p2DYaW( 2]Fh[5YT\H AWo9 Mp_"0NSo{:J80LL;vr*a8݉afG&L1Q#NQψMM EEYXQ'nMƀ6#MNfL@a&a@"./A>u؆;)Pt& uS ?UuF&yQ.NÓ8wob Ke  pDW& 12I C TI@s ,pfCp#eBA(> 5`Ms@1Nz ߿ pyA` ,pJ@z!ZAZ@B@|:t(ʫ^"m|УNȣe le`b%LUy3(a5G Lڵ8# hrܨWHWw%_*d fwcAhRP:w ?,<^pw 'p0L13yyOiF.QHծ0{Rd kXz_KVSߛ'c t=:q}bnܕ],Y[nY ʆriefi-MR'ym9rfUb$)m=YF]6GNLμ%^^lN'nv渼&][@~uU\R.J8.;@YB&lre K Ra/WN;rUY.jMw[|[_Amd2,__PޟIP'W&.G..w6}^;ſ4o5*F;1O|b͏o jf?h4z=omc}7cr!@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-happy.png000066400000000000000000000034551411575327000237550ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿```bb^:ɹ9sqR{Ied\spR qoTfe[roR7).aa`@ ǸhgZ6,(fe\&"}F}yK'ĵpnTyuNxuNcc^ͼwtOͽ 'cc]gfZ&7"}FŶba^|xK- OtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'IDATx[[S1iEd8QgZJAۿZF^i}yI^^_Ϗ}9o$7'7iF"8og8JYEo?n@T4_tĀ+%`Է!F:=dJ 7$"!xOI?;{<ydo/F&]h؉LyGIQKH>HsאDԞ濉&5$|O.r[d\%`p3>dיt#pi k{* ?:eip2@H(ܮG/Q@FvBj 3UGL% Bd8(7 [l[P dRB͆Z+upnu`P|Na>5;a}~)= H1D H.?$?ѡR HFR9K,"W'V@N@ZU:mjtTФS+PV@N@Z:ju p{lDŶOFOPB|"G@HHy6VS2()=)J˿qwZ-La 8la,;3 ſ4KE-/N/C]9dPjn8fN1([wa(dnX4I59݄*dRA6]L7DhGcb6dTNXq5AjLP|[̽J⣠U o'~f҈4K5M],ٍHdro}a#y~bC=x߲9y: 8,p`Hic å-ya{v7~wv:kh$CٚޙZ Wv/b*!i0[ eE,C̅}QgI!WQݥ\I/k/() VmsQx & 慫` WHByJY C9~̓fA]' }g%q2ݰ^a7on~U]M 宨5uU+;Fiox#IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-laugh.png000066400000000000000000000031471411575327000237320ustar00rootroot00000000000000PNG  IHDR pHYs+kPLTEGpL߿```bb^9ɹ:spRed\sqR{Ife[ roR)7 aa`,hgZ6"}F}yK'yuNxuNͽͼ|xKba^'-"gfZ}F7eOtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'GIDATx[gS151`:{o Bli.^~~0s2ѽ7:izZlEQD<(B#Jp08<ݢt|rIpp4f?} o0i(0Tfg(pxD YBo'diH?<ıvbtP,(O/"5Hɰ _!A_0PPS$/x"a^?hB7P|~jt3GmU&mv"zAHO#G,S?;d phHE@#'WF@Hv&5: P P4Z +M#`XF@P׿'_`$|Z,ŖoFoXB)9!RolS2,)M H1'XZMsZL~ ȰLW6G3p&`p?s1"" cP $=ǢL . CtQVQY>rZY~۬z=vۮ.,.p7W67ʯ{e\Zy~ bn&ꬅk;rm\\ޭƣ)ytv.A V(R AB$KE.2}Gqy]PN3gcU=NeN);QY]`uſAWaZ:ua_9L)db*곺b6|C]"_1Vq/-.j1e-l0P|/m`\2_Po\HpLFgW&vG.vl]1oD4ݦ=<kW:.Slܯ" DvIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-plain.png000066400000000000000000000025301411575327000237300ustar00rootroot00000000000000PNG  IHDR pHYs+ PLTEGpL߿```bb^ɹ9:sqR{IspRNOtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'IDATxiS"1q8G@QPA;vrC~wbkĐ=NybYLSh0)4`)R= Pl|12OHdƓRiͩ9@@ZU"H@IPhPI-"h Tx(zց #ơ Ec;L *sp)F-Zk\uK!U|-ʚX֧SSV.l| w0zy <b]ކZuLz!]}/8CBQ`22L,\,{6FW=-V?(5y%%X0_ z[W~_}xވÑm{x_eѢIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-raspberry.png000066400000000000000000000030001411575327000246270ustar00rootroot00000000000000PNG  IHDR pHYs+;PLTEGpL߿```bb^:ɹ9sqR{IspR"aa`Ͼ .? nlV~Ffe\ed\}Fп ba^,+mkVʜOtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'IDATxgS"A"ŬPEfL'jYrgzgx>N-zzzz<-ZP3I,MYc5: w{>D7v;~y1rNcd fBf oHy!Y7N[f!7N˸Q[0 d , /!By wZ`;G~(~@̧3:ҶД^9i:&#C zפ@Ҥ IaBgҀlǐQbY+Y%V1Sf c,,YӘu&0f 1q/럡PdtKHH'$1bI)BRKa &2K3X)n9FBԘB!"r@ZP dZj 䕋@zr=oÂ>ceC7--Φodw4HjL qIzMҿR.o6ނ:@v5w떳yM+CX`}s]+\'o_+<-tWMOp(4|| uG'}ZۻZ~D[#LRM}nrη P8QZ)Pv`z?|0/lozknP6ph=e=?gcd邈|!A'slܞG뉑L|-8~5= 䊱~-Z%3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-sad.png000066400000000000000000000034331411575327000233770ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿```bb^:ɹ9sqR{Ied\spR qoTfe[roR7).aa`@ ǸhgZ6,(fe\&"}F}yK'ĵpnTyuNxuNcc^ͼwtOͽ 'cc]gfZ&7"}FŶba^|xK- OtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'IDATx[_1ieMKPTRЖ!Ap ^~.\Ώ~Lryxyy%--RHY^_G=/SfIc+*dr̖~i#qSOffn/!orϞ_$ g*ϰB_،>r g堎?fwv奦J*Uxh 3Phz?<ovt9g_j;?n"VXMWDêL }?b&·I1ߴ[8]i֊h$h} .b˅q}Ń$pkI"!i p $fH*ی H2loaIgYty?&H5P%G*q't6@AGIdݐ3]3흳#jG̿uLF3Uc3UK'nDmK.)m H`镆t:4`(L+@(n*`K)yV ջYL Q+~a |iSS]?Ņc:-qIl)OtP) ЧRv4vH)AZsa f X4V+` V _e   p{loB?CvGtIdl"s'mO-- b`TxWcǂ`0b cp̒\kίk…fx`RxZr/ b\@5J[@i,Nr$kXg4"ؠH\ 4(v@͒dAۤ*& HCcMW,@GQ)Iiڪ 湛Ւ6a]/3$irF+&P=s"ʱR7< Jk3ٴX*0g Pݣ\Ib(i;[gߔCe g͇ͥ&jmF eCx.!±]mRo8X/8߳ϻ1Ϳ GԒNtOR_[^z'b>e7_,`e~sCAO,)WJIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-uncertain.png000066400000000000000000000026431411575327000246220ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿```<$п omTbb^9:ɹsqR{IspRE익OtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'IDATxVA"QAbA+5޵ sDx$;}sd2ΝH$$$$DLam֛YWw&ٵB&Rhq"bh~.ŃQs{AS +y$Q[Ha˂=LԹKh iP"ݍ Տ?8 | ? l6$acDA?4C@d_: r"i:d3ϘFFf# l1_h5FKAsk4D d;cο;v,3OL1-8SewWk'RbvN X`;yd!߂NGTΕ(/!@筿1>Ꝗ?&3e??I+<ҁАjN(X&"|bԦ@ P)P!LH1`f;V2v635[YKϮ+0ر+0X+  $=K3t9F·cS2ޤ褔7-o/<$ ?_} B_"#8BOO~yPXVHP$R4>iQ$-ĦjKD&*Z$rZFqiU9]/#AmXHЯoHPܲlZHPXضR:?wq N;m ʟ[k]6yz׹.` Mſ+0Vr!\7lF@H!TQR.l|+Kz SxUy;.jm8e?6_j6? QDʮzyvPRxヨL\l~̯*vAyS(Q6rуeNQ|b&vKW2ۘZ榓Drz[ښٰv/$$7k7bɔIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/emote-wink.png000066400000000000000000000034411411575327000235770ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿```bb^:ed\ɹ9 qoTfe[roRsqR{I7).aa`spR@ ǸhgZ6,(fe\&"}F}yK'ĵpnTyuNxuNcc^ͼwtOͽ 'cc]gfZ&7"}FŶba^|xK-BƘ3OtRNSR3Q /rGL!&s|نHqؚ{=Ȋ<ǨPՒSwvF' IMޅKxI'IDATx[[0e(MYa){-нPBRZ~~ϺgKNN qG,HtdTH%NgswTђL)8 ( 8tOo$j R Zw[M^c7P!' PF!`O>}80"'],Y5ѕh1gVOYn(e2GTeP\1D68Fw2qx>(CZ@8K@'hek{̿,V9?>Ge;$l00qM5t+ ~r!?D`)4z2@}^D{ك0&HA UРJ ]ud$@vjA"C>ݠZ@+3*ut1P֑5-cigC *ШPM" 8$P@X$$@\B)#KMF [,r:e*dJKLFY,S,˿G.0|>>pEy4}-O&:uH J`?fl:(Ņa˗h-hv@6&_`heh6K1l;–s(hG5lNWgnj~s۞MO ~D 4:d؞-,mY DZS3Y;&}'R͆_o"lp1`p2] \dL\;"M(ZݛB%Ri_w,rGt;LbuwznԌ4{rw'xiIb$uS ׅ>σmVBkq{(Ba/PoДbLL\L4[1ox;HwTrkPǣ^POtٕvk+ﬗ*ˬR,ov/8HBIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/energy.png000066400000000000000000000011241411575327000230050ustar00rootroot00000000000000PNG  IHDR pHYs+QPLTEGpLTrtRNScd.- HӀG  iIDATxNPD<^[ePzнX,[g- }P n h4 v "X@k,` P 844DcAl,50nLDcXIX@k,` o@e,` g@cK=ta ڥA}>4ΧAŽ4ԠҞ?TZ EAѠhP4( EEsjB@ XA X@ Bj+4h lY@ pm9@/4b :XNX@ 4bHƀN,iX@ tb\N,l/ ",[g_5QgIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/error.png000066400000000000000000000022661411575327000226550ustar00rootroot00000000000000PNG  IHDRgAMA asRGB pHYs+PLTEGpLoooottoooooooooommjjUUoonnoonnՀppooppoooooorrllppoo``qqooooooooppoooonnooppoonnnnooooooooooooooooooooooooppoooooooooonnnnooooppnnppmmmmppooqqppppooooooooooYS}OtRNS /3QRrGs&!L=֧P՗䒌HSw|qؚȊ{<Ǩ' vIFMKxޅo'IDATxis0!MBp̑@MMһMäm,ia!KWHHHHHNv<R&Sj6I9mO8Q,KG #1|JF>)%/LȗfS9}ECޤoӑ7*[jv= %-{pu!RTep( 3.pB}Q.08߆?P8Y3wБWG7qu;ȉ~ 6 ߾ Wߟb <ޟ?F-+{ő~f]ՙֲ˿LNOa7sa+?_mZYӡpjZq_vMIIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/exec.png000066400000000000000000000022161411575327000224430ustar00rootroot00000000000000PNG  IHDR pHYs+JPLTEGpL```eeeiiibbb___hhhwww{{{ttt|||迿xxxjjjdddfffggg̾qqqvvvaaaꜜmmmߊٶﯯ⛛͍Հssslllח푑˄Ņ~~~𰰰锔㣣LJ֏uuunnn@tRNS@fIDATxW@!n9AAWն֣G}wڒWfA}:ߟ1/!ٝPPFH? P B@ .Xpz %] 5¨&* N2@(Jb$dnKȰ#FY,͗)iɿo?M/@tV"ĂD>gݯwݛqt `tB^12/,J@ Ȓ34AH`A,xz )m~Y;l>מڬ|LQ"Fy'X񌗝0q`(1IOeBcDW͍+N+w4؊5Q{FeE龵 w?Dm냝L G3iGLjE.̆Ms!mR6_/)ר,F}{iT[+{r`kV\ G6OUު}V=ztxxm^Ǘt{   )X ] ufZm6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/factory.png000066400000000000000000000006561411575327000231740ustar00rootroot00000000000000PNG  IHDR pHYs+6PLTEGpLZZZ``````]]]``````````````````aaa______```mmm```vtRNS0]Fuy,gIDATx A Dq?+"3]IGCuq܏0=b?2vǥa&?2luO= 0{fȃ <ʀ yK+Fʀᑷ2`h (<őg:0yF|<F/#h316< n#h98ۻL? :66:n!=;88ܠ vI0.a(ՁDw:pALM:йt&$:[\Z- :JYm\ jW5ZZ+kqWj\\zUǵZZtM7o"dY締 bƬ/P7?0(ZƇ9ӟA] 8.PIqF:)=*qΥWH) R@ H)-0+02Tá^c _ Xa SL IDATxW0p`dM;l(l{u^I+wL(jyϧx 'P0шx-W@;RK}pܫLrNd2TH܃']D .P-cXBOpYRGf$*~mX5YjSogTx8^zsy >0ogʗ(\7{mPom@ ވ4?dovwYE^ b?+sgw8XN$>]pASX7Mu ~ wcbi 75dS)IҰ43yHqgUIT> H2~RAF,h^k&g?5ljҗs9ߛUٿ4:dIDATxZg@G9& #(-4i4A@k{EM-KK^7{ogu?{7of! , ,J##Iqrc0Yk.B3KJo6ݎk ւ,FlÿIp4q @Dm̟ әVw6#C*)N3ǞM tP?/|ev5v>GjUe F;(>j ;\oi45%\)m n4wM?f D*qY߀XK/m].$C1= l5\E{T,".tpR5n {լ ##e 2P%+fy09wq! "]R&"JOkHV7 ȝ1cTOݥIj]; MAO%L44Q]R d<|ܸW !}v(T] ^h̵nzg Pzw~]ulǭăqGHz ?zF&7,X+xzʌwxLKBlb|+I(>/x+^ Q<ÛlBY#0$=)FT:Bn$!JOz!l2!B7[Vq8 ()DD]Lri j f)Bv{x'[f1†wASf`5 dc=DXYtLms,季8IK¿)gH![]yhnם U}L%AzBefa/܄3w!CSG'6բ'&)TU9:N{*Ě^(iX.YR+4 ͚@@4 4-@&3fwvMr!jXLV$}fwf S> ?1bѭztD{/|8c${*hҔo50EIsOL3$G)C(Uu k|u9[ '9R{}.޲$N ZRZ[Ⲉ]sIǟ~Yii*fC-둈MntJh,1?PQ'lBhX_}%)ZQྦྷܘ~0G _Q}bK!M ]ڟm q /KtL,l!p*3izMd?2ײ_wAs~X8^7&9K\Z̄A+ ;c[g>̊hT:SUm 8}9Y` &VbIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/game.png000066400000000000000000000011761411575327000224340ustar00rootroot00000000000000PNG  IHDR pHYs+{PLTEGpLoonnppoonnoottppoooooonnooffoooooonnqqoonnoooooooo```ooggkka``{ddnnoohhmmmmngtRNS[x 76wӗH]IDATxY@PQU@ ]?.ɼ@>wAiUeEzL&I9Z}gtЏ#R;I]3ƛY?$7ӤZ"< FZ㋮a; \KbCpI8Dng >1*K PK1@ P 4T_ԗbH};?rzW3slC'x<֟v.i?zm5w0Y D@ C{ !0Y`@@@-g Y~`%p`%wUMS'ZIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/gnu.png000066400000000000000000000065351411575327000223200ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLRL.45Gdq,24YDi)/0-359t.C!:',/V$ o(-.&+,*02',-^) &,.-35K&,24pA5!pG&="C#H"*%%='"M#C C![&Q#8#h- C pp2)$$p*12+13pj/ 6$b-',.(.0+13~8z5;E!-++p.&$pu&()0!(%%?$)%%qpR$CE!&+,N#_*C *12b+'()7*(-''(()+027!p(+,<)$(((npC!H"D K"T&),.G1+p.++o*.0.1,,(,.pp" F S(X)G"?i/])f.C0*4/.1-,po0&$q,./$(*pR(I#H"^.d1W*qpE!..0ppp0-+qH"p5//p(-.p?DDppFIJJ&((D"H#Q(Y,oM.Q4nb}.46pC!|X|z056{wD!oy765xx j|rth 255{se j N&l|=Aqr_&tX)uG.bB1uZU Eg H#T+}g"V*\'C93a ^ nu[ gC2uK<3}J-W?2on_oci4c$?94P=3F:4mC/M(X LJ``+6''i-(-#ٜsVhu΃TLyfx_"ޑiRנxǘ];WBYn=rR۔RmYVͽUM _IDATxg\&ћDHE{wmvW{ ЋR v]u]˖̝͐L&3DC2ss 8!qC~xn z@ Wuּ%dw "`+W$;1=$17 GTCQچ$!n O-&EoHq QCgY!!>a$ ǻkzRl6?SyȌ(!Y3ՙN+LpΚOTO#raT/Ntl쟂 0`iZlSZ6S~ A!%Ϻa>&ܜ' [KIOKr_`_Z<F F 8V%[o1/*[Q̀yK׋D8s$.n pl *R 4b6xdCYa7Գ?+=TOz9fK" *Byr_H$yo( IWO5.O,.6n rELhy@J  h|!( <؈n!KDHlJi?R#+:/G '/6j8ʍ}I%7=_7+I1|p|€WTIJ(%EnjlHI%zʆ1J!y r< JjQyl`K^)hG?$ \w^@+(JMLQ"z'GY4J>RӵG-4WNh\;,F˱Q>r~~ `̥; )`X@9LujFq1Qw! $#` t hOQ&;Jk4d{=@"hnt iMNwZpvy-%j<qbpUا#|o;Z%S_NZpRuOMta~ݓ@.WH~k[Bdۭ۸,tڪ#zUeS\N,:ϟNqh6ϓe5MC5}&gA*qh#*(峈&5&Ha9xzt~=df `~휆=f9k?#_j)Ohot}&-HG.,]f @]#MdLMXz-@y4nlܷРd&)ڢ7xgQydIj6j@]_(M}i9ܽ1=lhlghӺ,=}nOwEQ @}?b_qbl&q<f?=s+Z&eH i#jPhHp@L < lωCo44ߢbEn0C|`cXlb_cp˷1@Lj?#p<}L@g hdӈ k&xXA>~ۙ[?z 1qU-{CSHA ZekHn9_e%82j<^" C| bXh7p2@S$b?٦ԟ<^acP3j-&j#w{3U%Vz'֎OUEh5Z6(gSM#ˡC7櫵Ё{C;8mYp3 uM{vDvNK]#+"8X4 {` b9>u}MGUbRvfg{D?÷7Ͻv0 B$9mn{3m~"O<*Ny"#9ъ$xV]$ ? %9YkK ˮ{Z C* <%?`0eNhd?W  =Q_K/0zZG(ȧ~ s$si?þBՔE4@N*vN l[:%Q-a-*mH ElZ 'ٔm?-ORؾ`Y $85N0xbNe®hJЗTpk8W_Ds޽U7觏N ?.h:</5CY%X M>NYL>7ɇl)3X+N4͇7Λ Xw@>U?-Xj'|`+\]Ҁy|XT$0X?(\! \ %`A!>9/Upk_)06GC_3`>NwY<ҚS`]M^pqƾy,`ɼB nO ధ }ȉȳ}fO #8mO 8nO }q`#IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/h.png000066400000000000000000000004161411575327000217460ustar00rootroot00000000000000PNG  IHDR1| pHYs+'PLTEGpL{{}}mm)7tRNS@fIDATh١ 0F Pxv a, bܑ@{s'@+2P' vڒF[ ؚ | pLo$ݶ:]3o&?r\u%5KIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/harddisk.png000066400000000000000000000003001411575327000233000ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpLtRNS@fJIDATh! DA*P T& ;LlkF@:jlA@@@@@V` ؂E.g_|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/hardware.png000066400000000000000000000003241411575327000233120ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL```__oYY1tRNS@f[IDATh1 @A,jo H/a9!%`A P&O]Dh ؙN;U~xIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/headset.png000066400000000000000000000045101411575327000231330ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLdFfGeH_eFUm`fG__`_]_fG]U__U*__]bZÉ_fGcJ___\`fGfG_^__hH_^fF^`^_`eG^`fH`____^_gGeF`__]U__]_`__mI_^_^fGfF]_gGgG^gGfE_gF_`^jJ`fF[_a^gG`fGd__fH_^gH_`___^_^``_fG_^_fb_^`@``dC]hFgHfF``aY___aŠ_hH^__`_jDgG_fEfGgHcGfFfGeFeGfE_fF`gGeCgGfFhF`_fFgGdCfGfFeGfFUfG_WgG_iH_gEhEgG_iI\oLgGgFfFfFgGiK^gFfF_fF_gGgGbgFhHhG__iG`dIoMjFgHgGfFgGgF_fG_gGYpM%]{tRNS!y[ ̓/3I &9\앺LesSr/tR! FGptQo,.͞0xBCײ=]}^|w_~ڱ9-=Yr~MjWj& s櫾6fǤo`mB6mg]XU!'ɤ8cUS%u3f_}#q Dw ܖUS"@-۰!%:) <;oҼ@os?wBMx& kW@|zyA67#:آ:}+Wf /1zw=$*8V̈́R=(y!.:B%PEJ:A&k<;w:5vG=r7сch[mX\͏BDjIMd]ڸ^-D:Qno)f`a53&3B9+ȋIӇHPhs G7_G[opݱpH"~.шYW/fГ|FHj0_hx'/T'w -nӕAĽy7^q9`䤎\M0ɑy7=-hr `xL} .I'2]H4o|mc=P/}.L*|m”Py/Rh3S|n6b'P/sLy*8m H}!HRg:? t09Hsv2!;&ؘb$z @*HX0 .+I-v  N ,-@55@)[|j<Y-@  ^!@q!^T뚎8x]TZ:;|i)?XнMFG]iU:&Be UC{AF.,~Xg.fVoP(Z̮"B)I|hi?Z,*%9{lhP_eJwm@O/n !SbzcQpp ÿ @/ [y~G~E7)4װר수(>c4hуNL8_ W HS%<Ր8%Y .ՠNmRdXNb=x~Ą>6f[(ཀmjOϵU@]2%ȕ)RiDTN# ֨~{Y r,TK&<X Z@\T'mNBd~dM\Ͽp, B ^G0^/BRXa.:k(^aD^(cS nݠ<«[`KעpD.,5ׁVRyI/ jI+`-&Bz Y7:_7;6a/&LxrſM{;_E'h+P&.87=mŷyBcs\|yԚoTmnPs4øK،əZ_\x 'EGsL:M UPSzbocsN_cq75:sH%i aIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/house.png000066400000000000000000000005131411575327000226400ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL``````GXtRNS+NIDATXһ 0 a&p20 A/n^j>_@Zi #0B[sBy'pB@y7pBÄ=pB2Ä #pB2 1B !B&D]'!{`p"tvaŽ3pBX +B aFH&',0L'<0L̓quQTPATPAJIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/html.png000066400000000000000000000027521411575327000224700ustar00rootroot00000000000000PNG  IHDR pHYs++PLTEGpLKxػkltoĚu6J*Ӵͩ.pm1$ұq Ø?}9n3ֹs `M'G~!ﶁȡ"/{V]jƝmu+~eָrzvm[HqqK@]N@ @B0~D6~bFn=xKl7goNFn*tᥛ_T: V(Ad{&P!@#mEy!͂F`n Z\O4"쇬A @Hx1/N)I\kfVL"`rZBR7n#Dr*S0@|BT ~B\}<%u.@֞?KuN<}y%S@nc֡D?EWUWҟMg&=K 0,JU*/ł,zaH4KjRɦ8tA-es7#Ar^mXͨ)5[Ucx Dh) oz^x#g&oޒNX 4T5'N]m=q ~Z0Gt$5;;H˭̕yǯ_%zI!PH:u%] ׇ ,nH6T$CFH{,%% (4@ ?GTcߖjM6&Gs *Nw<&5ݜN|=k@O!%{>~jaexPau`j6YlK @ ?@-W6@ @ X l/y9h;IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/identity.png000066400000000000000000000050221411575327000233460ustar00rootroot00000000000000PNG  IHDR pHYs+^PLTEGpLntmooooooUojpoonopool`ooprpoooooooopnnnoqnnnooooopoooonoopoopnonmpmnoqpnoooponOwrptp߉yq{Rz݆vq`[zmRyǐꁝZOx怜n^jwQz`žThӗ[Q{cYl[R{\z‱〝ǍŒOtRNS3 /RQrG!Ls&P|Ēw=(]&?99a`|G.K\,8 cgq3vF rY 9N4eQKWK {U_ G[ n6>=qm?nwf^xdl>>c&nd0~â9[ۉDWnDg/G?{Sr@&=zGwL7+Oo$vl g PBe:ʖqu~Й?( `^3k~Fw=,{l95O#-|աò->"0ed΢_[˶q^ j%)m-[vSBZ}\kotf;ڛ8PڭCu[P e?zwʎC@e1O2a;k&ىpZqX|:p4Rׅxt4A4v+6BoJ[A#x.d݂9j˛nACBI@ngM<ǪA-R0=L QXqsqTY<Y]_?2LdX7 :@l ?Ք)W 0rpMOu|4`w/`u: 1Kh TJi?vJA:ZuRl\[h Wlh@r^i  & L"8˪3^CklllGR~ eEHTE[۟,UŒ6$\iE0 S v؇%L!ʕX3ds1f!V,{˱'0q)Wďv%\C+Mhk$ f!EʕS4lXaHՃxY0 EoLx 5kk͸{p{# EK$x  YZrgW\d3`qGaF8AW?hVdP r<q?X~syH 9{;d Љ 2b~bfzb4l 1vs EW6p s :%=.C6 @ :cpuX!^q_r TC.v @5:`uX!p}kC<ۣpL<4 # pC\o$ODTL [>Ë0g`szBB{ \ѷTOJi8zmR8-aװ1cËz5l͔Ұ9URu(T4D|E*Uh))GKrN鑑-TbZ0^ߏez T"S7zbLzlΙƄG6U 55kI?mIܤG mInŇדLfZz|O5"QsMEQ$mvg!WY.č}kI>WAV7io ;tǟ{ ut@O[66oUhl[*UWnPZs y{_p|YyZoK.al<7]/z*DW.:-(?Ikū^C~n[=[VɮVZ̷'IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/info.png000066400000000000000000000005761411575327000224610ustar00rootroot00000000000000PNG  IHDR pHYs+6PLTEGpLひo5ekytRNS@fIDATxI 0 @z쌽e %B78AK&8Җ廒+RYR>+ĎZKP,O]XKkDCä QdvcuLUٶ:HJpa2)m lTy=SV"u 4GXFg /jLٍ tw +JyTѿߡ| gtٕ߷{9&gCWa :t-pX2H?]w94Y0t}:Xf`ppC@mb{dq~M>e8q9B6ňUhťjs^{O%ξOMZ"0@SkM}N& ǼCMvFEOU0dASG?ҥ?PEy! ЫP7~t_G-QE@>Ky 4 tjԯ<GR"; (jA^wFP Q/F 4- uW" 1TNn 2XP9+wPJl6A vCLL `v]tl-[4R(hT}ZB}A~&<а%`G(w'P@^IJN@‚}NA$ŞzA_J'!󵇎r IP&*U;R(=% ,B8pB"tAvn8 r=: }2jARA` ZmF*hmF0Հ؎5 cB'C?l ѮB- ],6dZY(>qC;PuQ:lgXXB4Z`9wu01Ӄp|zņX`>dp t!W ~Û񜁇713\Aă7 4Q'3UEcuwyVgEĥA|D\*n3?˴&2KHOMPM PKfA\ɂ2΢,1pk?/̄B`Y`R{ݣ:2W߫(|9GFg؛67݂XM#ShM(DOr6A720̫`P RjV5Wub~G#z %Ǒk*M B[h2u "V'scgtodA//q\Z3i&8`&+޶~5im2_=隳юbgu+pJ-ՄTm:h9m?) plm}9 !x5{Mֺ2[f{Xk$vt>ly_ld 1!_!>ćclk Kڿ$c89־×ՃN8x!|&pgZY B!E  ̑.IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/js.png000066400000000000000000000026551411575327000221420ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLWg?_OkYylnl4cdұK+ΫȠoϭwNػBp Ɯ#pJ$muշ>q yeErǟfSm'̧.sﶁ{wͨb{|\mVvq R-Ɲ7xΪDʤ8پָ˥r ڿ9Ϭnę3ֹ~ ˦@ӳMzG׺TtӴnȡ(śtԵ/ѯo)xCʣﷃ|P]=Ѱjw tRNS@f6IDATxSAphK." w"Hݽb3$\rKoyYv?%! `Y8@]s @瀜ҶKGs1zNFsޛU{t5Tٱ=P,]~1V^1YV&6^-,xlкv [@2#՚4e X`zR Æ؊tLyo)k/z2pCrQŒ[#GnM=M^vuw )IJKi?1bq/~T߿9pJϿ T@$/bJ`XbP]F Q(קP8m)@ '!(@?(@%IH _F pR)  0 steIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/linux.png000066400000000000000000000062501411575327000226600ustar00rootroot00000000000000PNG  IHDRPLTEGpL8;?BBFJ*,-47:9134Ȉ4iV:136E3488;?=@C(=?C58:CFKBFI.02#=AD+-.%&(X;;A58:BFJ7:=025-/1."<2#49AE@DH(/23&AEI*,-=CGJ,.0&()3/-.02+.9846A')**=ACC+-.%&'-/1:"58;035358?`8<>;߮XvxyzC?JKMƙMэRČcegΔ8>7+XL6‡.|c9x6ooPC-_ʮk31*ǯ΢SsX^w֩`ϊ%Ϫhžc`[QθNtRNS)Z:4[?.ꆯqyh%xJHq«_XRYe IDATxwXiA@PTdaOE<{nnnڨ EYn r = '$ދt{/ϽӒIL&eGx~yN&dI`)N^^^N6δ{,!7iv͟ǟ_gn,;ͷS"=4C8٣~}Ai?ϟCra~ P ?xxQ ^a^LOBa _fFg O aMuuMa/0K 5?bV`É__? Gr0 p NƵc4I`ӄ&6i5@|3&B0?3{mU#A$a-=g>R6fKA#bL1Yfl [l@ H|O HPy"[(-U9uJ>2(<0>\0Ϙ¸ $9EĢ0 /Dwqq999'aN8q=fx_<;o OM̓scvWwKXaT`Kލv,2:C@ $?=ٴ1QN>=z37WP py-3OqB_Vɍ @⟺D!*sk!^~qqq LˇzP?xTV(y7 |h\^GA{nu1uPW@j11bM(pNp| KG1![4|H 0OGkjP3.@Gi !y "JzPV[/[΢HeezPY-i6H t JOCISq5Me6<9v]mnK#ba0N#@p6[% 6@Nf.ӖDc 4Bh SHx6ɇc8IAHk6jKA\0dOn3x c-Ą()A(\]{4HjBX^Ep⋁OT_{?$K@g,'ȁ&X%}@ԙ31iv1 w_$25A&w˽'G=l닊" PN#\.?^./-zp>zg ( ZLrNDr10;~IH9n'4x*ܻjYof㶷D@%gkMCQB"P(¬,_.*!= X,i _#=ERa9o߷cX4snA<3#U0/tP y^P"Ad(t2A~Dx.RaD*A5z1HlE)Du.r0"p1<zuȶ-mNqT&U#7Mw5]_GR}^ǁ :Dd4%I MWoZ-MO/aÆV/CђnyA9k6><,#;po@zf .ߐScѺb") :w1UV#PW3ٯG>;؊ޫRWXڑm"k::swo]J f-jQ kW;:L2$v4Y`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/lock.png000066400000000000000000000014231411575327000224460ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL̙ԪŢȤއ;tRNS'4 gvOh/mÀ7eюXWi0Nl8fVIDATxג@EHP1笛s-g{ouԖJp&΂j f]c^yǟVH2;j_II\DERi. nE ʤyE(jqol:Ͽ NNO9سx5*l)';Oa= U;xxtsmYDlå8rO˴PUoÿDn2L@0d&-3%M_TAk#HS/~Ko3LE} @MYaΟ6Өa \g!aV:_-C[+T8i ̄zxh^VB##sŝ @'S0 @ @ @ @_\'VuIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/love.png000066400000000000000000000034271411575327000224710ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL@@??II**@@??????>>CC33??==????BB??@@??@@????@@>>@@????==??::>>????@@??????????BB????@@??????@@??@@????@@????77??AA>>@@>>>>??>>;;@@>>UUAA??==AA??@@@@????>>@@??????==????@@??;;??????>>??>>????@@??@@>>??>>CC??>>AA????<<>>==????@@??????33??????@@>>>>99??@@??????@@@@??????@@>>??;;????>>????AA??@@??@@>>??@@>>??>>@@??????????>>??????AA??@@??@@????>>??>>??ʛtRNS\At@Y.ral<ۨIx+[FoܓGU*7P5dŦm󑜵 ޴W|bVS&68 £LZ epj~,:EicбK > R{Mq-ݾ/=HÐu!kÓIDATxWTAg;` v]XIQ)i $lEvC9scޙoݝ200000Il_]aν o)-[0\}C=ekIfX>=%TSL wgQeɅk2`j@ dL(D'2jJ{ eA7ԅ!p9.uMTԄHA8K'ƴsfQTߩc 똅?S7, %S?x|f 5 wc(B o̡9/u~t]!4I@KL-1 ~\(IxCoyw>PJ <"z`Մ@2mBV BovXvB +$`|X|B V9!P+PHx!6rAR@j]R [B` 5CjY<N`26&H 2`;2f~by 17D[ĴBY*)UT$)_bQ>*-PvX\ÙkDIT?)PGsc1U\T+7]]6r5ޚ ]E}mOK_&?4d0V1:ʷ?>ZPx<ŕ$d`````,J@"IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/mail.png000066400000000000000000000003121411575327000224340ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpLotRNS@fTIDATh1 EA,` X&@#'P$cz '0BM\7tH   \p@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/marker.png000066400000000000000000000026061411575327000230030ustar00rootroot00000000000000PNG  IHDR pHYs+JPLTEGpL___`````````UUUUUU```aaa```___``````fff``````fffjjj___bbb```___`````````]]]```___`````````bbbUUU````````````cccffffff``````___`````````ccc``````^^^`````````______mmmaaa``````___\\\___aaa````````````___``````aaa```___``````aaa```___``````___``````___aaa```___bbb``````aaa^^^aaa```aaa``````aaa``````___```aaa```aaa``````0PmtRNSޤeWFE -z ;o< ,#⅔XϋVΘsЗNO%r3{f|4a&`ij:pn'iIDATxSA'cs'"9I‘@A@A TEvv)}o:rʕo3hGRH{z3~'ݧJig}F+@Mh>t\Z(BY6mʡ }O9o`wG[]xp (_S! XT /\TBqR f?SiA_ypl+ e_S p_?QEj5ĠRۑ[(ߖЄ'VQτ^ҭ{-neAbQr.N&/&'ٕ% 1W]Z, d؟?xq dYKB{4=F]mƊQF($ՌˇR1Vh7"[10F a8iH~`4$-Y%ߔڵa,6 #D?iSxB %.'*tdx% |g@^B_ 6Hxndғ //CNnۭ,/ߊ8Ϥ=t< ODH:A  `PǼq,2R/@˟,<- /x*1I쳝jj'MkOE$j Jе x@+T " rK1a tAE\@s}QmQ0hQʕ+Wj}QmIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/md.png000066400000000000000000000022661411575327000221240ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL[/WΫksRmvm7EZ<﵀9B$udK~xu˥}r _lF~ 'lCﶁʣx&{3Ϊ×wDqQ1ʤ^|q yknXØ2ҲnS`-zwĢA.ӴȡpH(wͨh"uԵ\xiIV6ͩ#tﷃ|]Ѱjs ػp %˦ӳM4Ɯ|tRNS@fIDATxWs@`d%!8qwkz{m@{WHO'{% P(j]+qR ^ͪ/%`W:]=EHoucoDC{_]\t8Uac48DY[z׶|V? &%kgޚ%6X9 FFLilB7cCq1{Xc^] H+`{W6_Y[:r#{)xjWn{ĸ|S&]\|&yx%NnQc5RYz#fo:<7aM_'x4`'5ܢqFJ݌ (5PO}|@ +T|UtUg2ŀ[tT8LK@\Ю pByUr_.r҈1M2XpyC&Sk.XD3$l}lu5M[|,BcBsx45Ң1J o$3Oꂾ|ߌ?,`P(Ԭߦୈ1{ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/media-player.png000066400000000000000000000004301411575327000240640ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpLM;`zl GxtRNS@fIDATh 0DѴaMKF&.ĝMZ#0$}@'j @, Pa 3PFi7 h`J!LcK ?bHQ孑yIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/microphone.png000066400000000000000000000034721411575327000236670ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLoߟuOtOoߠoߠoߝuOuOvNtOpߟvOuOuPuOzNmۛoߟtOffovNoߙtܥpߠnޠnߠp࿿uOnݢpPvNuOvOoߠnߠpߡuOoߟtOuOoߥoߠoߡoߥoߠuOwUotOouPpߠuPoߡoߠuPUruOuOuPuOoNtRNS /9Y> ZQP}+mHl'fv%,Xhbwق|R?X칚Ǐ@ZtT8[LsgcʫYSŐ㑵Ⱥ-{avf`e&ƣY:Sq9?IDATx_@LC[(HiQd( p{Q훻.G>>m%IU-ؔr1kA?Z}|<_Q3\7OKG 욏kV*@nr~VJ-w<@[j idu*)Q}{V4^ƭ*VG ̘hCbx3Z,;PYV2 v&6>Rm`Xb;@&@XK76öl@ bx96.\Ѭ_,GV"P"?!|Qx'&bK⎛/MqwL_ ^_2nlVm6l 8~5@NSgQZp\\6 =YeYaeYlfݤ.`$q`W0.N5TAx:G)Dzvm")WKhk)wm&(X60W`74c [8u1U3S<ƛXOXJ];jg:Gџ ΋N>4h>П=86n+P䶅~z]#p:Sfћ  XNs)ה%}=`b0h&Rpn\n< $ p)2œ&㜡kªVԏu7~;+Ȟ-xWNՉ2D@;C^ٗ^DRuG.x"܎j{ֺuQDV@vmxڽ`@OG ] w,}'|<=S9pq՟ Jr떸-^+ OuuJ)^- ٩l ۽dS ӗ%UJWNrFJZJS$U`P 9,3I =ТoXRŦIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/monitor.png000066400000000000000000000007161411575327000232110ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL??__hh߯ꯠItRNS@fOIDAThA0E WhdϢp L)cc϶-o, +"c@@Ge ]lM;ֹxT(RPO   %+(Y@U@ 2 t07&D'(\ET(^,w X5q0 `)LW5l!#GK/*mx[m#,PGW8Qm?={x.3 |D8h,8L! [{[4eıuiDї rc!u\lIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/mouse.png000066400000000000000000000013501411575327000226450ustar00rootroot00000000000000PNG  IHDR pHYs+rPLTEGpLbbb___fff^^^aaaddd`````````___```bbbfffaaa``````___``````aaaaaa``````___```___````````````^^^```aaa```N#tRNSQm'gZYwvh&?IDATxN@`(n,-m]+ q Qҙ{S.sG#aߌ˺g>rl}g.>e gq@ό4wfbtx_C@> ].E2p}  i8 ؅yp+`@W+@'ưz$vDd`@tÿ[zx%7j7+n@,TnA$nJ -lm| xxxxx9@ @pa  >@k /TyȋL-@^ur}EϧMѣUӣUգ(G+v{Y2W/czWҠ!e8 t"3r!179^{)ٛ :!9Xz66E{077=i gPIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/new.png000066400000000000000000000021361411575327000223110ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL``````fff```jjj```fff`````````aaa^^^```bbb___````````````___```^^^```___bbb``````___`````````______```aaa`````````[[[``````aaaaaa```ddd``````aaa```___aaaddd``````DYtRNS l'KPQ4.3PLqkܨ0?()KJJ*q?k_IDATxW[0`#^Y { (ePB^!`IG]G,[E`0P ?A @ @ %`g{msc.j9MGk_|:Óїt @혹 k_Uٺ{ Vg"pY\sM]vUYw{hJﭾZ4U-S$`Fm~ -otqr\?n+_[%wU 8`ow9hJ_Vp{zp?1b?wH68 ߈ 6`7x ǰ8v `'Ӡ5? -!k6-B ~m,CGXd ڹlᵫ&܀׮Il/FU6 ylHPHXd$}: $(,O_b6&G,y^9!s4>8GG4T}pHwHEwA:1o *ua"[oFWA9`10R6.ٌ5%Z+j̙;NӉ;sؒ$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/notification.png000066400000000000000000000026471411575327000242150ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLolmfopnooooooofvoowtoooonp@oo5upoonnojo?woo:un@v@uo?v@vmoon@poopn@s@uopnp?vrn?wn@wq>vvlooopon;won>woo@vonp?x>vo>vkoU>wn?v>vCzF{UpIno>w?vpp>w=uoop>v?vononoo>w>v>w?vnom>xqo?wooޱnqtRNS!# yOW  Q[ wɛ'z#pd4m 0h0gab&t$LP~%}tTNZYϻsvSDzV_^XWFIDATxgSA9;@ *5vc-vM4{&?92q^fϷ"H$(~5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/office-calc.png000066400000000000000000000002601411575327000236470ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL__tRNS@f@IDATX֡ E.ɒL |))OP6=͔؅؅]v [E {mIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/office-draw.png000066400000000000000000000006621411575327000237100ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL怡tRNS@f?IDATX mpJp]*V W^s,`}b 6?sesqsa6 W up& rA[^-A-AEK#[] t 'O@ >$0`L 0% pN 8BBxEYƑ^P2%uRtX~teLw|A s 7P%H ?p}x&c@@ >idxQV,-Po9|{-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/office-presentation.png000066400000000000000000000014471411575327000254700ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL87@YQGx2]<-TĖjcـձ`\ݰ oDMHo]d6RLqZڅ|1W:j}`sF86_s)u.4ac<"Fzl({1j#چތq|>^gV000}a[>/ m])@3=J0< /'Dy>jB/ ڀ,@Ih:H  5@ (|@4q@ (\@tQ<@,1 @l Hl@<m HL@|RH @Nj IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/options.png000066400000000000000000000023231411575327000232110ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLaaa___UUUfff```___`````````___UUUfff^^^```^^^```aaa```dddccc___```fff```aaaaaa```bbb``````cccjjjfffaaa___```aaaaaa```ccc```___bbb^^^`````````___^^^```___^^^ccc```___aaa``````aaaaaa``````___aaaaaa``````]]]`````````aaadddiiiqqqccc{{{|||lll___nnneeeoooiItRNSg Qm,h '-Htc5d1wv6u.F&ZYldIDATxYiW@ a Kâl ".ʸVmHRb޼uɻb\=ėQ;RX{eUbu&@sJX"Z$6?,!f&.x  ) )hlX5`r@LY/w^Z~ffO|'xFw77  |<= z*F/F`!y?-zSߖ&Gk4(`炰,PK4N"U \—ѸjLaN_VRSSb\ir=LJv*̥պ̬0t?{M)?}%wR+bF ?Ih*.*.^V6 IMkIM@5i}) B$0I'9Ap r$%J (A &4^k0k잳y;ȷ AIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/pda.png000066400000000000000000000013111411575327000222560ustar00rootroot00000000000000PNG  IHDR pHYs+xPLTEGpL```ccc```aaa___```___fff`````````[[[`````````bbb___```___```___````````````zzzqw}defϱ0ʨ~tRNS$W# 0 ʋIDATxَ@EQqWZp?Tzd&ZcGU_nE$kGdmČwgcϺЉ.O:N΄*5[>X:56c~-2"5?6gsg2Ϙ䥯`|eln 3bdTc%Xl}U&pX-dE]fDm_ׁ ?~ @ @ @ (JR/ (*Q.JM$qS+'  !t5=hC=ҙ*V7Pkx.z=<5_#݄56!#ގq /?:C֌ŧ>?6cc>:N[sl^Ѩ4.$n~$gn+;#*YdIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/pdf.png000066400000000000000000000033601411575327000222710ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLrrppqqooもvv{{隚uuttyy︸劊~~蘘瑑搐捍ss䄄甔ww䆆霜䇇ぁﵵ쪪짧藗}}刈虙zz릦描zz䃃掎畕挌륥||勋Ꞟ䅅ꢢ쫫靝xxﹹ蕕瓓鞞ꠠﶶꡡ쩩룣맧匌雛 ꟟btRNS@fIDATxwHGd)xBݽ}m}ktmxg~b8=LX+4hР! Pߟ/6ԘFXFx9 x@?[]49{ެ ) ,|G&vXP@|!^s /AmFP,];$`?Ѹ'7N ^!@@>c-E@ HD4[1㝤Z$"Mb!8=oHJ nC0`o) \]nւ"8.1p*޺TXp8 }'nAtS< I 0#Y Ձ Xo`LO0`flQ (O}`g!9: ȝLc!l=ۻ JF1L3>RcY0t7#(׊i3Fx툷hNHH($8u0_Bюr4Z5t+A(h~EIp$ĝܝ2=_]:~.g0#21Х> V~42 `HE8քu\RݸAY %݀:6W Pje&\#xu7IN(;aL;Kş~yVG&{35+x%0| s LODgy^\'k1FE\bDû~m@[^OZn@[D CJ,#R]LV/[poVbsUϔoNӁtԥ}%J_Ȝ,ϛ W\հWM!_؝fn%GmO)h7ߒYgn]tNmNGo_t_~>W3?! sỴ9-cMRx@"A![ !R !`ă`#kvB'tŸ—VכV 6=!P].Tw*B؃؃ B\ Ns"2@ 8 Vl,eeeAf`&Aa?Tf2O?DG h%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/people.png000066400000000000000000000035121411575327000230030ustar00rootroot00000000000000PNG  IHDR pHYs+RPLTEGpLqnnnUwnmOwPxPxmnOwOwmOwQtoOvNvOxnmnmmPwOwNwMwnNvOwOwOwnnNwnnUOwOwnOwsOwnOvOvNvIoPwOwnOwvnmZaTzU{W}mܒ[VQz]W|Qy^T^R|gQyblY`iQzdXb^iVnThOxQ{bc˭uވ֦ɗкzdoِӟͽqpjlݝV|gDstRNS'g %:4〆 iۮWQg4hՀRmX:O%Q'mèhOXlNĵRSIDATxWMQ]MTB%S)%Sy{7 !y2e;{|p{{9Ɂr{кKm_3jPGeL?4#[$>c`ħsN8mb29%YMD,Rk`<5/<B,Ґ +Fp%\757)+2 \-$Q] bJ21zn䂘)iKsy!.zl0\A`B"W^J Ǐ V9zNRS2#"DXcj+].WI'TKlyy kX ]/ |h~Ea0YHSMYD bBEdQPj; Q8VG4|BU֒ 2qW &Al,Fp#maW418&%@1.'pZ~,tJ 4[ X8eM`4T` No`:>!sr>yE 5bgw3|1ew |#5Ja}Q=p&>hc >ާ^PcJGMft>v#|_ w<_ك㑥=2=/>61V* :J{q"c$4d~b?oysw`}~qOێo/S>N`h8{zZlx7 7-lg÷`}̸wy}׽?[}NbʤHui&D ؊haE|lVwR !囵\Q M6&r ˱|B O `ҧ }ňק}ҧ}֧Q}HIѧc|D$ݙIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/phone.png000066400000000000000000000013111411575327000226230ustar00rootroot00000000000000PNG  IHDR pHYs+xPLTEGpL```ccc```aaa___```___fff`````````[[[`````````bbb___```___```___````````````zzzqw}defϱ0ʨ~tRNS$W# 0 ʋIDATxَ@EQqWZp?Tzd&ZcGU_nE$kGdmČwgcϺЉ.O:N΄*5[>X:56c~-2"5?6gsg2Ϙ䥯`|eln 3bdTc%Xl}U&pX-dE]fDm_ׁ ?~ @ @ @ (JR/ (*Q.JM$qS+'  !t5=hC=ҙ*V7Pkx.z=<5_#݄56!#ގq /?:C֌ŧ>?6cc>:N[sl^Ѩ4.$n~$gn+;#*YdIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/plane.png000066400000000000000000000030701411575327000226150ustar00rootroot00000000000000PNG  IHDR pHYs+tPLTEGpL```````````````aaa```UUUUUU```ZZZ```jjjaaaaaa___``````^^^```___``````^^^___```___]]]`````````aaa```___`````````aaa```^^^______aaa```mmm`````````\\\]]]```______aaafff```___```^^^bbb```^^^```___``````]]]___```aaa```````````````````````````______```ccc```^^^```___[[[```___```bbb___aaa___aaa``````ffffff```aaa``````aaa````````````aaa```aaa^^^aaa``````___```aaa```2O{tRNS8 y` I^.C; 0iQ#klj)5]{(6zxYX-Ps'NdOhmH؁\ua&Ge~7z+"DIDATxWSA7y I ZH{^)y;;/{'3o6BUVYeR1o(}o#;LOu`W=׮^eJ)}4^J{(oH( )|"~=>y"O4mմ7@_Z~AG;6OC /QƇX~AcRR>< tu8NOe1+׉' "M' 4|d$E=L5RcROOds ڂb25̠K2>+?  A<|:)&SO}юPh;:>TaJPhdjݸ= n"7nhZ>L.R8g$NC:fQ$nf|jM|7̬|7̌|·L|7̜|˧oe;7fn:GCw$m3\}R6L(d8׿>@C[>@c>ṙT[>@c>q̇z|D4C$p1n8õ[>M|shfV|ffɷnfz?f3CHxGmdXGxH :fi NfҾѮlƴ]3Zf qŢ-pffm͛Y/⳦cj# qɰyL|!̚ŗ'mIYt;eܬhw4gX veɬkf(mI2kL63*I2뛙Ҁ$Lk@̈fq6̘;3dFݙ) '3jUwgp@1̸;3dvHd'3/s@4/i|=L;"_qL & d6;% i696p7:#nծ\6/\菃ddaU8Rۖ(W {XuIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/plugin.png000066400000000000000000000012071411575327000230140ustar00rootroot00000000000000PNG  IHDR pHYs+rPLTEGpL87668777737@77739߿8777:7777;777.777:7Κ%tRNS[y!Wކ  FEt scmIDATxْ0PAMQp%2Twg]sHXAmN}?]Y2Wo:] :E@b,IHXZ;쀝5yTF(zLC3ȌLe$(>Ep3 ́{lV Msd}\h L'!s p3jޗM1"*lJ/toJȶ|_oq2Y>εkJZp֑y hJr/X,+`\pg zA>|'5\\%"IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/preview.png000066400000000000000000000035211411575327000232000ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL```aaaZZZ``````^^^bbb```___aaa```ddd___````````````aaaaaa```UUU```mmm```[[[``````aaa```___`````````___```______aaa`````````aaa````````````___```aaa```___`````````aaaaaa```ccc`````````___UUU___````````````^^^```]]]fff___```aaa___``````dddaaa弼Ĩqqqcccggg任lll񓓓҆hhhfffiiixxxsssrrrjjj̷зzQtRNST9 Y@:?bƜś>㶵XHf؁-a`ec SRZIW۽xIDATx[@c[Qn=3mi/[oa7IilD'̎$ٲeH}M-sn\KohpwYru;nP%.u]){yo @uy+]sZMeK=ܪb_UT{M?X7xʲ&vPx?wYK"yE,sZZ?[)='ьE3}?FH^E>j׿,6&\`ojs/-s5;_2'1_FZFu_ k |H'a^IQUτNCjK)E T`W@Sla+Aۨ|ĄVw(.ILiK PJgA-Qv,ͣaaeWh/@ΔL?W~ ʷ``` /x+jG0H`&cpdY@(WW@x#=5+rt' Ґ=\VP`O `L~6HHkcIqK :Yƽ40iX }R0<ӆte AÎҕ1v8a zJ@a Z.@2+ø)CGl',?Ѝ')mDЭ+~8?F1'o*!d\ rCRhZJˁ ?0f< XÊS<_s?A!ڢhT&PNަiT 4*UVmV-Y_Y ml:A: ZVg ^Yqpח4G?1KqN0̉y~8-3ŜU"O"C,BOck$?`&$f 22q xvnk7?ʵ5 }5̖5̖f"fS9::JX"x=hlwJ%G:1 JC}4$*kzQ )Ό ]ͪ? Eۋ9u7=26r5t L Bf6A}͒Vx% &$ % . d1W"_ÜūD+@k%oE%i{''-[liI*5&IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/printer.png000066400000000000000000000006631411575327000232060ustar00rootroot00000000000000PNG  IHDR pHYs+BPLTEGpL``` $atRNS-.uIDATx azWmkF@֔z8gVQq(qX9uחg; ub !vKj;hYVL0* ̗+C8jRkZ4ժm @ y}~׻Q©IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/question.png000066400000000000000000000042111411575327000233630ustar00rootroot00000000000000PNG  IHDR pHYs+[PLTEGpL__UUbb__________``dd]]UU__^^____``^^____]]^^``____^^]]``________^^``____``__^^______^^__________^^]]______^^__``__``mm__^^^^``____``bb______````____``______xxӑ``cc~~bbmmjjؾެ||߯ʣڣyy{{ddҏ̓٢ڢqqooppkkۥeerrjj֗΅aaⷉЉ΃vv}}wẁ٠zzךeeǖՖٟttЊ΄nnhh֍ҍԝ؝llff¼yyԔ۪ݪۤχЈ֘Ԓggý彌ьכ-\OtRNS/ Q3RrG&sL!֒PwS|Ě}9Qtx; XD1фdhCKhD\4k fVhG}T?ň?;y{+u2_x9m0͙~W^ 8"m4lpXAW6 {xp`0>G(\ .v)(QCEQ NsW !v,T.y%͢EhN9,  ̙n5h|{ן|Q<<>ѹO.r|MA<_3= n7~j faT?M:'mA#N;K (p$Oc{鱁P}kŬfS[׵N&wȲ))6V+ $d# CAf ,mT c\ԯlInB$ke#x;" $N%Z$Kafu9r緱D`v R'MI @ 鳦j(&>q lZfP̔&_~ n[e:g E,RFMث.%_Q^!ͣ8k&-=4R ~2eGp〯F/Xq| S H\hH)T ɎQ>Q JL:&(Et ։PNL~4fzBS4VdI(CDi2E*(*iDT҂\<{c_5oLGզplvj%LRD'?9zca(a+(cW6K+VEµ,dD~Kʤ1O62%^ .[x]Ϭ\Xj5m~0?!.B3_󯅵pX޸ildo;aϕF&TS_~~T+Wٴ kt?濵 rS?{ot*46:*T+VĩA~D?CC{8LfI%MmM?]?h*?\y4,Aŧ^3Pc[1c~u-** ޶~1 iIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/quit.png000066400000000000000000000024201411575327000224760ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLoooottoooooooooommjjUUoonnoonnppooppoooooorrllppoo``qqooooooppoooonnnnooppoonnnnoooooonnoooooooooooonnooppoonnoooooonnnnooooppnnppmmmmppooqqppnnppooooooooyOtRNS /3QRrGs&!L=֧P՗䒌HSw|qؚ<{Ǩ' vIFMxKޅShIDATxYS0 [HҤPh(*zBv[KԒe1﹃>Ėe9JHHHwt|U*]yZn _ *ϼ1 -!^ !3IF^T?而Lԥ@JHrrב?zb )GT$}I7ȇ+YlHh@MV LC8ez!+Y'$PY4Y@%Ԡj0d4Xb ,-XKBA%% ˒҉HJ)i9gcBg̳5lNl\3(3hl3sL |pTKV&2b+ӈ)c,h|G6$blV$ڌvL xpI mnV`-5Rs݁J =Tg&$ʍ}fm}[&⣚nZ0  㿌)_ߴ.nj}xz|lcFc˺p` B1` O9` K}@A?  K+UPRߵ 0+ z 2t ]@?[PApm8?V9IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/restart.png000066400000000000000000000032561411575327000232100ustar00rootroot00000000000000PNG  IHDR pHYs+nPLTEGpLntmooooooUojpoonopool`ooprpoooooooopnnnoqnnnooooopoooonoopoopnonmpmnoqpnooopowrp߭u~|q]*!OtRNS3 /RQrG!Ls&P|Ēw= M }SMSB hh jH=)Юޜ٪%|-I*pU!្Q)D(9D(I qauNj/JK@?Xy' Ϲ@} z 42x7+?h%@0AWha?%Α)j#9[Js}C`'ug ZD"l3:Us>Tj#Ԝl;@'@jO0A/AOPof-S04n@h'|&liJͯH9q=@`^qoser@#`[۹7jYREڽ{pH9n{~m@#`v~ @#`[;igCfG艨 hQY詸 hAY'(4Θ,Sr"@=$0,JJKhQ2rz?&3%f3)? bTN='m٠81 h F4h!K:rH*(mڸ1R$ 3GtbT+g= Ćph[6M+,'W۶\nۉ7.'lp[PXE­[5V#6:=98JzTsr[j]L&э}5lid"5底+l :ߒ3OW.7zz_䶱yQ9.t*?jRkn~[4ȷG4/2:+2Sktcݯt}K̖Nw6'^nDntC.5,xRo ߉ۼf<_MX3xFɟJ3X7hмB޷#>!WHD~8dKǠn':>5'PcP42\i32hJEF>1 ??Nx1AZe0O@ab'd秞 V2((2<6߉yoAa v3!U &bkI2H2H oxl q['?i&|C2?jRE} *|Dž RvlsmPy[(1T~9Ҡ5hTF~`uh314y#?bPRV:0Plb7P _2x/b5 |1F|s}:y Lk|~7p`=P܀p35&~xȀ0ޣ]"6lg,4'A}In>TK.h4Tԇ['B*|Um@hp>;Guz[Ac7ʯ}K^ mo|!}]:0Gb`{e6g|"Q5V}YUZݳ/WA9|eݩOoν2|7$TRIE.|]o>EIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/rss.png000066400000000000000000000034421411575327000223300ustar00rootroot00000000000000PNG  IHDR pHYs+"PLTEGpL!ymlm~ ~o[ͨnxyQr׹̦ӳ{׺tzkXR&f@ɡuշ}q+^ھǞ8ve?ȟlzgtԴqn(xśu•ɢ|Cv0ͩuնP]=7ѰntRNS@fIDATxSAMr@@B E#"`;{y8ޖH3q3{|^ &M6$@H LmNa Xތ;}s=`GJ-͙`!B@Ak,@U]KmI@/QPu41[}ݥ\jzEwC+u3"U\=聤9& lIf)]L#LdJD646.6(Ja8)5Fk,ͦ j&mtmrm멡Hz<8>ûabNm!W +ծ vzIH"t]7ٸY .|f/Hmt_@PUy0U-)dgJUɰR(u͢ ="T5z"*{Cw88FDE\P!s! G^"Bl#хtbte Pp6V[=Wt|W.ˎ$ U.GҪ0(2`sdiYַ1x3Ka&B1!V8H/qVldͦ5Tiv8_ǠhE~{H^,q @ [4pm5 BP9Ml\oTKtKbG.Ձ)ԓBw8sWӶ(;83^+p 6qAC;p럄n#X/ +D-$Jny )=z/g ܛ ^Վ ر/ $lݸlOHqBĈS?b)v{J#_vpJ5\ Lb@H $IOW*$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/scanner.png000066400000000000000000000012111411575327000231420ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLfff```aaa```___```______`````````[[[```___ccc`````````oooqqq```bbb___``````aaaeee}}}yyyccclllnnnfffzzzkkkYtRNS W#$0˗ S[IDATx헉R0EShe{:Ӂ^pE(r2rwZwXwVp;*4 '~?kAg ~~~~~ᇿWf40yfjDWl˶VWf2^ edyT70WIf-ϟ$WVL: ܑ< \T l 缄$t|O`?'3zf~ޘ=F2PӒ'0ﶒ+bX)@^Үm:/;.RV~ix@0ގ@0@?RnvIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/science.png000066400000000000000000000031771411575327000231370ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLaaajjj```___UUU```````````````______``````UUU``````````````````___`````````___cccfff``````___```aaammm``````bbb___UUUaaa``````___aaa``````aaaaaa`````````````````````___ccc``````[[[```aaa``````______ddd``````oo____`b`ii____````__``rrr_t_ooddd`k`hhheaa__wbb`e`__mmm``yyy____``ll`h`fff`o`____kk_|___`u``c````d```_g_``__```}`eeemm`n``|` FtRNSW #eVFo z;, ї :"0X-Ҏ$Edʋfp/IDATxW0ǝ@aϰg޻@[Jt_ߓؖdGOy,D28p@։Ɨp8_Ot8h|gW@e&k I rWicI d@,pn=@~ ǟ:lM8@#'dL-o P߶U`Y@Ыi Hh?puo `=.[h˄ =}g`LvJݴ q`^r$S3p.h+-w:0DbE{55\/4_7a` WP\Q:Q@  #t#*0&1:U^N p ^'"o([q(!yKpl?!A))ZqI)J i9쯓_b\͈` ]N_l.빪@KYB)\<ÏrάD#МN )Tr,bnG,tB!*aOsGRm cɐvxM 0sXݧ>0DQ \f#wy-AZv[sƨaTѻ/c^zbQQcAUbo_3i'ALD_._\izk2z ы >lW[EBmފʪr[Ah yIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/screen.png000066400000000000000000000003761411575327000230030ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL``````>tRNS+NIDAThر DQlkL@0l8Gps=|(uf *' zNT $80dhڀc N$vST~IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/script.png000066400000000000000000000021511411575327000230210ustar00rootroot00000000000000PNG  IHDR pHYs+YPLTEGpLzzzבccc___aaafff```bbbggg㞞oooܜeeemmmuuuȬԍƪǹ뫫ssslllޗtttnnnhhh𿿿xxxqqqjjj·yyyrrrkkk{{{榦ʊ|||~~~dddtRNS@fIDATxRQE%%"#L`0&s9_x1h6=}wk랞RCrfc98h ,ppp#"VH$~ E~ s%+g(0o:(L+|[s Y=V įWۢR gP N,פHg4Oft3y|(/?_`ycR4!/%.\%ot"zTQx9+WkPʍ"IǷVh| :{F(i$. {FTP4@J=KN#q+3#2=1X'oG 6ɓ]HWZ'~?bCW|zI H ? @wHB DRؗsH =q o/X=-ppp8 p rشIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/security.png000066400000000000000000000030071411575327000233650ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLƪƪŢê¥åª```ūپϴĪɯ¨éγ̰ǬٽеֻչԹͲ§ӸǭѶؽ׻дйStRNS +  K;,Ajo6n5^Dr|]CXW{B"ࢃis:!qkL-9SIDATxgW@w1۫{뮙dtd&3 =~3y^DDDDXF7iqPiqC!%6 Cttd$2yRN,s +pHpusu0IDJɄZ:ցZ`4:e@'Bq0 !w 0>wR?SQjK!! _`2B@! ?m(B` LR  ( ׹ l+es @<^ªg ]Uq|S;-p/nnÚ-@8% $Ma|8XEִ:#0vܹʆ&=ivڭ'nJ>*Xk@"o]V]XJ*hZ5jgM`,TO;v}i4^;]pOI?o_y{Fg7@;5+y41ogb$`EQ>?3#[91+`v岌3 h|Ԅ3 >ɴ` p2IT^o@ϰMRyg!b/,׍ljf&+Di+KxL]ϣ2@y!>|2—;xMi5&*jUgޑOȼXqXo0p yE)Q寯~Au&˲p9Fvhc6unn_Gȁ`y"z}EsRv=iu⻺mqvr)ݍ/{s*zroHGZ7HWraHc- """K, ج>IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/server.png000066400000000000000000000003061411575327000230230ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpL```щ5tRNS@fPIDATh! @*P0wg;uR=s u~P-l` [XRj4n6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/star.png000066400000000000000000000037631411575327000225000ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL߿HDtRNSUfw" 3D+<л9M^lscm >ɹҞ׽e2Ao~ b-i*WPE?TIh%/rٛ NCqv($8BaGVQupz`' 6Fty&˃5Jx:O}#!0ߌ4S]\1_Y_#:IDATxCAnлC<FVQ{ ԋݽygg<0;;CH)Rp,R-.Vy/xވ镈5Oފ)uH4ȕsb2Z.ƈ$sX~Ĉۈ"D2H *G `RA^D]`@'IV ب lG~K@C3 dFRHEHo`(nMI`-b1:lE*kNk kEA D JoC"@)Q 4"|T),HT. SGAc>BPPաr7S0a颍(mCz8Ot+އ:dd3@q}fvs"w2ɹf?وbLM_p_L?5W_r:|폠p?k!&{)Z$4Tpg_OUR8~y>5ԎߗH<ݙj'v DT:$uf?:~(= )g$tRNSBA@Σ̢4֧g')lWOmN35X*(VOxbIDATxv@H qwez8V4]EjfNݟBs?eY"H@VoP4 h.FI.Fio@P|7<_X&Am`_ bTCIPxI'F3 g kJpe@=8v}kF^ [=%e8r#oTTwU,98WտRD**߲\e=W!=%\ 9R-'ڝe''p|SxMhA[=JJUZ!@5iP#@ICn@l,X] 3G. D6nc`XB@|aᩃ&]? h9`>#`3d#k_Fc }QQ,7&[3ͩޞ(,fR]/*KjrSB%X+M/]dSYO=bC+Xp9~/'K*Ax=:!_0XM` {&F&V.f6v>FN%~K   " dfIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/system.png000066400000000000000000000003521411575327000230420ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL``````tRNS+NvIDATXֱ 0 DxaO!h̒`%A>gW|Y)*/p Ag[@{ !X"_$2/ Y=9zUAIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/table.png000066400000000000000000000003151411575327000226040ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpLo```'v4tRNS@fWIDAThر @Q+X VLHN$;KIZrmˣ DeY, O:RIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/tablet.png000066400000000000000000000015131411575327000227710ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLxq```oర|ut{|syxv}w=ZtRNS@f3IDATxv0Ѐ &ؔ@32?,et5r`="o˲e/=A8Ÿv/_,L IJqNJI wROLZGqAZ.I\?;@odseqw8 1Ǚ/{n>Ug:AWs>\5^l۸(3ۀ:Ƨ[^1Ҷ Hڷvu=/Լб P0h4HLlb*r镰ngX؞|jMK q5?[߲|l З-v]Y޷Xf,f5_gfTX c#x޲*)@@*s+@Pv( /Q s@٥A ׋@oG'h@h}U*ko  :|>Q /HxA<OȽIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/tag.png000066400000000000000000000012351411575327000222720ustar00rootroot00000000000000PNG  IHDR pHYs+Ι&sE@v]Xba$ /l_ؾ}a /l_ؾ}ynOy a~r6?+8 ;vЀ߯`@?6 oLT@fP@ۧ71) (9GD@Pv}ۏNbq95&q6j y $q$G9V|y,X_L|a /l_~~9;`"`yȯ!Ep:jw)PJ^>TjT`!&P`fXMP `~eЯ*`_]W8n~a_T8w?SYQZRO4UAsW(w$Q@cŊ;h@F-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/terminal.png000066400000000000000000000002741411575327000233340ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL```@@@/tRNS@fIIDATX; Q.%kęWRE_]Hn*N&sZ}Pn`YupOF#]IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/text.png000066400000000000000000000002541411575327000225030ustar00rootroot00000000000000PNG  IHDRPX pHYs+ PLTEGpL___#tRNS@f9IDATXס 4I4L&>{z囏P?y5؃M$`6 }g: >P/IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/tools.png000066400000000000000000000020021411575327000226500ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL]]]```aaaaaa___```ppfffbbb````````````bbb___aaa```___`````````aaa___``````UUU``````aaa[[[```___``````___```bbb___``````___aaa``````oocccdddvvvooo}}}|||rrrz1tRNSք4'NOgmlXÀVWP#\IDATxهV0a9go2l] C4!J5cǎ omx3wtmowA05S}g6Jw Ewn?紾C3.ǜw> +b11ti}đ_[  >@0P))|*l|X*_|vևrkχ!-݌|X8#+iGX<+IGX Q6 /H1s |H&,q$ XȇX-T 6]LbB(?m`u~y5:??oPjfX>_4;=1#P 0 hh 0#sA y :m@I }}Ov7Cya҄e KKKkрk0_[CcZ$`7@ý{0NHH .V @$ p ?+~> ,W4pnX T'\*P P_/?&>IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/train.png000066400000000000000000000025101411575327000226310ustar00rootroot00000000000000PNG  IHDR pHYs+ PLTEGpLaaa___]]]```______``````UUU______aaa``````fff___aaaaaafff```aaa`````````UUUbbb___UUUffffff``````aaa___```bbb]]]```___```[[[aaa```___``````bbb___aaa```______````````````^^^````````````___```````````````______```ccc``````___```___aaa```^^^````````````___```aaa``````^^^`````````yh6_tRNSg<+32#W ' f4tc5 OmÀ-&0>ϵX$јNd.%hl6u,@cIDATxgS@%e` ظzhL&svU>H{{xf fu% Vlakֈ\wg(jb;i?F=c7E5hgi.1݊ET)/a%>CT$U$ω Ċ^~kbI '$4*%{%~L,j_>*XFKu?{.Vղ|//.čb^Mm9cVg|fo(/vuQ=KKoObA aL|E/V`5}3jdZ_@-04KEf͜a`dSvjo`d\7 FP 3 j؏`$}^20I 狩q?0iޙ8R0 }ei3m¿MS}PHy6NqcJؐp8@DQ&c?cH0@$)\a$4~J(d`~d0O0"4o&7FDшj+r/*- ?My^E?܀T`ԹkO{3wuf-ԮIwwlrBg.xzi#9O\K IZ)犔Y2 e?RA؟ C9x*˔1"%@K-?R?Vxp+^pW@Xd|{/72%r4h(/YvSZ!‡~BYMSm4T/(%$' QDaBҲaX|L hsp <i@j)|땐bG+Z*7:J&o VBm#> ;X|7\ŘOMbSBjA8)|O|0eu!2"V55>֠x&Gt/8/ B2r|A= p'G8$?٠A  ! $4'IЈoЧlDX bŏ47$IDْdȦTD`h%"rDB`9 ܼN5xb/Il ST||ZOЦ_n bBF@_͘n DDA\9'` <"9HRLL  Z |R_C [)\ _@[ \[rwN_K~k b_ǽ) R>-G.L|2<7(h77*j7/Ok#CWcgCsCsH/.a:J]aD~\JN=Fi(p=r~F5f۸zKgw>LO1Eb˿FYgkoV_3ϕ?1,cb'G,gsvr#}/mM+zGY*lvw׊;녥>e-XhhJA*aDB4і0,>5L4%Aq sh"Ac9H2єp > &ƥ 8|*vPD[砢t A%5>LtAm"UhJW1xxx|ʈ*;IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/vector.png000066400000000000000000000007631411575327000230260ustar00rootroot00000000000000PNG  IHDR pHYs+HPLTEGpLĠo~~tRNS@fDIDATx @Cz7 FY뮻imv(V/X8  > @ވ,;{`v`Y_kڎ JLqs*h2*{"W2h\o%͆<+r8E}a(N%o%!XI $T+s_rKVрB!|#oè'| d>Ӄ T`Ƕ8g4Wpz܄_DrX\BJySʡv*Á͓@5]6ҎLshkZVmMI0xdOw3H(;7nC:fqua|K҃{ZIDATx[eXK !fnw-N)ZWww﫻sww(;;~3|{ܟ)̝s=w* ۰ ߤbaC^fJzW2QCMR|} 6 ]H 0ҽBտt9Alh҈]8\/ ۊl4@2OͿmC 1&6)xq0-G5AH BI{@aL㎒\q&_x $b^ o: ȀtA _sAʭV;$UiCG+o! IbmPc̚V3{O= A%m+Ik$LX]j:魑-hܱ%,!W-HQqJI8GEPLs b[2f5q~SDB6KNR1"hA=߈hZCo?RG Uq.?5JZ{yS,[)b{ }[%yyn~b-aδN |-Imw4;=)+k<]kLᨰƈDSb$T6=nx %*m9Y|D*KaK{dxպ[7b2dOMKWVYR{ O HRh;mOY֡ӍВ.]ՙ9}g`"CwY|93xӗ.z^UbƀdyzW_b0 lF7D w';A_yxٟ ڳn~I< 6шeMC_V.pnp S=~W Kt[oIW@G 4,f&X,ԻIG;C;wc@A@~ ~T۬\@Pq p[>nkWv3ߟeܹwkRD `<䍞Zq3|&z,@+AU\ 6,űjS& R \z =WTd1-$-7ӌy>wv?x9](B%}<7C+J{e~iJpP{!֭_*MF![^˙oxDhWCw4[DBy_&dCm؆m0/wzIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/warning.png000066400000000000000000000016031411575327000231630ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL77߈7977߈67ےI66߇77787*77ދ77477@87766787Ϯ\ϯ>U!tRNSו-3S.,!2}{IDATxGr@@Q1~Rɖ L]*ۤ݃^/0lpu583`_{Γ=˛uo߹(P4w՛>j P M@3dXH$=d8. Eb   |  I,d?D|1t p @ 0'@ 0&@-`J@ICP#(d& @`@ 8`  ""El`*tEX` ( 6km:<H@2C]6[c)~g R=7$No`{~m8j] =%Xt(n?a(| T`"!P]E@Ppc]q7ۋ h!x[NW׍؀ύ_؀E#`0ieEpa>OӠ_a9}B0Mܟdy8/_Ct IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/webcam.png000066400000000000000000000037601411575327000227620ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpL```Owaaa§Px닥쬬V|kkk|||RzbahhhRyeee􇇇mmmnnnbbbuuujjj~~~lll{{{yyyȾW}zzzܻɓrGtRNS يR6rqKE h$G('QPUΕpgᏉVFTDJ%0}KIDATx[I%)"*)w^Qkf{,"9$".z4f}H\qNV&fgff&Tcy&EyǜP\erUVO:U32>3u9#)3 9ELI](ʱsΝ2.zwO:ncj*帎DS[Iӿ2mPjɦ-z㨢ӦM:DZwKt6MkxF!oo50vorLL`*_Po55bGRKaF/Hī{PmzTҨTC5ug h ah>?hu!!uQ-y1Q(Q>urS$R熂(}H|2e|'k(Kobd<ȰL|`(ܔ,ϟd54t0gur-'K/,ch8_PGs捆qq ^jh,^4q}6 8x5}fdbb(؅;]cAb_S{mZ?nٍ[eT+5ʴzDži+-kY!vbf?aN~Qt|(ZLv(`n^avk4Vc;~BaiNU0rM 5tF&`Z:0+9~Z :+?̾$[bi :we3"SVϐܝsnn }qyf!(m |T<PNQ > I tK>b M,NY>z?x}H4; 0!SpT``wA Fv*L&AЦq:QnlJD̓>Ȝ;3G* I|"T**=Ec*A!u ppr]_deG`yoEwh Jd{|w;LXh6}  lmq8 W\q/l G|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/window.png000066400000000000000000000003151411575327000230240ustar00rootroot00000000000000PNG  IHDR1| pHYs+PLTEGpLࠠ```atRNS@fTIDATh1 DA,` wB_msS^kR\YLOƮ -|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/wizard.png000066400000000000000000000011531411575327000230160ustar00rootroot00000000000000PNG  IHDR pHYs+6PLTEGpL``````e'tRNS<6{9uwyQ(DIDATxr0abVEK! Yi-:٪p80 `UҀMAx@{AdZA7W*]*'ax y}M*89W ϟ 4  tGA(꫺ki ؇4*o>`|むoZ "`*(Eo?! ?_Fc?H?z?Y`' h)0~_Xu[*DgB? ~Ao b?Y /S.?u T ~K tK tK tW}ӧO>};)09t`1\`F,07?.Ťu. >G Xv[]IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/worship.png000066400000000000000000000011401411575327000232050ustar00rootroot00000000000000PNG  IHDR pHYs+WPLTEGpL___``````UUUaaa`````````UUUaaa___`````````fff```aaa^^^```fff`````````aaa^^^``````tRNSۨ@ tc-5d.hXg6ui̿5IDATxn0`n̕IYU ^o1%A /L%蒛`߅`׫^0_BXNXJ{#Ջ׋Ջ׋ N]M?lzo*"A~* V5fztMo4wH`?`mE50 5OΦaUAQ\0%0c}˸LIs~[q}NpuzOߟL7XPN5a2HBE@EM\uAMjȋR鑳yUH w@<A)̠{.IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/128/xml.png000066400000000000000000000027311411575327000223210ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEGpLK'wlxm}ұˤz㹅Eunm׺ԴЮ!|ŚRMyPr I麈t׹ٽs շ=o;y5>s2qj*$(ǝɡś_{㾏wuⷂpz6ϫ1p0+]•voc"×[~ |ęTzy㽌s r JڿD踃q ~HqGؼB|ػA趀@uѯӳo4Ӳ8Ϭ-lkf˥iʣ#Ę`ZXx㻉ھ%.)ɢnԵ:tRNS@fVIDATxW1p-ii!Ç۰?8Ś^x~"]>m$we@]Q@ @ @#R o4b O2E m@ޯ7L H7xb F^L"_;]lg! rgjXW5N[csBZ3TvBc,fX+cJp}tB89kdl#L @=)T@N!M6@a7!4pnLs`Nw|֔ESOg˛`70me/8P|9pteψ3-\˚C\9Ս .Vuh(U#acjLoP?¹P?oXެ ;'o(o}AOXzZ(U>POk{"xNv!>J_A vR1"Z;vgqc*^,vlMcv4fjss1J^^d|~(r<珺*a}pgNa1lF\E؎HFW{a=逵NPx(wu~ {T+GWV +YZ>^TE47<;m={ZqDcSz>= Q 1NnP)J\ykq_yGpI =W6@ @ @.c_` IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/000077500000000000000000000000001411575327000207225ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.stock/gambas/32/access.png000066400000000000000000000002751411575327000226750ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLopߵUtRNS@f>IDAT(c` Qb"JJ(JJU`fRRRD16Bt0^/IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/add.png000066400000000000000000000002441411575327000221600ustar00rootroot00000000000000PNG  IHDR IgAMA asRGB pHYs+PLTEGpLo+'tRNS@fIDATc`H ,sp1F5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/agenda.png000066400000000000000000000002521411575327000226460ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL`````````ooބtRNSP/IDAT(c` y P0 B=w 2AZ+ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-bottom.png000066400000000000000000000002101411575327000240150ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc` V(Fhh2_3ʯnIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-center.png000066400000000000000000000002141411575327000237750ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc` pgDCCCh 9; IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-height.png000066400000000000000000000002061411575327000237660ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc`\VL:A#7`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-left.png000066400000000000000000000002151411575327000234500ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc` pgXCCCi ˂85IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-middle.png000066400000000000000000000002121411575327000237510ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc`V-: Jh@CpvZIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-right.png000066400000000000000000000002141411575327000236320ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc` ІApg:;]!IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/align-top.png000066400000000000000000000002121411575327000233150ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@fIDATc`V-` @g@Ciˊ\ 5t e<rx˧>ӸcۑΖ~=cy`(s8QPaUvrI?j]rLLsCOg%90+5ɡ w L@J,5㐊ؕ/F?Kۢ(IDAT8˭0f9uȏ%L˞mGP ߉(_#+>̶xxݐ6 Id5)1o)…oZP XKcL3N0 RG Gp?Y2kb[e]̵FCǞ^3WIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/average.png000066400000000000000000000012501411575327000230400ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```fff___``````UUU````````````aaa`````````UUUaaa___``````aaabbb``````___aaa___aaa```]]]```___````````````___aaa___``````aaa```___`````````^^^```___```___aaa```ddd````````````aaaaaa______```___```aaa```^^^aaa```ccc```___mmmaaa^^^```RPtRNSv(* SUyW;J_N%Trw޿H#|R8qKBz&e$j bIDAT8Rr0<16% @B59Ɍ-܃7W%,C2Mzlع |?b e{k7Xt\I0r@B4Ձ!ӎT="|s)FMJ3I~h>."Á/{ # ۏ+'MoYE%G 0a ߀ b/.rX59h}_8IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/battery.png000066400000000000000000000002431411575327000231010ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpLo___$tRNS@f(IDATc`@!,cІ444 L1|`i³IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/bicycle.png000066400000000000000000000007701411575327000230460ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL``````___aaa]]]___```___``````@@@______```cccIII______```___^^^``````````````````______```]]]```aaa```___`````````YYY___]]]```]0,tRNS")J1X_c!<IDAT8˭0 Z*x>i*X@G?a6IV,m[\`Њ#Ot$ڈQD6F"C\\ }Y1 Xmծ#oXD|ˏGVz/pCW4`J  .U} (hʣ+V! j 9̈nj"фIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/blue.png000066400000000000000000000005311411575327000223560ustar00rootroot00000000000000PNG  IHDR D pHYs+EPLTEGpLopopoopoqppootopppoooƌtRNS`@G+) ȉ& IDAT8˭Y0 DQn,V%Ocֶ)@ P\pN1- ,t>4yBn_^ HxRd$QNFH/>Tۄ2(S sn³gWu_ dbl6å |KIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/blur.png000066400000000000000000000032431411575327000223760ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLUUU```___@@@fff___FFF___IIIZZZUUUbbb]]]UUU]]][[[UUU^^^]]]\\\^^^LLL]]]___```\\\^^^```___@@@@@@WWW______^^^___XXX___[[[^^^___^^^^^^_________\\\___YYYYYYZZZUUU```]]]]]]^^^^^^YYY^^^\\\^^^]]]\\\______^^^```^^^_________aaaXXXUUU^^^\\\^^^^^^^^^[[[\\\]]][[[^^^^^^___^^^\\\]]]^^^aaaRRR___^^^^^^______^^^```XXX]]]___]]]```______```^^^\\\\\\^^^QQQ^^^^^^```\\\______^^^___\\\^^^]]]___]]]```]]]^^^^^^YYYWWW______^^^______```______^^^^^^___UUU^^^^^^]]]```[[[```^^^]]]^^^^^^___^^^___\\\^^^___]]]^^^______^^^^^^XXX^^^UUU```___KKK^^^___UUU^^^]]]UUU^^^______```]]]___PPP```YYY___]]]```^^^______^^^]]]\\\```___```[[[^^^______```___```ZZZ______^^^```]]]^^^]]]^^^]]][[[___^^^\\\```___(&tRNS  !7c' 5E] ,CN2(,sS؎$WFV =;K*jov.baO44{}فt@6Z/ѲlI5.Օe;k)G+mag4nz m;?Q10)I\+LfAf"uДͫy١ˆMN6efVu.q'1@Dinp2i:T]me ܶeӒ*'aN"YrPy bu\`F;+5U8[Zm`G˜wԡe=\>ޛV! 4Jr wݸs[|7DyzݑL} ضUUYfB{F%u*pjnSCɬU,nND't^ #$bSclrsrr2Jՙ-/ ,VaY{ 5t-QR&S-P*[Mg%V. eٔl]$"xy?>еG˗.LhJ cbAJlJRN^bg+{2v6I>qӍ;,yr0pZ99@%lL\yyJf!P!(` K,475.륿~,DIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/bottom.png000066400000000000000000000002651411575327000227370ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___tRNS+NDIDATc` * pVZ Zj j"PRK Pv2}WIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/brightness.png000066400000000000000000000005211411575327000235760ustar00rootroot00000000000000PNG  IHDR D pHYs+6PLTEGpL___]]]UUUUUU^^^bbb```hhh___mmm___```______```___```SMtRNS< /YXJIDAT8˭Y DMXҤpdRe>1O Qx12}NS|a.YD@FTЊ>R+}QIqGLnXޟ67{  1xM񡤧jvG~۝bX0bɉEzX-! ^IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/brush.png000066400000000000000000000005161411575327000225550ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpL```___```aaa```````````````bbb``````````````````______UUU```bbb```\\\``````[!tRNS+*@'0oIDAT8I QA}WQW,$ʵJeLq2:x4 Vp' kV{aHBIYHb;Y}]a&OF]. `aZ(_( fd|]Om\IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/bus.png000066400000000000000000000004451411575327000222240ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpLIII``````]]]```______``````_________```G tRNS(s-YIDAT(c`  jBue.0 0E @vd { 6_80`'pM K̅ \dbW}B0eL$ b^E`ݛHHNDUجIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/c.png000066400000000000000000000006431411575327000216550ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLTTpp66MMee袴촤44SS__xx//JJii**QQտבXXYYhhtty|stRNS@fIDAT8c``U Q& "8r z:LB8pqjJpPiyqXɌlFͩYٰ+0.)5}N.%i&N\l (>A(%*2 ., nAv3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/calculator.png000066400000000000000000000002431411575327000235600ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```"' |tRNS@f-IDAT(c` 0 ac(0$_-JJPD L[ iMIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/calendar.png000066400000000000000000000003261411575327000232020ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpL`````````ookaajjjaatRNSPLIDAT(c` ( !08"0 06P.3:l$2*V\lnF1.0tl!b}o_IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/call.png000066400000000000000000000006431411575327000223460ustar00rootroot00000000000000PNG  IHDR D pHYs+rPLTEGpL____bb````ff______aa__dd````ZZ^^______^^ff__UU______^^^^____^^______aa____+h%tRNS/5% qB`ڻg L123uIDAT8˽0E0y_mR{{nTmZ[rKh s}(h'~,Ay8U`;'i zIyz!x3/p+w~&_ ]Ôfm'b|> p~Vl {#?8)8LIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/camera.png000066400000000000000000000003471411575327000226640ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB$PLTEGpLtRStRNS@fTIDAT(c`PrQE&˲$T'" l Fp ,R^$T(OC b8LФ-ÙR#(5"_IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/cancel.png000066400000000000000000000005141411575327000226550ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB*PLTEGpLooooooooppooqqmmnnooppoooocP tRNSWZT-*{mˤIDAT(c``1 B" Aw'»JXdZd!J^(U+*0 QPQYHɵ\$`%( MEݻI|P2|4TE"`>)M/J * p|xg1 &i0a@D;IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/cap-butt.png000066400000000000000000000002101411575327000231400ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc` 0tdu+5hIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/cap-round.png000066400000000000000000000005111411575327000233150ustar00rootroot00000000000000PNG  IHDR D pHYs+HPLTEGpL```````````````___^^^___fffbbb___`````````UUU`````````___``````mmm```tRNSV. 4[Z5 'IDAT8; DAdn,$$TpK BE8)Wy(Rq8.+j<_Ts$ZIq8"Hc- HpLB(I> LIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/cap-square.png000066400000000000000000000002071411575327000234700ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc``"u#e IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/car.png000066400000000000000000000005521411575327000221770ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL___```aaa```___``````III```___```___```_________]]]ccc___^^^bbb___]]]```BmiKtRNS*s(Ԯ44lKIDAT8 D!!dOW(ImQǾ3a,itR [LhY`βj_Y`F\/y[Ãר;7̰ Y,pB2ܹ$@A~{C _T`iJ۪WWYM^y`Pz#g5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/cdrom.png000066400000000000000000000006301411575327000225330ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBQPLTEGpL@@@򱱱\!|tRNS)cۊ>K?JzԹIDAT8˭ EY]k@ږK'IH]E;37:녂Uzᄞ9!T pR_Xn'vվчx]5djo%rǔ#,o1sf vÖI6JDˢ -=yu jy~(1Z,IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/clear-rtl.png000066400000000000000000000004021411575327000233110ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL```___tRNS+N}IDAT(ϵ D?9qa  DkryGPiVN [f,*$* AOB@z>Vmɧ)^c%\ig= %P7d15muaIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/clear.png000066400000000000000000000004031411575327000225130ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL```___tRNS+N~IDAT(ϵ Dq6h@6 :@)F?mr\^{JW{@cƸT%% 8 i#$F*d#",w@2yn53ثW%#+X/ԟ;uc/(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/clock.png000066400000000000000000000007761411575327000225350ustar00rootroot00000000000000PNG  IHDR D pHYs+xPLTEGpL߿ﷷoo򼼼ԏݺϗS>tRNS)c>?KJܡv IDAT8˭n0CǹCCߐf J̟Ț/zw8Td,xZl?:AˋW]4u,m?zp+g9_.;N`Gէ& 40qt}=9:aDLh%P`3R h(%.$` k]ԈS<iHIiH]6ʐjT衷tXDaqqEO_N*w8PM*P҆QIJKu1 yBỳA@-z] 4IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/color.png000066400000000000000000000004341411575327000225470ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpL__ooonn^^__nnnn__pppo__oow9 tRNSQQQxyIDAT(c`lҘ"( @H@ C1tD%D{X *a} % FP$`H&P k1F}dCdsIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/component.png000066400000000000000000000002201411575327000234240ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL7uO}tRNS@f IDATc`\g`jPnH30 W36IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/computer.png000066400000000000000000000004051411575327000232650ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL```A tRNSMNUkIDAT(c` F8~wR,@q p" (XV9 @6d- @)d@YkN- x! , D!kYBXr1QgIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/connect.png000066400000000000000000000004441411575327000230630ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB pHYs+3PLTEGpL``__UU__``________^^mm``_________ejXtRNS[VZd_IDAT890P$[i8I'|G+%"#z梟M"&}$Ax j`G. x0-˺}2VIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/contrast.png000066400000000000000000000006061411575327000232670ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL````````````___```aaa]]]```ccc___`````````aaa```___```eeeaaadddJ"tRNS乨[y! tsUIDAT8͒ DKKաB}y@R&"ϋRf]qEkO;"Rׯq0W=N={czTq|j|@JL -P: -9|"EWiXv}~wn"0;"r\~[쓘8ye x7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/copy.png000066400000000000000000000002401411575327000223760ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpLotRNS@f0IDATc` XK 10@Q``*Ffp3N+.EIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/cpp.png000066400000000000000000000007421411575327000222150ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL##$$߁EECC褶77JJ瞱뱡==::FFGG66[[nn߀QQ{{ᇈHHooTTUUbb--tRNS@fIDAT8 0 I\Ig{;VBz>! I~ H |D>q+A$,IDAT8˭w@J!BzF̴/$>u˻Nr=SCK,4;h8CWɞpH卑l4Nv7^R/*DAkk6(\fV|2+wM3#J yI.,,Jb(ѿPbR]ߵC67Rx.ɾ>`xϯO>ퟧP(,E vgi>S"SieVZ `PX7 О2# 5,SPRuA0t67͈rju֤1SR6@Z1{ bJbV^ŕrma&e$$7,c]~GIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/database.png000066400000000000000000000007061411575327000231770ustar00rootroot00000000000000PNG  IHDR D pHYs+iPLTEGpLOwNvLsNwUUOwNwNwMwNuNvOuOwNxNwNvLyMwOwoR|nkfcmZ]nn]^DtRNS(>Ibˋb(I[?IDAT8˭Y0 - <6H*>%4iQۨL)L9 怚{c;u}'jMZAVurAFM+bhoUϓt9i_(d}9D:Hay"u@C\ 2H mL~ =[5퉱}g0N-sx^q^Fg]63״3|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/delete.png000066400000000000000000000010161411575327000226700ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBrPLTEGpLooooooppooppooooooooppmmՀoonnppoooooonnppmmoooooonnoooooonnoooooooooo %tRNSZ)Tc JK>©?Sml&@ IDAT8˭钂0 Auigg̟,kT~1^ڑ巋r>vI%xcMӗycv8Hc?~zR-ŗ =.(F\1Mu;*%; j1R PX]8Xt9 rNSp-P՗l5˶[o<0m`w`r3rECoF.оQ òV/ s1R  IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/desktop.png000066400000000000000000000002561411575327000231040ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```optRNS@f8IDAT(c` QV%$[(P0"QAPn*Nf9B6unHIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/development.png000066400000000000000000000003611411575327000237520ustar00rootroot00000000000000PNG  IHDR Tg pHYs+'PLTEGpL^^^```___\\\]]]^^^___bbb______ooR tRNSMLhBZIDAT(c` 0f`޽! ޽ d  i@H ֻ7#) ލIj(תBP@J̙3( ] 1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/difference.png000066400000000000000000000002551411575327000235240ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```i%ftRNS@f:IDATc`\` ?jCUBCQ  @ K$nIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/directory.png000066400000000000000000000002271411575327000234350ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpLo߸MUtRNS@fIDATc`0 Acx.IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/disconnect.png000066400000000000000000000004521411575327000235620ustar00rootroot00000000000000PNG  IHDR D pHYs+BPLTEGpL___aaaaaa```___ˆtRNSV[Z૜LpIDAT8ݒ D UB0Ond^ҖO-#r&j GBBΛ9_$LZEADUh4i_ l~ / x0eݷ}mdpIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/down.png000066400000000000000000000003131411575327000223740ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB pHYs+ PLTEGpL```___tRNS+N=IDATc` p- U@beZ,$j0mժ 0E]Y+ڥ@l F" wIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/download.png000066400000000000000000000005371411575327000232440ustar00rootroot00000000000000PNG  IHDR D pHYs+EPLTEGpL```bbbccc`````````pUUU```aaa``````^^^````````````]]]______o```@tRNS/r̀ ԙQ˂gfIDAT8˭ D>j{, Mrՙi' ))ܻ,]7F<+tTc7ds>T }OK@v27ɀPPCŀpϣqy{ 5\ B J!QBx5 g&ȔIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-arrow.png000066400000000000000000000005271411575327000235210ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpL^^^___```______aaa```aaa______`````````aaa``````___```aaa___```___```aaa```bbbaaa```MtRNS&+kf i<:'6zzIDAT8G0D2fHanVj}i ¸RƼVH g _o1q/ ճNu݃RJX:ͥQ5Fu>p~O;e8sA $0IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-circle.png000066400000000000000000000007121411575327000236240ustar00rootroot00000000000000PNG  IHDR D pHYs+iPLTEGpL___aaa___```@@@```___^^^___]]]]]]^^^____________fff``````bbb^^^___bbb\\\cccaaa```____________```*"tRNScW) FE>?JK܋#IDAT8˭S0 *m)9 D^6V8ehlM!eшanO,9*|@#F:q!.C!c3- Wת5Z  .ŋߡ~9x4t4E -^Ӏoc c6D@qXqycY#%Ѯo<[Jyы2KӬ=s_)DGIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-line.png000066400000000000000000000002551411575327000233140ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLaaa```aaa```______```;tRNSkiiɸ(IDAT(c` 0 ()0wDSP"0``0)`` 1;H&EIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-path.png000066400000000000000000000006071411575327000233220ustar00rootroot00000000000000PNG  IHDR D pHYs+iPLTEGpL___aaa``````aaa```UUUbbb___`````````]]]______```______````````````mmm_________fff___UUUccc``````_"tRNSO-Gr z)̢@ ǿzIDAT8˭R0c0†GuHH!Yqy,n$ Ŷ<~J ֑ I&A,k+꾝;DU=U(95JE|eP4x7W#Ƒ J&m3%E;>bnfc0f, {r\IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-polygon.png000066400000000000000000000013541411575327000240550ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```fff```UUU``````ccc___``````mmm```___```___aaaaaa``````aaa___``````]]]```aaaaaa```aaa```aaa``````_________bbb``````````````````___```aaaaaa___``````aaa^^^```aaa^^^`````````___ccc``````___aaa````````````ddd```aaaUUU______^^^``````aaa`````````````````````___aaa___``` N[tRNSE,؝݋j>7-t{O:q2#3c (0׃D+*1?6}$=~8%JK;TZϪ[۵IDAT8˽r0Dqff2333N〥ytή44vO^oyb _7܁u1s3ѝ*:C!{Ib#&m*Whf >wh5Et5-~;YozjgH/g5>Svc ib/#@<4%).aOjIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-rectangle.png000066400000000000000000000002101411575327000243200ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL```EtRNS@fIDATc`@ .@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/draw-text.png000066400000000000000000000010431411575327000233450ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLaaa_________aaaaaa______UUU______YYY^^^^^^______fff______bbbaaa______```hhhccc___aaa___``````^^^___`````````_______________bbbbbb___[[[___`````````___``````aaa___```\\\^^^___``````___]]]______]]]aaa```8EtRNSg KI3/ԇ%#PV'|qޕ[uzflw,a 5 ZIDAT850N afffw+%eM ŕdьV٤[-يC盾d\N,c: rc= 8yzʂ,jmCM̩;LTrπ?dvG#Aja)IӚȪ| "{% MIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/drink.png000066400000000000000000000004001411575327000225310ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL`````````ccc```^^^___```UUU```___``````9 tRNS@w ucIDAT(c` d"@Fd4%z )5M\E͌h J."9MXE3)``нŋE3F} (vl!az((i2; IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/earth.png000066400000000000000000000016271411575327000225410ustar00rootroot00000000000000PNG  IHDR D pHYs+bPLTEGpLmn3lonmo2j3j:sL.ff/gUU.g1i4m1i9s7m-e/h.f1i@n/f/g8p3looqo8o:u0g7q$m6p1j,e1j6p,e$Inlnnoompnpomnnol+gpoo.gq/gk0h*cponpo.e.f/g'b8p/g/g6o3l-g.g7q/g.f/f-g+h5m-a.go/gmeG>vAyQ_a9qkhhghtRNS߫[>ڈ(b[ VI '|FFYVYV;j/"9pɳ/ߵ2UjpIG9F;"igIDAT8ݓUw@/^uwww /c:3ޝuUV)u:J-nD!9Ӕ<$mRw 0k>*-LӜ\HxxarQdx,èxYYcS3UX+kc󵇮U3ɥeF[%&ةH%6X#혬VwQm4i[ōpXSڗ^3]S_?#-QQZ\A*zVj)x!ro|SI-sycXLNsKk8pxl1*l֠W5OUhIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/edit.png000066400000000000000000000003671411575327000223630ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```o௯sss뀀7\tRNS@fuIDAT(ϥ 0 Л=.8лN.MԀ">K\@+@{! Z  ~0ĵPඐ1(\!'BARgEvBa SIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/eject.png000066400000000000000000000002761411575327000225270ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NEIDATӕ10 t1  .>yt4FsrvבeBBD(nlQ? /xtIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-cool.png000066400000000000000000000007251411575327000234770ustar00rootroot00000000000000PNG  IHDR D pHYs+fPLTEGpL```˻ed[BgfZcc]yuL*sqQvrO ҼtRNS(>bIˋIN IDAT8˭S0 9ڢ BbA2!G#"!cah' .owo]>n_Wq_`qśuӕ PS3m[9Nsȵ% &?-fH%2!A N,ӏ C$`vN`M4PYd*Cb kZEqcԈ]4}C+2k81"*˪ygƾrs,}CKvOg+b[uIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-crying.png000066400000000000000000000007271411575327000240400ustar00rootroot00000000000000PNG  IHDR D pHYs+oPLTEGpL```kiWcc]yuL*sqQvrO6aa^@Ͽ ô PtRNS(>bIˋIN IDAT8˭i 8Fc F}mQA3;N#OKa<$Kx_q^sd2MO87"5AQ%(.q/H ~o0灕 W A!V`'ɾ~1 q0eF] Co5ʴ==_-4Veju .A豋 `hxqzJ***$_pIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-happy.png000066400000000000000000000006661411575327000236700ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL```kiWcc]yuL*sqQvrO ,tRNS(>bIˋIN IDAT8˭ Epmgܗb%H٣J"T~bN2%G{\-vwx%|!?1ۦi()l 6tj=0SEN.Tւ/H@B _ .('s4{cI 5ׂS(*2OӼ:8zYnlaǁ.:0ᑋ"0/^ڬ^}z?ۊ)n8GvIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-laugh.png000066400000000000000000000006251411575327000236420ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL```kiWyuLvrO*cc] ]tRNS(>bIˋIN IDAT8˭ EUv"tzxaUNHt}fʰslQI!q_RDBbIˋIN IDAT8˭ @dl;p#%,I,0 6N78h?4k  J_!\t%x~6)LL٣ 炌 * z.w}$ZfnP5*Rgu[v`#dE{|qX(U%aΡIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-raspberry.png000066400000000000000000000006041411575327000245500ustar00rootroot00000000000000PNG  IHDR D pHYs+HPLTEGpL```kiW7gfZ 2tRNS(>bIˋIN IDAT8˭ @;:,:˲Ki텐?2k+RRX=7PP/7 >PcЀ,,߼{(_W_ބO{=K{  ]\D_I}A&A0LQ\/"m_pQ 5j=!+xDêNCڱ!ư!`ik?>tz<=bIˋIN IDAT8˭ EQDĭe\*4=`kfG菔ECrJs ĵ3U/" QHKSӐ 5(S4bIˋIN IDAT8˭I EA&qL3OJ/~QM }\ iF_xp!\?Y;mWݖ^XcFTK?[表! 2 #ʀz, yl'gQ{D9Tfj7*N:Yh4nN #Y?xzrz7X!(o1G|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-uncertain.png000066400000000000000000000006041411575327000245270ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpL```kiW$<Ͽ omT8;tRNS(>bIˋIN IDAT8˭ EnM!`^;+cToGjEX8Y܉2=KB!9/I.b聙K !y {?,6#TJ:{@JXfR@4jB( K[ iu ">Aډ ^9ƆҶ׾}8~z~ (mD1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/emote-wink.png000066400000000000000000000006661411575327000235170ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL```kiWcc]yuL*sqQvrO ,tRNS(>bIˋIN IDAT8˭i ϭE`_(fEI%w)̢?(P=9|A '(Hf揋$\l?t釠B8Uk qR7j~ I*1"I2[1bKʴqz.kž4ʶqapH1qRmٵ.+4IDAT8˭Y! @eXFԉ M5E 0v!{[wpvo6w 2 q _| y5ļ3u^ qwBBDL]и~+$2F)A|,Ɂa,F.3яkj-UՕ_I/Af]IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/exclusive.png000066400000000000000000000002341411575327000234360ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```}9tRNS@f,IDATc`@Xd0B @f00D2A1?K }*TIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/exec.png000066400000000000000000000004211411575327000223510ustar00rootroot00000000000000PNG  IHDR D pHYs+6PLTEGpLtttbbb___wwwõxxx)V"tRNS@ftIDAT8œ E+eS)P/-<r`U 8@|AZ`I 3Ɏ1HC[L\V‘#hńCޮrQn,YlIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/factory.png000066400000000000000000000003661411575327000231040ustar00rootroot00000000000000PNG  IHDR D pHYs+3PLTEGpL```aaa^^^```ccc___``````______``````ccc``````HtRNS]1УFupRMIDAT8c`.DR Eb")`abDR Ï@@ @@ U0P!nIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/file-manager.png000066400000000000000000000002501411575327000237540ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLo߿%dtRNS@f/IDAT(c` N(%pvA@SP /@w\%"Ef^IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/file.png000066400000000000000000000002531411575327000223470ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL[<tRNS)7IDATc`\`%&K`0P1X2\"M,f@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/fill.png000066400000000000000000000003761411575327000223640ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLjjjϕss```oonnmmnn^ItRNS}3uIDAT(Ͻ0E dkWI %YXw/>,)\<+aVrVw*M9APChS 3_^ lsvvޏ ]BϘWIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/filter.png000066400000000000000000000002651411575327000227200ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+NDIDATc`  C^ 1M2JV (+f0Bڢb)͸TIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/find.png000066400000000000000000000006221411575327000223500ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBWPLTEGpL^^^^^^UUU___```___^^^aaa]]]______]]]mmm]]]`````````aaa____________]]]_________tRNS +xWG)ܡݢ@*{ 梔IDAT8ݓ Eet 49,$HQUg ^jXZ:'5m#-< {C5`c< 9aFo% 8ߖ_/N\^]aFkCeXeklz{2ENF'6pROֱh~;LIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/firewall.png000066400000000000000000000006141411575327000232360ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL^^ff]]__[[^^__^^^^____ZZ\\^^^^^^^^______eVjPjOg@tRNSdU*ԍ%$r`IDAT8͓G D.J>oˊ0xyY <$ Bnڶ\*x7DnEg6O=â"*eAmxC yx^r@O1L/>Q"D9CɮcilYgc= ޶f ˋQ(!:V*S IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/first.png000066400000000000000000000003161411575327000225570ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^```\\\___*tRNȘUIDAT( 0 CQ+Y 8dh{/P|xdiS9@<"+xDV/ "`9/F FХynfsIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/flag.png000066400000000000000000000002641411575327000223430ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpLnn??oo&ɌtRNSF&28IDATc`\  c\1 B1\;@`Km\V{+IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/flip-h.png000066400000000000000000000003041411575327000226040ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NKIDATc````38A4. ĘdHK,c%P*0p``0& p)bvp+"Alh9&ڷIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/flip-v.png000066400000000000000000000003011411575327000226170ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NHIDATc` P(#k%TɪUElVAIZQjTz1wܩp# ˨g9F IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/floppy.png000066400000000000000000000002701411575327000227400ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpLPxOwOB4tRNS+Ne6Jęgu\h ]2༨5UIȘyQA/~O YX".xIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/formula.png000066400000000000000000000012111411575327000230700ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```[[[```ddd```````````````aaa`````````\\\``````______aaa```]]]___ZZZ___```aaa```aaa___]]]aaa``````aaa^^^``````UUU```aaa```aaa```aaabbbbbb______``````___````````````mmmaaa``````aaaccc```fff``````___^^^aaa````````````"KtRNSJybȎ>3\K "t9hrDa' wӿ0d,V1WҊvIDAT8˵RA EU@QATE\dQ*yIMfv?mXo{l x߄2AEf3*>5t8Հ:Ε&pI$,6_Dahj Fk!sy>m&Py0n +;R+ݥà"|prr_"3pXAѽzH:ԴE8ӀXş۵, BqIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/forward.png000066400000000000000000000003151411575327000230730ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NTIDATӍ 0 3G䦬A E@ ZTff%dZl!s C8);9Fj;zJ9=hIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/fullscreen.png000066400000000000000000000002371411575327000235740ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```5tRNS@f/IDATc`H`2`@fDZ Lۉr3O1^(wIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/gambas.png000066400000000000000000000016621411575327000226670ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBePLTEGpL)(@"+))())3)*)))))+)))))($)()))*))**)-**((+$')(()$*()))((*)+**(+)+)()*))**)())*))()))*()(*())))))*()3*))))+))(())+))6RivtRNSR-H2~LpnIVPU=S< Xʋᨱh$be*,g+_oϑf9 tZ:WiIDAT8Sb@@ @ ES}hևC2;3w{!±g@arpk6M_.V'(2Vօ^R_/ 8G 2f.59C6[{%ĸ\|8c\D c"<=05eCgq.jpCC6d> |kZzG J֠٪MbV23XDRC0tmJkBڗSȎؽs cq!-I3Mziƙ2w~4NGy1gsl趚kFc;ފF(t!{{ϯ7U>mIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/game.png000066400000000000000000000003421411575327000223400ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLoonnnnpp```oovtRNSQ‹I6[IDAT(c` 0;((d%, $F> -bX04 0u@T@&ЄD!Qҁ ! ,@XlZ ub!IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/gamma.png000066400000000000000000000005601411575327000225130ustar00rootroot00000000000000PNG  IHDR D pHYs+rPLTEGpLUUU```fff]]]UUU^^^```@@@]]]```___aaa^^^____________aaa```[[[```______```____________cccbbb______aaa```x%tRNS ,l8!+9S3*b[s6^BAQhsIDAT8c`<(+`dREFJeX@ENYU -\@, Ғ 8HW _V0n @͏O(f*f!O<|(à  !pIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/gnu.png000066400000000000000000000024211411575327000222200ustar00rootroot00000000000000PNG  IHDR D pHYs+FPLTEGpL@fp-35N'/11@f3-35m`C!pp[$C |>.23U.353/341..3022022-34/330334.'-35-2341-022I16'3.).24222///022C,020-12}>$C!7*$C,!D!N$1..*] .22{>C!D!_ k/33] a ` o;'*a,pKT 131K"b jt.p_paot:r9Mprpqrb'I!133l5d c H!l6]*V/119*5*$.46/009/0453/007.$.336(.221,*30.7-(/45.00/11.2320-.2420.2,%1,'6,';*"11/;'4''.13:)!=).2300-1+&11..34.23.45/22-23/223*"0*%.22.115,#.46}|pmz r|o/45V%UA/X$zqK+dF-774opw RvQl up yyj sq|<83=83xyqqaE-debF-vu tRNS g^ uy'I!2W{*UYŃ GR NLI ec}+hj3kp)h4s'Z/Xܼ0s<IDAT8c`cG汋V*II00IH)ʊp +M"/J˫L6(&_X=m:JӦC9Ӧi5NIj@jiY iӺ&N¥-ӦMe`6- mڴim @ Li(04)]8 Ygڲ%?EKMk kxYӖ>}]gK5 @fr.\<frD 8,A}ӑL Ӄiw*ر %X`N6W UY7s93LQ3gF#+9ӟ ?8 dBР@~fg\ 1v~ \c?`7f30\SKdq)0aǖlY` lY'l7Θa G)?u3[;Ĺ3͛17 WLbgH즺IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/green.png000066400000000000000000000005311411575327000225270ustar00rootroot00000000000000PNG  IHDR D pHYs+EPLTEGpLooooppooppooppooqqppppooooppppoottooppoooo=tRNS`@G+)ܢ 5d>IDAT8˭Y0 DRQn,V%Oc<+@ Pl\^1- ,"t>4eůօ*Bn_^ HxRd$QNF@/>Tۄ2(Sݱ*sn±gWu_ dBh6å 7||ϢIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/grid.png000066400000000000000000000002131411575327000223510ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTEGpL___>="tRNS@fIDATc`|@':0p%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/group.png000066400000000000000000000012131411575327000225610ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLQwNvuOqUPwOwuOuNwQvOUqqvONxuPOwvNmnlvmnnomnnonmיfOwnmfnnoߤnߥosonnoqouOnOwiԝuR[OxovmS~[u]vOPw}TcvWWޣnԝjrW[ץx\[vpv_yƝxˣz1tRNS/ ژ/ ih-R-QhQ IDAT8˵R0@RZ,;첉)KVPcrsfM&+佢ݲj!ާ|BV)d|!@#*fwE|^#L;Q2Kz`e)`\Tcn߳'?bgFzP_iKJwQ{tj/Hݳ*@ϖ1n^xSP0xۂ>^1C lW>Go%^1oIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/h.png000066400000000000000000000003171411575327000216600ustar00rootroot00000000000000PNG  IHDR Tg pHYs+$PLTEGpL++WW77hhîtRNS@fDIDAT(c` QV%$@Mv%$$S%`' CC7̙m-cdv5h@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/halt.png000066400000000000000000000006311411575327000223600ustar00rootroot00000000000000PNG  IHDR D pHYs+lPLTEGpL~~||qq~~}}~~~~$#tRNSOɀ!L \i/fjXWb3aIDAT8 PڊKq?*F0 }ȄX9H6^`E豸L28WK!LlO$fM(` $@ @C@1H, Ex]Ԭw`΢xqk$]ws<\Z9wsF35 m(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/harddisk.png000066400000000000000000000002401411575327000232150ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLtRNS@f*IDAT(c`DXB͠1.@ !F7=!yh+IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/hardware.png000066400000000000000000000002541411575327000232260ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```__otRNS@f3IDAT(c` \! P  $AN8<apUi70qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/headset.png000066400000000000000000000012321411575327000230430ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL^U_fGUUeEfFII^_^eFgFgGfGgFXfGfEYgGhBf3`Z`^^_^_^^^Uԉ\____^I^___^^^___f̄^gFgFfGfG______fGgG_oMKRDtRNS I˒>bFY((bg'V>i[YYFF,mhIDAT8˽r@ EE=q_amrgFZ-e竝V-vy%Zo~{&x1Y>%Rbܡ ro UrBDE:`0IN]$zno4&jjP%74K hu.;,QkS翙,ʈIa6/syq/bI bo,Ce$T:'`, 0fDP##_b C:$+nFXL IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/help.png000066400000000000000000000012121411575327000223540ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLmolnloUnoooooooonoloo{tsx솵苸xr䎺qߦzEltRNSb>I(I> -IDAT8˭r0EE`Ci+ E%T$ٹjTGUIR`]h m߯QC UjZ6h/Ww[Bqp\gL,4) u{gpEen u;vC .Y&})ZF^ M:9zY98jQ ЮL 4޳zFQ&dhT\Q_<ګS)9@R+ QTH!gR[fgO4j/IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/house.png000066400000000000000000000002751411575327000225570ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS)LIDATʱ CQӸLy< #$>Q_<ګS)9@R+ QTH!gR[fgO4j/IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/html.png000066400000000000000000000005661411575327000224030ustar00rootroot00000000000000PNG  IHDR D pHYs+{PLTEGpLx̨3(k]Ҳmȡ\q Gbvp3׺[پy[( StRNS@fIDAT8c``U ]Lq198p(Pd)`T@h+(@l*'?P ԣ! "#HU@ nM)N.Ɇ?9IҜE!) 8IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/hue.png000066400000000000000000000007131411575327000222120ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLppoopooppppopoppopppp}oot~}opooooppoooooooooooo[)tRNS`)@@ +`GG G+`Ǣܢܭ~<IDAT8˭G0DQzァ7|E2'/0}E"p]'D!#9"%8|0f6r&(oko{v7 GJ+tpBp"P F"H S*TaQ´Xש؟V$n-=/h!xIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/identity.png000066400000000000000000000011661411575327000232650ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLlolmUonnooooooooonoloOwnU{yPxd˭혰yVzq垴˟AGtRNS(>Ib>I܆@IDAT8˭Ys0ewvĽvCB:=opέQ:̆&l[H=ZmZDaQA>l@* 2 |ɕ1+5"Fs2 0IDAT8˭Sr@ 41.$H %4o`fJ{*+el_%ㄉ3a{Х=4^k5kxOT(~ekwGDZSzyiЦizYX "' BB>J0-!yހ HC`@0Y0MNO닶ʮGw&e6uo`y0;~?NXQE{~ 1pIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/indent.png000066400000000000000000000002631411575327000227120ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___BtRNS+N?IDATc`pZj w1._`0D;] aV-;ABxگIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/info.png000066400000000000000000000003171411575327000223640ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLosߓzRjtRNS@fJIDAT(c` Q!("JJ(JJ0#%%%C͖hY;aJ(B7A#ٌIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/insert-image.png000066400000000000000000000006611411575327000240170ustar00rootroot00000000000000PNG  IHDR D pHYs+oPLTEGpL```bbb___```````````````\\\pppp```oomtRNS Z 88[[ [ɁIDAT8 _wm/$ԙ\fX~BCtmڻJ&MO* 7'S4tQy"F-H`bkf@tYz$g@`腸p:؋ 0{p+0KTM)a(ECQzS`kIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/insert-link.png000066400000000000000000000020671411575327000236740ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLbbb]]]``````______UUU```______```fff``````___```mmm______^^^___]]]______fff```UUU_________^^^UUU_________fff___UUU]]]aaa^^^bbb]]]______[[[______bbb^^^_________^^^```___aaa___```^^^```______^^^___^^^______]]]___```___aaa^^^____________```^^^_________@@@___aaa___```______^^^_________^^^``````]]]______^^^^^^\\\______```aaa```___ccc___^^^^^^^^^______^^^```_________```_________ccc_________```___tRNS ԇZĚ,8 ; 7:'? .31Ϙ@N><ⅣB9SC+20ξFý=!6&*Qi [JԿaYrIDAT8˵Rec@ 6`m]aN;V(|h_rz3Rm&6KDFb ʙ4WI+DZe%D~ u ʵɚ]cCN]^_aa" [^{_+olSͽ)bTϬK|xI"MgS+#qeDtoI.Wj|h{ (_=??}uF^NOJߟ=Qs y/^Vޠ ' P4O}J(c}h| S5G b_LǺr嗠MY4Ds㓒0!= =TL+-S]0!h +;2wA[X6iZ/Uck;.o0EPZ3R0ZZ7^ŦIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/insert-text.png000066400000000000000000000005421411575327000237170ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL```bbb___```````````````______\\\```___```tRNS [Zԇ8 88q4K'IDAT8Ւ 1Eozپ?TE⃞@ȁ;%8}m_qTQ& JL,ZeIkpiA7lg2_q/IDAT8͒_A''$$ ATD^E`A Ho4A[Iew/KH|yo{3;j7n^/C%28(@a#S sd1$vmSyx5618XvPo芦jQ545[gqzJʡ)R>0"۩Yvy&$ 7TVF=;!Ah϶rO}:ނ=-pQiɈؐopMzhb0C7GY cI9A"oRt.dhm6[mvje%qSW*8aK=%c2Q4[=*xymI\m-sx41`Ó+(+~g^7Wv ܽaIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/intersection.png000066400000000000000000000002441411575327000241360ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```i%ftRNS@f1IDATc`@ Zj)d (gFZ ۍ~E-ӡIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/invert.png000066400000000000000000000011621411575327000227370ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLaaa___`````````___]]]______``````______```]]]fff```mmm{{{ddd̓gggpppoooJ-tRNS?cc>)JK)܊???? (IDAT8˭z0 FMft%1 dkcrnK$I'*cײܱ){d̠zz|Wtc| DW`p:dm"ĈٙBt(`S` *УK6jqTѯx{q pӳO`M.^ǟָsm~-ؼmh$tRNS@fIDAT8PPJwwww(#$e]fFAL- F"h1# ǒfu/Xcpٝy9XoH.Gk4_M@![iHmPT&'U_8{ZU_LOsQpEI<|.j/KeP"c` IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/jump.png000066400000000000000000000003451411575327000224050ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa_______________tRNS*cBW`IDAT(c` @(D(GWR]I9rt%JʡJ̒ %ApbPIzyy t-5qV0B @Y,IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/key.png000066400000000000000000000004371411575327000222240ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL tRNS /ڮ0IDAT(c` ޽g& &Rp]]tNA$ͳ BL^L;\4 s!7KHP5`F ʀ\^{9S4Hp mzrIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/keyboard.png000066400000000000000000000004411411575327000232270ustar00rootroot00000000000000PNG  IHDR D pHYs+9PLTEGpL`````````\\\___```___UUU___]]]```______````````` %tRNSY ?>vurIDAT8˵I0 [/, G$`)'b'J+%٣8);}KH~WkíN'x~|@3 Z80Ax|󇻺 d:T^IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/lamp.png000066400000000000000000000005251411575327000223630ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpLQtRNS>UkAC?MTIDAT8˵I PTPq¡?.Ҵ.ԧ)0 !4E Cx샿2`(. }@EAH?}:AZ HOsZt:8z)WO7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/language.png000066400000000000000000000002501411575327000232100ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpLpo؇mtRNS+N/IDATc`\`PbPZcL1 cۢ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/last.png000066400000000000000000000003161411575327000223730ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^```\\\___*tRNȘUIDAT(c`X & !".h&".R"RpT4't4CmQ@pBw Fa3DmIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/layout.png000066400000000000000000000006001411575327000227410ustar00rootroot00000000000000PNG  IHDR D pHYs+TPLTEGpL¥׶ͮӳ߽׷æǩfs tRNS#(65sIDAT8˭ `* 033{LPdti7.1nD)@6NV_QE+Z׊W @,O-F ī#-<uZ&Dj) ŴR2ExLXԢQp?(bQfF),L$E2ZH?j"8IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/left.png000066400000000000000000000003531411575327000223630ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB pHYs+PLTEGpL^^^\\\[[[]]]___tRNS~ϒQIDAT(c`Hg@P @S &M@1U` PLU0; T0t2; 0= އIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/lightness.png000066400000000000000000000006031411575327000234270ustar00rootroot00000000000000PNG  IHDR D pHYs+KPLTEGpLbbbmmm___UUU^^^]]]```___hhhUUU```_________```___```gggwwwvvvD#tRNS/< YXIDAT8˭ "^ {']u^0-`gZz BD<8і^ZJqxw6]EA[&ubC]\DMҸ迊$04n@f׭y;cdS,2{}^W[=pVb[]qdwv`#qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/link.png000066400000000000000000000017301411575327000223660ustar00rootroot00000000000000PNG  IHDR D pHYs+wPLTEGpLfff```______UUU___]]]UUU```______UUUmmm___fff]]]______^^^bbbfff_________^^^^^^@@@[[[]]]__________________bbb^^^______^^^______]]]___^^^___aaa____________aaa______```^^^```______^^^___^^^______]]]___```___aaa___^^^_______________``````^^^_________^^^______aaa___]]]```[[[___aaa^^^```_________^^^``````___```]]]___^^^___UUU____________```______ccc^^^^^^___^^^_________w |tRNS   ,Ě ;?'.&731:+@N><ⅣB9SC8D2)0*Fý=!6 JކQais,IDAT8˵SU{@L HRܽXq/=$37.Ed٭i{Ay-Eu5/cUOŌPo c)vN`߈z M G|^}?ӝ fVD"\n8wpԩ-,e,\QN^lF#TuO:|gΈd+$7r%[J#sjIT,?Ge޾_k|]K)FZ:O`w|aǪ؉Fln##qvXl{rmcCA'sxЂ.2C1NH s㤘[*F4NB[o& Tktr>vj{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/linux.png000066400000000000000000000026461411575327000225770ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL3 ;AA)@@@U /13;;;///BEJ3@@@CC?CF:>A )/','B&:0+'2'5I"&# GT֍"#K4͇% NQQQyyy|$QLLL]III\3rY6**5.14+-/-/1UJ)+,99*,-&)*045)))U247@EJ51,)+,@@I/14;>@,./BFL035*,-347448-/1CGKCGK69;15:CGLHC;AEI469@EG47:=@D8;;ÒR==A9>>8;>7>>+0?:@DH59BFI?BF2-/0&,H*,.,.0)+,135;JLN,&FR2/+:;<')*yz{냄13t-!"":\\\oߙ2&6ݷbUE?y{^3ۡFEYgfeLZEcP3'((&'(֢KܿEvfP/13۪TGHIFGI468DFG257abdؗ87<>@7:gM>V;-%\Y@IDAT8c` pZZ g)~ ՁA2;M@YO2t\\E? R۟o PGM98$]ϟd`g}/>J =8aᤤ8lM1m[X,V <1- zf_<.: NkmuGSӺxN̞*}ma9tvvΙΉjC@ܢ|(?ꆢƼs0plY( \|.= >~⨝-43sW!`gX!)вU]}dǢR02uyعuZi lV \ п}CI h~Գ6:IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/lock.png000066400000000000000000000003761411575327000223660ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpLƪŢ6tRNSUhZIDAT(c` (7B'1m>Hg\?h .`߇p o``IA' D斿nIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/love.png000066400000000000000000000011571411575327000224010ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL>>??>>$$>><<>>99??>>==????;;>>==>>????====??>><>>>>>33>>33????99>>3399>>>>????>>??@@>>??====>>>>==00>>;;>>????;;??>>99????>>???? HtRNS&Ty\"q=P[F £( UEX<|m'ކ2IDAT8˽0ER-{93Ds9gr[\X3Zc'ii+){Mhi_{fWF.2sLѶDXa0u"taA"DHB ,(DBqGD!!j#*=FPq-3̽EΧ*";3CRwK}(\h|R+ʼ>}:jYh8l=O˃<IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/lower.png000066400000000000000000000002301411575327000225530ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```R_1tRNS@f(IDATc`\`5KC  V!1a6u'IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/mail.png000066400000000000000000000002431411575327000223510ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLotRNS@f-IDAT(c`0FX~Z (>.U\t1`SgR+M)IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/make-all.png000066400000000000000000000003001411575327000231040ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```^^^^^^___ytRNS#݄GIDAT(c` 0Re @P=h J2)*qDMX#8Q`xb1"D7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/make.png000066400000000000000000000003521411575327000223450ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa_______________tRNS*cBWeIDAT(c` /B#B@MI!T#Bh J lfDSVR8F4@%hg`:`2KV@P-/B0///Fp////P&gy*iIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/marker.png000066400000000000000000000007261411575327000227160ustar00rootroot00000000000000PNG  IHDR D pHYs+~PLTEGpL^^^```___```______[[[______```aaa___```]]]]]]___^^^``````___```]]]^^^```_________```]]]^^^```333@@@```^^^____________```H7)tRNSlk(GG{; D+@,AhWViCIDAT8˭S DZ{K0c48qvnz{,!J 4G1b` =B()S HV=A=IbJ% K>s@0686l5ܧntC :\#Ȑ"16 1e#4) `jmt߬} ,* VIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/math.png000066400000000000000000000015351411575327000223650ustar00rootroot00000000000000PNG  IHDR D pHYs+PPLTEGpLUUU```fff___`````````UUU```___aaa```aaabbb```aaaddd`````````___bbb___aaaccc```___bbbccc````````````cccfff```aaabbb```^^^``````aaa```___aaa___```fff]]]___```______aaa``````^^^```___```___````````````___``````aaa`````````___```fff```___```___```cccmmm``````___[[[```UUU``````___````````````aaa```aaa```aaaaaaaaajjj````````````potRNS`>Y\'̄M _,<$՗g6᮲KoN38cm{Hȩ꒫ [Fn0 ڜbR"lT w8IDAT8͓WW@H@#{{7g$=>3/NwTN]V5z$TΣpSpᢦA_r3Tj;<_e5G^Bei/XF"2 dX 2 d3/I |RiWgFaB@Hץpo E p ;ňf^.hppmؾR3/:[`ݒOztc"yE@kG_j^J i28IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/md.png000066400000000000000000000007661411575327000220410ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLVwڿk*q ]{-4ΫljJl#6ƝqԵ︆ٿS7yNtq ոwaؽ–ɣmlO+~Roپ&nȠgtRNS@fIDAT8`Q(-̥? ;][,\6c/9mJ68hVSU˙WqؿO:K%@Xl01~x 36XcS90UTD r 'QQ9ĉ_7Y{ h8nIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/media-player.png000066400000000000000000000002631411575327000240020ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLM;`yl1tRNS@f=IDAT(c` PVA!OQH†i %$TkQ j-}|Ka X1q [ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/menu.png000066400000000000000000000002221411575327000223700ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+N!IDATc` pX$P j\j@.þIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/microphone.png000066400000000000000000000010161411575327000235710ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpLuOotNuOoߦouPoࡡqU`ߟfMoߠosRfuWvOuϢtuOoߟ,tRNSrQ![q'fj y> s ti #% ῅IDAT8Փ0D"(*I(!Byo*3 Of}aL)eM=ߋ^lE%|-0S\  0UG`DȨ |Js>Y% ڃ DV9=.ej CA}\m 7yac6iu7̹bDD,m,U'Nţ4 0k;v7᭛vd؉vܾ# <2#IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/monitor.png000066400000000000000000000003421411575327000231160ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL??{{__zzmm-tRNS@f`IDAT(c` PVA$@SaC4bTaCVgdaWgD* 8AH9D # @Fv:q`1!d.*7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/mouse.png000066400000000000000000000004211411575327000225550ustar00rootroot00000000000000PNG  IHDR Tg pHYs+*PLTEGpL_________fffUUU_________XXX^^^^^^___),] tRNSfkl-uIDAT(c` 9sF<98shT D*T &p *Pd߽ $Cd`g`g([Kaph) D B0 L@*Zs!/BO4κ*R{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/move.png000066400000000000000000000004271411575327000224010ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL^^^___```]]]___```___^^^ٽtRNS~BIDAT(ύ El&ul2!yxe(7z-0-s`` t¢(,[A2?~]IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/multimedia.png000066400000000000000000000004511411575327000235620ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB pHYs+6PLTEGpL___aaa______``````___UUU___]]]```______```aaa___~6@tRNS7S |_IDAT8 0 Bb s;RosxՎMہ!n@&!S@2\7Ґm%m[2m^eIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/muted.png000066400000000000000000000005241411575327000225470ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB pHYs+6PLTEGpLooooppjjmmoo```ttooppnnoooooooo___oo9}ŮtRNSgiրkmvIDAT8˭K0J/+01)yEIx)qA\qA%ȫ3/j5#M 0cw2!)oǂ/'m ϓc"y>{oXxxak?zRU%VIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/network.png000066400000000000000000000003251411575327000231210ustar00rootroot00000000000000PNG  IHDR Tg pHYs+!PLTEGpL```J3 [8[8[ QIDAT8˭v@E)wMܫt5?3yy5lVG՛f(٬ 4BV28(7~B.ZӒ`nߥo/@o)4NhQj2P @9TBE!1p>qLC1I'hc_T!)98<zfɅ-\pIz\U7}CW Wfq{ ZjOJȬ=QWV+x"s2n1X, @k@2W/YZab/Q$Yq6D2o_olNfk/.ZdXn6v6<ӻIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/new-dir.png000066400000000000000000000005341411575327000227770ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpL```￿bbb___````````````om߸```o߸\\\o```u6tRNS Z[8 8,IDAT8 0dvo]Q[4eFTBM>2 7I!ict*46ZR1$t}g~ݜu ~Hy90K0PVvG,@x晁fB˰{ s= IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/new-mail.png000066400000000000000000000005751411575327000231500ustar00rootroot00000000000000PNG  IHDR D pHYs+`PLTEGpL``````bbb___````````````\\\```oߢ tRNSZ[ 8 8[ [dDxIDAT8ՓI 0 EeG2v,I)Vbڷ0=~ ~c0Jdм#-J \A# un(8.:" xJLBB"4(J7IGAH?i>(0QK)>XZRIHoD:IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/new-tab.png000066400000000000000000000005461411575327000227720ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL```bbb___````````````````````````\\\```___FQtRNS[Z 88_ vIDAT8i voZCu&ʓ-Epڋ쟠 ~ M:]^3Yp@9/w 8v`-v=R0Њ@G@O@Qz )ξy$`ɠhVf-˘DzwB]IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/new-tag.png000066400000000000000000000006121411575327000227710ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpLbbb___```````````````[[[```___`````````^^^aaa``````jjj`````````\\\```6QtRNSZԀm[ \ 8jG'IDAT8˭ DʱV$A^3W2J +cNǜ pֺ?9\[1g1IE1S:teB֪iۦ ^3mh j<>bi /@.hi& BgaM>n%&O!x~ܠd-;p)]?fRݰJ] _hܲ8Q0w`4<=B T^B{ɲ )y&ɠh<)_efDCIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/new.png000066400000000000000000000005361411575327000222250ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL```bbb___```````````````\\\___]]]```aaa``````___^tRNS"Z] 77"]zIDAT8  ҁ&.\.HȜIQvn!zA׃~Rh-Ƹ$ 3$`-<'^!Ain?zD)W=,r)4jVgXO#@ !IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/next.png000066400000000000000000000003021411575327000224010ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NIIDATmϫ Cю3DMϴD]ӏ' t0\@At!(F9LQlS}a|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/notification.png000066400000000000000000000006031411575327000241150ustar00rootroot00000000000000PNG  IHDR D pHYs+]PLTEGpL?w>x?v@y>w?w?wIm?w=v?w@v=t*>w?x@x@p>w?x@vBu>w?w?wvAy?w~y0tRNSғ(6p.YDgq#"SR7DmIDAT8˭ EQ kz?3F2y[,;7NK,! ) }ĜZ>G틠Ϩp"7(V6 0`"@k6iDW ޡW5jkFAfv祶U (CH8!tih8IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/office-calc.png000066400000000000000000000002351411575327000235630ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL__tRNS@f%IDATc`` 0Bæb ."KUe@pIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/office-draw.png000066400000000000000000000003321411575327000236140ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL?PtRNS@fdIDAT(ϭ aW l PDыx51v^#`p!^ `mB^p_ nUa24.MIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/office-presentation.png000066400000000000000000000003711411575327000253750ustar00rootroot00000000000000PNG  IHDR Tg pHYs+'PLTEGpL7ٽ~Ϋz<8!NtRNS@fkIDAT(c` QUJJ([ĕf 8  $ 4a d- l((#[ *NBd* %aDʢE+˛IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/office.png000066400000000000000000000002331411575327000226610ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL_QLtRNS@f+IDATc`\`^UQh . . ~atͭ$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/ok.png000066400000000000000000000003601411575327000220400ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpL___^^^^^^```___```______EryxtRNS\.[ZYh{_IDAT(c`90@3 (v8*FSШ@H P@`& 6@T7(v؁ & T hAV@_+"7XIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/opacity.png000066400000000000000000000007301411575327000231000ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```fffccc___```___]]]```______```______``````_________```___```]]]bbb```UUU____________``````___^^^```mmmaaa___```___^^^```X+tRNS [!tmy / }12sl{1%IDAT8͓iC0 nffU|ʓ]I96n{*j9@X7Ip6!&FN|=Z/}(A0 lc*_?XCW𒊀Uo7`6EE&sm`yQGeiܺٺB'QR:yruIr9[.;*VIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/open-recent.png000066400000000000000000000003731411575327000236520ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLomjtRNS@fvIDAT(c` qLc$[ Y D\ %& Ag@"D@ . B@ccA ` l( [ bgd1<}!F0 ;8d1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/open.png000066400000000000000000000003061411575327000223700ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLoϠIp^tRNS@fPIDAT(c` qLc$@cg4GTAAgGAAd#H@!VVp  BuN8m9IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/options.png000066400000000000000000000004221411575327000231210ustar00rootroot00000000000000PNG  IHDR Tg pHYs+0PLTEGpLUUU```___^^^]]]___ccc______fffmmm]]]fff___ż_tRNS rM  .nIDAT(c` x("\$  A w  0 n-aP>SpP|Z ې]00Ђa𷘣 M%OIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/package.png000066400000000000000000000003101411575327000230150ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpLosKtRNS@fMIDATc``@jmq`+b\IZj5XMժUk `PUWT2BW {R" IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/page-two.png000066400000000000000000000002661411575327000231570ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL[<tRNS)BIDATc` pZBkժH_hOƫW2@ @ZVAk q [#Lw6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/page.png000066400000000000000000000002441411575327000223440ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL[<tRNS)0IDATc`\` ? vƯU 0XKP0'wBxYIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/paste.png000066400000000000000000000002371411575327000225460ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpLGG```rTtRNS@f,IDATc`Ge``@cQV-EeN5;L".IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/pause.png000066400000000000000000000002111411575327000225370ustar00rootroot00000000000000PNG  IHDR IgAMA asRGBPLTEGpL___>="tRNS@fIDATc` 5q(IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/pda.png000066400000000000000000000003541411575327000221760ustar00rootroot00000000000000PNG  IHDR Tg pHYs+$PLTEGpLaaa```````````````TtRNS* F\IDAT(c` 0AT@$ j++ *H \p8%d $`HQQ1xQ|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/pdf.png000066400000000000000000000007711411575327000222060ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpLqquuoo꣣ꠠ쪪刈ww璒륥ꢢ雛もxx 描Ꞟ룣ss㄄ﷷ{{虙瓓&itRNS@fIDAT8@ P)o^{?%J6zmsOfD D~ #)L'C0axH@gLMQZ&1W{(xpHLΗ#$;(UKY e<, ](pIfQ貓[T.˼ZXo`iP.T>{|;>gIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/pen.png000066400000000000000000000003371411575327000222150ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```^^^```___```}|QtRNS:tcIDAT(c`*`@qDS₪DM#d$-tP TQLp 5`PA654IE  zR jJW5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/people.png000066400000000000000000000011061411575327000227120ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLOwQwPwNvUqqOwmnmnnmnnonmOwnmf׿nnNxPxnOw|`}miԼS~Qy[[OxqߺWӱkW8|/tRNS/ ڙ/ iQh-hRŗ-QJIDAT8˭0Q{]C/9`3wI@H&)-8@#}Q)@2K7SI#` CAx8AҠز#`,3, ojs<8#j ޒ=1"_$:>߾Y |ǣ/$*)]A# (Dz:&a :t3Lb.7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/percent.png000066400000000000000000000016631411575327000230760ustar00rootroot00000000000000PNG  IHDR D pHYs+kPLTEGpLfff``````UUU```___```fff```mmm```___aaa```````````````fff___``````aaa````````````___aaa``````^^^``````___bbb```aaa```aaa```aaaaaaaaaaaa]]]___``````aaa``````^^^```ccc``````\\\```^^^___ddd```___aaa``````___]]]______UUUaaa````````````___```bbb______`````````^^^^^^___bbb`````````````````````aaa______aaa``````___```___`````````aaajjj`````````bbbbbb___```߽3xtRNSѭT0 }̹Q]^l*L7t G6ȷkos_m!V¨P'S>w1<ڜ͸аYvہM /l#jIDAT8˭WW@  Ҕ&{{]x0 y=so&D9K-/H0T`,]?b `\rMiL + D1qCyBgB#*X% }},U5Y1q?#:1bج2ā@"jǥ~<>ڋ{-.$7%[ٻx@3"P2&"{2jVK͞!ț)m B.q3 g6~*CF'7GPD`ŃHw:WnE~>y,kz@"w +o`bvdKդ hzdԦ;y/(_ ]NWZIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/phone.png000066400000000000000000000003541411575327000225430ustar00rootroot00000000000000PNG  IHDR Tg pHYs+$PLTEGpLaaa```````````````TtRNS* F\IDAT(c` 0AT@$ j++ *H \p8%d $`HQQ1xQ|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/pin.png000066400000000000000000000013051411575327000222150ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLoonn??==nn>>pppnnppUUnnnn>>>>TT[[;;ooooppp;;??ooppll<>==ppp??==>>ll==oo77==kk>>>>nn==>>>>nn99<<99@@XXVVll<<^^ppp>>ookknnmmnn>>nnnnoo((oo;;??oopppWWXX%WWtRNSAyyA@yc`IutvwRSHvv`ܩcKCJ; :GD-- +F+BIDAT8c` 01+!_>"B0^U5\B y^>}\ 8!*qS0q1FS $?\c_+"tu*xAD E%I9 v 1\0 ty@.`Q#~q $oC'P12 [< 'Naf y*Y * K< B YC\Sa=IIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/plane.png000066400000000000000000000011611411575327000225260ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLfff```^^^``````______III___``````aaa[[[\\\```______aaaUUU^^^______```___`````````UUU``````___``````^^^```\\\___bbb___```````````````_________``````___\\\fffaaa^^^]]]```^^^___]]]``````=?tRNS1"O\ɋκXHïA:jPisJ' zJz& * IDAT8˵0 et{ߪLBKJ8)򝁐bFClBJaqh!Wsߝ0n9FӁ6> 7b(*xXK3)nfdn`NH V 4.XwS`a7eXz8yhl 9s"Oiw_Mu"o牤йWI!H< jH VŋۊFs1~ U5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/play.png000066400000000000000000000002671411575327000224020ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL``````___ZtRNS@kIk:IDATӍ!@ASZqU \&g@BBBBBBBBBCz9}04],]>sDnN1ܔIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/plugin.png000066400000000000000000000003751411575327000227330ustar00rootroot00000000000000PNG  IHDR Tg pHYs+$PLTEGpL766۶$677677è tRNSlk%{hIDAT(c` );0m"{ F؍`` l2#l(Al.؁nh .V("E`#4p8,@0Ѥ|G^IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/preview.png000066400000000000000000000007421411575327000231140ustar00rootroot00000000000000PNG  IHDR D pHYs+xPLTEGpL```___```___]]]```___aaaZZZ```______```______^^^```____________^^^^^^___```ʘddd핕aaa* 1tRNSWvwZsSZO2ٽIDAT8˭0 DVd\l [I&MGAY-SKi~bDYjOuMRBO.#oCD;|-L)V7K1|F B D(U? (%)H .5o&oĤ|2(2ɧ^{k{m. HVno] o /&2=M?0"zIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/previous.png000066400000000000000000000003111411575327000232770ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NPIDATm ! DQTXb{9D1kjOH%(c 4%sMJx~r/L%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/print.png000066400000000000000000000002551411575327000225660ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___]: tRNS@f:IDATc` cgA O1d*cBe`):)qOIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/printer.png000066400000000000000000000003251411575327000231130ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL}}}```Ab tRNS343DPIDAT(c` T5 BKC@4pA:: 4ZLӉ P } ! 30?5quIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/program.png000066400000000000000000000002661411575327000231030ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL___*tRNS@f=IDAT(c` QV%$@SWtcWtB*$Ap%`+%P!03IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/properties.png000066400000000000000000000002301411575327000236170ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```<tRNS@f%IDATc`\`#4?X 1tA>ą IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/question.png000066400000000000000000000011701411575327000232760ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL__^^__^^^^__``UU__^^^^^^____________cceejjҐxx١qqlliiԓ~~伛כbbלԩܩ́uumm||ҏkkޭχತڤۦtRNSbI(>> 'IDAT8˭Sr0c7tBBz=!=Gmɖ&3f׾өV[!(&)#gYuVny&6vh9GÓGp+M*aBa"L[#e 8F\*R~{)s]r'#Y\@U'ۓꐮ~Yshf'QuD]ڠ FyxTx1jyYoXu3t-\~_(20IDAT8˭ D" FƘ8O9ZPX A鮲)B1/1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/record.png000066400000000000000000000005011411575327000227020ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB9PLTEGpLoooooollooooppppooooppppookknnoooooo#tRNS![y tsBIDAT8͒I0 }MU*e=}U{4B4eƯ慟*Bn_^ HxR$ QNFH/>Tۄ2(Sݱ*sn±gWu_ bl6 B|^IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/redo.png000066400000000000000000000005571411575327000223700ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBNPLTEGpL_________```^^^lll_______________bbbhhhccc______^^^___^^^ttt^^^___fffaaa___]tRNS+ x"lm#IDAT8˵0 CSGL-Z<ᷪmbYvZG#ó,n!so痮ZEβCA꫉Qe:V-ݙ.`=d$m/(-j3d/wc`+sρoaÕWIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/refresh.png000066400000000000000000000007231411575327000230700ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBlPLTEGpL^^^RRR^^^___^^^]]]______``````______^^^]]]___aaa____________^^^___```^^^```___```aaa^^^_________^^^___^^^["tRNSy[f'! ji?3>~tIDAT8͒ E+vwm )qS{9I?!Tvr0Vt" ]/"n.VGX$JiKF*Z9jpeF!Ψh=$}n/3@'KT=#`MZotyn$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/remove.png000066400000000000000000000002361411575327000227260ustar00rootroot00000000000000PNG  IHDR IgAMA asRGB pHYs+PLTEGpLoo&tRNS@fIDATc` :A FoIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/rename.png000066400000000000000000000003261411575327000227000ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```^^^_____O ftRNSO08XIDAT(c` P* )@Q" @S`8 P0&#+``6 CV@HFVbDڀ o|tIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/repeat.png000066400000000000000000000003411411575327000227060ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````^<tRNS,MߵiIDAT(ϕ0P3ik% ,}#XP,(teԑX4oޣ 4[.Od12M꓎m@@o%B IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/replace.png000066400000000000000000000006201411575327000230410ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpL^^^^^^UUU___```___^^^aaa]]]______]]]mmm]]]`````````aaa____________]]]___________|tRNS +xWG)ܡݢ@*{ 梔IDAT8ݓ0E:,zBSĄ'i;KEI$*+Ƣ:  eQHay 6Ρ`;T 9À*hjdPBV"B+piSikTB&ўHϺ.L(DifTLabw~çXG@^_-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/resize.png000066400000000000000000000003511411575327000227300ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa```aaa``` > tRNS\, lIDAT(ϭ 0 -lP0 *q@<ݿ-lȠOUPTFf;+JJȤ ,zGqQ,P vHq0 e\ x9IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/restart.png000066400000000000000000000007661411575327000231250ustar00rootroot00000000000000PNG  IHDR D pHYs+lPLTEGpLpoooooooonopomnoooootx〱-tRNS)c>K?JY/IDAT8˭ E[TpK+c%D3}igBrolXyVvP]EN=J4ַ}\l;I#dd &v$eGOHJ&I ?iNљz@2Xx!B!0yh*5p=Zh88k}c@ eRrbk< Zf:7*OBVaF k:fȌt[&8=]x`aj\ IO87.,*:$X7InG7n;A1zx~ex~c?/NYKxIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/revert.png000066400000000000000000000004241411575327000227370ustar00rootroot00000000000000PNG  IHDR D pHYs+|[&exg|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/right.png000066400000000000000000000003411411575327000225430ustar00rootroot00000000000000PNG  IHDR TggAMA asRGB pHYs+PLTEGpL\\\```^^^___ _btRNSKIDAT(K QT V@go젎"St&A@q; S ༘C 5{-lIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/rotate-left.png000066400000000000000000000002731411575327000236600ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NBIDATc` 8@i( Ɛ1 UP* XRK3j0` 6:` A$Rey3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/rotate-right.png000066400000000000000000000002731411575327000240430ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB PLTEGpL______c,tRNS+NBIDATc` 0L0c XR &K0`vc 1p2 2HgUTVIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/rotate.png000066400000000000000000000005461411575327000227330ustar00rootroot00000000000000PNG  IHDR D pHYs+NPLTEGpL___``````ccc```___``````___```___```aaa``````___UUU```___``````mmm___```xVStRNS,V[2Z3qYu*IDAT8͒I! D Ǟ3nq x|}{w77xaObOtRNS@fIDAT8˽YS@IH (!KēC9?'ol!EcH(*7R͸%.ۥHn)=L442V)u`-U6j$A@C[:"/Vps\&Z2ahHG2@d|OOU"c]SEl%b2|:O" %IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/saturation.png000066400000000000000000000006761411575327000236320ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL______```]]]___```___aaa`````````^^^```______```^^^`````````___```___bbbaaaeeemmm```sssnnndddyyy,stRNS)@G `Lݢȍ%]^&-IDAT8˭ ЖBZ?PZDIy'3050/pp^LQ׶Q׍*׎]7F pN|!7!l% IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/save-as.png000066400000000000000000000003051411575327000227650ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL__߯^tRNS@fRIDATc``X*4t**0[CCU`WWáAkկ @a\T)e>-IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/save.png000066400000000000000000000002751411575327000223720ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL__߯^tRNS@fJIDATc``X*4t**0[CCU`WWáAkկ S MhCiIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/scanner.png000066400000000000000000000004321411575327000230600ustar00rootroot00000000000000PNG  IHDR D pHYs+?PLTEGpL```rrr```aaa`````````aaa```cccsssdddy tRNS*ZWYK1hIDAT8I +Roh=r ޜL|s o"{D;^ ~'mF?ߨ lVZ=+PbLUO 2VjIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/science.png000066400000000000000000000006671411575327000230520ustar00rootroot00000000000000PNG  IHDR D pHYs+lPLTEGpL`````````aaa___aaa___]]]```aaa`````````````````````oo______````__nnppp`i`ee`j`z=tRNSȲ@G*)ǡݢleIDAT80P}QBkKbLM8ef0o<@D/忂l3w`zgvя+{<m?ӵp=&HWA H0Rf ݤ0D (dP~ A]`}ҨRRo꒿*V_dYX kYQzò05wyI"u04 _ñrW??*E6_%IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/screen.png000066400000000000000000000002661411575327000227130ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````___&ftRNS+NA> U-wLJ!X&8.VX{ bB,0gCC+&T'{#axѪ7cgI@ 1F^<7/''#ao"FIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/security.png000066400000000000000000000010121411575327000232710ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL¤̙```0ؽĪūHʰ¨ƫֻپ˰èéM,`FlfPV`sىς^Ճ`p#'w%MJH[D~]S/{ِ05$C~0&>߬Zh_힪(Y$1 CIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/select-all.png000066400000000000000000000003661411575327000234620ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___```^^^ctRNSO08uIDAT(c` JCCXCBCAAB"`Ph%(P%pc0! Y I(D=AdA$p @<ąJbXD 0@"]87lIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/select.png000066400000000000000000000003061411575327000227060ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___```^^^ꔀtRNS+NOIDAT(c`  \\@A.J 9ƴNآQ rA  9q IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/server.png000066400000000000000000000002451411575327000227370ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```___yñtRNS@f,IDAT(c`  c8 JHPC 1G>KIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/share.png000066400000000000000000000004401411575327000225300ustar00rootroot00000000000000PNG  IHDR Tg pHYs+-PLTEGpL``````^^^UUU```______`````````______`c`=mF tRNSQ nїŒIDAT(c`  *WZU,`X,X, XgB`I]G G¬s: 䞩 >=oC3h޽ u{ x0`a-0s dh(\wHIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/shortcut.png000066400000000000000000000010231411575327000232770ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLbbbaaa```綶dddiiiggg҄}}}uuuxxxjjj܎kkkȳɮpppsss𔔔ښ{{{떖ߑ6tRNS@fIDAT8@PŕE){?LԄY^@&aAM r+ Sb`@Id1氘"5{"TPdA0`r=ow am1|pKƞMpAj8`XA!Fe( 31+ ^ )&+ЩU7Koj2I6IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/shuffle.png000066400000000000000000000006141411575327000230650ustar00rootroot00000000000000PNG  IHDR D pHYs+QPLTEGpL```]]]``````[[[vvv```dddaaa```aaa```dddBtRNSzz퀀4yMIDAT8˵ E#(RlڷB=A.G%Һ.0 LoTEgDR#]:(yhŵj=Q˒^v\\B*f=$vs&,F5R 7t{<{Zp=p=p=p=?87U!$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/sort-ascent.png000066400000000000000000000002531411575327000236720ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+N:IDATc`L+(fZA']lV0Z&kCjq  !k IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/sort-descent.png000066400000000000000000000002561411575327000240450ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL``````GXtRNS+N=IDATc`4(m%!Z5d*"UV00Zà. t'!+| IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/spell-check.png000066400000000000000000000013051411575327000236210ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL___``````aaa````````````bbbaaa```___```aaa``````fffaaa`````````aaa```aaa````````````aaa```___`````````````````````___aaa^^^```___aaa``````fff___aaa```ZZZaaa^^^``````___```````````````````````````ccc``````bbb___aaa```aaa```````````````___```[[[```___aaaaaa```oo```ZtRNS#gH GEzگѶZrv褆_QsTި:"(Seu/;?WXx]Nq\3i IDAT8gOA;=H^vްg !!~Sd7;eg6kLF; qT6`eq!n͟em%ut8:|ok`;p䏈|1 -;1g_C,L|^Y`R;A87c`]Ꙁ!\=~ '6Fa ]0rT&r`k-H븇!nK O2I]qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/star.png000066400000000000000000000011201411575327000223730ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL:YFtRNSK?-M!TIʂr| H BGL[' yd}Dc 4)=e >tK&'Te2ADI4(!"" *Hs=9D#B Fu_H d# AcYU"3+km p ?A6Ñ}%˼wړq\@Q_-J0.sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/sun.png000066400000000000000000000005131411575327000222340ustar00rootroot00000000000000PNG  IHDR D pHYs+&3 <\,%:De:Ug)4M^着"Q VgEmFYV[ǝs˜+w?ZWBIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/system.png000066400000000000000000000002561411575327000227570ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````___,AtRNS+N7IDAT(c` \PVc$0*ࢄ (lFj$!"d%BEAYIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/table.png000066400000000000000000000002421411575327000225150ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLo```'v4tRNS@f,IDAT(c` QV%$@aC]@QLQM@ `N dBNL)IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/tablet.png000066400000000000000000000004471411575327000227100ustar00rootroot00000000000000PNG  IHDR D pHYs+?PLTEGpLoࠠx```___qutర9GmtRNS@fIDAT8 eQ:tD_?E@LWAhUJ x4AC#Z# zh(i%'߼K#6E$dfY0]2~ԉVGTIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/tag.png000066400000000000000000000003701411575327000222030ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```[[[````````` btRNSm&{IDAT(ύ; D@,O` <Uيty$YY@"{= dᖽ-@02_#zxCU'LX0FSA_BW16lP_ r9Gs:IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/terminal.png000066400000000000000000000002571411575327000232470ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```@@@<2ctRNS@f9IDAT(c` PVc$@ Ƃ$ !^d[  #H s2.BpIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-baseline.png000066400000000000000000000012121411575327000241700ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```Ŀ̿```w|&MtRNSܸ~2?"I8 QU:\` 0JXg$oZmfRM nIDAT8ݒR0oK--҅MT\PAQqC asN|37ɸԉǺniy߭WH(F=B4'*ώCE㡬pylK26{y~!/&99"@J%Y3EJʁb)Ix5|?L>8 h[&H3@҇b^읣E *1IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-bigger.png000066400000000000000000000017411411575327000236540ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLaaa___``````aaaaaa___```]]]```fffaaaUUU``````^^^[[[```______`````````aaa``````___aaa```fff_________``````___```aaa___``````aaa``````___``````aaa```aaa___ZZZUUU___`````````ddd```ddd`````````mmm````````````aaa^^^hhh``````wwwaaajjj̿```}}}bbb~tRNSalD H .}u>L{#VRk8\3dSHv0ҹZbQ &'Mqs%0,Ё9g@n^c\QIDAT8ݐWSSQFi@i"R(EiU ґk i i33pΚ3{(u'mZ3 xB&T_*wtA'{΀nxco(WE!&~ʮOkP倔aCʎ<7rKIx&loHYx׷R9UXL̦$J]wigzD%ָ,Zf' EyaJ\z̐qq( }4iCʇ\;a@ \e{VAwࡺ'fh]q8XIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-bold.png000066400000000000000000000011551411575327000233340ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```aaaUUU```UUU``````aaafff^^^````````````UUUaaa````````````___aaa```___aaa``````ZZZ___fffaaa`````````````````````jjjddd______aaa_________``````___```___```ccc```mmm```___aaa``````___`````````^^^```aaa```aaa```^^^```KtRNST L Q@JƜCYHM VlFuK$NI:1IDAT8ݒ0C]Ji3;aגɘSqjbԛjo`Z2G>ˀ HvkT#f@/̾IМWBA}} ;.$JtޡjSQE#S*<aNU-dE8#33C{5Qk!B2_}IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-bottom.png000066400000000000000000000012241411575327000237150ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```ƶĿ̿```BMtRNSܸ~̉2?"I8 QU:\` 0JXoZg$mfRM djIDAT8ݓWs0`MH!P@*H 3pSeuo$F"GROCD yTC?oۮ\u# ^8K*t` tts2qĐ ??a> ="tRNS@fIDATc`@ASu ][3IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-fill.png000066400000000000000000000002031411575327000233330ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`@n;$IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-italic.png000066400000000000000000000012111411575327000236520ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```aaaaaa``````aaaaaaaaa`````````aaa___fff```___^^^]]]```^^^___```jjj``````ccc```^^^`````````___aaaaaa^^^______```___```UUU````````````______aaa___```bbb```___aaa`````````mmm```aaa``````bbbaaa`````````^^^```^^^aaa```UUU`````````___```TQtRNS2qlD0gS.!Z9 ($7>b ~i8 멢W`3gd#.eN6ܿ/0|WZSvO mDBj>/!pT }[o-/G(Op& <õBaJ- wH)(~mp*i8 V-qp v$oQhuM(?n-)՟PIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-left.png000066400000000000000000000002061411575327000233420ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`@A[u% O2UIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-lower.png000066400000000000000000000020301411575327000235350ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL`````````bbb``````^^^`````````___^^^``````aaafff]]]aaa``````___aaa```UUU```______``````aaa``````aaa```___``````fff```aaa````````````aaa``````^^^```aaafff```]]]aaaaaa```fff``````aaa```hhhddd{{{eee|||j/6tRNSR=lD'IkSHMfœpB)͙G7Τ=uP! \ x aU f\ kΘW8@9}OrnBLbۓ;$J`IDAT8ՒUSA@pwwwwwwwww%wTgjkgwKRiZ3 @<.),w .@üT  (rX ȽLP-P*`1ޚ'PǪg{LJ;2t ^j!tr\\{uDR .y՞RӃH-Fl&ƌ,bܹ znFAD 6gȰ^&L@(vWFbnˀP֊m I [ P|yooi7DEZeBAwIډuL{j6L?هe_~KIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-middle.png000066400000000000000000000012151411575327000236470ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```ƶĿ̿```BMtRNSܸ~̉2?"I8 QU:\` 0JXoZg$mfRM \&IDAT8ݒR0oKW-;" *nl*.,B?M#8I^frshD۩kÐ{\!e*i a~8A΍G; ,'>r Ey^c"FqW g(#_~d8%0MEDϢU^kAQa`IG2~ߢ`o6gWKtH ȝ]J4ItuIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-right.png000066400000000000000000000002051411575327000235240ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`@X dIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-smaller.png000066400000000000000000000017351411575327000240570ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL`````````````````````___ȿ¹``````^^^````````````bbb```aaa[[[______zzzaaaaaafff```cccccc``````{{{`````````___aaa___```aaa`````````aaa______bbbaaa___fffddd^^^___`````````gggvvvbbbtRNSlDb[Hv = Wz$M2 ȏ9GRe/ߕu~&'RaQ~0L $8pt/cl-𝉻^ iA·pχ_HIDAT8ݒUOQo-wwwwwwwww3ݲmIg¼̜3_r+_R^$H%I 2@-*WP4(_@P) y#]TA1 tJf%;!k.@Ҵ3!}02+y` 7q rv=n}Xi8g|;*gR:6TlJZr⧏ZNA;`%d&K >7Εi9 KYEz1*`,P ,Vɷa9uwI@&|}iUb#?7gtʍIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-strike.png000066400000000000000000000011661411575327000237170ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL¿ÿ̿Ծ```@_NtRNS=lD)B!ߊ.t+y&qvfk Ǹ${\a 38PNEGC9KIDAT8ݎNA@XRD)T@"ETg, otoΙ"4@&#e=Up:qA*>LT7#Z',ðgH^>`.h- ~,[ܛ]e;(i 72n(k8K`'87ם}( ͚hެg 8"M4QzIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-sub.png000066400000000000000000000014621411575327000232060ustar00rootroot00000000000000PNG  IHDR D pHYs+MPLTEGpL```^^^```¿¿___aaaaaa]]]aaa``````aaa___```ddd```___``````bbb```````````````___bbb___```___aaa```aaa```bbbaaa```___```entmtRNSe(B`ۈX z8>y:9xk6\!g~χU4G7wD5SB"*# E½fsNi?M4\yIDAT8Eo0nnڅ.c]˛m$'jzd{dkE"Ai6 JYD-M1jtJuU65@YUM/,<:G:P# R4%{^e3t'90,ȉf 3`X^ZY53J'+pO3H/Do?8?g>;:]wp&ü6yw= oBFD4IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-super.png000066400000000000000000000014621411575327000235530ustar00rootroot00000000000000PNG  IHDR D pHYs+MPLTEGpL```^^^```̿¿¿aaa___aaaaaa]]]aaa``````___ddd`````````___``````bbb`````````___bbb```___```___aaa```aaa```bbbaaa```___```5"mtRNSe(B`ۈ!X z8>y:9xk46\g~χUG7wD5*SB"#E  fsNi?M4\0'IDAT8UW@IЖ ZG%pv'%?d2 r\d;\1^xyxpG;^цH81Kt^5D?t w~C`f):tM в'RF4IQIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text-underline.png000066400000000000000000000012521411575327000243770ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLÿ̿¿```ơUtRNSlD=q&\v fka+ $M{H)3.8PۜCGNE9tߊBy!&(IDAT8͓R1FbY"DE `C(dg``dgI9'r!]aL5z {#Vk8>y:3x80dSzkHX6\\򸠜Z~9ũ47wU&LjD5G;qIDAT8Ց;aѱ;٩$U$Q(kN*{dBYggfqs~_{w53_J8K*έxrt {ch&%>măgV z ^J1\:w'z?\.w=4hoxSm *PKȹwY)}*tBOa_ +'(;^AX;'! :=UL]a U"_m&xyׯe><iY7OOt&E6

      ǻK+i8G5#c{IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/text.png000066400000000000000000000002301411575327000224070ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL___SFdtRNS@f%IDATc``X$3 1 q30|…v߭qIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/tools.png000066400000000000000000000005251411575327000225720ustar00rootroot00000000000000PNG  IHDR D pHYs+BPLTEGpLaaa````````````UUU```ppbbb```^^^```oozzzpppWStRNS /LlnIDAT8˵ FQ;_Hk]X&i\D`jD}qxv/8أ'w& p8b MXm-?{??x7|m>twUDc Ip wC*Zma5H\7 EExIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/top.png000066400000000000000000000002631411575327000222330ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL```___tRNS+NBIDATc`L 0:@l %PFJU V(Z (kժP%0E\  IGIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/town.png000066400000000000000000000003521411575327000224170ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL``````^^^``````\7tRNS}oo [iIDAT(c` P* $"RP4 ,dyLHJ 恕A JXbPD#@ذ 5SS|IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/train.png000066400000000000000000000006441411575327000225510ustar00rootroot00000000000000PNG  IHDR D pHYs+]PLTEGpL``````______`````````___III```]]]___]]]```UUU___``````UUU___```aaa```___bbb\\\``````___```D@tRNSؙNs(  *//jEIDAT8˽ ūjmm"`4k\GIcyo,`W{K =et:Gjk}€Z/9FD#/fX\o;tg+tgly+ZHrkcLn0askS~5sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/transparency.png000066400000000000000000000002101411575327000241320ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL$tRNS@fIDATc`C03MP #mIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/trash.png000066400000000000000000000003031411575327000225450ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLOOOOOOOOOOooOOtRNS*VD}@ U02PL'v6_IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/unselect.png000066400000000000000000000010421411575327000232470ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL]]]___NNN___XXX```^^^^^^]]]@@@\\\^^^^^^ZZZ^^^___^^^^^^___]]]___]]]^^^^^^___^^^UUU^^^FFF^^^___```_________^^^\\\^^^^^^^^^______]]]^^^\\\^^^\\\___^^^___UUU\\\\\\^^^___```^^^+9tRNS) @ō1n %SoT+nKNSbIDAT8˭0F+ {/icU&r~@魯\n le,df D-Ebj +ie;2QIԻ_#+h n3TEJ+lS (r"\QB/LxG[-8J  sAx 0n1w[B(~jќ1OTT_H7ߋ/ŸT.SL IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/up.png000066400000000000000000000003111411575327000220470ustar00rootroot00000000000000PNG  IHDR ggAMA asRGB pHYs+ PLTEGpL```___tRNS+N;IDATc` 0:@l %PFJU V(Z (kժP%0E\ ANكIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/upload.png000066400000000000000000000005301411575327000227120ustar00rootroot00000000000000PNG  IHDR D pHYs+EPLTEGpLbbbcccaaa`````````UUU````````````^^^````````````]]]________`````GytRNS/̘ rQˋj+IDAT8 EQd>&k5wE8r8<\deYr1ޮǘ!r2mmȭF/ 7{\ W@ -( RG^%+rM5@H | O>$$nNIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/usb.png000066400000000000000000000003641411575327000222240ustar00rootroot00000000000000PNG  IHDR Tg pHYs+-PLTEGpL```UUUaaa```bbb````````````H tRNS //+ VIDAT(c` v^fg@3A@"p.8 @!pqD)1$Ql%fk7IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/user.png000066400000000000000000000007121411575327000224060ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLOwnnOwOwNvOwPw@OxoOwUUImfOxOwmOwQ{nnOwnmmnnjR{onmpOwnYcmR|\dR}Ox݌$tRNS[V\Z[76e͔IDAT8˭0%P߃H]# ܢy$('>ꅌ :KFy@N% bLQ` < GX?:zQ֫~}w~A߾uۃ7'A M] 8Tu|I N<G0A hKS0h\+b(D2yIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/vector.png000066400000000000000000000003641411575327000227350ustar00rootroot00000000000000PNG  IHDR Tg pHYs+-PLTEGpLoy<>tRNS@f`IDAT(c` QVc$CHII*Sh*Ql']H[&`:4-膢Z veN P'sCyBIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/video.png000066400000000000000000000003211411575327000225320ustar00rootroot00000000000000PNG  IHDR TggAMA asRGBPLTEGpLf̣prܢoߣoޣo?OtRNSrׅ %HIDAT(c` P l0$!X & ]dX!pu $3 ̰ `h!l` Bp+ IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/view-detail.png000066400000000000000000000002141411575327000236370ustar00rootroot00000000000000PNG  IHDR g pHYs+ PLTEGpL___c7>tRNS@fIDATc` apZxمfIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/view-icon.png000066400000000000000000000002031411575327000233230ustar00rootroot00000000000000PNG  IHDR I pHYs+PLTEGpL___>="tRNS@fIDATc`  ^8W@IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/view-normal.png000066400000000000000000000003251411575327000236700ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLooﷷ___q tRNS@f_IDAT(c` \PVc$@2"B  J "l(P , *   k0Z a8sާJ5,/F?K8IDAT8˭0"Ůػ?)ꌐSẌ́ *x5IJD1lw yj߀Ȑ_aOñ̝""XGA[8`Eb=0\C `-u{Չ)(]\iD=|y^963WIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/vpn.png000066400000000000000000000005001411575327000222260ustar00rootroot00000000000000PNG  IHDR D pHYs+ZPLTEGpLtRNSWߑ.ts-VlfIDAT870 @Q'%!B ŒWTgc5%V.q{[ p POІEߧ9xH#-2Or5IDAT8˝r0E$b;NO7;f}=xw%sոҨ (^<(& P"!WԨ.uцd/x8,cÉsKĿw1DE4o 8-L…uBn {-tkw{|}fӱYw3-$$f)G NzBoN{Z*PL6wa.K$ vļcXͲ=`Es` !H$ m$[X~ -,4$ `ȝ`!!?#獊'*B $x r.>,;~ AWIIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/watch.png000066400000000000000000000007601411575327000225410ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBPLTEGpL~~~}}}{{{UUUyyy~~~~~~~~~~~~}}}~~~~~~~~~~~~~~~}}}o߂t=j+tRNS[v=Bf(E"jnCYX IDAT8W EIǮfr"a Z(,/閥kj2N/c嗚oH}Ä${$tOPu(Cn~:n2p]\Q2nZ_4憬 (YP?PLuO_VO]w F`22z0Q*pO. @y y)@Ue9#Y3s 5IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/wifi.png000066400000000000000000000011351411575327000223660ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL```___^^^___0W@tRNSB /0W|cJz7R?f5TFeXI/&d1 a4- rro%0 ˏ5Xxt,kl:LgsrǦԻ+ ͷZyitaPi ;H%+~4;}Kł?DA44N"znFP&_U D?&IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/window.png000066400000000000000000000002411411575327000227340ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpLࠠ```atRNS@f(IDAT(c` Q>Pc pۢ$F@.r`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/wizard.png000066400000000000000000000004631411575327000227330ustar00rootroot00000000000000PNG  IHDR D pHYs+6PLTEGpL```^^^߿___ e]tRNSgimkEGIDAT8Ւ D+Yu -$&i@A.p:l73O G$&/aC(aΓ!vxxp ~Wa' ķ9IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/worship.png000066400000000000000000000003621411575327000231240ustar00rootroot00000000000000PNG  IHDR Tg pHYs+PLTEGpL```aaa______UUU]]]aaa``` tRNS?N BpfiIDAT(c` p4h/@ &TbGEG"p>TUDhP1M@$ %HAm,P2P!@R?IduUIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/wrap.png000066400000000000000000000004331411575327000224010ustar00rootroot00000000000000PNG  IHDR D pHYs+3PLTEGpL___aaafffaaa```````````````bbb___```\\\```iztRNS ?ZԇvZasIDAT8ݒK D 壎?SژY2/t!zIMρ TEnP VIOWnr >tD|mudaY] Yl}#,:;Qޯ&eN{}nu\Qf'8\?Iҫh+hwF>~pB.3]uMqiIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/zoom-normal.png000066400000000000000000000007671411575327000237140ustar00rootroot00000000000000PNG  IHDR DgAMA asRGBoPLTEGpL____________@@@______^^^___```UUU___^^^___bbbfff]]]^^^^^^]]]______```aaa___^^^____________aaa______```ccc___z2$tRNS#W ^" lm]87ԅ*{畀IDAT8˵۶ EC CV{W?c,fb|eGQU9BvRW-xZ)Tr\W N8fSqgWy ^ ~^>Pa ?!Z&)Li͇ۜ9jsDZoYDOP4&lB`$eJ}0-]艬';uVc[߆N?kbCY ۶2sIENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/zoom-out.png000066400000000000000000000007021411575327000232200ustar00rootroot00000000000000PNG  IHDR DgAMA asRGB`PLTEGpL___aaa______________________________bbb```ccclll___^^^^^^_________```___^^^______bbb^^^fff___[#tRNS#W ^" lm]87ԅ{*=#IDAT8˵ EE)o]e1Җ4indvB~l&J$K\1ϕ^1Wr@ǣЗ,{\,DiR`hxlRp**B:HDJ*[mP!!"Xd[hPQeMֲL7'=^8#)cTꃙ3'\/~mmX_3̵G,vX`IENDB`gambas-3.16.3/comp/src/gb.form.stock/gambas/32/zoom-width.png000066400000000000000000000011331411575327000235270ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL_________^^^___fffddd]]]______```___^^^___@@@___^^^^^^```___^^^aaaUUU___```aaa___```___```_________hhh```aaa```eee```^^^\\\UUU``````mmmaaaccc______]]]aaa______```6tRNSW #ml*{ ^P"& x+,Ξ7IDAT8˵v0Ea{N}EH"1d'Mucf؊ \̈:_Q0 1 uܮYJ˾FAobm!ג(֎yKҫ^3$0Wt90% ~)Y&x$0qC ozJ>2_2_ SJD[4H$Hj9bLV뫻^X8OxH8ҰƝ9}mbM=\(Bh_^3$PIENDB`gambas-3.16.3/comp/src/gb.form.stock/links000066400000000000000000000033021411575327000203050ustar00rootroot00000000000000application-javascript -> js application-msword -> office application-pdf -> pdf application-vnd.debian.binary-package -> package application-vnd.google-earth.kml+xml -> html application-vnd.ms-excel -> office-calc application-vns.ms-powerpoint -> office-presentation application-vnd.ms-word -> office application-vnd.oasis.opendocument.graphics -> office-draw application-vnd.oasis.opendocument.presentation -> office-presentation application-vnd.oasis.opendocument.spreadsheet -> office-calc application-vnd.oasis.opendocument.text -> office application-vnd.stardivision.calc -> office-calc application-vnd.stardivision.writer -> office application-vnd.sun.xml.calc -> office-calc application-vnd.sun.xml.writer -> office application-x-bzip-compressed-tar -> archive application-x-cd-image -> cdrom application-x-compressed-tar -> archive application-x-deb -> package application-x-desktop -> desktop application-x-extension-html -> html application-x-font-ttf -> font application-x-gambas3 -> gambas application-x-generic -> file application-x-generic -> program application-x-raw-disk-image -> harddisk application-x-rpm -> package application-x-sharedlib -> exec application-x-trash -> trash application-x-wine-extension-ini -> text application-x-xz-compressed-tar -> archive application-xml -> xml application-zip -> archive audio-x-generic -> audio image-svg+xml -> vector image-svg+xml-compressed -> vector image-x-generic -> image package-x-generic -> archive text-calendar -> calendar text-css -> css text-csv -> table text-html -> html text-plain -> text text-xml -> xml text-x-c++src -> cpp text-x-chdr -> h text-x-csrc -> c text-x-generic -> text text-x-markdown -> md video-x-generic -> video font-x-generic -> font gambas-3.16.3/comp/src/gb.form.terminal/000077500000000000000000000000001411575327000177345ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.component000066400000000000000000000001741411575327000217410ustar00rootroot00000000000000[Component] Key=gb.form.terminal Version=3.16.90 State=1 Authors=Benoît Minisini,Fabien Bodard Needs=Form Requires=gb.term gambas-3.16.3/comp/src/gb.form.terminal/.directory000066400000000000000000000000411411575327000217340ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form.terminal/.hidden/000077500000000000000000000000001411575327000212455ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.hidden/Konsole keys README.txt000066400000000000000000000044601411575327000252760ustar00rootroot00000000000000[README.KeyTab] The keytabs offered in the Options/Keyboard menu are taken from configurations files with a *.keytab pattern either located in $KDEDIR/share/apps/konsole or ~/.kde/share/apps/konsole. Keytabs allow to configure the behavior of konsole on keyboard events, especially for functions keys. Please have a look into the README.keyboard file, too. The syntax is that each entry has the form : "key" Keyname { ("+"|"-") Modename } ":" (String|Operation) Keynames are those defined in with the "Qt::Key_" prefix removed. Mode names are: - Shift : Shift Key pressed - Alt : Alt Key pressed - Control : Control Key pressed ( The VT100 emulation has modes that can affect the sequences emitted by certain keys. These modes are under control of the client program. - Newline : effects Return and Enter key. - Application : effects Up and Down key. - Ansi : effects Up and Down key (This is for VT52, really). Since sending a state to a program that has set the state itself is positivly wrong and obsolete design, better forget about this nasty detail. I may well remove this "feature" in a future clean up round. ) A "+" preceeding a Modename means the Key is pressed. A "-" preceeding a Modename means the Key is not pressed. If no mode is given it means don't care. Note that the combination of Key and Modes (set/reset) has to be unique. This means, that key A + Shift : "A" key A : "a" will not accept the small letter "a" rule as expected, one has to add a "- Shift" to the last clause. Use the stdout/stderr dianostics of konsole when modifying keytabs to find problems like this. Operations are - scrollUpLine : scroll up one line in the history log - scrollUpPage : scroll up one page in the history log - scrollDownLine : scroll down one line in the history log - scrollDownPage : scroll down one page in the history log - scrollUpToTop : scroll up to the begining of the history log - scrollDownToBottom : scroll down to the end of the history log Strings have the syntax of C strings, one may use the following escapes: - \E - escape - \\ - backslash - \" - double quote - \t - tab - \r - return - \n - newline - \b - backspace - \xHH - where HH are two hex digits gambas-3.16.3/comp/src/gb.form.terminal/.hidden/Konsole keys.txt000066400000000000000000000123501411575327000243550ustar00rootroot00000000000000# [README.default.Keytab] Default Keyboard Table # # To customize your keyboard, copy this file to something # ending with .keytab and change it to meet you needs. # Please read the README.KeyTab and the README.keyboard # in this case. # # -------------------------------------------------------------- keyboard "Default (XFree 4)" # -------------------------------------------------------------- # # Note that this particular table is a "risc" version made to # ease customization without bothering with obsolete details. # See VT100.keytab for the more hairy stuff. # # -------------------------------------------------------------- # common keys key Escape : "\E" key Tab -Shift : "\t" key Tab +Shift+Ansi : "\E[Z" key Tab +Shift-Ansi : "\t" key Backtab +Ansi : "\E[Z" key Backtab -Ansi : "\t" key Return-Shift-NewLine : "\r" key Return-Shift+NewLine : "\r\n" key Return+Shift : "\EOM" # Backspace and Delete codes are preserving CTRL-H. key Backspace : "\x7f" # Arrow keys in VT52 mode # shift up/down are reserved for scrolling. # shift left/right are reserved for switching between tabs (this is hardcoded). key Up -Shift-Ansi : "\EA" key Down -Shift-Ansi : "\EB" key Right-Shift-Ansi : "\EC" key Left -Shift-Ansi : "\ED" # Arrow keys in ANSI mode with Application - and Normal Cursor Mode) key Up -Shift-AnyMod+Ansi+AppCuKeys : "\EOA" key Down -Shift-AnyMod+Ansi+AppCuKeys : "\EOB" key Right -Shift-AnyMod+Ansi+AppCuKeys : "\EOC" key Left -Shift-AnyMod+Ansi+AppCuKeys : "\EOD" key Up -Shift-AnyMod+Ansi-AppCuKeys : "\E[A" key Down -Shift-AnyMod+Ansi-AppCuKeys : "\E[B" key Right -Shift-AnyMod+Ansi-AppCuKeys : "\E[C" key Left -Shift-AnyMod+Ansi-AppCuKeys : "\E[D" key Up -Shift+AnyMod+Ansi : "\E[1;*A" key Down -Shift+AnyMod+Ansi : "\E[1;*B" key Right -Shift+AnyMod+Ansi : "\E[1;*C" key Left -Shift+AnyMod+Ansi : "\E[1;*D" key Up +Shift+AppScreen : "\E[1;*A" key Down +Shift+AppScreen : "\E[1;*B" key Left +Shift+AppScreen : "\E[1;*D" key Right +Shift+AppScreen : "\E[1;*C" # Keypad keys with NumLock ON # (see "Numeric Keypad" section at http://www.nw.com/nw/WWW/products/wizcon/vt100.html ) # # Not enabled for now because it breaks the keypad in Vim. # #key 0 +KeyPad+AppKeyPad : "\EOp" #key 1 +KeyPad+AppKeyPad : "\EOq" #key 2 +KeyPad+AppKeyPad : "\EOr" #key 3 +KeyPad+AppKeyPad : "\EOs" #key 4 +KeyPad+AppKeyPad : "\EOt" #key 5 +KeyPad+AppKeyPad : "\EOu" #key 6 +KeyPad+AppKeyPad : "\EOv" #key 7 +KeyPad+AppKeyPad : "\EOw" #key 8 +KeyPad+AppKeyPad : "\EOx" #key 9 +KeyPad+AppKeyPad : "\EOy" #key + +KeyPad+AppKeyPad : "\EOl" #key - +KeyPad+AppKeyPad : "\EOm" #key . +KeyPad+AppKeyPad : "\EOn" #key * +KeyPad+AppKeyPad : "\EOM" #key Enter +KeyPad+AppKeyPad : "\r" # Keypad keys with NumLock Off key Up -Shift+Ansi+AppCuKeys+KeyPad : "\EOA" key Down -Shift+Ansi+AppCuKeys+KeyPad : "\EOB" key Right -Shift+Ansi+AppCuKeys+KeyPad : "\EOC" key Left -Shift+Ansi+AppCuKeys+KeyPad : "\EOD" key Up -Shift+Ansi-AppCuKeys+KeyPad : "\E[A" key Down -Shift+Ansi-AppCuKeys+KeyPad : "\E[B" key Right -Shift+Ansi-AppCuKeys+KeyPad : "\E[C" key Left -Shift+Ansi-AppCuKeys+KeyPad : "\E[D" key Home +AppCuKeys+KeyPad : "\EOH" key End +AppCuKeys+KeyPad : "\EOF" key Home -AppCuKeys+KeyPad : "\E[H" key End -AppCuKeys+KeyPad : "\E[F" key Insert +KeyPad : "\E[2~" key Delete +KeyPad : "\E[3~" key PgUp -Shift+KeyPad : "\E[5~" key PgDown -Shift+KeyPad : "\E[6~" # other grey PC keys key Enter+NewLine : "\r\n" key Enter-NewLine : "\r" key Home -AnyMod-AppCuKeys : "\E[H" key End -AnyMod-AppCuKeys : "\E[F" key Home -AnyMod+AppCuKeys : "\EOH" key End -AnyMod+AppCuKeys : "\EOF" key Home +AnyMod : "\E[1;*H" key End +AnyMod : "\E[1;*F" key Insert -AnyMod : "\E[2~" key Delete -AnyMod : "\E[3~" key Insert +AnyMod : "\E[2;*~" key Delete +AnyMod : "\E[3;*~" key PgUp -Shift-AnyMod : "\E[5~" key PgDown -Shift-AnyMod : "\E[6~" key PgUp -Shift+AnyMod : "\E[5;*~" key PgDown -Shift+AnyMod : "\E[6;*~" # Function keys key F1 -AnyMod : "\EOP" key F2 -AnyMod : "\EOQ" key F3 -AnyMod : "\EOR" key F4 -AnyMod : "\EOS" key F5 -AnyMod : "\E[15~" key F6 -AnyMod : "\E[17~" key F7 -AnyMod : "\E[18~" key F8 -AnyMod : "\E[19~" key F9 -AnyMod : "\E[20~" key F10 -AnyMod : "\E[21~" key F11 -AnyMod : "\E[23~" key F12 -AnyMod : "\E[24~" key F1 +AnyMod : "\EO*P" key F2 +AnyMod : "\EO*Q" key F3 +AnyMod : "\EO*R" key F4 +AnyMod : "\EO*S" key F5 +AnyMod : "\E[15;*~" key F6 +AnyMod : "\E[17;*~" key F7 +AnyMod : "\E[18;*~" key F8 +AnyMod : "\E[19;*~" key F9 +AnyMod : "\E[20;*~" key F10 +AnyMod : "\E[21;*~" key F11 +AnyMod : "\E[23;*~" key F12 +AnyMod : "\E[24;*~" # Work around dead keys key Space +Control : "\x00" # Some keys are used by konsole to cause operations. # The scroll* operations refer to the history buffer. key Up +Shift-AppScreen : scrollLineUp key PgUp +Shift-AppScreen : scrollPageUp key Home +Shift-AppScreen : scrollUpToTop key Down +Shift-AppScreen : scrollLineDown key PgDown +Shift-AppScreen : scrollPageDown key End +Shift-AppScreen : scrollDownToBottom gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XTerm control sequences.txt000066400000000000000000002564111411575327000264730ustar00rootroot00000000000000 http://invisible-island.net/xterm/ XTerm Control Sequences Edward Moy University of California, Berkeley Revised by Stephen Gildea X Consortium (1994) Thomas Dickey XFree86 Project (1996-2006) invisible-island.net (2006-2016) updated for XTerm Patch #328 (2016/12/20) Definitions c The literal character c. C A single (required) character. Ps A single (usually optional) numeric parameter, composed of one of more digits. Pm A multiple numeric parameter composed of any number of single numeric parameters, separated by ; character(s). Individual val- ues for the parameters are listed with Ps . Pt A text parameter composed of printable characters. Control Bytes, Characters, and Sequences ECMA-48 (aka "ISO 6429") documents C1 (8-bit) and C0 (7-bit) codes. Those are respectively codes 128 to 159 and 0 to 31. ECMA-48 avoids referring to these codes as characters, because that term is associated with graphic characters. Instead, it uses "bytes" and "codes", with occasional lapses to "characters" where the meaning cannot be mistaken. Controls (including the escape code 27) are processed once: o This means that a C1 control can be mistaken for badly-formed UTF-8 when the terminal runs in UTF-8 mode because C1 controls are valid continuation bytes of a UTF-8 encoded (multibyte) value. o It is not possible to use a C1 control obtained from decoding the UTF-8 text, because that would require reprocessing the data. Conse- quently there is no ambiguity in the way this document uses the term "character" to refer to bytes in a control sequence. The order of processing is a necessary consequence of the way ECMA-48 is designed: o Each byte sent to the terminal can be unambiguously determined to fall into one of a few categories (C0, C1 and graphic characters). o ECMA-48 is modal; once it starts processing a control sequence, the terminal continues until the sequence is complete, or some byte is found which is not allowed in the sequence. o Intermediate, parameter and final bytes may use the same codes as graphic characters, but they are processed as part of a control sequence and are not actually graphic characters. o Eight-bit controls can have intermediate, etc., bytes in the range 160 to 255. Those can be treated as their counterparts in the range 32 to 127. o Single-byte controls can be handled separately from multi-byte control sequences because ECMA-48's rules are unambiguous. As a special case, ECMA-48 (section 9) mentions that the control func- tions shift-in and shift-out are allowed to occur within a 7-bit multibyte control sequence because those cannot alter the meaning of the control sequence. o Some controls (such as OSC ) introduce a string mode, which is ended on a ST (string terminator). Again, the terminal should accept single-byte controls within the string. However, xterm has a resource setting brokenLinuxOSC to allow recovery from applications which rely upon malformed palette sequences used by the Linux console. C1 (8-Bit) Control Characters The xterm program recognizes both 8-bit and 7-bit control characters. It generates 7-bit controls (by default) or 8-bit if S8C1T is enabled. The following pairs of 7-bit and 8-bit control characters are equiva- lent: ESC D Index (IND is 0x84). ESC E Next Line (NEL is 0x85). ESC H Tab Set (HTS is 0x88). ESC M Reverse Index (RI is 0x8d). ESC N Single Shift Select of G2 Character Set (SS2 is 0x8e). This affects next character only. ESC O Single Shift Select of G3 Character Set (SS3 is 0x8f). This affects next character only. ESC P Device Control String (DCS is 0x90). ESC V Start of Guarded Area (SPA is 0x96). ESC W End of Guarded Area (EPA is 0x97). ESC X Start of String (SOS is 0x98). ESC Z Return Terminal ID (DECID is 0x9a). Obsolete form of CSI c (DA). ESC [ Control Sequence Introducer (CSI is 0x9b). ESC \ String Terminator (ST is 0x9c). ESC ] Operating System Command (OSC is 0x9d). ESC ^ Privacy Message (PM is 0x9e). ESC _ Application Program Command (APC is 0x9f). These control characters are used in the vtXXX emulation. VT100 Mode Most of these control sequences are standard VT102 control sequences, but there is support for later DEC VT terminals (i.e., VT220, VT320, VT420, VT510), as well as ISO 6429 and aixterm color controls. The only VT102 feature not supported is auto-repeat, since the only way X pro- vides for this will affect all windows. There are additional control sequences to provide xterm-dependent func- tions, such as the scrollbar or window size. Where the function is specified by DEC or ISO 6429, the code assigned to it is given in paren- theses. The escape codes to designate and invoke character sets are specified by ISO 2022 (see that document for a discussion of character sets). Many of the features are optional; xterm can be configured and built without support for them. Single-character functions BEL Bell (Ctrl-G). BS Backspace (Ctrl-H). CR Carriage Return (Ctrl-M). ENQ Return Terminal Status (Ctrl-E). Default response is an empty string, but may be overridden by a resource answerbackString. FF Form Feed or New Page (NP). (FF is Ctrl-L). FF is treated the same as LF . LF Line Feed or New Line (NL). (LF is Ctrl-J). SI Shift In (Ctrl-O) -> Switch to Standard Character Set. This invokes the G0 character set (the default). SO Shift Out (Ctrl-N) -> Switch to Alternate Character Set. This invokes the G1 character set. SP Space. TAB Horizontal Tab (HT) (Ctrl-I). VT Vertical Tab (Ctrl-K). This is treated the same as LF. Controls beginning with ESC This excludes controls where ESC is part of a 7-bit equivalent to 8-bit C1 controls, ordered by the final character(s). ESC SP F 7-bit controls (S7C1T). ESC SP G 8-bit controls (S8C1T). ESC SP L Set ANSI conformance level 1 (dpANS X3.134.1). ESC SP M Set ANSI conformance level 2 (dpANS X3.134.1). ESC SP N Set ANSI conformance level 3 (dpANS X3.134.1). ESC # 3 DEC double-height line, top half (DECDHL). ESC # 4 DEC double-height line, bottom half (DECDHL). ESC # 5 DEC single-width line (DECSWL). ESC # 6 DEC double-width line (DECDWL). ESC # 8 DEC Screen Alignment Test (DECALN). ESC % @ Select default character set. That is ISO 8859-1 (ISO 2022). ESC % G Select UTF-8 character set (ISO 2022). ESC ( C Designate G0 Character Set (ISO 2022, VT100). Final character C for designating 94-character sets. In this list, 0 , A and B apply to VT100 and up, the remainder to VT220 and up. The VT220 character sets, together with the Portuguese character set are activated by the National Replacement Character controls. The A is a special case, since it is also activated by the VT300-control for British Latin-1 separately from the National Replacement Character controls. C = 0 -> DEC Special Character and Line Drawing Set. C = < -> DEC Supplementary (VT200). C = % 5 -> DEC Supplementary Graphics (VT300). C = > -> DEC Technical (VT300). C = A -> United Kingdom (UK). C = B -> United States (USASCII). C = 4 -> Dutch. C = C or 5 -> Finnish. C = R or f -> French. C = Q or 9 -> French Canadian (VT200, VT300). C = K -> German. C = Y -> Italian. C = ` , E or 6 -> Norwegian/Danish. C = % 6 -> Portuguese (VT300). C = Z -> Spanish. C = H or 7 -> Swedish. C = = -> Swiss. ESC ) C Designate G1 Character Set (ISO 2022, VT100). The same character sets apply as for ESC ( C. ESC * C Designate G2 Character Set (ISO 2022, VT220). The same character sets apply as for ESC ( C. ESC + C Designate G3 Character Set (ISO 2022, VT220). The same character sets apply as for ESC ( C. ESC - C Designate G1 Character Set (VT300). The same character sets apply as for ESC ( C. ESC . C Designate G2 Character Set (VT300). The same character sets apply as for ESC ( C. ESC / C Designate G3 Character Set (VT300). These work for 96-character sets only. C = A -> ISO Latin-1 Supplemental. ESC 6 Back Index (DECBI), VT420 and up. ESC 7 Save Cursor (DECSC). ESC 8 Restore Cursor (DECRC). ESC 9 Forward Index (DECFI), VT420 and up. ESC = Application Keypad (DECKPAM). ESC > Normal Keypad (DECKPNM). ESC F Cursor to lower left corner of screen. This is enabled by the hpLowerleftBugCompat resource. ESC c Full Reset (RIS). ESC l Memory Lock (per HP terminals). Locks memory above the cur- sor. ESC m Memory Unlock (per HP terminals). ESC n Invoke the G2 Character Set as GL (LS2). ESC o Invoke the G3 Character Set as GL (LS3). ESC | Invoke the G3 Character Set as GR (LS3R). ESC } Invoke the G2 Character Set as GR (LS2R). ESC ~ Invoke the G1 Character Set as GR (LS1R). Application Program-Command functions APC Pt ST None. xterm implements no APC functions; Pt is ignored. Pt need not be printable characters. Device-Control functions DCS Ps; Ps| Pt ST User-Defined Keys (DECUDK). The first parameter: Ps = 0 -> Clear all UDK definitions before starting (default). Ps = 1 -> Erase Below (default). The second parameter: Ps = 0 <- Lock the keys (default). Ps = 1 <- Do not lock. The third parameter is a ';'-separated list of strings denot- ing the key-code separated by a '/' from the hex-encoded key value. The key codes correspond to the DEC function-key codes (e.g., F6=17). DCS $ q Pt ST Request Status String (DECRQSS). The string following the "q" is one of the following: " q -> DECSCA " p -> DECSCL r -> DECSTBM s -> DECSLRM m -> SGR SP q -> DECSCUSR xterm responds with DCS 1 $ r Pt ST for valid requests, replacing the Pt with the corresponding CSI string, or DCS 0 $ r Pt ST for invalid requests. DCS + p Pt ST Set Termcap/Terminfo Data (xterm, experimental). The string following the "p" is a name to use for retrieving data from the terminal database. The data will be used for the "tcap" keyboard configuration's function- and special-keys, as well as by the Request Termcap/Terminfo String control. DCS + q Pt ST Request Termcap/Terminfo String (xterm, experimental). The string following the "q" is a list of names encoded in hexa- decimal (2 digits per character) separated by ; which corre- spond to termcap or terminfo key names. Two special features are also recognized, which are not key names: Co for termcap colors (or colors for terminfo colors), and TN for termcap name (or name for terminfo name). xterm responds with DCS 1 + r Pt ST for valid requests, adding to Pt an = , and the value of the corresponding string that xterm would send, or DCS 0 + r Pt ST for invalid requests. The strings are encoded in hexadecimal (2 digits per charac- ter). Functions using CSI , ordered by the final character(s) CSI Ps @ Insert Ps (Blank) Character(s) (default = 1) (ICH). CSI Ps A Cursor Up Ps Times (default = 1) (CUU). CSI Ps B Cursor Down Ps Times (default = 1) (CUD). CSI Ps C Cursor Forward Ps Times (default = 1) (CUF). CSI Ps D Cursor Backward Ps Times (default = 1) (CUB). CSI Ps E Cursor Next Line Ps Times (default = 1) (CNL). CSI Ps F Cursor Preceding Line Ps Times (default = 1) (CPL). CSI Ps G Cursor Character Absolute [column] (default = [row,1]) (CHA). CSI Ps ; Ps H Cursor Position [row;column] (default = [1,1]) (CUP). CSI Ps I Cursor Forward Tabulation Ps tab stops (default = 1) (CHT). CSI Ps J Erase in Display (ED). Ps = 0 -> Erase Below (default). Ps = 1 -> Erase Above. Ps = 2 -> Erase All. Ps = 3 -> Erase Saved Lines (xterm). CSI ? Ps J Erase in Display (DECSED). Ps = 0 -> Selective Erase Below (default). Ps = 1 -> Selective Erase Above. Ps = 2 -> Selective Erase All. CSI Ps K Erase in Line (EL). Ps = 0 -> Erase to Right (default). Ps = 1 -> Erase to Left. Ps = 2 -> Erase All. CSI ? Ps K Erase in Line (DECSEL). Ps = 0 -> Selective Erase to Right (default). Ps = 1 -> Selective Erase to Left. Ps = 2 -> Selective Erase All. CSI Ps L Insert Ps Line(s) (default = 1) (IL). CSI Ps M Delete Ps Line(s) (default = 1) (DL). CSI Ps P Delete Ps Character(s) (default = 1) (DCH). CSI Ps S Scroll up Ps lines (default = 1) (SU). CSI ? Pi; Pa; Pv S If configured to support either Sixel Graphics or ReGIS Graph- ics, xterm accepts a three-parameter control sequence, where Pi, Pa and Pv are the item, action and value: Pi = 1 -> item (color registers). Pa = 1 -> read the number of color registers. Pa = 2 -> reset the number of color registers. Pa = 3 -> set the number of color registers to the value Pv. The control sequence returns a response using the same form: CSI ? Pi; Ps; Pv S where Ps is the status: Ps = 0 -> success. Ps = 3 -> failure. CSI Ps T Scroll down Ps lines (default = 1) (SD). CSI Ps ; Ps ; Ps ; Ps ; Ps T Initiate highlight mouse tracking. Parameters are [func;startx;starty;firstrow;lastrow]. See the section Mouse Tracking. CSI > Ps; Ps T Reset one or more features of the title modes to the default value. Normally, "reset" disables the feature. It is possi- ble to disable the ability to reset features by compiling a different default for the title modes into xterm. Ps = 0 -> Do not set window/icon labels using hexadecimal. Ps = 1 -> Do not query window/icon labels using hexadeci- mal. Ps = 2 -> Do not set window/icon labels using UTF-8. Ps = 3 -> Do not query window/icon labels using UTF-8. (See discussion of "Title Modes"). CSI Ps X Erase Ps Character(s) (default = 1) (ECH). CSI Ps Z Cursor Backward Tabulation Ps tab stops (default = 1) (CBT). CSI Pm ` Character Position Absolute [column] (default = [row,1]) (HPA). CSI Pm a Character Position Relative [columns] (default = [row,col+1]) (HPR). CSI Ps b Repeat the preceding graphic character Ps times (REP). CSI Ps c Send Device Attributes (Primary DA). Ps = 0 or omitted -> request attributes from terminal. The response depends on the decTerminalID resource setting. -> CSI ? 1 ; 2 c ("VT100 with Advanced Video Option") -> CSI ? 1 ; 0 c ("VT101 with No Options") -> CSI ? 6 c ("VT102") -> CSI ? 6 2 ; Psc ("VT220") -> CSI ? 6 3 ; Psc ("VT320") -> CSI ? 6 4 ; Psc ("VT420") The VT100-style response parameters do not mean anything by themselves. VT220 (and higher) parameters do, telling the host what features the terminal supports: Ps = 1 -> 132-columns. Ps = 2 -> Printer. Ps = 3 -> ReGIS graphics. Ps = 4 -> Sixel graphics. Ps = 6 -> Selective erase. Ps = 8 -> User-defined keys. Ps = 9 -> National Replacement Character sets. Ps = 1 5 -> Technical characters. Ps = 1 8 -> User windows. Ps = 2 1 -> Horizontal scrolling. Ps = 2 2 -> ANSI color, e.g., VT525. Ps = 2 9 -> ANSI text locator (i.e., DEC Locator mode). CSI > Ps c Send Device Attributes (Secondary DA). Ps = 0 or omitted -> request the terminal's identification code. The response depends on the decTerminalID resource set- ting. It should apply only to VT220 and up, but xterm extends this to VT100. -> CSI > Pp ; Pv ; Pc c where Pp denotes the terminal type Pp = 0 -> "VT100". Pp = 1 -> "VT220". Pp = 2 -> "VT240". Pp = 1 8 -> "VT330". Pp = 1 9 -> "VT340". Pp = 2 4 -> "VT320". Pp = 4 1 -> "VT420". Pp = 6 1 -> "VT510". Pp = 6 4 -> "VT520". Pp = 6 5 -> "VT525". and Pv is the firmware version (for xterm, this was originally the XFree86 patch number, starting with 95). In a DEC termi- nal, Pc indicates the ROM cartridge registration number and is always zero. CSI Pm d Line Position Absolute [row] (default = [1,column]) (VPA). CSI Pm e Line Position Relative [rows] (default = [row+1,column]) (VPR). CSI Ps ; Ps f Horizontal and Vertical Position [row;column] (default = [1,1]) (HVP). CSI Ps g Tab Clear (TBC). Ps = 0 -> Clear Current Column (default). Ps = 3 -> Clear All. CSI Pm h Set Mode (SM). Ps = 2 -> Keyboard Action Mode (AM). Ps = 4 -> Insert Mode (IRM). Ps = 1 2 -> Send/receive (SRM). Ps = 2 0 -> Automatic Newline (LNM). CSI ? Pm h DEC Private Mode Set (DECSET). Ps = 1 -> Application Cursor Keys (DECCKM). Ps = 2 -> Designate USASCII for character sets G0-G3 (DECANM), and set VT100 mode. Ps = 3 -> 132 Column Mode (DECCOLM). Ps = 4 -> Smooth (Slow) Scroll (DECSCLM). Ps = 5 -> Reverse Video (DECSCNM). Ps = 6 -> Origin Mode (DECOM). Ps = 7 -> Wraparound Mode (DECAWM). Ps = 8 -> Auto-repeat Keys (DECARM). Ps = 9 -> Send Mouse X & Y on button press. See the sec- tion Mouse Tracking. This is the X10 xterm mouse protocol. Ps = 1 0 -> Show toolbar (rxvt). Ps = 1 2 -> Start Blinking Cursor (att610). Ps = 1 8 -> Print form feed (DECPFF). Ps = 1 9 -> Set print extent to full screen (DECPEX). Ps = 2 5 -> Show Cursor (DECTCEM). Ps = 3 0 -> Show scrollbar (rxvt). Ps = 3 5 -> Enable font-shifting functions (rxvt). Ps = 3 8 -> Enter Tektronix Mode (DECTEK). Ps = 4 0 -> Allow 80 -> 132 Mode. Ps = 4 1 -> more(1) fix (see curses resource). Ps = 4 2 -> Enable National Replacement Character sets (DECNRCM). Ps = 4 4 -> Turn On Margin Bell. Ps = 4 5 -> Reverse-wraparound Mode. Ps = 4 6 -> Start Logging. This is normally disabled by a compile-time option. Ps = 4 7 -> Use Alternate Screen Buffer. (This may be dis- abled by the titeInhibit resource). Ps = 6 6 -> Application keypad (DECNKM). Ps = 6 7 -> Backarrow key sends backspace (DECBKM). Ps = 6 9 -> Enable left and right margin mode (DECLRMM), VT420 and up. Ps = 9 5 -> Do not clear screen when DECCOLM is set/reset (DECNCSM), VT510 and up. Ps = 1 0 0 0 -> Send Mouse X & Y on button press and release. See the section Mouse Tracking. This is the X11 xterm mouse protocol. Ps = 1 0 0 1 -> Use Hilite Mouse Tracking. Ps = 1 0 0 2 -> Use Cell Motion Mouse Tracking. Ps = 1 0 0 3 -> Use All Motion Mouse Tracking. Ps = 1 0 0 4 -> Send FocusIn/FocusOut events. Ps = 1 0 0 5 -> Enable UTF-8 Mouse Mode. Ps = 1 0 0 6 -> Enable SGR Mouse Mode. Ps = 1 0 0 7 -> Enable Alternate Scroll Mode. Ps = 1 0 1 0 -> Scroll to bottom on tty output (rxvt). Ps = 1 0 1 1 -> Scroll to bottom on key press (rxvt). Ps = 1 0 1 5 -> Enable urxvt Mouse Mode. Ps = 1 0 3 4 -> Interpret "meta" key, sets eighth bit. (enables the eightBitInput resource). Ps = 1 0 3 5 -> Enable special modifiers for Alt and Num- Lock keys. (This enables the numLock resource). Ps = 1 0 3 6 -> Send ESC when Meta modifies a key. (This enables the metaSendsEscape resource). Ps = 1 0 3 7 -> Send DEL from the editing-keypad Delete key. Ps = 1 0 3 9 -> Send ESC when Alt modifies a key. (This enables the altSendsEscape resource). Ps = 1 0 4 0 -> Keep selection even if not highlighted. (This enables the keepSelection resource). Ps = 1 0 4 1 -> Use the CLIPBOARD selection. (This enables the selectToClipboard resource). Ps = 1 0 4 2 -> Enable Urgency window manager hint when Control-G is received. (This enables the bellIsUrgent resource). Ps = 1 0 4 3 -> Enable raising of the window when Control-G is received. (enables the popOnBell resource). Ps = 1 0 4 4 -> Reuse the most recent data copied to CLIP- BOARD. (This enables the keepClipboard resource). Ps = 1 0 4 7 -> Use Alternate Screen Buffer. (This may be disabled by the titeInhibit resource). Ps = 1 0 4 8 -> Save cursor as in DECSC. (This may be dis- abled by the titeInhibit resource). Ps = 1 0 4 9 -> Save cursor as in DECSC and use Alternate Screen Buffer, clearing it first. (This may be disabled by the titeInhibit resource). This combines the effects of the 1 0 4 7 and 1 0 4 8 modes. Use this with terminfo-based applications rather than the 4 7 mode. Ps = 1 0 5 0 -> Set terminfo/termcap function-key mode. Ps = 1 0 5 1 -> Set Sun function-key mode. Ps = 1 0 5 2 -> Set HP function-key mode. Ps = 1 0 5 3 -> Set SCO function-key mode. Ps = 1 0 6 0 -> Set legacy keyboard emulation (X11R6). Ps = 1 0 6 1 -> Set VT220 keyboard emulation. Ps = 2 0 0 4 -> Set bracketed paste mode. CSI Pm i Media Copy (MC). Ps = 0 -> Print screen (default). Ps = 4 -> Turn off printer controller mode. Ps = 5 -> Turn on printer controller mode. Ps = 1 0 -> HTML screen dump. Ps = 1 1 -> SVG screen dump. CSI ? Pm i Media Copy (MC, DEC-specific). Ps = 1 -> Print line containing cursor. Ps = 4 -> Turn off autoprint mode. Ps = 5 -> Turn on autoprint mode. Ps = 1 0 -> Print composed display, ignores DECPEX. Ps = 1 1 -> Print all pages. CSI Pm l Reset Mode (RM). Ps = 2 -> Keyboard Action Mode (AM). Ps = 4 -> Replace Mode (IRM). Ps = 1 2 -> Send/receive (SRM). Ps = 2 0 -> Normal Linefeed (LNM). CSI ? Pm l DEC Private Mode Reset (DECRST). Ps = 1 -> Normal Cursor Keys (DECCKM). Ps = 2 -> Designate VT52 mode (DECANM). Ps = 3 -> 80 Column Mode (DECCOLM). Ps = 4 -> Jump (Fast) Scroll (DECSCLM). Ps = 5 -> Normal Video (DECSCNM). Ps = 6 -> Normal Cursor Mode (DECOM). Ps = 7 -> No Wraparound Mode (DECAWM). Ps = 8 -> No Auto-repeat Keys (DECARM). Ps = 9 -> Don't send Mouse X & Y on button press. Ps = 1 0 -> Hide toolbar (rxvt). Ps = 1 2 -> Stop Blinking Cursor (att610). Ps = 1 8 -> Don't print form feed (DECPFF). Ps = 1 9 -> Limit print to scrolling region (DECPEX). Ps = 2 5 -> Hide Cursor (DECTCEM). Ps = 3 0 -> Don't show scrollbar (rxvt). Ps = 3 5 -> Disable font-shifting functions (rxvt). Ps = 4 0 -> Disallow 80 -> 132 Mode. Ps = 4 1 -> No more(1) fix (see curses resource). Ps = 4 2 -> Disable National Replacement Character sets (DECNRCM). Ps = 4 4 -> Turn Off Margin Bell. Ps = 4 5 -> No Reverse-wraparound Mode. Ps = 4 6 -> Stop Logging. (This is normally disabled by a compile-time option). Ps = 4 7 -> Use Normal Screen Buffer. Ps = 6 6 -> Numeric keypad (DECNKM). Ps = 6 7 -> Backarrow key sends delete (DECBKM). Ps = 6 9 -> Disable left and right margin mode (DECLRMM), VT420 and up. Ps = 9 5 -> Clear screen when DECCOLM is set/reset (DEC- NCSM), VT510 and up. Ps = 1 0 0 0 -> Don't send Mouse X & Y on button press and release. See the section Mouse Tracking. Ps = 1 0 0 1 -> Don't use Hilite Mouse Tracking. Ps = 1 0 0 2 -> Don't use Cell Motion Mouse Tracking. Ps = 1 0 0 3 -> Don't use All Motion Mouse Tracking. Ps = 1 0 0 4 -> Don't send FocusIn/FocusOut events. Ps = 1 0 0 5 -> Disable UTF-8 Mouse Mode. Ps = 1 0 0 6 -> Disable SGR Mouse Mode. Ps = 1 0 0 7 -> Disable Alternate Scroll Mode. Ps = 1 0 1 0 -> Don't scroll to bottom on tty output (rxvt). Ps = 1 0 1 1 -> Don't scroll to bottom on key press (rxvt). Ps = 1 0 1 5 -> Disable urxvt Mouse Mode. Ps = 1 0 3 4 -> Don't interpret "meta" key. (This disables the eightBitInput resource). Ps = 1 0 3 5 -> Disable special modifiers for Alt and Num- Lock keys. (This disables the numLock resource). Ps = 1 0 3 6 -> Don't send ESC when Meta modifies a key. (This disables the metaSendsEscape resource). Ps = 1 0 3 7 -> Send VT220 Remove from the editing-keypad Delete key. Ps = 1 0 3 9 -> Don't send ESC when Alt modifies a key. (This disables the altSendsEscape resource). Ps = 1 0 4 0 -> Do not keep selection when not highlighted. (This disables the keepSelection resource). Ps = 1 0 4 1 -> Use the PRIMARY selection. (This disables the selectToClipboard resource). Ps = 1 0 4 2 -> Disable Urgency window manager hint when Control-G is received. (This disables the bellIsUrgent resource). Ps = 1 0 4 3 -> Disable raising of the window when Control- G is received. (This disables the popOnBell resource). Ps = 1 0 4 7 -> Use Normal Screen Buffer, clearing screen first if in the Alternate Screen. (This may be disabled by the titeInhibit resource). Ps = 1 0 4 8 -> Restore cursor as in DECRC. (This may be disabled by the titeInhibit resource). Ps = 1 0 4 9 -> Use Normal Screen Buffer and restore cursor as in DECRC. (This may be disabled by the titeInhibit resource). This combines the effects of the 1 0 4 7 and 1 0 4 8 modes. Use this with terminfo-based applications rather than the 4 7 mode. Ps = 1 0 5 0 -> Reset terminfo/termcap function-key mode. Ps = 1 0 5 1 -> Reset Sun function-key mode. Ps = 1 0 5 2 -> Reset HP function-key mode. Ps = 1 0 5 3 -> Reset SCO function-key mode. Ps = 1 0 6 0 -> Reset legacy keyboard emulation (X11R6). Ps = 1 0 6 1 -> Reset keyboard emulation to Sun/PC style. Ps = 2 0 0 4 -> Reset bracketed paste mode. CSI Pm m Character Attributes (SGR). Ps = 0 -> Normal (default). Ps = 1 -> Bold. Ps = 2 -> Faint, decreased intensity (ISO 6429). Ps = 3 -> Italicized (ISO 6429). Ps = 4 -> Underlined. Ps = 5 -> Blink (appears as Bold). Ps = 7 -> Inverse. Ps = 8 -> Invisible, i.e., hidden (VT300). Ps = 9 -> Crossed-out characters (ISO 6429). Ps = 2 1 -> Doubly-underlined (ISO 6429). Ps = 2 2 -> Normal (neither bold nor faint). Ps = 2 3 -> Not italicized (ISO 6429). Ps = 2 4 -> Not underlined. Ps = 2 5 -> Steady (not blinking). Ps = 2 7 -> Positive (not inverse). Ps = 2 8 -> Visible, i.e., not hidden (VT300). Ps = 2 9 -> Not crossed-out (ISO 6429). Ps = 3 0 -> Set foreground color to Black. Ps = 3 1 -> Set foreground color to Red. Ps = 3 2 -> Set foreground color to Green. Ps = 3 3 -> Set foreground color to Yellow. Ps = 3 4 -> Set foreground color to Blue. Ps = 3 5 -> Set foreground color to Magenta. Ps = 3 6 -> Set foreground color to Cyan. Ps = 3 7 -> Set foreground color to White. Ps = 3 9 -> Set foreground color to default (original). Ps = 4 0 -> Set background color to Black. Ps = 4 1 -> Set background color to Red. Ps = 4 2 -> Set background color to Green. Ps = 4 3 -> Set background color to Yellow. Ps = 4 4 -> Set background color to Blue. Ps = 4 5 -> Set background color to Magenta. Ps = 4 6 -> Set background color to Cyan. Ps = 4 7 -> Set background color to White. Ps = 4 9 -> Set background color to default (original). If 16-color support is compiled, the following apply. Assume that xterm's resources are set so that the ISO color codes are the first 8 of a set of 16. Then the aixterm colors are the bright versions of the ISO colors: Ps = 9 0 -> Set foreground color to Black. Ps = 9 1 -> Set foreground color to Red. Ps = 9 2 -> Set foreground color to Green. Ps = 9 3 -> Set foreground color to Yellow. Ps = 9 4 -> Set foreground color to Blue. Ps = 9 5 -> Set foreground color to Magenta. Ps = 9 6 -> Set foreground color to Cyan. Ps = 9 7 -> Set foreground color to White. Ps = 1 0 0 -> Set background color to Black. Ps = 1 0 1 -> Set background color to Red. Ps = 1 0 2 -> Set background color to Green. Ps = 1 0 3 -> Set background color to Yellow. Ps = 1 0 4 -> Set background color to Blue. Ps = 1 0 5 -> Set background color to Magenta. Ps = 1 0 6 -> Set background color to Cyan. Ps = 1 0 7 -> Set background color to White. If xterm is compiled with the 16-color support disabled, it supports the following, from rxvt: Ps = 1 0 0 -> Set foreground and background color to default. Xterm maintains a color palette whose entries are identified by an index beginning with zero. If 88- or 256-color support is compiled, the following apply: o All parameters are decimal integers. o RGB values range from zero (0) to 255. o ISO-8613-3 can be interpreted in more than one way; xterm allows the semicolons in this control to be replaced by colons (but after the first colon, colons must be used). These ISO-8613-3 controls are supported: Pm = 3 8 ; 2 ; Pr; Pg; Pb -> Set foreground color to the closest match in xterm's palette for the given RGB Pr/Pg/Pb. Pm = 3 8 ; 5 ; Ps -> Set foreground color to Ps. Pm = 4 8 ; 2 ; Pr; Pg; Pb -> Set background color to the closest match in xterm's palette for the given RGB Pr/Pg/Pb. Pm = 4 8 ; 5 ; Ps -> Set background color to Ps. CSI > Ps; Ps m Set or reset resource-values used by xterm to decide whether to construct escape sequences holding information about the modifiers pressed with a given key. The first parameter iden- tifies the resource to set/reset. The second parameter is the value to assign to the resource. If the second parameter is omitted, the resource is reset to its initial value. Ps = 0 -> modifyKeyboard. Ps = 1 -> modifyCursorKeys. Ps = 2 -> modifyFunctionKeys. Ps = 4 -> modifyOtherKeys. If no parameters are given, all resources are reset to their initial values. CSI Ps n Device Status Report (DSR). Ps = 5 -> Status Report. Result ("OK") is CSI 0 n Ps = 6 -> Report Cursor Position (CPR) [row;column]. Result is CSI r ; c R Note: it is possible for this sequence to be sent by a func- tion key. For example, with the default keyboard configura- tion the shifted F1 key may send (with shift-, control-, alt- modifiers) CSI 1 ; 2 R , or CSI 1 ; 5 R , or CSI 1 ; 6 R , etc. The second parameter encodes the modifiers; values range from 2 to 16. See the section PC-Style Function Keys for the codes. The modifyFunctionKeys and modifyKeyboard resources can change the form of the string sent from the modified F1 key. CSI > Ps n Disable modifiers which may be enabled via the CSI > Ps; Ps m sequence. This corresponds to a resource value of "-1", which cannot be set with the other sequence. The parameter identi- fies the resource to be disabled: Ps = 0 -> modifyKeyboard. Ps = 1 -> modifyCursorKeys. Ps = 2 -> modifyFunctionKeys. Ps = 4 -> modifyOtherKeys. If the parameter is omitted, modifyFunctionKeys is disabled. When modifyFunctionKeys is disabled, xterm uses the modifier keys to make an extended sequence of functions rather than adding a parameter to each function key to denote the modi- fiers. CSI ? Ps n Device Status Report (DSR, DEC-specific). Ps = 6 -> Report Cursor Position (DECXCPR) [row;column] as CSI ? r ; c R (assumes the default page, i.e., "1"). Ps = 1 5 -> Report Printer status as CSI ? 1 0 n (ready). or CSI ? 1 1 n (not ready). Ps = 2 5 -> Report UDK status as CSI ? 2 0 n (unlocked) or CSI ? 2 1 n (locked). Ps = 2 6 -> Report Keyboard status as CSI ? 2 7 ; 1 ; 0 ; 0 n (North American). The last two parameters apply to VT400 & up, and denote key- board ready and LK01 respectively. Ps = 5 3 -> Report Locator status as CSI ? 5 3 n Locator available, if compiled-in, or CSI ? 5 0 n No Locator, if not. Ps = 5 5 -> Report Locator status as CSI ? 5 3 n Locator available, if compiled-in, or CSI ? 5 0 n No Locator, if not. Ps = 5 6 -> Report Locator type as CSI ? 5 7 ; 1 n Mouse, if compiled-in, or CSI ? 5 7 ; 0 n Cannot identify, if not. Ps = 6 2 -> Report macro space (DECMSR) as CSI Pn \* { . Ps = 6 3 -> Report memory checksum (DECCKSR) as DCS Pt ! x x x x ST . Pt is the request id (from an optional parameter to the request). The x's are hexadecimal digits 0-9 and A-F. Ps = 7 5 -> Report data integrity as CSI ? 7 0 n (ready, no errors). Ps = 8 5 -> Report multi-session configuration as CSI ? 8 3 n (not configured for multiple-session operation). CSI > Ps p Set resource value pointerMode. This is used by xterm to decide whether to hide the pointer cursor as the user types. Valid values for the parameter: Ps = 0 -> never hide the pointer. Ps = 1 -> hide if the mouse tracking mode is not enabled. Ps = 2 -> always hide the pointer, except when leaving the window. Ps = 3 -> always hide the pointer, even if leaving/entering the window. If no parameter is given, xterm uses the default, which is 1 . CSI ! p Soft terminal reset (DECSTR). CSI Ps ; Ps " p Set conformance level (DECSCL). Valid values for the first parameter: Ps = 6 1 -> VT100. Ps = 6 2 -> VT200. Ps = 6 3 -> VT300. Valid values for the second parameter: Ps = 0 -> 8-bit controls. Ps = 1 -> 7-bit controls (always set for VT100). Ps = 2 -> 8-bit controls. CSI Ps $ p Request ANSI mode (DECRQM). For VT300 and up, reply is CSI Ps; Pm$ y where Ps is the mode number as in RM, and Pm is the mode value: 0 - not recognized 1 - set 2 - reset 3 - permanently set 4 - permanently reset CSI ? Ps$ p Request DEC private mode (DECRQM). For VT300 and up, reply is CSI ? Ps; Pm$ y where Ps is the mode number as in DECSET, Pm is the mode value as in the ANSI DECRQM. CSI Ps q Load LEDs (DECLL). Ps = 0 -> Clear all LEDS (default). Ps = 1 -> Light Num Lock. Ps = 2 -> Light Caps Lock. Ps = 3 -> Light Scroll Lock. Ps = 2 1 -> Extinguish Num Lock. Ps = 2 2 -> Extinguish Caps Lock. Ps = 2 3 -> Extinguish Scroll Lock. CSI Ps SP q Set cursor style (DECSCUSR, VT520). Ps = 0 -> blinking block. Ps = 1 -> blinking block (default). Ps = 2 -> steady block. Ps = 3 -> blinking underline. Ps = 4 -> steady underline. Ps = 5 -> blinking bar (xterm). Ps = 6 -> steady bar (xterm). CSI Ps " q Select character protection attribute (DECSCA). Valid values for the parameter: Ps = 0 -> DECSED and DECSEL can erase (default). Ps = 1 -> DECSED and DECSEL cannot erase. Ps = 2 -> DECSED and DECSEL can erase. CSI Ps ; Ps r Set Scrolling Region [top;bottom] (default = full size of win- dow) (DECSTBM). CSI ? Pm r Restore DEC Private Mode Values. The value of Ps previously saved is restored. Ps values are the same as for DECSET. CSI Pt; Pl; Pb; Pr; Ps$ r Change Attributes in Rectangular Area (DECCARA), VT400 and up. Pt; Pl; Pb; Pr denotes the rectangle. Ps denotes the SGR attributes to change: 0, 1, 4, 5, 7. CSI s Save cursor (ANSI.SYS), available only when DECLRMM is dis- abled. CSI Pl; Pr s Set left and right margins (DECSLRM), available only when DECLRMM is enabled (VT420 and up). CSI ? Pm s Save DEC Private Mode Values. Ps values are the same as for DECSET. CSI Ps ; Ps ; Ps t Window manipulation (from dtterm, as well as extensions). These controls may be disabled using the allowWindowOps resource. Valid values for the first (and any additional parameters) are: Ps = 1 -> De-iconify window. Ps = 2 -> Iconify window. Ps = 3 ; x ; y -> Move window to [x, y]. Ps = 4 ; height ; width -> Resize the xterm window to given height and width in pixels. Omitted parameters reuse the current height or width. Zero parameters use the dis- play's height or width. Ps = 5 -> Raise the xterm window to the front of the stack- ing order. Ps = 6 -> Lower the xterm window to the bottom of the stacking order. Ps = 7 -> Refresh the xterm window. Ps = 8 ; height ; width -> Resize the text area to given height and width in characters. Omitted parameters reuse the current height or width. Zero parameters use the display's height or width. Ps = 9 ; 0 -> Restore maximized window. Ps = 9 ; 1 -> Maximize window (i.e., resize to screen size). Ps = 9 ; 2 -> Maximize window vertically. Ps = 9 ; 3 -> Maximize window horizontally. Ps = 1 0 ; 0 -> Undo full-screen mode. Ps = 1 0 ; 1 -> Change to full-screen. Ps = 1 0 ; 2 -> Toggle full-screen. Ps = 1 1 -> Report xterm window state. If the xterm window is open (non-iconified), it returns CSI 1 t . If the xterm window is iconified, it returns CSI 2 t . Ps = 1 3 -> Report xterm window position. Result is CSI 3 ; x ; y t Ps = 1 4 -> Report xterm window in pixels. Result is CSI 4 ; height ; width t Ps = 1 8 -> Report the size of the text area in characters. Result is CSI 8 ; height ; width t Ps = 1 9 -> Report the size of the screen in characters. Result is CSI 9 ; height ; width t Ps = 2 0 -> Report xterm window's icon label. Result is OSC L label ST Ps = 2 1 -> Report xterm window's title. Result is OSC l label ST Ps = 2 2 ; 0 -> Save xterm icon and window title on stack. Ps = 2 2 ; 1 -> Save xterm icon title on stack. Ps = 2 2 ; 2 -> Save xterm window title on stack. Ps = 2 3 ; 0 -> Restore xterm icon and window title from stack. Ps = 2 3 ; 1 -> Restore xterm icon title from stack. Ps = 2 3 ; 2 -> Restore xterm window title from stack. Ps >= 2 4 -> Resize to Ps lines (DECSLPP). CSI > Ps; Ps t Set one or more features of the title modes. Each parameter enables a single feature. Ps = 0 -> Set window/icon labels using hexadecimal. Ps = 1 -> Query window/icon labels using hexadecimal. Ps = 2 -> Set window/icon labels using UTF-8. Ps = 3 -> Query window/icon labels using UTF-8. (See dis- cussion of "Title Modes") CSI Ps SP t Set warning-bell volume (DECSWBV, VT520). Ps = 0 or 1 -> off. Ps = 2 , 3 or 4 -> low. Ps = 5 , 6 , 7 , or 8 -> high. CSI Pt; Pl; Pb; Pr; Ps$ t Reverse Attributes in Rectangular Area (DECRARA), VT400 and up. Pt; Pl; Pb; Pr denotes the rectangle. Ps denotes the attributes to reverse, i.e., 1, 4, 5, 7. CSI u Restore cursor (ANSI.SYS). CSI Ps SP u Set margin-bell volume (DECSMBV, VT520). Ps = 1 -> off. Ps = 2 , 3 or 4 -> low. Ps = 0 , 5 , 6 , 7 , or 8 -> high. CSI Pt; Pl; Pb; Pr; Pp; Pt; Pl; Pp$ v Copy Rectangular Area (DECCRA, VT400 and up). Pt; Pl; Pb; Pr denotes the rectangle. Pp denotes the source page. Pt; Pl denotes the target location. Pp denotes the target page. CSI Pt ; Pl ; Pb ; Pr ' w Enable Filter Rectangle (DECEFR), VT420 and up. Parameters are [top;left;bottom;right]. Defines the coordinates of a filter rectangle and activates it. Anytime the locator is detected outside of the filter rectangle, an outside rectangle event is generated and the rectangle is disabled. Filter rectangles are always treated as "one-shot" events. Any parameters that are omitted default to the current locator position. If all parameters are omit- ted, any locator motion will be reported. DECELR always can- cels any prevous rectangle definition. CSI Ps x Request Terminal Parameters (DECREQTPARM). if Ps is a "0" (default) or "1", and xterm is emulating VT100, the control sequence elicits a response of the same form whose parameters describe the terminal: Ps -> the given Ps incremented by 2. Pn = 1 <- no parity. Pn = 1 <- eight bits. Pn = 1 <- 2 8 transmit 38.4k baud. Pn = 1 <- 2 8 receive 38.4k baud. Pn = 1 <- clock multiplier. Pn = 0 <- STP flags. CSI Ps * x Select Attribute Change Extent (DECSACE). Ps = 0 -> from start to end position, wrapped. Ps = 1 -> from start to end position, wrapped. Ps = 2 -> rectangle (exact). CSI Pc ; Pt ; Pl ; Pb ; Pr $ x Fill Rectangular Area (DECFRA), VT420 and up. Pc is the character to use. Pt; Pl; Pb; Pr denotes the rectangle. CSI Pi ; Pg ; Pt; Pl; Pb; Pr * y Request Checksum of Rectangular Area (DECRQCRA), VT420 and up. Response is DCS Pi ! x x x x ST Pi is the request id. Pg is the page number. Pt; Pl; Pb; Pr denotes the rectangle. The x's are hexadecimal digits 0-9 and A-F. CSI Ps ; Pu ' z Enable Locator Reporting (DECELR). Valid values for the first parameter: Ps = 0 -> Locator disabled (default). Ps = 1 -> Locator enabled. Ps = 2 -> Locator enabled for one report, then disabled. The second parameter specifies the coordinate unit for locator reports. Valid values for the second parameter: Pu = 0 <- or omitted -> default to character cells. Pu = 1 <- device physical pixels. Pu = 2 <- character cells. CSI Pt; Pl; Pb; Pr$ z Erase Rectangular Area (DECERA), VT400 and up. Pt; Pl; Pb; Pr denotes the rectangle. CSI Pm ' { Select Locator Events (DECSLE). Valid values for the first (and any additional parameters) are: Ps = 0 -> only respond to explicit host requests (DECRQLP). (This is default). It also cancels any filter rectangle. Ps = 1 -> report button down transitions. Ps = 2 -> do not report button down transitions. Ps = 3 -> report button up transitions. Ps = 4 -> do not report button up transitions. CSI Pt; Pl; Pb; Pr $ { Selective Erase Rectangular Area (DECSERA), VT400 and up. Pt; Pl; Pb; Pr denotes the rectangle. CSI Ps ' | Request Locator Position (DECRQLP). Valid values for the parameter are: Ps = 0 , 1 or omitted -> transmit a single DECLRP locator report. If Locator Reporting has been enabled by a DECELR, xterm will respond with a DECLRP Locator Report. This report is also generated on button up and down events if they have been enabled with a DECSLE, or when the locator is detected outside of a filter rectangle, if filter rectangles have been enabled with a DECEFR. -> CSI Pe ; Pb ; Pr ; Pc ; Pp & w Parameters are [event;button;row;column;page]. Valid values for the event: Pe = 0 -> locator unavailable - no other parameters sent. Pe = 1 -> request - xterm received a DECRQLP. Pe = 2 -> left button down. Pe = 3 -> left button up. Pe = 4 -> middle button down. Pe = 5 -> middle button up. Pe = 6 -> right button down. Pe = 7 -> right button up. Pe = 8 -> M4 button down. Pe = 9 -> M4 button up. Pe = 1 0 -> locator outside filter rectangle. The "button" parameter is a bitmask indicating which buttons are pressed: Pb = 0 <- no buttons down. Pb & 1 <- right button down. Pb & 2 <- middle button down. Pb & 4 <- left button down. Pb & 8 <- M4 button down. The "row" and "column" parameters are the coordinates of the locator position in the xterm window, encoded as ASCII deci- mal. The "page" parameter is not used by xterm. CSI Pm ' } Insert Ps Column(s) (default = 1) (DECIC), VT420 and up. CSI Pm ' ~ Delete Ps Column(s) (default = 1) (DECDC), VT420 and up. Operating System Commands OSC Ps ; Pt BEL OSC Ps ; Pt ST Set Text Parameters. For colors and font, if Pt is a "?", the control sequence elicits a response which consists of the con- trol sequence which would set the corresponding value. The dtterm control sequences allow you to determine the icon name and window title. Ps = 0 -> Change Icon Name and Window Title to Pt. Ps = 1 -> Change Icon Name to Pt. Ps = 2 -> Change Window Title to Pt. Ps = 3 -> Set X property on top-level window. Pt should be in the form "prop=value", or just "prop" to delete the prop- erty Ps = 4 ; c; spec -> Change Color Number c to the color spec- ified by spec. This can be a name or RGB specification as per XParseColor. Any number of c/spec pairs may be given. The color numbers correspond to the ANSI colors 0-7, their bright versions 8-15, and if supported, the remainder of the 88-color or 256-color table. If a "?" is given rather than a name or RGB specification, xterm replies with a control sequence of the same form which can be used to set the corresponding color. Because more than one pair of color number and specification can be given in one control sequence, xterm can make more than one reply. Ps = 5 ; c; spec -> Change Special Color Number c to the color specified by spec. This can be a name or RGB specifica- tion as per XParseColor. Any number of c/spec pairs may be given. The special colors can also be set by adding the maxi- mum number of colors to these codes in an OSC 4 control: Pc = 0 <- resource colorBD (BOLD). Pc = 1 <- resource colorUL (UNDERLINE). Pc = 2 <- resource colorBL (BLINK). Pc = 3 <- resource colorRV (REVERSE). Pc = 4 <- resource colorIT (ITALIC). Ps = 6 ; c; f -> Enable/disable Special Color Number c. OSC 6 is the same as OSC 1 0 6 . The 10 colors (below) which may be set or queried using 1 0 through 1 9 are denoted dynamic colors, since the correspond- ing control sequences were the first means for setting xterm's colors dynamically, i.e., after it was started. They are not the same as the ANSI colors. These controls may be disabled using the allowColorOps resource. At least one parameter is expected for Pt. Each successive parameter changes the next color in the list. The value of Ps tells the starting point in the list. The colors are specified by name or RGB specifi- cation as per XParseColor. If a "?" is given rather than a name or RGB specification, xterm replies with a control sequence of the same form which can be used to set the corresponding dynamic color. Because more than one pair of color number and specification can be given in one control sequence, xterm can make more than one reply. Ps = 1 0 -> Change VT100 text foreground color to Pt. Ps = 1 1 -> Change VT100 text background color to Pt. Ps = 1 2 -> Change text cursor color to Pt. Ps = 1 3 -> Change mouse foreground color to Pt. Ps = 1 4 -> Change mouse background color to Pt. Ps = 1 5 -> Change Tektronix foreground color to Pt. Ps = 1 6 -> Change Tektronix background color to Pt. Ps = 1 7 -> Change highlight background color to Pt. Ps = 1 8 -> Change Tektronix cursor color to Pt. Ps = 1 9 -> Change highlight foreground color to Pt. Ps = 4 6 -> Change Log File to Pt. (This is normally dis- abled by a compile-time option). Ps = 5 0 -> Set Font to Pt. These controls may be disabled using the allowFontOps resource. If Pt begins with a "#", index in the font menu, relative (if the next character is a plus or minus sign) or absolute. A number is expected but not required after the sign (the default is the current entry for relative, zero for absolute indexing). The same rule (plus or minus sign, optional number) is used when querying the font. The remainder of Pt is ignored. A font can be specified after a "#" index expression, by adding a space and then the font specifier. If the "TrueType Fonts" menu entry is set (the renderFont resource), then this control sets/queries the faceName resource. Ps = 5 1 -> reserved for Emacs shell. Ps = 5 2 -> Manipulate Selection Data. These controls may be disabled using the allowWindowOps resource. The parameter Pt is parsed as Pc; Pd The first, Pc, may contain zero or more characters from the set c p s 0 1 2 3 4 5 6 7 . It is used to construct a list of selection parameters for clipboard, primary, select, or cut buffers 0 through 7 respectively, in the order given. If the parameter is empty, xterm uses s 0 , to specify the configurable primary/clipboard selection and cut buffer 0. The second parameter, Pd, gives the selection data. Normally this is a string encoded in base64. The data becomes the new selection, which is then available for pasting by other appli- cations. If the second parameter is a ? , xterm replies to the host with the selection data encoded using the same protocol. If the second parameter is neither a base64 string nor ? , then the selection is cleared. Ps = 1 0 4 ; c -> Reset Color Number c. It is reset to the color specified by the corresponding X resource. Any number of c parameters may be given. These parameters correspond to the ANSI colors 0-7, their bright versions 8-15, and if sup- ported, the remainder of the 88-color or 256-color table. If no parameters are given, the entire table will be reset. Ps = 1 0 5 ; c -> Reset Special Color Number c. It is reset to the color specified by the corresponding X resource. Any number of c parameters may be given. These parameters corre- spond to the special colors which can be set using an OSC 5 control (or by adding the maximum number of colors using an OSC 4 control). Ps = 1 0 6 ; c; f -> Enable/disable Special Color Number c. The second parameter tells xterm to enable the corresponding color mode if nonzero, disable it if zero. Pc = 0 <- resource colorBDMode (BOLD). Pc = 1 <- resource colorULMode (UNDERLINE). Pc = 2 <- resource colorBLMode (BLINK). Pc = 3 <- resource colorRVMode (REVERSE). Pc = 4 <- resource colorITMode (ITALIC). Pc = 5 <- resource colorAttrMode (Override ANSI). The dynamic colors can also be reset to their default (resource) values: Ps = 1 1 0 -> Reset VT100 text foreground color. Ps = 1 1 1 -> Reset VT100 text background color. Ps = 1 1 2 -> Reset text cursor color. Ps = 1 1 3 -> Reset mouse foreground color. Ps = 1 1 4 -> Reset mouse background color. Ps = 1 1 5 -> Reset Tektronix foreground color. Ps = 1 1 6 -> Reset Tektronix background color. Ps = 1 1 7 -> Reset highlight color. Ps = 1 1 8 -> Reset Tektronix cursor color. Ps = 1 1 9 -> Reset highlight foreground color. Privacy Message PM Pt ST xterm implements no PM functions; Pt is ignored. Pt need not be printable characters. Alt and Meta Keys Many keyboards have keys labeled "Alt". Few have keys labeled "Meta". However, xterm's default translations use the Meta modifier. Common keyboard configurations assign the Meta modifier to an "Alt" key. By using xmodmap one may have the modifier assigned to a different key, and have "real" alt and meta keys. Here is an example: ! put meta on mod3 to distinguish it from alt keycode 64 = Alt_L clear mod1 add mod1 = Alt_L keycode 115 = Meta_L clear mod3 add mod3 = Meta_L The metaSendsEscape resource (and altSendsEscape if altIsNotMeta is set) can be used to control the way the Meta modifier applies to ordinary keys unless the modifyOtherKeys resource is set: - prefix a key with the ESC character. - shift the key from codes 0-127 to 128-255 by adding 128. The table shows the result for a given character "x" with modifiers according to the default translations with the resources set on or off. This assumes altIsNotMeta is set: ----------------------------------------------------------- key altSendsEscape metaSendsEscape result -----------+----------------+-----------------+------------ x | off | off | x Meta-x | off | off | shift Alt-x | off | off | shift Alt+Meta-x | off | off | shift x | ON | off | x Meta-x | ON | off | shift Alt-x | ON | off | ESC x Alt+Meta-x | ON | off | ESC shift x | off | ON | x Meta-x | off | ON | ESC x Alt-x | off | ON | shift Alt+Meta-x | off | ON | ESC shift x | ON | ON | x Meta-x | ON | ON | ESC x Alt-x | ON | ON | ESC x Alt+Meta-x | ON | ON | ESC x -----------+----------------+-----------------+------------ PC-Style Function Keys If xterm does minimal translation of the function keys, it usually does this with a PC-style keyboard, so PC-style function keys result. Sun keyboards are similar to PC keyboards. Both have cursor and scrolling operations printed on the keypad, which duplicate the smaller cursor and scrolling keypads. X does not predefine NumLock (used for VT220 keyboards) or Alt (used as an extension for the Sun/PC keyboards) as modifiers. These keys are recognized as modifiers when enabled by the numLock resource, or by the "DECSET 1 0 3 5 " control sequence. The cursor keys transmit the following escape sequences depending on the mode specified via the DECCKM escape sequence. Key Normal Application -------------+----------+------------- Cursor Up | CSI A | SS3 A Cursor Down | CSI B | SS3 B Cursor Right | CSI C | SS3 C Cursor Left | CSI D | SS3 D -------------+----------+------------- The home- and end-keys (unlike PageUp and other keys also on the 6-key editing keypad) are considered "cursor keys" by xterm. Their mode is also controlled by the DECCKM escape sequence: Key Normal Application ---------+----------+------------- Home | CSI H | SS3 H End | CSI F | SS3 F ---------+----------+------------- The application keypad transmits the following escape sequences depend- ing on the mode specified via the DECKPNM and DECKPAM escape sequences. Use the NumLock key to override the application mode. Not all keys are present on the Sun/PC keypad (e.g., PF1, Tab), but are supported by the program. Key Numeric Application Terminfo Termcap ---------------+----------+-------------+----------+---------- Space | SP | SS3 SP | - | - Tab | TAB | SS3 I | - | - Enter | CR | SS3 M | kent | @8 PF1 | SS3 P | SS3 P | kf1 | k1 PF2 | SS3 Q | SS3 Q | kf2 | k2 PF3 | SS3 R | SS3 R | kf3 | k3 PF4 | SS3 S | SS3 S | kf4 | k4 * (multiply) | * | SS3 j | - | - + (add) | + | SS3 k | - | - , (comma) | , | SS3 l | - | - - (minus) | - | SS3 m | - | - . (Delete) | . | CSI 3 ~ | - | - / (divide) | / | SS3 o | - | - 0 (Insert) | 0 | CSI 2 ~ | - | - 1 (End) | 1 | SS3 F | kc1 | K4 2 (DownArrow) | 2 | CSI B | - | - 3 (PageDown) | 3 | CSI 6 ~ | kc3 | K5 4 (LeftArrow) | 4 | CSI D | - | - 5 (Begin) | 5 | CSI E | kb2 | K2 6 (RightArrow) | 6 | CSI C | - | - 7 (Home) | 7 | SS3 H | ka1 | K1 8 (UpArrow) | 8 | CSI A | - | - 9 (PageUp) | 9 | CSI 5 ~ | ka3 | K3 = (equal) | = | SS3 X | - | - ---------------+----------+-------------+----------+---------- They also provide 12 function keys, as well as a few other special-pur- pose keys: Key Escape Sequence ---------+----------------- F1 | SS3 P F2 | SS3 Q F3 | SS3 R F4 | SS3 S F5 | CSI 1 5 ~ F6 | CSI 1 7 ~ F7 | CSI 1 8 ~ F8 | CSI 1 9 ~ F9 | CSI 2 0 ~ F10 | CSI 2 1 ~ F11 | CSI 2 3 ~ F12 | CSI 2 4 ~ ---------+----------------- Note that F1 through F4 are prefixed with SS3 , while the other keys are prefixed with CSI . Older versions of xterm implement different escape sequences for F1 through F4, with a CSI prefix. These can be activated by setting the oldXtermFKeys resource. However, since they do not cor- respond to any hardware terminal, they have been deprecated. (The DEC VT220 reserves F1 through F5 for local functions such as Setup). Key Escape Sequence ---------+----------------- F1 | CSI 1 1 ~ F2 | CSI 1 2 ~ F3 | CSI 1 3 ~ F4 | CSI 1 4 ~ ---------+----------------- In normal mode, i.e., a Sun/PC keyboard when the sunKeyboard resource is false (and none of the other keyboard resources such as oldXtermFKeys resource is set), xterm encodes function key modifiers as parameters appended before the final character of the control sequence. As a spe- cial case, the SS3 sent before F1 through F4 is altered to CSI when sending a function key modifier as a parameter. Code Modifiers ---------+--------------------------- 2 | Shift 3 | Alt 4 | Shift + Alt 5 | Control 6 | Shift + Control 7 | Alt + Control 8 | Shift + Alt + Control 9 | Meta 10 | Meta + Shift 11 | Meta + Alt 12 | Meta + Alt + Shift 13 | Meta + Ctrl 14 | Meta + Ctrl + Shift 15 | Meta + Ctrl + Alt 16 | Meta + Ctrl + Alt + Shift ---------+--------------------------- For example, shift-F5 would be sent as CSI 1 5 ; 2 ~ If the alwaysUseMods resource is set, the Meta modifier also is recog- nized, making parameters 9 through 16. VT220-Style Function Keys However, xterm is most useful as a DEC VT102 or VT220 emulator. Set the sunKeyboard resource to true to force a Sun/PC keyboard to act like a VT220 keyboard. The VT102/VT220 application keypad transmits unique escape sequences in application mode, which are distinct from the cursor and scrolling key- pad: Key Numeric Application -------------+----------+------------- Space | SP | SS3 SP Tab | TAB | SS3 I Enter | CR | SS3 M PF1 | SS3 P | SS3 P PF2 | SS3 Q | SS3 Q PF3 | SS3 R | SS3 R PF4 | SS3 S | SS3 S * (multiply) | * | SS3 j + (add) | + | SS3 k , (comma) | , | SS3 l - (minus) | - | SS3 m . (period) | . | SS3 n / (divide) | / | SS3 o 0 | 0 | SS3 p 1 | 1 | SS3 q 2 | 2 | SS3 r 3 | 3 | SS3 s 4 | 4 | SS3 t 5 | 5 | SS3 u 6 | 6 | SS3 v 7 | 7 | SS3 w 8 | 8 | SS3 x 9 | 9 | SS3 y = (equal) | = | SS3 X -------------+----------+------------- The VT220 provides a 6-key editing keypad, which is analogous to that on the PC keyboard. It is not affected by DECCKM or DECKPNM/DECKPAM: Key Normal Application ---------+----------+------------- Insert | CSI 2 ~ | CSI 2 ~ Delete | CSI 3 ~ | CSI 3 ~ Home | CSI 1 ~ | CSI 1 ~ End | CSI 4 ~ | CSI 4 ~ PageUp | CSI 5 ~ | CSI 5 ~ PageDown | CSI 6 ~ | CSI 6 ~ ---------+----------+------------- The VT220 provides 8 additional function keys. With a Sun/PC keyboard, access these keys by Control/F1 for F13, etc. Key Escape Sequence ---------+----------------- F13 | CSI 2 5 ~ F14 | CSI 2 6 ~ F15 | CSI 2 8 ~ F16 | CSI 2 9 ~ F17 | CSI 3 1 ~ F18 | CSI 3 2 ~ F19 | CSI 3 3 ~ F20 | CSI 3 4 ~ ---------+----------------- VT52-Style Function Keys A VT52 does not have function keys, but it does have a numeric keypad and cursor keys. They differ from the other emulations by the prefix. Also, the cursor keys do not change: Key Normal/Application -------------+-------------------- Cursor Up | ESC A Cursor Down | ESC B Cursor Right | ESC C Cursor Left | ESC D -------------+-------------------- The keypad is similar: Key Numeric Application -------------+----------+------------- Space | SP | ESC ? SP Tab | TAB | ESC ? I Enter | CR | ESC ? M PF1 | ESC P | ESC P PF2 | ESC Q | ESC Q PF3 | ESC R | ESC R PF4 | ESC S | ESC S * (multiply) | * | ESC ? j + (add) | + | ESC ? k , (comma) | , | ESC ? l - (minus) | - | ESC ? m . (period) | . | ESC ? n / (divide) | / | ESC ? o 0 | 0 | ESC ? p 1 | 1 | ESC ? q 2 | 2 | ESC ? r 3 | 3 | ESC ? s 4 | 4 | ESC ? t 5 | 5 | ESC ? u 6 | 6 | ESC ? v 7 | 7 | ESC ? w 8 | 8 | ESC ? x 9 | 9 | ESC ? y = (equal) | = | ESC ? X -------------+----------+------------- Sun-Style Function Keys The xterm program provides support for Sun keyboards more directly, by a menu toggle that causes it to send Sun-style function key codes rather than VT220. Note, however, that the sun and VT100 emulations are not really compatible. For example, their wrap-margin behavior differs. Only function keys are altered; keypad and cursor keys are the same. The emulation responds identically. See the xterm-sun terminfo entry for details. HP-Style Function Keys Similarly, xterm can be compiled to support HP keyboards. See the xterm-hp terminfo entry for details. The Alternate Screen Buffer Xterm maintains two screen buffers. The normal screen buffer allows you to scroll back to view saved lines of output up to the maximum set by the saveLines resource. The alternate screen buffer is exactly as large as the display, contains no additional saved lines. When the alternate screen buffer is active, you cannot scroll back to view saved lines. Xterm provides control sequences and menu entries for switching between the two. Most full-screen applications use terminfo or termcap to obtain strings used to start/stop full-screen mode, i.e., smcup and rmcup for terminfo, or the corresponding ti and te for termcap. The titeInhibit resource removes the ti and te strings from the TERMCAP string which is set in the environment for some platforms. That is not done when xterm is built with terminfo libraries because terminfo does not provide the whole text of the termcap data in one piece. It would not work for ter- minfo anyway, since terminfo data is not passed in environment vari- ables; setting an environment variable in this manner would have no effect on the application's ability to switch between normal and alter- nate screen buffers. Instead, the newer private mode controls (such as 1 0 4 9 ) for switching between normal and alternate screen buffers sim- ply disable the switching. They add other features such as clearing the display for the same reason: to make the details of switching indepen- dent of the application that requests the switch. Bracketed Paste Mode When bracketed paste mode is set, pasted text is bracketed with control sequences so that the program can differentiate pasted text from typed- in text. When bracketed paste mode is set, the program will receive: ESC [ 2 0 0 ~ , followed by the pasted text, followed by ESC [ 2 0 1 ~ . Title Modes The window- and icon-labels can be set or queried using control sequences. As a VT220-emulator, xterm "should" limit the character encoding for the corresponding strings to ISO-8859-1. Indeed, it used to be the case (and was documented) that window titles had to be ISO-8859-1. This is no longer the case. However, there are many appli- cations which still assume that titles are set using ISO-8859-1. So that is the default behavior. If xterm is running with UTF-8 encoding, it is possible to use window- and icon-labels encoded using UTF-8. That is because the underlying X libraries (and many, but not all) window managers support this feature. The utf8Title X resource setting tells xterm to disable a reconversion of the title string back to ISO-8859-1, allowing the title strings to be interpreted as UTF-8. The same feature can be enabled using the title mode control sequence described in this summary. Separate from the ability to set the titles, xterm provides the ability to query the titles, returning them either in ISO-8859-1 or UTF-8. This choice is available only while xterm is using UTF-8 encoding. Finally, the characters sent to, or returned by a title control are less constrained than the rest of the control sequences. To make them more manageable (and constrained), for use in shell scripts, xterm has an optional feature which decodes the string from hexadecimal (for setting titles) or for encoding the title into hexadecimal when querying the value. Mouse Tracking The VT widget can be set to send the mouse position and other informa- tion on button presses. These modes are typically used by editors and other full-screen applications that want to make use of the mouse. There are two sets of mutually exclusive modes: o mouse protocol o protocol encoding The mouse protocols include DEC Locator mode, enabled by the DECELR CSI Ps ; Ps ' z control sequence, and is not described here (control sequences are summarized above). The remaining five modes of the mouse protocols are each enabled (or disabled) by a different parameter in the "DECSET CSI ? Pm h " or "DECRST CSI ? Pm l " control sequence. Manifest constants for the parameter values are defined in xcharmouse.h as follows: #define SET_X10_MOUSE 9 #define SET_VT200_MOUSE 1000 #define SET_VT200_HIGHLIGHT_MOUSE 1001 #define SET_BTN_EVENT_MOUSE 1002 #define SET_ANY_EVENT_MOUSE 1003 #define SET_FOCUS_EVENT_MOUSE 1004 #define SET_EXT_MODE_MOUSE 1005 #define SET_SGR_EXT_MODE_MOUSE 1006 #define SET_URXVT_EXT_MODE_MOUSE 1015 #define SET_ALTERNATE_SCROLL 1007 The motion reporting modes are strictly xterm extensions, and are not part of any standard, though they are analogous to the DEC VT200 DECELR locator reports. Normally, parameters (such as pointer position and button number) for all mouse tracking escape sequences generated by xterm encode numeric parameters in a single character as value+32. For example, ! specifies the value 1. The upper left character position on the terminal is denoted as 1,1. This scheme dates back to X10, though the normal mouse- tracking (from X11) is more elaborate. X10 compatbility mode X10 compatibility mode sends an escape sequence only on button press, encoding the location and the mouse button pressed. It is enabled by specifying parameter 9 to DECSET. On button press, xterm sends CSI M CbCxCy (6 characters). o Cb is button-1. o Cx and Cy are the x and y coordinates of the mouse when the button was pressed. Normal tracking mode Normal tracking mode sends an escape sequence on both button press and release. Modifier key (shift, ctrl, meta) information is also sent. It is enabled by specifying parameter 1000 to DECSET. On button press or release, xterm sends CSI M CbCxCy. o The low two bits of Cb encode button information: 0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release. o The next three bits encode the modifiers which were down when the but- ton was pressed and are added together: 4=Shift, 8=Meta, 16=Control. Note however that the shift and control bits are normally unavailable because xterm uses the control modifier with mouse for popup menus, and the shift modifier is used in the default translations for button events. The Meta modifier recognized by xterm is the mod1 mask, and is not necessarily the "Meta" key (see xmodmap). o Cx and Cy are the x and y coordinates of the mouse event, encoded as in X10 mode. Wheel mice Wheel mice may return buttons 4 and 5. Those buttons are represented by the same event codes as buttons 1 and 2 respectively, except that 64 is added to the event code. Release events for the wheel buttons are not reported. By default, the wheel mouse events are translated to scroll- back and scroll-forw actions. Those actions normally scroll the whole window, as if the scrollbar was used. However if Alternate Scroll mode is set, then cursor up/down controls are sent when the terminal is dis- playing the alternate screen. The initial state of Alternate Scroll mode is set using the alternateScroll resource. Highlight tracking Mouse highlight tracking notifies a program of a button press, receives a range of lines from the program, highlights the region covered by the mouse within that range until button release, and then sends the program the release coordinates. It is enabled by specifying parameter 1001 to DECSET. Highlighting is performed only for button 1, though other but- ton events can be received. Warning: use of this mode requires a cooperating program or it will hang xterm. On button press, the same information as for normal tracking is gener- ated; xterm then waits for the program to send mouse tracking informa- tion. All X events are ignored until the proper escape sequence is received from the pty: CSI Ps ; Ps ; Ps ; Ps ; Ps T . The parameters are func, startx, starty, firstrow, and lastrow. func is non-zero to initiate highlight tracking and zero to abort. startx and starty give the starting x and y location for the highlighted region. The ending location tracks the mouse, but will never be above row firstrow and will always be above row lastrow. (The top of the screen is row 1.) When the button is released, xterm reports the ending position one of two ways: o if the start and end coordinates are the same locations: CSI t CxCy. o otherwise: CSI T CxCyCxCyCxCy. The parameters are startx, starty, endx, endy, mousex, and mousey. - startx, starty, endx, and endy give the starting and ending charac- ter positions of the region. - mousex and mousey give the location of the mouse at button up, which may not be over a character. Button-event tracking Button-event tracking is essentially the same as normal tracking, but xterm also reports button-motion events. Motion events are reported only if the mouse pointer has moved to a different character cell. It is enabled by specifying parameter 1002 to DECSET. On button press or release, xterm sends the same codes used by normal tracking mode. o On button-motion events, xterm adds 32 to the event code (the third character, Cb). o The other bits of the event code specify button and modifier keys as in normal mode. For example, motion into cell x,y with button 1 down is reported as CSI M @ CxCy. ( @ = 32 + 0 (button 1) + 32 (motion indicator) ). Similarly, motion with button 3 down is reported as CSI M B CxCy. ( B = 32 + 2 (button 3) + 32 (motion indicator) ). Any-event tracking Any-event mode is the same as button-event mode, except that all motion events are reported, even if no mouse button is down. It is enabled by specifying 1003 to DECSET. FocusIn/FocusOut FocusIn/FocusOut can be combined with any of the mouse events since it uses a different protocol. When set, it causes xterm to send CSI I when the terminal gains focus, and CSI O when it loses focus. Extended coordinates The original X10 mouse protocol limits the Cx and Cy ordinates to 223 (=255 - 32). Xterm supports more than one scheme for extending this range, by changing the protocol encoding: UTF-8 (1005) This enables UTF-8 encoding for Cx and Cy under all tracking modes, expanding the maximum encodable position from 223 to 2015. For positions less than 95, the resulting output is identical under both modes. Under extended mouse mode, posi- tions greater than 95 generate "extra" bytes which will con- fuse applications which do not treat their input as a UTF-8 stream. Likewise, Cb will be UTF-8 encoded, to reduce confu- sion with wheel mouse events. Under normal mouse mode, positions outside (160,94) result in byte pairs which can be interpreted as a single UTF-8 charac- ter; applications which do treat their input as UTF-8 will almost certainly be confused unless extended mouse mode is active. This scheme has the drawback that the encoded coordinates will not pass through luit unchanged, e.g., for locales using non- UTF-8 encoding. SGR (1006) The normal mouse response is altered to use CSI < followed by semicolon-separated encoded button value, the Cx and Cy ordi- nates and a final character which is M for button press and m for button release. o The encoded button value in this case does not add 32 since that was useful only in the X10 scheme for ensuring that the byte containing the button value is a printable code. o The modifiers are encoded in the same way. o A different final character is used for button release to resolve the X10 ambiguity regarding which button was released. The highlight tracking responses are also modified to an SGR- like format, using the same SGR-style scheme and button-encod- ings. URXVT (1015) The normal mouse response is altered to use CSI followed by semicolon-separated encoded button value, the Cx and Cy ordi- nates and final character M . This uses the same button encoding as X10, but printing it as a decimal integer rather than as a single byte. However, CSI M can be mistaken for DL (delete lines), while the highlight tracking CSI T can be mistaken for SD (scroll down), and the Window manipulation controls. For these rea- sons, the 1015 control is not recommended; it is not an improvement over 1005. Sixel Graphics If xterm is configured as VT240, VT241, VT330, VT340 or VT382 using the decTerminalID resource, it supports Sixel Graphics controls, a palleted bitmap graphics system using sets of six vertical pixels as the basic element. CSI Ps c xterm responds to Send Device Attributes (Primary DA) with these additional codes: Ps = 4 -> Sixel graphics. CSI ? Pm h xterm has these additional private Set Mode values: Ps = 8 0 -> Sixel scrolling. Ps = 1 0 7 0 -> use private color registers for each graphic. Ps = 8 4 5 2 -> Sixel scrolling leaves cursor to right of graphic. DCS Pa; Pb; Ph q Ps..Ps ST See: http://vt100.net/docs/vt3xx-gp/chapter14.html The sixel data device control string has three positional parameters, following the q with sixel data. Pa -> pixel aspect ratio Pb -> background color option Ph -> horizontal grid size (ignored). Ps -> sixel data ReGIS Graphics If xterm is configured as VT125, VT240, VT241, VT330 or VT340 using the decTerminalID resource, it supports Remote Graphic Instruction Set, a graphics description language. CSI Ps c xterm responds to Send Device Attributes (Primary DA) with these additional codes: Ps = 3 -> ReGIS graphics. CSI ? Pm h xterm has these additional private Set Mode values: Ps = 1 0 7 0 -> use private color registers for each graphic. DCS Pm p Pr..Pr ST See: http://vt100.net/docs/vt3xx-gp/chapter1.html The ReGIS data device control string has one positional param- eter with four possible values: Pm = 0 -> resume command, use fullscreen mode. Pm = 1 -> start new command, use fullscreen mode. Pm = 2 -> resume command, use command display mode. Pm = 3 -> start new command, use command display mode. Tektronix 4014 Mode Most of these sequences are standard Tektronix 4014 control sequences. Graph mode supports the 12-bit addressing of the Tektronix 4014. The major features missing are the write-through and defocused modes. This document does not describe the commands used in the various Tektronix plotting modes but does describe the commands to switch modes. BEL Bell (Ctrl-G). BS Backspace (Ctrl-H). TAB Horizontal Tab (Ctrl-I). LF Line Feed or New Line (Ctrl-J). VT Cursor up (Ctrl-K). FF Form Feed or New Page (Ctrl-L). CR Carriage Return (Ctrl-M). ESC ETX Switch to VT100 Mode (ESC Ctrl-C). ESC ENQ Return Terminal Status (ESC Ctrl-E). ESC FF PAGE (Clear Screen) (ESC Ctrl-L). ESC SO Begin 4015 APL mode (ESC Ctrl-N). (This is ignored by xterm). ESC SI End 4015 APL mode (ESC Ctrl-O). (This is ignored by xterm). ESC ETB COPY (Save Tektronix Codes to file COPYyyyy-mm-dd.hh:mm:ss). ETB (end transmission block) is the same as Ctrl-W. ESC CAN Bypass Condition (ESC Ctrl-X). ESC SUB GIN mode (ESC Ctrl-Z). ESC FS Special Point Plot Mode (ESC Ctrl-\). ESC 8 Select Large Character Set. ESC 9 Select #2 Character Set. ESC : Select #3 Character Set. ESC ; Select Small Character Set. OSC Ps ; Pt BEL Set Text Parameters of VT window. Ps = 0 -> Change Icon Name and Window Title to Pt. Ps = 1 -> Change Icon Name to Pt. Ps = 2 -> Change Window Title to Pt. Ps = 4 6 -> Change Log File to Pt. (This is normally dis- abled by a compile-time option). ESC ` Normal Z Axis and Normal (solid) Vectors. ESC a Normal Z Axis and Dotted Line Vectors. ESC b Normal Z Axis and Dot-Dashed Vectors. ESC c Normal Z Axis and Short-Dashed Vectors. ESC d Normal Z Axis and Long-Dashed Vectors. ESC h Defocused Z Axis and Normal (solid) Vectors. ESC i Defocused Z Axis and Dotted Line Vectors. ESC j Defocused Z Axis and Dot-Dashed Vectors. ESC k Defocused Z Axis and Short-Dashed Vectors. ESC l Defocused Z Axis and Long-Dashed Vectors. ESC p Write-Thru Mode and Normal (solid) Vectors. ESC q Write-Thru Mode and Dotted Line Vectors. ESC r Write-Thru Mode and Dot-Dashed Vectors. ESC s Write-Thru Mode and Short-Dashed Vectors. ESC t Write-Thru Mode and Long-Dashed Vectors. FS Point Plot Mode (Ctrl-\). GS Graph Mode (Ctrl-]). RS Incremental Plot Mode (Ctrl-^). US Alpha Mode (Ctrl-_). VT52 Mode Parameters for cursor movement are at the end of the ESC Y escape sequence. Each ordinate is encoded in a single character as value+32. For example, ! is 1. The screen coordinate system is 0-based. ESC < Exit VT52 mode (Enter VT100 mode). ESC = Enter alternate keypad mode. ESC > Exit alternate keypad mode. ESC A Cursor up. ESC B Cursor down. ESC C Cursor right. ESC D Cursor left. ESC F Enter graphics mode. ESC G Exit graphics mode. ESC H Move the cursor to the home position. ESC I Reverse line feed. ESC J Erase from the cursor to the end of the screen. ESC K Erase from the cursor to the end of the line. ESC Y Ps Ps Move the cursor to given row and column. ESC Z Identify. -> ESC / Z ("I am a VT52.").gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/000077500000000000000000000000001411575327000233675ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/16colors.sh000066400000000000000000000065521411575327000254030ustar00rootroot00000000000000#!/bin/sh # $XTermId: 16colors.sh,v 1.14 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Show a simple 16-color test pattern. It is a little more confusing than # 8colors.sh, since everything is abbreviated to fit on an 80-column line. # The high (8-15) combinations for foreground or background are marked with # a '+' sign. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD ""; exit' EXIT HUP INT TRAP TERM else trap '$CMD ""; exit' 0 1 2 5 15 fi echo "" while true do for AT in 0 1 4 7 do case $AT in 0) attr=" ";; 1) attr="BO ";; 4) attr="UN ";; 7) attr="RV ";; esac for FG in 0 1 2 3 4 5 6 7 do case $FG in 0) fcolor="BLK ";; 1) fcolor="RED ";; 2) fcolor="GRN ";; 3) fcolor="YEL ";; 4) fcolor="BLU ";; 5) fcolor="MAG ";; 6) fcolor="CYN ";; 7) fcolor="WHT ";; esac for HI in 3 9 do if test $HI = 3 ; then color=" $fcolor" else color="+$fcolor" fi $CMD $OPT "[0;${AT}m$attr$SUF" $CMD $OPT "[${HI}${FG}m$color$SUF" for BG in 1 2 3 4 5 6 7 do case $BG in 0) bcolor="BLK ";; 1) bcolor="RED ";; 2) bcolor="GRN ";; 3) bcolor="YEL ";; 4) bcolor="BLU ";; 5) bcolor="MAG ";; 6) bcolor="CYN ";; 7) bcolor="WHT ";; esac $CMD $OPT "[4${BG}m$bcolor$SUF" $CMD $OPT "[10${BG}m+$bcolor$SUF" done echo "" done done sleep 1 done done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/256colors.pl000066400000000000000000000040431411575327000254630ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: 256colors.pl,v 1.5 2014/02/26 20:16:12 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2006,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- use strict; use warnings; # This uses 33 print-lines on an 80-column display. Printing the numbers in # hexadecimal would make it compact enough for 24x80, but less readable. our ($bg, $fg); for ($bg = 0; $bg < 256; $bg++) { # print "\x1b[9;1H\x1b[2J"; for ($fg = 0; $fg < 256; $fg++) { print "\x1b[48;5;${bg}m\x1b[38;5;${fg}m"; printf "%03.3d/%03.3d ", $fg, $bg; } print "\n"; sleep 1; } gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/256colors2.pl000066400000000000000000000116631411575327000255530ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: 256colors2.pl,v 1.16 2014/02/26 20:21:48 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2012,2014 by Thomas E. Dickey # Copyright 2002 by Steve Wall # Copyright 1999 by Todd Larason # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # # use the resources for colors 0-15 - usually more-or-less a # reproduction of the standard ANSI colors, but possibly more # pleasing shades use strict; use warnings; use Getopt::Std; use Encode 'encode_utf8'; our ($opt_8, $opt_c, $opt_d, $opt_h, $opt_q, $opt_r, $opt_u); &getopts('8cdhqru') || die("Usage: $0 [options]"); die("Usage: $0 [options]\n Options: -8 use 8-bit controls -c use colons for separating parameter values in SGR 38/48 -d use rgb values rather than palette index -h display this message -q quieter output by merging all palette initialization -r display the reverse of the usual palette -u use UTF-8 when emitting 8-bit controls ") if ( $opt_h); our $cube = 6; our (@steps); our ($red, $green, $blue); our ($gray, $level, $color); our ($csi, $osc, $sep, $st); our @rgb; sub map_cube($) { my $value = $_[0]; $value = (5 - $value) if defined($opt_r); return $value; } sub map_gray($) { my $value = $_[0]; $value = (23 - $value) if defined($opt_r); return $value; } sub define_color($$$$) { my $index = $_[0]; my $r = $_[1]; my $g = $_[2]; my $b = $_[3]; printf("%s4", $osc) unless ($opt_q); printf(";%d;rgb:%2.2x/%2.2x/%2.2x", $index, $r, $g, $b); printf("%s", $st) unless ($opt_q); $rgb[$index] = sprintf "%d%s%d%s%d", $r, $sep, $g, $sep, $b; } sub select_color($) { my $index = $_[0]; if ( $opt_d and defined($rgb[$index]) ) { printf "%s48;2%s%sm ", $csi, $sep, $rgb[$index]; } else { printf "%s48;5%s%sm ", $csi, $sep, $index; } } if ( $opt_8 ) { $csi = "\x9b"; $osc = "\x9d"; $st = "\x9c"; } else { $csi = "\x1b["; $osc = "\x1b]"; $st = "\x1b\\"; } if ( $opt_c ) { $sep = ":"; } else { $sep = ";"; } if ( $opt_8 and $opt_u ) { my $lc_ctype=`locale 2>/dev/null | fgrep LC_CTYPE | sed -e 's/^.*=//'`; if ( $lc_ctype =~ /utf.?8/i ) { binmode(STDOUT, ":utf8"); } } @steps=(0,95,135,175,215,255); # colors 16-231 are a 6x6x6 color cube printf("%s4", $osc) if ($opt_q); for ($red = 0; $red < $cube; $red++) { for ($green = 0; $green < $cube; $green++) { for ($blue = 0; $blue < $cube; $blue++) { &define_color( 16 + (map_cube($red) * $cube * $cube) + (map_cube($green) * $cube) + map_cube($blue), int ($steps[$red]), int ($steps[$green]), int ($steps[$blue])); } } } # colors 232-255 are a grayscale ramp, intentionally leaving out # black and white for ($gray = 0; $gray < 24; $gray++) { $level = (map_gray($gray) * 10) + 8; &define_color(232 + $gray, $level, $level, $level); } printf("%s", $st) if ($opt_q); # display the colors # first the system ones: print "System colors:\n"; for ($color = 0; $color < 8; $color++) { &select_color($color); } printf "%s0m\n", $csi; for ($color = 8; $color < 16; $color++) { &select_color($color); } printf "%s0m\n\n", $csi; # now the color cube print "Color cube, ${cube}x${cube}x${cube}:\n"; for ($green = 0; $green < $cube; $green++) { for ($red = 0; $red < $cube; $red++) { for ($blue = 0; $blue < $cube; $blue++) { $color = 16 + ($red * $cube * $cube) + ($green * $cube) + $blue; &select_color($color); } printf "%s0m ", $csi; } print "\n"; } # now the grayscale ramp print "Grayscale ramp:\n"; for ($color = 232; $color < 256; $color++) { &select_color($color); } printf "%s0m\n", $csi; gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/88colors.pl000066400000000000000000000036331411575327000254120ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: 88colors.pl,v 1.4 2014/02/26 20:16:26 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Made from 256colors.pl use strict; use warnings; our ($bg, $fg); for ($bg = 0; $bg < 88; $bg++) { print "\x1b[9;1H\x1b[48;5;${bg}m\x1b[2J"; for ($fg = 0; $fg < 88; $fg++) { print "\x1b[38;5;${fg}m"; printf "%03.3d/%03.3d ", $fg, $bg; } sleep 1; print "\n"; } gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/88colors2.pl000066400000000000000000000117611411575327000254750ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: 88colors2.pl,v 1.12 2014/02/26 20:16:53 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2012,2014 by Thomas E. Dickey # Copyright 1999 by Steve Wall # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # # Adapted from 256colors2.pl # use the resources for colors 0-15 - usually more-or-less a # reproduction of the standard ANSI colors, but possibly more # pleasing shades use strict; use warnings; use Getopt::Std; use Encode 'encode_utf8'; our ($opt_8, $opt_c, $opt_d, $opt_h, $opt_q, $opt_r, $opt_u); &getopts('8cdhqru') || die("Usage: $0 [options]"); die("Usage: $0 [options]\n Options: -8 use 8-bit controls -c use colons for separating parameter values in SGR 38/48 -d use rgb values rather than palette index -h display this message -q quieter output by merging all palette initialization -r display the reverse of the usual palette -u use UTF-8 when emitting 8-bit controls ") if ( $opt_h); our $cube = 4; our (@steps); our ($red, $green, $blue); our ($gray, $level, $color); our ($csi, $osc, $sep, $st); our @rgb; sub map_cube($) { my $value = $_[0]; $value = (3 - $value) if defined($opt_r); return $value; } sub map_gray($) { my $value = $_[0]; $value = (7 - $value) if defined($opt_r); return $value; } sub define_color($$$$) { my $index = $_[0]; my $r = $_[1]; my $g = $_[2]; my $b = $_[3]; printf("%s4", $osc) unless ($opt_q); printf(";%d;rgb:%2.2x/%2.2x/%2.2x", $index, $r, $g, $b); printf("%s", $st) unless ($opt_q); $rgb[$index] = sprintf "%d%s%d%s%d", $r, $sep, $g, $sep, $b; } sub select_color($) { my $index = $_[0]; if ( $opt_d and defined($rgb[$index]) ) { printf "%s48;2%s%sm ", $csi, $sep, $rgb[$index]; } else { printf "%s48;5%s%sm ", $csi, $sep, $index; } } if ( $opt_8 ) { $csi = "\x9b"; $osc = "\x9d"; $st = "\x9c"; } else { $csi = "\x1b["; $osc = "\x1b]"; $st = "\x1b\\"; } if ( $opt_c ) { $sep = ":"; } else { $sep = ";"; } if ( $opt_8 and $opt_u ) { my $lc_ctype=`locale 2>/dev/null | fgrep LC_CTYPE | sed -e 's/^.*=//'`; if ( $lc_ctype =~ /utf.?8/i ) { binmode(STDOUT, ":utf8"); } } # colors 16-79 are a 4x4x4 color cube @steps=(0,139,205,255); printf("%s4", $osc) if ($opt_q); for ($red = 0; $red < $cube; $red++) { for ($green = 0; $green < $cube; $green++) { for ($blue = 0; $blue < $cube; $blue++) { &define_color( 16 + (map_cube($red) * $cube * $cube) + (map_cube($green) * $cube) + map_cube($blue), int ($steps[$red]), int ($steps[$green]), int ($steps[$blue])); } } } # colors 80-87 are a grayscale ramp, intentionally leaving out # black and white for ($gray = 0; $gray < 8; $gray++) { $level = (map_gray($gray) * 23.18181818) + 46.36363636; if( $gray > 0 ) { $level += 23.18181818; } &define_color(80 + $gray, int($level), int($level), int($level)); } printf("%s", $st) if ($opt_q); # display the colors # first the system ones: print "System colors:\n"; for ($color = 0; $color < 8; $color++) { &select_color($color); } printf "%s0m\n", $csi; for ($color = 8; $color < 16; $color++) { &select_color($color); } printf "%s0m\n\n", $csi; # now the color cube print "Color cube, ${cube}x${cube}x${cube}:\n"; for ($green = 0; $green < $cube; $green++) { for ($red = 0; $red < $cube; $red++) { for ($blue = 0; $blue < $cube; $blue++) { $color = 16 + ($red * $cube * $cube) + ($green * $cube) + $blue; &select_color($color); } printf "%s0m ", $csi; } print "\n"; } # now the grayscale ramp print "Grayscale ramp:\n"; for ($color = 80; $color < 88; $color++) { &select_color($color); } printf "%s0m\n", $csi; gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/8colors.sh000066400000000000000000000060561411575327000253230ustar00rootroot00000000000000#!/bin/sh # $XTermId: 8colors.sh,v 1.14 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Show a simple 8-color test pattern ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT ""; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT ""; exit' 0 1 2 5 15 fi echo "" while true do for AT in 0 1 4 7 do case $AT in 0) attr="normal ";; 1) attr="bold ";; 4) attr="under ";; 7) attr="reverse ";; esac for FG in 0 1 2 3 4 5 6 7 do case $FG in 0) fcolor="black ";; 1) fcolor="red ";; 2) fcolor="green ";; 3) fcolor="yellow ";; 4) fcolor="blue ";; 5) fcolor="magenta ";; 6) fcolor="cyan ";; 7) fcolor="white ";; esac $CMD $OPT "[0;${AT}m$attr" $CMD $OPT "[3${FG}m$fcolor" for BG in 1 2 3 4 5 6 7 do case $BG in 0) bcolor="black ";; 1) bcolor="red ";; 2) bcolor="green ";; 3) bcolor="yellow ";; 4) bcolor="blue ";; 5) bcolor="magenta ";; 6) bcolor="cyan ";; 7) bcolor="white ";; esac $CMD $OPT "[4${BG}m$bcolor" done echo "" done sleep 1 done done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/acolors.sh000066400000000000000000000055761411575327000254020ustar00rootroot00000000000000#!/bin/sh # $XTermId: acolors.sh,v 1.7 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2002-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Demonstrate the use of the control sequence for changing ANSI colors. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP LIST="00 30 80 d0 ff" exec /dev/tty read original stty $old original=${original}${SUF} if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi $CMD "${ESC}[0;1;34mThis message is BLUE" $CMD "${ESC}[0;1;31mThis message is RED ${ESC}[0;31m(sometimes)" $CMD "${ESC}[0;1;32mThis message is GREEN${ESC}[0m" while true do for R in $LIST do for G in $LIST do for B in $LIST do # color "9" is bold-red test $R != 00 && test $G = 00 && test $B = 00 && $CMD $OPT "" >/dev/tty $CMD $OPT "${ESC}]4;9;rgb:$R/$G/$B${SUF}" >/dev/tty sleep 1 done done done done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/doublechars.sh000066400000000000000000000065451411575327000262300ustar00rootroot00000000000000#!/bin/sh # $XTermId: doublechars.sh,v 1.17 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Illustrate the use of double-size characters by drawing successive lines in # the commonly used video attributes. # # Use the -w option to force the output to wrap. It will look ugly, because # the double-high lines will be split. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP SAVE=yes WRAP=no if test $# != 0 ; then while test $# != 0 do case $1 in -n) SAVE=no ;; -w) WRAP=yes ;; esac shift done fi if test $SAVE = yes ; then exec /dev/tty IFS=';' read junk high wide stty $old wide=`echo $wide|sed -e 's/t.*//'` original=${ESC}[8\;${high}\;${wide}t${SUF} if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi fi if test $WRAP = yes ; then # turn on wrapping and force the screen to 80 columns $CMD $OPT "${ESC}[?7h" >/dev/tty $CMD $OPT "${ESC}[?40l" >/dev/tty else # force the screen to 132 columns $CMD $OPT "${ESC}[?40h" >/dev/tty $CMD $OPT "${ESC}[?3h" >/dev/tty fi for SGR in 0 1 4 5 7 do $CMD $OPT "${ESC}[0;${SGR}m" >/dev/tty for DBL in 5 3 4 6 5 do $CMD $OPT "${ESC}#${DBL}" >/dev/tty echo "The quick brown fox jumps over the lazy dog" >/dev/tty done echo done $CMD $OPT "${ESC}[0m" >/dev/tty gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/dynamic.pl000066400000000000000000000065241411575327000253570ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: dynamic.pl,v 1.3 2014/02/26 20:17:07 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2011,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Test the dynamic-color query option of xterm. # The programs xtermcontrol and xtermset provide more options. use strict; use warnings; use Getopt::Std; use IO::Handle; our @color_names = ( "VT100 text foreground", "VT100 text background", "text cursor", "mouse foreground", "mouse background", "Tektronix foreground", "Tektronix background", "highlight background", "Tektronix cursor", "highlight foreground" ); our ($opt_c, $opt_r); &getopts('c:r') || die("Usage: $0 [options]\n Options:\n -c XXX set cursor-color -r reset colors "); sub no_reply($) { open TTY, "+; close TTY; system "stty $old"; if ( defined $reply ) { die("^C received\n") if ( "$reply" eq "\003" ); } return $reply; } sub query_color($) { my $code = $_[0]; my $param1 = $code + 10; my $reply; $reply=get_reply("\x1b]$param1;?\007"); return unless defined $reply; if ( $reply =~ /\x1b]$param1;.*\007/ ) { my $value = $reply; $value =~ s/^\x1b]$param1;//; $value =~ s/\007//; printf "%24s = %s\n", $color_names[$code], $value; } } sub query_colors() { my $n; for ( $n = 0; $n <= 9; ++$n) { &query_color($n); } } sub reset_colors() { my $n; for ( $n = 0; $n <= 9; ++$n) { my $code = 110 + $n; &no_reply("\x1b]$code\007"); } } if ( defined ($opt_c) ) { &no_reply("\x1b]12;$opt_c\007"); } if ( defined ($opt_r) ) { &reset_colors(); } &query_colors(); gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/dynamic.sh000066400000000000000000000052271411575327000253550ustar00rootroot00000000000000#!/bin/sh # $XTermId: dynamic.sh,v 1.17 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Demonstrate the use of dynamic colors by setting the background successively # to different values. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP LIST="00 30 80 d0 ff" exec /dev/tty read original stty $old original=${original}${SUF} if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi while true do for R in $LIST do for G in $LIST do for B in $LIST do $CMD $OPT "${ESC}]11;rgb:$R/$G/$B${SUF}" >/dev/tty sleep 1 done done done done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/dynamic2.sh000066400000000000000000000064371411575327000254430ustar00rootroot00000000000000#!/bin/sh # $XTermId: dynamic2.sh,v 1.3 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2006,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Demonstrate the use of dynamic colors by setting each dynamic color # successively to different values. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP LIST="00 30 80 d0 ff" FULL="10 11 12 13 14 15 16 17 18" echo "reading current color settings" exec /dev/tty read reply eval original$N='${reply}${SUF}' original=${original}${reply}${SUF} done stty $old if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi while true do for N in $FULL do case $N in 10) echo "coloring text foreground";; 11) echo "coloring text background";; 12) echo "coloring text cursor";; 13) echo "coloring mouse foreground";; 14) echo "coloring mouse background";; 15) echo "coloring tektronix foreground";; 16) echo "coloring tektronix background";; 17) echo "coloring highlight background";; 18) echo "coloring tektronix cursor";; esac for R in $LIST do for G in $LIST do for B in $LIST do $CMD $OPT "${ESC}]$N;rgb:$R/$G/$B${SUF}" >/dev/tty sleep 1 done done done eval 'restore=$'original$N $CMD $OPT "$restore" >/dev/tty sleep 1 done done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/fonts.sh000066400000000000000000000052211411575327000250540ustar00rootroot00000000000000#!/bin/sh # $XTermId: fonts.sh,v 1.11 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Demonstrate the use of dynamic colors by setting the background successively # to different values. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP exec /dev/tty read original stty $old original="${original}${SUF}" if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi F=1 D=1 T=6 while true do $CMD $OPT "${ESC}]50;#$F${SUF}" >/dev/tty #sleep 1 if test .$D = .1 ; then test $F = $T && D=-1 else test $F = 1 && D=1 fi F=`expr $F + $D` done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/paste64.pl000066400000000000000000000113511411575327000252130ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: paste64.pl,v 1.13 2014/12/28 21:16:36 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2006,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Test the paste64 option of xterm. use strict; use warnings; use Term::ReadKey; use IO::Handle; use MIME::Base64; our $target = ""; sub to_hex($) { my $value = $_[0]; my $result = ""; my $n; for ( $n = 0 ; $n < length($value) ; ++$n ) { $result .= sprintf( "%02X", ord substr( $value, $n, 1 ) ); } return $result; } sub show_string($) { my $value = $_[0]; my $n; my $result = ""; for ( $n = 0 ; $n < length($value) ; $n += 1 ) { my $c = ord substr( $value, $n, 1 ); if ( $c == ord '\\' ) { $result .= "\\\\"; } elsif ( $c == 0x1b ) { $result .= "\\E"; } elsif ( $c == 0x7f ) { $result .= "^?"; } elsif ( $c == 32 ) { $result .= "\\s"; } elsif ( $c < 32 ) { $result .= sprintf( "^%c", $c + 64 ); } elsif ( $c > 128 ) { $result .= sprintf( "\\%03o", $c ); } else { $result .= chr($c); } } printf "%s\r\n", $result; } sub get_reply($) { my $command = $_[0]; my $reply = ""; printf "send: "; show_string($command); print STDOUT $command; autoflush STDOUT 1; while (1) { my $test = ReadKey 1; last if not defined $test; #printf "%d:%s\r\n", length($reply), to_hex($test); $reply .= $test; } return $reply; } sub get_paste() { my $reply = get_reply( "\x1b]52;" . $target . ";?\x1b\\" ); printf "read: "; show_string($reply); my $data = $reply; $data =~ s/^\x1b]52;[[:alnum:]]*;//; $data =~ s/\x1b\\$//; printf "chop: "; show_string($data); $data = decode_base64($data); printf "data: "; show_string($data); } sub put_paste() { ReadMode 1; printf "data: "; my $data = ReadLine 0; chomp $data; ReadMode 5; $data = encode_base64($data); chomp $data; printf "data: "; show_string($data); my $send = "\x1b]52;" . $target . ";" . $data . "\x1b\\"; printf "send: "; show_string($send); print STDOUT $send; autoflush STDOUT 1; } sub set_target() { ReadMode 1; printf "target: "; $target = ReadLine 0; $target =~ s/[^[:alnum:]]//g; ReadMode 5; printf "result: %s\r\n", $target; } ReadMode 5, 'STDIN'; # allow single-character inputs while (1) { my $cmd; printf "\r\nCommand (? for help):"; $cmd = ReadKey 0; if ( $cmd eq "?" ) { printf "\r\np=put selection," . " g=get selection," . " q=quit," . " r=reset target," . " s=set target\r\n"; } elsif ( $cmd eq "p" ) { printf " ...put selection\r\n"; put_paste(); } elsif ( $cmd eq "g" ) { printf " ...get selection\r\n"; get_paste(); } elsif ( $cmd eq "q" ) { printf " ...quit\r\n"; last; } elsif ( $cmd eq "r" ) { printf " ...reset\r\n"; $target = ""; } elsif ( $cmd eq "s" ) { printf " ...set target\r\n"; set_target(); } } ReadMode 0, 'STDIN'; # Reset tty mode before exiting gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/query-color.pl000066400000000000000000000103311411575327000262030ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: query-color.pl,v 1.4 2014/02/26 20:14:40 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2012,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Test the color-query features of xterm using OSC 4. # TODO: extend to the OSC 5 colors # TODO: show result in #rrggbb format. use strict; use warnings; use Getopt::Std; use IO::Handle; our ( $opt_s ); &getopts('s') || die( "Usage: $0 [options] [color1[-color2]]\n Options:\n -s use ^G rather than ST " ); our $ST = $opt_s ? "\007" : "\x1b\\"; sub no_reply($) { open TTY, "+; close TTY; system "stty $old"; if ( defined $reply ) { die("^C received\n") if ( "$reply" eq "\003" ); } return $reply; } sub visible($) { my $reply = $_[0]; my $n; my $result = ""; for ( $n = 0 ; $n < length($reply) ; ) { my $c = substr( $reply, $n, 1 ); if ( $c =~ /[[:print:]]/ ) { $result .= $c; } else { my $k = ord substr( $reply, $n, 1 ); if ( ord $k == 0x1b ) { $result .= "\\E"; } elsif ( $k == 0x7f ) { $result .= "^?"; } elsif ( $k == 32 ) { $result .= "\\s"; } elsif ( $k < 32 ) { $result .= sprintf( "^%c", $k + 64 ); } elsif ( $k > 128 ) { $result .= sprintf( "\\%03o", $k ); } else { $result .= chr($k); } } $n += 1; } return $result; } sub query_color($) { my $param = $_[0]; my $reply; my $n; my $st = $opt_s ? qr/\007/ : qr/\x1b\\/; my $op = 4; my $osc = qr/\x1b]$op/; my $match = qr/${osc}.*${st}/; $reply = get_reply( "\x1b]$op;" . $param . ";?" . $ST ); printf "query{%s}%*s", &visible($param), 3 - length($param), " "; if ( defined $reply ) { printf "%2d ", length($reply); if ( $reply =~ /${match}/ ) { $reply =~ s/^${osc}//; $reply =~ s/^;//; $reply =~ s/${st}$//; } else { printf "? "; } printf "{%s}", visible($reply); } printf "\n"; } sub query_colors($$) { my $lo = $_[0]; my $hi = $_[1]; my $n; for ( $n = $lo ; $n <= $hi ; ++$n ) { query_color($n); } } if ( $#ARGV >= 0 ) { while ( $#ARGV >= 0 ) { if ( $ARGV[0] =~ /-/ ) { my @args = split /-/, $ARGV[0]; &query_colors ( $args[0], $args[1] ); } else { &query_colors ( $ARGV[0], $ARGV[0] ); } shift @ARGV; } } else { &query_colors(0,7); } gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/query-fonts.pl000066400000000000000000000111511411575327000262170ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: query-fonts.pl,v 1.6 2014/02/26 20:14:50 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2010,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Test the font-query features of xterm. # TODO: # test relative vs absolute font numbering # test all font-slots # test selection # test bold / wide / widebold # test actual fontname vs nominal # extend "CSI > Ps; Ps T" to query fontname in hex use strict; use warnings; use Getopt::Std; use IO::Handle; our ( $opt_a, $opt_r, $opt_s ); &getopts('ars') || die( "Usage: $0 [options]\n Options:\n -a test using absolute numbers -r test using relative numbers -s use ^G rather than ST " ); our $ST = $opt_s ? "\007" : "\x1b\\"; sub no_reply($) { open TTY, "+; close TTY; system "stty $old"; if ( defined $reply ) { die("^C received\n") if ( "$reply" eq "\003" ); } return $reply; } sub query_font($) { my $param = $_[0]; my $reply; my $n; my $st = $opt_s ? qr/\007/ : qr/\x1b\\/; my $osc = qr/\x1b]50/; my $match = qr/${osc}.*${st}/; $reply = get_reply( "\x1b]50;?" . $param . $ST ); printf "query{%s}%*s", $param, 3 - length($param), " "; if ( defined $reply ) { printf "%2d ", length($reply); if ( $reply =~ /${match}/ ) { $reply =~ s/^${osc}//; $reply =~ s/^;//; $reply =~ s/${st}$//; } else { printf "? "; } my $result = ""; for ( $n = 0 ; $n < length($reply) ; ) { my $c = substr( $reply, $n, 1 ); if ( $c =~ /[[:print:]]/ ) { $result .= $c; } else { my $k = ord substr( $reply, $n, 1 ); if ( ord $k == 0x1b ) { $result .= "\\E"; } elsif ( $k == 0x7f ) { $result .= "^?"; } elsif ( $k == 32 ) { $result .= "\\s"; } elsif ( $k < 32 ) { $result .= sprintf( "^%c", $k + 64 ); } elsif ( $k > 128 ) { $result .= sprintf( "\\%03o", $k ); } else { $result .= chr($k); } } $n += 1; } printf "{%s}", $result; } printf "\n"; } if ($opt_r) { my $n; query_font("-"); foreach $n ( 0 .. 5 ) { query_font( sprintf "-%d", $n ); } query_font("+"); foreach $n ( 0 .. 5 ) { query_font( sprintf "+%d", $n ); } } if ($opt_a) { my $n; foreach $n ( 0 .. 5 ) { query_font( sprintf "%d", $n ); } } if ( not $opt_a and not $opt_r ) { query_font(""); } gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/resize.pl000066400000000000000000000071251411575327000252320ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: resize.pl,v 1.5 2014/10/07 21:10:15 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2004,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # resize.sh rewritten into Perl for comparison. # See also Term::ReadKey. use strict; use warnings; use IO::Handle; sub write_tty { open TTY, "+; close TTY; system "stty $old"; return $reply; } sub csi_field { my $first = $_[0]; my $second = $_[1]; $first =~ s/^[^0-9]+//; while ( --$second > 0 ) { $first =~ s/^[\d]+//; $first =~ s/^[^\d]+//; } $first =~ s/[^\d]+.*$//; return $first; } our $original=get_reply("\x1b[18t"); our $high; our $wide; if ( defined($original) and ( $original =~ /\x1b\[8;\d+;\d+t/ ) ) { $high=csi_field($original,2); $wide=csi_field($original,3); printf "parsed terminal size $high,$wide\n"; } else { die "Cannot get current terminal size via escape sequence\n"; } # our $maximize=get_reply("\x1b[19t"); our $maxhigh; our $maxwide; if ( defined($maximize) and ( $maximize =~ /^\x1b\[9;\d+;\d+t/ ) ) { $maxhigh=csi_field($maximize,2); $maxwide=csi_field($maximize,3); $maxhigh != 0 or $maxhigh = $high * 2; $maxwide != 0 or $maxwide = $wide * 2; printf "parsed terminal maxsize $maxhigh,$maxwide\n"; } else { die "Cannot get maximum terminal size via escape sequence\n"; } our $zapped; our ( $w, $h, $a ); sub catch_zap { $zapped++; } $SIG{INT} = \&catch_zap; $SIG{QUIT} = \&catch_zap; $SIG{KILL} = \&catch_zap; $SIG{HUP} = \&catch_zap; $SIG{TERM} = \&catch_zap; $w=$wide; $h=$high; $a=1; $zapped=0; while ( $zapped == 0 ) { # sleep 1 printf "resizing to $h by $w\n"; write_tty("\x1b[8;$h;$w" . "t"); if ( $a == 1 ) { if ( $w == $maxwide ) { $h += $a; if ( $h = $maxhigh ) { $a = -1; } } else { $w += $a; } } else { if ( $w == $wide ) { $h += $a; if ( $h = $high ) { $a=1; } } else { $w += $a; } } } write_tty($original); gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/resize.sh000066400000000000000000000062031411575327000252250ustar00rootroot00000000000000#!/bin/sh # $XTermId: resize.sh,v 1.17 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Obtain the current screen size, then resize the terminal to the nominal # screen width/height, and restore the size. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP exec /dev/tty IFS=';' read junk high wide $CMD $OPT "${ESC}[19t${SUF}" > /dev/tty IFS=';' read junk maxhigh maxwide stty $old wide=`echo $wide|sed -e 's/t.*//'` maxwide=`echo $maxwide|sed -e 's/t.*//'` original=${ESC}[8\;${high}\;${wide}t${SUF} test $maxwide = 0 && maxwide=`expr $wide \* 2` test $maxhigh = 0 && maxhigh=`expr $high \* 2` if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi w=$wide h=$high a=1 while true do # sleep 1 echo resizing to $h by $w $CMD $OPT "${ESC}[8;${h};${w}t" >/dev/tty if test $a = 1 ; then if test $w = $maxwide ; then h=`expr $h + $a` if test $h = $maxhigh ; then a=-1 fi else w=`expr $w + $a` fi else if test $w = $wide ; then h=`expr $h + $a` if test $h = $high ; then a=1 fi else w=`expr $w + $a` fi fi done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/tcapquery.pl000066400000000000000000000201071411575327000257410ustar00rootroot00000000000000#!/usr/bin/env perl # $XTermId: tcapquery.pl,v 1.19 2014/02/26 20:15:12 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 2004-2010,2014 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Test the tcap-query option of xterm. use strict; use warnings; use Getopt::Std; use IO::Handle; our ($opt_a, $opt_b, $opt_c, $opt_e, $opt_f, $opt_i, $opt_k, $opt_m, $opt_t, $opt_x, $opt_X); &getopts('abcefikmt:x:X') || die("Usage: $0 [options]\n Options:\n -a (same as -c -e -f -k -m) -b use both terminfo and termcap (default is termcap) -c cursor-keys -e editing keypad-keys -f function-keys -i use terminfo rather than termcap names -k numeric keypad-keys -m miscellaneous (none of -c, -e, -f, -k) -t NAME use given NAME for \$TERM, set that in xterm's tcap keyboard -x KEY extended cursor/editing key (terminfo only) -X test all extended cursor- and/or editing-keys (terminfo) "); if ( not ( defined($opt_c) or defined($opt_e) or defined($opt_f) or defined($opt_k) or defined($opt_m) or defined($opt_x) ) ) { $opt_a=1; } sub no_reply($) { open TTY, "+; close TTY; system "stty $old"; if ( defined $reply ) { die("^C received\n") if ( "$reply" eq "\003" ); } return $reply; } sub hexified($) { my $value = $_[0]; my $result = ""; my $n; for ( $n = 0; $n < length($value); ++$n) { $result .= sprintf("%02X", ord substr($value,$n,1)); } return $result; } sub modify_tcap($) { my $name = $_[0]; my $param = hexified($name); no_reply("\x1bP+p" . $param . "\x1b\\"); } sub query_tcap($$) { my $tcap = $_[0]; my $tinfo = $_[1]; my $param1 = hexified($tcap); my $param2 = hexified($tinfo); my $reply; # uncomment one of the following lines if ( defined($opt_b) ) { $reply=get_reply("\x1bP+q" . $param1 . ";" . $param2 . "\x1b\\"); } elsif ( defined($opt_i) ) { $reply=get_reply("\x1bP+q" . $param2 . "\x1b\\"); } else { $reply=get_reply("\x1bP+q" . $param1 . "\x1b\\"); } return unless defined $reply; if ( $reply =~ /\x1bP1\+r[[:xdigit:]]+=[[:xdigit:]]*.*/ ) { my $value = $reply; my $n; $value =~ s/^\x1bP1\+r//; $value =~ s/\x1b\\//; my $result = ""; for ( $n = 0; $n < length($value); ) { my $c = substr($value,$n,1); # handle semicolon and equals if ( $c =~ /[[:punct:]]/ ) { $n += 1; $result .= $c; } else { # handle hex-data my $k = hex substr($value,$n,2); if ( $k == 0x1b ) { $result .= "\\E"; } elsif ( $k == 0x7f ) { $result .= "^?"; } elsif ( $k == 32 ) { $result .= "\\s"; } elsif ( $k < 32 ) { $result .= sprintf("^%c", $k + 64); } elsif ( $k > 128 ) { $result .= sprintf("\\%03o", $k); } else { $result .= chr($k); } $n += 2; } } printf "%s\n", $result; } } # extended-keys are a feature of ncurses 5.0 and later sub query_extended($) { my $name = $_[0]; my $n; $name = "k" . $name if ( $name !~ /^k/ ); for ( $n = 2; $n <= 7; ++$n) { my $test = $name; $test = $test . $n if ( $n > 2 ); query_tcap( $name, $test ); } } query_tcap( "TN", "name"); if ( defined($opt_t) ) { printf "Setting TERM=%s\n", $opt_t; modify_tcap($opt_t); } # See xtermcapKeycode() if ( defined($opt_a) || defined($opt_c) ) { query_tcap( "ku", "kcuu1"); query_tcap( "kd", "kcud1"); query_tcap( "kr", "kcuf1"); query_tcap( "kl", "kcub1"); query_tcap( "kF", "kind"); query_tcap( "kR", "kri"); query_tcap( "%i", "kRIT"); query_tcap( "#4", "kLFT"); } if ( defined($opt_a) || defined($opt_e) ) { query_tcap( "kD", "kdch1"); query_tcap( "kI", "kich1"); query_tcap( "kh", "khome"); query_tcap( "\@7", "kend"); query_tcap( "#2", "kHOM"); query_tcap( "*7", "kEND"); query_tcap( "*6", "kslt"); query_tcap( "#6", "kSLT"); query_tcap( "\@0", "kfnd"); query_tcap( "*0", "kFND"); query_tcap( "kN", "knp"); query_tcap( "kP", "kpp"); query_tcap( "%c", "kNXT"); query_tcap( "%e", "kPRV"); } if ( defined($opt_a) || defined($opt_f) ) { query_tcap( "k1", "kf1"); query_tcap( "k2", "kf2"); query_tcap( "k3", "kf3"); query_tcap( "k4", "kf4"); query_tcap( "k5", "kf5"); query_tcap( "k6", "kf6"); query_tcap( "k7", "kf7"); query_tcap( "k8", "kf8"); query_tcap( "k9", "kf9"); query_tcap( "k;", "kf10"); query_tcap( "F1", "kf11"); query_tcap( "F2", "kf12"); query_tcap( "F3", "kf13"); query_tcap( "F4", "kf14"); query_tcap( "F5", "kf15"); query_tcap( "F6", "kf16"); query_tcap( "F7", "kf17"); query_tcap( "F8", "kf18"); query_tcap( "F9", "kf19"); query_tcap( "FA", "kf20"); query_tcap( "FB", "kf21"); query_tcap( "FC", "kf22"); query_tcap( "FD", "kf23"); query_tcap( "FE", "kf24"); query_tcap( "FF", "kf25"); query_tcap( "FG", "kf26"); query_tcap( "FH", "kf27"); query_tcap( "FI", "kf28"); query_tcap( "FJ", "kf29"); query_tcap( "FK", "kf30"); query_tcap( "FL", "kf31"); query_tcap( "FM", "kf32"); query_tcap( "FN", "kf33"); query_tcap( "FO", "kf34"); query_tcap( "FP", "kf35"); query_tcap( "FQ", "kf36"); query_tcap( "FR", "kf37"); query_tcap( "FS", "kf38"); query_tcap( "FT", "kf39"); query_tcap( "FU", "kf40"); query_tcap( "FV", "kf41"); query_tcap( "FW", "kf42"); query_tcap( "FX", "kf43"); query_tcap( "FY", "kf44"); query_tcap( "FZ", "kf45"); query_tcap( "Fa", "kf46"); query_tcap( "Fb", "kf47"); query_tcap( "Fc", "kf48"); query_tcap( "Fd", "kf49"); query_tcap( "Fe", "kf50"); query_tcap( "Ff", "kf51"); query_tcap( "Fg", "kf52"); query_tcap( "Fh", "kf53"); query_tcap( "Fi", "kf54"); query_tcap( "Fj", "kf55"); query_tcap( "Fk", "kf56"); query_tcap( "Fl", "kf57"); query_tcap( "Fm", "kf58"); query_tcap( "Fn", "kf59"); query_tcap( "Fo", "kf60"); query_tcap( "Fp", "kf61"); query_tcap( "Fq", "kf62"); query_tcap( "Fr", "kf63"); } if ( defined($opt_a) || defined($opt_k) ) { query_tcap( "K1", "ka1"); query_tcap( "K3", "ka3"); query_tcap( "K4", "kc1"); query_tcap( "K5", "kc3"); } if ( defined($opt_a) || defined($opt_m) ) { query_tcap( "kB", "kcbt"); query_tcap( "kC", "kclr"); query_tcap( "&8", "kund"); query_tcap( "kb", "kbs"); query_tcap( "%1", "khlp"); query_tcap( "#1", "kHLP"); query_tcap( "Co", "colors"); } if ( defined ($opt_x) ) { query_extended($opt_x); } if ( defined ($opt_X) ) { if ( defined($opt_c) ) { query_extended("DN"); query_extended("UP"); query_extended("LFT"); query_extended("RIT"); } if ( defined($opt_e) ) { query_extended("DC"); query_extended("END"); query_extended("HOM"); query_extended("IC"); query_extended("NXT"); query_extended("PRV"); } } gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermTests/title.sh000066400000000000000000000054421411575327000250510ustar00rootroot00000000000000#!/bin/sh # $XTermId: title.sh,v 1.18 2011/12/11 16:21:22 tom Exp $ # ----------------------------------------------------------------------------- # this file is part of xterm # # Copyright 1999-2003,2011 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Obtain the current title of the window, set up a simple clock which runs # until this script is interrupted, then restore the title. ESC="" CMD='/bin/echo' OPT='-n' SUF='' TMP=/tmp/xterm$$ eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null ( test ! -f $TMP || test -s $TMP ) && for verb in printf print ; do rm -f $TMP eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null if test -f $TMP ; then if test ! -s $TMP ; then CMD="$verb" OPT= SUF='\c' break fi fi done rm -f $TMP exec /dev/tty read original stty $old # We actually get this terminated by an backslash, but the backslash # is lost. We may lose doublequote characters when restoring the title, # depending on the shell. original=`echo "$original" |sed -e 's/^...//' -e 's/.$//'` original=${ESC}]2\;"${original}"${SUF} if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null then trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM else trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 fi while true do sleep 1 $CMD $OPT "${ESC}]2;`date`" >/dev/tty done gambas-3.16.3/comp/src/gb.form.terminal/.hidden/XtermVT100000066400000000000000000000666151411575327000230000ustar00rootroot00000000000000# Definitions c The literal character c C A single (required) character. Ps A single (usually optional) numeric parameter, composed of one of more digits. Pm A multiple numeric parameter composed of any number of single numeric parameters, separated by ; character(s). Individual values for the parameters are listed with Ps . Pt A text parameter composed of printable characters. ESC = 27 CSI = ESC + "[" OSC = ESC + "]" # C1 (8-Bit) Control Characters ESC D IND 0x84 Index ESC E NEL 0x85 Next Line ESC H HTS 0x88 Tab Set ESC M RI 0x8d Reverse Index ESC N SS2 0x8e Single Shift Select of G2 Character Set: affects next character only ESC O SS3 0x8f Single Shift Select of G3 Character Set: affects next character only ESC P DCS 0x90 Device Control String ESC V SPA 0x96 Start of Guarded Area ESC W EPA 0x97 End of Guarded Area ESC X SOS 0x98 Start of String ESC Z DECID 0x9a Return Terminal ID Obsolete form of CSI c (DA). ESC [ CSI 0x9b Control Sequence Introducer ESC \ ST 0x9c String Terminator ESC ] OSC 0x9d Operating System Command ESC ^ PM 0x9e Privacy Message ESC _ APC 0x9f Application Program Command # VT100 Mode ## Single-character functions BEL Ctrl-G Bell BS Ctrl-H Backspace CR Ctrl-M Carriage Return ENQ Ctrl-E Return Terminal Status . Default response is the terminal name, e.g., "xterm", but may be overridden by a resource answerbackString. FF Ctrl-L Form Feed or New Page (NP) same as LF LF Ctrl-J Line Feed or New Line (NL) SO Ctrl-N Shift Out -> Switch to Alternate Character Set: invokes the G1 character set. SP Space. TAB Ctrl-I Horizontal Tab (HT) VT Ctrl-K Vertical Tab same as LF SI Ctrl-O Shift In -> Switch to Standard Character Set: invokes the G0 character set (the default). ## Controls beginning with ESC Other than those where ESC is part of a 7-bit equivalent to 8-bit C1 controls), ordered by the final character(s). ESC SP F S7C1T 7-bit controls . ESC SP G S8C1T 8-bit controls . ESC SP L Set ANSI conformance level 1 (vt100, 7-bit controls). ESC SP M Set ANSI conformance level 2 (vt200). ESC SP N Set ANSI conformance level 3 (vt300). ESC # 3 DECDHL DEC double-height line, top half ESC # 4 DECDHL DEC double-height line, bottom half ESC # 5 DECSWL DEC single-width line ESC # 6 DECDWL DEC double-width line ESC # 8 DECALN DEC Screen Alignment Test ESC % @ ISO 8859-1 Select default character set, (ISO 2022) ESC % G UTF-8 Select UTF-8 character set (ISO 2022) ESC ( C Designate G0 Designate G0 Character Set (ISO 2022) ESC ) C Designate G1 Designate G1 Character Set (ISO 2022) ESC * C Designate G2 Designate G2 Character Set (ISO 2022) ESC + C Designate G3 Designate G3 Character Set (ISO 2022) ### Final character C for designating character sets (0 , A and B apply to VT100 and up, the remainder to VT220 and up): 0 DEC Special Character and Line Drawing Set A United Kingdom (UK) B United States (USASCII) 4 Dutch C Finnish 5 Finnish R French Q French Canadian K German Y Italian E Norwegian/Danish 6 Norwegian/Danish Z Spanish H Swedish 7 Swedish = Swiss ESC 7 DECSC Save Cursor ESC 8 DECRC Restore Cursor ESC = DECPAM Application Keypad () ESC > DECPNM Normal Keypad () ESC F Cursor to lower left corner of screen (if enabled by the hpLowerleftBugCompat resource). ESC c RIS Full Reset () ESC l Memory Lock (per HP terminals). Locks memory above the cursor. ESC m Memory Unlock (per HP terminals) ESC n LS2 Invoke the G2 Character Set () ESC o LS3 Invoke the G3 Character Set () ESC | LS3R Invoke the G3 Character Set as GR (). Has no visible effect in xterm. ESC } LS2R Invoke the G2 Character Set as GR (). Has no visible effect in xterm. ESC ~ LS1R Invoke the G1 Character Set as GR (). Has no visible effect in xterm. # Application Program-Control functions # Functions usingCSI, ordered by the final character(s) CSI Ps @ ICH Insert Ps (Blank) Character(s) (default = 1)) CSI Ps A CUU Cursor Up Ps Times (default = 1)) CSI Ps B CUD Cursor Down Ps Times (default = 1)) CSI Ps C CUF Cursor Forward Ps Times (default = 1)) CSI Ps D CUB Cursor Backward Ps Times (default = 1)) CSI Ps E CNL Cursor Next Line Ps Times (default = 1)) CSI Ps F CPL Cursor Preceding Line Ps Times (default = 1)) CSI Ps G CHA Cursor Character Absolute [column] (default = [row,1])) CSI Ps ; Ps H CUP Cursor Position [row;column] (default = [1,1])) CSI Ps I CHT Cursor Forward Tabulation Ps tab stops (default = 1)) CSI Ps J ED Erase in Display) 0 Erase Below (default) 1 Erase Above 2 Erase All 3 Erase Saved Lines (xterm) CSI ? Ps J DECSED Erase in Display) 0 Erase to Right (default) 1 Erase to Left 2 Erase All CSI Ps K EL Erase in Line) 0 Erase to Right (default) 1 Erase to Left 2 Erase All CSI ? Ps K DECSEL Erase in Line 0 Selective Erase to Right (default) 1 Selective Erase to Left 2 Selective Erase All CSI Ps L IL Insert Ps Line(s) (default = 1)) CSI Ps M DL Delete Ps Line(s) (default = 1)) CSI Ps P DCH Delete Ps Character(s) (default = 1)) CSI Ps S SU Scroll up Ps lines (default = 1)) CSI Ps T SD Scroll down Ps lines (default = 1)) CSI Ps ; Ps ; Ps ; Ps ; Ps T Initiate hilite mouse tracking. Parameters are [func;startx;starty;firstrow;lastrow]. See Mouse Tracking CSI Ps X ECH Erase Ps Character(s) (default = 1)) CSI Ps Z CBT Cursor Backward Tabulation Ps tab stops (default = 1)) CSI Pm ` HPA Character Position Absolute [column] (default = [row,1])) CSI Ps b REP Repeat the preceding graphic character Ps times) CSI Ps c Primary DA Send Device Attributes 0 , 1 or omitted request attributes from terminal. The response depends on the decTerminalId resource setting -> CSI ? 1 ; 2 c (``VT100 with Advanced Video Option'') -> CSI ? 1 ; 0 c (``VT101 with No Options'') -> CSI ? 6 c (``VT102'') -> CSI ? 6 0 ; 1 ; 2 ; 6 ; 8 ; 9 ; 1 5 ; c (``VT220'') The VT100-style response parameters do not mean anything by themselves. VT220 parameters do, telling the host what features the terminal supports: -> 1 132-columns -> 2 Printer -> 6 Selective erase -> 8 User-defined keys -> 9 National replacement character sets -> 1 5 Technical characters CSI > Ps c Secondary DA Send Device Attributes 0 , 1 or omitted request the terminal's identification code. The response depends on the decTerminalId resource setting. It should apply only to VT220 and up but xterm extends this to VT100. -> CSI Pp ; Pv ; Pc c where Pp denotes the terminal type -> 0 (``VT100'') -> 1 (``VT220'') and Pv is the firmware version (for xterm, this is the XFree86 patch number, starting with 95). In a DEC terminal, Pc indicates the ROM cartridge registration number and is always zero. CSI Pm d VPA Line Position Absolute [row] (default = [1,column])) CSI Ps ; Ps f HVP Horizontal and Vertical Position [row;column] (default = [1,1])) CSI Ps g TBC Tab Clear) 0 Clear Current Column (default) 3 Clear All CSI Pm h SM Set Mode) 2 Keyboard Action Mode (AM) 4 Insert Mode (IRM) 1 2 Send/receive (SRM) 2 0 Automatic Newline (LNM) CSI Pm l RM Reset Mode) 2 Keyboard Action Mode (AM) 4 Replace Mode (IRM) 1 2 Send/receive (SRM) 2 0 Normal Linefeed (LNM) CSI ? Pm h DECSET DEC Private Mode Set 1 Application Cursor Keys DECCKM 2 Designate USASCII for character sets G0-G3 (DECANM), and set VT100 mode. 3 132 Column Mode (DECCOLM) 4 Smooth (Slow) Scroll (DECSCLM) 5 Reverse Video (DECSCNM) 6 Origin Mode (DECOM) 7 Wraparound Mode (DECAWM) 8 Auto-repeat Keys (DECARM) 9 Send Mouse X & Y on button press. See the section Mouse Tracking. 1 8 Print form feed (DECPFF) 1 9 Set print extent to full screen (DECPEX) 2 5 Show Cursor (DECTCEM) 3 0 Show scrollbar [rxvt]. 3 5 Enable shifted key-functions [rxvt]. 3 8 Enter Tektronix Mode (DECTEK) 4 0 Allow 80 <-> 132 Mode 4 1 more(1) fix (see curses resource) 4 2 Enable Nation Replacement Character sets (DECNRCM) 4 4 Turn On Margin Bell 4 5 Reverse-wraparound Mode 4 6 Start Logging (normally disabled by a compile-time option) 4 7 Use Alternate Screen Buffer (unless disabled by the titleInhibit resource 6 6 Application keypad (DECNKM) 6 7 Backarrow key sends delete (DECBKM) 1 0 0 0 Send Mouse X & Y on button press and release. See the section Mouse Tracking. 1 0 0 1 Use Hilite Mouse Tracking. 1 0 0 2 Use Cell Motion Mouse Tracking. 1 0 0 3 Use All Motion Mouse Tracking. 1 0 1 0 Scroll to bottom on tty output [rxvt]. 1 0 1 1 Scroll to bottom on key press [rxvt]. 1 0 3 5 Enable special modifiers for Alt and NumLock keys. 1 0 3 6 Send ESC when Meta modifies a key (enables the metaSendsEscaperesource). 1 0 3 7 Send DEL from the editing-keypad Delete key 1 0 4 7 Use Alternate Screen Buffer (unless disabled by the titleInhibit resource) 1 0 4 8 Save cursor as in DECSC (unless disabled by the titleinhibit resource) 1 0 4 9 Save cursor as in DECSC and use Alternate Screen Buffer, clearing it first (unless disabled by the titleinhibit resource) 1 0 5 1 Set Sun function-key mode. 1 0 5 2 Set HP function-key mode. 1 0 6 0 Set legacy keyboard emulation (X11R6). 1 0 6 1 Set Sun/PC keyboard emulation of VT220 keyboard. CSI ? Pm l DECRST DEC Private Mode Reset) 1 Normal Cursor Keys DECCKM 2 Designate VT52 mode (DECANM). 3 80 Column Mode (DECCOLM) 4 Jump (Fast) Scroll (DECSCLM) 5 Normal Video (DECSCNM) 6 Normal Cursor Mode (DECOM) 7 No Wraparound Mode (DECAWM) 8 No Auto-repeat Keys (DECARM) 9 Don't Send Mouse X & Y on button press 1 8 Don't print form feed (DECPFF) 1 9 Limit print to scrolling region (DECPEX) 2 5 Hide Cursor (DECTCEM) 3 0 Don't show scrollbar (rxvt). 3 5 Disable shifted key-functions (rxvt). 4 0 Disallow 80 <-> 132 Mode 4 1 No more(1) fix (see curses resource) 4 2 Disable Nation Replacement Character sets (DECNRCM) 4 4 Turn Off Margin Bell 4 5 No Reverse-wraparound Mode 4 6 Stop Logging (normally disabled by a compile-time option) 4 7 Use Normal Screen Buffer 6 6 Numeric keypad (DECNKM) 6 7 Backarrow key sends backspace (DECBKM) 1 0 0 0 Don't Send Mouse X & Y on button press and release. See the section Mouse Tracking. 1 0 0 1 Don't Use Hilite Mouse Tracking 1 0 0 2 Don't Use Cell Motion Mouse Tracking 1 0 0 3 Don't Use All Motion Mouse Tracking 1 0 1 0 Don't scroll to bottom on tty output (rxvt). 1 0 1 1 Don't scroll to bottom on key press (rxvt). 1 0 3 5 Disable special modifiers for Alt and NumLock keys. 1 0 3 6 Don't send ESC when Meta modifies a key (disables the metaSendsEscape resource). 1 0 3 7 Send VT220 Remove from the editing- keypad Delete key 1 0 4 7 Use Normal Screen Buffer, clearing screen first if in the Alternate Screen (unless disabled by the titleinhibit resource) 1 0 4 8 Restore cursor as in DECRC (unless disabled by the titleinhibit resource) 1 0 4 9 Use Normal Screen Buffer and restore cursor as in DECRC (unless disabled by the titleinhibit resource) 1 0 5 1 Reset Sun function-key mode. 1 0 5 2 Reset HP function-key mode. 1 0 6 0 Reset legacy keyboard emulation (X11R6). 1 0 6 1 Reset Sun/PC keyboard emulation of VT220 keyboard. CSI Pm i MC Media Copy) 0 Print screen (default) 4 Turn off printer controller mode 5 Turn on printer controller mode CSI ? Pm i MC, DEC-specific Media Copy) 1 Print line containing cursor 4 Turn off autoprint mode 5 Turn on autoprint mode 1 0 Print composed display, ignores DECPEX 1 1 Print all pages CSI Pm m SGR Character Attributes) 0 Normal (default) 1 Bold 4 Underlined 5 Blink (appears as Bold) 7 Inverse 8 Invisible (hidden) 2 2 Normal (neither bold nor faint) 2 4 Not underlined 2 5 Steady (not blinking) 2 7 Positive (not inverse) 2 8 Visible (not hidden) 3 0 Set foreground color to Black 3 1 Set foreground color to Red 3 2 Set foreground color to Green 3 3 Set foreground color to Yellow 3 4 Set foreground color to Blue 3 5 Set foreground color to Magenta 3 6 Set foreground color to Cyan 3 7 Set foreground color to White 3 9 Set foreground color to default (original) 4 0 Set background color to Black 4 1 Set background color to Red 4 2 Set background color to Green 4 3 Set background color to Yellow 4 4 Set background color to Blue 4 5 Set background color to Magenta 4 6 Set background color to Cyan 4 7 Set background color to White 4 9 Set background color to default (original). 9 0 Set foreground color to Black 9 1 Set foreground color to Red 9 2 Set foreground color to Green 9 3 Set foreground color to Yellow 9 4 Set foreground color to Blue 9 5 Set foreground color to Magenta 9 6 Set foreground color to Cyan 9 7 Set foreground color to White 1 0 0 Set background color to Black 1 0 1 Set background color to Red 1 0 2 Set background color to Green 1 0 3 Set background color to Yellow 1 0 4 Set background color to Blue 1 0 5 Set background color to Magenta 1 0 6 Set background color to Cyan 1 0 7 Set background color to White If 88- or 256-color support is compiled, the following apply. 3 8 ; 5 ; Ps Set background color to Ps 4 8 ; 5 ; Ps Set foreground color to Ps CSI Ps n DSR Device Status Report) 5 Status Report CSI 0 n (``OK'') 6 Report Cursor Position (CPR) [row;column] as CSI r ; c R CSI ? Ps n DSR, DEC-specific Device Status Report 6 Report Cursor Position (CPR) [row;column] as CSI ? r ; c R (assumes page is zero). 1 5 Report Printer status as CSI ? 1 0 n (ready) or CSI ? 1 1 n (not ready) 2 5 Report UDK status as CSI ? 2 0 n (unlocked) or CSI ? 2 1 n (locked) 2 6 Report Keyboard status as: CSI ? 2 7 ; 1 ; 0 ; 0 n (North American) CSI ? 5 3 n Locator available, if compiled-in, or CSI ? 5 0 n No Locator, if not. CSI ! p DECSTR Soft terminal reset CSI Ps ; Ps " p Set conformance level DECSCL Valid values for the first parameter 6 1 VT100 6 2 VT200 6 3 VT300 Valid values for the second parameter 0 8-bit controls 1 7-bit controls (always set for VT100) 2 8-bit controls CSI Pt ; Pl ; Pb ; Pr ` w DECEFR Enable Filter Rectangle Parameters are [top;left;bottom;right]. Defines the coordinates of a filter rectangle and acti- vates it. Anytime the locator is detected outside of the filter rectangle, an outside rectangle event is generated and the rectangle is disabled. Filter rectangles are always treated as "one-shot" events. Any parameters that are omitted default to the current locator position. If all parameters are omitted, any locator motion will be reported. DECELR always cancels any prevous rectangle definition. CSI Ps x DECREQTPARM Request Terminal Parameters) CSI Ps ; Pu ` z DECELR Enable Locator Reporting The first parameter 0 Locator disabled (default) 1 Locator enabled 2 Locator enabled for one report, then disabled The second parameter specifies the coordinate unit for locator reports. 0 or omitted default to character cells 1 device physical pixels 2 character cells CSI Pm ` { DECSLE Select Locator Events Valid values for the first (and any additional parameters) are: 0 only respond to explicit host requests DECRQLP (default) also cancels any filter rectangle 1 report button down transitions 2 do not report button down transitions 3 report button up transitions 4 do not report button up transitions CSI Ps ` | DECRQLP Request Locator Position Valid values for the parameter are: 0 , 1 or omitted transmit a single DECLRP locator report If Locator Reporting has been enabled by a DECELR, xterm will respond with a DECLRP Locator Report. This report is also generated on button up and down events if they have been enabled with a DECSLE, or when the locator is detected outside of a filter rectangle, if filter rectangles have been enabled with a DECEFR. CSI Pe ; Pb ; Pr ; Pc ; Pp & w DECLRP Locator Report Parameters are [event;button;row;column;page]. Valid values for the event (Pe): 0 locator unavailable - no other parameters sent 1 request - xterm received a DECRQLP 2 left button down 3 left button up 4 middle button down 5 middle button up 6 right button down 7 right button up 8 M4 button down 9 M4 button up 1 0 locator outside filter rectangle ``button'' parameter (Pb) is a bitmask indicating which buttons are pressed: == 0 no buttons down & 1 right button down & 2 middle button down & 4 left button down & 8 M4 button down ``row'' and ``column'' parameters (Pr, Pc) are the coordinates of the locator position in the xterm window, encoded as ASCII decimal. The ``page'' parameter (Pp) is not used by xterm, and will be omitted. # Operating System Controls OSC Ps ; Pt ST Set Text Parameters. For colors and font, if Pt is a "?", the control sequence elicits a response which consists of the control sequence which would set the corresponding value. The dtterm control sequences allow you to determine the icon name and window title. OSC Ps ; Pt BEL 0 Change Icon Name and Window Title to Pt 1 Change Icon Name to Pt 2 Change Window Title to Pt 3 Set X property on top-level window. Pt should be in the form "prop=value", or just "prop" to delete the property 4 ; c ; name Change Color #c to cname. Any number of c name pairs may be given. 1 0 Change color names starting with text foreground to Pt (a list of one or more color names or RGB specifications, separated by semicolon, up to eight, as per XParseColor). 1 1 Change colors starting with text background to Pt 1 2 Change colors starting with text cursor to Pt 1 3 Change colors starting with mouse foreground to Pt 1 4 Change colors starting with mouse background to Pt 1 5 Change colors starting with Tek foreground to Pt 1 6 Change colors starting with Tek background to Pt 1 7 Change colors starting with highlight to Pt 4 6 Change Log File to Pt (normally disabled by a compile-time option) 5 0 Set Font to Pt If Pt begins with a "#", index in the font menu, relative (if the next character is a plus or minus sign) or absolute. A number is expected but not required after the sign (the default is the current entry for relative, zero for absolute indexing). ======================================================= Mouse ================ Mouse Tracking The VT widget can be set to send the mouse position and other informa- tion on button presses. These modes are typically used by editors and other full-screen applications that want to make use of the mouse. There are six mutually exclusive modes. One is DEC Locator mode, enabled by the DECELR CSI Ps ; Ps 'z control sequence, and is not described here. The remaining five modes are each enabled (or disabled) by a different parameter in DECSET CSI ? Pm h or DECRST CSI ? Pm l con- trol sequence. Manifest constants for the parameter values are defined in xcharmouse.h as follows: #define SET_X10_MOUSE 9 #define SET_VT200_MOUSE 1000 #define SET_VT200_HIGHLIGHT_MOUSE 1001 #define SET_BTN_EVENT_MOUSE 1002 #define SET_ANY_EVENT_MOUSE 1003 The motion reporting modes are strictly xterm extensions, and are not part of any standard, though they are analogous to the DEC VT200 DECELR locator reports. Parameters (such as pointer position and button number) for all mouse tracking escape sequences generated by xterm encode numeric parameters in a single character as value+32. For example, ! specifies the value 1. The upper left character position on the terminal is denoted as 1,1. X10 compatibility mode sends an escape sequence only on button press, encoding the location and the mouse button pressed. It is enabled by specifying parameter 9 to DECSET. On button press, xterm sends CSI M CbCxCy (6 characters). Cb is button-1. Cx and Cy are the x and y coor- dinates of the mouse when the button was pressed. Normal tracking mode sends an escape sequence on both button press and release. Modifier key (shift, ctrl, meta) information is also sent. It is enabled by specifying parameter 1000 to DECSET. On button press or release, xterm sends CSI M CbCxCy. The low two bits of Cb encode button information: 0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release. The next three bits encode the modifiers which were down when the button was pressed and are added together: 4=Shift, 8=Meta, 16=Control. Note however that the shift and control bits are normally unavailable because xterm uses the control modifier with mouse for popup menus, and the shift modifier is used in the default translations for button events. The Meta modifier recognized by xterm is the mod1 mask, and is not nec- essarily the "Meta" key (see xmodmap). Cx and Cy are the x and y coor- dinates of the mouse event, encoded as in X10 mode. Wheel mice may return buttons 4 and 5. Those buttons are represented by adding 64 to the event code. Mouse hilite tracking notifies a program of a button press, receives a range of lines from the program, highlights the region covered by the mouse within that range until button release, and then sends the program the release coordinates. It is enabled by specifying parameter 1001 to DECSET. Highlighting is performed only for button 1, though other but- ton events can be received. Warning: use of this mode requires a coop- erating program or it will hang xterm. On button press, the same infor- mation as for normal tracking is generated; xterm then waits for the program to send mouse tracking information. All X events are ignored until the proper escape sequence is received from the pty: CSI Ps ; Ps ; Ps ; Ps ; Ps T . The parameters are func, startx, starty, firstrow, and lastrow. func is non-zero to initiate hilite tracking and zero to abort. startx and starty give the starting x and y location for the highlighted region. The ending location tracks the mouse, but will never be above row firstrow and will always be above row lastrow. (The top of the screen is row 1.) When the button is released, xterm reports the ending position one of two ways: if the start and end coordinates are valid text locations: CSI t CxCy. If either coordinate is past the end of the line: CSI T CxCyCxCyCxCy. The parameters are startx, starty, endx, endy, mousex, and mousey. startx, starty, endx, and endy give the starting and ending character positions of the region. mousex and mousey give the location of the mouse at button up, which may not be over a character. Button-event tracking is essentially the same as normal tracking, but xterm also reports button-motion events. Motion events are reported only if the mouse pointer has moved to a different character cell. It is enabled by specifying parameter 1002 to DECSET. On button press or release, xterm sends the same codes used by normal tracking mode. On button-motion events, xterm adds 32 to the event code (the third charac- ter, Cb). The other bits of the event code specify button and modifier keys as in normal mode. For example, motion into cell x,y with button 1 down is reported as CSI M @ CxCy. ( @ = 32 + 0 (button 1) + 32 (motion indicator) ). Similarly, motion with button 3 down is reported as CSI M B CxCy. ( B = 32 + 2 (button 3) + 32 (motion indicator) ). Any-event mode is the same as button-event mode, except that all motion events are reported instead of just those that enter a new character cell. It is enabled by specifying 1003 to DECSET. gambas-3.16.3/comp/src/gb.form.terminal/.hidden/control/000077500000000000000000000000001411575327000227255ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.hidden/control/terminalview.png000066400000000000000000000002431411575327000261400ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTE```___@IDAT8c`EP+=2P,@ c 82 '^F.@8WR116IENDB`gambas-3.16.3/comp/src/gb.form.terminal/.icon.png000066400000000000000000000130561411575327000214550ustar00rootroot00000000000000PNG  IHDR\rf pHYs+IDATxo3IZoUǯ̆h5i EH#عą^7n{B۞qFH Bp@4ʊ 7LyگUv_HVbݎzG"""""""""""""""""""""""""""""""""""""""""""""""Xu?Sge\?^dVfv_,#12?"އ;ր"]JMm}?ߒoyw{Fgz| !9U]h*~s~)Udgƌe^a7=5E}?][O>>Qi( y?PTa-(hk%b")Qp湖XeޯQ7^8Ci8k?g>XN~GVdg6 m?ؚ_Dsv5te.c{&%4$ &6࢐HbUZO}Zm ;l7jEl_90 hUxo;:ڋMőDїA?{OK󞗐滚8GU/>wc>X2<mߞWFz1bPJsSͫ+{#SJUm"Q ('HH!,j ij~]>x@8e6h1@sDš8l# p}ܒ^]@Ih% t]f땞%5q7U.h1@Fr#teQsF deAJxn hC0~_@]Q?hώ {'tTz =k*p*M!l!uR, `B4` b &5( "[AR (qŒ[@!pWx=:>S?WЮZvYwx"OaA6mk/\{PCByYFf0dKv$׷/A2x󿴹FUz@xJ6 45<›lWlי[݁XņW/d &@Uڒ$}Emו'wVDэeD"en,/LT"Tqn =bW/v@UcA7 :ȂkOm P9yeM]~H:rNP{ܾ Zp[^Ql"(4\ץ7{?ZJIPm!` 7]Z5. 1~[~.rZ#(` SLoJ"I)(ӕ(Tѕwo*ȫW_{SVi O@ V^;;LAvT0{+0=(B5L%NEVA(^ ak{[{'a^xڻw({ZN쑢&4ݓEG(?T!-;X'SU_$I;/‹jq揺Wdp¢OؒeS}a'#Itpc Q{f˂ X$gk~ ((9]tQ6?k~};XFh7wZ{U_~ E:ÚOQ;gY~z0T(mߛkG Bӏ4_ϯ˨@C̀!7ߓ`kb_ile2cl~DZcD0}`e43QH@gOthNL,J([u8E71"  &Hʤ@&!,ۛ|ICv9Jˎ GQ$p?!;BQ1{5>% # Za]<ϿRZw[[mGD ?,)0,KCM~7z՟YmgD5;g3XǽV7Uw9~w~B_q0SN-qV i?7n@櫞6Qb<@J>X:?0sA_7{i%Xax|Na<̓I{ ^tD^Y&ԅ5 [ (oTxo! pS=v?ɗЊ?IGxf}k j%8qE[:_[AD[t `(a,|/~S-Oa% RJ4 ȲlۧDk9ө{( hG)cܸd4# \8==E) CFWP'-xqrrS5`nKo^&@!2Z-t]͸\\\j1a0t:eq5 CXa svۧDKt:8==-b0_|g悟07`0.&PJa2a-&M"< HIKzP` J 1 HiKzf@0D c@0D c@0P9hKs4. %V}=3ؒx Bs֬#gnI5f*I xa ^$M z. h#3Kq]{ ~e|D`C6`0zn 8ğ= X$n󟜜r]z)L$nw]mF#jq psstt$nZ-F#7͙u? օ@M6e8;;% [݀D&L`0n=m%I@J[3#1P<11quu,0N]rPJNffN~ci#8&6^xz_όjgGd:¹^cv\&NNN x~\[pҾ P&IPs}cy~0'Pįg66$ , p{{ >sv,6$ , 0LxZR WWW|g;80NqsssŖψi8777NC@0j|FN7773@Xl0pyy,˶}JFyc:(mFJā^őD K ǶOhk%Q˜$J# J qI01 H0$JsD c@l &&QXJ͊=ܺIENDB`gambas-3.16.3/comp/src/gb.form.terminal/.lang/000077500000000000000000000000001411575327000207335ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.lang/fr.po000066400000000000000000000014141411575327000217020ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.terminal 3.15.90\n" "PO-Revision-Date: 2021-02-23 08:10 UTC\n" "Last-Translator: Benoît Minisini \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 "Gambas Terminal control" msgstr "Contrôle de terminal pour Gambas" #: TerminalView.class:776 msgid "Unable to open selected URL." msgstr "" #: TerminalView.class:1619 msgid "Open link" msgstr "Ouvrir le lien" #: TerminalView.class:1627 msgid "Copy" msgstr "Copier" #: TerminalView.class:1632 msgid "Paste" msgstr "Coller" #: TerminalView.class:1639 msgid "Select all" msgstr "Tout sélectionner" #: TerminalView.class:1644 msgid "Clear" msgstr "Effacer" gambas-3.16.3/comp/src/gb.form.terminal/.lang/it.po000066400000000000000000000011441411575327000217070ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.terminal 3.14.90\n" "PO-Revision-Date: 2020-03-03 00:59 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas Terminal control" msgstr "" #: TerminalView.class:1390 msgid "Copy" msgstr "Copia" #: TerminalView.class:1395 msgid "Paste" msgstr "Incolla" #: TerminalView.class:1402 msgid "Select all" msgstr "Seleziona tutto" #: TerminalView.class:1406 msgid "Clear" msgstr "Pulisci" gambas-3.16.3/comp/src/gb.form.terminal/.lang/pt_BR.po000066400000000000000000000032301411575327000222770ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.terminal 3.14.90\n" "POT-Creation-Date: 2020-06-12 00:40 UTC\n" "PO-Revision-Date: 2020-06-12 00:38 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Gambas Terminal control" msgstr "" #: FTestTerminalView.form:42 msgid "B" msgstr "" #: FTestTerminalView.form:47 msgid "U" msgstr "" #: FTestTerminalView.form:52 msgid "R" msgstr "" #: FTestTerminalView.form:57 msgid "D" msgstr "" #: FTestTerminalView.form:62 msgid "b" msgstr "" #: FTestTerminalView.form:67 msgid "ReadOnly" msgstr "" #: FTestTerminalView.form:72 msgid "Test" msgstr "" #: PipeTest.form:32 msgid "Send data" msgstr "" #: PipeTest.form:37 msgid "Test Data to the terminal" msgstr "" #: PipeTest.form:46 msgid "Data From Terminal" msgstr "" #: PipeTest.form:51 msgid "kill Session" msgstr "" #: PipeTest.form:56 msgid "Task Testing" msgstr "" #: PipeTest.form:61 msgid "Task Stop" msgstr "" #: PipeTest.form:74 msgid "Start Session" msgstr "" #: PipeTest.form:79 msgid "Start Rs232" msgstr "" #: PipeTest.form:84 msgid "Stop Rs232" msgstr "" #: PipeTest.form:89 msgid "Telnet Start" msgstr "" #: PipeTest.form:98 msgid "telNet Stop" msgstr "" #: PipeTest.form:103 msgid "127.0.0.1" msgstr "" #: PipeTest.form:108 msgid "23" msgstr "" #: TerminalView.class:1422 msgid "Copy" msgstr "Copiar" #: TerminalView.class:1427 msgid "Paste" msgstr "Colar" #: TerminalView.class:1434 msgid "Select all" msgstr "Selecionar tudo" #: TerminalView.class:1439 msgid "Clear" msgstr "Limpar" gambas-3.16.3/comp/src/gb.form.terminal/.lang/ru.po000066400000000000000000000021311411575327000217160ustar00rootroot00000000000000# 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: gb.form.terminal 3.14.90\n" "PO-Revision-Date: 2020-03-03 00:59 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Gambas Terminal control" msgstr "Элемент управления терминалом Gambas" #: TerminalView.class:1390 msgid "Copy" msgstr "Копировать" #: TerminalView.class:1395 msgid "Paste" msgstr "Вставить" #: TerminalView.class:1402 msgid "Select all" msgstr "Выбрать все" #: TerminalView.class:1406 msgid "Clear" msgstr "Очистить" gambas-3.16.3/comp/src/gb.form.terminal/.lang/zh.po000066400000000000000000000032261411575327000217170ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form.terminal 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:37 UTC\n" "PO-Revision-Date: 2020-11-18 18:37 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Gambas Terminal control" msgstr "Gambas终端控制" #: FTestTerminalView.form:40 msgid "B" msgstr "" #: FTestTerminalView.form:45 msgid "U" msgstr "" #: FTestTerminalView.form:50 msgid "R" msgstr "" #: FTestTerminalView.form:55 msgid "D" msgstr "" #: FTestTerminalView.form:60 msgid "b" msgstr "" #: FTestTerminalView.form:65 msgid "ReadOnly" msgstr "" #: FTestTerminalView.form:70 msgid "Test" msgstr "" #: PipeTest.form:32 msgid "Send data" msgstr "" #: PipeTest.form:37 msgid "Test Data to the terminal" msgstr "" #: PipeTest.form:46 msgid "Data From Terminal" msgstr "" #: PipeTest.form:51 msgid "kill Session" msgstr "" #: PipeTest.form:56 msgid "Task Testing" msgstr "" #: PipeTest.form:61 msgid "Task Stop" msgstr "" #: PipeTest.form:74 msgid "Start Session" msgstr "" #: PipeTest.form:79 msgid "Start Rs232" msgstr "" #: PipeTest.form:84 msgid "Stop Rs232" msgstr "" #: PipeTest.form:89 msgid "Telnet Start" msgstr "" #: PipeTest.form:98 msgid "telNet Stop" msgstr "" #: PipeTest.form:103 msgid "127.0.0.1" msgstr "" #: PipeTest.form:108 msgid "23" msgstr "" #: TerminalView.class:1422 msgid "Copy" msgstr "复制" #: TerminalView.class:1427 msgid "Paste" msgstr "粘贴" #: TerminalView.class:1434 msgid "Select all" msgstr "全选" #: TerminalView.class:1439 msgid "Clear" msgstr "清除" gambas-3.16.3/comp/src/gb.form.terminal/.project000066400000000000000000000006541411575327000214100ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Gambas Terminal control Startup=FTestTerminalView Icon=.hidden/control/terminalview.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.net Component=gb.term Authors="Benoît Minisini\nFabien Bodard" Environment="GB_GUI=gb.qt5\nGB_JIT_DEBUG=1" TabSize=2 Translate=1 Language=en_US Type=Component Packager=1 DoNotTranslate=".src/TerminalView/test" gambas-3.16.3/comp/src/gb.form.terminal/.src/000077500000000000000000000000001411575327000206015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/000077500000000000000000000000001411575327000232075ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/CTerminalLine.class000066400000000000000000000101071411575327000267230ustar00rootroot00000000000000' Gambas class file Fast Unsafe Public Text As String Public Length As Integer Private Attr As New Integer[] Public NewLine As Boolean Private $bCompressed As Boolean Private Enum FLAG_BG, FLAG_FG, FLAG_BOLD, FLAG_DIM, FLAG_REV, FLAG_UND, FLAG_BLK Private Sub Uncompress() Dim I As Integer Dim iAttr As Integer Dim iCount As Integer Dim aAttr As New Integer[] Dim aTemp As Integer[] For I = 0 To Attr.Max iAttr = Attr[I] iCount = (Lsr(iAttr, 8) And 255) + 1 iAttr = iAttr And &HFFFF00FF aTemp = New Integer[iCount] aTemp.Fill(iAttr) aAttr.Insert(aTemp) Next 'If aAttr.Count > String.Len(Text) Then Stop Attr = aAttr $bCompressed = False End Private Sub Compress(bFull As Boolean) Dim I As Integer Dim iAttr As Integer Dim iOldAttr As Integer Dim iCount As Integer Dim aAttr As New Integer[] For I = 0 To Attr.Max iAttr = Attr[I] If iAttr = iOldAttr And If iCount < 256 Then Inc iCount Continue Endif If iCount Then aAttr.Add(iOldAttr Or Lsl(iCount - 1, 8)) iCount = 1 iOldAttr = iAttr Next If iCount Then aAttr.Add(iOldAttr Or Lsl(iCount - 1, 8)) If bFull And If Attr.Count < Length Then iCount = Length - Attr.Count aAttr.Add(Lsl(iCount - 1, 8)) Endif $bCompressed = True Attr = aAttr End ' Public Sub GetAttr(hAttr As TerminalAttr, X As Integer) ' ' Dim iAttr As Integer ' ' Try iAttr = Attr[X] ' ' If BTst(iAttr, FLAG_BG) Then ' hAttr.Background = Lsr(iAttr, 16) And 255 ' Else ' hAttr.Background = Color.Default ' Endif ' ' If BTst(iAttr, FLAG_FG) Then ' hAttr.Foreground = Lsr(iAttr, 24) And 255 ' Else ' hAttr.Foreground = Color.Default ' Endif ' ' hAttr.Bold = BTst(iAttr, FLAG_BOLD) ' hAttr.Dim = BTst(iAttr, FLAG_DIM) ' hAttr.Reverse = BTst(iAttr, FLAG_REV) ' hAttr.Underscore = BTst(iAttr, FLAG_UND) ' hAttr.Blink = BTst(iAttr, FLAG_BLK) ' ' End ' Public Sub SetAttr(hAttr As TerminalAttr, X As Integer, L As Integer, bInsert As Boolean) Dim iAttr As Integer Dim aAttr As Integer[] Dim aTemp As Integer[] If hAttr.Background <> Color.Default Then iAttr = BSet(iAttr, FLAG_BG) + Lsl(hAttr.Background And 255, 16) If hAttr.Foreground <> Color.Default Then iAttr = BSet(iAttr, FLAG_FG) + Lsl(hAttr.Foreground And 255, 24) If hAttr.Bold Then iAttr = BSet(iAttr, FLAG_BOLD) If hAttr.Dim Then iAttr = BSet(iAttr, FLAG_DIM) If hAttr.Reverse Then iAttr = BSet(iAttr, FLAG_REV) If hAttr.Underscore Then iAttr = BSet(iAttr, FLAG_UND) If hAttr.Blink Then iAttr = BSet(iAttr, FLAG_BLK) If $bCompressed Then Uncompress() aAttr = Attr If iAttr = 0 And If X >= aAttr.Count Then 'aAttr.Resize(X) Else If bInsert Then If aAttr.Count < X Then aAttr.Resize(X) aTemp = New Integer[L] aTemp.Fill(iAttr) aAttr.Insert(aTemp, X) Else If aAttr.Count < X + L Then aAttr.Resize(X + L) aAttr.Fill(iAttr, X, L) Endif Endif End Public Sub GetAttr() As Integer[] If Not $bCompressed Then Compress(False) Return Attr End Public Sub GetFullAttr() As Integer[] If $bCompressed Then Uncompress() Compress(True) Return Attr End Public Sub InitAttr(aInit As Integer[]) Dim L As Integer Dim I As Integer Dim iAttr As Integer Dim iCount As Integer Dim C As Integer Dim aAttr As Integer[] Dim aTemp As Integer[] L = Length aAttr = New Integer[] For I = 0 To aInit.Max If L = 0 Then Break iAttr = aInit[0] iCount = (Lsr(iAttr, 8) And 255) + 1 C = Min(L, iCount) iAttr = iAttr And &HFFFF00FF aTemp = New Integer[C] aTemp.Fill(iAttr) aAttr.Insert(aTemp) L -= C If C = iCount Then aInit.Remove(0) Else iCount -= C aInit[0] = iAttr Or Lsl(iCount - 1, 8) Endif Next For I = aAttr.Max DownTo 0 If aAttr[I] Then Break Next If I < aAttr.Max Then aAttr.Remove(I + 1, -1) Attr = aAttr $bCompressed = False End Public Sub Clear() Text = "" Length = 0 NewLine = False Attr.Clear $bCompressed = False End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/TerminalAttr.class000066400000000000000000000031271411575327000266470ustar00rootroot00000000000000' Gambas class file ''' This class represents the attributes of a terminal character. Export Fast Private Enum FLAG_BG, FLAG_FG, FLAG_BOLD, FLAG_DIM, FLAG_REV, FLAG_UND, FLAG_BLK '' Return or set the character foreground color. Public Foreground As Integer = -1 '' Return or set the character background color. Public Background As Integer = -1 '' Return or set the character "bold" attribute. Public Bold As Boolean '' Return or set the character "dim" attribute. Public Dim As Boolean '' Return or set the character "underscore" attribute. Public Underscore As Boolean '' Return or set the character "reverse" attribute. Public Reverse As Boolean '' Return or set the character "blink" attribute. Public Blink As Boolean '' Reset the character flags. Public Sub Reset() Foreground = -1 Background = -1 Bold = False {Dim} = False Underscore = False Reverse = False Blink = False End '' Return if the character attributes are the default ones. Public Sub IsVoid() As Boolean If Foreground >= 0 Then Return If Background >= 0 Then Return If Bold Or If {Dim} Or If Underscore Or If Reverse Or If Blink Then Return Return True End Public Sub _FillFrom(iAttr As Integer) If BTst(iAttr, FLAG_BG) Then Background = Lsr(iAttr, 16) And 255 Else Background = Color.Default Endif If BTst(iAttr, FLAG_FG) Then Foreground = Lsr(iAttr, 24) And 255 Else Foreground = Color.Default Endif Bold = BTst(iAttr, FLAG_BOLD) {Dim} = BTst(iAttr, FLAG_DIM) Reverse = BTst(iAttr, FLAG_REV) Underscore = BTst(iAttr, FLAG_UND) Blink = BTst(iAttr, FLAG_BLK) End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/TerminalFilter.class000066400000000000000000000011641411575327000271610ustar00rootroot00000000000000' Gambas class file Public Enum MouseDown, MouseUp, MouseMove Public BracketedPasteActive As Boolean Public Sub Reset() End Public Sub Clear() End Public Sub OutputTo((hView) As TerminalView, (hScreen) As TerminalScreen, (hProcess) As Stream, (sData) As String) End Public Sub InputTo((hView) As TerminalView, (hScreen) As TerminalScreen, (hProcess) As Stream, (iKeyCode) As Integer, (sText) As String, Optional (bNormal) As Boolean = True, (bShift) As Boolean, (bControl) As Boolean) As Boolean End Public Sub SendMouseEvent((hProcess) As Process, (X) As Integer, (Y) As Integer, (iEvent) As Integer) End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/TerminalFilter_VT100.class000066400000000000000000000643661411575327000300300ustar00rootroot00000000000000' Gambas class file Inherits TerminalFilter Private Enum SCAN_NORMAL, SCAN_TITLE, SCAN_SET_CHARSET Private Enum MODE_AppScreen, MODE_AppCuKeys, MODE_AppKeyPad, MODE_Mouse1000, MODE_Mouse1001, MODE_Mouse1002, MODE_Mouse1003, MODE_Mouse1005, MODE_Mouse1006, MODE_Mouse1015, MODE_AnsiMODE_132Columns, MODE_Allow132Columns, MODE_BracketedPaste Private $aMode As New Boolean[13] 'Private $aSavedMode As New Boolean[13] Private $sLeft As String Private $bLeftIsInvalid As Boolean Private $sLastChar As String 'Private $iCpt As Integer Public Sub Reset() $aMode.Fill(False) $sLastChar = "" End Public Sub OutputTo(hView As TerminalView, hScreen As TerminalScreen, hOutput As Stream, sData As String) Dim iPos As Integer Dim iPos2 As Integer Dim iCode As Integer Dim iMode As Integer Dim sTitle As String Dim sCmd As String Dim sStr As String Dim iNum As Integer Dim iLenLeft As Integer 'Dim iPosEraseScreen As Integer If hView._DisableFilter Then $sLeft &= sData Return Endif If $sLeft Then sData = $sLeft & sData iLenLeft = Len($sLeft) $sLeft = "" If $bLeftIsInvalid Then If Not String.IsValid(sData) Then sData = Mid$(sData, iLenLeft + 1) Endif $bLeftIsInvalid = False Endif Endif If Not String.IsValid(sData) Then For iPos = Len(sData) DownTo 1 If Asc(sData, iPos) >= 192 Then Break Next If TerminalScreen.DEBUG_FILTER Then Debug "not valid";; iPos; " / "; Len(sData) Debug Quote(Right(sData, 256)) Endif If iPos = 0 Then Return $sLeft = Mid$(sData, iPos) $bLeftIsInvalid = True sData = Left(sData, iPos - 1) If Not sData Then Return iPos = 0 Endif 'Debug If(hProcess.Term.GetAttr().ONLCR, "+", "-"); "ONLCR" 'If Len(sData) >= 4096 Then 'iPosEraseScreen = RInStr(sData, "\e[2J") 'If iPosEraseScreen > 0 Then Debug "erase screen at "; iPosEraseScreen 'Endif Do hScreen = hView._GetCurrentScreen() Inc iPos iPos2 = InStr(sData, Chr$(27), iPos) If iPos2 = 0 Then hScreen.Print(Mid$(sData, iPos)) $sLastChar = String.Right(sData) Break Endif 'If iPos2 > iPos And If iPos > iPosEraseScreen Then hScreen.Print(Mid$(sData, iPos, iPos2 - iPos)) If iPos2 > iPos Then hScreen.Print(Mid$(sData, iPos, iPos2 - iPos)) $sLastChar = String.Right(Mid$(sData, iPos, iPos2 - iPos)) Endif iPos = iPos2 Inc iPos If iPos > Len(sData) Then $sLeft = Mid$(sData, iPos2) Return Endif If Mid$(sData, iPos, 1) = "[" Then Inc iPos Do If iPos > Len(sData) Then $sLeft = Mid$(sData, iPos2) Return Endif iCode = Asc(sData, iPos) If iCode >= 64 And If iCode <= 126 Then Break Inc iPos Loop Endif iMode = Escape(hView, hScreen, hOutput, sData, iPos2 + 1, iPos - iPos2) If iMode = SCAN_TITLE Then Inc iPos iPos2 = InStr(sData, Chr$(7), iPos) If iPos2 = 0 Then $sLeft = Mid$(sData, iPos) Return Endif sStr = Mid$(sData, iPos, iPos2 - iPos) iPos = InStr(sStr, ";") If iPos Then sCmd = Left(sStr, iPos - 1) sTitle = Mid$(sStr, iPos + 1) If sCmd = "0" Or If sCmd = "2" Then hView.Title = sTitle Else If IsInteger(sCmd) Then ' ignore, mostly XTerm specific commands Else sStr = "]" & sStr GoSub NOT_IMPLEMENTED Endif Endif iPos = iPos2 iMode = SCAN_NORMAL Else If iMode = SCAN_SET_CHARSET Then iNum = InStr("()*+", Mid$(sData, iPos, 1)) - 1 If iNum >= 0 Then hScreen.SetCharset(iNum, Mid$(sData, iPos + 1, 1)) Inc iPos iMode = SCAN_NORMAL Endif 'Debug "[";; hScreen.Column;; ":";; hScreen.Line + hScreen.ScreenTop();; "]" Loop Return NOT_IMPLEMENTED: Error "gb.form.terminal: warning: not implemented: "; Quote(sStr) Return End ' Escape sequence without the initial 27 character. Private Sub Escape(hView As TerminalView, hScreen As TerminalScreen, hOutput As Stream, sData As String, iPos As Integer, iLen As Integer) As Integer Dim Y As Integer Dim X As Integer Dim aArg As String[] Dim sArg As String Dim iArg As Integer Dim sStr As String Dim iMode As Integer Dim N As Integer Dim I As Integer Dim sOutput As String sStr = Mid$(sData, iPos, iLen) ' If 'hScreen.DEBUG_FILTER Then ' Inc $iCpt ' Error Format($iCpt, "######0"); " | "; ' Error "ESC"; ' For I = 1 To Len(sStr) ' Error " "; Mid$(sStr, I, 1); ' Next ' Error ' If $iCpt > 5120 Then ' hScreen.DebugRefresh ' hView.Suspended = True ' Stop ' hView.Suspended = False ' Endif ' Endif Select Case Left(sStr) Case "[" ' CSI, the most frequent Select Case Right(sStr) Case "m" ' Set attribute (frequent, so test it first) GoSub GET_ARGS If aArg Then For I = 0 To aArg.Max sArg = aArg[i] 'For Each sArg In aArg Try iArg = CInt(sArg) If Error Then Continue Select Case iArg Case 0 hScreen.Attr.Reset() Case 30 To 37 hScreen.Attr.Foreground = iArg - 30 Case 90 To 97 hScreen.Attr.Foreground = iArg - 90 + 8 Case 39 hScreen.Attr.Foreground = -1 Case 40 To 47 hScreen.Attr.Background = iArg - 40 Case 100 To 107 hScreen.Attr.Background = iArg - 40 + 8 Case 49 hScreen.Attr.Background = -1 Case 1 hScreen.Attr.Bold = True 'hScreen.Attr.Reverse = True Case 2 hScreen.Attr.Dim = True Case 4 hScreen.Attr.Underscore = True Case 5 hScreen.Attr.Blink = True Case 7 hScreen.Attr.Reverse = True Case 21 hScreen.Attr.Bold = False Case 22 hScreen.Attr.Dim = False Case 24 hScreen.Attr.Underscore = False Case 25 hScreen.Attr.Blink = False Case 27 hScreen.Attr.Reverse = False Case 90 To 97 hScreen.Attr.Foreground = iArg - 90 Case 100 To 107 hScreen.Attr.Background = iArg - 100 Case 38 If (aArg.max - i) >= 2 And If aArg[I + 1] = "5" Then Try hScreen.Attr.Foreground = CInt(aArg[I + 2]) I += 2 Endif 'TODO: Implement support for RGB Colors ' If (aArg.max - i) >= 4 And If aArg[i + 1] = "2" Then ' Try hScreen.Attr.Background = Color.RGB(CInt(aArg[i + 2]), CInt(aArg[i + 3]), CInt(aArg[i + 4)) ' i += 4 ' Endif Case 48 If (aArg.max - I) >= 2 And If aArg[I + 1] = "5" Then Try hScreen.Attr.Background = CInt(aArg[I + 2]) I += 2 Endif 'TODO: Implement support for RGB Colors ' If (aArg.max - i) >= 4 And If aArg[i + 1] = "2" Then ' Try hScreen.Attr.ForeGround = Color.RGB(CInt(aArg[i + 2]), CInt(aArg[i + 3]), CInt(aArg[i + 4)) ' i += 4 ' Endif Case 3 ' Italic on Case 6 ' Fast blink on Case 20 ' Fraktur on Case 23 ' Italic & Fraktur off Default Goto NOT_IMPLEMENTED End Select Next Else hScreen.Attr.Reset Endif Case "@" GoSub GET_COUNT hScreen.InsertSpace(N) Case "A" GoSub GET_COUNT hScreen.CursorUp(N) Case "B" GoSub GET_COUNT hScreen.CursorDown(N) Case "C" GoSub GET_COUNT hScreen.CursorRight(N) Case "D" GoSub GET_COUNT hScreen.CursorLeft(N) Case "G" GoSub GET_ARGS Try hScreen.CursorGoto(CInt(aArg[0]) - 1, hScreen.Line) ' TODO: must take Origin into account Case "H", "f" ' Cursor goto GoSub GET_ARGS If aArg Then Try Y = CInt(aArg[0]) - 1 Try X = CInt(aArg[1]) - 1 Endif hScreen.CursorGoto(X, Y) Case "K" ' Erase line GoSub GET_ARGS If Not aArg Or If aArg[0] = "0" Then hScreen.EraseEndOfLine Else If aArg[0] = "1" Then hScreen.EraseStartOfLine Else If aArg[0] = "2" Then hScreen.EraseLine Else Goto NOT_IMPLEMENTED Endif Case "c" 'Report terminal type If hOutput Then Print #hOutput, "\e[?1;2c" Case "d" 'Set Cursor Y GoSub GET_ARGS If aArg Then Try Y = CInt(aArg[0]) - 1 hScreen.CursorGoto(hScreen.Column, Y) Endif Case "J" ' Erase screen GoSub GET_ARGS If Not aArg Or If aArg[0] = "0" Then hScreen.EraseDown Else If aArg[0] = "1" Then hScreen.EraseUp Else If aArg[0] = "2" Then hScreen.EraseScreen Else hScreen.Clear Endif Case "L" ' Insert lines GoSub GET_COUNT hScreen.InsertLine(N) Case "M" ' Delete lines GoSub GET_COUNT hScreen.DeleteLine(N) Case "P" ' Delete characters GoSub GET_COUNT hScreen.DeleteChar(N) Case "S" ' Scroll up GoSub GET_COUNT hScreen.ScrollUp(N) Case "T" ' Scroll down GoSub GET_COUNT hScreen.ScrollDown(N) Case "X" ' Erase char GoSub GET_COUNT hScreen.EraseChar(N) ' Case "d" ' ' GoSub GET_ARGS ' If aArg Then ' Try Y = CInt(aArg[0]) - 1 ' Endif ' hScreen.CursorGoto(hScreen.Column, Y) Case "h" If sStr Begins "[?" Then 'DEC Private Mode Set sStr = Replace(sStr, "?", "") 'remove the ? GoSub GET_ARGS If aArg Then For Each sArg In aArg Select sArg Case "1" ' Application cursor keys hScreen.AppCursorKey = True Case "6" ' Origin hScreen.Origin = True Case "7" ' Wrap mode hScreen.WrapMode = True Case "12" 'Ignored Case "25" ' Hide cursor hScreen.HideCursor = False Case "47", "1047" $aMode[MODE_AppScreen] = False hView.AlternateScreen = True Case "1000" $aMode[MODE_Mouse1000] = True UpdateMouseActive(hView) Case "1001" $aMode[MODE_Mouse1001] = True UpdateMouseActive(hView) Case "1002" $aMode[MODE_Mouse1002] = True UpdateMouseActive(hView) Case "1003" $aMode[MODE_Mouse1003] = True UpdateMouseActive(hView) Case "1005" $aMode[MODE_Mouse1005] = True Case "1006" $aMode[MODE_Mouse1006] = True Case "1034" ' ignore Case "1048" hScreen.SaveCursor Case "1049" hScreen.SaveCursor hView.AlternateScreen = True hView._GetCurrentScreen().Clear() Case "2004" Me.BracketedPasteActive = True Default Goto NOT_IMPLEMENTED End Select Next Endif Else 'Set Mode GoSub GET_ARGS If aArg Then For Each sArg In aArg Select Case sArg Case "4" ' Insert mode hScreen.InsertMode = True Case "20" ' Newline mode hScreen.NewLineMode = True Default Goto NOT_IMPLEMENTED End Select Next Endif Endif Case "l" If sStr Begins "[?" Then 'DEC Private Mode Set sStr = Replace(sStr, "?", "") 'remove the ? GoSub GET_ARGS If aArg Then For Each sArg In aArg Select sArg Case "1" ' Normal cursor keys hScreen.AppCursorKey = False Case "6" ' Origin hScreen.Origin = False Case "7" ' Wrap mode hScreen.WrapMode = False Case "12" 'Ignored Case "25" ' Hide cursor If Not hScreen.DEBUG_FILTER Then hScreen.HideCursor = True Case "47" $aMode[MODE_AppScreen] = False hView.AlternateScreen = False Case "1000" $aMode[MODE_Mouse1000] = False UpdateMouseActive(hView) Case "1001" $aMode[MODE_Mouse1001] = False UpdateMouseActive(hView) Case "1002" $aMode[MODE_Mouse1002] = False UpdateMouseActive(hView) Case "1003" $aMode[MODE_Mouse1003] = False UpdateMouseActive(hView) Case "1005" $aMode[MODE_Mouse1005] = False Case "1006" $aMode[MODE_Mouse1006] = False Case "1034" ' ignore Case "1047" hScreen.Clear $aMode[MODE_AppScreen] = False hView.AlternateScreen = False $aMode[MODE_Mouse1000] = False $aMode[MODE_Mouse1001] = False $aMode[MODE_Mouse1002] = False $aMode[MODE_Mouse1003] = False UpdateMouseActive(hView) Case "1048" hScreen.RestoreCursor Case "1049" hView.AlternateScreen = False hScreen.RestoreCursor Case "2004" Me.BracketedPasteActive = False Default Goto NOT_IMPLEMENTED End Select Next Endif Else 'Set Mode GoSub GET_ARGS If aArg Then For Each sArg In aArg Select Case sArg Case "4" ' Insert mode hScreen.InsertMode = False Case "20" ' Newline mode hScreen.NewLineMode = False Default Goto NOT_IMPLEMENTED End Select Next Endif Endif Case "n" ' Device Status Report Select Case Mid(sStr, 2, -1) Case "5" sOutput = "\e[0n" 'Report Status OK Case "6" sOutput = Subst("\e[&1;&2R", hScreen.Line, hScreen.Column) 'Report Cursor Position Case "?6" sOutput = Subst("\e[?&1;&2R", hScreen.Line, hScreen.Column) 'Report Cursor Position Case "?15" sOutput = "\0[?11n" 'Printer not ready (10 for ready)" Case "?25" 'Report UDK statu sOutput = "\0[?20n" 'UDK status as CSI ? 2 0 n (unlocked) or CSI ? 2 1 n (locked) Case "?26" 'Report Keyboard status as sOutput = "\0[?50n" 'No Locator, if not. Default Goto NOT_IMPLEMENTED End Select If hOutput Then Print #hOutput, sOutput; Case "r" ' Scroll screen GoSub GET_ARGS If Not aArg Then hScreen.ScrollScreen() Else Try hScreen.ScrollScreen(CInt(aArg[0]) - 1, CInt(aArg[1]) - 1) Endif Case "s" ' Save cursor hScreen.SaveCursor Case "u" ' Restore cursor hScreen.RestoreCursor Case "b" GoSub GET_COUNT If $sLastChar Then hScreen.Print(String$(N, $sLastChar)) Case "t" ' window manipulations, set TerminalView.WindowCommands to True to enable. If hView.WindowCommands Then Dim hViewWin As Window = hView.Window GoSub GET_ARGS If aArg Then sArg = aArg[I] Try iArg = CInt(sArg) If Error Then Return Select Case iArg Case 1 hViewWin.Minimized = False Case 2 hViewWin.Minimized = True Case 3 ' Move window Dim iLeft, iTop As Integer Try iLeft = CInt(aArg[I + 1]) If Error Then Return Try iTop = CInt(aArg[I + 2]) If Error Then Return hViewWin.Move(iLeft, iTop, hViewWin.Width, hViewWin.Height) Case 4, 8 ' Resize window , 4 for size in pixels 8 for text characters If Not hViewWin.Resizable Then Return Dim iWidth, iHeight As Integer Try iHeight = IIf(iArg = 4, CInt(aArg[I + 1]), hView.LineHeight * CInt(aArg[I + 1])) + (hViewWin.Height - hView.Height) + IIf(hViewWin.Border, 4, 0) If Error Then Return Try iWidth = IIf(iArg = 4, CInt(aArg[I + 2]), hView.CharWidth * CInt(aArg[I + 2])) + (hViewWin.Width - hView.Width) + IIf(hViewWin.Border, 4, 0) If Error Then Return hViewWin.Resize(iWidth, iHeight) Case 5 hViewWin.Raise Case 6 hViewWin.Lower 'Case 7 ' hView.Refresh Case 9 ' maximize , if window is resizable. If Not hViewWin.Resizable Then Return Try iArg = CInt(aArg[I + 1]) If Error Then Return Select iArg Case 0 hView.Window.Maximized = False Case 1 hViewWin.Maximized = Not hViewWin.Maximized Case 2 hViewWin.Height = Screen.Height Case 3 hViewWin.Width = Screen.Width Default Goto NOT_IMPLEMENTED End Select Case 10 If Not hViewWin.Resizable Then Return Try iArg = CInt(aArg[I + 1]) If Error Then Return Select iArg Case 0 hViewWin.FullScreen = False hView.Border = True Case 1 hView.Border = False hViewWin.FullScreen = True Case 2 hViewWin.FullScreen = Not hViewWin.FullScreen hView.Border = Not hViewWin.FullScreen Default Goto NOT_IMPLEMENTED End Select Default Goto NOT_IMPLEMENTED End Select Endif Endif Default Goto NOT_IMPLEMENTED End Select Case "(", ")", "*", "+" iMode = SCAN_SET_CHARSET Case "]" '>>>>> OSC iMode = SCAN_TITLE Case "7" ' Save cursor hScreen.SaveCursor() Case "8" ' Restore cursor hScreen.RestoreCursor() Case "D" ' Index hScreen.Index Case "M" ' Reverse index hScreen.ReverseIndex Case "n" ' TODO: Must apply it to both screens apparently hScreen.UseCharset(2) Case "o" ' TODO: Must apply it to both screens apparently hScreen.UseCharset(3) Case "=" hScreen.AppKeypad = True Case ">" hScreen.AppKeypad = False Default Goto NOT_IMPLEMENTED End Select Return iMode GET_COUNT: N = 1 If Len(sStr) > 2 Then Try N = CInt(Mid$(sStr, 2, -1)) Return GET_ARGS: If Len(sStr) > 2 Then aArg = Split(Mid$(sStr, 2, -1), ";") Else aArg = Null Endif Return NOT_IMPLEMENTED: Error "gb.form.terminal: warning: not implemented: "; Quote(sStr) End Public Sub InputTo(hView As TerminalView, hScreen As TerminalScreen, hProcess As Stream, iCode As Integer, sText As String, Optional bNormal As Boolean = True, bShift As Boolean, bControl As Boolean) As Boolean If bNormal Then Select Case iCode Case Key.Up sText = If(hScreen.AppCursorKey, "\eOA", "\e[A") Case Key.Down sText = If(hScreen.AppCursorKey, "\eOB", "\e[B") Case Key.Right sText = If(hScreen.AppCursorKey, "\eOC", "\e[C") Case Key.Left sText = If(hScreen.AppCursorKey, "\eOD", "\e[D") Case Key.Enter, Key.Return 'Debug If(hProcess.Term.GetAttr().ICRNL, "+", "-"); "ICRNL";; If(hProcess.Term.GetAttr().INLCR, "+", "-"); "INLCR" sText = If(hScreen.NewlineMode, "\r\n", "\r") Case Key.Insert sText = "\e[2~" Case Key.Delete sText = "\e[3~" Case Key.Home 'sText="\e[1~" sText = If(hScreen.AppCursorKey, "\eOH", "\e[H") Case Key.End 'sText = "\e[4~" sText = If(hScreen.AppCursorKey, "\eOF", "\e[F") Case Key.PageDown sText = "\e[6~" Case Key.PageUp sText = "\e[5~" Case Key.F1 sText = "\eOP" Case Key.F2 sText = "\eOQ" Case Key.F3 sText = "\eOR" Case Key.F4 sText = "\eOS" Case Key.F5 sText = "\e[15~" Case Key.F6 sText = "\e[17~" Case Key.F7 sText = "\e[18~" Case Key.F8 sText = "\e[19~" Case Key.F9 sText = "\e[20~" Case Key.F10 sText = "\e[21~" Case Key.F11 sText = "\e[23~" Case Key.F12 sText = "\e[24~" Case Key.BackSpace sText = Chr$(127) Case Key.Tab sText = "\t" Case Key.BackTab sText = "\e[Z" End Select Else If bShift Then Select iCode Case Key.Return, Key.Enter sText = "\eOM" Case Key.BackTab sText = "\e[Z" End Select Else If bControl Then Select iCode Case Key["S"] hView._Suspend(True) Case Key["Q"], Key["C"] hView._Suspend(False) End Select Endif If sText Then Print #hProcess, sText; Return True Endif End 'iButton indicates the button pressed or released (0-2) or scroll event (4-5). 'iEvent represents the kind of mouse action that occurred: ' 0 = Mouse button press ' 1 = Mouse drag ' 2 = Mouse button release Public Sub SendMouseEvent(hProcess As Process, X As Integer, Y As Integer, iEvent As Integer) Dim sCommand As String Dim iButton As Integer = 3 If Mouse.left Then iButton = 0 Else If Mouse.Right Then iButton = 2 Else If Mouse.Middle Then iButton = 1 Else If Mouse.Delta = -1 Then iButton = 5 Else If Mouse.Delta = 1 Then iButton = 4 Endif If X < 0 Or Y < 0 Then Return X += 1 Y += 1 ' With the exception Of the 1006 mode, button release Is Encoded In cb. 'Note that If multiple extensions are enabled, the 1006 Is Used, so it 's okay to check for only that. If iEvent = Me.MouseMove And If Not $aMode[MODE_Mouse1006] Then iButton = 3 'normal buttons are passed As 0 x20 + button, 'mouse wheel(buttons 4, 5) As 0 x5c + button If iButton >= 4 Then iButton += &H3c 'Mouse motion handling If ($aMode[MODE_Mouse1002] Or $aMode[MODE_Mouse1003]) And iEvent = Me.MouseMove Then iButton += &H20 'add 32 To signify motion Event If $aMode[MODE_Mouse1006] Then sCommand &= Subst("\e[<&1;&2;&3&4", iButton, x, y, IIf(iEvent = Me.MouseUp, "m", "M")) Else If $aMode[MODE_Mouse1015] Then sCommand &= Subst("\e[<&1;&2;&3M", iButton + &H20, x, y) ' Else If $aMode[MODE_Mouse1005] Then ' If X <= 2015 And y <= 2015 Then ' sMouse = Conv(Chr(X + &H20) & Chr(Y + &H20), "ASCII", "UTF-8") ' sCommand = Subst("\e[M&1&2", iButton + &H20, sMouse) ' Endif Else If X <= 223 And Y <= 223 Then sCommand = Subst("\e[M&1&2&3", iButton + &H20, X + &H20, Y + &H20) Endif 'Print sCommand Print #hProcess, sCommand; End Private Sub UpdateMouseActive(hView As TerminalView) hView._UseMouse($aMode[MODE_Mouse1000] Or $aMode[MODE_Mouse1001] Or $aMode[MODE_Mouse1002] Or $aMode[MODE_Mouse1003]) End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/TerminalLink.class000066400000000000000000000021421411575327000266260ustar00rootroot00000000000000' Gambas class file Export Event _Fake Property Read Text As String Property Read Type As String Property Read Line As String Property Read Pos As String Public _Text As String Public _Type As String Public _Line As String Public _Pos As Integer Private Sub GetView() As TerminalView Return Object.Parent(Me) End '' Highlight a link. '' '' This method must be called during a [./:link] event to indicate which part of the current line under the mouse cursor is a link. '' '' - ~Start~ : The position of the first character of the link. '' - ~Length~ : The link length. '' - ~Type~: The link type (optional). Use it to make the difference between different types of links. Public Sub Select(Start As Integer, Length As Integer, Optional (Type) As String) If _Pos >= Start And If _Pos < (Start + Length) Then GetView()._SelectLink(Start, Length, Type) End Private Function Text_Read() As String Return _Text End Private Function Type_Read() As String Return _Type End Private Function Line_Read() As String Return _Line End Private Function Pos_Read() As String Return _Pos End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/TerminalScreen.class000066400000000000000000001301641411575327000271560ustar00rootroot00000000000000' Gambas class file Event _Foo Public Const DEBUG_FILTER As Boolean = False Property Read Attr As TerminalAttr Property Read Column As Integer Property Read Line As Integer Property Read Width As Integer Property Read Height As Integer Property Read Geometry As Rect Property Read X As Integer Property Read Y As Integer Property Read Count As Integer Property Read HasMode As Boolean Public AppCursorKey As Boolean Public AppKeypad As Boolean Public Origin As Boolean Public InsertMode As Boolean Public NewlineMode As Boolean Public WrapMode As Boolean Public HideCursor As Boolean Static Private $aDarkColor As Integer[] = [ &H404040, &HC00000, &H00C000, &HC0A300, &H005090, &H900090, &H009090, &HC0C0C0, &HA0A0A0, &HFF0000, &H00FF00, &HFFDD00, &H0080FF, &HFF00FF, &H00FFFF, &HFFFFFF] '&H808080, &HC00000, &H00C000, &HD0C000, &H0060C0, &H800080, &H008080, &HFFFFFF, '&H000000, &HFF0000, &H00FF00, &HFFFF00, &H0080FF, &HFF00FF, &H00FFFF, &HC0C0C0] Static Private $aColor As Integer[] = [ &H000000, &HC00000, &H00C000, &HC0A300, &H0060C0, &H900090, &H009090, &HC0C0C0, &H808080, &H800000, &H008000, &H606000, &H004080, &H600060, &H006060, &HF0F0F0, &H000000, &H00005F, &H000087, &H0000AF, &H0000D7, &H0000FF, &H005F00, &H005F5F, &H005F87, &H005FAF, &H005FD7, &H005FFF, &H008700, &H00875F, &H008787, &H0087AF, &H0087D7, &H0087FF, &H00AF00, &H00AF5F, &H00AF87, &H00AFAF, &H00AFD7, &H00AFFF, &H00D700, &H00D75F, &H00D787, &H00D7AF, &H00D7D7, &H00D7FF, &H00FF00, &H00FF5F, &H00FF87, &H00FFAF, &H00FFD7, &H00FFFF, &H5F0000, &H5F005F, &H5F0087, &H5F00AF, &H5F00D7, &H5F00FF, &H5F5F00, &H5F5F5F, &H5F5F87, &H5F5FAF, &H5F5FD7, &H5F5FFF, &H5F8700, &H5F875F, &H5F8787, &H5F87AF, &H5F87D7, &H5F87FF, &H5FAF00, &H5FAF5F, &H5FAF87, &H5FAFAF, &H5FAFD7, &H5FAFFF, &H5FD700, &H5FD75F, &H5FD787, &H5FD7AF, &H5FD7D7, &H5FD7FF, &H5FFF00, &H5FFF5F, &H5FFF87, &H5FFFAF, &H5FFFD7, &H5FFFFF, &H870000, &H87005F, &H870087, &H8700AF, &H8700D7, &H8700FF, &H875F00, &H875F5F, &H875F87, &H875FAF, &H875FD7, &H875FFF, &H878700, &H87875F, &H878787, &H8787AF, &H8787D7, &H8787FF, &H87AF00, &H87AF5F, &H87AF87, &H87AFAF, &H87AFD7, &H87AFFF, &H87D700, &H87D75F, &H87D787, &H87D7AF, &H87D7D7, &H87D7FF, &H87FF00, &H87FF5F, &H87FF87, &H87FFAF, &H87FFD7, &H87FFFF, &HAF0000, &HAF005F, &HAF0087, &HAF00AF, &HAF00D7, &HAF00FF, &HAF5F00, &HAF5F5F, &HAF5F87, &HAF5FAF, &HAF5FD7, &HAF5FFF, &HAF8700, &HAF875F, &HAF8787, &HAF87AF, &HAF87D7, &HAF87FF, &HAFAF00, &HAFAF5F, &HAFAF87, &HAFAFAF, &HAFAFD7, &HAFAFFF, &HAFD700, &HAFD75F, &HAFD787, &HAFD7AF, &HAFD7D7, &HAFD7FF, &HAFFF00, &HAFFF5F, &HAFFF87, &HAFFFAF, &HAFFFD7, &HAFFFFF, &HD70000, &HD7005F, &HD70087, &HD700AF, &HD700D7, &HD700FF, &HD75F00, &HD75F5F, &HD75F87, &HD75FAF, &HD75FD7, &HD75FFF, &HD78700, &HD7875F, &HD78787, &HD787AF, &HD787D7, &HD787FF, &HD7AF00, &HD7AF5F, &HD7AF87, &HD7AFAF, &HD7AFD7, &HD7AFFF, &HD7D700, &HD7D75F, &HD7D787, &HD7D7AF, &HD7D7D7, &HD7D7FF, &HD7FF00, &HD7FF5F, &HD7FF87, &HD7FFAF, &HD7FFD7, &HD7FFFF, &HFF0000, &HFF005F, &HFF0087, &HFF00AF, &HFF00D7, &HFF00FF, &HFF5F00, &HFF5F5F, &HFF5F87, &HFF5FAF, &HFF5FD7, &HFF5FFF, &HFF8700, &HFF875F, &HFF8787, &HFF87AF, &HFF87D7, &HFF87FF, &HFFAF00, &HFFAF5F, &HFFAF87, &HFFAFAF, &HFFAFD7, &HFFAFFF, &HFFD700, &HFFD75F, &HFFD787, &HFFD7AF, &HFFD7D7, &HFFD7FF, &HFFFF00, &HFFFF5F, &HFFFF87, &HFFFFAF, &HFFFFD7, &HFFFFFF, &H080808, &H121212, &H1C1C1C, &H262626, &H303030, &H3A3A3A, &H444444, &H4E4E4E, &H585858, &H606060, &H666666, &H767676, &H808080, &H8A8A8A, &H949494, &H9E9E9E, &HA8A8A8, &HB2B2B2, &HBCBCBC, &HC6C6C6, &HD0D0D0, &HDADADA, &HE4E4E4, &HEEEEEE] Static Private $aGraphicCharset As Integer[] = [&H0020&, &H25C6&, &H2592&, &H2409&, &H240C&, &H240D&, &H240A&, &H00B0&, &H00B1&, &H2424&, &H240B&, &H2518&, &H2510&, &H250C&, &H2514&, &H253C&, &HF800&, &HF801&, &H2500&, &HF803&, &HF804&, &H251C&, &H2524&, &H2534&, &H252C&, &H2502&, &H2264&, &H2265&, &H03C0&, &H2260&, &H00A3&, &H00B7&] Static Private $sControlChar As String Static Private $hBrushLight As Image Static Private $hBrushMedium As Image Static Private $hBrushDark As Image Public Lines As New CTerminalLine[] ' Screen size Private $W As Integer Private $H As Integer ' If a line had to be broken Private $bBrokenLine As Boolean ' Cursor position Private $X As Integer Private $Y As Integer ' Saved cursor Private $SX As Integer Private $SY As Integer ' Current attributes Private $hAttr As New TerminalAttr ' Selection Private $X1 As Integer Private $Y1 As Integer Private $X2 As Integer Private $Y2 As Integer ' Link Private $LX1 As Integer Private $LY1 As Integer Private $LX2 As Integer Private $LY2 As Integer ' Scroll area Private $iScrollStart As Integer = -1 Private $iScrollEnd As Integer = -1 ' Drawing cache Private $hLineCache As Image Private $cCharCache As New Collection ' Charsets Private $aCharset As New Byte[4] Private $iCurrentCharset As Integer Private $bGraphicCharset As Boolean Public Sub _new() Dim I As Integer If Not $sControlChar Then For I = 0 To 31 $sControlChar &= Chr$(I) Next Endif Reset End Private Sub GetView() As TerminalView Return Object.Parent(Me) End Public Sub Clear() Lines.Clear $bBrokenLine = False GetView()._UpdateSize Goto(0, 0) End Fast Private Sub Relayout(W As Integer) Dim aAttr As Integer[] Dim aLines As String[] Dim I As Integer Dim hLine As CTerminalLine Dim sText As String Dim SY As Integer Dim L As Integer Dim sLine As String Dim hView As TerminalView Dim D As Integer hView = GetView() 'fTimer = Timer aAttr = New Integer[] aLines = New String[] D = Lines.Count - 10000 If D < 0 Then D = 0 SY = -1 For I = D To Lines.Max If I = $Y Then SY = aLines.Count hLine = Lines[I] If hLine Then sText &= hLine.Text aAttr.Insert(hLine.GetFullAttr()) If hLine.NewLine Then aLines.Add(sText) sText = "" 'aAttr.Insert(&H00000100) Endif Endif Next aLines.Add(sText) 'Debug "#1 "; Timer - fTimer;; $X;; $Y 'fTimer = Timer 'SX = $X 'SY = $Y hView._DisableUpdateSize() Lines.Remove(D, -1) If D = 0 Then $bBrokenLine = False 'GetView()._UpdateSize 'Goto(0, D) L = D For I = 0 To aLines.Max If I = SY Then $Y = L sLine = aLines[I] While String.Len(sLine) > W With GetLine(L) .Text = String.Left(sLine, W) .Length = W End With sLine = String.Mid$(sLine, W + 1) Inc L $bBrokenLine = True If I = SY Then If $X >= W Then $X -= W $Y = L Endif Endif Wend With GetLine(L) .Text = sLine .Length = String.Len(sLine) .NewLine = I < aLines.Max End With Inc L Next 'Debug "#2 "; Timer - fTimer;; $X;; $Y 'fTimer = Timer For I = D To Lines.Max Lines[I].InitAttr(aAttr) Next 'Debug "#3 "; Timer - fTimer hView._EnableUpdateSize() hView._UpdateSize 'hView.EnsureVisible() End Public Sub Resize(W As Integer, H As Integer) As Boolean If W <> $W Or If H <> $H Then If Not GetView().AlternateScreen And If Lines.Count < 100000 Then If $bBrokenLine Or If W < $W Then Relayout(W) Endif Endif $W = W $H = H $X1 = 0 $Y1 = 0 $X2 = 0 $Y2 = 0 'Debug "$Y = "; $Y $iScrollStart = -1 $iScrollEnd = -1 If GetView().AlternateScreen Then If Lines.Count > $H Then Lines.Resize($H) 'GetView()._UpdateSize Endif Endif $hLineCache = Null $X = Min($X, $W - 1) $Y = ScreenTop() + Max(0, Min($Y - ScreenTop(), $H - 1)) Return True Endif End Fast Public Sub GetLine(Y As Integer) As CTerminalLine Dim hLine As CTerminalLine If Y > Lines.Max Then Lines.Resize(Y + 1) GetView()._UpdateSize() Endif hLine = Lines[Y] If Not hLine Then hLine = New CTerminalLine Lines[Y] = hLine Endif Return hLine End Fast Public Sub GetLineLength(Y As Integer) As Integer Dim hLine As CTerminalLine hLine = Lines[Y] If hLine Then Return hLine.Length End Private Sub ClearLine(Y As Integer) Dim hLine As CTerminalLine If Y > Lines.Max Then Return hLine = Lines[Y] If Not hLine Then Return hLine.Clear() End Private Sub Insert(sText As String, Optional X As Integer = $X) Dim hLine As CTerminalLine Dim iLen As Integer = String.Len(sText) Dim sLeft As String If iLen = 0 Then Return 'Debug Quote(sText);; $Y;; iLen;; X;; $W If (X + iLen) > $W Then If X >= $W Then If Not WrapMode Then Return Index() $X = 0 Insert(sText) Return Endif iLen = Max(0, $W - X) If iLen Then sLeft = String.Left(sText, iLen) If String.Len(sLeft) <> iLen Then Error "gb.form.terminal: warning: String.Left() failed: "; String.Len(sLeft);; iLen Return Endif Insert(sLeft, X) sText = String.Mid$(sText, iLen + 1) Endif If WrapMode Then $bBrokenLine = True Index() $X = 0 Insert(sText) Endif Return Endif hLine = GetLine($Y) If hLine.Length <= X Then hLine.Text &= Space$(X - hLine.Length) & sText '& String.Mid(hLine.Text, X + iLen) hLine.Length = X + iLen 'String.Len(hLine.Text) hLine.SetAttr($hAttr, X, iLen, False) Else If InsertMode Then hLine.Text = String.Left(hLine.Text, X) & sText & String.Mid(hLine.Text, X + 1) hLine.Length += iLen 'Min(hLine.Length + iLen, $W) hLine.SetAttr($hAttr, X, iLen, True) Else hLine.Text = String.Left(hLine.Text, X) & sText & String.Mid(hLine.Text, X + iLen + 1) hLine.Length = Max(hLine.Length, X + iLen) hLine.SetAttr($hAttr, X, iLen, False) Endif Endif GetView()._RefreshLine($Y) If IsMissing(X) Then $X += iLen End Public Sub Print(sText As String) Dim aText As String[] Dim sElt As String Dim iLen As Integer Dim iCode As Integer aText = Split(sText, $sControlChar) For Each sElt In aText If sElt Then If DEBUG_FILTER Then Error Quote(sElt) DebugRefresh Endif If $bGraphicCharset Then sElt = ApplyGraphicCharset(sElt) Insert(sElt) Endif iLen += Len(sElt) If iLen >= Len(sText) Then Break iCode = Asc(sText, iLen + 1) If DEBUG_FILTER Then Error "^" & Chr$(64 + iCode) DebugRefresh Endif Select Case iCode Case 7 Bell Case 8 CursorLeft Case 9 Tab() Case 10, 11, 12 NewLine() 'Goto(0, $Y) Case 13 Goto(0, $Y) Case 14 UseCharset(0) Case 15 UseCharset(1) Case Else Insert("^" & Chr$(64 + iCode)) End Select Inc iLen Next 'Debug "[";; $X;; ":";; $Y;; "]" End Private Sub NewLine() Dim hLine As CTerminalLine hLine = GetLine($Y) hLine.NewLine = True If NewlineMode Then $X = 0 Index() End Private Sub Tab() Goto($X + 8 - $X Mod 8, $Y) End Public Sub Goto(X As Integer, Y As Integer) If X >= $W Then X = 0 Inc Y Else If X < 0 Then X = $W - 1 Dec Y Endif If Y < 0 Then Y = 0 With GetView() ._ShowCursor() ._RefreshLine($Y) $X = X If Y <> $Y Then $Y = Y 'Debug "$Y = "; Y ._RefreshLine($Y) Endif '.EnsureVisible End With End Private Function Column_Read() As Integer Return $X End Private Function Line_Read() As Integer Return Max(0, $Y - ScreenTop()) End Public Sub ApplyLimit(iLimit As Integer) Dim iDel As Integer iDel = Lines.Count - iLimit If iDel <= 0 Then Return Lines.Remove(0, iDel) $Y = Max(0, $Y - iDel) 'Debug "$Y = "; $Y GetView()._UpdateSize() End Public Sub ScreenTop() As Integer Return Max(0, Lines.Count - $H) End ' Terminal VT100 commands Public Sub CursorGoto(X As Integer, Y As Integer) 'Debug X;; Y ' If X >= $W Then ' X = 0 ' Inc Y ' Else If X < 0 Then ' X = $W - 1 ' Dec Y ' Endif If X < 0 Then X = 0 Else If X >= $W X = $W - 1 Endif If Y < 0 Then Y = 0 Else If Y >= $H Y = $H - 1 Endif With GetView() ._ShowCursor() ._RefreshLine($Y) $X = X Y += ScreenTop() If Y <> $Y Then $Y = Y 'Debug "$Y = "; $Y 'If $Y = 50 Then Stop ._RefreshLine($Y) Endif '.EnsureVisible End With End Public Sub CursorUp(Optional Count As Integer = 1) CursorGoto($X, Me.Line - Count) End Public Sub CursorDown(Optional Count As Integer = 1) CursorGoto($X, Me.Line + Count) End Public Sub CursorLeft(Optional Count As Integer = 1) CursorGoto($X - Count, Me.Line) End Public Sub CursorRight(Optional Count As Integer = 1) CursorGoto($X + Count, Me.Line) End Public Sub CursorHome() Dim P As Integer If Origin And If $iScrollStart >= 0 Then P = $iScrollStart CursorGoto(0, P) End Public Sub InsertSpace(N As Integer) Dim hLine As CTerminalLine hLine = GetLine($Y) If $X < hLine.Length Then hLine.Text = String.Left(String.Left(hLine.Text, $X) & Space$(N) & String.Mid$(hLine.Text, $X + 1), $W) hLine.Length = String.Len(hLine.Text) Endif If Not $hAttr.IsVoid() Then hLine.SetAttr($hAttr, $X, N, True) Endif GetView()._RefreshLine($Y) End Public Sub DeleteChar(Optional N As Integer = 1) Dim hLine As CTerminalLine hLine = GetLine($Y) If $X < hLine.Length Then hLine.Text = String.Left(hLine.Text, $X) & String.Mid$(hLine.Text, $X + N + 1) hLine.Length = String.Len(hLine.Text) Endif If Not $hAttr.IsVoid() Then Insert(Space$(N), hLine.Length) Endif GetView()._RefreshLine($Y) End Public Sub EraseChar(Optional N As Integer = 1) Dim hLine As CTerminalLine hLine = GetLine($Y) If $X < hLine.Length Then hLine.Text = String.Left(hLine.Text, $X) & Space$(N) & String.Mid$(hLine.Text, $X + N + 1) hLine.Length = String.Len(hLine.Text) Endif hLine.SetAttr($hAttr, $X, N, False) GetView()._RefreshLine($Y) End Public Sub EraseEndOfLine() Dim hLine As CTerminalLine hLine = GetLine($Y) If hLine.Length <= $X Then If $hAttr.IsVoid() Then Return hLine.Text &= Space($X - hLine.Length) Else hLine.Text = String.Left(hLine.Text, $X) Endif hLine.Length = $X If Not $hAttr.IsVoid() Then Insert(Space$($W - $X), $X) GetView()._RefreshLine($Y) End Public Sub EraseStartOfLine() Dim hLine As CTerminalLine hLine = GetLine($Y) If hLine.Length <= $X Then hLine.Clear() Else hLine.Text = Space$($X + 1) & String.Mid$(hLine.Text, $X + 2) Endif GetView()._RefreshLine($Y) End Public Sub EraseLine() Dim hLine As CTerminalLine hLine = GetLine($Y) If $hAttr.IsVoid() Then hLine.Clear() Else Insert(Space$($W), 0) Endif GetView()._RefreshLine($Y) End Public Sub EraseScreen() Dim Y As Integer For Y = ScreenTop() To Lines.Max ClearLine(Y) Next CursorHome GetView()._ShowScreen() End Public Sub EraseDown() Dim Y As Integer EraseEndOfLine For Y = Max(ScreenTop(), $Y + 1) To Lines.Max ClearLine(Y) Next GetView().Refresh End Public Sub EraseUp() Dim Y As Integer EraseStartOfLine For Y = ScreenTop() To Max(ScreenTop() - 1, $Y + 1) ClearLine(Y) Next GetView().Refresh End Public Sub ScrollScreen(Optional Start As Integer, {End} As Integer) If IsMissing(Start) Or IsMissing({End}) Then $iScrollStart = -1 $iScrollEnd = -1 Else $iScrollStart = Start $iScrollEnd = {End} Endif CursorHome() End Private Sub GetScreen(ByRef Y1 As Integer, ByRef Y2 As Integer) If $iScrollStart < 0 Or $iScrollEnd < 0 Then Y1 = ScreenTop() Y2 = Y1 + $H - 1 Else Y1 = ScreenTop() + $iScrollStart Y2 = ScreenTop() + Min($H - 1, $iScrollEnd) Endif If Y2 < Y1 Then Y2 = Y1 End Private Sub Scroll(bUp As Boolean, Optional iFrom As Integer) Dim hView As TerminalView = GetView() Dim Y1, Y2 As Integer GetScreen(ByRef Y1, ByRef Y2) If Not IsMissing(iFrom) Then Y1 = iFrom If bUp Then If $iScrollStart >= 0 Or If hView.AlternateScreen Then Try Lines.Remove(Y1) Try Lines.Add(Null, Y2) Else Lines.Add(Null) Inc $Y hView._UpdateSize() 'hView.EnsureVisible Endif Else Try Lines.Remove(Y2) Try Lines.Add(Null, Y1) Endif hView.Refresh End Public Sub ScrollUp(Optional N As Integer) Repeat Scroll(True) Dec N Until N <= 0 End Public Sub ScrollDown(Optional N As Integer) Repeat Scroll(False) Dec N Until N <= 0 End Public Sub InsertLine(N As Integer) While N > 0 Scroll(False, $Y) Dec N Wend End Public Sub DeleteLine(N As Integer) While N > 0 Scroll(True, $Y) Dec N Wend End Public Sub Index() Dim Y1, Y2 As Integer GetScreen(ByRef Y1, ByRef Y2) If $Y >= Y2 Then Scroll(True) Else CursorDown Endif End Public Sub ReverseIndex() Dim Y1, Y2 As Integer GetScreen(ByRef Y1, ByRef Y2) If $Y <= Y1 Then ScrollDown Else CursorUp Endif End Private Function Attr_Read() As TerminalAttr Return $hAttr End Private Function Geometry_Read() As Rect Return Rect(0, ScreenTop(), $W, $H) End Private Function Width_Read() As Integer Return $W End Private Function Height_Read() As Integer Return $H End Private Sub DrawLine(hView As TerminalView, L As Integer, X As Integer, Y As Integer, LH As Integer, CW As Integer, (LA) As Integer, hFontCache As Image, bDarkBackground As Boolean) Dim hLine As CTerminalLine Dim I, J, K As Integer 'Dim sText As String Dim aAttr As Integer[] Dim hAttr As New TerminalAttr Dim iFg As Integer = hView.Foreground Dim iBg As Integer = hView.Background 'Dim hRect As Rect Dim P, iLen As Integer Dim XT As Integer Dim C, OC As Integer Dim hFont As Font Dim HC As Integer Dim hRect As Rect Dim W As Integer Dim YC As Integer Dim XC As Integer Dim bNoText As Boolean Dim XB, WB As Integer Dim iMaxLen As Integer hLine = Lines[L] If Not hLine Then Paint.FillRect(X, Y, Paint.W, LH, iBg) Return Endif iMaxLen = Min($W, hLine.Length) hFont = Paint.Font aAttr = hLine.GetAttr() P = 1 For I = 0 To aAttr.Max If P > iMaxLen Then Break hAttr._FillFrom(aAttr[I]) iLen = Min((Lsr(aAttr[I], 8) And 255), iMaxLen - P) + 1 iBg = hAttr.Background If iBg >= 0 Then If iBg < 16 And If bDarkBackground Then iBg = $aDarkColor[iBg] Else iBg = $aColor[iBg] Endif Else iBg = hView.Background Endif iFg = hAttr.Foreground If iFg >= 0 Then If iFg < 16 And If bDarkBackground Then iFg = $aDarkColor[iFg] Else iFg = $aColor[iFg] Endif Else iFg = hView.Foreground Endif If hAttr.Reverse Then Swap iBg, iFg bNoText = False If hAttr.Blink Then hView._HasBlink = True If hView._Blink Then GoSub DRAW_NO_TEXT Continue Endif Endif If hAttr.Dim Then iFg = Color.Merge(iFg, hView.Background) 'Paint.Background = Color.White If hAttr.Bold Then HC = LH Else HC = 0 Endif GoSub DRAW_TEXT Next iLen = iMaxLen - P + 1 If iLen > 0 Then iFg = hView.Foreground iBg = hView.Background HC = 0 hAttr._FillFrom(0) GoSub DRAW_TEXT Endif If Paint.W > X Then Paint.FillRect(X, Y, Paint.W - X, LH, hView.Background) 'If hLine.NewLine Then Paint.FillRect(Paint.W - 1, Y, 1, 4, Color.Yellow) Return DRAW_TEXT: If iLen <= 0 Then Return W = iLen * CW If IsSpace(String.Mid$(hLine.Text, P, iLen)) Then Paint.FillRect(X, Y, W, LH, iBg) Else Paint.Begin($hLineCache) Paint.Font = hFont Paint.FillRect(0, 0, $hLineCache.W, LH, iFg) XT = 0 hRect = Rect(0, 0, CW, LH) Paint.Operator = Paint.OperatorDestATop For J = P To Min(P + iLen - 1, $W) 'sCar = String.Mid$(hLine.Text, J, 1) C = String.Code(hLine.Text, J) If C <= 255 Then hRect.Move(C * CW, HC) Paint.DrawImage(hFontCache, XT, 0, CW, LH,, hRect) Else If C >= &H2500 And If C <= &H259F Then If C >= &H2591 And If C <= &H2593 Then DrawLineChar(C, XT, 0, CW, LH, XT, Y, hAttr.Bold) Else hRect.Move((C - &H2500 + 256) * CW, HC) Paint.DrawImage(hFontCache, XT, 0, CW, LH,, hRect) Endif Else If $cCharCache.Exist(C) Then C = $cCharCache[C] hRect.Move(C * CW, HC) Paint.DrawImage(hFontCache, XT, 0, CW, LH,, hRect) Else If $cCharCache.Count = 32 Then For Each OC In $cCharCache $cCharCache.Remove($cCharCache.Key) Break Next Else OC = $cCharCache.Count Endif If True '$cCharCache.Count < 32 Then XC = OC * CW YC = 0 Paint.Begin(hFontCache) Paint.Font = hFont Paint.Operator = Paint.OperatorSource Paint.FillRect(XC, YC, CW, LH * 2, Color.Transparent) Paint.Operator = Paint.OperatorOver Paint.ClipRect = Rect(XC, YC, CW, LH) 'Paint.Background = Color.White GoSub DRAW_CHAR YC += LH Paint.ClipRect = Rect(XC, YC, CW, LH) GoSub DRAW_BOLD_CHAR ' 'Paint.DrawText(String.Chr(C), XC, YC, CW, LH, Align.Center) ' GoSub DRAW_CHAR ' Paint.Background = Color.SetAlpha(Color.White, 64) ' 'Paint.DrawText(String.Chr(C), XC + 1, YC, CW, LH, Align.Center) ' Inc XC ' GoSub DRAW_CHAR ' Dec XC Paint.End hRect.Move(XC, HC) Paint.DrawImage(hFontCache, XT, 0, CW, LH,, hRect) $cCharCache[C] = OC Else 'Paint.DrawText(String.Chr(C), XT, 0, CW, LH, Align.Center) XC = XT YC = 0 'Paint.Background = Color.White Paint.Operator = Paint.OperatorDestATop If hAttr.Bold Then GoSub DRAW_BOLD_CHAR Else GoSub DRAW_CHAR Endif Endif Endif Endif XT += CW Next Paint.End XT = X Paint.FillRect(XT, Y, W, LH, iBg) Paint.DrawImage($hLineCache, XT, Y, W, LH,, Rect(0, 0, W, LH)) Endif If hAttr.Underscore Then Paint.FillRect(X, Y + LH - 1, W, 1, Color.SetAlpha(iFg, 64)) X += W P += iLen Return DRAW_NO_TEXT: W = iLen * CW Paint.FillRect(X, Y, W, LH, iBg) X += W P += iLen Return DRAW_CHAR: Paint.DrawText(String.Chr(C), XC, YC, CW, LH, Align.Center) Return DRAW_BOLD_CHAR: GoSub DRAW_CHAR XB = XC WB = CW \ 8 + 1 For K = 1 To WB \ 2 Inc XC GoSub DRAW_CHAR Next If Odd(WB) Then Paint.Background = Color.SetAlpha(Color.White, 64) Inc XC GoSub DRAW_CHAR Endif XC = XB Return End Private Sub GetSelection(ByRef X1 As Integer, ByRef Y1 As Integer, ByRef X2 As Integer, ByRef Y2 As Integer, Optional bLink As Boolean) As Boolean If bLink Then Y1 = $LY1 Y2 = $LY2 X1 = $LX1 X2 = $LX2 Else Y1 = $Y1 Y2 = $Y2 X1 = $X1 X2 = $X2 Endif If Y1 > Y2 Then Swap Y1, Y2 Swap X1, X2 Else If Y1 = Y2 Then If X1 > X2 Then Swap X1, X2 Endif If Y1 < 0 Then Y1 = 0 X1 = 0 Endif If Y2 >= Max($H, Lines.Count) Then Y2 = Max($H, Lines.Count) - 1 X2 = $W Endif If Y2 > Y1 Or If X2 > X1 Then Return True End Public Sub HasLink() As Boolean Dim X1, X2, Y1, Y2 As Integer Return GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2, True) End Public Sub Paint(SY As Integer, LH As Integer, CW As Float, LA As Integer, bHideCursor As Boolean, hFont As Image, bDarkBackground As Boolean) Dim hView As TerminalView = GetView() Dim L, L1, L2 As Integer Dim Y As Integer Dim X1, X2, Y1, Y2 As Integer If Not $hLineCache Then $hLineCache = New Image($W * CW, LH) $cCharCache.Clear L1 = (SY + Paint.ClipRect.Y) \ LH L2 = (SY + Paint.ClipRect.Y + Paint.ClipRect.H - 1) \ LH 'Debug L1;; L2 Y = L1 * LH - SY + SY Mod LH For L = L1 To L2 If L < Lines.Count Then DrawLine(hView, L, 0, Y, LH, CW, LA, hFont, bDarkBackground) ' Cursor If L = $Y And If Not bHideCursor And If Not HideCursor Then Paint.FillRect($X * CW, Y, CW, LH, Color.SetAlpha(Color.Merge(Color.SelectedBackground, hView.Foreground), 64)) Endif ' Selection If GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2) Then If L >= Y1 And If L <= Y2 Then If L = Y1 Then X1 *= CW Else X1 = 0 Endif If L = Y2 Then X2 *= CW Else X2 = Paint.W Endif If X2 > X1 Then Paint.FillRect(X1, Y, X2 - X1, LH, Color.SetAlpha(Color.SelectedBackground, 128)) Endif Endif ' Link If GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2, True) Then If L >= Y1 And If L <= Y2 Then If L = Y1 Then X1 *= CW Else X1 = 0 Endif If L = Y2 Then X2 *= CW Else X2 = Paint.W Endif If X2 > X1 Then Paint.FillRect(X1, Y + LH, X2 - X1, -((LH + 15) \ 16), Color.SetAlpha(Color.SelectedBackground, 64)) Endif Endif Endif Y += LH Next End Private Function X_Read() As Integer Return $X End Private Function Y_Read() As Integer Return $Y End Public Sub GotoMouse(X As Integer, Y As Integer, bStart As Boolean) X = Max(0, Min($W, X)) Y = Max(0, Min(Max(Lines.Count, $H), Y)) If bStart Then $X1 = X $Y1 = Y Endif $X2 = X $Y2 = Y If Not bStart Then With GetView() .Refresh ._EnsureVisibleAt(X, Y) End With Endif End Public Sub SaveCursor() $SX = $X $SY = $Y End Public Sub RestoreCursor() Goto($SX, $SY) End Public Sub Reset() $X = 0 $Y = 0 $SX = 0 $SY = 0 $X1 = 0 $Y1 = 0 $X2 = 0 $Y2 = 0 $iScrollStart = -1 $iScrollEnd = -1 $hAttr.Reset AppCursorKey = False AppKeypad = False Origin = False InsertMode = False NewlineMode = False WrapMode = True HideCursor = False $iCurrentCharset = 0 $bGraphicCharset = False End Public Sub DebugRefresh() If DEBUG_FILTER Then If GetView()._DisableFilter Then Return GetView().Refresh Inc GetView()._DisableFilter Wait Dec GetView()._DisableFilter 'Stop Endif End Private Function HasMode_Read() As Boolean If AppCursorKey Or If AppKeypad Or If Origin Or If InsertMode Or If NewlineMode Or If WrapMode Or If HideCursor Then Return True End Public Sub GetSelectedText(Optional bLink As Boolean) As String Dim X1 As Integer Dim X2 As Integer Dim Y1 As Integer Dim Y2 As Integer Dim sText As String Dim Y As Integer Dim hLine As CTerminalLine If Not GetSelection(ByRef X1, ByRef Y1, ByRef X2, ByRef Y2, bLink) Then Return If Y2 = Y1 Then sText = String.Mid$(GetLine(Y1).Text, X1 + 1, X2 - X1) Else hLine = GetLine(Y1) sText = String.Mid$(hLine.Text, X1 + 1) If hLine.NewLine Then sText &= "\n" For Y = Y1 + 1 To Y2 - 1 hLine = GetLine(Y) sText &= hLine.Text If hLine.NewLine Then sText &= "\n" Next sText &= String.Left$(GetLine(Y2).Text, X2) Endif Return sText End Public Sub UseCharset(iNum As Integer) $iCurrentCharset = iNum $bGraphicCharset = Chr$($aCharset[iNum]) = "0" End Public Sub SetCharset(iNum As Integer, sCharset As String) $aCharset[iNum] = Asc(sCharset) UseCharset($iCurrentCharset) End Private Sub ApplyGraphicCharset(sStr As String) As String Dim sResult As String Dim I As Integer Dim C As Integer For I = 1 To Len(sStr) C = Asc(sStr, I) If C >= &5F And If C <= &7E Then sResult &= String.Chr($aGraphicCharset[C - &5F]) Else sResult &= Chr$(C) Endif Next Return sResult End Static Public Sub DrawLineChar(C As Integer, X As Integer, Y As Integer, W As Integer, H As Integer, XB As Integer, YB As Integer, bBold As Boolean) Dim L, DL As Integer Dim XC As Integer Dim YC As Integer Dim L3, DL3 As Integer Dim hChar As Image Dim iBg As Integer Dim P, D As Float Dim hBold As Image Dim hFont As Font iBg = Paint.Background hFont = Paint.Font hChar = New Image(W, H, Color.Transparent) Paint.Begin(hChar) Paint.Background = iBg L = Min(W, H) If L < 4 Then L = 0 Else If L < 11 L = 1 Else L \= 6 Endif DL = L \ 2 L3 = L * 3 DL3 = L3 \ 2 XC = W \ 2 YC = H \ 2 If C <= &H256F Then On C - &H2500 GoSub _2500, _2501, _2502, _2503, _2504, _2505, _2506, _2507, _2508, _2509, _250A, _250B, _250C, _250D, _250E, _250F, _2510, _2511, _2512, _2513, _2514, _2515, _2516, _2517, _2518, _2519, _251A, _251B, _251C, _251D, _251E, _251F, _2520, _2521, _2522, _2523, _2524, _2525, _2526, _2527, _2528, _2529, _252A, _252B, _252C, _252D, _252E, _252F, _2530, _2531, _2532, _2533, _2534, _2535, _2536, _2537, _2538, _2539, _253A, _253B, _253C, _253D, _253E, _253F, _2540, _2541, _2542, _2543, _2544, _2545, _2546, _2547, _2548, _2549, _254A, _254B, _254C, _254D, _254E, _254F, _2550, _2551, _2552, _2553, _2554, _2555, _2556, _2557, _2558, _2559, _255A, _255B, _255C, _255D, _255E, _255F, _2560, _2561, _2562, _2563, _2564, _2565, _2566, _2567, _2568, _2569, _256A, _256B, _256C, _256D, _256E, _256F Else On C - &H2570 GoSub _2570, _2571, _2572, _2573, _2574, _2575, _2576, _2577, _2578, _2579, _257A, _257B, _257C, _257D, _257E, _257F, _2580, _2581, _2582, _2583, _2584, _2585, _2586, _2587, _2588, _2589, _258A, _258B, _258C, _258D, _258E, _258F, _2590, _2591, _2592, _2593, _2594, _2595, _2596, _2597, _2598, _2599, _259A, _259B, _259C, _259D, _259E, _259F Endif Paint.End If bBold And If C <= &H2580 Then hBold = hChar.Copy() Paint.Begin(hChar) If L >= 2 Then Paint.DrawImage(hBold, DL, 0) If Odd(L) Then Paint.DrawImage(hBold, DL + 1, 0,,, 0.75) Paint.End Endif Paint.DrawImage(hChar, X, Y) Return _2500: GoSub _LEFT_S Goto _RIGHT_S _2501: GoSub _LEFT_H Goto _RIGHT_H _2502: GoSub _TOP_S Goto _BOTTOM_S _2503: GoSub _TOP_H Goto _BOTTOM_H _2504: _2505: _2508: _2509: _254C: _254D: If C = &H2504 Or If C = &H2505 Then D = W / 6 Else If C = &H2508 Or If C = &H2509 Then D = W / 8 Else D = W / 4 Endif P = 0 While P < W If Odd(C) Then Paint.Rectangle(P, YC - DL3, D, L3) Else Paint.Rectangle(P, YC - DL, D, L) Endif P += D * 2 Wend Paint.Background = iBg Paint.Fill Return _2506: _2507: _250A: _250B: _254E: _254F: If C = &H2506 Or If C = &H2507 Then D = H / 6 Else If C = &H250A Or If C = &H250B Then D = H / 8 Else D = H / 4 Endif P = 0 While P < H If Odd(C) Then Paint.Rectangle(XC - DL3, P, L3, D) Else Paint.Rectangle(XC - DL, P, L, D) Endif P += D * 2 Wend Paint.Background = iBg Paint.Fill Return _250C: GoSub _RIGHT_S Goto _BOTTOM_S _250D: GoSub _CENTER_SV GoSub _RIGHT_H Goto _BOTTOM_S _250E: GoSub _CENTER_SH GoSub _RIGHT_S Goto _BOTTOM_H _250F: GoSub _RIGHT_H GoSub _BOTTOM_H Goto _CENTER_H _2510: GoSub _LEFT_S Goto _BOTTOM_S _2511: GoSub _CENTER_SV GoSub _LEFT_H Goto _BOTTOM_S _2512: GoSub _CENTER_SH GoSub _LEFT_S Goto _BOTTOM_H _2513: GoSub _LEFT_H GoSub _BOTTOM_H Goto _CENTER_H _2514: GoSub _RIGHT_S Goto _TOP_S _2515: GoSub _CENTER_SV GoSub _RIGHT_H Goto _TOP_S _2516: GoSub _CENTER_SH GoSub _RIGHT_S Goto _TOP_H _2517: GoSub _RIGHT_H GoSub _TOP_H Goto _CENTER_H _2518: GoSub _LEFT_S Goto _TOP_S _2519: GoSub _CENTER_SV GoSub _LEFT_H Goto _TOP_S _251A: GoSub _CENTER_SH GoSub _LEFT_S Goto _TOP_H _251B: GoSub _LEFT_H GoSub _TOP_H Goto _CENTER_H _251C: GoSub _TOP_S GoSub _BOTTOM_S Goto _RIGHT_S _251D: GoSub _TOP_S GoSub _BOTTOM_S Goto _RIGHT_H _251E: GoSub _TOP_H GoSub _BOTTOM_S Goto _RIGHT_S _251F: GoSub _TOP_S GoSub _BOTTOM_H Goto _RIGHT_S _2520: GoSub _TOP_H GoSub _BOTTOM_H Goto _RIGHT_S _2521: GoSub _TOP_H GoSub _BOTTOM_S GoSub _RIGHT_H Goto _CENTER_H _2522: GoSub _TOP_S GoSub _BOTTOM_H GoSub _RIGHT_H Goto _CENTER_H _2523: GoSub _TOP_H GoSub _BOTTOM_H Goto _RIGHT_H _2524: GoSub _TOP_S GoSub _BOTTOM_S Goto _LEFT_S _2525: GoSub _TOP_S GoSub _BOTTOM_S Goto _LEFT_H _2526: GoSub _TOP_H GoSub _BOTTOM_S Goto _LEFT_S _2527: GoSub _TOP_S GoSub _BOTTOM_H Goto _LEFT_S _2528: GoSub _TOP_H GoSub _BOTTOM_H Goto _LEFT_S _2529: GoSub _TOP_H GoSub _BOTTOM_S GoSub _LEFT_H Goto _CENTER_H _252A: GoSub _TOP_S GoSub _BOTTOM_H GoSub _LEFT_H Goto _CENTER_H _252B: GoSub _TOP_H GoSub _BOTTOM_H Goto _LEFT_H _252C: GoSub _LEFT_S GoSub _RIGHT_S Goto _BOTTOM_S _252D: GoSub _LEFT_H GoSub _RIGHT_S Goto _BOTTOM_S _252E: GoSub _LEFT_S GoSub _RIGHT_H Goto _BOTTOM_S _252F: GoSub _LEFT_H GoSub _RIGHT_H Goto _BOTTOM_S _2530: GoSub _LEFT_S GoSub _RIGHT_S Goto _BOTTOM_H _2531: GoSub _LEFT_H GoSub _RIGHT_S GoSub _BOTTOM_H Goto _CENTER_H _2532: GoSub _LEFT_S GoSub _RIGHT_H GoSub _BOTTOM_H Goto _CENTER_H _2533: GoSub _LEFT_H GoSub _RIGHT_H Goto _BOTTOM_H _2534: GoSub _LEFT_S GoSub _RIGHT_S Goto _BOTTOM_S _2535: GoSub _LEFT_H GoSub _RIGHT_S Goto _BOTTOM_S _2536: GoSub _LEFT_S GoSub _RIGHT_H Goto _BOTTOM_S _2537: GoSub _LEFT_H GoSub _RIGHT_H Goto _BOTTOM_S _2538: GoSub _LEFT_S GoSub _RIGHT_S Goto _BOTTOM_H _2539: GoSub _LEFT_H GoSub _RIGHT_S GoSub _BOTTOM_H Goto _CENTER_H _253A: GoSub _LEFT_S GoSub _RIGHT_H GoSub _BOTTOM_H Goto _CENTER_H _253B: GoSub _LEFT_H GoSub _RIGHT_H Goto _BOTTOM_H _253C: GoSub _LEFT_S GoSub _RIGHT_S GoSub _TOP_S Goto _BOTTOM_S _253D: GoSub _LEFT_H GoSub _RIGHT_S GoSub _TOP_S Goto _BOTTOM_S _253E: GoSub _LEFT_S GoSub _RIGHT_H GoSub _TOP_S Goto _BOTTOM_S _253F: GoSub _LEFT_H GoSub _RIGHT_H GoSub _TOP_S Goto _BOTTOM_S _2540: GoSub _LEFT_S GoSub _RIGHT_S GoSub _TOP_H Goto _BOTTOM_S _2541: GoSub _LEFT_S GoSub _RIGHT_S GoSub _TOP_S Goto _BOTTOM_H _2542: GoSub _LEFT_S GoSub _RIGHT_S GoSub _TOP_H Goto _BOTTOM_H _2543: GoSub _LEFT_H GoSub _RIGHT_S GoSub _TOP_H GoSub _CENTER_H Goto _BOTTOM_S _2544: GoSub _LEFT_S GoSub _RIGHT_H GoSub _TOP_H GoSub _CENTER_H Goto _BOTTOM_S _2545: GoSub _LEFT_H GoSub _RIGHT_S GoSub _TOP_S GoSub _CENTER_H Goto _BOTTOM_H _2546: GoSub _LEFT_S GoSub _RIGHT_H GoSub _TOP_S GoSub _CENTER_H Goto _BOTTOM_H _2547: GoSub _LEFT_H GoSub _RIGHT_H GoSub _TOP_H Goto _BOTTOM_S _2548: GoSub _LEFT_H GoSub _RIGHT_H GoSub _TOP_S Goto _BOTTOM_H _2549: GoSub _LEFT_H GoSub _RIGHT_S GoSub _TOP_H GoSub _CENTER_H Goto _BOTTOM_H _254A: GoSub _LEFT_S GoSub _RIGHT_H GoSub _TOP_H Goto _BOTTOM_H _254B: GoSub _LEFT_H GoSub _RIGHT_H GoSub _TOP_H Goto _BOTTOM_H _2550: GoSub _LEFT_H GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Goto _RIGHT_S _2551: GoSub _TOP_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Goto _BOTTOM_S _2552: GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _RIGHT_S Paint.Operator = Paint.OperatorOver Goto _BOTTOM_S _2553: GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _BOTTOM_S Paint.Operator = Paint.OperatorOver Goto _RIGHT_S _2554: GoSub _CENTER_H GoSub _RIGHT_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _RIGHT_S Goto _BOTTOM_S _2555: GoSub _LEFT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Paint.Operator = Paint.OperatorOver Goto _BOTTOM_S _2556: GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _BOTTOM_S Paint.Operator = Paint.OperatorOver Goto _LEFT_S _2557: GoSub _CENTER_H GoSub _LEFT_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Goto _BOTTOM_S _2558: GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _RIGHT_S Paint.Operator = Paint.OperatorOver Goto _TOP_S _2559: GoSub _TOP_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Paint.Operator = Paint.OperatorOver Goto _RIGHT_S _255A: GoSub _CENTER_H GoSub _RIGHT_H GoSub _TOP_H Paint.Operator = Paint.OperatorClear GoSub _RIGHT_S Goto _TOP_S _255B: GoSub _LEFT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Paint.Operator = Paint.OperatorOver Goto _TOP_S _255C: GoSub _TOP_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Paint.Operator = Paint.OperatorOver Goto _LEFT_S _255D: GoSub _CENTER_H GoSub _LEFT_H GoSub _TOP_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Goto _TOP_S _255E: GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _RIGHT_S Paint.Operator = Paint.OperatorOver GoSub _TOP_S Goto _BOTTOM_S _255F: GoSub _RIGHT_S GoSub _TOP_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Goto _BOTTOM_S _2560: GoSub _TOP_H GoSub _BOTTOM_H GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S GoSub _BOTTOM_S Goto _RIGHT_S _2561: GoSub _LEFT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Paint.Operator = Paint.OperatorOver GoSub _TOP_S Goto _BOTTOM_S _2562: GoSub _LEFT_S GoSub _TOP_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Goto _BOTTOM_S _2563: GoSub _TOP_H GoSub _BOTTOM_H GoSub _LEFT_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S GoSub _BOTTOM_S Goto _LEFT_S _2564: GoSub _BOTTOM_S GoSub _LEFT_H GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Goto _RIGHT_S _2565: GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _BOTTOM_S Paint.Operator = Paint.OperatorOver GoSub _LEFT_S Goto _RIGHT_S _2566: GoSub _LEFT_H GoSub _RIGHT_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S GoSub _RIGHT_S Goto _BOTTOM_S _2567: GoSub _TOP_S GoSub _LEFT_H GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Goto _RIGHT_S _2568: GoSub _TOP_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Paint.Operator = Paint.OperatorOver GoSub _LEFT_S Goto _RIGHT_S _2569: GoSub _LEFT_H GoSub _RIGHT_H GoSub _TOP_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S GoSub _RIGHT_S Goto _TOP_S _256A: GoSub _TOP_S GoSub _BOTTOM_S GoSub _LEFT_H GoSub _RIGHT_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S Goto _RIGHT_S _256B: GoSub _LEFT_S GoSub _RIGHT_S GoSub _TOP_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _TOP_S Goto _BOTTOM_S _256C: GoSub _LEFT_H GoSub _RIGHT_H GoSub _TOP_H GoSub _BOTTOM_H Paint.Operator = Paint.OperatorClear GoSub _LEFT_S GoSub _RIGHT_S GoSub _TOP_S Goto _BOTTOM_S _256D: _256E: _256F: _2570: Goto _DRAW_CHAR _2571: Paint.AntiAlias = False Paint.LineWidth = L Paint.MoveTo(0, H) Paint.LineTo(W, 0) Paint.Stroke Return _2572: Paint.AntiAlias = False Paint.LineWidth = L Paint.MoveTo(0, 0) Paint.LineTo(W, H) Paint.Stroke Return _2573: GoSub _2571 Goto _2572 _2574: Goto _LEFT_S _2575: Goto _TOP_S _2576: Goto _RIGHT_S _2577: Goto _BOTTOM_S _2578: Goto _LEFT_H _2579: Goto _TOP_H _257A: Goto _RIGHT_H _257B: Goto _BOTTOM_H _257C: GoSub _LEFT_S Goto _RIGHT_H _257D: GoSub _TOP_S Goto _BOTTOM_H _257E: GoSub _RIGHT_S Goto _LEFT_H _257F: GoSub _BOTTOM_S Goto _TOP_H _2580: Paint.FillRect(0, 0, W, H / 2, iBg) Return _2581: _2582: _2583: _2584: _2585: _2586: _2587: _2588: Paint.FillRect(0, H, W, -Max(1, (C - &H2580) * H / 8), iBg) Return _2589: _258A: _258B: _258C: _258D: _258E: _258F: Paint.FillRect(0, 0, Max(1, W - (C - &H2588) * W / 8), H, iBg) Return _2590: Paint.FillRect(W, 0, -W / 2, H, iBg) Return _2591: If Not $hBrushLight Then $hBrushLight = Image.Load("brush_light.png") Paint.Brush = Paint.Image($hBrushLight, -XB, -YB) Goto _DRAW_BRUSH _2592: If Not $hBrushMedium Then $hBrushMedium = Image.Load("brush_medium.png") Paint.Brush = Paint.Image($hBrushMedium, -XB, -YB) Goto _DRAW_BRUSH _2593: If Not $hBrushDark Then $hBrushDark = Image.Load("brush_dark.png") Paint.Brush = Paint.Image($hBrushDark, -XB, -YB) Goto _DRAW_BRUSH _2594: Paint.FillRect(0, 0, W, H / 8, iBg) Return _2595: Paint.FillRect(W * 7 / 8, 0, W / 8, H, iBg) Return _2596: Paint.FillRect(0, H / 2, W / 2, H / 2, iBg) Return _2597: Paint.FillRect(W / 2, H / 2, W / 2, H / 2, iBg) Return _2598: Paint.FillRect(0, 0, W / 2, H / 2, iBg) Return _2599: Paint.FillRect(0, 0, W / 2, H, iBg) Paint.FillRect(0, H, W, -H / 2, iBg) Return _259A: GoSub _2598 Goto _2597 _259B: Paint.FillRect(0, 0, W, H / 2, iBg) Paint.FillRect(0, 0, W / 2, H, iBg) Return _259C: GoSub _2580 Goto _2590 _259D: Paint.FillRect(W / 2, 0, W / 2, H / 2, iBg) Return _259E: GoSub _259D Goto _2596 _259F: Paint.FillRect(W, 0, -W / 2, H, iBg) Paint.FillRect(0, H, W, -H / 2, iBg) Return _DRAW_BRUSH: Paint.Rectangle(0, 0, W, H) Paint.Fill Return _LEFT_S: Paint.FillRect(0, YC - DL, XC + L - DL, L, iBg) Return _RIGHT_S: Paint.FillRect(XC - DL, YC - DL, W - XC + DL, L, iBg) Return _TOP_S: Paint.FillRect(XC - DL, 0, L, YC + L - DL, iBg) Return _BOTTOM_S: Paint.FillRect(XC - DL, YC - DL, L, H - YC + DL, iBg) Return _LEFT_H: Paint.FillRect(0, YC - DL3, XC + L - DL, L3, iBg) Return _RIGHT_H: Paint.FillRect(XC - DL, YC - DL3, W - XC + DL, L3, iBg) Return _TOP_H: Paint.FillRect(XC - DL3, 0, L3, YC + L - DL, iBg) Return _BOTTOM_H: Paint.FillRect(XC - DL3, YC - DL, L3, H - YC + DL, iBg) Return _CENTER_H: Paint.FillRect(XC - DL3, YC - DL3, L3, L3, iBg) Return _CENTER_SH: Paint.FillRect(XC - DL3, YC - DL, L3, L, iBg) Return _CENTER_SV: Paint.FillRect(XC - DL, YC - DL3, L, L3, iBg) Return _DRAW_CHAR: Paint.Font = hFont Paint.DrawText(String.Chr$(C), 0, 0, W, H, Align.Center) Return End Private Sub IsWordChar(C As String) As Boolean If Len(C) = 1 Then If IsLetter(C) Or If IsDigit(C) Then Return True If InStr(":@-./_~?&=%+#", C) Then Return True Else Return True Endif End Public Sub SelectCurrentWord(X As Integer, Y As Integer) Dim hLine As CTerminalLine Dim XR As Integer Dim C As String Dim XL As Integer Dim bCheck As Boolean Try hLine = Lines[Y] If Error Then Return If X < 0 Or If X >= $W Or If X >= hLine.Length Then Return C = String.Mid$(hLine.Text, X, 1) bCheck = Not IsWordChar(C) XR = X + 1 While XR <= hLine.Length C = String.Mid$(hLine.Text, XR, 1) If IsWordChar(C) = bCheck Then Break Inc XR Wend XL = X - 1 While XL > 0 C = String.Mid$(hLine.Text, XL, 1) If IsWordChar(C) = bCheck Then Break Dec XL Wend GotoMouse(XL, Y, True) GotoMouse(XR - 1, Y, False) End Public Sub SelectAll() GotoMouse(0, 0, True) GotoMouse(0, Lines.Count, False) End Private Function Count_Read() As Integer Return Lines.Count End Public Sub SetLink(Optional X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As Boolean If $LX1 = X1 And If $LY1 = Y1 And If $LX2 = X2 And If $LY2 = Y2 Then Return True $LX1 = X1 $LY1 = Y1 $LX2 = X2 $LY2 = Y2 End Private Sub Bell() GetView()._Bell() End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/TerminalView.class000066400000000000000000001116471411575327000266560ustar00rootroot00000000000000' Gambas class file Inherits UserControl Export Public Const _Properties As String = "*,Border=True,AutoResize=True,Limit=1000,Blink,ShowScrollBar,ShowLink,ReadOnly,WindowCommands" Public Const _DrawWith As String = "-" Public Const _Group As String = "View" '' This event is raised when the process running in the terminal terminates. Event Kill '' This event is raised when the terminal wants to change its title. Event Title(Title As String) '' This event is raised when the terminal size has changed. Event Resize(W As Integer, H As Integer) '' This event is raised to check if the text under the mouse is a link. '' '' The [./link] property will return an object that gives you the current line contents, and the position of the cursor in that line. '' Then call the [../selectlink] method to define which part of the current line is a link. Otherwise do nothing. Event Link '' This event is raised when a link has been clicked. '' '' The [./link] property will return an object that gives you the text of the link. Event Click '' This event is raised when the terminal wants to emit a bell Event Bell '' Return or set if the terminal view has a border. Property Border As Boolean '' Return the current terminal screen attributes. Property Read Attr As TerminalAttr 'Property Foreground As Integer '' Return the column position of the terminal cursor. Property Read Column As Integer '' Return the line position of the terminal cursor. Property Read Line As Integer '' Return or set the maximum size of the terminal screen buffer. '' '' [[ warning '' The actual buffer size will not be lower than the screen lines count. '' ]] Property Limit As Integer '' Return or set the terminal type. '' '' `"VT100"` is the only type that is supported at the moment. Property Type As String '' Return or set if the terminal displays its main screen or its alternate screen. Property AlternateScreen As Boolean '' Return or set if the terminal cursor blinks. Property Blink As Boolean '' Return the contents of the terminal. Property Read Text As String '' Return or set if the terminal view shows its scrollbar. Property ShowScrollBar As Boolean '' Return or set the terminal view background color. Property Background As Integer '' Return or set the terminal view foreground color. Property Foreground As Integer '' Return the terminal view lines count. Property Read Count As Integer '' Return or set the terminal title. Property Title As String '' Return of set if the terminal output is suspended. Property Suspended As Boolean '' Return or set if the terminal width automatically fits the terminal view. Property AutoResize As Boolean '' Return or set the terminal screen width in characters. '' '' [[ warning '' If the [../autoresize] property is set, then the return value is the effective width, which may be different of what you have set. '' ]] Property ScreenWidth As Integer '' Return the terminal character width in pixels. Property Read CharWidth As Integer '' Return the terminal line height in pixels. Property Read LineHeight As Integer '' Return or set if the terminal is read-only. Property ReadOnly As Boolean '' Return or set if terminal can be effected by XTerm 't' escape sequences. Property WindowCommands As Boolean Use $bWindowCommands '' Return or set if the terminal detects URLs and makes them clickable. Property ShowLink As Boolean Use $bShowLink '' Return an object that represents the information about the link under the mouse cursor. Property Read Link As TerminalLink Static Private $cShortcut As Collection Private $hPanel As Panel Private $hView As DrawingArea Private $hScroll As ScrollBar Private $aScreen As New TerminalScreen[2] Private $hScreen As TerminalScreen Private $H As Integer Private $W As Integer = 80 Private $bAutoResize As Boolean = True Private $LH As Integer Private $iAscent As Integer Private $CW As Integer Private $hCacheFont As Image Private $bMouseDown As Boolean Private $iLimit As Integer = 1000 Private $bHideCursor As Boolean Private $hMouseTimer As Timer Private $bTermUseMouse As Boolean Private $hProcess As Process Private $hPipeIn As Stream ' Added this BG to support pipe io to and from the ScreenTop Private $hPipeOut As Stream ' added this BG to support pipe io to and from the screen Private $oPreprocess As Object ' Added to allow call back to handle data before the terminal does Private $fStart As Float Private $hFilter As TerminalFilter Public _DisableFilter As Integer Private $sType As String Private $hCursorTimer As Timer Private $bBlink As Boolean Private $sBuffer As String Private $hOutputTimer As Timer Public _HasBlink As Boolean Public _Blink As Boolean Private $hBlinkTimer As Timer Private $bSuspend As Boolean Private $iMouseX As Integer Private $iMouseY As Integer Private $bShowScrollBar As Boolean Private $hResizeTimer As Timer Private $sTitle As String Private $fLastMouseDownTime As Float Private $nClick As Integer Private $fLastMouseDownX As Integer Private $fLastMouseDownY As Integer Private mnuPopup As Menu Private $iScrollY As Integer Private $iTargetY As Integer Private $hTimerScroll As Timer Private $bIgnoreNextAnimation As Boolean Private $bReadOnly As Boolean Private Const PADDING As Integer = 2 Private $iDisableUpdateSize As Integer Private $iLinkLastX As Integer = -1 Private $iLinkLastY As Integer = -1 Private $hTerminalLink As TerminalLink Private $bSetLink As Boolean Private $iLinkY As Integer Private $iLinkLength As Integer Private $bBell As Boolean Private $hTimerBell As Timer 'Private $bDoubleFont As Boolean = True '' Create a new TerminalView control Public Sub _new() If Not $cShortcut Then $cShortcut = [ "CTRL+SHIFT+A": "SelectAll", "CTRL+SHIFT+C": "Copy", "CTRL+SHIFT+V": "Paste"] Endif Me.Font = Font["monospace"] $hPanel = New Panel(Me) As "Panel" '$hPanel.Arrangement = Arrange.Fill $hPanel.Border = Border.Plain $hView = New DrawingArea($hPanel) As "View" $hView.Border = False $hView.Focus = True $hView.Tracking = True $hView.Mouse = Mouse.Text $hView.Drop = True '$hView.NoBackground = True Me.Background = Color.TextForeground Me.Foreground = Color.TextBackground $hScroll = New ScrollBar($hPanel) As "ScrollBar" $hScroll.Ignore = True $hScroll.Mouse = Mouse.Arrow $hScroll.Hide Me.Proxy = $hView $hTerminalLink = New TerminalLink As "TerminalLink" Me.Type = "VT100" $aScreen[0] = New TerminalScreen As "TerminalScreen" $aScreen[1] = New TerminalScreen As "TerminalScreen" $hScreen = $aScreen[0] UpdateFont UpdateScreen '$hRefreshTimer = New Timer As "RefreshTimer" '$hRefreshTimer.Delay = 50 $hOutputTimer = New Timer As "OutputTimer" $hOutputTimer.Delay = 50 $hBlinkTimer = New Timer As "BlinkTimer" $hBlinkTimer.Delay = 500 $hResizeTimer = New Timer As "ResizeTimer" $hResizeTimer.Delay = 100 End '' Reset the terminal. '' '' - The terminal output is resumed if it was suspended. '' - The mouse mode is disabled. '' - All terminal modes are reset to their defaults. '' - The cursor position is reset, unless the ~KeepCursor~ argument is TRUE. '' - The terminal attributes are reset to their defaults. Public Sub Reset(Optional KeepCursor As Boolean) Dim X As Integer Dim Y As Integer If KeepCursor Then X = $hScreen.Column Y = $hScreen.Line + $hScreen.ScreenTop() Endif _Suspend(False) _UseMouse(False) $hFilter.Reset $hScreen.Reset UpdateFont If KeepCursor Then $hScreen.Goto(X, Y) Endif Refresh End '' Clear the terminal screen contents, and reset the terminal. Public Sub Clear() $hScreen.Clear Reset() End '' Refresh the terminal contents. Public Sub Refresh() _HasBlink = False $hView.Refresh End Public Sub _RefreshLine(Y As Integer) Y -= $hScroll.Value If Y >= 0 And If Y < $H Then $hView.Refresh(0, Y * $LH, $hView.ClientW, $LH) Endif End Public Sub _DisableUpdateSize() Inc $iDisableUpdateSize End Public Sub _EnableUpdateSize() Dec $iDisableUpdateSize End Public Sub _UpdateSize() If $iDisableUpdateSize Then Return $hScroll.MinValue = 0 $hScroll.MaxValue = Max(0, $hScreen.Lines.Count - $H) $hScroll.PageStep = $H End Private Sub UpdateScreen() Dim W, H As Integer H = Me.H - PADDING * 2 If Me.Border Then H -= 2 H = Max(2, H \ $LH) If $bAutoResize Then W = Me.W - PADDING * 2 If Me.Border Then W -= 2 If $bShowScrollBar Then W -= $hScroll.W W = Max(2, W \ $CW) Else W = $W Endif If $hScreen.Resize(W, H) Then $H = H _UpdateSize Refresh 'If $hProcess Then $hProcess.Term.Resize($hScreen.Width, $hScreen.Height) If $hProcess Then $hResizeTimer.Restart Raise Resize(W, H) Endif End Public Sub ResizeTimer_Timer() If $hProcess Then Try $hProcess.Term.Resize($hScreen.Width, $hScreen.Height) $hResizeTimer.Stop End Private Sub UpdateFont() Dim sText As String Dim I As Integer Dim L As Integer Dim W As Integer ' Dim hZoom As Image Dim X As Integer Dim C As Integer With $hView.Font $LH = .Height $iAscent = .Ascent sText = String$(8, "mM0_@$#W") $CW = CInt(.TextWidth(sText) / Len(sText) + 0.5) W = $CW \ 8 $CW += W \ 2 $hCacheFont = New Image($CW * 416, $LH * 2, Color.Transparent) Paint.Begin($hCacheFont) Paint.Font = $hView.Font For I = 33 To 126 C = I GoSub DRAW_CHAR Next For I = 160 To 255 C = I GoSub DRAW_CHAR Next For I = 256 To 415 C = &H2500 + I - 256 GoSub DRAW_CHAR Next Paint.End ' If $bDoubleFont Then ' hZoom = New Image($hCacheFont.W * 2, $hCacheFont.H * 2, Color.Transparent) ' Paint.Begin(hZoom) ' Paint.ZoomImage($hCacheFont, 2, 0, 0) ' Paint.End ' $hCacheFont = hZoom ' $CW *= 2 ' $LH *= 2 ' Endif ' Make bold font Paint.Begin($hCacheFont) For I = 33 To 126 GoSub DRAW_BOLD_CHAR Next For I = 160 To 415 GoSub DRAW_BOLD_CHAR Next Paint.End '$hCacheFont.Save("~/cache.png") End With UpdateScreen Return DRAW_CHAR: Paint.Operator = Paint.OperatorSource Paint.FillRect(I * $CW, 0, $CW, $LH * 2, Color.Transparent) Paint.Operator = Paint.OperatorOver Paint.ClipRect = Rect(I * $CW, 0, $CW, $LH) If C < 256 Then Paint.Background = Color.White Paint.DrawText(String.Chr(C), I * $CW, 0, $CW, $LH, Align.Center) Else TerminalScreen.DrawLineChar(C, I * $CW, 0, $CW, $LH, 0, 0, False) Endif Return DRAW_BOLD_CHAR: X = I * $CW Paint.ClipRect = Rect(X, $LH, $CW, $LH) Paint.DrawImage($hCacheFont, X, $LH, $CW, $LH,, Rect(X, 0, $CW, $LH)) W = $CW \ 8 + 1 For L = 1 To W \ 2 Paint.DrawImage($hCacheFont, X + L, $LH, $CW, $LH,, Rect(X, 0, $CW, $LH)) Next If Odd(W) Then Paint.Background = Color.SetAlpha(Color.White, 64) Paint.DrawImage($hCacheFont, X + L, $LH, $CW, $LH,, Rect(X, 0, $CW, $LH)) Endif Return End Public Sub View_Font() UpdateFont End Public Sub Panel_Arrange() If System.RightToLeft Then $hScroll.Move(0, 0, Style.ScrollbarSize, $hPanel.ClientH) Else $hScroll.Move($hPanel.ClientW - Style.ScrollbarSize, 0, Style.ScrollbarSize, $hPanel.ClientH) Endif If $bShowScrollBar Then If System.RightToLeft Then $hView.Move($hScroll.W + PADDING, PADDING, $hPanel.ClientW - $hScroll.W - PADDING * 2, $hPanel.ClientH - PADDING * 2) Else $hView.Move(PADDING, PADDING, $hPanel.ClientW - $hScroll.W - PADDING * 2, $hPanel.ClientH - PADDING * 2) Endif Else $hView.Move(PADDING, PADDING, $hPanel.ClientW - PADDING * 2, $hPanel.ClientH - PADDING * 2) Endif UpdateScreen End Private Sub GetScrollY() As Integer Return $iScrollY '$hScroll.Value End Public Sub BlinkTimer_Timer() _Blink = Not _Blink Refresh End Public Sub View_Draw() Dim bDarkBackground As Boolean If $sBuffer Then OutputTimer_Timer ApplyLimit bDarkBackground = Color[Style.BackgroundOf($hView)].Luminance < Color[Style.ForegroundOf($hView)].Luminance 'Debug bInvertColor $hScreen.Paint(GetScrollY(), $LH, $CW, $iAscent, $bHideCursor, $hCacheFont, bDarkBackground) If $bTermUseMouse Then Paint.FillRect($iMouseX * $CW, $iMouseY * $LH, $CW, $LH, Color.SetAlpha(Color.SelectedBackground, 64)) Endif If _HasBlink Then If Not $hBlinkTimer.Enabled Then $hBlinkTimer.Start Else $hBlinkTimer.Stop Endif If $bSuspend Then Paint.FillRect(0, 0, Paint.W, Paint.H, Color.SetAlpha($hView.Background, 128)) If $bBell Then Paint.FillRect(0, 0, Paint.W, Paint.H, Color.SetAlpha($hView.Foreground, 128)) End '' Move the cursor to the specified position. Public Sub Goto(X As Integer, Y As Integer) $hScreen.Goto(X, Y) EnsureVisible End Private Function Border_Read() As Boolean Return $hPanel.Border <> Border.None End Private Sub Border_Write(Value As Boolean) $hPanel.Border = If(Value, Border.Plain, Border.None) End Private Function Attr_Read() As TerminalAttr Return $hScreen.Attr End Public Sub _EnsureVisibleAt((X) As Integer, Y As Integer) Dim H As Integer H = $hView.ClientH \ $LH If $hScroll.Value < (Y - H + 1) Then $hScroll.Value = Y - H + 1 Else If $hScroll.Value > Y Then $hScroll.Value = Y Endif End '' Ensure that the cursor position is visible, by scrolling the screen if necessary. Public Sub EnsureVisible() _EnsureVisibleAt($hScreen.X, $hScreen.Y) End ' Private Function Foreground_Read() As Integer ' ' Return Super.Foreground ' ' End ' ' Private Sub Foreground_Write(Value As Integer) ' ' Super.Foreground = Value ' UpdateFont ' ' End Private Sub GotoMouse(bStart As Boolean) Dim X As Integer Dim Y As Integer X = CInt((Mouse.ScreenX - $hView.ScreenX) / $CW + 0.4) Y = (GetScrollY() + Mouse.ScreenY - $hView.ScreenY) \ $LH 'Print x, y $hScreen.GotoMouse(X, Y, bStart) End Public Sub _SelectLink(Start As Integer, Length As Integer, Type As String) Dim Y1 As Integer Dim X1 As Integer Dim Y2 As Integer Dim iEnd As Integer Dim X2 As Integer Dim L As Integer If Not $bSetLink Then Return If Start < 0 Or If Start >= $iLinkLength Then Return iEnd = Min(Start + Length, $iLinkLength) - 1 Y1 = $iLinkY Do L = $hScreen.GetLineLength(Y1) If Start < L Then Break Inc Y1 Start -= L iEnd -= L Loop X1 = Start Y2 = Y1 Do L = $hScreen.GetLineLength(Y2) If iEnd < L Then Break Inc Y2 iEnd -= L Loop X2 = iEnd + 1 If Y2 > Y1 Or If X2 > X1 Then If Not $hScreen.SetLink(X1, Y1, X2, Y2) Then $hTerminalLink._Type = Type Refresh Endif Endif End Private Sub CheckUrl() As Boolean Dim sLine As String Dim X As Integer Dim sCar As String Dim X2 As Integer Dim L As Integer sLine = $hTerminalLink._Line X = $hTerminalLink._Pos X2 = X L = String.Len(sLine) While X > 0 sCar = String.Mid$(sLine, X, 1) If IsSpace(sCar) Or If InStr("'\"", sCar) Then Break Dec X Wend Inc X2 While X2 <= L sCar = String.Mid$(sLine, X2, 1) If IsSpace(sCar) Or If InStr("'\"", sCar) Then Break Inc X2 Wend L = X2 - X - 1 sLine = String.Mid$(sLine, X + 1, L) If sLine Begins "http://" Or If sLine Begins "https://" Then _SelectLink(X, L, "url") Return True Endif End Private Sub ResetLink() If Not $hScreen.SetLink() Then Refresh $hTerminalLink._Text = "" $hTerminalLink._Type = "" $hTerminalLink._Line = "" $hTerminalLink._Pos = 0 End Private Sub CheckLink() Dim X As Integer Dim Y As Integer Dim sLine As String Dim I As Integer Dim Y1 As Integer Dim Y2 As Integer Dim L As Integer Dim bStop As Boolean Dim bHasLink As Boolean Dim hLine As CTerminalLine If Not $bShowLink Then Return bHasLink = $hScreen.HasLink() X = CInt((Mouse.ScreenX - $hView.ScreenX) / $CW + 0.4) Y = (GetScrollY() + Mouse.ScreenY - $hView.ScreenY) \ $LH If X = $iLinkLastX And If Y = $iLinkLastY Then Return $iLinkLastX = X $iLinkLastY = Y ResetLink() If Y < 0 Or If Y >= $hScreen.Lines.Count Then Goto _RETURN If X < 0 Or If X >= $hScreen.GetLineLength(Y) Then Goto _RETURN Y1 = Y While Y1 > 0 hLine = $hScreen.Lines[Y1 - 1] If Not hLine Or If hLine.NewLine Then Break Dec Y1 Wend Y2 = Y While Y2 < $hScreen.Lines.Max hLine = $hScreen.Lines[Y2] If Not hLine Or If hLine.NewLine Then Break Inc Y2 Wend For I = Y1 To Y2 hLine = $hScreen.Lines[I] If hLine Then With hLine sLine &= .Text If I < Y Then X += .Length L += .Length End With Endif Next If Not sLine Then Goto _RETURN $bSetLink = True $iLinkY = Y1 $iLinkLength = L $hTerminalLink._Line = sLine $hTerminalLink._Pos = X bStop = Raise Link If Not bStop Then CheckUrl() $bSetLink = False _RETURN: If $hScreen.HasLink() <> bHasLink Then If bHasLink Then $hView.Mouse = Mouse.Text Else $hView.Mouse = Mouse.Pointing Endif Endif End Private Sub SelectCurrentLine() Dim Y As Integer Y = (GetScrollY() + Mouse.ScreenY - $hView.ScreenY) \ $LH 'Print x, y $hScreen.GotoMouse(0, Y, True) $hScreen.GotoMouse(0, Y + 1, False) End Private Sub SelectCurrentWord() Dim X As Integer Dim Y As Integer X = CInt((Mouse.ScreenX - $hView.ScreenX) / $CW + 0.4) Y = CInt((GetScrollY() + Mouse.ScreenY - $hView.ScreenY) / $LH) 'Print x, y $hScreen.SelectCurrentWord(X, Y) End Private Sub UpdateMouse() As Boolean Dim X As Integer Dim Y As Integer X = (Mouse.ScreenX - $hView.ScreenX) \ $CW Y = (Mouse.ScreenY - $hView.ScreenY) \ $LH If X = $iMouseX And If Y = $iMouseY Then Return _RefreshLine($iMouseY + $hScroll.Value) _RefreshLine(Y + $hScroll.Value) $iMouseX = X $iMouseY = Y Return True End Private Sub SendMouseEvent(iType As Integer, Optional bIfMove As Boolean) Dim bHasMoved As Boolean If $hOutputTimer.Enabled Then $hOutputTimer.Trigger bHasMoved = UpdateMouse() If bIfMove And If Not bHasMoved Then Return If $hProcess Then $hFilter.SendMouseEvent($hProcess, $iMouseX, $iMouseY, iType) $fStart = 0 End Private Sub OpenLink() As Boolean Dim bStop As Boolean Dim sLink As String If Not $hScreen.HasLink() Then Return True sLink = $hScreen.GetSelectedText(True) $hTerminalLink._Text = sLink bStop = Raise Click() If Not bStop Then If sLink Begins "http://" Or If sLink Begins "https://" Then If Component.IsLoaded("gb.desktop") Then Try Desktop.Open(sLink) If Error Then Message.Error(("Unable to open selected URL.") & "\n\n" & Error.Text) Endif Endif Endif End Public Sub View_MouseDown() If $fLastMouseDownTime And If (Timer - $fLastMouseDownTime) * 1000 <= Application.DblClickTime And If Mouse.ScreenX = $fLastMouseDownX And If Mouse.ScreenY = $fLastMouseDownY Then Inc $nClick Else $nClick = 1 Endif $fLastMouseDownTime = Timer $fLastMouseDownX = Mouse.ScreenX $fLastMouseDownY = Mouse.ScreenY If $bTermUseMouse Then SendMouseEvent($hFilter.MouseDown) Else If $nClick = 2 Then If Mouse.Left Then SelectCurrentWord $bMouseDown = True Endif Else If $nClick = 3 Then If Mouse.Left Then SelectCurrentLine $bMouseDown = True Endif Else If Mouse.Left Then If OpenLink() Then $bMouseDown = True GotoMouse(True) GotoMouse(False) Endif Else If Mouse.Middle Then Clipboard.Current = Clipboard.Selection Paste() Clipboard.Current = Clipboard.Default Endif Endif 'Print "MouseDown" End Public Sub View_MouseMove() If $bTermUseMouse Then SendMouseEvent($hFilter.MouseMove, True) Else If $bMouseDown Then If Not $hMouseTimer Then $hMouseTimer = New Timer(50) As "MouseTimer" GotoMouse(False) Else If Not $bShowScrollBar Then If System.RightToLeft Then If Mouse.X < $hScroll.W And If $hScroll.MaxValue Then $hScroll.Raise $hScroll.Show Else $hScroll.Hide Endif Else If Mouse.X >= ($hView.ClientW - $hScroll.W) And If $hScroll.MaxValue Then $hScroll.Raise $hScroll.Show Else $hScroll.Hide Endif Endif Endif CheckLink Endif End Public Sub ScrollBar_Leave() If Not $bShowScrollBar Then $hScroll.Hide End Public Sub View_MouseUp() Dim sText As String If $bTermUseMouse Then SendMouseEvent($hFilter.MouseUp) Else If $hMouseTimer Then $hMouseTimer.Stop $hMouseTimer = Null Endif If $bMouseDown Then sText = $hScreen.GetSelectedText() If sText Then Clipboard.Current = Clipboard.Selection Clipboard.Copy(sText, "text/plain") Clipboard.Current = Clipboard.Default Endif Endif Endif $bMouseDown = False End Public Sub View_MouseWheel() Dim hOutput As Stream Dim I As Integer If Mouse.Control Then If Mouse.Forward Then $hView.Font.Size = Min(32, $hView.Font.Size * Sqr(Sqr(2))) Else $hView.Font.Size = Max(6, $hView.Font.Size / Sqr(Sqr(2))) Endif Else If $bTermUseMouse Then SendMouseEvent($hFilter.MouseDown) Else If $hScroll.MaxValue = 0 Then hOutput = GetOutputStream() If hOutput Then For I = 1 To Abs(Mouse.Delta) $hFilter.InputTo(Me, $hScreen, hOutput, If(Mouse.Forward, Key.Up, Key.Down), "") Next EnsureVisible Endif Else If Mouse.Forward Then $hScroll.Value -= 3 Else $hScroll.Value += 3 Endif Endif Endif Stop Event End Private Sub GetOutputStream() As Stream If $hPipeOut Then Return $hPipeOut If $hProcess Then Return $hProcess End Public Sub View_KeyPress() Dim hOutput As Stream Dim sAction As String Try sAction = $cShortcut[String.UCase(Shortcut.FromKey())] If sAction Then Select Case sAction Case "Copy" Copy() Case "Paste" If $bReadOnly Then Goto STOP_EVENT Paste() Case "SelectAll" SelectAll End Select Goto STOP_EVENT Endif If $bReadOnly Then Goto STOP_EVENT hOutput = GetOutputStream() If Not hOutput Then Return If $hOutputTimer.Enabled Then $hOutputTimer.Trigger $hScroll.Value = $hScroll.MaxValue If $hFilter.InputTo(Me, $hScreen, hOutput, Key.Code, Key.Text, Key.Normal, Key.Shift, Key.Control) Then EnsureVisible $fStart = 0 Stop Event Endif Return STOP_EVENT: Stop Event End Private Function Column_Read() As Integer Return $hScreen.Column End Private Function Line_Read() As Integer Return $hScreen.Line End Private Sub ApplyLimit() Dim iLimit As Integer iLimit = $iLimit If iLimit <= 0 Then Return If iLimit <= ($hView.ClientH \ $LH) Then Return $hScreen.ApplyLimit(iLimit) End Private Function Limit_Read() As Integer Return $iLimit End Private Sub Limit_Write(Value As Integer) $iLimit = Value ApplyLimit End Private Sub UpdateCursorTimer() If $hView.HasFocus And If $bBlink And If Not $bReadOnly Then $bHideCursor = False If Not $hCursorTimer Then $hCursorTimer = New Timer(500) As "CursorTimer" Else If $hCursorTimer Then $hCursorTimer.Stop $hCursorTimer = Null Endif $bHideCursor = $bReadOnly Endif $hView.Refresh End Public Sub View_GotFocus() UpdateCursorTimer End Public Sub View_LostFocus() UpdateCursorTimer End Public Sub _ShowCursor() If $bReadOnly Then Return $bHideCursor = False End Public Sub CursorTimer_Timer() $bHideCursor = Not $bHideCursor _RefreshLine($hScreen.Y) End Public Sub MouseTimer_Timer() GotoMouse(False) End Private Function Type_Read() As String Return $sType End Private Sub Type_Write(Value As String) Try $hFilter = Object.New("TerminalFilter_" & Value) If Error Then Error.Raise("Unknown terminal type: " & Value & ". " & Error.Text) $sType = UCase(Value) End Private Sub InitProcess() '$hProcess.Term.Resize($hScreen.Width, $hScreen.Height) $hResizeTimer.Trigger End '' Execute a command inside the terminal view using the [/lang/exec] instruction and a virtual terminal. '' '' - ~Command~ is the command string array passed to the EXEC instruction. '' - ~Environment~ is the command optional environment. '' '' The [/comp/gb/process] object is returned. Public Sub Exec(Command As String[], Optional Environment As String[]) As Process Dim aEnv As String[] If GetOutputStream() Then Error.Raise("Terminal already in use") aEnv = ["TERM=xterm"] If Environment Then aEnv.Insert(Environment) $fStart = Timer $hProcess = Exec Command With aEnv For Input Output As "Process" InitProcess Return $hProcess End '' Execute a command inside the terminal view using the [/lang/shell] instruction and a virtual terminal. '' '' - ~Command~ is the command string passed to the SHELL instruction. '' - ~Environment~ is the command optional environment. '' '' The [/comp/gb/process] object is returned. Public Sub Shell(Command As String, Optional Environment As String[]) As Process Dim aEnv As String[] If GetOutputStream() Then Error.Raise("Terminal already in use") aEnv = ["TERM=xterm"] If Environment Then aEnv.Insert(Environment) $fStart = Timer $hProcess = Shell Command With aEnv For Input Output As "Process" InitProcess Return $hProcess End ' allow a connection to a filter or other task ' Output is the Pipe on which the connect Task or process will receive input ' the input stream I the one this process will use to receive input ' if a callBack is passed then the preprocess method is executed before recieved data is handled by the terminal ' Preprocess may return true to have the terminal process the data, or false to have the terminal ignore the data ' This allows the implementation of a state machine or filter to hande extended terminal functions on the stream Public Sub ConnectTo($hOutputStream As Stream, $hInputStream As Stream, ByRef Preprocess As Object) As Boolean ' added BG this function to use as a piped terminal Dim TheClass As Class Dim TheObject As Object If GetOutputStream() Then Error.Raise("Terminal already in use") TheObject = $hInputStream TheClass = Object.Class(TheObject) $hPipeOut = $hOutputStream $hPipeIn = $hInputStream If TheClass.Name <> "Socket" Then ' it seems that a socket has a watch always doing this screws it up $hPipeIn.Watch(gb.Read, True) Endif Object.Attach($hPipeIn, Me, "Process") If Preprocess Then $oPreprocess = Preprocess ' set the call back to handle connection state messages etc $fStart = Timer Return True End Public Sub Process_Kill() If $sBuffer Then OutputTimer_Timer $hProcess = Null Raise Kill End Public Sub Process_Read() Dim sData As String Dim len As Integer If $hPipeIn Then len = Lof($hPipeIn) Read #$hPipeIn, sData, len Stop Event If $oPreprocess Then If $oPreprocess.Preprocess(ByRef sData, ByRef len) Then ' if it returns true then we should process the data $sBuffer &= sData Endif Else $sBuffer &= sData Endif Else sData = Read #$hProcess, Lof($hProcess) 'Stop Event 'Debug Quote(sData) $sBuffer &= sData Endif If TerminalScreen.DEBUG_FILTER Then If _DisableFilter = 0 Then $hOutputTimer.Trigger Else If (Timer - $fStart) >= 0.05 Then $hOutputTimer.Trigger Else $hOutputTimer.Restart Endif Endif End '' Print something in the terminal output. '' '' ## See also '' [../input] Public Sub Print(Text As String) UpdateScreen $sBuffer &= Text OutputTimer_Timer '$hFilter.OutputTo(Me, $hScreen, File.Out, Text) 'EnsureVisible End Public Sub OutputTimer_Timer() Dim hOutput As Stream Dim sBuffer As String Dim bEnsureVisible As Boolean $fStart = Timer $hOutputTimer.Stop If Not Me.Visible Then Return hOutput = GetOutputStream() sBuffer = $sBuffer $sBuffer = "" If (($iTargetY + $hView.H) \ $LH) >= $hScreen.Count Then bEnsureVisible = True Endif $hFilter.OutputTo(Me, $hScreen, hOutput, sBuffer) If bEnsureVisible Then $bIgnoreNextAnimation = True EnsureVisible Endif $iLinkLastY = -1 End Public Sub _GetCurrentScreen() As TerminalScreen Return $hScreen End Private Function AlternateScreen_Read() As Boolean Return $hScreen = $aScreen[1] End Private Sub AlternateScreen_Write(Value As Boolean) Dim hScreen As TerminalScreen If Value Then hScreen = $aScreen[1] 'Debug "1" Else hScreen = $aScreen[0] 'Debug "0" Endif If hScreen = $hScreen Then Return $hScreen = hScreen UpdateScreen _UpdateSize _ShowScreen End Public Sub ScrollBar_Change() $iTargetY = $hScroll.Value * $LH If $iTargetY <> $iScrollY Then If Application.Animations And If Not $bIgnoreNextAnimation Then If Not $hTimerScroll Then $hTimerScroll = New Timer As "TimerScroll" $hTimerScroll.Delay = 20 Endif $hTimerScroll.Start Else $bIgnoreNextAnimation = False $iScrollY = $iTargetY $hView.Refresh Endif $iLinkLastY = -1 CheckLink Endif End Public Sub TimerScroll_Timer() $iScrollY += ($iTargetY - $iScrollY + Sgn($iTargetY - $iScrollY)) \ 2 $hView.Refresh If $iScrollY = $iTargetY Then $hTimerScroll.Stop End '' Kill the current process running inside the terminal. '' '' It's the process run by the [../exec] or [../shell] command. Public Sub Kill() If $hProcess Then Try $hProcess.Kill Else If $hPipeIn Then Process_Read() ' Get the last data in stream and display it If Object.Class($hPipeIn).name <> "Socket" Then $hPipeIn.Watch(gb.Read, False) Endif Object.Detach(Me) $oPreprocess = Null $hPipeIn = Null ' dont close the pipes its the owners problem $hPipeOut = Null Endif End Private Function Blink_Read() As Boolean Return $bBlink End Private Sub Blink_Write(Value As Boolean) If Value = $bBlink Then Return If $hView.HasFocus Then $bBlink = Value View_GotFocus Else View_LostFocus $bBlink = Value Endif _RefreshLine($hScreen.Line) End '' Copy the selected text of the terminal into the clipboard. '' '' If not text is selected, the entire terminal contents is copied. Public Sub Copy() Dim sText As String sText = $hScreen.GetSelectedText() If sText Then Clipboard.Copy(sText) Else Clipboard.Copy(Me.Text) Endif End Private Sub PasteText(sText As String) If Not sText Then Return If $hFilter.BracketedPasteActive Then sText = "\e[200~" & sText & "\e[200~" Input(sText) End '' Paste the clipboard contents into the terminal, as if it has been entered through the keyboard. Public Sub Paste() PasteText(Clipboard.Paste("text/plain;charset=utf-8")) End '' Send text to the terminal input. '' '' ## See also '' [../print] Public Sub Input(Text As String) Dim hOutput As Stream hOutput = GetOutputStream() If hOutput Then $hFilter.InputTo(Me, $hScreen, hOutput, 0, Text) EnsureVisible Endif End Public Sub _ShowScreen() $bIgnoreNextAnimation = True $hScroll.Value = $hScreen.ScreenTop() Refresh End Public Sub _Suspend(bSuspend As Boolean) Dim bHasFlowControl As Boolean If Not $hProcess Then Return ' Can fail if the process is dead Try bHasFlowControl = $hProcess.Term.FlowControl If Not bHasFlowControl Then Return $bSuspend = bSuspend Refresh End Public Sub _UseMouse(bUse As Boolean) If $bTermUseMouse = bUse Then Return $bTermUseMouse = bUse $hView.Mouse = If($bTermUseMouse, Mouse.Blank, Mouse.Text) If $bTermUseMouse Then UpdateMouse _RefreshLine($iMouseY) Endif End Private Function Text_Read() As String Dim hLine As CTerminalLine Dim aLine As New String[] For Each hLine In $hScreen.Lines If Not hLine Then aLine.Add("\n") Else aLine.Add(hLine.Text) If hLine.NewLine Then aLine[aLine.Max] &= "\n" Endif Next Return aLine.Join("") End Private Function ShowScrollBar_Read() As Boolean Return $bShowScrollBar End Private Sub ShowScrollBar_Write(Value As Boolean) $bShowScrollBar = Value $hScroll.Visible = $bShowScrollBar Panel_Arrange UpdateScreen End Private Function Background_Read() As Integer Return $hView.Background End Private Sub Background_Write(Value As Integer) $hPanel.Background = Value $hView.Background = Value End Private Function Foreground_Read() As Integer Return $hView.Foreground End Private Sub Foreground_Write(Value As Integer) $hPanel.Foreground = Value $hView.Foreground = Value End Private Function Count_Read() As Integer Return $hScreen.Lines.Count End Private Function Title_Read() As String Return $sTitle End Private Sub Title_Write(Value As String) $sTitle = Value Raise Title($sTitle) End Private Function Suspended_Read() As Boolean Return $bSuspend End Private Sub Suspended_Write(Value As Boolean) If $bSuspend = Value Then Return _Suspend(Value) If $hProcess Then If $bSuspend Then Print #$hProcess, Chr$(19); Else Print #$hProcess, Chr$(17); Endif Endif End Private Function AutoResize_Read() As Boolean Return $bAutoResize End Private Sub AutoResize_Write(Value As Boolean) If $bAutoResize = Value Then Return $bAutoResize = Value UpdateScreen End Private Function ScreenWidth_Read() As Integer Return $hScreen.Width End Private Sub ScreenWidth_Write(Value As Integer) If $W = Value Then Return $W = Value UpdateScreen End Private Function CharWidth_Read() As Integer Return $CW End Private Function LineHeight_Read() As Integer Return $LH End Public Sub View_Menu() Dim hMenu As Menu If Me.PopupMenu Then Return If Not mnuPopup Then mnuPopup = New Menu(Me.Window, True) If $hScreen.HasLink() Then hMenu = New Menu(mnuPopup) As "mnuOpen" hMenu.Text = ("Open link") & "..." hMenu.Picture = Picture["icon:/small/open"] hMenu = New Menu(mnuPopup) As "mnuOpen" Endif hMenu = New Menu(mnuPopup) As "mnuCopy" hMenu.Text = ("Copy") hMenu.Picture = Picture["icon:/small/copy"] hMenu.Shortcut = "CTRL+SHIFT+C" hMenu = New Menu(mnuPopup) As "mnuPaste" hMenu.Text = ("Paste") hMenu.Picture = Picture["icon:/small/paste"] hMenu.Shortcut = "CTRL+SHIFT+V" hMenu.Enabled = Not $bReadOnly hMenu = New Menu(mnuPopup) hMenu = New Menu(mnuPopup) As "mnuSelectAll" hMenu.Text = ("Select all") hMenu.Picture = Picture["icon:/small/select-all"] hMenu.Shortcut = "CTRL+SHIFT+A" hMenu = New Menu(mnuPopup) As "mnuClear" hMenu.Text = ("Clear") hMenu.Picture = Picture["icon:/small/clear"] hMenu.Enabled = Not $bReadOnly Endif mnuPopup.Popup End Public Sub mnuCopy_Click() Copy() End Public Sub mnuPaste_Click() Paste() End Public Sub mnuClear_Click() Clear() End Public Sub mnuSelectAll_Click() SelectAll() End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ReadOnly_Write(Value As Boolean) If $bReadOnly = Value Then Return $bReadOnly = Value UpdateCursorTimer End Private Sub SelectAll() $hScreen.SelectAll() End Public Sub mnuOpen_Click() OpenLink End Public Sub View_Leave() ResetLink End Private Function Link_Read() As TerminalLink Return $hTerminalLink End Private Sub UrlUnquote(Path As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(Path) sCar = Mid$(Path, iInd, 1) If sCar = "%" Then sCar = Chr$(Val("&H" & Mid$(Path, iInd + 1, 2))) iInd += 2 Else If sCar = "+" Then sCar = " " Endif sRes &= sCar Next Return sRes End Public Sub View_Drop() Dim sText As String Dim aText As String[] Dim I As Integer If Object.CanRaise(Me, "Drop") Then Raise Drop Stop Event Return Endif If Drag.Formats.Exist("text/uri-list") Then sText = Trim(Drag.Paste("text/uri-list")) If sText Then aText = Split(sText, "\r\n", "", True) For I = 0 To aText.Max sText = aText[I] If sText Begins "file://" Then aText[I] = UrlUnquote(Mid$(sText, 8)) aText[I] = Shell$(aText[I]) Next PasteText(aText.Join(" ") & " ") Endif Endif End Public Sub TimerBell_Timer() $bBell = False $hView.Refresh Stop Event End Public Sub _Bell() If Object.CanRaise(Me, "Bell") Then Raise Bell Stop Event Return Endif $bBell = True $hView.Refresh If Not $hTimerBell Then $hTimerBell = New Timer As "TimerBell" $hTimerBell.Delay = 100 Endif $hTimerBell.Start End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/000077500000000000000000000000001411575327000241665ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/FOtherTest.class000066400000000000000000000001761411575327000272500ustar00rootroot00000000000000' Gambas class file Private $hProcess As Process Public Sub Form_Open() $hProcess = TerminalView1.Shell("sh") End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/FOtherTest.form000066400000000000000000000001741411575327000271040ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { TerminalView1 TerminalView MoveScaled(5,15,49,41) } } gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/FTestTerminalView.class000066400000000000000000000045761411575327000306050ustar00rootroot00000000000000' Gambas class file Public Sub TextBox1_Activate() Try TerminalView1.Exec(Split(TextBox1.Text, " ", Chr$(34))) If Error Then Debug Error.Text Else TerminalView1.SetFocus Endif End Public Sub Timer1_Timer() TerminalView1.Insert(CStr(Int(Timer * 10))) TerminalView1.NewLine End Public Sub Button1_Click() TerminalView1.Attr.Bold = Last.Value End Public Sub Form_Open() 'Exec ["stty", "onlcr"] Wait Component.Load("gb.desktop") Application.Animations = True TerminalView1.Exec(["bash"], ["PWD=/home/benoit/gambas/git/master/comp/src/gb.form.terminal"]) TerminalView1.SetFocus End Public Sub Button2_Click() TerminalView1.Attr.Underscore = Last.Value End Public Sub Button3_Click() TerminalView1.Attr.Reverse = Last.Value End Public Sub Button5_Click() TerminalView1.Attr.Blink = Last.Value End Public Sub Form_Close() TerminalView1.Kill End Public Sub TerminalView1_Kill() 'Me.Close End Public Sub TerminalView1_Title(Title As String) If Title Then Title &= " - " Me.Title = Title & "Gambas Terminal Emulator" End ' Public Sub Form_Activate() ' ' Dim I As Integer ' Dim J As Integer ' Dim B As Integer ' ' For B = 0 To 1 ' If B = 0 Then ' TerminalView1.Print("\e[m") ' Else ' TerminalView1.Print("\e[1m") ' Endif ' For I = &H2500 To &H259F Step 16 ' TerminalView1.Print(Hex$(I, 4) & ": ") ' For J = I To I + 15 ' TerminalView1.Print(String.Chr$(J) & " ") ' Next ' TerminalView1.Print("\n\n") ' Next ' Next ' ' TerminalView1.Print("\e[m") ' TerminalView1.Print(String$(4, String$(20, String.Chr$(&H2572)) & "\n")) ' ' For B = 0 To 1 ' If B = 0 Then ' TerminalView1.Print("\e[m") ' Else ' TerminalView1.Print("\e[1m") ' Endif ' For I = 256 To 1024 ' TerminalView1.Print(String.Chr$(I)) ' Next ' TerminalView1.Print("\n\n") ' Next ' ' TerminalView1.Print("\e[m") ' ' End Public Sub Button6_Click() 'Swap TerminalView1.Background, TerminalView1.Foreground TerminalView1.Print(Left$("bébé", 2)) End ' Public Sub TerminalView1_Resize(W As Integer, H As Integer) ' ' Debug W;; H ' ' End Public Sub Button7_Click() TerminalView1.ReadOnly = Not TerminalView1.ReadOnly End Public Sub TerminalView1_Click() Debug TerminalView1.Link.Text Stop Event End Public Sub TerminalView1_Drop() Debug End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/FTestTerminalView.form000066400000000000000000000021671411575327000304350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,140,98) Icon = Picture["terminalview.png"] Arrangement = Arrange.Vertical { TerminalView1 TerminalView MoveScaled(4,3,63,35) Font = Font["Gambas,11"] Background = Color.TextBackground Foreground = Color.TextForeground Expand = True Border = False Limit = 0 Blink = True ShowLink = True ReadOnly = True } { Panel1 HBox MoveScaled(2,45,120,5) { TextBox1 TextBox MoveScaled(1,0,43,5) Expand = True } { Button1 ToggleButton MoveScaled(49,0,5,5) Text = ("B") } { Button2 ToggleButton MoveScaled(54,0,5,5) Text = ("U") } { Button3 ToggleButton MoveScaled(59,0,5,5) Text = ("R") } { Button4 ToggleButton MoveScaled(64,0,5,5) Text = ("D") } { Button5 ToggleButton MoveScaled(69,0,5,5) Text = ("b") } { Button7 Button MoveScaled(75,1,16,4) Text = ("ReadOnly") } { Button6 Button MoveScaled(91,1,16,4) Text = ("Test") } } { Timer1 #Timer #MoveScaled(87,14) Delay = 50 } } gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/Form1.class000066400000000000000000000005701411575327000262030ustar00rootroot00000000000000' Gambas class file Public Sub Form_MouseUp() Print "MouseUp" End Public Sub Form_MouseDown() Print "MouseDown" End Public Sub Form_DblClick() Print "DblClick" End Public Sub Form_Open() End Public Sub DrawingArea1_Draw() End Public Sub DrawingArea1_MouseDown() Print "MouseDown" End Public Sub DrawingArea1_MouseUp() Print "MouseUp" End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/Form1.form000066400000000000000000000002321411575327000260340ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { DrawingArea1 DrawingArea MoveScaled(20,6,34,37) Background = Color.DarkGray } } gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/MTest.module000066400000000000000000000001601411575327000264260ustar00rootroot00000000000000' Gambas module file Public Sub Main() Print "\e[38;5;10mGambas\e[m" Print "\e[48;5;10mGambas\e[m" End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/PipeTest.class000066400000000000000000000072761411575327000267660ustar00rootroot00000000000000' Gambas class file Private $hPipeIn As File Private $hPipeOut As File Private InPipe As File Private OutPipe As File Private $hMySock As Socket Private $oTelnet As TelNetProtocol Public TheTask As PipedTask Public Sub Form_Open() OutPipe = Pipe "/tmp/MyPipeIn" For Write ' providers output pipe $hPipeIn = Pipe "/tmp/MyPipeIn" For Read Watch $hPipeOut = Pipe "/tmp/MyPipeOut" For Write ' open this first so other side never blocks InPipe = Pipe "/tmp/MyPipeOut" For Read ' providers in pipe If Not trmTest.ConnectTo(OutPipe, InPipe, Null) Then Close $hPipeOut Close InPipe Close OutPipe Close $hPipeIn $hPipeIn = Null $hPipeOut = Null InPipe = Null OutPipe = Null Endif End Public Sub file_read() If Not Lof($hPipeIn) Then Return DataFromTerminal.Text &= Read #$hPipeIn, Lof($hPipeIn) End Public Sub sndTxt_Click() If TheTask Then TaskStop_Click() Endif If Not $hPipeIn Then Form_Open() Endif Write #$hPipeOut, dataToSend.Text End Public Sub KillSession_Click() trmTest.Kill() If $hPipeIn Then Close #$hPipeIn If $hPipeOut Then Close #$hPipeOut If InPipe Then Close InPipe If OutPipe Then Close OutPipe $hPipeIn = Null $hPipeOut = Null InPipe = Null OutPipe = Null End Public Sub TaskTest_Click() If TheTask Then Return PipedTask.$sInputFileName = "/tmp/MyPipeIn" PipedTask.$sOutputFileName = "/tmp/MyPipeOut" TheTask = New PipedTask As "TheBestTask" ' Start the task which should wait on the input stream until opened by the terminal Wait 1 If TheTask Then InPipe = Pipe PipedTask.$sInputFileName For Write OutPipe = Pipe PipedTask.$sOutputFileName For Read trmTest.ConnectTo(InPipe, OutPipe, Null) ' tell the terminal about the remote task Endif End Public Sub TaskStop_Click() If Not Thetask Then Return trmTest.Kill() TheTask.Stop() Close InPipe Close OutPipe Thetask = Null InPipe = Null OutPipe = Null End Public Sub TheBestTask_Read(buffer As String) DataFromTerminal.text &= "Task stdout -> " & buffer ' display from task stdout End Public Sub TheBestTask_kill() DataFromTerminal.text &= "Task Killed" End Public Sub StartRs232_Click() $hPipeIn = SerialPort1.Open() $hPipeOut = $hPipeIn() If Not trmTest.ConnectTo($hPipeIn, $hPipeOut, Null) Then Close $hPipeOut Close $hPipeIn $hPipeIn = Null $hPipeOut = Null Endif End Public Sub Stoprs232_Click() KillSession_Click ' should be same as this End Public Sub TelnetTest_Click() Dim Port As Integer Dim host As String $hMySock = New Socket As "Socket1" Port = Val(PortNumber.text) host = HostName.text $hMySock.Connect(Host, port) DataFromTerminal.text &= "Opening Socket host = " & Host & ", Port = " & Str$(Port) & "\n" End Public Sub Socket1_Found() DataFromTerminal.text &= "Found Socket\n" End Public Sub Socket1_Ready() DataFromTerminal.text &= "Ready to send receive on socket\n" $oTelnet = New TelNetProtocol($hMySock) trmTest.ConnectTo($hMySock, $hMySock, ByRef $oTelnet) End Public Sub TelNetStop_Click() If Not $hMySock Then Return trmTest.Kill Close #$hMySock $hMySock = Null DataFromTerminal.text &= "Closed for send receive on socket\n" End Public Sub Socket1_Error() DataFromTerminal.text &= "Error on socket(" & Str$($hMySock.Status) & ")\n" $hMySock = Null End Public Sub Socket1_Closed() DataFromTerminal.text &= "Event Closed for send receive on socket\n" End Public Sub Socket1_Read() Return End Public Sub Socket1_Write() Return End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/PipeTest.form000066400000000000000000000026631411575327000266170ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,147,69) { trmTest TerminalView MoveScaled(2,4,58,56) } { sndTxt Button MoveScaled(132,4,13,4) Text = ("Send data") } { dataToSend TextBox MoveScaled(66,3,61,6) Text = ("Test Data to the terminal") } { DataFromTerminal TextArea MoveScaled(66,15,65,41) } { Label1 Label MoveScaled(67,11,44,4) Text = ("Data From Terminal") } { KillSession Button MoveScaled(132,20,14,6) Text = ("kill Session") } { TaskTest Button MoveScaled(132,27,14,6) Text = ("Task Testing") } { TaskStop Button MoveScaled(132,33,14,5) Text = ("Task Stop") } { Timer1 #Timer #MoveScaled(29,61) } { SerialPort1 #SerialPort #MoveScaled(43,61) FlowControl = SerialPort.None PortName = "/dev/ttyS0" } { StartSession Button MoveScaled(132,14,14,6) Text = ("Start Session") } { StartRs232 Button MoveScaled(132,40,14,6) Text = ("Start Rs232") } { Stoprs232 Button MoveScaled(132,46,14,5) Text = ("Stop Rs232") } { TelnetTest Button MoveScaled(132,57,14,5) Text = ("Telnet Start") } { Socket1 #Socket #MoveScaled(54,61) Host = "localhost" } { TelNetStop Button MoveScaled(132,62,14,5) Text = ("telNet Stop") } { HostName TextBox MoveScaled(67,57,63,5) Text = ("127.0.0.1") } { PortNumber TextBox MoveScaled(67,62,63,5) Text = ("23") } } gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/PipedTask.class000066400000000000000000000024141411575327000271020ustar00rootroot00000000000000' Gambas class file Inherits Task Private $hPipeIn As File Private $hPipeOut As File Static Public $sInputFileName As String Static Public $sOutputFileName As String Public Sub Main() Dim i As Integer = 1 Print "Task is up and running" $hPipeOut = Pipe $sOutputFileName For Write Print "Task has opened output file : " & $sOutputFileName Wait 2 Print "Waited 2 Seconds" $hPipeIn = Pipe $sInputFileName For Read Watch ' we should hang on this till the other side starts Print "Task IO in " & $sInputFilename Do Wait 5 Print " Task Is alive " & i Inc i If $hPipeIn.EndOfFile Then Print " Task Pipe Closed on other end" Wait 1 Break Endif Loop End Public Sub file_read() Dim $sBuffer As String Dim $sChar As String Print "Got read message" If Lof($hPipeIn) Then $sBuffer = "Term Key Rx .. Echoed back ---->" $sChar = Read #$hPipeIn, Lof($hPipeIn) Write #$hPipeOut, $sChar Print $sBuffer & $sChar Endif End Public Sub _kill() Print "Exit task" Close #$hPipeIn Close #$hPipeOut End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/TelNetProtocol.class000066400000000000000000000070141411575327000301340ustar00rootroot00000000000000' Gambas class file Private $hOutput As Stream Private state As Integer Const t_Will As Byte = &hfb Const t_DO As Byte = &hfd Const t_dont As Byte = &hfe Const t_wont As Byte = &hfc Const t_IAC As Byte = &hff Const t_sb As Byte = &hfa Const t_se As Byte = &hf0 Const t_nop As Byte = &hf1 Const t_GoAhead As Byte = &hf9 Public Enum c_BinaryTx, c_EchoData, C_reconnect, c_SuppressGA, c_MsgSize, c_OptStatus, c_TimingMark, c_RCXmtEcho, c_LineWidth, c_PageLength, c_CrUsage, c_SetHTabs, c_HorTabUse, c_FFUse, c_SetVTab, c_vtabUse, c_LfUse, c_ExtAsc, c_LogOut, c_ByteMacro, c_DataTerm, c_SUPDUP, c_SUPDUPOutput, c_SendLocate, c_TermType, c_EndRecord, c_TACACSId, c_OutputMark, c_TermLocNum, c_3270Emulate, c_X3pad, c_WinSize, c_TermSpeed, c_RemoteFlow, c_LineMode, c_xdispLocation, c_NewEnvOption = &h27, c_Extend = &hff Public Sub Preprocess(ByRef DataIn As String, ByRef Len As Integer) As Boolean ' Use byref to allow the process to edit the data as needed Dim MyBuff As String Dim Cchar As Byte Dim myOutBuf As String If Len <= 0 Then Return True Cchar = Byte@(DataIn) Print Hex$(Cchar, 2) While Cchar = t_iac If len <= 2 Then Break Print "Got Command" MyBuff = Mid$(DataIn, 2, 2) len -= 3 dataIn = Mid$(dataIn, 4, len) Cchar = Byte@(MyBuff) If Cchar = T_do Then MyBuff = Mid$(MyBuff, 2, 1) Cchar = Byte@(MyBuff) Print Hex$(c_TermSpeed) Select Case Cchar Case c_TermSpeed MyOutBuf &= Chr$(t_IAC) & Chr$(t_will) & Chr$(c_TermSpeed) & Chr$(t_IAC) & Chr$(t_sb) & Chr$(c_TermSpeed) & Chr$(&h00) & "38400,38400" & Chr$(&hff) & Chr$(&f0) Case c_TermType MyOutBuf &= Chr$(t_IAC) & Chr$(t_will) & Chr$(c_TermType) & Chr$(t_IAC) & Chr$(t_sb) & Chr$(c_TermType) & Chr$(&h00) & "VT100" & Chr$(&hff) & Chr$(&hf0) Case c_xdispLocation MyOutBuf &= Chr$(t_IAC) & Chr$(t_wont) & Chr$(c_xdispLocation) Case c_NewEnvOption MyOutBuf &= Chr$(t_IAC) & Chr$(t_wont) & Chr$(c_NewEnvOption) Case c_EchoData MyOutBuf &= Chr$(t_IAC) & Chr$(t_wont) & Chr$(c_EchoData) state += 1 Case Else Print "Unknown or Unprocessed command " & Hex$(Cchar) End Select Endif If len > 0 Then Cchar = Byte@(DataIn) Print Hex$(Cchar, 2) Endif Wend If state = 0 Then MyOutBuf &= Chr$(t_iac) & Chr$(t_DO) & Chr$(c_EchoData) state += 1 Endif If Len(MyOutBuf) > 0 Then Write #$hOutput, MyOutBuf, Len(myOutBuf) Endif If Len > 0 Then Return True ' default to allowing the terminal to process the data Else Return False Endif End Public Sub _new(StreamOut As Stream) $hOutput = StreamOut End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/VT100/000077500000000000000000000000001411575327000247405ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/VT100/Attr.class000066400000000000000000000101161411575327000267000ustar00rootroot00000000000000' Gambas class file ' Gambas class file Public Enum Color8, Color256, ColorRGB Private CSI As String = Chr(27) & "[" Property Read Modified As Boolean Property ColorMode As Integer Property Foreground As Integer Property Background As Integer Property Bold As Boolean Property Hidden As Boolean Property Underline As Boolean Property Reverse As Boolean Property Blink As Boolean Private Enum CH_BOLD, CH_HIDDEN, CH_UNDERLINE, CH_REVERSE, CH_BLINK, CH_FOREGROUND, CH_BACKGROUND Private $aModified As New Boolean[8] Private $aValues As New Boolean[8] Private $iColorMode As Integer = Color8 Private $iForeground As Integer Private $iBackGround As Integer Public Enum Black, Red, Green, Yellow, Blue, Magenta, Cyan, White Private Function Modified_Read() As Boolean Dim b As Boolean For Each b In $aModified If b Then Return True Next End Private Function Foreground_Read() As Integer Return $iForeground End Private Sub Foreground_Write(Value As Integer) $iForeground = Value $aModified[CH_FOREGROUND] = True End Private Function Background_Read() As Integer Return $iBackGround End Private Sub Background_Write(Value As Integer) $iBackGround = Value $aModified[CH_BACKGROUND] = True End Private Function Bold_Read() As Boolean Return $aValues[CH_BOLD] End Private Sub Bold_Write(Value As Boolean) $aValues[CH_BOLD] = Value $aModified[CH_BOLD] = True End Private Function Hidden_Read() As Boolean Return $aValues[CH_HIDDEN] End Private Sub Hidden_Write(Value As Boolean) $aValues[CH_HIDDEN] = Value $aModified[CH_HIDDEN] = True End Private Function Underline_Read() As Boolean Return $aValues[CH_UNDERLINE] End Private Sub Underline_Write(Value As Boolean) $aValues[CH_UNDERLINE] = Value $aModified[CH_UNDERLINE] = True End Private Function Reverse_Read() As Boolean Return $aValues[CH_REVERSE] End Private Sub Reverse_Write(Value As Boolean) $aValues[CH_REVERSE] = Value $aModified[CH_REVERSE] = True End Private Function Blink_Read() As Boolean Return $aValues[CH_BLINK] End Private Sub Blink_Write(Value As Boolean) $aValues[CH_BLINK] = Value $aModified[CH_BLINK] = True End Public Sub Reset() $aValues = New Boolean[8] $aModified = New Boolean[8] Print CSI & "0m"; End Private Function ColorMode_Read() As Integer Return $iColorMode End Private Sub ColorMode_Write(Value As Integer) $iColorMode = Value '$bModified = True End Public Sub Send() Dim sValue As String If $aModified[CH_BOLD] Then sValue &= IIf($aValues[CH_BOLD], "1;", "22;") If $aModified[CH_HIDDEN] Then sValue &= IIf($aValues[CH_HIDDEN], "8;", "28;") If $aModified[CH_BLINK] Then sValue &= IIf($aValues[CH_BLINK], "5;", "25;") If $aModified[CH_UNDERLINE] Then sValue &= IIf($aValues[CH_UNDERLINE], "4;", "24;") If $aModified[CH_REVERSE] Then sValue &= IIf($aValues[CH_REVERSE], "7;", "27;") If $aModified[CH_FOREGROUND] Then Select Case $iColorMode Case Color8 sValue &= (30 + Max(Min($iForeground, 8), 0)) & ";" Case Color256 sValue &= "38;5;" & Max(Min($iForeground, 255), 0) & ";" Case ColorRGB sValue &= "38;2;" & Subst("&1;&2;&3;", GetRed($iForeGround), GetGreen($iForeground), GetBlue($iForeground)) End Select Endif If $aModified[CH_BACKGROUND] Then Select Case $iColorMode Case Color8 sValue &= (40 + Max(Min($iBackGround, 8), 0)) & ";" Case Color256 sValue &= "48;5;" & Max(Min($iBackGround, 255), 0) & ";" Case ColorRGB sValue &= "48;2;" & Subst("&1;&2;&3;", GetRed($iBackGround), GetGreen($iBackGround), GetBlue($iBackGround)) End Select Endif If Not sValue Then Return If sValue Ends ";" Then sValue = Left(sValue, -1) sValue = CSI & sValue & "m" $aModified = New Boolean[8] Print sValue; End Private Function GetRed(iValue As Integer) As Integer Return Lsr(iValue, 16) And 255 End Private Function GetGreen(iValue As Integer) As Integer Return Lsr(iValue, 8) And 255 End Private Function GetBlue(iValue As Integer) As Integer Return iValue And 255 End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/VT100/Console.class000066400000000000000000000014141411575327000273710ustar00rootroot00000000000000' Gambas class file Create Static 'Private $sBuffer As String Private $bBuffered As Boolean Private ESC As String = Chr(27) Private CSI As String = Chr(27) & "[" Property Read Attr As Attr Private $hAttr As New Attr Public Sub Begin() $bBuffered = True End Public Sub End() $bBuffered = False End Public Sub Print(sValue As String) If $hAttr.Modified Then $hAttr.Send Endif Print sValue; End Private Function Attr_Read() As Attr Return $hAttr End Public Sub SetTitle(sText As String) Print ESC & "]2;" & sText & Chr(7) End Public Sub Goto(Row As Integer, Column As Integer) Print CSI & Row & ";" & Column & "H"; End Public Sub Info() Print CSI & "?6n;" End Public Sub Reset() Print CSI & "!p"; End gambas-3.16.3/comp/src/gb.form.terminal/.src/TerminalView/test/VT100/Main.module000066400000000000000000000011731411575327000270350ustar00rootroot00000000000000' Gambas module file ' Gambas module file Public Sub Main() Dim i As Integer Dim j As Integer console.SetTitle("C'est mon test") Console.Attr.ColorMode = Attr.Color256 For i = 0 To 255 For j = 0 To 255 Console.Attr.Foreground = i Console.Attr.Background = j Console.Print(i & "/" & j) Next Console.Attr.Reset console.Print("\n\n") Next Console.Attr.Bold = True Console.Attr.Reverse = True Console.Print("C'est Finit !!!!\n") console.Attr.Reverse = False console.Attr.ColorMode = Attr.ColorRGB Console.Attr.Background = &HFFF505 console.Print("Sans reverse") Console.Goto(8, 25) Console.Reset End gambas-3.16.3/comp/src/gb.form.terminal/brush_dark.png000066400000000000000000000001251411575327000225640ustar00rootroot00000000000000PNG  IHDRt&tRNSv8IDATc(gˀ(Qc'Z\IENDB`gambas-3.16.3/comp/src/gb.form.terminal/brush_light.png000066400000000000000000000001251411575327000227520ustar00rootroot00000000000000PNG  IHDRt&tRNSv8IDATc`Pb@7-@IENDB`gambas-3.16.3/comp/src/gb.form.terminal/brush_medium.png000066400000000000000000000001251411575327000231230ustar00rootroot00000000000000PNG  IHDRt&tRNSv8IDATcXʀ!DIENDB`gambas-3.16.3/comp/src/gb.form/000077500000000000000000000000001411575327000161225ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.component000066400000000000000000000001141411575327000201210ustar00rootroot00000000000000[Component] Key=gb.form Version=3.16.90 Authors=Benoît Minisini Needs=Form gambas-3.16.3/comp/src/gb.form/.directory000066400000000000000000000000411411575327000201220ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.form/.hidden/000077500000000000000000000000001411575327000174335ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.hidden/CHANGELOG000066400000000000000000000004161411575327000206460ustar00rootroot00000000000000* Wed Mar 11 2020 Benoit Minisini 3.14.90 * Tue Aug 18 2015 Benoit Minisini 3.8.0 * Sat Aug 01 2015 Benoit Minisini 3.8.0 * Thu Mar 19 2015 Benoit Minisini 3.7.90 - Version initiale gambas-3.16.3/comp/src/gb.form/.hidden/FailedNewMaskBox.class000066400000000000000000000421121411575327000236050ustar00rootroot00000000000000' Gambas class file ' Gambas class file Export Inherits TextBox Public Const _Properties As String = "*,-Password,-MaxLength,Action,Filter,Mask,ShowDefault" 'Public Const _DefaultEvent As String = "Click" 'Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Public Const _DrawWith As String = "TextBox" Event Filter(Char As String) Event Validate Property Mask As String Property Filter As String Property ShowDefault As Boolean Property Text As String Private $hObserver As Observer Private Const MASK_CHARACTER As String = "90A6?" Private Const MASK_DEFAULT As String = "_0___" Private Const UNMASKED_CHAR As String = "\r" Private Const DIGIT_SPACE As String = "\xE2\x80\x87" ' Unicode 2007 Private $sSaveText As String Private $iSavePos As Integer Private $iSaveLength As Integer 'Private $bCursorBackward As Boolean Private $sMaskOrg As String Private $aMask As New String[] Private $sDefault As String Private $sSeparator As String Private $sAlign As String Private $iPosFocus As Integer Private $bShowDefault As Boolean Private $sFilter As String Public Sub _new() End Private Function Mask_Read() As String Return $sMaskOrg End Private Sub GetDefaultCharacter(iPos As Integer) As String Dim sCar As String = String.Mid$($sDefault, iPos + 1, 1) If sCar = "." Then sCar = String.Mid$($sSeparator, iPos + 1, 1) Return sCar End Private Sub MakeDefault() As String Dim sDefault As String Dim iPos As Integer For iPos = 0 To $aMask.Max sDefault &= GetDefaultCharacter(iPos) Next Return sDefault End Private Sub GetFirstCharacterPos() As Integer Dim iPos As Integer For iPos = 0 To $aMask.Max If $aMask[iPos] Then Return iPos Next End Private Sub GetLastCharacterPos() As Integer Dim iPos As Integer For iPos = $aMask.Max DownTo 0 If $aMask[iPos] Then Return iPos + 1 Next End Private Sub UpdateMaskAndSeparator(sMask As String) Dim iPos, iPos2 As Integer Dim sCar As String Dim iLen As Integer Dim aMask As New String[] Dim sSeparator As String Dim sAlign As String Dim sDefault As String Dim iPosFocus As Integer iPosFocus = -1 iLen = String.Len(sMask) For iPos = 1 To iLen sCar = String.Mid$(sMask, iPos, 1) If sCar = "[" Then iPos2 = String.InStr(sMask, "]", iPos) If iPos2 = 0 Then Error.Raise("Bad mask") aMask.Add(String.Mid$(sMask, iPos, iPos2 - iPos + 1)) iPos = iPos2 sSeparator &= " " sDefault &= " " Continue Else If sCar = "<" Then If aMask.Count And If aMask[aMask.Max] Then sAlign &= Space$(aMask.Count - 1 - Len(sAlign)) & "<" Endif Else If sCar = "!" Then iPosFocus = aMask.Count Else If sCar = "?" Then aMask.Add(sCar) sSeparator &= " " sDefault &= " " ' Else If sCar = "0" Then ' aMask.Add("[0-9]") ' sSeparator &= " " ' sDefault &= "0" Else If sCar = "0" Then aMask.Add("[0-9]") sSeparator &= " " sDefault &= "0" Else If sCar = "#" Or If sCar = "9" Then aMask.Add("[0-9]") sSeparator &= " " sDefault &= DIGIT_SPACE Else If sCar = "A" Then aMask.Add("[A-Za-z]") sSeparator &= " " sDefault &= " " Else If sCar = "\\" And If iPos < iLen Then aMask.Add("") Inc iPos sSeparator &= String.Mid$(sMask, iPos, 1) sDefault &= "." Else aMask.Add("") sSeparator &= sCar sDefault &= "." Endif Next $sMaskOrg = sMask $aMask = aMask $sSeparator = sSeparator $sAlign = sAlign $sDefault = sDefault $iPosFocus = iPosFocus 'If $sMaskChar Then $sDefault = Replace($sDefault, "_", $sMaskChar) End Private Sub Mask_Write(Value As String) UpdateMaskAndSeparator(Value) If Not $sMaskOrg Then Return If Not $hObserver Then $hObserver = New Observer(Me) As "TextBox" If Not IsValid(Super.Text) Then Clear() Endif Me.Pos = GetFirstCharacterPos() End ' Private Sub IsMaskCharacter(sCar As String) As Boolean ' ' Return InStr(MASK_CHARACTER, sCar) ' ' End Private Sub GetPreviousSeparator(iPos As Integer, Optional sSep As String) As Integer Dim sCar As String If iPos < 0 Then Return -1 While iPos >= 0 sCar = $aMask[iPos] If Not sCar Then If Not sSep Then Break If sSep = String.Mid$($sSeparator, iPos + 1, 1) Then Break Endif Dec iPos Wend Return iPos End Private Sub GetNextSeparator(iPos As Integer, Optional sSep As String) As Integer Dim sCar As String If iPos < 0 Then Return 0 While iPos < $aMask.Count sCar = $aMask[iPos] If Not sCar Then If Not sSep Then Break If sSep = String.Mid$($sSeparator, iPos + 1, 1) Then Break Endif Inc iPos Wend Return iPos End Private Sub GetNextCharacter(sText As String, iPos As Integer) As Integer Dim iLen As Integer = String.Len(sText) If iPos < 0 Then Return 0 While iPos < iLen If $aMask[iPos] Then Break Inc iPos Wend Return iPos End Private Sub IsRightAlign(iPos As Integer) As Boolean iPos = GetNextSeparator(iPos) If iPos = 0 Then Return Return Mid$($sAlign, iPos, 1) = "<" End Private Sub UnmaskText(sText As String) As String Dim iPos As Integer Dim sResult As String Dim sCar As String For iPos = 1 To String.Len(sText) sCar = String.Mid$(sText, iPos, 1) If $aMask[iPos - 1] And If sCar = GetDefaultCharacter(iPos - 1) Then sCar = UNMASKED_CHAR sResult &= sCar Next Return sResult End Private Sub MaskText(sText As String) As String Dim iPos As Integer Dim sResult As String Dim sCar As String Dim sMask As String Dim bNumber As Boolean Dim sDefault As String For iPos = 1 To String.Len(sText) sCar = String.Mid$(sText, iPos, 1) sDefault = GetDefaultCharacter(iPos - 1) sMask = $aMask[iPos - 1] If sMask = "[0-9]" Then If sCar = "0" And If sDefault <> "0" And If Not bNumber Then sCar = UNMASKED_CHAR Else If IsDigit(sCar) Then bNumber = True Else If sCar = UNMASKED_CHAR And If bNumber And If IsRightAlign(iPos) Then sCar = "0" Endif Else bNumber = False Endif If sCar = UNMASKED_CHAR Then sCar = sDefault sResult &= sCar Next Return sResult End Private Sub GotoCursor(iPos As Integer) As Boolean Dim sText As String = Super.Text Dim sCar As String If iPos < 0 Then Return If IsRightAlign(iPos) Then While iPos < Me.Length sCar = String.Mid$(sText, iPos + 1, 1) If sCar <> " " And If sCar <> "0" Then Break Endif Inc iPos Wend Endif If Me.Pos <> iPos Then Me.Pos = iPos Return True Endif End Public Sub TextBox_KeyPress() Dim sText, sTextOrg As String Dim iPos, iPosPrev, iPosNext As Integer Dim sCar As String Dim sInsert As String Dim bDelete As Boolean Dim bBefore As Boolean Dim bChange As Boolean If Not $sMaskOrg Then Return If Me.ReadOnly Then Return sText = UnmaskText(Super.Text) sTextOrg = sText If Me.Selected Then iPos = GetNextCharacter(sText, Me.Selection.Start) Else iPos = Me.Pos Endif Select Key.Code Case Key.Left, Key.Right, Key.Home, Key.End Return ' Case Key.Right ' ' Case Key.Home ' iPos = GetFirstCharacterPos() ' ' Case Key.End ' iPos = GetLastCharacterPos() Case Key.Delete If iPos < Me.Length bDelete = True bBefore = IsRightAlign(iPos + 1) Endif Case Key.BackSpace If iPos > 0 Then bDelete = True bBefore = IsRightAlign(iPos) Dec iPos Endif Case Key.Tab, Key.BackTab, Key.Up, Key.Down, Key.Enter, Key.Return, Key.ControlKey, Key.AltKey, Key.ShiftKey, Key.AltGrKey Return Case Else If Key.Control Then Return If Key.Text Then bBefore = IsRightAlign(iPos) If bBefore Then If iPos > 0 Then sCar = $aMask[iPos - 1] Else sCar = "" Endif If sCar And If Key.Text Like sCar Then sInsert = Key.Text Endif Else If iPos < $aMask.Count Then sCar = $aMask[iPos] If sCar And If Key.Text Like sCar Then sInsert = Key.Text Endif Endif If Not sInsert Then iPosNext = GetNextSeparator(iPos, Key.Text) While iPosNext < Me.Length If iPosNext < $aMask.Max And If $aMask[iPosNext + 1] Then Break Inc iPosNext Wend If iPosNext >= Me.Length Then Goto DO_NOTHING iPos = iPosNext + 1 Endif Endif End Select If sInsert Or If Key.Code = Key.Delete Or If Key.Code = Key.BackSpace Then If Me.Selected Then If Me.Selection.Length = Me.Length Then sText = MakeDefault() 'sText = String.Left$(sText, Me.Selection.Start) & String.Mid$(sDefault, Me.Selection.Start + 1, Me.Selection.Length) & String.Mid$(sText, Me.Selection.Start + Me.Selection.Length + 1) iPos = GetNextCharacter(sText, Me.Selection.Start) Me.Selection.Hide Endif Endif If sInsert Then If Not bBefore Then sText = String.Left(sText, iPos) & sInsert & String.Mid$(sText, iPos + 2) iPos += String.Len(sInsert) Else iPosNext = iPos While iPos > 0 If Not $aMask[iPos - 1] Then Break Dec iPos Wend If String.Mid$(sText, iPos + 1, 1) = UNMASKED_CHAR Then sText = String.Left(sText, iPos) & String.Mid$(sText, iPos + 2, iPosNext - iPos - 1) & sInsert & String.Mid$(sText, iPosNext + 1) Endif iPos = iPosNext Endif Endif If bDelete Then iPosNext = GetNextSeparator(iPos) If iPosNext > iPos Then If bBefore Then iPosPrev = GetPreviousSeparator(iPos) sText = String.Left(sText, iPosPrev + 1) & UNMASKED_CHAR & String.Mid$(sText, iPosPrev + 2, iPos - iPosPrev - 1) & String.Mid$(sText, iPos + 2) Inc iPos Else sText = String.Left(sText, iPos) & String.Mid$(sText, iPos + 2, iPosNext - iPos - 1) & UNMASKED_CHAR & String.Mid$(sText, iPosNext + 1) Endif Endif Endif Object.Lock(Me) If sText <> sTextOrg Then sText = MaskText(sText) If Super.Text <> sText Then Super.Text = sText bChange = True Endif If IsRightAlign(iPos) Then While iPos < Me.Length If String.Mid$(sText, iPos + 1, 1) <> " " Then Break Inc iPos Wend Endif Endif Object.Unlock(Me) Me.Pos = iPos If bChange Then Raise Change 'Me.Select(iPos, 1) DO_NOTHING: Stop Event End ' Private Function MaskChar_Read() As String ' ' Return $sMaskChar ' ' End ' ' Private Sub MaskChar_Write(Value As String) ' ' Dim sText As String ' Dim iPos As Integer ' Dim sCar As String ' Dim aPos As New Integer[] ' ' Value = String.Left(Value) ' sText = Super.Text ' ' For iPos = 0 To $aMask.Max ' sCar = $aMask[iPos] ' If Not sCar Or If String.Mid$($sDefault, iPos + 1, 1) <> "_" Then Continue ' If String.Mid$(sText, iPos + 1, 1) = GetDefaultCharacter(iPos) Then aPos.Add(iPos) ' Next ' ' $sMaskChar = Value ' UpdateMaskAndSeparator($sMaskOrg) ' ' For Each iPos In aPos ' sText = String.Left(sText, iPos) & GetDefaultCharacter(iPos) & String.Mid$(sText, iPos + 2) ' Next ' ' Super.Text = RTrim(sText) ' Me.Pos = GetFirstCharacterPos() ' ' End Public Sub TextBox_GotFocus() If Not $sMaskOrg Then Return TextBox_Change If $iPosFocus > 0 Then Me.Pos = $iPosFocus End Public Sub TextBox_LostFocus() If Not $sMaskOrg Then Return TextBox_Change GotoCursor($iPosFocus) End Private Sub RestorePosition() Me.Pos = $iSavePos If $iSaveLength Then Me.Select($iSavePos, $iSaveLength) End Public Sub TextBox_Cursor() Dim iPos As Integer Dim sDefault As String Dim sText As String Dim sLeft As String Dim sRight As String Dim bValid As Boolean iPos = Me.Pos sDefault = MakeDefault() sText = Super.Text Do If iPos > 0 Then sLeft = String.Mid$(sText, iPos, 1) Else sLeft = "" If Not IsRightAlign(iPos) Then sLeft = "^" Endif If iPos < String.Len(sText) Then sRight = String.Mid$(sText, iPos + 1, 1) Else sRight = "" If IsRightAlign(iPos) Then sRight = "$" Endif bValid = True If Not sLeft Or If sLeft = " " Or If sLeft = DIGIT_SPACE Then If Not sRight Or If sRight = " " Or If sRight = DIGIT_SPACE Then bValid = False Endif Endif If bValid And If iPos > 0 And If iPos < String.Len(sText) Then If String.Mid$($sSeparator, iPos, 1) <> " " And If String.Mid$($sSeparator, iPos + 1, 1) <> " " Then bValid = False Endif Endif If bValid Then Break If iPos = $iSavePos Then Goto CANCEL_MOVE If IsRightAlign(iPos) Then Inc iPos Else Dec iPos Endif If iPos < 0 Or If iPos > String.Len(sText) Then Goto CANCEL_MOVE Loop $iSavePos = iPos $iSaveLength = Me.Selection.Length Me.Pos = iPos Return CANCEL_MOVE: Object.Lock(Me) RestorePosition Object.Unlock(Me) End ' Public Sub TextBox_Menu() ' ' If Not $sMaskOrg Then Return ' Stop Event ' ' End Public Sub TextBox_Change() ' Dim I As Integer ' Dim sText As String ' Dim sCar As String ' Dim sNewText As String ' Dim iPos As Integer ' Dim iDec As Integer 'Dim bCanRaise As Boolean Dim bStop As Boolean ' bCanRaise = Object.CanRaise(Me, "Filter") ' ' If $sFilter Or If bCanRaise Then ' ' sText = Super.Text ' iPos = Me.Pos ' For I = 1 To String.Len(sText) ' sCar = String.Mid$(sText, I, 1) ' If $sFilter And If sCar Like $sFilter Then ' sNewText &= sCar ' Continue ' Endif ' If bCanRaise Then ' bStop = Raise Filter(sCar) ' If Not bStop Then ' sNewText &= sCar ' Continue ' Endif ' Endif ' ' If I <= iPos Then Inc iDec ' ' Next ' ' If sNewText <> sText Then ' Object.Lock(Me) ' Super.Text = sNewText ' Me.Pos = iPos - iDec ' Object.Unlock(Me) ' Endif ' ' Endif If Not IsValid(Super.Text) Then bStop = True Else 'If Object.CanRaise(Me, "Validate") Then bStop = Raise Validate Endif If bStop Then Object.Lock(Me) Super.Text = $sSaveText Me.Select($iSavePos, $iSaveLength) Object.Unlock(Me) Else $sSaveText = Super.Text $iSavePos = Me.Pos $iSaveLength = Me.Selection.Length Endif If $sMaskOrg Then Object.Lock(Me) If Me.HasFocus Or If $bShowDefault Then If Super.Text = "" Then Super.Text = MakeDefault() Else If Super.Text = MakeDefault() Then Super.Text = "" Endif RestorePosition Object.Unlock(Me) Endif TextBox_Cursor() End Private Function ShowDefault_Read() As Boolean Return $bShowDefault End Private Sub ShowDefault_Write(Value As Boolean) $bShowDefault = Value TextBox_Change End Private Sub IsValid(sText As String) As Boolean Dim I As Integer Dim sMask As String Dim sCar As String Dim bStop As Boolean Dim bCanRaise As Boolean bCanRaise = Object.CanRaise(Me, "Filter") If $sFilter Or If bCanRaise Then For I = 1 To String.Len(sText) sCar = String.Mid$(sText, I, 1) If $sFilter And If sCar Like $sFilter Then Continue If bCanRaise Then bStop = Raise Filter(sCar) If Not bStop Then Continue Endif Return False Next Endif If $sMaskOrg Then If String.Len(sText) > $aMask.Count Then Return False For I = 1 To String.Len(sText) sCar = String.Mid$(sText, I, 1) sMask = $aMask[I - 1] If sMask Then If sCar <> String.Mid$($sDefault, I, 1) Then If sCar Not Like sMask Then Return False Endif Else If sCar <> String.Mid$($sSeparator, I, 1) Then Return False Endif Next Endif Return True End Public Sub Clear() If Me.HasFocus Then Super.Text = MakeDefault() Else Super.Text = "" Endif End Private Function Filter_Read() As String Return $sFilter End ' Private Sub MakeFilter() ' ' Dim aFilter As New String[] ' Dim sFilter As String ' Dim iPos As Integer ' ' sFilter = $sFilterOrg ' $sFilter = "" ' ' While sFilter ' ' If Left(sFilter) = "[" Then ' iPos = InStr(sFilter, "]") ' If iPos Then ' aFilter.Add(Mid$(sFilter, 2, iPos - 2)) ' sFilter = Mid$(sFilter, iPos + 1) ' Continue ' Endif ' Endif ' ' $sFilter &= String.Left(sFilter) ' sFilter = String.Mid$(sFilter, 2) ' ' Wend ' ' $sFilterLike = "[" & aFilter.Join("") & "]" ' ' End Private Sub Filter_Write(Value As String) $sFilter = Value If Not IsValid(Super.Text) Then Clear() Endif End Private Function Text_Read() As String Return Trim(Replace(Super.Text, String.Chr(&H2007), " ")) End Private Sub Text_Write(Value As String) Super.Text = Value End gambas-3.16.3/comp/src/gb.form/.hidden/control/000077500000000000000000000000001411575327000211135ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.hidden/control/buttonbox.png000066400000000000000000000004021411575327000236410ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+-PLTEGpL```aaa``````````````````@@@JJJ]׬tRNS*!1@gIDATHc`TLbx@r^` o&𺑡%>Z:f F c vZ XZS@ I#X ,HD;*VV1{>'GIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/colorbutton.png000066400000000000000000000006241411575327000241750ustar00rootroot00000000000000PNG  IHDR@@ pHYs+NPLTEGpL```ooo``````aaa``````__ַ~~༼ssscc՚ΚࣣKl tRNS*WtrIDATX EWV!}d$&yGY7a Xȗ60XTh/|u|#s~0 tБ2R`% /c_'LPJ 9^` ށw/{A(/PlJ@^yHHAKֻmkhUPM$n+ mIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/colorchooser.png000066400000000000000000000015151411575327000243240ustar00rootroot00000000000000PNG  IHDR@@ pHYs+qPLTE```vu__ooouՖzzbbッqߧꠠ̡١虙勋䄄̓ꡡkkee𾾵΄ppppᵯ߯~~rr捍ll``םxx``Ղ掎 ggrrɌьtt描ttnnssʐ쬬もuuttiiѨҎ蘘瑑ł͂||uuvvpp짧ޟIDATXUw@`$Pwwwwwww-;>=dgFQH¨@nZ}H!`oU8b*f'?A@;jtID1qWrZ 8 T/q?FQ.%d {ec~x"6KԲ~7fnxj*B< b)VX 8yɋ&)6% FL`/A@c9֙; Pe&pUy 6L@IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/fileview.png000066400000000000000000000003411411575327000234310ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTE```plIDATHc$@ R ! I0+`Bˆv X`FR5UGp*P `@ aۛ @K`0`T+ `8^w]Tڸ3IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/fontbox.png000066400000000000000000000013421411575327000233000ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL``````````````````aaa```aaaxxxqqqtttgggvvv{{{lll▖uuu삂bbbzzzwwwүooo~~~Ԕcccyyyȳ垞˜sssۍ绻把|||͸ܫϙ胃𣣣kkke tRNS*VXIDATXr@D,$ Ys9a5%]wrqЗ~UL.#IC9 D匟Be3 ˆRt }J,Lu`lI5o%j3€ S s(2'l,p@Iz9zp0I\# >P&^&69! 0Tь o&c$@{Cx U'l` C1<1"l5Jv1t)PPLTE```qqqfffiiilllaaabbbƎsssۑ䏏ɣdddꝝᄒ򲲲eeemmmnnnccczzzvvvjjjϮggg}}}wwwpppԍxxxܜyyyֈ垞uuu|||(IDATXgw0`P8략jmn{z'~|k% R>z8t`]5&멌OQ6"oq'~bbېY/oxsȁd}5&f!@Kn0O $ "yQvC_aVS > 0}0h;&K `wOPT4'$|FB039D{=j`8 ~(&#`8sP Gښgh;X s XZD"Ԃ AP;WX,jQ6, ؗK0l`Mw] pJfC8Px%ڿ(7"ęc>8fIIK>8ANNbi-Uu@w'ētX|LZl& S~s\`: l_}/IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/iconpanel.png000066400000000000000000000002661411575327000235750ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpL```|?tRNS@f@IDATHcPB .ht ((p0 " GP!$CzMQ)j4E(y)a!QoIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/imageview.png000066400000000000000000000011601411575327000235740ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTE```+xoo  pprr靄ㄅqqtttt||}}}}yyuu}:DIDATXn@@QSYiN/ 8p$`R(Y_YmIVx&i p&pـvι^5_6`ifl~ h;GDh%j8i5Q8u(C `[_/y[Ž^IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/lcdlabel.png000066400000000000000000000003241411575327000233620ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTEGpL```^^^```etRNSQB_IDAT8c`l?$ . X]!Z` P :x·.u4vު^ ť'М]WPK~^{% Wzk$Y HU];uw)j8iӦ΋O.uIrj!Obd8ՠM9w+rJ1EQ-5?韰Hny| tk\r&IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/maskbox.png000066400000000000000000000011471411575327000232700ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL``````````````````aaa```@@@]]]zzzYYYȨ웛MMMZZZ煅LLLDDDcccPPPEEEGGGhhhӱAAAאnnn\\\eee[[[}}}pppNNNVVV2 tRNS*VIDATXIo@ FSM(;t}Q7Ժ+Dռ;;A(RNadר(ipN ~o q|YRJ%<2HRg]J>oCJ/:H<ޘCXqXw@31e T ѶnT mu+`XO=l\*l\*9Ħ1S3_a+Uc[B`é]J@eTe(]U+|hSyxJ:E5uIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/menubutton.png000066400000000000000000000020561411575327000240240ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL```````````````aaa``````)aaakkkն+<=̥A4;y1[-FCB0̖2H.4*2֢=Եݤӣ>l}|˅[O¡\agjw|JVڗܚh,385Dts{xʷ׀KQXXbiƗќLZe6365Gz:ݢEyw4 tRNS*5,IDATXW0ƍDIc!$dB(BK{1;h)߽Wsd|%垫(Ԧ*.W2TRܴTM-u+m?hB}?<qE=tO~^T4qnݤ,{*7f?LPX{# N~`Ŷ`^Bcǃ0SOb^K~@ 066|ûqfB0` ~myHs@-GqFzTJ",P$ D4@q,n䖭Wgxtxrjj$4J͈zVB7-r+ש_̔ԓBK4m%b ALuؗi?P^yt*l@fc;|߿ #]0%]>@ M̲|Iη^~4(a"zgԆxV*Ϥi1kUjlXcy[Q37ۺXKζ5s;[iqnͫ}hB[i^#GBK0PIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/messageview.png000066400000000000000000000003161411575327000241400ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEo``` VIDATHc$@ ^ QxWWR! @PJȊi$8Y>gC 3X\-~s~ny#IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/spinbar.png000066400000000000000000000005101411575327000232530ustar00rootroot00000000000000PNG  IHDR@@ pHYs+3PLTEGpL`````````aaa``````򛛛nnn| tRNS*WtrIDATX햹0 D5\-9$6HxJy)q0ILJB-`.a_uGr|3 ; ? z(ix,m; uDjn /lR@=2LMCŸ.tšKVyYϽ18*"=xIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/spinner.png000066400000000000000000000021521411575327000232770ustar00rootroot00000000000000PNG  IHDR@@ pHYs+;PLTEGpL}}}ƿ̿~~~~~~}}}~~~|||4J:ftRNS7h (p/ Ux68Mpyi/Th  7(LLΛΚgKyTi'cIDATXWv0 8tBk &*_{ΞcFƒeǙif,\A^- l!j{6Ō ("*a*+b E5A 3= vcK܇} s@ۧ_b.|(Si~7o"649 %!U`"%N=xP~zcRNkR$(鏖Ȉ/!?1"Be,mv*yL"D(mkC?B+'%zq@EQx6X.s1@ 5`—upCoi7^o!ٹM2SFs=w/Zm1WrkvώD" pWIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/tableview.png000066400000000000000000000015061411575327000236050ustar00rootroot00000000000000PNG  IHDR@@ pHYs+SPLTE\\\SSSTTTlll```@@@BBBAAAeeeJJJcccIIILLLRRRnnnXXX___CCC|||DDDzzzVVVUUUHHHuuuqqqwwwWWW}}}tttKKK]]]{{{޴ۆ੩OOO~~~NNNaaaiiiMMMxxxQQQsssjjjkkkfffpppFFFIDATXGS``5&$v{{'pbxJ} awa4 !ddL0} FAdғPXpO?ܭb⏀x]Z4ּ3`bAMhL[qJlꪂS[Zާ/]|lPTO9Mri=9mIzM-AYlQBw.POa;vhX1ƫ[N_4pJpG .=y~ç )a A[^.CJ&yh pS.t3g-Ȅ40?ﮢ+~oC6e^ `)W6N5i+Ap9O<,Q,D%)1fc֑!ʿZIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/tabpanel.png000066400000000000000000000002571411575327000234130ustar00rootroot00000000000000PNG  IHDR@@M pHYs+ PLTEGpL```IXctRNS@f @@<UH`Vd d4@ewIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/timebox.png000066400000000000000000000011141411575327000232650ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTEGpL``````````````````aaa```߿ﷷooԐڭ܊ݑϗd tRNS*V[IDATXiS0Ek.}ߠ@Pxhgў/]fr&ͳ`e/&K{ujfW uUnF&fdyv-%EW)fVg/8i7;Qe=m10ؤDyXx4`np+d 1Hh#+ 02 )fآX#BxXX,x 1Eˉ18X[1Xk<Њ ۖԄA"!́ P@BȀ+4&Vޏ$IENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/valuebox.png000066400000000000000000000016101411575327000234440ustar00rootroot00000000000000PNG  IHDR@@ pHYs+\PLTEGpL``````````````````aaa```@@@EEElllAAAQQQqqqXXX筭CCCŜfffJJJ°GGG___FFFPPPYYYzzzbbb|||ɽVVVHHHaaa\\\kkkttthhhSSSwwwrrrgggRRRDDDIIIDzsss}}}˅TTT^^^MMMWWWZZZ_ tRNS*VIDATXS@XjDĊ{q!r%2r&M!'UJHThxb*e#U#sP"DG].yrih`a$$ɝ\J(pDzs*Զ:JX Lap&LJ;cXG>RGALy@Ia@i`Ve74(58zI+#¨B ZM9P! /aܯ ,ʌlIsAoou[e PK5OrjT[GIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/control/wizard.png000066400000000000000000000004421411575327000231210ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+$PLTEGpL```^^^```aaaɴ1tRNSQBIDATHc%+` F*U0Q( !L#12pa V%h ʚQX*0O@UVm2td>BG1:%.n ) haG&"Ԅ#@0JeϥIENDB`gambas-3.16.3/comp/src/gb.form/.hidden/icon.png000066400000000000000000000002641411575327000210730ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEࠠ7```uO7K=EIDATHc0&HAV@d#O00)J F #%sȍIENDB`gambas-3.16.3/comp/src/gb.form/.icon.png000066400000000000000000000123541411575327000176430ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+IDATxOcG^oIO2ʌf1HAbl-bs ܸqmO\#8 %VeQvdfuw{qmmHVUկ~U @DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDW,~gW~|ߪц3=g-[-5uemkǴp/O˘>LDkLtkӅ⿏d}S~~'kU;>jw#R>~c $۹J#WNXLs*d"3D˟o2Ą:wq Ǐ ?>Qe *I?4L &ҟɎcKrܴ?o>D Ztk| xho{}ZDuAi?GF~mS'K֫/I[a94J;cע|%n/ ߥ\ZF^g?~+7>nFDK[->z[C3V/, -yt}ol/1)WQ}nzB˟@ZF/lLՏ>ō~~mI,\pt[7l yk;Yy/O%/[PycbjX=Fr$7C<=VÛauOn_VS> -}U6E/@\zb&)hQXU?~7z#FvZ{GP+n 7!?=י3mqX1[~Sۮ$|/\}h8XMbB"Eœ7fWͮY2Y :m|;=^+qU>OK^bI}ӗeIB7ナoz}ŧ&WD-#Xc?ߞmky1h/TZшZ טO54zo\}:PK 4-XىO"ƞ-.~{^`&&q=mЗB3l|;qe%_܋>1ߗrד/~Њߑ^uc6U!>oa FBVdDM8;L/ׯEƘp< Z껧 [~^G< H+[\o8+&#(u9@EpyK㑍cIAEp 2c_?DzHN& b˟߯U ] h)9n7OgeUuE+G̿W&ۆ>-[40@;M?XhV+*X.4t#> ܄X@lMCa,)gJN_v|13Upc*;89|RPOC8s;c/]T_8~?<(UvV_5S7$%9~>[i)~wzh.,nc ȜǾcBSq!O#/X^X'c?mx,|ibIgOd p]1Xkˡj(> HOnߍ3!6/m@~ž$Ė?-?kh-Nm>:E5_ #ZukD נpUF/$X>D$PxCJPT^H`Ef9od}y|_>/+$ ,GqI$c5V@n`Xˏ0=t{~-?.|w@0JS~cǡE>}Jq/[~Z{kD`QC:||aw&7Iߛ-?vboP=3GeM-?цX Ƣe%D< y7H`,l&X jY0. H++D"Չ1+pֲl|r>o𣍳63/e Z6-}~,Ol?mXk\ò r`zPfim\Ychq?Y *Hg /x h<6tmlY~h@_|s]R1/)>g@>O`0%=ؘyn />'Efq7Z4?3g_ Gr{?!<5@=> g )j(`BI "Y_x5~dov ǗwDWH]qk;y0C‡~M3hrhm@wZCfw]~`] Ϗ?ZWe\> 0 9{0Gku6s0zWqDt f$) HG6} t׿wݧp) H1VD1MzV$_)ƛhnfk1lgoE)dxָ|سSiQlS\{ Xctέsm?xO>gˏm~3 g\k f;{ܺ;,IN̽y-$ݔ_ϼT~=3>"RbctS~=3 Rbc@+"8 @))Gg~tSh0{V3o}iQ^od&ó g"W03I@"X) H1VDOM\nv( }ӆ7z+ޚΝ;v;!4^?F׻SYY+iݻ7uZ]/^@Q`H1VDO*6z#"X)ƻI53#"D RNQi Rbc@dp| '?K=`u߸xP }[ڞ1B$ |=@3<Cs{|w:nQ+u28 ̽y) H1&I73$մ_)QuCy:z0qs{|X'{\`"퉋wn;__x"&Ig}e7GbEh B[%Q.zR 辞˘?bA喇R{V sDqtS~=3 Rb݀I@M.bc@+"Ř$ݔ_όc@+"X)$ z#H93Dn@RMH1VDqtS~=3 Rbc@bc@+"Ř$ݔ_ϼT~= @D龞)$ zf@+"X)6(]>p`ikwbk)EcŰX%{<]vB! ۝]Zʱb8 J:@n+TS~=3@+"X)ƻI53]"X) H1VD1 H)H0RN.bSE^wݧAsz(Oc1 8EǏn\GEQO_I܄Wh1@$մ_όc@GH73#"~_\)]FD RI@") H1VD`D1 H$R9"X)6s_>g'hS0 HD """"""""""""""""""""""""""""""""""""""""""""""""l<]IENDB`gambas-3.16.3/comp/src/gb.form/.lang/000077500000000000000000000000001411575327000171215ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.lang/ar.po000066400000000000000000000266401411575327000200730ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.14.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2020-06-06 18:08 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "" #: CBookmarkList.class:51 msgid "Home" msgstr "صَّفحة الإنترنت الرئيسية" #: CBookmarkList.class:53 msgid "Desktop" msgstr "سطح المكتب" #: CBookmarkList.class:55 msgid "System" msgstr "النظام" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:535 msgid "Cannot rename directory." msgstr "" #: DirView.class:566 msgid "New folder" msgstr "مجلد جديد" #: DirView.class:585 msgid "Cannot create directory." msgstr "" #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "اليوم" #: FCalendar.form:54 msgid "Previous month" msgstr "الشهر الماضي" #: FCalendar.form:60 msgid "Next month" msgstr "الشهر التالي" #: FCalendar.form:147 msgid "Apply" msgstr "" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "" #: FDirChooser.class:438 msgid "Directory not found." msgstr "" #: FDirChooser.class:547 msgid "All files (*)" msgstr "" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "" #: FDirChooser.class:1023 msgid "Show &details" msgstr "" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "" #: FDirChooser.class:1043 msgid "&Rename" msgstr "" #: FDirChooser.class:1048 msgid "Copy" msgstr "انسخ" #: FDirChooser.class:1053 msgid "&Delete" msgstr "" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "" #: FDirChooser.class:1088 msgid "&Properties" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "" #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "" #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "" #: FDirChooser.class:1431 msgid "Delete file" msgstr "" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:68 msgid "Parent directory" msgstr "" #: FDirChooser.form:74 msgid "Root directory" msgstr "" #: FDirChooser.form:139 msgid "Image preview" msgstr "" #: FDirChooser.form:147 msgid "Detailed view" msgstr "" #: FDirChooser.form:155 msgid "File properties" msgstr "" #: FDirChooser.form:161 msgid "Show files" msgstr "" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "موافق" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "إلغاء" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "الإسم" #: FEditBookmark.class:24 msgid "Path" msgstr "المسار" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "" #: FEditBookmark.form:34 msgid "Up" msgstr "أعلى" #: FEditBookmark.form:40 msgid "Down" msgstr "أسفل" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "أزل" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr " اغلق" #: FFileProperties.class:117 msgid "Image" msgstr "صورة" #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "مرئي" #: FFileProperties.class:185 msgid "&1 properties" msgstr "" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "عام" #: FFileProperties.form:81 msgid "Type" msgstr " النّوع" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr " الدّليل" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "القياس" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "" #: FFileProperties.form:144 msgid "Permissions" msgstr "" #: FFileProperties.form:157 msgid "Owner" msgstr "" #: FFileProperties.form:169 msgid "Group" msgstr "" #: FFileProperties.form:180 msgid "Preview" msgstr "معاينة" #: FFileProperties.form:245 msgid "Errors" msgstr "أخطاء" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "" #: FFontChooser.form:95 msgid "Bold" msgstr "عريض" #: FFontChooser.form:102 msgid "Italic" msgstr "مائل" #: FFontChooser.form:109 msgid "Underline" msgstr "تسطير" #: FFontChooser.form:116 msgid "Strikeout" msgstr "مشطّب" #: FFontChooser.form:125 msgid "Relative" msgstr "" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "أضف" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.class:26 msgid "PDF files" msgstr "" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "" #: FSidePanel.class:1139 msgid "Hidden" msgstr "" #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "ال&تالي" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "تالي" #: FWizard.form:64 msgid "Previous" msgstr "السابق" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "" #: Main.module:52 msgid "&1 KiB" msgstr "" #: Main.module:59 msgid "&1 MiB" msgstr "" #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "" gambas-3.16.3/comp/src/gb.form/.lang/ca.po000066400000000000000000000305121411575327000200450ustar00rootroot00000000000000# Catalan translation of gb.form # Copyright (C) 2000-2010 Benoît Minisini. # This file is distributed under the same license as gb.form package. # Jordi Sayol , 2007-2010. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:40 UTC\n" "Last-Translator: Benoît Minisini \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 "More controls for graphical components" msgstr "Més controls per als components gràfics" #: CBookmarkList.class:51 msgid "Home" msgstr "Inici" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Escriptori" #: CBookmarkList.class:55 msgid "System" msgstr "Sistema" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:535 msgid "Cannot rename directory." msgstr "No es pot canviar el nom del directori." #: DirView.class:566 msgid "New folder" msgstr "Nova carpeta" #: DirView.class:585 msgid "Cannot create directory." msgstr "No es pot crear el directori." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Avui" #: FCalendar.form:54 msgid "Previous month" msgstr "Mes anterior" #: FCalendar.form:60 msgid "Next month" msgstr "Mes següent" #: FCalendar.form:147 msgid "Apply" msgstr "" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Seguiu la graella de color" #: FDirChooser.class:438 msgid "Directory not found." msgstr "" #: FDirChooser.class:547 msgid "All files (*)" msgstr "Tots els fitxers (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Sobreescriu" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Aquest fitxer ja existeix.\n" "\n" "El voleu sobreescriure?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "Crea adreça d'&interès del directori actual" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "&Edita les adreces d'interès..." #: FDirChooser.class:1023 msgid "Show &details" msgstr "Mostra els &detalls" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Mostra els fitxers &ocults" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "" #: FDirChooser.class:1043 msgid "&Rename" msgstr "" #: FDirChooser.class:1048 msgid "Copy" msgstr "Copia" #: FDirChooser.class:1053 msgid "&Delete" msgstr "" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "&Descomprimeix el fitxer" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Crea un directori" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Obre amb el gestor de &fitxers..." #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Actualitza" #: FDirChooser.class:1088 msgid "&Properties" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Sobreescriure" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Sobreescriure-ho tot" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Aquest fitxer o directori ja existeix." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "No es pot descomprimir el fitxer." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Fitxer desconegut." #: FDirChooser.class:1431 msgid "Delete file" msgstr "" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:68 msgid "Parent directory" msgstr "" #: FDirChooser.form:74 msgid "Root directory" msgstr "" #: FDirChooser.form:139 msgid "Image preview" msgstr "" #: FDirChooser.form:147 msgid "Detailed view" msgstr "" #: FDirChooser.form:155 msgid "File properties" msgstr "" #: FDirChooser.form:161 msgid "Show files" msgstr "Mostra els fitxers" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Adreces d'interès" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "D'acord" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Canceŀla" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Nom" #: FEditBookmark.class:24 msgid "Path" msgstr "Camí" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Segur que voleu esborrar aquest adreça d'interès?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Edita les adreces d'interès" #: FEditBookmark.form:34 msgid "Up" msgstr "Puja" #: FEditBookmark.form:40 msgid "Down" msgstr "Avall" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Suprimeix" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Tanca" #: FFileProperties.class:117 msgid "Image" msgstr "Imatge" #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "Vídeo" #: FFileProperties.class:185 msgid "&1 properties" msgstr "" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "General" #: FFileProperties.form:81 msgid "Type" msgstr "Tipus" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "Directori" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Mida" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Última modificació" #: FFileProperties.form:144 msgid "Permissions" msgstr "" #: FFileProperties.form:157 msgid "Owner" msgstr "" #: FFileProperties.form:169 msgid "Group" msgstr "" #: FFileProperties.form:180 msgid "Preview" msgstr "Vista prèvia" # gb-ignore #: FFileProperties.form:245 msgid "Errors" msgstr "" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Jove xef, porti whisky amb quinze glaçons d'hidrogen, coi!" #: FFontChooser.form:95 msgid "Bold" msgstr "Negreta" #: FFontChooser.form:102 msgid "Italic" msgstr "Cursiva" #: FFontChooser.form:109 msgid "Underline" msgstr "Subratllat" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Barrat" #: FFontChooser.form:125 msgid "Relative" msgstr "" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Afegeix" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "Mostra els fitxers" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "No tornis a mostrar aquest missatge" #: FSidePanel.class:1139 msgid "Hidden" msgstr "" #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Següent" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Següent" #: FWizard.form:64 msgid "Previous" msgstr "Previ" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "El caràcter '/' no està permès dins el nom de fitxers o directoris." #: Main.module:52 msgid "&1 KiB" msgstr "" #: Main.module:59 msgid "&1 MiB" msgstr "" #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Pas número &1" gambas-3.16.3/comp/src/gb.form/.lang/cs.po000066400000000000000000000306411411575327000200720ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:42 UTC\n" "Last-Translator: Benoît Minisini \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 "More controls for graphical components" msgstr "Další ovládací prvky pro grafické komponenty" #: CBookmarkList.class:51 msgid "Home" msgstr "Domů" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Pracovní plocha" #: CBookmarkList.class:55 msgid "System" msgstr "Systém" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Nelze přejmenovat adresář." #: DirView.class:566 msgid "New folder" msgstr "Nová složka" #: DirView.class:585 msgid "Cannot create directory." msgstr "Nelze vytvořit adresář." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Dnes" #: FCalendar.form:54 msgid "Previous month" msgstr "Předchozí měsíc" #: FCalendar.form:60 msgid "Next month" msgstr "Následující měsíc" #: FCalendar.form:147 msgid "Apply" msgstr "Aplikovat" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Následuj barvu mřížky" #: FDirChooser.class:438 msgid "Directory not found." msgstr "" #: FDirChooser.class:547 msgid "All files (*)" msgstr "Všechny soubory (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Přepsat" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Tento soubor již existuje.\n" "\n" "Chcete jej přepsat?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "Přidat adresář do &záložek" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "Upravit &záložky..." #: FDirChooser.class:1023 msgid "Show &details" msgstr "Zobrazit &detaily" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Zobrazit &skryté soubory" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "Zobrazit &náhled obrázku" #: FDirChooser.class:1043 msgid "&Rename" msgstr "Pře&jmenovat" #: FDirChooser.class:1048 msgid "Copy" msgstr "Kopírovat" #: FDirChooser.class:1053 msgid "&Delete" msgstr "S&mazat" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "&Rozbalit soubor" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "Vy&tvořit adresář" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Otevřít v &souborevém manageru..." #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Obnovit" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Vlastnosti" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Přepsat" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Vše přepsat" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Tento soubor nebo adresář již existuje." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "Nelze rozbalit soubor." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Neznámí archív." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Smazat soubor" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "Opravdu chcete smazat tento soubor?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Soubor nelze odstranit." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:68 msgid "Parent directory" msgstr "Rodičovský adresář" #: FDirChooser.form:74 msgid "Root directory" msgstr "" #: FDirChooser.form:139 msgid "Image preview" msgstr "Náhled obrázku" #: FDirChooser.form:147 msgid "Detailed view" msgstr "" #: FDirChooser.form:155 msgid "File properties" msgstr "" #: FDirChooser.form:161 msgid "Show files" msgstr "Zobrazit soubory" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Záložky" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Zrušit" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Název" #: FEditBookmark.class:24 msgid "Path" msgstr "Cesta" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Opravdu chcete odstranit tuto záložku?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Upravit záložky" #: FEditBookmark.form:34 msgid "Up" msgstr "Nahoru" #: FEditBookmark.form:40 msgid "Down" msgstr "Dolů" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Odebrat" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Zavřít" #: FFileProperties.class:117 msgid "Image" msgstr "Obrázek" #: FFileProperties.class:122 msgid "Audio" msgstr "" # gb-ignore #: FFileProperties.class:126 msgid "Video" msgstr "" #: FFileProperties.class:185 msgid "&1 properties" msgstr "&1 vlastnosti" # gb-ignore #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "Obecně" #: FFileProperties.form:81 msgid "Type" msgstr "Typ" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "Adresář" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Velikost" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Poslední změna" #: FFileProperties.form:144 msgid "Permissions" msgstr "Oprávnění" #: FFileProperties.form:157 msgid "Owner" msgstr "Vlastník" #: FFileProperties.form:169 msgid "Group" msgstr "Skupina" #: FFileProperties.form:180 msgid "Preview" msgstr "Náhled" #: FFileProperties.form:245 msgid "Errors" msgstr "Chyby" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Příliš žluťoučký kůň úpěl ďábelské ódy" #: FFontChooser.form:95 msgid "Bold" msgstr "Tučné" #: FFontChooser.form:102 msgid "Italic" msgstr "Kurzíva" #: FFontChooser.form:109 msgid "Underline" msgstr "Podtržené" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Přeškrknuté" #: FFontChooser.form:125 msgid "Relative" msgstr "Relativní" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Přidat" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "Zobrazit soubory" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Již nezobrazovat" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Skryté" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Průhlednost" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Další" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Další" #: FWizard.form:64 msgid "Previous" msgstr "Předchozí" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "Nelze přejmonovat soubor." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Název souboru nebo adresáře nemůže být neplatný." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Uvnitř názvu souboru nebo adresáře je znak '/' zakázán." # gb-ignore #: Main.module:52 msgid "&1 KiB" msgstr "" # gb-ignore #: Main.module:59 msgid "&1 MiB" msgstr "" # gb-ignore #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Krok #&1" gambas-3.16.3/comp/src/gb.form/.lang/de.po000066400000000000000000000320031411575327000200470ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:40 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Mehr Steuerelemente für grafische Komponenten" #: CBookmarkList.class:51 msgid "Home" msgstr "Startseite" # gb-ignore #: CBookmarkList.class:53 msgid "Desktop" msgstr "" # gb-ignore #: CBookmarkList.class:55 msgid "System" msgstr "" #: ColorPalette.class:143 msgid "Last colors" msgstr "Letzte Farben" #: ColorPalette.class:244 msgid "Remove color" msgstr "Farbe entfernen" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "All Farben entfernen" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Farben sortieren" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Verzeichnis kann nicht umbenannt werden." #: DirView.class:566 msgid "New folder" msgstr "Neuer Ordner" #: DirView.class:585 msgid "Cannot create directory." msgstr "Verzeichnis kann nicht erstellt werden." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Heute" #: FCalendar.form:54 msgid "Previous month" msgstr "Voriger Monat" #: FCalendar.form:60 msgid "Next month" msgstr "Nächster Monat" #: FCalendar.form:147 msgid "Apply" msgstr "Anwenden" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Farb-Raster folgen" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Verzeichnis nicht gefunden." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Alle Dateien (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Überschreiben" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Diese Datei existiert bereits.\n" "\n" "Wollen Sie sie überschreiben?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "Lesezeichen für aktuelles Verzeichnis er&stellen" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "&Lesezeichen bearbeiten..." #: FDirChooser.class:1023 msgid "Show &details" msgstr "Details an&zeigen" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "&Versteckte Dateien anzeigen" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "&Bildvorschau anzeigen" #: FDirChooser.class:1043 msgid "&Rename" msgstr "&Umbenennen" #: FDirChooser.class:1048 msgid "Copy" msgstr "Kopieren" #: FDirChooser.class:1053 msgid "&Delete" msgstr "&Löschen" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "Datei ent&komprimieren" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Verzeichnis erstellen" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Im &Dateimanager öffnen..." #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Aktualisieren" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Eigenschaften" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Überschreiben" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Alle überschreiben" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Datei oder Verzeichnis existiert bereits." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "Archivinhalt kann nicht aufgelistet werden" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "Datei kann nicht entkomprimiert werden." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Unbekanntes Archiv." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Datei löschen" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "Wollen Sie diese Datei wirklich löschen?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Datei konnte nicht gelöscht werden." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Verzeichnis löschen" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "Wollen Sie dieses Verzeichnis wirklich löschen?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "Nicht in der Lage, Verzeichnis zu löschen." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Übergeordnetes Verzeichnis" #: FDirChooser.form:74 msgid "Root directory" msgstr "Wurzelverzeichnis" #: FDirChooser.form:139 msgid "Image preview" msgstr "Bildvorschau" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Detaillierte Anzeige" #: FDirChooser.form:155 msgid "File properties" msgstr "Datei-Eigenschaften" #: FDirChooser.form:161 msgid "Show files" msgstr "Dateien anzeigen" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Lesezeichen" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Abbrechen" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" # gb-ignore #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "" #: FEditBookmark.class:24 msgid "Path" msgstr "Pfad" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Wollen Sie dieses Lesezeichen wirklich entfernen?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Lesezeichen bearbeiten" #: FEditBookmark.form:34 msgid "Up" msgstr "Herauf" #: FEditBookmark.form:40 msgid "Down" msgstr "Herunter" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Entfernen" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Schließen" #: FFileProperties.class:117 msgid "Image" msgstr "Bild" #: FFileProperties.class:122 msgid "Audio" msgstr "Audio" #: FFileProperties.class:126 msgid "Video" msgstr "Video" #: FFileProperties.class:185 msgid "&1 properties" msgstr "&1 Eigenschaften" # gb-ignore #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "keine Datei" #: FFileProperties.class:223 msgid "one file" msgstr "eine Datei" #: FFileProperties.class:225 msgid "files" msgstr "Dateien" #: FFileProperties.class:229 msgid "no directory" msgstr "kein Verzeichnis" #: FFileProperties.class:231 msgid "one directory" msgstr "ein Verzeichnis" #: FFileProperties.class:233 msgid "directories" msgstr "Verzeichnisse" #: FFileProperties.form:52 msgid "General" msgstr "Allgemein" #: FFileProperties.form:81 msgid "Type" msgstr "Typ" #: FFileProperties.form:94 msgid "Link" msgstr "Verbinden" #: FFileProperties.form:108 msgid "Directory" msgstr "Verzeichnis" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Größe" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Zuletzt verändert" #: FFileProperties.form:144 msgid "Permissions" msgstr "Rechte" #: FFileProperties.form:157 msgid "Owner" msgstr "Besitzer" #: FFileProperties.form:169 msgid "Group" msgstr "Gruppe" #: FFileProperties.form:180 msgid "Preview" msgstr "Vorschau" #: FFileProperties.form:245 msgid "Errors" msgstr "Fehler" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Franz jagt im verwahrlosten Taxi quer durch Bayern" #: FFontChooser.form:95 msgid "Bold" msgstr "Fett" #: FFontChooser.form:102 msgid "Italic" msgstr "Kursiv" #: FFontChooser.form:109 msgid "Underline" msgstr "Unterstrichen" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Durchgestrichen" #: FFontChooser.form:125 msgid "Relative" msgstr "Relativ" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Hinzufügen" #: FListEditor.form:45 msgid "Add item" msgstr "Element hinzufügen" #: FListEditor.form:52 msgid "Remove item" msgstr "Element entfernen" #: FListEditor.form:59 msgid "Move item up" msgstr "Element herauf bewegen" #: FListEditor.form:66 msgid "Move item down" msgstr "Element herunter bewegen" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "Dateien" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Diese Meldung nicht mehr anzeigen" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Versteckt" # gb-ignore #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Weiter" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Weiter" #: FWizard.form:64 msgid "Previous" msgstr "Zurück" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "Datei kann nicht umbenannt werden." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Eine Datei oder ein Verzeichnisname kann nicht ungültig sein." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Das Zeichen '/' ist in Datei- oder Verzeichnisnamen nicht erlaubt." # gb-ignore #: Main.module:52 msgid "&1 KiB" msgstr "" # gb-ignore #: Main.module:59 msgid "&1 MiB" msgstr "" # gb-ignore #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Schritt #&1" gambas-3.16.3/comp/src/gb.form/.lang/es.po000066400000000000000000000316201411575327000200720ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Más controles para los componentes gráficos" #: CBookmarkList.class:51 msgid "Home" msgstr "Home" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Escritorio" #: CBookmarkList.class:55 msgid "System" msgstr "Sistema" #: ColorPalette.class:143 msgid "Last colors" msgstr "Colores recientes" #: ColorPalette.class:244 msgid "Remove color" msgstr "Eliminar color" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Eliminar todos los colores" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Ordenar colores" #: DirView.class:535 msgid "Cannot rename directory." msgstr "No se puede renombrar el directorio." #: DirView.class:566 msgid "New folder" msgstr "Nueva carpeta" #: DirView.class:585 msgid "Cannot create directory." msgstr "No se puede crear el directorio." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Hoy" #: FCalendar.form:54 msgid "Previous month" msgstr "Mes anterior" #: FCalendar.form:60 msgid "Next month" msgstr "Próximo mes" #: FCalendar.form:147 msgid "Apply" msgstr "Aplicar" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Seguir el color de la rejilla" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Directorio no encontrado." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Todos los archivos (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Sobrescribir" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Este archivo ya existe\n" "\n" "¿Quiere sobrescribirlo?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "Crear &marcador para este directorio" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "&Editar marcadores" #: FDirChooser.class:1023 msgid "Show &details" msgstr "Mostrar &detalles" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Mostrar archivos &ocultos" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "Mostrar vista previa de &imagen" #: FDirChooser.class:1043 msgid "&Rename" msgstr "&Renombrar" #: FDirChooser.class:1048 msgid "Copy" msgstr "Copiar" #: FDirChooser.class:1053 msgid "&Delete" msgstr "&Borrar" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "&Descomprimir archivo" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Crear directorio" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "&Abrir en el administrador de archivos" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Refrescar" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Propiedades" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Sobrescribir" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Sobrescribir todos" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "El fichero o directorio ya existe." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "No se puede listar el contenido del archivo" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "No se puede descomprimir el archivo." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Archivo desconocido." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Borrar archivo" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "¿Seguro que quieres borrar este archivo?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Imposible borrar archivo." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Eliminar directorio" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "¿Realmente quieres borrar ese directorio?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "No se puede eliminar el directorio." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Directorio padre" #: FDirChooser.form:74 msgid "Root directory" msgstr "Directorio raíz" #: FDirChooser.form:139 msgid "Image preview" msgstr "Vista preliminar" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Vista detallada" #: FDirChooser.form:155 msgid "File properties" msgstr "Propiedades de archivo" #: FDirChooser.form:161 msgid "Show files" msgstr "Mostrar archivos" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Marcadores" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Cancelar" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Nombre" #: FEditBookmark.class:24 msgid "Path" msgstr "Ruta" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "¿Seguro que quieres borrar este marcador?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Editar marcadores" #: FEditBookmark.form:34 msgid "Up" msgstr "Arriba" #: FEditBookmark.form:40 msgid "Down" msgstr "Abajo" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Eliminar" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Cerrar" #: FFileProperties.class:117 msgid "Image" msgstr "Imagen" # gb-ignore #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "Video" #: FFileProperties.class:185 msgid "&1 properties" msgstr "Propiedades de &1" # gb-ignore #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "no hay archivo" #: FFileProperties.class:223 msgid "one file" msgstr "un archivo" #: FFileProperties.class:225 msgid "files" msgstr "archivos" #: FFileProperties.class:229 msgid "no directory" msgstr "no hay directorio" #: FFileProperties.class:231 msgid "one directory" msgstr "un directorio" #: FFileProperties.class:233 msgid "directories" msgstr "directorios" # gb-ignore #: FFileProperties.form:52 msgid "General" msgstr "" #: FFileProperties.form:81 msgid "Type" msgstr "Tipo" #: FFileProperties.form:94 msgid "Link" msgstr "Enlazar" #: FFileProperties.form:108 msgid "Directory" msgstr "Directorio" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Tamaño" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Última modificación" #: FFileProperties.form:144 msgid "Permissions" msgstr "Permisos" #: FFileProperties.form:157 msgid "Owner" msgstr "Propietario" #: FFileProperties.form:169 msgid "Group" msgstr "Grupo" #: FFileProperties.form:180 msgid "Preview" msgstr "Vista preliminar" #: FFileProperties.form:245 msgid "Errors" msgstr "Errores" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Jovencillo emponzoñado de whisky: ¡qué figurota exhibe!" #: FFontChooser.form:95 msgid "Bold" msgstr "Negrita" #: FFontChooser.form:102 msgid "Italic" msgstr "Cursiva" #: FFontChooser.form:109 msgid "Underline" msgstr "Subrayado" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Tachado" #: FFontChooser.form:125 msgid "Relative" msgstr "Relativo" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Añadir" #: FListEditor.form:45 msgid "Add item" msgstr "Añadir item" #: FListEditor.form:52 msgid "Remove item" msgstr "Eliminar item" #: FListEditor.form:59 msgid "Move item up" msgstr "Mover item arriba" #: FListEditor.form:66 msgid "Move item down" msgstr "Mover item abajo" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "archivos" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "No mostrar este mensaje de nuevo" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Oculto" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Transparente" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Siguiente" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Siguiente" #: FWizard.form:64 msgid "Previous" msgstr "Anterior" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "No se puede renombrar el archivo." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Un nombre de archivo o directorio no puede ser anulado." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "El caracter '/' esta prohibido dentro de los nombre de directorios o archivos" # gb-ignore #: Main.module:52 msgid "&1 KiB" msgstr "" # gb-ignore #: Main.module:59 msgid "&1 MiB" msgstr "" # gb-ignore #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Paso #&1" gambas-3.16.3/comp/src/gb.form/.lang/es_ES.po000066400000000000000000000316171411575327000204670ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:40 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Más controles para los componentes gráficos" #: CBookmarkList.class:51 msgid "Home" msgstr "Home" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Escritorio" #: CBookmarkList.class:55 msgid "System" msgstr "Sistema" #: ColorPalette.class:143 msgid "Last colors" msgstr "Colores recientes" #: ColorPalette.class:244 msgid "Remove color" msgstr "Eliminar color" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Eliminar todos los colores" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Ordenar colores" #: DirView.class:535 msgid "Cannot rename directory." msgstr "No se puede renombrar el directorio." #: DirView.class:566 msgid "New folder" msgstr "Nueva carpeta" #: DirView.class:585 msgid "Cannot create directory." msgstr "No se puede crear el directorio." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Hoy" #: FCalendar.form:54 msgid "Previous month" msgstr "Mes anterior" #: FCalendar.form:60 msgid "Next month" msgstr "Próximo mes" #: FCalendar.form:147 msgid "Apply" msgstr "Aplicar" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Seguir el color de la rejilla" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Directorio no encontrado." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Todos los archivos (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Sobrescribir" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "El archivo ya existe.\n" "\n" "¿Deseas sobrescribirlo?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "Crear &marcador para este directorio" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "&Editar marcadores" #: FDirChooser.class:1023 msgid "Show &details" msgstr "Mostrar &detalles" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Mostrar archivos &ocultos" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "Mostrar vista previa de &imagen" #: FDirChooser.class:1043 msgid "&Rename" msgstr "&Renombrar" #: FDirChooser.class:1048 msgid "Copy" msgstr "Copiar" #: FDirChooser.class:1053 msgid "&Delete" msgstr "&Borrar" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "&Descomprimir archivo" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Crear directorio" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "&Abrir en el administrador de archivos" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Refrescar" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Propiedades" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Sobrescribir" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Sobrescribir todos" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "El fichero o directorio ya existe." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "No se puede listar el contenido del archivo" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "No se puede descomprimir el archivo." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Archivo desconocido." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Borrar archivo" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "¿Seguro que quieres borrar este archivo?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Imposible borrar archivo." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Eliminar directorio" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "¿Realmente desea eliminar ese directorio?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "No se puede eliminar el directorio." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Directorio padre" #: FDirChooser.form:74 msgid "Root directory" msgstr "Directorio raíz" #: FDirChooser.form:139 msgid "Image preview" msgstr "Vista preliminar" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Vista detallada" #: FDirChooser.form:155 msgid "File properties" msgstr "Propiedades de archivo" #: FDirChooser.form:161 msgid "Show files" msgstr "Mostrar archivos" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Marcadores" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Cancelar" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Nombre" #: FEditBookmark.class:24 msgid "Path" msgstr "Ruta" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "¿Seguro que quieres borrar este marcador?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Editar marcadores" #: FEditBookmark.form:34 msgid "Up" msgstr "Arriba" #: FEditBookmark.form:40 msgid "Down" msgstr "Abajo" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Eliminar" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Cerrar" #: FFileProperties.class:117 msgid "Image" msgstr "Imagen" # gb-ignore #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "Video" #: FFileProperties.class:185 msgid "&1 properties" msgstr "Propiedades de &1" # gb-ignore #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "no hay archivo" #: FFileProperties.class:223 msgid "one file" msgstr "un archivo" #: FFileProperties.class:225 msgid "files" msgstr "archivos" #: FFileProperties.class:229 msgid "no directory" msgstr "no hay directorio" #: FFileProperties.class:231 msgid "one directory" msgstr "un directorio" #: FFileProperties.class:233 msgid "directories" msgstr "directorios" # gb-ignore #: FFileProperties.form:52 msgid "General" msgstr "" #: FFileProperties.form:81 msgid "Type" msgstr "Tipo" #: FFileProperties.form:94 msgid "Link" msgstr "Enlace" #: FFileProperties.form:108 msgid "Directory" msgstr "Directorio" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Tamaño" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Última modificación" #: FFileProperties.form:144 msgid "Permissions" msgstr "Permisos" #: FFileProperties.form:157 msgid "Owner" msgstr "Propietario" #: FFileProperties.form:169 msgid "Group" msgstr "Grupo" #: FFileProperties.form:180 msgid "Preview" msgstr "Vista preliminar" #: FFileProperties.form:245 msgid "Errors" msgstr "Errores" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Jovencillo emponzoñado de whisky: ¡qué figurota exhibe!" #: FFontChooser.form:95 msgid "Bold" msgstr "Negrita" #: FFontChooser.form:102 msgid "Italic" msgstr "Cursiva" #: FFontChooser.form:109 msgid "Underline" msgstr "Subrayado" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Tachado" #: FFontChooser.form:125 msgid "Relative" msgstr "Relativo" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Añadir" #: FListEditor.form:45 msgid "Add item" msgstr "Añadir item" #: FListEditor.form:52 msgid "Remove item" msgstr "Eliminar item" #: FListEditor.form:59 msgid "Move item up" msgstr "Mover item arriba" #: FListEditor.form:66 msgid "Move item down" msgstr "Mover item abajo" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "archivos" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "No mostrar este mensaje de nuevo" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Oculto" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Transparente" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Siguiente" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Siguiente" #: FWizard.form:64 msgid "Previous" msgstr "Anterior" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "No se puede renombrar el archivo." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "No se puede anular un nombre de archivo o directorio." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "El caracter '/' esta prohibido dentro de los nombre de directorios o archivos" # gb-ignore #: Main.module:52 msgid "&1 KiB" msgstr "" # gb-ignore #: Main.module:59 msgid "&1 MiB" msgstr "" # gb-ignore #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Paso #&1" gambas-3.16.3/comp/src/gb.form/.lang/fa.po000066400000000000000000000264531411575327000200610ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.14.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2020-06-06 18:08 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "" #: CBookmarkList.class:51 msgid "Home" msgstr "آغازه" #: CBookmarkList.class:53 msgid "Desktop" msgstr "رومیزی" #: CBookmarkList.class:55 msgid "System" msgstr "سیستم" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:535 msgid "Cannot rename directory." msgstr "" #: DirView.class:566 msgid "New folder" msgstr "" #: DirView.class:585 msgid "Cannot create directory." msgstr "" #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "امروز" #: FCalendar.form:54 msgid "Previous month" msgstr "ماه قبل" #: FCalendar.form:60 msgid "Next month" msgstr "ماه بعد" #: FCalendar.form:147 msgid "Apply" msgstr "" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "" #: FDirChooser.class:438 msgid "Directory not found." msgstr "" #: FDirChooser.class:547 msgid "All files (*)" msgstr "" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "" #: FDirChooser.class:1023 msgid "Show &details" msgstr "" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "" #: FDirChooser.class:1043 msgid "&Rename" msgstr "" #: FDirChooser.class:1048 msgid "Copy" msgstr "کپی" #: FDirChooser.class:1053 msgid "&Delete" msgstr "" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "" #: FDirChooser.class:1088 msgid "&Properties" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "" #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "" #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "" #: FDirChooser.class:1431 msgid "Delete file" msgstr "" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:68 msgid "Parent directory" msgstr "" #: FDirChooser.form:74 msgid "Root directory" msgstr "" #: FDirChooser.form:139 msgid "Image preview" msgstr "" #: FDirChooser.form:147 msgid "Detailed view" msgstr "" #: FDirChooser.form:155 msgid "File properties" msgstr "" #: FDirChooser.form:161 msgid "Show files" msgstr "" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "تائید" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "لغو" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "نام" #: FEditBookmark.class:24 msgid "Path" msgstr "" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "" #: FEditBookmark.form:34 msgid "Up" msgstr "بالا" #: FEditBookmark.form:40 msgid "Down" msgstr "_پایین" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "حذف‌" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "بستن" #: FFileProperties.class:117 msgid "Image" msgstr "تصویر" #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "ویدیو" #: FFileProperties.class:185 msgid "&1 properties" msgstr "" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "عمومی" #: FFileProperties.form:81 msgid "Type" msgstr "نوع" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "پوشه" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "اندازه" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "" #: FFileProperties.form:144 msgid "Permissions" msgstr "" #: FFileProperties.form:157 msgid "Owner" msgstr "" #: FFileProperties.form:169 msgid "Group" msgstr "" #: FFileProperties.form:180 msgid "Preview" msgstr "" #: FFileProperties.form:245 msgid "Errors" msgstr "خطاها" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "" #: FFontChooser.form:95 msgid "Bold" msgstr "" #: FFontChooser.form:102 msgid "Italic" msgstr "کج" #: FFontChooser.form:109 msgid "Underline" msgstr "خط زیر" #: FFontChooser.form:116 msgid "Strikeout" msgstr "باطل کردن" #: FFontChooser.form:125 msgid "Relative" msgstr "" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "افزودن‌" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.class:26 msgid "PDF files" msgstr "" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "" #: FSidePanel.class:1139 msgid "Hidden" msgstr "" #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&بعدی‌" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "بعدی" #: FWizard.form:64 msgid "Previous" msgstr "قبلی" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "" #: Main.module:52 msgid "&1 KiB" msgstr "" #: Main.module:59 msgid "&1 MiB" msgstr "" #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "" gambas-3.16.3/comp/src/gb.form/.lang/fr.po000066400000000000000000000236401411575327000200750ustar00rootroot00000000000000# #-#-#-#-# FFontChooser.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/2.0/src/gb.qt/src/gb.qt/FFontChooser.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FMain.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/2.0/src/gb.qt/src/gb.qt/FMain.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# FontChooser.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/2.0/src/gb.qt/src/gb.qt/FontChooser.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# #project.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/2.0/src/gb.qt/src/gb.qt/.project # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # # #-#-#-#-# ValueBox.pot (PACKAGE VERSION) #-#-#-#-# # /home/benoit/gambas/2.0/src/gb.qt/src/gb.qt/ValueBox.class # Generated by Gambas compiler # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "PO-Revision-Date: 2021-03-25 01:35 UTC\n" "Last-Translator: Benoît Minisini \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 "More controls for graphical components" msgstr "Contrôles graphiques supplémentaires" #: CBookmarkList.class:51 msgid "Home" msgstr "Dossier personnel" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Bureau" #: CBookmarkList.class:55 msgid "System" msgstr "Système" #: ColorPalette.class:143 msgid "Last colors" msgstr "Dernières couleurs" #: ColorPalette.class:244 msgid "Remove color" msgstr "Retirer la couleur" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Retirer toutes les couleurs" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Trier les couleurs" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Impossible de renommer le répertoire." #: DirView.class:566 msgid "New folder" msgstr "Nouveau répertoire" #: DirView.class:585 msgid "Cannot create directory." msgstr "Impossible de créer le répertoire." #: FCalendar.form:48 msgid "Today" msgstr "Aujourd'hui" #: FCalendar.form:54 msgid "Previous month" msgstr "Mois précédent" #: FCalendar.form:60 msgid "Next month" msgstr "Mois suivant" #: FCalendar.form:147 msgid "Apply" msgstr "Appliquer" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Suivre la grille de couleurs" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Répertoire introuvable." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Tous les fichiers (*)" #: FDirChooser.class:887 msgid "&Overwrite" msgstr "&Remplacer" #: FDirChooser.class:887 msgid "This file already exists.\n\nDo you want to overwrite it?" msgstr "Ce fichier existe déjà.\n\nDésirez-vous le remplacer ?" #: FDirChooser.class:1005 msgid "&Bookmark current directory" msgstr "&Marquer le répertoire courant" #: FDirChooser.class:1013 msgid "&Edit bookmarks..." msgstr "&Editer les signets..." #: FDirChooser.class:1024 msgid "Show &details" msgstr "Vue &détaillée" #: FDirChooser.class:1030 msgid "Show &hidden files" msgstr "Afficher les fichiers &cachés" #: FDirChooser.class:1036 msgid "Show &image preview" msgstr "Prévisualisation des &images" #: FDirChooser.class:1044 msgid "&Rename" msgstr "&Renommer" #: FDirChooser.class:1049 msgid "Copy" msgstr "Copier" #: FDirChooser.class:1054 msgid "&Delete" msgstr "&Supprimer" #: FDirChooser.class:1066 msgid "&Uncompress file" msgstr "&Décompresser le fichier" #: FDirChooser.class:1071 msgid "&Create directory" msgstr "&Créer un répertoire" #: FDirChooser.class:1076 msgid "Open in &file manager..." msgstr "Ouvrir dans le gestionnaire de &fichiers..." #: FDirChooser.class:1081 msgid "&Refresh" msgstr "&Actualiser" #: FDirChooser.class:1089 msgid "&Properties" msgstr "&Propriétés" #: FDirChooser.class:1303 msgid "Overwrite" msgstr "Ecraser" #: FDirChooser.class:1303 msgid "Overwrite all" msgstr "Tout écraser" #: FDirChooser.class:1303 msgid "This file or directory already exists." msgstr "Ce fichier ou ce répertoire existe déjà." #: FDirChooser.class:1324 msgid "Cannot list archive contents" msgstr "Impossible de lister le contenu de l'archive" #: FDirChooser.class:1364 msgid "Cannot uncompress file." msgstr "Impossible de décompresser le fichier." #: FDirChooser.class:1364 msgid "Unknown archive." msgstr "Archive inconnue." #: FDirChooser.class:1432 msgid "Delete file" msgstr "Supprimer le fichier" #: FDirChooser.class:1433 msgid "Do you really want to delete that file?" msgstr "Désirez-vous réellement supprimer ce fichier ?" #: FDirChooser.class:1440 msgid "Unable to delete file." msgstr "Impossible de supprimer le fichier." #: FDirChooser.class:1450 msgid "Delete directory" msgstr "Supprimer le répertoire" #: FDirChooser.class:1451 msgid "Do you really want to delete that directory?" msgstr "Désirez-vous vraiment supprimer ce répertoire ?" #: FDirChooser.class:1458 msgid "Unable to delete directory." msgstr "Impossible de supprimer le répertoire." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Répertoire parent" #: FDirChooser.form:74 msgid "Root directory" msgstr "Répertoire racine" #: FDirChooser.form:139 msgid "Image preview" msgstr "Prévisualisation des images" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Vue détaillée" #: FDirChooser.form:155 msgid "File properties" msgstr "Propriétés du fichier" #: FDirChooser.form:161 msgid "Show files" msgstr "Afficher les fichiers" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Signets" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 msgid "OK" msgstr "OK" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 FSidePanel.class:1149 FWizard.form:52 msgid "Cancel" msgstr "Annuler" #: FEditBookmark.class:23 FileView.class:148 msgid "Name" msgstr "Nom" #: FEditBookmark.class:24 msgid "Path" msgstr "Emplacement" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Désirez-vous réellement supprimer ce signet ?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Edition des signets" #: FEditBookmark.form:34 msgid "Up" msgstr "Haut" #: FEditBookmark.form:40 msgid "Down" msgstr "Bas" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Supprimer" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Fermer" #: FFileProperties.class:117 msgid "Image" msgstr "Image" #: FFileProperties.class:122 msgid "Audio" msgstr "Audio" #: FFileProperties.class:126 msgid "Video" msgstr "Vidéo" #: FFileProperties.class:185 msgid "&1 properties" msgstr "Propriétés de &1" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "&1 o" #: FFileProperties.class:221 msgid "no file" msgstr "aucun fichier" #: FFileProperties.class:223 msgid "one file" msgstr "un fichier" #: FFileProperties.class:225 msgid "files" msgstr "fichiers" #: FFileProperties.class:229 msgid "no directory" msgstr "aucun répertoire" #: FFileProperties.class:231 msgid "one directory" msgstr "un répertoire" #: FFileProperties.class:233 msgid "directories" msgstr "répertoires" #: FFileProperties.form:52 msgid "General" msgstr "Général" #: FFileProperties.form:82 msgid "Type" msgstr "Type" #: FFileProperties.form:95 msgid "Link" msgstr "Lien" #: FFileProperties.form:109 msgid "Directory" msgstr "Répertoire" #: FFileProperties.form:121 FileView.class:150 msgid "Size" msgstr "Taille" #: FFileProperties.form:133 FileView.class:152 msgid "Last modified" msgstr "Modifié le" #: FFileProperties.form:145 msgid "Permissions" msgstr "Permissions" #: FFileProperties.form:158 msgid "Owner" msgstr "Propriétaire" #: FFileProperties.form:170 msgid "Group" msgstr "Groupe" #: FFileProperties.form:180 msgid "Preview" msgstr "Aperçu" #: FFileProperties.form:245 msgid "Errors" msgstr "Erreurs" #: FFontChooser.class:374 msgid "How quickly daft jumping zebras vex" msgstr "Portez ce vieux whisky au juge blond qui fume" #: FFontChooser.form:60 msgid "Building cache" msgstr "Construction du cache" #: FFontChooser.form:67 msgid "Refresh cache" msgstr "Rafraîchir le cache" #: FFontChooser.form:73 msgid "Show font preview" msgstr "Afficher l'aperçu des polices" #: FFontChooser.form:96 msgid "Bold" msgstr "Gras" #: FFontChooser.form:103 msgid "Italic" msgstr "Italique" #: FFontChooser.form:110 msgid "Underline" msgstr "Souligné" #: FFontChooser.form:117 msgid "Strikeout" msgstr "Barré" #: FFontChooser.form:126 msgid "Relative" msgstr "Relatif" #: FListEditor.class:264 msgid "Add" msgstr "Ajouter" #: FListEditor.form:45 msgid "Add item" msgstr "Ajouter un élément" #: FListEditor.form:52 msgid "Remove item" msgstr "Supprimer l'élément" #: FListEditor.form:59 msgid "Move item up" msgstr "Déplacer l'élément vers le haut" #: FListEditor.form:66 msgid "Move item down" msgstr "Déplacer l'élément vers le bas" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Ne plus afficher ce message" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Masqué" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Transparent" #: FWizard.class:88 msgid "&Next" msgstr "&Suivant" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Suivant" #: FWizard.form:64 msgid "Previous" msgstr "Précédent" #: FileView.class:161 msgid "No file in this folder." msgstr "Aucun fichier dans ce répertoire." #: FileView.class:1145 msgid "Cannot rename file." msgstr "Impossible de renommer le fichier." #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Le nom d'un fichier ou d'un répertoire ne peut être vide." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Le caractère '/' est interdit dans les noms de fichiers ou de répertoires." #: Main.module:52 msgid "&1 KiB" msgstr "&1 Kio" #: Main.module:59 msgid "&1 MiB" msgstr "&1 Mio" #: Main.module:66 msgid "&1 GiB" msgstr "&1 Gio" #: Wizard.class:86 msgid "Step #&1" msgstr "Étape n°&1" gambas-3.16.3/comp/src/gb.form/.lang/it.po000066400000000000000000000316111411575327000200770ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Ulteriori controlli per i componenti grafici" # gb-ignore #: CBookmarkList.class:51 msgid "Home" msgstr "" # gb-ignore #: CBookmarkList.class:53 msgid "Desktop" msgstr "" #: CBookmarkList.class:55 msgid "System" msgstr "Sistema" #: ColorPalette.class:143 msgid "Last colors" msgstr "Ultimi colori" #: ColorPalette.class:244 msgid "Remove color" msgstr "Rimuovi il colore" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Rimuovi tutti i colori" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Ordina i colori" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Impossibile rinominare la cartella." #: DirView.class:566 msgid "New folder" msgstr "Nuova cartella" #: DirView.class:585 msgid "Cannot create directory." msgstr "Impossibile creare la cartella." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Oggi" #: FCalendar.form:54 msgid "Previous month" msgstr "Mese precedente" #: FCalendar.form:60 msgid "Next month" msgstr "Prossimo mese" #: FCalendar.form:147 msgid "Apply" msgstr "Applica" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Segui la tabella dei colori" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Directory non trovata." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Tutti i file (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Sovrascrivi" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Questo file esiste già.\n" "\n" "Vuoi sovrascriverlo?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "&Marca la directory corrente" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "Modifica i s&egnalibri..." #: FDirChooser.class:1023 msgid "Show &details" msgstr "Mostra &dettagli" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Mostra i file &nascosti" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "Mostra anteprima &immagine" #: FDirChooser.class:1043 msgid "&Rename" msgstr "&Rinomina" #: FDirChooser.class:1048 msgid "Copy" msgstr "Copia" #: FDirChooser.class:1053 msgid "&Delete" msgstr "&Cancella" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "&Decomprimi il file" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Crea la directory" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Apri nel &file manager..." #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Ricarica" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Proprietà" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Sovrascrivi" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Sovrascrivi tutto" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Questo file o directory già esiste." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "Impossibile elencare il contenuto dell'archivio" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "Impossibile decomprimere il file." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Archivio sconosciuto." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Elimina il file" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "Vuoi veramente eliminare questo file?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Impossibile eliminare il file." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Elimina la directory" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "Vuoi veramente eliminare questa directory?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "Impossibile eliminare la directory." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Cartella superiore" #: FDirChooser.form:74 msgid "Root directory" msgstr "Directory principale" #: FDirChooser.form:139 msgid "Image preview" msgstr "Anteprima immagine" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Vista dettagliata" #: FDirChooser.form:155 msgid "File properties" msgstr "Proprietà del file" #: FDirChooser.form:161 msgid "Show files" msgstr "Mostra i file" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Segnalibri" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Annulla" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Nome" #: FEditBookmark.class:24 msgid "Path" msgstr "Percorso" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Vuoi veramente eliminare questo segnalibro?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Modifica segnalibri" #: FEditBookmark.form:34 msgid "Up" msgstr "Su" #: FEditBookmark.form:40 msgid "Down" msgstr "Giù" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Rimuovi" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Chiudi" #: FFileProperties.class:117 msgid "Image" msgstr "Immagine" # gb-ignore #: FFileProperties.class:122 msgid "Audio" msgstr "" # gb-ignore #: FFileProperties.class:126 msgid "Video" msgstr "" #: FFileProperties.class:185 msgid "&1 properties" msgstr "Proprietà di &1" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "&1 B" #: FFileProperties.class:221 msgid "no file" msgstr "nessun file" #: FFileProperties.class:223 msgid "one file" msgstr "un file" #: FFileProperties.class:225 msgid "files" msgstr "file" #: FFileProperties.class:229 msgid "no directory" msgstr "nessuna directory" #: FFileProperties.class:231 msgid "one directory" msgstr "una directory" #: FFileProperties.class:233 msgid "directories" msgstr "directory" #: FFileProperties.form:52 msgid "General" msgstr "Generale" #: FFileProperties.form:81 msgid "Type" msgstr "Tipo" #: FFileProperties.form:94 msgid "Link" msgstr "Collegamento" #: FFileProperties.form:108 msgid "Directory" msgstr "Directory" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Dimensione" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Ultima modifica" #: FFileProperties.form:144 msgid "Permissions" msgstr "Permessi" #: FFileProperties.form:157 msgid "Owner" msgstr "Proprietario" #: FFileProperties.form:169 msgid "Group" msgstr "Gruppo" #: FFileProperties.form:180 msgid "Preview" msgstr "Anteprima" #: FFileProperties.form:245 msgid "Errors" msgstr "Errori" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Quel vituperabile xenofobo zelante assaggia il whisky ed esclama: alleluja!" #: FFontChooser.form:95 msgid "Bold" msgstr "Grassetto" #: FFontChooser.form:102 msgid "Italic" msgstr "Italico" #: FFontChooser.form:109 msgid "Underline" msgstr "Sottolineato" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Barrato" #: FFontChooser.form:125 msgid "Relative" msgstr "Relativo" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Aggiungi" #: FListEditor.form:45 msgid "Add item" msgstr "Aggiungi un elemento" #: FListEditor.form:52 msgid "Remove item" msgstr "Rimuovi l'elemento" #: FListEditor.form:59 msgid "Move item up" msgstr "Sposta l'elemento verso l'alto" #: FListEditor.form:66 msgid "Move item down" msgstr "Sposta l'elemento verso il basso" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "file" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Non mostrare più questo messaggio." #: FSidePanel.class:1139 msgid "Hidden" msgstr "Nascosto" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Trasparente" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "Segue&nte" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Prossimo" #: FWizard.form:64 msgid "Previous" msgstr "Precedente" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "Impossibile rinominare il file." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Il nome di un file o di una directory non può essere vuoto." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Nel nome dei file o delle directory è vietato il carattere '/' " #: Main.module:52 msgid "&1 KiB" msgstr "&1 KiB" #: Main.module:59 msgid "&1 MiB" msgstr "&1 MiB" #: Main.module:66 msgid "&1 GiB" msgstr "&1 GiB" #: Wizard.class:86 msgid "Step #&1" msgstr "Passo #&1" gambas-3.16.3/comp/src/gb.form/.lang/ja.po000066400000000000000000000273341411575327000200640ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "グラフィカルコンポーネント用の追加コントロール" #: CBookmarkList.class:51 msgid "Home" msgstr "ホーム" #: CBookmarkList.class:53 msgid "Desktop" msgstr "デスクトップ" #: CBookmarkList.class:55 msgid "System" msgstr "システム" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:535 msgid "Cannot rename directory." msgstr "フォルダ名を変更できません。" #: DirView.class:566 msgid "New folder" msgstr "新しいフォルダ" #: DirView.class:585 msgid "Cannot create directory." msgstr "フォルダを作成できません。" #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "今日" #: FCalendar.form:54 msgid "Previous month" msgstr "前月" #: FCalendar.form:60 msgid "Next month" msgstr "来月" #: FCalendar.form:147 msgid "Apply" msgstr "" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "" #: FDirChooser.class:438 msgid "Directory not found." msgstr "" #: FDirChooser.class:547 msgid "All files (*)" msgstr "すべてのファイル(*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "上書き(&O)" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "ファイルが既に存在します。\n" "\n" "上書きしますか?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "" #: FDirChooser.class:1023 msgid "Show &details" msgstr "" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "" #: FDirChooser.class:1043 msgid "&Rename" msgstr "" #: FDirChooser.class:1048 msgid "Copy" msgstr "クリップボードにコピーします" #: FDirChooser.class:1053 msgid "&Delete" msgstr "" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "" #: FDirChooser.class:1088 msgid "&Properties" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "" #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "" #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "" #: FDirChooser.class:1431 msgid "Delete file" msgstr "" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:68 msgid "Parent directory" msgstr "親フォルダ" #: FDirChooser.form:74 msgid "Root directory" msgstr "" #: FDirChooser.form:139 msgid "Image preview" msgstr "" #: FDirChooser.form:147 msgid "Detailed view" msgstr "" #: FDirChooser.form:155 msgid "File properties" msgstr "" #: FDirChooser.form:161 msgid "Show files" msgstr "ファイルを表示" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "キャンセル" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "名前" #: FEditBookmark.class:24 msgid "Path" msgstr "パス" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "" #: FEditBookmark.form:34 msgid "Up" msgstr "上へ" #: FEditBookmark.form:40 msgid "Down" msgstr "下へ" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "削除" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "閉じる" #: FFileProperties.class:117 msgid "Image" msgstr "イメージ" #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "ビデオ" #: FFileProperties.class:185 msgid "&1 properties" msgstr "" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "一般" #: FFileProperties.form:81 msgid "Type" msgstr "種類" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "フォルダ" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "サイズ" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "最終更新" #: FFileProperties.form:144 msgid "Permissions" msgstr "" #: FFileProperties.form:157 msgid "Owner" msgstr "" #: FFileProperties.form:169 msgid "Group" msgstr "" #: FFileProperties.form:180 msgid "Preview" msgstr "プレビュー" #: FFileProperties.form:245 msgid "Errors" msgstr "エラー" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "" #: FFontChooser.form:95 msgid "Bold" msgstr "ボールド" #: FFontChooser.form:102 msgid "Italic" msgstr "イタリック" #: FFontChooser.form:109 msgid "Underline" msgstr "下線" #: FFontChooser.form:116 msgid "Strikeout" msgstr "取り消し線" #: FFontChooser.form:125 msgid "Relative" msgstr "" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "追加" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "ファイルを表示" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "" #: FSidePanel.class:1139 msgid "Hidden" msgstr "" #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "次へ(&N)" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "次へ(N)" #: FWizard.form:64 msgid "Previous" msgstr "前へ(P)" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "" #: Main.module:52 msgid "&1 KiB" msgstr "" #: Main.module:59 msgid "&1 MiB" msgstr "" #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "ステップ #&1" gambas-3.16.3/comp/src/gb.form/.lang/nl.po000066400000000000000000000315401411575327000200750ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \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 "More controls for graphical components" msgstr "Meer controls voor grafische componenten" # gb-ignore #: CBookmarkList.class:51 msgid "Home" msgstr "" # gb-ignore #: CBookmarkList.class:53 msgid "Desktop" msgstr "" #: CBookmarkList.class:55 msgid "System" msgstr "Syteem" #: ColorPalette.class:143 msgid "Last colors" msgstr "Laatste kleuren" #: ColorPalette.class:244 msgid "Remove color" msgstr "Verwijder kleur" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Verwijder alle kleuren" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Kleuren sorteren" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Kan folder niet hernoemen" #: DirView.class:566 msgid "New folder" msgstr "Nieuwe folder" #: DirView.class:585 msgid "Cannot create directory." msgstr "Kan folder niet creeëren" #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Vandaag" #: FCalendar.form:54 msgid "Previous month" msgstr "Vorige maand" #: FCalendar.form:60 msgid "Next month" msgstr "Volgende maand" #: FCalendar.form:147 msgid "Apply" msgstr "Toepassen" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Volg kleurenrooster" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Folder niet gevonden" #: FDirChooser.class:547 msgid "All files (*)" msgstr "Alle bestanden (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Overschrijven" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Dit bestand bestaat reeds.\n" "\n" "Wil je het overschrijven?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "&Huidige folder als bladwijzer" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "&Bladwijzers bewerken" #: FDirChooser.class:1023 msgid "Show &details" msgstr "Details &weergeven" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Verbor&gen bestanden weergeven" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "&Afbeeldingsvoorbeeld weergeven" #: FDirChooser.class:1043 msgid "&Rename" msgstr "&Hernoem" #: FDirChooser.class:1048 msgid "Copy" msgstr "Kopiëren" #: FDirChooser.class:1053 msgid "&Delete" msgstr "&Verwijder" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "Bestand &decomprimeren" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Creeëer folder" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Openen in bes&tandsbeheer..." #: FDirChooser.class:1080 msgid "&Refresh" msgstr "Ve&rvers" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Eigenschappen" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Overschrijven" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Alles overschrijven" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Dit bestand of deze folder bestaat reeds." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "Kan archiefinhoud niet weergeven" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "Kan bestand niet decomprimeren" #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Onbekend archief" #: FDirChooser.class:1431 msgid "Delete file" msgstr "Bestand verwijderen" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "Weet je zeker dat je dit bestand wil verwijderen?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Kan bestand niet verwijderen" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Folder verwijderen" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "Weet je zeker dat je deze folder wil verwijderen?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "Kan folder niet verwijderen." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Bovenliggende folder" #: FDirChooser.form:74 msgid "Root directory" msgstr "Root folder" #: FDirChooser.form:139 msgid "Image preview" msgstr "Afbeeldingsvoorbeeld" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Gedetaileerde weergave" #: FDirChooser.form:155 msgid "File properties" msgstr "Betstandseigenschappen" #: FDirChooser.form:161 msgid "Show files" msgstr "Bestanden weergeven" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Bladwijzers" # gb-ignore #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Annuleren" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Naam" #: FEditBookmark.class:24 msgid "Path" msgstr "Pad" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Weet je zeker dat je deze bladwijzer wil verwijderen?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Bladwijzers bewerken" #: FEditBookmark.form:34 msgid "Up" msgstr "Omhoog" #: FEditBookmark.form:40 msgid "Down" msgstr "Naar beneden" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Verwijderen" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Sluiten" #: FFileProperties.class:117 msgid "Image" msgstr "Afbeelding" # gb-ignore #: FFileProperties.class:122 msgid "Audio" msgstr "" # gb-ignore #: FFileProperties.class:126 msgid "Video" msgstr "" #: FFileProperties.class:185 msgid "&1 properties" msgstr "&1 eigenschappen" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "&1 B" #: FFileProperties.class:221 msgid "no file" msgstr "geen bestand" #: FFileProperties.class:223 msgid "one file" msgstr "een bestand" #: FFileProperties.class:225 msgid "files" msgstr "bestanden" #: FFileProperties.class:229 msgid "no directory" msgstr "geen folder" #: FFileProperties.class:231 msgid "one directory" msgstr "een folder" #: FFileProperties.class:233 msgid "directories" msgstr "folders" #: FFileProperties.form:52 msgid "General" msgstr "Algemeen" # gb-ignore #: FFileProperties.form:81 msgid "Type" msgstr "" # gb-ignore #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "Folder" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Formaat" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Laatste wijziging" #: FFileProperties.form:144 msgid "Permissions" msgstr "Toestemmingen" #: FFileProperties.form:157 msgid "Owner" msgstr "Eigenaar" #: FFileProperties.form:169 msgid "Group" msgstr "Groep" #: FFileProperties.form:180 msgid "Preview" msgstr "Voorbeeld" #: FFileProperties.form:245 msgid "Errors" msgstr "Fouten" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Pa's wijze lynx bezag vroom het fikse aquaduct." #: FFontChooser.form:95 msgid "Bold" msgstr "Vet" #: FFontChooser.form:102 msgid "Italic" msgstr "Schuin" #: FFontChooser.form:109 msgid "Underline" msgstr "Onderlijn" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Doorstrepen" #: FFontChooser.form:125 msgid "Relative" msgstr "Relatief" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Toevoegen" #: FListEditor.form:45 msgid "Add item" msgstr "Item toevoegen" #: FListEditor.form:52 msgid "Remove item" msgstr "Verwijder item" #: FListEditor.form:59 msgid "Move item up" msgstr "Verplaats item naar boven" #: FListEditor.form:66 msgid "Move item down" msgstr "Verplaats item naar beneden" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "bestanden" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Dit bericht niet meer weergeven" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Verborgen" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Transparant" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "V&olgende" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Volgende" #: FWizard.form:64 msgid "Previous" msgstr "Vorige" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "Kan bestand niet hernoemen" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Een bestand of foldernaamkan niet leeg zijn." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Het '/' caracter is verboden in bestands- of foldernamen." #: Main.module:52 msgid "&1 KiB" msgstr "&1 KiB" #: Main.module:59 msgid "&1 MiB" msgstr "&1 MiB" #: Main.module:66 msgid "&1 GiB" msgstr "&1 GiB" #: Wizard.class:86 msgid "Step #&1" msgstr "Stap #&1" gambas-3.16.3/comp/src/gb.form/.lang/pt_BR.po000066400000000000000000000316701411575327000204760ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Mais controles para componentes gráficos" #: CBookmarkList.class:51 msgid "Home" msgstr "Início" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Área de trabalho" #: CBookmarkList.class:55 msgid "System" msgstr "Sistema" #: ColorPalette.class:143 msgid "Last colors" msgstr "Últimas cores" #: ColorPalette.class:244 msgid "Remove color" msgstr "Remover cor" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Remover todas as cores" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Ordenar cores" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Não foi possível renomear o diretório." #: DirView.class:566 msgid "New folder" msgstr "Nova pasta" #: DirView.class:585 msgid "Cannot create directory." msgstr "Não foi possível criar o diretório." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Hoje" #: FCalendar.form:54 msgid "Previous month" msgstr "Mês anterior" #: FCalendar.form:60 msgid "Next month" msgstr "Próximo mês" #: FCalendar.form:147 msgid "Apply" msgstr "Aplicar" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Seguir cor da grade" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Diretório não encontrado." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Todos os arquivos (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Sobrescrever" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "O arquivo já existe.\n" "\n" "Deseja sobrescreve-lo?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "&Diretório corrente como favorito" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "&Editar favoritos..." #: FDirChooser.class:1023 msgid "Show &details" msgstr "Exibir &detalhes" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Exibir arquivos &ocultos" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "Exibir visualização de &imagem" #: FDirChooser.class:1043 msgid "&Rename" msgstr "&Renomear" #: FDirChooser.class:1048 msgid "Copy" msgstr "Copiar" #: FDirChooser.class:1053 msgid "&Delete" msgstr "&Excluir" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "&Descomprimir arquivo" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "&Criar diretório" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Abrir no gerenciador de &arquivos" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "&Atualizar" #: FDirChooser.class:1088 msgid "&Properties" msgstr "&Propriedades" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Sobrescrever" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Sobrescrever tudo" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Este arquivo ou diretório já existe." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "Não foi possível listar o conteúdo do arquivo" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "Não foi possível descomprimir o arquivo." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Arquivo desconhecido." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Excluir arquivo" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "Você realmente deseja excluir aquele arquivo?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Não foi possível excluir o arquivo." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Excluir diretório" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "Você realmente deseja excluir aquele diretório?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "Não foi possível excluir o diretório." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Diretório pai" #: FDirChooser.form:74 msgid "Root directory" msgstr "Diretório raiz" #: FDirChooser.form:139 msgid "Image preview" msgstr "Pré-visualização de imagem" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Visão detalhada" #: FDirChooser.form:155 msgid "File properties" msgstr "Propriedades do arquivo" #: FDirChooser.form:161 msgid "Show files" msgstr "Exibir arquivos" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Favoritos" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "OK" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Cancelar" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Nome" #: FEditBookmark.class:24 msgid "Path" msgstr "Caminho" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Você realmente deseja excluir esse favorito?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Editar favoritos" #: FEditBookmark.form:34 msgid "Up" msgstr "Para cima" #: FEditBookmark.form:40 msgid "Down" msgstr "Para baixo" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Remover" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Fechar" #: FFileProperties.class:117 msgid "Image" msgstr "Imagem" #: FFileProperties.class:122 msgid "Audio" msgstr "Audio" #: FFileProperties.class:126 msgid "Video" msgstr "Vídeo" #: FFileProperties.class:185 msgid "&1 properties" msgstr "&1 propriedades" # gb-ignore #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "nenhum arquivo" #: FFileProperties.class:223 msgid "one file" msgstr "um arquivo" #: FFileProperties.class:225 msgid "files" msgstr "arquivos" #: FFileProperties.class:229 msgid "no directory" msgstr "nenhum diretório" #: FFileProperties.class:231 msgid "one directory" msgstr "um diretório" #: FFileProperties.class:233 msgid "directories" msgstr "diretórios" #: FFileProperties.form:52 msgid "General" msgstr "Geral" #: FFileProperties.form:81 msgid "Type" msgstr "Tipo" # gb-ignore #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "Diretório" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Tamanho" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Última modificação" #: FFileProperties.form:144 msgid "Permissions" msgstr "Permissões" #: FFileProperties.form:157 msgid "Owner" msgstr "Proprietário" #: FFileProperties.form:169 msgid "Group" msgstr "Grupo" #: FFileProperties.form:180 msgid "Preview" msgstr "Visualização" #: FFileProperties.form:245 msgid "Errors" msgstr "Erros" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Alguém diz que recebeu hoje o fax vindo do New York Post" #: FFontChooser.form:95 msgid "Bold" msgstr "Negrito" #: FFontChooser.form:102 msgid "Italic" msgstr "Itálico" #: FFontChooser.form:109 msgid "Underline" msgstr "Sublinhado" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Tachado" #: FFontChooser.form:125 msgid "Relative" msgstr "Relativo" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Adicionar" #: FListEditor.form:45 msgid "Add item" msgstr "Adicionar item" #: FListEditor.form:52 msgid "Remove item" msgstr "Remover item" #: FListEditor.form:59 msgid "Move item up" msgstr "Mover item para cima" #: FListEditor.form:66 msgid "Move item down" msgstr "Mover item para baixo" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "arquivos" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Não exibir essa mensagem novamente" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Oculto" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Transparente" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Próximo" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Próximo" #: FWizard.form:64 msgid "Previous" msgstr "Anterior" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "Não foi possível renomear o arquivo." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "O nome de um arquivo ou diretório não pode ser nulo." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "O caractere '/' é proibido em nome de arquivos ou diretórios." # gb-ignore #: Main.module:52 msgid "&1 KiB" msgstr "" # gb-ignore #: Main.module:59 msgid "&1 MiB" msgstr "" # gb-ignore #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Passo #&1" gambas-3.16.3/comp/src/gb.form/.lang/ru.po000066400000000000000000000353661411575327000201240ustar00rootroot00000000000000# 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: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Больше элементов управления для графических компонентов" #: CBookmarkList.class:51 msgid "Home" msgstr "Дом" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Рабочий стол" #: CBookmarkList.class:55 msgid "System" msgstr "Система" #: ColorPalette.class:143 msgid "Last colors" msgstr "Последние цвета" #: ColorPalette.class:244 msgid "Remove color" msgstr "Удалить цвет" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "Удалить все цвета" #: ColorPalette.class:252 msgid "Sort colors" msgstr "Сортировать цвета" #: DirView.class:535 msgid "Cannot rename directory." msgstr "Невозможно переименовать директорию." #: DirView.class:566 msgid "New folder" msgstr "Новая директория" #: DirView.class:585 msgid "Cannot create directory." msgstr "Невозможно создать директорию." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Сегодня" #: FCalendar.form:54 msgid "Previous month" msgstr "Прошлый месяц" #: FCalendar.form:60 msgid "Next month" msgstr "Следующий месяц" #: FCalendar.form:147 msgid "Apply" msgstr "Применить" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Следовать цветовой сетке" #: FDirChooser.class:438 msgid "Directory not found." msgstr "Директория не найдена." #: FDirChooser.class:547 msgid "All files (*)" msgstr "Все файлы (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "Перезаписать" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Этот файл уже существует.\n" "\n" "Хотите перезаписать его?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "Добавить текущую директорию в закладки" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "Редактировать закладки..." #: FDirChooser.class:1023 msgid "Show &details" msgstr "Показать детали" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "Показать скрытые файлы" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "Показать предпросмотр изображения" #: FDirChooser.class:1043 msgid "&Rename" msgstr "Переименовать" #: FDirChooser.class:1048 msgid "Copy" msgstr "Копировать" #: FDirChooser.class:1053 msgid "&Delete" msgstr "Удалить" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "Распаковка файла" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "Создать директорию" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "Открыть в файловом менеджере..." #: FDirChooser.class:1080 msgid "&Refresh" msgstr "Освежить" #: FDirChooser.class:1088 msgid "&Properties" msgstr "Свойства" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Перезаписать" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "Перезаписать все" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "Этот файл или директория уже существует." #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "Невозможно перечислить содержимое архива" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "Невозможно распаковать файл." #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "Неизвестный архив." #: FDirChooser.class:1431 msgid "Delete file" msgstr "Удалить файл" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "Вы действительно хотите удалить этот файл?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "Невозможно удалить файл." #: FDirChooser.class:1449 msgid "Delete directory" msgstr "Удалить директорию" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "Вы действительно хотите удалить эту директорию?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "Невозможно удалить директорию." #: FDirChooser.form:68 msgid "Parent directory" msgstr "Родительская директория" #: FDirChooser.form:74 msgid "Root directory" msgstr "Корневая директория" #: FDirChooser.form:139 msgid "Image preview" msgstr "Предпросмотр изображения" #: FDirChooser.form:147 msgid "Detailed view" msgstr "Детальный вид" #: FDirChooser.form:155 msgid "File properties" msgstr "Свойства файла" #: FDirChooser.form:161 msgid "Show files" msgstr "Показать файлы" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "Закладки" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "ОК" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Отмена" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Имя" #: FEditBookmark.class:24 msgid "Path" msgstr "Путь" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "Вы действительно хотите удалить эту закладку?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "Редактировать закладки" #: FEditBookmark.form:34 msgid "Up" msgstr "Вверх" #: FEditBookmark.form:40 msgid "Down" msgstr "Вниз" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Удалить" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Закрыть" #: FFileProperties.class:117 msgid "Image" msgstr "Изображение" #: FFileProperties.class:122 msgid "Audio" msgstr "Аудио" #: FFileProperties.class:126 msgid "Video" msgstr "Видео" #: FFileProperties.class:185 msgid "&1 properties" msgstr "Свойства &1" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "&1 Б" #: FFileProperties.class:221 msgid "no file" msgstr "нет файла" #: FFileProperties.class:223 msgid "one file" msgstr "один файл" #: FFileProperties.class:225 msgid "files" msgstr "файлы" #: FFileProperties.class:229 msgid "no directory" msgstr "нет директории" #: FFileProperties.class:231 msgid "one directory" msgstr "одна директория" #: FFileProperties.class:233 msgid "directories" msgstr "директории" #: FFileProperties.form:52 msgid "General" msgstr "Основное" #: FFileProperties.form:81 msgid "Type" msgstr "Тип" #: FFileProperties.form:94 msgid "Link" msgstr "Связь" #: FFileProperties.form:108 msgid "Directory" msgstr "Директория" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Размер" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Последняя модификация" #: FFileProperties.form:144 msgid "Permissions" msgstr "Права" #: FFileProperties.form:157 msgid "Owner" msgstr "Владелец" #: FFileProperties.form:169 msgid "Group" msgstr "Группа" #: FFileProperties.form:180 msgid "Preview" msgstr "Предпросмотр" #: FFileProperties.form:245 msgid "Errors" msgstr "Ошибки" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Как быстро сумасшедшие прыжки сердитой зебры" #: FFontChooser.form:95 msgid "Bold" msgstr "Полужирный" #: FFontChooser.form:102 msgid "Italic" msgstr "Курсив" #: FFontChooser.form:109 msgid "Underline" msgstr "Подчёркнутый" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Зачёркнутый" #: FFontChooser.form:125 msgid "Relative" msgstr "Относительный" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Добавить" #: FListEditor.form:45 msgid "Add item" msgstr "Добавить элемент" #: FListEditor.form:52 msgid "Remove item" msgstr "Удалить элемент" #: FListEditor.form:59 msgid "Move item up" msgstr "Переместить элемент вверх" #: FListEditor.form:66 msgid "Move item down" msgstr "Переместить элемент вниз" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "файлы" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "Не отображать это сообщение снова" #: FSidePanel.class:1139 msgid "Hidden" msgstr "Скрытый" #: FSidePanel.class:1143 msgid "Transparent" msgstr "Прозрачный" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "Далее" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Далее" #: FWizard.form:64 msgid "Previous" msgstr "Назад" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "Невозможно переименовать файл." #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "Имя файла или директории не может быть пустым." #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Символ '/' запрещён внутри имён файлов или директорий." #: Main.module:52 msgid "&1 KiB" msgstr "&1 кБ" #: Main.module:59 msgid "&1 MiB" msgstr "&1 МБ" #: Main.module:66 msgid "&1 GiB" msgstr "&1 ГБ" #: Wizard.class:86 msgid "Step #&1" msgstr "Шаг #&1" gambas-3.16.3/comp/src/gb.form/.lang/sv.po000066400000000000000000000271661411575327000201250ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "Flera kontroller för grafiska komponenter" #: CBookmarkList.class:51 msgid "Home" msgstr "Hem" #: CBookmarkList.class:53 msgid "Desktop" msgstr "Skrivbord" #: CBookmarkList.class:55 msgid "System" msgstr "System" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:535 msgid "Cannot rename directory." msgstr "kan ej döpa om mapp." #: DirView.class:566 msgid "New folder" msgstr "Ny mapp" #: DirView.class:585 msgid "Cannot create directory." msgstr "Kan ej skapa mapp." #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "Idag" #: FCalendar.form:54 msgid "Previous month" msgstr "Föregående månad" #: FCalendar.form:60 msgid "Next month" msgstr "Nästa månad" #: FCalendar.form:147 msgid "Apply" msgstr "" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "Följ färgrutnät" #: FDirChooser.class:438 msgid "Directory not found." msgstr "" #: FDirChooser.class:547 msgid "All files (*)" msgstr "Alla filer (*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "&Skriv över" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "Denna fil finns redan.\n" "\n" "Vill du skriva över den?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "" #: FDirChooser.class:1023 msgid "Show &details" msgstr "" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "" #: FDirChooser.class:1043 msgid "&Rename" msgstr "" #: FDirChooser.class:1048 msgid "Copy" msgstr "Kopiera" #: FDirChooser.class:1053 msgid "&Delete" msgstr "" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "" #: FDirChooser.class:1088 msgid "&Properties" msgstr "" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "Skriv över" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "" #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "" #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "" #: FDirChooser.class:1431 msgid "Delete file" msgstr "" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:68 msgid "Parent directory" msgstr "Överordnad mapp" #: FDirChooser.form:74 msgid "Root directory" msgstr "" #: FDirChooser.form:139 msgid "Image preview" msgstr "" #: FDirChooser.form:147 msgid "Detailed view" msgstr "" #: FDirChooser.form:155 msgid "File properties" msgstr "" #: FDirChooser.form:161 msgid "Show files" msgstr "Visa filer" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "OK" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "Avbryt" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "Namn" #: FEditBookmark.class:24 msgid "Path" msgstr "Sökväg" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "" #: FEditBookmark.form:34 msgid "Up" msgstr "Upp" #: FEditBookmark.form:40 msgid "Down" msgstr "Ner" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "Tag bort" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "Stäng" #: FFileProperties.class:117 msgid "Image" msgstr "Bild" #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "Video" #: FFileProperties.class:185 msgid "&1 properties" msgstr "" #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "Allmänt" #: FFileProperties.form:81 msgid "Type" msgstr "Typ" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "Katalog" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "Storlek" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "Senast ändrad" #: FFileProperties.form:144 msgid "Permissions" msgstr "" #: FFileProperties.form:157 msgid "Owner" msgstr "" #: FFileProperties.form:169 msgid "Group" msgstr "" #: FFileProperties.form:180 msgid "Preview" msgstr "Förhandsgranskning" #: FFileProperties.form:245 msgid "Errors" msgstr "Fel" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "Flygande bäckasiner söka hwila på mjuka tuvor" #: FFontChooser.form:95 msgid "Bold" msgstr "Fetstil" #: FFontChooser.form:102 msgid "Italic" msgstr "Kursiv" #: FFontChooser.form:109 msgid "Underline" msgstr "Understrykning" #: FFontChooser.form:116 msgid "Strikeout" msgstr "Genomstrykning" #: FFontChooser.form:125 msgid "Relative" msgstr "" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "Lägg till" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "Visa filer" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "" #: FSidePanel.class:1139 msgid "Hidden" msgstr "" #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "&Nästa" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "Nästa" #: FWizard.form:64 msgid "Previous" msgstr "Föregående" #: FileView.class:156 msgid "No file in this folder." msgstr "" #: FileView.class:1139 msgid "Cannot rename file." msgstr "" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "Tecknet '/' är ej tillåtet inuti fil- och mappnamn." #: Main.module:52 msgid "&1 KiB" msgstr "" #: Main.module:59 msgid "&1 MiB" msgstr "" #: Main.module:66 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "Steg #&1" gambas-3.16.3/comp/src/gb.form/.lang/zh.po000066400000000000000000000310101411575327000200750ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.15.90\n" "POT-Creation-Date: 2021-02-17 15:39 UTC\n" "PO-Revision-Date: 2021-02-17 15:40 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "用于图形组件的更多控件" #: CBookmarkList.class:51 msgid "Home" msgstr "居家" #: CBookmarkList.class:53 msgid "Desktop" msgstr "桌面" #: CBookmarkList.class:55 msgid "System" msgstr "系统" #: ColorPalette.class:143 msgid "Last colors" msgstr "最近颜色" #: ColorPalette.class:244 msgid "Remove color" msgstr "移除颜色" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "移除全部颜色" #: ColorPalette.class:252 msgid "Sort colors" msgstr "颜色排序" #: DirView.class:535 msgid "Cannot rename directory." msgstr "不能重命名目录。" #: DirView.class:566 msgid "New folder" msgstr "新建文件夹" #: DirView.class:585 msgid "Cannot create directory." msgstr "不能创建目录。" #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:48 msgid "Today" msgstr "今天" #: FCalendar.form:54 msgid "Previous month" msgstr "上一月" #: FCalendar.form:60 msgid "Next month" msgstr "下一月" #: FCalendar.form:147 msgid "Apply" msgstr "应用" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "追随网格内颜色" #: FDirChooser.class:438 msgid "Directory not found." msgstr "目录未找到。" #: FDirChooser.class:547 msgid "All files (*)" msgstr "所有文件(*)" #: FDirChooser.class:886 msgid "&Overwrite" msgstr "(&O)覆盖" #: FDirChooser.class:886 msgid "" "This file already exists.\n" "\n" "Do you want to overwrite it?" msgstr "" "这个文件已经存在。\n" "\n" "是否确定覆盖它?" #: FDirChooser.class:1004 msgid "&Bookmark current directory" msgstr "将当前目录加入书签(&B)" #: FDirChooser.class:1012 msgid "&Edit bookmarks..." msgstr "编辑书签...(&E)" #: FDirChooser.class:1023 msgid "Show &details" msgstr "显示细节(&d)" #: FDirChooser.class:1029 msgid "Show &hidden files" msgstr "显示隐藏文件(&h)" #: FDirChooser.class:1035 msgid "Show &image preview" msgstr "显示图像预览(&i)" #: FDirChooser.class:1043 msgid "&Rename" msgstr "重命名(&R)" #: FDirChooser.class:1048 msgid "Copy" msgstr "复制" #: FDirChooser.class:1053 msgid "&Delete" msgstr "删除(&D)" #: FDirChooser.class:1065 msgid "&Uncompress file" msgstr "解压缩文件(&U)" #: FDirChooser.class:1070 msgid "&Create directory" msgstr "创建目录(&C)" #: FDirChooser.class:1075 msgid "Open in &file manager..." msgstr "用文件管理器打开...(&f)" #: FDirChooser.class:1080 msgid "&Refresh" msgstr "更新(&R)" #: FDirChooser.class:1088 msgid "&Properties" msgstr "属性(&P)" #: FDirChooser.class:1302 msgid "Overwrite" msgstr "覆盖" #: FDirChooser.class:1302 msgid "Overwrite all" msgstr "全部覆盖" #: FDirChooser.class:1302 msgid "This file or directory already exists." msgstr "该文件或目录已经存在。" #: FDirChooser.class:1323 msgid "Cannot list archive contents" msgstr "不能列出文档内容。" #: FDirChooser.class:1363 msgid "Cannot uncompress file." msgstr "不能解压缩文件。" #: FDirChooser.class:1363 msgid "Unknown archive." msgstr "未知文档。" #: FDirChooser.class:1431 msgid "Delete file" msgstr "删除文件" #: FDirChooser.class:1432 msgid "Do you really want to delete that file?" msgstr "确定要删除文件吗?" #: FDirChooser.class:1439 msgid "Unable to delete file." msgstr "不能删除文件。" #: FDirChooser.class:1449 msgid "Delete directory" msgstr "删除目录" #: FDirChooser.class:1450 msgid "Do you really want to delete that directory?" msgstr "是否确实要删除该目录?" #: FDirChooser.class:1457 msgid "Unable to delete directory." msgstr "无法删除目录。" #: FDirChooser.form:68 msgid "Parent directory" msgstr "上级目录" #: FDirChooser.form:74 msgid "Root directory" msgstr "根目录" #: FDirChooser.form:139 msgid "Image preview" msgstr "图像预览" #: FDirChooser.form:147 msgid "Detailed view" msgstr "查看细节" #: FDirChooser.form:155 msgid "File properties" msgstr "文件属性" #: FDirChooser.form:161 msgid "Show files" msgstr "显示文件" #: FDirChooser.form:181 msgid "Bookmarks" msgstr "书签" #: FDirChooser.form:248 FInputBox.form:45 FWizard.class:76 Form1.form:36 msgid "OK" msgstr "确定" #: FDirChooser.form:254 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:52 Form1.form:42 msgid "Cancel" msgstr "取消" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMenuButton.form:148 FTestMessageView.form:26 #: FTestWizard.form:24 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:143 msgid "Name" msgstr "名称" #: FEditBookmark.class:24 msgid "Path" msgstr "路径" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "确定要移除该书签吗?" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "编辑书签" #: FEditBookmark.form:34 msgid "Up" msgstr "上移" #: FEditBookmark.form:40 msgid "Down" msgstr "下移" #: FEditBookmark.form:46 FListEditor.class:265 msgid "Remove" msgstr "移除" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:53 msgid "Close" msgstr "关闭" #: FFileProperties.class:117 msgid "Image" msgstr "图像" #: FFileProperties.class:122 msgid "Audio" msgstr "音频" #: FFileProperties.class:126 msgid "Video" msgstr "视频" #: FFileProperties.class:185 msgid "&1 properties" msgstr "&1属性" # gb-ignore #: FFileProperties.class:216 Main.module:48 msgid "&1 B" msgstr "" # gb-ignore #: FFileProperties.class:221 msgid "no file" msgstr "" # gb-ignore #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "文件" # gb-ignore #: FFileProperties.class:229 msgid "no directory" msgstr "" # gb-ignore #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "目录" #: FFileProperties.form:52 msgid "General" msgstr "常规" #: FFileProperties.form:81 msgid "Type" msgstr "类型" #: FFileProperties.form:94 msgid "Link" msgstr "链接" #: FFileProperties.form:108 msgid "Directory" msgstr "目录" #: FFileProperties.form:120 FileView.class:145 msgid "Size" msgstr "大小" #: FFileProperties.form:132 FileView.class:147 msgid "Last modified" msgstr "最近修改" #: FFileProperties.form:144 msgid "Permissions" msgstr "许可权限" #: FFileProperties.form:157 msgid "Owner" msgstr "属主" #: FFileProperties.form:169 msgid "Group" msgstr "属组" #: FFileProperties.form:180 msgid "Preview" msgstr "预览" #: FFileProperties.form:245 msgid "Errors" msgstr "错误" #: FFontChooser.class:387 msgid "How quickly daft jumping zebras vex" msgstr "One CHINA, One family. 一个中国,一个家。" #: FFontChooser.form:95 msgid "Bold" msgstr "粗体" #: FFontChooser.form:102 msgid "Italic" msgstr "斜体" #: FFontChooser.form:109 msgid "Underline" msgstr "下划线" #: FFontChooser.form:116 msgid "Strikeout" msgstr "删除线" #: FFontChooser.form:125 msgid "Relative" msgstr "相对尺寸" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:264 msgid "Add" msgstr "添加" #: FListEditor.form:45 msgid "Add item" msgstr "添加条目" #: FListEditor.form:52 msgid "Remove item" msgstr "移除条目" #: FListEditor.form:59 msgid "Move item up" msgstr "上移条目" #: FListEditor.form:66 msgid "Move item down" msgstr "下移条目" #: FMain.class:26 #, fuzzy msgid "PDF files" msgstr "文件" #: FMain.class:26 msgid "Postscript files" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:40 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:44 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FTestBalloon.form:12 FTestFileChooser.form:86 #: FTestSwitchButton.form:22 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "不再显示该信息" #: FSidePanel.class:1139 msgid "Hidden" msgstr "隐藏" #: FSidePanel.class:1143 msgid "Transparent" msgstr "透明" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:33 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:36 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:70 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:53 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:57 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestFileChooser.form:81 FTestSwitchButton.form:38 msgid "Label1" msgstr "" #: FTestMenuButton.form:32 msgid "Project" msgstr "" #: FTestMenuButton.form:49 msgid "View" msgstr "" #: FTestMenuButton.form:61 msgid "Menu6" msgstr "" #: FTestMenuButton.form:66 msgid "Tools" msgstr "" #: FTestMenuButton.form:74 msgid "Menu8" msgstr "" #: FTestMenuButton.form:78 msgid "Menu9" msgstr "" #: FTestMenuButton.form:81 msgid "Menu10" msgstr "" #: FTestMenuButton.form:85 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestSwitchButton.form:45 msgid "Label2" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar 1" msgstr "" #: FTestToolPanel.form:19 msgid "Toolbar 2" msgstr "" #: FTestToolPanel.form:21 msgid "Toolbar 3" msgstr "" #: FTestToolPanel.form:23 msgid "Toolbar 4" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:20 msgid "Étape n°1" msgstr "" #: FTestWizard.form:27 msgid "Ceci est une longue étape" msgstr "" #: FTestWizard.form:33 msgid "Étape n°3" msgstr "" #: FTestWizard.form:35 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "下一个(&N)" #: FWizard.form:58 MessageView.class:50 msgid "Next" msgstr "下一步" #: FWizard.form:64 msgid "Previous" msgstr "上一步" #: FileView.class:156 msgid "No file in this folder." msgstr "该目录中没有文件。" #: FileView.class:1139 msgid "Cannot rename file." msgstr "不能重命名文件。" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Form3.form:25 msgid "Raise" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "文件或目录名称不能无效。" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "文件或目录名称中禁止出现'/'字符。" #: Main.module:52 msgid "&1 KiB" msgstr "&1 KB" #: Main.module:59 msgid "&1 MiB" msgstr "&1 MB" #: Main.module:66 msgid "&1 GiB" msgstr "&1 GB" #: Wizard.class:86 msgid "Step #&1" msgstr "步骤#&1" gambas-3.16.3/comp/src/gb.form/.lang/zh_TW.po000066400000000000000000000255221411575327000205220ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.form 3.14.90\n" "POT-Creation-Date: 2020-06-06 18:08 UTC\n" "PO-Revision-Date: 2020-06-06 18:09 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "More controls for graphical components" msgstr "更多圖形元件控制" #: CBookmarkList.class:51 msgid "Home" msgstr "家" #: CBookmarkList.class:53 msgid "Desktop" msgstr "桌面" #: CBookmarkList.class:55 msgid "System" msgstr "系統" #: ColorPalette.class:143 msgid "Last colors" msgstr "" #: ColorPalette.class:244 msgid "Remove color" msgstr "" #: ColorPalette.class:248 msgid "Remove all colors" msgstr "" #: ColorPalette.class:252 msgid "Sort colors" msgstr "" #: DirView.class:531 msgid "Cannot rename directory." msgstr "" #: DirView.class:562 msgid "New folder" msgstr "新增資料夾" #: DirView.class:581 msgid "Cannot create directory." msgstr "" #: FBugFileView.form:32 msgid "Toggle Fileview Detailed View" msgstr "" #: FBugFileView.form:37 msgid "Toggle Filechooser Detailed View" msgstr "" #: FCalendar.form:47 msgid "Today" msgstr "今天" #: FCalendar.form:53 msgid "Previous month" msgstr "上一個月" #: FCalendar.form:59 msgid "Next month" msgstr "下一個月" #: FCalendar.form:143 msgid "Apply" msgstr "" #: FColorChooser.form:81 msgid "Follow color grid" msgstr "" #: FDirChooser.class:428 msgid "Directory not found." msgstr "" #: FDirChooser.class:534 msgid "All files (*)" msgstr "" #: FDirChooser.class:974 msgid "&Bookmark current directory" msgstr "" #: FDirChooser.class:982 msgid "&Edit bookmarks..." msgstr "" #: FDirChooser.class:991 msgid "Show &details" msgstr "" #: FDirChooser.class:997 msgid "Show &hidden files" msgstr "" #: FDirChooser.class:1003 msgid "Show &image preview" msgstr "" #: FDirChooser.class:1011 msgid "&Rename" msgstr "" #: FDirChooser.class:1016 msgid "Copy" msgstr "複製" #: FDirChooser.class:1021 msgid "&Delete" msgstr "" #: FDirChooser.class:1033 msgid "&Uncompress file" msgstr "" #: FDirChooser.class:1038 msgid "&Create directory" msgstr "" #: FDirChooser.class:1043 msgid "Open in &file manager..." msgstr "" #: FDirChooser.class:1048 msgid "&Refresh" msgstr "" #: FDirChooser.class:1056 msgid "&Properties" msgstr "" #: FDirChooser.class:1272 msgid "Overwrite" msgstr "覆寫(O)" #: FDirChooser.class:1272 msgid "Overwrite all" msgstr "" #: FDirChooser.class:1272 msgid "This file or directory already exists." msgstr "" #: FDirChooser.class:1291 msgid "Cannot list archive contents" msgstr "" #: FDirChooser.class:1325 msgid "Cannot uncompress file." msgstr "" #: FDirChooser.class:1325 msgid "Unknown archive." msgstr "" #: FDirChooser.class:1386 msgid "Delete file" msgstr "" #: FDirChooser.class:1387 msgid "Do you really want to delete that file?" msgstr "" #: FDirChooser.class:1394 msgid "Unable to delete file." msgstr "" #: FDirChooser.class:1404 msgid "Delete directory" msgstr "" #: FDirChooser.class:1405 msgid "Do you really want to delete that directory?" msgstr "" #: FDirChooser.class:1412 msgid "Unable to delete directory." msgstr "" #: FDirChooser.form:66 msgid "Parent directory" msgstr "" #: FDirChooser.form:72 msgid "Root directory" msgstr "" #: FDirChooser.form:133 msgid "Image preview" msgstr "" #: FDirChooser.form:141 msgid "Detailed view" msgstr "" #: FDirChooser.form:149 msgid "File properties" msgstr "" #: FDirChooser.form:155 msgid "Show files" msgstr "" #: FDirChooser.form:174 msgid "Bookmarks" msgstr "" #: FDirChooser.form:236 FInputBox.form:45 FWizard.class:76 msgid "OK" msgstr "確定" #: FDirChooser.form:242 FEditBookmark.class:119 FInputBox.form:51 #: FSidePanel.class:1149 FWizard.form:53 msgid "Cancel" msgstr "取消" #: FDocumentView.form:51 msgid "Zoom :" msgstr "" #: FDocumentView.form:56 msgid "Show Shadow" msgstr "" #: FDocumentView.form:66 FTestTabPanel.form:64 msgid "Padding" msgstr "" #: FDocumentView.form:71 msgid "Spacing" msgstr "" #: FDocumentView.form:80 msgid "Scale Mode" msgstr "" #: FDocumentView.form:89 msgid "Goto :" msgstr "" #: FDocumentView.form:95 msgid "Column" msgstr "" #: FDocumentView.form:95 msgid "Fill" msgstr "" #: FDocumentView.form:95 msgid "Horizontal" msgstr "" #: FDocumentView.form:95 msgid "None" msgstr "" #: FDocumentView.form:95 msgid "Row" msgstr "" #: FDocumentView.form:95 msgid "Vertical" msgstr "" #: FDocumentView.form:96 FMain.form:69 msgid "ComboBox1" msgstr "" #: FDocumentView.form:101 FMain.form:85 FTestBalloon.form:18 #: FTestCompletion.form:23 FTestMessageView.form:26 FTestWizard.form:22 msgid "Button1" msgstr "" #: FDocumentView.form:110 msgid "Columns" msgstr "" #: FDocumentView.form:120 msgid "Autocenter" msgstr "" #: FEditBookmark.class:23 FileView.class:138 msgid "Name" msgstr "名稱" #: FEditBookmark.class:24 msgid "Path" msgstr "路徑" #: FEditBookmark.class:119 msgid "Do you really want to remove this bookmark?" msgstr "" #: FEditBookmark.form:15 msgid "Edit bookmarks" msgstr "" #: FEditBookmark.form:34 msgid "Up" msgstr "上" #: FEditBookmark.form:40 msgid "Down" msgstr "下" #: FEditBookmark.form:46 FListEditor.class:263 msgid "Remove" msgstr "移除" #: FEditBookmark.form:57 FFileProperties.form:270 MessageView.class:51 msgid "Close" msgstr "關閉" #: FFileProperties.class:117 msgid "Image" msgstr "影像" #: FFileProperties.class:122 msgid "Audio" msgstr "" #: FFileProperties.class:126 msgid "Video" msgstr "視訊" #: FFileProperties.class:185 msgid "&1 properties" msgstr "" #: FFileProperties.class:216 Main.module:50 msgid "&1 B" msgstr "" #: FFileProperties.class:221 msgid "no file" msgstr "" #: FFileProperties.class:223 msgid "one file" msgstr "" #: FFileProperties.class:225 msgid "files" msgstr "" #: FFileProperties.class:229 msgid "no directory" msgstr "" #: FFileProperties.class:231 msgid "one directory" msgstr "" #: FFileProperties.class:233 msgid "directories" msgstr "" #: FFileProperties.form:52 msgid "General" msgstr "一般的" #: FFileProperties.form:81 msgid "Type" msgstr "類型" #: FFileProperties.form:94 msgid "Link" msgstr "" #: FFileProperties.form:108 msgid "Directory" msgstr "目錄" #: FFileProperties.form:120 FileView.class:140 msgid "Size" msgstr "大小" #: FFileProperties.form:132 FileView.class:142 msgid "Last modified" msgstr "" #: FFileProperties.form:144 msgid "Permissions" msgstr "" #: FFileProperties.form:157 msgid "Owner" msgstr "" #: FFileProperties.form:169 msgid "Group" msgstr "" #: FFileProperties.form:180 msgid "Preview" msgstr "預覽" #: FFileProperties.form:245 msgid "Errors" msgstr "錯誤" #: FFontChooser.class:297 msgid "How quickly daft jumping zebras vex" msgstr "" #: FFontChooser.form:55 msgid "Bold" msgstr "粗體" #: FFontChooser.form:62 msgid "Italic" msgstr "斜體" #: FFontChooser.form:69 msgid "Underline" msgstr "底線" #: FFontChooser.form:76 msgid "Strikeout" msgstr "刪除線" #: FFontChooser.form:85 msgid "Relative" msgstr "" #: FIconPanel.form:18 msgid "Item 0" msgstr "" #: FIconPanel.form:23 msgid "Toto" msgstr "" #: FIconPanel.form:26 msgid "Item 1" msgstr "" #: FIconPanel.form:28 msgid "Item 2" msgstr "" #: FIconPanel.form:35 msgid "Item 3" msgstr "" #: FLCDLabel.form:15 msgid "12:34" msgstr "" #: FListEditor.class:262 msgid "Add" msgstr "新增" #: FListEditor.form:45 msgid "Add item" msgstr "" #: FListEditor.form:52 msgid "Remove item" msgstr "" #: FListEditor.form:59 msgid "Move item up" msgstr "" #: FListEditor.form:66 msgid "Move item down" msgstr "" #: FMain.form:29 FTestFileChooser.form:31 FTestMenuButton.form:39 FWiki.form:20 msgid "Menu2" msgstr "" #: FMain.form:33 FTestFileChooser.form:36 FTestMenuButton.form:43 FWiki.form:24 msgid "Menu3" msgstr "" #: FMain.form:68 msgid "Élément 1" msgstr "" #: FMain.form:68 msgid "Élément 2" msgstr "" #: FMain.form:68 msgid "Élément 3" msgstr "" #: FMain.form:68 msgid "Élément 4" msgstr "" #: FMain.form:74 msgid "ComboBox2" msgstr "" #: FMain.form:80 FSwitchButton.form:35 FTestBalloon.form:12 #: FTestFileChooser.form:86 msgid "TextBox1" msgstr "" #: FMain.form:90 Form2.form:121 msgid "MenuButton1" msgstr "" #: FMessage.form:39 msgid "Do not display this message again" msgstr "" #: FSidePanel.class:1139 msgid "Hidden" msgstr "" #: FSidePanel.class:1143 msgid "Transparent" msgstr "" #: FSpinBar.form:24 msgid "Test" msgstr "" #: FSwitchButton.form:51 FTestFileChooser.form:81 msgid "Label1" msgstr "" #: FSwitchButton.form:58 msgid "Label2" msgstr "" #: FTestBalloon.form:17 msgid "Ceci est une bulle d'aide" msgstr "" #: FTestColorChooser.form:20 msgid "Resizable" msgstr "" #: FTestCompletion.form:28 msgid "Button2" msgstr "" #: FTestDateChooser.form:47 msgid "Enable" msgstr "" #: FTestExpander.form:16 msgid "Expander" msgstr "" #: FTestFileChooser.form:28 FTestMenuButton.form:35 msgid "Menu1" msgstr "" #: FTestFileChooser.form:41 FTestMenuButton.form:69 msgid "Menu7" msgstr "" #: FTestFileChooser.form:49 FTestMenuButton.form:52 FWiki.form:28 msgid "Menu4" msgstr "" #: FTestFileChooser.form:54 FTestMenuButton.form:56 FWiki.form:32 msgid "Menu5" msgstr "" #: FTestFileChooser.form:76 msgid "Balloon" msgstr "" #: FTestMenuButton.form:31 msgid "Project" msgstr "" #: FTestMenuButton.form:48 msgid "View" msgstr "" #: FTestMenuButton.form:60 msgid "Menu6" msgstr "" #: FTestMenuButton.form:65 msgid "Tools" msgstr "" #: FTestMenuButton.form:73 msgid "Menu8" msgstr "" #: FTestMenuButton.form:77 msgid "Menu9" msgstr "" #: FTestMenuButton.form:80 msgid "Menu10" msgstr "" #: FTestMenuButton.form:84 msgid "Menu11" msgstr "" #: FTestMenuButton.form:124 msgid "Menu button" msgstr "" #: FTestTabPanel.form:41 msgid "Text" msgstr "" #: FTestTabPanel.form:54 msgid "Border" msgstr "" #: FTestTabPanel.form:59 msgid "Orientation" msgstr "" #: FTestToolPanel.form:13 msgid "Toolbar &0" msgstr "" #: FTestToolPanel.form:15 msgid "Toolbar &1" msgstr "" #: FTestToolPanel.form:17 msgid "Toolbar &2" msgstr "" #: FTestValueBox.form:15 msgid "Hello world!" msgstr "" #: FTestWizard.form:18 msgid "Étape n°1" msgstr "" #: FTestWizard.form:25 msgid "Étape n°2" msgstr "" #: FTestWizard.form:29 msgid "LCDLabel1" msgstr "" #: FTestWizard.form:32 msgid "Étape n°3" msgstr "" #: FTestWizard.form:34 msgid "Étape n°4" msgstr "" #: FWizard.class:88 msgid "&Next" msgstr "下一頁(&N)" #: FWizard.form:59 MessageView.class:48 msgid "Next" msgstr "下一個(N)" #: FWizard.form:65 msgid "Previous" msgstr "上一頁(P)" #: FileView.class:1081 msgid "Cannot rename file." msgstr "" #: Form2.form:126 msgid "ButtonBox2" msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "" #: Main.module:52 msgid "&1 KiB" msgstr "" #: Main.module:54 msgid "&1 MiB" msgstr "" #: Main.module:56 msgid "&1 GiB" msgstr "" #: Wizard.class:86 msgid "Step #&1" msgstr "" gambas-3.16.3/comp/src/gb.form/.project000066400000000000000000000015061411575327000175730ustar00rootroot00000000000000# Gambas Project File 3.0 Title=More controls for graphical components Startup=FTestDateChooser Icon=.hidden/icon.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.settings Component=gb.form.stock Authors="Benoît Minisini" Environment="GB_GUI=gb.qt5\n GB_STOCK_DEBUG=1\n LANG=zh_CN.UTF-8\n LC_ALL=en_US.UTF-8\n LC_ALL=zh_CN.UTF-8\n GTK_DEBUG=interactive" TabSize=2 Translate=1 Language=en Type=Component Maintainer=Benoit Minisini Address=benoit@minisini.fr Url=www.endoftheinternet.com License=General Public Licence Prefix=1 PackageName=gambas3-gb-form-3.14.90 CreateEachDirectory=1 Packager=1 Systems=autotools Groups=debian:"embedded" Groups=slackware:"Applications/Emulators" ExtraFiles=slackware:"control/colorpalette.png\t" Groups=ubuntu:"electronics" DoNotTranslate=".src/Test" gambas-3.16.3/comp/src/gb.form/.src/000077500000000000000000000000001411575327000167675ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Balloon/000077500000000000000000000000001411575327000203555ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Balloon/Balloon.class000066400000000000000000000037641411575327000230040ustar00rootroot00000000000000' Gambas class file Export Static Property Read Control As Control Static Property Delay As Integer Static Property Font As Font Static Property Read Visible As Boolean Static Public Sub _call((Message) As String, (Control) As Control, Optional Icon As Picture, Optional X As Integer = -1, Optional Y As Integer = -1) FBalloon.Run(Message, Control, Icon, X, Y) End Static Public Sub Info((Message) As String, (Control) As Control, Optional X As Integer = -1, Optional Y As Integer = -1) FBalloon.Run(Message, Control, Picture["icon:/32/info"], X, Y) End Static Public Sub Warning((Message) As String, (Control) As Control, Optional X As Integer = -1, Optional Y As Integer = -1) FBalloon.Run(Message, Control, Picture["icon:/32/warning"], X, Y) End Static Public Sub Error((Message) As String, (Control) As Control, Optional X As Integer = -1, Optional Y As Integer = -1) FBalloon.Run(Message, Control, Picture["icon:/32/error"], X, Y) End Static Public Sub Question((Message) As String, (Control) As Control, Optional X As Integer = -1, Optional Y As Integer = -1) FBalloon.Run(Message, Control, Picture["icon:/32/question"], X, Y) End Static Public Sub Delete((Message) As String, (Control) As Control, Optional X As Integer = -1, Optional Y As Integer = -1) FBalloon.Run(Message, Control, Picture["icon:/32/delete"], X, Y) End Static Public Sub Hide(Optional (Control) As Control) If Control And If FBalloon.GetControl() <> Control Then Return 'Debug FBalloon.Hide 'Try Wait End Static Private Function Control_Read() As Control Return FBalloon.GetControl() End Static Private Function Delay_Read() As Integer Return FBalloon.GetDelay() End Static Private Sub Delay_Write(Value As Integer) FBalloon.SetDelay(Value) End Static Private Function Font_Read() As Font Return FBalloon.Font End Static Private Sub Font_Write(Value As Font) FBalloon.Font = Value End Static Private Function Visible_Read() As Boolean Return FBalloon.Visible End gambas-3.16.3/comp/src/gb.form/.src/Balloon/FBalloon.class000066400000000000000000000213211411575327000230770ustar00rootroot00000000000000' Gambas class file Private Const ROUND_SIZE As Integer = 8 Private Const PADDING As Integer = 8 Private Const BACKGROUND_COLOR As Integer = &HFFFFDF& Private Const BACKGROUND_COLOR2 As Integer = &HBFBFA7& Static Private $iDelay As Integer = 5000 Private ARROW_HEIGHT As Integer Private $hObs As Observer Private $hWatcher2 As Watcher Private $hCtrl As Control Private $X As Integer Private $Y As Integer Private $W As Integer Private $H As Integer Private $DX As Integer Private $DY As Integer Private $fShow As Float Private $sOld As String ' Private Sub DrawRoundRect(X As Integer, Y As Integer, W As Integer, H As Integer) ' ' Dim hRound As Image ' ' If Not $hRound Then $hRound = Image.Load("img/round.png") ' ' hRound = $hRound.Copy() ' Draw.Image(hRound, X, Y) ' hRound.Mirror(True, False) ' Draw.Image(hRound, X + W - ROUND_SIZE, Y) ' hRound.Mirror(False, True) ' Draw.Image(hRound, X + W - ROUND_SIZE, Y + H - ROUND_SIZE) ' hRound.Mirror(True, False) ' Draw.Image(hRound, X, Y + H - ROUND_SIZE) ' ' Draw.FillStyle = Fill.Solid ' Draw.LineStyle = Line.None ' ' Draw.FillColor = BACKGROUND_COLOR ' Draw.Rect(X + ROUND_SIZE, Y, W - ROUND_SIZE * 2, ROUND_SIZE) ' Draw.Rect(X, Y + ROUND_SIZE, W, H - ROUND_SIZE * 2) ' Draw.Rect(X + ROUND_SIZE, Y + H - ROUND_SIZE, W - ROUND_SIZE * 2, ROUND_SIZE) ' Draw.LineStyle = Line.Solid ' Draw.Foreground = &H808080& '&H808070& ' Draw.Line(X + ROUND_SIZE, Y, X + W - ROUND_SIZE - 1, Y) ' Draw.Line(X + ROUND_SIZE, Y + H - 1, X + W - ROUND_SIZE, Y + H - 1) ' Draw.Line(X, Y + ROUND_SIZE, X, Y + H - ROUND_SIZE - 1) ' Draw.Line(X + W - 1, Y + ROUND_SIZE, X + W - 1, Y + H - ROUND_SIZE - 1) ' ' End Private Sub GetTopLevel(hCtrl As Control) As Window Dim hWin As Window If Not hCtrl Then Return hWin = hCtrl.Window Do If hWin.TopLevel Then Return hWin hWin = hWin.Parent.Window Loop End Private Sub MakeBorder(Optional W As Integer, H As Integer) Dim hImage As Image Dim DX, DY, DW, DH As Integer 'Current screen's dimensions Dim SX, SY, CX, CY As Integer Dim X, Y, X1, Y1, X2, Y2, X3, Y3, Y4 As Integer Dim hWin As Window Dim sNew As String Dim hCtrl As Control $X = $hCtrl.ScreenX $Y = $hCtrl.ScreenY If $DX < 0 Then SX = $X + $hCtrl.W \ 2 Else SX = $X + $DX Endif If $DY < 0 Then SY = $Y + $hCtrl.H \ 2 Else SY = $Y + $DY Endif 'DEBUG $hCtrl;; "SX =";; SX;; "SY =";; SY hWin = GetTopLevel($hCtrl) 'DEBUG hWin CX = hWin.ScreenX + hWin.W \ 2 CY = hWin.ScreenY + hWin.H \ 2 With Screens[hWin.Screen] DX = .X DY = .Y DH = .H DW = .W End With 'DEBUG "CX =";; CX;; "CY =";; CY ' IF SX < (DW \ 2) THEN ' X = Max(0, SX - ME.W \ 2 - 32) ' ELSE ' X = Min(DW - ME.W, SX - ME.W \ 2 + 32) ' ENDIF ' If W <= 0 Then W = $W H = $H Endif If SX < CX And SX >= W Then X = SX - W \ 2 - ARROW_HEIGHT Else X = SX - W \ 2 + ARROW_HEIGHT Endif 'X = DX + Max(4, Min(DW - W - 4, X)) X = Min(X, DX + DW - W - 4) X = Max(X, DX) 'IF SY < (DH \ 2) THEN 'DEBUG SY;; CY;; ME.H If (SY >= CY And SY < (DY + DH - H)) Or SY < (DY + H) Then Y1 = 1 'Y4 = ARROW_HEIGHT Y2 = ARROW_HEIGHT + 1 Y = SY Y4 = Y2 Else Y1 = H - 1 'Y4 = H - ARROW_HEIGHT Y2 = H - ARROW_HEIGHT - 1 Y = SY - H Y4 = Y2 Endif Y3 = Y2 'Y = DY + Max(4, Min(DH - H - 4, Y)) Y = Min(Y, DY + DH - H - 4) Y = Max(Y, DY) 'Debug "X =";; X;; "Y =";; Y;; "W =";; W;; "H =";; H X1 = Min(Max(16, SX - X), W - 16) 'X2 = W \ 2 - 12 'X3 = X2 + 24 If X1 < (W \ 2) Then X2 = X1 X3 = X1 + ARROW_HEIGHT Else X2 = X1 - ARROW_HEIGHT X3 = X1 Endif X2 = Max(X2, 16) 'Debug "X1="; X1;; "X2="; X2;; "X3="; X3 Me.Move(X, Y, W, H) sNew = ARROW_HEIGHT & " " & Me.W & " " & Me.H & " " & X1 & " " & Y1 & " " & X2 & " " & Y2 & " " & X3 & " " & Y3 If sNew <> $sOld Then 'DEBUG sNew 'ME.Hide ' ' hImage = New Image(Me.W, Me.H, Color.Transparent) ' Paint.Begin(hImage) ' ' PaintRoundRect(0, ARROW_HEIGHT, Paint.W, Paint.H - ARROW_HEIGHT * 2, 12) ' Paint.Brush = Paint.Color(Me.Background) ' Paint.Fill ' PaintRoundRect(0.5, ARROW_HEIGHT + 0.5, Paint.W - 1, Paint.H - ARROW_HEIGHT * 2 - 1, 12) ' iColor = Color.Black 'Color.Merge(&H808080, Me.Background) ' Paint.Brush = Paint.Color(iColor) ' Paint.LineWidth = 1 ' Paint.Stroke ' ' Paint.End ' ' hPict = hImage.Picture ' hImage = New Image(Me.W, Me.H, Color.Transparent) ' Draw.Begin(hImage) ' ' 'Draw.FillRect(0, 0, Draw.W, Draw.H, Color.White) ' DrawRoundRect(0, ARROW_HEIGHT, Me.W, Me.H - ARROW_HEIGHT * 2) ' ' Draw.FillStyle = Fill.Solid ' Draw.LineStyle = Line.None ' ' Draw.FillColor = iColor ' 'DrawInternalRect(0, ARROW_HEIGHT, ME.W, ME.H - ARROW_HEIGHT * 2) ' Draw.Polygon([X1, Y1, X2, Y2, X3, Y3]) ' ' Draw.FillColor = BACKGROUND_COLOR 'Me.Background ' 'DrawInternalRect(1, ARROW_HEIGHT + 1, ME.W - 2, ME.H - (ARROW_HEIGHT + 1) * 2) ' Draw.Polygon([X1, Y1, X2, Y2, X3, Y3]) ' Draw.End Paint.Begin(hImage) Paint.Background = Color.Merge(Color.TooltipBackground, Color.TooltipForeground) Paint.LineWidth = 2 'Paint.Translate(0.5, 0.5) Paint.Rectangle(1, ARROW_HEIGHT, hImage.W - 2, hImage.H - ARROW_HEIGHT * 2, 6) Paint.MoveTo(X2, Y4) Paint.LineTo(X3, Y4) Paint.MoveTo(X2, Y2) Paint.LineTo(X1, Y1) Paint.LineTo(X3, Y3) Paint.Stroke 'Paint.Translate(-0.5, -0.5) Paint.Background = Color.TooltipBackground Paint.Rectangle(1, ARROW_HEIGHT, hImage.W - 2, hImage.H - ARROW_HEIGHT * 2, 6) Paint.Fill Paint.Polygon([X1, Y1, X2, Y2, X3, Y3]) Paint.Fill 'Paint.Translate(0.5, 0.5) Paint.End 'hImage.Save("~/balloon.png") 'hImage.Erase(Color.White) Me.Picture = hImage.Picture $sOld = sNew Endif hCtrl = Application.ActiveControl Try GetTopLevel(hCtrl).Show Try hCtrl.SetFocus If Not Me.Visible Then hWin = Application.ActiveWindow Me.Show ' If hWin Then ' Debug hWin ' hWin.Show ' Wait ' hWin.Show ' Endif Else Form_Show Me.Raise Endif $fShow = Timer End Public Sub Run(sMsg As String, hCtrl As Control, hIcon As Picture, DX As Integer, DY As Integer) Dim hWin As Window 'IF hCtrl <> $hCtrl THEN ' DEBUG ' ME.Hide 'ELSE Form_Hide 'ENDIF txtMessage.W = Max(hCtrl.W / 2, 768) txtMessage.Text = Replace(sMsg, "\n", "
      ") txtMessage.Adjust If txtMessage.W < 64 Then txtMessage.W = 64 $W = txtMessage.W + 2 $H = txtMessage.Font.RichTextHeight(txtMessage.Text, $W) txtMessage.Resize($W, $H) $hCtrl = hCtrl ARROW_HEIGHT = Min(16, $hCtrl.H \ 4 + 8) $DX = DX $DY = DY hWin = GetTopLevel($hCtrl) If Not hWin.Modal Then hWin.Show $hObs = New Observer(hWin) As "Window" $hWatcher2 = New Watcher($hCtrl) As "Watcher" If hIcon Then imgIcon.Picture = hIcon imgIcon.Resize(hIcon.Width, hIcon.Height) imgIcon.Show $W += imgIcon.W + 8 + PADDING * 2 $H = Max($H, imgIcon.H) + PADDING * 2 + ARROW_HEIGHT * 2 imgIcon.Move(PADDING, PADDING + ARROW_HEIGHT) txtMessage.Move(imgIcon.X + imgIcon.W + 8, PADDING + ARROW_HEIGHT) ', ME.W - 32 - imgIcon.W - 8) Else imgIcon.Hide $W += PADDING * 2 $H += PADDING * 2 + ARROW_HEIGHT * 2 txtMessage.Move(PADDING, PADDING + ARROW_HEIGHT) ', ME.W - 32) Endif MakeBorder($W, $H) 'Debug Me.SkipTaskbar 'Me.SkipTaskbar = True End Public Sub Form_Show() 'timCheck.Enabled = FALSE 'GetTopLevel($hCtrl).Show timCheck.Start End Public Sub Form_Hide() timCheck.Stop $hObs = Null $hWatcher2 = Null End Public Sub Watcher_Hide() 'Debug Me.Close End ' PUBLIC SUB Form_Deactivate() ' ' ME.Hide ' ' END Public Sub txtMessage_MouseDown() 'Debug Me.Close End Public Sub Form_MouseDown() 'Debug Me.Close End Public Sub Window_Move() If Not Me.Visible Then Return If Abs($hCtrl.ScreenX - $X) >= 4 Or Abs($hCtrl.ScreenY - $Y) >= 4 Then MakeBorder Endif End Public Sub Window_Hide() 'Debug Me.Close End Public Sub timCheck_Timer() If Not Object.IsValid($hCtrl) Or If (Timer - $fShow) > ($iDelay / 1000) Then Me.Close Return Endif If Abs($hCtrl.ScreenX - $X) >= 4 Or Abs($hCtrl.ScreenY - $Y) >= 4 Then MakeBorder Endif End Public Sub GetControl() As Control If Me.Visible Then Return $hCtrl End Static Public Sub GetDelay() As Integer Return $iDelay End Static Public Sub SetDelay(iDelay As Integer) $iDelay = iDelay End Public Sub Form_Open() txtMessage.Foreground = Color.TooltipForeground End gambas-3.16.3/comp/src/gb.form/.src/Balloon/FBalloon.form000066400000000000000000000007341411575327000227420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,35,23) Visible = False Foreground = Color.TextForeground Mask = True Persistent = True Border = False TakeFocus = False Stacking = Window.Above SkipTaskbar = True Transparent = True { txtMessage TextLabel MoveScaled(8,3,24,10) } { timCheck #Timer #MoveScaled(24,15) Delay = 250 } { imgIcon PictureBox txtMessage Name = "imgIcon" MoveScaled(2,4,5,5) Visible = False } } gambas-3.16.3/comp/src/gb.form/.src/Button/000077500000000000000000000000001411575327000202425ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Button/ButtonBox.class000066400000000000000000000155671411575327000232330ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Text,Alignment{Align.Normal;Left;Center;Right}=Normal,Picture,ReadOnly,Border=True,Button=True,ClearButton,Filter,FilterMenu{Menu}" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Event Click Event Change Event Activate Event Clear Event Filter Event Validate Property Picture As Picture Property Text As String Property Pos As Integer Property Read Length As Integer Property ReadOnly As Boolean Property Border As Boolean Property Read Editor As MaskBox Property Button As Boolean Property Alignment As Integer Property ClearButton As Boolean Property Filter As Boolean Property FilterMenu As String 'Private $hPanel As Panel Private $hBackground As DrawingArea Private $bBorder As Boolean Private $hTextBox As MaskBox Private $hButton As ToolButton Private $hClearButton As ToolButton Private $sMenu As String Private $bFilter As Boolean Private $hFilter As PictureBox Private $hTimer As Timer 'Private $hObserver As Observer Public Sub _new() $hBackground = New DrawingArea(Me) As "Background" '$hBackground.Arrangement = Arrange.Horizontal $hTextBox = New MaskBox($hBackground) As "TextBox" $hTextBox.Border = False $hTextBox.Expand = True Me.Proxy = $hTextBox $hButton = New ToolButton($hBackground) As "Button" $hButton.W = Desktop.Scale * 3 $hButton.Picture = Picture["./img/select.png"] '$hButton.Hide Border_Write(True) End Private Function Picture_Read() As Picture Return $hButton.Picture End Private Sub Picture_Write(Value As Picture) If Not Value Then Value = Picture["./img/select.png"] $hButton.Picture = Value End Private Function Text_Read() As String Return $hTextBox.Text End Private Sub Text_Write(Value As String) $hTextBox.Text = Value End Public Sub Button_Click() $hTextBox.SetFocus Raise Click End Private Function ReadOnly_Read() As Boolean Return $hTextBox.ReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $hTextBox.ReadOnly = Value End Public Sub Background_GotFocus() $hTextBox.SetFocus End Public Sub Clear() $hTextBox.Clear End Private Function Length_Read() As Integer Return $hTextBox.Length End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value '$hBackground.Padding = If(Value, Style.TextBoxFrameWidth, 0) '$hBackground.Margin = Value 'Debug $hBackground.Padding Background_Arrange $hBackground.Refresh End Public Sub Background_Draw() Dim iCol As Integer Dim iState As Integer iCol = Style.BackgroundOf($hTextBox) If $bBorder Then iState = Style.StateOf($hBackground) If $hTextBox.HasFocus Then iState = iState Or Style.HasFocus If $hBackground.Hovered Then iState = iState Or Style.Hovered Style.PaintBox(0, 0, Paint.W, Paint.H, iState, iCol) Else Paint.FillRect(0, 0, Paint.W, Paint.H, iCol) Endif End Private Function Editor_Read() As MaskBox Return $hTextBox End Private Function Button_Read() As Boolean Return $hButton.Visible End Private Sub Button_Write(Value As Boolean) $hButton.Visible = Value End Private Function Alignment_Read() As Integer Return $hTextBox.Alignment End Private Sub Alignment_Write(Value As Integer) $hTextBox.Alignment = Value End Public Sub TextBox_GotFocus() $hBackground.Refresh End Public Sub TextBox_LostFocus() $hBackground.Refresh End Public Sub TextBox_Activate() Raise Activate End Public Sub TextBox_Validate() Dim bStop As Boolean bStop = Raise Validate If bStop Then Stop Event End Public Sub TextBox_Change() If $bFilter Then $hTimer.Start Raise Change End Public Sub Background_Arrange() Dim FW, FH As Integer Dim hCtrl As Control Dim aCtrl As New Control[] Dim X, H As Integer If $bBorder Then FW = Style.BoxFrameWidth FH = Min(3, Style.BoxFrameHeight) Endif For Each hCtrl In $hBackground.Children If hCtrl Is ToolButton And If hCtrl.Visible Then aCtrl.Add(hCtrl) Next H = Me.H - FH * 2 If System.RightToLeft Then X = FW For Each hCtrl In aCtrl hCtrl.W = Desktop.Scale * 3 hCtrl.Move(X, FH, H, H) X += H Next If $hFilter Then $hTextBox.Move(X, FH, Me.W - FW - X - H, H) $hFilter.Move(Me.W - H - FW, FH, H, H) Else $hTextBox.Move(X, FH, Me.W - Style.BoxFrameWidth - X, H) Endif Else X = Me.W - FW For Each hCtrl In aCtrl hCtrl.W = Desktop.Scale * 3 X -= H hCtrl.Move(X, FH, H, H) Next If $hFilter Then $hFilter.Move(FW, FH, H, H) $hTextBox.Move(FW + H, FH, X - Style.BoxFrameWidth - H, H) Else $hTextBox.Move(Style.BoxFrameWidth, FH, X - Style.BoxFrameWidth, H) Endif Endif End Public Sub _AddButton(hButton As ToolButton) hButton.Reparent($hBackground) hButton.Raise If $hClearButton Then $hClearButton.Raise $hButton.Lower End Private Function Pos_Read() As Integer Return $hTextBox.Pos End Private Sub Pos_Write(Value As Integer) $hTextBox.Pos = Value End Private Function ClearButton_Read() As Boolean If $hClearButton Then Return True End Private Sub ClearButton_Write(Value As Boolean) If Value = ClearButton_Read() Then Return If Not Value Then $hClearButton.Delete $hClearButton = Null Else $hClearButton = New ToolButton($hBackground) As "ClearButton" $hClearButton.Picture = Picture["icon:/small/clear"] Endif Background_Arrange End Public Sub ClearButton_Click() $hTextBox.Clear FilterNow Raise Clear End Private Function Filter_Read() As Boolean Return $bFilter End Private Sub UpdateFilterPicture() $hFilter.Picture = Picture[If($sMenu, "img/32/filter-menu.png", "img/32/filter.png")] $hFilter.Mouse = If($sMenu, Mouse.Pointing, Mouse.Default) End Private Sub Filter_Write(Value As Boolean) If $bFilter = Value Then Return $bFilter = Value If $bFilter Then $hFilter = New PictureBox($hBackground) As "FilterPictureBox" $hFilter.Stretch = True $hFilter.Padding = 2 UpdateFilterPicture $hTimer = New Timer As "FilterTimer" $hTimer.Delay = 500 Else $hFilter.Delete $hFilter = Null Endif Background_Arrange End Private Function FilterMenu_Read() As String Return $sMenu End Private Sub FilterMenu_Write(Value As String) $sMenu = Value UpdateFilterPicture End Public Sub FilterTimer_Timer() $hTimer.Stop Raise Filter End Public Sub FilterPictureBox_MouseDown() Dim hMenu As Menu If Not $sMenu Then Return hMenu = Main.FindMenu(Me, $sMenu) If hMenu Then hMenu.Popup($hFilter.ScreenX, $hFilter.ScreenY + $hFilter.H) End Public Sub FilterNow() If Not $bFilter Then Return 'If Not $hTimer.Enabled Then Return FilterTimer_Timer End gambas-3.16.3/comp/src/gb.form/.src/Button/MenuButton.class000066400000000000000000000261571411575327000234040ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl 'Public Const _Properties As String = "*,AutoResize,Text,Picture,Border,Radio,Toggle,Value" Public Const _Properties As String = "*,Action,AutoResize,Text,Picture,Arrow=True,Border=True,Menu,MenuOnly" Public Const _DefaultSize As String = "6,4" Public Const _Similar As String = "Button" Public Const _DefaultEvent As String = "Click" Event Click ' Event MouseDown ' Event MouseUp ' Event MouseWheel ' Event MouseDrag Property Picture As Picture Property Text As String Property Menu As String Property Arrow As Boolean Property MenuOnly As Boolean 'Property Action As String Property Value As Boolean Property AutoResize As Boolean Property Border As Boolean Private $hDrawingArea As DrawingArea Private $hPicture As Picture Private $sText As String Private $sActualText As String Private $bBorder As Boolean Private $sMenu As String Private $hButton As Button Private $iShortcutPos As Integer Private $bInside As Boolean Private $bInsideArrow As Boolean Private $bPressed As Boolean Private $bArrow As Boolean Private $bAutoResize As Boolean Private $bMenuOnly As Boolean Private $hLastFocus As Control Static Private $hCurrent As MenuButton Static Private $hCurrentMenu As Menu Public Sub _new() $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Focus = True $bBorder = True $bArrow = True Me.Proxy = $hDrawingArea End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) $hPicture = Value UpdateSize End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) Dim iPos As Integer 'Dim S As Integer $sText = Value $sActualText = $sText $iShortcutPos = 0 Do iPos = String.InStr($sText, "&", iPos + 1) If iPos = 0 Then Break If String.Mid$($sText, iPos + 1, 1) = "&" Then Inc iPos Continue Endif If Not $hButton Then $hButton = New Button(Me) As "Button" $hButton.Ignore = True $hButton.Border = False $hButton.AutoResize = True 'S = Desktop.Scale * 3 $hButton.Lower() Endif $hButton.Text = String.Mid$($sText, iPos, 2) $hButton.Enabled = Not Me.Design $iShortcutPos = iPos $sActualText = String.Left($sText, iPos - 1) & String.Mid($sText, iPos + 1) $hButton.Y = -$hButton.H Break Loop $sActualText = Replace($sActualText, "&&", "&") UpdateSize End Private Function Menu_Read() As String Return $sMenu End Private Sub Menu_Write(Value As String) $sMenu = Value End Public Sub Button_GotFocus() _SetLastFocus $hDrawingArea.SetFocus 'Button_Click End Public Sub Button_Click() If Not $bMenuOnly Then Action.Raise(Me) Raise Click Else Arrow_Click Endif End Public Sub WatchTimer_Timer() Dim hMenuButton As MenuButton Dim X As Integer Dim Y As Integer If Not $hCurrentMenu Or If $hCurrentMenu.Closed Then Last.Stop Return Endif X = Mouse.ScreenX - Me.Parent.ScreenX Y = Mouse.ScreenY - Me.Parent.ScreenY If X < 0 Or If Y < 0 Or If X >= Me.Parent.W Or If Y >= Me.Parent.H Then Return Try hMenuButton = Me.Parent.FindChild(X, Y) If hMenuButton And If hMenuButton <> $hCurrent And If hMenuButton.Enabled And If Not hMenuButton.Arrow Then If Main.FindMenu(hMenuButton, hMenuButton.Menu) Then $hCurrentMenu.Close $hCurrent.Refresh $hCurrent = hMenuButton Endif Endif End Static Private Sub HandleMenu(hCurrent As MenuButton) Dim hMenu As Menu Dim hWatch As Timer hWatch = New Timer As "WatchTimer" hWatch.Delay = 50 hWatch.Start While hCurrent hMenu = Null If hCurrent.Menu Then hMenu = Main.FindMenu(hCurrent, hCurrent.Menu) If Not hMenu Then Break $hCurrent = hCurrent $hCurrentMenu = hMenu hCurrent._SetLastFocus() hCurrent.SetFocus ' Should refresh old and new menus hMenu.Popup(hCurrent.ScreenX, hCurrent.ScreenY + hCurrent.H) If $hCurrent = hCurrent Then Break hCurrent = $hCurrent Wend hWatch.Stop hWatch = Null If Object.IsValid($hCurrent) Then $hCurrent.Refresh $hCurrent._RestoreLastFocus() Endif $hCurrent = Null $hCurrentMenu = Null End Private Sub Arrow_Click() If Not $sMenu Or If Not Main.FindMenu(Me, $sMenu) Then $hCurrent = Me $hCurrentMenu = Null Me.SetFocus Me.Refresh Raise Click $hCurrent = Null Return Endif HandleMenu(Me) End ' Public Sub ShowMenu() ' ' $hTimer = New Timer As "ShowMenuTimer" ' $hTimer.Trigger ' ' End ' ' Public Sub ShowMenuTimer_Timer() ' ' Arrow_Click ' $hTimer = Null ' ' End Private Function Value_Read() As Boolean Return False End Private Sub Value_Write(Value As Boolean) If Value Then Print "Click" End Private Function Arrow_Read() As Boolean Return $bArrow End Private Sub Arrow_Write(Value As Boolean) $bArrow = Value UpdateSize End Private Sub UpdateSize() Dim W As Integer If $bAutoResize Then If $sActualText Then W = Me.Font.TextWidth($sActualText) + Desktop.Scale If $hPicture Then W += $hPicture.W + Desktop.Scale If $bArrow Then W += Desktop.Scale * 2 W += Desktop.Scale Me.W = W Endif $hDrawingArea.Refresh End Private Function AutoResize_Read() As Boolean Return $bAutoResize End Private Sub AutoResize_Write(Value As Boolean) $bAutoResize = Value UpdateSize End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value UpdateSize End Public Sub DrawingArea_GotFocus() If $hButton And If Not Me.Design Then $hButton.Enabled = False _SetLastFocus $hDrawingArea.Refresh End Public Sub DrawingArea_LostFocus() If $hButton And If Not Me.Design Then $hButton.Enabled = True $hDrawingArea.Refresh End Public Sub DrawingArea_Enter() If Me.Design Then Return $bInside = True $hDrawingArea.Refresh End Public Sub DrawingArea_Leave() If Me.Design Then Return $bInside = False $hDrawingArea.Refresh End Public Sub DrawingArea_MouseDown() If Me.Design Then Return If Not Mouse.Left Then Return If Not Me.Enabled Then Return $bPressed = True If $bArrow Then $bInsideArrow = Mouse.X > (Me.W - Desktop.Scale * 3 + 3) Else $bInsideArrow = $sMenu ' if the arrow is hidden, the all button will popup the menu Endif $hDrawingArea.SetFocus $hDrawingArea.Refresh If $bInsideArrow Or $bMenuOnly Then Arrow_Click DrawingArea_MouseUp 'If Not Mouse.Inside($hDrawingArea) Then DrawingArea_Leave Endif End Public Sub DrawingArea_MouseMove() Dim bPressed As Boolean If Me.Design Then Return If Not Me.Enabled Then Return bPressed = Mouse.Inside($hDrawingArea) If $bPressed <> bPressed Then $bPressed = bPressed $hDrawingArea.Refresh Endif End Public Sub DrawingArea_MouseUp() If Not Mouse.Left Then Return If Me.Design Then Return If Not Me.Enabled Then Return If Not $bPressed Then Return $bPressed = False $hDrawingArea.Refresh If Not ($bInsideArrow Or $bMenuOnly) Then Button_Click End Public Sub DrawingArea_Draw() Dim X, X2, Y, W As Integer Dim iFlag As Integer Dim sText As String Dim bFlat As Boolean Dim bDrawArrow As Boolean Dim iFg As Integer Dim hFont As Font Dim bMenu As Boolean Dim iAlign As Integer Dim DS As Integer = Desktop.Scale iFlag = Style.StateOf($hDrawingArea) If $hCurrent Then If $hCurrent = Me Then iFlag = iFlag Or Draw.Hover Else If $bInside Then iFlag = iFlag Or Draw.Hover Endif 'If $bInside And If Me.Enabled And If Not Me.Design Then iFlag += Draw.Hover 'If Not Me.Enabled Then iFlag += Draw.Disabled If $hDrawingArea.HasFocus Then iFlag += Draw.Hover bDrawArrow = $bArrow And (Me.W > DS * 4) '' TODO: System.RightToLeft bFlat = Not $bBorder 'And Not $bInside If Me = $hCurrent Then bMenu = True If bMenu Then Paint.FillRect(1, 1, Me.W - 2, Me.H - 2, Color.SelectedBackground) Else 'Paint.FillRect(1, 1, Me.W - 2, Me.H - 2, Style.BackgroundOf(Me)) If $bInsideArrow Or If $bMenuOnly Then Style.PaintButton(0, 0, Me.W, Me.H, False, iFlag, bFlat) Else Style.PaintButton(0, 0, Me.W, Me.H, $bPressed, iFlag, bFlat) Endif Endif If $hPicture Then If System.RightToLeft Then X = Paint.W - DS - $hPicture.W Else X = DS Endif If Me.Enabled Then Paint.DrawPicture($hPicture, X, (Me.H - $hPicture.H) / 2) Else Paint.DrawImage($hPicture.Image.Desaturate(), X, (Me.H - $hPicture.H) / 2) Endif Endif If bDrawArrow Then If System.RightToLeft Then Style.PaintArrow(DS, 0, DS, Me.H, Align.Bottom, iFlag) Else Style.PaintArrow(Me.W - DS * 2, 0, DS, Me.H, Align.Bottom, iFlag) Endif Endif If $sActualText Then iFg = Style.ForegroundOf(Me) If Not Me.Enabled Then iFg = Color.Merge(Color.ButtonBackground, iFg) If bMenu Then iFg = Color.SelectedForeground Paint.Background = iFg sText = $sActualText X = DS W = Me.W - DS * 2 If Not $hPicture And If Not bDrawArrow Then iAlign = Align.Center Else iAlign = Align.Normal If $hPicture Then W -= $hPicture.W + DS If Not System.RightToLeft Then X += $hPicture.W + DS Endif If bDrawArrow Then If System.RightToLeft Then X += DS * 2 W -= DS * 2 Endif Endif Paint.ClipRect = Rect(X, 0, W, Me.H) Paint.DrawText(sText, X, 0, W, Me.H, iAlign) If $iShortcutPos Then hFont = Paint.Font If iAlign = Align.Center Then X += (W - hFont.TextWidth(sText)) \ 2 X2 = X + hFont.TextWidth(String.Left(sText, $iShortcutPos)) X += hFont.TextWidth(String.Left(sText, $iShortcutPos - 1)) Y = (Me.H - hFont.Height) / 2 + hFont.Ascent + 1 If Main.UseGTK() Then Inc Y If System.RightToLeft Then Paint.FillRect(Paint.W - X, Y, X2 - X, 1, iFg) Else Paint.FillRect(X, Y, X2 - X, 1, iFg) Endif Endif Endif End Public Sub DrawingArea_KeyPress() If Key.Code = Key.Space Then $bPressed = True $hDrawingArea.Refresh ' Else If Key.Code = Key.Tab Then ' If $hButton Then ' Try Me.Next.SetFocus ' Stop Event ' Endif Endif End Public Sub DrawingArea_KeyRelease() If Key.Code = Key.Space Then $bPressed = False $hDrawingArea.Refresh Wait Button_Click Endif End Private Function MenuOnly_Read() As Boolean Return $bMenuOnly End Private Sub MenuOnly_Write(Value As Boolean) $bMenuOnly = Value End Public Sub DrawingArea_Font() UpdateSize End Public Sub _SetLastFocus() If $hLastFocus Then 'Debug " already set" Return Endif $hLastFocus = Application.PreviousControl ' If $hLastFocus Then ' Debug $hLastFocus.Name ' Else ' Debug "NULL" ' Endif End Public Sub _RestoreLastFocus() If $hLastFocus Then 'Debug $hLastFocus.Name If $hDrawingArea.HasFocus Then Try $hLastFocus.SetFocus $hLastFocus = Null ' Else ' Debug "NULL" Endif End gambas-3.16.3/comp/src/gb.form/.src/Button/SwitchButton.class000066400000000000000000000110001411575327000237160ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Value,Animated" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "16,4" Public Const _Similar As String = "Button" Event Click Property Value As Boolean Property Animated As Boolean Property Background As Integer Private $hDrawingArea As DrawingArea Private $fValue As Float Private $fTargetValue As Float Private $hTimer As Timer Private $bPressed As Boolean Private $iBg As Integer = Color.Default Private $bAnimated As Boolean Public Sub _new() $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Focus = True End Private Function Animated_Read() As Boolean Return $bAnimated End Private Sub Animated_Write(Value As Boolean) $bAnimated = Value End Private Function Value_Read() As Boolean Return $fValue >= 0.5 End Private Sub Value_Write(Value As Boolean) Dim fValue As Float If $hTimer Then $hTimer.Stop fValue = IIf(Value, 1, 0) If fValue <> $fValue Then $fValue = fValue $hDrawingArea.Refresh Raise Click Endif End Public Sub DrawingArea_Draw() Dim iCol As Integer Dim iFlag As Integer = Style.StateOf($hDrawingArea) Dim X As Float Dim Y As Integer Dim DS As Integer iCol = Color.Merge(Color.Merge(Color.TextForeground, Color.SelectedBackground, $fValue), Color.Background) iCol = Color.SetHSV(iCol, Color[Color.SelectedBackground].Hue) If iFlag And Style.Disabled Then iCol = Color.Merge(iCol, Color.Background, 0.75) DS = Desktop.Scale Paint.Rectangle(DS, (Paint.H - DS * 1.5) / 2, Paint.W - DS * 2, DS * 1.5, DS) Paint.Background = iCol Paint.Fill X = (Paint.W - DS * 4) * $fValue + DS / 2 Y = (Paint.H - DS * 3) / 2 Paint.Ellipse(X, Y, DS * 3, DS * 3) Paint.Background = iCol Paint.Fill() iCol = Color.Merge(Color.ButtonBackground, Color.SelectedBackground, $fValue) If iFlag And Style.Disabled Then iCol = Color.Merge(iCol, Color.Background, 0.75) Paint.Ellipse(X + 2, Y + 2, DS * 3 - 4, DS * 3 - 4) Paint.Background = iCol Paint.Fill() If iFlag And Style.HasFocus Then Paint.Ellipse(X - DS / 2, Y - DS / 2, DS * 4, DS * 4) Paint.Background = Color.SetAlpha(Color.SelectedBackground, 200) Paint.Fill Endif End Public Sub DrawingArea_Enter() $hDrawingArea.Refresh End Public Sub DrawingArea_Leave() $hDrawingArea.Refresh End Public Sub DrawingArea_GotFocus() $hDrawingArea.Refresh End Public Sub DrawingArea_LostFocus() $hDrawingArea.Refresh End Public Sub DrawingArea_MouseDown() Dim hRect As Rect If Not Me.Enabled Then Return If Me.Design Then Return If $hTimer And If $hTimer.Enabled Then Return If $fValue = 0 Then hRect = New Rect(0, 0, $hDrawingArea.W / 2, $hDrawingArea.H) Else If $fValue = 1 Then hRect = New Rect($hDrawingArea.W / 2, 0, $hDrawingArea.W / 2, $hDrawingArea.H) Endif If Not hRect Then Return hRect.Adjust(Style.FrameWidth) If Not hRect.Contains(Mouse.X, Mouse.Y) Then Return $bPressed = True $hDrawingArea.Refresh End Private Sub ToggleAnimate() If $bAnimated And If Application.Animations Then If $fValue < 0.5 Then $fTargetValue = 1 Else $fTargetValue = 0 Endif If Not $hTimer Then $hTimer = New Timer As "Timer" $hTimer.Delay = 20 Endif $hTimer.Start Else $hTimer = Null Me.Value = Not Me.Value Endif End Public Sub DrawingArea_MouseUp() If Not Me.Enabled Then Return If Me.Design Then Return If $bPressed Then $bPressed = False $hDrawingArea.Refresh Endif ToggleAnimate End Public Sub Timer_Timer() Dim fInc As Float fInc = ($fTargetValue - $fValue) / 2 If Abs(fInc) < 0.01 Then fInc = 0.01 * Sgn(fInc) $fValue += fInc If $fValue < 0 Then $fValue = 0 $hTimer.Stop Raise Click Else If $fValue > 1 Then $fValue = 1 $hTimer.Stop Raise Click Endif $hDrawingArea.Refresh End Private Function Background_Read() As Integer Return $iBg End Private Sub Background_Write(Value As Integer) $iBg = Value $hDrawingArea.Refresh End Public Sub DrawingArea_MouseWheel() 'If Not Me.Enabled Then Return If Not Mouse.Forward Xor Me.Value Then ToggleAnimate Endif End Public Sub DrawingArea_KeyPress() Select Key.Code Case Key.Left If Me.Value Then ToggleAnimate Case Key.Right If Not Me.Value Then ToggleAnimate Case Key.Space ToggleAnimate End Select End gambas-3.16.3/comp/src/gb.form/.src/Color/000077500000000000000000000000001411575327000200455ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Color/ColorButton.class000066400000000000000000000046411411575327000233530ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Event Change Event Click Property Color, Value As Integer Property Border As Boolean Public Const _Properties As String = "*,Value{Color},Border=True" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "8,4" Private $iColor As Integer Private $hDrawingArea As DrawingArea Private $bBorder As Boolean = True Private $bPressed As Boolean Private $bInside As Boolean Public Sub _new() $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Focus = True $bBorder = True Me.Proxy = $hDrawingArea End Public Sub DrawingArea_Draw() Dim W, H As Integer Dim F As Integer = If($bBorder, Style.FrameWidth, 0) Dim bPressed As Boolean bPressed = $bPressed And $bInside Style.PaintButton(0, 0, Paint.W, Paint.H, bPressed, Style.StateOf(Last), Not $bBorder) 'F = F * 2 + 4 F += 1 + Desktop.Scale \ 2 W = Paint.W - F * 2 H = Paint.H - F * 2 If W <= 0 Or If H <= 0 Then Return If bPressed Then Inc F Paint.FillRect(F, F, W, H, $iColor) Paint.DrawRect(F, F, W, H, Color.SetAlpha(Color.Foreground, 128)) 'Style.PaintBox(F, F, W, H, Style.Normal, $iColor) End Private Function Color_Read() As Integer Return $iColor End Private Sub Color_Write(iColor As Integer) If iColor = $iColor Then Return $iColor = iColor Me.Refresh Raise Change End Public Sub DrawingArea_MouseDown() $bPressed = True $bInside = True $hDrawingArea.Refresh End Public Sub DrawingArea_MouseMove() Dim bInside As Boolean If Mouse.X >= 0 And If Mouse.X < $hDrawingArea.W And If Mouse.Y >= 0 And If Mouse.Y < $hDrawingArea.H Then bInside = True Else bInside = False Endif If bInside <> $bInside Then $bInside = bInside Me.Refresh Endif End Public Sub DrawingArea_MouseUp() If $bPressed And $bInside Then Dialog.Color = $iColor If Not Dialog.SelectColor() Then Color_Write(Dialog.Color) Raise Click Endif Endif $bPressed = False $bInside = False Me.Refresh End Public Sub DrawingArea_Enter() Me.Refresh End Public Sub DrawingArea_Leave() Me.Refresh End Public Sub DrawingArea_GotFocus() Me.Refresh End Public Sub DrawingArea_LostFocus() Me.Refresh End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value Me.Refresh End gambas-3.16.3/comp/src/gb.form/.src/Color/ColorChooser.class000066400000000000000000000034121411575327000234750ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Event Change Event Activate Public Const _Properties As String = "*,Border=True,ShowAlpha,ShowColorMap=True,ShowCustom" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "Chooser" 'PUBLIC CONST _DrawWith AS String = "-" Property SelectedColor As Integer Property Value As Integer Property ShowAlpha As Boolean Property ShowColorMap As Boolean Property ShowCustom As Boolean Property Border As Boolean Private frmChooser As FColorChooser Public Sub _new() frmChooser = New FColorChooser(Me) 'As "frmChooser" 'Object.Attach(frmChooser, Me, "frmChooser") End Public Sub _RaiseChange() Raise Change End Private Function SelectedColor_Read() As Integer Return frmChooser.GetColor() End Private Sub SelectedColor_Write(iColor As Integer) frmChooser.SetColor(iColor) End Public Sub _RaiseActivate() Raise Activate End Private Function Value_Read() As Integer Return frmChooser.GetColor() End Private Sub Value_Write(Value As Integer) frmChooser.SetColor(Value) End Private Function ShowAlpha_Read() As Boolean Return frmChooser.GetAlpha() End Private Sub ShowAlpha_Write(Value As Boolean) frmChooser.SetAlpha(Value) End Private Function ShowColorMap_Read() As Boolean Return frmChooser.GetColorMap() End Private Sub ShowColorMap_Write(Value As Boolean) frmChooser.SetColorMap(Value) End Private Function Border_Read() As Boolean Return frmChooser.HasBorder() End Private Sub Border_Write(Value As Boolean) frmChooser.SetBorder(Value) End Private Function ShowCustom_Read() As Boolean Return frmChooser.GetCustom() End Private Sub ShowCustom_Write(Value As Boolean) frmChooser.SetCustom(Value) End gambas-3.16.3/comp/src/gb.form/.src/Color/ColorPalette.class000066400000000000000000000161711411575327000234770ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border=True,ReadOnly" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "36,4" Public Const _Group As String = "Chooser" Event Click Event Activate Property Border As Boolean Property Colors As Integer[] Property Index As Integer Property Current As Integer Property ReadOnly As Boolean Private mnuPopup As Menu Private mnuRemove As Menu Private mnuRemoveAll As Menu Private mnuSort As Menu Private $aColors As Integer[] = [Color.Blue, Color.Green, Color.Red, &H808080&, Color.Black, Color.White] Private $hView As ScrollArea Private Const CUSTOM_D As Integer = 6 Private CUSTOM_W As Integer Private $iIndex As Integer = -1 Private $iCurrent As Integer = -1 Private $bReadOnly As Boolean Private $iLastIndex As Integer Public Sub _new() $hView = New ScrollArea(Me) As "View" $hView.ScrollBar = Scroll.None $hView.Tracking = True $hView.Mouse = Mouse.Pointing 'Me.Background = Color.TextBackground End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) $hView.Border = If(Value, Border.Plain, Border.None) UpdateColors End Private Sub UpdateColors() $hView.ResizeContents($aColors.Count * (CUSTOM_W + CUSTOM_D) + CUSTOM_D, $hView.ClientH) $hView.Refresh End Private Function Colors_Read() As Integer[] Return $aColors.Copy() End Private Sub Colors_Write(Value As Integer[]) If Not Value Then $aColors.Clear Else $aColors = Value.Copy() Endif UpdateColors End Public Sub Clear() $aColors.Clear UpdateColors End Public Sub Add((Color) As Integer) Dim iPos As Integer Do iPos = $aColors.Find(Color) If iPos < 0 Then Break $aColors.Remove(iPos) Loop $aColors.Add(Color) If $aColors.Count > 32 Then $aColors.Remove(0, $aColors.Count - 32) UpdateColors End Public Sub AddFirst((Color) As Integer) Dim iPos As Integer Do iPos = $aColors.Find(Color) If iPos < 0 Then Break $aColors.Remove(iPos) Loop $aColors.Add(Color, 0) If $aColors.Count > 32 Then $aColors.Remove(32, $aColors.Count - 32) UpdateColors End Public Sub Exist((Color) As Integer) As Boolean Return $aColors.Exist(Color) End Public Sub View_Draw() Dim X, Y, W, H As Integer Dim I As Integer Dim iColor As Integer Dim iCurrent As Integer 'If Me.Background <> Color.Default Then Paint.FillRect(0, 0, Paint.W, Paint.H, Me.Background) If $aColors.Count = 0 Then Paint.Background = Color.SetAlpha(Color.TextForeground, 192) Paint.Font.Grade = 5 Paint.DrawText(("Last colors"), Desktop.Scale, 0, Paint.W, Paint.H, Align.Left) Return Endif Paint.LineWidth = 0.5 Paint.LineJoin = Paint.LineJoinMiter Paint.LineCap = Paint.LineCapButt X = CUSTOM_D Y = CUSTOM_D W = CUSTOM_W H = W 'Paint.Rectangle(X - 1, Y - 3, Paint.W - X * 2 + 2, Paint.H - Y * 2 + 5) 'Paint.Clip X -= $hView.ScrollX iCurrent = $iCurrent For I = 0 To $aColors.Max iColor = $aColors[I] Main.PaintColor(X + 2, Y + 2, W - 4, H - 4, iColor) If I = iCurrent Or If I = $iIndex And Me.Enabled Then Paint.Rectangle(X - 0.5, Y - 0.5, W + 1, H + 1) Paint.LineWidth = 3 Else Paint.Rectangle(X + 0.5, Y + 0.5, W - 1, H - 1) Paint.LineWidth = 1 Endif Paint.Background = If(I = iCurrent, Color.TextForeground, Color.LightForeground) Paint.Stroke X += W + CUSTOM_D If X >= Paint.W Then Break Next End Public Sub View_MouseDown() 'Debug Mouse.Left;; $iIndex If Not Me.Enabled Or If Not Mouse.Left Or If $iIndex < 0 Then Return SetCurrent($iIndex) Raise Click End Public Sub View_MouseMove() Dim I As Integer Dim sColor As String Dim Y As Integer 'Debug Y = Mouse.ScreenY - $hView.ScreenY If Y < 0 Or If Y >= $hView.H Then Return I = ((Mouse.ScreenX - $hView.ScreenX + $hView.ScrollX - (CUSTOM_D \ 2)) \ (CUSTOM_W + CUSTOM_D)) If I < 0 Or If I > $aColors.Max Then I = -1 If I = $iIndex Then Return $iIndex = I 'Debug I $iLastIndex = $iIndex If I >= 0 Then sColor = Hex$($aColors[I], 8) If sColor Begins "00" Then sColor = Mid$(sColor, 3) $hView.Tooltip = "#" & sColor Else $hView.Tooltip = "" Endif $hView.Refresh End ' mnuCustom,0,"",,,,T,,,,T,,,,"","","" ' mnuRemove,1,"Remove color",,,T,T,,,,T,,,,"","icon:/small/delete","" ' mnuRemoveAll,1,"Remove all colors",,,T,T,,,,T,,,,"","icon:/small/clear","" ' mnuSort,1,"Sort colors",,,T,T,,,,T,,,,"","icon:/small/sort-ascent","" ' Public Sub View_Menu() If $bReadOnly Then Return If Not mnuPopup Then mnuPopup = New Menu(Me.Window, True) mnuRemove = New Menu(mnuPopup) As "mnuRemove" mnuRemove.Text = ("Remove color") mnuRemove.Picture = Picture["icon:/small/delete"] mnuRemoveAll = New Menu(mnuPopup) As "mnuRemoveAll" mnuRemoveAll.Text = ("Remove all colors") mnuRemoveAll.Picture = Picture["icon:/small/clear"] mnuSort = New Menu(mnuPopup) As "mnuSort" mnuSort.Text = ("Sort colors") mnuSort.Picture = Picture["icon:/small/sort-ascent"] Endif mnuPopup.Popup End Public Sub View_DblClick() If Me.Enabled Then Raise Activate End Public Sub View_Leave() If $iIndex >= 0 Then $iIndex = -1 'Debug -1 $hView.Refresh Endif End Public Sub View_Scroll() View_MouseMove End Public Sub View_Arrange() CUSTOM_W = Max(CUSTOM_D, $hView.ClientH - CUSTOM_D * 2) UpdateColors End Private Sub SetCurrent(iCurrent As Integer) If $iCurrent = iCurrent Then Return $iCurrent = iCurrent If $iCurrent >= 0 Then $hView.EnsureVisible(CUSTOM_D + (CUSTOM_W + CUSTOM_D) * $iCurrent - CUSTOM_D, 0, CUSTOM_W + CUSTOM_D * 2, $hView.ClientH) $hView.Refresh End Private Function Index_Read() As Integer Return $iCurrent End Private Sub Index_Write(Value As Integer) If Value < 0 Or If Value > $aColors.Max Then Value = -1 Endif SetCurrent(Value) End Private Function Current_Read() As Integer If $iCurrent < 0 Then Return Color.Transparent Else Return $aColors[$iCurrent] Endif End Private Sub Current_Write(Value As Integer) SetCurrent($aColors.Find(Value)) End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $bReadOnly = Value $hView.Refresh End Public Sub mnuRemove_Click() If $iLastIndex >= 0 Then $aColors.Remove($iLastIndex) UpdateColors Endif End Public Sub mnuRemoveAll_Click() $aColors.Clear UpdateColors End Public Sub mnuSort_Click() Dim aSort As New String[] Dim iColor As Integer Dim sColor As String If $aColors.Count <= 1 Then Return For Each iColor In $aColors With Color[iColor] aSort.Add(Format(.Alpha, "000") & Format(.Hue, "000") & Format(.Saturation, "000") & Format(.Value, "000") & ":" & CStr(iColor)) End With Next aSort.Sort(gb.Descent) $aColors.Clear For Each sColor In aSort $aColors.Add(CInt(Mid$(sColor, InStr(sColor, ":") + 1))) Next UpdateColors End Public Sub View_MouseWheel() Stop Event End gambas-3.16.3/comp/src/gb.form/.src/Color/FColorChooser.class000066400000000000000000000252621411575327000236120ustar00rootroot00000000000000' Gambas class file Private $iColor As Integer Private $iOldColor As Integer 'PRIVATE $sSystem AS String Private $iHue As Integer Private $iSat As Integer Private $iVal As Integer Private $bLock As Boolean Static Private $hImage As Image Static Private $hCross As Image Static Private $hValue As Image Private $hMap As Picture Private $hValueMap As Image Private $bHide As Boolean Private $X As Integer Private $Y As Integer Private $nStdColor As Integer Private $hZoom As Picture Private Const ZOOM_FACTOR As Integer = 6 Private $bSnap As Boolean Private $bNormal As Boolean Private $iNoCustomColor As Integer Public Sub _new() If Not $hImage Then $hImage = Image.Load("img/colormap.png") $hCross = Image.Load("img/cross.png") $hValue = Image.Load("img/valuemap.png") Endif SetAlpha(False) End Private Sub GetParent() As ColorChooser Return Me.Parent End Private Sub MoveCross() $bHide = True dwgColorMap.Refresh($X - 7, $Y - 7, 16, 16) $bHide = False If $iHue = 0 Then $X = 0 Else $X = (360 - $iHue) * dwgColorMap.ClientW / 360 Endif $Y = (256 - $iSat) * dwgColorMap.ClientH / 256 dwgColorMap.Refresh($X - 7, $Y - 7, 16, 16) End Private Sub RefreshColor(Optional bRGB As Boolean = True, Optional bHSV As Boolean = True) $bLock = True If bHSV Then $iHue = Color[$iColor].Hue $iSat = Color[$iColor].Saturation $iVal = Color[$iColor].Value txtH.Value = $iHue txtS.Value = $iSat txtV.Value = $iVal Else $iHue = txtH.Value $iSat = txtS.Value $iVal = txtV.Value Endif If bRGB Then txtR.Value = Color[$iColor].Red txtG.Value = Color[$iColor].Green txtB.Value = Color[$iColor].Blue txtA.Value = Color[$iColor].Alpha Endif MoveCross 'sldValue.Value = $iVal dwgValue.Refresh If panAlpha.Visible Then sldAlpha.Value = txtA.Value txtHexa.Text = Hex$($iColor, 8) Else txtHexa.Text = Hex$($iColor, 6) Endif 'panColor.Background = $iColor panColor.Refresh dwgValue.Refresh palColor.Current = $iColor $bLock = False If $iColor <> $iOldColor Then $iOldColor = $iColor Inc $iNoCustomColor GetParent()._RaiseChange() Dec $iNoCustomColor Endif End Public Sub SetColor(iColor As Integer) If iColor = $iColor Then Return $iColor = iColor RefreshColor End Public Function GetColor() As Integer If $iNoCustomColor = 0 Then If GetCustom() Then AddCustomColor($iColor) Endif Return $iColor End Public Sub Form_Arrange() $hMap = $hImage.Stretch(dwgColorMap.Width, dwgColorMap.Height).Picture $hValueMap = $hValue.Stretch(dwgValue.W - 6, dwgValue.H - 2) MoveCross $nStdColor = 24 Repeat If (dwgStdColor.W \ $nStdColor) >= Desktop.Scale * 3 Then Break $nStdColor \= 2 Until $nStdColor = 3 dwgStdColor.Refresh End Public Sub txtRGB_Change() If $bLock Then Return $iColor = Color.RGB(txtR.Value, txtG.Value, txtB.Value, txtA.Value) RefreshColor(False, True) End Public Sub txtHSV_Change() If $bLock Then Return $iColor = Color.HSV(txtH.Value, txtS.Value, txtV.Value, txtA.Value) RefreshColor(True, False) End Public Sub dwgColorMap_Draw() If Not $hMap Then Return Draw.Picture($hMap, 0, 0) If $bHide Then Return Draw.Image($hCross, $X - 7, $Y - 7) End Public Sub dwgColorMap_MouseMove() Dim H, S As Integer Dim bChange As Boolean If Not GetParent().Enabled Then Return $bLock = True H = 359 - (Mouse.ScreenX - Last.ScreenX) * 360 / dwgColorMap.ClientW S = 255 - (Mouse.ScreenY - Last.ScreenY) * 256 / dwgColorMap.ClientH If Not (Mouse.Shift Xor $bSnap) Then 'iCol = Color.HSV($aHue[I], 192 - (J - 5) * 32, 255, iAlpha) ' iMax = $aHue.Count - 2 ' For I = 0 To iMax ' If I = 0 Then ' If H < (($aHue[0] + $aHue[1]) / 2) Or If H > (($aHue[iMax] + $aHue[iMax + 1]) / 2) Then Break ' 'Else If I = iMax Then ' ' Break ' Else ' If H >= (($aHue[I] + $aHue[I - 1]) / 2) And If H < (($aHue[I] + $aHue[I + 1]) / 2) Then Break ' Endif ' Next 'H = $aHue[I] 'If H = 360 Then H = 0 H = ((H + 7) \ 15) * 15 If H = 360 Then H = 0 S = ((S + 15) \ 32) * 32 Endif If H <> txtH.Value Or If S <> txtS.Value Then txtH.Value = H txtS.Value = S bChange = True Endif $bLock = False If bChange Then txtHSV_Change End Private Sub ChangeSliderValue(hSlider As Slider, hSpinBox As SpinBox) Dim iVal As Integer iVal = hSlider.Value If $bNormal Then If hSlider.Value < 255 Then iVal = (hSlider.Value \ hSlider.PageStep) * hSlider.PageStep Endif $bNormal = False Endif hSpinBox.Value = iVal If hSlider.Value <> iVal Then hSlider.Value = iVal End ' Public Sub sldValue_Change() ' ' ChangeSliderValue(sldValue, txtV) ' ' End Private Sub RaiseActivate() With GetParent() If .Enabled Then ._RaiseActivate() End With End Public Sub dwgColorMap_DblClick() RaiseActivate End Public Sub dwgColorMap_MouseDown() dwgColorMap_MouseMove End Private Sub LoadCustomColors() palColor.Colors = Settings["gb.form/CustomColors"] End Private Sub SaveCustomColors() Settings["gb.form/CustomColors"] = palColor.Colors Settings.Save End Private Sub AddCustomColor(iColor As Integer) palColor.AddFirst(iColor) SaveCustomColors End Public Sub Form_Open() RefreshColor 'txtHexa.SetFocus End ' PUBLIC SUB lstSystem_DblClick() ' ' RAISE Confirm ' ' END ' ' PUBLIC SUB lstSystem_Click() ' ' $sSystem = lstSystem.Text ' ' END ' ' PUBLIC SUB tabColor_Click() ' ' IF tabColor.Index = 0 THEN Form_Resize ' ' END Public Sub panColor_DblClick() RaiseActivate End Public Sub panColor_Draw() Dim X, Y As Integer Dim W, H As Integer If $hZoom Then W = (panColor.W + 3) \ ZOOM_FACTOR H = (panColor.H + 3) \ ZOOM_FACTOR Draw.LineStyle = Line.None Draw.Zoom($hZoom.Image, ZOOM_FACTOR, 0, 0) Draw.LineStyle = Line.Solid X = ((W \ 2)) * ZOOM_FACTOR Y = ((H \ 2)) * ZOOM_FACTOR Draw.Foreground = Color.LightForeground Draw.Rect(X - 2, Y - 2, ZOOM_FACTOR + 4, ZOOM_FACTOR + 4) Draw.Foreground = Color.Background Draw.Rect(X - 1, Y - 1, ZOOM_FACTOR + 2, ZOOM_FACTOR + 2) 'Draw.Rect(X, Y, ZOOM_FACTOR, ZOOM_FACTOR) Return Endif Main.PaintColor(0, 0, Paint.W, Paint.H, $iColor) End Public Sub GetAlpha() As Boolean Return panAlpha.Visible End Public Sub SetAlpha(Value As Boolean) Dim H As Integer panAlpha.Visible = Value If Not Value Then txtA.Value = 0 H = panAlpha.H * 3 + Desktop.Scale * 2 If panAlpha.Visible Then H += panAlpha.H + Desktop.Scale panInfo.H = H RefreshColor(False, False) End Public Sub txtHexa_Change() Dim iColor As Integer If $bLock Then Return If panAlpha.Visible Then If txtHexa.Length <> 8 Then Return Else If txtHexa.Length <> 6 Then Return Endif Try iColor = Val("&H" & txtHexa.Text & "&") If Error Then Return If iColor = $iColor Then Return $iColor = iColor RefreshColor(True, True) End Public Sub sldAlpha_Change() ChangeSliderValue(sldAlpha, txtA) End ' Public Sub panInfoColor_Arrange() ' ' panColor.H = Min(panInfoColor.W, panInfoColor.H - txtHexa.Y - txtHexa.H - Desktop.Scale) ' ' End ' Public Sub sldValue_MouseMove() ' ' If Mouse.Normal Then ' sldValue.Step = 16 ' Else ' sldValue.Step = 1 ' Endif ' ' End ' Public Sub sldValue_MouseMove() ' ' $bNormal = Mouse.Normal ' ' End Public Sub sldAlpha_MouseMove() $bNormal = Mouse.Normal End Public Sub dwgStdColor_Draw() Dim X, H, W, iStep As Integer If $nStdColor = 0 Then Return iStep = 360 \ $nStdColor Draw.Foreground = Color.Gray For H = 0 To 359 Step iStep X = dwgStdColor.W * H / 360 W = Min(dwgStdColor.W * (H + iStep) / 360, dwgStdColor.W - 1) - X Draw.FillRect(X + 1, 1, W, dwgStdColor.H - 2, Color.HSV(360 - H, 255, 255)) Draw.Line(X, 0, X, dwgStdColor.H - 1) Next End Public Sub dwgStdColor_MouseMove() Dim iStep As Integer If Not GetParent().Enabled Then Return iStep = 360 \ $nStdColor SetColor(Color.HSV(360 - Int(Max(0, Min(dwgStdColor.W - 1, Mouse.X)) / dwgStdColor.W * 360 / iStep) * iStep, 255, 255)) End Public Sub dwgStdColor_MouseDown() dwgStdColor_MouseMove End Public Sub dwgValue_Draw() Dim Y As Integer Dim hImage As Image hImage = $hValueMap.Copy() hImage.Colorize(Color.HSV($iHue, $iSat, 255)) Draw.Image(hImage, 3, 1) Draw.Foreground = Color.LightForeground Draw.Rect(2, 0, dwgValue.W - 4, dwgValue.H) Y = (256 - $iVal) / 256 * dwgValue.H Y = Max(0, Min(dwgValue.H - 15, Y - 8)) Draw.Rect(0, Y, dwgValue.W, 15) Draw.Rect(1, Y + 1, dwgValue.W - 2, 13) Draw.Rect(2, Y + 2, dwgValue.W - 4, 11) End Public Sub dwgValue_MouseDown() dwgValue_MouseMove End Public Sub dwgValue_MouseMove() Dim V As Integer If Not GetParent().Enabled Then Return V = Mouse.Y / dwgValue.H * 256 If Not (Mouse.Shift Xor $bSnap) Then V = ((V + 16) \ 32) * 32 V = Min(255, Max(0, 256 - V)) If V = $iVal Then Return txtV.Value = V End Public Sub txtHexa_Click() panGrab.Mouse = Mouse.Cross 'panGrab.Cursor = New Cursor(txtHexa.Picture, 0, txtHexa.Picture.H - 1) panGrab.Show panGrab_MouseMove panGrab.Grab $hZoom = Null panColor.Refresh 'SetColor(hPict.Image[0, 0]) panGrab.Hide End Public Sub panGrab_MouseMove() Dim W, H As Integer W = (panColor.W + 3) \ ZOOM_FACTOR H = (panColor.H + 3) \ ZOOM_FACTOR $hZoom = Desktop.Screenshot(Mouse.ScreenX - W \ 2, Mouse.ScreenY - H \ 2, W, H) panColor.Refresh 'SetColor(hPict.Image[0, 0]) End Public Sub panGrab_MouseUp() Dim hPict As Picture = Desktop.Screenshot(Mouse.ScreenX, Mouse.ScreenY, 1, 1) SetColor(hPict.Image[0, 0]) End Public Sub btnSnap_Click() $bSnap = Not btnSnap.Value End Public Sub GetColorMap() As Boolean Return dwgColorMap.Visible End Public Sub SetColorMap(bShow As Boolean) dwgColorMap.Visible = bShow panColorMapSide.Visible = bShow End Public Sub dwgStdColor_DblClick() RaiseActivate End Public Sub HasBorder() As Boolean Return panBorder.Border <> Border.None End Public Sub SetBorder(bBorder As Boolean) panBorder.Border = If(bBorder, Border.Plain, Border.None) panBorder.Margin = bBorder End Public Sub GetCustom() As Boolean Return palColor.Visible End Public Sub SetCustom(bCustom As Boolean) If bCustom Then LoadCustomColors palColor.Visible = bCustom End Public Sub palColor_Click() SetColor(palColor.Current) End Public Sub palColor_Activate() GetParent()._RaiseActivate() End Public Sub panValue_Arrange() txtA.W = txtR.W End Public Sub dwgValue_MouseWheel() If Mouse.Delta > 0 Then txtV.Value = Min(255, (txtV.Value + 16) And Not 15) Else txtV.Value = Max(0, (txtV.Value - 1) And Not 15) Endif End gambas-3.16.3/comp/src/gb.form/.src/Color/FColorChooser.form000066400000000000000000000116561411575327000234520ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(9.125,8,70,70) Arrangement = Arrange.Fill { panBorder Panel MoveScaled(3,3,66,66) Arrangement = Arrange.Vertical Spacing = True Margin = True Border = Border.Plain { HBox1 HBox MoveScaled(0,0,57,32) Expand = True Spacing = True { VBox3 VBox MoveScaled(1,1,39,27) Expand = True Spacing = True { dwgStdColor DrawingArea MoveScaled(1,1,33,4) Mouse = Mouse.Pointing Border = Border.Plain } { dwgColorMap DrawingArea MoveScaled(3,6,25,20) Mouse = Mouse.Cross Expand = True Border = Border.Plain } } { panColorMapSide VBox MoveScaled(49,2,4,26) Spacing = True { btnSnap ToolButton MoveScaled(0,0,4,4) ToolTip = ("Follow color grid") Picture = Picture["icon:/small/grid"] Toggle = True Value = True } { dwgValue DrawingArea MoveScaled(0,6,4,20) Mouse = Mouse.Pointing Expand = True } } } { panInfo HBox MoveScaled(0,34,62,20) Spacing = True { panValue VBox MoveScaled(1,1,31,19) Expand = True Spacing = True { Panel1 HBox MoveScaled(0,0,29,4) Spacing = True { PictureBox1 PictureBox MoveScaled(0,0,3,4) Picture = Picture["icon:/small/red"] Alignment = Align.Center Mode = PictureBox.Contain } { txtR SpinBox txtRGB Name = "txtR" MoveScaled(4,0,7,4) Expand = True MaxValue = 255 } { PictureBox5 PictureBox MoveScaled(14,0,3,4) Picture = Picture["icon:/small/hue"] Alignment = Align.Center Mode = PictureBox.Contain } { txtH SpinBox txtHSV Name = "txtH" MoveScaled(19,0,7,4) Expand = True MaxValue = 359 } } { Panel3 HBox MoveScaled(0,5,29,4) Spacing = True { PictureBox2 PictureBox MoveScaled(0,0,3,4) Picture = Picture["icon:/small/green"] Alignment = Align.Center Mode = PictureBox.Contain } { txtG SpinBox txtRGB Name = "txtG" MoveScaled(4,0,7,4) Expand = True MaxValue = 255 } { PictureBox6 PictureBox MoveScaled(14,0,3,4) Picture = Picture["icon:/small/saturation"] Alignment = Align.Center Mode = PictureBox.Contain } { txtS SpinBox txtHSV Name = "txtS" MoveScaled(19,0,7,4) Expand = True MaxValue = 255 } } { Panel4 HBox MoveScaled(0,10,29,4) Spacing = True { PictureBox3 PictureBox MoveScaled(0,0,3,4) Picture = Picture["icon:/small/blue"] Alignment = Align.Center Mode = PictureBox.Contain } { txtB SpinBox txtRGB Name = "txtB" MoveScaled(4,0,7,4) Expand = True MaxValue = 255 } { PictureBox7 PictureBox MoveScaled(14,0,3,4) Picture = Picture["icon:/small/lightness"] Alignment = Align.Center Mode = PictureBox.Contain } { txtV SpinBox txtHSV Name = "txtV" MoveScaled(19,0,7,4) Expand = True MaxValue = 255 } } { panAlpha HBox MoveScaled(0,15,29,4) Visible = False Spacing = True { PictureBox4 PictureBox MoveScaled(0,0,3,4) Picture = Picture["icon:/small/transparency"] Alignment = Align.Center Mode = PictureBox.Contain } { txtA SpinBox txtRGB Name = "txtA" MoveScaled(4,0,7,4) MaxValue = 255 } { sldAlpha Slider MoveScaled(15,0,12,4) Expand = True MaxValue = 255 PageStep = 32 } } } { Panel2 Panel MoveScaled(32,11,1,3) } { VBox1 VBox MoveScaled(34,1,15,19) Spacing = True { panColor DrawingArea MoveScaled(0,0,11,6) Expand = True Border = Border.Plain } { txtHexa ButtonBox MoveScaled(0,9,13,4) Picture = Picture["icon:/small/color-picker"] } { panGrab Panel MoveScaled(4,15,3,3) Visible = False Tracking = True Mouse = Mouse.Cross Ignore = True } } } { palColor ColorPalette MoveScaled(2,56,61,6) Visible = False } } } gambas-3.16.3/comp/src/gb.form/.src/Completion.class000066400000000000000000000131141411575327000221270ustar00rootroot00000000000000' Gambas class file Export Event Activate Public List As String[] Public Icons As String[] Public Start As Integer Property Delay As Integer Property Editor As Control Private $hObserver As Observer Private $hTimer As Timer Private $hPopup As Window Private $hList As GridView Private $hWatcher As Watcher Private $bExplicit As Boolean Private $hObsWindow As Observer Private $iHeight As Integer Private Sub FindEditor(hCtrl As Control) As Control If hCtrl Is Container Then For Each hCtrl In Container(hCtrl).Children If hCtrl Is TextBox Or If hCtrl Is TextArea Then Return hCtrl Next Else If hCtrl Is TextBox Or If hCtrl Is TextArea Then Return hCtrl Endif End Private Sub GetEditor() As Object Return $hObserver.Object End Public Sub _new(hCtrl As Control) $hTimer = New Timer As "Timer" $hTimer.Delay = 350 Attach(hCtrl) End Private Sub Attach(hCtrl As Control) hCtrl = FindEditor(hCtrl) If Not hCtrl Then Error.Raise("Unable to find TextBox or TextArea") HideList $hObserver = New Observer(hCtrl) As "TextBox" $hWatcher = New Watcher(hCtrl) As "TextBox" End Public Sub Open() HideList $bExplicit = True Timer_Timer End Public Sub Close() HideList End Public Sub TextBox_Change() If Last.Length = 0 Then HideList $hTimer.Start End Private Sub HideList() If $hPopup And If $hPopup.Visible Then 'Debug System.Backtrace.Join(" ") $hPopup.Hide $hObsWindow = Null Endif $hTimer.Stop End Public Sub TextBox_KeyPress() Dim iRow As Integer If $hPopup And If $hPopup.Visible Then Select Case Key.Code Case Key.Down, Key.PageDown iRow = Min($hList.Rows.Max, $hList.Row + If(Key.Code = Key.Down, 1, $hList.ClientH \ $hList.Rows.H)) $hList.Row = iRow Stop Event Return Case Key.Up, Key.PageUp iRow = Max(0, $hList.Row - If(Key.Code = Key.Up, 1, $hList.ClientH \ $hList.Rows.H)) $hList.Row = iRow Stop Event Return Case Key.Left, Key.Right HideList Return Case Key.Home $hList.Row = 0 Stop Event Return Case Key.End $hList.Row = $hList.Rows.Count - 1 Stop Event Return Case Key.Enter, Key.Return GridView_MouseUp Stop Event Return Case Key.Escape HideList Stop Event Return End Select Else If Key.Code = Key.Space And If Key.Control Then Me.Open Stop Event Endif Endif End Private Sub MovePopup() Dim hCtrl As Object Dim hPos As Point If Not $hPopup Then Return hCtrl = GetEditor() hPos = hCtrl.CursorAt(Start) 'X = hCtrl.Font.TextWidth(String.Left(hCtrl.Text, Start)) 'Y = hCtrl.ScreenY + hCtrl.H $hPopup.Move(hCtrl.ScreenX + hPos.X, hCtrl.ScreenY + hPos.Y, Desktop.Scale * 48, $iHeight) End Public Sub Timer_Timer() Dim aList As String[] Dim hCtrl As Control Dim hPanel As Panel Dim hEditor As Object $hTimer.Stop List = Null hEditor = GetEditor() Me.Fill(String.Left(hEditor.Text, hEditor.Pos), $bExplicit) aList = List $bExplicit = False If Not aList Or If aList.Count = 0 Then Return hCtrl = GetEditor() Object.Lock(hCtrl) If Not $hPopup Then $hPopup = New Window As "Popup" $hPopup.Arrangement = Arrange.Fill $hPopup.Border = False $hPopup.SkipTaskbar = True $hPopup.Stacking = Window.Above $hPopup.Persistent = True $hPopup.TakeFocus = False hPanel = New Panel($hPopup) hPanel.Arrangement = Arrange.Fill HPanel.Foreground = Color.Black hPanel.Border = Border.Plain $hList = New GridView(hPanel) As "GridView" $hList.Border = False $hList.Grid = False $hList.Mode = Select.Single $hList.ScrollBar = Scroll.Vertical $hList.Columns.Count = 1 $hList.Padding = 0 Endif $hList.Rows.Count = aList.Count $hList.Row = 0 'Me.GetIndex() $iHeight = $hList.Rows.Height * Min(8, aList.Count) + 2 MovePopup $hPopup.Show '$hPopup.Raise $hObsWindow = New Observer(hCtrl.Window) As "Window" Object.Unlock(hCtrl) End ' Public Sub Popup_Activate() ' ' With GetEditor() ' .Window.Show ' .SetFocus ' End With ' ' End Public Sub TextBox_Hide() HideList End Public Sub TextBox_Move() MovePopup End Public Sub TextBox_Resize() MovePopup End Private Sub DeletePopup() If $hPopup Then $hPopup.Delete $hPopup = Null Endif End Public Sub TextBox_LostFocus() If Not $hPopup Then Return If $hList.HasFocus Then Return HideList DeletePopup End Public Sub GridView_GotFocus() GetEditor().Window.Activate GetEditor().SetFocus End Private Function Delay_Read() As Integer Return $hTimer.Delay End Private Sub Delay_Write(Value As Integer) $hTimer.Delay = Value End Public Sub GridView_MouseUp() Dim hCtrl As Object Dim sElt As String Try sElt = List[$hList.Row] If Error Then Return hCtrl = GetEditor() Try hCtrl.Text = String.Left(hCtrl.Text, Start) & sElt & String.Mid(hCtrl.Text, hCtrl.Pos + 1) Try hCtrl.Pos = Start + String.Len(sElt) HideList 'hCtrl.SetFocus Raise Activate End Public Sub GridView_Data(Row As Integer, (Column) As Integer) Try $hList.Data.Text = List[Row] If Icons Then Try $hList.Data.Picture = Picture[Icons[Row]] End Public Sub Fill(Text As String, Explicit As Boolean) If Len(Text) < 3 Or If Explicit Then Return List = ["Gambas", "Almost", "Means", "Basic!", Text] End Private Function Editor_Read() As Control Return $hObserver.Object End Public Sub Window_Move() MovePopup End Private Sub Editor_Write(Value As Control) Attach(Value) End gambas-3.16.3/comp/src/gb.form/.src/Date/000077500000000000000000000000001411575327000176445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Date/DateBox.class000066400000000000000000000132641411575327000222270ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Value,ReadOnly,Border=True,Mode{DateChooser.*}=DateOnly" 'Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Public Const _Group As String = "Chooser" Event Activate Event Click Event Change Property Value As Date Property ReadOnly As Boolean Property Border As Boolean Property Mode As Integer Property Read Text As String Private $hButtonBox As ButtonBox Private $hPopup As Window Private $hChooser As DateChooser Private $bShowDate As Boolean = True Private $bShowTime As Boolean Private Sub GetDateFormat() As String Dim sFormat As String If $bShowDate Then sFormat = Format(Date(3333, 11, 22), gb.ShortDate) sFormat = Replace(sFormat, "3333", "yyyy") sFormat = Replace(sFormat, "22", "dd") sFormat = Replace(sFormat, "11", "mm") Endif If $bShowTime Then sFormat &= " " & Format(Time(11, 22, 33), gb.ShortTime) sFormat = Replace(sFormat, "11", "hh") sFormat = Replace(sFormat, "22", "nn") sFormat = Replace(sFormat, "33", "ss") Endif Return LTrim(sFormat) End Private Sub GetNullDate() As String Dim sFormat As String If $bShowDate Then sFormat = Format(Date(1111, 11, 11), gb.ShortDate) sFormat = Replace(sFormat, "1", "0") Endif If $bShowTime Then sFormat &= " " & Format(Time(11, 11, 11), gb.ShortTime) sFormat = Replace(sFormat, "1", "0") Endif Return LTrim(sFormat) End Private Sub UpdateMask() Dim sMask As String Dim vVal As Date vVal = Value_Read() If $bShowDate Then sMask = Format(Date(1111, 11, 11), gb.ShortDate) If $bShowTime Then sMask = LTrim(sMask & " " & Format(Time(11, 11, 11), gb.ShortTime)) If $bShowDate Then $hButtonBox.Picture = Picture["icon:/16/calendar"] Else $hButtonBox.Picture = Picture["icon:/16/clock"] Endif $hButtonBox.Editor.Mask = Replace(sMask, "1", "0") Value_Write(vVal) End Public Sub _new() Dim (hPanel) As Panel $hButtonBox = New ButtonBox(Me) As "ButtonBox" $hButtonBox.Picture = Picture["icon:/small/calendar"] $hButtonBox.Alignment = Align.Right $hPopup = New Window As "PopupWindow" $hPopup.Persistent = True $hPopup.Arrangement = Arrange.Fill hPanel = New Panel($hPopup) hPanel.Arrangement = Arrange.Horizontal hPanel.Border = Border.Plain $hChooser = New DateChooser(hPanel) As "DateChooser" $hChooser.Expand = True $hChooser.Border = False Me.Proxy = $hButtonBox UpdateMask Value_Write(Null) End Private Function Value_Read() As Date Dim vVal As Variant If Not $bShowDate Then 'Debug Format(Date(1, 1, 1), gb.MediumDate) & " " & $hButtonBox.Text vVal = Time(Val(Format(Date(1, 1, 1), gb.ShortDate) & " " & $hButtonBox.Text)) Else vVal = Val($hButtonBox.Text) Endif If vVal And If TypeOf(vVal) = gb.Date Then Return vVal End Private Sub Value_Write(Value As Date) If IsNull(Value) Then $hButtonBox.Text = GetNullDate() Else $hButtonBox.Text = Format(Value, GetDateFormat()) Endif End Public Sub ButtonBox_Click() Dim X, Y, iPad As Integer Dim dDate As Date If $bShowTime And $bShowDate Then $hPopup.Resize(Desktop.Scale * 72 + 2, ((Desktop.Scale * 32) \ 12) * 12 + 2) Else If $bShowDate $hPopup.Resize(Desktop.Scale * 40 + 2, Desktop.Scale * 32) Else $hPopup.Resize(Desktop.Scale * 32 + 2, ((Desktop.Scale * 32) \ 12) * 12 + 2) Endif iPad = If($hButtonBox.Border, 3, 0) X = $hButtonBox.ScreenX + $hButtonBox.W - $hPopup.W - iPad Y = $hButtonBox.ScreenY + $hButtonBox.H - iPad If (Y + $hPopup.H) > Desktop.H Then Y = $hButtonBox.ScreenY - $hPopup.H Endif dDate = Me.Value If dDate Then $hChooser.Value = dDate Else $hChooser.Value = Now Endif $hPopup.ShowPopup(X, Y) '$hPopup.ShowModal End Public Sub ButtonBox_KeyPress() If Key.Code = Key.Space Then ButtonBox_Click Stop Event ' Else If Key.Code = Key.BackSpace Or If Key.Code = Key.Delete Then ' Debug ' If $hButtonBox.Editor.Selection.Length = $hButtonBox.Editor.Length Then ' Me.Value = Null ' Stop Event ' Endif Endif End Public Sub ButtonBox_Activate() Raise Activate End Public Sub ButtonBox_Change() Raise Change End Public Sub PopupWindow_Open() $hChooser.SetFocus End Private Function ReadOnly_Read() As Boolean Return $hButtonBox.ReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $hButtonBox.ReadOnly = Value End Private Function Border_Read() As Boolean Return $hButtonBox.Border End Private Sub Border_Write(Value As Boolean) $hButtonBox.Border = Value End Public Sub DateChooser_Click() Dim dDate As Date Dim bKeepOpen As Boolean dDate = $hChooser.Value If $bShowDate And If $bShowTime Then bKeepOpen = dDate <> Me.Value Endif Me.Value = dDate If bKeepOpen Then Return $hPopup.Close Raise Click End Public Sub DateChooser_Cancel() $hPopup.Close End Private Function Mode_Read() As Integer If $bShowDate Then If $bShowTime Then Return DateChooser.DateTime Else Return DateChooser.DateOnly Endif Else Return DateChooser.TimeOnly Endif End Private Sub Mode_Write(Value As Integer) Select Case Value Case DateChooser.DateOnly $bShowDate = True $bShowTime = False Case DateChooser.DateTime $bShowDate = True $bShowTime = True Case DateChooser.TimeOnly $bShowDate = False $bShowTime = True Default Return End Select $hChooser.Mode = Value UpdateMask End Private Function Text_Read() As String Return $hButtonBox.Text End gambas-3.16.3/comp/src/gb.form/.src/Date/DateChooser.class000066400000000000000000000104231411575327000230730ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Property Value As Date Property Year As Integer Property Month As Integer Property Day As Integer Property Font As Font Property Read Colors As _DateChooser_Colors Property Mode As Integer Property Read Data As _DateChooser_Data Property Border As Boolean Property MinValue As Date Property MaxValue As Date '' Return or set if the week numbers are visible. Property ShowWeek As Boolean Public Const DateOnly As Integer = 0 Public Const DateTime As Integer = 1 Public Const TimeOnly As Integer = 2 Event Change Event Click Event Activate Event Cancel Event Data({Date} As Date) Public Const _Properties As String = "*,Border=True,Mode{DateChooser.*}=DateOnly,ShowWeek" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "40,28" Public Const _Group As String = "Chooser" Private $hCal As FCalendar Private $cData As New Collection Private $hData As _DateChooser_Data Private $dDateMin As Date Private $dDateMax As Date Public Sub _new() $hCal = New FCalendar(Me) End Private Function Value_Read() As Date Return $hCal.GetValue() End Private Sub Value_Write(Value As Date) $hCal.SetValue(Value) End Public Sub _Change() Raise Change End Public Sub _Click() Raise Click End Public Sub _Activate() Raise Activate End Public Sub _Cancel() Raise Cancel End Private Function Year_Read() As Integer Return Year(Value_Read()) End Private Sub Year_Write(Value As Integer) Dim dDate As Date = Value_Read() dDate = Date(Value, Month(dDate), Day(dDate)) Value_Write(dDate) End Private Function Month_Read() As Integer Return Month(Value_Read()) End Private Sub Month_Write(Value As Integer) Dim dDate As Date = Value_Read() dDate = Date(Year(dDate), Value, Day(dDate)) Value_Write(dDate) End Private Function Day_Read() As Integer Return Day(Value_Read()) End Private Sub Day_Write(Value As Integer) Dim dDate As Date = Value_Read() dDate = Date(Year(dDate), Month(dDate), Value) Value_Write(dDate) End Private Function Font_Read() As Font Return Super.Font End Private Sub Font_Write(Value As Font) Super.Font = Value $hCal.UpdateFont End Private Function Colors_Read() As _DateChooser_Colors _DateChooser_Colors._Calendar = $hCal Return _DateChooser_Colors End Public Sub SetFocus() $hCal.SetFocus End Private Function Mode_Read() As Integer If $hCal.GetShowDate() Then If $hCal.GetShowTime() Then Return DateTime Else Return DateOnly Endif Else Return TimeOnly Endif End Private Sub Mode_Write(Value As Integer) Select Case Value Case DateOnly $hCal.SetShowDate(True) $hCal.SetShowTime(False) Case DateTime $hCal.SetShowDate(True) $hCal.SetShowTime(True) Case TimeOnly $hCal.SetShowTime(True) $hCal.SetShowDate(False) End Select End Public Sub _get({Date} As Date) As _DateChooser_Date Dim hDate As _DateChooser_Date hDate = New _DateChooser_Date hDate._Date = {Date} hDate._View = Me Return hDate End Private Sub GetKey(dDate As Date) As String Return CStr(Date(dDate)) End Public Sub _GetData(dDate As Date, Optional bCreate As Boolean) As _DateChooser_Data Dim hData As _DateChooser_Data hData = $cData[GetKey(dDate)] If Not hData Then If bCreate Then hData = New _DateChooser_Data hData.Font = Me.Font $cData[GetKey(dDate)] = hData Else $hData = New _DateChooser_Data $hData.Font = Me.Font Raise Data(dDate) hData = $hData Endif Endif Return hData End Private Function Data_Read() As _DateChooser_Data Return $hData End Private Function Border_Read() As Boolean Return $hCal.HasBorder() End Private Sub Border_Write(Value As Boolean) $hCal.SetBorder(Value) End Private Function MinValue_Read() As Date Return $dDateMin End Private Sub MinValue_Write(Value As Date) $dDateMin = Value $hCal.UpdateValue() End Private Function MaxValue_Read() As Date Return $dDateMax End Private Sub MaxValue_Write(Value As Date) $dDateMax = Value $hCal.UpdateValue() End Private Function ShowWeek_Read() As Boolean Return $hCal.GetShowWeek() End Private Sub ShowWeek_Write(Value As Boolean) $hCal.SetShowWeek(Value) End gambas-3.16.3/comp/src/gb.form/.src/Date/FCalendar.class000066400000000000000000000450071411575327000225200ustar00rootroot00000000000000' Gambas class file Private $dDate As Date Private $dTime As Date Private $dStart As Date Private $dMonth As Date Private $dLast As Date Private $iDisabledColor As Integer Private $cDateColor As New Collection Private $bShort As Boolean Private $iCurrentTime As Integer = -1 Private $dCurrentDate As Date Private $iMonthWidth As Integer Private $bShowWeek As Boolean 'Private mnuMonth As Menu Private Sub CalcMonthWidth() Dim W As Integer Dim iMonth As Integer For iMonth = 1 To 12 W = Max(W, cmbMonth.Font.TextWidth(DConv(Format(Date(1972, iMonth, 1), "mmmm")))) Next $iMonthWidth = W + cmbMonth.Height End Private Sub FillMonth(bShort As Boolean) Dim iMonth As Integer Dim sFormat As String Dim iIndex As Integer If bShort = $bShort And If cmbMonth.Count Then Return sFormat = If(bShort, "mmm", "mmmm") iIndex = cmbMonth.Index Object.Lock(cmbMonth) cmbMonth.Clear For iMonth = 1 To 12 cmbMonth.Add(String.UCaseFirst(DConv(Format(Date(1972, iMonth, 1), sFormat)))) Next cmbMonth.Index = iIndex Object.Unlock(cmbMonth) $bShort = bShort End Private Sub GetTimeFormat() As String Dim sFormat As String sFormat = Format(Time(11, 22, 33), gb.ShortTime) sFormat = Replace(sFormat, "11", "hh") sFormat = Replace(sFormat, "22", "nn") Return sFormat End Private Sub UpdateTimeWidth() If panDate.Visible Then If panTime.Visible Then panTime.Expand = False panTime.W = Desktop.Scale * 32 Else Endif Else If panTime.Visible Then panTime.Expand = True Endif Endif End Public Sub _new() UpdateTimeWidth FillMonth(False) $dDate = Now SetDate() SetTime(Time($dDate)) $iDisabledColor = GetDisabledColor() UpdateFont End Private Sub GetDisabledColor() As Integer Dim H, S, V As Integer H = Color[Color.Foreground].Hue S = 0 'Color[Color.Foreground].Saturation V = Color[Color.Foreground].Value If V < 128 Then V = 255 - (255 - Color[Color.Foreground].Value) / 4 Else V /= 4 Endif Return Color.HSV(H, S, V) End Private Sub GetParent() As DateChooser Return Me.Parent End Private Sub CheckDate(dDate As Date) As Date Dim dMin, dMax As Date With GetParent() dMin = .MinValue dMax = .MaxValue End With If dMin And If dDate < dMin Then Return dMin If dMax And If dDate > dMax Then Return dMax Return dDate End Private Sub SetDate(Optional iYear As Integer, Optional iMonth As Integer, Optional iDay As Integer) Dim dMonth As Date Dim dDate As Date If iYear = 0 And If iMonth = 0 And If iDay = 0 Then $dDate = CheckDate($dDate) Endif If iYear <= 0 Then iYear = Year($dDate) If iMonth <= 0 Then iMonth = Month($dDate) If iDay <= 0 Then iDay = Day($dDate) Do Try dDate = Date(iYear, iMonth, iDay) If Not Error Then Break Dec iDay If iDay < 28 Then dDate = Null Break Endif Loop If dDate And If CheckDate(dDate) <> dDate Then dDate = Null If dDate Then $dDate = dDate dMonth = Date(Year(dDate), Month(dDate), 1) Else dMonth = $dMonth $dMonth = Null Endif If dMonth <> $dMonth Then $dMonth = dMonth cmbMonth.Index = Month($dMonth) - 1 txtYear.Value = Year($dMonth) Endif iDay = WeekDay($dMonth) - System.FirstDayOfWeek If iDay < 1 Then iDay += 7 $dStart = $dMonth - iDay dwgMonth.Refresh If $dDate <> $dLast Then $dLast = $dDate GetParent()._Change Endif dwgMonth.SetFocus End Public Sub UpdateValue() SetDate() End Public Sub SetValue(dDate As Date) SetTime(Time(dDate)) SetDate(Year(dDate), Month(dDate), Day(dDate)) End Public Sub GetValue() As Date If panTime.Visible Then Return Date($dDate) + $dTime Else Return Date($dDate) Endif End Private Sub CalcGrid(ByRef W As Integer, ByRef H As Integer, Optional ByRef XD As Integer, ByRef YD As Integer) As Boolean H = dwgMonth.ClientH / 7 W = dwgMonth.ClientW If $bShowWeek Then W -= H XD = H Else XD = 0 Endif W = W \ 7 YD = dwgMonth.ClientH - H * 6 If W = 0 Or If H = 0 Then Return True End Public Sub dwgMonth_Draw() Dim I, J As Integer Dim X, Y, W, H As Integer Dim XD, YD As Integer Dim dDate As Date Dim iForeground As Integer Dim iBackground As Integer Dim sKey As String Dim bToday As Boolean Dim hDate As _DateChooser_Date Dim fSize As Float Dim iWeek As Integer If CalcGrid(ByRef W, ByRef H, ByRef XD, ByRef YD) Then Return iForeground = dwgMonth.Foreground 'Draw.Foreground iBackground = dwgMonth.Background 'Draw.Background Draw.FillStyle = Fill.Solid Draw.LineStyle = Line.None Draw.Font = dwgMonth.Font fSize = Draw.Font.Size * H / Draw.Font.Height * 0.6 Draw.Font.Size = fSize Draw.Font.Bold = True X = XD Y = 0 For I = 0 To 6 Select Case WeekDay($dStart + I) Case 0, 6 Draw.FillColor = iBackground Draw.Foreground = Color.SelectedBackground Default Draw.FillColor = Color.SelectedBackground Draw.Foreground = Color.SelectedForeground End Select If Not Me.Enabled Then Draw.Foreground = Color.Merge(Draw.Foreground, Draw.FillColor) Draw.Rect(X, Y, W, YD) Draw.Text(Format(CDate($dStart + I), "ddd"), X, Y, W, YD, Align.Center) X += W Next Draw.LineStyle = Line.Solid Draw.Foreground = Color.LightForeground Draw.Line(0, YD - 1, Draw.W - 1, YD - 1) Draw.LineStyle = Line.None dDate = $dStart Paint.Font = GetParent().Font Paint.Font.Size = fSize dDate = $dStart X = 0 Y = YD For J = 0 To 5 If Year(dDate) <> Year($dDate) Then iWeek = Week(DateAdd(dDate, gb.Day, 6)) Else iWeek = Week(dDate) Endif Paint.DrawText(CStr(iWeek), X, Y, XD, H, Align.Center) Y += H dDate += 7 Next dDate = $dStart Y = YD For J = 0 To 5 X = XD For I = 0 To 6 If CheckDate(dDate) <> dDate Then Draw.FillRect(X, Y, W, H, Color.Merge(Color.LightForeground, dwgMonth.Background)) Goto NEXT_DATE Endif hDate = GetParent()[dDate] iForeground = hDate.Foreground If iForeground = Color.Default Then iForeground = dwgMonth.Foreground iBackground = hDate.Background If iBackground = Color.Default Then iBackground = dwgMonth.Background If Not Me.Enabled Then iForeground = Color.Merge(iForeground, iBackground) Draw.Font = hDate.Font Draw.Font.Size = fSize If CInt(dDate) = CInt($dDate) Then Draw.FillColor = If(dwgMonth.HasFocus, Color.SelectedBackground, Color.LightForeground) Draw.Foreground = Color.SelectedForeground Else If Month(dDate) <> Month($dMonth) Then Draw.FillColor = iBackground Draw.Foreground = Color.Merge(iForeground, dwgMonth.Background) Else Draw.FillColor = iBackground Draw.Foreground = iForeground Endif sKey = CStr(Date(dDate)) If $cDateColor.Exist(sKey) Then If Draw.Foreground = $iDisabledColor Then Draw.FillColor = Color.Merge(Draw.Foreground, $cDateColor[sKey]) Else Draw.FillColor = $cDateColor[sKey] Endif Endif Endif Draw.Rect(X + 1, Y + 1, W - 2, H - 2) bToday = CInt(Date(Now)) = CInt(Date(dDate)) Draw.Font.Bold = bToday Draw.Font.Underline = hDate.Text Draw.Text(Day(dDate), X, Y, W, H, Align.Center) If dDate = $dCurrentDate Then Draw.LineStyle = Line.Solid Draw.FillStyle = Fill.None Draw.Foreground = Color.LightForeground Draw.Rect(X, Y, W, H) Draw.FillStyle = Fill.Solid Draw.LineStyle = Line.None Else If bToday Then Draw.LineStyle = Line.Solid Draw.FillStyle = Fill.None Draw.Foreground = iForeground Draw.Rect(X, Y, W, H) Draw.FillStyle = Fill.Solid Draw.LineStyle = Line.None Endif NEXT_DATE: X += W Inc dDate Next Y += H Next End Public Sub cmbMonth_Click() SetDate(0, cmbMonth.Index + 1) End Public Sub btnPrevMonth_Click() If Month($dMonth) = 1 Then SetDate(Year($dMonth) - 1, 12) Else SetDate(0, Month($dMonth) - 1) Endif End Public Sub btnNextMonth_Click() If Month($dMonth) = 12 Then SetDate(Year($dMonth) + 1, 1) Else SetDate(0, Month($dMonth) + 1) Endif End Public Sub txtYear_Change() SetDate(txtYear.Value) End Public Sub btnPrevYear_Click() SetDate(Year($dMonth) - 1) End Public Sub btnNextYear_Click() SetDate(Year($dMonth) + 1) End Public Sub dwgMonth_KeyPress() Select Case Key.Code Case Key.Left Dec $dDate SetDate Stop Event Case Key.Right Inc $dDate SetDate Stop Event Case Key.Up $dDate -= 7 SetDate Stop Event Case Key.Down $dDate += 7 SetDate Stop Event Case Key.Space, Key.Enter, Key.Return dwgMonth_DblClick End Select End Private Sub CalcCurrentDate() As Boolean Dim hDate As _DateChooser_Date Dim W, H As Integer Dim XD, YD As Integer Dim dDate As Date $dCurrentDate = Null If CalcGrid(ByRef W, ByRef H, ByRef XD, ByRef YD) Then Return True If Mouse.X < XD Or If Mouse.Y < YD Then Return True dDate = $dStart + Min(6, (Mouse.X - XD) \ W) + ((Mouse.Y - YD) \ H) * 7 If CheckDate(dDate) <> dDate Then Return True $dCurrentDate = dDate hDate = GetParent()[$dCurrentDate] dwgMonth.Tooltip = hDate.Text End Public Sub dwgMonth_MouseDown() CalcCurrentDate If Not $dCurrentDate Then Return $dDate = $dCurrentDate SetDate GetParent()._Click End Public Sub btnReload_Click() $dDate = Now SetDate End Public Sub dwgMonth_DblClick() GetParent()._Activate End Public Sub UpdateFont() cmbMonth.Height = Desktop.Scale * 4 panToolbar.H = cmbMonth.Height CalcMonthWidth Form_Resize End Public Sub ClearColors() $cDateColor.Clear dwgMonth.Refresh End Public Sub SetColor(dDate As Date, iColor As Integer) Dim sKey As String = CStr(Date(dDate)) If iColor = Color.Default Then $cDateColor.Remove(sKey) Else $cDateColor[sKey] = iColor Endif dwgMonth.Refresh End Public Sub GetColor(dDate As Date) As Integer Dim sKey As String = CStr(Date(dDate)) Dim iColor As Integer Try iColor = $cDateColor[sKey] If Error Then iColor = Color.Default Return iColor End Public Sub Form_Resize() If panDate.Width < (Desktop.Scale * 36) Then btnNextMonth.Hide btnPrevMonth.Hide If panDate.Width < (Desktop.Scale * 24) Then panSepMonth.Hide btnReload.Hide Else panSepMonth.Show btnReload.Show Endif Else btnNextMonth.Show btnPrevMonth.Show Endif FillMonth(cmbMonth.Width < $iMonthWidth) If $bShowWeek Then UpdateReloadSize End Public Sub Form_KeyPress() If Key.Code = Key.Escape Then GetParent()._Cancel End Public Sub SetFocus() dwgMonth.SetFocus End Public Sub dwgTime_Draw() Dim dTime, dNextTime As Date Dim iInd As Integer Dim X, Y, DX, DY, DW, DH As Integer Dim SW, SH As Float Dim sFormat As String = GetTimeFormat() Dim sTime As String DW = dwgTime.W \ 4 DH = dwgTime.H \ 12 DX = (dwgTime.W - DW * 4) \ 2 DY = (dwgTime.H - DH * 12) \ 2 SH = (DH - 2) / Draw.Font.Height sTime = GetTimeFormat() sTime = Replace(sTime, "h", "0") sTime = Replace(sTime, "n", "0") SW = (DW - 6) / Draw.Font.TextWidth(sTime) Draw.Font.Size *= Min(SH, SW) Draw.FillColor = Color.ButtonBackground Draw.FillStyle = Fill.Solid Draw.LineStyle = Line.None Draw.Rect(dwgTime.W \ 2, 0, dwgTime.W - dwgTime.W \ 2, dwgTime.H) dTime = Time(0, 0, 0) X = DX Y = DY For iInd = 0 To 47 dNextTime = TimeAdd(dTime, 30) If IsNull(dNextTime) Then dNextTime = 1 If $dTime >= dTime And If $dTime < dNextTime Then If $dTime = dTime Then Draw.FillColor = Color.SelectedBackground Else Draw.FillColor = Color.LightBackground Endif If Not dwgTime.HasFocus Then Draw.FillColor = Color.LightForeground Endif Draw.Foreground = Color.SelectedForeground Draw.FillStyle = Fill.Solid Draw.Rect(X, Y, DW, DH) Else Draw.FillColor = dwgTime.Background Draw.Foreground = dwgTime.Foreground Endif Draw.Text(Format$(dTime, sFormat), X, Y, DW, DH, Align.Center) If iInd = $iCurrentTime Then Draw.Foreground = Color.LightForeground Draw.FillStyle = Fill.None Draw.LineStyle = Line.Solid Draw.Rect(X, Y, DW, DH) Endif Y += DH If (Y + DH) > dwgTime.H Then X += DW Y = DY Endif dTime = dNextTime Next End Private Sub CalcCurrentTime() Dim X, Y, DX, DY, DW, DH As Integer DW = dwgTime.W \ 4 DH = dwgTime.H \ 12 DX = (dwgTime.W - DW * 4) \ 2 DY = (dwgTime.H - DH * 12) \ 2 $iCurrentTime = -1 X = Mouse.X - DX If X < 0 Then Return Y = Mouse.Y - DY If Y < 0 Then Return X = (X - DX) \ DW Y = (Y - DY) \ DH If X > 3 Or If Y > 11 Then Return $iCurrentTime = 6 * X * 2 + Y End Public Sub dwgTime_MouseDown() CalcCurrentTime If $iCurrentTime >= 0 Then SetTime(Time($iCurrentTime \ 2, 30 * ($iCurrentTime Mod 2), 0)) Endif GetParent()._Click End Public Sub dwgTime_DblClick() GetParent()._Activate End Private Sub TimeAdd(dTime As Date, iAdd As Integer) As Date dTime = Date(1972, 9, 6, Hour(dTime), If(Minute(dTime) < 30, 0, 30)) dTime = DateAdd(dTime, gb.Minute, iAdd) Return Time(dTime) End Private Sub SetTime(dTime As Date) $dTime = dTime dwgTime.Refresh txtHour.Text = Format(Hour($dTime), "00") txtMinute.Text = Format(Minute($dTime), "00") End Public Sub dwgTime_KeyPress() Select Case Key.Code Case Key.Up If Time($dTime) < Time(0, 30, 0) Then Dec $dDate SetDate Endif SetTime(TimeAdd($dTime, -30)) Stop Event Case Key.Down If Time($dTime) >= Time(23, 30, 0) Then Inc $dDate SetDate Endif SetTime(TimeAdd($dTime, 30)) Stop Event Case Key.Left If Time($dTime) < Time(6, 0, 0) Then Dec $dDate SetDate Endif SetTime(TimeAdd($dTime, -30 * 12)) Stop Event Case Key.Right If Time($dTime) >= Time(18, 0, 0) Then Inc $dDate SetDate Endif SetTime(TimeAdd($dTime, 30 * 12)) Stop Event Case Key.Space, Key.Enter, Key.Return dwgTime_DblClick End Select End Public Sub SetShowTime(bShowTime As Boolean) If Not GetShowDate() And Not bShowTime Then Error.Raise("Bad argument") panTime.Visible = bShowTime sepTime.Visible = GetShowTime() And GetShowDate() UpdateTimeWidth End Public Sub GetShowTime() As Boolean Return dwgTime.Visible End Public Sub SetShowDate(bShowDate As Boolean) If Not GetShowTime() And Not bShowDate Then Error.Raise("Bad argument") panDate.Visible = bShowDate sepTime.Visible = GetShowTime() And GetShowDate() UpdateTimeWidth End Public Sub GetShowDate() As Boolean Return panDate.Visible End Public Sub dwgTime_MouseMove() Dim iLast As Integer = $iCurrentTime CalcCurrentTime If $iCurrentTime < 0 Then dwgTime.Mouse = Mouse.Default Else dwgTime.Mouse = Mouse.Pointing Endif If $iCurrentTime <> iLast Then dwgTime.Refresh Endif End Public Sub dwgMonth_MouseMove() If CalcCurrentDate() Then dwgMonth.Mouse = Mouse.Default Else dwgMonth.Mouse = Mouse.Pointing Endif dwgMonth.Refresh End Public Sub dwgMonth_Leave() $dCurrentDate = Null dwgMonth.Tooltip = "" dwgMonth.Refresh End Public Sub dwgTime_Leave() $iCurrentTime = -1 dwgTime.Refresh End Public Sub HasBorder() As Boolean Return panBorder.Border <> Border.None End Public Sub SetBorder(bBorder As Boolean) panBorder.Border = If(bBorder, Border.Plain, Border.None) End Public Sub txtHour_GotFocus() txtHour.SelectAll End Public Sub txtMinute_GotFocus() txtMinute.SelectAll End Public Sub txtHour_MouseWheel() Dim iHour As Integer = Hour($dTime) If Mouse.Forward Then iHour = Min(iHour + 1, 23) Else iHour = Max(iHour - 1, 0) Endif SetTime(Time(iHour, Minute($dTime), 0)) If panDate.Visible Then btnOK_Click End Public Sub txtMinute_MouseWheel() Dim iMinute As Integer = Minute($dTime) If Mouse.Forward Then Inc iMinute If iMinute > 59 Then If Hour($dTime) = 23 Then Stop Event Return Endif iMinute = 0 txtHour_MouseWheel Endif Else Dec iMinute If iMinute < 0 Then If Hour($dTime) = 0 Then Stop Event Return Endif iMinute = 59 txtHour_MouseWheel Endif Endif SetTime(Time(Hour($dTime), iMinute, 0)) If panDate.Visible Then btnOK_Click End Public Sub txtHour_LostFocus() Dim iHour As Integer 'Dim iPos As Integer Try iHour = CInt(Trim(txtHour.Text)) If Not Error And If iHour >= 0 And If iHour <= 23 Then SetTime(Time(iHour, Minute($dTime), 0)) Endif End Public Sub txtMinute_LostFocus() Dim iMinute As Integer Try iMinute = CInt(Trim(txtMinute.Text)) If Not Error And If iMinute >= 0 And If iMinute <= 59 Then SetTime(Time(Hour($dTime), iMinute, 0)) Endif End Public Sub txtHour_Activate() txtMinute.SetFocus End Public Sub txtMinute_Activate() txtMinute_LostFocus btnOK_Click End Public Sub btnOK_Click() GetParent()._Click() 'GetParent()._Activate() End Public Sub btnMonth_MouseWheel() If Mouse.Forward Then btnPrevMonth_Click Else btnNextMonth_Click Endif End Public Sub dwgMonth_MouseWheel() Dim dDate As Date If Mouse.Forward Then dDate = DateAdd($dDate, gb.Day, -1) Else dDate = DateAdd($dDate, gb.Day, 1) Endif SetDate(Year(dDate), Month(dDate), Day(dDate)) End Private Sub UpdateReloadSize() Dim W As Integer Dim H As Integer Dim XD, YD As Integer If Not $bShowWeek Then Return If CalcGrid(ByRef W, ByRef H, ByRef XD, ByRef YD) Then btnReload.Hide Else btnReload.Move(0, 0, XD, YD) btnReload.Show Endif End Public Sub SetShowWeek(bWeek As Boolean) If $bShowWeek = bWeek Then Return $bShowWeek = bWeek If $bShowWeek Then btnReload.Reparent(dwgMonth) btnReload.Ignore = True UpdateReloadSize Else btnReload.Reparent(panToolbar) btnReload.Lower() btnReload.Ignore = False Endif dwgMonth.Refresh End Public Sub GetShowWeek() As Boolean Return $bShowWeek End gambas-3.16.3/comp/src/gb.form/.src/Date/FCalendar.form000066400000000000000000000056121411575327000223540ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,85,43) Resizable = False Arrangement = Arrange.Fill { panBorder Panel MoveScaled(1,1,83,37) Arrangement = Arrange.Horizontal Border = Border.Plain { panDate VBox MoveScaled(0,0,57,35) Expand = True { panToolbar HBox MoveScaled(0,0,55,4) Background = Color.TextBackground { btnReload ToolButton MoveScaled(0,0,4,4) ToolTip = ("Today") Picture = Picture["icon:/small/calendar"] } { btnPrevMonth ToolButton MoveScaled(4,0,4,4) ToolTip = ("Previous month") Picture = Picture["icon:/small/left"] } { btnNextMonth ToolButton MoveScaled(8,0,4,4) ToolTip = ("Next month") Picture = Picture["icon:/small/right"] } { panSepMonth Panel MoveScaled(14,0,1,4) Visible = False } { cmbMonth ComboBox MoveScaled(18,0,18,4) Expand = True ReadOnly = True Border = False } { txtYear SpinBox MoveScaled(39,0,9,4) MinValue = 1600 MaxValue = 9999 Value = 1600 Border = False } } { Panel1 Panel MoveScaled(29,5,3,1) Visible = False } { Separator1 Separator MoveScaled(9,7,30,0) } { dwgMonth DrawingArea MoveScaled(0,8,56,27) Background = Color.TextBackground Foreground = Color.TextForeground Tracking = True Expand = True Focus = True } } { sepTime Separator MoveScaled(58,0,0,35) Visible = False } { panTime VBox MoveScaled(58,0,24,35) Visible = False { HBox1 HBox MoveScaled(0,0,23,4) Background = Color.TextBackground { PictureBox1 PictureBox MoveScaled(0,0,4,4) Visible = False Picture = Picture["icon:/small/clock"] Alignment = Align.Center } { Spring1 Spring MoveScaled(4,1,3,1) } { Panel3 Panel MoveScaled(8,0,8,4) Background = Color.TextBackground { txtMinute TextBox MoveScaled(4,0,4,4) Alignment = Align.Right Border = False } { txtHour TextBox MoveScaled(0,0,4,4) Alignment = Align.Right Border = False } } { btnOK ToolButton MoveScaled(18,0,4,4) ToolTip = ("Apply") Picture = Picture["icon:/small/ok"] } } { Separator2 Separator MoveScaled(2,6,12,0) } { dwgTime DrawingArea MoveScaled(1,14,14,20) Background = Color.TextBackground Foreground = Color.TextForeground Tracking = True Expand = True Focus = True } } } } gambas-3.16.3/comp/src/gb.form/.src/Date/TimeBox.class000066400000000000000000000100441411575327000222410ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Value,ReadOnly,Border=True,ShowHour=true" 'Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Property Value As Date Property ReadOnly As Boolean Property Border As Boolean Property ShowHour As Boolean Private $hBorder As DrawingArea Private $hHour As SpinBox Private $hMinute As SpinBox Private $hSecond As SpinBox Private $bBorder As Boolean = True Private $hLabelHour As Label Private Sub CreateSpinBox(sName As String) As SpinBox Dim hSpinBox As SpinBox hSpinBox = New SpinBox($hBorder) Object.Attach(hSpinBox, Me, sName) hSpinBox.Expand = True hSpinBox.Border = False hSpinBox.Alignment = Align.Right hSpinBox.ShowZero = True Return hSpinBox End Public Sub _new() Dim hLabel As Label $hBorder = New DrawingArea(Me) As "Border" $hBorder.Arrangement = Arrange.Horizontal $hBorder.Padding = Style.FrameWidth $hBorder.Margin = True $hHour = CreateSpinBox("HourBox") $hHour.MinValue = 0 $hHour.MaxValue = 24 GoSub CREATE_LABEL $hLabelHour = hLabel $hMinute = CreateSpinBox("MinuteBox") $hMinute.MinValue = 0 $hMinute.MaxValue = 59 GoSub CREATE_LABEL $hSecond = CreateSpinBox("SecondBox") $hSecond.MinValue = 0 $hSecond.MaxValue = 59 Return CREATE_LABEL: hLabel = New Label($hBorder) hLabel.Text = " :" hLabel.AutoResize = True Return End Private Function Value_Read() As Date Try Return Time($hHour.Value, $hMinute.Value, $hSecond.Value) End Private Sub Value_Write(Value As Date) $hHour.Value = Hour(Value) $hMinute.Value = Minute(Value) $hSecond.Value = Second(Value) End Private Function ReadOnly_Read() As Boolean Return $hMinute.ReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $hHour.ReadOnly = Value $hMinute.ReadOnly = Value $hSecond.ReadOnly = Value End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value $hBorder.Padding = If($bBorder, Max(Style.BoxFrameWidth, Style.BoxFrameHeight), 0) $hBorder.Margin = $bBorder End Public Sub HourBox_GotFocus() $hBorder.Refresh '$hHour.SelectAll End Public Sub MinuteBox_GotFocus() $hBorder.Refresh '$hMinute.SelectAll End Public Sub SecondBox_GotFocus() $hBorder.Refresh '$hSecond.SelectAll End Public Sub HourBox_LostFocus() $hBorder.Refresh End Public Sub MinuteBox_LostFocus() $hBorder.Refresh End Public Sub SecondBox_LostFocus() $hBorder.Refresh End Public Sub SecondBox_Limit() If $hSecond.Value = $hSecond.MaxValue Then Try Me.Value = DateAdd(Me.Value, gb.Second, 1) Else If $hSecond.Value = $hSecond.MinValue Then Try Me.Value = DateAdd(Me.Value, gb.Second, -1) Endif $hSecond.SetFocus $hSecond.SelectAll End Public Sub MinuteBox_Limit() If $hMinute.Value = $hMinute.MaxValue Then Try Me.Value = DateAdd(Me.Value, gb.Minute, 1) Else If $hMinute.Value = $hMinute.MinValue Then Try Me.Value = DateAdd(Me.Value, gb.Minute, -1) Endif $hMinute.SetFocus End ' Public Sub MinuteBox_MouseWheel() ' ' $hMinute.Text = Format(Max(0, Min(59, CInt($hMinute.Text) + If(Mouse.Forward, 1, -1))), "00") ' ' End ' ' Public Sub SecondBox_MouseWheel() ' ' Dim dVal As Date ' ' dVal = Value_Read() ' Try dVal = DateAdd(dVal, gb.Second, If(Mouse.Forward, 10, -10)) ' If Not Error Then Value_Write(dVal) ' ' End Public Sub Border_Draw() Dim iBg As Integer = Color.TextBackground If Me.Background <> Color.Default Then iBg = Me.Background If $bBorder Then Style.PaintBox(0, 0, Me.W, Me.H, Style.StateOf($hMinute) Or Style.StateOf($hSecond) Or Style.StateOf($hHour), iBg) Else Paint.FillRect(0, 0, Me.W, Me.H, iBg) Endif End Private Function ShowHour_Read() As Boolean Return $hHour.Visible End Private Sub ShowHour_Write(Value As Boolean) $hHour.Visible = Value $hLabelHour.Visible = Value If Not Value Then $hHour.Value = 0 End gambas-3.16.3/comp/src/gb.form/.src/Date/_DateChooser_Colors.class000066400000000000000000000005001411575327000245460ustar00rootroot00000000000000' Gambas class file Export Create Static Public _Calendar As FCalendar Public Sub Clear() _Calendar.ClearColors() End Public Sub _put((Color) As Integer, {Date} As Date) _Calendar.SetColor({Date}, Color) End Public Sub _get({Date} As Date) As Integer Return _Calendar.GetColor({Date}) End gambas-3.16.3/comp/src/gb.form/.src/Date/_DateChooser_Data.class000066400000000000000000000006771411575327000241750ustar00rootroot00000000000000' Gambas class file Export 'Public Picture As Picture 'Public Alignment As Integer = Align.Normal 'Public Padding As Integer = 2 'Public WordWrap As Boolean Public Foreground As Integer = Color.Default Public Background As Integer = Color.Default Public Text As String Property Font As Font Private $hFont As Font Private Function Font_Read() As Font Return $hFont End Private Sub Font_Write(Value As Font) $hFont = Value.Copy() End gambas-3.16.3/comp/src/gb.form/.src/Date/_DateChooser_Date.class000066400000000000000000000017751411575327000242010ustar00rootroot00000000000000' Gambas class file Export Property Background As Integer Property Foreground As Integer Property Text As String Property Font As Font Public _Date As Date Public _View As DateChooser Private Sub GetData(bCreate As Boolean) As _DateChooser_Data '_View._CheckCell(_Row, _Column) If bCreate Then _View.Refresh Return _View._GetData(_Date, bCreate) End Private Function Background_Read() As Integer Return GetData(False).Background End Private Sub Background_Write(Value As Integer) GetData(True).Background = Value End Private Function Foreground_Read() As Integer Return GetData(False).Foreground End Private Sub Foreground_Write(Value As Integer) GetData(True).Foreground = Value End Private Function Font_Read() As Font Return GetData(False).Font End Private Sub Font_Write(Value As Font) GetData(True).Font = Value End Private Function Text_Read() As String Return GetData(False).Text End Private Sub Text_Write(Value As String) GetData(True).Text = Value End gambas-3.16.3/comp/src/gb.form/.src/DocumentView/000077500000000000000000000000001411575327000214005ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/DocumentView/DocumentView.class000066400000000000000000000664141411575327000250530ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border,Arrangement{Arrange.Row;Column;Vertical;Horizontal;Fill}=Row,Padding=16,Spacing=16,Columns,Center,ShowShadow,ShowPage" Public Const _Group As String = "View" Public Const _Similar As String = "GridView" '' Return or set the default width of a page in millimiters. '' '' By default the size of the page is 210 x 297 mm (A4 format). Property DocWidth, PageWidth As Integer '' Return or set the default height of a page in millimiters. '' '' By default the size of the page is 210 x 297 mm (A4 format). Property DocHeight, PageHeight As Integer '' Return or set the number of pages in the document. Property Count As Integer '' Return the number of pages in the document minus one. Property Read Max As Integer '' Return a virtual object used for defining the layout of a specific page. '' '' See the [./.layout] event for more details. Property Read Layout As _DocumentLayout '' Return or set the zoom factor of the view. Property Zoom, Scale As Float '' Return or set the number of columns used for layouting pages. '' '' If set to zero (the default), then the preview only shows pages one by one. '' Otherwise all pages are layouted from top to bottom. Property Columns, Column As Integer '' Return or set how the different pages are arranged inside the view. '' '' This property can take one of the following values: '' - [Arrange.Vertical](/comp/gb.qt4/arrange/vertical) '' - [Arrange.Horizontal](/comp/gb.qt4/arrange/horizontal) '' - [Arrange.Row](/comp/gb.qt4/arrange/row) '' - [Arrange.Column](/comp/gb.qt4/arrange/column) '' - [Arrange.Fill](/comp/gb.qt4/arrange/fill) Property Arrangement As Integer '' Return or set the padding inside the view in millimiters. Property Padding As Integer '' Return or set the spacing between the different pages in millimiters. Property Spacing As Integer '' Return or set if pages are drawn with a little shadow. Property ShowShadow As Boolean '' Return or set if the page number must be displayed inside the view. Property ShowPage As Boolean '' Return the index of the first visible page. Property Read FirstVisiblePage, FirstVisibleDocument As Integer '' Return the index of the last visible page. Property Read LastVisiblePage, LastVisibleDocument As Integer '' Return or set if the page must be centered in the view. Property Center, AutoCenter As Boolean '' Return or set if the document view has a border. Property Border As Boolean '' Return or set if the preview is automatically desaturated. Property Desaturate As Boolean Private $bAutoCenter As Boolean Private $iColumn As Integer Private $bShowShadow As Boolean = True Private $iPadding As Integer = 10 Private $fScaledPadding As Integer Private $iArrangement As Integer Private $hView As ScrollArea Private $iDocWidth As Integer = 210 Private $iDocHeight As Integer = 297 Private $hLayout As New _DocumentLayout 'Info du layout Private $iFirstVisibleColumn As Integer Private $iLastVisibleColumn As Integer Private $iFirstVisibleLine As Integer Private $iFirstVisibleDocument As Integer Private $iLastVisibleDocument As Integer Private $iLastVisibleLine As Integer Private $colLayout As New Collection Private $colImage As New Collection Private $iCount As Integer = 0 Private $fScaledDocWidth As Float ''Largeur reelle du doc a l'affichage (zoom) Private $fScaledDocHeight As Float ''Hauteur reelle du doc a l'affichage (zoom) Private $fScaledSpace As Float '' Taille reelle de l'espacement a l'affichage(zoom) Private $fMaxPageHeight As Float ''Hauteur du plus grand doc Private $fMaxPageWidth As Float ''Largeur du plus grand doc Private $iMaxPageHeight As Integer Private $iMaxPageWidth As Integer Private $iSpacing As Integer = 10 ''Taille de l'espacement Private $iNbreLines As Integer ''Nombre de ligne totale Private $tmrLoad As New Timer As "tmrLoad" Private $tmrRefresh As New Timer As "tmrRefresh" Private $aImageToLoad As New Integer[] Private $aImageLoaded As New Integer[] Private $iNbreDocByLine As Integer Private $hDocItem As _DocumentItem Private $iCurrent As Integer Private $fZoom As Float = 1.0 Private $aSelected As New Integer[] Private $fCenter As Float Private $iSX As Integer Private $iSY As Integer Private $MX As Integer Private $MY As Integer Private $bShowPage As Boolean Private $hObs As Observer '' This event is raised so that each page layout can be defined independently. '' '' - ~Page~ is the index of the page to layout. '' '' Use the [../layout] property inside the handler of this event to define the layout of the specified page. Event Layout(Page As Integer) '' This event is raised when a specific page preview must me drawn '' '' - ~Page~ is the index of the page to draw. '' - ~Width~ and ~Height~ are the size of the image buffer where the page must be drawn. Event Draw(Page As Integer, Width As Integer, Height As Integer) '' This event is raised when all page preview have been drawn. Event Finished '' This event is raised when the zoom level has changed. Event Zoom Private $bDesaturate As Boolean Private $bLayouting As Boolean '' Create a new DocumentView Public Sub _new() $hView = New ScrollArea(Me) As "View" $hView.Background = Color.LightForeground $hView.Border = False '$tmrLoad.Delay = 100 Me.Proxy = $hView $hDocItem = New _DocumentItem As "Doc" $hObs = New Observer($hView.View) As "Obs" End Public Sub tmrLoad_Timer() Dim hImg As Image Dim iPage As Integer Dim iDocWidth, iDocHeight As Integer If $aImageToLoad.Count = 0 Then '$tmrLoad.Stop Raise Finished Return Endif iPage = $aImageToLoad.pop() If $colLayout.Exist(iPage) Then iDocWidth = $colLayout[iPage].Width iDocHeight = $colLayout[iPage].Height Else iDocWidth = $iDocWidth iDocHeight = $iDocHeight Endif 'Raise Layout(iPage) hImg = New Image(iDocWidth * $fZoom, iDocHeight * $fZoom, Color.White) Paint.Begin(hImg) 'Paint.Scale($fZoom, $fZoom) Raise Draw(iPage, iDocWidth * $fZoom, iDocHeight * $fZoom) Paint.End If $bDesaturate Then hImg.Desaturate() $colImage[iPage] = hImg $aImageLoaded.Add(iPage) $tmrLoad.Trigger $tmrRefresh.Trigger End Public Sub View_Draw() Dim i, j, k As Integer Dim sText As String Dim W As Integer Dim D As Integer If $iCount = 0 Then Return Select Case $iArrangement Case Arrange.Horizontal k = $iFirstVisibleDocument i = 0 For j = $iFirstVisibleDocument To $iLastVisibleDocument DrawDoc(j, i, j) Next Case Arrange.None, Arrange.Row, Arrange.LeftRight k = $iFirstVisibleDocument For i = $iFirstVisibleLine To $iLastVisibleLine For j = 0 To $iNbreDocByLine - 1 DrawDoc(k, i, j) Inc k If k > $iLastVisibleDocument Then Goto SHOW_PAGE If k >= $iCount Then Goto SHOW_PAGE Next Next Case Arrange.Column, Arrange.TopBottom k = $iFirstVisibleDocument For j = $iFirstVisibleColumn To $iLastVisibleColumn 'Print "ilastviscol : " & $iLastVisibleColumn For i = 0 To $iNbreLines - 1 DrawDoc(k, i, j) Inc k If K > $iLastVisibleDocument Then Goto SHOW_PAGE If K >= $iCount Then Goto SHOW_PAGE Next Next Case Arrange.Vertical j = 0 For i = $iFirstVisibleDocument To $iLastVisibleDocument DrawDoc(i, i, j) Next Case Arrange.Fill 'DrawDoc($iFirstVisibleDocument, 0, 0) i = 0 For j = $iFirstVisibleDocument To $iLastVisibleDocument DrawDoc(j, 0, i) Inc i Next End Select SHOW_PAGE: If $bShowPage Then D = Desktop.Scale sText = CStr($iFirstVisibleDocument + 1) & " / " & CStr($iCount) W = Paint.Font.TextWidth(sText) + D * 2 Paint.FillRect(Paint.W - W - D, D, W, Paint.Font.H + D, Color.SetAlpha(Color.TextForeground, 128)) Paint.Background = Color.SetAlpha(Color.TextBackground, 128) Paint.DrawText(sText, Paint.W - W - D + 1, D, W, Paint.Font.H + D, Align.Center) Paint.Background = Color.TextBackground Paint.DrawText(sText, Paint.W - W - D, D, W, Paint.Font.H + D, Align.Center) Endif End Private Sub DrawDoc(Page As Integer, iRow As Integer, iCol As Integer) Dim iDocX, iDocY As Integer Dim fShad As Float = $fZoom * ($iSpacing / 4) Dim hImage As Image 'Dim fFullContentWidth As Float If $colLayout.Exist(Page) Then $fScaledDocWidth = $colLayout[Page].Width * $fZoom $fScaledDocHeight = $colLayout[Page].Height * $fZoom Else $fScaledDocWidth = $iDocWidth * $fZoom $fScaledDocHeight = $iDocHeight * $fZoom Endif 'Define the doc position If System.RightToLeft Then iDocX = $hView.ClientW - $fScaledPadding - (iCol * ($fMaxPageWidth + $fScaledSpace)) - $fMaxPageWidth + $hView.ScrollX Else iDocX = $fScaledPadding + iCol * ($fMaxPageWidth + $fScaledSpace) + ($fMaxPageWidth - $fScaledDocWidth) / 2 - $hView.ScrollX Endif iDocY = $fScaledPadding + iRow * ($fMaxPageHeight + $fScaledSpace) + ($fMaxPageHeight - $fScaledDocHeight) / 2 - $hView.ScrollY If $bAutoCenter Then If $iArrangement = Arrange.Column Then iDocY -= $fCenter Else If System.RightToLeft Then iDocX -= $fCenter Else iDocX += $fCenter Endif Endif Endif 'Draw the doc If $bShowShadow Then Paint.Save Paint.Translate(fShad, fShad) Paint.Rectangle(iDocX + $fScaledDocWidth - fShad, iDocY, fShad, $fScaledDocHeight) Paint.Rectangle(iDocX, iDocY + $fScaledDocHeight - fShad, $fScaledDocWidth, fShad) Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 192)) Paint.Fill Paint.Restore Endif If $colImage.Exist(Page) Then hImage = $colImage[Page] Paint.DrawImage(hImage, iDocX, iDocY, $fScaledDocWidth, $fScaledDocHeight) Paint.Rectangle(iDocX, iDocY, $fScaledDocWidth, $fScaledDocHeight) Paint.Brush = Paint.Color(Color.Black) Paint.Stroke Else Paint.Rectangle(iDocX, iDocY, $fScaledDocWidth, $fScaledDocHeight) Paint.Brush = Paint.Color(Color.White) Paint.Fill(True) Paint.Brush = Paint.Color(Color.Black) Paint.Stroke Endif If $aSelected.Find(page) > -1 Then Paint.Rectangle(iDocX, iDocY, $fScaledDocWidth, $fScaledDocHeight) Paint.Brush = Paint.Color(Color.SetAlpha(Color.SelectedBackground, 192)) Paint.Fill() Endif End Private Sub RefreshLayoutNeeds() Dim i As Integer For i = 0 To $iCount - 1 $hLayout = New _DocumentLayout Raise Layout(i) If $hLayout.Width > 0 And If $hLayout.Height > 0 Then $colLayout[i] = $hLayout Endif Next DoLayout End Private Sub DoLayout() Dim hLayout As _DocumentLayout Dim i As Integer Dim atmp As New Integer[] 'Dim fOldZoom As Float = $fZoom If $iCount = 0 Then Return 'If $hView.H <> Me.H Or If $hView.W <> Me.W Then Return $fCenter = 0 If $bLayouting Then Return $bLayouting = True 'TODO: go '$tmrLoad.Stop 'Found the maxPage Size $iMaxPageHeight = $iDocHeight $iMaxPageWidth = $iDocWidth For Each hLayout In $colLayout $iMaxPageWidth = Max($iMaxPageWidth, hLayout.Width) $iMaxPageHeight = Max($iMaxPageHeight, hLayout.Height) Next ' If $iVisibleCount > 0 Then ' $iNbreDocByLine = $iVisibleCount ' Endif Select Case $iArrangement Case Arrange.Row, Arrange.None, Arrange.LeftRight If $iColumn Then SetZoom($hView.ClientW / (($iMaxPageWidth + $iSpacing) * $iColumn - $iSpacing + $iPadding * 2)) Endif $fMaxPageWidth = $iMaxPageWidth * $fZoom $fMaxPageHeight = $iMaxPageHeight * $fZoom $fScaledSpace = $iSpacing * $fZoom $fScaledPadding = $iPadding * $fZoom $iNbreDocByLine = Max(($hView.ClientW - $fScaledPadding) / ($fMaxPageWidth + $fScaledSpace), 1) 'Calculate the first visible line $iFirstVisibleLine = Floor($hView.ScrollY / ($fMaxPageHeight + $fScaledSpace)) $iFirstVisibleDocument = $iFirstVisibleLine * $iNbreDocByLine ''Debug "Premier doc visible : " & $iFirstVisibleDocument 'Calculate how many doc are visibles $iLastVisibleColumn = Floor(($hView.ScrollX + $hView.ClientWidth) / ($fMaxPageWidth + $fScaledSpace)) $iLastVisibleLine = Ceil(($hView.ScrollY + $hView.ClientH) / ($fMaxPageHeight + $fScaledSpace)) $iLastVisibleDocument = Min($iLastVisibleLine * $iNbreDocByLine, $iCount - 1) 'If $bAutoCenter Then $fCenter = (($hView.ClientW - (($iMaxPageWidth + $iSpacing) * $iNbreDocByLine - $iSpacing + $iPadding * 2)) / 2) * $fZoom Case Arrange.Column, Arrange.TopBottom If $iColumn Then SetZoom($hView.ClientH / (($iMaxPageHeight + $iSpacing) * $iColumn - $iSpacing + $iPadding * 2)) Endif $fMaxPageWidth = $iMaxPageWidth * $fZoom $fMaxPageHeight = $iMaxPageHeight * $fZoom $fScaledSpace = $iSpacing * $fZoom $fScaledPadding = $iPadding * $fZoom $iNbreLines = Max(($hView.ClientHeight - $fScaledPadding) / ($fMaxPageHeight + $fScaledSpace), 1) $iNbreDocByLine = Ceil($iCount / $iNbreLines) $iFirstVisibleColumn = Floor($hView.ScrollX / ($fMaxPageWidth + $fScaledSpace)) $iFirstVisibleDocument = $iFirstVisibleColumn * $iNbreLines $iLastVisibleColumn = Floor(($hView.ScrollX + $hView.ClientWidth) / ($fMaxPageWidth + $fScaledSpace)) $iLastVisibleDocument = Min($iLastVisibleColumn * $iNbreLines + 1, $iCount - 1) 'If $bAutoCenter Then $fCenter = Max((($hView.ClientH - (($iMaxPageHeight + $iSpacing) * $iNbreLines - $iSpacing + $iPadding * 2)) / 2), 0) * $fZoom Case Arrange.Horizontal SetZoom($hView.ClientH / ($iMaxPageHeight + 2 * $iPadding)) $fMaxPageWidth = $iMaxPageWidth * $fZoom $fMaxPageHeight = $iMaxPageHeight * $fZoom $fScaledSpace = $iSpacing * $fZoom $fScaledPadding = $iPadding * $fZoom $iNbreDocByLine = $iCount $iFirstVisibleLine = 0 $iLastVisibleLine = 0 $iLastVisibleColumn = Floor(($hView.ScrollX + $hView.ClientWidth) / ($fMaxPageWidth + $fScaledSpace)) $iFirstVisibleDocument = Floor($hView.ScrollX / ($fMaxPageWidth + $fScaledSpace)) $iFirstVisibleColumn = $iFirstVisibleDocument $iLastVisibleDocument = Min(Floor(($hView.ScrollX + $hView.ClientWidth) / ($fMaxPageWidth + $fScaledSpace)), $iCount - 1) Case Arrange.Vertical SetZoom($hView.ClientW / ($iMaxPageWidth + 2 * $iPadding)) $fMaxPageWidth = $iMaxPageWidth * $fZoom $fMaxPageHeight = $iMaxPageHeight * $fZoom $fScaledSpace = $iSpacing * $fZoom $fScaledPadding = $iPadding * $fZoom $iNbreDocByLine = 1 'Calculate the first visible line $iFirstVisibleLine = Floor($hView.ScrollY / ($fMaxPageHeight + $fScaledSpace)) $iFirstVisibleDocument = $iFirstVisibleLine * $iNbreDocByLine 'Debug "Premier doc visible : " & $iFirstVisibleDocument 'Calculate how many doc are visibles $iLastVisibleLine = Ceil(($hView.ScrollY + $hView.ClientH) / ($fMaxPageHeight + $fScaledSpace)) $iLastVisibleDocument = Min($iLastVisibleLine * $iNbreDocByLine, $iCount - 1) Case Arrange.Fill '$hView.ScrollBar = Scroll.None If $iDocHeight > $iDocWidth * Max($iColumn, 1) Then SetZoom($hView.ClientH / ($iDocHeight + $iPadding * 2)) Else SetZoom($hView.ClientW / (($iDocWidth + $iPadding * 2) + ($iDocWidth + $iSpacing) * $iColumn)) If ($iDocHeight + 2 * $iPadding) * $fZoom > $hView.ClientH Then SetZoom($hView.ClientH / ($iDocHeight + $iPadding * 2)) Endif Endif $fMaxPageWidth = $iMaxPageWidth * $fZoom $fMaxPageHeight = $iMaxPageHeight * $fZoom $fScaledSpace = $iSpacing * $fZoom $fScaledPadding = $iPadding * $fZoom $iFirstVisibleDocument = $iCurrent $iNbreDocByLine = Max($iColumn, 1) $iLastVisibleDocument = Min($iCurrent + $iNbreDocByLine - 1, $iCount - 1) If $bAutoCenter Then $fCenter = Max(($hView.ClientW - (($fMaxPageWidth + $fScaledSpace) * $iNbreDocByLine - $fScaledSpace + $fScaledPadding * 2)) / 2, 0) 'Print $fCenter Endif $hView.Scroll(0, 0) End Select 'Calculate the Max doc per line (mini 1 doc) 'If $iVisibleCount = 0 Then 'Endif 'Calculate the full Layout height $iNbreLines = Ceil($iCount / $iNbreDocByLine) 'Debug "Nombre de doc par lignes : " & $iNbreDocByLine 'Debug "Nombre de lignes : " & $iNbreLines 'Debug "Première colonne : " & $iFirstVisibleColumn 'Debug "Dernière colonne : " & $iLastVisibleColumn 'Debug "Premier Doc : " & $iFirstVisibleDocument1 'Debug "Dernier doc : " & $iLastVisibleDocument ' Object.Lock($hView) ' $hView.ScrollX = $hView.ScrollX / fOldZoom * $fZoom ' $hView.ScrollY = $hView.ScrollY / fOldZoom * $fZoom ' Object.Unlock($hView) 'Setup the virtual space $hView.ResizeContents($fScaledPadding * 2 + ($fMaxPageWidth + $fScaledSpace) * $iNbreDocByLine - $fScaledSpace, $fScaledPadding * 2 + ($fMaxPageHeight + $fScaledSpace) * $iNbreLines - $fScaledSpace) 'Remove all unused image from the buffer For i = 0 To $aImageLoaded.Max If $aImageLoaded[i] < $iFirstVisibleDocument Or If $aImageLoaded[i] > $iLastVisibleDocument Then $colImage[$aImageLoaded[i]] = Null 'Debug "Remove image : " & $aImageLoaded[i] Else atmp.Add($aImageLoaded[i]) Endif Next $aImageLoaded = atmp 'Setup the images to load For i = $iFirstVisibleDocument To $iLastVisibleDocument If Not $aImageLoaded.Exist(i) Then If Not $aImageToLoad.Exist(i) Then $aImageToLoad.push(i) Endif Next $aImageToLoad.Sort $aImageToLoad = $aImageToLoad.Reverse() 'If $aImageToLoad.Count > 0 Then $tmrLoad.Trigger $bLayouting = False End Private Function DocWidth_Read() As Integer Return $iDocWidth End Private Sub DocWidth_Write(Value As Integer) If $iDocWidth = Value Then Return $iDocWidth = value DoLayout $tmrRefresh.Trigger End Private Function DocHeight_Read() As Integer Return $iDocHeight End Private Sub DocHeight_Write(Value As Integer) If $iDocHeight = Value Then Return $iDocHeight = Value DoLayout $tmrRefresh.Trigger End Private Function Count_Read() As Integer Return $iCount End Private Sub Count_Write(Value As Integer) $iCount = Value '$aImageLoaded.Clear ' $aImageToLoad.Clear '$colImage.Clear RefreshLayoutNeeds '$tmrRefresh.Trigger End Private Function Max_Read() As Integer Return $iCount - 1 End Private Function Layout_Read() As _DocumentLayout Return $hLayout End Public Sub View_Arrange() DoLayout $tmrRefresh.Trigger End Public Sub View_Scroll() $iSX = $hView.ScrollX $iSY = $hView.ScrollY '$tmrLoad.Stop $aImageToLoad.Clear DoLayout End Private Function Zoom_Read() As Float Return $fZoom End Private Sub SetZoom(fValue As Float) If fValue = $fZoom Then Return $fZoom = fValue $aImageLoaded.Clear $aImageToLoad.Clear Raise Zoom End Private Sub Zoom_Write(Value As Float) Select Case $iArrangement Case Arrange.None, Arrange.Row, Arrange.Column, Arrange.LeftRight, Arrange.TopBottom SetZoom(Min(Max(Value, 1 / 8), 8)) DoLayout $tmrRefresh.Trigger End Select End '' Refresh the view contents. Public Sub Refresh() $aImageLoaded.Clear $aImageToLoad.Clear $colImage.Clear DoLayout $tmrRefresh.Trigger End '' Resets the view. Public Sub Reset() $aImageLoaded.Clear $aImageToLoad.Clear $colImage.Clear RefreshLayoutNeeds 'DoLayout $tmrRefresh.Trigger End Public Sub tmrRefresh_Timer() $hView.Refresh End Private Function Arrangement_Read() As Integer Return $iArrangement End Private Sub Arrangement_Write(Value As Integer) If Value = $iArrangement Then Return If Value = Arrange.Fill Then $hView.ScrollBar = Scroll.None Else $hView.ScrollBar = Scroll.Both Endif $iArrangement = Value 'SetAutoScale '$aImageLoaded.Clear '$colImage.Clear DoLayout $tmrRefresh.Trigger 'Raise Zoom End ' Private Function VisibleCount_Read() As Integer ' ' Return $iVisibleCount ' ' End ' ' Private Sub VisibleCount_Write(Value As Integer) ' ' $iVisibleCount = Value ' DoLayout ' ' End Private Function Padding_Read() As Integer Return $iPadding End Private Sub Padding_Write(Value As Integer) If Value = $iPadding Then Return $iPadding = Value DoLayout End Private Function ShowShadow_Read() As Boolean Return $bShowShadow End Private Sub ShowShadow_Write(Value As Boolean) $bShowShadow = Value $tmrRefresh.Trigger End Private Function Spacing_Read() As Integer Return $iSpacing End Private Sub Spacing_Write(Value As Integer) If value = $iSpacing Then Return $iSpacing = Value DoLayout End '' Move the view to a specified page. '' '' - ~Page~ is the page number, starting from zero. Public Sub Goto(Page As Integer) Dim iPageCol, iPageRow As Integer Page = Max(Min(Page, $iCount - 1), 0) Select Case $iArrangement Case Arrange.None, Arrange.Row, Arrange.LeftRight iPageRow = Floor(Page / $iNbreDocByLine) $hView.ScrollY = iPageRow * ($fMaxPageHeight + $fScaledSpace) Case Arrange.Column, Arrange.TopBottom iPageCol = Floor(page / $iNbreLines) $hView.ScrollX = iPageCol * ($fMaxPageWidth + $fScaledSpace) Case Arrange.Vertical $hView.ScrollY = Page * ($fMaxPageHeight + $fScaledSpace) Case Arrange.Horizontal $hView.ScrollX = Page * ($fMaxPageWidth + $fScaledSpace) Case Arrange.Fill $iCurrent = Page DoLayout $tmrRefresh.Trigger End Select End Public Sub View_MouseWheel() If $iArrangement = Arrange.Fill Then $iCurrent = Max(0, Min($iCurrent - (Mouse.Delta * Max($iColumn, 1)), $iCount - 1)) $hView.Scroll(0, 0) View_Scroll Stop Event Else If Mouse.Control Then Me.Zoom = $fZoom * 2 ^ (Mouse.Delta / 4) $hView.Scroll($iSX, $iSY) Endif Stop Event Endif $iSX = $hView.ScrollX $iSY = $hView.ScrollY End 'WorkAround to lock Scrolling when contol key is pressed Public Sub Obs_MouseWheel() If Mouse.Control Then $hView.UseMouse = False Else $hView.UseMouse = True Endif End '' Return the page number under a specific mouse cursor position. '' '' - ~X~ and ~Y~ are the mouse cursor position relative to the document view. Public Function Find(X As Integer, Y As Integer) As Integer Dim iRow, iCol As Integer Dim iPage As Integer iRow = GetPageRow(Y) iCol = GetPageCol(X) If iRow = -1 Or If iCol = -1 Then Return -1 Select Case $iArrangement Case Arrange.None, Arrange.Row iPage = iRow * $iNbreDocByLine + iCol If iPage < $iCount - 1 Then Return iPage Else Return -1 Endif Case Arrange.Column iPage = iCol * $iNbreDocByLine + iRow If iPage < $iCount - 1 Then Return iPage Else Return -1 Endif Case Arrange.Horizontal Return iCol Case Arrange.Vertical Return iRow End Select End Private Function GetPageRow(Y As Integer) As Integer Dim iStart, iMiddle As Integer Dim iEnd As Integer = $iLastVisibleLine Dim iRow As Integer = -1 Dim iDocPos As Integer Y += $hView.ScrollY iStart = $iFirstVisibleLine Repeat iMiddle = Int(iStart + (iEnd - iStart) / 2) iDocPos = ($fScaledPadding + (iMiddle * ($fMaxPageHeight + $fScaledSpace))) ' Print Y ' Print "DocY : " & (iDocPos - 1) ' Print "DocY + Width : " & (iDocPos + $fMaxPageHeight) If Y > iDocPos - 1 And If Y < iDocPos + $fMaxPageHeight Then 'trouvé iRow = iMiddle Else If Y < iDocPos Then iEnd = iMiddle - 1 Else iStart = iMiddle + 1 Endif Endif Until iRow <> -1 Or iMiddle > iEnd + 1 Or iStart > iEnd 'Print "iRow : " & iRow Return iRow End Private Function GetPageCol(X As Integer) As Integer Dim iStart, iMiddle As Integer Dim iEnd As Integer = $iLastVisibleColumn - 1 Dim iCol As Integer = -1 Dim iDocPos As Integer ' Print "X=" & X X += $hView.ScrollX iStart = $iFirstVisibleColumn Repeat iMiddle = Int(iStart + (iEnd - iStart) / 2) iDocPos = ($fScaledPadding + (iMiddle * ($fMaxPageWidth + $fScaledSpace))) 'Print X 'Print "DocX : " & (iDocPos - 1) ' Print "DocX + Width : " & (iDocPos + $fMaxPageWidth) If X > iDocPos - 1 And If X < iDocPos + $fMaxPageWidth Then 'Print "trouvé" iCol = iMiddle Else If X < iDocPos Then iEnd = iMiddle - 1 Else iStart = iMiddle + 1 Endif Endif Until iCol <> -1 Or iMiddle > iEnd + 1 Or iStart > iEnd 'Print "iCol : " & iCol Return iCol End Public Function _GetItemWidth(Index As Integer) As Integer If $colLayout.Exist(Index) Then Return $colLayout[Index].Width Return $iDocWidth End Public Function _GetItemHeight(Index As Integer) As Integer If $colLayout.Exist(Index) Then Return $colLayout[Index].Height Return $iDocHeight End ' Public Function _SetItemVisible(Index As Integer) As Integer ' ' Me.Goto(Index) ' ' End '' Return a virtual object that represents a specific preview page. '' '' - ~Index~ is the index of the page. Public Sub _get(Index As Integer) As _DocumentItem If Index < 0 Or If Index >= $iCount Then Error.Raise("Bad argument") $hDocItem._Index = Index Return $hDocItem End Public Sub View_MouseDown() $MX = Mouse.X $MY = Mouse.Y If Me.Arrangement = Arrange.Fill Or If Me.Arrangement = Arrange.None Then Return $hView.Mouse = Mouse.Pointing 'Try $iCurrent = Find(Mouse.x, Mouse.Y) '$aSelected.Clear '$aSelected.Add($iCurrent) '$tmrRefresh.Trigger End Public Sub View_MouseMove() If Mouse.Left Then If Me.Arrangement = Arrange.Fill Or If Me.Arrangement = Arrange.None Then Return 'Print $MX - Mouse.X $hView.ScrollX += $MX - Mouse.X $MX = Mouse.X $hView.ScrollY += $MY - Mouse.Y $MY = Mouse.Y $tmrRefresh.Trigger Endif End Public Sub View_MouseUp() $hView.Mouse = Mouse.Normal End Public Function _IsVisible(Index As Integer) As Boolean Return (Index >= $iFirstVisibleDocument And index <= $iLastVisibleDocument) End Private Function FirstVisiblePage_Read() As Integer Return $iFirstVisibleDocument End Private Function LastVisiblePage_Read() As Integer Return $iLastVisibleDocument End Private Function Columns_Read() As Integer Return $iColumn End Private Sub Columns_Write(Value As Integer) If Value = $iColumn Then Return $iColumn = Value DoLayout End Private Function Center_Read() As Boolean Return $bAutoCenter End Private Sub Center_Write(Value As Boolean) If value = $bAutoCenter Then Return $bAutoCenter = Value DoLayout $tmrRefresh.Trigger End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) $hView.Border = Value End Private Function ShowPage_Read() As Boolean Return $bShowPage End Private Sub ShowPage_Write(Value As Boolean) If $bShowPage = Value Then Return $bShowPage = Value $hView.Refresh End Private Function Desaturate_Read() As Boolean Return $bDesaturate End Private Sub Desaturate_Write(Value As Boolean) If $bDesaturate = Value Then Return $bDesaturate = Value Reset End gambas-3.16.3/comp/src/gb.form/.src/DocumentView/_DocumentItem.class000066400000000000000000000014301411575327000251610ustar00rootroot00000000000000' Gambas class file ''' This virtual class represents a specific page of the preview. Export '' Return the page height in pixels. Property Read Height, H As Integer '' Return the page width in pixels. Property Read Width, W As Integer Public _Index As Integer Event _Foo Private Function Height_Read() As Integer Return GetParent()._GetItemHeight(_Index) End Private Function Width_Read() As Integer Return GetParent()._GetItemWidth(_Index) End Private Function GetParent() As DocumentView Return Object.Parent(Me) End '' Ensure that the page is visible. Public Sub EnsureVisible() GetParent().Goto(_Index) End '' Return if a page preview is visible on the screen. Public Function IsVisible() As Boolean Return GetParent()._IsVisible(_Index) End gambas-3.16.3/comp/src/gb.form/.src/DocumentView/_DocumentLayout.class000066400000000000000000000005231411575327000255420ustar00rootroot00000000000000' Gambas class file ''' This virtual class allows to define the layout of a specific page Export '' Return or set the width of the page in millimiters. Public Width As Integer '' Return or set the height of the page in millimiters. Public Height As Integer ' '' Return or set the page orientation. ' Public Orientation As Integer = 1 gambas-3.16.3/comp/src/gb.form/.src/Expander/000077500000000000000000000000001411575327000205355ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Expander/Expander.class000066400000000000000000000026141411575327000233350ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Border=True,Text,TextFont,Animated,Hidden" Public Const _DefaultEvent As String = "Show" Public Const _Similar As String = "Panel" Event Show Event Hide Property Hidden As Boolean Property Text As String Property TextFont As Font Property Animated As Boolean Property Border As Boolean Private frmExpander As FExpander Public Sub _new() frmExpander = New FExpander(Me) Me._Container = frmExpander.GetContainer() End Public Sub _Show() Raise Show End Public Sub _Hide() Raise Hide End Private Function Hidden_Read() As Boolean Return frmExpander.GetHidden() End Private Sub Hidden_Write(Value As Boolean) frmExpander.SetHidden(Value) End Private Function Text_Read() As String Return frmExpander.GetText() End Private Sub Text_Write(Value As String) frmExpander.SetText(Value) End Private Function TextFont_Read() As Font Return frmExpander.GetFont() End Private Sub TextFont_Write(Value As Font) frmExpander.SetFont(Value) End Private Function Animated_Read() As Boolean Return frmExpander.GetAnimated() End Private Sub Animated_Write(Value As Boolean) frmExpander.SetAnimated(Value) End Private Function Border_Read() As Boolean Return frmExpander.GetBorder() End Private Sub Border_Write(Value As Boolean) frmExpander.SetBorder(Value) End gambas-3.16.3/comp/src/gb.form/.src/Expander/FExpander.class000066400000000000000000000074031411575327000234440ustar00rootroot00000000000000' Gambas class file Private $bHidden As Boolean Private $H As Integer Private $bInside As Boolean Private $bAnim As Boolean Private Const HIDE_TIME As Float = 0.1 Private $sText As String Public Sub _new() 'dwgTitle_Font End Private Sub GetParent() As Expander Return Me.Parent End Public Sub GetContainer() As Container Return panContainer End Public Sub GetHidden() As Boolean Return Not panContainer.Visible End ' Private Sub UpdatePicture() ' ' If $bHidden Then ' $hIcon = Picture["img/8/side-right.png"] ' $hIconVoid = Picture["img/8/side-right-void.png"] ' Else ' $hIcon = Picture["img/8/side-bottom.png"] ' $hIconVoid = Picture["img/8/side-bottom-void.png"] ' Endif ' ' 'If $bInside Then ' btnExpand.Picture = $hIcon ' 'Else ' ' btnExpand.Picture = $hIconVoid ' 'Endif ' ' End Public Sub SetHidden(bHidden As Boolean) ' Dim DY As Integer ' Dim eTime As Float If Me.Parent.Design Then Return If bHidden = $bHidden Then Return $bHidden = bHidden dwgTitle.Refresh If $bHidden Then $H = Me.Parent.H ' If $bAnim And If Application.Animations Then ' eTime = Timer ' DY = $H - dwgTitle.H ' While Timer < (eTime + HIDE_TIME) ' Me.Parent.H = $H - ((Timer - eTime) / HIDE_TIME) * DY ' Wait ' Wend ' Endif Me.Parent.H = dwgTitle.H panContainer.Hide GetParent()._Hide() Else GetParent()._Show() panContainer.Show ' If $bAnim And If Application.Animations Then ' eTime = Timer ' DY = $H - dwgTitle.H ' While Timer < (eTime + HIDE_TIME) ' Me.Parent.H = dwgTitle.H + ((Timer - eTime) / HIDE_TIME) * DY ' Wait ' Wend ' Endif Me.Parent.H = $H Endif End Public Sub GetText() As String Return $sText End Public Sub SetText(sText As String) $sText = sText dwgTitle.Refresh End Public Sub GetFont() As Font Return dwgTitle.Font End Public Sub SetFont(hFont As Font) dwgTitle.Font = hFont dwgTitle.Refresh End Public Sub btnExpand_MouseDown() If Not Me.Enabled Then Return SetHidden(Not $bHidden) End Public Sub GetAnimated() As Boolean Return $bAnim End Public Sub SetAnimated(bAnim As Boolean) $bAnim = bAnim End Public Sub dwgTitle_Font() dwgTitle.H = Desktop.Scale + Max(Desktop.Scale * 2, ((dwgTitle.Font.Height + Desktop.Scale - 1) \ Desktop.Scale) * Desktop.Scale) End Public Sub dwgTitle_MouseDown() SetHidden(Not $bHidden) End Public Sub GetBorder() As Boolean Return panContainer.Border <> Border.None End Public Sub SetBorder(bBorder As Boolean) panContainer.Border = If(bBorder, Border.Plain, Border.None) End Public Sub dwgTitle_Draw() Dim iFlag As Integer Dim Y, W As Integer Dim D As Integer D = Desktop.Scale W = D * 3 / 2 Y = (Paint.H - W) / 2 If Not Me.Enabled Then iFlag += Draw.Disabled If $bInside And If Me.Enabled Then iFlag += Draw.Hover If System.RightToLeft Then Style.PaintArrow(Paint.W - W, Y, W, W, If($bHidden, Align.Left, Align.Bottom), iFlag) If $bInside Then Paint.DrawTextShadow($sText, 0, 0, Paint.W - W - D, Paint.H, Align.Normal) Paint.DrawText($sText, 0, 0, Paint.W - W - D, Paint.H, Align.Normal) Else Style.PaintArrow(0, Y, W, W, If($bHidden, Align.Right, Align.Bottom), iFlag) If $bInside Then Paint.DrawTextShadow($sText, W + D, 0, Paint.W, Paint.H, Align.Normal) Paint.DrawText($sText, W + D, 0, Paint.W, Paint.H, Align.Normal) Endif End Public Sub dwgTitle_Enter() If Me.Enabled Then $bInside = True dwgTitle.Mouse = Mouse.Pointing dwgTitle.Refresh Endif End Public Sub dwgTitle_Leave() $bInside = False dwgTitle.Mouse = Mouse.Default dwgTitle.Refresh End gambas-3.16.3/comp/src/gb.form/.src/Expander/FExpander.form000066400000000000000000000006061411575327000233000ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,65,59) Resizable = False Arrangement = Arrange.Vertical { dwgTitle DrawingArea MoveScaled(1,2,58,4) } { HBox1 HBox MoveScaled(2,9,49,41) Expand = True { Panel1 Panel MoveScaled(2,8,2,3) } { panContainer Panel MoveScaled(9,5,34,26) Expand = True Border = Border.Plain } } } gambas-3.16.3/comp/src/gb.form/.src/FInputBox.class000066400000000000000000000020421411575327000216720ustar00rootroot00000000000000' Gambas class file Private $sPrompt As String Private $sTitle As String Private $sValue As String Public Sub Run(sPrompt As String, Optional sTitle As String, sDefault As String) As String If Not sTitle Then Try sTitle = Application.ActiveWindow.Title If Error Then sTitle = Application.Name Endif $sPrompt = sPrompt $sTitle = sTitle $sValue = sDefault If Me.ShowModal() Then Return $sValue End Public Sub Form_Open() lblMessage.Text = $sPrompt txtValue.Text = $sValue txtValue.H = txtValue.Font.H + Desktop.Scale * 2 Me.Title = $sTitle panBox.W = Max(Desktop.Scale * 48, lblMessage.W) panBox.Arrangement = Arrange.Vertical txtValue.SelectAll txtValue.SetFocus End Public Sub btnCancel_Click() Me.Close End Public Sub btnOK_Click() $sValue = txtValue.Text Me.Close(True) End ' Public Sub Form_Arrange() ' ' Me.Resize(btnOK.Parent.X + btnOK.W + Desktop.Scale, Max(btnOK.Parent.Y + btnCancel.Y + btnCancel.H, txtValue.Parent.Y + txtValue.Y + txtValue.H) + Desktop.Scale) ' ' End gambas-3.16.3/comp/src/gb.form/.src/FInputBox.form000066400000000000000000000012761411575327000215400ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,16) Resizable = False Arrangement = Arrange.Horizontal AutoResize = True Spacing = True Margin = True { panBox Panel MoveScaled(1,1,48,12) AutoResize = True Spacing = True { lblMessage TextLabel MoveScaled(0,0,48,7) AutoResize = True } { txtValue TextBox MoveScaled(0,8,15,4) } } { Panel1 Panel MoveScaled(50,1,2,10) } { VBox2 VBox MoveScaled(53,1,14,9) Spacing = True { btnOK Button MoveScaled(0,0,14,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(0,5,14,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form/.src/File/000077500000000000000000000000001411575327000176465ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/File/Bookmark.class000066400000000000000000000003221411575327000224370ustar00rootroot00000000000000' Gambas class file Property Name As String Use $sName Property Path As String Use $sPath Property Icon As String Use $sIcon Private Sub Path_Write(Value As String) $sPath = Main.NormalizePath(Value) End gambas-3.16.3/comp/src/gb.form/.src/File/Bookmark/000077500000000000000000000000001411575327000214135ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/File/Bookmark/CBookmark.class000066400000000000000000000015411411575327000243130ustar00rootroot00000000000000' Gambas class file Public Name As String Public Link As String Public Icon As String Public Index As Integer Property Read Path As String Public Sub _new(sLink As String, Optional sName As String, sIcon As String) {Link} = sLink SetName(sName) SetIcon(sIcon) End Private Function Path_Read() As String Dim sLink As String = {Link} If Left(sLink) <> "/" Then sLink = Mid$(sLink, 2) If Len(sLink) > 1 And If Right(sLink) = "/" Then sLink = Left(sLink, -1) Return sLink End Public Sub SetName(sName As String) If Not sName Then sName = File.Name({Link}) Name = sName End Public Sub SetIcon(sIcon As String) If Not sIcon Then sIcon = "icon:/small/bookmark" Icon = sIcon End Public Sub IsEditable() As Boolean Return Left({Link}) = "/" End Public Sub Exist() As Boolean Return IsDir(Me.Path) End gambas-3.16.3/comp/src/gb.form/.src/File/Bookmark/CBookmarkList.class000066400000000000000000000074651411575327000251620ustar00rootroot00000000000000' Gambas class file Inherits CBookmark[] Property Private As Collection[] Private $aPrivate As Collection[] Private $iBookmarkAge As Integer Public Sub _new() Load End Public Sub AddBookmark(sLink As String, Optional sName As String, sIcon As String) Dim hBookmark As CBookmark hBookmark = New CBookmark(sLink, sName, sIcon) Me.Add(hBookmark) End Public Sub RemoveBookmark(sLink As String) Dim hBookmark As CBookmark Dim iInd As Integer hBookmark = FindBookmark(sLink) If Not hBookmark Then Return iInd = Me.Find(hBookmark) Me.Remove(iInd) End Public Sub Load() Dim iInd As Integer Dim hSettings As Settings Dim aBookmark As String[] Dim cPrivate As Collection Dim hBookmark As Bookmark If $iBookmarkAge = Bookmarks._Age Then Return $iBookmarkAge = Bookmarks._Age Me.Clear() AddBookmark("$" & System.User.Home, ("Home"), "icon:/small/home") If Component.IsLoaded("gb.desktop") Then AddBookmark("$" & Desktop.Path, ("Desktop"), "icon:/small/desktop") Endif AddBookmark("$/", ("System"), "icon:/small/system") For Each hBookmark In Bookmarks._GetAll() Try AddBookmark("#" & hBookmark.Path, hBookmark.Name, hBookmark.Icon) Next If $aPrivate Then For Each cPrivate In $aPrivate If cPrivate["Path"] Then Try AddBookmark("#" & cPrivate["Path"], cPrivate["Name"], cPrivate["Icon"]) Next Endif If Component.IsLoaded("gb.settings") Then hSettings = New Settings("gb.form") For iInd = 1 To hSettings["/Bookmarks/Count", 0] aBookmark = hSettings["/Bookmarks/Bookmark" & CStr(iInd)] AddBookmark(aBookmark[0], aBookmark[1]) Next Endif End Public Sub Save() Dim hSettings As Settings Dim iInd As Integer Dim hBookmark As CBookmark If Not Component.IsLoaded("gb.settings") Then Return hSettings = New Settings("gb.form") hSettings.Clear("/Bookmarks") For Each hBookmark In Me If Left(hBookmark.Link) <> "/" Then Continue Inc iInd hSettings["/Bookmarks/Bookmark" & CStr(iInd)] = [hBookmark.Link, hBookmark.Name] Next hSettings["/Bookmarks/Count"] = iInd hSettings.Save End Private Function Private_Read() As Collection[] Return $aPrivate End Private Sub Private_Write(Value As Collection[]) $aPrivate = Value Load End Public Sub FindBookmark({Link} As String) As CBookmark Dim hBookmark As CBookmark For Each hBookmark In Me If Not hBookmark.Exist() Then Continue If hBookmark.Link = {Link} Then Return hBookmark Next If Left({Link}) = "/" Then For Each hBookmark In Me If Not hBookmark.Exist() Then Continue If hBookmark.Path = {Link} Then Return hBookmark Next Endif End Public Sub FindBest(sDir As String) As CBookmark Dim hBookmark As CBookmark Dim sBest As String Dim iScore As Integer Dim aBook As String[] Dim aDir As String[] Dim iInd As Integer aDir = Split(sDir, "/") For Each hBookmark In Me If Not hBookmark.Exist() Then Continue aBook = Split(hBookmark.Path, "/") For iInd = 0 To Min(aDir.Max, aBook.Max) If aBook[iInd] <> aDir[iInd] Then Break Next 'DEBUG "Comp:";; aBook.Join("|");; aDir.Join("|");; "=";; iInd If iInd > iScore And If iInd > aBook.Max Then iScore = iInd sBest = hBookmark.Link Endif Next If iScore <= 1 Then sBest = "$/" Return FindBookmark(sBest) End Public Sub GetEditableCount() As Integer Dim hBookmark As CBookmark Dim iCount As Integer For Each hBookmark In Me If hBookmark.IsEditable() Then Inc iCount Next Return iCount End Public Sub GetEditableBookmarks() As CBookmark[] Dim hBookmark As CBookmark Dim hBookmarks As New CBookmark[] For Each hBookmark In Me If hBookmark.IsEditable() Then hBookmarks.Add(hBookmark) Next Return hBookmarks End gambas-3.16.3/comp/src/gb.form/.src/File/Bookmark/FEditBookmark.class000066400000000000000000000054531411575327000251320ustar00rootroot00000000000000' Gambas class file Private $hBookmarkList As CBookmarkList Private $hBookmarks As CBookmark[] Private $hCompletion As FileCompletion Public Sub Run(hBookmarkList As CBookmarkList) $hBookmarkList = hBookmarkList FEditBookmark.ShowModal() End Public Sub Form_Open() $hCompletion = New FileCompletion(txtPath) $hBookmarks = $hBookmarkList.GetEditableBookmarks() With tvwBookmark .Columns.Count = 2 .Columns[0].Text = ("Name") .Columns[1].Text = ("Path") .Columns[0].Width = Desktop.Scale * 24 .Rows.Count = $hBookmarkList.GetEditableCount() .Rows.Height = -1 End With End ' Public Sub txtPath_Click() ' ' Dialog.Path = txtPath.Text ' If Dialog.SelectDirectory() Then Return ' txtPath.Text = Dialog.Path ' ' End Public Sub btnClose_Click() Me.Close End Public Sub tvwBookmark_Data(Row As Integer, Column As Integer) Select Case Column Case 0 tvwBookmark.Data.Text = $hBookmarks[Row].Name Case 1 tvwBookmark.Data.Text = $hBookmarks[Row].Link End Select tvwBookmark.Data.Padding = 4 End Public Sub tvwBookmark_Click() Dim hBookmark As CBookmark = $hBookmarks[tvwBookmark.Row] If Not hBookmark.IsEditable() Then Return If tvwBookmark.Column = 0 Then tvwBookmark.Edit Else tvwBookmark.EditWith(txtPath) $hCompletion.Close Endif End Public Sub btnUp_Click() Dim iRow As Integer = tvwBookmark.Row Dim iOther As Integer If iRow <= 0 Then Return tvwBookmark.Save iOther = $hBookmarkList.Find($hBookmarks[iRow - 1]) iRow = $hBookmarkList.Find($hBookmarks[iRow]) Swap $hBookmarkList[iRow], $hBookmarkList[iOther] $hBookmarks = $hBookmarkList.GetEditableBookmarks() tvwBookmark.Refresh Dec tvwBookmark.Row End Public Sub btnDown_Click() Dim iRow As Integer = tvwBookmark.Row Dim iOther As Integer If iRow < 0 Or If iRow = $hBookmarks.Max Then Return tvwBookmark.Save iOther = $hBookmarkList.Find($hBookmarks[iRow + 1]) iRow = $hBookmarkList.Find($hBookmarks[iRow]) Swap $hBookmarkList[iRow], $hBookmarkList[iOther] $hBookmarks = $hBookmarkList.GetEditableBookmarks() tvwBookmark.Refresh Inc tvwBookmark.Row End Public Sub btnDelete_Click() Dim iRow As Integer = tvwBookmark.Row If iRow < 0 Then Return If Message.Delete(("Do you really want to remove this bookmark?"), ("Remove"), ("Cancel")) = 2 Then Return iRow = $hBookmarkList.Find($hBookmarks[iRow]) $hBookmarkList.Remove(iRow) $hBookmarks = $hBookmarkList.GetEditableBookmarks() Dec tvwBookmark.Rows.Count tvwBookmark.Refresh tvwBookmark.Row = -1 End Public Sub tvwBookmark_Save(Row As Integer, Column As Integer, Value As String) If Column = 0 Then If Value Then $hBookmarks[Row].SetName(Trim(Value)) Else If Value Then $hBookmarks[Row].Link = Value Endif End gambas-3.16.3/comp/src/gb.form/.src/File/Bookmark/FEditBookmark.form000066400000000000000000000020751411575327000247650ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,90,47) Text = ("Edit bookmarks") Icon = Picture["icon:/small/bookmark"] Arrangement = Arrange.Vertical Spacing = True Margin = True { tvwBookmark TableView MoveScaled(1,1,88,38) Expand = True Mode = Select.Single Header = GridView.Horizontal } { HBox1 HBox MoveScaled(2,41,87,4) Spacing = True { btnUp Button MoveScaled(0,0,18,4) Text = Shortcut(("Up"), "U") Picture = Picture["icon:/small/up"] } { btnDown Button MoveScaled(19,0,18,4) Text = Shortcut(("Down"), "D") Picture = Picture["icon:/small/down"] } { btnDelete Button MoveScaled(38,0,18,4) Text = Shortcut(("Remove"), "R") Picture = Picture["icon:/small/delete"] } { Panel1 Panel MoveScaled(64,0,1,4) Expand = True } { btnClose Button MoveScaled(68,0,18,4) Text = ("Close") Cancel = True } } { txtPath TextBox MoveScaled(47.25,26.75,24,4) Visible = False Ignore = True Border = False } } gambas-3.16.3/comp/src/gb.form/.src/File/Bookmarks.class000066400000000000000000000024141411575327000226260ustar00rootroot00000000000000' Gambas class file ''' This class allows to globally manage a list of file bookmarks. Export '' Return the number of bookmarks. Static Property Read Count As Integer Static Private $aBookmark As New Bookmark[] Static Public _Age As Integer = 1 '' Add a new bookmark to the list. '' '' - ~Path~ is the file path of the bookmark. '' - ~Name~ is the name of the bookmark. '' - ~Icon~ is the name of the stock icon associated with the bookmark. Static Public Sub Add(Path As String, Optional Name As String, Icon As String) Dim hBookmark As Bookmark hBookmark = New Bookmark With hBookmark .Name = Name .Path = Main.NormalizePath(Path) .Icon = Icon End With $aBookmark.Add(hBookmark) Inc _Age End '' Remove all bookmarks associated with a specific path. Static Public Sub Remove(Path As String) Dim I As Integer Path = Main.NormalizePath(Path) While I < $aBookmark.Count If $aBookmark[I].Path = Path Then $aBookmark.Remove(I) Else Inc I Endif Wend Inc _Age End Static Private Function Count_Read() As Integer Return $aBookmark.Count End '' Remove all bookmarks. Static Public Sub Clear() $aBookmark.Clear Inc _Age End Static Public Sub _GetAll() As Bookmark[] Return $aBookmark End gambas-3.16.3/comp/src/gb.form/.src/File/CTaskPreview.class000066400000000000000000000042771411575327000232560ustar00rootroot00000000000000' Gambas class file Inherits Task Private $sDir As String Private $iSize As Integer Private $aPreview As String[] Public Sub _new(sDir As String, iSize As Integer, aPreview As String[]) $sDir = sDir $iSize = iSize $aPreview = aPreview End Private Sub PrintIcon(sFile As String, hImage As Image) Dim hIcon As Image Dim sTemp As String hIcon = New Image(hImage.W + 4, hImage.H + 4, Color.Transparent) Paint.Begin(hIcon) Paint.AntiAlias = False Paint.LineWidth = 2 Paint.Rectangle(0, 0, hIcon.W, hIcon.H) Paint.Background = Color.Gray Paint.Stroke Paint.End hIcon.DrawImage(hImage, 2, 2) sTemp = File.SetExt(Temp$(), "png") hIcon.Save(sTemp) Print sFile; "\t"; sTemp End Public Sub Main() Dim sFile As String Dim sExt As String Dim sPath As String Dim hImage As Image Dim hSvgImage As SvgImage Application.Priority += 10 For Each sFile In $aPreview sPath = $sDir &/ sFile sExt = LCase(File.Ext(sFile)) If sExt = "jpg" Or If sExt = "jpeg" Or If sExt = "png" Or If sExt = "gif" Or If sExt = "bmp" Or If sExt = "xpm" Then If Stat(sPath).Size > 4194304 Then Continue Try hImage = Image.Load(sPath) If Error Then Continue If Not (hImage.Width = $iSize And hImage.Height = $iSize) Then If hImage.Width > hImage.Height Then hImage = hImage.Stretch($iSize, ($iSize * hImage.Height) \ hImage.Width) Else hImage = hImage.Stretch(($iSize * hImage.Width) \ hImage.Height, $iSize) Endif Endif PrintIcon(sFile, hImage) Else If sExt = "svg" Or If sExt = "svgz" Then Try hSvgImage = SvgImage.Load(sPath) If Error Then Continue If hSvgImage.Width > hSvgImage.Height Then hSvgImage.Resize($iSize, $iSize * hSvgImage.Height / hSvgImage.Width) Else hSvgImage.Resize($iSize * hSvgImage.Width / hSvgImage.Height, $iSize) Endif hImage = New Image(hSvgImage.Width, hSvgImage.Height, Color.Transparent) Paint.Begin(hImage) hSvgImage.Paint() Paint.End PrintIcon(sFile, hImage) Endif Next Print "." Do Sleep 3600 Loop End gambas-3.16.3/comp/src/gb.form/.src/File/Chooser/000077500000000000000000000000001411575327000212505ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/File/Chooser/DirButton.class000066400000000000000000000045661411575327000242240ustar00rootroot00000000000000' Gambas class file Inherits DrawingArea Event Click Property Path As String Property Label As String Private $hObs As Observer Private $sPath As String Private $sText As String Private $sLabel As String Public Sub _new() $hObs = New Observer(Me) As "DirButton" Me.Mouse = Mouse.Pointing End Private Sub Ellipsize(sText As String, hFont As Font, W As Integer) As String Dim sCar As String = "…" Dim iPos As Integer If Not sText Then Return If hFont.TextWidth(sText) <= W Then Return sText For iPos = 1 To String.Len(sText) If hFont.TextWidth(String.Left(sText, iPos) & sCar) > W Then Break Next Return String.Left(sText, iPos - 1) & sCar End Public Sub DirButton_Draw() Paint.Background = Color.LightForeground Paint.LineWidth = 1.5 Paint.MoveTo(Desktop.Scale / 2, Paint.H / 2 - Desktop.Scale / 2) Paint.LineTo(Desktop.Scale, Paint.H / 2) Paint.LineTo(Desktop.Scale / 2, Paint.H / 2 + Desktop.Scale / 2) Paint.LineCap = Paint.LineCapRound Paint.Stroke Paint.Background = Style.ForegroundOf(Me) If Me.Hovered And If Not Me.Design Then 'Paint.Background = Color.SetAlpha(Paint.Background, 128) Paint.DrawTextShadow($sText, Desktop.Scale * 1.75, 0, Paint.W - Desktop.Scale, Paint.H, Align.Left) 'Paint.Background = Color.SetAlpha(Paint.Background, 0) Endif Paint.DrawText($sText, Desktop.Scale * 1.75, 0, Paint.W - Desktop.Scale, Paint.H, Align.Left) End Public Sub DirButton_Enter() Me.Refresh End Public Sub DirButton_Leave() Me.Refresh End Public Sub DirButton_Font() UpdateSize End Private Sub GetText() As String If $sLabel Then Return $sLabel Return File.Name($sPath) End Private Sub UpdateSize() Dim W As Integer Dim sText As String sText = GetText() W = Min(Desktop.Scale * 2 + Me.Font.TextWidth(sText), Desktop.Scale * 20) $sText = Ellipsize(sText, Me.Font, W - Desktop.Scale * 2) If $sText <> sText Then Me.Tooltip = sText Else Me.Tooltip = "" Endif Me.W = W End Public Sub DirButton_MouseDown() If Me.Design Or If Me.Parent.Design Then Return Raise Click End Private Function Path_Read() As String Return $sPath End Private Sub Path_Write(Value As String) $sPath = Value UpdateSize End Private Function Label_Read() As String Return $sLabel End Private Sub Label_Write(Value As String) $sLabel = Value End gambas-3.16.3/comp/src/gb.form/.src/File/Chooser/DirChooser.class000066400000000000000000000115321411575327000243420ustar00rootroot00000000000000' Gambas class file Inherits UserControl Export Public Const _Properties As String = "*,Border=True,Root,Picture,ShowHidden,ShowFile,ShowDetailed,ShowPreview,ShowBookmark=True,ShowSplitter=True,ShowToolbar=True" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "Chooser" Property Root As String Property Picture As Picture Property SelectedPath As String Property Value As String Property ShowFile As Boolean Property ShowHidden As Boolean Property ShowDetailed As Boolean Property ShowBookmark As Boolean Property ShowSplitter As Boolean Property ShowPreview As Boolean '' Return or set if the toolbar is visible. Property ShowToolbar As Boolean Property Bookmarks As Collection[] Property Icon As Picture Property Settings As Variant[] Property Read DirView As DirView Property Read FileView As FileView Property Border As Boolean '' Return or set a list of file filters that identify files that can be uncompressed in response of the [../.uncompress] event. Property UncompressFilter As String[] Event Change Event Activate Event Icon(Path As String) '' Raise when a specific compressed file must be uncompressed. '' '' - ~Path~ is the path of the compressed file. Event Uncompress(Path As String) Private frmChooser As FDirChooser Public Sub _new() frmChooser = New FDirChooser(Me, False) As "frmChooser" Object.Attach(frmChooser, Me, "frmChooser") 'Object.Delegate(frmChooser, ME) End Public Sub frmChooser_Open() Last.Form_Open End Public Sub frmChooser_Change() Raise Change End Public Sub frmChooser_Select() Raise Activate End Public Sub frmChooser_GetIcon(Path As String) Raise Icon(Path) End Public Sub frmChooser_Uncompress(Path As String) Raise Uncompress(Path) End Private Function SelectedPath_Read() As String Return frmChooser.GetDir() End Private Sub SelectedPath_Write(sDir As String) frmChooser.SetDir(sDir) End Private Function ShowFile_Read() As Boolean Return frmChooser.GetFileVisible() End Private Sub ShowFile_Write(bShowFile As Boolean) frmChooser.SetFileVisible(bShowFile) End Private Function ShowHidden_Read() As Boolean Return frmChooser.GetShowHidden() End Private Sub ShowHidden_Write(bShowHidden As Boolean) frmChooser.SetShowHidden(bShowHidden) End Private Function ShowDetailed_Read() As Boolean Return frmChooser.GetShowDetailed() End Private Sub ShowDetailed_Write(bShowDetailed As Boolean) frmChooser.SetShowDetailed(bShowDetailed) End Private Function Root_Read() As String Return frmChooser.GetRoot() End Private Sub Root_Write(Value As String) frmChooser.SetRoot(Value) End Private Function Picture_Read() As Picture Return frmChooser.GetPicture() End Private Sub Picture_Write(Value As Picture) frmChooser.SetPicture(Value) End Private Function Value_Read() As String Return frmChooser.GetDir() End Private Sub Value_Write(Value As String) frmChooser.SetDir(Value) End Private Function ShowBookmark_Read() As Boolean Return frmChooser.IsBookmarkVisible() End Private Sub ShowBookmark_Write(Value As Boolean) frmChooser.ShowBookmark(Value) End Private Function Bookmarks_Read() As Collection[] Return frmChooser.GetPrivateBookmarks() End Private Sub Bookmarks_Write(Value As Collection[]) frmChooser.SetPrivateBookmarks(Value) End Private Function Icon_Read() As Picture Return frmChooser.FileView.Icon End Private Sub Icon_Write(Value As Picture) frmChooser.FileView.Icon = Value frmChooser.DirView.Icon = Value End Private Function Settings_Read() As Variant[] Return frmChooser.GetSettings() End Private Sub Settings_Write(Value As Variant[]) frmChooser.SetSettings(Value) End Private Function ShowSplitter_Read() As Boolean Return frmChooser.GetSplitter() End Private Sub ShowSplitter_Write(Value As Boolean) frmChooser.SetSplitter(Value) End ' PUBLIC SUB frmChooser_ShowHidden() ' ' RAISE ShowHidden ' ' END Public Sub Reload() frmChooser.Reload End Private Function FileView_Read() As FileView Return frmChooser.FileView End Private Function DirView_Read() As DirView Return frmChooser.DirView End Private Function Border_Read() As Boolean Return frmChooser.HasBorder() End Private Sub Border_Write(Value As Boolean) frmChooser.SetBorder(Value) End Private Function ShowPreview_Read() As Boolean Return frmChooser.GetShowPreview() End Private Sub ShowPreview_Write(Value As Boolean) frmChooser.SetShowPreview(Value) End Private Function ShowToolbar_Read() As Boolean Return frmChooser.GetShowToolbar() End Private Sub ShowToolbar_Write(Value As Boolean) frmChooser.SetShowToolbar(Value) End Private Function UncompressFilter_Read() As String[] Return frmChooser.UncompressFilter End Private Sub UncompressFilter_Write(Value As String[]) frmChooser.UncompressFilter = Value End gambas-3.16.3/comp/src/gb.form/.src/File/Chooser/FDirChooser.class000066400000000000000000001044061411575327000244530ustar00rootroot00000000000000' Gambas class file Class Desktop Public (DirView) As DirView Public (FileView) As FileView Event Change Event {Select} Event GetIcon(Path As String) Event ShowHidden Event Cancel Event Uncompress(Path As String) Property AutoExt As Boolean Property UncompressFilter As String[] Private mnuBookmark As Menu Private mnuEditBookmark As Menu Private mnuShowHiddenFiles As Menu Private mnuShowDetailed As Menu Private mnuShowPreview As Menu Private mnuUncompress As Menu Private mnuRename As Menu Private mnuCopy As Menu Private mnuDelete As Menu Private mnuDeleteDir As Menu Private mnuProperty As Menu Private $bView As Boolean Private $aFilter As String[] Private $bFile As Boolean Private $hBookmarkList As CBookmarkList Private $hCurrentBookmark As CBookmark Private $bShowBookmark As Boolean 'Private $hWatch As Watcher 'Private $bPressed As Boolean Private $sLast As String Private $aHistory As New String[] Private $iHistory As Integer = -1 Private $bNoSaveHistory As Boolean Static Private $aIconSize As Integer[] = [16, 22, 32, 48, 64, 96, 128, 192, 256] Static Private $hGradient As Image Private $bAutoExt As Boolean Private $sLastExt As String Private $aUncompressFilter As String[] Public Sub _new(Optional bFile As Boolean) Dim hChild As Control Dim iCol As Integer DirView = dvwChoose FileView = fvwChoose $hGradient = New Image(dwgGradient.W, dwgGradient.H, Color.Transparent) Paint.Begin($hGradient) iCol = Style.BackgroundOf(Me) Paint.Brush = Paint.LinearGradient(0, 0, Paint.W, 0, [Color.SetAlpha(iCol, 255), iCol], [0, 1]) Paint.Rectangle(0, 0, Paint.W, Paint.H) Paint.Fill Paint.End ScrollArea(DirView.Proxy.Proxy.Proxy).Shadow = True For Each hChild In FileView.Children Do If hChild Is ScrollArea Then ScrollArea(hChild).Shadow = True Break Endif hChild = hChild.Proxy If Not hChild Then Break Loop Next $bShowBookmark = True $hBookmarkList = New CBookmarkList sldIconSize.Value = $aIconSize.Find(32) 'btnParent.Picture = Main.GetArrow(Align.Left, 16).Picture '$hWatch = New Watcher(fvwChoose) As "FileView" FillMenu SetRoot() $bFile = bFile If Not bFile Then UpdateFilterPanel UpdateView Else btnView_Click btnView.Visible = False txtFile.Visible = True cmbFilter.Visible = True SetMulti(False) 'SetFont(Me.Font) SetFilter() Endif SetBookmark($hBookmarkList.FindBest(System.User.Home)) $sLast = dvwChoose.Current SaveToHistory End ' Public Sub txtDir_Change() ' ' $sActivate = txtDir.Text ' dvwChoose.Current = txtDir.Text ' ' End ' Public Sub txtDir_Click() ' ' 'cmbDir_Activate ' ' End Private Sub UpdateLabelDir() Dim sDir As String Dim sName As String Dim sPath As String Dim hDirButton As DirButton Dim hCtrl As Control Dim aCtrl As New Control[] For Each hCtrl In panDir.Children If hCtrl Is DirButton Then aCtrl.Add(hCtrl) Next For Each hCtrl In aCtrl hCtrl.Delete Next sDir = dvwChoose.Current sPath = "/" For Each sName In Split(Mid$(sDir, 2), "/") sPath &/= sName If Not IsBookmarkVisible() Then If dvwChoose.Root Begins sPath Then Continue Endif hDirButton = New DirButton(panDir) As "DirButton" hDirButton.Path = sPath Next btnParent.Enabled = sDir <> "/" dwgGradient.Raise End Public Sub DirButton_Click() Dim sDir As String = Last.Path If sDir = dvwChoose.Current Then ' Just refresh the file view DirCache[dvwChoose.Current].Clear fvwChoose.Reload Else SetDir(sDir) Endif End Public Sub dvwChoose_Click() If dvwChoose.Current = $sLast Then Return SaveToHistory $sLast = dvwChoose.Current If panView.Visible Then fvwChoose.Dir = dvwChoose.Current fvwChoose.Reload Endif UpdateLabelDir ' IF $sActivate THEN ' IF $sActivate = dvwChoose.Current THEN ' IF cmbDir.Find($sActivate) = 0 THEN cmbDir.Add($sActivate) ' ENDIF ' $sActivate = "" ' ENDIF If txtFile.ReadOnly Then txtFile.Text = "" Else txtFile_Change Endif Raise Change End Public Sub Form_Open() 'DirView = dvwChoose 'FileView = fvwChoose btnProperty.Visible = Component.IsLoaded("gb.desktop") UpdateLabelDir 'If $bFile Then txtFile.SetFocus Raise Change End Private Sub UpdateZoom() panIconSize.Visible = Not fvwChoose.ShowDetailed And $bView And fvwChoose.Visible End Private Sub UpdateView() panView.Visible = $bView mnuShowDetailed.Visible = $bView mnuShowPreview.Visible = $bView btnDetail.Visible = $bView btnPreview.Visible = $bView FillMenu UpdateZoom End Public Sub btnView_Click() $bView = Not $bView UpdateView If $bView Then fvwChoose.Dir = dvwChoose.Current splChoose.Layout = [1, 2] Endif UpdateZoom End Public Sub mnuShowDetailed_Click() fvwChoose.ShowDetailed = Not fvwChoose.ShowDetailed mnuShowDetailed.Checked = fvwChoose.ShowDetailed Object.Lock(btnDetail) btnDetail.Value = fvwChoose.ShowDetailed Object.Unlock(btnDetail) UpdateZoom ' If fvwChoose.ShowDetailed Then ' btnDetailed.Picture = Picture["icon:/small/view-icon"] ' Else ' btnDetailed.Picture = Picture["icon:/small/view-detail"] ' Endif End ' Private Sub AddToHistory(sDir As String) ' ' Dim iInd As Integer ' ' iInd = $aHistory.Find(sDir) ' If iInd >= 0 Then $aHistory.Remove(iInd) ' $aHistory.Add(sDir) ' While $aHistory.Count > 16 ' $aHistory.Remove(0) ' Wend ' ' Object.Lock(txtDir) ' txtDir.List = $aHistory ' Object.Unlock(txtDir) ' ' End Private Sub UpdateBookmarkButton() If IsBookmarkVisible() And If $hCurrentBookmark Then btnBookmark.Text = Replace($hCurrentBookmark.Name, "&", "&&") btnBookmark.Picture = Picture[$hCurrentBookmark.Icon] btnRoot.Picture = Picture["icon:/small/system"] mnuEditBookmark.Enabled = $hBookmarkList.GetEditableCount() > 0 btnBookmark.Show sepBookmark.Show dvwChoose.HideRoot = True Else 'btnBookmark.Text = File.Name(dvwChoose.Root) btnRoot.Picture = dvwChoose.Picture 'Picture["icon:/small/directory"] dvwChoose.HideRoot = False btnBookmark.Hide sepBookmark.Hide Endif btnBookmark.Tooltip = dvwChoose.Root End Private Sub SetBookmark(hBookmark As CBookmark) 'If Not hBookmark Then Return $hCurrentBookmark = hBookmark If hBookmark Then SetRoot(hBookmark.Path) dvwChoose.Picture = Picture[hBookmark.Icon] Endif UpdateBookmarkButton End Public Sub SetDir(sDir As String) If sDir = dvwChoose.Current Then Return If IsBookmarkVisible() Then SetBookmark($hBookmarkList.FindBest(sDir)) Endif dvwChoose.Current = sDir End Public Function GetDir() As String Return dvwChoose.Current End Public Function GetShowDetailed() As Boolean Return fvwChoose.ShowDetailed End Public Sub SetShowDetailed(bShowDetailed As Boolean) If fvwChoose.ShowDetailed <> bShowDetailed Then mnuShowDetailed_Click End Public Function GetFileVisible() As Boolean Return panView.Visible End Public Sub SetFileVisible(bVisible As Boolean) If panView.Visible <> bVisible Then btnView_Click End Public Function GetShowHidden() As Boolean Return fvwChoose.ShowHidden End Private Sub UpdateShowHidden() dvwChoose.ShowHidden = fvwChoose.ShowHidden mnuShowHiddenFiles.Checked = fvwChoose.ShowHidden End Public Sub mnuShowHiddenFiles_Click() fvwChoose.ShowHidden = Not fvwChoose.ShowHidden UpdateShowHidden Raise ShowHidden End Public Sub mnuShowPreview_Click() btnPreview.Value = Not btnPreview.Value End Public Sub SetShowHidden(bShowHidden As Boolean) If bShowHidden = fvwChoose.ShowHidden Then Return mnuShowHiddenFiles_Click End Public Function GetMulti() As Boolean Return fvwChoose.Mode = Select.Multiple End Public Sub SetMulti(bMulti As Boolean) fvwChoose.Mode = If(bMulti, Select.Multiple, Select.Single) End Public Function GetPath() As String If GetMulti() Then Return 'CheckFile() If txtFile.Text Then Return dvwChoose.Current &/ txtFile.Text Endif End Public Sub SetPath(sPath As String) Dim sMsg As String If Not IsDir(File.Dir(sPath)) Then sMsg = ("Directory not found.") If File.IsHidden(sPath) Then SetShowHidden(True) SetDir(File.Dir(sPath)) If Not GetMulti() Then fvwChoose.Current = File.Name(sPath) If txtFile.ReadOnly Then txtFile.Text = fvwChoose.Current Else txtFile.Text = File.Name(sPath) Endif CheckAutomaticExtension(True) Endif If sMsg Then Message.Error(sMsg & "\n\n" & sPath) End Public Function GetPaths() As String[] Dim aPath As New String[] Dim sFile As String Dim sPath As String If GetMulti() Then For Each sFile In fvwChoose.Selection aPath.Add(dvwChoose.Current &/ sFile) Next Else sPath = GetPath() If sPath Then aPath.Add(sPath) Endif Return aPath End Public Sub fvwChoose_Select() If fvwChoose.Current Or If txtFile.ReadOnly Then txtFile.Text = fvwChoose.Current Endif If $bFile Then Raise Change End Public Sub SetShowDirectory(bShow As Boolean) fvwChoose.ShowDirectory = bShow End Public Function GetShowDirectory() As Boolean Return fvwChoose.ShowDirectory End ' Public Sub SetFont(hFont As Font) ' ' 'fvwChoose.Font = hFont ' ' DEC fvwChoose.Font.Grade ' ' End Public Sub fvwChoose_Activate() If IsDir(dvwChoose.Current &/ fvwChoose.Current) Then dvwChoose.Current &/= fvwChoose.Current Else If CheckFile() Then Return Raise {Select} Endif End Public Sub SetFilter(Optional aFilter As String[]) Dim iInd As Integer cmbFilter.Clear $aFilter = New String[] If aFilter Then If Odd(aFilter.Count) Then aFilter.Remove(aFilter.Max) For iInd = 0 To aFilter.Max Step 2 If aFilter[iInd] = "*" Then Continue $aFilter.Add(aFilter[iInd]) cmbFilter.Add(aFilter[iInd + 1] & " (" & aFilter[iInd] & ")") Next Endif $aFilter.Add("*") cmbFilter.Add(("All files (*)")) cmbFilter.Index = 0 UpdateFilterPanel End Public Sub SetFilterIndex(iInd As Integer) If iInd < 0 Then iInd = cmbFilter.Count - 1 Try cmbFilter.Index = iInd End Public Sub GetFilterIndex() As Integer Return cmbFilter.Index End Public Function GetFilter() As String[] Dim iInd As Integer Dim aFilter As New String[] For iInd = 0 To $aFilter.Max aFilter.Add($aFilter[iInd]) aFilter.Add(cmbFilter[iInd].Text) Next Return aFilter End Private Sub CheckAutomaticExtension(Optional bGetCurrentFilter As Boolean) Dim aFilter As String[] Dim sFilter As String Dim sFile As String If Not $bAutoExt Or If Not txtFile.Visible Or If txtFile.ReadOnly Or If txtFile.Length = 0 Then Return aFilter = fvwChoose.Filter If Not aFilter Or If aFilter.Count > 1 Then Return sFilter = aFilter[0] If sFilter Not Begins "*." Then Return sFilter = Mid$(sFilter, 2) If InStr(sFilter, "*") Then Return sFile = txtFile.Text If bGetCurrentFilter Then $sLastExt = sFilter If $sLastExt And If sFile Ends $sLastExt Then sFile = Left(sFile, -Len($sLastExt)) txtFile.Text = sFile & sFilter $sLastExt = sFilter End Public Sub cmbFilter_Click() fvwChoose.Filter = Split($aFilter[cmbFilter.Index], ";", Chr$(34), True) CheckAutomaticExtension End Public Sub dvwChoose_Activate() If Not $bFile Then Raise {Select} End Public Sub fvwChoose_Icon(Path As String) Raise GetIcon(Path) End Public Sub dvwChoose_Icon(Path As String) Raise GetIcon(Path) End Public Sub SetReadOnly(bReadOnly As Boolean) If Not $bFile Then Return txtFile.ReadOnly = bReadOnly End Public Sub GetReadOnly() As Boolean If Not $bFile Then Return Return txtFile.ReadOnly End Public Sub SetPicture(hPict As Picture) dvwChoose.Picture = hPict If Not IsBookmarkVisible() Then UpdateBookmarkButton End Public Sub GetPicture() As Picture Return dvwChoose.Picture End Public Sub txtFile_GotFocus() If Not txtFile.ReadOnly Then txtFile.SelectAll End ' Private Sub GetRealLink(sLink As String) As String ' ' If Left(sLink) <> "/" Then sLink = Mid$(sLink, 2) ' Return sLink ' ' End Public Sub mnuBookmark_Click() Dim hMenu As Menu = Last Dim sLink As String = hMenu.Tag Dim hBookmark As CBookmark = $hBookmarkList.FindBookmark(sLink) SetBookmark(hBookmark) btnBookmark_DblClick End Public Sub SetRoot(Optional sRoot As String) Dim hBookmark As CBookmark If sRoot <> "/" And If Right(sRoot) = "/" Then sRoot = Left(sRoot, -1) If sRoot = dvwChoose.Root Then Return Try dvwChoose.Root = sRoot hBookmark = $hBookmarkList.FindBookmark(sRoot) SetBookmark(hBookmark) End Public Sub GetRoot() As String Return dvwChoose.Root End Public Sub SetPrivateBookmarks(aBookmark As Collection[]) $hBookmarkList.Private = aBookmark FillMenu End Public Sub GetPrivateBookmarks() As Collection[] Return $hBookmarkList.Private End Public Sub mnuAddBookmark_Click() Dim sLink As String = dvwChoose.Current If $hBookmarkList.FindBookmark(sLink) Then Return Inc Application.Busy $hBookmarkList.AddBookmark(sLink) $hBookmarkList.Save FillMenu SetRoot(sLink) Finally Dec Application.Busy End Public Sub mnuRemoveBookmark_Click() Inc Application.Busy $hBookmarkList.RemoveBookmark(dvwChoose.Root) $hBookmarkList.Save FillMenu SetDir(dvwChoose.Current) Finally Dec Application.Busy End Public Sub GetSettings() As Variant[] If Not $bFile Then Return [1, CVariant(dvwChoose.Root), dvwChoose.Current, Null, $bView, splChoose.Layout, fvwChoose.Settings, GetFilterIndex()] Else Return [1, CVariant(dvwChoose.Root), dvwChoose.Current, fvwChoose.Current, $bView, splChoose.Layout, fvwChoose.Settings, GetFilterIndex()] Endif End Public Sub SetSettings(aVar As Variant[]) 'Dim bBookmark As Boolean = True Dim iZoom As Integer = -1 If TypeOf(aVar[0]) = gb.Integer Then Try SetRoot(aVar[1]) Try fvwChoose.Settings = aVar[6] UpdateShowHidden Try SetDir(aVar[2]) If $bFile Then Try fvwChoose.Current = aVar[3] Try $bView = Not aVar[4] If Not Error Then btnView_Click splChoose.Layout = aVar[5] Try SetFilterIndex(aVar[7]) Try iZoom = $aIconSize.Find(fvwChoose.IconSize) If iZoom >= 0 Then sldIconSize.Value = iZoom Else If Not $bFile Then 'Try bBookmark = aVar[6] Try SetRoot(aVar[0]) Try SetDir(aVar[1]) Try $bView = Not aVar[2] If Not Error Then btnView_Click splChoose.Layout = aVar[3] Try fvwChoose.Settings = aVar[5] Try iZoom = $aIconSize.Find(aVar[6]) If iZoom >= 0 Then sldIconSize.Value = iZoom Else 'Try bBookmark = aVar[8] Try SetRoot(aVar[0]) Try SetDir(aVar[1]) Try fvwChoose.Current = aVar[2] Try $bView = Not aVar[3] If Not Error Then btnView_Click Try splChoose.Layout = aVar[4] Try fvwChoose.Settings = aVar[6] Try SetFilterIndex(aVar[7]) Try iZoom = $aIconSize.Find(aVar[8]) If iZoom >= 0 Then sldIconSize.Value = iZoom Endif Endif btnPreview.Value = fvwChoose.ShowPreview Object.Lock(btnDetail) btnDetail.Value = fvwChoose.ShowDetailed Object.Unlock(btnDetail) UpdateShowHidden ShowBookmark($bShowBookmark) End Public Sub mnuCreateDirectory_Click() dvwChoose.NewFolder End Public Sub mnuRefresh_Click() DirCache[dvwChoose.Current].Clear dvwChoose.Reload fvwChoose.Reload End Public Sub splChoose_Resize() 'DEBUG splChoose.Layout End Public Sub SetSplitter(bOn As Boolean) btnView.Visible = bOn End Public Sub GetSplitter() As Boolean Return btnView.Visible End Public Sub Reload() mnuRefresh_Click End Public Sub SetDialogButtonVisible(bVisible As Boolean) panButton.Visible = bVisible UpdateFilterPanel End Public Sub IsDialogButtonVisible() As Boolean Return panButton.Visible End Private Sub CheckFile() As Boolean ' FIXME: If 'As Boolean' is forgotten, and 'Return True' is removed, we can get an interpreter crash Dim sPath As String Dim sFile As String If Not txtFile.Visible Then Return If txtFile.ReadOnly Then Return If GetMulti() Then Return sFile = txtFile.Text If Not sFile Then Return True If InStr(sPath, "/") Then txtFile.Text = File.Name(sPath) SetDir(File.Dir(sPath)) Return True Endif If Exist(dvwChoose.Current &/ sFile) Then If Message.Warning(("This file already exists.\n\nDo you want to overwrite it?"), ("&Overwrite"), ("Cancel")) = 2 Then Return True Endif End Public Sub btnOK_Click() If CheckFile() Then Return Raise Select End Public Sub btnCancel_Click() Raise Cancel End Private Sub GetHeight(hCont As Container) As Integer Dim H As Integer Dim hChild As Control For Each hChild In hCont.Children If hChild.Visible Then H = Max(H, hChild.Y + hChild.H) Next Return H End Public Sub UpdateFilterPanel() Dim H As Integer Dim M As Integer Object.Lock(panFilter) cmbFilter.Enabled = cmbFilter.Count > 1 cmbFilter.Show 'Visible = txtFile.Visible If Not cmbFilter.Enabled And If Not panButton.Visible Then cmbFilter.Hide If panFilter.Margin Then M = Desktop.Scale * 2 If panButton.Visible Then panFilter.H = Max(panButton.H, GetHeight(panExtension)) + M panFilter.Show Else H = GetHeight(panExtension) If H Then panFilter.H = H + M panFilter.Show Else panFilter.Hide Endif Endif UpdateSeparator Object.Unlock(panFilter) End Public Sub GetExtensionContainer() As Container Return panExtension End Public Sub panExtension_Arrange() UpdateFilterPanel End Private Sub AddBookmarkMenu(hBookmark As CBookmark) Dim hMenu As Menu hMenu = New Menu(mnuBookmark) As "mnuBookmark" hMenu.Tag = hBookmark.Link hMenu.Text = Replace(hBookmark.Name, "&", "&&") hMenu.Picture = Picture[hBookmark.Icon] hMenu.Enabled = hBookmark.Exist() End Private Sub FillMenu() Dim hBookmark As CBookmark Dim hMenu As Menu Dim sType As String Dim sOldType As String mnuPopup.Children.Clear If IsBookmarkVisible() Then $hBookmarkList.Load() mnuBookmark = New Menu(mnuPopup) mnuBookmark.Name = "mnuBookmark" mnuBookmark.Text = ("Bookmarks") mnuBookmark.Picture = Picture["icon:/small/bookmark"] For Each hBookmark In $hBookmarkList sType = Left(hBookmark.Link) If sOldType And If sType <> sOldType Then hMenu = New Menu(mnuBookmark) sOldType = sType AddBookmarkMenu(hBookmark) Next btnBookmark.Menu = "mnuBookmark" hMenu = New Menu(mnuBookmark) hMenu = New Menu(mnuBookmark) As "mnuAddBookmark" hMenu.Text = ("&Bookmark current directory") hMenu.Picture = Picture["icon:/small/add"] 'hMenu = New Menu(mnuBookmark) As "mnuRemoveBookmark" 'hMenu.Text = ("&Remove bookmark") 'hMenu.Picture = Picture["icon:/small/remove"] hMenu = New Menu(mnuBookmark) As "mnuEditBookmark" hMenu.Text = ("&Edit bookmarks...") hMenu.Picture = Picture["icon:/small/edit"] mnuEditBookmark = hMenu hMenu = New Menu(mnuBookmark) UpdateBookmarkButton Endif hMenu = New Menu(mnuPopup) As "mnuShowDetailed" hMenu.Text = ("Show &details") hMenu.Checked = fvwChoose.ShowDetailed hMenu.Visible = fvwChoose.Visible mnuShowDetailed = hMenu hMenu = New Menu(mnuPopup) As "mnuShowHiddenFiles" hMenu.Text = ("Show &hidden files") hMenu.Checked = fvwChoose.ShowHidden 'hMenu.Visible = fvwChoose.Visible mnuShowHiddenFiles = hMenu hMenu = New Menu(mnuPopup) As "mnuShowPreview" hMenu.Text = ("Show &image preview") hMenu.Checked = fvwChoose.ShowPreview hMenu.Visible = fvwChoose.Visible mnuShowPreview = hMenu hMenu = New Menu(mnuPopup) hMenu = New Menu(mnuPopup) As "mnuRename" hMenu.Text = ("&Rename") 'hMenu.Picture = Picture["icon:/small/archive"] mnuRename = hMenu hMenu = New Menu(mnuPopup) As "mnuCopy" hMenu.Text = ("Copy") hMenu.Picture = Picture["icon:/small/copy"] mnuCopy = hMenu hMenu = New Menu(mnuPopup) As "mnuDelete" hMenu.Text = ("&Delete") hMenu.Picture = Picture["icon:/small/delete"] mnuDelete = hMenu hMenu = New Menu(mnuPopup) As "mnuDeleteDir" hMenu.Text = ("&Delete") hMenu.Picture = Picture["icon:/small/delete"] mnuDeleteDir = hMenu hMenu = New Menu(mnuPopup) hMenu = New Menu(mnuPopup) As "mnuUncompress" hMenu.Text = ("&Uncompress file") hMenu.Picture = Picture["icon:/small/archive"] mnuUncompress = hMenu hMenu = New Menu(mnuPopup) As "mnuCreateDirectory" hMenu.Text = ("&Create directory") hMenu.Picture = Picture["icon:/small/new-dir"] If Component.IsLoaded("gb.desktop") Then hMenu = New Menu(mnuPopup) As "mnuOpenFolder" hMenu.Text = ("Open in &file manager...") hMenu.Picture = Picture["icon:/small/file-manager"] Endif hMenu = New Menu(mnuPopup) As "mnuRefresh" hMenu.Text = ("&Refresh") hMenu.Picture = Picture["icon:/small/refresh"] If Component.IsLoaded("gb.desktop") Then hMenu = New Menu(mnuPopup) hMenu = New Menu(mnuPopup) As "mnuProperty" hMenu.Text = ("&Properties") hMenu.Picture = Picture["icon:/small/info"] mnuProperty = hMenu Endif End Public Sub IsBookmarkVisible() As Boolean Return $bShowBookmark 'btnBookmark.Enabled End Public Sub ShowBookmark(bShow As Boolean) 'If $bShowBookmark = bShow Then Return $bShowBookmark = bShow FillMenu UpdateBookmarkButton End Public Sub mnuEditBookmark_Click() 'If Not $hCurrentBookmark Then Return 'If Not $hCurrentBookmark.IsEditable() Then Return FEditBookmark.Run($hBookmarkList) $hBookmarkList.Save FillMenu UpdateBookmarkButton End Public Sub btnBookmark_DblClick() If $hCurrentBookmark Then dvwChoose.Current = $hCurrentBookmark.Path dvwChoose.Reload End Public Sub dvwChoose_KeyPress() If dvwChoose.Renaming Then Return Select Case Key.Code Case Key.F5 mnuRefresh_Click Case Key.F4 mnuShowHiddenFiles_Click Case Key.F6 mnuShowDetailed_Click Case Key.BackSpace btnParent_Click End Select End Public Sub fvwChoose_KeyPress() dvwChoose_KeyPress End Public Sub dvwChoose_Menu() mnuUncompress.Hide mnuShowDetailed.Hide mnuShowPreview.Hide mnuRename.Show mnuDelete.Hide mnuDeleteDir.Hide Try mnuDeleteDir.Visible = Dir(dvwChoose.Current).Count = 0 dvwChoose.SetFocus mnuPopup.Popup End Public Sub fvwChoose_Menu() Dim sFile As String = fvwChoose.Current mnuUncompress.Visible = IsCompressedFile(sFile) mnuShowDetailed.Show mnuShowPreview.Show mnuRename.Visible = sFile mnuDelete.Visible = sFile mnuDeleteDir.Hide mnuPopup.Popup End Public Sub sldIconSize_Change() fvwChoose.IconSize = $aIconSize[sldIconSize.Value] sldIconSize.Tooltip = fvwChoose.IconSize End Public Sub btnZoomOut_Click() Dec sldIconSize.Value End Public Sub btnZoomIn_Click() Inc sldIconSize.Value End ' Public Sub FileView_Show() ' ' Debug ' FillMenu ' UpdateZoom ' ' End ' ' Public Sub FileView_Hide() ' ' FileView_Show ' ' End Public Sub mnuRename_Click() If dvwChoose.HasFocus Then dvwChoose.Rename Else fvwChoose.Rename Endif End Private Sub URLQuote(Path As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(Path) sCar = Mid$(Path, iInd, 1) If sCar = " " Then sCar = "+" Else If IsLetter(sCar) Or If IsDigit(sCar) Or If InStr("-._~,$!/", sCar) Then Else sCar = "%" & Hex$(Asc(sCar), 2) Endif sRes &= sCar Next Return sRes End Public Sub mnuCopy_Click() Dim aPath As String[] Dim I As Integer If dvwChoose.HasFocus Then aPath = [dvwChoose.Current] Else aPath = GetPaths() Endif If aPath.Count = 0 Then Return For I = 0 To aPath.Max aPath[I] = "file://" & URLQuote(aPath[I]) Next Clipboard.Copy(aPath.Join(gb.CrLf) & gb.CrLf, "text/uri-list") End Public Sub mnuUncompress_Click() 'Dim sResult As String Dim sOutput As String Dim iMsg As Integer Dim sPath As String Dim sShow As String Dim hTreeView As TreeView Dim aOutput As String[] Dim iPos As Integer Dim bCancel As Boolean Dim sCmd As String Inc Application.Busy Select Case File.Name(fvwChoose.Current) Case Like "*.tar.gz", "*.tar.bz2", "*.tar.xz", "*.tgz", "*.tar" Shell "cd " & Shell(fvwChoose.Dir) & ";tar tf " & Shell$(fvwChoose.Current) To sOutput If Process.LastValue Then Goto _CANNOT_UNCOMPRESS For Each sOutput In Split(Trim(sOutput), "\n") If Right(sOutput) = "/" Then sOutput = Left$(sOutput, -1) If Not sShow Then sShow = sOutput Endif sPath = fvwChoose.Dir &/ sOutput If Exist(sPath) Then If iMsg <> 1 Then Application.Busy = 0 iMsg = Message.Warning("" & sOutput & "

      " & ("This file or directory already exists."), ("Overwrite all"), ("Overwrite"), ("Cancel")) If iMsg = 3 Then Return Inc Application.Busy Endif Shell "rm -rf " & Shell$(fvwChoose.Dir &/ sOutput) Wait If Process.LastValue Then Goto _CANNOT_UNCOMPRESS Endif Next Case Like "*.zip" Shell "cd " & Shell(fvwChoose.Dir) & ";unzip -l " & Shell$(fvwChoose.Current) To sOutput If Process.LastValue Then Goto _CANNOT_UNCOMPRESS aOutput = Split(sOutput, "\n") If aOutput.Count > 2 Then iPos = InStr(aOutput[1], "Name") If iPos = 0 Then Application.Busy = 0 Message.Warning(("Cannot list archive contents")) Return Endif aOutput.Remove(0, 3) Try aOutput.Remove(aOutput.Max - 1, 2) For Each sOutput In aOutput sOutput = Trim(Mid$(sOutput, iPos)) If Right(sOutput) = "/" Then sOutput = Left$(sOutput, -1) If Not sShow Then sShow = sOutput Endif sPath = fvwChoose.Dir &/ sOutput If Exist(sPath) Then If iMsg <> 1 Then Application.Busy = 0 iMsg = Message.Warning("" & sOutput & "

      " & ("This file or directory already exists."), ("Overwrite all"), ("Overwrite"), ("Cancel")) If iMsg = 3 Then Return Inc Application.Busy Endif Shell "rm -rf " & Shell$(fvwChoose.Dir &/ sOutput) Wait If Process.LastValue Then Goto _CANNOT_UNCOMPRESS Endif Next Case Else If $aUncompressFilter Then bCancel = Raise Uncompress(fvwChoose.Dir &/ fvwChoose.Current) If bCancel Then Goto _CANNOT_UNCOMPRESS Else Application.Busy = 0 Message.Error(("Cannot uncompress file.") & "\n\n" & ("Unknown archive.")) Return Endif End Select Select Case File.Name(fvwChoose.Current) Case Like "*.tar.gz", "*.tgz" sCmd = "tar xfz " & Shell$(fvwChoose.Current) Case Like "*.tar.bz2" sCmd = "tar xfj " & Shell$(fvwChoose.Current) 'Shell "cd " & Shell(fvwChoose.Dir) & ";tar xfj " & Shell$(fvwChoose.Current) Wait 'Exec ["/bin/tar", "xfj", "-C", fvwChoose.Dir, sPath] To sResult ' Case Like "*.tar.xz" sCmd = "tar xfJ " & Shell$(fvwChoose.Current) Case Like "*.tar" sCmd = "tar xf " & Shell$(fvwChoose.Current) 'Shell "cd " & Shell(fvwChoose.Dir) & ";tar xf " & Shell$(fvwChoose.Current) Wait Case Like "*.zip" sCmd = "unzip -q " & Shell$(fvwChoose.Current) 'Shell "cd " & Shell(fvwChoose.Dir) & ";unzip -q " & Shell$(fvwChoose.Current) Wait Case Else sCmd = "" End Select If sCmd Then Shell "cd " & Shell(fvwChoose.Dir) & ";" & sCmd Wait If Process.LastValue Then Goto _CANNOT_UNCOMPRESS Endif Wait ' Let watch events proceed Dec Application.Busy Reload hTreeView = dvwChoose.Proxy If sShow Then Try hTreeView[fvwChoose.Dir &/ sShow].EnsureVisible Try hTreeView[fvwChoose.Dir &/ sShow].Selected = True Endif Return _CANNOT_UNCOMPRESS: Application.Busy = 0 Message.Error(("Cannot uncompress file.")) Return Catch Application.Busy = 0 Message.Error(("Cannot uncompress file.") & "\n\n" & Error.Text) End Public Sub mnuDelete_Click() Dim sPath As String = fvwChoose.Current If Not sPath Then Return sPath = fvwChoose.Dir &/ sPath Message.Title = ("Delete file") If Message.Warning("" & File.Name(sPath) & "

      " & ("Do you really want to delete that file?"), ("&Delete"), ("Cancel")) = 2 Then Return Kill sPath mnuRefresh_Click Catch Message.Error(("Unable to delete file.") & "\n\n" & Error.Text) End Public Sub mnuDeleteDir_Click() Dim sPath As String = dvwChoose.Current If Not sPath Then Return Message.Title = ("Delete directory") If Message.Warning("" & File.Name(sPath) & "

      " & ("Do you really want to delete that directory?"), ("&Delete"), ("Cancel")) = 2 Then Return Rmdir sPath mnuRefresh_Click Catch Message.Error(("Unable to delete directory.") & "\n\n" & Error.Text) End Public Sub SetFocus() txtFile.SetFocus End Public Sub mnuOpenFolder_Click() Desktop.Open(dvwChoose.Current) End Public Sub mnuProperty_Click() If dvwChoose.HasFocus Or If Not fvwChoose.Current Then If Not dvwChoose.Current Then Return FFileProperties.Run(dvwChoose.Current) Else FFileProperties.Run(fvwChoose.Dir &/ fvwChoose.Current) Endif End Public Sub btnParent_Click() Dim hBookmark As CBookmark Dim sDir As String = dvwChoose.Current If sDir = dvwChoose.Root And sDir <> "/" Then hBookmark = $hBookmarkList.FindBest(File.Dir(sDir)) If hBookmark Then SetBookmark(hBookmark) Else dvwChoose.Root = File.Dir(sDir) SetBookmark(Null) Endif Endif dvwChoose.Current = File.Dir(sDir) End Public Sub btnParent_Draw() Dim iFlag As Integer If btnParent.Hovered And If btnParent.Enabled Then iFlag += Draw.Hover If Not btnParent.Enabled Then iFlag += Draw.Disabled If btnParent.HasFocus Then iFlag += Draw.Focus If btnParent.Hovered Then Draw.Style.Button(0, 0, btnParent.W, btnParent.H, False, iFlag, True) Draw.Style.Arrow((btnParent.W - 8) \ 2, (btnParent.H - 8) \ 2, 8, 8, Align.Left, iFlag) End ' Public Sub btnParent_Enter() ' ' btnParent.Refresh ' ' End ' ' Public Sub btnParent_Leave() ' ' btnParent.Refresh ' ' End ' Public Sub btnParent_MouseDown() ' ' $bPressed = True ' btnParent.Refresh ' ' End ' ' Public Sub btnParent_MouseUp() ' ' $bPressed = False ' btnParent.Refresh ' If btnParent.Hovered Then btnParent_Click ' ' End Private Sub UpdateSeparator() sepNoBorder.Visible = Not HasBorder() And panFilter.Visible End Public Sub SetBorder(bBorder As Boolean) panBorder.Border = If(bBorder, Border.Plain, Border.None) UpdateSeparator End Public Sub HasBorder() As Boolean Return panBorder.Border <> Border.None End Public Sub SetShowFile(bShow As Boolean) txtFile.Visible = bShow UpdateFilterPanel End Public Function GetShowFile() As Boolean Return txtFile.Visible End Public Sub HasMargin() As Boolean Return panFilter.Margin End Public Sub SetMargin(bMargin As Boolean) panFilter.Margin = bMargin Me.Spacing = Not bMargin End Public Sub btnPreview_Click() fvwChoose.ShowPreview = btnPreview.Value mnuShowPreview.Checked = btnPreview.Value End Public Sub GetShowPreview() As Boolean Return fvwChoose.ShowPreview End Public Sub SetShowPreview(bPreview As Boolean) btnPreview.Value = bPreview End ' Private Sub UpdateDirText() ' ' txtDir.Text = Ellipsize($sDirText, txtDir.Font, txtDir.W) ' ' End ' Public Sub panToolbar_Arrange() ' ' UpdateDirText ' ' End Public Sub txtFile_Change() If Not GetMulti() Then Try fvwChoose.Current = txtFile.Text End Public Sub btnBookmark_Click() dvwChoose.Current = dvwChoose.Root End Private Sub UpdateHistoryButtons() btnBack.Enabled = $iHistory > 0 btnForward.Enabled = $iHistory < $aHistory.Max If btnBack.Enabled Then btnBack.Tooltip = $aHistory[$iHistory - 1] If btnForward.Enabled Then btnForward.Tooltip = $aHistory[$iHistory + 1] End Private Sub SaveToHistory() If $bNoSaveHistory Then Return $aHistory.Resize($iHistory + 1) $aHistory.Add(dvwChoose.Current) Inc $iHistory UpdateHistoryButtons End Public Sub btnBack_Click() If $iHistory = 0 Then Return $bNoSaveHistory = True Dec $iHistory SetDir($aHistory[$iHistory]) $bNoSaveHistory = False UpdateHistoryButtons End Public Sub btnForward_Click() If $iHistory = $aHistory.Max Then Return $bNoSaveHistory = True Inc $iHistory SetDir($aHistory[$iHistory]) $bNoSaveHistory = False UpdateHistoryButtons End Public Sub btnRoot_Click() If IsBookmarkVisible() Then SetDir("/") Else SetDir(dvwChoose.Root) Endif End Public Sub dwgGradient_Draw() Paint.DrawImage($hGradient, 0, 0) End Public Sub panDir_Arrange() dwgGradient.Move(panDir.W - dwgGradient.W, 0, dwgGradient.W, panDir.H) End Public Sub btnBookmark_Menu() dvwChoose.Current = dvwChoose.Root dvwChoose_Menu End Public Sub GetShowToolbar() As Boolean Return panTool.Visible End Public Sub SetShowToolbar(bShow As Boolean) panTool.Visible = bShow End Private Function AutoExt_Read() As Boolean Return $bAutoExt End Private Sub AutoExt_Write(Value As Boolean) If $bAutoExt = Value Then Return $bAutoExt = Value CheckAutomaticExtension(True) End Private Function UncompressFilter_Read() As String[] Return $aUncompressFilter End Private Sub UncompressFilter_Write(Value As String[]) If Value Then $aUncompressFilter = Value.Copy() $aUncompressFilter.ReadOnly = True Else $aUncompressFilter = Null Endif End Private Sub IsCompressedFile(sFile As String, Optional bCustom As Boolean) As Boolean Dim I As Integer If Not bCustom Then If sFile Like "*.tar.gz" Or If sFile Like "*.tar.bz2" Or If sFile Like "*.tar.xz" Or If sFile Like "*.tgz" Or If sFile Like "*.tar" Or If sFile Like "*.zip" Then Return True Endif If $aUncompressFilter Then For I = 0 To $aUncompressFilter.Max If sFile Like $aUncompressFilter[I] Then Return True Next Endif End Public Sub txtFile_LostFocus() CheckAutomaticExtension(True) End gambas-3.16.3/comp/src/gb.form/.src/File/Chooser/FDirChooser.form000066400000000000000000000112541411575327000243070ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(23,39,107,86) Resizable = False Arrangement = Arrange.Vertical Spacing = True { mnuPopup Menu } { panBorder Panel MoveScaled(0,0,90,59) Expand = True Arrangement = Arrange.Horizontal Border = Border.Plain { VBox1 VBox MoveScaled(2,3,82,53) Expand = True { panToolbar HBox MoveScaled(1,1,78,4) AutoResize = True { btnParent ToolButton MoveScaled(1,0,4,4) Visible = False ToolTip = ("Parent directory") Picture = Picture["icon:/small/up"] } { btnRoot ToolButton MoveScaled(5,0,4,4) ToolTip = ("Root directory") Picture = Picture["icon:/small/computer"] } { Panel2 Panel MoveScaled(9,0,1,4) Visible = False } { panDir HBox MoveScaled(11,0,8,4) Expand = True { dwgGradient DrawingArea MoveScaled(6,0,2,4) Ignore = True } } { Separator3 Separator MoveScaled(20,0,0,4) Visible = False } { panTool HBox MoveScaled(23,0,46,4) AutoResize = True { btnBack ToolButton MoveScaled(0,0,4,4) Enabled = False ToolTip = ("Parent directory") Picture = Picture["icon:/small/left"] } { btnForward ToolButton MoveScaled(4,0,4,4) Enabled = False Picture = Picture["icon:/small/right"] } { panIconSize HBox MoveScaled(8,0,23,4) Visible = False { btnZoomOut ToolButton MoveScaled(0,0,4,4) Picture = Picture["icon:/small/zoom-out"] } { sldIconSize Slider MoveScaled(4,0,14,4) Expand = True MaxValue = 8 PageStep = 1 } { btnZoomIn ToolButton MoveScaled(18,0,4,4) Picture = Picture["icon:/small/zoom-in"] } } { btnPreview ToolButton MoveScaled(31,0,4,4) ToolTip = ("Image preview") Picture = Picture["icon:/small/image"] Toggle = True } { btnDetail ToolButton mnuShowDetailed Name = "btnDetail" MoveScaled(35,0,4,4) ToolTip = ("Detailed view") Picture = Picture["icon:/small/view-detail"] Toggle = True } { btnProperty ToolButton mnuProperty Name = "btnProperty" MoveScaled(38,0,4,4) ToolTip = ("File properties") Picture = Picture["icon:/small/info"] } { btnView ToolButton MoveScaled(42,0,4,4) ToolTip = ("Show files") Picture = Picture["icon:/small/view-split-h"] } } } { Separator2 Separator MoveScaled(30,6,39,0) } { splChoose HSplit MoveScaled(6,7,67,43) Expand = True { panDirectory Panel MoveScaled(2,4,27,38) Arrangement = Arrange.Vertical { btnBookmark MenuButton MoveScaled(3,2,18,4) ToolTip = ("Bookmarks") AutoResize = True Picture = Picture["icon:/small/home"] Border = False MenuOnly = True } { sepBookmark Separator MoveScaled(6,7,12,0) } { dvwChoose DirView MoveScaled(0,9,26,28) Expand = True Border = False Picture = Picture["icon:/small/home"] HideRoot = True } } { panView Panel MoveScaled(38,5,25,33) Visible = False Arrangement = Arrange.Fill { fvwChoose FileView MoveScaled(1,1,23,31) Border = False } } } } } { sepNoBorder Separator MoveScaled(39,60,26,0) Visible = False } { panFilter HBox MoveScaled(2,63,84,11) Spacing = True { panExtension VBox MoveScaled(1,1,62,9) Expand = True Spacing = True { txtFile TextBox MoveScaled(0,0,57,4) Visible = False } { cmbFilter ComboBox MoveScaled(0,5,57,4) Visible = False ReadOnly = True } } { panButton VBox MoveScaled(68,1,15,9) Visible = False Spacing = True { btnOK Button MoveScaled(0,0,15,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(0,5,15,4) Text = ("Cancel") Cancel = True } } } } gambas-3.16.3/comp/src/gb.form/.src/File/Chooser/FileChooser.class000066400000000000000000000163511411575327000245070ustar00rootroot00000000000000' Gambas class file Inherits UserControl Export Public Const _Properties As String = "*,Border=True,Root,Picture,Multi,Filter,AutoExt,ShowHidden,ShowDirectory,ShowDetailed,ShowPreview,ShowBookmark=True,ShowFile=True,ShowButton,ShowToolbar=True,Margin,ReadOnly" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "Chooser" Property Root As String Property Picture As Picture Property {Dir} As String Property SelectedPath As String Property Read SelectedPaths As String[] Property Value As Variant Property Multi As Boolean Property ShowDirectory As Boolean Property ShowHidden As Boolean Property ShowDetailed As Boolean Property ShowBookmark As Boolean Property ShowFile As Boolean Property ShowPreview As Boolean '' Return or set if the toolbar is visible. Property ShowToolbar As Boolean Property Bookmarks As Collection[] Property Settings As Variant[] Property Read DirView As DirView Property Read FileView As FileView Property ShowButton As Boolean Property Read Extension As Container Property Border As Boolean Property Margin As Boolean '' Return or set if the extension of the file is automatically set from the current filter. Property AutoExt As Boolean Property ReadOnly As Boolean Property Filter As String[] Property FilterIndex As Integer Property Icon As Picture '' Return or set a list of file filters that identify files that can be uncompressed in response of the [../.uncompress] event. Property UncompressFilter As String[] Event Change Event Activate Event Icon(Path As String) Event Cancel '' Raise when a specific compressed file must be uncompressed. '' '' - ~Path~ is the path of the compressed file. Event Uncompress(Path As String) 'EVENT ShowHidden Private frmChooser As FDirChooser Public Sub _new() frmChooser = New FDirChooser(Me, True) 'AS "frmChooser" Object.Attach(frmChooser, Me, "frmChooser") 'Object.Delegate(frmChooser, ME) End Public Sub frmChooser_Open() Last.Form_Open End Public Sub frmChooser_Change() Raise Change End Public Sub frmChooser_Select() Raise Activate End Public Sub frmChooser_GetIcon(Path As String) Raise Icon(Path) End Public Sub frmChooser_Uncompress(Path As String) Raise Uncompress(Path) End Private Function Dir_Read() As String Return frmChooser.GetDir() End Private Sub Dir_Write(sDir As String) frmChooser.SetDir(sDir) End Private Function ShowDirectory_Read() As Boolean Return frmChooser.GetShowDirectory() End Private Sub ShowDirectory_Write(bShowDir As Boolean) frmChooser.SetShowDirectory(bShowDir) End Private Function ShowHidden_Read() As Boolean Return frmChooser.GetShowHidden() End Private Sub ShowHidden_Write(bShowHidden As Boolean) frmChooser.SetShowHidden(bShowHidden) End Private Function ShowDetailed_Read() As Boolean Return frmChooser.GetShowDetailed() End Private Sub ShowDetailed_Write(bShowDetailed As Boolean) frmChooser.SetShowDetailed(bShowDetailed) End Private Function Multi_Read() As Boolean Return frmChooser.GetMulti() End Private Sub Multi_Write(bMulti As Boolean) frmChooser.SetMulti(bMulti) End Private Function SelectedPath_Read() As String Try Return frmChooser.GetPath() End Private Sub SelectedPath_Write(Value As String) frmChooser.SetPath(Value) End Private Function SelectedPaths_Read() As String[] Return frmChooser.GetPaths() End ' PRIVATE FUNCTION Font_Read() AS Font ' ' RETURN SUPER.Font ' ' END ' ' PRIVATE SUB Font_Write(hFont AS Font) ' ' SUPER.Font = hFont ' frmChooser.SetFont(SUPER.Font) ' ' END Private Function Filter_Read() As String[] Return frmChooser.GetFilter() End Private Sub Filter_Write(aFilter As String[]) frmChooser.SetFilter(aFilter) End Private Function Root_Read() As String Return frmChooser.GetRoot() End Private Sub Root_Write(Value As String) frmChooser.SetRoot(Value) End Private Function Icon_Read() As Picture Return frmChooser.FileView.Icon End Private Sub Icon_Write(Value As Picture) frmChooser.FileView.Icon = Value frmChooser.DirView.Icon = Value End Private Function ReadOnly_Read() As Boolean Return frmChooser.GetReadOnly() End Private Sub ReadOnly_Write(Value As Boolean) frmChooser.SetReadOnly(Value) End Private Function Picture_Read() As Picture Return frmChooser.GetPicture() End Private Sub Picture_Write(Value As Picture) frmChooser.SetPicture(Value) End Private Function Value_Read() As Variant If frmChooser.GetMulti() Then Return SelectedPaths_Read() Else Return SelectedPath_Read() Endif End Private Sub Value_Write(Value As Variant) If Not frmChooser.GetMulti() Then SelectedPath_Write(Value) Endif End Private Function FilterIndex_Read() As Integer Return frmChooser.GetFilterIndex() End Private Sub FilterIndex_Write(Value As Integer) frmChooser.SetFilterIndex(Value) End Private Function ShowBookmark_Read() As Boolean Return frmChooser.IsBookmarkVisible() End Private Sub ShowBookmark_Write(Value As Boolean) frmChooser.ShowBookmark(Value) End Private Function Bookmarks_Read() As Collection[] Return frmChooser.GetPrivateBookmarks() End Private Sub Bookmarks_Write(Value As Collection[]) frmChooser.SetPrivateBookmarks(Value) End Private Function Settings_Read() As Variant[] Return frmChooser.GetSettings() End Private Sub Settings_Write(Value As Variant[]) frmChooser.SetSettings(Value) End ' PUBLIC SUB frmChooser_ShowHidden() ' ' RAISE ShowHidden ' ' END Public Sub Reload() frmChooser.Reload End Private Function FileView_Read() As FileView Return frmChooser.FileView End Private Function DirView_Read() As DirView Return frmChooser.DirView End Private Function ShowButton_Read() As Boolean Return frmChooser.IsDialogButtonVisible() End Private Sub ShowButton_Write(Value As Boolean) frmChooser.SetDialogButtonVisible(Value) End Public Sub frmChooser_Cancel() Raise Cancel End Private Function Extension_Read() As Container Return frmChooser.GetExtensionContainer() End Public Sub SetFocus() frmChooser.SetFocus End Private Function Border_Read() As Boolean Return frmChooser.HasBorder() End Private Sub Border_Write(Value As Boolean) frmChooser.SetBorder(Value) End Private Function ShowFile_Read() As Boolean Return frmChooser.GetShowFile() End Private Sub ShowFile_Write(Value As Boolean) frmChooser.SetShowFile(Value) End Private Function Margin_Read() As Boolean Return frmChooser.HasMargin() End Private Sub Margin_Write(Value As Boolean) frmChooser.SetMargin(Value) End Private Function ShowPreview_Read() As Boolean Return frmChooser.GetShowPreview() End Private Sub ShowPreview_Write(Value As Boolean) frmChooser.SetShowPreview(Value) End Private Function ShowToolbar_Read() As Boolean Return frmChooser.GetShowToolbar() End Private Sub ShowToolbar_Write(Value As Boolean) frmChooser.SetShowToolbar(Value) End Private Function AutoExt_Read() As Boolean Return frmChooser.AutoExt End Private Sub AutoExt_Write(Value As Boolean) frmChooser.AutoExt = Value End Private Function UncompressFilter_Read() As String[] Return frmChooser.UncompressFilter End Private Sub UncompressFilter_Write(Value As String[]) frmChooser.UncompressFilter = Value End gambas-3.16.3/comp/src/gb.form/.src/File/DirBox.class000066400000000000000000000021651411575327000220700ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Border=True" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "32,4" Public Const _Similar As String = "TextBox" Public Const _Group As String = "Chooser" Event Click Event Change Property Value As String Property Border As Boolean Private $hButtonBox As ButtonBox Public Sub _new() $hButtonBox = New ButtonBox(Me) As "Button" Me.Proxy = $hButtonBox $hButtonBox.Picture = Picture["icon:/small/directory"] $hButtonBox.ReadOnly = True $hButtonBox.ClearButton = True End Private Function Border_Read() As Boolean Return $hButtonBox.Border End Private Sub Border_Write(Value As Boolean) $hButtonBox.Border = Value End Private Function Value_Read() As String Return $hButtonBox.Text End Private Sub Value_Write(Value As String) $hButtonBox.Text = Value End Public Sub Button_Click() Dialog.Path = $hButtonBox.Text If Dialog.SelectDirectory() Then Return $hButtonBox.Text = Dialog.Path Raise Click End Public Sub Button_Change() Raise Change End gambas-3.16.3/comp/src/gb.form/.src/File/DirCache.class000066400000000000000000000045071411575327000223450ustar00rootroot00000000000000' Gambas class file Class DesktopMime Static Private $cCache As New Collection Private $sDir As String Private $aList As String[] Private $dDate As Date Private $dLastModified As Date Private $cStat As New Collection Private $cIcon As New Collection Private $cIsDir As New Collection Private $iLock As Integer Static Public Sub _get(sDir As String) As DirCache Dim hCache As DirCache If Right(sDir) <> "/" Then sDir &= "/" hCache = $cCache[sDir] If Not hCache Then hCache = New DirCache(sDir) $cCache[sDir] = hCache Endif Return hCache End Static Public Sub Exit() $cCache = Null End Public Sub _new(sDir As String) $sDir = sDir End Public Sub Clear() $dDate = Null End Private Sub CheckValid() As Boolean Dim dLastModified As Date If $iLock Then Return dLastModified = Stat($sDir).LastModified If IsNull($dLastModified) Or If dLastModified > $dLastModified Or If Now >= DateAdd($dDate, gb.Second, 5) Then $dDate = Now $dLastModified = dLastModified $cStat.Clear $aList = Null Endif End Public Sub Invalidate() $dLastModified = Null $dDate = Null End Public Sub GetInfo(sFile As String) As Stat Dim hInfo As Stat If CheckValid() Then Return If sFile = "" Then sFile = "/" hInfo = $cStat[sFile] If Not hInfo Then 'Debug sFile hInfo = Stat($sDir &/ sFile) $cStat[sFile] = hInfo Endif Return hInfo End Public Sub IsDir(sFile As String) As Boolean If CheckValid() Then Return If sFile = "" Then sFile = "/" If Not $cIsDir.Exist(sFile) Then $cIsDir[sFile] = IsDir($sDir &/ sFile) Endif Return $cIsDir[sFile] End Public Sub GetMimeIcon(sFile As String, iSize As Integer) As Image Dim hIcon As Image If CheckValid() Then Return hIcon = $cIcon[sFile & ":" & CStr(iSize)] If Not hIcon Then Try hIcon = DesktopMime.FromFile($sDir &/ sFile).GetIcon(iSize) $cIcon[sFile & ":" & CStr(iSize)] = hIcon Endif Return hIcon End Public Sub GetFiles() As String[] If CheckValid() Then Return New String[] If Not $aList Then 'Debug $aList = Dir($sDir).Sort(gb.Natural) Endif Return $aList End Public Sub Lock() If $iLock = 0 Then CheckValid Inc $iLock End Public Sub Unlock() Dec $iLock End gambas-3.16.3/comp/src/gb.form/.src/File/DirView.class000066400000000000000000000316751411575327000222620ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Class Watch Public Const _Properties As String = "*,Border=True,Root,Picture,ShowHidden,HideRoot" Public Const _DefaultEvent As String = "Click" Public Const _Group As String = "View" Event {Select} Event Click Event Activate Event Menu Event Icon(Path As String) Property Root As String Property Current As String Property ShowHidden As Boolean Property Picture As Picture Property Border As Boolean Property Icon As Picture Property Read Renaming As Boolean Property Settings As Variant[] Property HideRoot As Boolean Private $sRoot As String Private $hTreeView As TreeView Private $bShowHidden As Boolean Private $hRootPict As Picture Private $hPict As Picture Private $bDeleteOnCancel As Boolean Private $bNoExpand As Boolean Private $bNoEvent As Boolean Private $hTimerExpand As Timer Private $bInRename As Boolean Private $bHideRoot As Boolean Private $cWatch As Collection Private $bWatch As Boolean Private $hRefreshTimer As Timer Private $bRefreshTimerTriggered As Boolean Private $hWatcher As Watcher Private $bRefreshAfterRename As Boolean Public Sub _new() $bWatch = Component.IsLoaded("gb.inotify") If $bWatch Then $hWatcher = New Watcher(Me) As "Watcher" $hTreeView = New TreeView(Me) As "TreeView" $hTreeView.Editable = True $hTimerExpand = New Timer As "TimerExpand" Me.Proxy = $hTreeView $hRootPict = Picture["icon:/small/directory"] 'open ClearView $hRefreshTimer = New Timer As "Refresh" End Private Function GetRoot() As String If Trim($sRoot) Then Return $sRoot Return User.Home End Private Sub UpdateHideRoot() Dim hGridView As GridView hGridView = $hTreeView.Children[0] hGridView.Rows[0].H = If($bHideRoot, 0, -1) End Private Sub AddWatch(sDir As String) If Not $cWatch Then Return $cWatch[sDir] = New Watch(sDir) As "Watch" End Private Sub RemoveWatch(sDir As String) If Not $cWatch Then Return $cWatch.Remove(sDir) End Private Sub ClearView() Dim sRoot As String = GetRoot() $bNoEvent = True $hTreeView.Clear If $bWatch Then If $cWatch Then $cWatch.Clear Endif AddDir(File.Dir(sRoot), File.Name(sRoot), True) '$hTreeView.Add(sRoot, sRoot, $hRootPict) '$hTreeView.Add(sRoot & "/", "",, sRoot) 'IF NOT $hRootPict THEN Picture_Write(Picture["icon:/small/directory"]) 'open If $hTreeView.Count Then $hTreeView.MoveFirst $hTreeView.Item.Expanded = True TreeView_Expand Endif $bNoEvent = False UpdateHideRoot End Private Function Root_Read() As String Return $sRoot End Private Sub Root_Write(sRoot As String) sRoot = Trim(sRoot) While Right(sRoot) = "/" And Len(sRoot) > 1 sRoot = Left(sRoot, -1) Wend If sRoot = $sRoot Then Return If Not IsDir(sRoot) Then Error.Raise("Unknown directory") $sRoot = sRoot RefreshView Raise Click End Private Sub AddDir(sDir As String, sFile As String, Optional bIgnoreHidden As Boolean) Dim sParent As String Dim hPict As Picture Dim bNoEdit As Boolean Dim sAfter As String Dim sName As String Dim hStat As Stat Dim bRichText As Boolean Dim sText As String If Not $bShowHidden And If Left(sFile) = "." And If Not bIgnoreHidden Then Return If Not Exist(sDir) Then Return sParent = sDir If GetRoot() = (sDir &/ sFile) Then sParent = "" hPict = $hRootPict If Not hPict Then hPict = Picture["icon:/small/directory"] sName = sDir &/ sFile bNoEdit = True Else hPict = GetIcon(sDir &/ sFile) sName = sFile Endif sAfter = FindAfter($hTreeView, sName, sParent) With $hTreeView.Add(sDir &/ sFile, sName, hPict, sParent) .Editable = Not bNoEdit .MoveAfter(sAfter) 'hStat = Stat(sDir &/ sFile) hStat = DirCache[sDir].GetInfo(sFile) bRichText = False sText = sFile If hStat.Link Then sText = "" & sText & "" bRichText = True Endif If hStat.Hidden Then sText = "" & sText & "" bRichText = True Endif If bRichText Then .RichText = sText End With $hTreeView.Add((sDir &/ sFile) & "/", "",, sDir &/ sFile).Expanded = False End Public Sub TreeView_Expand() Dim sFile As String Dim sDir As String Dim sDelete As String Dim hCache As DirCache Dim aDir As String[] If Not $hTreeView.Item Then Stop $hTreeView.Item.Selected = True sDir = $hTreeView.Item.Key If $bWatch Then AddWatch(sDir) If sDir = GetRoot() Then $hTreeView.Item.Picture = $hRootPict Else $hTreeView.Item.Picture = GetIcon($hTreeView.Item.key) 'open Endif If $hTreeView.MoveChild() Then Return If $hTreeView.Item.Text Then Return sDelete = $hTreeView.Item.Key Inc Application.Busy $hTreeView[sDelete].Delete hCache = DirCache[sDir] hCache.Lock Try aDir = hCache.GetFiles().Sort(gb.Natural + gb.IgnoreCase) If Not Error Then For Each sFile In aDir If Not hCache.IsDir(sFile) Then Continue AddDir(sDir, sFile) Next Endif hCache.Unlock If $hTreeView[sDir].Children = 0 Then $hTreeView[sDir].Picture = GetIcon(sDir) Else '$hTreeView[sDir].Expanded = TRUE Endif Finally Dec Application.Busy Catch Debug Error.Where; ": "; Error.Text End Public Sub TreeView_Collapse() '$hTreeView.Item.Selected = TRUE 'IF $hTreeView.Item.Key = GetRoot() THEN RETURN ' $hTreeView.Item.Picture = GetIcon( $bNoExpand = True Last.Item.Selected = True $bNoExpand = False If $bWatch Then RemoveWatch(Last.Item.Key) End Public Sub TreeView_Select() If Not $bNoExpand And If Not $bInRename Then If $hTreeView.Current And If Not $hTreeView.Current.Expanded Then $hTimerExpand.Trigger Endif Endif If $bNoEvent Then Return Raise {Select} Raise Click End Public Sub TimerExpand_Timer() Try $hTreeView.Current.Expanded = True End ' Public Sub TreeView_MouseUp() ' ' 'If $bExpandOnMouseUp Then ' Try Last.Current.Expanded = True ' $bExpandOnMouseUp = False ' 'Endif ' ' End Public Sub TreeView_Activate() Raise Activate End ' Public Sub TreeView_Click() ' ' If $bNoEvent Then Return ' Raise Click ' ' End Public Sub TreeView_Menu() Raise Menu End Private Function Current_Read() As String Try Return $hTreeView.Current.Key If Error Then Return GetRoot() End Private Sub MoveToLastChild() $hTreeView.MoveChild Repeat Until $hTreeView.MoveNext() $hTreeView.MoveBack $hTreeView.Item.EnsureVisible Catch End Private Sub Current_Write(sDir As String) Dim sElt As String Dim sSubDir As String sDir = Trim(sDir) 'IF Right(sDir) = "/" THEN sDir = Left(sDir, - 1) If sDir = Current_Read() Then Return 'ClearView $bNoEvent = True sSubDir = "/" For Each sElt In Split(File.Dir(sDir), "/", "", True) sSubDir &/= sElt Try $hTreeView[sSubDir].Expanded = True Next $bNoEvent = False Try $hTreeView[sDir].Selected = True If Not Error Then $hTreeView.MoveTo(sDir) $hTreeView.Item.Expanded = True MoveToLastChild 'TRY $hTreeView.MoveNext 'TRY $hTreeView.Item.EnsureVisible Endif Try $hTreeView.Current.EnsureVisible Raise Click 'RAISE Refresh End Private Sub RefreshView() Dim sDir As String Dim SX As Integer Dim SY As Integer If $bInRename Then $bRefreshAfterRename = True Return Endif SX = $hTreeView.ScrollX SY = $hTreeView.ScrollY sDir = Current_Read() ClearView Current_Write(sDir) $hTreeView.Scroll(SX, SY) $bRefreshTimerTriggered = False End Private Sub RefreshViewLater() If $bRefreshTimerTriggered Then Return $bRefreshTimerTriggered = True $hRefreshTimer.Trigger End Public Sub Refresh_Timer() If Not $bRefreshTimerTriggered Then Return 'Debug RefreshView End Private Function ShowHidden_Read() As Boolean Return $bShowHidden End Private Sub ShowHidden_Write(bShowHidden As Boolean) If bShowHidden <> $bShowHidden Then $bShowHidden = bShowHidden RefreshView Endif End Private Function Picture_Read() As Picture Dim hPict As Picture hPict = $hTreeView[GetRoot()].Picture If hPict <> Picture["icon:/small/directory"] Then Return hPict 'open End Private Sub Picture_Write(hPict As Picture) If hPict Then $hRootPict = hPict Else $hRootPict = Picture["icon:/small/directory"] 'open Endif $hTreeView[GetRoot()].Picture = $hRootPict UpdateHideRoot End Private Sub Border_Write(bBorder As Boolean) $hTreeView.Border = bBorder End Private Function Border_Read() As Boolean Return $hTreeView.Border End Private Function GetIcon(sPath As String) As Picture If sPath = GetRoot() Then Return $hRootPict $hPict = Null Try Raise Icon(sPath) If $hPict Then Return $hPict Return Picture["icon:/small/directory"] End Private Function Icon_Read() As Picture Return $hPict End Private Sub Icon_Write(Value As Picture) If Value.Height <> 16 Then Value = Value.Image.Stretch(Value.Width * 16 / Value.Height, 16).Picture Endif $hPict = Value End Public Sub TreeView_Rename() Dim sKey As String = $hTreeView.Item.Key Dim sParent As String Dim sNewName As String = $hTreeView.Item.Text Dim sMsg As String $bInRename = False If $hTreeView.MoveParent() Then Return $hTreeView.MoveTo(sKey) If sNewName = File.Name(sKey) Then Return sMsg = Help.CheckFileName(sNewName) If sMsg Then Balloon.Warning(sMsg, $hTreeView, $hTreeView.Item.X + Min(32 + Desktop.Scale * 8, $hTreeView.Item.W) / 2, $hTreeView.Item.Y + $hTreeView.Item.H / 2) Stop Event Return Endif Move sKey To File.SetName(sKey, sNewName) sParent = File.Dir(sKey) ' TODO: Optimization Object.Lock($hTreeView) $hTreeView.Remove(sKey) sKey = File.SetName(sKey, sNewName) AddDir(File.Dir(sKey), File.Name(sKey)) Object.Unlock($hTreeView) $hTreeView[sKey].Selected = True $bDeleteOnCancel = False If $bRefreshAfterRename Then RefreshViewLater Catch $hTreeView[sKey].Text = File.Name(sKey) Message.Error(("Cannot rename directory.") & "\n\n" & Error.Text) End Public Sub TreeView_Cancel() Dim sParent As String $bInRename = False If Not $bDeleteOnCancel Then Return sParent = $hTreeView.Item.ParentKey Try Rmdir $hTreeView.Item.Key $hTreeView.Item.Delete $hTreeView[sParent].Selected = True $bDeleteOnCancel = False If $bRefreshAfterRename Then RefreshViewLater End Public Sub NewFolder() Dim sDir As String Dim sPath As String Dim iInd As Integer sDir = ("New folder") iInd = 1 Do If Not Exist(Current_Read() &/ sDir) Then Break Inc iInd sDir = ("New folder") & " (" & CStr(iInd) & ")" Loop sPath = Current_Read() &/ sDir Mkdir sPath AddDir(Current_Read(), sDir) $bDeleteOnCancel = True $bInRename = True $bRefreshAfterRename = False $hTreeView[sPath].Rename Catch Message.Error(("Cannot create directory.") & "\n\n" & Error.Text) End Public Sub Rename() Dim sPath As String Try sPath = $hTreeView.Current.Key If sPath Then $bInRename = True $hTreeView[sPath].Rename Endif End Private Sub FindAfter(hView As TreeView, sText As String, Optional sParent As String) As String Dim sAfter As String 'Dim iConv As Integer With hView If sParent Then .MoveTo(sParent) .MoveChild Else .MoveFirst Endif While .Available If Comp(File.Name(.Item.Key), sText, gb.Natural + gb.IgnoreCase) > 0 Then Break 'If iConv > 0 Then Break sAfter = .Item.Key .MoveNext Wend End With Return sAfter End Public Sub Reload() RefreshView End Private Function Renaming_Read() As Boolean Return $hTreeView.Renaming End Private Function Settings_Read() As Variant[] Return [1, CVariant(ShowHidden_Read())] 'Return IIf(ShowDetailed_Read(), "1", "0") & "," & IIf(ShowHidden_Read(), "1", "0") & "," & $hColumnView.Settings End Private Sub Settings_Write(Value As Variant[]) ShowHidden_Write(Value[1]) Catch Debug Error.Where; ": "; Error.Text End Private Function HideRoot_Read() As Boolean Return $bHideRoot End Private Sub HideRoot_Write(Value As Boolean) $bHideRoot = Value UpdateHideRoot End Public Sub Watch_Create() 'Debug Last.Path;; Watch.Name DirCache[Last.Path].Invalidate RefreshViewLater End Public Sub Watch_Delete() 'Debug Last.Path;; Watch.Name DirCache[Last.Path].Invalidate Try $hTreeView.Remove(Last.Path &/ Watch.Name) 'If Not Error Then RefreshView End Public Sub Watch_MoveFrom() 'Debug Last.Path;; Watch.Name DirCache[Last.Path].Invalidate Try $hTreeView.Remove(Last.Path &/ Watch.Name) End Public Sub Watch_MoveTo() 'Debug Last.Path;; Watch.Name DirCache[Last.Path].Invalidate RefreshViewLater End Public Sub Watch_Move() 'Debug Last.Path;; Watch.Name DirCache[Last.Path].Invalidate RefreshViewLater End Public Sub Watcher_Show() 'Debug If $bWatch And If Not $cWatch Then $cWatch = New Collection RefreshView Endif End Public Sub Watcher_Hide() 'Debug $cWatch = Null End gambas-3.16.3/comp/src/gb.form/.src/File/FileView.class000066400000000000000000000617431411575327000224220ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Class Watch Public Const _Properties As String = "*,Border=True,Mode{Select.*}=Single,Dir,ShowDetailed,ShowHidden,ShowDirectory,ShowPreview" Public Const _DefaultEvent As String = "Click" Public Const _Group As String = "View" Event {Select} Event Click Event Activate Event Menu Event Icon(Path As String) Property {Dir} As String Property Current As String '' Return the current selected path. '' '' It's an equivalent of '[../dir] &/ [../current]'. Property Read Path As String Property ShowHidden As Boolean Property ShowDirectory As Boolean Property Mode As Integer Property ShowDetailed As Boolean Property ShowPreview As Boolean Property Selection As String[] Property Filter As String[] Property Icon As Picture Property IconSize As Integer Property Border As Boolean Property Settings As Variant[] Property Read Count As Integer Property Background As Integer Property Foreground As Integer Static Private $cExt As New Collection(gb.IgnoreCase) Private Const PREFIX_DIR As String = "0" Private Const PREFIX_FILE As String = "1" Private $sDir As String Private $bShowHidden As Boolean Private $bShowDir As Boolean Private $bShowPreview As Boolean Private $hIconView As IconView Private $hInfoFont As Font Private $hColumnView As ColumnView Private $sSortDir As String Private $iSort As Integer Private $bAsc As Boolean = True Private $hVoidView As TextLabel Private $aFilter As String[] Private $hPict As Picture Private $hRefresh As Timer Private $bRefreshTriggered As Boolean Private $iIconSize As Integer = 32 Private $bDesktopIsLoaded As Boolean Private $hPreview As CTaskPreview Private $hEnsureVisible As Timer Private $hWatch As Watch Private $bWatch As Boolean Private $bRefreshIcon As Boolean Private $bRefreshAll As Boolean Private $hWatcher As Watcher Private $bVisible As Boolean Private $bInvalidate As Boolean Static Private $iIconExecSize As Integer Static Private $hIconExec As Picture Private picLock As PictureBox Static Public Sub _init() $cExt["html"] = "html" $cExt["htm"] = "html" $cExt["css"] = "html" $cExt["tar"] = "archive" $cExt["gz"] = "archive" $cExt["tgz"] = "archive" $cExt["bz2"] = "archive" $cExt["z"] = "archive" $cExt["zip"] = "archive" $cExt["txt"] = "text" $cExt["json"] = "text" $cExt["mp3"] = "audio" $cExt["aac"] = "audio" $cExt["ogg"] = "audio" $cExt["wav"] = "audio" $cExt["mpg"] = "video" $cExt["mpeg"] = "video" $cExt["avi"] = "video" $cExt["wmv"] = "video" $cExt["mov"] = "video" $cExt["gambas"] = "gambas" $cExt["c"] = "text" $cExt["cpp"] = "text" $cExt["h"] = "text" $cExt["deb"] = "package" $cExt["rpm"] = "package" $cExt["iso"] = "cdrom" $cExt["jpg"] = "image" $cExt["jpeg"] = "image" $cExt["png"] = "image" $cExt["gif"] = "image" $cExt["xpm"] = "image" $cExt["bmp"] = "image" $cExt["ico"] = "image" $cExt["xcf"] = "image" $cExt["svg"] = "image" $cExt["pdf"] = "pdf" $cExt["ttf"] = "font" $cExt["otf"] = "font" $cExt["bdf"] = "font" End Static Public Sub _exit() Try DirCache.Exit End Public Sub _new() $bDesktopIsLoaded = Component.IsLoaded("gb.desktop") $bWatch = Component.IsLoaded("gb.inotify") If $bWatch Then $hWatcher = New Watcher(Me) As "Watcher" With $hIconView = New IconView(Me) As "View" .Sorted = True .IconLines = 3 End With With $hColumnView = New ColumnView(Me) As "View" .Columns.Count = 3 .Columns[0].Text = ("Name") .Columns[0].Expand = False .Columns[1].Text = ("Size") .Columns[1].Alignment = Align.Right .Columns[2].Text = ("Last modified") .Visible = False .Sorted = True .Resizable = True .AutoResize = False End With $hVoidView = New TextLabel(Me) $hVoidView.Alignment = Align.Center $hVoidView.Text = ("No file in this folder.") $hVoidView.Font.Grade = 2 $hVoidView.Foreground = Color.LightForeground $hVoidView.Visible = False Me.Proxy = GetView() $hRefresh = New Timer As "Refresh" $hEnsureVisible = New Timer As "EnsureVisible" RefreshViewLater End Private Function CheckFilter(sFile As String) As Boolean Dim sFilter As String For Each sFilter In $aFilter If sFile Like sFilter Then Return Next Return True End Private Sub GetMimeIcon(sPath As String, iSize As Integer) As Picture Try Return DirCache[File.Dir(sPath)].GetMimeIcon(File.Name(sPath), iSize).Picture End Private Sub GetIcon(sPath As String, iSize As Integer) As Picture Dim sIcon As String Dim hPict As Picture $hPict = Null Try Raise Icon(sPath) If $hPict Then Return $hPict If IsDir(sPath) Then Return 'If $bShowPreview And If $cPreview.Exist(sPath) Then Return $cPreview[sPath].Picture ' If $bShowPreview And If $aImgExt.Exist(File.Ext(sPath), gb.IgnoreCase) < 0 Then ' If Stat(sPath).Size <= 65536 Then ' ' Try hImage = Image.Load(sPath) ' If Not Error Then ' If Not (hImage.Width = iSize And hImage.Height = iSize) Then ' If hImage.Width > hImage.Height Then ' hImage = hImage.Stretch(iSize, (iSize * hImage.Height) \ hImage.Width) ' Else ' hImage = hImage.Stretch((iSize * hImage.Width) \ hImage.Height, iSize) ' Endif ' Endif ' ' hIcon = New Image(hImage.W + 4, hImage.H + 4, Color.Transparent) ' Paint.Begin(hIcon) ' Paint.AntiAlias = False ' Paint.LineWidth = 2 ' Paint.Rectangle(0, 0, hIcon.W, hIcon.H) ' Paint.Background = Color.Merge(GetView().Background, Color.Gray) ' Paint.Stroke ' Paint.End ' hIcon.DrawImage(hImage, 2, 2) ' ' Return hIcon.Picture ' Else ' Return Picture["icon:/" & iSize & "/image"] ' Endif ' ' Endif ' ' Endif If $bDesktopIsLoaded Then hPict = GetMimeIcon(sPath, iSize) If hPict Then Return hPict Endif Try sIcon = $cExt[File.Ext(sPath)] If sIcon Then Return Picture["icon:/" & CStr(iSize) &/ sIcon] With DirCache[File.Dir(sPath)].GetInfo(File.Name(sPath)) If InStr(.Perm[System.User.Name], "x") Then If Not $hIconExec Or If $iIconExecSize <> iSize Then $iIconExecSize = iSize $hIconExec = Picture["icon:/" & CStr(iSize) &/ "exec"] Endif Return $hIconExec Endif End With Catch Error "gb.form: unable to get icon for file: "; File.Name(sPath); ": "; Error.Text End Private Sub GetSelection() As String[] Dim hView As Object Dim aSel As New String[] If $hIconView.Visible Then hView = $hIconView Else hView = $hColumnView Endif hView.MoveFirst While hView.Available If hView.Item.Selected Then aSel.Add(hView.Item.Key) Endif hView.MoveNext Wend Return aSel End Private Sub GetIconSize() As Integer If $hColumnView.Visible Then Return Stock.GetSize("small") Else Return $iIconSize Endif End Private Sub GetCurrentDir() As String If $sDir Then Return $sDir Else Return User.Home Endif End Static Public Sub _GetHiddenColor() As Integer Return Color.Merge(Color.TextBackground, Color.TextForeground, 0.66) End Private Sub ShowLock() If Not picLock Then picLock = New PictureBox(Me) picLock.Picture = Picture["img/lock.png"] picLock.Ignore = True picLock.Mode = PictureBox.Cover picLock.ResizeScaled(8, 8) Watcher_Resize Endif picLock.Show picLock.Raise End Private Sub HideLock() If picLock Then picLock.Hide End Private Sub RefreshView() Dim sFile As String Dim sDir As String Dim hPictFile As Picture Dim hPictFolder As Picture Dim hPict As Picture Dim sPrefix As String Dim iSize As Integer Dim aSel As String[] Dim aDir As New String[] Dim I As Integer Dim sText As String Dim bRichText As Boolean Dim hCache As DirCache Dim iHiddenFg As Integer Dim SX As Integer Dim SY As Integer Dim sKey As String Dim aPreview As New String[] Dim sExt As String Dim bVoid As Boolean Dim iSort As Integer Dim bSortAscent As Boolean Inc Application.Busy $bRefreshTriggered = False iHiddenFg = _GetHiddenColor() aSel = GetSelection() If $hColumnView.Visible Then SX = $hColumnView.ScrollX SY = $hColumnView.ScrollY If Not $bWatch Or If $bRefreshAll Then $hColumnView.Clear $hColumnView._Begin() Endif iSort = $hColumnView.Columns.Sort bSortAscent = $hColumnView.Columns.Ascending $hColumnView.Sorted = False hPictFile = Picture["icon:/small/file"] hPictFolder = Picture["icon:/small/directory"] Else SX = $hIconView.ScrollX SY = $hIconView.ScrollY If Not $bWatch Or If $bRefreshAll Then $hIconView.Clear $hIconView._Begin hPictFile = Picture["icon:/" & $iIconSize & "/file"] hPictFolder = Picture["icon:/" & $iIconSize & "/directory"] $hInfoFont = $hIconView.Font.Copy() $hInfoFont.Size *= 0.7 Endif iSize = GetIconSize() sDir = GetCurrentDir() If $bWatch And If $bVisible Then If Not $hWatch Or If $hWatch.Path <> sDir Then $hWatch = New Watch(sDir) As "Watch" Endif Endif hCache = DirCache[sDir] If $bInvalidate Then hCache.Invalidate $bInvalidate = False Endif 'Try aDir = Dir(sDir, "*").Sort() Try aDir = hCache.GetFiles() If Error Then ShowLock() Else HideLock() hCache.Lock For Each sFile In aDir If Not $bShowHidden And If Left(sFile) = "." Or Right(sFile) = "~" Then Continue 'With Stat(sDir &/ sFile) With hCache.GetInfo(sFile) If hCache.IsDir(sFile) Then If Not $bShowDir Then Continue sPrefix = PREFIX_DIR Else If $aFilter And If CheckFilter(sFile) Then Continue sPrefix = PREFIX_FILE Endif sKey = sPrefix & sFile hPict = GetIcon(sDir &/ sFile, iSize) If Not hPict Then If hCache.IsDir(sFile) Then hPict = hPictFolder Else hPict = hPictFile Endif Endif bRichText = False sText = Replace(sFile, "\n", "") If .Link Then sText = "" & sText & "" bRichText = True Endif If .Hidden Then sText = "" & sText & "" bRichText = True Endif If $hColumnView.Visible Then If Not $hColumnView.Exist(sKey) Then $hColumnView.Add(sKey, sText, hPict).Editable = Access(sDir, gb.Write) GoSub ADD_PREVIEW Else $hColumnView[sKey].Editable = Access(sDir, gb.Write) If $bRefreshIcon Then $hColumnView[sKey].Picture = hPict GoSub ADD_PREVIEW Endif Endif $hColumnView[sKey][1] = " " & Main.GetFileSize(.Size) $hColumnView[sKey][2] = " " & Str(.Time) If bRichText Then $hColumnView[sPrefix & sFile].RichText = sText Else If Not $hIconView.Exist(sKey) Then $hIconView.Add(sKey, sText, hPict).Editable = Access(sDir, gb.Write) GoSub ADD_PREVIEW Else $hIconView[sKey].Editable = Access(sDir, gb.Write) If $bRefreshIcon Then $hIconView[sKey].Picture = hPict GoSub ADD_PREVIEW Endif Endif If bRichText Then $hIconView[sKey].RichText = sText Endif End With Next bVoid = aDir.Count = 0 hCache.Unlock If $hColumnView.Visible Then For I = 1 To $hColumnView.Columns.Max $hColumnView.Columns[I].W = -1 Next $hColumnView.Columns[0].W = -1 $hColumnView.Columns[0].Width = Min(Desktop.Scale * 64, $hColumnView.Columns[0].Width) Endif For Each sFile In aSel Try GetView()[sFile].Selected = True Next If aPreview.Count Then RunPreview(aPreview) Endif Finally $bRefreshIcon = False $bRefreshAll = False If $hColumnView.Visible Then $hColumnView._End $hColumnView.Sorted = True $hColumnView.Columns.Sort = iSort $hColumnView.Columns.Ascending = bSortAscent Else $hIconView._End Endif Try GetView().Scroll(SX, SY) If bVoid Then $hVoidView.Show $hVoidView.Raise Else $hVoidView.Hide Endif Dec Application.Busy Catch Error "gb.form: "; Error.Where; ": "; Error.Text Return ADD_PREVIEW: If Not $bShowPreview Then Return sExt = LCase(File.Ext(sFile)) If Not sExt Then Return If $cExt[sExt] <> "image" Then Return aPreview.Add(sFile) Return End Private Sub RunPreview(aPreview As String[]) If $hPreview Then $hPreview.Stop $hPreview = New CTaskPreview(GetCurrentDir(), GetIconSize(), aPreview) As "TaskPreview" End Public Sub TaskPreview_Read(Data As String) Dim iPos As Integer Dim sPath As String Dim sPreview As String Dim sLine As String If Not $bShowPreview Then Return For Each sLine In Split(Data, "\n", "", True) If sLine = "." Then Try $hPreview.Stop Return Endif iPos = InStr(sLine, "\t") sPath = Left(sLine, iPos - 1) sPreview = Mid$(sLine, iPos + 1) Try GetView()[PREFIX_FILE & sPath].Picture = Image.Load(sPreview).Picture Next End Public Sub TaskPreview_Kill() If $hPreview = Last Then $hPreview = Null End Private Sub RefreshViewLater(Optional bClear As Boolean) If $bRefreshTriggered Then If bClear Then $bRefreshAll = True Return Endif If $hRefresh.Enabled Then $hRefresh.Stop $bRefreshAll = bClear $bRefreshTriggered = True $hRefresh.Trigger End Public Sub _RefreshViewAfter() If $bRefreshTriggered Then Return If $hRefresh.Enabled Then Return $hRefresh.Delay = 100 $hRefresh.Start End Public Sub Refresh_Timer() If Not $bRefreshTriggered And Not $hRefresh.Enabled Then Return RefreshView $hRefresh.Stop End Public Sub Reload() $bInvalidate = True RefreshViewLater(True) End Private Function Dir_Read() As String Return $sDir End Private Sub Dir_Write(sDir As String) $sDir = sDir RefreshViewLater(True) End Private Function ShowHidden_Read() As Boolean Return $bShowHidden End Private Sub ShowHidden_Write(bShowHidden As Boolean) If bShowHidden = $bShowHidden Then Return $bShowHidden = bShowHidden RefreshViewLater(True) End Private Function ShowDirectory_Read() As Boolean Return $bShowDir End Private Sub ShowDirectory_Write(bShow As Boolean) If $bShowDir = bShow Then Return $bShowDir = bShow RefreshViewLater(True) End Private Function GetView() As Object If $hIconView.Visible Then Return $hIconView Else Return $hColumnView Endif End Private Function Current_Read() As String If GetView().Current.Selected Then Return Mid$(GetView().Current.Key, 2) Catch End Private Sub EnsureRefresh() Refresh_Timer End Public Sub EnsureVisible_Timer() Dim hItem As Object hItem = GetView().Current If Not hItem Then Return With hItem If Not .Selected Then Return .EnsureVisible End With End Private Sub Current_Write(sFile As String) Dim sKey As String 'Debug sFile If sFile = Current_Read() Then Return EnsureRefresh GetView().UnselectAll sKey = PREFIX_DIR & sFile If Not GetView().Exist(sKey) Then sKey = PREFIX_FILE & sFile If Not GetView().Exist(sKey) Then Return GetView()[sKey].Selected = True $hEnsureVisible.Trigger End ' Private Function Font_Read() As Font ' ' Return Super.Font ' ' End ' ' Private Sub Font_Write(hFont As Font) ' ' Super.Font = hFont ' RefreshGrid ' ' End Private Function ShowDetailed_Read() As Boolean Return $hColumnView.Visible End Private Sub ShowDetailed_Write(bDetailed As Boolean) Dim hOld As Control If bDetailed = ShowDetailed_Read() Then Return If bDetailed Then hOld = $hIconView $hColumnView.Show Else hOld = $hColumnView $hIconView.Show Endif hOld.Hide Me.Proxy = GetView() Me.Background = hOld.Background Me.Foreground = hOld.Foreground $bRefreshAll = True RefreshView TakeSelection End Public Sub View_Select() Raise {Select} End Public Sub View_Click() Raise Click End Public Sub View_Activate() Raise Activate End Public Sub View_Menu() Raise Menu End Public Sub View_BeforeSort() $sSortDir = GetCurrentDir() If $hColumnView.Visible Then $iSort = $hColumnView.Columns.Sort $bAsc = $hColumnView.Columns.Ascending Else $hIconView.Ascending = $bAsc Endif End Public Sub View_Compare((Key) As String, OtherKey As String) Dim hStat As Stat Dim hStat2 As Stat Dim iComp As Integer iComp = Comp(Asc(Key), Asc(OtherKey)) If iComp = 0 Then If $iSort Then hStat = DirCache[$sSortDir].GetInfo(Mid$(Key, 2)) hStat2 = DirCache[$sSortDir].GetInfo(Mid$(OtherKey, 2)) Endif Select $iSort Case 1 iComp = Sgn(hStat.Size - hStat2.Size) Case 2 iComp = Sgn(hStat.Time - hStat2.Time) End Select If iComp = 0 Then iComp = Comp(Key, OtherKey, gb.IgnoreCase + gb.Natural) 'IF NOT $bAsc THEN iComp = (- iComp) Endif Last.Compare = iComp Catch End Private Sub Mode_Write(iMode As Integer) $hIconView.Mode = iMode $hColumnView.Mode = iMode End Private Function Mode_Read() As Integer Return $hIconView.Mode End Private Function Selection_Read() As String[] Dim hView As Object Dim aSel As New String[] EnsureRefresh hView = GetView() hView.MoveFirst While hView.Available If hView.Item.Selected Then aSel.Add(Mid$(hView.Item.Key, 2)) Endif hView.MoveNext Wend Return aSel End Private Sub Selection_Write(Value As String[]) Dim hView As Object Dim sFile As String Dim hCache As DirCache If $hIconView.Mode = Select.None Then Return EnsureRefresh hCache = DirCache[GetCurrentDir()] hView = GetView() hView.UnselectAll For Each sFile In Value sFile = If(hCache.IsDir(sFile), PREFIX_DIR, PREFIX_FILE) & sFile Try hView[sFile].Selected = True Next End Private Sub TakeSelection() Dim hSrc As Object Dim hDst As Object If $hIconView.Mode = Select.None Then Return hSrc = $hIconView hDst = $hColumnView If $hIconView.Visible Then Swap hSrc, hDst If $hIconView.Mode = Select.Single Then If hSrc.Current And If hSrc.Current.Selected Then Object.Lock(hDst) hDst[hSrc.Key].Selected = True hDst[hSrc.Key].EnsureVisible Object.Unlock(hDst) Endif Return Endif hDst.UnselectAll hSrc.MoveFirst While hSrc.Available If hSrc.Item.Selected Then Object.Lock(hDst) hDst[hSrc.Item.Key].Selected = True Object.Unlock(hDst) Endif hSrc.MoveNext Wend End Private Function Filter_Read() As String[] Return $aFilter End Private Sub Filter_Write(aFilter As String[]) $aFilter = aFilter.Copy() RefreshViewLater(True) End Private Function Icon_Read() As Picture Return $hPict End Private Sub Icon_Write(Value As Picture) $hPict = Value End Private Function Border_Read() As Boolean Return $hColumnView.Border End Private Sub Border_Write(Value As Boolean) $hColumnView.Border = Value $hIconView.Border = Value End Private Function Settings_Read() As Variant[] Return [1, CVariant(ShowDetailed_Read()), ShowHidden_Read(), $hColumnView.Settings, $iIconSize, ShowPreview_Read()] 'Return IIf(ShowDetailed_Read(), "1", "0") & "," & IIf(ShowHidden_Read(), "1", "0") & "," & $hColumnView.Settings End Private Sub Settings_Write(Value As Variant[]) If TypeOf(Value[0]) = gb.Integer Then ShowDetailed_Write(Value[1]) ShowHidden_Write(Value[2]) $hColumnView.Settings = Value[3] IconSize_Write(Value[4]) If Value.Count >= 6 Then ShowPreview_Write(Value[5]) Else ShowDetailed_Write(Value[0]) ShowHidden_Write(Value[1]) $hColumnView.Settings = Value[2] Endif Catch Error "gb.form :"; Error.Where; ": "; Error.Text End Private Function Count_Read() As Integer If $hIconView.Visible Then Return $hIconView.Count Else Return $hColumnView.Count Endif End ' PUBLIC SUB View_MouseMove() ' ' IF $hIconView.Visible THEN RETURN ' ' IF $hColumnView.Find(Mouse.X, Mouse.Y) THEN RETURN ' DEBUG $hColumnView.Item.Text ' ' END Private Function IconSize_Read() As Integer Return $iIconSize End Private Sub IconSize_Write(Value As Integer) $iIconSize = Value $bRefreshIcon = True RefreshViewLater $hIconView.GridSize = Min(40, (Value + 8) \ 3) End Public Sub SelectAll() If $hIconView.Mode <> Select.Multiple Then Return EnsureRefresh GetView().SelectAll() End Public Sub UnselectAll() If $hIconView.Mode <> Select.Multiple Then Return GetView().UnselectAll() End Private Function Background_Read() As Integer Return $hColumnView.Background End Private Sub Background_Write(Value As Integer) $hIconView.Background = Value $hColumnView.Background = Value End Private Function Foreground_Read() As Integer Return $hColumnView.Foreground End Private Sub Foreground_Write(Value As Integer) $hIconView.Foreground = Value $hColumnView.Foreground = Value End Private Function ShowPreview_Read() As Boolean Return $bShowPreview End Private Sub ShowPreview_Write(Value As Boolean) If $bShowPreview = Value Then Return $bShowPreview = Value $bRefreshIcon = True RefreshViewLater End Public Sub Rename() Dim hView As Object = GetView() Dim sPath As String Try sPath = hView.Current.Key If sPath Then hView[sPath].Rename Endif End Public Sub View_Cancel() Reload End Public Sub View_Rename() Dim hView As Object = GetView() Dim sKey As String = hView.Item.Key Dim sOldPath As String = GetCurrentDir() &/ Mid$(sKey, 2) Dim sNewName As String = hView.Item.Text Dim sMsg As String If sNewName = File.Name(sOldPath) Then Return sMsg = Help.CheckFileName(sNewName) If sMsg Then Balloon.Warning(sMsg, hView, hView.Item.X + Min(32 + Desktop.Scale * 8, hView.Item.W) / 2, hView.Item.Y + hView.Item.H / 2) Stop Event Return Endif Move sOldPath To File.SetName(sOldPath, sNewName) 'sParent = File.Dir(sKey) ' TODO: Optimization Object.Lock(hView) hView.Remove(sKey) Mid$(sKey, 2) = sNewName 'AddDir(File.Dir(sKey), File.Name(sKey)) RefreshView Object.Unlock(hView) Try hView.Key = sKey Catch hView[sKey].Text = File.Name(sOldPath) Message.Error(("Cannot rename file.") & "\n\n" & Error.Text) End Private Sub GetWatchKey() As String If Watch.IsDir Then Return PREFIX_DIR & Watch.Name Else Return PREFIX_FILE & Watch.Name Endif End Public Sub Watch_Create() DirCache[GetCurrentDir()].Invalidate RefreshViewLater End Public Sub Watch_Delete() DirCache[GetCurrentDir()].Invalidate Try GetView().Remove(GetWatchKey()) If Not Error Then RefreshViewLater End Public Sub Watch_MoveFrom() DirCache[GetCurrentDir()].Invalidate Try GetView().Remove(GetWatchKey()) If Not Error Then RefreshViewLater End Public Sub Watch_MoveTo() DirCache[GetCurrentDir()].Invalidate RefreshViewLater End Public Sub Watch_Stat() RefreshViewLater End Public Sub Watcher_Hide() 'Debug $hWatch = Null $bVisible = False End Public Sub Watcher_Show() 'Debug $bVisible = True RefreshViewLater End Public Sub Watcher_Resize() If picLock And If picLock.Visible Then picLock.Move((Me.W - picLock.W) \ 2, (Me.H - picLock.H) \ 2) Endif End Public Sub View_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, (Key) As String, Optional (Column) As Integer) 'Dim iSize As Long 'Dim hFont As Font Dim H As Integer Dim hStat As Stat Dim dDate As Date Dim sDate As String Dim sAuth As String If Not $hIconView.Visible Then Return H = $hInfoFont.H If $iIconSize < (H * 4) Then Return Try hStat = Stat($sDir &/ Mid$(Key, 2)) If Error Then Return Paint.Background = Color.Merge(Style.ForegroundOf(Last), Style.BackgroundOf(Last), 0.3) If System.RightToLeft Then Width = (Width - $iIconSize - H) \ 2 Else X += (Width + $iIconSize + H) \ 2 Endif 'Paint.Save Paint.Font = $hInfoFont Y += Desktop.Scale Paint.DrawText(Main.GetFileSize(hStat.Size), X, Y, Width, Height, Align.TopNormal) If $iIconSize < (H * 5) Then Return dDate = hStat.LastModified If Date(dDate) = Date(Now) Then sDate = Format(dDate, gb.LongTime) Else sDate = Format(dDate, gb.MediumDate) Endif Y += H * 1.25 Paint.DrawText(sDate, X, Y, Width, Height, Align.TopNormal) If $iIconSize < (H * 6) Then Return sAuth = hStat.Auth sAuth = Left(sAuth, 3) & " " & Mid$(sAuth, 4, 3) & " " & Mid$(sAuth, 7) Y += H * 1.25 Paint.DrawText(sAuth, X, Y, Width, Height, Align.TopNormal) End Private Function Path_Read() As String Dim sCurrent As String = Current_Read() If sCurrent Then Return $sDir &/ sCurrent End gambas-3.16.3/comp/src/gb.form/.src/File/Properties/000077500000000000000000000000001411575327000220025ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/File/Properties/CTaskDirSize.class000066400000000000000000000022541411575327000253330ustar00rootroot00000000000000' Gambas class file Inherits Task Private $sDir As String Private $fTime As Float Private $nTime As Integer Private $nFile As Integer Private $nDir As Integer Private $iSize As Long Public Sub _new(sDir As String) $sDir = sDir End Private Sub ScanDir(sDir As String) Dim sFile As String Dim sPath As String Dim hStat As Stat Dim aDir As String[] Try aDir = Dir(sDir) If Error Then Error Error.Text & ": " & sDir Return Endif For Each sFile In aDir sPath = sDir &/ sFile Try hStat = Stat(sPath) If Error Then Error Error.Where & ": " & Error.Text & ": " & sPath Continue Endif With hStat If .Type = gb.Directory Then Inc $nDir ScanDir(sPath) Else If IsDir(sPath) Then Inc $nDir Else Inc $nFile Endif Try $iSize += .Size End With If (Timer - $fTime) >= ($nTime / 5) Then $nTime = CInt((Timer - $fTime) * 5) + 1 Print $iSize;; $nFile;; $nDir Endif Next End Public Sub Main() As String $fTime = Timer $nTime = 1 ScanDir($sDir) Return CStr($iSize) & " " & CStr($nFile) & " " & CStr($nDir) End gambas-3.16.3/comp/src/gb.form/.src/File/Properties/FFileProperties.class000066400000000000000000000231101411575327000260700ustar00rootroot00000000000000' Gambas class file Class DesktopMime Class MediaView Static Private $aImgExt As String[] = ["png", "jpg", "jpeg", "gif", "bmp", "xpm"] Static Private $aAudioExt As String[] = ["wav", "mp3", "ogg", "flac"] Static Private $aVideoExt As String[] = ["mp4", "mov", "avi", "mpg", "mpeg", "flv", "wmv", "mkv"] Private $sPath As String Private $iSize As Long Private $hTask As Task Private $sError As String Private $bPreview As Boolean Private $hPreview As Image Private $hViewer As MediaView Private TAB_IMAGE_PREVIEW As Integer = 1 Private TAB_MEDIA_PREVIEW As Integer = 2 Private TAB_ERROR As Integer = 3 Private $bMedia As Boolean Private $bIgnoreNextTaskError As Boolean Public Sub Run(sPath As String) As Boolean SetPath(sPath) btnClose.Show panMediaClose.Show 'tabInfo.Border = False Me.Margin = True Return Not FFileProperties.ShowModal() End Private Sub FormatPath(sPath As String) As String If sPath Begins System.User.Home & "/" Then sPath = "~" &/ Mid$(sPath, Len(System.User.Home) + 2) Endif Return sPath End Public Sub GetPath() As String Return $sPath End Public Sub SetPath(sPath As String) $bIgnoreNextTaskError = True Try $hTask.Stop $sPath = sPath $bPreview = False RefreshPath tabInfo_Click End Private Sub RefreshPath() Dim hParent As FileProperties = Me.Parent Dim hData As _FilePropertiesData Dim hMime As DesktopMime Dim hLabel As Label Dim W As Integer Dim sAuth As String Dim bShowImagePreview As Boolean Dim bShowMediaPreview As Boolean If hParent Then hData = hParent._RaiseData() lblDir.Text = FormatPath(File.Dir($sPath)) If String.Len(lblDir.Text) >= 32 Then lblDir.Tooltip = lblDir.Text If Exist($sPath) Then With DirCache[File.Dir($sPath)].GetInfo(File.Name($sPath)) If hData Then lblType.Text = hData.Type picIcon.Picture = hData.Icon Else If .Link Then lblType.Text = ("Link") 'lblType.Font.Italic = True hMime = DesktopMime.FromFile($sPath) Try picIcon.Picture = hMime.GetIcon(64).Picture Else If IsDir($sPath) Then picIcon.Picture = Picture["icon:/64/directory"] lblType.Text = ("Directory") Else If Component.IsLoaded("gb.desktop") Then hMime = DesktopMime.FromFile($sPath) If hMime Then lblType.Text = String.UCaseFirst(hMime.GetComment()) Try picIcon.Picture = hMime.GetIcon(64).Picture If Error Then Error "gb.form: unable to find icon for mimetype: "; hMime.GenericIcon If hMime.Type Like "image/*" Then bShowImagePreview = True Else If $bMedia And If hMime.Type Like "{video,audio}/*" Then bShowMediaPreview = True Else If $bMedia And If hMime.Type Like "audio/*" Then bShowMediaPreview = True Endif Endif Else If $aImgExt.Exist(File.Ext($sPath), gb.IgnoreCase) Then picIcon.Picture = Picture["icon:/64/image"] lblType.Text = ("Image") bShowImagePreview = True Else If $bMedia Then If $aAudioExt.Exist(File.Ext($sPath), gb.IgnoreCase) Then picIcon.Picture = Picture["icon:/64/audio"] lblType.Text = ("Audio") bShowMediaPreview = True Else If $aVideoExt.Exist(File.Ext($sPath), gb.IgnoreCase) Then picIcon.Picture = Picture["icon:/64/video"] lblType.Text = ("Video") bShowMediaPreview = True Endif Endif Endif If .Link Then lblLabelLink.Show lblLink.Show lblLink.Text = .Link Else lblLabelLink.Hide lblLink.Hide Endif If IsDir($sPath) Then $hTask = New CTaskDirSize($sPath) As "Task" $iSize = .Size UpdateSize() lblLastModified.Text = Format(.LastModified, gb.GeneralDate) sAuth = .Auth 'sAuth = Left$(sAuth, 3) & " " & Mid$(sAuth, 4, 3) & " " & Right$(sAuth, 3) lblAuth.Text = sAuth lblUser.Text = .User lblGroup.Text = .Group End With Else lblLabelType.Text = ("Type") lblType.Text = "" lblLastModified.Text = "" lblAuth.Text = "" lblUser.Text = "" lblGroup.Text = "" lblSize.Text = "" Endif tabInfo[TAB_IMAGE_PREVIEW].Visible = bShowImagePreview tabInfo[TAB_MEDIA_PREVIEW].Visible = bShowMediaPreview For Each hLabel In panProperty.Children If hLabel.Expand Then Continue hLabel.Foreground = Color.Merge(Color.Foreground, Color.LightForeground) W = Max(W, hLabel.Font.TextWidth(hLabel.Text)) Next For Each hLabel In panProperty.Children If hLabel.Expand Then Continue hLabel.W = W + Desktop.Scale * 3 Next lblName.Text = File.Name($sPath) If Me Is Window Then Me.Title = Subst(("&1 properties"), lblName.Text) End ' Public Sub Form_Open() ' ' Me.Title = Subst(("&1 properties"), File.Name($sPath)) ' ' End Public Sub btnOK_Click() Me.Close End Private Sub UpdateSize(Optional sDirSize As String) Dim sSize As String Dim aDirSize As String[] Dim nDir, nFile As Integer If sDirSize Then aDirSize = Split(sDirSize, " ") Try $iSize = CLong(aDirSize[0]) If Error Then Return Try nFile = CInt(aDirSize[1]) Try nDir = CInt(aDirSize[2]) Endif sSize = Main.GetFileSize($iSize) If $iSize >= 1000 Then sSize &= " (" & Subst(("&1 B"), Format($iSize, "#,###")) & ")" If sDirSize Then sSize &= "\n" If nFile = 0 Then sSize &= ("no file") Else If nFile = 1 sSize &= ("one file") Else sSize &= Format(nFile, ",#") & " " & ("files") Endif sSize &= ", " If nDir = 0 Then sSize &= ("no directory") Else If nDir = 1 sSize &= ("one directory") Else sSize &= Format(nDir, ",#") & " " & ("directories") Endif lblSize.H = Desktop.Scale * 6 Endif lblSize.Text = sSize End Public Sub Form_Close() $bIgnoreNextTaskError = True Try $hTask.Stop End Public Sub Task_Read(sData As String) UpdateSize(Trim(sData)) lblSize.Foreground = Color.LightForeground End Private Sub ShowError(Optional sErr As String) If $bIgnoreNextTaskError Then $bIgnoreNextTaskError = False Return Endif If sErr Then $sError &= sErr & "\n" tabInfo[TAB_ERROR].Visible = True txtError.Text = $sError End Public Sub Task_Error(Data As String) ShowError(RTrim(Data)) End Public Sub Task_Kill() Try UpdateSize(Last.Value) If Error Then ShowError(Error.Text) lblSize.Foreground = Color.Default End Public Sub Add(hPanel As Control, sTitle As String) As Integer Dim I As Integer = tabInfo.Index Dim N As Integer = tabInfo.Count Object.Lock(tabInfo) Inc tabInfo.Count tabInfo[N].Text = sTitle tabInfo.Index = N hPanel.Reparent(tabInfo) HPanel.Expand = True hPanel.Show tabInfo.Index = I Object.Unlock(tabInfo) Return tabInfo.Count - 1 End Public Sub Form_Arrange() Dim D As Integer If btnClose.Visible Then D = Desktop.Scale If Me.Margin Then D += Desktop.Scale btnClose.Move(Me.ClientW - btnClose.W - D, Me.ClientH - btnClose.H - D) Endif End Public Sub btnClose_Click() Me.Close End Public Sub GetBorder() As Boolean Return tabInfo.Border End Public Sub SetBorder(bBorder As Boolean) tabInfo.Border = bBorder End Public Sub _new() panIcon.H = 64 + Desktop.Scale * 2 picIcon.Resize(64, 64) tabInfo[TAB_IMAGE_PREVIEW].Visible = False tabInfo[TAB_MEDIA_PREVIEW].Visible = False tabInfo[TAB_ERROR].Visible = False $bMedia = Component.IsLoaded("gb.media") End Public Sub tabInfo_Click() Dim hParent As FileProperties = Me.Parent If tabInfo.Index = TAB_IMAGE_PREVIEW Then If Not $bPreview Then $bPreview = True $hPreview = Image.Load($sPath) imvPreview.Image = $hPreview If Not btnZoomFit.Value Then btnZoomFit.Value = True Else btnZoomFit_Click Endif Endif Else If tabInfo.Index = TAB_MEDIA_PREVIEW Then If Not $bPreview Then $bPreview = True If Not $hViewer Then Component.Load("gb.media.form") $hViewer = New MediaView(tabInfo) $hViewer.Expand = True $hViewer.Border = False $hViewer.Lower Endif $hViewer.URL = $sPath $hViewer.Play panMediaClose.Raise Endif Endif If hParent Then hParent._RaiseClick() Catch ShowError(Error.Text) End Private Sub UpdateLabel() lblSizePreview.Text = CStr($hPreview.W) & " × " & CStr($hPreview.H) & " (" & Format(imvPreview.Zoom, "0%") & ")" End Public Sub sldZoom_Change() imvPreview.Zoom = 2 ^ (sldZoom.Value / 4) UpdateLabel End Public Sub btnZoomNormal_Click() btnZoomFit.Value = False sldZoom.Value = 0 imvPreview.Zoom = 1 UpdateLabel End Public Sub btnZoomIn_Click() If Not sldZoom.Enabled Then btnZoomNormal_Click Else sldZoom.Value += 4 Endif End Public Sub btnZoomOut_Click() If Not sldZoom.Enabled Then btnZoomNormal_Click Else sldZoom.Value -= 4 Endif End Public Sub btnZoomFit_Click() If btnZoomFit.Value Then imvPreview.ZoomFit UpdateLabel sldZoom.Enabled = False Else sldZoom.Enabled = True sldZoom_Change Endif End Public Sub imvPreview_Arrange() If tabInfo.Index = TAB_IMAGE_PREVIEW Then If btnZoomFit.Value Then btnZoomFit_Click Endif End Public Sub GetIndex() As Integer Return tabInfo.Index End Public Sub SetIndex(Value As Integer) As Integer tabInfo.Index = Value End gambas-3.16.3/comp/src/gb.form/.src/File/Properties/FFileProperties.form000066400000000000000000000106621411575327000257360ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,55,56) Arrangement = Arrange.Vertical { tabInfo TabPanel MoveScaled(1,1,52,51) Expand = True Arrangement = Arrange.Vertical Count = 4 Index = 0 Text = ("General") { panIcon HBox MoveScaled(0,0,48,10) Spacing = True Margin = True { picIcon PictureBox MoveScaled(3,1,10,8) Picture = Picture["icon:/64/file"] AutoResize = True } { lblName TextLabel MoveScaled(19,1,26,4) Font = Font["Bold"] Expand = True Alignment = Align.Normal } } { panProperty Panel MoveScaled(0,12,50,34) Expand = True Arrangement = Arrange.Row Margin = True { lblLabelType Label MoveScaled(1,1,18,4) Alignment = Align.TopNormal Text = ("Type") } { lblType Label MoveScaled(22,1,26,4) Expand = True Alignment = Align.TopNormal } { lblLabelLink Label MoveScaled(1,5,18,4) Visible = False Alignment = Align.TopNormal Text = ("Link") } { lblLink Label MoveScaled(22,5,26,4) Visible = False Font = Font["Italic"] Expand = True Alignment = Align.TopNormal } { Label3 Label MoveScaled(1,9,18,4) Alignment = Align.TopNormal Text = ("Directory") } { lblDir Label MoveScaled(22,9,26,4) Expand = True Alignment = Align.TopNormal } { Label4 Label MoveScaled(1,13,18,4) Alignment = Align.TopNormal Text = ("Size") } { lblSize Label MoveScaled(22,13,26,4) Expand = True Alignment = Align.TopNormal } { Label5 Label MoveScaled(1,17,18,4) Alignment = Align.TopNormal Text = ("Last modified") } { lblLastModified Label MoveScaled(22,17,26,4) Expand = True Alignment = Align.TopNormal } { Label6 Label MoveScaled(1,21,18,4) Alignment = Align.TopNormal Text = ("Permissions") } { lblAuth Label MoveScaled(22,21,26,4) Font = Font["Monospace"] Expand = True Alignment = Align.TopNormal } { Label7 Label MoveScaled(1,25,18,4) Alignment = Align.TopNormal Text = ("Owner") } { lblUser Label MoveScaled(22,25,26,4) Expand = True Alignment = Align.TopNormal } { Label8 Label MoveScaled(1,29,18,4) Alignment = Align.TopNormal Text = ("Group") } { lblGroup Label MoveScaled(22,29,26,4) Expand = True Alignment = Align.TopNormal } } Index = 1 Text = ("Preview") { HBox2 HBox MoveScaled(1,1,49,4) { sldZoom Slider MoveScaled(0,0,8,4) Expand = True MinValue = -16 MaxValue = 16 Step = 10 } { btnZoomNormal ToolButton MoveScaled(28,0,4,4) Picture = Picture["icon:/small/zoom-normal"] } { btnZoomIn ToolButton MoveScaled(32,0,4,4) Picture = Picture["icon:/small/zoom-in"] } { btnZoomOut ToolButton MoveScaled(36,0,4,4) Picture = Picture["icon:/small/zoom-out"] } { btnZoomFit ToolButton MoveScaled(40,0,4,4) Picture = Picture["icon:/small/zoom-fit"] Toggle = True } } { Separator4 Separator MoveScaled(21,6,17,0) } { imvPreview ImageView MoveScaled(7,7,38,26) Expand = True Border = False } { HBox1 HBox MoveScaled(1,36,50,6) Margin = True { lblSizePreview Label MoveScaled(1,1,21,3) } } Index = 2 Text = ("Preview") { panMediaClose VBox MoveScaled(12,35,37,6) Visible = False { Separator3 Separator MoveScaled(12,1,21,0) } } Index = 3 Text = ("Errors") Picture = Picture["icon:/small/warning"] { txtError TextArea MoveScaled(3,6,16,16) Font = Font["Monospace,-1"] Expand = True ReadOnly = True Border = False } { Separator2 Separator MoveScaled(15,30,15,0) } { Panel1 Panel MoveScaled(10,33,4,6) } Index = 0 } { btnClose Button MoveScaled(31,51,17,4) Visible = False Ignore = True Text = ("Close") Default = True Cancel = True } } gambas-3.16.3/comp/src/gb.form/.src/File/Properties/FileProperties.class000066400000000000000000000027631411575327000257750ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border=True" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "View" Event Data Event Click Property Path As String Property Border As Boolean Property Read Data As _FilePropertiesData Property Index As Integer Private frmDialog As FFileProperties Private $hData As _FilePropertiesData Public Sub _new() frmDialog = New FFileProperties(Me) 'Object.Attach(frmDialog, Me, "frmDialog") End Private Function Path_Read() As String Return frmDialog.GetPath() End Private Sub Path_Write(Value As String) frmDialog.SetPath(Value) End Public Sub Add((Panel) As Control, Title As String) As Integer Return frmDialog.Add(Panel, Title) End Private Function Border_Read() As Boolean Return frmDialog.GetBorder() End Private Sub Border_Write(Value As Boolean) frmDialog.SetBorder(Value) End Private Function Data_Read() As _FilePropertiesData If Not $hData Then Error.Raise("Data property unavailable") Return $hData End Public Sub _RaiseData() As _FilePropertiesData Dim bCancel As Boolean If Not Object.CanRaise(Me, "Data") Then Return $hData = New _FilePropertiesData bCancel = Raise Data If bCancel Then Return Return $hData End Public Sub _RaiseClick() Raise Click End Private Function Index_Read() As Integer Return frmDialog.GetIndex() End Private Sub Index_Write(Value As Integer) frmDialog.SetIndex(Value) End gambas-3.16.3/comp/src/gb.form/.src/File/Properties/_FilePropertiesData.class000066400000000000000000000001121411575327000267100ustar00rootroot00000000000000' Gambas class file Export Public Type As String Public Icon As Picture gambas-3.16.3/comp/src/gb.form/.src/FileCompletion.class000066400000000000000000000014021411575327000227240ustar00rootroot00000000000000' Gambas class file Export Inherits Completion Public Sub _new() Me.Delay = 50 End Public Sub Fill(Text As String, (Explicit) As Boolean) Dim sDir As String Dim iPos As Integer Dim sStart As String Dim I As Integer sDir = Text If sDir And If Left(sDir) <> "/" And If sDir Not Begins "~/" Then Return iPos = RInStr(sDir, "/") sStart = Mid$(sDir, iPos + 1) sDir = Left(sDir, iPos) If Not IsDir(sDir) Then Return Me.List = Dir(sDir, sStart & "*").Sort(gb.IgnoreCase + gb.Natural) Me.Start = String.Len(sDir) Me.Icons = New String[Me.List.Count] For I = 0 To Me.List.Max If IsDir(sDir &/ Me.List[I]) Then Me.Icons[I] = "icon:/16/directory" Else Me.Icons[I] = "icon:/16/file" Endif Next End gambas-3.16.3/comp/src/gb.form/.src/Font/000077500000000000000000000000001411575327000176755ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Font/FFontChooser.class000066400000000000000000000411221411575327000232630ustar00rootroot00000000000000' Gambas class file Public Family As String Public Bold As Boolean Public Italic As Boolean Public Underline As Boolean Public Strikeout As Boolean Public Size As Integer Public Grade As Integer Public ShowFixed As Boolean Public StylePanel As Container Public Preview As Control Static Private $cCache As New Collection Private $iNoChange As Integer Private $bNoRefresh As Boolean Private $sLast As String Private $bShowLabel As Boolean Private $sSplitFont As String Private $aSplitFont As String[] Private $bShowFont As Boolean Private $sLastFilter As String Private $hTask As FontCacheTask Private $hObs As Observer Public Sub _new() Inc $iNoChange $bNoRefresh = True $bShowFont = True StylePanel = panStyle Preview = txtExample SetFont("") $hObs = New Observer(Me.Window) As "Window" End Public Sub Form_Open() 'RefreshFamily UpdateRelative txtSize_Change Dec $iNoChange End ' Private Sub RefreshGrade() ' ' Dim iInd As Integer ' Dim H As Integer ' Dim hFont As Font ' Dim sGrade As String ' ' If $bNoRefresh Then Return ' If chkSize.Value Then Return ' ' Inc Application.Busy ' ' For iInd = 0 To NBR_GRADE - 1 ' sGrade = Trim(Format(FIRST_GRADE + iInd, "+#")) ' hFont = Font[GetFont(sGrade)] ' H = hFont.Height + 4 ' With $hGrade[iInd] ' .Font = hFont ' .Height = H ' .Text = " " & sGrade & " " & Family ' .Tag = FIRST_GRADE + iInd ' If .Tag = Grade Then ' lstGrade.Select($hGrade[iInd]) ' Endif ' End With ' Next ' ' Dec Application.Busy ' ' End Private Sub IsSeparator(sCar As String) As Boolean If Not IsPunct(sCar) Then Return If InStr("()[]{}", sCar) Then Return Return True End Private Sub SplitFont(sFont As String, N As Integer) As String Dim I As Integer Dim sCar As String If sFont <> $sSplitFont Then $sSplitFont = sFont $aSplitFont = New String[] sFont = " " & sFont & " " While Len(sFont) > 1 For I = 2 To Len(sFont) sCar = Mid$(sFont, I, 1) If IsSeparator(sCar) Or If IsSpace(sCar) Then Goto SPLIT_FONT If IsUCase(sCar) Then sCar = Mid$(sFont, I - 1, 1) If IsSeparator(sCar) Or If IsSpace(sCar) Or IsUCase(sCar) Then Continue If Not IsLetter(Mid(sFont, I + 1, 1)) Then Continue Goto SPLIT_FONT Endif Continue SPLIT_FONT: $aSplitFont.Add(Left$(sFont, I - 1)) sFont = Mid$(sFont, I) Break Next Wend Endif If N <= $aSplitFont.Count Then Return Trim($aSplitFont.Copy(0, N - 1).Join("")) ' For I = 1 To Len(sFont) ' sCar = Mid$(sFont, I, 1) ' If IsUCase(sCar) Or If IsPunct(sCar) Or If sCar = " " Then ' If S Then ' If (I - S) >= 2 Or If sCar = " " Or If IsPunct(sCar) Then ' Dec N ' If N = 0 Then Return RTrim(Left$(sFont, I - 1)) ' Endif ' Endif ' S = I ' Endif ' Next End Private Sub FillFamily() Dim sFont As String Dim cFont As Collection Dim aFont As String[] Dim I As Integer Dim sParentFont As String Dim hParent As Menu Dim iCount As Integer Dim cParent As New Collection Dim sFilter As String Dim H As Integer sFilter = Trim(txtFilter.Text) If tvwFamily.Count And If sFilter = $sLastFilter Then Return $sLastFilter = sFilter Inc Application.Busy tvwFamily.Clear H = tvwFamily.Font.H * 2 cFont = New Collection aFont = New String[] For Each sFont In Fonts If ShowFixed Then If Not Font[sFont].Fixed Then Continue Endif If sFilter And If InStr(sFont, sFilter, 1, gb.IgnoreCase) = 0 Then Continue For I = 16 DownTo 1 sParentFont = SplitFont(sFont, I) If Not sParentFont Then Continue If Not cFont.Exist(sParentFont) Then cFont[sParentFont] = 0 aFont.Add(sParentFont) Else Inc cFont[sParentFont] Break Endif Next cFont[sFont] = 1000 aFont.Add(sFont) Next aFont.Sort(gb.Natural + gb.IgnoreCase) ' For Each sFont In aFont ' Print cFont[sFont];; sFont ' Next tvwFamily._Begin() For Each sFont In aFont iCount = cFont[sFont] If iCount = 0 Then Continue hParent = Null For I = 16 DownTo 1 sParentFont = SplitFont(sFont, I) If Not sParentFont Then Continue If cParent.Exist(sParentFont) Then Break sParentFont = "" Next If sParentFont And If tvwFamily[sParentFont].Children = 0 Then With tvwFamily[sParentFont] If cFont[sParentFont] >= 1000 Then .H = H .Tag = sParentFont Else .Foreground = Color.Merge(Color.LightForeground, Color.TextForeground) .Background = Color.Merge(Color.LightForeground, Color.TextBackground, 0.8) If .Depth = 0 Then .Expanded = True .Font = Font["-2"] .RichText = "" .Text = sParentFont .H = 0 .Tag = "" Endif End With Endif With tvwFamily.Add(sFont, "",, sParentFont) .H = H .Tag = sFont End With cParent[sFont] = True Next 'UpdateShowFont tvwFamily._End() Dec Application.Busy End ' Private Sub UpdateShowFont() ' ' Dim sKey As String ' ' For Each sKey In tvwFamily.Keys ' ' With tvwFamily[sKey] ' If .Children = 0 Then ' If sKey Begins "." Then sKey = Mid$(sKey, 2) ' If $bShowFont Then ' .Font = Font[sKey & ",+4"] ' Else ' .Font = Null ' Endif ' '.Text = "\n" & .Text & "\n" ' Endif ' End With ' ' Next ' ' End ' Public Sub RefreshFamily(Optional bForce As Boolean) Dim hFont As Font Dim sFamily As String Dim bExist As Boolean If bForce Then tvwFamily.Clear If $bNoRefresh Then Return Inc $iNoChange If tvwFamily.Visible Then FillFamily If EnsureFontVisible() Then tvwFamily.MoveFirst() Try Family = tvwFamily.Item.Key EnsureFontVisible Endif Else cmbFamily.Clear For Each sFamily In Fonts hFont = Font[sFamily] If ShowFixed And Not hFont.Fixed Then Continue cmbFamily.Add(sFamily) If sFamily = Family Then bExist = True Next If bExist Then cmbFamily.Text = Family Else cmbFamily.Index = 0 Endif Family = cmbFamily.Text Endif Dec $iNoChange RefreshExample End Private Sub EnsureFontVisible() As Boolean Dim sKey As String sKey = "." & Family If Not tvwFamily.Exist(sKey) Then sKey = Family If Not tvwFamily.Exist(sKey) Then Return True With tvwFamily[sKey] .Selected = True 'tvwFamily[sKey].EnsureVisible tvwFamily.ScrollY = .Y + tvwFamily.ScrollY - (tvwFamily.ClientH - .H) \ 2 End With End Public Sub SetFont(sFont As String) Dim hFont As Font = Font[sFont] Dim bRelative As Boolean Dim sElt As String bRelative = True For Each sElt In Split(sFont, ",") sElt = Trim(sElt) If InStr("0+-", Left(sElt)) = 0 And If IsDigit(Left(sElt)) Then bRelative = False Break Endif Next Family = hFont.Name Bold = hFont.Bold Italic = hFont.Italic Underline = hFont.Underline StrikeOut = hFont.StrikeOut Size = hFont.Size Grade = hFont.Grade btnRelative.Value = bRelative EnsureFontVisible btnBold.Value = Bold btnItalic.Value = Italic btnUnderline.Value = Underline btnStrikeout.Value = StrikeOut 'chkUnderline.Value = UnderLine 'chkStrikeout.Value = StrikeOut If bRelative Then txtSize.Value = Grade Else txtSize.Value = Size Endif txtExample.Text = ("How quickly daft jumping zebras vex") & "\n0123456789 àéîöùÀÉÎÖÙ [({*%#" RefreshExample End Public Function GetFont() As String Dim sFont As String sFont = Family If IsDigit(sFont) Then sFont = Quote(sFont) If Bold Then sFont &= ",Bold" If Italic Then sFont &= ",Italic" If Underline Then sFont &= ",Underline" If Strikeout Then sFont &= ",Strikeout" If btnRelative.Value Then If Grade Then sFont &= "," & Trim(Format(Grade, "+#")) Else sFont &= "," & Size Endif Return sFont End Private Sub GetParent() As Object Return Me.Parent End Private Sub RefreshExample() Dim sFont As String = GetFont() If $bNoRefresh Then Return If sFont = $sLast And If panExample.Expand = cmbFamily.Visible Then Return If panExample.Visible Then txtFamily.Text = " " & Family txtExample.Font = Font[sFont] If cmbFamily.Visible Then panExample.Expand = True Else panExample.Expand = False panExample.H = Max(Desktop.Scale * 8, Min(Desktop.Scale * 16, txtExample.Font.Height * 2)) + Desktop.Scale * 2 Endif Endif Size = Font[sFont].Size Grade = Font[sFont].Grade sldSize.Value = txtSize.Value If $iNoChange = 0 Then GetParent()._Change If Not panExample.Visible Then GetParent()._Activate $sLast = sFont End Public Sub tvwFamily_Select() If Not tvwFamily.Current Then Return If tvwFamily.Current.Tag Then Family = tvwFamily.Key If Family Begins "." Then Family = Mid$(Family, 2) RefreshExample Endif End Public Sub cmbFamily_Click() Family = cmbFamily.Text RefreshExample End Public Sub btnBold_Click() Bold = btnBold.Value RefreshExample End Public Sub btnItalic_Click() Italic = btnItalic.Value RefreshExample End Public Sub txtSize_Change() If btnRelative.Value Then Grade = txtSize.Value Else Size = txtSize.Value Endif sldSize.Value = txtSize.Value RefreshExample End Private Sub UpdateRelative() Object.Lock(txtSize) Object.Lock(sldSize) If btnRelative.Value Then txtSize.MinValue = -8 txtSize.MaxValue = 24 txtSize.Value = Grade txtSize.ShowSign = True sldSize.PageStep = 1 Else txtSize.MinValue = 1 txtSize.MaxValue = 256 txtSize.Value = Size txtSize.ShowSign = False sldSize.PageStep = 4 Endif sldSize.MinValue = txtSize.MinValue sldSize.MaxValue = txtSize.MaxValue Object.Unlock(txtSize) Object.Unlock(sldSize) txtSize_Change End Public Sub btnRelative_Click() UpdateRelative txtSize.SetFocus End ' Public Sub chkUnderline_Click() ' ' Underline = chkUnderline.Value ' RefreshExample ' ' End ' ' ' Public Sub chkStrikeout_Click() ' ' Strikeout = chkStrikeout.Value ' RefreshExample ' ' End Public Sub SetShowLabel(bVisible As Boolean) ' lblFamily.Visible = bVisible ' lblSize.Visible = bVisible ' lblStyle.Visible = bVisible $bShowLabel = bVisible End Public Sub IsShowLabel() As Boolean Return $bShowLabel End Public Sub sldSize_Change() txtSize.Value = sldSize.Value End Public Sub panFont_BeforeArrange() If (panFont.W - txtSize.W - sldSize.X) < 64 Then sldSize.Hide Else sldSize.Show Endif End Public Sub HasBorder() As Boolean Return panBorder.Border End Public Sub SetBorder(bBorder As Boolean) panBorder.Border = If(bBorder, Border.Plain, Border.None) End Public Sub btnUnderline_Click() Underline = btnUnderline.Value RefreshExample End Public Sub btnStrikeout_Click() Strikeout = btnStrikeout.Value RefreshExample End Private Sub UpdateRefreshButton() btnRefresh.Visible = $bShowFont And Not spnCache.Visible End Private Sub StartCacheTask() If Me.Design Then Return If $hTask Then Return If Not panFilter.Visible Then Return If Me.Window.Minimized Then Return $hTask = New FontCacheTask As "FontCacheTask" spnCache.Value = 0 spnCache.Show spnCache.Start UpdateRefreshButton End Private Sub StopCacheTask() If Not $hTask Then Return $hTask.Stop $hTask = Null End Public Sub panBorder_BeforeArrange() Dim bHasFocus As Boolean bHasFocus = Me.HasFocus If panBorder.H < (Desktop.Scale * 32) Then If tvwFamily.Visible Then tvwFamily.Hide panFilter.Hide txtFamily.Hide cmbFamily.Show cmbFamily.Lower StopCacheTask RefreshFamily Endif If panBorder.H < (Desktop.Scale * 18) Then panExample.Hide Else panExample.Show Endif Else If cmbFamily.Visible Then cmbFamily.Hide txtFamily.Show panExample.Show tvwFamily.Show panFilter.Show RefreshFamily StartCacheTask Endif Endif sepFilter.Visible = panFilter.Visible sepTree.Visible = tvwFamily.Visible And panExample.Visible sepToolbar.Visible = tvwFamily.Visible Or panExample.Visible RefreshExample Me.Proxy = If(panFilter.Visible, txtFilter, cmbFamily) If bHasFocus Then Me.SetFocus End Public Sub SetShowRelative(bRelative As Boolean) btnRelative.Visible = bRelative If Not bRelative Then btnRelative.Value = False End Public Sub GetShowRelative() As Boolean Return btnRelative.Visible End Public Sub tvwFamily_Activate() If tvwFamily.Current.Children Then Return GetParent()._Activate() End Public Sub SetShowFont(bShow As Boolean) If $bShowFont = bShow Then Return $bShowFont = bShow UpdateRefreshButton tvwFamily.Refresh btnPreview.Value = $bShowFont End Public Sub HasShowFont() As Boolean Return $bShowFont End Public Sub txtFilter_Filter() RefreshFamily End Public Sub txtFilter_KeyPress() Dim hGridView As Container Dim hScrollArea As Control If Key.Normal Then If Key.Code = Key.Down Or If Key.Code = Key.Up Or If Key.Code = Key.PageUp Or If Key.Code = Key.PageDown Then Goto SEND_TO_LIST Else If Key.Code = Key.Return Or If Key.Code = Key.Enter Then If tvwFamily.Current.Children Then hGridView = tvwFamily.Children[0] hScrollArea = hGridView.Children[0] Object.Raise(hGridView, "KeyPress") Stop Event Else GetParent()._Activate() Endif Endif Else If Key.Control Then If Key.Code = Key.Home Or If Key.Code = Key.End Then Goto SEND_TO_LIST Endif Endif Return SEND_TO_LIST: hGridView = tvwFamily.Children[0] hScrollArea = hGridView.Children[0] Object.Raise(hScrollArea, "KeyPress") Stop Event End Public Sub tvwFamily_GotFocus() txtFilter.SetFocus End Public Sub Form_Show() $bNoRefresh = False panBorder_BeforeArrange RefreshFamily End Public Sub tvwFamily_Draw(X As Integer, Y As Integer, (Width) As Integer, Height As Integer, (Key) As String, (Column) As Integer) Dim sFont As String Dim hImage As Image Dim sDir As String Dim sPath As String Dim hItem As _TreeView_Item Dim sFontKey As String Dim D As Integer hItem = tvwFamily[Key] sFont = hItem.Tag If Not sFont Then Return D = (1 + hItem.Depth) * tvwFamily.Indent If Not $bShowFont Then Paint.Font.Grade = 2 Paint.DrawText(sFont, X + D, Y, Width - D, Height, Align.Normal) Return Endif sFontKey = FontCacheTask.Normalize(sFont) hImage = $cCache[sFontKey] If Not hImage Then sDir = FontCacheTask.GetDir() sPath = sDir &/ sFontKey & ".png" Try hImage = Image.Load(sPath) If Not hImage Then hImage = FontCacheTask.CreateFontCacheImage(sFont) $cCache[sFont] = hImage Endif Paint.DrawImage(hImage, X + D, Y + (Height - hImage.H) \ 2) 'tvwFamily.MoveTo(Key) ' If hItem.Depth = 0 Or If tvwFamily.MoveNext() Then Paint.FillRect(0, Y + Height + Desktop.Scale \ 2 - 1, Width + Desktop.Scale, 1, Color.Merge(Color.LightForeground, Color.TextBackground, 0.8)) End Public Sub Form_Close() StopCacheTask End Public Sub FontCacheTask_Read(Data As String) Dim aData As String[] Dim iPos As Integer Data = RTrim(Data) iPos = RInStr(Data, "\n") If iPos Then Data = Mid$(Data, iPos + 1) aData = Split(Data, " ") spnCache.Value = CInt(aData[0]) / CInt(aData[1]) End Public Sub FontCacheTask_Kill() spnCache.Stop spnCache.Hide UpdateRefreshButton End Public Sub btnRefresh_Click() Dim sDir As String StopCacheTask sDir = Main.GetCacheDir() &/ "gambas3/gb.form/fonts" Try Shell "rm -rf " & Shell(sDir) & "~" Wait Try Move sDir To sDir & "~" Try Shell "rm -rf " & Shell(sDir) & "~" Wait $cCache.Clear StartCacheTask End Public Sub Window_Show() StartCacheTask End Public Sub Window_Hide() StopCacheTask End Public Sub Window_State() Dim hWin As Window hWin = Last If hWin.Minimized Then StopCacheTask Else StartCacheTask Endif End Public Sub txtSize_LostFocus() txtSize.ReadOnly = True End Public Sub txtSize_Enter() txtSize.ReadOnly = False txtSize.SetFocus txtSize.SelectAll End Public Sub btnPreview_Click() SetShowFont(btnPreview.Value) End gambas-3.16.3/comp/src/gb.form/.src/Font/FFontChooser.form000066400000000000000000000061501411575327000231230ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,80,64) Arrangement = Arrange.Fill { panBorder Panel MoveScaled(2,2,77,60) Arrangement = Arrange.Vertical Border = Border.Plain { cmbFamily ComboBox MoveScaled(40,1,27,4) ReadOnly = True } { panFilter HBox MoveScaled(4,7,70,4) Background = Color.TextBackground { txtFilter ButtonBox MoveScaled(0,0,51,4) Expand = True Picture = Picture["icon:/small/refresh"] Border = False Button = False ClearButton = True Filter = True } { spnCache Spinner MoveScaled(56,0,4,4) Visible = False ToolTip = ("Building cache") & "..." Margin = True Type = Spinner.Circle } { btnRefresh ToolButton MoveScaled(61,0,4,4) ToolTip = ("Refresh cache") Picture = Picture["icon:/small/refresh"] } { btnPreview ToolButton MoveScaled(65,0,4,4) ToolTip = ("Show font preview") Picture = Picture["icon:/small/preview"] Toggle = True Value = True } } { sepFilter Separator MoveScaled(17,14,35,0) } { txtFamily Label MoveScaled(14,15,36,3) Alignment = Align.BottomNormal } { panFont HBox MoveScaled(3,19,73,4) { panStyle HBox MoveScaled(0,0,16,4) { btnBold ToolButton MoveScaled(0,0,4,4) ToolTip = ("Bold") Picture = Picture["icon:/small/text-bold"] Toggle = True } { btnItalic ToolButton MoveScaled(4,0,4,4) ToolTip = ("Italic") Picture = Picture["icon:/small/text-italic"] Toggle = True } { btnUnderline ToolButton MoveScaled(8,0,4,4) ToolTip = ("Underline") Picture = Picture["icon:/small/text-underline"] Toggle = True } { btnStrikeout ToolButton MoveScaled(12,0,4,4) ToolTip = ("Strikeout") Picture = Picture["icon:/small/text-strike"] Toggle = True } } { btnRelative CheckBox MoveScaled(17,0,11,4) AutoResize = True Text = ("Relative") } { Panel1 Panel MoveScaled(29,0,1,4) } { sldSize Slider MoveScaled(32,0,15,4) Expand = True Orientation = ScrollBar.Horizontal } { txtSize SpinBox MoveScaled(63,0,8,4) Alignment = Align.Right ReadOnly = True ShowSign = True } } { sepToolbar Separator MoveScaled(15,24,35,0) } { tvwFamily TreeView MoveScaled(3,26,66,14) Expand = True Border = False ScrollBar = Scroll.Vertical } { sepTree Separator MoveScaled(17,44,35,0) } { panExample Panel MoveScaled(4,47,62.875,10.875) Background = Color.TextBackground Arrangement = Arrange.Vertical Margin = True { txtExample Label MoveScaled(0,3,62,5) Background = Color.TextBackground Foreground = Color.TextForeground Expand = True } } } } gambas-3.16.3/comp/src/gb.form/.src/Font/FontBox.class000066400000000000000000000037751411575327000223170ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Border=True" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "32,4" Public Const _Similar As String = "TextBox" Public Const _Group As String = "Chooser" Event Click Event Change Property Value As String Property Border As Boolean Property Default As String Private $hButtonBox As ButtonBox Private $bDefault As Boolean Private $sDefault As String Public Sub _new() $sDefault = Application.Font.ToString() $hButtonBox = New ButtonBox(Me) As "ButtonBox" Me.Proxy = $hButtonBox $hButtonBox.Picture = Picture["icon:/small/font"] $hButtonBox.ReadOnly = True $hButtonBox.ClearButton = True UpdateFont("", True) End Private Function Border_Read() As Boolean Return $hButtonBox.Border End Private Sub Border_Write(Value As Boolean) $hButtonBox.Border = Value End Private Function Value_Read() As String If $bDefault Then Return Return $hButtonBox.Text End Private Sub UpdateFont(sFont As String, Optional bForce As Boolean) If sFont = Value_Read() And If Not bForce Then Return If Not sFont Then $hButtonBox.Text = $sDefault $hButtonBox.Foreground = Color.LightForeground $bDefault = True Else $hButtonBox.Text = sFont $hButtonBox.Foreground = Color.Foreground $bDefault = False Endif Raise Change End Private Sub Value_Write(Value As String) UpdateFont(Value) End Public Sub ButtonBox_Click() Dialog.Font = Font[$hButtonBox.Text] If Dialog.SelectFont() Then Return UpdateFont(Dialog.Font.ToString()) Raise Click End Public Sub ButtonBox_Clear() UpdateFont("", True) Raise Click End Public Sub ButtonBox_KeyPress() If Key.Code = Key.Delete Or Key.Code = Key.Backspace Then UpdateFont("") Endif End Private Function Default_Read() As String Return $sDefault End Private Sub Default_Write(Value As String) $sDefault = Value If $bDefault Then $hButtonBox.Text = $sDefault End gambas-3.16.3/comp/src/gb.form/.src/Font/FontCacheTask.class000066400000000000000000000035521411575327000234060ustar00rootroot00000000000000' Gambas class file Inherits Task Static Public Sub Normalize(sFont As String) As String Dim I As Integer Dim sCar As String Dim sStr As String For I = 1 To Len(sFont) sCar = Mid$(sFont, I, 1) If sCar <= " " Then sStr &= "_" Else If IsLetter(sCar) Then sStr &= UCase(sCar) Else If IsDigit(sCar) Then sStr &= sCar Else sStr &= "%" & Hex$(Asc(sCar), 2) Endif If Len(sStr) >= 240 Then Break Next Return sStr End Static Public Sub GetDir() As String Dim sDir As String Dim sComp As String sDir = Main.GetCacheDir() &/ "gambas3/gb.form/fonts" For Each sComp In ["gb.gtk", "gb.gtk3", "gb.qt4", "gb.qt5"] If Component.IsLoaded(sComp) Then sDir &/= sComp Break Endif Next Return sDir End Static Public Sub CreateFontCacheImage(sFont As String) As Image Dim sDir As String Dim sPath As String Dim hFont As Font Dim hSize As Rect Dim hImage As Image Dim sTemp As String sDir = GetDir() sPath = sDir &/ Normalize(sFont) & ".png" If Exist(sPath) Then Return Main.MkDir(sDir) hFont = Font[sFont & ",+2"] hSize = hFont.TextSize(sFont) If hSize.IsVoid() Then hFont = Font["+2"] hSize = hFont.TextSize(sFont) If hSize.IsVoid() Then Return Endif hImage = New Image(hSize.W + 1, hSize.H, Color.Transparent) Paint.Begin(hImage) Paint.Font = hFont Paint.DrawText(sFont, 0, 0, hImage.W, hImage.H, Align.Normal) Paint.End sTemp = sDir &/ "~" & CStr(Application.Handle) & ".png" Try Kill sTemp hImage.Save(sTemp) Move sTemp Kill sPath Return hImage End Public Sub Main() Dim sFont As String Dim N As Integer Dim I As Integer Application.Priority = 19 N = Fonts.Count For Each sFont In Fonts CreateFontCacheImage(sFont) Inc I Print I;; N Flush Next End gambas-3.16.3/comp/src/gb.form/.src/Font/FontChooser.class000066400000000000000000000051471411575327000231640ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Event Change Event Activate Public Const _Properties As String = "*,Border=True,FixedOnly,ShowStyle=True,ShowPreview=True,ShowRelative=True,ShowFont=True" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "Chooser" Property SelectedFont As String Property Value As String Property FixedOnly As Boolean Property ShowStyle As Boolean Property ShowPreview As Boolean Property ShowLabel As Boolean '' Deprecated Property ShowRelative As Boolean '' Return or set if font preview is displayed Property ShowFont As Boolean Property Border As Boolean Private frmChooser As FFontChooser Public Sub _new() frmChooser = New FFontChooser(Me) Me.Proxy = frmChooser 'Object.Attach(frmChooser, ME, "frmChooser") End Public Sub _Change() Raise Change End ' PUBLIC SUB frmChooser_Open() ' ' frmChooser.Form_Open ' ' END ' ' PUBLIC SUB frmChooser_Resize() ' ' frmChooser.Form_Resize ' ' END Private Function SelectedFont_Read() As String Return frmChooser.GetFont() End Private Sub SelectedFont_Write(sFont As String) frmChooser.SetFont(sFont) End Public Sub _Activate() Raise Activate End Private Function FixedOnly_Read() As Boolean Return frmChooser.ShowFixed End Private Sub FixedOnly_Write(bFixedOnly As Boolean) frmChooser.ShowFixed = bFixedOnly frmChooser.RefreshFamily(True) End Private Function ShowStyle_Read() As Boolean Return frmChooser.StylePanel.Visible End Private Sub ShowStyle_Write(Value As Boolean) frmChooser.StylePanel.Visible = Value End Private Function Value_Read() As String Return frmChooser.GetFont() End Private Sub Value_Write(Value As String) frmChooser.SetFont(Value) End Private Function ShowPreview_Read() As Boolean Return frmChooser.Preview.Visible End Private Sub ShowPreview_Write(Value As Boolean) frmChooser.Preview.Visible = Value End Private Function ShowLabel_Read() As Boolean Return frmChooser.IsShowLabel() End Private Sub ShowLabel_Write(Value As Boolean) frmChooser.SetShowLabel(Value) End Private Function Border_Read() As Boolean Return frmChooser.HasBorder() End Private Sub Border_Write(Value As Boolean) frmChooser.SetBorder(Value) End Private Function ShowRelative_Read() As Boolean Return frmChooser.GetShowRelative() End Private Sub ShowRelative_Write(Value As Boolean) frmChooser.SetShowRelative(Value) End Private Function ShowFont_Read() As Boolean Return frmChooser.HasShowFont() End Private Sub ShowFont_Write(Value As Boolean) frmChooser.SetShowFont(Value) End gambas-3.16.3/comp/src/gb.form/.src/Help.module000066400000000000000000000031221411575327000210640ustar00rootroot00000000000000' Gambas module file Public Sub GotoNext(hCtrl As Control, Optional bSelect As Boolean) Dim hTextBox As TextBox hCtrl = hCtrl.Next If hCtrl And If Object.Type(hCtrl) <> "TextBox" Then hCtrl = hCtrl.Next Endif If hCtrl Then hTextBox = hCtrl hCtrl.SetFocus hCtrl.Pos = 0 If bSelect Then hCtrl.SelectAll Endif End Public Sub GotoPrevious(hCtrl As Control, Optional bSelect As Boolean) Dim hTextBox As TextBox hCtrl = hCtrl.Previous If hCtrl And If Object.Type(hCtrl) <> "TextBox" Then hCtrl = hCtrl.Previous Endif If hCtrl Then hTextBox = hCtrl hCtrl.SetFocus hCtrl.Pos = hCtrl.Length If bSelect Then hCtrl.SelectAll Endif End Public Sub ManageKeyPress(sCar As String, aTextBox As Object[]) Dim hLast As TextBox = Last If Asc(Key.Text) >= 32 And Asc(Key.Text) < 127 Then If Not IsDigit(Key.Text) Then If InStr(sCar, Key.Text) Then Help.GotoNext(Last) Endif Stop Event Return Endif Else If Key.Code = Key.Home Then aTextBox[0].SelectAll aTextBox[0].SetFocus Stop Event Else If Key.Code = Key.End Then aTextBox[2].SelectAll aTextBox[2].SetFocus Stop Event Else If Key.Code = Key.Left Then If hLast.Pos = 0 Then GotoPrevious(Last) Else If Key.Code = Key.Right Then If hLast.Pos = hLast.Length Then GotoNext(Last) Endif End Public Sub CheckFileName(sName As String) As String If Not sName Then Return ("A file or directory name cannot be void.") If InStr(sName, "/") Then Return ("The '/' character is forbidden inside file or directory names.") End gambas-3.16.3/comp/src/gb.form/.src/IconPanel/000077500000000000000000000000001411575327000206375ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/IconPanel/IconPanel.class000066400000000000000000000167231411575327000235470ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Count{Range:1;256}=1,Index,Text,TextFont,Picture,Border" Public Const _Similar As String = "TabStrip" Public Const _IsMultiContainer As Boolean = True Public Const _DefaultEvent As String = "Click" Event Click Property Count As Integer Property Index As Integer Property Text As String Property Picture As Picture Property TextFont As Font Property Border As Boolean Private $hView As GridView Private $aCont As New _IconPanelContainer[] Private $iCurrent As Integer = -1 Private $hPanel As Panel Private $hBorder As Panel Private $hSep As Separator Private Const MIN_WIDTH_PANEL As Integer = 16 Private $iIconSize As Integer Public Sub _new() Me.Spacing = True $hBorder = New Panel(Me) $hBorder.Arrangement = Arrange.Horizontal $hView = New GridView($hBorder) As "View" '$hView.Orientation = Arrange.Horizontal '$hView.IconLines = 2 $hView.Width = Desktop.Scale * MIN_WIDTH_PANEL $hView.Mouse = Mouse.Pointing $hView.Columns.Count = 1 $hView.Mode = Select.Single $hView.Grid = False $hView.Border = False '$hView.ScrollBar = Scroll.None $hSep = New Separator($hBorder) $hSep.W = 1 'hSpace = New Panel($hBorder) 'hSpace.W = Desktop.Scale $hPanel = New Panel($hBorder) As "Panel" $hPanel.Expand = True $hPanel.Arrangement = Arrange.Fill Border_Write(False) 'Me._Container = $hPanel Me.Count = 1 'Me.Index = 0 'Me.Border = True Me.Arrangement = Arrange.None Me.Spacing = False End Private Function Count_Read() As Integer Return $aCont.Count End Public Sub _UpdateIconViewWidth() Dim iInd As Integer Dim W, H, WC As Integer Dim hPict As Picture Dim hCont As _IconPanelContainer Dim sRichText As String $iIconSize = ((($hView.Font.Height * 3) \ 2 + 7) \ 8) * 8 W = Desktop.Scale * MIN_WIDTH_PANEL For iInd = 0 To $aCont.Max hCont = $aCont[iInd] sRichText = hCont.RichText If sRichText Then WC = $hView.Font.RichTextWidth(sRichText) + Desktop.Scale * 4 Else WC = $hView.Font.TextWidth(hCont.Text) + Desktop.Scale * 4 Endif hPict = hCont.Picture If hPict Then WC += $iIconSize * Max(1, hPict.Width / hPict.Height) + Desktop.Scale W = Max(W, WC) H = Max(H, $hView.Font.TextHeight(hCont.Text)) If hPict Then H = Max(H, $iIconSize) Next $hView.Rows.H = H + Desktop.Scale * 2 If $hView.ScrollH > ($hView.ClientH + Style.FrameWidth * 2) Then W += Style.ScrollbarSize + Style.ScrollbarSpacing $hView.W = Min(W, Me.Width / 2) End Public Sub Panel_Arrange() _UpdateIconViewWidth() End Private Sub Count_Write(iCount As Integer) Dim iInd As Integer Dim hToolbar As _IconPanelContainer Dim iCurrent As Integer If iCount < 1 Then Error.Raise("Bad argument") If iCount = $aCont.Count Then Return If iCount < $aCont.Count Then For iInd = $aCont.Max To iCount Step -1 hToolbar = $aCont[iInd] If hToolbar.Children.Count Then Error.Raise("IconPanel container is not empty") Next iCurrent = $iCurrent Object.Lock(Me) '' FIXME: Interpreter crash if this is removed! For iInd = $aCont.Max To iCount Step -1 $aCont[iInd].Delete $hView.Rows.Remove(iInd) If iInd <= iCurrent Then Dec iCurrent Next Object.Unlock(Me) $aCont.Remove(iCount, -1) $iCurrent = -1 Index_Write(iCurrent) Else $hView.Rows.Count = iCount For iInd = $aCont.Count To iCount - 1 hToolbar = New _IconPanelContainer($hPanel) As "_IconPanelContainer" hToolbar.Resize(1, 1) 'hToolbar.Text = "Toolbar " & CInt(iInd) $aCont.Add(hToolbar) '$hView.Add(iInd, "Item " & CStr(iInd)) hToolbar.Text = "Item " & CStr(iInd) Next 'ME.Container = hCont 'ME.Index = iCount - 1 Index_Write(iCount - 1) Endif _UpdateIconViewWidth End Private Function Index_Read() As Integer Return $iCurrent End Private Sub Index_Write(iIndex As Integer) If iIndex < 0 Or iIndex >= $aCont.Count Then Error.Raise("Bad index") If iIndex = $iCurrent Then Return Me._Container = $aCont[iIndex] $iCurrent = iIndex $hView.Rows[$iCurrent].Selected = True UpdateContainer Raise Click End Private Sub UpdateContainer() Dim iInd As Integer For iInd = 0 To $aCont.Max If iInd = $iCurrent $aCont[iInd].Show Else $aCont[iInd].Hide Endif Next End Private Function Text_Read() As String Return $aCont[$iCurrent].Text End Private Sub Text_Write(sText As String) $aCont[$iCurrent].Text = sText End Private Function Picture_Read() As Picture Return $aCont[$iCurrent].Picture End Private Sub Picture_Write(hPict As Picture) $aCont[$iCurrent].Picture = hPict End Public Function _get(Index As Integer) As _IconPanelContainer If Index < 0 Or Index >= $aCont.Count Then Error.Raise("Bad index") Return $aCont[Index] End Public Sub View_Font() _UpdateIconViewWidth End Private Function Border_Read() As Boolean Return $hView.Border <> Border.None End Private Sub Border_Write(bBorder As Boolean) $hView.Border = If(bBorder, Border.Plain, Border.None) $hSep.Visible = Not bBorder $hBorder.Spacing = bBorder End Private Function TextFont_Read() As Font Return $hView.Font End Private Sub TextFont_Write(Value As Font) $hView.Font = Value End Public Sub _GetView() As GridView Return $hView End Public Sub _GetIndex(hCont As _IconPanelContainer) As Integer Return $aCont.Find(hCont) End Public Sub View_Select() Index_Write($hView.Row) End Private Sub GotoIndex(iInc As Integer) Dim iIndex As Integer iIndex = $iCurrent Do iIndex += iInc If iIndex < 0 Or If iIndex > $aCont.Max Then Break If $aCont[iIndex].Visible Then Index_Write(iIndex) Break Endif Loop End Public Sub View_MouseWheel() GotoIndex(-Sgn(Mouse.Delta)) End Public Sub View_KeyPress() If $aCont.Count = 0 Then Return Select Case Key.Code Case Key.Up GotoIndex(-1) Stop Event Case Key.Down GotoIndex(1) Stop Event Case Key.Home $iCurrent = -1 GotoIndex(1) Stop Event Case Key.End $iCurrent = $aCont.Count GotoIndex(-1) Stop Event End Select End Public Sub _SetVisible(hCont As _IconPanelContainer, bVisible As Boolean) Dim iIndex As Integer = _GetIndex(hCont) Dim bBackward As Boolean If bVisible Then $hView.Rows[iIndex].H = -1 Else $hView.Rows[iIndex].H = 0 Endif If Not bVisible And If iIndex = $iCurrent Then While Not $aCont[iIndex].Visible If bBackward Then Dec iIndex If iIndex < 0 Then Return Else Inc iIndex If iIndex > $aCont.Max Then bBackward = True Endif Endif Wend Me.Index = iIndex Endif End Public Sub View_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, (Column) As Integer) Dim hCont As _IconPanelContainer Dim sRichText As String hCont = $aCont[Row] X += Desktop.Scale Width -= Desktop.Scale * 2 If hCont.Picture Then Paint.DrawPicture(hCont.Picture, X, Y + (Height - $iIconSize) \ 2, $iIconSize, $iIconSize) X += $iIconSize + Desktop.Scale Width -= $iIconSize + Desktop.Scale Endif sRichText = hCont.RichText If sRichText Then Paint.DrawRichText(sRichText, X, Y, Width, Height, Align.Normal) Else Paint.DrawText(hCont.Text, X, Y, Width, Height, Align.Normal) Endif End gambas-3.16.3/comp/src/gb.form/.src/IconPanel/_IconPanelContainer.class000066400000000000000000000031541411575327000255430ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Property Text As String '' Return or set the title of the icon panel as rich text. Property RichText As String Property Picture As Picture Property Read Container As Container Property Visible As Boolean Private $sText As String Private $hPict As Picture Private $bRichText As Boolean Private Sub GetIconPanel() As IconPanel Return Me.Parent.Parent.Parent End Private Sub GetView() As GridView Return GetIconPanel()._GetView() End Private Sub GetIndex() As Integer Return GetIconPanel()._GetIndex(Me) End Public Sub _new() End Private Function Text_Read() As String If Not $bRichText Then Return $sText 'Try Return GetView()[GetIndex(), 0].Text End Private Sub Text_Write(sText As String) $sText = sText $bRichText = False GetIconPanel()._UpdateIconViewWidth GetView()[GetIndex(), 0].Refresh End Private Function RichText_Read() As String If $bRichText Then Return $sText 'Try Return GetView()[GetIndex(), 0].Text End Private Sub RichText_Write(sText As String) $sText = sText $bRichText = True GetIconPanel()._UpdateIconViewWidth GetView()[GetIndex(), 0].Refresh End Private Function Picture_Read() As Picture Return $hPict End Private Sub Picture_Write(hPict As Picture) $hPict = hPict GetIconPanel()._UpdateIconViewWidth GetView()[GetIndex(), 0].Refresh End Private Function Container_Read() As Container Return Me End Private Function Visible_Read() As Boolean Return GetView().Rows[GetIndex()].H > 0 End Private Sub Visible_Write(Value As Boolean) GetIconPanel()._SetVisible(Me, Value) End gambas-3.16.3/comp/src/gb.form/.src/ImageView/000077500000000000000000000000001411575327000206445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/ImageView/ImageView.class000066400000000000000000000161131411575327000235520ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border=True,Alignment{Align.*}=Center,Grid,UseMouse=True" Public Const _DefaultSize As String = "36,36" Public Const _Group As String = "View" Public Const _DrawWith As String = "DrawingArea" Event Draw(View As Image) Event Scroll Property Border As Boolean Property Image As Image Property Zoom As Float Property Design As Boolean Property Grid As Boolean Property UseMouse As Boolean Property Alignment As Integer Property ScrollX As Integer Property ScrollY As Integer Property Read ScrollWidth, ScrollW As Integer Property Read ScrollHeight, ScrollH As Integer Private $hImage As Image Private $hZoom As Image Private $hBorder As Panel Private $hView As ScrollArea Private $SX As Integer Private $SY As Integer Private $bUseMouse As Boolean = True Private $fZoom As Float = 1 Private $bZoom As Boolean Private $bFastZoom As Boolean Private $bGrid As Boolean Private $iAlign As Integer = Align.Center ' Private $fBrightness As Float ' Private $fContrast As Float Public Sub _new() $hBorder = New Panel(Me) $hBorder.Border = Border.Plain $hBorder.Arrangement = Arrange.Fill $hView = New ScrollArea($hBorder) As "View" $hView.Border = False $hView.Shadow = True $hView.Focus = True Me.Proxy = $hView End Private Function Image_Read() As Image Return $hImage End Private Sub Image_Write(Value As Image) $hImage = Value $fZoom = 1 UpdateZoom View_Arrange End Public Sub View_Arrange() Dim iScrollBar As Integer Dim W, H As Integer If Not $hZoom Then $hView.ResizeContents(1, 1) Return Endif W = $hZoom.W H = $hZoom.H If $bZoom Then W *= $fZoom H *= $fZoom Endif If W > $hView.W Then iScrollBar += Scroll.Horizontal If H > $hView.H Then iScrollBar += Scroll.Vertical If $bUseMouse Then $hView.Mouse = If(iScrollBar, Mouse.SizeAll, Mouse.Default) $hView.ResizeContents(Max($hView.W, W), Max($hView.H, H)) $hView.ScrollBar = iScrollBar End Private Sub GetViewRect() As Rect Dim X, Y As Integer Dim W As Integer Dim H As Integer If Not $hZoom Then Return W = $hZoom.W H = $hZoom.H If $bZoom Then W *= $fZoom H *= $fZoom Endif If W <= $hView.W Then If Align.IsLeft($iAlign) Then X = 0 Else If Align.IsRight($iAlign) Then X = $hView.W - W Else X = ($hView.W - W) \ 2 Endif Else X = -$hView.ScrollX Endif If H <= $hView.H Then If Align.IsTop($iAlign) Then Y = 0 Else If Align.IsBottom($iAlign) Then Y = $hView.H - H Else Y = ($hView.H - H) \ 2 Endif Else Y = -$hView.ScrollY Endif Return Rect(X, Y, W, H) End Public Sub ViewToImage(ViewPoint As Point) As Point Dim hRect As Rect = GetViewRect() Dim hResult As Point If hRect Then hResult = New Point hResult.X = Floor((ViewPoint.X - hRect.X) / $fZoom) hResult.Y = Floor((ViewPoint.Y - hRect.Y) / $fZoom) Return hResult Endif End Public Sub ImageToView(ImagePoint As Point) As Point Dim hRect As Rect = GetViewRect() Dim hResult As Point If hRect Then hResult = New Point hResult.X = hRect.X + ImagePoint.X * $fZoom hResult.Y = hRect.Y + ImagePoint.Y * $fZoom Return hResult Endif End Public Sub _Paint(hImage As Image, X As Float, Y As Float, Optional hRect As Rect) ', fOpacity As Float = 1.0) If Not hImage Then Return If hRect Then X += hRect.X * $fZoom Y += hRect.Y * $fZoom Else hRect = Rect(0, 0, hImage.W, hImage.H) Endif If $bFastZoom Then Paint.ZoomImage(hImage, $fZoom, X, Y, If($bGrid, Color.SetAlpha(Color.Black, 128), Color.Default), hRect) Else Paint.DrawImage(hImage, X, Y, hImage.W * $fZoom, hImage.H * $fZoom,, hRect) Endif End Public Sub View_Draw() Dim hRect As Rect If Not Object.CanRaise(Me, "Draw") Then hRect = GetViewRect() If hRect Then _Paint($hZoom, hRect.X, hRect.Y) Else Raise Draw($hZoom) Endif End Private Function Border_Read() As Boolean Return $hBorder.Border End Private Sub Border_Write(Value As Boolean) $hBorder.Border = If(Value, Border.Plain, Border.None) End Public Sub View_MouseDown() If Not $bUseMouse Then Return $SX = $hView.ScrollX $SY = $hView.ScrollY End Public Sub View_MouseMove() If Not $bUseMouse Then Return If Mouse.Left Then $hView.Scroll($SX - (Mouse.X - Mouse.StartX), $SY - (Mouse.Y - Mouse.StartY)) End Private Function Zoom_Read() As Float Return $fZoom End Private Sub Zoom_Write(Value As Float) Dim X, Y As Float Value = Max(0.05, Min(32, Value)) If $fZoom = Value Then Return X = ($hView.ScrollX + $hView.ClientW / 2) / $fZoom Y = ($hView.ScrollY + $hView.ClientH / 2) / $fZoom $fZoom = Value UpdateZoom $hView.Scroll(X * $fZoom - $hView.ClientW / 2, Y * $fZoom - $hView.ClientH / 2) End Private Sub UpdateZoom() $bZoom = False $bFastZoom = False If Not $hImage Then $hZoom = Null Else $hZoom = $hImage If $fZoom <> 1 Then $bZoom = True If Int($fZoom) = $fZoom Then $bFastZoom = True Endif ' If $fContrast Or If $fBrightness Then ' $hZoom = $hZoom.Copy() ' $hZoom.BrightnessContrast($fBrightness, $fContrast) ' Endif Endif View_Arrange $hView.Refresh End Public Sub Update(Optional (Image) As Image) If {Image} Then $hImage = Image UpdateZoom End Private Function Design_Read() As Boolean Return Super.Design End Private Sub Design_Write(Value As Boolean) If Value Then $hImage = Image.Load("stock/32/gambas.png") $fZoom = 4 UpdateZoom Endif Super.Design = Value End Public Sub ZoomFit(Optional Margin As Integer) If Not $hImage Then Return 'If IsMissing(Margin) Then Margin = Desktop.Scale Zoom_Write(Min(($hView.W - Margin * 2) / $hImage.W, ($hView.H - Margin * 2) / $hImage.H)) End Private Function Grid_Read() As Boolean Return $bGrid End Private Sub Grid_Write(Value As Boolean) If Value = $bGrid Then Return $bGrid = Value $hView.Refresh End Private Function ScrollX_Read() As Integer Return $hView.ScrollX End Private Sub ScrollX_Write(Value As Integer) $hView.ScrollX = Value End Private Function ScrollY_Read() As Integer Return $hView.ScrollY End Private Sub ScrollY_Write(Value As Integer) $hView.ScrollY = Value End Private Function ScrollWidth_Read() As Integer Return $hView.ScrollWidth End Private Function ScrollHeight_Read() As Integer Return $hView.ScrollHeight End Public Sub Scroll(X As Integer, Y As Integer) $hView.Scroll(X, Y) End Public Sub View_Scroll() Raise Scroll End Private Function UseMouse_Read() As Boolean Return $bUseMouse End Private Sub UseMouse_Write(Value As Boolean) $bUseMouse = Value If Not Value Then $hView.Mouse = Mouse.Default End Public Sub EnsureVisible(X As Integer, Y As Integer, W As Integer, H As Integer) $hView.EnsureVisible(X, Y, W, H) End Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Alignment_Write(Value As Integer) $iAlign = Value $hView.Refresh End gambas-3.16.3/comp/src/gb.form/.src/InputBox.class000066400000000000000000000003041411575327000215630ustar00rootroot00000000000000' Gambas class file Export Static Public Sub _call(Prompt As String, Optional Title As String, Optional {Default} As String) As String Return FInputBox.Run(Prompt, Title, {Default}) End gambas-3.16.3/comp/src/gb.form/.src/LCDLabel.class000066400000000000000000000237531411575327000213720ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Text,Alignment{Align.Normal;Left;Center;Right}=Normal,Sheared,Padding{Range:0;63},Border,HighlightColor{Color}" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "Label" Property Text As String Property Alignment As Integer Property Sheared As Boolean Property Padding As Integer Property Border As Boolean Property HighlightColor As Integer Property Value As Float Private $hView As DrawingArea Private $sText As String Private $iAlign As Integer = Align.Normal Private $iFg As Integer Private $iLightBg As Integer Private $iBg As Integer Private $bSheared As Boolean Private $iPadding As Integer Private $bBorder As Boolean Private $iHighlightColor As Integer = Color.Default Static Private $aSegment As Float[][] Static Private $cCar As Collection Static Private Sub Init() $aSegment = New Float[][19] $aSegment[0] = [0.5, 0.5, 1, 0, 4, 0, 4.5, 0.5, 4, 1, 1, 1] $aSegment[1] = [4.5, 0.5, 5, 0, 8, 0, 8.5, 0.5, 8, 1, 5, 1] $aSegment[2] = [0.5, 0.5, 1, 1, 1, 8, 0.5, 8.5, 0, 8, 0, 1] $aSegment[3] = [1, 1, 4, 7, 4, 8, 3.5, 8, 1, 3] $aSegment[4] = [4.5, 0.5, 5, 1, 5, 8, 4.5, 8.5, 4, 8, 4, 1] $aSegment[5] = [8, 1, 5, 7, 5, 8, 5.5, 8, 8, 3] $aSegment[6] = [8.5, 0.5, 9, 1, 9, 8, 8.5, 8.5, 8, 8, 8, 1] $aSegment[7] = [0.5, 8.5, 1, 8, 4, 8, 4.5, 8.5, 4, 9, 1, 9] $aSegment[8] = [4.5, 8.5, 5, 8, 8, 8, 8.5, 8.5, 8, 9, 5, 9] $aSegment[9] = [0.5, 8.5, 1, 9, 1, 16, 0.5, 16.5, 0, 16, 0, 9] $aSegment[10] = [3.5, 9, 4, 9, 4, 10, 1, 16, 1, 14] $aSegment[11] = [4.5, 8.5, 5, 9, 5, 16, 4.5, 16.5, 4, 16, 4, 9] $aSegment[12] = [5, 9, 5.5, 9, 8, 14, 8, 16, 5, 10] $aSegment[13] = [8.5, 8.5, 9, 9, 9, 16, 8.5, 16.5, 8, 16, 8, 9] $aSegment[14] = [0.5, 16.5, 1, 16, 4, 16, 4.5, 16.5, 4, 17, 1, 17] $aSegment[15] = [4.5, 16.5, 5, 16, 8, 16, 8.5, 16.5, 8, 17, 5, 17] $aSegment[16] = [10, 16, 11, 16, 11, 17, 10, 17] $aSegment[17] = [10, 4, 11, 4, 11, 5, 10, 5] $aSegment[18] = [10, 12, 11, 12, 11, 13, 10, 13] $cCar = New Collection $cCar["0"] = [0, 1, 2, 5, 6, 9, 10, 13, 14, 15] $cCar["1"] = [6, 13] $cCar["2"] = [0, 1, 6, 7, 8, 9, 14, 15] $cCar["3"] = [0, 1, 6, 7, 8, 13, 14, 15] $cCar["4"] = [2, 6, 7, 8, 13] $cCar["5"] = [0, 1, 2, 7, 8, 13, 14, 15] $cCar["6"] = [0, 1, 2, 7, 8, 9, 13, 14, 15] $cCar["7"] = [0, 1, 6, 13] $cCar["8"] = [0, 1, 2, 6, 7, 8, 9, 13, 14, 15] $cCar["9"] = [0, 1, 2, 6, 7, 8, 13, 14, 15] $cCar["A"] = [0, 1, 2, 6, 7, 8, 9, 13] $cCar["B"] = [0, 1, 4, 6, 8, 11, 13, 14, 15] $cCar["C"] = [0, 1, 2, 9, 14, 15] $cCar["D"] = [0, 1, 4, 6, 11, 13, 14, 15] $cCar["E"] = [0, 1, 2, 7, 8, 9, 14, 15] $cCar["F"] = [0, 1, 2, 7, 8, 9] $cCar["G"] = [0, 1, 2, 8, 9, 13, 14, 15] $cCar["H"] = [2, 6, 7, 8, 9, 13] $cCar["I"] = [0, 1, 4, 11, 14, 15] $cCar["J"] = [6, 9, 13, 14, 15] $cCar["K"] = [2, 5, 7, 9, 12] $cCar["L"] = [2, 9, 14, 15] $cCar["M"] = [2, 3, 5, 6, 9, 13] $cCar["N"] = [2, 3, 6, 9, 12, 13] $cCar["O"] = [0, 1, 2, 6, 9, 13, 14, 15] $cCar["P"] = [0, 1, 2, 6, 7, 8, 9] $cCar["Q"] = [0, 1, 2, 6, 9, 12, 13, 14, 15] $cCar["R"] = [0, 1, 2, 6, 7, 8, 9, 12] $cCar["S"] = [0, 1, 2, 7, 12, 14, 15] $cCar["T"] = [0, 1, 4, 11] $cCar["U"] = [2, 6, 9, 13, 14, 15] $cCar["V"] = [2, 5, 9, 10] $cCar["W"] = [2, 6, 9, 10, 12, 13] $cCar["X"] = [3, 5, 10, 12] $cCar["Y"] = [3, 5, 11] $cCar["Z"] = [0, 1, 5, 10, 14, 15] $cCar["_"] = [14, 15] $cCar["["] = [1, 4, 11, 15] $cCar["]"] = [0, 4, 11, 14] $cCar["("] = [1, 4, 11, 15] $cCar[")"] = [0, 4, 11, 14] $cCar["{"] = [1, 4, 7, 11, 15] $cCar["}"] = [0, 4, 8, 11, 14] $cCar["-"] = [7, 8] $cCar["+"] = [4, 7, 8, 11] $cCar["|"] = [4, 11] $cCar["\\"] = [3, 12] $cCar["/"] = [5, 10] $cCar["="] = [7, 8, 14, 15] $cCar["*"] = [3, 5, 7, 8, 10, 12] $cCar["<"] = [5, 12] $cCar[">"] = [3, 10] $cCar["@"] = [0, 1, 2, 4, 6, 8, 9, 14, 15] $cCar["'"] = [4] $cCar["\""] = [4, 6] $cCar["`"] = [3] $cCar["°"] = [0, 2, 4, 7] $cCar["~"] = [0, 2, 4, 6, 8] $cCar["$"] = [0, 1, 2, 4, 7, 8, 11, 13, 14, 15] $cCar["%"] = [0, 2, 4, 5, 7, 8, 10, 11, 13, 15] $cCar["#"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] $cCar["^"] = [10, 12] $cCar[" "] = [] End Public Sub _new() If Not $cCar Then Init $hView = New DrawingArea(Me) As "View" Me.Proxy = $hView 'GetRealForeground() 'GetRealForeground() End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value $hView.Refresh End Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Alignment_Write(Value As Integer) $iAlign = Value $hView.Refresh End Public Sub View_Draw() Dim nCar As Integer Dim I As Integer Dim sCar As String Dim CW, X, Y As Float Dim W, H As Integer Dim bPoint As Boolean Dim iPad As Integer Dim bColon As Boolean Dim iLen As Integer iPad = $iPadding If $bBorder Then Inc iPad W = $hView.W - iPad * 2 H = $hView.H - iPad * 2 If W < 16 Or If H < 8 Or If Not $sText Then Goto DRAW_BORDER For I = 1 To String.Len($sText) sCar = String.Mid$($sText, I, 1) If sCar = "." Or If sCar = ":" Then If I = 1 Or If String.Mid$($sText, I - 1, 1) = sCar Then Inc nCar Endif Else Inc nCar Endif Next CW = W / nCar If (CW * 2) > H Then CW = H / 2 If Align.IsCenter($iAlign) Then X = (W - (CW * nCar)) / 2 Else If Align.IsRight($iAlign) Then X = W - (CW * nCar) Else X = 0 Endif Y = H / 2 - CW X += iPad Y += iPad $iFg = GetRealForeground() $iBg = GetRealBackground() $iLightBg = Color.Merge($iFg, $iBg, 0.9) Paint.ResetClip iLen = String.Len($sText) For I = 1 To iLen sCar = String.Mid$($sText, I, 1) bPoint = False bColon = False If I < iLen Then If String.Mid$($sText, I + 1, 1) = "." Then bPoint = True Inc I Else If String.Mid$($sText, I + 1, 1) = ":" Then bColon = True Inc I Endif Endif DrawCharacter(sCar, bPoint, bColon, X, Y, CW) X += CW Next DRAW_BORDER: If $bBorder Then Draw.Rect(0, 0, $hView.W, $hView.H) Endif End Private Sub GetRealBackground() As Integer Dim hCtrl As Control = Me Repeat If hCtrl.Background <> Color.Default Then Return hCtrl.Background hCtrl = hCtrl.Parent Until IsNull(hCtrl) Return Color.Background End Private Sub GetRealForeground() As Integer Dim hCtrl As Control = Me Repeat If hCtrl.Foreground <> Color.Default Then Return hCtrl.Foreground hCtrl = hCtrl.Parent Until IsNull(hCtrl) Return Color.Foreground End Private Sub DrawCharacter(sCar As String, bPoint As Boolean, bColon As Boolean, X As Float, Y As Float, W As Float) Dim U As Float = W / 12 Dim aCar As Integer[] Dim iSegment As Integer Dim aOn As Boolean[] Dim hShear As PaintMatrix Dim bOutline As Boolean Dim hImage As Image Dim hMatrix As PaintMatrix aCar = $cCar[UCase(sCar)] If Not aCar And If Not bPoint And If Not bColon Then Return Paint.Save Paint.Translate(X, Y) Paint.Scale(U, U) If $bSheared Then Paint.Translate(3, 3.5) hShear = PaintMatrix(1.0, 0.0, -0.2, 1.0, 0.0, 0.0) Paint.Matrix = hShear.Multiply(Paint.Matrix) Else Paint.Translate(0, 3.5) Endif If U >= 1 Then bOutLine = True Paint.LineWidth = 0.1 Endif aOn = New Boolean[$aSegment.Count] If aCar Then For Each iSegment In aCar aOn[iSegment] = True Next Endif If bPoint Then aOn[16] = True If bColon Then aOn[17] = True aOn[18] = True Endif For iSegment = 0 To $aSegment.Max If Not aOn[iSegment] Then Paint.Polygon($aSegment[iSegment]) Next Paint.Background = $iLightBg Paint.Fill If $iHighlightColor <> Color.Default Then hImage = New Image(W * 1.2, W * 2, Color.Transparent) Paint.Begin(hImage) Paint.Translate(W * 0.1, 0) Paint.Scale(U, U) If $bSheared Then Paint.Translate(3, 3.5) hShear = PaintMatrix(1.0, 0.0, -0.2, 1.0, 0.0, 0.0) Paint.Matrix = hShear.Multiply(Paint.Matrix) Else Paint.Translate(0, 3.5) Endif For iSegment = 0 To $aSegment.Max If aOn[iSegment] Then Paint.Polygon($aSegment[iSegment]) Next Paint.LineWidth = 0.1 Paint.Background = $iHighlightColor Paint.Fill Paint.End hImage.Fuzzy(W * 0.15) hMatrix = Paint.Matrix Paint.Restore Paint.Save Paint.DrawImage(hImage, X - W * 0.1, Y) Paint.DrawImage(hImage, X - W * 0.1, Y) Paint.Matrix = hMatrix Endif For iSegment = 0 To $aSegment.Max If aOn[iSegment] Then Paint.Polygon($aSegment[iSegment]) Next ' If $iHighlightColor <> Color.Default Then ' If U >= 1.5 Then ' Paint.LineCap = Paint.LineCapRound ' Paint.LineJoin = Paint.LineJoinRound ' Paint.Background = Color.SetAlpha($iHighlightColor, 220) ' Paint.LineWidth = 0.8 ' For I = 1 To 5 ' Paint.Stroke(True) ' Paint.LineWidth *= 1.5 ' Next ' Endif ' Endif Paint.LineWidth = 0.1 Paint.Background = $iFg If bOutline Then Paint.Fill(True) Paint.Background = $iBg Paint.Stroke Else Paint.Fill Endif Paint.Restore End Private Function Sheared_Read() As Boolean Return $bSheared End Private Sub Sheared_Write(Value As Boolean) $bSheared = Value $hView.Refresh End Private Function Padding_Read() As Integer Return $iPadding End Private Sub Padding_Write(Value As Integer) $iPadding = Value $hView.Refresh End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value $hView.Refresh End Private Function HighlightColor_Read() As Integer Return $iHighlightColor End Private Sub HighlightColor_Write(Value As Integer) $iHighlightColor = Value $hView.Refresh End Private Function Value_Read() As Float Return CFloat($sText) End Private Sub Value_Write(Value As Float) Try Me.Text = CStr(Value) End gambas-3.16.3/comp/src/gb.form/.src/ListContainer.class000066400000000000000000000171051411575327000226000ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,-Padding,-Spacing,-Arrangement,-AutoResize,-Indent,Border=True" Public Const _DefaultArrangement As String = "V" Public Const _DefaultEvent As String = "Click" Public Const _Group As String = "Deprecated" Event Click Event Activate Event Scroll Property Read Count As Integer Property Index As Integer Property Current As Control Property Background As Integer Property Border As Boolean Private $hScrollView As ScrollView Private $hLast As Control Private $hSelected As Control Private $bNoMouse As Boolean Private $hTimer As Timer Private $iSaveBackground As Integer Private $iSaveForeground As Integer Private $iLastX As Integer Private $iLastY As Integer Private $iLock As Integer Private $bMouseDown As Boolean Public Sub _new() $hScrollView = New ScrollView(Me) As "ScrollView" $hScrollView.Resize(80, 60) $hScrollView.Name = Me.Name & ".ScrollView" $hTimer = New Timer As "Child" $hTimer.Delay = 80 With $hScrollView .Border = True .ScrollBar = Scroll.Vertical .Background = Color.TextBackground .Arrangement = Arrange.Vertical $iSaveBackground = .Background $iSaveForeground = Color.TextForeground End With Me._Container = $hScrollView Me.Arrangement = Arrange.Vertical End Private Sub AttachRec(hItem As Control) Dim hCont As Container Dim hObs As Observer If Not hItem.Enabled Then Return 'Object.Attach(hItem, ME, "Child") hObs = New Observer(hItem) As "Child" Try hCont = hItem If Not hCont Then Return If hCont Is UserControl Then Return For Each hItem In hCont.Children AttachRec(hItem) Next End Private Function GetReal(hCtrl As Control) As Control If Not hCtrl Then Return While hCtrl.Parent <> $hScrollView hCtrl = hCtrl.Parent Wend Return hCtrl End Public Sub ScrollView_NewChild(Child As Control) If Me.Design Then Return AttachRec(Child) End Public Sub Child_NewChild(Child As Control) If Me.Design Then Return AttachRec(Child) End Public Sub ScrollView_Scroll() 'Debug $hScrollView.ScrollY Raise Scroll End Public Sub Child_Insert(Child As Control) 'Debug Me.Name If Me.Design Then Return AttachRec(Child) End Private Function Count_Read() As Integer Return $hScrollView.Children.Count End Private Sub ChildFromIndex(Index As Integer) As Control Dim hChild As Control Dim iInd As Integer For Each hChild In $hScrollView.Children If Index = iInd Then Return hChild Inc iInd Next End Private Sub IndexFromChild(Child As Control) As Integer Dim hChild As Control Dim iInd As Integer For Each hChild In $hScrollView.Children If hChild = Child Then Return iInd Inc iInd Next Return -1 End Private Sub GetSelected() As Control Return $hSelected ' DIM hChild AS Control ' ' FOR EACH hChild IN $hScrollView.Children ' 'IF NOT hChild.Visible THEN CONTINUE ' IF hChild.Background = Color.SelectedBackground THEN RETURN hChild ' NEXT End Private Function Index_Read() As Integer Return IndexFromChild(GetSelected()) End Private Sub SetSelected(Child As Control) Dim hChild As Control Dim hOld As Control Dim iSaveBackground As Integer Dim iSaveForeground As Integer 'DIM bNoEvent AS Boolean If Child Then If Child.Parent <> $hScrollView Then Return If Not Child.Enabled Then Return If Not Child.Visible Then Return If Child Is Label Or If Child Is Separator Then Return Endif hOld = GetSelected() If hOld = Child Then Return For Each hChild In $hScrollView.Children If Not Object.IsValid(hChild) Then Continue If Not hChild.Enabled Then Continue If hChild = Child Then iSaveBackground = hChild.Background iSaveForeground = hChild.Foreground hChild.Background = Color.SelectedBackground hChild.Foreground = Color.SelectedForeground Else If hChild = hOld Then hChild.Background = $iSaveBackground hChild.Foreground = $iSaveForeground Endif Next $hSelected = Child If $hSelected Then $iSaveBackground = iSaveBackground $iSaveForeground = iSaveForeground Endif 'Wait If Child Then Raise Click End Private Sub Index_Write(Value As Integer) SetSelected(ChildFromIndex(Value)) EnsureVisible End Private Function Current_Read() As Control Return GetSelected() End Private Sub Current_Write(Value As Control) SetSelected(Value) End Private Sub DoMouse() Dim hChild As Control Dim Y As Integer If $bNoMouse Then Return Y = Mouse.ScreenY - $hScrollView.ScreenY + $hScrollView.ScrollY Y = Max(0, Min($hScrollView.ScrollH, Y)) hChild = $hScrollView.FindChild(Mouse.ScreenX - $hScrollView.ScreenX + $hScrollView.ScrollX, Y) hChild = GetReal(hChild) If hChild Then $bNoMouse = True If hChild.Enabled And If hChild <> $hLast Then SetSelected(hChild) $hLast = hChild Endif $hScrollView.EnsureVisible(hChild.X, hChild.Y, hChild.W, hChild.H) $bNoMouse = False Endif End Public Sub Child_MouseDown() $hLast = Null DoMouse $iLastX = Mouse.ScreenX $iLastY = Mouse.ScreenY $bMouseDown = True End Public Sub Child_MouseMove() If Not $bMouseDown Then Return 'IF LAST.Parent <> $hScrollView THEN RETURN If $iLastX = Mouse.ScreenX And If $iLastY = Mouse.ScreenY Then Return If Not $hTimer.Enabled Then $hTimer.Enabled = True 'DoMouse $iLastX = Mouse.ScreenX $iLastY = Mouse.ScreenY End Public Sub Child_MouseUp() $hTimer.Enabled = False $bMouseDown = False End Public Sub Child_Timer() DoMouse End Public Sub Child_DblClick() Raise Activate End Public Sub EnsureVisible() If $hSelected Then $hScrollView.EnsureVisible($hSelected.X, $hSelected.Y, $hSelected.W, $hSelected.H) End Public Sub Select(hChild As Control) SetSelected(hChild) EnsureVisible End Public Sub Clear() Lock() $hScrollView.Children.Clear $hSelected = Null Unlock() 'Wait End Private Function Background_Read() As Integer Return $hScrollView.Background End Private Sub Background_Write(Value As Integer) If Value = Color.Default Then Value = Color.TextBackground $hScrollView.Background = Value End Public Sub Lock() If $iLock = 0 Then Me.Arrangement = Arrange.None Inc $iLock End Public Sub Unlock() If $iLock <= 0 Then Return Dec $iLock If $iLock = 0 Then Me.Arrangement = Arrange.Vertical End Public Sub ScrollView_KeyPress() Dim iIndex As Integer If Not Key.Normal Then Return iIndex = Index_Read() If Key.Code = Key.Up Then While iIndex > 0 Dec iIndex Index_Write(iIndex) If Index_Read() = iIndex Then Stop Event Return Endif Wend Else If Key.Code = Key.Down Then While iIndex < (Count_Read() - 1) Inc iIndex Index_Write(iIndex) If Index_Read() = iIndex Then Stop Event Return Endif Wend Else If Key.Code = Key.Home Then iIndex = 0 While iIndex < Count_Read() Index_Write(iIndex) If Index_Read() = iIndex Then Stop Event Return Endif Inc iIndex Wend Else If Key.Code = Key.End Then iIndex = Count_Read() - 1 While iIndex > 0 Index_Write(iIndex) If Index_Read() = iIndex Then Stop Event Return Endif Dec iIndex Wend Else If Key.Code = Key.Space Then If GetSelected() Then Raise Activate Endif End Private Function Border_Read() As Boolean Return $hScrollView.Border End Private Sub Border_Write(Value As Boolean) $hScrollView.Border = Value End gambas-3.16.3/comp/src/gb.form/.src/ListEditor/000077500000000000000000000000001411575327000210515ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/ListEditor/FListEditor.class000066400000000000000000000123441411575327000242740ustar00rootroot00000000000000' Gambas class file Private $bUnique As Boolean Private Sub GetParent() As ListEditor Return Me.Parent End Public Sub GetBorder() As Boolean Return panData.Border <> Border.None End Public Sub SetBorder(bBorder As Boolean) panData.Border = If(bBorder, Border.Plain, Border.None) End Public Sub GetList() As String[] Return lstData.List End Private Sub UnSelect() If lstData.Index < 0 Then Return lstData.Index = -1 GetParent()._RaiseSelect End Public Sub SetList(aList As String[]) UnSelect txtData.Clear lstData.List = aList CheckUnique GetParent()._RaiseChange End Public Sub Add(sText As String) As Boolean Dim iPos As Integer If Not sText Then Return If $bUnique Then iPos = lstData.Find(sText) If iPos >= 0 Then lstData.Index = iPos Return True Endif Endif lstData.Add(sText) GetParent()._RaiseChange lstData.Index = -1 End Public Sub btnAdd_Click() GetParent()._RaiseAdd If txtData.ReadOnly Then Return If lstData.Index < 0 Then If Add(txtData.Text) Then Return Endif UnSelect txtData.Clear txtData.SetFocus End Public Sub lstData_Select() If lstData.Index >= 0 Then txtData.Text = lstData.Text txtData.SetFocus Endif GetParent()._RaiseSelect End Public Sub txtData_Change() If lstData.Index < 0 Then Return lstData.Current.Text = txtData.Text If Not txtData.Text Then btnRemove_Click Else GetParent()._RaiseChange Endif End Public Sub btnRemove_Click() Dim aList As String[] If lstData.Index >= 0 Then aList = lstData.List aList.Remove(lstData.Index) UnSelect lstData.List = aList GetParent()._RaiseChange Endif txtData.Clear txtData.SetFocus End Public Sub txtData_Activate() btnAdd.Value = True End Public Sub btnUp_Click() If lstData.Index < 1 Then Return Swap lstData[lstData.Index - 1].Text, lstData[lstData.Index].Text Dec lstData.Index GetParent()._RaiseChange End Public Sub btnDown_Click() If lstData.Index < 0 Or If lstData.Index = lstData.Count - 1 Then Return Swap lstData[lstData.Index].Text, lstData[lstData.Index + 1].Text Inc lstData.Index GetParent()._RaiseChange End ' Public Sub btnUp_DblClick() ' ' Dim aList As String[] ' Dim sElt As String ' ' If lstData.Index < 1 Then Return ' ' aList = lstData.List ' sElt = aList[lstData.Index] ' aList.Remove(lstData.Index) ' aList.Add(sElt, 0) ' lstData.List = aList ' lstData.Index = 0 ' ' End ' ' Public Sub btnDown_DblClick() ' ' Dim aList As String[] ' Dim sElt As String ' ' If lstData.Index < 0 Or If lstData.Index = lstData.Count - 1 Then Return ' ' aList = lstData.List ' sElt = aList[lstData.Index] ' aList.Remove(lstData.Index) ' aList.Add(sElt) ' lstData.List = aList ' lstData.Index = lstData.Count - 1 ' ' End ' Public Sub GetText() As String Return txtData.Text End Public Sub SetText(sText As String) txtData.Text = sText End Public Sub GetMoveable() As Boolean Return btnUp.Visible End Public Sub SetMoveable(bShow As Boolean) btnUp.Visible = bShow btnDown.Visible = bShow End Public Sub GetEditor() As TextBox Return txtData End Public Sub _new() Me.Parent.Proxy = txtData End Public Sub txtData_KeyPress() If lstData.Count = 0 Then Return If Key.Normal Then If Key.Code = Key.Up Then If lstData.Index < 0 Then lstData.Index = lstData.Count - 1 Else If lstData.Index > 0 Then Dec lstData.Index Endif Stop Event Else If Key.Code = Key.Down Then If lstData.Index < 0 Then lstData.Index = 0 Else Inc lstData.Index Endif Stop Event Endif Else If Key.Control Then If Key.Code = Key.Home Then lstData.Index = 0 Stop Event Else If Key.Code = Key.End Then lstData.Index = lstData.Count - 1 Stop Event Endif Endif End Public Sub IsReadOnly() As Boolean Return txtData.ReadOnly End Public Sub SetReadOnly(bReadOnly As Boolean) txtData.ReadOnly = bReadOnly txtData.Visible = Not bReadOnly If GetParent().Design Then Return If bReadOnly Then btnAdd.Text = ("Add") & "..." btnRemove.Text = ("Remove") Else btnAdd.Text = "" btnRemove.Text = "" Endif End Public Sub lstData_Activate() GetParent()._RaiseActivate End Public Sub Clear() lstData.Clear txtData.Clear End Public Sub IsUnique() As Boolean Return $bUnique End Private Sub CheckUnique() Dim I As Integer Dim iPos As Integer If Not $bUnique Then Return I = 1 While I < lstData.Count iPos = lstData.Find(lstData[I].Text) If iPos <> I Then lstData.Remove(I) Else Inc I Endif Wend End Public Sub SetUnique(bUnique As Boolean) If $bUnique = bUnique Then Return $bUnique = bUnique CheckUnique End Public Sub GetIndex() As Integer Return lstData.Index End Public Sub SetIndex(Value As Integer) lstData.Index = Value End Public Sub Find(Text As String, Mode As Integer) As Integer Return lstData.Find(Text, Mode) End Public Sub Remove(Index As Integer, Length As Integer) lstData.Remove(Index, Length) lstData.Index = -1 txtData.Clear End gambas-3.16.3/comp/src/gb.form/.src/ListEditor/FListEditor.form000066400000000000000000000023221411575327000241250ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,37) Arrangement = Arrange.Fill { panData Panel MoveScaled(2,2,55,33) Arrangement = Arrange.Vertical Border = Border.Plain { lstData ListBox MoveScaled(1,1,52,24) Expand = True Border = False } { Separator1 Separator MoveScaled(7,26,13,0) } { HBox1 HBox MoveScaled(1,28,52,4) Background = Color.TextBackground { txtData TextBox MoveScaled(0,0,32,4) Expand = True Border = False } { btnAdd ToolButton MoveScaled(33,0,4,4) ToolTip = ("Add item") AutoResize = True Picture = Picture["icon:/small/add"] } { btnRemove ToolButton MoveScaled(37,0,4,4) ToolTip = ("Remove item") AutoResize = True Picture = Picture["icon:/small/remove"] } { btnUp ToolButton MoveScaled(41,0,4,4) ToolTip = ("Move item up") AutoResize = True Picture = Picture["icon:/small/up"] } { btnDown ToolButton MoveScaled(45,0,4,4) ToolTip = ("Move item down") AutoResize = True Picture = Picture["icon:/small/down"] } } } } gambas-3.16.3/comp/src/gb.form/.src/ListEditor/ListEditor.class000066400000000000000000000056701411575327000241720ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,List,Border=True,Moveable=True,ReadOnly,Unique" Public Const _DefaultSize As String = "24,32" Public Const _Similar As String = "ListBox" Public Const _Group As String = "View" Property List As String[] Property Border As Boolean Property Text As String Property Moveable As Boolean Property ReadOnly As Boolean Property Read Editor As Control '' Return or set if duplicates are allowed in the list. '' '' By default, this property is 'FALSE' and duplicates are allowed. Property Unique As Boolean '' Return or set the index of the current item. '' '' '-1' means that there is no current item. Property Index As Integer Event Select Event Change Event Add '' This event is raised when an item is double-clicked. Event Activate Private $hForm As FListEditor Public Sub _new() $hForm = New FListEditor(Me) End Private Function Border_Read() As Boolean Return $hForm.GetBorder() End Private Sub Border_Write(Value As Boolean) $hForm.SetBorder(Value) End Private Function List_Read() As String[] Return $hForm.GetList() End Private Sub List_Write(Value As String[]) $hForm.SetList(Value) End Public Sub _RaiseSelect() Raise Select End Public Sub _RaiseChange() Raise Change End Private Function Text_Read() As String Return $hForm.GetText() End Private Sub Text_Write(Value As String) $hForm.SetText(Value) End Private Function Moveable_Read() As Boolean Return $hForm.GetMoveable() End Private Sub Moveable_Write(Value As Boolean) $hForm.SetMoveable(Value) End Private Function Editor_Read() As Control Return $hForm.GetEditor() End Private Function ReadOnly_Read() As Boolean Return $hForm.IsReadOnly() End Private Sub ReadOnly_Write(Value As Boolean) $hForm.SetReadOnly(Value) End Public Sub _RaiseAdd() Raise Add End Public Sub Add(Text As String) $hForm.Add(Text) End '' Remove one or more items from the list. '' '' - ~Index~ is the index of the first item to remove. '' - ~Length~ is the number of items to remove from the specified index. One item is removed by default. Public Sub Remove(Index As Integer, Optional Length As Integer = 1) $hForm.Remove(Index, Length) End Public Sub _RaiseActivate() Raise Activate End '' Clear the list. Public Sub Clear() $hForm.Clear End Private Function Unique_Read() As Boolean Return $hForm.IsUnique() End Private Sub Unique_Write(Value As Boolean) $hForm.SetUnique(Value) End Private Function Index_Read() As Integer Return $hForm.GetIndex() End Private Sub Index_Write(Value As Integer) $hForm.SetIndex(Value) End '' Find an item in the list and return its index. '' '' - ~Text~ is the text of the item. '' - ~Mode~ is one of the [/lang/compmethod]. '' '' If no item is found, '-1' is returned. Public Sub Find(Text As String, Optional Mode As Integer) As Integer Return $hForm.Find(Text, Mode) End gambas-3.16.3/comp/src/gb.form/.src/Main.module000066400000000000000000000127221411575327000210660ustar00rootroot00000000000000' Gambas module file 'Class DesktopMime Private $cArrow As New Collection Private $bInitGTK As Boolean Private $bUseGTK As Boolean Public Sub GetArrow(iType As Integer, iSize As Integer) As Image Dim sKey As String Dim hPict As Picture Dim hImage As Image Select Case iType Case Align.Top sKey = "top" Case Align.Bottom sKey = "bottom" Case Align.Left sKey = "left" Case Align.Right sKey = "right" End Select sKey = sKey & "-" & iSize hImage = $cArrow[sKey] If Not hImage Then hPict = New Picture(16, 16) hPict.Fill(Color.White) Draw.Begin(hPict) Draw.Style.Arrow(0, 0, 16, 16, iType) Draw.End hImage = hPict.Image hImage.Erase() hImage = hImage.Stretch(iSize, iSize) 'hPict = hImage.Picture $cArrow[sKey] = hImage Endif Return hImage End Public Sub GetFileSize(iSize As Long) As String Dim fSize As Float If iSize < 1024 Then Return Subst(("&1 B"), CStr(iSize)) Else If iSize < 1048576 Then fSize = iSize / 1024 If fSize < 20 Then Return Subst(("&1 KiB"), Format(iSize / 1024, "0.#")) Else Return Subst(("&1 KiB"), Format(iSize / 1024, "0")) Endif Else If iSize < 1073741824 Then fSize = iSize / 1048576 If fSize < 20 Then Return Subst(("&1 MiB"), Format(iSize / 1048576, "0.#")) Else Return Subst(("&1 MiB"), Format(iSize / 1048576, "0")) Endif Else fSize = iSize / 1073741824 If fSize < 20 Then Return Subst(("&1 GiB"), Format(iSize / 1073741824, "0.#")) Else Return Subst(("&1 GiB"), Format(iSize / 1073741824, "0")) Endif Endif End Private Sub FindMenuChild(hMenu As Menu, sMenu As String) As Menu For Each hMenu In hMenu.Children If hMenu.Name == sMenu Then Return hMenu hMenu = FindMenuChild(hMenu, sMenu) If hMenu Then Return hMenu Next End Private Sub FindMenuWindow(hWindow As Window, sMenu As String) As Menu Dim hMenu As Menu For Each hMenu In hWindow.Menus If hMenu.Name == sMenu Then Return hMenu hMenu = FindMenuChild(hMenu, sMenu) If hMenu Then Return hMenu Next End Public Sub FindMenu(hCtrl As Control, sMenu As String) As Menu Dim hWindow As Window Dim hMenu As Menu hWindow = hCtrl.Window Do hMenu = FindMenuWindow(hWindow, sMenu) If hMenu Then Break Try hWindow = hWindow.Parent.Window If Error Then Return Loop Return hMenu End Public Sub PaintColor(X As Integer, Y As Integer, W As Integer, H As Integer, iColor As Integer) Dim I, J, C As Integer If iColor And &HFF000000 Then Paint.Save Paint.Rectangle(X, Y, W, H) Paint.Clip For J = 0 To W + 7 Step 8 For I = 0 To H + 7 Step 8 If ((I + J) \ 8) And 1 Then C = Color.Blend(iColor, &H808080) Else C = Color.Blend(iColor, &HC0C0C0) Endif Paint.FillRect(X + I, Y + J, 8, 8, C) Next Next Paint.Restore Else Paint.FillRect(X, Y, W, H, iColor) Endif End Public Sub NormalizePath(sPath As String) As String Dim iLen As Integer Do iLen = Len(sPath) sPath = Replace(sPath, "//", "/") If Len(sPath) = iLen Then Break Loop If Len(sPath) > 1 And If Right(sPath) = "/" Then sPath = Left(sPath, -1) If Not sPath Then Error.Raise("Void path") Return sPath End #If False Private Sub AddUnique(aStr As String[], sVal As String) If Not aStr.Exist(sVal) Then aStr.Add(sVal) End Private Sub MakeMap() Dim aKey As New String[] Dim sPath As String Dim sLine As String Dim hFile As File Dim aLine As String[] Dim sKey As String Dim sIcon As String Dim aIcon As String[] Dim cIcon As New Collection For Each sPath In ["map/gnome.map", "map/kde4.map"] hFile = Open sPath For Each sLine In hFile.Lines If Left(sLine) = ";" Then Continue aLine = Split(sLine, " ", "", True) sKey = Trim(aLine[0]) AddUnique(aKey, sKey) If Not cIcon.Exist(sKey) Then cIcon[sKey] = New String[] If aLine.Count >= 2 Then aIcon = cIcon[sKey] For Each sIcon In Split(Trim(aLine[1]), ";") AddUnique(aIcon, sIcon) Next Endif Next Next hFile = Open Application.Path &/ "map/icon.map" For Create aKey.Sort For Each sKey In aKey Print #hFile, sKey; Space$(Max(1, 24 - Len(sKey))); cIcon[sKey].Join(";") Next Close #hFile End #Endif Public Sub MkDir(Path As String) Dim sElt As String Dim sMake As String = "/" For Each sElt In Split(Path, "/") sMake &/= sElt If IsDir(sMake) Then Continue Try Mkdir sMake Next End Public Sub Main() Dim hPicture As Picture Application.Theme = "Elementary" hPicture = Picture["icon:/32/align-top"] Print hPicture End Public Sub Task_Read(sData As String) Debug sData End Public Sub Task_Error(Data As String) Debug Data End Public Sub Task_Kill() Dim sStr As String Try sStr = Last.Value If Error Then Debug Error.Text Else Debug "->";; sStr Endif End Public Sub GetCacheDir() As String Dim sPath As String = Env["XDG_CACHE_HOME"] If sPath Then Return sPath Else Return User.Home &/ ".cache" Endif End Public Sub UseGTK() As Boolean If Not $bInitGTK Then $bInitGTK = True If Component.IsLoaded("gb.gtk3") Or If Component.IsLoaded("gb.gtk") Then $bUseGTK = True Endif Endif Return $bUseGTK End gambas-3.16.3/comp/src/gb.form/.src/MaskBox.class000066400000000000000000000462441411575327000213740ustar00rootroot00000000000000' Gambas class file Export Inherits TextBox Public Const _Properties As String = "*,-Password,-MaxLength,Action,Filter,Mask,ShowDefault,Prompt{MaskBox.*}" 'Public Const _DefaultEvent As String = "Click" 'Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Public Const _DrawWith As String = "TextBox" Public Enum Space, Underscore, Bracket, Dash, Square, Circle Event Filter(Char As String) Event Validate Property Mask As String Property Filter As String Property ShowDefault As Boolean Property Text As String Property Prompt As Integer Private $hObserver As Observer Private Const UNMASKED_CHAR As String = "\r" Private $iPrompt As Integer Private $sPrompt As String Private $sSaveText As String Private $iSavePos As Integer Private $iSaveLength As Integer Private $sMaskOrg As String Private $aMask As New String[] Private $sDefault As String Private $sSeparator As String Private $sAlign As String Private $iPosFocus As Integer Private $bShowDefault As Boolean Private $sFilter As String Public Sub _new() Prompt_Write(0) End Private Function Mask_Read() As String Return $sMaskOrg End Private Sub GetDefaultCharacter(iPos As Integer) As String Dim sCar As String = String.Mid$($sDefault, iPos + 1, 1) If sCar = "." Then sCar = String.Mid$($sSeparator, iPos + 1, 1) Return sCar End Private Sub MakeDefault() As String Dim sDefault As String Dim iInd As Integer For iInd = 0 To $aMask.Max sDefault &= GetDefaultCharacter(iInd) Next Return sDefault End Private Sub GetFirstCharacterPos(Optional iPos As Integer) As Integer Dim sText As String Dim sCar As String Dim I As Integer For I = iPos To $aMask.Max If $aMask[I] Then Break Next iPos = I If IsRightAlign(iPos) Then sText = UnmaskText(Super.Text) While iPos < Me.Length sCar = String.Mid$(sText, iPos + 1, 1) If sCar <> UNMASKED_CHAR Then Break Inc iPos Wend Endif Return iPos End Private Sub GetLastCharacterPos(Optional iPos As Integer) As Integer Dim sText As String Dim sCar As String Dim I As Integer If IsMissing(iPos) Then iPos = $aMask.Max For I = iPos DownTo 0 If $aMask[I] Then Inc I Break Endif Next iPos = I If Not IsRightAlign(iPos) Then sText = UnmaskText(Super.Text) While iPos > 0 sCar = String.Mid$(sText, iPos + 1, 1) If sCar <> UNMASKED_CHAR Then Break Dec iPos Wend Endif Return iPos End Private Sub UpdateMaskAndSeparator(sMask As String) Dim iPos, iPos2 As Integer Dim sCar As String Dim iLen As Integer Dim aMask As New String[] Dim sSeparator As String Dim sAlign As String Dim sDefault As String Dim iPosFocus As Integer iPosFocus = -1 iLen = String.Len(sMask) For iPos = 1 To iLen sCar = String.Mid$(sMask, iPos, 1) If sCar = "[" Then iPos2 = String.InStr(sMask, "]", iPos) If iPos2 = 0 Then Error.Raise("Bad mask") aMask.Add(String.Mid$(sMask, iPos, iPos2 - iPos + 1)) iPos = iPos2 sSeparator &= String.Chr(&H2007) sDefault &= $sPrompt Continue Else If sCar = "<" Then If aMask.Count And If aMask[aMask.Max] Then sAlign &= Space$(aMask.Count - 1 - Len(sAlign)) & "<" Endif Else If sCar = "!" Then iPosFocus = aMask.Count Else If sCar = "?" Then aMask.Add(sCar) sSeparator &= String.Chr(&H2007) sDefault &= $sPrompt ' Else If sCar = "0" Then ' aMask.Add("[0-9]") ' sSeparator &= k ' sDefault &= "0" Else If sCar = "0" Then aMask.Add("[0-9]") sSeparator &= String.Chr(&H2007) sDefault &= "0" Else If sCar = "#" Or If sCar = "9" Then aMask.Add("[0-9]") sSeparator &= String.Chr(&H2007) sDefault &= $sPrompt Else If sCar = "A" Then aMask.Add("[A-Za-z]") sSeparator &= String.Chr(&H2007) sDefault &= $sPrompt Else If sCar = "\\" And If iPos < iLen Then aMask.Add("") Inc iPos sSeparator &= String.Mid$(sMask, iPos, 1) sDefault &= "." Else aMask.Add("") sSeparator &= sCar sDefault &= "." Endif Next $sMaskOrg = sMask $aMask = aMask $sSeparator = sSeparator $sAlign = sAlign $sDefault = sDefault If iPosFocus < 0 Then $iPosFocus = GetFirstCharacterPos() Else $iPosFocus = iPosFocus Endif 'If $sMaskChar Then $sDefault = Replace($sDefault, "_", $sMaskChar) End Private Sub Mask_Write(Value As String) UpdateMaskAndSeparator(Value) If Not $sMaskOrg Then Return If Not $hObserver Then $hObserver = New Observer(Me) As "TextBox" If Not IsValid(Super.Text) Then Clear() Endif End ' Private Sub IsMaskCharacter(sCar As String) As Boolean ' ' Return InStr(MASK_CHARACTER, sCar) ' ' End Private Sub GetPreviousSeparator(iPos As Integer, Optional sSep As String) As Integer Dim sCar As String If iPos < 0 Then Return -1 While iPos >= 0 sCar = $aMask[iPos] If Not sCar Then If Not sSep Then Break If sSep = String.Mid$($sSeparator, iPos + 1, 1) Then Break Endif Dec iPos Wend Return iPos End Private Sub GetNextSeparator(iPos As Integer, Optional sSep As String) As Integer Dim sCar As String If iPos < 0 Then Return 0 While iPos < $aMask.Count sCar = $aMask[iPos] If Not sCar Then If Not sSep Then Break If sSep = String.Mid$($sSeparator, iPos + 1, 1) Then Break Endif Inc iPos Wend Return iPos End Private Sub GetNextCharacter(sText As String, iPos As Integer) As Integer Dim iLen As Integer = String.Len(sText) If iPos < 0 Then Return 0 While iPos < iLen If $aMask[iPos] Then Break Inc iPos Wend Return iPos End Private Sub IsRightAlign(iPos As Integer) As Boolean iPos = GetNextSeparator(iPos) If iPos = 0 Then Return Return Mid$($sAlign, iPos, 1) = "<" End Private Sub IsFull(sText As String, iPos As Integer) As Boolean Dim iStart As Integer Dim iEnd As Integer Dim I As Integer iStart = GetPreviousSeparator(iPos) iEnd = GetNextSeparator(iPos) For I = iStart + 1 To iEnd - 1 If String.Mid$(sText, I + 1, 1) = UNMASKED_CHAR Then Return Next Return True End Private Sub IsSeparator(iPos As Integer) As Boolean If iPos < 0 Or If iPos >= $aMask.Count Then Return True If Not $aMask[iPos] Then Return True End Private Sub IsVoid(sText As String, iPos As Integer) As Boolean Dim iStart As Integer Dim iEnd As Integer Dim I As Integer iStart = GetPreviousSeparator(iPos) iEnd = GetNextSeparator(iPos) For I = iStart + 1 To iEnd - 1 If String.Mid$(sText, I + 1, 1) <> UNMASKED_CHAR Then Return Next Return True End Private Sub UnmaskText(sText As String) As String Dim iPos As Integer Dim sResult As String Dim sCar As String For iPos = 1 To String.Len(sText) sCar = String.Mid$(sText, iPos, 1) If $aMask[iPos - 1] And If sCar = GetDefaultCharacter(iPos - 1) Then sCar = UNMASKED_CHAR sResult &= sCar Next Return sResult End Private Sub MaskText(sText As String) As String Dim iPos As Integer Dim sResult As String Dim sCar As String Dim sMask As String Dim bNumber As Boolean Dim sDefault As String For iPos = 1 To String.Len(sText) sCar = String.Mid$(sText, iPos, 1) sDefault = GetDefaultCharacter(iPos - 1) sMask = $aMask[iPos - 1] If Not sMask Then bNumber = False Else If sMask = "[0-9]" And If IsRightAlign(iPos) Then If sCar = UNMASKED_CHAR And If bNumber Then sCar = "0" Else If sCar = "0" And If Not bNumber Then sCar = UNMASKED_CHAR Endif If Not bNumber And If IsDigit(sCar) And If sCar <> "0" Then bNumber = True Endif If sCar = UNMASKED_CHAR Then sCar = sDefault sResult &= sCar Next Return sResult End Private Sub GotoCursor(iPos As Integer) As Boolean Dim iFirst As Integer Dim iLast As Integer iFirst = GetFirstCharacterPos() If iPos < iFirst Then iPos = iFirst iLast = GetLastCharacterPos() If iPos > iLast Then iPos = iLast If Me.Pos <> iPos Then Me.Pos = iPos Return True Endif End Public Sub TextBox_KeyPress() Dim sText, sTextOrg As String Dim iPos, iPosPrev, iPosNext As Integer Dim iMove As Integer Dim sCar As String Dim sInsert As String Dim bDelete As Boolean Dim bBefore As Boolean Dim bChange As Boolean If Not $sMaskOrg Then Return If Me.ReadOnly Then Return sText = UnmaskText(Super.Text) sTextOrg = sText If Me.Selected Then iPos = GetNextCharacter(sText, Me.Selection.Start) Else iPos = Me.Pos Endif Select Key.Code Case Key.Left iMove = -1 Case Key.Right iMove = 1 Case Key.Home iPos = GetFirstCharacterPos() Case Key.End iPos = GetLastCharacterPos() Case Key.Delete If iPos < GetLastCharacterPos() iMove = 0 bDelete = True bBefore = IsRightAlign(iPos + 1) Endif Case Key.BackSpace If iPos > GetFirstCharacterPos() Then iMove = -1 bDelete = True bBefore = IsRightAlign(iPos) Endif Case Key.Tab, Key.BackTab, Key.Up, Key.Down, Key.Enter, Key.Return, Key.ControlKey, Key.AltKey, Key.ShiftKey, Key.AltGrKey Return Case Else If Key.Control Then Return ' If Key.Code = Key["V"] Then ' sPaste = Clipboard.Paste("text/plain") ' If sPaste Then ' sText = Super.Text ' If Me.Selected Then ' sText = String.Left(sText, Me.Selection.Start) & sPaste & String.Mid(sText, Me.Selection.Start + Me.Selection.Length + 1) ' Else ' sText = String.Left(sText, Me.Pos) & sPaste & String.Mid(sText, Me.Pos + 1) ' Endif ' If Not IsValid(sText) Then Stop Event ' Else ' Stop Event ' Endif ' Endif ' ' Return ' Endif If Key.Text Then bBefore = IsRightAlign(iPos) If bBefore Then If iPos > 0 Then sCar = $aMask[iPos - 1] Else sCar = "" Endif If sCar And If Key.Text Like sCar Then sInsert = Key.Text iMove = 0 Endif Else If iPos < $aMask.Count Then sCar = $aMask[iPos] If sCar And If Key.Text Like sCar Then sInsert = Key.Text iMove = 1 Endif Endif If Not sInsert Then iPosNext = GetNextSeparator(iPos, Key.Text) While iPosNext < Me.Length If iPosNext < $aMask.Max And If $aMask[iPosNext + 1] Then Break Inc iPosNext Wend If iPosNext >= Me.Length Then Goto DO_NOTHING iPos = iPosNext iMove = 1 Endif Endif End Select If sInsert Or If Key.Code = Key.Delete Or If Key.Code = Key.BackSpace Then If Me.Selected Then If Me.Selection.Length = Me.Length Then sText = MakeDefault() 'sText = String.Left$(sText, Me.Selection.Start) & String.Mid$(sDefault, Me.Selection.Start + 1, Me.Selection.Length) & String.Mid$(sText, Me.Selection.Start + Me.Selection.Length + 1) iPos = GetNextCharacter(sText, Me.Selection.Start) Me.Selection.Hide Endif Endif If sInsert Then If Not bBefore Then sText = String.Left(sText, iPos) & sInsert & String.Mid$(sText, iPos + 2) Else iPosNext = iPos While iPos > 0 If Not $aMask[iPos - 1] Then Break Dec iPos Wend If String.Mid$(sText, iPos + 1, 1) = UNMASKED_CHAR Then sText = String.Left(sText, iPos) & String.Mid$(sText, iPos + 2, iPosNext - iPos - 1) & sInsert & String.Mid$(sText, iPosNext + 1) Endif iPos = iPosNext Endif Endif iPos += iMove If sInsert And If IsFull(sText, iPos - 1) And If IsSeparator(iPos) Then iPos = GetNextSeparator(iPos) While iPos < $aMask.Count If $aMask[iPos] Then Break Inc iPos Wend iPos = GetFirstCharacterPos(iPos) Else If Key.Code = Key.BackSpace And If IsVoid(sText, iPos) Then iPos = GetPreviousSeparator(iPos) While iPos >= 0 If $aMask[iPos] Then Break Dec iPos Wend iPos = GetLastCharacterPos(iPos) If iPos < 0 Then Stop Event Return Endif Endif If bDelete Then iPosNext = GetNextSeparator(iPos) If iPosNext > iPos Then If bBefore Then iPosPrev = GetPreviousSeparator(iPos) sText = String.Left(sText, iPosPrev + 1) & UNMASKED_CHAR & String.Mid$(sText, iPosPrev + 2, iPos - iPosPrev - 1) & String.Mid$(sText, iPos + 2) Inc iPos Else sText = String.Left(sText, iPos) & String.Mid$(sText, iPos + 2, iPosNext - iPos - 1) & UNMASKED_CHAR & String.Mid$(sText, iPosNext + 1) Endif Endif Endif Object.Lock(Me) If sText <> sTextOrg Then sText = MaskText(sText) If Super.Text <> sText Then Super.Text = sText bChange = True Endif If IsRightAlign(iPos) Then While iPos < Me.Length If String.Mid$(sText, iPos + 1, 1) <> $sPrompt Then Break Inc iPos Wend Endif Endif Object.Unlock(Me) GotoCursor(iPos) If bChange Then Raise Change 'Me.Select(iPos, 1) DO_NOTHING: Stop Event End ' Private Function MaskChar_Read() As String ' ' Return $sMaskChar ' ' End ' ' Private Sub MaskChar_Write(Value As String) ' ' Dim sText As String ' Dim iPos As Integer ' Dim sCar As String ' Dim aPos As New Integer[] ' ' Value = String.Left(Value) ' sText = Super.Text ' ' For iPos = 0 To $aMask.Max ' sCar = $aMask[iPos] ' If Not sCar Or If String.Mid$($sDefault, iPos + 1, 1) <> "_" Then Continue ' If String.Mid$(sText, iPos + 1, 1) = GetDefaultCharacter(iPos) Then aPos.Add(iPos) ' Next ' ' $sMaskChar = Value ' UpdateMaskAndSeparator($sMaskOrg) ' ' For Each iPos In aPos ' sText = String.Left(sText, iPos) & GetDefaultCharacter(iPos) & String.Mid$(sText, iPos + 2) ' Next ' ' Super.Text = RTrim(sText) ' Me.Pos = GetFirstCharacterPos() ' ' End Public Sub TextBox_GotFocus() If Not $sMaskOrg Then Return TextBox_Change GotoCursor($iPosFocus) End Public Sub TextBox_LostFocus() If Not $sMaskOrg Then Return $iPosFocus = Me.Pos TextBox_Change End ' Public Sub TextBox_Menu() ' ' If Not $sMaskOrg Then Return ' Stop Event ' ' End Private Sub RestorePosition() Me.Pos = $iSavePos Me.Select($iSavePos, $iSaveLength) End Public Sub TextBox_Change() ' Dim I As Integer ' Dim sText As String ' Dim sCar As String ' Dim sNewText As String ' Dim iPos As Integer ' Dim iDec As Integer 'Dim bCanRaise As Boolean Dim bStop As Boolean ' bCanRaise = Object.CanRaise(Me, "Filter") ' ' If $sFilter Or If bCanRaise Then ' ' sText = Super.Text ' iPos = Me.Pos ' For I = 1 To String.Len(sText) ' sCar = String.Mid$(sText, I, 1) ' If $sFilter And If sCar Like $sFilter Then ' sNewText &= sCar ' Continue ' Endif ' If bCanRaise Then ' bStop = Raise Filter(sCar) ' If Not bStop Then ' sNewText &= sCar ' Continue ' Endif ' Endif ' ' If I <= iPos Then Inc iDec ' ' Next ' ' If sNewText <> sText Then ' Object.Lock(Me) ' Super.Text = sNewText ' Me.Pos = iPos - iDec ' Object.Unlock(Me) ' Endif ' ' Endif If Not IsValid(Super.Text) Then bStop = True Else 'If Object.CanRaise(Me, "Validate") Then bStop = Raise Validate Endif If bStop Then Object.Lock(Me) Super.Text = $sSaveText RestorePosition Object.Unlock(Me) Else $sSaveText = Super.Text $iSavePos = Me.Pos $iSaveLength = Me.Selection.Length Endif If $sMaskOrg Then Object.Lock(Me) If Me.HasFocus Or If $bShowDefault Then If Super.Text = "" Then Super.Text = MakeDefault() Else If Super.Text = MakeDefault() Then Super.Text = "" Endif RestorePosition Object.Unlock(Me) Endif End Private Function ShowDefault_Read() As Boolean Return $bShowDefault End Private Sub ShowDefault_Write(Value As Boolean) $bShowDefault = Value TextBox_Change End Private Sub IsValid(sText As String) As Boolean Dim I As Integer Dim sMask As String Dim sCar As String Dim bStop As Boolean Dim bCanRaise As Boolean bCanRaise = Object.CanRaise(Me, "Filter") If $sFilter Or If bCanRaise Then For I = 1 To String.Len(sText) sCar = String.Mid$(sText, I, 1) If $sFilter And If sCar Like $sFilter Then Continue If bCanRaise Then bStop = Raise Filter(sCar) If Not bStop Then Continue Endif Return False Next Endif If $sMaskOrg Then If String.Len(sText) <> $aMask.Count Then Return False For I = 1 To String.Len(sText) sCar = String.Mid$(sText, I, 1) sMask = $aMask[I - 1] If sMask Then If sCar <> GetDefaultCharacter(I - 1) And If sCar Not Like sMask Then Return False Else If sCar = $sPrompt Then sCar = " " If sCar <> String.Mid$($sSeparator, I, 1) Then Return False Endif Next Endif Return True End Public Sub Clear() If Me.HasFocus Then Super.Text = MakeDefault() Else Super.Text = "" Endif End Private Function Filter_Read() As String Return $sFilter End ' Private Sub MakeFilter() ' ' Dim aFilter As New String[] ' Dim sFilter As String ' Dim iPos As Integer ' ' sFilter = $sFilterOrg ' $sFilter = "" ' ' While sFilter ' ' If Left(sFilter) = "[" Then ' iPos = InStr(sFilter, "]") ' If iPos Then ' aFilter.Add(Mid$(sFilter, 2, iPos - 2)) ' sFilter = Mid$(sFilter, iPos + 1) ' Continue ' Endif ' Endif ' ' $sFilter &= String.Left(sFilter) ' sFilter = String.Mid$(sFilter, 2) ' ' Wend ' ' $sFilterLike = "[" & aFilter.Join("") & "]" ' ' End Private Sub Filter_Write(Value As String) $sFilter = Value If Not IsValid(Super.Text) Then Clear() Endif End Private Function Text_Read() As String Return Replace(Super.Text, $sPrompt, " ") End Private Sub Text_Write(Value As String) If $sMaskOrg Then Value = Replace(Value, " ", $sPrompt) If String.Len(Value) < $aMask.Count Then Value &= String.Mid$(MakeDefault(), String.Len(Value) + 1) Endif Endif Super.Text = Value End Private Function Prompt_Read() As Integer Return $iPrompt End Private Sub Prompt_Write(Value As Integer) Select Case Value Case Underscore $sPrompt = "_" Case Bracket $sPrompt = String.Chr(&H23B5) Case Dash $sPrompt = String.Chr(&H2013) Case Square $sPrompt = String.Chr(&H25A1) Case Circle $sPrompt = String.Chr(&H25CB) Case Else $sPrompt = String.Chr(&H2007) Value = 0 End Select If Value <> $iPrompt Then $iPrompt = Value UpdateMaskAndSeparator($sMaskOrg) Endif End gambas-3.16.3/comp/src/gb.form/.src/MaskBox2.class000066400000000000000000000020521411575327000214430ustar00rootroot00000000000000' Gambas class file 'Export Inherits UserControl Public Const _Properties As String = "*,-Password,-MaxLength,Action,Filter,Mask,ShowDefault,Prompt{MaskBox.*}" 'Public Const _DefaultEvent As String = "Click" 'Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Public Const _DrawWith As String = "TextBox" Public Enum Space, Underscore, Bracket, Dash, Square, Circle Event Filter(Char As String) Event Validate Property Mask As String Private $sMask As String 'Property Filter As String 'Property ShowDefault As Boolean 'Property Text As String 'Property Prompt As Integer Public Sub _new() UpdateMask End Private Function Mask_Read() As String Return $sMask End Private Sub Mask_Write(Value As String) If Value = $sMask Then Return $sMask = Value UpdateMask End Private Sub UpdateMask() Dim hChild As Control Dim hTextBox As TextBox For Each hChild In Me.Children hChild.Delete Next If Not $sMask Then hTextBox = New TextBox(Me) Me.Proxy = hTextBox Endif Endgambas-3.16.3/comp/src/gb.form/.src/Message/000077500000000000000000000000001411575327000203535ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Message/FMessage.class000066400000000000000000000043011411575327000230720ustar00rootroot00000000000000' Gambas class file Static Private $sIcon As String Static Private $aButtons As String[] Static Private $sKey As String Static Private $sText As String Static Public Sub Run(sIcon As String, sText As String, aButtons As String[], Optional sKey As String, Optional Force As Boolean) As Integer If sKey And If Settings["/HiddenMessage" &/ sKey, False] And If Not Force Then Return $sIcon = sIcon $aButtons = aButtons $sKey = sKey $sText = sText Return Me.ShowModal() End Public Sub _new() Dim hButton As Button Dim iTag As Integer Dim W, H As Integer If Message.Title Then Me.Title = Message.Title If Not $sIcon Then $sIcon = "info" Try picIcon.Picture = Picture["icon:/64/" &/ $sIcon] If Error Then picIcon.Picture = Picture["icon:/64/info"] picIcon.W = 64 chkDoNotDisplayAnymore.Visible = $sKey If $sKey Then chkDoNotDisplayAnymore.Value = Settings["/HiddenMessage" &/ $sKey, False] panButton.Children.Clear W = Desktop.Scale * 12 For iTag = 0 To $aButtons.Max hButton = New Button(panButton) As "Button" hButton.Text = $aButtons[iTag] hButton.Tag = iTag W = Max(W, hButton.Font.TextWidth($aButtons[iTag]) + Desktop.Scale * 4) If iTag = 0 Then hButton.Default = True hButton.SetFocus Else If iTag = $aButtons.Max Then hButton.Cancel = True Endif Next For Each hButton In panButton.Children hButton.Resize(W, Desktop.Scale * 4) Next W = Max(Desktop.Scale * 48, W * $aButtons.Count + Desktop.Scale * ($aButtons.Count + 2)) 'panMessage.Arrangement = Arrange.None txtMessage.Ignore = True txtMessage.W = W - picIcon.W - Desktop.Scale * 3 txtMessage.Text = $sText H = Max(64, txtMessage.H) 'Print "-->";; txtMessage.W;; txtMessage.H txtMessage.Ignore = False 'panMessage.Arrangement = Arrange.Horizontal H += panButton.H + Desktop.Scale * 5 If chkDoNotDisplayAnymore.Visible Then H += Desktop.Scale + chkDoNotDisplayAnymore.H Me.Resize(W, H) End Public Sub Button_Click() 'Debug txtMessage.W;; txtMessage.H Me.Close(Last.Tag) End Public Sub chkDoNotDisplayAnymore_Click() If $sKey Then Settings["/HiddenMessage" &/ $sKey] = chkDoNotDisplayAnymore.Value <> 0 End gambas-3.16.3/comp/src/gb.form/.src/Message/FMessage.form000066400000000000000000000015051411575327000227330ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,65,23) Resizable = False Arrangement = Arrange.Vertical Spacing = True Margin = True { panMessage Panel MoveScaled(1,1,62,7) Expand = True Arrangement = Arrange.Horizontal Spacing = True { picIcon PictureBox MoveScaled(1,1,6,5) } { txtMessage TextLabel MoveScaled(11,1,49,3) Expand = True AutoResize = True } } { chkDoNotDisplayAnymore CheckBox MoveScaled(1,14,62,3) Text = ("Do not display this message again") } { HBox2 HBox MoveScaled(2,18,62,4) { Panel2 Panel MoveScaled(4,0,1,3) Expand = True } { panButton HBox MoveScaled(13,0,39,4) AutoResize = True Spacing = True } { Panel3 Panel MoveScaled(56,0,3,4) Expand = True } } } gambas-3.16.3/comp/src/gb.form/.src/Message/Message.module000066400000000000000000000003601411575327000231450ustar00rootroot00000000000000' Gambas module file Export Public Sub Optional((Message) As String, (Button) As String, (Key) As String, Optional Icon As String, Optional Force As Boolean) As Integer Return FMessage.Run(Icon, Message, [Button], Key, Force) End gambas-3.16.3/comp/src/gb.form/.src/Message/MessageView.class000066400000000000000000000100071411575327000236170ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border,Animated,Separator" Public Const _DefaultSize As String = "32,6" Public Const _Group As String = "View" Public Const _DrawWith As String = "DrawingArea" Event Open Event Close Property Animated As Boolean Property Separator As Boolean Property Border As Boolean Private Const ANIM_SPEED As Integer = 20 Private $sText As String Private $hIcon As Picture Private $hView As DrawingArea Private $hClose As Button Private $bAnimate As Boolean Private $bSeparator As Boolean Private $H As Integer Private $aText As New String[] Private $aIcon As New Picture[] Public Sub _new() $hView = New DrawingArea(Me) As "View" $hView.Background = Color.TextBackground $hView.Foreground = Color.TextForeground $hClose = New Button($hView) As "CloseButton" $hClose.H = Desktop.Scale * 4 $hClose.AutoResize = True Me.Proxy = $hView Me.Hide End Private Sub UpdateButton() If $aText.Count Then $hClose.Text = ("Next") Try $hClose.Picture = Picture["icon:/small/forward"] Else $hClose.Text = ("Close") Try $hClose.Picture = Picture["icon:/small/close"] Endif End Private Sub GetTextWidth() As Integer Return Max(16, Me.Parent.ClientW - $hIcon.W - $hClose.W - Desktop.Scale * 6) End Private Sub DoOpen() Dim fTime As Float UpdateButton Me.H = 1 Me.Show $H = Max($hIcon.H + Desktop.Scale * 2, Me.Font.RichTextHeight($sText, GetTextWidth()) + Desktop.Scale * 4) If $bAnimate And If Application.Animations Then fTime = Timer While Me.H < $H Me.H = $H * Min(1, (Timer - fTime) * ANIM_SPEED) Try Wait Wend Endif Me.H = $H Raise Open End Public Sub Open(Text As String, Optional Icon As Picture) If $sText = Text Then Return $hIcon = Icon If Not Icon Then Try $hIcon = Picture["icon:/32/warning"] If Error Then $hIcon = Picture["img/32/warning.png"] Endif If Me.Visible Then $aText.Add(Text) $aIcon.Add($hIcon) UpdateButton Return Endif $sText = Text DoOpen End Public Sub Close() Dim fTime As Float Dim H As Integer If $bAnimate And If Application.Animations Then H = Me.H fTime = Timer While Me.H > 1 Me.H = H * (1 - Min(1, (Timer - fTime) * ANIM_SPEED)) Wait Wend Endif Me.Hide Raise Close If $aText.Count Then $sText = $aText[0] $hIcon = $aIcon[0] $aText.Remove(0) $aIcon.Remove(0) DoOpen Else $sText = "" $hIcon = Null Endif End Public Sub View_Arrange() $hClose.Move($hView.W - $hClose.W - Desktop.Scale, ($H - $hClose.H) \ 2) End Public Sub View_DblClick() Close() End Public Sub CloseButton_Click() Close() End Public Sub View_Draw() Dim X, W As Integer W = Me.W - Desktop.Scale * 2 If $hIcon Then Paint.DrawPicture($hIcon, Desktop.Scale, Desktop.Scale) X += $hIcon.W + Desktop.Scale * 3 W -= $hIcon.W - Desktop.Scale * 2 Endif W = GetTextWidth() Paint.DrawRichText($sText, X, Desktop.Scale * 2, W, Me.H - Desktop.Scale * 2, Align.TopLeft) If $bSeparator Then If Me.Y > 0 Then If IsNull(Me.Previous) Or If Not Me.Previous Is Separator Then Paint.FillRect(0, 0, Me.W, 1, Color.LightForeground) Endif Endif If Me.Y + Me.H < Me.Parent.ClientH Then If IsNull(Me.Next) Or If Not Me.Next Is Separator Then Paint.FillRect(0, Me.H - 1, Me.W, 1, Color.LightForeground) Endif Endif Endif End Private Function Animated_Read() As Boolean Return $bAnimate End Private Sub Animated_Write(Value As Boolean) $bAnimate = Value End Private Function Separator_Read() As Boolean Return $bSeparator End Private Sub Separator_Write(Value As Boolean) $bSeparator = Value $hView.Refresh End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) $hView.Border = If(Value, Border.Plain, Border.None) End gambas-3.16.3/comp/src/gb.form/.src/MessageLabel.class000066400000000000000000000051141411575327000223430ustar00rootroot00000000000000' Gambas class file 'Export Inherits TextLabel Event Change Private $ErrorColor As Integer = Color.Red Private $InfoColor As Integer = Color.Green Private $WarningColor As Integer = Color.Yellow Private $CustomColor As Integer = Color.Background Private $iBackground As Integer = Color.Default Private $hTimer As Timer Private $bGetColor As Boolean = True Public Const _Properties As String = "*,Background{Color},Delay=500,InfoColor{Color},ErrorColor{Color},WarningColor{Color},CustomColor{Color}" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "24,3" Public Const _DrawWith As String = "TextLabel" Public Const Info As Integer = 0 Public Const {Error} As Integer = 1 Public Const Warning As Integer = 2 Public Const Custom As Integer = 3 Property Delay As Integer Property ErrorColor As Integer Property InfoColor As Integer Property WarningColor As Integer Property CustomColor As Integer Property Background As Integer Public Sub _new() $hTimer = New Timer As "hTimer" $hTimer.Enabled = False End Public Sub hTimer_Timer() Me.Background = $iBackground $hTimer.Enabled = False End Public Procedure Message((Message) As String, Optional State As Integer) $bGetColor = False Me.Text = Message Select State Case 2 Me.Background = $ErrorColor Case 3 Me.Background = $WarningColor Case 4 Me.Background = $CustomColor Default Me.Background = $InfoColor End Select $hTimer.Start() Raise Change End Public Procedure Clear() Me.Text = "" Me.Background = $iBackground End Private Function Delay_Read() As Integer Return $hTimer.Delay End Private Sub Delay_Write(Value As Integer) $hTimer.Delay = Value End Private Function ErrorColor_Read() As Integer Return $ErrorColor End Private Sub ErrorColor_Write(Value As Integer) $ErrorColor = Value End Private Function InfoColor_Read() As Integer Return $InfoColor End Private Sub InfoColor_Write(Value As Integer) $InfoColor = Value End Private Function WarningColor_Read() As Integer Return $WarningColor End Private Sub WarningColor_Write(Value As Integer) $WarningColor = Value End Private Function CustomColor_Read() As Integer Return $CustomColor End Private Sub CustomColor_Write(Value As Integer) $CustomColor = Value End ' Private Function Text_Read() As String ' ' Return Super.Text ' ' End Private Function Background_Read() As Integer Return Super.Background End Private Sub Background_Write(Value As Integer) Super.Background = Value If $bGetColor Then $iBackground = Value $bGetColor = True End gambas-3.16.3/comp/src/gb.form/.src/MultiContainer/000077500000000000000000000000001411575327000217245ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/MultiContainer/_MultiContainer.class000066400000000000000000000073721411575327000260600ustar00rootroot00000000000000' Gambas class file Create Private Inherits UserContainer 'Public Const _Properties As String = "*,Count{Range:1;256}=1,Index,Text,Picture" 'Public Const _Similar As String = "TabStrip" 'Public Const _IsMultiContainer As Boolean = True 'Public Const _DefaultEvent As String = "Click" Event Click Property Count As Integer Property Index As Integer Property Text As String Property Picture As Picture Property Read Current As _MultiContainerTab Private $aCont As New _MultiContainerTab[] Private $iCurrent As Integer = -1 ' Public Sub _new() ' ' Me.Count = 1 ' Me.Arrangement = Arrange.None ' ' End Private Function Count_Read() As Integer Return $aCont.Count End Public Sub _SetCount((iCount) As Integer) End Private Sub Count_Write(iCount As Integer) Dim iCurrent As Integer If iCount < 1 Then Error.Raise("Bad argument") If iCount = $aCont.Count Then Return iCurrent = $iCurrent Object.Lock(Me) Me._SetCount(iCount) $iCurrent = -1 If iCurrent < 0 Then iCurrent = $aCont.Max Object.Unlock(Me) Try Index_Write(iCurrent) End Private Function Index_Read() As Integer Return $iCurrent End Public Sub _SetIndex((iIndex) As Integer) End Private Sub Index_Write(iIndex As Integer) If iIndex < 0 Or iIndex >= $aCont.Count Then Error.Raise("Bad index") If iIndex = $iCurrent Then Return Me._SetIndex(iIndex) $iCurrent = iIndex UpdateContainer Me._Container = $aCont[$iCurrent] Raise Click End Public Sub _UpdateContainer((hCont) As Container) End Private Sub UpdateContainer() Dim iInd As Integer For iInd = 0 To $aCont.Max With $aCont[iInd] If iInd = $iCurrent Then Me._UpdateContainer($aCont[iInd]) .Show '.Raise Else If .Visible Then .Hide '.Move(0, - $hPanel.H) Endif End With Next End Private Function Text_Read() As String Return $aCont[$iCurrent].Text End Private Sub Text_Write(sText As String) $aCont[$iCurrent].Text = sText End Private Function Picture_Read() As Picture Return $aCont[$iCurrent].Picture End Private Sub Picture_Write(hPict As Picture) $aCont[$iCurrent].Picture = hPict End Public Function _get(Index As Integer) As Container If Index < 0 Or Index >= $aCont.Count Then Error.Raise("Bad index") Return $aCont[Index] End Private Function Current_Read() As _MultiContainerTab Try Return $aCont[$iCurrent] End Public Sub _Remove((iIndex) As Integer) End Public Sub Remove(Index As Integer) Dim iCurrent As Integer Dim hTab As _MultiContainerTab If Index < 0 Or Index > $aCont.Max Then Error.Raise("Bad index") If $aCont.Count = 1 Then Return hTab = $aCont[Index] If hTab.Children.Count Then Error.Raise("TabPanel container is not empty") Me._Remove(Index) $aCont.Remove(Index) If $iCurrent = Index Then $iCurrent = -1 iCurrent = Min($aCont.Max, Index) Index_Write(iCurrent) Else If $iCurrent > Index Then Dec $iCurrent Endif hTab._Delete() End ' Private Sub GetPreviousIndex(iIndex As Integer) As Integer ' ' Dim I As Integer ' ' For I = iIndex - 1 DownTo 0 ' If $aButton[I].Visible Then Return I ' Next ' Return -1 ' ' End ' ' Private Sub GetNextIndex(iIndex As Integer) As Integer ' ' Dim I As Integer ' ' For I = iIndex + 1 To $aButton.Max ' If $aButton[I].Visible Then Return I ' Next ' Return -1 ' ' End ' ' Public Sub _GetFirstIndex() As Integer ' ' Return GetNextIndex(-1) ' ' End ' ' Private Sub GetLastIndex() As Integer ' ' Return GetPreviousIndex($aButton.Count) ' ' End ' ' Public Sub _MovePrevious() ' ' Me.Index = GetPreviousIndex($iCurrent) ' ' End ' ' Public Sub _MoveNext() ' ' Me.Index = GetNextIndex($iCurrent) ' ' End gambas-3.16.3/comp/src/gb.form/.src/MultiContainer/_MultiContainerTab.class000066400000000000000000000012731411575327000265010ustar00rootroot00000000000000' Gambas class file Create Private Inherits UserControl Property Text As String Property RichText As String Property Picture As Picture Property Visible As Boolean Property Read Container As Container Private Function Text_Read() As String End Private Sub Text_Write((Value) As String) End Private Function RichText_Read() As String End Private Sub RichText_Write((Value) As String) End Private Function Picture_Read() As Picture End Private Sub Picture_Write((Value) As Picture) End Private Function Visible_Read() As Boolean End Private Sub Visible_Write((Value) As Boolean) End Private Function Container_Read() As Container Return Me End gambas-3.16.3/comp/src/gb.form/.src/SidePanel/000077500000000000000000000000001411575327000206335ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/SidePanel/FSidePanel.class000066400000000000000000000540071411575327000236420ustar00rootroot00000000000000' Gambas class file 'Static Private $hHandleH As Picture 'Static Private $hHandleV As Picture Private $iOrientation As Integer Private $iArrowType As Integer Private $bFixed As Boolean Private $X As Integer Private $Y As Integer Private $W As Integer Private $H As Integer Private $bVisible As Boolean Private $MX As Integer Private $MY As Integer Private $iMax As Integer Private $bOpened As Boolean Private $hArrow As Image Private $bSeparator As Boolean Private $bCanMove As Boolean Private $bInside As Boolean Private $bDblClick As Boolean Private $bTransparent As Boolean Private $iMinSize As Integer Private BUTTON_H As Integer Private TRANS_H As Integer Private BUTTON_W As Integer Private $hShowPanel As Panel Private $hShowButtonLeft As DrawingArea Private $hShowButtonRight As DrawingArea Private $hTimerAnim As Timer Private $iTarget As Integer Private $bLockRefresh As Boolean ' Static Public Sub _init() ' ' $hHandleH = Picture["img/handle-h.png"] ' $hHandleV = Picture["img/handle-v.png"] ' ' End Public Sub _new() $bVisible = True $iOrientation = Align.Top $iMinSize = Desktop.Scale * 8 BUTTON_H = Desktop.Scale * 0.75 BUTTON_W = BUTTON_H * 4 TRANS_H = Max(2, BUTTON_H * 0.5) End Public Sub Form_Open() $bOpened = True RefreshAll End Private Sub GetLangOrientation(iOrientation As Integer) As Integer If System.RightToLeft Then If iOrientation = Align.Left Then Return Align.Right Else If iOrientation = Align.Right Then Return Align.Left Endif Endif Return iOrientation End Public Function GetOrientation() As Integer Return GetLangOrientation($iOrientation) End Public Sub SetOrientation(iOrientation As Integer) Select Case iOrientation Case Align.Top, Align.Bottom Case Align.Left, Align.Right Case Else Return End Select $iOrientation = GetLangOrientation(iOrientation) RefreshArrow RefreshPanel End Private Sub RefreshPanel() Dim W As Integer Dim W2 As Integer Dim Y As Integer Dim D As Integer 'IF NOT $bVisible THEN panSide.Hide If Not $bOpened Then Return 'If $bSeparator Then S = 1 Select Case $iOrientation Case Align.Top, Align.Bottom D = Me.ClientW Case Else D = Me.ClientH End Select 'D = Max(0, D - 8) If D < (BUTTON_W * 2 + 16) Then W = Min(BUTTON_W, D - 16) W2 = 0 Else W = Min(BUTTON_W, D / 2) W2 = Min(BUTTON_W, D - W) Endif Select Case $iOrientation Case Align.Bottom, Align.Right Y = 0 Case Align.Top Y = Me.ClientH - BUTTON_H Case Align.Left Y = Me.ClientW - BUTTON_H End Select Select Case $iOrientation Case Align.Top, Align.Bottom panMove.Move(0, Y, Me.ClientW, BUTTON_H) If Not $bTransparent Or If $bVisible Then If W2 Then btnSide.Move(0, 0, W, BUTTON_H) btnSide2.Move(Me.ClientW - W2, 0, W2, BUTTON_H) btnSide2.Show Else btnSide.Move(0, 0, W, BUTTON_H) 'btnSide.Move((D - W) / 2, Y, W, BUTTON_H) btnSide2.Hide Endif Endif ' W2 = ME.ClientW - W - W2 ' IF W2 > 0 THEN ' panMove.Move(W, Y, W2, BUTTON_H) ' panMove.Show ' ELSE ' panMove.Hide ' ENDIF Case Else panMove.Move(Y, 0, BUTTON_H, Me.ClientH) If Not $bTransparent Or If $bVisible Then If W2 Then btnSide.Move(0, 0, BUTTON_H, W) btnSide2.Move(0, Me.ClientH - W2, BUTTON_H, W2) btnSide2.Show Else btnSide.Move(0, 0, BUTTON_H, W) 'btnSide.Move(Y, (D - W) / 2, BUTTON_H, W) btnSide2.Hide Endif Endif ' W2 = ME.ClientH - W - W2 ' IF W2 > 0 THEN ' panMove.Move(Y, W, BUTTON_H, W2) ' panMove.Show ' ELSE ' panMove.Hide ' ENDIF End Select 'If $bTransparent Then panSide.Move(0, 0, Me.ClientW, Me.ClientH) If $bTransparent Then D = 0 Else D = BUTTON_H Endif Select Case $iOrientation Case Align.Bottom sepSide.Move(0, 0, Me.ClientW, 1) panSide.Move(0, D, Me.ClientW, Me.ClientH - D) Case Align.Top sepSide.Move(0, Me.ClientH - 1, Me.ClientW, 1) panSide.Move(0, 0, Me.ClientW, Me.ClientH - D) Case Align.Right sepSide.Move(0, 0, 1, Me.ClientH) panSide.Move(D, 0, Me.ClientW - D, Me.ClientH) Case Align.Left sepSide.Move(Me.ClientW - 1, 0, 1, Me.ClientH) panSide.Move(0, 0, Me.ClientW - D, Me.ClientH) End Select sepSide.Visible = $bSeparator And $bVisible 'IF $bVisible THEN panSide.Show 'DEBUG $bVisible;; "(";; ME.X;; ME.Y;; ME.W;; ME.H;; ") (";; btnSide.X;; btnSide.Y;; btnSide.W;; btnSide.H;; btnSide.Visible;; ") (";; panSide.X;; panSide.Y;; panSide.W;; panSide.H;; panSide.Visible;; ")" 'STOP End Public Function GetContainer() As Panel Return panSide End Private Sub GetParent() As SidePanel Return Me.Parent End Public Sub Form_Resize() RefreshPanel MoveShowButton GetParent()._Resize End Private Sub RefreshArrow() Dim iType As Integer If Not $bOpened Then Return Select Case $iOrientation Case Align.Top, Align.Bottom If $bVisible Xor ($iOrientation = Align.Bottom) Then iType = Align.Top 'hPict = Picture["img/8/side-top.png"] Else iType = Align.Bottom 'hPict = Picture["img/8/side-bottom.png"] Endif Case Align.Left, Align.Right If $bVisible Xor ($iOrientation = Align.Right) Then iType = Align.Left 'hPict = Picture["img/8/side-left.png"] Else iType = Align.Right 'hPict = Picture["img/8/side-right.png"] Endif End Select If Not Component.IsLoaded("gb.gtk") Then $hArrow = Main.GetArrow(iType, Desktop.Scale * 2) $iArrowType = iType btnSide.Refresh btnSide2.Refresh If Not $bFixed And Not Me.Parent.Design Then If $bVisible Then panMove.Mouse = If(IsVertical(), Mouse.SplitV, Mouse.SplitH) Else panMove.Mouse = Mouse.Pointing Endif Else panMove.Mouse = Mouse.Default Endif End Private Sub CreateShowButton(hParent As Container) As DrawingArea Dim hCtrl As DrawingArea hCtrl = New DrawingArea(hParent) As "ShowButton" hCtrl.Ignore = True hCtrl.Resize(Desktop.Scale, Desktop.Scale) hCtrl.Mouse = Mouse.Pointing hCtrl.Tooltip = Me.Parent.Tooltip Return hCtrl End Private Sub MoveShowButton() Dim D As Integer Dim PH As Integer Dim X, Y, W, H As Integer If $bVisible Then Return If Not $bTransparent Then Return If Not $hShowPanel Then Return If Not Me.Parent.Visible Then Return D = If($bTransparent, TRANS_H, 0) PH = If($bTransparent, TRANS_H, BUTTON_H) With Me.Parent X = .X Y = .Y W = .W H = .H End With ' If Not $bVisible And If $bTransparent Then ' If Me.Parent.Parent. ' Select Case $iOrientation ' Case Align.Top ' Y = 0 ' Case Align.Bottom ' ' End Select ' Endif With Me.Parent Select Case $iOrientation Case Align.Top $hShowPanel.Move(.X, .Y, .W, PH) If $hShowButtonLeft Then $hShowButtonLeft.Move($hShowPanel.X, $hShowPanel.Y, BUTTON_W, BUTTON_H) $hShowButtonRight.Move($hShowPanel.X + .W - BUTTON_W, $hShowPanel.Y, BUTTON_W, BUTTON_H) Endif Case Align.Bottom $hShowPanel.Move(.X, .Y - D, .W, PH) If $hShowButtonLeft Then $hShowButtonLeft.Move($hShowPanel.X, .Y - BUTTON_H, BUTTON_W, BUTTON_H) $hShowButtonRight.Move($hShowPanel.X + .W - BUTTON_W, .Y - BUTTON_H, BUTTON_W, BUTTON_H) Endif Case Align.Left $hShowPanel.Move(.X, .Y, PH, .H) If $hShowButtonLeft Then $hShowButtonLeft.Move($hShowPanel.X, $hShowPanel.Y, BUTTON_H, BUTTON_W) $hShowButtonRight.Move($hShowPanel.X, $hShowPanel.Y + .H - BUTTON_W, BUTTON_H, BUTTON_W) Endif Case Align.Right $hShowPanel.Move(.X - D, .Y, PH, .H) If $hShowButtonLeft Then $hShowButtonLeft.Move(.X - BUTTON_H, $hShowPanel.Y, BUTTON_H, BUTTON_W) $hShowButtonRight.Move(.X - BUTTON_H, $hShowPanel.Y + .H - BUTTON_W, BUTTON_H, BUTTON_W) Endif End Select End With '$hShowPanel.Move($hShowPanel.X - 2, $hShowPanel.Y - 2, $hShowPanel.W + 4, $hShowPanel.H + 4) $hShowPanel.Show $hShowPanel.Raise If $hShowButtonLeft Then $hShowButtonLeft.Show $hShowButtonLeft.Raise $hShowButtonRight.Show $hShowButtonRight.Raise Endif End Private Sub UpdatePanelSize(D As Integer, Optional bAnimate As Boolean) As Boolean Dim DD As Integer Select Case $iOrientation Case Align.Top, Align.Bottom If Me.Parent.H = D Then Return True Case Align.Left, Align.Right If Me.Parent.W = D Then Return True End Select 'bParentIgnore = Me.Parent.Ignore 'Me.Parent.Ignore = True Select Case $iOrientation Case Align.Top, Align.Bottom If bAnimate Then DD = (D - Me.Parent.H + Sgn(D - Me.Parent.H)) \ 2 Else DD = D - Me.Parent.H Endif Me.Parent.H += DD If $iOrientation = Align.Bottom Then Me.Parent.Y -= DD Case Align.Left, Align.Right If bAnimate Then DD = (D - Me.Parent.W + Sgn(D - Me.Parent.W)) \ 2 Else DD = D - Me.Parent.W Endif Me.Parent.W += DD If $iOrientation = Align.Right Then Me.Parent.X -= DD End Select 'Me.Parent.Ignore = bParentIgnore End Public Sub RefreshAll() Dim hParent As SidePanel Dim hTabStrip As TabStrip Dim iIndex As Integer Dim D As Integer Dim hCont As Container If Not $bOpened Then Return If $bLockRefresh Then Return $bLockRefresh = True hParent = GetParent() btnSide.Visible = Not $bTransparent Or $bVisible btnSide2.Visible = btnSide.Visible If $bVisible Then 'panSide.Show 'Enabled = TRUE If $hShowPanel Then $hShowPanel.Hide If $hShowButtonLeft Then $hShowButtonLeft.Hide $hShowButtonRight.Hide Endif Else 'DEBUG ME.Parent.W;; ME.CLientW 'panSide.Hide 'Enabled = FALSE If Not $hShowPanel And If $bTransparent Then hCont = Me.Parent.Parent If hCont Is TabStrip Then hTabStrip = hCont iIndex = hTabStrip.Index hTabStrip.Index = hTabStrip.FindIndex(Me.Parent) Endif $hShowButtonLeft = CreateShowButton(hCont) $hShowButtonRight = CreateShowButton(hCont) $hShowPanel = New Panel(hCont) As "panMove" $hShowPanel.Ignore = True $hShowPanel.Mouse = Mouse.Pointing $hShowPanel.Tooltip = GetParent().Tooltip If hTabStrip Then hTabStrip.Index = iIndex Endif If Not $hTimerAnim Then D = If($bTransparent, 0, BUTTON_H) UpdatePanelSize(D) Endif MoveShowButton Endif RefreshArrow RefreshPanel RefreshButtons sepSide.Raise panMove.Raise $bLockRefresh = False End Private Sub AfterTogglePanel() Dim W, H As Integer If Not $bVisible Then RefreshAll Else If $W And If $H Then W = $W H = $H If IsVertical() Then W = Me.Parent.W Else H = Me.Parent.H Endif Me.Parent.Move($X, $Y, W, H) $W = 0 $H = 0 Endif RefreshAll Endif End Private Sub TogglePanel() If Me.Parent.Design Then Return If $bVisible Then With Me.Parent $X = .X $Y = .Y $W = .Width $H = .Height End With If $hTimerAnim Then If $iOrientation = Align.Top Or If $iOrientation = Align.Bottom Then $H = $iTarget Else $W = $iTarget Endif $hTimerAnim.Stop $hTimerAnim = Null Endif 'Debug "HidePanel:";; $X;; $Y;; $W;; $H $bVisible = False If Application.Animations Then $iTarget = If($bTransparent, 1, BUTTON_H) $hTimerAnim = New Timer As "TimerAnim" $hTimerAnim.Delay = 20 $hTimerAnim.Start Else AfterTogglePanel Endif Action.Raise(Me.Parent) GetParent()._Hide Else 'Debug "ShowPanel:";; $X;; $Y;; $W;; $H $bVisible = True If $hTimerAnim Then $hTimerAnim.Stop $hTimerAnim = Null Endif If Application.Animations Then panSide.Show sepSide.Visible = $bSeparator If $iOrientation = Align.Top Or If $iOrientation = Align.Bottom Then $iTarget = $H Else $iTarget = $W Endif $hTimerAnim = New Timer As "TimerAnim" $hTimerAnim.Delay = 20 $hTimerAnim.Start Else AfterTogglePanel Endif Action.Raise(Me.Parent) GetParent()._Show Endif End Public Sub TimerAnim_Timer() If UpdatePanelSize($iTarget, True) Then $hTimerAnim.Stop $hTimerAnim = Null AfterTogglePanel Endif End Public Sub btnSide_MouseUp() If Me.Parent.Design Then Return If Not Me.Parent.Enabled Then Return 'Last.Tag = 1 'Last.Refresh $bInside = False TogglePanel End Private Function IsVertical() As Boolean Return $iOrientation = Align.Top Or $iOrientation = Align.Bottom End Public Sub panMove_MouseDown() $bCanMove = False If Me.Parent.Design Then Return If Not Me.Parent.Enabled Then Return If $bFixed Then Return If Not $bVisible Then Return '$MX = Mouse.ScreenX - Me.Parent.W Select Case $iOrientation Case Align.Top $MY = Mouse.ScreenY - Me.Parent.H $iMax = Me.Parent.Parent.ClientH - Me.Parent.Y '- Desktop.Scale * 8 Case Align.Bottom $MY = Mouse.ScreenY + Me.H $iMax = Me.Parent.Y + Me.Parent.H '+ Desktop.Scale * 8 Case Align.Left $MX = Mouse.ScreenX - Me.Parent.W $iMax = Me.Parent.Parent.ClientW - Me.Parent.X '- Desktop.Scale * 8 Case Align.Right $MX = Mouse.ScreenX + Me.W $iMax = Me.Parent.X + Me.Parent.W '+ Desktop.Scale * 8 End Select $bCanMove = True $bInside = True End Public Sub panMove_MouseUp() $bInside = False If Not $bDblClick And If Not $bVisible Then TogglePanel $bDblClick = False End Private Function GetDim(H As Integer) As Integer Dim iMin As Integer iMin = Min($iMax, Max(BUTTON_H, $iMinSize)) If H < BUTTON_H Then H = If($bTransparent, 1, BUTTON_H) Else If H < iMin Then H = iMin Endif Return H End Public Sub panMove_MouseMove() Dim H As Integer Dim iMax As Integer If Not $bCanMove Then Return If Not Mouse.Left Then Return If Me.Parent.Design Then Return If Not Me.Parent.Enabled Then Return If $bFixed Then Return iMax = Max(0, $iMax - $iMinSize) Select Case $iOrientation Case Align.Top H = GetDim(Min(iMax, Mouse.ScreenY - $MY)) Case Align.Bottom H = GetDim(Min(iMax, $MY - Mouse.ScreenY)) Case Align.Left H = GetDim(Min(iMax, Mouse.ScreenX - $MX)) Case Align.Right H = GetDim(Min(iMax, $MX - Mouse.ScreenX)) End Select If H <= BUTTON_H Then If $bVisible Then TogglePanel $bDblClick = True Return Endif Else If Not $bVisible Then TogglePanel Endif Endif Select Case $iOrientation Case Align.Top Me.Parent.H = H Case Align.Bottom Me.Parent.Move(Me.Parent.X, $iMax - H, Me.Parent.W, H) Case Align.Left Me.Parent.W = H Case Align.Right Me.Parent.Move($iMax - H, Me.Parent.Y, H, Me.Parent.H) End Select RefreshPanel End Public Function IsHidden() As Boolean Return Not $bVisible End Public Sub SetHidden(bHidden As Boolean) If bHidden = $bVisible Then TogglePanel End Public Function GetDimension() As Integer If IsVertical() Then If Not $bVisible Then Return $H Else Return Me.Parent.Height Endif Else If Not $bVisible Then Return $W Else Return Me.Parent.Width Endif Endif End Public Sub SetDimension(iDim As Integer) If IsVertical() Then If Not $bVisible Then $H = iDim Else Me.Parent.Height = iDim Endif Else If Not $bVisible Then $W = iDim Else Me.Parent.Width = iDim Endif Endif End Public Function IsFixed() As Boolean Return $bFixed End Public Sub SetFixed(bFixed As Boolean) $bFixed = bFixed RefreshArrow End Public Sub panMove_DblClick() If Not Me.Parent.Enabled Then Return TogglePanel $bDblClick = True End Public Function GetTooltip() As String Return btnSide.ToolTip End Public Sub SetTooltip(Value As String) btnSide.ToolTip = Value btnSide2.ToolTip = Value panMove.ToolTip = Value If $hShowButtonLeft Then $hShowButtonLeft.Tooltip = Value $hShowButtonRight.Tooltip = Value $hShowPanel.Tooltip = Value Endif End Public Sub SetDesign() RefreshArrow RefreshPanel End ' PUBLIC SUB panMove_Draw() ' ' IF IsVertical() THEN ' Draw.FillX = 0 ' Draw.FillY = panMove.H / 2 - 2 ' Draw.Tile($hHandleH, panMove.W * 0.1, panMove.H / 2 - 3, panMove.W * 0.8, 4) ' ELSE ' Draw.FillX = panMove.W / 2 - 2 ' Draw.FillY = 0 ' Draw.Tile($hHandleV, panMove.W / 2 - 3, panMove.H * 0.1, 4, panMove.H * 0.8) ' ENDIF ' ' END ' Public Sub panMove_Enter() ' ' $iColor = panMove.Background ' ' If Not $bVisible Then Return ' If $bFixed Then Return ' If Me.Parent.Design Then Return ' ' 'panMove.Background = Color.ButtonBackground ' 'btnSide.Background = Color.ButtonBackground ' 'btnSide2.Background = Color.ButtonBackground ' ' End ' ' Public Sub panMove_Leave() ' ' 'panMove.Background = $iColor ' 'btnSide.Background = $iColor ' 'btnSide2.Background = $iColor ' ' End Public Sub btnSide_Draw() Dim iOrientation As Integer If Me.Parent.Design Or If Not $bTransparent Or If $bInside Then iOrientation = $iOrientation If Not $bVisible Then iOrientation = InvertOrientation(iOrientation) DrawArrow(Last, iOrientation) ' If $hArrow Then ' Draw.Image($hArrow, (Last.W - $hArrow.W) / 2, (Last.H - $hArrow.H) / 2) ' Else ' S = Min(btnSide.W, btnSide.H) ' Draw.Style.Arrow((btnSide.W - S) \ 2, (btnSide.H - S) \ 2, S, S, $iArrowType) ' Endif Endif End Public Sub btnSide_Enter() Last.Refresh End Public Sub btnSide_Leave() Last.Refresh End Public Sub btnSide_MouseDown() 'Last.Tag = 2 'Last.Refresh End Public Sub HasSeparator() As Boolean Return $bSeparator End Public Sub SetSeparator(bVisible As Boolean) If $bSeparator = bVisible Then Return $bSeparator = bVisible RefreshAll 'RefreshPanel End ' Private Sub UpdateBackground() ' ' ' If $bInside And If Not $bVisible Then ' ' panMove.Background = Color.SelectedBackground ' ' Else ' ' panMove.Background = Color.Default ' 'Endif ' ' End Private Sub RefreshButtons() If $bTransparent Then If $bVisible Then btnSide.Refresh btnSide2.Refresh Else If $hShowButtonLeft Then $hShowButtonLeft.Refresh $hShowButtonRight.Refresh Endif Endif End Public Sub panMove_Enter() 'Debug $bInside = True 'UpdateBackground RefreshButtons End Public Sub panMove_Leave() 'Debug $bInside = False 'UpdateBackground RefreshButtons End Private Sub InvertOrientation(iOrient As Integer) As Integer Select Case iOrient Case Align.Left iOrient = Align.Right Case Align.Right iOrient = Align.Left Case Align.Top iOrient = Align.Bottom Case Align.Bottom iOrient = Align.Top End Select Return iOrient End Public Sub ShowButton_Draw() If $bTransparent And If Not $bInside And If Not Last.Hovered Then Return DrawArrow(Last, InvertOrientation($iOrientation)) End Public Sub ShowButton_Enter() Last.Refresh panMove_Enter End Public Sub ShowButton_Leave() Last.Refresh panMove_Leave End Private Sub DrawArrow(hCtrl As Control, iOrient As Integer) Dim X, Y, W, H As Float X = hCtrl.W / 2 Y = hCtrl.H / 2 If hCtrl.W > hCtrl.H Then W = Desktop.Scale * 2 - 4 H = Desktop.Scale - 2 Else W = Desktop.Scale - 2 H = Desktop.Scale * 2 - 4 Endif X -= W / 2 Y -= H / 2 X += 1 Y += 1 W -= 2 H -= 2 If iOrient = Align.Left Or If iOrient = Align.Right Then Y += 1 H -= 2 Else X += 1 W -= 2 Endif Select Case iOrient Case Align.Right Paint.MoveTo(X, Y) Paint.LineTo(X + W, Y + H / 2) Paint.LineTo(X, Y + H) Case Align.Left Paint.MoveTo(X + W, Y) Paint.LineTo(X, Y + H / 2) Paint.LineTo(X + W, Y + H) Case Align.Bottom Paint.MoveTo(X, Y) Paint.LineTo(X + W / 2, Y + H) Paint.LineTo(X + W, Y) Case Align.Top Paint.MoveTo(X, Y + H) Paint.LineTo(X + W / 2, Y) Paint.LineTo(X + W, Y + H) End Select 'Paint.Brush = Paint.Color(Color.SetAlpha(Color.TextBackground, 0)) 'Paint.LineWidth = 3 'Paint.Stroke(True) Paint.Brush = Paint.Color(Color.SetAlpha(Color.TextForeground, 64)) Paint.LineCap = Paint.LineCapRound Paint.LineJoin = Paint.LineJoinRound Paint.LineWidth = 2 Paint.Stroke End Public Sub ShowButton_MouseDown() TogglePanel End Public Sub IsTransparent() As Boolean Return $bTransparent End Public Sub SetTransparent(bTransparent As Boolean) If $bTransparent = bTransparent Then Return $bTransparent = bTransparent RefreshAll End Public Sub panMove_Menu() Dim hPopup, hMenu As Menu hPopup = New Menu(Me) hMenu = New Menu(hPopup) As "mnuHidden" hMenu.Text = ("Hidden") hMenu.Checked = IsHidden() hMenu = New Menu(hPopup) As "mnuTransparent" hMenu.Text = ("Transparent") hMenu.Checked = IsTransparent() hMenu = New Menu(hPopup) hMenu = New Menu(hPopup) hMenu.Text = ("Cancel") hMenu.Picture = Picture["icon:/small/close"] hPopup.Popup hPopup.Delete End Public Sub mnuHidden_Click() SetHidden(Not IsHidden()) End Public Sub mnuTransparent_Click() SetTransparent(Not IsTransparent()) End Public Sub GetMinSize() As Integer Return $iMinSize End Public Sub SetMinSize(iMinSize As Integer) $iMinSize = Max(Desktop.Scale, iMinSize) End gambas-3.16.3/comp/src/gb.form/.src/SidePanel/FSidePanel.form000066400000000000000000000007121411575327000234720ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(8,16,50,50) Resizable = False { panSide Panel MoveScaled(7,10,35,33) } { panMove Panel MoveScaled(1,4,46,4) { btnSide DrawingArea MoveScaled(10,0,6,4) Mouse = Mouse.Pointing } { btnSide2 DrawingArea btnSide Name = "btnSide2" MoveScaled(18,0,6,4) Mouse = Mouse.Pointing } } { sepSide Separator MoveScaled(0,0,6,3) Visible = False } } gambas-3.16.3/comp/src/gb.form/.src/SidePanel/SidePanel.class000066400000000000000000000064771411575327000235440ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Action,Orientation{Align.Top;Bottom;Left;Right}=Top,Resizable=True,Border,Separator,Transparent,Hidden" Public Const _Similar As String = "Panel" Event Show Event Hide Event Resize Property Orientation As Integer Property Border As Boolean Property Separator As Boolean Property Hidden As Boolean Property Resizable As Boolean Property Dimension As Integer Property Tooltip As String Property Value As Boolean Property Action As String Property Design As Boolean Property Settings As Variant[] Property Transparent As Boolean Property MinSize As Integer Private $hObs As Observer Private $hForm As FSidePanel Public Sub _new() $hForm = New FSidePanel(Me) $hForm.Move(0, 0) $hObs = New Observer(Me.Parent) As "Observer" 'Object.Attach($hForm, ME, "Form") Me._Container = $hForm.GetContainer() End Public Sub Observer_Arrange() $hForm.RefreshAll End Private Function Orientation_Read() As Integer Return $hForm.GetOrientation() End Private Sub Orientation_Write(iOrientation As Integer) $hForm.SetOrientation(iOrientation) End Private Function Border_Read() As Boolean Return $hForm.GetContainer().Border <> Border.None End Private Sub Border_Write(bBorder As Boolean) $hForm.GetContainer().Border = If(bBorder, Border.Sunken, Border.None) End Private Function Hidden_Read() As Boolean Return $hForm.IsHidden() End Private Sub Hidden_Write(bHidden As Boolean) $hForm.SetHidden(bHidden) End Private Function Dimension_Read() As Integer Return $hForm.GetDimension() End Private Function Resizable_Read() As Boolean Return Not $hForm.IsFixed() End Private Sub Resizable_Write(bResizable As Boolean) $hForm.SetFixed(Not bResizable) End Public Sub _Show() Raise Show End Public Sub _Hide() Raise Hide End Public Sub _Resize() Raise Resize End Private Sub Dimension_Write(Value As Integer) $hForm.SetDimension(Value) End Private Function Tooltip_Read() As String Return $hForm.GetTooltip() End Private Sub Tooltip_Write(Value As String) $hForm.SetTooltip(Value) End Private Function Action_Read() As String Return Super.Action End Private Sub Action_Write(Value As String) Super.Action = Value End Private Function Value_Read() As Boolean Return Not Hidden_Read() End Private Sub Value_Write(Value As Boolean) Hidden_Write(Not Value) End Private Function Design_Read() As Boolean Return Super.Design End Private Sub Design_Write(Value As Boolean) Super.Design = Value $hForm.SetDesign End Private Function Settings_Read() As Variant[] Return [CVariant(Hidden_Read()), Dimension_Read(), Transparent_Read()] End Private Sub Settings_Write(Value As Variant[]) Try Transparent_Write(Value[2]) Try Hidden_Write(Value[0]) Try Dimension_Write(Value[1]) End Private Function Separator_Read() As Boolean Return $hForm.HasSeparator() End Private Sub Separator_Write(Value As Boolean) $hForm.SetSeparator(Value) End Private Function Transparent_Read() As Boolean Return $hForm.IsTransparent() End Private Sub Transparent_Write(Value As Boolean) $hForm.SetTransparent(Value) End Private Function MinSize_Read() As Integer Return $hForm.GetMinSize() End Private Sub MinSize_Write(Value As Integer) $hForm.SetMinSize(Value) End gambas-3.16.3/comp/src/gb.form/.src/SliderBox.class000066400000000000000000000063441411575327000217200ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Picture,MinValue=0,MaxValue=100,Step=1,DefaultValue,Value" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "32,4" Public Const _Similar As String = "Slider" Event Change Property Value As Integer Property MinValue As Integer Property MaxValue As Integer Property Step As Integer Property DefaultValue As Integer Property Font As Font Property Picture As Picture Private $hSlider As Slider Private $hSpinBox As SpinBox Private $iStep As Integer = 1 Private $iDefault As Integer Private $hPictureBox As PictureBox Public Sub _new() Me._Arrangement = Arrange.Horizontal Me._Spacing = True $hSlider = New Slider(Me) As "Slider" $hSlider.Expand = True $hSlider.PageStep = 1 $hSlider.Orientation = ScrollBar.Horizontal $hSpinBox = New SpinBox(Me) As "SpinBox" UpdateSpinBoxWidth End Private Function Value_Read() As Integer Return $hSlider.Value End Private Sub Value_Write(Value As Integer) $hSlider.Value = Value $hSpinBox.Value = Value End Private Function MinValue_Read() As Integer Return $hSlider.MinValue End Private Sub UpdateSpinBoxWidth() Dim N As Integer N = Max(Abs($hSpinBox.MinValue), Abs($hSpinBox.MaxValue)) 'If $hSpinBox.MinValue < 0 Then N *= 10 $hSpinBox.W = Max(Desktop.Scale * 8, (2 + Len(CStr(N))) * $hSpinBox.Font.TextWidth("0") + $hSpinBox.Font.TextWidth("-") + Desktop.Scale * 2) End Private Sub MinValue_Write(Value As Integer) $hSlider.MinValue = Value $hSpinBox.MinValue = Value UpdateSpinBoxWidth End Private Function MaxValue_Read() As Integer Return $hSlider.MaxValue End Private Sub MaxValue_Write(Value As Integer) $hSlider.MaxValue = Value $hSpinBox.MaxValue = Value UpdateSpinBoxWidth End Public Sub Slider_Change() $hSpinBox.Value = $hSlider.Value Raise Change End Public Sub SpinBox_Change() $hSlider.Value = $hSpinBox.Value End Private Function Step_Read() As Integer Return $iStep End Private Sub Step_Write(Value As Integer) $iStep = Value $hSlider.PageStep = Value End Public Sub SpinBox_MouseWheel() If Not Me.Enabled Then Return $hSpinBox.Value += If(Mouse.Forward, $iStep, -$iStep) Stop Event End Private Function DefaultValue_Read() As Integer Return $iDefault End Private Sub DefaultValue_Write(Value As Integer) $iDefault = Value End Public Sub SpinBox_DblClick() $hSlider.Value = $iDefault Stop Event End Private Function Font_Read() As Font Return Super.Font End Private Sub Font_Write(Value As Font) Super.Font = Value UpdateSpinBoxWidth End Public Sub SpinBox_KeyPress() If Key.Code = Key.Esc Then $hSlider.Value = $iDefault Stop Event Endif End Private Function Picture_Read() As Picture If $hPictureBox Then Return $hPictureBox.Picture End Private Sub Picture_Write(Value As Picture) If Value Then If Not $hPictureBox Then $hPictureBox = New PictureBox(Me) $hPictureBox.Lower $hPictureBox.Mode = PictureBox.Contain $hPictureBox.W = Desktop.Scale * 4 $hPictureBox.Padding = Desktop.Scale \ 2 Endif $hPictureBox.Picture = Value Else If $hPictureBox Then $hPictureBox.Delete Endif End gambas-3.16.3/comp/src/gb.form/.src/SpinBar/000077500000000000000000000000001411575327000203255ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/SpinBar/SpinBar.class000066400000000000000000000222701411575327000227150ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border=True,Value,MaxValue=1.0,MinValue,Text,Step=0.1" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "32,4" Public Const _Similar As String = "Slider" Event Change 'Properties Property Value As Float Property MaxValue As Float Property MinValue As Float Property Text As String Property Step As Float Property Background As Integer Property Border As Boolean 'Properties Var Private $hView As DrawingArea Private $fValue As Float Private $fMaxValue As Float = 1 Private $fMinValue As Float = 0 Private $sText As String Private $fStep As Float = 0.1 'Internal Var Private $fInternalPos As Float Private $bInButDown As Boolean Private $bInButUp As Boolean Private $bInText As Boolean Private $hRectButUp As Rect ''Define the zone of the top arrow button Private $hRectButDown As Rect ''Define the zone of the Bottom arrow button Private $hRectText As New Rect ''Define the zone of the spin text Private $iLoop As Integer Private $byDecimal As Integer Private $sFormatPattern As String Private $hText As TextBox Private $iMX As Integer Private $iMY As Integer Private $byMode As Byte Private $iBg As Integer = Color.Default Private $bBorder As Boolean = True Private $hTimer As New Timer As "Timer" Public Sub _new() $hView = New DrawingArea(Me) As "View" '$hView.Border = Border.No $hView.Tracking = True '$hView.Background = Color.TextBackground $hView.Focus = True $hText = New TextBox($hView) As "Text" $hText.Visible = False $hText.Border = False $hText.Alignment = Align.Right $hTimer.Delay = 500 SetValue(Me.Value) 'Me.MaxValue = 3 GetDecimals End Public Sub View_MouseMove() Dim $bPrev As Boolean Dim $bChange As Boolean Dim iWidth As Integer = $hView.Width - 4 - $hRectButDown.Width - 1 Dim iMov As Integer If Me.Design Or If Not Me.Enabled Then Return If Mouse.y <= $hView.ClientH / 2 Then If Not ($byMode = 2) Then $hView.Mouse = Mouse.Pointing Else If Not ($byMode = 1) Then $hView.Mouse = Mouse.SizeH Endif $bPrev = $bInButUp $bInButUp = False If $hRectButUp.Contains(Mouse.x, Mouse.y) Then $hView.Mouse = Mouse.Arrow $bInButUp = True $bChange = $bChange Or ($bPrev <> $bInButUp) Endif $bPrev = $bInButDown $bInButDown = False If $hRectButDown.Contains(Mouse.x, Mouse.Y) Then $hView.Mouse = Mouse.Arrow $bInButDown = True $bChange = $bChange Or ($bPrev <> $bInButUp) Endif $bPrev = $bInText $bInText = False If $hRectText.Contains(Mouse.x, Mouse.Y) Then $bInText = True $bChange = $bChange Or ($bPrev <> $bInText) Endif If Mouse.Left And If $hView.Mouse = Mouse.Pointing And If Not ($byMode = 2) Then $byMode = 1 SetValue((Mouse.x / iWidth) * ($fMaxValue - $fMinValue) + $fMinValue) Endif If Mouse.Left And If $hView.Mouse = Mouse.SizeH And If Not ($byMode = 1) Then $byMode = 2 iMov = Mouse.x - $iMX SetValue($fValue + (1 * 10 ^ (-1 * $byDecimal)) * iMov) $iMX = Mouse.X Endif Fin: If $bChange Then $hView.Refresh End Public Sub View_MouseDown() Dim iWidth As Integer = $hView.Width - 4 - $hRectButDown.Width - 1 If Me.Design Or If Not Me.Enabled Then Return If $bInButUp Then Me.Value += $fStep $hTimer.Start Return Endif If $bInButDown Then Me.Value -= $fStep $hTimer.Start Return Endif If Mouse.Y <= $hView.ClientH / 2 Then SetValue((Mouse.x / iWidth) * ($fMaxValue - $fMinValue) + $fMinValue) Endif If Mouse.Y > $hView.ClientH / 2 Then $iMX = Mouse.X $iMY = Mouse.Y Endif End Public Sub View_MouseUp() If Me.Design Or If Not Me.Enabled Then Return $hTimer.Stop $iLoop = 0 $hTimer.Delay = 500 $byMode = 0 End Public Sub Timer_Timer() $hTimer.Delay = 50 If $bInButUp Then Me.Value += $fStep If $bInButDown Then Me.Value -= $fStep End Public Sub View_MouseWheel() If Me.Design Or If Not Me.Enabled Then Return Me.Value += $fStep * Mouse.Delta Stop Event End Public Sub View_DblClick() If Me.Design Or If Not Me.Enabled Then Return If Not $bInText Then Return $hText.Move($hRectText.X, $hRectText.Y, $hRectText.Width, $hRectText.Height) $hText.Show $hText.Text = $fValue $hText.SetFocus $hText.Select End Private Sub GetFrameWidth() As Integer If $bBorder Then Return Style.FrameWidth End Public Sub View_Draw() Dim F As Integer = GetFrameWidth() Dim iWidth As Integer = Paint.Width - F * 2 '- $hRectButDown.Width - Desktop.Scale + 1 Dim iHeight As Integer = Paint.Height - F * 2 Dim iButH As Integer Dim iCol As Integer Dim iBg As Integer Dim iState As Integer iBg = $iBg If iBg = Color.Default Then iBg = Color.TextBackground If $bBorder Then iState = Style.StateOf(Me) If $hText.HasFocus Then iState += Style.HasFocus Style.PaintBox(0, 0, Paint.W, Paint.H, iState, iBg) Else Paint.FillRect(0, 0, Paint.W, Paint.H, iBg) Endif iCol = Color.SelectedBackground If Not Me.Enabled Then iCol = Color.Merge(iCol, iBg) Paint.FillRect(F, F, iWidth * $fInternalPos, iHeight, iCol) Paint.DrawText(Paint.TrimText($sText, iWidth / 2), 8, 2, iWidth / 2, iHeight, Align.Left) iButH = Paint.H 'Draw.Foreground = Color.ButtonBackground 'Draw.FillRect(Paint.W - 16, 2, 16 - 2, iButH - 4, Color.Background) 'Draw.rect(Paint.w - iPadding - 16, iPadding + iButH + 2, 16, iButH) iButH = Paint.H / 2 - F 'Debug $hRectButUp.X;; $hRectButUp.Y;; $hRectButUp.W;; $hRectButUp.H Style.PaintArrow($hRectButUp.X, $hRectButUp.Y, $hRectButUp.W, $hRectButUp.H, Align.Top, IIf($bInButUp, Style.Hovered, Style.Normal)) Style.PaintArrow($hRectButDown.X, $hRectButDown.Y, $hRectButDown.W, $hRectButDown.H, Align.Bottom, IIf($bInButDown, Style.Hovered, Style.Normal)) iCol = Color.Foreground If Not Me.Enabled Then iCol = Color.Merge(iCol, iBg) Paint.Background = iCol Paint.DrawText(Format($fValue, $sFormatPattern), $hRectText.X, $hRectText.Y, $hRectText.W - 4, $hRectText.H, Align.Right) If $bInText Then Draw.Foreground = Color.ButtonBackground Draw.Rect($hRectText.x, $hRectText.Y, $hRectText.Width, $hRectText.Height) Endif End Private Sub SetValue(fValue As Float) Dim F As Integer = GetFrameWidth() Dim iWidth As Integer fValue = Round(Max(Min(fValue, $fMaxValue), $fMinValue), $byDecimal * -1) If fValue <> $fValue Then $fValue = fValue Raise Change Endif $fInternalPos = ($fValue - $fMinValue) / ($fMaxValue - $fMinValue) iWidth = $hView.Font.TextWidth(Format($fValue, $sFormatPattern) & "000") + 4 Try $hRectText.Move($hView.W - iWidth - $hRectButDown.Width - F - Desktop.Scale, ($hView.H - ($hView.Font.Height + Style.BoxFrameHeight)) / 2, iWidth, $hView.Font.Height + 4) $hView.Refresh End Private Function Value_Read() As Float Return $fValue End Private Sub Value_Write(Value As Float) SetValue(Value) End Private Function MaxValue_Read() As Float Return $fMaxValue End Private Sub MaxValue_Write(Value As Float) $fMaxValue = Max($fMinValue, Value) GetDecimals SetValue(Me.Value) End Private Function MinValue_Read() As Float Return $fMinValue End Private Sub MinValue_Write(Value As Float) $fMinValue = Min(Value, $fMaxValue) GetDecimals SetValue(Me.Value) End Public Sub View_Arrange() Dim F As Integer = GetFrameWidth() $hRectButUp = New Rect($hView.W - 16 - F * 2, F * 2, 16, $hView.H / 2 - F * 2) $hRectButDown = New Rect($hView.W - 16 - F * 2, $hView.H / 2, 16, $hRectButUp.Height) $hRectButUp.Adjust(2) $hRectButDown.Adjust(2) SetValue(Me.Value) End Public Sub View_Leave() $byMode = 0 $bInButDown = False $bInButUp = False $bInText = False $hTimer.Stop $hTimer.Delay = 500 $iLoop = 0 $hView.Refresh End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value $hView.Refresh End Private Sub GetDecimals() $byDecimal = Max(Max(Len(Right(Str(Frac($fMaxValue)), -2)), Len(Right(Str(Frac($fMinValue)), -2))), Len(Right(Str(Frac($fStep)), -2))) $sFormatPattern = "0." & String($byDecimal, "0") End Private Function Step_Read() As Float Return $fStep End Private Sub Step_Write(Value As Float) $fStep = Min($fMaxValue / 2, Value) GetDecimals End Public Sub Text_LostFocus() $hText.Hide End Public Sub Text_GotFocus() $hText.Select() End Public Sub Text_KeyPress() If Key.Code = Key.Esc Then $hView.SetFocus If key.Code = Key.Enter Or If Key.code = Key.Return Then If Not IsFloat(Last.Text) Then $hText.Text = $fValue $hView.SetFocus Return Endif Try SetValue(Val($hText.Text)) $hView.SetFocus Endif End Public Sub Text_MouseWheel() View_MouseWheel Last.Text = $fValue End Private Function Background_Read() As Integer Return $iBg End Private Sub Background_Write(Value As Integer) $iBg = Value $hView.Refresh End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) If $bBorder = Value Then Return $bBorder = Value View_Arrange $hView.Refresh End Public Sub View_Font() View_Arrange End gambas-3.16.3/comp/src/gb.form/.src/Spinner.class000066400000000000000000000116741411575327000214450ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border,Label,Padding{Range:0;63},Margin=False,Type={Spinner.*}" Public Const _DefaultSize As String = "8,8" Public Enum {Line}, Dot, Circle Property Border As Boolean Property Label As Boolean Property Value As Float Property Enabled As Boolean Property Padding As Integer Property Margin As Boolean Property Type As Integer Private $fStartTime As Float Private $hTimer As Timer Private $bBorder As Boolean Private $bLabel As Boolean Private $fValue As Float Private $fLastWait As Float Private $iPadding As Integer Private $iType As Integer Private $bMargin As Boolean Public Sub Start() $fStartTime = Timer $hTimer = New Timer As "Timer" $hTimer.Delay = 50 Me.Refresh End Public Sub Stop() $fStartTime = 0 $hTimer = Null End Public Sub Wait() If $fLastWait = 0 Or If (Timer - $fLastWait) >= 0.2 Then Wait 0.05 $fLastWait = Timer Else Wait Endif End Public Sub UserControl_Draw() 'Dim iFlag As Integer Dim A As Float Dim X As Float Dim Y As Float Dim R As Float Dim D As Float Dim I As Integer Dim C As Float Dim W As Float Dim H As Float Dim HL As Integer Dim iFg As Integer Dim XC, YC As Float Dim P As Integer If Not Me.Design Then If $fStartTime = 0 Then Goto DRAW_BORDER D = Frac(Timer - $fStartTime) * Pi(2) Endif iFg = Style.ForegroundOf(Me) P = $iPadding If $bMargin Then P += Desktop.Scale W = Paint.W - P * 2 H = Paint.H - P * 2 Paint.Translate(P, P) If $bLabel Then HL = Paint.Font.Height + Desktop.Scale H -= HL + Desktop.Scale Endif If H > 0 Then Select Case $iType Case Circle R = Min(W, H) / 2 * 3 / 4 Paint.LineCap = Paint.LineCapButt Paint.LineWidth = R / 2 Paint.Background = Color.SetAlpha(iFg, &HD0) Paint.Arc(W / 2, H / 2, R) Paint.Stroke Paint.Background = Color.SetAlpha(iFg, &H80) If $fValue = 0 Or If $fValue = 1 Then Paint.Arc(W / 2, H / 2, R, D, Pi(2) / 3) Else D = Frac((Timer - $fStartTime) / 4) * Pi(2) Paint.Arc(W / 2, H / 2, R, D, Pi(2 * $fValue)) Endif Paint.Stroke Case Dot X = W / 2 Y = H / 2 R = Min(W, H) / 2 * 13 / 16 For I = 0 To 15 A = Pi(2) * I / 16 C = Frac(1 + (D - A) / Pi(2)) Paint.Background = Color.SetAlpha(iFg, 255 * (1 - C / 2)) XC = X + Cos(A) * R YC = Y + Sin(A) * R Paint.Ellipse(XC - R / 8, YC - R / 8, R / 4, R / 4) Paint.Fill Next Case Else X = W / 2 Y = H / 2 R = Min(W, H) / 2 * 7 / 8 Paint.LineWidth = R / 8 Paint.LineCap = Paint.LineCapRound For I = 0 To 11 A = Pi(2) * I / 12 C = Frac(1 + (D - A) / Pi(2)) 'Paint.Background = Color.Merge(Color.Background, Color.Foreground, C / 4) Paint.Background = Color.SetAlpha(iFg, 255 * (1 - C / 2)) Paint.MoveTo(X + Cos(A) * R / 2, Y + Sin(A) * R / 2) Paint.LineTo(X + Cos(A) * R, Y + Sin(A) * R) Paint.Stroke Next End Select Endif If $bLabel Then Paint.Background = iFg Paint.DrawText(Format($fValue, "0 %"), 0, Paint.H - HL, Paint.W, HL - Desktop.Scale, Align.Center) Endif Paint.Translate(-P, -P) DRAW_BORDER: If $bBorder Then Style.PaintPanel(0, 0, Paint.W, Paint.H, Border.Plain) ', iFlag) If $hTimer And If Not $hTimer.Enabled And If Me.Enabled Then $hTimer.Start Endif End Public Sub Timer_Timer() Me.Refresh $hTimer.Stop End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value Me.Refresh End Private Function Label_Read() As Boolean Return $bLabel End Private Sub Label_Write(Value As Boolean) $bLabel = Value Me.Refresh End Private Function Value_Read() As Float Return $fValue End Private Sub Value_Write(Value As Float) $fValue = Max(0, Min(1, Value)) Me.Refresh End Private Function Enabled_Read() As Boolean Return Super.Enabled End Private Sub Enabled_Write(Value As Boolean) If Value = Me.Enabled Then Return Super.Enabled = Value Me.Refresh End Private Function Padding_Read() As Integer Return $iPadding End Private Sub Padding_Write(Value As Integer) If $iPadding = Value Then Return $iPadding = Value Me.Refresh End Private Function Type_Read() As Integer Return $iType End Private Sub Type_Write(Value As Integer) If $iType = Value Then Return $iType = Value Me.Refresh End Private Function Margin_Read() As Boolean Return $bMargin End Private Sub Margin_Write(Value As Boolean) If $bMargin = Value Then Return $bMargin = Value Me.Refresh End gambas-3.16.3/comp/src/gb.form/.src/Stock.class000066400000000000000000000500231411575327000211010ustar00rootroot00000000000000' Gambas class file Export Static Property Debug As Boolean Static Property Read List As String[] Static Property Read Themes As String[] Static Property Read Icons As String[] Static Property Read Sizes As String[] Static Private $bInit As Boolean 'Static Private $sTheme As String Static Private $aIconPath As String[] Static Private $cIconMap As Collection Static Private $aList As String[] Static Private $aSizeDec As Integer[] = [256, 128, 64, 48, 32, 24, 22, 16] Static Private $aSizeInc As Integer[] = [16, 22, 24, 32, 48, 64, 128, 256] Static Private $bDebug As Boolean 'Static Private $bDebugLoad As Boolean Static Private $aRoots As String[] = ["~/.icons", "~/.local/share/icons", "/usr/share/icons", "/usr/local/share/icons"] Class _DefaultStock Class DesktopMime ' Static Private Sub GetDesktop() As String ' ' Dim sOutput As String ' ' If Env["KDE_FULL_SESSION"] Then ' If Env["KDE_SESSION_VERSION"] = "4" Then ' Return "KDE4" ' Else If Env["KDE_SESSION_VERSION"] = "5" Then ' Return "KDE5" ' Else ' Return "KDE" ' Endif ' Else If Env["GNOME_DESKTOP_SESSION_ID"] Then ' Return "GNOME" ' Else If Env["MATE_DESKTOP_SESSION_ID"] Or If Env["MATECORBA_SOCKETDIR"] Then ' Return "MATE" ' Else If Env["E_BIN_DIR"] And If Env["E_LIB_DIR"] Then ' Return "ENLIGHTENMENT" ' Else If Env["WMAKER_BIN_NAME"] Then ' Return "WINDOWMAKER" ' Else If Env["DESKTOP_SESSION"] = "LXDE" Then ' Return "LXDE" ' Else ' Shell "xprop -root XFCE_DESKTOP_WINDOW" To sOutput ' If sOutput Then Return "XFCE" ' Endif ' ' Select Case Env["XDG_CURRENT_DESKTOP"] ' Case "LXDE" ' Return "LXDE" ' End Select ' ' Return "" ' ' Catch ' ' End Static Private Sub SearchDesktop() Dim sDesktop As String If Application.Theme Then Return sDesktop = Desktop.Type If $bDebug Then Error "gb.form: desktop is " & sDesktop Application.Theme = LCase(sDesktop) End Static Private Sub LoadMap() Dim hFile As File Dim sLig As String Dim iPos As Integer Dim sKey As String Dim sIcon As String $cIconMap = New Collection $aList = New String[] hFile = Open "map" &/ "icon.map" For Each sLig In hFile.Lines sLig = Trim(sLig) If InStr("';#", Left(sLig)) Then Continue iPos = InStr(sLig, " ") If iPos Then sIcon = Trim(Mid$(sLig, iPos + 1)) sKey = Left(sLig, iPos - 1) Else sIcon = "" sKey = sLig Endif $cIconMap[sKey] = sIcon $aList.Add(sKey) Next $aList.Sort End Static Private Sub AddPath(sMap As String, sPath As String, Optional sPattern As String) Dim aDir As String[] Dim iPos As Integer If Not Exist(sPath) Then Return If Not sPattern Then sPattern = "*" aDir = Dir(sPath, "*", gb.Directory).Sort() If aDir.Count Then If aDir[0] Like "*[1-9]x[1-9]*" Then sPattern = "&1x&1!&2" Else If IsDigit(aDir[0]) Or If Exist(sPath &/ "scalable") Then sPattern = "&1!&2" Else aDir = Dir(sPath &/ aDir[0], "*", gb.Directory).Sort() If aDir.Count Then If aDir[0] Like "*[1-9]x[1-9]*" Then sPattern = "&2!&1x&1" Else If IsDigit(aDir[0]) Or If Exist(sPath &/ "scalable") Then sPattern = "&2!&1" Endif Endif Endif Endif Endif sPath &/= sPattern If sMap Then sPath = sMap & ":" & sPath If Not $aIconPath.Exist(sPath) Then $aIconPath.Add(sPath) If $bDebug Then iPos = InStr(sPath, ":") If iPos Then sPath = Mid$(sPath, iPos + 1) Error "gb.form: add icon path: "; sPath Endif Endif End Static Private Sub AddGlobalPath(sMap As String, sRelPath As String) Dim sDir As String For Each sDir In ["/usr/share/icons", "/usr/local/share/icons"] AddPath(sMap, sDir &/ sRelPath) Next End Static Private Sub FindInConfigFile(aPath As String[], sPattern As String, Optional sFindFirst As String) As String[] Dim hFile As File Dim sLine As String Dim sPath As String For Each sPath In aPath If Not Exist(sPath) Then Continue hFile = Open sPath For Each sLine In hFile.Lines If sFindFirst Then If sLine = sFindFirst Then sFindFirst = "" Else Continue Endif Endif If sLine Like sPattern Then Return Scan(sLine, sPattern) Next Next End Static Private Sub GetThemeWithDConf(sDesktop As String) As String Dim sTheme As String Try Exec ["dconf", "read", "/org/" & sDesktop & "/desktop/interface/icon-theme"] To sTheme sTheme = Trim(sTheme) If Not sTheme Then Try Exec ["dconf", "read", "/org/" & sDesktop & "/theme/name"] To sTheme sTheme = Trim(sTheme) Endif If sTheme Then If sTheme Begins "'" Then sTheme = Chr$(34) & Mid$(sTheme, 2, -1) & Chr$(34) sTheme = UnQuote(sTheme) Endif Return sTheme End ' TODO: Vérifier les thèmes ' FIXME: Mettre à jour Static Private Sub SearchTheme(sDesktop As String) 'Dim hFile As File 'Dim sLig As String Dim sIconPath As String Dim sPath As String Dim sTheme As String Dim aFind As String[] Dim sDefaultTheme As String Dim sProg As String sDesktop = LCase(sDesktop) Select sDesktop Case "gnome", "cinnamon", "mate" sTheme = GetThemeWithDConf(sDesktop) If Not sTheme And If sDesktop <> "gnome" Then sTheme = GetThemeWithDConf("gnome") If Not sTheme Then If sDesktop = "mate" Then Try Exec ["mateconftool-2", "-g", "/desktop/mate/interface/icon_theme"] To sTheme Else Try Exec ["gconftool-2", "-g", "/desktop/gnome/interface/icon_theme"] To sTheme Endif sTheme = Trim(sTheme) Endif If sTheme Then GetAllThemePath("gnome", $aRoots, sTheme) AddGlobalPath("gnome", "gnome") AddGlobalPath("gnome", "hicolor") 'AddPath("gnome", "/usr/X11R6/share/icons/hicolor") Case "kde", "kde4", "kde5", "trinity" Select Case sDesktop Case "kde" sProg = "kde-config" Case "trinity" sProg = "tde-config" Case "kde4" sProg = "kde4-config" Case "kde5" ' ??? How do you get KDE5 paths ??? sProg = "" End Select If sProg Then Try Exec [sProg, "--path", "icon"] To sIconPath sIconPath = Trim(sIconPath) Endif If Not sIconPath Then sIconPath = $aRoots.Join(":") If Not sTheme Then aFind = FindInConfigFile(["~/." & sDesktop & "/share/config/kdeglobals", "~/.kde/share/config/kdeglobals", "~/.config/kdeglobals"], "Theme=*", "[Icons]") If aFind Then sTheme = aFind[0] Endif If sTheme Then GetAllThemePath(sDesktop, Split(sIconPath, ":"), sTheme) Select Case sDesktop Case "kde", "trinity" sDefaultTheme = "crystalsvg" Case "kde4" sDefaultTheme = "oxygen" Case "kde5" sDefaultTheme = "breeze" End Select For Each sPath In Split(sIconPath, ":") AddPath(sDesktop, sPath &/ sDesktop) Next Case "xfce" If Not sTheme Then aFind = FindInConfigFile(["~/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml", "~/.config/xfce4/mcs_settings/gtk.xml"], "**") If aFind Then sTheme = Trim(aFind[1]) Endif If sTheme Then GetAllThemePath("gnome", $aRoots, sTheme) 'GetAllThemePath("gnome", "/usr/X11R6/share/icons", sTheme) AddGlobalPath("gnome", "gnome") Case "lxde" If Not sTheme Then aFind = FindInConfigFile(["~/.config/lxsession/LXDE/desktop.conf", "/etc/xdg/lxsession/LXDE/desktop.conf", "~/.config/lxde/config", "/usr/local/share/lxde/config", "/usr/share/lxde/config"], "sNet/IconThemeName=*") If aFind Then sTheme = Trim(aFind[0]) Endif If sTheme Then GetAllThemePath("gnome", $aRoots, sTheme) AddGlobalPath("gnome", "gnome") Case "gambas", "gambas-mono" $aIconPath.Add("#" & sDesktop) AddPath("", "stock", "&1") Return Case Else If sDesktop <> "gambas" Then GetAllThemePath("gnome", $aRoots, Application.Theme) Endif End Select AddPath("", "stock", "&1") $aIconPath.Add("#") End Static Private Sub InitTheme() If Not $bDebug Then If Env["GB_STOCK_DEBUG"] = "1" Or If Env["GB_STOCK"] Then $bDebug = True Endif $aIconPath = New String[] LoadMap If $bDebug Then Error "gb.form: init stock with application theme: '"; Application.Theme; "'" SearchDesktop SearchTheme(Application.Theme) ' If Color[Color.Background].Luminance < 128 Or If Env["GB_GUI_DARK_THEME"] = "1" Then ' If InStr(LCase(Application.Theme), "dark") = 0 Then $bDarkTheme = True ' Endif $bInit = True End Static Public Function GetSize(Size As String) As Integer Dim iSize As Integer Select Case LCase(Size) Case "tiny" iSize = (CInt(Desktop.Scale * 2) \ 4) * 4 '16 'CInt(Desktop.Scale * 5 / 8 + 0.5) * 4 Case "small" iSize = (CInt(Desktop.Scale * 2.5) \ 4) * 4 '16 'CInt(Desktop.Scale * 5 / 8 + 0.5) * 4 Case "medium" iSize = (CInt(Desktop.Scale * 2.5) \ 4) * 5.5 '22 'CInt(Desktop.Scale * 5 / 8 * 1.5 + 0.5) * 4 Case "large" iSize = (CInt(Desktop.Scale * 2.5) \ 4) * 8 '32 'CInt(Desktop.Scale * 5 / 8 + 0.5) * 8 Case "huge" iSize = (CInt(Desktop.Scale * 2.5) \ 4) * 12 '48 'CInt(Desktop.Scale * 5 / 8 * 1.5 + 0.5) * 8 Case Else Try iSize = CInt(Size) End Select Return iSize End Static Private Sub GetScalablePath(sPath As String) As String If InStr(sPath, "&1x&1") Then Return Replace(sPath, "&1x&1", "scalable") If InStr(sPath, "&1") Then Return Replace(sPath, "&1", "scalable") End Static Private Sub DoLoadIcon(sPath As String, iSize As Integer, iRealSize As Integer) As Picture Dim sName As String Dim sDir As String Dim hPict As Picture Dim hImage As Image Dim sFullName As String Dim sExt As String Dim aExt As String[] Dim sSym As String sName = File.Name(sPath) sDir = File.Dir(sPath) 'Error "{";; sPath 'If $bDebugLoad Then Error "-> "; sDir &/ sName If iRealSize Then aExt = [".svg", ".svgz", ".png"] Else aExt = [".png", ".svg", ".svgz"] iRealSize = iSize Endif For Each sSym In ["", "-symbolic", ".symbolic", "-symbolic.symbolic"] For Each sExt In aExt sFullName = sName & sSym & sExt If sExt = ".png" Then Try hImage = Image.Load(sDir &/ sFullName) If Not Error Then 'If Application.DarkTheme Then hImage.Invert(Color.Background, Color.Foreground) hPict = hImage.Stretch(iRealSize, iRealSize).Picture Goto RETURN_PICT Endif Else Try hPict = PictureFromSvg(SvgImage.Load(sDir &/ sFullName), iRealSize) If Not Error Then Goto RETURN_PICT Endif Next Next hPict = Null RETURN_PICT: 'Error "}" Return hPict End Static Private Sub LoadIcon(sTemplate As String, sFile As String, iSize As Integer, Optional iRealSize As Integer) As Picture Dim hPict As Picture Dim sPath As String Dim sTest As String Dim iPos As Integer Dim sTheme As String Dim sDir As String Dim sSubDir As String Dim sMime As String Dim bBreak As Boolean Dim iPos2 As Integer Dim sSize As String sSize = CStr(iSize) For Each sFile In Split(sFile, ";") If Left(sFile) = "[" Then iPos = InStr(sFile, "]") If iPos Then sTheme = LCase(Mid$(sFile, 2, iPos - 2)) iPos2 = InStr(sTheme, "!") If iPos2 Then sSize = Mid$(sTheme, iPos2 + 1) sTheme = Left(sTheme, iPos2 - 1) Endif If sTheme Begins "+" Then If iSize <= 32 Then Continue sTheme = Mid$(sTheme, 2) Else If sTheme Begins "-" Then If iSize > 32 Then Continue sTheme = Mid$(sTheme, 2) Endif If File.Dir(sTemplate) Not Like "*/" & sTheme & "/*" Then Continue sFile = Mid$(sFile, iPos + 1) bBreak = True Endif Endif If System.RightToLeft Then If sFile Ends "-ltr" Then sFile = Left(sFile, -4) & "-rtl" Else If sFile Ends "-rtl" Then sFile = Left(sFile, -4) & "-ltr" Endif Endif If sFile Begins "$(mime)/" Then 'Debug sTemplate;; sFile;; iSize;; iRealSize If Not sMime Then For Each sTest In ["mimetypes", "mimes"] If sTemplate Ends "/*" Then sPath = File.Dir(sTemplate) &/ sTest Else sPath = Subst(sTemplate, sSize, sTest) Endif If IsDir(sPath) Then sMime = sTest Break Endif Next If Not sMime Then Return Endif sFile = sMime &/ Mid$(sFile, 9) Endif If sTemplate Ends "/*" Then sDir = File.Dir(sTemplate) &/ File.Dir(sFile) If IsDir(sDir) Then For Each sSubDir In Dir(sDir, "*", gb.Directory).Sort() sPath = sDir &/ sSubDir &/ File.Name(sFile) hPict = DoLoadIcon(sPath, iSize, iRealSize) If hPict Then Return hPict Next sPath = sDir &/ File.Name(sFile) hPict = DoLoadIcon(sPath, iSize, iRealSize) If hPict Then Return hPict Endif Else sPath = Subst(sTemplate, sSize, File.Dir(sFile)) &/ File.Name(sFile) hPict = DoLoadIcon(sPath, iSize, iRealSize) If hPict Then Return hPict Endif If bBreak Then Break Next End Static Public Function _get((Key) As String, Optional {Default} As String) As Picture Dim sPath As String Dim hPict As Picture Dim iPos As Integer Dim iSize As Integer Dim sSize As String Dim iTry As Integer Dim sTemplate As String Dim sFile As String Dim sMap As String Dim sDirPattern As String 'Dim sCache As String If Not $bInit Then InitTheme Endif If $bDebug Then Error "gb.form: load stock icon: "; Key iSize = 16 iPos = InStr(Key, "/") If iPos Then sSize = Left$(Key, iPos - 1) Key = Mid$(Key, iPos + 1) iSize = GetSize(sSize) Endif 'hPict = Picture[CStr(iSize) &/ Key] 'If hPict Then Return hPict ' sCache = User.Home &/ ".cache/gambas3/gb.form/theme/" &/ LCase(Application.Theme) &/ CStr(iSize) &/ Key & ".png" ' If Exist(sCache) Then ' Try hPict = Picture.Load(sCache) ' If hPict Then Goto __RETURN ' Endif For Each sPath In $aIconPath If sPath Begins "#" Then If Key Begins "$(mime)/" Then Key = Mid$(Key, 9) Else If Not Stock.Icons.Exist(Key) Then Break Endif Try Component.Load("gb.form.stock") If Error Then Error "gb.form: warning: unable to load gb.form.stock component" Goto __RETURN Endif sFile = Key 'If Key = "tools" Then Error "Using default stock" Try hPict = _DefaultStock.LoadImage(Key, iSize, Mid$(sPath, 2)).Picture If Not Error Then Goto __RETURN 'If Key = "tools" Then Error "...failed" Else iPos = InStr(sPath, ":") If iPos Then sMap = Left$(sPath, iPos - 1) If Left(Key) <> "." Then sFile = $cIconMap[Key] If Not sFile Then sFile = Key Else sFile = Mid$(Key, 2) Endif sPath = Mid$(sPath, iPos + 1) Else sFile = Key If Left(sFile) = "." Then sFile = Mid$(sFile, 2) Endif ' If Key = "tools" Then ' $bDebugLoad = True ' Else ' $bDebugLoad = False ' Endif If sFile = "#" Then Continue sDirPattern = Replace(File.Name(sPath), "!", "/") sPath = File.Dir(sPath) If sPath Begins "~/" Then sPath = User.Home &/ Mid$(sPath, 3) If Not Exist(sPath) Then Continue If Left(sPath) = "/" Then sTemplate = sPath &/ sDirPattern Else sTemplate = sPath &/ "&1" Endif hPict = LoadIcon(sTemplate, sFile, iSize) If hPict Then Goto __RETURN hPict = LoadIcon(GetScalablePath(sTemplate), sFile, iSize) If hPict Then Goto __RETURN If sFile Ends ";#" Then Continue For Each iTry In $aSizeInc If iTry < iSize Then Continue hPict = LoadIcon(sTemplate, sFile, iTry, iSize) If hPict Then Goto __RETURN Next For Each iTry In $aSizeDec If iTry >= iSize Then Continue hPict = LoadIcon(sTemplate, sFile, iTry, iSize) If hPict Then Goto __RETURN Next Endif Next __RETURN: If Not hPict Then If {Default} Then Return _get({Default}) If $bDebug Then Error "gb.form: warning: unable to load "; CStr(iSize) &/ Key 'hPict = PictureFromSvg(SvgImage.Load("img/unknown.svg"), iSize) Endif Endif If hPict Then ' Main.MkDir(File.Dir(sCache)) ' Try hPict.Save(sCache) 'Picture[CStr(iSize) &/ Key] = hPict Return hPict Endif End Static Private Function List_Read() As String[] Error "gb.form: warning: Stock.List is deprecated. Use Stock.Icons instead" Return Icons_Read() End Static Private Sub GetInheritance(aPath As String[], sTheme As String) As String[] Dim aInheritance As New String[] Dim sLine As String Dim sChildTheme As String Dim sName As String Dim sDir As String For Each sDir In aPath If Not IsDir(sDir) Then Continue For Each sName In Dir(sDir, "*", gb.Directory) If LCase(sName) <> LCase(sTheme) Then Continue If Exist(sDir &/ sName &/ "index.theme") Then aInheritance.Add(sName) For Each sLine In Split(File.Load(sDir &/ sName &/ "index.theme"), "\n") If InStr(sLine, "Inherits") Then For Each sChildTheme In Split(Scan(sLine, "*=*")[1]) If LCase(sChildTheme) = sTheme Then Continue If aInheritance.Exist(sChildTheme) Then Continue aInheritance.Insert(GetInheritance(aPath, sChildTheme)) Next Break Endif Next Return aInheritance Endif Next Next Return aInheritance End Static Private Sub GetAllThemePath(sMap As String, aPath As String[], sTheme As String) Dim sPath As String If $bDebug Then Error "gb.form: searching directories for icon theme '"; sTheme; "'" For Each sTheme In GetInheritance(aPath, LCase(sTheme)) For Each sPath In aPath AddPath(sMap, sPath &/ sTheme) Next Next End Static Private Function PictureFromSvg(hSvg As SvgImage, iSize As Integer) As Picture Dim hImage As Image hImage = New Image(iSize, iSize, Color.Transparent) Paint.Begin(hImage) Paint.Scale(iSize / hSvg.Width, iSize / hSvg.Height) hSvg.Paint() Paint.End 'If $bDarkTheme Then hImage.Invert(Color.Background, Color.Foreground) Return hImage.Picture End Static Private Function Debug_Read() As Boolean Return $bDebug End Static Private Sub Debug_Write(Value As Boolean) $bDebug = Value End Static Public Sub Refresh() InitTheme Picture.Refresh Try DesktopMime.Refresh End Static Private Function Themes_Read() As String[] Dim aTheme As New String[] Dim sDir As String Dim sPath As String Dim sTheme As String Dim sRoot As String Dim I As Integer Dim sName As String Dim sCar As String Dim aDir As String[] For Each sRoot In ["~/.icons", "~/.local/share/icons", "/usr/share/icons", "/usr/local/share/icons"] If Not IsDir(sRoot) Then Continue For Each sDir In Dir(sRoot, "*", gb.Directory) sPath = sRoot &/ sDir GoSub ADD_THEME Next Next aTheme.Insert(["Gambas", "Gambas-Mono"]) aTheme.Sort(gb.IgnoreCase) Return aTheme ADD_THEME: If Stat(sPath).Type = gb.Link Then Return aDir = Dir(sPath, "*", gb.Directory) If aDir.Count = 0 Then Return If aDir.Count = 1 And If aDir[0] = "cursors" Then Return sPath &/= "index.theme" If Not Exist(sPath) Then Return If Stat(sPath).Type = gb.Link Then Return Try sTheme = File.Load(sPath) If Error Then Return If InStr(sTheme, "\nHidden=True") Then Return sName = "" For I = 1 To Len(sDir) sCar = Mid$(sDir, I, 1) If I = 1 Or If InStr(" -", Mid$(sDir, I - 1, 1)) Then sCar = UCase(sCar) Endif sName &= sCar Next If Not aTheme.Exist(sName) Then aTheme.Add(sName) Return End Static Private Function Icons_Read() As String[] If Not $aList Then LoadMap Return $aList End Static Private Function Sizes_Read() As String[] Return ["tiny", "small", "medium", "large", "huge"] End gambas-3.16.3/comp/src/gb.form/.src/TabPanel/000077500000000000000000000000001411575327000204555ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/TabPanel/TabPanel.class000066400000000000000000000516151411575327000232020ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Border=True,Count{Range:1;256}=1,Index,Text,TextFont,Picture,Orientation{Align.Top;Bottom}=Top,Closable,CloseButton,Moveable,Highlight" Public Const _Similar As String = "TabStrip" Public Const _IsMultiContainer As Boolean = True Public Const _DefaultEvent As String = "Click" Event Click Event Close(Index As Integer) Event Move(Source As Integer, Target As Integer) Event CloseAll Property Count As Integer Property Index As Integer Property Text As String Property Picture As Picture Property Font As Font Property TextFont As Font Property Border As Boolean Property Orientation As Integer Property Highlight As Boolean Property Closable As Boolean Property Read Current As _TabPanelContainer Property Background As Integer Property Moveable As Boolean Property CloseButton As Boolean Property Read TabBarSize As Integer Property TabBarPaddingStart As Integer Property TabBarPaddingEnd As Integer Private $hTabBar As DrawingArea Private $hTabBarContainer As DrawingArea 'Private $hLeftArrow As DrawingArea 'Private $hRightArrow As DrawingArea Private $X As Integer 'Private $bArrow As Boolean Private $aCont As New _TabPanelContainer[] Private $aButton As New _TabPanelButton[] Private $iOrientation As Integer = Align.Top Private $bBorder As Boolean = True Private $bHighlight As Boolean Private $bClosable As Boolean Private $iCurrent As Integer = -1 Private $hPanel As DrawingArea Private $hTimerEnsureVisible As Timer Private $hTimerRepeat As Timer Private $iRepeatInc As Integer Private $iRepeatStart As Integer Private Const ARROW_WIDTH As Integer = 12 Private $hRightArrow As DrawingArea Private $hLeftArrow As DrawingArea Private $bMoveable As Boolean Private $hCloseAll As ToolButton Private $hClosePanel As DrawingArea Private $hObserver As Observer Private $iTabBarContainerH As Integer Private $hTabBarLeft As DrawingArea Private $hTabBarRight As DrawingArea Private $bUpdateLayout As Boolean Public Sub _new() $hTabBar = New DrawingArea(Me) As "TabBar" '$hTabBar.Arrangement = Arrange.Fill ' $hLeftArrow = New DrawingArea($hTabBar) As "Arrow" ' $hLeftArrow.Ignore = True ' $hLeftArrow.Hide ' ' $hRightArrow = New DrawingArea($hTabBar) As "Arrow" ' $hRightArrow.Ignore = True ' $hRightArrow.Hide $hTabBarContainer = New DrawingArea($hTabBar) As "TabBarContainer" $hTabBarContainer.Name = Me.Name & "_TabBarContainer" $hTabBarContainer.Focus = True $hRightArrow = New DrawingArea($hTabBar) As "Arrow" $hRightArrow.Ignore = True $hRightArrow.Mouse = Mouse.Pointing $hRightArrow.Name = Me.Name & "_RightArrow" $hLeftArrow = New DrawingArea($hTabBar) As "Arrow" $hLeftArrow.Ignore = True $hLeftArrow.Mouse = Mouse.Pointing $hLeftArrow.Name = Me.Name & "_LeftArrow" $hPanel = New DrawingArea(Me) As "Panel" $hPanel.Expand = True $hPanel.Name = Me.Name & "_Panel" '$hPanel.Arrangement = Arrange.Fill '$hPanel.Padding = 1 $hObserver = New Observer(Me) As "TabPanel" Me.Count = 1 Me.Arrangement = Arrange.None UpdateLayout End Public Sub _EnsureCurrentVisible() If $hTimerEnsureVisible Then Return $hTimerEnsureVisible = New Timer As "EnsureCurrentVisible" $hTimerEnsureVisible.Trigger End Public Sub EnsureCurrentVisible_Timer() Dim X, W As Integer Dim iLeftIndex, iRightIndex As Integer $hTimerEnsureVisible = Null If $iCurrent < 0 Or If $iCurrent > $aButton.Max Then Return If Not $aButton[$iCurrent].Visible Then Return If System.RightToLeft Then $X = 0 If $iCurrent = 0 Then W = Me.W Else With $aButton[$iCurrent] X = .X W = $hTabBarContainer.W If X < ARROW_WIDTH Then W += ARROW_WIDTH - X Else If X >= ($hTabBar.W - .W - ARROW_WIDTH) Then W -= X - ($hTabBar.W - .W - ARROW_WIDTH) Endif 'M = .X + W - $hTabBar.W + ARROW_WIDTH 'If $iCurrent < $aButton.Max Then M += ARROW_WIDTH '$X = Max($X, - M) End With Endif W = Max(Me.W, W) '$X = Max($hTabBar.W - $hTabBarContainer.W, $X) '$X = Min(ARROW_WIDTH, $X) Else If Me.W <= ($aButton[$iCurrent].W + ARROW_WIDTH) Then $X = -$aButton[$iCurrent].X Else If $iCurrent = 0 Then $X = 0 Else With $aButton[$iCurrent] X = $hTabBarContainer.X + .X W = .W If X < ARROW_WIDTH Then $X = $X + ARROW_WIDTH - X X = $X + .X Endif If X >= ($hTabBar.W - W - ARROW_WIDTH) Then $X = $X - (X - ($hTabBar.W - W)) 'If $iCurrent < $aButton.Max Then $X -= ARROW_WIDTH Endif End With Endif $X = Max($hTabBar.W - ($aButton[$aButton.Max].X + $aButton[$aButton.Max].W), $X) $X = Min(0, $X) Endif W = Me.W - $X Endif '$bArrow = False ' If $bArrow Then ' W -= ARROW_WIDTH ' If System.RightToLeft Then $X += ARROW_WIDTH ' Endif $hTabBarContainer.Move($X, 0, W, $hTabBar.H) If $hTabBar.W >= (ARROW_WIDTH * 3) And If $aButton.Count Then If System.RightToLeft Then iLeftIndex = GetLastIndex() iRightIndex = _GetFirstIndex() Else iLeftIndex = _GetFirstIndex() iRightIndex = GetLastIndex() Endif $hLeftArrow.Visible = $X < (-$aButton[iLeftIndex].X) '+ $aButton[iIndex].X + $aButton[iIndex].W) > $hTabBar.W $hRightArrow.Visible = ($X + $aButton[iRightIndex].X + $aButton[iRightIndex].W) > $hTabBar.W Else $hLeftArrow.Hide $hRightArrow.Hide Endif CheckMouse End Private Sub CheckMouse() Dim hButton As _TabPanelButton If Not $bClosable Then Return For Each hButton In $aButton hButton.Update Next End Private Sub UpdateLayout() Dim hCtrl As _TabPanelButton Dim W As Integer Dim H As Integer Dim X As Integer Dim PL, PR As Integer Dim Y As Integer If $bUpdateLayout Then Return $bUpdateLayout = True W = Me.W H = TabBarSize_Read() $hTabBar.Height = H + 1 Y = If(Align.Top, 0, $hTabBar.Y) If $hClosePanel Then If W >= H Then W -= H If System.RightToLeft Then $hClosePanel.Move(X, Y, H, H + 1) X += H Else $hClosePanel.Move(X + W, Y, H, H + 1) Endif $hCloseAll.Move(0, 0, H, H) $hClosePanel.Show $hClosePanel.Raise Else $hClosePanel.Hide Endif Endif PL = TabBarPaddingStart_Read() PR = TabBarPaddingEnd_Read() If System.RightToLeft Then If $hTabBarLeft Then $hTabBarLeft.Move(W - PL, Y, PL, H + 1) If $hTabBarRight Then $hTabBarRight.Move(0, Y, PR, H + 1) Swap PL, PR Else If $hTabBarLeft Then $hTabBarLeft.Move(0, Y, PL, H + 1) If $hTabBarRight Then $hTabBarRight.Move(W - PR, Y, PR, H + 1) Endif X += PL W -= PL + PR W = Max(W, 0) Me._Arrangement = Arrange.None Select Case $iOrientation Case Align.Top $hTabBar.Move(X, 0, W, $hTabBar.H) $hPanel.Move(0, $hTabBar.H, Me.W, Me.H - $hTabBar.H) '$hTabBar.Next = $hPanel Case Align.Bottom $hTabBar.Move(X, Me.H - $hTabBar.H, W, $hTabBar.H) $hPanel.Move(0, 0, Me.W, Me.H - $hTabBar.H) 'Me._Arrangement = Arrange.Vertical '$hPanel.Next = $hTabBar End Select $hTabBarContainer.Arrangement = Arrange.None For Each hCtrl In $aButton If hCtrl.Visible Then hCtrl.Orientation = $iOrientation hCtrl.UpdateLayout hCtrl.Refresh hCtrl.Raise Endif Next $hTabBarContainer.Arrangement = Arrange.Horizontal _EnsureCurrentVisible $bUpdateLayout = False End Public Sub TabBar_Arrange() _EnsureCurrentVisible $hRightArrow.Move($hTabBar.W - ARROW_WIDTH, 0, ARROW_WIDTH, $hTabBar.H) $hLeftArrow.Move(0, 0, ARROW_WIDTH, $hTabBar.H) If $hTabBarContainer.H <> $iTabBarContainerH Then $iTabBarContainerH = $hTabBarContainer.H UpdateLayout Endif End Public Sub Arrow_Enter() Last.Refresh End Public Sub Arrow_Leave() Last.Refresh $hTimerRepeat = Null End Public Sub Arrow_Draw() If $iOrientation = Align.Top Then Paint.FillRect(0, 0, Paint.W, Paint.H - 1, _GetBackground()) Else Paint.FillRect(0, 1, Paint.W, Paint.H - 1, _GetBackground()) Endif Style.PaintArrow(0, 0, Paint.W, Paint.H, If(Last = $hLeftArrow, Align.Left, Align.Right), Style.StateOf(Last)) End Public Sub Arrow_MouseDown() If Mouse.Left Then If Last = $hRightArrow Xor System.RightToLeft Then Try _MoveNext() $iRepeatInc = 1 Else Try _MovePrevious() $iRepeatInc = -1 Endif $hTimerRepeat = New Timer As "TimerRepeat" $hTimerRepeat.Delay = 100 $hTimerRepeat.Start $iRepeatStart = 0 Endif End Public Sub Arrow_MouseUp() $hTimerRepeat = Null End Public Sub TimerRepeat_Timer() If $iRepeatStart < 3 Then Inc $iRepeatStart Else If $iRepeatInc > 0 Then Try _MoveNext() Else Try _MovePrevious() Endif If Error Then $hTimerRepeat = Null Endif End Public Sub Arrow_DblClick() If Mouse.Left Then If Last = $hRightArrow Then Try Me.Index = GetLastIndex() Else Try Me.Index = _GetFirstIndex() Endif Endif End Private Function Count_Read() As Integer Return $aCont.Count End Private Sub Count_Write(iCount As Integer) Dim iInd As Integer Dim hTab As _TabPanelContainer Dim hButton As _TabPanelButton Dim iCurrent As Integer Dim bLocked As Boolean If iCount < 1 Then Error.Raise("Bad argument") If iCount = $aCont.Count Then Return iCurrent = $iCurrent bLocked = Object.IsLocked(Me) If Not bLocked Then Object.Lock(Me) If iCount < $aCont.Count Then For iInd = $aCont.Max To iCount Step -1 hTab = $aCont[iInd] If hTab.Children.Count Then Error.Raise("TabPanel container is not empty") Next For iInd = $aCont.Max To iCount Step -1 $aCont[iInd]._Delete $aButton[iInd].Delete If iInd <= iCurrent Then Dec iCurrent Next $aCont.Remove(iCount, -1) $aButton.Remove(iCount, -1) Else For iInd = $aCont.Count To iCount - 1 hTab = New _TabPanelContainer($hPanel) As "_TabPanelContainer" $aCont.Add(hTab) hButton = New _TabPanelButton($hTabBarContainer) As "_TabPanelButton" $aButton.Add(hButton) hButton.Orientation = $iOrientation Next 'ME.Container = hCont Endif UpdateLayout $iCurrent = -1 If iCurrent < 0 Then iCurrent = $aCont.Max If Not bLocked Then Object.Unlock(Me) Try Index_Write(iCurrent) End Private Function Index_Read() As Integer Return $iCurrent End Private Sub Index_Write(iIndex As Integer) If iIndex < 0 Or iIndex >= $aCont.Count Then Error.Raise("Bad index") If iIndex = $iCurrent Then Return If $iCurrent >= 0 Then $aButton[$iCurrent].Selected = False $iCurrent = iIndex If $iCurrent >= 0 Then $aButton[$iCurrent].Selected = True UpdateContainer Me._Container = $aCont[$iCurrent] _EnsureCurrentVisible Raise Click End Private Sub UpdateCurrentContainer() If $iCurrent < 0 Then Return If $bBorder Then If $iOrientation = Align.Top Then $aCont[$iCurrent].Move(1, 0, $hPanel.W - 2, $hPanel.H - 1) Else $aCont[$iCurrent].Move(1, 1, $hPanel.W - 2, $hPanel.H - 1) Endif Else $aCont[$iCurrent].Move(0, 0, $hPanel.W, $hPanel.H) Endif End Private Sub UpdateContainer() Dim iInd As Integer For iInd = 0 To $aCont.Max With $aCont[iInd] If iInd = $iCurrent Then UpdateCurrentContainer .Show '.Raise Else If .Visible Then .Hide '.Move(0, - $hPanel.H) Endif End With Next End Private Function Text_Read() As String Return $aCont[$iCurrent].Text End Private Sub Text_Write(sText As String) $aCont[$iCurrent].Text = sText End Private Function Picture_Read() As Picture Return $aCont[$iCurrent].Picture End Private Sub Picture_Write(hPict As Picture) $aCont[$iCurrent].Picture = hPict End Public Function _get(Index As Integer) As _TabPanelContainer If Index < 0 Or Index >= $aCont.Count Then Error.Raise("Bad index") Return $aCont[Index] End Private Function Font_Read() As Font Return Super.Font End Private Sub Font_Write(hFont As Font) Super.Font = hFont UpdateLayout End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(bBorder As Boolean) Dim hButton As _TabPanelButton $bBorder = bBorder 'Panel_Arrange UpdateCurrentContainer $hPanel.Refresh For Each hButton In $aButton hButton.Refresh Next End Private Function TextFont_Read() As Font Return $hTabBar.Font End Private Sub TextFont_Write(Value As Font) $hTabBar.Font = Value UpdateLayout End ' Public Sub _GetIconView() As IconView ' ' Return $hIconView ' ' End Public Sub _GetIndex(hCont As Control) As Integer If hCont Is _TabPanelContainer Then Return $aCont.Find(hCont) If hCont Is _TabPanelButton Then Return $aButton.Find(hCont) Return -1 End ' Public Sub IconView_Select() ' ' If Not $hIconView.Key Then Return ' Index_Write(CInt($hIconView.Key)) ' ' End ' Public Sub IconView_MouseWheel() ' ' If Mouse.Delta < 0 And If $iCurrent < $aCont.Max Then ' Index_Write($iCurrent + 1) ' Else If Mouse.Delta > 0 And If $iCurrent > 0 Then ' Index_Write($iCurrent - 1) ' Endif ' ' End Public Sub _GetButton(iIndex As Integer) As _TabPanelButton Return $aButton[iIndex] End Public Sub TabBarContainer_Draw() Dim hLast As _TabPanelButton Try hLast = $aButton[GetLastIndex()] If Error Then Return Draw.Foreground = Color.LightForeground Select Case $iOrientation Case Align.Top If System.RightToLeft Then Draw.Line(0, $hTabBarContainer.H - 1, hLast.X - 1, $hTabBar.H - 1) Else Draw.Line(hLast.X + hLast.W, $hTabBarContainer.H - 1, $hTabBarContainer.W, $hTabBar.H - 1) Endif Case Align.Bottom If System.RightToLeft Then Draw.Line(0, 0, hLast.X - 1, 0) Else Draw.Line(hLast.X + hLast.W, 0, $hTabBarContainer.W, 0) Endif End Select End Public Sub Panel_Draw() If $bBorder Then Draw.Foreground = Color.LightForeground Select Case $iOrientation Case Align.Top Draw.Line(0, 0, 0, $hPanel.H - 1) Draw.Line(0, $hPanel.H - 1, $hPanel.W - 1, $hPanel.H - 1) Draw.Line($hPanel.W - 1, $hPanel.H - 1, $hPanel.W - 1, 0) Case Align.Bottom Draw.Line(0, $hPanel.H - 1, 0, 0) Draw.Line(0, 0, $hPanel.W - 1, 0) Draw.Line($hPanel.W - 1, 0, $hPanel.W - 1, $hPanel.H - 1) End Select Endif End Public Sub Panel_Arrange() UpdateCurrentContainer End Private Function Orientation_Read() As Integer Return $iOrientation End Private Sub Orientation_Write(Value As Integer) $iOrientation = Value UpdateLayout End Private Function Current_Read() As _TabPanelContainer Try Return $aCont[$iCurrent] End Public Sub Remove(Index As Integer) Dim iCurrent As Integer Dim hTab As _TabPanelContainer If Index < 0 Or Index > $aCont.Max Then Error.Raise("Bad index") If $aCont.Count = 1 Then Return hTab = $aCont[Index] If hTab.Children.Count Then Error.Raise("TabPanel container is not empty") $aButton[Index].Delete $aButton.Remove(Index) $aCont.Remove(Index) If $iCurrent = Index Then $iCurrent = -1 iCurrent = Min($aCont.Max, Index) Index_Write(iCurrent) Else If $iCurrent > Index Then Dec $iCurrent Endif UpdateLayout hTab._Delete() End Public Sub _SetVisible(Index As Integer, bVisible As Boolean) If Not bVisible And If Index = $iCurrent Then Try _MoveNext() If Error Then Try _MovePrevious() Endif $aButton[Index].Visible = bVisible UpdateLayout End Public Sub _IsVisible(Index As Integer) As Boolean Return $aButton[Index].Visible End Private Sub GetPreviousIndex(iIndex As Integer) As Integer Dim I As Integer For I = iIndex - 1 DownTo 0 If $aButton[I].Visible Then Return I Next Return -1 End Private Sub GetNextIndex(iIndex As Integer) As Integer Dim I As Integer For I = iIndex + 1 To $aButton.Max If $aButton[I].Visible Then Return I Next Return -1 End Public Sub _GetFirstIndex() As Integer Return GetNextIndex(-1) End Private Sub GetLastIndex() As Integer Return GetPreviousIndex($aButton.Count) End Public Sub _MovePrevious() Me.Index = GetPreviousIndex($iCurrent) End Public Sub _MoveNext() Me.Index = GetNextIndex($iCurrent) End Private Sub _MoveFirst() Me.Index = GetNextIndex(-1) End Private Sub _MoveLast() Me.Index = GetPreviousIndex($aCont.Count) End Private Function Highlight_Read() As Boolean Return $bHighlight End Private Sub Highlight_Write(Value As Boolean) $bHighlight = Value UpdateLayout End Private Function Closable_Read() As Boolean Return $bClosable End Private Sub Closable_Write(Value As Boolean) $bClosable = Value UpdateLayout End Public Sub _Close(Index As Integer) Raise Close(Index) End Public Sub _GetBackground() As Integer Return Color.Gradient(If(Me.Background = Color.Default, Color.Background, Me.Background), Color.LightForeground) End Public Sub TabBarContainer_KeyPress() If $aCont.Count = 0 Then Return Select Case Key.Code Case Key.Left, Key.PageUp If System.RightToLeft Then Try _MoveNext Else Try _MovePrevious Endif Stop Event Case Key.Right, Key.PageDown If System.RightToLeft Then Try _MovePrevious Else Try _MoveNext Endif Stop Event Case Key.Home Try _MoveFirst Stop Event Case Key.End Try _MoveLast Stop Event End Select End Private Function Background_Read() As Integer Return Super.Background End Private Sub Background_Write(Value As Integer) Super.Background = Value $hTabBar.Refresh End Public Sub _MoveTab(hSrc As _TabPanelButton, hDst As _TabPanelButton, bAfter As Boolean) Dim S, T As Integer Dim hSrcPanel As Control Dim bLocked As Boolean If hSrc = hDst Then Return bLocked = Object.IsLocked(Me) If Not bLocked Then Object.Lock(Me) S = _GetIndex(hSrc) $aButton.Remove(S) hSrcPanel = $aCont[S] $aCont.Remove(S) T = _GetIndex(hDst) If bAfter Then Inc T $aButton.Add(hSrc, T) $aCont.Add(hSrcPanel, T) UpdateLayout If Not bLocked Then Object.Unlock(Me) Raise Move(S, T) Index_Write(T) End Private Function Moveable_Read() As Boolean Return $bMoveable End Private Sub Moveable_Write(Value As Boolean) $bMoveable = Value End Private Function CloseButton_Read() As Boolean Return $hClosePanel End Private Sub CloseButton_Write(Value As Boolean) Dim hSave As Container If Value = CloseButton_Read() Then Return If Value Then hSave = Me._Container Me._Container = Null $hClosePanel = New DrawingArea(Me) As "ClosePanel" $hCloseAll = New ToolButton($hClosePanel) As "CloseAll" $hCloseAll.Picture = Picture["icon:/small/close"] $hCloseAll.Show Me._Container = hSave Else $hClosePanel.Delete $hClosePanel = Null $hCloseAll = Null Endif TabBar_Arrange UpdateLayout End Public Sub TabPanel_Arrange() UpdateLayout End Public Sub ClosePanel_Draw() Select Case $iOrientation Case Align.Top Paint.FillRect(0, Paint.H - 1, Paint.W, 1, Color.LightForeground) Case Align.Bottom Paint.FillRect(0, 0, Paint.W, 1, Color.LightForeground) End Select End Public Sub CloseAll_Click() Raise CloseAll End Private Function TabBarPaddingStart_Read() As Integer If $hTabBarLeft Then Return $hTabBarLeft.W End Private Sub TabBarPaddingStart_Write(Value As Integer) Dim hSave As Container If TabBarPaddingStart_Read() = Value Then Return If Value > 0 Then If Not $hTabBarLeft Then hSave = Me._Container Me._Container = Null $hTabBarLeft = New DrawingArea(Me) As "ClosePanel" Me._Container = hSave $hTabBarLeft.Ignore = True Endif $hTabBarLeft.W = Value Else If $hTabBarLeft Then $hTabBarLeft.Delete $hTabBarLeft = Null Endif Endif UpdateLayout End Private Function TabBarPaddingEnd_Read() As Integer If $hTabBarRight Then Return $hTabBarRight.W End Private Sub TabBarPaddingEnd_Write(Value As Integer) Dim hSave As Container If TabBarPaddingEnd_Read() = Value Then Return If Value > 0 Then If Not $hTabBarRight Then hSave = Me._Container Me._Container = Null $hTabBarRight = New DrawingArea(Me) As "ClosePanel" Me._Container = hSave $hTabBarRight.Ignore = True Endif $hTabBarRight.W = Value Else If $hTabBarRight Then $hTabBarRight.Delete $hTabBarRight = Null Endif Endif UpdateLayout End Private Function TabBarSize_Read() As Integer Return $hTabBar.Font.Height + Desktop.Scale * 1.75 End gambas-3.16.3/comp/src/gb.form/.src/TabPanel/_TabPanelButton.class000066400000000000000000000303451411575327000245320ustar00rootroot00000000000000' Gambas class file Inherits UserControl Private $hDrawingArea As DrawingArea Property Text As String Property RichText As String Property Selected As Boolean Property Orientation As Integer Property Picture As Picture Property Closable As Boolean 'Property Visible As Boolean Private $sText As String Private $bRichText As Boolean Private $bSelected As Boolean Private $iOrientation As Integer = Align.Top Private $hPicture As Picture Private $bShowClose As Boolean Private $bInClose As Boolean Static Private BUTTON_SIZE As Integer Static Private $bDragging As Boolean Private $bDrag As Boolean Private $hDragImage As Image Private $hDragWindow As Window Private $DX As Integer Private $SX As Integer Private $hTimerDrag As Timer Private $bClosable As Boolean Private $bInside As Boolean Public Sub _new() If BUTTON_SIZE = 0 Then BUTTON_SIZE = Desktop.Scale * 2 $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hDrawingArea.Mouse = Mouse.Pointing $hDrawingArea.Name = Me.Name & "_DrawingArea" $hDrawingArea.Focus = True End Private Sub GetParent() As TabPanel Return Me.Parent.Parent.Parent End Private Sub GetIndex() As Integer Return GetParent()._GetIndex(Me) End Private Sub IsClosable() As Boolean If $bClosable Then Return True If GetParent().Closable Then Return True End Private Sub GetPictureSize(ByRef WP As Integer, ByRef HP As Integer) HP = Min($hPicture.H, Me.H - Desktop.Scale) WP = $hPicture.W * HP / $hPicture.H End Public Sub DrawingArea_Draw() Dim iFg As Integer Dim X, W As Integer Dim bBorder As Boolean Dim hTabPanel As TabPanel Dim bClosable As Boolean Dim bHighlight As Boolean Dim bFirst As Boolean Dim iIndex As Integer Dim iBg As Integer Dim hFont As Font Dim S As Float Dim HP As Integer Dim WP As Float hTabPanel = GetParent() ' If $bDrag Then ' ' Draw.FillRect(0, 0, Me.W, Me.H, hTabPanel._GetBackground()) ' ' Draw.Foreground = Color.LightForeground ' ' Select Case $iOrientation ' ' Case Align.Top ' Draw.Line(0, Me.H - 1, Me.W - 1, Me.H - 1) ' ' Case Align.Bottom ' Draw.Line(0, 0, Me.W - 1, 0) ' ' End Select ' ' Return ' ' Endif iIndex = GetIndex() bHighlight = hTabPanel.Highlight And Not $bSelected bClosable = IsClosable() If bHighlight Then Paint.FillRect(0, 0, Me.W, Me.H, hTabPanel._GetBackground()) Else iBg = hTabPanel.Background If iBg <> Color.Default Then Paint.FillRect(0, 0, Me.W, Me.H, iBg) Endif iFg = Me.Foreground If iFg = Color.Default Then iFg = hTabPanel.Foreground If iFg = Color.Default Then iFg = Style.ForegroundOf(hTabPanel) Endif X = 0 W = Me.W If $bSelected And If Me.Parent.HasFocus Or Me.HasFocus Then Draw.Foreground = Color.LightBackground If $iOrientation = Align.Bottom Then Draw.Translate(0, -2) If hTabPanel.Border Then 'Draw.Rect(2, 2, Draw.W - 4, Draw.H - 2) Style.PaintButton(2, 2, Draw.W - 4, Draw.H - 2, False, Draw.Hover, True) Else If iIndex = 0 Then If System.RightToLeft Then Style.PaintButton(2, 1, Draw.W - 3, Draw.H - 1, False, Draw.Hover, True) Else Style.PaintButton(1, 1, Draw.W - 3, Draw.H - 1, False, Draw.Hover, True) Endif Else Style.PaintButton(2, 1, Draw.W - 4, Draw.H - 1, False, Draw.Hover, True) Endif Endif If $hPicture Then GetPictureSize(ByRef WP, ByRef HP) If System.RightToLeft Then W -= WP + Desktop.Scale * 1.5 Paint.DrawPicture($hPicture, Me.W - WP - Desktop.Scale, (Me.H - HP) / 2, WP, HP) Else X += WP + Desktop.Scale * 1.5 W = Me.W - X Paint.DrawPicture($hPicture, Desktop.Scale, (Me.H - HP) / 2, WP, HP) Endif Else X += Desktop.Scale W -= Desktop.Scale * 2 Endif If bClosable Then W -= BUTTON_SIZE If System.RightToLeft Then X += BUTTON_SIZE Endif Paint.Background = iFg hFont = hTabPanel.TextFont If Not hFont Then hFont = hTabPanel.Font Paint.Font = hFont If Not $bSelected And If $bInside Then If $bRichText Then Paint.DrawRichTextShadow($sText, X, 0, W, Me.Height, Align.Normal) Else Paint.DrawTextShadow($sText, X, 0, W, Me.Height, Align.Normal, -1) Endif Endif If $bRichText Then Paint.DrawRichText($sText, X, 0, W, Me.Height, Align.Normal) Else Paint.DrawText($sText, X, 0, W, Me.Height, Align.Normal) Endif Draw.Foreground = Color.LightForeground bBorder = hTabPanel.Border bFirst = iIndex = hTabPanel._GetFirstIndex() Select Case $iOrientation Case Align.Top If $bSelected Then If Not bFirst Or If bBorder Or If System.RightToLeft Or If hTabPanel.TabBarPaddingStart Then Draw.Line(0, Me.H - 1, 0, 0) If Not bFirst Or If bBorder Or If Not System.RightToLeft Then Draw.Line(Me.W - 1, 0, Me.W - 1, Me.H - 1) If bBorder Then Draw.Line(0, 0, Me.W - 1, 0) Else Draw.Line(0, Me.H - 1, Me.W - 1, Me.H - 1) Endif Case Align.Bottom If $bSelected Then If Not bFirst Or If bBorder Or If System.RightToLeft Or If hTabPanel.TabBarPaddingStart Then Draw.Line(0, 0, 0, Me.H - 1) If Not bFirst Or If bBorder Or If Not System.RightToLeft Then Draw.Line(Me.W - 1, Me.H - 1, Me.W - 1, 0) If bBorder Then Draw.Line(0, Me.H - 1, Me.W - 1, Me.H - 1) Else Draw.Line(0, 0, Me.W - 1, 0) Endif End Select If $bShowClose And If Not $bDragging Then Paint.Save If System.RightToLeft Then Paint.Translate(4, (Me.H - BUTTON_SIZE) \ 2) Else Paint.Translate(Me.W - BUTTON_SIZE - 4, (Me.H - BUTTON_SIZE) \ 2) Endif S = BUTTON_SIZE / 4 Paint.MoveTo(S, S) Paint.RelLineTo(S * 2, S * 2) Paint.MoveTo(S * 3, S) Paint.RelLineTo(-S * 2, S * 2) Paint.LineWidth = Desktop.Scale / 4 Paint.LineCap = Paint.LineCapRound Paint.Background = If($bInClose, Color.TextForeground, Color.LightForeground) Paint.Stroke Paint.Restore Endif End Private Function Text_Read() As String If Not $bRichText Then Return $sText End Public Sub UpdateLayout() Dim hTabPanel As TabPanel = GetParent() Dim S As Integer Dim bClosable As Boolean = IsClosable() Dim hFont As Font Dim WP, HP As Integer hFont = hTabPanel.TextFont If Not hFont Then hFont = hTabPanel.Font If $bRichText Then S = hFont.RichTextWidth($sText) + Desktop.Scale * 2.5 Else S = hFont.TextWidth($sText) + Desktop.Scale * 2.5 Endif ' Select Case $iOrientation ' Case Align.Left, Align.Right ' If $hPicture Then S += $hPicture.H '- 4 ' If bClosable Then S += BUTTON_SIZE ' Me.H = S ' Case Else If $hPicture Then GetPictureSize(ByRef WP, ByRef HP) S += WP '- 4 Endif If bClosable Then S += BUTTON_SIZE Me.W = S 'End Select GetParent().TabBar_Arrange End Private Sub Text_Write(Value As String) $sText = Value $bRichText = False UpdateLayout $hDrawingArea.Refresh End Private Function Selected_Read() As Boolean Return $bSelected End Private Sub Selected_Write(Value As Boolean) $bSelected = Value SetMouse DrawingArea_MouseMove $hDrawingArea.Refresh End Private Function Orientation_Read() As Integer Return $iOrientation End Private Sub Orientation_Write(Value As Integer) $iOrientation = Value UpdateLayout End Public Sub DrawingArea_MouseDown() Dim hTabPanel As TabPanel If Mouse.Left Then hTabPanel = GetParent() If $bInClose And If IsClosable() Then hTabPanel._Close(GetIndex()) Else If $bSelected Then Return Me.Parent.SetFocus() hTabPanel.Index = GetIndex() Endif ' Else If Mouse.Middle Then ' If IsClosable() Then ' hTabPanel = GetParent() ' hTabPanel._Close(GetIndex()) ' Endif Endif End Public Sub DrawingArea_MouseDrag() StartDrag End Public Sub DrawingArea_MouseUp() StopDrag End Public Sub DrawingArea_MouseWheel() Try Application.PreviousControl.SetFocus If Mouse.Delta > 0 Xor System.RightToLeft Then Try GetParent()._MovePrevious() Else Try GetParent()._MoveNext() Endif Stop Event End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) $hPicture = Value UpdateLayout $hDrawingArea.Refresh End Public Sub DrawingArea_Enter() 'Debug ">";; Me.Text $bInside = True $hDrawingArea.Tracking = True $bShowClose = IsClosable() $hDrawingArea.Refresh End Private Sub SetMouse() $hDrawingArea.Mouse = If($bSelected And Not $bInClose, Mouse.Default, Mouse.Pointing) End Public Sub DrawingArea_Leave() 'Debug "<";; Me.Text $bInside = False $bShowClose = False $bInClose = False SetMouse $hDrawingArea.Tracking = False $hDrawingArea.Refresh End Public Sub DrawingArea_MouseMove() Dim bInClose As Boolean Dim X As Integer Dim bShowClose As Boolean Dim bShift As Boolean Dim Y As Integer If $bDrag Then TimerDrag_Timer X = Mouse.ScreenX - Me.ScreenX Y = Mouse.ScreenY - Me.ScreenY Try bShift = Mouse.Shift And Mouse.Control 'If Not Error And If bShift Then Debug X If X >= 0 And If X < Me.W And If Y >= 0 And If Y < Me.H Then bShowClose = IsClosable() If bShowClose Then If System.RightToLeft Then bInClose = (X >= 0) And (X < BUTTON_SIZE) Else bInClose = (X >= (Me.W - BUTTON_SIZE)) And (X < Me.W) Endif Endif $bInside = True Else $bInside = False Endif If bInClose <> $bInClose Or If bShowClose <> $bShowClose Then $bInClose = bInClose $bShowClose = bShowClose SetMouse $hDrawingArea.Refresh Endif End Public Sub Update() If $bDrag Then Return DrawingArea_MouseMove End Private Function RichText_Read() As String If $bRichText Then Return $sText End Private Sub RichText_Write(Value As String) $sText = Value $bRichText = True UpdateLayout $hDrawingArea.Refresh End Private Sub StartDrag() Dim hTabPanel As TabPanel = GetParent() If $bDrag Then Return If Not hTabPanel.Moveable Then Return If Me.Parent.Children.Count <= 1 Then Return $hDragImage = New Image($hDrawingArea.W, $hDrawingArea.H, Color.Background) Paint.Begin($hDragImage) ' TODO: How to get the actual font of the control ??? Paint.Font = hTabPanel.TextFont DrawingArea_Draw Paint.End $bDrag = True $bDragging = True $hDrawingArea.Tracking = True 'Me.Parent.SetFocus $DX = Me.ScreenX $SX = Mouse.ScreenX $hDragWindow = New Window $hDragWindow.TopOnly = True $hDragWindow.Border = False $hDragWindow.Utility = True $hDragWindow.SkipTaskbar = True $hDragWindow.Move(Me.ScreenX, Me.ScreenY, $hDragImage.W, $hDragImage.H) $hDragWindow.Picture = $hDragImage.Picture $hDragWindow.Show $hTimerDrag = New Timer As "TimerDrag" $hTimerDrag.Delay = 1000 $hTimerDrag.Start $hDrawingArea.Grab() End Public Sub TimerDrag_Timer() Dim hTabPanel As TabPanel = GetParent() Dim hButton As _TabPanelButton Dim DX, W As Integer Dim bAfter As Boolean Dim hTarget As _TabPanelButton $hDragWindow.X = $DX + Mouse.ScreenX - $SX DX = Mouse.ScreenX '$hDragWindow.ScreenX + $hDrawingArea.W \ 2 W = Desktop.Scale * 3 For Each hButton In Me.Parent.Children If Not hButton.Visible Then Continue If hButton = Me Then If $hDragWindow.X < (hButton.ScreenX + hButton.W) Then Break bAfter = True Continue Endif If bAfter Then 'Debug "After";; $hDragWindow.X; " >= "; hButton.ScreenX If $hDragWindow.X >= hButton.ScreenX Then hTarget = hButton Else 'Debug "Before";; $hDragWindow.X; " <= "; hButton.ScreenX If $hDragWindow.X <= hButton.ScreenX Then hTarget = hButton Endif Next 'Debug "----> "; hTabPanel._GetIndex(hTarget) If hTarget Then hTabPanel._MoveTab(Me, hTarget, bAfter) End Private Sub StopDrag() If Not $bDrag Then Return $hDragWindow.Delete $hTimerDrag.Stop $hTimerDrag = Null $hDrawingArea.Tracking = False $bDrag = False $bDragging = False End Private Function Closable_Read() As Boolean Return $bClosable End Private Sub Closable_Write(Value As Boolean) $bClosable = Value UpdateLayout $hDrawingArea.Refresh End gambas-3.16.3/comp/src/gb.form/.src/TabPanel/_TabPanelContainer.class000066400000000000000000000025671411575327000252060ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Property Text As String Property RichText As String Property Picture As Picture Property Visible As Boolean Property Closable As Boolean Private Sub GetParent() As TabPanel Return Me.Parent.Parent End Private Sub GetIndex() As Integer Return GetParent()._GetIndex(Me) End Private Sub GetButton() As _TabPanelButton Return GetParent()._GetButton(GetIndex()) End Public Sub _new() End Private Function Text_Read() As String Return GetButton().Text End Private Sub Text_Write(sText As String) GetButton().Text = sText End Private Function Picture_Read() As Picture Return GetButton().Picture End Private Sub Picture_Write(hPict As Picture) GetButton().Picture = hPict End Public Sub _Delete() Super.Delete End Public Sub Delete() GetParent().Remove(GetIndex()) End Private Function Visible_Read() As Boolean Return GetParent()._IsVisible(GetIndex()) End Private Sub Visible_Write(Value As Boolean) GetParent()._SetVisible(GetIndex(), Value) End Private Function RichText_Read() As String Return GetButton().RichText End Private Sub RichText_Write(Value As String) GetButton().RichText = Value End Private Function Closable_Read() As Boolean Return GetButton().Closable End Private Sub Closable_Write(Value As Boolean) GetButton().Closable = Value End gambas-3.16.3/comp/src/gb.form/.src/TableView.class000066400000000000000000000246571411575327000217160ustar00rootroot00000000000000' Gambas class file Inherits GridView Export Public Const _Properties As String = "*,NoKeyboard" Public Const _Group As String = "View" Public Const _Similar As String = "GridView" Event Save(Row As Integer, Column As Integer, Value As String) Event Insert Event Click Event Hide Property Read Editor As Control Property NoKeyboard As Boolean 'Property ShowCursor As Boolean Private $hTextBox As TextBox Private $hComboBox As ComboBox Private $hEditor As Object Private $hPanel As Panel Private $bTextBox As Boolean Private $iCol As Integer Private $iRow As Integer Private $hWatcher As Watcher Private $bNoKeyboard As Boolean Private $hTimer As Timer Private $bDoNotHideEditor As Boolean 'Private $bShowCursor As Boolean Public Sub _new() Dim hObs As Observer hObs = New Observer(Me) As "GridView" $hWatcher = New Watcher(Me) As "Watcher" $hPanel = New Panel(Me.Window) $hPanel.Background = Color.TextBackground $hPanel.Ignore = True '$hPanel.Arrangement = Arrange.Fill $hPanel.Hide $hComboBox = New ComboBox($hPanel) As "Editor" '$hComboBox.Ignore = True '$hComboBox.Background = Color.TextBackground $hComboBox.Hide $hComboBox.Border = False $hTextBox = New TextBox($hPanel) As "Editor" '$hTextBox.Ignore = True $hTextBox.Border = False '$hTextBox.Background = Color.TextBackground $hTextBox.Hide $hTimer = New Timer As "Timer" End Private Sub SaveEditor() As Boolean Dim sText As String Dim sCurrent As String Dim bCancel As Boolean If Not $hEditor Then Return Try sCurrent = Me[$iRow, $iCol].Text If Error Then Return Try sText = $hEditor.Text If sText = sCurrent Then Return bCancel = Raise Save($iRow, $iCol, sText) Me[$iRow, $iCol].Refresh Return bCancel End Public Sub Save() As Boolean If SaveEditor() Then Return True HideEditor(True) End Public Sub Cancel() HideEditor(True) End Private Sub HideEditor(Optional bNoSave As Boolean) As Boolean Dim bCancel As Boolean 'Error "------------------------\n"; System.Backtrace.Join("\n") If $hEditor And If Not $bDoNotHideEditor Then If Not bNoSave Then bCancel = SaveEditor() Endif If $hEditor Then $hPanel.Hide $hEditor.Hide $hEditor = Null Raise Hide Endif Endif 'UpdateShowCursor Return bCancel End Private Sub MoveEditor() Dim X, Y, W, H As Integer Dim MX, MY As Integer Dim hEditor As Object Dim PX, PY As Integer If Not $hEditor Then Return $bDoNotHideEditor = True ' $bDoNotHideEditor can be set to FALSE during the WAIT instruction hEditor = $hEditor Me[$iRow, $iCol].EnsureVisible 'Wait If Not $hEditor Then $hEditor = hEditor X = Me.ScreenX - Me.Window.ScreenX - Me.Window.ClientX + Me.Rows.Width - Me.ScrollX + Me.ClientX Y = Me.ScreenY - Me.Window.ScreenY - Me.Window.ClientY + Me.Columns.Height - Me.ScrollY + Me.ClientY MX = Me.ScreenX - Me.Window.ScreenX - Me.Window.ClientX + Me.Rows.Width - Me.ScrollX + Me.ClientX MY = Me.ScreenY - Me.Window.ScreenY - Me.Window.ClientY + Me.Columns.Height - Me.ScrollY + Me.ClientY $bDoNotHideEditor = False With Me[$iRow, $iCol] X += .X - 1 Y += .Y W = Min(Me.ClientW - Me.Rows.W, .Width) H = Min(Me.ClientH - Me.Columns.H, .Height) X += 2 Y += 2 W -= 4 H -= 4 ' If Not Me.Grid Then ' Inc W ' Inc H ' Endif PX = Max(Me.Padding, .Padding) PX = Max(0, PX - 3) If $hEditor Is TextBox Then Else If $hEditor = $hComboBox Then If $hComboBox.ReadOnly Then PX = 0 Else PY = PX Endif If (W - PX * 2) < 4 Or If (H - PY * 2) < 4 Then HideEditor Return Endif If $hEditor.Background = Color.Default Then If Me.Background = Color.Default Then $hPanel.Background = Color.TextBackground Else $hPanel.Background = Me.Background Endif Else $hPanel.Background = $hEditor.Background Endif 'UpdateShowCursor $hEditor.Move(PX, PY, W - PX * 2, H - PY * 2) $hEditor.Show $hEditor.Raise $hPanel.Move(X, Y, W, H) $hPanel.Show $hPanel.Raise End With End Public Sub GridView_MouseDown() HideEditor End Public Sub GridView_RowResize((Row) As Integer) HideEditor End Public Sub GridView_ColumnResize((Column) As Integer) HideEditor End Public Sub GridView_Scroll() If $bDoNotHideEditor Then MoveEditor Else HideEditor Endif End Public Sub GridView_Arrange() If $bDoNotHideEditor Then MoveEditor Else HideEditor Endif End Public Sub Watcher_Resize() HideEditor End Public Sub Watcher_Hide() HideEditor End Public Sub GridView_Change() HideEditor End Private Sub InitEditor() With Me[$iRow, $iCol] Try $hEditor.Text = .Text If Error Then $hEditor = Null Error.Raise("The TableView editor must have a Text public property") Endif $hEditor.Font = .Font $hEditor.Foreground = .Foreground $hEditor.Background = .Background Try $hEditor.Alignment = .Alignment Try $hEditor.WordWrap = .WordWrap End With End Public Sub Edit(Optional List As String[], Optional ReadOnly As Boolean) 'DEBUG HideEditor $iCol = Me.Column $iRow = Me.Row If $iCol < 0 Or $iRow < 0 Then Return If List Then $hComboBox.List = List $hComboBox.ReadOnly = ReadOnly $hEditor = $hComboBox $bTextBox = Not ReadOnly Else $hEditor = $hTextBox $bTextBox = True Endif InitEditor If $bTextBox Then $hEditor.SelectAll MoveEditor Try $hEditor.SetFocus Try $hEditor.Pos = $hEditor.Length If Not $bDoNotHideEditor Then $bDoNotHideEditor = True $hTimer.Trigger Endif End Public Sub EditWith(Editor As Control) Dim hObs As Observer HideEditor $iCol = Me.Column $iRow = Me.Row If $iCol < 0 Or $iRow < 0 Then Return Editor.Reparent($hPanel) $hEditor = Editor $hEditor.Ignore = False $bTextBox = False If Editor Is TextArea Or If Editor Is TextBox Or If Editor Is ButtonBox Then $bTextBox = True Endif InitEditor hObs = New Observer($hEditor) As "Editor" Try $hEditor.SelectAll MoveEditor Try $hEditor.SetFocus End Public Sub Editor_Activate() SaveEditor End Public Sub Editor_Click() SaveEditor End Private Sub RaiseClickOrActivate() If Object.CanRaise(Me, "Click") Then Raise Click Else Raise Activate Endif End Public Sub Editor_KeyPress() Dim hEditor As Control = Last If Not $hEditor Then Stop Event Return Endif Select Case Key.Code Case Key.Escape If $hEditor.Text = Me[$iRow, $iCol].Text Then HideEditor(True) Else $hEditor.Text = Me[$iRow, $iCol].Text Endif Stop Event Case Key.Up If $bNoKeyboard Then Return If Not Key.Normal Then Return If $hEditor Is TextArea And If $hEditor.Line > 0 Then Return If SaveEditor() Then Stop Event Return Endif While Me.Row > 0 Dec Me.Row RaiseClickOrActivate If $hEditor Then Stop Event Break Endif Break Wend Case Key.Down If $bNoKeyboard Then Return If Not Key.Normal Then Return If $hEditor Is TextArea And If $hEditor.Line < $hEditor.ToLine($hEditor.Length) Then Return If SaveEditor() Then Stop Event Return Endif While Me.Row < (Me.Rows.Count - 1) Inc Me.Row RaiseClickOrActivate If $hEditor Then Stop Event Break Endif Break Wend Case Key.Left If $bNoKeyboard Then Return If Not Key.Normal Then Return If $bTextBox And If Not $hEditor.ReadOnly And If $hEditor.Pos > 0 Then Return If SaveEditor() Then Stop Event Return Endif Do If Me.Column > 0 Then Dec Me.Column RaiseClickOrActivate Else If Me.Row > 0 Then Me.MoveTo(Me.Row - 1, Me.Columns.Count - 1) RaiseClickOrActivate Else Break Endif If $hEditor Then Try $hEditor.Pos = $hEditor.Length Stop Event Break Endif Loop Case Key.Right If $bNoKeyboard Then Return If Not Key.Normal Then Return If $bTextBox And If Not $hEditor.ReadOnly And If $hEditor.Pos < $hEditor.Length Then Return If SaveEditor() Then Stop Event Return Endif Do If Me.Column < (Me.Columns.Count - 1) Then Inc Me.Column RaiseClickOrActivate Else If Me.Row < (Me.Rows.Count - 1) Then Me.MoveTo(Me.Row + 1, 0) RaiseClickOrActivate Else Break Endif If $hEditor Then Try $hEditor.Pos = 0 Stop Event Break Endif Loop Case Key.Enter, Key.Return If Not Key.Normal Then Return If $bNoKeyboard Then If $hEditor Then HideEditor Stop Event Endif Return Endif If SaveEditor() Then Stop Event Return Endif Do If Me.Column < (Me.Columns.Count - 1) Then Inc Me.Column RaiseClickOrActivate Else If Me.Row < (Me.Rows.Count - 1) Then Me.MoveTo(Me.Row + 1, 0) RaiseClickOrActivate Else Raise Insert Stop Event Break Endif If $hEditor Then Try $hEditor.Pos = 0 Stop Event Break Endif Loop End Select If Not $bDoNotHideEditor Then $bDoNotHideEditor = Not IsNull($hEditor) If $bDoNotHideEditor Then $hTimer.Trigger Endif If Not $hEditor Then Me.SetFocus Else If $hEditor <> hEditor Then Stop Event Endif End Public Sub Timer_Timer() $bDoNotHideEditor = False End Private Function Editor_Read() As Control Return $hEditor End Private Function NoKeyboard_Read() As Boolean Return $bNoKeyboard End Private Sub NoKeyboard_Write(Value As Boolean) $bNoKeyboard = Value End Public Sub Clear() Cancel Super.Clear End Public Sub _GetPreferredWidth(iCol As Integer) As Integer Dim PW As Integer PW = Super._GetPreferredWidth(iCol) If Me.Rows.Count Then PW += 6 Return PW End gambas-3.16.3/comp/src/gb.form/.src/Test/000077500000000000000000000000001411575327000177065ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Test/FBugFileView.class000066400000000000000000000004511411575327000232130ustar00rootroot00000000000000' Gambas class file Public Sub Button1_Click() FileView1.ShowDetailed = Not FileView1.ShowDetailed End Public Sub Form_Open() FileView1.Dir = "/usr/bin/" FileChooser1.Dir = "/usr/bin/" End Public Sub Button2_Click() FileChooser1.ShowDetailed = Not FileChooser1.ShowDetailed End gambas-3.16.3/comp/src/gb.form/.src/Test/FBugFileView.form000066400000000000000000000010321411575327000230450ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,133,64) Expand = True Arrangement = Arrange.Vertical { HSplit1 HSplit MoveScaled(2,6,98,47) Expand = True { FileChooser1 FileChooser MoveScaled(6,7,36,36) Expand = True } { FileView1 FileView MoveScaled(59,13,16,16) Expand = True } } { Button1 Button MoveScaled(27,54,16,4) Text = ("Toggle Fileview Detailed View") } { Button2 Button MoveScaled(28,58,16,4) Text = ("Toggle Filechooser Detailed View") } } gambas-3.16.3/comp/src/gb.form/.src/Test/FDocumentView.class000066400000000000000000000042051411575327000234550ustar00rootroot00000000000000' Gambas class file Class PdfDocument Private hpdf As New PdfDocument Static Public Sub _init() Component.Load("gb.pdf") End Public Sub Form_Open() 'hpdf.Open("/home/fabien/Downloads/cerfa_14952-01.pdf") hpdf.Open("~/IMSLP07596-BWV0997.pdf") DV.Count = hpdf.Count DV2.Count = 0 DV2.DocHeight = hpdf[1].Height / 0.72 DV2.DocWidth = hpdf[1].Width / 0.72 DV.DocWidth = hpdf[1].Width / 0.72 DV.DocHeight = hpdf[1].Height / 0.72 'DocumentView31.Arrangement = Arrange.Horizontal ComboBox1.Index = 5 End Public Sub DV_Layout(Page As Integer) Last.Layout.Height = hpdf[Page + 1].Height / 0.72 Last.Layout.Width = hpdf[Page + 1].Width / 0.72 ' Catch ' Last.Layout.Height = hpdf[1].Height / 0.72 ' Last.Layout.Width = hpdf[1].Width / 0.72 End Public Sub SpinBox3_Change() DV.Spacing = Last.Value End Public Sub SpinBox2_Change() DV.Padding = Last.Value End Public Sub CheckBox1_Click() DV.ShowShadow = Last.Value End Public Sub DV_Draw(Page As Integer, (Width) As Integer, (Height) As Integer) 'Debug "Load image : " & Page & " | " & Width & " | " & height 'Print Last.Zoom If Page > hpdf.Count - 1 Then Return hpdf.Zoom = Last.Zoom / 0.72 Draw.Image(hpdf[Page + 1].Image, 0, 0) 'Catch End Public Sub DV_Zoom() 'Print Last.Zoom ' hpdf.Zoom = Last.Zoom / 0.72 'Print "Zoom_Change " & Last.Zoom Object.Lock(SliderBox1) SliderBox1.Value = Last.Zoom * 100 Object.Unlock(SliderBox1) End Public Sub SliderBox1_Change() DV.Zoom = Last.Value / 100 End Public Sub ComboBox1_Click() DV.Arrangement = Last.index End Public Sub TextBox1_Activate() DV.Goto(Last.Text) End Public Sub DV2_Zoom() End Public Sub DV2_Draw(Page As Integer, (Width) As Integer, (Height) As Integer) hpdf.Zoom = Last.Zoom / 0.72 'Print Last.Zoom Draw.Image(hpdf[Page + 1].Image, 0, 0) End Public Sub DV_MouseDown() Print dv.Find(Mouse.x, Mouse.y) End Public Sub Button1_Click() dv[30].EnsureVisible End ' Public Sub Timer1_Timer() ' ' Inc dv.Count ' ' End Public Sub SpinBox1_Change() dv.Column = Last.Value dv.Refresh End Public Sub CheckBox2_Click() DV.Center = Last.Value End gambas-3.16.3/comp/src/gb.form/.src/Test/FDocumentView.form000066400000000000000000000034561411575327000233220ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,121,68) Arrangement = Arrange.Horizontal Spacing = True Margin = True { DV2 DocumentView MoveScaled(1,1,13,66) Visible = False Arrangement = Arrange.Vertical } { DV DocumentView MoveScaled(14,1,58,66) Background = &HC0C0C0& Expand = True Border = True Padding = 30 Spacing = 30 ShowShadow = True ShowPage = True } { Panel1 Panel MoveScaled(72,1,39,66) { SliderBox1 SliderBox MoveScaled(10,10,25,4) MaxValue = 200 Value = 50 } { Label2 Label MoveScaled(2,10,8,4) Text = ("Zoom :") } { CheckBox1 CheckBox MoveScaled(2,41,26,3) Text = ("Show Shadow") Value = CheckBox.True } { SpinBox2 SpinBox MoveScaled(17,24,19,4) } { Label3 Label MoveScaled(1,24,14,4) Text = ("Padding") } { Label4 Label MoveScaled(1,30,14,4) Text = ("Spacing") } { SpinBox3 SpinBox MoveScaled(17,30,19,4) } { Label5 Label MoveScaled(1,36,11,4) Text = ("Scale Mode") } { TextBox1 TextBox MoveScaled(8,49,19,4) } { Label6 Label MoveScaled(2,49,7,4) Text = ("Goto :") } { ComboBox1 ComboBox MoveScaled(17,36,18,4) ReadOnly = True List = [("None"), ("Horizontal"), ("Vertical"), ("Row"), ("Column"), ("Fill")] Text = ("ComboBox1") } { Button1 Button MoveScaled(32,49,5,5) Text = ("Button1") } { Timer1 #Timer #MoveScaled(11,2) Enabled = True } { Label1 Label MoveScaled(2,20,10,3) Text = ("Columns") } { SpinBox1 SpinBox MoveScaled(17,19,19,4) MaxValue = 200 } { CheckBox2 CheckBox MoveScaled(2,45,22,2) Text = ("Center") } } } gambas-3.16.3/comp/src/gb.form/.src/Test/FIconPanel.class000066400000000000000000000001551411575327000227140ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() IconPanel1[0].RichText = "Gras Italique" End gambas-3.16.3/comp/src/gb.form/.src/Test/FIconPanel.form000066400000000000000000000011601411575327000225470ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,85,64) { IconPanel1 IconPanel MoveScaled(5,4,67,56) Foreground = Color.Red Count = 4 Border = True Index = 0 Text = ("Item 0") Picture = Picture["img/32/warning.png"] { Label1 Label MoveScaled(8,13,24,4) Text = ("Toto") } Index = 1 Text = ("Item 1") Index = 2 Text = ("Item 2") Picture = Picture["img/8/new/side-top.png"] { Button1 Button MoveScaled(8,20,16,4) } Index = 3 Text = ("Item 3") { ToggleButton1 ToggleButton MoveScaled(12,25,16,4) } Index = 0 } } gambas-3.16.3/comp/src/gb.form/.src/Test/FIconView.class000066400000000000000000000011351411575327000225660ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() ' Dim sPath As String ' Dim sDir As String = "/home/guygle/guygle/bin" '/gambas/3.0/trunk" ' ' For Each sPath In Dir(sDir).Sort(gb.Language + gb.IgnoreCase) ' If IsDir(sDir &/ sPath) Then ' IconView1.Add(sPath, sPath, Picture["icon:/64/directory"]) ' Else ' IconView1.Add(sPath, sPath, Picture["icon:/64/file"]) ' Endif ' Next ' ' 'IconView1.Picture = Picture["img/colormap.png"] ' ' IconView1.SetFocus FileView1.Dir = "~" End Public Sub Button1_Click() FileView1.Enabled = Not FileView1.Enabled End gambas-3.16.3/comp/src/gb.form/.src/Test/FIconView.form000066400000000000000000000005751411575327000224330ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,115,80) Icon = Picture["icon:/medium/color"] Arrangement = Arrange.Vertical Spacing = True Margin = True { Button1 Button MoveScaled(4,1,16,4) #Translate = False Text = "Enabled" } { FileView1 FileView MoveScaled(3,8,104,55) Expand = True ShowDetailed = True ShowDirectory = True } } gambas-3.16.3/comp/src/gb.form/.src/Test/FLCDLabel.class000066400000000000000000000004061411575327000224050ustar00rootroot00000000000000' Gambas class file Private $bColon As Boolean Public Sub Timer1_Timer() $bColon = Not $bColon LCDLabel2.Text = ";" & Format(Now, "hh" & If($bColon, ":", "") & "nn" & If($bColon, ":", "") & "ss") & ";" End Public Sub Form_Open() Timer1_Timer End gambas-3.16.3/comp/src/gb.form/.src/Test/FLCDLabel.form000066400000000000000000000005261411575327000222460ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,44,19) Background = &H000000& Arrangement = Arrange.Fill { LCDLabel2 LCDLabel MoveScaled(5,3,29,11) Foreground = &HFFFFFF& Text = ("12:34") Alignment = Align.Center Padding = 8 } { Timer1 #Timer #MoveScaled(36,11) Enabled = True Delay = 500 } } gambas-3.16.3/comp/src/gb.form/.src/Test/FMain.class000066400000000000000000000006231411575327000217300ustar00rootroot00000000000000' Gambas class file Public Sub TreeView1_Menu() Debug End Public Sub Form_Open() Component.Load("gb.form.dialog") Debug Style.Name End Public Sub Button1_Click() Print DateBox1.Text;; DateBox1.Value End Public Sub ButtonBox1_Click() Dialog.Path = ButtonBox1.Text Dialog.Filter = ["*.pdf", ("PDF files"), "*.ps", ("Postscript files")] If Dialog.SaveFile() Then Return End gambas-3.16.3/comp/src/gb.form/.src/Test/FMain.form000066400000000000000000000025751411575327000215760ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,100,82) { Menu1 Menu { Menu2 Menu Text = ("Menu2") } { Menu3 Menu Text = ("Menu3") } } { SidePanel1 SidePanel MoveScaled(0,3,29,61) Orientation = Align.Left { DirView1 DirView MoveScaled(2,2,25,32) PopupMenu = "Menu1" } { TreeView1 TreeView MoveScaled(2,41,20,16) PopupMenu = "Menu1" } } { DirView2 DirView MoveScaled(38,15,16,16) PopupMenu = "Menu1" } { TreeView2 TreeView MoveScaled(34,36,21,26) PopupMenu = "Menu1" } { ColorButton1 ColorButton MoveScaled(62,5,19,5) } { ComboBox1 ComboBox MoveScaled(61,23,32,3) List = [("Élément 1"), ("Élément 2"), ("Élément 3"), ("Élément 4")] Text = ("ComboBox1") } { ComboBox2 ComboBox MoveScaled(61,30,32,5) Text = ("ComboBox2") } { TextBox1 TextBox MoveScaled(61,37,32,4) Background = &HBFBF8F& Text = ("TextBox1") } { Button1 Button MoveScaled(61,45,19,4) Text = ("Button1") } { MenuButton1 MenuButton MoveScaled(62,14,23,6) Text = ("MenuButton1") } { DateBox1 DateBox MoveScaled(62,53,28,5) } { ColorButton2 ColorButton MoveScaled(63,61,17,6) } { ButtonBox1 ButtonBox MoveScaled(34,5,24,4) Button = False ClearButton = True } { SliderBox1 SliderBox MoveScaled(9,70,32,4) } } gambas-3.16.3/comp/src/gb.form/.src/Test/FSpinBar.class000066400000000000000000000000241411575327000223750ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.form/.src/Test/FSpinBar.form000066400000000000000000000007551411575327000222460ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { SpinBox1 SpinBox MoveScaled(23,39,9,4) } { Panel1 ScrollView MoveScaled(3,3,61,15) ScrollBar = Scroll.Vertical { SpinBar3 SpinBar MoveScaled(0,7,56,5) Border = False Text = ("Test") } { SpinBar1 SpinBar MoveScaled(0,0,56,5) Text = ("Test") } { SpinBar2 SpinBar MoveScaled(3,14,32,4) Enabled = False Value = 0.5 Text = ("Test") } } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestArrangement.class000066400000000000000000000001651411575327000241500ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() 'Panel2.H = 0 End Public Sub Form_Arrange() Debug Panel2.Y End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestArrangement.form000066400000000000000000000004711411575327000240060ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Vertical { Panel1 Panel MoveScaled(6,5,47,13) Expand = True Border = Border.Plain } { Panel2 Panel MoveScaled(6,23,47,13) Mouse = Mouse.SplitV } { Expander1 Expander MoveScaled(3,42,55,19) } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestBalloon.class000066400000000000000000000003171411575327000232720ustar00rootroot00000000000000' Gambas class file Public Sub Form_Move() Debug Me.X;; Me.Y End Public Sub Button1_Click() Balloon("Ceci est un message\nsur deux lignes.", TextBox1) End Public Sub Form_Open() Me.Center End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestBalloon.form000066400000000000000000000003741411575327000231330ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,-1,64,64) { TextBox1 TextBox MoveScaled(0,0,41,4) Text = ("TextBox1") } { Button1 Button MoveScaled(0,6,16,4) ToolTip = ("Ceci est une bulle d'aide") Text = ("Button1") } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestColorChooser.class000066400000000000000000000005251411575327000243060ustar00rootroot00000000000000' Gambas class file Public Sub Form_Resize() Debug Me.W;; Me.H 'Sleep 2 End Public Sub Form_Open() ' Dim hCtrl As TestControl ' ' hCtrl = New TestControl(Me) ' hCtrl.ResizeScaled(40, 40) ' hCtrl.Background = Color.Yellow 'Me.Resizable = False End Public Sub Button1_Click() Me.Resizable = Not Me.Resizable End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestColorChooser.form000066400000000000000000000004361411575327000241450ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,70,58) Expand = True Arrangement = Arrange.Vertical { ColorChooser1 ColorChooser MoveScaled(1,1,55,48) Expand = True ShowCustom = True } { Button1 Button MoveScaled(3,50,16,4) Text = ("Resizable") } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestCompletion.class000066400000000000000000000005051411575327000240140ustar00rootroot00000000000000' Gambas class file Private $hCompletion As FileCompletion Public Sub Form_Open() TableView1.Rows.Count = 10 TableView1.Columns.Count = 1 End Public Sub TableView1_Click() TableView1.Edit If Not $hCompletion Then $hCompletion = New FileCompletion(TableView1.Editor) End Public Sub Button1_Click() End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestCompletion.form000066400000000000000000000005761411575327000236620ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(28.625,28.625,62,53) Arrangement = Arrange.Vertical { TableView1 TableView MoveScaled(2,4,53,36) Expand = True } { HBox1 HBox MoveScaled(2,46,56,4) { Button1 Button MoveScaled(0,0,16,4) Text = ("Button1") } { Button2 Button MoveScaled(17,0,16,4) Text = ("Button2") } } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestDateChooser.class000066400000000000000000000005171411575327000241060ustar00rootroot00000000000000' Gambas class file Public Sub _new() DateBox2.Value = Date(Now) DateBox2.SetFocus End Public Sub DateBox1_Change() Debug DateBox1.Value End Public Sub DateBox2_Change() Debug DateBox2.Value End Public Sub Button1_Click() DateBox1.Enabled = Not DateBox1.Enabled DateBox2.Enabled = Not DateBox2.Enabled End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestDateChooser.form000066400000000000000000000013201411575327000237350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form Move(0,0,824,336) #Scaled = False Arrangement = Arrange.Horizontal Spacing = True Margin = True { Panel1 Panel Move(16,8,320,304) { DateBox2 DateBox Move(40,112,184,32) } { DateBox3 DateBox Move(8,160,296,32) Mode = DateChooser.DateTime } { Button1 Button Move(16,0,128,32) Text = ("Enable") } { DateBox1 DateBox Move(0,56,192,32) Mode = DateChooser.TimeOnly } { TextBox1 TextBox Move(40,216,192,32) Border = False } { TextBox2 TextBox Move(40,256,192,32) } } { DateChooser1 DateChooser Move(408,32,408,240) Expand = True ShowWeek = True } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestExpander.class000066400000000000000000000000251411575327000234460ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.form/.src/Test/FTestExpander.form000066400000000000000000000006711411575327000233130ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Fill { Expander1 Expander MoveScaled(7,7,47,34) Arrangement = Arrange.Vertical Border = False Text = ("Expander") { Panel1 Panel MoveScaled(3,4,27,4) Background = &HFFFF00& Border = Border.Plain } { Panel2 Panel MoveScaled(4,11,26,8) Background = &HFF7F00& Border = Border.Plain } } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestFileChooser.class000066400000000000000000000014301411575327000241030ustar00rootroot00000000000000' Gambas class file Public Sub Button2_Click() FTestDateChooser.ShowDialog End Public Sub _new() Component.Load("gb.desktop") End Public Sub Button3_Click() Balloon("Ceci n'est pas un ballon.\nMais une bulle !", Last) End Public Sub Button1_Click() FileChooser1.Background = Color.Default End Public Sub FileChooser1_Change() ' If FileChooser1.SelectedPath Then ' FileProperties1.Path = FileChooser1.SelectedPath ' Else ' FileProperties1.Path = FileChooser1.Dir ' Endif End Static Public Sub _init() 'Application.Theme = "gambas" Print Application.Theme Component.Load("gb.inotify") End Public Sub Form_Open() 'FileChooser1.Dir = "/usr/bin" 'FileChooser1.SelectedPath = "/home/benoit/gambas/git/master/app/src/gambas3/img/broken.svg" End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestFileChooser.form000066400000000000000000000030621411575327000237440ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,142,84) Arrangement = Arrange.Vertical Spacing = True Margin = True { Menu1 Menu Text = ("Menu1") { Menu2 Menu Text = ("Menu2") Picture = Picture["img/16/cross.png"] } { Menu3 Menu Text = ("Menu3") Picture = Picture["stock/16/gambas.png"] } { Menu7 Menu Text = ("Menu7") Shortcut = "Ctrl+B" } { Menu6 Menu } { Menu4 Menu Text = ("Menu4") Picture = Picture["stock/16/gnu.png"] } { Menu5 Menu Text = ("Menu5") Picture = Picture["stock/16/linux.png"] Shortcut = "Ctrl+Shift+Alt+Backspace" } } { HBox1 HBox MoveScaled(8,2,95,5) #Translate = False Spacing = True { Button1 Button MoveScaled(0,0,16,4) #Translate = False Text = "Transparent" } { Button2 Button MoveScaled(18,0,16,4) #Translate = False Text = "Button2" } { Button3 Button MoveScaled(36,0,16,4) Text = ("Balloon") } { Label1 Label MoveScaled(56,0,19,4) Text = ("Label1") } { TextBox1 TextBox MoveScaled(67,0,24,4) Text = ("TextBox1") Border = False } } { Panel1 HBox MoveScaled(2,12,133,64) #Translate = False Expand = True Spacing = True { FileChooser1 FileChooser MoveScaled(10,4,77,56) Expand = True Multi = True ShowDetailed = True ShowButton = True } { FileProperties1 FileProperties MoveScaled(94,7,32,44) Visible = False } } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestFileView.class000066400000000000000000000001361411575327000234150ustar00rootroot00000000000000' Gambas class file Public Sub Button1_Click() Print FileView1.Selection.Join("\n") End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestFileView.form000066400000000000000000000005431411575327000232550ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Vertical Margin = True { FileView1 FileView MoveScaled(2,2,58,53) Expand = True Mode = Select.Multiple ShowDetailed = True ShowHidden = True ShowDirectory = True } { Button1 Button MoveScaled(14,57,16,4) Text = ("Selection") } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestFontChooser.class000066400000000000000000000001321411575327000241300ustar00rootroot00000000000000' Gambas class file Public Sub FontChooser1_Activate() Debug FontChooser1.Value End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestFontChooser.form000066400000000000000000000002761411575327000237770ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,74,67) Arrangement = Arrange.Fill { FontChooser1 FontChooser MoveScaled(1,1,72,28) Border = False ShowFont = False } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestImageView.class000066400000000000000000000016401411575327000235610ustar00rootroot00000000000000' Gambas class file Private myButton As New Button(Me) As "mBEvent" Private myText As New TextLabel(Me) Private myIView As New ImageView(Me) Public Sub form_Open() With myButton .H = 35 .w = 100 .x = 20 .y = 50 End With With myText .H = 30 .W = 180 .X = 7 .Y = 105 End With With myIView .H = 130 .W = 200 .X = 190 .Y = 50 End With End Public Sub mbevent_Click() Select Case myIView.Border Case False myText.Text = conBool(myIView.Border) myIView.Border = True Case True myIView.Border = False myText.Text = conBool(myIView.Border) End Select End Static Public Sub conBool(myVar As Variant) As String Select Case TypeOf(myVar) Case 1 Select Case myVar Case True Return "True" Case False Return "False" End Select End Select Endgambas-3.16.3/comp/src/gb.form/.src/Test/FTestImageView.form000066400000000000000000000000761411575327000234210ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestListEditor.class000066400000000000000000000001731411575327000237660ustar00rootroot00000000000000' Gambas class file Public Sub ListEditor1_Select() Debug End Public Sub Form_Open() ListEditor1.Index = 20 End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestListEditor.form000066400000000000000000000003521411575327000236230ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { ListEditor1 ListEditor MoveScaled(5,6,48,34) List = [("Élément 1"), ("Élément 2"), ("Élément 3"), ("Élément 4"), ("Élément 5")] Unique = True } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestMaskBox.class000066400000000000000000000015071411575327000232520ustar00rootroot00000000000000' Gambas class file Public Sub MaskBox1_Change() Debug "«"; Last.Text; "»" End ' Public Sub Button1_Click() ' ' ButtonBox1.Enabled = Not ButtonBox1.Enabled ' ' End ' Public Sub MaskBox1_Validate() ' ' Dim aAdr As String[] ' Dim I As Integer ' Dim sAdr As String ' Dim iAdr As Integer ' Dim bValid As Boolean ' ' aAdr = Split(Last.Text, ".") ' If aAdr.Count = 4 Then ' For I = 0 To aAdr.Max ' bValid = False ' sAdr = Trim(aAdr[I]) ' If sAdr Then ' Try iAdr = CInt(sAdr) ' If Error Then Break ' If iAdr < 0 Or If iAdr > 255 Then Break ' Endif ' bValid = True ' Next ' Endif ' ' If Not bValid Then Stop Event ' ' End Public Sub Form_Open() End Public Sub TextBox1_KeyPress() Debug Key.Code End Public Sub Form_GotFocus() Debug End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestMaskBox.form000066400000000000000000000002171411575327000231050ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { MaskBox1 MaskBox MoveScaled(13,34,24,4) Mask = "$#,###,##0
      Que faire maintenant ?", Picture["icon:/32/warning"]) End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestMessageView.form000066400000000000000000000007441411575327000237650ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,80,64) Arrangement = Arrange.Vertical { MessageView1 MessageView MoveScaled(1,2,72,14) Animated = True Separator = True } { Panel1 Panel MoveScaled(2,19,72,39) Expand = True Arrangement = Arrange.Vertical { Button1 Button MoveScaled(12,11,15,5) Text = ("Button1") } { Panel2 Panel MoveScaled(36,9,12,19) Expand = True Arrangement = Arrange.Fill } } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestSidePanel.class000066400000000000000000000004231411575327000235460ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Debug Application.Animations = True End Public Sub Form_Arrange() 'Debug SidePanelBottom.W;; SidePanelBottom._Container.W End Public Sub Panel1_Arrange() 'Debug Panel1.W - Desktop.Scale * 2;; SidePanelBottom.W End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestSidePanel.form000066400000000000000000000015131411575327000234050ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,104,64) Background = &HFFFF00& Arrangement = Arrange.Horizontal { SidePanelLeft SidePanel MoveScaled(1,2,20,57) Background = &HFFFFFF& Orientation = Align.Left Separator = True } { Panel2 Panel MoveScaled(22,13,4,11) Background = &HFF7F00& } { Panel1 VBox MoveScaled(28,3,52,56) Background = &H00FF7F& Expand = True { DrawingArea1 DrawingArea MoveScaled(0,0,51,35) Expand = True } { SidePanelBottom SidePanel MoveScaled(2,41,48,14) Background = Color.White Orientation = Align.Bottom Separator = True Transparent = True Hidden = True } } { SidePanelRight SidePanel MoveScaled(87,7,12,48) Orientation = Align.Right Separator = True Transparent = True } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestSpinner.class000066400000000000000000000002271411575327000233220ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Spinner1.Start End Public Sub Timer1_Timer() Spinner1.Value += 0.005 'Print Spinner1.Value End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestSpinner.form000066400000000000000000000005701411575327000231610ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,40,40) Background = &HFFFFFF& Arrangement = Arrange.Fill Margin = True { Spinner1 Spinner MoveScaled(11,9,18,18) Font = Font["+4"] Foreground = Color.DarkRed Border = True Margin = True Type = Spinner.Circle } { Timer1 #Timer #MoveScaled(4,3) Enabled = True Delay = 70 } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestSwitchButton.class000066400000000000000000000001711411575327000243370ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Application.Animations = True End Public Sub URLLabel1_Click() End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestSwitchButton.form000066400000000000000000000012511411575327000241750ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,77,54) { SwitchButton1 SwitchButton MoveScaled(5,6,17,5) Value = True Animated = True } { TextBox1 TextBox MoveScaled(15,33,24,4) Text = ("TextBox1") } { URLLabel1 URLLabel MoveScaled(39,11,27,6) Alignment = Align.TopNormal Link = "http://gambaswiki.org" } { ValueBox1 ValueBox MoveScaled(44,23,24,6) } { Label1 Label MoveScaled(44,33,11,5) Background = Color.LinkForeground Text = ("Label1") Border = Border.Plain } { Label2 Label MoveScaled(44,40,11,5) Background = Color.VisitedForeground Text = ("Label2") Border = Border.Plain } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestTabPanel.class000066400000000000000000000025421411575327000233740ustar00rootroot00000000000000' Gambas class file Private $hCtrl As Control Public Sub TabPanel2_GotFocus() Debug End Public Sub TabPanel2_LostFocus() Debug End Public Sub Form_Open() Dim I As Integer Dim hLabel As Label TabPanel2.Count = 6 For I = 0 To TabPanel2.Count - 1 TabPanel2.Index = I TabPanel2.Text = "Tab " & (I + 1) & " " & String$(CInt(Rnd(1, 10)), "-") TabPanel2.Picture = Picture["icon:/32/bookmark"] hLabel = New Label(TabPanel2) hLabel.Move(8, 8, 8, 8) hLabel.AutoResize = True hLabel.Text = " " & CStr(I + 1) & " " hLabel.Font.Grade = 6 hLabel.Border = Border.Plain Next TabPanel2[1].Closable = True End Public Sub Form_DblClick() End Public Sub Timer1_Timer() Dim hCtrl As Control hCtrl = Application.ActiveControl If hCtrl <> $hCtrl Then $hCtrl = hCtrl If $hCtrl Then Print "Active: "; $hCtrl.Name Else Print "Active: NULL" Endif Endif End Public Sub TabPanel2_Close(Index As Integer) Debug Index End Public Sub Button1_Click() TabPanel2.Border = Not TabPanel2.Border End Public Sub Button2_Click() TabPanel2.Orientation = If(TabPanel2.Orientation = Align.Top, Align.Bottom, Align.Top) End Public Sub Button3_Click() TabPanel2.TabBarPaddingStart = 16 - TabPanel2.TabBarPaddingStart TabPanel2.TabBarPaddingEnd = 16 - TabPanel2.TabBarPaddingEnd End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestTabPanel.form000066400000000000000000000017531411575327000232350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,105,62) Arrangement = Arrange.Vertical Spacing = True Margin = True { TabPanel2 TabPanel MoveScaled(1,2,78,26) #Translate = False Foreground = Color.Orange Expand = True Border = False Closable = True CloseButton = True Moveable = True Index = 0 Text = "Yop" { Label1 Label MoveScaled(8,5,19,4) } Index = 0 } { TabStrip1 TabStrip MoveScaled(2,30,51,15) Foreground = Color.Red Count = 3 Index = 0 Text = ("Text") Index = 1 Text = ("") Index = 2 Text = ("") Index = 0 } { Panel1 HBox MoveScaled(7,47,66,4) { Button1 Button MoveScaled(0,0,16,4) Text = ("Border") } { Button2 Button MoveScaled(17,0,16,4) Text = ("Orientation") } { Button3 Button MoveScaled(34,0,16,4) Text = ("Padding") } } { Timer1 #Timer #MoveScaled(75,45) Enabled = True Delay = 100 } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestTableView.class000066400000000000000000000017511411575327000235710ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim aDir As String[] Dim Y As Integer aDir = RDir("~/Musique", "*.mp3").Sort() With tvwMain .Columns.Count = 4 .Rows.Count = aDir.Count .Rows.H = 24 End With tvwMain.Columns[0].Title = "Name" tvwMain.Columns[0].Width = 400 tvwMain.Columns[1].Title = "Size" tvwMain.Columns[2].Title = "Done" tvwMain.Columns[3].Title = "Error" For Y = 0 To aDir.Max tvwMain[Y, 0].Text = String.UCaseFirst(File.BaseName(aDir[Y])) tvwMain[Y, 0].Padding = 4 tvwMain[Y, 1].Text = Stat("~/Musique" &/ aDir[Y]).Size tvwMain[Y, 1].Padding = 4 tvwMain[Y, 1].Background = Color.Yellow Next tvwMain.Rows.H = -1 End Public Sub tvwMain_Click() Select Case tvwMain.Column Case 0 tvwMain.Edit Case 1 tvwMain.Edit Case 2, 3 tvwMain.Edit(["True", "False", ""], True) End Select End Public Sub tvwMain_Save(r As Integer, c As Integer, v As String) tvwMain[r, c].Text = v End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestTableView.form000066400000000000000000000006421411575327000234250ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,88,69) Arrangement = Arrange.Vertical Margin = True { Panel2 Panel MoveScaled(6,2,62,12) { TextBox1 TextBox MoveScaled(4,4,25,4) } { TextBox2 TextBox MoveScaled(31,4,28,4) Border = False } } { tvwMain TableView MoveScaled(6,21,29,27) Expand = True ShowCursor = True Header = GridView.Horizontal } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestTimeBox.class000066400000000000000000000000251411575327000232470ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.form/.src/Test/FTestTimeBox.form000066400000000000000000000002661411575327000231140ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { TimeBox1 TimeBox MoveScaled(8,6,21,4) ReadOnly = True } { SpinBox1 SpinBox MoveScaled(9,13,9,4) } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestToolPanel.class000066400000000000000000000001231411575327000235740ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Application.Animations = True End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestToolPanel.form000066400000000000000000000006001411575327000234320ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,80,86) Arrangement = Arrange.Fill Margin = True { ToolPanel1 ToolPanel MoveScaled(4,6,51,72) Count = 4 Animated = True Border = True Index = 0 Text = ("Toolbar 1") Index = 1 Text = ("Toolbar 2") Index = 2 Text = ("Toolbar 3") Index = 3 Text = ("Toolbar 4") Index = 0 } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestValueBox.class000066400000000000000000000001721411575327000234300ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() DateBox1.Value = Date(30, 1, 1) End Public Sub Button1_Click() End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestValueBox.form000066400000000000000000000005661411575327000232750ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,58,61) { TextBox1 TextBox MoveScaled(11,26,24,4) Text = ("Hello world!") } { Spring1 Spring MoveScaled(25,32,4,6) } { Button1 Button MoveScaled(19,42,16,4) } { DateBox1 DateBox MoveScaled(12,4,24,4) } { ValueBox1 ValueBox MoveScaled(9,13,24,4) Type = ValueBox.Currency } } gambas-3.16.3/comp/src/gb.form/.src/Test/FTestWizard.class000066400000000000000000000001031411575327000231350ustar00rootroot00000000000000' Gambas class file Public Sub Wizard1_Cancel() Me.Close End gambas-3.16.3/comp/src/gb.form/.src/Test/FTestWizard.form000066400000000000000000000010761411575327000230050ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,71,64) Arrangement = Arrange.Fill Margin = True { Wizard1 Wizard MoveScaled(4,4,64,54) Count = 4 TextFont = Font["Bold,+4"] ShowIndex = True Border = False Index = 0 Text = ("Étape n°1") { Button1 Button MoveScaled(19,22,17,6) Text = ("Button1") } Index = 1 Text = ("Ceci est une longue étape") { LCDLabel1 LCDLabel MoveScaled(8,9,49,17) } Index = 2 Text = ("Étape n°3") Index = 3 Text = ("Étape n°4") Index = 0 } } gambas-3.16.3/comp/src/gb.form/.src/Test/FWiki.class000066400000000000000000000003261411575327000217470ustar00rootroot00000000000000' Gambas class file Public Sub Form_Activate() Wait 5 Desktop.Screenshot(Me.ScreenX, Me.ScreenY, Me.W, Me.H).Save("~/gambas/img/wiki/control/" &/ LCase(Object.Type(Me.Children[0])) & ".png") Me.Close End gambas-3.16.3/comp/src/gb.form/.src/Test/FWiki.form000066400000000000000000000006231411575327000216050ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,30,6) TakeFocus = False SkipTaskbar = True Margin = True { Menu1 Menu { Menu2 Menu Text = ("Menu2") } { Menu3 Menu Text = ("Menu3") } { Menu4 Menu Text = ("Menu4") } { Menu5 Menu Text = ("Menu5") } } { SpinBar1 SpinBar MoveScaled(1,1,28,4) MaxValue = 100 Step = 1 } } gambas-3.16.3/comp/src/gb.form/.src/Test/Form1.class000066400000000000000000000004651411575327000217260ustar00rootroot00000000000000' Gambas class file 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 Form_Open() Me.Center End Public Sub DateBox1_Change() Message.Question("does it pass, on debug?") End gambas-3.16.3/comp/src/gb.form/.src/Test/Form1.form000066400000000000000000000010711411575327000215560ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Vertical Spacing = True Margin = True { DateBox1 DateBox MoveScaled(17,17,24,4) } { ColorButton1 ColorButton MoveScaled(22,28,9,6) } { HBox1 HBox MoveScaled(1,59,62,4) Spacing = True { Panel1 Panel MoveScaled(4,0,4,4) Expand = True } { btnOK Button MoveScaled(29,0,16,4) Text = ("OK") Default = True } { btnCancel Button MoveScaled(46,0,16,4) Text = ("Cancel") Cancel = True } } } gambas-3.16.3/comp/src/gb.form/.src/Test/Form2.class000066400000000000000000000020271411575327000217230ustar00rootroot00000000000000' Gambas class file Public Sub ButtonBox1_Click() Debug End Public Sub HSplit1_Resize() Debug Panel1.X;; Panel1.Y;; Panel1.W;; Panel1.H End Public Sub PictureBox1_Enter() Debug End Public Sub Button1_Enter() Debug End Public Sub Button1_Leave() Debug End Public Sub DrawingArea1_Enter() Debug End Public Sub panSelect_Enter() Debug End Public Sub panSelect_Leave() Debug End Public Sub Form_Open() Print Style.Name ButtonBox1._AddButton(ToolButton1) FileProperties1.Path = "/home/benoit" MenuButton1.SetFocus DateChooser1.MinValue = Date(Now) + 5 DateChooser1.MaxValue = Date(Now) + 200 End Public Sub Button2_Click() ButtonBox1.Border = Not ButtonBox1.Border End Public Sub Button3_Click() ComboBox1.ReadOnly = Not ComboBox1.ReadOnly End Public Sub Button1_Click() End Public Sub DateChooser1_Data({Date} As Date) If WeekDay({Date}) = gb.Sunday Then DateChooser1.Data.Foreground = Color.Red If Day({Date}) = 24 Then DateChooser1.Data.Font = Font["serif,italic"] End gambas-3.16.3/comp/src/gb.form/.src/Test/Form2.form000066400000000000000000000040431411575327000215610ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,138,77) { Panel1 Panel MoveScaled(2,2,50,32) #Translate = False Border = Border.Plain { ComboBox1 ComboBox MoveScaled(4,6,23,4) #Translate = False ReadOnly = True List = ["Élément 1", "Élément 2", "Élément 3"] } { Label1 Label MoveScaled(28,4,19,7) #Translate = False } { Button1 Button MoveScaled(7,18,13,11) #Translate = False Picture = Picture["img/colormap.png"] } { Panel3 Panel MoveScaled(24,16,22,7) #Translate = False Arrangement = Arrange.Fill Margin = True { ButtonBox1 ButtonBox MoveScaled(0,0,21,5) #Translate = False } } { ToolButton1 ToolButton MoveScaled(39,8,4,4) } { DateBox2 DateBox MoveScaled(23,26,24,4) ReadOnly = True } } { Button2 Button MoveScaled(5,0,16,4) #Translate = False Text = "toto" } { ScrollArea1 ScrollArea MoveScaled(57,2,20,11) #Translate = False Background = Color.TextBackground } { Button3 Button MoveScaled(24,0,16,4) #Translate = False } { Panel2 Panel MoveScaled(57,19,19,6) #Translate = False Background = &HFFDFDF& Arrangement = Arrange.Fill Margin = True { TextBox1 TextBox MoveScaled(0,0,18,5) } } { Panel4 Panel MoveScaled(60,27,19,6) #Translate = False Background = &HFFDFDF& Arrangement = Arrange.Fill Margin = True { TextBox2 TextBox MoveScaled(0,0,18,5) Border = False } } { DateBox1 DateBox MoveScaled(61,14,24,4) Mode = DateChooser.DateTime } { DateChooser1 DateChooser MoveScaled(6,40,66,32) Mode = DateChooser.DateTime } { FileProperties1 FileProperties MoveScaled(88,7,45,51) } { MenuButton1 MenuButton MoveScaled(93,68,18,4) Text = ("MenuButton1") } { ButtonBox2 ButtonBox MoveScaled(95,59,21,7) Text = ("ButtonBox2") } { MaskBox1 MaskBox MoveScaled(88,2,24,4) Mask = "990!.0000" } } gambas-3.16.3/comp/src/gb.form/.src/Test/Form3.class000066400000000000000000000005251411575327000217250ustar00rootroot00000000000000' Gambas class file Public Sub Button1_Click() If Panel1.Visible Then Panel1.Hide Return Endif If Panel1.Background = Color.Green Then Panel1.Background = Color.Orange Else Panel1.Background = Color.Green Endif Panel1.Show 'If Panel1.Next Then 'Panel1.Raise 'Else ' Panel1.Lower 'Endif End gambas-3.16.3/comp/src/gb.form/.src/Test/Form3.form000066400000000000000000000005201411575327000215560ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,61,66) Arrangement = Arrange.Vertical { Panel1 Panel MoveScaled(7,2,40,5) Visible = False Background = Color.Green Border = Border.Plain } { Spring1 Spring MoveScaled(28,20,4,10) } { Button1 Button MoveScaled(7,46,16,4) Text = ("Raise") } } gambas-3.16.3/comp/src/gb.form/.src/Test/Form4.class000066400000000000000000000001241411575327000217210ustar00rootroot00000000000000' Gambas class file Public Sub SpinBox1_MouseWheel() Debug 'Stop Event End gambas-3.16.3/comp/src/gb.form/.src/Test/Form4.form000066400000000000000000000003601411575327000215610ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,74,74) Background = Color.Yellow Margin = True { SliderBox1 SliderBox MoveScaled(4,12,48,4) Step = 10 } { SpinBox1 SpinBox MoveScaled(21,24,9,4) Step = 10 } } gambas-3.16.3/comp/src/gb.form/.src/TestControl.class000066400000000000000000000001671411575327000223020ustar00rootroot00000000000000' Gambas class file Inherits UserControl Private $hCal As Form4 Public Sub _new() $hCal = New Form4(Me) End gambas-3.16.3/comp/src/gb.form/.src/ToolPanel/000077500000000000000000000000001411575327000206645ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/ToolPanel/FToolBar.class000066400000000000000000000021331411575327000233620ustar00rootroot00000000000000' Gambas class file Public Function GetContainer() As Container Return panToolBar End Public Sub SetTitle(sTitle As String) btnTitle.Text = sTitle btnTitle.Height = Me.Font.Height + 4 + Style.FrameWidth * 2 'IF ME.Parent.Parent.Parent.Design THEN panToolBar.Move(0, btnTitle.H, panToolBar.W, ME.CLientH - btnTitle.H) End Public Function GetTitle() As String Return btnTitle.Text End Public Sub SetPicture(hPict As Picture) btnTitle.Picture = hPict End Public Function GetPicture() As Picture Return btnTitle.Picture End Public Function GetButtonHeight() As Integer Return btnTitle.Height End Public Sub btnTitle_Click() Dim hParent As _ToolPanelContainer = Me._Parent hParent._Change End Public Sub SetTextFont(hFont As Font) btnTitle.Font = hFont SetTitle(btnTitle.Text) End Public Sub GetTextFont() As Font Return btnTitle.Font End ' Public Sub Form_MouseWheel() ' ' Dim hToolPanel As ToolPanel = Me.Parent.Parent.Parent ' ' If Mouse.Delta < 0 Then ' Try Inc hToolPanel.Index ' Else ' Try Dec hToolPanel.Index ' Endif ' ' End ' gambas-3.16.3/comp/src/gb.form/.src/ToolPanel/FToolBar.form000066400000000000000000000004021411575327000232150ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(17.125,31,50,50) Resizable = False Arrangement = Arrange.Vertical { btnTitle Button MoveScaled(1,1,48,4) Border = False } { panToolbar Panel MoveScaled(1,5,47,43) Expand = True } } gambas-3.16.3/comp/src/gb.form/.src/ToolPanel/ToolPanel.class000066400000000000000000000134461411575327000236200ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Count{Range:1;256}=1,Index,Text,TextFont,Picture,Animated,Border" Public Const _Similar As String = "TabStrip" Public Const _IsMultiContainer As Boolean = True Public Const _DefaultText As String = "Toolbar &1" Event Click Property Count As Integer Property Index As Integer Property Text As String Property Picture As Picture Property Animated As Boolean Property Font As Font Property TextFont As Font Property Border As Boolean Private $hWatcher As Watcher Private $aToolBar As New _ToolPanelContainer[] Private $iCurrent As Integer Private $bAnimate As Boolean Private $hPanel As Panel Private $hTimer As Timer Private $aTargetY As Integer[] Public Sub _new() $hPanel = New Panel(Me) $hWatcher = New Watcher($hPanel) As "ToolPanel" Me._Container = $hPanel Me.Count = 1 Me.Index = 0 End Private Function Count_Read() As Integer Return $aToolBar.Count End Private Sub Count_Write(iCount As Integer) Dim iInd As Integer Dim hToolbar As _ToolPanelContainer Dim hFont As Font If iCount < 1 Then Error.Raise("Bad argument") If iCount = $aToolbar.Count Then Return If iCount < $aToolBar.Count Then For iInd = $aToolBar.Max To iCount Step -1 hToolbar = $aToolBar[iInd] If hToolbar._Container.Children.Count Then Error.Raise("ToolPanel container is not empty") Next For iInd = $aToolBar.Max To iCount Step -1 $aToolBar[iInd].Delete Next $aToolBar.Remove(iCount, -1) Index_Write(Min($iCurrent, iCount - 1)) Else 'hCont = ME.Container 'ME.Container = $hPanel Try hFont = $aToolBar[0].TextFont For iInd = $aToolBar.Count To iCount - 1 hToolbar = New _ToolPanelContainer($hPanel) As "ToolPanelContainer" hToolbar.Width = Me.Width hToolbar.Text = Subst(_DefaultText, CInt(iInd + 1)) hToolBar.Tag = iInd hToolBar.TextFont = hFont $aToolBar.Add(hToolbar) Next 'ME.Container = hCont 'ME.Index = iCount - 1 Index_Write(iCount - 1) Endif End Private Function Index_Read() As Integer Return $iCurrent End Private Sub Index_Write(iIndex As Integer) If iIndex < 0 Or iIndex >= $aToolBar.Count Then Error.Raise("Bad index") Me._Container = $aToolBar[iIndex] $iCurrent = iIndex MoveToolbar(Me.Visible) End Private Sub MoveToolbar(Optional bAnim As Boolean) Dim hToolBar As _ToolPanelContainer Dim Y As Integer Dim YY As Integer Dim iInd As Integer Dim iRest As Integer Dim bCurrent As Boolean Dim BH As Integer If bAnim Then If Not $bAnimate Or If Not Application.Animations Or If Me.Design Then bAnim = False Endif Endif If bAnim Then $aTargetY = New Integer[$aToolbar.Count] Endif Y = $hPanel.ClientY For iInd = 0 To $aToolBar.Max hToolBar = $aToolBar[iInd] If Not hToolbar.Visible Then Continue hToolBar._Container.Visible = True If iInd = $iCurrent Then BH = $aToolBar[0]._GetButtonHeight() YY = $hPanel.ClientY + Max($hPanel.ClientH, BH * $aToolBar.Count + BH + Desktop.Scale * 8) For iRest = iInd + 1 To $aToolBar.Max If Not $aToolBar[iRest].Visible Then Continue YY -= BH Next Else YY = Y + hToolbar._GetButtonHeight() Endif If bAnim Then $aTargetY[iInd] = Y Else hToolBar.Move($hPanel.ClientX, Y, $hPanel.ClientW, YY - Y) Endif Y = YY Next If bAnim Then If Not $hTimer Then $hTimer = New Timer As "Animate" $hTimer.Delay = 20 Endif $hTimer.Restart Endif For iInd = 0 To $aToolBar.Max hToolBar = $aToolBar[iInd] bCurrent = iInd = $iCurrent hToolBar._Container.Visible = bCurrent Next End Public Sub Animate_Timer() Dim bAnim As Boolean Dim iInd As Integer Dim hToolBar As _ToolPanelContainer Dim Y As Integer Dim YY As Integer YY = $hPanel.ClientH For iInd = $aToolBar.Max DownTo 0 hToolBar = $aToolBar[iInd] If Not hToolbar.Visible Then Continue Y = hToolbar.Y If Y <> $aTargetY[iInd] Then bAnim = True Y += ($aTargetY[iInd] - Y + Sgn($aTargetY[iInd] - Y)) \ 2 hToolBar.Move($hPanel.ClientX, Y, hToolbar.W, YY - Y) Endif YY = Y Next If Not bAnim Then Stop Event End Private Function Text_Read() As String Return $aToolBar[$iCurrent].Text End Private Sub Text_Write(sText As String) $aToolBar[$iCurrent].Text = sText End Private Function Picture_Read() As Picture Return $aToolBar[$iCurrent].Picture End Private Sub Picture_Write(hPict As Picture) $aToolBar[$iCurrent].Picture = hPict End Public Sub ToolPanelContainer__Change() Index_Write(Last.Tag) Raise Click End Public Sub ToolPanel_Resize() MoveToolbar End Private Function Animated_Read() As Boolean Return $bAnimate End Private Sub Animated_Write(bAnim As Boolean) $bAnimate = bAnim End Public Function _get(Index As Integer) As _ToolPanelContainer If Index < 0 Or Index >= $aToolBar.Count Then Error.Raise("Bad index") Return $aToolBar[Index] End Private Function Font_Read() As Font Return Super.Font End Private Sub Font_Write(hFont As Font) Dim hToolbar As _ToolPanelContainer Super.Font = hFont For Each hToolbar In $aToolbar hToolBar.Text = hToolBar.Text Next MoveToolBar(False) End Private Function Border_Read() As Boolean Return $hPanel.Border <> Border.None End Private Sub Border_Write(bBorder As Boolean) $hPanel.Border = If(bBorder, Border.Plain, Border.None) MoveToolbar(False) End Private Function TextFont_Read() As Font Dim hToolbar As _ToolPanelContainer = $aToolBar[0] Return hToolBar.GetTextFont() End Private Sub TextFont_Write(Value As Font) Dim hToolbar As _ToolPanelContainer For Each hToolbar In $aToolbar hToolBar.TextFont = Value Next MoveToolBar(False) End gambas-3.16.3/comp/src/gb.form/.src/ToolPanel/_ToolPanelContainer.class000066400000000000000000000033471411575327000256210ustar00rootroot00000000000000' Gambas class file ''' This virtual class represents a [../toolpanel] tab. Export Inherits UserControl Event _Change '' Return or set the tab title. Property Text As String '' Return or set if the font of the tab title. '' '' If this property is 'NULL' (the default), then the font of the ToolPanel control is used. Property TextFont As Font '' Return or set the tab icon. Property Picture As Picture '' Return or set if the tab is visible. Property Visible As Boolean '' Return the actual internal container of the tab. Property Read Container As Container Private frmContainer As FToolBar Public Sub _new() frmContainer = New FToolBar(Me) Me._Container = frmContainer.GetContainer() 'Object.Attach(frmContainer, ME, "ToolBar") End Public Function _GetButtonHeight() As Integer Return frmContainer.GetButtonHeight() End Private Function Text_Read() As String Return frmContainer.GetTitle() End Private Sub Text_Write(sText As String) frmContainer.SetTitle(sText) End Private Function Picture_Read() As Picture Return frmContainer.GetPicture() End Private Sub Picture_Write(hPict As Picture) frmContainer.SetPicture(hPict) End Public Sub _Change() Raise _Change End Private Function Visible_Read() As Boolean Return Super.Visible End Private Sub Visible_Write(Value As Boolean) Dim hToolPanel As ToolPanel If Value = Super.Visible Then Return Super.Visible = Value hToolPanel = Me.Parent.Parent hToolPanel.ToolPanel_Resize End Private Function TextFont_Read() As Font Return frmContainer.GetTextFont() End Private Sub TextFont_Write(Value As Font) frmContainer.SetTextFont(Value) End Private Function Container_Read() As Container Return frmContainer.GetContainer() End gambas-3.16.3/comp/src/gb.form/.src/URLLabel.class000066400000000000000000000036241411575327000214250ustar00rootroot00000000000000' Gambas class file Export Inherits Label Public Const _Properties As String = "*,Link" 'Public Const _DefaultSize As String = "24,4" Public Const _DefaultEvent As String = "Click" Event Click Property Link As String Property Visited As Boolean Property Foreground As Integer Property Text As String Private $bVisited As Boolean Private $sText As String Private $sLink As String Private $iMouse As Integer Private $hObs As Observer Public Sub _new() $hObs = New Observer(Me) As "Label" UpdateLabel End Private Function Visited_Read() As Boolean Return $bVisited End Private Sub UpdateLabel() Super.Foreground = If($bVisited, Color.VisitedForeground, Color.LinkForeground) If $sText Then Super.Text = $sText Else Super.Text = $sLink Endif End Private Sub Visited_Write(Value As Boolean) $bVisited = Value UpdateLabel End Public Sub Label_Enter() $iMouse = Me.Mouse If Not Me.Design And If Me.Enabled Then Me.Mouse = Mouse.Pointing End Public Sub Label_Leave() Me.Mouse = $iMouse End Public Sub Label_MouseDown() Dim bStop As Boolean Dim sLink As String If Me.Design Then Return If Not Me.Enabled Then Return bStop = Raise Click If bStop Then Return $bVisited = True UpdateLabel sLink = $sLink If Not sLink Then sLink = $sText If sLink Like "*://*" And If Component.IsLoaded("gb.desktop") Then Desktop.Open(sLink) Endif End Private Function Link_Read() As String Return $sLink End Private Sub Link_Write(Value As String) If Me.Tooltip = $sLink Then Me.Tooltip = Value $sLink = Value UpdateLabel End Private Function Foreground_Read() As Integer Return Super.Foreground End Private Sub Foreground_Write((Value) As Integer) ' Ignore explicit foreground End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value UpdateLabel End gambas-3.16.3/comp/src/gb.form/.src/ValueBox.class000066400000000000000000000174341411575327000215540ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Text,Alignment{Align.Normal;Left;Center;Right}=Normal,Type{ValueBox.*}=Number,ReadOnly,Border=True" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "TextBox" Event Change Property Type As Integer Property Value As Variant Property Border As Boolean Property ReadOnly As Boolean Property Text As String Property Alignment As Integer Public Enum {Number}, {Date}, {Time}, Currency, DateTime, IPAddress Private $iType As Integer Private $hCtrl As Control Private $hTextBox As TextBox Private $hDateBox As DateBox Private $hMaskBox As MaskBox Private $sDecimalSep As String Private $sLastText As String Public Sub _new() UpdateType End Private Function Type_Read() As Integer Return $iType End Private Sub Type_Write(Value As Integer) If Value = $iType Then Return $iType = Value UpdateType End Private Sub UpdateType() Dim sMask As String Dim bBorder As Boolean = True Dim bReadOnly As Boolean If $hCtrl Then bBorder = Border_Read() bReadOnly = ReadOnly_Read() Me.Proxy = Null $hCtrl.Delete $hCtrl = Null $hTextBox = Null $hDateBox = Null $hMaskBox = Null Endif Select Case $iType Case {Number} $hTextBox = New TextBox(Me) As "NumberBox" $hCtrl = $hTextBox $hTextBox.Text = "0" $sDecimalSep = Left$(Format$(0, ".0")) Case {Date} $hDateBox = New DateBox(Me) As "DateBox" $hCtrl = $hDateBox Case {Time} $hDateBox = New DateBox(Me) As "DateBox" $hDateBox.Mode = DateChooser.TimeOnly $hCtrl = $hDateBox Case Currency $hMaskBox = New MaskBox(Me) As "CurrencyBox" $hCtrl = $hMaskBox $sDecimalSep = Left$(Format$(0, ".0")) sMask = Replace(Format(10, "$#0.00"), "1", "########") $hMaskBox.Mask = Replace(sMask, $sDecimalSep, " $hTextBox.Text Then $hTextBox.Text = sText Endif $hTextBox.Pos = Max(If(bNeg, 1, 0), iPos) Object.Unlock($hTextBox) If $hTextBox.Text <> $sLastText Then $sLastText = $hTextBox.Text Raise Change Endif End Private Function Value_Read() As Variant Select Case $iType Case {Number} Return Val($hTextBox.Text) Case {Date}, {DateTime}, {Time} Return $hDateBox.Value Case {Currency} Return Val(Trim(Replace($hMaskBox.Text, GetCurrency(), ""))) Case IpAddress Return Replace($hMaskBox.Text, " ", "") End Select End Private Sub Value_Write(Value As Variant) Dim sText As String Dim sVal As String Dim iVal As Integer Dim aText As String[] Select Case $iType Case {Number} If TypeOf(Value) = gb.String Then Try Value = CFloat(Value) Endif If TypeOf(Value) > gb.Boolean And If TypeOf(Value) <= gb.Float Then Value = CFloat(Value) $hTextBox.Text = Str(Value) $hTextBox.Pos = $hTextBox.Length Else $hTextBox.Text = "" Endif Case {Date}, {DateTime}, {Time} $hDateBox.Value = Value Case {Currency} If TypeOf(Value) = gb.String Then Try Value = CFloat(Value) Endif If TypeOf(Value) > gb.Boolean And If TypeOf(Value) <= gb.Float Then Value = CFloat(Value) Else Value = 0 Endif $hMaskBox.Text = Format(Value, "$########0.00") $hMaskBox.Pos = $hMaskBox.Length - 2 Case IpAddress If TypeOf(Value) = gb.String Or If IsNull(Value) Then aText = Split(Value, ".") While aText.Count < 4 aText.Add("0") Wend aText.Resize(4) For Each sVal In aText Try iVal = CInt(sVal) If Error Then Return If iVal < 0 Or If iVal > 255 Then Return If sText Then sText &= "." sText &= Format(iVal, "##0") Next $hMaskBox.Text = sText Endif End Select End Private Function Border_Read() As Boolean Dim hCtrl As Object = $hCtrl Try Return hCtrl.Border End Private Sub Border_Write(Value As Boolean) Dim hCtrl As Object = $hCtrl Try hCtrl.Border = Value End Private Function ReadOnly_Read() As Boolean Dim hCtrl As Object = $hCtrl Try Return hCtrl.ReadOnly End Private Sub ReadOnly_Write(Value As Boolean) Dim hCtrl As Object = $hCtrl Try hCtrl.ReadOnly = Value End Private Function Text_Read() As String Dim hCtrl As Object = $hCtrl Return hCtrl.Text End Private Sub GetCurrency() As String Return Trim(Replace(Format(1, "$#"), "1", "")) End Private Sub Text_Write(Value As String) Select Case $iType Case {Number} If IsNumber(Value) Then Value_Write(Val(Value)) Else Value_Write(0) Endif Case {Date}, {Time}, DateTime If IsDate(Value) Then Value_Write(Val(Value)) Else Value_Write(Null) Endif Case Currency Value = Trim(Replace(Value, GetCurrency(), "")) If IsNumber(Value) Then Value_Write(Val(Value)) Else Value_Write(0) Endif Case IPAddress Value_Write(Value) End Select End Public Sub DateBox_Change() Raise Change End Public Sub CurrencyBox_Change() Raise Change End Public Sub IpAddressBox_Change() Raise Change End Private Function Alignment_Read() As Integer Dim hCtrl As Object = $hCtrl Try Return hCtrl.Alignment Return Align.Normal End Private Sub Alignment_Write(Value As Integer) Dim hCtrl As Object = $hCtrl Try hCtrl.Alignment = Value End gambas-3.16.3/comp/src/gb.form/.src/Wizard/000077500000000000000000000000001411575327000202275ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/.src/Wizard/FWizard.class000066400000000000000000000042301411575327000226230ustar00rootroot00000000000000' Gambas class file Event Previous Event {Next} Event Cancel Public Sub btnPrevious_Click() Raise Previous End Public Sub btnNext_Click() Raise {Next} End Public Sub btnCancel_Click() Raise Cancel End Public Function GetContainer() As Container Return panWizard End Private Sub UpdateTitle() Dim H As Integer Dim hPict As Picture H = panTitle.Font.Height hPict = picTitle.Picture If hPict Then H = Max(H, hPict.Height) picTitle.Width = hPict.Width panTitle.Indent = False Else panTitle.Indent = True Endif H += panTitle.Padding * 2 + 4 panTitle.Height = H End Public Sub SetTitle(sText As String, hPict As Picture) lblTitle.Text = sText picTitle.Picture = hPict picTitle.Visible = hPict UpdateTitle End Public Sub UpdateActionButton() Dim hWizard As Wizard = Me.Parent If hWizard.ActionPicture Then btnNext.Picture = hWizard.ActionPicture Else btnNext.Picture = Null Endif If hWizard.ActionText Then btnNext.Text = hWizard.ActionText Else btnNext.Text = ("OK") Endif btnNext.Default = True End Public Sub SetPosition((iPos) As Integer, bPrevious As Boolean, bNext As Boolean) btnPrevious.Enabled = bPrevious If bNext Then btnNext.Text = ("&Next") btnNext.Picture = Picture["icon:/small/forward"] btnNext.Default = False Else UpdateActionButton Endif btnNext.AutoResize = True btnNext.AutoResize = False btnNext.W = Max(btnNext.W, btnCancel.W) End Public Sub SetShowTitle(bShow As Boolean) panTitle.Visible = bShow End Public Sub GetShowTitle() As Boolean Return panTitle.Visible End Public Sub SetBorder(bOn As Boolean) panWizard.Border = If(bOn, Border.Plain, Border.None) 'panWizard.Padding = If(bOn, 2, 0) End Public Sub GetBorder() As Boolean Return panWizard.Border <> Border.None End Public Sub GetTextFont() As Font Return panTitle.Font End Public Sub SetTextFont(hFont As Font) panTitle.Font = hFont UpdateTitle End Public Sub SetShowButton(bShow As Boolean) panButton.Visible = bShow End Public Sub GetShowButton() As Boolean Return panButton.Visible End gambas-3.16.3/comp/src/gb.form/.src/Wizard/FWizard.form000066400000000000000000000020451411575327000224630ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(48.125,29,66,50) Resizable = False Arrangement = Arrange.Vertical Spacing = True { panTitle Panel MoveScaled(1,1,61,6) Arrangement = Arrange.Horizontal Spacing = True Margin = True Padding = 4 Border = Border.Plain { picTitle PictureBox MoveScaled(1,1,4,4) Alignment = Align.Center } { lblTitle Label MoveScaled(9,1,37,4) Expand = True } } { panWizard Panel MoveScaled(1,8,61,30) Expand = True Arrangement = Arrange.Fill Border = Border.Plain } { panButton HBox MoveScaled(1,40,59,4) Spacing = True Invert = True { btnCancel Button MoveScaled(40,0,17,4) Text = ("Cancel") Cancel = True } { btnNext Button MoveScaled(22,0,17,4) Text = Shortcut(("Next"), "N") Picture = Picture["icon:/small/forward"] } { btnPrevious Button MoveScaled(4,0,17,4) Text = Shortcut(("Previous"), "P") Picture = Picture["icon:/small/rewind"] } } } gambas-3.16.3/comp/src/gb.form/.src/Wizard/Wizard.class000066400000000000000000000172671411575327000225330ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Count{Range:1;256}=1,Index,Text,TextFont,Picture,ShowTitle=True,ShowIndex=False,ShowButton=True,Border=True,ActionText,ActionPicture" Public Const _DefaultEvent As String = "Change" Public Const _Similar As String = "TabStrip" Public Const _IsMultiContainer As Boolean = True Event BeforeChange Event Change Event Cancel Event Click Event {Close} Property Count As Integer Property Index As Integer Property Read LastIndex As Integer Property Text As String Property Picture As Picture Property ShowTitle As Boolean Property ShowIndex As Boolean Property Border As Boolean Property TextFont As Font Property ActionText As String Property ActionPicture As Picture Property Animated As Boolean Property ShowButton As Boolean Private $hWizard As FWizard Private $aStep As New _WizardContainer[] Private $iCurrent As Integer = -1 Private $iLast As Integer = -1 Private $bShowIndex As Boolean Private $sActionText As String Private $hActionPicture As Picture Private $iAllowAnimation As Integer Static Private $bDeprecated As Boolean Public Sub _new() $hWizard = New FWizard(Me) As "Wizard" 'Object.Attach($hWizard, Me, "Wizard") Me.Count = 1 'ME.Index = 0 End Private Function Count_Read() As Integer Return $aStep.Count End Private Sub Count_Write(iCount As Integer) Dim iInd As Integer Dim hStep As _WizardContainer If iCount < 1 Then Error.Raise("Bad argument") If iCount = $aStep.Count Then Return If iCount < $aStep.Count Then For iInd = $aStep.Max To iCount Step -1 hStep = $aStep[iInd] If hStep.Children.Count Then Error.Raise("Wizard step is not empty") Next For iInd = $aStep.Max To iCount Step -1 $aStep[iInd].Delete Next $aStep.Remove(iCount, -1) Index_Write(Min($iCurrent, $aStep.Max)) Else For iInd = $aStep.Count To iCount - 1 hStep = New _WizardContainer($hWizard.GetContainer()) As "WizardContainer" hStep.Tag = iInd $aStep.Add(hStep) hStep.Text = Subst(("Step #&1"), CInt(iInd + 1)) Next 'ME.Index = iCount - 1 Index_Write(0) Endif End Private Sub GetNext(iInd As Integer) As Integer Do Inc iInd If iInd >= $aStep.Count Then Return -1 If $aStep[iInd].Enabled Then Return iInd Loop End Private Sub GetPrevious(iInd As Integer) As Integer Do Dec iInd If iInd < 0 Then Return -1 If $aStep[iInd].Enabled Then Return iInd Loop End Private Function Index_Read() As Integer Return $iCurrent End Private Sub DoAnimate(iSrc As Integer, iDest As Integer) Dim fTime As Float Dim hCont As Container Dim hSrc As _WizardContainer Dim hDest As _WizardContainer Dim Y As Integer Y = If($hWizard.GetBorder(), 1, 0) hCont = $hWizard.GetContainer() hSrc = $aStep[iSrc] hDest = $aStep[iDest] hSrc.Show hDest.Show hSrc.Ignore = True hDest.Ignore = True If iDest > iSrc Then hDest.Move(hCont.W, Y) fTime = Timer While hDest.X > 0 hDest.X = Max(0, hCont.W * (1 - (Timer - fTime) * 8)) hSrc.X = hDest.X - hCont.W Wait Wend Else hDest.Move(-hCont.W, Y) fTime = Timer While hDest.X < 0 hDest.X = Min(0, -hCont.W * (1 - (Timer - fTime) * 8)) hSrc.X = hDest.X + hCont.W Wait Wend Endif hDest.Raise hSrc.Ignore = False hDest.Ignore = False End Private Sub Index_Write(iIndex As Integer) Dim bCancel As Boolean Dim bWasNext As Boolean If iIndex < 0 Or iIndex >= $aStep.Count Then Error.Raise("Bad index") If iIndex = $iCurrent Then Return If Not $aStep[iIndex].Enabled Then Return If iIndex > $iCurrent Then bWasNext = iIndex = GetNext($iCurrent) bCancel = Raise BeforeChange If bCancel Then Return If bWasNext Then iIndex = GetNext($iCurrent) If iIndex < 0 Then Return Endif Endif If Application.Animations And If $iAllowAnimation Then DoAnimate($iCurrent, iIndex) Me._Container = $aStep[iIndex] $iLast = $iCurrent $iCurrent = iIndex RefreshWizard Raise Change Raise Click End Private Sub GetEnabledIndex(iCurrent As Integer) As Integer Dim iCount As Integer Dim iIndex As Integer iIndex = -1 Do iIndex = GetNext(iIndex) If iIndex > iCurrent Then Return Inc iCount If iIndex = iCurrent Then Return iCount Loop End Public Sub Update() RefreshWizard() End Private Sub RefreshWizard() Dim hCurrent As _WizardContainer Dim iIndex As Integer Dim sText As String If $iCurrent >= 0 Then hCurrent = $aStep[$iCurrent] hCurrent.Show hCurrent.Raise sText = hCurrent.Text If $bShowIndex Then iIndex = GetEnabledIndex($iCurrent) If iIndex Then sText = CStr(iIndex) & ". " & sText Endif $hWizard.SetTitle(sText, hCurrent.Picture) $hWizard.SetPosition($iCurrent, GetPrevious($iCurrent) >= 0, GetNext($iCurrent) >= 0) 'Wait Endif If $iLast >= 0 And $iLast <= $aStep.Max Then $aStep[$iLast].Lower $aStep[$iLast].Hide Endif End Private Function Text_Read() As String Return $aStep[$iCurrent].Text End Private Sub Text_Write(sText As String) $aStep[$iCurrent].Text = sText End Private Function Picture_Read() As Picture Return $aStep[$iCurrent].Picture End Private Sub Picture_Write(hPict As Picture) $aStep[$iCurrent].Picture = hPict End Public Sub WizardContainer__Refresh() RefreshWizard End Public Function _get(Index As Integer) As _WizardContainer If Index < 0 Or Index >= $aStep.Count Then Error.Raise("Bad index") Return $aStep[Index] End Public Sub Wizard_Previous() Dim iInd As Integer = GetPrevious($iCurrent) If iInd >= 0 Then Inc $iAllowAnimation Index_Write(iInd) Dec $iAllowAnimation Endif End Public Sub MovePrevious() Wizard_Previous End Public Sub Wizard_Next() Dim iInd As Integer = GetNext($iCurrent) Dim bCancel As Boolean If iInd >= 0 Then Inc $iAllowAnimation Index_Write(iInd) Dec $iAllowAnimation Else bCancel = Raise BeforeChange If bCancel Then Return Raise {Close} Endif End Public Sub MoveNext() Wizard_Next End Public Sub Wizard_Cancel() Raise Cancel End Private Function ShowTitle_Read() As Boolean Return $hWizard.GetShowTitle() End Private Sub ShowTitle_Write(Value As Boolean) $hWizard.SetShowTitle(Value) End Private Function Border_Read() As Boolean Return $hWizard.GetBorder() End Private Sub Border_Write(Value As Boolean) $hWizard.SetBorder(Value) End Private Function LastIndex_Read() As Integer Return $iLast End Private Function ShowIndex_Read() As Boolean Return $bShowIndex End Private Sub ShowIndex_Write(Value As Boolean) $bShowIndex = Value RefreshWizard End Private Function TextFont_Read() As Font Return $hWizard.GetTextFont() End Private Sub TextFont_Write(Value As Font) $hWizard.SetTextFont(Value) End Private Function ActionText_Read() As String Return $sActionText End Private Sub ActionText_Write(Value As String) $sActionText = Value If GetNext($iCurrent) < 0 Then $hWizard.UpdateActionButton End Private Function ActionPicture_Read() As Picture Return $hActionPicture End Private Sub ActionPicture_Write(Value As Picture) $hActionPicture = Value If GetNext($iCurrent) < 0 Then $hWizard.UpdateActionButton End Private Function Animated_Read() As Boolean Return False End Private Sub Animated_Write((Value) As Boolean) If $bDeprecated Then Return Error "gb.form: Wizard.Animated is deprecated" $bDeprecated = True End Private Function ShowButton_Read() As Boolean Return $hWizard.GetShowButton() End Private Sub ShowButton_Write(Value As Boolean) $hWizard.SetShowButton(Value) End gambas-3.16.3/comp/src/gb.form/.src/Wizard/_WizardContainer.class000066400000000000000000000012471411575327000245240ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Event _Refresh Property Text As String Property Picture As Picture Property Read Container As Container Private $sText As String Private $hPict As Picture Private $hPanel As Panel Public Sub _new() $hPanel = New Panel(Me) Me._Container = $hPanel End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(sText As String) $sText = sText Raise _Refresh End Private Function Picture_Read() As Picture Return $hPict End Private Sub Picture_Write(hPict As Picture) $hPict = hPict Raise _Refresh End Private Function Container_Read() As Container Return $hPanel End gambas-3.16.3/comp/src/gb.form/img/000077500000000000000000000000001411575327000166765ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/img/16/000077500000000000000000000000001411575327000171245ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/img/16/cross.png000066400000000000000000000001631411575327000207630ustar00rootroot00000000000000PNG  IHDR7tRNS,IDATc?f8|`3v ?Ar@)J'sevIENDB`gambas-3.16.3/comp/src/gb.form/img/32/000077500000000000000000000000001411575327000171225ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/img/32/filter-menu.png000066400000000000000000000010251411575327000220550ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLпϹL2tRNSqt ~`cvpeYga {]\ IDAT8ْ͓@ Go]^sj0);I1JmA0ܳx֯yKr~~uO d RU; HkSt"=a`І)P sS +&Lrp|-)Ihl'6uӛQ{cgoGVBR.vgrkp?Yc'Ѿ$VP*ߍ+Ƨw '4wIENDB`gambas-3.16.3/comp/src/gb.form/img/32/filter.png000066400000000000000000000010061411575327000211120ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpLпϹL2tRNSqt ~`cvpeYga {]\ IDAT8͒0E,",nI|>$M _fdsmUԇ_]4Op[SZ=]Y* 00yV6 `ϚynYƼ+֤T gM,xaX/TxIe7n72tqkY5>BSǣEDॠnq 6[IENDB`gambas-3.16.3/comp/src/gb.form/img/32/warning.png000066400000000000000000000036141411575327000213010ustar00rootroot00000000000000PNG  IHDR szzSIDATXŗ]Wޱw=^l>[&ʧT(馁TV069]F|V[^{9;Hǵ[6V" + XQBƞ܇xaw5/ ~@ 4X9 z7hχ?,G{p6K#'FnN+:WȫrSa9bF>C%w.MFz33nDySbg0-b#Vkq= ~^u2Kx?WP[pIENDB`gambas-3.16.3/comp/src/gb.form/img/8/000077500000000000000000000000001411575327000170455ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/img/8/new/000077500000000000000000000000001411575327000176365ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/img/8/new/side-bottom-void.png000066400000000000000000000001651411575327000235330ustar00rootroot00000000000000PNG  IHDRdWtRNS[".IDATe˱ K`YVc@Twy2̤7@[*a [5)IENDB`gambas-3.16.3/comp/src/gb.form/img/8/new/side-bottom.png000066400000000000000000000001571411575327000225750ustar00rootroot00000000000000PNG  IHDRdWtRNS["(IDATe˱ 1+E09oJBIENDB`gambas-3.16.3/comp/src/gb.form/img/8/new/side-left.png000066400000000000000000000001601411575327000222150ustar00rootroot00000000000000PNG  IHDRdWtRNS[")IDATM108?nNkRBd(@mP-/i1om'kIENDB`gambas-3.16.3/comp/src/gb.form/img/8/new/side-right-void.png000066400000000000000000000001631411575327000233420ustar00rootroot00000000000000PNG  IHDRdWtRNS[",IDATcL  " @Dj " 0SMM}_IENDB`gambas-3.16.3/comp/src/gb.form/img/8/new/side-right.png000066400000000000000000000001601411575327000224000ustar00rootroot00000000000000PNG  IHDRdWtRNS[")IDATM1 0 |<@12*>+/Ѫ(m:ٞIENDB`gambas-3.16.3/comp/src/gb.form/img/8/new/side-top.png000066400000000000000000000001601411575327000220650ustar00rootroot00000000000000PNG  IHDRdWtRNS[")IDATe1 0ǏR3ykaJ(Z .uq7IENDB`gambas-3.16.3/comp/src/gb.form/img/8/side-bottom-void.png000066400000000000000000000001601411575327000227350ustar00rootroot00000000000000PNG  IHDRdWtRNS[")IDATeˡ 0 @ޟPKƠD4P5Q 9IENDB`gambas-3.16.3/comp/src/gb.form/img/8/side-bottom.png000066400000000000000000000001601411575327000217760ustar00rootroot00000000000000PNG  IHDRdWtRNS[")IDATe˱ 0|^ĄLuMO^H!bu IENDB`gambas-3.16.3/comp/src/gb.form/img/8/side-left.png000066400000000000000000000001611411575327000214250ustar00rootroot00000000000000PNG  IHDRdWtRNS["*IDATMA @ aӟP'AU5jA/.w$`(IENDB`gambas-3.16.3/comp/src/gb.form/img/8/side-right-void.png000066400000000000000000000001601411575327000225460ustar00rootroot00000000000000PNG  IHDRdWtRNS[")IDATM1 â ;Q%eU-(]=;IENDB`gambas-3.16.3/comp/src/gb.form/img/8/side-right.png000066400000000000000000000001551411575327000216130ustar00rootroot00000000000000PNG  IHDRdWtRNS["&IDATM1 0@}u(B3 tr2_#@+T|IENDB`gambas-3.16.3/comp/src/gb.form/img/8/side-top.png000066400000000000000000000001631411575327000212770ustar00rootroot00000000000000PNG  IHDRdWtRNS[",IDATe˱ET3.ZܺsBRT"a־b B=cdIENDB`gambas-3.16.3/comp/src/gb.form/img/colormap.png000066400000000000000000000026401411575327000212220ustar00rootroot00000000000000PNG  IHDR22?gIDAThޕZˮH ,ӍfH8yw5e3Iͬ4F:dR##AٗUgC:&I[J)GW-$G^ >f#|w92fM :0?xC֠A.~z3 -1!2RfL _V<%:c6Hʙ6RxUhYw^RϭBՆ5#>0yXs@'|, >{q&C0惲jy1o}~Ht\aqaCkuP2D9יt4ӐbEBgf W"`<3`"]iiav _\T`E#e?JȋUdc:zY&PT a;kjy$>!ȔQ|`WȫUw(ne i/(F)Sapvi9WMiN5;c=Z@,5!,DllF"TxU=җR[r1~8\$ ~DGvɊ iҊ5@c~hdw)&9L .^?+HIENDB`gambas-3.16.3/comp/src/gb.form/img/cross.png000066400000000000000000000004531411575327000205370ustar00rootroot00000000000000PNG  IHDR7IDAT(ύѱJBUp%I9w[B|}F})[  8fE=/ 578팊VHpHɣ԰n#%{bTۘk>W!ʛYJ UןvRTb7wD^1(,wwf4 fp8XQ&y2iІ6V =mj{Us+.Ǽ\U_1ֹoQElIENDB`gambas-3.16.3/comp/src/gb.form/img/handle-h.png000066400000000000000000000001461411575327000210650ustar00rootroot00000000000000PNG  IHDRnv-IDATץȱ 01ʓylos K=eq^S(2/ -IENDB`gambas-3.16.3/comp/src/gb.form/img/handle-v.png000066400000000000000000000001411411575327000210760ustar00rootroot00000000000000PNG  IHDRnv(IDATץ̡ð8φʈj< Z`@ k`ѿIENDB`gambas-3.16.3/comp/src/gb.form/img/lock.png000066400000000000000000000013241411575327000203340ustar00rootroot00000000000000PNG  IHDR pHYs+PLTEͰGpL$0tRNS~Aj x3~Rypu:z nmvTc+26`iS|?'BFEYg5?4&|aFW^IDATxn0ЁZI a{>V@Rllz}pgoo n {gX@qѡ `-פzi vc7Pc&nxEYJ_8ҝ9Oę rqd/$㔜71#?X8ukGvS42v*mdByXM?4b,PsPn_ttޑ8`ު:Nrw쿆V( #v%?;lyogM7]41mV@nv|H3 &Zٲ7M&\wT {x:K0t~`yaIENDB`gambas-3.16.3/comp/src/gb.form/img/round.png000066400000000000000000000001741411575327000205350ustar00rootroot00000000000000PNG  IHDRaV PLTEAtRNS@fIDATc`e`g` A?CzG*-[IENDB`gambas-3.16.3/comp/src/gb.form/img/select-dark.png000066400000000000000000000001601411575327000215770ustar00rootroot00000000000000PNG  IHDR77IDAT(ű wR1rV zi}h#5szD]3G"BCAIENDB`gambas-3.16.3/comp/src/gb.form/img/select.png000066400000000000000000000001621411575327000206620ustar00rootroot00000000000000PNG  IHDR79IDAT(c` [BrXrp~3LBibIENDB`gambas-3.16.3/comp/src/gb.form/img/unknown.svg000066400000000000000000000056121411575327000211220ustar00rootroot00000000000000 image/svg+xml gambas-3.16.3/comp/src/gb.form/img/valuemap.png000066400000000000000000000016011411575327000212140ustar00rootroot00000000000000PNG  IHDR6(>HIDATXWI0 REUrɜzڴH$ϟ'd2_Uw!OGh|\=2̚~=C^870޺㖙@FO_#>j A%p㯮߲:&jx{;yM($NAEϊWQBr0s/uȀC8vmᾒV&vA|v#>s1e¹8Rx|jS{wpHlg#ડH iާd{̀&7jȯ=paE8/:8 H0/KiA'蜴2@zQˆ6stkx wS`nHJRpRUAd CD KǞ)F`yn\z7[m\&+L*`ҾL$ڔ-a?8 М%a#OR0 S^m?gp0`2򹴬v.9\c:Ue =$_(E2.Ѹi)m9¾]vhizuY6'c_Āz7/}T7Bs껃qx,IgfW-_Oʵ]C6 k BH$\}# +~y$Y[(a6dBל޸)wbPUV_rrPV e)63H_ (LԔc/gq/TMiswcw$xwR}u*lfKGb -(efȅdɝ ID+}1=͛x?ѣS,HIENDB`gambas-3.16.3/comp/src/gb.form/map/000077500000000000000000000000001411575327000166775ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/map/icon.map000066400000000000000000000406771411575327000203440ustar00rootroot00000000000000access preferences/preferences-desktop-accessibility;apps/preferences-desktop-accessibility add actions/list-add agenda apps/agenda;actions/view-calendar-agenda align-bottom actions/align-vertical-bottom align-center actions/align-horizontal-center align-height actions/object-columns align-left actions/align-horizontal-left align-middle actions/align-vertical-center align-right actions/align-horizontal-right align-top actions/align-vertical-top align-width actions/object-rows apply actions/dialog-apply;actions/dialog-ok-apply archive $(mime)/package-x-generic;apps/utilities-file-archiver attach status/mail-attachment;actions/mail-attachment audio $(mime)/audio-x-generic average # battery devices/battery bicycle # brightness # blue [breeze*]actions/colors-chromablue blur # book [-breeze*]actions/address-book-new;apps/accessories-dictionary bookmark places/bookmarks;actions/bookmark-new;places/user-bookmarks bottom actions/go-bottom brush actions/draw-brush bus places/poi-bus-stop c $(mime)/text-x-csrc calculator apps/accessories-calculator calendar actions/office-calendar;apps/evolution-calendar;actions/view-pim-calendar call actions/call-start cap-butt actions/stroke-cap-butt cap-round actions/stroke-cap-round cap-square actions/stroke-cap-square camera devices/camera-photo cancel actions/dialog-cancel car places/poi-car cdrom devices/media-optical clear actions/edit-clear-locationbar-rtl;actions/edit-clear clock apps/clock;actions/chronometer clone actions/edit-clone;actions/edit-duplicate close actions/window-close cloud status/weather-cloudy color [-breeze*]actions/color-picker-grey;[breeze*]apps/preferences-desktop-color;categories/applications-graphics color-picker actions/color-picker component categories/applications-utilities;apps/nepomuk computer devices/computer connect actions/network-connect contrast # copy actions/edit-copy cpp $(mime)/text-x-c++src crop actions/image-crop;actions/transform-crop css $(mime)/text-css cut actions/edit-cut database [breeze*]places/network-server-database;apps/office-database delete actions/edit-delete desktop places/user-desktop development categories/applications-development difference # directory places/folder disconnect actions/network-disconnect down actions/go-down download [elementary]actions/media-import-audio-cd;emblems/emblem-downloads;actions/edit-download;actions/download draw-arrow actions/draw-arrow draw-circle actions/draw-circle;tools/draw-ellipse draw-line actions/draw-line draw-path actions/draw-path;tools/draw-freehand draw-polygon actions/draw-polygon draw-rectangle actions/draw-rectangle;tools/draw-rectangle draw-text actions/draw-text;tools/draw-text drink places/poi-bar earth # edit actions/document-edit;apps/accessories-text-editor eject actions/media-eject emote-crying emotes/face-crying emote-cool emotes/face-cool emote-laugh emotes/face-laugh emote-raspberry emotes/face-raspberry emote-plain emotes/face-plain emote-sad emotes/face-sad emote-happy emotes/face-smile emote-surprise emotes/face-surprise emote-uncertain emotes/face-uncertain emote-wink emotes/face-wink end actions/media-skip-forward energy apps/utilities-energy-monitor erase actions/draw-eraser error status/dialog-error exclusive # exec [breeze*]actions/run-build;actions/system-run factory # file [-breeze*]actions/document-new;$(mime)/empty;$(mime)/application-x-zerosize file-manager [-breeze*]apps/toolbar/system-file-manager;apps/system-file-manager fill actions/color-fill;tools/color-fill filter actions/view-filter find actions/edit-find firewall apps/firewall;apps/config-firewall;preferences/preferences-security-firewall;status/firewall-applet first actions/go-first flag actions/flag-red flip-h actions/object-flip-horizontal flip-v actions/object-flip-vertical floppy devices/media-floppy font [-breeze*]actions/format-text-superscript;apps/preferences-desktop-font formula actions/formula forward actions/media-seek-forward fullscreen actions/view-fullscreen gambas # game categories/applications-games;apps/preferences-desktop-gaming gamma # gnu # green [breeze*]actions/colors-chromagreen grid actions/view-grid;actions/games-config-board group [-breeze*]actions/user-group-new;apps/system-users h $(mime)/text-x-chdr halt actions/process-stop house places/poi-building harddisk devices/drive-harddisk hardware devices/audio-card headset devices/audio-headset help [breeze*]apps/system-help;apps/help-browser home actions/go-home html $(mime)/text-html hue # identity apps/user-info;preferences/preferences-desktop-user;apps/preferences-desktop-user image $(mime)/image-x-generic important emblems/emblem-important indent actions/format-indent-more info status/dialog-information insert-image actions/insert-image insert-link actions/insert-link insert-text actions/insert-text internet [-breeze*]places/folder-html;categories/applications-internet intersection # invert actions/edit-select-invert join-bevel actions/stroke-join-bevel join-miter actions/stroke-join-miter join-round actions/stroke-join-round js $(mime)/application-javascript jump actions/go-jump key [breeze*]$(mime)/application-pgp-keys;apps/password-manager;apps/keyring-manager;actions/pgp-keys keyboard preferences/preferences-desktop-keyboard;apps/preferences-desktop-keyboard lamp actions/help-hint language [-breeze*]actions/im-google-talk;apps/preferences-desktop-locale last actions/go-last layout actions/document-page-setup left actions/go-previous lightness # link emblems/emblem-symbolic-link linux # lock actions/object-locked;status/object-locked lower actions/object-ordre-lower love actions/love mail apps/evolution-mail;actions/mail-mark-unread make actions/arrow-down make-all actions/arrow-down-double marker places/poi-marker math actions/preview-math;actions/preview_math md $(mime)/text-x-markdown media-player devices/multimedia-player menu apps/alacarte;apps/kmenuedit;actions/application-menu microphone devices/audio-input-microphone monitor apps/utilities-system-monitor mouse devices/input-mouse move actions/transform-move multimedia categories/applications-multimedia muted status/audio-volume-muted network status/network-connect;places/network-workgroup new actions/document-new new-appointment actions/appointment-new new-dir actions/folder-new new-mail actions/mail-message-new new-tab actions/tab-new new-tag actions/tag-new new-window actions/window-new next actions/go-next;actions/go-next-view notification actions/notifications office $(mime)/x-office-document office-calc $(mime)/x-office-spreadsheet office-draw $(mime)/x-office-drawing office-presentation [elementary]$(mime)/application-vns.ms-powerpoint;$(mime)/x-office-presentation ok actions/dialog-ok opacity [breeze]actions/edit-opacity open actions/document-open open-recent actions/document-open-recent options actions/configure;categories/preferences-system package apps/system-software-install;apps/preferences-desktop-default-applications page actions/view-pages-single;actions/page-simple page-two actions/view-pages-facing paste actions/edit-paste pause actions/media-playback-pause pda devices/pda pdf $(mime)/application-pdf pen actions/draw-freehand people [breeze*]actions/user-group-new;apps/system-users percent actions/format-number-percent phone [-breeze*]devices/smartphone;devices/phone pin actions/pin;actions/view-pin play actions/media-playback-start plane places/poi-airport plugin [breeze*]preferences/preferences-plugin;[breeze*]apps/preferences-plugin;categories/applications-puzzles;apps/preferences-system-sharing preview actions/document-print-preview previous actions/go-previous;actions/go-previous-view print actions/document-print printer devices/printer program $(mime)/application-x-executable properties actions/document-properties question status/dialog-question;actions/svn-status quit actions/application-exit raise actions/object-ordre-raise repeat actions/media-playlist-repeat recent [breeze*]actions/appointment-new;actions/document-open-recent record actions/media-record red [breeze*]actions/colors-chromared redo actions/edit-redo refresh actions/view-refresh remove actions/list-remove rename actions/edit-rename replace actions/edit-find-replace resize actions/transform-scale restart actions/system-restart;actions/system-reboot restaurant places/poi-restaurant revert actions/document-revert rewind actions/media-seek-backward right actions/go-next rotate actions/transform-rotate rotate-left actions/object-rotate-left rotate-right actions/object-rotate-right rss actions/rss;apps/akregator saturation # save actions/document-save save-as actions/document-save-as scanner [breeze*]devices/scanner;devices/scanner science categories/applications-science screen devices/video-display script $(mime)/text-x-script security status/security-medium select actions/select-rectangular select-all actions/edit-select-all server [breeze*!16]places/server-database;places/network-server share actions/document-share;actions/send-to shortcut apps/accessories-character-map shuffle actions/media-playlist-shuffle sort-ascent actions/view-sort-ascending sort-descent actions/view-sort-descending spell-check actions/tools-check-spelling star [breeze*]actions/draw-star;status/starred start actions/media-skip-backward statistics actions/view-statistics stop actions/media-playback-stop sum # sun status/weather-clear system devices/computer table [breeze*]actions/table tablet devices/input-tablet tag actions/tag terminal apps/utilities-terminal text $(mime)/text-x-generic;$(mime)/text-plain text-baseline actions/format-align-vertical-baseline;actions/align-vertical-baseline text-bigger actions/format-font-size-more;actions/font-size-more text-bold actions/format-text-bold text-bottom actions/format-align-vertical-bottom; text-center actions/format-justify-center text-fill actions/format-justify-fill text-italic actions/format-text-italic text-left actions/format-justify-left text-lower actions/format-text-lowercase text-middle actions/format-align-vertical-center text-right actions/format-justify-right text-smaller actions/format-font-size-less;actions/font-size-less text-strike actions/format-text-strikethrough text-sub actions/format-text-subscript;actions/text-subscript text-super actions/format-text-superscript;actions/text-superscript text-top actions/format-align-vertical-top text-underline actions/format-text-underline text-upper actions/format-text-uppercase tools [elementary]categories/applications-developmenent;[breeze*]categories/applications-system;actions/applications-system;categories/applications-system top actions/go-top town places/poi-town train places/poi-railway-station transparency # trash [breeze*!16]places/user-trash;places/user-trash usb devices/media-removable;devices/drive-removable-media undo actions/edit-undo unindent actions/format-indent-less union # unlock actions/object-unlocked unselect actions/edit-select-none up actions/go-up upload [breeze*]actions/cloud-upload user [breeze*]actions/user-identity;stock/stock_person;status/avatar-default vector $(mime)/image-x-svg+xml;$(mime)/x-office-drawing video $(mime)/video-x-generic view-detail actions/view-list-details view-icon actions/view-list-icons view-normal actions/view-close view-split-h actions/view-split-left-right view-split-v actions/view-split-top-bottom view-tree actions/view-list-tree volume status/audio-volume-high vpn devices/network-vpn walk # warning status/dialog-warning watch [breeze*]actions/visibility;apps/strigi webcam devices/camera-web wifi devices/network-wireless window actions/window wizard actions/tools-wizard worship places/poi-place-of-worship wrap actions/text-wrap xml $(mime)/text-xml zoom-fit actions/zoom-fit-best zoom-in actions/zoom-in zoom-normal actions/zoom-original zoom-out actions/zoom-out zoom-width actions/zoom-fit-width gambas-3.16.3/comp/src/gb.form/stock/000077500000000000000000000000001411575327000172455ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/stock/16/000077500000000000000000000000001411575327000174735ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/stock/16/gambas.png000066400000000000000000000007511411575327000214360ustar00rootroot00000000000000PNG  IHDR(-SPLTE,*))())$)))*)) ))))))()))((())()))()))))*)))))((-"())()(**)$)t?tRNSy紓`֝f>Jiojq&MGLFwmCIDATӍ@D'` XAk_;Uv?m;)Pe9B+!dZ@r 9(`QHGB7A x9yْd|<,}xjIENDB`gambas-3.16.3/comp/src/gb.form/stock/16/gnu.png000066400000000000000000000005501411575327000207720ustar00rootroot00000000000000PNG  IHDR7/IDAT(u?H< I0N.ES[!H1trqhmG'U(ݝZ i=G݁7\JlH)o˹ߠMv6#SŞn Qթ3RGUըoɻyOtyI%G&Y3d'TqlU3z\޲#"i[bELR`ԉ5D@\TZF)=&JxjϡZ640`1!iTիS b %n\=vU-{w.oοN)?IENDB`gambas-3.16.3/comp/src/gb.form/stock/16/linux.png000066400000000000000000000011761411575327000213450ustar00rootroot00000000000000PNG  IHDR(-S pHYs+>PLTEGpL...+/0s@W)+- ,/0,,7024OSuJQ *rIDATc`}ke,j,d,o,`&O 9}mll\aNVVVnP>; D|D|Vng?KK@oaW@eX:*Z)2"LF, *.(c 0 9խ׈IENDB`gambas-3.16.3/comp/src/gb.form/stock/32/000077500000000000000000000000001411575327000174715ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.form/stock/32/gambas.png000066400000000000000000000016351411575327000214360ustar00rootroot00000000000000PNG  IHDR DePLTE(()))*)$))*+*)*)3(*)))))))))))+*)+)(*)*+)))()+*)(@())'()+)))+)+)-(())*$*)"(())))**))*)((()(*3()*)))))))))*)()($(()*)Q.vtRNS-+og澺_חpW*:IS<=e ~$PZHXUVRhn9fΫt L,2b񋊱ʤGcqIDAT8SB@.2uEkB0XgdHG5e A,UU+eŬ&RQ4wT,7R2kEpa6lSYq2nɦ?SoNo v؁Skh F(27e\KTeZ>Nb'3zexSO'wE)_/̱Ν EjuK7w25{Վ x܏RH9՞to p|?LJIENDB`gambas-3.16.3/comp/src/gb.form/stock/32/linux.png000066400000000000000000000026461411575327000213460ustar00rootroot00000000000000PNG  IHDR D pHYs+PLTEGpL)G =CC(F[[,,,T /13999...777BFJ8>>>BD?CF:>A )/'5+I2B"0',:#'&&' K4GT N֍"QQQ͇%yyy#LLLQ|$III]3\rY6**599.14&)*)+,+-/*,-U-/1045JU)))51,247@EJ448;>@*,-347,./@@I)+,-/1BFL035/14CGKCGK69;CGL15:HC;469AEI@EGBB>>7>>8;>+0?:@DH59BFI?BF2-/0&,H,.0*,.)+,135;JLN,&FR:;<')*2/+yz{냄1\\\!"":3Ϧt-o6&ߙ2ݷy?bUEE{^3ۡFY'((gfeEE&'(cP3LZ֢K/13vfP۪TGHIFGI468DFG257abdؗ8<>@77:<ڻKNQ囔g>MV;-%ZTIDAT8c` pZX捈`).I ׁA2?BM@y  M>t\RwPg̈́_rq(HdO^>.{_<}ݟ>x8iɉ/]kxsb»xX {bZsr̹x ]/u^[9-ဦ Jg!̙*{}Qtuuu.uD!o^a> sqDQ;{88s,gn^Ο9P O;vI˽IEԉ#{lX>kqy l6cF4# image/svg+xml gambas-3.16.3/comp/src/gb.form/stock/scalable/gnu.svg000066400000000000000000000740771411575327000223440ustar00rootroot00000000000000 image/svg+xml Aurelio A. Hecker <aurium@gmail.com> GNU Head gambas-3.16.3/comp/src/gb.form/stock/scalable/linux.svg000066400000000000000000000107261411575327000227010ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/000077500000000000000000000000001411575327000166545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.component000066400000000000000000000001031411575327000206510ustar00rootroot00000000000000[Component] Key=gb.gui.base Version=3.16.90 Hidden=True Needs=Form gambas-3.16.3/comp/src/gb.gui.base/.directory000066400000000000000000000000411411575327000206540ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.gui.base/.hidden/000077500000000000000000000000001411575327000201655ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.hidden/window.png000066400000000000000000000002351411575327000222020ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEࠠ```x4IDATHcP"H ()V@d F*U0`(8^QNIENDB`gambas-3.16.3/comp/src/gb.gui.base/.icon.png000066400000000000000000000116251411575327000203750ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+ZIDATxM$GZ'jzz==#FZ$kA x-$ h H\8ƍ n{͖@+!qEXY=3xk{"8dFfDVVuWUUTɈx \;G}u'lۥK1T?:rݏwRwB_bkY_?^٫w`7MSv(Ug,~濧|5eScηiYQ^_l+]B'{^h\Hm%0#߻+[}Bs61trsǭgì坖?_ǻϋ?yt{쵀@ﵻWn4ݮڨZ!vAR.eQQ!W~ةZevvҬ.#y?}օDɫ,Vj Tw^Uai]0?%f*}ZhSzw}._'ؘ}o-%Y[zMާ8`Ͷ3Zja!gE{r=>}gٯ<@0w:=WK>\h赺;EeoN%oZwǨ~R=!tG/]MGD n[ 4릟.߾-|ɭ>|X)b(V٩ebO## 8IM.}ͱl~5kx4uggos@>.%Hw{3i?&ϏwH"6bo.c\L4zE9y9_MRBz"U0'J@KHޮoErE :o|;?^+}:V;m;{Iɺn$Qf}1N,Z%$V{w ,>xR#d@*)ojm;y=cPj{G#:y|&^o>nݽ? {рNJwn*^T@I">sxz {Y`.%\T{/ y ke+bh*ՙ}ֿ|@վ<-y=쇃"ݝn Y/bwE$lSJ_$]7w\}<';}=g8WOrHqP[;pWJ&@{gXE+-qُW1ЌHFeQDTor+'}cSadOgR_/5> M20!Jr]wf8lིcrw;EC1CqzӇeW!OJ9\l0яC*4AQ>NW1a}ŊIU?* UAϠ /_&WU%ZlWWDCa(yMtߧٟsռ+F_=W;;{E>tcI?}gjU@X/Rh?t&]S/=~WÃQ^6V-Caˁij]> -}g~+S7+]EwjWn 9O}w_3 }>M_?8) HZx_Z^'S?1۷ÁXr>)t]1.𸳯Nsm^Ԇ='Wyb(6@^m؞sUT'ԛH|2_DzSW~l\+W}cʼnOkP4Y?~jޛgԶ6u1w8\c,ו!E#*lZ+3SpmI>[()h*4bO*Q>Қnac*ß*ז:7 MZVWyBtB5B=_Uo/ҿ?\IFY=`wnWd_(R$U.^;=M8ovN0J# }+7]WPU.NrK/pnTܾ5P+E^O-yvi/k]C;bNaBjx9FKRjUG(!UE@NAǧ_'ʛv^ ghe{/ {`vkϹT\l` 72HnUiuMU Sדwb[O#)K-;{b7ETonlܾ5bɸ ;F݇t-̕QCsz@uJ:裏y5zվ>zFf"H1\'f qӧw9f>@>ɰ.CJWTbu{aD7dXԍtV-8}yr_9/t،,LӾH GZ t/?5".QB(OIbZ֝=mc ]T݁IM꧗? -Vw7f{ce NxR?3P۟w*ٍESMˏ5@2Tz< hY*#βk$y |#t}(q Q4 D_=p`} |L4O AQMs͉s>*GXޢ[P1Aw$qf&y 煽}_ &ۈ@sN!mWНo*Cl";WϽrZ|@LN1a~z6`~WQo_v]Ʀ.tmlxW잁тEEEL:_v\r)4I<; cL;~_.~~Ag\p6bD㺛ᆪ~Kq4YKe&h䣅/'cN&f[&Cxf"x|Xǧ | ‹ "E?F '~W}ŝ pEE{p?wÇkEFFL@wMbz6qƯga [w4ܽ/PG8ávrab<Ѧ>P`i}}mR۟<}>O{ZjNNhOOO*,ohշ+c֖ ی_ Ӭ_GaTaTa$a0 0 0 0 0Qfz& `XZ89GKo!trpjzv`,mQ #   `a$ø0``]: F0 Ȋ &IENDB`gambas-3.16.3/comp/src/gb.gui.base/.lang/000077500000000000000000000000001411575327000176535ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.lang/de.po000066400000000000000000000016011411575327000206010ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.gui.base 3.15.90\n" "PO-Revision-Date: 2020-12-15 13:48 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Common controls and classes for GUI components" msgstr "" #: FMessage.class:34 Message.class:37 msgid "OK" msgstr "OK" #: FMessage.form:27 msgid "Copy message" msgstr "Nachricht kopieren" #: Message.class:61 msgid "Delete" msgstr "Löschen" #: Main.module:49 msgid "&1 B" msgstr "" #: Main.module:51 msgid "&1 KiB" msgstr "" #: Main.module:53 msgid "&1 MiB" msgstr "" #: Main.module:55 msgid "&1 GiB" msgstr "" #: Message.class:43 msgid "Apply" msgstr "Anwenden" #: Message.class:43 msgid "Cancel" msgstr "Abbrechen" #: Message.class:49 msgid "Yes" msgstr "Ja" gambas-3.16.3/comp/src/gb.gui.base/.lang/es.po000066400000000000000000000016041411575327000206230ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.gui.base 3.15.90\n" "PO-Revision-Date: 2020-12-15 13:48 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Common controls and classes for GUI components" msgstr "" # gb-ignore #: FMessage.class:34 Message.class:37 msgid "OK" msgstr "" #: FMessage.form:27 msgid "Copy message" msgstr "Copiar mensaje" #: Message.class:61 msgid "Delete" msgstr "Borrar" #: Main.module:49 msgid "&1 B" msgstr "" #: Main.module:51 msgid "&1 KiB" msgstr "" #: Main.module:53 msgid "&1 MiB" msgstr "" #: Main.module:55 msgid "&1 GiB" msgstr "" #: Message.class:43 msgid "Apply" msgstr "Aplicar" #: Message.class:43 msgid "Cancel" msgstr "Cancelar" #: Message.class:49 msgid "Yes" msgstr "Sí" gambas-3.16.3/comp/src/gb.gui.base/.lang/fr.po000066400000000000000000000101451411575327000206230ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.gui.base 3.15.90\n" "POT-Creation-Date: 2021-03-29 14:24 UTC\n" "PO-Revision-Date: 2020-12-15 13:48 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "Common controls and classes for GUI components" msgstr "" #: FGridView.form:34 FListBox.form:28 FTreeView.form:57 msgid "Border" msgstr "" #: FGridView.form:41 msgid "Drag me" msgstr "" #: FGridView.form:46 msgid "Selection" msgstr "" #: FGridView.form:69 FTestCombo.form:117 msgid "TextBox1" msgstr "" #: FGridView.form:76 msgid "TextArea1" msgstr "" #: FLabel.form:23 msgid " This is a Label test line" msgstr "" #: FLabel.form:31 msgid "This is a Label test line" msgstr "" #: FLabel.form:38 msgid "" "This is a Label test line\n" "with another one" msgstr "" #: FLabel.form:53 msgid "This is a TextLabel test line" msgstr "" #: FListBox.form:17 FTestCombo.form:49 msgid "Élément 1" msgstr "" #: FListBox.form:17 FTestCombo.form:49 msgid "Élément 2" msgstr "" #: FListBox.form:17 FTestCombo.form:49 msgid "Élément 3" msgstr "" #: FListBox.form:17 FTestCombo.form:49 msgid "Élément 4" msgstr "" #: FListBox.form:17 FTestCombo.form:49 msgid "Élément 5" msgstr "" #: FListBox.form:17 msgid "Élément 6" msgstr "" #: FListBox.form:17 msgid "Élément 7" msgstr "" #: FListBox.form:23 msgid "Add" msgstr "" #: FMessage.class:59 Message.class:39 msgid "OK" msgstr "OK" #: FMessage.form:33 msgid "Copy message" msgstr "Copier le message" #: FScrollArea.form:315 msgid "Button" msgstr "" #: FTestCombo.form:29 FTreeView.form:27 msgid "Menu1" msgstr "" #: FTestCombo.form:33 FTreeView.form:31 msgid "Menu2" msgstr "" #: FTestCombo.form:37 FTreeView.form:35 msgid "Menu3" msgstr "" #: FTestCombo.form:43 FTestProgressBar.form:20 msgid "Button1" msgstr "" #: FTestCombo.form:50 msgid "dhdgfhdfghdf" msgstr "" #: FTestCombo.form:60 msgid "fdsgsdg" msgstr "" #: FTestCombo.form:65 msgid "trytryertyter" msgstr "" #: FTestCombo.form:80 msgid "2" msgstr "" #: FTestCombo.form:87 msgid "bxvcbxcbc" msgstr "" #: FTestCombo.form:99 msgid "Frame" msgstr "" #: FTestCombo.form:103 msgid "tyrtyrty" msgstr "" #: FTestCombo.form:112 msgid "1" msgstr "" #: FTestCombo.form:122 msgid "Normal quoi" msgstr "" #: FTestCombo.form:127 msgid "3" msgstr "" #: FTestCombo.form:133 msgid "Index" msgstr "" #: FTestCombo.form:138 #, fuzzy msgid "Message" msgstr "Copier le message" #: FTestFileView.form:22 msgid "Toggle view" msgstr "" #: FTestFrame.form:13 msgid "gfdhgdfhfdg" msgstr "" #: FTestListView.form:11 msgid "ListView Bug Demo" msgstr "" #: FTestListView.form:19 msgid "Delete Selected Item" msgstr "" #: FTestListView.form:24 msgid "Fill List" msgstr "" #: FTestListView.form:29 msgid "Multiselect Mode" msgstr "" #: FTestMouseWheel.form:31 msgid "" "vfdg\n" "df\n" "gd\n" "fsgsdfgsdf\n" "gd\n" "fg\n" "dsfg\n" "dsf\n" "gs\n" "dfg\n" "sdf\n" "g\n" "sdf" msgstr "" #: FTestMouseWheel.form:47 msgid "ok" msgstr "" #: FTreeView.form:39 msgid "Menu4" msgstr "" #: FTreeView.form:43 msgid "Menu5" msgstr "" #: FTreeView.form:52 Message.class:63 msgid "Delete" msgstr "Supprimer" #: FTreeView.form:62 msgid "Drag" msgstr "" #: FTreeView.form:67 msgid "Reparent" msgstr "" #: FTreeView.form:72 msgid "Rename" msgstr "" #: FTreeView.form:77 msgid "Check" msgstr "" #: FileView.class:131 msgid "Name" msgstr "" #: FileView.class:133 msgid "Size" msgstr "" #: FileView.class:135 msgid "Last modified" msgstr "" #: FileView.class:1062 msgid "Cannot rename file." msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "" #: Main.module:53 msgid "&1 B" msgstr "&1 o" #: Main.module:55 msgid "&1 KiB" msgstr "&1 Kio" #: Main.module:57 msgid "&1 MiB" msgstr "&1 Mio" #: Main.module:59 msgid "&1 GiB" msgstr "&1 Gio" #: Message.class:45 msgid "Cancel" msgstr "Annuler" #: Message.class:51 msgid "Yes" msgstr "Oui" #~ msgid "Apply" #~ msgstr "Appliquer" gambas-3.16.3/comp/src/gb.gui.base/.lang/zh.po000066400000000000000000000066461411575327000206500ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.gui.base 3.15.90\n" "POT-Creation-Date: 2020-12-15 13:48 UTC\n" "PO-Revision-Date: 2020-12-15 13:48 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Common controls and classes for GUI components" msgstr "GUI组件的通用控件和类" #: FGridView.form:34 FListBox.form:28 FTreeView.form:57 msgid "Border" msgstr "" #: FGridView.form:40 msgid "Drag me" msgstr "" #: FGridView.form:46 msgid "Selection" msgstr "" #: FGridView.form:69 FTestCombo.form:101 msgid "TextBox1" msgstr "" #: FGridView.form:76 msgid "TextArea1" msgstr "" #: FListBox.form:17 FTestCombo.form:33 msgid "Élément 1" msgstr "" #: FListBox.form:17 FTestCombo.form:33 msgid "Élément 2" msgstr "" #: FListBox.form:17 FTestCombo.form:33 msgid "Élément 3" msgstr "" #: FListBox.form:17 FTestCombo.form:33 msgid "Élément 4" msgstr "" #: FListBox.form:17 FTestCombo.form:33 msgid "Élément 5" msgstr "" #: FListBox.form:17 msgid "Élément 6" msgstr "" #: FListBox.form:17 msgid "Élément 7" msgstr "" #: FListBox.form:23 msgid "Add" msgstr "" #: FMessage.class:34 Message.class:37 msgid "OK" msgstr "确定" #: FMessage.form:27 msgid "Copy message" msgstr "复制信息" #: FProgressBar.form:20 FTestCombo.form:27 msgid "Button1" msgstr "" #: FScrollArea.form:71 msgid "Button" msgstr "" #: FTestCombo.form:34 msgid "dhdgfhdfghdf" msgstr "" #: FTestCombo.form:44 msgid "fdsgsdg" msgstr "" #: FTestCombo.form:49 msgid "trytryertyter" msgstr "" #: FTestCombo.form:64 msgid "2" msgstr "" #: FTestCombo.form:71 msgid "bxvcbxcbc" msgstr "" #: FTestCombo.form:83 msgid "Frame" msgstr "" #: FTestCombo.form:87 msgid "tyrtyrty" msgstr "" #: FTestCombo.form:96 msgid "1" msgstr "" #: FTestCombo.form:106 msgid "Normal quoi" msgstr "" #: FTestCombo.form:111 msgid "3" msgstr "" #: FTestCombo.form:117 msgid "Index" msgstr "" #: FTestFileView.form:22 msgid "Toggle view" msgstr "" #: FTestMouseWheel.form:31 msgid "" "vfdg\n" "df\n" "gd\n" "fsgsdfgsdf\n" "gd\n" "fg\n" "dsfg\n" "dsf\n" "gs\n" "dfg\n" "sdf\n" "g\n" "sdf" msgstr "" #: FTestMouseWheel.form:47 msgid "ok" msgstr "" #: FTreeView.form:27 msgid "Menu1" msgstr "" #: FTreeView.form:31 msgid "Menu2" msgstr "" #: FTreeView.form:35 msgid "Menu3" msgstr "" #: FTreeView.form:39 msgid "Menu4" msgstr "" #: FTreeView.form:43 msgid "Menu5" msgstr "" #: FTreeView.form:52 Message.class:61 msgid "Delete" msgstr "删除" #: FTreeView.form:62 msgid "Drag" msgstr "" #: FTreeView.form:67 msgid "Reparent" msgstr "" #: FTreeView.form:72 msgid "Rename" msgstr "" #: FTreeView.form:77 msgid "Check" msgstr "" #: FileView.class:131 msgid "Name" msgstr "" #: FileView.class:133 msgid "Size" msgstr "" #: FileView.class:135 msgid "Last modified" msgstr "" #: FileView.class:1062 msgid "Cannot rename file." msgstr "" #: Help.module:71 msgid "A file or directory name cannot be void." msgstr "" #: Help.module:72 msgid "The '/' character is forbidden inside file or directory names." msgstr "" #: Main.module:49 msgid "&1 B" msgstr "" #: Main.module:51 msgid "&1 KiB" msgstr "&1 KB" #: Main.module:53 msgid "&1 MiB" msgstr "&1 MB" #: Main.module:55 msgid "&1 GiB" msgstr "&1 GB" #: Message.class:43 msgid "Apply" msgstr "应用" #: Message.class:43 msgid "Cancel" msgstr "取消" #: Message.class:49 msgid "Yes" msgstr "是" gambas-3.16.3/comp/src/gb.gui.base/.project000066400000000000000000000006671411575327000203340ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Common controls and classes for GUI components Startup=FTestSplit Icon=.hidden/window.png Version=3.16.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.settings Arguments=[["-style=oxygen"],["-style=qtcurve"]] Environment="GB_JIT_DEBUG=1\nGB_GUI=gb.gtk3\nLIBOVERLAY_SCROLLBAR=0\n GTK_DEBUG=interactive" TabSize=2 Translate=1 Language=en Type=Component Packager=1 DoNotTranslate=".src/Test" gambas-3.16.3/comp/src/gb.gui.base/.src/000077500000000000000000000000001411575327000175215ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/Action.class000066400000000000000000000242711411575327000217730ustar00rootroot00000000000000' Gambas class file Export Static Private $aVoid As New Object[] Static Private $cControls As New Collection(gb.IgnoreCase) Static Private $cLock As New Collection Static Private $iGlobalLock As Integer Static Property Read Keys As String[] Property Enabled As Boolean Property Visible As Boolean Property Tooltip As String Property Text As String Property Picture As Picture Property Value As Boolean Property Shortcut As String Property Read HasShortcut As Boolean Property Read Controls As Object[] 'Property Icon As Picture Private $sKey As String Private $aKey As String[] Private $hParent As Control Static Private Sub IsToggle(hCtrl As Object) As Boolean If hCtrl Is Menu And If hCtrl.Toggle Then Return True If hCtrl Is ToggleButton Then Return True If hCtrl Is ToolButton And If hCtrl.Toggle Then Return True If hCtrl Is Window Then Return True If hCtrl Is CheckBox Then Return True If Object.Type(hCtrl) = "SidePanel" Then Return True If Object.Type(hCtrl) = "ToolBar" Then Return True End Static Private Sub GetToggle(hCtrl As Object) As Boolean If hCtrl Is Menu And If hCtrl.Toggle Then Return hCtrl.Checked If hCtrl Is ToggleButton Then Return hCtrl.Value If hCtrl Is ToolButton And If hCtrl.Toggle Then Return hCtrl.Value If hCtrl Is Window Then Return hCtrl.Visible If hCtrl Is CheckBox Then Return hCtrl.Value = CheckBox.True If Object.Type(hCtrl) = "SidePanel" Then Return Not hCtrl.Hidden If Object.Type(hCtrl) = "ToolBar" Then Return Not hCtrl.Hidden End Static Private Sub SetToggle(hCtrl As Object, bVal As Boolean) If hCtrl Is Menu And If hCtrl.Toggle Then hCtrl.Checked = bVal Else If hCtrl Is ToggleButton Then hCtrl.Value = bVal Else If hCtrl Is ToolButton And If hCtrl.Toggle Then hCtrl.Value = bVal Else If hCtrl Is Window Then hCtrl.Visible = bVal Else If hCtrl Is CheckBox Then hCtrl.Value = bVal Else If Object.Type(hCtrl) = "SidePanel" Then hCtrl.Hidden = Not bVal Else If Object.Type(hCtrl) = "ToolBar" Then hCtrl.Hidden = Not bVal Endif End Static Private Sub HasHandler(hForm As Object) As Boolean Dim bHasHandler As Boolean Try bHasHandler = Object.Class(hForm)["Action_Activate"].Type Return bHasHandler End Static Private Sub GetHandleWindow(hCtrl As Object) As Window Dim hCtrlWin As Window = hCtrl.Window 'RETURN hForm Do If HasHandler(hCtrlWin) Then Break Try hCtrlWin = hCtrlWin.Parent.Window If Error Then Break Loop Return hCtrlWin End Static Private Sub GetActiveWindow(hCtrl As Object) As Window Dim hForm As Window = Application.ActiveWindow Dim hCtrlWin As Window 'RETURN hForm hCtrlWin = GetHandleWindow(hCtrl) While hForm If hForm = hCtrlWin Then Return Application.ActiveWindow Try hForm = hForm.Parent.Window If Error Then Break Wend Return hCtrl.Window End Static Public Sub _Register(Control As Object, Old As String, (Key) As String) Dim aCtrl As Object[] If Not $cControls Then Return If Old = Key Then Return If Old Then aCtrl = $cControls[Old] aCtrl.Remove(aCtrl.Find(Control)) Endif If Key Then If Not $cControls.Exist(Key) Then $cControls[Key] = New Object[] Endif aCtrl = $cControls[Key] aCtrl.Add(Control) Endif End Static Public Sub Lock() Inc $iGlobalLock End Static Public Sub Unlock() $iGlobalLock = Max(0, $iGlobalLock - 1) End Static Public Sub IsLocked() As Boolean Return $iGlobalLock End Static Public Sub Raise(Control As Object) Dim hForm As Control Dim hObject As Object Dim sKey As String Dim bCont As Boolean Dim hLock As Integer[] If $iGlobalLock Then Return If Not Object.IsValid(Control) Then Error "gb.gui: warning: cannot raise action: invalid control: "; Control Error "gb.gui: "; System.Backtrace.Join("\n") Return Endif sKey = Control.Action 'DEBUG Control;; sKey If Not sKey Then Return If $cLock.Exist(sKey) Then If Object.Count($cLock[sKey]) = 2 Then 'DEBUG sKey;; "is locked" Return Endif 'DEBUG sKey;; Object.Count($cLock[sKey]) Endif hLock = New Integer[] $cLock[sKey] = hLock If IsToggle(Control) Then If Left(sKey) = "." Then Action[sKey, Object.Parent(Control)].Value = GetToggle(Control) Else Action[sKey].Value = GetToggle(Control) Endif Endif hForm = GetActiveWindow(Control) 'DEBUG "Active: ";; hForm;; Application.ActiveWindow If hForm Then While hForm If Not Object.IsValid(hForm) Then Break If Object.IsLocked(hForm) Then Break If hForm Is Window Then hObject = hForm If HasHandler(hObject) Then bCont = False bCont = hObject.Action_Activate(sKey) If Not bCont Then Break Endif Endif hForm = hForm.Parent Wend Endif $cLock[sKey] = Null ' FINALLY ' ' $cLock[sKey] = NULL ' ' CATCH ' ' DEBUG "******* "; Error.Where; ": "; Error.Text ' Error.Propagate End Static Public Sub _get((Key) As String, Optional Parent As Control) As Action ', OPTIONAL Window AS Window) AS Action Dim hAction As Action 'IF Left(Key) = "." AND IF NOT Parent THEN Error.Raise("Parent must be specified for a local action") hAction = New Action(Key, Parent) Return hAction End ' Static Private Sub IsChildOfWindow(hWindow As Window, hMain As Window) As Boolean ' ' Do ' If hWindow = hMain Then Return True ' Try hWindow = hWindow.Parent.Window ' If Error Then Return ' Loop ' ' End Static Private Sub FindKey(sPattern As String) As String[] Dim aKey As New String[] Dim aCtrl As Object[] Dim sKey As String For Each aCtrl In $cControls sKey = $cControls.Key If sKey Like sPattern Then aKey.Add(sKey) Next Return aKey End Private Function GetControls() As Object[] Dim aObj As Object[] Dim aObj2 As Object[] Dim hCtrl As Object Dim iInd As Integer Dim sKey As String If $aKey Then aObj2 = New Object[] For Each sKey In $aKey Try aObj = $cControls[sKey] If Not aObj Then Continue If Not $hParent Then aObj2.Insert(aObj) Else For Each hCtrl In aObj If Object.Parent(hCtrl) = $hParent Then aObj2.Add(hCtrl) Endif Next Endif Next aObj = aObj2 Else If $sKey Then Try aObj = $cControls[$sKey] If Not aObj Then Return $aVoid If $hParent Then aObj2 = New Object[] For Each hCtrl In aObj If Object.Parent(hCtrl) = $hParent Then aObj2.Add(hCtrl) Endif Next aObj = aObj2 Endif Else Return $aVoid Endif iInd = 0 While iInd < aObj.Count If Object.IsValid(aObj[iInd]) Then Inc iInd Else aObj.Remove(iInd) Endif Wend Return aObj End Public Sub _new((Key) As String, Parent As Control) Dim sKey As String If InStr(Key, ",") = 0 And InStr(Key, "*") = 0 Then $sKey = Key Else $aKey = New String[] For Each sKey In Split(Key, ",") If Right(sKey) = "*" Then $aKey.Insert(FindKey(sKey)) Else $aKey.Add(sKey) Endif Next Endif $hParent = Parent End Private Function Enabled_Read() As Boolean Dim hCtrl As Object For Each hCtrl In GetControls() If Not hCtrl.Enabled Then Return False Next Return True End Private Sub Enabled_Write(Value As Boolean) Dim hCtrl As Object For Each hCtrl In GetControls() hCtrl.Enabled = Value Next End Private Function Visible_Read() As Boolean Dim hCtrl As Object For Each hCtrl In GetControls() If Not hCtrl.Visible Then Return False Next Return True End Private Sub Visible_Write(Value As Boolean) Dim hCtrl As Object For Each hCtrl In GetControls() hCtrl.Visible = Value Next End Private Function Tooltip_Read() As String Dim hCtrl As Object For Each hCtrl In GetControls() If hCtrl.Tooltip Then Return hCtrl.Tooltip Next End Private Sub Tooltip_Write(Value As String) Dim hCtrl As Object For Each hCtrl In GetControls() Try hCtrl.Tooltip = Value Next End Private Function Text_Read() As String Dim hCtrl As Object Dim sText As String For Each hCtrl In GetControls() Try sText = hCtrl.Text If sText Then Return sText Next End Private Sub Text_Write(Value As String) Dim hCtrl As Object For Each hCtrl In GetControls() Try hCtrl.Text = Value Next End Private Function Picture_Read() As Picture Dim hCtrl As Object Dim hPict As Picture For Each hCtrl In GetControls() Try hPict = hCtrl.Picture If hPict Then Return hPict Next End Private Sub Picture_Write(Value As Picture) Dim hCtrl As Object For Each hCtrl In GetControls() Try hCtrl.Picture = Value Next End Private Function Value_Read() As Boolean Dim hCtrl As Object 'Debug $sKey For Each hCtrl In GetControls() 'Debug hCtrl.Name;; Object.Type(hCtrl) If IsToggle(hCtrl) Then 'Debug "-->";; GetToggle(hCtrl) Return GetToggle(hCtrl) Endif Next End Private Sub Value_Write(Value As Boolean) Dim hCtrl As Object Dim aCtrl As Object[] = GetControls() Dim cKey As New Collection For Each hCtrl In aCtrl 'Debug hCtrl;; Value If IsToggle(hCtrl) Then SetToggle(hCtrl, Value) Else cKey[hCtrl.Action] = hCtrl Endif Next For Each hCtrl In cKey Action.Raise(hCtrl) Next End Private Function Shortcut_Read() As String Dim hCtrl As Object For Each hCtrl In GetControls() If hCtrl Is Menu Then Return hCtrl.Shortcut Next End Private Sub Shortcut_Write(Value As String) Dim hCtrl As Object For Each hCtrl In GetControls() If hCtrl Is Menu Then hCtrl.Shortcut = Value Next End Private Function Controls_Read() As Object[] Return GetControls() End Static Private Function Keys_Read() As String[] Dim aKeys As New String[] For Each $cControls aKeys.Add($cControls.Key) Next Return aKeys End Private Function HasShortcut_Read() As Boolean Dim hCtrl As Object For Each hCtrl In GetControls() If hCtrl Is Menu Then Return True Next End gambas-3.16.3/comp/src/gb.gui.base/.src/Border.class000066400000000000000000000512771411575327000220010ustar00rootroot00000000000000' Gambas class file Export Public Enum Solid = 1, Dotted = 2, Dashed = 3, Double = 16 Property Width As Single Property Radius As Single Property Style As Integer Property Color As Integer Property Padding As Single Property Margin As Single Public LeftStyle As Byte = Solid Public RightStyle As Byte = Solid Public TopStyle As Byte = Solid Public BottomStyle As Byte = Solid Public LeftWidth As Single = 1 Public RightWidth As Single = 1 Public TopWidth As Single = 1 Public BottomWidth As Single = 1 Public LeftColor As Integer Public RightColor As Integer Public TopColor As Integer Public BottomColor As Integer Public TopLeftRadius As Single Public TopRightRadius As Single Public BottomLeftRadius As Single Public BottomRightRadius As Single Public LeftPadding As Single Public RightPadding As Single Public TopPadding As Single Public BottomPadding As Single Public LeftMargin As Single Public RightMargin As Single Public TopMargin As Single Public BottomMargin As Single Public SlashStyle As Byte Public BackslashStyle As Byte Public SlashColor As Integer Public BackslashColor As Integer Public SlashWidth As Single Public BackslashWidth As Single Static Private $aProp As String[] = ["width", "color", "radius", "style", "padding", "margin", "slash"] Private Const CURVE_MUL As Single = 0.44771525 Private Function Width_Read() As Single Return LeftWidth End Private Sub Width_Write(Value As Single) LeftWidth = Value RightWidth = Value TopWidth = Value BottomWidth = Value End Private Function Radius_Read() As Single Return TopLeftRadius End Private Sub Radius_Write(Value As Single) TopLeftRadius = Value TopRightRadius = Value BottomLeftRadius = Value BottomRightRadius = Value End Private Function Style_Read() As Integer Return LeftStyle End Private Sub Style_Write(Value As Integer) LeftStyle = Value RightStyle = Value TopStyle = Value BottomStyle = value End Private Function Color_Read() As Integer Return LeftColor End Private Sub Color_Write(Value As Integer) LeftColor = Value RightColor = value TopColor = Value BottomColor = value End Private Sub GetRectF(hRect As RectF, bPadding As Boolean, TopBorder As Border, BottomBorder As Border, LeftBorder As Border, RightBorder As Border) As RectF Dim LM, RM, TM, BM As Single LM = LeftMargin If LeftBorder Then LM = Max(LM, LeftBorder.RightMargin) / 2 RM = RightMargin If RightBorder Then RM = Max(RM, RightBorder.LeftMargin) / 2 TM = TopMargin If TopBorder Then TM = Max(TM, TopBorder.BottomMargin) / 2 BM = BottomMargin If BottomBorder Then BM = Max(BM, BottomBorder.TopMargin) / 2 hRect = hRect.Copy() hRect.Adjust(LM, TM, RM, BM) If bPadding Then hRect.Adjust(LeftPadding + LeftWidth, TopPadding + TopWidth, RightPadding + RightWidth, BottomPadding + BottomWidth) Return hRect End Public Sub Paint((Rect) As RectF, Optional TopBorder As Border, BottomBorder As Border, LeftBorder As Border, RightBorder As Border) Dim fWidth As Single Dim iStyle As Integer Dim iColor As Integer Dim F As Single Dim F2 As Single Dim bTop As Boolean Dim bRight As Boolean Dim bLeft As Boolean Dim bBottom As Boolean Dim bSlash As Boolean Dim bBackslash As Boolean Dim X, Y, Width, Height As Single Dim X1, Y1, X2, Y2 As Single Dim iClip As Integer Rect = GetRectF(Rect, False, TopBorder, BottomBorder, LeftBorder, RightBorder) If Rect.IsVoid() Then Return X = Rect.X Y = Rect.Y Width = Rect.W Height = Rect.H Paint.Save Paint.LineCap = Paint.LineCapSquare If TopStyle And If TopWidth Then bTop = True If BottomStyle And If BottomWidth Then bBottom = True If RightStyle And If RightWidth Then bRight = True If LeftStyle And If LeftWidth Then bLeft = True If SlashStyle And If SlashWidth Then bSlash = True If BackslashStyle And If BackslashWidth Then bBackslash = True If bTop Then If TopStyle = LeftStyle And If TopStyle = RightStyle And If TopStyle = BottomStyle Then If TopColor = LeftColor And If TopColor = RightColor And If TopColor = BottomColor Then If TopWidth = LeftWidth And If TopWidth = RightWidth And If TopWidth = BottomWidth Then iStyle = TopStyle fWidth = TopWidth iColor = TopColor GoSub DRAW_BORDER Paint.Restore Return Endif Endif Endif Paint.Save iClip = 0 If bLeft And If TopLeftRadius > TopWidth Then iClip += 1 If bRight And If TopRightRadius > TopWidth Then iClip += 2 Select Case iClip Case 0 Paint.Rectangle(X, Y, Width, TopWidth) Case 1 Paint.MoveTo(X, Y) 'Print "MoveTo:";; X;; Y Paint.LineTo(X + Width / 2, Y + Width / 2) 'Print "LineTo:";; X + Width / 2;; Y + Width / 2 Paint.LineTo(X + Width / 2, Y + TopWidth) 'Print "LineTo:";; X + Width / 2;; Y + TopWidth Paint.LineTo(X + Width, Y + TopWidth) 'Print "LineTo:";; X + Width;; Y + TopWidth Paint.LineTo(X + Width, Y) 'Print "LineTo:";; X + Width;; Y Paint.LineTo(X, Y) 'Print "LineTo:";; X;; Y Case 2 Paint.MoveTo(X, Y) Paint.LineTo(X + Width, Y) Paint.LineTo(X + Width / 2, Y + Width / 2) Paint.LineTo(X + Width / 2, Y + TopWidth) Paint.LineTo(X, Y + TopWidth) Paint.ClosePath Case 3 Paint.MoveTo(X, Y) Paint.LineTo(X + Width, Y) Paint.LineTo(X + Width / 2, Y + Width / 2) Paint.ClosePath End Select Paint.Clip Paint.Rectangle(X, Y, Width, Height - TopWidth) Paint.Clip GoSub CLIP_BORDER iStyle = TopStyle fWidth = TopWidth iColor = TopColor GoSub DRAW_BORDER Paint.Restore Endif If bRight Then Paint.Save iClip = 0 If bTop And If TopRightRadius > RightWidth Then iClip += 1 If bBottom And If BottomRightRadius > RightWidth Then iClip += 2 Select Case iClip Case 0 Paint.Rectangle(X + Width - RightWidth, Y, RightWidth, Height) Case 1 Paint.MoveTo(X + Width, Y) Paint.LineTo(X + Width - Height / 2, Y + Height / 2) Paint.LineTo(X + Width - RightWidth, Y + Height / 2) Paint.LineTo(X + Width - RightWidth, Y + Height) Paint.LineTo(X + Width, Y + Height) Paint.ClosePath Case 2 Paint.MoveTo(X + Width, Y) Paint.LineTo(X + Width, Y + Height) Paint.LineTo(X + Width - Height / 2, Y + Height / 2) Paint.LineTo(X + Width - RightWidth, Y + Height / 2) Paint.LineTo(X + Width - RightWidth, Y) Paint.ClosePath Case 3 Paint.MoveTo(X + Width, Y) Paint.LineTo(X + Width - Height / 2, Y + Height / 2) Paint.LineTo(X + Width, Y + Height) Paint.ClosePath End Select ' If bTop And If TopRightRadius > RightWidth Then ' Paint.MoveTo(X + Width - Height / 2, Y + Height / 2) ' Paint.LineTo(X + Width, Y) ' Paint.LineTo(X + Width, Y + Height / 2) ' Paint.ClosePath ' Else ' Paint.Rectangle(X + Width - RightWidth, Y, RightWidth, Height / 2) ' Endif ' ' If bBottom And If BottomRightRadius > RightWidth Then ' Paint.MoveTo(X + Width - Height / 2, Y + Height / 2) ' Paint.LineTo(X + Width, Y + Height) ' Paint.LineTo(X + Width, Y + Height / 2) ' Paint.ClosePath ' Else ' Paint.Rectangle(X + Width - RightWidth, Y + Height / 2, RightWidth, Height / 2) ' Endif Paint.Clip Paint.Rectangle(X + RightWidth, Y, Width - RightWidth, Height) Paint.Clip GoSub CLIP_BORDER iStyle = RightStyle fWidth = RightWidth iColor = RightColor GoSub DRAW_BORDER Paint.Restore Endif If bBottom Then Paint.Save iClip = 0 If bLeft And If BottomLeftRadius > BottomWidth Then Inc iClip If bRight And If BottomRightRadius > BottomWidth Then iClip += 2 Select Case iClip Case 0 Paint.Rectangle(X, Y + Height - BottomWidth, Width, BottomWidth) Case 1 Paint.MoveTo(X, Y + Height) Paint.LineTo(X + Width / 2, Y + Height - Width / 2) Paint.LineTo(X + Width / 2, Y + Height - BottomWidth) Paint.LineTo(X + Width, Y + Height - BottomWidth) Paint.LineTo(X + Width, Y + Height) Paint.ClosePath Case 2 Paint.MoveTo(X, Y + Height) Paint.LineTo(X + Width, Y + Height) Paint.LineTo(X + Width / 2, Y + Height - Width / 2) Paint.LineTo(X + Width / 2, Y + Height - BottomWidth) Paint.LineTo(X, Y + Height - BottomWidth) Paint.ClosePath Case 3 Paint.MoveTo(X, Y + Height) Paint.LineTo(X + Width / 2, Y + Height - Width / 2) Paint.LineTo(X + Width, Y + Height) Paint.ClosePath End Select ' If bLeft And If BottomLeftRadius > BottomWidth Then ' Paint.MoveTo(X + Width / 2, Y + Height - Width / 2) ' Paint.LineTo(X + Width / 2, Y + Height) ' Paint.LineTo(X, Y + Height) ' Paint.ClosePath ' Else ' Paint.Rectangle(X, Y + Height - BottomWidth, Width / 2, BottomWidth) ' Endif ' ' If bRight And If BottomRightRadius > BottomWidth Then ' Paint.MoveTo(X + Width / 2, Y + Height - Width / 2) ' Paint.LineTo(X + Width / 2, Y + Height) ' Paint.LineTo(X + Width, Y + Height) ' Paint.ClosePath ' Else ' Paint.Rectangle(X + Width / 2, Y + Height - BottomWidth, Width / 2, BottomWidth) ' Endif Paint.Clip Paint.Rectangle(X, Y + BottomWidth, Width, Height - BottomWidth) Paint.Clip GoSub CLIP_BORDER iStyle = BottomStyle fWidth = BottomWidth iColor = BottomColor GoSub DRAW_BORDER Paint.Restore Endif If bLeft Then Paint.Save iClip = 0 If bTop And If TopLeftRadius > LeftWidth Then Inc iClip If bBottom And If BottomLeftRadius > LeftWidth Then iClip += 2 Select Case iClip Case 0 Paint.Rectangle(X, Y, LeftWidth, Height) Case 1 Paint.MoveTo(X, Y) Paint.LineTo(X + Height / 2, Y + Height / 2) Paint.LineTo(X + LeftWidth, Y + Height / 2) Paint.LineTo(X + LeftWidth, Y + Height) Paint.LineTo(X, Y + Height) Paint.ClosePath Case 2 Paint.MoveTo(X, Y) Paint.LineTo(X, Y + Height) Paint.LineTo(X + LeftWidth, Y + Height) Paint.LineTo(X + LeftWidth, Y + Height / 2) Paint.LineTo(X + Height / 2, Y + Height / 2) Paint.ClosePath Case 3 Paint.MoveTo(X, Y) Paint.LineTo(X + Height / 2, Y + Height / 2) Paint.LineTo(X, Y + Height) Paint.ClosePath End Select ' If bTop And If TopLeftRadius > LeftWidth Then ' Paint.MoveTo(X + Height / 2, Y + Height / 2) ' Paint.LineTo(X, Y) ' Paint.LineTo(X, Y + Height / 2) ' Paint.ClosePath ' Else ' Paint.Rectangle(X, Y, LeftWidth, Height / 2) ' Endif ' ' If bBottom And If BottomLeftRadius > LeftWidth Then ' Paint.MoveTo(X + Height / 2, Y + Height / 2) ' Paint.LineTo(X, Y + Height) ' Paint.LineTo(X, Y + Height / 2) ' Paint.ClosePath ' Else ' Paint.Rectangle(X, Y + Height / 2, LeftWidth, Height / 2) ' Endif Paint.Clip Paint.Rectangle(X, Y, Width - LeftWidth, Height) Paint.Clip GoSub CLIP_BORDER iStyle = LeftStyle fWidth = LeftWidth iColor = LeftColor GoSub DRAW_BORDER Paint.Restore Endif If bSlash Or If bBackslash Then Paint.Save PaintRoundRectangle(X, Y, Width, Height, TopLeftRadius, TopRightRadius, BottomLeftRadius, BottomRightRadius, True) If bSlash Then X1 = X Y1 = Y + Height X2 = X + Width Y2 = Y iStyle = SlashStyle fWidth = SlashWidth iColor = SlashColor GoSub DRAW_LINE Endif If bBackslash Then X1 = X Y1 = Y X2 = X + Width Y2 = Y + Height iStyle = BackslashStyle fWidth = BackslashWidth iColor = BackslashColor GoSub DRAW_LINE Endif Paint.Restore Endif Paint.Restore Return CLIP_BORDER: PaintRoundRectangle(X, Y, Width, Height, TopLeftRadius, TopRightRadius, BottomLeftRadius, BottomRightRadius, True) Return INIT_STYLE: Paint.Background = iColor Select Case iStyle And 15 Case Dotted Paint.Dash = [0, 2] Case Dashed Paint.Dash = [3, 2] Case Else Paint.Dash = Null End Select If iStyle And Double Then F = fWidth / 3 F2 = F / 2 Else F = fWidth F2 = F / 2 Endif Paint.LineWidth = F Return DRAW_BORDER: GoSub INIT_STYLE If iStyle And Double Then PaintRoundRectangle(X + F2, Y + F2, Width - F, Height - F, TopLeftRadius - F2, TopRightRadius - F2, BottomLeftRadius - F2, BottomRightRadius - F2) Paint.Stroke PaintRoundRectangle(X + F * 2 + F2, Y + F * 2 + F2, Width - F * 5, Height - F * 5, TopLeftRadius - F2 - F * 2, TopRightRadius - F2 - F * 2, BottomLeftRadius - F2 - F * 2, BottomRightRadius - F2 - F * 2) Paint.Stroke Else PaintRoundRectangle(X + F2, Y + F2, Width - F, Height - F, TopLeftRadius - F2, TopRightRadius - F2, BottomLeftRadius - F2, BottomRightRadius - F2) Paint.Stroke Endif Return DRAW_LINE: GoSub INIT_STYLE If iStyle And Double Then Paint.MoveTo(X1 - F - F2, Y1) Paint.LineTo(X2 - F - F2, Y2) Paint.Stroke Paint.MoveTo(X1, Y1 - F - F2) Paint.LineTo(X2, Y2 - F - F2) Paint.Stroke Else Paint.MoveTo(X1, Y1) Paint.LineTo(X2, Y2) Paint.Stroke Endif Return End Private Sub ConvertToRect(hRect As RectF) As Rect Dim X, Y, W, H As Integer X = CInt(Ceil(hRect.X)) Y = CInt(Ceil(hRect.Y)) W = CInt(Floor(hRect.Right)) - X H = CInt(Floor(hRect.Bottom)) - Y If W <= 0 Or If H <= 0 Then Return Return Rect(X, Y, W, H) End Public Sub GetRect((Rect) As RectF, Optional WithPadding As Boolean, Optional TopBorder As Border, BottomBorder As Border, LeftBorder As Border, RightBorder As Border) As Rect Rect = GetRectF({Rect}, WithPadding, TopBorder, BottomBorder, LeftBorder, RightBorder) If Rect.IsVoid() Then Return Return ConvertToRect(Rect) End Public Sub Clip((Rect) As RectF, Optional TopBorder As Border, BottomBorder As Border, LeftBorder As Border, RightBorder As Border) As Rect Rect = GetRectF(Rect, False, TopBorder, BottomBorder, LeftBorder, RightBorder) If Rect.IsVoid() Then Return Null PaintRoundRectangle(Rect.X, Rect.Y, Rect.Width, Rect.Height, TopLeftRadius, TopRightRadius, BottomLeftRadius, BottomRightRadius, True) Return ConvertToRect(Rect) End Private Sub PaintRoundRectangle(X As Single, Y As Single, W As Single, H As Single, TL As Single, TR As Single, BL As Single, BR As Single, Optional bClip As Boolean) 'Paint.Debug = True If W <= 0 Or If H <= 0 Then If bClip Then Paint.Rectangle(X, Y, 0, 0) Paint.Clip Endif 'Paint.Debug = False Return Endif TL = Max(0, Min(TL, Min(W, H) / 2)) TR = Max(0, Min(TR, Min(W, H) / 2)) BL = Max(0, Min(BL, Min(W, H) / 2)) BR = Max(0, Min(BR, Min(W, H) / 2)) If TL <= 0 And If TR <= 0 And If BL <= 0 And If BR <= 0 Then If bClip Then Paint.Rectangle(X, Y, W, H) Else Paint.MoveTo(X, Y) Paint.LineTo(X + W, Y) Paint.MoveTo(X, Y) Paint.LineTo(X, Y + H) Paint.MoveTo(X + W, Y) Paint.LineTo(X + W, Y + H) Paint.MoveTo(X, Y + H) Paint.LineTo(X + W, Y + H) Endif Else ' PAINT->MoveTo(THIS, x + r, y); ' PAINT->LineTo(THIS, x + w - r, y); ' PAINT->CurveTo(THIS, x + w - r2, y, x + w, y + r2, x + w, y + r); ' PAINT->LineTo(THIS, x + w, y + h - r); ' PAINT->CurveTo(THIS, x + w, y + h - r2, x + w - r2, y + h, x + w - r, y + h); ' PAINT->LineTo(THIS, x + r, y + h); ' PAINT->CurveTo(THIS, x + r2, y + h, x, y + h - r2, x, y + h - r); ' PAINT->LineTo(THIS, x, y + r); ' PAINT->CurveTo(THIS, x, y + r2, x + r2, y, x + r, y); ' Paint.MoveTo(X + TL, Y) Paint.LineTo(X + W - TR, Y) If TR > 0 Then Paint.CurveTo(X + W - TR * CURVE_MUL, Y, X + W, Y + TR * CURVE_MUL, X + W, Y + TR) Paint.LineTo(X + W, Y + H - BR) If BR > 0 Then Paint.CurveTo(X + W, Y + H - BR * CURVE_MUL, X + W - BR * CURVE_MUL, Y + H, X + W - BR, Y + H) Paint.LineTo(X + BL, Y + H) If BL > 0 Then Paint.CurveTo(X + BL * CURVE_MUL, Y + H, X, Y + H - BL * CURVE_MUL, X, Y + H - BL) Paint.LineTo(X, Y + TL) If TL > 0 Then Paint.CurveTo(X, Y + TL * CURVE_MUL, X + TL * CURVE_MUL, Y, X + TL, Y) Paint.LineTo(X + TL, Y) Endif If bClip Then Paint.Clip 'Paint.Debug = False End Private Function Padding_Read() As Single Return LeftPadding End Private Sub Padding_Write(Value As Single) LeftPadding = Value RightPadding = Value TopPadding = Value BottomPadding = Value End Private Sub SetProperty(sProp As String, sValue As String) Dim vValue As Variant Dim aValue As String[] aValue = Split(sValue, " ") If aValue.Count >= 2 Then If Not $aProp.Exist(sProp) Then Return If aValue.Count < 3 Then aValue.Add(aValue[0]) If aValue.Count < 4 Then aValue.Add(aValue[1]) SetProperty("top" & sProp, aValue[0]) SetProperty("right" & sProp, aValue[1]) SetProperty("bottom" & sProp, aValue[2]) SetProperty("left" & sProp, aValue[3]) Return Endif If sProp Ends "style" Then Try vValue = Classes["Border"][Replace(sValue, "-", "")].Value Else If sProp Ends "color" Then Try vValue = Object.GetProperty(Classes["Color"], Replace(sValue, "-", "")) If Left(sValue) = "#" Then Try vValue = Val("&H" & Mid$(sValue, 2) & "&") Endif Else Try vValue = CSingle(sValue) Endif If Error Then Return Try Object.SetProperty(Me, sProp, vValue) End Private Sub NormalyzeOneStyle(ByRef iStyle As Byte, ByRef fWidth As Single) If iStyle Then If fWidth = 0 Then fWidth = 1 Else fWidth = 0 Endif End Private Sub NormalizeStyle() NormalyzeOneStyle(ByRef LeftStyle, ByRef LeftWidth) NormalyzeOneStyle(ByRef RightStyle, ByRef RightWidth) NormalyzeOneStyle(ByRef TopStyle, ByRef TopWidth) NormalyzeOneStyle(ByRef BottomStyle, ByRef BottomWidth) NormalyzeOneStyle(ByRef SlashStyle, ByRef SlashWidth) NormalyzeOneStyle(ByRef BackslashStyle, ByRef BackslashWidth) End Static Public Sub _call(Optional (Style) As String) As Border Return New Border(Style) End Public Sub _new(Optional (Style) As String) Dim aStyle As String[] Dim sStyle As String Dim iPos As Integer Dim sProp As String Dim sValue As String If Style Then aStyle = Split(Style, ";", "", True) For Each sStyle In aStyle iPos = InStr(sStyle, ":") If iPos = 0 Then Continue sProp = Replace(LCase(Trim(Left(sStyle, iPos - 1))), "-", "") sValue = Trim(Mid$(sStyle, iPos + 1)) If Not sProp Then Continue If Not sValue Then Continue SetProperty(sProp, sValue) Next NormalizeStyle Endif End Private Function Margin_Read() As Single Return LeftMargin End Private Sub Margin_Write(Value As Single) LeftMargin = Value RightMargin = Value TopMargin = Value BottomMargin = Value End Public Sub Copy() As Border Dim hBorder As New Border With hBorder .BottomColor = BottomColor .BottomLeftRadius = BottomLeftRadius .BottomMargin = BottomMargin .BottomPadding = BottomPadding .BottomRightRadius = BottomRightRadius .BottomStyle = BottomStyle .BottomWidth = BottomWidth .LeftColor = LeftColor .LeftMargin = LeftMargin .LeftPadding = LeftPadding .LeftStyle = LeftStyle .LeftWidth = LeftWidth .RightColor = RightColor .RightMargin = RightMargin .RightPadding = RightPadding .RightStyle = RightStyle .RightWidth = RightWidth .TopColor = TopColor .TopLeftRadius = TopLeftRadius .TopMargin = TopMargin .TopPadding = TopPadding .TopRightRadius = TopRightRadius .TopStyle = TopStyle .TopWidth = TopWidth .SlashColor = SlashColor .SlashStyle = SlashStyle .SlashWidth = SlashWidth .BackslashColor = BackslashColor .BackslashStyle = BackslashStyle .BackslashWidth = BackslashWidth End With Return hBorder End Public Sub IsVoid() As Boolean If TopStyle And If TopWidth Then Return If BottomStyle And If BottomWidth Then Return If LeftStyle And If LeftWidth Then Return If RightStyle And If RightWidth Then Return Return True End gambas-3.16.3/comp/src/gb.gui.base/.src/Draw.module000066400000000000000000000331531411575327000216320ustar00rootroot00000000000000' Gambas module file Export ' ' GB_STATIC_METHOD("Push", NULL, CDRAW_push, NULL), ' GB_STATIC_METHOD("Pop", NULL, CDRAW_pop, NULL), ' Public Const Normal As Integer = 0 Public Const Disabled As Integer = 1 Public Const Focus As Integer = 2 Public Const Hover As Integer = 4 Property Read Clip As _Draw_Clip Property Read Style As _Draw_Style Property Read Device As Object Property Read Width, W As Integer Property Read Height, H As Integer Property ClipRect As Rect Property Background As Integer Property Foreground As Integer Property Invert As Boolean Property Transparent As Boolean Property Font As Font Property LineWidth As Integer Property LineStyle As Integer Property FillColor As Integer Property FillStyle As Integer Property FillX As Integer Property FillY As Integer Public Struct DrawInfo Foreground As Integer Background As Integer Transparent As Boolean LineStyle As Integer Stack As DrawInfo[] FillColor As Integer FillStyle As Integer ClipRect As Rect End Struct Private Enum DRAW_CIRCLE, DRAW_ELLIPSE, DRAW_ARC Private $hPattern As New Image[15] Public Sub _GetInfo() As DrawInfo Dim hInfo As DrawInfo = Paint._Tag If Not hInfo Then hInfo = New DrawInfo hInfo.Foreground = Color.Foreground Try hInfo.Foreground = Paint.Device.Foreground hInfo.LineStyle = Line.Solid hInfo.FillStyle = Fill.None hInfo.ClipRect = Paint.ClipRect Paint._Tag = hInfo Endif Return hInfo End Private Sub GetStrokeOffset() As Float 'Paint.Antialias = False Return If(Paint.AntiAlias, 0, -0.5) End Public Sub Begin(Device As Object) Paint.Begin(Device) Paint.LineWidth = 1 Paint.AntiAlias = False Paint.LineCap = Paint.LineCapButt Paint.LineJoin = Paint.LineJoinRound End Public Sub End() Paint.AntiAlias = True Paint.End End Public Sub Save() Dim hInfo As DrawInfo = _GetInfo() Dim hSave As DrawInfo Paint.Save If Not hInfo.Stack Then hInfo.Stack = New DrawInfo[] hSave = New DrawInfo hSave.Foreground = hInfo.Foreground hSave.Background = hInfo.Background hSave.Transparent = hInfo.Transparent hSave.LineStyle = hInfo.LineStyle hSave.FillColor = hInfo.FillColor hSave.FillStyle = hInfo.FillStyle If hInfo.ClipRect Then hSave.ClipRect = hInfo.ClipRect.Copy() hInfo.Stack.Push(hSave) End Public Sub Restore() Dim hInfo As DrawInfo = _GetInfo() Dim hSave As DrawInfo Paint.Restore hSave = hInfo.Stack.Pop() Draw.Foreground = hSave.Foreground Draw.Background = hSave.Background Draw.Transparent = hSave.Transparent Draw.LineStyle = hSave.LineStyle Draw.FillColor = hSave.FillColor Draw.FillStyle = hSave.FillStyle Draw.ClipRect = hSave.ClipRect End Private Function Device_Read() As Object Return Paint.Device End Private Function Width_Read() As Integer Return Paint.Width End Private Function Height_Read() As Integer Return Paint.Height End Private Function ClipRect_Read() As Rect Try Return _GetInfo().ClipRect.Copy() End Private Sub ClipRect_Write(Value As Rect) If Value Then _GetInfo().ClipRect = Value.Copy() Else _GetInfo().ClipRect = Null Endif Paint.ClipRect = Value End Private Function Background_Read() As Integer Return _GetInfo().Background End Private Sub Background_Write(Value As Integer) _GetInfo().Background = Value Paint.Background = Value End Private Function Foreground_Read() As Integer Return _GetInfo().Foreground End Private Sub Foreground_Write(Value As Integer) _GetInfo().Foreground = Value End Private Function Invert_Read() As Boolean Return Paint._Invert End Private Sub Invert_Write(Value As Boolean) Paint._Invert = Value End Private Function Transparent_Read() As Boolean Return _GetInfo().Transparent End Private Sub Transparent_Write(Value As Boolean) _GetInfo().Transparent = Value End Private Function Font_Read() As Font Return Paint.Font End Private Sub Font_Write(Value As Font) Paint.Font = Value End Private Function LineWidth_Read() As Integer Return Paint.LineWidth End Private Sub LineWidth_Write(Value As Integer) Paint.LineWidth = Value End Private Function LineStyle_Read() As Integer Return _GetInfo().LineStyle End Private Sub LineStyle_Write(Value As Integer) Select Case Value Case Line.None Case Line.Solid Paint.Dash = Null Case Line.Dash Paint.Dash = [3, 2] Case Line.Dot Paint.Dash = [1, 2] Case Line.DashDot Paint.Dash = [3, 2, 1, 2] Case Line.DashDotDot Paint.Dash = [3, 2, 1, 2, 1, 2] Default Return End Select _GetInfo().LineStyle = Value End Private Function FillColor_Read() As Integer Return _GetInfo().FillColor End Private Sub FillColor_Write(Value As Integer) _GetInfo().FillColor = Value End Public Sub Clear() Dim iColor As Integer Try iColor = Paint.Device.Background If Error Then iColor = Color.White Paint.FillRect(0, 0, Paint.W, Paint.H, iColor) End ' Private Sub GetBackground() As Integer ' ' Dim iBg As Integer = _GetInfo().Background ' ' If iBg = Color.Default Then ' Try iBg = Paint.Device.Background ' If Error Then iBg = Color.White ' Endif ' ' Return iBg ' ' End Private Sub GetForeground() As Integer Dim iFg As Integer = _GetInfo().Foreground If iFg = Color.Default Then Try iFg = Paint.Device.Foreground If iFg = Color.Default Then iFg = Color.TextForeground Endif Return iFg End Public Sub Point(X As Integer, Y As Integer) Paint.FillRect(X, Y, 1, 1, GetForeground()) End Public Sub Line(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) Dim fOffset As Float Dim hBrush As PaintBrush Dim LW As Float Dim iStyle As Integer = LineStyle_Read() If iStyle = Line.None Then Return If iStyle = Line.Solid Then If X1 = X2 Then LW = Paint.LineWidth If Y2 < Y1 Then Swap Y1, Y2 Paint.FillRect(X1 - Int(LW / 2), Y1, LW, Y2 - Y1 + 1, GetForeground()) Return Else If Y1 = Y2 Then LW = Paint.LineWidth If X2 < X1 Then Swap X1, X2 Paint.FillRect(X1, Y1 - Int(LW / 2), X2 - X1 + 1, LW, GetForeground()) Return Endif Endif hBrush = Paint.Brush Paint.Background = GetForeground() fOffset = GetStrokeOffset() Paint.MoveTo(X1 + fOffset, Y1 + fOffset) Paint.LineTo(X2 + fOffset, Y2 + fOffset) Paint.Stroke Paint.Brush = hBrush End Private Sub HasFillStyle(hInfo As DrawInfo) As Boolean Dim hImage As Image Select Case hInfo.FillStyle Case Fill.None Return False Case Fill.Solid Paint.Background = hInfo.FillColor Case Fill.Dense94 To Fill.CrossDiagonal If IsNull($hPattern[hInfo.FillStyle]) Then $hPattern[hInfo.FillStyle] = Image.Load("pattern/" & hInfo.FillStyle & ".png") hImage = $hPattern[hInfo.FillStyle].Copy() If hInfo.Transparent Then hImage.Replace(Color.White, Color.Transparent) hImage.Replace(Color.Black, hInfo.FillColor) Paint.Brush = Paint.Image(hImage) Default Return End Select Return True End Public Sub Rect(X As Integer, Y As Integer, Width As Integer, Height As Integer) Dim hInfo As DrawInfo = _GetInfo() Dim iBg As Integer If HasFillStyle(hInfo) Then Paint.Rectangle(X, Y, Width, Height) Paint.Fill Endif If hInfo.LineStyle Then iBg = GetForeground() Paint.FillRect(X, Y, Width, 1, iBg) Paint.FillRect(X, Y + Height - 1, Width, 1, iBg) If Height > 2 Then Paint.FillRect(X, Y + 1, 1, Height - 2, iBg) Paint.FillRect(X + Width - 1, Y + 1, 1, Height - 2, iBg) Endif Endif End Public Sub FillRect(X As Integer, Y As Integer, Width As Integer, Height As Integer, (Color) As Integer) Dim hBrush As PaintBrush = Paint.Brush Paint.Background = Color Paint.Rectangle(X, Y, Width, Height) Paint.Fill Paint.Brush = hBrush 'Paint.FillRect(X, Y, Width, Height, Color) End Private Function FillStyle_Read() As Integer Return _GetInfo().FillStyle End Private Sub FillStyle_Write(Value As Integer) _GetInfo().FillStyle = Value End Private Function FillX_Read() As Integer Return Paint.BrushOrigin.X End Private Sub FillX_Write(Value As Integer) Dim hPoint As PointF = Paint.BrushOrigin hPoint.X = Value Paint.BrushOrigin = hPoint End Private Function FillY_Read() As Integer Return Paint.BrushOrigin.Y End Private Sub FillY_Write(Value As Integer) Dim hPoint As PointF = Paint.BrushOrigin hPoint.Y = Value Paint.BrushOrigin = hPoint End Private Sub DrawEllipse(iAction As Integer, X As Float, Y As Float, W As Float, H As Float, Start As Float, ({End}) As Float) Dim hInfo As DrawInfo 'Dim Angle As Float Dim fOffset As Float If W <= 0 Or If H <= 0 Then Return hInfo = _GetInfo() If Start = 0 And If {End} = 0 Then Paint.Ellipse(X, Y, W - 1, H - 1, 0, Pi(2), False) Else Paint.Ellipse(X, Y, W - 1, H - 1, Start, {End} - Start, True) Endif If iAction <> DRAW_ARC And If HasFillStyle(hInfo) Then Paint.Fill(hInfo.LineStyle) Endif If hInfo.LineStyle Then Paint.Background = GetForeground() fOffset = GetStrokeOffset() Paint.Translate(fOffset, fOffset) Paint.Stroke Paint.Translate(-fOffset, -fOffset) Endif End Public Sub Circle(X As Integer, Y As Integer, Radius As Integer, Optional Start As Float, ({End}) As Float) DrawEllipse(DRAW_CIRCLE, X - Radius, Y - Radius, Radius * 2, Radius * 2, Start, {End}) End Public Sub Arc(X As Integer, Y As Integer, Width As Integer, Height As Integer, Optional Start As Float, ({End}) As Float) DrawEllipse(DRAW_ARC, X, Y, Width, Height, Start, {End}) End Public Sub Ellipse(X As Integer, Y As Integer, Width As Integer, Height As Integer, Optional Start As Float, ({End}) As Float) DrawEllipse(DRAW_ELLIPSE, X, Y, Width, Height, Start, {End}) End Public Sub Text((Text) As String, X As Integer, Y As Integer, Optional Width As Integer = -1, Height As Integer = -1, Alignment As Integer = -1) Paint.Background = GetForeground() If Width < 0 And If Height < 0 Then Y += Paint.Font.Ascent Paint.DrawText(Text, X, Y, Width, Height, Alignment) End Public Sub TextWidth((Text) As String) As Integer Return Ceil(Paint.TextSize(Text).Width) End Public Sub TextHeight((Text) As String) As Integer Return Ceil(Paint.TextSize((Text)).Height) End Public Sub RichText((Text) As String, X As Integer, Y As Integer, Optional Width As Integer = -1, Height As Integer = -1, Alignment As Integer = -1) Paint.Background = GetForeground() If Width < 0 And If Height < 0 Then Y += Paint.Font.Ascent Paint.DrawRichText(Text, X, Y, Width, Height, Alignment) End Public Sub RichTextWidth((Text) As String) As Integer Return Ceil(Paint.RichTextSize(Text).Width) End Public Sub RichTextHeight((Text) As String, Optional Width As Integer = -1) As Integer Return Ceil(Paint.RichTextSize(Text, Width).Height) End Public Sub PolyLine(Points As Integer[]) Dim hInfo As DrawInfo Dim I As Integer Dim fOffset As Float If Not Points Or If Points.Count < 4 Then Return hInfo = _GetInfo() If hInfo.LineStyle = Line.None Then Return Paint.Background = hInfo.Foreground Paint.MoveTo(Points[0], Points[1]) For I = 2 To Points.Max Step 2 Paint.LineTo(Points[I], Points[I + 1]) Next fOffset = GetStrokeOffset() Paint.Translate(fOffset, fOffset) Paint.Stroke Paint.Translate(-fOffset, -fOffset) End Public Sub Polygon(Points As Integer[]) Dim hInfo As DrawInfo Dim fOffset As Float If Not Points Or If Points.Count < 4 Then Return hInfo = _GetInfo() Paint.Polygon(Points) fOffset = GetStrokeOffset() If HasFillStyle(hInfo) Then Paint.Fill(hInfo.LineStyle <> Line.None) Endif If hInfo.LineStyle Then Paint.Background = GetForeground() Paint.Translate(fOffset, fOffset) Paint.Stroke Paint.Translate(-fOffset, -fOffset) Endif End Public Sub Reset() Paint.Reset End Public Sub Translate(DX As Float, DY As Float) Paint.Translate(DX, DY) End Public Sub Scale(SX As Float, SY As Float) Paint.Scale(SX, SY) End Public Sub Zoom((Image) As Image, (Zoom) As Integer, X As Integer, Y As Integer, Optional SrcX As Integer, SrcY As Integer, SrcWidth As Integer, SrcHeight As Integer) Dim hInfo As DrawInfo = _GetInfo() Dim hRect As Rect If SrcWidth > 0 And If SrcHeight > 0 Then hRect = New Rect(SrcX, SrcY, SrcWidth, SrcHeight) Paint.ZoomImage(Image, Zoom, X, Y, If(hInfo.LineStyle = Line.None, Color.Default, GetForeground()), hRect) End Public Sub Image((Image) As Image, X As Integer, Y As Integer, Optional Width As Integer = -1, Height As Integer = -1, SrcX As Integer, SrcY As Integer, SrcWidth As Integer, SrcHeight As Integer) Dim hRect As Rect If SrcWidth > 0 And If SrcHeight > 0 Then hRect = New Rect(SrcX, SrcY, SrcWidth, SrcHeight) Paint.DrawImage(Image, X, Y, Width, Height, 1.0, hRect) End Public Sub Picture((Picture) As Picture, X As Integer, Y As Integer, Optional Width As Integer = -1, Height As Integer = -1, SrcX As Integer, SrcY As Integer, SrcWidth As Integer, SrcHeight As Integer) Dim hRect As Rect If SrcWidth > 0 And If SrcHeight > 0 Then hRect = New Rect(SrcX, SrcY, SrcWidth, SrcHeight) Paint.DrawPicture(Picture, X, Y, Width, Height, hRect) End Public Sub Tile((Picture) As Picture, X As Integer, Y As Integer, W As Integer, H As Integer) Dim hBrush As PaintBrush = Paint.Brush Paint.Brush = Paint.Image(Picture.Image, X, Y) Paint.Rectangle(X, Y, W, H) Paint.Fill Paint.Brush = hBrush End Private Function Clip_Read() As _Draw_Clip Return _Draw_Clip End Private Function Style_Read() As _Draw_Style Return _Draw_Style End gambas-3.16.3/comp/src/gb.gui.base/.src/Fill.class000066400000000000000000000002671411575327000214430ustar00rootroot00000000000000' Gambas class file Export Public Enum None, Solid, Dense94, Dense88, Dense63, Dense50, Dense37, Dense12, Dense6, Horizontal, Vertical, Cross, Diagonal, BackDiagonal, CrossDiagonal gambas-3.16.3/comp/src/gb.gui.base/.src/Frame.class000066400000000000000000000131501411575327000216020ustar00rootroot00000000000000' Gambas class file ''' This class implements a container with a border and a title on top. Export Inherits UserContainer Public Const _Properties As String = "*,Text,TextFont,Alignment{Align.*}=Center" Public Const _Similar As String = "Panel" '' Return or set the Frame title. Property Text As String '' Return or set the Frame title as rich text. Property RichText As String '' Return or set the font title. '' '' If not set, the control font is used. Property TextFont As Font '' Return or set the position of the title relative to the border. Property Alignment As Integer '' --> [/comp/gb.qt4/usercontainer/arrangement] Property Arrangement As Integer Private $hContainer As Panel Private $hFrame As DrawingArea Private $sText As String Private $bRichText As Boolean Private $hTextFont As Font Private $iAlign As Integer = Align.Center '' Create a new Frame. Public Sub _new() $hFrame = New DrawingArea(Me) As "Frame" '$hFrame.Margin = True $hContainer = New Panel($hFrame) Me._Container = $hContainer 'Me.Proxy = $hFrame End Public Sub Frame_Arrange() Dim DS As Integer Dim H As Integer = 0 If $sText And If Me.Arrangement Then DS = Desktop.Scale If $hTextFont Then H = Max($hTextFont.H, DS) Else H = Max(Me.Font.H, DS) Endif H += DS \ 2 Endif $hContainer.Move(0, H, $hFrame.W, $hFrame.H - H) End Public Sub Frame_Draw() Dim DS As Integer Dim W As Integer Dim sText As String Dim hRect As PaintExtents Dim H As Integer Dim iAlign As Integer Dim Y As Integer Dim X As Integer DS = Desktop.Scale If $hFrame.W < DS * 2 Or If $hFrame.H < DS * 2 Then Return If $sText Then If $hTextFont Then Paint.Font = $hTextFont H = Max(Paint.Font.H, DS) W = $hFrame.W If Align.IsBottom($iAlign) Then W -= DS * 2 X = DS Else If Align.IsMiddle($iAlign) Then W -= DS * 4 X = DS * 2 Endif If $bRichText Then sText = Paint.TrimRichText($sText, W) hRect = Paint.RichTextExtents(sText) Else sText = Paint.TrimText($sText, W) hRect = Paint.TextExtents(sText) Endif 'If Me.Background <> Color.Default Then Paint.FillRect(DS \ 2 + 2, H \ 2 + 2, $hFrame.W - DS - 4, $hFrame.H - (DS + H) \ 2 - 4, Me.Background) If Align.IsBottom($iAlign) Then Paint.DrawRect(0, 0, $hFrame.W, $hFrame.H, Color.LightForeground) Y = DS \ 2 Else If Align.IsTop($iAlign) Then Paint.DrawRect(0, H + DS \ 2, $hFrame.W, $hFrame.H - H - DS \ 2, Color.LightForeground) Else Paint.Background = Color.LightForeground If Not sText Then Paint.DrawRect(0, H \ 2, $hFrame.W, $hFrame.H - H \ 2, Color.LightForeground) Else Paint.Translate(0.5, 0.5) If Align.IsLeft($iAlign) Then Paint.MoveTo(DS, H \ 2) Paint.LineTo(0, H \ 2) Paint.LineTo(0, $hFrame.H - 1) Paint.LineTo($hFrame.W - 1, $hFrame.H - 1) Paint.LineTo($hFrame.W - 1, H \ 2) Paint.LineTo(hRect.W + DS * 3, H \ 2) Else If Align.IsRight($iAlign) Then Paint.MoveTo($hFrame.W - hRect.W - DS * 3, H \ 2) Paint.LineTo(0, H \ 2) Paint.LineTo(0, $hFrame.H - 1) Paint.LineTo($hFrame.W - 1, $hFrame.H - 1) Paint.LineTo($hFrame.W - 1, H \ 2) Paint.LineTo($hFrame.W - DS, H \ 2) Else ' center Paint.MoveTo(CInt($hFrame.W - hRect.W) \ 2 - DS, H \ 2) Paint.LineTo(0, H \ 2) Paint.LineTo(0, $hFrame.H - 1) Paint.LineTo($hFrame.W - 1, $hFrame.H - 1) Paint.LineTo($hFrame.W - 1, H \ 2) Paint.LineTo(CInt($hFrame.W - hRect.W) \ 2 + hRect.W + DS, H \ 2) Endif Paint.LineWidth = 1 Paint.Stroke() Paint.Translate(-0.5, -0.5) Endif Endif If sText Then If Align.IsLeft($iAlign) Then iAlign = Align.Left Else If Align.IsRight($iAlign) Then iAlign = Align.Right Else iAlign = Align.Center Endif Paint.Background = Style.ForegroundOf(Me) If $bRichText Then Paint.DrawRichText(sText, X, Y, $hFrame.W - X * 2, H, iAlign) Else Paint.DrawText(sText, X, Y, $hFrame.W - X * 2, H, iAlign) Endif Endif Else If Me.Background <> Color.Default Then Paint.FillRect(0, 0, $hFrame.W, $hFrame.H, Me.Background) Paint.DrawRect(0, 0, $hFrame.W, $hFrame.H, Color.LightForeground) 'Style.PaintPanel(DS \ 2, DS \ 2, $hFrame.W - DS, $hFrame.H - DS, Border.Etched) Endif End Private Function Text_Read() As String If Not $bRichText Then Return $sText End Private Sub Text_Write(Value As String) $sText = Value $bRichText = False Frame_Arrange $hFrame.Refresh End Private Function RichText_Read() As String If $bRichText Then Return $sText End Private Sub RichText_Write(Value As String) $sText = Value $bRichText = True Frame_Arrange $hFrame.Refresh End Private Function TextFont_Read() As Font Return $hTextFont End Private Sub TextFont_Write(Value As Font) $hTextFont = Value End Public Sub Frame_Font() Frame_Arrange End Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Alignment_Write(Value As Integer) If $iAlign = Value Then Return $iAlign = Value Frame_Arrange $hFrame.Refresh End Private Function Arrangement_Read() As Integer Return Super.Arrangement End Private Sub Arrangement_Write(Value As Integer) Super.Arrangement = Value Frame_Arrange End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/000077500000000000000000000000001411575327000212415ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/GridView.class000066400000000000000000001552161411575327000240220ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Class TableView Public Const _Properties As String = "*,Border=True,Mode{Select.None;Single;Multiple}=None,Grid=True,Padding{Range:0;63}=2,ShowCursor=False,Header{GridView.None;Horizontal;Vertical;Both}=None,ScrollBar{Scroll.*}=Both,AutoResize=True,Resizable=True,Sorted" Public Const _Group As String = "View" Public Const _DefaultEvent As String = "Click" Public Enum None, Horizontal, Vertical, Both Property Background As Integer Property Read Rows As _GridView_Rows Property Read Columns As _GridView_Columns Property Border As Boolean Property Grid As Boolean Property Mode As Integer Property Read Data As _GridView_Data Property Row As Integer Property Column As Integer Property Resizable As Boolean Property ScrollBar As Integer Property AutoResize As Boolean Property Header As Integer Property ShowCursor As Boolean Property Read Current As _GridView_Cell Property Sorted As Boolean Property Padding As Integer Property ScrollX As Integer Property ScrollY As Integer Property Read ScrollW, ScrollWidth As Integer Property Read ScrollH, ScrollHeight As Integer Property Read ClientX As Integer Property Read ClientY As Integer Property Read ClientW, ClientWidth As Integer Property Read ClientH, ClientHeight As Integer Event Data(Row As Integer, Column As Integer) Event Change Event Select Event Click Event Activate Event Scroll Event Font Event ColumnClick(Column As Integer) Event ColumnResize(Column As Integer) Event ColumnSize(Column As Integer) Event RowClick(Row As Integer) Event RowResize(Row As Integer) Event RowSize(Row As Integer) 'Event MouseDown Event Sort Event Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) Public _DoNotDrawSelection As Boolean Public _NoMouse As Boolean Public _ToggleSelection As Boolean Private $hView As ScrollArea Private $bGrid As Boolean = True Private $iMode As Integer Private $iHeader As Integer Private $bShowCursor As Boolean Private $bAutoResize As Boolean = True Private $iDefaultMouse As Integer '= Mouse.Default Private $iBg As Integer = Color.Default Private $iRow As Integer Private $iCol As Integer Private $hRows As _GridView_Rows Private $hColumns As _GridView_Columns Private $iFirstRow As Integer Private $aRowY As New Integer[] Private $cCells As New Collection Private $hData As _GridView_Data Private $cSpan As New Collection Private $bResize As Boolean Private $iRowResize As Integer = -1 Private $iColResize As Integer = -1 Private $iDimResize As Integer Private $bMoveSelect As Boolean Private $bMoveUnSelect As Boolean Private $iMoveSelectRow As Integer = -1 Private $vMoveOldSelection As Variant Private $bKeyEvent As Boolean Private $bIgnoreMove As Boolean Private $MX As Integer Private $MY As Integer Private $SX As Integer Private $SY As Integer Private $hTimerScroll As Timer Private $bInCell As Boolean Private $bInRow As Boolean Private $hTimerEnsureVisible As Timer Private $iRowEV As Integer = -1 Private $iColEV As Integer = -1 Private $bSorted As Boolean Private $bHasDrawEvent As Boolean Private $iPadding As Integer = 2 Private $iTextHeight As Integer Private $bDoNotRaiseSelect As Boolean Private $hTimerClick As Timer Private $bMoveRaiseSelect As Boolean Public Sub _new() $hRows = New _GridView_Rows As "Rows" $hColumns = New _GridView_Columns As "Columns" $hView = New ScrollArea(Me) As "ScrollArea" $hView.Background = Color.TextBackground $hView.Focus = True $hView.Tracking = True $hView.ScrollBar = Scroll.Both $bGrid = True $iRow = -1 $iCol = 0 Me.Proxy = $hView $hTimerClick = New Timer As "GridViewClick" End ' Public Sub _attach(Parent As Object, EventName As String) ' ' If Parent Then ' $bHasDrawEvent = Object.CanRaise(Me, "Draw") ' Endif ' ' End Private Sub GetCellKey(iRow As Integer, iCol As Integer) As String If iRow >= iCol Then Return CLong(iRow) * iRow + iCol * 2 Else Return CLong(iCol) * iCol + iRow * 2 + 1 Endif End Private Function Rows_Read() As _GridView_Rows Return $hRows End Private Function Columns_Read() As _GridView_Columns Return $hColumns End Public Sub _IsRowSelected(iRow As Integer) As Boolean Select Case $iMode Case Select.None Return Case Select.Single Return iRow = $iRow Case Select.Multiple Return $hRows._IsSelected(iRow) End Select End Private Sub DrawAlignedPicture(hPict As Picture, X As Integer, Y As Integer, W As Integer, H As Integer, A As Integer) If Align.IsBottom(A) Then Y += H - hPict.H Else If Align.IsMiddle(A) Then Y += (H - hPict.H) / 2 Endif If Align.IsRight(A) Then X += W - hPict.W Else If Align.IsCenter(A) Then X += (W - hPict.W) / 2 Endif Paint.DrawPicture(hPict, X, Y) End Private Sub DrawCell(X As Integer, Y As Integer, W As Integer, H As Integer, iRow As Integer, iCol As Integer, hData As _GridView_Data, hRowBorder As Border) Dim hRect As Rect = Rect(X, Y, W, H) Dim hRectDraw As Rect Dim hPict As Picture Dim A As Integer Dim iColor As Integer Dim bCancel As Boolean Dim iPadding As Integer Paint.Save With hData If W <= 0 Or If H <= 0 Then Goto DRAW_GRID iColor = .Background If iColor = Color.Default Then iColor = $hColumns[iCol].Background If iColor = Color.Default Then iColor = Me.Background If iColor = Color.Default Then iColor = Color.TextBackground Endif Endif Endif Paint.FillRect(X, Y, W, H, iColor) If .Border Then hRectDraw = .Border.GetRect(RectF(X, Y, W, H), True) If hRectDraw Then With hRectDraw X = .X Y = .Y W = .W H = .H End With Endif Endif If hRowBorder Then With hRowBorder Y += .TopPadding + .TopWidth H -= .TopPadding + .TopWidth + .BottomPadding + .BottomWidth If iCol = 0 Then X += .LeftPadding + .LeftWidth W -= .LeftPadding + .LeftWidth Endif If iCol = $hColumns.Max Then W -= .RightPadding + .RightWidth Endif End With Endif iPadding = Max($iPadding, .Padding) If iPadding Then X += iPadding Y += iPadding W -= iPadding * 2 H -= iPadding * 2 Endif If W <= 0 Or If H <= 0 Then Goto DRAW_GRID 'Paint.FillRect(X, Y, W, H, Color.SetAlpha(Color.Red, 240)) iColor = .Foreground If iColor = Color.Default Then iColor = Me.Foreground If iColor = Color.Default Then iColor = Style.ForegroundOf(Me) Endif Endif Paint.Background = iColor If .Font And If .Font.Modified Then Paint.Font = .Font If $bHasDrawEvent Then bCancel = Raise Draw(X, Y, W, H, iRow, iCol) If bCancel Then Goto DRAW_GRID Endif hPict = .Picture If hPict Then If Not .Text And If Not .RichText Then DrawAlignedPicture(hPict, X, Y, W, H, .Alignment) Else A = .Alignment If Align.IsMiddle(A) Then A = Align.Normal Else If Align.IsTop(A) Then A = Align.TopNormal Else If Align.IsBottom(A) Then A = Align.BottomNormal End If DrawAlignedPicture(hPict, X, Y, W, H, A) W -= hPict.W + iPadding If Not System.RightToLeft Then X += hPict.W + iPadding Endif If W <= 0 Then Goto DRAW_GRID Endif Inc X W -= 2 If .Text Then If .WordWrap Then Paint.DrawRichText(Replace(Html(.Text), "\n", "
      "), X, Y, W, H, .Alignment) Else Paint.DrawText(.Text, X, Y, W, H, .Alignment) Endif Else If .RichText Then If .WordWrap Then Paint.DrawRichText(.RichText, X, Y, W, H, .Alignment) Else A = .Alignment If Align.IsLeft(A) Then Paint.DrawRichText(.RichText, X, Y, 4096, H, .Alignment) Else If Align.IsRight(A) Then Paint.DrawRichText(.RichText, X + W - 4096, Y, 4096, H, .Alignment) Else Paint.DrawRichText(.RichText, X + W \ 2 - 4096, Y, 8192, H, .Alignment) Endif Endif Endif End With DRAW_GRID: iColor = Color.Merge(Color.LightForeground, $hView.Background) If $bGrid Then If System.RightToLeft Then If iCol > 0 Then Paint.FillRect(hRect.X, hRect.Y, 1, hRect.H, iColor) Else If iCol < $hColumns.Max Or If hRect.X + hRect.W < $hView.ClientW Then Paint.FillRect(hRect.X + hRect.W - 1, hRect.Y, 1, hRect.H, iColor) Endif If iRow < $hRows.Max Or If hRect.Y + hRect.H < $hView.ClientH Then Paint.FillRect(hRect.X, hRect.Y + hRect.H - 1, hRect.W, 1, iColor) Else If Me Is TableView Then If iRow = $hRows.Max Then If hRect.Y + hRect.H < $hView.ClientH Then Paint.FillRect(hRect.X, hRect.Y + hRect.H - 1, hRect.W, 1, iColor) Endif If System.RightToLeft Then If iCol = 0 Then Paint.FillRect(hRect.X, hRect.Y, 1, hRect.H, iColor) Endif Else If iCol = $hColumns.Max Then If hRect.X + hRect.W < $hView.ClientW Then Paint.FillRect(hRect.X + hRect.W - 1, hRect.Y, 1, hRect.H, iColor) Endif Endif Endif Paint.Restore End Private Sub DrawText(sText As String, X As Integer, Y As Integer, W As Integer, H As Integer, iAlign As Integer, iPadding As Integer) X += iPadding Y += iPadding W -= iPadding * 2 H -= iPadding * 2 If W <= 0 Or If H <= 0 Then Return Paint.DrawText(sText, X, Y, W, H, iAlign) End Public Sub ScrollArea_Draw() Dim I, J, R, C, WA As Integer Dim XO, YO, XX, YY, X, Y, W, H As Integer Dim iRow, iRow2, iCol, iCol2 As Integer Dim hClip, hSaveClip As Rect Dim hRect As Rect Dim hData As _GridView_Data Dim F As Integer = _GetFrameWidth() Dim iGrid As Integer Dim aSpan As Short[] Dim bHasSpan As Boolean Dim iRowSpan, iColSpan As Integer Dim hSpan, hCursor As Rect Dim XS, YS As Integer Dim iSort As Integer Dim bAscent As Boolean Dim iStepCol As Integer Dim iBg As Integer Dim hRowBorder As Border Dim hTopRowBorder As Border Dim hBottomRowBorder As Border Dim hRowBorderRect As Rect Dim hRectF As RectF Dim iBgSel As Integer Dim iPadding As Integer If $iBg <> Color.Transparent Then If $iBg = Color.Default Then iBg = Color.TextBackground Else iBg = $iBg Endif Paint.FillRect(0, 0, Paint.W, Paint.H, iBg) Endif If $hView.HasFocus Then iBgSel = Color.SetAlpha(Color.SelectedBackground, &HA0) Else iBgSel = Color.SetAlpha(Color.SelectedBackground, &HC0) Endif If $hColumns.Count = 0 And If $hRows.Count = 0 Then Return iCol = $hColumns._FindColumnFromPos($hView.ScrollX) If iCol < 0 Then iCol = $hColumns.Max 'Debug "iCol = "; iCol iRow = $hRows._FindRowFromPos($hView.ScrollY) iCol2 = -1 iRow2 = -1 iStepCol = If(System.RightToLeft, -1, 1) If System.RightToLeft Then XO = -$hView.ScrollX + F Else XO = $hRows.Width - $hView.ScrollX + F Endif XX = XO + $hColumns[iCol].X YO = $hColumns.Height - $hView.ScrollY + F YY = YO + $hRows._GetRowY(iRow) If $bGrid Then iGrid = Color.Merge(Color.LightForeground, Color.TextBackground) Else iGrid = Color.Merge(Color.LightForeground, Color.ButtonBackground) Endif hClip = Paint.ClipRect ' Headers use button colors Paint.Background = Color.ButtonForeground iBg = Color.ButtonBackground If Color.Distance(iBg, Color.TextBackground) < 0.1 Then iBg = Color.Background Endif iPadding = Max(Desktop.Scale \ 2, $iPadding) ' Column headers iSort = $hColumns.Sort bAscent = $hColumns.Ascending H = $hColumns.Height + F If $iHeader And Horizontal Then Paint.FillRect(0, 0, Paint.W, H, iBg) X = XX If iCol >= 0 Then I = iCol Do If I < 0 Or If I >= $hColumns.Count Then Break If X >= $hView.ClientW Then Break iCol2 = I With $hColumns[I] If .W > 0 And If $iHeader And Horizontal Then ''If $bGrid Then Draw.FillRect(X - 1, F, 1, H - F, iGrid) If System.RightToLeft Then Paint.FillRect(X, F, 1, H - F, iGrid) Else Paint.FillRect(X - 1, F, 1, H - F, iGrid) Endif Paint.Save If iSort = I Then WA = Min(12, H - F) If WA < .Width Then Style.PaintArrow(X + .Width - WA - iPadding, F, WA, H - F, If(bAscent, Align.Bottom, Align.Top)) 'Draw.ClipRect = hClip.Intersection(Rect(X, F, Max(0, .Width - WA - 2), H - F)) 'If Draw.ClipRect Then Draw.Text(.Text, X + 4, F, .Width - WA - 8, H - F, .Alignment) Paint.Rectangle(X, F, Max(0, .Width - WA - 2), H - F) Paint.Clip DrawText(.Text, X + 1, F, .Width - WA - iPadding - 2, H - F - 2, .Alignment, iPadding) Else Paint.Rectangle(X + 1, F, .Width - 2, H - F) Paint.Clip DrawText(.Text, X + 1, F, .Width - 2, H - F - 2, .Alignment, iPadding) Endif Paint.Restore Endif X += .Width End With I += iStepCol Loop Endif If $iHeader And Horizontal Then 'Draw.ClipRect = hClip If $bGrid Then If System.RightToLeft Then If X > 0 Then Paint.FillRect(X, F, 1, H - F, iGrid) Else If X < $hView.ClientW Then Paint.FillRect(X - 1, F, 1, H - F, iGrid) Endif Endif Endif ' Row headers $iFirstRow = iRow $aRowY.Clear W = $hRows.Width + F If $iHeader And Vertical Then If System.RightToLeft Then Paint.FillRect($hView.ClientW - W, 0, W, Paint.H, iBg) Else Paint.FillRect(0, 0, W, Paint.H, iBg) Endif Endif Y = YY If System.RightToLeft Then X = $hView.ClientW - $hRows.Width - F Else X = F Endif If iRow >= 0 Then For I = iRow To $hRows.Count - 1 If Y >= $hView.ClientH Then Break $aRowY.Add(Y - F) iRow2 = I With $hRows[I] 'Draw.Style.Separator(F, Y, W - F, 2) H = .Height '$hRows._GetRowHeight(I) If H > 0 And If $iHeader And Vertical Then Paint.FillRect(X, Y - 1, W - F, 1, iGrid) Paint.Save Paint.Rectangle(X, Y + 1, W - F, H - 3) Paint.Clip If I = $iRow Then Paint.Font.Bold = True DrawText(.Text, X, Y + 2, W - F - 1, H - 3, .TextAlignment, iPadding) If I = $iRow Then Paint.Font.Bold = False Paint.Restore Endif End With 'Draw.Style.Handle(W - 2, Y, 2, H, True) Y += H Next Endif $aRowY.Add(Y - F) If $iHeader And Vertical Then 'Draw.ClipRect = hClip If $bGrid Then If Y < $hView.ClientH Then Paint.FillRect(F, Y - 1, W - F, 1, iGrid) Endif Endif ' Top-left frame If $iHeader = Both Then If System.RightToLeft Then Paint.FillRect($hView.ClientW - $hRows.Width - F, 0, $hRows.Width + F, $hColumns.Height + F, iBg) Else Paint.FillRect(0, 0, $hRows.Width + F, $hColumns.Height + F, iBg) Endif Endif ' Header limits If $iHeader And Horizontal Then Paint.FillRect(0, $hColumns.Height + F - 1, $hView.ClientW, 1, Color.Merge(Color.LightForeground, Color.ButtonBackground)) If $iHeader And Vertical Then If System.RightToLeft Then Paint.FillRect($hView.ClientW - $hRows.Width - F, 0, 1, $hView.ClientH, Color.Merge(Color.LightForeground, Color.ButtonBackground)) Else Paint.FillRect($hRows.Width + F - 1, 0, 1, $hView.ClientH, Color.Merge(Color.LightForeground, Color.ButtonBackground)) Endif Endif If $hColumns.Count = 0 Or If $hRows.Count = 0 Then Return If iRow < 0 Or If iRow2 < 0 Then Return ' Cells hRect = New Rect(0, 0, $hView.ClientW, $hView.ClientH) hRect.Adjust(F) If System.RightToLeft Then hRect.Adjust(0, $hColumns.Height, $hRows.Width, 0) Else hRect.Adjust($hRows.Width, $hColumns.Height, 0, 0) Endif hClip = hRect.Intersection(Paint.ClipRect) If Not hClip Then Return Paint.Save Paint.ResetClip Paint.Rectangle(hClip.X, hClip.Y, hClip.W, hClip.H) Paint.Clip $bHasDrawEvent = Object.CanRaise(Me, "Draw") hSaveClip = hClip.Copy() 'Draw.ClipRect = hClip Y = YY For I = iRow To iRow2 H = $aRowY[I - iRow + 1] + F - Y X = XX ' Row border hRowBorder = $hRows._GetRowBorder(I) If hRowBorder Then If I > 0 Then hTopRowBorder = $hRows._GetRowBorder(I - 1) Else hTopRowBorder = Null Endif If I < $hRows.Max Then hBottomRowBorder = $hRows._GetRowBorder(I + 1) Else hBottomRowBorder = Null Endif Paint.Save hRectF = RectF(XO + $hColumns[0].X, Y, $hColumns[$hColumns.Max].X + $hColumns[$hColumns.Max].W - $hColumns[0].X, H) hRowBorder.Clip(hRectF, hTopRowBorder, hBottomRowBorder) hRowBorderRect = hRowBorder.GetRect(hRectF, False, hTopRowBorder, hBottomRowBorder) If Not hRowBorderRect Then Paint.Restore Goto NEXT_ROW Endif Else hRowBorderRect = Null Endif For J = iCol To iCol2 Step iStepCol W = $hColumns[J].Width R = I C = J bHasSpan = HasSpan(I, J) If bHasSpan Then aSpan = _GetSpan(I, J) iRowSpan = aSpan[0] iColSpan = aSpan[1] 'Draw.ClipRect = hClip 'Draw.Foreground = Color.Green 'Draw.Text(iRowSpan & " / " & iColSpan, X, Y, $hColumns[J].Width, H, Align.Center) If iRowSpan < 0 Then R += iRowSpan If iColSpan < 0 Then C += iColSpan If (iRowSpan < 0 Or iColSpan < 0) And If R >= iRow And If C >= iCol Then Goto NEXT_CELL aSpan = _GetSpan(R, C) iRowSpan = aSpan[0] iColSpan = aSpan[1] ' Else ' ' iRowSpan = 0 ' iColSpan = 0 ' Draw.ClipRect = hClip ' Draw.Foreground = Color.Green ' Draw.Text(iRowSpan & " / " & iColSpan, X, Y, $hColumns[J].Width, H, Align.Center) Endif If bHasSpan Then XS = XO + $hColumns[C].X YS = YO + $hRows._GetRowY(R) hSpan = Rect(XS, YS, XO + $hColumns[C + iColSpan].X + $hColumns[C + iColSpan].W - XS, YO + $hRows._GetRowY(R + iRowSpan) + $hRows._GetRowHeight(R + iRowSpan) - YS) Else hSpan = Rect(X, Y, W, H) Endif If hRowBorderRect Then hSpan = hSpan.Intersection(hRowBorderRect) If Not hSpan Then Goto NEXT_CELL Endif If Not hClip.Intersection(hSpan) Then Goto NEXT_CELL hData = _GetCellData(R, C) Paint.Save If hData.Border Then 'hSpan = hData.Border.GetRect(RectF(hSpan.X, hSpan.Y, hSpan.W, hSpan.H), True) hData.Border.Clip(RectF(hSpan.X, hSpan.Y, hSpan.W, hSpan.H)) Endif Paint.Rectangle(hSpan.X, hSpan.Y, hSpan.W, hSpan.H) Paint.Clip DrawCell(hSpan.X, hSpan.Y, hSpan.W, hSpan.H, R, C, hData, hRowBorder) If hData.Border Then hData.Border.Paint(RectF(hSpan.X, hSpan.Y, hSpan.W, hSpan.H)) Endif If Not hRowBorder And If $iMode Then If _DoNotDrawSelection Then If I = $iRow And If $iMode = Select.Multiple Then Paint.FillRect(0, Y, Paint.W, H, iBgSel) Else If _IsRowSelected(I) Then Paint.FillRect(0, Y, Paint.W, H, iBgSel) Endif Endif Paint.Restore NEXT_CELL: If I = $iRow And If J = $iCol Then If System.RightToLeft Then hCursor = Rect(X + 1, Y, Max(0, W - 1), Max(0, H - 1)) If J = 0 Then Inc hCursor.Left Else hCursor = Rect(X, Y, Max(0, W - 1), Max(0, H - 1)) If J = $hColumns.Max Then Inc hCursor.Right Endif If $bGrid Then Dec hCursor.W Dec hCursor.H Endif 'If I = $hRows.Max Then Dec hCursor.Bottom ' Paint.Begin(Draw.Device) ' Paint.ClipRect = hClip ' Paint.Brush = Paint.Color(Color.SetAlpha(Color.SelectedBackground, 192)) ' Paint.Rectangle(X, Y, W, H) ' Paint.Stroke ' Paint.End Endif X += W Next If hRowBorder Then If $iMode And If Not _DoNotDrawSelection Then If _IsRowSelected(I) Then Paint.FillRect(0, Y, Paint.W, H, Color.SetAlpha(Color.SelectedBackground, 192)) Endif Endif Paint.Restore hRowBorder.Paint(RectF(XO + $hColumns[0].X, Y, $hColumns[$hColumns.Max].X + $hColumns[$hColumns.Max].W - $hColumns[0].X, H), hTopRowBorder, hBottomRowBorder) Endif NEXT_ROW: Y += H Next If hCursor Then If $bShowCursor Then 'Paint.FillRect(hSpan.X, hSpan.Y, hSpan.W, hSpan.H, Color.SetAlpha(Color.SelectedBackground, 192)) 'Draw.ClipRect = hClip ' Paint.Background = Color.LightBackground 'iGrid 'Color.LightForeground ' Paint.LineCap = Paint.LineCapSquare ' Paint.LineWidth = 1.5 Paint.DrawRect(hCursor.X, hCursor.Y, hCursor.W + 1, hCursor.H + 1, Color.LightBackground, Desktop.Scale \ 4) 'Paint.Stroke Endif Endif $hData = Null ' Sorted column If $bSorted And If $hColumns.Count > 1 And If iSort >= 0 And If iSort < $hColumns.Count Then 'Paint.Begin(Draw.Device) Paint.ClipRect = hClip With $hColumns[iSort] Paint.FillRect(XO + .X, $hColumns.H + F, .W, $hView.ClientH - $hColumns.H - F * 2, Color.SetAlpha(Style.ForegroundOf(Me), 252)) End With 'Paint.End Endif ' Row selection ' If $iMode And If Not _DoNotDrawSelection Then ' ' Y = YY ' X = XX ' ' 'Paint.Begin(Draw.Device) ' 'Paint.ClipRect = hSaveClip ' Paint.Brush = Paint.Color(Color.SetAlpha(Color.SelectedBackground, 192)) ' ' For I = iRow To iRow2 ' ' H = $aRowY[I - iRow + 1] + F - Y ' ' If _IsRowSelected(I) Then ' 'Paint.Rectangle(X, Y, $hColumns._GetWidth(), H) ' Paint.Rectangle(F, Y, $hView.ClientW - F * 2, H - If($bGrid, 1, 0)) ' Paint.Fill ' Endif ' ' Y += H ' ' Next ' ' 'Paint.End ' ' Endif Paint.Restore ' If Me.HasFocus And If Not $hView.Border Then ' Draw.ClipRect = Null ' Draw.Foreground = Color.LightBackground 'Color.LightForeground ' Draw.Rect($hView.ClientX, $hView.ClientY, $hView.ClientW, $hView.ClientH) ' Endif End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) If $hView.Border = Value Then Return $hView.Border = Value ScrollArea_Arrange End Public Sub _GetFrameWidth() As Integer 'If $hView.Border Then Return 1 'Return Style.FrameWidth End Public Sub _ResizeContents() Dim F As Integer = _GetFrameWidth() ' Debug $hRows._GetHeight(); " / "; $hRows.Count;; ' If $hRows.Count Then Error $hRows[0].H * $hRows.Count; ' Error $hView.ResizeContents($hColumns._GetWidth() + $hRows.Width + F * 2, $hRows._GetHeight() + $hColumns.Height + F * 2) $hView._SetShadowOffset($hColumns.H, 0, If(System.RightToLeft, 0, $hRows.W), If(System.RightToLeft, $hRows.W, 0)) End Private Function Grid_Read() As Boolean Return $bGrid End Private Sub Grid_Write(Value As Boolean) $bGrid = Value $hView.Refresh End Private Function Mode_Read() As Integer Return $iMode End Private Sub Mode_Write(Value As Integer) If Value = $iMode Then Return Select Case Value Case Select.None, Select.Multiple, Select.Single $hRows.UnSelectAll $iMode = Value End Select $hView.Refresh End Public Sub ScrollArea_Enter() $iDefaultMouse = Me.Mouse End Public Sub ScrollArea_Leave() Me.Mouse = $iDefaultMouse End Private Sub InRowHeader(X As Integer) As Boolean If $hRows.Width = 0 Then Return If System.RightToLeft Then Return X >= $hView.ClientW - $hRows.Width Else Return X < $hRows.Width Endif End Private Sub StartScrollTimer() Dim F As Integer = _GetFrameWidth() $SX = Mouse.X - F $SY = Mouse.Y - F If $hTimerScroll Then Return $hTimerScroll = New Timer(50) As "TimerScroll" End Public Sub ScrollArea_MouseMove() Dim I, MX, MY, X, Y, iRow, iCol As Integer Dim iMouse As Integer Dim F As Integer = _GetFrameWidth() Dim bInRowHeader As Boolean Dim HW As Integer If Me.Design Then Return If Not Me.Enabled Then Return If $bIgnoreMove Then Return If _NoMouse Then Return If $hRows.Count = 0 And If $hColumns.Count = 0 Then Return If $bInCell And If Mouse.Left Then StartScrollTimer MX = Mouse.X - F MY = Mouse.Y - F $bInCell = False $bInRow = False If $bResize Then If $iRowResize >= 0 Then $hRows._SetRowHeight($iRowResize, Max(1, $iDimResize + MY - $MY)) Else If $iColResize >= 0 Then 'Debug "Resize "; $iColResize; ": "; $hColumns[$iColResize].Width;; "->";; Max(1, $iDimResize + MX - $MX) If System.RightToLeft Then $hColumns[$iColResize].Width = Max(1, $iDimResize + $MX - MX) Else $hColumns[$iColResize].Width = Max(1, $iDimResize + MX - $MX) Endif 'Debug "ScrollX = "; Me.ScrollX Endif Return Endif iMouse = $iDefaultMouse 'Mouse.Default $iRowResize = -1 $iColResize = -1 HW = (Desktop.Scale * 3) \ 4 bInRowHeader = InRowHeader(MX) If bInRowHeader Then If $hRows.Resizable Then For I = 0 To $aRowY.Max If MY >= ($aRowY[I] - HW) And If MY <= ($aRowY[I] + HW) Then If I + $iFirstRow Then iMouse = Mouse.SizeS $iRowResize = I + $iFirstRow - 1 $iDimResize = $hRows._GetRowHeight($iRowResize) Endif Break Endif Next Endif Else If MY < $hColumns.Height Then If $hColumns.Resizable Then X = MX + $hView.ScrollX If Not System.RightToLeft Then X -= $hRows.Width If System.RightToLeft Then ' For I = $hColumns.Count - 2 DownTo 0 ' With $hColumns[I] ' If $hColumns[I + 1].Resizable And If X >= (.X - 1) And If X <= (.X + 2) Then ' iMouse = Mouse.SizeE ' $iColResize = I + 1 ' $iDimResize = $hColumns[$iColResize].Width ' Break ' Endif ' End With ' Next For I = 1 To $hColumns.Count - 1 With $hColumns[I] If $hColumns[I].Resizable And If X >= (.X - HW) And If X <= (.X + HW) Then iMouse = Mouse.SizeE $iColResize = I $iDimResize = $hColumns[$iColResize].Width Break Endif End With Next Else For I = 1 To $hColumns.Count - 1 With $hColumns[I] If $hColumns[I - 1].Resizable And If X >= (.X - HW) And If X <= (.X + HW) Then iMouse = Mouse.SizeE $iColResize = I - 1 $iDimResize = $hColumns[$iColResize].Width Break Endif End With Next Endif If System.RightToLeft Then If $iColResize < 0 And If $hColumns[0].Resizable And If X >= ($hColumns._GetWidth() - HW) And If X <= ($hColumns._GetWidth() + HW) Then iMouse = Mouse.SizeE $iColResize = 0 $iDimResize = $hColumns[$iColResize].Width Endif Else If $iColResize < 0 And If $hColumns[$hColumns.Count - 1].Resizable And If X >= ($hColumns._GetWidth() - HW) And If X <= ($hColumns._GetWidth() + HW) Then iMouse = Mouse.SizeE $iColResize = $hColumns.Count - 1 $iDimResize = $hColumns[$iColResize].Width Endif Endif Endif Endif If Mouse.Button = 0 And If $hView.Mouse <> iMouse Then $hView.Mouse = iMouse 'If $iColResize >= 0 Then Debug "Resize?";; $iColResize If $iRowResize >= 0 Or If $iColResize >= 0 Then Return iRow = -1 iCol = -1 X = MX Y = MY If Not System.RightToLeft Then X -= $hRows.W If Mouse.Left Or If Mouse.Right Then If Y >= $hColumns.Height Then For I = 1 To $aRowY.Max If Y < $aRowY[I] Then iRow = I + $iFirstRow - 1 Break Endif Next Endif If Y < 0 Or If Y >= $hColumns.Height Then If iRow < 0 Then iRow = $hRows._FindRowFromPos(Y - $hColumns.Height + $hView.ScrollY) Endif Endif If Not bInRowHeader Then X += $hView.ScrollX iCol = $hColumns._FindColumnFromPos(X) Endif Endif If iRow >= 0 Then $bInRow = True If iCol >= 0 Then $bInCell = True MoveTo(iRow, iCol) Endif End Public Sub TimerScroll_Timer() Dim X As Integer Dim Y As Integer Dim iCol As Integer Dim iRow As Integer If Drag.Pending Then $hTimerScroll.Stop Return Endif X = $SX - If(System.RightToLeft, 0, $hRows.W) + $hView.ScrollX Y = $SY - $hColumns.Height + $hView.ScrollY If InRowHeader($SX) Then iCol = -1 Else iCol = $hColumns._FindColumnFromPos(X) If iCol < 0 Then iCol = If(System.RightToLeft, 0, $hColumns.Count - 1) Endif If Y < 0 Then iRow = 0 Else iRow = $hRows._FindRowFromPos(Y) If iRow < 0 Then iRow = $hRows.Count - 1 Endif MoveTo(iRow, iCol) End Public Sub _EnsureVisibleScroll(X As Integer, Y As Integer) $hView.EnsureVisible($hView.ScrollX + X - 16 - $hColumns.W, $hView.ScrollY + Y - 16 - $hRows.H, 32, 32) End Public Sub ScrollArea_MouseDrag() If Me.Design Then Return If Not Me.Enabled Then Return If _NoMouse Then Return $bIgnoreMove = False If $bResize Or If $bMoveSelect Or If $bMoveUnselect Then Stop Event Return Endif StartScrollTimer End Public Sub ScrollArea_MouseDown() Dim I, iOldRow As Integer Dim bCancel As Boolean Dim F As Integer = _GetFrameWidth() $MX = Mouse.X - F $MY = Mouse.Y - F If Me.Design Then Return If Not Me.Enabled Then Return If _NoMouse Then Return If Mouse.Click > 1 Then Return Me.SetFocus $hTimerClick.Trigger bCancel = Raise MouseDown If bCancel Then Stop Event Return Endif iOldRow = $iRow $bIgnoreMove = False ScrollArea_MouseMove $bIgnoreMove = True If $iRowResize >= 0 Or If $iColResize >= 0 Then $bResize = True Stop Event Return Endif If $iMode = Select.Multiple Then If $bInRow Then If Mouse.Control Then If $hRows._IsSelected($iRow) Then $hRows.UnSelect($iRow, 1) $iMoveSelectRow = $iRow $vMoveOldSelection = $hRows._SaveSelection() $bMoveUnSelect = True Else $hRows.Select($iRow, 1) $iMoveSelectRow = $iRow $vMoveOldSelection = $hRows._SaveSelection() $bMoveSelect = True Endif Else If Mouse.Shift And If iOldRow >= 0 Then $hRows._GetSelection().UnSelectAll $hRows.Select(iOldRow, 1) $iMoveSelectRow = iOldRow $vMoveOldSelection = $hRows._SaveSelection() $bMoveSelect = True Dec $iRow MoveTo($iRow + 1, -1) Else If Not _IsRowSelected($iRow) Then If Not _ToggleSelection Then $hRows._GetSelection().UnSelectAll() $hRows.Select($iRow, 1) $iMoveSelectRow = $iRow $vMoveOldSelection = $hRows._SaveSelection() $bMoveSelect = True Else If _ToggleSelection Then $hRows.UnSelect($iRow, 1) $vMoveOldSelection = $hRows._SaveSelection() $bMoveUnSelect = True Endif $iMoveSelectRow = $iRow Endif Endif Endif If $bInCell Then Else If Mouse.X < $hRows.Width And If Mouse.Y > $hColumns.H Then I = $hRows._FindRowFromPos(Mouse.Y - $hColumns.Height + $hView.ScrollY) If I >= 0 Then Raise RowClick(I) Endif Else If Mouse.Y < $hColumns.Height And If Mouse.X > $hRows.W Then I = $hColumns._FindColumnFromPos(Mouse.X - $hRows.Width + $hView.ScrollX) If I >= 0 Then bCancel = Raise ColumnClick(I) If Not bCancel Then If $bSorted Then If $hColumns.Sort = I Then $hColumns.Ascending = Not $hColumns.Ascending Else $hColumns.Sort = I $hColumns.Ascending = True Endif Endif Endif Endif Endif Stop Event End ' Public Sub ScrollArea_Menu() ' ' Debug ' ' End Private Sub AfterMouseUp() If Me.Design Then Return If $hTimerScroll Then $hTimerScroll.Stop $hTimerScroll = Null Endif If $bMoveSelect Or If $bMoveUnselect Then $bDoNotRaiseSelect = False If $bMoveRaiseSelect Then $bMoveRaiseSelect = False _RaiseSelect Endif Endif If _NoMouse Then Return $bResize = False $bMoveSelect = False $bMoveUnSelect = False $vMoveOldSelection = Null $iMoveSelectRow = -1 $bIgnoreMove = False End Public Sub ScrollArea_MouseUp() AfterMouseUp End Public Sub ScrollArea_DragLeave() AfterMouseUp End Public Sub ScrollArea_GotFocus() $hView.Refresh End Public Sub ScrollArea_LostFocus() AfterMouseUp $hView.Refresh End Public Sub ScrollArea_DblClick() 'Debug $bInCell If Me.Design Then Return If _NoMouse Then Return If $bInCell Then Raise Activate Else If $iColResize >= 0 Then $hColumns[$iColResize].Width = -1 Else If $iRowResize >= 0 Then $hRows[$iRowResize].Height = -1 Endif End Private Function Data_Read() As _GridView_Data Return $hData End Public Sub _CheckCell(iRow As Integer, iColumn As Integer) If iRow < 0 Or If iRow >= $hRows.Count Then Error.Raise("Bad row index") If iColumn < 0 Or If iColumn >= $hColumns.Count Then Error.Raise("Bad column index") End Public Sub _CheckCurrent() MoveTo(Min($iRow, $hRows.Count - 1), Min($iCol, $hColumns.Count - 1)) End Public Sub _GetCellData(iRow As Integer, iColumn As Integer, Optional bCreate As Boolean) As _GridView_Data Dim hData As _GridView_Data hData = $cCells[GetCellKey(iRow, iColumn)] If Not hData Then If bCreate Then hData = New _GridView_Data As "GridViewData" hData.Font = Me.Font.Copy() hData.Font.Modified = False hData.Alignment = $hColumns[iColumn].Alignment $cCells[GetCellKey(iRow, iColumn)] = hData Else $hData = New _GridView_Data As "GridViewData" $hData.Font = Me.Font.Copy() $hData.Font.Modified = False $hData.Alignment = $hColumns[iColumn].Alignment Raise Data(iRow, iColumn) hData = $hData Endif Endif Return hData End Public Sub _get(Row As Integer, Column As Integer) As _GridView_Cell Dim hCell As _GridView_Cell hCell = New _GridView_Cell hCell._Row = Row hCell._Column = Column hCell._View = Me Return hCell End Public Sub MoveTo(Row As Integer, Column As Integer) Dim S, L As Integer If Column < 0 Then Column = $iCol If Row < 0 Then If $iRow < 0 Then Return Row = -1 Else If Row = $iRow And If Column = $iCol Then Return Else If Row >= $hRows.Count Or If Column < 0 Or If Column >= $hColumns.Count Then Return Endif $iRow = Row $iCol = Column If $iRow >= 0 And If $iCol < 0 Then $iCol = 0 If $iRow >= 0 And If $iCol >= 0 Then _EnsureVisible($iRow, $iCol) $hView.Refresh Raise Change If $iMode = Select.Single Then Raise Select Else If $bMoveSelect Or If $bMoveUnSelect Then If $vMoveOldSelection Then $bDoNotRaiseSelect = True $hRows._RestoreSelection($vMoveOldSelection) S = Min($iRow, $iMoveSelectRow) L = Max($iRow, $iMoveSelectRow) - Min($iRow, $iMoveSelectRow) + 1 If $bMoveSelect Then $hRows.Select(S, L) Else $hRows.UnSelect(S, L) Endif $bDoNotRaiseSelect = False $bMoveRaiseSelect = True Endif Else If $bKeyEvent And If $iMode = Select.Multiple And If Not _NoMouse Then $hRows._GetSelection().UnSelectAll $hRows.Select($iRow, 1) Endif End Private Function Row_Read() As Integer Return $iRow End Private Sub Row_Write(Value As Integer) MoveTo(Value, $iCol) End Private Function Column_Read() As Integer If $iRow < 0 Then Return -1 Return $iCol End Private Sub Column_Write(Value As Integer) MoveTo($iRow, Value) End ' Private Sub EnsureRowVisible(iRow As Integer) ' ' 'Debug iRow; ": "; $hView.ScrollX, $hRows._GetRowY(iRow), $hView.ClientW, $hRows._GetRowHeight(iRow) ' Dim F As Integer = GetFrameWidth() ' ' $hView.EnsureVisible($hView.ScrollX - F, $hRows._GetRowY(iRow) - F, $hView.ClientW + F * 2, $hRows._GetRowHeight(iRow) + $hColumns.Height + F * 2) ' ' End Public Sub _EnsureVisible(iRow As Integer, iCol As Integer) If Not $hTimerEnsureVisible Then $hTimerEnsureVisible = New Timer As "TimerEnsureVisible" If $iRowEV < 0 Then $hTimerEnsureVisible.Trigger $iRowEV = iRow $iColEV = iCol 'Debug iRow;; iCol End Public Sub TimerEnsureVisible_Timer() Dim iRowEV As Integer = $iRowEV Dim F As Integer = _GetFrameWidth() $iRowEV = -1 With $hColumns[$iColEV] $hView.EnsureVisible(.X, $hRows._GetRowY(iRowEV) + F, Min($hView.ClientW - $hRows.W, .Width + $hRows.Width), $hRows._GetRowHeight(iRowEV) + $hColumns.Height + F) End With Catch End Public Sub _SelectRow(iRow As Integer, bSelect As Boolean) If $iMode = Select.Single Then If bSelect Then If $iRow <> iRow Then Row_Write(iRow) Endif Else If $iRow >= 0 Then Row_Write(-1) Endif Endif End Public Sub Clear() $cCells.Clear $hRows._Clear $iRow = -1 $iCol = 0 _ResizeContents $hView.Refresh End Public Sub _ClearCell(iRow As Integer, iCol As Integer) $cCells.Remove(GetCellKey(iRow, iCol)) End Private Function Resizable_Read() As Boolean Return $hColumns.Resizable End Private Sub Resizable_Write(Value As Boolean) $hColumns.Resizable = Value End Private Function ScrollX_Read() As Integer Return $hView.ScrollX End Private Sub ScrollX_Write(Value As Integer) $hView.ScrollX = Value End Private Function ScrollY_Read() As Integer Return $hView.ScrollY End Private Sub ScrollY_Write(Value As Integer) $hView.ScrollY = Value End Private Function ScrollW_Read() As Integer Return $hView.ScrollW End Private Function ScrollH_Read() As Integer Return $hView.ScrollH End Private Function ClientX_Read() As Integer Return $hView.ClientX + _GetFrameWidth() End Private Function ClientY_Read() As Integer Return $hView.ClientY + _GetFrameWidth() End Private Function ClientW_Read() As Integer Return $hView.ClientW - _GetFrameWidth() * 2 End Private Function ClientH_Read() As Integer Return $hView.ClientH - _GetFrameWidth() * 2 End Public Sub ScrollArea_Scroll() Raise Scroll End Public Sub _RaiseSelect() If $bDoNotRaiseSelect Then Return $hView.Refresh Raise Select End Public Sub Select(Optional Start As Integer = 0, Optional Length As Integer = 1) $hRows.Select(Start, Length) End Public Sub SelectAll() $hRows.SelectAll End Public Sub UnselectAll() $hRows.UnSelectAll End Private Function Scrollbar_Read() As Integer Return $hView.ScrollBar End Private Sub Scrollbar_Write(Value As Integer) $hView.ScrollBar = Value End Private Function AutoResize_Read() As Boolean Return $bAutoResize End Private Sub AutoResize_Write(Value As Boolean) $bAutoResize = Value $hColumns._Layout End Private Function Header_Read() As Integer Return $iHeader End Private Sub Header_Write(Value As Integer) Value = Value And 3 $iHeader = Value $hColumns._Layout $hView.Refresh End Public Sub ScrollArea_KeyPress() Dim iRow As Integer Dim bStop As Boolean Dim iCode As Integer $bKeyEvent = True iCode = Key.Code If System.RightToLeft Then If iCode = Key.Left Then iCode = Key.Right Else If iCode = Key.Right Then iCode = Key.Left Endif Endif Select iCode Case Key.Up, Key.Down, Key.Left, Key.Right, Key.Home, Key.End, Key.PageUp, Key.PageDown, Key.Space bStop = Raise KeyPress If bStop Then Stop Event Goto _RETURN Endif If $iMode = Select.Multiple Then $bMoveSelect = Key.Shift If $bMoveSelect And If $iMoveSelectRow < 0 Then $iMoveSelectRow = $iRow $vMoveOldSelection = $hRows._SaveSelection() Endif Endif End Select Select iCode Case Key.Up If $iRow > 0 Then MoveTo($iRow - 1, $iCol) Stop Event Case Key.Down If $iRow < ($hRows.Count - 1) Then MoveTo($iRow + 1, $iCol) Stop Event Case Key.Left If $iRow >= 0 Then If $iCol > 0 Then MoveTo($iRow, $iCol - 1) Else If $iRow > 0 Then MoveTo($iRow - 1, $hColumns.Count - 1) Endif Endif Stop Event Case Key.Right If $iRow >= 0 Then If $iCol < ($hColumns.Count - 1) Then MoveTo($iRow, $iCol + 1) Else If $iRow < ($hRows.Count - 1) Then MoveTo($iRow + 1, 0) Endif Endif Stop Event Case Key.Home If Key.Control Or If Not $bShowCursor Then MoveTo(0, 0) Else MoveTo($iRow, 0) Endif Stop Event Case Key.End If Key.Control Or If Not $bShowCursor Then MoveTo($hRows.Count - 1, $hColumns.Count - 1) Else MoveTo($iRow, $hColumns.Count - 1) Endif Stop Event Case Key.PageUp iRow = $hRows._FindRowFromPos($hRows._GetRowY($iRow) + $hRows._GetRowHeight($iRow) - ($hView.ClientH - $hColumns.H - _GetFrameWidth() * 2)) If iRow >= 0 Then MoveTo(iRow, $iCol) Else MoveTo(0, $iCol) Endif Stop Event Case Key.PageDown iRow = $hRows._FindRowFromPos($hRows._GetRowY($iRow) + $hView.ClientH - $hColumns.H - _GetFrameWidth() * 2) If iRow >= 0 Then MoveTo(iRow, $iCol) Else MoveTo($hRows.Count - 1, $iCol) Endif Stop Event Case Key.Space If $iRow >= 0 And If $iMode = Select.Multiple Then If $hRows._IsSelected($iRow) Then $hRows.UnSelect($iRow) Else $hRows.Select($iRow) Endif Endif Stop Event End Select _RETURN: $bKeyEvent = False End Private Sub MakeSpan(iRowSpan As Integer, iColSpan As Integer) As Integer Return Lsl(iRowSpan, 16) Or (iColSpan And &HFFFF&) End Private Sub UnmakeSpan(iSpan As Integer) As Short[] Return [CShort(Lsr(iSpan, 16)), CShort(iSpan And &HFFFF&)] End Public Sub _SetSpan(iRow As Integer, iCol As Integer, iRowSpan As Integer, iColSpan As Integer) Dim aOldSpan As Short[] Dim iOldRowSpan As Integer Dim iOldColSpan As Integer Dim I, J As Integer If iRow < 0 Or If iCol < 0 Or If iRow >= $hRows.Count Or If iCol >= $hColumns.Count Then Return If iRowSpan < -32768 Or If iRowSpan > 32767 Then Return If iColSpan < -32768 Or If iColSpan > 32767 Then Return If iRowSpan > 0 And If iColSpan < 0 Then iColSpan = 0 If iColSpan > 0 And If iRowSpan < 0 Then iRowSpan = 0 aOldSpan = _GetSpan(iRow, iCol) iOldRowSpan = aOldSpan[0] iOldColSpan = aOldSpan[1] If (iOldRowSpan < 0 Or iOldColSpan < 0) And If (iRowSpan <> 0 Or iColSpan <> 0) Then Return $cSpan.Remove(GetCellKey(iRow, iCol)) If iOldColSpan > 0 Or If iOldRowSpan > 0 Then I = 1 J = 0 Do If I > iOldColSpan Then I = 0 Inc J If J > iOldRowSpan Then Break Endif _SetSpan(iCol + I, iRow + J, 0, 0) Inc I Loop Endif If iRowSpan = 0 And If iColSpan = 0 Then Return $cSpan[GetCellKey(iRow, iCol)] = MakeSpan(iRowSpan, iColSpan) If iRowSpan >= 0 And If iColSpan >= 0 Then For I = 0 To iRowSpan For J = 0 To iColSpan If I = 0 And If J = 0 Then Continue _SetSpan(iRow + I, iCol + J, -I, -J) Next Next Endif End Private Sub HasSpan(iRow As Integer, iCol As Integer) As Boolean Return $cSpan.Exist(GetCellKey(iRow, iCol)) End Public Sub _GetSpan(iRow As Integer, iCol As Integer) As Short[] Dim aSpan As New Short[2] Dim iSpan As Integer If iRow < 0 Or If iCol < 0 Or If iRow >= $hRows.Count Or If iCol >= $hColumns.Count Then Return aSpan Try iSpan = $cSpan[GetCellKey(iRow, iCol)] If iSpan = 0 Then Return aSpan aSpan = UnmakeSpan(iSpan) aSpan[0] = Min(aSpan[0], $hRows.Count - iRow - 1) aSpan[1] = Min(aSpan[1], $hColumns.Count - iCol - 1) Return aSpan End Private Function ShowCursor_Read() As Boolean Return $bShowCursor End Private Sub ShowCursor_Write(Value As Boolean) $bShowCursor = Value $hView.Refresh End Public Sub _GetCellWidth(iRow As Integer, iCol As Integer) As Integer Dim W, I As Integer If Not HasSpan(iRow, iCol) Then Return $hColumns[iCol].Width For I = iCol To iCol + Max(0, _GetSpan(iRow, iCol)[1]) W += $hColumns[I].Width Next Return W End Public Sub _GetCellHeight(iRow As Integer, iCol As Integer) As Integer Dim H, I As Integer If Not HasSpan(iRow, iCol) Then Return $hRows._GetRowHeight(iRow) For I = iRow To iRow + Max(0, _GetSpan(iRow, iCol)[0]) H += $hRows._GetRowHeight(I) Next Return H End Private Function Current_Read() As _GridView_Cell If $iRow < 0 Or If $iCol < 0 Then Return Return _get($iRow, $iCol) End Public Sub RowAt(Y As Integer) As Integer Y -= $hColumns.Height If Y < 0 Then Return -1 Return $hRows._FindRowFromPos(Y + $hView.ScrollY) End Public Sub ColumnAt(X As Integer) As Integer X -= $hRows.Width + $hView.Proxy.X If X < 0 Then Return -1 Return $hColumns._FindColumnFromPos(X + $hView.ScrollX) End Public Sub _GetVisibleWidth() As Integer Return $hView.ClientW - _GetFrameWidth() * 2 - $hRows.Width End Public Sub ScrollArea_Resize() 'Debug $hView.ClientW $hColumns.Column__Refresh End Public Sub ScrollArea_Arrange() 'Debug $hView.ClientW $hColumns.Column__Refresh End Private Sub MoveCell(iRowSrc As Integer, iColSrc As Integer, iRowDst As Integer, iColDst As Integer) Dim S, D As String S = GetCellKey(iRowSrc, iColSrc) D = GetCellKey(iRowDst, iColDst) $cCells[D] = $cCells[S] $cCells[S] = Null ' If HasSpan(iRowSrc, iColSrc) Then ' aSpan = _GetSpan(iRowSrc, iColSrc) ' _SetSpan(iRowSrc, iColSrc, 0, 0) ' _SetSpan(iRowDst, iColDst, aSpan[0], aSpan[1]) ' Endif End Public Sub _RemoveRows(Start As Integer, Length As Integer) Dim I, J, D As Integer If Start < 0 Or If Start >= $hRows.Count Or Length <= 0 Or (Start + Length) > $hRows.Count Then Error.Raise("Bad argument") D = Start 'For J = 0 To $hColumns.Max ' _SetSpan(D, J, 0, 0) 'Next For I = Start + Length To $hRows.Max For J = 0 To $hColumns.Max MoveCell(I, J, D, J) Next Inc D Next $hRows._GetSelection().RemoveRows(Start, Length) $hRows.Count -= Length End Public Sub _InsertRows(Start As Integer, Length As Integer) Dim I, J As Integer If Start < 0 Or If Length <= 0 Or If Start > $hRows.Count Then Error.Raise("Bad argument") For I = $hRows.Max DownTo Start For J = 0 To $hColumns.Max MoveCell(I, J, I + Length, J) Next Next $hRows._GetSelection().InsertRows(Start, Length) $hRows.Count += Length End Public Sub _GetTextHeight() As Integer If $iTextHeight = 0 Then $iTextHeight = Me.Font.TextHeight(" ") Return $iTextHeight End ' Private Function Mouse_Read() As Integer ' ' Return Super.Mouse ' ' End ' ' Private Sub Mouse_Write(Value As Integer) ' ' Super.Mouse = Value ' $iDefaultMouse = Value ' ' End Public Sub _GetPreferredWidth(iCol As Integer) As Integer Dim PW, W, I As Integer Dim hData As _GridView_Data Dim hFont As Font Dim iColSpan As Integer Dim D As Integer Dim iPadding As Integer Dim fTime As Float Dim hBorder As Border Dim fDiff As Float Dim bBusy As Boolean Dim J As Integer PW = Me.Font.TextWidth($hColumns[iCol].Text) + Max(Desktop.Scale \ 2, $iPadding) * 2 + If($bSorted, 16, 0) + 2 fTime = Timer For J = 0 To $hRows.Max Step 10000 For I = J To Min($hRows.Max, J + 9999) hData = _GetCellData(I, iCol) If HasSpan(I, iCol) Then iColSpan = _GetSpan(I, iCol)[1] If iColSpan < 0 Then hData = _GetCellData(I, iCol + iColSpan) iColSpan = _GetSpan(I, iCol + iColSpan)[1] Endif D = iColSpan + 1 Else D = 1 Endif With hData iPadding = Max($iPadding, .Padding) W = iPadding * 2 hFont = .Font If Not hFont Then hFont = Me.Font If .RichText Then If Not .WordWrap Then W += hFont.RichTextWidth(.RichText) Else If .Text Then If Not .WordWrap Then W += hFont.TextWidth(.Text) Endif If .Picture Then W += .Picture.Width If .Text Or If .RichText Then W += iPadding Endif hBorder = .Border If hBorder Then With hBorder W += .LeftPadding + .LeftWidth + .RightPadding + .RightWidth + .LeftMargin + .RightMargin End With Endif If iCol = 0 Or If iCol = $hColumns.Max Then hBorder = $hRows._GetRowBorder(I) If hBorder Then With hBorder If iCol = 0 Then W += .LeftPadding + .LeftMargin + .LeftWidth If iCol = $hColumns.Max Then W += .RightPadding + .RightMargin + .RightWidth End With Endif Endif PW = Max(PW, (W + D - 1) \ D) End With Next fDiff = Timer - fTime 'Debug fDiff If fDiff > 1 Then If Not bBusy Then Inc Application.Busy bBusy = True Endif If fDiff > 5 Then Break Endif Next If bBusy Then Dec Application.Busy Return PW + 2 End Public Sub _GetPreferredHeight(iRow As Integer) As Integer Dim PH, H, I, J, WC As Integer Dim hSpan As Short[] Dim hData As _GridView_Data Dim hFont As Font Dim iRowSpan, iColSpan As Integer Dim iCol As Integer Dim D As Integer Dim iPadding As Integer Dim WT As Float Dim hBorder As Border Dim hTopBorder As Border Dim hBottomBorder As Border PH = $hRows.Height For I = 0 To $hColumns.Max iCol = I If HasSpan(iRow, iCol) Then hSpan = _GetSpan(iRow, iCol) iRowSpan = hSpan[0] iColSpan = hSpan[1] If iRowSpan < 0 Then iRow += iRowSpan If iColSpan < 0 Then iCol += iColSpan hData = _GetCellData(iRow, iCol) hSpan = _GetSpan(iRow, iCol) iRowSpan = hSpan[0] iColSpan = hSpan[1] D = iRowSpan + 1 Else D = 1 iRowSpan = 0 iColSpan = 0 hData = _GetCellData(iRow, iCol) Endif WC = $hColumns[iCol].W For J = 1 To iColSpan WC += $hColumns[iCol + J].Width Next If Not hData Then Continue With hData iPadding = Max($iPadding, .Padding) H = iPadding * 2 hFont = .Font If Not hFont Then hFont = Me.Font WT = WC - iPadding * 2 - 2 hBorder = $hRows._GetRowBorder(iRow) If hBorder Then WT -= hBorder.LeftPadding + hBorder.RightPadding + hBorder.LeftMargin + hBorder.RightMargin + hBorder.LeftWidth + hBorder.RightWidth hBorder = .Border If hBorder Then WT -= hBorder.LeftPadding + hBorder.RightPadding + hBorder.LeftMargin + hBorder.RightMargin + hBorder.LeftWidth + hBorder.RightWidth If .RichText Then If .WordWrap Then H += hFont.RichTextHeight(.RichText, WT) Else H += hFont.RichTextHeight(.RichText) Endif Else If .Text Then If .WordWrap Then H += hFont.RichTextHeight(Replace(Html(.Text), "\n", "
      "), WT) Else H += hFont.TextHeight(.Text) Endif Endif If .Picture Then H = Max(.Picture.H + iPadding * 2, H) Endif hBorder = $hRows._GetRowBorder(iRow) If iRow > 0 Then hTopBorder = $hRows._GetRowBorder(iRow - 1) If iRow < $hRows.Max Then hBottomBorder = $hRows._GetRowBorder(iRow + 1) If hBorder Then With hBorder H += .TopPadding + .TopWidth + .BottomPadding + .BottomWidth + .TopMargin + .BottomMargin If hTopBorder Then H = H - .TopMargin + Max(.TopMargin, hTopBorder.BottomMargin) / 2 If hBottomBorder Then H = H - .BottomMargin + Max(.BottomMargin, hBottomBorder.TopMargin) / 2 End With Endif hBorder = .Border If hBorder Then With hBorder H += .TopPadding + .TopWidth + .BottomPadding + .BottomWidth + .TopMargin + .BottomMargin End With Endif PH = Max(PH, (H + D - 1) \ D) End With Next Return PH End Public Sub _RaiseRowResize(iRow As Integer) Raise RowResize(iRow) End Public Sub _RaiseColumnResize(iCol As Integer) Raise ColumnResize(iCol) End Public Sub _RaiseSort() Raise Sort End Private Function Sorted_Read() As Boolean Return $bSorted End Private Sub Sorted_Write(Value As Boolean) $bSorted = Value If Not $bSorted Then $hColumns.Sort = -1 Else $hColumns.Sort = 0 $hColumns.Ascending = True Endif Me.Refresh End Public Sub Scroll(X As Integer, Y As Integer) $hView.Scroll(X, Y) End Public Sub _RaiseColumnSize(iCol As Integer) As Boolean Dim bCancel As Boolean If Not Object.CanRaise(Me, "ColumnSize") Then Return True bCancel = Raise ColumnSize(iCol) Return bCancel End Public Sub _RaiseRowSize(iRow As Integer) As Boolean Dim bCancel As Boolean If Not Object.CanRaise(Me, "RowSize") Then Return True bCancel = Raise RowSize(iRow) Return bCancel End Private Function Background_Read() As Integer Return $iBg End Private Sub Background_Write(Value As Integer) If $iBg = Value Then Return $iBg = Value $hView.Background = Value $hView.Refresh End Public Sub GridViewClick_Timer() If $bInCell Then Raise Click End Private Function Padding_Read() As Integer Return $iPadding End Private Sub Padding_Write(Value As Integer) If $iPadding = Value Then Return $iPadding = Value ScrollArea_Arrange $hView.Refresh End Public Sub ScrollArea_Font() 'Debug Me.Name $iTextHeight = 0 $hColumns._Layout '$hRows._Clear _ResizeContents Raise Font End Public Sub _RefreshRow(iRow As Integer) $hView.RefreshRect(0, $hRows._GetRowY(iRow), $hView.ScrollW, $hRows._GetRowHeight(iRow)) End Public Sub AddColumn(Text As String, Optional Width As Integer, Alignment As Integer = Align.Normal) As _GridView_Column Dim hCol As _GridView_Column Inc $hColumns.Count hCol = $hColumns[$hColumns.Max] hCol.Text = Text If Width < 0 Then hCol.Expand = True Else If Width Then hCol.Width = Width Endif hCol.Alignment = Alignment Return hCol End Public Sub _RefreshPicture() Dim hData As _GridView_Data For Each hData In $cCells Picture._Refresh(ByRef hData.Picture) Next $hView.Refresh End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/GridViewSelection.class000066400000000000000000000064711411575327000256660ustar00rootroot00000000000000' Gambas class file Private $aSel As New Integer[] ' Private Sub Dump() ' ' Dim I As Integer ' ' ' ' Print System.Backtrace.Join(" ") ' ' ' Print "Selection = "; ' For I = 0 To $aSel.Max Step 2 ' Print "["; $aSel[I]; ","; $aSel[I + 1]; "] "; ' Next ' Print ' ' End Public Sub Save() As Variant Return $aSel.Copy() End Public Sub Restore(vSel As Variant) $aSel = vSel.Copy() End ' Public Sub Select(iStart As Integer, Optional iLength As Integer = 1) Dim I, S, L As Integer For I = 0 To $aSel.Max Step 2 S = $aSel[I] L = $aSel[I + 1] If iStart >= S And If iStart <= (S + L) Then $aSel[I + 1] = iStart + iLength - S 'Dump Return Else If (iStart + iLength) >= S And If (iStart + iLength) <= (S + L) Then $aSel[I + 1] += $aSel[I] - iStart $aSel[I] = iStart 'Dump Return Endif Next $aSel.Add(iStart) $aSel.Add(iLength) 'Dump End Public Sub UnSelect(iStart As Integer, Optional iLength As Integer = 1) Dim I, S, L As Integer I = 0 While I < $aSel.Count S = $aSel[I] L = $aSel[I + 1] If (iStart + iLength) > S And If iStart < (S + L) Then If iStart <= S And If (iStart + iLength) >= (S + L) Then $aSel.Remove(I, 2) Continue Endif If iStart <= S Then $aSel[I + 1] -= iStart + iLength - S $aSel[I] = iStart + iLength Else If (iStart + iLength) >= (S + L) Then $aSel[I + 1] = iStart - S Else $aSel[I + 1] = iStart - S $aSel.Add(iStart + iLength) $aSel.Add(S + L - iStart - iLength) Endif Endif I += 2 Wend 'Dump End Public Sub UnSelectAll() $aSel.Clear End Public Sub SelectAll(nRows As Integer) UnSelectAll Select(0, nRows) End Public Sub IsSelected(iIndex As Integer) As Boolean Dim I, S, L As Integer For I = 0 To $aSel.Max Step 2 S = $aSel[I] L = $aSel[I + 1] If iIndex >= S And iIndex < (S + L) Then Return True Next End Public Function _GetSelectedRows(iCount As Integer) As Integer[] Dim aRet As New Integer[] Dim I, J, S, L As Integer For I = 0 To $aSel.Max Step 2 S = $aSel[I] L = $aSel[I + 1] For J = 0 To L - 1 If (S + J) >= iCount Then Break aRet.Add(S + J) Next Next Return aRet End Public Sub InsertRows(iStart As Integer, iLength As Integer) Dim I, S, L As Integer For I = 0 To $aSel.Max Step 2 S = $aSel[i] L = $aSel[I + 1] If iStart <= S Then $aSel[I] += iLength Else If iStart <= (S + L) Then $aSel[I + 1] = iStart - S $aSel.Add(iStart + iLength) $aSel.Add(L - (iStart - S)) Endif Next 'Dump End Public Sub RemoveRows(iStart As Integer, iLength As Integer) Dim I, S, L As Integer I = 0 While I < $aSel.Count S = $aSel[I] L = $aSel[I + 1] If (iStart + iLength) <= S Then $aSel[I] -= iLength Else If iStart >= (S + L) Then Else If iStart < S Then iLength -= (S - iStart) $aSel[I] = iStart Endif $aSel[I + 1] -= iLength - (iStart - S) Endif If $aSel[I + 1] <= 0 Then $aSel.Remove(I, 2) Else I += 2 Endif Wend 'Dump End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/_GridView_Cell.class000066400000000000000000000101761411575327000251130ustar00rootroot00000000000000' Gambas class file Export Event _Foo Property Text As String Property RichText As String Property Picture As Picture Property Font As Font Property Alignment As Integer Property WordWrap As Boolean Property Background As Integer Property Foreground As Integer Property Padding As Integer Property RowSpan As Integer Property ColumnSpan As Integer Property Border As Border '' @{since 3.16} '' '' Return or set the tag associated with a cell. '' '' This property is intended for the programmer and is never used by the component. It can contain any Variant value. Property Tag As Variant Property Read X, {Left} As Integer Property Read Y, {Top} As Integer Property Read Width, W As Integer Property Read Height, H As Integer Public _Row As Integer Public _Column As Integer Public _View As GridView Private Sub GetData(bCreate As Boolean) As _GridView_Data _View._CheckCell(_Row, _Column) If bCreate Then _View.Refresh Return _View._GetCellData(_Row, _Column, bCreate) End Private Function Text_Read() As String Return GetData(False).Text End Private Sub Text_Write(Value As String) GetData(True).Text = Value End Private Function Picture_Read() As Picture Return GetData(False).Picture End Private Sub Picture_Write(Value As Picture) GetData(True).Picture = Value End Private Function X_Read() As Integer Return _View.Columns[_Column].X + _View.Proxy.Proxy.X End Private Function Y_Read() As Integer Return _View.Rows[_Row].Y End Private Function Width_Read() As Integer Dim W As Integer = _View._GetCellWidth(_Row, _Column) If _View.Grid Then Dec W Return W End Private Function Height_Read() As Integer Dim H As Integer = _View._GetCellHeight(_Row, _Column) If _View.Grid Then Dec H Return H End Private Function RichText_Read() As String Return GetData(False).RichText End Private Sub RichText_Write(Value As String) GetData(True).RichText = Value End Private Function Font_Read() As Font Return GetData(False).Font End Private Sub Font_Write(Value As Font) GetData(True).Font = Value End Private Function Alignment_Read() As Integer Return GetData(False).Alignment End Private Sub Alignment_Write(Value As Integer) GetData(True).Alignment = Value End Private Function WordWrap_Read() As Boolean Return GetData(False).WordWrap End Private Sub WordWrap_Write(Value As Boolean) GetData(True).WordWrap = Value End Private Function Background_Read() As Integer Return GetData(False).Background End Private Sub Background_Write(Value As Integer) GetData(True).Background = Value End Private Function Foreground_Read() As Integer Return GetData(False).Foreground End Private Sub Foreground_Write(Value As Integer) GetData(True).Foreground = Value End Public Sub Clear() _View._ClearCell(_Row, _Column) End Public Sub EnsureVisible() _View._EnsureVisible(_Row, _Column) End Public Sub Refresh() _View.Refresh End Private Function Padding_Read() As Integer Return GetData(False).Padding End Private Sub Padding_Write(Value As Integer) GetData(True).Padding = Value End Private Function RowSpan_Read() As Integer Dim S As Integer = _View._GetSpan(_Row, _Column)[0] If S >= 0 Then Return S + 1 Return S End Private Sub RowSpan_Write(Value As Integer) Dim S As Integer = _View._GetSpan(_Row, _Column)[1] If S < 0 Then Return If Value < 1 Or If Value > 32767 Then Return _View._SetSpan(_Row, _Column, Value - 1, S) _View.Refresh End Private Function ColumnSpan_Read() As Integer Dim S As Integer = _View._GetSpan(_Row, _Column)[1] If S >= 0 Then Return S + 1 Return S End Private Sub ColumnSpan_Write(Value As Integer) Dim S As Integer = _View._GetSpan(_Row, _Column)[0] If S < 0 Then Return If Value < 1 Or If Value > 32767 Then Return _View._SetSpan(_Row, _Column, S, Value - 1) _View.Refresh End Private Function Border_Read() As Border Return GetData(False).Border End Private Sub Border_Write(Value As Border) GetData(True).Border = Value End Private Function Tag_Read() As Variant Return GetData(False).Tag End Private Sub Tag_Write(Value As Variant) GetData(True).Tag = Value End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/_GridView_Column.class000066400000000000000000000052371411575327000254730ustar00rootroot00000000000000' Gambas class file Export Property Read X, {Left} As Integer Property Width, W As Integer Property Text, Title As String Property Resizable As Boolean Property Expand As Boolean Property Alignment As Integer Property Background As Integer '' @{since 3.16} '' '' Return or set the tag associated with a column. '' '' This property is intended for the programmer and is never used by the component. It can contain any Variant value. Property Tag As Variant Event _Refresh Public _X As Integer Public _W As Integer Public _Column As Integer Private $W As Integer Private $sText As String Private $bResizable As Boolean = True Private $bExpand As Boolean Private $iAlign As Integer Private $iBackground As Integer = Color.Default Private $vTag As Variant Private Sub GetView() As GridView Return Object.Parent(Object.Parent(Me)) End Public Sub _new() $W = Desktop.Scale * 8 End Private Function Width_Read() As Integer Return Max(_W, $W) End Public Sub _GetExplicitWidth() As Integer Return $W End Private Sub Width_Write(Value As Integer) Dim bCancel As Boolean 'Dim bSetLayout As Boolean If Value < 0 Then bCancel = GetView()._RaiseColumnSize(_Column) If Not bCancel Then Return Value = GetView()._GetPreferredWidth(_Column) 'bSetLayout = True Endif If Value < 0 Or If Value = $W Then Return $W = Max(0, Value) 'If bSetLayout Then _W = $W _W = $W Raise _Refresh GetView()._RaiseColumnResize(_Column) End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value $W = Max($W, GetView().Font.TextWidth($sText) + 8 + If(GetView().Sorted, 16, 0)) Raise _Refresh End Private Function X_Read() As Integer Return _X End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Private Function Expand_Read() As Boolean Return $bExpand End Private Sub Expand_Write(Value As Boolean) $bExpand = Value Raise _Refresh End Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Alignment_Write(Value As Integer) Select Case Value Case Align.Left, Align.Right, Align.Normal, Align.Center Default Return End Select If $iAlign = Value Then Return $iAlign = Value GetView().Refresh End Private Function Background_Read() As Integer Return $iBackground End Private Sub Background_Write(Value As Integer) If $iBackground = Value Then Return $iBackground = Value GetView().Refresh End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/_GridView_Columns.class000066400000000000000000000104601411575327000256500ustar00rootroot00000000000000' Gambas class file Export Property Count As Integer Property Read Max As Integer Property Read Height, H As Integer Property Resizable As Boolean Property Width, W As Integer Property Sort As Integer Property Ascending As Boolean Event _Refresh Private $aColumns As New _GridView_Column[] Private $iWidth As Integer Private $iHeight As Integer Private $bResizable As Boolean = True Private $bLayouting As Boolean Private $iSort As Integer = -1 Private $bAscent As Boolean Private Sub GetView() As GridView Return Object.Parent(Me) End Private Function Count_Read() As Integer Return $aColumns.Count End Private Sub Count_Write(Value As Integer) Dim iOldCount As Integer = $aColumns.Count Dim I As Integer If Value = iOldCount Then Return Try $aColumns.Resize(Value) If Error Then Error.Raise("Bad argument") If Value > iOldCount Then If GetView().AutoResize And If iOldCount Then $aColumns[iOldCount - 1]._W = 0 For I = iOldCount To Value - 1 $aColumns[I] = New _GridView_Column As "Column" $aColumns[I]._Column = I Next Endif GetView()._CheckCurrent _Layout End Public Sub Column__Refresh() _Layout End Private Function Height_Read() As Integer With GetView() If $aColumns.Count Then If .Header = .Horizontal Or If .Header = .Both Then Return $iHeight + 2 Endif End With End Public Sub _get(Index As Integer) As _GridView_Column Return $aColumns[Index] End Public Sub _GetWidth() As Integer Return $iWidth End Public Sub _FindColumnFromPos(X As Integer) As Integer Dim I As Integer If X < 0 Then Return -1 For I = 0 To $aColumns.Max With $aColumns[I] If X >= .X And If X < (.X + .Width) Then Return I End With Next Return -1 End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Public Sub _Layout() Dim hView As GridView = GetView() Dim I, W, WX, N, NX, VW, H As Integer Dim hCol As _GridView_Column Dim X As Integer Dim FH As Integer VW = hView._GetVisibleWidth() N = $aColumns.Count - 1 'Debug N If N >= 0 And If hView.AutoResize And If Not $bLayouting Then $bLayouting = True For I = 0 To N With $aColumns[I] If .Expand Then WX = ._GetExplicitWidth() If WX Then W += WX Inc NX Endif Else W += .Width Endif End With Next If NX = 0 Then W = $aColumns[N].Width + VW - W If W > 0 Then $aColumns[N]._W = W Endif Else If W < VW Then For I = 0 To N If $aColumns[I].Expand Then WX = (VW - W) / NX $aColumns[I]._W = $aColumns[I]._GetExplicitWidth() + WX W += WX Dec NX If NX <= 0 Then Break Endif Next Endif $bLayouting = False Endif FH = GetView().Font.Height For Each hCol In $aColumns hCol._X = X X += hCol.Width H = Max(H, hView.Font.TextHeight(hCol.Text) + Max(hView.Padding * 2, Desktop.Scale)) Next If System.RightToLeft Then 'Debug ""; I = 0 For Each hCol In $aColumns hCol._X = Max(X, VW) - hCol._X - hCol.Width 'Error "["; I; "] "; hCol._X;; Inc I Next 'Error Endif If X <> $iWidth Or If H <> $iHeight Then $iWidth = X $iHeight = H hView._ResizeContents Endif hView.Refresh End Private Function Max_Read() As Integer Return $aColumns.Max End Private Function Width_Read() As Integer If $aColumns.Count Then Return $aColumns[0].Width Return -1 End Private Sub Width_Write(Value As Integer) Dim hCol As _GridView_Column For Each hCol In $aColumns Object.Lock(hCol) hCol.Width = Value Object.Unlock(hCol) Next _Layout End Private Function Sort_Read() As Integer Return $iSort End Private Sub Sort_Write(Value As Integer) If $iSort = Value Then Return $iSort = Value With GetView() ._RaiseSort .Refresh End With End Private Function Ascending_Read() As Boolean Return $bAscent End Private Sub Ascending_Write(Value As Boolean) If $bAscent = Value Then Return $bAscent = Value With GetView() ._RaiseSort .Refresh End With End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/_GridView_Data.class000066400000000000000000000014331411575327000251010ustar00rootroot00000000000000' Gambas class file Export Event _Fake Public Text As String Public RichText As String Public (Picture) As Picture Public Alignment As Integer = Align.Normal Public Foreground As Integer = Color.Default Public Background As Integer = Color.Default Public Padding As Short Public WordWrap As Boolean Public Border As Border '' @{since 3.16} '' '' Return or set the tag associated with a cell. '' '' This property is intended for the programmer and is never used by the component. It can contain any Variant value. Public Tag As Variant Property Font As Font Private $hFont As Font Private Function Font_Read() As Font Return $hFont End Private Sub Font_Write(Value As Font) If Value Then $hFont = Value.Copy() $hFont.Modified = True Else $hFont = Null Endif End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/_GridView_Row.class000066400000000000000000000033621411575327000250020ustar00rootroot00000000000000' Gambas class file Export Event _Refresh Property Read Y, {Top} As Integer Property Height, H As Integer Property Selected As Boolean Property Text, Title As String Property Border As Border Property TextAlignment As Integer Public _Row As Integer Private Sub GetRows() As _GridView_Rows Return Object.Parent(Me) End Private Sub GetView() As GridView Return Object.Parent(Object.Parent(Me)) End Private Function Height_Read() As Integer Return GetRows()._GetRowHeight(_Row) End Private Sub Height_Write(Value As Integer) GetRows()._SetRowHeight(_Row, Value) End Private Function Y_Read() As Integer Return GetRows()._GetRowY(_Row) End Private Function Selected_Read() As Boolean Return GetView()._IsRowSelected(_Row) End Private Sub Selected_Write(Value As Boolean) Dim hView As GridView = GetView() Dim hRows As _GridView_Rows = GetRows() If hView.Mode = Select.Single Then hView._SelectRow(_Row, Value) Else If hView.Mode = Select.Multiple Then If Value Then If Not hRows._IsSelected(_Row) Then hRows.Select(_Row) Else If hRows._IsSelected(_Row) Then hRows.UnSelect(_Row) Endif Endif End Private Function Text_Read() As String Return GetRows()._GetRowText(_Row) End Private Sub Text_Write(Value As String) GetRows()._SetRowText(_Row, Value) End Public Sub Refresh() GetView()._RefreshRow(_Row) End Private Function Border_Read() As Border Return GetRows()._GetRowBorder(_Row) End Private Sub Border_Write(Value As Border) GetRows()._SetRowBorder(_Row, Value) End Private Function TextAlignment_Read() As Integer Return GetRows()._GetRowTextAlign(_Row) End Private Sub TextAlignment_Write(Value As Integer) GetRows()._SetRowTextAlign(_Row, Value) End gambas-3.16.3/comp/src/gb.gui.base/.src/GridView/_GridView_Rows.class000066400000000000000000000235141411575327000251660ustar00rootroot00000000000000' Gambas class file Export Property Count As Integer Property Read Max As Integer Property Width, W As Integer Property Resizable As Boolean Property Height, H As Integer Property Selection As Integer[] Property Border As Border Event _Refresh 'Private $aRows As New _GridView_Row[] Private $nRows As Integer Private $cHeight As Collection Private $aHeight As Integer[] Private $bResizable As Boolean = True Private $cText As Collection Private $iDefaultHeight As Integer Private $iWidth As Integer Private $hBorder As Border Private $cBorder As Collection Private $cTextAlign As Collection Private $hSel As New GridViewSelection Public Sub _SetSelection(hSel As GridViewSelection) $hSel = hSel End Public Sub _GetSelection() As GridViewSelection Return $hSel End Private Sub GetView() As GridView Return Object.Parent(Me) End Private Function Count_Read() As Integer Return $nRows End Private Sub Count_Write(Value As Integer) Dim hView As GridView = GetView() Dim iRow As Integer If Value = $nRows Then Return $nRows = Value If $aHeight Then While $aHeight.Count If $aHeight[$aHeight.Max] < $nRows Then Break iRow = $aHeight[$aHeight.Max] $cHeight.Remove(iRow) $aHeight.Remove($aHeight.Max) If hView.Mode = Select.Multiple Then $hSel.UnSelect(iRow) Wend Endif If $cText Then For Each $cText If CInt($cText.Key) >= Value Then 'Debug "Remove text from " & $cText.Key $cText.Remove($cText.Key) Endif Next Endif If $cBorder Then For Each $cBorder If CInt($cBorder.Key) >= Value Then $cBorder.Remove($cBorder.Key) Endif Next Endif If hView.Row >= $nRows Then hView.Row = -1 With hView ._ResizeContents() ._CheckCurrent() .Refresh End With End Public Sub _get(Row As Integer) As _GridView_Row Dim hRow As _GridView_Row hRow = New _GridView_Row As "Row" hRow._Row = Row Return hRow End Public Sub _GetDefaultRowHeight() As Integer Dim hView As GridView Dim H As Integer If $iDefaultHeight > 0 Then Return $iDefaultHeight hView = GetView() H = hView._GetTextHeight() + hView.Padding * 2 + 2 If $hBorder Then With $hBorder H += .TopPadding + .BottomPadding + .TopWidth + .BottomWidth + .TopMargin + .BottomMargin H -= (.TopMargin + .BottomMargin) / 2 End With Endif Return H End Public Sub _GetRowY(iRow As Integer) As Integer Dim Y As Integer Dim DH As Integer = _GetDefaultRowHeight() Dim I As Integer Y = iRow * DH If $cHeight Then For Each I In $aHeight If I < iRow Then Y += $cHeight[I] - DH Next Endif Return Y End Public Sub _GetRowHeight(iRow As Integer) As Integer Try Return $cHeight[iRow] Return _GetDefaultRowHeight() End Private Sub AddSorted(iRow As Integer) Dim I, J As Integer I = 0 J = $aHeight.Max If J < 0 Or If iRow > $aHeight[J] Then $aHeight.Add(iRow) Return Endif '' TODO: Binary search $aHeight.Add(iRow) $aHeight.Sort End Public Sub _ResetRowHeight(iRow As Integer) Dim hView As GridView = GetView() If $cHeight.Exist(iRow) Then $cHeight.Remove(iRow) $aHeight.Remove($aHeight.Find(iRow)) hView._ResizeContents() hView._RaiseRowResize(iRow) Endif End Public Sub _SetRowHeight(iRow As Integer, H As Integer) Dim hView As GridView = GetView() Dim DH As Integer = _GetDefaultRowHeight() Dim OH As Integer Dim bCancel As Boolean H = Min(1024, H) If Not $cHeight Then $cHeight = New Collection $aHeight = New Integer[] Endif If H < 0 Then bCancel = hView._RaiseRowSize(iRow) If Not bCancel Then Return H = hView._GetPreferredHeight(iRow) Endif If H = DH Then _ResetRowHeight(iRow) Return Endif If H >= 0 Then OH = -1 Try OH = $cHeight[iRow] If H <> OH Then If OH < 0 Then AddSorted(iRow) $cHeight[iRow] = H hView._ResizeContents() hView._RaiseRowResize(iRow) Endif Endif End Private Function Width_Read() As Integer With GetView() If $nRows Then If .Header = .Vertical Or If .Header = .Both Then If $iWidth Then Return $iWidth Else Return Max(.Font.TextWidth("9"), .Font.TextWidth("0")) * (2 + CInt(Log10(Max(1, $nRows)))) + .Padding * 2 + 2 Endif Endif Endif End With End Public Sub _GetHeight() As Integer Dim H, DH, HR As Integer DH = _GetDefaultRowHeight() H = DH * $nRows If $cHeight Then H -= DH * $cHeight.Count For Each HR In $cHeight H += HR Next Endif Return H End Public Sub _FindRowFromPos(Y As Integer) As Integer Dim iRow, YY, H As Integer Dim DH As Integer = _GetDefaultRowHeight() If $cHeight Then For Each iRow In $aHeight YY = iRow * DH If Y < YY Then Break H = $cHeight[iRow] If Y < (YY + H) Then Return iRow Y -= H - DH Next Endif iRow = Y / DH If iRow < 0 Or If iRow >= $nRows Then iRow = -1 Return iRow End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Public Sub _GetRowText(iRow As Integer) As String Dim sText As String If $cText Then sText = $cText[iRow] If Not sText Then sText = CStr(iRow + 1) Return sText End Public Sub _SetRowText(iRow As Integer, sText As String) Dim W As Integer If Not $cText Then $cText = New Collection $cText[iRow] = sText If sText Then W = GetView().Font.TextWidth(sText) + 8 If W > Width_Read() Then $iWidth = W Endif GetView().Refresh End Public Sub Select(Optional Start As Integer = 0, Optional Length As Integer = 1) Dim hView As GridView = GetView() If hView.Mode = Select.Single And If Length = 1 Then hView.Row = Start Else If hView.Mode = Select.Multiple Then If Start < 0 Then Return If Start >= $nRows Then Return If Length < 0 Then Length = $nRows - Start $hSel.Select(Start, Length) hView.Refresh hView._RaiseSelect Endif End Public Sub UnSelect(Optional Start As Integer = 0, Optional Length As Integer = 1) Dim hView As GridView = GetView() If hView.Mode = Select.Single And If Length = 1 And If hView.Row = Start Then hView.Row = -1 Else If hView.Mode = Select.Multiple Then If Start < 0 Then Return If Start >= $nRows Then Return If Length < 0 Then Length = $nRows - Start $hSel.UnSelect(Start, Length) hView._RaiseSelect Endif End Public Sub SelectAll() Dim hView As GridView = GetView() If hView.Mode <> Select.Multiple Then Return $hSel.SelectAll($nRows) hView._RaiseSelect End Public Sub UnSelectAll() Dim hView As GridView = GetView() If hView.Mode = Select.Single Then $hSel.UnSelectAll hView.Row = -1 Else If hView.Mode = Select.Multiple Then $hSel.UnSelectAll hView.Refresh hView._RaiseSelect Endif End Public Sub _IsSelected(iRow As Integer) As Boolean Return $hSel.IsSelected(iRow) End Public Sub _SaveSelection() As Variant Return $hSel.Save() End Public Sub _RestoreSelection(vSel As Variant) $hSel.Restore(vSel) End Private Sub Height_Read() As Integer Return _GetDefaultRowHeight() End Private Sub Height_Write(Value As Integer) $iDefaultHeight = Value GetView()._ResizeContents() End Private Function Max_Read() As Integer Return $nRows - 1 End Private Sub Width_Write(Value As Integer) $iWidth = Max(0, Value) End Public Sub Remove(Start As Integer, Optional Length As Integer = 1) GetView()._RemoveRows(Start, Length) End Public Sub Insert(Start As Integer, Optional Length As Integer = 1) GetView()._InsertRows(Start, Length) End Public Sub _Clear() If $cHeight Then $cHeight.Clear $aHeight.Clear If $cText Then $cText.Clear Endif $hSel.UnSelectAll End '' Return an integer array of all the selected rows Private Function Selection_Read() As Integer[] Dim hView As GridView = GetView() If hView.Mode = Select.Single Then If hView.Row >= 0 Then Return [hView.Row] Endif Else If hView.Mode = Select.Multiple Then Return $hSel._GetSelectedRows($nRows) Endif Return New Integer[] End Private Sub Selection_Write(Value As Integer[]) Dim hView As GridView = GetView() Dim iRow As Integer If hView.Mode = Select.Single Then If Not Value Then hView.Row = -1 Else hView.Row = Value[Value.Max] Endif Else If hView.Mode = Select.Multiple Then $hSel.UnSelectAll For Each iRow In Value $hSel.Select(iRow) Next hView.Refresh Endif End Private Function Border_Read() As Border Return $hBorder End Private Sub Border_Write(Value As Border) $hBorder = Value End Public Sub _SetRowBorder(iRow As Integer, hBorder As Border) If Not $cBorder Then $cBorder = New Collection $cBorder[iRow] = hBorder End Public Sub _GetRowBorder(iRow As Integer) As Border Dim hBorder As Border If $cBorder Then hBorder = $cBorder[iRow] If Not hBorder Then hBorder = $hBorder If hBorder And If Not hBorder.IsVoid() Then Return hBorder End Public Sub _SetRowTextAlign(iRow As Integer, iAlign As Integer) Select Case iAlign Case Align.Left, Align.Right, Align.Center, Align.Normal Default Return End Select If Not $cTextAlign Then If iAlign = Align.Center Then Return $cTextAlign = New Collection $cTextAlign.Default = Align.Center Endif If iAlign = Align.Center Then $cTextAlign.Remove(iRow) Else $cTextAlign[iRow] = iAlign Endif GetView().Refresh End Public Sub _GetRowTextAlign(iRow As Integer) As Integer If $cTextAlign Then Return $cTextAlign[iRow] Else Return Align.Normal Endif End gambas-3.16.3/comp/src/gb.gui.base/.src/IconView/000077500000000000000000000000001411575327000212445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/IconView/IconView.class000066400000000000000000000755601411575327000240330ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Picture,Mode{Select.*}=Single,Orientation{Arrange.Horizontal;Vertical}=Vertical,Sorted,Editable,GridSize{Range:0;128},IconLines{Range:1;8}=2,Border=True,ScrollBar{Scroll.*}=Both" Public Const _Group As String = "View" Public Const _DefaultEvent As String = "Click" Public Const _Similar As String = "ListView" Property Mode As Integer Property Orientation As Integer Property Border As Boolean Property ScrollBar As Integer Property Background As Integer Property Read Count As Integer Property Read Current As _IconView_Item Property Read Item As _IconView_Item Property Read Available As Boolean Property Key As String Property Read Keys As String[] Property Compare As Integer Property Editable As Boolean Property Sorted As Boolean Property Ascending As Boolean Property Picture As Picture Property Read IconSize As Integer Property IconLines As Integer Property GridSize As Integer Property Read Renaming As Boolean Property Read ClientWidth, ClientW As Integer Property Read ClientHeight, ClientH As Integer Property ScrollX As Integer Property ScrollY As Integer Property Read ScrollW, ScrollWidth As Integer Property Read ScrollH, ScrollHeight As Integer Event Select Event Activate Event Click Event Rename Event Cancel Event Compare(Key As String, OtherKey As String) Event Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Key As String) Private Enum EVENT_ACTIVATE, EVENT_CLICK, EVENT_RENAME Private $iMode As Integer = Select.Single Private $bHorizontal As Boolean Private $hView As ScrollArea 'Private $hObserver As Observer Private $cItems As New Collection Private $aItems As New _IconView_Item[] Private $cSelection As New Collection Private $iIconSize As Integer Private $iIconLines As Integer = 2 Private $iGridSize As Integer Private $iGridWidth As Integer = 8 Private $iGridHeight As Integer = 8 Private $iPad As Integer Private $nColumn As Integer Private $iHover As Integer = -1 Private $iStart As Integer = -1 Private $iCurrent As Integer = -1 Private $bSelRect As Boolean Private $X1 As Integer Private $Y1 As Integer Private $X2 As Integer Private $Y2 As Integer Private $hSelTimer As Timer Private $iIntern As Integer = -1 Private $iBack As Integer = -1 Private $bSelectionChanged As Boolean Private $hSelChangedTimer As Timer Private $bSorted As Boolean Private $bAscending As Boolean = True Private $iCompare As Integer Private $bCompareSet As Boolean Private $bSortDirty As Boolean Private $hUpdateSortTimer As Timer Private $bEditable As Boolean Private $hRenameBox As RenameBox Private $iRename As Integer = -1 Private $iCurrentBefore As Integer Private $hPicture As Picture Private $sFindItem As String Private $fFindTime As Float Private $iLock As Integer Private $hArrangeTimer As Timer Public Sub _new() $hView = New ScrollArea(Me) As "ScrollArea" $hView.Background = Color.TextBackground $hView.Focus = True $hView.Tracking = True $hView.ScrollBar = Scroll.Vertical Me.Proxy = $hView Border_Write(True) '$hObserver = New Observer(Me) As "ScrollArea" $hSelChangedTimer = New Timer As "SelectionChanged" End Public Sub _get((Key) As String) As _IconView_Item Return $cItems[Key] End Public Sub Clear() ExitRename $cItems.Clear $aItems.Clear $cSelection.Clear $iCurrent = -1 $iStart = -1 $iHover = -1 $iIntern = -1 $iBack = -1 $iIconSize = 0 ScrollArea_Arrange End Public Sub Exist((Key) As String) As Boolean Return $cItems.Exist(Key) End Public Sub FindAt(X As Integer, Y As Integer) As Boolean $iIntern = FindIconAccurate(X, Y) Return $iIntern < 0 End Private Sub SetIntern(iIntern As Integer) If iIntern < 0 Or iIntern > $aItems.Max Then $iBack = $iIntern $iIntern = -1 Else $iIntern = iIntern Endif End Public Function MoveTo((Key) As String) As Boolean If Not $cItems.Exist(Key) Then SetIntern(-1) Else SetIntern(_FindItem($cItems[Key])) Endif Return $iIntern < 0 End Public Function MoveFirst() As Boolean SetIntern(0) Return $iIntern < 0 End Public Function MoveNext() As Boolean SetIntern($iIntern + 1) Return $iIntern < 0 End Public Function MovePrevious() As Boolean SetIntern($iIntern - 1) Return $iIntern < 0 End Public Sub MoveBack() $iIntern = $iBack $iBack = -1 End Public Sub _FindItem(hItem As _IconView_Item) As Integer If hItem Then UpdateSort Return $aItems.FindByRef(hItem) Else Return -1 Endif End Public Sub _UpdateIconSize((Picture) As Picture) If {Picture} And If Picture.Height > $iIconSize Then $iIconSize = Picture.Height ScrollArea_Arrange Else If Not {Picture} Or If Picture.Height < $iIconSize Then If Not $hArrangeTimer Then $hArrangeTimer = New Timer As "ArrangeTimer" $hArrangeTimer.Trigger Endif Endif End Public Sub ArrangeTimer_Timer() Dim hItem As _IconView_Item Dim hPicture As Picture $iIconSize = 0 For Each hItem In $aItems hPicture = hItem.Picture If hPicture And If hPicture.Height > $iIconSize Then $iIconSize = hPicture.Height Next ScrollArea_Arrange $hArrangeTimer = Null End Public Function Add((Key) As String, Text As String, Optional (Picture) As Picture, Optional After As String) As _IconView_Item Dim hItem As _IconView_Item = New _IconView_Item As "IconViewItem" Dim hAfter As _IconView_Item Dim iPos As Integer If Not Key Then Error.Raise("Void key") If $cItems.Exist(Key) Then Error.Raise("Key already used") If After Then hAfter = $cItems[Key] If Not hAfter Then Error.Raise("After item does not exist") Endif hItem._Key = Key $cItems[Key] = hItem If hAfter Then iPos = _FindItem(hAfter) + 1 $aItems.Add(hItem, iPos) Else $aItems.Add(hItem) iPos = $aItems.Max Endif $iIntern = iPos ScrollArea_Arrange hItem.Text = Text hItem.Picture = {Picture} _UpdateIconSize(Picture) _SortIsDirty Return hItem End Public Sub Remove((Key) As String) Dim hItem As _IconView_Item Dim iPos As Integer hItem = $cItems[Key] If Not hItem Then Return hItem.Selected = False iPos = _FindItem(hItem) $aItems.Remove(iPos) $cItems.Remove(Key) RefreshIcon(iPos) _SortIsDirty ScrollArea_Arrange End Private Sub FindIcon(X As Integer, Y As Integer, Optional bIgnoreOutside As Boolean) As Integer Dim iPos As Integer X -= $iPad Y -= $iPad If $bHorizontal Then iPos = Y \ $iGridHeight If iPos >= $nColumn Then If Not bIgnoreOutside Then Return -1 iPos = $nColumn - 1 Endif iPos += (X \ $iGridWidth) * $nColumn If iPos >= $aItems.Count Then If Not bIgnoreOutside Then Return -1 iPos = $aItems.Max Endif Else iPos = X \ $iGridWidth If iPos >= $nColumn Then If Not bIgnoreOutside Then Return -1 iPos = $nColumn - 1 Endif iPos += (Y \ $iGridHeight) * $nColumn If iPos >= $aItems.Count Then If Not bIgnoreOutside Then Return -1 iPos = $aItems.Max Endif Endif Return iPos End Private Sub FindIconAccurate(X As Integer, Y As Integer) As Integer Dim iPos As Integer Dim hRect As Rect iPos = FindIcon(X, Y) If iPos >= 0 Then hRect = New Rect GetIconGeometry(iPos, hRect) If Not $aItems[iPos]._Inside(hRect, Me, $bHorizontal, X, Y) Then Return -1 Endif Return iPos End Private Sub GetRow(iPos As Integer) As Integer Return iPos \ $nColumn End Private Sub GetColumn(iPos As Integer) As Integer Return iPos - GetRow(iPos) * $nColumn End ' Private Sub GetPos(iRow As Integer, iColumn As Integer) As Integer ' ' Return iColumn + iRow * $nColumn ' ' End Private Sub GetIconGeometry(iPos As Integer, hRect As Rect) Dim iCol, iRow As Integer iRow = GetRow(iPos) iCol = GetColumn(iPos) If $bHorizontal Then hRect.X = iRow * $iGridWidth + $iPad hRect.Y = iCol * $iGridHeight + $iPad hRect.W = $iGridWidth hRect.H = $iGridHeight Else hRect.X = iCol * $iGridWidth + $iPad hRect.Y = iRow * $iGridHeight + $iPad hRect.W = $iGridWidth hRect.H = $iGridHeight Endif End Public Sub _GetItemGeometry(hItem As _IconView_Item, hRect As Rect) GetIconGeometry(_FindItem(hItem), hRect) End Public Sub ScrollArea_Draw() Dim X, Y, W, H As Integer Dim X1, Y1, X2, Y2 As Integer Dim hItem As _IconView_Item Dim iPos, iLast, iCol, nCol As Integer Dim hRect As New Rect Dim hClip, hSaveClip As Rect Dim bHover As Boolean Dim bRaiseDraw As Boolean Dim bFocus As Boolean If $aItems.Count = 0 Then Return If $iLock Then Return bFocus = $hView.HasFocus hSaveClip = Paint.ClipRect If $hPicture Then Draw.FillX = -$hView.ScrollX Draw.FillY = -$hView.ScrollY Draw.Tile($hPicture, 0, 0, Draw.Width, Draw.Height) Endif bRaiseDraw = Object.CanRaise(Me, "Draw") X = hSaveClip.X + $hView.ScrollX Y = hSaveClip.Y + $hView.ScrollY W = hSaveClip.W H = hSaveClip.H iPos = FindIcon(X, Y) If $bHorizontal Then nCol = FindIcon(X, Y + H - 1, True) - iPos + 1 Else nCol = FindIcon(X + W - 1, Y, True) - iPos + 1 Endif iLast = FindIcon(X + W - 1, Y + H - 1, True) iCol = 0 While iPos <= iLast If iPos >= 0 And If iPos < $aItems.Count Then hItem = $aItems[iPos] GetIconGeometry(iPos, hRect) hRect.Translate(-$hView.ScrollX, -$hView.ScrollY) 'Debug iPos hClip = hRect.Intersection(hSaveClip) If hClip Then bHover = iPos = $iHover 'If $iMode = Select.Multiple And If iPos = $iStart Then bHover = True hItem._Draw(hRect, hClip, Me, $bHorizontal, bFocus, bHover, iPos = $iCurrent) ' _HaveFocus, $iMouseOver = k And Me.Tracking) If bRaiseDraw Then Paint.Save Raise Draw(hRect.X, hRect.Y, hRect.W, hRect.H, hItem.Key) Paint.Restore Endif Endif Endif Inc iCol Inc iPos If iCol >= nCol Then iPos += $nColumn - nCol iCol = 0 'Debug "---" Endif Wend Draw.ClipRect = hSaveClip '(X, Y, W, H) If $bSelRect Then 'Paint.Begin(Draw.Device) 'Paint.Rectangle(X, Y, W, H) Paint.ClipRect = hSaveClip Paint.Translate(-$hView.ScrollX, -$hView.ScrollY) X1 = $X1 Y1 = $Y1 X2 = $X2 Y2 = $Y2 If X2 < X1 Then Swap X1, X2 If Y2 < Y1 Then Swap Y1, Y2 Paint.Rectangle(X1, Y1, X2 - X1 + 1, Y2 - Y1 + 1) Paint.Background = Color.SetAlpha(Color.SelectedBackground, 192) Paint.Fill Paint.Background = Color.SelectedBackground Paint.Rectangle(X1 + 0.5, Y1 + 0.5, X2 - X1, Y2 - Y1) Paint.LineWidth = 1 Paint.Stroke 'Paint.End Endif ' FIXME: GTK+ bug If $hRenameBox And If $hRenameBox.Visible Then $hRenameBox.Refresh 'Debug ">>>" End Public Sub ScrollArea_Arrange() Dim W, H As Integer Dim nRow As Integer Dim DS As Integer If $iLock Then Return DS = Desktop.Scale W = $hView.ClientWidth H = $hView.ClientHeight If $aItems.Count = 0 Then $hView.ResizeContents(4, 4) $hView.Refresh Return Endif ExitRename If $bHorizontal Then $iGridHeight = Max(DS, $iIconSize) + DS * 2 $iGridHeight = Max($iGridHeight, Me.Font.Height * $iIconLines + DS) If $iGridSize Then $iGridWidth = $iGridSize * DS Else $iGridWidth = $iIconSize + DS * 2 Endif $iGridWidth = Max($iGridWidth, $iIconSize + DS) $nColumn = Max(1, (H - $iPad * 2) \ $iGridHeight) nRow = ($aItems.Count + $nColumn - 1) \ $nColumn If nRow = 1 Then $iGridWidth = Max($iGridWidth, W - $iPad * 2) Else $iGridHeight = Max(1, (H - $iPad * 2) \ $nColumn) Endif $hView.ResizeContents(nRow * $iGridWidth + $iPad * 2, Max(H, $nColumn * $iGridHeight + $iPad * 2)) Else $iGridHeight = Max(DS * 4, $iIconSize) + $iIconLines * Me.Font.Height + DS * 4 If $iGridSize Then $iGridWidth = $iGridSize * DS Else $iGridWidth = $iIconSize + DS * 2 Endif $iGridWidth = Max($iGridWidth, Me.Font.Height * DS) $nColumn = Max(1, (W - $iPad * 2) \ $iGridWidth) $iGridWidth = Max(1, (W - $iPad * 2) \ $nColumn) nRow = ($aItems.Count + $nColumn - 1) \ $nColumn $hView.ResizeContents(Max(W, $nColumn * $iGridWidth + $iPad * 2), nRow * $iGridHeight + $iPad * 2) Endif End Public Sub ScrollArea_Resize() ScrollArea_Arrange End Public Sub ScrollArea_Scroll() If Not Me.Enabled Or If Me.Design Then Return ExitRename SetHoverItem(FindIconAccurate(Mouse.ScreenX - $hView.ScreenX - $hView.ClientX + $hView.ScrollX, Mouse.ScreenY - $hView.ScreenY - $hView.ClientY + $hView.ScrollY)) End Private Function Count_Read() As Integer Return $aItems.Count End Private Sub RefreshIcon(iPos As Integer) Dim hRect As New Rect If $iLock Then Return If iPos < 0 Then Return GetIconGeometry(iPos, hRect) hRect.Translate(-$hView.ScrollX, -$hView.ScrollY) 'Debug "Refresh:";; hRect.X;; hRect.Y;; hRect.W;; hRect.H $hView.View.Refresh(hRect.X, hRect.Y, hRect.W, hRect.H) End Private Sub SetHoverItem(iPos As Integer) Dim hItem As _IconView_Item If iPos = $iHover Then Return Swap iPos, $iHover RefreshIcon(iPos) RefreshIcon($iHover) $hView.Tooltip = "" If $iHover >= 0 Then hItem = $aItems[$iHover] If hItem._IsEllipsized() Then $hView.Tooltip = hItem.Text Endif End Public Sub ScrollArea_Leave() SetHoverItem(-1) End Public Sub _EnsureVisible(iPos As Integer) Dim hRect As New Rect GetIconGeometry(iPos, hRect) $hView.EnsureVisible(hRect.X - $iPad, hRect.Y - $iPad, hRect.W + $iPad * 2, hRect.H + $iPad * 2) End Private Sub ToggleCurrentItem(iPos As Integer) Dim iOld As Integer $aItems[iPos].Selected = Not $aItems[iPos].Selected iOld = $iCurrent $iCurrent = iPos $iStart = iPos RefreshIcon(iOld) RefreshIcon($iCurrent) If $iCurrent >= 0 Then _EnsureVisible($iCurrent) End Private Sub SetCurrentItem(iCurrent As Integer, Optional bIgnoreOutside As Boolean, Optional bSelect As Boolean) Dim iOld As Integer If $bSelRect Then Return If iCurrent = $iCurrent Then Return iOld = $iCurrent If iCurrent < 0 Or If iCurrent > $aItems.Max Then iCurrent = -1 If bIgnoreOutside Or If $iMode = Select.Single Then Return Endif If Not bSelect Then If $iMode = Select.Single Then UnselectAll Else If $iMode = Select.Multiple Then If iCurrent < 0 Or If Not $aItems[iCurrent].Selected Then UnselectAll Endif If iCurrent >= 0 Then $aItems[iCurrent].Selected = True $iCurrent = iCurrent $iStart = $iCurrent Endif Else If iCurrent >= 0 Then SelectRect(False) $iCurrent = iCurrent SelectRect(True) Endif Endif If $iCurrent >= 0 Then _EnsureVisible($iCurrent) RefreshIcon(iOld) RefreshIcon($iCurrent) End Private Function Current_Read() As _IconView_Item Try Return $aItems[$iCurrent] End Public Sub SelectAll() Dim hItem As _IconView_Item For Each hItem In $aItems hItem.Selected = True Next End Public Sub UnselectAll() Dim hItem As _IconView_Item If $cSelection.Count = 0 Then Return For Each hItem In $cSelection hItem.Selected = False Next $iCurrent = -1 $iStart = -1 SelectionChanged End Private Function Mode_Read() As Integer Return $iMode End Private Sub Mode_Write(Value As Integer) Dim iCurrent As Integer If $iMode = Value Then Return Select Case Value Case Select.None UnselectAll Case Select.Single iCurrent = $iCurrent UnselectAll SetCurrentItem($iCurrent) Case Select.Multiple Case Else Return End Select $iMode = Value End Public Sub ScrollArea_KeyPress() Dim iCode As Integer Dim bShift As Boolean Dim fNow As Float Dim iInd As Integer Dim iPos As Integer Dim iStart As Integer If Not Me.Enabled Or If Me.Design Then Return If $iMode = Select.None Then Else If $iMode = Select.Multiple Then bShift = Key.Shift Endif iCode = Key.Code If $bHorizontal Then Select iCode Case Key.Left iCode = Key.Up Case Key.Right iCode = Key.Down Case Key.Up iCode = Key.Left Case Key.Down iCode = Key.Right End Select Endif Select iCode Case Key.Left SetCurrentItem($iCurrent - 1, True, bShift) Stop Event Case Key.Right SetCurrentItem($iCurrent + 1, True, bShift) Stop Event Case Key.Up SetCurrentItem($iCurrent - $nColumn, True, bShift) Stop Event Case Key.Down If $iCurrent < 0 Then SetCurrentItem(0, True, bShift) Else SetCurrentItem($iCurrent + $nColumn, True, bShift) Endif Stop Event Case Key.Home SetCurrentItem(0, True, bShift) Stop Event Case Key.End SetCurrentItem($aItems.Max, True, bShift) Stop Event Case Key["A"] If Key.Control Then SelectAll Case Key.F2 If $iCurrent >= 0 Then $aItems[$iCurrent].Rename Case Key.Space ScrollArea_DblClick End Select If Len(Key.Text) >= 2 Or If Asc(Key.Text) >= 32 And IsAscii(Key.Text) Or If Key.Code = Key.Backspace Then fNow = Timer iStart = $iCurrent If (fNow - $fFindTime) >= 2 Or iStart < 0 Then $sFindItem = "" Inc iStart Endif $fFindTime = fNow If Key.Code = Key.Backspace Then $sFindItem = String.Left$($sFindItem, -1) Else $sFindItem &= String.LCase(Key.Text) Endif iPos = iStart For iInd = 0 To $aItems.Max If iPos > $aItems.Max Then iPos = 0 With $aItems[iPos] 'Debug iInd;; .Text If String.LCase(.Text) Begins $sFindItem Then SetCurrentItem(iPos, True) Break Endif End With Inc iPos Next Endif Endif End Public Sub ScrollArea_MouseDown() Dim X, Y As Integer Dim iPos As Integer Dim bShift As Boolean Dim bCtrl As Boolean If Not Me.Enabled Or If Me.Design Then Return If $aItems.Count = 0 Then Return If $iMode = Select.None Then Return 'If Not Mouse.Left Then Return $iCurrentBefore = $iCurrent If $iMode = Select.Multiple Then bShift = Mouse.Shift bCtrl = Mouse.Control Endif X = Mouse.X + $hView.ScrollX Y = Mouse.Y + $hView.ScrollY iPos = FindIconAccurate(X, Y) If iPos >= 0 Then If bCtrl Then ToggleCurrentItem(iPos) Else SetCurrentItem(iPos) Endif Else If Not bCtrl And If $iMode <> Select.Single Then UnselectAll Endif End Public Sub ScrollArea_MouseDrag() Dim X, Y As Integer Dim bShift As Boolean Dim bCtrl As Boolean Dim iPos As Integer If Not Me.Enabled Or If Me.Design Then Return If $aItems.Count = 0 Then Return If $iMode = Select.None Then Return 'If Not Mouse.Left Then Return If $iMode = Select.Multiple And If Mouse.Left And If Not $bSelRect Then bShift = Mouse.Shift bCtrl = Mouse.Control X = Mouse.StartX + $hView.ScrollX Y = Mouse.StartY + $hView.ScrollY iPos = FindIconAccurate(X, Y) $bSelRect = True $X1 = X $Y1 = Y $X2 = X $Y2 = Y $hSelTimer = New Timer As "SelTimer" $hSelTimer.Delay = 50 $hSelTimer.Start Inc $iLock If iPos >= 0 Then $aItems[iPos].Selected = Not $aItems[iPos].Selected Dec $iLock SelectRect(True) Endif End Private Sub UpdateSelRect(X As Integer, Y As Integer) X = Max($iPad, Min($hView.ScrollWidth - $iPad - 1, X)) Y = Max($iPad, Min($hView.ScrollHeight - $iPad - 1, Y)) If X <> $X2 Or If Y <> $Y2 Then SelectRect $X2 = X $Y2 = Y $hView.EnsureVisible($X2 - 16, $Y2 - 16, 32, 32) $hView.View.Refresh SelectRect Endif End Public Sub ScrollArea_MouseMove() Dim X, Y, iPos As Integer If Not Me.Enabled Or If Me.Design Then Return If $aItems.Count = 0 Then Return If $iMode = Select.None Then Return X = Mouse.X + $hView.ScrollX Y = Mouse.Y + $hView.ScrollY iPos = FindIconAccurate(X, Y) ' If iPos <> $iHover ThenNot ' If Mouse.Left And If $iMode = Select.Multiple And iPos >= 0 Then ' $aItems[iPos].Selected = Not $aItems[iPos].Selected ' Endif ' Endif If Not Mouse.Left And If Not Mouse.Right Then SetHoverItem(iPos) If $bSelRect And If Mouse.Left Then UpdateSelRect(X, Y) End Public Sub SelTimer_Timer() UpdateSelRect(Mouse.ScreenX - $hView.ScreenX + $hView.ScrollX, Mouse.ScreenY - $hView.ScreenY + $hView.ScrollY) End Private Sub SelectRect(Optional iSelect As Integer = 1) Dim X, Y, W, H As Integer Dim iPos, nCol, iLast, iCol As Integer Dim hItem As _IconView_Item Dim hRect As New Rect Dim hSel As Rect Dim hSelRect As Rect If Not $bSelRect Then GetIconGeometry($iStart, hRect) $X1 = hRect.X + hRect.W \ 2 $Y1 = hRect.Y + hRect.H \ 2 GetIconGeometry($iCurrent, hRect) $X2 = hRect.X + hRect.W \ 2 $Y2 = hRect.Y + hRect.H \ 2 Endif If $X1 = $X2 And If $Y1 = $Y2 Then Return X = Min($X1, $X2) Y = Min($Y1, $Y2) W = Abs($X2 - $X1) + 1 H = Abs($Y2 - $Y1) + 1 hSel = New Rect(X, Y, W, H) iPos = FindIcon(X, Y) If $bHorizontal Then nCol = FindIcon(X, Y + H - 1, True) - iPos + 1 Else nCol = FindIcon(X + W - 1, Y, True) - iPos + 1 Endif iLast = FindIcon(X + W - 1, Y + H - 1, True) iCol = 0 While iPos <= iLast If iPos >= 0 And If iPos < $aItems.Count Then If $bSelRect Or If iPos <> $iStart Then GetIconGeometry(iPos, hRect) hRect.Adjust(2) hSelRect = hRect.Intersection(hSel) If hSelRect Then hItem = $aItems[iPos] If Not $bSelRect Or If hItem._Intersect(hRect, hSelRect, $bHorizontal) Then If iSelect = 1 Then hItem.Selected = Not hItem.Selected Else hItem.Selected = iSelect Endif Endif Endif Endif Endif Inc iCol Inc iPos If iCol >= nCol Then iPos += $nColumn - nCol iCol = 0 'Debug "---" Endif Wend End Public Sub ScrollArea_MouseUp() If Not Me.Enabled Or If Me.Design Then Return If $aItems.Count = 0 Then Return If $bSelRect Then $bSelRect = False $hSelTimer = Null $hView.View.Refresh If $cSelection.Count And If $X1 <> $X2 Or $Y1 <> $Y2 Then SelectionChanged ' If Not Mouse.Control Then ' UnselectAll ' ToggleSelectRect ' Endif Else If $iCurrent >= 0 Then If $iCurrent = $iCurrentBefore Then '$aItems[$iCurrent].Rename Endif ' Click is always raised, Select may not RaiseEvent(EVENT_CLICK, $iCurrent) Endif Endif End Public Sub _SelectItem(hItem As _IconView_Item, bSelected As Boolean) If bSelected Then If $iMode = Select.Single Then SetCurrentItem(_FindItem(hItem)) Endif $cSelection[hItem.Key] = hItem Else If $iMode = Select.Single Then SetCurrentItem(-1) Endif $cSelection.Remove(hItem.Key) Endif SelectionChanged End Public Sub _RefreshItem(hItem As _IconView_Item) If $iLock Then Return RefreshIcon(_FindItem(hItem)) End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) $hView.Border = Value $iPad = If(Value, Style.FrameWidth, 0) $hView.View.Refresh End Private Function ScrollBar_Read() As Integer Return $hView.Scrollbar End Private Sub ScrollBar_Write(Value As Integer) $hView.ScrollBar = Value End Private Function Item_Read() As _IconView_Item If $iIntern >= 0 Then Return $aItems[$iIntern] End Private Function Available_Read() As Boolean Return $iIntern >= 0 End Private Sub RaiseEvent(iEvent As Integer, iItem As Integer) As Boolean Dim iSave As Integer = $iIntern Dim bCancel As Boolean $iIntern = iItem Select Case iEvent Case EVENT_ACTIVATE Raise Activate Case EVENT_CLICK Raise Click Case EVENT_RENAME bCancel = Raise Rename End Select $iIntern = iSave Return bCancel End Public Sub ScrollArea_DblClick() If Not Me.Enabled Or If Me.Design Then Return If $iCurrent >= 0 Then RaiseEvent(EVENT_ACTIVATE, $iCurrent) Endif End Public Sub SelectionChanged_Timer() $bSelectionChanged = False Raise Select End Private Sub SelectionChanged() If $bSelectionChanged Then Return If $bSelRect Then Return $hSelChangedTimer.Trigger $bSelectionChanged = True End Private Function Key_Read() As String If $iCurrent >= 0 And If $iCurrent < $aItems.Count Then Return $aItems[$iCurrent].Key End Private Function Compare_Read() As Integer Return $iCompare End Private Sub Compare_Write(Value As Integer) $iCompare = Value $bCompareSet = True End Public Sub _CompareItem(sKey1 As String, sKey2 As String) As Boolean Raise Compare(sKey1, sKey2) If $bCompareSet Then $bCompareSet = False Return False Else Return True Endif End Private Sub UpdateSort() If Not $bSorted Then Return If Not $bSortDirty Then Return $aItems.Sort(If($bAscending, gb.Ascent, gb.Descent)) $bSortDirty = False $hView.View.Refresh End Private Function Sorted_Read() As Boolean Return $bSorted End Private Sub Sorted_Write(Value As Boolean) If $bSorted = Value Then Return $bSorted = Value If $bSorted Then $hUpdateSortTimer = New Timer As "UpdateSort" $bSortDirty = True UpdateSort End Private Function Editable_Read() As Boolean Return $bEditable End Private Sub Editable_Write(Value As Boolean) $bEditable = Value End Private Function Ascending_Read() As Boolean Return $bAscending End Private Sub Ascending_Write(Value As Boolean) If $bAscending = Value Then Return $bAscending = Value $bSortDirty = True UpdateSort End Public Sub UpdateSort_Timer() UpdateSort End Public Sub _SortIsDirty() If Not $bSorted Then Return If $bSortDirty Then Return $bSortDirty = True $hUpdateSortTimer.Trigger End Public Sub _MoveItem(hItem As _IconView_Item, iNewPos As Integer) Dim iPos As Integer If iNewPos < 0 Then Return iPos = _FindItem(hItem) If iNewPos = iPos Then Return $aItems.Remove(iPos) If iPos < iNewPos Then Dec iNewPos $aItems.Add(hItem, iNewPos) $hView.View.Refresh End Public Sub _IsHovered(hItem As _IconView_Item) As Boolean Dim iPos As Integer iPos = _FindItem(hItem) If iPos >= 0 Then Return iPos = $iHover End Private Function IconSize_Read() As Integer Return $iIconSize End Private Function GridSize_Read() As Integer Return $iGridSize End Private Sub GridSize_Write(Value As Integer) $iGridSize = Max(16, Min(1024, Value)) ScrollArea_Arrange End Private Function IconLines_Read() As Integer Return $iIconLines End Private Sub IconLines_Write(Value As Integer) $iIconLines = Max(1, Min(8, Value)) ScrollArea_Arrange End Public Sub _RenameItem(hItem As _IconView_Item) Dim hRect As New Rect ExitRename $iRename = _FindItem(hItem) _EnsureVisible($iRename) GetIconGeometry($iRename, hRect) hRect = hItem._GetTextRect(hRect, $bHorizontal) hRect.Adjust(-1) If Not $hRenameBox Then Object.Lock(Me) $hRenameBox = New RenameBox(Me, 0, True) As "RenameBox" Object.Unlock(Me) Endif hRect.X = hRect.X - $hView.ScrollX + $hView.ScreenX - Me.ScreenX hRect.Y = hRect.Y - $hView.ScrollY + $hView.ScreenY - Me.ScreenY $hRenameBox.Move(hRect.X, hRect.Y, hRect.W, hRect.H) $hRenameBox.Alignment = If($bHorizontal, Align.Left, Align.Center) $hRenameBox.Text = hItem.Text $hRenameBox.Raise $hRenameBox.Show $hRenameBox.SetFocus End Private Sub ExitRename() If $hRenameBox Then $hRenameBox.Hide $iRename = -1 $hView.SetFocus Endif End Public Sub RenameBox_Activate() Dim bCancel As Boolean $aItems[$iRename].Text = $hRenameBox.Text bCancel = RaiseEvent(EVENT_RENAME, $iRename) If Not bCancel Then ExitRename End Public Sub RenameBox_KeyPress() If Key.Code = Key.Escape Then ExitRename Raise Cancel Stop Event Else If Key.Code = Key.Enter Or If Key.Code = Key.Return Then RenameBox_Activate Stop Event Endif End Public Sub RenameBox_LostFocus() ExitRename End Private Function Orientation_Read() As Integer Return If($bHorizontal, Arrange.Horizontal, Arrange.Vertical) End Private Sub Orientation_Write(Value As Integer) Dim bHor As Boolean If Value = Arrange.Horizontal Then bHor = True Else If Value = Arrange.Vertical Then bHor = False Else Return Endif $bHorizontal = bHor $hView.ScrollBar = If($bHorizontal, Scroll.Horizontal, Scroll.Vertical) ScrollArea_Arrange End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) $hPicture = Value $hView.Refresh End Private Function Background_Read() As Integer Return $hView.Background End Private Sub Background_Write(Value As Integer) $hView.Background = Value End Private Sub Key_Write(Value As String) Dim hItem As _IconView_Item = $cItems[Value] If hItem Then SetCurrentItem(_FindItem(hItem)) Else SetCurrentItem(-1) Endif End Public Sub _Begin() Inc $iLock End Public Sub _End() Dec $iLock If $iLock = 0 Then ScrollArea_Arrange $hView.Refresh Endif End Private Function Renaming_Read() As Boolean Return $iRename >= 0 End Private Function ClientWidth_Read() As Integer Return $hView.ClientW End Private Function ClientHeight_Read() As Integer Return $hView.ClientH End Private Function ScrollX_Read() As Integer Return $hView.ScrollX End Private Sub ScrollX_Write(Value As Integer) $hView.ScrollX = Value End Private Function ScrollY_Read() As Integer Return $hView.ScrollY End Private Sub ScrollY_Write(Value As Integer) $hView.ScrollY = Value End Private Function ScrollW_Read() As Integer Return $hView.ScrollW End Private Function ScrollH_Read() As Integer Return $hView.ScrollH End Public Sub Scroll(X As Integer, Y As Integer) $hView.Scroll(X, Y) End Public Sub ScrollArea_GotFocus() $hView.Refresh End Public Sub ScrollArea_LostFocus() $hView.Refresh End Public Sub ScrollArea_Font() Dim hItem As _IconView_Item For Each hItem In $aItems hItem._Invalidate Next ScrollArea_Arrange End Private Function Keys_Read() As String[] Dim aKeys As New String[] For Each $cItems aKeys.Add($cItems.Key) Next Return aKeys End Public Sub _RefreshPicture() Dim hItem As _IconView_Item For Each hItem In $cItems Picture._Refresh(ByRef hItem.Picture) Next End gambas-3.16.3/comp/src/gb.gui.base/.src/IconView/_IconView_Item.class000066400000000000000000000427421411575327000251440ustar00rootroot00000000000000' Gambas class file Export Property Read Key As String Property {Picture} As Picture Property Text As String Property RichText As String Property Selected As Boolean Property Editable As Boolean '' @{since 3.16} '' '' Return or set the tag associated with a cell. '' '' This property is intended for the programmer and is never used by the component. It can contain any Variant value. Property Tag As Variant '' Return if the item is hovered. Property Read Hovered As Boolean Property Read X As Integer Property Read Y As Integer Property Read Height, H As Integer Property Read Width, W As Integer Public _Key As String Private $sText As String Private $sRichText As String Private $hPicture As Picture Private $vTag As Variant Private $bSelected As Boolean Private $bEditable As Boolean Private $bEllipsized As Boolean Private $hInside As Rect Event _Foo Public Sub _new() $bEditable = GetIconView().Editable End Private Sub GetIconView() As IconView Return Object.Parent(Me) End Private Sub RefreshView() GetIconView()._RefreshItem(Me) End Private Function Key_Read() As String Return _Key End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) If $hPicture = Value Then Return $hPicture = Value $hInside = Null GetIconView()._UpdateIconSize($hPicture) RefreshView End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) If $sText = Value Then Return $sText = Value $hInside = Null GetIconView()._SortIsDirty RefreshView End Private Function RichText_Read() As String Return $sRichText End Private Sub RichText_Write(Value As String) If $sRichText = Value Then Return $sRichText = Value $hInside = Null GetIconView()._SortIsDirty RefreshView End ' Public Sub _Draw2(X As Integer, Y As Integer, Width As Integer, Height As Integer, bFocus As Boolean, bHover As Boolean) ' ' Dim iBackColor As Integer ' Dim hBackImage As Image ' Dim hParent As IconView ' Dim ix, iy As Integer ' ' If _IconViewItem._hBackPicture.Width <> Width Then ' _IconViewItem._hBackPicture = DrawBackGround(Width, Height, Color.SelectedBackground) ' _IconViewItem._hBackPictureNoFocus = DrawBackGround(Width, Height, Color.Gray) ' _IconViewItem._hBackPictureMouseOver = DrawBackGround(Width, Height, Color.Lighter(Color.SelectedBackground)) ' _IconViewItem._hBackPictureSelOver = DrawBackGround(Width, Height, Color.Darker(Color.SelectedBackground)) ' Endif ' ' If bHover Then ' hBackImage = IIf(Me.Selected, _hBackPictureSelOver, _hBackPictureMouseOver) ' iBackColor = Color.Transparent ' ' Else ' ' If bFocus ' hBackImage = _hBackPicture ' iBackColor = Color.SelectedBackground ' Else ' hBackImage = _hBackPictureNoFocus ' iBackColor = Color.Gray ' Endif ' ' Endif ' ' Draw.Font = _Font ' ix = X + (Width - $hPicture.w) / 2 ' iy = Y + (Height - ($hPicture.Height + Draw.TextHeight($sText) + 5)) / 2 ' ' ' If Me.Selected Or bHover Then ' Draw.Foreground = Color.Lighter(iBackColor) ' Draw.FillColor = iBackColor ' Draw.FillStyle = Fill.Solid ' Draw.Image(hBackImage, X, Y) ' 'Draw.Rect(X, Y, Width, Height) ' Draw.Picture($hPicture.Image.Colorize(iBackColor).Picture, iX, iY) ' ' 'Draw.Rect($iX + ($hPicture.Width - Draw.TextWidth($sText)) / 2 - 4, $iY + $hPicture.Height + 5, Draw.TextWidth($sText) + 8, Draw.TextHeight($sText)) ' Draw.Foreground = IIf(bFocus, Color.SelectedForeground, Color.TextForeground) ' Else ' Draw.Picture($hPicture, iX, iY) ' Draw.Foreground = Color.TextForeground ' ' Endif ' Me._TextX = ix + ($hPicture.Width - Draw.TextWidth($sText)) / 2 ' Me._TextY = Y + (Height - (Draw.TextHeight($sText) + 5)) ' Me._TextWidth = Draw.TextWidth($sText) + 8 ' Me._TextHeight = Draw.TextHeight($sText) ' ' Draw.Text($sText, iX + ($hPicture.Width - Draw.TextWidth($sText)) / 2, iY + $hPicture.Height + 5) ' ' ' Prend le rectangle comme zone ' $ix = X ' $iy = Y ' $iWidth = Width ' $iheight = Height ' ' End Public Sub _GetTextRect(hRect As Rect, bHorizontal As Boolean) As Rect Dim hText As Rect Dim X, Y, W, H As Integer Dim HT As Integer hRect.Adjust(8) If bHorizontal Then X = hRect.X If $hPicture Then X += $hPicture.W + 4 W = hRect.W - (X - hRect.X) If $sRichText Then H = GetIconView().Font.RichTextHeight($sRichText, W - 4) + 4 Else H = GetIconView().Font.RichTextHeight(Html($sText), W - 4) + 4 Endif hText = New Rect(X, hRect.Y, W, H) hText.Y -= (H - hRect.H) \ 2 Else Y = hRect.Y If $hPicture Then Y += $hPicture.H + 4 If $sRichText Then H = GetIconView().Font.RichTextHeight($sRichText, hRect.W) '+ 4 Else H = GetIconView().Font.RichTextHeight(Html($sText), hRect.W) '+ 4 Endif HT = Min(H, hRect.H - (Y - hRect.Y) - 8) hText = New Rect(hRect.X, Y, hRect.W, HT) 'hText = hText.Intersection(hRect) Endif hText.Adjust(-1) Return hText End Private Sub GetBackground(hIconView As IconView, Optional bSelected As Boolean, bFocus As Boolean) As Integer Dim iColor As Integer iColor = hIconView.Background If iColor = Color.Default Then iColor = Color.TextBackground If bSelected Then If bFocus Then iColor = Color.Merge(Color.LightBackground, iColor) Else iColor = Color.Merge(Color.LightForeground, iColor, 0.75) Endif Endif If Not hIconView.Enabled Then iColor = Color.Desaturate(iColor) Return iColor End Private Sub GetForeground(hIconView As IconView, Optional bSelected As Boolean) As Integer Dim iColor As Integer If bSelected Then iColor = Color.SelectedForeground Else iColor = hIconView.Foreground If iColor = Color.Default Then iColor = Color.TextForeground Endif If Not hIconView.Enabled Then iColor = Color.Desaturate(Color.Merge(iColor, GetBackground(hIconView, bSelected))) Return iColor End Private Sub DrawText(sText As String, sRichText As String, X As Float, Y As Float, W As Float, H As Float, iAlign As Integer) If sRichText Then Paint.DrawRichText(sRichText, X, Y, W, H, iAlign) Else Paint.DrawRichText(Html(sText), X, Y, W, H, iAlign) Endif End Private Sub GetIconSize(ByRef PW As Integer, ByRef PH As Integer) If $hPicture Then PW = $hPicture.W PH = $hPicture.H Else PW = Max(Desktop.Scale * 4, GetIconView().IconSize) PH = PW Endif End Public Sub _Draw(hRect As Rect, hClip As Rect, hIconView As IconView, bHorizontal As Boolean, bFocus As Boolean, bHover As Boolean, bCurrent As Boolean) Dim X, Y, W, H, HT, PW, PH As Integer Dim iColor As Integer Dim bFrame As Boolean Dim sText As String Dim hRect1, hRectBg As Rect Dim DS As Integer DS = Desktop.Scale hRect.Adjust(DS \ 4) If Not hIconView.Picture Then bFrame = True Endif GetIconSize(ByRef PW, ByRef PH) 'iColor = hIconView.Background 'If iColor = Color.Default Then iColor = Color.TextBackground 'If $bSelected Then iColor = Color.SelectedBackground 'If bHover Then iColor = Color.Merge(iColor, Color.LightBackground) iColor = GetBackground(hIconView, $bSelected, bFocus) ' If bHover And Not $bSelected Then ' Paint.Begin(Draw.Device) ' Paint.ClipRect = hClip ' 'Paint.Rectangle(hClip.X, hClip.Y, hClip.Width, hClip.Height) ' 'Paint.Clip() ' PaintRoundedRect(hRect.X, hRect.Y, hRect.W, hRect.H, 7) ' Paint.Brush = Paint.Color(iColor) ' Paint.Fill ' 'Paint.Rectangle(hRect.X, hRect.Y, hRect.W, hRect.H) ' 'Paint.Brush = Paint.Color(Color.Black) ' 'Paint.Stroke ' Paint.End ' bFrame = True ' Else If $bSelected Then ' bSelected = True ' iColor = Color.SelectedBackground ' If bHover Then iColor = Color.Merge(iColor, Color.LightBackground) ' Endif hClip = hClip.Intersection(hRect) If IsNull(hClip) Then Return ' Paint.Background = Color.Black ' Paint.Rectangle(hRect.X + 0.5, hRect.Y + 0.5, hRect.W, hRect.H) ' Paint.Stroke 'hClip.Adjust(-1) hRectBg = hRect.Copy() hRectBg.Adjust(1) hRect.Adjust(DS, DS) If bHorizontal Then X = hRect.X W = hRect.W If $hPicture Then W -= PW If $sText Or If $sRichText Then sText = $sRichText If Not sText Then sText = Html($sText) H = hIconView.Font.RichTextHeight(sText, W) HT = hRect.H + DS \ 2 If H > HT Then sText = Paint.TrimRichText(sText, W, HT) $bEllipsized = True Else $bEllipsized = False Endif Endif Paint.ClipRect = hClip hRect1 = hRectBg.Copy() 'hRect1.Adjust(1) GoSub PAINT_BACKGROUND hRect1 = hClip.Copy() hRect1.Adjust(1) If System.RightToLeft Then If $hPicture Then Paint.DrawPicture($hPicture, hRect.X + hRect.W - PW, hRect.Y + (hRect.H - PH) / 2) Endif Else If $hPicture Then Paint.DrawPicture($hPicture, hRect.X, hRect.Y + (hRect.H - PH) / 2) X += PW + 4 Endif Endif If $sText Then Paint.Font = hIconView.Font If Not bFrame Then Paint.Background = GetBackground(hIconView, False) 'If($bSelected, Color.SelectedBackground, Color.TextBackground) DrawText($sText, sText, X + 1, hRect.Y + 1, W, hRect.H, Align.Left) Endif Paint.Background = GetForeground(hIconView, False) 'If($bSelected, Color.SelectedForeground, Color.TextForeground) DrawText($sText, sText, X, hRect.Y, W, hRect.H, Align.Left) Endif Else Y = hRect.Y Y += PH + DS \ 2 If $sText Or If $sRichText Then sText = $sRichText If Not sText Then sText = Html($sText) H = hIconView.Font.RichTextHeight(sText, hRect.W) HT = hRect.H - (Y - hRect.Y) If H > HT Then sText = Paint.TrimRichText(sText, hRect.W, HT) $bEllipsized = True Else $bEllipsized = False Endif Endif hRect1 = Rect(hRect.X - DS \ 2, hRect.Y - DS \ 2, hRect.W + DS, hRect.H + DS) 'hRect1 = Rect(hRect.X + (hRect.W - PW) / 2 - DS \ 2, hRect.Y - DS \ 2, PW + DS, PH + DS) 'If $sText Or If $sRichText Then hRect2 = Rect(hRect.X - DS \ 2, Y - DS \ 2, hRect.W + DS, hIconView.Font.RichTextHeight(sText, hRect.W) + DS) GoSub PAINT_BACKGROUND 'Paint.Save 'Paint.ClipRect = hClip If $hPicture Then Paint.DrawPicture($hPicture, hRect.X + (hRect.W - PW) / 2, hRect.Y) If $sText Or If $sRichText Then 'Draw.Clip(hRect.X, Y, hRect.W, hRect.H - Y) Paint.Font = hIconView.Font If Not $sRichText And If Not $bEllipsized Then sText = "" If Not bFrame Then Paint.Background = GetBackground(hIconView, False) '$bSelected) 'If($bSelected, Color.SelectedBackground, Color.TextBackground) DrawText($sText, sText, hRect.X + 1, Y + 1, hRect.W, HT, Align.Top) Endif Paint.Background = GetForeground(hIconView, False) '$bSelected) 'If($bSelected, Color.SelectedForeground, Color.TextForeground) DrawText($sText, sText, hRect.X, Y, hRect.W, HT, Align.Top) 'Draw.Clip.Enabled = False Endif 'Paint.Restore Endif Return PAINT_RECTS: If hRect1 Then Paint.Rectangle(hRect1.X, hRect1.Y, hRect1.W, hRect1.H) ', Desktop.Scale / 2) 'If hRect2 Then Paint.Rectangle(hRect2.X, hRect2.Y, hRect2.W, hRect2.H, Desktop.Scale / 2) Return PAINT_BACKGROUND: If bHover Or If $bSelected Or If bCurrent Then Paint.Save Paint.ClipRect = hClip If bHover Then GoSub PAINT_RECTS If bCurrent Or If $bSelected Then Paint.Background = Color.Merge(iColor, Color.TextForeground, 0.2) Else Paint.Background = GetBackground(hIconView, True, bFocus) Endif Paint.Fill 'LineWidth = 1 'Paint.Stroke Else If bCurrent Then GoSub PAINT_RECTS Paint.Background = Color.Merge(iColor, Color.TextForeground, 0.1) Paint.Fill Endif If bCurrent Or If bHover Then If hRect1 Then hRect1.Adjust(1) 'If hRect2 Then hRect2.Adjust(1) Endif GoSub PAINT_RECTS Paint.Background = iColor Paint.Fill Paint.Restore Endif Return End Private Function Selected_Read() As Boolean Return $bSelected End Private Sub Selected_Write(Value As Boolean) If $bSelected = Value Then Return $bSelected = Value GetIconView()._SelectItem(Me, Value) RefreshView End Public Sub EnsureVisible() Dim hParent As IconView = GetIconView() hParent._EnsureVisible(hParent._FindItem(Me)) End Private Sub GetInsideRect(hRect As Rect, YT As Integer) As Rect Dim sText As String Dim hFont As Font Dim H, HT As Integer If Not $hInside Then sText = $sText hFont = GetIconView().Font H = hFont.RichTextHeight(sText, hRect.W) HT = hRect.H - (YT - hRect.Y) If H > HT Then sText = Ellipsize(sText, hFont, hRect.W, HT) $hInside = New Rect(hRect.X - 4, YT - 6, hRect.W + 8, hFont.RichTextHeight(sText, hRect.W) + 10) Endif Return $hInside End Public Sub _Intersect(hRect As Rect, hOther As Rect, bHorizontal As Boolean) As Boolean Dim YT, PW, PH As Integer Dim hInside As Rect Dim DS As Integer DS = Desktop.Scale hRect.Adjust(DS \ 2) If bHorizontal Then Return hRect.Intersection(hOther) Else GetIconSize(ByRef PW, ByRef PH) YT = hRect.Y If PW Then hInside = New Rect(hRect.X + (hRect.W - PW) / 2 - 4, hRect.Y - 4, PW + 8, PH + 8) If hInside.Intersection(hOther) Then Return True YT += PH + 4 Endif If $sText Then hInside = GetInsideRect(hRect, YT) If hInside.Intersection(hOther) Then Return True Endif Endif End Public Sub _Inside(hRect As Rect, hIconView As IconView, bHorizontal As Boolean, X As Integer, Y As Integer) As Boolean Dim H, YT, HT, PW, PH As Integer Dim hInside As Rect Dim sText As String Dim DS As Integer DS = Desktop.Scale hRect.Adjust(DS \ 2) Return hRect.Contains(X, Y) 'If Not hRect.Contains(X, Y) Then Return False If bHorizontal Then Return True Else GetIconSize(ByRef PW, ByRef PH) YT = hRect.Y If PW Then hInside = New Rect(hRect.X + (hRect.W - PW) / 2 - 4, hRect.Y - 4, PW + 8, PH + 8) If hInside.Contains(X, Y) Then Return True YT += PH + 4 Endif If $sText Then sText = $sText H = hIconView.Font.RichTextHeight(sText, hRect.W) HT = hRect.H - (YT - hRect.Y) If H > HT Then sText = Ellipsize(sText, hIconView.Font, hRect.W, HT) Endif hInside = New Rect(hRect.X - 4, YT - 6, hRect.W + 8, hIconView.Font.RichTextHeight(sText, hRect.W) + 10) If hInside.Contains(X, Y) Then Return True Endif Endif End Public Sub _compare(hItem As _IconView_Item) As Integer Dim hParent As IconView = GetIconView() If Not hParent._CompareItem(_Key, hItem.Key) Then Return hParent.Compare Else Return Comp($sText, hItem.Text, gb.Natural + gb.IgnoreCase) Endif End Private Function Editable_Read() As Boolean Return $bEditable End Private Sub Editable_Write(Value As Boolean) $bEditable = Value End Public Sub Rename() If Not $bEditable Then Return GetIconView()._RenameItem(Me) End Private Sub GetGeometry() As Rect Dim hParent As IconView = GetIconView() Dim hRect As New Rect hParent._GetItemGeometry(Me, hRect) Return hRect End Private Function X_Read() As Integer Return GetGeometry().X End Private Function Y_Read() As Integer Return GetGeometry().Y End Private Function Width_Read() As Integer Return GetGeometry().Width End Private Function Height_Read() As Integer Return GetGeometry().Height End Public Sub MoveAfter(Optional (Key) As String) Dim hParent As IconView = GetIconView() Dim iPos As Integer If Not Key Then MoveFirst() Return Endif iPos = hParent._FindItem(hParent[Key]) If iPos < 0 Then Error.Raise(Subst("Unknown item: '&1'", Key)) hParent._MoveItem(Me, iPos + 1) End Public Sub MoveBefore(Optional (Key) As String) Dim hParent As IconView = GetIconView() Dim iPos As Integer If Not Key Then MoveLast() Return Endif iPos = hParent._FindItem(hParent[Key]) If iPos < 0 Then Error.Raise(Subst("Unknown item: '&1'", Key)) hParent._MoveItem(Me, iPos) End Public Sub MoveFirst() Dim hParent As IconView = GetIconView() hParent._MoveItem(Me, 0) End Public Sub MoveLast() Dim hParent As IconView = GetIconView() hParent._MoveItem(Me, hParent.Count - 1) End Private Sub Ellipsize(sText As String, hFont As Font, W As Integer, H As Integer) As String Dim sPoints As String = "…" Dim iPos As Integer Dim sCar As String Dim bMarkup As Boolean If Not sText Then Return For iPos = 1 To String.Len(sText) sCar = String.Mid(sText, iPos, 1) If sCar = "<" Then bMarkup = True Else If sCar = ">" Then bMarkup = False Endif If bMarkup Then Continue If hFont.RichTextHeight(String.Left(sText, iPos) & sPoints, W) > H Then Break Next Return String.Left(sText, iPos - 1) & sPoints End Public Sub _IsEllipsized() As Boolean Return $bEllipsized End Private Function Hovered_Read() As Boolean Return GetIconView()._IsHovered(Me) End Public Sub _Invalidate() $hInside = Null End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value End gambas-3.16.3/comp/src/gb.gui.base/.src/Label.class000066400000000000000000000115671411575327000216010ustar00rootroot00000000000000' Gambas class file ''' This control displays a piece of text. ''' ''' [[ info ''' @{since 3.16} ''' ''' This control has been rewritten in Gambas since 3.16 version. ''' ]] Export Inherits UserControl Public Const _Properties As String = "*,Padding{Range:0;64},AutoResize,Alignment{Align.*}=Normal,Border{Border.None;Plain;Sunken;Raised;Etched},Text" Public Const _DefaultEvent As String = "MouseDown" Public Const _DefaultSize As String = "8,3" Public Const _IsContainer As Boolean = False Public Const _Group As String = "Form" Public Const _Similar As String = "Label" '' Return or set the text alignment. '' '' See the [../../align] class for a list of constants to use with this property. Property Alignment As Integer '' Return or set the border displayed around the control. '' '' See the [../../border] class for a list of constants to use with this property. Property Border As Integer Use $iBorder '' Return or set the displayed text. Property Text, Caption As String Use $sText '' Return or set the inner padding around the text, in pixels. Property Padding As Integer Use $iPadding '' Return or set if the control adapts its size to its contents automatically. Property AutoResize As Boolean Use $bAutoResize '' Return or set if the control background is transparent. This property is deprecated. Property Transparent As Boolean Use $bTransparent Private $iAlign As Integer = Align.Normal Private $hExt As RectF Private $bWarningTransparent As Boolean Private $bRichText As Boolean Public _Wrap As Boolean Private $bLocked As Boolean '' Create a new Label. Public Sub _new() $bRichText = Me Is TextLabel If $bRichText Then _Wrap = True $iAlign = Align.TopNormal Endif End Private Sub Alignment_Write(Value As Integer) If $iAlign = Value Then Return $iAlign = Value Me.Refresh End Private Sub Border_Write(Value As Integer) If $iBorder = Value Then Return $iBorder = Value _UpdateSize Me.Refresh End Private Sub Text_Write(Value As String) If $sText = Value Then Return $sText = Value _UpdateSize Me.Refresh End Private Sub Padding_Write(Value As Integer) If $iPadding = Value Then Return $iPadding = Value _UpdateSize Me.Refresh End Private Sub GetPadding() As Integer Dim P As Integer P = $iPadding Select Case $iBorder Case Border.Plain Inc P Case Border.Raised, Border.Sunken P += Style.FrameWidth End Select Return P End Public Sub _UpdateSize() Dim W As Integer Dim H As Integer Dim P As Integer Dim hRect As Rect $hExt = Null If $bLocked Then Return If Me.Design Then Return If Not $bAutoResize Then Return If Not $sText Then Return $bLocked = True P = GetPadding() If $bRichText Then If _Wrap Then hRect = Me.Font.RichTextSize($sText, Me.W - P * 2) Else hRect = Me.Font.RichTextSize($sText) Endif Else hRect = Me.Font.TextSize($sText) Endif W = hRect.W + P * 2 H = hRect.H + P * 2 If Align.IsMiddle($iAlign) Then If H < Me.H Then H = Me.H Endif Me.Resize(W, H) $bLocked = False End Private Sub AutoResize_Write(Value As Boolean) If $bAutoResize = Value Then Return $bAutoResize = Value _UpdateSize End Public Sub UserControl_Font() _UpdateSize Me.Refresh End Private Sub GetExtents() As RectF If Not $hExt Then If $bRichText Then If _Wrap Then $hExt = Paint.RichTextSize($sText, Me.W - GetPadding() * 2) Else $hExt = Paint.RichTextSize($sText) Endif Else $hExt = Paint.TextSize($sText) Endif Endif Return $hExt End Public Sub UserControl_Draw() Dim P As Integer Dim F As Integer Dim X As Integer Dim hExt As RectF If $iBorder Then Style.PaintPanel(0, 0, Paint.W, Paint.H, $iBorder) If $iBorder = Border.Plain Then F = 1 Else F = Style.FrameWidth + 1 Endif Paint.Rectangle(F, F, Paint.W - F * 2, Paint.H - F * 2) Paint.Clip() Endif If Not $sText Then Return P = GetPadding() hExt = GetExtents() If Align.IsLeft($iAlign) Then X = P '- hExt.X Else If Align.IsRight($iAlign) Then X = Me.W - P - Ceil(hExt.W) Else If Align.IsCenter($iAlign) Then X = (Me.W - hExt.W) / 2 Endif If $bRichText Then Paint.DrawRichText($sText, X, P, Ceil(hExt.W), Me.H - P * 2, $iAlign) Else Paint.DrawText($sText, X, P, Ceil(hExt.W), Me.H - P * 2, $iAlign) Endif End Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Transparent_Write(Value As Boolean) If Not $bWarningTransparent Then Error "gb.gui: warning; Label.Transparent and TextLabel.Transparent are deprecated" $bWarningTransparent = True Endif $bTransparent = Value End '' Resize the control so that it adapts to its contents. Public Sub Adjust() Dim bSave As Boolean bSave = $bAutoResize $bAutoResize = True _UpdateSize $bAutoResize = bSave End gambas-3.16.3/comp/src/gb.gui.base/.src/Line.class000066400000000000000000000001241411575327000214340ustar00rootroot00000000000000' Gambas class file Export Public Enum None, Solid, Dash, Dot, DashDot, DashDotDotgambas-3.16.3/comp/src/gb.gui.base/.src/ListBox/000077500000000000000000000000001411575327000211055ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/ListBox/ListBox.class000066400000000000000000000160271411575327000235260ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,List,Border=True,Mode{Select.*}=Single,ScrollBar{Scroll.*}=Vertical,Sorted" Public Const _Group As String = "View" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "16,16" Public Const _Similar As String = "ListView" Property Read Count As Integer Property Mode As Integer Property ScrollBar As Integer Property Border As Boolean Property Sorted As Boolean Property Read Current As _ListBox_Item Property Index As Integer Property Read Text As String Property List As String[] Property Font As Font Property ScrollX As Integer Property ScrollY As Integer Property Read ScrollW, ScrollWidth As Integer Property Read ScrollH, ScrollHeight As Integer Event Click Event Activate Event Select 'Static Private $bNoEvent As Boolean Private $hView As GridView Private $aText As New String[] Private $bSorted As Boolean Private $hSortTimer As Timer Private $hTimerClick As Timer Public Sub _new() $hView = New GridView(Me) As "GridView" $hView.Columns.Count = 1 $hView.Mode = Select.Single $hView.Grid = False $hView.AutoResize = True $hView._DoNotDrawSelection = True $hView.ScrollBar = Scroll.Vertical Me.Proxy = $hView End Public Sub _get(Index As Integer) As _ListBox_Item Return New _ListBox_Item(Index) As "Item" End Public Sub Clear() 'Object.Lock(Me) $aText.Clear $hView.Rows.Count = 0 'Object.Unlock(Me) End Private Sub SortLater() If Not $hSortTimer Then $hSortTimer = New Timer As "Sort" $hSortTimer.Trigger Endif End Public Sub Add(Text As String, Optional Index As Integer = -1) If Index < 0 Then $aText.Add(Text) Else $aText.Add(Text, Index) $hView.Rows.Insert(Index) Endif $hView.Rows.Count = $aText.Count SortLater End Public Sub Remove(Index As Integer, Optional Length As Integer = 1) If Length <= 0 Or If Index < 0 Or If (Index + Length) > $aText.Count Then Error.Raise("Out of bounds") $aText.Remove(Index, Length) $hView.Rows.Remove(Index, Length) $hView.Rows.Count = $aText.Count End Public Sub GridView_Data(Row As Integer, (Column) As Integer) With $hView.Data Try .Text = $aText[Row] If $hView.Rows[Row].Selected Then .Background = Color.SelectedBackground .Foreground = Color.SelectedForeground Endif End With End Public Sub GridView_Activate() Raise Activate End Private Function Count_Read() As Integer Return $aText.Count End Private Function Mode_Read() As Integer Return $hView.Mode End Private Sub Mode_Write(Value As Integer) $hView.Mode = Value End Private Function ScrollBar_Read() As Integer Return $hView.Scrollbar End Private Sub ScrollBar_Write(Value As Integer) $hView.Scrollbar = Value If $hView.ScrollBar And Scroll.Horizontal Then $hView.AutoResize = False $hView.Columns[0].W = -1 Else $hView.AutoResize = True Endif End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) $hView.Border = Value End Private Function Sorted_Read() As Boolean Return $bSorted End Private Sub Sorted_Write(Value As Boolean) $hView.Sorted = Value $bSorted = Value If $bSorted Then Sort End Private Function Current_Read() As _ListBox_Item Try Return _get($hView.Row) End Public Sub GridView_Select() 'If $bNoEvent Then Return If $hView.Row < 0 Then Return Raise Select End Public Sub TimerClick_Timer() Raise Click $hTimerClick = Null End Public Sub GridView_Change() $hTimerClick = New Timer As "TimerClick" $hTimerClick.Trigger End ' Private Function ClientWidth_Read() As Integer ' ' Return $hView.ClientW ' ' End ' ' Private Function ClientHeight_Read() As Integer ' ' Return $hView.ClientH ' ' End Public Sub SelectAll() $hView.SelectAll End Public Sub UnselectAll() $hView.UnselectAll End Public Sub Find(Text As String, Optional Mode As Integer) As Integer Return $aText.Find(Text, Mode) End ' Public Sub FindAt((X) As Integer, Y As Integer) As Boolean ' ' Dim iRow As Integer = $hView.RowAt(Y) ' ' If iRow < 0 Then Return True ' Return SetCursor(RowToItem(iRow).Key) ' ' End Public Sub _IsSelected(iRow As Integer) As Boolean Try Return $hView.Rows[iRow].Selected End Public Sub _SetSelected(iRow As Integer, bSelected As Boolean) Try $hView.Rows[iRow].Selected = bSelected End Public Sub Sort_Timer() $hSortTimer = Null If $bSorted Then Sort $hView.Columns[0].W = -1 $hView.Refresh End Private Sub Sort() Dim sCurrent As String Dim bSelect As Boolean If $hView.Row > 0 Then sCurrent = $aText[$hView.Row] bSelect = True Endif $aText.Sort(gb.Natural + gb.IgnoreCase) $hView.Refresh If bSelect Then $hView.Row = $aText.Find(sCurrent) End ' Private Function Selection_Read() As String[] ' ' Dim aSel As New String[] ' Dim iRow As Integer ' ' For Each iRow In $hView.Rows.Selection ' aSel.Add(RowToItem(iRow).Key) ' Next ' ' Return aSel ' ' End ' ' Private Sub Selection_Write(Value As String[]) ' ' Dim sKey As String ' Dim hItem As _TreeView_Item ' ' UnselectAll ' For Each sKey In Value ' If Not sKey Then Continue ' hItem = $cItem[sKey] ' If hItem Then hItem.Selected = True ' Next ' ' End Private Function ScrollX_Read() As Integer Return $hView.ScrollX End Private Sub ScrollX_Write(Value As Integer) $hView.ScrollX = Value End Private Function ScrollY_Read() As Integer Return $hView.ScrollY End Private Sub ScrollY_Write(Value As Integer) $hView.ScrollY = Value End Private Function ScrollW_Read() As Integer Return $hView.ScrollW End Private Function ScrollH_Read() As Integer Return $hView.ScrollH End Public Sub Scroll(X As Integer, Y As Integer) $hView.Scroll(X, Y) End Private Function Index_Read() As Integer Return $hView.Row End Private Sub Index_Write(Value As Integer) If Value < -1 Or If Value >= $aText.Count Then Error.Raise("Bad index") $hView.Row = Value End Private Function Text_Read() As String Try Return $aText[$hView.Row] End Private Function List_Read() As String[] Return $aText.Copy() End Private Sub List_Write(Value As String[]) Object.Lock(Me) If Value Then $aText = Value.Copy() Else $aText.Clear Endif $hView.Rows.Count = $aText.Count $hView.Row = -1 '$hView.Refresh Object.Unlock(Me) SortLater End Public Sub _GetText(iIndex As Integer) As String Try Return $aText[iIndex] End Public Sub _SetText(iIndex As Integer, sText As String) Try $aText[iIndex] = sText SortLater End Private Sub ResizeColumn() Dim W As Integer Dim sText As String For Each sText In $aText W = Max(W, Me.Font.TextWidth(sText)) Next $hView.Columns[0].W = W + 8 End Public Sub GridView_ColumnSize((Column) As Integer) ResizeColumn End Private Function Font_Read() As Font Return $hView.Font End Private Sub Font_Write(Value As Font) $hView.Font = Value ResizeColumn End gambas-3.16.3/comp/src/gb.gui.base/.src/ListBox/_ListBox_Item.class000066400000000000000000000011461411575327000246370ustar00rootroot00000000000000' Gambas class file Export Property Text As String Property Selected As Boolean Private $iIndex As Integer Event _Refresh Private Sub GetList() As ListBox Return Object.Parent(Me) End Public Sub _new(iIndex As Integer) $iIndex = iIndex End Private Function Text_Read() As String Return GetList()._GetText($iIndex) End Private Sub Text_Write(Value As String) GetList()._SetText($iIndex, Value) End Private Function Selected_Read() As Boolean Return GetList()._IsSelected($iIndex) End Private Sub Selected_Write(Value As Boolean) GetList()._SetSelected($iIndex, Value) End gambas-3.16.3/comp/src/gb.gui.base/.src/Main.module000066400000000000000000000060251411575327000216170ustar00rootroot00000000000000' Gambas module file ' Private $hFadeN As Picture ' ' Private $hFadeW As Picture ' ' Private $hFadeS As Picture ' ' Private $hFadeE As Picture ' ' Private Sub LoadFades() ' ' Dim hImage As Image ' 'Dim Y As Integer ' Dim iColor As Integer ' ' iColor = Color.Desaturate(Color.TextForeground) ' ' 'If iColor = $iFadeColor Then Return ' ' hImage = New Image(32, 8, Color.Transparent) ' ' For Y = 0 To 7 ' ' hImage.FillRect(0, Y, hImage.W, 1, Color.SetAlpha(iColor, 160 + Y * 12)) ' ' Next ' ' $hFadeN = hImage.Picture ' $hFadeN = hImage.Picture ' ' hImage.RotateLeft ' ' $hFadeW = hImage.Picture ' ' hImage.RotateLeft ' ' $hFadeS = hImage.Picture ' ' hImage.RotateLeft ' ' $hFadeE = hImage.Picture ' ' End Public Sub Main() Component.Load("gb.form") Message.Style = "integrated" 'Message.ColoredButtons = True Message.Question("Ceci est un très long message qui doit permettre de tester la nouvelle disposition des boutons des boites de dialogues affichant des messages.", "Oui", "Non", "Peut-être") 'Message.Warning("Ceci est un message.") ', "Oui", "Non") End Public Sub GetFileSize(iSize As Long, Optional nDigit As Integer = 1) As String Dim sFormat As String sFormat = "0." & String$(nDigit, "#") If iSize < 1024 Then Return Subst(("&1 B"), CStr(iSize)) Else If iSize < 1048576 Then Return Subst(("&1 KiB"), Format(iSize / 1024, sFormat)) Else If iSize < 1073741824 Then Return Subst(("&1 MiB"), Format(iSize / 1048576, sFormat)) Else Return Subst(("&1 GiB"), Format(iSize / 1073741824, sFormat)) Endif End Public Sub SplitHTML(Html As String) As String[] Dim P As Integer Dim iLen As Integer Dim C As String Dim sResult As String Dim C2 As String Dim aResult As String[] aResult = New String[] iLen = String.Len(Html) READ_TEXT: GoSub LOOK_CHAR If C = "<" Then Goto READ_MARKUP If C = "&" Then Goto READ_ENTITY GoSub READ_CHAR Goto READ_TEXT READ_MARKUP: GoSub ADD_RESULT GoSub READ_CHAR READ_MARKUP_NAME: GoSub READ_CHAR If C = " " Then Goto READ_MARKUP_REST If C = ">" Then Goto READ_MARKUP_END Goto READ_MARKUP_NAME READ_MARKUP_REST: GoSub READ_CHAR If C = ">" Then Goto READ_MARKUP_END If C = Chr$(34) Or If C = "'" Then C2 = C Goto READ_STRING Endif Goto READ_MARKUP_REST READ_MARKUP_END: GoSub ADD_RESULT Goto READ_TEXT READ_STRING: GoSub READ_CHAR If C = C2 Then Goto READ_MARKUP Goto READ_STRING READ_ENTITY: GoSub ADD_RESULT GoSub READ_CHAR Do GoSub READ_CHAR If Not IsDigit(C) And If Not IsLetter(C) And If C <> "#" Then Break Loop GoSub ADD_RESULT Goto READ_TEXT LOOK_CHAR: If P >= iLen Then C = "" Else C = String.Mid$(Html, P + 1, 1) Endif Return READ_CHAR: Inc P If P > iLen Then GoSub ADD_RESULT Return aResult Endif C = String.Mid$(Html, P, 1) sResult &= C Return ADD_RESULT: If sResult Then aResult.Add(sResult) sResult = "" Endif Return End gambas-3.16.3/comp/src/gb.gui.base/.src/Message/000077500000000000000000000000001411575327000211055ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/Message/FMessage.class000066400000000000000000000075311411575327000236340ustar00rootroot00000000000000' Gambas class file Static Private $iButton As Integer Public Sub Run(sIcon As String, sText As String, aButton As String[], aDefault As String[]) As Integer Dim DS As Integer = Desktop.Scale Dim sTitle As String Dim hPict As Picture Dim H As Integer Dim W As Integer Dim I As Integer Dim hButton As Button Dim iBusy As Integer Dim WB As Integer Dim HT As Integer Dim hSpace As Spring Dim sStyle As String sTitle = Message.Title If Not sTitle Then sTitle = Application.Title Message.Title = "" sStyle = Message.Style Select Case sStyle Case "flat" Me.Border = False lblTitle.Show panFrame.Border = Border.Plain panColor.Background = Color.TextBackground panColor.Margin = True If sTitle Then lblTitle.Text = sTitle lblTitle.H = lblTitle.Font.H lblTitle.Show Else lblTitle.Hide Endif Default lblTitle.Hide Me.Title = sTitle End Select While I < aButton.Count If Not Trim(aButton[I]) Then aButton.Remove(I) Else Inc I Endif Wend If aButton.Count = 0 Then aButton = aDefault If aButton.Count = 0 Then aButton = [("OK")] hPict = Picture["icon:/64/" & sIcon] If Not hPict Then hPict = Picture["./gb.gui.base/message" &/ sIcon & ".png"] If Not hPict Then hPict = Picture["./gb.gui.base/message/info.png"] picMessage.Picture = hPict sText = Replace(sText, "\n", "
      ") txtMessage.Ignore = True txtMessage.W = Screen.AvailableWidth \ 4 txtMessage.Text = sText txtMessage.Adjust HT = txtMessage.H txtMessage.Ignore = False H = 0 For I = 0 To aButton.Max hButton = New Button(panButton) As "Button" hButton.Tag = I hButton.Text = aButton[I] hButton.W = Max(DS * 14, hButton.Font.TextWidth(hButton.Text) + DS * 2) H = Max(H, hButton.Font.TextHeight(hButton.Text)) WB += hButton.W + DS 'If I = 0 Then hButton.SetFocus() If I = aButton.Max Then If Message.ColoredButtons And If aButton.Count >= 2 Then If Application.DarkTheme Then hButton.Background = Color.DarkRed Else hButton.Background = Color.SetHSV(Color.Red,, 128) Endif 'hButton.Foreground = Color.TextBackground Endif hButton.Cancel = True hButton.SetFocus Else If I = 0 Then If Message.ColoredButtons And If aButton.Count >= 2 Then If Application.DarkTheme Then hButton.Background = Color.DarkGreen Else hButton.Background = Color.SetHSV(Color.Green,, 128) Endif 'hButton.Foreground = Color.TextBackground Endif Endif Next hSpace = New Spring(panButton) panButton.H = Max(H, DS * 4) W = Max(DS * 32, Max(txtMessage.W + 1, WB) + picMessage.W + DS * 7) H = Max(DS * 8, HT) + panButton.H + DS * 7 If panColor.Margin Then W += DS * 2 H += DS * 2 Endif If lblTitle.Visible Then H += lblTitle.H + DS Me.Resize(W, H) If Application.ActiveWindow Then Me.SkipTaskbar = True $iButton = -1 iBusy = Application.Busy Application.Busy = 0 Me.ShowModal() Application.Busy = iBusy Return $iButton + 1 End Public Sub Button_Click() $iButton = Last.Tag Me.Close End Public Sub Form_KeyPress() Dim hButton As Button If Key.Code = Key.Return Or If Key.Code = Key.Enter Then Try hButton = Application.ActiveControl If hButton Then hButton.Value = True Stop Event Endif Endif End Public Sub mnuCopy_Click() Component.Load("gb.util") Clipboard.Copy(String.FromHTML(txtMessage.Text)) End Public Sub Form_Close() If $iButton < 0 Then Stop Event End Public Sub lblTitle_MouseMove() panFrame_MouseMove End Public Sub panFrame_MouseMove() If Mouse.Left Then Me.Move(Me.X + Mouse.X - Mouse.StartX, Me.Y + Mouse.Y - Mouse.StartY) End gambas-3.16.3/comp/src/gb.gui.base/.src/Message/FMessage.form000066400000000000000000000030421411575327000234630ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,73,37) Background = Color.Background Foreground = Color.TextForeground Resizable = False SkipTaskbar = True Transparent = True Arrangement = Arrange.Fill { mnuPopup Menu #Translate = False Text = "Menu1" Visible = False { mnuCopy Menu Text = ("Copy message") Shortcut = "Ctrl+C" } } { panFrame Panel MoveScaled(1,0,70.875,34.875) Foreground = Color.Foreground Arrangement = Arrange.Vertical Spacing = True Margin = True { lblTitle Label MoveScaled(1,0,67,3) Visible = False Font = Font["Bold,-2"] } { panColor Panel MoveScaled(0,4,70,30) Expand = True Arrangement = Arrange.Vertical { panMessage HBox MoveScaled(0,0,65,20) Expand = True Margin = True { Panel3 Panel MoveScaled(1,1,8,17) { picMessage PictureBox MoveScaled(0,0,8,8) Mode = PictureBox.Fill } } { Panel2 Panel MoveScaled(10,2,2,4) } { Panel4 VBox MoveScaled(14,1,43,18) Expand = True PopupMenu = "mnuPopup" { txtMessage TextLabel MoveScaled(1,1,41,9) Expand = True } } } { Panel5 Panel MoveScaled(29,21,7,3) } { panButton HBox MoveScaled(10,24,37,4) Spacing = True { Panel1 Panel MoveScaled(2,0,4,4) Expand = True } } } } } gambas-3.16.3/comp/src/gb.gui.base/.src/Message/Message.class000066400000000000000000000046261411575327000235300ustar00rootroot00000000000000' Gambas class file Export Static Property Title As String Use $sTitle Static Property Style As String Static Property ColoredButtons As Boolean Use $bUseColor Static Private $sStyle As String 'Export ' GB_DESC CMessageDesc[] = ' { ' GB_DECLARE("Message", 0), GB_VIRTUAL_CLASS(), ' ' GB_STATIC_METHOD("_exit", NULL, CMESSAGE_exit, NULL), ' ' GB_STATIC_METHOD("_call", "i", CMESSAGE_info, "(Message)s[(Button)s]"), ' GB_STATIC_METHOD("Info", "i", CMESSAGE_info, "(Message)s[(Button)s]"), ' GB_STATIC_METHOD("Warning", "i", CMESSAGE_warning, "(Message)s[(Button1)s(Button2)s(Button3)s]"), ' GB_STATIC_METHOD("Question", "i", CMESSAGE_question, "(Message)s[(Button1)s(Button2)s(Button3)s]"), ' GB_STATIC_METHOD("Error", "i", CMESSAGE_error, "(Message)s[(Button1)s(Button2)s(Button3)s]"), ' GB_STATIC_METHOD("Delete", "i", CMESSAGE_delete, "(Message)s[(Button1)s(Button2)s(Button3)s]"), ' ' GB_STATIC_PROPERTY("Title", "s", CMESSAGE_title), ' ' GB_END_DECLARE ' }; ' Static Public Sub _call((Message) As String, Optional Button As String) As Integer Return Info(Message, Button) End Static Public Sub Info((Message) As String, Optional Button As String) As Integer Return FMessage.Run("info", Message, [Button], [("OK")]) End Static Public Sub Warning((Message) As String, Optional Button1 As String, Button2 As String, Button3 As String) As Integer Return FMessage.Run("warning", Message, [Button1, Button2, Button3], [("OK")]) End Static Public Sub Question((Message) As String, Optional Button1 As String, Button2 As String, Button3 As String) As Integer Return FMessage.Run("question", Message, [Button1, Button2, Button3], [("Yes"), ("Cancel")]) End Static Public Sub Error((Message) As String, Optional Button1 As String, Button2 As String, Button3 As String) As Integer Return FMessage.Run("error", Message, [Button1, Button2, Button3], [("OK")]) End Static Public Sub Delete((Message) As String, Optional Button1 As String, Button2 As String, Button3 As String) As Integer Return FMessage.Run("delete", Message, [Button1, Button2, Button3], [("Delete"), ("Cancel")]) End Static Private Function Style_Read() As String If Not $sStyle Then Return "default" Return $sStyle End Static Private Sub Style_Write(Value As String) Value = LCase(Value) Select Case Value Case "flat" $sStyle = Value Case Else $sStyle = "" End Select End gambas-3.16.3/comp/src/gb.gui.base/.src/MovieBox.class000066400000000000000000000143251411575327000223050ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,-Arrangement,-Spacing,-Margin,-Indent,-Invert,-NoBackground,-Tablet,-Cached,-Focus,Padding{Range:0;64},Animation,Stretch,AutoResize,Alignment{Align.*}=TopLeft,Border{Border.None;Plain;Sunken;Raised;Etched},Mode{PictureBox.Normal;Fill;Cover;Contain;Repeat}" Public Const _DefaultEvent As String = "MouseDown" Public Const _DefaultSize As String = "16,16" Public Const _IsContainer As Boolean = False Public Const _Group As String = "Form" Property Animation As Animation Property Read Image As Image Property Alignment As Integer Property AutoResize As Boolean Property Padding As Integer Property Border As Integer Property Stretch As Boolean Property Mode As Integer Property Playing As Boolean Property Path As String Public Enum Normal, Fill, Cover, Contain, {Repeat} Static Private $hDefault As Image Static Private $bDeprecated As Boolean Private $iAlign As Integer = Align.TopLeft Private $iPadding As Integer Private $iBorder As Integer Private $iMode As Integer Private $bAutoResize As Boolean Private $bStretch As Boolean Private $hAnimation As Animation Private $hImage As Image Private $hObs As Observer Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Alignment_Write(Value As Integer) If $iAlign = Value Then Return $iAlign = Value Me.Refresh End Private Function AutoResize_Read() As Boolean Return $bAutoResize End Private Sub GetPadding() As Integer Dim P As Integer P = $iPadding Select Case $iBorder Case Border.Plain Inc P Case Border.Raised, Border.Sunken P += Style.FrameWidth End Select Return P End Private Sub UpdateSize() Dim W As Integer Dim H As Integer Dim P As Integer If Me.Design Then Return If Not $bAutoResize Then Return If $hImage Then W = $hImage.W H = $hImage.H Endif If W And If H Then P = GetPadding() * 2 Me.Resize(W + P, H + P) Endif End Private Sub AutoResize_Write(Value As Boolean) If $bAutoResize = Value Then Return $bAutoResize = Value UpdateSize End Private Function Padding_Read() As Integer Return $iPadding End Private Sub Padding_Write(Value As Integer) If $iPadding = Value Then Return $iPadding = Value Me.Refresh End Private Function Border_Read() As Integer Return $iBorder End Private Sub Border_Write(Value As Integer) If $iBorder = Value Then Return $iBorder = Value UpdateSize Me.Refresh End Private Function Stretch_Read() As Boolean Return $bStretch End Private Sub Stretch_Write(Value As Boolean) If $bStretch = Value Then Return $bStretch = Value Me.Refresh End Private Function Mode_Read() As Integer Return $iMode End Private Sub Mode_Write(Value As Integer) If $iMode = Value Then Return $iMode = Value Me.Refresh End Private Function Animation_Read() As Animation Return $hAnimation End Private Sub Animation_Write(Value As Animation) If $hAnimation = Value Then Return $hAnimation = Value If $hAnimation Then $hObs = New Observer($hAnimation) As "Animation" If Not Me.Design Then $hAnimation.Play() Else $hObs = Null Endif UpdateSize Me.Refresh End Private Function Image_Read() As Image Return $hImage End Public Sub UserControl_Draw() Dim W As Integer Dim H As Integer Dim WW As Integer Dim P As Integer Dim HH As Integer Dim SX As Float Dim SY As Float Dim S As Float Dim X As Integer Dim Y As Integer Dim XX As Integer Dim YY As Integer Dim iMode As Integer Dim F As Integer If $hImage Then W = $hImage.W H = $hImage.H Endif If $iBorder Then Style.PaintPanel(0, 0, Paint.W, Paint.H, $iBorder) If $iBorder = Border.Plain Then F = 1 Else F = Style.FrameWidth + 1 Endif Paint.Rectangle(F, F, Paint.W - F * 2, Paint.H - F * 2) Paint.Clip() Endif If W = 0 Or If H = 0 Then If Me.Design Then If Not $hDefault Then $hDefault = Image.Load("moviebox.png") Paint.DrawImage($hDefault, Desktop.Scale, Desktop.Scale) Endif Stop Event Return Endif P = GetPadding() If $bAutoResize Then GoSub PAINT_IMAGE Stop Event Return Endif WW = Me.W - P * 2 HH = Me.H - P * 2 If $bStretch Then iMode = Fill Else iMode = $iMode Endif Select Case iMode Case Normal, {Repeat} Case Fill W = WW H = HH Case Cover, Contain SX = WW / W SY = HH / H If $iMode = Cover Then S = Max(SX, SY) Else S = Min(SX, SY) Endif W *= S H *= S End Select If Align.IsLeft($iAlign) Then X = 0 Else If Align.IsRight($iAlign) Then X = WW - W Else X = (WW - W) \ 2 Endif If Align.IsTop($iAlign) Then Y = 0 Else If Align.IsBottom($iAlign) Then Y = HH - H Else Y = (HH - H) \ 2 Endif If iMode = {Repeat} Then XX = X - CInt(Ceil(X / W)) * W YY = Y - CInt(Ceil(Y / H)) * H For X = XX To WW Step W For Y = YY To HH Step H GoSub PAINT_IMAGE Next Next Else GoSub PAINT_IMAGE Endif Stop Event Return PAINT_IMAGE: If $hImage Then Paint.DrawImage($hImage, X + P, Y + P, W, H) Return End Public Sub Play() If $hAnimation Then $hAnimation.Play End Public Sub Stop() If $hAnimation Then $hAnimation.Stop End Public Sub Pause() If $hAnimation Then $hAnimation.Pause End Public Sub Rewind() Stop() Play() End Private Function Playing_Read() As Boolean If $hAnimation Then Return $hAnimation.Playing End Private Sub Playing_Write(Value As Boolean) If Not $hAnimation Then Return If Value Then Play() Else Pause() Endif End Public Sub Animation_Change() $hImage = $hAnimation.Image UpdateSize Me.Refresh End Private Function Path_Read() As String If Not $bDeprecated Then $bDeprecated = True Error "gb.gui.base: MovieBox.Path is deprecated. Do not use it anymore." Endif End Private Sub Path_Write(Value As String) If Not $bDeprecated Then $bDeprecated = True Error "gb.gui.base: MovieBox.Path is deprecated. Do not use it anymore." Endif Animation_Write(Animation.Load(Value)) End gambas-3.16.3/comp/src/gb.gui.base/.src/MyComboBox.class000066400000000000000000000014121411575327000225640ustar00rootroot00000000000000' Gambas class file Inherits UserControl Property ReadOnly As Boolean Private $bReadOnly As Boolean = True Private $hView As DrawingArea Public Sub _new() $hView = New DrawingArea(Me) As "View" $hView.Focus = True Me.Proxy = $hView End Public Sub View_Draw() If $bReadOnly Then Style.PaintButton(0, 0, Paint.W, Paint.H, False, Style.StateOf($hView)) Else Style.PaintBox(0, 0, Paint.W, Paint.H, Style.StateOf($hView)) Endif Paint.Background = Color.Black Style.PaintArrow(Paint.W - Desktop.Scale * 3, 0, Desktop.Scale * 2, Paint.H, Align.Bottom, Style.StateOf($hView)) End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $bReadOnly = Value $hView.Refresh End gambas-3.16.3/comp/src/gb.gui.base/.src/Paint.class000066400000000000000000000335561411575327000216370ustar00rootroot00000000000000' Gambas class file Export Static Private $fLastWidth As Float Static Private $sLastFont As String Static Private Sub AddThreeDots(sStr As String) As String Do sStr = RTrim(sStr) If Right(sStr) <> "." Then Break sStr = Left(sStr, -1) Loop If sStr Then sStr &= "…" Return sStr End Static Private Sub TrimTextLine(sText As String, W As Float, Optional bDots As Boolean) As String[] Dim I As Integer Dim WT As Integer Dim L As Integer Dim aResult As New String[] Dim sCar As String Dim P As Integer If Not sText Then Return [""] L = String.Len(sText) While I < L Inc I sCar = String.Mid$(sText, I, 1) If sCar = " " Or If sCar = "-" Then P = I If bDots Then WT = Paint.Font.TextWidth(AddThreeDots(String.Left(sText, I))) Else WT = Paint.Font.TextWidth(RTrim(String.Left(sText, I))) Endif If WT > W Then If P = 0 Then P = I - 1 aResult.Add(String.Left(sText, P)) If P = 0 Then Return aResult sText = String.Mid$(sText, P + 1) L = String.Len(sText) I = 0 P = 0 Endif Wend If sText Then aResult.Add(sText) Return aResult End Static Public Sub TrimText(Text As String, W As Float, Optional H As Float) As String Dim I As Integer Dim HL As Integer Dim aText As String[] Dim N As Integer Dim aResult As String[] Dim bAddDots As Boolean If Not Text Or If W <= 0 Then Return HL = Paint.Font.TextHeight("") If H = 0 Then H = HL N = CInt(H / HL) - 1 If N < 0 Then Return aText = Split(Text, "\n") Do If I > N Then bAddDots = N < aText.Max aText.Remove(N + 1, -1) aResult = TrimTextLine(aText.Last, W, True) aText.Last = aResult[0] If aResult.Count > 1 Then bAddDots = True If bAddDots Then aText.Last = AddThreeDots(aText.Last) Break Endif If I >= aText.Count Then Break aResult = TrimTextLine(aText[I], W) aText.Remove(I) aText.Insert(aResult, I) I += aResult.Count Loop Return aText.Join("\n") End Static Private Sub HtmlLeft(sHtml As String, iPos As Integer) As String Dim sRes As String Dim bMarkup As Boolean Dim sCar As String Dim I As Integer Dim aHtml As String[] For I = 1 To String.Len(sHtml) sCar = String.Mid(sHtml, I, 1) If sCar = "<" Then bMarkup = True sRes &= sCar Continue Else If sCar = ">" Then bMarkup = False sRes &= sCar Continue Endif If bMarkup Or If I <= iPos Then sRes &= sCar Next aHtml = Main.SplitHTML(sRes) I = 0 While I < aHtml.Max sCar = aHtml[I] If sCar Begins "<" And If sCar Ends ">" Then If aHtml[I + 1] = "" Then aHtml.Remove(I, 2) Continue Endif Endif Inc I Wend Return RTrim(aHtml.Join("")) End Static Public Sub TrimRichText(RichText As String, W As Float, Optional H As Float) As String Dim I As Integer Dim sCar As String Dim bMarkup As Boolean Dim iLen As Integer Dim sText As String Dim sLeft As String Dim sPrevLeft As String If Not RichText Or If W <= 0 Then Return If H = 0 Then H = Paint.Font.TextHeight("") iLen = String.Len(RichText) For I = 1 To iLen sCar = String.Mid(RichText, I, 1) If sCar = "<" Then bMarkup = True Else If sCar = ">" Then bMarkup = False Endif If bMarkup Then Continue sPrevLeft = sLeft sLeft = HtmlLeft(RichText, I) If Paint.Font.RichTextHeight(sLeft, W) > H Then Break Next If I = 1 Then Return If I > iLen Then Return RichText sText = sPrevLeft If sText Then sText = AddThreeDots(sText) Return sText End Static Public Sub DrawTextShadow(Text As String, X As Float, Y As Float, W As Float, H As Float, Optional Alignment As Integer = Align.TopLeft, Optional Radius As Integer = -1, Optional Opacity As Float = 0.5) Dim hShadow As Image Dim hFont As Font Dim hBrush As PaintBrush Dim DX, DY As Integer Dim iBackground As Integer hFont = Paint.Font iBackground = Paint.Background hBrush = Paint.Brush If Radius < 0 Then Radius = Max(1, hFont.Height \ 8) Radius = Min(256, Radius) With Paint.TextSize(Text) hShadow = New Image(Ceil(.W) + 2 + Radius * 2, Ceil(.H) + 2 + Radius * 2, Color.Transparent) DX = W - .W DY = H - .H Paint.Begin(hShadow) Paint.Font = hFont Paint.Background = iBackground Paint.Brush = hBrush If Align.IsCenter(Alignment) Then DX /= 2 Else If Align.IsLeft(Alignment) Then DX = 0 Endif If Align.IsMiddle(Alignment) Then DY /= 2 Else If Align.IsTop(Alignment) Then DY = 0 Endif Paint.DrawText(Text, Radius - DX, Radius - DY, W, H, Alignment) Paint.End hShadow.Fuzzy(Radius) End With Paint.DrawImage(hShadow, X + DX - Radius, Y + DY - Radius,,, Opacity) End Static Public Sub DrawRichTextShadow(Text As String, X As Float, Y As Float, W As Float, H As Float, Optional Alignment As Integer = Align.TopLeft, Optional Radius As Integer = -1, Optional Opacity As Float = 0.5) Dim hShadow As Image Dim hFont As Font Dim hBrush As PaintBrush Dim DX, DY As Integer Dim iBackground As Integer hFont = Paint.Font iBackground = Paint.Background hBrush = Paint.Brush If Radius < 0 Then Radius = Max(1, hFont.Height \ 8) Radius = Min(256, Radius) With Paint.RichTextSize(Text, W) hShadow = New Image(Ceil(.W) + 2 + Radius * 2, Ceil(.H) + 2 + Radius * 2, Color.Transparent) '&HFF000000) DX = W - .W DY = H - .H Paint.Begin(hShadow) Paint.Font = hFont Paint.Background = iBackground Paint.Brush = hBrush If Align.IsCenter(Alignment) Then DX /= 2 Else If Align.IsLeft(Alignment) Then DX = 0 Endif If Align.IsMiddle(Alignment) Then DY /= 2 Else If Align.IsTop(Alignment) Then DY = 0 Endif Paint.DrawRichText(Text, Radius - DX, Radius - DY, W, H, Alignment) Paint.End hShadow.Fuzzy(Radius) End With Paint.DrawImage(hShadow, X + DX - Radius, Y + DY - Radius,,, Opacity) End '' Stretch and draw an image or part of an image so that it fits a specified rectangle. '' '' - ~Image~ is the image to draw. '' - ~X~, ~Y~, ~Width~ and ~Height~ define the position and size of the target rectangle. '' - ~Alignment~ is the alignment of the stretched image inside the targer rectangle. It's [Align.Center](../../align/center) by default. '' - ~Opacity~ is the opacity of the painting. By default it is '1.0', i.e. fully opaque. '' - ~Source~ defines the part of the image to draw. By default it is 'NULL', i.e. the entire image is drawn. Static Public Sub StretchImage((Image) As Image, X As Float, Y As Float, Width As Float, Height As Float, Optional Alignment As Integer = Align.Center, Optional Opacity As Float = 1, Optional Source As Rect) Dim W As Float Dim H As Float Dim S As Float If Source Then W = Source.W H = Source.H Else W = Image.W H = Image.H Endif If W <= 0 Or If H <= 0 Then Return S = Min(Width / W, Height / H) W *= S H *= S If Align.IsRight(Alignment) Then X += Width - W Else If Align.IsCenter(Alignment) Then X += (Width - W) / 2 Endif If Align.IsBottom(Alignment) Then Y += Height - H Else If Align.IsMiddle(Alignment) Then Y += (Height - H) / 2 Endif Paint.DrawImage(Image, X, Y, W, H, Opacity, Source) End '' Draw a rectangle frame '' '' - ~X~, ~Y~, ~Width~ and ~Height~ define the position and size of the rectangle. '' - ~Color~ is the color used for painting the rectangle. '' - ~Size~ is the width of the rectangle border. It's '1' pixel by default. If negative, then the frame will be painted outside of the rectangle, otherwise inside. Static Public Sub DrawRect(X As Float, Y As Float, Width As Float, Height As Float, (Color) As Integer, Optional Size As Float = 1) If Size = 0 Then Return If Size < 0 Then Size = -Size X -= Size Y -= Size Width += Size * 2 Height += Size * 2 Endif If Size >= Min(Width, Height) / 2 Then Paint.FillRect(X, Y, Width, Height, Color) Return Endif Paint.Save Paint.Rectangle(X, Y, Width, Size) Paint.Rectangle(X + Width - Size, Y + Size, Size, Height - Size) Paint.Rectangle(X, Y + Height - Size, Width - Size, Size) Paint.Rectangle(X, Y + Size, Size, Height - Size * 2) Paint.Background = Color Paint.Fill Paint.Restore End Static Public Sub _EstimateFixedFontCharWidth(hFont As Font) As Float Dim iSpaceWidth As Integer Dim I As Integer Dim sText As String Dim sFont As String sFont = hFont.ToString() If sFont = $sLastFont Then Return $fLastWidth $sLastFont = sFont iSpaceWidth = hFont.TextWidth(" ") For I = 33 To 255 If I > 126 And If I < 160 Then Continue If I = 173 Then Continue If hFont.TextWidth(String.Chr$(I)) <> iSpaceWidth Then $fLastWidth = 0 Return 0 Endif Next sText = String$(4, "AbCdEfGh01#@WwmM") $fLastWidth = hFont.TextWidth(sText) / Len(sText) Return $fLastWidth End ' Static Public Debug As Boolean ' ' Static Public Sub MoveTo(X As Float, Y As Float) ' ' Super.MoveTo(X, Y) ' If {Debug} Then Print "MoveTo("; CStr(X); ","; CStr(Y); ")" ' ' End ' ' Static Public Sub LineTo(X As Float, Y As Float) ' ' Super.LineTo(X, Y) ' If {Debug} Then Print "LineTo("; CStr(X); ","; CStr(Y); ")" ' ' End ' ' Static Public Sub CurveTo(X1 As Float, X2 As Float, Y1 As Float, Y2 As Float, X3 As Float, Y3 As Float) ' ' Super.CurveTo(X1, X2, Y1, Y2, X3, Y3) ' If {Debug} Then Print "CurveTo("; CStr(X1); ","; CStr(Y1); ","; CStr(X2); ","; CStr(Y2); ","; CStr(X3); ","; CStr(Y3); ")" ' ' End ' ' ' Static Public Sub Clip(Optional Preserve As Boolean) ' ' If {Debug} Then ' With Paint.ClipExtents ' Print "Clip() ["; CStr(.X); ","; CStr(.Y); ","; CStr(.Width); ","; CStr(.Height); "] -> "; ' End With ' Endif ' Super.Clip(Preserve) ' If {Debug} Then ' With Paint.ClipExtents ' Print "["; CStr(.X); ","; CStr(.Y); ","; CStr(.Width); ","; CStr(.Height); "]" ' End With ' Endif ' ' End ' ' Static Public Sub Restore() ' ' If {Debug} Then ' With Paint.ClipExtents ' Print "Restore() ["; CStr(.X); ","; CStr(.Y); ","; CStr(.Width); ","; CStr(.Height); "] -> "; ' End With ' Endif ' Super.Restore ' If {Debug} Then ' With Paint.ClipExtents ' Print "["; CStr(.X); ","; CStr(.Y); ","; CStr(.Width); ","; CStr(.Height); "]" ' End With ' Endif ' ' End ' ' Static Public Sub Rectangle(X As Float, Y As Float, W As Float, H As Float, Optional R As Float) ' ' Super.Rectangle(X, Y, W, H, R) ' If {Debug} Then ' Print "Rectangle("; CStr(X); ","; CStr(Y); ","; CStr(W); ","; CStr(H); ' If R Then Print ","; CStr(R); ' Print ")" ' Endif ' ' End ' ' Static Public Sub Cross(X As Float, Y As Float, Width As Float, Height As Float, Size As Float) ' ' Dim XC As Float ' Dim YC As Float ' Dim DH As Float ' Dim DW As Float ' ' XC = X + Width / 2 ' YC = Y + Width / 2 ' ' DW = (Width - Size) / 2 ' DH = (Height - Size) / 2 ' ' Paint.MoveTo(XC - Size / 2, Y) ' Paint.RelLineTo(Size, 0) ' Paint.RelLineTo(0, DH) ' Paint.RelLineTo(DW, 0) ' Paint.RelLineTo(0, Size) ' Paint.RelLineTo(- DW, 0) ' Paint.RelLineTo(0, DH) ' Paint.RelLineTo(- Size, 0) ' Paint.RelLineTo(0, - DH) ' Paint.RelLineTo(- DW, 0) ' Paint.RelLineTo(0, - Size) ' Paint.RelLineTo(DW, 0) ' Paint.RelLineTo(0, - DH) ' ' End ' '' Add an arrow to the current path. '' '' - ~X~, ~Y~, ~Width~ and ~Height~ define the rectangle enclosing the arrow, and hence its size. '' - ~Orientation~ is the orientation of the arrow. It can be one the four following constants: '' - [Align.Top](../../align/top) for a top arrow. '' - [Align.Bottom](../../align/top) for a bottom arrow. '' - [Align.Left](../../align/top) for a left arrow. '' - [Align.Right](../../align/top) for a right arrow. '' - ~Alignment~ is the alignment of the arrow inside the specified rectangle. It's [Align.Center](../../align/center) by default. '' '' Once the arrow is drawn, you must then use the [../stroke] method to actually paint it. Static Public Sub Arrow(X As Float, Y As Float, Width As Float, Height As Float, Orientation As Integer, Optional Alignment As Integer = Align.Center) Dim SX, SY As Float SX = Min(Width, Height) / 4 If SX <= 0 Then Return SY = SX * 2 If Orientation = Align.Top Or If Orientation = Align.Bottom Then Swap SX, SY If Align.IsLeft(Alignment) Then X = SX Else If Align.IsRight(Alignment) Then X = Width - SX Else X += Width / 2 Endif If Align.IsTop(Alignment) Then Y = SY Else If Align.IsBottom(Alignment) Then Y = Height - SY Else Y += Height / 2 Endif Width = SX * 2 Height = SY * 2 Select Case Orientation Case Align.Top Paint.MoveTo(X - SX, Y + SY) Paint.RelLineTo(SX, -SY * 2) Paint.RelLineTo(SX, SY * 2) Case Align.Bottom Paint.MoveTo(X - SX, Y - SY) Paint.RelLineTo(SX, SY * 2) Paint.RelLineTo(SX, -SY * 2) Case Align.Left Paint.MoveTo(X + SX, Y - SY) Paint.RelLineTo(-SX * 2, SY) Paint.RelLineTo(SX * 2, SY) Case Align.Right Paint.MoveTo(X - SX, Y - SY) Paint.RelLineTo(SX * 2, SY) Paint.RelLineTo(-SX * 2, SY) End Select End '' Add a check mark to the current path. '' '' - ~X~, ~Y~, ~Width~ and ~Height~ define the rectangle enclosing the check mark, and hence its size. '' '' Once the check mark is drawn, you must then use the [../stroke] method to actually paint it. Static Public Sub Check(X As Float, Y As Float, Width As Float, Height As Float) Dim D As Float D = Min(Width / 3, Height / 2) X += (Width - D * 3) / 2 Y += (Height - D * 2) / 2 Paint.MoveTo(X, Y + D) Paint.RelLineTo(D, D) Paint.RelLineTo(D * 2, -D * 2) End gambas-3.16.3/comp/src/gb.gui.base/.src/Picture.class000066400000000000000000000125251411575327000221700ustar00rootroot00000000000000' Gambas class file Export Class Stock Static Private $cCache As New Collection Static Private $cPictToKey As Collection Static Private Sub GetKey(sPath As String) As String Dim sKey As String If sPath Begins "icon:/" Then sKey = sPath Else If File.IsRelative(sPath) Then While sPath Begins "./" sPath = Mid$(sPath, 3) Wend sKey = Component.FindFromPath(".." &/ sPath) If sKey Then sKey &= ":" While sPath Begins "../" sPath = Mid$(sPath, 4) Wend sKey &= sPath Else sKey = sPath Endif Return sKey End Static Public Sub Load(Path As String) As Picture Dim sPath As String Dim bMoveUp As Boolean If Path Begins "icon:/" Then Try Return Stock[Mid$(Path, 7)] Else sPath = Path If File.IsRelative(sPath) Then If sPath Begins "./" Then If sPath Not Begins "./gb." Then bMoveUp = True Endif Else bMoveUp = True Endif Endif If bMoveUp Then sPath = ".." &/ sPath Return Super.Load(sPath) Endif End Static Public Sub _get(Path As String) As Picture Dim sKey As String Dim hPict As Picture Dim sPath As String Dim sBaseName As String Dim sDarkPath As String Dim bMoveUp As Boolean If Not Path Then Return sKey = GetKey(Path) hPict = $cCache[sKey] If hPict Then Return hPict If Path Begins "icon:/" Then Try hPict = Stock[Mid$(Path, 7)] If Not hPict Then Return Else sPath = Path If File.IsRelative(sPath) Then If sPath Begins "./" Then If sPath Not Begins "./gb." Then bMoveUp = True Endif Else bMoveUp = True Endif Endif If bMoveUp Then sPath = ".." &/ sPath ' Support for rtl/ltr icons sBaseName = File.BaseName(sPath) If sBaseName Ends "-ltr" And If System.RightToLeft Then sBaseName = Left(sBaseName, -4) & "-rtl" sPath = File.SetBaseName(sPath, sBaseName) Else If sBaseName Ends "-rtl" And If Not System.RightToLeft Then sBaseName = Left(sBaseName, -4) & "-ltr" sPath = File.SetBaseName(sPath, sBaseName) Endif ' Support for dark themes If Application.DarkTheme Then sDarkPath = File.SetBaseName(sPath, sBaseName & "-dark") If Exist(sDarkPath) Then Try hPict = Super.Load(sDarkPath) Else Try hPict = Image.Load(sPath).Invert(True).Picture Endif If hPict Then Goto __LOAD_OK Endif Try hPict = Super.Load(sPath) If Error Then 'Error "gb.gui: warning: unable to load icon "; Path; ": "; System.Backtrace.Join(" ") Return Null Endif Endif __LOAD_OK: $cCache[sKey] = hPict Return hPict End Static Public Sub _put(Value As Picture, Path As String) Dim sKey As String If Not Path Then Return sKey = GetKey(Path) $cCache[sKey] = Value End Static Public Sub Flush() $cCache.Clear End Static Public Sub _exit() $cCache.Clear End Static Public Sub _Refresh(ByRef hPict As Picture) Dim sKey As String Dim sPict As String If Not hPict Then Return sPict = CStr(Object.Address(hPict)) Try sKey = $cPictToKey[sPict] If Not sKey Then Return hPict = Picture[sKey] '$cPictToKey.Remove(sPict) End Static Private Sub RefreshMenu(hMenu As Menu) _Refresh(ByRef hMenu.Picture) For Each hMenu In hMenu.Children RefreshMenu(hMenu) Next End Static Public Sub Refresh() Dim hPict As Picture Dim hWindow As Window Dim hCtrl As Object Dim sKey As String Dim hTabStrip As TabStrip Dim I As Integer Dim hMenu As Menu Dim hWin As Window Dim cKeepCache As Collection 'Dim N As Integer Inc Application.Busy $cPictToKey = New Collection For Each hPict In $cCache sKey = $cCache.Key If sKey Not Begins "icon:/" Then Continue $cPictToKey[CStr(Object.Address(hPict))] = sKey 'Debug sKey Next cKeepCache = $cCache.Copy() $cCache.Clear For Each hWindow In Windows hWin = hWindow _Refresh(ByRef hWin.Icon) GoSub REFRESH_MENU For Each hCtrl In hWindow.Controls 'Debug Object.Type(hWindow);; hCtrl.Name 'Inc N If hCtrl Is TabStrip Then hTabStrip = hCtrl For I = 0 To hTabStrip.Count - 1 _Refresh(ByRef hTabStrip[I].Picture) Next Else If hCtrl Is Window Then hWin = hCtrl _Refresh(ByRef hWin.Icon) GoSub REFRESH_MENU Else Try hCtrl._RefreshPicture() If Error Then Try _Refresh(ByRef hCtrl.Picture) Endif Next Next $cPictToKey = Null 'Debug N Dec Application.Busy Return REFRESH_MENU: For Each hMenu In hWin.Menus RefreshMenu(hMenu) Next Return End '' @{since 3.16} '' '' Return a stretched copy of a picture. '' '' - ~Width~ and ~Height~ are the size of the stretched picture. If ~Height~ is omitted, it is made equal to ~Width~. '' '' [[ info '' This function internally transforms the picture into an image and calls the [Image.Stretch](/comp/gb.qt4/image/stretch) method. '' ]] Public Sub Stretch(Width As Integer, Optional Height As Integer) As Picture If IsMissing(Height) Then Height = Width Return Me.Image.Stretch(Width, Height).Picture End gambas-3.16.3/comp/src/gb.gui.base/.src/PictureBox.class000066400000000000000000000130031411575327000226310ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Padding{Range:0;64},Picture,Stretch,AutoResize,Alignment{Align.*}=TopLeft,Border{Border.None;Plain;Sunken;Raised;Etched},Mode{PictureBox.Normal;Fill;Cover;Contain;Repeat}" Public Const _DefaultEvent As String = "MouseDown" Public Const _DefaultSize As String = "16,16" Public Const _IsContainer As Boolean = False Public Const _Group As String = "Form" Property Picture As Picture Property Image As Image Property Alignment As Integer Property AutoResize As Boolean Property Padding As Integer Property Border As Integer Property Stretch As Boolean Property Mode As Integer Property Cached As Boolean Public Enum Normal, Fill, Cover, Contain, {Repeat} Static Private $hDefault As Image Static Private $bWarningCached As Boolean Private $iAlign As Integer = Align.TopLeft Private $iPadding As Integer Private $iBorder As Integer Private $iMode As Integer Private $hPicture As Picture Private $hImage As Image Private $bAutoResize As Boolean Private $bStretch As Boolean Private $bCached As Boolean Private Function Alignment_Read() As Integer Return $iAlign End Private Sub Alignment_Write(Value As Integer) If $iAlign = Value Then Return $iAlign = Value Me.Refresh End Private Function AutoResize_Read() As Boolean Return $bAutoResize End Private Sub GetPadding() As Integer Dim P As Integer P = $iPadding Select Case $iBorder Case Border.Plain Inc P Case Border.Raised, Border.Sunken P += Style.FrameWidth End Select Return P End Private Sub UpdateSize() Dim W As Integer Dim H As Integer Dim P As Integer If Me.Design Then Return If Not $bAutoResize Then Return If $hImage Then W = $hImage.W H = $hImage.H Else If $hPicture Then W = $hPicture.W H = $hPicture.H Endif If W And If H Then P = GetPadding() * 2 Me.Resize(W + P, H + P) Endif End Private Sub AutoResize_Write(Value As Boolean) If $bAutoResize = Value Then Return $bAutoResize = Value UpdateSize End Private Function Padding_Read() As Integer Return $iPadding End Private Sub Padding_Write(Value As Integer) If $iPadding = Value Then Return $iPadding = Value UpdateSize Me.Refresh End Private Function Border_Read() As Integer Return $iBorder End Private Sub Border_Write(Value As Integer) If $iBorder = Value Then Return $iBorder = Value UpdateSize Me.Refresh End Private Function Stretch_Read() As Boolean Return $bStretch End Private Sub Stretch_Write(Value As Boolean) If $bStretch = Value Then Return $bStretch = Value Me.Refresh End Private Function Mode_Read() As Integer Return $iMode End Private Sub Mode_Write(Value As Integer) If $iMode = Value Then Return $iMode = Value Me.Refresh End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) $hPicture = Value UpdateSize Me.Refresh End Private Function Image_Read() As Image Return $hImage End Private Sub Image_Write(Value As Image) $hImage = Value UpdateSize Me.Refresh End Public Sub UserControl_Draw() Dim W As Integer Dim H As Integer Dim WW As Integer Dim P As Integer Dim HH As Integer Dim SX As Float Dim SY As Float Dim S As Float Dim X As Integer Dim Y As Integer Dim XX As Integer Dim YY As Integer Dim iMode As Integer Dim F As Integer If $hImage Then W = $hImage.W H = $hImage.H Else If $hPicture Then W = $hPicture.W H = $hPicture.H Endif If $iBorder Then Style.PaintPanel(0, 0, Paint.W, Paint.H, $iBorder) If $iBorder = Border.Plain Then F = 1 Else F = Style.FrameWidth + 1 Endif Paint.Rectangle(F, F, Paint.W - F * 2, Paint.H - F * 2) Paint.Clip() Endif If W = 0 Or If H = 0 Then If Me.Design Then If Not $hDefault Then $hDefault = Image.Load("picturebox.png") Paint.DrawImage($hDefault, Desktop.Scale, Desktop.Scale, Desktop.Scale * 4, Desktop.Scale * 4) Endif Stop Event Return Endif P = GetPadding() If $bAutoResize Then GoSub PAINT_IMAGE Stop Event Return Endif WW = Me.W - P * 2 HH = Me.H - P * 2 If $bStretch Then iMode = Fill Else iMode = $iMode Endif Select Case iMode Case Normal, {Repeat} Case Fill W = WW H = HH Case Cover, Contain SX = WW / W SY = HH / H If $iMode = Cover Then S = Max(SX, SY) Else S = Min(SX, SY) Endif W *= S H *= S End Select If Align.IsLeft($iAlign) Then X = 0 Else If Align.IsRight($iAlign) Then X = WW - W Else X = (WW - W) \ 2 Endif If Align.IsTop($iAlign) Then Y = 0 Else If Align.IsBottom($iAlign) Then Y = HH - H Else Y = (HH - H) \ 2 Endif If iMode = {Repeat} Then XX = X - CInt(Ceil(X / W)) * W YY = Y - CInt(Ceil(Y / H)) * H For X = XX To WW Step W For Y = YY To HH Step H GoSub PAINT_IMAGE Next Next Else GoSub PAINT_IMAGE Endif Stop Event Return PAINT_IMAGE: If $hImage Then Paint.DrawImage($hImage, X + P, Y + P, W, H) Else Paint.DrawPicture($hPicture, X + P, Y + P, W, H) Endif Return End Private Function Cached_Read() As Boolean Return $bCached End Private Sub Cached_Write(Value As Boolean) If Not $bWarningCached Then Error "gb.gui: warning; PictureBox.Cached is deprecated" $bWarningCached = True Endif $bCached = Value End gambas-3.16.3/comp/src/gb.gui.base/.src/ProgressBar.class000066400000000000000000000066361411575327000230140ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,Label=True,Border=True,Pulse" Public Const _Group As String = "Form" Public Const _DefaultEvent As String = "MouseDown" Public Const _DefaultSize As String = "24,4" Property Label As Boolean Property Value As Float Property Pulse As Boolean Property Border As Boolean Private $fValue As Float Private $bLabel As Boolean = True Private $bPulse As Boolean Private $iPulse As Integer Private $hTimerPulse As Timer Private $bBorder As Boolean = True Private Function Label_Read() As Boolean Return $bLabel End Private Sub Label_Write(Value As Boolean) $bLabel = Value Me.Refresh End Private Function Value_Read() As Float If $bPulse Then Return Return $fValue End Private Sub Value_Write(Value As Float) If $bPulse Then Return Value = Max(0, Min(1, Value)) If Value = $fValue Then Return $fValue = Value Me.Refresh End Public Sub UserControl_Draw() Dim F As Integer '= 2 'Max(4, Style.FrameWidth + 2) Dim iWP As Integer Dim W As Float Dim iCol As Integer iCol = Color.Merge(Color.Background, Color.LightForeground) If Not Me.Enabled Then iCol = Color.Desaturate(iCol) 'Paint.FillRect(F, F, Paint.W - F * 2, Paint.H - F * 2, iCol) If $bBorder Then 'Paint.AntiAlias = False Paint.Background = Color.LightForeground Paint.Rectangle(0.5, 0.5, Paint.W - 1, Paint.H - 1) Paint.Stroke 'Paint.AntiAlias = True F = 2 Else F = 0 Endif iCol = Color.SelectedBackground If Not Me.Enabled Then iCol = Color.Desaturate(iCol) 'Draw.Foreground = Color.LightForeground 'Draw.Rect(0, 0, Paint.W, Paint.H) 'Style.PaintPanel(0, 0, Paint.W, Paint.H, Border.Sunken) Paint.Rectangle(F, F, Paint.W - F * 2, Paint.H - F * 2) Paint.Clip If $bPulse Then iWP = Paint.H * 2 W = Paint.W - iWP If W >= 10 Then W *= $fValue Paint.FillRect(W, 0, iWP, Paint.H, iCol) 'Style.PaintPanel(W, 0, iWP, Paint.H, Border.Raised) Endif Else W = Paint.W * $fValue Paint.FillRect(0, 0, W, Paint.H, iCol) 'Style.PaintPanel(F, F, W, Draw.H - F * 2, Border.Raised) If $bLabel Then Paint.Save Paint.Rectangle(0, 0, W, Paint.H) Paint.Clip Paint.Background = Color.SelectedForeground Paint.DrawText(Format($fValue, "0%"), 0, 0, Paint.W, Paint.H, Align.Center) Paint.Restore Paint.Save Paint.Rectangle(W, 0, Paint.W - W, Paint.H) Paint.Clip Paint.Background = Color.Foreground Paint.DrawText(Format($fValue, "0%"), 0, 0, Paint.W, Paint.H, Align.Center) Paint.Restore Endif Endif End Private Function Pulse_Read() As Boolean Return $bPulse End Private Sub Pulse_Write(Value As Boolean) If Value = $bPulse Then Return $bPulse = Value If Me.Design Then Return If $bPulse And If Me.W > (Me.H * 2) Then $hTimerPulse = New Timer As "Pulse" $hTimerPulse.Delay = 20 $hTimerPulse.Start $fValue = 0 $iPulse = 1 Else $hTimerPulse = Null Endif End Public Sub Pulse_Timer() $fValue += 0.02 * $iPulse If $fValue < 0 Then $fValue = 0 $iPulse = 1 Else If $fValue > 1 Then $fValue = 1 $iPulse = -1 Endif Me.Refresh End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value Me.Refresh End gambas-3.16.3/comp/src/gb.gui.base/.src/ScrollArea.class000066400000000000000000000547161411575327000226140ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,Border=True,ScrollBar{Scroll.*}=Both,Focus,NoBackground,Tablet,Shadow,NoShadow" Public Const _DefaultEvent As String = "Draw" Public Const _DefaultSize As String = "24,24" Public Const _Similar As String = "DrawingArea,ScrollView" Property ScrollX As Integer Property ScrollY As Integer Property Read ScrollWidth, ScrollW, ContentsWidth, ContentsW As Integer Property Read ScrollHeight, ScrollH, ContentsHeight, ContentsH As Integer Property Read ClientWidth, ClientW As Integer Property Read ClientHeight, ClientH As Integer Property Border As Boolean Property Focus As Boolean Property Painted As Boolean Property NoBackground As Boolean Property ScrollBar As Integer Property Tracking As Boolean Property Background As Integer Property Foreground As Integer Property Tablet As Boolean Property Shadow As Boolean Property NoShadow As Boolean Property Read View As DrawingArea Property UseMouse As Boolean Property Read Scrolling As Boolean Property NoAnimation As Boolean Use $bNoAnimation Event Scroll Event Draw Event Resize Event Font Static Private $hFadeN As Picture Static Private $hFadeS As Picture Static Private $hFadeW As Picture Static Private $hFadeE As Picture Static Private $iFadeColor As Integer = -1 Private $bUseMouse As Boolean = True Private $bNoArrange As Boolean Private $hDrawingArea As DrawingArea Private $hHBar As ScrollBar Private $hVBar As ScrollBar Private $bHBarVisible As Boolean Private $bVBarVisible As Boolean Private $hObserver As Observer Private $iScroll As Integer = Scroll.Both Private $iBackground As Integer = Color.Default Private $hTimerAutoScroll As Timer Private $hTimerArrange As Timer Private $DX As Integer Private $DY As Integer Private $W As Integer Private $H As Integer Private $bShadow As Boolean Private $bNoShadow As Boolean Private $iShadowN As Integer Private $iShadowS As Integer Private $iShadowW As Integer Private $iShadowE As Integer Private $hShadowN As DrawingArea Private $hShadowS As DrawingArea Private $hShadowW As DrawingArea Private $hShadowE As DrawingArea Private $hCorner As DrawingArea Private $hBorder As DrawingArea Private $iScrollX As Integer Private $iScrollY As Integer Private $iTargetX As Integer Private $iTargetY As Integer Private $hTimerScroll As Timer Private $bIgnoreNextAnimation As Boolean Private $N As Integer Private Sub LoadFades() Dim hImage As Image Dim Y As Integer Dim iColor As Integer iColor = Color.Desaturate(If(Me.Foreground = Color.Default, Color.TextForeground, Me.Foreground)) If iColor = $iFadeColor Then Return hImage = New Image(32, 4, Color.Transparent) For Y = 0 To 3 hImage.FillRect(0, Y, hImage.W, 1, Color.SetAlpha(iColor, 180 + Y * 24)) Next $hFadeN = hImage.Picture hImage.RotateLeft $hFadeW = hImage.Picture hImage.RotateLeft $hFadeS = hImage.Picture hImage.RotateLeft $hFadeE = hImage.Picture $iFadeColor = iColor End Public Sub _OnBackgroundChange() End Public Sub _new() Me.Arrangement = Arrange.None '$hBorder = New DrawingArea(Me) As "Border" '$hBorder.Arrangement = Arrange.Fill $hDrawingArea = New DrawingArea(Me) As "DrawingArea" $hObserver = New Observer(Me) As "ScrollArea" $hHBar = New ScrollBar(Me) As "Scrollbar" $hHBar.Step = Desktop.Scale $hHBar.Orientation = ScrollBar.Horizontal $hVBar = New ScrollBar(Me) As "Scrollbar" $hVBar.Step = Desktop.Scale $hVBar.Orientation = ScrollBar.Vertical $hCorner = New DrawingArea(Me) $hCorner.Hide Me.Proxy = $hDrawingArea Me._Container = $hDrawingArea Border_Write(True) $bIgnoreNextAnimation = True 'ScrollArea_Arrange ' 'Debug "<<<<<" End Private Sub UpdateScrollbarVisibility() 'If Me.Hovered Then $hHBar.Visible = $bHBarVisible $hVBar.Visible = $bVBarVisible $hCorner.Visible = $bHBarVisible And $bHBarVisible 'Else ' $hHBar.Visible = False ' $hVBar.Visible = False 'Endif End Private Sub LayoutScrollbars() Dim SB, SP, FW, X, Y, W, H, P As Integer Dim bHBarAllowed, bVBarAllowed As Boolean Dim bHBarVisible, bVBarVisible As Boolean Dim OW, OH, OWC, OHC As Integer If $bNoArrange Then Return $bNoArrange = True 'Debug Me.ClientW;; System.Backtrace.Join(" ") SB = Style.ScrollbarSize SP = 0 'Style.ScrollbarSpacing If $hBorder Then FW = 1 X = 1 Y = 1 Endif bHBarAllowed = $iScroll = Scroll.Horizontal Or $iScroll = Scroll.Both bVBarAllowed = $iScroll = Scroll.Vertical Or $iScroll = Scroll.Both bHBarVisible = $bHBarVisible bVBarVisible = $bVBarVisible RETRY: OWC = $W OHC = $H W = Me.Width - FW * 2 H = Me.Height - FW * 2 If W >= $W And If H >= $H Then '$hHBar.MinValue = 0 $hHBar.MaxValue = 0 '$hVBar.MinValue = 0 $hVBar.MaxValue = 0 '$hHBar.Hide '$hVBar.Hide bHBarVisible = False bVBarVisible = False Else If bHBarAllowed And If $W > W And If $H <= (H - SB - SP) Then '$hHBar.MinValue = 0 $hHBar.MaxValue = $W - W $hHBar.PageStep = W '$hVBar.MinValue = 0 $hVBar.MaxValue = 0 '$hHBar.Show '$hVBar.Hide bHBarVisible = True bVBarVisible = False Else If bVBarAllowed And If $H > H And If $W <= (W - SB - SP) Then '$hVBar.MinValue = 0 $hVBar.MaxValue = $H - H $hVBar.PageStep = H '$hHBar.MinValue = 0 $hHBar.MaxValue = 0 '$hHBar.Hide '$hVBar.Show bHBarVisible = False bVBarVisible = True Else '$hHBar.MinValue = 0 If bVBarAllowed Then P = W - SB - SP Else P = W Endif If $W > P Then $hHBar.MaxValue = $W - P $hHBar.PageStep = P '$hHBar.Visible = bHBarAllowed bHBarVisible = bHBarAllowed Else '$hHBar.Hide '$hHBar.MinValue = 0 $hHBar.MaxValue = 0 bHBarVisible = False Endif '$hVBar.MinValue = 0 If bHBarAllowed Then P = H - SB - SP Else P = H Endif If $H > P Then $hVBar.MaxValue = $H - P $hVBar.PageStep = P '$hVBar.Visible = bVBarAllowed bVBarVisible = bVBarAllowed Else '$hVBar.Hide '$hVBar.MinValue = 0 $hVBar.MaxValue = 0 bVBarVisible = False Endif Endif 'If $hHBar.Visible Then H -= SB + SP 'If $hVBar.Visible Then W -= SB + SP If bHBarVisible Then H -= SB + SP If bVBarVisible Then W -= SB + SP 'W += FW * 2 'H += FW * 2 If W <> OW Or If H <> OH Then OW = W OH = H Goto RETRY Endif 'Debug W;; H;; "/";; Me.W;; Me.H;; ":";; SB;; SP If W < 1 Or If H < 1 Then $hDrawingArea.Hide Else If $bVBarVisible And If System.RightToLeft Then $hDrawingArea.Move(SP + SB + X, Y, W, H) Else $hDrawingArea.Move(X, Y, W, H) Endif $hDrawingArea.Show Endif If bHBarVisible <> $bHBarVisible Or If bVBarVisible <> $bVBarVisible Then Raise Resize If $W <> OWC Or If $H <> OHC Then Goto RETRY $bHBarVisible = bHBarVisible $bVBarVisible = bVBarVisible UpdateScrollbarVisibility If $bHBarVisible Then If System.RightToLeft Then $hHBar.Move(X + Me.W - W, Y + H + SP, W, SB) Else $hHBar.Move(X, Y + H + SP, W, SB) Endif Endif If $bVBarVisible Then If System.RightToLeft Then $hVBar.Move(X, Y, SB, H) Else $hVBar.Move(X + W + SP, Y, SB, H) Endif Endif If $bHBarVisible And If $bVBarVisible Then $hCorner.Move($hVBar.X, $hHBar.Y, SB, SB) $hCorner.Show Else $hCorner.Hide Endif $bNoArrange = False LayoutShadows End Private Sub LayoutShadows() Dim hSave As Container Dim bShadow As Boolean If Not $bNoShadow Then bShadow = $bShadow Or Application.Shadows If Not bShadow Then If $hShadowN Then Try $hShadowN.Delete $hShadowN = Null Try $hShadowS.Delete $hShadowS = Null Try $hShadowW.Delete $hShadowW = Null Try $hShadowE.Delete $hShadowE = Null Endif Return Endif If Not $hShadowN Then hSave = Me._Container Me._Container = Null Inc $N $hShadowN = New DrawingArea(Me) As "Shadow" $hShadowN.Ignore = True $hShadowS = New DrawingArea(Me) As "Shadow" $hShadowS.Ignore = True $hShadowW = New DrawingArea(Me) As "Shadow" $hShadowW.Ignore = True $hShadowE = New DrawingArea(Me) As "Shadow" $hShadowE.Ignore = True Me._Container = hSave Endif 'If $bVBarVisible Then LoadFades() $hShadowN.Move($hDrawingArea.X + $iShadowW, $hDrawingArea.Y + $iShadowN, Me.ClientW - $iShadowE - $iShadowW, $hFadeN.H) $hShadowN.Raise $hShadowS.Move($hDrawingArea.X + $iShadowW, $hDrawingArea.Y + Me.ClientH - $iShadowS - $hFadeS.H, Me.ClientW - $iShadowE - $iShadowW, $hFadeS.H) $hShadowS.Raise 'Paint.Rectangle(hClip.X + $iShadowW, hClip.Y + $iShadowN, hClip.W - $iShadowW - $iShadowE, hClip.H - $iShadowN - $iShadowS) 'Paint.Clip() $hShadowN.Visible = $iScrollY > $hVBar.MinValue 'Then Draw.Tile($hFadeN, 0, $iShadowN - Max(0, $hFadeN.H - ($iScrollY - $hVBar.MinValue)), DW, $hFadeN.H) $hShadowS.Visible = $iScrollY < $hVBar.MaxValue 'Then Draw.Tile($hFadeS, 0, DH - $hFadeS.H - $iShadowS + Max(0, $hFadeS.H - ($hVBar.MaxValue - $iScrollY)), DW, $hFadeS.H) 'Else ' $hShadowN.Hide ' $hShadowS.Hide 'Endif 'If $bHBarVisible Then LoadFades() $hShadowW.Move($hDrawingArea.X + $iShadowW, $hDrawingArea.Y + $iShadowN, $hFadeW.W, Me.ClientH - $iShadowS - $iShadowN) $hShadowW.Raise $hShadowE.Move($hDrawingArea.X + Me.ClientW - $iShadowE - $hFadeE.W, $hDrawingArea.Y + $iShadowN, $hFadeE.W, Me.ClientH - $iShadowS - $iShadowN) $hShadowE.Raise 'Paint.Rectangle(hClip.X + $iShadowW, hClip.Y + $iShadowN, hClip.W - $iShadowW - $iShadowE, hClip.H - $iShadowN - $iShadowS) 'Paint.Clip() If System.RightToLeft Then $hShadowE.Visible = $iScrollX > $hHBar.MinValue 'Then Draw.Tile($hFadeN, 0, $iShadowN - Max(0, $hFadeN.H - ($iScrollY - $hVBar.MinValue)), DW, $hFadeN.H) $hShadowW.Visible = $iScrollX < $hHBar.MaxValue 'Then Draw.Tile($hFadeS, 0, DH - $hFadeS.H - $iShadowS + Max(0, $hFadeS.H - ($hVBar.MaxValue - $iScrollY)), DW, $hFadeS.H) Else $hShadowW.Visible = $iScrollX > $hHBar.MinValue 'Then Draw.Tile($hFadeN, 0, $iShadowN - Max(0, $hFadeN.H - ($iScrollY - $hVBar.MinValue)), DW, $hFadeN.H) $hShadowE.Visible = $iScrollX < $hHBar.MaxValue 'Then Draw.Tile($hFadeS, 0, DH - $hFadeS.H - $iShadowS + Max(0, $hFadeS.H - ($hVBar.MaxValue - $iScrollY)), DW, $hFadeS.H) Endif 'Else ' $hShadowW.Hide ' $hShadowE.Hide 'Endif ' If $bHBarVisible Then ' LoadFades() ' Paint.Rectangle(hClip.X + $iShadowW, hClip.Y + $iShadowN, hClip.W - $iShadowW - $iShadowE, hClip.H - $iShadowN - $iShadowS) ' Paint.Clip() ' bWestShadow = $iScrollX > $hHBar.MinValue ' bEastShadow = $iScrollX < $hHBar.MaxValue ' iWestWidth = $iScrollX - $hHBar.MinValue ' iEastWidth = $hHBar.MaxValue - $iScrollX ' If System.RightToLeft Then ' Swap bWestShadow, bEastShadow ' Swap iWestWidth, iEastWidth ' Endif ' If bWestShadow Then Draw.Tile($hFadeW, $iShadowW - Max(0, $hFadeW.W - iWestWidth), 0, $hFadeW.W, DH) ' If bEastShadow Then Draw.Tile($hFadeE, DW - $hFadeE.W - $iShadowE + Max(0, $hFadeE.W - iEastWidth), 0, $hFadeE.W, DH) ' Endif End Public Sub Shadow_Draw() Select Case Last Case $hShadowN Draw.Tile($hFadeN, 0, 0, Paint.W, Paint.H) Case $hShadowS Draw.Tile($hFadeS, 0, 0, Paint.W, Paint.H) Case $hShadowW Draw.Tile($hFadeW, 0, 0, Paint.W, Paint.H) Case $hShadowE Draw.Tile($hFadeE, 0, 0, Paint.W, Paint.H) End Select End Public Sub TimerArrange_Timer() LayoutScrollbars $hTimerArrange = Null End Public Sub ScrollArea_Arrange() LayoutScrollbars If $hBorder Then $hBorder.Move(0, 0, Me.W, Me.H) '' GTK+ does not like if Lower() is called during the Arrange event! ' $hBorder.Lower Endif ' If Not $hTimerArrange Then ' $hTimerArrange = New Timer As "TimerArrange" ' $hTimerArrange.Trigger ' Endif End ' Public Sub ScrollArea_Enter() ' ' UpdateScrollbarVisibility ' ' End ' ' Public Sub ScrollArea_Leave() ' ' UpdateScrollbarVisibility ' ' End Public Sub ResizeContents(Width As Integer, Height As Integer) If $W = Width And If $H = Height Then Return $bIgnoreNextAnimation = True $W = Width $H = Height 'Debug $W;; $H;; System.Backtrace.Join(" ") LayoutScrollbars $hDrawingArea.Refresh End Private Function ScrollX_Read() As Integer If System.RightToLeft Then Return $hHBar.MaxValue - $iScrollX Else Return $iScrollX Endif End Private Sub ScrollX_Write(Value As Integer) If Application.Animations And If Not $bNoAnimation Then Scroll(Value, $iTargetY) Else Scroll(Value, $iScrollY) Endif End Private Function ScrollY_Read() As Integer Return $iScrollY End Private Sub ScrollY_Write(Value As Integer) If Application.Animations And If Not $bNoAnimation Then Scroll($iTargetX, Value) Else Scroll($iScrollX, Value) Endif End Public Sub Scroll(X As Integer, Y As Integer) As Boolean If System.RightToLeft Then X = $hHBar.MaxValue - X X = Max($hHBar.MinValue, Min($hHBar.MaxValue, X)) Y = Max($hVBar.MinValue, Min($hVBar.MaxValue, Y)) 'If $iTargetX = X And If $iTargetY = Y Then Return If X = $hHBar.Value And If Y = $hVBar.Value Then Return True $hHBar.Value = X $hVBar.Value = Y End Private Sub UpdateScroll(DX As Integer, DY As Integer) Dim hChild As Control $iScrollX += DX $iScrollY += DY For Each hChild In $hDrawingArea.Children hChild.Move(hChild.X - DX, hChild.Y - DY) Next LayoutShadows $hDrawingArea.Refresh Raise Scroll End Public Sub Scrollbar_Change() $iTargetX = $hHBar.Value $iTargetY = $hVBar.Value If $iTargetX <> $iScrollX Or If $iTargetY <> $iScrollY Then If Application.Animations And If Not $bIgnoreNextAnimation And If Not $bNoAnimation Then If Not $hTimerScroll Then $hTimerScroll = New Timer As "TimerScroll" $hTimerScroll.Delay = 20 Endif $hTimerScroll.Start Else UpdateScroll($iTargetX - $iScrollX, $iTargetY - $iScrollY) Endif Endif End Public Sub TimerScroll_Timer() UpdateScroll(($iTargetX - $iScrollX + Sgn($iTargetX - $iScrollX)) \ 2, ($iTargetY - $iScrollY + Sgn($iTargetY - $iScrollY)) \ 2) If $iScrollX = $iTargetX And If $iScrollY = $iTargetY Then $hTimerScroll.Stop End Public Sub DrawingArea_Draw() Dim DW As Integer Dim DH As Integer Dim FW As Integer Dim hClip As Rect Dim hFrame As Rect DW = Draw.W 'If $bVBarVisible Then DW -= $hVBar.W 'If System.RightToLeft Then DX = $hVBar.W + Style.ScrollbarSpacing DH = Draw.H 'If $bHBarVisible Then DH -= $hHBar.H If $iBackground <> Color.Default Then Paint.FillRect(FW, FW, DW - FW * 2, DH - FW * 2, $iBackground) Endif 'Debug Draw.Clip.X;; Draw.Clip.Y;; Draw.Clip.W;; Draw.Clip.H 'hClip = New Rect(Draw.Clip.X, Draw.Clip.Y, Draw.Clip.W, Draw.Clip.H) hClip = Draw.ClipRect If FW Then hFrame = New Rect(FW, FW, DW - FW * 2, DH - FW * 2) If hClip Then hClip = hClip.Intersection(hFrame) If hClip Then Paint.Rectangle(hClip.X, hClip.Y, hClip.W, hClip.H) Paint.Clip() Endif Endif Endif If hClip Then 'Draw.ClipRect = hClip '(hClip.X, hClip.Y, hClip.W, hClip.H) 'If $bShadow Then Paint.Save Raise Draw Endif $bIgnoreNextAnimation = False End Public Sub DrawingArea_Enter() $hDrawingArea.Refresh End Public Sub DrawingArea_Leave() $hDrawingArea.Refresh End Public Sub DrawingArea_Arrange() Raise Resize End Private Function Border_Read() As Boolean Return $hBorder End Private Sub Border_Write(Value As Boolean) Dim hSave As Container If Border_Read() = Value Then Return If Value Then hSave = Me._Container Me._Container = Null $hBorder = New DrawingArea(Me) As "Border" $hBorder.Lower '' GTK+ does not like if Lower() is called during the Arrange event! Me._Container = hSave Else $hBorder.Delete $hBorder = Null Endif ScrollArea_Arrange End Private Function Focus_Read() As Boolean Return $hDrawingArea.Focus End Private Sub Focus_Write(Value As Boolean) $hDrawingArea.Focus = Value End Private Function Painted_Read() As Boolean Error "gb.gui: ScrollArea.Painted is deprecated. Do not use it anymore" Return True End Private Sub Painted_Write((Value) As Boolean) Painted_Read() End Private Function NoBackground_Read() As Boolean Return $hDrawingArea.NoBackground End Private Sub NoBackground_Write(Value As Boolean) $hDrawingArea.NoBackground = Value End Private Function Scrollbar_Read() As Integer Return $iScroll End Private Sub Scrollbar_Write(Value As Integer) If $iScroll < Scroll.None Or If $iScroll > Scroll.Both Then Return $iScroll = Value ScrollArea_Arrange End Private Function ScrollWidth_Read() As Integer Return $W End Private Function ScrollHeight_Read() As Integer Return $H End Private Function Tracking_Read() As Boolean Return $hDrawingArea.Tracking End Private Sub Tracking_Write(Value As Boolean) $hDrawingArea.Tracking = Value Super.Tracking = Value End Public Sub DrawingArea_MouseWheel() If Not Me.Enabled Or If Me.Design Then Return If Not $bUseMouse Then Return If Mouse.Orientation = Mouse.Horizontal Or If $H <= $hDrawingArea.H Then Scroll($iScrollX - Mouse.Delta * $hHBar.PageStep / 4, $iScrollY) Else Scroll($iScrollX, $iScrollY - Mouse.Delta * $hVBar.PageStep / 4) Endif End Private Sub GetActualScroll(ByRef SX As Integer, ByRef SY As Integer) If Application.Animations And If Not $bNoAnimation Then SX = $iScrollX SY = $iScrollY Else SX = Me.ScrollX SY = Me.ScrollY Endif End Public Sub EnsureVisible(X As Integer, Y As Integer, W As Integer, H As Integer) As Boolean Dim PW, PH, CX, CY, CW, CH As Integer Dim XX, YY, WW, HH As Float ' If $bBorder Then ' F = 1 'Style.FrameWidth ' X -= F ' Y -= F ' W += F * 2 ' H += F * 2 ' Endif 'Debug Me;; X;; Y;; W;; H;; "[";; $hDrawingArea.W;; $hDrawingArea.H;; "]";; System.Backtrace.Join(" ") WW = W / 2 HH = H / 2 XX = X + WW YY = Y + HH PW = Me.ClientW '$hDrawingArea.W '- F * 2 PH = Me.ClientH '$hDrawingArea.H '- F * 2 GetActualScroll(ByRef CX, ByRef CY) CX = -CX CY = -CY CW = Me.ScrollWidth CH = Me.ScrollHeight If PW < (WW * 2) Then WW = PW / 2 If PH < (HH * 2) Then HH = PH / 2 If CW <= PW Then WW = 0 CX = 0 Endif If CH <= PH Then HH = 0 CY = 0 Endif If XX < (-CX + WW) Then CX = Ceil(-XX + WW) Else If XX >= (-CX + PW - WW) Then CX = Floor(-XX + PW - WW) Endif If YY < (-CY + HH) Then CY = Ceil(-YY + HH) Else If YY >= (-CY + PH - HH) Then CY = Floor(-YY + PH - HH) Endif If CX > 0 CX = 0 Else If CX < (PW - CW) And If CW > PW Then CX = PW - CW Endif If CY > 0 Then CY = 0 Else If CY < (PH - CH) And If CH > PH Then CY = PH - CH Endif CX = -CX CY = -CY If Application.Animations And If Not $bNoAnimation Then If $iTargetX = CX And If $iTargetY = CY Then Return True Else If $iScrollX = CX And If $iScrollY = CY Then Return True Endif Return Scroll(CX, CY) End Private Function Background_Read() As Integer Return $iBackground End Private Sub Background_Write(Value As Integer) $iBackground = Value $hHBar.Background = Value $hVBar.Background = Value $hCorner.Background = Value Me._OnBackgroundChange() $hDrawingArea.Refresh End Private Function View_Read() As DrawingArea Return $hDrawingArea End Public Sub _SetShadowOffset(North As Integer, South As Integer, West As Integer, East As Integer) $iShadowN = North $iShadowS = South $iShadowW = West $iShadowE = East End Private Function Tablet_Read() As Boolean Return $hDrawingArea.Tablet End Private Sub Tablet_Write(Value As Boolean) $hDrawingArea.Tablet = Value End Private Function Shadow_Read() As Boolean Return $bShadow End Private Sub Shadow_Write(Value As Boolean) If $bShadow = Value Then Return $bShadow = Value LayoutShadows End Public Sub DrawingArea_DragMove() If Not $hTimerAutoScroll Then $hTimerAutoScroll = New Timer As "TimerAutoScroll" $hTimerAutoScroll.Delay = 50 $hTimerAutoScroll.Start Endif $DX = Drag.X $DY = Drag.Y End Public Sub DrawingArea_DragLeave() If $hTimerAutoScroll Then $hTimerAutoScroll.Stop $hTimerAutoScroll = Null Endif End Public Sub _EnsureVisibleScroll(X As Integer, Y As Integer) Dim SX, SY As Integer GetActualScroll(ByRef SX, ByRef SY) If EnsureVisible(SX + X - 16, SY + Y - 16, 32, 32) Then Return Drag.Hide End Public Sub TimerAutoScroll_Timer() Me._EnsureVisibleScroll($DX, $DY) End Private Function ClientWidth_Read() As Integer Return $hDrawingArea.W End Private Function ClientHeight_Read() As Integer Return $hDrawingArea.H End Public Sub ScrollArea_MouseDown() 'Debug Mouse.X;; Mouse.Y;; $hDrawingArea.Hovered If Not $hDrawingArea.Hovered And If Not Me.Design Then Stop Event Return Endif Mouse.Translate(-$hDrawingArea.X, 0) End Public Sub ScrollArea_MouseMove() Mouse.Translate(-$hDrawingArea.X, 0) End Private Function UseMouse_Read() As Boolean Return $bUseMouse End Private Sub UseMouse_Write(Value As Boolean) $bUseMouse = Value End Public Sub DrawingArea_Font() Raise Font End Public Sub RefreshRect(X As Integer, Y As Integer, Width As Integer, Height As Integer) Dim SX, SY As Integer GetActualScroll(ByRef SX, ByRef SY) $hDrawingArea.Refresh(X - SX, Y - SY, Width, Height) End Private Function Foreground_Read() As Integer Return $hCorner.Foreground End Private Sub Foreground_Write(Value As Integer) $hDrawingArea.Foreground = Value $hCorner.Foreground = Value $hHBar.Foreground = Value $hVBar.Foreground = Value End Public Sub Border_Draw() Style.PaintPanel(0, 0, $hBorder.W, $hBorder.H, Border.Plain, Style.StateOf($hDrawingArea)) 'If(Me.HasFocus, Draw.Focus, Draw.Normal)) End Private Function Scrolling_Read() As Boolean If Application.Animations And If Not $bNoAnimation Then If $iTargetX <> $iScrollX Or If $iTargetY <> $iScrollY Then Return True Endif End Public Sub DrawingArea_Change() LayoutShadows End Private Function NoShadow_Read() As Boolean Return $bNoShadow End Private Sub NoShadow_Write(Value As Boolean) If $bNoShadow = Value Then Return $bNoShadow = Value LayoutShadows End gambas-3.16.3/comp/src/gb.gui.base/.src/ScrollView.class000066400000000000000000000055001411575327000226410ustar00rootroot00000000000000' Gambas class file Export Inherits ScrollArea Public Const _Properties As String = "*,Arrangement{Arrange.None;Horizontal;Vertical;Row;Column;Fill},Spacing,Margin,Padding{Range:0;63},Indent" Public Const _DefaultEvent As String = "Draw" Public Const _DefaultSize As String = "24,24" Public Const _Similar As String = "DrawingArea,ScrollView" Static Private $bGTK2 As Boolean Private $hCont As Panel Private $hObs As Observer Private $hTimer As Timer Private $bLock As Boolean Static Public Sub _init() $bGTK2 = Component.IsLoaded("gb.gtk") End Public Sub _OnBackgroundChange() Dim hDrawingArea As DrawingArea If Not $bGTK2 Then Return hDrawingArea = $hCont.Parent hDrawingArea.Background = Style.BackgroundOf(hDrawingArea) End Public Sub _new() $hObs = New Observer(Me.Proxy) As "Observer" $hCont = New Panel(Me) As "Panel" $hCont.Move(0, 0) Me._Container = $hCont $hTimer = New Timer As "AutoResizeContents" $hTimer.Trigger _OnBackgroundChange() End Public Sub Panel_BeforeArrange() AutoResizeContents End Public Sub Panel_Arrange() AutoResizeContents End Public Sub TimerArrange_Timer() AutoResizeContents End Public Sub AutoResizeContents_Timer() Dim W, H As Integer Dim hChild As Control Dim iSaveArr As Integer Dim D As Integer If $bLock Then Return 'If Me.Name = "lstRecent" Then Debug "scroll: "; Me.ScrollW;; Me.ScrollH;; "client: "; Me.ClientW;; Me.ClientH 'System.Backtrace.Join(" ") $bLock = True Do W = 0 H = 0 For Each hChild In $hCont.Children If Not hChild.Visible Then Continue W = Max(W, hChild.X + hChild.W) H = Max(H, hChild.Y + hChild.H) Next If Me.Margin Then D = Me.Padding If D = 0 Then D = Desktop.Scale W += D H += D Endif Select Case Me.Arrangement Case Arrange.Horizontal, Arrange.TopBottom H = Me.ClientH Case Arrange.Vertical, Arrange.LeftRight W = Me.ClientW End Select 'If Me.Name = "lstRecent" Then Debug "W =";; W;; "H =";; H If W = Me.ScrollW And If H = Me.ScrollH Then Break 'If Me.Name = "lstRecent" Then Debug "ResizeContents:";; W;; H Me.ResizeContents(W, H) Loop W = Max(Me.ClientW, W) H = Max(Me.ClientH, H) If $hCont.W <> W Or If $hCont.H <> H Then 'If Me.Name = "svwTheme" Then Debug "Resize cont "; W;; H $hCont.Resize(W, H) iSaveArr = $hCont.Arrangement $hCont.Arrangement = Arrange.None $hCont.Arrangement = iSaveArr Endif $bLock = False End Private Sub AutoResizeContents() $hTimer.Trigger End Public Sub Panel_MouseDown() Me.SetFocus 'Me.DrawingArea_MouseWheel End Public Sub Panel_MouseWheel() Me.SetFocus Me.DrawingArea_MouseWheel End Public Sub Observer_Arrange() AutoResizeContents End gambas-3.16.3/comp/src/gb.gui.base/.src/Separator.class000066400000000000000000000015041411575327000225100ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*" Public Const _DefaultSize As String = "1,3" Public Const _Group As String = "Form" Public Sub UserControl_Draw() Dim iCol As Integer Dim D As Integer If Me.Foreground = Color.Default Then iCol = Color.LightForeground Else iCol = Me.Foreground Endif If Paint.W = 1 Or If Paint.H = 1 Then Paint.FillRect(Paint.X, Paint.Y, Paint.W, Paint.H, iCol) Else D = 2 + Desktop.Scale \ 2 If Paint.W > Paint.H Then If Paint.W > D Then Paint.FillRect(Paint.X + D \ 2, Paint.Y + CInt(Paint.H) \ 2, Paint.W - D, 1, iCol) Endif Else If Paint.H > D Then Paint.FillRect(Paint.X + CInt(Paint.W) \ 2, Paint.Y + D \ 2, 1, Paint.H - D, iCol) Endif Endif Endif Catch End gambas-3.16.3/comp/src/gb.gui.base/.src/Shortcut.class000066400000000000000000000027361411575327000223730ustar00rootroot00000000000000' Gambas class file Export Static Private $cNameFromKey As Collection Static Public Sub _call(Text As String, Shortcut As String, Optional AddIfMissing As Boolean) As String Dim iPos As Integer ' iPos = String.InStr(Text, "&") ' If iPos Then ' Shortcut = String.Mid$(Text, iPos + 1, 1) ' Text = String.Left(Text, iPos - 1) & String.Mid$(Text, iPos + 1) ' Endif If Not Shortcut Then Return Text iPos = InStr(Text, Shortcut, 1, gb.IgnoreCase) If iPos = 0 Then If AddIfMissing Then Text &= " (&" & String.UCase(Shortcut) & ")" Return Text Else Return Left(Text, iPos - 1) & "&" & Mid$(Text, iPos) Endif End Static Public Sub FromKey() As String Dim sShortcut As String Dim sSymbol As String Dim hClass As Class Dim sName As String If Key.Control And If Key.Code <> Key.ControlKey Then sShortcut &= "Ctrl+" If Key.Shift And If Key.Code <> Key.ShiftKey Then sShortcut &= "Shift+" If Key.Alt And If Key.Code <> Key.AltKey Then sShortcut &= "Alt+" If Key.Meta And If Key.Code <> Key.MetaKey Then sShortcut &= "Meta+" If Not $cNameFromKey Then $cNameFromKey = New Collection hClass = Classes["Key"] For Each sSymbol In hClass.Symbols With hClass[sSymbol] If .Kind = Class.Constant Then $cNameFromKey[.Value] = .Name End With Next Endif sName = $cNameFromKey[Key.Code] If sName Then Return sShortcut & sName Else Return sShortcut & String.Chr(Key.Code) Endif End gambas-3.16.3/comp/src/gb.gui.base/.src/SpinBox.class000066400000000000000000000242111411575327000221320ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Action,MinValue=0,MaxValue=100,Step=1,Wrap,Value,Alignment{Align.Normal;Left;Center;Right}=Normal,ReadOnly,Border=True,ShowZero,ShowSign" Public Const _Group As String = "Form" Public Const _DefaultEvent As String = "Change" Public Const _DefaultSize As String = "9,4" Public Const _Similar As String = "TextBox,Slider" Event Change Event Limit Property MinValue As Integer Property MaxValue As Integer Property Value As Integer Property Border As Boolean Property Wrap As Boolean Property Step As Integer Property Text As String Property Background As Integer Property Alignment As Integer Property ShowZero As Boolean Property ShowSign As Boolean Property ReadOnly As Boolean Private Enum ARROW_NONE, ARROW_TOP, ARROW_BOTTOM Private $hView As DrawingArea Private $hTextBox As TextBox Private $iValue As Integer Private $iMin As Integer Private $iMax As Integer = 100 Private $iInsideArrow As Integer Private $hTimer As Timer Private $bTimerAdd As Boolean Private $bBorder As Boolean = True Private $bWrap As Boolean Private $iStep As Integer = 1 Private $bShowZero As Boolean Private $iBg As Integer = Color.Default Private $bShowSign As Boolean Public Sub _new() $hView = New DrawingArea(Me) As "View" $hTextBox = New TextBox($hView) As "TextBox" $hTextBox.Border = False $hTextBox.Text = "0" $hTextBox.Background = Color.TextBackground Me.Proxy = $hTextBox End Private Sub GetArrowRect(iArrow As Integer, Optional bForDrawing As Boolean) As Rect Dim W As Integer Dim H As Integer Dim D As Integer Dim hRect As Rect Dim BW, BH As Integer If $bBorder Then BW = Style.BoxFrameWidth Endif BH = Style.BoxFrameHeight D = Desktop.Scale W = D * 2 + BW H = Me.H \ 2 - BH If iArrow = ARROW_TOP Then hRect = Rect(Me.W - W, BH, W, H) Else hRect = Rect(Me.W - W, Me.H - H - BH, W, H) Endif If bForDrawing Then hRect = Rect(hRect.Center().X - D / 2, hRect.Center().Y - D \ 2, D, D) Return hRect End Public Sub View_Arrange() Dim W, H As Integer Dim BW, BH As Integer If $bBorder Then BW = Style.BoxFrameWidth BH = Min(3, Style.BoxFrameHeight) Endif 'Debug Style.BoxFrameWidth;; Style.BoxFrameHeight W = Me.W - BW * 2 - Desktop.Scale * 2 H = Me.H - BH * 2 If W < 1 Or If H < 1 Then $hTextBox.Hide Else $hTextBox.Move(BW, BH, W, H) $hTextBox.Show Endif End Public Sub View_Draw() Dim iState As Integer Dim hRect As Rect Dim iCol As Integer iCol = $hTextBox.Background If iCol = Color.Default Then If $hTextBox.ReadOnly Then iCol = Color.Background Else iCol = Color.TextBackground Endif Endif If $bBorder Then iState = Style.StateOf($hView) If $hTextBox.HasFocus Then iState = iState Or Style.HasFocus If $hView.Hovered Then iState = iState Or Style.Hovered Style.PaintBox(0, 0, Paint.W, Paint.H, iState, iCol) Else Paint.FillRect(0, 0, Paint.W, Paint.H, iCol) Endif If $hTextBox.ReadOnly Then Return hRect = GetArrowRect(ARROW_TOP, True) If $iValue = $iMax Or If $hTextBox.ReadOnly Then iState = Style.Disabled Else If $iInsideArrow = ARROW_TOP iState = Style.Hovered Else iState = Style.Normal Endif Style.PaintArrow(hRect.X, hRect.Y, hRect.W, hRect.H, Align.Top, iState) hRect = GetArrowRect(ARROW_BOTTOM, True) If $iValue = $iMin Or If $hTextBox.ReadOnly Then iState = Style.Disabled Else If $iInsideArrow = ARROW_BOTTOM iState = Style.Hovered Else iState = Style.Normal Endif Style.PaintArrow(hRect.X, hRect.Y, hRect.W, hRect.H, Align.Bottom, iState) End Private Sub ChangeValue(bAdd As Boolean, Optional bFocus As Boolean) Dim iValue As Integer If $hTextBox.ReadOnly Then Return iValue = $iValue SetValue($iValue + $iStep * If(bAdd, 1, -1), bFocus) If $iValue = iValue Then Raise Limit End Public Sub View_MouseWheel() If Object.CanRaise(Me, "MouseWheel") Then Return If $hTextBox.ReadOnly Then Return CheckValue ChangeValue(Mouse.Delta > 0, True) Stop Event End Public Sub TextBox_MouseWheel() View_MouseWheel End Public Sub TextBox_Activate() CheckValue End Private Sub SetValue(iValue As Integer, Optional bFocus As Boolean) Dim sValue As String Dim nZero As Integer If iValue < $iMin Then iValue = If($bWrap, $iMax, $iMin) Else If iValue > $iMax Then iValue = If($bWrap, $iMin, $iMax) Endif sValue = CStr(iValue) If $bShowZero Then nZero = Max(Len(CStr($iMin)), Len(CStr($iMax))) If nZero > Len(sValue) Then sValue = String$(nZero - Len(sValue), "0") & sValue Endif If $bShowSign And If iValue > 0 Then sValue = "+" & sValue If $hTextBox.Text <> sValue Then $hTextBox.Text = sValue If $iValue <> iValue Then $iValue = iValue Raise Change Endif $hView.Refresh If bFocus Then $hTextBox.SetFocus $hTextBox.SelectAll Endif End Private Function MinValue_Read() As Integer Return $iMin End Private Sub MinValue_Write(Value As Integer) If $iMin = Value Then Return $iMin = Value $iMax = Max($iMax, Value) SetValue($iValue) End Private Function MaxValue_Read() As Integer Return $iMax End Private Sub MaxValue_Write(Value As Integer) If $iMax = Value Then Return $iMax = Value $iMin = Min($iMin, Value) SetValue($iValue) End Public Sub View_Enter() $hView.Tracking = True $hView.Refresh End Public Sub View_Leave() $iInsideArrow = ARROW_NONE $hView.Tracking = False $hView.Refresh End Public Sub TextBox_GotFocus() 'Debug $hView.Refresh End Public Sub TextBox_LostFocus() 'Debug If Not $hTextBox.ReadOnly Then CheckValue SetValue($iValue) Endif $hView.Refresh End Public Sub View_MouseMove() Dim iInsideArrow As Integer If GetArrowRect(ARROW_TOP).Contains(Mouse.X, Mouse.Y) Then iInsideArrow = ARROW_TOP Else If GetArrowRect(ARROW_BOTTOM).Contains(Mouse.X, Mouse.Y) Then iInsideArrow = ARROW_BOTTOM Else iInsideArrow = ARROW_NONE Endif If iInsideArrow <> $iInsideArrow Then 'Debug $iInsideArrow = iInsideArrow $hView.Refresh Endif End Public Sub View_MouseDown() Dim bCancel As Boolean bCancel = Raise MouseDown If bCancel Then Stop Event Return Endif If $hTextBox.ReadOnly Then Return If $iInsideArrow = ARROW_TOP Then $bTimerAdd = True Else If $iInsideArrow = ARROW_BOTTOM Then $bTimerAdd = False Else Return Endif $hTimer = New Timer(500) As "TimerMouse" $hTimer.Start CheckValue ChangeValue($bTimerAdd, True) End Public Sub View_MouseUp() Dim bCancel As Boolean bCancel = Raise MouseUp If $hTimer Then $hTimer.Stop $hTimer = Null Endif If bCancel Then Stop Event End Public Sub TimerMouse_Timer() ChangeValue($bTimerAdd, True) If $hTimer And If $hTimer.Delay > 50 Then $hTimer.Delay = 50 $hTimer.Restart Endif End Private Function Value_Read() As Integer If $hTextBox.HasFocus Then CheckValue Return $iValue End Private Sub Value_Write(Value As Integer) SetValue(Value) End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) If $bBorder = Value Then Return $bBorder = Value View_Arrange $hView.Refresh End Public Sub TextBox_KeyPress() If Key.Code = Key.BackSpace Or If Key.Code = Key.Delete Then Return If $hTextBox.ReadOnly Then Return If Key.Code = Key.Up Then If Not CheckValue() Then ChangeValue(True, True) Else $hTextBox.SelectAll Endif Stop Event Else If Key.Code = Key.Down Then If Not CheckValue() Then ChangeValue(False, True) Else $hTextBox.SelectAll Endif Stop Event Else If Key.Code = Key.End And If Key.Control Then SetValue($iMin, True) Stop Event Else If Key.Code = Key.Home And If Key.Control Then SetValue($iMax, True) Stop Event Else If Key.Text Then If IsDigit(Key.Text) Then Else If Key.Text = "-" Then If $iMin >= 0 Then Stop Event Else If Len(Key.Text) >= 2 Or If Asc(Key.Text) >= 32 Then Stop Event Endif Endif End Private Sub CheckValue() As Boolean Dim iValue As Integer Try iValue = CInt($hTextBox.Text) If Error Then Return If iValue < $iMin Then SetValue($iMin) Return True Else If iValue > $iMax Then SetValue($iMax) Return True Else SetValue(iValue) Endif End Public Sub TextBox_Change() If Not $hTextBox.HasFocus Then CheckValue End Private Function Wrap_Read() As Boolean Return $bWrap End Private Sub Wrap_Write(Value As Boolean) $bWrap = Value End Private Function Step_Read() As Integer Return $iStep End Private Sub Step_Write(Value As Integer) If Value < 1 Then Error.Raise("Bad argument") $iStep = Value End Private Function Text_Read() As String Return CStr(Value_Read()) End Private Sub Text_Write(Value As String) $hTextBox.Text = Value End Public Sub SelectAll() $hTextBox.SelectAll End Private Function Background_Read() As Integer Return $iBg End Private Sub UpdateTextBoxBackground() Dim iCol As Integer iCol = $iBg If iCol = Color.Default Then If $hTextBox.ReadOnly Then iCol = Color.Background Else iCol = Color.TextBackground Endif Endif $hTextBox.Background = iCol End Private Sub Background_Write(Value As Integer) $iBg = Value UpdateTextBoxBackground End Private Function Alignment_Read() As Integer Return $hTextBox.Alignment End Private Sub Alignment_Write(Value As Integer) $hTextBox.Alignment = Value End Private Function ShowZero_Read() As Boolean Return $bShowZero End Private Sub ShowZero_Write(Value As Boolean) $bShowZero = Value SetValue($iValue) End Private Function ReadOnly_Read() As Boolean Return $hTextBox.ReadOnly End Private Sub ReadOnly_Write(Value As Boolean) If $hTextBox.ReadOnly = Value Then Return $hTextBox.ReadOnly = Value UpdateTextBoxBackground $hView.Refresh End Private Function ShowSign_Read() As Boolean Return $bShowSign End Private Sub ShowSign_Write(Value As Boolean) $bShowSign = Value SetValue($iValue) End gambas-3.16.3/comp/src/gb.gui.base/.src/Split/000077500000000000000000000000001411575327000206145ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/Split/HSplit.class000066400000000000000000000002541411575327000230470ustar00rootroot00000000000000' Gambas class file Export Inherits Splitter Public Const _Properties As String = "*,-Arrangement" Public Const _Group As String = "Deprecated" Public Sub _new() End gambas-3.16.3/comp/src/gb.gui.base/.src/Split/Splitter.class000066400000000000000000000241301411575327000234510ustar00rootroot00000000000000' Gambas class file Export Inherits UserContainer Public Const _Properties As String = "*,-Margin,-Padding,-AutoResize,-Indent,Border=True,Arrangement{Arrange.Horizontal;Vertical}=Horizontal" Public Const _DefaultEvent As String = "Resize" Public Const _Similar As String = "Panel" Property Layout, Settings As Integer[] Property Border As Boolean '' @{since 3.11} '' '' Return or set the minimum size of a pane. Property MinSize As Integer Property Arrangement As Integer Event Resize Private $hObs As Observer Private $hObsPanel As Observer Private $cWeight As New Collection Private $bLayouting As Boolean Private $hPanel As Panel Private $aResize As New DrawingArea[] Private $XMin As Integer Private $XMax As Integer Private $iNoArrange As Integer Private $bVertical As Boolean Private $bBorder As Boolean = True Private $iMinSize As Integer = Desktop.Scale * 2 Public Sub _new() $bVertical = Me Is VSplit $hPanel = New Panel(Me) '$hPanel.Border = Border.Plain Me._Container = $hPanel $hObs = New Observer(Me) As "Container" $hObsPanel = New Observer($hPanel) As "Container" End Private Sub GetChildren(Optional bHidden As Boolean) As Control[] Dim aControl As New Control[] Dim hChild As Control For Each hChild In $hPanel.Children If Not bHidden And If Not hChild.Visible Then Continue aControl.Add(hChild) Next Return aControl End ' Private Sub GetTotalWeight() As Integer ' ' Dim hChild As Control ' Dim iWeight As Integer ' ' For Each hChild In GetChildren() ' Try iWeight += $cWeight[Object.Address(hChild)] ' Next ' ' Return iWeight ' ' End Private Sub UpdateMouse() Dim hResize As DrawingArea Dim iMouse As Integer iMouse = If($bVertical, Mouse.SplitV, Mouse.SplitH) For Each hResize In $aResize hResize.Mouse = iMouse Next End Public Sub Container_Arrange() Dim cNewWeight As Collection Dim hChild As Control Dim fWeight As Float Dim fNewWeight As Float Dim fTotalWeight As Float Dim I As Integer Dim aAllChildren As Control[] Dim aChildren As Control[] If $iNoArrange Or If $bLayouting Then Return Inc $iNoArrange 'Debug Me.W;; Me.H $hPanel.Move(0, 0, Me.W, Me.H) aChildren = GetChildren() aAllChildren = GetChildren(True) If aChildren.Count = 0 Then For I = 0 To $aResize.Max $aResize[I].Delete Next $aResize.Clear $cWeight.Clear Else 'If $cWeight.Count <> aChildren.Count Then fNewWeight = 1 / aChildren.Count cNewWeight = New Collection For Each hChild In aAllChildren Try fWeight = $cWeight[Object.Address(hChild)] If Error Then fWeight = fNewWeight cNewWeight[Object.Address(hChild)] = fWeight If hChild.Visible Then fTotalWeight += fWeight Next ' If fTotalWeight <> 1 Then ' For Each hChild In aChildren ' cNewWeight[Object.Address(hChild)] /= fTotalWeight ' Next ' Endif ' $cWeight = cNewWeight 'Endif If $aResize.Count > (aChildren.Count - 1) Then For I = aChildren.Count - 1 To $aResize.Max $aResize[I].Delete Next $aResize.Resize(aChildren.Count - 1) Else If $aResize.Count < (aChildren.Count - 1) Then $aResize.Resize(aChildren.Count - 1) Me._Container = Null For I = aChildren.Count - 2 DownTo 0 If $aResize[I] Then Break $aResize[I] = New DrawingArea(Me) As "Resize" With $aResize[I] .NoBackground = True .Raise .Tag = I End With Next Me._Container = $hPanel Endif UpdateMouse Endif DoLayout Dec $iNoArrange End Private Sub GetSepWidth() As Integer Return If(Me.Spacing, Desktop.Scale, 1) End Private Function Layout_Read() As Integer[] Dim aLayout As New Integer[] Dim WTotal As Integer = If($bVertical, Me.H, Me.W) Dim hChild As Control Dim W As Integer Dim SW As Integer = GetSepWidth() 'For Each fWeight In $cWeight ' fTotal += fWeight 'Next For Each hChild In $hPanel.Children If Not hChild.Visible Then aLayout.Add(0) Else 'Try fWeight = $cWeight[Object.Address(hChild)] 'If Error Then If $bVertical Then W = hChild.H If (hChild.Y + W) < WTotal Then W += SW Else W = hChild.W If (hChild.X + W) < WTotal Then W += SW Endif aLayout.Add(W) 'Else ' aLayout.Add(Max(1, CInt(WTotal * fWeight / fTotal + 0.5))) 'Endif Endif Next 'Debug String[](aLayout).Join(",");; "("; WTotal; ")" Return aLayout End Private Sub DoLayout() Dim I, W, WMax, WTotal As Integer Dim hChild As Control Dim X As Integer Dim aChildren As Control[] Dim fTotalWeight As Float Dim SW As Integer If $bLayouting Then Return SW = GetSepWidth() $bLayouting = True For Each hChild In GetChildren() Try fTotalWeight += $cWeight[Object.Address(hChild)] Next aChildren = GetChildren(True) WMax = If($bVertical, Me.H, Me.W) For I = 0 To aChildren.Max hChild = aChildren[I] If Not hChild.Visible Then Continue W = Max($iMinSize, CInt($cWeight[Object.Address(hChild)] * WMax / fTotalWeight + 0.5)) WTotal += W If $bVertical Then aChildren[I].Height = W - SW Else aChildren[I].Width = W - SW Endif Next aChildren = GetChildren() If aChildren.Count Then If $bVertical Then For Each hChild In aChildren hChild.Move(0, X, Me.W, hChild.H) X += hChild.H + SW Next hChild.Height = WMax - hChild.Y For I = 0 To $aResize.Max hChild = aChildren[I + 1] If Not hChild.Visible Then Continue $aResize[I].Move(0, hChild.Y - Desktop.Scale \ 2 - SW \ 2, Me.W, Desktop.Scale) Next Else If System.RightToLeft Then X = WMax For Each hChild In aChildren X -= hChild.W hChild.Move(X, 0, hChild.W, Me.H) X -= SW Next hChild.Width += hChild.X hChild.X = 0 For I = 0 To $aResize.Max hChild = aChildren[I] $aResize[I].Move(hChild.X - Desktop.Scale \ 2 - SW \ 2, 0, Desktop.Scale, Me.H) Next Else For Each hChild In aChildren hChild.Move(X, 0, hChild.W, Me.H) X += hChild.W + SW Next hChild.Width = WMax - hChild.X For I = 0 To $aResize.Max hChild = aChildren[I + 1] $aResize[I].Move(hChild.X - Desktop.Scale \ 2 - SW \ 2, 0, Desktop.Scale, Me.H) Next Endif Endif Endif $bLayouting = False End Private Sub Layout_Write(Value As Integer[]) Dim I As Integer Dim iTotal As Integer Dim hChild As Control 'Debug String[](Value).Join(",") ' Value = Value.Copy() ' iTotal = NormalizeLayout(Value) For I = 0 To Value.Max If Value[I] > 0 Then iTotal += Value[I] Next $cWeight = New Collection For I = 0 To $hPanel.Children.Count - 1 hChild = $hPanel.Children[I] If I <= Value.Max And If Value[I] > 0 Then $cWeight[Object.Address(hChild)] = Value[I] / iTotal hChild.Show Else hChild.Hide Endif Next DoLayout End Public Sub Resize_MouseDown() Dim aChildren As Control[] = GetChildren() Dim I As Integer = Last.Tag Dim SW As Integer = GetSepWidth() If Me.Design Then Return If $bVertical Then $XMin = aChildren[I].ScreenY $XMax = aChildren[I + 1].ScreenY + aChildren[I + 1].H + SW Else If System.RightToLeft Then $XMin = aChildren[I + 1].ScreenX $XMax = aChildren[I].ScreenX + aChildren[I].W + SW Else $XMin = aChildren[I].ScreenX $XMax = aChildren[I + 1].ScreenX + aChildren[I + 1].W + SW Endif Endif End Public Sub Resize_MouseMove() Dim aChildren As Control[] = GetChildren() Dim hResize As DrawingArea = Last Dim I As Integer = hResize.Tag Dim I2 As Integer Dim X As Integer Dim SW As Integer = GetSepWidth() If Me.Design Then Return If Not Mouse.Left Then Return Inc $iNoArrange If $bVertical Then X = Min(Max(Mouse.ScreenY + SW - Mouse.StartY, $XMin + $iMinSize), $XMax - $iMinSize) aChildren[I].H = X - $XMin - SW aChildren[I + 1].Move(0, X - Me.ScreenY, Me.W, $XMax - X - SW) hResize.Move(0, aChildren[I + 1].Y - Desktop.Scale \ 2 - SW \ 2, Me.W, Desktop.Scale) ' For Each hChild In aChildren ' W = hChild.H ' If hChild <> aChildren[aChildren.Max] Then Inc W ' $cWeight[Object.Address(hChild)] = W ' Next Else X = Min(Max(Mouse.ScreenX + SW - Mouse.StartX, $XMin + $iMinSize), $XMax - $iMinSize) If System.RightToLeft Then I2 = I I = I2 + 1 Else I2 = I + 1 Endif aChildren[I].W = X - $XMin - SW aChildren[I2].Move(X - Me.ScreenX, 0, $XMax - X - SW, Me.H) hResize.Move(aChildren[I2].X - Desktop.Scale \ 2 - SW \ 2, 0, Desktop.Scale, Me.H) Endif Dec $iNoArrange Raise Resize End Public Sub Resize_MouseUp() If Me.Design Then Return $cWeight.Clear Layout_Write(Layout_Read()) End Public Sub Resize_Draw() Dim X As Integer If Not $bBorder Then Return X = Desktop.Scale \ 2 - 1 Draw.Foreground = Color.LightForeground If $bVertical Then Draw.Line(0, X, Me.W - 1, X) Else Draw.Line(X, 0, X, Me.H - 1) Endif End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) If $bBorder = Value Then Return $bBorder = Value DoLayout End Private Function MinSize_Read() As Integer Return $iMinSize End Private Sub MinSize_Write(Value As Integer) $iMinSize = Value Layout_Write(Layout_Read()) End Private Function Arrangement_Read() As Integer Return If($bVertical, Arrange.Vertical, Arrange.Horizontal) End Private Sub Arrangement_Write(Value As Integer) Dim bVertical As Boolean = Value = Arrange.Vertical If bVertical = $bVertical Then Return $bVertical = bVertical DoLayout UpdateMouse End gambas-3.16.3/comp/src/gb.gui.base/.src/Split/VSplit.class000066400000000000000000000002541411575327000230650ustar00rootroot00000000000000' Gambas class file Export Inherits Splitter Public Const _Properties As String = "*,-Arrangement" Public Const _Group As String = "Deprecated" Public Sub _new() End gambas-3.16.3/comp/src/gb.gui.base/.src/Spring.class000066400000000000000000000004621411575327000220140ustar00rootroot00000000000000' Gambas class file Export Inherits Panel Public Const _Properties As String = "*,-Margin,-Padding,-Spacing,-Expand,-Invert,-Arrangement,-AutoResize,-Indent,-Border" Public Const _IsContainer As Boolean = False Public Const _DefaultSize As String = "4,4" Public Sub _new() Me.Expand = True End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/000077500000000000000000000000001411575327000204405ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FBorder.class000066400000000000000000000011271411575327000230130ustar00rootroot00000000000000' Gambas class file Private $hBorder As Border Public Sub DrawingArea1_Draw() $hBorder.Paint(0, 0, Paint.W, Paint.H) End Public Sub Form_Open() $hBorder = New Border("margin:8;width:16;left-width:0;right-width:8;top-left-radius:40;slash-style:solid;backslash-style:solid;backslash-color:green;backslash-width:4;slash-color:red;slash-width:16") '$hBorder.SlashStyle = Border.Solid '$hBorder.SlashWidth = 32 '$hBorder.SlashColor = Color.SetAlpha(Color.Red, 128) Slider1.Value = 160 End Public Sub Slider1_Change() $hBorder.Radius = Slider1.Value DrawingArea1.Refresh End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FBorder.form000066400000000000000000000004331411575327000226500ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,69) Arrangement = Arrange.Vertical Margin = True { Slider1 Slider MoveScaled(1,2,60,4) MaxValue = 255 } { DrawingArea1 DrawingArea MoveScaled(3,14,55,41) Background = &HFFFFFF& Expand = True } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FGridView.class000066400000000000000000000110411411575327000233120ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim I As Integer 'Dim hCtrl As GridView 'Dim J As Integer Dim hBorder As Border Dim hBorderLeft As Border Dim hBorderRight As Border Print gvwInfo.W;; gvwInfo.H;; "/";; Me.W;; Me.H hBorderLeft = New Border("margin:4;width:4;right-style:none;right-margin:0;right-width:0;top-left-radius:16;bottom-left-radius:16;color:#80000000") hBorder = New Border("margin:4;width:4;left-margin:0;right-margin:0;left-style:none;right-style:none;left-width:0;right-width:0;") hBorderRight = New Border("margin:4;width:4;left-style:none;left-margin:0;left-width:0;top-right-radius:24;right-color:green") 'gvwinfo.Clear gvwinfo.Columns.Count = 3 gvwinfo.Rows.Count = 10 ' For I = 0 To gvwInfo.Rows.Max ' gvwInfo[I, 0].Border = hBorderLeft ' gvwInfo[I, gvwInfo.Columns.Max].Border = hBorderRight ' For J = 1 To gvwInfo.Columns.Max - 1 ' gvwInfo[I, J].Border = hBorder ' Next ' Next 'gvwInfo[8, 0].Border = hBorderLeft 'gvwInfo.Rows.Border = New Border("margin:4;radius:8;padding:6;width:4.5;style:double") 'gvwinfo.Rows.Resizable = True gvwinfo[0, 0].Text = "Bleu" gvwinfo[0, 0].Alignment = Align.TopLeft gvwinfo[0, 1].Text = "Blanc" gvwinfo[1, 0].Text = "Version" gvwinfo[1, 1].Text = "0.0.7" gvwinfo[2, 0].Text = "Type" gvwinfo[2, 1].Text = "Normal" gvwinfo[3, 0].Text = "Compiler" gvwInfo[3, 0].Picture = Picture.Load("picturebox.png") gvwInfo[3, 0].Border = New Border("style:none;bottom-padding:16") gvwinfo[3, 1].Text = "Gambas 3.3.90" gvwinfo[4, 0].Text = "(IsOld)" gvwinfo[4, 1].Text = False gvwinfo[5, 0].Text = "Full Name" gvwinfo[5, 1].Text = "compsrch.gambas" gvwinfo[6, 0].Text = "Description" gvwinfo[6, 0].Alignment = Align.TopLeft gvwinfo[6, 1].WordWrap = True gvwinfo[6, 1].Text = "This program is a utility to find gambas source projects that use a named component or library. It is intended for internal use only to help resolve which client programs need to be re-issued if the component/library is changed." gvwinfo[6, 1].Alignment = Align.TopLeft gvwinfo[7, 0].Text = "State" gvwinfo[7, 1].Text = "Stable" gvwinfo[8, 0].Text = "Requires" gvwinfo[8, 1].Text = "" gvwinfo[9, 0].Text = "Needs" gvwinfo[9, 1].Text = "" For I = 0 To 9 gvwInfo[I, 2].Text = CStr(Int(Rnd(0, 1000))) Next gvwinfo[0, 2].Text = "Rouge" For I = 0 To 2 gvwInfo.Columns[I].Text = ["Bleu", "Blanc", "Rouge"][I] Next gvwInfo[1, 1].Background = Color.Yellow gvwInfo.Rows[6].Border = New Border With gvwInfo.Rows[6].Border .Style = Border.None End With For I = 2 To 6 gvwInfo.Rows[I].TextAlignment = Align.Right Next ' gvwInfo[6, 1].Background = Color.Yellow ' gvwInfo[6, 1].Border = New Border '.Copy() 'New Border 'hBorderLeft.Copy() ' With gvwInfo[6, 1].Border ' .SlashStyle = Border.Dotted ' .SlashColor = Color.Red ' .SlashWidth = 4 ' .BackSlashStyle = Border.Double + Border.Dashed ' .BackSlashColor = Color.Red ' .BackSlashWidth = 4 ' .Color = Color.Green ' .Margin = 8 ' .Padding = 8 ' End With 'gvwInfo.Columns[1].Alignment = Align.Right ScrollArea(gvwInfo.Proxy).Shadow = True gvwInfo[0, 0].ColumnSpan = gvwInfo.Columns.Count gvwinfo.Columns.Width = -1 gvwInfo.Columns[0].W = 110 gvwinfo.Rows[6].Height = -1 txtPadding.Value = gvwInfo.Padding Me.Height += 2 End Public Sub gvwInfo_ColumnClick(Column As Integer) Debug Column End Public Sub gvwInfo_MouseDrag() Drag(gvwInfo, "25", "text/plain") End Public Sub Label1_Drag() Debug Drag.Formats.Join(",") End Public Sub TextBox1_KeyPress() Debug Key.Code End Public Sub txtPadding_Change() 'Dim C As Integer gvwinfo.Padding = txtPadding.Value ' For C = 0 To gvwInfo.Columns.Max ' gvwInfo.Columns[C].W = -1 ' Next End Public Sub gvwInfo_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Row As Integer, Column As Integer) If Row = 0 And If Column = 0 Then Paint.DrawText("Gambas", X, Y, Width, Height, Align.Center) Endif End Public Sub Button1_Click() Me.Font = Null End Public Sub Button2_Click() gvwInfo.Border = Not gvwInfo.Border End Public Sub Label1_MouseDown() End Public Sub Label1_MouseDrag() Drag(Label1, "text") End Public Sub gvwInfo_Drop() Debug Drag.Paste() End Public Sub gvwInfo_Click() Debug gvwInfo.Row;; gvwInfo.Column End Public Sub Button3_Click() Dim aSel As String[] aSel = gvwInfo.Rows.Selection Debug aSel.Join() End Public Sub gvwInfo_MouseDown() Debug End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FGridView.form000066400000000000000000000021101411575327000231450ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,106,68) Arrangement = Arrange.Vertical Margin = True { HBox1 HBox MoveScaled(6,1,87,4) Spacing = True { txtPadding SpinBox MoveScaled(3,0,8,4) } { Button1 Button MoveScaled(18,0,14,4) } { Button2 Button MoveScaled(34,0,16,4) Text = ("Border") } { Label1 Label MoveScaled(53,0,13,4) AutoResize = True Border = Border.Plain Text = ("Drag me") } { Button3 Button MoveScaled(68,0,16,4) Text = ("Selection") } } { Separator1 Separator MoveScaled(23,7,14,0) } { gvwInfo GridView MoveScaled(8,11,51,31) Foreground = Color.Orange Drop = True Expand = True Border = False Mode = Select.Multiple ShowCursor = True Header = GridView.Both Sorted = True } { TextBox1 TextBox MoveScaled(11,47,24,4) Visible = False Text = ("TextBox1") Border = False } { TextArea1 TextArea MoveScaled(12,54,43,10) Visible = False Text = ("TextArea1") Border = False } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FIconView.class000066400000000000000000000022421411575327000233200ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim sPath As String Dim sDir As String = "~" '/gambas/3.0/trunk" 'Component.Load("gb.form") Component.Load("gb.form.stock") For Each sPath In Dir(sDir).Sort(gb.Language + gb.IgnoreCase) If IsDir(sDir &/ sPath) Then IconView1.Add(sPath, sPath, Picture["icon:/64/directory"]).RichText = "" & sPath & "" Else IconView1.Add(sPath, sPath, Picture["icon:/64/file"]) Endif Next 'IconView1.Picture = Picture["img/colormap.png"] IconView1.SetFocus End Public Sub Button1_Click() ' If IconView1.Font.Size = 6 Then ' IconView1.Font.Size = 16 ' Else ' Dec IconView1.Font.Size ' Endif IconView1.Enabled = Not IconView1.Enabled End Public Sub IconView1_Activate() Debug IconView1.Item.Key End Public Sub IconView1_Click() Debug IconView1.Item.Key End Public Sub IconView1_Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, (Key) As String) If IconView1[Key].Hovered Then Paint.Font.Grade = -2 Paint.DrawText(Format(Stat("~" &/ Key).Size \ 1024, ",0") & "K", X, Y, Width, Height, Align.TopRight) Endif End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FIconView.form000066400000000000000000000010411411575327000231520ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,85,80) Icon = Picture["icon:/medium/color"] Arrangement = Arrange.Vertical Spacing = True Margin = True { Panel1 HBox MoveScaled(3,1,77,4) Spacing = True { Button1 Button MoveScaled(0,0,16,4) #Translate = False Text = "Enabled" } { TextBox1 TextBox MoveScaled(23,0,24,4) } } { IconView1 IconView MoveScaled(3,13,38,31) Expand = True Mode = Select.Multiple Sorted = True Editable = True GridSize = 24 } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FLabel.class000066400000000000000000000001201411575327000226050ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Me.Title = Env["GB_GUI"] End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FLabel.form000066400000000000000000000026151411575327000224560ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,96,110) Font = Font["Times New Roman,+10"] Arrangement = Arrange.Vertical Spacing = True { Label6 Label MoveScaled(6,3,72,9) Background = Color.Cyan Alignment = Align.Left Text = (" This is a Label test line") } { Label4 Label MoveScaled(6,13,72,9) Font = Font["Italic"] Background = Color.Pink Alignment = Align.Left Text = ("This is a Label test line") } { Label5 Label MoveScaled(6,23,72,13) Background = Color.Pink Alignment = Align.Center Text = ("This is a Label test line\nwith another one") } { Label1 Label MoveScaled(6,38,72,9) Font = Font["Italic"] Background = Color.Pink Alignment = Align.Right Text = ("This is a Label test line") } { Label2 TextLabel MoveScaled(1,51,85,6) Background = Color.Pink AutoResize = True Text = ("This is a TextLabel test line") } { Label3 TextLabel MoveScaled(1,59,75,13) Font = Font["Italic"] Background = Color.Pink AutoResize = True Text = ("This is a TextLabel test line") Alignment = Align.Top } { Label7 TextLabel MoveScaled(1,74,58,14) Background = Color.Pink Text = ("This is a TextLabel test line") } { Label8 TextLabel MoveScaled(2,89,58,14) Font = Font["Italic"] Background = Color.Pink Text = ("This is a TextLabel test line") } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FListBox.class000066400000000000000000000007021411575327000231600ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() 'ListBox1.List = Dir("~") ListBox1.Index = 0 End Public Sub Button1_Click() 'ListBox1.Remove(3, 4) ListBox1.Add("item " & CStr(ListBox1.Count + 1)) End Public Sub Button2_Click() ListBox1.Border = Not ListBox1.Border End Public Sub Button3_Click() Try ListBox1.Index = 3 End Public Sub ListBox1_Click() Debug ListBox1.Index End Public Sub Clear_Click() ListBox1.Clear End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FListBox.form000066400000000000000000000007371411575327000230260ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,57,67) { ListBox1 ListBox MoveScaled(3,2,28,60) Foreground = Color.DarkGreen Expand = True List = [("C"), ("a"), ("D"), ("B")] Border = False Sorted = True } { Button1 Button MoveScaled(36,4,16,4) Text = ("Add") } { Button2 Button MoveScaled(35,10,16,4) Text = ("Border") } { Button3 Button MoveScaled(36,17,16,4) } { Clear Button MoveScaled(35,24,16,4) } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FMain.class000066400000000000000000000017411411575327000224640ustar00rootroot00000000000000' Gambas class file Public Sub _new() End Public Sub Form_Open() ' GridView test GridView1.Columns.Count = 3 GridView1.Rows.Count = 1 GridView1.Columns.Width = GridView1.Width GridView1.Rows[0].Height = 52 'GridView1.Rows[0].Height = GridView1.Height GridView1[0, 0].Picture = Picture["pattern/14.png"] GridView1[0, 1].Picture = Picture["pattern/14.png"] GridView1[0, 2].Picture = Picture["pattern/14.png"] '' Good GridView1[0, 0].Alignment = Align.Center GridView1[0, 1].Alignment = Align.Center GridView1[0, 2].Alignment = Align.Center GridView1[0, 0].Alignment = Align.Left GridView1[0, 1].Alignment = Align.Left GridView1[0, 2].Alignment = Align.Left '' No Good ' GridView1[0, 0].Alignment = Align.Right ' GridView1[0, 1].Alignment = Align.Right ' GridView1[0, 2].Alignment = Align.Right ' GridView1[0, 0].Alignment = Align.TopRight ' GridView1[0, 1].Alignment = Align.TopRight ' GridView1[0, 2].Alignment = Align.TopRight End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FMain.form000066400000000000000000000006421411575327000223210ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,92,50) { GridView1 GridView MoveScaled(2,1,33,18) } { Slider1 Slider MoveScaled(7,23,32,25) Background = &HFFFF00& } { Slider2 Slider MoveScaled(43,23,35,25) Background = &HFFFF00& Mark = True } { ProgressBar1 ProgressBar MoveScaled(56,7,28,4) Pulse = True } { Separator1 Separator MoveScaled(82,17,7,27) } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FPaint.class000066400000000000000000000017661411575327000226620ustar00rootroot00000000000000' Gambas class file Public Sub DrawingArea1_Draw() Dim sText As String ' Image.Debug = True ' ' sText = "Bonjour tout le monde ! Gambas rules !" ' ' Paint.Font = Font["Ubuntu,20"] ' ' Paint.Background = Color.Gray ' Paint.DrawRichTextShadow(sText, 16, 16, Paint.W - 32, Paint.H - 32, Align.TopLeft, 2) ' Paint.Background = Color.Black ' Paint.DrawRichText(sText, 16, 16, Paint.W - 32, Paint.H - 32, Align.TopLeft) ' ' Paint.Background = Color.Black ' Paint.DrawRichTextShadow(sText, 17, 17, Paint.W - 32, Paint.H - 32, Align.Center, 2) ' Paint.Background = Color.White ' Paint.DrawRichText(sText, 16, 16, Paint.W - 32, Paint.H - 32, Align.Center) 'Paint.Font.Underline = True sText = "Anti-aliased drawing with the Paint class.\n\nThis example shows the different methods of the Paint class." 'Paint.Font = Font["OxygenSans,9"] sText = Paint.TrimText(sText, Paint.W, 60) Paint.DrawText(sText, 0, 0, Paint.W, Paint.H) End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FPaint.form000066400000000000000000000002741411575327000225110ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,31,40) Arrangement = Arrange.Fill { DrawingArea1 DrawingArea MoveScaled(5,7,21,24) Background = Color.TextBackground } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FPictureBox.class000066400000000000000000000000251411575327000236560ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FPictureBox.form000066400000000000000000000002341411575327000235160ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { PictureBox1 PictureBox MoveScaled(9,10,39,27) Picture = Picture["broken.svg"] } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FScrollArea.class000066400000000000000000000013561411575327000236310ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Print System.RightToLeft Print Style.ScrollbarSize Print Style.ScrollbarSpacing Application.Animations = True MyScrollView1.Shadow = True 'ScrollArea1.ResizeContents(1600, 1600) End Public Sub ScrollArea1_Draw() Debug ScrollArea1.ScrollX;; ScrollArea1.ScrollY Draw.Translate(-ScrollArea1.ScrollX, -ScrollArea1.ScrollY) Draw.Fillstyle = Fill.Dense6 Draw.FillColor = Color.Red 'Draw.Transparent = True 'Draw.Ellipse(55, 78, 190, 300) Draw.Ellipse(0, 0, 1600, 1600) End Public Sub Button1_Click() Label1.Delete End Public Sub MyScrollView1_Draw() Paint.Font.Grade = 20 Paint.DrawText("Gambas !", 20, 200) End Public Sub Button_Click() Print Last.Parent End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FScrollArea.form000066400000000000000000000111421411575327000234610ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,79,65) Arrangement = Arrange.Fill Margin = True { MyScrollView1 ScrollView MoveScaled(23,16,55,47) { Button2 Button Button Name = "Button2" MoveScaled(2,3,16,4) } { Button8 Button Button Name = "Button8" MoveScaled(22,3,16,4) } { Button26 Button Button Name = "Button26" MoveScaled(41,3,16,4) } { Button32 Button Button Name = "Button32" MoveScaled(61,3,16,4) } { Button3 Button Button Name = "Button3" MoveScaled(2,8,16,4) } { Button9 Button Button Name = "Button9" MoveScaled(22,8,16,4) } { Button27 Button Button Name = "Button27" MoveScaled(41,8,16,4) } { Button33 Button Button Name = "Button33" MoveScaled(61,8,16,4) } { Button4 Button Button Name = "Button4" MoveScaled(2,13,16,4) } { Button10 Button Button Name = "Button10" MoveScaled(22,13,16,4) } { Button28 Button Button Name = "Button28" MoveScaled(41,13,16,4) } { Button34 Button Button Name = "Button34" MoveScaled(61,13,16,4) } { Button5 Button Button Name = "Button5" MoveScaled(6,18,16,4) } { Button11 Button Button Name = "Button11" MoveScaled(26,18,16,4) } { Button29 Button Button Name = "Button29" MoveScaled(45,18,16,4) } { Button35 Button Button Name = "Button35" MoveScaled(65,18,16,4) } { Button6 Button Button Name = "Button6" MoveScaled(9,24,16,4) } { Button12 Button Button Name = "Button12" MoveScaled(29,24,16,4) } { Button30 Button Button Name = "Button30" MoveScaled(48,24,16,4) } { Button36 Button Button Name = "Button36" MoveScaled(68,24,16,4) } { Button7 Button Button Name = "Button7" MoveScaled(13,30,16,4) } { Button13 Button Button Name = "Button13" MoveScaled(33,30,16,4) } { Button31 Button Button Name = "Button31" MoveScaled(52,30,16,4) } { Button37 Button Button Name = "Button37" MoveScaled(72,30,16,4) } { Button14 Button Button Name = "Button14" MoveScaled(3,36,16,4) } { Button38 Button Button Name = "Button38" MoveScaled(42,36,16,4) } { Button20 Button Button Name = "Button20" MoveScaled(23,37,16,4) } { Button44 Button Button Name = "Button44" MoveScaled(62,37,16,4) } { Button15 Button Button Name = "Button15" MoveScaled(3,41,16,4) } { Button39 Button Button Name = "Button39" MoveScaled(42,41,16,4) } { Button21 Button Button Name = "Button21" MoveScaled(23,42,16,4) } { Button45 Button Button Name = "Button45" MoveScaled(62,42,16,4) } { Button16 Button Button Name = "Button16" MoveScaled(3,46,16,4) } { Button40 Button Button Name = "Button40" MoveScaled(42,46,16,4) } { Button22 Button Button Name = "Button22" MoveScaled(23,47,16,4) } { Button46 Button Button Name = "Button46" MoveScaled(62,47,16,4) } { Button17 Button Button Name = "Button17" MoveScaled(7,51,16,4) } { Button41 Button Button Name = "Button41" MoveScaled(46,51,16,4) } { Button23 Button Button Name = "Button23" MoveScaled(27,52,16,4) } { Button47 Button Button Name = "Button47" MoveScaled(66,52,16,4) } { Button18 Button Button Name = "Button18" MoveScaled(10,57,16,4) } { Button42 Button Button Name = "Button42" MoveScaled(49,57,16,4) } { Button24 Button Button Name = "Button24" MoveScaled(30,58,16,4) } { Button48 Button Button Name = "Button48" MoveScaled(69,58,16,4) } { Button19 Button Button Name = "Button19" MoveScaled(14,63,16,4) } { Button43 Button Button Name = "Button43" MoveScaled(53,63,16,4) } { Button25 Button Button Name = "Button25" MoveScaled(34,64,16,4) } { Button49 Button Button Name = "Button49" MoveScaled(73,64,16,4) } } { ScrollArea1 ScrollArea MoveScaled(4,3,35,30) Visible = False Mouse = Mouse.Pointing AutoResize = True { Button1 Button MoveScaled(10,8,11,5) Text = ("Button") } { Label1 Label MoveScaled(7,28,19,6) Border = Border.Plain } { TextArea1 TextArea MoveScaled(32,20,39,29) } } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestClipping.class000066400000000000000000000014421411575327000242030ustar00rootroot00000000000000' Gambas class file Public Sub DrawingArea1_Draw() 'Paint.Debug = True ' Paint.ResetClip ' Paint.Rectangle(55, 50, 431, 400) ' Paint.Clip ' Paint.MoveTo(75, 446) ' Paint.LineTo(165, 446) ' Paint.LineTo(165, 487) ' Paint.LineTo(75, 487) ' Paint.CurveTo(66.163444, 59, 487, 479.836556, 59, 471) ' Paint.LineTo(59, 462) ' Paint.CurveTo(59, 66.163444, 453.163444, 446, 75, 446) ' Paint.LineTo(75, 446) ' Paint.Clip() ' Paint.MoveTo(59, 446) ' Paint.LineTo(112, 499) ' Paint.LineTo(112, 450) ' Paint.LineTo(165, 450) ' Paint.LineTo(165, 446) ' Paint.LineTo(59, 446) ' Paint.Clip() 'Paint.Debug = False ' Paint.Background = Color.Red ' Paint.Rectangle(0, 0, Paint.W, Paint.H) ' Paint.Fill Paint.DrawRect(10, 10, 140, 80, Color.Red, 39.2) End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestClipping.form000066400000000000000000000002611411575327000240370ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,99,72) Arrangement = Arrange.Fill { DrawingArea1 DrawingArea MoveScaled(1,1,62,47) Background = &HFFFFFF& } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestCombo.class000066400000000000000000000011241411575327000234720ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Debug Style.Name 'hSpinBox.Border = False 'hSpinBox.Foreground = Color.Red 'hSpinBox.Background = Color.LightBackground End Public Sub Panel1_MouseDown() End Public Sub Button1_Click() ComboBox2.H -= Desktop.Scale End Public Sub Button2_Click() ComboBox2.W -= Desktop.Scale Debug ComboBox2.W End Public Sub SpinBox1_Change() Debug SpinBox1.Value End Public Sub ComboBox2_Click() Debug ComboBox2.Index End Public Sub Button3_Click() Try Inc ComboBox2.Index End Public Sub Button4_Click() Main.Main End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestCombo.form000066400000000000000000000036311411575327000233350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,97,87) { Menu1 Menu Text = ("Menu1") } { Menu2 Menu Text = ("Menu2") } { Menu3 Menu Text = ("Menu3") } { Button1 Button MoveScaled(14,3,16,4) Background = Color.Orange Text = ("Button1") } { ComboBox2 ComboBox MoveScaled(13,20,33,12) Font = Font["Bold,Italic,Underline,+7"] List = [("Élément 1"), ("Élément 2"), ("Élément 3"), ("Élément 4"), ("Élément 5")] Text = ("dhdgfhdfghdf") } { Panel3 Panel MoveScaled(14,36,23,25) Font = Font["Italic"] Border = Border.Plain { TextBox4 TextBox MoveScaled(3,6,23,6) Text = ("fdsgsdg") } { Label1 Label MoveScaled(2,1,19,2) Text = ("trytryertyter") } { SpinBox2 SpinBox MoveScaled(13,14,14,4) } { TextBox2 TextBox MoveScaled(15,19,14,4) } } { Button2 Button MoveScaled(14,10,16,4) Font = Font["-2"] Text = ("2") } { CheckBox1 CheckBox MoveScaled(46,41,26,4) Font = Font["+2"] Background = Color.Green Text = ("bxvcbxcbc") } { SpinBox1 SpinBox MoveScaled(44,3,9,4) Font = Font["Italic"] Step = 4 } { Frame1 Frame MoveScaled(56,14,32,24) Font = Font["Italic"] Text = ("Frame") { Label2 Label MoveScaled(7,11,14,3) Text = ("tyrtyrty") } } { TabStrip1 TabStrip MoveScaled(45,56,39,23) Count = 3 TextFont = Font["Century Schoolbook L"] Index = 0 Text = ("1") { TextBox1 TextBox MoveScaled(4,4,23,5) Font = Font["Liberation Mono,Bold"] Text = ("TextBox1") } { TextBox3 TextBox MoveScaled(9,12,22,5) Text = ("Normal quoi") } Index = 1 Text = ("2") Index = 2 Text = ("3") Index = 0 } { Button3 Button MoveScaled(34,11,16,4) Text = ("Index") } { Button4 Button MoveScaled(67,6,16,4) Text = ("Message") } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestFrame.class000066400000000000000000000004041411575327000234650ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() 'Frame1.RichText = "Titre un peu long : Ceci est le titre de la frame. Et il peut être long. Mais très long en fait !" End Public Sub Button3_Click() Frame1.Arrangement = Arrange.None End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestFrame.form000066400000000000000000000006241411575327000233270ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,56,44) Background = Color.Yellow Margin = True { Frame1 Frame MoveScaled(2,2,49,39) Arrangement = Arrange.Vertical Text = ("gfdhgdfhfdg") Alignment = Align.Top { Button1 Button MoveScaled(3,1,16,4) } { Button2 Button MoveScaled(4,8,16,4) } { Button3 Button MoveScaled(4,16,16,4) } } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestListView.class000066400000000000000000000026461411575327000242130ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim i As Integer 'How to demonstrate the bug: 'Step1: 'Start the program, mark one item in the list and click delete. 'In the IDE console you will see the number of selected items before and after the removal of the selected item in the IDE console. 'Other than expected, the number of selected items persists after having delete one or more. ' 'Step 2: 'Start the program, turn off the multi selection mode, mark one item And click On delete. 'This time it shows that the number of selected items after removel is zero - as expected. 'Set listview to multi-select mode CheckBox1.Value = True ListView1.Add(0, "Item 0", Picture["picturebox.png"]) For I = 1 To 5 ListView1.Add(i, "Item " & Str(i)) Next End Public Sub Button1_Click() Print "Number of selected items before deleting: "; ListView1.Selection.Count For Each sKey As Variant In ListView1.Selection 'ListView1[sKey].selected = False 'potential workaround Listview1.Remove(sKey) Next Print "Number of selected items after deleting: "; ListView1.Selection.Count End Public Sub CheckBox1_Click() If CheckBox1.value = True Then ListView1.mode = Select.Multiple Else Listview1.mode = Select.Single Endif End Public Sub Button2_Click() Dim i As Integer ListView1.Clear For I = 1 To 5 ListView1.Add(i, "Item " & Str(i)) Next End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestListView.form000066400000000000000000000006101411575327000240360ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,57,37) Text = ("ListView Bug Demo") { ListView1 ListView MoveScaled(3,3,51,23) } { Button1 Button MoveScaled(35,29,19,4) Text = ("Delete Selected Item") } { Button2 Button MoveScaled(23,29,11,4) Text = ("Fill List") } { CheckBox1 CheckBox MoveScaled(4,29,18,4) Text = ("Multiselect Mode") } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestMouseWheel.class000066400000000000000000000002731411575327000245140ustar00rootroot00000000000000' Gambas class file Public Sub DrawingArea1_MouseWheel() Debug End Public Sub SpinBox1_MouseDown() Debug Mouse.X;; Mouse.Y End Public Sub Form_Open() Print Style.Name End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestMouseWheel.form000066400000000000000000000012051411575327000243460ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { DrawingArea1 DrawingArea MoveScaled(17,30,43,31) Border = Border.Plain { Button1 Button MoveScaled(10,11,16,4) } { Label1 Label MoveScaled(13,19,20,5) Border = Border.Plain } } { TextArea1 TextArea MoveScaled(6,7,17,13) Text = ("vfdg\ndf\ngd\nfsgsdfgsdf\ngd\nfg\ndsfg\ndsf\ngs\ndfg\nsdf\ng\nsdf") } { SpinBox1 SpinBox MoveScaled(39,11,12,6) MinValue = 40 MaxValue = 1000 Value = 40 } { TextBox1 TextBox MoveScaled(28,22,24,4) } { Button2 Button MoveScaled(28,2,16,4) Text = ("ok") } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestProgressBar.class000066400000000000000000000003721411575327000246700ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() 'ProgressBar1.Value = 0.5 'ProgressBar1.Pulse = True End Public Sub Timer1_Timer() ProgressBar1.Value += 0.01 End Public Sub Button1_Click() ProgressBar1.Pulse = Not ProgressBar1.Pulse End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestProgressBar.form000066400000000000000000000006241411575327000245260ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,62,20) Margin = True { Timer1 #Timer #MoveScaled(45,11) Enabled = True Delay = 250 } { Button1 Button MoveScaled(3,13,16,4) Text = ("Button1") } { Panel1 Panel MoveScaled(3,3,57,6) Arrangement = Arrange.Fill { ProgressBar1 ProgressBar MoveScaled(0,0,56,4) Font = Font["Bold,Italic"] } } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestSpinBox.class000066400000000000000000000003531411575327000240200ustar00rootroot00000000000000' Gambas class file Public fault As Boolean = True Public Sub SpinBox1_Change() Dosomething End Public Sub Dosomething() If fault = True Then Message("its a message") Else Print "It works" Endif End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestSpinBox.form000066400000000000000000000003121411575327000236510ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { SpinBox1 SpinBox MoveScaled(2,6,16,5) Border = False } { SpinBox2 SpinBox MoveScaled(20,6,16,5) ReadOnly = True } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestSplit.class000066400000000000000000000004731411575327000235340ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Settings.Read(Me) Settings.Read(HSplit1) End Public Sub Form_Close() Settings.Write(Me) Settings.Write(HSplit1) End Public Sub Button1_Click() HSplit1.Arrangement = If(HSplit1.Arrangement = Arrange.Horizontal, Arrange.Vertical, Arrange.Horizontal) End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTestSplit.form000066400000000000000000000012001411575327000233570ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Persistent = True Utility = True Arrangement = Arrange.Vertical { HBox1 HBox MoveScaled(6,3,47,4) { Button1 Button MoveScaled(0,0,16,4) } } { Panel1 Panel MoveScaled(5,10,51,46) Expand = True Arrangement = Arrange.Fill Border = Border.Plain { HSplit1 Splitter MoveScaled(1,2,46,41) { TreeView1 TreeView MoveScaled(1,11,13,22) Visible = False Expand = True Border = False } { Panel2 Panel MoveScaled(16,10,27,20) Background = Color.Yellow } } } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTreeView.class000066400000000000000000000053071411575327000233340ustar00rootroot00000000000000' Gambas class file Private $sKey As String Public Sub Form_Open() Dim sDir As String = "~/Documents" Dim sFile As String Dim sPath As String Dim hDirPict As Picture Dim hFilePict As Picture Dim sParent As String Dim bDark As Boolean Dim sFirst As String Debug Style.Name Component.Load("gb.form") hDirPict = Picture["icon:/small/directory"] hFilePict = Picture["icon:/small/file"] tvwTest.Columns.Count = 3 tvwTest.Columns[0].Text = "Alpha" tvwTest.Columns[1].Text = "Beta" tvwTest.Columns[2].Text = "Gamma" For Each sFile In RDir(sDir) sPath = sDir &/ sFile 'Print File.Name(sPath); " -> "; File.Dir(sPath) sParent = File.Dir(sPath) If sParent = sDir Then sParent = "" With tvwTest.Add(sPath, File.Name(sPath), If(IsDir(sPath), hDirPict, hFilePict), sParent) .[1] = Stat(sPath).Size bDark = Not bDark If bDark Then .Background = Color.RGB(0, 0, 0, 240) If InStr(sPath, "zip") Then '.Foreground = Color.Red .Font = tvwTest.Font .Font.Strikeout = True Endif End With If Not sFirst Then sFirst = sPath 'ListView1.Add(sPath, File.Name(sPath), If(IsDir(sPath), hDirPict, hFilePict)) Next tvwTest[sFirst].Selected = True GridView1.Rows.Count = 10 GridView1.Columns.Count = 10 End Public Sub tvwTest_Select() Debug tvwTest.Key 'Try tvwTest.Current.Expanded = True End Public Sub Button1_Click() tvwTest.Remove(tvwTest.Key) End Public Sub tvwTest_KeyPress() If Key.Code = Key.Delete Then Button1_Click End ' Public Sub tvwTest_Compare(Key As String, OtherKey As String) ' ' Try tvwTest.Compare = Sgn(Stat(Key).Size - Stat(OtherKey).Size) ' 'If Error Then Stop Event ' ' End Public Sub Button2_Click() tvwTest.Border = Not tvwTest.Border End Public Sub tvwTest_DragMove() Debug 'Stop Event End Public Sub tvwTest_MouseDrag() Debug "START" Drag.Icon = Picture["icon:/small/text"] Drag(tvwTest, "toto", "text/plain") Debug "END" End Public Sub Button3_MouseDrag() Drag(Button3, "titi", "text/plain") End Public Sub Button3_Click() End Public Sub tvwTest_Menu() mnuPopup.Popup End Public Sub tvwTest_GotFocus() Debug End Public Sub tvwTest_LostFocus() Debug End Public Sub tvwTest_BeforeArrange() Debug End Public Sub Button4_Click() $sKey = tvwTest.Key tvwTest.Current.Reparent("/home/benoit/Photos/Aumale") Debug $sKey; " -> "; tvwTest.Key End Public Sub Button5_Click() tvwTest.Current.Rename End Public Sub Button6_Click() tvwTest.ShowCheck = Not tvwTest.ShowCheck End Public Sub tvwTest_MouseDown() Debug End Public Sub tvwTest_MouseUp() Debug End Public Sub tvwTest_DblClick() Debug End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FTreeView.form000066400000000000000000000025051411575327000231670ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,121,84) Arrangement = Arrange.Vertical Margin = True { mnuPopup Menu Text = ("Menu1") Visible = False { Menu2 Menu Text = ("Menu2") } { Menu3 Menu Text = ("Menu3") } { Menu4 Menu Text = ("Menu4") } { Menu5 Menu Text = ("Menu5") } } { HBox1 HBox MoveScaled(1,9,116,4) { Button1 Button MoveScaled(0,0,16,4) Text = ("Delete") } { Button2 Button MoveScaled(17,0,16,4) Text = ("Border") } { Button3 Button MoveScaled(34,0,16,4) Text = ("Drag") } { Button4 Button MoveScaled(51,0,16,4) Text = ("Reparent") } { Button5 Button MoveScaled(68,0,16,4) Text = ("Rename") } { Button6 Button MoveScaled(85,0,16,4) Text = ("Check") } { CheckBox1 CheckBox MoveScaled(102,0,24,4) } } { Separator1 Separator MoveScaled(29,19,12,0) } { tvwTest ColumnView MoveScaled(13,22,42,26) Drop = True Expand = True Mode = Select.Multiple Sorted = True Editable = True Resizable = True Border = False ShowLines = True } { GridView1 GridView MoveScaled(20,51,37,27) Visible = False Expand = True ShowCursor = True Header = GridView.Both } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/000077500000000000000000000000001411575327000221525ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/CTaskPreview.class000066400000000000000000000042771411575327000255620ustar00rootroot00000000000000' Gambas class file Inherits Task Private $sDir As String Private $iSize As Integer Private $aPreview As String[] Public Sub _new(sDir As String, iSize As Integer, aPreview As String[]) $sDir = sDir $iSize = iSize $aPreview = aPreview End Private Sub PrintIcon(sFile As String, hImage As Image) Dim hIcon As Image Dim sTemp As String hIcon = New Image(hImage.W + 4, hImage.H + 4, Color.Transparent) Paint.Begin(hIcon) Paint.AntiAlias = False Paint.LineWidth = 2 Paint.Rectangle(0, 0, hIcon.W, hIcon.H) Paint.Background = Color.Gray Paint.Stroke Paint.End hIcon.DrawImage(hImage, 2, 2) sTemp = File.SetExt(Temp$(), "png") hIcon.Save(sTemp) Print sFile; "\t"; sTemp End Public Sub Main() Dim sFile As String Dim sExt As String Dim sPath As String Dim hImage As Image Dim hSvgImage As SvgImage Application.Priority += 10 For Each sFile In $aPreview sPath = $sDir &/ sFile sExt = LCase(File.Ext(sFile)) If sExt = "jpg" Or If sExt = "jpeg" Or If sExt = "png" Or If sExt = "gif" Or If sExt = "bmp" Or If sExt = "xpm" Then If Stat(sPath).Size > 4194304 Then Continue Try hImage = Image.Load(sPath) If Error Then Continue If Not (hImage.Width = $iSize And hImage.Height = $iSize) Then If hImage.Width > hImage.Height Then hImage = hImage.Stretch($iSize, ($iSize * hImage.Height) \ hImage.Width) Else hImage = hImage.Stretch(($iSize * hImage.Width) \ hImage.Height, $iSize) Endif Endif PrintIcon(sFile, hImage) Else If sExt = "svg" Or If sExt = "svgz" Then Try hSvgImage = SvgImage.Load(sPath) If Error Then Continue If hSvgImage.Width > hSvgImage.Height Then hSvgImage.Resize($iSize, $iSize * hSvgImage.Height / hSvgImage.Width) Else hSvgImage.Resize($iSize * hSvgImage.Width / hSvgImage.Height, $iSize) Endif hImage = New Image(hSvgImage.Width, hSvgImage.Height, Color.Transparent) Paint.Begin(hImage) hSvgImage.Paint() Paint.End PrintIcon(sFile, hImage) Endif Next Print "." Do Sleep 3600 Loop End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/DirCache.class000066400000000000000000000045071411575327000246510ustar00rootroot00000000000000' Gambas class file Class DesktopMime Static Private $cCache As New Collection Private $sDir As String Private $aList As String[] Private $dDate As Date Private $dLastModified As Date Private $cStat As New Collection Private $cIcon As New Collection Private $cIsDir As New Collection Private $iLock As Integer Static Public Sub _get(sDir As String) As DirCache Dim hCache As DirCache If Right(sDir) <> "/" Then sDir &= "/" hCache = $cCache[sDir] If Not hCache Then hCache = New DirCache(sDir) $cCache[sDir] = hCache Endif Return hCache End Static Public Sub Exit() $cCache = Null End Public Sub _new(sDir As String) $sDir = sDir End Public Sub Clear() $dDate = Null End Private Sub CheckValid() As Boolean Dim dLastModified As Date If $iLock Then Return dLastModified = Stat($sDir).LastModified If IsNull($dLastModified) Or If dLastModified > $dLastModified Or If Now >= DateAdd($dDate, gb.Second, 5) Then $dDate = Now $dLastModified = dLastModified $cStat.Clear $aList = Null Endif End Public Sub Invalidate() $dLastModified = Null $dDate = Null End Public Sub GetInfo(sFile As String) As Stat Dim hInfo As Stat If CheckValid() Then Return If sFile = "" Then sFile = "/" hInfo = $cStat[sFile] If Not hInfo Then 'Debug sFile hInfo = Stat($sDir &/ sFile) $cStat[sFile] = hInfo Endif Return hInfo End Public Sub IsDir(sFile As String) As Boolean If CheckValid() Then Return If sFile = "" Then sFile = "/" If Not $cIsDir.Exist(sFile) Then $cIsDir[sFile] = IsDir($sDir &/ sFile) Endif Return $cIsDir[sFile] End Public Sub GetMimeIcon(sFile As String, iSize As Integer) As Image Dim hIcon As Image If CheckValid() Then Return hIcon = $cIcon[sFile & ":" & CStr(iSize)] If Not hIcon Then Try hIcon = DesktopMime.FromFile($sDir &/ sFile).GetIcon(iSize) $cIcon[sFile & ":" & CStr(iSize)] = hIcon Endif Return hIcon End Public Sub GetFiles() As String[] If CheckValid() Then Return New String[] If Not $aList Then 'Debug $aList = Dir($sDir).Sort(gb.Natural) Endif Return $aList End Public Sub Lock() If $iLock = 0 Then CheckValid Inc $iLock End Public Sub Unlock() Dec $iLock End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/FTestFileView.class000066400000000000000000000002501411575327000256560ustar00rootroot00000000000000' Gambas class file Public Sub Button1_Click() FileView1.ShowDetailed = Not FileView1.ShowDetailed End Public Sub Form_Open() FileView1.Dir = "/usr/bin" End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/FTestFileView.form000066400000000000000000000004461411575327000255230ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Vertical { FileView1 FileView MoveScaled(3,4,56,32) Expand = True } { HBox1 HBox MoveScaled(3,55,58,4) { Button1 Button MoveScaled(1,0,16,4) Text = ("Toggle view") } } } gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/FileView.class000066400000000000000000000531711411575327000247220ustar00rootroot00000000000000' Gambas class file 'Export Inherits UserControl Class Watch Public Const _Properties As String = "*,Border=True,Mode{Select.*}=Single,Dir,ShowDetailed,ShowHidden,ShowDirectory,ShowPreview" Public Const _DefaultEvent As String = "Click" Public Const _Group As String = "View" Event {Select} Event Click Event Activate Event Menu Event Icon(Path As String) Property {Dir} As String Property ShowHidden As Boolean Property ShowDirectory As Boolean Property Current As String Property Mode As Integer Property ShowDetailed As Boolean Property ShowPreview As Boolean Property Selection As String[] Property Filter As String[] Property Icon As Picture Property IconSize As Integer Property Border As Boolean Property Settings As Variant[] Property Read Count As Integer Property Background As Integer Property Foreground As Integer Static Private $cExt As New Collection(gb.IgnoreCase) Private Const PREFIX_DIR As String = "0" Private Const PREFIX_FILE As String = "1" Private $sDir As String Private $bShowHidden As Boolean Private $bShowDir As Boolean Private $bShowPreview As Boolean Private $hIconView As IconView Private $hColumnView As ColumnView Private $iSort As Integer Private $bAsc As Boolean = True Private $aFilter As String[] Private $hPict As Picture Private $hRefresh As Timer Private $bRefreshTriggered As Boolean Private $iIconSize As Integer = 32 Private $bDesktopIsLoaded As Boolean Private $hPreview As CTaskPreview Private $hEnsureVisible As Timer Private $hWatch As Watch Private $bWatch As Boolean Private $bRefreshIcon As Boolean Private $bRefreshAll As Boolean Private $hWatcher As Watcher Private $bVisible As Boolean Private $bInvalidate As Boolean Private $sSortDir As String Static Public Sub _init() $cExt["html"] = "html" $cExt["htm"] = "html" $cExt["css"] = "html" $cExt["tar"] = "archive" $cExt["gz"] = "archive" $cExt["tgz"] = "archive" $cExt["bz2"] = "archive" $cExt["z"] = "archive" $cExt["zip"] = "archive" $cExt["txt"] = "text" $cExt["json"] = "text" $cExt["mp3"] = "audio" $cExt["aac"] = "audio" $cExt["ogg"] = "audio" $cExt["wav"] = "audio" $cExt["mpg"] = "video" $cExt["mpeg"] = "video" $cExt["avi"] = "video" $cExt["wmv"] = "video" $cExt["mov"] = "video" $cExt["gambas"] = "gambas" $cExt["c"] = "text" $cExt["cpp"] = "text" $cExt["h"] = "text" $cExt["deb"] = "package" $cExt["rpm"] = "package" $cExt["iso"] = "cdrom" $cExt["jpg"] = "image" $cExt["jpeg"] = "image" $cExt["png"] = "image" $cExt["gif"] = "image" $cExt["xpm"] = "image" $cExt["bmp"] = "image" $cExt["ico"] = "image" $cExt["xcf"] = "image" $cExt["svg"] = "image" $cExt["pdf"] = "pdf" $cExt["ttf"] = "font" $cExt["otf"] = "font" $cExt["bdf"] = "font" End Static Public Sub _exit() Try DirCache.Exit End Public Sub _new() $bDesktopIsLoaded = Component.IsLoaded("gb.desktop") $bWatch = Component.IsLoaded("gb.inotify") If $bWatch Then $hWatcher = New Watcher(Me) As "Watcher" With $hIconView = New IconView(Me) As "View" .Sorted = True .IconLines = 3 End With With $hColumnView = New ColumnView(Me) As "View" .Columns.Count = 3 .Columns[0].Text = ("Name") .Columns[0].Expand = False .Columns[1].Text = ("Size") .Columns[1].Alignment = Align.Right .Columns[2].Text = ("Last modified") '.Columns[2].Alignment = Align.Right '.Columns[0].Width = 64 '.Columns[1].Width = 64 '.Columns[2].Width = 96 .Visible = False .Sorted = True .Resizable = True End With Me.Proxy = GetView() $hRefresh = New Timer As "Refresh" $hEnsureVisible = New Timer As "EnsureVisible" RefreshViewLater End Private Function CheckFilter(sFile As String) As Boolean Dim sFilter As String For Each sFilter In $aFilter If sFile Like sFilter Then Return Next Return True End Private Sub GetMimeIcon(sPath As String, iSize As Integer) As Picture Try Return DirCache[File.Dir(sPath)].GetMimeIcon(File.Name(sPath), iSize).Picture End Private Sub GetIcon(sPath As String, iSize As Integer) As Picture Dim sIcon As String Dim hPict As Picture $hPict = Null Try Raise Icon(sPath) If $hPict Then Return $hPict If IsDir(sPath) Then Return 'If $bShowPreview And If $cPreview.Exist(sPath) Then Return $cPreview[sPath].Picture ' If $bShowPreview And If $aImgExt.Exist(File.Ext(sPath), gb.IgnoreCase) < 0 Then ' If Stat(sPath).Size <= 65536 Then ' ' Try hImage = Image.Load(sPath) ' If Not Error Then ' If Not (hImage.Width = iSize And hImage.Height = iSize) Then ' If hImage.Width > hImage.Height Then ' hImage = hImage.Stretch(iSize, (iSize * hImage.Height) \ hImage.Width) ' Else ' hImage = hImage.Stretch((iSize * hImage.Width) \ hImage.Height, iSize) ' Endif ' Endif ' ' hIcon = New Image(hImage.W + 4, hImage.H + 4, Color.Transparent) ' Paint.Begin(hIcon) ' Paint.AntiAlias = False ' Paint.LineWidth = 2 ' Paint.Rectangle(0, 0, hIcon.W, hIcon.H) ' Paint.Background = Color.Merge(GetView().Background, Color.Gray) ' Paint.Stroke ' Paint.End ' hIcon.DrawImage(hImage, 2, 2) ' ' Return hIcon.Picture ' Else ' Return Picture["icon:/" & iSize & "/image"] ' Endif ' ' Endif ' ' Endif If $bDesktopIsLoaded Then hPict = GetMimeIcon(sPath, iSize) If hPict Then Return hPict Endif Try sIcon = $cExt[File.Ext(sPath)] If sIcon Then Return Picture["icon:/" & CStr(iSize) &/ sIcon] With DirCache[File.Dir(sPath)].GetInfo(File.Name(sPath)) If InStr(.Perm[System.User.Name], "x") Then Return Picture["icon:/" & CStr(iSize) &/ "exec"] End With Catch Error "gb.form: unable to get icon for file: "; File.Name(sPath); ": "; Error.Text End Private Sub GetSelection() As String[] Dim hView As Object Dim aSel As New String[] If $hIconView.Visible Then hView = $hIconView Else hView = $hColumnView Endif hView.MoveFirst While hView.Available If hView.Item.Selected Then aSel.Add(hView.Item.Key) Endif hView.MoveNext Wend Return aSel End Private Sub GetIconSize() As Integer If $hColumnView.Visible Then Return 16 'Stock.GetSize("small") Else Return $iIconSize Endif End Private Sub GetCurrentDir() As String If $sDir Then Return $sDir Else Return User.Home Endif End Static Public Sub _GetHiddenColor() As Integer Return Color.Merge(Color.TextBackground, Color.TextForeground, 0.66) End Private Sub RefreshView() Dim sFile As String Dim sDir As String Dim hPictFile As Picture Dim hPictFolder As Picture Dim hPict As Picture Dim sPrefix As String Dim iSize As Integer Dim aSel As String[] Dim aDir As New String[] Dim I As Integer Dim sText As String Dim bRichText As Boolean Dim hCache As DirCache Dim iHiddenFg As Integer Dim SX As Integer Dim SY As Integer Dim sKey As String Dim aPreview As New String[] Dim sExt As String Inc Application.Busy $bRefreshTriggered = False iHiddenFg = _GetHiddenColor() aSel = GetSelection() If $hColumnView.Visible Then SX = $hColumnView.ScrollX SY = $hColumnView.ScrollY If Not $bWatch Or If $bRefreshAll Then $hColumnView.Clear $hColumnView._Begin() Endif $hColumnView.Sorted = False hPictFile = Picture["icon:/small/file"] hPictFolder = Picture["icon:/small/directory"] Else SX = $hIconView.ScrollX SY = $hIconView.ScrollY If Not $bWatch Or If $bRefreshAll Then $hIconView.Clear $hIconView._Begin hPictFile = Picture["icon:/" & $iIconSize & "/file"] hPictFolder = Picture["icon:/" & $iIconSize & "/directory"] Endif iSize = GetIconSize() sDir = GetCurrentDir() If $bWatch And If $bVisible Then If Not $hWatch Or If $hWatch.Path <> sDir Then $hWatch = New Watch(sDir) As "Watch" Endif Endif hCache = DirCache[sDir] If $bInvalidate Then hCache.Invalidate $bInvalidate = False Endif 'Try aDir = Dir(sDir, "*").Sort() Try aDir = hCache.GetFiles() hCache.Lock For Each sFile In aDir If Not $bShowHidden And If Left(sFile) = "." Or Right(sFile) = "~" Then Continue 'With Stat(sDir &/ sFile) With hCache.GetInfo(sFile) If hCache.IsDir(sFile) Then If Not $bShowDir Then Continue sPrefix = PREFIX_DIR Else If $aFilter And If CheckFilter(sFile) Then Continue sPrefix = PREFIX_FILE Endif sKey = sPrefix & sFile hPict = GetIcon(sDir &/ sFile, iSize) If Not hPict Then If hCache.IsDir(sFile) Then hPict = hPictFolder Else hPict = hPictFile Endif Endif bRichText = False sText = sFile If .Link Then sText = "" & sText & "" bRichText = True Endif If .Hidden Then sText = "" & sText & "" bRichText = True Endif If $hColumnView.Visible Then If Not $hColumnView.Exist(sKey) Then $hColumnView.Add(sKey, sFile, hPict).Editable = Access(sDir, gb.Write) GoSub ADD_PREVIEW Else $hColumnView[sKey].Editable = Access(sDir, gb.Write) If $bRefreshIcon Then $hColumnView[sKey].Picture = hPict GoSub ADD_PREVIEW Endif Endif $hColumnView[sKey][1] = " " & Main.GetFileSize(.Size) $hColumnView[sKey][2] = " " & Str(.Time) If bRichText Then $hColumnView[sPrefix & sFile].RichText = sText Else If Not $hIconView.Exist(sKey) Then $hIconView.Add(sKey, sFile, hPict).Editable = Access(sDir, gb.Write) GoSub ADD_PREVIEW Else $hIconView[sKey].Editable = Access(sDir, gb.Write) If $bRefreshIcon Then $hIconView[sKey].Picture = hPict GoSub ADD_PREVIEW Endif Endif If bRichText Then $hIconView[sKey].RichText = sText Endif End With Next hCache.Unlock If $hColumnView.Visible Then For I = 1 To $hColumnView.Columns.Max $hColumnView.Columns[I].W = -1 Next Endif For Each sFile In aSel Try GetView()[sFile].Selected = True Next If aPreview.Count Then RunPreview(aPreview) Finally $bRefreshIcon = False $bRefreshAll = False If $hColumnView.Visible Then $hColumnView.Sorted = True $hColumnView._End() Else $hIconView._End Endif Try GetView().Scroll(SX, SY) Dec Application.Busy Catch Error "gb.form: "; Error.Where; ": "; Error.Text Return ADD_PREVIEW: If Not $bShowPreview Then Return sExt = LCase(File.Ext(sFile)) If Not sExt Then Return If $cExt[sExt] <> "image" Then Return aPreview.Add(sFile) Return End Private Sub RunPreview(aPreview As String[]) If $hPreview Then $hPreview.Stop $hPreview = New CTaskPreview(GetCurrentDir(), GetIconSize(), aPreview) As "TaskPreview" End Public Sub TaskPreview_Read(Data As String) Dim iPos As Integer Dim sPath As String Dim sPreview As String Dim sLine As String If Not $bShowPreview Then Return For Each sLine In Split(Data, "\n", "", True) If sLine = "." Then Try $hPreview.Stop Return Endif iPos = InStr(sLine, "\t") sPath = Left(sLine, iPos - 1) sPreview = Mid$(sLine, iPos + 1) Try GetView()[PREFIX_FILE & sPath].Picture = Image.Load(sPreview).Picture Next End Public Sub TaskPreview_Kill() If $hPreview = Last Then $hPreview = Null End Private Sub RefreshViewLater(Optional bClear As Boolean) If $bRefreshTriggered Then Return If $hRefresh.Enabled Then $hRefresh.Stop $bRefreshAll = bClear $bRefreshTriggered = True $hRefresh.Trigger End Public Sub RefreshViewAfter() If $bRefreshTriggered Then Return If $hRefresh.Enabled Then Return $hRefresh.Delay = 100 $hRefresh.Start End Public Sub Refresh_Timer() If Not $bRefreshTriggered And Not $hRefresh.Enabled Then Return RefreshView $hRefresh.Stop End Public Sub Reload() $bInvalidate = True RefreshViewLater(True) End Private Function Dir_Read() As String Return $sDir End Private Sub Dir_Write(sDir As String) $sDir = sDir RefreshViewLater(True) End Private Function ShowHidden_Read() As Boolean Return $bShowHidden End Private Sub ShowHidden_Write(bShowHidden As Boolean) If bShowHidden = $bShowHidden Then Return $bShowHidden = bShowHidden RefreshViewLater(True) End Private Function ShowDirectory_Read() As Boolean Return $bShowDir End Private Sub ShowDirectory_Write(bShow As Boolean) If $bShowDir = bShow Then Return $bShowDir = bShow RefreshViewLater(True) End Private Function GetView() As Object If $hIconView.Visible Then Return $hIconView Else Return $hColumnView Endif End Private Function Current_Read() As String If GetView().Current.Selected Then Return Mid$(GetView().Current.Key, 2) Catch End Private Sub EnsureRefresh() Refresh_Timer End Public Sub EnsureVisible_Timer() Dim hItem As Object hItem = GetView().Current If Not hItem Then Return With hItem If Not .Selected Then Return .EnsureVisible End With End Private Sub Current_Write(sFile As String) Dim sKey As String 'Debug sFile If sFile = Current_Read() Then Return EnsureRefresh GetView().UnselectAll sKey = PREFIX_DIR & sFile If Not GetView().Exist(sKey) Then sKey = PREFIX_FILE & sFile If Not GetView().Exist(sKey) Then Return GetView()[sKey].Selected = True $hEnsureVisible.Trigger End ' Private Function Font_Read() As Font ' ' Return Super.Font ' ' End ' ' Private Sub Font_Write(hFont As Font) ' ' Super.Font = hFont ' RefreshGrid ' ' End Private Function ShowDetailed_Read() As Boolean Return $hColumnView.Visible End Private Sub ShowDetailed_Write(bDetailed As Boolean) Dim hOld As Control If bDetailed = ShowDetailed_Read() Then Return If bDetailed Then hOld = $hIconView $hColumnView.Show Else hOld = $hColumnView $hIconView.Show Endif hOld.Hide Me.Proxy = GetView() Me.Background = hOld.Background Me.Foreground = hOld.Foreground $bRefreshAll = True RefreshView TakeSelection End Public Sub View_Select() Raise {Select} End Public Sub View_Click() Raise Click End Public Sub View_Activate() Raise Activate End Public Sub View_Menu() Raise Menu End Public Sub View_BeforeSort() $sSortDir = GetCurrentDir() If $hColumnView.Visible Then $iSort = $hColumnView.Columns.Sort $bAsc = $hColumnView.Columns.Ascending Else $hIconView.Ascending = $bAsc Endif End Public Sub View_Compare((Key) As String, OtherKey As String) Dim hStat As Stat Dim hStat2 As Stat Dim iComp As Integer iComp = Sgn(Asc(Key) - Asc(OtherKey)) If iComp = 0 Then If $iSort Then hStat = DirCache[$sSortDir].GetInfo(Mid$(Key, 2)) hStat2 = DirCache[$sSortDir].GetInfo(Mid$(OtherKey, 2)) Endif Select $iSort Case 1 iComp = Sgn(hStat.Size - hStat2.Size) Case 2 iComp = Sgn(hStat.Time - hStat2.Time) End Select If iComp = 0 Then iComp = Comp(Key, OtherKey, gb.IgnoreCase + gb.Natural) 'IF NOT $bAsc THEN iComp = (- iComp) Endif Last.Compare = iComp Catch End Private Sub Mode_Write(iMode As Integer) $hIconView.Mode = iMode $hColumnView.Mode = iMode End Private Function Mode_Read() As Integer Return $hIconView.Mode End Private Function Selection_Read() As String[] Dim hView As Object Dim aSel As New String[] EnsureRefresh hView = GetView() hView.MoveFirst While hView.Available If hView.Item.Selected Then aSel.Add(hView.Item.Text) Endif hView.MoveNext Wend Return aSel End Private Sub Selection_Write(Value As String[]) Dim hView As Object Dim sFile As String Dim hCache As DirCache If $hIconView.Mode = Select.None Then Return EnsureRefresh hCache = DirCache[GetCurrentDir()] hView = GetView() hView.UnselectAll For Each sFile In Value sFile = If(hCache.IsDir(sFile), PREFIX_DIR, PREFIX_FILE) & sFile Try hView[sFile].Selected = True Next End Private Sub TakeSelection() Dim hSrc As Object Dim hDst As Object If $hIconView.Mode = Select.None Then Return hSrc = $hIconView hDst = $hColumnView If $hIconView.Visible Then Swap hSrc, hDst If $hIconView.Mode = Select.Single Then If hSrc.Current And If hSrc.Current.Selected Then Object.Lock(hDst) hDst[hSrc.Key].Selected = True hDst[hSrc.Key].EnsureVisible Object.Unlock(hDst) Endif Return Endif hDst.UnselectAll hSrc.MoveFirst While hSrc.Available If hSrc.Item.Selected Then Object.Lock(hDst) hDst[hSrc.Item.Key].Selected = True Object.Unlock(hDst) Endif hSrc.MoveNext Wend End Private Function Filter_Read() As String[] Return $aFilter End Private Sub Filter_Write(aFilter As String[]) $aFilter = aFilter.Copy() RefreshViewLater(True) End Private Function Icon_Read() As Picture Return $hPict End Private Sub Icon_Write(Value As Picture) $hPict = Value End Private Function Border_Read() As Boolean Return $hColumnView.Border End Private Sub Border_Write(Value As Boolean) $hColumnView.Border = Value $hIconView.Border = Value End Private Function Settings_Read() As Variant[] Return [1, CVariant(ShowDetailed_Read()), ShowHidden_Read(), $hColumnView.Settings, $iIconSize, ShowPreview_Read()] 'Return IIf(ShowDetailed_Read(), "1", "0") & "," & IIf(ShowHidden_Read(), "1", "0") & "," & $hColumnView.Settings End Private Sub Settings_Write(Value As Variant[]) If TypeOf(Value[0]) = gb.Integer Then ShowDetailed_Write(Value[1]) ShowHidden_Write(Value[2]) $hColumnView.Settings = Value[3] IconSize_Write(Value[4]) If Value.Count >= 6 Then ShowPreview_Write(Value[5]) Else ShowDetailed_Write(Value[0]) ShowHidden_Write(Value[1]) $hColumnView.Settings = Value[2] Endif Catch Error "gb.form :"; Error.Where; ": "; Error.Text End Private Function Count_Read() As Integer If $hIconView.Visible Then Return $hIconView.Count Else Return $hColumnView.Count Endif End ' PUBLIC SUB View_MouseMove() ' ' IF $hIconView.Visible THEN RETURN ' ' IF $hColumnView.Find(Mouse.X, Mouse.Y) THEN RETURN ' DEBUG $hColumnView.Item.Text ' ' END Private Function IconSize_Read() As Integer Return $iIconSize End Private Sub IconSize_Write(Value As Integer) $iIconSize = Value $bRefreshIcon = True RefreshViewLater $hIconView.GridSize = Min(40, (Value + 8) \ 3) End Public Sub SelectAll() If $hIconView.Mode <> Select.Multiple Then Return EnsureRefresh GetView().SelectAll() End Public Sub UnselectAll() If $hIconView.Mode <> Select.Multiple Then Return GetView().UnselectAll() End Private Function Background_Read() As Integer Return $hColumnView.Background End Private Sub Background_Write(Value As Integer) $hIconView.Background = Value $hColumnView.Background = Value End Private Function Foreground_Read() As Integer Return $hColumnView.Foreground End Private Sub Foreground_Write(Value As Integer) $hIconView.Foreground = Value $hColumnView.Foreground = Value End Private Function ShowPreview_Read() As Boolean Return $bShowPreview End Private Sub ShowPreview_Write(Value As Boolean) If $bShowPreview = Value Then Return $bShowPreview = Value $bRefreshIcon = True RefreshViewLater End Public Sub Rename() Dim hView As Object = GetView() Dim sPath As String Try sPath = hView.Current.Key If sPath Then hView[sPath].Rename Endif End Public Sub View_Cancel() Reload End Public Sub View_Rename() Dim hView As Object = GetView() Dim sKey As String = hView.Item.Key Dim sOldPath As String = GetCurrentDir() &/ Mid$(sKey, 2) Dim sNewName As String = hView.Item.Text Dim sMsg As String If sNewName = File.Name(sOldPath) Then Return sMsg = Help.CheckFileName(sNewName) If sMsg Then 'Balloon.Warning(sMsg, hView, hView.Item.X + Min(32 + Desktop.Scale * 8, hView.Item.W) / 2, hView.Item.Y + hView.Item.H / 2) Stop Event Return Endif Move sOldPath To File.SetName(sOldPath, sNewName) 'sParent = File.Dir(sKey) ' TODO: Optimization Object.Lock(hView) hView.Remove(sKey) Mid$(sKey, 2) = sNewName 'AddDir(File.Dir(sKey), File.Name(sKey)) RefreshView Object.Unlock(hView) Try hView.Key = sKey Catch hView[sKey].Text = File.Name(sOldPath) Message.Error(("Cannot rename file.") & "\n\n" & Error.Text) End Private Sub GetWatchKey() As String If Watch.IsDir Then Return PREFIX_DIR & Watch.Name Else Return PREFIX_FILE & Watch.Name Endif End Public Sub Watch_Create() DirCache[GetCurrentDir()].Invalidate RefreshViewLater End Public Sub Watch_Delete() DirCache[GetCurrentDir()].Invalidate Try GetView().Remove(GetWatchKey()) If Not Error Then RefreshViewLater End Public Sub Watch_MoveFrom() DirCache[GetCurrentDir()].Invalidate Try GetView().Remove(GetWatchKey()) If Not Error Then RefreshViewLater End Public Sub Watch_MoveTo() DirCache[GetCurrentDir()].Invalidate RefreshViewLater End Public Sub Watch_Stat() RefreshViewLater End Public Sub Watcher_Hide() 'Debug $hWatch = Null $bVisible = False End Public Sub Watcher_Show() 'Debug $bVisible = True RefreshViewLater End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/FileView/Help.module000066400000000000000000000031221411575327000242470ustar00rootroot00000000000000' Gambas module file Public Sub GotoNext(hCtrl As Control, Optional bSelect As Boolean) Dim hTextBox As TextBox hCtrl = hCtrl.Next If hCtrl And If Object.Type(hCtrl) <> "TextBox" Then hCtrl = hCtrl.Next Endif If hCtrl Then hTextBox = hCtrl hCtrl.SetFocus hCtrl.Pos = 0 If bSelect Then hCtrl.SelectAll Endif End Public Sub GotoPrevious(hCtrl As Control, Optional bSelect As Boolean) Dim hTextBox As TextBox hCtrl = hCtrl.Previous If hCtrl And If Object.Type(hCtrl) <> "TextBox" Then hCtrl = hCtrl.Previous Endif If hCtrl Then hTextBox = hCtrl hCtrl.SetFocus hCtrl.Pos = hCtrl.Length If bSelect Then hCtrl.SelectAll Endif End Public Sub ManageKeyPress(sCar As String, aTextBox As Object[]) Dim hLast As TextBox = Last If Asc(Key.Text) >= 32 And Asc(Key.Text) < 127 Then If Not IsDigit(Key.Text) Then If InStr(sCar, Key.Text) Then Help.GotoNext(Last) Endif Stop Event Return Endif Else If Key.Code = Key.Home Then aTextBox[0].SelectAll aTextBox[0].SetFocus Stop Event Else If Key.Code = Key.End Then aTextBox[2].SelectAll aTextBox[2].SetFocus Stop Event Else If Key.Code = Key.Left Then If hLast.Pos = 0 Then GotoPrevious(Last) Else If Key.Code = Key.Right Then If hLast.Pos = hLast.Length Then GotoNext(Last) Endif End Public Sub CheckFileName(sName As String) As String If Not sName Then Return ("A file or directory name cannot be void.") If InStr(sName, "/") Then Return ("The '/' character is forbidden inside file or directory names.") End gambas-3.16.3/comp/src/gb.gui.base/.src/Test/TestMessage.module000066400000000000000000000013221411575327000240710ustar00rootroot00000000000000' Gambas module file Use "gb.form" Use "gb.form.stock" Public Sub Main() ' Print Message.Question("Ceci est un message d'avertissement dont le texte est tout spécialement long afin de tester la boite de dialogue. Toutes les modifications non enregistrées seront perdues !", "Sauvegarder", "Envoyer", "Annuler") Message("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12") Return Dim p As String p = "

      Desktop Properties


      " p &= "
      Size: " & Desktop.Width & " x " & Desktop.Height & "" p &= "
      Resolution DPI: " & Desktop.Resolution & "" p &= "
      Font pixels: " & Desktop.Scale & "" p &= "
      Charset: " & Desktop.Charset & "" Message.Info(p) End gambas-3.16.3/comp/src/gb.gui.base/.src/TextLabel.class000066400000000000000000000017031411575327000224350ustar00rootroot00000000000000' Gambas class file ''' This class implements a control displaying simple HTML text, as known as rich text. ''' ''' See [/doc/richtext] for the list of HTML markup you are allowed to use inside rich text. ''' ''' [[ info ''' @{since 3.16} ''' ''' This control has been rewritten in Gambas since 3.16 version. ''' ]] Export Inherits Label Public Const _Properties As String = "*,-Alignment,Alignment{Align.*}=TopNormal,Wrap=True" '' Return or set if text wrapping is enabled. Property Wrap As Boolean Private $hObj As Watcher '' Create a new TextLabel Public Sub _new() $hObj = New Watcher(Me) As "Watcher" End Private Function Wrap_Read() As Boolean Return Me._Wrap End Private Sub Wrap_Write(Value As Boolean) If Me._Wrap = Value Then Return Me._Wrap = Value Me._UpdateSize() If Value Then $hObj = New Watcher(Me) As "Watcher" Else $hObj = Null Endif End Public Sub Watcher_Resize() Me._UpdateSize() End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/000077500000000000000000000000001411575327000212535ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/ColumnView.class000066400000000000000000000111511411575327000243710ustar00rootroot00000000000000' Gambas class file Export Inherits _TreeView Public Const _Properties As String = "*,Mode{Select.*}=Single,Sorted,Editable,Header=True,Resizable=False,AutoResize=True,Border=True,ScrollBar{Scroll.*}=Both,ShowLines,ShowCheck" Public Const _Group As String = "View" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "16,16" Public Const _Similar As String = "ListView" Property Layout As Variant Property Header As Boolean Property Resizable As Boolean Property AutoResize As Boolean Property Read Columns As _ColumnView_Columns Property Settings As String Property ShowLines As Boolean Private $hView As GridView Private $hColumns As _ColumnView_Columns Public Sub _new() $hView = Me.Proxy Me.Header = True Me.Resizable = False $hColumns = New _ColumnView_Columns As "Columns" End Public Sub Add((Key) As String, Text As String, Optional (Picture) As Picture, Optional Parent As String, Optional After As String) As _TreeView_Item Return Super._Add(Key, Text, Picture, Parent, After) End Private Function Header_Read() As Boolean Return $hView.Header End Private Sub Header_Write(Value As Boolean) $hView.Header = If(Value, GridView.Horizontal, GridView.None) End Private Function Resizable_Read() As Boolean Return $hView.Resizable End Private Sub Resizable_Write(Value As Boolean) $hView.Resizable = Value End Private Function AutoResize_Read() As Boolean Return $hView.AutoResize End Private Sub AutoResize_Write(Value As Boolean) $hView.AutoResize = Value End Private Function Columns_Read() As _ColumnView_Columns Return $hColumns End Private Function Settings_Read() As String Dim sVal As String Dim iCol As Integer With Me sVal = CStr(.Columns.Count) For iCol = 0 To .Columns.Count - 1 'sVal &= "," & "\"" & Quote(.Columns[iCol].Text) & "\"" sVal &= "," & CStr(Round(.Columns[iCol].Width / Desktop.Scale, -3)) Select Case .Columns[iCol].Alignment Case Align.Left sVal &= ",<" Case Align.Right sVal &= ",>" End Select If .Columns.Sort = iCol Then If .Columns.Ascending Then sVal &= ",+" Else sVal &= ",-" Endif Endif Next End With 'DEBUG sVal Return sVal End Private Sub Settings_Write(Value As String) Dim aVal As String[] Dim iInd As Integer Dim iCol As Integer Dim eWidth As Float[] Dim eSum As Float 'DEBUG sSettings aVal = Split(Value, ",", "\"") With Me .Columns.Count = CInt(aVal[0]) eWidth = New Float[.Columns.Count] Inc iInd While iCol < .Columns.Count If iInd >= aVal.Count Then Break 'DEBUG iCol;; "=";; CFloat(aVal[iInd]) eWidth[iCol] = CFloat(aVal[iInd]) * Desktop.Scale eSum += eWidth[iCol] Inc iInd Do If iInd >= aVal.Count Then Break Select Case aVal[iInd] Case "<" .Columns[iCol].Alignment = Align.Left Case ">" .Columns[iCol].Alignment = Align.Right Case "+" .Columns.Sort = iCol .Columns.Ascending = True Case "-" .Columns.Sort = iCol .Columns.Ascending = False Case Else Break End Select Inc iInd Loop Inc iCol Wend iCol = 0 While iInd < aVal.Count And iCol < .Columns.Count .Columns[iCol].Text = UnQuote(aVal[iInd]) Inc iCol Inc iInd Wend If eSum > 0 Then For iCol = 0 To .Columns.Count - 1 .Columns[iCol].Width = eWidth[iCol] * .ClientW / eSum Next ' ELSE ' FOR iCol = 0 TO .Columns.Count - 1 ' .Columns[iCol].Width = eWidth[iCol] ' 'DEBUG iCol;; ":";; .Columns[iCol].Width / Desktop.Scale ' NEXT Endif 'DEBUG sSettings;; "->";; hColumnView.Settings End With Catch Debug Error.Where; ": "; Error.Text End Public Sub AddColumn(Text As String, Optional Width As Integer, Alignment As Integer = Align.Normal) As _GridView_Column Dim hCol As _GridView_Column Inc $hColumns.Count hCol = $hColumns[$hColumns.Max] hCol.Text = Text If Width < 0 Then hCol.Expand = True Else If Width Then hCol.Width = Width Endif hCol.Alignment = Alignment Return hCol End Private Function Layout_Read() As Variant Return Super._GetLayout() End Private Sub Layout_Write(Value As Variant) Super._SetLayout(Value) End Private Function ShowLines_Read() As Boolean Return Super._GetShowLines() End Private Sub ShowLines_Write(Value As Boolean) Super._SetShowLines(Value) End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/ListView.class000066400000000000000000000010311411575327000240430ustar00rootroot00000000000000' Gambas class file Export Inherits _TreeView Public Const _Properties As String = "*,Mode{Select.*}=Single,Sorted,Editable,Border=True,ScrollBar{Scroll.*}=Both,ShowCheck" Public Const _Group As String = "View" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "16,16" Public Const _Similar As String = "ListView" Public Sub Add((Key) As String, Text As String, Optional (Picture) As Picture, Optional After As String) As _TreeView_Item Return Super._Add(Key, Text, Picture, "", After) End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/RenameBox.class000066400000000000000000000025461411575327000241710ustar00rootroot00000000000000' Gambas class file Inherits Panel Property Text As String Property Alignment As Integer Private $hTextArea As TextArea Private $iPadding As Integer Public Sub _new(iPadding As Integer, bWrap As Boolean) $iPadding = Max(0, iPadding - 1) Me.Ignore = True Me.Border = Border.Plain Me.Background = Color.TextBackground $hTextArea = New TextArea(Me) As "TextArea" $hTextArea.ScrollBar = Scroll.None $hTextArea.Wrap = bWrap $hTextArea.Border = False $hTextArea.Background = Color.TextBackground Me.Proxy = $hTextArea End Private Function Text_Read() As String Return $hTextArea.Text End Private Sub Text_Write(Value As String) $hTextArea.Font = Me.Parent.Font $hTextArea.Text = Value $hTextArea.SelectAll End Private Function Alignment_Read() As Integer Return $hTextArea.Alignment End Private Sub Alignment_Write(Value As Integer) $hTextArea.Alignment = Value End Public Sub TextArea_Change() ResizeTextArea End Public Sub TextArea_GotFocus() ResizeTextArea End Private Sub ResizeTextArea() Dim Y As Integer Dim H As Integer If $hTextArea.Wrap Then Y = 1 'Max(1, (Me.H - $hTextArea.Font.TextHeight($hTextArea.Text)) \ 2) H = Me.H - Y * 2 Else Y = Max(1, (Me.H - $hTextArea.Font.TextHeight($hTextArea.Text)) \ 2) H = Me.H - Y * 2 Endif $hTextArea.Move(2, Y, Me.W - 4, H) End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/TreeView.class000066400000000000000000000020501411575327000240310ustar00rootroot00000000000000' Gambas class file Export Inherits _TreeView Public Const _Properties As String = "*,Mode{Select.*}=Single,Sorted,Editable,Border=True,ScrollBar{Scroll.*}=Both,ShowLines,ShowCheck" Public Const _Group As String = "View" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "16,16" Public Const _Similar As String = "ListView" '' @{since 3.11} '' '' Return or set the TreeView layout. '' '' The layout defines which items are expanded. Property Layout As Variant Property ShowLines As Boolean Public Sub Add((Key) As String, Text As String, Optional (Picture) As Picture, Optional Parent As String, Optional After As String) As _TreeView_Item Return Super._Add(Key, Text, Picture, Parent, After) End Private Function Layout_Read() As Variant Return Super._GetLayout() End Private Sub Layout_Write(Value As Variant) Super._SetLayout(Value) End Private Function ShowLines_Read() As Boolean Return Super._GetShowLines() End Private Sub ShowLines_Write(Value As Boolean) Super._SetShowLines(Value) End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/TreeViewSelection.class000066400000000000000000000037521411575327000257110ustar00rootroot00000000000000' Gambas class file Inherits GridViewSelection Event _Fake Public Keys As New Collection Public Sub Copy() As GridViewSelection Dim hSel As TreeViewSelection = New TreeViewSelection hSel.Keys = Keys.Copy() Object.Attach(hSel, GetParent(), "TreeViewSelection") Return hSel End Public Sub Save() As Variant Return Keys.Copy() End Public Sub Restore(vSel As Variant) Keys = vSel.Copy() End Private Sub GetParent() As _TreeView Return Object.Parent(Me) End Public Sub Select(iStart As Integer, Optional iLength As Integer = 1) Dim hParent As _TreeView = GetParent() Dim I As Integer Dim hItem As _TreeView_Item For I = iStart To iStart + iLength - 1 hItem = hParent._RowToItem(I) If Not hItem Then Break Keys[hItem.Key] = True Next End Public Sub SelectItem(sKey As String, bSelected As Boolean) If bSelected Then Keys[sKey] = True Else Keys.Remove(sKey) Endif End Public Sub UnSelect(iStart As Integer, Optional iLength As Integer = 1) Dim hParent As _TreeView = GetParent() Dim I As Integer Dim hItem As _TreeView_Item For I = iStart To iStart + iLength - 1 hItem = hParent._RowToItem(I) If Not hItem Then Break Keys.Remove(hItem.Key) Next End Public Sub UnSelectAll() Keys.Clear 'Dump End Public Sub SelectAll((nRows) As Integer) Dim sKey As String Keys.Clear For Each sKey In GetParent().Keys Keys[sKey] = True Next End Public Sub IsItemSelected(sKey As String) As Boolean Return Keys.Exist(sKey) End Public Sub IsSelected(iIndex As Integer) As Boolean Dim hParent As _TreeView = GetParent() Dim hItem As _TreeView_Item hItem = hParent._RowToItem(iIndex) If hItem Then Return Keys.Exist(hItem.Key) End Public Function _GetSelectedRows((iCount) As Integer) As Integer[] End Public Sub InsertRows((iStart) As Integer, (iLength) As Integer) End Public Sub RemoveRows((iStart) As Integer, (iLength) As Integer) End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/_ColumnView_Columns.class000066400000000000000000000016741411575327000262410ustar00rootroot00000000000000' Gambas class file Export Property Count As Integer Property Read Max As Integer Property Sort As Integer Property Ascending As Boolean Event _Refresh Private Sub GetView() As GridView Dim hTree As _TreeView = Object.Parent(Me) Return hTree.Children[0] End Public Sub _get(Index As Integer) As _GridView_Column Return GetView().Columns[Index] End Private Function Count_Read() As Integer Return GetView().Columns.Count End Private Sub Count_Write(Value As Integer) GetView().Columns.Count = Max(1, Value) End Private Function Sort_Read() As Integer Return GetView().Columns.Sort End Private Sub Sort_Write(Value As Integer) GetView().Columns.Sort = Value End Private Function Ascending_Read() As Boolean Return GetView().Columns.Ascending End Private Sub Ascending_Write(Value As Boolean) GetView().Columns.Ascending = Value End Private Function Max_Read() As Integer Return Count_Read() - 1 End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/_TreeView.class000066400000000000000000001130661411575327000242020ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Property Read Count As Integer Property Mode As Integer Property ScrollBar As Integer Property Border As Boolean Property Sorted As Boolean Property Read Current As _TreeView_Item Property Key As String '' @{since 3.12} '' '' Return a list of all items keys Property Read Keys As String[] Property Read Item As _TreeView_Item Property Read Available As Boolean Property Read Renaming As Boolean Property Editable As Boolean Property Compare As Integer Property Selection As String[] '' @{since 3.15} '' '' Return or set if selection is indicated by check boxes and radio buttons, or by highlighting the items. '' '' Check boxes are used in multiple selection mode, radio buttons in single selection mode. Property ShowCheck As Boolean Property Read ClientWidth, ClientW As Integer Property Read ClientHeight, ClientH As Integer Property ScrollX As Integer Property ScrollY As Integer Property Read ScrollW, ScrollWidth As Integer Property Read ScrollH, ScrollHeight As Integer '' @{since 3.16} '' '' Return the size of tree indentation in pixels. Property Read Indent As Integer Event Click Event Activate Event Select Event Expand Event Collapse Event Rename Event Cancel Event Compare(Key As String, OtherKey As String) '' @{since 3.12} '' '' This event is raised before automatically sorting the items Event BeforeSort '' @{since 3.14} '' '' This event is raised when the view scrolls. Event Scroll '' {@since 3.16} '' '' This event allows to customize the drawing of a specific item. '' '' - ~X~, ~Y~, ~Width~ and ~Height~ define the rectangle enclosing the item. '' - ~Key~ is the item key. '' - ~Column~ is the item column to draw in case of a ColumnView. For a TreeView or a ListView, it is always '0'. '' '' This event is called just before drawing the item, and if the event is stopped, the default item drawing routine is ignored. Event Draw(X As Integer, Y As Integer, Width As Integer, Height As Integer, Key As String, Column As Integer) Static Private $iNoEvent As Integer Private $hView As GridView Private $cItem As New Collection Private $hRoot As _TreeView_Item Private $sLastKey As String Private $hResizeColumnTimer As Timer Private $sCursor As String Private $sSaveCursor As String Private $iLastRow As Integer = -2 Private $iCompare As Integer Private $bEditable As Boolean Private $hRenameBox As RenameBox Private $sKeyRenaming As String Private $iColRenaming As Integer Private $bSorted As Boolean Private $cSort As Collection Private $bSortRoot As Boolean Private $hSortTimer As Timer Private $bNoRoot As Boolean Private $iLock As Integer Private $hSelection As TreeViewSelection Private $iSaveSelection As Integer Private $vSaveSelection As Variant Private $iDepthW As Integer Private $bShowLines As Boolean Private $bShowCheck As Boolean Public Sub _new() $hView = New GridView(Me) As "GridView" $hView.Columns.Count = 1 $hView.Mode = Select.Single $hView.Grid = False $hView.AutoResize = True $hView.Name = Me.Name & ":gridview" $hView.Rows.H = GetDefaultItemHeight() $hView.Padding = Desktop.Scale \ 2 $hSelection = New TreeViewSelection As "TreeViewSelection" $hView.Rows._SetSelection($hSelection) '$hView.ShowCursor = True Me.Proxy = $hView $bNoRoot = Me Is ListView GridView_Font $hRoot = New _TreeView_Item("", "") As "Item" End Public Sub _get((Key) As String) As _TreeView_Item If Not Key Then Error.Raise("Null key") If Not $cItem.Exist(Key) Then Error.Raise("Unknown item: " & Key) Return $cItem[Key] End Public Sub Clear() Cancel() $cItem.Clear If $cSort Then $cSort.Clear $hSelection.UnSelectAll() $bSortRoot = False $iLastRow = -2 $sLastKey = "" $sCursor = "" $hRoot = New _TreeView_Item("", "") As "Item" $hView.Rows.Count = 0 End Private Sub ResizeColumns() If Not $hView.AutoResize Then Return If Not $hResizeColumnTimer Then $hResizeColumnTimer = New Timer As "ResizeColumns" $hResizeColumnTimer.Trigger Endif End Public Sub _SortParent(sKey As String) If sKey Then $cSort[sKey] = True Else $bSortRoot = True Endif If Not $hSortTimer Then $hSortTimer = New Timer As "Sort" $hSortTimer.Trigger Endif End Public Sub _Add((Key) As String, Text As String, Optional (Picture) As Picture, Optional Parent As String, Optional After As String) As _TreeView_Item Dim hItem, hParent As _TreeView_Item If $hRenameBox Then Cancel() If Not Key Then Error.Raise("Null key") If $cItem.Exist(Key) Then Error.Raise("Key already used: " & Key) If Parent And If Not $cItem.Exist(Parent) Then Error.Raise("Parent item does not exist: " & Parent) If After And If Not $cItem.Exist(After) Then Error.Raise("After item does not exist: " & After) hItem = New _TreeView_Item(Key, Parent) As "Item" $cItem[Key] = hItem If Parent Then hParent = $cItem[Parent] Else hParent = $hRoot Endif hParent._AddChild(Key) Inc $iLock hItem._Index = hParent.Count - 1 hItem.Editable = $bEditable hItem.Text = Text hItem.Picture = Picture Dec $iLock If After Then If _MoveItem(hItem, After, False) Then _UpdateItemHeight(hItem) Else _UpdateItemHeight(hItem, True) Endif ResizeColumns If $bSorted Then _SortParent(Parent) $sCursor = Key _RefreshView Return hItem End Public Sub _GetParentItem(hItem As _TreeView_Item) As _TreeView_Item If hItem.ParentKey Then Return $cItem[hItem.ParentKey] Else If Not hItem._IsRoot() Then Return $hRoot Endif End Private Sub RemoveRec((Key) As String, Optional bDoNotDestroy As Boolean) Dim hItem As _TreeView_Item Dim hParent As _TreeView_Item Dim sKey As String hItem = $cItem[Key] If Not bDoNotDestroy And If hItem.Count Then For Each sKey In hItem._GetChildren().Copy() RemoveRec(sKey) Next Endif hParent = _GetParentItem(hItem) hParent._RemoveChild(hItem) While hParent.Expanded Dec hParent._Rows If hParent._IsRoot() Then Break hParent = $cItem[hParent.ParentKey] If Not hParent Then hParent = $hRoot Wend If Not bDoNotDestroy Then $cItem.Remove(Key) $hSelection.SelectItem(Key, False) Endif End Public Sub Remove((Key) As String) Dim sCurrent As String Dim iRow As Integer Dim hItem As _TreeView_Item If $hRenameBox Then Cancel() If Not Key Then Error.Raise("Null key") hItem = $cItem[Key] If Not hItem Then Error.Raise("Unknown item: " & Key) _SaveSelection iRow = _ItemToRow(hItem) sCurrent = Key_Read() RemoveRec(Key) _AddCount(0) _UpdateCurrent(sCurrent) ResizeColumns If iRow >= 0 Then UpdateRowHeight(Null, iRow, -1) _RestoreSelection _RefreshView End Public Sub _ReparentItem(hItem As _TreeView_Item, Parent As String) Dim hParent, hCheck As _TreeView_Item Dim sKey As String Dim sCurrent As String Dim bExpanded As Boolean If Not Parent Then hParent = $hRoot Else hParent = $cItem[Parent] If Not hParent Then Error.Raise("Unknown parent item: " & Parent) Endif If hItem.ParentKey = Parent Then Return sCurrent = Key_Read() hCheck = hParent While hCheck If hCheck = hItem Then Error.Raise("New parent cannot be a child item") sKey = hCheck.ParentKey If Not sKey Then Break hCheck = $cItem[sKey] Wend Inc $iLock bExpanded = hItem.Expanded hItem.Expanded = False sKey = hItem.Key RemoveRec(sKey, True) _AddCount(0) _GetParentItem(hItem)._ComputeGrandChildren() hParent._AddChild(sKey) hItem._Index = hParent.Count - 1 hItem._SetParent(Parent) hItem._ComputeRows(1) hParent._ComputeGrandChildren() hItem.Expanded = bExpanded Dec $iLock _UpdateItemHeight(hItem, True) If $bSorted Then _SortParent(Parent) ResizeColumns _RefreshView _UpdateCurrent(sCurrent) End Private Sub GetNextItem(hItem As _Treeview_Item) As _TreeView_Item Dim hParent As _TreeView_Item Dim aChildren As String[] Dim iPos As Integer If hItem.Count And If hItem.Expanded Then aChildren = hItem._GetChildren() Return $cItem[aChildren[0]] Endif Do hParent = _GetParentItem(hItem) aChildren = hParent._GetChildren() iPos = hItem._Index 'aChildren.Find(hItem.Key) If iPos < aChildren.Max Then Return $cItem[aChildren[iPos + 1]] If hParent._IsRoot() Then Return hItem = hParent Loop End Private Sub GetPreviousItem(hItem As _Treeview_Item) As _TreeView_Item Dim hParent As _TreeView_Item Dim aChildren As String[] If hItem._Index = 0 Then Return $cItem[hItem.ParentKey] hParent = _GetParentItem(hItem) aChildren = hParent._GetChildren() hItem = $cItem[aChildren[hItem._Index - 1]] Do If Not hItem.Expanded Or If hItem.Count = 0 Then Return hItem hItem = $cItem[hItem._GetChildren()[hItem.Count - 1]] Loop End Public Sub _RowToItem(iRow As Integer) As _TreeView_Item Dim hParent As _TreeView_Item Dim hChild As _TreeView_Item Dim sKey As String Dim aChildren As String[] If iRow < 0 Or If iRow >= $hView.Rows.Count Then Return 'Print iRow;; $iLastRow If $sLastKey Then hChild = $cItem[$sLastKey] If iRow = $iLastRow Then Return hChild If iRow = ($iLastRow + 1) Then $iLastRow = iRow hChild = GetNextItem(hChild) $sLastKey = hChild.Key Return hChild Endif If iRow = ($iLastRow - 1) Then $iLastRow = iRow hChild = GetPreviousItem(hChild) $sLastKey = hChild.Key Return hChild Endif hParent = $hRoot $iLastRow = iRow Do If hParent._GrandChildren = 0 Then aChildren = hParent._GetChildren() sKey = aChildren[iRow] $sLastKey = sKey Return $cItem[sKey] Else For Each sKey In hParent._GetChildren() hChild = $cItem[sKey] If iRow = 0 Then $sLastKey = sKey Return hChild Endif If iRow < hChild._Rows Then Dec iRow hParent = hChild Break Endif iRow -= hChild._Rows Next Endif Loop End Public Sub _ItemToRow(hItem As _TreeView_Item) As Integer Dim hParent As _TreeView_Item Dim iRow As Integer Dim sItemKey As String Dim sKey As String Dim iPos As Integer If Not hItem Then Debug System.Backtrace.Join(" ") If hItem._IsRoot() Then Return -1 sItemKey = hItem.Key hParent = _GetParentItem(hItem) If hParent._IsRoot() Then iRow = -1 Else If Not hParent.Expanded Then Return -1 iRow = _ItemToRow(hParent) If iRow < 0 Then Return iRow Endif Inc iRow If hParent._GrandChildren = 0 Then iPos = hParent._GetChildren().Find(sItemKey) If iPos >= 0 Then iRow += iPos Return iRow Endif Else For Each sKey In hParent._GetChildren() If sKey = sItemKey Then 'Debug sKey; " -> "; iRow Return iRow Endif hItem = $cItem[sKey] iRow += hItem._Rows Next Endif Return -1 End Public Sub _GetItemX(hItem As _TreeView_Item) As Integer Dim X As Integer X = hItem._Depth * $iDepthW If Not $bNoRoot Then X += $iDepthW Return X End Private Sub GetDefaultItemHeight() As Integer Return Me.Font.Height + (Desktop.Scale \ 4) * 2 + 2 End Public Sub GridView_Data(Row As Integer, (Column) As Integer) Dim hItem As _TreeView_Item = _RowToItem(Row) If Not hItem Then Return $hView.Data.Background = hItem.Background End Public Sub GridView_Draw(X As Integer, Y As Integer, W As Integer, H As Integer, Row As Integer, Column As Integer) Dim hItem As _TreeView_Item = _RowToItem(Row) Dim sText As String Dim XA As Float Dim YA As Float Dim WA As Float Dim HA As Float Dim bHasNext As Boolean Dim hParent As _TreeView_Item Dim bStopEvent As Boolean If Not hItem Then Return bStopEvent = Raise Draw(X, Y, W, H, hItem.Key, Column) If bStopEvent Then Stop Event Return Endif If Column = 0 Then If System.RightToLeft Then W -= hItem._Depth * $iDepthW + $iDepthW If Not $bNoRoot Then Paint.Save If $bShowLines And If hItem._Depth Then Paint.Background = Color.SetAlpha(Color.LightForeground, 128) bHasNext = GetSibling(hItem.Key, 1) If hItem.Count Then Paint.MoveTo(X + W + $iDepthW, Y + H / 2) Else Paint.MoveTo(X + W + $iDepthW / 4, Y + H / 2) Endif Paint.LineTo(X + W + $iDepthW + $iDepthW / 2, Y + H / 2) Paint.RelMoveTo(0, -H) Paint.RelLineTo(0, H) If bHasNext Then Paint.RelLineTo(0, H) XA = X + W + $iDepthW + $iDepthW / 2 hParent = hItem While hParent.ParentKey hParent = $cItem[hParent.ParentKey] XA += $iDepthW If GetSibling(hParent.Key, 1) Then Paint.MoveTo(XA, Y - H / 2) Paint.RelLineTo(0, H * 2) Endif Wend Paint.AntiAlias = False Paint.LineWidth = 1 Paint.Stroke Paint.AntiAlias = True Endif If hItem.Count Then HA = H / 2 If HA < Desktop.Scale Then HA = Min(H, Desktop.Scale) WA = HA XA = X + W + ($iDepthW + WA) / 4 YA = Y + CInt(H - HA) \ 2 Paint.Arrow(XA, YA, WA, HA, If(hItem.Expanded, Align.Bottom, Align.Left)) Paint.Background = Color.SetAlpha(Style.ForegroundOf($hView), 64) Paint.LineWidth = $iDepthW / 12 Paint.LineCap = Paint.LineCapRound Paint.Stroke Endif Paint.Restore W -= $iDepthW Endif If $bShowCheck And If $hView.Mode Then ' If hItem.Selected Then ' XA = X + W + $iDepthW / 4 ' YA = Y + $iDepthW / 4 ' WA = $iDepthW / 2 ' HA = H - $iDepthW / 2 ' Paint.Background = Color.SetAlpha(Style.ForegroundOf($hView), 64) ' Paint.LineWidth = $iDepthW / 12 ' Paint.LineCap = Paint.LineCapSquare ' Paint.Check(XA, YA, WA, HA) ' Paint.Stroke ' Endif ' Paint.DrawRect(X + W, Y, H, H, Color.SetAlpha(Style.ForegroundOf($hView), 64), $iDepthW / 18) If $hView.Mode = Select.Single Then Style.PaintOption(X + W, Y, H, H, hItem.Selected) Else Style.PaintCheck(X + W, Y, H, H, hItem.Selected) Endif W -= $iDepthW + Desktop.Scale \ 2 Endif If hItem.Picture Then 'W -= hItem.Picture.W Paint.DrawPicture(hItem.Picture, X + W, Y + (H - hItem.Picture.H) / 2) W -= Desktop.Scale \ 2 Endif Else X += hItem._Depth * $iDepthW If Not $bNoRoot Then Paint.Save If $bShowLines And If hItem._Depth Then Paint.Background = Color.SetAlpha(Color.LightForeground, 128) bHasNext = GetSibling(hItem.Key, 1) If hItem.Count Then Paint.MoveTo(X, Y + H / 2) Else Paint.MoveTo(X + $iDepthW - $iDepthW / 4, Y + H / 2) Endif Paint.LineTo(X - $iDepthW / 2, Y + H / 2) Paint.RelMoveTo(0, -H) Paint.RelLineTo(0, H) If bHasNext Then Paint.RelLineTo(0, H) XA = X - $iDepthW / 2 hParent = hItem While hParent.ParentKey hParent = $cItem[hParent.ParentKey] XA -= $iDepthW If GetSibling(hParent.Key, 1) Then Paint.MoveTo(XA, Y - H / 2) Paint.RelLineTo(0, H * 2) Endif Wend Paint.AntiAlias = False Paint.LineWidth = 1 Paint.Stroke Paint.AntiAlias = True Endif If hItem.Count Then Paint.Background = Color.LightForeground 'HA = H / 2 'If HA < Desktop.Scale Then HA = Min(H, Desktop.Scale) WA = Min(H, $iDepthW \ 2) HA = WA XA = X + ($iDepthW - WA) / 2 YA = Y + (H - HA) / 2 Paint.LineWidth = HA / 6 Paint.Arrow(XA, YA, WA, HA, If(hItem.Expanded, Align.Bottom, Align.Right)) Paint.Background = Color.SetAlpha(Style.ForegroundOf($hView), 64) Paint.LineCap = Paint.LineCapRound Paint.Stroke Endif Paint.Restore X += $iDepthW Endif If $bShowCheck And If $hView.Mode Then ' If hItem.Selected Then ' XA = X + $iDepthW / 4 ' YA = Y + $iDepthW / 4 ' WA = H - $iDepthW / 2 ' HA = H - $iDepthW / 2 ' Paint.Background = Color.SetAlpha(Style.ForegroundOf($hView), 64) ' Paint.LineWidth = $iDepthW / 12 ' Paint.LineCap = Paint.LineCapSquare ' Paint.Check(XA, YA, WA, HA) ' Paint.Stroke ' Endif ' Paint.DrawRect(X, Y, H, H, Color.SetAlpha(Style.ForegroundOf($hView), 64), $iDepthW / 18) 'Paint.FillRect(X, Y, H, H, Color.Yellow) If $hView.Mode = Select.Single Then Style.PaintOption(X, Y, H, H, hItem.Selected) Else Style.PaintCheck(X, Y, H, H, hItem.Selected) Endif X += $iDepthW + Desktop.Scale \ 2 Endif If hItem.Picture Then Paint.DrawPicture(hItem.Picture, X, Y + (H - hItem.Picture.H) / 2) X += hItem.Picture.W + Desktop.Scale \ 2 Endif Endif If hItem.Foreground <> Color.Default Then Paint.Background = hItem.Foreground Else Paint.Background = Style.ForegroundOf(Me) Endif If hItem.Font Then Paint.Font = hItem.Font 'Draw.Text(hItem.Text & " (" & hItem._Index & ") [" & hItem._Rows & "] {" & hItem._GrandChildren & "}", X, Y, W, H, $hView.Columns[Column].Alignment) sText = hItem.RichText If sText Then Paint.DrawRichText(sText, X, Y, 65536, H, Align.Normal) Else Paint.DrawText(hItem.Text, X, Y, W, H, Align.Normal) Endif Else If hItem.Foreground <> Color.Default Then Paint.Background = hItem.Foreground Paint.DrawText(hItem[Column], X, Y, W, H, $hView.Columns[Column].Alignment) Endif Stop Event End Public Sub _AddCount(iCount As Integer) $hRoot._Rows += iCount $hView.Rows.Count = $hRoot._Rows $iLastRow = -2 $sLastKey = "" End Public Sub GridView_Activate() Dim hItem As _TreeView_Item = _RowToItem($hView.Row) Dim bCancel As Boolean Dim sCursor As String If Not hItem Then Return ' The item may have been destroyed during the click event sCursor = $sCursor SetCursor(hItem.Key) bCancel = Raise Activate $sCursor = sCursor If bCancel Then Return hItem.Expanded = Not hItem.Expanded End Public Sub GridView_MouseDown() Dim iRow As Integer Dim hItem As _TreeView_Item Dim X As Integer Dim bCancel As Boolean Dim D As Integer If Mouse.Click > 1 Then Return bCancel = Raise MouseDown If bCancel Then Stop Event Return Endif iRow = $hView.RowAt(Mouse.Y) hItem = _RowToItem(iRow) If Not hItem Then Return If Mouse.Right And If Not $bShowCheck Then _SetItemSelected(hItem, True) '.Rows[iRow].Selected = True Endif If System.RightToLeft Then With $hView.Columns[0] X = .X + .W - hItem._Depth * $iDepthW - $iDepthW End With X -= $hView.Padding Else X = hItem._Depth * $iDepthW X += $hView.Padding Endif X -= $hView.ScrollX If Not $bNoRoot Then D = $iDepthW If Mouse.X < X + D Then If hItem.Count And If Not $bNoRoot And If Mouse.X >= X Then hItem.Expanded = Not hItem.Expanded Else $hView.Row = iRow Endif Stop Event Return Endif End Public Sub GridView_KeyPress() Dim hItem As _TreeView_Item If Key.Code = Key.F2 Then hItem = Current_Read() If hItem Then hItem.Rename Stop Event Endif Else If Key.Text = "+" Then hItem = Current_Read() If hItem Then hItem.Expanded = True Stop Event Endif Else If Key.Text = "-" Then hItem = Current_Read() If hItem Then hItem.Expanded = False Stop Event Endif Else If Key.Code = Key.Space Or If Key.Code = Key.Return Or If Key.Code = Key.Enter Then hItem = Current_Read() If hItem Then hItem.Expanded = Not hItem.Expanded Stop Event Endif Endif End Private Function Count_Read() As Integer Return $cItem.Count End Private Function Mode_Read() As Integer Return $hView.Mode End Private Sub Mode_Write(Value As Integer) $hView.Mode = Value End Private Function ScrollBar_Read() As Integer Return $hView.Scrollbar End Private Sub ScrollBar_Write(Value As Integer) $hView.Scrollbar = Value If Not Me Is ColumnView Then If $hView.ScrollBar And Scroll.Horizontal Then $hView.AutoResize = False Else $hView.AutoResize = True Endif Endif End Private Function Border_Read() As Boolean Return $hView.Border End Private Sub Border_Write(Value As Boolean) $hView.Border = Value End Private Function Sorted_Read() As Boolean Return $bSorted End Public Sub _RaiseCompare(sKey As String, sOtherKey As String) As Integer Dim bCancel As Boolean bCancel = Raise Compare(sKey, sOtherKey) Return bCancel End Private Sub SortItem(hItem As _TreeView_Item) Dim aChildren As String[] Dim aItem As _TreeView_Item[] Dim I As Integer Dim hTree As _TreeView If hItem.Count = 0 Then Return aChildren = hItem._GetChildren() aItem = New _TreeView_Item[aChildren.Count] For I = 0 To aItem.Max aItem[I] = $cItem[aChildren[I]] Next hTree = _TreeView_Item._Tree 'System._Breakpoint If Object.CanRaise(Me, "Compare") Then _TreeView_Item._Tree = Me Else _TreeView_Item._Tree = Null Endif aItem.Sort(If($hView.Columns.Ascending, gb.Ascent, gb.Descent)) _TreeView_Item._Tree = hTree For I = 0 To aItem.Max aChildren[I] = aItem[I].Key aItem[I]._Index = I Next _RefreshView For I = 0 To aItem.Max _UpdateItemHeight(aItem[I]) Next End Private Sub SortItemRec(hParent As _TreeView_Item) Dim sKey As String Dim hItem As _TreeView_Item If hParent.Count = 0 Then Return SortItem(hParent) For Each sKey In hParent._GetChildren() hItem = $cItem[sKey] If hItem.Count Then SortItemRec(hItem) Next End Private Sub Sorted_Write(Value As Boolean) $hView.Sorted = Value $bSorted = Value If $bSorted Then $cSort = New Collection GridView_Sort Else $cSort = Null Endif $bSortRoot = False End Public Sub ResizeColumns_Timer() $hResizeColumnTimer = Null If $cItem.Count = 0 Then Return If Not $hView.AutoResize Then Return If $hView.Columns.Count = 1 Then If ($hView.ScrollBar And Scroll.Horizontal) = 0 Then Return Endif GridView_ColumnSize(0) End Private Function Current_Read() As _TreeView_Item Return _RowToItem($hView.Row) End Private Function Key_Read() As String Dim hItem As _TreeView_Item = Current_Read() If hItem Then Return hItem.Key End Private Sub Key_Write(Value As String) Dim iRow As Integer If Not Value Or If Not $cItem.Exist(Value) Then $hView.Row = -1 Return Endif Try iRow = _ItemToRow($cItem[Value]) If Error Then Debug Error.Where; ": "; Error.Text Return Endif Try $hView.Row = iRow If Error Then $hView.Row = -1 End Public Sub _UpdateCurrent(sKey As String) If Not $cItem.Exist(sKey) Then Return Inc $iNoEvent Key_Write(sKey) Dec $iNoEvent End Public Sub GridView_Select() Dim sCursor As String If $iNoEvent Then Return If $hView.Row < 0 And If $hView.Mode <> Select.Multiple Then Return sCursor = $sCursor SetCursor(Key_Read()) '_RowToItem($hView.Row).Key) Raise Select $sCursor = sCursor End ' Public Sub ResizeRows_Timer() ' ' Dim iRow As Integer ' Dim hItem As _TreeView_Item ' Dim PH As Integer ' ' $hResizeRowsTimer = Null ' ' For Each hItem In $cResizeRows ' iRow = $cResizeRows.Key ' PH = _GetItemHeight(hItem) ' If PH <> $hView.Rows[iRow].H Then ' $hView.Rows[iRow].H = PH ' Endif ' Next ' ' $cResizeRows.Clear ' ' End Public Sub Exist((Key) As String) As Boolean Return $cItem.Exist(Key) End Public Sub GridView_Click() Dim sSave As String = $sCursor MoveCurrent() Raise Click $sCursor = sSave End Private Function Item_Read() As _TreeView_Item Return $cItem[$sCursor] End Public Sub _RaiseExpand(sKey As String, bExpand As Boolean) Dim sCursor As String = $sCursor $sCursor = sKey If bExpand Then Raise Expand Else Raise Collapse Endif $sCursor = sCursor ResizeColumns End Public Sub _EnsureVisible(hItem As _TreeView_Item, Optional bChild As Boolean) Dim iRow As Integer SetItemVisible(hItem) iRow = _ItemToRow(hItem) If bChild And If hItem._Rows > 1 Then iRow = Min(iRow + $hView.RowAt($hView.ClientH) - $hView.RowAt($hView.Columns.Height) - 2, iRow + hItem._Rows - 1) Endif If iRow >= 0 Then $hView[iRow, 0].EnsureVisible End Private Sub SetCursor(sKey As String) As Boolean If Not sKey Then $sSaveCursor = $sCursor $sCursor = sKey Return Not sKey End Public Sub MoveFirst() As Boolean Dim sKey As String Try sKey = $hRoot._GetChildren()[0] Return SetCursor(sKey) End Public Sub MoveLast() As Boolean Dim aChildren As String[] Dim sKey As String aChildren = $hRoot._GetChildren() Try sKey = aChildren[aChildren.Max] Return SetCursor(sKey) End Public Sub MoveBack() As Boolean Dim sKey As String sKey = $sSaveCursor $sSaveCursor = "" Return SetCursor(sKey) End Public Sub MoveCurrent() As Boolean Return SetCursor(Key_Read()) End Public Sub MoveTo((Key) As String) As Boolean If Not $cItem.Exist(Key) Then Key = "" Return SetCursor(Key) End Public Sub MoveAbove() As Boolean Dim sKey As String Dim hItem As _TreeView_Item hItem = $cItem[$sCursor] Try sKey = GetPreviousItem(hItem).Key Return SetCursor(sKey) End Public Sub MoveBelow() As Boolean Dim sKey As String Dim hItem As _TreeView_Item hItem = $cItem[$sCursor] Try sKey = GetNextItem(hItem).Key Return SetCursor(sKey) End Public Sub MoveChild() As Boolean Dim sKey As String Try sKey = $cItem[$sCursor]._GetChildren()[0] Return SetCursor(sKey) End Private Sub GetSibling(sKey As String, Optional iAdd As Integer) As String Dim hItem, hParent As _TreeView_Item Dim aChildren As String[] If Not sKey Then Return hItem = $cItem[sKey] hParent = _GetParentItem(hItem) aChildren = hParent._GetChildren() 'Try Return aChildren[aChildren.Find(hItem.Key) + iAdd] Try Return aChildren[hItem._Index + iAdd] End Public Sub MoveNext() As Boolean Return SetCursor(GetSibling($sCursor, 1)) End Public Sub MovePrevious() As Boolean Return SetCursor(GetSibling($sCursor, -1)) End Public Sub MoveParent() As Boolean Dim sKey As String Try sKey = $cItem[$sCursor].ParentKey Return SetCursor(sKey) End Private Function ClientWidth_Read() As Integer Return $hView.ClientW End Private Function ClientHeight_Read() As Integer Return $hView.ClientH End Private Function Available_Read() As Boolean Return $sCursor End Public Sub SelectAll() $hView.SelectAll End Public Sub UnselectAll() $hView.UnselectAll End Public Sub FindAt((X) As Integer, Y As Integer) As Boolean Dim iRow As Integer = $hView.RowAt(Y) If iRow < 0 Then Return True Return SetCursor(_RowToItem(iRow).Key) End Public Sub _MoveItem(hItem As _TreeView_Item, sKey As String, bBefore As Boolean) As Boolean Dim hParent As _TreeView_Item = _GetParentItem(hItem) Dim aChildren As String[] Dim iPos, iPosKey, iNewPos As Integer Dim iStart, I As Integer If $bSorted Then Return aChildren = hParent._GetChildren() 'iPos = aChildren.Find(hItem.Key) iPos = hItem._Index If iPos < 0 Then Return If sKey Then iPosKey = $cItem[sKey]._Index 'aChildren.Find(sKey) If iPosKey < 0 Then Return If iPos <= iPosKey Then Dec iPosKey Endif If sKey Then If Not bBefore Then iNewPos = iPosKey + 1 Else iNewPos = iPosKey Endif Else If bBefore Then iNewPos = aChildren.Count Else iNewPos = 0 Endif Endif If iPos = iNewPos Then Return True aChildren.Remove(iPos) aChildren.Add(hItem.Key, iNewPos) iStart = Min(iPos, iNewPos) For I = iStart To aChildren.Max hItem = $cItem[aChildren[I]] hItem._Index = I _UpdateItemHeight(hItem) Next _RefreshView End Public Sub _IsItemSelected(hItem As _TreeView_Item) As Boolean If $hView.Mode = Select.Single Then Return $hView.Row = _ItemToRow(hItem) Return $hSelection.IsItemSelected(hItem.Key) ' Dim iRow As Integer = _ItemToRow(hItem) ' Return $hView.Rows[iRow].Selected End Public Sub _SetItemSelected(hItem As _TreeView_Item, bSelected As Boolean) If $hView.Mode = Select.Single Then SetItemVisible(hItem) 'UnselectAll If bSelected Then $hView.Row = _ItemToRow(hItem) Else $hView.Row = -1 Endif Return Endif $hSelection.SelectItem(hItem.Key, bSelected) End Private Function Renaming_Read() As Boolean Return $hRenameBox End Private Function Editable_Read() As Boolean Return $bEditable End Private Sub Editable_Write(Value As Boolean) $bEditable = Value End Private Function Compare_Read() As Integer Return $iCompare End Private Sub Compare_Write(Value As Integer) $iCompare = Value End Private Sub UpdateRenameBox() As Boolean Dim hItem As _TreeView_Item Dim X As Integer Dim W As Integer If Not $hRenameBox Then Return hItem = $cItem[$sKeyRenaming] '' TODO: System.RightToLeft If $iColRenaming = 0 Then X = hItem.X - $hView.ScrollX If hItem.Picture Then X += hItem.Picture.W + Desktop.Scale \ 2 W = Min($hView.ClientW, $hView.Columns[0].Width) - X Else X = $hView.Columns[$iColRenaming].X - $hView.ScrollX W = Min($hView.ClientW - X, $hView.Columns[$iColRenaming].Width) Endif If W < 32 Then Cancel Return Endif $hRenameBox.Move(X, hItem.Y, W, hItem.H) End Public Sub _Rename(hItem As _TreeView_Item, iCol As Integer) Dim X As Integer Dim SX As Integer If iCol < 0 Or If iCol >= $hView.Columns.Count Then Error.Raise("Out of bounds") Cancel() _EnsureVisible(hItem) Wait Key_Write(hItem.Key) Do X = hItem.X If iCol Then X += $hView.Columns[iCol].X SX = Max(0, X - $hView.ClientW - 32) If SX = $hView.ScrollX Then Break $hView.ScrollX = SX Loop $hRenameBox = New RenameBox(Me, $hView.Padding, False) As "Editor" $hRenameBox.Text = hItem[iCol] $hRenameBox.SetFocus $sKeyRenaming = hItem.Key $iColRenaming = iCol UpdateRenameBox End Private Sub Cancel(Optional bOK As Boolean) Dim sCursor As String Dim bStop As Boolean Dim hItem As _TreeView_Item If Not $hRenameBox Then Return $hRenameBox.Delete $hRenameBox = Null $hView.SetFocus sCursor = $sCursor $sCursor = $sKeyRenaming If bOK Then bStop = Raise Rename Else Raise Cancel Endif $sCursor = sCursor hItem = $cItem[$sKeyRenaming] $sKeyRenaming = "" If bStop Then _Rename(hItem, $iColRenaming) End Public Sub Editor_LostFocus() Cancel End Public Sub Editor_KeyPress() If Key.Code = Key.Escape Then Cancel Stop Event Else If Key.Code = Key.Return Or If Key.Code = Key.Enter Then Try $cItem[$sKeyRenaming][$iColRenaming] = $hRenameBox.Text If Not Error Then Cancel(True) Stop Event Endif End Public Sub _RefreshView() $iLastRow = -2 $sLastKey = "" $hView.Refresh End Public Sub Sort_Timer() $hSortTimer = Null If Not $cSort Then Return Raise BeforeSort _SaveSelection For Each $cSort SortItem($cItem[$cSort.Key]) Next If $bSortRoot Then SortItem($hRoot) Endif $bSortRoot = False $cSort.Clear 'If hItem Then _SetItemSelected(hItem, True) _RestoreSelection End Private Sub IsItemVisible(hItem As _TreeView_Item) As Boolean Dim hParent As _TreeView_Item hParent = _GetParentItem(hItem) If hParent._IsRoot() Then Return True If Not hParent.Expanded Then Return Return IsItemVisible(hParent) End Private Sub SetItemVisible(hItem As _TreeView_Item) Do hItem = _GetParentItem(hItem) If hItem._IsRoot() Then Break hItem.Expanded = True Loop End Public Sub GridView_Sort() Raise BeforeSort _SaveSelection SortItemRec($hRoot) _RestoreSelection _RefreshView End Public Sub GridView_Scroll() Cancel Raise Scroll End Public Sub GridView_Arrange() Cancel End Private Function Selection_Read() As String[] Dim aSel As New String[] Dim cSel As Collection Dim sKey As String If $hView.Mode = Select.Single Then sKey = Key_Read() If sKey Then aSel.Add(sKey) Else If $hView.Mode = Select.Multiple Then cSel = $hSelection.Keys For Each cSel aSel.Add(cSel.Key) Next Endif Return aSel End Private Sub Selection_Write(Value As String[]) Dim sKey As String Dim hItem As _TreeView_Item If $hView.Mode = Select.Single Then Try sKey = Value[Value.Max] Key_Write(sKey) Else If $hView.Mode = Select.Multiple Then Inc $iNoEvent UnselectAll For Each sKey In Value If Not sKey Then Continue hItem = $cItem[sKey] If hItem Then hItem.Selected = True Next Dec $iNoEvent Endif If $iNoEvent Then Return Raise Select End Public Sub _SaveSelection() If $iSaveSelection = 0 Then If $hView.Mode = Select.Multiple Then $vSaveSelection = $hSelection.Save() Else $vSaveSelection = Key_Read() Endif Endif Inc $iSaveSelection End Public Sub _RestoreSelection() Dim cSel As Collection Dec $iSaveSelection If $iSaveSelection = 0 Then Inc $iNoEvent Inc $iSaveSelection If $hView.Mode = Select.Multiple Then cSel = $vSaveSelection For Each cSel If Not $cItem.Exist(cSel.Key) Then cSel.Remove(cSel.Key) Next $hSelection.Restore(cSel) Else Key_Write($vSaveSelection) Endif Dec $iSaveSelection Dec $iNoEvent $vSaveSelection = Null Endif End Private Function ScrollX_Read() As Integer Return $hView.ScrollX End Private Sub ScrollX_Write(Value As Integer) $hView.ScrollX = Value End Private Function ScrollY_Read() As Integer Return $hView.ScrollY End Private Sub ScrollY_Write(Value As Integer) $hView.ScrollY = Value End Private Function ScrollW_Read() As Integer Return $hView.ScrollW End Private Function ScrollH_Read() As Integer Return $hView.ScrollH End Public Sub Scroll(X As Integer, Y As Integer) $hView.Scroll(X, Y) End Public Sub GridView_ColumnSize(Column As Integer) Dim hItem As _TreeView_Item Dim W As Integer W = Me.Font.TextWidth($hView.Columns[Column].Text) + 8 + If($bSorted, $iDepthW, 0) If Column = 0 Then For Each hItem In $cItem If Not IsItemVisible(hItem) Then Continue W = Max(W, hItem._GetWidth() + _GetItemX(hItem)) Next Else For Each hItem In $cItem If Not IsItemVisible(hItem) Then Continue W = Max(W, Me.Font.TextWidth(hItem[Column])) Next Endif $hView.Columns[Column].W = W + 8 UpdateRenameBox End Private Sub UpdateRowHeight(hItem As _TreeView_Item, iStart As Integer, Optional iEnd As Integer) If iEnd = 0 Then iEnd = iStart Else If iEnd < 0 Then iEnd = $hView.Rows.Max Endif If hItem Then $hView.Rows[iStart].H = hItem._GetHeight() Inc iStart Endif While iStart <= iEnd $hView.Rows[iStart].H = _RowToItem(iStart)._GetHeight() Inc iStart Wend End Public Sub _UpdateItemHeight(hItem As _TreeView_Item, Optional bNext As Boolean) Dim iRow As Integer If $iLock Then Return iRow = _ItemToRow(hItem) If iRow < 0 Then Return UpdateRowHeight(hItem, iRow, If(bNext, -1, 0)) End Public Function _GetLayout() As Variant Dim hItem As _TreeView_Item Dim cLayout As New Collection For Each hItem In $cItem If hItem.Expanded Then cLayout[hItem.Key] = True Next Return cLayout End Public Sub _SetLayout(Value As Variant) Dim cLayout As Collection Dim hItem As _TreeView_Item Try cLayout = Value If Error Then Error.Raise("Bad layout") _SaveSelection For Each hItem In $cItem.Copy() hItem.Expanded = cLayout.Exist(hItem.Key) Next _RestoreSelection End Public Sub GridView_Font() $iDepthW = Me.Font.Height $hView.Rows.Height = GetDefaultItemHeight() UpdateRowHeight(Null, 0, -1) End Private Function Keys_Read() As String[] Dim aKeys As New String[] For Each $cItem aKeys.Add($cItem.Key) Next Return aKeys End Public Sub _Begin() Inc $iLock End Public Sub _End() Dec $iLock If $iLock = 0 Then UpdateRowHeight(Null, 0, -1) Endif End Public Sub _SetShowLines(bShowLines As Boolean) If $bShowLines = bShowLines Then Return $bShowLines = bShowLines $hView.Refresh End Public Sub _GetShowLines() As Boolean Return $bShowLines End Private Function ShowCheck_Read() As Boolean Return $bShowCheck End Private Sub ShowCheck_Write(Value As Boolean) If $bShowCheck = Value Then Return $bShowCheck = Value $hView._DoNotDrawSelection = Value $hView._ToggleSelection = Value '$hView._NoMouse = Value $hView.Refresh End Public Sub _RefreshPicture() Dim hItem As _TreeView_Item For Each hItem In $cItem Picture._Refresh(ByRef hItem.Picture) Next End Private Function Indent_Read() As Integer Return $iDepthW End gambas-3.16.3/comp/src/gb.gui.base/.src/TreeView/_TreeView_Item.class000066400000000000000000000256021411575327000251560ustar00rootroot00000000000000' Gambas class file Export Property Read Key As String Property Read ParentKey As String Property Text As String Property RichText As String Property Picture As Picture Property Read Count, Children As Integer Property Expanded As Boolean Property Read X As Integer Property Read Y As Integer Property Read Width, W As Integer Property Height, H As Integer Property Editable As Boolean Property Selected As Boolean '' @{since 3.11} '' '' Return or set the item background color. '' '' If that property is 'NULL', the background color of the TreeView is used. Property Background As Integer '' @{since 3.11} '' '' Return or set the item foreground color. '' '' If that property is 'NULL', the foreground color of the TreeView is used. Property Foreground As Integer '' @{since 3.11} '' '' Return or set the item font. '' '' If that property is 'NULL', the font of the TreeView is used. Property Font As Font '' @{since 3.16} '' '' Return or set the tag associated with a cell. '' '' This property is intended for the programmer and is never used by the component. It can contain any Variant value. Property Tag As Variant '' @{since 3.16} '' '' Return the depth of an item. Property Read Depth As Integer Private $sKey As String Private $sParent As String Private $sText As String Private $sRichText As String Private $hPicture As Picture Private $bExpanded As Boolean Private $bEditable As Boolean Private $iBg As Integer = Color.Default Private $iFg As Integer = Color.Default Private $hFont As Font Private $vTag As Variant Private $aChildren As String[] Private $aText As String[] Private $H As Integer Static Public _Tree As _TreeView Public _Depth As Integer Public _Rows As Integer Public _Index As Integer Public _GrandChildren As Integer Event _Refresh Private $iLock As Integer Private Sub GetTree() As _TreeView Return Object.Parent(Me) End Private Sub GetView() As GridView Return GetTree().Children[0] End Public Sub _IsRoot() As Boolean Return Not $sKey End Public Sub _ComputeDepth() Dim hTree As _TreeView Dim iDepth As Integer Dim sChild As String If $sParent Then iDepth = GetTree()[$sParent]._Depth + 1 Else iDepth = 0 Endif If iDepth = _Depth Then Return _Depth = iDepth If Not $aChildren Then Return hTree = GetTree() For Each sChild In $aChildren hTree[sChild]._ComputeDepth() Next End Public Sub _ComputeGrandChildren() Dim sChild As String Dim hTree As _TreeView _GrandChildren = 0 If Not $aChildren Then Return hTree = GetTree() For Each sChild In $aChildren If hTree[sChild].Count Then Inc _GrandChildren Next End Public Sub _SetParent(sParent As String) $sParent = sParent _ComputeDepth() End Public Sub _new(sKey As String, sParent As String) $sKey = sKey $sParent = sParent _ComputeDepth() If sKey Then _Rows = 1 _ComputeRows(1) Else $bExpanded = True Endif End Public Sub _AddChild(sKey As String) If Not $aChildren Then $aChildren = New String[] $aChildren.Add(sKey) If $aChildren.Count = 1 Then Try Inc GetTree()._GetParentItem(Me)._GrandChildren Endif End Public Sub _RemoveChild(hItem As _TreeView_Item) Dim hTree As _TreeView = GetTree() Dim I As Integer Try $aChildren.Remove(hItem._Index) For I = hItem._Index To $aChildren.Max hTree[$aChildren[I]]._Index = I Next If $aChildren.Count = 0 Then $aChildren = Null Try Dec hTree._GetParentItem(Me)._GrandChildren Endif End Public Sub _GetChildren() As String[] Return $aChildren End Private Function Key_Read() As String Return $sKey End Private Function ParentKey_Read() As String Return $sParent End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) Dim hTree As _TreeView = GetTree() $sText = Value If $iLock Then Return If hTree.Sorted Then hTree._SortParent($sParent) hTree._UpdateItemHeight(Me) hTree._RefreshView End Private Function RichText_Read() As String Return $sRichText End Private Sub RichText_Write(Value As String) Dim hTree As _TreeView = GetTree() $sRichText = Value If $iLock Then Return If hTree.Sorted Then hTree._SortParent($sParent) hTree._UpdateItemHeight(Me) hTree._RefreshView End Private Function Picture_Read() As Picture Return $hPicture End Private Sub Picture_Write(Value As Picture) Dim hTree As _TreeView = GetTree() $hPicture = Value If $iLock Then Return hTree._UpdateItemHeight(Me) hTree._RefreshView End Private Function Count_Read() As Integer If $aChildren Then Return $aChildren.Count End Private Function Expanded_Read() As Boolean Return $bExpanded End Public Sub _ComputeRows(iAdd As Integer) Dim hTree As _TreeView = GetTree() Dim sKey As String Dim hItem As _TreeView_Item sKey = $sParent While sKey hItem = hTree[sKey] If Not hItem.Expanded Then Return hItem._Rows += iAdd sKey = hItem.ParentKey Wend hTree._AddCount(iAdd) End Private Sub Expanded_Write(Value As Boolean) Dim hTree As _TreeView = GetTree() Dim sKey As String Dim iOldRows As Integer Dim sCurrent As String If $bExpanded = Value Then Return hTree._SaveSelection sCurrent = hTree.Key $bExpanded = Value iOldRows = _Rows _Rows = 1 If Value And If $aChildren Then For Each sKey In $aChildren _Rows += hTree[sKey]._Rows Next Endif If _Rows = iOldRows Then Return _ComputeRows(_Rows - iOldRows) hTree._UpdateItemHeight(Me, True) hTree._UpdateCurrent(sCurrent) hTree._RestoreSelection hTree._EnsureVisible(Me, Value) hTree._RaiseExpand($sKey, $bExpanded) End Private Function X_Read() As Integer Dim hView As GridView = GetView() 'Dim FW As Integer = hView._GetFrameWidth() Return GetTree()._GetItemX(Me) - hView.ScrollX + hView.ClientX + hView.Padding '+ FW End Private Function Y_Read() As Integer Dim hTree As _TreeView = GetTree() Dim hView As GridView = GetView() 'Dim FW As Integer = hView._GetFrameWidth() Return hView.Rows[hTree._ItemToRow(Me)].Y - hView.ScrollY + hView.Columns.Height + hView.ClientY End Public Sub _GetWidth() As Integer Dim W As Integer Dim hFont As Font If $hPicture Then W += $hPicture.W + Desktop.Scale \ 2 hFont = $hFont If Not hFont Then hFont = GetTree().Font If $sRichText Then Return W + hFont.RichTextWidth($sRichText) Else Return W + hFont.TextWidth($sText) Endif End Public Sub _GetHeight() As Integer Dim PH As Integer Dim hFont As Font If $H > 0 Then Return $H hFont = $hFont If Not hFont Then hFont = GetTree().Font PH = hFont.Height + (Desktop.Scale \ 4) * 2 + 2 If $hPicture Then PH = Max(PH, $hPicture.H + (Desktop.Scale \ 4) * 2 + 2) Return PH End Private Function Width_Read() As Integer Return _GetWidth() End Private Function Height_Read() As Integer Dim hTree As _TreeView = GetTree() Dim hView As GridView = GetView() Return hView.Rows[hTree._ItemToRow(Me)].H End Public Sub Clear() Dim hTree As _TreeView = GetTree() hTree._SaveSelection While $aChildren hTree.Remove($aChildren[0]) Wend hTree._RestoreSelection End Public Sub Delete() Dim hTree As _TreeView = GetTree() hTree.Remove($sKey) End Public Sub EnsureVisible() Dim hTree As _TreeView = GetTree() hTree._EnsureVisible(Me) End Public Sub MoveBefore(Optional (Key) As String) Dim hTree As _TreeView = GetTree() hTree._MoveItem(Me, Key, True) End Public Sub MoveAfter(Optional (Key) As String) Dim hTree As _TreeView = GetTree() hTree._MoveItem(Me, Key, False) End Public Sub MoveFirst() MoveAfter() End Public Sub MoveLast() MoveBefore() End Private Function Editable_Read() As Boolean Return $bEditable End Private Sub Editable_Write(Value As Boolean) $bEditable = Value End Private Function Selected_Read() As Boolean Return GetTree()._IsItemSelected(Me) End Private Sub Selected_Write(Value As Boolean) GetTree()._SetItemSelected(Me, Value) End Public Sub Rename(Optional Column As Integer = 0) If Not $bEditable Then Return GetTree()._Rename(Me, Column) End Public Sub _compare(hOther As _TreeView_Item) As Integer Dim hColumnView As ColumnView Dim iSort As Integer If _Tree And If Not _Tree._RaiseCompare($sKey, hOther.Key) Then Return _Tree.Compare Else Try hColumnView = GetTree() If hColumnView Then iSort = hColumnView.Columns.Sort If iSort > 0 Then Try Return String.Comp($aText[iSort - 1], hOther[iSort], gb.Natural + gb.IgnoreCase) If Error Then Return 0 Endif Endif Return String.Comp($sText, hOther.Text, gb.Natural + gb.IgnoreCase) Endif End Public Sub _put(Text As String, Column As Integer) Dim hTree As _TreeView Dim hView As GridView hTree = GetTree() hView = GetView() If Column = 0 Then $sText = Text Else 'If Column < 0 Or If Column >= hView.Columns.Count Then Error.Raise("Out of bounds") ' Be backward-compatible If Column < 0 Then Error.Raise("Out of bounds") If Not $aText Then $aText = New String[Column] Else If Column >= $aText.Count Then $aText.Resize(Column) Endif $aText[Column - 1] = Text Endif If $iLock Then Return hTree._RefreshView() End Public Sub _get(Column As Integer) As String Dim hView As GridView If Column = 0 Then Return $sText hView = GetTree().Children[0] If Column < 0 Then Error.Raise("Out of bounds") Try Return $aText[Column - 1] End Public Sub Reparent(NewParent As String) Dim hTree As _TreeView = GetTree() If hTree Is ListView Then Error.Raise("Cannot reparent ListView items") hTree._ReparentItem(Me, NewParent) End Private Function Background_Read() As Integer Return $iBg End Private Sub Background_Write(Value As Integer) $iBg = Value End Private Function Foreground_Read() As Integer Return $iFg End Private Sub Foreground_Write(Value As Integer) $iFg = Value End Private Function Font_Read() As Font Return $hFont End Private Sub Font_Write(Value As Font) Dim hTree As _TreeView = GetTree() If Value Then $hFont = Value.Copy() Else $hFont = Null Endif hTree._UpdateItemHeight(Me) hTree._RefreshView End Public Sub _Lock() Inc $iLock End Public Sub _Unlock() Dim hTree As _TreeView Dec $iLock If $iLock = 0 Then hTree = GetTree() If hTree.Sorted Then hTree._SortParent($sParent) hTree._UpdateItemHeight(Me) hTree._RefreshView Endif End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value End Private Sub Height_Write(Value As Integer) Dim hTree As _TreeView If $H = Value Then Return $H = Value hTree = GetTree() hTree._UpdateItemHeight(Me) hTree._RefreshView End Private Function Depth_Read() As Integer Return _Depth End gambas-3.16.3/comp/src/gb.gui.base/.src/_Draw_Clip.class000066400000000000000000000026631411575327000225620ustar00rootroot00000000000000' Gambas class file Export Create Static ' GB_DESC CDrawClipDesc[] = ' { ' GB_DECLARE(".MyDraw.Clip", 0), GB_VIRTUAL_CLASS(), ' ' GB_STATIC_PROPERTY_READ("X", "i", CDRAW_clip_x), ' GB_STATIC_PROPERTY_READ("Y", "i", CDRAW_clip_y), ' GB_STATIC_PROPERTY_READ("W", "i", CDRAW_clip_w), ' GB_STATIC_PROPERTY_READ("H", "i", CDRAW_clip_h), ' GB_STATIC_PROPERTY_READ("Width", "i", CDRAW_clip_w), ' GB_STATIC_PROPERTY_READ("Height", "i", CDRAW_clip_h), ' ' GB_STATIC_PROPERTY("Enabled", "b", CDRAW_clip_enabled), ' GB_STATIC_METHOD("_call", NULL, CDRAW_clip, "(X)i(Y)i(Width)i(Height)i"), ' ' GB_END_DECLARE ' }; Property Read X As Integer Property Read Y As Integer Property Read Width, W As Integer Property Read Height, H As Integer Property Enabled As Boolean Public Sub _call(X As Integer, Y As Integer, Width As Integer, Height As Integer) Draw.ClipRect = Rect(X, Y, Width, Height) End Private Function X_Read() As Integer Try Return Paint.ClipRect.X End Private Function Y_Read() As Integer Try Return Paint.ClipRect.Y End Private Function Width_Read() As Integer Try Return Paint.ClipRect.W End Private Function Height_Read() As Integer Try Return Paint.ClipRect.H End Private Function Enabled_Read() As Boolean Return Paint.ClipRect End Private Sub Enabled_Write(Value As Boolean) If Not Value Then Paint.ResetClip Else Paint.ClipRect = Draw._GetInfo().ClipRect Endif End gambas-3.16.3/comp/src/gb.gui.base/.src/_Draw_Style.class000066400000000000000000000031031411575327000227610ustar00rootroot00000000000000' Gambas class file Export Create Static Public Sub Arrow(X As Integer, Y As Integer, Width As Integer, Height As Integer, Type As Integer, Optional Flag As Integer) Style.PaintArrow(X, Y, Width, Height, Type, Flag) End Public Sub Check(X As Integer, Y As Integer, Width As Integer, Height As Integer, Value As Integer, Optional Flag As Integer) Style.PaintCheck(X, Y, Width, Height, Value, Flag) End Public Sub Option(X As Integer, Y As Integer, Width As Integer, Height As Integer, Value As Boolean, Optional Flag As Integer) Style.PaintOption(X, Y, Width, Height, Value, Flag) End Public Sub Separator(X As Integer, Y As Integer, Width As Integer, Height As Integer, Optional Vertical As Boolean, Optional Flag As Integer) Style.PaintSeparator(X, Y, Width, Height, Vertical, Flag) End Public Sub Button(X As Integer, Y As Integer, Width As Integer, Height As Integer, Value As Boolean, Optional Flag As Integer, Flat As Boolean) Style.PaintButton(X, Y, Width, Height, Value, Flag, Flat) End Public Sub Panel(X As Integer, Y As Integer, Width As Integer, Height As Integer, Border As Integer, Optional Flag As Integer) Style.PaintPanel(X, Y, Width, Height, Border, Flag) End Public Sub Handle(X As Integer, Y As Integer, Width As Integer, Height As Integer, Optional Vertical As Boolean, Optional Flag As Integer) Style.PaintHandle(X, Y, Width, Height, Vertical, Flag) End Public Sub Box(X As Integer, Y As Integer, Width As Integer, Height As Integer, Optional Flag As Integer) Style.PaintBox(X, Y, Width, Height, Flag) End gambas-3.16.3/comp/src/gb.gui.base/.src/_Gui.class000066400000000000000000000160701411575327000214370ustar00rootroot00000000000000' Gambas class file ' Gambas class file Export 'Static Private $cMenu As New Collection Static Private $aFrame As New Control[4] Static Private $hFrameCtrl As Control Static Private $hHideFrameTimer As Timer Static Private $iFrameX As Integer Static Private $iFrameY As Integer Static Private $bInFrame As Boolean ' Not use anymore? Static Public Sub _FindShortcut(sText As String) As Integer Dim iPos As Integer Do iPos = String.InStr(sText, "&", iPos + 1) If iPos = 0 Then Break If String.Mid$(sText, iPos + 1, 1) = "&" Then Inc iPos Continue Endif Return iPos Loop End Static Public Sub _DefineShortcut(hParent As Menu) Dim hMenu As Menu Dim sText As String Dim cShortcut As New Collection Dim I As Integer Dim sCar As String Dim iPos As Integer 'Dim hObs As Observer 'Dim cText As Collection 'Return For Each hMenu In hParent.Children sText = hMenu.Text If Not sText Then Continue iPos = String.InStr(sText, "&") If iPos Then cShortcut[String.UCase(String.Mid$(sText, iPos + 1, 1))] = True Continue Endif For I = 1 To String.Len(sText) sCar = String.UCase(String.Mid$(sText, I, 1)) If Len(sCar) = 1 And If Not IsLetter(sCar) And If Not IsDigit(sCar) Then Continue If Not cShortcut.Exist(sCar) Then ' If Not hObs Then ' hObs = New Observer(hParent) As "Menu" ' cText = New Collection ' '$cMenu[Object.Address(hParent)] = cText ' Endif hMenu.Text = String.Left(sText, I - 1) & "&" & String.Mid$(sText, I) hMenu._Text = sText cShortcut[sCar] = True Break Endif Next 'If hMenu.Children.Count Then _DefineShortcut(hMenu) Next End Static Public Sub _Quit() Drag.Icon = Null End ' Static Private Sub RemoveShortcut(sText As String) As String ' ' Dim iPos As Integer ' ' iPos = FindShortcut(sText) ' If iPos Then sText = String.Left(sText, iPos - 1) & String.Mid(sText, iPos + 1) ' Return sText ' ' End Static Public Sub _InitMenuBarShortcut(hWindow As Window) Dim hMenu As Menu Dim bVisible As Boolean Dim sText As String bVisible = hWindow.Menus.Visible For Each hMenu In hWindow.Menus If Not Object.IsValid(hMenu) Then Continue If Not hMenu.Text Then Continue If bVisible Then If hMenu._Text Then hMenu.Text = hMenu._Text Endif Else If Not hMenu._Text Then sText = hMenu.Text hMenu.Text = " " hMenu._Text = sText Endif Endif Next End Static Private Sub StopHideFrameTimer() If $hHideFrameTimer Then $hHideFrameTimer.Stop $hHideFrameTimer = Null Endif End Static Public Sub _ShowDNDFrame(hCtrl As Control, X As Integer, Y As Integer, W As Integer, H As Integer) Dim I As Integer 'Debug hCtrl.Name;; X;; Y;; W;; H;; "|";; System.Backtrace.Join(" ") StopHideFrameTimer For I = 0 To 3 If $aFrame[I] = hCtrl Then Return Next If W < 0 Then W = hCtrl.W If H < 0 Then H = hCtrl.H If hCtrl <> $hFrameCtrl Then HideDNDFrame() For I = 0 To 0 $aFrame[I] = New DrawingArea(hCtrl.Window) As "DNDFrame" With $aFrame[I] .Background = Color.SetAlpha(Color.SelectedBackground, 192) .Ignore = True .Drop = True .Name = "#DndFrame" & CStr(I) .Design = True '.Enabled = False End With Next Endif If W <= 0 Or If H <= 0 Then For I = 0 To 0 $aFrame[I].Hide Next Return Endif $iFrameX = X $iFrameY = Y X += hCtrl.ScreenX - hCtrl.Window.ScreenX - hCtrl.Window.ClientX Y += hCtrl.ScreenY - hCtrl.Window.ScreenY - hCtrl.Window.ClientY 'X -= 2 'Y -= 2 'W += 4 'H += 4 With $aFrame[0] If Not .Visible Or If .X <> X Or If .Y <> Y Or If .W <> W Or If .H <> H Then 'Debug hCtrl.Name;; X;; Y;; W;; H .Move(X, Y, W, H) .Raise .Show Endif End With $hFrameCtrl = hCtrl End Static Private Sub HideDNDFrame() Dim I As Integer For I = 0 To 3 Try $aFrame[I].Delete $aFrame[I] = Null Next $hFrameCtrl = Null $bInFrame = False End Static Public Sub _HideDNDFrame(Optional hCtrl As Control) Dim I As Integer If Not $hFrameCtrl Then Return ' If hCtrl Then ' Try Debug hCtrl.Name;; $hFrameCtrl.Name;; $hFrameCtrl.Hovered;; "|";; System.Backtrace.Join(" ") ' Else ' Try Debug "NULL";; $hFrameCtrl.Name;; $hFrameCtrl.Hovered;; "|";; System.Backtrace.Join(" ") ' Endif If $bInFrame Then Return 'If hCtrl = $hFrameCtrl Then Return If hCtrl Then For I = 0 To 3 If $aFrame[I] = hCtrl Then hCtrl = $hFrameCtrl Break Endif Next If hCtrl <> $hFrameCtrl Then Return Endif If Not $hHideFrameTimer Then $hHideFrameTimer = New Timer(50) As "HideFrameTimer" 'Debug Timer $hHideFrameTimer.Restart End Static Public Sub HideFrameTimer_Timer() 'Debug Timer HideDNDFrame $hHideFrameTimer.Stop $hHideFrameTimer = Null End Static Public Sub DndFrame_Drag() Dim X As Integer Dim Y As Integer $bInFrame = True StopHideFrameTimer X = Drag.X Y = Drag.Y Drag.X += $iFrameX Drag.Y += $iFrameY Object.Raise($hFrameCtrl, "Drag") Drag.X = X Drag.Y = Y End Static Private Sub FindChild(hCont As Container, X As Integer, Y As Integer) As Control Dim hChild As Control For Each hChild In hCont.Children If hChild = $aFrame[0] Then Continue If hChild.X > X Or If hChild.Y > Y Or If (hChild.X + hChild.W) <= X Or If (hChild.Y + hChild.H) <= Y Then Continue Return hChild Next End Static Public Sub DndFrame_DragMove() Dim hCont As Container Dim hCtrl As Control Dim X As Integer Dim Y As Integer 'Debug $bInFrame = True StopHideFrameTimer Drag.X += $iFrameX Drag.Y += $iFrameY hCtrl = $hFrameCtrl While hCtrl Is Container hCont = hCtrl '$aFrame[0].Hide 'hCtrl = hCont.FindChild(Drag.X - hCont.ClientX, Drag.Y - hCont.ClientY) '$aFrame[0].Show hCtrl = FindChild(hCont, Drag.X - hCont.ClientX, Drag.Y - hCont.ClientY) If Not hCtrl Then hCtrl = hCont Break Endif Drag.X -= hCtrl.X + hCont.ClientX Drag.Y -= hCtrl.Y + hCont.ClientY If hCtrl.Drop Then Object.Raise(hCtrl, "Drag") Else If hCtrl Is Container Then Continue Drag.X += hCtrl.X + hCont.ClientX Drag.Y += hCtrl.Y + hCont.ClientY hCtrl = hCont Endif Break Wend Object.Raise(hCtrl, "DragMove") Drag.X = X Drag.Y = Y End Static Public Sub DndFrame_Drop() 'Debug Drag.X += $iFrameX Drag.Y += $iFrameY Drag._Target = $hFrameCtrl Object.Raise($hFrameCtrl, "Drop") Drag.X -= $iFrameX Drag.Y -= $iFrameY End Static Public Sub DndFrame_DragLeave() Dim hCtrl As Control $bInFrame = False _HideDNDFrame hCtrl = $hFrameCtrl While hCtrl If Not Mouse.Inside(hCtrl) Then Object.Raise($hFrameCtrl, "DragLeave") Break Endif hCtrl = hCtrl.Parent Wend End gambas-3.16.3/comp/src/gb.gui.base/broken.svg000066400000000000000000000075231411575327000206640ustar00rootroot00000000000000 image/svg+xml gambas-3.16.3/comp/src/gb.gui.base/message/000077500000000000000000000000001411575327000203005ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/message/delete.png000077700000000000000000000000001411575327000310612../../gb.form.stock/gambas/128/delete.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/message/error.png000077700000000000000000000000001411575327000306372../../gb.form.stock/gambas/128/error.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/message/info.png000077700000000000000000000000001411575327000302432../../gb.form.stock/gambas/128/info.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/message/question.png000077700000000000000000000000001411575327000320732../../gb.form.stock/gambas/128/question.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/message/warning.png000077700000000000000000000000001411575327000314672../../gb.form.stock/gambas/128/warning.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/moviebox.png000077700000000000000000000000001411575327000315242../../../app/src/gambas3/img/control/moviebox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/pattern/000077500000000000000000000000001411575327000203315ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.gui.base/pattern/10.png000066400000000000000000000001051411575327000212530ustar00rootroot00000000000000PNG  IHDRt& IDATcg@.jIENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/11.png000066400000000000000000000001061411575327000212550ustar00rootroot00000000000000PNG  IHDRt& IDATc``G_z-?IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/12.png000066400000000000000000000001221411575327000212540ustar00rootroot00000000000000PNG  IHDRt&IDATc7w 3<]zIENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/13.png000066400000000000000000000001221411575327000212550ustar00rootroot00000000000000PNG  IHDRt&IDATcgp=w 2 IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/14.png000066400000000000000000000001161411575327000212610ustar00rootroot00000000000000PNG  IHDRt&IDATccp9/\}IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/2.png000066400000000000000000000001071411575327000211760ustar00rootroot00000000000000PNG  IHDRt&IDATc`( h;IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/3.png000066400000000000000000000001121411575327000211730ustar00rootroot00000000000000PNG  IHDRt&IDATc```Pb( U]IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/4.png000066400000000000000000000001121411575327000211740ustar00rootroot00000000000000PNG  IHDRt&IDATc`ePb( nIENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/5.png000066400000000000000000000001071411575327000212010ustar00rootroot00000000000000PNG  IHDRt&IDATcXʀ!DIENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/6.png000066400000000000000000000001141411575327000212000ustar00rootroot00000000000000PNG  IHDRt&IDATceJ"vKG)IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/7.png000066400000000000000000000001141411575327000212010ustar00rootroot00000000000000PNG  IHDRt&IDATcϰ?;( :^ObIENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/8.png000066400000000000000000000001111411575327000211770ustar00rootroot00000000000000PNG  IHDRt&IDATc4?&3IENDB`gambas-3.16.3/comp/src/gb.gui.base/pattern/9.png000066400000000000000000000001061411575327000212040ustar00rootroot00000000000000PNG  IHDRt& IDATc`` 0~IENDB`gambas-3.16.3/comp/src/gb.gui.base/picturebox.png000077700000000000000000000000001411575327000324142../../../app/src/gambas3/img/control/picturebox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.logging/000077500000000000000000000000001411575327000166055ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.logging/.component000066400000000000000000000001171411575327000206070ustar00rootroot00000000000000[Component] Key=gb.logging Version=3.10.90 Authors=sebikul gambas-3.16.3/comp/src/gb.logging/.directory000066400000000000000000000000411411575327000206050ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.logging/.icon.png000066400000000000000000000245111411575327000203240ustar00rootroot00000000000000PNG  IHDR\rf)IDATxɏ$ם߿/kdIJ\5Z0 K0 0>f`|6`_ <3nHEzZr=EDFfeUeuU.UѝEU~                        h/mMBl0c^d@ׅ(i#5Yw_/~з[!k'EAd4T0q]~_{6'&5 ߕ5lܧ>yM`?A @ -4m5ШЦ ~QEaQ {b{E ~g]pNvw}￿s[zsaik|# ϭ(X+ƟLi&bV/Xf6s>\>~ ?R> ڸθs=o*odS5zOqCϾs{8/Ӆ7ꢹu/~J.hl583j#+Ƴ Hq1R^W bc[ N-hV%^5>QN0}qye3 |g/vN)geP/r]ţsIèTMEb6 25:;^ ň8f|3G.Lf#ƚ V4O흷?R<8,%]SfY I_`5IB!.}i͟1f:>Y:>Q5+D9vmnS<8B-FUEό< ˠ3f^7#o34tE\ ,ȎFEEc~Qh[#'nYY>u0~},?@̸L_@.IdP<,6Q54kG7Y6*w2_<\٩YAaLc=-)\[8Wl39;dut"Ih )KZR32l\NbȲ >Q/OK=ǟh~Ӊ_c{_x4?hgTT_~Qؠf!}H'{UUMb@vT-rΌ5~1,jd~=2 מb՚x=NofVݤx@ٹo>~"#cqg5OXWx-RN0ER~4[o7?ZK/];LN YH V%(mPx-҅==N?S쿂Y`.;qD0 p.X ;(K*d |l8>,6 ײ{Si ;˙ƟAKgIr2H+6T+%YYa$ܑ/hu _+D1l7h<5ĵAhsM͉+B1^6^ᗩ⢏-/O#,y3K 3s6tJR+|l= }ͲeO/]>Π_kJOb*wҢs08&,dv2 Sg2Dxv/&/02T2Ғ~1/kedS=Gv$VHA6X jg ,7Y;jX?O'qa(,]^$:kƙS}DgMq{/|4?qXK H- SKz c_&m<)( y)tBg@barz0ً$NDµ?A?c\ 'kmdvA$03ͶMD I> u6+B{g׃Oi%Aʬ,I8N;ks (\:'ybuJXygUBo8i^勃(`I<?W O\'k vMkq,?WG\) (b^;7;Zss i~q, Meдl ~ogjف/6J&\I TQ"g:j"#LYޓ'!kp*f~{kIM(3WPʀXc)͏bfarq-Hq,<>Xjᣏ>UwXǬk<Đ C J (1$MɟgZ H?D!@%A 3YQbHD!@%AQbh(7% C%S,(1(5e)H?ϴ/ DÏGp\ YfAe   ,m|UaPz .~B$ =?ž` (Is)4TteQ3qff@QT(z0x!".`k * *A` 4s8a qsI! -@2дt4L @[#ʅ@^s[Rv!dˣ~qu('cvDÍJC7³; U] [_s7LlO{ꦆmXu׮\#zš:.=xD  _Z^ ?N0mnXhWtXMY\ ƓO͑9.־3Yks9><o^UEϏ1 bQr/Hba[6v تfDXB{N={o*`TaMk 5 L7 呃O<G\0/ 8aQ 1 h!J͚P#18t.Fa.Y0 |L5׏2Ha{8B ofˆQY{!~{< b.R/.+$w po/GwåAp#7 r9/D*ݼ >G#tP9WH9n_?G1>ws)]Ex;]]/F9#BBAˆ,w_K]LgU 0Tqx"U2)ƣ>y9#! *\ $VO;/x7Du(!/пᗻ}$ICrz2?\e T4\AᫎGA`h j [Wai 0n H yQC5S㾇KWYߋtFs8T'/-*53Y+`psE3xb~ݦ5Nja/%Hly,lvЁ*j!'-_Cn|g`j BB@K${~G_u\ 0 7k&^oV]U0 b(,հBu]QP34*C¥F19  |q4uoز+w7—G#<7?3TPTTE~i`d{x:͑) 5Ci*6*z~{hC]/| mTqfnAC$J7J]BJb 5)Ua**'AɟgrHz~QQ8הo ܪ[c_\|q`VĻ[5TM(H[Z7:@?qD16m:t(Jph_?8Qgh} ڢ@!D8I54ܨw^kX{.>;pΛgTt5,]qY<{y0 R^uiqD`wo^:ώFdOH,KD&ȁ40TmKVܪ~[WbIW]Gx<#TMmVf1p*Pr/53s QvxqBxs; cuSCԠ/i]B D=j6l|cƖm`χ>}xgTU؂(@0 b7:#E_19;\CA%&]?B׋fZ6Zxu,sB;Q"0b;Ӿ''bwp}?F4 >~1 c< d/9KL SCc.@ɟgH(ssLYu2^lNjx\4^`;G2? 龃]'@p$gj@((J@֟]'N>bGc节nWTC`$"q264UY1` L >)1}DVf $B Q Ld,Џ9Azx61|ŅM 㺆Y¦K %OX`WXSlC=5* ]&0?a{1TxD s9?;M"Biu 7Qx6q10;w}*[Wa 4 %"L ̓0Pd0TQ"S1 kںB?"|~8BϟN=0H.)CSV,AA5<Mk !4σut Ϊ7Uy1?SS&PXH?+:}eJ{ z}l^oUЪξ @& ݨ@E ; w:^#7HSGduvEGӒ Jɟg@pz!^::n'w({jw6جhZ4Y-Kǻ[UmX'Ԥ~q|e+ ܴB @ ɪ:a=zdNlpecӖ4m=lu(opaA> ac6P3T .* `/d^볉1y4hi2ߺ N78gO͡7?Q3qf:ra<@".0 c:x5{JW@[W nǻ8#3.q?GnC>b>FtfՎEC`i뮋N]r^76^oZ]e?c}xbwEڻL*[u *#.,7J8bɫ2W`&2")q?cb?ߪJM ;U[Ƣ_n! `8aG:.r.ӞQ/yYD\Ks]Qа4l6m KK|d-͚M?! s19ˊ۬n2warՀ H^':~al]ך*ruR2\_Vd&nʲ?XYYQ8W2wjbf.1Ye ɸy-K~J_.d, BUWF{m S?+,ѧ [٪J@AY;OοNӲU5*Q5a*r)ov)o4-l:loeP `!s>[f a#Z*&zҝNϝP3ToW֦MC` h߮11g Sv7,[+ 񻎋ن `T77k/ƤT|&lC\ҫ*x># Y{YYM>CQrMohJZXAаiبhY:b.x95Tv- Pp0&TYV6v~^:ϐn-6,[%cypFs,L*jxgmDE[%$P7b3 Sǝ5eة8rCq" ~E?#. ֮l[UL+ `h髺y T 9U#<"'/G:~ e)mK;UYEҡ_\19ek* 80zAu 5C76F!v$E1('B@IvrạajhY:ZvjW -/1{SS mŸw; c, l;شML)>XV1Ws9!^8~ N*ʠ lEl #/ēO_<1Y%ufHͭ*SA 孃t0a&lLZp/cU~O{́8GW Z6Y qߒ?d,C;nU غ ɉDCn.Zv>XΚcg2f 7q0 }m4  EZAnv ;U6 @WL!\J#jo-e+G{|uqsmixUov-Ou& ,1X%wݶ !3vE \e~rYc7 <C|`Ε4M ooTv om aə L8z^'}z9߮Ҍ5r'Oz. ; Qa Vol`34 .g*o |tPw7 *AَBn cz!`[5Sn ~s'L ⫎.}?(JU08Y3ݻm|FLM!!@tUAqff7{X8%tτBQ *hZ KS`l"' i@H?L1ˣ|ۗe>pf⃝:>ܩ iG?q$\Ъ` 5^| W>Y3MTMlT 4L . |/}DҒxw!~'1 fv_o kٴaLꆆm0 ' ,w%8pC9> @XzWݯPchnL|S÷n4F KI{](,M sxqѝc qc\n AUQ[SqQw7jxenikgnJLHM.i5m<3'w Ar SMo*߶qab6вt4 zW wjP-߲4pC/syaP>`A]e+[SQUT4[[cV2\ 5"׶tUŝlE8pC;OnroV0ۋOSX[uwnLlTt4LWu4jOBkDVۯHi p>x0 g ]5XrYciFDQU0\3YkLQ5J],矧5o*LMTaOXcՄ*pr N5 [[4yՀ׀R Oٟg 3MD!@%AQb(H?T(9~ C J (1$MɟgĐ C z= 1 Then Error.Raise("Invalid output console") $iOutput = iOutput Me.Level = iMinLevel End Public Sub Write(sMessage As String, Optional iLevel As Integer) If Not Me.isEnabledFor(iLevel) Then Return If $iOutput = STDOUT Then Print sMessage Else If $iOutput = STDERR Then Print #File.Err, sMessage Endif End Public Function GetOutput() As String If $iOutput = STDOUT Then Return Logger.Stdout Else If $iOutput = STDERR Then Return Logger.Stderr Endif Endgambas-3.16.3/comp/src/gb.logging/.src/FileHandler.class000066400000000000000000000032341411575327000226600ustar00rootroot00000000000000' Gambas class file Export Inherits LogHandler '' Holds the path of the file Private $sPath As String '' Holds a stram to the log file Private $sLogFile As Stream Private $bLogRotateEnabled As Boolean = False Private $lLogRotateSize As Long Public Sub _new(sPath As String, Optional iMinLevel As Integer = LogLevel.Info) $sPath = sPath Me.Level = iMinLevel End Public Sub Open() If Me.Step > 0 Then Error.Raise("Handler already initialized!") If IsDir($sPath) Then $sPath = $sPath &/ Application.Name & ".log" Endif If Not Access(File.Dir($sPath), gb.Write) Then Error.Raise("Log file not writable.") If Exist($sPath) Then $sLogFile = Open $sPath For Write Append Else $sLogFile = Open $sPath For Write Create Endif Me.Step = 1 End Public Sub Write(sMessage As String, Optional iLevel As Integer) If Me.Step <> 1 Then Error.Raise("Uninitialized or already closed handler!") If Not Me.isEnabledFor(iLevel) Then Return Print #$sLogFile, sMessage If $bLogRotateEnabled And LogRotator.shouldRotate($sPath, $lLogRotateSize) Then Close $sLogFile '' Should automatically rename the old files LogRotator.Rotate($sPath) $sLogFile = Open $sPath For Write Create Endif End Public Sub Close() If Me.Step <> 1 Then Error.Raise("Uninitialized or already closed handler!") Inc Me.Step Close $sLogFile End Public Function GetOutput() As String Return $sPath End Public Sub RotateAfter(lSize As Long) If Me.Step > 0 Then Error.Raise("Handler already initialized!") If lSize <= 0 Then Error.Raise("The LogRotate size must be greater than 0") $bLogRotateEnabled = True $lLogRotateSize = lSize End gambas-3.16.3/comp/src/gb.logging/.src/Formatter.module000066400000000000000000000077541411575327000226410ustar00rootroot00000000000000' Gambas module file ''' This class formats a line to automatically replace required Logger data Export Private Function GetCallLocation() As String Dim iCount As Integer = 1 While System.Backtrace[iCount] Begins "Logger" Or System.Backtrace[iCount] Begins "Formatter" Inc iCount Wend Return System.Backtrace[iCount] End Private Function GetCallFile() As String Return Split(GetCallLocation(), ".")[0] End Private Function GetCallFunction() As String Return Split(GetCallLocation(), ".")[1] End Private Function GetCallLine() As String Return Split(GetCallLocation(), ".")[2] End Public Function _call(sMessage As String, sFormat As String, iLevel As Integer) As String Dim sName As String Dim aLoaded As String[] Dim oComponent As Component If String.InStr(sFormat, "$(message)") > 0 Then sFormat = Replace$(sFormat, "$(message)", sMessage) Endif If String.InStr(sFormat, "$(callLocation)") > 0 Then sFormat = Replace$(sFormat, "$(callLocation)", GetCallLocation()) Endif If String.InStr(sFormat, "$(callLine)") > 0 Then sFormat = Replace$(sFormat, "$(callLine)", GetCallLine()) Endif If String.InStr(sFormat, "$(callFile)") > 0 Then sFormat = Replace$(sFormat, "$(callFile)", GetCallFile()) Endif If String.InStr(sFormat, "$(callFunction)") > 0 Then sFormat = Replace$(sFormat, "$(callFunction)", GetCallFunction()) Endif If String.InStr(sFormat, "$(now)") > 0 Then sFormat = Replace$(sFormat, "$(now)", CStr(Now)) Endif If String.InStr(sFormat, "$(date)") > 0 Then sFormat = Replace$(sFormat, "$(date)", CStr(Date(Now))) Endif If String.InStr(sFormat, "$(time)") > 0 Then sFormat = Replace$(sFormat, "$(time)", CStr(Time(Now))) Endif If String.InStr(sFormat, "$(ptimer)") > 0 Then sFormat = Replace$(sFormat, "$(ptimer)", CStr(Timer)) Endif If String.InStr(sFormat, "$(ptimerint)") > 0 Then sFormat = Replace$(sFormat, "$(ptimerint)", CStr(Int(Timer))) Endif If String.InStr(sFormat, "$(levelno)") > 0 Then sFormat = Replace$(sFormat, "$(levelno)", CStr(iLevel)) Endif If String.InStr(sFormat, "$(levelname)") > 0 Then Select Case iLevel Case LogLevel.Critical sName = "CRITICAL" Case LogLevel.Error sName = "ERROR" Case LogLevel.Warning sName = "WARNING" Case LogLevel.Info sName = "INFO" Case LogLevel.Debug sName = "DEBUG" Case Else sName = "CUSTOM DEBUG" End Select sFormat = Replace$(sFormat, "$(levelname)", sName) Endif If String.InStr(sFormat, "$(version)") > 0 Then sFormat = Replace$(sFormat, "$(version)", Application.Version) Endif If String.InStr(sFormat, "$(gbversion)") > 0 Then sFormat = Replace$(sFormat, "$(gbversion)", System.FullVersion) Endif If String.InStr(sFormat, "$(host)") > 0 Then sFormat = Replace$(sFormat, "$(host)", System.Host) Endif If String.InStr(sFormat, "$(pid)") > 0 Then sFormat = Replace$(sFormat, "$(pid)", CStr(Application.Id)) Endif If String.InStr(sFormat, "$(architecture)") > 0 Then sFormat = Replace$(sFormat, "$(architecture)", System.Architecture) Endif If String.InStr(sFormat, "$(charset)") > 0 Then sFormat = Replace$(sFormat, "$(charset)", System.Charset) Endif If String.InStr(sFormat, "$(home)") > 0 Then sFormat = Replace$(sFormat, "$(home)", User.Home) Endif If String.InStr(sFormat, "$(username)") > 0 Then sFormat = Replace$(sFormat, "$(username)", User.Name) Endif If String.InStr(sFormat, "$(appPath)") > 0 Then sFormat = Replace$(sFormat, "$(appPath)", Application.Path) Endif If String.InStr(sFormat, "$(appName)") > 0 Then sFormat = Replace$(sFormat, "$(appName)", Application.Name) Endif If String.InStr(sFormat, "$(loadedComponents)") > 0 Then aLoaded = New String[] For Each oComponent In Components aLoaded.Add(oComponent.Name) Next sFormat = Replace$(sFormat, "$(loadedComponents)", aLoaded.Join(", ")) Endif Return sFormat End gambas-3.16.3/comp/src/gb.logging/.src/LogHandler.class000066400000000000000000000021401411575327000225150ustar00rootroot00000000000000' Gambas class file Export Property Level As Integer Property Step As Integer '' Holds the minimum level the Logger will write Private $iLevel As Integer = LogLevel.Info '' Describes the status of the logger. A status of 0 means uninitialized, a status of 1 means ready, and a status '' greater than 1 means it is already closed. Private $iStep As Integer = 0 '' Opens the log handler and prepares it for writing Public Sub Open() End '' Write the sMessage with optional level iLevel to the log handler Public Sub Write(sMessage As String, Optional iLevel As Integer) End '' Closes the log handler. No further writing is allowed Public Sub Close() End Public Function isEnabledFor(iLevel As Integer) As Boolean Return (iLevel <= $iLevel) End Private Function Level_Read() As Integer Return $iLevel End Private Sub Level_Write(Value As Integer) If Value < 0 Then Error.Raise("Invalid logging level.") $iLevel = Value End Private Function Step_Read() As Integer Return $iStep End Private Sub Step_Write(Value As Integer) $iStep = Value End Public Function GetOutput() As String End gambas-3.16.3/comp/src/gb.logging/.src/LogLevel.module000066400000000000000000000003221411575327000223670ustar00rootroot00000000000000' Gambas module file Export Public Enum Critical, {Error}, Warning, Info, {Debug} Public Function isEnabledFor(iHandlerLevel As Integer, iLevel As Integer) As Boolean Return (iLevel <= iHandlerLevel) Endgambas-3.16.3/comp/src/gb.logging/.src/LogRotator.module000066400000000000000000000025631411575327000227630ustar00rootroot00000000000000' Gambas module file Export Public Function shouldRotate(sPath As String, lMaxSize As Long) As Boolean Dim lSize As Long = Stat(sPath).Size Return lSize > lMaxSize End Public Sub Rotate(sPath As String) ''TODO Logica para renombrar los archivos Dim sBasePath As String = File.Dir(sPath) Dim sBaseName As String = File.BaseName(sPath) Dim sExt As String = File.Ext(sPath) Dim sOldFile, sNewFile As String Dim i As Integer = 0 ''TODO Usar Format While Exist(sBasePath &/ sBaseName & "." & i & "." & sExt) Debug "File " & sBasePath &/ sBaseName & "." & i & "." & sExt & " already exists. Skipping" Inc i Wend '' i tiene el numero del prox archivo If i = 0 Then sOldFile = sBasePath &/ sBaseName & "." & sExt sNewFile = sBasePath &/ sBaseName & "." & i & "." & sExt Debug "Moving file " & sOldFile & " to " & sNewFile Move sOldFile To sNewFile Else Repeat sOldFile = sBasePath &/ sBaseName & "." & (i - 1) & "." & sExt sNewFile = sBasePath &/ sBaseName & "." & i & "." & sExt Debug "Moving file " & sOldFile & " to " & sNewFile Move sOldFile To sNewFile Dec i Until i = 0 sOldFile = sBasePath &/ sBaseName & "." & sExt sNewFile = sBasePath &/ sBaseName & "." & i & "." & sExt Debug "Moving file " & sOldFile & " to " & sNewFile Move sOldFile To sNewFile Endif End gambas-3.16.3/comp/src/gb.logging/.src/Logger.class000066400000000000000000000040031411575327000217150ustar00rootroot00000000000000' Gambas class file Export Create Static Property Level As Integer Property Format As String Property Enabled As Boolean Property Read Output As String Static Public Const DefaultFormat As String = "[$(now)] [$(levelname)] [$(callLocation)] $(message)" Private $cLogger As ComplexLogger '' This is only here for compatibility and is now deprecated, please use LogLevel instead. Public Enum Critical, {Error}, Warning, Info, {Debug} Static Public Const Stdout As String = ":stdout" Static Public Const Stderr As String = ":stderr" Public Sub _new(Optional iMinLevel As Integer = LogLevel.Info, Optional sFormat As String = DefaultFormat, Optional sOutput As String) Dim tmpHandler As LogHandler If sOutput = Stdout Then tmpHandler = New ConsoleHandler(ConsoleHandler.STDOUT, iMinLevel) Else If sOutput = Stderr Then tmpHandler = New ConsoleHandler(ConsoleHandler.STDERR, iMinLevel) Else tmpHandler = New FileHandler(sOutput, iMinLevel) Endif $cLogger = New ComplexLogger(sFormat, tmpHandler) End Public Sub Begin() $cLogger.Begin() End Public Function isEnabledFor(iLevel As Integer) As Boolean Return $cLogger.Handlers[0].isEnabledFor(iLevel) End Public Sub Log(sMessage As String, Optional iLevel As Integer = LogLevel.Info) $cLogger.Log(sMessage, iLevel) End Public Sub _call(sMessage As String, Optional iLevel As Integer = LogLevel.Info) Me.Log(sMessage, iLevel) End Public Sub _free() If $cLogger Then $cLogger.Close() End Private Function Level_Read() As Integer Return $cLogger.Handlers[0].Level End Private Sub Level_Write(Value As Integer) $cLogger.Handlers[0].Level = Value End Private Function Format_Read() As String Return $cLogger.Format End Private Sub Format_Write(Value As String) $cLogger.Format = Value End Private Function Enabled_Read() As Boolean Return $cLogger.Enabled End Private Sub Enabled_Write(Value As Boolean) $cLogger.Enabled = Value End Private Function Output_Read() As String Return $cLogger.Handlers[0].GetOutput() End gambas-3.16.3/comp/src/gb.logging/.src/MTest.module000066400000000000000000000013141411575327000217140ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim aHandler As LogHandler Dim bHandler As FileHandler Dim bLogger As ComplexLogger Dim i As Integer = 0 aHandler = New ConsoleHandler(ConsoleHandler.STDOUT) bHandler = New FileHandler("~/Desktop") bHandler.RotateAfter(1024) bLogger = New ComplexLogger(Null, aHandler) bLogger.addHandler(bHandler) bLogger.Begin() bLogger.Log("I can read this in the console or at a file stored in my Desktop folder.") For i = 0 To 100 bLogger("Log message " & i) Next ' cLogger = New Logger(LogLevel.Error, Null, Logger.Stdout) ' ' cLogger.Begin() ' ' cLogger.Log("Using the old logger interface", LogLevel.Critical) End gambas-3.16.3/comp/src/gb.map/000077500000000000000000000000001411575327000157345ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.component000066400000000000000000000001641411575327000177400ustar00rootroot00000000000000[Component] Key=gb.map Version=3.15.90 State=1 Authors=Fabien Bodard Needs=Form,ImageIO Requires=gb.net.curl,gb.net gambas-3.16.3/comp/src/gb.map/.connection/000077500000000000000000000000001411575327000201515ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.connection/Connection1.connection000066400000000000000000000003021411575327000244050ustar00rootroot00000000000000[Connection] Type="sqlite" Path="~/Documents/BASES" NoPassword=False RememberPassword=False IgnoreCharset=False DisplayMetadata=False RememberTemplate=False Database="GRC.sqlite" Requests=[""] gambas-3.16.3/comp/src/gb.map/.directory000066400000000000000000000000411411575327000177340ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.map/.hidden/000077500000000000000000000000001411575327000172455ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.hidden/control/000077500000000000000000000000001411575327000207255ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.hidden/control/mapview.png000066400000000000000000000037751411575327000231170ustar00rootroot00000000000000PNG  IHDR@@ pHYs+PLTE```ςEPuCf%T{ ͂II}RW0WMς,ʂ(uJrW΂,2EN٠Z}qӫ S΁,p͖ˉL%V`mYggi΂rh4N[lXZ{cLvP⢦C[R:`|禀łwoW|zv?PMhpǛ哷}mksTXU(.Ṛߞ}Y^YbٷĿwѽbf`V͎>ԋpOuX~klֱ"VǬdo0gEɵŁx|ၸT:~oⴻnnɍmȤsCeozl~bvt;ը;ΝxJΔ8䈝ˊl`͊kP_GCeJbxNyj?vQBeWfs©;ctǷCEāxz@UαKL֊2l|IDATXeTY!2C I&eqآ[EB{e[ﺻ˿LC O1ɜ]̄ {.Sqqg@*t qcN/SJr$Iiqguz XVF?%z{ .aS@_~| @ ̕0Zj2׬=?Ҁ.\l~X!+jvP^"FXc+t`{ZZ5,!֥?JFGFGo~zzK&H߿B;}۞>H 2*5r%A=*32,.%)縖=mA>/m  09fE X%2%;!V*U#]+HطWQ($ "@]:I_&'c[.5 h_* )sZp\^]gϒJTƻYN..H]-rx=-LJz կr?G(+U I~7n5:'jP5'}9XYp L DTԂ!@bQk/=/,n!<J;;>ٟ~'`g`^a&K ݤo|0K0aםZm$Jp+"ydP88 ,(AP6Lܰx:ZCV3h" k1lءK"2,Cc%8q хB@RXQuqqޱwH{eZ'A,nKANr9rT9H3{8N+F&0w#g ߨ%}p%jxiO6]P`4xo@47#pd;PB 郋ш(m6s# #Mh!4$E4mZyZlWٟTߵ,JH KhG@uaq ^5 ~vjq\=WEiu| p?O9IpIENDB`gambas-3.16.3/comp/src/gb.map/.icon.png000066400000000000000000000445451411575327000174640ustar00rootroot00000000000000PNG  IHDR\rfsBIT|d IDATxϯ$ۖYksN޻ݶQBjfbaFBÄB,f 3cfA02jR~_'3b#22Tݪ[U~JQy2222+Zs˿_lذqB?lذaS6y׵==* nu?~=G_=3U___9W*r~"T/z>e>?o~?w?rÆ6Ӹ_߯_D0_Vj5B~;]>+q[?ҎouͿ=3oֿGGlpqf%:3ɥ~CX_@}U scxW}J71 O~?s?jÆVu7O&qWT\ qׯY[a1A?wٳ~+qq>[. M{œ7ڰ7FTjRKcx/Wb륵~__X~o~lݷ_˻sc{+soӋE0Wgj<[彯kx__W W?ws[| ձo8/Hao_|Y_[<`ÛQҀxUsBR z /ֿ uןшyfr}3C<,ǯU0_;7Bo^۳X~Y n=Åe+7m}ar)x8,us1ߴodv'0>j!7_7Gc޸_{ygq&sez}< 4*!(XXL}VO1O~6<Lz/J.,ϛs*Ap;gVk&q׋z z6?vi/x.KߪH:+\K 7A\5. cs_l~r%8clIځo9&~۠|8G;.Y j]\s` -n~{#nvdg1WZ7X3Oa0 W\-4EYTg9H[g?pVv'oN?l\ }ps,^sk 3WB^ M:zfKp]:zHܾ~&/k{' nN9}wFyY|}dY|j~@\qw}Eg+g98ryugO/6pʩ#;Ź?]^RyrvKgjk[\,9uJM1]R4_O;R՟?go|.9C/O%\ߞΖts΅5^-jpc}"ڱ4!4.3rpO|>G2+Gg~>J6(Fge"gynw.\ T-8 VSb-"?WMxwO{>0z' >PdN#4.}Lx ˿\`4wIx]yqf(hԟfex >6>+0c] Pfk?[E̩ku+9`r\{TZ3-?ؚlc3v}@0N^  ]6,ޕ_ UjOVֽM/%jאY\>6| `FUSmJΕ??Gڊw.\v͖2v0oV~aN7˿gf ]7|V<~7_YK˿~M.Yhf7|1ye<:>GWs ~n?||kf8@-,Ll۹6˿K6`)*O?[+ یzetw;o=/>rK=Ȱ oRr^T6 |&y } ]8e ˺`빁Kf> +6b3b ˿EuAD03u| _ 80NY-J+~ϩ%Ky?d3b@ɥ \kgkb\5/{`| `F UsY?\pyKfpCÆ_4KyK7,^a@.j6l3A;P (o<\ _>|8Uqlѽ2z#~~:|1oBеg??Ih_E "*eʀ Jpty-ڿkWfȹ~z^,GXJ{]pl~^Ο'7w ހNOϿNe3T.3ߜ-xW8T2'ڿϼ6lsdopY']}2c)[] _M۞>s :Eyް0I>s,T~nhah) }чu6x| z0d7t] {'k?~?_;} m"1|8>-f?wUq`×G^̛>%6l FgT\~ ۰#}?u|qշO+_]Ov=6l '7Eѐ /l9oX~mM# W]~%-;?U|?Pb mR1vݧ ~ {[o'߆/ʟ:6l +ݰQbs6lx |O} >!|K [@c\6M7~M03r_ wĦb.[6|@Lċ/-/OP_縫Y|w|wO}I> oktZ)~~[< ͓'O>%mxP~8ohPUp8O}I>0}o_bÆGMl) 1 OďW}h^_[~~ןk XysgI͂ _)e-R 0_T w\EuMrv=tbU+G~?o 𗶝<{ }pjG馺y͆M<8T O?-BA;8MUK)Qaj)/c*Vpx_^_ScZކ<*$|i¯xLpýp&ӌkFP” wTa,09r!| 7%1If' 9} ;JUkAO6lYGM)X@ 3L˄/ƪ 2P$1G~?o »܍Iíc^~g,M4b‘2`BsDss@LoR ;   )-jK'{6 RNO) Sn_@7RDsGH)ZЌ/pB*ͷȰCv;tCxҚVɱu~Vh:7f&4&OK2{<@g9/`7RG=! R@V6^JfќЛIPV.ʧo2zTx?3%p@&a9c)c)mؔ(SUOIrO#'n;dzɰ\ d;o2tteAIh2%:  -Xgd `P^M@t@u[=8GT(c¦#% O/(1BS X  P7x@ A/'$ߣKsp##ZV%9)GM|60 O"ܶH=(u O#ӳLO_SƑrȧK#n'p;aB HtJpL=.ϽCfȔtD=^aG8'NNxn ddPhgȾ2WBȊrF:4 >}9ccHף [gM%~Lfv^wv6vvrC깼'9X>Nxɠ!Rٚ +8c ; ÁA7 '=+h}7 {ou[c ȼ4yd} u|6B~Z"c9xy[ZT\DzR7Fϛ+&H++9%S|OFzb.FC !-au1 ᷚ3ocB&Vf`#gH];&DDyF O7҄?;J^[W7%N[ٲ{V- YX:B^d^PSU2J@}jl[ (G1L" P?ӳ M/65 j $ 2 2ǹn! yQ ?LĽ)cC7qLS8LʥJDwJ5ۨB!+O¦MqJ"O'J:QVrZgV-(bhDCD4"db ~iYũhC@jG:`XL!\+gQ*`L;( FBBLB08Ym @Wkݟrd $ $Q&˅bcbs2)%i$ؔAt'H.H %Uцw|k4,tff`V&D#nC%{4M bZSkK8BW $x)R@e$B);iQ"Q QQ3f:UL0e$Yj\"z!Y*'(ldc.ÐH H I "W3%I:KֿD @L'SY-7|ilژ?s#b˙^Q SJRŎr Lj]Cp l݀5ߔ:d#OG%%OMAL pd~!hT&LL(/z9-s1O+ZVt!Ɯz!vR qedY0rpE"bB 9%<(*8pwbDPD+cX/0b8\x)#}W ccoJݱ+͟N%%K`JnoX?LN8 !"Z3 8H<}) ȷP-H^F`F uFFm.0j jc.x 6RRnJN-yY0} hq iPBKI6- x* N#y4"C?Z >x&ԡ=XxO<DE$ZN-&HCU#mvH_ӎ !d4b؍.ރwE#y%:3p:b( k-P(^thR)b3G+ ?-=~f6wr)RBL7ݟ~Dv;G0- Xn6N44KY8 k#$LV="eS!!ue, 1Zkv₷d}6br#nB+JUoM!ә1Xao%J_1 xaPr ))bAD aY' xH!=}󁒦pT>3c35O"NO/M4@ ]7{P&FwtdHXdbZw;$ LIpm{;1pO#jm qF(й%$O4EpI#G9ӹ(SÃ;aO9w7Z`Soݮ4t~GeH Հñ䄕TFkc@S(S[kq=;85b `U؉qd i$d#CJ&Zk^Gم̨'ĉ2cu+v~b#h  pj̨9߫xjnE8+Z * FtM-z{@[OĦP4v~OJa<0kLxIU޻UEu6`v-5 IDAT{Đ9_OX&b1B1(BF 8v1s=/CO FQ'ʑÑGvrFcnZkm'8;dQ\ `ƄFqJU(r^WD+BX@=n+XƐtSMFQnv7V)yox/HK4 A$.@a3;Mhv+#_@ėOϘvNXkso{l[)psk4Fіjz,, `wB񶙐GFH ;`IH^$a̱NZA@ٹVľ `OŦyʤkʸ"i7TAku:4t0ִc^yYGPsHfFv>y"xk*ZO B3 xet"k¢*xl%ŠS|IV!(Iڹ)N@D$'({; =uHW/6tl Bv7CG\ 2 :b: hWPd'~ޏ9pgD.q@`^8U̽F{9Rj5(-+;`X4!eL"@ҳ C0C0@1-Q HkwuĔ&8M8ys[͑pSI >^r/9KvHhم%pV| M&{oļf2XgF\H*=z$DeW'PA;vÀd#]]tBKbx K=Oh8݄ɉN ׌SLj kcJoɭƟs/kRz\V?46 J}MXM8[-=E,:LDTDP BZ@MtuzҼn1`~\Ļg#m \v{Bj_?V+}. t\ $O~#ΎtukyϞV+*9Yz@0s Y#yDC!@ g0Dw{n_Kwl "hTՈa?H+f"i6ۄXtnǺ{<Հ\V|/^hX h q.Dp.*P{%K z{z@dǮpCoal CaS?DР> >PԪYC\:V/'t§ \oىMC_k.[;l._\WDXk `4tXUG Bzݎݠá;Àj&G%l>+ֿ0Lp8#Ox>儏 CdY v|jY\PtCZyX2R+-B1!=}~(q?ٱ{cw3:]GuhW PKxa؅*>Js0 P7X<Պ22Sk>_P? ˹tv~._>?f9Hh&g_ȹDY5*JQd0PEPAU * Cd {vOn}UG Km!J LC$)dj-u1Ϙ~O9YJ+tPzȃ?:# Ge_nK89ei6*>_BDtL{!F^{qsc"}麀HO%(]c@ 7̐yah `8B$ٍC4(s8R~5/˷埻[Gq/Te~oo=?@]` ۛa߳:>IA?x>D !fHRUK +nHO۟0 H 0 trp$koVz[ o3/j,,]iE{E 1]mnz~Tl -J/;2N7y*Sf:fc־kл ]Ōڪ6T(6}j|B)I9tpꅗ;'qN5WWmxF^B`g!NJNr'wLZ%PIhf'XU&annn{GCUi7GT~'6T?7H~-e11b#מ|5̍":^+:gO!@`04 1S{F1@\kBI*PZi0&9Z >uef HWr w=B$!9 ?2603Jh/xhHqD`0MF XY:rۂWd|/IDR@t^N kPBt.-Xbh qXY-BuW Ѓ6}Nnѱ)ĻB]"kiq)$ *y4tL0pNx?Av 3i6݃b2 } ! 0h13DKV R~v땆z1Ah!2AIZCSdrb!GvӉ襇n~)еy >nA{'R_S+U">7jxStX;WEdvKNjfRjQbGǽ XHr4g|"Z1 u S=pWbW7>xL "ZW%P}\ M4F"-e t 7$?bɜ*2 Kϫ Y0. *dq0'&i @ĒHt^Km!\^G~?o.mm`X 4V͗ͅ{܇~tqU<vxbyDl0hs&B.9-mԑ?26لv{b!Kp9wm¦>kߪP@̑Һ[\;hR:uqHuR*u8Z`BԉsHƌ;u:e{b NLt@ 0!*{H#G$x:'0<պfǙ]QmUM|6bPz6SjB ;H=r-`5꿬uE7UzOk>GsZᗶ5AKݷY%G|)!">!8ZR%U4yGĦ>:,֣!!Arkͷ*.HH 0ܡSuX֙Ʋץ\9x1v$6KjML=: ]]]7!(:G=a<Ѝ{)&L.B uAnVLt0YAZCۆnJ­ {a:%n.o #bS ں~?F|Pu%s>Lx:x L;0J &j#FBt#+_ EfЗ痨~.kvH(S(h)}!-'[Vbq4 kod\Gp!h QN1=rs P@f`ae>1Eϫ׭,֘*0OZj ]+ -3]J<@2p>ƪB`NNtp〲/MY!Mt8}"rx;O厑;܀q0 =yc?[X;hFc]Z!n+ )3LaLteB$RPZ@'.2uΩ3N3vQ c`(嚕P- jC$sP_DüOEp أCt4iz& T;Y[6JjJ1Ov13~Z%ѕDCJt+V*,X6ɍ c䉓 H91:]p\r]J(8KTo><{x*#2pC-H&PUUkL~caS>ƫfK*T*ͺi%?DFbPϵڮU8B @1P'Vj¤p Y)E^$s`P,I"I"/es=LoAoy*7Hv!,tf1^vn’4ȩ+~frj%-BIty#PuH,Z@hM(ܩEwH P{RUL41I(=/usY <uKF?. 'y@NK ?3 ~y OgKZNpZPъ=kOʐCU^~YBrm."VLqaSp3dN^AB(~=yc ~nԿ98V}sūDӲ- K~N[7V @8\.8b+쩉 8ImŚK{^ꞣ8ID1*sgJӘ?%Rzs5Ʀ>ZF yZk*MͩY-Ĺgy UJ0)SndueHaPrHғHB@z 9c B.iʜ̘ !Cua[<aST;5ʿQYtebj %J{kX IbKpr#HɾȁBG9H5)R1˜2TqwtQ [t`S s_(*yvGt$䄺V\J}VG{Sa XWjX4c`J9:v%]zd"t$ p>ܝ1eS4N1&# uQ9v~(lAĻPťD39^w]ZQ:g?'bWBogRe erp':Wmyyk;P u> s{g嶑᧪ ȑZgO&[]*r#] IPr(9f! b=&IN4hCkmt@;خ{mSOk&B̹+K'B;ѻ_\"Ǚr5r7rQhO|+>壊VARU!Bd9.\\͈**)J.<%z5XRF2FZ!2_Z s㬴]Ri;E49o.OPQ} ݗz_\up}Y.+S/w+MR;'F }^i~E )$ia=,,r2,ӕ5,$&\%4ր,yb#k 'q-!tW5(XA*wL!0 ж%+J5劼 1}"WJV.O 5 w/h[4u ޺ _ʳ[}Cd9z:0]AաjH@NitbM\=k}oCZ\b)-XTyy6P- ˥ׯ{V 5MO-_ik\ꞁu_}wEBI-dee2?xseVR( #g%Xt@m؉hoID绍> w,_Mo`BA]"5낦Ép8uh[AA̶4P SDVJ[i,9?^KΔ6&|^pu?DHCX"˴)Gs^x6AYd`Lr&.AKLQV6 )_oF88N QK>,g(L&&7!"X6~+atNZ>2fr3vr_-1jae=.,Ǖ4(rDq1"n #O;`;A9H`QϬ<3u.eˬn?hǘ+o&ϻw#1 a,ذS|Cë'uOܪ_@WBTP=<\vRw)ҳ4y[/k!:̧mu \P>l FF{cH9cQc6cqaes,|0j)rVJάԙuC&x߿wGNR, IDATlb3sz%匉el_B߉_PSS~~qJ|cg%bͭ_A,?o'.b5շ+a!HSn)b0;=2[)#%2uzP,)s$+ìϹ0x%xcwǁ<8ffeeS=?-?돨w!<s$\w-PAB+5GzYIׅtugO <Yet| ڮ'%Ry(d$F$gpv`8ݿptct #R8i:Z' Zraip8G3N=sYs$t)"BhSaL @WőΎx1 j3ʌ&hYlBIj"YY#IW[sxj[L&)"$ֶ-[r!z50KZ׌?808N3FW.{~ iaMk{ox%DZߤ>}C\Lc5JRRŁf ]F`M0K f4i\=,$d+͘?;cDNCP\+WǗȥz9\c&Kbn5= @Fp^KX"x?^7L*96Qos>cmYg{H]hh$'$V2",&2&eL>9aAFz̫p:u"zj''^۸R a1&5_!Z*uT9r=%=o"m|XO.0- xTƺQN#%FP^f5k$=]Hvǝ p~Y"KXIX p2`kş藛խ1Qdږ+fSL0֚ 8q8f]nN gĶ㶈- l?j--xXmT`!/+L|:OOlؐpÊ 3N׺[ Jɶ(m][a E`ZOmϥ"S`ML]ā`o&*.ϧw"^Ym=VpK>>"Oc'LL2D* zMT\?驴~NKBE4M\܅@P<mK\z@n[v~揯k{Jdhkh3&Vszt@Kn6!ܟ8pt咮\o ljR3/bs_|(<6X90ĪW\Ygr8c7UwR=Xʚb^%NHP|AG~gf#hQAFZ:"W" ֢?շfH%K"M*81Nxma ..~5MDQshhPF< ,)%16kՑ-O.nKO7wx]>|@o_:1PdJN58k:juސmw#EE8q m]ӑ :uPhFdoFbb&x}}$؟/|=hmLXo۞~[Nׯ60yF; " 6i@y~K }xGEwFƱ'շX@Jܐ._o׮q Ov:? =7;hY_t:1߿|>, 9pt7Lly||~`W>o|~t z%g-Y_zO?#9gbSYF)u]YO5Fϥ?:%>N@ct:;;=NgttvLNg`ΎANgnNg@ct:;Ktz1} .Ύy?@7B:1]:1]:1]:1]:1]:1]:1]:1]:1]:1]:1]:?h1ZhIENDB`gambas-3.16.3/comp/src/gb.map/.project000066400000000000000000000006171411575327000174070ustar00rootroot00000000000000# Gambas Project File 3.0 Title=gb.map Startup=Form4 Icon=.hidden/control/mapview.png Version=3.15.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.db Component=gb.db.form Component=gb.net Component=gb.net.curl Description="Map viewer" Authors="Fabien Bodard" Environment="GB_GUI=gb.qt5" TabSize=2 Language=fr Type=Component Packager=1 DoNotTranslate=".src/Tests" gambas-3.16.3/comp/src/gb.map/.src/000077500000000000000000000000001411575327000166015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.src/FCarto.class000066400000000000000000000070501411575327000210100ustar00rootroot00000000000000' Gambas class file ' Static Public $prjWGS84 As Proj ' Static Public $prjLamb93 As Proj ' Static Public $prjLatLon As Proj ' ' Static Public Sub _init() ' ' $prjWGS84 = New Proj("+init=epsg:4326") ' $prjLamb93 = New Proj("+init=epsg:2154") ' $prjLatLon = New Proj("init=epsg:3857") ' '$prjMerc = New Proj("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs") ' ' End Public Sub _new() 'LoadFromPac MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "128"], "gm").SubDomains = ["0", "1", "2"] MapView1.Map.AddTile("GoogleRoad", "https://mts{s}.google.com/vt/lyrs=h@215000000&hl=fr&src=app&x={x}&y={y}&z={z}&s=Galile").SubDomains = ["0", "1"] MapView1.Map.AddShape("MyShape").Color = Color.green LoadFromFile(MapView1.Map!MyShape) ' PictureBox1.Picture = MapView1.Map.Grab(MapView1.Map!MyShape["110"].Bounds, 100, 100, 5).Picture MapView1.Map.Center = MapPoint(45.525934, -0.312252) MapView1.Map.Zoom = 17 End Public Sub LoadFromFile(hShape As Object) 'Dim hShape As New Shapes Dim hmappoints As New MapPoint[][] Dim hpoints As New MapPoint[] Dim s, t As String Dim i As Integer ' Dim c As Integer s = File.Load("./pointsparcelle") hshape.Color = Color.Green For Each t In Split(s, "\n") If t = "" Then hmappoints.Add(hpoints) hshape.AddPolygon(i, hmappoints) Inc i hmappoints = New MapPoint[][] hpoints = New MapPoint[] Else hpoints.Add(MapPoint(Scan(t, "* *")[1], Scan(t, "* *")[0])) Endif Next 'Return hshape End ' Public Function LoadFromPac() ' ' Dim hDoc As New XmlDocument ' Dim el As XmlElement ' 'Dim hshape As New Shapes ' Dim s As String ' Dim haPoly As New MapPoint[][] ' Dim hPoly As New MapPoint[] ' Dim hpoint As MapPoint ' Dim fp As New Pointf ' hDoc.Open("parcellaire.xml") ' ' For Each el In hDoc.GetElementsByTagName("gml:coordinates") ' haPoly = New MapPoint[][] ' hPoly = New MapPoint[] ' For Each s In Split(Replace(el.TextContent, "\n", " "), " ") ' hpoint = New MapPoint ' If s = "" Then Continue ' fp = New Pointf ' fp.X = Split(s)[0] ' fp.Y = Split(s)[1] ' ' fp = $prjLamb93.TransformFp($prjWGS84, fp) ' 'fp = $prjWGS84.TransformFp($prjLatLon, fp) ' 'fp = $prjMerc.Transformfp($prjLatLon, fp) ' Print fp.x, fp.y ' 'fp = $prjLamb93.Transform($prjLatLon, Split(s)[0], Split(s)[1]) ' ' hpoint.Lat = fp.y ' hpoint.Lon = fp.x ' hPoly.Add(hpoint) ' Next ' haPoly.Add(hpoly) ' ' 'hshape.AddPolygon(haPoly) ' Next ' ' ' 'Return hShape ' End Public Sub Form_Open() End Public Sub MapView1_Draw() 'Me.Text = MapView1.Map.Center.Lat End Public Sub MapView1_MouseDown() Dim i As Integer Dim hmappoints As MapPoint 'Me.Text = Geo.PixelToMapPoint(Point(Mouse.x, Mouse.y), MapView1.Map.Zoom).Lat With MapView1.Map hmappoints = Geo.PixelToMapPoint(Point(.PixelBox.X + Mouse.X, .PixelBox.Y + Mouse.Y), .Zoom) For i = 0 To MapView1.Map["MyShape"].Max 'Print MapView1.Map["MyShape"].Data[i].Box.X, MapView1.Map["MyShape"].Data[i].Box.Y, MapView1.Map["MyShape"].Data[i].Box.Right, MapView1.Map["MyShape"].Data[i].Box.BOTTOM, hmappoints.lon, hmappoints.Lat If MapView1.Map["MyShape"][i].Contains(hmappoints) Then MapView1.Map["MyShape"][i].Selected = True MapView1.Refresh Endif 'Endif Next End With End gambas-3.16.3/comp/src/gb.map/.src/FCarto.form000066400000000000000000000003411411575327000206420ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,107,65) Arrangement = Arrange.Horizontal { MapView1 MapView MoveScaled(1,2,78,52) Expand = True } { PictureBox1 PictureBox MoveScaled(80,3,20,53) } } gambas-3.16.3/comp/src/gb.map/.src/Map.class000066400000000000000000000242051411575327000203500ustar00rootroot00000000000000' Gambas class file 'TODO: Add methods to remove Tiles and Shapes Export 'Static Public Debug As Boolean Static Public Debug As Boolean '' Returns or sets the Debug messages Property Read PixelBox As Rect Property Read Bounds As MapBounds '' Returns the lat/lon coordinates at the limits of the drawed map. Property Read Count As Integer '' Returns the number of Map Layers Property Read Proxy As _MapProxy '' Returns a object used for defining proxy parameters. Property DefaultCache As String '' Returns or sets the default cache path for storing Tiles Property Top, Y As Integer Property Left, X As Integer Property Width As Integer Property Height As Integer Property Zoom As Integer '' Returns or sets the actual Map zoom level Property Center As MapPoint '' Returns or sets the center point of the map Property MaxZoom As Integer '' Returns or sets the maximum Map zoom level Private $iMaxZoom As Integer = 18 Private $iZoom As Integer = 1 Private $mpCenter As New MapPoint Private $iTop As Integer Private $iLeft As Integer Private $iWidth As Integer Private $iHeight As Integer Private tmrLoad As New Timer As "tmrLoad" Private tmrDraw As New Timer As "tmrDraw" Private $PixelBox As New Rect Private $Bounds As New MapBounds Private $PrevBox As Rect Private $iPrevent As Integer = 256 Private $aLayers As New _MapLayer[] Private $aLayerNames As New String[] Private $sCachePath As String = User.Home &/ ".cache/gb.map" Public _ShowWithEffect As Boolean Public _Proxy As _MapProxy Event Refresh Event Draw Private Function Top_Read() As Integer Return $iTop End Private Sub Top_Write(Value As Integer) $iTop = Value End Private Function Left_Read() As Integer Return $iLeft End Private Sub Left_Write(Value As Integer) $iLeft = Value End Private Function Width_Read() As Integer Return $iWidth End Private Sub Width_Write(Value As Integer) $iWidth = Value SetBoxes End Private Function Height_Read() As Integer Return $iHeight End Private Sub Height_Write(Value As Integer) $iHeight = Value SetBoxes End Private Sub SetBoxes() Dim ptCenter As Point ' Dim iMaxSize As Integer If Not $PrevBox Then $PrevBox = $PixelBox.Copy() tmrLoad.Trigger Endif 'Create the pixBox ptCenter = Geo.MapPointToPixel($mpCenter, $iZoom) 'trying to understand why "square surface"... ' 'Set a square surface on max size ' iMaxSize = Max($iWidth, $iHeight) ' ' $PixelBox.X = ptCenter.X - (iMaxSize / 2) ' $PixelBox.Y = ptCenter.Y - (iMaxSize / 2) ' $PixelBox.Right = ptCenter.x + (iMaxSize / 2) ' $PixelBox.Bottom = ptCenter.Y + (iMaxSize / 2) $PixelBox.X = ptCenter.X - ($iWidth / 2) $PixelBox.Y = ptCenter.Y - ($iHeight / 2) $PixelBox.Right = ptCenter.x + ($iWidth / 2) $PixelBox.Bottom = ptCenter.Y + ($iHeight / 2) $Bounds.TopLeft = Geo.PixelToMapPoint(Point($PixelBox.x, $PixelBox.y), $iZoom) $Bounds.BottomRight = Geo.PixelToMapPoint(Point($PixelBox.Right, $PixelBox.Bottom), $iZoom) '$PixelBox.Width = $iWidth '$PixelBox.Height = $iHeight ' Print "Largeur/hauteur", $iWidth, $iHeight ' Print $PixelBox.Right, $PixelBox.Left, $PixelBox.Right - $PixelBox.Left ' Print ptCenter.x + ($iWidth / 2), ptCenter.X - ($iWidth / 2) 'Print $PixelBox.Top, $PixelBox.Left, $PixelBox.Height, $PixelBox.Width 'a Movement ? If Abs($PixelBox.Left - $PrevBox.Left) > $iPrevent / 2 Or If Abs($PixelBox.Top - $PrevBox.Top) > $iPrevent / 2 Then $PrevBox = $PixelBox.Copy() tmrLoad.Trigger Endif 'a Resize ? If Abs($PixelBox.Width - $PrevBox.Height) > $iPrevent / 2 Or If Abs($PixelBox.Height - $PrevBox.Height) > $iPrevent / 2 Then $PrevBox = $PixelBox.Copy() tmrLoad.Trigger Endif 'tmrLoad.Trigger End Private Function PixelBox_Read() As Rect Return $PixelBox End Private Function Zoom_Read() As Integer Return $iZoom End Private Sub Zoom_Write(Value As Integer) Dim i As Integer $iZoom = Min(Max(Value, 1), $iMaxZoom) For i = 0 To $aLayers.Max $aLayers[i].Refresh Next SetBoxes tmrLoad.Trigger End Private Function Center_Read() As MapPoint Return $mpCenter End Private Sub Center_Write(Value As MapPoint) 'Print Value.Lat, Value.Lon $mpCenter = Value SetBoxes End Public Sub tmrLoad_Timer() Dim hLayer As _MapLayer For Each hLayer In $aLayers If hLayer.Visible Then hLayer._Load Next End Public Sub Resize(iWidth As Integer, iHeight As Integer) $iWidth = iWidth $iHeight = iHeight SetBoxes End '' Adds a new Tileset Layer from remote server or local cache to the current Map '' - Name '' - Pattern '' - Args '' - Cachename defines local folder name to store Tiles. '' If CacheName is provided, stores and load Tiles in/from local cache path defined by *DefaultCache* property. Public Sub AddTile(Name As String, Pattern As String, Optional Args As Collection, Optional CacheName As String) As _MapTile Dim hLayer As New _MapTile(CacheName, Me) 'hLayer.Pattern = Pattern hLayer.SetPattern(Pattern, Args) $aLayers.Add(hLayer) $aLayerNames.Add(Name) 'Object.Attach(hLayer, Me, "Layer") Return hLayer End '' Adds a new Shape Layer to the current Map '' - Name Public Function AddShape(Name As String) As _MapShape Dim hLayer As New _MapShape(Me) hLayer.Name = Name $aLayers.Add(hLayer) $aLayerNames.Add(Name) 'Object.Attach(hLayer, Me, "Layer") 'If Shape Then hLayer.Data = Shape Return hLayer End '' Removes a Layer '' - Name is any Tile or Shape Layer Public Sub Remove(Name As String) 'If Not $aLayerNames.Exist(Name) Then Error.Raise("Layer not found: " & Name) Dim iRet As Integer = $aLayerNames.Find(Name) $aLayers.Remove(iRet) $aLayerNames.Remove(iRet) End '' Returns if a given Layer actually exists '' - Name '' - The Mode argument is one of the comparison methods available. '' See Predefined Constants For a list Of comparison methods. Public Function Exists(Name As String, Optional Mode As Integer) As Boolean Return $aLayerNames.Exist(Name, Mode) End '' Returns a _MapTile Layer object '' This is an alternative method to fetch Map array elements '' - Name is a Tile name Public Sub GetTile(Name As String) As _MapTile Try Return $aLayers[$aLayerNames.Find(Name)] End '' Returns a _MapShape object layer '' This is an alternative method to fetch Map array elements Public Sub GetShape(Name As String) As _MapShape Try Return $aLayers[$aLayerNames.Find(Name)] End '' Hidden method so can be an readable Array '' - Returns any Layer Object, whatever its a MapTile or MapShape '' - See GetTile or GetShape Public Sub _get(Name As String) As Object Try Return $aLayers[$aLayerNames.Find(Name)] End '' Hidden method so can be enumerable Public Sub _next() As Object If IsNull(Enum.Index) Then Enum.Index = 0 Else Inc Enum.Index If Enum.Index > $aLayers.Max Then Enum.Stop Return Endif Return $aLayers[Enum.Index] End Public Sub Draw() Dim hLayer As _MapLayer Dim sCopyright As String Dim iTextHeight, iTextWidth As Integer 'Draw.Rect(0, 0, Me.Width, Me.Height) For Each hLayer In $aLayers If hLayer.Visible Then hLayer.Draw sCopyright &/= hLayer.Copyright Endif Next If sCopyright Then Draw.FillStyle = Fill.Solid Draw.FillColor = Color.SetAlpha(Color.Pink, 150) iTextHeight = Draw.TextHeight(sCopyright) iTextWidth = Draw.TextWidth(sCopyright) Draw.Rect(Draw.Width - iTextWidth - 5, Draw.Height - iTextHeight - 2, iTextWidth + 6, iTextHeight + 4) Draw.Text(sCopyright, Draw.Width - iTextWidth, Draw.Height - iTextHeight) Endif Raise Draw End Public Sub Layer_Refresh() tmrDraw.Trigger End Public Sub tmrDraw_Timer() Raise Refresh End Public Sub Refresh() SetBoxes tmrLoad.Trigger End ' Private Function Preload_Read() As Boolean ' ' End ' ' Private Sub Preload_Write(Value As Boolean) ' ' End Private Function Bounds_Read() As MapBounds Return $Bounds End '' Return an image of the given bounds, with '' the given With And height, With the given margin arround.If '' the zoom Is Not defined Then the better rendering zoom Is Used. Public Function Grab(Bounds As MapBounds, iWidth As Integer, iHeight As Integer, Optional Padding As Integer, Optional Zoom As Integer) As Image Dim i As Integer Dim hBndCenter As MapPoint = MapPoint((Bounds.Lat + Bounds.Lat2) / 2, (Bounds.Lon + Bounds.Lon2) / 2) Dim hPix, hPix2 As Point Dim hImg As New Image(iWidth, iHeight, Color.white) Dim bLoad As Boolean Dim hLayer As _MapLayer 'Définir la zone a afficher 'On centre la carte sur le bound Me.Center = hBndCenter Me.Resize(iwidth, iHeight) If Zoom Then Me.Zoom = Zoom Else For i = $iMaxZoom To 1 Step -1 hpix = Geo.MapPointToPixel(hBndCenter, i) hPix2 = Geo.MapPointToPixel(Bounds.BottomRight, i) If (hPix2.X - hpix.X) <= (iWidth / 2 - Padding) And If (hpix.Y - hPix2.Y) <= (iHeight / 2 - Padding) Then Break Endif Next Me.Zoom = i Endif tmrLoad_Timer Repeat bLoad = False For Each hLayer In $aLayers If hLayer.loading = True Then bLoad = True Wait Next Until bLoad = False Draw.Begin(hImg) Draw() Draw.End Return hImg End '' Return a Point relative to the view from a MapPoint Public Function MapPointToPixelRel(hMapPoint As MapPoint) As Point Dim hPoint As Point hPoint = Geo.MapPointToPixel(hMapPoint, $iZoom) hPoint.X -= $PixelBox.X hPoint.Y -= $PixelBox.Y Return hPoint End '' Return a MapPoint from a point relative to the view Public Function PixelToMapPointRel(hPoint As Point) As MapPoint Dim pt As Point = hPoint.Copy() pt.X += $PixelBox.X pt.Y += $PixelBox.Y Return Geo.PixelToMapPoint(pt, $iZoom) End Private Function Count_Read() As Integer Return $aLayers.Count End Private Function MaxZoom_Read() As Integer Return $iMaxZoom End Private Sub MaxZoom_Write(Value As Integer) $iMaxZoom = Value End Private Function Proxy_Read() As _MapProxy If Not _Proxy Then _Proxy = New _MapProxy Return _Proxy End Private Function DefaultCache_Read() As String Return $sCachePath End Private Sub DefaultCache_Write(Value As String) 'TODO: check if Ok $sCachePath = Value End gambas-3.16.3/comp/src/gb.map/.src/MapView.class000066400000000000000000000205451411575327000212060ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _Properties As String = "*,Border{Border.*},AllowEffect=true,ShowControls=true" Public Const _Group As String = "View" Property Read {Map} As Map '' Returns the inner Map object 'Property Read DefaultProxy As _MapProxy '' Returns or sets Default Proxy parameters. Property Lock As Boolean Property Border As Integer '' Returns or sets the border type of the control. Property AllowEffect As Boolean '' Returns or sets this Control visual effects. Property ShowControls As Boolean '' Returns or sets Zoom control. ' Property Mode As Integer ' Private $iMode As Integer Private $bShowControls As Boolean = True Private $hCenter As MapPoint Private $hMap As New Map As "Map" Private $hView As DrawingArea Private $hPan As New Panel(Me) Private $pCurCenterPx As Point Private $iX As Integer Private $iY As Integer Private $bLock As Boolean Private $hZoomBuffer As New Image Private $bZoomEffect As Boolean Private $tmrZoom As New Timer As "tmrZoom" Private $tmrOnMove As New Timer As "tmrOnMove" Private $fZoomEffect As Float = 1 Private $ZX As Integer Private $ZY As Integer Private $iZoomWay As Integer Private $fSpeedX As Float Private $fSpeedY As Float Private $fInertia As Float = 0.90 Private $bShowInertia As Boolean Private $bAllowEffect As Boolean = True Private $hViewLayer As New _ViewLayer As "ViewLayer" Private $tX As Integer Private $tY As Integer ' Public _Proxy As _MapProxy Event Click Event Draw Public Sub _new() $hPan.Arrangement = Arrange.Fill $hView = New DrawingArea($hPan) As "View" Me.Proxy = $hView $hMap.resize($hView.ClientW, $hView.ClientH) $hmap._ShowWithEffect = True $hView.Tracking = True $hView.Padding = True $hView.Background = Color.DarkGray $tmrZoom.Delay = 30 $tmrOnMove.Delay = 30 '$hmap.Padding = 256 End Public Sub _GetMaxZoom() As Integer Return $hmap.MaxZoom End Public Sub SetCenter(hMapPoint As MapPoint) $hCenter = hMapPoint End Private Function Map_Read() As Map Return $hMap End Public Sub View_Draw() If Not $bZoomEffect Then If $iZoomWay <> 0 Then Paint.DrawImage($hZoomBuffer, 0, 0) Endif $hMap.Draw Raise Draw If $bShowControls Then $hViewLayer._Draw Else If $iZoomWay = 1 Then Paint.DrawImage($hZoomBuffer, ($ZX - $ZX * $fZoomEffect), ($ZY - $ZY * $fZoomEffect), $hZoomBuffer.Width * $fZoomEffect, $hZoomBuffer.Height * $fZoomEffect) $fZoomEffect += 0.1 If $fZoomEffect < 2 Then Else $bZoomEffect = False $fZoomEffect -= 0.1 Draw.Begin($hZoomBuffer) Paint.DrawImage($hZoomBuffer, ($ZX - $ZX * $fZoomEffect), ($ZY - $ZY * $fZoomEffect), $hZoomBuffer.Width * $fZoomEffect, $hZoomBuffer.Height * $fZoomEffect) Draw.End $fZoomEffect = 1 $tmrZoom.stop Refresh '$tmrZoom.Trigger Endif Else Paint.DrawImage($hZoomBuffer, (Paint.Width - $hZoomBuffer.Width * $fZoomEffect) / 2, (Paint.Height - $hZoomBuffer.Height * $fZoomEffect) / 2, $hZoomBuffer.Width * $fZoomEffect, $hZoomBuffer.Height * $fZoomEffect) $fZoomEffect -= 0.04 If $fZoomEffect > 0.5 Then '$tmrZoom.Trigger Else $bZoomEffect = False $fZoomEffect += 0.04 Draw.Begin($hZoomBuffer) Draw.FillRect(0, 0, Paint.Width, Paint.Height, $hView.Background) Paint.DrawImage($hZoomBuffer, (Paint.Width - $hZoomBuffer.Width * $fZoomEffect) / 2, (Paint.Height - $hZoomBuffer.Height * $fZoomEffect) / 2, $hZoomBuffer.Width * $fZoomEffect, $hZoomBuffer.Height * $fZoomEffect) Draw.End $fZoomEffect = 1 $tmrZoom.Stop Refresh '$tmrZoom.Trigger Endif Endif If $bShowControls Then $hViewLayer._Draw Endif End Public Sub View_MouseWheel() Dim hCenter As MapPoint Dim iMidViewX, iMidViewY As Integer If $bLock Then Return Draw.Begin($hZoomBuffer) Draw.FillRect(0, 0, Draw.Width, Draw.Height, Color.Transparent) $hmap.Draw Draw.End If Mouse.Delta > 0 Then _ZoomUp(Mouse.X, Mouse.Y) $hMap.Center = Geo.PixelToMapPoint(Point($hMap.PixelBox.X + Mouse.X, $hMap.PixelBox.Y + Mouse.Y), $hmap.Zoom) Else iMidViewX = $hView.ClientW / 2 iMidViewY = $hView.ClientH / 2 hCenter = $hmap.PixelToMapPointRel(Point(Mouse.x, Mouse.y)) _ZoomDown(Mouse.X, Mouse.Y) $hMap.Center = hCenter hcenter = $hmap.PixelToMapPointRel(Point(iMidViewX - (Mouse.X - iMidViewX), iMidViewY - (Mouse.Y - iMidViewY))) $hmap.Center = hcenter Endif $hView.Refresh End '' Saves actual MapView picture as file '' - For file format and quality check '' [http://gambaswiki.org/wiki/comp/gb.qt4/image/save] ' Public Sub Save(Path As String, Optional Quality As Integer) ' 'http://sourceforge.net/p/gambas/mailman/message/32083180/ ' ' Dim hPicture As New Picture($hView.W, $hView.H) ' Dim bControlState As Boolean = Me.ShowControls ' ' If bControlState = True Then Me.ShowControls = False ' ' Paint.Begin(hPicture) ' ' DrawMap() ' Paint.End() ' ' Me.ShowControls = bControlState ' ' If Exist(Path) Then ' Error.Raise("File already exists: " & Path) ' Else ' hPicture.Save(Path, Quality) ' Endif ' ' End Public Sub _ZoomUp(X As Integer, Y As Integer) $ZX = X $ZY = Y If $bAllowEffect Then Draw.Begin($hZoomBuffer) Draw.FillRect(0, 0, Draw.Width, Draw.Height, Color.Transparent) $hmap.Draw Draw.End If $hmap.Zoom <= $hmap.MaxZoom Then $iZoomWay = 1 $bZoomEffect = True $tmrZoom.Start Endif Endif Inc $hMap.Zoom End Public Sub _ZoomDown(X As Integer, Y As Integer) $ZX = X $ZY = Y If $bAllowEffect Then Draw.Begin($hZoomBuffer) Draw.FillRect(0, 0, Draw.Width, Draw.Height, Color.Transparent) $hmap.Draw Draw.End If $hmap.Zoom > 1 Then $iZoomWay = -1 $bZoomEffect = True $tmrZoom.Start Endif Endif Dec $hMap.Zoom '$hmap.Center = $hmap.Center End Public Sub Map_Refresh() $hView.Refresh End Public Sub View_MouseDown() $hView.Mouse = Mouse.Pointing $iX = Mouse.X $iY = Mouse.Y $pCurCenterPx = Geo.MapPointToPixel($hmap.Center, $hmap.Zoom) $bShowInertia = False $tmrOnMove.Stop If $bShowControls Then $hViewLayer._MouseDown() 'Raise MouseDown End Public Sub View_MouseUp() Last.Mouse = Mouse.Default If $bAllowEffect Then If Abs($fSpeedx) > 4 Or If Abs($fSpeedY) > 4 Then $tmrOnMove.Start Endif If $bShowControls Then $hViewLayer._MouseUp() 'Raise MouseUp End Public Sub View_MouseMove() Dim hPix As Point If Mouse.Left And Not $bLock Then hPix = New Point($pCurCenterPx.X, $pCurCenterPx.Y) $fSpeedX = $tx - Mouse.X $fSpeedY = $ty - Mouse.y hPix.X += $ix - Mouse.X hPix.Y += $iY - Mouse.Y $hmap.Center = Geo.PixelToMapPoint(hpix, $hmap.Zoom) $iZoomWay = 0 $hView.Refresh Endif $tx = Mouse.X $ty = Mouse.y If $bShowControls Then $hViewLayer._MouseMove() 'Raise MouseMove End Public Sub View_Arrange() $hMap.Resize($hView.ClientW, $hView.ClientH) $hZoomBuffer.Resize($hView.ClientW, $hView.ClientH) $iZoomWay = 0 $hmap.Refresh $hView.Refresh End Private Function Lock_Read() As Boolean Return $bLock End Private Sub Lock_Write(Value As Boolean) $bLock = Value End Public Sub Refresh() $hmap.Refresh $hView.Refresh End Private Function Border_Read() As Integer Return $hPan.Border End Private Sub Border_Write(Value As Integer) $hPan.Border = Value End Public Sub tmrZoom_Timer() 'Wait 3 $hView.Refresh End Public Sub tmrOnMove_Timer() Dim hpix As Point 'Print "triger" hPix = Geo.MapPointToPixel($hmap.Center, $hmap.Zoom) $fSpeedX *= $fInertia $fSpeedY *= $fInertia If Abs($fSpeedX) < (1 - $fInertia) Or If Abs($fSpeedY) < (1 - $fInertia) Then $tmrOnMove.stop $bShowInertia = False Endif hPix.X += $fSpeedX hPix.Y += $fSpeedY $hmap.Center = Geo.PixelToMapPoint(hpix, $hmap.Zoom) $hView.Refresh End Private Function AllowEffect_Read() As Boolean Return $bAllowEffect End Private Sub AllowEffect_Write(Value As Boolean) $bAllowEffect = Value If Not $bAllowEffect Then $iZoomWay = 0 End Private Function ShowControls_Read() As Boolean Return $bShowControls End Private Sub ShowControls_Write(Value As Boolean) $bShowControls = Value End ' Private Function Mode_Read() As Integer ' ' ' ' End ' ' Private Sub Mode_Write(Value As Integer) ' ' ' ' End gambas-3.16.3/comp/src/gb.map/.src/Shapes/000077500000000000000000000000001411575327000200245ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.src/Shapes/_ShapeItem.class000066400000000000000000000061031411575327000230710ustar00rootroot00000000000000' Gambas class file ''' This class define the Shape Item. 'Export Property Read Key As String '' Returns his Item's Key name Property Selected As Boolean '' Returns or sets if this Item is selected 'Property Color As Integer Property Bounds As MapBounds Private $sKey As String Private $bSelected As Boolean = False Private $hBounds As MapBounds 'Private $fLineStyle As Integer Public Type As Integer '' Returns or sets this Item's type (Point, MultiPoint, Polyline, Polygon, Circle) Public Points As Object '' Returns or sets the MapPoints that make up this Item Public Center As MapPoint '' Returns or sets the Item's center in MapPoint Public Radius As Float '' Returns or sets this Item radius, if circle 'Public Bounds As New MapBounds Public {Color} As Integer = -1 '' Returns or sets this Item Color, or outline color, if applicable Public FillColor As Integer = -1 '' Returns or sets this Item Fill Color, if applicable Public LineWidth As Integer = -1 '' Returns or sets this Item Line Width, if applicable Public LineStyle As Integer = -1 '' Returns or sets this Item's Line Style, if applicable Public Image As Image '' Returns or sets this Item's Icon. If Color is defined, Icon will be colorized. Event Select Public Sub _New(Key As String) $sKey = Key $hBounds = New MapBounds End Public Function Contains(hMapPoint As MapPoint) As Boolean If $hBounds.Lon < hMapPoint.Lon And $hBounds.lon2 > hMapPoint.Lon Then If $hBounds.Lat > hMapPoint.Lat And $hBounds.Lat2 < hMapPoint.Lat Then Return True Endif Endif Return False End Public Function Near(hMapPoint As MapPoint, iZoom As Integer, Padding As Integer) As Boolean Dim hTLPoint, hBRPoint As Point Dim hPoint As Point = Geo.MapPointToPixel(hMapPoint, iZoom) hTLPoint = Geo.MapPointToPixel($hBounds.TopLeft, iZoom) hTLPoint.X -= Padding hTLPoint.Y -= Padding hBRPoint = Geo.MapPointToPixel($hBounds.BottomRight, iZoom) hBRPoint.X += Padding hBRPoint.Y += Padding Return Rect(hTLPoint.X, hTLPoint.Y, hBRPoint.x, hBRPoint.Y).Contains(hPoint.X, hPoint.Y) End ' Public Sub Delete() ' ' Dim hParent As _MapShape = Object.Parent(Me) ' ' hParent.Remove(Key) ' ' End Private Function Selected_Read() As Boolean Return $bSelected End Private Sub Selected_Write(Value As Boolean) $bSelected = Value Raise Select End Private Function Key_Read() As String Return $sKey End Private Function Bounds_Read() As MapBounds 'just a workaround to relocate circles If Type = 33 Then Dim P1, P2, P3, P4 As MapPoint P1 = MapPoint.From(Center, 0, Radius) P2 = MapPoint.From(Center, 90, Radius) P3 = MapPoint.From(Center, 180, Radius) P4 = MapPoint.From(Center, 270, Radius) $hBounds.TopLeft = MapPoint(P1.Lat, P4.Lon) $hBounds.BottomRight = MapPoint(P3.Lat, P2.Lon) Endif Return $hBounds End Private Sub Bounds_Write(Value As MapBounds) 'If Not $hBounds Then $hBounds = New MapBounds $hBounds = Value End gambas-3.16.3/comp/src/gb.map/.src/Sprite.class000066400000000000000000000030561411575327000211020ustar00rootroot00000000000000' Gambas class file Private $hRect As Rect Property {Image} As Image Property X As Integer Property Y As Integer Property Height As Integer Property Width As Integer Property Read {Rect} As Rect Private $hImage As Image Public Sub _new(hImage As Image, Optional hRect As Rect) $hImage = hImage If hRect Then $hRect = hRect Else $hRect = Rect(0, 0, $hImage.Width, $hImage.Height) Endif End Public Sub Draw() Draw.Image($hImage, $hRect.x, $hRect.Y, $hRect.Width, $hRect.Height) End Private Function Image_Read() As Image Return $hImage End Private Sub Image_Write(Value As Image) $hImage = Value End Public Sub Move(X As Integer, Y As Integer, Optional Width As Integer, Optional Height As Integer) $hRect.X = X $hRect.Y = Y If Width Then $hRect.Width = Width If Height Then $hRect.Y = Height End Public Sub Resize(Width As Integer, Height As Integer) $hRect.Width = Width $hRect.Height = Height End Private Function X_Read() As Integer Return $hRect.X End Private Sub X_Write(Value As Integer) $hRect.X = Value End Private Function Y_Read() As Integer Return $hRect.Y End Private Sub Y_Write(Value As Integer) $hRect.Y = Value End Private Function Height_Read() As Integer Return $hRect.Height End Private Sub Height_Write(Value As Integer) $hRect.Height = Value End Private Function Width_Read() As Integer Return $hRect.Width End Private Sub Width_Write(Value As Integer) $hRect.Width = Value End Private Function Rect_Read() As Rect Return $hRect End gambas-3.16.3/comp/src/gb.map/.src/Tests/000077500000000000000000000000001411575327000177035ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.src/Tests/FMain.class000066400000000000000000000124731411575327000217330ustar00rootroot00000000000000' Gambas class file Private hMap As New Map As "LensMap" Private $aNames As New String[] Private $iMX As Integer Private $iMY As Integer Private $bLens As Boolean Private hPicture As Picture Public Sub _new() Dim o As Object Dim hmp As MapPoint 'Dim hShapes As Shapes = Shapes.LoadKml("parcellaire.kml") hPicture = New Picture(200, 200) MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "162"], "GMapCache").SubDomains = ["0", "1", "2"] MapView1.Map["GoogleMap"].Visible = False With MapView1.Map.AddTile("OpenStreet", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", Null) '.Opacity = 0.5 .Copyright = "OpenStreetMap contributors" .Opacity = 0.5 End With 'MapView1.Map.AddShape("test") MapView1.Map.AddTile("Virtual Earth", "http://ecn.dynamic.t{s}.tiles.virtualearth.net/comp/ch/{q}?mkt=fr-fr&it=G,VE,BX,L,LA&shading=hill&n=z&cb=1").SubDomains = ["0", "1", "2"] 'Map for lens hmap.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "141"]).SubDomains = ["0", "1", "2"] 'hmap.Padding = 256 hmap.Resize(200, 200) MapView1.Map.AddShape("NewShape") hmp = Proj("epsg:3946").TransformMPoint(Proj("epsg:4326"), MapPoint(5152182, 1442096)) 'hmp = Proj("epsg:3946").TransformMPoint(Proj("epsg:4326"), MapPoint(-2.4500, 45.0000)) MapView1.Map!NewShape.AddPoint("archiac", hmp) MapView1.Map!NewShape.AddPoint("archiac2", MapPoint(0, 0)) Print MapView1.Map!NewShape[0].Center.Lat 'MapView1.Map["NewShape"].Points = LoadShapes() 'MapView1.ShowControls = False 'Manage the list of layers For Each o In MapView1.Map $aNames.Add(o.Name) Next GridView1.Rows.count = $aNames.Count GridView1.Columns.Count = 2 GridView1.Columns[0].Width = 32 GridView1.Rows.Height = 32 End Public Sub Form_Open() End Public Sub MapView1_MouseDown() Dim hMapPoint As New MapPoint[][] 'Print "mousedown" If Mouse.Control Then hmap.Zoom = MapView1.map.Zoom + SpinBox1.Value $bLens = True hmap.Center = Geo.PixelToMapPoint(point(MapView1.Map.PixelBox.X + Mouse.X, MapView1.Map.PixelBox.Y + Mouse.y), MapView1.Map.Zoom) MapView1.Lock = True MapView1.Refresh Endif If Mouse.Shift Then If MapView1.Map["NewShape"].Count = 0 Then hMapPoint.Add([Geo.PixelToMapPoint(point(MapView1.Map.PixelBox.X + Mouse.X, MapView1.Map.PixelBox.Y + Mouse.y), MapView1.Map.Zoom)]) MapView1.Map["NewShape"].AddPolygon("mypoly", hMapPoint) MapView1.Map["NewShape"]["mypoly"].Selected = True Else MapView1.Map["NewShape"]["mypoly"].Points[0].Add(Geo.PixelToMapPoint(point(MapView1.Map.PixelBox.X + Mouse.X, MapView1.Map.PixelBox.Y + Mouse.y), MapView1.Map.Zoom)) 'MapView1.Map["NewShape"]["mypoly"].Center = Shapes.GetCenter(MapView1.Map["NewShape"]["mypoly"].Points[0]) MapView1.Map["NewShape"].Refresh Endif 'MapView1.Map["NewShape"].Points.AddPoint(Geo.PixelToMapPoint(point(MapView1.Map.PixelBox.X + Mouse.X, MapView1.Map.PixelBox.Y + Mouse.y), MapView1.Map.Zoom)) MapView1.Refresh Endif End Public Sub MapView1_MouseMove() $iMX = Mouse.X $iMY = Mouse.Y Me.Text = Geo.PixelToMapPoint(Point(MapView1.Map.PixelBox.x + Mouse.x, MapView1.Map.PixelBox.y + Mouse.y), MapView1.Map.Zoom).Lon If $bLens Then hmap.Center = Geo.PixelToMapPoint(Point(MapView1.Map.PixelBox.X + Mouse.X, MapView1.Map.PixelBox.Y + Mouse.y), MapView1.Map.Zoom) MapView1.Refresh Endif End Public Sub MapView1_MouseUp() If $bLens Then $bLens = False MapView1.Lock = False MapView1.Refresh Endif End Public Sub MapView1_Draw() If $bLens Then Paint.Begin(Draw.Device) 'Draw the lens temporary picture Draw.Begin(hPicture) Draw.FillRect(0, 0, hPicture.Width, hPicture.Height, Color.DarkGray) hmap.Draw Draw.End 'And put it in a circle with a blue border Paint.Brush = Paint.Image(hPicture.Image, $iMX - 100, $iMY - 100) Paint.Arc($iMX, $iMY, 100) Paint.Fill(True) Paint.Brush = Paint.Color(Color.Blue) Paint.Stroke Paint.End Endif ' ListBox1.Clear ' ListBox1.List = MapView1.Map["GoogleMap"].$aStack 'Me.Text = MapView1.Map["GoogleMap"].CountActiveClients() End Public Sub GridView1_Data(Row As Integer, Column As Integer) Select Case Column Case 0 Last.Data.Picture = IIf(MapView1.Map[$aNames[row]].Visible, Picture["icon:/22/ok"], Picture["icon:/22/cancel"]) Case 1 Last.Data.Text = $aNames[row] End Select End Public Sub GridView1_MouseUp() If Last.column = 0 Then MapView1.Map[GridView1[Last.row, 1].Text].Visible = Not MapView1.Map[GridView1[Last.row, 1].Text].Visible GridView1.Refresh End Public Sub Button1_Click() MapView1.Map.Center = MapPoint(Geo.SexToDec("45°31'33,33''N"), Geo.SexToDec("0°18'43,50''W")) Print Geo.SexToDec("45°31'33,33''N") MapView1.Map.Zoom = 17 MapView1.Refresh End Public Sub LensMap_Refresh() 'Resfresh the view when the Lensmap say it need to be refreshed 'This call the MapView_Draw Event then so the lens is refreshed too MapView1.Refresh End Public Sub SpinBox1_Change() 'Change the lens zoom hmap.Zoom = MapView1.map.Zoom + SpinBox1.Value End Public Sub GridView1_Click() End Public Sub Panel3_MouseDown() End Public Sub Panel1_MouseDown() End gambas-3.16.3/comp/src/gb.map/.src/Tests/FMain.form000066400000000000000000000011771411575327000215700ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,97,64) Arrangement = Arrange.Vertical { Panel1 HBox MoveScaled(-1,-5,97,55) Expand = True { MapView1 MapView MoveScaled(12,10,16,16) Expand = True } { GridView1 GridView MoveScaled(72,11,25,35) Mode = Select.Single Grid = False } } { Panel2 Panel MoveScaled(8,55,87,6) { SpinBox1 SpinBox MoveScaled(14,0,19,4) MaxValue = 3 Value = 1 } { Button1 Button MoveScaled(36,1,49,4) Text = ("Maison") } { Label1 Label MoveScaled(1,1,12,3) Text = ("Lens") } } } gambas-3.16.3/comp/src/gb.map/.src/Tests/FTestWmts.class000066400000000000000000000010751411575327000226350ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() With MapView1.Map.AddTile("geo", "http://gpp3-wxs.ign.fr/5wp1szpgg6loqy21tpi5wmv8/geoportail/wmts") .WMSArgs["SERVICE"] = "WMTS" .WMSArgs["REQUEST"] = "GetTile" .WMSArgs["VERSION"] = "1.0.0" .WMSArgs["LAYER"] = "ORTHOIMAGERY.ORTHOPHOTOS" .WMSArgs["STYLE"] = "normal" .WMSArgs["TILEMATRIXSET"] = "PM" .WMSArgs["TILEMATRIX"] = "{z}" .WMSArgs["TILEROW"] = "{y}" .WMSArgs["TILECOL"] = "{x}" .WMSArgs["FORMAT"] = "image/jpeg" End With End Public Sub MapView1_MouseDown() End gambas-3.16.3/comp/src/gb.map/.src/Tests/FTestWmts.form000066400000000000000000000001611411575327000224660ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { MapView1 MapView MoveScaled(2,5,60,43) } } gambas-3.16.3/comp/src/gb.map/.src/Tests/Form1.class000066400000000000000000000022651411575327000217230ustar00rootroot00000000000000' Gambas class file Private $Map As New Map As "Map" Public Sub Form_Open() $Map.AddTile("OpenStreet", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", Null, "os") $Map.AddShape("MyShape") $Map!MyShape.AddPolygon("zone1", [[MapPoint(45.70534, -0.358086), MapPoint(45.709176, -0.314312), MapPoint(45.67968, -0.313454), MapPoint(45.674403, -0.36375), MapPoint(45.689634, -0.379372)]]) $Map!MyShape!zone1.Color = Color.Red PictureBox1.Picture = $Map.Grab($Map!MyShape!zone1.Bounds, PictureBox1.Width, PictureBox1.Height, 0).Picture PictureBox2.Picture = $Map.Grab($Map!MyShape!zone1.Bounds, PictureBox2.Width, PictureBox2.Height, 0).Picture PictureBox3.Picture = $Map.Grab($Map!MyShape!zone1.Bounds, PictureBox3.Width, PictureBox3.Height, 0).Picture PictureBox4.Picture = $Map.Grab($Map!MyShape!zone1.Bounds, PictureBox4.Width, PictureBox4.Height, 0).Picture PictureBox5.Picture = $Map.Grab($Map!MyShape!zone1.Bounds, PictureBox5.Width, PictureBox5.Height, 0).Picture End Public Sub Map_Draw() Dim hPoint As Point hPoint = Geo.MapPointToPixel($Map!MyShape!zone1.Center, $Map.Zoom) Draw.Foreground = Color.Red Draw.Text("Cognac", hPoint.x - $Map.PixelBox.x, hPoint.Y - $Map.PixelBox.Y) End gambas-3.16.3/comp/src/gb.map/.src/Tests/Form1.form000066400000000000000000000005721411575327000215600ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,132,67) { PictureBox1 PictureBox MoveScaled(6,3,8,7) Background = &H7F00FF& } { PictureBox2 PictureBox MoveScaled(10,13,24,19) } { PictureBox3 PictureBox MoveScaled(48,19,62,44) } { PictureBox4 PictureBox MoveScaled(6,31,8,33) } { PictureBox5 PictureBox MoveScaled(30,4,101,8) } } gambas-3.16.3/comp/src/gb.map/.src/Tests/Form2.class000066400000000000000000000055161411575327000217260ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim hClient As New HttpClient Dim _Lay As _MapTile Dim cArgs As New Collection Dim hBounds As New MapBounds Dim idep, iend As Integer Dim stext As String Dim a As String[] Dim hproj As Proj = Proj("epsg:4326") hClient.Async = False hClient.CookiesFile = Temp hClient.UpdateCookies = True hClient.URL = "http://www.cadastre.gouv.fr/scpc/rechercherPlan.do" hClient.Get() hClient.URL = "http://www.cadastre.gouv.fr/scpc/listerCommune.do?codeDepartement=017&keepVolatileSession=&listeCommuneNatValeurVueFilterField=&listeCommuneNatValeurVueFilterValue=&offset=500" hClient.Get() hClient.URL = "http://www.cadastre.gouv.fr/scpc/afficherCarteCommune.do?c=9B016&keepVolatileSession" hClient.Get() 'récupération de la zone ' sText = Replace(hClient.Peek(), "\t", "") idep = InStr(sText, "GeoBox(") + 7 iEnd = InStr(sText, ")", idep) a = Split(Replace(Mid(sText, idep, iend - idep), "\n", "")) hBounds = Proj("IGNF:RGF93CC46").TransformMBounds(Proj("epsg:4326"), MapBounds(MapPoint(CFloat(a[1]), CFloat(a[0])), MapPoint(CFloat(a[3]), CFloat(a[2])))) MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "134"]).SubDomains = ["0", "1", "2"] MapView1.Map.AddShape("mysh") MapView1.Map!mysh.Addpoint("pp", hBounds.NorthEast) MapView1.Map!mysh.Addpoint("pp2", hBounds.SouthWest) MapView1.Map.Zoom = 15 MapView1.Map.Center = hBounds.NorthEast _Lay = MapView1.Map.AddTile("CAD", "http://www.cadastre.gouv.fr/scpc/wms") With _Lay .WMSProjection = "IGNF:RGF93CC46" .SetCoockieFile(hClient.CookiesFile) .UseWebMapService = True .MaxBounds = hBounds .WMSArgs!version = "1.1" .WMSArgs!request = "GetMap" .WMSArgs!layers = "CDIF:LS3,CDIF:LS2,CDIF:LS1,CDIF:PARCELLE,CDIF:NUMERO,CDIF:PT3,CDIF:PT2,CDIF:PT1,CDIF:LIEUDIT,CDIF:SUBSECTION,CDIF:SECTION,CDIF:COMMUNE" .WMSArgs!format = "image/png" .WMSArgs!width = "256" .WMSArgs!height = "256" .WMSArgs!exception = "application/vnd.ogc.se_inimage" .WMSArgs!styles = "LS3_90,LS2_90,LS1_90,PARCELLE_90,NUMERO_90,PT3_90,PT2_90,PT1_90,LIEUDIT_90,SUBSECTION_90,SECTION_90,COMMUNE_90" '.WMSArgs!bbox = "{lon2},{lat},{lon},{lat2}" .WMSArgs!bbox = "{lon},{lat2},{lon2},{lat}" End With End Public Sub Button1_Click() MapView1.Map.Center = MapPoint(Geo.SexToDec("45°31'33,33''N"), Geo.SexToDec("0°18'43,50''W")) MapView1.Map.Zoom = 17 MapView1.Refresh End Public Sub Slider1_Change() MapView1.Map!CAD.Opacity = Last.Value / 100 End Public Sub MapView1_MouseUp() Dim hMapShape As _MapShape Dim hShape As _ShapeItem hMapShape = MapView1.map!mysh hShape = hMapShape.Find(MapView1.Map.PixelToMapPointRel(Point(Mouse.x, Mouse.Y))) If hShape Then Print hShape.Key End gambas-3.16.3/comp/src/gb.map/.src/Tests/Form2.form000066400000000000000000000004411411575327000215540ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,173,101) Arrangement = Arrange.Vertical { MapView1 MapView MoveScaled(5,4,54,50) Expand = True } { Button1 Button MoveScaled(31,53,12,8) Text = ("Button1") } { Slider1 Slider MoveScaled(5,82,133,5) } } gambas-3.16.3/comp/src/gb.map/.src/Tests/Form3.class000066400000000000000000000022201411575327000217140ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim hLay As Object Map.Debug = True ' With MapView1.Map.AddTile("geo", "http://gpp3-wxs.ign.fr/{API}/geoportail/wmts", ["API": "tyujsdxmzox31ituc2uw0qwl"]) ' .UseWebMapService = True ' .WMSArgs!service = "WMTS" ' .WMSArgs!version = "1.0.0" ' .WMSArgs!request = "GetTile" ' .WMSArgs!layer = "ORTHOIMAGERY.ORTHOPHOTOS" ' .WMSArgs!style = "normal" ' .WMSArgs!format = "image/jpeg" ' .WMSArgs!tilematrixset = "PM" ' .WMSArgs!tilematrix = "{z}" ' .WMSArgs!tilerow = "{x}" ' .WMSArgs!tilecol = "{y}" ' ' End With With MapView1.Map.AddTile("geo", "http://v2.suite.opengeo.org/geoserver/gwc/service/wmts/", ["API": "tyujsdxmzox31ituc2uw0qwl"]) .UseWebMapService = True .WMSArgs!service = "WMTS" .WMSArgs!version = "1.0.0" .WMSArgs!request = "GetTile" .WMSArgs!layer = "medford:hydro" '.WMSArgs!style = "normal" .WMSArgs!format = "image/png" .WMSArgs!tilematrixset = "EPSG:900913" .WMSArgs!tilematrix = "{z}" .WMSArgs!tilerow = "{x}" .WMSArgs!tilecol = "{y}" End With End Public Sub MapView1_MouseDown() End gambas-3.16.3/comp/src/gb.map/.src/Tests/Form3.form000066400000000000000000000001611411575327000215540ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { MapView1 MapView MoveScaled(6,9,46,36) } } gambas-3.16.3/comp/src/gb.map/.src/Tests/Form4.class000066400000000000000000000071271411575327000217300ustar00rootroot00000000000000' Gambas class file Private hMap As New Map Private hImage As Image 'Private zz As New _ShapeItem Public Sub Form_Open() Dim hbound As MapBounds 'hMap.AddTile("gg", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "145"]).SubDomains = ["0", "1", "2"] 'hImg = Scanners["hpaio:/net/HP_LaserJet_MFP_M426fdn?ip=192.168.1.25"].Scan() 'MapView1.Map.AddTile("gmap", "https://khms0.google.com/kh/v={version}?x={x}&y={y}&z={z}", ["version": "821"]).Copyright = "google" 'Authenticated proxy settings bellow ' MapView1.Map.Proxy.Auth = Net.AuthNone 'Net.AuthBasic ' MapView1.Map.Proxy.Type = Net.ProxyHTTP ' MapView1.Map.Proxy.Host = "" ' MapView1.Map.Proxy.User = "" ' MapView1.Map.Proxy.Password = "" 'Storing tiles elsewhere 'MapView1.Map.DefaultCache = "/home/tmp" MapView1.Map.AddTile("OpenStreetMap", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", Null, "OpenStreetMap1").Copyright = "© OpenStreetMap contributors" MapView1.Map.AddTile("NOAA", "https://tileservice.charts.noaa.gov/tiles/50000_1/{z}/{x}/{y}.png",, "NOAA") ', ["projection": "EPSG:3857"]) 'MapView1.Map.AddTile("NOAA", "https://tileservice.charts.noaa.gov/tiles/13003_1/{z}/{x}/{y}.png", ["projection": "EPSG:3857", "displayProjection": " EPSG: 4326 "]) '" http: / / tileservice.charts.noaa.gov / tiles / 50000 _1 / {z} / {x} / {y}.png ").SubDomains = [" 0 ", " 1 ", " 2 "]" MapView1.Map.GetTile("OpenStreetMap").Opacity = 0.3 MapView1.Map.Center = MapPoint(48.866667, 2.333333) 'MapView1.Map.GetTile("OpenStreetMap").ClearCache(10) MapView1.Map.Zoom = 10 MapView1.Map.AddShape("Shape") MapView1.Map.GetShape("Shape").Opacity = 0.5 MapView1.Map.GetShape("Shape").LineStyle = Line.Dash MapView1.Map.GetShape("Shape").AddPoint("point 1", MapPoint(48.866667, 2.333333)) MapView1.Map.GetShape("Shape").AddPoint("point 2", MapPoint(48.866667, 2.533333)).Selected = False MapView1.Map.GetShape("Shape").AddPoint("point 3", MapPoint(48.866667, 2.533333), Color.Yellow, Image.Load("plus.png")) Dim tmp1 As New MapPoint[] Dim tmp2 As New MapPoint tmp1 = [MapPoint(48.866667, 2.333333), MapPoint(48.866667, 2.433333), MapPoint(48.966667, 2.433333), MapPoint(48.966667, 2.233333)] tmp2 = MapPoint.GetCenter(tmp1) MapView1.Map.GetShape("Shape").AddMultipoint("multipoint1", tmp1, Color.green, Image.Load("plus.png")) ' MapView1.Map.GetShape("Shape").AddPolyLine("poly1", tmp1, Color.Yellow, 4, Line.DashDotDot) MapView1.Map.GetShape("Shape").AddCircle("cir1", tmp2, 5000, Color.green, 4, Line.dot, Color.Transparent) MapView1.Map.GetShape("Shape").AddCircle("cir2", tmp2, 2500, Color.red, 4, Line.dash, Color.Transparent) MapView1.Map.GetShape("Shape").AddPoint("central point", tmp2) MapView1.Map.GetShape("Shape").GetItem("poly1").Selected = True ' MapView1.Map.GetShape("Shape").AddCircle("cir", MapPoint(48.866667, 2.333333), 2000) ', Color.Red, 2, Color.Transparent) ' MapView1.Map.GetShape("Shape").GetItem("cir").center = MapPoint(48.866667, 2.433333) 'MapView1.Map ' MapView1.Map["Shape"].AddPoint("p", MapPoint(48.866667, 2.333333)) ' MapView1.Map["Shape"].AddPoint("p2", MapPoint(48.866222, 2.360583), Color.Green, Image.Load("cursor.png")) 'himage = hMap.Grab(hMap.Bounds, 200, 200, 17) Print MapPoint(48.866667, 2.333333).Distance(MapPoint(48.866667, 2.333333), MapPoint(48.866222, 2.360583)) 'hbound = MapView1.Map["Shape"]["cir"].Bounds 'Print MapPoint.Distance(hbound.TopLeft, MapPoint(hbound.Top, hbound.Right)) Debug "Shape count: " & MapView1.Map["Shape"].Count End Public Sub DrawingArea1_Draw() 'Draw.Image(himage, 0, 0) End gambas-3.16.3/comp/src/gb.map/.src/Tests/Form4.form000066400000000000000000000002461411575327000215610ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Fill { MapView1 MapView MoveScaled(2,2,56,56) AllowEffect = False } } gambas-3.16.3/comp/src/gb.map/.src/Tests/Form5.class000066400000000000000000000011521411575327000217210ustar00rootroot00000000000000' Gambas class file Public Sub _new() End Public Sub Form_Open() Dim hTile As _mapTile Map.Debug = True hTile = Mp.Map.AddTile("tile", "https://gpp3-wxs.ign.fr/5wp1szpgg6loqy21tpi5wmv8/geoportail/wmts") hTile.UseWebMapService = True hTile.WMSArgs!SERVICE = "WMTS" hTile.WMSArgs!REQUEST = "GetTile" hTile.WMSArgs!VERSION = "1.0.0" hTile.WMSArgs!LAYER = "ORTHOIMAGERY.ORTHOPHOTOS" hTile.WMSArgs!STYLE = "normal" hTile.WMSArgs!TILEMATRIXSET = "PM" hTile.WMSArgs!TILEMATRIX = "10" hTile.WMSArgs!TILEROW = "{x}" hTile.WMSArgs!TILECOL = "{y}" hTile.WMSArgs!FORMAT = "image/jpeg" End gambas-3.16.3/comp/src/gb.map/.src/Tests/Form5.form000066400000000000000000000001531411575327000215570ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { mp MapView MoveScaled(9,3,61,62) } } gambas-3.16.3/comp/src/gb.map/.src/Tests/Form6.class000066400000000000000000000017651411575327000217340ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim hPolyLine As New MapPoint[] MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "748"]).SubDomains = ["0", "1", "2"] MapView1.Map["GoogleMap"].Visible = True With MapView1.Map.AddShape("Poly") hPolyLine = [MapPoint(48.457454, -4.638139), MapPoint(51.123363, 2.217329), MapPoint(48.921609, 8.106001), MapPoint(43.833550, 7.666547), MapPoint(42.487303, 3.008345), MapPoint(43.324192, -1.825640), MapPoint(48.457454, -4.638139)] .AddPolyLine("Section 1", hPolyLine) .Color = Color.Red .["Section 1"].Color = Color.Green End With With MapView1.Map["Poly"] .AddCircle("pop", MapPoint(48.457454, -4.638139), 2000) .Opacity = 1 End With With MapView1.Map["Poly"]["pop"] .FillColor = Color.SetAlpha(Color.Yellow, 50) .Color = Color.Red .LineWidth = 2 End With MapView1.Refresh End Public Sub MapView1_MouseDown() End gambas-3.16.3/comp/src/gb.map/.src/Tests/Form6.form000066400000000000000000000002461411575327000215630ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) Arrangement = Arrange.Fill { MapView1 MapView MoveScaled(3,2,58,58) AllowEffect = False } } gambas-3.16.3/comp/src/gb.map/.src/Tests/MMain.module000066400000000000000000000013511411575327000221130ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hpoint As MapPoint hpoint = MapPoint(Geo.SexToDec("45°31'32.1''N"), Geo.SexToDec("0°18'33.8''W")) ' Dim ars As String[] ' Dim sPath As String = User.Home &/ ".cache/gb.map/GMapCache" ' Dim s As String ' Dim fSince As Float = 5 ' ars = Dir(sPath, "*.png", gb.File) ' ' ' 'Print CFloat(Date(-4801, 1, 1)) ' Print CFloat(Time(Now)) ' For Each s In ars ' Print Now, Stat(sPath &/ s).LastModified ' Print Int(CFloat(Now)), Int(CFloat(Stat(sPath &/ s).LastModified)) ' Print DateDiff(Now(), Stat(sPath &/ s).LastModified, gb.Day) ' Print Int(CFloat(Now)) - Int(CFloat(Stat(sPath &/ s).LastModified)) ' 'Print sPath &/ s, Stat(sPath &/ s).LastChange, Stat(sPath &/ s).LastModified ' ' Next End gambas-3.16.3/comp/src/gb.map/.src/Tools/000077500000000000000000000000001411575327000177015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.map/.src/Tools/Geo.module000066400000000000000000000063631411575327000216320ustar00rootroot00000000000000' Gambas module file Fast Export 'Private halfPixelGlobeSize As Integer Private $TileSize As Integer = 256 Private $initialResolution As Float = 2 * Pi * 6378137 / $tileSize Private $OriginShift As Float = 2 * Pi * 6378137 / 2.0 Public Function MapPointToTile(hMapPoint As MapPoint, Zoom As Integer) As Point Dim n As Float = 2 ^ Zoom Dim hPoint As New Point hPoint.X = Int((hMapPoint.Lon + 180.0) / 360.0 * n) hPoint.y = Int((1.0 - Log(Tan(Rad(hMapPoint.Lat)) + (1 / Cos(Rad(hMapPoint.Lat)))) / Pi) / 2.0 * n) Return hPoint End Public Function MapPointToPixel(hMapPoint As MapPoint, Zoom As Integer) As Point Dim fRes As Float = $initialResolution / (2 ^ Zoom) Dim fX, fY As Float 'Convert in Meters fX = hMapPoint.lon * $OriginShift / 180.0 fY = -(Log(Tan((90 + hMapPoint.lat) * Pi / 360.0)) / (Pi / 180.0)) * $OriginShift / 180.0 'Convert in Pixels fX = (fX + $originShift) / fRes fY = (fY + $originShift) / fRes Return Point(fX, fY) End Public Function PixelToMapPoint(hPoint As Point, Zoom As Integer) As MapPoint Dim fX, fY As Float Dim fRes As Float = $initialResolution / (2 ^ Zoom) Dim mpPoint As New MapPoint 'Convert in Meters fX = hPoint.x * fRes - $originShift fY = hPoint.y * fRes - $originShift 'Convert in Latlon mappoint mpPoint.Lon = (fX / $originShift) * 180.0 mpPoint.Lat = (fY / $originShift) * 180.0 mpPoint.Lat = -(180 / Pi * (2 * ATan(Exp(mpPoint.Lat * Pi / 180.0)) - Pi / 2.0)) Return mpPoint End Public Function PixelToTile(hPoint As Point) As Point Return Point(Int(Ceil(hPoint.X / $tileSize) - 1), Int(Ceil(hPoint.Y / $tileSize) - 1)) End '' Convert a value in sexagesimal degree to decimal '' ex: 45°53'36" -> 45,893333 Public Function SexToDec(Value As String) As Float Dim fRet As Float Dim ars As String[] 'Lat ars = Scan(Value, "*°*'*''*") fRet = Val(ars[0]) + Val(ars[1]) / 60 + CFloat(ars[2]) / 3600 If ars.Count = 4 Then Select Case UCase(ars[3]) Case "N", "E" Return fRet Case "S", "W", "O" Return -fRet End Select Endif Return fRet End '' Convert from Decimal to Sexagesimal degrees '' ex:45,893333 -> 45°53'36" '' Type 0=None 1=Lat 2=Lon Public Function DecToSex(Value As Float, Type As Integer) As String Dim iDeg As Integer Dim iMin As Integer Dim fSec As Float Dim sRet As String Select Case Type Case 0 Case 1 sret = IIf(Value > 0, "N", "S") Case 2 sret = IIf(Value > 0, "E", "W") End Select Value = Abs(Value) iDeg = Int(Value) fSec = Frac(Value) * 60 iMin = Int(fSec) fSec = Frac(fSec) * 60 sret = Subst("&1°&2'&3''", iDeg, iMin, Format(fSec, "0.##")) & sRet Return sRet End Public Function TileBounds(X As Integer, Y As Integer, Zoom As Integer) As MapBounds Dim hPointTL, hPointBR As Point Dim mp, mp2 As MapPoint hPointTL = Point(X * $tileSize, Y * $tileSize) hPointBR = Point(hPointTL.X + $tileSize, hPointTL.Y + $tileSize) mp = PixelToMapPoint(hPointTL, zoom) mp2 = PixelToMapPoint(hPointBR, zoom) Return MapBounds(PixelToMapPoint(hPointTL, zoom), PixelToMapPoint(hPointBR, zoom)) End Public Function TileToMapPoint(X As Integer, Y As Integer, Zoom As Integer) As MapPoint Return PixelToMapPoint(x * $tileSize, y * $tileSize, zoom) End gambas-3.16.3/comp/src/gb.map/.src/Tools/MyPaint.class000066400000000000000000000006071411575327000223140ustar00rootroot00000000000000' Gambas class file 'Export Static Public Sub Polygone(Pt As Integer[]) If pt.Count < 2 Then Return Paint.MoveTo(pt[0], pt[1]) For i As Integer = 2 To pt.Max Step 2 Paint.LineTo(pt[i], pt[i + 1]) Next Paint.LineTo(pt[0], pt[1]) End Static Public Sub RectangleRectF(hFbox As RectF) Paint.Rectangle(hFbox.x, hFbox.Y, hFbox.Right - hFbox.X, hFbox.Bottom - hFbox.Y) End gambas-3.16.3/comp/src/gb.map/.src/Tools/Proj.class000066400000000000000000000041361411575327000216460ustar00rootroot00000000000000' Gambas class file ' Export Property Read _strProj As String Private $strProj As String Private LastTransformString As String 'Private hprocess As Process Public Sub _new(sInit As String) $strProj = sInit End Static Public Function _call(sInit As String) As Proj Dim hProj As New Proj(sInit) Return hProj End Public Function TransformPF(ProjTo As Proj, PF As PointF) As PointF Dim sCom, sRes As String Dim a As String[] If ProjTo._strProj <> LastTransformString Then LastTransformString = ProjTo._strProj Endif sCom = Subst("cs2cs -f \"%f\" +init=&1 +to +init=&2< LastTransformString Then LastTransformString = ProjTo._strProj Endif sCom = Subst("cs2cs -f \"%f\" +init=&1 +to +init=&2< LastTransformString Then ' LastTransformString = ProjTo._strProj ' ' Endif ' ' sCom = Subst("cs2cs -f \"%f\" +init=&1 +to +init=&2< $mpTopLeft.Lon And If p.Lon < $mpBottomRight.Lon Then If p.Lat > $mpTopLeft.Lat And If p.Lat < $mpBottomRight.Lat Then Return True Endif Endif End Public Function Contain(Bound As MapBounds) As Boolean If Bound.Lon > $mpTopLeft.Lon And If Bound.Lon2 < $mpBottomRight.Lon Then If Bound.Lat > $mpTopLeft.Lat And If Bound.Lat2 < $mpBottomRight.Lat Then Return True Endif Endif End Public Function Merge(Bound As MapBounds) As MapBounds Dim hBound As New MapBounds hBound.Lon = Min($mpTopLeft.Lon, Bound.Lon) hBound.Lon2 = Max($mpBottomRight.Lon, Bound.Lon2) hBound.Lat = Min($mpTopLeft.Lat, Bound.Lat) hBound.Lat2 = Max($mpBottomRight.Lat, Bound.Lat2) Return hBound End Public Sub Collide(Bound As MapBounds) As Boolean 'If Abs(Me.Left - Bound.Left) < (Abs((Me.Right - Me.Left) + (Bound.Right - Bound.Left)) / 2) And Abs(Me.Top - Bound.top) < (Abs(Me.Bottom - Me.Top + Bound.Bottom - Bound.Top) / 2) Then Dim xIntersect, yIntersect As Boolean If Not (Min(Me.Left, Me.Right) > Max(Bound.Left, Bound.Right) Or Max(Me.Left, Me.Right) < Min(Bound.Left, Bound.Right)) Then xIntersect = True If Not (Min(Me.Top, Me.Bottom) > Max(Bound.Top, Bound.Bottom) Or Max(Me.Top, Me.Bottom) < Min(Bound.Top, Bound.Bottom)) Then yIntersect = True Return xIntersect And yIntersect End Private Sub TopLeft_Write(Value As MapPoint) $mpTopLeft = Value End Private Sub BottomRight_Write(Value As MapPoint) $mpBottomRight = Value End Static Public Function _Call(NorthEast As MapPoint, SouthWest As MapPoint) As MapBounds Dim hBounds As New MapBounds hBounds.TopLeft = NorthEast hBounds.BottomRight = SouthWest Return hBounds End Public Function ToString() As String Dim as As String[] = [Me.lat, Me.lon, Me.lat2, Me.lon2] Return as.join() End gambas-3.16.3/comp/src/gb.map/.src/Types/MapPoint.class000066400000000000000000000155621411575327000224740ustar00rootroot00000000000000' Gambas class file Fast Export ' WGS 84 ellipsoid Static Private A As Float = 6378137 Static Private B As Float = 6356752.3142 Static Private F As Float = (1 / 298.257223563) Public Lat As Float Public Lon As Float Public Sub _new(Optional Latitude As Float, Longitude As Float) Lat = Latitude Lon = Longitude End Static Public Function _Call(Latitude As Float, Longitude As Float) As MapPoint Dim hLatLon As New MapPoint(Latitude, Longitude) Return hLatLon End '' Calculate geodesic distance (in m) between two points specified by latitude / longitude (in numeric degrees). '' '' from: Vincenty inverse formula - T Vincenty, "Direct and Inverse Solutions of Geodesics on the '' Ellipsoid with application of nested equations", Survey Review, vol XXII no 176, 1975 '' [http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf] '' '' © 2002-2008 Chris Veness [http://www.movable-type.co.uk/scripts/latlong-vincenty.html] '' Static Public Sub Distance(PointA As MapPoint, PointB As MapPoint) As Float Dim eLon1 As Float = PointA.Lon Dim eLat1 As Float = PointA.Lat Dim eLon2 As Float = PointB.Lon Dim eLat2 As Float = PointB.Lat ' ' WGS 84 ellipsoid ' Dim A As Float = 6378137 ' Dim B As Float = 6356752.3142 ' Dim F As Float = 1 / 298.257223563 Dim L As Float = Rad(eLon2 - eLon1) Dim U1 As Float = ATan((1 - F) * Tan(Rad(eLat1))) Dim U2 As Float = ATan((1 - F) * Tan(Rad(eLat2))) Dim SinU1 As Float = Sin(U1), CosU1 As Float = Cos(U1) Dim SinU2 As Float = Sin(U2), CosU2 As Float = Cos(U2) Dim Lambda As Float = L, LambdaP As Float = Pi(2) Dim IterLimit As Integer = 20 Dim SinLambda, CosLambda As Float Dim Sigma, SinSigma, CosSigma, Cos2SigmaM As Float Dim SinAlpha, CosSqAlpha As Float Dim C As Float Dim USq, AA, BB, DeltaSigma, S As Float While Abs(Lambda - LambdaP) > 1e-12 Dec IterLimit If IterLimit < 0 Then Break SinLambda = Sin(Lambda) CosLambda = Cos(Lambda) SinSigma = Sqr((CosU2 * SinLambda) * (CosU2 * SinLambda) + (CosU1 * SinU2 - SinU1 * CosU2 * CosLambda) * (CosU1 * SinU2 - SinU1 * CosU2 * CosLambda)) ' co-incident points If (SinSigma = 0) Then Return 0 CosSigma = SinU1 * SinU2 + CosU1 * CosU2 * CosLambda Sigma = ATan2(SinSigma, CosSigma) SinAlpha = CosU1 * CosU2 * SinLambda / SinSigma CosSqAlpha = 1 - SinAlpha * SinAlpha If CosSqAlpha = 0 Then Cos2SigmaM = 0 Else Cos2SigmaM = CosSigma - 2 * SinU1 * SinU2 / CosSqAlpha Endif C = F / 16 * CosSqAlpha * (4 + F * (4 - 3 * CosSqAlpha)) LambdaP = Lambda Lambda = L + (1 - C) * F * sinAlpha * (Sigma + C * SinSigma * (Cos2SigmaM + C * CosSigma * (-1 + 2 * Cos2SigmaM * Cos2SigmaM))) Wend If (IterLimit < 0) Then Return 0 'NaN - formula failed TO converge USq = CosSqAlpha * (A * A - B * B) / (B * B) AA = 1 + USq / 16384 * (4096 + USq * (-768 + USq * (320 - 175 * USq))) BB = USq / 1024 * (256 + USq * (-128 + USq * (74 - 47 * USq))) DeltaSigma = BB * SinSigma * (Cos2SigmaM + BB / 4 * (CosSigma * (-1 + 2 * Cos2SigmaM * Cos2SigmaM) - BB / 6 * Cos2SigmaM * (-3 + 4 * SinSigma * SinSigma) * (-3 + 4 * Cos2SigmaM * Cos2SigmaM))) S = B * AA * (Sigma - DeltaSigma) Return S End '' Calculate destination point given starting point lat / long (numeric degrees), '' bearing (numeric degrees) & distance (in m). '' '' from: Vincenty direct formula - T Vincenty, "Direct and Inverse Solutions of Geodesics on the '' Ellipsoid with application of nested equations", Survey Review, vol XXII no 176, 1975" '' [http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf] '' '' © 2002-2008 Chris Veness [http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html] '' Static Public Sub From(Point As MapPoint, (Bearing) As Float, (Distance) As Float) As MapPoint Dim eLon1 As Float = Point.Lon Dim eLat1 As Float = Point.Lat ' WGS 84 ellipsoid ' Dim A As Float = 6378137 ' Dim B As Float = 6356752.3142 ' Dim F As Float = 1 / 298.257223563 Dim S As Float = Distance Dim Alpha1 As Float = Rad(Bearing) Dim SinAlpha1 As Float = Sin(Alpha1), CosAlpha1 As Float = Cos(Alpha1) Dim TanU1 As Float = (1 - F) * Tan(Rad(eLat1)) Dim CosU1 As Float = 1 / Sqr((1 + TanU1 * TanU1)) Dim SinU1 As Float = TanU1 * CosU1 Dim Sigma1 As Float = ATan2(TanU1, CosAlpha1) Dim SinAlpha As Float = CosU1 * SinAlpha1 Dim CosSqAlpha As Float = 1 - SinAlpha * SinAlpha Dim USq As Float = CosSqAlpha * (A * A - B * B) / (B * B) Dim AA As Float = 1 + USq / 16384 * (4096 + USq * (-768 + USq * (320 - 175 * USq))) Dim BB As Float = USq / 1024 * (256 + USq * (-128 + USq * (74 - 47 * USq))) Dim Sigma As Float = S / (B * AA) Dim SigmaP As Float = Pi(2) Dim Cos2SigmaM, SinSigma, CosSigma, DeltaSigma As Float Dim Tmp, Lambda, C, L, Lat2 As Float While (Abs(Sigma - SigmaP) > 1e-12) Cos2SigmaM = Cos(2 * Sigma1 + Sigma) SinSigma = Sin(Sigma) CosSigma = Cos(Sigma) DeltaSigma = BB * SinSigma * (Cos2SigmaM + BB / 4 * (CosSigma * (-1 + 2 * Cos2SigmaM * Cos2SigmaM) - BB / 6 * Cos2SigmaM * (-3 + 4 * SinSigma * SinSigma) * (-3 + 4 * Cos2SigmaM * Cos2SigmaM))) SigmaP = Sigma Sigma = S / (B * AA) + DeltaSigma Wend Tmp = SinU1 * SinSigma - CosU1 * CosSigma * CosAlpha1 Lat2 = ATan2(SinU1 * CosSigma + CosU1 * SinSigma * CosAlpha1, (1 - F) * Sqr(SinAlpha * SinAlpha + Tmp * Tmp)) Lambda = ATan2(SinSigma * SinAlpha1, CosU1 * CosSigma - SinU1 * SinSigma * CosAlpha1) C = F / 16 * CosSqAlpha * (4 + F * (4 - 3 * CosSqAlpha)) L = Lambda - (1 - C) * F * SinAlpha * (Sigma + C * SinSigma * (Cos2SigmaM + C * CosSigma * (-1 + 2 * Cos2SigmaM * Cos2SigmaM))) 'RevAz = ATan2(SinAlpha, - Tmp) ?? Return MapPoint(Deg(Lat2), eLon1 + Deg(L)) End '' Calculate the initial bearing (in degrees) that leads from one point to another point '' specified by latitude / longitude. Static Public Sub Bearing(({From}) As MapPoint, {To} As MapPoint) As Float Dim eLon1 As Float = From.Lon Dim eLat1 As Float = From.Lat Dim eLon2 As Float = To.Lon Dim eLat2 As Float = To.Lat Dim DLon, fX, fY, fBearing As Float eLat1 = Rad(eLat1) eLat2 = Rad(eLat2) DLon = Rad(eLon2 - eLon1) fY = Sin(DLon) * Cos(eLat2) fX = Cos(eLat1) * Sin(eLat2) - Sin(eLat1) * Cos(eLat2) * Cos(DLon) fBearing = Deg(ATan2(fY, fX)) If fBearing < 0 Then fBearing += 360 Return fBearing End '' Returns the Central Point between several MapPoints Static Public Function GetCenter(hPoints As MapPoint[]) As MapPoint 'TODO: Movida da classe _MapShape para cá. Avaliar pertinência Dim tmpA, fA, Gx, Gy As Float Dim j As Integer 'calcul du centre fA = 0 Gx = 0 Gy = 0 For k As Integer = 0 To hPoints.Max j = IIf(k + 1 <= hPoints.Max, k + 1, 0) tmpA = (hPoints[k].Lon * hPoints[j].Lat) - (hPoints[j].Lon * hPoints[k].Lat) fA += tmpA Gx += tmpA * (hPoints[k].Lon + hPoints[j].Lon) Gy += tmpA * (hPoints[k].Lat + hPoints[j].Lat) Next fA = fA / 2 Gx = Gx / (6 * fA) Gy = Gy / (6 * fA) Return MapPoint(Gy, Gx) Catch End gambas-3.16.3/comp/src/gb.map/.src/Types/TileSource.module000066400000000000000000000003351411575327000231730ustar00rootroot00000000000000' Gambas module file ' Gambas class file ''Standart static tile provider Public Const Standart As Integer = 0 ''Web Map Tile Service Public Const WMTS As Integer = 1 ''Web Map Service Public Const WMS As Integer = 2 gambas-3.16.3/comp/src/gb.map/.src/Types/_Tile.class000066400000000000000000000005471411575327000217760ustar00rootroot00000000000000' Gambas class file Static Public Const Normal As Integer = 0 Static Public Const Loading As Integer = 1 Static Public Const Error As Integer = -1 Public X As Integer Public Y As Integer Public Z As Integer Public Version As Integer = 1 Public Status As Integer Public Image As Image Public TryCount As Integer Public Name As String Public Opacity As Floatgambas-3.16.3/comp/src/gb.map/.src/_MapLayer.class000066400000000000000000000021631411575327000215030ustar00rootroot00000000000000' Gambas class file Export Property Read Loading As Boolean '' Returns Layer status Property Visible As Boolean '' Returns or sets Layer visibility Property Opacity As Float '' Returns or sets Layer opacity Private $bVisible As Boolean = True Private $fOpaciy As Float = 1 Public Name As String '' Returns or sets Layer name Public Copyright As String '' Returns or sets Layer Copyright notice 'Public $aStack As New String[] Event Refresh Public Sub Draw() '(Optional bRefresh As Boolean = True) End Private Function Visible_Read() As Boolean Return $bVisible End Private Sub Visible_Write(Value As Boolean) $bVisible = Value _Load() Raise Refresh End Public Sub _Load() End Public Sub Refresh() End ' Public Function CountActiveClients() As Integer ' ' End Private Function Opacity_Read() As Float Return $fOpaciy End Private Sub Opacity_Write(Value As Float) $fOpaciy = Min(1, Max(0, Value)) End Private Function Loading_Read() As Boolean End '' Returns associated Map Public Function _GetMap() As Map Return Object.Parent(Me) End gambas-3.16.3/comp/src/gb.map/.src/_MapShape.class000066400000000000000000000404651411575327000214760ustar00rootroot00000000000000' Gambas class file Export Inherits _MapLayer Private Const _Point As Integer = 1 'Item Types Private Const _MultiPoint As Integer = 8 Private Const _Polyline As Integer = 3 Private Const _Polygon As Integer = 5 Private Const _Circle As Integer = 33 ' Private Dash As Float[] = [3, 2] 'Line Styles (and Dash values) ' Private DashDot As Float[] = [3, 2, 1, 2] ' Private DashDotDot As Float[] = [3, 2, 1, 2, 1, 2] ' Private Dot As Float[] = [1, 2] Property Read Count As Integer '' Returns the total of Shapes Property Read Max As Integer '' Returns the greatest index Property Read Key As String '' Returns Shape associated Key Property {Color} As Integer '' Returns or sets the Shape's items default Color, or outline color Property FillColor As Integer '' Returns or sets the Shape's items default Fill Color Property LineWidth As Integer '' Returns or sets the Shape's items default Line Width Property {Image} As Image '' Returns or sets the Shapes's Points default Image. If set, will override the default Icon. To revert to default Icon, set this to Null Public LineStyle As Integer = Line.Solid '' Returns or sets the Shape's items default Line Style Private $iColor As Integer Private $iFillColor As Integer Private $iLineWidth As Integer = 2 'Private $iLineStyle As Integer Private $aInView As New Integer[] Private $aShapeNames As New String[] Private $aShapes As New _ShapeItem[] Private $sLastKey As String Private $hImage As Image '' Stores user defined default by Property Image 'Private $hImgPoint As Image 'Property Points As Shapes 'Private $colKeyShape As New Collection Public Sub _new(Parent As Object) Object.Attach(Me, Parent, "Layer") ' $hImgPoint = Image.Load("point.png") End Public Sub _Load() Dim hMap As Map = Me._GetMap() Dim pt1, pt2 As Point $aInView.Clear For i As Integer = 0 To $aShapes.Max If Not ($aShapes[i].Type = _Point) Then pt1 = Geo.MapPointToPixel($aShapes[i].Bounds.TopLeft, hMap.Zoom) pt2 = Geo.MapPointToPixel($aShapes[i].Bounds.BottomRight, hMap.Zoom) If pt2.x - pt1.x < 2 And If pt2.y - pt1.y < 2 Then Continue Endif With $aShapes[i].Bounds If .Lon2 > hMap.Bounds.Lon Then If .lon < hMap.Bounds.lon2 If .lat2 < hMap.Bounds.Lat Then If .Lat > hMap.Bounds.Lat2 Then $aInView.Add(i) Endif Endif Endif Endif End With Next If Map.Debug Then Debug "Number of items displayed : " & $aInView.Count End '' Adds a Point object to current Shape '' - If Icon not defined, assume default Icon '' - If Color defined, Icon assume defined color Public Sub AddPoint(Key As String, Points As MapPoint, Optional {Color} As Integer, Optional Icon As Image) As _ShapeItem If $aShapeNames.Exist(Key) Then Error.Raise("This key already exist") Dim hItem As New _ShapeItem(Key) As "Item" If Not IsMissing(Icon) Then hItem.Image = Icon If Not IsMissing({Color}) Then hItem.Color = {Color} hItem.Type = _Point hItem.Center = Points hItem.Points = Points hItem.Bounds = MapBounds(Points, Points) $aShapes.Add(hItem) $aShapeNames.Add(Key) Return hItem End '' Adds a Multipoint object to current Shape Public Sub AddMultipoint(Key As String, Points As MapPoint[], Optional {Color} As Integer, Optional Icon As Image) As _ShapeItem 'If $aShapeNames.Exist(Key) Then Error.Raise("Key already exist: " & Key) Dim hItem As New _ShapeItem(Key) As "Item" If Not IsMissing(Icon) Then hItem.Image = Icon If Not IsMissing({Color}) Then hItem.Color = {Color} hItem.Type = _MultiPoint hItem.Center = MapPoint.GetCenter(Points) 'GetCenter(Points) hItem.Points = Points hItem.Bounds = GetPointBounds(Points) $aShapes.Add(hItem) $aShapeNames.Add(Key) Return hItem End '' Adds a Polyline object to current Shape Public Sub AddPolyLine(Key As String, Points As MapPoint[], Optional {Color} As Integer, Optional {LineWidth} As Integer, Optional {LineStyle} As Integer) As _ShapeItem 'If $aShapeNames.Exist(Key) Then Error.Raise("Key already exist: " & Key) Dim hItem As New _ShapeItem(Key) As "Item" If Not IsMissing({Color}) Then hItem.Color = {Color} If Not IsMissing({LineWidth}) Then hItem.LineWidth = {LineWidth} If Not IsMissing({LineStyle}) Then hItem.LineStyle = {LineStyle} hItem.Type = _Polyline hItem.Center = MapPoint.GetCenter(Points) 'GetCenter(Points) hItem.Bounds = GetPointBounds(Points) hItem.Points = Points $aShapes.Add(hItem) $aShapeNames.Add(Key) Return hItem End '' Adds a Polygon object to current Shape Public Sub AddPolygon(Key As String, Points As MapPoint[][], Optional {Color} As Integer, Optional {LineWidth} As Integer, Optional {LineStyle} As Integer) As _ShapeItem 'If $aShapeNames.Exist(Key) Then Error.Raise("Key already exist: " & Key) Dim hItem As New _ShapeItem(Key) As "Item" If Not IsMissing({Color}) Then hItem.Color = {Color} If Not IsMissing({LineWidth}) Then hItem.LineWidth = {LineWidth} If Not IsMissing({LineStyle}) Then hItem.LineStyle = {LineStyle} hItem.Type = _Polygon hItem.Center = MapPoint.GetCenter(Points[0]) 'GetCenter(Points[0]) hItem.Bounds = GetPointBounds(Points[0]) hItem.Points = Points $aShapes.Add(hItem) $aShapeNames.Add(Key) Return hItem End '' Adds a Circle object to current Shape 'fillcolor should come after color, but i dont want to break anything... Public Sub AddCircle(Key As String, Center As MapPoint, Radius As Float, Optional {Color} As Integer, Optional {LineWidth} As Integer, Optional {LineStyle} As Integer, Optional {FillColor} As Integer) As _ShapeItem 'If $aShapeNames.Exist(Key) Then Error.Raise("Key already exist: " & Key) Dim P1, P2, P3, P4 As MapPoint Dim hItem As New _ShapeItem(Key) As "Item" If Not IsMissing({Color}) Then hItem.Color = {Color} If Not IsMissing({FillColor}) Then hItem.FillColor = {FillColor} If Not IsMissing({LineWidth}) Then hItem.LineWidth = {LineWidth} If Not IsMissing({LineStyle}) Then hItem.LineStyle = {LineStyle} hItem.Type = _Circle hItem.Points = Center hItem.Center = Center hItem.Radius = Radius P1 = MapPoint.From(Center, 0, Radius) P2 = MapPoint.From(Center, 90, Radius) P3 = MapPoint.From(Center, 180, Radius) P4 = MapPoint.From(Center, 270, Radius) hItem.Bounds.TopLeft = MapPoint(P1.Lat, P4.Lon) hItem.Bounds.BottomRight = MapPoint(P3.Lat, P2.Lon) $aShapes.Add(hItem) $aShapeNames.Add(Key) Return hItem End '' Draws the Mapshape Layer and Itens Public Sub Draw() Dim pt, pt2 As Point Dim hMap As Map = Me._GetMap() Dim hPoly As Integer[] Dim iColor, iBack As Integer Dim hShape As _ShapeItem Dim iAlpha As Integer If $aShapes.Count = 0 Then Return For i As Integer = 0 To $aInView.Max 'TODO: Check opacity hShape = $aShapes[$aInView[i]] 'Set ForeColor iColor = IIf(hShape.Color = -1, $iColor, hShape.Color) iAlpha = Color.GetAlpha(icolor) iColor = Color.SetAlpha(icolor, Min(iAlpha + (255 - (255 * Me.Opacity)), 255)) 'Set BackColor iBack = IIf(hShape.FillColor = -1, $iFillColor, hShape.FillColor) If iBack = -1 Then iBack = Color.transparent 'If hShape.Type = Circle Then Stop iAlpha = Color.GetAlpha(iBack) iBack = Color.SetAlpha(iBack, Min(iAlpha + (255 - (255 * Me.Opacity)), 255)) 'Set LineWidth Paint.LineWidth = IIf(hShape.LineWidth > -1, hShape.LineWidth, $iLineWidth) 'Set LineStyle Dim tmpLineStyle As Integer tmpLineStyle = IIf(hShape.LineStyle <> -1, hShape.LineStyle, LineStyle) Select Case tmpLineStyle Case Line.Dash Paint.Dash = [3, 2] Case Line.DashDot Paint.Dash = [3, 2, 1, 2] Case Line.DashDotDot Paint.Dash = [3, 2, 1, 2, 1, 2] Case Line.Dot Paint.Dash = [1, 2] Case Line.None Paint.Dash = [0] Case Else Paint.Dash = Null End Select 'TODO: Allow to define color for selected item 'Force Color for selected If hShape.Selected Then iColor = Color.White 'Draw Select Case hShape.Type Case _Point pt = Geo.MapPointToPixel(hShape.Points, hMap.zoom) If hShape.Image Then 'Draws centralized If hShape.Color <> -1 Then hShape.Image.Colorize(hShape.Color) Paint.DrawImage(hShape.Image, pt.X - hMap.PixelBox.X - hShape.Image.Height / 2, pt.Y - hMap.PixelBox.Y - hShape.Image.width / 2) Else 'Draws with default "red point" icon offset Paint.DrawImage(Me.Image, pt.X - hMap.PixelBox.X - 16, pt.Y - hMap.PixelBox.Y - 32) Endif Case _MultiPoint For j As Integer = 0 To hShape.Points.Max pt = Geo.MapPointToPixel(hShape.Points[j], hMap.zoom) ' If hShape.Image Then ' Paint.DrawImage(hShape.Image, pt.X - hMap.PixelBox.X - 16, pt.Y - hMap.PixelBox.Y - 32) ' Else ' Paint.DrawImage(Me.Image, pt.X - hMap.PixelBox.X - 16, pt.Y - hMap.PixelBox.Y - 32) ' Endif If hShape.Image Then 'Draws centralized If hShape.Color <> -1 Then hShape.Image.Colorize(hShape.Color) Paint.DrawImage(hShape.Image, pt.X - hMap.PixelBox.X - hShape.Image.Height / 2, pt.Y - hMap.PixelBox.Y - hShape.Image.width / 2) 'Paint.DrawImage(IIf(hShape.Color, hShape.Image.Colorize(hShape.Color), hShape.Image), pt.X - hMap.PixelBox.X - hShape.Image.Height / 2, pt.Y - hMap.PixelBox.Y - hShape.Image.width / 2) Else 'Draws with default "red point" icon offset Paint.DrawImage(Me.Image, pt.X - hMap.PixelBox.X - 16, pt.Y - hMap.PixelBox.Y - 32) Endif Next Case _Polygon hPoly = New Integer[] For j As Integer = 0 To hShape.Points[0].Max pt = Geo.MapPointToPixel(hShape.Points[0][j], hMap.zoom) hPoly.Add(pt.x - hMap.PixelBox.X) hPoly.Add(pt.y - hMap.PixelBox.Y) Next Paint.LineWidth = hShape.LineWidth Paint.Brush = Paint.Color(iBack) Paint.Polygon(hPoly) Paint.Fill(True) Paint.Brush = Paint.Color(iColor) Paint.Stroke Case _Polyline If hShape.Points.Count = 0 Then Continue pt = Geo.MapPointToPixel(hShape.Points[0], hMap.zoom) Paint.MoveTo(pt.x - hMap.PixelBox.X, pt.y - hMap.PixelBox.Y) For j As Integer = 1 To hShape.Points.Max pt = Geo.MapPointToPixel(hShape.Points[j], hMap.zoom) Paint.LineTo(pt.x - hMap.PixelBox.X, pt.y - hMap.PixelBox.Y) Next Paint.Brush = Paint.Color(iColor) Paint.Stroke Case _Circle pt = hMap.MapPointToPixelRel(hShape.Bounds.TopLeft) pt2 = hMap.MapPointToPixelRel(hShape.Bounds.BottomRight) Paint.Ellipse(pt.x, pt.y, pt2.x - pt.x, pt2.y - pt.y) Paint.Brush = Paint.Color(iBack) 'Paint.Brush = Paint.Color(hShape.FillColor) Paint.Fill(True) Paint.Brush = Paint.Color(icolor) 'Paint.Brush = Paint.Color(hShape.Color) Paint.Stroke End Select Next End '' Returns a Shape Item Public Function GetItem(Key As String) As _ShapeItem 'If Not $aShapeNames.Exist(Key) Then Error.Raise("Item not found: " & Key) Return $aShapes[$aShapeNames.Find(Key)] End '' Hidden method so can be an readable Array '' - Returns a _ShapeItem '' - See GetItem Public Function _get(Key As String) As _ShapeItem Dim iRet As Integer iRet = $aShapeNames.Find(key) If iRet = -1 Then Return Null Else Return $aShapes[iRet] Endif End ' '' Returns associated Map ' Private Function GetMap() As Map ' ' Return Object.Parent(Me) ' ' End Private Function Color_Read() As Integer Return $icolor End Private Sub Color_Write(Value As Integer) $icolor = Value End '' Wrapper to MapPoint.GetCenter() since I dont want to break anything :-D '' - See MapPoint.GetCenter() Static Public Function GetCenter(hPoints As MapPoint[]) As MapPoint Return MapPoint.GetCenter(hPoints) 'just a jump... ' 'TODO: testar essa função, comportamento estranho. considerar mover para dentro da classe MapPoint ' Dim tmpA, A, Gx, Gy As Float ' Dim j As Integer ' 'calcul du centre ' A = 0 ' gx = 0 ' Gy = 0 ' For k As Integer = 0 To hPoints.Max ' j = IIf(k + 1 <= hPoints.Max, k + 1, 0) ' tmpA = (hPoints[k].Lon * hPoints[j].Lat) - (hPoints[j].Lon * hPoints[k].Lat) ' A += tmpA ' Gx += tmpA * (hPoints[k].Lon + hPoints[j].Lon) ' Gy += tmpA * (hPoints[k].Lat + hPoints[j].Lat) ' Next ' A = A / 2 ' gx = gx / (6 * A) ' gy = gy / (6 * A) ' ' Return MapPoint(GY, GX) ' Catch ' End Private Function GetPointBounds(hMapPoints As MapPoint[]) As MapBounds Dim fX, fY, fX2, fY2 As Float fX = hMapPoints[0].Lon fY = hMapPoints[0].Lat fX2 = fX fY2 = fY For Each hPoint As MapPoint In hMapPoints fX = Min(hPoint.lon, fX) fY2 = Min(hPoint.lat, fY2) fX2 = Max(hPoint.lon, fX2) fY = Max(hPoint.lat, fY) Next Return MapBounds(MapPoint(fY, fX), MapPoint(fY2, fX2)) End Private Function Count_Read() As Integer Return $aShapes.Count End '' Deletes the specified Shape Item Public Function Remove(Key As String) As Boolean Dim iRet As Integer iRet = $aShapeNames.Find(key) If iRet = -1 Then Return False $aShapeNames.Remove(iRet) $aShapes.Remove(iRet) '_Load() Return True End '' Returns if the specified Shape Item actually exists Public Sub Exist(Key As String) As Boolean Return $aShapeNames.Exist(Key) End Private Function Image_Read() As Image If $hImage Then Return $hImage Else Return Image.Load("point.png") End Private Sub Image_Write(Value As Image) $hImage = Value '$hImgPoint = Value End Public Sub Refresh() For Each hItem As _ShapeItem In $aShapes Select Case hItem.Type Case _Point hItem.Center = hItem.Points hItem.Bounds = MapBounds(hItem.Points, hItem.Points) Case _Polyline, _MultiPoint hItem.Center = MapPoint.GetCenter(hItem.Points) 'GetCenter(hItem.Points) hItem.Bounds = GetPointBounds(hItem.Points) Case _Polygon hItem.Center = MapPoint.GetCenter(hItem.Points[0]) 'GetCenter(hItem.Points[0]) hItem.Bounds = GetPointBounds(hItem.Points[0]) Case _Circle Dim P1, P2, P3, P4 As MapPoint P1 = MapPoint.From(hItem.Center, 0, hItem.Radius) P2 = MapPoint.From(hItem.Center, 90, hItem.Radius) P3 = MapPoint.From(hItem.Center, 180, hItem.Radius) P4 = MapPoint.From(hItem.Center, 270, hItem.Radius) hItem.Bounds.TopLeft = MapPoint(P1.Lat, P4.Lon) hItem.Bounds.BottomRight = MapPoint(P3.Lat, P2.Lon) End Select Next End Private Function Max_Read() As Integer Return $aShapes.Max End Public Function GetSelected() As _ShapeItem[] Dim aShapeItem As New _ShapeItem[] For i As Integer = 0 To $aShapes.Max If $aShapes[i].Selected Then aShapeItem.Add($aShapes[i]) Next Return aShapeItem End Public Sub UnselectAll() For i As Integer = 0 To $aShapes.Max $aShapes[i].Selected = False Next End Public Sub SelectAll() For i As Integer = 0 To $aShapes.Max $aShapes[i].Selected = True Next End Public Sub Item_Select() If $sLastKey <> Last.key Then Try _get($sLastKey).Selected = False 'Try Me._get($sLastKey).Selected = False $sLastKey = Last.Key Endif End Private Function Key_Read() As String Return $sLastKey End Public Function Find(hMp As MapPoint) As _ShapeItem Dim hShape As _ShapeItem Dim hMap As Map = Me._GetMap() 'Optimize by just looking in the view zone If hMap.Bounds.InBounds(hMp) Then For i As Integer = 0 To $aInView.Max hShape = $aInView[i] If hShape.Type = _Point Then If hShape.Near(hMp, hMap.Zoom, 10) Then Return hShape Else If hShape.Contains(hMp) Then Return hShape Endif Next Else For i As Integer = 0 To $aShapes.Max hShape = $aShapes[i] If hShape.Type = _Point Then If hShape.Near(hMp, hMap.Zoom, 10) Then Return hShape Else If hShape.Contains(hMp) Then Return hShape Endif Next Endif End '' Clear all shape itens in this Layer Public Sub Clear() $aShapes.Clear $aShapeNames.Clear End Private Function LineWidth_Read() As Integer Return $iLineWidth End Private Sub LineWidth_Write(Value As Integer) $iLineWidth = Max(Value, 1) End Private Function FillColor_Read() As Integer Return $iFillColor End Private Sub FillColor_Write(Value As Integer) $iFillColor = Value End gambas-3.16.3/comp/src/gb.map/.src/_MapTile.class000066400000000000000000000475601411575327000213360ustar00rootroot00000000000000' Gambas class file Export Inherits _MapLayer Property Read Loading As Boolean '' Tile status. Property SubDomains As String[] 'Property Opacity As Float inherited '' Returns or sets Tile opacity. Property UseWebMapService As Boolean Property WMSArgs As Collection '' Defines the Static args for the server(build the url) Property MaxBounds As MapBounds Property CacheRefreshDelay As Integer '' Delay before refreshing an image in the cache. (By default 30 day) Property WMSProjection As String '' Set the projection used by the WMS server. Property Opacity As Float Property Header As String[] Use $aHeader Private $aStack As New String[] Private $aClients As New HttpClient[] Private $iClientCount As Integer = 4 Private $sCachePath As String ' = User.Home &/ ".cache/gb.map" Private $tmrGet As New Timer As "tmrGet" Private $aTiles As New String[] Private $colTiles As New Collection Private $sPattern As String Private $aSubDomains As String[] = ["a", "b", "c"] 'Private $fOpacity As Float = 1 Private $aPreload As New String[] Private $bPreloadMode As Boolean Private $fGradStep As Float = 0.1 Private $bIsQuadKey As Boolean Private $bLoading As Boolean Private $iCli As Integer 'Private $iTileSource As Integer 'Property TileSource As Integer Private $bUseWMS As Boolean Private $cWMSArgs As New Collection Private $mbMaxBounds As New MapBounds Private $prjWMS As Proj Private $prjLatLon As Proj Private $WMSProj As String Private $iVersion As Integer = 1 Private $iCacheRefreshDelay As Integer = 30 'Private $bCacheRefresh As Boolean = True Public TileBoundValue As MapBounds ' Private $aUsedTiles As New String[] ' Private $aNewTiles As New String[] ' Private $bHaveCache As Boolean Event Refresh Public Sub _new(Optional CacheName As String, Parent As Object) Dim sTempPath As String Dim hClient As HttpClient Dim i As Integer 'Dim hTable As Table 'db.Debug = True Object.Attach(Me, Parent, "Layer") $prjLatLon = New Proj("epsg:4326") $sCachePath = Me._GetMap().DefaultCache If CacheName Then sTempPath = $sCachePath &/ CacheName Else sTempPath = Temp() Endif If Not Exist(sTempPath) Then If MakeDir(sTempPath) Then Error.Raise("Cannot create Cache Path: \n" & sTempPath) Endif $sCachePath = sTempPath $aClients.Resize($iClientCount) For i = 0 To $aClients.Max hClient = New HttpClient As "Client" hClient.Async = True With Me._GetMap() If ._Proxy Then hClient.Proxy.Auth = ._Proxy.Auth hClient.Proxy.Type = ._Proxy.Type hClient.Proxy.Host = ._Proxy.Host hClient.Proxy.User = ._Proxy.User hClient.Proxy.Password = ._Proxy.Password Endif End With $aClients[i] = hClient hClient.Timeout = 10 Next End ' svn checkout --username=gambix svn+ssh://gambas@svn.code.sf.net/p/gambas/code/gambas/trunk ' '' Draws the Maptile Layer Public Sub Draw() Dim s As String Dim hTile As _Tile Dim hMap As Map = Me._GetMap() Dim hBound As MapBounds Dim hPx As Point Dim hpx2 As Point 'Paint.Reset() 'Paint.Rotate(Rad(90)) 'Paint.Translate(hmap.Width / 2, hmap.Height / 2) For Each s In $aTiles hTile = $coltiles[s] hBound = Geo.TileBounds(hTile.x, hTile.y, hTile.z) hpx = Geo.MapPointToPixel(hBound.TopLeft, hmap.Zoom) hpx2 = Geo.MapPointToPixel(hBound.BottomRight, hmap.Zoom) Select Case hTile.Status Case _Tile.Normal If hmap._ShowWithEffect Then Try Paint.DrawImage(hTile.Image, hTile.X * 256 - hMap.PixelBox.X, hTile.Y * 256 - hMap.PixelBox.Y,,, Min(hTile.Opacity, Me.Opacity)) '$fOpacity)) If hTile.Opacity < Me.Opacity Then '$fOpacity Then hTile.Opacity += $fGradStep Raise Refresh Endif Else Try Paint.DrawImage(hTile.Image, hTile.X * 256 - hMap.PixelBox.X, hTile.Y * 256 - hMap.PixelBox.Y,,, Me.Opacity) '$fOpacity) Endif 'Draw.Foreground = Color.Green 'Draw.Text("TileOK", hTile.X * 256 - hMap.PixelBox.X, hTile.Y * 256 - hMap.PixelBox.Y) Case _Tile.Error Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, Min(125, (255 * Me.Opacity)))) '$fOpacity)))) Paint.Rectangle(hTile.X * 256 - hMap.PixelBox.X, hTile.Y * 256 - hMap.PixelBox.Y, 256, 256) Paint.Fill 'Draw.Image(Picture["icon:/256/cancel"].Image, hTile.X * 256 - hMap.PixelBox.X, hTile.Y * 256 - hMap.PixelBox.Y) Case _Tile.Loading ' Draw.Foreground = Color.Red ' Draw.Font.Bold = True ' Draw.Text("Loading: " & hTile.x & " / " & hTile.y, hTile.X * 256 - hMap.PixelBox.X, hTile.Y * 256 - hMap.PixelBox.Y) End Select ' Draw.Foreground = Color.Green ' Draw.rect(hpx.x - hmap.PixelBox.x, hpx.Y - hmap.PixelBox.y, hpx2.x - hpx.x, hpx2.y - hpx.Y) Next End '' Loads precached Tiles Public Sub _Load() Dim ptFirst, ptLast As Point Dim hMap As Map = Me._GetMap() Dim iX, iY As Integer Dim hTile As New _Tile Dim sTileName As String Dim aTileOrder As New String[] Dim iDist As Integer Dim ptTileCenter As Point Dim ars As String[] Dim mpFirst As MapPoint Dim mpLast As MapPoint Dim sTileUrl As String 'Dim hresult As Result ' Dim hStat As Stat ' Dim s As String ' Dim sExec As String ' Dim bFirst As Boolean '*********************************** mpFirst = Geo.PixelToMapPoint(Point(hMap.PixelBox.x, hMap.PixelBox.y), hmap.Zoom) mpLast = Geo.PixelToMapPoint(Point(hMap.PixelBox.Right, hMap.PixelBox.Bottom), hmap.Zoom) ptTileCenter = Geo.MapPointToTile(hMap.Center, hMap.Zoom) ptFirst = Geo.MapPointToTile(mpFirst, hmap.Zoom) ptLast = Geo.MapPointToTile(mpLast, hmap.Zoom) $aPreload.Clear For iX = ptFirst.X - 1 To ptLast.X + 1 For iY = ptFirst.Y - 1 To ptLast.Y + 1 iDist = Sqr((iX - ptTileCenter.X) ^ 2 + (iY - ptTileCenter.Y) ^ 2) aTileOrder.Add(Subst("&1/&2/&3", iDist, iY, iX)) Next Next aTileOrder.Sort(gb.Descent) $aTiles.Clear '$aStack.Clear 'ptTileCenter = Geo.MapPointToTile(hMap.Center, hMap.Zoom) 'Print "Tile Center = " & ptTileCenter.x & " " & ptTileCenter.Y For Each sTileName In aTileOrder ars = Split(sTileName, "/") iY = CInt(ars[1]) iX = CInt(ars[2]) sTileName = Subst("&1-&2-&3-&4.png", hMap.Zoom, iY, iX, $iVersion) If Not $coltiles.Exist(sTileName) Then hTile = New _Tile hTile.X = iX hTile.Y = iY hTile.Z = hMap.Zoom hTile.Name = sTileName If Exist($sCachePath &/ hTile.Name) Then 'Print $db.Tables["tiles"] ' hresult = $db.Exec("Select * from tiles where name=&1", "toto") ' 'hresult = $DB.Find("tiles", "name=&1", hTile.Name) ' ' If hresult.Available And If $bCacheRefresh And If DateDiff(Now(), hresult!lastmodified, gb.Day) > $iCacheRefreshDelay Then ' ReLoadTile(hTile) ' Else ' hStat = Stat($sCachePath &/ hTile.Name) ' Print DateDiff(Now(), hStat.LastModified, gb.Day) ' If $bCacheRefresh And If DateDiff(Now(), hStat.LastChange, gb.Day) > $iCacheRefreshDelay Then ' ReLoadTile(hTile) ' Else hTile.Status = _Tile.Normal Try hTile.Image = Image.Load($sCachePath &/ hTile.Name) If Error Then 'Error "Image illisible -> " & hTile.Name ReLoadTile(hTile) Else 'On valide la Date de dernier acces 'If $bHaveCache Then $aUsedTiles.Add(hTile.Name) 'Exec ["touch", $sCachePath &/ hTile.Name] hTile.Opacity = Me.Opacity '$fOpacity Endif ' Endif ' Endif Else hTile.Status = _Tile.Loading 'If Map.Debug Then Debug "Loading Tile: " & hTile.Name If Not $aStack.Exist(hTile.Name) Then sTileUrl = GetTileUrl(hTile) If sTileUrl Then $aStack.Push(hTile.Name) $aStack.Push(sTileUrl) Endif Endif Endif $coltiles[hTile.Name] = hTile Else hTile = $coltiles[sTileName] ' If hTile.Status = _Tile.Loading Then ' hTile.TryCount = 0 ' ReLoadTile(hTile) ' Endif Endif $aTiles.Add(sTileName) Next 'Loading of uppers tiles ' If hmap.Zoom > 1 Then ' ptFirst = Geo.MapPointToTile(mpFirst, hmap.Zoom - 1) ' ptLast = Geo.MapPointToTile(mpLast, hmap.Zoom - 1) ' For iX = ptFirst.X To ptLast.X ' For iY = ptFirst.Y To ptLast.Y ' sTileName = Subst("&1-&2-&3.png", hMap.Zoom - 1, iY, iX) ' If Exist($sCachePath &/ sTileName) Then Continue ' $aPreload.Push(sTileName) ' $aPreload.Push(GetTileUrlpt(iX, iY, hMap.Zoom - 1)) ' Next ' Next ' Endif ' If hmap.Zoom < 18 Then ' ptFirst = Geo.MapPointToTile(mpFirst, hmap.Zoom + 1) ' ptLast = Geo.MapPointToTile(mpLast, hmap.Zoom + 1) ' For iX = ptFirst.X To ptLast.X ' For iY = ptFirst.Y To ptLast.Y ' sTileName = Subst("&1-&2-&3.png", hMap.Zoom + 1, iY, iX) ' If Exist($sCachePath &/ sTileName) Then Continue ' $aPreload.Push(sTileName) ' $aPreload.Push(GetTileUrlpt(iX, iY, hMap.Zoom + 1)) ' Next ' Next ' Endif $bLoading = $aStack.Count > 0 $bPreloadMode = False $tmrGet.Trigger 'tmrGet_Timer End Private Sub ReLoadTile(hTile As _Tile) ' if more than 3 try then stop try 'Dim hresult As Result If hTile.TryCount > 3 Then hTile.Status = _Tile.Error $tmrGet.Trigger Raise Refresh Return Endif 'If the tile exist then remove it If Exist($sCachePath &/ hTile.Name) Then Kill $sCachePath &/ hTile.Name Endif If Not $aStack.Exist(hTile.Name) Then hTile.Status = _Tile.Loading Inc hTile.TryCount 'Error "rechargement de : " & hTile.Name $aStack.Push(hTile.Name) $aStack.Push(GetTileUrl(hTile)) $bPreloadMode = False Endif $tmrGet.Trigger End Private Function MakeDir(Path As String) As Boolean Dim ars As String[] Dim sDir, s As String sDir = "/" ars = Split(Path, "/") For Each s In ars sDir &/= s If Not Exist(sDir) Then Mkdir sDir Endif Next If Map.Debug Then Debug "Creating Folder: " & sDir Catch Return True End ' Private Function GetMap() As Map ' ' Return Object.Parent(Me) ' ' End Public Sub tmrGet_Timer() Dim sUrl, sFile As String Dim hClient As HttpClient Do If $bPreloadMode Then $bLoading = False If $aPreload.Count = 0 Then Return hClient = GetClient() If Not hClient Then Return sUrl = $aPreload.Pop() sFile = $aPreload.Pop() Else $bLoading = $aStack.Count > 0 If $aStack.count = 0 Then $bPreloadMode = True Return Endif hClient = GetClient() If Not hClient Then Return Inc $iCli sUrl = $aStack.Pop() sFile = $aStack.Pop() Endif hClient.Url = sUrl 'Print surl hClient.Tag = sFile hClient.Get($aHeader, $sCachePath &/ sFile) Loop End Private Sub GetClient() As HttpClient For i As Integer = 0 To $aClients.max If $aClients[i].Status = Net.Inactive Then Return $aClients[i] Next End Public Sub Client_Finished() Dim hTile As _Tile 'Dim hresult As Result Dec $iCli 'If Not $bPreloadMode Then6752042.96,2525540.18,6751587.00,2525742.70 hTile = $colTiles[Last.Tag] If Not hTile Then Goto Skip Try hTile.Image = Image.Load($sCachePath &/ hTile.Name) If Error Then 'Error "Image illisible -> " & hTile.Name ReLoadTile(hTile) Return Endif 'Print hTile.Name hTile.Status = _Tile.Normal 'If $bHaveCache Then $aNewTiles.Add(hTile.Name) ' 'The tile have been loaded and the file is created so now ' 'we add an entry to the database ' hresult = $DB.Create("tiles") ' hresult!name = hTile.Name ' hresult!lastmodified = Now() ' hresult!version = hTile.Version ' hresult!lastaccess = Now() ' hresult.Update Raise Refresh 'Endif Skip: $tmrGet.Trigger 'Debug "Fichier téléchargé et chargé: " & Last.Tag 'If Map.Debug then Debug "Downloaded file: "& Last.Tag End Public Sub Client_Error() Dim hTile As _Tile Dec $iCli 'If Not $bPreloadMode Then hTile = $coltiles[Last.Tag] If Not hTile Then Goto Skip 'Debug "erreur : " & hTile.Name ReLoadTile(hTile) 'Endif Skip: $tmrGet.Trigger End '' Refresh Layer contents Public Sub Refresh() Dim i As Integer $coltiles.Clear $aTiles.Clear $aStack.Clear $aPreload.Clear For i = 0 To $aClients.Max $aClients[i].Stop Try Kill $sCachePath &/ $aClients[i].Tag Next End Private Function GetTileUrl(hTile As _Tile) As String Return GetTileUrlpt(hTile.X, hTile.Y, hTile.Z) End ' Private Function GetWMSTilept(X As Integer, Y As Integer, Z As Integer) As String ' ' Dim hBound As MapBounds = Geo.TileBounds(X, Y, Z) ' Dim hbound2 As MapBounds ' ' Dim hbound2 As MapBounds = Geo.TileBounds(x + 1, y - 1, z) ' Dim hConv, hConv2 As MapBounds ' Dim sTemp As String ' Dim s As String ' ' If Not Me.MaxBounds.Collide(hbound) Then Return ' ' For Each s In $cWMSArgs ' ' sTemp &= "&" & $cWMSArgs.Key & "=" & s ' ' Next ' ' If $cWMSArgs.Exist("bbox") Then ' ' 'Invertion de coordonée ' ' Print "de -> ", hbound.lat2, hbound.Lon, hbound.Lat, hbound.Lon2 ' ' hbound2 = $prjLatLon.TransformMBounds($prjWMS, hbound) ' ' Print "de lamb -> ", hbound2.lat2, hbound2.Lon, hbound.Lat, hbound.Lon2 ' hbound = MapBounds(MapPoint(hBound.lat2, hBound.lon), MapPoint(hBound.lat, hBound.lon2)) ' ' Print "converti -> ", hbound.lat, hbound.Lon, hbound.Lat2, hbound.Lon2 ' ' hbound2 = $prjLatLon.TransformMBounds($prjWMS, hbound) ' ' Print "converti lamb -> ", hbound2.lat, hbound2.Lon, hbound.Lat2, hbound.Lon2 ' ' Print ' If $prjWMS Then ' hbound = $prjLatLon.TransformMBounds($prjWMS, hbound) ' Endif ' sTemp = Replace(sTemp, "{lat}", CStr(hBound.Lat)) ' sTemp = Replace(sTemp, "{lon}", CStr(hbound.Lon)) ' sTemp = Replace(sTemp, "{lat2}", CStr(hbound.lat2)) ' sTemp = Replace(sTemp, "{lon2}", CStr(hbound.lon2)) ' ' Else ' If $cWMSArgs.Exist("tilerow") Or If $cWMSArgs.Exist("TILEROW") Then ' If InStr(sTemp, "{q}") Then ' sTemp = Replace(sTemp, "{q}", TileToQuadKey(x, y, z)) ' Else ' sTemp = Replace(sTemp, "{x}", CStr(X)) ' sTemp = Replace(sTemp, "{y}", CStr(Y)) ' sTemp = Replace(sTemp, "{z}", CStr(Z)) ' ' Endif ' Endif ' Endif ' ' 'sTemp = $sPattern & ' 'sTemp = $sPattern & "?bbox=" & hConv.Lat & "," & hConv.Lon & "," & hConv.Lat2 & "," & hConv.Lon2 ' Print sTemp ' Return $sPattern & "?" & sTemp ' ' End Private Function GetWMSTilept(X As Integer, Y As Integer, Z As Integer) As String Dim hBound As MapBounds = Geo.TileBounds(X, Y, Z) ' Dim hbound2 As MapBounds = Geo.TileBounds(x + 1, y - 1, z) ' Dim hConv, hConv2 As MapBounds Dim sTemp As String Dim s As String If Not Me.MaxBounds.Collide(hbound) Then Return For Each s In $cWMSArgs sTemp &= "&" & $cWMSArgs.Key & "=" & s Next If $cWMSArgs.Exist("bbox") Then 'Print X, Y, Z, hbound.Lat, hbound.Lon, hbound.lat2, hbound.lon2 'Invertion de coordonée 'hbound = MapBounds(MapPoint(hBound.lat2, hBound.lon), MapPoint(hBound.lat, hBound.Lon2)) 'Swap hbound.Lat, hbound.Lat2 'Print X, Y, Z, hbound.Lat, hbound.Lon, hbound.lat2, hbound.lon2 If $prjWMS Then hbound = $prjLatLon.TransformMBounds($prjWMS, hbound) Endif 'Print X, Y, Z, hbound.Lat, hbound.Lon, hbound.lat2, hbound.lon2 sTemp = Replace(sTemp, "{lat}", CStr(hBound.Lat)) sTemp = Replace(sTemp, "{lon}", CStr(hbound.Lon)) sTemp = Replace(sTemp, "{lat2}", CStr(hbound.lat2)) sTemp = Replace(sTemp, "{lon2}", CStr(hbound.lon2)) Else If $cWMSArgs.Exist("tilerow") Or If $cWMSArgs.Exist("TILEROW") Then If InStr(sTemp, "{q}") Then sTemp = Replace(sTemp, "{q}", TileToQuadKey(x, y, z)) Else sTemp = Replace(sTemp, "{x}", CStr(X)) sTemp = Replace(sTemp, "{y}", CStr(Y)) sTemp = Replace(sTemp, "{z}", CStr(Z)) Endif Endif Endif 'sTemp = $sPattern & 'sTemp = $sPattern & "?bbox=" & hConv.Lat & "," & hConv.Lon & "," & hConv.Lat2 & "," & hConv.Lon2 'Print X, Y, Z, hbound.Lat, hbound.Lon, hbound.lat2, hbound.lon2 'Print X, Y, Z, Mid(sTemp, InStr(sTemp, "bbox")) ' Print ' Print Return $sPattern & "?" & sTemp End Private Function GetTileUrlpt(X As Integer, Y As Integer, Z As Integer) As String Dim sTemp As String If $bUseWMS Then sTemp = GetWMSTilept(X, Y, Z) If Map.Debug Then Debug sTemp Return sTemp Else If $bIsQuadKey Then sTemp = Replace($sPattern, "{q}", TileToQuadKey(X, Y, Z)) Else sTemp = Replace($sPattern, "{x}", CStr(X)) sTemp = Replace(sTemp, "{y}", CStr(Y)) sTemp = Replace(sTemp, "{z}", CStr(Z)) Endif sTemp = Replace(sTemp, "{s}", $aSubDomains[Round(Rnd(0, $aSubDomains.Max))]) If Map.Debug Then Debug sTemp Return sTemp Endif End Public Sub SetPattern(sPattern As String, Optional cArgs As Collection) $sPattern = sPattern If InStr($sPattern, "{q}") Then $bIsQuadKey = True Else $bIsQuadKey = False If cArgs Then For Each s As Variant In cArgs $sPattern = Replace($sPattern, "{" & cArgs.Key & "}", s) Next Endif End Private Function SubDomains_Read() As String[] Return $aSubDomains End Private Sub SubDomains_Write(Value As String[]) $aSubDomains = Value End Public Function CountActiveClients() As Integer Dim i, j As Integer For i = 0 To $aClients.Max If $aClients[i].Status <> Net.Inactive Then Inc j Next Return j End Private Function TileToQuadKey(X As Integer, Y As Integer, Z As Integer) As String Dim sQuadKey As String Dim iDigit, iMask As Integer For i As Integer = z To 1 Step -1 iDigit = 0 iMask = Lsl(1, (i - 1)) If (x And iMask) <> 0 Then iDigit += 1 If (y And iMask) <> 0 Then iDigit += 2 sQuadKey &= iDigit Next Return sQuadKey End Private Function Opacity_Read() As Float Return Super.Opacity '$fOpacity End Private Sub Opacity_Write(Value As Float) Super.Opacity = Min(1, Max(0, Value)) '$fOpacity = Min(1, Max(0, Value)) $fGradStep = Super.Opacity / 10 End Public Sub _free() Dim hClient As HttpClient For Each hClient In $aClients hClient.Stop Next $aClients.Clear ' $DB.Close End Private Function Loading_Read() As Boolean Return $bLoading End '' Define the cookie file '' Allows to define the cookie file shared by all the httpsockets. '' Usefull for using with some server that query a session. Public Function SetCoockieFile(sFile As String) As Object Dim hClient As HttpClient If Not sFile Then For Each hClient In $aClients hClient.UpdateCookies = False hClient.CookiesFile = "" Next Else For Each hClient In $aClients hClient.UpdateCookies = True hClient.CookiesFile = sFile Next Endif End Private Function UseWebMapService_Read() As Boolean Return $bUseWMS End Private Sub UseWebMapService_Write(Value As Boolean) $bUseWMS = Value End Private Function WMSArgs_Read() As Collection Return $cWMSArgs End Private Sub WMSArgs_Write(Value As Collection) $cWMSArgs = Value End Private Function MaxBounds_Read() As MapBounds Return $mbMaxBounds End Private Sub MaxBounds_Write(Value As MapBounds) $mbMaxBounds = value End Private Function WMSProjection_Read() As String Return $WMSProj End Private Sub WMSProjection_Write(Value As String) $WMSProj = Value $prjWMS = New Proj(Value) End Private Function CacheRefreshDelay_Read() As Integer Return $iCacheRefreshDelay End Private Sub CacheRefreshDelay_Write(Value As Integer) $iCacheRefreshDelay = Value End '' Remove old files from cache. '' - iLastUse defines file age in days Public Sub ClearCache(Optional iLastUse As Integer) 'needs some testing... If $sCachePath = Null Or Len($sCachePath) < 5 Then Return If iLastUse Then Exec ["find", $sCachePath, "-mtime", "+" & Str(iLastUse), "-delete"] With ["PWD", $sCachePath] Else Exec ["rm", $sCachePath &/ "*"] Endif End gambas-3.16.3/comp/src/gb.map/.src/_ViewLayer.class000066400000000000000000000055501411575327000217030ustar00rootroot00000000000000' Gambas class file Event foo Private $colSprite As New Collection Private $bMouseDown As Boolean Private $memZoom As Integer Private $bInCursor As Boolean Public Sub _new() Dim hMv As MapView = GetMapView() Dim hPlus As Sprite = New Sprite(Image.Load("plus.png")) hPlus.Move(30, 70) $colSprite!bar = New Sprite(Image.Load("bar.png")) $colSprite!bar.Move(hplus.X + (hPlus.Width - $colSprite!bar.Width) / 2, hplus.Rect.Bottom - hplus.Height / 3) $colSprite!bar.Height = 150 + hplus.height / 3 $colSprite!plus = hplus $colSprite!minus = New Sprite(Image.Load("minus.png")) $colSprite!minus.Move($colSprite!plus.X, $colSprite!bar.Rect.Bottom - hPlus.Height / 3) $colSprite!cursor = New Sprite(Image.Load("cursor.png")) $colSprite!cursor.Move($colSprite!plus.X, $colSprite!minus.y - $colSprite!cursor.Height - (150 / hMv.Map.MaxZoom * hMv.Map.Zoom)) $memZoom = hMv.Map.Zoom 'stop End Public Sub _Draw() Dim hSpr As Sprite Dim hMv As MapView = GetMapView() If $memZoom <> hMv.Map.Zoom Then $colSprite!cursor.Move($colSprite!plus.X, $colSprite!minus.y - (150 / hMv.Map.MaxZoom * hMv.Map.Zoom)) $memZoom = hMv.Map.Zoom Endif For Each hSpr In $colSprite hSpr.Draw Next End Private Function GetMapView() As MapView Return Object.Parent(Me) End Public Sub _MouseMove() Dim hMv As MapView = GetMapView() Dim iZoom As Integer 'hMv.Mouse = Mouse.Default If $colSprite!plus.Rect.Contains(Mouse.X, Mouse.Y) Then hMv.Mouse = Mouse.Pointing Return Endif If $colSprite!cursor.Rect.Contains(Mouse.X, Mouse.Y) Then hMv.Mouse = Mouse.SizeV Return Endif If $colSprite!minus.Rect.Contains(Mouse.X, Mouse.Y) Then hMv.Mouse = Mouse.Pointing Else hMv.Mouse = Mouse.Default Endif If $bInCursor Then $colSprite!cursor.Y = Max($colSprite!plus.Rect.bottom, Min($colSprite!minus.Y - $colSprite!cursor.Height / 2, Mouse.y - $colSprite!cursor.Height / 2)) iZoom = hMv.Map.MaxZoom / 150 * ($colSprite!minus.Y - Mouse.y) If iZoom <> hMv.Map.Zoom Then hMv.Map.Zoom = iZoom $memZoom = iZoom Endif hMv.Refresh Endif End Public Sub _MouseDown() Dim hMv As MapView = GetMapView() If Mouse.Left Then $bMouseDown = True If $colSprite!plus.Rect.Contains(Mouse.X, Mouse.Y) Then hMv._ZoomUp(hMv.ClientW / 2, hMv.ClientH / 2) hMv.Refresh hMv.Lock = True Endif If $colSprite!minus.Rect.Contains(Mouse.X, Mouse.Y) Then hMv._ZoomDown(hMv.ClientW / 2, hMv.ClientH / 2) hMv.Refresh hMv.Lock = True Endif If $colSprite!cursor.Rect.Contains(Mouse.X, Mouse.Y) Then $bInCursor = True hMv.Refresh hMv.Lock = True Endif Endif End Public Sub _MouseUp() Dim hMv As MapView = GetMapView() hMv.Lock = False $bInCursor = False $bMouseDown = False End gambas-3.16.3/comp/src/gb.map/Text1000066400000000000000000000004061411575327000166640ustar00rootroot00000000000000.WMSArgs!service="WMTS .WMSArgs!version="1.0.0 .WMSArgs!request="GetTile .WMSArgs!layer="ORTHOIMAGERY.ORTHOPHOTOS .WMSArgs!style="normal .WMSArgs!format="image/jpeg .WMSArgs!tilematrixset="PM .WMSArgs!tilematrix="{z} .WMSArgs!tilerow="{x} .WMSArgs!tilecol="{y} gambas-3.16.3/comp/src/gb.map/bar.png000066400000000000000000000001401411575327000172010ustar00rootroot00000000000000PNG  IHDRn[X'IDATc(YO&gĐ% IENDB`gambas-3.16.3/comp/src/gb.map/cursor.png000066400000000000000000000005351411575327000177620ustar00rootroot00000000000000PNG  IHDR M$IDAT(ϕ+Da3##̔n)2)6 ٳR֊_`)IJ$Kec)YP䷢ܹ;3&IyW<=6t-N&"9eYhZ2ch7]:YYx:qW|'FDD|)I %2&183hY ^sAкU @J%\4'm(!Y$ h Ay BbKЄx7#n,62+S<֬IWk涰{ ߸m)^_SW2q[oIENDB`gambas-3.16.3/comp/src/gb.map/minus.png000066400000000000000000000004331411575327000175750ustar00rootroot00000000000000PNG  IHDRnIDAT(ϵ1jQ{ՠx`n%HigKy4aQiww,tt 30#JHQ"B"Ba|8?c FOK=VROpzc֦|(c0<6k55x`0X, X0@$8w܅y2ycqEnnӗ |SY{>auE9cF垇=I:IENDB`gambas-3.16.3/comp/src/gb.map/plus.png000066400000000000000000000004601411575327000174250ustar00rootroot00000000000000PNG  IHDRnIDAT(Ͻ1JQE{ cR)6A,Fap -XX)]D.02y!EL~V.S_(F@"S1JP|ċksC<m??= hZ2<PQ2 (Jp ~9kk%x&qd@3):Xzw0*ƟOiXRw/('m|9_q59F]Z찁Εq F PVߜy?HIENDB`gambas-3.16.3/comp/src/gb.map/point.png000066400000000000000000000017621411575327000176010ustar00rootroot00000000000000PNG  IHDR DPLTE#,;4'#x)0\$I('_\v` )@)Q ?N.+(:%Mo#* &2~BtRNSN}#V\ R5iL7( Y429^3X?4bIDAT8c`b4'wsKKK+/Vy~h"/,b %ZSAJZFZVI|;E%eNU5Y|K4LnC#06уbj(V( ll! t`v"+pp*0v)pvAsxx#xy=7rh [#fH(T>,?BO 9:"QP/J#3Ń#!GQX$% HIٮƟ.&Tt ;%/h{v(,jTldM;Gc+*ݥp:Y jrxZS:|IENDB`gambas-3.16.3/comp/src/gb.map/pointsparcelle000066400000000000000000000000001411575327000206710ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.markdown/000077500000000000000000000000001411575327000170015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.markdown/.component000066400000000000000000000001051411575327000210000ustar00rootroot00000000000000[Component] Key=gb.markdown Version=3.15.90 Authors=Benoît Minisini gambas-3.16.3/comp/src/gb.markdown/.directory000066400000000000000000000000411411575327000210010ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.markdown/.icon.png000066400000000000000000000252651411575327000205270ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxo$G߿~[jI3;};.l ^l0``faڻݳFҴ~g=>DFVVHb2Ȍ;~AAAAAAAAAAAAAAAAAAAAAAA1/E/RxnL\ &^3])O}k|t)?B5K'%“toJ},ϊs+?ן$}l Z92RN_1Y:OL'_Y]_O$++%q׵𑐐R=xǿ~OJ H_Oƥ.bkN> F\X#!p[&ظ>vM1 s> U-kקz^NzBLM,3['E !cmFkt&foRߥ8~~8jr߈ F\Y[1ϜZUiCvl35YhR{Vzq|/qRb:'h8%1>y<7/=8OloIT h7 5,=צ`Ź'he椿`^6_SbcOy]HQq aұ\`yt q|!{ƽ?xqjhV[sw&?ŀfu䟌L~~3rT}:ZL][)]wt<;n=聞Wabeu \+(?Yܚsͯ-1~B+3LX/偱L?""\=Q??1igȲ5exmәYiXm)#S}}N9_,КMWXx.!2 &:PX!S,"Es@ktf-ciӹrก ȿן5Ǘ++'uxD$W~]zW~N 4Q<\-Mnr~$Νy jRf#&J\s6 N&Fϙ;  L-P4.3=J'}|N0_Z^W(t%(?P/K_3]VRj|-{#I.3?&5hs0H&8$sL3:Vc,<3)yG߽`Jу+Gp04}`D&, f!5l@jJJ1)E~r(} yBkq?<i"`f!1I5Mo?/ q#sΗYQA2113r r"Oϧ{ (@0/zSީ]דF@B@ʑYؘgәTa@ \&$JhrA$ RJ+Hs9fߧcnaB` {Ykg>e·W7abI1z$ `2_6at Oܧ^drɯ҃|# @:n2Ls>H<+E bx^ /t]{ Oy\L&>Nx __00 Amk* Iˏ)c_ky?ҁƯW\,q7 $2\i9sRs9$ÉkME*iGcbyL,(cd5 *ay(Dɏ;Vʼ =wra0-'&x &381^ZL]<xgLkH)Ǐ,Y-&rI%Q. Ϳ@ۿoIc\Ypm@J @.arGO~ ;Z5&l4؀HiJ8`"R2BS(&~1\ %SsTLalS|rYxcШH[$L[\ Le(5?+E'. RY2 e?d#Wdphm5yi:W!K^QAȒ; 4!JO5?r EMX.и0]yn|NHMhHvW?Z%XZ*FaZ,ڇ ހ4&]7J>PbŸבwȑ F22Ok~e352u!?IZ2)jߧi|cVdq_~[ gOFI׃4Q"Pӗ:_Z+!Gˏ2_\]GV!&{95~-uJ yzq'4tOYnkݝ_W]K7I8z\ @c WQDEąOd1Т\dO^դu!FBE兹?a ,I <~ud"p.Y ?5ZYP$) _XFU!11__GHd'\; @߱ c~שE|%E8kϵ4pYޤ\[`Tۯ,;b`ia&O\c1 5Ӭ\?6`sq`i npap[znPcyA 4W@Pn%'%Xcs |"Z/!ݱ:(A>#P~F?qm*g /Ovp|x=G$'n27"0 c Bvʀ Jh:'n27pF`j>i|H @SJ)|P=KH[[-]؅?Mskh8ҚlyL~rb#9s-2:/.>kxV%"Ee'K=ȦSpeK\'@dHs7?|omZ&R GY$ˊ6V[O?Av5e2f}<ڟa 0@Iz@%a?p rsy$9R9 yb/{nGT7D\ aCu| ci6rt @"S ^XlkxZG m:Ѭ /z!y@1W=4e?jo}<D2d$kڡ azrZ&찔B(ųN @ p.?k_,%"Lv!/_u푏N H )w:n74B*g^N;k` ΰ$^ʍgG`vxǫ~d_q}?0`2$S uۄm,FH N3푏aAH3 PiH,8wG? L2J$ǛM`${~xqG;=<R!sd\.$oB|b׏6 O$B,T^`s \WC|ǯ8 S$B*8iKWH .{@e S|;@*$r; pg9\qNAˆ,+@_k^Lt c؜c69C=.O_7xr0gr=?F 1ԃ* +@3lCի.qgxinH 0L.2)!: x/vzboA0` i1 4i'~692C i?UB[$~ci7g)WY Ga'b " T'g(UP,+j/kxf᪇+.n7H^B1$C&%|dBU bQ<@2а/~H >`O d@ <9~99Sp6q_Ya(g[a L(OR3X Ux#_\k~?p'`;}27'5` 5@͚ P D;y/D0C~rX !^C TKh[ MۂЏKdQ !WIg5 A0uh5 ā^`g u@6TzrT~&`$B38f>V?8x ]Wt´Lgh4|V J&gXF)󕈝0źa}_/R&_ ׽|'1Ѱ  ,_"LUwV-rdu||7nN7,o\|Wqx `^^Τ4+, Dv?_>*wh˧a$  DeǪk~op2Y7G>Q\[uWjxw+<3opp\4 [-qB"JQR,i8 b3|w@0cZкA`D@Qv$h[5a!H^Cg CR ah{~o.>b{grH  dY^ACSp$E)vw{0AəI& Stɔ|DFx vzxS,I3i0yX LgHŹMw[*^Nd\$Ae/d[*;ۃq&Ie $C:=AEU?D'LjIy8GӶt,XWԤC`d2;c >p*$zq x1L21v I%I8Sta a_Q7\0k+8$H&0SY\a3xo"np dDA0Te/n.^*Úe`  IeM¢q Mf HD4٩7@u} x]Cf;2uۦZ.k*pv5%\o8 Q^J<@=VkV\`T~& `ę~ ¡`?aם ul&<-kÍ:ܓ]Si0_G`^(_XXMKkT4wHvxQpu*9 cro`x\SmM^; ݏ;c= F6(%؜ayg=t\fjǜ5>ۺ(78ϞcQ8[ sƮ#3Ys$8 wG>wR³ in6r&$TbX_ n711oH?w0 Ngn]FH^ =ēCzx{ݦ B6a^bWnA4ˤftq6k1BP`IyN"쏧]^8B7J7݌pFT^W^5Y1UQ`;L)xrc_Ξ%x ?Nwnɒ ybqkbóh&_$;aWp/[MqL-톍k~Bs 0őgW2pˁV΁(8  YZ.ZqQ 8o*'[.5]mW~mLmeͺ͆ מg&5]50R! S7+ u;zh9&-E}J6]û(82zwéV{V ,9 Zʛdbw޽2(0Tm-'@?Nb)T?Bp|gs Ngwh޺G+rL|cC1R1!A쮹66<[ n?CG=Αw0j 4mƔ4l&<;5x q&G* uO>B&;s4m랍k!;lMNmC-tvŝ&j(8S[pLw}o{aU:uPi-\ c!LEp gXT 6=5s zU~`s3Vlg5g9-½\@۵UwpL5̛~&B"-<W39au@9Ax6J &'Q>V [IDAT5%`kZ ߿3sd*,Ctq&p$E j6]4l[&DMB0 Ily5vn&ZkXMm- 7 2&y'=;߼coӱj&fxCæ2@i04Mǜf c [F t; p9!m[Hkg4`r>gB"0n~ f*u,Z.[pE03Gg@ywY_;hQkp-w I5A\-LNw  f|Nݏa]n7`s`0^q{y 0<{ 0x5 DiVtipxEl3 ƳNvuuY--аF,8o{(oݽӏp$6y00Jne11Oy=fu7J ˸ogmx76<ˀT"{-jо#5 ^1Yʱ3pMtLS c<|wv{x նcgL++Í>l`A`XG۱hڪɥ2O90/vz0ڮu%0N8}~XuMӮǷhQ:W\vl13v&ܰT~r^C|?{}|;0I8&_]/%$hQcfg 8)uCu1|ـksk"NB{WC<EU1&ǝV?z>i/'go8yD ^BZ!xyBa ~?,$VLAg T;  b|w_w1 h:jh6xg<^WTT~& `-=ӏ.AzG!?0S1~|J zɡo}|{cg&ٹz ?jN˅cr2s28V] w.YO3$Qg&Tw$5& 6V-)%D^ $dǏ3QPɡ|ۗi阸p&~cהŲi#j;Cf[MD}˞Z vwvUwVrLxMO Q%ʒx=;8  8w>}{qmF#W6p0jArFB] {~A}?v$ܲ7%^O} -ĝl5[-|VG5~ .t{O}ͰPP4)T? \(M18gߪ'i{h,򙙊ϴpXepih8|B:\@2W, y\>5 ۼξ3 h΀^v D\m]cn:~nF^[#q Xx8 b*=f \h6qa᪇6ѭ&jcu! `0k߾{sj*ZFn4fWh/.Yw-=0ln^mOmrh:&V] WjhpjM&߈_,+Af-ªgoLnڵ{kuUۮaóUQ :2#OycX8ct8E|BK jڰMlm⛼F0P;] ]w1w5<\p`óv-l z7`+P#vMFc/@ DEcP1`PA653 ,5cóv{$NFT!D~7rWp$c" " cE{ӂz/>sM[.n7,-zY,{ո랄~{xUeK@ V] 5 \K*~?Մ5vttͿ{oXSTiOXbjBP{5N8NHAt@'Au9M}bh5 @[ LA@T~D/ATQaHD!@DL-S\0$ CA@T~& * 0DGzĜx:k7~PӧOv}C!@ӧOzK n?a ,Qm*~?S *L][W=2 C *  @ATQa%AT DՀQa(@ATs)P * QaHAAAAAAAAAAAAAAAAAAAAAAAA(ʻIENDB`gambas-3.16.3/comp/src/gb.markdown/.project000066400000000000000000000002541411575327000204510ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Gambas markup syntax Startup=MTest Version=3.15.90 VersionFile=1 Authors="Benoît Minisini" TabSize=2 Language=fr Type=Component Packager=1 gambas-3.16.3/comp/src/gb.markdown/.src/000077500000000000000000000000001411575327000176465ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.markdown/.src/MTest.module000066400000000000000000000001471411575327000221130ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim X As Integer For X = 32 To 127 Print Chr$(X); Next End gambas-3.16.3/comp/src/gb.markdown/.src/Markdown.class000066400000000000000000000017341411575327000224640ustar00rootroot00000000000000' Gambas class file Export Create 'Public Root As String Public Line As Integer Public Current As String Public Reinterpret As Boolean = True Public LinkAnchors As Boolean Property Verbatim As Integer Public Sub ToHTML(Markdown As String) As String Return Markup.Convert(Markdown, Me) End Public Sub Link(({Link}) As MarkdownLink) End Public Sub Command((Command) As String) As String[] End Public Sub Enter((Class) As String) As String[] End Public Sub Leave((Class) As String) As String[] End Public Sub Process((Class) As String, (Lines) As String[]) As String[] End Public Sub EnableCode(Enabled As Boolean) If Enabled Then Inc Markup.EnableCode Else Dec Markup.EnableCode Endif End Public Sub CheckURL({Url} As String, (Markup) As String) As String Return {Url} End Private Function Verbatim_Read() As Integer Return Markup.Verbatim End Private Sub Verbatim_Write(Value As Integer) Markup.Verbatim = Value End gambas-3.16.3/comp/src/gb.markdown/.src/MarkdownLink.class000066400000000000000000000002441411575327000232750ustar00rootroot00000000000000' Gambas class file Export Public Link As String Public Text As String Public Title As String Public Html As String Public Query As String Public Blank As Booleangambas-3.16.3/comp/src/gb.markdown/.src/Markup.module000066400000000000000000000636061411575327000223270ustar00rootroot00000000000000' Gambas module file Class TextHighlighter Public Struct MarkupList sType As String iIndent As Integer End Struct Public EnableCode As Integer Public Verbatim As Integer Private $aMarkup As String[] Private $cLink As Collection Private $aIndex As String[] Private $aTable As String[] Private $aTableClass As String[] Private $aTablePos As Integer[] Private $hMarkdown As Markdown Private $hLink As New MarkdownLink Private $bComment As Boolean Private Sub GetIndent(sLine As String) As Integer Return Len(sLine) - Len(LTrim(sLine)) End Public Sub Convert(sMarkup As String, hMarkdown As Markdown) As String $hMarkdown = hMarkdown $cLink = New Collection $aIndex = New String[] EnableCode = 0 Return ConvertMarkup(Split(sMarkup, "\n")) End Private Sub IsWordLimit(sCar As String) As Boolean If IsLetter(sCar) Or If IsDigit(sCar) Or If Len(sCar) >= 2 Then Return Return True End Private Sub ConvertMarkup(aLine As String[], Optional bNoLineAnchors As Boolean) As String Dim iLine As Integer Dim aResult As String[] Dim sLine As String Dim I As Integer Dim bCode As Boolean Dim iBlockQuote As Integer Dim sCar As String Dim bInsidePar As Boolean Dim bIgnorePar As Boolean Dim bAddPar As Boolean Dim iIndent, iCurrentIndent As Integer Dim hMarkupList As MarkupList Dim bJustList As Boolean Dim sLink As String Dim iPos As Integer Dim aList As New MarkupList[] Dim sTable As String Dim iIndexPos As Integer = -1 Dim aCommand As String[] Dim aSaveMarkup As String[] Dim aSaveTable As String[] Dim aSaveTablePos As Integer[] Dim aSaveTableClass As String[] Dim sClass As String Dim sList As String Dim bSaveComment As Boolean Dim aTemp As String[] Dim cLine As Collection Dim J As Integer Dim iNextLine As Integer aResult = New String[] aSaveMarkup = $aMarkup $aMarkup = New String[] aSaveTable = $aTable $aTable = New String[] aSaveTableClass = $aTableClass $aTableClass = New String[] aSaveTablePos = $aTablePos $aTablePos = New Integer[] bSaveComment = $bComment ' iLine = 0 ' Do ' If iLine >= aLine.Count Then Break ' sLine = LTrim(aLine[iLine]) ' If Left(sLine) = "%" Then ' If sLine Begins "%IF " Then ' Else If sLine Begins "%ELSE " Then ' ' Endif ' Endif ' Inc iLine ' Loop For iLine = 0 To aLine.Max sLine = LTrim(aLine[iLine]) If Not sLine Then Continue If Left(sLine) <> "[" Then Continue I = InStr(sLine, "]:") If I = 0 Then Continue If I >= 3 Then sLink = Trim(Mid$(sLine, I + 2)) $cLink[Mid$(sLine, 2, I - 2)] = sLink If Left(sLink) = "#" Then iPos = InStr(sLink, " ") If iPos Then sLink = Left(sLink, iPos - 1) aLine[iLine] = "" Continue Endif Endif aLine[iLine] = "" Next If $hMarkdown.LinkAnchors And If Not bNoLineAnchors Then cLine = New Collection iLine = -1 While iLine < aLine.Max Inc iLine sLine = aLine[iLine] If $hMarkdown.LinkAnchors And If Not bNoLineAnchors Then GoSub ADD_LINE $hMarkdown.Line = iLine $hMarkdown.Current = sLine 'If $aMarkup.Count Then ' aResult.Add(ConvertLine(sLine)) ' Continue 'Endif sLine = RTrim(sLine) If Verbatim Then If sLine <> "]]" Then aResult.Add(aLine[iLine]) Continue Endif Endif If Not sLine Then sLine = aLine[iLine] If $bComment Then iPos = InStr(sLine, "-->") If iPos = 0 Then Continue $bComment = False sLine = Mid$(sLine, iPos + 4) Endif ' Special command alone on its line If Left(sLine, 2) = "@{" And If Right(sLine) = "}" Then If sLine = "@{index}" Then iIndexPos = aResult.Count aResult.Add(sLine) Else aCommand = $hMarkdown.Command(Mid$(sLine, 3, -1)) If aCommand And If aCommand.Count Then If $hMarkdown.Reinterpret Then aLine.Insert(aCommand, iLine + 1) Else aResult.Insert(aCommand) Endif $hMarkdown.Reinterpret = True Endif Endif Continue Endif ' Blockquote I = 0 Do If Left(sLine) <> ">" Then Break sCar = Mid$(sLine, 2, 1) If sCar <> " " And If sCar <> gb.Tab Then Break Inc I sLine = LTrim(Mid$(sLine, 3)) Loop If I > iBlockQuote Then While I > iBlockQuote aResult.Add("
      ") Inc iBlockQuote Wend Else If I < iBlockQuote Then While I < iBlockQuote aResult.Add("
      ") Dec iBlockQuote Wend Endif ' Lists If Trim(sLine) Then iIndent = GetIndent(sLine) GoSub CLOSE_LIST sLine = Mid$(sLine, iCurrentIndent + 1) ' Horizontal lines ' If Left(sLine) = "*" And If Right(sLine) = "*" Then ' sText = Replace(sLine, " ", "") ' If Len(sText) >= 3 And If sText = String$(Len(sText), "*") Then ' GoSub CLOSE_PARA ' aResult.Add("
      ") ' Continue ' Endif ' Endif If Left(sLine) = "-" And If Right(sLine) = "-" Then 'sText = Replace(sLine, " ", "") If Len(sLine) >= 3 And If sLine = String$(Len(sLine), "-") Then GoSub CLOSE_PARA aResult.Add("
      ") Continue Endif Endif iPos = InStr(sLine, " ") If iPos Then sList = Left(sLine, iPos - 1) Else sList = "" Endif If sList = "*" Or If sList = "-" Then hMarkupList = New MarkupList hMarkupList.sType = "ul" hMarkupList.iIndent = iIndent + 1 + GetIndent(Mid$(sLine, 2)) aList.Add(hMarkupList) bJustList = True If aResult.Count And If Trim(aResult[aResult.Max]) = "
    " Then If Not Trim(aLine[iLine - 1]) Then If iLine < aLine.Max And If GetIndent(aLine[iLine + 1]) >= hMarkupList.iIndent Then bJustList = False Endif aResult[aResult.Max - 1] = "

    \n" & aResult[aResult.Max - 1] Endif aResult.Remove(aResult.Max) Else GoSub CLOSE_PARA aResult.Add(Space$(iCurrentIndent) & "
      ") Endif iCurrentIndent = hMarkupList.iIndent aResult.Add(Space$(iCurrentIndent) & "
    • ") sLine = Mid$(sLine, 3) Else If sList = "+" Or If Right(sList) = "." And IsDigit(Left(sList, -1)) Then hMarkupList = New MarkupList hMarkupList.sType = "ol" hMarkupList.iIndent = iIndent + 1 + GetIndent(Mid$(sLine, 2)) aList.Add(hMarkupList) bJustList = True If aResult.Count And If Trim(aResult[aResult.Max]) = "" Then If Not Trim(aLine[iLine - 1]) Then If iLine < aLine.Max And If GetIndent(aLine[iLine + 1]) >= hMarkupList.iIndent Then bJustList = False Endif aResult[aResult.Max - 1] = "

      \n" & aResult[aResult.Max - 1] Endif aResult.Remove(aResult.Max) Else GoSub CLOSE_PARA aResult.Add(Space$(iCurrentIndent) & "
        ") Endif iCurrentIndent = hMarkupList.iIndent aResult.Add(Space$(iCurrentIndent) & "
      1. ") sLine = Mid$(sLine, 3) Endif Endif ' Blockquote again! I = iBlockQuote Do If Left(sLine) <> ">" Then Break sCar = Mid$(sLine, 2, 1) If sCar <> " " And If sCar <> gb.Tab Then Break Inc I sLine = LTrim(Mid$(sLine, 3)) Loop If I > iBlockQuote Then While I > iBlockQuote aResult.Add("
        ") Inc iBlockQuote Wend Else If I < iBlockQuote Then While I < iBlockQuote aResult.Add("
        ") Dec iBlockQuote Wend Endif If sLine = "[[" Or If sLine Begins "[[ " Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE $aTable.Push("[[") sLine = Trim(Mid$(sLine, 3)) $aTableClass.Push(sLine) $aTablePos.Push(aResult.Count) If sLine Then If sLine Begins "code " Then Inc Verbatim Else aCommand = $hMarkdown.Enter(sLine) If aCommand Then aResult.Insert(aCommand) Endif Endif 'aResult.Add("") bIgnorePar = False bInsidePar = False Continue Endif If $aTable.Count Then If sLine = "]]" Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE sTable = $aTable.Pop() sClass = $aTableClass.Pop() iPos = $aTablePos.Pop() aCommand = aResult.Extract(iPos, -1) If Left(sClass) <> " " Then aResult.Add("
        ") If sClass Begins "code " Then aTemp = ProcessCode(sClass, aCommand) Else aTemp = $hMarkdown.Process(sClass, aCommand) Endif If aTemp Then aCommand = aTemp aResult.Insert(aCommand) aResult.Add("
        ") Else sClass = Trim(sClass) If Not sClass Then sClass = "table" aResult.Add("") If aCommand.Count And If aCommand[0] = "" Then aCommand.Remove(0) Else aResult.Add("") aResult.Add("
        ") Endif aResult.Insert(aCommand) aResult.Add("
        ") Endif If sClass Begins "code " Then Dec Verbatim Else If sClass Then aCommand = $hMarkdown.Leave(sClass) If aCommand Then aResult.Insert(aCommand) Endif Continue Else If sLine = "--" Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE sTable = $aTable[$aTable.Max] If sTable = "[[" Then aResult.Add("") Else aResult.Add("") Endif bIgnorePar = True bInsidePar = True $aTableClass[$aTableClass.Max] = " " & Trim($aTableClass[$aTableClass.Max]) Continue Else If sLine = "==" Then GoSub CLOSE_PARA iIndent = GetIndent(sLine) GoSub CLOSE_LIST GoSub CLOSE_CODE sTable = $aTable[$aTable.Max] If sTable = "[[" Then aResult.Add("") Else aResult.Add("") Endif aResult.Add("") $aTable[$aTable.Max] = "==" $aTableClass[$aTableClass.Max] = " " & Trim($aTableClass[$aTableClass.Max]) bIgnorePar = True bInsidePar = True Continue Endif Endif If sLine Begins "==" And If sLine = String$(Len(sLine), "=") Then sLine = aResult[aResult.Max] If sLine Not Begins "" Then sLine = Mid$(sLine, 4) bInsidePar = False Endif GoSub CLOSE_PARA aResult[aResult.Max] = "

        " & sLine & "

        " Endif Continue Endif If sLine Begins "--" And If sLine = String$(Len(sLine), "-") And If bInsidePar Then sLine = Trim(aResult[aResult.Max]) If sLine Then If sLine Not Begins "" Then sLine = Mid$(sLine, 4) bInsidePar = False Endif GoSub CLOSE_PARA aResult[aResult.Max] = "

        " & sLine & "

        " Endif Continue Endif Endif ' Code If EnableCode >= 0 Then If sLine Begins " " Or If sLine Begins gb.Tab Then If Left(sLine) = gb.Tab Then sLine = Mid$(sLine, 2) Else sLine = Mid$(sLine, 5) Endif If sLine = "----" Then sLine = "
        " Else sLine = Html$(sLine) Endif If Not bCode Then GoSub CLOSE_PARA bCode = True sLine = "
        " & sLine
                Endif
                aResult.Add(sLine)
                Continue
                
              Endif
            Endif
            
            GoSub CLOSE_CODE
          
            ' Title
            
            If Left(sLine) = "#" Then
              I = InStr(sLine, " ")
              If I > 0 And If I <= 7 Then
                Dec I
                If Left(sLine, I) = String$(I, "#") Then
                  sLine = Mid$(sLine, I + 2)
                  While sLine Ends "#"
                    sLine = Left(sLine, -1)
                  Wend
                  sLine = RTrim(sLine)
                  If Left(sLine) = "[" And If Right(sLine) = "]" Then
                    sLine = ConvertLine(Mid$(sLine, 2, -1))
                    $aIndex.Add(String$(I - 1, "  ") & "- [" & sLine & "] (#t" & CStr($aIndex.Count + 1) & ")")
                    sLine = "" & "" & sLine & ""
                  Else
                    sLine = "" & ConvertLine(sLine) & ""
                  Endif
                  GoSub CLOSE_PARA
                  aResult.Add(sLine)
                  Continue
                Endif
              Endif
            Endif
              
            If Trim(sLine) Then
              If Not bInsidePar And If LTrim(sLine) Not Begins "" & LTrim(sLine)
              bInsidePar = True
              bAddPar = False
            Endif
            
            aResult.Add(sLine)
            
          Wend
          
          GoSub CLOSE_PARA
          GoSub CLOSE_CODE
          GoSub CLOSE_BLOCKQUOTE
          iIndent = 0
          GoSub CLOSE_LIST
          'If $aMarkup.Count Then Error.Raise("Missing markup: " & $aMarkup[$aMarkup.Max])
          
          If $aIndex.Count And If iIndexPos >= 0 Then
            iIndent = GetIndent($aIndex[0])
            For I = 1 To $aIndex.Max
              iIndent = Min(iIndent, GetIndent($aIndex[I]))
            Next
            If iIndent Then
              For I = 0 To $aIndex.Max
                $aIndex[I] = Mid$($aIndex[I], iIndent + 1)
              Next
            Endif
            aResult[iIndexPos] = "
        \n" & ConvertMarkup($aIndex, True) & "
        \n" Endif If $hMarkdown.LinkAnchors And If Not bNoLineAnchors Then iLine = 0 For I = 0 To aResult.Max If cLine.Exist(I) Then aLine = New String[] 'If iLine Then aLine.Add("") iNextLine = cLine[I] For J = iLine To iNextLine - 1 aLine.Add("") ' & "") Next J = Len(aResult[I]) - Len(LTrim(aResult[I])) aResult[I] = Left(aResult[I], J) & aLine.Join("") & "" & Mid$(aResult[I], J + 1) iLine = iNextLine + 1 Endif Next 'aLine = New String[] 'If iLine Then aLine.Add("") aResult.Add("") ' & "") Endif $bComment = bSaveComment $aMarkup = aSaveMarkup $aTable = aSaveTable $aTableClass = aSaveTableClass $aTablePos = aSaveTablePos Return aResult.Join("\n") CLOSE_CODE: If bCode Then aResult.Add("
        ") bCode = False Endif Return CLOSE_BLOCKQUOTE: While iBlockQuote aResult[aResult.Max] &= "" Dec iBlockQuote Wend Return CLOSE_LIST: While iIndent < iCurrentIndent GoSub CLOSE_PARA GoSub CLOSE_CODE 'aResult.Add(Space$(iCurrentIndent) & "
      2. ") aResult[aResult.Max] &= "" bJustList = False aResult.Add(Space$(aList[aList.Max].iIndent) & "") aList.Remove(aList.Max) If aList.Count Then iCurrentIndent = aList[aList.Max].iIndent Else iCurrentIndent = 0 Endif Wend Return CLOSE_PARA: If bInsidePar Then If Not bIgnorePar Then aResult[aResult.Max] &= "

        " 'aResult.Add("") bInsidePar = False bIgnorePar = False 'Else If iLine > 0 And If aResult[aResult.Max] Then ' 'aResult.Add("") Endif Return ADD_LINE: cLine[aResult.Count] = iLine Return End Private Sub ConvertLine(sLine As String) As String Dim sResult As String Dim I, L As Integer Dim sCar As String Dim I1, I2 As Integer Dim sPattern As String Dim bCode As Boolean Dim bEmph As Boolean Dim bStrong As Boolean Dim sText, sTitle, sLink As String Dim bBlank As Boolean Dim bUnderline As Boolean Dim bLimitBefore, bLimitAfter As Boolean Dim iLen As Integer Dim sCommand As String Dim aCommand As String[] Dim iPos As Integer iLen = String.Len(sLine) MAIN_LOOP: If I >= iLen Then If bEmph Then sResult &= "
        " Else If bStrong Then sResult &= "" Endif If bCode Then sResult &= "" Return sResult Endif GoSub NEXT_CAR If sCar = "\\" Then If I = iLen Then sResult &= "
        " Else GoSub NEXT_CAR sResult &= Html(sCar) Endif Goto MAIN_LOOP Endif If sCar = "<" Then Goto ENTER_MARKUP If sCar = "&" Then Goto ENTER_AMPERSAND If sCar = "[" And If String.Mid$(sLine, I + 1, 1) <> " " Then Goto ENTER_LINK If sCar = "@" And If String.Mid$(sLine, I + 1, 1) = "{" Then Goto ENTER_COMMAND If I = 1 Or If IsWordLimit(String.Mid$(sLine, I - 1, 1)) Then bLimitBefore = True Else bLimitBefore = False Endif If IsWordLimit(String.Mid$(sLine, I + 1, 1)) Then bLimitAfter = True Else bLimitAfter = False Endif If bLimitBefore Or If bLimitAfter Then If sCar = "`" And If Not bCode Then Goto ENTER_CODE If sCar = "'" Then Goto ENTER_LIGHT_CODE If sCar = "*" Then Goto ENTER_STAR If sCar = "~" Then Goto ENTER_UNDERLINE Endif If sCar = ">" Then sCar = ">" Endif sResult &= sCar Goto MAIN_LOOP NEXT_CAR: If I >= iLen Then I = iLen + 1 sCar = "" Else Inc I sCar = String.Mid$(sLine, I, 1) Endif Return LOOK_CAR: sCar = String.Mid$(sLine, I + 1, 1) Return ENTER_MARKUP: If String.Mid$(sLine, I, 4) = " "; sData Print #$hStream, sData Flush #$hStream Return GetLine(bMulti) End Public Sub Print(Optional sData As String) If Not Me.Connected Then Return If _Debug Then Error "--> "; sData Print #$hStream, sData Flush #$hStream End Public Function GetLine(Optional bMulti As Boolean) As String Dim sLine As String Dim sResponse As String Dim iPos As Integer If Not Me.Connected Then Return bMulti = True If bMulti Then Do Line Input #$hStream, sLine sResponse &= sLine & "\n" If sLine Like "??? *" Then Break If $hStream.EndOfFile Then Break Loop Else Line Input #$hStream, sLine sResponse = sLine Endif LastAnswer = sLine iPos = InStr(sLine, " ") If iPos = 0 Then LastCode = "" Else LastCode = Left(sLine, iPos - 1) Endif If _Debug Then Error sResponse Return sResponse End Private Function Stream_Read() As Stream Return $hStream End Private Sub Stream_Write(Value As Stream) $hStream = Value End Private Function Connected_Read() As Boolean End Public Sub PrintHeader(sHeader As String, sStr As String, Optional bAddress As Boolean) If Not sStr Or If IsAscii(sStr) Then If sStr Not Begins "=?utf-8?q?" Or If sStr Not Ends "?=" Then Print(sHeader & ": " & sStr) Return Endif Endif Encode.PrintQuotedHeader($hStream, sHeader, sStr, bAddress, _Debug) End Private Function Client_Read() As SmtpClient Return $hClient End gambas-3.16.3/comp/src/gb.net.smtp/.src/SslSession.class000066400000000000000000000026401411575327000227320ustar00rootroot00000000000000' Gambas class file Inherits SmtpSession Property Read Connected As Boolean Private $hProcess As Process Private $sError As String Private $bConnected As Boolean Private $bDisconnect As Boolean Public Sub Connect(hClient As SmtpClient, sHost As String, iPort As Integer) Dim aExec As String[] If Not sHost Then sHost = "localhost" If iPort = 0 Then iPort = 465 Super.Connect(hClient, sHost, iPort) aExec = [SmtpSession.GetOpenSSLPath(), "s_client", "-quiet", "-connect", sHost & ":" & iPort] If Me._Debug Then Error "gb.net.smtp: running: "; aExec.Join(" ") $hProcess = Exec aExec For Read Write As "OpenSSL" $hProcess.Blocking = True $hProcess.EndOfLine = gb.Windows $bConnected = False Repeat Wait 0.1 If Not $hProcess Then If $sError Then Error.Raise(Trim(Split($sError, "\n")[0])) Else Error.Raise("SSL session has stopped unexpectedly") Endif Endif Until $bConnected Me.Stream = $hProcess End Public Sub Disconnect() $bDisconnect = True $hProcess.Kill() End Public Sub OpenSSL_Error(Text As String) If Me._Debug Then Error "openssl: "; Quote(Text) $sError &= Text End Public Sub OpenSSL_Read() $bConnected = True End Public Sub OpenSSL_Kill() Super.Disconnect $hProcess = Null End Private Function Connected_Read() As Boolean If $hProcess And If $hProcess.State = Process.Running Then Return True End gambas-3.16.3/comp/src/gb.net.smtp/.src/TcpSession.class000066400000000000000000000027651411575327000227270ustar00rootroot00000000000000' Gambas class file Inherits SmtpSession Property Read Connected As Boolean Private $hSocket As New Socket Public Sub _new() 'Wait 10 seconds before timing out $hSocket.Timeout = 10000 $hSocket.EndOfLine = gb.Windows End Public Sub Client_Ready() 'Debug "Connected to remote host " & sSocket.Path End Public Sub Client_Closed() 'Debug "Connection Closed by foreign host." End Public Sub Client_Found() 'Debug "Host Found. Connecting..." End Public Sub Connect(hClient As SmtpClient, sHost As String, iPort As Integer) If Not sHost Then sHost = "localhost" If iPort = 0 Then iPort = 25 Super.Connect(hClient, sHost, iPort) $hSocket.Timeout = 10000 $hSocket.Connect(sHost, iPort) $hSocket.Blocking = True Me.Stream = $hSocket Do 'Print $hSocket.Status If $hSocket.Status = Net.Connected Or If $hSocket.Status <= 0 Then Break Wait 0.1 Loop If $hSocket.Status < 0 Then Select Case $hSocket.Status Case Net.CannotCreateSocket Error.Raise("Cannot create socket") Case Net.HostNotFound Error.Raise("Host not Found") Case Net.ConnectionRefused Error.Raise("Connection Refused") Case Net.CannotRead Error.Raise("Read error") Case Net.CannotWrite Error.Raise("Write error") End Select Endif End Public Sub Disconnect() Try $hSocket.Close Super.Disconnect End Private Function Connected_Read() As Boolean Return $hSocket.Status = Net.Connected End gambas-3.16.3/comp/src/gb.net.smtp/.src/TlsSession.class000066400000000000000000000026461411575327000227410ustar00rootroot00000000000000' Gambas class file Inherits SmtpSession Property Read Connected As Boolean Private $hProcess As Process Private $bConnected As Boolean Private $sError As String Public Sub Connect(hClient As SmtpClient, sHost As String, iPort As Integer) Dim aExec As String[] Dim I As Integer If Not sHost Then sHost = "localhost" If iPort = 0 Then iPort = 587 Super.Connect(hClient, sHost, iPort) aExec = [SmtpSession.GetOpenSSLPath(), "s_client", "-quiet", "-starttls", "smtp", "-connect", sHost & ":" & iPort] If Me._Debug Then Error "gb.net.smtp: running: "; aExec.Join(" ") $hProcess = Exec aExec For Read Write As "OpenSSL" $hProcess.Blocking = True $hProcess.EndOfLine = gb.Windows $bConnected = False For I = 1 To 10 Wait 0.1 If Not $hProcess Then If $sError Then Error.Raise(Trim(Split($sError, "\n")[0])) Else Error.Raise("TLS session has stopped unexpectedly") Endif Endif Next $bConnected = True Me.Stream = $hProcess End Public Sub Disconnect() $hProcess.Kill() End Public Sub OpenSSL_Error(Text As String) If Me._Debug Then Error "openssl: "; Quote(Text) $sError &= Text End Public Sub OpenSSL_Read() $bConnected = True End Public Sub OpenSSL_Kill() Super.Disconnect $hProcess = Null End Private Function Connected_Read() As Boolean If $hProcess And If $hProcess.State = Process.Running Then Return True End gambas-3.16.3/comp/src/gb.report/000077500000000000000000000000001411575327000164725ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.component000066400000000000000000000001541411575327000204750ustar00rootroot00000000000000[Component] Key=gb.report Version=3.15.90 State=3 Authors=Fabien Bodard Needs=Form,ImageIO Requires=gb.form gambas-3.16.3/comp/src/gb.report/.connection/000077500000000000000000000000001411575327000207075ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.connection/Connection1.connection000066400000000000000000000002721411575327000251510ustar00rootroot00000000000000[Connection] Type="mysql" Host="localhost" RememberPassword=False IgnoreCharset=False Database="test" User="root" DisplayMetadata=False Requests=["select distinct firstname from test"] gambas-3.16.3/comp/src/gb.report/.connection/Connection2.connection000066400000000000000000000002331411575327000251470ustar00rootroot00000000000000[Connection] Type="mysql" Host="localhost" User="root" RememberPassword=False IgnoreCharset=False Database="Laurux01" DisplayMetadata=False Requests=[""] gambas-3.16.3/comp/src/gb.report/.connection/MainConn.connection000066400000000000000000000002521411575327000244710ustar00rootroot00000000000000[Connection] Type="sqlite" Path="/home/fabien/Documents/Gestion/Bases" RememberPassword=False IgnoreCharset=False DisplayMetadata=False Database="gestion" Requests=[""] gambas-3.16.3/comp/src/gb.report/.dir_icon.png000066400000000000000000000030431411575327000210440ustar00rootroot00000000000000PNG  IHDR szzIDATXý[h\s.{hZڕdR-;nN[ih1@/~( ؁47ִPoDPUm Ȳǖ"ّˮ]a/Vr `̙7 x\1ѣG{SԼQ*8|<c``P \\|{)WhȤ|!<P \VUv%T@|YLER/RDU,)KxdR* 6έA " AJf-+PJ*Z_@)؅~LL_v#M: Y,}[JYS!@2#~υwhCYLjo^T|mIdm`z6x \3d3Xv7ffSxe<7 =Vѻ[Wo ]+h( l 7[ iښ^Ӭu=Y::XA~q;]RJa| ;x_LO/0<$~`_ך !}`Rci"ddddlZw^+uݲ0222q Z&AksJuuq8yę3gj &@ ׋idYΞ=;qܹk è{=@L&9~~,զ %9+ڔ[/8CL)IENDB`gambas-3.16.3/comp/src/gb.report/.directory000066400000000000000000000000411411575327000204720ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.report/.hidden/000077500000000000000000000000001411575327000200035ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.hidden/control/000077500000000000000000000000001411575327000214635ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.hidden/control/reportdrawingarea.png000066400000000000000000000011551411575327000257130ustar00rootroot00000000000000PNG  IHDR D2PLTEѤn}rkn|ËO|\C޻?ܿor^{vIHҶsdndnwHwn_nyM̱pao~֧WSӊninlxtr뮋őa:IDAT8c` )`bFl X 8+ħ_W!^^^a D%$ x)WPT*PVTWP 40052FW 71)03@Q`iemc vNt;O/o y?( !.H K CVEAXd\>:{Ǖ#SRJ4V@t68ĮIENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportgridview.png000066400000000000000000000002131411575327000252410ustar00rootroot00000000000000PNG  IHDR V%(RIDAT8cl`X8 00FP,tH(Wp AT QyTQ_$_zC8]IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reporthbox.png000066400000000000000000000002311411575327000243610ustar00rootroot00000000000000PNG  IHDR g PLTE8tRNSv8:IDATcX+A  dԆ Q U1 L \909hB(IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportimage.png000066400000000000000000000027731411575327000245200ustar00rootroot00000000000000PNG  IHDR szzIDATXKL\;fc!1rD(jز 7bUfM6mUeUUQ.*UUVj,\] &N``gf>. 0+>ݣ?qDRt *Q}DDJ @pORKcBP*G syUu4ƌҜi;60+2mGhkc拄j;kCjpM! wȏc=,4>-RԦf385w; 6}|8%L Eg]{CT#ۿ]IeNva{%xPNiC^EêL&9< #yw8L&ҵmz Sp / 0)Ku3GZP(R?&x">m3v+'h@=}H}%O+Ĕ+Q^A0G:ZS5hx[o-`apvV@$q5:EB5:0W|l7Q Go6)b_y4':ar@VOx9Pnp]W" mẟb|dϑoqK +`Tj-"^\*ݪ./^pĉА]: NxWI^_eOq/cVt"bqmĵ9g#ŹCCC7DīP3>:Gq1pW)2j[PxeN=4^/v``)VfA9 7iKq)O ]ğH~ f* V09~1j:⁸vH$ڹSdrJl{=r0:h1נgO[ellKR>]iF;PvddwgϞVUxV&B+7ҍX)뺸m8CPW'KgΜyGD [U%Zݛ]/HɓMD 2X{"=PϿ;xIENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportlabel.png000066400000000000000000000007011411575327000245020ustar00rootroot00000000000000PNG  IHDR sIDATH͔/CQ?mID'!D 4~L,H ?? .I;H M!M4}yӽ~?ﻹ#0Bڻ|Ax@oC! ` ! /kSA 4G!LɻxGA5ii* Hcx@UZF!\ԭȰ[9Bn=F&Jv("7n6ŽeoK{o,SFYvGңb5:<N$Ng2yet K a&W=`޶VF~G"šÀCʜN"|q'`jp0> X&:1DƅPf/)@"CS3`==IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportline.png000066400000000000000000000001611411575327000243520ustar00rootroot00000000000000PNG  IHDR s8IDATH̱ 0 _6uD};+h jp q9.Q.b&@IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportpagebreak.png000066400000000000000000000002361411575327000253470ustar00rootroot00000000000000PNG  IHDR seIDATH1 0 ?pxC6NP6F3[OIENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportpanel.png000066400000000000000000000002321411575327000245210ustar00rootroot00000000000000PNG  IHDR g PLTEDAtRNSv:IDATcA  dd  T1 L \90/pyu+]IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportsvgimage.png000066400000000000000000000043541411575327000252350ustar00rootroot00000000000000PNG  IHDR szzIDATXýytTǿ-f3f$aB LX!@5ruoڢh)=B9E)rJCeKO]hX@+zN:Sj$땉Tt 9ib!i?4NgZo_d&,KFeF=⬎Ji*ǵq$3 @1qy $Bn'O?iG8~0ٞ2+J \ z}[>cq'΀0 (!0q<'?rs?w:`syy﹇Nnaڏʽ9\eO7Ø7Έ{AFicwVcܹٿxp 9&BT*zI7MVwGv4؈$ae0̐% 4*c".Iׇo]F@c*sWOD2n9R޼gB4@k?X A ¯!ؒ_ILJACO?Mn&\֣$ >8F+.@)(W>ي+8Tz$:W=X28/ ?8!6LqKōԑpl0 ^x(SP?wl#(FU^|18b2ST S  :-- %#H "}]4|}t %>x/ %_:J!02خOcmy-Jn>!pB8V_DB<x)v,p,Nn"a+ӇpU]!0ٲeG6H @b@7Q`E%2l:P 1 }x8+nLqFJK\Gsf̈́M7&y4ˢ0x l:=9.#VU*J&Nv[@_ۍH[V,,q:O0,x_͑:KkFC1nsql-IK;b#j);cay "t ;ap .4^90IO>J\9@5_ס>Ob&h#@X J.TJArUiE?BZ̽c62~R@<_rwښ< NM= LHI4io3$\88 !` ILHvoQ95|Zv5|#o rao__B} O9&vfOeEo^)~~NACM5 z ϙeKB6lD %[=(M"Ue]*Tia9Q(Зx rLZl<_qW[UvqJEh|x)=z;YП>H!?<я Y*Bn y'*Ṑ :js}j׮ cY tXYm/.>frTbmjPWopã:E;p 9dHィ 32GֻHXTDX"RS\;U"S"Gv|dM Um.oM]IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportvbox.png000066400000000000000000000003611411575327000244030ustar00rootroot00000000000000PNG  IHDR TgPLTE7tRNSfIDAT(ϥ1 E؁x/XAg }4Z"UJFt( =kl8pD'kYAp#F(يAC`q'v8$>ToIENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportview.png000066400000000000000000000013341411575327000244000ustar00rootroot00000000000000PNG  IHDR DSPLTE㘘緷Φ{{{xxxvvvssstttyyy|||UUU䋋GGGSSSQQQYYYտ길gggRRRPPPfffAADOOUޛᎎĽdDIDAT8c` :*`bfAL X1*`cd)~^nLB0x1`*s$ťD0HI+(*(Ia*VVQUSPfՑPo`hdlbjlfnaoHkk[(Pdgg`ogDŽSGϓ՗C@`cSHSchJqH(PqzI!a)˜%$)BX%Yfdfec\!!!np%9| ((Ǖh)) 9Y!IENDB`gambas-3.16.3/comp/src/gb.report/.hidden/control/reportvpanel.png000066400000000000000000000003101411575327000247040ustar00rootroot00000000000000PNG  IHDR TgPLTEꠜtRNSveIDAT(c0F 0 " H$BMP$D%!@I( 5BJ da@;c M#Q'w)IENDB`gambas-3.16.3/comp/src/gb.report/.icon.png000066400000000000000000000374161411575327000202210ustar00rootroot00000000000000PNG  IHDR\rf>IDATx͏,K{{""3|{ [mi4 HlX KcVb`d1XXZ<}{9]U}];ʓUYQ|O@&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2/<?!`dr@,3mzr1;Ȱd^;kt^7wv/ק0o f-swߘ_s'_?9c[/[c `{pv]42ߧ菩1IrF?5fx}1Fe8_=k>2^S}?hd΁G HB,r644꠱65hSVTsOT.OjM5]( *ǞX8ikE|?6y57o ?{k-54~K (Xӛ*}TO] jv8 g_ ?^>'xr}8p=ͮ/??$y 7ȴOS5:Xǒc `ߛ[,#z贱L'kg<[,ӑ ?/|?Oͼ>wo%v2ynxcz_3ђi~9 c(8~zߟ#y.~ydI-ޚE^|~_+Ƨ txדefy'-YG_z`^E19c5tWIr6r< s/b0[}2O#✊,|ODOs>ވQO4*4O Wy}dbh X_>#xIroO uїtNd-|ܯB/H?ewr< s/n˛pɱ[yOT?xY`zbOjD6+ 2K{/ 3tzSkT!x@'墳6Od-2wж3^g@]8ɗVƴ~?O{4rg%g|OXr٘>[?=گhQ]b:|4(>#qK/xܩ?</bm廟x@,~ٮ,ks/3h.FxȩfޜgIYdMoܚ\߭Zo8w{>"78^Rw*h.bpk4ܑ᷸.szk5h)?f~~?=-p2tZ|! i;tҖ# 'XV^7G'\L[v&_2I~!o/gLxe2lF79Q44St?%Lg}1q}e~O{Cb'y[W Kv dMiخ;K ʠeҒOp3Hms??n'b |g/ɼcp{* aLuq^Gxcݻ r 7mIz{-}ಿ?=]@Yb]6dQ^*~<.X(qz&]wz$}|:3c2UY=UaP".4{O-I>2IoͿh=O[m;5v|}?G /Ū0Fvu:h'/y=2kwjwϼ$J ,!cO5o:ji7,z?K^0 Ưc!k 㫵z"u6_,|:ݳb}%~>C!k̫૶z"5ա7&=}o,?IaW/ ?$ϼd^( êx˸¸ʚ?:xQpVCk8t>3ͿӜ{/kkY= ooށ[4k+EZA zw_pXXϼBI}4\eg͟9g^cD^hTpyqfvd͟9/^[!q_h3X_O0"UbHy?i6!d͟9_^l/mXxȚ?*bK/FM|x?kLfʫ4XO1O*?gȼb`nA*Z ʉ_P+P@?}dU[#P_/}G9vy5yB:M%?rSբ~gz3;9 `z?oB ~w?}'9 gx1R{OH9]d2_9g N@ͯ(x{Ȫ|dY}9h&ډ?ۿKT#.k}F޿Z@Q sJBDo郙[jG %@ "[ Fx?緆m=/?yP?=< ߾{3l/+y ?ydW?Y=ϼDx ~ߚʃ]Ҹ瓵楒-GL>˼`Hy<3`#!@&s< OBT!bjX-wbƼXdu5&W2w7;7/1C2&<OO$u@ c,ƺ.20/zhihBCP0ьeSR-dL !b 8TJ[Q69u9}wlچÍ`U0 1|P1'=#!I4PKPG[T^ KQEY`O+ |B&g LF#!(`$`$[D>j꠳\ƭ/K, ڟ6\)p[)7Mrh WH\}A*b%?SHvU:7be-KZTUs_P?T@Y(j:CX/ 2̳2]2_'Yd-|>Y" K& T˟j{0GD$jZ8-4쓞aS |D0`񾆥QoY2B L,>S= cOT N;Ӓ]sgO_Y1菲.N|SɽTxVf44T}~=m!L"i?Qh ag 5m z}42~q-i)@x"T7</,Έ%u31oL}}[hG|O3^4,.xf<_/|'1 \/0Ѿ3.]/{-gdj8Sx꼆ӐK=r8~*6 h{}|jȼ'~T'Eɣ/ >-r!ר徽\jDbd>Ql՟Pa'" TսLN> q*К׳o?4^ax1 5m־޾z}yީ?ڛ ? 0ȉ%,d +B5ԞY'9dz蛇-zzqo{[;3rn9Q $ Ypq͹&WMτ! `L#A[F@$NS?Mࣰp1R .SA@\PʘyxBƆx&@S#*Zq+n %;󚀣֟w?)N4tj%hE״F% #FA,FR!/D DB$i:U:Db`=BŎ 7ႃb[Z% ~_bbR@>6ܴ +pF)Fq(M10x2D(G|EL:vpvpo7־rvKSjY}^j L,~|4Z8vǚD֥rʦJT.LJ06?)"ljmMhh>ֆcmiXAA֗PVz ~(QAt 6hX[!z(aJ[66eA#)(Qd p׭N|ۨ4<ɧ T KB#&Z1Qh )! .f=ݧ>ڣ_#'BD".5lALWPlC(- Ք!K"N`$b;(d1q p }.ɔ߷}+콡J0bK+C -*jQ2Z`PyK@Z1P|џIJPU uK }KB\(Z=[bh! --- ldS]5N\ZÏUm Z!n)`jC)kb-J-p@aRaS p_g_Le.,}i{?05 c$`7BhizG{$x@ەrY $KH?T9 6Ds 'W7_XvT[LyRrɦdk.ؔV\QRRT b+5+譀O>B -bn(YR"g '@ 6́>59u ;l.4 M(m @:[]d1&:u8q%mYB-7hP] t}l.`S91fXl]S{1;T#ݾ$Z<qy$?N?ɱf*}EfH<,عJjMUUX[`9l&51lrmN[bK-(MqJvD uHFx[+..W n+׬VkV. ܰcgm[D H> 1i̾>5/:K퉏?~w҇X?&bxq#XkEp%ˡ*٬+M쐘 {la7&pl쁵Ԭ#Y}d #jj{jJ|qo-[A J0(J"MڱH ֦P55qZ?-_ǹ‰$1qĶtFùB:M/°$$XD6 βLkZ}kԻxoxc@ElPY]PMM#|8R#­csqzZ%O5|zc{I3KMbO ǩ6>_,~o., bӥK%RyjĘk~ x ;\WԘ.0M AKMܴWޱ-[LY %7\\^RU߇~7cL 4j 4mAV & +FLO ?j:N>{6iYZhb/)H@Jƕ,hnυs-fvy5ESfSr9{uPK ⣯hKV%w/߰^o3WA.#XOIѡh'[zT|F>Hga7mYn !ҶШ# fQm\s"ZzGQk-Պwɚ[d:Y+cYqA҃Jnšx׷8b7o\,ο?C2{Ѣ48 j.Z~ >$%ݠ 43\nO>P[ńHтhטJhCǀ=8KSqV$芒C w?Pr-7 sGpC,WaKK.[..sK(x-i-OAw&~z'Lr[&L}zצ}z>&uE[Nn9v]ٯh*D5h,cpZn[kY׸`r?pWz_QU"m|}r.@Y^-ѬxY}~K~G~CްZ}H. ց-W"݂-@ v{8Ѫ 2IATP3V#'5S-+CMRuQD|1.٦if$+,-P=ܢ\t!6ܙ^\79(r˦|Ƿo~ޱ^q>Y b՚"BZQJV+z.w[ϙ[0x˼e*]Fa:/l/6*^oTY"PjsaB$܀-Q&*F#U}9cu@O#UD'!B%ƭ17jp%ms\k샀u9[6ؾ9YVV'VA&@zߕ['[\O`:8lj˘AҍJuHzDU|xO[PkA1DJqE ESbdiׂCϔnҲj-"3L\ 0E/ڴ}۷M—![^~6/`p>&)A삮Ȥ;!vC) C 1XWRV75b|UKDIo?>w|!?*D-X8 ?u> z_[?u]׭p`EВB$ P5C3t%$M=BH!HmY99gfMok>ۊ}c:9`}p-eLpۧ3 h <|n kۓe\\]@naRAW0%R[k4 }Ed ` ؝G,4c,EYl% u,hO nZt@F-bRШaP `a(A A,^5" qac<=(x78=)&8 n ! [Zԏ{ZU\AK )` ETD eC 8`>D/h4ULG0McLr5X\EMSayw/Bhhbj-Q`eA`)D bg,ĈpYmX쾮Mu  g|2I,doM_r_mBtiĜqDI@ &Q` d$ntA>3ԄFF$v*#ЭgDbb)cJVdU`JtP~h!4O?~"_-kAP!L,)Xs#|Z! [.nK[v7` $ @UƵXYTG2Q\59=6#]9ΦX4Kqye"œy3'Wu\xO mTZ!PC 2F 4 D|ezC Q D,~hά-}3Z4CnрI)6yˁԅ5j~lSZ46J x$5bL iĬ-Ɵ6m% jS2P#u>]806v!"Ck{t?X3?/_VJ+6&@ko,-!i:@b$p,t@ ]fGƲ #h]9vERKʞr. &37i#jFDhv~\~\0sK=A`X\' Q\@,$:󌁻nDEbfuH f*|>/x Z&Fz1|RII]QU,M?'%U|{~JX!1e]+o!>薩O1Q H0H4TCk̤lg &^xB Iͩ 3;۞Lҡ|W>2ӓ4آiJj`@-H Zn}_ŴN!piC~O{~N.X*޶mSE$ qBRδѼh<s*>Y[Ckoi~i8OyqG$PK6|ԡ41cw\i`P7s9k!}4Mۍ&K_֒NM}np]! }/N/QhAcL 96Ҵv15_}uC] Mi}LAW6s9{0F#Mk`v3`!:}+X(-dh!` Ah=ԍ#7eDbRu>k|k=aXnn5m2Y jM*LXk(K7,W"%X|4qh `صnb<4mJ{fU#5zoC 7MdDSؕZ8yO ZK۶=uSXX-}՞H9EaY!&03~DD ^M Z5+k`q.e8])Ⱥ_R˫| 5ӥ]oԇ&YJ)g!vu;;!l/ ώvjqmۗVY[(L7MZ78vbL[Ӷ[Ini۴x!Dc*m$0192⟒TBw]LGAi1\ŰVaC{hLzT#uc>;l K{u䛵p*XkJӴh_3CPgϕ_P觉6]gIhxOJۆ1y\& LY7jabyTd|5vjsKeǽQL%g&f&-΀ZfW_#׆UAx̺0\HnZߝ8LߊN&<8o~4o[+Xs*ԧbO.{ 3]YqKQ8 R[K`uPVֳȍ(MҸ/ݢ' ҿNLCmiOzF-!N(۶X(V"kkAaӺ2[Y7vTE:H$wl,=s1,_}ٰJ燒-nܜhD&!b,&wQ( Ĉ`#%M'Z@?7Yҕwc;!04Iu0a^JjthuJB\[ Egeh_5)G֝/\;W^H7rJHħY~igFD"Ѝ7A(ԤA7(ނw1U*M~~|\s?U A=M͢1@M{qrplXtCh*j2~o2Ĕ.@_C}<>)55!?Pގ{S$M)K-0i)}&44`7bfCswBѽ>B̂V 6@{zua8L *u_YwX.>gQw]7ѱIwiڇۣ}8v!݃F`i8XV`$be|t}Odq5qLMLo)c gq?HUu\GEMݛwYw#|~QoȩEӮT3Y]7+i3gH]cwC}n5Mm?)ݍ3v_Zo/)g>Aeyl(JʲĘdէmH%:v@3av|Дk_4M?eOkS.) ynizǣfEk(>胲qd94Ȳ8VO4;PpssM6O >%8nϗn䯪4,N A@c&+{[}BHJk14SWsWMoB-op`ZeI}dj H-9^#g/\g :҇t1.F8pqsg?~Ո9u8SU+o=>I!vL,Of?Hy[z>nwܷUҧ]5^ж\} { S , uNMOcamF կ>\IQ޾}Xvw wG>W&8]f̅8Ai`boiۆ8zi,L~=- !/ ާ[Z)ˢF)^Ԥ _ XN;D\%͆vf,)(S=~p`c\7G-2-M]GX &Rv)H0ٻet!!Ok^׼7߰^$knǏ|#mvUԏN6[ܯOmA=ddrE NUhJh] A7,i?fݻw䗿%S|QB4M3,WWWEAQ# `Lc^߃i0 ҽ T[+,`"-Z~HMs+ejU٬ $޼y˻wy;޼ ΍,z! UUuknnv@+\WTUIQ7W[Z=NL H}pkS#omD9\MUU)*ƿ^QUլoqqqj:6cTUneZ_^^l&YPi"Q=A!zbmmΧ #x_y9{ `S$И@6H[O9&wjs!l4%!4ͺ*( ޽;]~I`)p44vG/}*^l;`ECCx; ~>g`Yכi,e}WjiI#Al6wd( |h]`R\=7f + ߧ@"V[GC>嬟c 5[..kuu*\\\pyy`o(eY K>Vr]÷8)h% 5k$Hl^a88$x mO>"b4l93_3 `N.vaYSsɿd:9Fe͛4iz]wE^s2/ f jX㴡 N2Y ݀F$z?>5n/c'XkKtx˲dJB`Z^5qT ͖ OӤ<3b}%[@SBӚBժ`51_??Uo9ʲb xpu83~9kcɲmhzwEMCe<+)Lr >g/z(\-・{poQ/ZVTU$"}aJR ltTn6GyJ}DE{maBV&{n>pu4W&>Pk W2T6 0(lm˻jdžkWzaBYʠOE2Ӭ6F( ;I8- ê*n@x («zvWsG\Qنl\=Ah#Ji<[QhGvƵ [W$Vcz:U4g`j_ww k eR t#J۶4M eT`?헆Y7M披W? l Wsi~jsh{*Mc5xZxh9p59-.E4{>(mm7%أY_ uE5RJ !!4{aMj!xXtm {?2llL2xv%l[usY c%?& v†㐮%bQ1 l L$顬/y)Seߛ^ݰ~O]$ k  !4fpY+palgc`e /Ԅ i)a{G|UԲ"HAo֮ڲ~C}j[tA'A J~TJmmF$ֈz р--6Xp@8lƶ)g+|>Yt>BЖ@ 'w\!Z > QQ )-ﺒ׽w4ܭOmBo0*]Ͱh{Aq($P-x J.R/ Xc0}.+,:VӖ *AC7io5(D*%ѬR-F3]k>04fZ@?n~ QD" S@e BX9tw&7A;nyC*ZYL7NJTchZ#b)V%늋Mv}2 jy 6/wAM*O> 9UvA >TiʤDJTPRHa M}V$MO~FC9`Hֻ0H ȍ*DV#Z ͦ`.٬!'ttQVmĴڛRV]DV)t 2COb$-ѾC˷hyƹnqHk$wzMz/DdbsQL`W  -y<9TAm |oSRUu.|QSz4)KYsSieM b六Ku1oU-B,j*r/'Ynw9گO( ;[m⢈4ѡ},StVhD)jҸeieEee8o̶|H=-MtԔ(%z 1[OF TS*D44Q s;І&idnp*1'5W5uh XBPCP!(9d 1H (iI#XUuS4/Xn7iEyYim݀́}h#Ӑ)[c3Y/P)&@PCP9ܗmjK[5}i ZbyRq^E%5~R[U}ĴznzgkwKӴm DP1(dGU*l&GdΘ|&"Iioٴ/>}i ɜ1Yd2gLf2gL23& L 9crILALɣ33&23& Ly :;k!33&@&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&PQ 6IENDB`gambas-3.16.3/comp/src/gb.report/.lang/000077500000000000000000000000001411575327000174715ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.lang/ca.po000066400000000000000000000071351411575327000204220ustar00rootroot00000000000000#, 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 "Report designer" msgstr "Dissenyador d'informes" #: .project:2 msgid "Report engine for gambas" msgstr "Motor d'informes pel Gambas" #: FExample.form:40 msgid "Demo 1" msgstr "-" #: FExample.form:47 msgid "Demo 2" msgstr "-" #: FExample.form:54 msgid "Cloner" msgstr "Clonador" #: FExample.form:61 myReport2.report:51 msgid "Facture" msgstr "Factura" #: FExample.form:68 msgid "Report in report" msgstr "Informe en l'informe" #: FExample.form:98 msgid "Test Print" msgstr "Prova d'impressió" #: FOptions.form:25 msgid "Size" msgstr "Mida" #: FOptions.form:34 msgid "Paper size" msgstr "Mida del paper" #: FOptions.form:41 msgid "Custom paper size" msgstr "Misa de paper personalitzada" #: FOptions.form:45 msgid "Width:" msgstr "Amplada:" #: FOptions.form:51 msgid "Height:" msgstr "Alçada:" #: FOptions.form:67 msgid "Orientation" msgstr "Orientació" #: FOptions.form:72 msgid "Landscape" msgstr "Apaïsat" #: FOptions.form:72 msgid "Portrait" msgstr "Vertical" #: FPreview.form:28 msgid "Report preview" msgstr "Vista prèvia de l'informe" #: FPreview.form:38 msgid "Print..." msgstr "Imprimeix..." #: FPreview.form:48 msgid "First page" msgstr "Primera pàgina" #: FPreview.form:61 msgid "Page" msgstr "Pàgina" #: FPreview.form:87 msgid "Last page" msgstr "Última pàgina" #: FPreview.form:97 msgid "Fit to window" msgstr "Ajusta a la finestra" #: FPreview.form:104 msgid "Zoom 100%" msgstr "Escala 100%" #: FPreview.form:110 msgid "Zoom out" msgstr "Allunya" #: FPreview.form:124 msgid "Zoom in" msgstr "Apropa" #: Report1.report:15 msgid "#3" msgstr "-" #: Report1.report:17 msgid "#1" msgstr "-" #: Report1.report:27 msgid "COUCOU" msgstr "Cucut" #: Report1.report:56 msgid "#2" msgstr "-" #: Report4.report:30 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "Impressió del plà contable" #: Report4.report:54 msgid "Code" msgstr "Codi" #: Report4.report:62 msgid "Intitulé" msgstr "Dret" #: Report4.report:105 myReport2.report:254 msgid "Page $PAGE" msgstr "Pàgina $PAGE" #: Report6.report:13 msgid "coucou" msgstr "cucut" #: myReport1.report:27 msgid "First Page" msgstr "Primera pàgina" #: myReport1.report:37 msgid "Report About" msgstr "Informe Quant a" #: myReport1.report:45 msgid "All my friends" msgstr "Tots els meus amics" #: myReport1.report:53 msgid "Friend Table" msgstr "Taula d'amics" #: myReport1.report:59 msgid "Report about all my frends" msgstr "Informe sobre tots els meus amics" #: myReport1.report:66 msgid "Test Database" msgstr "Base de dades de prova" #: myReport1.report:89 msgid "Name" msgstr "Nom" #: myReport1.report:99 msgid "FirstName" msgstr "Nom" #: myReport1.report:110 msgid "Birth" msgstr "Naixement" #: myReport1.report:151 msgid "$PAGE/$NPAGE" msgstr "-" #: myReport2.report:40 msgid "Section 1" msgstr "Secció 1" #: myReport2.report:131 msgid "Id" msgstr "Identificació" #: myReport2.report:140 msgid "Designation" msgstr "Designació" #: myReport2.report:148 msgid "PU HT" msgstr "-" #: myReport2.report:157 msgid "Quantité" msgstr "Quantitat" #: myReport2.report:165 msgid "Total HT" msgstr "HT total" #: myReport5.report:42 msgid "Gambas" msgstr "-" #: myReport5.report:77 msgid "gambas" msgstr "-" #: myReport5.report:97 msgid "Page $PAGE on $NPAGE" msgstr "Pàgina $PAGE de $NPAGE" gambas-3.16.3/comp/src/gb.report/.lang/cs.po000066400000000000000000000071771411575327000204520ustar00rootroot00000000000000#, 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 "Report designer" msgstr "Tvůrce designu" #: .project:2 msgid "Report engine for gambas" msgstr "Report nástroj pro gambas" #: FOptions.form:25 msgid "Size" msgstr "Velikost" #: FOptions.form:34 msgid "Paper size" msgstr "Velikost papíru" #: FOptions.form:41 msgid "Custom paper size" msgstr "Volitelná velikost papíru" #: FOptions.form:45 msgid "Width:" msgstr "Šířka:" #: FOptions.form:51 msgid "Height:" msgstr "Výška:" #: FOptions.form:67 msgid "Orientation" msgstr "Orientace" #: FOptions.form:72 msgid "Landscape" msgstr "Na šířku" #: FOptions.form:72 msgid "Portrait" msgstr "Na výšku" #: FPreview.form:28 msgid "Report preview" msgstr "Náhled reportu" #: FPreview.form:39 msgid "Print..." msgstr "Tisk..." #: FPreview.form:49 msgid "First page" msgstr "První stránka" #: FPreview.form:55 msgid "Previous page" msgstr "Předchozí stránka" #: FPreview.form:62 msgid "Page" msgstr "Stránka" #: FPreview.form:82 msgid "Next page" msgstr "Další stránka" #: FPreview.form:88 msgid "Last page" msgstr "Poslední stránka" #: FPreview.form:98 msgid "Fit to window" msgstr "Přizpůsobit oknu" #: FPreview.form:105 msgid "Zoom 100%" msgstr "100% velikost" #: FPreview.form:111 msgid "Zoom out" msgstr "Oddálit" #: FPreview.form:125 msgid "Zoom in" msgstr "Přiblížit" #: Report.class:100 msgid "Section " msgstr "Sekce" #: Report1.report:15 msgid "#3" msgstr "-" #: Report1.report:17 msgid "#1" msgstr "-" #: Report1.report:27 msgid "COUCOU" msgstr "-" #: Report1.report:56 msgid "#2" msgstr "-" #: Report4.report:31 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "-" #: Report4.report:55 msgid "Code" msgstr "-" #: Report4.report:63 msgid "Intitulé" msgstr "-" #: Report4.report:106 myReport2.report:253 msgid "Page $PAGE" msgstr "Stránka $PAGE" #: Report6.report:13 Report7.report:64 msgid "coucou" msgstr "-" #: Report8.report:24 msgid "List of all my friends" msgstr "-" #: Report8.report:34 msgid "List Of My Friends" msgstr "-" #: Report8.report:79 msgid "Page $PAGE / $NPAGE" msgstr "Stránka $PAGE / $NPAGE" #: Report9.report:13 msgid "ReportLabel1" msgstr "-" #: myReport1.report:27 msgid "First Page" msgstr "První stránka" #: myReport1.report:37 msgid "Report About" msgstr "O reportu..." #: myReport1.report:45 msgid "All my friends" msgstr "Všeichni mí přátelé" #: myReport1.report:53 msgid "Friend Table" msgstr "-" #: myReport1.report:59 msgid "Report about all my frends" msgstr "-" #: myReport1.report:66 msgid "Test Database" msgstr "Test databáze" #: myReport1.report:89 msgid "Name" msgstr "Název" #: myReport1.report:99 msgid "FirstName" msgstr "Jméno" #: myReport1.report:110 msgid "Birth" msgstr "Narození" #: myReport1.report:151 msgid "$PAGE/$NPAGE" msgstr "-" #: myReport2.report:40 msgid "Section 1" msgstr "Sekce 1" #: myReport2.report:51 msgid "Facture" msgstr "Faktura" #: myReport2.report:130 msgid "Id" msgstr "-" #: myReport2.report:139 msgid "Designation" msgstr "-" #: myReport2.report:147 msgid "PU HT" msgstr "-" #: myReport2.report:156 msgid "Quantité" msgstr "-" #: myReport2.report:164 msgid "Total HT" msgstr "-" #: myReport5.report:42 msgid "Gambas" msgstr "-" #: myReport5.report:77 msgid "gambas" msgstr "-" #: myReport5.report:96 msgid "Page $PAGE on $NPAGE" msgstr "Stránka $PAGE z $NPAGE" gambas-3.16.3/comp/src/gb.report/.lang/es.po000066400000000000000000000151551411575327000204470ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report 3.6.0\n" "PO-Revision-Date: 2014-10-13 17:30 UTC\n" "Last-Translator: jesus \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Report designer" msgstr "Diseñador de reportes" #: .project:2 msgid "Report engine for gambas" msgstr "-" #: FOptions.form:25 msgid "Size" msgstr "Tamaño" #: FOptions.form:34 msgid "Paper size" msgstr "Tamaño de papel" #: FOptions.form:41 msgid "Custom paper size" msgstr "Tamaño de papel personalizado" #: FOptions.form:45 msgid "Width:" msgstr "Ancho:" #: FOptions.form:51 msgid "Height:" msgstr "" #: FOptions.form:67 FPreview.form:208 msgid "Orientation" msgstr "Orientación" #: FOptions.form:72 FPreview.form:214 msgid "Landscape" msgstr "Paisaje" #: FOptions.form:72 FPreview.form:214 msgid "Portrait" msgstr "Retrato" #: FPreview.class:313 FPrint.form:192 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:327 msgid "Layout..." msgstr "Disposición..." #: FPreview.form:67 msgid "Report preview" msgstr "Vista previa de reporte" #: FPreview.form:97 msgid "Printing..." msgstr "Impresión..." #: FPreview.form:117 msgid "One page" msgstr "Una página" #: FPreview.form:127 msgid "Two pages" msgstr "Dos páginas" #: FPreview.form:136 msgid "Full width" msgstr "Ajustar ancho" #: FPreview.form:145 msgid "Real size" msgstr "Tamaño real" #: FPreview.form:177 msgid "Printer" msgstr "Impresora" #: FPreview.form:189 msgid "File" msgstr "Archivo" #: FPreview.form:223 FPrint.form:109 msgid "Paper" msgstr "Papel" #: FPreview.form:229 msgid "A3" msgstr "-" #: FPreview.form:229 msgid "A4" msgstr "-" #: FPreview.form:229 msgid "A5" msgstr "-" #: FPreview.form:229 msgid "B5" msgstr "-" #: FPreview.form:229 Form1.form:78 msgid "Custom" msgstr "" #: FPreview.form:229 msgid "Executive" msgstr "-" #: FPreview.form:229 msgid "Legal" msgstr "-" #: FPreview.form:229 msgid "Letter" msgstr "-" #: FPreview.form:243 FPrint.form:130 msgid "Width" msgstr "Ancho" #: FPreview.form:253 FPrint.form:148 msgid "mm" msgstr "-" #: FPreview.form:258 FPrint.form:135 msgid "Height" msgstr "Altura" #: FPreview.form:287 msgid "Recto Verso" msgstr "" #: FPreview.form:293 FPrint.form:100 msgid "Long side" msgstr "Lado largo" #: FPreview.form:293 FPrint.form:100 msgid "None" msgstr "Ninguno" #: FPreview.form:293 FPrint.form:100 msgid "Short side" msgstr "Lado corto" #: FPreview.form:308 msgid "Gray Scale" msgstr "Escala de grises" #: FPreview.form:315 msgid "Full Page" msgstr "Página completa" #: FPreview.form:321 msgid "Reverse order" msgstr "Orden inverso" #: FPreview.form:327 msgid "Collate copies" msgstr "" #: FPreview.form:348 FPrint.form:71 msgid "Range" msgstr "Rango" #: FPreview.form:362 msgid "Copies" msgstr "Copias" #: FPreview.form:385 msgid "Print" msgstr "Imprimir" #: FPrint.form:38 msgid "Printer Config" msgstr "Configurar Impresora" #: FPrint.form:58 msgid "More..." msgstr "Más..." #: FPrint.form:89 msgid "RectoVerso" msgstr "" #: FPrint.form:178 msgid "Copies :" msgstr "" #: Form1.form:56 msgid "One Page" msgstr "Una página" #: Form1.form:64 msgid "Two Page" msgstr "Dos páginas" #: Form1.form:71 msgid "FullWidth" msgstr "Ajustar ancho" #: OutputReport.report:74 OutputReport2.report:77 msgid "Version 1.0" msgstr "-" #: OutputReport.report:81 OutputReport2.report:84 msgid "Date" msgstr "Fecha" #: OutputReport.report:96 OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport.report:103 OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport.report:110 OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport.report:117 OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport.report:131 OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport.report:186 OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport.report:196 OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport.report:203 OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport.report:268 OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport.report:278 OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport.report:285 OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport.report:350 OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "Página $PAGE de $NPAGE" #: Report.class:108 msgid "Section " msgstr "Sección" #: Report1.report:16 msgid "#3" msgstr "-" #: Report1.report:23 msgid "#1" msgstr "-" #: Report1.report:33 msgid "COUCOU" msgstr "" #: Report1.report:62 msgid "#2" msgstr "-" #: Report10.report:27 Report6.report:16 msgid "ReportLabel1" msgstr "" #: Report10.report:33 msgid "ReportLabel2" msgstr "" #: Report10.report:39 msgid "ReportLabel3" msgstr "" #: Report10.report:69 msgid "Page $NPAGE" msgstr "Página $NPAGE" #: Report11.report:17 msgid "C'est la maison !" msgstr "" #: Report4.report:31 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "" #: Report4.report:55 msgid "Code" msgstr "" #: Report4.report:63 msgid "Intitulé" msgstr "" #: Report4.report:106 msgid "Page $PAGE sur $NPAGE" msgstr "Page $PAGE de $NPAGE" #: Report7.report:64 rpTestShadowGrid.report:19 msgid "coucou" msgstr "" #: Report8.report:24 msgid "List of all my friends" msgstr "" #: Report8.report:34 msgid "List Of My Friends" msgstr "" #: Report8.report:83 msgid "Page $PAGE / $NPAGE" msgstr "Página $PAGE / $NPAGE" #: myReport1.report:27 msgid "First Page" msgstr "Primera página" #: myReport1.report:38 msgid "Report About" msgstr "" #: myReport1.report:46 msgid "All my friends" msgstr "" #: myReport1.report:55 msgid "Friend Table" msgstr "" #: myReport1.report:61 msgid "Report about all my frends" msgstr "" #: myReport1.report:68 msgid "Test Database" msgstr "" #: myReport1.report:91 msgid "Name" msgstr "Nombre" #: myReport1.report:101 msgid "FirstName" msgstr "" #: myReport1.report:112 msgid "Birth" msgstr "" #: myReport1.report:153 msgid "$PAGE/$NPAGE" msgstr "-" #: myReport2.report:40 msgid "Section 1" msgstr "" #: myReport2.report:51 msgid "Facture" msgstr "" #: myReport2.report:130 msgid "Id" msgstr "-" #: myReport2.report:139 msgid "Designation" msgstr "" #: myReport2.report:147 msgid "PU HT" msgstr "" #: myReport2.report:156 msgid "Quantité" msgstr "Cantidad" #: myReport2.report:164 msgid "Total HT" msgstr "" #: myReport2.report:255 msgid "Page $PAGE" msgstr "Página $PAGE" #: myReport5.report:41 msgid "Gambas" msgstr "-" #: myReport5.report:75 msgid "gambas" msgstr "-" #: myReport5.report:94 msgid "Page $PAGE on $NPAGE" msgstr "Página $PAGE de $NPAGE" gambas-3.16.3/comp/src/gb.report/.lang/es_ES.po000066400000000000000000000156311411575327000210350ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report 3.6.0\n" "POT-Creation-Date: 2015-09-20 17:55 UTC\n" "PO-Revision-Date: 2014-10-13 17:30 UTC\n" "Last-Translator: jesus \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Report designer" msgstr "Diseñador de reportes" #: .project:2 msgid "Report engine for gambas" msgstr "-" #: FOptions.form:25 msgid "Size" msgstr "Tamaño" #: FOptions.form:34 msgid "Paper size" msgstr "Tamaño de papel" #: FOptions.form:41 msgid "Custom paper size" msgstr "Tamaño de papel personalizado" #: FOptions.form:45 msgid "Width:" msgstr "Ancho:" #: FOptions.form:51 msgid "Height:" msgstr "" #: FOptions.form:67 FPreview.form:208 msgid "Orientation" msgstr "Orientación" #: FOptions.form:72 FPreview.form:214 msgid "Landscape" msgstr "Paisaje" #: FOptions.form:72 FPreview.form:214 msgid "Portrait" msgstr "Retrato" #: FPreview.class:313 FPrint.form:192 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:327 msgid "Layout..." msgstr "Disposición..." #: FPreview.form:67 msgid "Report preview" msgstr "Vista previa de reporte" #: FPreview.form:97 msgid "Printing..." msgstr "Impresión..." #: FPreview.form:117 msgid "One page" msgstr "Una página" #: FPreview.form:127 msgid "Two pages" msgstr "Dos páginas" #: FPreview.form:136 msgid "Full width" msgstr "Ajustar ancho" #: FPreview.form:145 msgid "Real size" msgstr "Tamaño real" #: FPreview.form:177 msgid "Printer" msgstr "Impresora" #: FPreview.form:189 msgid "File" msgstr "Archivo" #: FPreview.form:223 FPrint.form:109 msgid "Paper" msgstr "Papel" #: FPreview.form:229 msgid "A3" msgstr "-" #: FPreview.form:229 msgid "A4" msgstr "-" #: FPreview.form:229 msgid "A5" msgstr "-" #: FPreview.form:229 msgid "B5" msgstr "-" #: FPreview.form:229 Form1.form:78 msgid "Custom" msgstr "" #: FPreview.form:229 msgid "Executive" msgstr "-" #: FPreview.form:229 msgid "Legal" msgstr "-" #: FPreview.form:229 msgid "Letter" msgstr "-" #: FPreview.form:243 FPrint.form:130 msgid "Width" msgstr "Ancho" #: FPreview.form:253 FPrint.form:148 msgid "mm" msgstr "-" #: FPreview.form:258 FPrint.form:135 msgid "Height" msgstr "Altura" #: FPreview.form:287 msgid "Recto Verso" msgstr "" #: FPreview.form:293 FPrint.form:100 msgid "Long side" msgstr "Lado largo" #: FPreview.form:293 FPrint.form:100 msgid "None" msgstr "Ninguno" #: FPreview.form:293 FPrint.form:100 msgid "Short side" msgstr "Lado corto" #: FPreview.form:308 msgid "Gray Scale" msgstr "Escala de grises" #: FPreview.form:315 msgid "Full Page" msgstr "Página completa" #: FPreview.form:321 msgid "Reverse order" msgstr "Orden inverso" #: FPreview.form:327 msgid "Collate copies" msgstr "" #: FPreview.form:348 FPrint.form:71 msgid "Range" msgstr "Rango" #: FPreview.form:362 msgid "Copies" msgstr "Copias" #: FPreview.form:385 msgid "Print" msgstr "Imprimir" #: FPrint.form:38 msgid "Printer Config" msgstr "Configurar Impresora" #: FPrint.form:58 msgid "More..." msgstr "Más..." #: FPrint.form:89 msgid "RectoVerso" msgstr "" #: FPrint.form:178 msgid "Copies :" msgstr "" #: Form1.form:56 msgid "One Page" msgstr "Una página" #: Form1.form:64 msgid "Two Page" msgstr "Dos páginas" #: Form1.form:71 msgid "FullWidth" msgstr "Ajustar ancho" #: OutputReport.report:74 OutputReport2.report:77 msgid "Version 1.0" msgstr "-" #: OutputReport.report:81 OutputReport2.report:84 msgid "Date" msgstr "Fecha" #: OutputReport.report:96 OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport.report:103 OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport.report:110 OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport.report:117 OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport.report:131 OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport.report:186 OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport.report:196 OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport.report:203 OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport.report:268 OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport.report:278 OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport.report:285 OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport.report:350 OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "Página $PAGE de $NPAGE" #: Report.class:108 msgid "Section " msgstr "Sección" #: Report1.report:16 msgid "#3" msgstr "-" #: Report1.report:23 msgid "#1" msgstr "-" #: Report1.report:33 msgid "COUCOU" msgstr "" #: Report1.report:62 msgid "#2" msgstr "-" #: Report10.report:27 Report6.report:16 msgid "ReportLabel1" msgstr "" #: Report10.report:33 msgid "ReportLabel2" msgstr "" #: Report10.report:39 msgid "ReportLabel3" msgstr "" #: Report10.report:69 msgid "Page $NPAGE" msgstr "Página $NPAGE" #: Report11.report:17 msgid "C'est la maison !" msgstr "" #: Report14.report:19 myReport2.report:40 msgid "Section 1" msgstr "" #: Report14.report:39 myReport5.report:41 msgid "Gambas" msgstr "-" #: Report14.report:59 msgid "All friends list !" msgstr "" #: Report14.report:77 msgid "Gambas Report Demo" msgstr "" #: Report14.report:95 #, fuzzy msgid "Page $PAGE on $NPAGE " msgstr "Página $PAGE de $NPAGE" #: Report4.report:31 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "" #: Report4.report:55 msgid "Code" msgstr "" #: Report4.report:63 msgid "Intitulé" msgstr "" #: Report4.report:106 msgid "Page $PAGE sur $NPAGE" msgstr "Page $PAGE de $NPAGE" #: Report7.report:64 rpTestShadowGrid.report:19 msgid "coucou" msgstr "" #: Report8.report:24 msgid "List of all my friends" msgstr "" #: Report8.report:34 msgid "List Of My Friends" msgstr "" #: Report8.report:83 msgid "Page $PAGE / $NPAGE" msgstr "Página $PAGE / $NPAGE" #: myReport1.report:27 msgid "First Page" msgstr "Primera página" #: myReport1.report:38 msgid "Report About" msgstr "" #: myReport1.report:46 msgid "All my friends" msgstr "" #: myReport1.report:55 msgid "Friend Table" msgstr "" #: myReport1.report:61 msgid "Report about all my frends" msgstr "" #: myReport1.report:68 msgid "Test Database" msgstr "" #: myReport1.report:91 msgid "Name" msgstr "Nombre" #: myReport1.report:101 msgid "FirstName" msgstr "" #: myReport1.report:112 msgid "Birth" msgstr "" #: myReport1.report:153 msgid "$PAGE/$NPAGE" msgstr "-" #: myReport2.report:51 msgid "Facture" msgstr "" #: myReport2.report:130 msgid "Id" msgstr "-" #: myReport2.report:139 msgid "Designation" msgstr "" #: myReport2.report:147 msgid "PU HT" msgstr "" #: myReport2.report:156 msgid "Quantité" msgstr "Cantidad" #: myReport2.report:164 msgid "Total HT" msgstr "" #: myReport2.report:255 msgid "Page $PAGE" msgstr "Página $PAGE" #: myReport5.report:76 msgid "gambas" msgstr "-" #: myReport5.report:95 msgid "Page $PAGE on $NPAGE" msgstr "Página $PAGE de $NPAGE" gambas-3.16.3/comp/src/gb.report/.lang/fr.po000066400000000000000000000155621411575327000204510ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2014-12-16 11:06 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 "Report designer" msgstr "" #: .project:2 msgid "Report engine for gambas" msgstr "" #: FOptions.form:25 msgid "Size" msgstr "" #: FOptions.form:34 msgid "Paper size" msgstr "" #: FOptions.form:41 msgid "Custom paper size" msgstr "" #: FOptions.form:45 msgid "Width:" msgstr "" #: FOptions.form:51 msgid "Height:" msgstr "" #: FOptions.form:67 FPreview.form:208 msgid "Orientation" msgstr "Orientation" #: FOptions.form:72 FPreview.form:214 msgid "Landscape" msgstr "Paysage" #: FOptions.form:72 FPreview.form:214 msgid "Portrait" msgstr "Portrait" #: FPreview.class:313 FPrint.form:192 msgid "Cancel" msgstr "Annuler" #: FPreview.class:327 msgid "Layout..." msgstr "Mise en page..." #: FPreview.form:67 msgid "Report preview" msgstr "Aperçu de l'état" #: FPreview.form:97 msgid "Printing..." msgstr "Imprimer..." #: FPreview.form:117 msgid "One page" msgstr "Une page" #: FPreview.form:127 msgid "Two pages" msgstr "Deux pages" #: FPreview.form:136 msgid "Full width" msgstr "Pleine largeur" #: FPreview.form:145 msgid "Real size" msgstr "Taille réelle" #: FPreview.form:177 msgid "Printer" msgstr "Imprimante" #: FPreview.form:189 msgid "File" msgstr "Fichier" #: FPreview.form:223 FPrint.form:109 msgid "Paper" msgstr "Papier" #: FPreview.form:229 msgid "A3" msgstr "" #: FPreview.form:229 msgid "A4" msgstr "" #: FPreview.form:229 msgid "A5" msgstr "" #: FPreview.form:229 msgid "B5" msgstr "" #: FPreview.form:229 Form1.form:78 msgid "Custom" msgstr "Personnel" #: FPreview.form:229 msgid "Executive" msgstr "Executive" #: FPreview.form:229 msgid "Legal" msgstr "Legal" #: FPreview.form:229 msgid "Letter" msgstr "Lettre" #: FPreview.form:243 FPrint.form:130 msgid "Width" msgstr "Largeur" #: FPreview.form:253 FPrint.form:148 msgid "mm" msgstr "" #: FPreview.form:258 FPrint.form:135 msgid "Height" msgstr "Hauteur" #: FPreview.form:287 msgid "Recto Verso" msgstr "" #: FPreview.form:293 FPrint.form:100 msgid "Long side" msgstr "Coté long" #: FPreview.form:293 FPrint.form:100 msgid "None" msgstr "Aucun" #: FPreview.form:293 FPrint.form:100 msgid "Short side" msgstr "Coté court" #: FPreview.form:308 msgid "Gray Scale" msgstr "Niveaux de gris" #: FPreview.form:315 msgid "Full Page" msgstr "Pleine page" #: FPreview.form:321 msgid "Reverse order" msgstr "Inverser" #: FPreview.form:327 msgid "Collate copies" msgstr "Assembler" #: FPreview.form:348 FPrint.form:71 msgid "Range" msgstr "Echantillon" #: FPreview.form:362 msgid "Copies" msgstr "Copies" #: FPreview.form:385 msgid "Print" msgstr "Imprimer" #: FPrint.form:38 msgid "Printer Config" msgstr "" #: FPrint.form:58 msgid "More..." msgstr "" #: FPrint.form:89 msgid "RectoVerso" msgstr "" #: FPrint.form:178 msgid "Copies :" msgstr "" #: Form1.form:56 msgid "One Page" msgstr "" #: Form1.form:64 msgid "Two Page" msgstr "" #: Form1.form:71 msgid "FullWidth" msgstr "" #: OutputReport.report:74 OutputReport2.report:77 msgid "Version 1.0" msgstr "" #: OutputReport.report:81 OutputReport2.report:84 msgid "Date" msgstr "" #: OutputReport.report:96 OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport.report:103 OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport.report:110 OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport.report:117 OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport.report:131 OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport.report:186 OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport.report:196 OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport.report:203 OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport.report:268 OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport.report:278 OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport.report:285 OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport.report:350 OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "" #: Report.class:108 msgid "Section " msgstr "" #: Report1.report:16 msgid "#3" msgstr "" #: Report1.report:23 msgid "#1" msgstr "" #: Report1.report:33 msgid "COUCOU" msgstr "" #: Report1.report:62 msgid "#2" msgstr "" #: Report10.report:27 Report6.report:16 msgid "ReportLabel1" msgstr "" #: Report10.report:33 msgid "ReportLabel2" msgstr "" #: Report10.report:39 msgid "ReportLabel3" msgstr "" #: Report10.report:69 msgid "Page $NPAGE" msgstr "" #: Report11.report:17 msgid "C'est la maison !" msgstr "" #: Report4.report:31 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "" #: Report4.report:55 msgid "Code" msgstr "" #: Report4.report:63 msgid "Intitulé" msgstr "" #: Report4.report:106 msgid "Page $PAGE sur $NPAGE" msgstr "" #: Report7.report:64 rpTestShadowGrid.report:19 msgid "coucou" msgstr "" #: Report8.report:24 msgid "List of all my friends" msgstr "" #: Report8.report:34 msgid "List Of My Friends" msgstr "" #: Report8.report:83 msgid "Page $PAGE / $NPAGE" msgstr "" #: myReport1.report:27 msgid "First Page" msgstr "" #: myReport1.report:38 msgid "Report About" msgstr "" #: myReport1.report:46 msgid "All my friends" msgstr "" #: myReport1.report:55 msgid "Friend Table" msgstr "" #: myReport1.report:61 msgid "Report about all my frends" msgstr "" #: myReport1.report:68 msgid "Test Database" msgstr "" #: myReport1.report:91 msgid "Name" msgstr "" #: myReport1.report:101 msgid "FirstName" msgstr "" #: myReport1.report:112 msgid "Birth" msgstr "" #: myReport1.report:153 msgid "$PAGE/$NPAGE" msgstr "" #: myReport2.report:40 msgid "Section 1" msgstr "" #: myReport2.report:51 msgid "Facture" msgstr "" #: myReport2.report:130 msgid "Id" msgstr "" #: myReport2.report:139 msgid "Designation" msgstr "" #: myReport2.report:147 msgid "PU HT" msgstr "" #: myReport2.report:156 msgid "Quantité" msgstr "" #: myReport2.report:164 msgid "Total HT" msgstr "" #: myReport2.report:255 msgid "Page $PAGE" msgstr "" #: myReport5.report:41 msgid "Gambas" msgstr "" #: myReport5.report:75 msgid "gambas" msgstr "" #: myReport5.report:94 msgid "Page $PAGE on $NPAGE" msgstr "" #~ msgid "Zoom in" #~ msgstr "Agrandir" #~ msgid "Zoom out" #~ msgstr "Réduire" #~ msgid "Zoom 100%" #~ msgstr "Zoom 100%" #~ msgid "Fit to window" #~ msgstr "Adapter à la fenêtre" #~ msgid "Last page" #~ msgstr "Dernière page" #~ msgid "Next page" #~ msgstr "Page suivante" #~ msgid "Page" #~ msgstr "Page" #~ msgid "Previous page" #~ msgstr "Page précédente" #~ msgid "First page" #~ msgstr "Première page" #~ msgid "Print..." #~ msgstr "Imprimer..." gambas-3.16.3/comp/src/gb.report/.lang/nl.po000066400000000000000000000161741411575327000204530ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2014 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report 3.10.90\n" "POT-Creation-Date: 2019-04-06 18:41 UTC\n" "PO-Revision-Date: 2017-08-26 19:45 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 "Report designer" msgstr "Rapport ontwerper" #: .project:2 msgid "Report engine for gambas" msgstr "Rapportage voor Gambas" #: FOptions.form:25 msgid "Size" msgstr "Afmeting" #: FOptions.form:34 msgid "Paper size" msgstr "Papierformaat" #: FOptions.form:41 msgid "Custom paper size" msgstr "Aangepast papierformaat" #: FOptions.form:45 msgid "Width:" msgstr "Breedte:" #: FOptions.form:51 msgid "Height:" msgstr "Hoogte:" #: FOptions.form:67 FPreview.form:208 msgid "Orientation" msgstr "Oriëntatie" #: FOptions.form:72 FPreview.form:214 msgid "Landscape" msgstr "Landschap" #: FOptions.form:72 FPreview.form:214 msgid "Portrait" msgstr "Portret" #: FPreview.class:313 FPrint.form:192 msgid "Cancel" msgstr "Annuleren" #: FPreview.class:327 msgid "Layout..." msgstr "Lay-out..." #: FPreview.form:67 msgid "Report preview" msgstr "Rapport voorbeeld" #: FPreview.form:97 msgid "Printing..." msgstr "-" #: FPreview.form:117 msgid "One page" msgstr "Een pagina" #: FPreview.form:127 msgid "Two pages" msgstr "Twee pagina's" #: FPreview.form:136 msgid "Full width" msgstr "Volledige breedte" #: FPreview.form:145 msgid "Real size" msgstr "Echte afmeting" #: FPreview.form:177 msgid "Printer" msgstr "-" #: FPreview.form:189 msgid "File" msgstr "Bestand" #: FPreview.form:223 FPrint.form:109 msgid "Paper" msgstr "Papier" #: FPreview.form:229 msgid "A3" msgstr "-" #: FPreview.form:229 msgid "A4" msgstr "-" #: FPreview.form:229 msgid "A5" msgstr "-" #: FPreview.form:229 msgid "B5" msgstr "-" #: FPreview.form:229 Form1.form:78 msgid "Custom" msgstr "Aangepast" #: FPreview.form:229 msgid "Executive" msgstr "-" #: FPreview.form:229 msgid "Legal" msgstr "-" #: FPreview.form:229 msgid "Letter" msgstr "-" #: FPreview.form:243 FPrint.form:130 msgid "Width" msgstr "Breedte" #: FPreview.form:253 FPrint.form:148 msgid "mm" msgstr "mm" #: FPreview.form:258 FPrint.form:135 msgid "Height" msgstr "Hoogte" #: FPreview.form:287 msgid "Recto Verso" msgstr "-" #: FPreview.form:293 FPrint.form:100 msgid "Long side" msgstr "Lange zijde" #: FPreview.form:293 FPrint.form:100 msgid "None" msgstr "Geen" #: FPreview.form:293 FPrint.form:100 msgid "Short side" msgstr "Korte zijde" #: FPreview.form:308 msgid "Gray Scale" msgstr "Grijs schaal" #: FPreview.form:315 msgid "Full Page" msgstr "Volledige pagina" #: FPreview.form:321 msgid "Reverse order" msgstr "Omgekeerde volgorde" #: FPreview.form:327 msgid "Collate copies" msgstr "Soteer kopiën" #: FPreview.form:348 FPrint.form:71 msgid "Range" msgstr "Bereik" #: FPreview.form:362 msgid "Copies" msgstr "Kopiën" #: FPreview.form:385 msgid "Print" msgstr "-" #: FPrint.form:38 msgid "Printer Config" msgstr "-" #: FPrint.form:58 msgid "More..." msgstr "Meer..." #: FPrint.form:89 msgid "RectoVerso" msgstr "-" #: FPrint.form:178 msgid "Copies :" msgstr "Kopiën:" #: Form1.form:56 msgid "One Page" msgstr "Een Pagina" #: Form1.form:64 msgid "Two Page" msgstr "Twee Pagina's" #: Form1.form:71 msgid "FullWidth" msgstr "VolledigeBreedte" #: OutputReport.report:74 OutputReport2.report:77 msgid "Version 1.0" msgstr "-" #: OutputReport.report:81 OutputReport2.report:84 msgid "Date" msgstr "Datum" #: OutputReport.report:96 OutputReport2.report:99 msgid "Project Title:" msgstr "-" #: OutputReport.report:103 OutputReport2.report:106 msgid "Project No.:" msgstr "-" #: OutputReport.report:110 OutputReport2.report:113 msgid "Company:" msgstr "Bedrijf:" #: OutputReport.report:117 OutputReport2.report:120 msgid "Designer:" msgstr "Ontwerper:" #: OutputReport.report:131 OutputReport2.report:134 msgid "Base Plate ID:" msgstr "-" #: OutputReport.report:186 OutputReport2.report:185 msgid "Bearing Pressue" msgstr "-" #: OutputReport.report:196 OutputReport2.report:195 msgid "Node #" msgstr "-" #: OutputReport.report:203 OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "-" #: OutputReport.report:268 OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "-" #: OutputReport.report:278 OutputReport2.report:276 msgid "Rod #" msgstr "-" #: OutputReport.report:285 OutputReport2.report:283 msgid "Tension, lbs" msgstr "-" #: OutputReport.report:350 OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "Pagina $PAGE van $NPAGE" #: Report.class:108 msgid "Section " msgstr "Sectie" #: Report1.report:16 msgid "#3" msgstr "-" #: Report1.report:23 msgid "#1" msgstr "-" #: Report1.report:33 msgid "COUCOU" msgstr "-" #: Report1.report:62 msgid "#2" msgstr "-" #: Report10.report:27 Report6.report:16 msgid "ReportLabel1" msgstr "-" #: Report10.report:33 msgid "ReportLabel2" msgstr "-" #: Report10.report:39 msgid "ReportLabel3" msgstr "-" #: Report10.report:69 msgid "Page $NPAGE" msgstr "Pagina $NPAGE" #: Report11.report:17 msgid "C'est la maison !" msgstr "-" #: Report14.report:19 myReport2.report:40 msgid "Section 1" msgstr "-" #: Report14.report:39 myReport5.report:41 msgid "Gambas" msgstr "-" #: Report14.report:59 msgid "All friends list !" msgstr "-" #: Report14.report:77 msgid "Gambas Report Demo" msgstr "-" #: Report14.report:95 msgid "Page $PAGE on $NPAGE " msgstr "-" #: Report4.report:31 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "-" #: Report4.report:55 msgid "Code" msgstr "-" #: Report4.report:63 msgid "Intitulé" msgstr "-" #: Report4.report:106 msgid "Page $PAGE sur $NPAGE" msgstr "Pagina $PAGE van $NPAGE" #: Report7.report:64 rpTestShadowGrid.report:19 msgid "coucou" msgstr "-" #: Report8.report:24 msgid "List of all my friends" msgstr "Lijst van al mijn vrienden" #: Report8.report:34 msgid "List Of My Friends" msgstr "Lijst Van Mijn Vrienden" #: Report8.report:83 msgid "Page $PAGE / $NPAGE" msgstr "Pagina $PAGE / $NPAGE" #: myReport1.report:27 msgid "First Page" msgstr "Eerste Pagina" #: myReport1.report:38 msgid "Report About" msgstr "Over rapport" #: myReport1.report:46 msgid "All my friends" msgstr "Al mijn vrienden" #: myReport1.report:55 msgid "Friend Table" msgstr "Vrienden tabel" #: myReport1.report:61 msgid "Report about all my frends" msgstr "Rapport over al mijn vrienden" #: myReport1.report:68 msgid "Test Database" msgstr "-" #: myReport1.report:91 msgid "Name" msgstr "Naam" #: myReport1.report:101 msgid "FirstName" msgstr "Voornaam" #: myReport1.report:112 msgid "Birth" msgstr "Geboorte" #: myReport1.report:153 msgid "$PAGE/$NPAGE" msgstr "-" #: myReport2.report:51 msgid "Facture" msgstr "Factuur" #: myReport2.report:130 msgid "Id" msgstr "-" #: myReport2.report:139 msgid "Designation" msgstr "Aanwijzing" #: myReport2.report:147 msgid "PU HT" msgstr "-" #: myReport2.report:156 msgid "Quantité" msgstr "-" #: myReport2.report:164 msgid "Total HT" msgstr "Totale HT" #: myReport2.report:255 msgid "Page $PAGE" msgstr "Pagina $PAGE" #: myReport5.report:76 msgid "gambas" msgstr "-" #: myReport5.report:95 msgid "Page $PAGE on $NPAGE" msgstr "Pagina $PAGE op $NPAGE" gambas-3.16.3/comp/src/gb.report/.lang/ru.po000066400000000000000000000347171411575327000204730ustar00rootroot00000000000000# 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" #: comp/src/gb.report/.project:26 msgid "Report designer" msgstr "Дизайнер отчётов" #: comp/src/gb.report/.project:27 msgid "Report engine for gambas" msgstr "Движок отчётов для gambas" #: comp/src/gb.report/.src/Report.class:108 comp/src/gb.report/.src/Report.class:435 msgid "Section " msgstr "Раздел " #: comp/src/gb.report/.src/Tests/OutputReport.report:24 comp/src/gb.report/.src/Tests/OutputReport2.report:26 msgid "Version 1.0" msgstr "Версия 1.0" #: comp/src/gb.report/.src/Tests/OutputReport.report:31 comp/src/gb.report/.src/Tests/OutputReport2.report:33 msgid "Date" msgstr "Дата" #: comp/src/gb.report/.src/Tests/OutputReport.report:46 comp/src/gb.report/.src/Tests/OutputReport2.report:48 msgid "Project Title:" msgstr "Название проекта:" #: comp/src/gb.report/.src/Tests/OutputReport.report:53 comp/src/gb.report/.src/Tests/OutputReport2.report:55 msgid "Project No.:" msgstr "№ проекта:" #: comp/src/gb.report/.src/Tests/OutputReport.report:60 comp/src/gb.report/.src/Tests/OutputReport2.report:62 msgid "Company:" msgstr "Компания:" #: comp/src/gb.report/.src/Tests/OutputReport.report:67 comp/src/gb.report/.src/Tests/OutputReport2.report:69 msgid "Designer:" msgstr "Дизайнер:" #: comp/src/gb.report/.src/Tests/OutputReport.report:81 comp/src/gb.report/.src/Tests/OutputReport2.report:83 msgid "Base Plate ID:" msgstr "Идентификатор базовой платы:" #: comp/src/gb.report/.src/Tests/OutputReport.report:136 comp/src/gb.report/.src/Tests/OutputReport2.report:134 msgid "Bearing Pressue" msgstr "Давление подшипника" #: comp/src/gb.report/.src/Tests/OutputReport.report:146 comp/src/gb.report/.src/Tests/OutputReport.report:164 comp/src/gb.report/.src/Tests/OutputReport2.report:144 comp/src/gb.report/.src/Tests/OutputReport2.report:162 msgid "Node #" msgstr "Узел #" #: comp/src/gb.report/.src/Tests/OutputReport.report:153 comp/src/gb.report/.src/Tests/OutputReport.report:171 comp/src/gb.report/.src/Tests/OutputReport2.report:151 comp/src/gb.report/.src/Tests/OutputReport2.report:169 msgid "Brg. Press., psi" msgstr "Давление подшипника, psi" #: comp/src/gb.report/.src/Tests/OutputReport.report:218 comp/src/gb.report/.src/Tests/OutputReport2.report:215 msgid "Anchor Rod Tension" msgstr "Натяжение анкерного стержня" #: comp/src/gb.report/.src/Tests/OutputReport.report:228 comp/src/gb.report/.src/Tests/OutputReport.report:246 comp/src/gb.report/.src/Tests/OutputReport2.report:225 comp/src/gb.report/.src/Tests/OutputReport2.report:243 msgid "Rod #" msgstr "Стержень #" #: comp/src/gb.report/.src/Tests/OutputReport.report:235 comp/src/gb.report/.src/Tests/OutputReport.report:253 comp/src/gb.report/.src/Tests/OutputReport2.report:232 comp/src/gb.report/.src/Tests/OutputReport2.report:250 msgid "Tension, lbs" msgstr "Натяжение, lbs" #: comp/src/gb.report/.src/Tests/OutputReport.report:300 comp/src/gb.report/.src/Tests/OutputReport2.report:302 msgid "Page $PAGE of $NPAGE" msgstr "Страница $PAGE из $NPAGE" #: comp/src/gb.report/.src/Tests/Report11.report:13 msgid "C'est la maison !" msgstr "Это дом!" #: comp/src/gb.report/.src/Tests/rpTestShadowGrid.report:16 comp/src/gb.report/.src/Tests/Old/Report7.report:55 msgid "coucou" msgstr "кукушка" #: comp/src/gb.report/.src/Tests/Old/Report1.report:7 msgid "#3" msgstr "#3" #: comp/src/gb.report/.src/Tests/Old/Report1.report:14 msgid "#1" msgstr "#1" #: comp/src/gb.report/.src/Tests/Old/Report1.report:24 msgid "COUCOU" msgstr "КУКУШКА" #: comp/src/gb.report/.src/Tests/Old/Report1.report:53 msgid "#2" msgstr "#2" #: comp/src/gb.report/.src/Tests/Old/Report10.report:17 comp/src/gb.report/.src/Tests/Old/Report10.report:39 comp/src/gb.report/.src/Tests/Old/Report6.report:13 msgid "ReportLabel1" msgstr "Метка_отчёта_1" #: comp/src/gb.report/.src/Tests/Old/Report10.report:23 comp/src/gb.report/.src/Tests/Old/Report10.report:45 msgid "ReportLabel2" msgstr "Метка_отчёта_2" #: comp/src/gb.report/.src/Tests/Old/Report10.report:29 comp/src/gb.report/.src/Tests/Old/Report10.report:51 msgid "ReportLabel3" msgstr "Метка_отчёта_3" #: comp/src/gb.report/.src/Tests/Old/Report10.report:59 msgid "Page $NPAGE" msgstr "Страница $NPAGE" #: comp/src/gb.report/.src/Tests/Old/Report14.report:7 comp/src/gb.report/.src/Tests/Old/myReport2.report:8 msgid "Section 1" msgstr "Раздел 1" #: comp/src/gb.report/.src/Tests/Old/Report14.report:27 comp/src/gb.report/.src/Tests/Old/myReport5.report:30 msgid "Gambas" msgstr "Gambas" #: comp/src/gb.report/.src/Tests/Old/Report14.report:47 msgid "All friends list !" msgstr "Список всех друзей!" #: comp/src/gb.report/.src/Tests/Old/Report14.report:65 msgid "Gambas Report Demo" msgstr "Демонстрация отчёта Gambas" #: comp/src/gb.report/.src/Tests/Old/Report14.report:83 msgid "Page $PAGE on $NPAGE " msgstr "Страница $PAGE на $NPAGE " #: comp/src/gb.report/.src/Tests/Old/Report4.report:16 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "ПЕЧАТЬ БУХГАЛТЕРСКОГО ПЛАНА" #: comp/src/gb.report/.src/Tests/Old/Report4.report:40 msgid "Code" msgstr "Код" #: comp/src/gb.report/.src/Tests/Old/Report4.report:48 msgid "Intitulé" msgstr "Заголовок" #: comp/src/gb.report/.src/Tests/Old/Report4.report:91 msgid "Page $PAGE sur $NPAGE" msgstr "Страница $PAGE на $NPAGE" #: comp/src/gb.report/.src/Tests/Old/Report8.report:15 msgid "List of all my friends" msgstr "Список всех моих друзей" #: comp/src/gb.report/.src/Tests/Old/Report8.report:25 msgid "List Of My Friends" msgstr "Список моих друзей" #: comp/src/gb.report/.src/Tests/Old/Report8.report:74 msgid "Page $PAGE / $NPAGE" msgstr "Страница $PAGE / $NPAGE" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:9 msgid "First Page" msgstr "Первая страница" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:20 msgid "Report About" msgstr "Отчёт о" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:28 msgid "All my friends" msgstr "Все мои друзья" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:37 msgid "Friend Table" msgstr "Таблица друзей" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:43 msgid "Report about all my frends" msgstr "Отчёт обо всех моих друзьях" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:50 msgid "Test Database" msgstr "Тестовая база данных" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:73 msgid "Name" msgstr "Имя" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:83 msgid "FirstName" msgstr "Первое имя" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:94 msgid "Birth" msgstr "Дата рождения" #: comp/src/gb.report/.src/Tests/Old/myReport1.report:135 msgid "$PAGE/$NPAGE" msgstr "$PAGE/$NPAGE" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:19 msgid "Facture" msgstr "Фактура" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:98 msgid "Id" msgstr "Идентификатор" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:107 msgid "Designation" msgstr "Десигнация" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:115 msgid "PU HT" msgstr "PU HT" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:124 msgid "Quantité" msgstr "Количество" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:132 msgid "Total HT" msgstr "Всего HT" #: comp/src/gb.report/.src/Tests/Old/myReport2.report:223 msgid "Page $PAGE" msgstr "Страница $PAGE" #: comp/src/gb.report/.src/Tests/Old/myReport5.report:65 msgid "gambas" msgstr "gambas" #: comp/src/gb.report/.src/Tests/Old/myReport5.report:84 msgid "Page $PAGE on $NPAGE" msgstr "Страница $PAGE на $NPAGE" #: comp/src/gb.report/.src/Preview/FOptions.form:10 msgid "Size" msgstr "Размер" #: comp/src/gb.report/.src/Preview/FOptions.form:17 msgid "Paper size" msgstr "Размер бумаги" #: comp/src/gb.report/.src/Preview/FOptions.form:23 msgid "Custom paper size" msgstr "Пользовательский размер бумаги" #: comp/src/gb.report/.src/Preview/FOptions.form:26 msgid "Width:" msgstr "Ширина:" #: comp/src/gb.report/.src/Preview/FOptions.form:31 msgid "Height:" msgstr "Высота:" #: comp/src/gb.report/.src/Preview/FOptions.form:44 comp/src/gb.report/.src/Preview/FPreview.form:122 msgid "Orientation" msgstr "Ориентация" #: comp/src/gb.report/.src/Preview/FOptions.form:48 comp/src/gb.report/.src/Preview/FPreview.form:127 msgid "Portrait" msgstr "Книжная" #: comp/src/gb.report/.src/Preview/FOptions.form:48 comp/src/gb.report/.src/Preview/FPreview.form:127 msgid "Landscape" msgstr "Альбомная" #: comp/src/gb.report/.src/Preview/FPreview.class:313 comp/src/gb.report/.src/Preview/FPrint.form:128 msgid "Cancel" msgstr "Отмена" #: comp/src/gb.report/.src/Preview/FPreview.class:327 msgid "Layout..." msgstr "Макет..." #: comp/src/gb.report/.src/Preview/FPreview.class:339 comp/src/gb.report/.src/Preview/FPreview.form:29 msgid "Printing..." msgstr "Печать..." #: comp/src/gb.report/.src/Preview/FPreview.class:363 comp/src/gb.report/.src/Preview/FPreview.form:264 msgid "Print" msgstr "Печать" #: comp/src/gb.report/.src/Preview/FPreview.form:5 msgid "Report preview" msgstr "Предпросмотр отчёта" #: comp/src/gb.report/.src/Preview/FPreview.form:45 msgid "One page" msgstr "Одна страница" #: comp/src/gb.report/.src/Preview/FPreview.form:54 msgid "Two pages" msgstr "Две страницы" #: comp/src/gb.report/.src/Preview/FPreview.form:62 msgid "Full width" msgstr "Полная ширина" #: comp/src/gb.report/.src/Preview/FPreview.form:70 msgid "Real size" msgstr "Реальный размер" #: comp/src/gb.report/.src/Preview/FPreview.form:97 msgid "Printer" msgstr "Принтер" #: comp/src/gb.report/.src/Preview/FPreview.form:107 msgid "File" msgstr "Файл" #: comp/src/gb.report/.src/Preview/FPreview.form:134 comp/src/gb.report/.src/Preview/FPrint.form:62 msgid "Paper" msgstr "Бумага" #: comp/src/gb.report/.src/Preview/FPreview.form:139 comp/src/gb.report/.src/Preview/Form1.form:56 msgid "Custom" msgstr "Пользовательский" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "A3" msgstr "А3" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "A4" msgstr "A4" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "A5" msgstr "А5" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "B5" msgstr "B5" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "Letter" msgstr "Лист" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "Executive" msgstr "Экзекьютив" #: comp/src/gb.report/.src/Preview/FPreview.form:139 msgid "Legal" msgstr "Легал" #: comp/src/gb.report/.src/Preview/FPreview.form:150 comp/src/gb.report/.src/Preview/FPrint.form:79 msgid "Width" msgstr "Ширина" #: comp/src/gb.report/.src/Preview/FPreview.form:158 comp/src/gb.report/.src/Preview/FPreview.form:170 comp/src/gb.report/.src/Preview/FPrint.form:93 comp/src/gb.report/.src/Preview/FPrint.form:97 msgid "mm" msgstr "мм" #: comp/src/gb.report/.src/Preview/FPreview.form:162 comp/src/gb.report/.src/Preview/FPrint.form:83 msgid "Height" msgstr "Высота" #: comp/src/gb.report/.src/Preview/FPreview.form:185 msgid "Recto Verso" msgstr "Перед. сторона" #: comp/src/gb.report/.src/Preview/FPreview.form:190 comp/src/gb.report/.src/Preview/FPrint.form:55 comp/src/gb.report/.src/Preview/FPrint.form:71 msgid "None" msgstr "Нет" #: comp/src/gb.report/.src/Preview/FPreview.form:190 comp/src/gb.report/.src/Preview/FPrint.form:55 comp/src/gb.report/.src/Preview/FPrint.form:71 msgid "Short side" msgstr "Короткая сторона" #: comp/src/gb.report/.src/Preview/FPreview.form:190 comp/src/gb.report/.src/Preview/FPrint.form:55 comp/src/gb.report/.src/Preview/FPrint.form:71 msgid "Long side" msgstr "Длинная сторона" #: comp/src/gb.report/.src/Preview/FPreview.form:202 msgid "Gray Scale" msgstr "Серая шкала" #: comp/src/gb.report/.src/Preview/FPreview.form:208 msgid "Full Page" msgstr "Полная страница" #: comp/src/gb.report/.src/Preview/FPreview.form:213 msgid "Reverse order" msgstr "Обратный порядок" #: comp/src/gb.report/.src/Preview/FPreview.form:218 msgid "Collate copies" msgstr "Собрать по копиям" #: comp/src/gb.report/.src/Preview/FPreview.form:235 comp/src/gb.report/.src/Preview/FPrint.form:32 msgid "Range" msgstr "Диапазон" #: comp/src/gb.report/.src/Preview/FPreview.form:246 msgid "Copies" msgstr "Копии" #: comp/src/gb.report/.src/Preview/FPrint.form:5 msgid "Printer Config" msgstr "Конфигурация принтера" #: comp/src/gb.report/.src/Preview/FPrint.form:22 msgid "More..." msgstr "Дополнительно..." #: comp/src/gb.report/.src/Preview/FPrint.form:46 msgid "RectoVerso" msgstr "Передняя сторона" #: comp/src/gb.report/.src/Preview/FPrint.form:117 msgid "Copies :" msgstr "Копии :" #: comp/src/gb.report/.src/Preview/Form1.form:37 msgid "One Page" msgstr "Одна страница" #: comp/src/gb.report/.src/Preview/Form1.form:44 msgid "Two Page" msgstr "Две страницы" #: comp/src/gb.report/.src/Preview/Form1.form:50 msgid "FullWidth" msgstr "Полная ширина" gambas-3.16.3/comp/src/gb.report/.lang/zh.po000066400000000000000000000150741411575327000204610ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report 3.6.90\n" "PO-Revision-Date: 2014-12-16 11:07 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Report designer" msgstr "报表设计器" #: .project:2 msgid "Report engine for gambas" msgstr "Gambas报表引擎" #: FOptions.form:25 msgid "Size" msgstr "尺寸" #: FOptions.form:34 msgid "Paper size" msgstr "纸张尺寸" #: FOptions.form:41 msgid "Custom paper size" msgstr "自定义纸张大小" #: FOptions.form:45 msgid "Width:" msgstr "宽度:" #: FOptions.form:51 msgid "Height:" msgstr "高度:" #: FOptions.form:67 FPreview.form:208 msgid "Orientation" msgstr "纸张方向" #: FOptions.form:72 FPreview.form:214 msgid "Landscape" msgstr "横向" #: FOptions.form:72 FPreview.form:214 msgid "Portrait" msgstr "纵向" #: FPreview.class:313 FPrint.form:192 msgid "Cancel" msgstr "取消" #: FPreview.class:327 msgid "Layout..." msgstr "布局..." #: FPreview.form:67 msgid "Report preview" msgstr "预览报表" #: FPreview.form:97 msgid "Printing..." msgstr "打印中..." #: FPreview.form:117 msgid "One page" msgstr "一页" #: FPreview.form:127 msgid "Two pages" msgstr "两页" #: FPreview.form:136 msgid "Full width" msgstr "全宽" #: FPreview.form:145 msgid "Real size" msgstr "实际尺寸" #: FPreview.form:177 msgid "Printer" msgstr "打印机" #: FPreview.form:189 msgid "File" msgstr "文件" #: FPreview.form:223 FPrint.form:109 msgid "Paper" msgstr "纸张" #: FPreview.form:229 msgid "A3" msgstr "-" #: FPreview.form:229 msgid "A4" msgstr "-" #: FPreview.form:229 msgid "A5" msgstr "-" #: FPreview.form:229 msgid "B5" msgstr "-" #: FPreview.form:229 Form1.form:78 msgid "Custom" msgstr "自定义" #: FPreview.form:229 msgid "Executive" msgstr "行政" #: FPreview.form:229 msgid "Legal" msgstr "法律" #: FPreview.form:229 msgid "Letter" msgstr "信函" #: FPreview.form:243 FPrint.form:130 msgid "Width" msgstr "宽度" #: FPreview.form:253 FPrint.form:148 msgid "mm" msgstr "毫米" #: FPreview.form:258 FPrint.form:135 msgid "Height" msgstr "高度" #: FPreview.form:287 msgid "Recto Verso" msgstr "双面" #: FPreview.form:293 FPrint.form:100 msgid "Long side" msgstr "长边" #: FPreview.form:293 FPrint.form:100 msgid "None" msgstr "无" #: FPreview.form:293 FPrint.form:100 msgid "Short side" msgstr "短边" #: FPreview.form:308 msgid "Gray Scale" msgstr "灰度" #: FPreview.form:315 msgid "Full Page" msgstr "整页" #: FPreview.form:321 msgid "Reverse order" msgstr "逆序" #: FPreview.form:327 msgid "Collate copies" msgstr "校对稿" #: FPreview.form:348 FPrint.form:71 msgid "Range" msgstr "范围" #: FPreview.form:362 msgid "Copies" msgstr "份数" #: FPreview.form:385 msgid "Print" msgstr "打印" #: FPrint.form:38 msgid "Printer Config" msgstr "打印机设置" #: FPrint.form:58 msgid "More..." msgstr "更多..." #: FPrint.form:89 msgid "RectoVerso" msgstr "双面" #: FPrint.form:178 msgid "Copies :" msgstr "份数:" #: Form1.form:56 msgid "One Page" msgstr "一页" #: Form1.form:64 msgid "Two Page" msgstr "两页" #: Form1.form:71 msgid "FullWidth" msgstr "全宽" #: OutputReport.report:74 OutputReport2.report:77 msgid "Version 1.0" msgstr "版本1.0" #: OutputReport.report:81 OutputReport2.report:84 msgid "Date" msgstr "日期" #: OutputReport.report:96 OutputReport2.report:99 msgid "Project Title:" msgstr "项目标题:" #: OutputReport.report:103 OutputReport2.report:106 msgid "Project No.:" msgstr "项目编号:" #: OutputReport.report:110 OutputReport2.report:113 msgid "Company:" msgstr "公司:" #: OutputReport.report:117 OutputReport2.report:120 msgid "Designer:" msgstr "设计者:" #: OutputReport.report:131 OutputReport2.report:134 msgid "Base Plate ID:" msgstr "-" #: OutputReport.report:186 OutputReport2.report:185 msgid "Bearing Pressue" msgstr "-" #: OutputReport.report:196 OutputReport2.report:195 msgid "Node #" msgstr "-" #: OutputReport.report:203 OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "-" #: OutputReport.report:268 OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "-" #: OutputReport.report:278 OutputReport2.report:276 msgid "Rod #" msgstr "-" #: OutputReport.report:285 OutputReport2.report:283 msgid "Tension, lbs" msgstr "-" #: OutputReport.report:350 OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "-" #: Report.class:108 msgid "Section " msgstr "节" #: Report1.report:16 msgid "#3" msgstr "-" #: Report1.report:23 msgid "#1" msgstr "-" #: Report1.report:33 msgid "COUCOU" msgstr "-" #: Report1.report:62 msgid "#2" msgstr "-" #: Report10.report:27 Report6.report:16 msgid "ReportLabel1" msgstr "-" #: Report10.report:33 msgid "ReportLabel2" msgstr "-" #: Report10.report:39 msgid "ReportLabel3" msgstr "-" #: Report10.report:69 msgid "Page $NPAGE" msgstr "-" #: Report11.report:17 msgid "C'est la maison !" msgstr "-" #: Report4.report:31 msgid "IMPRESSION DU PLAN COMPTABLE" msgstr "印刷计划" #: Report4.report:55 msgid "Code" msgstr "-" #: Report4.report:63 msgid "Intitulé" msgstr "-" #: Report4.report:106 msgid "Page $PAGE sur $NPAGE" msgstr "-" #: Report7.report:64 rpTestShadowGrid.report:19 msgid "coucou" msgstr "-" #: Report8.report:24 msgid "List of all my friends" msgstr "-" #: Report8.report:34 msgid "List Of My Friends" msgstr "-" #: Report8.report:83 msgid "Page $PAGE / $NPAGE" msgstr "-" #: myReport1.report:27 msgid "First Page" msgstr "-" #: myReport1.report:38 msgid "Report About" msgstr "-" #: myReport1.report:46 msgid "All my friends" msgstr "-" #: myReport1.report:55 msgid "Friend Table" msgstr "-" #: myReport1.report:61 msgid "Report about all my frends" msgstr "-" #: myReport1.report:68 msgid "Test Database" msgstr "-" #: myReport1.report:91 msgid "Name" msgstr "-" #: myReport1.report:101 msgid "FirstName" msgstr "-" #: myReport1.report:112 msgid "Birth" msgstr "-" #: myReport1.report:153 msgid "$PAGE/$NPAGE" msgstr "-" #: myReport2.report:40 msgid "Section 1" msgstr "-" #: myReport2.report:51 msgid "Facture" msgstr "-" #: myReport2.report:130 msgid "Id" msgstr "-" #: myReport2.report:139 msgid "Designation" msgstr "-" #: myReport2.report:147 msgid "PU HT" msgstr "-" #: myReport2.report:156 msgid "Quantité" msgstr "-" #: myReport2.report:164 msgid "Total HT" msgstr "-" #: myReport2.report:255 msgid "Page $PAGE" msgstr "-" #: myReport5.report:41 msgid "Gambas" msgstr "-" #: myReport5.report:75 msgid "gambas" msgstr "-" #: myReport5.report:94 msgid "Page $PAGE on $NPAGE" msgstr "-" gambas-3.16.3/comp/src/gb.report/.project000066400000000000000000000007321411575327000201430ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Report designer Startup=Test Icon=printer1.png Version=3.15.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.db Component=gb.settings Component=gb.net Component=gb.net.curl Component=gb.report Description="Report engine for gambas" Authors="Fabien Bodard" TabSize=2 Translate=1 Language=fr Type=Component Maintainer=benoit Vendor=Princeton Address=benoit@localhost License=General Public Licence Packager=1 gambas-3.16.3/comp/src/gb.report/.src/000077500000000000000000000000001411575327000173375ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Borders/000077500000000000000000000000001411575327000207375ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Borders/ReportBorder.class000066400000000000000000000102601411575327000243760ustar00rootroot00000000000000' Gambas class file Export Static Public Const None As Integer = 0 Static Public Const Solid As Integer = 1 Static Private $aShadowStyle As String[] = ["none", "solid", "gradiant"] 'Static Private $aAlign As String[] = Classes["Align"].Symbols Private hTop As New _ReportBorderSide Private hBottom As New _ReportBorderSide Private hLeft As New _ReportBorderSide Private hRight As New _ReportBorderSide Private hRCorner As New _ReportRoundCorner Public _Left As Float Public _Right As Float Public _Top As Float Public _Bottom As Float Property Read Top As _ReportBorderSide Property Read {Left} As _ReportBorderSide Property Read bottom As _ReportBorderSide Property Read {Right} As _ReportBorderSide Property Read RoundCorner As _ReportRoundCorner Property Width As String Property Brush As ReportBrush Public Style As Integer ' Static Private Sub ResetBorder(hReportBorder As ReportBorder) As Boolean ' ' With hReportBorder ' .Bottom = False ' .Top = False ' .Left = False ' .Right = False ' End With ' ' Return True ' ' End Static Public Function _get(sValue As String) As ReportBorder Dim hReportBorder As New ReportBorder Dim sBorder As String Dim aScan As String[] If Not sValue Then Return hReportBorder hReportBorder.Style = ReportBorder.Solid hReportBorder.RoundCorner._Active = False For Each sBorder In Split(sValue, ";") aScan = Scan(sBorder, "*:*") Select Case LCase(Trim(aScan[0])) Case "border" FillObject(hReportBorder, aScan[1]) Case "left" FillObject(hReportBorder.Left, aScan[1]) Case "right" FillObject(hReportBorder.Right, aScan[1]) Case "bottom" FillObject(hReportBorder.bottom, aScan[1]) Case "top" FillObject(hReportBorder.Top, aScan[1]) Case "topleftcorner" hReportBorder.RoundCorner.TopLeft = aScan[1] Case "toprightcorner" hReportBorder.RoundCorner.TopRight = aScan[1] Case "bottomleftcorner" hReportBorder.RoundCorner.BottomLeft = aScan[1] Case "bottomrightcorner" hReportBorder.RoundCorner.BottomRight = aScan[1] End Select Next Finally Return hReportBorder End Static Private Sub FillObject(hObj As Object, sValue As String) Dim sBrush As String For Each sBrush In Split(sValue, " ") If IsDigit(Left(sBrush)) Then Try hObj.Width = sBrush Else Try hObj.Brush = ReportBrush[sBrush] If hObj.Brush = Null Then hObj.Brush = ReportBrush["&H0"] Endif Next End Public Function ToString() As String Dim aValue As New String[] If Me.Style = ReportBorder.None Then Return 'aValue.Add("None") 'If Me.Style = ReportBorder.Solid Then aValue.Add("Solid") aValue.Add(Me.Width) If Me.Top Then aValue.Add("Top") If Me.Bottom Then aValue.Add("Bottom") If Me.Left Then aValue.Add("Left") If Me.Right Then aValue.Add("Right") aValue.Add("#" & Hex(Me.Color, 6)) Return aValue.Join() End Private Function Top_Read() As _ReportBorderSide Return hTop End Private Function Left_Read() As _ReportBorderSide Return hLeft End Private Function bottom_Read() As _ReportBorderSide Return hBottom End Private Function Width_Read() As String Return hLeft.Width End Private Sub Width_Write(Value As String) hLeft.Width = Value hTop.Width = Value hBottom.Width = Value hRight.Width = Value End Private Function Brush_Read() As ReportBrush Return hLeft.Brush End Private Sub Brush_Write(Value As ReportBrush) hLeft.Brush = Value hTop.Brush = Value hBottom.Brush = Value hRight.Brush = Value End Private Function Right_Read() As _ReportBorderSide Return hRight End Private Function RoundCorner_Read() As _ReportRoundCorner Return hRCorner End Public Sub _SetUnifiedValues() Dim hSizeParse As TSizeParse hSizeParse = New TSizeParse(hLeft.Width) _Left = hSizeParse.GetValue() hSizeParse = New TSizeParse(hRight.Width) _Right = hSizeParse.GetValue() hSizeParse = New TSizeParse(hTop.Width) _Top = hSizeParse.GetValue() hSizeParse = New TSizeParse(hBottom.Width) _Bottom = hSizeParse.GetValue() hRCorner._SetUnifiedValues() End gambas-3.16.3/comp/src/gb.report/.src/Borders/_ReportBorderSide.class000066400000000000000000000004221411575327000253410ustar00rootroot00000000000000' Gambas class file Export Public Width As String Public Brush As New ReportBrush Public Round1 As String Public Round2 As String Public _Width As Float Public Sub _SetUnifiedValues() Dim hSizeParse As New TSizeParse(Width) _Width = hSizeParse.GetValue() End gambas-3.16.3/comp/src/gb.report/.src/Borders/_ReportRoundCorner.class000066400000000000000000000054241411575327000255660ustar00rootroot00000000000000' Gambas class file Public _Active As Boolean = False Private $sTopLeft As String = "0cm" Private $sTopRight As String = "0cm" Private $sBottomLeft As String = "0cm" Private $sBottomRight As String = "0cm" Property TopLeft As String Property TopRight As String Property BottomLeft As String Property BottomRight As String Public _TopLeft1 As Float Public _TopLeft2 As Float Public _TopRight1 As Float Public _TopRight2 As Float Public _BottomLeft1 As Float Public _BottomLeft2 As Float Public _BottomRight1 As Float Public _BottomRight2 As Float Private Function TopLeft_Read() As String Return $sTopLeft End Private Sub TopLeft_Write(Value As String) $sTopLeft = Value _Active = True End Private Function TopRight_Read() As String Return $sTopRight End Private Sub TopRight_Write(Value As String) $sTopRight = Value _Active = True End Private Function BottomLeft_Read() As String Return $sBottomLeft End Private Sub BottomLeft_Write(Value As String) $sBottomLeft = Value _Active = True End Private Function BottomRight_Read() As String Return $sBottomRight End Private Sub BottomRight_Write(Value As String) $sBottomRight = Value _Active = True End Public Sub _SetUnifiedValues() Dim aEl As String[] Dim hSizeParse As TSizeParse ael = Split($sTopLeft, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _TopLeft1 = hSizeParse.GetValue() _TopLeft2 = _TopLeft1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _TopLeft1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _TopLeft2 = hSizeParse.GetValue() Endif Endif ael = Split($sTopRight, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _TopRight1 = hSizeParse.GetValue() _TopRight2 = _TopRight1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _TopRight1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _TopRight2 = hSizeParse.GetValue() Endif Endif ael = Split($sBottomRight, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _BottomRight1 = hSizeParse.GetValue() _BottomRight2 = _BottomRight1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _BottomRight1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _BottomRight2 = hSizeParse.GetValue() Endif Endif ael = Split($sBottomLeft, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _BottomLeft1 = hSizeParse.GetValue() _BottomLeft2 = _BottomLeft1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _BottomLeft1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _BottomLeft2 = hSizeParse.GetValue() Endif Endif End gambas-3.16.3/comp/src/gb.report/.src/BoxShadow/000077500000000000000000000000001411575327000212355ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/BoxShadow/FReportBoxEditor.class000066400000000000000000000006321411575327000254660ustar00rootroot00000000000000' Gambas class file Private hBorder As New ReportBorder Public Sub Form_Open() End Public Sub DrawingArea1_Draw() Dim X, Y, Width, Height As Float X = Paint.Width / 3 / 2 Y = Paint.Height / 3 / 2 Width = Paint.Width / 3 * 2 Height = Paint.Height / 3 * 2 'Paint.FillRect(0, 0, Paint.Width, Paint.Height, Color.White) Paint.Rectangle(X, Y, Width, Height) Paint.Stroke End gambas-3.16.3/comp/src/gb.report/.src/BoxShadow/FReportBoxEditor.form000066400000000000000000000003071411575327000253230ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,78,57) Arrangement = Arrange.Vertical { DrawingArea1 DrawingArea MoveScaled(4,5,67,44) Background = &HFFFFFF& Expand = True } } gambas-3.16.3/comp/src/gb.report/.src/BoxShadow/ReportBoxShadow.class000066400000000000000000000075701411575327000253670ustar00rootroot00000000000000' Gambas class file Private $aBoxShadow As New _ReportBoxShadow[] Property XOffset As String Property YOffset As String Property Blur As String Property Spread As String Property Inset As Boolean Property Color As Integer Property Read Count As Integer Property Read Max As Integer Property Read _XOffset As Float Property Read _YOffset As Float Property Read _Blur As Float Property Read _Spread As Float Property Read _Active As Boolean Public Sub _new() Dim hBoxShadow As New _ReportBoxShadow $aBoxShadow.Add(hBoxShadow) End Static Public Function _get(sValue As String) As ReportBoxShadow Dim hBoxShadow As New ReportBoxShadow Dim s As String Dim i As Integer For Each s In Split(sValue, " ") If IsDigit(Left(s)) Then Select Case i Case 0 hBoxShadow.XOffset = s Case 1 hBoxShadow.YOffset = s Case 2 hBoxShadow.Blur = s Case 3 hBoxShadow.Spread = s End Select Inc i Continue Endif If LCase(s) = "inset" Then hBoxShadow.Inset = True Continue Endif Try hBoxShadow.Color = Val(s) Next Return hBoxShadow End ' Public Function _get(Index As Integer) As _ReportBoxShadow ' ' Return $aBoxShadow[Index] ' ' End Public Sub Add(Optional XOffset As String, YOffset As String, iColor As Integer, Spread As String, Blur As String, Inset As Boolean) Dim hBoxShadow As New _ReportBoxShadow If XOffset Then hBoxShadow.XOffset = XOffset If YOffset Then hBoxShadow.YOffset = YOffset If iColor Then hBoxShadow.Color = iColor If SPread Then hBoxShadow.Spread = Spread If Blur Then hBoxShadow.Blur = Blur hBoxShadow.Inset = Inset $aBoxShadow.Add(hBoxShadow) End Public Sub Remove(Index As Integer) $aBoxShadow.Remove(Index) End Private Function XOffset_Read() As String Return $aBoxShadow[0].XOffset End Private Sub XOffset_Write(Value As String) $aBoxShadow[0].XOffset = Value End Private Function YOffset_Read() As String Return $aBoxShadow[0].YOffset End Private Sub YOffset_Write(Value As String) $aBoxShadow[0].YOffset = Value End Private Function Blur_Read() As String Return $aBoxShadow[0].Blur End Private Sub Blur_Write(Value As String) $aBoxShadow[0].Blur = Value End Private Function Spread_Read() As String Return $aBoxShadow[0].Spread End Private Sub Spread_Write(Value As String) $aBoxShadow[0].Spread = Value End Private Function Inset_Read() As Boolean Return $aBoxShadow[0].Inset End Private Sub Inset_Write(Value As Boolean) $aBoxShadow[0].Inset = Value End Private Function Color_Read() As Integer Return $aBoxShadow[0].Color End Private Sub Color_Write(Value As Integer) $aBoxShadow[0].Color = Value End Private Function Count_Read() As Integer Return $aBoxShadow.Count End Private Function Max_Read() As Integer Return $aBoxShadow.Max End Public Sub _SetUnifiedValues() Dim i As Integer Dim SizeParse As TSizeParse For i = 0 To $aBoxShadow.Max 'With $aBoxShadow[i]._XOffset = TSizeParse[$aBoxShadow[i].XOffset].GetValue() $aBoxShadow[i]._YOffset = TSizeParse[$aBoxShadow[i].YOffset].GetValue() $aBoxShadow[i]._Spread = TSizeParse[$aBoxShadow[i].Spread].GetValue() $aBoxShadow[i]._Blur = TSizeParse[$aBoxShadow[i].Blur].GetValue() '._Blur = TSizeParse[.Blur].GetValue() 'End With Next End Private Function _XOffset_Read() As Float Return $aBoxShadow[0]._XOffset End Private Function _YOffset_Read() As Float Return $aBoxShadow[0]._YOffset End Private Function _Blur_Read() As Float Return $aBoxShadow[0]._Blur End Private Function _Spread_Read() As Float Return $aBoxShadow[0]._Spread End Private Function _Active_Read() As Boolean Return Not ($aBoxShadow[0]._XOffset = 0 And $aBoxShadow[0]._YOffset = 0 And $aBoxShadow[0]._Blur = 0 And $aBoxShadow[0]._Spread = 0) End gambas-3.16.3/comp/src/gb.report/.src/BoxShadow/_ReportBoxShadow.class000066400000000000000000000004301411575327000255120ustar00rootroot00000000000000' Gambas class file Public XOffset As String '= "8mm" Public YOffset As String '= "2mm" Public Spread As String Public Inset As Boolean Public Color As Integer Public Blur As String Public _XOffset As Float Public _YOffset As Float Public _Spread As Float Public _Blur As Float gambas-3.16.3/comp/src/gb.report/.src/Brush/000077500000000000000000000000001411575327000204225ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Brush/ReportBrush.class000066400000000000000000000117171411575327000237370ustar00rootroot00000000000000' Gambas class file Export Public _Type As Integer Public _X As Float Public _Y As Float Public _X2 As Float Public _Y2 As Float Public _radius As Float Public _Image As Image Public _Color As Integer[] = [0, &HFFFFFF&] Public _Pos As Float[] = [0, 1] Private _ImageDir As String Public Function _PaintBrush(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As PaintBrush Dim hBrush As PaintBrush Dim fradius As Float Dim Width As Integer = X2 - X1 Dim Height As Integer = Y2 - Y1 Select Case Me._Type Case 0 hBrush = Paint.Color(_Color[0]) Case 1 hBrush = paint.Image(_Image, X1, Y1) Case 2 hBrush = paint.LinearGradient(Width * _X, Height * _Y, Width * _X2, Height * _Y2, _Color, _Pos) Case 3 fradius = Width * _radius hBrush = paint.RadialGradient(Width * _X, Height * _Y, fradius, Width * _X2, Height * _Y2, _Color, _Pos) End Select hBrush.Translate(x1, Y1) Return hBrush End Static Public Sub _get(sValue As String) As ReportBrush Dim hBrush As New ReportBrush Dim iPos As Integer Dim sType As String Dim ars As String[] If Not svalue Then Return Null sValue = Trim(sValue) iPos = InStr(sValue, "(") If iPos Then sType = Left(sValue, iPos - 1) 'pas de parenthese de fin If ipos And Not (sValue Ends ")") Then Error.Raise Else If iPos Then svalue = Left(Mid(svalue, ipos + 1), -1) Endif ars = Split(sValue, ",", "[]") Select Case LCase(sType) Case "image" hBrush._Type = 1 hBrush._Image = Image.Load(ars[0]) hBrush._ImageDir = ars[0] Case "radialgradient" hBrush._Type = 3 hBrush._X = CFloat(ars[0]) hBrush._Y = CFloat(ars[1]) hBrush._Radius = CFloat(ars[2]) hBrush._X2 = CFloat(ars[3]) hBrush._Y2 = CFloat(ars[4]) hBrush._Color = GetIntegerArray(ars[5]) hBrush._Pos = GetFloatArray(ars[6]) Case "lineargradient" hBrush._Type = 2 hBrush._X = CFloat(ars[0]) hBrush._Y = CFloat(ars[1]) hBrush._X2 = CFloat(ars[2]) hBrush._Y2 = CFloat(ars[3]) hBrush._Color = GetIntegerArray(ars[4]) hBrush._Pos = GetFloatArray(ars[5]) Case Else 'correction de l'hexon '= Val(Replace(ars[0], "#", "&H") & "00&") If ars[0] Begins "#" Then ars[0] = Mid(ars[0], 2) hBrush._Color[0] = Val("&H" & IIf(Len(ars[0]) = 8, ars[0], 00 & ars[0])) End Select Return hBrush Finally If hBrush._Color.Count = 0 Then hBrush._Color = [0, &hFFFFFF&] If hBrush._Color.Count < 2 Then hBrush._Color.Add(&hFFFFFF&) If hBrush._Pos.Count < 2 Then hBrush._Pos = [0.0, 1.0] Catch Return hBrush End Static Private Function GetIntegerArray(sValue As String) As Integer[] Dim ari As New Integer[] Dim s As String For Each s In Split(sValue) If s Begins "#" Then s = Mid(s, 2) ari.Add(Val("&H" & IIf(Len(s) = 8, s, "00" & s))) Next Return ari End Static Private Function GetFloatArray(sValue As String) As Float[] Dim arf As New Float[] Dim s As String For Each s In Split(sValue) arf.Add(CFloat(s)) Next Return arf End Public Function ToString() As String Dim i As Integer Dim f As Float Dim sValue As String Select Case _Type Case 0 sValue = "&H" & Hex(_Color[0], 8) & "&" Case 2, 3 If _Type = 3 Then sValue = "RadialGradient(" & _X & "," & _Y & "," & _Radius & "," & _X2 & "," & _Y2 & ",[" Else sValue = "LinearGradient(" & _X & "," & _Y & "," & _X2 & "," & _Y2 & ",[" Endif For Each i In _Color sValue &= "&H" & Hex(i, 6) & "&," Next sValue = Left(sValue, -1) sValue &= "],[" For Each f In _Pos sValue &= f & "," Next sValue = Left(sValue, -1) sValue &= "])" Case 1 sValue = "Image(" & _ImageDir & ")" End Select Return svalue End Static Public Function Color(iColor As Integer) As ReportBrush Dim hBrush As New ReportBrush hBrush._Color[0] = iColor hBrush._Type = 0 Return hBrush End Static Public Function LinearGradient(X As Float, Y As Float, X2 As Float, Y2 As Float, aColor As Integer[], aPos As Float[]) As ReportBrush Dim hBrush As New ReportBrush hBrush._X = X hBrush._Y = Y hBrush._X2 = X2 hBrush._Y2 = Y2 hBrush._Color = aColor hBrush._Pos = aPos hBrush._Type = 2 Return hBrush End Static Public Function RadialGradient(X As Float, Y As Float, Radius As Float, X2 As Float, Y2 As Float, aColor As Integer[], aPos As Float[]) As ReportBrush Dim hBrush As New ReportBrush hBrush._X = X hBrush._Y = Y hBrush._X2 = X2 hBrush._Y2 = Y2 hBrush._radius = Radius hBrush._Color = aColor hBrush._Pos = aPos hBrush._Type = 3 Return hBrush End Static Public Function Image(hImage As Image) As ReportBrush Dim hBrush As New ReportBrush hBrush._Image = hImage hBrush._Type = 1 Return hBrush End gambas-3.16.3/comp/src/gb.report/.src/Controls/000077500000000000000000000000001411575327000211425ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Controls/ReportControl.class000066400000000000000000000251361411575327000250140ustar00rootroot00000000000000' Gambas class file Export Create Private Public Const _IsControl As Boolean = True Public Const _IsContainer As Boolean = False Public Const _Properties As String = "Left{ReportCoord},Top{ReportCoord},Width{ReportCoord},Height{ReportCoord},Brush{ReportBrush},Visible=True,Fixed,Font,Padding,Ignore,Expand,AutoResize,Tag,Range" Public Const _Family As String = "Report" Public _SizeInt As TSizeHint Public _Count As Integer = 1 Public _Finished As Boolean Private $iDataindex As Integer Property _DataIndex As Integer Private $iIndex As Integer Public Name As String 'Object Management Static Public _ObjectFromId As New Collection Static Public _iCurPagePos As Integer Static Private $iLastId As Integer Private $iMyId As Integer Private $iParentId As Integer Private $vTag As Variant Private $fPadding As Float Private $iReportId As Integer Private $hBrush As ReportBrush Private $iColor As Integer Private $fLeft As Float = 0.0 Private $fTop As Float = 0.0 Private $fWidth As Float = 0.0 Private $fHeight As Float = 0.0 Private $sHeight As String = "0cm" Private $sLeft As String = "0cm" Private $sWidth As String = "0cm" Private $sTop As String = "0cm" Private $hPadding As New ReportPadding 'Private $sPadding As String = "0cm" Private $iVisible As Boolean = True Private $hFont As New Font Private $bExpand As Boolean Private $bFixed As Boolean Private $bAutoresize As Boolean = False Private $bRelativeLeft As Boolean Private $bRelativeTop As Boolean Private $bRelativeWidth As Boolean Private $bRelativeHeight As Boolean Private $bRelativePadding As Boolean Private $bIgnore As Boolean = False Private $sRange As String Property Read Id As Integer Property Read Parent As ReportContainer Property Tag As Variant Property Padding As ReportPadding Property Brush As ReportBrush 'Property {Color} As Integer Property Read _Top As Float ''Top of the control in cm Property Read _Height As Float ''Height of the control in cm Property Read _Width As Float ''Width of the control in cm Property Read _Left As Float ''Left of the control in cm Property Read _Padding As Float '' Padding of the control in cm Property Read _RelativeLeft As Boolean ''Use percentage for Left pos? Property Read _RelativeTop As Boolean ''Use percentage for Top Pos? Property Read _RelativeWidth As Boolean ''Use percentage for width? Property Read _RelativeHeight As Boolean ''Use percentage for height ? Property Read _RelativePadding As Boolean ''Use percentage for padding ? Property _Index As Integer Property Range As String Property Left As String Property Top As String Property X As String Property Y As String Property Width As String Property Height As String Property Visible As Boolean Property {Font} As Font Property Expand As Boolean Property Ignore As Boolean Property Fixed As Boolean Property Autoresize As Boolean Property Read {Report} As Report Property _ReportId As Integer Property Read DataIndex As Integer Property ForceNewPage As Boolean Private $bForceNewPage As Boolean Public Sub _New(Optional Parent As ReportContainer = Null) Dim hRep As Report $iMyId = $iLastId Inc $iLastId If IsNull(Parent) Then $iParentId = -1 $iReportId = $iMyId Else If Parent Is Report Then hRep = Parent $iParentId = hRep._Container.id hRep._Container._Add(Me) $iReportId = hRep.id Else $iParentId = Parent.Id Parent._Add(Me) $iReportId = Parent._ReportId Endif Endif End Private Function Id_Read() As Integer Return $iMyId End Private Function Parent_Read() As ReportContainer Return ReportControl._ObjectFromId[$iParentId] End Private Function Left_Read() As String Return $sLeft End Private Sub Left_Write(Value As String) $sLeft = Value End Private Function Top_Read() As String Return $sTop End Private Sub Top_Write(Value As String) $sTop = Value End Private Function Width_Read() As String Return $sWidth End Private Sub Width_Write(Value As String) $sWidth = Value End Private Function Height_Read() As String Return $sHeight End Private Sub Height_Write(Value As String) $sHeight = Value End Private Function Expand_Read() As Boolean Return $bExpand End Private Sub Expand_Write(Value As Boolean) $bExpand = Value End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, TotalWidth As Float, TotalHeight As Float, DataIndex As Integer) As TSizeHint 'Error.Raise("Something goes wrong the _GetSizeHints is not correctly implemented") 'Implementaion standart du sizeInt hors autoresize et hbox ' Dim hMyHints As New TSizeHint If Me._RelativeHeight Then hMyHints.Height = TotalHeight * Me._Height / 100 Else hMyHints.Height = Me._Height Endif If Me._RelativeWidth Then hMyHints.Width = TotalWidth * Me._Width / 100 Else hMyHints.Width = Me._Width Endif Return hMyHints End Public Sub _PaintBeFore((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) End Public Sub _PaintFrame((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) Me._Paint(Page, X, Y, hControl, DataIndex) End Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) End Private Function Visible_Read() As Boolean Return $iVisible End Private Sub Visible_Write(Value As Boolean) $iVisible = Value End Public Sub Move(X As Float, Y As Float, W As Float, H As Float) $fLeft = X $fTop = Y $fWidth = W $fHeight = H End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value End Private Function Font_Read() As Font Return $hFont End Private Sub Font_Write(Value As Font) $hFont = Value End Private Function Padding_Read() As ReportPadding Return $hPadding End Private Sub Padding_Write(Value As ReportPadding) $hPadding = Value End Private Function _Top_Read() As Float Return $fTop End Private Function _Height_Read() As Float Return $fHeight End Private Function _Width_Read() As Float Return $fWidth End Private Function _Left_Read() As Float Return $fLeft End Private Function _Padding_Read() As Float Return $fPadding End Public Function _SetChildGeometry((X) As Float, (Y) As Float, (W) As Float, (H) As Float, (ContPage) As Integer, (TCont) As TControl, (bInFixed) As Boolean) End Private Function Autoresize_Read() As Boolean Return $bAutoresize End Private Sub Autoresize_Write(Value As Boolean) $bAutoresize = Value End Private Function _RelativeWidth_Read() As Boolean Return $bRelativeWidth End Private Function _RelativeHeight_Read() As Boolean Return $bRelativeHeight End Private Function _RelativePadding_Read() As Boolean Return $bRelativePadding End ''Convert recursively string values to unified values in cm Public Sub _SetUnifiedValues() Dim hSizeParse As TSizeParse 'Left hSizeParse = New TSizeParse($sLeft, True) $fLeft = hSizeParse.GetValue() $bRelativeLeft = hSizeParse.IsRelative() 'Right hSizeParse = New TSizeParse($sTop, True) $fTop = hSizeParse.GetValue() $bRelativeTop = hSizeParse.IsRelative() 'Width hSizeParse = New TSizeParse($sWidth, True) $fWidth = hSizeParse.GetValue() $bRelativeWidth = hSizeParse.IsRelative() 'Height hSizeParse = New TSizeParse($sHeight, True) $fHeight = hSizeParse.GetValue() $bRelativeHeight = hSizeParse.IsRelative() 'Padding ' hSizeParse = New TSizeParse($sPadding, True) ' $fPadding = hSizeParse.GetValue() ' $bRelativePadding = hSizeParse.IsRelative() hSizeParse = New TSizeParse($hPadding.Left, True) $hPadding._Left = hSizeParse.GetValue() hSizeParse = New TSizeParse($hPadding.Right, True) $hPadding._Right = hSizeParse.GetValue() hSizeParse = New TSizeParse($hPadding.Top, True) $hPadding._Top = hSizeParse.GetValue() hSizeParse = New TSizeParse($hPadding.Bottom, True) $hPadding._Bottom = hSizeParse.GetValue() ' End Private Function Ignore_Read() As Boolean Return $bIgnore End Private Sub Ignore_Write(Value As Boolean) $bIgnore = Value End Private Function Report_Read() As Report Return ReportControl._ObjectFromId[$iReportId] End Private Function _ReportId_Read() As Integer Return $iReportId End Private Function Fixed_Read() As Boolean Return $bFixed End Private Sub Fixed_Write(Value As Boolean) $bFixed = Value End Public Sub _Reset() Me._DataIndex = 0 End Private Function X_Read() As String Return $sLeft End Private Sub X_Write(Value As String) $sLeft = Value End Private Function Y_Read() As String Return $sTop End Private Sub Y_Write(Value As String) $sTop = Value End Private Function Brush_Read() As ReportBrush Return $hBrush End Private Sub Brush_Write(Value As ReportBrush) $hBrush = Value End ' Private Function Color_Read() As Integer ' ' Return $iColor ' ' End ' ' Private Sub Color_Write(Value As Integer) ' ' $iColor = Value ' ' End Public Function _GetActualBrush(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As PaintBrush Dim hBrush As PaintBrush If $hBrush Then hBrush = $hBrush._PaintBrush(X1, Y1, X2, Y2) Else If $iColor Then hBrush = Paint.Color($iColor) Else Try hBrush = Me.Parent._GetActualBrush(X1, Y1, X2, Y2) If Not hBrush Then hBrush = Paint.Color(0) Endif Endif Return hBrush End Private Sub _ReportId_Write(Value As Integer) $iReportId = Value End Private Function _RelativeLeft_Read() As Boolean Return $bRelativeLeft End Private Function _RelativeTop_Read() As Boolean Return $bRelativeTop End Private Function DataIndex_Read() As Integer Return Me._Index 'Return Me._GetIndex() End Private Function Range_Read() As String Return $sRange End Private Sub Range_Write(Value As String) $sRange = Value End Public Function _GetIndex() As Integer Return Me._Index 'Return Me.Parent._GetIndex() End Private Function _Index_Read() As Integer Return $iIndex End Private Sub _Index_Write(Value As Integer) $iIndex = Value End Private Function _DataIndex_Read() As Integer Return $iDataindex End Private Sub _DataIndex_Write(Value As Integer) 'If Me.Tag = "Boite 2" And Value = 0 Then Stop 'If Me.Report.$iCurPage = 0 Then Print "DataIndex: " & value $iDataindex = Value 'Stop 'Print "_DataIndex " & Me.Tag & " = " & $iDataindex End Private Function ForceNewPage_Read() As Boolean Return $bForceNewPage End Private Sub ForceNewPage_Write(Value As Boolean) $bForceNewPage = Value End Public Sub _Free() End gambas-3.16.3/comp/src/gb.report/.src/MainTools/000077500000000000000000000000001411575327000212445ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/MainTools/MReport.module000066400000000000000000000010141411575327000240370ustar00rootroot00000000000000' Gambas module file Public DrawCount As Integer Public Resolution As Integer Private Dash As Float[] = [2.0, 1.0] Private Dot As Float[] = [1.0, 1.0] Private DashDot As Float[] = [2.0, 1.0, 1.0, 1.0] Private DashDotDot As Float[] = [2.0, 1.0, 1.0, 1.0, 1.0, 1.0] Public Sub GetBorder(iStyle As Integer) As Float[] Select Case iStyle Case Line.Dash Return Dash Case Line.Dot Return Dot Case Line.DashDot Return DashDot Case Line.DashDotDot Return DashDotDot End Select End gambas-3.16.3/comp/src/gb.report/.src/MainTools/ReportUnits.module000066400000000000000000000034431411575327000247550ustar00rootroot00000000000000' Gambas module file Fast Export Public AllowedUnits As String[] = ["m", "cm", "mm", "in", "pt", "px"] Property Read DesktopScale As Float Public _ReportWidth As Float Public _Scale As Float = 1.0 'Public Ratio As Float Public Function GetFactorUnitToInch(Unit As String, Optional Resolution As Integer) As Float Select Case Unit Case "cm" Return 0.3937 Case "ft" Return 12 Case "in" Return 1 Case "m" Return 39.37 Case "mm" Return 0.03937 Case "px" Return 1 / Paint.ResolutionX 'If(Resolution, Resolution, ReportUnits.Resolution) Case "pt" Return 1 / 72 Case Else Error.Raise("Unknown unit") End Select End Public Function ReportUnitsConverter(Value As Float, Unit1 As String, Unit2 As String) As Float Dim fInch As Float Dim f As Float f = GetFactorUnitToInch(Unit1) finch = value * f f = GetFactorUnitToInch(Unit2) Return finch / f End Public Function UnitToCm(Value As Float, Unit As String) As Float Dim fInch As Float Dim f As Float f = GetFactorUnitToInch(Unit) finch = value * f f = 0.3937 Return finch / f End Public Function _ReportUnitsToPixels(Value As Float) As Float Dim f As Float 'Return Value * Ratio ' If Value > 0 Then Stop f = Value / _ReportWidth * (Paint.Width / _Scale) 'f = 0.3937 * Paint.ResolutionX 'f = ReportUnits.GetFactorUnitToInch("cm") * Resolution 'ReportResolution 'Return Value * f Return f End Public Function _PixelsToReportUnits(Value As Float) As Float Dim f As Float 'f = 0.3937 * Paint.ResolutionX 'ReportResolution Return (value / Paint.ResolutionX * 2.54) '/ _ReportWidth * Paint.Width 'Return (Value) / f End Private Function DesktopScale_Read() As Float Return Paint.ResolutionX / Desktop.Resolution End gambas-3.16.3/comp/src/gb.report/.src/MainTools/Types/000077500000000000000000000000001411575327000223505ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/MainTools/Types/TControl.class000066400000000000000000000030501411575327000251410ustar00rootroot00000000000000' Gambas class file 'Fast Property Read RealLeft As Float ''Return the left relative position size in Pixel Property Read RealTop As Float ''Return the top relative position size in Pixel Property Read RealWidth As Float ''Return the width in pixel Property Read RealHeight As Float ''Return the height in pixel Public SizeHint As TSizeHint ''Size hints buffer Property Ctrl As ReportControl ''Return or set the link between real widget and virtual object Public _PageChildren As New Collection ''The links between page and objects Public Index As Integer ''Remember the dataindex Public Cache As Variant ''For future data cache Private $iCtrl As Integer Private fX As Float Private fY As Float Private fW As Float Private fH As Float ''Define the virtual widget size in internal unit (cm) Public Function _SetGeometry(X As Float, Y As Float, W As Float, H As Float) As Float fX = X fY = Y fW = W fH = H End Private Function Ctrl_Read() As ReportControl Return ReportControl._ObjectFromId[$iCtrl] End Private Sub Ctrl_Write(Value As ReportControl) $iCtrl = Value.id End Private Function RealLeft_Read() As Float Return ReportUnits._ReportUnitsToPixels(fX) End Private Function RealTop_Read() As Float Return ReportUnits._ReportUnitsToPixels(fY) End Private Function RealWidth_Read() As Float Return ReportUnits._ReportUnitsToPixels(fX + fW) - ReportUnits._ReportUnitsToPixels(fX) End Private Function RealHeight_Read() As Float Return ReportUnits._ReportUnitsToPixels(fY + fH) - ReportUnits._ReportUnitsToPixels(fY) End gambas-3.16.3/comp/src/gb.report/.src/MainTools/Types/TPageColumn.class000066400000000000000000000002321411575327000255520ustar00rootroot00000000000000' Gambas class file Public Exp As Float Public NExp As Integer Public X As Float Public Width As Float Public TCtrls As New TControl[] Public TH As Floatgambas-3.16.3/comp/src/gb.report/.src/MainTools/Types/TSizeHint.class000066400000000000000000000001501411575327000252540ustar00rootroot00000000000000' Gambas class file Public Height As Float = 0 Public Width As Float = 0 Public NotFinished As Boolean gambas-3.16.3/comp/src/gb.report/.src/MainTools/Types/TSizeParse.class000066400000000000000000000022151411575327000254300ustar00rootroot00000000000000' Gambas class file 'Fast Public Value As Float Public Unit As String '' Create a new size object from its description. '' #bAllowRelative# can be TRUE to allow the use of "%" as unit. Public Sub _new(Size As String, Optional bAllowRelative As Boolean) Dim I As Integer Dim sCar As String Size = Trim(Size) If Not Size Then Unit = "px" Return Endif For I = 1 To Len(Size) sCar = Mid$(Size, I, 1) If Not IsDigit(sCar) And If sCar <> "-" And If sCar <> "." Then Break Next Value = CFloat(Left$(Size, I - 1)) Unit = Trim(Mid$(Size, I)) If Not Unit Then Unit = "%" If Not ReportUnits.AllowedUnits.Exist(Unit) Then If Not bAllowRelative Or Unit <> "%" Then Error.Raise("Unknown unit") Endif Endif End Public Sub ToCm() As Float Return ReportUnits.UnitToCm(Value, Unit) End Public Sub IsRelative() As Boolean Return Unit = "%" End Public Sub GetValue() As Float If IsRelative() Then Return Value Else Return ToCm() Endif End Static Public Sub _get(Size As String) As TSizeParse Dim hSize As TSizeParse = New TSizeParse(Size) Return hSize End gambas-3.16.3/comp/src/gb.report/.src/Optional/000077500000000000000000000000001411575327000211245ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Optional/Align.class000066400000000000000000000005041411575327000232040ustar00rootroot00000000000000' Gambas class file Export Optional ' Must be the same values as in gb.form.const.h in gb.qt4 sources Public Enum Normal = &H00, {Left} = &H01, {Right} = &H02, Center = &H03, TopNormal = &H10, TopLeft = &H11, TopRight = &H12, Top = &H13, BottomNormal = &H20, BottomLeft = &H21, BottomRight = &H22, Bottom = &H23 gambas-3.16.3/comp/src/gb.report/.src/Optional/Arrange.class000066400000000000000000000003411411575327000235300ustar00rootroot00000000000000' Gambas class file Export Optional Public Const {None} As Integer = 0 Public Const {Horizontal} As Integer = 1 Public Const {Vertical} As Integer = 2 Public Const {Column} As Integer = 4 Public Const {Fill} As Integer = 5 gambas-3.16.3/comp/src/gb.report/.src/Optional/Line.class000066400000000000000000000005041411575327000230410ustar00rootroot00000000000000' Gambas class file Export Optional ' Must be the same values as in gb.form.const.h in gb.qt4 sources Public Const {None} As Integer = 0 Public Const {Solid} As Integer = 1 Public Const {Dash} As Integer = 2 Public Const {Dot} As Integer = 3 Public Const {DashDot} As Integer = 4 Public Const {DashDotDot} As Integer = 5gambas-3.16.3/comp/src/gb.report/.src/Padding/000077500000000000000000000000001411575327000207055ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Padding/ReportPadding.class000066400000000000000000000022721411575327000245010ustar00rootroot00000000000000' Gambas class file Export Public {Left} As String = "0cm" Public Right As String = "0cm" Public Top As String = "0cm" Public Bottom As String = "0cm" Public _Left As Float Public _Right As Float Public _Top As Float Public _Bottom As Float Property Read _Width As Float Property Read _Height As Float Static Public Sub _Get(Value As String) As ReportPadding Dim hPadding As New ReportPadding Dim hSize As TSizeParse Dim s As String Dim ars As String[] For Each s In Split(Value, ";") ars = Scan(s, "*:*") If ars.count > 1 Then Select Case LCase(ars[0]) Case "left" hPadding.Left = ars[1] Case "top" hPadding.top = ars[1] Case "bottom" hPadding.bottom = ars[1] Case "right" hPadding.Right = ars[1] Case Else End Select Else Try hSize = New TSizeParse(s) If hSize <> Null Then hPadding.Left = s hPadding.Right = s hPadding.Bottom = s hPadding.Top = s Endif Endif Next Return hPadding End Private Function _Width_Read() As Float Return _Left + _Right End Private Function _Height_Read() As Float Return _top + _Bottom End gambas-3.16.3/comp/src/gb.report/.src/Preview/000077500000000000000000000000001411575327000207605ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Preview/CPrint.class000066400000000000000000000020661411575327000232120ustar00rootroot00000000000000' Gambas class file Create Static Private hPrinter As New Printer As "Printer" Private $hPrint As Report Public Sub PrintReport(hReport As Report, Optional MyPrinter As Printer) Dim hSizeParse As TSizeParse $hPrint = hReport '$hPrint = hReport.Clone() If MyPrinter Then hPrinter = MyPrinter Else hPrinter = New Printer Endif Object.Attach(hPrinter, Me, "Printer") hPrinter.Paper = $hPrint.Paper hPrinter.Orientation = $hPrint.Orientation If $hPrint.Paper = Printer.Custom Then hSizeParse = New TSizeParse($hPrint.Width) hPrinter.PaperWidth = hSizeParse.ToCm() * 10 hSizeParse = New TSizeParse($hPrint.Height) hPrinter.PaperHeight = hSizeParse.ToCm() * 10 Endif If Not MyPrinter Then If Not hPrinter.Configure() Then hPrinter.Print Endif Else hPrinter.Print Endif End Public Sub Printer_Draw() $hPrint.Paint(hPrinter.Page) End Public Sub Printer_Begin() 'Debug Object.Type($hReport) $hPrint.Layout hPrinter.Count = $hPrint.PageCount End Public Sub Printer_End() $hPrint = Null End gambas-3.16.3/comp/src/gb.report/.src/Preview/FOptions.class000066400000000000000000000002411411575327000235450ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() ComboBox1.List = ["A3", "A4", "A5", "B5", "Executive", "Legal", "Letter", "Custom"] ComboBox1.Index = 1 End gambas-3.16.3/comp/src/gb.report/.src/Preview/FOptions.form000066400000000000000000000021401411575327000234030ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,68,64) { VBox1 VBox MoveScaled(0,0,36,52) Spacing = True { Frame1 Frame MoveScaled(0,3,36,38) Text = ("Size") { ComboBox1 ComboBox MoveScaled(2,7,33,4) ReadOnly = True } { Label1 Label MoveScaled(3,4,19,3) Text = ("Paper size") Transparent = True } { Frame3 Frame MoveScaled(2,12,33,22) Enabled = False Text = ("Custom paper size") { Label2 Label MoveScaled(2,7,9,3) Text = ("Width:") Transparent = True } { Label3 Label MoveScaled(2,13,9,3) Text = ("Height:") Transparent = True } { txtWidth TextBox MoveScaled(9,6,14,5) } { txtHeight TextBox MoveScaled(9,12,14,5) } } } { Frame2 Frame MoveScaled(0,42,36,9) Text = ("Orientation") { ComboBox2 ComboBox MoveScaled(2,4,28,4) ReadOnly = True List = [("Portrait"), ("Landscape")] } } } } gambas-3.16.3/comp/src/gb.report/.src/Preview/FPreview.class000066400000000000000000000201061411575327000235350ustar00rootroot00000000000000' Gambas class file Private $aModeButtons As New ToolButton[] Private bFlag As Boolean Private $hPrinter As New Printer As "Printer" Private $iCurPrinterResolution As Integer Static Public Function Run(hReport As Report) Dim hFPreview As FPreview hFpreview = New FPreview hFPreview.SetReport(hReport) hFpreview.ShowModal() End Public Sub _new() Dim s As String Dim hButton As ToolButton $aModeButtons = [ToolButton1, ToolButton2, ToolButton4, ToolButton3] If Component.IsLoaded("gb.settings") Then 'Settings.Read(Me, "FPreview") Settings.Read(View, "View") If View.ScaleMode = View.Custom Then Slider1.Value = View.Scale Else For Each hButton In $aModeButtons hButton.Value = False Next $aModeButtons[View.ScaleMode - 1].Value = True Endif ButtonBox1.Text = Settings["FPreview/OutputFile"] $hPrinter.Name = Settings["FPreview/Printer"] If Settings["FPreview/PrintToFile"] = True Then TabPanel1.Index = 1 Try $hPrinter.Duplex = Settings["FPreview/Duplex"] Try $hPrinter.GrayScale = Settings["FPreview/GrayScale"] Try $hPrinter.ReverseOrder = Settings["FPreview/ReverseOrder"] Try $hPrinter.CollateCopies = Settings["FPreview/CollateCopies"] Endif For Each s In Printer.List cmbPrinter.Add(s) Next SelectPrinter($hPrinter.Name) Button1.Tag = False End Private Sub SelectPrinter(Optional sName As String) If sName Then $hPrinter.Name = sName Object.Lock(cmbPrinter) Try cmbPrinter.Index = cmbPrinter.List.Find(sName) Object.Unlock(cmbPrinter) Else $hPrinter.Name = Printer.Default Object.Lock(cmbPrinter) cmbPrinter.Index = cmbPrinter.List.Find(Printer.Default) Object.Unlock(cmbPrinter) Endif 'NOTE: force the printer fullpage mode because it make error on report placement $hPrinter.FullPage = True tgbGrayScale.Value = $hPrinter.GrayScale tgbFullPage.Value = $hPrinter.FullPage tgbReverseCopies.Value = $hPrinter.ReverseOrder tgbCollateCopies.Value = $hPrinter.CollateCopies End Public Sub SetReport(hReport As Report) View.Report = hReport GetValuesFromReport() End Private Sub GetValuesFromReport() cmbPaper.Index = View.Report.Paper $hPrinter.Orientation = View.Report.Orientation If View.Report.Paper = Printer.Custom Then pnlCustom.Enabled = True $hPrinter.PaperWidth = TSizeParse[View.Report.Width].ToCm() * 10 $hPrinter.PaperHeight = TSizeParse[View.Report.Height].ToCm() * 10 Else $hPrinter.Paper = View.Report.Paper Endif cmbOrientation.Index = $hPrinter.Orientation cmbDuplex.Index = $hPrinter.Duplex cmbPaper.Index = $hPrinter.Paper Object.Lock(spWidth) spWidth.Value = $hPrinter.PaperWidth Object.Unlock(spWidth) Object.Lock(spHeight) spHeight.Value = $hPrinter.PaperHeight Object.Unlock(spHeight) End Public Sub Slider1_Change() Dim hButton As ToolButton View.Scale = Slider1.Value / 100 lblZoom.Text = Str(Slider1.Value) & " %" bFlag = True For Each hButton In $aModeButtons hButton.Value = False Next bFlag = False End Public Sub View_Change() Object.Lock(Slider1) Slider1.Value = View.Scale * 100 Object.Unlock(Slider1) lblZoom.Text = Str(Slider1.Value) & " %" End Public Sub Mode_Click() Dim hButton As ToolButton Dim hCurButton As ToolButton If bFlag Then Return bFlag = True hCurButton = Last For Each hButton In $aModeButtons If hButton = hCurButton Then hButton.Value = True Else hButton.Value = False Endif Next bFlag = False View.ScaleMode = hCurButton.Tag End Public Sub tgbGrayScale_Click() Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.GrayScale = Last.Value View._GrayScale = Last.Value End Public Sub tgbFullPage_Click() Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.FullPage = Last.Value End Public Sub tgbReverseCopies_Click() Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.ReverseOrder = Last.value End Public Sub tgbCollateCopies_Click() Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.CollateCopies = Last.Value End Public Sub cmbOrientation_Click() If View.Report.Orientation = Last.Index Then Return View.Report.Orientation = Last.Index 'View.Report.Refresh View.Refresh GetValuesFromReport End Public Sub cmbPaper_Click() Dim i As Integer = Last.Index 'Print "id "; View.Report.paper If View.Report.Paper = i Then Return View.Report.Paper = i If i = 0 Then pnlCustom.Enabled = True Else pnlCustom.Enabled = False View.Refresh GetValuesFromReport Endif End Public Sub cmbDuplex_Click() $hPrinter.Duplex = Last.index End Public Sub ButtonBox1_Click() Dialog.Path = User.Home Dialog.Filter = ["*.pdf", "Pdf", "*.ps", "Postscript"] If Not Dialog.saveFile() Then ButtonBox1.Text = Dialog.Path $hPrinter.OutputFile = Dialog.Path Endif End Public Sub TabPanel1_Click() If TabPanel1.Index = 0 Then $hPrinter.OutputFile = "" $hPrinter.Name = cmbPrinter.Text $iCurPrinterResolution = $hPrinter.Resolution Else $hPrinter.OutputFile = ButtonBox1.Text $hPrinter.Resolution = 600 Endif End Public Sub TextBox1_Change() View.Range = Last.Text End Public Sub TextBox1_Click() Last.Text = "" End Public Sub spWidth_Change() View.Report.Width = Str(Last.Value) & "mm" View.Refresh End Public Sub spHeight_Change() View.Report.Height = Str(Last.Value) & "mm" View.Refresh End Public Sub Button2_Click() View._ForceLayout End Public Sub cmbPrinter_Click() SelectPrinter(Last.Text) End Public Sub Button1_Click() Dim iReturn As Integer If Button1.Tag Then $hPrinter.Cancel Button1.Tag = False Else If Not View.Report Then Return If TabPanel1.Index = 1 Then If $hPrinter.OutputFile Then If Exist($hPrinter.OutputFile) Then iReturn = Message.Warning("This file already exist.\nDo you want to replace it ?", "Yes", "No") If iReturn = 2 Then ButtonBox1.SetFocus Return Endif Endif Else ButtonBox1_Click Return Endif Endif Button1.Tag = True Button1.Picture = Picture["icon:/22/cancel"] Button1.Text = ("Cancel") $hPrinter.Print Endif End Public Sub Printer_Begin() hbZoom.Hide hbPrinting.Show Inc Application.Busy ProgressBar1.Value = 0 ProgressBar1.Pulse = True lblPrint.Text = ("Layout...") End Public Sub Printer_Paginate() If View.Report._LayoutNotFinished Then View.LockLayout View.Report._Layout(View.Report.PageCount) Else $hPrinter.Count = View.PageCount ProgressBar1.Pulse = False lblPrint.Text = ("Printing...") View.UnlockLayout Endif End Public Sub Printer_Draw() If View._RangePages.Count = 0 Then View.Report.Paint($hPrinter.Page) Else View.Report.Paint(View._RangePages[$hPrinter.Page - 1]) Endif ProgressBar1.Value = $hPrinter.Page / View.PageCount End Public Sub Printer_End() 'View.UnlockLayout hbPrinting.Hide hbZoom.Show Dec Application.Busy Button1.Picture = Picture["icon:/22/print"] Button1.Text = ("Print") Button1.Tag = False End Public Sub Panel12_MouseDown() End Public Sub ButtonBox1_Change() $hPrinter.OutputFile = Last.Text End Public Sub TextBox2_Change() $hPrinter.NumCopies = Last.Value End Public Sub Form_Close() If Component.IsLoaded("gb.settings") Then 'Settings.Write(Me, "FPreview") Settings.Write(View, "View") Settings["FPreview/OutputFile"] = ButtonBox1.Text Settings["FPreview/Printer"] = $hPrinter.Name Settings["FPreview/PrintToFile"] = TabPanel1.Index = 1 Settings["FPreview/Duplex"] = cmbDuplex.Index Settings["FPreview/GrayScale"] = tgbGrayScale.Value Settings["FPreview/ReverseOrder"] = tgbReverseCopies.Value Settings["FPreview/CollateCopies"] = tgbCollateCopies.Value Settings.Save() Endif End gambas-3.16.3/comp/src/gb.report/.src/Preview/FPreview.form000066400000000000000000000156031411575327000234010ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,114.2857,85.7143) Text = ("Report preview") Arrangement = Arrange.Vertical { Panel4 HBox MoveScaled(1,1,138,86) Expand = True { Panel1 VBox MoveScaled(0,0,73,84) Expand = True { View ReportView MoveScaled(2,0,70,65) Background = Color.LightForeground Tag = "3" Expand = True } { hbPrinting HBox MoveScaled(1,70,71,4) Visible = False { Panel18 Panel MoveScaled(-1,0,19,3) Expand = True Arrangement = Arrange.Horizontal } { lblPrint Label MoveScaled(23,0,11,3) Text = ("Printing...") } { ProgressBar1 ProgressBar MoveScaled(34,0,37,4) } } { hbZoom HBox MoveScaled(1,80,73,4) { Panel2 Panel MoveScaled(-1,0,19,3) Expand = True Arrangement = Arrange.Horizontal { ToolButton1 ToolButton Mode Name = "ToolButton1" MoveScaled(0,0,4,4) Tag = "1" ToolTip = ("One page") Picture = Picture["img/22/OnePage.png"] Toggle = True Value = True } { ToolButton2 ToolButton Mode Name = "ToolButton2" MoveScaled(4,0,4,4) Tag = "2" ToolTip = ("Two pages") Picture = Picture["img/22/TwoPage.png"] Toggle = True } { ToolButton4 ToolButton Mode Name = "ToolButton4" MoveScaled(8,0,4,4) Tag = "3" ToolTip = ("Full width") Picture = Picture["img/22/FullWidth.png"] Toggle = True } { ToolButton3 ToolButton Mode Name = "ToolButton3" MoveScaled(12,0,4,4) Tag = "4" ToolTip = ("Real size") Picture = Picture["img/22/RealSize.png"] Toggle = True } } { Slider1 Slider MoveScaled(36,0,26,4) MinValue = 12 MaxValue = 200 } { lblZoom Label MoveScaled(63,1,8,2) Alignment = Align.Center } } } { Separator1 Separator MoveScaled(74,23,0,15) } { VBox1 VBox MoveScaled(75,2,38,83) Spacing = True Margin = True { TabPanel1 TabPanel MoveScaled(0,-1,36,19) Count = 2 Index = 0 Text = ("Printer") { PictureBox1 PictureBox MoveScaled(1,1,7,7) Picture = Picture["icon:/48/printer"] } { cmbPrinter ComboBox MoveScaled(1,9,34,4) ReadOnly = True } Index = 1 Text = ("File") { PictureBox2 PictureBox MoveScaled(1,1,7,7) Picture = Picture["icon:/48/pdf"] } { ButtonBox1 ButtonBox MoveScaled(1,9,34,4) Picture = Picture["icon:/16/open"] } Index = 0 } { Panel14 HBox MoveScaled(1,20,36,4) { Label10 Label MoveScaled(0,0,12,4) Text = ("Orientation") } { cmbOrientation ComboBox MoveScaled(14,0,21,4) ReadOnly = True List = [("Portrait"), ("Landscape")] } } { Panel8 HBox MoveScaled(1,24,36,4) { Label3 Label MoveScaled(0,0,12,4) Text = ("Paper") } { cmbPaper ComboBox MoveScaled(13,0,21,4) ReadOnly = True List = [("Custom"), ("A3"), ("A4"), ("A5"), ("B5"), ("Letter"), ("Executive"), ("Legal")] } } { pnlCust Panel MoveScaled(2,30,35,16) { pnlCustom Panel MoveScaled(2,0,31,15) Enabled = False Border = Border.Etched { Label5 Label MoveScaled(3,2,8,4) Text = ("Width") } { spWidth SpinBox MoveScaled(11,2,13,4) MaxValue = 1000 } { Label7 Label MoveScaled(24,2,4,4) Text = ("mm") } { Label6 Label MoveScaled(3,9,8,4) Text = ("Height") } { spHeight SpinBox MoveScaled(11,9,13,4) MaxValue = 1000 } { Label8 Label MoveScaled(24,9,4,4) Text = ("mm") } } } { Panel11 Panel MoveScaled(2,46,35,3) Expand = True } { Panel16 VBox MoveScaled(2,48,37,12) Spacing = True { Panel7 HBox MoveScaled(0,1,36,4) { Label2 Label MoveScaled(0,0,15,4) Text = ("Recto Verso") } { cmbDuplex ComboBox MoveScaled(16,0,20,4) ReadOnly = True List = [("None"), ("Short side"), ("Long side")] } } { HBox3 HBox MoveScaled(-1,6,35,6) Spacing = True { Panel13 Panel MoveScaled(1,1,3,4) Expand = True } { tgbGrayScale ToggleButton MoveScaled(5,0,6,6) ToolTip = ("Gray Scale") Picture = Picture["img/32/grayscale.png"] } { tgbFullPage ToggleButton MoveScaled(11,0,6,6) Visible = False ToolTip = ("Full Page") Picture = Picture["img/32/Empty.png"] } { tgbReverseCopies ToggleButton MoveScaled(17,0,6,6) ToolTip = ("Reverse order") Picture = Picture["img/32/reverse.png"] } { tgbCollateCopies ToggleButton MoveScaled(24,0,6,6) ToolTip = ("Collate copies") Picture = Picture["img/32/Collatecopie.png"] } { Panel15 Panel MoveScaled(32,2,3,3) Expand = True } } } { Panel12 Panel MoveScaled(2,57,35,5) Expand = True } { Panel6 HBox MoveScaled(2,61,36,4) { Label1 Label MoveScaled(0,0,17,4) Text = ("Range") } { TextBox1 ButtonBox MoveScaled(17,0,18,4) Picture = Picture["icon:/16/clear"] } } { HBox1 HBox MoveScaled(2,66,34,4) { Label4 Label MoveScaled(0,0,15,4) Text = ("Copies") } { TextBox2 SpinBox MoveScaled(15,0,12,4) MinValue = 1 Value = 1 } } { Panel5 Panel MoveScaled(2,71,33,2) } { HBox2 HBox MoveScaled(2,75,33,6) { Panel10 Panel MoveScaled(2,1,10,3) Expand = True } { Button1 Button MoveScaled(7,0,22,6) Text = ("Print") Picture = Picture["icon:/22/print"] } { Panel9 Panel MoveScaled(24,4,10,3) Expand = True } } } } } gambas-3.16.3/comp/src/gb.report/.src/Preview/FPrint.class000066400000000000000000000013071411575327000232120ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim hprinter As New Printer Dim sPrinter As String For Each sPrinter In Printer.List ListView1.Add(sPrinter, sPrinter, IIf(sPrinter = Printer.Default, Picture["icon:/16/ok"], Picture["icon:/16/printer"])) If sPrinter = Printer.Default Then ListView1[sPrinter].RichText = "" & sPrinter & "" Next ' hprinter.FirstPage ' hprinter.LastPage ' hprinter.NumCopies ' hprinter.Orientation ' hprinter.Page ' hprinter.Paper ' hprinter.PaperHeight ' hprinter.PaperWidth ' ' hprinter.ReverseOrder 'hprinter.GrayScal ' hprinter.FullPage ' hprinter.OutputFile 'hprinter.CollateCopie ' hprinter.ReverseOrder End Public Sub Panel6_Show() Me.Refresh End gambas-3.16.3/comp/src/gb.report/.src/Preview/FPrint.form000066400000000000000000000057021411575327000230530ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,81,67) Text = ("Printer Config") Resizable = False Arrangement = Arrange.Horizontal AutoResize = True Spacing = True Margin = True { Panel3 VBox MoveScaled(3,4,53,60) Expand = True AutoResize = True Spacing = True Padding = 20 { ListView1 ListView MoveScaled(0,0,52,20) } { Panel6 Expander MoveScaled(1,21,51,37) Text = ("More...") Hidden = True { Panel7 VBox MoveScaled(1,2,44,32) Spacing = True Padding = 20 { HBox3 HBox MoveScaled(1,2,50,4) { Label8 Label MoveScaled(1,1,18,3) Text = ("Range") } { Panel10 Panel MoveScaled(15,1,12,3) Expand = True } { TextBox1 TextBox MoveScaled(19,0,22,4) } } { HBox1 HBox MoveScaled(2,8,50,4) { Label1 Label MoveScaled(1,1,18,3) Text = ("RectoVerso") } { Panel5 Panel MoveScaled(15,1,12,3) Expand = True } { ComboBox1 ComboBox MoveScaled(20,1,18,3) ReadOnly = True List = [("None"), ("Long side"), ("Short side")] } } { HBox2 HBox MoveScaled(2,13,50,4) { Label3 Label MoveScaled(1,1,18,3) Text = ("Paper") } { Panel8 Panel MoveScaled(15,1,12,3) Expand = True } { cmbPaper ComboBox MoveScaled(20,1,18,3) ReadOnly = True List = [("None"), ("Long side"), ("Short side")] } } { Panel9 Panel MoveScaled(2,19,40,11) Border = Border.Etched { Label4 Label MoveScaled(1,1,13,3) Text = ("Width") } { Label5 Label MoveScaled(23,1,13,3) Text = ("Height") } { SpinBox2 SpinBox MoveScaled(1,4,13,4) } { SpinBox3 SpinBox MoveScaled(23,4,13,4) } { Label6 Label MoveScaled(14,4,4,4) Text = ("mm") } { Label7 Label MoveScaled(36,4,4,4) Text = ("mm") } } } } } { Separator1 Separator MoveScaled(58,4,1,16) } { Panel1 VBox MoveScaled(61,6,17,45) { Button1 Button MoveScaled(0,0,16,16) Picture = Picture["icon:/64/printer"] } { Panel4 Panel MoveScaled(1,16,14,5) } { Label2 Label MoveScaled(1,21,10,2) Text = ("Copies :") } { SpinBox1 SpinBox MoveScaled(0,23,16,4) } { Panel2 Panel MoveScaled(2,30,12,6) Expand = True } { Button2 Button MoveScaled(2,38,15,5) Text = Shortcut(("Cancel"), "C") Picture = Picture["icon:/22/cancel"] } } } gambas-3.16.3/comp/src/gb.report/.src/Preview/Form1.class000066400000000000000000000007731411575327000230020ustar00rootroot00000000000000' Gambas class file Public Sub Form_Open() Dim hreport As New Report4 ReportView1.Report = hreport Slider1.Value = ReportView1.Scale * 100 End Public Sub Slider1_Change() ReportView1.Scale = Last.value / 100 ReportView1.Refresh End Public Sub ReportView1_Change() Object.Lock(Slider1) Slider1.Value = Last.Scale * 100 If ReportView1.ScaleMode = ReportView.Custom Then lblCustom.Value = True Object.Unlock(Slider1) End Public Sub Radio_Click() ReportView1.ScaleMode = Last.tag End gambas-3.16.3/comp/src/gb.report/.src/Preview/Form1.form000066400000000000000000000024441411575327000226350ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,113,64) Arrangement = Arrange.Horizontal { Panel1 Panel MoveScaled(2,1,68,51) Expand = True Arrangement = Arrange.Vertical { ReportView1 ReportView MoveScaled(0,0,48,40) Expand = True } { Slider1 Slider MoveScaled(8,46,59,4) MaxValue = 200 } } { PictureBox1 PictureBox MoveScaled(72,30,8,8) Background = Color.SelectedForeground Picture = Picture["icon:/16/printer"] Alignment = Align.Center } { PictureBox2 PictureBox MoveScaled(74,11,14,14) Background = Color.SelectedForeground Picture = Picture["icon:/22/file"] Alignment = Align.Center } { VBox1 VBox MoveScaled(86,1,25,59) { RadioButton1 RadioButton Radio Name = "RadioButton1" MoveScaled(2,2,27,4) Tag = "0" Text = ("One Page") Value = True } { RadioButton2 RadioButton Radio Name = "RadioButton2" MoveScaled(2,7,27,4) Tag = "1" Text = ("Two Page") } { RadioButton3 RadioButton Radio Name = "RadioButton3" MoveScaled(3,12,24,4) Tag = "2" Text = ("FullWidth") } { lblCustom RadioButton Radio Name = "lblCustom" MoveScaled(2,16,25,4) Tag = "3" Text = ("Custom") } } } gambas-3.16.3/comp/src/gb.report/.src/Preview/ReportView.class000066400000000000000000000364021411575327000241220ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _IsControl As Boolean = True Public Const _IsContainer As Boolean = False 'Public Const _Properties As String = "Left{ReportCoord},Top{ReportCoord},Width{ReportCoord},Height{ReportCoord},Brush{ReportBrush},Visible=True,Fixed,Font,Padding,Ignore,Expand,AutoResize,Tag,Range" 'Public Const _Family As String = "Report" Private $View As ScrollArea Private $hReport As Report Private $fScale As Float = 1.0 Private fReportWidthCm As Float Private fReportHeightCm As Float Private $iNbrePage As Integer Private $iTotNbrePage As Integer Private $iNbrePageByLine As Integer Private $fPageWidth As Float Private $fPageHeight As Float Property {Report} As Report Private $fSpace As Float Property Scale As Float Property _GrayScale As Boolean Private $bGrayScale As Boolean Property Settings As Variant[] Private $fRealPageHeight As Float Private $fRealPageWidth As Float Private $fRealSpace As Float Private $cBuffer As New Collection Private $aImageToLoad As New Integer[] Private $aImageLoaded As New Integer[] Private $aTask As New ReportViewTask[8] Private $Timer As New Timer As "Timer" Private $tmrRedraw As New Timer As "tmrRedraw" Private $hSpinner As Spinner Property Read LayoutInProgress As Boolean Private $bLayoutInProgress As Boolean Private htmpImage As New Image(1, 1) Private $bLayoutEnd As Boolean Private bNeedToLoad As Boolean = True Private $iMinLine As Integer Private $iMaxLine As Integer Private $iFirstPage As Integer Private $iLastPage As Integer Private $iRealCenter As Integer Public Const Custom As Integer = 0 Public Const Page As Integer = 1 Public Const DualPage As Integer = 2 Public Const FullWidth As Integer = 3 Public Const RealSize As Integer = 4 Property ScaleMode As Integer Private $iScaleMode As Integer = Me.Custom Private $fCurScale As Float = 1.0 Private $bForceReload As Boolean Property ShowPageNumbers As Boolean Property Range As String Private $sRange As String Public _RangePages As New Integer[] Private $bShowPageNumbers As Boolean Property Read Count As Integer ' Property Read Status As Integer ' Private $iStatus As Integer Private $bLayoutLocked As Boolean Property Read PageCount As Integer Event Progress Event Change Event Layout(LayoutInProgress As Boolean) Private $bLayout As Boolean Private $MX As Integer Private $MY As Integer Public Sub _new(Optional hReport As Report) If hReport Then Me.Report = hReport '$hReport = hReport $fCurScale = 0.3 $fRealSpace = 2 * Desktop.Resolution / 2.54 $Timer.Delay = 5 $View = New ScrollArea(Me) As "View" $View.ScrollBar = Scroll.Both 'If Not $hReport Then $view.Enabled = False '$View.Background = Color.Red End Public Sub Timer_Timer() Dim hImg As New Image($fPageWidth, $fPageHeight, Color.White) 'Dim hSvg As New SvgImage($fRealPageWidth, $fRealPageHeight) Dim i As Integer Dim aDiff As Integer[] If $bLayoutLocked Then $Timer.Stop Return Endif If $aImageToLoad.Count > 0 Then i = $aImageToLoad.Pop() 'If $aImageLoaded.Exist(i) Then Return 'Print "load : "; i Paint.Begin(hImg) ReportUnits._Scale = $fCurScale Paint.Scale($fCurScale, $fCurScale) If _RangePages.Count > 0 Then $hReport.Paint(_RangePages[i - 1]) Else $hReport.Paint(i) Endif ReportUnits._Scale = 1.0 Paint.End ' Paint.Begin(hImg) ' hsvg.Paint() ' Paint.End If $bGrayScale Then hImg = hImg.Desaturate() If Not $aImageLoaded.Exist(i) Then $aImageLoaded.Add(i) $cBuffer[i] = hImg $bLayoutInProgress = $hReport._LayoutNotFinished $tmrRedraw.Trigger Else If $bLayoutInProgress Then Raise Layout(True) Paint.Begin(htmpImage) 'Print "Layout : "; $hReport.PageCount $hReport._layout($hReport.PageCount) Paint.End $iTotNbrePage = $hReport.PageCount $bLayoutInProgress = $hReport._LayoutNotFinished Layout Else If Not $bLayoutEnd Then $cBuffer.Clear $aImageLoaded.Clear $aImageToLoad.Clear $Timer.Stop $bLayoutEnd = True Layout $tmrRedraw.Trigger Raise Layout(False) Else $Timer.Stop Endif Endif Endif End Public Sub tmrRedraw_Timer() $View.Refresh End Public Sub View_Draw() Dim i, j, iline As Integer Dim X As Integer Dim Y As Integer Dim hImg As Image Dim bBreak As Boolean Dim aDiff As Integer[] Dim iTextWidth As Integer Dim sText As String If Not $hReport Then Return Paint.Scale($fCurScale, $fCurScale) i = $iFirstPage iline = $iMinLine '$aImageToLoad.Clear 'PrintIArray($aImageLoaded) 'Print $aImageLoaded.Count Do For j = 0 To $iNbrePageByLine - 1 X = $iRealCenter + $fRealSpace + (($fRealPageWidth + $fRealSpace) * j) - $View.ScrollX / $fCurScale Y = $fRealSpace + (($fRealPageHeight + $fRealSpace) * iline) - $View.ScrollY / $fCurScale Paint.Rectangle(X + 10, Y + 10, $fRealPageWidth, $fRealPageHeight) Paint.Brush = Paint.Color(&HA0000000) Paint.Fill Paint.Rectangle(X, Y, $fRealPageWidth, $fRealPageHeight) Paint.LineWidth = 2 Paint.Brush = Paint.Color(Color.Black) Paint.Stroke(True) Paint.Brush = Paint.Color(Color.White) Paint.Fill hImg = $cBuffer[i + 1] If hImg Then Draw.Image(hImg, X, Y, $fRealPageWidth, $fRealPageHeight) If $bShowPageNumbers Then Paint.Font.size = 200 Paint.Font.Bold = True Paint.Brush = Paint.Color(Color.SetAlpha(Color.Gray, 128)) Paint.Text(i + 1, X, Y, $fRealPageWidth, $fRealPageHeight, Align.Center) Paint.Fill Endif Inc i If i >= $iLastPage + 1 Then bBreak = True Break Endif Next If bBreak Then Break Inc iline Loop 'Draw.Background = Color.Yellow Paint.Reset sText = Str($iFirstPage + 1) & "/" & Str($iNbrePage) iTextWidth = Paint.TextSize(sText).Width + 10 Paint.Rectangle(Paint.Width - iTextWidth - 10, 10, iTextWidth, 25, 5) Paint.Brush = Paint.Color(Color.SetAlpha(Color.DarkGray, 125)) Paint.Fill(True) Paint.Brush = Paint.Color(Color.DarkGray) Paint.Stroke Paint.Brush = Paint.Color(Color.White) Paint.Font.Bold = True Paint.Text(sText, Paint.Width - iTextWidth - 10, 10, iTextWidth, 25, Align.Center) Paint.fill 'Draw.FillRect(Paint.Width - 50, 10 + (Paint.h - 40) * $View.scrolly / $View.ScrollH, 40, 25, Color.Yellow) bNeedToLoad = False End Private Function GetDiffArray(Array1 As Integer[], Array2 As Integer[]) As Integer[] Dim aRet As New Integer[] Dim i As Integer For Each i In Array2 If Array1.Exist(i) Then Continue aRet.Add(i) Next Return aRet End Public Function MakePageImage(Index As Integer) As Image Dim hImg As New Image($fRealPageWidth, $fRealPageHeight, Color.White) Dim hSvg As New SvgImage($fRealPageWidth, $fRealPageHeight) Paint.Begin(hsvg) $hReport.Paint(Index) Paint.End Paint.Begin(hImg) Paint.Scale($fCurScale, $fCurScale) hsvg.Paint Paint.End Return hImg End Public Sub View_Arrange() Layout Raise Change End Private Sub Layout() Dim iH, iW, iiS As Integer Dim $atmpA As New Integer[] Dim i As Integer Dim OldScale As Float = $fCurScale If Not $hReport Then Return If _RangePages.Count > 0 Then $iNbrePage = _RangePages.Count Else $iNbrePage = $iTotNbrePage Endif $iNbrePageByLine = 0 $aImageToLoad.Clear 'Dim hImg As New Image($fRealPageWidth, $fRealPageHeight) $fRealPageWidth = fReportWidthCm * Desktop.Resolution / 2.54 '* $fCurScale $fRealPageHeight = fReportHeightCm * Desktop.Resolution / 2.54 '* $fCurScale 'Print $iNbrePage 'Paint.Begin(hImg) 'Paint.Scale($fCurScale, $fCurScale) '$hReport._Layout(1) 'Paint.End '$iNbrePage = 200 'If Error Then Return Select Case $iScaleMode Case Me.Page $fCurScale = $View.ClientHeight / ($fRealPageHeight + $fRealSpace * 2) $iNbrePageByLine = 1 Case Me.DualPage $fCurScale = Min($View.ClientWidth / ($fRealPageWidth * 2 + $fRealSpace * 3), $View.ClientHeight / ($fRealPageHeight + $fRealSpace * 2)) $iNbrePageByLine = 2 Case Me.FullWidth $fCurScale = $View.ClientWidth / ($fRealPageWidth + $fRealSpace * 2) Case Custom $fCurScale = $fScale Case RealSize $fCurScale = 1 End Select If OldScale <> $fCurScale Then $bForceReload = True bNeedToLoad = True $fPageHeight = Max($fRealPageHeight * $fCurScale, 1) $fPageWidth = Max($fRealPageWidth * $fCurScale, 1) $fSpace = Max($fRealSpace * $fCurScale, 1) If Not $iNbrePageByLine Then $iNbrePageByLine = Max(Floor(($View.ClientWidth - $fSpace) / ($fPageWidth + $fSpace)), 1) $iMinLine = FindPageLineByPos($fSpace + $View.ScrollY) - 1 $iMaxLine = Max(1, FindPageLineByPos($View.ClientHeight + $View.ScrollY)) 'Print $iMinLine, $iMaxLine $iFirstPage = $iMinLine * $iNbrePageByLine $iLastPage = Min($iMaxLine * $iNbrePageByLine, $iNbrePage - 1) If $iNbrePageByLine <= $iNbrePage Then $iRealCenter = ($View.ClientWidth - ($fSpace + ($fPageWidth + $fSpace) * $iNbrePageByLine)) / 2 / $fCurScale Else $iRealCenter = 0 Endif 'Calcule des images a charger 'Print "Afficher pages de: "; $iFirstPage + 1; " à "; $iLastPage + 1 'PrintCol ' Print "Pages chargées: " ' PrintIArray($aImageLoaded) For i = 0 To $aImageLoaded.Max If $aImageLoaded[i] < $iFirstPage Or If $aImageLoaded[i] > $iLastPage + 1 Then 'Print "supprimer : " & i $cBuffer[$aImageLoaded[i]] = Null 'Print "Efface : "; $aImageLoaded[i] Else $atmpA.Add($aImageLoaded[i]) Endif Next $aImageLoaded = $atmpA 'If not forcing consign is given 'Add only the not load page to the loading queue For i = $iFirstPage To $iLastPage If Not $bForceReload And If $aImageLoaded.Exist(i + 1) Then Continue Else $aImageToLoad.Add(i + 1) Endif Next If $bForceReload Then $bForceReload = False ' Print "Pages à charger: " ' PrintIArray($aImageToLoad) ' Print If Not $Timer.Enabled And If $aImageToLoad.Count > 0 Then $aImageToLoad = $aImageToLoad.Reverse() $Timer.Start Endif $View.ResizeContents(Max($View.ClientWidth, ($fPageWidth + 2 * $fSpace)), $fSpace + Ceil($iNbrePage / $iNbrePageByLine) * ($fPageHeight + $fSpace)) '$View.ScrollX = Max($View.ClientWidth, ($fPageWidth + 2 * $fSpace)) / 8 End Public Sub View_MouseWheel() If Mouse.Control Then Stop Event Me.Scale += (Mouse.Delta * 0.1) Endif End Public Sub View_Scroll() '$aImageToLoad.Clear 'bNeedToLoad = True '$cBuffer.Clear '$aImageLoaded.Clear $Timer.Stop Layout End Private Sub FindPageLineByPos(Y As Integer) As Integer Dim yPage As Integer Dim i As Integer For i = 1 To Ceil($iNbrePage / $iNbrePageByLine) yPage = $fSpace + ($fPageHeight + $fSpace) * (i - 1) 'If i = 3 Then Stop If Y >= yPage And If Y <= (yPage + $fPageHeight + $fSpace) Then Return i Next Return -1 End Private Function Scale_Read() As Float Return $fCurScale End Private Sub Scale_Write(Value As Float) $fScale = Max(0.1, Min(2, Value)) '$cBuffer.Clear $bForceReload = True '$aImageLoaded.Clear $iScaleMode = Me.Custom Layout End Private Function Report_Read() As Report Return $hReport End Private Sub Report_Write(Value As Report) Dim hSizeParse As TSizeParse If Not Value Then Return $hReport = Value '$hReport.Orientation = Printer.Landscape Paint.Begin(htmpImage) $hReport._Layout(0) Paint.End $iTotNbrePage = $hReport.PageCount $bLayoutInProgress = $hReport._LayoutNotFinished $bLayoutEnd = False fReportWidthCm = TSizeParse[$hReport.Width].ToCm() fReportHeightCm = TSizeParse[$hReport.Height].ToCm() Layout '$view.Enabled = True $tmrRedraw.Trigger End Public Sub View_MouseUp() 'Print FindPageByPos(Mouse.y) End Private Function LayoutInProgress_Read() As Boolean Return $bLayoutInProgress End Private Sub PrintIArray(Array1 As Integer[]) Dim i As Integer For Each i In Array1 Print i; " "; Next Print "\n"; End Public Sub PrintCol() Dim o As Object Print "Collection: " For Each o In $cBuffer Print $cBuffer.Key; Next Print "\n" End Private Function ScaleMode_Read() As Integer Return $iScaleMode End Private Sub ScaleMode_Write(Value As Integer) $iScaleMode = Value $bForceReload = True Layout Raise change $tmrRedraw.Trigger End Private Function GetScale() As Float End Private Sub SetCurScale(Value As Integer) If $fCurScale <> Value Then $fCurScale = Value $bForceReload = True Endif End Private Function ShowPageNumbers_Read() As Boolean Return $bShowPageNumbers End Private Sub ShowPageNumbers_Write(Value As Boolean) $bShowPageNumbers = Value $tmrRedraw.Trigger End Public Sub Refresh() $Timer.Stop $aImageLoaded.Clear $aImageToLoad.Clear $cBuffer.Clear $bLayoutEnd = False $hReport.Refresh Me.Report = Me.Report End Private Function _GrayScale_Read() As Boolean Return $bGrayScale End Private Sub _GrayScale_Write(Value As Boolean) If $bGrayScale = Value Then Return $bGrayScale = Value $cBuffer.Clear $aImageLoaded.Clear $aImageToLoad.Clear $Timer.Stop Layout $tmrRedraw.Trigger End Private Function Range_Read() As String Return $sRange End Private Sub Range_Write(Value As String) $sRange = Value SetRangePages $Timer.Stop $aImageLoaded.Clear $aImageToLoad.Clear $cBuffer.Clear Layout End Public Sub SetRangePages() Dim ars As String[] Dim ars2 As String[] Dim s As String Dim iStart, iEnd, i As Integer _RangePages.Clear If Not $sRange Then Return ars = Split($sRange, ";") For Each s In ars If InStr(s, "-") Then ars2 = Scan(s, "*-*") iStart = CInt(Val(ars2[0])) iEnd = Val(ars2[1]) If iStart < 0 Or If iEnd < 0 Or If iEnd < iStart Then Goto Fin If _RangePages.Count > 0 And If iStart < _RangePages[_RangePages.Max] Then Goto Fin For i = iStart To iEnd _RangePages.Add(i) Next Else iStart = CInt(Val(s)) If _RangePages.Count > 0 And If iStart < _RangePages[_RangePages.Max] Then Goto Fin _RangePages.Add(iStart) Endif Next Return Catch Fin: '_RangePages.Clear End Private Function PageCount_Read() As Integer Return $iNbrePage End Private Function Count_Read() As Integer Return $iTotNbrePage End Public Sub LockLayout() $bLayoutLocked = True End Public Sub UnlockLayout() $bLayoutLocked = False End Public Sub _ForceLayout() $Timer.Stop Paint.Begin(htmpImage) $hReport.Layout() Paint.End $iTotNbrePage = $hReport.PageCount Layout End Public Sub View_MouseDown() If Mouse.Left Then $MX = Mouse.X $MY = Mouse.Y Endif End Public Sub View_MouseMove() If Mouse.Left Then 'Print $MX - Mouse.X $View.ScrollX += $MX - Mouse.X $MX = Mouse.X $View.ScrollY += $MY - Mouse.Y $MY = Mouse.Y $tmrRedraw.Trigger Endif End Private Function Settings_Read() As Variant[] Return [$fScale, CVariant($iScaleMode)] End Private Sub Settings_Write(Value As Variant[]) $fScale = Value[0] $iScaleMode = Value[1] Catch End gambas-3.16.3/comp/src/gb.report/.src/Preview/ReportViewTask.class000066400000000000000000000010541411575327000247400ustar00rootroot00000000000000' Gambas class file Inherits Task Private $hReport As Report Public Width As Integer Public Height As Integer Private Scale As Float Public Page As Integer Public Sub _new(hReport As Report, iPage As Integer, fScale As Float, W As Integer, H As Integer) $hReport = hReport Width = W Height = H Scale = fScale Page = iPage End Public Sub Main() As Variant Dim hImage As New Image(Width, Height, Color.White) Paint.Begin(hImage) Paint.Scale(Scale, Scale) $hReport.Paint(page) Paint.End Return hImage.Pixels End gambas-3.16.3/comp/src/gb.report/.src/Report.class000066400000000000000000000357141411575327000216530ustar00rootroot00000000000000' Gambas class file Create Static Export Inherits ReportSection ' For Stretch properties Public Enum None, Proportional, Fill Public Const _Properties As String = "*,-Left,-Top,-Width,-Height,Count{Range:1;256}=1,Index,Text," "Paper{Printer.A3;A4;A5;B5;Letter;Executive;Legal;Custom}=A4," "Orientation{Printer.Portrait;Landscape}=Portrait" Public Const _HiddenControls As String = "Report,ReportControl,ReportContainer,ReportFrame,ReportSection" Public Const _IsForm As Boolean = True Public Const _IsContainer As Boolean = True Public Const _IsMultiContainer As Boolean = True Public Const _DrawWith As String = "TabPanel" Public Const _DefaultEvent As String = "Open" Public _LayoutNotFinished As Boolean Public _Container As ReportSection 'Public Constants Public {Debug} As Boolean = False Public _bInExec As Boolean 'Public _cPages As New Object[] Private $aSections As New TControl[] Private iCurPage As Integer = 0 Private $iPageCount As Integer = -1 Private $bLayoutIsDirty As Boolean = True Private $fScale As Float = 1.0 Private $iIndex As Integer Private $iResolution As Integer = -1 Private $iCurSection As Integer Private $iCurPage As Integer = -1 Private $iPaper As Integer = 2 Private $iOrientation As Integer ' Private $hPrinter As New Printer As "Printer" Private $bOpened As Boolean ' Property Read Printer As Printer Property Resolution As Integer Property Scale As Float Property Read PageCount As Integer Property Count As Integer Property Index As Integer 'All ReportControl Properties Property Left As String Property Top As String Property X As String Property Y As String Property Width As String Property Height As String Property Visible As Boolean Property {Font} As Font Property Expand As Boolean Property Ignore As Boolean Property Fixed As Boolean Property Autoresize As Boolean Property Padding As ReportPadding 'All ReportFrame Properties Property Border As ReportBorder Property BackGround As ReportBrush 'All ReportContainer Properties Property Read Children As ReportControl[] Property Spacing As String Property Data As Object 'All ReportSection Properties Property Text As String Property Paper As Integer Property Orientation As Integer Public _Scale As Float Event Open Static Public Sub Main() Dim hObject As Object hObject = Application.Startup.AutoCreate() If Not hObject Is Report Then Return FPreview.Run(hObject) End Public Sub _New() Dim hSection As New ReportSection Dim TSection As New TControl object.Attach(Me, Me, "Report") '$hReportTControl.RelPage = 0 ReportControl._ObjectFromId[Me.id] = Me hSection = New ReportSection hSection._ReportId = Me.Id ReportControl._ObjectFromId[hSection.Id] = hSection TSection.Ctrl = hSection $aSections.Add(TSection) hSection.Text = ("Section ") & $aSections.Max _Container = hSection Me.paper = Printer.A4 'Me.Orientation = Printer.Landscape End Public Sub Layout() _Layout() End Public Sub _Layout(Optional iPage As Integer = -1) 'Dim iCurPage As Integer Dim TSection As TControl Dim CSection As ReportContainer Dim CBaseSection As ReportContainer Dim i As Integer If Not $bOpened Then Raise Open $bOpened = True Endif 'Print Paint.ResolutionX 'If iPage < 0 Then Return If Not $bLayoutIsDirty Then Return If _bInExec Then Return If iPage > -1 Then 'La page a déja été calculée If iPage <= $iCurPage Then Return Else 'Mise a zéro $iCurPage = -1 $iCurSection = 0 $iPageCount = 0 Me._Reset Endif 'Set execution Flag to true _bInExec = True CBaseSection = $aSections[0].Ctrl 'ReportUnits.Resolution = If($iResolution < 0, Paint.ResolutionX, $iResolution) For i = $iCurSection To $aSections.Max Tsection = $aSections[i] CSection = TSection.Ctrl CSection.Padding = CBaseSection.Padding CSection.Spacing = CBaseSection.Spacing CSection._SetUnifiedValues() ReportUnits._ReportWidth = CBaseSection._Width TSection._SetGeometry(0, 0, CSection._Width, CSection._Height) Inc $iCurPage Do CSection._SetChildGeometry(0, 0, CSection._Width, CSection._Height, $iCurPage, TSection, False) If CSection._CurItem > CSection.Children.Max Then Break Inc $iCurPage $iPageCount = $iCurPage 'Print "Fin Page " & $iCurPage If iPage > -1 And If $iCurPage > iPage Then Dec $iCurPage _LayoutNotFinished = True $iCurSection = i _bInExec = False Return Endif Loop 'Inc iCurPage Next $iPageCount = $iCurPage + 1 'Debug Me._PageChildren.Count _LayoutNotFinished = False 'ReportUnits.PageCount = $iCount $iCurSection = 0 '$iCurPage = -1 $bLayoutIsDirty = False 'End of execution _bInExec = False End Public Sub Paint(Page As Integer) Dim TSection As TControl Dim fScale As Float 'Debug "**** "; Page;; Paint.ResolutionX;; Paint.ResolutionY If Me.Parent = Null Then 'If $sOldWidth <> ((Paint.Width / $fScale) & " px") Then $bLayoutIsDirty = True 'If $sOldHeight <> ((Paint.Height / $fScale) & " px") Then $bLayoutIsDirty = True Endif ReportUnits._ReportWidth = $aSections[0].Ctrl._Width 'ReportUnits.Resolution = If($iResolution < 0, Paint.ResolutionX, $iResolution) If $bLayoutIsDirty And $iPageCount = -1 Then Layout() Paint.Save 'Set execution Flag to true _bInExec = True ' If page < 1 Or page > $iCount Then ' Error.Raise("This page does not exist") ' Endif 'Dec page 'Paint.Clip 'ReportUnits.DrawCount = 0 'Paint.Reset ' If Paint.Device Is Printer Then ' Paint.Scale(Paint.ResolutionX / 1200, Paint.ResolutionY / 1200) ' Endif ' If Paint.Device Is Printer Then ' If ReportUnits._ReportUnitsToPixels($aSections[0].Ctrl._Width) > Paint.Width Then ' ' fScale = Paint.Width / ReportUnits._ReportUnitsToPixels($aSections[0].Ctrl._Width) ' ' Paint.Scale($fScale, $fScale) ' Endif ' Endif 'Print Paint.Width 'ReportUnits.Ratio = Paint.Width / $aSections[0].Ctrl._Width ' With Paint.ClipExtents ' Debug "ClipExtents: "; .X;; .Y;; .Width;; .Height ' End With Dec page 'Me._ClipChildren(Page, 0, 0, $hReportTControl, -1, $fSCale) For Each TSection In $aSections TSection.Ctrl._PaintBefore(Page, 0, 0, TSection, -1) TSection.Ctrl._Paint(Page, 0, 0, TSection, -1) TSection.Ctrl._PaintAfter(Page, 0, 0, TSection, -1) Next 'Debug "DrawCount = "; ReportUnits.DrawCount 'End of execution _bInExec = False Paint.Restore End Private Function PageCount_Read() As Integer If $bLayoutIsDirty And Not _LayoutNotFinished Then Layout() '$iCount = -1 Return $iPageCount End Private Function Height_Read() As String Return $aSections[0].Ctrl.Height End Private Sub Height_Write(Value As String) SetHeight(Value) $iPaper = Printer.Custom End Private Sub SetHeight(Value As String) Dim TSection As TControl If $aSections[0].Ctrl.Height <> Value Then For Each TSection In $aSections TSection.Ctrl.Height = Value Next $bLayoutIsDirty = True Endif End Private Function Width_Read() As String Return $aSections[0].Ctrl.Width End Private Sub Width_Write(Value As String) SetWidth(Value) $iPaper = Printer.Custom End Private Sub SetWidth(Value As String) Dim TSection As TControl If $aSections[0].Ctrl.Width <> Value Then For Each TSection In $aSections Tsection.Ctrl.Width = Value Next $bLayoutIsDirty = True Endif End Private Function Scale_Read() As Float Return $fScale End Private Sub Scale_Write(Value As Float) $fScale = Value End Public Sub Clear() Super._Free iCurPage = 0 $iPageCount = -1 '$iResolution = Desktop.Resolution $bLayoutIsDirty = True $fScale = 1.0 'Me.Brush = Null 'Me.Border = New ReportBorder 'Me.Spacing = "0 cm" 'Me.Padding = New ReportPadding End ' Public Function Preview() FPreview.Run(Me) End ' Public Function Image(Value As String, X As String, Y As String) As ReportBrush ' ' Dim hBrush As New ReportBrush ' ' hBrush._Type = 1 ' hBrush._X = New TSizeParse(X) ' hBrush._Y = New TSizeParse(Y) ' hBrush._Image = Image.Load(Value) ' Return hBrush ' ' End ' ' Public Function LinearGradient(Colors As Integer[], Positions As Float[]) As ReportBrush ' ' Dim hBrush As New ReportBrush ' ' hBrush._Type = 2 ' 'hBrush.X = MRTools.ScanValue(X) ' 'hBrush.Y = MRTools.ScanValue(Y) ' ' hBrush._Color = Colors ' hBrush._Pos = Positions ' Return hBrush ' ' End ' Public Function RadialGradient(Colors As Integer[], Positions As Float[]) As ReportBrush ' ' Dim hBrush As New ReportBrush ' ' hBrush._Type = 3 ' 'hBrush.X = MRTools.ScanValue(X) ' 'hBrush.Y = MRTools.ScanValue(Y) ' ' hBrush._Color = Colors ' hBrush._Pos = Positions ' Return hBrush ' ' End ' Public Sub {Color}(iColor As Integer) As ReportBrush ' ' Dim hBrush As New ReportBrush ' ' hBrush._Type = 0 ' hBrush._iValue = iColor ' Return hBrush ' ' End Public Sub Refresh() $bLayoutIsDirty = True Me._Reset End Private Function Count_Read() As Integer Return $aSections.Count End Private Sub Count_Write(Value As Integer) Dim i As Integer Dim hSection As ReportSection Dim TSection As TControl If Value < 0 Then Return If Value < $aSections.Count Then $aSections.Resize(Value) Else If Value > $aSections.Count Then For i = $aSections.Count To Value - 1 TSection = New TControl hSection = New ReportSection hSection.Text = "Section " & CStr(i) hSection._ReportId = Me.Id ReportControl._ObjectFromId[hSection.Id] = hSection TSection.Ctrl = hSection hSection.Padding = Me.Padding hSection.Height = Me.Height hSection.Width = Me.Width $aSections.Add(TSection) hSection.Text = ("Section ") & $aSections.Max Next Endif End Private Function Index_Read() As Integer Return $iIndex End Private Sub Index_Write(Value As Integer) $iIndex = Max(Min($aSections.Max, Value), 0) _Container = $aSections[$iIndex].Ctrl End Public Sub _get(Index As Integer) As ReportSection Return $aSections[Index].Ctrl End Private Function Padding_Read() As ReportPadding Return $aSections[0].Ctrl.Padding End Private Sub Padding_Write(Value As ReportPadding) Dim TSection As TControl If Me.Padding <> Value Then For Each TSection In $aSections Tsection.Ctrl.Padding = Value Next Endif End Private Function Resolution_Read() As Integer Return $iResolution End Private Sub Resolution_Write(Value As Integer) $bLayoutIsDirty = True $iResolution = Max(0, Value) End Private Function Left_Read() As String Return _Container.Left End Private Sub Left_Write(Value As String) _Container.Left = Value End Private Function Top_Read() As String Return _Container.Top End Private Sub Top_Write(Value As String) _Container.Top = Value End Private Function X_Read() As String Return _Container.Left End Private Sub X_Write(Value As String) _Container.Left = Value End Private Function Y_Read() As String Return _Container.Top End Private Sub Y_Write(Value As String) _Container.Top = Value End Private Function Visible_Read() As Boolean Return _Container.Visible End Private Sub Visible_Write(Value As Boolean) _Container.Visible = Value End Private Function Font_Read() As Font Return _Container.Font End Private Sub Font_Write(Value As Font) _Container.Font = Value End Private Function Expand_Read() As Boolean Return _Container.Expand End Private Sub Expand_Write(Value As Boolean) _Container.Expand = Value End Private Function Ignore_Read() As Boolean Return _Container.Ignore End Private Sub Ignore_Write(Value As Boolean) _Container.Ignore = Value End Private Function Fixed_Read() As Boolean Return _Container.Fixed End Private Sub Fixed_Write(Value As Boolean) _Container.Fixed = Value End Private Function Autoresize_Read() As Boolean Return _Container.Autoresize End Private Sub Autoresize_Write(Value As Boolean) _Container.Autoresize = Value End Private Function Border_Read() As ReportBorder Return _Container.Border End Private Sub Border_Write(Value As ReportBorder) _Container.Border = Value End Private Function BackGround_Read() As ReportBrush Return _Container.BackGround End Private Sub BackGround_Write(Value As ReportBrush) _Container.BackGround = Value End Private Function Children_Read() As ReportControl[] Return _Container.Children End Private Function Spacing_Read() As String Return _Container.Spacing End Private Sub Spacing_Write(Value As String) Dim TSection As TControl Dim hCont As ReportContainer If Me.Spacing <> Value Then For Each TSection In $aSections hCont = Tsection.Ctrl hCont.Spacing = Value Next Endif End Private Function Data_Read() As Object Return _Container.Data End Private Sub Data_Write(Value As Object) _Container.Data = Value End Private Function Text_Read() As String Return _Container.Text End Private Sub Text_Write(Value As String) _Container.Text = Value End ''Return a new report object Public Sub Clone() As Report 'Return Object.New(Object.Type(Me)) Return Object.Class(Me).New() End Private Function Paper_Read() As Integer Return $iPaper End Private Sub Paper_Write(Value As Integer) $iPaper = Value SetPaper End Private Function Orientation_Read() As Integer Return $iOrientation End Private Sub Orientation_Write(Value As Integer) $iOrientation = Value SetPaper End Public Sub Print(Optional hPrinter As Printer) If hPrinter Then CPrint.PrintReport(Me, hPrinter) Else CPrint.PrintReport(Me) Endif End Private Sub SetPaper() Dim sPrev As String Select Case $iPaper Case Printer.A3 SetWidth("29.7cm") SetHeight("42cm") Case Printer.A4 SetWidth("21cm") SetHeight("29.7cm") Case Printer.A5 SetWidth("14.8cm") SetHeight("21cm") Case Printer.B5 SetWidth("18.7cm") SetHeight("25.7cm") Case Printer.Executive SetWidth("19.1cm") SetHeight("25.4cm") Case Printer.Legal SetWidth("21.6cm") SetHeight("35.6cm") Case Printer.Letter SetWidth("21.6cm") SetHeight("27.9cm") End Select 'Print $iOrientation, $iPaper If $iOrientation = Printer.Landscape And Not ($iPaper = Printer.Custom) Then sPrev = Me.Height SetHeight(Me.Width) SetWidth(sPrev) ' Print "width = " & Me.Width ' Print "height = " & Me.Height Endif End Public Sub _Reset() Dim hSection As TControl For Each hSection In $aSections hSection.Ctrl._Reset hSection._PageChildren = New Collection Next $iCurPage = -1 $iCurSection = 0 $iPageCount = 0 End ' Private Function Printer_Read() As Printer ' ' Return $hPrinter ' ' End ' Public Sub Print2() ' ' _Reset ' ' End gambas-3.16.3/comp/src/gb.report/.src/ReportContainer.class000066400000000000000000000720221411575327000235070ustar00rootroot00000000000000' Gambas class file Export Create Private Inherits ReportFrame Public Const _IsContainer As Boolean = True Public Const _Group As String = "Container" Public Const _Properties As String = "*,Spacing{ReportCoord},OnePiece,ForceNewPage" 'Public Const _DefaultEvent As String = "Data" Private $bDataIsResult As Boolean 'Private $iCount As Integer Property _CurItem As Integer Private $iCurItem As Integer Public _Arrangement As Integer Private $bIndexChange As Boolean Private $aChild As New ReportControl[] Private $fSpacing As Float Private $sSpacing As String Private $bRelativeSpacing As Boolean Private $aChildCopy As TControl[] Private $bOnePiece As Boolean Private $iIndex As Integer Private $hData As Object Private $fFixedSize As Float Property _Index As Integer Property DataCount As Integer Property Read Children As ReportControl[] 'Property Read Index As Integer Property Spacing As String 'Property Data As Object '<==== remettre pour automation Property Read _Spacing As Float Property Read _RelativeSpacing As Boolean Property OnePiece As Boolean Public _RealSpacing As Integer Public _NotFinished As Boolean Event BeforeData Event AfterData Public Function _Add(cControl As ReportControl) 'As TControl 'Dim hTControl As New TControl 'hTControl.Ctrl = cControl $aChild.Add(cControl) ReportControl._ObjectFromId[cControl.Id] = cControl 'Return hTControl End Public Sub _Remove(id As Integer) $aChild.Remove($aChild.Find(ReportControl._ObjectFromId[id])) End Public Sub _Free() End Private Function Children_Read() As ReportControl[] Return $aChild End Private Function Spacing_Read() As String Return $sSpacing End Private Sub Spacing_Write(Value As String) $sSpacing = Value End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, (DataIndex) As Integer) Dim hChild As TControl X += hControl.RealLeft Y += hControl.RealTop If Not hControl._PageChildren.Exist(Page) Then Return 'Me._Index = hControl.Index For Each hChild In hControl._PageChildren[Page] 'Print object.Type(hchild.Ctrl), hControl.RelPage, hControl.RealPage + hchild.RelPage, Page - 1 'If hchild.RelPage = -1 Or hControl.RealPage + hchild.RelPage = Page - 1 Then 'Inc ReportUnits.DrawCount 'hchild.Ctrl._Index = hchild.Index '$iIndex = DataIndex 'If hControl.DataIndex > -1 Then $iIndex = hControl.DataIndex Me._Index = hchild.Index If $bIndexChange Then Raise BeforeData $bIndexChange = False Endif hChild.Ctrl._Paintframe(Page, X, Y, hChild, hChild.Index) Next End Private Function _Spacing_Read() As Float Return $fSpacing End Private Function _RelativeSpacing_Read() As Boolean Return $bRelativeSpacing End Public Sub _SetUnifiedValues() Dim hChild As ReportControl Dim hSizeParse As TSizeParse Super._SetUnifiedValues() hSizeParse = New TSizeParse($sSpacing, True) $fSpacing = hSizeParse.GetValue() $bRelativeSpacing = hSizeParse.IsRelative() For Each hChild In $aChild 'hchild.SizeHint = Null hChild._SetUnifiedValues() Next End Public Sub _GenerateClones() Dim hNewTControl, hTc As TControl Dim i As Integer Dim hCont As ReportContainer Dim aNewChild As TControl[] Dim aCopy As TControl[] If $aChildCopy Then $aChild = $aChildCopy.Copy() Endif aCopy = $aChild.Copy() For Each hTc In aCopy If hTc.Ctrl Is ReportContainer Then hCont = hTc.Ctrl If hCont.Data Then aNewChild = New TControl[] For i = 0 To hCont.Data.Count - 1 hNewTControl = New TControl hNewTControl.Ctrl = hTc.Ctrl hNewTControl.DataIndex = i aNewChild.Add(hNewTControl) Next $aChild = $aChild.Insert(aNewChild, $aChild.Find(hTc)) $aChild.Remove($aChild.Find(hTc)) Endif hCont._GenerateClones Endif Next If $aChild.Count <> aCopy.Count Then $aChildCopy = aCopy End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint 'If Me._SizeInt.StoreSize Then Return Me._SizeInt 'If Me.tag = "*" Then Stop If Me._CurItem > Me.Children.max Then ' If Me Is ReportSection Then Stop Me._CurItem = 0 ' 'Me._DataIndex = 0 Endif Me._Index = DataIndex If $bIndexChange Then Raise BeforeData $bIndexChange = False Endif Select Case _Arrangement Case Arrange.Vertical Return GetVSizeInt(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) Case Arrange.Horizontal Return GetHSizeInt(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) Case Arrange.Column Return GetVSizeInt(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) Case Arrange.Fill, Arrange.None Return Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'hMyHints.Height = AvailableH 'Me._SizeInt.StoreSize = True 'Me._SizeInt = hMyHints Return hMyHints End Select Raise AfterData End Private Function GetHSizeInt((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hChild As ReportControl Dim fHeight, fWidth As Float Dim hChildHints As TSizeHint Dim hMyHints As New TSizeHint Dim fSpacing As Float 'D'abord utiliser la méthode du controle pour définir la taille hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'Puis si besoins voir le besoin des enfants If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then fSpacing = IIf(Me._RelativeSpacing, TotalWidth * Me._Spacing / 100, Me._Spacing) For Each hChild In Me.Children hChildHints = hchild._GetSizeHints(AvailableW - fWidth, AvailableH, AvailableW, AvailableH, DataIndex) fWidth += hChildHints.Width + fSpacing If fHeight < hChildHints.Height Then fHeight = hChildHints.Height 'Si l'enfant n'est pas finit alors moi non plus If hChildHints.NotFinished Then hMyHints.NotFinished = True Next If fWidth Then fWidth -= fSpacing hMyHints.Height = fHeight + Me.Padding._Height + Me.Border._Top + Me.Border._bottom hMyHints.Width = fWidth + Me.Padding._Width + Me.Border._Left + Me.Border._Right Endif Return hMyHints End Private Function GetVSizeInt((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hSizeInt As New TSizeHint Dim htmpInts As TSizeHint Dim hChild As ReportControl ''Enfants Dim fHeight, fSpacing, fWidth As Float Dim i, j As Integer Dim bExitLoop As Boolean 'If Me.Tag = "Boite 2" Then Stop 'D'abord utiliser la méthode du controle pour définir la taille hSizeInt = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) fSpacing = IIf(Me._RelativeSpacing, TotalHeight * Me._Spacing / 100, Me._Spacing) ' Si ce n'est pas fait on enregistre la place nécéssaire a tout les éléments fixes If Not $fFixedSize Then For i = 0 To Me.Children.Max hChild = Me.Children[i] htmpInts = hChild._GetSizeHints(AvailableW, AvailableH, AvailableW, AvailableH, DataIndex) If hchild.Fixed Then $fFixedSize += htmpInts.Height + fSpacing Next Endif 'La taille ne peut être inférieur a celle de tout les éléments fixes hSizeInt.Height = Max(hSizeInt.Height, $fFixedSize) 'On ajoute la taille des objets fixes précédents fHeight = $fFixedSize If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then 'On définit la taille au besoins des enfants For i = Me._CurItem To Me.Children.Max hChild = Me.Children[i] For j = hchild._DataIndex To hchild._Count - 1 'If hchild.Tag = "head" Then Print "VDataHint = " & DataIndex If hChild.Ignore Then Continue If hChild.Fixed Then Continue hchild._Index = j htmpInts = hChild._GetSizeHints(AvailableW, AvailableH - fHeight, AvailableW, AvailableH, j) 'Si l'enfant n'est pas terminé alors moi non plus If htmpInts.NotFinished Then hSizeInt.NotFinished = True 'on ajoute la hauteur aux besoins fHeight += htmpInts.Height + fSpacing If fHeight - fSpacing > AvailableH Then 'Les enfants ne loge pas ... on ne peut pas finir hSizeInt.NotFinished = True Break bExitLoop = True Endif 'On récupère la largeur de l'enfant le plus large If fWidth < htmpInts.Width Then fWidth = htmpInts.Width Next If bExitLoop Then Break Next 'on enlève le dernier espace If fHeight > 0 Then fHeight -= fSpacing 'bogue bizzard fHeight += 0.01 'On indique la place nécéssaire aux enfants+les éléments fixes hSizeInt.Height = fHeight + Me.Padding._Height + Me.Border._Top + Me.Border._Bottom hSizeInt.Width = fWidth + Me.Padding._Width + Me.Border._Left + Me.Border._Right Endif 'On ne peut pas dépasser la taille disponible (report sur prochaine page) 'FIXME: Onepiece partially desactivated If Not Me.OnePiece Then hSizeInt.Height = Min(hSizeInt.Height, AvailableH) Endif hSizeInt.Height = Min(TotalHeight, hSizeInt.Height) Me._SizeInt = hSizeInt ' If Me.Tag = "Boite 2" Then ' Print hSizeInt.Height ' Stop ' Endif 'If Me.tag = "toto" Then Stop Return hSizeInt End Public Sub _Reset() Dim hChild As ReportControl 'mise a zéro de l'index de suivit de progression Me._CurItem = 0 'Mise a zéro de l'index de reproduction Me._DataIndex = 0 'Netoyage du layout précédent 'Me._PageChildren.Clear 'Nettoyage récurssif des enfants For Each hChild In Me.Children hChild._Reset Next End Public Sub _SetChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) 'If Me.Tag = "*" Then Stop 'Print "Geometry " & Object.Type(Me) Me._Index = TCont.Index If Me._CurItem > Me.Children.max Then ' If Me Is ReportSection Then Stop Me._CurItem = 0 'Me._DataIndex = 0 Endif ' If $bIndexChange Then ' Raise BeforeData ' $bIndexChange = False ' Endif Select Case _Arrangement Case Arrange.Vertical SetVChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.Horizontal SetHChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.Column Me._SetCChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.Fill SetFChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.None SetNChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) End Select Raise AfterData End Private Sub SetVChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim aPageItems As New TControl[] ''Éléments contenu par cette page Dim hChildHints As TSizeHint ''Besoins en hauteur/largeur de l'enfant Dim hChild As ReportControl ''Un enfant reportcontrol Dim fTH As Float ''Hauteur restante Dim fSpc As Float ''Taille d'un espace 'Dim X, Y As Float ''Position Haut gauche de départ Dim hTItem As TControl ''Un objet virtuel Dim oChild As Object ''Un objet gambas générique Dim fExp As Float ''taille des objets étendus Dim iNExp As Integer ''Nombre d'objets étendus Dim ftmpHeight As Float ''Tampon pour le calcul de la taille répartie Dim ftmpY As Float ''Curseur temporaire de position haute Dim fX, fY As Float ''Tampon de position Dim i, j As Integer ''Des indexs Dim bExitLoop As Boolean ''Flag de sortie de traitement 'Dim iPrevIndex As Integer Dim bForceNewPage As Boolean ''Flag d'anticipation de sortie 1 par page Dim iPreIndex As Integer Dim bFirst As Boolean 'Détermination de la taille d'un espace 'et prise en compte de la taille relative fSpc = IIf(Me._RelativeSpacing, H * Me._Spacing / 100, Me._Spacing) 'Retrait du padding et des bordures de la hauteur de travail H = H - Me.Padding._Top - Me.Border._Top - Me.Border._Bottom - Me.Padding._Bottom 'Retrait du padding et des bordures a la largeur de travail W = W - Me.Padding._Left - Me.Border._Left - Me.Border._Right - Me.Padding._Right 'Positioinnement du curseur en haut a gauche X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top 'La hauteur restante est initialisée avec la hauteur de travail fTH = H '***************************************************************************************** 'On enumere tous les enfants a la recherche des éléments fixes 'Si des éléments fixes sont trouvés alors leur taille est déduite de la taille restante. For i = 0 To Me.Children.Max 'On récupère l'enfant hchild = Me.Children[i] 'Si l'enfant est fixe alors on le traite. If hchild.Fixed Then ' hchild._Index = TCont.Index 'on commence par récupérer la taille de l'objet hChildHints = hchild._GetSizeHints(W, fTH, W, H, TCont.Index) 'On retire la taille de l'objet a la hau'teur restante 'si l'objet n'est pas ignoré par l'agencement If Not hchild.Ignore Then fTH = fTH - hChildHints.Height - fSpc 'Si l'énumération n'est pas encore arrivée a l'index sauvegardé 'alors on ajoute directement l'élément a la page If i < Me._CurItem Then 'Génération de l'objet virtuel hTItem = New TControl 'Lier l'objet hTItem.Ctrl = hchild 'Associer sa taille hTItem.SizeHint = hChildHints hTItem.Index = TCont.Index 'L'ajouter a la page aPageItems.Add(hTItem) 'Si l'objet est étendu alors on en tient compte 'sauf si celui-ci est ignoré par l'arrangement If hchild.Expand And If Not hchild.Ignore Then fExp += hChildHints.Height Inc iNExp Endif Endif Endif Next '********************************************************************************* 'On parcour a présent le reste des éléments For i = Me._CurItem To Me.Children.Max 'On récupère l'enfant hChild = Me.Children[i] 'Je traite ici la boucle de clonage 'On définit le point de départ 'If ContPage = 1 And hchild.Tag = "**" Then Stop j = hChild._DataIndex Do '## Début boucle répétition 'On fixe l'index de données des enfants si 'on est le duplicateur If hChild._IsContainer And If hChild._count > 1 Then iPreIndex = j Else iPreIndex = TCont.Index Endif 'If hchild.tag = "**" Then Print iPreIndex 'If iPreIndex = 9 Then Stop 'on récupère la taille de l'enfant hChildHints = hchild._GetSizeHints(W, fTH, W, H, iPreIndex) 'Les éléments fixes ont déja été traités on ne tient donc pas compte de leur hauteur 'car elle a déja été déduite de l'espace restant. De meme on ignore les objets flottants (ignore=true) If Not hchild.Fixed And If Not hchild.Ignore Then 'Si l'élément ne loge pas dans la place restante ou 'si la place restante est insuffisante 'on provoque la sortie en fin de boucle If (fTH - hChildHints.Height) < 0 Or If fTH <= 0 Or bForceNewPage Then ' If hchild.Tag = "*" Then Stop If Not bFirst Then hChildHints.Height = fTH Else bForceNewPage = False hchild._DataIndex = j 'If Not bForceNewPage Then bExitLoop = True Break Endif Endif bFirst = True 'On déduit la taille de l'objet courant (et l'espace suivant) fTH = fTH - hChildHints.Height - fspc Endif 'L'objet loge dans la page, on génère donc une représentation de celui-ci 'c'est a dire un objet virtuel pointant vers celui-ci 'et apportant les informations nécéssaire au layout final 'on génère l'objet virtuel hTItem = New TControl 'On associe le controle hTItem.Ctrl = hchild 'On associe sa taille hTItem.SizeHint = hChildHints 'If hchild.Tag = "head" Then Stop 'On associe l'index de donnée hTItem.Index = iPreIndex 'TItem.Index = IIf(hchild._count > 0, j, TCont.Index) 'On l'ajoute a la page aPageItems.Add(hTItem) 'Si l'objet est étendu alors on tien compte de sa taille 'pour le calcul de l'espace réparti If hchild.Expand Then fExp += hChildHints.Height Inc iNExp Endif 'If hChildHints.NotFinished Then hchild._DataIndex = j 'un élément fixe ou ignore ne peut être répété If hchild.Fixed Or hchild.Ignore Then Break 'Sachant que hChild._count peut être à -1 on le considère dans ce cas la comme étant a 0 'si j est égale au compte alors on quitte la boucle If j >= Max(hchild._Count - 1, 0) Then If Not hChildHints.NotFinished Then hChild._DataIndex = 0 Break Endif 'sinon on incrémente le compte a condition que le dernier enfant aie finit d'afficher ses enfants If Not hChildHints.NotFinished Then Inc j 'On prévoie un sortie de boucle si l'enfant demande un affichage 1 par page If hchild.ForceNewPage Then bForceNewPage = True Loop 'Next '## fin de la boucle de répétition 'Si la sortie anticipé est demandée alors on sort de la boucle If bExitLoop Then Break If i < Me.Children.Max Then If Me.Children[i + 1] Is ReportPageBreak Then bForceNewPage = True Inc Me._CurItem Inc i Endif Endif 'Tout les objets on été répété alors on remet l'index à 0 'hchild._DataIndex = 0 'On incrémente le compteur des éléments traités Inc Me._CurItem Next If (H - fTH) > 0 Then fTH += fspc 'Heu?????? Endif '*************************************************************************** 'Pour tous les éléments fixes jusqu'à la fin du document For i = Max(Me._CurItem, 0) To Me.Children.Max hchild = Me.Children[i] If hchild.Fixed Then hChildHints = hchild._GetSizeHints(W, fTH, W, H, iPreIndex) 'on génère l'objet virtuel hTItem = New TControl 'On associe le controle hTItem.Ctrl = hchild 'On associe sa taille hTItem.SizeHint = hChildHints 'On l'ajoute a la page aPageItems.Add(hTItem) 'Si l'objet est étendu alors on tien compte de sa taille 'pour le calcul de l'espace réparti If hchild.Expand Then fExp += hChildHints.Height Inc iNExp Endif Endif Next '****************************************************************************** 'A présent tous les éléments pouvant être placé sur la page ont été marqué. 'On peut donc procéder a la mise en forme de ceux-ci ftmpY = Y 'On définit la position de départ If iNExp Then fExp = (fExp + fTH) / iNExp Endif For i = 0 To aPageItems.Max 'on récupère l'objet virtuel hTItem = aPageItems[i] 'on récupère l'instance de l'objet réel ochild = hTItem.Ctrl 'Si l'objet est étendu alors on calcul sa hauteur 'Un objet flottant ne peut pas être étendu If Not oChild.Ignore And If ochild.Expand Then 'Calcul de la taille répartie ftmpHeight = fExp Else 'Si l'objet n'est pas étendu alors sa taille est celle demandée par celui-ci ftmpHeight = hTItem.SizeHint.Height Endif 'oChild._Index = hTItem.Index 'Traitement des objets ignoré 'Les propriété de taille sont celle fournie par l'objet If oChild.Ignore Then 'Calcul de la position de l'objet 'si sa position est relative (%) alors on fait le ratio a partir de la largeur ou de la hauteur 'sinon on utilise la position fournie par l'objet fX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) fY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) 'Fixer la position de l'objet hTItem._SetGeometry(fX, fY, hTItem.SizeHint.Width, ftmpHeight) 'L'objet flottant peut être un conteneur il faut donc demander aussi a ses enfants de s 'organiser oChild._SetChildGeometry(fX, fY, hTItem.SizeHint.Width, ftmpHeight, ContPage, hTItem, bInFixed Or Me.Fixed) Else 'Fixer la position de l'objet hTItem._SetGeometry(X, fTmpY, W, ftmpHeight) 'L'objet flottant peut être un conteneur il faut donc demander aussi a ses enfants de s 'organiser oChild._SetChildGeometry(X, fTmpY, W, ftmpHeight, ContPage, hTItem, bInFixed Or Me.Fixed) 'on incrémente la position verticale de l'objet 'pour définir sa place sur la page relativement aux autres éléments fTmpY += ftmpHeight + fspc Endif 'Si l'objet est un conteneur alors il faut vérifier si il a finit d'être traité If oChild Is ReportContainer Then 'If oChild._NotFinished Then Me.NotFinished = True 'Si son traitement n'est pas terminé alors on trouve 'sa position dans la liste des enfant et on l'assigne a l'index de traitement 'si sa position est > a l'index courant If ochild._CurItem <= oChild.Children.Max Then j = Me.Children.Find(oChild) Me._CurItem = Min(Me._CurItem, j) Endif 'Si on est dans la lignée d'un conteneur fixe on incrémente pas la lecture des enfants 'En clair ce sont toujours les mêmes éléments qui apparaitrons If bInFixed Then ochild._CurItem = 0 Endif Next 'On ajoute cette page au dossier du conteneur TCont._PageChildren[ContPage] = aPageItems End Private Function SetFChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim hChild As ReportControl Dim hTItem As TControl Dim hChildHints As TSizeHint Dim aPageItems As New TControl[] Dim oChild As Object Dim j As Integer X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top W = W - Me.Padding._Left - Me.Padding._Right - Me.Border._Left - Me.Border._Right H = H - Me.Padding._Top - Me.Padding._Bottom - Me.Border._Top - Me.Border._Bottom For Each hChild In Me.Children hChildHints = hchild._GetSizeHints(W, H, W, H) hTItem = New TControl hTItem.Ctrl = hchild hTItem.SizeHint = hChildHints Inc Me._CurItem aPageItems.Add(hTItem) Next For Each oChild In aPageItems oChild._Index = hTItem.Index hTItem._SetGeometry(X, Y, W, H) hChild._SetChildGeometry(X, Y, W, H, ContPage, hTItem, bInFixed Or Me.Fixed) If oChild Is ReportContainer Then If oChild._CurItem < oChild.Children.count Then 'Print ochild.tag & " pas fini" j = Me.Children.Find(oChild) Me._CurItem = Min(j, Me._CurItem) Endif 'ne pas incrémenter la lecture des enfants si je suis dans un élément fixe If bInFixed Then ochild._CurItem = 0 End If Next TCont._PageChildren[ContPage] = aPageItems End Private Function SetNChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim hChild As ReportControl Dim ochild As Object Dim hTItem As TControl Dim hChildHints As TSizeHint Dim aPageItems As New TControl[] Dim iX, iY As Integer Dim J As Integer X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top W = W - Me.Padding._Left - Me.Padding._Right - Me.Border._Left - Me.Border._Right H = H - Me.Padding._Top - Me.Padding._Bottom - Me.Border._Top - Me.Border._Bottom For Each hChild In Me.Children hChildHints = hchild._GetSizeHints(W, H, W, H) hTItem = New TControl hTItem.Ctrl = hchild hTItem.SizeHint = hChildHints Inc Me._CurItem aPageItems.Add(hTItem) Next For Each hTItem In aPageItems oChild = hTItem.Ctrl hChildHints = hTItem.SizeHint iX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) iY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) oChild._Index = hTItem.Index hTItem._SetGeometry(iX, iY, hChildHints.Width, hChildHints.Height) hChild._SetChildGeometry(iX, iY, hChildHints.Width, hChildHints.Height, ContPage, hTItem, bInFixed Or Me.Fixed) If oChild Is ReportContainer Then If oChild._CurItem < oChild.Children.count Then j = Me.Children.Find(oChild) Me._CurItem = Min(j, Me._CurItem) Endif 'ne pas incrémenterla lecture des enfants si je suis dans un élément fixe If bInFixed Then ochild._CurItem = 0 End If Next TCont._PageChildren[ContPage] = aPageItems End Private Sub SetHChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim aPageItems As New TControl[] ''Éléments contenu par cette page Dim hChildHints As TSizeHint ''Besoins en hauteur/largeur de l'enfant Dim hChild As ReportControl ''Un enfant reportcontrol Dim oChild As Object Dim TW, fWidth, fSpc As Float Dim fExp As Float Dim iNExp As Integer Dim i, j As Integer Dim fTmpX, fX, fY As Float Dim hTItem As TControl 'Initialisation des variables fSpc = IIf(Me._RelativeSpacing, H * Me._Spacing / 100, Me._Spacing) 'ME._Spacing 'On retire les marges a la hauteur et les bordures H = H - Me.Padding._Top - Me.Padding._Bottom - Me.Border._Top - Me.Border._Bottom 'Print H 'on retire a la largeur les paddings (et les bordure ?) W = W - Me.Padding._Left - Me.Padding._Right - Me.Border._Left - Me.Border._Right 'On positionne le curseur de position au coin a gauche X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top 'On initialise la largeur totale avec la largeur disponible TW = W For i = 0 To Me.Children.Max hChild = Me.Children[i] 'hchild._Index = IIf(Me.DataCount > 0, j, TCont.Index) hChild._Index = TCont.Index hChildHints = hChild._GetSizeHints(w, h, w, h, TCont.Index) 'Si l' éléments ne loge pas on quitte et on oublit If TW - hChildHints.Width < 0 Then Break 'Si l'élément n'est pas ignoré If Not hChild.Ignore Then TW = TW - hChildHints.Width - fSpc 'Si il est étendu on en tient compte If hChild.Expand Then Inc iNExp fExp += hChildHints.Width Endif Endif 'On ajoute l'élément a la page hTItem = New TControl hTItem.Ctrl = hChild hTItem.SizeHint = hChildHints hTItem.Index = TCont.Index aPageItems.Add(hTItem) Next 'De toute les façon je ne cherche pas a parcourir tout 'Les objet donc j'indique que j'ai tout vu Me._CurItem = Me.Children.count If (W - TW) > 0 Then TW += fspc Endif 'On va mettre en page a présent 'On définit la taille des éléments étendus If iNexp Then fExp = (TW + fExp) / iNexp Endif fTmpX = X For Each hTItem In aPageItems oChild = hTItem.Ctrl 'Si l'élément est étendu on lui applique la taille répartie If oChild.Expand And Not oChild.Ignore Then 'If Me.Tag = "*" Then Stop fWidth = fExp Else 'sinon il maintien sa taille fWidth = hTItem.SizeHint.Width Endif 'oChild._Index = hTItem.Index If Not oChild.Ignore Then hTItem._SetGeometry(fTmpX, Y, fWidth, H) oChild._SetChildGeometry(fTmpX, Y, fWidth, H, ContPage, hTItem, bInFixed Or Me.Fixed) fTmpX += fWidth + fspc Else fX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) fY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) hTItem._SetGeometry(fX, fY, fWidth, hTItem.SizeHint.Height) oChild._SetChildGeometry(fX, fY, fWidth, hTItem.SizeHint.Height, ContPage, hTItem, bInFixed Or Me.Fixed) Endif If oChild Is ReportContainer Then If oChild._CurItem <= oChild.Children.max Then 'Print ochild.tag & " pas fini" j = Me.Children.Find(oChild) Me._CurItem = Min(Me._CurItem, j) Endif 'ne pas incrémenter la lecture des enfants si je suis dans un élément fixe If bInFixed Then ochild._CurItem = 0 Endif Next 'On ajoute la page a la collection de page du conteneur TCont._PageChildren[ContPage] = aPageItems End Private Function DataCount_Read() As Integer Return Me._Count End Private Sub DataCount_Write(Value As Integer) 'If value = 0 Then value = 1 Me._Count = Value End ' Public Function _GetIndex() As Integer ' ' If Me._Count > 0 Then 'Si c'est moi le répéteur alors je fournis mon index ' Return Me._Index ' Else ' Try Return Me.Parent._GetIndex 'Sinon je ontinue a remonter la lignée jusqu'au répéteur ' Endif ' ' End Private Function _Index_Read() As Integer Return Super._Index End Private Sub _Index_Write(Value As Integer) If Super._Index = Value And If Super._Index > 0 Then Return $bIndexChange = True Super._Index = Value End Private Function _CurItem_Read() As Integer Return $iCurItem End Private Sub _CurItem_Write(Value As Integer) 'Print "_CurItem = " & Value 'If Me.tag = "Boite 1" And Value = 0 Then Stop 'If Me.tag = "Boite 1" And ContPage = 1 Then Print "CurItem: " & Me._CurItem $iCurItem = Value End Private Function OnePiece_Read() As Boolean Return $bOnePiece End Private Sub OnePiece_Write(Value As Boolean) $bOnePiece = Value End Public Sub _SetCChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) End gambas-3.16.3/comp/src/gb.report/.src/ReportDrawingArea.class000066400000000000000000000033711411575327000237520ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Cached" Public Const _Similar As String = "ReportImage" Public Const _DefaultEvent As String = "Draw" Property Cached As Boolean Private $bCached As Boolean Private $iOldResolution As Integer Event Layout(Width As Integer, Height As Integer, Index As Integer) Event Draw(Width As Integer, Height As Integer, Index As Integer) Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim hRect As Rect Dim iX, iY, iW, iH As Integer Dim hImg As Image iX = (x + hControl.RealLeft + ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Border._Left)) iY = (y + hControl.RealTop + ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Border._Top)) iW = (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) iH = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) Paint.Save If $bCached Then If $iOldResolution <> Paint.ResolutionX Or If hControl.Cache = Null Then $iOldResolution = Paint.ResolutionX hImg = New Image(iW, iH, Color.Transparent) Paint.Begin(hImg) Raise Draw(iW, iH, DataIndex) Paint.End hControl.Cache = himg Else If hControl.cache = Null Then Stop hImg = hControl.Cache Endif Draw.Image(hImg, iX, iy) Else Paint.Translate(iX, iY) Raise Draw(iW, iH, DataIndex) Paint.Translate(- iX, - iY) Endif Paint.Restore End Private Function Cached_Read() As Boolean Return $bCached End Private Sub Cached_Write(Value As Boolean) $bCached = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportFrame.class000066400000000000000000000256561411575327000226320ustar00rootroot00000000000000' Gambas class file Export Create Private Inherits ReportControl ' Static Private iLevel As Integer Public Const _Properties As String = "*,Border,Background{ReportBrush}" ' Private $fLeftBorderWidth As Float ' Private $fRightBorderWidth As Float ' Private $fTopBorderWidth As Float ' Private $fBottomBorderWidth As Float Private $hBorder As New ReportBorder Private $hBackGround As ReportBrush Property Border As ReportBorder Property BoxShadow As ReportBoxShadow Private $hBoxShadow As New ReportBoxShadow Property BackGround As ReportBrush 'Property Read _BorderWidth As Float Private Function Border_Read() As ReportBorder Return $hBorder End Private Sub Border_Write(Value As ReportBorder) $hBorder = Value End Public Sub _PaintBefore((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) Dim X1, Y1, X2, Y2 As Float Dim iBorder As Integer Dim hShadowActive As Boolean = $hBoxShadow._Active Dim himgShadow As Image Dim fSpread As Float Dim fBlur As Float Dim fbx As Float Dim fby As Float Dim TL1, TL2, TR1, TR2, BR1, BR2, BL1, BL2 As Float 'If Me.tag = "*" Then Stop X1 = (x + hControl.RealLeft) Y1 = (y + hControl.RealTop) X2 = (x + hControl.RealLeft + hControl.RealWidth) Y2 = (y + hControl.RealTop + hControl.RealHeight) 'Clipping paint.save ' Print String(iLevel, " ") & "sauvé" ' Inc iLevel ' Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1) ' paint.Clip(True) If Report.Debug Then Paint.Brush = Paint.Color(Color.Green) 'Paint.Dash = ReportUnits.GetBorder(Line.Dot) Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1) Paint.Stroke Else 'If $hBorder.Shadow.Style > ReportShadowStyle.None Then PaintShadow(X1, Y1, hControl.RealWidth, hControl.RealHeight, $hBorder.RoundCorner._Active) If $hBorder.RoundCorner._Active Then TL1 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopLeft1) TR1 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopRight1) BR1 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight1) BL1 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomLeft1) TL2 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopLeft2) TR2 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopRight2) BR2 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight2) BL2 = ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomLeft2) If hShadowActive Then fbx = ReportUnits._ReportUnitsToPixels($hBoxShadow._XOffset) fby = ReportUnits._ReportUnitsToPixels($hBoxShadow._YOffset) fSpread = ReportUnits._ReportUnitsToPixels($hBoxShadow._Spread) If $hBoxShadow._Blur > 0 Then fBlur = ReportUnits._ReportUnitsToPixels($hBoxShadow._Blur) himgShadow = New Image(hControl.RealWidth + fSpread * 2 + fBlur * 2, hControl.RealHeight + fSpread * 2 + fBlur * 2, Color.Transparent) Paint.Begin(himgShadow) Paint.Brush = Paint.Color($hBoxShadow.Color) RoundRect(fBlur, fBlur, Paint.Width - fBlur * 2, Paint.Height - fBlur * 2, [TL1, TR1, BR1, BL1], [TL2, TR2, BR2, BL2]) Paint.Fill Paint.End himgShadow.Fuzzy(fBlur) Draw.Image(himgShadow, X1 + fbx - fSpread - fBlur, Y1 + fby - fSpread - fBlur) Else Paint.Brush = Paint.Color($hBoxShadow.Color) RoundRect(X1 + fbx - fSpread, Y1 + fby - fSpread, hControl.RealWidth + fSpread * 2, hControl.RealHeight + fSpread * 2, [TL1, TR1, BR1, BL1], [TL2, TR2, BR2, BL2]) Paint.Fill Endif Endif iBorder = ReportUnits._ReportUnitsToPixels($hBorder._Top) RoundRect(X1 + iBorder, Y1 + iBorder, hControl.RealWidth - iBorder * 2, hControl.RealHeight - iBorder * 2, [TL1, TR1, BR1, BL1], [TL2, TR2, BR2, BL2]) Else If hShadowActive Then fbx = ReportUnits._ReportUnitsToPixels($hBoxShadow._XOffset) fby = ReportUnits._ReportUnitsToPixels($hBoxShadow._YOffset) fSpread = ReportUnits._ReportUnitsToPixels($hBoxShadow._Spread) If $hBoxShadow._Blur > 0 Then fBlur = ReportUnits._ReportUnitsToPixels($hBoxShadow._Blur) himgShadow = New Image(hControl.RealWidth + fSpread * 2 + fBlur * 2, hControl.RealHeight + fSpread * 2 + fBlur * 2, Color.Transparent) Paint.Begin(himgShadow) Paint.Brush = Paint.Color($hBoxShadow.Color) Paint.rectangle(fBlur, fBlur, Paint.Width - fBlur * 2, Paint.Height - fBlur * 2) Paint.Fill Paint.End himgShadow.Fuzzy(fBlur) Draw.Image(himgShadow, X1 + fbx - fSpread - fBlur, Y1 + fby - fSpread - fBlur) Else Endif Paint.Brush = Paint.Color($hBoxShadow.Color) Paint.Rectangle(X1 + fbx - fSpread, Y1 + fby - fSpread, hControl.RealWidth + fSpread * 2, hControl.RealHeight + fSpread * 2) Paint.Fill Endif Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1) Endif If Me.BackGround = Null Then paint.Clip Return Else paint.Clip(True) Endif paint.Brush = Me.BackGround._PaintBrush(X1, Y1, X2, Y2) Paint.Fill Endif End Private Sub PaintBoxShadow(X As Integer, Y As Integer, Width As Integer, Height As Integer) End Public Sub _PaintFrame((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) _PaintBefore(Page, X, Y, hControl, DataIndex) Me._Paint(Page, X, Y, hControl, DataIndex) _PaintAfter(Page, X, Y, hControl, DataIndex) End Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) Dim X1, Y1, X2, Y2 As Float 'Dim fWidth As Float Dim fTopWidth, fBottomWidth, fLeftWidth, fRighWidth As Float 'Fin du clipping paint.Restore X1 = (x + hControl.RealLeft) Y1 = (y + hControl.RealTop) X2 = (x + hControl.RealLeft + hControl.RealWidth) Y2 = (y + hControl.RealTop + hControl.RealHeight) 'If Me.Tag = "**" Then Stop If $hBorder.RoundCorner._Active Then Paint.AntiAlias = True fLeftWidth = ReportUnits._ReportUnitsToPixels($hBorder._Left) / 2 paint.LineWidth = fLeftWidth * 2 paint.Brush = $hBorder.Left.Brush._PaintBrush(X1, Y1, X2, Y2) ' RoundRect(Paint.LineWidth / 2, Paint.LineWidth / 2, Paint.Width - Paint.LineWidth, Paint.Height - Paint.LineWidth, aX, aY) RoundRect(X1 + fLeftWidth, Y1 + fLeftWidth, hControl.RealWidth - fLeftWidth * 2, hControl.RealHeight - fLeftWidth * 2, [ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopLeft1), ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopRight1), ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight1), ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomLeft1)], [ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopLeft2), ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._TopRight2), ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomRight2), ReportUnits._ReportUnitsToPixels($hBorder.RoundCorner._BottomLeft2)]) paint.Stroke Else 'Paint.AntiAlias = False fLeftWidth = ReportUnits._ReportUnitsToPixels($hBorder._Left) fRighWidth = ReportUnits._ReportUnitsToPixels($hBorder._Right) fTopWidth = ReportUnits._ReportUnitsToPixels($hBorder._Top) fBottomWidth = ReportUnits._ReportUnitsToPixels($hBorder._Bottom) 'If $hBorder.Style <> Line.None Then 'fWidth = ReportUnits._ReportUnitsToPixels($fBorderWidth) 'Paint.Brush = Paint.Color($hBorder.Brush._iValue) If fTopWidth > 0 Then paint.Brush = $hBorder.Top.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X1, Y1, X2 - X1, fTopWidth) paint.Fill Endif If fRighWidth > 0 Then paint.Brush = $hBorder.Right.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X2 - fRighWidth, Y1, fRighWidth, Y2 - Y1) paint.Fill Endif If fBottomWidth > 0 Then paint.Brush = $hBorder.Bottom.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X1, Y2 - fBottomWidth, X2 - X1, fBottomWidth) paint.Fill Endif If fLeftWidth > 0 Then paint.Brush = $hBorder.Left.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X1, Y1, fLeftWidth, Y2 - Y1) paint.Fill Endif 'Paint.AntiAlias = True ' Endif 'Dec iLevel 'Print String(iLevel, " ") & "restoré" 'Endif End Private Function BackGround_Read() As ReportBrush Return $hBackGround End Private Sub BackGround_Write(Value As ReportBrush) $hBackGround = Value End Public Sub _SetUnifiedValues() Super._SetUnifiedValues() $hBorder._SetUnifiedValues $hBoxShadow._SetUnifiedValues End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As TSizeHint hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) If hMyHints.Height <= 0 Then hMyHints.Height = Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom 'hMyHints.Height += Abs($hBoxShadow._YOffset) + $hBoxShadow._Spread + $hBoxShadow._Blur Endif If hMyHints.Width <= 0 Then hMyHints.Width = Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right 'hMyHints.Width += Abs($hBoxShadow._xOffset) + $hBoxShadow._Spread + $hBoxShadow._Blur Endif Return hMyHints End Static Private Sub RoundRect(x As Float, y As Float, w As Float, h As Float, Radius_X As Float[], radius_y As Float[]) Dim ARC_TO_BEZIER As Float = 0.55228475 Dim c1, c2 As Float Dim i As Integer For i = 0 To 3 If radius_x[i] > w - radius_x[i] Then radius_x[i] = w / 2 Endif If radius_y[i] > h - radius_y[i] Then radius_y[i] = h / 2 Endif Next 'approximate(quite Close )the arc using a bezier curve ' A**********B ' H C ' * * ' * * ' G D ' F**********E '-->A Paint.MoveTo(x + radius_x[0], y) '-->B Paint.LineTo(x + w - radius_x[1], y) '-->C c1 = ARC_TO_BEZIER * radius_x[1] c2 = ARC_TO_BEZIER * radius_y[1] Paint.RelCurveTo(c1, 0.0, radius_x[1], c2, radius_x[1], radius_y[1]) '-->D Paint.LineTo(x + w, y + h - radius_y[2]) '-->E c1 = ARC_TO_BEZIER * radius_x[2] c2 = ARC_TO_BEZIER * radius_y[2] Paint.RelCurveTo(0.0, c2, c1 - radius_x[2], radius_y[2], - radius_x[2], radius_y[2]) '-->F Paint.LineTo(x + radius_x[3], y + h) '-->G c1 = ARC_TO_BEZIER * radius_x[3] c2 = ARC_TO_BEZIER * radius_y[3] Paint.RelCurveTo(- c1, 0, - radius_x[3], - c2, - radius_x[3], - radius_y[3]) '-->H Paint.LineTo(x, y + radius_y[0]) '-->A c1 = ARC_TO_BEZIER * radius_x[0] c2 = ARC_TO_BEZIER * radius_y[0] Paint.relcurveto(0.0, - c2, radius_x[0] - c1, - radius_y[0], radius_x[0], - radius_y[0]) 'Paint.closepath() End Private Function BoxShadow_Read() As ReportBoxShadow Return $hBoxShadow End Private Sub BoxShadow_Write(Value As ReportBoxShadow) $hBoxShadow = Value End Public Sub _Free() End gambas-3.16.3/comp/src/gb.report/.src/ReportGridView.class000066400000000000000000000071341411575327000233070ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*" Public Const _Similar As String = "ReportTextLabel" Public Const _DefaultEvent As String = "Data" Property Read Columns As _ReportGridViewColumns Property Read Rows As _ReportGridViewRows 'Property Autoresize As Boolean Private $bAutoresize As Boolean Private $hColumns As _ReportGridViewColumns Private $hRows As _ReportGridViewRows Event Data(Row As Integer, Column As Integer) Public Sub _new() $hColumns = New _ReportGridViewColumns As "Columns" $hRows = New _ReportGridViewRows As "Rows" End Public Sub _SetUnifiedValues() Dim i As Integer Super._SetUnifiedValues $hRows._SetUnifiedValues() $hColumns._SetUnifiedValues() ' For i = 0 To $hColumns.Max ' $hColumns[i]._Width = TSizeParse[$hColumns[i].Width].ToCm() ' Next ' ' For i = 0 To $hRows.Max ' $hRows[i]._Height = TSizeParse[$hRows[i].Height].ToCm() ' Next End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint Dim fWidth As Float Dim i As Integer 'On Récupère la taille standard hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) If hMyHints.Width = 0 Then hMyHints.Width = 1 If hMyHints.Height = 0 Then hMyHints.Height = 5 If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then 'Largeur ' For i = 0 To $hColumns.Max ' ' fWidth += $hColumns[i].Width ' ' Next Endif Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim iColWidth As Float = ReportUnits._ReportUnitsToPixels(Me.Rows._Width) Dim iRowHeight As Float = ReportUnits._ReportUnitsToPixels(Me.Rows._Height) Dim i, j As Integer Dim fCurY, fCurX, fH, fRow As Float Dim fRowWidth As Float = ReportUnits._ReportUnitsToPixels($hRows._Width) Dim fColHeight As Float = ReportUnits._ReportUnitsToPixels($hColumns._Height) Dim fX As Float = X + hControl.RealLeft + ReportUnits._ReportUnitsToPixels(Me.Border._Left) Dim fY As Float = Y + hControl.RealTop + ReportUnits._ReportUnitsToPixels(Me.Border._Top) 'Paint.Brush = Paint.Color(Color.Red) 'Paint.Rectangle(X + hControl.RealLeft, Y + hControl.RealTop, hControl.RealWidth, hControl.RealHeight) 'Paint.Fill Paint.LineWidth = ReportUnits._ReportUnitsToPixels(Me.Border._Top) fCurY = fY + fColHeight For i = 0 To $hRows.Max Paint.MoveTo(fX, fCurY) Paint.LineTo(fX + hControl.RealWidth, fCurY) fCurY += ReportUnits._ReportUnitsToPixels($hRows[i]._Height) Next fCurX = fX + fRowWidth For i = 0 To $hColumns.max Paint.MoveTo(fCurX, fY) Paint.LineTo(fCurX, fY + hControl.RealHeight) fCurX += ReportUnits._ReportUnitsToPixels($hColumns[i]._Width) Next Paint.Stroke fCurY = fY + fColHeight For i = 0 To $hRows.Max fH = ReportUnits._ReportUnitsToPixels($hRows[i]._Height) Paint.Text($hRows[i].Text, fX, fCurY, fRowWidth, fH, Align.Right) Paint.Fill fCurY += fH Next End Private Function Columns_Read() As _ReportGridViewColumns Return $hColumns End Private Function Rows_Read() As _ReportGridViewRows Return $hRows End Private Function Autoresize_Read() As Boolean Return $bAutoresize End Private Sub Autoresize_Write(Value As Boolean) $bAutoresize = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportGridView/000077500000000000000000000000001411575327000222535ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/ReportGridView/_ReportGridViewCell.class000066400000000000000000000000241411575327000271510ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report/.src/ReportGridView/_ReportGridViewColumn.class000066400000000000000000000002541411575327000275340ustar00rootroot00000000000000' Gambas class file Property Width As String Public _Width As Float Private Function Width_Read() As String End Private Sub Width_Write(Value As String) End gambas-3.16.3/comp/src/gb.report/.src/ReportGridView/_ReportGridViewColumns.class000066400000000000000000000034071411575327000277220ustar00rootroot00000000000000' Gambas class file Property Count As Integer Property Read max As Integer Property Width As String Private $sWidth As String Property Height As String Private $sHeight As String Public _Height As Float Private $aColumns As New _ReportGridViewColumn[] Event _Foo Public Sub _SetUnifiedValues() Dim hCol As _ReportGridViewColumn If $sHeight Then _Height = TSizeParse[$sHeight].ToCm() Else _Height = ReportUnits._PixelsToReportUnits(GetView().Font.TextHeight("")) Endif For Each hcol In $aColumns If hcol.Width Then hcol._Width = TSizeParse[hcol.Width].ToCm() Else 'TODO: Calcul de la largeur des colonnes hcol._Width = 2 Endif Next End Private Function Count_Read() As Integer Return $aColumns.Max End Public Function _get(Index As Integer) As _ReportGridViewColumn Return $aColumns[Index] End Private Sub Count_Write(Value As Integer) Dim hRow As _ReportGridViewColumn Dim i As Integer If Value = $aColumns.Count Then Return If Value > $aColumns.Count Then For i = $aColumns.Count To Value hRow = New _ReportGridViewColumn $aColumns.Add(hRow) Next Else $aColumns.Remove(Value, $aColumns.Count - Value) Endif End Private Function max_Read() As Integer Return $aColumns.Max End Private Function Width_Read() As String If $aColumns.Count Then Return $aColumns[0].Width Endif End Private Sub Width_Write(Value As String) Dim hCol As _ReportGridViewColumn For Each hcol In $aColumns hcol.Width = Value Next End Private Function Height_Read() As String Return $sHeight End Private Sub Height_Write(Value As String) $sHeight = Value End Private Sub GetView() As ReportGridView Return Object.Parent(Me) End gambas-3.16.3/comp/src/gb.report/.src/ReportGridView/_ReportGridViewRow.class000066400000000000000000000011071411575327000270440ustar00rootroot00000000000000' Gambas class file Property Height As String Property Text As String Property _Height As Float Public _Row As Integer Event _Foo Private Function Height_Read() As String End Private Sub Height_Write(Value As String) End Private Function Text_Read() As String Return GetView()._GetRowText(_Row) End Private Sub Text_Write(Value As String) End Private Function _Height_Read() As Float Return GetView()._GetHeight() End Private Sub _Height_Write(Value As Float) End Private Sub GetView() As _ReportGridViewRows Return Object.Parent(Me) Endgambas-3.16.3/comp/src/gb.report/.src/ReportGridView/_ReportGridViewRows.class000066400000000000000000000050621411575327000272330ustar00rootroot00000000000000' Gambas class file Property Count As Integer Property Read Max As Integer Private $cHeight As Collection Private $aHeight As Integer[] Private $cText As Collection Private $nRows As Integer Property Height As String Property Width As String Private $sHeight As String Private $sWidth As String Private $fWidth As Float Private $fHeight As Float Property Read _Height As Float Property Read _Width As Float Event _Foo Public Sub _SetUnifiedValues() Dim hView As ReportGridView = GetView() If $sHeight Then $fHeight = TSizeParse[$sHeight].ToCm() Else $fHeight = ReportUnits._PixelsToReportUnits(hView.Font.Height + 4) Endif If $sWidth Then $fWidth = TSizeParse[$sWidth].ToCm() Else $fWidth = ReportUnits._PixelsToReportUnits(hView.Font.TextWidth("9") * (1 + CInt(Log10(Max(1, $nRows)))) + 8) Endif End Public Sub _GetHeight() As Float Return $fHeight End Public Sub _GetRowText(iRow As Integer) As String Dim sText As String If $cText Then sText = $cText[iRow] If Not sText Then sText = CStr(iRow + 1) Return sText End Public Sub _SetRowText(iRow As Integer, sText As String) Dim W As Float If Not $cText Then $cText = New Collection $cText[iRow] = sText If sText Then W = ReportUnits._PixelsToReportUnits(GetView().Font.TextWidth(sText) + 8) If W > _Width_Read() Then $fWidth = W Endif End Public Function _get(Index As Integer) As _ReportGridViewRow Dim hRow As New _ReportGridViewRow As "Row" hRow._Row = Index Return hRow End Private Function Count_Read() As Integer Return $nRows End Private Sub Count_Write(Value As Integer) Dim hView As ReportGridView = GetView() Dim iRow As Integer If Value = $nRows Then Return $nRows = Value If $aHeight Then While $aHeight.Count If $aHeight[$aHeight.Max] < $nRows Then Break iRow = $aHeight[$aHeight.Max] $cHeight.Remove(iRow) $aHeight.Remove($aHeight.Max) 'If hView.Mode = Select.Multiple Then $hSel.UnSelect(iRow) Wend Endif End Private Function Max_Read() As Integer Return $nRows - 1 End Private Sub GetView() As ReportGridView Return Object.Parent(Me) End Private Function Height_Read() As String Return $sHeight End Private Sub Height_Write(Value As String) $sHeight = Value End Private Function _Height_Read() As Float Return $fHeight End Private Function _Width_Read() As Float Return $fWidth End Private Function Width_Read() As String Return $sWidth End Private Sub Width_Write(Value As String) $sWidth = value End gambas-3.16.3/comp/src/gb.report/.src/ReportHBox.class000066400000000000000000000004531411575327000224240ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*" Public Const _Similar As String = "ReportVBox" Public Const _DefaultArrangement As String = "H" Public Sub _new() Super._Arrangement = Arrange.Horizontal End Public Sub _Free() Super._Free End gambas-3.16.3/comp/src/gb.report/.src/ReportImage.class000066400000000000000000000123311411575327000226040ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Stretch{Report.None;Proportional;Fill}=Proportional,Alignment{Align.*},Image{Image}" Public Const _Similar As String = "ReportTextLabel" Public Const _DefaultEvent As String = "Data" Private $iAlignment As Integer = Align.Normal Private $hPic As Image Private $iStretchMode As Integer = Report.Proportional Property Alignment As Integer Property Image As Image Property Stretch As Integer Public Data As Image Event Data(Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint Dim hPic As Image hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If $hpic Then hpic = $hpic Else Raise Data(DataIndex) hpic = Data Endif If hpic Then hMyHints.Width = Max(hMyHints.Width, Me.Padding._Left + ReportUnits.UnitToCm(hpic.Width, "px") + Me.Padding._Right) hMyHints.Height = Max(hMyHints.Width, Me.Padding._Top + ReportUnits.UnitToCm(hpic.Height, "px") + Me.Padding._Bottom) Endif Endif Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim ix, iy As Float Dim hBrush As PaintBrush Dim hPic As Image Dim w, h As Float ix = x + hControl.RealLeft '+ ReportUnits._ReportUnitsToPixels(Me.Padding._Left) iy = y + hControl.RealTop '+ ReportUnits._ReportUnitsToPixels(Me.Padding._Top) If Not $hpic Then Raise Data(DataIndex) hpic = Data If Not hPic Then Return Else hPic = $hpic Endif '$hPic = $hPic.Stretch(hControl.RealWidth, hControl.RealHeight) hBrush = Paint.Image(hpic) If Me.Stretch = Report.Fill Then iX += ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Border._Left) iY += ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Border._Top) w = (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) h = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) hBrush.Translate(ix, iy - 1) hBrush.Scale(w / hPic.Width, h / hPic.Height) Paint.Brush = hBrush Paint.Rectangle(ix, iy, w, h) Else If $iStretchMode = Report.Proportional Then 'on détermine la partie prédominante If hpic.Width >= hpic.Height 'C'est la largeur 'on détermine une hauteur en fonction de la largeur connue w = hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Width) h = hPic.H / hpic.W * w 'si h> a la place disponible alors on adapte en fonction de h en faite If h > (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Height)) Then h = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Height)) w = hpic.w / hpic.H * h Endif Else 'C'est la hauteur h = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Height)) w = hpic.w / hpic.H * h 'si w> la place disponible alors on adapte en fonction de w en faite If w > (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Width)) Then w = hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Width) h = hPic.H / hpic.W * w Endif Endif Else w = hpic.Width h = hpic.H Endif Select Case $iAlignment Case Align.Normal, Align.TopLeft, Align.Left, Align.BottomLeft 'Gauche ix += ReportUnits._ReportUnitsToPixels(Me.Padding._Left) Case Align.Bottom, Align.Center, Align.Top 'centrée ix += (hControl.RealWidth - w) / 2 Case Align.TopRight, Align.Right, Align.BottomRight 'Droite ix += hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Right) - w End Select Select Case $iAlignment Case Align.TopLeft, Align.Top, Align.TopRight 'Haut iy += ReportUnits._ReportUnitsToPixels(Me.Padding._Top) Case Align.Left, Align.Center, Align.Right 'Milieu iy += (hControl.RealHeight - h) / 2 Case Align.BottomLeft, Align.Bottom, Align.BottomRight iY += hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Bottom) - h End Select hBrush.Translate(ix, iy - 1) hBrush.Scale(w / hpic.Width, h / hpic.H) Paint.Brush = hBrush Paint.Rectangle(ix, iy, w, h - 1) Endif Paint.Fill End Private Function Image_Read() As Image Return $hPic End Private Sub Image_Write(Value As Image) $hPic = Value 'If Left(Me.Width, 1) = "0" Then Me.Width = $hpic.Width & " px" 'If Left(Me.Height, 1) = "0" Then Me.Height = $hpic.Height & " px" End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Private Function Stretch_Read() As Integer Return $iStretchMode End Private Sub Stretch_Write(Value As Integer) $iStretchMode = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportLabel.class000066400000000000000000000130211411575327000225760ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Text,Format,Alignment{Align.*},Rotate{Angle:Degrees},UseField" '"*,Text,Key,Format,Alignment{Align.*},UseField" Public Const _Similar As String = "ReportTextLabel" Public Const _DefaultEvent As String = "Data" Private $sText As String Private $iAlignment As Integer = Align.Normal Private $bIsSpecial As Boolean Private $sKey As String Private $sFormat As String Private $bUseField As Boolean Private $fAngle As Float Property Text As String Property Alignment As Integer Property IsSpecial As Boolean 'Property Key As String Property {Format} As String Property UseField As Boolean Property Rotate As Float Public Data As String Event Data(Index As Integer) Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value 'Me._Count = 2 End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint Dim fTextHeight As Float Dim fTextWidth As Float Dim hext As PaintExtents Dim hRect As RectF Dim sText As String 'On Récupère la taille standard hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'if the size choosed by the user is less than the font height, set the object to the font height If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If Not IsNull(Me.Font) Then Paint.Font = Me.Font If Not $sText Then Raise Data(DataIndex) sText = Data Else sText = $sText Endif If $fAngle = 0.0 Then hRect = Paint.TextSize(sText) fTextWidth = Me.Padding._Left + Me.Border._Left + ReportUnits._PixelsToReportUnits(hRect.Width) + Me.Padding._Right + Me.Border._Right fTextHeight = ReportUnits._PixelsToReportUnits(hRect.Height) + Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom 'Debug Paint.Font.Height * Paint.ResolutionX / Desktop.Resolution Else Paint.Save Paint.Rotate(Rad($fAngle)) Paint.Text(sText, 0, 0) hExt = Paint.PathExtents fTextWidth = Me.Padding._Left + Me.Border._Left + ReportUnits._PixelsToReportUnits(hExt.Width) + Me.Padding._Right + Me.Border._Right fTextHeight = ReportUnits._PixelsToReportUnits(hExt.Height) + Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom Paint.Restore Endif hMyHints.Height = Max(hMyHints.Height, fTextHeight) hMyHints.Width = Max(hMyHints.Width, fTextWidth) Endif 'Me._SizeInt = hMyHints Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim sTempText As Variant Dim iX, iY, iW, iH As Integer If $sText Then sTempText = $sText Else Raise Data(DataIndex) sTempText = Data Endif If $sFormat Then Try sTempText = Format(sTempText, $sFormat) Endif If $bUseField Then sTempText = DecodeText(sTempText, Page) Endif iX = (x + hControl.RealLeft + ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Border._Left)) iY = (y + hControl.RealTop + ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Border._Top)) iW = (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) iH = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) Paint.Brush = Me._GetActualBrush(iX, iY, iX + hControl.RealWidth, iY + hControl.RealHeight) If Report.Debug Then Paint.Brush = Paint.Color(Color.Red) Paint.Rectangle(ix, iy, iw, ih) Paint.Stroke Endif 'Set the Font if it is initialized If Not IsNull(Me.Font) Then Paint.Font = Me.Font Endif If $fAngle = 0.0 Then Paint.Text(sTempText, iX, iY, iW, iH, $iAlignment) Else Paint.Translate(iX + iW / 2, iY + iH / 2) Paint.Rotate(Rad($fAngle)) Paint.Translate(- (iX + iW / 2), - (iY + iH / 2)) Paint.Text(sTempText, iX, iY, iW, iH, Align.Center) Endif Paint.Fill 'Paint.ResetClip 'Paint.Restore 'Paint.Restore 'If $sKey Then $sText = Null 'Draw.Clip.Enabled = False End Private Function IsSpecial_Read() As Boolean Return $bIsSpecial End Private Sub IsSpecial_Write(Value As Boolean) $bIsSpecial = Value End Private Function Format_Read() As String Return $sFormat End Private Sub Format_Write(Value As String) $sFormat = Value End Private Function DecodeText(sText As String, Optional Page As Integer, Optional ForSize As Boolean = False) As String If ForSize Then If InStr(sText, "$PAGE") Then sText = Replace(sText, "$PAGE", "999") If InStr(sText, "$NPAGE") Then sText = Replace(sText, "$NPAGE", "999") Else If InStr(sText, "$PAGE") Then sText = Replace(sText, "$PAGE", Str(Page + 1)) If InStr(sText, "$NPAGE") Then sText = Replace(sText, "$NPAGE", Str(Me.Report.PageCount)) Endif Return sText End Private Function UseField_Read() As Boolean Return $bUseField End Private Sub UseField_Write(Value As Boolean) $bUseField = Value End Private Function Rotate_Read() As Float Return $fAngle End Private Sub Rotate_Write(Value As Float) $fAngle = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportLine.class000066400000000000000000000055331411575327000224570ustar00rootroot00000000000000' Gambas class file Export Inherits ReportControl Public Const _Properties As String = "*,Direction{Align.TopLeft;Top;TopRight;Left;Right;BottomLeft;Bottom;BottomRight}=BottomRight,LineWidth{ReportCoord}=2 px" Public Const _Similar As String = "ReportTextLabel" Property Direction As Integer Private $fLineWidth As Float = 1.0 Private $iLineStyle As Integer = Line.solid Private $iDirection As Integer = Align.BottomRight Private $sLineWidth As String = "2px" Property LineWidth As String Property LineStyle As Integer Public Sub _new() Me.Height = "1cm" Me.Width = "1cm" End Private Function LineWidth_Read() As String Return $sLineWidth End Private Sub LineWidth_Write(Value As String) $sLineWidth = Value End Public Sub _SetUnifiedValues() Dim hSizeParse As TSizeParse Super._SetUnifiedValues() hSizeParse = New TSizeParse($sLineWidth) $fLineWidth = hSizeParse.GetValue() End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint hMyHints.Height = Me._Height hMyHints.Width = Me._Width Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim iX, iY, W, H, W2, H2 As Integer If Me.LineStyle = Line.None Then Return If Me.LineStyle <> Line.Solid Then Paint.Dash = ReportUnits.GetBorder(Me.LineStyle) Paint.LineWidth = ReportUnits._ReportUnitsToPixels($fLineWidth) iX = (x + hControl.RealLeft + ReportUnits._ReportUnitsToPixels(Me.Padding._Left)) iY = (y + hControl.RealTop + ReportUnits._ReportUnitsToPixels(Me.Padding._Top)) W = iX + hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Right) H = iY + hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Bottom) Paint.Brush = Me._GetActualBrush(iX, iY, W, H) W2 = (iX + W) / 2 H2 = (iY + H) / 2 Select Case $iDirection Case Align.TopLeft Paint.MoveTo(W, H) Paint.LineTo(iX, iY) Case Align.Top Paint.MoveTo(W2, H) Paint.LineTo(W2, iY) Case Align.TopRight Paint.MoveTo(iX, H) Paint.LineTo(W, iY) Case Align.Left Paint.MoveTo(W, H2) Paint.LineTo(iX, H2) Case Align.Right Paint.MoveTo(iX, H2) Paint.LineTo(W, H2) Case Align.BottomLeft Paint.MoveTo(W, iY) Paint.LineTo(iX, H) Case Align.Bottom Paint.MoveTo(W2, iY) Paint.LineTo(W2, H) Case Align.BottomRight Paint.MoveTo(iX, iY) Paint.LineTo(W, H) End Select Paint.Stroke End Private Function LineStyle_Read() As Integer Return $iLineStyle End Private Sub LineStyle_Write(Value As Integer) $iLineStyle = Value End Private Function Direction_Read() As Integer Return $iDirection End Private Sub Direction_Write(Value As Integer) $iDirection = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportPageBreak.class000066400000000000000000000001361411575327000234030ustar00rootroot00000000000000' Gambas class file Export Inherits ReportControl Public Const _Properties As String = "-*" gambas-3.16.3/comp/src/gb.report/.src/ReportPanel.class000066400000000000000000000007271411575327000226270ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*,Arrangement{Arrange.None;Vertical;Horizontal;Column;Fill}=Vertical" Public Const _Similar As String = "ReportVBox" Property Arrangement As Integer Public Sub _new() Super._Arrangement = Arrange.Vertical End Private Function Arrangement_Read() As Integer Return Super._Arrangement End Private Sub Arrangement_Write(Value As Integer) Super._Arrangement = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportSection.class000066400000000000000000000004461411575327000231720ustar00rootroot00000000000000' Gambas class file Export Inherits ReportVBox Public Const _Properties As String = "*,Text" Property Text As String Private $sText As String Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Public Sub _Free() End gambas-3.16.3/comp/src/gb.report/.src/ReportSvgImage.class000066400000000000000000000126521411575327000232720ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Private $hPic As SvgImage Private $iStretchMode As Integer = Report.Proportional Private $iAlignment As Integer = Align.Normal 'Private $sPath As String Public Const _Properties As String = "*,Stretch{Report.None;Proportional;Fill}=Proportional,Alignment{Align.*},Image{SvgImage}" Public Const _Similar As String = "ReportTextLabel" Public Data As SvgImage Property Image As SvgImage Property Stretch As Integer Property Alignment As Integer Event Data(Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint 'Dim h As Float = IIf(Me._Height > AvailableH, AvailableH, Me._Height) 'Dim w As Float = IIf(Me._Width > AvailableW, AvailableW, Me._Width) Dim hPic As SvgImage hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalWidth, DataIndex) If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If $hpic Then hpic = $hpic Else Raise Data(DataIndex) hpic = Data Endif If hpic Then hMyHints.Width = Max(hMyHints.Width, Me.Padding._Left + ReportUnits.UnitToCm(hpic.Width, "px") + Me.Padding._Right) hMyHints.Height = Max(hMyHints.Width, Me.Padding._Top + ReportUnits.UnitToCm(hpic.Height, "px") + Me.Padding._Bottom) Endif Endif Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim ix, iy As Float 'Dim hBrush As PaintBrush Dim hPic As SvgImage Dim w, h As Float ix = x + hControl.RealLeft '+ ReportUnits._ReportUnitsToPixels(Me.Padding._Left) iy = y + hControl.RealTop '+ ReportUnits._ReportUnitsToPixels(Me.Padding._Top) If Not $hpic Then Raise Data(DataIndex) hpic = Data If Not hPic Then Return Else hPic = $hpic Endif '$hPic = $hPic.Stretch(hControl.RealWidth, hControl.RealHeight) 'hBrush = Paint.Image(hpic) If $iStretchMode = Report.Fill Then iX += ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Border._Left) iY += ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Border._Top) w = (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) h = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) ' hBrush.Translate(ix, iy - 1) 'hBrush.Scale(w / hPic.Width, h / hPic.Height) 'Paint.Brush = hBrush hpic.Width = w hpic.Height = h Paint.MoveTo(ix, iy) hpic.Paint 'Paint.Rectangle(ix, iy, w, h) Else If $iStretchMode = Report.Proportional Then 'on détermine la partie prédominante If hPic.Width >= hPic.Height 'C'est la largeur 'on détermine une hauteur en fonction de la largeur connue w = hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Width) h = hPic.Height / hPic.Width * w 'si h> a la place disponible alors on adapte en fonction de h en faite If h > (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Height)) Then h = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Height)) w = hPic.Width / hPic.Height * h Endif Else 'C'est la hauteur h = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Height)) w = hPic.Width / hPic.Height * h 'si w> la place disponible alors on adapte en fonction de w en faite If w > (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Width)) Then w = hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Width) h = hPic.Height / hPic.Width * w Endif Endif Else w = hPic.Width h = hPic.Height Endif Select Case $iAlignment Case Align.Normal, Align.TopLeft, Align.Left, Align.BottomLeft 'Gauche ix += ReportUnits._ReportUnitsToPixels(Me.Padding._Left) Case Align.Bottom, Align.Center, Align.Top 'centrée ix += (hControl.RealWidth - w) / 2 Case Align.TopRight, Align.Right, Align.BottomRight 'Droite ix += hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Right) - w End Select Select Case $iAlignment Case Align.TopLeft, Align.Top, Align.TopRight 'Haut iy += ReportUnits._ReportUnitsToPixels(Me.Padding._Top) Case Align.Left, Align.Center, Align.Right 'Milieu iy += (hControl.RealHeight - h) / 2 Case Align.BottomLeft, Align.Bottom, Align.BottomRight iY += hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Bottom) - h End Select 'hBrush.Translate(ix, iy - 1) hpic.Width = W hPic.Height = H Paint.MoveTo(iX, iY) hpic.Paint 'hBrush.Scale(w / hPic.Width, h / hPic.Height) 'Paint.Brush = hBrush 'Paint.Rectangle(ix, iy, w, h - 1) Endif End Private Function Image_Read() As SvgImage Return $hPic End Private Sub Image_Write(Value As SvgImage) $hPic = Value End Private Function Stretch_Read() As Integer Return $iStretchMode End Private Sub Stretch_Write(Value As Integer) $iStretchMode = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End gambas-3.16.3/comp/src/gb.report/.src/ReportTextLabel.class000066400000000000000000000051341411575327000234510ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Text,Alignment{Align.*}" Public Const _Similar As String = "ReportControl" Public Const _DefaultEvent As String = "Data" Property Text As String Property Alignment As Integer Private $sText As String Private $iAlignment As Integer = Align.TopNormal Public Data As String Event Data(Index As Integer) Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint Dim hMyHints As New TSizeHint Dim fTextHeight As Float Dim sTmp As String hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalWidth, DataIndex) If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If Not $sText Then Raise Data(DataIndex) sTmp = Data Else sTmp = $sText Endif 'La largeur est fixée par l'utilisateur 'Calcule de la hauteur If Not IsNull(Me.Font) Then Paint.Font = Me.Font fTextHeight = ReportUnits._PixelsToReportUnits(Paint.RichTextExtents(sTmp, ReportUnits._ReportUnitsToPixels(hMyHints.Width)).Height) hMyHints.Height = Max(hMyHints.Height, Me.Border._Top + Me.Padding._Top + fTextHeight + Me.Padding._Bottom + Me.Border._Bottom) Endif Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim iX, iY, iW, iH As Integer Dim sTmp As String Paint.Brush = Me._GetActualBrush(iX, iY, iX + hControl.RealWidth, iY + hControl.RealHeight) If Not $sText Then Raise Data(DataIndex) sTmp = Data Else sTmp = $sText Endif 'Set the Font if it is initialized If Not IsNull(Me.Font) Then Paint.Font = Me.Font iX = (x + hControl.RealLeft + ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Border._Left)) iY = (y + hControl.RealTop + ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Border._Top)) iW = (hControl.RealWidth - ReportUnits._ReportUnitsToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) iH = (hControl.RealHeight - ReportUnits._ReportUnitsToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) 'Paint.Rectangle(iX, iY, iW, iH) 'Paint.Clip Paint.RichText(sTmp, iX, iY, iW, iH, $iAlignment) Paint.Fill 'Paint.ResetClip End gambas-3.16.3/comp/src/gb.report/.src/ReportVBox.class000066400000000000000000000016261411575327000224450ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*,ForceNewPage" Public Const _Similar As String = "ReportVBox" Public Const _DefaultArrangement As String = "V" Public Sub _new() Super._Arrangement = Arrange.Vertical End Public Sub _Free() End ' Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As TSizeHint ' ' 'Print Me.Tag ' If Me.tag Then Print "Besoins de " & Me.Tag & ": ", AvailableW, AvailableH ' Return Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight) ' ' ' End ' ' ' Public Sub _SetChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, bInFixed As Boolean) ' If Me.Tag Then Print "Disponibilité pour " & Me.Tag & ": H= " & H & " W= " & W ' Super._SetChildGeometry(x, y, w, h, ContPage, bInFixed) ' ' End gambas-3.16.3/comp/src/gb.report/.src/ReportVPanel.class000066400000000000000000000304141411575327000227510ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*" Public Const _Similar As String = "ReportVBox" Public Sub _new() Super._Arrangement = Arrange.Column End Public Sub _Free() Super._Free End Public Sub _SetCChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim aPageColumns As New TPageColumn[] Dim PageColumn As New TPageColumn Dim fMaxWidth As Float Dim fColPos As Float Dim aPageItems As New TControl[] ''Éléments contenu par cette page Dim hChildHints As TSizeHint ''Besoins en hauteur/largeur de l'enfant Dim hChild As ReportControl ''Un enfant reportcontrol Dim fTH As Float ''Hauteur restante Dim fSpc As Float ''Taille d'un espace 'Dim X, Y As Float ''Position Haut gauche de départ Dim hTItem As TControl ''Un objet virtuel Dim oChild As Object ''Un objet gambas générique Dim fExp As Float ''taille des objets étendus Dim iNExp As Integer ''Nombre d'objets étendus Dim ftmpHeight As Float ''Tampon pour le calcul de la taille répartie Dim ftmpY As Float ''Curseur temporaire de position haute Dim fX, fY As Float ''Tampon de position Dim i, j As Integer ''Des indexs Dim bExitLoop As Boolean ''Flag de sortie de traitement 'Dim iPrevIndex As Integer Dim bForceNewPage As Boolean ''Flag d'anticipation de sortie 1 par page Dim iPreIndex As Integer 'Détermination de la taille d'un espace 'et prise en compte de la taille relative fSpc = IIf(Me._RelativeSpacing, H * Me._Spacing / 100, Me._Spacing) 'Retrait du padding et des bordures de la hauteur de travail H = H - Me.Padding._Top - Me.Border._Top - Me.Border._Bottom - Me.Padding._Bottom 'Retrait du padding et des bordures a la largeur de travail W = W - Me.Padding._Left - Me.Border._Left - Me.Border._Right - Me.Padding._Right 'Positioinnement du curseur en haut a gauche X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top 'La hauteur restante est initialisée avec la hauteur de travail fTH = H fColPos = X 'aColX.Add(fNextColPos) '***************************************************************************************** 'On enumere tous les enfants a la recherche des éléments fixes 'Si des éléments fixes sont trouvés alors leur taille est déduite de la taille restante. For i = 0 To Me.Children.Max 'On récupère l'enfant hchild = Me.Children[i] 'Si l'enfant est fixe alors on le traite. If hchild.Fixed Then ' hchild._Index = TCont.Index 'on commence par récupérer la taille de l'objet hChildHints = hchild._GetSizeHints(W, fTH, W, H, TCont.Index) 'On retire la taille de l'objet a la hau'teur restante 'si l'objet n'est pas ignoré par l'agencement If Not hchild.Ignore Then fTH = fTH - hChildHints.Height - fSpc 'Si l'énumération n'est pas encore arrivée a l'index sauvegardé 'alors on ajoute directement l'élément a la page If i < Me._CurItem Then 'Génération de l'objet virtuel hTItem = New TControl 'Lier l'objet hTItem.Ctrl = hchild 'Associer sa taille hTItem.SizeHint = hChildHints hTItem.Index = TCont.Index 'L'ajouter a la page PageColumn.TCtrls.Add(hTItem) 'Si l'objet est étendu alors on en tient compte 'sauf si celui-ci est ignoré par l'arrangement If hchild.Expand And If Not hchild.Ignore Then fExp += hChildHints.Height Inc iNExp Endif Endif Endif Next '********************************************************************************* 'On parcour a présent le reste des éléments For i = Me._CurItem To Me.Children.Max 'On récupère l'enfant hChild = Me.Children[i] 'Je traite ici la boucle de clonage 'On définit le point de départ 'If ContPage = 1 And hchild.Tag = "**" Then Stop j = hChild._DataIndex Do '## Début boucle répétition 'On fixe l'index de données des enfants si 'on est le duplicateur If hChild._IsContainer And If hChild._count > 1 Then iPreIndex = j Else iPreIndex = TCont.Index Endif 'If hchild.tag = "**" Then Print iPreIndex 'If iPreIndex = 9 Then Stop 'on récupère la taille de l'enfant hChildHints = hchild._GetSizeHints(W, fTH, fMaxWidth, H, iPreIndex) fMaxWidth = Min(Max(fMaxWidth, hChildHints.Width), W) 'Les éléments fixes ont déja été traités on ne tient donc pas compte de leur hauteur 'car elle a déja été déduite de l'espace restant. De meme on ignore les objets flottants (ignore=true) If Not hchild.Fixed And If Not hchild.Ignore Then 'Si l'élément ne loge pas dans la place restante ou 'si la place restante est insuffisante 'on provoque la sortie en fin de boucle If (fTH - hChildHints.Height) < 0 Or If fTH <= 0 Or bForceNewPage Then ' If hchild.Tag = "*" Then Stop aPageColumns.Add(PageColumn) PageColumn.Exp = fExp PageColumn.NExp = iNExp PageColumn.X = fColPos fColPos += fMaxWidth + fspc PageColumn.TH = fTh iNExp = 0 fExp = 0 fTH = H PageColumn = New TPageColumn 'Si la nouvelle colonne ne loge pas on arrête la If fColPos + fMaxWidth > x + W Then bForceNewPage = False hchild._DataIndex = j 'If Not bForceNewPage Then bExitLoop = True Break Else Continue End If Endif 'On déduit la taille de l'objet courant (et l'espace suivant) fTH = fTH - hChildHints.Height - fspc Endif 'L'objet loge dans la page, on génère donc une représentation de celui-ci 'c'est a dire un objet virtuel pointant vers celui-ci 'et apportant les informations nécéssaire au layout final 'on génère l'objet virtuel hTItem = New TControl 'On associe le controle hTItem.Ctrl = hchild 'On associe sa taille hTItem.SizeHint = hChildHints 'If hchild.Tag = "head" Then Stop 'On associe l'index de donnée hTItem.Index = iPreIndex 'TItem.Index = IIf(hchild._count > 0, j, TCont.Index) 'On l'ajoute a la page PageColumn.TCtrls.Add(hTItem) 'Si l'objet est étendu alors on tien compte de sa taille 'pour le calcul de l'espace réparti If hchild.Expand Then fExp += hChildHints.Height Inc iNExp Endif 'If hChildHints.NotFinished Then hchild._DataIndex = j 'un élément fixe ou ignore ne peut être répété If hchild.Fixed Or hchild.Ignore Then Break 'Sachant que hChild._count peut être à -1 on le considère dans ce cas la comme étant a 0 'si j est égale au compte alors on quitte la boucle If j >= Max(hchild._Count - 1, 0) Then If Not hChildHints.NotFinished Then hChild._DataIndex = 0 Break Endif 'sinon on incrémente le compte a condition que le dernier enfant aie finit d'afficher ses enfants If Not hChildHints.NotFinished Then Inc j 'On prévoie une sortie de boucle si l'enfant demande un affichage 1 par page If hchild.ForceNewPage Then bForceNewPage = True Loop 'Next '## fin de la boucle de répétition 'Si la sortie anticipé est demandée alors on sort de la boucle If bExitLoop Then Break If i < Me.Children.Max Then If Me.Children[i + 1] Is ReportPageBreak Then bForceNewPage = True Inc Me._CurItem Inc i Endif Endif 'Tout les objets on été répété alors on remet l'index à 0 'hchild._DataIndex = 0 'On incrémente le compteur des éléments traités Inc Me._CurItem Next If (H - fTH) > 0 Then fTH += fspc 'Heu?????? Endif '*************************************************************************** 'Pour tous les éléments fixes jusqu'à la fin du document For i = Max(Me._CurItem, 0) To Me.Children.Max hchild = Me.Children[i] If hchild.Fixed Then hChildHints = hchild._GetSizeHints(W, fTH, W, H, iPreIndex) 'fNextColPos = Max(fNextColPos, fNextColPos + hChildHints.Width) 'on génère l'objet virtuel hTItem = New TControl 'On associe le controle hTItem.Ctrl = hchild 'On associe sa taille hTItem.SizeHint = hChildHints 'On l'ajoute a la page PageColumn.TCtrl.Add(hTItem) 'Si l'objet est étendu alors on tien compte de sa taille 'pour le calcul de l'espace réparti If hchild.Expand Then fExp += hChildHints.Height Inc iNExp Endif Endif Next PageColumn.Exp = fExp PageColumn.Nexp = iNExp PageColumn.TH = fTH aPageColumns.Add(PageColumn) PageColumn.X = fColPos '****************************************************************************** 'A présent tous les éléments pouvant être placé sur la page ont été marqué. 'On peut donc procéder a la mise en forme de ceux-ci 'k = 0 For Each PageColumn In aPageColumns ftmpY = Y 'On définit la position de départ If PageColumn.NExp Then fExp = (PageColumn.Exp + PageColumn.TH) / PageColumn.NExp Endif For i = 0 To PageColumn.TCtrls.Max 'on récupère l'objet virtuel hTItem = PageColumn.TCtrls[i] 'on récupère l'instance de l'objet réel ochild = hTItem.Ctrl 'Si l'objet est étendu alors on calcul sa hauteur 'Un objet flottant ne peut pas être étendu If Not oChild.Ignore And If ochild.Expand Then 'Calcul de la taille répartie ftmpHeight = fExp Else 'Si l'objet n'est pas étendu alors sa taille est celle demandée par celui-ci ftmpHeight = hTItem.SizeHint.Height Endif 'oChild._Index = hTItem.Index 'Traitement des objets ignoré 'Les propriété de taille sont celle fournie par l'objet If oChild.Ignore Then 'Calcul de la position de l'objet 'si sa position est relative (%) alors on fait le ratio a partir de la largeur ou de la hauteur 'sinon on utilise la position fournie par l'objet fX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) fY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) 'Fixer la position de l'objet hTItem._SetGeometry(fX, fY, hTItem.SizeHint.Width, ftmpHeight) 'L'objet flottant peut être un conteneur il faut donc demander aussi a ses enfants de s 'organiser oChild._SetChildGeometry(fX, fY, hTItem.SizeHint.Width, ftmpHeight, ContPage, hTItem, bInFixed Or Me.Fixed) Else 'Fixer la position de l'objet hTItem._SetGeometry(PageColumn.X, fTmpY, fMaxWidth, ftmpHeight) 'L'objet flottant peut être un conteneur il faut donc demander aussi a ses enfants de s 'organiser oChild._SetChildGeometry(PageColumn.X, fTmpY, fMaxWidth, ftmpHeight, ContPage, hTItem, bInFixed Or Me.Fixed) 'on incrémente la position verticale de l'objet 'pour définir sa place sur la page relativement aux autres éléments fTmpY += ftmpHeight + fspc Endif 'Si l'objet est un conteneur alors il faut vérifier si il a finit d'être traité If oChild Is ReportContainer Then 'If oChild._NotFinished Then Me.NotFinished = True 'Si son traitement n'est pas terminé alors on trouve 'sa position dans la liste des enfant et on l'assigne a l'index de traitement 'si sa position est > a l'index courant If ochild._CurItem <= oChild.Children.Max Then j = Me.Children.Find(oChild) Me._CurItem = Min(Me._CurItem, j) Endif 'Si on est dans la lignée d'un conteneur fixe on incrémente pas la lecture des enfants 'En clair ce sont toujours les mêmes éléments qui apparaitrons If bInFixed Then ochild._CurItem = 0 Endif Next 'Inc k aPageItems.Insert(PageColumn.TCtrls) Next 'On ajoute cette page au dossier du conteneur TCont._PageChildren[ContPage] = aPageItems Endgambas-3.16.3/comp/src/gb.report/.src/Tests/000077500000000000000000000000001411575327000204415ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/000077500000000000000000000000001411575327000211575ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report1.class000066400000000000000000000001631411575327000235420ustar00rootroot00000000000000' Gambas class file Public Sub ReportLabel2_Data(Index As Integer) Last.data = "coucou\n c'est
        moi" End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report1.report000066400000000000000000000025211411575327000237500ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,68,64) Count = 3 Index = 0 Text = ("#3") { ReportLabel2 ReportLabel #MoveScaled(3,4,33,8) AutoResize = True Background = ReportBrush["#FFFF00"] } Index = 1 Text = ("#1") { ReportHBox1 ReportHBox #MoveScaled(3,1,58,16) Height = "5cm" Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#00FF00"] { ReportLabel1 ReportLabel #MoveScaled(7,4,40,9) Font = Font["Bold,+10"] Expand = True Text = ("COUCOU") Alignment = Align.Center } } { ReportHBox2 ReportHBox #MoveScaled(6,21,57,34) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["LinearGradient(0.84,0.6,0,0,[#000000,#FFFFFF],[0,1])"] { ReportVBox1 ReportVBox #MoveScaled(0,4,28,20) Expand = True } { ReportVBox2 ReportVBox #MoveScaled(33,3,18,24) Fixed = True Expand = True { ReportHBox3 ReportHBox #MoveScaled(3,2,12,14) Expand = True } { ReportVBox3 ReportVBox #MoveScaled(2,20,16,3) Height = "60mm" Background = ReportBrush["#FFFF00"] } } } Index = 2 Text = ("#2") Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report10.class000066400000000000000000000001221411575327000236150ustar00rootroot00000000000000' Gambas class file Public Sub _new() ReportHBox2.DataCount = 200 End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report10.report000066400000000000000000000035311411575327000240320ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:20mm;Bottom:10mm;Left:25mm;Right:15mm"] Paper = Printer.A3 Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(1,4,59,5) Height = "1cm" Fixed = True { ReportLabel1 ReportLabel #MoveScaled(1,1,17,4) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:6mm"] Text = ("ReportLabel1") } { ReportLabel2 ReportLabel #MoveScaled(21,1,14,4) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000"] Text = ("ReportLabel2") } { ReportLabel3 ReportLabel #MoveScaled(40,0,13,5) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopRightCorner:6mm"] Text = ("ReportLabel3") } } { ReportHBox2 ReportHBox #MoveScaled(1,12,59,5) Height = "1cm" { ReportLabel4 ReportLabel #MoveScaled(1,1,17,4) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Text = ("ReportLabel1") } { ReportLabel5 ReportLabel #MoveScaled(21,1,14,4) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000"] Text = ("ReportLabel2") } { ReportLabel6 ReportLabel #MoveScaled(40,0,13,5) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Text = ("ReportLabel3") } } { ReportLabel7 ReportLabel #MoveScaled(3,49,60,4) Fixed = True Padding = ReportPadding["Top:10mm;Bottom:10mm;Left:10mm;Right:10mm"] AutoResize = True Text = ("Page $NPAGE") Alignment = Align.Right UseField = True } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report12.class000066400000000000000000000004121411575327000236210ustar00rootroot00000000000000' Gambas class file Public Sub _New() ReportHBox1.DataCount = 100 ReportLabel1.BackGround = ReportBrush.Color(Color.Red) ReportLabel1.Brush = ReportBrush.Color(Color.Yellow) End Public Sub ReportLabel1_Data(Index As Integer) Last.Data = Index End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report12.report000066400000000000000000000004341411575327000240330ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Spacing = "1mm" Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(2,3,60,7) Height = "1cm" { ReportLabel1 ReportLabel #MoveScaled(0,0,58,4) Expand = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report13.class000066400000000000000000000015401411575327000236250ustar00rootroot00000000000000' Gambas class file Private hResut As Result Private hResut2 As Result Private ColResult As New Collection Public Sub ReportLabel1_Data(Index As Integer) hResut.MoveTo(Index) Last.Data = hResut!firstname End Public Sub Report_Open() Connections["Connection1"].Open hResut = db.Exec("select distinct firstname from test") ReportVBox1.DataCount = hResut.Count 'ReportVBox2.DataCount = 10 End Public Sub ReportLabel2_Data(Index As Integer) hResut2 = ColResult[ReportVBox1.DataIndex] hResut2.MoveTo(Index) Last.Data = hResut2!birth Print index Catch End Public Sub ReportVBox1_BeforeData() If Not ColResult.Exist(Last.DataIndex) Then hResut.MoveTo(Last.DataIndex) hResut2 = db.Exec("select * FROM test where firstname=&1", hResut!firstname) ColResult[Last.DataIndex] = hResut2 ReportVBox2.DataCount = hResut2.Count Endif Catch End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report13.report000066400000000000000000000006221411575327000240330ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Index = 0 Text = ("") { ReportVBox1 ReportVBox #MoveScaled(3,5,60,44) { ReportLabel1 ReportLabel #MoveScaled(2,1,31,3) } { ReportVBox2 ReportVBox #MoveScaled(2,8,56,12) { ReportLabel2 ReportLabel #MoveScaled(0,2,28,3) Brush = ReportBrush["#00FF00"] } } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report14.class000066400000000000000000000013171411575327000236300ustar00rootroot00000000000000' Gambas class file 'Static Public Type As String Public Sub _new(Optional sType As String = "mysql") Dim hResult As Result Dim Rlbl As ReportLabel Dim hConn As Connection hConn = Connections["Connection1"] hConn.Type = sType If hConn.Type = "sqlite" Then hConn.Host = User.Home Try hConn.Open If Not hConn.Opened Then Message.Error(" You have to create the test database with the Database example.") Return Endif hResult = db.Limit(200).Find("test") If Not hResult.Available Then Return For Each hResult Rlbl = New ReportLabel(RVBCont) Rlbl.Autoresize = True Rlbl.Text = hResult!name & " " & hResult!firstname Rlbl.Border.bottom.Width = "1px" Next End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report14.report000066400000000000000000000052721411575327000240420ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,100,77) Padding = ReportPadding["Top:1cm;Bottom:15mm;Left:2cm;Right:2cm"] Index = 0 Text = ("Section 1") { ReportHBox2 ReportHBox #MoveScaled(0,0,67,14) Height = "5cm" Fixed = True Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#3398C3"] { ReportSvgImage1 ReportSvgImage #MoveScaled(1,1,14,12) Width = "4cm" Image = SvgImage.Load("gambas.svg") } { ReportLabel3 ReportLabel #MoveScaled(20,2,43,10) Brush = ReportBrush["LinearGradient(0.71,0.07,0.34,0.06,[#FFFF00,#FFFFFF],[0,1])"] Fixed = True Font = Font["DejaVu Sans,Bold,+14"] Expand = True AutoResize = True Text = ("Gambas") Alignment = Align.Left } } { ReportHBox1 ReportHBox #MoveScaled(0,15,87,56) Padding = ReportPadding["0cm"] Expand = True Border = ReportBorder["Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] { ReportVBox1 ReportVBox #MoveScaled(1,1,25,47) Width = "6cm" Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Background = ReportBrush["#DF6B00"] { ReportLabel4 ReportLabel #MoveScaled(3,2,20,4) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold"] AutoResize = True Text = ("All friends list !") } } { ReportVBox2 ReportVBox #MoveScaled(27,1,60,54) Expand = True Border = ReportBorder["Left:1mm #000000"] Background = ReportBrush["#FFFFFF"] { RVBCont ReportVBox #MoveScaled(4,4,53,42) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Tag = "*" Spacing = "1mm" { ReportLabel1 ReportLabel #MoveScaled(0,0,44,9) Font = Font["Bitstream Charter,Bold,Italic,+2"] AutoResize = True Text = ("Gambas Report Demo") Alignment = Align.Center } { ReportVBox3 ReportVBox #MoveScaled(0,11,38,4) Height = "1cm" AutoResize = True } } { ReportLabel2 ReportLabel #MoveScaled(7,49,47,3) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold,+1"] Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] AutoResize = True Border = ReportBorder["Top:1mm #000000"] Background = ReportBrush["#3398C3"] Text = ("Page $PAGE on $NPAGE ") Alignment = Align.Right UseField = True } } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report2.class000066400000000000000000000005531411575327000235460ustar00rootroot00000000000000' Gambas class file Public Sub _new() Dim Rlbl As ReportLabel Dim i As Integer 'Report.Debug = True For i = 0 To 200 Rlbl = New ReportLabel(RVBCont) Rlbl.Text = "Ligne " & i Rlbl.Autoresize = True Rlbl.Border.bottom.Width = "1px" Rlbl.Padding.Top = "3 mm" Rlbl.Padding.Bottom = "1mm" Rlbl.Padding.Left = "2 mm" Next End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report2.report000066400000000000000000000005121411575327000237470ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(1,1,61,8) Height = "10cm" Fixed = True Expand = True Background = ReportBrush["#007FFF"] } { RVBCont ReportVBox #MoveScaled(2,11,56,26) Expand = True } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report3.class000066400000000000000000000003611411575327000235440ustar00rootroot00000000000000' Gambas class file Public Sub _new() ReportHBox1.DataCount = 300 End Public Sub ReportLabel1_Data(Index As Integer) 'Print "coucou" Last.data = Index End Public Sub ReportLabel2_Data(Index As Integer) Last.data = Index End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report3.report000066400000000000000000000015451411575327000237570ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Paper = Printer.A3 Index = 0 Text = ("") { ReportHBox2 ReportHBox #MoveScaled(1,1,61,7) Height = "18mm" Fixed = True Background = ReportBrush["#FFFF00"] } { ReportHBox1 ReportHBox #MoveScaled(1,9,59,6) Height = "15mm" { ReportLabel1 ReportLabel #MoveScaled(0,1,26,5) Expand = True } { ReportLabel2 ReportLabel #MoveScaled(28,0,30,6) Font = Font["Bold,+5"] Expand = True Alignment = Align.Center } } { ReportPanel1 ReportPanel #MoveScaled(1,16,60,4) Fixed = True Expand = True Background = ReportBrush["#00FF00"] Arrangement = Arrange.None } { ReportHBox3 ReportHBox #MoveScaled(0,21,61,7) Height = "18mm" Fixed = True Background = ReportBrush["#FFFF00"] } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report4.class000066400000000000000000000015471411575327000235540ustar00rootroot00000000000000' Gambas class file Private $hres As Result Public Sub _new() 'Report.Debug = True Try Connections["Connection2"].Open $hres = db.Exec("SELECT fc.cd_sc as codesoc, fc.int_sc as intsoc, fcc.compte_cc as compte, fcc.intitule_cc as intitule From Fiches_Comptes as fcc " "Left join Fiches_Societes as fc on fc.cd_sc=1") ReportHBox4.DataCount = $hres.Count End Public Sub lblCpte_Data(Index As Integer) $hres.MoveTo(Index) Last.data = $hres!compte End Public Sub lblcpteLab_Data(Index As Integer) $hres.MoveTo(Index) Last.data = $hres!intitule End Public Sub lblSoc_Data(Index As Integer) Last.data = $hres!codesoc & " " & $hres!intsoc End Public Sub lblDate_Data(Index As Integer) Last.data = Format(Now(), "dddd dd mmmm yyyy") End Public Sub ReportImage1_Data(Index As Integer) Last.Data = Picture["icon:/32/directory"].Image End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report4.report000066400000000000000000000050631411575327000237570ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,92) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Index = 0 Text = ("") { ReportLabel3 ReportLabel #MoveScaled(0,0,58,4) Height = "2cm" Fixed = True Font = Font["Bold,+6"] Tag = "**" Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:6mm;BottomLeftCorner:7mm"] Background = ReportBrush["LinearGradient(0.7,0,0.7,1,[#FFCFBF,#FFFFFF],[0,1])"] Text = ("IMPRESSION DU PLAN COMPTABLE") Alignment = Align.Center } { ReportPanel1 ReportVBox #MoveScaled(2,7,50,69) Padding = ReportPadding["Bottom:2cm;Left:2cm;Right:2cm"] Expand = True Tag = "Contenu1" { lblSoc ReportLabel #MoveScaled(1,2,53,4) Height = "2cm" Fixed = True Font = Font["Bold,12"] } { ReportHBox1 ReportHBox #MoveScaled(1,14,45,4) Height = "1cm" Fixed = True Background = ReportBrush["#F7DFFF"] { ReportLabel1 ReportLabel #MoveScaled(1,0,14,4) Width = "20%" Font = Font["Bold,12"] Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000"] Text = ("Code") Alignment = Align.Center } { ReportLabel2 ReportLabel #MoveScaled(20,0,14,4) Font = Font["Bold,12"] Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Intitulé") Alignment = Align.Center } } { VCont ReportVBox #MoveScaled(1,20,45,39) AutoResize = True Tag = "ListeElements" { ReportHBox4 ReportHBox #MoveScaled(1,2,44,7) Height = "5mm" { lblCpte ReportLabel #MoveScaled(8,1,18,4) Width = "20%" Padding = ReportPadding["Left:3mm"] Tag = "*" } { lblcpteLab ReportLabel #MoveScaled(27,0,18,4) Width = "20%" Padding = ReportPadding["Left:3mm"] Expand = True Border = ReportBorder["Left:1px #000000"] } } } } { ReportHBox2 ReportHBox #MoveScaled(0,77,61,4) Fixed = True AutoResize = True { lblDate ReportLabel #MoveScaled(0,1,16,4) Width = "5cm" } { ReportHBox3 ReportHBox #MoveScaled(9,1,24,4) Expand = True } { ReportLabel4 ReportLabel #MoveScaled(47,1,13,3) Width = "3cm" AutoResize = True Text = ("Page $PAGE sur $NPAGE") UseField = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report5.class000066400000000000000000000000241411575327000235420ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report5.report000066400000000000000000000044511411575327000237600ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,95) Padding = ReportPadding["Top:1cm;Bottom:1cm;Left:1cm;Right:1cm"] Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(4,2,56,6) Height = "12mm" Expand = True { ReportLabel9 ReportLabel #MoveScaled(2,1,20,5) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#FFFF00"] } { ReportHBox2 ReportHBox #MoveScaled(30,2,24,8) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#FFFF00"] } } { ReportPageBreak1 ReportPageBreak #MoveScaled(5,10,60,5) } { ReportLabel1 ReportImage #MoveScaled(1,12,59,8) Height = "7cm" Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } { ReportLabel2 ReportLabel #MoveScaled(2,18,59,8) Height = "2cm" Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["LinearGradient(1,0,0.28,0.35,[#00FF00,#FFFFFF],[0,1])"] } { ReportLabel4 ReportImage #MoveScaled(3,23,59,8) Height = "6cm" Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } { ReportPageBreak2 ReportPageBreak #MoveScaled(2,31,59,2) } { ReportLabel5 ReportLabel #MoveScaled(2,33,59,8) Height = "2cm" Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } { ReportPageBreak3 ReportPageBreak #MoveScaled(2,42,58,3) } { ReportLabel3 ReportLabel #MoveScaled(1,44,59,8) Height = "2cm" Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } { ReportLabel6 ReportLabel #MoveScaled(2,52,59,8) Height = "10cm" Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } { ReportLabel7 ReportLabel #MoveScaled(2,62,59,8) Height = "2cm" Expand = True Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } { ReportLabel8 ReportLabel #MoveScaled(2,72,59,8) Height = "2cm" Expand = True Border = ReportBorder["Bottom:2mm #000000"] Background = ReportBrush["#00FF00"] } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report6.class000066400000000000000000000000251411575327000235440ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report6.report000066400000000000000000000006211411575327000237540ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Index = 0 Text = ("") { ReportPanel1 ReportPanel #MoveScaled(4,5,59,31) Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] { ReportLabel1 ReportLabel #MoveScaled(2,4,53,20) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Text = ("ReportLabel1") } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report7.class000066400000000000000000000011441411575327000235500ustar00rootroot00000000000000' Gambas class file Public Sub _new() 'Report.Debug = True ' ReportPanel2.Border.RoundCorner.TopLeft = "5mm/5mm" ' ReportPanel2.Border.RoundCorner.BottomLeft = "5mm/5mm" ' ReportPanel2.Border.RoundCorner.TopRight = "5mm/5mm" ' ReportPanel2.Border.RoundCorner.BottomRight = "5mm/5mm" End Public Sub ReportImage1_Data(Index As Integer) Last.Data = Picture["icon:/32/directory"].Image End Public Sub ReportImage2_Data(Index As Integer) Last.Data = Picture["icon:/32/directory"].Image End Public Sub ReportImage3_Data(Index As Integer) Last.Data = Picture["icon:/32/directory"].Image End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report7.report000066400000000000000000000033221411575327000237560ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Index = 0 Text = ("") { ReportPanel1 ReportHBox #MoveScaled(0,5,61,10) Height = "4cm" Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] { ReportPanel3 ReportPanel #MoveScaled(1,2,9,8) Expand = True } { ReportPanel2 ReportPanel #MoveScaled(10,0,41,10) Width = "10cm" AutoResize = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:1cm;TopRightCorner:1cm;BottomRightCorner:1cm;BottomLeftCorner:1cm"] Arrangement = Arrange.Horizontal { ReportImage1 ReportImage #MoveScaled(1,0,11,9) Width = "3cm" Height = "6mm" Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Alignment = Align.Center } { ReportImage3 ReportImage #MoveScaled(26,0,11,9) Width = "3cm" Height = "6mm" Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Left:1mm #000000"] Alignment = Align.Center } { ReportImage2 ReportImage #MoveScaled(14,0,11,9) Width = "3cm" Height = "6mm" Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Left:1mm #000000"] Alignment = Align.Center } } { ReportPanel4 ReportPanel #MoveScaled(52,1,9,9) Expand = True } } { ReportLabel1 ReportLabel #MoveScaled(5,18,57,13) Height = "2cm" Font = Font["Bold,+6"] Text = ("coucou") Alignment = Align.Center } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report8.class000066400000000000000000000023261411575327000235540ustar00rootroot00000000000000' Gambas class file Private hResult1 As Result Private hResult2 As Result Public Sub _new() Connections["Connection1"].Open 'Report.Debug = True hResult1 = db.Exec("select distinct firstname from test") ReportPanel1.DataCount = hResult1.Count 'ReportHBox1.DataCount = 4 'ReportHBox1.Border.RoundCorner.TopRight = "5mm 5mm" 'ReportHBox1.Border.RoundCorner.BottomRight = "5mm/5mm" 'Report.Debug = True ReportLabel3.BoxShadow.XOffset = "1mm" ReportLabel3.BoxShadow.YOffset = "1mm" ReportLabel3.BoxShadow.Blur = "1mm" End Public Sub ReportLabel1_Data(Index As Integer) hResult2.MoveTo(Index) Last.data = hResult2!name Print "FillData = " & hResult1!firstname End Public Sub ReportPanel1_BeforeData() If hResult1.Max < ReportPanel1.DataIndex Then Print "error" & ReportPanel1.DataIndex Return Endif hResult1.MoveTo(ReportPanel1.dataindex) Print "BeforeData = " & hResult1!firstname hResult2 = db.Exec("Select * From test where firstname=&1 LIMIT 1,20", hResult1!firstname) ReportHBox1.DataCount = hResult2.Count End Public Sub ReportLabel2_Data(Index As Integer) hResult1.MoveTo(Index) Last.data = hResult1!firstname 'Print hResult1!firstname, Index End Public Sub Report_Open() End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/Report8.report000066400000000000000000000045711411575327000237660ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,88) Padding = ReportPadding["Top:15mm;Bottom:2cm;Left:2cm;Right:2cm"] Tag = "\"toto\"" Spacing = "1cm" Index = 0 Text = ("") { ReportLabel5 ReportLabel #MoveScaled(2,0,61,4) Brush = ReportBrush["#9F9F9F"] Fixed = True AutoResize = True Text = ("List of all my friends") Alignment = Align.Right } { ReportLabel3 ReportLabel #MoveScaled(2,3,60,18) Font = Font["Bold,+10"] Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] AutoResize = True Border = ReportBorder["Top:1mm #9F9F9F;Bottom:1mm #9F9F9F;Left:1mm #9F9F9F;Right:1mm #9F9F9F;TopLeftCorner:5mm;TopRightCorner:5mm;BottomRightCorner:5mm;BottomLeftCorner:5mm"] Background = ReportBrush["#1FFF8F"] Text = ("List Of My Friends") Alignment = Align.Center } { ReportPanel2 ReportVBox #MoveScaled(0,23,65,54) Expand = True Tag = "Boite 1" Spacing = "1cm" { ReportPanel1 ReportVBox #MoveScaled(7,3,64,45) Width = "4cm" Height = "5cm" AutoResize = True Tag = "Boite 2" Spacing = "1mm" ForceNewPage = True { ReportLabel2 ReportLabel #MoveScaled(2,1,54,8) Fixed = True Font = Font["Bold,+3"] Padding = ReportPadding["Left:5mm"] AutoResize = True Tag = "head" Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000;TopLeftCorner:3mm;TopRightCorner:3mm;BottomRightCorner:3mm;BottomLeftCorner:3mm"] Background = ReportBrush["#1FFF8F"] } { ReportHBox1 ReportHBox #MoveScaled(2,11,71,31) Width = "5cm" Height = "2cm" Padding = ReportPadding["Left:5mm"] AutoResize = True Tag = "Boite 3" Background = ReportBrush["#FFFFFF"] { ReportLabel1 ReportLabel #MoveScaled(5,5,47,17) Font = Font["+1"] Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] AutoResize = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Background = ReportBrush["#DFDF6F"] } } } } { ReportLabel4 ReportLabel #MoveScaled(0,79,62,4) Fixed = True AutoResize = True Text = ("Page $PAGE / $NPAGE") Alignment = Align.Right UseField = True } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/myReport1.class000066400000000000000000000015121411575327000241070ustar00rootroot00000000000000' Gambas class file Private hCon As Connection = Connections["Connection1"] Private hResult As Result Public Sub _new() 'Dim hresult As Result 'Report.debug = True ' ReportLabel8.Fixed = True ' ReportHBox4.Fixed = True 'ReportHBox3._Count = 200 ' ReportLabel2.Fixed = True ' hCon.Type = "sqlite" ' hCon.Host = User.Home ' hCon.Name = "test" hresult = db.Exec("SELECT * FROM test") 'Print hresult.Count ReportHBox1.DataCount = hresult.Count 'ReportLabel1.Brush = ReportBrush["&h00FF00&"] End Public Sub ReportLabel1_Data(Index As Integer) hresult.MoveTo(Index) Last.data = hresult!name End Public Sub ReportLabel6_Data(Index As Integer) hresult.MoveTo(Index) Last.data = hresult!firstname End Public Sub ReportLabel7_Data(Index As Integer) hresult.MoveTo(Index) Last.data = hresult!birth End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/myReport1.report000066400000000000000000000103701411575327000243170ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,71,97) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Spacing = "2cm" Count = 3 Index = 0 Text = ("First Page") { ReportVBox2 ReportVBox #MoveScaled(2,3,51,11) Expand = True } { ReportLabel9 ReportLabel #MoveScaled(4,16,48,13) Font = Font["Bitstream Charter,Bold,+9"] Padding = ReportPadding["Top:6mm;Bottom:6mm;Left:6mm;Right:6mm"] AutoResize = True Border = ReportBorder["Top:2mm LinearGradient(0,0,1,1,[#00FF00,#FFFFFF,#FF0000],[0,1,0.59]);Bottom:2mm LinearGradient(0,0,1,1,[#00FF00,#FFFFFF,#FF0000],[0,1,0.59]);Left:2mm LinearGradient(0,0,1,1,[#00FF00,#FFFFFF,#FF0000],[0,1,0.59]);Right:2mm LinearGradient(0,0,1,1,[#00FF00,#FFFFFF,#FF0000],[0,1,0.59]);TopLeftCorner:8mm;TopRightCorner:8mm;BottomRightCorner:8mm;BottomLeftCorner:8mm"] Text = ("Report About") Alignment = Align.Center } { ReportLabel10 ReportLabel #MoveScaled(6,35,43,7) Font = Font["Bitstream Charter,+9"] AutoResize = True Border = ReportBorder["Top:4mm #FFAF5F;Bottom:4mm #FFAF5F;Left:4mm #FFAF5F;Right:4mm #FFAF5F;TopLeftCorner:4mm;TopRightCorner:4mm;BottomRightCorner:4mm;BottomLeftCorner:4mm"] Text = ("All my friends") Alignment = Align.Center } { ReportVBox3 ReportVBox #MoveScaled(2,47,52,11) Expand = True Border = ReportBorder["Top:2px #000000;Bottom:2px #000000;Left:2px #000000;Right:2px #000000"] } Index = 1 Text = ("Friend Table") { ReportLabel11 ReportLabel #MoveScaled(5,3,57,2) Height = "15mm" Brush = ReportBrush["#BFBFBF"] Fixed = True Text = ("Report about all my frends") Alignment = Align.TopRight } { ReportLabel2 ReportLabel #MoveScaled(5,6,45,5) Height = "3cm" Font = Font["Bitstream Charter,+7"] Text = ("Test Database") Alignment = Align.Center } { ReportVBox1 ReportVBox #MoveScaled(5,13,45,38) Expand = True AutoResize = True Tag = "Boite 1" { ReportVBox4 ReportVBox #MoveScaled(3,12,41,24) AutoResize = True Tag = "Boite 2" { ReportHBox2 ReportHBox #MoveScaled(0,0,37.7143,5.1429) Height = "15mm" Fixed = True AutoResize = True { ReportLabel3 ReportLabel #MoveScaled(1,1,10.2857,3.4286) Width = "5 cm" Height = "10mm" Font = Font["Bitstream Charter,Bold,16"] AutoResize = True Text = ("Name") Alignment = Align.Center } { ReportLabel4 ReportLabel #MoveScaled(12,1,10.2857,3.4286) Width = "5 cm" Height = "10mm" Font = Font["Bitstream Charter,Bold,16"] Padding = ReportPadding["0.2 mm"] AutoResize = True Text = ("FirstName") Alignment = Align.Center } { ReportLabel5 ReportLabel #MoveScaled(24.8571,0.8571,10.2857,3.4286) Width = "5 cm" Height = "10mm" Font = Font["Bitstream Charter,Bold,16"] Padding = ReportPadding["0.2 mm"] Expand = True AutoResize = True Text = ("Birth") Alignment = Align.Center } } { ReportHBox1 ReportHBox #MoveScaled(1,8,38,4) Height = "10mm" Tag = "Boite 3" { ReportLabel1 ReportLabel #MoveScaled(0,0,10.2857,3.4286) Width = "5 cm" Font = Font["12"] Padding = ReportPadding["0.2 mm"] Alignment = Align.Center UseField = True } { ReportLabel6 ReportLabel #MoveScaled(11,0,10.2857,3.4286) Width = "5 cm" Font = Font["12"] Padding = ReportPadding["0.2 mm"] Alignment = Align.Center } { ReportLabel7 ReportLabel #MoveScaled(24,0,10.2857,3.4286) Width = "5 cm" Font = Font["12"] Padding = ReportPadding["2.2mm"] Expand = True Format = "dd/mm/aaaa" Alignment = Align.Right } } } } { ReportLabel8 ReportLabel #MoveScaled(2,51,46,3) Height = "6mm" Fixed = True Padding = ReportPadding["2mm"] AutoResize = True Text = ("$PAGE/$NPAGE") Alignment = Align.Right UseField = True } Index = 2 Text = ("") Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/myReport2.class000066400000000000000000000034061411575327000241140ustar00rootroot00000000000000' Gambas class file Private cList As New Collection[] Private cFactHead As New Collection[] Public Sub _new() Dim cLine As Collection Dim i As Integer 'Report.Debug = True cLine = New Collection cLine["nom"] = "Berton Toto " cLine["adresse"] = "La belle route" cLine["CP"] = "17520" cLine["ville"] = "Archiac" cLine["TOTALHT"] = 0 cFactHead.Add(cLine) 'Me.Data = cFactHead For i = 0 To 12 cLine = New Collection cLine["designation"] = "Patin a roulette" cLine["PU"] = 19.90 cLine["Q"] = 1 cList.Add(cLine) cLine = New Collection cLine["designation"] = "Cuilliere en bois" cLine["PU"] = 8.90 cLine["Q"] = 1 cList.Add(cLine) cLine = New Collection cLine["designation"] = "Lapin en peluche" cLine["PU"] = 19.90 cLine["Q"] = 5 cList.Add(cLine) cLine = New Collection cLine["designation"] = "Cloche de noël" cLine["PU"] = 20 cLine["Q"] = 10 cList.Add(cLine) cLine = New Collection cLine["designation"] = "Cheque en bois" cLine["PU"] = 1000 cLine["Q"] = 1 cList.Add(cLine) cLine = New Collection cLine["designation"] = "Pense bête" cLine["PU"] = 2 cLine["Q"] = 3 cList.Add(cLine) Next 'ReportHBox3.Data = cList 'ReportHBox12.Data = cList 'Compute Summaries i = 0 For Each cLine In cList Inc i cLine["id"] = i cLine["THT"] = Round(cLine["PU"] * cLine["Q"], -2) cFactHead[0]["TOTALHT"] += cLine["THT"] Next ReportHBox3.DataCount = cList.Count End Public Sub ligne_Data(Index As Integer) If Not Last.tag Then Return Last.data = cList[Index][Last.tag] End Public Sub entete_Data(Index As Integer) Last.data = cFactHead[Index][Last.tag] End Public Sub ReportVBox1_BeforeArrange() Debug "Before Arrange" End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/myReport2.report000066400000000000000000000147051411575327000243260ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,106,113) Padding = ReportPadding["1cm"] Spacing = "1cm" Index = 0 Text = ("Section 1") { ReportVBox2 ReportVBox #MoveScaled(4,4,80,42) Fixed = True AutoResize = True { ReportLabel9 ReportLabel #MoveScaled(0,0,68,7) Fixed = True Font = Font["Bitstream Charter,+11"] AutoResize = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Facture") Alignment = Align.Center } { ReportHBox1 ReportHBox #MoveScaled(1,9,72,25) Height = "4cm" Fixed = True Expand = True Border = ReportBorder["Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] { ReportHBox5 ReportHBox #MoveScaled(2,1,34,22) Width = "5cm" Height = "5cm" Fixed = True Expand = True AutoResize = True { ReportSvgImage1 ReportSvgImage #MoveScaled(3,2,25,17) Width = "50mm" Height = "30mm" Alignment = Align.Center Image = SvgImage.Load("img/logo.svg") } } { ReportVBox3 ReportVBox #MoveScaled(38,1,34,20) Padding = ReportPadding["Top:4mm;Bottom:4mm;Left:4mm;Right:4mm"] Expand = True AutoResize = True Tag = "*" { Nom ReportLabel entete Name = "Nom" #MoveScaled(2,1,28,3) AutoResize = True Tag = "nom" } { Adresse ReportLabel entete Name = "Adresse" #MoveScaled(2,6,28,3) AutoResize = True Tag = "adresse" } { ReportHBox6 ReportHBox #MoveScaled(1,9,30,5) AutoResize = True Tag = "*" Spacing = "2mm" { CP ReportLabel entete Name = "CP" #MoveScaled(2,1,10,3) Width = "25mm" Padding = ReportPadding["Right:1mm"] AutoResize = True Tag = "CP" } { ville ReportLabel entete Name = "ville" #MoveScaled(13,1,16,3) Expand = True AutoResize = True Tag = "ville" } } } } } { ReportVBox1 ReportVBox #MoveScaled(4,49,90,26) Expand = True { ReportHBox2 ReportHBox #MoveScaled(2,0,86,5) Height = "1cm" Fixed = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] { ReportLabel11 ReportLabel #MoveScaled(0,0,21,4) Width = "15mm" Font = Font["Bitstream Charter,Bold"] Border = ReportBorder["Right:1px #000000"] Text = ("Id") Alignment = Align.Center } { ReportLabel1 ReportLabel #MoveScaled(17,1,21,4) Width = "40%" Font = Font["Bitstream Charter,Bold"] Expand = True Border = ReportBorder["Top=1mm &H00000000&; Bottom=1mm &H00000000&; Left=1mm &H00000000&; "] Text = ("Designation") Alignment = Align.Center } { ReportLabel2 ReportLabel #MoveScaled(38,1,13,4) Width = "3cm" Font = Font["Bitstream Charter,Bold"] Border = ReportBorder["Left:1px #000000"] Text = ("PU HT") Alignment = Align.Center } { ReportLabel3 ReportLabel #MoveScaled(51,1,13,4) Width = "3cm" Font = Font["Bitstream Charter,Bold"] Tag = "*" Border = ReportBorder["Left:1px #000000"] Text = ("Quantité") Alignment = Align.Center } { ReportLabel4 ReportLabel #MoveScaled(68,1,13,4) Width = "3cm" Font = Font["Bitstream Charter,Bold"] Border = ReportBorder["Left:1px #000000"] Text = ("Total HT") Alignment = Align.Center } } { ReportHBox3 ReportHBox #MoveScaled(2,7,86,5) Height = "8mm" AutoResize = True Tag = "*" { ReportLabel12 ReportLabel ligne Name = "ReportLabel12" #MoveScaled(0,0,17,4) Width = "15mm" Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] AutoResize = True Border = ReportBorder["Left:1px #000000"] Alignment = Align.Center } { ReportLabel5 ReportLabel ligne Name = "ReportLabel5" #MoveScaled(19,0,21,4) Width = "40%" Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] Expand = True Tag = "designation" Border = ReportBorder["Left:1px #000000"] } { ReportLabel6 ReportLabel ligne Name = "ReportLabel6" #MoveScaled(39,1,13,4) Width = "3cm" Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] Tag = "PU" Border = ReportBorder["Left:1px #000000"] Alignment = Align.Right } { ReportLabel7 ReportLabel ligne Name = "ReportLabel7" #MoveScaled(52,1,13,4) Width = "3cm" Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] Tag = "Q" Border = ReportBorder["Left:1px #000000"] Alignment = Align.Right } { ReportLabel8 ReportLabel ligne Name = "ReportLabel8" #MoveScaled(70,1,13,4) Width = "3cm" Padding = ReportPadding["Top:2mm;Bottom:2mm;Left:2mm;Right:2mm"] Border = ReportBorder["Left:1px #000000;Right:1px #000000"] Format = "#.00 €" Alignment = Align.Right } } { ReportHBox8 ReportHBox #MoveScaled(3,13,83,2) Height = "1mm" Fixed = True Border = ReportBorder["Top:1px #000000"] Background = ReportBrush["#FFFF00"] } { ReportHBox4 ReportHBox #MoveScaled(4,17,81,5) AutoResize = True { ReportHBox7 ReportHBox #MoveScaled(4,2,62,2) Expand = True } { ReportLabel14 ReportLabel #MoveScaled(68,1,11,4) Width = "3cm" Padding = ReportPadding["Top:2mm;Bottom:2mm"] AutoResize = True Border = ReportBorder["Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Format = "#.00 €" Alignment = Align.Right } } } { ReportHBox9 ReportHBox #MoveScaled(1,100,101,6) Fixed = True AutoResize = True { ReportHBox10 ReportHBox #MoveScaled(2,1,31,3) Expand = True } { ReportLabel10 ReportLabel #MoveScaled(68,0,31,4) AutoResize = True Text = ("Page $PAGE") UseField = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/myReport5.class000066400000000000000000000006631411575327000241210ustar00rootroot00000000000000' Gambas class file Public Sub _new() Dim Rlbl As ReportLabel Dim i As Integer 'Report.Debug = True For i = 0 To 100 Rlbl = New ReportLabel(RVBCont) Rlbl.Autoresize = True Rlbl.Text = "Ligne " & i Rlbl.Border.bottom.Width = "1px" Rlbl.Padding.Top = "3 mm" Rlbl.Padding.Bottom = "1mm" Rlbl.Padding.Left = "2 mm" Rlbl.Top = i & "cm" Rlbl.Left = i & "cm" Rlbl.Width = "1 cm" Next End gambas-3.16.3/comp/src/gb.report/.src/Tests/Old/myReport5.report000066400000000000000000000052271411575327000243300ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,90,76) Tag = "*" Index = 0 Text = ("") { ReportHBox2 ReportHBox #MoveScaled(0,0,77,14) Height = "4cm" Fixed = True Padding = ReportPadding["Top:7mm;Bottom:7mm;Left:7mm;Right:7mm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#3398C3"] { ReportSvgImage1 ReportSvgImage #MoveScaled(2,2,11,11) Width = "4cm" Image = SvgImage.Load("img/logo.svg") } { ReportLabel3 ReportLabel #MoveScaled(20,2,48,10) Left = "1mm" Top = "1mm" Width = "3cm" Brush = ReportBrush["LinearGradient(1,0.04,0,0.04,[#DF6B00,#FFFFFF],[0,1])"] Fixed = True Font = Font["DejaVu Sans,Bold,+14"] Padding = ReportPadding["Top:6mm;Bottom:6mm;Left:6mm;Right:6mm"] Expand = True Text = ("Gambas") Alignment = Align.Left } } { ReportHBox1 ReportHBox #MoveScaled(0,15,87,56) Expand = True Border = ReportBorder["Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#FF007F"] { ReportVBox1 ReportVBox #MoveScaled(1,1,25,47) Width = "6cm" Background = ReportBrush["#DF6B00"] } { ReportVBox2 ReportVBox #MoveScaled(28,2,56,54) Expand = True Border = ReportBorder["Left:1mm #000000"] Background = ReportBrush["#FF7F00"] { RVBCont ReportPanel #MoveScaled(3,5,45,36) Expand = True Tag = "*" Background = ReportBrush["#FFFF00"] { ReportLabel1 ReportLabel #MoveScaled(3,5,43,23) Left = "25%" Top = "5cm" Width = "50%" Height = "5cm" Brush = ReportBrush["LinearGradient(0.21,0.91,0.81,0.11,[#FF000000,#FFFFFF],[0,1])"] Fixed = True Font = Font["Bold,+15"] Ignore = True Background = ReportBrush["#FF1F57"] Text = ("gambas") Alignment = Align.Center } { ReportImage1 ReportImage #MoveScaled(10,17,14,8) Height = "3cm" Alignment = Align.Center Image = Image.Load("printer1.png") } } { ReportLabel2 ReportLabel #MoveScaled(9,47,47,5) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold,+1"] Padding = ReportPadding["Top:4mm;Bottom:4mm;Left:2mm;Right:2mm"] AutoResize = True Border = ReportBorder["Top:1mm #000000"] Background = ReportBrush["#3398C3"] Text = ("Page $PAGE on $NPAGE") Alignment = Align.Right UseField = True } } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/OutputReport.class000066400000000000000000000075571411575327000242020ustar00rootroot00000000000000' Gambas class file Public nnoderows As Integer Public nanchorrows As Integer Public Sub _new() 'enter current date on the header ReportLabel2.Text = Date 'enter the project information in the header on the print out page 'With FMain.Project ReportLabel3.Text = "Project Title: " ' & .JobTitle ReportLabel4.Text = "Project No.: " ' & .Number ReportLabel5.Text = "Company: " ' & .Company ReportLabel6.Text = "Designer: " '& .Designer ReportLabel7.Text = "Base Plate ID: " ' & .BasePlateID 'End With 'set count to four to display the results for qmax. Tmax, L, and phi ReportHBox9.DataCount = 4 'set the number of plate nodes to display in print out tables 'nnoderows = Module1.RoundUpInt(FMain.ConcreteSection.cNodes.Count / 2) ReportHBox5.DataCount = 9 'set the number of anchor rods to display in print out tables ' nanchorrows = Module1.RoundUpInt(FMain.cAnchorRods.Count / 2) ReportHBox7.DataCount = 3 FullRepeat.DataCount = 3 End Public Sub ReportImage2_Data(Index As Integer) ' Dim current_results As Results ' Dim pSection As Picture ' ' 'create a new picture object for drawing the base plate ' pSection = New Picture(300, 300, False) ' ' 'get the results for first load case ' current_results = FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)] ' ' 'refresh base plate drawing with results ' Module1.DrawBasePlate(pSection, 1, current_results) ' ' 'add the picture of the base plate to the page ' ReportImage2.Image = pSection.Image End Public Sub ReportLabel9_Data(Index As Integer) Last.Data = "Load Case: " '& FMain.cLoads[Str$(ReportHBox3.DataIndex)].label End Public Sub ReportLabel14_Data(Index As Integer) Dim $value As String Select Case Index Case 0 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].Tmax, 2) Last.Data = "T(max) = " & $value & " lbs" Case 1 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].maxstress, 2) Last.Data = "q(max) = " & $value & " psi" Case 2 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].L, 2) Last.Data = "L = " & $value & " in" Case 3 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].phi, 2) Last.Data = "phi = " & $value & " degrees" Case Else End Select End Public Sub ReportLabel25_Data(Index As Integer) Last.Data = Str(Index + 1) &/ Str(FullRepeat.DataIndex) End Public Sub ReportLabel29_Data(Index As Integer) Last.Data = nnoderows + Index + 1 End Public Sub ReportLabel26_Data(Index As Integer) Dim value As Float 'value = FMain.AnalysisResults[Str$(ReportVBox4.DataIndex)].stress[Index] 'Last.Data = Module1.AdvFormat(value, 2) End Public Sub ReportLabel30_Data(Index As Integer) ' Dim value As Float ' Dim current_results As Results ' ' current_results = FMain.AnalysisResults[Str$(ReportVBox4.DataIndex)] ' If nnoderows + Index < current_results.stress.Count Then ' value = current_results.stress[nnoderows + Index] ' Last.Data = Module1.AdvFormat(value, 2) ' Endif End Public Sub ReportLabel49_Data(Index As Integer) Last.Data = Str(Index + 1) &/ Str(FullRepeat.DataIndex) End Public Sub ReportLabel52_Data(Index As Integer) Last.Data = nanchorrows + Index + 1 End Public Sub ReportLabel50_Data(Index As Integer) Dim value As Float ' value = FMain.AnalysisResults[Str$(ReportVBox6.DataIndex)].T[Index] ' Last.Data = Module1.AdvFormat(value, 2) End Public Sub ReportLabel53_Data(Index As Integer) ' Dim value As Float ' Dim current_results As Results ' ' current_results = FMain.AnalysisResults[Str$(ReportVBox6.DataIndex)] ' If nanchorrows + Index < current_results.T.Count Then ' value = current_results.T[nanchorrows + Index] ' Last.Data = Module1.AdvFormat(value, 2) ' Endif End gambas-3.16.3/comp/src/gb.report/.src/Tests/OutputReport.report000066400000000000000000000217411411575327000243770ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,76,85) Fixed = True Padding = ReportPadding["Top:20mm;Bottom:20mm;Left:20mm;Right:20mm"] Expand = True Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(2,0,62,11) Height = "25mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportImage1 ReportImage #MoveScaled(1,1,18,9) Width = "51mm" AutoResize = True } { ReportLabel1 ReportLabel #MoveScaled(21,1,10,9) AutoResize = True Text = ("Version 1.0") Alignment = Align.BottomLeft } { ReportLabel2 ReportLabel #MoveScaled(31,1,30,9) Expand = True AutoResize = True Text = ("Date") Alignment = Align.BottomRight UseField = True } } { ReportVBox1 ReportVBox #MoveScaled(2,11,62,9) Height = "28.01mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportLabel3 ReportLabel #MoveScaled(0,0,12,2) Height = "6mm" AutoResize = True Text = ("Project Title:") Alignment = Align.TopLeft } { ReportLabel4 ReportLabel #MoveScaled(0,2,12,2) Height = "6mm" AutoResize = True Text = ("Project No.:") Alignment = Align.TopLeft } { ReportLabel5 ReportLabel #MoveScaled(0,4,12,2) Height = "6mm" AutoResize = True Text = ("Company:") Alignment = Align.TopLeft } { ReportLabel6 ReportLabel #MoveScaled(0,6,12,2) Height = "6mm" AutoResize = True Text = ("Designer:") Alignment = Align.TopLeft } } { ReportHBox2 ReportHBox #MoveScaled(2,20,62,3) Height = "8mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportLabel7 ReportLabel #MoveScaled(0,0,12,2) Height = "6mm" AutoResize = True Text = ("Base Plate ID:") Alignment = Align.TopLeft } } { FullRepeat ReportPanel #MoveScaled(2,25,63,50) AutoResize = True Tag = "**" ForceNewPage = True { ReportHBox3 ReportHBox #MoveScaled(0,0,62,17) Height = "61mm" Fixed = True Expand = True { ReportVBox3 ReportVBox #MoveScaled(1,1,18,14) AutoResize = True { ReportHBox8 ReportHBox #MoveScaled(1,2,15,4) Width = "51mm" Height = "12mm" { ReportLabel9 ReportLabel #MoveScaled(1,1,13,2) Font = Font["+1"] Expand = True } } { ReportHBox9 ReportHBox #MoveScaled(1,8,15,4) Width = "51mm" Height = "6mm" { ReportLabel14 ReportLabel #MoveScaled(1,1,13,2) Expand = True } } } { ReportImage2 ReportImage #MoveScaled(31,1,17,15) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Background = ReportBrush["#0000FF"] Alignment = Align.Center } } { ReportVBox4 ReportVBox #MoveScaled(1,18,62,14) AutoResize = True Tag = "Serie 1" { ReportLabel19 ReportLabel #MoveScaled(2,0,16,4) Fixed = True Font = Font["+1"] Padding = ReportPadding["Top:3mm"] AutoResize = True Text = ("Bearing Pressue") } { ReportHBox4 ReportHBox #MoveScaled(1,3,60,4) Height = "6mm" Fixed = True { ReportLabel20 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Node #") Alignment = Align.Center } { ReportLabel21 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Brg. Press., psi") Alignment = Align.Center } { ReportLabel22 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel23 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Node #") Alignment = Align.Center } { ReportLabel24 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Brg. Press., psi") Alignment = Align.Center } } { ReportHBox5 ReportHBox #MoveScaled(1,8,60,4) Height = "6mm" { ReportLabel25 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel26 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel27 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel29 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel30 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } } } { ReportVBox6 ReportVBox #MoveScaled(1,33,62,14) AutoResize = True Tag = "Serie2" { ReportLabel31 ReportLabel #MoveScaled(2,0,19,4) Fixed = True Font = Font["+1"] Padding = ReportPadding["Top:3mm"] AutoResize = True Text = ("Anchor Rod Tension") } { ReportHBox6 ReportHBox #MoveScaled(1,3,60,4) Height = "6mm" Fixed = True { ReportLabel44 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Rod #") Alignment = Align.Center } { ReportLabel45 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Tension, lbs") Alignment = Align.Center } { ReportLabel46 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel47 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Rod #") Alignment = Align.Center } { ReportLabel48 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Tension, lbs") Alignment = Align.Center } } { ReportHBox7 ReportHBox #MoveScaled(1,8,60,4) Height = "6mm" { ReportLabel49 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel50 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel51 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel52 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel53 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } } } } { ReportHBox10 ReportHBox #MoveScaled(2,75,62,4) Fixed = True Expand = True AutoResize = True { ReportLabel8 ReportLabel #MoveScaled(22,1,21,2) Expand = True AutoResize = True Text = ("Page $PAGE of $NPAGE") Alignment = Align.Bottom UseField = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/OutputReport2.class000066400000000000000000000105521411575327000242510ustar00rootroot00000000000000' Gambas class file Public nnoderows As Integer Public nanchorrows As Integer Public Sub _new() 'Report.Debug = True 'enter current date on the header ReportLabel2.Text = Date 'enter the project information in the header on the print out page 'With FMain.Project ReportLabel3.Text = "Project Title: " ' & .JobTitle ReportLabel4.Text = "Project No.: '" '& .Number ReportLabel5.Text = "Company: " '& .Company ReportLabel6.Text = "Designer: " '& .Designer ReportLabel7.Text = "Base Plate ID: " ' & .BasePlateID 'End With 'set count to four to display the results for qmax. Tmax, L, and phi ReportHBox9.DataCount = 4 'set the number of plate nodes to display in print out tables ' nnoderows = Module1.RoundUpInt(FMain.ConcreteSection.cNodes.Count / 2) ReportHBox5.DataCount = 11 'nnoderows 'set the number of anchor rods to display in print out tables 'nanchorrows = Module1.RoundUpInt(FMain.cAnchorRods.Count / 2) ReportHBox7.DataCount = 13 'nanchorrows 'set the number of report panels - one for each load combination result ReportPanel1.DataCount = 6 'FMain.AnalysisResults.Count End Public Sub ReportImage2_Data(Index As Integer) 'Dim current_results As Results Dim pSection As Picture 'create a new picture object for drawing the base plate pSection = New Picture(300, 300, False) 'get the results for first load case 'current_results = FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)] 'refresh base plate drawing with results 'Module1.DrawBasePlate(pSection, 1, current_results) 'add the picture of the base plate to the page ReportImage2.Image = pSection.Image End Public Sub ReportLabel9_Data(Index As Integer) Last.Data = "Load Case: " '& FMain.cLoads[Str$(ReportHBox3.DataIndex)].label End Public Sub ReportLabel14_Data(Index As Integer) Dim $value As String Select Case Index Case 0 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].Tmax, 2) Last.Data = "T(max) = " & 3 & " lbs" Case 1 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].maxstress, 2) Last.Data = "q(max) = " & 3 & " psi" Case 2 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].L, 2) Last.Data = "L = " & 3 & " in" Case 3 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].phi, 2) Last.Data = "phi = " & 3 & " degrees" Case Else End Select End Public Sub ReportLabel25_Data(Index As Integer) Last.Data = Index + 1 End Public Sub ReportLabel29_Data(Index As Integer) ' Dim current_results As Results 'current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] 'If nnoderows + Index < current_results.stress.Count Then Last.Data = nnoderows + Index + 1 'Else ' Last.Data = Null ' Endif End Public Sub ReportLabel26_Data(Index As Integer) Dim value As Float 'value = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)].stress[Index] Last.Data = "tt" 'Module1.AdvFormat(value, 2) End Public Sub ReportLabel30_Data(Index As Integer) Dim value As Float 'Dim current_results As Results 'current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] ' If nnoderows + Index < current_results.stress.Count Then 'value = current_results.stress[nnoderows + Index] Last.Data = "mm" 'Module1.AdvFormat(value, 2) ' Else Last.Data = Null 'Endif End Public Sub ReportLabel49_Data(Index As Integer) Last.Data = Index + 1 End Public Sub ReportLabel52_Data(Index As Integer) 'Dim current_results As Results 'current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] 'If nanchorrows + Index < current_results.T.Count Then Last.Data = nanchorrows + Index + 1 'Else ' Last.Data = Null ' Endif End Public Sub ReportLabel50_Data(Index As Integer) Dim value As Float 'value = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)].T[Index] Last.Data = "kkkk" 'Module1.AdvFormat(value, 2) End Public Sub ReportLabel53_Data(Index As Integer) Dim value As Float 'Dim current_results As Results ' current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] ' If nanchorrows + Index < current_results.T.Count Then ' value = current_results.T[nanchorrows + Index] Last.Data = "qqqqqq" 'Module1.AdvFormat(value, 2) ' Else ' Last.Data = Null 'Endif End gambas-3.16.3/comp/src/gb.report/.src/Tests/OutputReport2.report000066400000000000000000000217631411575327000244650ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,76,88) Fixed = True Padding = ReportPadding["Top:20mm;Bottom:10mm;Left:20mm;Right:20mm"] Ignore = True AutoResize = True Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(2,0,62,11) Height = "25mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportImage1 ReportImage #MoveScaled(1,1,18,9) Width = "51mm" AutoResize = True } { ReportLabel1 ReportLabel #MoveScaled(21,1,10,9) Width = "25mm" AutoResize = True Text = ("Version 1.0") Alignment = Align.BottomLeft } { ReportLabel2 ReportLabel #MoveScaled(31,1,30,9) Expand = True AutoResize = True Text = ("Date") Alignment = Align.BottomRight UseField = True } } { ReportVBox1 ReportVBox #MoveScaled(2,11,62,9) Height = "28.01mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportLabel3 ReportLabel #MoveScaled(0,0,12,2) Height = "6mm" AutoResize = True Text = ("Project Title:") Alignment = Align.TopLeft } { ReportLabel4 ReportLabel #MoveScaled(0,2,12,2) Height = "6mm" AutoResize = True Text = ("Project No.:") Alignment = Align.TopLeft } { ReportLabel5 ReportLabel #MoveScaled(0,4,12,2) Height = "6mm" AutoResize = True Text = ("Company:") Alignment = Align.TopLeft } { ReportLabel6 ReportLabel #MoveScaled(0,6,12,2) Height = "6mm" AutoResize = True Text = ("Designer:") Alignment = Align.TopLeft } } { ReportHBox2 ReportHBox #MoveScaled(2,20,62,3) Height = "8mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportLabel7 ReportLabel #MoveScaled(0,0,12,2) Height = "6mm" AutoResize = True Text = ("Base Plate ID:") Alignment = Align.TopLeft } } { ReportPanel1 ReportPanel #MoveScaled(2,25,67,52) AutoResize = True ForceNewPage = True { ReportHBox3 ReportHBox #MoveScaled(1,1,62,17) Height = "61mm" Expand = True { ReportVBox3 ReportVBox #MoveScaled(1,1,18,14) AutoResize = True { ReportHBox8 ReportHBox #MoveScaled(1,2,15,4) Width = "51mm" Height = "12mm" { ReportLabel9 ReportLabel #MoveScaled(1,1,13,2) Font = Font["+1"] Expand = True } } { ReportHBox9 ReportHBox #MoveScaled(1,8,15,4) Width = "51mm" Height = "6mm" { ReportLabel14 ReportLabel #MoveScaled(1,1,13,2) Expand = True } } } { ReportImage2 ReportImage #MoveScaled(31,1,17,15) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Alignment = Align.Center } } { ReportVBox4 ReportVBox #MoveScaled(1,20,62,14) AutoResize = True { ReportLabel19 ReportLabel #MoveScaled(2,0,16,4) Fixed = True Font = Font["+1"] Padding = ReportPadding["Top:3mm"] AutoResize = True Text = ("Bearing Pressue") } { ReportHBox4 ReportHBox #MoveScaled(1,3,60,4) Height = "6mm" Fixed = True { ReportLabel20 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Node #") Alignment = Align.Center } { ReportLabel21 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Brg. Press., psi") Alignment = Align.Center } { ReportLabel22 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel23 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Node #") Alignment = Align.Center } { ReportLabel24 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Brg. Press., psi") Alignment = Align.Center } } { ReportHBox5 ReportHBox #MoveScaled(1,8,60,4) Height = "6mm" { ReportLabel25 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel26 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel27 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel29 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel30 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } } } { ReportVBox6 ReportVBox #MoveScaled(1,36,62,14) AutoResize = True { ReportLabel31 ReportLabel #MoveScaled(2,0,19,4) Fixed = True Font = Font["+1"] Padding = ReportPadding["Top:3mm"] AutoResize = True Text = ("Anchor Rod Tension") } { ReportHBox6 ReportHBox #MoveScaled(1,3,60,4) Height = "6mm" Fixed = True { ReportLabel44 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Rod #") Alignment = Align.Center } { ReportLabel45 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Tension, lbs") Alignment = Align.Center } { ReportLabel46 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel47 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Rod #") Alignment = Align.Center } { ReportLabel48 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Tension, lbs") Alignment = Align.Center } } { ReportHBox7 ReportHBox #MoveScaled(1,8,60,4) Height = "6mm" { ReportLabel49 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel50 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel51 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel52 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel53 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } } } } { ReportPanel2 ReportPanel #MoveScaled(2,77,69,1) Fixed = True Expand = True } { ReportHBox10 ReportHBox #MoveScaled(2,79,62,4) Height = "1cm" Fixed = True AutoResize = True { ReportLabel8 ReportLabel #MoveScaled(22,1,21,2) Expand = True AutoResize = True Text = ("Page $PAGE of $NPAGE") Alignment = Align.Bottom UseField = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Paints.class000066400000000000000000000011511411575327000227240ustar00rootroot00000000000000' Gambas class file 'Export ' ' Static Public Sub Begin(Device As Object) ' ' Debug ' Super.Begin(Device) ' ' End ' ' Static Public Sub End(Device As Object) ' ' Debug ' Super.End(Device) ' ' End ' ' ' ' Static Public Sub Rectangle(X As Float, Y As Float, W As Float, H As Float) ' ' Debug CStr(X); ", "; CStr(Y); ", "; CStr(W); ", "; CStr(H) ' Super.Rectangle(X, Y, W, H) ' ' End ' ' ' Static Public Sub Text(Text As String, Optional X As Float, Y As Float, Width As Float, Height As Float, Alignment As Integer) ' ' 'Debug Paint.Font.Size ' Super.Text(Text, X, Y, Width, Height, Alignment) ' ' End gambas-3.16.3/comp/src/gb.report/.src/Tests/Report11.class000066400000000000000000000022271411575327000231100ustar00rootroot00000000000000' Gambas class file ' 'Private hMap As New Map ' 'Private hImgCache As Image Public Sub _new() ReportDrawingArea1.BoxShadow.XOffset = "1mm" ReportDrawingArea1.BoxShadow.YOffset = "1mm" ReportDrawingArea1.BoxShadow.Color = Color.Gray ReportDrawingArea1.BoxShadow.Blur = "1mm" ' ' ' ' hMap.AddTile("gg", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "145"]).SubDomains = ["0", "1", "2"] ' ' ' ' hmap.Zoom = 17 ' ' 'ReportPanel1.DataCount = 200 End ' ' ' ' Public Sub ReportDrawingArea1_Draw(width As Integer, Height As Integer, Index As Integer) ' ' Draw.FillRect(0, 0, width, height, Color.White) ' ' 'Print width, Height ' ' 'hMap.Resize(Width, Height) ' ' 'If Paint.Device Is Printer Then Stop ' ' hMap.Center = MapPoint(Geo.SexToDec("45°31'33,33''N"), Geo.SexToDec("0°18'43,50''W")) ' ' 'hMap.Center = MapPoint(Geo.SexToDec(Str(CInt(Rnd(30, 45))) & "°31'33,33''N"), Geo.SexToDec("0°18'43,50''W")) ' ' 'If Not hImgCache Then ' ' hImgCache = hMap.Grab(hMap.Bounds, width / ReportUnits.DesktopScale, Height / ReportUnits.DesktopScale, 0, 18) ' ' Draw.Image(hImgCache, 0, 0, width, Height) End gambas-3.16.3/comp/src/gb.report/.src/Tests/Report11.report000066400000000000000000000015011411575327000233100ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:3cm;Bottom:3cm;Left:3cm;Right:3cm"] Spacing = "2cm" Index = 0 Text = ("") { ReportLabel1 ReportLabel #MoveScaled(7,1,54,8) Font = Font["Bold,+12"] AutoResize = True Text = ("C'est la maison !") Alignment = Align.Center } { ReportPanel1 ReportPanel #MoveScaled(6,12,53,31) Padding = ReportPadding["Top:1cm;Bottom:1cm;Left:1cm;Right:1cm"] AutoResize = True { ReportDrawingArea1 ReportDrawingArea #MoveScaled(5,6,52,30) Width = "7mm" Height = "6cm" Border = ReportBorder["Top:2mm #000000;Bottom:2mm #000000;Left:2mm #000000;Right:2mm #000000;TopLeftCorner:1mm;TopRightCorner:1mm;BottomRightCorner:1mm;BottomLeftCorner:1mm"] Cached = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Report41.class000066400000000000000000000015261411575327000231140ustar00rootroot00000000000000' Gambas class file Private hResult As Result Private hResult2 As Result Public Sub Report_Open() Connections["MainConn"].Open hResult = db.Exec("select * from parc_ilots") ReportHBox1.DataCount = 3 'hResult.Count Report.Debug = True End Public Sub ReportLabel1_Data(Index As Integer) hResult.MoveTo(Index) Last.Data = hResult!nom End Public Sub ReportHBox1_BeforeData() hResult.MoveTo(ReportHBox1.DataIndex) Print "Section : " & hResult!id & "/" & ReportHBox1.DataIndex hResult2 = db.Exec("select * from liaisonilotparc where id_ilot=&1", hResult!id) ReportHBox2.DataCount = hResult2.Count Print "DataCount : " & hResult2.Count End Public Sub ReportLabel2_Data(Index As Integer) hResult2.MoveTo(Index) Print " " & ReportHBox1.DataIndex & "/" & Index Try Last.Data = hResult2!id_parc 'If Error Then Stop End gambas-3.16.3/comp/src/gb.report/.src/Tests/Report41.report000066400000000000000000000015011411575327000233130ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,109,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Spacing = "1cm" Index = 0 Text = ("") { ReportVBox1 ReportVBox #MoveScaled(4,5,101,53) Spacing = "1cm" { ReportHBox1 ReportHBox #MoveScaled(3,4,94,35) { ReportLabel1 ReportLabel #MoveScaled(0,0,6,32) Border = ReportBorder["Top:0.1mm #000000;Bottom:0.1mm #000000;Left:0.1mm #000000;Right:0.1mm #000000"] Rotate = 90 } { ReportVBox2 ReportVBox #MoveScaled(13,1,79,32) Expand = True { ReportHBox2 ReportHBox #MoveScaled(1,1,77,4) Tag = "*" { ReportLabel2 ReportLabel #MoveScaled(2,0,46,4) Expand = True } } } } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Report51.class000066400000000000000000000035651411575327000231220ustar00rootroot00000000000000' Gambas class file Private hResult As Result Private hResult2 As Result Private hVBox As ReportVBox Public Sub Report_Open() hVBox = New ReportVBox(ReportHBox1) hVBox.Spacing = "1cm" Connections["MainConn"].Open hResult = db.Exec("select * from parc_ilots") 'Report.Debug = True 'ReportHBox1.BackGround = ReportBrush.Color(Color.Yellow) 'hVBox.BackGround = ReportBrush.Color(Color.red) hVBox.Width = "50%" For Each hResult AddIlot(hResult!nom, hResult!id) Next End Private Sub AddIlot(sIlot As String, iIlot As Integer) Dim hHBox1 As New ReportHBox(hVBox) Dim hLblIlot As New ReportLabel(hHBox1) Dim hVBoxList As New ReportVBox(hHBox1) Dim hHBoxLine As ReportHBox Dim hLblParcelle As ReportLabel Dim i As Integer hLblIlot.Rotate = 90 hVBoxList.Expand = True hVBoxList.Border.Top.Width = "0.1mm" hVBoxList.Border.Right.Width = "0.1mm" hHbox1.Border.Bottom.Width = "0.1mm" hLblIlot.Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] hLblIlot.Text = sIlot hLblIlot.Border = ReportBorder["Top:0.1mm #000000;Left:0.1mm #000000;Right:0.1mm #000000"] hResult2 = db.Exec("select p.nom parcelle from liaisonilotparc lip left join parcelles p on p.id=lip.id_parc where id_ilot=&1 order by lip.ordre", iIlot) For Each hResult2 hHBoxLine = New ReportHBox(hVBoxList) hHBoxLine.Expand = True 'hHBoxLine.Height = "5mm" hLblIlot = New ReportLabel(hHBoxLine) hHBoxLine.Border = ReportBorder["Bottom:0.1mm #000000;"] hLblIlot.Text = hResult2!parcelle hLblIlot.Padding.Left = "1mm" hLblIlot.Expand = True 'hHBoxLine.Expand = True 'hLblIlot.Border = ReportBorder["Bottom:0.1mm #00000"] For i = 0 To 3 hLblIlot = New ReportLabel(hHBoxLine) hLblIlot.Width = "5mm" hLblIlot.Border = ReportBorder["Left:0.1mm #000000;"] Next Next End gambas-3.16.3/comp/src/gb.report/.src/Tests/Report51.report000066400000000000000000000004361411575327000233220ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Spacing = "1cm" Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(0,2,62,57) Height = "10cm" Expand = True } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Report52.class000066400000000000000000000035651411575327000231230ustar00rootroot00000000000000' Gambas class file Private hResult As Result Private hResult2 As Result Private hVBox As ReportVBox Public Sub Report_Open() hVBox = New ReportVBox(ReportHBox1) hVBox.Spacing = "1cm" Connections["MainConn"].Open hResult = db.Exec("select * from parc_ilots") 'Report.Debug = True 'ReportHBox1.BackGround = ReportBrush.Color(Color.Yellow) 'hVBox.BackGround = ReportBrush.Color(Color.red) hVBox.Width = "50%" For Each hResult AddIlot(hResult!nom, hResult!id) Next End Private Sub AddIlot(sIlot As String, iIlot As Integer) Dim hHBox1 As New ReportHBox(hVBox) Dim hLblIlot As New ReportLabel(hHBox1) Dim hVBoxList As New ReportVBox(hHBox1) Dim hHBoxLine As ReportHBox Dim hLblParcelle As ReportLabel Dim i As Integer hLblIlot.Rotate = 90 hVBoxList.Expand = True hVBoxList.Border.Top.Width = "0.1mm" hVBoxList.Border.Right.Width = "0.1mm" hHbox1.Border.Bottom.Width = "0.1mm" hLblIlot.Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] hLblIlot.Text = sIlot hLblIlot.Border = ReportBorder["Top:0.1mm #000000;Left:0.1mm #000000;Right:0.1mm #000000"] hResult2 = db.Exec("select p.nom parcelle from liaisonilotparc lip left join parcelles p on p.id=lip.id_parc where id_ilot=&1 order by lip.ordre", iIlot) For Each hResult2 hHBoxLine = New ReportHBox(hVBoxList) hHBoxLine.Expand = True 'hHBoxLine.Height = "5mm" hLblIlot = New ReportLabel(hHBoxLine) hHBoxLine.Border = ReportBorder["Bottom:0.1mm #000000;"] hLblIlot.Text = hResult2!parcelle hLblIlot.Padding.Left = "1mm" hLblIlot.Expand = True 'hHBoxLine.Expand = True 'hLblIlot.Border = ReportBorder["Bottom:0.1mm #00000"] For i = 0 To 3 hLblIlot = New ReportLabel(hHBoxLine) hLblIlot.Width = "5mm" hLblIlot.Border = ReportBorder["Left:0.1mm #000000;"] Next Next End gambas-3.16.3/comp/src/gb.report/.src/Tests/Report52.report000066400000000000000000000004361411575327000233230ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Spacing = "1cm" Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(0,2,62,57) Height = "10cm" Expand = True } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Report9.class000066400000000000000000000005241411575327000230350ustar00rootroot00000000000000' Gambas class file Public Sub _new() 'Report.Debug = True ' Me.Width = "5cm" ' Me.Height = "10cm" ReportPanel1.DataCount = 100 End Public Sub Report_Open() ReportPanel1.BoxShadow.XOffset = "1mm" ReportPanel1.BoxShadow.YOffset = "1mm" 'ReportPanel1.BoxShadow.Spread = "2mm" ReportPanel1.BoxShadow.Blur = "4mm" Me.Clear End gambas-3.16.3/comp/src/gb.report/.src/Tests/Report9.report000066400000000000000000000010011411575327000232320ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Index = 0 Text = ("") { ReportVPanel1 ReportVPanel #MoveScaled(4,1,58,51) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Spacing = "1cm" { ReportPanel1 ReportPanel #MoveScaled(12,6,15,16) Width = "6cm" Height = "6cm" Background = ReportBrush["#FFFFFF"] OnePiece = True } } Index = 0 } gambas-3.16.3/comp/src/gb.report/.src/Tests/Test.module000066400000000000000000000002671411575327000225740ustar00rootroot00000000000000' Gambas module file Public Sub Main() ' Dim hreport As New Report9 Dim hprinter As New Printer hprinter.OutputFile = User.Home &/ "sortie.pdf" hreport.Print(hprinter) End gambas-3.16.3/comp/src/gb.report/.src/Tests/rpTestShadowGrid.class000066400000000000000000000004771411575327000247350ustar00rootroot00000000000000' Gambas class file Public Sub ReportDrawingArea1_Draw() Paint.MoveTo(0, 0) Paint.LineTo(Paint.Width, Paint.Height) Paint.Stroke End Public Sub Report_Open() ReportGridView1.Columns.Count = 3 ReportGridView1.Rows.Count = 20 'Report.Debug = True End Public Sub rpTestShadow_Open() End gambas-3.16.3/comp/src/gb.report/.src/Tests/rpTestShadowGrid.report000066400000000000000000000012371411575327000251360ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Font = Font["+9"] Padding = ReportPadding["Top:6cm;Bottom:6cm;Left:6cm;Right:6cm"] Spacing = "1cm" Index = 0 Text = ("") { ReportLabel1 ReportLabel #MoveScaled(3,2,58,9) Height = "7cm" Font = Font["Georgia,+12"] AutoResize = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Text = ("coucou") Rotate = -1 } { ReportGridView1 ReportGridView #MoveScaled(5,18,52,30) Height = "5cm" Border = ReportBorder["Top:0.1mm #000000;Bottom:0.1mm #000000;Left:0.1mm #000000;Right:0.1mm #000000"] } Index = 0 } gambas-3.16.3/comp/src/gb.report/ChangeLog000066400000000000000000000003571411575327000202510ustar00rootroot00000000000000[GB.REPORT] * NEW: Negative numbers are allowed on string size properties. It allow to use negative value on XOffset or YOffset for shadows. * BUG: Resolve the bug on clear (Even if i don't remember for what i've done this property) gambas-3.16.3/comp/src/gb.report/gambas.svg000066400000000000000000001124521411575327000204520ustar00rootroot00000000000000 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 gambas-3.16.3/comp/src/gb.report/img/000077500000000000000000000000001411575327000172465ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/img/16/000077500000000000000000000000001411575327000174745ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/img/16/red-arrow-h.png000066400000000000000000000001651411575327000223330ustar00rootroot00000000000000PNG  IHDRaV PLTEltRNS@fIDATca`d`r`F Ac"HIENDB`gambas-3.16.3/comp/src/gb.report/img/16/red-arrow-v.png000066400000000000000000000001701411575327000223450ustar00rootroot00000000000000PNG  IHDRaV PLTEltRNS@fIDATc``` eZ m0S#ŃIENDB`gambas-3.16.3/comp/src/gb.report/img/22/000077500000000000000000000000001411575327000174715ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/img/22/FullWidth.png000066400000000000000000000002131411575327000220750ustar00rootroot00000000000000PNG  IHDRnRIDAT( -_KDؤpġEđŰıEĉEp:( [`˜(^v?40HD%&c9J$IԘ;o5nPplV AR~ )?HAR~8_л2θIENDB`gambas-3.16.3/comp/src/gb.report/img/32/Empty.png000066400000000000000000000013171411575327000213000ustar00rootroot00000000000000PNG  IHDR DMPLTE½񩥤賓䨤񨣡槣瀀󧤢𧣢ޭبڣ۠ǧܞÛŦܜڝ֟ŧףm=tRNS@f0IDAT8ˍiS@qL%00-[>,MLj 0;0L|M|$\BB(H$r ʵڢ$ %F@MtXiA$ RPo>N}c06?ƒ* #d/i $@!zð{QJnl|brjzfvn~;eiyeum}cEmPSF݂`O?@ã#ю+3̅3(^^UswwC}u{џ_^]S_Yb IENDB`gambas-3.16.3/comp/src/gb.report/img/32/grayscale.png000066400000000000000000000030341411575327000221520ustar00rootroot00000000000000PNG  IHDR DPLTE½񩥤賓߹زǭ쨤絴໺񨣡گէ训ͻ츷㡟Ӧީ۴҇蘖غ𙙘࣢񼻺utt󧤢北usswvu얕tss梡ɰ޿٘Ⱦ𧣢٬ޭ̛ڣ𤣢۠ǧÛŦܜڝ֟ŧףBmHtRNS@fIDAT8c` 02P,l\<<||| U *,"*&.!)%-##++'/JBPl"* i9*)kkJjii鳪\;H^XL X` -5mlLM]tu]a)ɻ;8xxziryL?t@`|p{MX8NDc?TA]tLLW\|BbZrJJAZLAlFLKVvNn^\r~JLJJLADg^B 0Ԥ  JYy+*Ҫ@!QNfOCcSsIxK K[;OGgk5޾ &psO4ĈSI$OWS0SRfl9~~2sͷ(7cƌ0p/\]jIR@e˥W*rk[|MWmٺe53 xv̲kKm~{탙_'B%@ACXX= j5+>w:q2pgΞ;Sp!/%WN\Vst7oݾUp }(Ĺܯ66<_Di m>2 "<5TP X]=X DK7o!˃ jO(ys5]|}`P ~jɲ\Umdtl|brjzfv*)׮&-,.-6QTڔ흲R-1d{J \m 'g%P~uyu}Sb3BۻGPOe0oU>>f50ŒsB -l@}a jIENDB`gambas-3.16.3/comp/src/gb.report/img/control/000077500000000000000000000000001411575327000207265ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report/img/control/hbox.png000066400000000000000000000002361411575327000223750ustar00rootroot00000000000000PNG  IHDR g PLTEF6tRNSv8?IDATc耀N(`dh08'b@؃!PD> L \&P(N AHIENDB`gambas-3.16.3/comp/src/gb.report/img/control/label.png000066400000000000000000000007221411575327000225140ustar00rootroot00000000000000PNG  IHDR sIDATHǽKVa?kb([BAPKe"%M!霸8$"T:c tQ> >zzobY|U.?``p$Hk b鬜 slS}58`:+`A7_-- 1Nh݊ݖFȣ"1 _%bGśXFiqp;ŕZܵy$TuL ;6zn|!M Hx-g_F nK^D)ub㺞!vx퀟!o 9Mlvc͑0->Np& sJl̹cWS9@yF=g*!a=Bvgn_ˊnTm@2lh/iWo/uc 7IENDB`gambas-3.16.3/comp/src/gb.report/img/control/picturebox.png000066400000000000000000000045151411575327000236250ustar00rootroot00000000000000PNG  IHDR szz IDATXipUYdYnH!,l([E\QmE-V:L-XWFc (bdQP""bT aK!νɽ9o? vj;i3y<{]Mcһjk2rGP* 7ԃ Bxꄚ]UV]6_/ 3hiƟ7PTT́fqYV=?:h%M)rG֖%"=P"P4!T݁fuayؓڼEbX]w)Y!v$64͋ՙՑʞ 15{뤥d9thzQn~6gjhʜ-6"DJiJ!eio~wlyS;?d_*^$u+nwVV6 @ HZˆz~EQ1M(!B9C*Θe QT_BQXlhBE~H˱a[Co[6ozyi6wr>d )/BQ vR]u^Lj)$ՁCDn'|5.Ort鹛?s[yϩ& ̌CvN| i1 Ae.Ӊ !5) 6[̾`%QtK?յc*u sɌÆ\ɉqv"%x-xS<471M`{;0l K)A힭K3ot{}YewфI8GmyD+;Sh)[]鲠4<6PP5˹8p{mGzN>`XظoQ#a^%Ӳi!^["S),~nlk.t¢ ?P{'X"$ u;[5t_׭Y~wN]`ȸ[ߑգU S^k}7'I EDEA .}LyQ?[WODi=[0H®":iin0#(Gil*ߤO1|RY"Oz zUaӒ'Oע}d55B#Fb&S'̺_;Mkz<9~m;cpt#p2x w>\Hd^tOje.oZuxf᨝](Wj"@۰ BJcN}3L S=}il`'?W@͈`/pT|kX J-iC POn6ty)d+2ՋS+GNF we+KKNt 0{cMoRL7b 23~٫M%“Sw b (RAKIJ`3i@4@2?xM}t} {pjۗDT!2к ݋I>!hnApI>bM8!P|8z i1FS#jz&=kvbjy.ٔjM qhBbKzexVW7m2N WAHp JS H 4} bIiy~G֊U8 {pyK_n(xzn% heIFBP=nd p-"# PU"5(tLxgP>:hMJF[3 r==;n|tE0ZnS&-^#4e゚ܷp SW~ɳvp•?{Ct77i;}%?_MD_IENDB`gambas-3.16.3/comp/src/gb.report/img/control/vbox.png000066400000000000000000000003721411575327000224140ustar00rootroot00000000000000PNG  IHDR TgPLTEtL5tRNSfIDAT(ϥA M޳`)V5$PhK;:6ĺHYj2bT1 M,QG0gFIq_21%4h}4BXZfD 3"Sc>z8#c6gg5ʐ6ZIENDB`gambas-3.16.3/comp/src/gb.report/img/control/vpanel.png000066400000000000000000000003101411575327000227130ustar00rootroot00000000000000PNG  IHDR TgPLTEꠜtRNSveIDAT(c0F 0 " H$BMP$D%!@I( 5BJ da@;c M#Q'w)IENDB`gambas-3.16.3/comp/src/gb.report/img/logo.svg000066400000000000000000001124541411575327000207360ustar00rootroot00000000000000 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 gambas-3.16.3/comp/src/gb.report/printer1.png000066400000000000000000000031361411575327000207470ustar00rootroot00000000000000PNG  IHDR szz%IDATXõo?sx׎ŘF*$R)$ H*%UF*D+UJ%D*/IH(R .`cۻzwggǿ?i9wι?XaܐL&\qjFGRO{yZ;@aڷ矛@5ǔ6hmPƠu<9õc J>Zu Jk { J@yp1ւP\01V c(tz[k6+C}gS8~s>ԛ/Y\sŠuvv~~n/w8q])vEc3իf}yF[ofE[[7>r]׽tww?>܉Y"͢5RH(RY+4QQ) P"RWHeKSS#MJ3tzo*'Ojm}]]HmK2NoeE1)E-jP@㇆r)t1u;vBeYas:9Z~OHZe6h-&V@sG Č!j@U\ h{&]]G;ST4ƼV[[C$rAr&r}6 jXw8|" s?47~)x&b-髵LSr_v~p;gHZK"7g%lj&IkMrHH$\ )c3Y p>WP-jmE".hVlj!0/1nbl$u˅E#ܹ32!}_~cDU˲o60F kH|?dr2eEGJ WPWW͏4cD0Slʦm!"fTJmOkHn4U ^hmdddaX#H)QJR0֒Yy>=8VNp]׍Dc#Q_0y%R-<0ZI*+ |}*VQ+ޕ% x( (8Ç9>Җ e|\\.OH˲"T, qgϲ4=1.\m۰,עPȫt:=$m/Y[I&H&ac 477s0؜BFFnݝ'/^xq*s7ݻP]]O2 \)GtX~pf@&3+W> gfdrW"Bvnad`fBrsJ)w544/߿gpRTVVpܟ.#Fd2<>U.W01 xo rMkakբg~VUn8ۖb6BX7hi(Jϟ8nY(!a,*YV IENDB`gambas-3.16.3/comp/src/gb.report2/000077500000000000000000000000001411575327000165545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.component000066400000000000000000000001171411575327000205560ustar00rootroot00000000000000[Component] Key=gb.report2 Version=3.15.90 Needs=Form Requires=gb.form,gb.eval gambas-3.16.3/comp/src/gb.report2/.connection/000077500000000000000000000000001411575327000207715ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.connection/Connection1.connection000066400000000000000000000002751411575327000252360ustar00rootroot00000000000000[Connection] Type="sqlite" RememberPassword=False IgnoreCharset=False DisplayMetadata=False Database="test.db" Host="/home/fabien" Path="/home/fabien" RememberTemplate=False Requests=[""] gambas-3.16.3/comp/src/gb.report2/.connection/Connection2.connection000066400000000000000000000002671411575327000252400ustar00rootroot00000000000000# Gambas Connection File 3.0 [Connection] Type="sqlite" Path="/home/benoit" RememberPassword=False IgnoreCharset=False DisplayMetadata=False Database="Parcellaire2.db" Requests=[""] gambas-3.16.3/comp/src/gb.report2/.connection/Connection2.template000066400000000000000000000123721411575327000247140ustar00rootroot00000000000000# Gambas Database Template File 3.0 { Table Name="CadParc" PrimaryKey=["id"] { Field Name="id" Type=db.Serial } { Field Name="id_cadastre" Type=db.String Length=12 } { Field Name="id_parcelle" Type=db.Integer } { Field Name="surface" Type=db.Integer } { Index Name="UX_cp" Unique=True Fields=["id_cadastre","id_parcelle"] } } { Table Name="__gb_metadata_v2" PrimaryKey=["sTableName","iType","sKey"] { Field Name="sTableName" Type=db.String } { Field Name="iType" Type=db.Integer } { Field Name="sKey" Type=db.String } { Field Name="sValue" Type=db.String } } { Table Name="cadastre" PrimaryKey=["id_cadastre"] { Field Name="id_cadastre" Type=db.String Length=12 } { Field Name="prefixe" Type=db.String Length=3 } { Field Name="reference" Type=db.String Length=8 } { Field Name="lieudit" Type=db.String Length=64 } { Field Name="id_commune" Type=db.String Length=5 } { Field Name="id_individu" Type=db.String Length=10 } { Field Name="surface" Type=db.Integer } { Field Name="fairevaloir" Type=db.String Length=1 } { Field Name="droit1" Type=db.Integer } { Field Name="droit2" Type=db.Integer } { Field Name="droit3" Type=db.Integer } { Field Name="modifie" Type=db.Date } { Field Name="ajoute" Type=db.Date } } { Table Name="cadastre3" PrimaryKey=["id_cadastre"] { Field Name="id_cadastre" Type=db.Serial } { Field Name="prefixe" Type=db.Integer } { Field Name="reference" Type=db.String Length=8 } { Field Name="lieudit" Type=db.String } { Field Name="id_commune" Type=db.Integer } { Field Name="id_individu" Type=db.Integer } { Field Name="surface" Type=db.Integer } { Field Name="fairevaloir" Type=db.String Length=1 } { Field Name="modifie" Type=db.Date } { Field Name="ajoute" Type=db.Date } } { Table Name="cadastre_old" PrimaryKey=["id_cadastre"] { Field Name="id_cadastre" Type=db.String Length=12 } { Field Name="prefixe" Type=db.String Length=3 } { Field Name="reference" Type=db.String Length=8 } { Field Name="lieudit" Type=db.String Length=64 } { Field Name="id_commune" Type=db.String Length=5 } { Field Name="id_individu" Type=db.String Length=10 } { Field Name="surface" Type=db.Integer } { Field Name="fairevaloir" Type=db.String Length=1 } { Field Name="droit1" Type=db.Integer } { Field Name="droit2" Type=db.Integer } { Field Name="droit3" Type=db.Integer } { Field Name="modifie" Type=db.Date } { Field Name="ajoute" Type=db.Date } } { Table Name="caddroit" PrimaryKey=["id"] { Field Name="id" Type=db.Integer } { Field Name="id_cadastre" Type=db.Integer } { Field Name="typedroit" Type=db.String Length=5 } { Field Name="surface" Type=db.Integer } } { Table Name="commune" PrimaryKey=["id_commune"] { Field Name="id_commune" Type=db.Integer } { Field Name="nom" Type=db.String } } { Table Name="culture" PrimaryKey=["id"] { Field Name="id" Type=db.Serial } { Field Name="id_parcelle" Type=db.Integer } { Field Name="id_cadastre" Type=db.String Length=12 } { Field Name="surface" Type=db.Integer } { Field Name="campagne" Type=db.String Length=8 } { Field Name="typeculture" Type=db.String Length=4 } { Field Name="informations" Type=db.String } { Field Name="creation" Type=db.Date } { Field Name="modification" Type=db.Date } } { Table Name="individu" PrimaryKey=["id_individu"] { Field Name="id_individu" Type=db.Serial } { Field Name="etat" Type=db.Integer } { Field Name="nom" Type=db.String } { Field Name="prenom" Type=db.String } { Field Name="prenomsup" Type=db.String } { Field Name="id_adresse" Type=db.Integer } } { Table Name="parcelles" PrimaryKey=["id_parcelle"] { Field Name="id_parcelle" Type=db.Integer } { Field Name="maj" Type=db.Date } { Field Name="idshape" Type=db.Integer } { Field Name="ecartement" Type=db.Integer Default=300 } { Field Name="entrepied" Type=db.Integer Default=110 } { Field Name="nom" Type=db.String Length=64 } { Field Name="surface" Type=db.Integer } { Field Name="fairevaloir" Type=db.String Length=2 } { Field Name="culture" Type=db.Integer } { Field Name="id_secteur" Type=db.String Length=5 } { Field Name="ordre" Type=db.Integer } { Field Name="idcultinfo" Type=db.Integer } } { Table Name="secteurs" PrimaryKey=["id_secteur"] { Field Name="id_secteur" Type=db.String Length=5 } { Field Name="ordre" Type=db.Integer } { Field Name="nom" Type=db.String Length=32 } } gambas-3.16.3/comp/src/gb.report2/.directory000066400000000000000000000000411411575327000205540ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.report2/.hidden/000077500000000000000000000000001411575327000200655ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/000077500000000000000000000000001411575327000215455ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportdrawingarea.png000077700000000000000000000000001411575327000373672../../../../../app/src/gambas3/img/control/drawingarea.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportgridview.png000077700000000000000000000000001411575327000362572../../../../../app/src/gambas3/img/control/gridview.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reporthbox.png000077700000000000000000000000001411575327000345172../../../../../app/src/gambas3/img/control/hbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportimage.png000077700000000000000000000000001411575327000360652../../../../../app/src/gambas3/img/control/picturebox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportlabel.png000077700000000000000000000000001411575327000347552../../../../../app/src/gambas3/img/control/label.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportline.png000066400000000000000000000002721411575327000244370ustar00rootroot00000000000000PNG  IHDR@@XGl pHYs+PLTEGpL___```aaaaaa```mtRNSZWYj=IDATHc`IE7 &PQF 5`ԀQebQ@l0kO*"35(IENDB`gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportpagebreak.png000066400000000000000000000006071411575327000254330ustar00rootroot00000000000000PNG  IHDR@@ pHYs+iPLTEGpLfff]]]```UUUmmmfffjjj______aaa``````aaaUUUUUUaaa```___`````````aaa```[[[```cccfff``````\Av tRNS  ýPIDATX׹0FpG\Q!.1c#g& pU 0 ܚI1v 0~sT;YT LLIY۳d"zB0=ؖDlwO<]=n0_e|IENDB`gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportpanel.png000077700000000000000000000000001411575327000350152../../../../../app/src/gambas3/img/control/panel.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.hidden/control/reportsvgimage.png000066400000000000000000000005771411575327000253220ustar00rootroot00000000000000PNG  IHDR@@ pHYs+cPLTEo```2IDATX0(QҤJBbfGmP:Ӣ7L@fxq+M2nAr rB&0+'pniX8'ih?]:A5 Se@TtSy}#--e{|fi~s}AHhu:q7 ձut7{rPw○X m4Vo^}Eeg`._8=ݶ8{Acb0~v P Ơᵝ?2:w\w{@Ls/~v{hl[>X}G b8pKkU FWhpֿWr:%U뮶FȆV}+io'?><}_ݎ$I/<ѝw3^гkvވ>k!n9/8@p;o[aϟdZggظt~A]kq5bJvg!ęx3yզzG>{YxͿr [n9?m׭Ux|z[}>l4:}"+( :tl_Ϣh~o\o[> G'gSH?b8O3<;=uc<~x-p_EyKBg26ۧnQC`t7qqoX"ƫ8{x,xv[өTGnosr`@Zm>>/8V`]lIt#DmA@"{jNo1@xP qFO.淯w7ZNuFDq7hwL9i?+9>D!ڂ]zmxc @n<98C{4}r%Ϳ=k]-ox!`﯉܋45lvw\VRuy.G~/sxз^8 v QDUǒ4M>YJz V" m5Pɚ5ǫw]\0x y@]?l%!>`4((>b .Zo0iK6>`<8%szI{Me >nsh# Lc+0uY:00@Z]OEm卣05>_4-B@5hӨ{X?] #V44066!p[5H h- tvǟO)[B8_~d_?xrO`yu,80rh:v;/]7t~h6:[ 5aěr*,x$]< ?S -osDΝﮤ1qMo}} p@5wmݦݵ |q7H0 ЗS#Get<պͦ4mT  њn[Xޯ_XD53ɵok?G6_v}9pRPRcQHu{7 RcT+XN;M4¥ mv%Awf(=Z5iBhh|pbBSb,QA`6t&xQ /aR{*;(`jQNz2 ל}g#4\eeڈ>/ub+ aay$%iᅍY{'} f[Mkt+u_3 >;w` ~dLp}72hGM J)mcOLY~~~zԢ=\RxP3I g FU7ta=\mmS:?B0X$QMO&d-G]a-~m@;gemZidZKZ0.Ou 6,M rLpdںu + Jq+K@N'X+cttv`-w/ #~ŀ98&S x[2鰳1󷟻? 9@R 4rq uh?9dph}۩I𥽢 5܀sxˈ7xۉv6}y'uCn@cق"uR_NFs@K3 0om*b_j=!D;̷<>#uq3~/ &AI43U]a]wge=Xa uݑExIcqz}8 ;\ y@B:yoi~y/^|ٞuCdEr}Zd 0GAM4Cdp [QaB\yvz5D;&|B-{PdNѐ,? G~0xw74#_{mJ4ʯ~ T qg@?2Uh20On!AOD# )sg `Á.! C@H= p`>c7ߎ݄Q@H°A)<5e!aAUU~CP4ySE1vȀeK뱛CtWN<ϟ?M"X,-Z.8$tŋ8;;Id@...իvÁ>Ϸ.@EQgggxM"srr( /AHP0$ $m9$M3]B $a$iL $a8`$D6>])_J{TXP1eY뱛dY(eMJ p OOf~΅<)FY0`^cX?j3󹟆hO}+hkTU,{,J"+{ZI? N G( "O9H6 ~ס'ѭ,f1Ơk4PG8pOZ#2?MԂdu]{av;WkPkddu],K.^ =j3ef941`@L:pEQl  Xk`jC`Op-p||<7ƪe~AG@aZmls:[1/]å8 Dp/\רW%Nl6V"yBSi#"XXVvcąJ̗N-c2Y8k1 9Y3(&{]m,bZku?1(&Dש7Ɲj,EiV#:ɉU'M4{7@e{=) l6Hyh|Jpm%´X<e 9U6_P 1eY")t) S|YB0k\]] UUݤ"s)A56nD3ğgZXVc7領>8v*WWWc7?`88%@uX,nZ<ÑL ` \5_YROB `8(pģ 00 @&癣0I B1r/$v}cp]%@"QPGǂN8A Z`2 hhJyfQ@&30]2 Y!r(3L(+D LfP꼆dmI tq,(ȽMg5BUT0YT'uVePѠ zFyT= :ʬ !@@] k +YY 30HMgukȮo,&⯁,l >&?ϴȽq{Iګy"k3H(= ;<`}bigѵwss 0,H r?>E#o%]ke~4ଜ!_"<>4@02R)TQ`ܛ0 Fn#q??Ϝ ]}q @5рd64D4@;&` IfH$< $a(I BaM3-B $a(II$>')DK R Ye(R_bp Zc6r$$a(I BaM3#L $a(II$< $a8,X,pqq1vs\\\`X,Kcnр UU/_Nq`, |ڇ<Z NrDQ# IYCrīW5#1UUXhk뱛B}o !  -Ba@HP0$ #$a$$a8a $a P` @HPB!B!B!B!B!B!B!B!B!B!B!B!? | I#IENDB`gambas-3.16.3/comp/src/gb.report2/.lang/000077500000000000000000000000001411575327000175535ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.lang/es.po000066400000000000000000000115251411575327000205260ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.8.90\n" "PO-Revision-Date: 2015-09-20 17:58 UTC\n" "Last-Translator: Jesus \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "ReportsEvolution" msgstr "" #: FPreview.form:79 msgid "Report preview" msgstr "Vista previa de reporte" #: FPreview.form:86 msgid "Print to file" msgstr "" #: FPreview.form:115 msgid "Printing..." msgstr "Impresión..." #: FPreview.form:145 msgid "One page" msgstr "Una página" #: FPreview.form:154 msgid "Two pages" msgstr "Dos páginas" #: FPreview.form:163 msgid "Full width" msgstr "Ajustar ancho" #: FPreview.form:172 msgid "Real size" msgstr "Tamaño real" #: FPreview.form:180 msgid "Zoom out" msgstr "" #: FPreview.form:193 msgid "100 %" msgstr "" #: FPreview.form:199 msgid "Zoom in" msgstr "" #: FPreview.form:208 msgid "Print" msgstr "Imprimir" #: FPreview.form:216 msgid "Show options" msgstr "" #: FPreview.form:239 msgid "Printer" msgstr "Impresora" #: FPreview.form:264 msgid "Recto Verso" msgstr "" #: FPreview.form:271 msgid "None" msgstr "Ninguno" #: FPreview.form:271 msgid "Short side" msgstr "Lado corto" #: FPreview.form:271 msgid "Long side" msgstr "Lado largo" #: FPreview.form:275 msgid "File" msgstr "Archivo" #: FPreview.form:301 msgid "Resolution" msgstr "" #: FPreview.form:308 msgid "75" msgstr "" #: FPreview.form:308 msgid "150" msgstr "" #: FPreview.form:308 msgid "300" msgstr "" #: FPreview.form:308 msgid "600" msgstr "" #: FPreview.form:308 msgid "1200" msgstr "" #: FPreview.form:313 msgid "dpi" msgstr "" #: FPreview.form:336 msgid "Range" msgstr "Rango" #: FPreview.form:352 msgid "Copies" msgstr "Copias" #: FPreview.form:372 msgid "Orientation" msgstr "Orientación" #: FPreview.form:379 msgid "Portrait" msgstr "Retrato" #: FPreview.form:379 msgid "Landscape" msgstr "Paisaje" #: FPreview.form:389 msgid "Paper" msgstr "Papel" #: FPreview.form:396 msgid "Custom" msgstr "" #: FPreview.form:396 msgid "A3" msgstr "-" #: FPreview.form:396 msgid "A4" msgstr "-" #: FPreview.form:396 msgid "A5" msgstr "-" #: FPreview.form:396 msgid "B5" msgstr "-" #: FPreview.form:396 msgid "Letter" msgstr "-" #: FPreview.form:396 msgid "Executive" msgstr "-" #: FPreview.form:396 msgid "Legal" msgstr "-" #: FPreview.form:411 msgid "Width" msgstr "Ancho" #: FPreview.form:422 msgid "mm" msgstr "-" #: FPreview.form:432 msgid "Height" msgstr "Altura" #: FPreview.form:455 msgid "Grayscale" msgstr "" #: FPreview.form:461 msgid "Full page" msgstr "" #: FPreview.form:466 msgid "Collate copies" msgstr "" #: FPreview.form:471 msgid "Reverse order" msgstr "Orden inverso" #: FPreview.class:211 msgid "PDF files" msgstr "" #: FPreview.class:211 msgid "Postscript files" msgstr "" #: FPreview.class:226 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:316 msgid "This file already exists.\nDo you want to replace it?" msgstr "" #: FPreview.class:316 msgid "Replace" msgstr "" #: FPreview.class:341 msgid "Layout..." msgstr "Disposición..." #: OutputReport2.report:77 msgid "Version 1.0" msgstr "-" #: OutputReport2.report:84 Report51.report:60 msgid "Date" msgstr "Fecha" #: OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "Página $PAGE de $NPAGE" #: Report.class:112 msgid "Section " msgstr "Sección" #: Report1.report:28 msgid "toto" msgstr "" #: Report11.report:19 msgid "Section 1" msgstr "" #: Report11.report:39 msgid "Gambas" msgstr "-" #: Report11.report:59 msgid "All friends list !" msgstr "" #: Report11.report:81 msgid "Gambas Report Demo" msgstr "" #: Report11.report:93 msgid "DEMO" msgstr "" #: Report11.report:106 msgid "Page $PAGE on $NPAGE " msgstr "" #: Report2.report:19 msgid "ReportLabel1" msgstr "" #: Report3.report:17 msgid "PARCELLAIRE" msgstr "" #: Report5.report:20 msgid "Coucou" msgstr "" #: Report51.report:30 msgid "Recto" msgstr "" #: Report51.report:38 msgid "Verso" msgstr "" #: Report51.report:51 msgid "N°" msgstr "" #: Report51.report:99 msgid "Observations" msgstr "" #: Report6.report:12 msgid "Testtest

        \n\n
        " msgstr "" gambas-3.16.3/comp/src/gb.report2/.lang/es_ES.po000066400000000000000000000115301411575327000211110ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.8.90\n" "PO-Revision-Date: 2015-09-20 17:57 UTC\n" "Last-Translator: Jesus \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "ReportsEvolution" msgstr "" #: FPreview.form:79 msgid "Report preview" msgstr "Vista previa de reporte" #: FPreview.form:86 msgid "Print to file" msgstr "" #: FPreview.form:115 msgid "Printing..." msgstr "Impresión..." #: FPreview.form:145 msgid "One page" msgstr "Una página" #: FPreview.form:154 msgid "Two pages" msgstr "Dos páginas" #: FPreview.form:163 msgid "Full width" msgstr "Ajustar ancho" #: FPreview.form:172 msgid "Real size" msgstr "Tamaño real" #: FPreview.form:180 msgid "Zoom out" msgstr "" #: FPreview.form:193 msgid "100 %" msgstr "" #: FPreview.form:199 msgid "Zoom in" msgstr "" #: FPreview.form:208 msgid "Print" msgstr "Imprimir" #: FPreview.form:216 msgid "Show options" msgstr "" #: FPreview.form:239 msgid "Printer" msgstr "Impresora" #: FPreview.form:264 msgid "Recto Verso" msgstr "" #: FPreview.form:271 msgid "None" msgstr "Ninguno" #: FPreview.form:271 msgid "Short side" msgstr "Lado corto" #: FPreview.form:271 msgid "Long side" msgstr "Lado largo" #: FPreview.form:275 msgid "File" msgstr "Archivo" #: FPreview.form:301 msgid "Resolution" msgstr "" #: FPreview.form:308 msgid "75" msgstr "" #: FPreview.form:308 msgid "150" msgstr "" #: FPreview.form:308 msgid "300" msgstr "" #: FPreview.form:308 msgid "600" msgstr "" #: FPreview.form:308 msgid "1200" msgstr "" #: FPreview.form:313 msgid "dpi" msgstr "" #: FPreview.form:336 msgid "Range" msgstr "Rango" #: FPreview.form:352 msgid "Copies" msgstr "Copias" #: FPreview.form:372 msgid "Orientation" msgstr "Orientación" #: FPreview.form:379 msgid "Portrait" msgstr "Retrato" #: FPreview.form:379 msgid "Landscape" msgstr "Paisaje" #: FPreview.form:389 msgid "Paper" msgstr "Papel" #: FPreview.form:396 msgid "Custom" msgstr "" #: FPreview.form:396 msgid "A3" msgstr "-" #: FPreview.form:396 msgid "A4" msgstr "-" #: FPreview.form:396 msgid "A5" msgstr "-" #: FPreview.form:396 msgid "B5" msgstr "-" #: FPreview.form:396 msgid "Letter" msgstr "-" #: FPreview.form:396 msgid "Executive" msgstr "-" #: FPreview.form:396 msgid "Legal" msgstr "-" #: FPreview.form:411 msgid "Width" msgstr "Ancho" #: FPreview.form:422 msgid "mm" msgstr "-" #: FPreview.form:432 msgid "Height" msgstr "Altura" #: FPreview.form:455 msgid "Grayscale" msgstr "" #: FPreview.form:461 msgid "Full page" msgstr "" #: FPreview.form:466 msgid "Collate copies" msgstr "" #: FPreview.form:471 msgid "Reverse order" msgstr "Orden inverso" #: FPreview.class:211 msgid "PDF files" msgstr "" #: FPreview.class:211 msgid "Postscript files" msgstr "" #: FPreview.class:226 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:316 msgid "This file already exists.\nDo you want to replace it?" msgstr "" #: FPreview.class:316 msgid "Replace" msgstr "" #: FPreview.class:341 msgid "Layout..." msgstr "Disposición..." #: OutputReport2.report:77 msgid "Version 1.0" msgstr "-" #: OutputReport2.report:84 Report51.report:60 msgid "Date" msgstr "Fecha" #: OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "Página $PAGE de $NPAGE" #: Report.class:112 msgid "Section " msgstr "Sección" #: Report1.report:28 msgid "toto" msgstr "" #: Report11.report:19 msgid "Section 1" msgstr "" #: Report11.report:39 msgid "Gambas" msgstr "-" #: Report11.report:59 msgid "All friends list !" msgstr "" #: Report11.report:81 msgid "Gambas Report Demo" msgstr "" #: Report11.report:93 msgid "DEMO" msgstr "" #: Report11.report:106 msgid "Page $PAGE on $NPAGE " msgstr "" #: Report2.report:19 msgid "ReportLabel1" msgstr "" #: Report3.report:17 msgid "PARCELLAIRE" msgstr "" #: Report5.report:20 msgid "Coucou" msgstr "" #: Report51.report:30 msgid "Recto" msgstr "" #: Report51.report:38 msgid "Verso" msgstr "" #: Report51.report:51 msgid "N°" msgstr "" #: Report51.report:99 msgid "Observations" msgstr "" #: Report6.report:12 msgid "Testtest

        \n\n
        " msgstr "" gambas-3.16.3/comp/src/gb.report2/.lang/fr.po000066400000000000000000000133651411575327000205320ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.10.90\n" "POT-Creation-Date: 2020-11-18 18:39 UTC\n" "PO-Revision-Date: 2017-09-30 01:38 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 "ReportsEvolution" msgstr "" #: FPreview.class:210 msgid "PDF files" msgstr "Fichiers PDF" #: FPreview.class:210 msgid "Postscript files" msgstr "Fichiers Postscript" #: FPreview.class:225 msgid "Cancel" msgstr "Annuler" #: FPreview.class:315 msgid "Replace" msgstr "Remplacer" #: FPreview.class:315 msgid "" "This file already exists.\n" "Do you want to replace it?" msgstr "" "Ce fichier existe déjà.\n" "Voules-vous le remplacer ?" #: FPreview.class:340 msgid "Layout..." msgstr "Mise en page..." #: FPreview.class:354 msgid "Printing..." msgstr "Impression en cours..." #: FPreview.form:79 msgid "Report preview" msgstr "Aperçu de l'état" #: FPreview.form:86 msgid "Print to file" msgstr "Imprimer dans un fichier" #: FPreview.form:115 #, fuzzy msgid "Printing" msgstr "Impression en cours..." #: FPreview.form:145 msgid "One page" msgstr "Une page" #: FPreview.form:154 msgid "Two pages" msgstr "Deux pages" #: FPreview.form:163 msgid "Full width" msgstr "Pleine largeur" #: FPreview.form:172 msgid "Real size" msgstr "Taille réelle" #: FPreview.form:180 msgid "Zoom out" msgstr "Réduire" #: FPreview.form:193 msgid "100 %" msgstr "-" #: FPreview.form:199 msgid "Zoom in" msgstr "Agrandir" #: FPreview.form:208 msgid "Print" msgstr "Imprimer" #: FPreview.form:216 msgid "Show options" msgstr "Afficher les options" #: FPreview.form:239 msgid "Printer" msgstr "Imprimante" #: FPreview.form:264 msgid "Two-sided" msgstr "" #: FPreview.form:271 msgid "Long side" msgstr "Côté long" #: FPreview.form:271 msgid "None" msgstr "Aucun" #: FPreview.form:271 msgid "Short side" msgstr "Côté court" #: FPreview.form:275 msgid "File" msgstr "Fichier" #: FPreview.form:301 msgid "Resolution" msgstr "" #: FPreview.form:313 msgid "dpi" msgstr "" #: FPreview.form:336 msgid "Range" msgstr "Plage" #: FPreview.form:352 msgid "Copies" msgstr "Copies" #: FPreview.form:372 msgid "Orientation" msgstr "Orientation" #: FPreview.form:379 msgid "Landscape" msgstr "Paysage" #: FPreview.form:379 msgid "Portrait" msgstr "Portrait" #: FPreview.form:389 msgid "Paper" msgstr "-" #: FPreview.form:396 msgid "A3" msgstr "-" #: FPreview.form:396 msgid "A4" msgstr "-" #: FPreview.form:396 msgid "A5" msgstr "-" #: FPreview.form:396 msgid "B5" msgstr "-" #: FPreview.form:396 msgid "Custom" msgstr "Personnalisé" #: FPreview.form:396 msgid "Executive" msgstr "-" #: FPreview.form:396 msgid "Legal" msgstr "-" #: FPreview.form:396 msgid "Letter" msgstr "-" #: FPreview.form:411 msgid "Width" msgstr "Largeur" #: FPreview.form:422 msgid "mm" msgstr "-" #: FPreview.form:432 msgid "Height" msgstr "Hauteur" #: FPreview.form:455 msgid "Grayscale" msgstr "Niveaux de gris" #: FPreview.form:461 msgid "Full page" msgstr "Pleine page" #: FPreview.form:466 msgid "Collate copies" msgstr "Assembler les copies" #: FPreview.form:471 msgid "Reverse order" msgstr "Inverser" #: OutputReport2.report:77 msgid "Version 1.0" msgstr "" #: OutputReport2.report:84 Report51.report:60 msgid "Date" msgstr "" #: OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "" #: Report.class:120 msgid "Section " msgstr "" #: Report1.report:29 msgid "=\"Page \" & Page" msgstr "" #: Report1.report:46 msgid "=pi() + 4" msgstr "" #: Report10.report:22 Report14.report:53 msgid "=index" msgstr "" #: Report10.report:31 msgid "=Index" msgstr "" #: Report10.report:46 msgid "=\"Index = \" & index" msgstr "" #: Report10.report:54 msgid "=page & \" / \" & pages" msgstr "" #: Report11.report:19 Report12.report:17 msgid "Section 1" msgstr "" #: Report11.report:39 msgid "Gambas" msgstr "" #: Report11.report:59 msgid "All friends list !" msgstr "" #: Report11.report:81 msgid "Gambas Report Demo" msgstr "" #: Report11.report:93 msgid "DEMO" msgstr "" #: Report11.report:106 msgid "Page $PAGE on $NPAGE " msgstr "" #: Report13.report:36 msgid "=\"GAMBAS - \" & index" msgstr "" #: Report13.report:44 msgid "=\"PAGE \" & Page & \" / \" & pages" msgstr "" #: Report14.report:28 msgid "Reference" msgstr "" #: Report14.report:35 msgid "Description" msgstr "" #: Report14.report:42 msgid "Valeur" msgstr "" #: Report14.report:73 msgid "=page & \" on \" & pages" msgstr "" #: Report16.report:21 Report17.report:22 Report5.report:20 msgid "Coucou" msgstr "" #: Report2.report:19 msgid "ReportLabel1" msgstr "" #: Report3.report:18 msgid "PARCELLAIRE $NPAGE" msgstr "" #: Report51.report:30 msgid "Recto" msgstr "" #: Report51.report:38 msgid "Verso" msgstr "" #: Report51.report:51 msgid "N°" msgstr "" #: Report51.report:99 #, fuzzy msgid "Observations" msgstr "Orientation" #: Report6.report:12 msgid "" "Testtest

        \n" "\n" "
        " msgstr "" #~ msgid "75" #~ msgstr "-" #~ msgid "300" #~ msgstr "-" #~ msgid "150" #~ msgstr "-" gambas-3.16.3/comp/src/gb.report2/.lang/it.po000066400000000000000000000062211411575327000205300ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.12.90\n" "PO-Revision-Date: 2019-01-15 14:42 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "ReportsEvolution" msgstr "-" #: FPreview.class:212 msgid "PDF files" msgstr "File PDF" #: FPreview.class:212 msgid "Postscript files" msgstr "File Postscript" #: FPreview.class:227 msgid "Cancel" msgstr "Annulla" #: FPreview.class:317 msgid "Replace" msgstr "Sostituisci" #: FPreview.class:317 msgid "This file already exists.\nDo you want to replace it?" msgstr "Questo file già esiste.\nDesideri sostituirlo?" #: FPreview.class:342 msgid "Layout..." msgstr "-" #: FPreview.class:354 msgid "Printing..." msgstr "Stampa..." #: FPreview.form:79 msgid "Report preview" msgstr "Anteprima del report" #: FPreview.form:86 msgid "Print to file" msgstr "Stampa su file" #: FPreview.form:115 msgid "Printing" msgstr "Stampa" #: FPreview.form:145 msgid "One page" msgstr "Una pagina" #: FPreview.form:154 msgid "Two pages" msgstr "Due pagine" #: FPreview.form:163 msgid "Full width" msgstr "Intera larghezza" #: FPreview.form:172 msgid "Real size" msgstr "Dimensione reale" #: FPreview.form:180 msgid "Zoom out" msgstr "Rimpicciolisci" #: FPreview.form:193 msgid "100 %" msgstr "-" #: FPreview.form:199 msgid "Zoom in" msgstr "Ingrandisci" #: FPreview.form:208 msgid "Print" msgstr "Stampa" #: FPreview.form:216 msgid "Show options" msgstr "Mostra le opzioni" #: FPreview.form:239 msgid "Printer" msgstr "Stampante" #: FPreview.form:264 msgid "Two-sided" msgstr "Fronte retro" #: FPreview.form:271 msgid "Long side" msgstr "Lato lungo" #: FPreview.form:271 msgid "None" msgstr "Nessuno" #: FPreview.form:271 msgid "Short side" msgstr "Lato corto" #: FPreview.form:275 msgid "File" msgstr "-" #: FPreview.form:301 msgid "Resolution" msgstr "Risoluzione" #: FPreview.form:313 msgid "dpi" msgstr "-" #: FPreview.form:336 msgid "Range" msgstr "Pagina" #: FPreview.form:352 msgid "Copies" msgstr "Copie" #: FPreview.form:372 msgid "Orientation" msgstr "Orientamento" #: FPreview.form:379 msgid "Landscape" msgstr "Orizzontale" #: FPreview.form:379 msgid "Portrait" msgstr "Verticale" #: FPreview.form:389 msgid "Paper" msgstr "Carta" #: FPreview.form:396 msgid "A3" msgstr "-" #: FPreview.form:396 msgid "A4" msgstr "-" #: FPreview.form:396 msgid "A5" msgstr "-" #: FPreview.form:396 msgid "B5" msgstr "-" #: FPreview.form:396 msgid "Custom" msgstr "Personalizzato" #: FPreview.form:396 msgid "Executive" msgstr "-" #: FPreview.form:396 msgid "Legal" msgstr "Legale" #: FPreview.form:396 msgid "Letter" msgstr "Lettera" #: FPreview.form:411 msgid "Width" msgstr "Larghezza" #: FPreview.form:422 msgid "mm" msgstr "-" #: FPreview.form:432 msgid "Height" msgstr "Altezza" #: FPreview.form:455 msgid "Grayscale" msgstr "Scala di grigi" #: FPreview.form:461 msgid "Full page" msgstr "Pagina intera" #: FPreview.form:466 msgid "Collate copies" msgstr "Assembla le copie" #: FPreview.form:471 msgid "Reverse order" msgstr "Ordine inverso" #: Report.class:112 msgid "Section " msgstr "Sezione" gambas-3.16.3/comp/src/gb.report2/.lang/nl.po000066400000000000000000000063331411575327000205310ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2015 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.12.2\n" "PO-Revision-Date: 2019-04-06 18:43 UTC\n" "Last-Translator: gbWilly \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 "ReportsEvolution" msgstr "Rapport Evolutie" #: FPreview.class:212 msgid "PDF files" msgstr "PDF bestanden" #: FPreview.class:212 msgid "Postscript files" msgstr "Postscript bestanden" #: FPreview.class:227 msgid "Cancel" msgstr "Annuleer" #: FPreview.class:317 msgid "Replace" msgstr "Vervangen" #: FPreview.class:317 msgid "This file already exists.\nDo you want to replace it?" msgstr "Dit bestand bestaat reeds.\nWil je het vervangen?" #: FPreview.class:342 msgid "Layout..." msgstr "-" #: FPreview.class:354 msgid "Printing..." msgstr "Afdrukken..." #: FPreview.form:79 msgid "Report preview" msgstr "Rapport voorbeeld" #: FPreview.form:86 msgid "Print to file" msgstr "Afdrukken naar bestand" #: FPreview.form:115 msgid "Printing" msgstr "Afdrukken" #: FPreview.form:145 msgid "One page" msgstr "Een pagina" #: FPreview.form:154 msgid "Two pages" msgstr "Twee pagina's" #: FPreview.form:163 msgid "Full width" msgstr "Volledige breedte" #: FPreview.form:172 msgid "Real size" msgstr "Echte afmeting" #: FPreview.form:180 msgid "Zoom out" msgstr "Zoom uit" #: FPreview.form:193 msgid "100 %" msgstr "-" #: FPreview.form:199 msgid "Zoom in" msgstr "-" #: FPreview.form:208 msgid "Print" msgstr "Afdrukken" #: FPreview.form:216 msgid "Show options" msgstr "Opties weergeven" #: FPreview.form:239 msgid "Printer" msgstr "Printer" #: FPreview.form:264 msgid "Two-sided" msgstr "Dubbelzijdig" #: FPreview.form:271 msgid "Long side" msgstr "Lange zijde" #: FPreview.form:271 msgid "None" msgstr "Geen" #: FPreview.form:271 msgid "Short side" msgstr "Korte zijde" #: FPreview.form:275 msgid "File" msgstr "Bestand" #: FPreview.form:301 msgid "Resolution" msgstr "Resolutie" #: FPreview.form:313 msgid "dpi" msgstr "-" #: FPreview.form:336 msgid "Range" msgstr "Bereik" #: FPreview.form:352 msgid "Copies" msgstr "Kopieën" #: FPreview.form:372 msgid "Orientation" msgstr "Oriëntatie" #: FPreview.form:379 msgid "Landscape" msgstr "Landschap" #: FPreview.form:379 msgid "Portrait" msgstr "Portret" #: FPreview.form:389 msgid "Paper" msgstr "Papier" #: FPreview.form:396 msgid "A3" msgstr "-" #: FPreview.form:396 msgid "A4" msgstr "-" #: FPreview.form:396 msgid "A5" msgstr "-" #: FPreview.form:396 msgid "B5" msgstr "-" #: FPreview.form:396 msgid "Custom" msgstr "Aangepast" #: FPreview.form:396 msgid "Executive" msgstr "-" #: FPreview.form:396 msgid "Legal" msgstr "-" #: FPreview.form:396 msgid "Letter" msgstr "-" #: FPreview.form:411 msgid "Width" msgstr "Breedte" #: FPreview.form:422 msgid "mm" msgstr "-" #: FPreview.form:432 msgid "Height" msgstr "Hoogte" #: FPreview.form:455 msgid "Grayscale" msgstr "Grijswaarden" #: FPreview.form:461 msgid "Full page" msgstr "Volledige pagina" #: FPreview.form:466 msgid "Collate copies" msgstr "Sorteer kopieën" #: FPreview.form:471 msgid "Reverse order" msgstr "Omgekeerde volgorde" #: Report.class:120 msgid "Section " msgstr "Sectie" gambas-3.16.3/comp/src/gb.report2/.lang/pt_BR.po000066400000000000000000000064271411575327000211320ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.14.90\n" "PO-Revision-Date: 2020-06-12 05:32 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" # gb-ignore #: .project:1 msgid "ReportsEvolution" msgstr "" #: FPreview.form:79 msgid "Report preview" msgstr "Visualizar relatório" #: FPreview.form:86 msgid "Print to file" msgstr "Imprimir para arquivo" #: FPreview.form:115 msgid "Printing" msgstr "Imprimindo" #: FPreview.form:145 msgid "One page" msgstr "Uma página" #: FPreview.form:154 msgid "Two pages" msgstr "Duas páginas" #: FPreview.form:163 msgid "Full width" msgstr "Largura cheia" #: FPreview.form:172 msgid "Real size" msgstr "Tamanho real" #: FPreview.form:180 msgid "Zoom out" msgstr "Menos zoom" # gb-ignore #: FPreview.form:193 msgid "100 %" msgstr "" #: FPreview.form:199 msgid "Zoom in" msgstr "Mais zoom" #: FPreview.form:208 msgid "Print" msgstr "Imprimir" #: FPreview.form:216 msgid "Show options" msgstr "Exibir opções" #: FPreview.form:239 msgid "Printer" msgstr "Impressora" #: FPreview.form:264 msgid "Two-sided" msgstr "Dois lados" #: FPreview.form:271 msgid "None" msgstr "Nenhum" #: FPreview.form:271 msgid "Short side" msgstr "Lado curto" #: FPreview.form:271 msgid "Long side" msgstr "Lado longo" #: FPreview.form:275 msgid "File" msgstr "Arquivo" #: FPreview.form:301 msgid "Resolution" msgstr "Resolução" # gb-ignore #: FPreview.form:313 msgid "dpi" msgstr "" #: FPreview.form:336 msgid "Range" msgstr "Intervalo" #: FPreview.form:352 msgid "Copies" msgstr "Cópias" #: FPreview.form:372 msgid "Orientation" msgstr "Orientação" #: FPreview.form:379 msgid "Portrait" msgstr "Retrato" #: FPreview.form:379 msgid "Landscape" msgstr "Paisagem" #: FPreview.form:389 msgid "Paper" msgstr "Papel" #: FPreview.form:396 msgid "Custom" msgstr "Personalizado" # gb-ignore #: FPreview.form:396 msgid "A3" msgstr "" # gb-ignore #: FPreview.form:396 msgid "A4" msgstr "" # gb-ignore #: FPreview.form:396 msgid "A5" msgstr "" # gb-ignore #: FPreview.form:396 msgid "B5" msgstr "" #: FPreview.form:396 msgid "Letter" msgstr "Carta" #: FPreview.form:396 msgid "Executive" msgstr "Executivo" # gb-ignore #: FPreview.form:396 msgid "Legal" msgstr "" #: FPreview.form:411 msgid "Width" msgstr "Largura" # gb-ignore #: FPreview.form:422 msgid "mm" msgstr "" #: FPreview.form:432 msgid "Height" msgstr "Altura" #: FPreview.form:455 msgid "Grayscale" msgstr "Escala de cinza" #: FPreview.form:461 msgid "Full page" msgstr "Página cheia" #: FPreview.form:466 msgid "Collate copies" msgstr "Agrupar cópias" #: FPreview.form:471 msgid "Reverse order" msgstr "Ordem inversa" #: FPreview.class:212 msgid "PDF files" msgstr "Arquivos PDF" #: FPreview.class:212 msgid "Postscript files" msgstr "Arquivos postscript" #: FPreview.class:227 msgid "Cancel" msgstr "Cancelar" #: FPreview.class:317 msgid "This file already exists.\nDo you want to replace it?" msgstr "Este arquivo já existe. Sobrescrever?" #: FPreview.class:317 msgid "Replace" msgstr "Substituir" # gb-ignore #: FPreview.class:342 msgid "Layout..." msgstr "" #: FPreview.class:356 msgid "Printing..." msgstr "Imprimindo..." #: Report.class:120 msgid "Section " msgstr "Seção" gambas-3.16.3/comp/src/gb.report2/.lang/ru.po000066400000000000000000000266561411575327000205600ustar00rootroot00000000000000# 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" #: comp/src/gb.report2/.project:20 msgid "ReportsEvolution" msgstr "Эволюция отчётов" #: comp/src/gb.report2/.src/Report.class:120 comp/src/gb.report2/.src/Report.class:368 msgid "Section " msgstr "Раздел " #: comp/src/gb.report2/.src/Viewer/FPreview.class:212 msgid "PDF files" msgstr "Файлы PDF" #: comp/src/gb.report2/.src/Viewer/FPreview.class:212 msgid "Postscript files" msgstr "Файлы Postscript" #: comp/src/gb.report2/.src/Viewer/FPreview.class:227 comp/src/gb.report2/.src/Viewer/FPreview.class:317 msgid "Cancel" msgstr "Отмена" #: comp/src/gb.report2/.src/Viewer/FPreview.class:232 comp/src/gb.report2/.src/Viewer/FPreview.form:114 comp/src/gb.report2/.src/Viewer/FPreview.form:346 msgid "Print" msgstr "Печать" #: comp/src/gb.report2/.src/Viewer/FPreview.class:317 msgid "" "This file already exists.\n" "Do you want to replace it?" msgstr "" "Этот файл уже существует.\n" "Вы хотите заменить его?" #: comp/src/gb.report2/.src/Viewer/FPreview.class:317 msgid "Replace" msgstr "Заменить" #: comp/src/gb.report2/.src/Viewer/FPreview.class:342 msgid "Layout..." msgstr "Макет..." #: comp/src/gb.report2/.src/Viewer/FPreview.class:354 msgid "Printing..." msgstr "Печать..." #: comp/src/gb.report2/.src/Viewer/FPreview.form:5 msgid "Report preview" msgstr "Предпросмотр отчёта" #: comp/src/gb.report2/.src/Viewer/FPreview.form:10 msgid "Print to file" msgstr "Печать в файл" #: comp/src/gb.report2/.src/Viewer/FPreview.form:34 msgid "Printing" msgstr "Печать" #: comp/src/gb.report2/.src/Viewer/FPreview.form:59 msgid "One page" msgstr "Одна страница" #: comp/src/gb.report2/.src/Viewer/FPreview.form:67 msgid "Two pages" msgstr "Две страницы" #: comp/src/gb.report2/.src/Viewer/FPreview.form:75 msgid "Full width" msgstr "Полная ширина" #: comp/src/gb.report2/.src/Viewer/FPreview.form:83 msgid "Real size" msgstr "Реальный размер" #: comp/src/gb.report2/.src/Viewer/FPreview.form:90 msgid "Zoom out" msgstr "Уменьшить" #: comp/src/gb.report2/.src/Viewer/FPreview.form:101 msgid "100 %" msgstr "100%" #: comp/src/gb.report2/.src/Viewer/FPreview.form:106 msgid "Zoom in" msgstr "Увеличить" #: comp/src/gb.report2/.src/Viewer/FPreview.form:121 msgid "Show options" msgstr "Показать параметры" #: comp/src/gb.report2/.src/Viewer/FPreview.form:141 msgid "Printer" msgstr "Принтер" #: comp/src/gb.report2/.src/Viewer/FPreview.form:161 msgid "Two-sided" msgstr "Двусторонний" #: comp/src/gb.report2/.src/Viewer/FPreview.form:167 msgid "None" msgstr "Нет" #: comp/src/gb.report2/.src/Viewer/FPreview.form:167 msgid "Short side" msgstr "Короткая сторона" #: comp/src/gb.report2/.src/Viewer/FPreview.form:167 msgid "Long side" msgstr "Длинная сторона" #: comp/src/gb.report2/.src/Viewer/FPreview.form:171 msgid "File" msgstr "Файл" #: comp/src/gb.report2/.src/Viewer/FPreview.form:192 msgid "Resolution" msgstr "Разрешение" #: comp/src/gb.report2/.src/Viewer/FPreview.form:203 msgid "dpi" msgstr "dpi" #: comp/src/gb.report2/.src/Viewer/FPreview.form:222 msgid "Range" msgstr "Диапазон" #: comp/src/gb.report2/.src/Viewer/FPreview.form:235 msgid "Copies" msgstr "Копии" #: comp/src/gb.report2/.src/Viewer/FPreview.form:251 msgid "Orientation" msgstr "Ориентация" #: comp/src/gb.report2/.src/Viewer/FPreview.form:257 msgid "Portrait" msgstr "Книжная" #: comp/src/gb.report2/.src/Viewer/FPreview.form:257 msgid "Landscape" msgstr "Альбомная" #: comp/src/gb.report2/.src/Viewer/FPreview.form:265 msgid "Paper" msgstr "Бумага" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "Custom" msgstr "Пользовательский" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "A3" msgstr "А3" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "A4" msgstr "A4" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "A5" msgstr "А5" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "B5" msgstr "B5" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "Letter" msgstr "Лист" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "Executive" msgstr "Экзекьютив" #: comp/src/gb.report2/.src/Viewer/FPreview.form:271 msgid "Legal" msgstr "Легал" #: comp/src/gb.report2/.src/Viewer/FPreview.form:283 msgid "Width" msgstr "Ширина" #: comp/src/gb.report2/.src/Viewer/FPreview.form:292 comp/src/gb.report2/.src/Viewer/FPreview.form:309 msgid "mm" msgstr "мм" #: comp/src/gb.report2/.src/Viewer/FPreview.form:300 msgid "Height" msgstr "Высота" #: comp/src/gb.report2/.src/Viewer/FPreview.form:319 msgid "Grayscale" msgstr "Оттенки серого" #: comp/src/gb.report2/.src/Viewer/FPreview.form:324 msgid "Full page" msgstr "Полная страница" #: comp/src/gb.report2/.src/Viewer/FPreview.form:328 msgid "Collate copies" msgstr "Собрать по копиям" #: comp/src/gb.report2/.src/Viewer/FPreview.form:332 msgid "Reverse order" msgstr "Обратный порядок" #: comp/src/gb.report2/.src/Tests/Report10.report:14 comp/src/gb.report2/.src/Tests/Report14.report:42 msgid "=index" msgstr "=индекс" #: comp/src/gb.report2/.src/Tests/Report10.report:23 msgid "=Index" msgstr "=Индекс" #: comp/src/gb.report2/.src/Tests/Report10.report:38 msgid "=\"Index = \" & index" msgstr "=\"Индекс = \" & индекс" #: comp/src/gb.report2/.src/Tests/Report10.report:46 msgid "=page & \" / \" & pages" msgstr "=страница & \" / \" & страницы" #: comp/src/gb.report2/.src/Tests/Report13.report:30 msgid "=\"GAMBAS - \" & index" msgstr "=\"GAMBAS - \" & индекс" #: comp/src/gb.report2/.src/Tests/Report13.report:38 comp/src/gb.report2/.src/Tests/Report13.report:45 msgid "=\"PAGE \" & Page & \" / \" & pages" msgstr "=\"СТРАНИЦА \" & Страница & \" / \" & страницы" #: comp/src/gb.report2/.src/Tests/Report14.report:17 msgid "Reference" msgstr "Ссылка" #: comp/src/gb.report2/.src/Tests/Report14.report:24 msgid "Description" msgstr "Описание" #: comp/src/gb.report2/.src/Tests/Report14.report:31 msgid "Valeur" msgstr "Значение" #: comp/src/gb.report2/.src/Tests/Report14.report:62 msgid "=page & \" on \" & pages" msgstr "=страница & \" на \" & страницы" #: comp/src/gb.report2/.src/Tests/Report16.report:17 comp/src/gb.report2/.src/Tests/Report17.report:19 comp/src/gb.report2/.src/Tests/old/Report5.report:16 msgid "Coucou" msgstr "Кукушка" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:26 msgid "Version 1.0" msgstr "Версия 1.0" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:33 comp/src/gb.report2/.src/Tests/old/Report51.report:39 msgid "Date" msgstr "Дата" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:48 msgid "Project Title:" msgstr "Название проекта:" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:55 msgid "Project No.:" msgstr "№ проекта:" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:62 msgid "Company:" msgstr "Компания:" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:69 msgid "Designer:" msgstr "Дизайнер:" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:83 msgid "Base Plate ID:" msgstr "Идентификатор базовой платы:" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:134 msgid "Bearing Pressue" msgstr "Давление подшипника" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:144 comp/src/gb.report2/.src/Tests/old/OutputReport2.report:162 msgid "Node #" msgstr "Узел #" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:151 comp/src/gb.report2/.src/Tests/old/OutputReport2.report:169 msgid "Brg. Press., psi" msgstr "Давление подшипника, psi" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:215 msgid "Anchor Rod Tension" msgstr "Натяжение анкерного стержня" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:225 comp/src/gb.report2/.src/Tests/old/OutputReport2.report:243 msgid "Rod #" msgstr "Стержень #" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:232 comp/src/gb.report2/.src/Tests/old/OutputReport2.report:250 msgid "Tension, lbs" msgstr "Натяжение, lbs" #: comp/src/gb.report2/.src/Tests/old/OutputReport2.report:302 msgid "Page $PAGE of $NPAGE" msgstr "Страница $PAGE из $NPAGE" #: comp/src/gb.report2/.src/Tests/old/Report1.report:22 msgid "=\"Page \" & Page" msgstr "=\"Страница \" & Страница" #: comp/src/gb.report2/.src/Tests/old/Report1.report:39 msgid "=pi() + 4" msgstr "=пи() + 4" #: comp/src/gb.report2/.src/Tests/old/Report11.report:7 comp/src/gb.report2/.src/Tests/old/Report12.report:7 msgid "Section 1" msgstr "Раздел 1" #: comp/src/gb.report2/.src/Tests/old/Report11.report:27 msgid "Gambas" msgstr "Gambas" #: comp/src/gb.report2/.src/Tests/old/Report11.report:47 msgid "All friends list !" msgstr "Список всех друзей!" #: comp/src/gb.report2/.src/Tests/old/Report11.report:69 msgid "Gambas Report Demo" msgstr "Демонстрация отчёта Gambas" #: comp/src/gb.report2/.src/Tests/old/Report11.report:81 msgid "DEMO" msgstr "ДЕМО" #: comp/src/gb.report2/.src/Tests/old/Report11.report:94 msgid "Page $PAGE on $NPAGE " msgstr "Страница $PAGE на $NPAGE " #: comp/src/gb.report2/.src/Tests/old/Report2.report:16 msgid "ReportLabel1" msgstr "Метка_отчёта_1" #: comp/src/gb.report2/.src/Tests/old/Report3.report:15 msgid "PARCELLAIRE $NPAGE" msgstr "ПОСЫЛКА $NPAGE" #: comp/src/gb.report2/.src/Tests/old/Report51.report:9 msgid "Recto" msgstr "Перёд" #: comp/src/gb.report2/.src/Tests/old/Report51.report:17 msgid "Verso" msgstr "Оборот" #: comp/src/gb.report2/.src/Tests/old/Report51.report:30 msgid "N°" msgstr "№" #: comp/src/gb.report2/.src/Tests/old/Report51.report:78 msgid "Observations" msgstr "Наблюдения" #: comp/src/gb.report2/.src/Tests/old/Report6.report:10 msgid "" "Testtest

        \n" "\n" "
        " msgstr "" "Тесттест

        \n" "\n" "
        " gambas-3.16.3/comp/src/gb.report2/.lang/zh.po000066400000000000000000000130671411575327000205430ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.report2 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:39 UTC\n" "PO-Revision-Date: 2020-11-18 18:39 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "ReportsEvolution" msgstr "报表解决方案" #: FPreview.class:210 msgid "PDF files" msgstr "PDF文件" #: FPreview.class:210 msgid "Postscript files" msgstr "Postscript文件" #: FPreview.class:225 msgid "Cancel" msgstr "取消" #: FPreview.class:315 msgid "Replace" msgstr "替换" #: FPreview.class:315 msgid "" "This file already exists.\n" "Do you want to replace it?" msgstr "" "此文件已存在。\n" "是否替换它?" #: FPreview.class:340 msgid "Layout..." msgstr "布局..." #: FPreview.class:354 msgid "Printing..." msgstr "打印中..." #: FPreview.form:79 msgid "Report preview" msgstr "报表预览" #: FPreview.form:86 msgid "Print to file" msgstr "打印到文件" #: FPreview.form:115 msgid "Printing" msgstr "打印" #: FPreview.form:145 msgid "One page" msgstr "单页" #: FPreview.form:154 msgid "Two pages" msgstr "双页" #: FPreview.form:163 msgid "Full width" msgstr "全宽" #: FPreview.form:172 msgid "Real size" msgstr "实际尺寸" #: FPreview.form:180 msgid "Zoom out" msgstr "缩小" #: FPreview.form:193 msgid "100 %" msgstr "" #: FPreview.form:199 msgid "Zoom in" msgstr "放大" #: FPreview.form:208 msgid "Print" msgstr "打印" #: FPreview.form:216 msgid "Show options" msgstr "显示设置" #: FPreview.form:239 msgid "Printer" msgstr "打印机" #: FPreview.form:264 msgid "Two-sided" msgstr "双面" #: FPreview.form:271 msgid "Long side" msgstr "长边" #: FPreview.form:271 msgid "None" msgstr "无" #: FPreview.form:271 msgid "Short side" msgstr "短边" #: FPreview.form:275 msgid "File" msgstr "文件" #: FPreview.form:301 msgid "Resolution" msgstr "分辨率" #: FPreview.form:313 msgid "dpi" msgstr "" #: FPreview.form:336 msgid "Range" msgstr "范围" #: FPreview.form:352 msgid "Copies" msgstr "份数" #: FPreview.form:372 msgid "Orientation" msgstr "方向" #: FPreview.form:379 msgid "Landscape" msgstr "横向" #: FPreview.form:379 msgid "Portrait" msgstr "纵向" #: FPreview.form:389 msgid "Paper" msgstr "纸张" #: FPreview.form:396 msgid "A3" msgstr "" #: FPreview.form:396 msgid "A4" msgstr "" #: FPreview.form:396 msgid "A5" msgstr "" #: FPreview.form:396 msgid "B5" msgstr "" #: FPreview.form:396 msgid "Custom" msgstr "自定义" #: FPreview.form:396 msgid "Executive" msgstr "" #: FPreview.form:396 msgid "Legal" msgstr "" #: FPreview.form:396 msgid "Letter" msgstr "" #: FPreview.form:411 msgid "Width" msgstr "宽度" #: FPreview.form:422 msgid "mm" msgstr "" #: FPreview.form:432 msgid "Height" msgstr "高度" #: FPreview.form:455 msgid "Grayscale" msgstr "灰度" #: FPreview.form:461 msgid "Full page" msgstr "全页面" #: FPreview.form:466 msgid "Collate copies" msgstr "逐份打印" #: FPreview.form:471 msgid "Reverse order" msgstr "倒序" #: OutputReport2.report:77 msgid "Version 1.0" msgstr "" #: OutputReport2.report:84 Report51.report:60 msgid "Date" msgstr "" #: OutputReport2.report:99 msgid "Project Title:" msgstr "" #: OutputReport2.report:106 msgid "Project No.:" msgstr "" #: OutputReport2.report:113 msgid "Company:" msgstr "" #: OutputReport2.report:120 msgid "Designer:" msgstr "" #: OutputReport2.report:134 msgid "Base Plate ID:" msgstr "" #: OutputReport2.report:185 msgid "Bearing Pressue" msgstr "" #: OutputReport2.report:195 msgid "Node #" msgstr "" #: OutputReport2.report:202 msgid "Brg. Press., psi" msgstr "" #: OutputReport2.report:266 msgid "Anchor Rod Tension" msgstr "" #: OutputReport2.report:276 msgid "Rod #" msgstr "" #: OutputReport2.report:283 msgid "Tension, lbs" msgstr "" #: OutputReport2.report:353 msgid "Page $PAGE of $NPAGE" msgstr "" #: Report.class:120 msgid "Section " msgstr "节" #: Report1.report:29 msgid "=\"Page \" & Page" msgstr "" #: Report1.report:46 msgid "=pi() + 4" msgstr "" #: Report10.report:22 Report14.report:53 msgid "=index" msgstr "" #: Report10.report:31 msgid "=Index" msgstr "" #: Report10.report:46 msgid "=\"Index = \" & index" msgstr "" #: Report10.report:54 msgid "=page & \" / \" & pages" msgstr "" #: Report11.report:19 Report12.report:17 #, fuzzy msgid "Section 1" msgstr "节" #: Report11.report:39 msgid "Gambas" msgstr "" #: Report11.report:59 msgid "All friends list !" msgstr "" #: Report11.report:81 msgid "Gambas Report Demo" msgstr "" #: Report11.report:93 msgid "DEMO" msgstr "" #: Report11.report:106 msgid "Page $PAGE on $NPAGE " msgstr "" #: Report13.report:36 msgid "=\"GAMBAS - \" & index" msgstr "" #: Report13.report:44 msgid "=\"PAGE \" & Page & \" / \" & pages" msgstr "" #: Report14.report:28 msgid "Reference" msgstr "" #: Report14.report:35 #, fuzzy msgid "Description" msgstr "节" #: Report14.report:42 msgid "Valeur" msgstr "" #: Report14.report:73 msgid "=page & \" on \" & pages" msgstr "" #: Report16.report:21 Report17.report:22 Report5.report:20 msgid "Coucou" msgstr "" #: Report2.report:19 msgid "ReportLabel1" msgstr "" #: Report3.report:18 msgid "PARCELLAIRE $NPAGE" msgstr "" #: Report51.report:30 msgid "Recto" msgstr "" #: Report51.report:38 msgid "Verso" msgstr "" #: Report51.report:51 msgid "N°" msgstr "" #: Report51.report:99 #, fuzzy msgid "Observations" msgstr "方向" #: Report6.report:12 msgid "" "Testtest

        \n" "\n" "
        " msgstr "" gambas-3.16.3/comp/src/gb.report2/.project000066400000000000000000000005631411575327000202270ustar00rootroot00000000000000# Gambas Project File 3.0 Title=ReportsEvolution Startup=Report13 Icon=.hidden/control/reportview.png Version=3.15.90 VersionFile=1 Component=gb.image Component=gb.gui Component=gb.form Component=gb.db Component=gb.eval Component=gb.settings Environment="GB_GUI=gb.qt5\nGB_NO_JIT=1" TabSize=2 Translate=1 Language=en Type=Component Packager=1 DoNotTranslate=".src/Tests" gambas-3.16.3/comp/src/gb.report2/.src/000077500000000000000000000000001411575327000174215ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Evaluator/000077500000000000000000000000001411575327000213635ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Evaluator/CResult.class000066400000000000000000000016761411575327000240050ustar00rootroot00000000000000' Gambas class file Public Enum TypeValue, TypeString, TypeOp, TypeVar, TypeFunc, TypeBool, TypeDate Public Value As Variant Public {Type} As Integer Public Pos As Integer Property Read isValue As Boolean Property Read isOperator As Boolean Property Read isString As Boolean Property Read isVariable As Boolean Property Read isFunction As Boolean Property Read isBoolean As Boolean Public Sub _new(vValue As Variant, iType As Integer) Value = vValue Me.Type = iType End Private Function isValue_Read() As Boolean Return Me.Type = TypeValue End Private Function isOperator_Read() As Boolean Return Me.Type = TypeOp End Private Function isString_Read() As Boolean Return Me.Type = TypeString End Private Function isVariable_Read() As Boolean Return Me.Type = TypeVar End Private Function isFunction_Read() As Boolean Return Me.Type = TypeFunc End Private Function isBoolean_Read() As Boolean Return Me.Type = TypeBool End gambas-3.16.3/comp/src/gb.report2/.src/Evaluator/_RepExp.class000066400000000000000000000017351411575327000237620ustar00rootroot00000000000000' Gambas class file Inherits Expression Public Data As Variant Event Data(Name As String) Static Private $aFunctions As String[] Static Private $aAllowedIdentifiers As String[] = ["page", "pages", "index"] Static Private Sub LoadFunctions() $aFunctions = Split(File.Load("FunctionsList"), "\n") End Static Public Sub IsIdentifier(Name As String) As Boolean 'Print "Identifier : " & Name Return $aAllowedIdentifiers.Exist(LCase(Name)) End Static Public Sub IsSubr(Name As String) As Boolean If Not $aFunctions Then LoadFunctions ' Return if a the 'Name' Gambas subroutine is allowed. Return $aFunctions.Exist(LCase(Name)) 'Print Name End Public Sub GetValue(Name As String) As Variant 'Return the value Of the 'Name' identifier. Data = 0 'Print object.parent(Me) Raise Data(Name) Return Data 'Print "Get Value : " & Name 'Return "2" End ' Public Sub Coucou(Value As String) As String ' ' Return "Coucou " & Value ' ' End gambas-3.16.3/comp/src/gb.report2/.src/Optional/000077500000000000000000000000001411575327000212065ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Optional/Align.class000066400000000000000000000005041411575327000232660ustar00rootroot00000000000000' Gambas class file Export Optional ' Must be the same values as in gb.form.const.h in gb.qt4 sources Public Enum Normal = &H00, {Left} = &H01, {Right} = &H02, Center = &H03, TopNormal = &H10, TopLeft = &H11, TopRight = &H12, Top = &H13, BottomNormal = &H20, BottomLeft = &H21, BottomRight = &H22, Bottom = &H23 gambas-3.16.3/comp/src/gb.report2/.src/Optional/Arrange.class000066400000000000000000000003661411575327000236210ustar00rootroot00000000000000' Gambas class file ' Gambas class file Export Optional Public Const {None} As Integer = 0 Public Const {Horizontal} As Integer = 1 Public Const {Vertical} As Integer = 2 Public Const {Column} As Integer = 4 Public Const {Fill} As Integer = 5 gambas-3.16.3/comp/src/gb.report2/.src/Optional/Line.class000066400000000000000000000005041411575327000231230ustar00rootroot00000000000000' Gambas class file Export Optional ' Must be the same values as in gb.form.const.h in gb.qt4 sources Public Const {None} As Integer = 0 Public Const {Solid} As Integer = 1 Public Const {Dash} As Integer = 2 Public Const {Dot} As Integer = 3 Public Const {DashDot} As Integer = 4 Public Const {DashDotDot} As Integer = 5gambas-3.16.3/comp/src/gb.report2/.src/Report.class000066400000000000000000000347661411575327000217430ustar00rootroot00000000000000' Gambas class file Create Static Export Inherits ReportVBox ' For Stretch properties Public Enum None, Proportional, Fill Public Const _Properties As String = "*,-Left,-Top,-Width,-Height,Count{Range:1;256}=1,Index,Text," "Paper{Printer.A3;A4;A5;B5;Letter;Executive;Legal;Custom}=A4," "Orientation{Printer.Portrait;Landscape}=Portrait" Public Const _HiddenControls As String = "Report,ReportControl,ReportContainer,ReportFrame,_ReportSection" Public Const _IsForm As Boolean = True Public Const _IsContainer As Boolean = True Public Const _IsMultiContainer As Boolean = True Public Const _DefaultText As String = "Section &1" Public Const _DrawWith As String = "TabPanel" Public Const _DefaultEvent As String = "Open" Static Public AllowedUnits As String[] = ["m", "cm", "mm", "in", "pt", "px"] Public _LayoutNotFinished As Boolean Public _Container As _ReportSection Public {Debug} As Boolean = False Public _bInExec As Boolean Private $aSections As New TControl[] Private iCurPage As Integer = 0 Private $iPageCount As Integer = -1 Public _LayoutIsDirty As Boolean = True Private $fScale As Float = 1.0 Private $iIndex As Integer Private $iResolution As Integer = -1 Private $iCurSection As Integer Private $iCurPage As Integer = -1 Private $iPaper As Integer = 2 Private $iOrientation As Integer ' Private $hPrinter As New Printer As "Printer" Private $bOpened As Boolean Private $fCurReportWidth As Float ' Property Read Printer As Printer Property Resolution As Integer Property Scale As Float Property Read PageCount As Integer Property Count As Integer Property Index As Integer 'All ReportControl Properties Property Left As String Property Top As String Property X As String Property Y As String Property Width As String Property Height As String Property Visible As Boolean Property {Font} As Font Property Expand As Boolean Property Ignore As Boolean Property Fixed As Boolean Property Autoresize As Boolean Property Padding As ReportPadding 'All ReportFrame Properties Property Border As ReportBorder Property BackGround As ReportBrush 'All ReportContainer Properties Property Read Children As ReportControl[] Property Spacing As String Property Data As Object 'All ReportSection Properties Property Text As String Property Paper As Integer Property Orientation As Integer Property Read _Width As Float Property Read _Height As Float Property Path As String Use $sPath Event Open Static Public Sub Main() Dim hObject As Object hObject = Application.Startup.AutoCreate() If Not hObject Is Report Then Return FPreview.Run(hObject) End Static Public Sub _init() If Not Component.IsLoaded("gb.eval") Then Component.Load("gb.eval") End Public Sub _New() Dim hSection As New _ReportSection Dim TSection As New TControl object.Attach(Me, Me, "Report") '$hReportTControl.RelPage = 0 ReportControl._ObjectFromId[Me.id] = Me hSection = New _ReportSection hSection._ReportId = Me.Id ReportControl._ObjectFromId[hSection.Id] = hSection TSection.Ctrl = hSection $aSections.Add(TSection) hSection.Text = ("Section ") & $aSections.Max _Container = hSection Me.paper = Printer.A4 'Me.Orientation = Printer.Landscape End Public Sub Layout(Optional iPage As Integer = -1) 'Dim iCurPage As Integer Dim TSection As TControl Dim CSection As ReportContainer Dim CBaseSection As ReportContainer Dim i As Integer Dim hImg As Image 'Utilise un device par défaut si nécéssaire If Not Paint.Device Then hImg = New Image(1, 1) Paint.Begin(hImg) Endif Paint.Font = Me.Font If Not $bOpened Then Raise Open $bOpened = True Endif If Not _LayoutIsDirty Then Return If _bInExec Then Return If iPage > -1 Then 'La page a déja été calculée If iPage <= $iCurPage Then Return Else 'Mise a zéro $iCurPage = -1 $iCurSection = 0 $iPageCount = 0 Me._Reset Endif 'Set execution Flag to true _bInExec = True CBaseSection = $aSections[0].Ctrl For i = $iCurSection To $aSections.Max Tsection = $aSections[i] CSection = TSection.Ctrl CSection.Padding = CBaseSection.Padding CSection.Spacing = CBaseSection.Spacing CSection._NormalizeUnits() $fCurReportWidth = CBaseSection._Width TSection._SetGeometry(0, 0, CSection._Width, CSection._Height) Inc $iCurPage Do CSection._SetChildGeometry(0, 0, CSection._Width, CSection._Height, $iCurPage, TSection, False) If CSection._CurItem > CSection.Children.Max Then Break Inc $iCurPage $iPageCount = $iCurPage 'Print "Fin Page " & $iCurPage If iPage > -1 And If $iCurPage > iPage Then Dec $iCurPage _LayoutNotFinished = True $iCurSection = i _bInExec = False Return Endif Loop 'Inc iCurPage Next $iPageCount = $iCurPage + 1 _LayoutNotFinished = False $iCurSection = 0 _LayoutIsDirty = False 'End of execution _bInExec = False 'Print "Pages: " & $ipageCount End Public Sub Paint(Page As Integer) Dim TSection As TControl 'Dim fScale As Float If Me.Parent = Null Then Endif Paint.Font = Me.Font $fCurReportWidth = $aSections[0].Ctrl._Width If _LayoutIsDirty Or $iPageCount = -1 Then Layout(Page) Paint.Save Paint.Scale($fScale, $fScale) 'Set execution Flag to true _bInExec = True Dec page For Each TSection In $aSections TSection.Ctrl._PaintBefore(Page, 0, 0, TSection, -1) TSection.Ctrl._Paint(Page, 0, 0, TSection, -1) TSection.Ctrl._PaintAfter(Page, 0, 0, TSection, -1) Next 'End of execution _bInExec = False Paint.Restore End Private Function PageCount_Read() As Integer If _LayoutIsDirty And Not _LayoutNotFinished Then Layout(1) Return $iPageCount End Private Function Height_Read() As String Return $aSections[0].Ctrl.Height End Private Sub Height_Write(Value As String) SetHeight(Value) $iPaper = Printer.Custom End Private Sub SetHeight(Value As String) Dim TSection As TControl If $aSections[0].Ctrl.Height <> Value Then For Each TSection In $aSections TSection.Ctrl.Height = Value Next _LayoutIsDirty = True Me._reset Endif End Private Function Width_Read() As String Return $aSections[0].Ctrl.Width End Private Sub Width_Write(Value As String) SetWidth(Value) $iPaper = Printer.Custom End Private Sub SetWidth(Value As String) Dim TSection As TControl If $aSections[0].Ctrl.Width <> Value Then For Each TSection In $aSections Tsection.Ctrl.Width = Value Next _LayoutIsDirty = True Me._Reset Endif End Private Function Scale_Read() As Float Return $fScale End Private Sub Scale_Write(Value As Float) $fScale = Value End Public Sub Clear() Super._Free iCurPage = 0 $iPageCount = -1 _LayoutIsDirty = True $fScale = 1.0 End ' Public Function Preview() If Me.Path Then FPreview.Path = Me.Path FPreview.Run(Me) If FPreview.Path Then Me.Path = FPreview.Path End Public Sub Refresh() _LayoutIsDirty = True Me._Reset End Private Function Count_Read() As Integer Return $aSections.Count End Private Sub Count_Write(Value As Integer) Dim i As Integer Dim hSection As _ReportSection Dim TSection As TControl If Value < 0 Then Return If Value < $aSections.Count Then $aSections.Resize(Value) Else If Value > $aSections.Count Then For i = $aSections.Count To Value - 1 TSection = New TControl hSection = New _ReportSection hSection.Text = "Section " & CStr(i) hSection._ReportId = Me.Id ReportControl._ObjectFromId[hSection.Id] = hSection TSection.Ctrl = hSection hSection.Padding = Me.Padding hSection.Height = Me.Height hSection.Width = Me.Width $aSections.Add(TSection) 'hSection.Text = ("Section ") & $aSections.Max Next Endif End Private Function Index_Read() As Integer Return $iIndex End Private Sub Index_Write(Value As Integer) $iIndex = Max(Min($aSections.Max, Value), 0) _Container = $aSections[$iIndex].Ctrl End Public Sub _get(Index As Integer) As _ReportSection Return $aSections[Index].Ctrl End Private Function Padding_Read() As ReportPadding Return $aSections[0].Ctrl.Padding End Private Sub Padding_Write(Value As ReportPadding) Dim TSection As TControl If Me.Padding <> Value Then For Each TSection In $aSections Tsection.Ctrl.Padding = Value Next Endif End Private Function Resolution_Read() As Integer Return $iResolution End Private Sub Resolution_Write(Value As Integer) _LayoutIsDirty = True $iResolution = Max(0, Value) End Private Function Left_Read() As String Return _Container.Left End Private Sub Left_Write(Value As String) _Container.Left = Value End Private Function Top_Read() As String Return _Container.Top End Private Sub Top_Write(Value As String) _Container.Top = Value End Private Function X_Read() As String Return _Container.Left End Private Sub X_Write(Value As String) _Container.Left = Value End Private Function Y_Read() As String Return _Container.Top End Private Sub Y_Write(Value As String) _Container.Top = Value End Private Function Visible_Read() As Boolean Return _Container.Visible End Private Sub Visible_Write(Value As Boolean) _Container.Visible = Value End Private Function Font_Read() As Font Return _Container.Font End Private Sub Font_Write(Value As Font) _Container.Font = Value End Private Function Expand_Read() As Boolean Return _Container.Expand End Private Sub Expand_Write(Value As Boolean) _Container.Expand = Value End Private Function Ignore_Read() As Boolean Return _Container.Ignore End Private Sub Ignore_Write(Value As Boolean) _Container.Ignore = Value End Private Function Fixed_Read() As Boolean Return _Container.Fixed End Private Sub Fixed_Write(Value As Boolean) _Container.Fixed = Value End Private Function Autoresize_Read() As Boolean Return _Container.Autoresize End Private Sub Autoresize_Write(Value As Boolean) _Container.Autoresize = Value End Private Function Border_Read() As ReportBorder Return _Container.Border End Private Sub Border_Write(Value As ReportBorder) _Container.Border = Value End Private Function BackGround_Read() As ReportBrush Return _Container.BackGround End Private Sub BackGround_Write(Value As ReportBrush) _Container.BackGround = Value End Private Function Children_Read() As ReportControl[] Return _Container.Children End Private Function Spacing_Read() As String Return _Container.Spacing End Private Sub Spacing_Write(Value As String) Dim TSection As TControl Dim hCont As ReportContainer If Me.Spacing <> Value Then For Each TSection In $aSections hCont = Tsection.Ctrl hCont.Spacing = Value Next Endif End Private Function Data_Read() As Object Return _Container.Data End Private Sub Data_Write(Value As Object) _Container.Data = Value End Private Function Text_Read() As String Return _Container.Text End Private Sub Text_Write(Value As String) _Container.Text = Value End ''Return a new report object Public Sub Clone() As Report 'Return Object.New(Object.Type(Me)) Return Object.Class(Me).New() End Private Function Paper_Read() As Integer Return $iPaper End Private Sub Paper_Write(Value As Integer) $iPaper = Value SetPaper End Private Function Orientation_Read() As Integer Return $iOrientation End Private Sub Orientation_Write(Value As Integer) $iOrientation = Value SetPaper End Public Sub Print(Optional hPrinter As Printer) If hPrinter Then CPrint.PrintReport(Me, hPrinter) Else CPrint.PrintReport(Me) Endif End Private Sub SetPaper() Dim sPrev As String Select Case $iPaper Case Printer.A3 SetWidth("29.7cm") SetHeight("42cm") Case Printer.A4 SetWidth("21cm") SetHeight("29.7cm") Case Printer.A5 SetWidth("14.8cm") SetHeight("21cm") Case Printer.B5 SetWidth("18.7cm") SetHeight("25.7cm") Case Printer.Executive SetWidth("19.1cm") SetHeight("25.4cm") Case Printer.Legal SetWidth("21.6cm") SetHeight("35.6cm") Case Printer.Letter SetWidth("21.6cm") SetHeight("27.9cm") End Select If $iOrientation = Printer.Landscape Then sPrev = Me.Height SetHeight(Me.Width) SetWidth(sPrev) Endif End Public Sub _Reset() Dim hSection As TControl For Each hSection In $aSections hSection.Ctrl._Reset hSection._PageChildren = New Collection Next $iCurPage = -1 $iCurSection = 0 $iPageCount = 0 End ''Convert Internal units to scaled pixels. Fast Public Function _ToPixels(Value As Float) As Float Dim f As Float f = Value / $fCurReportWidth * (Paint.Width / $fScale) Return f End ''Shortcut to Convert a Pixel Value to Internal unit (Need a paint device). Fast Public Function _FromPixels(Value As Float) As Float Return (value / Paint.ResolutionX) '* 2.54) End Fast Static Private Function GetFactorToInch(Unit As String) As Float Select Case Unit Case "cm" Return 0.3937 Case "ft" Return 12 Case "in" Return 1 Case "m" Return 39.37 Case "mm" Return 0.03937 Case "px" If Paint.ResolutionX Then Return 1 / Paint.ResolutionX Else Return 1 / Desktop.Resolution Endif Case "pt" Return 1 / 72 'http://en.wikipedia.org/wiki/Point_(typography)#Current_DTP_point_system Case Else Error.Raise("Unknown unit") End Select End ''Convert any value from any report allowed Unit to another one. ''For Pixel convertions, be carefull to give the Device ''Resolution in parameter. Fast Static Public Function UnitTo(Value As Float, Unit1 As String, Unit2 As String) As Float Dim fInch As Float Dim f As Float f = GetFactorToInch(Unit1) finch = value * f f = GetFactorToInch(Unit2) Return finch / f End ''Shortcut to convert any report allowed unit to Inch. Fast Static Public Function UnitToInch(Value As Float, Unit As String) As Float Dim fInch As Float Dim f As Float f = GetFactorToInch(Unit) finch = value * f Return finch 'f = 0.3937 'Return finch / f End Private Function _Width_Read() As Float Return $aSections[0].Ctrl._Width End Private Function _Height_Read() As Float Return $aSections[0].Ctrl._Height End gambas-3.16.3/comp/src/gb.report2/.src/ReportContainer.class000066400000000000000000001051521411575327000235720ustar00rootroot00000000000000' Gambas class file Export Create Private Inherits ReportFrame Public Const _IsContainer As Boolean = True Public Const _Group As String = "Container" Public Const _Properties As String = "*,Spacing{ReportCoord},OnePiece,ForceNewPage" 'Public Const _DefaultEvent As String = "Data" 'Private $bDataIsResult As Boolean 'Private $iCount As Integer Property _CurItem As Integer Private $iCurItem As Integer Public _Arrangement As Integer Private $bIndexChange As Boolean Private $aChild As New ReportControl[] Private $fSpacing As Float Private $sSpacing As String Private $bRelativeSpacing As Boolean 'Private $aChildCopy As TControl[] Private $bOnePiece As Boolean 'Private $iIndex As Integer 'Private $hData As Object Private $fFixedSize As Float Property _Index As Integer Property DataCount As Integer Property Read Children As ReportControl[] 'Property Read Index As Integer Property Spacing As String 'Property Data As Object '<==== remettre pour automation Property Read _Spacing As Float Property Read _RelativeSpacing As Boolean Property OnePiece As Boolean Public _RealSpacing As Integer Public _NotFinished As Boolean Event BeforeData Event AfterData Public Function _Add(cControl As ReportControl) 'As TControl 'Dim hTControl As New TControl 'hTControl.Ctrl = cControl $aChild.Add(cControl) ReportControl._ObjectFromId[cControl.Id] = cControl 'Return hTControl End Public Sub _Remove(id As Integer) $aChild.Remove($aChild.Find(ReportControl._ObjectFromId[id])) End Public Sub _Free() End Public Sub _Raise(hControl As ReportControl) Dim iPos As Integer iPos = $aChild.Find(hControl) If iPos = -1 Then Return $aChild.Remove(iPos) $aChild.add(hControl, 0) End Public Sub _Lower(hControl As ReportControl) Dim iPos As Integer iPos = $aChild.Find(hControl) If iPos = -1 Then Return $aChild.Remove(iPos) $aChild.add(hControl) End Private Function Children_Read() As ReportControl[] Return $aChild End Private Function Spacing_Read() As String Return $sSpacing End Private Sub Spacing_Write(Value As String) $sSpacing = Value End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, (DataIndex) As Integer) Dim hChild As TControl Dim i As Integer X += hControl.RealLeft Y += hControl.RealTop ' Paint.Text(DataIndex, X + 20, Y + 20) ' Paint.Brush = Paint.Color(Color.Black) ' Paint.Fill If Not hControl._PageChildren.Exist(Page) Then Return 'For Each hChild In hControl._PageChildren[Page] For i = 0 To hControl._PageChildren[Page].Max hchild = hControl._PageChildren[Page][i] Me._Index = hchild.Index If $bIndexChange Then Raise BeforeData $bIndexChange = False Endif hChild.Ctrl._Paintframe(Page, X, Y, hChild, hchild.Index) 'hChild.Index) Next End Private Function _Spacing_Read() As Float Return $fSpacing End Private Function _RelativeSpacing_Read() As Boolean Return $bRelativeSpacing End Public Sub _NormalizeUnits() Dim hChild As ReportControl Dim hSizeParse As TSizeParse Super._NormalizeUnits() hSizeParse = New TSizeParse($sSpacing, True) $fSpacing = hSizeParse.GetValue() $bRelativeSpacing = hSizeParse.IsRelative() For Each hChild In $aChild 'hchild.SizeHint = Null hChild._NormalizeUnits() Next End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hMyHints As New ReportSizeHints 'If Me._SizeInt.StoreSize Then Return Me._SizeInt 'If Me.tag = "*" Then Stop If Me._CurItem > Me.Children.max Then ' If Me Is ReportSection Then Stop Me._CurItem = 0 ' 'Me._DataIndex = 0 Endif Me._Index = DataIndex If $bIndexChange Then Raise BeforeData $bIndexChange = False Endif Select Case _Arrangement Case Arrange.Vertical Return GetVSizeInt(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) Case Arrange.Horizontal Return GetHSizeInt(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) Case Arrange.Column Return GetVPSizeInt(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) Case Arrange.Fill, Arrange.None Return Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'hMyHints.Height = AvailableH 'Me._SizeInt.StoreSize = True 'Me._SizeInt = hMyHints Return hMyHints End Select Raise AfterData End Private Function GetHSizeInt((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hChild As ReportControl Dim fHeight, fWidth As Float Dim hChildHints As ReportSizeHints Dim hMyHints As New ReportSizeHints Dim fSpc As Float Dim fMaxSpc As Float Dim i As Integer 'D'abord utiliser la méthode du controle pour définir la taille hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'Puis si besoins voir le besoin des enfants If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then fSpc = IIf(Me._RelativeSpacing, TotalWidth * Me._Spacing / 100, Me._Spacing) 'on ajoute la marge supérieur du premier objet If Me.Children.Max > 0 Then fWidth += Me.Children[0].Margin._Top For i = 0 To Me.Children.Max hChild = Me.Children[i] If Not hchild.Visible Then Continue hChildHints = hchild._GetSizeHints(AvailableW - fWidth, AvailableH, AvailableW, AvailableH, DataIndex) fMaxSpc = Max(fspc, hchild.Margin._Right) If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Left) fWidth += hChildHints.Width + fMaxSpc If fHeight < hChildHints.Height Then fHeight = hChildHints.Height 'Si l'enfant n'est pas finit alors moi non plus (:-P) If hChildHints.NotFinished Then hMyHints.NotFinished = True Next 'Retrait du dernier espace If fWidth Then fWidth -= fSpc hMyHints.Height = fHeight + Me.Padding._Height + Me.Border._Top + Me.Border._bottom hMyHints.Width = fWidth + Me.Padding._Width + Me.Border._Left + Me.Border._Right Endif Return hMyHints End Private Function GetVPSizeInt((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints ' Dim hSizeInt As New ReportSizeHints ' Dim htmpInts As ReportSizeHints ' Dim hChild As ReportControl ''Enfants ' Dim fHeight, fSpc, fWidth As Float ' Dim i, j As Integer ' Dim bExitLoop As Boolean ' Dim fMaxSpc As Float ' ' 'D'abord utiliser la méthode du controle pour définir la taille ' hSizeInt = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) ' 'Circuit court ' If Me.Children.Count = 0 Then Return hSizeInt ' 'Largeur d'un espace ' fSpc = IIf(Me._RelativeSpacing, TotalHeight * Me._Spacing / 100, Me._Spacing) ' ' Si ce n'est pas fait on enregistre la place nécéssaire a tout les éléments fixes ' If Not $fFixedSize Then ' ' Endif ' End Private Function GetVSizeInt((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hSizeInt As New ReportSizeHints Dim htmpInts As ReportSizeHints Dim hChild As ReportControl ''Enfants Dim fHeight, fSpc, fWidth As Float Dim i, j As Integer Dim bExitLoop As Boolean Dim fMaxSpc As Float 'Dim IndexKey As String = Str(Me.Id) &/ Str(DataIndex) 'If Me.Tag = "**" Then Stop 'D'abord utiliser la méthode du controle pour définir la taille hSizeInt = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'Circuit court If Me.Children.Count = 0 Then Return hSizeInt fSpc = IIf(Me._RelativeSpacing, TotalHeight * Me._Spacing / 100, Me._Spacing) ' Si ce n'est pas fait on enregistre la place nécéssaire a tout les éléments fixes If Not $fFixedSize Then 'On ajoute la marge superieur du premier objet7 'If Me.tag = "**" Then Stop For i = 0 To Me.Children.Max hChild = Me.Children[i] If Not hchild.Visible Then Continue If hchild.Fixed Then 'On ajoute la marge supérieur du premier objet fixe If $fFixedSize = 0 Then $fFixedSize = hchild.Margin._Top htmpInts = hChild._GetSizeHints(AvailableW, AvailableH, AvailableW, AvailableH, DataIndex) fMaxSpc = Max(hchild.Margin._Bottom, fspc) If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Top) $fFixedSize += htmpInts.Height + fMaxSpc Endif Next 'If $fFixedSize Then $fFixedSize = Me.Children[0].Margin._Top Endif 'La taille ne peut être inférieur a celle de tout les éléments fixes ou a défaut 'a celle du premier élément. hSizeInt.Height = Max(hSizeInt.Height, $fFixedSize) 'On ajoute la taille des objets fixes précédents If $fFixedSize > 0 Then fHeight = $fFixedSize Else 'On ajoute la marge supérieur du premier objet listé si aucun objet fixe n'est a l'Horizon fHeight = Me.Children[Me._CurItem].Margin._Top Endif 'If Me.Tag = "**" Then Stop If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then 'On définit la taille au besoins des enfants For i = Me._CurItem To Me.Children.Max hChild = Me.Children[i] If Not hchild.Visible Then Continue For j = hchild._DataIndex To hchild._Count - 1 'If hchild.Tag = "head" Then Print "VDataHint = " & DataIndex If hChild.Ignore Then Continue If hChild.Fixed Then Continue hchild._Index = j htmpInts = hChild._GetSizeHints(AvailableW, AvailableH - fHeight, AvailableW, AvailableH, j) 'Si l'enfant n'est pas terminé alors moi non plus If htmpInts.NotFinished Then hSizeInt.NotFinished = True fMaxSpc = Max(fspc, hchild.Margin._Bottom) If hchild._Count <= 0 Or If j = hchild._Count - 1 Then If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Top) Endif Else fMaxSpc = Max(fMaxSpc, hchild.Margin._Top) Endif 'on ajoute la hauteur aux besoins fHeight += htmpInts.Height + fMaxSpc ' If Me.Tag = "**" Then ' Print "fHeight , AvailableH : ", fHeight - fMaxSpc, AvailableH ' Print "fMaxSpc : ", fMaxSpc ' 'If fMaxSpc = 0 Then Stop ' Endif If fHeight - fMaxSpc > AvailableH Then 'Les enfants ne loge pas ... on ne peut pas finir hSizeInt.NotFinished = True bExitLoop = True 'Print "Avec Parent : " & DataIndex & " Je loge : " & j Break Endif 'On récupère la largeur de l'enfant le plus large If fWidth < htmpInts.Width Then fWidth = htmpInts.Width Next If bExitLoop Then Break Next 'on enlève le dernier espace If fHeight > 0 Then fHeight -= fSpc 'bogue bizzard fHeight += 0.01 'On indique la place nécéssaire aux enfants+les éléments fixes hSizeInt.Height = fHeight + Me.Padding._Height + Me.Border._Top + Me.Border._Bottom hSizeInt.Width = fWidth + Me.Padding._Width + Me.Border._Left + Me.Border._Right Endif 'On ne peut pas dépasser la taille disponible (report sur prochaine page) 'FIXME: Onepiece partially desactivated If Not Me.OnePiece Then hSizeInt.Height = Min(hSizeInt.Height, AvailableH) Endif hSizeInt.Height = Min(TotalHeight, hSizeInt.Height) Me._SizeInt = hSizeInt ' If Me.Tag = "Boite 2" Then ' Print hSizeInt.Height ' Stop ' Endif 'If Me.tag = "toto" Then Stop ' If hSizeInt.NotFinished = False Then ' Print Me.Tag & " : EST FINIT" ' Endif Return hSizeInt End Public Sub _Reset() Dim hChild As ReportControl 'mise a zéro de l'index de suivit de progression Me._CurItem = 0 'Mise a zéro de l'index de reproduction Me._DataIndex = 0 'Netoyage du layout précédent 'Me._PageChildren.Clear 'Nettoyage récurssif des enfants For Each hChild In Me.Children hChild._Reset Next End Public Sub _SetChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) 'If Me.Tag = "*" Then Stop 'Print "Geometry " & Object.Type(Me) 'If ContPage > 0 Then Return Me._Index = TCont.Index If Me._CurItem > Me.Children.max Then ' If Me Is ReportSection Then Stop Me._CurItem = 0 'Me._DataIndex = 0 Endif ' If $bIndexChange Then ' Raise BeforeData ' $bIndexChange = False ' Endif Select Case _Arrangement Case Arrange.Vertical SetVChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.Horizontal SetHChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.Column Me._SetCChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.Fill SetFChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) Case Arrange.None SetNChildGeometry(X, Y, W, H, ContPage, TCont, bInFixed) End Select Raise AfterData End Private Function SetFChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim hChild As ReportControl Dim hTItem As TControl Dim hChildHints As ReportSizeHints Dim aPageItems As New TControl[] Dim oChild As Object Dim j As Integer X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top W = W - Me.Padding._Left - Me.Padding._Right - Me.Border._Left - Me.Border._Right H = H - Me.Padding._Top - Me.Padding._Bottom - Me.Border._Top - Me.Border._Bottom For Each hChild In Me.Children If Not hchild.Visible Then Continue hChildHints = hchild._GetSizeHints(W, H, W, H) hTItem = New TControl hTItem.Ctrl = hchild hTItem.SizeHint = hChildHints Inc Me._CurItem aPageItems.Add(hTItem) Next For Each oChild In aPageItems oChild._Index = hTItem.Index hTItem._SetGeometry(X, Y, W, H) hChild._SetChildGeometry(X, Y, W, H, ContPage, hTItem, bInFixed Or Me.Fixed) If oChild Is ReportContainer Then If oChild._CurItem < oChild.Children.count Then 'Print ochild.tag & " pas fini" j = Me.Children.Find(oChild) Me._CurItem = Min(j, Me._CurItem) Endif 'ne pas incrémenter la lecture des enfants si je suis dans un élément fixe If bInFixed Then ochild._CurItem = 0 End If Next TCont._PageChildren[ContPage] = aPageItems End Private Function SetNChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim hChild As ReportControl Dim ochild As Object Dim hTItem As TControl Dim hChildHints As ReportSizeHints Dim aPageItems As New TControl[] Dim iX, iY As Float Dim J As Integer If Me.Children.Count = 0 Then Return X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top W = W - Me.Padding._Left - Me.Padding._Right - Me.Border._Left - Me.Border._Right H = H - Me.Padding._Top - Me.Padding._Bottom - Me.Border._Top - Me.Border._Bottom For Each hChild In Me.Children If Not hchild.Visible Then Continue hChildHints = hchild._GetSizeHints(W, H, W, H, TCont.Index) hTItem = New TControl hTItem.Ctrl = hchild hTItem.SizeHint = hChildHints Inc Me._CurItem aPageItems.Add(hTItem) Next For Each hTItem In aPageItems oChild = hTItem.Ctrl hChildHints = hTItem.SizeHint iX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) iY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) oChild._Index = hTItem.Index hTItem._SetGeometry(iX, iY, hChildHints.Width, hChildHints.Height) hChild._SetChildGeometry(iX, iY, hChildHints.Width, hChildHints.Height, ContPage, hTItem, bInFixed Or Me.Fixed) If oChild Is ReportContainer Then If oChild._CurItem < oChild.Children.count Then j = Me.Children.Find(oChild) Me._CurItem = Min(j, Me._CurItem) Endif 'ne pas incrémenterla lecture des enfants si je suis dans un élément fixe If bInFixed Then ochild._CurItem = 0 End If Next TCont._PageChildren[ContPage] = aPageItems End Private Sub SetHChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim aPageItems As New TControl[] ''Éléments contenu par cette page Dim hChildHints As ReportSizeHints ''Besoins en hauteur/largeur de l'enfant Dim hChild As ReportControl ''Un enfant reportcontrol Dim oChild As Object Dim TW, fWidth, fSpc As Float Dim fExp As Float Dim iNExp As Integer Dim i, j As Integer Dim fTmpX, fX, fY As Float Dim hTItem As TControl Dim fMaxSpc As Float Dim fChildY, fChildH As Float 'Initialisation des variables fSpc = IIf(Me._RelativeSpacing, H * Me._Spacing / 100, Me._Spacing) 'ME._Spacing 'On retire les marges a la hauteur et les bordures H = H - Me.Padding._Top - Me.Padding._Bottom - Me.Border._Top - Me.Border._Bottom 'Print H 'on retire a la largeur les paddings (et les bordure ?) W = W - Me.Padding._Left - Me.Padding._Right - Me.Border._Left - Me.Border._Right 'On positionne le curseur de position au coin a gauche X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top 'On initialise la largeur totale avec la largeur disponible TW = W For i = 0 To Me.Children.Max hChild = Me.Children[i] If Not hchild.Visible Then Continue 'hchild._Index = IIf(Me.DataCount > 0, j, TCont.Index) hChild._Index = TCont.Index hChildHints = hChild._GetSizeHints(w, h, w, h, TCont.Index) 'Si l' éléments ne loge pas on quitte et on oublit If TW - hChildHints.Width < 0 Then Break 'Si l'élément n'est pas ignoré If Not hChild.Ignore Then fMaxSpc = Max(fspc, hchild.Margin._Right) If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Left) TW = TW - hChildHints.Width - fMaxSpc 'Si il est étendu on en tient compte If hChild.Expand Then Inc iNExp fExp += hChildHints.Width Endif Endif 'On ajoute l'élément a la page hTItem = New TControl hTItem.Ctrl = hChild hTItem.SizeHint = hChildHints hTItem.Index = TCont.Index aPageItems.Add(hTItem) Next 'De toute les façon je ne cherche pas a parcourir tout 'Les objet donc j'indique que j'ai tout vu Me._CurItem = Me.Children.count If (W - TW) > 0 Then TW += fspc Endif fTmpX = X If aPageItems.Count > 0 Then fTmpX += aPageItems[0].Ctrl.Margin._Left fExp = fExp - aPageItems[0].Ctrl.Margin._Left '- aPageItems[aPageItems.Max].Ctrl.Margin._Right Endif 'On va mettre en page a présent 'On définit la taille des éléments étendus If iNexp Then fExp = (TW + fExp) / iNexp Endif For i = 0 To aPageItems.Max hTItem = aPageItems[i] oChild = hTItem.Ctrl 'Si l'élément est étendu on lui applique la taille répartie If oChild.Expand And Not oChild.Ignore Then 'If Me.Tag = "*" Then Stop fWidth = fExp Else 'sinon il maintien sa taille fWidth = hTItem.SizeHint.Width Endif 'oChild._Index = hTItem.Index If Not oChild.Ignore Then fChildH = H - ochild.Margin._Top - oChild.Margin._Bottom fChildY = Y + oChild.Margin._Top hTItem._SetGeometry(fTmpX, fChildY, fWidth, fChildH) oChild._SetChildGeometry(fTmpX, fChildY, fWidth, fChildH, ContPage, hTItem, bInFixed Or Me.Fixed) fMaxSpc = Max(fspc, ochild.Margin._Right) If i < aPageItems.Max Then fMaxSpc = Max(fMaxSpc, aPageItems[i + 1].Ctrl.Margin._Left) fTmpX += fWidth + fMaxspc Else fX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) fY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) hTItem._SetGeometry(fX, fY, fWidth, hTItem.SizeHint.Height) oChild._SetChildGeometry(fX, fY, fWidth, hTItem.SizeHint.Height, ContPage, hTItem, bInFixed Or Me.Fixed) Endif If oChild Is ReportContainer Then If oChild._CurItem <= oChild.Children.max Then 'Print ochild.tag & " pas fini" j = Me.Children.Find(oChild) Me._CurItem = Min(Me._CurItem, j) Endif 'ne pas incrémenter la lecture des enfants si je suis dans un élément fixe If bInFixed Then ochild._CurItem = 0 Endif Next 'On ajoute la page a la collection de page du conteneur TCont._PageChildren[ContPage] = aPageItems End Private Function DataCount_Read() As Integer Return Me._Count End Private Sub DataCount_Write(Value As Integer) 'If value = 0 Then value = 1 Me._Count = Value End ' Public Function _GetIndex() As Integer ' ' If Me._Count > 0 Then 'Si c'est moi le répéteur alors je fournis mon index ' Return Me._Index ' Else ' Try Return Me.Parent._GetIndex 'Sinon je ontinue a remonter la lignée jusqu'au répéteur ' Endif ' ' End Private Function _Index_Read() As Integer Return Super._Index End Private Sub _Index_Write(Value As Integer) If Super._Index = Value And If Super._Index > 0 Then Return $bIndexChange = True Super._Index = Value End Private Function _CurItem_Read() As Integer Return $iCurItem End Private Sub _CurItem_Write(Value As Integer) 'Print "_CurItem = " & Value 'If Me.tag = "Boite 1" And Value = 0 Then Stop 'If Me.tag = "Boite 1" And ContPage = 1 Then Print "CurItem: " & Me._CurItem $iCurItem = Value End Private Function OnePiece_Read() As Boolean Return $bOnePiece End Private Sub OnePiece_Write(Value As Boolean) $bOnePiece = Value End Public Sub _SetCChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) End Private Sub SetVChildGeometry(X As Float, Y As Float, W As Float, H As Float, ContPage As Integer, TCont As TControl, bInFixed As Boolean) Dim aPageItems As New TControl[] ''Éléments contenu par cette page Dim hChildHints As ReportSizeHints ''Besoins en hauteur/largeur de l'enfant Dim hChild As ReportControl ''Un enfant reportcontrol Dim fTH As Float ''Hauteur restante Dim fSpc As Float ''Taille d'un espace Dim hTItem As TControl ''Un objet virtuel Dim oChild As Object ''Un objet gambas générique Dim fExp As Float ''taille des objets étendus Dim iNExp As Integer ''Nombre d'objets étendus Dim ftmpHeight As Float ''Tampon pour le calcul de la taille répartie Dim ftmpY As Float ''Curseur temporaire de position haute Dim fX, fY As Float ''Tampon de position Dim i, j As Integer ''Des indexs Dim bExitLoop As Boolean ''Flag de sortie de traitement Dim bForceNewPage As Boolean ''Flag d'anticipation de sortie 1 par page Dim iPreIndex As Integer Dim fMaxSpc As Float ''Résultat de la comparaison ds espaces (marges/spacing) Dim fChildX, fChildW As Float Dim iIndex As Integer Dim bFirst As Boolean 'Dim hSizeInt As Boolean Dim bTop As Boolean Dim fPrevTH As Float Dim cChildFixe As New Collection Dim iVal As Integer 'Dim IndexKey As String = Str(Me.Id) &/ Str(TCont.Index) 'Détermination de la taille d'un espace 'et prise en compte de la taille relative fSpc = IIf(Me._RelativeSpacing, H * Me._Spacing / 100, Me._Spacing) 'Retrait du padding et des bordures de la hauteur de travail H = H - Me.Padding._Top - Me.Border._Top - Me.Border._Bottom - Me.Padding._Bottom 'Retrait du padding et des bordures a la largeur de travail W = W - Me.Padding._Left - Me.Border._Left - Me.Border._Right - Me.Padding._Right 'Positioinnement du curseur en haut a gauche X = Me.Padding._Left + Me.Border._Left Y = Me.Padding._Top + Me.Border._Top 'La hauteur restante est initialisée avec la hauteur de travail fTH = H 'On énumère tout les éléments an tête en ne retenant que les fixes For i = 0 To Me.Children.Max hchild = Me.Children[i] If Not hchild.Visible Then Continue If hchild.Fixed Then cChildFixe[j] = hchild Inc j Endif Next j = 0 For i = 0 To Me.Children.Max If Not hchild.Visible Then Continue hchild = Me.Children[i] 'If Not hchild._DataIndex.Exist(IndexKey) Then hchild._DataIndex[IndexKey] = 0 If hchild.Fixed Then If Not bTop And If i < Me._CurItem Then fTH = fTH - Me.Children[i].Margin._Top bTop = True Endif 'trouver le fixe suivant For j = i + 1 To Me._CurItem If Me.Children[j].Fixed Then iVal = j Break Endif Next 'Si le fixe suivant n'est pas définit alors on utlise l'objet suivant If Not iVal Then iVal = i + 1 fMaxSpc = Max(hchild.Margin._Bottom, fspc) If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Top) 'Calcul de l'espace interobjet (c'est a dire la plus grande valeur entre la marge basse de l'objet, 'le spacing, et la marge haute de l'objet suivant.) hChildHints = hchild._GetSizeHints(W, fTH, W, H, TCont.Index) If Not hchild.Ignore Then fTH -= hChildHints.Height + fMaxSpc If i < Me._CurItem Then 'Génération de l'objet virtuel hTItem = New TControl 'Lier l'objet hTItem.Ctrl = hchild 'Associer sa taille hTItem.SizeHint = hChildHints 'TODO: Restorer 'hTItem.Index = TCont.Index hTItem.Index = iIndex Inc iIndex 'L'ajouter a la page aPageItems.Add(hTItem) 'Si l'objet est étendu alors on en tient compte 'sauf si celui-ci est ignoré par l'arrangement If hchild.Expand And If Not hchild.Ignore Then fExp += hChildHints.Height Inc iNExp Endif Endif Endif Next 'If ContPage = 2 And Me.Tag = "**" Then Stop 'On parcour les élément de l'index a la fin For i = Me._CurItem To Me.Children.Max If Not bTop Then fTH = fTH - Me.Children[i].Margin._Top bTop = True Endif hchild = Me.Children[i] If Not hchild.Visible Then Continue 'Je traite ici la boucle de clonage 'On définit le point de départ 'If ContPage = 1 And hchild.Tag = "**" Then Stop j = hChild._DataIndex 'hchild._PageDataIndex = hchild._DataIndex Do 'Calcul de l'espace interobjet (c'est a dire la plus grande valeur entre la marge basse de l'objet, 'le spacing, et la marge haute de l'objet suivant.) fMaxSpc = Max(hchild.Margin._Bottom, fspc) 'Définit l'espace en fonction du contexte If hchild._Count > 0 And If j <= hchild._count - 1 Then fMaxSpc = Max(fMaxSpc, Me.Children[i].Margin._Top) Else If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Top) Endif 'If Me.Tag = "**" And j = 3 Then Stop 'If TCont.Index = 2 Then Stop 'If ContPage = 2 And Me.Tag = "**" Then Stop hChildHints = hchild._GetSizeHints(W, fTH, W, H, TCont.Index) 'If ContPage = 2 And Me.Tag = "**" Then Print fTH, hChildHints.Height 'Les éléments fixes ont déja été traités on ne tient donc pas compte de leur hauteur 'car elle a déja été déduite de l'espace restant. De meme on ignore les objets flottants (ignore=true) If Not hchild.Fixed And If Not hchild.Ignore Then 'Si l'élément ne loge pas dans la place restante ou 'si la place restante est insuffisante 'on provoque la sortie en fin de boucle If fTH - hChildHints.Height <= 0 Or If bForceNewPage Then ' Debug "Lélément index : " & j & " Ne loge pas dans le conteneur" ' Debug "fTH : " & fTH ' Debug "fTH - hChildHints.Height : " & (fTH - hChildHints.Height) ' Print If Not bFirst Then 'SI il est le premier de la série alors il doit loger dans la page coute que coute hChildHints.Height = fTH - hchild.Margin._bottom Else bForceNewPage = False hchild._DataIndex = j bExitLoop = True Break Endif Endif bFirst = True fTH = fTH - hChildHints.Height - fMaxSpc Endif 'On l'ajoute a la page 'Génération de l'objet virtuel hTItem = New TControl 'Lier l'objet hTItem.Ctrl = hchild 'Associer sa taille hTItem.SizeHint = hChildHints 'TODO: Restorer 'hTItem.Index = TCont.Index 'Print hchild._count hTItem.Index = IIf(hchild._count = 1, TCont.Index, j) 'iIndex ' Print hchild.Tag ' Print "Set J= " & hTItem.Index Inc iIndex 'L'ajouter a la page aPageItems.Add(hTItem) 'Si l'objet est étendu alors on en tient compte 'sauf si celui-ci est ignoré par l'arrangement If hchild.Expand And If Not hchild.Ignore Then fExp += hChildHints.Height Inc iNExp Endif 'If hChildHints.NotFinished Then hchild._DataIndex = j 'un élément fixe ou ignore ne peut être répété If hchild.Fixed Or hchild.Ignore Then Break 'Sachant que hChild._count peut être à -1 on le considère dans ce cas la comme étant a 0 'si j est égale au compte alors on quitte la boucle If j >= Max(hchild._Count - 1, 0) Then 'Remise a 0 si le contenu de l 'enfant est entièrement affiché If Not hChildHints.NotFinished Then hChild._DataIndex = 0 Endif Break Endif 'sinon on incrémente le compte a condition que le dernier enfant aie finit d'afficher ses enfants If Not hChildHints.NotFinished Then Inc j 'On prévoie un sortie de boucle si l'enfant demande un affichage 1 par page If hchild.ForceNewPage Then bForceNewPage = True ' If fTH = 0 Then ' hchild._DataIndex = j ' Break ' bExitLoop = True ' Endif Loop 'Si la sortie anticipé est demandée alors on sort de la boucle 'If bExitLoop Then Stop If bExitLoop Then Break 'Si l'objet suivant est un objet spécial de rupture de page alors 'On force la rupture de page If i < Me.Children.Max And If Me.Children[i + 1] Is ReportPageBreak Then Inc Me._CurItem bForceNewPage = True Inc i 'on saute l'objet. Endif 'Enfin on incrémente la variable de saugarde de l'objet en cour. 'If Me.Tag = "**" Then Debug "Inc" Inc Me._CurItem Next '*************************************************************************** 'Pour tous les éléments fixes jusqu'à la fin du document For i = Max(Me._CurItem, 0) To Me.Children.Max hchild = Me.Children[i] If Not hchild.Visible Then Continue If hchild.Fixed Then fMaxSpc = Max(hchild.Margin._Bottom, fspc) If i < Me.Children.Max Then fMaxSpc = Max(fMaxSpc, Me.Children[i + 1].Margin._Top) hChildHints = hchild._GetSizeHints(W, fPrevTH, W, H, iPreIndex) 'on génère l'objet virtuel hTItem = New TControl 'On associe le controle hTItem.Ctrl = hchild 'On associe sa taille hTItem.SizeHint = hChildHints 'NOTE: Restorer hTItem.Index = iIndex Inc iIndex 'On l'ajoute a la page aPageItems.Add(hTItem) 'Si l'objet est étendu alors on tien compte de sa taille 'pour le calcul de l'espace réparti If hchild.Expand Then fExp += hChildHints.Height Inc iNExp Endif fPrevTH = fPrevTH - fMaxSpc Endif Next 'Si on est en mode spacing alors le dernier expace doit être enlevé If fspc > 0 And If fMaxSpc = fspc Then fTH += fSpc Endif '****************************************************************************** 'A présent tous les éléments pouvant être placé sur la page ont été marqué. 'On peut donc procéder a la mise en forme de ceux-ci ftmpY = Y 'On définit la position de départ If aPageItems.Count > 0 Then fTmpY += aPageItems[0].Ctrl.Margin._Top 'fExp = fExp - aPageItems[0].Ctrl.Margin._Top '- aPageItems[aPageItems.Max].Ctrl.Margin._Right Endif If iNExp Then fExp = (fExp + fTH) / iNExp Endif For i = 0 To aPageItems.Max 'on récupère l'objet virtuel hTItem = aPageItems[i] 'on récupère l'instance de l'objet réel ochild = hTItem.Ctrl 'Si l'objet est étendu alors on calcul sa hauteur 'Un objet flottant ne peut pas être étendu If Not oChild.Ignore And If ochild.Expand Then 'Calcul de la taille répartie ftmpHeight = fExp Else 'Si l'objet n'est pas étendu alors sa taille est celle demandée par celui-ci ftmpHeight = hTItem.SizeHint.Height Endif 'oChild._Index = hTItem.Index 'Traitement des objets ignoré 'Les propriété de taille sont celle fournie par l'objet If oChild.Ignore Then 'Calcul de la position de l'objet 'si sa position est relative (%) alors on fait le ratio a partir de la largeur ou de la hauteur 'sinon on utilise la position fournie par l'objet fX = X + IIf(oChild._RelativeLeft, W * oChild._Left / 100, oChild._Left) fY = Y + IIf(oChild._RelativeTop, H * oChild._Top / 100, oChild._Top) 'Fixer la position de l'objet hTItem._SetGeometry(fX, fY, hTItem.SizeHint.Width, ftmpHeight) 'L'objet flottant peut être un conteneur il faut donc demander aussi a ses enfants de s 'organiser oChild._SetChildGeometry(fX, fY, hTItem.SizeHint.Width, ftmpHeight, ContPage, hTItem, bInFixed Or Me.Fixed) Else fChildX = X + oChild.Margin._Left fChildW = W - oChild.Margin._Left - oChild.Margin._Right 'Fixer la position de l'objet hTItem._SetGeometry(fChildX, fTmpY, fChildW, ftmpHeight) 'L'objet flottant peut être un conteneur il faut donc demander aussi a ses enfants de s 'organiser oChild._SetChildGeometry(fChildX, fTmpY, fChildW, ftmpHeight, ContPage, hTItem, bInFixed Or Me.Fixed) 'Calcul de l'espace interobjet (c'est a dire la plus grande valeur entre la marge basse de l'objet, 'le spacing, et la marge haute de l'objet suivant.) fMaxSpc = Max(ochild.Margin._Bottom, fspc) If i < aPageItems.Max Then fMaxSpc = Max(fMaxSpc, aPageItems[i + 1].Ctrl.Margin._Top) 'on incrémente la position verticale de l'objet 'pour définir sa place sur la page relativement aux autres éléments fTmpY += ftmpHeight + fMaxSpc Endif 'Si l'objet est un conteneur alors il faut vérifier si il a finit d'être traité If oChild Is ReportContainer Then 'If oChild._NotFinished Then Me.NotFinished = True 'Si son traitement n'est pas terminé alors on trouve 'sa position dans la liste des enfant et on l'assigne a l'index de traitement 'si sa position est > a l'index courant 'If oChild.Tag = "VB1" Then Stop If ochild._CurItem <= oChild.Children.Max Then j = Me.Children.Find(oChild) Me._CurItem = Min(Me._CurItem, j) Endif 'Si on est dans la lignée d'un conteneur fixe on incrémente pas la lecture des enfants 'En clair ce sont toujours les mêmes éléments qui apparaitrons If bInFixed Then ochild._CurItem = 0 Endif Next 'On ajoute cette page au dossier du conteneur TCont._PageChildren[ContPage] = aPageItems End gambas-3.16.3/comp/src/gb.report2/.src/ReportControl.class000066400000000000000000000277111411575327000232740ustar00rootroot00000000000000' Gambas class file Export Create Private Public Const _IsControl As Boolean = True Public Const _IsContainer As Boolean = False Public Const _Properties As String = "Left{ReportCoord},Top{ReportCoord},Width{ReportCoord},Height{ReportCoord},Brush{ReportBrush},Visible=True,Fixed,Font,Padding,Margin,Ignore,Expand,AutoResize,Tag,Range" Public Const _Family As String = "Report" Public _SizeInt As ReportSizeHints Public _Count As Integer = 1 Public _Finished As Boolean Private $iDataindex As Integer Private $iIndex As Integer Public _PageDataIndex As Integer Public Name As String 'Object Management Static Public _ObjectFromId As New Collection Static Public _iCurPagePos As Integer Static Private $iLastId As Integer Static Private $aFont As String[] = ["DejaVu Serif", "Liberation Serif", "Bitstream Vera Serif", "Serif", "Arial"] Property Read Id As Integer Property Read Parent As ReportContainer Property Tag As Variant Property Padding As ReportPadding Property Margin As ReportMargin Property Brush As ReportBrush 'Property {Color} As Integer Property Read _Top As Float ''Top of the control in cm Property Read _Height As Float ''Height of the control in cm Property Read _Width As Float ''Width of the control in cm Property Read _Left As Float ''Left of the control in cm Property Read _RelativeLeft As Boolean ''Use percentage for Left pos? Property Read _RelativeTop As Boolean ''Use percentage for Top Pos? Property Read _RelativeWidth As Boolean ''Use percentage for width? Property Read _RelativeHeight As Boolean ''Use percentage for height ? Property _Index As Integer Property Range As String Property Left As String Property Top As String Property X As String Property Y As String Property Width As String Property Height As String Property Visible As Boolean Property {Font} As Font Property Expand As Boolean Property Ignore As Boolean Property Fixed As Boolean Property Autoresize As Boolean Property Read {Report} As Report Property _ReportId As Integer Property Read DataIndex As Integer Property ForceNewPage As Boolean Property _DataIndex As Integer 'Public _DataIndex As New Collection Private $bForceNewPage As Boolean Private $iMyId As Integer Private $iParentId As Integer Private $vTag As Variant Private $iReportId As Integer Private $hBrush As ReportBrush Private $iColor As Integer Private $fLeft As Float = 0.0 Private $fTop As Float = 0.0 Private $fWidth As Float = 0.0 Private $fHeight As Float = 0.0 Private $sHeight As String = "0cm" Private $sLeft As String = "0cm" Private $sWidth As String = "0cm" Private $sTop As String = "0cm" Private $hPadding As New ReportPadding Private $hMargin As New ReportMargin Private $iVisible As Boolean = True Private $hFont As New Font Private $bExpand As Boolean Private $bFixed As Boolean Private $bAutoresize As Boolean = False Private $bRelativeLeft As Boolean Private $bRelativeTop As Boolean Private $bRelativeWidth As Boolean Private $bRelativeHeight As Boolean Private $bIgnore As Boolean = False Private $sRange As String Public Sub _New(Optional Parent As ReportContainer = Null) Dim hRep As Report $iMyId = $iLastId Inc $iLastId If IsNull(Parent) Then $iParentId = -1 $iReportId = $iMyId Else If Parent Is Report Then hRep = Parent $iParentId = hRep._Container.id hRep._Container._Add(Me) $iReportId = hRep.id Else $iParentId = Parent.Id Parent._Add(Me) $iReportId = Parent._ReportId Endif Endif End Private Function Id_Read() As Integer Return $iMyId End Private Function Parent_Read() As ReportContainer Return ReportControl._ObjectFromId[$iParentId] End Private Function Left_Read() As String Return $sLeft End Private Sub Left_Write(Value As String) $sLeft = Value Me.Report._LayoutIsDirty = True End Private Function Top_Read() As String Return $sTop End Private Sub Top_Write(Value As String) $sTop = Value Me.Report._LayoutIsDirty = True End Private Function Width_Read() As String Return $sWidth End Private Sub Width_Write(Value As String) $sWidth = Value Me.Report._LayoutIsDirty = True End Private Function Height_Read() As String Return $sHeight End Private Sub Height_Write(Value As String) $sHeight = Value Me.Report._LayoutIsDirty = True End Private Function Expand_Read() As Boolean Return $bExpand End Private Sub Expand_Write(Value As Boolean) $bExpand = Value Me.Report._LayoutIsDirty = True End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, TotalWidth As Float, TotalHeight As Float, DataIndex As Integer) As ReportSizeHints 'Error.Raise("Something goes wrong the _GetSizeHints is not correctly implemented") 'Implementaion standart du sizeInt hors autoresize et hbox ' Dim hMyHints As New ReportSizeHints If Me._RelativeHeight Then hMyHints.Height = TotalHeight * Me._Height / 100 Else hMyHints.Height = Me._Height Endif If Me._RelativeWidth Then hMyHints.Width = TotalWidth * Me._Width / 100 Else hMyHints.Width = Me._Width Endif Return hMyHints End Public Sub _PaintBeFore((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) End Public Sub _PaintFrame((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) Me._Paint(Page, X, Y, hControl, DataIndex) End Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) End Private Function Visible_Read() As Boolean Return $iVisible End Private Sub Visible_Write(Value As Boolean) $iVisible = Value Me.Report._LayoutIsDirty = True End Public Sub Move(X As Float, Y As Float, W As Float, H As Float) $fLeft = X $fTop = Y $fWidth = W $fHeight = H Me.Report._LayoutIsDirty = True End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value End Private Function Font_Read() As Font Dim hFont As Font 'Dim sFont As String Dim s As String If Not $hFont Then If $iParentId = -1 Then For Each s In $aFont If Fonts.Exist(s) Then hFont = New Font hFont.Name = s Break Endif Next If hFont Then hFont.Size = 12 Else hFont = Paint.Font.Copy Endif Else hFont = _ObjectFromId[$iParentId].font Endif Return hFont Else Return $hFont Endif End Private Sub Font_Write(Value As Font) $hFont = Value '.Copy() Me.Report._LayoutIsDirty = True End Private Function Padding_Read() As ReportPadding Return $hPadding End Private Sub Padding_Write(Value As ReportPadding) $hPadding = Value Me.Report._LayoutIsDirty = True End Private Function _Top_Read() As Float Return $fTop End Private Function _Height_Read() As Float Return $fHeight End Private Function _Width_Read() As Float Return $fWidth End Private Function _Left_Read() As Float Return $fLeft End Public Function _SetChildGeometry((X) As Float, (Y) As Float, (W) As Float, (H) As Float, (ContPage) As Integer, (TCont) As TControl, (bInFixed) As Boolean) End Private Function Autoresize_Read() As Boolean Return $bAutoresize End Private Sub Autoresize_Write(Value As Boolean) $bAutoresize = Value Me.Report._LayoutIsDirty = True End Private Function _RelativeWidth_Read() As Boolean Return $bRelativeWidth End Private Function _RelativeHeight_Read() As Boolean Return $bRelativeHeight End ''Convert recursively string values to unified values in cm Public Sub _NormalizeUnits() Dim hSizeParse As TSizeParse 'Left hSizeParse = New TSizeParse($sLeft, True) $fLeft = hSizeParse.GetValue() $bRelativeLeft = hSizeParse.IsRelative() 'Right hSizeParse = New TSizeParse($sTop, True) $fTop = hSizeParse.GetValue() $bRelativeTop = hSizeParse.IsRelative() 'Width hSizeParse = New TSizeParse($sWidth, True) $fWidth = hSizeParse.GetValue() $bRelativeWidth = hSizeParse.IsRelative() 'Height hSizeParse = New TSizeParse($sHeight, True) $fHeight = hSizeParse.GetValue() $bRelativeHeight = hSizeParse.IsRelative() 'Padding ' hSizeParse = New TSizeParse($sPadding, True) ' $fPadding = hSizeParse.GetValue() ' $bRelativePadding = hSizeParse.IsRelative() hSizeParse = New TSizeParse($hPadding.Left, True) $hPadding._Left = hSizeParse.GetValue() hSizeParse = New TSizeParse($hPadding.Right, True) $hPadding._Right = hSizeParse.GetValue() hSizeParse = New TSizeParse($hPadding.Top, True) $hPadding._Top = hSizeParse.GetValue() hSizeParse = New TSizeParse($hPadding.Bottom, True) $hPadding._Bottom = hSizeParse.GetValue() hSizeParse = New TSizeParse($hMargin.Left, True) $hMargin._Left = hSizeParse.GetValue() hSizeParse = New TSizeParse($hMargin.Right, True) $hMargin._Right = hSizeParse.GetValue() hSizeParse = New TSizeParse($hMargin.Top, True) $hMargin._Top = hSizeParse.GetValue() hSizeParse = New TSizeParse($hMargin.Bottom, True) $hMargin._Bottom = hSizeParse.GetValue() ' End Private Function Ignore_Read() As Boolean Return $bIgnore End Private Sub Ignore_Write(Value As Boolean) $bIgnore = Value Me.Report._LayoutIsDirty = True End Private Function Report_Read() As Report Return ReportControl._ObjectFromId[$iReportId] End Private Function _ReportId_Read() As Integer Return $iReportId End Private Function Fixed_Read() As Boolean Return $bFixed End Private Sub Fixed_Write(Value As Boolean) $bFixed = Value End Public Sub _Reset() Me._DataIndex = 0 End Private Function X_Read() As String Return $sLeft End Private Sub X_Write(Value As String) $sLeft = Value End Private Function Y_Read() As String Return $sTop End Private Sub Y_Write(Value As String) $sTop = Value End Private Function Brush_Read() As ReportBrush Return $hBrush End Private Sub Brush_Write(Value As ReportBrush) $hBrush = Value End ' Private Function Color_Read() As Integer ' ' Return $iColor ' ' End ' ' Private Sub Color_Write(Value As Integer) ' ' $iColor = Value ' ' End Public Function _GetActualBrush(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As PaintBrush Dim hBrush As PaintBrush If $hBrush Then hBrush = $hBrush._PaintBrush(X1, Y1, X2, Y2) Else If $iColor Then hBrush = Paint.Color($iColor) Else Try hBrush = Me.Parent._GetActualBrush(X1, Y1, X2, Y2) If Not hBrush Then hBrush = Paint.Color(0) Endif Endif Return hBrush End Private Sub _ReportId_Write(Value As Integer) $iReportId = Value End Private Function _RelativeLeft_Read() As Boolean Return $bRelativeLeft End Private Function _RelativeTop_Read() As Boolean Return $bRelativeTop End Private Function DataIndex_Read() As Integer Return Me._Index 'Return Me._GetIndex() End Private Function Range_Read() As String Return $sRange End Private Sub Range_Write(Value As String) $sRange = Value End Public Function _GetIndex() As Integer Return Me._Index 'Return Me.Parent._GetIndex() End Private Function _Index_Read() As Integer Return $iIndex End Private Sub _Index_Write(Value As Integer) $iIndex = Value End Private Function _DataIndex_Read() As Integer Return $iDataindex End Private Sub _DataIndex_Write(Value As Integer) 'If Me.Tag = "Boite 2" And Value = 0 Then Stop 'If Me.Report.$iCurPage = 0 Then Print "DataIndex: " & value 'If Value = 0 Then Stop $iDataindex = Value 'Stop 'Print "_DataIndex " & Me.Tag & " = " & $iDataindex End Private Function ForceNewPage_Read() As Boolean Return $bForceNewPage End Private Sub ForceNewPage_Write(Value As Boolean) $bForceNewPage = Value End Public Sub _Free() End Private Function Margin_Read() As ReportMargin Return $hMargin End Private Sub Margin_Write(Value As ReportMargin) $hMargin = Value End Public Sub Raise() _ObjectFromId[$iParentId]._Raise(Me) End Public Sub Lower() _ObjectFromId[$iParentId]._Lower(Me) End gambas-3.16.3/comp/src/gb.report2/.src/ReportDrawingArea.class000066400000000000000000000053401411575327000240320ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Cached" Public Const _Similar As String = "ReportImage" Public Const _DefaultEvent As String = "Draw" Public SizeHints As ReportSizeHints Property Cached As Boolean Private $bCached As Boolean Private $iOldResolution As Integer Event Layout(Width As Float, Height As Float, Index As Integer) Event Draw(Width As Float, Height As Float, Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hMySize As ReportSizeHints SizeHints = Null Raise Layout(AvailableW, AvailableH, DataIndex) hMySize = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If SizeHints <> Null Then hMySize.Width = SizeHints.Width hMySize.Height = SizeHints.Height Endif Endif Try hMySize.NotFinished = SizeHints.NotFinished Return hMySize End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) 'Dim hRect As Rect Dim iX, iY, iW, iH As Integer Dim hImg As Image iX = (x + hControl.RealLeft + Me.Report._ToPixels(Me.Padding._Left + Me.Border._Left)) iY = (y + hControl.RealTop + Me.Report._ToPixels(Me.Padding._Top + Me.Border._Top)) iW = (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) iH = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) Paint.Save If $bCached Then If $iOldResolution <> Paint.ResolutionX Or If hControl.Cache = Null Then $iOldResolution = Paint.ResolutionX hImg = New Image(iW, iH, Color.Transparent) Paint.Begin(hImg) Raise Draw(iW, iH, DataIndex) Paint.End hControl.Cache = himg Else 'If hControl.cache = Null Then Stop Try hImg = hControl.Cache Endif Draw.Image(hImg, iX, iy) Else 'Paint.Translate(iX, iY) 'Print "Paint.Begin: "; iX;; iY;; iW;; iH;; "(";; Paint.W;; Paint.H; ")" Paint.Begin(Paint.Device, RectF(iX, iY, iW, iH)) Raise Draw(iW, iH, DataIndex) Paint.End 'Paint.Translate(- iX, - iY) Endif Paint.Restore End Private Function Cached_Read() As Boolean Return $bCached End Private Sub Cached_Write(Value As Boolean) $bCached = Value End ' Public Sub SetHints(Width As Integer, Height As Integer, NotFinished As Boolean) ' $hSizeHints = New ReportSizeHints ' $hSizeHints.Width = Width ' $hSizeHints.Height = Height ' $hSizeHints.NotFinished = NotFinished ' ' End gambas-3.16.3/comp/src/gb.report2/.src/ReportFrame.class000066400000000000000000000250631411575327000227040ustar00rootroot00000000000000' Gambas class file Export Create Private Inherits ReportControl ' Static Private iLevel As Integer Public Const _Properties As String = "*,Border,Background{ReportBrush},BoxShadow" Private $hBorder As New ReportBorder Private $hBackGround As ReportBrush Property Border As ReportBorder Property BoxShadow As ReportBoxShadow Private $hBoxShadow As New ReportBoxShadow Property BackGround As ReportBrush 'Property Read _BorderWidth As Float Private Function Border_Read() As ReportBorder Return $hBorder End Private Sub Border_Write(Value As ReportBorder) $hBorder = Value End Public Sub _PaintBefore((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) Dim X1, Y1, X2, Y2, W, H As Float Dim iBorder As Integer Dim hShadowActive As Boolean = $hBoxShadow._Active Dim himgShadow As Image Dim fSpread As Float Dim fBlur As Float Dim fbx As Float Dim fby As Float Dim TL1, TL2, TR1, TR2, BR1, BR2, BL1, BL2 As Float ' If Me.Tag = "**" Then Stop 'If Me.tag = "*" Then Stop 'Return X1 = (x + hControl.RealLeft) Y1 = (y + hControl.RealTop) W = hControl.RealWidth H = hControl.RealHeight X2 = (x + hControl.RealLeft + W) Y2 = (y + hControl.RealTop + H) 'Clipping paint.save If Report.Debug Then Paint.Brush = Paint.Color(Color.Green) Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1) Paint.Stroke Else If $hBorder.RoundCorner._Active Then TL1 = Me.Report._ToPixels($hBorder.RoundCorner._TopLeft1) TR1 = Me.Report._ToPixels($hBorder.RoundCorner._TopRight1) BR1 = Me.Report._ToPixels($hBorder.RoundCorner._BottomRight1) BL1 = Me.Report._ToPixels($hBorder.RoundCorner._BottomLeft1) TL2 = Me.Report._ToPixels($hBorder.RoundCorner._TopLeft2) TR2 = Me.Report._ToPixels($hBorder.RoundCorner._TopRight2) BR2 = Me.Report._ToPixels($hBorder.RoundCorner._BottomRight2) BL2 = Me.Report._ToPixels($hBorder.RoundCorner._BottomLeft2) If hShadowActive Then fbx = Me.Report._ToPixels($hBoxShadow._XOffset) fby = Me.Report._ToPixels($hBoxShadow._YOffset) fSpread = Me.Report._ToPixels($hBoxShadow._Spread) If $hBoxShadow._Blur > 0 Then fBlur = Me.Report._ToPixels($hBoxShadow._Blur) himgShadow = New Image(W + fSpread * 2 + fBlur * 2, H + fSpread * 2 + fBlur * 2, Color.Transparent) Paint.Begin(himgShadow) Paint.Brush = Paint.Color($hBoxShadow.Color) RoundRect(fBlur, fBlur, Paint.Width - fBlur * 2, Paint.Height - fBlur * 2, [TL1, TR1, BR1, BL1], [TL2, TR2, BR2, BL2]) Paint.Fill Paint.End himgShadow.Fuzzy(fBlur) Draw.Image(himgShadow, X1 + fbx - fSpread - fBlur, Y1 + fby - fSpread - fBlur) Else Paint.Brush = Paint.Color($hBoxShadow.Color) RoundRect(X1 + fbx - fSpread, Y1 + fby - fSpread, W + fSpread * 2, H + fSpread * 2, [TL1, TR1, BR1, BL1], [TL2, TR2, BR2, BL2]) Paint.Fill Endif Endif iBorder = Me.Report._ToPixels($hBorder._Top) RoundRect(X1 + iBorder, Y1 + iBorder, W - iBorder * 2, H - iBorder * 2, [TL1, TR1, BR1, BL1], [TL2, TR2, BR2, BL2]) Else If hShadowActive Then fbx = Me.Report._ToPixels($hBoxShadow._XOffset) fby = Me.Report._ToPixels($hBoxShadow._YOffset) fSpread = Me.Report._ToPixels($hBoxShadow._Spread) If $hBoxShadow._Blur > 0 Then fBlur = Me.Report._ToPixels($hBoxShadow._Blur) himgShadow = New Image(W + fSpread * 2 + fBlur * 2, H + fSpread * 2 + fBlur * 2, Color.Transparent) Paint.Begin(himgShadow) Paint.Brush = Paint.Color($hBoxShadow.Color) Paint.rectangle(fBlur, fBlur, Paint.Width - fBlur * 2, Paint.Height - fBlur * 2) Paint.Fill Paint.End himgShadow.Fuzzy(fBlur) Draw.Image(himgShadow, X1 + fbx - fSpread - fBlur, Y1 + fby - fSpread - fBlur) Else Paint.Brush = Paint.Color($hBoxShadow.Color) Paint.Rectangle(X1 + fbx - fSpread, Y1 + fby - fSpread, W + fSpread * 2, H + fSpread * 2) Paint.Fill Endif Endif Paint.Rectangle(X1, Y1, X2 - X1, Y2 - Y1) Endif If Me.BackGround = Null Then If hShadowActive Then Paint.Clip(True) Paint.Brush = _GetActualBackGround(X1, Y1, X2, Y2) Paint.Fill Else paint.Clip Endif 'Return Else paint.Clip(True) paint.Brush = Me.BackGround._PaintBrush(X1, Y1, X2, Y2) Paint.Fill Endif Endif End Public Function _GetActualBackGround(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As PaintBrush Dim hBackground As PaintBrush If $hBackGround Then hBackground = $hBackGround._PaintBrush(X1, Y1, X2, Y2) Else Try hBackground = Me.Parent._GetActualBackGround(X1, Y1, X2, Y2) If Not hBackground Then hBackground = Paint.Color(Color.White) Endif Endif Return hBackground End Public Sub _PaintFrame((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) _PaintBefore(Page, X, Y, hControl, DataIndex) Me._Paint(Page, X, Y, hControl, DataIndex) _PaintAfter(Page, X, Y, hControl, DataIndex) End Public Sub _PaintAfter((Page) As Integer, (X) As Float, (Y) As Float, (hControl) As TControl, (DataIndex) As Integer) Dim X1, Y1, X2, Y2, W, H As Float 'Dim fWidth As Float Dim fTopWidth, fBottomWidth, fLeftWidth, fRighWidth As Float 'Return 'Fin du clipping paint.Restore X1 = (x + hControl.RealLeft) Y1 = (y + hControl.RealTop) X2 = (x + hControl.RealLeft + hControl.RealWidth) Y2 = (y + hControl.RealTop + hControl.RealHeight) 'If Me.Tag = "**" Then Stop If $hBorder.RoundCorner._Active Then Paint.AntiAlias = True fLeftWidth = Me.Report._ToPixels($hBorder._Left) / 2 paint.LineWidth = fLeftWidth * 2 paint.Brush = $hBorder.Left.Brush._PaintBrush(X1, Y1, X2, Y2) ' RoundRect(Paint.LineWidth / 2, Paint.LineWidth / 2, Paint.Width - Paint.LineWidth, Paint.Height - Paint.LineWidth, aX, aY) RoundRect(X1 + fLeftWidth, Y1 + fLeftWidth, hControl.RealWidth - fLeftWidth * 2, hControl.RealHeight - fLeftWidth * 2, [Me.Report._ToPixels($hBorder.RoundCorner._TopLeft1), Me.Report._ToPixels($hBorder.RoundCorner._TopRight1), Me.Report._ToPixels($hBorder.RoundCorner._BottomRight1), Me.Report._ToPixels($hBorder.RoundCorner._BottomLeft1)], [Me.Report._ToPixels($hBorder.RoundCorner._TopLeft2), Me.Report._ToPixels($hBorder.RoundCorner._TopRight2), Me.Report._ToPixels($hBorder.RoundCorner._BottomRight2), Me.Report._ToPixels($hBorder.RoundCorner._BottomLeft2)]) paint.Stroke Else 'Paint.AntiAlias = False fLeftWidth = Me.Report._ToPixels($hBorder._Left) fRighWidth = Me.Report._ToPixels($hBorder._Right) fTopWidth = Me.Report._ToPixels($hBorder._Top) fBottomWidth = Me.Report._ToPixels($hBorder._Bottom) 'If $hBorder.Style <> Line.None Then 'fWidth = Me.Report._ToPixels($fBorderWidth) 'Paint.Brush = Paint.Color($hBorder.Brush._iValue) If fTopWidth > 0 Then paint.Brush = $hBorder.Top.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X1, Y1, X2 - X1, fTopWidth) paint.Fill Endif If fRighWidth > 0 Then paint.Brush = $hBorder.Right.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X2 - fRighWidth, Y1, fRighWidth, Y2 - Y1) paint.Fill Endif If fBottomWidth > 0 Then paint.Brush = $hBorder.Bottom.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X1, Y2 - fBottomWidth, X2 - X1, fBottomWidth) paint.Fill Endif If fLeftWidth > 0 Then paint.Brush = $hBorder.Left.Brush._PaintBrush(X1, Y1, X2, Y2) paint.Rectangle(X1, Y1, fLeftWidth, Y2 - Y1) paint.Fill Endif Paint.AntiAlias = True If Report.Debug Then Paint.Text(DataIndex, X1, Y1, 30, 30, Align.Center) Paint.Fill Endif Endif 'Dec iLevel 'Print String(iLevel, " ") & "restoré" 'Endif End Private Function BackGround_Read() As ReportBrush Return $hBackGround End Private Sub BackGround_Write(Value As ReportBrush) $hBackGround = Value End Public Sub _NormalizeUnits() Super._NormalizeUnits() $hBorder._NormalizeUnits $hBoxShadow._NormalizeUnits End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hMyHints As ReportSizeHints hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) If hMyHints.Height <= 0 Then hMyHints.Height = Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom 'hMyHints.Height += Abs($hBoxShadow._YOffset) + $hBoxShadow._Spread + $hBoxShadow._Blur Endif If hMyHints.Width <= 0 Then hMyHints.Width = Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right 'hMyHints.Width += Abs($hBoxShadow._xOffset) + $hBoxShadow._Spread + $hBoxShadow._Blur Endif Return hMyHints End Static Private Sub RoundRect(x As Float, y As Float, w As Float, h As Float, Radius_X As Float[], radius_y As Float[]) Dim ARC_TO_BEZIER As Float = 0.55228475 Dim c1, c2 As Float Dim i As Integer For i = 0 To 3 If radius_x[i] > w - radius_x[i] Then radius_x[i] = w / 2 Endif If radius_y[i] > h - radius_y[i] Then radius_y[i] = h / 2 Endif Next 'approximate(quite Close )the arc using a bezier curve ' A**********B ' H C ' * * ' * * ' G D ' F**********E '-->A Paint.MoveTo(x + radius_x[0], y) '-->B Paint.LineTo(x + w - radius_x[1], y) '-->C c1 = ARC_TO_BEZIER * radius_x[1] c2 = ARC_TO_BEZIER * radius_y[1] Paint.RelCurveTo(c1, 0.0, radius_x[1], c2, radius_x[1], radius_y[1]) '-->D Paint.LineTo(x + w, y + h - radius_y[2]) '-->E c1 = ARC_TO_BEZIER * radius_x[2] c2 = ARC_TO_BEZIER * radius_y[2] Paint.RelCurveTo(0.0, c2, c1 - radius_x[2], radius_y[2], -radius_x[2], radius_y[2]) '-->F Paint.LineTo(x + radius_x[3], y + h) '-->G c1 = ARC_TO_BEZIER * radius_x[3] c2 = ARC_TO_BEZIER * radius_y[3] Paint.RelCurveTo(-c1, 0, -radius_x[3], -c2, -radius_x[3], -radius_y[3]) '-->H Paint.LineTo(x, y + radius_y[0]) '-->A c1 = ARC_TO_BEZIER * radius_x[0] c2 = ARC_TO_BEZIER * radius_y[0] Paint.relcurveto(0.0, -c2, radius_x[0] - c1, -radius_y[0], radius_x[0], -radius_y[0]) 'Paint.closepath() End Private Function BoxShadow_Read() As ReportBoxShadow Return $hBoxShadow End Private Sub BoxShadow_Write(Value As ReportBoxShadow) $hBoxShadow = Value End Public Sub _Free() End gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/000077500000000000000000000000001411575327000223355ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/ReportGridView.class000066400000000000000000000021751411575327000263050ustar00rootroot00000000000000' Gambas class file 'Export Inherits ReportFrame Private $hRows As New _ReportGridViewRows Private $hColumns As New _ReportGridViewColumns Private $hData As New _ReportGridViewData Property Read Columns As _ReportGridViewColumns Property Read Rows As _ReportGridViewRows Property Read Data As _ReportGridViewData Private Function Columns_Read() As _ReportGridViewColumns Return $hColumns End Private Function Rows_Read() As _ReportGridViewRows Return $hRows End Private Function Data_Read() As _ReportGridViewData Return $hData End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, TotalWidth As Float, TotalHeight As Float, DataIndex As Integer) As ReportSizeHints Return Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) End Public Sub _NormalizeUnits() Super._NormalizeUnits() End Public Function _SetChildGeometry((X) As Float, (Y) As Float, (W) As Float, (H) As Float, (ContPage) As Integer, (TCont) As TControl, (bInFixed) As Boolean) End gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/_ReportGridViewColumn.class000066400000000000000000000025561411575327000276250ustar00rootroot00000000000000' Gambas class file Property Width, W As String Property Text, Title As String Property Resizable As Boolean Property Expand As Boolean Property Alignment As Integer Property Background As ReportBrush Private $sWidth As String Private $sText As String Private $bExpand As String Private $iAlignment As Integer Private $hBackGround As New ReportBrush Private $bResizable As Integer Public _Width As Float Public _Column As Integer ''Column Number Private Function Width_Read() As String Return $sWidth End Private Sub Width_Write(Value As String) $sWidth = Value End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Private Function Expand_Read() As Boolean Return $bExpand End Private Sub Expand_Write(Value As Boolean) $bExpand = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Private Function Background_Read() As ReportBrush Return $hBackGround End Private Sub Background_Write(Value As ReportBrush) $hBackGround = Value End Public Sub _NormalizeUnits() _Width = ReportSizeParser($sWidth) End gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/_ReportGridViewColumns.class000066400000000000000000000040261411575327000300020ustar00rootroot00000000000000' Gambas class file Property Count As Integer Property Read Max As Integer Property Read Height, H As String Property Resizable As Boolean Property Width, W As String Property Sort As Integer Property Ascending As Boolean Public _Width As Float Public _Height As Float Private $iCount As Integer Private $sHeight As String Private $bResizable As String Private $sWidth As String = "2cm" Private $iSort As Integer Private $bAscendig As Boolean Private $aColumns As New _ReportGridViewColumn[] Public Sub _NormalizeUnits() Dim i As Integer For i = 0 To $aColumns.Max $aColumns[i]._NormalizeUnits() Next _Width = ReportSizeParser[$sWidth].GetValue() _Height = ReportSizeParser[$sHeight].GetValue() End Private Function Count_Read() As Integer Return $aColumns.Count End Private Sub Count_Write(Value As Integer) Dim iOldCount As Integer = $aColumns.Count Dim i As Integer Dim hCol As _ReportGridViewColumn If Value = iOldCount Then Return Try $aColumns.Resize(Value) If Error Then Error.Raise("Bad argument") If Value > iOldCount Then For i = iOldCount To Value - 1 hcol = New _ReportGridViewColumn hcol.Width = "1cm" $aColumns[i] = hcol Next Endif For i = iOldCount To Value Next End Private Function Max_Read() As Integer Return $aColumns.Max End Private Function Height_Read() As String Return $sHeight End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Private Function Width_Read() As String Return $sWidth End Private Sub Width_Write(Value As String) $sWidth = Value End Private Function Sort_Read() As Integer Return $iSort End Private Sub Sort_Write(Value As Integer) $iSort = Value End Private Function Ascending_Read() As Boolean Return $bAscendig End Private Sub Ascending_Write(Value As Boolean) $bAscendig = Value End Private Function GetView() As ReportGridView Return Object.Parent(Me) End gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/_ReportGridViewData.class000066400000000000000000000000251411575327000272260ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/_ReportGridViewRow.class000066400000000000000000000012021411575327000271220ustar00rootroot00000000000000' Gambas class file Property Height, H As String Property Text, Title As String 'Property Border As Border Public _Height As Float Private $sHeight As Integer Private $sText As Integer Event _Foo Private Function Height_Read() As String Return $sHeight End Private Sub Height_Write(Value As String) $sHeight = Value End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Public Sub _NormalizeUnits() _Height = ReportSizeParser[$sHeight].GetValue() End Private Function GetRows() As _ReportGridViewRows Return Object.Parent(Me) End gambas-3.16.3/comp/src/gb.report2/.src/ReportGridView/_ReportGridViewRows.class000066400000000000000000000033421411575327000273140ustar00rootroot00000000000000' Gambas class file Property Count As Integer Property Read Max As Integer Property Width, W As String Property Resizable As Boolean Property Height, H As String 'Property Border As Border Private $iCount As Integer Private aLineCol As New Collection Private $sHeight As String Private $sWidth As String Private $bResizable As Boolean Private Function Count_Read() As Integer Return $iCount End Private Sub Count_Write(Value As Integer) Dim i As Integer Value = Max(1, Value) If Value < $iCount Then For i = $iCount DownTo Value aLineCol[i - 1] = Null Next Endif $iCount = Value End Private Function Max_Read() As Integer Return $iCount - 1 End Private Function Width_Read() As String Return $sWidth End Private Sub Width_Write(Value As String) $sWidth = Value End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Private Function Height_Read() As String Return $sHeight End Private Sub Height_Write(Value As String) $sHeight = Value End Public Sub _NormalizeUnits() Dim hRow As New _ReportGridViewRow For Each hRow In aLineCol hRow._NormalizeUnits() Next End Public Function _GetStrRowHeight(iVal As Integer) As String If aLineCol.Exist(iVal) Then Return aLineCol(iVal).Height Else Return $sHeight Endif End Public Function _SetStrRowHeight(iVal As Integer, sValue As String) Dim hRow As _ReportGridViewRow If iVal < 0 Then Return If iVal > $iCount - 1 Then Return hRow = aLineCol[iVal] If Not hRow Then hRow = New _ReportGridViewRow aLineCol[iVal] = hRow Endif hRow._Row = iVal hRow.Height = sValue End gambas-3.16.3/comp/src/gb.report2/.src/ReportHBox.class000066400000000000000000000004531411575327000225060ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*" Public Const _Similar As String = "ReportVBox" Public Const _DefaultArrangement As String = "H" Public Sub _new() Super._Arrangement = Arrange.Horizontal End Public Sub _Free() Super._Free End gambas-3.16.3/comp/src/gb.report2/.src/ReportImage.class000066400000000000000000000135721411575327000226760ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Stretch{Report.None;Proportional;Fill}=Proportional,Alignment{Align.*},Image{Image}" Public Const _Similar As String = "ReportTextLabel" Public Const _DefaultEvent As String = "Data" Private $iAlignment As Integer = Align.Normal Private $hPic As Image Private $iStretchMode As Integer = Report.Proportional Property Alignment As Integer Property Image As Image Property Stretch As Integer Public Data As Image Event Data(Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hMyHints As New ReportSizeHints Dim hPic As Image Dim fRatio As Float 'Dim fSize As Float hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If $hpic Then hpic = $hpic Else Raise Data(DataIndex) hpic = Data Endif If hpic Then If Me.Stretch = Report.Proportional Then If hpic.Width > hpic.Height Then fRatio = hpic.Height / hpic.Width hMyHints.Width = Min(Report.UnitToInch(hpic.Width, "px"), AvailableW) hMyHints.Height = ((hMyHints.Width - (Me.Border._Width + Me.Padding._Width)) * fRatio) + (Me.Padding._Height + Me.Border._Height) Else fRatio = hpic.Width / hpic.Height hMyHints.Height = Min(Report.UnitToInch(hpic.Height, "px"), AvailableH) hMyHints.Width = ((hMyHints.Height - (Me.Border._Height + Me.Padding._Height)) * fRatio) + (Me.Border._Width + Me.Padding._Width) Endif Else hMyHints.Width = Max(hMyHints.Width, Me.Padding._Left + Report.UnitToInch(hpic.Width, "px") + Me.Padding._Right) 'Report.UnitToInch(hpic.Width, "px") + Me.Padding._Right) hMyHints.Height = Max(hMyHints.Height, Me.Padding._Top + Report.UnitToInch(hpic.Height, "px") + Me.Padding._Bottom) 'Report.UnitToInch(hpic.Height, "px") + Me.Padding._Bottom) Endif Endif Endif Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim ix, iy As Float 'Dim hBrush As PaintBrush Dim hPic As Image Dim w, h As Float ix = x + hControl.RealLeft '+ Me.Report._ToPixels(Me.Padding._Left) iy = y + hControl.RealTop '+ Me.Report._ToPixels(Me.Padding._Top) If Not $hpic Then Raise Data(DataIndex) hpic = Data If Not hPic Then Return Else hPic = $hpic Endif Paint.Save Paint.Rectangle(ix, iy, hControl.RealWidth, hControl.RealHeight) Paint.Clip '$hPic = $hPic.Stretch(hControl.RealWidth, hControl.RealHeight) 'hBrush = Paint.Image(hpic) If Me.Stretch = Report.Fill Then iX += Me.Report._ToPixels(Me.Padding._Left + Me.Border._Left) iY += Me.Report._ToPixels(Me.Padding._Top + Me.Border._Top) w = (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) h = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) Paint.DrawImage(hpic, ix, iy, w, h - 1) Else If $iStretchMode = Report.Proportional Then 'on détermine la partie prédominante If hpic.Width >= hpic.Height 'C'est la largeur 'on détermine une hauteur en fonction de la largeur connue w = hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Width) h = hPic.H / hpic.W * w 'si h> a la place disponible alors on adapte en fonction de h en faite If h > (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Height)) Then h = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Height)) w = hpic.w / hpic.H * h Endif Else 'C'est la hauteur h = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Height)) w = hpic.w / hpic.H * h 'si w> la place disponible alors on adapte en fonction de w en faite If w > (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Width)) Then w = hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Width) h = hPic.H / hpic.W * w Endif Endif Else w = hpic.Width h = hpic.H Endif Select Case $iAlignment Case Align.Normal, Align.TopLeft, Align.Left, Align.BottomLeft 'Gauche ix += Me.Report._ToPixels(Me.Padding._Left) Case Align.Bottom, Align.Center, Align.Top 'centrée ix += (hControl.RealWidth - w) / 2 Case Align.TopRight, Align.Right, Align.BottomRight 'Droite ix += hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Right) - w End Select Select Case $iAlignment Case Align.TopLeft, Align.Top, Align.TopRight 'Haut iy += Me.Report._ToPixels(Me.Padding._Top) Case Align.Left, Align.Center, Align.Right 'Milieu iy += (hControl.RealHeight - h) / 2 Case Align.BottomLeft, Align.Bottom, Align.BottomRight iY += hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Bottom) - h End Select Paint.DrawImage(hpic, ix, iy, w, h - 1) Endif Paint.Fill Paint.Restore End Private Function Image_Read() As Image Return $hPic End Private Sub Image_Write(Value As Image) $hPic = Value 'If Left(Me.Width, 1) = "0" Then Me.Width = $hpic.Width & " px" 'If Left(Me.Height, 1) = "0" Then Me.Height = $hpic.Height & " px" End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Private Function Stretch_Read() As Integer Return $iStretchMode End Private Sub Stretch_Write(Value As Integer) $iStretchMode = Value End gambas-3.16.3/comp/src/gb.report2/.src/ReportLabel.class000066400000000000000000000134311411575327000226650ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Text,Format,Alignment{Align.*},Rotate{Angle:Degrees},UseField" '"*,Text,Key,Format,Alignment{Align.*},UseField" Public Const _Similar As String = "ReportTextLabel" Public Const _DefaultEvent As String = "Data" Public Data As String Property Text As String Property Format As String Property Alignment As Integer Property Rotate As Float Property UseField As Boolean Private $sText As String Private $sFormat As String Private $iAlignment As Integer Private $fAngle As Integer Private $bUseField As Boolean Private $hEval As _RepExp Static Private $iPage As Integer Static Private $iIndex As Integer Event Data(Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hSizeHint As ReportSizeHints Dim hRect As RectF Dim fWidth, fHeight As Float Dim sText As String Dim hExt As PaintExtents 'Obtenir la taille de l'objet de base en tenant compte 'de padding et des dimensions fournies hSizeHint = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'Inutile de chercher a connaitre la taille réclamée par l'objet si elle est 'soit définie par le parent, soit imposée par l'utilisateur If $sText Begins "=" Then If Not $hEval Or If $hEval.Text <> Right($sText, -1) Then $hEval = New _RepExp As "Eval" $hEval.Text = Right($sText, -1) Endif Endif If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then 'Sinon on cherche la tailmle du texte If $sText Then sText = $sText Else Raise Data(DataIndex) sText = Data Endif If $sFormat Then Try sText = Format(sText, $sFormat) Endif Paint.Font = Me.Font 'If sText = "Gambas" Then Stop If $fAngle = 0 Then hRect = Paint.TextSize(sText) hSizeHint = New ReportSizeHints fWidth = Me.Border._Left + Me.Padding._Left + Me.Report._FromPixels(hRect.Width) + Me.Padding._Right + Me.Border._Right fHeight = Me.Border._Top + Me.Padding._Top + Me.Report._FromPixels(hRect.Height) + Me.Padding._Bottom + Me.Border._Bottom Else Paint.Save Paint.Rotate(Rad($fAngle)) Paint.Text(sText, 0, 0) hExt = Paint.PathExtents fWidth = Me.Border._Left + Me.Padding._Left + Me.Report._FromPixels(hExt.Width) + Me.Padding._Right + Me.Border._Right fHeight = Me.Border._Top + Me.Padding._Top + Me.Report._FromPixels(hExt.Height) + Me.Padding._Bottom + Me.Border._Bottom Paint.Restore Endif Endif hSizeHint.Width = Max(hSizeHint.Width, fWidth) hSizeHint.Height = Max(hSizeHint.Height, fHeight) Return hSizeHint End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim sTempText As Variant Dim iX, iY, iW, iH As Integer $iPage = Page $iIndex = DataIndex If $sText Then sTempText = $sText Else Raise Data(DataIndex) sTempText = Data Endif If sTempText Begins "=" Then $hEval.Compile() sTempText = $hEval.Value Endif If $sFormat Then Try sTempText = Format(sTempText, $sFormat) Endif If $bUseField Then sTempText = DecodeText(sTempText, Page) Endif iX = (x + hControl.RealLeft + Me.Report._ToPixels(Me.Padding._Left + Me.Border._Left)) iY = (y + hControl.RealTop + Me.Report._ToPixels(Me.Padding._Top + Me.Border._Top)) iW = (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) iH = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) Paint.Brush = Me._GetActualBrush(iX, iY, iX + hControl.RealWidth, iY + hControl.RealHeight) If Report.Debug Then Paint.Brush = Paint.Color(Color.Red) Paint.Rectangle(ix, iy, iw, ih) Paint.Stroke Endif 'Set the Font if it is initialized Paint.Font = Me.Font If $fAngle = 0.0 Then Paint.Text(sTempText, iX, iY, iW, iH, $iAlignment) Else Paint.Translate(iX + iW / 2, iY + iH / 2) Paint.Rotate(Rad($fAngle)) Paint.Translate(-(iX + iW / 2), -(iY + iH / 2)) Paint.Text(sTempText, iX, iY, iW, iH, Align.Center) Endif Paint.Fill End Private Function DecodeText(sText As String, Optional Page As Integer, Optional ForSize As Boolean = False) As String If ForSize Then If InStr(sText, "$PAGE") Then sText = Replace(sText, "$PAGE", "999") If InStr(sText, "$NPAGE") Then sText = Replace(sText, "$NPAGE", "999") Else If InStr(sText, "$PAGE") Then sText = Replace(sText, "$PAGE", Str(Page + 1)) If InStr(sText, "$NPAGE") Then sText = Replace(sText, "$NPAGE", Str(Me.Report.PageCount)) Endif Return sText End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Private Function Format_Read() As String Return $sFormat End Private Sub Format_Write(Value As String) $sFormat = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Private Function Rotate_Read() As Float Return $fAngle End Private Sub Rotate_Write(Value As Float) $fAngle = Value End Private Function UseField_Read() As Boolean Return $bUseField End Private Sub UseField_Write(Value As Boolean) $bUseField = Value End Public Sub Eval_Data(Value As String) 'Print "appel" Select Case LCase(Value) Case "page" Last.Data = $iPage + 1 Case "index" Last.Data = $iIndex Case "pages" Last.Data = Me.Report.PageCount End Select End gambas-3.16.3/comp/src/gb.report2/.src/ReportLine.class000066400000000000000000000054341411575327000225410ustar00rootroot00000000000000' Gambas class file Export Inherits ReportControl Public Const _Properties As String = "*,Direction{Align.TopLeft;Top;TopRight;Left;Right;BottomLeft;Bottom;BottomRight}=BottomRight,LineWidth{ReportCoord}=2 px" Public Const _Similar As String = "ReportTextLabel" Property Direction As Integer Private $fLineWidth As Float = 0.1 Private $iLineStyle As Integer = Line.solid Private $iDirection As Integer = Align.BottomRight Private $sLineWidth As String = "2px" Property LineWidth As String Property LineStyle As Integer Public Sub _new() Me.Height = "1cm" Me.Width = "1cm" End Private Function LineWidth_Read() As String Return $sLineWidth End Private Sub LineWidth_Write(Value As String) $sLineWidth = Value End Public Sub _NormalizeUnits() Dim hSizeParse As TSizeParse Super._NormalizeUnits() hSizeParse = New TSizeParse($sLineWidth) $fLineWidth = hSizeParse.GetValue() End Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hMyHints As New ReportSizeHints hMyHints.Height = Me._Height hMyHints.Width = Me._Width Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim iX, iY, W, H, W2, H2 As Integer If Me.LineStyle = Line.None Then Return If Me.LineStyle <> Line.Solid Then Paint.Dash = MUtil.GetBorder(Me.LineStyle) Paint.LineWidth = Me.Report._ToPixels($fLineWidth) iX = (x + hControl.RealLeft + Me.Report._ToPixels(Me.Padding._Left)) iY = (y + hControl.RealTop + Me.Report._ToPixels(Me.Padding._Top)) W = iX + hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Right) H = iY + hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Bottom) Paint.Brush = Me._GetActualBrush(iX, iY, W, H) W2 = (iX + W) / 2 H2 = (iY + H) / 2 Select Case $iDirection Case Align.TopLeft Paint.MoveTo(W, H) Paint.LineTo(iX, iY) Case Align.Top Paint.MoveTo(W2, H) Paint.LineTo(W2, iY) Case Align.TopRight Paint.MoveTo(iX, H) Paint.LineTo(W, iY) Case Align.Left Paint.MoveTo(W, H2) Paint.LineTo(iX, H2) Case Align.Right Paint.MoveTo(iX, H2) Paint.LineTo(W, H2) Case Align.BottomLeft Paint.MoveTo(W, iY) Paint.LineTo(iX, H) Case Align.Bottom Paint.MoveTo(W2, iY) Paint.LineTo(W2, H) Case Align.BottomRight Paint.MoveTo(iX, iY) Paint.LineTo(W, H) End Select Paint.Stroke End Private Function LineStyle_Read() As Integer Return $iLineStyle End Private Sub LineStyle_Write(Value As Integer) $iLineStyle = Value End Private Function Direction_Read() As Integer Return $iDirection End Private Sub Direction_Write(Value As Integer) $iDirection = Value End gambas-3.16.3/comp/src/gb.report2/.src/ReportPageBreak.class000066400000000000000000000001361411575327000234650ustar00rootroot00000000000000' Gambas class file Export Inherits ReportControl Public Const _Properties As String = "-*" gambas-3.16.3/comp/src/gb.report2/.src/ReportPanel.class000066400000000000000000000006301411575327000227020ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*,Arrangement{Arrange.None;Vertical;Horizontal}=None" Property Arrangement As Integer Public Sub New() Super._Arrangement = Arrange.None End Private Function Arrangement_Read() As Integer Return Super._Arrangement End Private Sub Arrangement_Write(Value As Integer) Super._Arrangement = Value End gambas-3.16.3/comp/src/gb.report2/.src/ReportSvgImage.class000066400000000000000000000143441411575327000233540ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Private $hPic As SvgImage Private $iStretchMode As Integer = Report.Proportional Private $iAlignment As Integer = Align.Normal 'Private $sPath As String Public Const _Properties As String = "*,Stretch{Report.None;Proportional;Fill}=Proportional,Alignment{Align.*},Image{SvgImage}" Public Const _Similar As String = "ReportTextLabel" Public Data As SvgImage Property Image As SvgImage Property Stretch As Integer Property Alignment As Integer Event Data(Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hMyHints As New ReportSizeHints Dim fRatio As Float 'Dim h As Float = IIf(Me._Height > AvailableH, AvailableH, Me._Height) 'Dim w As Float = IIf(Me._Width > AvailableW, AvailableW, Me._Width) Dim hPic As SvgImage hMyHints = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalWidth, DataIndex) If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then If $hpic Then hpic = $hpic Else Raise Data(DataIndex) hpic = Data Endif If hpic Then If Me.Stretch = Report.Proportional Then If hpic.Width > hpic.Height Then fRatio = hpic.Height / hpic.Width hMyHints.Width = Min(Report.UnitToInch(hpic.Width, "px"), AvailableW) hMyHints.Height = ((hMyHints.Width - (Me.Border._Width + Me.Padding._Width)) * fRatio) + (Me.Padding._Height + Me.Border._Height) Else fRatio = hpic.Width / hpic.Height hMyHints.Height = Min(Report.UnitToInch(hpic.Height, "px"), AvailableH) hMyHints.Width = ((hMyHints.Height - (Me.Border._Height + Me.Padding._Height)) * fRatio) + (Me.Border._Width + Me.Padding._Width) Endif Else hMyHints.Width = Max(hMyHints.Width, Me.Padding._Left + Report.UnitToInch(hpic.Width, "px") + Me.Padding._Right) 'Report.UnitToInch(hpic.Width, "px") + Me.Padding._Right) hMyHints.Height = Max(hMyHints.Height, Me.Padding._Top + Report.UnitToInch(hpic.Height, "px") + Me.Padding._Bottom) 'Report.UnitToInch(hpic.Height, "px") + Me.Padding._Bottom) Endif Endif Endif Return hMyHints End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim ix, iy As Float 'Dim hBrush As PaintBrush Dim hPic As SvgImage Dim w, h As Float ix = x + hControl.RealLeft '+ Me.Report._ToPixels(Me.Padding._Left) iy = y + hControl.RealTop '+ Me.Report._ToPixels(Me.Padding._Top) If Not $hpic Then Raise Data(DataIndex) hpic = Data If Not hPic Then Return Else hPic = $hpic Endif Paint.Save Paint.Rectangle(ix, iy, hControl.RealWidth, hControl.RealHeight) Paint.Clip '$hPic = $hPic.Stretch(hControl.RealWidth, hControl.RealHeight) 'hBrush = Paint.Image(hpic) If $iStretchMode = Report.Fill Then iX += Me.Report._ToPixels(Me.Padding._Left + Me.Border._Left) iY += Me.Report._ToPixels(Me.Padding._Top + Me.Border._Top) w = (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) h = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) ' hBrush.Translate(ix, iy - 1) 'hBrush.Scale(w / hPic.Width, h / hPic.Height) 'Paint.Brush = hBrush hpic.Width = w hpic.Height = h Paint.MoveTo(ix, iy) hpic.Paint 'Paint.Rectangle(ix, iy, w, h) Else If $iStretchMode = Report.Proportional Then 'on détermine la partie prédominante If hPic.Width >= hPic.Height 'C'est la largeur 'on détermine une hauteur en fonction de la largeur connue w = hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Width) h = hPic.Height / hPic.Width * w 'si h> a la place disponible alors on adapte en fonction de h en faite If h > (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Height)) Then h = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Height)) w = hPic.Width / hPic.Height * h Endif Else 'C'est la hauteur h = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Height)) w = hPic.Width / hPic.Height * h 'si w> la place disponible alors on adapte en fonction de w en faite If w > (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Width)) Then w = hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Width) h = hPic.Height / hPic.Width * w Endif Endif Else w = hPic.Width h = hPic.Height Endif Select Case $iAlignment Case Align.Normal, Align.TopLeft, Align.Left, Align.BottomLeft 'Gauche ix += Me.Report._ToPixels(Me.Padding._Left) Case Align.Bottom, Align.Center, Align.Top 'centrée ix += (hControl.RealWidth - w) / 2 Case Align.TopRight, Align.Right, Align.BottomRight 'Droite ix += hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Right) - w End Select Select Case $iAlignment Case Align.TopLeft, Align.Top, Align.TopRight 'Haut iy += Me.Report._ToPixels(Me.Padding._Top) Case Align.Left, Align.Center, Align.Right 'Milieu iy += (hControl.RealHeight - h) / 2 Case Align.BottomLeft, Align.Bottom, Align.BottomRight iY += hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Bottom) - h End Select 'hBrush.Translate(ix, iy - 1) hpic.Width = W hPic.Height = H Paint.MoveTo(iX, iY) hpic.Paint 'hBrush.Scale(w / hPic.Width, h / hPic.Height) 'Paint.Brush = hBrush 'Paint.Rectangle(ix, iy, w, h - 1) Endif Paint.Restore End Private Function Image_Read() As SvgImage Return $hPic End Private Sub Image_Write(Value As SvgImage) $hPic = Value End Private Function Stretch_Read() As Integer Return $iStretchMode End Private Sub Stretch_Write(Value As Integer) $iStretchMode = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End gambas-3.16.3/comp/src/gb.report2/.src/ReportTextLabel.class000066400000000000000000000075111411575327000235340ustar00rootroot00000000000000' Gambas class file Export Inherits ReportFrame Public Const _Properties As String = "*,Text,Alignment{Align.*}" '"*,Text,Key,Format,Alignment{Align.*},UseField" Public Const _Similar As String = "ReportTextLabel" Public Const _DefaultEvent As String = "Data" Public Data As String Property Text As String Property Alignment As Integer Private $sText As String Private $iAlignment As Integer Event Data(Index As Integer) Public Sub _GetSizeHints((AvailableW) As Float, (AvailableH) As Float, (TotalWidth) As Float, (TotalHeight) As Float, DataIndex As Integer) As ReportSizeHints Dim hSizeHint As ReportSizeHints Dim hRect As RectF Dim fWidth, fHeight As Float Dim sText As String 'Dim hExt As PaintExtents 'Obtenir la taille de l'objet de base en tenant compte 'de padding et des dimensions fournies hSizeHint = Super._GetSizeHints(AvailableW, AvailableH, TotalWidth, TotalHeight, DataIndex) 'Inutile de chercher a connaitre la taille réclamée par l'objet si elle est 'soit définie par le parent, soit imposée par l'utilisateur If Me.Autoresize Or If (Me._Width = 0 And Me._Height = 0) Then 'Sinon on cherche la tailmle du texte If $sText Then sText = $sText Else Raise Data(DataIndex) sText = Data Endif Paint.Font = Me.Font 'If sText = "Gambas" Then Stop 'If $fAngle = 0 Then hRect = Paint.RichTextSize(sText) hSizeHint = New ReportSizeHints fWidth = Me.Border._Left + Me.Padding._Left + Me.Report._FromPixels(hRect.Width) + Me.Padding._Right + Me.Border._Right fHeight = Me.Border._Top + Me.Padding._Top + Me.Report._FromPixels(hRect.Height) + Me.Padding._Bottom + Me.Border._Bottom 'Endif Endif hSizeHint.Width = Max(hSizeHint.Width, fWidth) hSizeHint.Height = Max(hSizeHint.Height, fHeight) Return hSizeHint End Public Sub _Paint(Page As Integer, X As Float, Y As Float, hControl As TControl, DataIndex As Integer) Dim sTempText As Variant Dim iX, iY, iW, iH As Integer If $sText Then sTempText = $sText Else Raise Data(DataIndex) sTempText = Data Endif iX = (x + hControl.RealLeft + Me.Report._ToPixels(Me.Padding._Left + Me.Border._Left)) iY = (y + hControl.RealTop + Me.Report._ToPixels(Me.Padding._Top + Me.Border._Top)) iW = (hControl.RealWidth - Me.Report._ToPixels(Me.Padding._Left + Me.Padding._Right + Me.Border._Left + Me.Border._Right)) iH = (hControl.RealHeight - Me.Report._ToPixels(Me.Padding._Top + Me.Padding._Bottom + Me.Border._Top + Me.Border._Bottom)) If Report.Debug Then Paint.Brush = Paint.Color(Color.Red) Paint.Rectangle(ix, iy, iw, ih) Paint.Stroke Endif 'Set the Font if it is initialized 'Paint.Font = Me.Font 'If InStr($sText, "color=") Then Draw.Font = Me.Font Paint.Brush = Me._GetActualBrush(iX, iY, iX + hControl.RealWidth, iY + hControl.RealHeight) Draw.RichText(sTempText, iX, iY, iW, iH, $iAlignment) 'Else ' Paint.Font = Me.Font ' Paint.RichText(sTempText, iX, iY, iW, iH, $iAlignment) ' Endif 'Paint.Fill End Private Function DecodeText(sText As String, Optional Page As Integer, Optional ForSize As Boolean = False) As String If ForSize Then If InStr(sText, "$PAGE") Then sText = Replace(sText, "$PAGE", "999") If InStr(sText, "$NPAGE") Then sText = Replace(sText, "$NPAGE", "999") Else If InStr(sText, "$PAGE") Then sText = Replace(sText, "$PAGE", Str(Page + 1)) If InStr(sText, "$NPAGE") Then sText = Replace(sText, "$NPAGE", Str(Me.Report.PageCount)) Endif Return sText End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End gambas-3.16.3/comp/src/gb.report2/.src/ReportVBox.class000066400000000000000000000004451411575327000225250ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*,ForceNewPage" Public Const _Similar As String = "ReportVBox" Public Const _DefaultArrangement As String = "V" Public Sub _new() Super._Arrangement = Arrange.Vertical End Public Sub _Free() End gambas-3.16.3/comp/src/gb.report2/.src/ReportVPanel.class000066400000000000000000000007301411575327000230310ustar00rootroot00000000000000' Gambas class file Export Inherits ReportContainer Public Const _Properties As String = "*,ForceNewPage" Public Const _Similar As String = "ReportVBox" Public Const _DefaultArrangement As String = "V" ' Definition ' C'est la largeur maximal des objets qui donnes la largeur de la colonne. ' Mais un objet ne peu être plus large que le container principal... soit une colonne. Public Sub _new() Super._Arrangement = Arrange.Column End Public Sub _Free() Endgambas-3.16.3/comp/src/gb.report2/.src/Tests/000077500000000000000000000000001411575327000205235ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Tests/Module2.module000066400000000000000000000002521411575327000232400ustar00rootroot00000000000000' Gambas module file Public Sub main() Dim hreport As New Report13 hreport.Path = User.Home &/ "Test.pdf" hreport.Preview Print hreport.Path End gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report10.class000066400000000000000000000003261411575327000231670ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() ReportVBox1.DataCount = 100 ReportVBox2.DataCount = 4 ReportPanel1.Datacount = 3 End Public Sub ReportLabel1_Data(Index As Integer) 'Last.data = Index End gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report10.report000066400000000000000000000025401411575327000233750ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,91) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Tag = "Report" { ReportVBox1 ReportVBox #MoveScaled(1,1,62,42) Expand = True { ReportLabel1 ReportLabel #MoveScaled(1,1,60,6) Text = ("=index") } { ReportVBox2 ReportVBox #MoveScaled(1,7,60,15) Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#FF7F00"] { ReportLabel2 ReportLabel #MoveScaled(1,1,58,6) AutoResize = True Text = ("=Index") } { ReportPanel1 ReportPanel #MoveScaled(1,7,58,6) Height = "7mm" Margin = ReportMargin["Top:0mm;Bottom:2mm;Left:1cm;Right:1cm"] Tag = "hBox" Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#00FF00"] Arrangement = Arrange.Vertical { ReportLabel3 ReportLabel #MoveScaled(4,2,62,7) Padding = ReportPadding["Left:5mm"] Expand = True Tag = "label" Text = ("=\"Index = \" & index") } } } } { ReportLabel4 ReportLabel #MoveScaled(1,43,62,3) Fixed = True Text = ("=page & \" / \" & pages") Alignment = Align.Right } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report13.class000066400000000000000000000001221411575327000231640ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() ReportHBox1.DataCount = 99 End gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report13.report000066400000000000000000000023361411575327000234030ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,109,91) Padding = ReportPadding["Top:25mm;Bottom:25mm;Left:25mm;Right:25mm"] Expand = True Spacing = "8mm" Index = 0 Text = ("") { ReportHBox1 ReportHBox #MoveScaled(1,1,107,20) Height = "4cm" Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Border = ReportBorder["Top:1mm #7F7F7F;Bottom:1mm #7F7F7F;Left:1mm #7F7F7F;Right:1mm #7F7F7F;TopLeftCorner:5mm;TopRightCorner:5mm;BottomRightCorner:5mm;BottomLeftCorner:5mm"] Background = ReportBrush["#EFDFFF"] BoxShadow = ReportBoxShadow["1mm 1mm 2px 0px #C2C2C2"] { ReportImage1 ReportImage #MoveScaled(1,1,19,18) Width = "4cm" Height = "4cm" Visible = False AutoResize = True Image = Image.Load("gambas.svg") } { ReportLabel1 ReportLabel #MoveScaled(20,1,83,18) Brush = ReportBrush["LinearGradient(1,0,1,1,[#5F5F5F,#BFBFBF],[0,1])"] Font = Font["Bold,+10"] Expand = True Text = ("=\"GAMBAS - \" & index") Alignment = Align.Center } } { ReportLabel3 ReportLabel #MoveScaled(1,22,107,29) Fixed = True Font = Font["+12"] Text = ("=\"PAGE \" & Page & \" / \" & pages") } Index = 0 } gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report14.class000066400000000000000000000001171411575327000231710ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() RHBList.DataCount = 300 End gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report14.report000066400000000000000000000036301411575327000234020ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,91) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] { ReportHBox1 ReportHBox #MoveScaled(1,1,62,7) Fixed = True Margin = ReportMargin["Bottom:5mm"] BoxShadow = ReportBoxShadow["1mm 1mm 3px 0px #000000"] { ReportLabel1 ReportLabel #MoveScaled(1,1,12,5) Width = "3cm" Border = ReportBorder["Top:3px #000000;Bottom:3px #000000;Left:3px #000000;Right:3px #000000;TopLeftCorner:5mm"] Text = ("Reference") Alignment = Align.Center } { ReportLabel2 ReportLabel #MoveScaled(13,1,25,5) Expand = True Border = ReportBorder["Top:3px #000000;Bottom:3px #000000;Left:3px #000000"] Text = ("Description") Alignment = Align.Center } { ReportLabel3 ReportLabel #MoveScaled(38,1,21,5) Width = "5cm" Border = ReportBorder["Top:3px #000000;Bottom:3px #000000;Left:3px #000000;Right:3px #000000;TopRightCorner:0mm;BottomLeftCorner:0mm"] Text = ("Valeur") Alignment = Align.Center } } { RHBList ReportHBox #MoveScaled(1,8,62,6) Margin = ReportMargin["Bottom:1mm"] { ReportLabel4 ReportLabel #MoveScaled(1,1,12,4) Width = "3cm" Border = ReportBorder["Top:0px #000000;Bottom:3px #000000;Left:3px #000000"] Text = ("=index") } { ReportLabel5 ReportLabel #MoveScaled(13,1,25,4) Expand = True Border = ReportBorder["Top:0px #000000;Bottom:3px #000000;Left:3px #000000"] } { ReportLabel6 ReportLabel #MoveScaled(38,1,21,4) Width = "5cm" Border = ReportBorder["Top:0px #000000;Bottom:3px #000000;Left:3px #000000;Right:3px #000000"] } } { ReportPanel1 ReportPanel #MoveScaled(1,14,62,6) Expand = True } { ReportLabel7 ReportLabel #MoveScaled(1,20,62,3) Fixed = True Text = ("=page & \" on \" & pages") Alignment = Align.Right } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report15.class000066400000000000000000000000251411575327000231700ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report15.report000066400000000000000000000003511411575327000234000ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,91) Index = 0 Text = ("Section 1") { ReportImage1 ReportImage #MoveScaled(1,1,62,22) Expand = True Image = Image.Load("tortueface.gif") } Index = 0 } gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report16.class000066400000000000000000000002511411575327000231720ustar00rootroot00000000000000' Gambas class file Public Sub ReportLabel2_Data(Index As Integer) Last.Data = "Coucou " & Index End Public Sub Report_Open() ReportHBox1.DataCount = 100 End gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report16.report000066400000000000000000000016441411575327000234070ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,119,91) Padding = ReportPadding["Top:1cm;Bottom:1cm;Left:1cm;Right:1cm"] { ReportLabel1 ReportLabel #MoveScaled(1,1,117,8) Height = "3cm" Brush = ReportBrush["LinearGradient(0,0,0,0,[#DFBC53,#FFFFFF],[0.97,0.05])"] Font = Font["Bold,+8"] Padding = ReportPadding["Top:1cm;Bottom:1cm;Left:1cm;Right:1cm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:21mm 6mm;TopRightCorner:21mm 6mm;BottomRightCorner:21mm 6mm;BottomLeftCorner:21mm 6mm"] Background = ReportBrush["RadialGradient(0.6,0.46,0.5,0.81,0.21,[#FFFFFF,#9F1313,#CF4DCF],[0,1,0.5])"] BoxShadow = ReportBoxShadow["1mm 1mm 5px 0px #FF5500"] Text = ("Coucou") Alignment = Align.Center } { ReportHBox1 ReportHBox #MoveScaled(1,9,117,10) { ReportLabel2 ReportLabel #MoveScaled(1,1,112,8) } } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report17.class000066400000000000000000000001231411575327000231710ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() ReportPanel1.DataCount = 30 End gambas-3.16.3/comp/src/gb.report2/.src/Tests/Report17.report000066400000000000000000000020301411575327000233760ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,100,91) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] Count = 2 Index = 0 Text = ("Section 1") { ReportPanel1 ReportPanel #MoveScaled(1,1,98,22) Height = "5cm" AutoResize = True { ReportLabel1 ReportLabel #MoveScaled(0,0,98,21) Brush = ReportBrush["RadialGradient(0.95,0.04,0.5,0.53,0.21,[#FFFFFF,#FF007F],[0,1])"] Font = Font["Bold,+17"] Border = ReportBorder["Top:1mm LinearGradient(1,0.88,0,0,[#000000,#FFFFFF],[0,1]);Bottom:1mm LinearGradient(1,0.88,0,0,[#000000,#FFFFFF],[0,1]);Left:1mm LinearGradient(1,0.88,0,0,[#000000,#FFFFFF],[0,1]);Right:1mm LinearGradient(1,0.88,0,0,[#000000,#FFFFFF],[0,1]);TopLeftCorner:12mm;BottomRightCorner:12mm"] Background = ReportBrush["RadialGradient(0.49,0.46,0.5,0.84,0.14,[#3737DF,#FFFFFF],[0,1])"] BoxShadow = ReportBoxShadow["1mm 1mm 2mm 0mm #000000"] Text = ("Coucou") Alignment = Align.Center } } Index = 1 Text = ("Section 2") Index = 0 } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/000077500000000000000000000000001411575327000213015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/FMain.class000066400000000000000000000006061411575327000233240ustar00rootroot00000000000000' Gambas class file Public Sub _new() Dim hLabel As New ReportLabel(Report) hLabel.Text = "Test" Report.Padding = ReportPadding["1cm"] hLabel.Border = ReportBorder["border:1px;toprightcorner:5mm 1cm"] hLabel.BackGround = ReportBrush["image(icon.png)"] Report.Preview() End Public Sub Form_Open() GridView1.Columns.Count = 6 GridView1.Columns[0].Text = "titi" GridView1.Rows.Count = 6 End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/FMain.form000066400000000000000000000002421411575327000231560ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,112,67) { GridView1 GridView MoveScaled(17,14,61,36) Grid = False Header = GridView.Both } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Module1.module000066400000000000000000000004531411575327000240200ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hrc As New Report Dim vb As ReportVBox Dim himg As New Image(1, 1) hrc.tag = hrc.Width = "21cm" hrc.Height = "29.7cm" vb = New ReportVBox(hrc) Paint.Begin(himg) hrc.Layout Paint.End Print hrc._Height Print hrc._Width End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/OutputReport2.class000066400000000000000000000105531411575327000251120ustar00rootroot00000000000000' Gambas class file Public nnoderows As Integer Public nanchorrows As Integer Public Sub _new() 'Report.Debug = True 'enter current date on the header ReportLabel2.Text = Date 'enter the project information in the header on the print out page 'With FMain.Project ReportLabel3.Text = "Project Title: " ' & .JobTitle ReportLabel4.Text = "Project No.: '" '& .Number ReportLabel5.Text = "Company: " '& .Company ReportLabel6.Text = "Designer: " '& .Designer ReportLabel7.Text = "Base Plate ID: " ' & .BasePlateID 'End With 'set count to four to display the results for qmax. Tmax, L, and phi ReportHBox9.DataCount = 4 'set the number of plate nodes to display in print out tables ' nnoderows = Module1.RoundUpInt(FMain.ConcreteSection.cNodes.Count / 2) ReportHBox5.DataCount = 11 'nnoderows 'set the number of anchor rods to display in print out tables 'nanchorrows = Module1.RoundUpInt(FMain.cAnchorRods.Count / 2) ReportHBox7.DataCount = 13 'nanchorrows 'set the number of report panels - one for each load combination result ReportPanel1.DataCount = 6 'FMain.AnalysisResults.Count End Public Sub ReportImage2_Data(Index As Integer) 'Dim current_results As Results Dim pSection As Picture 'create a new picture object for drawing the base plate pSection = New Picture(300, 300, False) 'get the results for first load case 'current_results = FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)] 'refresh base plate drawing with results 'Module1.DrawBasePlate(pSection, 1, current_results) 'add the picture of the base plate to the page ReportImage2.Image = pSection.Image End Public Sub ReportLabel9_Data(Index As Integer) Last.Data = "Load Case: " '& FMain.cLoads[Str$(ReportHBox3.DataIndex)].label End Public Sub ReportLabel14_Data(Index As Integer) 'Dim $value As String Select Case Index Case 0 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].Tmax, 2) Last.Data = "T(max) = " & 3 & " lbs" Case 1 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].maxstress, 2) Last.Data = "q(max) = " & 3 & " psi" Case 2 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].L, 2) Last.Data = "L = " & 3 & " in" Case 3 '$value = Module1.AdvFormat(FMain.AnalysisResults[Str$(ReportHBox3.DataIndex)].phi, 2) Last.Data = "phi = " & 3 & " degrees" Case Else End Select End Public Sub ReportLabel25_Data(Index As Integer) Last.Data = Index + 1 End Public Sub ReportLabel29_Data(Index As Integer) ' Dim current_results As Results 'current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] 'If nnoderows + Index < current_results.stress.Count Then Last.Data = nnoderows + Index + 1 'Else ' Last.Data = Null ' Endif End Public Sub ReportLabel26_Data(Index As Integer) Dim value As Float 'value = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)].stress[Index] Last.Data = "tt" 'Module1.AdvFormat(value, 2) End Public Sub ReportLabel30_Data(Index As Integer) Dim value As Float 'Dim current_results As Results 'current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] ' If nnoderows + Index < current_results.stress.Count Then 'value = current_results.stress[nnoderows + Index] Last.Data = "mm" 'Module1.AdvFormat(value, 2) ' Else Last.Data = Null 'Endif End Public Sub ReportLabel49_Data(Index As Integer) Last.Data = Index + 1 End Public Sub ReportLabel52_Data(Index As Integer) 'Dim current_results As Results 'current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] 'If nanchorrows + Index < current_results.T.Count Then Last.Data = nanchorrows + Index + 1 'Else ' Last.Data = Null ' Endif End Public Sub ReportLabel50_Data(Index As Integer) Dim value As Float 'value = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)].T[Index] Last.Data = "kkkk" 'Module1.AdvFormat(value, 2) End Public Sub ReportLabel53_Data(Index As Integer) Dim value As Float 'Dim current_results As Results ' current_results = FMain.AnalysisResults[Str$(ReportPanel1.DataIndex)] ' If nanchorrows + Index < current_results.T.Count Then ' value = current_results.T[nanchorrows + Index] Last.Data = "qqqqqq" 'Module1.AdvFormat(value, 2) ' Else ' Last.Data = Null 'Endif End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/OutputReport2.report000066400000000000000000000217151411575327000253220ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,76,88) Fixed = True Padding = ReportPadding["Top:20mm;Bottom:10mm;Left:20mm;Right:20mm"] Ignore = True AutoResize = True { ReportHBox1 ReportHBox #MoveScaled(2,0,62,11) Height = "25mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportImage1 ReportImage #MoveScaled(1,1,18,9) Width = "51mm" AutoResize = True } { ReportLabel1 ReportLabel #MoveScaled(21,1,10,9) Width = "25mm" AutoResize = True Text = ("Version 1.0") Alignment = Align.BottomLeft } { ReportLabel2 ReportLabel #MoveScaled(31,1,30,9) Expand = True AutoResize = True Text = ("Date") Alignment = Align.BottomRight UseField = True } } { ReportVBox1 ReportVBox #MoveScaled(2,11,62,9) Height = "28.01mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportLabel3 ReportLabel #MoveScaled(0,0,12,2) Height = "6mm" AutoResize = True Text = ("Project Title:") Alignment = Align.TopLeft } { ReportLabel4 ReportLabel #MoveScaled(0,2,12,2) Height = "6mm" AutoResize = True Text = ("Project No.:") Alignment = Align.TopLeft } { ReportLabel5 ReportLabel #MoveScaled(0,4,12,2) Height = "6mm" AutoResize = True Text = ("Company:") Alignment = Align.TopLeft } { ReportLabel6 ReportLabel #MoveScaled(0,6,12,2) Height = "6mm" AutoResize = True Text = ("Designer:") Alignment = Align.TopLeft } } { ReportHBox2 ReportHBox #MoveScaled(2,20,62,3) Height = "8mm" Fixed = True Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] Border = ReportBorder["Bottom:2px #000000"] { ReportLabel7 ReportLabel #MoveScaled(0,0,12,2) Height = "6mm" AutoResize = True Text = ("Base Plate ID:") Alignment = Align.TopLeft } } { ReportPanel1 ReportPanel #MoveScaled(2,25,67,52) AutoResize = True ForceNewPage = True { ReportHBox3 ReportHBox #MoveScaled(1,1,62,17) Height = "61mm" Expand = True { ReportVBox3 ReportVBox #MoveScaled(1,1,18,14) AutoResize = True { ReportHBox8 ReportHBox #MoveScaled(1,2,15,4) Width = "51mm" Height = "12mm" { ReportLabel9 ReportLabel #MoveScaled(1,1,13,2) Font = Font["+1"] Expand = True } } { ReportHBox9 ReportHBox #MoveScaled(1,8,15,4) Width = "51mm" Height = "6mm" { ReportLabel14 ReportLabel #MoveScaled(1,1,13,2) Expand = True } } } { ReportImage2 ReportImage #MoveScaled(31,1,17,15) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Alignment = Align.Center } } { ReportVBox4 ReportVBox #MoveScaled(1,20,62,14) AutoResize = True { ReportLabel19 ReportLabel #MoveScaled(2,0,16,4) Fixed = True Font = Font["+1"] Padding = ReportPadding["Top:3mm"] AutoResize = True Text = ("Bearing Pressue") } { ReportHBox4 ReportHBox #MoveScaled(1,3,60,4) Height = "6mm" Fixed = True { ReportLabel20 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Node #") Alignment = Align.Center } { ReportLabel21 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Brg. Press., psi") Alignment = Align.Center } { ReportLabel22 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel23 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Node #") Alignment = Align.Center } { ReportLabel24 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Brg. Press., psi") Alignment = Align.Center } } { ReportHBox5 ReportHBox #MoveScaled(1,8,60,4) Height = "6mm" { ReportLabel25 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel26 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel27 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel29 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel30 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } } } { ReportVBox6 ReportVBox #MoveScaled(1,36,62,14) AutoResize = True { ReportLabel31 ReportLabel #MoveScaled(2,0,19,4) Fixed = True Font = Font["+1"] Padding = ReportPadding["Top:3mm"] AutoResize = True Text = ("Anchor Rod Tension") } { ReportHBox6 ReportHBox #MoveScaled(1,3,60,4) Height = "6mm" Fixed = True { ReportLabel44 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Rod #") Alignment = Align.Center } { ReportLabel45 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Tension, lbs") Alignment = Align.Center } { ReportLabel46 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel47 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Rod #") Alignment = Align.Center } { ReportLabel48 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Text = ("Tension, lbs") Alignment = Align.Center } } { ReportHBox7 ReportHBox #MoveScaled(1,8,60,4) Height = "6mm" { ReportLabel49 ReportLabel #MoveScaled(1,1,13,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel50 ReportLabel #MoveScaled(14,1,14,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel51 ReportLabel #MoveScaled(28,1,4,2) Width = "5mm" } { ReportLabel52 ReportLabel #MoveScaled(32,1,12,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } { ReportLabel53 ReportLabel #MoveScaled(44,1,15,2) Expand = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] Alignment = Align.Center } } } } { ReportPanel2 ReportPanel #MoveScaled(2,77,69,1) Fixed = True Expand = True } { ReportHBox10 ReportHBox #MoveScaled(2,79,62,4) Height = "1cm" Fixed = True AutoResize = True { ReportLabel8 ReportLabel #MoveScaled(22,1,21,2) Expand = True AutoResize = True Text = ("Page $PAGE of $NPAGE") Alignment = Align.Bottom UseField = True } } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report1.class000066400000000000000000000021441411575327000236650ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() Dim hBox As ReportHBox Dim i As Integer 'Report.Debug = True 'Me.Spacing = "1cm" ReportHBox1.Margin.Bottom = "2cm" 'Report.Debug = True 'ReportHBox2.Margin.Top = "2cm" ' ReportHBox1.BoxShadow.Blur = "0.5mm" ' ReportHBox1.BoxShadow.XOffset = "1mm" ' ReportHBox1.BoxShadow.YOffset = "1mm" ' 'ReportHBox1.BoxShadow.Spread = "0.5mm" ' ReportHBox1.BoxShadow.Color = Color.Gray For i = 0 To 14 hbox = New Reporthbox(ReportVBox1) HBox.Height = "1cm" HBox.Border.Width = "2px" HBox.Margin.Top = "5mm" HBox.Margin.Bottom = "3mm" HBox.Margin.Left = "1cm" HBox.Margin.Right = "2mm" Next hBox = New ReportHBox(ReportVBox1) HBox.BackGround = ReportBrush.Color(Color.Green) HBox.Height = "3cm" HBox.Margin.Top = "1cm" For i = 0 To 4 hbox = New Reporthbox(ReportHBox2) HBox.Width = "1cm" HBox.Border.Width = "2px" HBox.Margin.Left = "3mm" HBox.Margin.Right = "8mm" HBox.Expand = True HBox.Margin.Top = "3mm" HBox.Margin.Bottom = "3px" Next ReportHBox2.Padding = ReportPadding["2mm"] End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report1.report000066400000000000000000000031071411575327000240730ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,93,73) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] BoxShadow = ReportBoxShadow["2mm 2mm 0mm 0px #C05800"] Spacing = "5mm" { ReportHBox1 ReportHBox #MoveScaled(1,1,91,14) Height = "2cm" Fixed = True Tag = "**" Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:3mm;TopRightCorner:3mm;BottomRightCorner:3mm;BottomLeftCorner:3mm"] BoxShadow = ReportBoxShadow["0mm 3mm 1mm -4px #FF8000"] { ReportLabel1 ReportLabel #MoveScaled(1,1,58,12) Font = Font["+10"] Expand = True AutoResize = True Text = ("=\"Page \" & Page") Alignment = Align.Center } } { ReportVBox1 ReportVBox #MoveScaled(1,16,91,10) Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:10mm;TopRightCorner:20mm;BottomRightCorner:10mm;BottomLeftCorner:1mm"] Background = ReportBrush["LinearGradient(0.35,0.74,0.95,0.07,[#FFFFFF,#FFFFFF,#007FFF],[0,1,0.36])"] BoxShadow = ReportBoxShadow["1mm 1mm 1mm 0px #000000"] } { ReportHBox2 ReportPanel #MoveScaled(1,27,91,16) Height = "20mm" Fixed = True { ReportLabel2 ReportLabel #MoveScaled(10,3,59,9) Expand = True Text = ("=pi() + 4") Format = "0.00" } } { ReportHBox3 ReportHBox #MoveScaled(1,44,91,6) Height = "10mm" Brush = ReportBrush["#FF0000"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report11.class000066400000000000000000000013441411575327000237470ustar00rootroot00000000000000' Gambas class file 'Static Public Type As String Public Sub _new(Optional sType As String = "sqlite") Dim hResult As Result Dim Rlbl As ReportLabel Dim hConn As Connection 'Report.Debug = True hConn = Connections["Connection1"] hConn.Type = sType If hConn.Type = "sqlite" Then hConn.Host = User.Home Try hConn.Open If Not hConn.Opened Then Message.Error(" You have to create the test database with the Database example.") Return Endif hResult = db.Limit(200).Find("test") If Not hResult.Available Then Return For Each hResult Rlbl = New ReportLabel(RVBCont) Rlbl.Autoresize = True Rlbl.Text = hResult!name & " " & hResult!firstname Rlbl.Border.bottom.Width = "1px" Next End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report11.report000066400000000000000000000061141411575327000241550ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,100,77) Padding = ReportPadding["Top:1cm;Bottom:15mm;Left:2cm;Right:2cm"] { ReportHBox2 ReportHBox #MoveScaled(0,0,67,14) Height = "5cm" Fixed = True Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] Background = ReportBrush["#3398C3"] { ReportSvgImage1 ReportSvgImage #MoveScaled(1,1,14,12) Width = "4cm" Image = SvgImage.Load("gambas.svg") } { ReportLabel3 ReportLabel #MoveScaled(20,2,40,10) Brush = ReportBrush["LinearGradient(0.71,0.07,0.34,0.06,[#FFFF00,#FFFFFF],[0,1])"] Fixed = True Font = Font["DejaVu Sans,Bold,+14"] Expand = True AutoResize = True Text = ("Gambas") Alignment = Align.Left } } { ReportHBox1 ReportHBox #MoveScaled(0,15,87,56) Padding = ReportPadding["0cm"] Expand = True Border = ReportBorder["Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] { ReportVBox1 ReportVBox #MoveScaled(1,1,25,47) Width = "6cm" Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Background = ReportBrush["#DF6B00"] { ReportLabel4 ReportLabel #MoveScaled(3,2,20,4) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold"] AutoResize = True Text = ("All friends list !") } } { ReportVBox2 ReportVBox #MoveScaled(27,1,60,54) Expand = True Border = ReportBorder["Left:1mm #000000"] Background = ReportBrush["#FFFFFF"] { RVBCont ReportVBox #MoveScaled(4,4,53,42) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Expand = True Tag = "*" Spacing = "1mm" { ReportLabel1 ReportLabel #MoveScaled(0,1,44,9) Fixed = True Font = Font["Bitstream Charter,Bold,Italic,+2"] Margin = ReportMargin["Bottom:1cm"] AutoResize = True Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000"] BoxShadow = ReportBoxShadow["1mm 1mm 0px 0px #000000"] Text = ("Gambas Report Demo") Alignment = Align.Center } { ReportLabel5 ReportLabel #MoveScaled(3,17,40,21) Width = "100%" Height = "100%" Brush = ReportBrush["#DFDFDF"] Visible = False Fixed = True Font = Font["Bold,+15"] Ignore = True Text = ("DEMO") Alignment = Align.Center } } { ReportLabel2 ReportLabel #MoveScaled(7,49,47,3) Brush = ReportBrush["#FFFFFF"] Fixed = True Font = Font["Bold,+1"] Padding = ReportPadding["Top:1mm;Bottom:1mm;Left:1mm;Right:1mm"] AutoResize = True Border = ReportBorder["Top:1mm #000000"] Background = ReportBrush["#3398C3"] Text = ("Page $PAGE on $NPAGE ") Alignment = Align.Right UseField = True } } } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report12.class000066400000000000000000000004071411575327000237470ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() TableLine.DataCount = 8 End Public Sub ReportLabel4_Data(Index As Integer) Print Index Last.Data = Index End Public Sub ReportLabel5_Data(Index As Integer) Print Index Last.Data = TableLine.DataIndex End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report12.report000066400000000000000000000023061411575327000241550ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] { ReportHBox1 ReportHBox #MoveScaled(0,2,60,6) Height = "1cm" Border = ReportBorder["Top:2px #000000;Bottom:2px #000000;Left:2px #000000;Right:2px #000000;TopLeftCorner:2mm;TopRightCorner:2mm"] { ReportLabel1 ReportLabel #MoveScaled(1,1,16,4) Width = "5cm" } { ReportLabel2 ReportLabel #MoveScaled(19,1,18,4) Width = "5cm" Border = ReportBorder["Left:2px #000000;Right:2px #000000"] } { ReportLabel3 ReportLabel #MoveScaled(39,1,19,4) Expand = True } } { ReportVBox1 ReportVBox #MoveScaled(1,12,61,44) { TableLine ReportHBox #MoveScaled(0,0,60,4) Height = "1cm" Border = ReportBorder["Bottom:2px #000000;Left:2px #000000;Right:2px #000000"] { ReportLabel4 ReportLabel #MoveScaled(0,0,17,4) Width = "5cm" } { ReportLabel5 ReportLabel #MoveScaled(19,1,20,4) Width = "5cm" Border = ReportBorder["Left:2px #000000;Right:2px #000000"] } { ReportLabel6 ReportLabel #MoveScaled(42,0,15,4) } } } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report2.class000066400000000000000000000006751411575327000236750ustar00rootroot00000000000000' Gambas class file Public Sub ReportGridView1_Data(Row As Integer, Column As Integer) End Public Sub Report_Open() ' ReportGridView1.Columns.Count = 6 ' ReportGridView1.Rows.Count = 8 ' ReportGridView1.Columns[2].Width = "6cm" ' ReportGridView1.Rows[2].Height = "2cm" ' ReportGridView1.Rows[4].Height = "8px" ' ReportGridView1.Rows[4].Text = "totolkjdhdolhldhdhl" ' ReportGridView1.Header = ReportGridView.Both End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report2.report000066400000000000000000000017011411575327000240720ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:15mm;Bottom:15mm;Left:15mm;Right:15mm"] Index = 0 Text = ("") { ReportLabel1 ReportLabel #MoveScaled(1,3,59,12) Height = "2cm" Font = Font["+12"] Margin = ReportMargin["Bottom:1cm;Left:2cm;Right:2cm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:5mm;TopRightCorner:5mm;BottomRightCorner:5mm;BottomLeftCorner:5mm"] Background = ReportBrush["LinearGradient(0.49,0,0.49,1,[#00BF5C,#FFE79F],[0,1])"] BoxShadow = ReportBoxShadow["1mm 1mm 1mm 0mm #000000"] Text = ("ReportLabel1") Alignment = Align.Center } { ReportGridView1 ReportGridView #MoveScaled(4,24,46,25) Expand = True Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] BoxShadow = ReportBoxShadow["0mm 0mm 2mm 0mm #000000"] } Index = 0 } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report3.class000066400000000000000000000007531411575327000236730ustar00rootroot00000000000000' Gambas class file Public Sub _new() Dim i As Integer Dim hCont As ReportLabel Dim hBreak As ReportPageBreak 'Report.Debug = True ReportLabel1.Border.Width = "0.5mm" 'ReportVBox1.Border.Left.Width = "1mm" 'ReportVBox1.DataCount = 3 For i = 0 To 800 'If i = 3 Then hBreak = New ReportPageBreak(Me) hCont = New ReportLabel(Me) hCont.BoxShadow.Blur = "5mm" hCont.Border.Width = "0.5mm" hCont.Height = "1cm" hCont.Margin.Top = "5mm" hCont.Text = i Next End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report3.report000066400000000000000000000012521411575327000240740ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,57) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] AutoResize = True Spacing = "5mm" Paper = Printer.A3 { ReportLabel1 ReportLabel #MoveScaled(6,0,52,7) Font = Font["+14"] BoxShadow = ReportBoxShadow["3mm 3mm 3mm 0mm #FF8000"] Text = ("PARCELLAIRE $NPAGE") Alignment = Align.Center UseField = True } { ReportImage1 ReportImage #MoveScaled(8,10,41,28) Height = "14cm" Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000"] BoxShadow = ReportBoxShadow["1mm 1mm 2px 2px #000000"] Stretch = Report.None } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report4.class000066400000000000000000000004071411575327000236700ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() 'Report.Debug = True rhh.DataCount = 5 'rv.DataCount = 10 rv2.DataCount = 3 ' Me.Layout ' Print Me.PageCount ' rv.DataCount = 4 ' Me.Layout ' Print Me.PageCount ' rv.DataCount = 5 ' Print Me.PageCount 'rh.Raise End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report4.report000066400000000000000000000010071411575327000240730ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,111,87) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] { rv2 ReportVBox #MoveScaled(3,9,107,51) Padding = ReportPadding["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Tag = "**" { rhh ReportHBox #MoveScaled(12,6,84,7) Height = "1cm" Margin = ReportMargin["Top:3mm;Bottom:1mm"] Background = ReportBrush["#00FF00"] } { ReportDrawingArea1 ReportDrawingArea #MoveScaled(10,16,85,27) } } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report5.class000066400000000000000000000000701411575327000236650ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report5.report000066400000000000000000000022701411575327000240770ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,109,80) Padding = ReportPadding["Top:1cm;Bottom:1cm;Left:1cm;Right:1cm"] { ReportLabel1 ReportLabel #MoveScaled(16,1,62,12) Height = "20mm" Brush = ReportBrush["LinearGradient(0.67,0,0.35,0,[#000000,#FFFFFF],[0.33,0.73])"] Font = Font["Bold,+10"] Margin = ReportMargin["Top:5mm;Bottom:5mm;Left:5mm;Right:5mm"] Border = ReportBorder["Top:1mm #000000;Bottom:1mm #000000;Left:1mm #000000;Right:1mm #000000;TopLeftCorner:5mm;TopRightCorner:5mm;BottomRightCorner:5mm;BottomLeftCorner:5mm"] Background = ReportBrush["RadialGradient(0.7,0.14,0.5,0.84,0.18,[#FFFFFF,#000000],[0,1])"] Text = ("Coucou") Alignment = Align.Center } { ReportHBox1 ReportHBox #MoveScaled(19,19,65,16) Height = "8cm" Margin = ReportMargin["Bottom:10mm;Left:2cm;Right:2cm"] Background = ReportBrush["RadialGradient(0.53,0.53,0.5,0.88,0.18,[#000000,#FFFFFF,#0000FF],[0,1,0.5])"] BoxShadow = ReportBoxShadow["2px 2px 10px 0px #55FF7F"] } { ReportVBox1 ReportVBox #MoveScaled(32,44,62,12) Height = "2cm" Margin = ReportMargin["Bottom:10mm"] Expand = True Background = ReportBrush["#FF7F00"] } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report6.class000066400000000000000000000000251411575327000236660ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report6.report000066400000000000000000000012151411575327000240760ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) { ReportLabel1 ReportTextLabel #MoveScaled(8,4,48,48) Border = ReportBorder["Top:2mm LinearGradient(1,1,0,0,[#FF0000,#FFFFFF],[1,0]);Bottom:2mm LinearGradient(1,1,0,0,[#FF0000,#FFFFFF],[1,0]);Left:2mm LinearGradient(1,1,0,0,[#FF0000,#FFFFFF],[1,0]);Right:2mm LinearGradient(1,1,0,0,[#FF0000,#FFFFFF],[1,0]);TopLeftCorner:1mm 0cm;TopRightCorner:5mm 1cm;BottomRightCorner:1mm 15mm;BottomLeftCorner:3mm 7mm"] Text = ("Testtest

        \n\n
        ") Alignment = Align.Center } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report7.class000066400000000000000000000007501411575327000236740ustar00rootroot00000000000000' Gambas class file Public Sub ReportDrawingArea_Layout() End Public Sub ReportDrawingArea1_Layout(Width As Float, Height As Float, Index As Integer) Last.SizeHints = ReportSizeHints.FromString("3cm", "4cm", False) End Public Sub ReportDrawingArea1_Draw(Width As Float, Height As Float, Index As Integer) 'Print "Largeur passée = " & Width 'Print "Paint.Width = " & Paint.Width Draw.line(0, 0, Paint.Width, Paint.Height) End Public Sub Report_Open() End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report7.report000066400000000000000000000004611411575327000241010ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) Padding = ReportPadding["Top:2cm;Bottom:2cm;Left:2cm;Right:2cm"] { ReportDrawingArea1 ReportDrawingArea #MoveScaled(4,8,59,34) Border = ReportBorder["Top:2px #000000;Bottom:2px #000000;Left:2px #000000;Right:2px #000000"] } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report8.class000066400000000000000000000000251411575327000236700ustar00rootroot00000000000000' Gambas class file gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report8.report000066400000000000000000000011201411575327000240730ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) { ReportPanel1 ReportPanel #MoveScaled(1,4,61,53) Expand = True { ReportPanel2 ReportPanel #MoveScaled(16,7,20,14) Left = "23mm" Top = "16mm" Width = "55mm" Height = "38mm" Border = ReportBorder["Top:1px #000000;Bottom:1px #000000;Left:1px #000000;Right:1px #000000;TopLeftCorner:5mm 4mm;TopRightCorner:7mm 15mm;BottomRightCorner:5mm;BottomLeftCorner:5mm 2mm"] Background = ReportBrush["#00FF00"] BoxShadow = ReportBoxShadow["1mm 1mm 6px -1px #000000"] } } } gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report9.class000066400000000000000000000002701411575327000236730ustar00rootroot00000000000000' Gambas class file Public Sub Report_Open() ReportImage1.Image = Image.Load("~/Documents/SCEA BODARD/Banque/Factures Prêt/Prêt N°00000221849/SCB-Distillerie-1-4.jpg") End gambas-3.16.3/comp/src/gb.report2/.src/Tests/old/Report9.report000066400000000000000000000002211411575327000240750ustar00rootroot00000000000000# Gambas Form File 3.0 { Report Report #MoveScaled(0,0,64,64) { ReportImage1 ReportImage #MoveScaled(1,1,53,51) Expand = True } } gambas-3.16.3/comp/src/gb.report2/.src/Tools/000077500000000000000000000000001411575327000205215ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Tools/CPrint.class000066400000000000000000000026701411575327000227540ustar00rootroot00000000000000' Gambas class file Create Static Private $hPrinter As New Printer As "Printer" Private $hReport As Report Static Public Sub InitPrinterFromReport(hPrinter As Printer, hReport As Report) hPrinter.FullPage = True hPrinter.Orientation = hReport.Orientation If hReport.Paper = Printer.Custom Then 'pnlCustom.Enabled = True hPrinter.PaperWidth = Report.UnitTo(TSizeParse[hReport.Width].ToInch(), "in", "mm") hPrinter.PaperHeight = Report.UnitTo(TSizeParse[hReport.Height].ToInch(), "in", "mm") Else hPrinter.Paper = hReport.Paper Endif End Public Sub PrintReport(hReport As Report, Optional MyPrinter As Printer) Dim hImage As Image $hReport = hReport $hReport.Scale = 1 '$hPrint = hReport.Clone() If MyPrinter Then $hPrinter = MyPrinter Else $hPrinter = New Printer Endif Object.Attach($hPrinter, Me, "Printer") InitPrinterFromReport($hPrinter, $hReport) If Not MyPrinter Then If $hPrinter.Configure() Then Return Endif ' The report layout only works on Image, i.e. when DPI = 72 hImage = New Image(1, 1) Paint.Begin(hImage) $hReport.Layout() Paint.End $hPrinter.Print End Public Sub Printer_Draw() Paint.FontScale = 25.4 / 72 * Paint.W / $hPrinter.PaperWidth * 72 / 96 * 96 / $hPrinter.Resolution $hReport.Paint($hPrinter.Page) End Public Sub Printer_Begin() $hPrinter.Count = $hReport.PageCount End Public Sub Printer_End() $hReport = Null End gambas-3.16.3/comp/src/gb.report2/.src/Tools/MUtil.module000066400000000000000000000007231411575327000227640ustar00rootroot00000000000000' Gambas module file Private Dash As Float[] = [2.0, 1.0] Private Dot As Float[] = [1.0, 1.0] Private DashDot As Float[] = [2.0, 1.0, 1.0, 1.0] Private DashDotDot As Float[] = [2.0, 1.0, 1.0, 1.0, 1.0, 1.0] Public Sub GetBorder(iStyle As Integer) As Float[] Select Case iStyle Case Line.Dash Return Dash Case Line.Dot Return Dot Case Line.DashDot Return DashDot Case Line.DashDotDot Return DashDotDot End Select End gambas-3.16.3/comp/src/gb.report2/.src/Types/000077500000000000000000000000001411575327000205255ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Types/Base/000077500000000000000000000000001411575327000213775ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Types/Base/ReportBrush.class000066400000000000000000000117421411575327000247120ustar00rootroot00000000000000' Gambas class file Export Public _Type As Integer Public _X As Float Public _Y As Float Public _X2 As Float Public _Y2 As Float Public _radius As Float Public _Image As Image Public _Color As Integer[] = [0, &HFFFFFF&] Public _Pos As Float[] = [0, 1] Private _ImageDir As String Public Function _PaintBrush(X1 As Integer, Y1 As Integer, X2 As Integer, Y2 As Integer) As PaintBrush Dim hBrush As PaintBrush Dim fradius As Float Dim Width As Integer = X2 - X1 Dim Height As Integer = Y2 - Y1 Select Case Me._Type Case 0 hBrush = Paint.Color(_Color[0]) Case 1 hBrush = paint.Image(_Image, X1, Y1) Case 2 hBrush = paint.LinearGradient(Width * _X, Height * _Y, Width * _X2, Height * _Y2, _Color, _Pos) Case 3 fradius = Width * _radius hBrush = paint.RadialGradient(Width * _X, Height * _Y, fradius, Width * _X2, Height * _Y2, _Color, _Pos) End Select hBrush.Translate(x1, Y1) Return hBrush End Static Public Sub _get(sValue As String) As ReportBrush Dim hBrush As New ReportBrush Dim iPos As Integer Dim sType As String Dim ars As String[] If Not svalue Then Return Null sValue = Trim(sValue) iPos = InStr(sValue, "(") If iPos Then sType = Left(sValue, iPos - 1) 'pas de parenthese de fin If ipos And Not (sValue Ends ")") Then Error.Raise Else If iPos Then svalue = Left(Mid(svalue, ipos + 1), -1) Endif ars = Split(sValue, ",", "[]") Select Case LCase(sType) Case "image" hBrush._Type = 1 hBrush._Image = Image.Load(Replace(ars[0], "\"", "")) hBrush._ImageDir = ars[0] Case "radialgradient" hBrush._Type = 3 hBrush._X = CFloat(ars[0]) hBrush._Y = CFloat(ars[1]) hBrush._Radius = CFloat(ars[2]) hBrush._X2 = CFloat(ars[3]) hBrush._Y2 = CFloat(ars[4]) hBrush._Color = GetIntegerArray(ars[5]) hBrush._Pos = GetFloatArray(ars[6]) Case "lineargradient" hBrush._Type = 2 hBrush._X = CFloat(ars[0]) hBrush._Y = CFloat(ars[1]) hBrush._X2 = CFloat(ars[2]) hBrush._Y2 = CFloat(ars[3]) hBrush._Color = GetIntegerArray(ars[4]) hBrush._Pos = GetFloatArray(ars[5]) Case Else 'correction de l'hexon '= Val(Replace(ars[0], "#", "&H") & "00&") If ars[0] Begins "#" Then ars[0] = Mid(ars[0], 2) hBrush._Color[0] = Val("&H" & IIf(Len(ars[0]) = 8, ars[0], 00 & ars[0])) End Select Return hBrush Finally If hBrush._Color.Count = 0 Then hBrush._Color = [0, &hFFFFFF&] If hBrush._Color.Count < 2 Then hBrush._Color.Add(&hFFFFFF&) If hBrush._Pos.Count < 2 Then hBrush._Pos = [0.0, 1.0] Catch Return hBrush End Static Private Function GetIntegerArray(sValue As String) As Integer[] Dim ari As New Integer[] Dim s As String For Each s In Split(sValue) If s Begins "#" Then s = Mid(s, 2) ari.Add(Val("&H" & IIf(Len(s) = 8, s, "00" & s))) Next Return ari End Static Private Function GetFloatArray(sValue As String) As Float[] Dim arf As New Float[] Dim s As String For Each s In Split(sValue) arf.Add(CFloat(s)) Next Return arf End Public Function ToString() As String Dim i As Integer Dim f As Float Dim sValue As String Select Case _Type Case 0 sValue = "&H" & Hex(_Color[0], 8) & "&" Case 2, 3 If _Type = 3 Then sValue = "RadialGradient(" & _X & "," & _Y & "," & _Radius & "," & _X2 & "," & _Y2 & ",[" Else sValue = "LinearGradient(" & _X & "," & _Y & "," & _X2 & "," & _Y2 & ",[" Endif For Each i In _Color sValue &= "&H" & Hex(i, 6) & "&," Next sValue = Left(sValue, -1) sValue &= "],[" For Each f In _Pos sValue &= f & "," Next sValue = Left(sValue, -1) sValue &= "])" Case 1 sValue = "Image(" & _ImageDir & ")" End Select Return svalue End Static Public Function Color(iColor As Integer) As ReportBrush Dim hBrush As New ReportBrush hBrush._Color[0] = iColor hBrush._Type = 0 Return hBrush End Static Public Function LinearGradient(X As Float, Y As Float, X2 As Float, Y2 As Float, aColor As Integer[], aPos As Float[]) As ReportBrush Dim hBrush As New ReportBrush hBrush._X = X hBrush._Y = Y hBrush._X2 = X2 hBrush._Y2 = Y2 hBrush._Color = aColor hBrush._Pos = aPos hBrush._Type = 2 Return hBrush End Static Public Function RadialGradient(X As Float, Y As Float, Radius As Float, X2 As Float, Y2 As Float, aColor As Integer[], aPos As Float[]) As ReportBrush Dim hBrush As New ReportBrush hBrush._X = X hBrush._Y = Y hBrush._X2 = X2 hBrush._Y2 = Y2 hBrush._radius = Radius hBrush._Color = aColor hBrush._Pos = aPos hBrush._Type = 3 Return hBrush End Static Public Function Image(hImage As Image) As ReportBrush Dim hBrush As New ReportBrush hBrush._Image = hImage hBrush._Type = 1 Return hBrush End gambas-3.16.3/comp/src/gb.report2/.src/Types/Base/ReportMargin.class000066400000000000000000000014651411575327000250450ustar00rootroot00000000000000' Gambas class file Export Inherits ReportPadding Static Public Sub _Get(Value As String) As ReportMargin Dim hMargin As New ReportMargin Dim hSize As TSizeParse Dim s As String Dim ars As String[] For Each s In Split(Value, ";") ars = Scan(s, "*:*") If ars.count > 1 Then Select Case LCase(ars[0]) Case "left" hMargin.Left = ars[1] Case "top" hMargin.top = ars[1] Case "bottom" hMargin.bottom = ars[1] Case "right" hMargin.Right = ars[1] Case Else End Select Else Try hSize = New TSizeParse(s) If hSize <> Null Then hMargin.Left = s hMargin.Right = s hMargin.Bottom = s hMargin.Top = s Endif Endif Next Return hMargin End gambas-3.16.3/comp/src/gb.report2/.src/Types/Base/ReportPadding.class000066400000000000000000000037641411575327000252020ustar00rootroot00000000000000' Gambas class file Export '>>>>>>>>>>>>>>>>>>>>>> PUBLIC VARIABLES >>>>>>>>>>>>>>>>>>>>>>>>> Public {Left} As String Public Right As String Public Top As String Public Bottom As String Public _Left As Float Public _Right As Float Public _Top As Float Public _Bottom As Float '>>>>>>>>>>>>>>>>>>>>>>>>>> PROPERTIES >>>>>>>>>>>>>>>>>>>>>>>>>>> Property Read _Width As Float Property Read _Height As Float '>>>>>>>>>>>>>>>>>>>>>> PRIVATE VARIABLES >>>>>>>>>>>>>>>>>>>>>>>> '##################### PUBLIC PROCEDURES ######################### Public Sub IsActive() As Boolean If {Left} Or If Top Or If Right Or If Bottom Then Return True Return False End Static Public Sub _Get(Value As String) As ReportPadding Dim hPadding As New ReportPadding Dim hSize As TSizeParse Dim s As String Dim ars As String[] For Each s In Split(Value, ";") ars = Scan(s, "*:*") If ars.count > 1 Then Select Case LCase(ars[0]) Case "left" hPadding.Left = ars[1] Case "top" hPadding.top = ars[1] Case "bottom" hPadding.bottom = ars[1] Case "right" hPadding.Right = ars[1] Case Else End Select Else Try hSize = New TSizeParse(s) If hSize <> Null Then hPadding.Left = s hPadding.Right = s hPadding.Bottom = s hPadding.Top = s Endif Endif Next Return hPadding End Public Sub _NormalizeUnits() Dim hSizeParse As TSizeParse hSizeParse = TSizeParse[{Left}] _Left = hSizeParse.ToInch() hSizeParse = TSizeParse[Top] _Top = hSizeParse.ToInch() hSizeParse = TSizeParse[Right] _Right = hSizeParse.ToInch() hSizeParse = TSizeParse[Bottom] _Bottom = hSizeParse.ToInch() End '##################### PRIVATE PROCEDURES ######################## '######################## PROPERTIES ############################# Private Function _Width_Read() As Float Return _Left + _Right End Private Function _Height_Read() As Float Return _top + _Bottom End gambas-3.16.3/comp/src/gb.report2/.src/Types/Border/000077500000000000000000000000001411575327000217425ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Types/Border/ReportBorder.class000066400000000000000000000110431411575327000254010ustar00rootroot00000000000000' Gambas class file Export '>>>>>>>>>>>>>>>>>>>>>> PUBLIC VARIABLES >>>>>>>>>>>>>>>>>>>>>>>>> Static Public Const None As Integer = 0 Static Public Const Solid As Integer = 1 Public _Left As Float Public _Right As Float Public _Top As Float Public _Bottom As Float Public Style As Integer '>>>>>>>>>>>>>>>>>>>>>>>>>> PROPERTIES >>>>>>>>>>>>>>>>>>>>>>>>>>> Property Read Top As _ReportBorderSide Property Read {Left} As _ReportBorderSide Property Read bottom As _ReportBorderSide Property Read {Right} As _ReportBorderSide Property Read RoundCorner As _ReportRoundCorner Property Width As String Property Brush As ReportBrush Property Read _Height As Float Property Read _Width As Float '>>>>>>>>>>>>>>>>>>>>>> PRIVATE VARIABLES >>>>>>>>>>>>>>>>>>>>>>>> ' Static Private $aShadowStyle As String[] = ["none", "solid", "gradiant"] ' Static Private $aAlign As String[] = Classes["Align"].Symbols Private hTop As New _ReportBorderSide Private hBottom As New _ReportBorderSide Private hLeft As New _ReportBorderSide Private hRight As New _ReportBorderSide Private hRCorner As New _ReportRoundCorner '##################### PUBLIC PROCEDURES ######################### Static Public Function _get(sValue As String) As ReportBorder Dim hReportBorder As New ReportBorder Dim sBorder As String Dim aScan As String[] If Not sValue Then Return hReportBorder hReportBorder.Style = ReportBorder.Solid hReportBorder.RoundCorner._Active = False For Each sBorder In Split(sValue, ";") aScan = Scan(sBorder, "*:*") Select Case LCase(Trim(aScan[0])) Case "border" FillObject(hReportBorder, aScan[1]) Case "left" FillObject(hReportBorder.Left, aScan[1]) Case "right" FillObject(hReportBorder.Right, aScan[1]) Case "bottom" FillObject(hReportBorder.bottom, aScan[1]) Case "top" FillObject(hReportBorder.Top, aScan[1]) Case "topleftcorner" hReportBorder.RoundCorner.TopLeft = aScan[1] Case "toprightcorner" hReportBorder.RoundCorner.TopRight = aScan[1] Case "bottomleftcorner" hReportBorder.RoundCorner.BottomLeft = aScan[1] Case "bottomrightcorner" hReportBorder.RoundCorner.BottomRight = aScan[1] End Select Next Finally Return hReportBorder End Public Function ToString() As String Dim aValue As New String[] If Me.Style = ReportBorder.None Then Return 'aValue.Add("None") 'If Me.Style = ReportBorder.Solid Then aValue.Add("Solid") aValue.Add(Me.Width) If Me.Top Then aValue.Add("Top") If Me.Bottom Then aValue.Add("Bottom") If Me.Left Then aValue.Add("Left") If Me.Right Then aValue.Add("Right") aValue.Add("#" & Hex(Me.Color, 6)) Return aValue.Join() End Public Sub _NormalizeUnits() Dim hSizeParse As TSizeParse hSizeParse = New TSizeParse(hLeft.Width) _Left = hSizeParse.GetValue() hSizeParse = New TSizeParse(hRight.Width) _Right = hSizeParse.GetValue() hSizeParse = New TSizeParse(hTop.Width) _Top = hSizeParse.GetValue() hSizeParse = New TSizeParse(hBottom.Width) _Bottom = hSizeParse.GetValue() hRCorner._NormalizeUnits() End '##################### PRIVATE PROCEDURES ######################## Static Private Sub FillObject(hObj As Object, sValue As String) Dim sBrush As String For Each sBrush In Split(sValue, " ") If IsDigit(Left(sBrush)) Then Try hObj.Width = sBrush Else Try hObj.Brush = ReportBrush[sBrush] If hObj.Brush = Null Then hObj.Brush = ReportBrush["&H0"] Endif Next End '######################## PROPERTIES ############################# Private Function Top_Read() As _ReportBorderSide Return hTop End Private Function Left_Read() As _ReportBorderSide Return hLeft End Private Function bottom_Read() As _ReportBorderSide Return hBottom End Private Function Width_Read() As String Return hLeft.Width End Private Sub Width_Write(Value As String) hLeft.Width = Value hTop.Width = Value hBottom.Width = Value hRight.Width = Value End Private Function Brush_Read() As ReportBrush Return hLeft.Brush End Private Sub Brush_Write(Value As ReportBrush) hLeft.Brush = Value hTop.Brush = Value hBottom.Brush = Value hRight.Brush = Value End Private Function Right_Read() As _ReportBorderSide Return hRight End Private Function RoundCorner_Read() As _ReportRoundCorner Return hRCorner End Private Function _Height_Read() As Float Return _Top + _Bottom End Private Function _Width_Read() As Float Return _Left + _Right End gambas-3.16.3/comp/src/gb.report2/.src/Types/Border/_ReportBorderSide.class000066400000000000000000000004201411575327000263420ustar00rootroot00000000000000' Gambas class file Export Public Width As String Public Brush As New ReportBrush Public Round1 As String Public Round2 As String Public _Width As Float Public Sub _NormalizeUnits() Dim hSizeParse As New TSizeParse(Width) _Width = hSizeParse.GetValue() End gambas-3.16.3/comp/src/gb.report2/.src/Types/Border/_ReportRoundCorner.class000066400000000000000000000054311411575327000265670ustar00rootroot00000000000000' Gambas class file Export Public _Active As Boolean = False Private $sTopLeft As String = "0cm" Private $sTopRight As String = "0cm" Private $sBottomLeft As String = "0cm" Private $sBottomRight As String = "0cm" Property TopLeft As String Property TopRight As String Property BottomLeft As String Property BottomRight As String Public _TopLeft1 As Float Public _TopLeft2 As Float Public _TopRight1 As Float Public _TopRight2 As Float Public _BottomLeft1 As Float Public _BottomLeft2 As Float Public _BottomRight1 As Float Public _BottomRight2 As Float Private Function TopLeft_Read() As String Return $sTopLeft End Private Sub TopLeft_Write(Value As String) $sTopLeft = Value _Active = True End Private Function TopRight_Read() As String Return $sTopRight End Private Sub TopRight_Write(Value As String) $sTopRight = Value _Active = True End Private Function BottomLeft_Read() As String Return $sBottomLeft End Private Sub BottomLeft_Write(Value As String) $sBottomLeft = Value _Active = True End Private Function BottomRight_Read() As String Return $sBottomRight End Private Sub BottomRight_Write(Value As String) $sBottomRight = Value _Active = True End Public Sub _NormalizeUnits() Dim aEl As String[] Dim hSizeParse As TSizeParse ael = Split($sTopLeft, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _TopLeft1 = hSizeParse.GetValue() _TopLeft2 = _TopLeft1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _TopLeft1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _TopLeft2 = hSizeParse.GetValue() Endif Endif ael = Split($sTopRight, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _TopRight1 = hSizeParse.GetValue() _TopRight2 = _TopRight1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _TopRight1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _TopRight2 = hSizeParse.GetValue() Endif Endif ael = Split($sBottomRight, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _BottomRight1 = hSizeParse.GetValue() _BottomRight2 = _BottomRight1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _BottomRight1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _BottomRight2 = hSizeParse.GetValue() Endif Endif ael = Split($sBottomLeft, " ") If ael.Count = 1 Then hSizeParse = New TSizeParse(ael[0]) _BottomLeft1 = hSizeParse.GetValue() _BottomLeft2 = _BottomLeft1 Else If ael.Count = 2 Then hSizeParse = New TSizeParse(ael[0]) _BottomLeft1 = hSizeParse.GetValue() hSizeParse = New TSizeParse(ael[1]) _BottomLeft2 = hSizeParse.GetValue() Endif Endif End gambas-3.16.3/comp/src/gb.report2/.src/Types/BoxShadow/000077500000000000000000000000001411575327000224235ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Types/BoxShadow/ReportBoxShadow.class000066400000000000000000000076501411575327000265540ustar00rootroot00000000000000' Gambas class file Export Private $aBoxShadow As New _ReportBoxShadow[] Property XOffset As String Property YOffset As String Property Blur As String Property Spread As String Property Inset As Boolean Property Color As Integer Property Read Count As Integer Property Read Max As Integer Property Read _XOffset As Float Property Read _YOffset As Float Property Read _Blur As Float Property Read _Spread As Float Property Read _Active As Boolean Public Sub _new() Dim hBoxShadow As New _ReportBoxShadow $aBoxShadow.Add(hBoxShadow) End Static Public Function _get(sValue As String) As ReportBoxShadow Dim hBoxShadow As New ReportBoxShadow Dim s As String Dim i As Integer For Each s In Split(sValue, " ") If IsDigit(Left(s)) Or If Left(s) = "-" Then Select Case i Case 0 hBoxShadow.XOffset = s Case 1 hBoxShadow.YOffset = s Case 2 hBoxShadow.Blur = s Case 3 hBoxShadow.Spread = s End Select Inc i Continue Endif If LCase(s) = "inset" Then hBoxShadow.Inset = True Continue Endif Try hBoxShadow.Color = Val(Replace(s, "#", "&H")) Next Return hBoxShadow End ' Public Function _get(Index As Integer) As _ReportBoxShadow ' ' Return $aBoxShadow[Index] ' ' End Public Sub Add(Optional XOffset As String, YOffset As String, iColor As Integer, Spread As String, Blur As String, Inset As Boolean) Dim hBoxShadow As New _ReportBoxShadow If XOffset Then hBoxShadow.XOffset = XOffset If YOffset Then hBoxShadow.YOffset = YOffset If iColor Then hBoxShadow.Color = iColor If SPread Then hBoxShadow.Spread = Spread If Blur Then hBoxShadow.Blur = Blur hBoxShadow.Inset = Inset $aBoxShadow.Add(hBoxShadow) End Public Sub Remove(Index As Integer) $aBoxShadow.Remove(Index) End Private Function XOffset_Read() As String Return $aBoxShadow[0].XOffset End Private Sub XOffset_Write(Value As String) $aBoxShadow[0].XOffset = Value End Private Function YOffset_Read() As String Return $aBoxShadow[0].YOffset End Private Sub YOffset_Write(Value As String) $aBoxShadow[0].YOffset = Value End Private Function Blur_Read() As String Return $aBoxShadow[0].Blur End Private Sub Blur_Write(Value As String) $aBoxShadow[0].Blur = Value End Private Function Spread_Read() As String Return $aBoxShadow[0].Spread End Private Sub Spread_Write(Value As String) $aBoxShadow[0].Spread = Value End Private Function Inset_Read() As Boolean Return $aBoxShadow[0].Inset End Private Sub Inset_Write(Value As Boolean) $aBoxShadow[0].Inset = Value End Private Function Color_Read() As Integer Return $aBoxShadow[0].Color End Private Sub Color_Write(Value As Integer) $aBoxShadow[0].Color = Value End Private Function Count_Read() As Integer Return $aBoxShadow.Count End Private Function Max_Read() As Integer Return $aBoxShadow.Max End Public Sub _NormalizeUnits() Dim i As Integer 'Dim SizeParse As TSizeParse For i = 0 To $aBoxShadow.Max 'With $aBoxShadow[i]._XOffset = TSizeParse[$aBoxShadow[i].XOffset].GetValue() $aBoxShadow[i]._YOffset = TSizeParse[$aBoxShadow[i].YOffset].GetValue() $aBoxShadow[i]._Spread = TSizeParse[$aBoxShadow[i].Spread].GetValue() $aBoxShadow[i]._Blur = TSizeParse[$aBoxShadow[i].Blur].GetValue() '._Blur = TSizeParse[.Blur].GetValue() 'End With Next End Private Function _XOffset_Read() As Float Return $aBoxShadow[0]._XOffset End Private Function _YOffset_Read() As Float Return $aBoxShadow[0]._YOffset End Private Function _Blur_Read() As Float Return $aBoxShadow[0]._Blur End Private Function _Spread_Read() As Float Return $aBoxShadow[0]._Spread End Private Function _Active_Read() As Boolean Return Not ($aBoxShadow[0]._XOffset = 0 And $aBoxShadow[0]._YOffset = 0 And $aBoxShadow[0]._Blur = 0 And $aBoxShadow[0]._Spread = 0) End gambas-3.16.3/comp/src/gb.report2/.src/Types/BoxShadow/_ReportBoxShadow.class000066400000000000000000000004371411575327000267070ustar00rootroot00000000000000' Gambas class file Export Public XOffset As String '= "8mm" Public YOffset As String '= "2mm" Public Spread As String Public Inset As Boolean Public Color As Integer Public Blur As String Public _XOffset As Float Public _YOffset As Float Public _Spread As Float Public _Blur As Float gambas-3.16.3/comp/src/gb.report2/.src/Types/ReportSizeHints.class000066400000000000000000000011741411575327000246730ustar00rootroot00000000000000' Gambas class file Export Public Width As Float Public Height As Float Public NotFinished As Boolean Static Public Function _call(Width As Float, Height As Float, Optional NotFinished As Float) As ReportSizeHints Dim hSH As New ReportSizeHints hSH.Width = Width hSH.Height = Height hSH.NotFinished = NotFinished Return hSH End Static Public Function FromString(Width As String, Height As String, Optional NotFinished As Boolean) As ReportSizeHints Dim hSH As New ReportSizeHints hSH.Width = TSizeParse[Width].ToInch() hSH.Height = TSizeParse[Height].ToInch() hSH.NotFinished = NotFinished Return hSH End gambas-3.16.3/comp/src/gb.report2/.src/Types/ReportSizeParser.class000066400000000000000000000032111411575327000250340ustar00rootroot00000000000000' Gambas class file ' Gambas class file Export Fast '>>>>>>>>>>>>>>>>>>>>>> PUBLIC VARIABLES >>>>>>>>>>>>>>>>>>>>>>>>> Public Value As Float Public Unit As String '>>>>>>>>>>>>>>>>>>>>>>>>>> PROPERTIES >>>>>>>>>>>>>>>>>>>>>>>>>>> '>>>>>>>>>>>>>>>>>>>>>> PRIVATE VARIABLES >>>>>>>>>>>>>>>>>>>>>>>> '##################### PUBLIC PROCEDURES ######################### '' Create a new size object from its description. '' #bAllowRelative# can be TRUE to allow the use of "%" as unit. Public Sub _new(Size As String, Optional bAllowRelative As Boolean) Dim I As Integer Dim sCar As String If Not size Then Unit = "cm" Value = 0 Endif Size = Trim(Size) If Not Size Then Unit = "px" Return Endif For I = 1 To Len(Size) sCar = Mid$(Size, I, 1) If Not IsDigit(sCar) And If sCar <> "-" And If sCar <> "." Then Break Next Value = CFloat(Left$(Size, I - 1)) Unit = Trim(Mid$(Size, I)) If Not Unit Then Unit = "px" If Not Report.AllowedUnits.Exist(Unit) Then If Not bAllowRelative Or Unit <> "%" Then Error.Raise("Unknown unit") Endif Endif End Public Sub ToInch() As Float Return Report.UnitToInch(Value, Unit) End Public Sub IsRelative() As Boolean Return Unit = "%" End Public Sub GetValue() As Float If IsRelative() Then Return Value Else Return ToInch() Endif End Static Public Sub _get(Size As String) As TSizeParse Dim hSize As TSizeParse = New TSizeParse(Size) Return hSize End '##################### PRIVATE PROCEDURES ######################## '######################## PROPERTIES ############################# gambas-3.16.3/comp/src/gb.report2/.src/Types/TControl.class000066400000000000000000000000641411575327000233200ustar00rootroot00000000000000' Gambas class file Inherits _ReportVirtualControl gambas-3.16.3/comp/src/gb.report2/.src/Types/TSizeParse.class000066400000000000000000000000671411575327000236100ustar00rootroot00000000000000' Gambas class file Export Inherits ReportSizeParser gambas-3.16.3/comp/src/gb.report2/.src/Types/_ReportVirtualControl.class000066400000000000000000000042011411575327000260730ustar00rootroot00000000000000' Gambas class file Export 'Fast '>>>>>>>>>>>>>>>>>>>>>> PUBLIC VARIABLES >>>>>>>>>>>>>>>>>>>>>>>>> Public SizeHint As ReportSizeHints ''Size hints buffer Public _PageChildren As New Collection ''The links between page and objects Public Index As Integer ''Remember the dataindex Public Cache As Variant ''For future data cache '>>>>>>>>>>>>>>>>>>>>>>>>>> PROPERTIES >>>>>>>>>>>>>>>>>>>>>>>>>>> Property Read RealLeft As Float ''Return the left relative position size in Pixel Property Read RealTop As Float ''Return the top relative position size in Pixel Property Read RealWidth As Float ''Return the width in pixel Property Read RealHeight As Float ''Return the height in pixel Property Ctrl As ReportControl ''Return or set the link between real widget and virtual object '>>>>>>>>>>>>>>>>>>>>>> PRIVATE VARIABLES >>>>>>>>>>>>>>>>>>>>>>>> Private $iCtrl As Integer Private fX As Float Private fY As Float Private fW As Float Private fH As Float '##################### PUBLIC PROCEDURES ######################### ''Define the virtual widget size in internal unit (cm) Public Function _SetGeometry(X As Float, Y As Float, W As Float, H As Float) As Float fX = X fY = Y fW = W fH = H End '##################### PRIVATE PROCEDURES ######################## '######################## PROPERTIES ############################# Private Function Ctrl_Read() As ReportControl Return ReportControl._ObjectFromId[$iCtrl] End Private Sub Ctrl_Write(Value As ReportControl) $iCtrl = Value.id End Private Function RealLeft_Read() As Float Return ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fX) 'ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fX) End Private Function RealTop_Read() As Float Return ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fY) End Private Function RealWidth_Read() As Float Return ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fX + fW) - ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fX) End Private Function RealHeight_Read() As Float Return ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fY + fH) - ReportControl._ObjectFromId[$iCtrl].Report._ToPixels(fY) End gambas-3.16.3/comp/src/gb.report2/.src/Viewer/000077500000000000000000000000001411575327000206625ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/.src/Viewer/FPreview.class000066400000000000000000000255311411575327000234460ustar00rootroot00000000000000' Gambas class file Private $aModeButtons As New ToolButton[] Private bFlag As Boolean Private $hPrinter As New Printer As "Printer" 'Private $iCurPrinterResolution As Integer Private $bVerif As Boolean Private $bPrinting As Boolean Private $iFileRes As Integer = 150 Static Property Path As String Use $sPath Static Public Function Run(hReport As Report) Dim hFPreview As FPreview hFpreview = New FPreview hFPreview.SetReport(hReport) hFPreview.ShowModal() End Public Sub _new() Dim s As String Dim hMenu As Menu For Each s In Printer.List cmbPrinter.Add(s) hMenu = New Menu(mnuPrint) As "mnuPrintPrinter" hMenu.Tag = s hMenu.Text = s Next End Private Sub SelectPrinter(Optional sName As String) Dim iPrinter As Integer If sName Then $hPrinter.Name = sName Else $hPrinter.Name = Printer.Default Endif Object.Lock(cmbPrinter) iPrinter = Max(0, cmbPrinter.List.Find($hPrinter.Name)) Try cmbPrinter.Index = iPrinter Object.Unlock(cmbPrinter) 'NOTE: force the printer fullpage mode because it make error on report placement $hPrinter.FullPage = True $hPrinter.Duplex = cmbDuplex.Index tgbGrayScale.Value = $hPrinter.GrayScale tgbFullPage.Value = $hPrinter.FullPage tgbReverseCopies.Value = $hPrinter.ReverseOrder tgbCollateCopies.Value = $hPrinter.CollateCopies End Public Sub SetReport(hReport As Report) View.Report = hReport GetValuesFromReport() End Private Sub GetValuesFromReport() cmbPaper.Index = View.Report.Paper CPrint.InitPrinterFromReport($hPrinter, View.Report) If View.Report.Paper = Printer.Custom Then pnlCustom.Enabled = True Endif cmbOrientation.Index = $hPrinter.Orientation cmbDuplex.Index = $hPrinter.Duplex cmbPaper.Index = $hPrinter.Paper View.Refresh Object.Lock(spWidth) spWidth.Value = $hPrinter.PaperWidth Object.Unlock(spWidth) Object.Lock(spHeight) spHeight.Value = $hPrinter.PaperHeight Object.Unlock(spHeight) End Public Sub sldZoom_Change() Dim hButton As ToolButton View.ScaleMode = View.Custom View.Zoom = sldZoom.Value / 100 'lblZoom.Text = Str(Slider1.Value) & " %" bFlag = True For Each hButton In $aModeButtons hButton.Value = False Next bFlag = False End Public Sub View_Zoom() Object.Lock(sldZoom) sldZoom.Value = View.Zoom * 100 Object.Unlock(sldZoom) lblZoom.Text = Str(sldZoom.Value) & " %" End Public Sub Mode_Click() Dim hButton As ToolButton Dim hCurButton As ToolButton If bFlag Then Return bFlag = True hCurButton = Last For Each hButton In $aModeButtons If hButton = hCurButton Then hButton.Value = True Else hButton.Value = False Endif Next bFlag = False 'View.ScaleMode = hCurButton.Tag View.ScaleMode = hCurButton.Tag 'View.Refresh 'View.Refresh End Public Sub tgbGrayScale_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.GrayScale = Last.Value View._GrayScale = Last.Value View.Refresh() End Public Sub tgbFullPage_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.FullPage = Last.Value End Public Sub tgbReverseCopies_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.ReverseOrder = Last.value End Public Sub tgbCollateCopies_Click() 'Last.Background = IIf(Last.Value, Color.Gray, Color.Default) $hPrinter.CollateCopies = Last.Value End Public Sub cmbOrientation_Click() If View.Report.Orientation = Last.Index Then Return View.Report.Orientation = Last.Index 'View.Report.Refresh View.Refresh GetValuesFromReport End Public Sub cmbPaper_Click() Dim i As Integer = Last.Index 'Print "id "; View.Report.paper If View.Report.Paper = i Then Return View.Report.Paper = i If i = 0 Then pnlCustom.Visible = True Else pnlCustom.Visible = False View.Refresh GetValuesFromReport Endif End Public Sub cmbDuplex_Click() $hPrinter.Duplex = Last.index End Public Sub txtFile_Click() Dialog.Path = txtFile.Text Dialog.Filter = ["*.pdf", ("PDF files"), "*.ps", ("Postscript files")] If Dialog.SaveFile() Then Return txtFile.Text = Dialog.Path $bVerif = True $hPrinter.OutputFile = Dialog.Path End Private Sub RefreshPrintButton() If $bPrinting Then btnPrint.Picture = Picture["icon:/small/cancel"] btnPrint.Text = ("Cancel") Else btnPrint.Picture = Picture[If(tabPrint.Index = 0, "icon:/small/printer", "icon:/small/pdf")] btnPrint.Text = ("Print") Endif btnPrint2.Picture = btnPrint.Picture btnPrint2.Text = btnPrint.Text End Public Sub tabPrint_Click() If tabPrint.Index = 0 Then $hPrinter.OutputFile = "" $hPrinter.Name = cmbPrinter.Text $hPrinter.Resolution = 1200 Else $hPrinter.OutputFile = txtFile.Text $hPrinter.Resolution = $iFileRes Object.Lock(cmbResolution) pnlResolution.Enabled = True Try cmbResolution.Index = Max(cmbResolution.Find(Str($iFileRes)), 0) Object.Unlock(cmbResolution) Endif RefreshPrintButton End Public Sub TextBox1_Change() View.Range = TextBox1.Text End Public Sub TextBox1_Click() Last.Text = "" 'TextBox1_Change End Public Sub spWidth_Change() View.Report.Width = Str(Last.Value) & "mm" View.Refresh End Public Sub spHeight_Change() View.Report.Height = Str(Last.Value) & "mm" View.Refresh End Public Sub Button2_Click() View._ForceLayout End Public Sub cmbPrinter_Click() SelectPrinter(Last.Text) End Public Sub btnPrint_Click() Dim iReturn As Integer If btnPrint.Tag Then $hPrinter.Cancel btnPrint.Tag = False Else If Not View.Report Then Return If tabPrint.Index = 1 Then If Not $hPrinter.OutputFile Then txtFile_Click If Not $hPrinter.OutputFile Then Return If Exist($hPrinter.OutputFile) And Not $bVerif Then iReturn = Message.Warning("" & $hPrinter.OutputFile & "\n\n" & ("This file already exists.\nDo you want to replace it?"), ("Replace"), ("Cancel")) If iReturn = 2 Then Return Try Kill $hPrinter.OutputFile $bVerif = False Endif Endif $bPrinting = True btnPrint.Tag = True RefreshPrintButton $hPrinter.Print Endif End Public Sub Printer_Begin() hbZoom.Hide hbPrinting.Show Inc Application.Busy ProgressBar1.Value = 0 ProgressBar1.Pulse = True lblPrint.Text = ("Layout...") Paint.FontScale = 25.4 / 72 * Paint.W / $hPrinter.PaperWidth * 72 / 96 * 96 / $hPrinter.Resolution End Public Sub Printer_Paginate() If View.Report._LayoutNotFinished Then View.LockLayout View.Report.Layout(View.Report.PageCount) Else $hPrinter.Count = View.PageCount ProgressBar1.Pulse = False lblPrint.Text = ("Printing...") View.UnlockLayout Endif End Public Sub Printer_Draw() 'Debug Paint.W;; $hPrinter.PaperWidth;; $hPrinter.Resolution;; Paint.FontScale If View.RangePages.Count = 0 Then View.Report.Paint($hPrinter.Page) Else View.Report.Paint(View.RangePages[$hPrinter.Page - 1] + 1) Endif ProgressBar1.Value = $hPrinter.Page / View.PageCount End Public Sub Printer_End() 'View.UnlockLayout hbPrinting.Hide hbZoom.Show Dec Application.Busy btnPrint.Tag = False $bPrinting = False RefreshPrintButton End Public Sub TextBox2_Change() $hPrinter.NumCopies = Last.Value End Public Sub Form_Close() If Component.IsLoaded("gb.settings") Then 'Settings.Write(Me, "FPreview") Settings.Write(View, "View") Settings["FPreview/OutputFile"] = txtFile.Text Settings["FPreview/Printer"] = $hPrinter.Name Settings["FPreview/PrintToFile"] = tabPrint.Index = 1 Settings["FPreview/Duplex"] = cmbDuplex.Index Settings["FPreview/GrayScale"] = tgbGrayScale.Value Settings["FPreview/ReverseOrder"] = tgbReverseCopies.Value Settings["FPreview/CollateCopies"] = tgbCollateCopies.Value Settings["FPreview/FileResolution"] = $iFileRes Settings.Save() Endif FPreview.Path = IIf(tabPrint.Index = 1, txtFile.Text, "") End Public Sub Form_Open() Dim hButton As ToolButton $aModeButtons = [btnOnePage, btnTwoPages, btnFullWidth, btnRealSize] If Component.IsLoaded("gb.settings") Then 'Settings.Read(Me, "FPreview") Settings.Read(View, "View") If View.ScaleMode = View.Custom Then sldZoom.Value = View.Zoom Else For Each hButton In $aModeButtons hButton.Value = False Next $aModeButtons[View.ScaleMode - 1].Value = True Endif txtFile.Text = Settings["FPreview/OutputFile", User.Home &/ "report.pdf"] $hPrinter.OutputFile = txtFile.Text $hPrinter.Name = Settings["FPreview/Printer"] If Settings["FPreview/PrintToFile"] = True Then tabPrint.Index = 1 Endif Try $hPrinter.Duplex = Settings["FPreview/Duplex"] Try $hPrinter.GrayScale = Settings["FPreview/GrayScale"] Try $hPrinter.ReverseOrder = Settings["FPreview/ReverseOrder"] Try $hPrinter.CollateCopies = Settings["FPreview/CollateCopies"] Try $iFileRes = Settings["FPreview/FileResolution", 150] Try $hPrinter.Duplex = Settings["FPreview/Duplex", Printer.Simplex] = cmbDuplex.Index Endif SelectPrinter($hPrinter.Name) btnPrint.Tag = False $bPrinting = False btnOnePage.Value = True tabPrint_Click If FPreview.Path And If Not IsDir(FPreview.Path) Then tabPrint.Index = 1 txtFile.Text = FPreview.Path Endif End Public Sub btnZoomIn_Click() sldZoom.Value = 100 * 2 ^ (Int((Log2(sldZoom.Value / 100) + 0.5) * 2 + 0.5) / 2) + 0.5 End Public Sub btnZoomOut_Click() sldZoom.Value = 100 * 2 ^ (Int((Log2(sldZoom.Value / 100)) * 2 - 0.5) / 2) + 0.5 End Public Sub panSide_Arrange() With btnCloseSide .Move(.Parent.W - .W, 0, Desktop.Scale * 4, Desktop.Scale * 4) End With End Public Sub btnCloseSide_Click() panSide.Hide btnShowSide.Show btnPrint2.Show End Public Sub btnShowSide_Click() panSide.Show btnShowSide.Hide btnPrint2.Hide End Public Sub mnuPrint_Show() Dim hMenu As Menu mnuPrintPDF.Checked = tabPrint.Index = 1 For Each hMenu In mnuPrint.Children If Not hMenu.Tag Then Continue If tabPrint.Index = 1 Then hMenu.Checked = False Else hMenu.Checked = hMenu.Text = cmbPrinter.Text Endif Next End Public Sub mnuPrintPDF_Click() tabPrint.Index = 1 txtFile_Click End Public Sub mnuPrintPrinter_Click() tabPrint.Index = 0 cmbPrinter.Text = Last.Text End Public Sub spResolution_Change() End Public Sub SpinBar1_Change() Last.Text = "toto" & Last.Value End Public Sub cmbResolution_Click() If tabPrint.Index = 0 Then $hPrinter.Resolution = 1200 Else $iFileRes = cmbResolution.Text $hPrinter.Resolution = $iFileRes Endif End gambas-3.16.3/comp/src/gb.report2/.src/Viewer/FPreview.form000066400000000000000000000220351411575327000233000ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,107,78) Text = ("Report preview") Arrangement = Arrange.Horizontal { mnuPrint Menu Visible = False { mnuPrintPDF Menu Text = ("Print to file") & "..." } { Menu1 Menu } } { Panel1 VBox MoveScaled(1,1,63,72) Expand = True Invert = True { View ReportView MoveScaled(1,1,50,48) Background = Color.LightForeground Tag = "3" Mouse = Mouse.SizeAll Expand = True } { hbPrinting HBox MoveScaled(1,57,55,4) Visible = False Spacing = True Indent = True { lblPrint Label MoveScaled(11,0,14,4) AutoResize = True Text = ("Printing") & "..." } { Panel11 Panel MoveScaled(26,0,25,4) Expand = True Arrangement = Arrange.Fill Margin = True Padding = 4 { ProgressBar1 ProgressBar MoveScaled(0,0,37,3) Expand = True Border = False } } } { hbZoom HBox MoveScaled(1,62,62,4) { Panel2 Panel MoveScaled(0,0,17,4) Expand = True Arrangement = Arrange.Horizontal { btnOnePage ToolButton Mode Name = "btnOnePage" MoveScaled(0,0,4,4) Tag = "1" ToolTip = ("One page") Picture = Picture["icon:/small/page"] Toggle = True } { btnTwoPages ToolButton Mode Name = "btnTwoPages" MoveScaled(4,0,4,4) Tag = "2" ToolTip = ("Two pages") Picture = Picture["icon:/small/page-two"] Toggle = True } { btnFullWidth ToolButton Mode Name = "btnFullWidth" MoveScaled(8,0,4,4) Tag = "3" ToolTip = ("Full width") Picture = Picture["icon:/small/zoom-width"] Toggle = True } { btnRealSize ToolButton Mode Name = "btnRealSize" MoveScaled(12,0,4,4) Tag = "4" ToolTip = ("Real size") Picture = Picture["icon:/small/zoom-normal"] Toggle = True } } { btnZoomOut ToolButton MoveScaled(18,0,4,4) ToolTip = ("Zoom out") Picture = Picture["icon:/small/zoom-out"] } { sldZoom Slider MoveScaled(22,0,19,4) MinValue = 13 MaxValue = 400 Value = 100 } { lblZoom Label MoveScaled(41,0,8,4) Alignment = Align.Center Text = ("100 %") } { btnZoomIn ToolButton MoveScaled(48,0,4,4) ToolTip = ("Zoom in") Picture = Picture["icon:/small/zoom-in"] } { btnPrint2 MenuButton btnPrint Name = "btnPrint2" MoveScaled(51,0,8,4) Visible = False AutoResize = True Text = ("Print") Border = False Menu = "mnuPrint" } { btnShowSide ToolButton MoveScaled(58,0,4,4) Visible = False ToolTip = ("Show options") Picture = Picture["icon:/small/view-split-h"] } } } { panSide Panel MoveScaled(65,1,41,76) Arrangement = Arrange.Horizontal Border = Border.Plain { Panel4 VBox MoveScaled(1,1,39,73) Expand = True { tabPrint TabPanel MoveScaled(0,0,37,15) Arrangement = Arrange.Vertical Spacing = True Margin = True Border = False Count = 2 Index = 0 Text = ("Printer") { pnlResolution HBox MoveScaled(1,1,37,4) Spacing = True { PictureBox1 PictureBox MoveScaled(0,0,4,4) Picture = Picture["icon:/32/printer"] Stretch = True } { cmbPrinter ComboBox MoveScaled(5,0,31,4) Expand = True ReadOnly = True } } { Panel7 HBox MoveScaled(1,6,35,4) Spacing = True { Label2 Label MoveScaled(0,0,12,4) Text = ("Two-sided") } { cmbDuplex ComboBox MoveScaled(15,0,21,4) Expand = True ReadOnly = True List = [("None"), ("Short side"), ("Long side")] } } Index = 1 Text = ("File") { Panel12 HBox MoveScaled(1,1,35,4) Spacing = True { PictureBox2 PictureBox MoveScaled(0,0,4,4) Picture = Picture["icon:/48/pdf"] Stretch = True } { txtFile ButtonBox MoveScaled(5,0,29,4) Expand = True Picture = Picture["icon:/16/open"] ReadOnly = True } } { HBox3 HBox MoveScaled(1,6,35,4) Spacing = True { TextLabel1 TextLabel MoveScaled(1,1,12,3) Text = ("Resolution") Alignment = Align.Normal } { cmbResolution ComboBox MoveScaled(15,0,14,4) #Translate = False ReadOnly = True List = ["75", "150", "300", "600", "1200"] } { Label11 Label MoveScaled(30,0,4,4) Text = ("dpi") } } Index = 0 } { Separator2 Separator MoveScaled(3,15,32,0) Visible = False } { VBox1 VBox MoveScaled(3,16,38,59) Expand = True Spacing = True Margin = True { Panel6 HBox MoveScaled(2,0,34,4) Spacing = True { Label1 Label MoveScaled(0,0,12,4) Text = ("Range") } { TextBox1 ButtonBox MoveScaled(15,0,18,4) Expand = True Picture = Picture["icon:/16/clear"] } } { HBox1 HBox MoveScaled(2,5,34,4) Spacing = True { Label4 Label MoveScaled(0,0,12,4) Text = ("Copies") } { TextBox2 SpinBox MoveScaled(15,0,12,4) Expand = True MinValue = 1 Value = 1 } } { Panel5 Panel MoveScaled(2,10,33,5) } { Panel14 HBox MoveScaled(1,17,36,4) Spacing = True { Label10 Label MoveScaled(0,0,12,4) Text = ("Orientation") } { cmbOrientation ComboBox MoveScaled(14,0,21,4) Expand = True ReadOnly = True List = [("Portrait"), ("Landscape")] } } { Panel8 HBox MoveScaled(1,21,36,4) Spacing = True { Label3 Label MoveScaled(0,0,12,4) Text = ("Paper") } { cmbPaper ComboBox MoveScaled(13,0,21,4) Expand = True ReadOnly = True List = [("Custom"), ("A3"), ("A4"), ("A5"), ("B5"), ("Letter"), ("Executive"), ("Legal")] } } { pnlCustom VBox MoveScaled(0,25,36,9) Visible = False Spacing = True { Panel3 HBox MoveScaled(1,0,32,4) Spacing = True { Label5 Label MoveScaled(0,0,12,4) Text = ("Width") } { spWidth SpinBox MoveScaled(14,0,6,4) Expand = True MaxValue = 1000 } { Label7 Label MoveScaled(27,0,4,4) Text = ("mm") } } { Panel17 HBox MoveScaled(1,4.125,31,4) Spacing = True { Label6 Label MoveScaled(0,0,12,4) Text = ("Height") } { spHeight SpinBox MoveScaled(13,0,6,4) Expand = True MaxValue = 1000 } { Label8 Label MoveScaled(26,0,4,4) Text = ("mm") } } } { Panel13 Panel MoveScaled(2,34,33,4) Expand = True } { tgbGrayScale CheckBox MoveScaled(1,36,34,4) Text = ("Grayscale") } { tgbFullPage CheckBox MoveScaled(1,40,24,4) Visible = False Text = ("Full page") } { tgbCollateCopies CheckBox MoveScaled(1,45,35,3) Text = ("Collate copies") } { tgbReverseCopies CheckBox MoveScaled(1,48,36,4) Text = ("Reverse order") } { Panel15 Panel MoveScaled(1,52,35,2) } { HBox2 HBox MoveScaled(2,55,33,4) { Panel10 Panel MoveScaled(2,1,10,3) Expand = True } { btnPrint Button MoveScaled(7,0,14,4) AutoResize = True Text = ("Print") Picture = Picture["icon:/small/print"] } { Panel9 Panel MoveScaled(21,1,10,3) Expand = True } } } } { btnCloseSide ToolButton MoveScaled(35,0,3,3) Ignore = True Picture = Picture["icon:/small/close"] } } } gambas-3.16.3/comp/src/gb.report2/.src/Viewer/ReportView.class000066400000000000000000000163121411575327000240220ustar00rootroot00000000000000' Gambas class file Export Inherits UserControl Public Const _IsControl As Boolean = True Public Const _IsContainer As Boolean = False Public Enum Custom, Page, DualPage, FullWidth, RealSize Private $aRangePage As New Integer[] Property Report As Report Property Read LayoutInProgress As Boolean Property ScaleMode As Integer Property ShowPageNumbers As Boolean Property Range As String Property _GrayScale As Boolean Property Zoom As Float Property Read Count, PageCount As Integer Private $bGrayScale As Boolean Private $hReport As Report Private $hView As New DocumentView(Me) As "View" Private hOBS As Observer Private tmrLayout As New Timer As "TmrLayout" Private $sRange As String Private $iScaleMode As Integer Private $bShowPageNumbers As Boolean Private $bLockLayout As Boolean Private $bStopLayout As Boolean Private tmrView As New Timer As "tmrView" Property Read RangePages As Integer[] Event Zoom Public Sub _new() hOBS = New Observer($hView.Children[0], True) As "Area" 'tmrLayout.Delay = 5 Me.Proxy = $hView End Private Function _GrayScale_Read() As Boolean Return $bGrayScale End Private Sub _GrayScale_Write(Value As Boolean) $bGrayScale = Value End Public Sub View_Draw((Page) As Integer, Width As Integer, Height As Integer) Dim hImg As Image Dim iPage As Integer If $aRangePage.Count > 0 Then Try iPage = $aRangePage[Page] If Error Then iPage = Page Else iPage = Page Endif Paint.AntiAlias = True If $bGrayScale Then hImg = New Image(Width, Height, Color.White) Paint.Begin(hImg) Endif $hReport.Scale = $hView.Zoom $hReport.Paint(ipage + 1) If $bShowPageNumbers Then Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 125)) Paint.Font = Font["Arial,Bold,+20"] Paint.Text(iPage + 1, 0, 0, Width, Height, Align.Center) Paint.Fill Endif If $bGrayScale Then Paint.End Paint.DrawImage(hImg.Desaturate(), 0, 0) Endif $hReport.Scale = 1.0 End Public Sub View_Zoom() 'tmrLayout.Stop Raise Zoom End Public Sub View_Finished() If $hReport._LayoutNotFinished Then $bStopLayout = False tmrLayout.Trigger Endif End Public Sub Area_Scroll() tmrLayout.Stop End Public Sub Area_MouseWheel() If Not $hView.Arrangement = Arrange.Row Then $hView.Arrangement = Arrange.Row $hView.Columns = 0 Endif End Public Sub Area_Draw() Dim sText As String Dim iTextWidth As Integer sText = Str($hView.FirstVisiblePage + 1) & "/" & Str($hView.Count) iTextWidth = Paint.TextSize(sText).Width + 10 Paint.Rectangle(Paint.Width - iTextWidth - 10, 10, iTextWidth, 25, 5) Paint.Brush = Paint.Color(Color.SetAlpha(Color.black, 125)) Paint.Fill(True) Paint.Brush = Paint.Color(Color.black) Paint.Stroke Paint.Brush = Paint.Color(Color.White) Paint.Font.Bold = True Paint.Text(sText, Paint.Width - iTextWidth - 10, 10, iTextWidth, 25, Align.Center) Paint.fill End Public Sub tmrLayout_Timer() If $bLockLayout Or If $bStopLayout Then Goto ESCAPE If Not $hReport._LayoutNotFinished Then Goto ESCAPE 'Need to add wait to allow refreshing Wait 0.01 tmrLayout.Trigger $hReport.Layout($hReport.PageCount) 'Add a try because closing the object cause an invalid object error 'Certainly because the loop come after deleting Try $hView.Count = $hReport.PageCount Return ESCAPE: tmrView.Trigger End Private Function Report_Read() As Report Return $hReport End Private Sub Report_Write(Value As Report) If Not Value Then Return $hReport = Value $hReport.Layout(1) $hView.Count = $hReport.PageCount $hView.Padding = Report.UnitTo(5, "mm", "px") $hView.Spacing = $hView.Padding $hView.DocWidth = Report.UnitTo(TSizeParse[Value.Width].ToInch(), "in", "px") $hView.DocHeight = Report.UnitTo(TSizeParse[Value.Height].ToInch(), "in", "px") $hView.Reset tmrLayout.Trigger End Public Sub MoveNext() $hView.MoveNext $hView.Item.EnsureVisible End Public Sub MovePrevious() $hView.MovePrevious $hView.Item.EnsureVisible End Public Sub MoveFirst() $hView.MoveFirst $hView.Item.EnsureVisible End Public Sub MoveLast() $hView.MoveLast $hView.Item.EnsureVisible End Public Sub MoveTo((Page) As Integer) $hView.MoveTo(Page) $hView.Item.EnsureVisible End Private Function LayoutInProgress_Read() As Boolean Return $hReport._LayoutNotFinished End Private Function ScaleMode_Read() As Integer Return $iScaleMode End Private Sub ScaleMode_Write(Value As Integer) $iScaleMode = Value $hView.Center = False Select Case Value Case Me.Custom $hView.Columns = 0 $hView.Arrangement = Arrange.Row Case Me.Page $hView.Columns = 0 $hView.Arrangement = Arrange.Fill $hView.Center = True Case Me.DualPage $hView.Columns = 2 $hView.Arrangement = Arrange.Row $hView.Center = True Case Me.FullWidth $hView.Columns = 0 $hView.Arrangement = Arrange.Vertical Case Me.RealSize $hView.Columns = 0 $hView.Arrangement = Arrange.Row $hView.Zoom = 1 End Select tmrView.Trigger End Private Function ShowPageNumbers_Read() As Boolean Return $bShowPageNumbers End Private Sub ShowPageNumbers_Write(Value As Boolean) $bShowPageNumbers = Value tmrView.Trigger End Private Function Range_Read() As String Return $sRange End Private Sub Range_Write(Value As String) Dim ars As String[] Dim ars2 As String[] Dim s As String Dim iStart, iEnd, i As Integer $sRange = Value $aRangePage.Clear If Not $sRange Then Goto Fin ars = Split($sRange, ";") For Each s In ars If InStr(s, "-") Then ars2 = Scan(s, "*-*") iStart = CInt(Val(ars2[0])) - 1 iEnd = Val(ars2[1]) - 1 If iStart < 0 Or If iEnd < 0 Or If iEnd < iStart Then Goto Fin If $aRangePage.Count > 0 And If iStart < $aRangePage[$aRangePage.Max] Then Goto Fin For i = iStart To iEnd $aRangePage.Add(i) Next Else iStart = CInt(Val(s)) - 1 If $aRangePage.Count > 0 And If iStart < $aRangePage[$aRangePage.Max] Then Goto Fin $aRangePage.Add(iStart) Endif Next Finally Fin: If $aRangePage.Count > 0 Then $hView.Count = $aRangePage.Count Me.MoveFirst Else Me.MoveFirst $hView.Count = $hReport.PageCount Endif tmrView.Trigger Catch End Private Function Zoom_Read() As Float Return $hView.Zoom End Private Sub Zoom_Write(Value As Float) $hView.Zoom = Value End Private Function Settings_Read() As Variant[] Return [$hView.Zoom, CVariant($iScaleMode)] End Private Sub Settings_Write(Value As Variant[]) $hView.Zoom = Value[0] $iScaleMode = Value[1] Catch End Public Sub _ForceLayout() Dim htmpImage As New Image(1, 1) $bStopLayout = True Paint.Begin(htmpImage) $hReport.Layout() Paint.End $hView.Count = $hReport.PageCount End Public Sub LockLayout() $bLockLayout = True End Public Sub UnlockLayout() $bLockLayout = False $bStopLayout = False tmrLayout.Trigger End Public Sub Refresh() Me.Report = Me.Report tmrView.Trigger End Private Function Count_Read() As Integer If $aRangePage.Count > 0 Then Return $aRangePage.Count Return $hReport.PageCount End Private Function RangePages_Read() As Integer[] Return $aRangePage End Public Sub tmrView_Timer() $hView.Refresh End gambas-3.16.3/comp/src/gb.report2/.src/_ReportSection.class000066400000000000000000000004461411575327000234130ustar00rootroot00000000000000' Gambas class file Export Inherits ReportVBox Public Const _Properties As String = "*,Text" Property Text As String Private $sText As String Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Public Sub _Free() End gambas-3.16.3/comp/src/gb.report2/16/000077500000000000000000000000001411575327000170025ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.report2/16/full-width.png000066400000000000000000000002061411575327000215650ustar00rootroot00000000000000PNG  IHDR:tRNSv8?IDATӝI G¿kAђPֹ~ wԵpġEđŰıEĉEp:( [`˜(^v?40HD%&c9J$IԘ;o5nPplV AR~ )?HAR~8_л2θIENDB`gambas-3.16.3/comp/src/gb.report2/32/Empty.png000066400000000000000000000013171411575327000206060ustar00rootroot00000000000000PNG  IHDR DMPLTE½񩥤賓䨤񨣡槣瀀󧤢𧣢ޭبڣ۠ǧܞÛŦܜڝ֟ŧףm=tRNS@f0IDAT8ˍiS@qL%00-[>,MLj 0;0L|M|$\BB(H$r ʵڢ$ %F@MtXiA$ RPo>N}c06?ƒ* #d/i $@!zð{QJnl|brjzfvn~;eiyeum}cEmPSF݂`O?@ã#ю+3̅3(^^UswwC}u{џ_^]S_Yb IENDB`gambas-3.16.3/comp/src/gb.report2/32/grayscale.png000066400000000000000000000030341411575327000214600ustar00rootroot00000000000000PNG  IHDR DPLTE½񩥤賓߹زǭ쨤絴໺񨣡گէ训ͻ츷㡟Ӧީ۴҇蘖غ𙙘࣢񼻺utt󧤢北usswvu얕tss梡ɰ޿٘Ⱦ𧣢٬ޭ̛ڣ𤣢۠ǧÛŦܜڝ֟ŧףBmHtRNS@fIDAT8c` 02P,l\<<||| U *,"*&.!)%-##++'/JBPl"* i9*)kkJjii鳪\;H^XL X` -5mlLM]tu]a)ɻ;8xxziryL?t@`|p{MX8NDc?TA]tLLW\|BbZrJJAZLAlFLKVvNn^\r~JLJJLADg^B 0Ԥ  JYy+*Ҫ@!QNfOCcSsIxK K[;OGgk5޾ &psO4ĈSI$OWS0SRfl9~~2sͷ(7cƌ0p/\]jIR@e˥W*rk[|MWmٺe53 xv̲kKm~{탙_'B%@ACXX= j5+>w:q2pgΞ;Sp!/%WN\Vst7oݾUp }(Ĺܯ66<_Di m>2 "<5TP X]=X DK7o!˃ jO(ys5]|}`P ~jɲ\Umdtl|brjzfv*)׮&-,.-6QTڔ흲R-1d{J \m 'g%P~uyu}Sb3BۻGPOe0oU>>f50ŒsB -l@}a jIENDB`gambas-3.16.3/comp/src/gb.report2/FunctionsList000066400000000000000000000004021411575327000212770ustar00rootroot00000000000000asin asinh atan atan2 atanh cos cosh deg hyp mag pi sin sinh tan tanh rad abs ceil fix floor frac int max min round sgn asc chr comp instr lcase left len ltrim mida quote replace right rinstr rtrim space string trim ucase unquote if and or not true false sqrgambas-3.16.3/comp/src/gb.report2/Structure000066400000000000000000000006641411575327000205050ustar00rootroot00000000000000' Gambas class file '>>>>>>>>>>>>>>>>>>>>>> PUBLIC VARIABLES >>>>>>>>>>>>>>>>>>>>>>>>> '>>>>>>>>>>>>>>>>>>>>>>>>>> PROPERTIES >>>>>>>>>>>>>>>>>>>>>>>>>>> '>>>>>>>>>>>>>>>>>>>>>> PRIVATE VARIABLES >>>>>>>>>>>>>>>>>>>>>>>> '##################### PUBLIC PROCEDURES ######################### '##################### PRIVATE PROCEDURES ######################## '######################## PROPERTIES ############################# gambas-3.16.3/comp/src/gb.report2/gambas.svg000066400000000000000000001124521411575327000205340ustar00rootroot00000000000000 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 gambas-3.16.3/comp/src/gb.report2/icon.png000066400000000000000000000044651411575327000202230ustar00rootroot00000000000000PNG  IHDR@@iqIDATxoWǿ眙Yũl)ٺ6u I! P"D&R E@2HRĶ[[[ sss` +F\p$ q022K$ㄐ?~f tڂ0(!`Q8s]wRq B)RpͶmL&J_ξ VtAQ,..Bi @84LƲߵ"X ffB?J)@)c 1r9dYXE]RS[_?}P (ەRwqA!TPJ3,~_{%T}»)x, c3Ƶ+Tl p$xkkkpɗ Oq.S\!2w")%,,T cY ĠЎ|~n7ku6p!` rS獄`(1hJCc0 P<xm-.y|QR,BipK<@9&ӯ@)0S!}< eF2J)C@)~ x^"@<`Ap*eehC1M~րR߈^@=(}@xW ϤhH)QY/&jo#@˰1V%vv ҍ@@` <`S0 _8!0 0=gpg)/B6Lc peݳηߺ ߤ?;{P՘yCkT*%mBt.Ϳ5H)111!XU2-tOBP,ׯR/9;wFӏ=2 3g H,[;vX|Ϟ={`a8 t{E=~{ډ[n{Ν;weYWJw 9Dj۲ktRlZ{sfVQFGGZڻw/nܸx |Rʏcd-I@PjS[1"?n@^Uf<יR sr9lll4mh+jKAŕ[Qf*)H)@ jr`PdR*Vf()d2@J&j7)` P)x TSEh"SUN8DP@UU [@3"بJ!Q h %+gr@X Ml RȞVW v,T=>= &v qNHF_"`ssܟ06C}Q8hֲϦt7D7os,Ǭp_ܣV-R^r8^9q|}q|p`4lS\7L*0@"hQ[\\]-J)j~n~#)=T&T{:fgc/U`C),Jn+!U X<s\9|0Ο?tn߾=PN۷NLOOcaarWJQ@ЇJ!5O~/^RWtT*b@rSߊR: aXP(bttt}u]߾|>B ۱]Juo[OČ?*TG(s\ʿll盕YYYY㎓Z3Mb>mJ#B_w|4m 0|]-]>rʯc`[|͛WNc DRAPʳC*~fxx焐OnH+u{ ӏ F#iE#*3d89*p=lQcl Ԃa7T'E8Uۅ o뮺U㍪q( D_ 1CIENDB`gambas-3.16.3/comp/src/gb.report2/tmpJournal000066400000000000000000000013211411575327000206270ustar00rootroot00000000000000[GB.REPORT2] * BUG: The ReportControl font property now make a copy of the font given in argument. * BUG: Now a too big children element is clipped if it is the first one listed after the fixed ones (no more infinite loop) * NEW: ReportUnit module is merged with Report class. All functions for convertion are now available as static functions in Report. The two internal functions scale and internal width are now public function of report instance. * NEW: Return of the ReportImage and ReportSvgImage with no change for now. * NEW: Continue to improve the ReportGridView widget ... really not ready for use. * NEW: Restore the UseField property in ReportLabel so for now the component is backward compatible. gambas-3.16.3/comp/src/gb.report2/tortueface.gif000066400000000000000000000017731411575327000214140ustar00rootroot00000000000000GIF89a cccs! NETSCAPE2.0! , ސIɸx(`Xh]I}Hw{+[\9mk@ #L 4S5T 8U,ThuImwxIR`V:n]0-{w|}T^L"f5xklrwdri%xa&`,ˬn6m{Ղ|ڧ_Ő{?!y^QH}Xj7E! , ȐI븣oō!GGv-e A! J"j7$da~al ctfċjpy(Bhmn!h&WVn{Tw{$bp3*d<CdQ~QLëU oI'P<|!a4'ܖUVQח掱! , ݐIx(`Xh]i(iv_q{+uպ0)~@D9U6Q@ɔ yLEZS@H`0u; y(Ug#+uYļxkĂ=z?{(mnfG]=eqpa"! , ȐI縣oō!GGv-e A! J"j7X *x al()Qx\0ݹ<.qfsu2XgtPm2deg[lBbcdyc#yy$rLP 2 w08c7%:`nVK9VIENDB`gambas-3.16.3/comp/src/gb.scanner/.icon.png000066400000000000000000000206271411575327000203330ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxˏ;K?'"3mW޾}{Ĵ5 X=$6fvX`7+6Al HZ3>GfaO.rG8q眈0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0^ y ~f'߅ѥ2~7bwݻ@C|lYO,`lE< ϧnKϽ}_FǵlχFڤ^Oh?ç0b@uЩd0ޗ_ɕæ͵||oޱ::K{Èzq?~8~T'/^6^hpr 4ۻFxH7Ab5zoFJ4;eSB\~6`Z[ x=xquZR;6-M@- @SE㇣|R^5Ιn犖j·}پ3Z<=x<˸ti:CP'mne8Iġ}~-/5}^<0.fYFMW߮a5-#1?؀*Cő#1N$ !%T"m}߶A|`&HfbaKOUk7˄?uFͱL¶ʭT _zщL5Ciړ*4{4!.'k$7IJ*qX0-dv02ZW~m|NjzѶm=@0u޸H y Q80i'p y~x,gq$.+hyǰoXiz l3 9wWY72oPVZ~##@7~ADa8ǿ9OS{o8Bhr@{7ۨߤ%m=(= Hg_@/ov H;C7HG6Gz k> ={F~x'&Os?M~('.Ƞ0G4x@]ox'~ 㽱p|b':%7+):| b1/3GS Pw8{>ܿWb~=.bcD9!tۮ2`\V ' c~=<'e.<}]z mi C7Y0>2+/>Nd7=GQC׻ 3қ3ߟ-x,+Zڟz y@&i5 D̡q0X>G+X^SH?0WU]~uka 'y0ton8 x@K5,g'| UXMwOSV!8` 'QC}3`tj?]f/ ]G;}_7ox <{~t5Z!'V1H~?⇿9Wϡq|1tJYe\(UI  h<0k䒹^Kʑ뚊X b~IIA5ZΙ%w\1犒`%C4-&p0H/^2[Ld; ;ފ3Vvi; zRg24LLLqx՛`Dk4K;.YrBYKs.1VgFDz`Dk-W8 >C˒)ޟ Ӥi =2˷5SgSwʽYT`` ;z]i|'i~zqݺ)y3M9IiC e+Ljw†YᷧOYIO?O yLtEeaMJ'e -傥k,2\o4% L E/傻nR.XpN%gj럄~0p$ 4~.FQ2eu75L\Op>iw#A<4yo}i%TjM[`@y3F%oywEEs4?%8P64$eϚ~4`@zB=k~Fy->1p s'jy~ni/ϏiS 3% ij-o ?˞54?El6ܫ`v>_k2ݽ9srF3$0 FlLXsB{g5f4[f'?e4*E>{yӤg7zx#ƚ-g'ͿL|Y1iZbA7B$V5yEJSg0|~,oj 4ki~b^5$/I3i~ %i~^XsDM۱%^ S4 ϿR&:OrLo g4hzm<C?eد_14 <M_*TPjשr&h5䬥`$nƝrf,eJ)Sڃ_7ŲDBP(=ڱUB4Ƹ|k7v*SyO Uv!4F? q,UzGFi߸H JeWum'/ U8%s|/ц43o<3Up,kǢzͪu7u2UtXp}< TSP& JedY|~ؖ8c4_l6ƚY;˜V97e:̸^{nˌEQGy`%It˲9~U& "n"_B@O-3?;<%hڽbA5|WI7qu VM&> _U9*!b^ U9sAω<Ө?&'b`cͿ=7eίnuYP ApϭhSB@]הesi @/Tn,[s$@l#ȩM,e^uշ_rߘURǢ˜y[O t*/.lU2u^wZ Tw%1 cQŭ_" uUWd`IVo3;P$\Wޫn0gKPנ*z pG+{ !'4V!2!BUW/)tcAhPBufEU%: 5.$??H׷1@ɫo->NwolIl[i];Yut% W/޷s/ɪD+Nw_L]`,za.Td5>,ew "nȪk\޺9GA3 5i鶦md .,˯}jL+3 `D'wJ 1(D'@+3GL}Mq9hhr L\M!5#w0'cYƑ8wԠNg%s |4SY0y; O, ,:. /;S3͒:0N3;g"+YQA7n*"q`,wHUYg9 g Iɨ؁ej.uXBX\{|^ 8d .U,>k&zDL[7 1`)J 5EԨ: zO_ nZ&ud͢1N .k*.jl`A*̔\^T,#sC`Ou{e)~r#Ӝ;^(E4/+ny;piԍJ+>5UU!ku 2 Then Break hMenu = New Menu(mnuSources) As "mnuSources" hMenu.Text = aSources[i] hMenu.Tag = aList[i] If sCur = aList[i] Then mnbSource.Text = ("Source : ") & hMenu.Text mnbSource.Tag = hMenu.Tag Endif Next 'Link menu to button mnbSource.Menu = "mnuSources" Endif 'Loading Resolution menu If $hScan.Exist("Resolution") Then sCur = $hScan["Resolution"].Value For Each s In $hScan["Resolution"].List hMenu = New Menu(mnuResolutions) As "mnuResolutions" hMenu.Text = s hMenu.Tag = s If s = sCur Then MnbResolution.Text = ("Resolution : ") & hMenu.Text MnbResolution.Tag = hMenu.Tag Endif Next MnbResolution.Menu = "mnuResolutions" Endif If $hScan.Exist("Mode") Then sCur = $hScan["Mode"].Value For Each s In $hScan["Mode"].List 'Well loading Modes as it because 'they are too many modes style to manage 'and I don't want to limit my scanners options hMenu = New Menu(mnuModes) As "mnuModes" hMenu.Text = s hMenu.Tag = s If sCur = s Then mnbMode.Text = ("Mode : ") & s mnbMode.Tag = s Endif Next mnbMode.Menu = "mnuModes" Endif hbScanOptions.Show 'Set Values from settings 'Take a look if settings for this scanner exist If Settings[$hScan.Name &/ "mode"] = Null Then Return 'Set the Mode mnbMode.Text = Split(Settings[$hScan.Name &/ "mode"])[0] mnbMode.Tag = Split(Settings[$hScan.Name &/ "mode"])[1] 'Set the Resolution MnbResolution.Text = Split(Settings[$hScan.Name &/ "resolution"])[0] MnbResolution.Tag = Split(Settings[$hScan.Name &/ "resolution"])[1] 'Set the Source mnbSource.Text = Split(Settings[$hScan.Name &/ "source"])[0] mnbSource.Tag = Split(Settings[$hScan.Name &/ "source"])[1] End Public Sub mnuScanners_Click() If Last.Text = $hScan.Name Then Return $hScan = Scanners[Last.Text] SetScanner() End Public Sub mnuSources_Click() mnbSource.Text = ("Source : ") & Last.Text mnbSource.Tag = Last.Tag Settings[$hScan.Name &/ "source"] = [mnbSource.Text, CStr(mnbSource.Tag)].Join() End Public Sub mnuResolutions_Click() MnbResolution.Text = ("Resolution : ") & Last.Text MnbResolution.Tag = Last.tag Settings[$hScan.Name &/ "resolution"] = [MnbResolution.Text, CStr(MnbResolution.Tag)].Join() End Public Sub mnuModes_Click() mnbMode.Text = ("Mode : ") & Last.Text mnbMode.Tag = Last.Tag Settings[$hScan.Name &/ "mode"] = [mnbMode.Text, CStr(mnbMode.Tag)].Join() End Public Sub Scanner_Begin() Spring1.Hide hbProgress.Show End Public Sub Scanner_PageBegin() End Public Sub Scanner_PageEnd() Dim hImg As Image Dim s As String Try hImg = Last.Peek() If Not hImg Then msvError.Open("Error : Can't load image.", Picture["icon:/32/warning"]) Return Endif $aImg.Add(hImg) dvPages.Count = $aImg.Count 'Show the toolbar hbToolbar.Show End Public Sub Scanner_End() hbProgress.Hide Spring1.Show End Public Sub Scanner_Error(ErrorText As String) msvError.Open(ErrorText, Picture["icon:/32/error"]) End Public Sub Scanner_Progress() pgbScan.Value = Last.Progress End Public Sub dvPages_Draw(Page As Integer, Width As Integer, Height As Integer) Paint.DrawImage($aImg[Page], 0, 0, Width, Height) End Public Sub btnPrint_Click() Dim hPrinter As New Printer As "Printer" hPrinter.FullPage = True hPrinter.Paper = hPrinter.A4 hPrinter.Preview() End Public Sub Printer_Begin() Last.count = $aImg.Count End Public Sub Printer_Draw() Paint.DrawImage($aImg[Last.Page - 1], 0, 0, Paint.Width, Paint.Height) End Public Sub btnNew_Click() If Not $bSaved Then If Message.Warning("You have not saved the current scanning session !\nAre you sure you want to clear all ?", "&No", "&Yes") = 0 Then Return Endif Endif $aImg.Clear dvPages.Count = 0 hbToolbar.Hide End Public Sub mnuScannersRefresh_Click() Scanners.Search End Public Sub btnSave_Click() Dim hPrinter As New Printer As "Printer" Dim sPath As String Dim hImg As Image Dim i As Integer Dialog.Path = Settings["General/SavePath", User.home & "/"] If Not Dialog.SaveFile() Then sPath = Dialog.Path If File.Ext(sPath) = "jpg" Then For i = 0 To $aImg.Max $aImg[i].Save(File.SetBaseName(sPath, File.BaseName(sPath) & Format(i, "000"))) Next Endif Endif End Public Sub tmrTry_Timer() Dec $iTryDelayCnt Me.Title = $sAppName & " - No scanner available... New try in " & $iTryDelayCnt & "s" If $iTryDelayCnt = 0 Then Me.Title = $sAppName & " - Searching scanners..." $tmrTry.Stop $tmrTry = Null Scanners.Search Endif End gambas-3.16.3/comp/src/gb.scanner/.src/Demo/FScan.form000066400000000000000000000115541411575327000222260ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,150,86) Font = Font["+1"] Text = ("Gambas Easy Scan") Arrangement = Arrange.Vertical { mnuScanners Menu Text = ("mnuScanners") Visible = False } { mnuResolutions Menu Text = ("mnuResolutions") Visible = False } { mnuModes Menu Text = ("mnuModes") Visible = False } { mnuSources Menu Text = ("mnuSources") Visible = False } { HBox1 HBox MoveScaled(1,1,149,6.8571) { mnbScanner MenuButton MoveScaled(0,0,9,7) Enabled = False NoTabFocus = True Picture = Picture["icon:/32/scanner"] Border = False MenuOnly = True } { PictureBox1 PictureBox MoveScaled(15.2857,0,3.4286,6.8571) Picture = Picture["next.png"] } { hbScanOptions HBox MoveScaled(20,0,129,7) Visible = False Expand = True Spacing = True { mnbMode MenuButton MoveScaled(0,0,28.5714,7) Font = Font["+1"] AutoResize = True Text = ("Mode :") Border = False MenuOnly = True } { PictureBox2 PictureBox MoveScaled(25.2857,1,3.4286,6.8571) Picture = Picture["next.png"] } { MnbResolution MenuButton MoveScaled(35,1,28.5714,7) Font = Font["+1"] AutoResize = True Text = ("Resolution :") Border = False MenuOnly = True } { PictureBox3 PictureBox MoveScaled(65,1,3.4286,6.8571) Picture = Picture["next.png"] } { mnbSource MenuButton MoveScaled(71,1,28.5714,7) Font = Font["+1"] AutoResize = True Text = ("Source :") Border = False MenuOnly = True } { PictureBox4 PictureBox MoveScaled(97,1,3.4286,6.8571) Picture = Picture["next.png"] } { hbProgress HBox MoveScaled(101,0,7,7) Visible = False Expand = True Margin = True Padding = 5 { pgbScan ProgressBar MoveScaled(1,0,8,6) Expand = True Border = False } } { Spring1 Spring MoveScaled(110,3,2,3) } { btnScan Button MoveScaled(112,0,16,7) Font = Font["Bold"] Background = Color.SelectedBackground Text = ("Scan") } } } { Separator1 Separator MoveScaled(20,9,104,0) } { msvError MessageView MoveScaled(7,10,133,6) } { Panel2 Panel MoveScaled(5,11,163.7143,63.7143) Expand = True Arrangement = Arrange.Horizontal { VBox1 VBox MoveScaled(0,6,6,50) Spacing = True { ToolButton1 ToolButton MoveScaled(0,0,6,6) Picture = Picture["icon:/32/left"] } { ToolButton2 ToolButton MoveScaled(0,7,6,6) Picture = Picture["icon:/32/right"] } { Separator3 Separator MoveScaled(1,13,5,0) } { ToolButton3 ToolButton MoveScaled(0,14,6,6) Picture = Picture["icon:/32/rotate-left"] } { ToolButton4 ToolButton MoveScaled(0,20,6,6) Picture = Picture["icon:/32/rotate-right"] } { Separator4 Separator MoveScaled(0,27,5,0) } { ToolButton5 ToolButton MoveScaled(0,29,6,6) Picture = Picture["icon:/32/cut"] } { Separator5 Separator MoveScaled(0,41,5,0) } { ToolButton7 ToolButton MoveScaled(1,42,6,6) Picture = Picture["icon:/32/delete"] } } { Panel1 Panel MoveScaled(17,0,145.8571,62.8571) Expand = True Arrangement = Arrange.Fill { dvPages DocumentView MoveScaled(17,12,134,51) Visible = False Expand = True Arrangement = Arrange.Horizontal } { vbWait VBox MoveScaled(1,2,125,55) Background = &HBCBEC0& Expand = True { Spring2 Spring MoveScaled(61,2,3,3) } { spnWait Spinner MoveScaled(32,7,60,40) Foreground = &HDBDDE0& } { lblWait Label MoveScaled(19,35,89,8) Font = Font["Bold,+8"] Foreground = &HDBDDE0& Text = ("CONNECTING SCANNER") & "..." Alignment = Align.Center } { Spring3 Spring MoveScaled(50,48,2,4) } } } } { Separator2 Separator MoveScaled(2,77,139,0) } { hbToolbar HBox MoveScaled(2,78,129,6) Visible = False Spacing = True Margin = True Padding = 2 { btnNew Button MoveScaled(0,0,21,5) Text = ("New") Picture = Picture["icon:/22/new"] } { Spring4 Spring MoveScaled(22,1,27,1) } { btnPrint Button MoveScaled(85,0,22,5) Text = ("Print") & "..." Picture = Picture["icon:/22/print"] } { btnSave Button MoveScaled(108,0,21,5) Text = ("Save") & "..." Picture = Picture["icon:/22/save"] } } } gambas-3.16.3/comp/src/gb.scanner/.src/Demo/Form1.class000066400000000000000000000007111411575327000223530ustar00rootroot00000000000000' Gambas class file Private $himage As New Image Public Sub Button1_Click() Dim hscan As New Scanner("hpaio:/net/OfficeJet_5200_series?ip=192.168.1.25") '$himage = Scanners["hpaio:/net/OfficeJet_5200_series?ip=192.168.1.25"].Scan() hscan["Mode"].Value = "Color" $himage = hscan.Scan() DrawingArea1.Refresh End Public Sub Form_Open() End Public Sub DrawingArea1_Draw() Draw.Image($himage, 0, 0, Paint.Width, Paint.Height) End gambas-3.16.3/comp/src/gb.scanner/.src/Demo/Form1.form000066400000000000000000000002551411575327000222140ustar00rootroot00000000000000# Gambas Form File 3.0 { Form Form MoveScaled(0,0,64,64) { Button1 Button MoveScaled(13,6,25,18) } { DrawingArea1 DrawingArea MoveScaled(16,30,38,25) } } gambas-3.16.3/comp/src/gb.scanner/.src/Demo/Main.module000066400000000000000000000001361411575327000224340ustar00rootroot00000000000000' Gambas module file Public Sub Main() Application.Theme = "gambas" FScan.Show End gambas-3.16.3/comp/src/gb.scanner/.src/Demo/Main2.module000066400000000000000000000012631411575327000225200ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hScan As New Scanner("hpaio:/net/OfficeJet_5200_series?ip=192.168.1.25") Dim s As String Dim sUnit As String For Each s In hScan Print hScan[s].Name 'Print hScan[s].Info If hScan[s].List Then sUnit = hScan[s].Unit Print " " & hScan[s].List.Join("|") & sUnit & " (Default: " & hScan[s].Value & sUnit & ") " & IIf(hScan[s].IsActive, "Active", "Inactive") Endif If hScan[s].IsRange Then Print " " & hScan[s].MinValue & " .. " & hScan[s].MaxValue & hScan[s].Unit & " (Default:" & hScan[s].Value & hScan[s].Unit & ") " & IIf(hScan[s].IsActive, "Active", "Inactive") Endif Print Next End gambas-3.16.3/comp/src/gb.scanner/.src/MTest.module000066400000000000000000000005271411575327000217240ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hImg As Image 'Dim hscan As New Scanner("hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=192.168.1.25") Dim hscan As New Scanner("v4l:/dev/video0") hscan.Debug = True hScan["Mode"].Value = "color" 'hScan[" Resolution "].Value = 30 hScan!Width.Value = 2560 hImg = hscan.Scan() hImg.Save("~/fa.png") End gambas-3.16.3/comp/src/gb.scanner/.src/MTest2.module000066400000000000000000000006731411575327000220100ustar00rootroot00000000000000' Gambas module file Private hSCan As Scanner Public Sub main() Dim s As String hSCan = New Scanner("hpaio:/net/HP_LaserJet_MFP_M426fdn?ip=192.168.1.25") For Each s In hSCan If hSCan[s].IsRange Then Print "IsRange : ", s, " ", "==>", "min : ", hSCan[s].MinValue, "Max :", hSCan[s].MaxValue, "Units : ", hSCan[s].Unit Else Print "IsList : ", s, " ", "==>", hSCan[s].List.Join() Endif Next End gambas-3.16.3/comp/src/gb.scanner/.src/Module1.module000066400000000000000000000006211411575327000221710ustar00rootroot00000000000000' Gambas module file Private hscan As New Scanner("hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=192.168.1.25") As "Scan" Public Sub Main() Print Object.Parent(hscan) hScan.ASync = True hScan["Mode"].Value = "Color" 'hScan["Resolution"].Value = 300 hscan.Scan() 'hImg.Save("~/fa.png") End Public Sub Scan_Progress() Print hscan.Progress End Public Sub Scan_End() Print "End" End gambas-3.16.3/comp/src/gb.scanner/.src/Module2.module000066400000000000000000000001711411575327000221720ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim s As String For Each s In Scanners Print Scanners[s].Name Next End gambas-3.16.3/comp/src/gb.scanner/.src/Scanner.class000066400000000000000000000237321411575327000221040ustar00rootroot00000000000000' Gambas class file Export Private $sVendor As String Private $sModel As String Private $sType As String Private $bDebug As Boolean Property Debug As Boolean Property ASync As Boolean Property Read Name As String Property Read Vendor As String Property Read Type As String Property Read Model As String Private $sDeviceName As String Private $bASync As Boolean 'Property _Name As String Private $sName As String 'Private $Options As ScannerOptions Property Read Progress As Float Private bHaveInfo As Boolean Private $aOptionsNames As String[] Private $aOptions As ScannerOption[] Private $aImgStack As New String[] Private $sCurImagePath As String Public Struct ScannerInfo Vendor As String Model As String Type As String End Struct Private $fProgress As Float Private $stmpPath As String = File.Dir(Temp()) Event Begin Event PageBegin Event PageEnd Event Finished Event End Event Progress Event Error(ErrorText As String) Public Sub _New(sDevice As String) $sDeviceName = "--device-name='" & sDevice & "'" $sName = sDevice 'If Not IsAvailable() Then ' Error.Raise("Unknown Device") 'Endif End Private Sub GetInfo() Dim hInfo As ScannerInfo hInfo = Scanners._GetInfo($sName) $sVendor = hInfo.Vendor $sModel = hInfo.Model $sType = hInfo.Type bHaveInfo = True End Private Function Name_Read() As String Return $sName End Private Function Vendor_Read() As String If Not bHaveInfo Then GetInfo Return $sVendor End Private Function Type_Read() As String If Not bHaveInfo Then GetInfo Return $sType End Private Function Model_Read() As String If Not bHaveInfo Then GetInfo Return $sModel End Private Sub GetOptions() Dim sRet As String Dim s, sCurGroup As String Dim aLine As String[] Dim hOption As ScannerOption Dim a As String[] Dim iTiret As Integer Dim sName As String Dim sValues As String Dim sDefault As String Dim iStartOptions As Integer Dim iEndOptions As Integer If Not IsAvailable() Then Error.Raise("Unknown device or device not available") $aOptionsNames = New String[] $aOptions = New ScannerOption[] Shell "scanimage " & $sDeviceName & " -A" To sRet For Each s In Split(sRet, "\n") s = Trim(s) If InStr(s, ":") Then sCurGroup = Trim(Left(s, -1)) Continue Endif If s Begins "-" Then 'Correction of some specific mode name (ex: [=(yes|no)]) If InStr(s, "[=(") Then s = Replace(s, "[=(", " ") s = Replace(s, ")]", "") Endif iStartOptions = InStr(s, " ") If s Ends "]]" Then iEndOptions = RInStr(s, "[", RInStr(s, "[") - 1) - 1 Else iEndOptions = RInStr(s, "[") - 1 Endif If iEndOptions = -1 Then iEndOptions = Len(s) sName = Left(s, iStartOptions - 1) sValues = Trim(Mid(s, iStartOptions + 1, iEndOptions - iStartOptions - 1)) sDefault = Mid(s, iEndOptions + 1) 'aLine = Split(Mid(s, iStartOptions), " ", "()") hOption = New ScannerOption 'Store the option group hOption._Group = sCurGroup 'Manage the option cutting iTiret = IIf(sName Begins "--", -2, -1) 'SOme option are standardised so we can manage them with our 'own way. Select Case Right(sName, iTiret) Case "l" hOption._Name = "Left" Case "t" hOption._Name = "Top" Case "x" hOption._Name = "Width" Case "y" hOption._Name = "Height" Case Else hOption._Name = Right(sName, iTiret) hOption._Name = UCase(Left(hOption._Name)) & Right(hOption._Name, -1) End Select 'Remember the real option command line hOption._Command = sName 'sOptions = Mid(s, iStartOptions, iEndOptions - iStartOptions) 'Define the option style (Range/List) hOption._IsRange = InStr(sValues, "..") 'Manage the range style option If hOption._IsRange Then 'if find a coma then remove it and the text next If InStr(sValues, ",") Then sValues = Left(sValues, InStr(sValues, ",") - 1) aLine = Split(sValues, " ", "()") sValues = aLine[0] a = Scan(sValues, "*..*") hOption._MinValue = a[0] s = GetUnit(a[1]) If s Then hOption._MaxValue = Left(a[1], -Len(s)) hOption._Unit = s Else hOption._MaxValue = a[1] Endif If aLine.Count = 2 Then hOption._Steps = CFloat(Mid(aLine[1], RInStr(aLine[1], " "))) Endif Else 'If hOption.Name = "Mode" Then Stop 'Manage the list style option 'remove also empty list entry hOption._List = Split(Replace(sValues, "||", "|"), "|") 'If the option list have a unit then use it and remove it from the list s = GetUnit(hOption._List[hOption._List.Max]) If s Then hOption._List[hOption._List.Max] = Left(hOption._List[hOption._List.Max], -Len(s)) hOption._Unit = s Endif Endif 'Manage the default values and the not activate fag If sDefault Begins "[" Then If InStr(sDefault, "inactive") Then hOption._IsActive = False Else If hOption._IsRange Then hOption._Value = CFloat(Mid(sDefault, 2, -1)) Else hOption._Value = Mid(sDefault, 2, -1) Endif Endif Endif $aOptionsNames.Add(hOption.Name) $aOptions.Add(hOption) '$Options._Add(hOption) Continue Endif Next End Private Function GetUnit(sValue As String) As String Dim i As Integer Dim s, sRet As String If Not sValue Then Return If IsLetter(Left(sValue)) Then Return For i = 1 To Len(sValue) s = Mid(sValue, i, 1) If (Asc(s) >= 97 And Asc(s) <= 122) Or If (s = "%") Then sRet &= s Endif Next If Len(sRet) > 3 Then sRet = "" Return sRet End ''Return if the current scanner is available Public Function IsAvailable() As Boolean Dim s As String Shell "scanimage " & $sDeviceName & " -n 2>&1" To s Return InStr(s, "Error during device I/O") = 0 End Public Function Scan() As Image 'Make the option Line Dim ss As String Dim sOptions As String Dim sCommand As String 'Dim sTemp As String = Temp Dim hImage As Image Dim hOption As ScannerOption Dim sCount As String If Not $aOptionsNames Then GetOptions $aImgStack.Clear For Each hOption In $aOptions If hOption.Modified Then If hOption._Command Begins "--" Then sOptions &= hOption._Command & "=" & IIf(hOption.IsRange, hOption.Value, "'" & hOption.Value & "'") & " " Else sOptions &= hOption._Command & " " & IIf(hOption.IsRange, hOption.Value, "'" & hOption.Value & "'") & " " Endif Endif Next If Not $bASync Then $sCurImagePath = Temp sCommand = "scanimage " & $sDeviceName & " " & sOptions & "--format=pnm > " & $sCurImagePath If $bDebug Then Debug sCommand Shell sCommand Wait 'Print ss Try hImage = Image.Load($sCurImagePath) If Error Then Error.Raise("Can't get the image, something goes wrong" & Error.Text) Return Endif Return hImage Else If Me.Exist("Source") Then If (Me["Source"].Value = Me["Source"].List[0]) Or Me["Source"].Value = "" Then sCount = "--batch-count=1" Endif Endif sCommand = Subst("scanimage &1 &2 --batch='&3' &4 --batch-print -p --format=pnm", $sDeviceName, sOptions, $stmpPath &/ "out%d.pnm", sCount) If $bDebug Then Print sCommand Shell sCommand For Read As "Process" $fProgress = 0 Raise Begin Endif 'Shell "scanimage" End Public Sub Process_Error(sError As String) Dim fRet As Float If $bDebug Then Debug "Error : " & sError Endif If sError Begins "Progress:" Or If sError Ends "%" Then fRet = Round(CFloat(Left(RTrim(Scan(Split(sError, "\r")[0], "* *")[1]), -1)) / 100, -2) If fRet > $fProgress Then $fProgress = fRet Raise Progress Endif Return Endif If InStr(sError, "Scanning page") Then Raise PageBegin Return Endif If InStr(sError, "scanimage: sane_start:") Then Raise Error(("Scanner error : ") & Mid(sError, RInStr(sError, ":"))) Return Endif End Public Sub Process_Kill() '$aImgStack.Push($sCurImagePath) $fProgress = 1 Raise Finished Raise End End Public Sub Process_Read() Dim s As String s = Read #Last, Lof(Last) If $bDebug Then Debug "Read : " & s Endif $aImgStack.Add(Trim(s)) Wait 0.2 Raise PageEnd End Private Function Progress_Read() As Float Return $fProgress End ''Return recurssively all the options available Public Function _next() As String Dim s As String If Not $aOptionsNames Then GetOptions If IsNull(Enum.Index) Then Enum.Index = 0 Else Inc Enum.Index Endif If Enum.Index >= $aOptions.Count Then Enum.Stop Return Endif s = $aOptionsNames[Enum.Index] Return s End ''Find an option from it's name (same as hScan[key]) Public Sub Find(Key As String) As ScannerOption If Not $aOptionsNames Then GetOptions Try Return $aOptions[$aOptionsNames.Find(Key)] End ''Return if the given option exist Public Sub Exist(Key As String) As Boolean If Not $aOptionsNames Then GetOptions Return $aOptionsNames.Exist(Key) End ''Return an Option from it's name Public Function _get(Name As String) As ScannerOption If Not $aOptionsNames Then GetOptions If Not $aOptionsNames.Exist(Name) Then Error.Raise("Unknown option '" & Name & "' for device : " & $sName) Return Endif Return $aOptions[$aOptionsNames.Find(Name)] End ''Pop and return the last images. ''Return null if not image available Public Function Peek() As Image Dim hImg As Image Dim sFile As String If $aImgStack.Count > 0 Then sFile = $aImgStack.Pop() Try hImg = Image.Load(sFile) Try Kill sFile Return hImg Endif End Private Function Debug_Read() As Boolean Return $bDebug End Private Sub Debug_Write(Value As Boolean) $bDebug = Value End Private Function ASync_Read() As Boolean Return $bASync End Private Sub ASync_Write(Value As Boolean) $bASync = Value End gambas-3.16.3/comp/src/gb.scanner/.src/ScannerOption.class000066400000000000000000000055001411575327000232660ustar00rootroot00000000000000' Gambas class file Export Property Read Group As String ''Return the group option name Property Read IsRange As Boolean ''Indicate if the option give a range between too value Property Read MaxValue As Float ''Return the range max value Property Read MinValue As Float ''Return the range min value Property Value As Variant ''Return the current value of the option Property Read List As String[] ''If the value is a string return the list of the available values Property Read IsActive As Boolean ''Return if this option is activate Property Read Info As String ''Return some info about the option Property Read Name As String ''Return the option name Property Read Unit As String ''Return the Unit if option is numbers Property Read Steps As Integer ''Return Steps Property Read Modified As Boolean ''Return if the current value have been modified Private $bModified As Boolean Public _Group As String Public _IsRange As Boolean Public _MaxValue As Float Public _MinValue As Float Public _Value As Variant Public _List As String[] Public _IsActive As Boolean = True Public _Info As String Public _Name As String Public _Command As String Public _Unit As String Public _Steps As Float Public _Relative As Boolean Private Function Group_Read() As String Return _Group End Private Function IsRange_Read() As Boolean Return _IsRange End Private Function MaxValue_Read() As Float Return _MaxValue End Private Function MinValue_Read() As Float Return _MinValue End Private Function Value_Read() As Variant Return _Value End Private Sub Value_Write(Value As Variant) Dim iFind As Integer _Value = Value If Me.IsRange Then If TypeOf(Value) <> gb.Integer And If TypeOf(Value) <> gb.Float Then Error.Raise("This option require a number value") _Value = Max(Min(Me.MaxValue, _Value), Me.MinValue) If _Value <> Value Then Error "Warning: Option: '" & Me.Name & "' -> Value out of range... change to : " & _Value Else If Not _List.Exist(Value) Then Error "Warning: Option '" & Me.Name & "' -> Value not in the list..." iFind = _List.Find(Value & "*", gb.Like) If iFind > 0 Then _Value = _List[iFind] Error "Warning: Option '" & Me.Name & "' -> Near value found: Set to '" & _Value & "'" Endif Endif Endif $bModified = True End Private Function List_Read() As String[] Return _List End Private Function IsActive_Read() As Boolean Return _IsActive End Private Function Info_Read() As String Return _Info End Private Function Name_Read() As String Return _Name End Private Function Unit_Read() As String Return _Unit End Private Function Steps_Read() As Integer Return _Steps End Private Function Modified_Read() As Boolean Return $bModified End gambas-3.16.3/comp/src/gb.scanner/.src/Scanners.class000066400000000000000000000057021411575327000222640ustar00rootroot00000000000000' Gambas class file Export Create Static Public Struct ScannerInfo Vendor As String Model As String Type As String End Struct Static Private colCache As New Collection Static Private $colScannerList As New Collection Static Private $aScannerNames As String[] ' Static _Vendors As New String[] ' Static _Models As New String[] ' Static _Types As New String[] Static hProcess As Process Static Private $ret As String Static Private $IsInit As Boolean Event Found Static Public Sub _init() If Not System.Exist("scanimage") Then Error.Raise("Scanner CLI tool is not detected. Please Install the Sane package") Endif ' GetList(True) '$IsInit = True End Public Sub Search(Optional bWait As Boolean) Dim sRet As String If hProcess Then Return $colScannerList.Clear $aScannerNames = Null If Not bWait Then $ret = "" hProcess = Exec ["scanimage", "--formatted-device-list", "%d|%v|%m|%t%n"] For Read As "Process" Else Exec ["scanimage", "--formatted-device-list", "%d|%v|%m|%t%n"] To sRet FillList(sRet) Endif End Public Function _GetInfo(sDeviceName As String) As ScannerInfo If Not $aScannerNames Then Search(True) If $colScannerList.Exist(sDeviceName) Then Return $colScannerList[sDeviceName] Else 'If Not hProcess Then 'FillList(GetList(False)) Search(True) Return $colScannerList[sDeviceName] 'Endif Endif End Private Sub FillList(sRet As String) Dim s As String Dim ars As New String[] Dim hScanner As ScannerInfo $colScannerList.Clear $aScannerNames = New String[] For Each s In Split(sRet, "\n") If Not s Then Break ars = Split(s, "|") hScanner = New ScannerInfo 'hScanner._Name = ars[0] hScanner.Vendor = ars[1] hScanner.Model = ars[2] hScanner.Type = ars[3] $colScannerList[ars[0]] = hScanner $aScannerNames.Add(ars[0]) Next End ''List all the existing devices Public Function _next() As String Dim s As String If Not $aScannerNames Then Search(True) If IsNull(Enum.Index) Then Enum.Index = 0 Else Inc Enum.Index Endif If $aScannerNames.Count = 0 Or If Enum.Index >= $aScannerNames.Count Then Enum.Stop Return Endif s = $aScannerNames[Enum.Index] Return s End ''Return the given device if exist or fail. Public Function _get(sDeviceName As String) As Scanner Dim hScan As Scanner If Not $aScannerNames Then Search(True) If Not colCache.Exist(sDeviceName) Then hScan = New Scanner(sDeviceName) colCache[sDeviceName] = hScan Else hScan = colCache[sDeviceName] Endif Return hScan End Public Sub Process_Read() $ret &= Read #hProcess, Lof(hProcess) End Public Sub Process_Error(sError As String) Print sError End Public Sub Process_kill() If hProcess.State <> hProcess.Crashed Then FillList($ret) hProcess = Null Raise Found Endif End Static Public Sub Close() Try hProcess.Kill End gambas-3.16.3/comp/src/gb.scanner/next.png000066400000000000000000000024301411575327000202730ustar00rootroot00000000000000PNG  IHDR0 sBIT|d pHYs+tEXtSoftwarewww.inkscape.org<IDATXOleӎ a=L @"$A '/hdd)& ݟeэd:6֎nkkxouۏy~b4_)G\SS#UJ !CWT_0Z7UTTQW-Z,//c2>&N)ppR7[5@,i^Ǐ8B׼^: >\x^|GvCB<_TTf]]]j%'X,.0n3~`]4=][[fw6GQfQ)u4͏nr>JI)[F˲ 8TyyEਔrRgWp8hf@ TxNۅ{zz΍ĞL)NYطo+'dY֕(]=aw.-,,yw}qD$9gsg#Hoo/1 5<<gaU+IENDB`gambas-3.16.3/comp/src/gb.settings/000077500000000000000000000000001411575327000170175ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.settings/.component000066400000000000000000000001041411575327000210150ustar00rootroot00000000000000[Component] Key=gb.settings Version=3.16.0 Authors=Benoît Minisini gambas-3.16.3/comp/src/gb.settings/.directory000066400000000000000000000000411411575327000210170ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.settings/.icon.png000066400000000000000000000245111411575327000205360ustar00rootroot00000000000000PNG  IHDR\rf)IDATxɏ$ם߿/kdIJ\5Z0 K0 0>f`|6`_ <3nHEzZr=EDFfeUeuU.UѝEU~                        h/mMBl0c^d@ׅ(i#5Yw_/~з[!k'EAd4T0q]~_{6'&5 ߕ5lܧ>yM`?A @ -4m5ШЦ ~QEaQ {b{E ~g]pNvw}￿s[zsaik|# ϭ(X+ƟLi&bV/Xf6s>\>~ ?R> ڸθs=o*odS5zOqCϾs{8/Ӆ7ꢹu/~J.hl583j#+Ƴ Hq1R^W bc[ N-hV%^5>QN0}qye3 |g/vN)geP/r]ţsIèTMEb6 25:;^ ň8f|3G.Lf#ƚ V4O흷?R<8,%]SfY I_`5IB!.}i͟1f:>Y:>Q5+D9vmnS<8B-FUEό< ˠ3f^7#o34tE\ ,ȎFEEc~Qh[#'nYY>u0~},?@̸L_@.IdP<,6Q54kG7Y6*w2_<\٩YAaLc=-)\[8Wl39;dut"Ih )KZR32l\NbȲ >Q/OK=ǟh~Ӊ_c{_x4?hgTT_~Qؠf!}H'{UUMb@vT-rΌ5~1,jd~=2 מb՚x=NofVݤx@ٹo>~"#cqg5OXWx-RN0ER~4[o7?ZK/];LN YH V%(mPx-҅==N?S쿂Y`.;qD0 p.X ;(K*d |l8>,6 ײ{Si ;˙ƟAKgIr2H+6T+%YYa$ܑ/hu _+D1l7h<5ĵAhsM͉+B1^6^ᗩ⢏-/O#,y3K 3s6tJR+|l= }ͲeO/]>Π_kJOb*wҢs08&,dv2 Sg2Dxv/&/02T2Ғ~1/kedS=Gv$VHA6X jg ,7Y;jX?O'qa(,]^$:kƙS}DgMq{/|4?qXK H- SKz c_&m<)( y)tBg@barz0ً$NDµ?A?c\ 'kmdvA$03ͶMD I> u6+B{g׃Oi%Aʬ,I8N;ks (\:'ybuJXygUBo8i^勃(`I<?W O\'k vMkq,?WG\) (b^;7;Zss i~q, Meдl ~ogjف/6J&\I TQ"g:j"#LYޓ'!kp*f~{kIM(3WPʀXc)͏bfarq-Hq,<>Xjᣏ>UwXǬk<Đ C J (1$MɟgZ H?D!@%A 3YQbHD!@%AQbh(7% C%S,(1(5e)H?ϴ/ DÏGp\ YfAe   ,m|UaPz .~B$ =?ž` (Is)4TteQ3qff@QT(z0x!".`k * *A` 4s8a qsI! -@2дt4L @[#ʅ@^s[Rv!dˣ~qu('cvDÍJC7³; U] [_s7LlO{ꦆmXu׮\#zš:.=xD  _Z^ ?N0mnXhWtXMY\ ƓO͑9.־3Yks9><o^UEϏ1 bQr/Hba[6v تfDXB{N={o*`TaMk 5 L7 呃O<G\0/ 8aQ 1 h!J͚P#18t.Fa.Y0 |L5׏2Ha{8B ofˆQY{!~{< b.R/.+$w po/GwåAp#7 r9/D*ݼ >G#tP9WH9n_?G1>ws)]Ex;]]/F9#BBAˆ,w_K]LgU 0Tqx"U2)ƣ>y9#! *\ $VO;/x7Du(!/пᗻ}$ICrz2?\e T4\AᫎGA`h j [Wai 0n H yQC5S㾇KWYߋtFs8T'/-*53Y+`psE3xb~ݦ5Nja/%Hly,lvЁ*j!'-_Cn|g`j BB@K${~G_u\ 0 7k&^oV]U0 b(,հBu]QP34*C¥F19  |q4uoز+w7—G#<7?3TPTTE~i`d{x:͑) 5Ci*6*z~{hC]/| mTqfnAC$J7J]BJb 5)Ua**'AɟgrHz~QQ8הo ܪ[c_\|q`VĻ[5TM(H[Z7:@?qD16m:t(Jph_?8Qgh} ڢ@!D8I54ܨw^kX{.>;pΛgTt5,]qY<{y0 R^uiqD`wo^:ώFdOH,KD&ȁ40TmKVܪ~[WbIW]Gx<#TMmVf1p*Pr/53s QvxqBxs; cuSCԠ/i]B D=j6l|cƖm`χ>}xgTU؂(@0 b7:#E_19;\CA%&]?B׋fZ6Zxu,sB;Q"0b;Ӿ''bwp}?F4 >~1 c< d/9KL SCc.@ɟgH(ssLYu2^lNjx\4^`;G2? 龃]'@p$gj@((J@֟]'N>bGc节nWTC`$"q264UY1` L >)1}DVf $B Q Ld,Џ9Azx61|ŅM 㺆Y¦K %OX`WXSlC=5* ]&0?a{1TxD s9?;M"Biu 7Qx6q10;w}*[Wa 4 %"L ̓0Pd0TQ"S1 kںB?"|~8BϟN=0H.)CSV,AA5<Mk !4σut Ϊ7Uy1?SS&PXH?+:}eJ{ z}l^oUЪξ @& ݨ@E ; w:^#7HSGduvEGӒ Jɟg@pz!^::n'w({jw6جhZ4Y-Kǻ[UmX'Ԥ~q|e+ ܴB @ ɪ:a=zdNlpecӖ4m=lu(opaA> ac6P3T .* `/d^볉1y4hi2ߺ N78gO͡7?Q3qf:ra<@".0 c:x5{JW@[W nǻ8#3.q?GnC>b>FtfՎEC`i뮋N]r^76^oZ]e?c}xbwEڻL*[u *#.,7J8bɫ2W`&2")q?cb?ߪJM ;U[Ƣ_n! `8aG:.r.ӞQ/yYD\Ks]Qа4l6m KK|d-͚M?! s19ˊ۬n2warՀ H^':~al]ך*ruR2\_Vd&nʲ?XYYQ8W2wjbf.1Ye ɸy-K~J_.d, BUWF{m S?+,ѧ [٪J@AY;OοNӲU5*Q5a*r)ov)o4-l:loeP `!s>[f a#Z*&zҝNϝP3ToW֦MC` h߮11g Sv7,[+ 񻎋ن `T77k/ƤT|&lC\ҫ*x># Y{YYM>CQrMohJZXAаiبhY:b.x95Tv- Pp0&TYV6v~^:ϐn-6,[%cypFs,L*jxgmDE[%$P7b3 Sǝ5eة8rCq" ~E?#. ֮l[UL+ `h髺y T 9U#<"'/G:~ e)mK;UYEҡ_\19ek* 80zAu 5C76F!v$E1('B@IvrạajhY:ZvjW -/1{SS mŸw; c, l;شML)>XV1Ws9!^8~ N*ʠ lEl #/ēO_<1Y%ufHͭ*SA 孃t0a&lLZp/cU~O{́8GW Z6Y qߒ?d,C;nU غ ɉDCn.Zv>XΚcg2f 7q0 }m4  EZAnv ;U6 @WL!\J#jo-e+G{|uqsmixUov-Ou& ,1X%wݶ !3vE \e~rYc7 <C|`Ε4M ooTv om aə L8z^'}z9߮Ҍ5r'Oz. ; Qa Vol`34 .g*o |tPw7 *AَBn cz!`[5Sn ~s'L ⫎.}?(JU08Y3ݻm|FLM!!@tUAqff7{X8%tτBQ *hZ KS`l"' i@H?L1ˣ|ۗe>pf⃝:>ܩ iG?q$\Ъ` 5^| W>Y3MTMlT 4L . |/}DҒxw!~'1 fv_o kٴaLꆆm0 ' ,w%8pC9> @XzWݯPchnL|S÷n4F KI{](,M sxqѝc qc\n AUQ[SqQw7jxenikgnJLHM.i5m<3'w Ar SMo*߶qab6вt4 zW wjP-߲4pC/syaP>`A]e+[SQUT4[[cV2\ 5"׶tUŝlE8pC;OnroV0ۋOSX[uwnLlTt4LWu4jOBkDVۯHi p>x0 g ]5XrYciFDQU0\3YkLQ5J],矧5o*LMTaOXcՄ*pr N5 [[4yՀ׀R Oٟg 3MD!@%AQb(H?T(9~ C J (1$MɟgĐ C z= "/" And If Left(Path) <> "~" Then If Not Path Then Path = Settings.DefaultDir &/ Application.Name & ".conf" Else If Path Begins "./" Then Path = "." & Path Else If Path Begins "../" Then Else Path = Settings.DefaultDir &/ Path & ".conf" Endif If Left(Path) = "/" Then For Each sElt In Split(Settings.DefaultDir, "/") sPath &/= sElt Try Mkdir "/" & sPath Next Endif Endif $sTitle = Title $sPath = Path Load() End Public Sub _free() Try Me.Save If Error Then Error "gb.settings: warning: unable to save settings: "; $sPath; ": "; Error.Where;; Error.Text End Public Sub Save() Dim aKey As New String[] Dim cSave As Collection Dim cSlot As Collection Dim sKey As String Dim hFile As File Dim vVal As Variant Dim sTemp As String Dim cModify As Collection Dim sSlot As String If Not $bModify Then Return If Not IsDir(File.Dir($sPath)) Then Error "gb.settings: warning: unable to save settings: directory does not exist: "; File.Dir($sPath) Return Endif 'Debug $sPath $bModify = False sTemp = $sPath & "." & CStr(Application.Id) & "~" Try Kill sTemp If Not $bModifyAll Then cSave = $cSlot cModify = $cModify Load For Each cModify sKey = cModify.Key sSlot = GetSlot(sKey) sKey = File.Name(sKey) If cSave.Exist(sSlot) Then Me[sSlot &/ sKey] = cSave[sSlot][sKey] Else Me[sSlot &/ sKey] = Null Endif Next Endif For Each cSlot In $cSlot aKey.Add($cSlot.Key) Next aKey.Sort hFile = Open sTemp For Create If $sTitle Then Print #hFile, "# "; $sTitle Endif For Each sKey In aKey cSlot = $cSlot[sKey] If cSlot.Count Then Print #hFile, "[" & sKey & "]" For Each vVal In cSlot Print #hFile, cSlot.Key; "="; ToString(vVal) Next Print #hFile Endif Next Close #hFile Try Move sTemp Kill $sPath Catch Error.Raise("Unable to save settings: " & Error.Where & " " & Error.Text) End Private Function GetSlot(sKey As String) As String Dim sSlot As String sSlot = File.Dir(sKey) If Not sSlot Then sSlot = "/" If sSlot = "/" Then sSlot = "General" Endif If Left(sSlot) = "/" Then sSlot = Mid$(sSlot, 2) Return sSlot End Public Function _get(Key As String, Optional {Default} As Variant) As Variant Dim hSlot As Collection Dim sSlot As String 'Dim dDate As Date sSlot = GetSlot(Key) Key = File.Name(Key) hSlot = $cSlot[sSlot] If hSlot And If hSlot.Exist(Key) Then Return hSlot[Key] Endif Return {Default} End '' Return if the specified settings key has a value Public Sub Exist(Key As String) As Boolean Dim hSlot As Collection Dim sSlot As String 'Dim dDate As Date sSlot = GetSlot(Key) Key = File.Name(Key) hSlot = $cSlot[sSlot] If hSlot And If hSlot.Exist(Key) Then Return True End Private Sub SameSetting(vOld As Variant, vNew As Variant) As Boolean Dim I As Integer Dim vOldVal As Variant Dim vNewVal As Variant If IsNull(vOld) And If IsNull(vNew) Then Return True If TypeOf(vOld) <> gb.Object And If TypeOf(vNew) <> gb.Object Then Return vOld = vNew If Not (vOld Is Array) Then Return If Not (vNew Is Array) Then Return If vOld.Count <> vNew.Count Then Return If vOld = vNew Then Return For I = 0 To vOld.Max vOldVal = vOld[I] vNewVal = vNew[I] If TypeOf(vOldVal) = gb.Object Or If TypeOf(vNewVal) = gb.Object Then Return If vOldVal <> vNewVal Then Return Next Return True End Public Sub _put(Value As Variant, Key As String) Dim hSlot As Collection Dim sSlot As String sSlot = GetSlot(Key) hSlot = $cSlot[sSlot] If Not hSlot Then hSlot = New Collection $cSlot[sSlot] = hSlot Endif Key = File.Name(Key) If Not SameSetting(hSlot[Key], Value) Then hSlot[Key] = Value $cModify[sSlot &/ Key] = True $bModify = True 'Save() Endif End Public Sub Clear(Optional ParentKey As String, Recursive As Boolean) Dim sSlot As String Dim hSlot As Collection Dim vVal As Variant Dim sRemove As String If Not ParentKey Then If $cSlot.Count Then $cSlot.Clear $bModify = True $bModifyAll = True Endif Return Endif sSlot = GetSlot(ParentKey &/ "g") If Not Recursive Then hSlot = $cSlot[sSlot] If hSlot Then sRemove = sSlot GoSub REMOVE_SLOT Endif Else For Each hSlot In $cSlot sRemove = $cSlot.Key If sRemove = sSlot Or If sRemove Begins sSlot & "/" Then GoSub REMOVE_SLOT Endif Next Endif Return REMOVE_SLOT: For Each vVal In hSlot $cModify[sRemove &/ hSlot.Key] = True Next $cSlot.Remove(sRemove) $bModify = True Return End Private Sub ReadWindow(hWindow As Window, sKey As String) Dim aPos As Integer[] Dim X, Y, W, H, S As Integer ' Dim D As Integer ' Dim hObserver As Observer aPos = Me[sKey &/ "Geometry"] If Not aPos Or If aPos.Count < 2 Then Return Else X = aPos[0] Y = aPos[1] If aPos.Count > 2 Then W = aPos[2] H = aPos[3] If aPos.Count > 4 Then S = aPos[4] If S >= Screens.Count Then S = 0 Endif Else W = hWindow.W H = hWindow.H Endif Endif X += Screens[S].AvailableX Y += Screens[S].AvailableY ' If Not hWindow.Parent And If Component.IsLoaded("gb.desktop") Then ' D = -1 ' Try D = aPos[5] ' If D >= 0 Then ' hObserver = New Observer(hWindow, True) As "Window" ' hObserver.Tag = D ' $cObserver[hWindow.Id] = hObserver ' Endif ' Endif ' If Object.Type(hWindow) = "FHelpBrowser" Then ' Print "ReadWindow: "; X;; Y; " / "; S;; Screens[S].AvailableX;; Screens[S].AvailableY ' Endif If hWindow.Resizable Then W = Max(32, W) H = Max(32, H) If hWindow.Modal Then hWindow.Resize(W, H) hWindow.Center Else hWindow.Move(X, Y, W, H) Endif Else If Not hWindow.Modal Then hWindow.Move(X, Y) Endif End Private Sub WriteWindow(hWindow As Window, sKey As String) Dim X, Y, W, H, S As Integer 'Dim D As Integer Dim aVal As Integer[] X = hWindow.X Y = hWindow.Y W = hWindow.Width H = hWindow.Height If hWindow.TopLevel Then S = hWindow.Screen If S >= 0 Then X -= Screens[S].AvailableX Y -= Screens[S].AvailableY Else S = 0 Endif Endif aVal = [X, Y, W, H, S] ' If Not hWindow.Parent And If Component.IsLoaded("gb.desktop") Then ' hDesktopWin = New DesktopWindow(hWindow.Id) ' D = -1 ' Try D = hDesktopWin.Desktop ' If Error Then Debug Error.Text ' Debug hWindow.Name;; "Desktop:";; D ' If D >= 0 Then aVal.Add(D) ' Endif Me[sKey &/ "Geometry"] = aVal End Private Sub GetTopLevel(hCtrl As Object) As String Return Object.Type(hCtrl.Window) End Public Sub Read(hObject As Object, Optional sKey As String, Optional vDefault As Variant) If Object.Is(hObject, "Window") Then If Not sKey Then sKey = Object.Type(hObject) ReadWindow(hObject, sKey) Else If Not sKey Then Try sKey = GetTopLevel(hObject) &/ hObject.Name Else If Left(sKey) <> "/" Then Try sKey = GetTopLevel(hObject) &/ sKey Endif Try hObject.Settings = Me[sKey, vDefault] Endif End Public Sub Write(hObject As Object, Optional sKey As String) If Object.Is(hObject, "Window") Then If Not sKey Then sKey = Object.Type(hObject) WriteWindow(hObject, sKey) Else If Not sKey Then Try sKey = GetTopLevel(hObject) &/ hObject.Name Else If Left(sKey) <> "/" Then Try sKey = GetTopLevel(hObject) &/ sKey Endif Try Me[sKey] = hObject.Settings Endif End Private Function Path_Read() As String Return $sPath End ' Static Public Function Array(...) As String[] ' ' Dim aVal As New String[] ' Dim iInd As Integer ' Dim sVal As String ' Dim vVal As Variant ' ' For iInd = 0 To Param.Max ' vVal = Param[iInd] ' If IsBoolean(vVal) Then ' sVal = IIf(vVal, "1", "0") ' Else ' sVal = CStr(vVal) ' Endif ' aVal.Add(sVal) ' Next ' ' Return aVal ' ' End ' STATIC PUBLIC FUNCTION FromString(Value AS String) AS String[] ' ' DIM aRet AS NEW String[] ' DIM iInd AS Integer ' ' aRet = Split(Value, ",", "\"") ' FOR iInd = 0 TO aRet.Max ' aRet[iInd] = Replace(aRet[iInd], "\"\"", "\"") ' NEXT ' ' RETURN aRet ' ' END ' Public Sub Reload() Load End Private Function Keys_Read() As _Settings_Keys _Settings_Keys._Slot = $cSlot _Settings_Keys._Parent = "" Return _Settings_Keys End Static Private Function DefaultDir_Read() As String Dim sPath As String = Application.Env["XDG_CONFIG_HOME"] If Not sPath Then sPath = System.User.Home &/ ".config" Return sPath &/ "gambas" & System.Version End Static Private Sub WriteValue(vVal As Variant) Dim sStr As String Dim iPos As Integer Dim aArray As Array Dim cCol As Collection Select Case TypeOf(vVal) Case gb.Null $sStr &= "Null" Case gb.Boolean If vVal Then $sStr &= "True" Else $sStr &= "False" Endif Case gb.Byte, gb.Short, gb.Integer, gb.Long $sStr &= CStr(vVal) Case gb.Float sStr = CStr(vVal) If InStr(sStr, ".") = 0 And If InStr(sStr, "E", 1, gb.IgnoreCase) = 0 Then sStr &= ".0" $sStr &= sStr Case gb.Date $sStr &= Chr$(34) & CStr(vVal) & Chr$(34) Case gb.String sStr = Quote(vVal) Do iPos = InStr(sStr, "\\", iPos + 1) If iPos = 0 Then Break If Mid$(sStr, iPos + 1, 1) = "x" Then Mid$(sStr, iPos, 4) = "\\u00" & Mid$(sStr, iPos + 1, 2) Else Inc iPos Endif Loop $sStr &= sStr Case Else If vVal Is Array Then aArray = vVal $sStr &= "[" For iPos = 0 To vVal.Max If iPos Then $sStr &= "," WriteValue(vVal[iPos]) Next $sStr &= "]" Else If vVal Is Collection Then cCol = vVal $sStr &= "{" For Each vVal In cCol If iPos Then $sStr &= "," WriteValue(cCol.Key) $sStr &= ": " WriteValue(vVal) Inc iPos Next $sStr &= "}" Endif End Select End '' Convert a value into its settings internal string representation Static Public Sub ToString(Value As Variant) As String $sStr = "" WriteValue(Value) Return $sStr End Static Private Sub GetChar() As String Dim sCar As String If $iPos > Len($sStr) Then Return sCar = Mid$($sStr, $iPos, 1) Inc $iPos Return sCar End Static Private Sub ReadChar() As String Dim sCar As String Do sCar = GetChar() If Not sCar Then Return If sCar > " " Then Return sCar Loop End Static Private Sub ReadToken() As String Dim sToken As String Dim sCar As String sCar = ReadChar() If Not IsLetter(sCar) Then Return sCar sToken = sCar Do sCar = GetChar() If Not sCar Then Break If Not IsLetter(sCar) Then Dec $iPos Break Endif sToken &= sCar Loop Return sToken End Static Private Sub ReadString() As String Dim sCar As String Dim sString As String Dim iPos As Integer Do sCar = GetChar() If Not sCar Then Error.Raise("Non terminated string") If sCar = Chr$(34) Then Return sString If sCar = "\\" Then sCar = GetChar() If Not sCar Then Error.Raise("Non terminated string") iPos = InStr("bfrtn", sCar) If iPos Then sCar = Mid$("\b\f\r\t\n", iPos, 1) ' Else If sCar = "u" Then ' Try sCar = String.Chr$(Val("&H" & Mid$($sStr, $iPos, 4))) ' If Not Error Then $iPos += 4 Else ' Keep character Endif Endif sString &= sCar Loop End Static Private Sub ReadObject() As Collection Dim sCar As String Dim cObject As New Collection Dim sKey As String Do sCar = ReadChar() If sCar = "}" Then Return cObject If sCar <> Chr$(34) Then Error.Raise("String expected") sKey = ReadString() sCar = ReadChar() If sCar <> ":" Then Error.Raise("Colon expected") cObject[sKey] = ReadValue() sCar = ReadChar() If sCar = "}" Then Return cObject If sCar <> "," Then Error.Raise("Comma expected") Loop End Static Private Sub ReadArray() As Array Dim sCar As String Dim aArray As New Variant[] Dim iInd As Integer Dim iType As Integer Dim aTypedArray As Object Do sCar = ReadChar() If sCar = "]" Then Break Dec $iPos aArray.Add(ReadValue()) sCar = ReadChar() If sCar = "]" Then Break If sCar <> "," Then Error.Raise("Comma expected") Loop If aArray.Count = 0 Then Return Null iType = TypeOf(aArray[0]) For iInd = 1 To aArray.Max If TypeOf(aArray[iInd]) <> iType Then Return aArray Next Select Case iType Case gb.Boolean aTypedArray = New Boolean[aArray.Count] Case gb.Integer aTypedArray = New Integer[aArray.Count] Case gb.Float aTypedArray = New Float[aArray.Count] Case gb.String aTypedArray = New String[aArray.Count] Case gb.Object aTypedArray = New Object[aArray.Count] Default aTypedArray = New Variant[aArray.Count] End Select For iInd = 0 To aArray.Max aTypedArray[iInd] = aArray[iInd] Next Return aTypedArray End Static Private Sub ReadNumber(sNumber As String) As Variant Dim sCar As String Dim vNumber As Variant Dim bFloat As Boolean Dim iPos As Integer Do sCar = GetChar() If Not sCar Then Break iPos = InStr(".eE-+0123456789", sCar) If iPos = 0 Then Dec $iPos Break Endif If iPos <= 3 Then bFloat = True sNumber &= sCar Loop If bFloat Then Try vNumber = CFloat(sNumber) Else Try vNumber = CInt(sNumber) Endif If IsNull(vNumber) Then Error.Raise("Incorrect number") Return vNumber End ' Static Private Sub ReadType() As Integer ' ' Dim sCar As String ' Dim iPos As Integer ' ' iPos = $iPos ' sCar = ReadToken() ' ' If sCar = "{" Then ' Return gb.Variant ' Else If sCar = "[" Then ' Return gb.Object ' Else If sCar = Chr$(34) Then ' Return gb.String ' Else If sCar = "-" Or If IsDigit(sCar) Then ' Return TypeOf(ReadNumber(sCar)) ' Else If sCar = "null" Then ' Return gb.Null ' Else If sCar == "true" Or If sCar == "false" Then ' Return gb.Boolean ' Else ' Error.Raise("Incorrect token: " & Quote(sCar)) ' Endif ' ' $iPos = iPos ' ' End Static Private Sub ReadValue(Optional bNotStrict As Boolean) As Variant Dim sCar As String sCar = ReadToken() If sCar = "{" Then Return ReadObject() Else If sCar = "[" Then Return ReadArray() Else If sCar = Chr$(34) Then Return ReadString() Else If sCar = "-" Or If IsDigit(sCar) Then Return ReadNumber(sCar) Else If sCar == "null" Then Return Null Else If sCar == "true" Then Return True Else If sCar == "false" Then Return False Else If bNotStrict Then Return $sStr Else Error.Raise("Incorrect token: " & Quote(sCar)) Endif End '' Return a value from its settings internal string representation Static Public Sub FromString(Value As String) As Variant Dim vVal As Variant $sStr = Value $iPos = 1 vVal = ReadValue(True) $sStr = "" Return vVal End Private Function Count_Read() As Integer Dim cCol As Collection Dim iCount As Integer For Each cCol In $cSlot iCount += cCol.Count Next Return iCount End gambas-3.16.3/comp/src/gb.settings/.src/_Settings_Keys.class000066400000000000000000000040431411575327000236460ustar00rootroot00000000000000' Gambas class file ''' This virtual class allows to enumerate all top-level keys of a settings file, or all keys under a specific slot. Export Create Static '' Return the number of keys of the current parent slot, or the number of top-level slots. Property Read Count As Integer '' Return all keys of the current parent slot, or all top-level keys, as a string array. Property Read All As String[] Public _Slot As Collection Public _Parent As String Private $aKeys As String[] '' Return a virtual object used for enumerating all keys under the given ~Parent~ key of the setting file. Public Sub _get(Parent As String) As _Settings_Keys Dim hKeys As _Settings_Keys hKeys = New _Settings_Keys hKeys._Slot = _Slot hKeys._Parent = _Parent &/ Parent Return hKeys End Private Sub GetKeys() As Boolean Dim vVal As Variant Dim cCol As Collection If _Parent Then Try cCol = _Slot[_Parent] Else cCol = _Slot Endif If Not cCol Then Return True $aKeys = New String[] For Each vVal In cCol If Not _Parent And If vVal.Count = 0 Then Continue $aKeys.Add(cCol.Key) Next $aKeys.Sort 'Debug $aKeys.Join() End '' Enumerate the keys of the current parent slot, or the settings files top-level slots. Public Sub _next() As String Dim sKey As String If IsNull(Enum.Index) Then If GetKeys() Then Enum.Stop Return Endif Enum.Index = 0 Endif If Enum.Index >= $aKeys.Count Then Enum.Stop Else sKey = $aKeys[Enum.Index] Inc Enum.Index Return sKey Endif End '' Return if the current parent slot has the specific key, or if there is a top-level slot with that key. Public Sub Exist(Key As String) As Boolean If Not $aKeys Then GetKeys() If $aKeys Then Return $aKeys.Exist(Key) End Private Function Count_Read() As Integer If Not $aKeys Then GetKeys() If $aKeys Then Return $aKeys.Count End Private Function All_Read() As String[] If Not $aKeys Then GetKeys() If $aKeys Then Return $aKeys.Copy() Else Return New String[] Endif End gambas-3.16.3/comp/src/gb.term.form/000077500000000000000000000000001411575327000170705ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.component000066400000000000000000000002671411575327000211000ustar00rootroot00000000000000[Component] Key=gb.term.form Version=3.15.90 State=2 Authors=Fabien Bodard (gambas.fr@gmail.com) Needs=ImageIO Requires=gb.term Excludes=gb.gui,gb.gui.qt,gb.gtk3,gb.gtk,gb.qt4,gb.qt5 gambas-3.16.3/comp/src/gb.term.form/.directory000066400000000000000000000000411411575327000210700ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.term.form/.hidden/000077500000000000000000000000001411575327000204015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/CHANGELOG000066400000000000000000000001741411575327000216150ustar00rootroot00000000000000[GB.TERM.FORM] * OPT: Make the object placement more logical. the 0,0 pos now is the left corner after the border. gambas-3.16.3/comp/src/gb.term.form/.hidden/control/000077500000000000000000000000001411575327000220615ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termbutton.png000077700000000000000000000000001411575327000354152../../../../../app/src/gambas3/img/control/button.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termcheckbox.png000077700000000000000000000000001411575327000361432../../../../../app/src/gambas3/img/control/checkbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termframe.png000077700000000000000000000000001411575327000347532../../../../../app/src/gambas3/img/control/frame.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termhbox.png000077700000000000000000000000001411575327000344672../../../../../app/src/gambas3/img/control/hbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termlabel.png000077700000000000000000000000001411575327000347252../../../../../app/src/gambas3/img/control/label.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termlistbox.png000077700000000000000000000000001411575327000357372../../../../../app/src/gambas3/img/control/listbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termpanel.png000077700000000000000000000000001411575327000347652../../../../../app/src/gambas3/img/control/panel.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termpicturebox.png000077700000000000000000000000001411575327000371372../../../../../app/src/gambas3/img/control/picturebox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termradiobutton.png000077700000000000000000000000001411575327000374532../../../../../app/src/gambas3/img/control/radiobutton.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termscrollbar.png000077700000000000000000000000001411575327000365352../../../../../app/src/gambas3/img/control/scrollbar.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termtextbox.png000077700000000000000000000000001411575327000357612../../../../../app/src/gambas3/img/control/textbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.hidden/control/termvbox.png000077700000000000000000000000001411575327000345232../../../../../app/src/gambas3/img/control/vbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.icon.png000066400000000000000000000256421411575327000206150ustar00rootroot00000000000000PNG  IHDR\rfiCCPsRGBc``<L y%EAN Q H 17`d`v D20\ ,aã,Z?H:b'A vyIA b'@39>@B:; Z dg`<!4a{;BVmbe;TZQwd(H,JK34-rH \wk10I 'Bq`6z7 pHYs+ IDATxo$G߿~[jI3;};.l ^l0``faڻݳFҴ~g=>DFVVHb2Ȍ;~AAAAAAAAAAAAAAAAAAAAAAA1/E/RxnL\ &^3])O}k|t)?B5K'%“toJ},ϊs+?ן$}l Z92RN_1Y:OL'_Y]_O$++%q׵𑐐R=xǿ~OJ H_Oƥ.bkN> F\X#!p[&ظ>vM1 s> U-kקz^NzBLM,3['E !cmFkt&foRߥ8~~8jr߈ F\Y[1ϜZUiCvl35YhR{Vzq|/qRb:'h8%1>y<7/=8OloIT h7 5,=צ`Ź'he椿`^6_SbcOy]HQq aұ\`yt q|!{ƽ?xqjhV[sw&?ŀfu䟌L~~3rT}:ZL][)]wt<;n=聞Wabeu \+(?Yܚsͯ-1~B+3LX/偱L?""\=Q??1igȲ5exmәYiXm)#S}}N9_,КMWXx.!2 &:PX!S,"Es@ktf-ciӹrก ȿן5Ǘ++'uxD$W~]zW~N 4Q<\-Mnr~$Νy jRf#&J\s6 N&Fϙ;  L-P4.3=J'}|N0_Z^W(t%(?P/K_3]VRj|-{#I.3?&5hs0H&8$sL3:Vc,<3)yG߽`Jу+Gp04}`D&, f!5l@jJJ1)E~r(} yBkq?<i"`f!1I5Mo?/ q#sΗYQA2113r r"Oϧ{ (@0/zSީ]דF@B@ʑYؘgәTa@ \&$JhrA$ RJ+Hs9fߧcnaB` {Ykg>e·W7abI1z$ `2_6at Oܧ^drɯ҃|# @:n2Ls>H<+E bx^ /t]{ Oy\L&>Nx __00 Amk* Iˏ)c_ky?ҁƯW\,q7 $2\i9sRs9$ÉkME*iGcbyL,(cd5 *ay(Dɏ;Vʼ =wra0-'&x &381^ZL]<xgLkH)Ǐ,Y-&rI%Q. Ϳ@ۿoIc\Ypm@J @.arGO~ ;Z5&l4؀HiJ8`"R2BS(&~1\ %SsTLalS|rYxcШH[$L[\ Le(5?+E'. RY2 e?d#Wdphm5yi:W!K^QAȒ; 4!JO5?r EMX.и0]yn|NHMhHvW?Z%XZ*FaZ,ڇ ހ4&]7J>PbŸבwȑ F22Ok~e352u!?IZ2)jߧi|cVdq_~[ gOFI׃4Q"Pӗ:_Z+!Gˏ2_\]GV!&{95~-uJ yzq'4tOYnkݝ_W]K7I8z\ @c WQDEąOd1Т\dO^դu!FBE兹?a ,I <~ud"p.Y ?5ZYP$) _XFU!11__GHd'\; @߱ c~שE|%E8kϵ4pYޤ\[`Tۯ,;b`ia&O\c1 5Ӭ\?6`sq`i npap[znPcyA 4W@Pn%'%Xcs |"Z/!ݱ:(A>#P~F?qm*g /Ovp|x=G$'n27"0 c Bvʀ Jh:'n27pF`j>i|H @SJ)|P=KH[[-]؅?Mskh8ҚlyL~rb#9s-2:/.>kxV%"Ee'K=ȦSpeK\'@dHs7?|omZ&R GY$ˊ6V[O?Av5e2f}<ڟa 0@Iz@%a?p rsy$9R9 yb/{nGT7D\ aCu| ci6rt @"S ^XlkxZG m:Ѭ /z!y@1W=4e?jo}<D2d$kڡ azrZ&찔B(ųN @ p.?k_,%"Lv!/_u푏N H )w:n74B*g^N;k` ΰ$^ʍgG`vxǫ~d_q}?0`2$S uۄm,FH N3푏aAH3 PiH,8wG? L2J$ǛM`${~xqG;=<R!sd\.$oB|b׏6 O$B,T^`s \WC|ǯ8 S$B*8iKWH .{@e S|;@*$r; pg9\qNAˆ,+@_k^Lt c؜c69C=.O_7xr0gr=?F 1ԃ* +@3lCի.qgxinH 0L.2)!: x/vzboA0` i1 4i'~692C i?UB[$~ci7g)WY Ga'b " T'g(UP,+j/kxf᪇+.n7H^B1$C&%|dBU bQ<@2а/~H >`O d@ <9~99Sp6q_Ya(g[a L(OR3X Ux#_\k~?p'`;}27'5` 5@͚ P D;y/D0C~rX !^C TKh[ MۂЏKdQ !WIg5 A0uh5 ā^`g u@6TzrT~&`$B38f>V?8x ]Wt´Lgh4|V J&gXF)󕈝0źa}_/R&_ ׽|'1Ѱ  ,_"LUwV-rdu||7nN7,o\|Wqx `^^Τ4+, Dv?_>*wh˧a$  DeǪk~op2Y7G>Q\[uWjxw+<3opp\4 [-qB"JQR,i8 b3|w@0cZкA`D@Qv$h[5a!H^Cg CR ah{~o.>b{grH  dY^ACSp$E)vw{0AəI& Stɔ|DFx vzxS,I3i0yX LgHŹMw[*^Nd\$Ae/d[*;ۃq&Ie $C:=AEU?D'LjIy8GӶt,XWԤC`d2;c >p*$zq x1L21v I%I8Sta a_Q7\0k+8$H&0SY\a3xo"np dDA0Te/n.^*Úe`  IeM¢q Mf HD4٩7@u} x]Cf;2uۦZ.k*pv5%\o8 Q^J<@=VkV\`T~& `ę~ ¡`?aם ul&<-kÍ:ܓ]Si0_G`^(_XXMKkT4wHvxQpu*9 cro`x\SmM^; ݏ;c= F6(%؜ayg=t\fjǜ5>ۺ(78ϞcQ8[ sƮ#3Ys$8 wG>wR³ in6r&$TbX_ n711oH?w0 Ngn]FH^ =ēCzx{ݦ B6a^bWnA4ˤftq6k1BP`IyN"쏧]^8B7J7݌pFT^W^5Y1UQ`;L)xrc_Ξ%x ?Nwnɒ ybqkbóh&_$;aWp/[MqL-톍k~Bs 0őgW2pˁV΁(8  YZ.ZqQ 8o*'[.5]mW~mLmeͺ͆ מg&5]50R! S7+ u;zh9&-E}J6]û(82zwéV{V ,9 Zʛdbw޽2(0Tm-'@?Nb)T?Bp|gs Ngwh޺G+rL|cC1R1!A쮹66<[ n?CG=Αw0j 4mƔ4l&<;5x q&G* uO>B&;s4m랍k!;lMNmC-tvŝ&j(8S[pLw}o{aU:uPi-\ c!LEp gXT 6=5s zU~`s3Vlg5g9-½\@۵UwpL5̛~&B"-<W39au@9Ax6J &'Q>V [IDAT5%`kZ ߿3sd*,Ctq&p$E j6]4l[&DMB0 Ily5vn&ZkXMm- 7 2&y'=;߼coӱj&fxCæ2@i04Mǜf c [F t; p9!m[Hkg4`r>gB"0n~ f*u,Z.[pE03Gg@ywY_;hQkp-w I5A\-LNw  f|Nݏa]n7`s`0^q{y 0<{ 0x5 DiVtipxEl3 ƳNvuuY--аF,8o{(oݽӏp$6y00Jne11Oy=fu7J ˸ogmx76<ˀT"{-jо#5 ^1Yʱ3pMtLS c<|wv{x նcgL++Í>l`A`XG۱hڪɥ2O90/vz0ڮu%0N8}~XuMӮǷhQ:W\vl13v&ܰT~r^C|?{}|;0I8&_]/%$hQcfg 8)uCu1|ـksk"NB{WC<EU1&ǝV?z>i/'go8yD ^BZ!xyBa ~?,$VLAg T;  b|w_w1 h:jh6xg<^WTT~& `-=ӏ.AzG!?0S1~|J zɡo}|{cg&ٹz ?jN˅cr2s28V] w.YO3$Qg&Tw$5& 6V-)%D^ $dǏ3QPɡ|ۗi阸p&~cהŲi#j;Cf[MD}˞Z vwvUwVrLxMO Q%ʒx=;8  8w>}{qmF#W6p0jArFB] {~A}?v$ܲ7%^O} -ĝl5[-|VG5~ .t{O}ͰPP4)T? \(M18gߪ'i{h,򙙊ϴpXepih8|B:\@2W, y\>5 ۼξ3 h΀^v D\m]cn:~nF^[#q Xx8 b*=f \h6qa᪇6ѭ&jcu! `0k߾{sj*ZFn4fWh/.Yw-=0ln^mOmrh:&V] WjhpjM&߈_,+Af-ªgoLnڵ{kuUۮaóUQ :2#OycX8ct8E|BK jڰMlm⛼F0P;] ]w1w5<\p`óv-l z7`+P#vMFc/@ DEcP1`PA653 ,5cóv{$NFT!D~7rWp$c" " cE{ӂz/>sM[.n7,-zY,{ո랄~{xUeK@ V] 5 \K*~?Մ5vttͿ{oXSTiOXbjBP{5N8NHAt@'Au9M}bh5 @[ LA@T~D/ATQaHD!@DL-S\0$ CA@T~& * 0DGzĜx:k7~PӧOv}C!@ӧOzK n?a ,Qm*~?S *L][W=2 C *  @ATQa%AT DՀQa(@ATs)P * QaHAAAAAAAAAAAAAAAAAAAAAAAA(ʻIENDB`gambas-3.16.3/comp/src/gb.term.form/.lang/000077500000000000000000000000001411575327000200675ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.lang/it.po000066400000000000000000000016671411575327000210550ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.term.form 3.13.90\n" "PO-Revision-Date: 2019-07-03 17:04 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:2 msgid "This components allows to dialog with a VT102 terminal.\n\nIt provides a way to use common visual objects like windows, standard controls like labels, checkboxes, lists and so on... as in graphical mode.\n\nIt will also provide a standalone class with common VT100 commands to be used by more simple applications." msgstr "Questo componente consente di dialogare con un terminale VT102.\n\nConsente di utilizzare oggetti visivi comuni come finestre, controlli standard come etichette, checkbox, liste e così via... come in modalità grafica.\n\nFornisce anche una classe standalone con comandi comuni VT100 da utilizzare con applicazioni più semplici." gambas-3.16.3/comp/src/gb.term.form/.lang/nl.po000066400000000000000000000017461411575327000210500ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.term.form 3.13.0\n" "PO-Revision-Date: 2019-05-18 13:57 UTC\n" "Last-Translator: gbWilly \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:2 msgid "This components allows to dialog with a VT102 terminal.\n\nIt provides a way to use common visual objects like windows, standard controls like labels, checkboxes, lists and so on... as in graphical mode.\n\nIt will also provide a standalone class with common VT100 commands to be used by more simple applications." msgstr "Dit component staat de dialoog toe met een VT102 terminal.\n\nHet voorziet in een manier om gebruikelijke visuele objecten zoals vensters, standaart controls zoals labels,checkboxen, en zo verder te gebruiken...zoals in grafische modus.\n\nHet voorziet ook in een alleenstaande klasse met gebruikelijke VT100 commando's voor gebruik in eenvoudigere applicaties." gambas-3.16.3/comp/src/gb.term.form/.lang/ru.po000066400000000000000000000040671411575327000210640ustar00rootroot00000000000000# 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" #: comp/src/gb.term.form/.project:19 msgid "" "This components allows to dialog with a VT102 terminal.\n" "\n" "It provides a way to use common visual objects like windows, standard controls like labels, checkboxes, lists and so on... as in graphical mode.\n" "\n" "It will also provide a standalone class with common VT100 commands to be used by more simple applications." msgstr "" "Этот компонент позволяет вести диалог с терминалом VT102.\n" "\n" "Он позволяет использовать общие визуальные объекты, такие как окна, стандартные элементы управления, такие как метки, чекбоксы (флажки), списки и т. д. как в графическом режиме.\n" "\n" "Он также предоставляет отдельный класс с общими командами VT100, которые будут использоваться более простыми приложениями." gambas-3.16.3/comp/src/gb.term.form/.lang/zh.po000066400000000000000000000020541411575327000210510ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.term.form 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:39 UTC\n" "PO-Revision-Date: 2020-11-18 18:39 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:2 msgid "" "This components allows to dialog with a VT102 terminal.\n" "\n" "It provides a way to use common visual objects like windows, standard controls like labels, checkboxes, lists and so on... as in graphical mode.\n" "\n" "It will also provide a standalone class with common VT100 commands to be used by more simple applications." msgstr "" "该组件允许与VT102终端对话。\n" "\n" "它提供了一种使用常见可视对象(如窗口)、标准控件(如标签、复选框、列表等)的方法...,就像在图形模式中一样。\n" "\n" "它还提供一个独立类,其中包含供更简单的应用程序使用的通用VT100命令。" #: Termform1.termform:17 msgid "Bonjour" msgstr "" gambas-3.16.3/comp/src/gb.term.form/.project000066400000000000000000000011641411575327000205410ustar00rootroot00000000000000# Gambas Project File 3.0 Startup=Termform1 UseTerminal=1 RedirectStderr=1 Version=3.15.90 VersionFile=1 Component=gb.image Component=gb.image.io Component=gb.term Description="This components allows to dialog with a VT102 terminal.\n\nIt provides a way to use common visual objects like windows, standard controls like labels, checkboxes, lists and so on... as in graphical mode.\n\nIt will also provide a standalone class with common VT100 commands to be used by more simple applications." Authors="Fabien Bodard (gambas.fr@gmail.com)" TabSize=2 Translate=1 Language=en_US Type=Component Packager=1 DoNotTranslate=".src/Test" gambas-3.16.3/comp/src/gb.term.form/.src/000077500000000000000000000000001411575327000177355ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.src/Align.class000066400000000000000000000003701411575327000220160ustar00rootroot00000000000000' Gambas class file Export Public Enum Normal = &H00, {Left} = &H01, {Right} = &H02, Center = &H03, TopNormal = &H10, TopLeft = &H11, TopRight = &H12, Top = &H13, BottomNormal = &H20, BottomLeft = &H21, BottomRight = &H22, Bottom = &H23 gambas-3.16.3/comp/src/gb.term.form/.src/Arrange.class000066400000000000000000000001271411575327000223430ustar00rootroot00000000000000' Gambas class file Export Public Enum None, Vertical, Horizontal, Column, Row, Fill gambas-3.16.3/comp/src/gb.term.form/.src/Attr.class000066400000000000000000000164311411575327000217030ustar00rootroot00000000000000' Gambas class file Private Const CSI As String = "\e[" Property Read Modified As Boolean Property ColorMode As Integer Property Foreground As Integer Property Background As Integer Property Bold As Boolean Property Dim As Boolean Property Underline As Boolean Property Reverse As Boolean Property Blink As Boolean Private Enum FLAG_BG, FLAG_FG, FLAG_BOLD, FLAG_DIM, FLAG_REV, FLAG_UND, FLAG_BLK 'Private Enum FLAG_BOLD, FLAG_DIM, FLAG_UND, FLAG_REV, FLAG_BLK, FLAG_FG, FLAG_BG Private $aModified As New Boolean[8] Private $aValues As New Boolean[5] Private $iColorMode As Integer = TermColor.Default Private $iForeground As Integer Private $iBackGround As Integer Private $bBold As Boolean Private $bDim As Boolean Private $bReverse As Boolean Private $bUnderline As Boolean Private $bBlink As Boolean Public Sub _new() $iForeground = TermColor.Black $iBackGround = TermColor.White End Private Function Modified_Read() As Boolean Dim b As Boolean For Each b In $aModified If b Then Return True Next End Private Function Foreground_Read() As Integer Return $iForeground End Private Sub Foreground_Write(Value As Integer) If $iForeground <> Value Then $aModified[FLAG_FG] = True $iForeground = Value End Private Function Background_Read() As Integer Return $iBackGround End Private Sub Background_Write(Value As Integer) If $iBackGround <> Value Then $aModified[FLAG_BG] = True $iBackGround = Value End Private Function Bold_Read() As Boolean Return $bBold End Private Sub Bold_Write(Value As Boolean) If $bBold <> Value Then $aModified[FLAG_BOLD] = True Endif $bBold = Value End Private Function Dim_Read() As Boolean Return $bDim End Private Sub Dim_Write(Value As Boolean) If $bDim <> Value Then $aModified[FLAG_DIM] = True $bDim = Value End Private Function Underline_Read() As Boolean Return $bUnderline End Private Sub Underline_Write(Value As Boolean) If $bUnderline <> Value Then $aModified[FLAG_UND] = True $bUnderline = Value End Private Function Reverse_Read() As Boolean Return $bReverse End Private Sub Reverse_Write(Value As Boolean) If $bReverse <> Value Then $aModified[FLAG_REV] = True $bReverse = Value End Private Function Blink_Read() As Boolean Return $bBlink End Private Sub Blink_Write(Value As Boolean) If $bBlink <> Value Then $aModified[FLAG_BLK] = True $bBlink = Value End Private Function ColorMode_Read() As Integer Return $iColorMode End Private Sub ColorMode_Write(Value As Integer) $iColorMode = Value '$bModified = True End Public Sub Send() Print Me._GetString(); End Public Function _GetString(Optional Force As Boolean) As String Dim sValue As String If $aModified[FLAG_BOLD] Then sValue &= IIf($bBold, "1;", "22;") If $aModified[FLAG_DIM] Then sValue &= IIf($bDim, "8;", "28;") If $aModified[FLAG_BLK] Then sValue &= IIf($bBlink, "5;", "25;") If $aModified[FLAG_UND] Then sValue &= IIf($bUnderline, "4;", "24;") If $aModified[FLAG_REV] Then sValue &= IIf($bReverse, "7;", "27;") If $aModified[FLAG_FG] Or Force Then Select Case $iColorMode Case TermColor.Default sValue &= (30 + Max(Min($iForeground, 8), 0)) & ";" Case TermColor.Mode256 sValue &= "38;5;" & Max(Min($iForeground, 255), 0) & ";" Case TermColor.ModeRGB sValue &= "38;2;" & Subst("&1;&2;&3;", GetRed($iForeGround), GetGreen($iForeground), GetBlue($iForeground)) End Select Endif If $aModified[FLAG_BG] Or Force Then Select Case $iColorMode Case TermColor.Default sValue &= (40 + Max(Min($iBackGround, 8), 0)) & ";" Case TermColor.Mode256 sValue &= "48;5;" & Max(Min($iBackGround, 255), 0) & ";" Case TermColor.ModeRGB sValue &= "48;2;" & Subst("&1;&2;&3;", GetRed($iBackGround), GetGreen($iBackGround), GetBlue($iBackGround)) End Select Endif If Not sValue Then Return If sValue Ends ";" Then sValue = Left(sValue, -1) sValue = CSI & sValue & "m" $aModified = New Boolean[8] 'Debug sValue Return sValue End Public Function WriteToStream(hStream As Stream) Dim bFirst As Boolean Dim iFlag As Integer For iFlag = 0 To 6 If $aModified[iFlag] Then If Not bFirst Then Write #hStream, CSI bFirst = True Else Write #hStream, ";" Endif Select Case iFlag Case FLAG_BOLD Write #hStream, IIf($bBold, "1", "22") Case FLAG_DIM Write #hStream, IIf($bDim, "8", "28") Case FLAG_BLK Write #hStream, IIf($bBlink, "5", "25") Case FLAG_UND Write #hStream, IIf($bUnderline, "4", "24") Case FLAG_REV Write #hStream, IIf($bReverse, "7", "27") Case FLAG_FG Select Case $iColorMode Case TermColor.Default Write #hStream, Str((30 + Max(Min($iForeground, 8), 0))) Case TermColor.Mode256 Write #hStream, ("38;5;" & Max(Min($iForeground, 255), 0)) Case TermColor.ModeRGB Write #hStream, ("38;2;" & Subst("&1;&2;&3", GetRed($iForeGround), GetGreen($iForeground), GetBlue($iForeground))) End Select Case FLAG_BG Select Case $iColorMode Case TermColor.Default Write #hStream, Str((40 + Max(Min($iBackGround, 8), 0))) Case TermColor.Mode256 Write #hStream, ("48;5;" & Max(Min($iBackGround, 255), 0)) Case TermColor.ModeRGB Write #hStream, ("48;2;" & Subst("&1;&2;&3", GetRed($iBackGround), GetGreen($iBackGround), GetBlue($iBackGround))) End Select End Select Endif Next If bFirst Then Write #hStream, "m" Endif $aModified = New Boolean[8] End Private Function GetRed(iValue As Integer) As Integer Return Lsr(iValue, 16) And 255 End Private Function GetGreen(iValue As Integer) As Integer Return Lsr(iValue, 8) And 255 End Private Function GetBlue(iValue As Integer) As Integer Return iValue And 255 End Public Sub FillFrom(iAttr As Integer) If BTst(iAttr, FLAG_BG) Then Me.Background = Lsr(iAttr, 16) And 255 Else Me.Background = 0 Endif If BTst(iAttr, FLAG_FG) Then Me.Foreground = Lsr(iAttr, 24) And 255 Else Me.Foreground = 0 Endif Me.Bold = BTst(iAttr, FLAG_BOLD) Me.Dim = BTst(iAttr, FLAG_DIM) Me.Reverse = BTst(iAttr, FLAG_REV) Me.Underline = BTst(iAttr, FLAG_UND) Me.Blink = BTst(iAttr, FLAG_BLK) End Public Sub Reset() $iForeground = -1 $iBackGround = -1 $bBold = False $bDim = False $bUnderline = False $bReverse = False $bBlink = False $aModified = New Boolean[8] Print CSI & "0m"; End Public Sub IsVoid() As Boolean If $iForeground >= 0 Then Return If $iBackground >= 0 Then Return If $bBold Or If $bDim Or If $bUnderline Or If $bReverse Or If $bBlink Then Return Return True End Public Function GetInteger() As Integer Dim iAttr As Integer If Me.Background <> -1 Then iAttr = BSet(iAttr, FLAG_BG) + Lsl(Me.Background And 255, 16) If Me.Foreground <> -1 Then iAttr = BSet(iAttr, FLAG_FG) + Lsl(Me.Foreground And 255, 24) If Me.Bold Then iAttr = BSet(iAttr, FLAG_BOLD) If Me.Dim Then iAttr = BSet(iAttr, FLAG_DIM) If Me.Reverse Then iAttr = BSet(iAttr, FLAG_REV) If Me.Underline Then iAttr = BSet(iAttr, FLAG_UND) If Me.Blink Then iAttr = BSet(iAttr, FLAG_BLK) Return iAttr End gambas-3.16.3/comp/src/gb.term.form/.src/Border.class000066400000000000000000000000741411575327000222020ustar00rootroot00000000000000' Gambas class file Export Public Enum None, Simple, Doublegambas-3.16.3/comp/src/gb.term.form/.src/Char.class000066400000000000000000000003461411575327000216440ustar00rootroot00000000000000' Gambas class file Export Public c As Integer Public Attr As Integer Static Public Sub _call(ch As String, iAttr As Integer) As Char Dim hChar As New Char hChar.c = String.Code(ch) hChar.Attr = iAttr Return hChar End gambas-3.16.3/comp/src/gb.term.form/.src/Desktop.class000066400000000000000000000012331411575327000223740ustar00rootroot00000000000000' Gambas class file Export Create Static Property Read Width, W As Integer Property Read Height, H As Integer Property Background As Char Static Private $hChar As New Char Static Public Sub _init() Dim hAttr As New Attr 'hAttr.ColorMode = TermColor.Mode256 hAttr.Background = TermColor.Desktop $hChar.Attr = hAttr.GetInteger() $hChar.c = Asc(" ") End Private Function Width_Read() As Integer Return File.Out.Term.Width End Private Function Height_Read() As Integer Return File.Out.Term.Height End Private Function Background_Read() As Char Return $hChar End Private Function Background_Write(Value As Char) $hChar = Value End gambas-3.16.3/comp/src/gb.term.form/.src/Dialog/000077500000000000000000000000001411575327000211345ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.src/Dialog/Message.class000066400000000000000000000014571411575327000235560ustar00rootroot00000000000000' Gambas class file Create Private Static Public Sub _call(Message As String) Dim hLabel As TermLabel Dim hHbox As TermHBox Dim hButton As TermButton Dim $hForm As TermForm $hForm = New TermForm $hForm.Resizable = False hLabel = New TermLabel($hForm) hHbox = New TermHBox($hForm) hButton = New TermButton(hHbox) As "btnOk" $hForm.resize(30, 5) $hForm.Center $hForm.Text = "Message Box" $hForm._Arrangement = Arrange.Vertical hHbox._Arrangement = Arrange.Horizontal hHbox.Invert = True hLabel.Expand = True $hForm.Border = Border.Simple hLabel.Text = Message hButton.Text = "Ok" 'hButton._Shadow = True hButton.Background = TermColor.Yellow hButton.Alignment = Align.Center $hForm.Show End Static Public Sub btnOk_MouseUp() Last.window.Close End gambas-3.16.3/comp/src/gb.term.form/.src/Key.class000066400000000000000000000026101411575327000215130ustar00rootroot00000000000000' Gambas class file Export Public Enum Normal, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BackSpace, Enter, {Return}, Tab, BackTab, Up, Down, Left, Right, Home, {End}, Insert, Delete, PageDown, PageUp, Menu Static Property Read Shift As Boolean Static Property Read Control As Boolean Static Property Read Code As Integer Static Property Read Text As String Static Property Read Alt As Boolean Static Private $bControl As Boolean Static Private $bShift As Boolean Static Private $bAlt As Boolean Static Private $iCode As Integer Static Private $sText As String Static Public Sub _SetKey(sKey As String, code As Integer, Alt As Boolean, Control As Boolean, Shift As Boolean) $bShift = Shift $bControl = Control $bALt = ALt $iCode = Code $sText = sKey If TermWindows.Debug = TermWindows.DebugInput Then Error "Alt: " & alt & " Control: " & Control & " Shift: " & Shift & " Code :" & code & " Text :" & sKey End Static Private Function Shift_Read() As Boolean Return $bShift End Static Private Function Control_Read() As Boolean Return $bControl End Static Private Function Code_Read() As Integer Return $iCode End Static Private Function Text_Read() As String Return $sText End Static Private Function Alt_Read() As Boolean Return $bAlt End Static Public Sub _Reset() $bShift = False $bControl = False $bALt = False $iCode = 0 $sText = "" End gambas-3.16.3/comp/src/gb.term.form/.src/Mouse.class000066400000000000000000000037271411575327000220650ustar00rootroot00000000000000' Gambas class file Create Private Static Property Read {Left} As Boolean Static Property Read {Right} As Boolean Static Property Read {Middle} As Boolean Static Property Read X, Col As Integer Static Property Read Y, Row As Integer Static Property Read ScreenX, ScreenCol As Integer Static Property Read ScreenY, ScreenRow As Integer Static Private $iRow As Integer Static Private $iCol As Integer Static Private $iScreenRow As Integer Static Private $iScreenCol As Integer Static Private $bLeft As Boolean Static Private $bMiddle As Boolean Static Private $bRight As Boolean Static Private $iDelta As Integer Static Private Function Left_Read() As Boolean Return $bLeft End Static Private Function Right_Read() As Boolean Return $bRight End Static Private Function Middle_Read() As Boolean Return $bMiddle End Static Public Sub Hide() End Static Public Sub Show() End Static Public Sub _SetState(hControl As TermControl, Col As Integer, Row As Integer, Optional btnLeft As Boolean, btnMiddle As Boolean, btnRight As Boolean, Delta As Integer) If Not IsMissing(btnLeft) Then $bLeft = btnLeft If Not IsMissing(btnMiddle) Then $bMiddle = btnMiddle If Not IsMissing(btnRight) Then $bRight = btnRight $iDelta = Delta $iScreenRow = Row $iScreenCol = Col If hControl = Null Then $iRow = $iScreenRow $iCol = $iScreenCol Else $irow = $iScreenRow - hControl.ScreenY $iCol = $iScreenCol - hControl.ScreenX Endif If TermWindows.Debug = TermWindows.DebugInput Then Error "Mouse State: Row: " & $iRow & " Col: " & $iCol & " btnLeft: " & $bLeft & " btnMiddle: " & $bMiddle & " btnRight: " & $bRight & " Delta: " & $iDelta End Static Private Function X_Read() As Integer Return $iCol End Static Private Function Y_Read() As Integer Return $iRow End Static Private Function ScreenX_Read() As Integer Return $iScreenCol End Static Private Function ScreenY_Read() As Integer Return $iScreenRow End gambas-3.16.3/comp/src/gb.term.form/.src/TermButton.class000066400000000000000000000047561411575327000231030ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Class Rect Public Const _Properties As String = "*,Text,Shadow" Public Const _DrawWith As String = "Button" Property Text As String Property Shadow As Boolean Property Alignment As Integer Property Read _DefaultBackground As Integer Property Read _DefaultForeGround As Integer Private $sText As String Private $iOldLen As Integer Private $iAlignment As Integer Public Sub _new() Me._UseFocus = True End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer Dim sALign As String Dim hRectC As Rect = Me._GetClientRect() If Not Me._NeedRender Then Return Super._Render Select Case $iAlignment Case Align.Right sALign = String(hRectC.Width - Len($sText), " ") & $sText Case Align.Center sALign = String(CInt(Ceil((hRectC.Width - Len($sText)) / 2)), " ") & $sText Case Else sALign = $sText End Select If Not Me.HaveFocus Then hAttr.Background = Me._GetBackGround() hAttr.Foreground = Me._GetForeground() Else hAttr.Background = TermColor.Focus hAttr.Foreground = TermColor.FocusText Endif iAttr = hAttr.GetInteger() For i = 1 To Me._Content[0].count If Me._Content[0][Me._Content[0].Max] And If i > Max($iOldLen, String.Len(sALign)) Then Break If i <= String.Len(sALign) Then Me._Content[0][i - 1] = Char(Mid(sALign, i, 1), iAttr) Else Me._Content[0][i - 1] = Char(" ", iAttr) Endif Next Me._NeedRender = False End Private Function Shadow_Read() As Boolean Return Super._Shadow End Private Sub Shadow_Write(Value As Boolean) Super._Shadow = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End Public Sub _KeyPress() If Key.Code = Key.Return Then Raise Click Super._KeyPress End Private Function _DefaultBackground_Read() As Integer Return TermColor.ButtonBackground End Private Function _DefaultForeGround_Read() As Integer Return TermColor.ButtonText End Public Sub _GetBackGround() As Integer If Me.Background = -1 Then Return TermColor.ButtonBackground Else Return Me.Background Endif End Public Sub _GetForeGround() As Integer If Me.Foreground = -1 Then Return TermColor.ButtonText Else Return Me.Foreground Endif End gambas-3.16.3/comp/src/gb.term.form/.src/TermCheckBox.class000066400000000000000000000035331411575327000233060ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Class Rect Property Text As String Property Value As Integer Property Tristate As Boolean Private $sText As String Private $iOldLen As Integer Private $iValue As Integer Private $bTristate As Boolean Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer Dim sALign As String Dim hRectC As Rect = Me._GetClientRect() Dim sValue As String Dim iBC As Integer If Not Me._NeedRender Then Return Super._Render sValue = Choose($iValue + 2, "x", " ", "/") sALign = "[" & sValue & "] " & $sText iBC = Me._GetBackGround() If Me.HaveFocus Then iBC = TermColor.Focus hAttr.Background = iBC hAttr.Foreground = Me.Foreground iAttr = hAttr.GetInteger() For i = 1 To Me._Content[0].count If Me._Content[0][Me._Content[0].Max] And If i > Max($iOldLen, String.Len(sALign)) Then Break If i <= String.Len(sALign) Then Me._Content[0][i - 1] = Char(Mid(sALign, i, 1), iAttr) Else Me._Content[0][i - 1] = Char(" ", iAttr) Endif Next Me._NeedRender = False End Private Function Value_Read() As Integer Return $iValue End Private Sub Value_Write(Value As Integer) $iValue = Max(Min(Value, 1), -1) End Private Function Tristate_Read() As Boolean Return $bTristate End Private Sub Tristate_Write(Value As Boolean) $bTristate = Value End Public Sub _MouseUp() ChangeValue Super._MouseUp Super._Click 'Me._NeedRender = True 'Me.Refresh End Private Sub ChangeValue() If Me.Value < IIf($bTristate, 1, 0) Then Me.Value = $iValue + 1 Else Me.Value = -1 Endif Me.Refresh End Public Sub _KeyPress() If Key.Text = " " Then ChangeValue Endif Super._Click Super._KeyPress End gambas-3.16.3/comp/src/gb.term.form/.src/TermColor.class000066400000000000000000000015351411575327000226760ustar00rootroot00000000000000' Gambas class file Export Public Const Transparent As Integer = -1 Public Enum Black, Red, Green, Yellow, Blue, Magenta, Cyan, White 'LightGray 'Public Enum DarkGray = 8, LightRed = 9, LightGreen = 10, LightYellow = 11, LightBlue = 12, LightMagenta = 13, LightCyan = 14, White = 15 Public Enum {Default}, Mode256, ModeRGB Static Public ForeGround As Integer = Black Static Public Background As Integer = White Static Public ActiveWindow As Integer = Red Static Public InactiveWindow As Integer = Magenta Static Public Focus As Integer = Yellow Static Public FocusText As Integer = White Static Public {Desktop} As Integer = Black Static Public ButtonBackground As Integer = Red Static Public ButtonText As Integer = White Static Public Border As Integer = Black Static Public TextBackground As Integer = Cyan Static Public TextForeground As Integer = Black gambas-3.16.3/comp/src/gb.term.form/.src/TermContainer.class000066400000000000000000000111041411575327000235330ustar00rootroot00000000000000' Gambas class file Export Create Private Inherits TermControl Class Rect Public Const _IsContainer As Boolean = True Public Const _Group As String = "Container" Public Const _Properties As String = "*" Property Read Children As TermControl[] Property Read ClientWidth, CLientW As Integer Property Read ClientHeight, ClientH As Integer Property Spacing As Integer Property Padding As Integer Property Border As Integer Property Shadow As Boolean Property Invert As Boolean Private $iSpacing As Integer '= 1 Private $bInvert As Boolean Private $aChildren As New Object[] Public _Arrangement As Integer '= Arrange.Vertical Public Sub _new() Me._AllowFocus = False End Public Sub _Add(hCtrl As TermControl) $aChildren.Add(hCtrl) End Private Function Children_Read() As TermControl[] If Not $aChildren Then $aChildren = New TermControl[] Return $aChildren End Public Sub _Render() Dim hChild As TermControl Dim i, j As Integer Dim hAttr As New Attr Dim iAttr As Integer If Me._NeedRender Then Super._Render Endif For Each hChild In Me.Children hChild._Render Next Me._NeedRender = False End Public Sub _Arrange() Dim hChild As Object Dim H As Integer Dim iExt As Integer '= Min(5, $yBorder + $iPadding) Dim iNExp As Integer Dim iHExp As Integer Dim hRectClient As Rect = Me._GetClientRect() Dim iPadding As Integer = Me.Padding 'If Me.tag = "*" Then Stop Select Case _Arrangement Case Arrange.Vertical For Each hChild In $aChildren If Not hChild.Expand Then iHExp += hChild.Height If $iSpacing > 0 Then iHExp += $iSpacing Else Inc iNExp Endif 'If Me Is TermVBox Then Stop If iHExp >= (hrectClient.Height - iPadding * 2) Then Break Next If iNExp > 0 Then If iHExp > 0 And If $iSpacing > 0 Then 'iHExp -= $iSpacing Endif iHExp = (hrectClient.Height - iHExp) / iNExp Endif H = 0 'hrectClient.Top For Each hChild In $aChildren 'If hChild Is TermPictureBox Then Stop If Not hChild.Ignore Then hChild.X = 0 'hrectClient.Left hChild.Y = H hChild.Width = hrectClient.Width If hChild.Expand Then hChild.H = iHExp H += hChild.H + $iSpacing Endif hChild._Arrange() 'If H >= Me.ClientHeight Then Break Next Case Arrange.Horizontal For Each hChild In $aChildren If Not hChild.Expand Then iHExp += hChild.Width If $iSpacing > 0 Then iHExp += $iSpacing Else Inc iNExp Endif 'If Me Is TermVBox Then Stop If iHExp >= (hrectClient.Width - iPadding * 2) Then Break Next If iNExp > 0 Then If iHExp > 0 And If $iSpacing > 0 Then 'iHExp -= $iSpacing Endif iHExp = Ceil((hrectClient.Width - iHExp) / iNExp) Endif If $bInvert Then H = hrectClient.Right - 1 Else H = hrectClient.Width - Me.Width Endif For Each hChild In $aChildren If Not hChild.Ignore Then If $bInvert Then H -= hChild.W hChild.Y = hrectClient.Top hChild.X = H hChild.Height = hrectClient.Height If hChild.Expand Then hChild.W = iHExp 'f hChild.Expand Then Stop If $bInvert Then H -= $iSpacing Else H += hChild.W + $iSpacing Endif Endif hChild._Arrange() 'If H >= Me.ClientHeight Then Break Next End Select End ' Public Sub _GetClientRect() As Rect ' ' Return $rectClient.Copy() ' ' End Private Function ClientWidth_Read() As Integer Return Me._GetClientRect().Width 'Return $rectClient.Width 'Return $iCLientW End Private Function ClientHeight_Read() As Integer Return Me._GetClientRect().Height End Private Function Spacing_Read() As Integer Return $iSpacing End Private Sub Spacing_Write(Value As Integer) $iSpacing = Value End Private Function Padding_Read() As Integer Return Me._Padding End Private Sub Padding_Write(Value As Integer) Me._Padding = Value Me._DefineRect End Private Function Border_Read() As Integer Return Super._Border End Private Sub Border_Write(Value As Integer) Super._Border = Value Me._DefineRect Me.Refresh End Private Function Shadow_Read() As Boolean Return Super._Shadow End Private Sub Shadow_Write(Value As Boolean) Super._Shadow = True End Private Function Invert_Read() As Boolean Return $bInvert End Private Sub Invert_Write(Value As Boolean) $bInvert = Value End gambas-3.16.3/comp/src/gb.term.form/.src/TermControl.class000066400000000000000000000407501411575327000232420ustar00rootroot00000000000000' Gambas class file Export Create Private Class Rect Public Const _IsControl As Boolean = True Public Const _IsContainer As Boolean = False Public Const _Properties As String = "X{Position},Y{Position},Width{Dimension},Height{Dimension},Background{Color},Foreground{Color},Ignore" '"Left{ReportCoord},Top{ReportCoord},Width{ReportCoord},Height{ReportCoord},Brush{ReportBrush},Visible=True,Fixed,Font,Padding,Margin,Ignore,Expand,AutoResize,Tag,Range" Public Const _Family As String = "TermForm" Static Public _IdToControl As New Collection Static Private $iLastId As Integer = 1 Public _Content As Char[][] Public _NeedRender As Boolean Public _UseFocus As Boolean Property Read id As Integer Property Read Parent As TermContainer Property Read ScreenX As Integer Property Read ScreenY As Integer Property Read Window As TermWindow Property Left, X, Column As Integer Property Top, Y, {Line} As Integer Property Width, W As Integer Property Height, H As Integer Property Background As Integer Property Foreground As Integer Property Tag As Variant Property Expand As Boolean Property _Shadow As Boolean Property _Border As Integer Property _Padding As Integer Property _ColorMode As Integer Property Visible As Boolean Property Ignore As Boolean Property Read Next As TermControl Property Read Previous As TermControl Property Read HaveFocus As Boolean Property Read _DefaultBackground As Integer Property Read _DefaultForeGround As Integer Property Read _ClientHeight As Integer Property Read _ClientWidth As Integer Private $iColorMode As Integer Private $iBorder As Integer Private $bShadow As Boolean Private $bIgnore As Boolean Private _RecalcPos As Boolean Private $rectControl As New Rect Private $iId As Integer Private $iParent As Integer Private $iScreenX As Integer Private $iScreenY As Integer Private $iWindow As Integer Private $iBackGround As Integer = -1 Private $iForeground As Integer = -1 Private $vTag As Variant Private $bExpand As Boolean Private $yBorder As Byte Private $iPadding As Integer Private $rectClient As Rect Private $iVisible As Boolean = True Private $bLockRender As Boolean Public _AllowFocus As Boolean = True Private $bHaveFocus As Boolean Event MouseDown Event MouseUp Event MouseWheel Event MouseMove Event Click Event KeyPress Event GotFocus Event LostFocus Public Sub _new(Optional hParent As TermContainer) $iId = $iLastId Inc $iLastId If hParent Then $iParent = hParent.Id hParent._Add(Me) GetWindow Else If Me Is TermWindow Then TermWindows._Add(Me) $iWindow = $iId Endif Endif $rectControl.Width = 5 $rectControl.Height = 1 _DefineRect _IdToControl[$iId] = Me _RecalcPos = True _NeedRender = True _AllowFocus = True If hParent Then TermWindows.SetRefreshArea(hParent._GetScreenRect()) 'TermWindows._Render 'hParent.Refresh Endif ' TermWindows._RefreshScreen 'Me.Window.Refresh End Private Sub ResizeBuffer(Width As Integer, Height As Integer) Dim i As Integer Dim aLine As Char[] 'Debug "Resize", Object.Type(Me) _Content = New Char[][] For i = 0 To Height aLine = New Char[Width] _Content.Add(aLine) Next Me._NeedRender = True End Public Sub _Render() Dim i, j As Integer Dim hAttr As New Attr Dim iAttr As Integer Dim hRectC As Rect Dim iShadow As Integer = IIf($bShadow, 1, 0) Dim iBC As Integer If Not Me._NeedRender Then Return 'If Me Is TermContainer Then hRectC = $rectControl 'Else ' hRectC = $rectClient 'Endif If Not _Content Then ResizeBuffer(hRectC.Width, hRectC.Height) iBC = Me._GetBackGround() If Me.HaveFocus Then iBC = TermColor.Focus hAttr.Background = iBC iAttr = hAttr.GetInteger() For i = 0 To _Content.Max hAttr.Foreground = TermColor.Border For j = 0 To _Content[0].Max _Content[i][j] = Char(" ", iAttr) Next Next Select Case $iBorder Case Border.Simple hAttr.Background = iBC iAttr = hAttr.GetInteger() For j = 1 To hRectC.width - 2 '_Content[0].Max - 1 _Content[0][j] = Char(String.Chr(&h2500), iAttr) Next For j = 1 To hRectC.width - 2 _Content[hRectC.Height - 1 - iShadow][j] = Char(String.Chr(&h2500), iAttr) Next For i = 1 To hRectC.Height - 2 - iShadow _Content[i][0] = Char(String.chr(&H2502), iAttr) _Content[i][hRectC.Width - 1 - iShadow] = Char(String.chr(&H2502), iAttr) Next _Content[0][0] = Char(String.chr(&H250C), iAttr) _Content[0][hRectC.Width - 1 - iShadow] = Char(String.chr(&H2510), iAttr) _Content[hRectC.Height - 1 - iShadow][0] = Char(String.chr(&H2514), iAttr) _Content[hRectC.Height - 1 - iShadow][hRectC.Width - 1 - iShadow] = Char(String.chr(&H2518), iAttr) Case Border.Double hAttr.Background = iBC iAttr = hAttr.GetInteger() For j = 1 To hRectC.width - 2 '_Content[0].Max - 1 _Content[0][j] = Char(String.Chr(&h2550), iAttr) Next For j = 1 To hRectC.width - 2 _Content[hRectC.Height - 1 - iShadow][j] = Char(String.Chr(&h2550), iAttr) Next For i = 1 To hRectC.Height - 2 - iShadow _Content[i][0] = Char(String.chr(&H2551), iAttr) _Content[i][hRectC.Width - 1 - iShadow] = Char(String.chr(&H2551), iAttr) Next _Content[0][0] = Char(String.chr(&H2554), iAttr) _Content[0][hRectC.Width - 1 - iShadow] = Char(String.chr(&H2557), iAttr) _Content[hRectC.Height - 1 - iShadow][0] = Char(String.chr(&H255A), iAttr) _Content[hRectC.Height - 1 - iShadow][hRectC.Width - 1 - iShadow] = Char(String.chr(&H255D), iAttr) Case Else End Select If $bShadow Then ' If Me Is TermButton Then Stop hAttr.Foreground = TermColor.Black If IsNull(Me.Parent) Then hAttr.Background = TermColor.Desktop Else hAttr.Background = Me.Parent.Background Endif iAttr = hAttr.GetInteger() For i = 1 To _Content[0].Max _Content[_Content.Max - 1][i] = Char(String.chr(&H2580), iAttr) Next For i = 1 To _Content.Max - 2 _Content[i][_Content[0].Max] = Char(String.chr(&H2588), iAttr) Next 'hAttr.Background = If(IsNull(Me.Parent), Desktop.BackGround, Me.Parent.Background) _Content[0][_Content[0].Max] = Char(String.chr(&H2584), iAttr) _Content[_Content.Max - 1][0] = Char(" ", iAttr) Endif End Private Function id_Read() As Integer Return $iId End Private Function Parent_Read() As TermContainer Return _IdToControl[$iParent] End Private Function Left_Read() As Integer Return $rectControl.X End Private Sub Left_Write(Value As Integer) If $rectControl.Left = Value Then Return TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) $rectControl.X = Value Me._DefineRect TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) _RecalcPos = True If Not $bLockRender Then TermWindows._Render End Private Function Top_Read() As Integer 'If Me.tag = "--" Then Stop Return $rectControl.Y End Private Sub Top_Write(Value As Integer) If $rectControl.Top = Value Then Return TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) $rectControl.Y = Value Me._DefineRect _RecalcPos = True TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) If Not $bLockRender Then TermWindows._Render End Private Function Width_Read() As Integer Return $rectControl.Width End Private Sub Width_Write(Value As Integer) If $rectControl.Width = Value Then Return If Value < 1 Then Return TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) $rectControl.Width = Value '$rectDrawing.width = Value + IIf($bShadow, 1, 0) Me._DefineRect ResizeBuffer($rectControl.Width, $rectControl.Height) TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) If Not $bLockRender Then TermWindows._Render 'If Me Is TermContainer Then Me._SetClientRect() End Private Function Height_Read() As Integer Return $rectControl.Height End Private Sub Height_Write(Value As Integer) If $rectControl.Height = Value Then Return If Value < 1 Then Return TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) $rectControl.Height = Value '$rectDrawing.Height = Value + IIf($bShadow, 1, 0) Me._DefineRect ResizeBuffer($rectControl.Width, $rectControl.Height) TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, $rectControl.Width, $rectControl.Height)) If Not $bLockRender Then TermWindows._Render 'If Me Is TermContainer Then Me._SetClientRect() End Private Function ScreenX_Read() As Integer Dim hParent As TermControl Dim iBorder As Integer hParent = _IdToControl[$iParent] If hParent._Border > 0 Then iBorder = 1 Return _IdToControl[$iParent].ScreenX + iBorder + Me.Left End Private Function ScreenY_Read() As Integer Dim hParent As TermControl Dim iBorder As Integer hParent = _IdToControl[$iParent] If hParent._Border > 0 Then iBorder = 1 Return hParent.ScreenY + iBorder + Me.Top End Private Sub GetWindow() Dim hCont As Object = Me.Parent Do If hCont.Parent = Null Then $iWindow = hCont.Id Break Endif hCont = hCont.Parent Loop End Private Sub ComputeScreenXY() Dim hC As TermControl = Me.Parent If Me Is TermLabel Then Stop If hC Then $iScreenX = hC.ScreenX + $rectControl.Left $iScreenY = hC.ScreenY + $rectControl.Top Else $iScreenX = $rectControl.Left $iScreenY = $rectControl.Top Endif _RecalcPos = False End Private Function Window_Read() As TermWindow Return _IdToControl[$iWindow] End Public Function _GetScreenClientRect() As Rect Dim iCorner As Integer = IIf($iBorder > 0, 1, 0) + $iPadding Dim iSize As Integer = iCorner * 2 + IIf($bShadow, 1, 0) Return rect(Me.ScreenX + iCorner, Me.ScreenY + iCorner, $rectControl.Width - iSize, $rectControl.Height - iSize) End Public Function _GetScreenRect() As Rect Return Rect(Me.ScreenX, Me.ScreenY, $rectControl.width, $rectControl.Height) End Public Function _GetRect() As Rect Return $rectControl.Copy() End Private Function Background_Read() As Integer Return $iBackGround End Private Sub Background_Write(Value As Integer) $iBackGround = Value Me.Refresh End Private Function Foreground_Read() As Integer Return $iForeGround End Private Sub Foreground_Write(Value As Integer) $iForeground = Value Me.Refresh End Public Sub _GetChar(c As Integer, l As Integer) As Char 'If Me.Tag = "#" Then Stop Return _Content[l - Me.ScreenY][c - Me.ScreenX] End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value End Public Sub _Arrange() End Public Sub Move(Left As Integer, Top As Integer, Optional Width As Integer, Height As Integer) $bLockRender = True Me.Left = Left Me.Top = Top If Not IsMissing(Width) Then Me.Width = Width If Not IsMissing(Height) Then Me.Height = Height $bLockRender = False TermWindows._Render End Private Function Expand_Read() As Boolean Return $bExpand End Private Sub Expand_Write(Value As Boolean) Dim hParent As TermContainer $bExpand = Value hParent = Me.Parent If hParent Then TermWindows.SetRefreshArea(hParent._GetScreenRect()) TermWindows._Render Endif End Public Sub _Initialize() 'Here generate the content Array to the right size 'Define the true size for the Client content End Private Function _Shadow_Read() As Boolean Return $bShadow End Private Sub _Shadow_Write(Value As Boolean) $bShadow = Value Me._NeedRender = True End Public Sub _DefineRect() 'If Me Is TermPictureBox Then Stop $rectClient = Rect($iPadding + $yBorder, $iPadding + $yBorder, $rectControl.Width - ($iPadding + $yBorder) * 2 - IIf($bShadow, 1, 0), $rectControl.Height - ($iPadding + $yBorder) * 2 - IIf($bShadow, 1, 0)) End Private Function _Border_Read() As Integer Return $iBorder End Private Sub _Border_Write(Value As Integer) $iBorder = Value $yBorder = IIf($iBorder > Border.None, 1, 0) Me.Refresh End Public Sub _GetClientRect() As Rect ' If Me Is TermFrame Then Stop '_DefineRect Return $rectClient.Copy() End Private Function _Padding_Read() As Integer Return $iPadding End Private Sub _Padding_Write(Value As Integer) $iPadding = Value End Public Sub _GetBackGround() As Integer Dim i As Integer If $iBackGround = -1 Then If $iParent > 0 Then i = Me.Parent._GetBackGround() Return i Else Return TermColor.Background Endif Else Return $iBackGround Endif End Public Sub _GetForeground() As Integer Dim i As Integer If $iForeground = -1 Then If $iParent > 0 Then i = Me.Parent._GetForeground() Return i Else Return TermColor.ForeGround Endif Else Return $iForeground Endif End Private Function _ColorMode_Read() As Integer Return $iColorMode End Private Sub _ColorMode_Write(Value As Integer) $iColorMode = Value End Public Sub _MouseDown() Dim hwindow As TermWindow If TermWindows.Debug = TermWindows.DebugInput Then Error "Mouse Down Event Raised on : " & Me.id & " Type: " & Object.Type(Me) If Not Me.Window.Active Then Me.Window.Activate Endif Me.SetFocus Raise MouseDown End Public Sub _MouseUp() If TermWindows.Debug = TermWindows.DebugInput Then Error "Mouse Up Event Raised on : " & Me.id & " Type: " & Object.Type(Me) Raise MouseUp End Public Sub _MouseMove() If TermWindows.Debug = TermWindows.DebugInput Then Error "Mouse Move Event Raised on : " & Me.id & " Type: " & Object.Type(Me) Raise MouseMove End Public Sub _MouseWheel() If TermWindows.Debug = TermWindows.DebugInput Then Error "Mouse Wheel Event Raised on : " & Me.id & " Type: " & Object.Type(Me) Raise MouseWheel End Public Sub _Click() If TermWindows.Debug = TermWindows.DebugInput Then Error "Mouse Click Event Raised on : " & Me.id & " Type: " & Object.Type(Me) Raise Click End Private Function Visible_Read() As Boolean Return $iVisible End Private Sub Visible_Write(Value As Boolean) If $iVisible <> Value Then $iVisible = Value TermWindows.SetRefreshArea($rectControl) TermWindows._Render Endif End Public Sub Show() ' If Me Is Termform Then Stop Me.Visible = True End Public Sub Hide() Me.Visible = False End Public Sub Resize(Width As Integer, Height As Integer) $bLockRender = True Me.Width = Width Me.Height = Height $bLockRender = False TermWindows._Render End Public Sub Refresh(Optional hScreenRect As Rect) Me._NeedRender = True If hScreenRect Then TermWindows.SetRenderArea(hScreenRect) Else TermWindows.SetRenderArea(Me._GetScreenRect()) Endif TermWindows._Render End Public Sub _KeyPress() Raise KeyPress End Private Function Next_Read() As TermControl Dim iPos As Integer Dim hChildren As TermControl[] hChildren = Me.Parent.Children ipos = hChildren.Find(Me) If ipos = hChildren.Max Then Return Null Return hChildren[iPos + 1] End Private Function Previous_Read() As TermControl Dim iPos As Integer Dim hChildren As TermControl[] hChildren = Me.Parent.Children iPos = hChildren.Find(Me) If iPos = 0 Then Return Null Return hChildren[iPos - 1] End Public Sub SetFocus() Dim hPrev As TermControl If Me.HaveFocus Then Return If _AllowFocus Then hPrev = TermControl._IdToControl[Me.Window._GetCurrentFocusId()] hPrev._LostFocus hPrev.Refresh Me.Window._SetFocus(Me) Me._GotFocus Me.Refresh Endif End Private Sub HaveFocus_Read() As Boolean Return $bHaveFocus End Public Sub _LostFocus() $bHaveFocus = False Raise LostFocus End Public Sub _GotFocus() $bHaveFocus = True Raise GotFocus End Private Function _DefaultBackground_Read() As Integer Return TermColor.Background End Private Function _DefaultForeGround_Read() As Integer Return TermColor.ForeGround End Private Function _ClientHeight_Read() As Integer Return $rectClient.Height End Private Function _ClientWidth_Read() As Integer Return $rectClient.Width End Private Function Ignore_Read() As Boolean Return $bIgnore End Private Sub Ignore_Write(Value As Boolean) $bIgnore = Value End gambas-3.16.3/comp/src/gb.term.form/.src/TermForm.class000066400000000000000000000012221411575327000225140ustar00rootroot00000000000000' Gambas class file Export Inherits TermWindow Public Const _Properties As String = "*,Border{Border.None;Simple;Double}=Simple,Arrangement{Arrange.None;Vertical;Horizontal}=None,Text,Resizable=True" Public Const _HiddenControls As String = "TermControl,TermForm,TermWindow,TermContainer" Public Const _IsForm As Boolean = True Public Const _IsContainer As Boolean = True Public Const _IsMultiContainer As Boolean = False Public Const _DrawWith As String = "Form" Public Const _DefaultEvent As String = "Open" Static Public Sub Main() Dim hObject As TermForm hObject = Application.Startup.AutoCreate() hObject.Show TermWindows._Render End gambas-3.16.3/comp/src/gb.term.form/.src/TermFrame.class000066400000000000000000000021031411575327000226420ustar00rootroot00000000000000' Gambas class file Export Inherits TermPanel Class Rect Property Text As String Private $sText As String Private $iOldLen As Integer Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer Dim iStart As Integer Dim hRectC As Rect = Me._GetClientRect() Dim sText As String = " " & $sText & " " Super._Render If Not Me._NeedRender Then Return ' Select Case $iAlignment ' Case Align.Right ' sALign = String(hRectC.Width - Len($sText), " ") & $sText ' Case Align.Center iStart = CInt(Ceil((hRectC.Width - Len(sText)) / 2)) ' Case Else ' sALign = $sText ' End Select hAttr.Background = Me._GetBackGround() hAttr.Foreground = Me.Foreground iAttr = hAttr.GetInteger() For i = iStart To Me._Content[0].count If i - iStart >= String.Len(sText) Then Break Me._Content[0][i - 1] = Char(Mid(sText, i - iStart + 1, 1), iAttr) Next Me._NeedRender = False End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End gambas-3.16.3/comp/src/gb.term.form/.src/TermHBox.class000066400000000000000000000001671411575327000224600ustar00rootroot00000000000000' Gambas class file Export Inherits TermContainer Public Sub _new() Super._Arrangement = Arrange.Horizontal End gambas-3.16.3/comp/src/gb.term.form/.src/TermLabel.class000066400000000000000000000026141411575327000226360ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Class Rect Public Const _Properties As String = "*,Text" Public Const _DrawWith As String = "Label" Property Text As String Private $sText As String Private $iOldLen As Integer Public Sub _new() Me._AllowFocus = False End Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer If Not Me._NeedRender Then Return Super._Render If Me.HaveFocus Then hAttr.Background = TermColor.Yellow Else hAttr.Background = Me._GetBackGround() Endif hAttr.Foreground = Me._GetForeground() iAttr = hAttr.GetInteger() For i = 1 To Me._Content[0].count If Me._Content[0][Me._Content[0].Max] And If i > Max($iOldLen, String.Len($sText)) Then Break If i <= String.Len($sText) Then Me._Content[0][i - 1] = Char(Mid($sText, i, 1), iAttr) Else Me._Content[0][i - 1] = Char(" ", iAttr) Endif Next Me._NeedRender = False End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $iOldLen = String.len($sText) $sText = Value TermWindows.SetRenderArea(rect(Me.ScreenX, Me.ScreenY, Max($iOldLen, String.Len($sText)), Me.Height)) Me._NeedRender = True TermWindows._Render End Public Sub _GetForeground() As Integer If Me.Foreground = -1 Then Return TermColor.ForeGround Else Return Me.Foreground Endif End gambas-3.16.3/comp/src/gb.term.form/.src/TermListBox.class000066400000000000000000000075121411575327000232050ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Property List As String[] Property Index As Integer Property Read Count As Integer Property Read Text As String Private $iIndex As Integer Private $aList As New String[] Private $iFirstVisible As Integer Private $iPrevIndex As Integer Event Activate Event Change Class Rect Private Function List_Read() As String[] Return $aList End Private Sub List_Write(Value As String[]) $aList = Value End Private Function Index_Read() As Integer Return $iIndex End Private Sub Index_Write(Value As Integer) Dim iNewIndex As Integer iNewIndex = Min($aList.Max, Max(0, Value)) If iNewIndex <> $iIndex Then $iPrevIndex = $iIndex $iIndex = iNewIndex EnsureVisible Endif End Private Function Count_Read() As Integer Return $aList.Count End Public Sub _Render() Dim hAttr As New Attr Dim iAttr, iAttr2 As Integer Dim i, il, k, ilen As Integer Dim s As String Dim hRectC As Rect = Me._GetClientRect() Dim hRect As Rect = Me._GetClientRect() Dim iCursorPos As Integer If Not Me._NeedRender Then Return Super._Render hAttr.FillFrom(Me._Content[0][0].Attr) Swap hAttr.Background, hAttr.Foreground iAttr = hAttr.GetInteger() k = $iFirstVisible For i = 0 To Me._Content.Max If k > $aList.Max Then Break s = $aList[k] ilen = String.Len(s) For il = 0 To IIf(k = $iIndex, hRect.width - 2, Min(hRect.width - 2, ilen)) 'iAttr = Me._Content[i][il]. If k = $iIndex Then Me._Content[i][il].Attr = iAttr If il < ilen Then Me._Content[i][il].c = String.Code(String.Mid(s, il + 1, 1)) Next Inc k Next ilen = Me._Content[0].Max 'Render the scrollbar For i = 1 To Me._Content.Max - 2 Me._Content[i][ilen].c = &H2591 Next Me._Content[0][ilen].c = &H25B2 Me._Content[Me._Content.Max - 1][ilen].c = &H25BC hAttr.Foreground = TermColor.Black iAttr = hAttr.GetInteger() iCursorPos = ($iFirstVisible + hRect.height) / $aList.Count * (hRect.Height - 3) Try Me._Content[iCursorPos][hRect.width - 1] = Char(String.Chr(&H2588), iAttr) Me._NeedRender = False Fin: End Public Sub _KeyPress() Select Key.Code Case Key.Up Dec Me.Index Raise Change Case Key.Down Inc Me.Index Raise Change Case Key.Return, Key.Enter Raise Activate Default End Select Super._KeyPress End Public Sub _MouseDown() Super._MouseDown Me.Index = $iFirstVisible + Mouse.Row Raise Change 'EnsureVisible End Public Sub _MouseUp() Super._MouseUp Raise Activate Raise Click End Public Sub _MouseMove() Super._MouseMove _MouseDown End Public Sub EnsureVisible() Dim hRect As Rect Dim hRectSc As Rect If IsVisible($iIndex) Then hRectSC = Me._GetScreenClientRect() Me.Refresh(Rect(hRectSc.X, GetRowByIndex($iPrevIndex), hRectSc.Width, 1)) Me.Refresh(Rect(hRectSc.X, GetRowByIndex($iIndex), hRectSc.Width, 1)) Return Endif hRect = Me._GetClientRect() If $iFirstVisible + (hRect.Height - 1) < $iIndex Then $iFirstVisible = $iIndex - hRect.Height + 1 Endif If $iIndex < $iFirstVisible Then $iFirstVisible = $iIndex Endif Me.Refresh End Public Sub _put(Value As String, Index As Integer) Dim hRect As Rect = Me._GetScreenClientRect() $aList[Index] = Value If IsVisible(Index) Then Me.Refresh(Rect(hRect.X, hRect.Y + GetRowByIndex(Index), hRect.Width, 1)) Endif End Public Function _get(Index As Integer) As String Return $aList[Index] End Private Sub IsVisible(Index As Integer) As Boolean If Index >= $iFirstVisible And If Index < $iFirstVisible + Me._ClientHeight Then Return True End Private Function Text_Read() As String Return $aList[$iIndex] End Private Function GetRowByIndex(Index As Integer) As Integer Return Index - $iFirstVisible End gambas-3.16.3/comp/src/gb.term.form/.src/TermPanel.class000066400000000000000000000003771411575327000226620ustar00rootroot00000000000000' Gambas class file Export Inherits TermContainer Property Arrangement As Integer Private Function Arrangement_Read() As Integer Return Super._Arrangement End Private Sub Arrangement_Write(Value As Integer) Super._Arrangement = Value End gambas-3.16.3/comp/src/gb.term.form/.src/TermPictureBox.class000066400000000000000000000140541411575327000237040ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Class Rect Class Image Class Color Private $hImage As Image '= Image.Load("all.png") Property Image As Image Property Stretch As Integer Property Alignment As Integer Private $iAlignment As Integer Private $iStretch As Integer 'None: Do nothing 'Proportional: Fit to one near border and adapt the other side 'Cut/Zoom: Adapt to the far border and cut the rest 'Fit: use the PictureBox content size 'If Picture box.None is not set the the ALignment property is set to centered Public Enum None, Proportional, Cut, Fit Private $aTermColor As Integer[] = [ &H000000, &H800000, &H008000, &H808000, &H000080, &H800080, &H008080, &Hc0c0c0, &H808080, &Hff0000, &H00ff00, &Hffff00, &H0000ff, &Hff00ff, &H00ffff, &Hffffff, &H000000, &H00005f, &H000087, &H0000af, &H0000d7, &H0000ff, &H005f00, &H005f5f, &H005f87, &H005faf, &H005fd7, &H005fff, &H008700, &H00875f, &H008787, &H0087af, &H0087d7, &H0087ff, &H00af00, &H00af5f, &H00af87, &H00afaf, &H00afd7, &H00afff, &H00d700, &H00d75f, &H00d787, &H00d7af, &H00d7d7, &H00d7ff, &H00ff00, &H00ff5f, &H00ff87, &H00ffaf, &H00ffd7, &H00ffff, &H5f0000, &H5f005f, &H5f0087, &H5f00af, &H5f00d7, &H5f00ff, &H5f5f00, &H5f5f5f, &H5f5f87, &H5f5faf, &H5f5fd7, &H5f5fff, &H5f8700, &H5f875f, &H5f8787, &H5f87af, &H5f87d7, &H5f87ff, &H5faf00, &H5faf5f, &H5faf87, &H5fafaf, &H5fafd7, &H5fafff, &H5fd700, &H5fd75f, &H5fd787, &H5fd7af, &H5fd7d7, &H5fd7ff, &H5fff00, &H5fff5f, &H5fff87, &H5fffaf, &H5fffd7, &H5fffff, &H870000, &H87005f, &H870087, &H8700af, &H8700d7, &H8700ff, &H875f00, &H875f5f, &H875f87, &H875faf, &H875fd7, &H875fff, &H878700, &H87875f, &H878787, &H8787af, &H8787d7, &H8787ff, &H87af00, &H87af5f, &H87af87, &H87afaf, &H87afd7, &H87afff, &H87d700, &H87d75f, &H87d787, &H87d7af, &H87d7d7, &H87d7ff, &H87ff00, &H87ff5f, &H87ff87, &H87ffaf, &H87ffd7, &H87ffff, &Haf0000, &Haf005f, &Haf0087, &Haf00af, &Haf00d7, &Haf00ff, &Haf5f00, &Haf5f5f, &Haf5f87, &Haf5faf, &Haf5fd7, &Haf5fff, &Haf8700, &Haf875f, &Haf8787, &Haf87af, &Haf87d7, &Haf87ff, &Hafaf00, &Hafaf5f, &Hafaf87, &Hafafaf, &Hafafd7, &Hafafff, &Hafd700, &Hafd75f, &Hafd787, &Hafd7af, &Hafd7d7, &Hafd7ff, &Hafff00, &Hafff5f, &Hafff87, &Hafffaf, &Hafffd7, &Hafffff, &Hd70000, &Hd7005f, &Hd70087, &Hd700af, &Hd700d7, &Hd700ff, &Hd75f00, &Hd75f5f, &Hd75f87, &Hd75faf, &Hd75fd7, &Hd75fff, &Hd78700, &Hd7875f, &Hd78787, &Hd787af, &Hd787d7, &Hd787ff, &Hd7af00, &Hd7af5f, &Hd7af87, &Hd7afaf, &Hd7afd7, &Hd7afff, &Hd7d700, &Hd7d75f, &Hd7d787, &Hd7d7af, &Hd7d7d7, &Hd7d7ff, &Hd7ff00, &Hd7ff5f, &Hd7ff87, &Hd7ffaf, &Hd7ffd7, &Hd7ffff, &Hff0000, &Hff005f, &Hff0087, &Hff00af, &Hff00d7, &Hff00ff, &Hff5f00, &Hff5f5f, &Hff5f87, &Hff5faf, &Hff5fd7, &Hff5fff, &Hff8700, &Hff875f, &Hff8787, &Hff87af, &Hff87d7, &Hff87ff, &Hffaf00, &Hffaf5f, &Hffaf87, &Hffafaf, &Hffafd7, &Hffafff, &Hffd700, &Hffd75f, &Hffd787, &Hffd7af, &Hffd7d7, &Hffd7ff, &Hffff00, &Hffff5f, &Hffff87, &Hffffaf, &Hffffd7, &Hffffff, &H080808, &H121212, &H1c1c1c, &H262626, &H303030, &H3a3a3a, &H444444, &H4e4e4e, &H585858, &H606060, &H666666, &H767676, &H808080, &H8a8a8a, &H949494, &H9e9e9e, &Ha8a8a8, &Hb2b2b2, &Hbcbcbc, &Hc6c6c6, &Hd0d0d0, &Hdadada, &He4e4e4, &Heeeeee] 'Private $aaImage As New Byte[][] Static Public Sub _init() ' Component.Load(Component.Path &/ "gb.Image") ' Component.Load(Component.Path &/ "gb.Image.io") End Public Sub _new() ' Dim aLine As Byte[] ' Dim yPix As Byte ' Dim y As Integer ' Dim x As Integer ' ' $hImage = $hImage.Stretch(150, 100) ' ' For y = 0 To $hImage.Height ' aline = New Byte[] ' For x = 0 To $hImage.Width ' aLine.Add(ConvTermColor(Color.SetAlpha($hImage[x, y], 0))) ' Next ' $aaImage.Add(aline) ' Next ' ' ' _Render Me._ColorMode = TermColor.Mode256 End Private Function Image_Read() As Image Return $hImage End Private Sub Image_Write(Value As Image) $hImage = Value End Public Sub _Render() Dim img As Image Dim x, y As Integer Dim fg, bg As Integer Dim hattr As New Attr Dim hClientRect As Rect Dim hChar As Char Dim hRect As Rect = Me._GetRect() If Not Me._NeedRender Then Return Super._Render If $hImage = Null Then Return 'Return hClientRect = Me._GetClientRect() 'img2 = $hImage.Copy() 'hattr.ColorMode = TermColor.Mode256 Select Case $iStretch Case TermPictureBox.Cut Case TermPictureBox.Fit img = $hImage.Stretch(hClientRect.Width, (hClientRect.Height) * 2) Case TermPictureBox.Proportional Case Else 'AKA None img = $hImage.Copy() End Select Select Case $iAlignment Case Align.Right Case Align.Center Case Else 'AKA ALign.Left End Select For y = 0 To img.Height - 1 Step 2 For x = 0 To img.Width - 1 hChar = New Char fg = ConvTermColor(Color.SetAlpha(img[x, y], 0)) bg = ConvTermColor(Color.SetAlpha(img[x, y + 1], 0)) hattr.ColorMode = TermColor.Mode256 hattr.Foreground = fg hattr.Background = bg hChar.Attr = hattr.GetInteger() hChar.c = &H2580 'Try Me._Content[hClientRect.Top + y / 2][hClientRect.Left + x] = hChar Next Next 'Print ' For y = 0 To $aaImage.Max Step 2 ' For x = 0 To $aaImage[0].Max ' fg = $aaImage[y][x] ' Try bg = $aaImage[y + 1][x] ' hattr.Foreground = fg ' hattr.Background = bg ' hattr.Send() ' Print String.Chr(&H2580); ' Next ' Print ' ' ' ' ' Next Me._NeedRender = False End Private Function ConvTermColor(iTermColor As Integer) As Integer Dim i As Integer Dim fMax As Float = 1 Dim fCur As Float Dim iCur As Integer For i = 0 To $aTermColor.Max fcur = Color.Distance($aTermColor[i], iTermColor) If fcur < fMax Then fMax = fcur iCur = i Endif Next Return iCur End Private Function Stretch_Read() As Integer Return $iStretch End Private Sub Stretch_Write(Value As Integer) $iStretch = Value End Private Function Alignment_Read() As Integer Return $iAlignment End Private Sub Alignment_Write(Value As Integer) $iAlignment = Value End gambas-3.16.3/comp/src/gb.term.form/.src/TermRadioButton.class000066400000000000000000000035121411575327000240470ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Class Rect Property Text As String Property Value As Boolean Private $sText As String Private $iOldLen As Integer Private $bValue As Integer Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value End Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer Dim sALign As String Dim hRectC As Rect = Me._GetClientRect() Dim sValue As String Dim iBC As Integer If Not Me._NeedRender Then Return Super._Render sValue = IIf($bValue, "*", " ") sALign = "(" & sValue & ") " & $sText iBC = Me._GetBackGround() If Me.HaveFocus Then iBC = TermColor.Focus hAttr.Background = iBC hAttr.Foreground = Me.Foreground iAttr = hAttr.GetInteger() For i = 1 To Me._Content[0].count If Me._Content[0][Me._Content[0].Max] And If i > Max($iOldLen, String.Len(sALign)) Then Break If i <= String.Len(sALign) Then Me._Content[0][i - 1] = Char(Mid(sALign, i, 1), iAttr) Else Me._Content[0][i - 1] = Char(" ", iAttr) Endif Next Me._NeedRender = False End Private Function Value_Read() As Boolean Return $bValue End Private Sub Value_Write(Value As Boolean) If $bValue = Value Then Return If Value Then SetChecked $bValue = Value Me.Refresh '$iValue = Max(Min(Value, 1), -1) End Private Sub SetChecked() Dim hParent As TermContainer = Me.Parent Dim hCtrl As Object For Each hCtrl In hParent.Children If hCtrl Is TermRadioButton Then If hCtrl.Value Then hCtrl.Value = False Endif Next End Public Sub _MouseUp() Me.Value = True Super._MouseUp Super._Click 'Me._NeedRender = True 'Me.Refresh End Public Sub _KeyPress() If Key.Text = " " Then Me.Value = True Endif Super._Click Super._KeyPress End gambas-3.16.3/comp/src/gb.term.form/.src/TermScrollBar.class000066400000000000000000000060261411575327000235030ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Property MinValue As Integer Property MaxValue As Integer Property Value As Integer Private $iMaxValue As Integer = 5 Private $iMinValue As Integer Private $iValue As Integer Private $bInCursor As Boolean Private $iCursorPos As Integer Event Change Public Sub _new() Me.MaxValue = 5 Me.Value = 5 End Private Function MinValue_Read() As Integer Return $iMinValue End Private Sub MinValue_Write(Value As Integer) $iMinValue = Max(Value, 0) Me.Refresh End Private Function MaxValue_Read() As Integer Return $iMaxValue End Private Sub MaxValue_Write(Value As Integer) $iMaxValue = Value Me.Refresh End Private Function Value_Read() As Integer Return $iValue End Private Sub Value_Write(Value As Integer) $iValue = Max(Min($iMaxValue, Value), $iMinValue) Me.Refresh Raise Change End Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer Dim iHeight As Integer If Not Me._NeedRender Then Return Super._Render If Me.HaveFocus Then hAttr.Background = TermColor.Yellow Else hAttr.Background = Me._GetBackGround() Endif hAttr.Foreground = Me._GetForeground() iAttr = hAttr.GetInteger() If Me.Height >= Me.Width Then iHeight = Me.Height - 3 For i = 1 To Me._Content.Count - 3 Me._Content[i][0] = Char(String.Chr(&H2591), iAttr) Next Me._Content[0][0] = Char(String.Chr(&H25B2), iAttr) Me._Content[Me._Content.Count - 2][0] = Char(String.Chr(&H25BC), iAttr) If Me.MaxValue > 0 Then $iCursorPos = Ceil($iValue / ($iMaxValue - $iMinValue) * iHeight) + 1 Me._Content[$iCursorPos][0] = Char(String.Chr(&H2588), iAttr) Endif Else iHeight = Me.Width - 3 For i = 1 To Me._Content[0].max - 1 Me._Content[0][i] = Char(String.Chr(&H2591), iAttr) Next Me._Content[0][0] = Char(String.Chr(&H25C0), iAttr) Me._Content[0][Me._Content[0].Max] = Char(String.Chr(&H25BA), iAttr) If Me.MaxValue > 0 Then $iCursorPos = Ceil($iValue / ($iMaxValue - $iMinValue) * iHeight) + 1 Me._Content[0][$iCursorPos] = Char(String.Chr(&H2588), iAttr) Endif Endif Me._NeedRender = False End Public Sub _MouseDown() If Me.Height > Me.Width Then If Mouse.Row = 0 Then Dec Me.Value Else If Mouse.Row = Me.Height - 1 Then Inc Me.Value Else If Mouse.Row = $iCursorPos Then $bInCursor = True Endif Endif Else If Mouse.Col = 0 Then Dec Me.Value Else If Mouse.Col = Me.Width - 1 Then Inc Me.Value Else If Mouse.Col = $iCursorPos Then $bInCursor = True Endif Endif Endif Super._MouseDown End Public Sub _MouseUp() $bInCursor = False Super._MouseUp End Public Sub _MouseMove() Dim iHeight As Integer If Me.Height > Me.Width Then Me.Value = (Mouse.Row - 1) / (Me.Height - 3) * ($iMaxValue - $iMinValue) Else Me.Value = (Mouse.Col - 1) / (Me.Width - 3) * ($iMaxValue - $iMinValue) Endif Super._MouseMove End gambas-3.16.3/comp/src/gb.term.form/.src/TermTextBox.class000066400000000000000000000074311411575327000232160ustar00rootroot00000000000000' Gambas class file Export Inherits TermControl Class Rect Public Const _DrawWith As String = "TextBox" Property Text As String Private $sText As String Private $iOldLen As Integer Property Height As Integer Private $iCursor As Integer Private $iLenText As Integer Event Change Event Activate Public Sub _new() Me._AllowFocus = True 'Me.Height = 1 End Public Sub _Render() Dim hAttr As New Attr Dim iAttr As Integer Dim i As Integer If Not Me._NeedRender Then Return Super._Render If Me.HaveFocus Then hAttr.Background = TermColor.Yellow Else hAttr.Background = Me._GetBackGround() Endif hAttr.Foreground = Me._GetForeground() iAttr = hAttr.GetInteger() For i = 1 To Me._Content[0].count If Me._Content[0][Me._Content[0].Max] And If i > Max($iOldLen, $iLenText) Then Break If i <= $iLenText Then Me._Content[0][i - 1] = Char(Mid($sText, i, 1), iAttr) Else Me._Content[0][i - 1] = Char(" ", iAttr) Endif Next If Me.HaveFocus Then hAttr.FillFrom(iAttr) hAttr.Blink = True If $iCursor < Me.Width Then If $iCursor >= $iLenText Then Me._Content[0][$iLenText] = Char(String.Chr(&H258F), hAttr.GetInteger()) hAttr.Blink = False Me._Content[0][$iLenText + 1] = Char(" ", hAttr.GetInteger()) Else Swap hAttr.Background, hAttr.Foreground Me._Content[0][$iCursor].Attr = hAttr.GetInteger() Endif Endif 'Me._Content[0][string.Len($sText)].Attr = hAttr.GetInteger() Endif Me._NeedRender = False End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $iOldLen = String.len($sText) $sText = Value $iLenText = String.Len(Value) RefreshText ' TermWindows.SetRenderArea(rect(Me.ScreenX, Me.ScreenY, Max($iOldLen + 1, $iLenText), Me.Height)) ' Me._NeedRender = True ' Termwindows._Render() End Public Sub _KeyPress() Dim sText As String = Me.Text Select Case Key.Code Case Key.BackSpace '$iOldLen = $iLenText If $iCursor >= $iLenText Then sText = Left(sText, -1) Else If $iCursor = 0 Then Else Mid(sText, $iCursor, 1) = "" Endif Endif '$iLenText = String.Len($sText) $iCursor = Max(0, Min($iLenText, $iCursor - 1)) Me.Text = sText Raise Change Case Key.Left $iCursor = Max(0, Min($iLenText, $iCursor - 1)) RefreshText Case Key.Right $iCursor = Max(0, Min($iLenText, $iCursor + 1)) RefreshText Case Key.Home $iCursor = 0 RefreshText Case Key.End $iCursor = $iLenText RefreshText Case Key.Return Raise Activate Case Else If $iCursor >= $iLenText Then sText &= Key.Text Else If $iCursor = 0 Then sText = Key.Text & sText Else sText = Left(sText, $iCursor) & Key.Text & Right(sText, - $iCursor) Endif Endif Inc $iCursor Me.Text = sText Raise Change End Select Super._KeyPress End Private Sub RefreshText() TermWindows.SetRenderArea(rect(Me.ScreenX, Me.ScreenY, Max($iOldLen + 1, $iLenText + 1), Me.Height)) Me._NeedRender = True Termwindows._Render() End Private Function Height_Read() As Integer Return Super.Height End Private Sub Height_Write(Value As Integer) End Public Sub _GetBackGround() As Integer If Me.Background = -1 Then Return TermColor.TextBackground Else Return Me.Background Endif End Public Sub _GetForeGround() As Integer If Me.Foreground = -1 Then Return TermColor.TextForeground Else Return Me.Foreground Endif End Public Sub _MouseDown() Dim iPos As Integer = Min(Mouse.x, String.Len($sText)) If iPos <> $iCursor Then $iCursor = iPos RefreshText Endif Super._MouseDown End gambas-3.16.3/comp/src/gb.term.form/.src/TermVBox.class000066400000000000000000000002651411575327000224750ustar00rootroot00000000000000' Gambas class file Export Inherits TermContainer Public Sub _new() Super._Arrangement = Arrange.Vertical 'Super.Border = 1 'Super._Shadow = True 'Super.Padding = 1 End gambas-3.16.3/comp/src/gb.term.form/.src/TermWindow.class000066400000000000000000000272621411575327000230740ustar00rootroot00000000000000' Gambas class file Create Static Export Inherits TermContainer Class Rect Private $sText As String Property Arrangement As Integer Property Text, Title As String Property Maximized As Boolean Property Read Active As Boolean Property Resizable As Boolean Property Visible As Boolean Property Left, X, Column As Integer Property Top, Y, {Line} As Integer Property Width, W As Integer Property Height, H As Integer Property Persistent As Boolean Private $bOpen As Boolean Private $rectOldPos As Rect Private $bMaximized As Boolean Private $iInMove As Integer Private $tmrMove As Timer Private $iTmpCol As Integer Private $iTmpRow As Integer Private $bResizable As Boolean Private $bInResize As Boolean Private $iFocusedId As Integer Private $bPersistent As Boolean Property Read ScreenY As Integer Property Read ScreenX As Integer Public _IsModal As Boolean Event Close Event Open Public Sub _new() Me.Visible = False $iFocusedId = Me.id Object.Attach(Me, Me, "TermForm") End ' Static Public Sub Main() ' ' Dim hObject As Object ' ' hObject = Application.Startup.AutoCreate() ' 'If Not hObject Is Report Then Return ' 'FPreview.Run(hObject) ' TermWindows._Render ' ' End Public Sub _Render() Dim i As Integer Dim hAttr As New Attr Dim iAttr As Integer Dim b As Boolean = Me._NeedRender Super._Render If Not b Then Return 'Render TitleBar If Me.Border > 0 Then hAttr.Background = IIf(Me.Active, TermColor.ActiveWindow, TermColor.InactiveWindow) hAttr.Foreground = TermColor.White hAttr.Bold = True iAttr = hAttr.GetInteger() For i = 0 To Me.Width - 1 '- 2 Me._Content[0][i] = Char(" ", iAttr) Next Me._Content[0][0].c = Asc("[") Me._Content[0][1].c = Asc("]") For i = 1 To Min(Me._Content[0].Max, String.Len($sText)) - 2 Me._Content[0][i + 2].c = Asc(Mid($sText, i, 1)) Next Me._Content[0][Me._Content[0].Max].c = Asc("X") Endif Me._NeedRender = False If Me.Resizable Then hAttr.Background = Me.Background hAttr.Foreground = Me.Foreground hAttr.Bold = False iAttr = hAttr.GetInteger() If Not $bMaximized Then Me._Content[Me._Content.Max - 1][Me._Content[0].Max].c = &h25E2 Endif 'Catch End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) Dim bNeedLayout As Boolean If Len($sText) > 0 And Value = "" Then bNeedLayout = True If $sText = "" And Value <> "" Then bNeedLayout = True $sText = Value Me._NeedRender = True If bNeedLayout Then TermWindows.SetRefreshArea(Rect(Me.ScreenX, Me.ScreenY, Me.Width, Me.Height)) Else TermWindows.SetRenderArea(Rect(Me.ScreenX, Me.ScreenY, Me.Width, 1)) Endif TermWindows._Render End Public Sub _Arrange() 'Me._GetClientRect().Move(0, 1, Me.W - 1, Me.Height - 1) Super._Arrange End Private Function Maximized_Read() As Boolean Return $bMaximized End Private Sub Maximized_Write(Value As Boolean) If $bMaximized = Value And If $bMaximized Then $bMaximized = False Me.Move(0, 0, Desktop.Width, Desktop.Height) $bMaximized = True Return Endif If Value Then $rectOldPos = Me._GetRect() Me.Move(0, 0, Desktop.Width, Desktop.Height) $bMaximized = Value Else If $bMaximized <> value Then $bMaximized = Value Me.Move($rectOldPos.Left, $rectOldPos.Top, $rectOldPos.Width, $rectOldPos.Height) Endif Endif End Public Sub _ScreenResize() Me.Maximized = $bMaximized ' If $bMaximized Then ' Me.Move(0, 0, Desktop.Width, Desktop.Height) ' ' Endif End Public Sub Center() Me.Move((Desktop.Width - Me.Width) / 2, (Desktop.Height - Me.Height) / 2, Me.Width, Me.Height) End Public Sub Close() Dim hCont As TermControl Me.Visible = False Raise Close If Not Me.Persistent Then TermWindows.Delete(Me) Endif End Public Sub _MouseUp() If Mouse.ScreenY = Me.ScreenY Then If Mouse.ScreenX = Me.ScreenX + Me.Width - 1 Then Me.Close Return Endif If Mouse.X >= 0 And If Mouse.x <= 1 Then Me.Maximized = Not Me.Maximized Endif Endif $tmrMove = Null $iInMove = 0 $bInResize = False Super._MouseUp End Public Sub _MouseDown() If Mouse.Left If Not Me.Active Then Termwindows._RaiseWindow(Me) If Mouse.y = 0 Then $iInMove = Mouse.Col $tmrMove = New Timer As "_tmrMove" $tmrMove.Delay = 100 Endif If Mouse.y = Me.Height - 1 And Mouse.x = Me.Width - 1 Then If Me.Resizable And If Not Me.Maximized Then $tmrMove = New Timer As "_tmrMove" $tmrMove.Delay = 100 $bInResize = True Endif Endif Endif Super._MouseDown End Public Sub _MouseMove() If $iInMove > 0 Then $iTmpCol = Mouse.ScreenCol - $iInMove $iTmpRow = Mouse.ScreenRow $tmrMove.Start 'Me.Move(Mouse.ScreenX - $iInMove, Mouse.screeny) Endif If $bInResize Then $iTmpCol = Mouse.ScreenCol - Me.ScreenX $iTmpRow = Mouse.ScreenRow - Me.ScreenY $tmrMove.Start Endif Super._MouseMove End Private Function Active_Read() As Boolean Return TermWindows.GetActiveWindow() = Me End Public Sub _tmrMove_Timer() If $bInResize Then Me.Move(Me.Left, Me.Top, $iTmpCol, $iTmpRow) $tmrMove.Stop Else Me.Move($iTmpCol, $iTmpRow) $tmrMove.Stop Endif End Public Sub Activate() TermWindows._RaiseWindow(Me) End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) $bResizable = Value End Private Function Top_Read() As Integer Return Super.Top End Private Sub Top_Write(Value As Integer) If $bMaximized Then Return Super.Top = Value End Private Function Left_Read() As Integer Return Super.Left End Private Sub Left_Write(Value As Integer) If $bMaximized Then Return Super.Left = Value End Private Function Height_Read() As Integer Return Super.H End Private Sub Height_Write(Value As Integer) If $bMaximized Then Return If value < 3 Then Return Super.H = Value End Private Function Width_Read() As Integer Return Super.W End Private Sub Width_Write(Value As Integer) If $bMaximized Then Return If value < 5 Then Return Super.Width = Value End Public Sub Move(Left As Integer, Top As Integer, Optional Width As Integer, Height As Integer) If $bMaximized Then Return Super.Move(Left, Top, Width, Height) End Public Sub Resize(Width As Integer, Height As Integer) If $bMaximized Then Return Super.Resize(Width, Height) End Public Sub GetNextFocusedControl(hCtrl As TermControl, Optional bFirst As Boolean) As TermControl Dim hNext As Object Dim hParent As TermContainer Dim aChildren As TermControl[] Dim i As Integer 'On stock le control passé en argument Dim hFirst As TermControl = hCtrl Dim hCont As TermContainer hCont = hCtrl.Parent If Not hCont Then Return Null 'Trouver le parent du control aChildren = hCont.Children 'et la position du control i = aChildren.Find(hCtrl) Do 'Il n 'y a pas d'enfant a suivre If i = aChildren.Max Then 'le control a t'il un parent ? hParent = aChildren[i].Parent.Parent If hParent Then hNext = Null If hParent.Children.Count > 0 Then hNext = GetNextFocusedControl(hParent.Children[hParent.Children.Find(aChildren[i].Parent)]) If hNext Then Return hNext Endif i = 0 Else 'On passe a l'enfant suivant If Not bFirst Then Inc i Endif hNext = aChildren[i] 'Si on reviens au point de départ c'est qu'on a rien trouve If Not bFirst And If hNext = hFirst Then Return Null bFirst = False 'si c'est un conteneur If hNext Is TermContainer Then 'parcourir le conteneur hCtrl = Null 'si le conteneur a des enfants If hNext.Children.Count > 0 Then hCtrl = GetNextFocusedControl(hNext.Children[0], True) 'si on a trouve on Return l'enfant If hCtrl Then Return hCtrl 'sinon on passe a l'enfant suivant en repartant de l'enfant courant Continue 'si c'est pas un conteneur Else 'on verifie si le control accepte le focus 'si oui on le Return If hNext._AllowFocus Then Return hNext 'sinon on passe au control suivant Continue Endif Loop End Public Sub GetPrevFocusedControl(hCtrl As TermControl, Optional bFirst As Boolean) As TermControl Dim hNext As Object Dim hParent As TermContainer Dim aChildren As TermControl[] Dim i As Integer 'On stock le control passé en argument Dim hFirst As TermControl = hCtrl 'Trouver le parent du control aChildren = hCtrl.Parent.Children 'et la position du control i = aChildren.Find(hCtrl) Do If i = 0 Then 'le control a t'il un parent ? hParent = aChildren[i].Parent.Parent If hParent Then hNext = Null If hParent.Children.Count > 0 Then hNext = GetNextFocusedControl(hParent.Children[hParent.Children.Find(aChildren[i].Parent)]) If hNext Then Return hNext Endif i = aChildren.Max Else 'On passe a l'enfant suivant If Not bFirst Then Dec i Endif hNext = aChildren[i] 'Si on reviens au point de départ c'est qu'on a rien trouve If Not bFirst And If hNext = hFirst Then Return Null bFirst = False 'si c'est un conteneur If hNext Is TermContainer Then 'parcourir le conteneur hCtrl = Null 'si le conteneur a des enfants If hNext.Children.Count > 0 Then hCtrl = GetNextFocusedControl(hNext.Children[hNext.Children.Max], True) 'si on a trouve on Return l'enfant If hCtrl Then Return hCtrl 'sinon on passe a l'enfant suivant en repartant de l'enfant courant Continue 'si c'est pas un conteneur Else 'on verifie si le control accepte le focus 'si oui on le Return If hNext._AllowFocus Then Return hNext 'sinon on passe au control suivant Continue Endif Loop End Public Sub _SetFocus(hCtrl As TermControl) Dim hPrev As TermControl hPrev = TermControl._IdToControl[$iFocusedId] If hPrev Then hPrev._LostFocus hPrev.Refresh Endif $iFocusedId = hCtrl.Id End Public Function _GetCurrentFocusId() As Integer Return $iFocusedId End Public Sub _KeyPress() Dim hCtrl As TermControl If Key.Code = Key.Tab Then hCtrl = GetNextFocusedControl(TermControl._IdToControl[$iFocusedId]) If hCtrl Then hCtrl.SetFocus Return Endif If Key.Code = Key.BackTab Then GetPrevFocusedControl(TermControl._IdToControl[$iFocusedId]).SetFocus Return Endif Super._KeyPress hCtrl = TermControl._IdToControl[$iFocusedId] If hCtrl <> Me Then hCtrl._KeyPress End Private Function Persistent_Read() As Boolean Return $bPersistent End Private Sub Persistent_Write(Value As Boolean) $bPersistent = Value End Public Sub _GetClientRect() As Rect ' If Me Is TermFrame Then Stop '_DefineRect Dim hRect As Rect = Super._GetClientRect() If Me.Border < 1 And Me.Title <> "" Then hRect.y += 1 hRect.Height -= 1 Endif Return hRect End Private Function Visible_Read() As Boolean Return Super.Visible End Private Sub Visible_Write(Value As Boolean) If Value And If Not $bOpen Then Raise Open $bOpen = True Endif Super.Visible = Value End Private Function ScreenY_Read() As Integer Return Me.Top End Private Function ScreenX_Read() As Integer Return Me.Left End Public Sub ShowModal() Me._IsModal = True Me.Show End Private Function Arrangement_Read() As Integer Return Me._Arrangement End Private Sub Arrangement_Write(Value As Integer) Me._Arrangement = Value End gambas-3.16.3/comp/src/gb.term.form/.src/TermWindows.class000066400000000000000000000431161411575327000232530ustar00rootroot00000000000000' Gambas class file Export Create Static Class Rect Static Private Obs As Observer Static Private $aScreen As New Integer[] Static $hFile As File Static Private $RectRefreshArea As Rect Static Private $aChildren As New TermWindow[] Static Private $hRect As Rect Static Private $RectRenderArea As Rect Static Public {Debug} As Integer Static Private $Index As Integer Static Private $bThisIsTheEnd As Boolean Static Private $bInRender As Boolean Static Private $hCurControl As TermControl Static Private $iActiveWindow As Integer Static Public bLock As Boolean Static Private $hStream As File Public Enum DebugNone, DebugInput, DebugOutput Static Public Sub _init() Dim hRect As Rect Dim hSetting As TerminalSettings Component.Load("gb.geom") hRect = New Rect(0, 0, 3, 3) $hFile = Open File.In.Term.Name For Read Watch obs = New Observer(File.In) As "Terminal" hSetting = File.In.Term.GetAttr() 'hSetting.ICANON = False 'hSetting.ECHO = False hSetting.MakeRaw File.In.Term.SetAttr(Term.TCSANOW, hSetting) 'saveSetting(hSetting) Print "\e[?1002h\e[?1006h\e[?1049h\e[?25l\e[?2h"; Print "\e[8;30;200"; ResizeScreen(File.Out.Term.Width, File.Out.Term.Height) End Static Private Sub ResizeScreen(Width As Integer, Height As Integer) $aScreen = New Integer[Height, Width] $hRect = Rect(0, 0, Width, Height) $RectRefreshArea = $hRect.Copy() End Public Sub _Add(hWin As TermWindow) Dim i As Integer Dim hCurACtive As TermWindow hCurActive = TermControl._IdToControl[$iActiveWindow] If hCurACtive Then hCurACtive._NeedRender = True SetRenderArea(hCurACtive._getrect()) Endif $aChildren.Add(hWIn) $iActiveWindow = hWin.id ' For i = 0 To $aChildren.Max - 1 ' SetRenderArea($aChildren[i]._GetRect()) ' $aChildren[i]._NeedRender = True ' Next End Static Public Sub _RefreshScreen() $RectRefreshArea = $hRect.Copy() _Render End 'Recalculate the refresh zone Static Public Sub DoRefreshArea() Dim hChild As TermWindow Dim hRect As Rect If Not $RectRefreshArea Then Return DoArrange() 'refresh desktop 'Try RefreshDesktop($hRect.InterSection($RectRefreshArea)) 'Resfresh windows For Each hChild In $aChildren hRect = $hRect.InterSection($RectRefreshArea) 'Try RefreshChild(hChild, hRect) Next SetRenderArea($RectRefreshArea) $RectRefreshArea = Null End Static Private Sub RefreshDesktop(rectUpdate As Rect) Dim L, C As Integer For L = rectUpdate.Top To rectUpdate.Bottom - 1 For C = rectUpdate.Left To rectUpdate.Right - 1 $aScreen[l, C] = 0 Next Next End Static Private Sub RefreshChild(hChild As Object, hRect As Rect) Dim rectUpdate As Rect Dim L, C As Integer Dim hObj As Object 'On définit la zone de rectUpdate = hRect.InterSection(hChild._GetScreenRect()) 'L 'objet est invisible alors fin If Not hChild.Visible Then Return 'La zone n'existe pas alors fin If Not rectUpdate Then Return 'Remplissage de la zone de calepinageavec l'id de l'objet For L = rectUpdate.Top To rectUpdate.Bottom - 1 For C = rectUpdate.Left To rectUpdate.Right - 1 $aScreen[l, C] = hChild.Id Next Next 'L'objet est un conteneur ? If hChild Is TermContainer Then 'On applique la Client Zone rectUpdate = hRect.InterSection(hChild._GetScreenClientRect()) If Not IsNull(rectUpdate) Then For Each hObj In hChild.Children RefreshChild(hObj, rectUpdate) Next Endif Endif End ' Static Private Sub RefreshChild(hChild As Object, hRect As Rect) ' ' Dim iLeft, iRight, iTop, iBottom As Integer ' ' Dim L As Integer ' Dim C As Integer ' Dim hObj As Object ' Dim rectUpdate As Rect ' Dim iMove, iResize As Integer ' 'If hChild Is Window Then Stop ' ' rectUpdate = hRect.Intersection(hChild._GetScreenRect()) ' If hChild.Visible = False Then Return ' If Not rectUpdate Then Return ' ' For L = rectUpdate.Top To rectUpdate.Bottom - 1 ' For C = rectUpdate.Left To rectUpdate.Right - 1 ' $aScreen[l, C] = hChild.Id ' Next ' Next ' ' ' If hChild Is TermContainer Then ' imove = If(hChild.Border > 0, 1, 0) + hChild.Padding ' iResize = iMove * 2 + If(hChild._Shadow, 1, 0) ' rectUpdate.Move(rectUpdate.Left + iMove, rectUpdate.Top + imove, rectUpdate.Width - iResize, rectUpdate.Height - iResize) ' For Each hObj In hChild.Children ' ' RefreshChild(hObj, rectUpdate) ' Next ' ' Endif ' ' End Static Public Sub Terminal_Resize() Dim hWin As TermWindow ResizeScreen(File.Out.Term.Width, File.Out.Term.Height) For Each hWin In $aChildren hWin._ScreenResize Next 'Try SetRefreshArea(Rect(0, 0, Desktop.Width, Desktop.Height)) _Render End Static Public Sub File_Read() Dim s, ss, sss As String Dim ai As Integer[] Dim hControl As TermControl Dim R, C As Integer Dim i As Integer Dim b As Byte Dim ab As Byte[] Dim bnoesc As Boolean Dim iPos As Integer = 1 Dim iPos2 As Integer Dim bControl As Boolean Dim bInEscapeSec As Boolean Dim bFound As Boolean Dim aa As String[] Dim bAlt As Boolean 'Dim bControl As Boolean Dim bShift As Boolean s = Read #$hFile, Lof($hFile) bnoesc = InStr(s, "\e", 0) = -1 'Inc $index If s = "" Then Return Do ss = Mid(s, iPos, 1) If ss = "\e" Then bInEscapeSec = True Inc ipos Endif If bInEscapeSec Then 'Is a mouse sequence ? If Mid(s, ipos, 2) = "[<" Then 'find the end of the sequence i = InStr(s, "m", iPos, gb.IgnoreCase) If i > -1 Then sss = Mid(s, ipos + 2, i - (ipos + 1)) ai = Split(Left(sss, -1), ";") iPos = i + 1 'Mouse._setstate(x,y,Left, middle, right,delta) ai[2] -= 1 ai[1] -= 1 Try hControl = TermControl._IdToControl[$aScreen[ai[2], ai[1]]] If Error Then hControl = Null Select Case ai[0] 'Mouse move with left button down Case 32 'Mouse._SetState(hControl, ai[1], ai[2], True,,, 0) RaiseMouseEvent(hControl, "_MouseMove", ai[1], ai[2], True,,, 0) 'Mouse move with right button down Case 34 'Mouse._SetState(hControl, ai[1], ai[2],,, True, 0) RaiseMouseEvent(hControl, "_MouseMove", ai[1], ai[2],,, True, 0) 'Button left down Or up Case 0 'Mouse._SetState(hControl, ai[1], ai[2], Right(s, 1) = "M",,, 0) RaiseMouseEvent(hControl, IIf(Right(s, 1) = "M", "_MouseDown", "_MouseUp"), ai[1], ai[2], Right(s, 1) = "M",,, 0) 'Button middle down Or up Case 1 'Mouse._SetState(hControl, ai[1], ai[2],, Right(s, 1) = "M",, 0) RaiseMouseEvent(hControl, IIf(Right(s, 1) = "M", "_MouseDown", "_MouseUp"), ai[1], ai[2],, Right(s, 1) = "M",, 0) 'Button right down or up Case 2 'Mouse._SetState(hControl, ai[1], ai[2],,, Right(s, 1) = "M", 0) RaiseMouseEvent(hControl, IIf(Right(s, 1) = "M", "_MouseDown", "_MouseUp"), ai[1], ai[2],,, Right(s, 1) = "M", 0) 'Mouse wheel up or down Case 64, 65 'Mouse._SetState(hControl, ai[1], ai[2],,,, IIf(ai[0] = 64, -1, 1)) RaiseMouseEvent(hControl, "_MouseWheel", ai[1], ai[2],,,, IIf(ai[0] = 64, -1, 1)) End Select Endif bInEscapeSec = False Continue Endif i = 10 ipos2 = 10 ' If String.InStr(S, "B") Then Stop For Each ss In ["~", "A", "B", "C", "D", "H", "F", "P", "Q", "R", "S", "M", "Z"] i = InStr(s, ss, ipos) If i = 0 Then Continue ipos2 = Min(ipos2, i) Next Inc ipos2 sss = Mid(s, ipos, ipos2 - ipos) aa = Split(sss, ";") bInEscapeSec = False bShift = False bControl = False bAlt = False If aa.Count > 1 Then aa[0] &= Right(aa[1], 1) aa[1] = Left(aa[1], 1) If aa[1] = "2" Then bShift = True If aa[1] = "3" Then bAlt = True If aa[1] = "5" Then bControl = True Endif Select Case aa[0] Case "OA", "[A" 'Key.Up Key._SetKey("", Key.Up, bAlt, bControl, bShift) bFound = True Case "OB", "[B" 'Key.Down Key._SetKey("", Key.Down, bAlt, bControl, bShift) bFound = True Case "OC", "[C" 'Key.Right Key._SetKey("", Key.Right, bAlt, bControl, bShift) bFound = True Case "OD", "[D" 'Key.Left Key._SetKey("", Key.Left, bAlt, bControl, bShift) bFound = True 'Case 'Key.Enter, Key.Return ' sText = If(hScreen.NewlineMode, "\r\n", "\n") Case "OH", "[H" 'Key.Home 'sText="\e[1~" Key._SetKey("", Key.Home, bAlt, bControl, bShift) bFound = True Case "OF", "[F" 'Key.End Key._SetKey("", Key.End, bAlt, bControl, bShift) bFound = True Case "OP", "[1P" 'Key.F1 Key._SetKey("", Key.F1, bAlt, bControl, bShift) bFound = True Case "OQ", "[1Q" 'Key.F2 Key._SetKey("", Key.F2, bAlt, bControl, bShift) bFound = True Case "OR", "[1R" 'Key.F3 Key._SetKey("", Key.F3, bAlt, bControl, bShift) bFound = True Case "OS", "[1S" 'Key.F4 Key._SetKey("", Key.F4, bAlt, bControl, bShift) bFound = True Case "OM" 'Key.Return, Key.Enter Key._SetKey("", Key.Return, bAlt, bControl, bShift) bFound = True Case "[Z" 'Key.BackTab Key._SetKey("", Key.BackTab, bAlt, bControl, bShift) bFound = True Case "[2~" 'Key.Insert Key._SetKey("", Key.Insert, bAlt, bControl, bShift) bFound = True Case "[3~" 'Key.Delete Key._SetKey("", Key.Delete, bAlt, bControl, bShift) bFound = True Case "[6~" 'Key.PageDown Key._SetKey("", Key.PageDown, bAlt, bControl, bShift) bFound = True Case "[5~" 'Key.PageUp Key._SetKey("", Key.PageUp, bAlt, bControl, bShift) bFound = True Case "[15~" 'Key.F5 Key._SetKey("", Key.F5, bAlt, bControl, bShift) bFound = True Case "[17~" 'Key.F6 Key._SetKey("", Key.F6, bAlt, bControl, bShift) bFound = True Case "[18~" 'Key.F7 Key._SetKey("", Key.F7, bAlt, bControl, bShift) bFound = True Case "[19~" 'Key.F8 Key._SetKey("", Key.F8, bAlt, bControl, bShift) bFound = True Case "[20~" 'Key.F9 Key._SetKey("", Key.F9, bAlt, bControl, bShift) bFound = True Case "[21~" 'Key.F10 Key._SetKey("", Key.F10, bAlt, bControl, bShift) bFound = True Case "[23~" 'Key.F11 Key._SetKey("", Key.F11, bAlt, bControl, bShift) bFound = True Case "[24~" 'Key.F12 Key._SetKey("", Key.F12, bAlt, bControl, bShift) bFound = True Case "[29~" 'menu Key._SetKey("", Key.Menu, bAlt, bControl, bShift) bFound = True End Select If bFound Then ipos = ipos2 Endif bFound = False Else 'Normal Characters ss = Mid(s, iPos, 1) 'Key._SetKey(s, bControl) Select Case ss Case "\n" Key._SetKey(ss, Key.Return, bAlt, bControl, bShift) Case "\t" Key._SetKey(ss, Key.Tab, bAlt, bControl, bShift) Case Chr(8), Chr(127) Key._SetKey(ss, Key.BackSpace, bAlt, bControl, bShift) Case Else Key._SetKey(ss, 0, bAlt, bControl, bShift) End Select iPos += 1 Endif RaiseKeyEvent() Key._Reset Loop Until iPos > Len(s) 'This is the end If $bThisIsTheEnd Then TermControl._IdToControl = Null hControl = Null $hFile.Close Endif End Static Private Sub RaiseMouseEvent(hControl As TermControl, sEvent As String, Col As Integer, Row As Integer, Optional btnLeft As Boolean, btnMiddle As Boolean, btnRight As Boolean, Delta As Integer) 'Dim hControl As TermControl 'hControl = TermControl._IdToControl[$aScreen[Mouse.Row, Mouse.Col]] If hControl = Null And If $hCurControl = Null Then Return If sEvent = "_MouseDown" Then $hCurControl = hControl Mouse._SetState($hCurControl, Col, Row, btnLeft, btnMiddle, btnRight, Delta) If sEvent = "_MouseUp" Then If hControl = $hCurControl Then Object.Call($hCurControl, "_Click") Object.Call($hCurControl, sEvent) $hCurControl = Null Endif Endif If $hCurControl Then Object.Call($hCurControl, sEvent) End Static Private Sub RaiseKeyEvent() Select Case Key.Code Case Key.Menu If Key.Alt Then _RaiseWindow($aChildren[$aChildren.max - 1]) Endif Case Else TermControl._IdToControl[$iActiveWindow]._KeyPress() End Select End Static Public Sub _RaiseWindow(hWin As TermWindow) Dim hLastActive As TermWindow Dim i As Integer Dim bAdded As Boolean 'If $aChildren.Count = 1 Then Return 'hWin = $aChildren[0] hLastActive = $aChildren[$aChildren.Max] hLastActive._NeedRender = True hWin._NeedRender = True For i = $aChildren.Max DownTo 0 If $aChildren[i] <> hwin And If Not $aChildren[i]._IsModal Then $aChildren.Remove($aChildren.Find(hWIn)) $aChildren.add(hWin, i + 1) bAdded = True Endif Next SetRefreshArea(hWin._GetScreenRect()) SetRenderArea(hLastActive._GetScreenRect()) $iActiveWindow = hWin.id _Render End Static Public Sub _Read(sValue As String) Write "ok" & sValue End Static Public Sub SetRenderArea(hRect As Rect) If Not $RectRenderArea Then $RectRenderArea = hRect Return Endif $RectRenderArea = $RectRenderArea.Union(hRect) End Static Public Sub SetRefreshArea(hRect As Rect) If Not $RectRefreshArea Then $RectRefreshArea = hRect.Copy() 'New Rect 'If hRect.Top = 3 Then Stop $RectRefreshArea = $RectRefreshArea.Union(hRect) 'Error "RefreshARea : " & RectToStr($RectRefreshArea) End Static Public Sub RectToStr(hRect As Rect) As String Error "Top: " & hRect.Top & " Left: " & hRect.Left & " Width: " & hRect.Width & " Height: " & hRect.Height End Static Public Sub _Render() Dim c As Integer Dim l As Integer Dim hRect As Rect Dim hAttr As New Attr Dim hChar As Char Dim hCont As TermControl Dim sAttr As String Dim sDisplay As String Dim hOldCont As Object Dim iOldAttr As Integer Dim iBgAttr As Integer Dim iBgChar As Integer Dim bWroteBg As Boolean Dim iId As Integer If bLock Then Stop If $bInRender Then Return $hStream = Open String For Write $bInRender = True DoRefreshArea() RenderAll If Not IsNull($RectRenderArea) Then hRect = $hRect.Intersection($RectRenderArea) If hRect = Null Then $bInRender = False Return Endif With Desktop.Background iBgAttr = .Attr iBgChar = .c End With sAttr = hAttr._GetString(True) Write #$hStream, sAttr For l = hRect.Y To hRect.Bottom - 1 'Debug "ligne " & l Write #$hStream, "\e[" & (l + 1) & ";" & (hRect.X + 1) & "H" iOldAttr = 0 bWroteBg = False For c = hRect.X To hRect.Right - 1 iId = $aScreen[l, c] If iId Then hCont = TermControl._IdToControl[iId] If hOldCont <> hCont Then hAttr.Reset hAttr.ColorMode = hCont._ColorMode Endif hOldCont = hCont hChar = hCont._GetChar(c, l) If hChar.Attr <> iOldAttr Then hAttr.FillFrom(hChar.Attr) hAttr.WriteToStream($hStream) 'sAttr = hAttr._GetString() iOldAttr = hChar.Attr Endif 'Write #$hStream, sAttr Write #$hStream, String.Chr(hChar.c) bWroteBg = False Else If Not bWroteBg Then hAttr.FillFrom(iBgAttr) hAttr.WriteToStream($hStream) Endif Write #$hStream, String.Chr(iBgChar) bWroteBg = True Endif Next Next sDisplay = Close #$hStream If TermWindows.Debug = Me.DebugOutput Then Error Replace(Replace(sDisplay, "\e[", "\n"), "\e", "!"); Print sDisplay; Flush $RectRenderArea = Null $bInRender = False End Static Private Sub RenderAll() Dim hWin As TermWindow For Each hWin In $aChildren hWin._Render Next End Static Private Sub DoArrange() Dim hChild As TermWindow For Each hChild In $aChildren hChild._Arrange() Next End Static Public Sub Delete(hControl As TermControl) Dim hObj As Object = hControl TermControl._IdToControl[hObj.Id] = Null hObj._Content = Null If hObj Is TermContainer Then For Each hControl In hObj.Children Delete(hControl) Next 'hObj.Children.Clear Endif If hObj Is TermWindow Then $aChildren.Delete($aChildren.Find(hObj)) If $aChildren.Count > 0 Then _RaiseWindow($aChildren[$aChildren.Max]) Endif If $aChildren.Count = 0 Then $bThisIsTheEnd = True Endif End Static Public Sub GetActiveWindow() As TermWindow Return TermControl._IdToControl[$iActiveWindow] End gambas-3.16.3/comp/src/gb.term.form/.src/Test/000077500000000000000000000000001411575327000206545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.term.form/.src/Test/FTest2.class000066400000000000000000000020721411575327000230130ustar00rootroot00000000000000' Gambas class file Inherits TermForm Private aList As New String[] Private hTim As New Timer As "Tim" Private hList As TermListBox Private k As Integer Private hLbl As TermLabel Public Sub _new() Dim i As Integer 'aList = ["Chien", "Chat", "Eléphant", "Hiène", "Phoque", "Canard", "Hippoppo"] Me.Spacing = 1 hList = New TermListBox(Me) As "ListBox1" hLbl = New TermLabel(Me) For i = 1 To 200 aList.Add("Item" & i) Next 'hList._Shadow = True hList.List = aList Me.Move(0, 0, 60, 20) Me._Arrangement = Arrange.Vertical hList.Move(1, 1, 3, 3) 'Me._Arrangement = Arrange.Fill hList.Expand = True Me.Border = 0 hList.Background = termColor.Blue Me.Center Me.Show 'Me.Title = "Test 1" Me.Maximized = True hTim.Delay = 500 hTim.Start hLbl.Background = TermColor.Green hLbl.Foreground = TermColor.Black TermWindows.Debug = TermWindows.DebugOutput End Public Sub tim_Timer() 'hList[5] = k Inc k End Public Sub ListBox1_Change() hLbl.Text = Last.Text End Public Sub Form_close() hTim.Stop End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Main.module000066400000000000000000000060761411575327000227600ustar00rootroot00000000000000' Gambas module file Private hTimer As New Timer As "Timer" Private hWin2 As TermWindow Private hTermLabel As TermLabel Private $i As Integer Private $iBal As Integer = 1 Private $hCurFocued As Object 'Private hWin2 As TermForm Public Sub Main() Dim hWin As New TermForm Dim hTerCheckBox As TermRadioButton Dim i As Integer Dim hCont As TermVBox Dim hCont2 As TermHBox Dim hTermButton As TermButton 'TermWindows.Debug = True 'Dim hTermLabel As New TermLabel(hWin) 'Dim hWin2 As New Window hTermLabel = New TermLabel(hwin) hTimer.delay = 5 'hTimer.Start hWin.Left = 3 hWin.Top = 1 hWin.Height = 20 hWin.Width = 70 hwin.Padding = 1 hwin.Border = Border.Simple hTermLabel.Left = 2 hTermLabel.Top = 2 hTermLabel.Width = 7 hTermLabel.tag = "*" hTermLabel.Background = TermColor.Yellow hTermLabel.Foreground = TermColor.Green hTermLabel.Text = "TermLabel 1" hWin.Text = "Window 1" hTermLabel = New TermLabel(hWin) hTermLabel.Width = 15 hTermLabel.Text = "TermLabel 2" hTermLabel.Tag = "#" hTermLabel.SetFocus hWin2 = New TermWindow hWin2.Background = TermColor.Cyan hWin2.Border = Border.Simple hWin2.Width = 50 hWin2.Spacing = 1 hWin2.Height = 14 'hWin2._Shadow = True hWin2.top = 6 hWin2.Left = 15 'hWin2.Padding = 1 'hWin2.Maximized = True hWin2.Text = "Window 2" 'hCont.Top = 3 hTermLabel = New TermLabel(hWin2) hTermLabel.Width = 14 hTermLabel.Top = 2 hTermLabel.Left = 2 hTermLabel.Text = "TermLabel on win 2" hCont = New TermVBox(hWin2) hCont.Expand = True hcont.Background = TermColor.Green hcont.Border = Border.Simple 'hcont.Padding = 1 hcont.Shadow = True For i = 0 To 10 hTerCheckBox = New TermRadioButton(hcont) hTerCheckBox.Background = TermColor.Green hTerCheckBox.Text = "TermLabel " & i Next hCont2 = New TermHBox(hWin2) hCont2.Height = 2 hCont2.Spacing = 1 hCont2.Background = TermColor.Cyan hCont2.Invert = True 'hCont.Shadow = True hTermButton = New TermButton(hCont2) As "btnOk" 'hTermButton.Background = TermColor.Magenta hTermButton.Text = "Ok" hTermButton.W = 10 hTermButton.H = 2 hTermButton._Shadow = True hTermButton.Alignment = Align.Center hTermButton = New TermButton(hCont2) As "btnCancel" 'hTermButton.Background = TermColor.Magenta hTermButton.Text = "Cancel" hTermButton.W = 10 hTermButton.H = 2 hTermButton._Shadow = True hTermButton.Alignment = Align.Center 'hWin2.Maximized = True hWin2.Show hwin.Show 'TermWindows._Render $hCurFocued = hTermLabel hTermButton.SetFocus End Public Sub Timer_Timer() hTermLabel.Text = $i $hCurFocued = hWin2.GetNextFocusedControl($hCurFocued) Error Object.Type($hCurFocued) & " "; Try Error $hCurFocued.Text $hCurFocued.setFocus() Inc $i TermWindows._Render End Public Sub btnCancel_Click() Last.Window.Visible = False 'TermWindows._Render End Public Sub btnOk_Click() Dim hattr As New Attr hattr.Background = TermColor.Black 'Message("Salut a tous !") Desktop.BackGround = Char(" ", hattr.GetInteger()) hTimer.Start End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Main2.module000066400000000000000000000023651411575327000230370ustar00rootroot00000000000000' Gambas module file Private i As Integer Public Sub Main() Dim hForm As New TermForm Dim hCont As TermFrame Dim hCont2 As TermHBox Dim hTermButton As TermButton Dim hLabel As New TermLabel(hForm) Dim hCheck As TermCheckBox Dim i As Integer Dim hPicBox As TermPictureBox hLabel.Text = "Hello this is My first terminal window" hForm.Padding = 1 hForm.Height = 15 hForm.Width = 50 hForm.Text = "Hi Gambasians" hForm.Background = TermColor.White hForm.Border = Border.Double hcont = New TermFrame(hForm) hCont.Expand = True hCont.Text = "Choose an option" hCont2 = New TermHBox(hForm) hCont2.Invert = True hTermButton = New TermButton(hCont2) As "btnClose" hTermButton.Width = 10 hTermButton.Text = "< Close >" hcont.Background = TermColor.Cyan hcont.Shadow = True hcont.Border = Border.Simple hcont.Padding = 1 For i = 0 To 5 hCheck = New TermCheckBox(hcont) hCheck.Text = "Check me " & i hCheck.Value = Int(Rnd(-1, 2)) Next hPicBox = New TermPictureBox(hcont) hPicBox.Expand = True hPicBox.Image = Image.Load("all.png") hForm.Spacing = 1 hForm.Center hForm.Show hForm.Maximized = True 'TermWindows._Render End Public Sub btnClose_MouseUp() Last.Window.Close End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Main3.module000066400000000000000000000001331411575327000230270ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim hpicture As New TermPictureBox Quit End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Module1.module000066400000000000000000000001011411575327000233610ustar00rootroot00000000000000' Gambas module file Public Sub Main() Print "toto" End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Termform1.class000066400000000000000000000001131411575327000235520ustar00rootroot00000000000000' Gambas class file Public Sub TermForm_Open() Me.Title = "toto" End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Termform1.termform000066400000000000000000000004071411575327000243060ustar00rootroot00000000000000# Gambas Form File 3.0 { TermForm TermForm Move(0,0,52,22) #Translate = False { TermTextBox1 TermTextBox Move(11,7,22,2) } { TermLabel2 TermLabel Move(0,7,11,2) Text = ("Bonjour") } { TermTextBox2 TermTextBox Move(11,11,22,2) } } gambas-3.16.3/comp/src/gb.term.form/.src/Test/Termform2.class000066400000000000000000000002041411575327000235540ustar00rootroot00000000000000' Gambas class file Public Sub TermForm_Open() 'Me.Persistent = True Me.Move(0, 0, 30, 10) Me.Background = TermColor.Red End gambas-3.16.3/comp/src/gb.term.form/.src/Test/Termform2.termform000066400000000000000000000001071411575327000243040ustar00rootroot00000000000000# Gambas Form File 3.0 { TermForm TermForm #MoveScaled(0,0,68,37) } gambas-3.16.3/comp/src/gb.term.form/.src/Test/trfTest.class000066400000000000000000000027131411575327000233410ustar00rootroot00000000000000' Gambas class file Inherits TermForm Private $hLab2 As TermLabel 'Private hTimer As New Timer As "Timer" Public Sub _New() Dim hText As TermTextBox Dim hBox As New TermHBox(Me) Dim hLab As New TermLabel(hBox) Dim hBar As TermScrollBar Dim bar As TermScrollBar Dim hbb As TermHBox 'Dim hlab2 As TermLabel 'Me.Maximized = True 'Me.Background = Color.Yellow Me.Padding = 1 Me.Move(3, 3, 50, 20) Me.Text = "coucou" Me.Border = Border.Simple Me.Visible = True Me.Center Me._Arrangement = Arrange.Vertical Me.Spacing = 1 hLab.Text = "Votre nom: " hLab.W = Len(hLab.Text) hText = New TermTextBox(hBox) As "TextBox" hText.Text = "test" hText.Expand = True hText.SetFocus hbox = New TermHBox(Me) hlab = New TermLabel(hbox) hLab.Text = "Votre prenom: " hLab.W = Len(hLab.Text) hText = New TermTextBox(hBox) As "TextBox" hText.Text = "test" hText.Expand = True ' $hlab2 = New TermLabel(Me) $hlab2.Background = TermColor.green $hlab2.Show hbb = New TermHBox(Me) hbb.Height = 8 hbb.Expand = True hbox = New TermHBox(hbb) 'hbox.Expand bar = New TermScrollBar(hbb) As "Bar" bar.Height = 5 bar.Width = 1 bar.Show bar.Background = TermColor.red bar = New TermScrollBar(Me) As "bar" bar.Show bar.MinValue = -20 bar.MaxValue = 100 End Public Sub TextBox_Change() $hLab2.Text = Last.text End Public Sub Bar_Change() $hlab2.Text = Last.value End gambas-3.16.3/comp/src/gb.term.form/all.png000066400000000000000000000027431411575327000203540ustar00rootroot00000000000000PNG  IHDR00` PLTEllkjkkkpllfokkfkikkkklkjljkjkkkjkkl6wϭ|wWnזq նM2+)>`cK֡*XA燸=88,l5^ʒLŹ?7P64Ev6ϬrJ@Fø.ewGB17/I`RoОtщs3Qb;5ًjUud̔Ե/$#tRNSZmw'&QhgvYӉPIDATHǕVC1 !P6pA7'CAPe"nQqK/WwIތ$o1HutЃ!nb֡ySPOΰdfedgeZ2Hw~T4 yt9:ʕ> EEĺwK))F# _ZFtN篨$RYW) #i0[d*mu_Bx Jc c nhB2e6yz}n|v~0Z&=wgIzn [(˜vd!vY1)P;R.(P$#L1Rg_(8P?9DW'qzpC,K߼E陙Y r )¼#tGOaG◾ÿOKs.(wbV8tN\jl}?Cj+ǎ'}/,-iI;tV,xx"~ȡg3=>|5xR}\tT}joPayLW weF,dc?&$2MlټwH'kX*S7s1^bZn^b-ŽexlY)vjbܚvGǧ֩agMvqz=ccG{z:=PL Zz C9ɘlL2'?h`שIENDB`gambas-3.16.3/comp/src/gb.util.web/000077500000000000000000000000001411575327000167105ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util.web/.component000066400000000000000000000000631411575327000207120ustar00rootroot00000000000000[Component] Key=gb.util.web Version=3.16.0 State=1 gambas-3.16.3/comp/src/gb.util.web/.directory000066400000000000000000000000411411575327000207100ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.util.web/.hidden/000077500000000000000000000000001411575327000202215ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util.web/.hidden/control/000077500000000000000000000000001411575327000217015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util.web/.hidden/control/ccontainer.png000066400000000000000000000031061411575327000245340ustar00rootroot00000000000000PNG  IHDR szz IDATXåklwfegD5HH|t劫~rrc@Z)5'Wkcp˄]4oژ*yck`0 X͏ᑟCcyT?vKFC0*ݡ%ECc g]!aqTDʊL1i)荷 yV< MJSxIˋu$"`":ACUr# v5X8| ƍ$8*EX&7v Kc xPۖ/Д`_ d_FP䔠tGèsuZ'ʗ1 "d&F"^K`阋mZs'd6P`@""10S3u\$lCxQ"cQӋPdfڼFP鱹{;͋lETD8&OۏO?)-dLاҍkSa}"rVWvooӶw}3ru᪣@ !3\NQzT$Zө6jr޳>;p8 3SN|<=]=8p}lrHD̆;Ǫuvۊf0.q DAEҩ!!g?o[?LXJQŤ&td_y78 LN)=;?(={p0V5-HDDRv!zS7W?z.mz:v{zkŪfR }9Yx/=*zڃnD=uu`-!5mƷ[s%w%bwֵJj+ifpIT)s޽mY &^Chľ؝|=廸IENDB`gambas-3.16.3/comp/src/gb.util.web/.hidden/control/ccontrol.png000066400000000000000000000031061411575327000242320ustar00rootroot00000000000000PNG  IHDR szz IDATXåklwfegD5HH|t劫~rrc@Z)5'Wkcp˄]4oژ*yck`0 X͏ᑟCcyT?vKFC0*ݡ%ECc g]!aqTDʊL1i)荷 yV< MJSxIˋu$"`":ACUr# v5X8| ƍ$8*EX&7v Kc xPۖ/Д`_ d_FP䔠tGèsuZ'ʗ1 "d&F"^K`阋mZs'd6P`@""10S3u\$lCxQ"cQӋPdfڼFP鱹{;͋lETD8&OۏO?)-dLاҍkSa}"rVWvooӶw}3ru᪣@ !3\NQzT$Zө6jr޳>;p8 3SN|<=]=8p}lrHD̆;Ǫuvۊf0.q DAEҩ!!g?o[?LXJQŤ&td_y78 LN)=;?(={p0V5-HDDRv!zS7W?z.mz:v{zkŪfR }9Yx/=*zڃnD=uu`-!5mƷ[s%w%bwֵJj+ifpIT)s޽mY &^Chľ؝|=廸IENDB`gambas-3.16.3/comp/src/gb.util.web/.icon.png000066400000000000000000000252651411575327000204360ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxo$G߿~[jI3;};.l ^l0``faڻݳFҴ~g=>DFVVHb2Ȍ;~AAAAAAAAAAAAAAAAAAAAAAA1/E/RxnL\ &^3])O}k|t)?B5K'%“toJ},ϊs+?ן$}l Z92RN_1Y:OL'_Y]_O$++%q׵𑐐R=xǿ~OJ H_Oƥ.bkN> F\X#!p[&ظ>vM1 s> U-kקz^NzBLM,3['E !cmFkt&foRߥ8~~8jr߈ F\Y[1ϜZUiCvl35YhR{Vzq|/qRb:'h8%1>y<7/=8OloIT h7 5,=צ`Ź'he椿`^6_SbcOy]HQq aұ\`yt q|!{ƽ?xqjhV[sw&?ŀfu䟌L~~3rT}:ZL][)]wt<;n=聞Wabeu \+(?Yܚsͯ-1~B+3LX/偱L?""\=Q??1igȲ5exmәYiXm)#S}}N9_,КMWXx.!2 &:PX!S,"Es@ktf-ciӹrก ȿן5Ǘ++'uxD$W~]zW~N 4Q<\-Mnr~$Νy jRf#&J\s6 N&Fϙ;  L-P4.3=J'}|N0_Z^W(t%(?P/K_3]VRj|-{#I.3?&5hs0H&8$sL3:Vc,<3)yG߽`Jу+Gp04}`D&, f!5l@jJJ1)E~r(} yBkq?<i"`f!1I5Mo?/ q#sΗYQA2113r r"Oϧ{ (@0/zSީ]דF@B@ʑYؘgәTa@ \&$JhrA$ RJ+Hs9fߧcnaB` {Ykg>e·W7abI1z$ `2_6at Oܧ^drɯ҃|# @:n2Ls>H<+E bx^ /t]{ Oy\L&>Nx __00 Amk* Iˏ)c_ky?ҁƯW\,q7 $2\i9sRs9$ÉkME*iGcbyL,(cd5 *ay(Dɏ;Vʼ =wra0-'&x &381^ZL]<xgLkH)Ǐ,Y-&rI%Q. Ϳ@ۿoIc\Ypm@J @.arGO~ ;Z5&l4؀HiJ8`"R2BS(&~1\ %SsTLalS|rYxcШH[$L[\ Le(5?+E'. RY2 e?d#Wdphm5yi:W!K^QAȒ; 4!JO5?r EMX.и0]yn|NHMhHvW?Z%XZ*FaZ,ڇ ހ4&]7J>PbŸבwȑ F22Ok~e352u!?IZ2)jߧi|cVdq_~[ gOFI׃4Q"Pӗ:_Z+!Gˏ2_\]GV!&{95~-uJ yzq'4tOYnkݝ_W]K7I8z\ @c WQDEąOd1Т\dO^դu!FBE兹?a ,I <~ud"p.Y ?5ZYP$) _XFU!11__GHd'\; @߱ c~שE|%E8kϵ4pYޤ\[`Tۯ,;b`ia&O\c1 5Ӭ\?6`sq`i npap[znPcyA 4W@Pn%'%Xcs |"Z/!ݱ:(A>#P~F?qm*g /Ovp|x=G$'n27"0 c Bvʀ Jh:'n27pF`j>i|H @SJ)|P=KH[[-]؅?Mskh8ҚlyL~rb#9s-2:/.>kxV%"Ee'K=ȦSpeK\'@dHs7?|omZ&R GY$ˊ6V[O?Av5e2f}<ڟa 0@Iz@%a?p rsy$9R9 yb/{nGT7D\ aCu| ci6rt @"S ^XlkxZG m:Ѭ /z!y@1W=4e?jo}<D2d$kڡ azrZ&찔B(ųN @ p.?k_,%"Lv!/_u푏N H )w:n74B*g^N;k` ΰ$^ʍgG`vxǫ~d_q}?0`2$S uۄm,FH N3푏aAH3 PiH,8wG? L2J$ǛM`${~xqG;=<R!sd\.$oB|b׏6 O$B,T^`s \WC|ǯ8 S$B*8iKWH .{@e S|;@*$r; pg9\qNAˆ,+@_k^Lt c؜c69C=.O_7xr0gr=?F 1ԃ* +@3lCի.qgxinH 0L.2)!: x/vzboA0` i1 4i'~692C i?UB[$~ci7g)WY Ga'b " T'g(UP,+j/kxf᪇+.n7H^B1$C&%|dBU bQ<@2а/~H >`O d@ <9~99Sp6q_Ya(g[a L(OR3X Ux#_\k~?p'`;}27'5` 5@͚ P D;y/D0C~rX !^C TKh[ MۂЏKdQ !WIg5 A0uh5 ā^`g u@6TzrT~&`$B38f>V?8x ]Wt´Lgh4|V J&gXF)󕈝0źa}_/R&_ ׽|'1Ѱ  ,_"LUwV-rdu||7nN7,o\|Wqx `^^Τ4+, Dv?_>*wh˧a$  DeǪk~op2Y7G>Q\[uWjxw+<3opp\4 [-qB"JQR,i8 b3|w@0cZкA`D@Qv$h[5a!H^Cg CR ah{~o.>b{grH  dY^ACSp$E)vw{0AəI& Stɔ|DFx vzxS,I3i0yX LgHŹMw[*^Nd\$Ae/d[*;ۃq&Ie $C:=AEU?D'LjIy8GӶt,XWԤC`d2;c >p*$zq x1L21v I%I8Sta a_Q7\0k+8$H&0SY\a3xo"np dDA0Te/n.^*Úe`  IeM¢q Mf HD4٩7@u} x]Cf;2uۦZ.k*pv5%\o8 Q^J<@=VkV\`T~& `ę~ ¡`?aם ul&<-kÍ:ܓ]Si0_G`^(_XXMKkT4wHvxQpu*9 cro`x\SmM^; ݏ;c= F6(%؜ayg=t\fjǜ5>ۺ(78ϞcQ8[ sƮ#3Ys$8 wG>wR³ in6r&$TbX_ n711oH?w0 Ngn]FH^ =ēCzx{ݦ B6a^bWnA4ˤftq6k1BP`IyN"쏧]^8B7J7݌pFT^W^5Y1UQ`;L)xrc_Ξ%x ?Nwnɒ ybqkbóh&_$;aWp/[MqL-톍k~Bs 0őgW2pˁV΁(8  YZ.ZqQ 8o*'[.5]mW~mLmeͺ͆ מg&5]50R! S7+ u;zh9&-E}J6]û(82zwéV{V ,9 Zʛdbw޽2(0Tm-'@?Nb)T?Bp|gs Ngwh޺G+rL|cC1R1!A쮹66<[ n?CG=Αw0j 4mƔ4l&<;5x q&G* uO>B&;s4m랍k!;lMNmC-tvŝ&j(8S[pLw}o{aU:uPi-\ c!LEp gXT 6=5s zU~`s3Vlg5g9-½\@۵UwpL5̛~&B"-<W39au@9Ax6J &'Q>V [IDAT5%`kZ ߿3sd*,Ctq&p$E j6]4l[&DMB0 Ily5vn&ZkXMm- 7 2&y'=;߼coӱj&fxCæ2@i04Mǜf c [F t; p9!m[Hkg4`r>gB"0n~ f*u,Z.[pE03Gg@ywY_;hQkp-w I5A\-LNw  f|Nݏa]n7`s`0^q{y 0<{ 0x5 DiVtipxEl3 ƳNvuuY--аF,8o{(oݽӏp$6y00Jne11Oy=fu7J ˸ogmx76<ˀT"{-jо#5 ^1Yʱ3pMtLS c<|wv{x նcgL++Í>l`A`XG۱hڪɥ2O90/vz0ڮu%0N8}~XuMӮǷhQ:W\vl13v&ܰT~r^C|?{}|;0I8&_]/%$hQcfg 8)uCu1|ـksk"NB{WC<EU1&ǝV?z>i/'go8yD ^BZ!xyBa ~?,$VLAg T;  b|w_w1 h:jh6xg<^WTT~& `-=ӏ.AzG!?0S1~|J zɡo}|{cg&ٹz ?jN˅cr2s28V] w.YO3$Qg&Tw$5& 6V-)%D^ $dǏ3QPɡ|ۗi阸p&~cהŲi#j;Cf[MD}˞Z vwvUwVrLxMO Q%ʒx=;8  8w>}{qmF#W6p0jArFB] {~A}?v$ܲ7%^O} -ĝl5[-|VG5~ .t{O}ͰPP4)T? \(M18gߪ'i{h,򙙊ϴpXepih8|B:\@2W, y\>5 ۼξ3 h΀^v D\m]cn:~nF^[#q Xx8 b*=f \h6qa᪇6ѭ&jcu! `0k߾{sj*ZFn4fWh/.Yw-=0ln^mOmrh:&V] WjhpjM&߈_,+Af-ªgoLnڵ{kuUۮaóUQ :2#OycX8ct8E|BK jڰMlm⛼F0P;] ]w1w5<\p`óv-l z7`+P#vMFc/@ DEcP1`PA653 ,5cóv{$NFT!D~7rWp$c" " cE{ӂz/>sM[.n7,-zY,{ո랄~{xUeK@ V] 5 \K*~?Մ5vttͿ{oXSTiOXbjBP{5N8NHAt@'Au9M}bh5 @[ LA@T~D/ATQaHD!@DL-S\0$ CA@T~& * 0DGzĜx:k7~PӧOv}C!@ӧOzK n?a ,Qm*~?S *L][W=2 C *  @ATQa%AT DՀQa(@ATs)P * QaHAAAAAAAAAAAAAAAAAAAAAAAA(ʻIENDB`gambas-3.16.3/comp/src/gb.util.web/.project000066400000000000000000000002071411575327000203560ustar00rootroot00000000000000# Gambas Project File 3.0 Title=gb.util.web Startup=MMain Version=3.16.0 VersionFile=1 TabSize=2 Language=fr Type=Component Packager=1 gambas-3.16.3/comp/src/gb.util.web/.src/000077500000000000000000000000001411575327000175555ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util.web/.src/JS.class000066400000000000000000000026371411575327000211300ustar00rootroot00000000000000' Gambas class file Export Static Public Sub _call(Value As Variant) As String Dim sStr As String Dim iPos As Integer Dim cCol As Collection Select Case TypeOf(Value) Case gb.Null Return "null" Case gb.Boolean If Value Then Return "true" Else Return "false" Endif Case gb.Byte, gb.Short, gb.Integer, gb.Long, gb.Float Return CStr(Value) Case gb.Date Return "'" & CStr(Value) & "'" Case gb.String sStr = Quote(Value) sStr = "'" & Replace(Mid$(sStr, 2, -1), "'", "\\'") & "'" Do iPos = InStr(sStr, "\\", iPos + 1) If iPos = 0 Then Break If Mid$(sStr, iPos + 1, 1) = "x" Then Mid$(sStr, iPos, 4) = "\\u00" & Mid$(sStr, iPos + 2, 2) Else Inc iPos Endif Loop Return sStr Case Else If Value Is Array Then sStr = "[" For iPos = 0 To Value.Max If iPos Then sStr &= ", " sStr &= _call(Value[iPos]) Next sStr &= "]" Return sStr Else If Value Is Collection Then cCol = Value sStr = "{" For Each Value In cCol If iPos Then sStr &= ", " sStr &= _call(cCol.Key) sStr &= ": " sStr &= _call(Value) Inc iPos Next sStr &= "}" Return sStr Endif End Select End gambas-3.16.3/comp/src/gb.util.web/.src/JSON.module000066400000000000000000000152741411575327000215460ustar00rootroot00000000000000' Gambas module file Export Property Read {Null} As Variant Private $vNull As Variant Private $sStr As String Private $iPos As Integer Private $bUseNull As Boolean Private $hStream As File Public Sub _init() $vNull = VarPtr($vNull) End Private Sub GetChar() As String Dim sCar As String If $iPos > Len($sStr) Then Return sCar = Mid$($sStr, $iPos, 1) Inc $iPos Return sCar End Private Sub ReadChar() As String Dim sCar As String Do sCar = GetChar() If Not sCar Then Return If sCar > " " Then Return sCar Loop End Private Sub ReadToken() As String Dim sToken As String Dim sCar As String GoSub READ_CHAR If Not IsLetter(sCar) Then Return sCar sToken = sCar Do GoSub GET_CHAR If Not sCar Then Break If Not IsLetter(sCar) Then Dec $iPos Break Endif sToken &= sCar Loop Return sToken READ_CHAR: Do GoSub GET_CHAR If Not sCar Or If sCar > " " Then Return Loop Return GET_CHAR: If $iPos > Len($sStr) Then sCar = "" Return Endif sCar = Mid$($sStr, $iPos, 1) Inc $iPos Return End Private Sub ReadString() As String Dim sCar As String Dim sString As String Dim sBuffer As String Dim iPos As Integer Do GoSub GET_CHAR If sCar = Chr$(34) Then Return sString & sBuffer If sCar = "\\" Then GoSub GET_CHAR iPos = InStr("bfrtn", sCar) If iPos Then sCar = Mid$("\b\f\r\t\n", iPos, 1) Else If sCar = "u" Then Try sCar = String.Chr$(Val("&H" & Mid$($sStr, $iPos, 4))) If Not Error Then $iPos += 4 Else ' Keep character Endif Endif sBuffer &= sCar If Len(sBuffer) > 512 Then sString &= sBuffer sBuffer = "" Endif Loop GET_CHAR: If $iPos > Len($sStr) Then Error.Raise("Non terminated string") sCar = Mid$($sStr, $iPos, 1) Inc $iPos Return End Private Sub ReadObject() As Collection Dim sCar As String Dim cObject As Collection Dim sKey As String If $bUseNull Then cObject = New JSONCollection Else cObject = New Collection Endif Do GoSub READ_CHAR If sCar = "}" Then Return cObject If sCar <> Chr$(34) Then Error.Raise("String expected") sKey = ReadString() GoSub READ_CHAR If sCar <> ":" Then Error.Raise("Colon expected") cObject[sKey] = ReadValue() GoSub READ_CHAR If sCar = "}" Then Return cObject If sCar <> "," Then Error.Raise("Comma expected") Loop READ_CHAR: Do GoSub GET_CHAR If Not sCar Or If sCar > " " Then Return Loop Return GET_CHAR: If $iPos > Len($sStr) Then sCar = "" Return Endif sCar = Mid$($sStr, $iPos, 1) Inc $iPos Return End Private Sub ReadArray() As Variant[] Dim sCar As String Dim aArray As New Variant[] Do sCar = ReadChar() If sCar = "]" Then Return aArray Dec $iPos aArray.Add(ReadValue()) sCar = ReadChar() If sCar = "]" Then Return aArray If sCar <> "," Then Error.Raise("Comma expected") Loop End Private Sub ReadNumber(sNumber As String) As Variant Dim sCar As String Dim vNumber As Variant Dim bFloat As Boolean Do GoSub GET_CHAR If Not sCar Then Break If InStr(".eE", sCar) Then bFloat = True Else If InStr("-+0123456789", sCar) = 0 Then Dec $iPos Break Endif sNumber &= sCar Loop If bFloat Then Try vNumber = CFloat(sNumber) If Not Error Then Return vNumber Else Try vNumber = CInt(sNumber) If Not Error Then Return vNumber Try vNumber = CLong(sNumber) If Not Error Then Return vNumber Endif Error.Raise("Incorrect number") GET_CHAR: If $iPos > Len($sStr) Then sCar = "" Return Endif sCar = Mid$($sStr, $iPos, 1) Inc $iPos Return End Private Sub ReadValue() As Variant Dim sCar As String sCar = ReadToken() If sCar = "{" Then Return ReadObject() Else If sCar = "[" Then Return ReadArray() Else If sCar = Chr$(34) Then Return ReadString() Else If sCar = "-" Or If IsDigit(sCar) Then Return ReadNumber(sCar) Else If sCar = "null" Then Return Null Else If sCar = "true" Then Return True Else If sCar = "false" Then Return False Else If Not sCar Then Return Else Error.Raise("Incorrect token: " & Quote(sCar)) Endif End Private Sub WriteString(sStr As String) Dim iPos As Integer sStr = Quote(sStr) Do iPos = InStr(sStr, "\\", iPos + 1) If iPos = 0 Then Break If Mid$(sStr, iPos + 1, 1) = "x" Then Mid$(sStr, iPos, 4) = "\\u00" & Mid$(sStr, iPos + 2, 2) Else Inc iPos Endif Loop Write #$hStream, sStr End Private Sub WriteValue(vVal As Variant) Dim iPos As Integer Dim aArray As Array Dim cCol As Collection Select Case TypeOf(vVal) Case gb.Null Write #$hStream, "null" Case gb.Boolean If vVal Then Write #$hStream, "true" Else Write #$hStream, "false" Endif Case gb.Byte, gb.Short, gb.Integer, gb.Long, gb.Float Write #$hStream, CStr(vVal) Case gb.Date Write #$hStream, Chr$(34) & CStr(vVal) & Chr$(34) Case gb.String WriteString(vVal) Case gb.Pointer If vVal = JSON.Null Then Write #$hStream, "null" Else Write #$hStream, "undefined" Endif Case Else If vVal Is Array Then aArray = vVal Write #$hStream, "[" For iPos = 0 To vVal.Max If iPos Then Write #$hStream, "," WriteValue(vVal[iPos]) Next Write #$hStream, "]" Else If vVal Is Collection Then cCol = vVal Write #$hStream, "{" For Each vVal In cCol If iPos Then Write #$hStream, "," WriteString(cCol.Key) Write #$hStream, ":" WriteValue(vVal) Inc iPos Next Write #$hStream, "}" Else If IsNull(vVal) Then Write #$hStream, "null" Else Write #$hStream, "undefined" Endif End Select End Public Sub Decode(JSONString As String, Optional UseNull As Boolean) As Variant Dim vVal As Variant $sStr = JSONString $iPos = 1 $bUseNull = UseNull vVal = ReadValue() $bUseNull = False $sStr = "" Return vVal End Public Sub FromString(JSONString As String, Optional UseNull As Boolean) As Variant Return Decode(JSONString, UseNull) End Public Sub Encode(Value As Variant) As String Dim sStr As String $hStream = Open String For Write WriteValue(Value) sStr = Close #$hStream Return sStr End Public Sub ToString(Value As Variant) As String Return Encode(Value) End Private Function Null_Read() As Variant Return $vNull End gambas-3.16.3/comp/src/gb.util.web/.src/JSONCollection.class000066400000000000000000000011761411575327000233760ustar00rootroot00000000000000' Gambas class file Export Inherits Collection Public Sub _get(Key As String) As Variant Dim vVal As Variant vVal = Super[Key] If TypeOf(vVal) = gb.Pointer And If vVal = JSON.Null Then vVal = Null Return vVal End Public Sub _put(Value As Variant, Key As String) If IsNull(Value) Then Value = JSON.Null Super[Key] = Value End Public Sub _next() As Variant Super._next() If Not Enum.Stopped Then Return _get(Me.Key) End Public Sub Copy() As JSONCollection Dim hCopy As New JSONCollection Dim vVal As Variant For Each vVal In Me hCopy[Me.Key] = vVal Next Return hCopy End gambas-3.16.3/comp/src/gb.util.web/.src/MMain.module000066400000000000000000000010531411575327000217640ustar00rootroot00000000000000' Gambas module file Public Function GetNullVariant() As Variant Return Null End Public Function GetNullObject() As Object Return Null End Public Sub Main2() Dim hURL As URL hURL = URL.FromString("http://localhost/guygle/find?query=ordre+de+travail+avec+interventions+dont+la+date+planifiée+est+comprise+entre+le+01%2F03%2F2017+et+31%2F03%2F2017+et+type+est+Campagne+dont+agence+est+AG.CIG.GONESSE&format=json&test#f5") Print hURL.Query["query"] Print hURL.ToString() End Public Sub Main() Print JSON.FromString("") End gambas-3.16.3/comp/src/gb.util.web/.src/URL.class000066400000000000000000000063561411575327000212600ustar00rootroot00000000000000' Gambas class file Export Public Protocol As String Public Host As String Public Port As String Public (User) As String Public Password As String Public Path As String Public Query As UrlQuery Public Hash As String Static Public Sub Quote((Path) As String) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(Path) sCar = Mid$(Path, iInd, 1) If IsLetter(sCar) Or If IsDigit(sCar) Or If InStr("-._~,$!", sCar) Then Else sCar = "%" & Hex$(Asc(sCar), 2) Endif sRes &= sCar Next Return sRes End Static Public Sub Unquote((Path) As String, Optional DoNotDecodePlus As Boolean) As String Dim iInd As Integer Dim sRes As String Dim sCar As String For iInd = 1 To Len(Path) sCar = Mid$(Path, iInd, 1) If sCar = "%" Then sCar = Chr$(Val("&H" & Mid$(Path, iInd + 1, 2))) iInd += 2 Else If sCar = "+" And If Not DoNotDecodePlus Then sCar = " " Endif sRes &= sCar Next Return sRes End Static Public Sub Encode((Path) As String) As String Return {Quote}(Path) End Static Public Sub Decode((Path) As String) As String Return {UnQuote}(Path) End Private Sub CreateUrl(sUrl As String) As URL Dim iPos As Integer Dim sTemp As String Dim sIdent As String iPos = InStr(sURL, ":") If iPos Then Protocol = Left(sURL, iPos - 1) sURL = Mid$(sURL, iPos + 1) Endif If sURL Begins "//" Then sURL = Mid$(sURL, 3) iPos = InStr(sURL, "/") If iPos = 0 Then sTemp = sURL sURL = "" Else sTemp = Left(sURL, iPos - 1) sURL = Mid$(sURL, iPos) Endif iPos = InStr(sTemp, "@") If iPos Then sIdent = Left(sTemp, iPos - 1) sTemp = Mid$(sTemp, iPos + 1) iPos = InStr(sIdent, ":") If iPos Then User = Left(sIdent, iPos - 1) Password = Mid$(sIdent, iPos + 1) Else User = sIdent Endif Endif iPos = InStr(sTemp, ":") If iPos Then Host = Left(sTemp, iPos - 1) Port = Mid(sTemp, iPos + 1) Else Host = sTemp Endif Endif iPos = InStr(sURL, "#") If iPos Then Hash = Mid(sURL, iPos + 1) sURL = Left(sURL, iPos - 1) Endif iPos = InStr(sURL, "?") If iPos Then Path = Left(sURL, iPos - 1) Query = New URLQuery(Mid$(sURL, iPos + 1)) Else Path = sURL Endif User = FromUrl(User) Password = FromUrl(Password) Host = FromUrl(Host) Port = FromUrl(Port) Path = FromUrl(Path) Hash = FromUrl(Hash) End Public Sub _new(URL As String) CreateUrl(URL) End Public Sub ToString() As String Dim sURL As String Dim sQuery As String If Protocol Then sURL = Protocol & ":" If Host Then sUrl &= "//" If User Or If Password Then sUrl &= Url(User) If Password Then sUrl &= ":" & Url(Password) sUrl &= "@" Endif sUrl &= Url(Host) If Port Then sUrl &= ":" & Url(Port) Endif If Path Then sUrl &/= Url(Path) sQuery = Query.ToString() If sQuery Then sUrl &= "?" & sQuery If Hash Then sUrl &= "#" & Url(Hash) Return sUrl End Static Public Sub FromString(URL As String) As URL Return New URL(URL) End gambas-3.16.3/comp/src/gb.util.web/.src/URLQuery.class000066400000000000000000000035371411575327000223040ustar00rootroot00000000000000' Gambas class file Export Property Read Count As Integer Property Read Keys As String[] Private $cNull As New Collection Private $cVal As New Collection Public Sub _new(Query As String) Dim sElt As String Dim iPos As Integer Dim sKey As String Dim sValue As String Dim cKey As New Collection For Each sElt In Split(Query, "&") iPos = InStr(sElt, "=") If iPos Then sKey = URL.UnQuote(Left(sElt, iPos - 1), True) sValue = URL.Unquote(Mid$(sElt, iPos + 1), True) Else sKey = URL.UnQuote(sElt) sValue = "" Endif If Not sKey Then Continue If cKey.Exist(sKey) Then Continue If sValue Then $cVal[sKey] = sValue Else $cNull[sKey] = True Endif Next End Public Sub Exist(Key As String) As Boolean If $cNull.Exist(Key) Then Return True If $cVal.Exist(Key) Then Return True End Public Sub Remove(Key As String) $cNull.Remove(Key) $cVal.Remove(Key) End Public Sub _get(Key As String) As String Return $cVal[Key] End Public Sub _put(Value As String, Key As String) Remove(Key) If Value Then $cVal[Key] = Value Else $cNull[Key] = True Endif End Public Sub ToString() As String Dim aQuery As New String[] Dim sVal As String For Each sVal In $cVal aQuery.Add(URL.Quote($cVal.Key) & "=" & URL.Quote(sVal)) Next For Each $cNull aQuery.Add(URL.Quote($cNull.Key)) Next Return aQuery.Join("&") End Static Public Sub FromString(Query As String) As URLQuery Return New URLQuery(Query) End Private Function Count_Read() As Integer Return $cVal.Count + $cNull.Count End Private Function Keys_Read() As String[] Dim aKeys As String[] aKeys = New String[] For Each $cVal aKeys.Add($cVal.Key) Next For Each $cNull aKeys.Add($cNull.Key) Next Return aKeys End gambas-3.16.3/comp/src/gb.util/000077500000000000000000000000001411575327000161345ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util/.component000066400000000000000000000000601411575327000201330ustar00rootroot00000000000000[Component] Key=gb.util Version=3.15.90 State=1 gambas-3.16.3/comp/src/gb.util/.directory000066400000000000000000000000411411575327000201340ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.util/.icon.png000066400000000000000000000252651411575327000176620ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxo$G߿~[jI3;};.l ^l0``faڻݳFҴ~g=>DFVVHb2Ȍ;~AAAAAAAAAAAAAAAAAAAAAAA1/E/RxnL\ &^3])O}k|t)?B5K'%“toJ},ϊs+?ן$}l Z92RN_1Y:OL'_Y]_O$++%q׵𑐐R=xǿ~OJ H_Oƥ.bkN> F\X#!p[&ظ>vM1 s> U-kקz^NzBLM,3['E !cmFkt&foRߥ8~~8jr߈ F\Y[1ϜZUiCvl35YhR{Vzq|/qRb:'h8%1>y<7/=8OloIT h7 5,=צ`Ź'he椿`^6_SbcOy]HQq aұ\`yt q|!{ƽ?xqjhV[sw&?ŀfu䟌L~~3rT}:ZL][)]wt<;n=聞Wabeu \+(?Yܚsͯ-1~B+3LX/偱L?""\=Q??1igȲ5exmәYiXm)#S}}N9_,КMWXx.!2 &:PX!S,"Es@ktf-ciӹrก ȿן5Ǘ++'uxD$W~]zW~N 4Q<\-Mnr~$Νy jRf#&J\s6 N&Fϙ;  L-P4.3=J'}|N0_Z^W(t%(?P/K_3]VRj|-{#I.3?&5hs0H&8$sL3:Vc,<3)yG߽`Jу+Gp04}`D&, f!5l@jJJ1)E~r(} yBkq?<i"`f!1I5Mo?/ q#sΗYQA2113r r"Oϧ{ (@0/zSީ]דF@B@ʑYؘgәTa@ \&$JhrA$ RJ+Hs9fߧcnaB` {Ykg>e·W7abI1z$ `2_6at Oܧ^drɯ҃|# @:n2Ls>H<+E bx^ /t]{ Oy\L&>Nx __00 Amk* Iˏ)c_ky?ҁƯW\,q7 $2\i9sRs9$ÉkME*iGcbyL,(cd5 *ay(Dɏ;Vʼ =wra0-'&x &381^ZL]<xgLkH)Ǐ,Y-&rI%Q. Ϳ@ۿoIc\Ypm@J @.arGO~ ;Z5&l4؀HiJ8`"R2BS(&~1\ %SsTLalS|rYxcШH[$L[\ Le(5?+E'. RY2 e?d#Wdphm5yi:W!K^QAȒ; 4!JO5?r EMX.и0]yn|NHMhHvW?Z%XZ*FaZ,ڇ ހ4&]7J>PbŸבwȑ F22Ok~e352u!?IZ2)jߧi|cVdq_~[ gOFI׃4Q"Pӗ:_Z+!Gˏ2_\]GV!&{95~-uJ yzq'4tOYnkݝ_W]K7I8z\ @c WQDEąOd1Т\dO^դu!FBE兹?a ,I <~ud"p.Y ?5ZYP$) _XFU!11__GHd'\; @߱ c~שE|%E8kϵ4pYޤ\[`Tۯ,;b`ia&O\c1 5Ӭ\?6`sq`i npap[znPcyA 4W@Pn%'%Xcs |"Z/!ݱ:(A>#P~F?qm*g /Ovp|x=G$'n27"0 c Bvʀ Jh:'n27pF`j>i|H @SJ)|P=KH[[-]؅?Mskh8ҚlyL~rb#9s-2:/.>kxV%"Ee'K=ȦSpeK\'@dHs7?|omZ&R GY$ˊ6V[O?Av5e2f}<ڟa 0@Iz@%a?p rsy$9R9 yb/{nGT7D\ aCu| ci6rt @"S ^XlkxZG m:Ѭ /z!y@1W=4e?jo}<D2d$kڡ azrZ&찔B(ųN @ p.?k_,%"Lv!/_u푏N H )w:n74B*g^N;k` ΰ$^ʍgG`vxǫ~d_q}?0`2$S uۄm,FH N3푏aAH3 PiH,8wG? L2J$ǛM`${~xqG;=<R!sd\.$oB|b׏6 O$B,T^`s \WC|ǯ8 S$B*8iKWH .{@e S|;@*$r; pg9\qNAˆ,+@_k^Lt c؜c69C=.O_7xr0gr=?F 1ԃ* +@3lCի.qgxinH 0L.2)!: x/vzboA0` i1 4i'~692C i?UB[$~ci7g)WY Ga'b " T'g(UP,+j/kxf᪇+.n7H^B1$C&%|dBU bQ<@2а/~H >`O d@ <9~99Sp6q_Ya(g[a L(OR3X Ux#_\k~?p'`;}27'5` 5@͚ P D;y/D0C~rX !^C TKh[ MۂЏKdQ !WIg5 A0uh5 ā^`g u@6TzrT~&`$B38f>V?8x ]Wt´Lgh4|V J&gXF)󕈝0źa}_/R&_ ׽|'1Ѱ  ,_"LUwV-rdu||7nN7,o\|Wqx `^^Τ4+, Dv?_>*wh˧a$  DeǪk~op2Y7G>Q\[uWjxw+<3opp\4 [-qB"JQR,i8 b3|w@0cZкA`D@Qv$h[5a!H^Cg CR ah{~o.>b{grH  dY^ACSp$E)vw{0AəI& Stɔ|DFx vzxS,I3i0yX LgHŹMw[*^Nd\$Ae/d[*;ۃq&Ie $C:=AEU?D'LjIy8GӶt,XWԤC`d2;c >p*$zq x1L21v I%I8Sta a_Q7\0k+8$H&0SY\a3xo"np dDA0Te/n.^*Úe`  IeM¢q Mf HD4٩7@u} x]Cf;2uۦZ.k*pv5%\o8 Q^J<@=VkV\`T~& `ę~ ¡`?aם ul&<-kÍ:ܓ]Si0_G`^(_XXMKkT4wHvxQpu*9 cro`x\SmM^; ݏ;c= F6(%؜ayg=t\fjǜ5>ۺ(78ϞcQ8[ sƮ#3Ys$8 wG>wR³ in6r&$TbX_ n711oH?w0 Ngn]FH^ =ēCzx{ݦ B6a^bWnA4ˤftq6k1BP`IyN"쏧]^8B7J7݌pFT^W^5Y1UQ`;L)xrc_Ξ%x ?Nwnɒ ybqkbóh&_$;aWp/[MqL-톍k~Bs 0őgW2pˁV΁(8  YZ.ZqQ 8o*'[.5]mW~mLmeͺ͆ מg&5]50R! S7+ u;zh9&-E}J6]û(82zwéV{V ,9 Zʛdbw޽2(0Tm-'@?Nb)T?Bp|gs Ngwh޺G+rL|cC1R1!A쮹66<[ n?CG=Αw0j 4mƔ4l&<;5x q&G* uO>B&;s4m랍k!;lMNmC-tvŝ&j(8S[pLw}o{aU:uPi-\ c!LEp gXT 6=5s zU~`s3Vlg5g9-½\@۵UwpL5̛~&B"-<W39au@9Ax6J &'Q>V [IDAT5%`kZ ߿3sd*,Ctq&p$E j6]4l[&DMB0 Ily5vn&ZkXMm- 7 2&y'=;߼coӱj&fxCæ2@i04Mǜf c [F t; p9!m[Hkg4`r>gB"0n~ f*u,Z.[pE03Gg@ywY_;hQkp-w I5A\-LNw  f|Nݏa]n7`s`0^q{y 0<{ 0x5 DiVtipxEl3 ƳNvuuY--аF,8o{(oݽӏp$6y00Jne11Oy=fu7J ˸ogmx76<ˀT"{-jо#5 ^1Yʱ3pMtLS c<|wv{x նcgL++Í>l`A`XG۱hڪɥ2O90/vz0ڮu%0N8}~XuMӮǷhQ:W\vl13v&ܰT~r^C|?{}|;0I8&_]/%$hQcfg 8)uCu1|ـksk"NB{WC<EU1&ǝV?z>i/'go8yD ^BZ!xyBa ~?,$VLAg T;  b|w_w1 h:jh6xg<^WTT~& `-=ӏ.AzG!?0S1~|J zɡo}|{cg&ٹz ?jN˅cr2s28V] w.YO3$Qg&Tw$5& 6V-)%D^ $dǏ3QPɡ|ۗi阸p&~cהŲi#j;Cf[MD}˞Z vwvUwVrLxMO Q%ʒx=;8  8w>}{qmF#W6p0jArFB] {~A}?v$ܲ7%^O} -ĝl5[-|VG5~ .t{O}ͰPP4)T? \(M18gߪ'i{h,򙙊ϴpXepih8|B:\@2W, y\>5 ۼξ3 h΀^v D\m]cn:~nF^[#q Xx8 b*=f \h6qa᪇6ѭ&jcu! `0k߾{sj*ZFn4fWh/.Yw-=0ln^mOmrh:&V] WjhpjM&߈_,+Af-ªgoLnڵ{kuUۮaóUQ :2#OycX8ct8E|BK jڰMlm⛼F0P;] ]w1w5<\p`óv-l z7`+P#vMFc/@ DEcP1`PA653 ,5cóv{$NFT!D~7rWp$c" " cE{ӂz/>sM[.n7,-zY,{ո랄~{xUeK@ V] 5 \K*~?Մ5vttͿ{oXSTiOXbjBP{5N8NHAt@'Au9M}bh5 @[ LA@T~D/ATQaHD!@DL-S\0$ CA@T~& * 0DGzĜx:k7~PӧOv}C!@ӧOzK n?a ,Qm*~?S *L][W=2 C *  @ATQa%AT DՀQa(@ATs)P * QaHAAAAAAAAAAAAAAAAAAAAAAAA(ʻIENDB`gambas-3.16.3/comp/src/gb.util/.lang/000077500000000000000000000000001411575327000171335ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util/.lang/fr.po000066400000000000000000000013301411575327000200770ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.util 3.13.90\n" "POT-Creation-Date: 2020-11-18 18:41 UTC\n" "PO-Revision-Date: 2019-08-25 22:26 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 "Utility routines" msgstr "Routines utilitaires" #: File.class:9 msgid "&1 B" msgstr "&1 o" #: File.class:11 msgid "&1 KiB" msgstr "&1 Kio" #: File.class:13 msgid "&1 MiB" msgstr "&1 Mio" #: File.class:15 msgid "&1 GiB" msgstr "&1 Gio" #: File.class:21 msgid "&1 KB" msgstr "&1 Ko" #: File.class:23 msgid "&1 MB" msgstr "&1 Mo" #: File.class:25 msgid "&1 GB" msgstr "&1 Go" gambas-3.16.3/comp/src/gb.util/.lang/it.po000066400000000000000000000013151411575327000201070ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.util 3.13.90\n" "PO-Revision-Date: 2019-08-27 15:52 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Utility routines" msgstr "Routine di utilità" # gb-ignore #: File.class:9 msgid "&1 B" msgstr "" # gb-ignore #: File.class:11 msgid "&1 KiB" msgstr "" # gb-ignore #: File.class:13 msgid "&1 MiB" msgstr "" # gb-ignore #: File.class:15 msgid "&1 GiB" msgstr "" # gb-ignore #: File.class:21 msgid "&1 KB" msgstr "" # gb-ignore #: File.class:23 msgid "&1 MB" msgstr "" # gb-ignore #: File.class:25 msgid "&1 GB" msgstr "" gambas-3.16.3/comp/src/gb.util/.lang/ru.po000066400000000000000000000034521411575327000201250ustar00rootroot00000000000000# 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-07-16 08:59+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" #: comp/src/gb.util/.project:11 msgid "Gambas utility routines" msgstr "Подпрограммы утилит Gambas" #: comp/src/gb.util/.src/Date.module:91 msgid "Unknown timezone '&1'" msgstr "Неизвестный часовой пояс '&1'" #: comp/src/gb.util/.src/File.class:9 comp/src/gb.util/.src/File.class:19 msgid "&1 B" msgstr "&1 Б" #: comp/src/gb.util/.src/File.class:11 msgid "&1 KiB" msgstr "&1 кБ" #: comp/src/gb.util/.src/File.class:13 msgid "&1 MiB" msgstr "&1 МБ" #: comp/src/gb.util/.src/File.class:15 msgid "&1 GiB" msgstr "&1 ГБ" #: comp/src/gb.util/.src/File.class:21 msgid "&1 KB" msgstr "&1 Кб" #: comp/src/gb.util/.src/File.class:23 msgid "&1 MB" msgstr "&1 МБ" #: comp/src/gb.util/.src/File.class:25 msgid "&1 GB" msgstr "&1 ГБ" gambas-3.16.3/comp/src/gb.util/.lang/zh.po000066400000000000000000000013051411575327000201130ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.util 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:41 UTC\n" "PO-Revision-Date: 2020-11-18 18:40 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Utility routines" msgstr "实用程序例程" #: File.class:9 msgid "&1 B" msgstr "" #: File.class:11 msgid "&1 KiB" msgstr "&1 KB" #: File.class:13 msgid "&1 MiB" msgstr "&1 MB" #: File.class:15 msgid "&1 GiB" msgstr "&1 GB" #: File.class:21 msgid "&1 KB" msgstr "" #: File.class:23 msgid "&1 MB" msgstr "" #: File.class:25 msgid "&1 GB" msgstr "" gambas-3.16.3/comp/src/gb.util/.project000066400000000000000000000002341411575327000176020ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Utility routines Startup=MMain Version=3.15.90 VersionFile=1 TabSize=2 Translate=1 Language=en_US Type=Component Packager=1 gambas-3.16.3/comp/src/gb.util/.src/000077500000000000000000000000001411575327000170015ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.util/.src/Class.class000066400000000000000000000052671411575327000211070ustar00rootroot00000000000000' Gambas class file Export Static Private $iSectionSize As Integer Static Private $iSectionPos As Integer Static Private Sub GotoNextSection(hFile As File) $iSectionPos += $iSectionSize Seek #hFile, $iSectionPos $iSectionSize = Read #hFile As Integer $iSectionPos += 4 End Static Private Sub ReadZeroString(hFile As File) As String Dim sStr As String Dim iPos As Integer Do sStr &= Read #hFile, Min(16, Lof(hFile) - Seek(hFile)) iPos = InStr(sStr, Chr$(0)) If iPos Then Return Left(sStr, iPos - 1) Loop End '' Return information about a class from its name, by analyzing its bytecode file. '' '' By default the class file is searched in the calling component or project. '' If ~Name~ is prefixed with `../`, then the class file is searched one component up. '' If ~Name~ is prefixed with '.../', then the class file is searched in the project. Static Public Sub Stat(Name As String) As ClassStat Dim sPath As String Dim hFile As File Dim hStat As ClassStat Dim iVal As Integer Dim iParent As Integer Dim iFlag As Short Dim bDebug As Boolean Dim iStringPos As Integer Dim sDir As String If Name Begins ".../" Then Name = Mid$(Name, 5) sPath = ".../.gambas" &/ UCase(Name) Else While Name Begins "../" Name = Mid(Name, 4) sDir &= "../" Wend sPath = ".." &/ sDir &/ ".gambas" &/ UCase(Name) Endif If Not Exist(sPath) Then Error.Raise("Class not found") $iSectionPos = 0 $iSectionSize = 0 hStat = New ClassStat hStat.Name = Name hFile = Open sPath Seek #hFile, 8 iVal = Read #hFile As Integer If iVal <> &H12345678 Then hFile.ByteOrder = 1 - hFile.ByteOrder Seek #hFile, 12 iVal = Read #hFile As Integer bDebug = iVal And 1 $iSectionSize = 16 GotoNextSection(hFile) ' info Seek #hFile, $iSectionPos iParent = Read #hFile As Short iFlag = Read #hFile As Short hStat.Exported = BTst(iFlag, 0) hStat.AutoCreate = BTst(iFlag, 1) hStat.Optional = BTst(iFlag, 2) hStat.NoCreate = BTst(iFlag, 3) hStat.HasFast = BTst(iFlag, 4) hStat.Test = BTst(iFlag, 5) GotoNextSection(hFile) ' description GotoNextSection(hFile) ' constant GotoNextSection(hFile) ' reference If iParent <> -1 Then Seek #hFile, $iSectionPos + iParent * 4 iParent = Read #hFile As Integer iParent = Abs(iParent) Endif Do iStringPos = $iSectionPos Try GotoNextSection(hFile) If Error Then Break Loop Seek #hFile, iStringPos hStat.Name = ReadZeroString(hFile) If iParent > 0 Then Seek #hFile, iStringPos + iParent hStat.Parent = ReadZeroString(hFile) Endif Close hFile Return hStat End gambas-3.16.3/comp/src/gb.util/.src/ClassStat.class000066400000000000000000000003521411575327000217310ustar00rootroot00000000000000' Gambas class file Export Public Name As String Public Parent As String Public Exported As Boolean Public HasFast As Boolean Public AutoCreate As Boolean Public NoCreate As Boolean Public Optional As Boolean Public Test As Boolean gambas-3.16.3/comp/src/gb.util/.src/CsvFile.class000066400000000000000000000124071411575327000213670ustar00rootroot00000000000000' Gambas class file Export Property Read Eof As Boolean Property Fields As String[] Property Read Line As Integer Static Private $bCreate As Boolean Private $hFile As File Private $aField As String[] Private $sSeparator As String Private $sEscape As String Private $iLine As Integer Private $bWrite As Boolean Private $sCharset As String Static Public Sub Open(Path As String, Optional Separator As String = ",", Optional Escape As String = "\"", Optional Charset As String) As CsvFile Return New CsvFile(Path, Separator, Escape, Charset) End Static Public Sub Create(Path As String, Optional Separator As String = ",", Optional Escape As String = "\"", Optional Charset As String) As CsvFile $bCreate = True Return New CsvFile(Path, Separator, Escape, Charset) End Public Sub _new(Path As String, Optional Separator As String = ",", Optional Escape As String = "\"", Optional Charset As String) Dim sLine As String Dim iInd As Integer Dim sField As String $sSeparator = Separator $sEscape = Escape $sCharset = Charset If $bCreate Then $bCreate = False $bWrite = True $hFile = Open Path For Output Create Return Endif If File.IsRelative(Path) Then If Path Begins "./" Then Path = "." & Path Else If Path Not Begins "../" Then Path = ".." &/ Path Endif Endif $hFile = Open Path For Input sLine = $hFile.ReadLine($sEscape) If Not $sCharset And If Not String.IsValid(sLine) Then $sCharset = "WINDOWS-1252" Try sLine = Conv(sLine, $sCharset, "UTF-8") If Error Then $sCharset = "ISO-8859-15" Try sLine = Conv(sLine, $sCharset, "UTF-8") If Error Then Error.Raise("Cannot guess charset") Endif Endif $aField = Split(sLine, $sSeparator, $sEscape) For iInd = 0 To $aField.Max sField = Trim($aField[iInd]) sField = Replace(sField, String.Chr(160), " ") sField = Replace(sField, "\n", " ") sField = Replace(sField, "\t", " ") While InStr(sField, " ") sField = Replace(sField, " ", " ") Wend sField = String.LCase(sField) If Not sField Then sField = "#" & CStr(iInd) $aField[iInd] = sField Next $iLine = 1 End Public Sub Read() As Collection Dim sLine As String Dim aLine As String[] Dim cCol As Collection Dim iInd As Integer If Eof($hFile) Then Return cCol = New Collection(gb.IgnoreCase) Inc $iLine sLine = $hFile.ReadLine($sEscape) If $sCharset Then sLine = Conv(sLine, $sCharset, "UTF-8") aLine = Split(sLine, $sSeparator, $sEscape) For iInd = 0 To Min($aField.Max, aLine.Max) cCol[$aField[iInd]] = Trim(Replace(aLine[iInd], String.Chr(160), " ")) Next Return cCol End Private Function Eof_Read() As Boolean Return Eof($hFile) End Private Function Fields_Read() As String[] Return $aField.Copy() End Private Function Line_Read() As Integer Return $iLine End Private Sub Fields_Write(Value As String[]) If Not $bWrite Then Error.Raise("Read-only property") If Not Value Or If Value.Count < 1 Then Error.Raise("Bad number of columns") $aField = Value.Copy() End Public Sub Close() Close #$hFile End '' @{since 3.15} '' '' Quote a string value for a CSV file. '' '' - ~Value~ if the string value to quote. '' - ~Separator~ is the CSV file field separator. By default a comma. '' - ~Escape~ is the CSV file escape character. By default a double quote. '' '' [[ info '' `"\r"` characters are automatically removed when the string value has to be escaped, because it makes Microsoft Excel™ fail. '' ]] Static Public Sub Quote(Value As String, Optional Separator As String = ",", Optional Escape As String = "\"") As String If InStr(Value, Separator) Or If InStr(Value, "\n") Or If InStr(Value, " ") Or If InStr(Value, Escape) Then Return Escape & Replace(Replace(Value, "\r", ""), Escape, Escape & Escape) & Escape Else Return Value Endif End Private Sub Print(sVal As String, Optional bNoSep As Boolean) If Not bNoSep Then Print #$hFile, ","; If InStr(sVal, $sSeparator) Or If InStr(sVal, "\n") Or If InStr(sVal, " ") Or If InStr(sVal, $sEscape) Then If $sCharset Then Print #$hFile, Conv($sEscape & Replace(Replace(sVal, "\r", ""), $sEscape, $sEscape & $sEscape) & $sEscape, "UTF-8", $sCharset); Else Print #$hFile, $sEscape; Replace(Replace(sVal, "\r", ""), $sEscape, $sEscape & $sEscape); $sEscape; Endif Else If $sCharset Then Print #$hFile, Conv(sVal, "UTF-8", $sCharset); Else Print #$hFile, sVal; Endif Endif End Public Sub Write({Line} As Variant) Dim I As Integer Dim cLine As Collection Dim aLine As String[] If $iLine = 0 Then If Not $aField Or If $aField.Count < 1 Then Error.Raise("The Field property must be set first") Print($aField[0], True) For I = 1 To $aField.Max Print($aField[I]) Next Print #$hFile Inc $iLine Endif Try cLine = {Line} If cLine Then Print(cLine[$aField[0]], True) For I = 1 To $aField.Max Print(cLine[$aField[I]]) Next Else Try aLine = {Line} If aLine Then Print(aLine[0], True) For I = 1 To $aField.Max Print(aLine[I]) Next Else Error.Raise("Type mismatch. Collection or Array expected") Endif Endif Print #$hFile Inc $iLine End gambas-3.16.3/comp/src/gb.util/.src/Date.module000066400000000000000000000120221411575327000210620ustar00rootroot00000000000000' Gambas module file Export Private $aDay As String[] Private $aMonth As String[] Private $dEpoch As Date Public Sub ToUnixTime({Date} As Date) As Long If Not $dEpoch Then $dEpoch = DateAdd(Date(1970, 1, 1), gb.Second, -System.TimeZone) Return DateDiff($dEpoch, {Date}, gb.Second) End Public Sub FromUnixTime(UnixTime As Long) As Date If Not $dEpoch Then $dEpoch = DateAdd(Date(1970, 1, 1), gb.Second, -System.TimeZone) Return $dEpoch + UnixTime / 86400 End ' Gregorian algorithm by Aloysius Lilius And Christophorus Clavius. ' Valid For any year since 1583. Public Sub EasterDay(Year As Integer) As Date Dim A, B, C, D, E, F, G As Integer If Year < 1583 Then Error.Raise("Year must be greater or equal than 1583") A = Year Mod 19 + 1 B = Year Div 100 + 1 C = (3 * B) Div 4 - 12 D = (8 * B + 5) Div 25 - 5 E = (Year * 5) Div 4 - 10 - C F = ((11 * A + 20 + D - C) Mod 30 + 30) Mod 30 If F = 24 Or (F = 25 And A > 11) Then F = F + 1 G = 44 - F If G < 21 Then G = G + 30 Return DateAdd(Date(Year, 3, 1), gb.Day, G + 7 - (E + G) Mod 7 - 1) End Private Sub InitDaysMonths() If Not $aDay Then $aDay = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] $aMonth = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] Endif End Public Sub ToUTC({Date} As Date) As Date Return {Date} + System.TimeZone / 86400 End Public Sub FromUTC({Date} As Date) As Date Return {Date} - System.TimeZone / 86400 End Private Sub GetRFC822Zone(sZone As String) As Float Dim fZone As Float Select Case sZone Case "UT", "GMT", "Z" fZone = 0 Case "EDT" fZone = -4 Case "EST", "CDT" fZone = -5 Case "CST", "MDT" fZone = -6 Case "MST", "PDT" fZone = -7 Case "PST" fZone = -8 Case Like "[A-I]" fZone = -(Asc(sZone) - 64) Case Like "[J-M]" fZone = -(Asc(sZone) - 65) Case Like "[N-Y]" fZone = Asc(sZone) - 77 Case Like "[+-][0-1][0-9][0-5][0-9]" fZone = CInt(Left(sZone, 3)) + CInt(Mid$(sZone, 4)) / 60 Case Else Error.Raise(Subst$("Unknown timezone '&1'", sZone)) End Select Return fZone / 24 End Public Sub ToRFC822({Date} As Date, Optional TimeZone As String = "GMT") As String InitDaysMonths {Date} = ToUTC({Date}) + GetRFC822Zone(TimeZone) Return $aDay[WeekDay({Date})] & ", " & Format(Day({Date}), "00") & " " & $aMonth[Month({Date}) - 1] & " " & Year({Date}) & " " & Format(Hour({Date}), "00") & ":" & Format(Minute({Date}), "00") & ":" & Format(Second({Date}), "00") & " " & TimeZone End Public Sub FromRFC822(Value As String, Optional ByRef TimeZone As String) As Date Dim aDate As String[] Dim dDate As Date Dim iPos As Integer Dim iWeekDay As Integer Dim iYear As Integer InitDaysMonths Value = Trim(Value) iPos = InStr(Value, ", ") If iPos Then iWeekDay = $aDay.Find(Trim(Left(Value, iPos - 1))) If iWeekDay < 0 Then Error.Raise("Unknown week day") Value = Trim(Mid$(Value, iPos + 2)) Else iWeekDay = -1 Endif aDate = Scan(Value, "* * * *:* *") If aDate.Count <> 6 Then Return iPos = InStr(aDate[4], ":") If iPos Then aDate.Add(Mid$(aDate[4], iPos + 1), 5) aDate[4] = Left(aDate[4], iPos - 1) Else aDate.Add("0", 5) Endif iYear = CInt(aDate[2]) If iYear >= 0 And If iYear <= 99 Then iYear += 1900 dDate = Date(iYear, $aMonth.Find(aDate[1]) + 1, CInt(aDate[0]), CInt(aDate[3]), CInt(aDate[4]), CInt(aDate[5])) If iWeekDay >= 0 And If WeekDay(dDate) <> iWeekDay Then Error.Raise("Incorrect week day") dDate = FromUTC(dDate) - GetRFC822Zone(aDate[6]) TimeZone = aDate[6] Return dDate Catch If Error.Class.Name = "Date" Then Error.Propagate Error.Raise("Not a RFC822 date format") End Public Sub IsWeekEnd({Date} As Date) As Boolean Dim iDay As Integer = WeekDay({Date}) If iDay = gb.Sunday Or If iDay = gb.Saturday Then Return True End '' @{since 3.15} '' '' Convert a date to the ISO-8601 format. '' '' - ~Date~ is the date to convert. '' - ~Timezone~ is the timezone of the date in RFC822 format. By default, the local timezone is used. Public Sub ToISO8601({Date} As Date, Optional Timezone As String) As String Dim iYear As Integer Dim sResult As String Dim sMicroseconds As String Dim fTimeZone As Float If Not IsMissing(TimeZone) Then fTimeZone = GetRFC822Zone(TimeZone) Else fTimeZone = -System.TimeZone / 86400 Endif {Date} = ToUTC({Date}) + fTimeZone If fTimeZone > 0 Then TimeZone = "+" & Format(CDate(fTimeZone), "hhnn") Else If fTimeZone < 0 Then TimeZone = "-" & Format(CDate(-fTimeZone), "hhnn") Else TimeZone = "Z" Endif iYear = Year({Date}) If iYear Then If iYear < 0 Then sResult = "B" sResult &= Format(iYear, "0000") & "-" & Format(Month({Date}), "00") & "-" & Format(Day({Date}), "00") Endif sResult &= "T" & Format({Date}, "hhnnss") sMicroseconds = Format({Date}, "uuu") If sMicroseconds <> "000" Then sResult &= "," & sMicroseconds Return sResult & TimeZone End gambas-3.16.3/comp/src/gb.util/.src/File.class000066400000000000000000000014751411575327000207160ustar00rootroot00000000000000' Gambas class file Export Static Public Sub FormatSize(Size As Long, Optional {Binary} As Boolean) As String If {Binary} Then If Size < 1024 Then Return Subst(("&1 B"), CStr(Size)) Else If Size < 1048576 Then Return Subst(("&1 KiB"), Format(Size / 1024, "0.##")) Else If Size < 1073741824 Then Return Subst(("&1 MiB"), Format(Size / 1048576, "0.##")) Else Return Subst(("&1 GiB"), Format(Size / 1073741824, "0.##")) Endif Else If Size < 1000 Then Return Subst(("&1 B"), CStr(Size)) Else If Size < 1000000 Then Return Subst(("&1 KB"), Format(Size / 1000, "0.##")) Else If Size < 1000000000 Then Return Subst(("&1 MB"), Format(Size / 1000000, "0.##")) Else Return Subst(("&1 GB"), Format(Size / 1000000000, "0.##")) Endif Endif End gambas-3.16.3/comp/src/gb.util/.src/MMain.module000066400000000000000000000050401411575327000212100ustar00rootroot00000000000000' Gambas module file ' Public Sub Main() ' ' Dim I As Integer ' Dim fTimer As Float ' Dim sData As String ' ' sData = File.Load("~/.local/share/gambas3/wiki/data/en/doc/object-model/~page") ' ' fTimer = Timer ' For I = 1 To 1000 ' String.RemoveDiacritics(sData) ' Next ' Print Timer - fTimer ' ' End Public Sub Main() 'Print String.PadLeft("Gambas", 16, "×->") 'Print String.PadRight("Gambas", 16, "×->") 'Print Now;; Date.ToISO8601(Now);; Date.ToISO8601(Now, "-0200") 'Print DateAdd(Date.EasterDay(2020), gb.Day, 40) Print String.ToPhonetic("Le comte (de Monte-Cristo) ; le conte (du Petit Chaperon Rouge) ; le compte (en banque)", "fr_FR") Print String.ToPhonetic("Dans cet antre, lassés de gêner au palais", "fr_FR") Print String.ToPhonetic("Dansait, entrelacés, deux généraux pas laids", "fr_FR") Print String.ToPhonetic("Elle sort là-bas des menthes, la belle Eve à l'âme hantée", "fr_FR") Print String.ToPhonetic("Et le sort l'abat, démente, l'abbé laid va lamenter", "fr_FR") End Public Sub RFC822Test() Dim sTimeZone As String ' Must be correct in the local timezone Print CStr(Now) Print Format(Now) Print CStr(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0000")) Print Format$(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0000")) Print Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0100") Print Date.FromRFC822("Tue, 1 Jan 2019 00:00:00 +0800") Print Date.ToRFC822(Now) Print Date.ToRFC822(Now, "+0100") Print "---" ' Timezone to-from conversion should be the identity mapping Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0000"), "+0000") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0000"), "+0100") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0000"), "+0800") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0100"), "+0000") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0100"), "+0100") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0100"), "+0800") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0800"), "+0000") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0800"), "+0100") Print Date.ToRFC822(Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0800"), "+0800") Print "---" ' Ability to extract timezone Date.FromRFC822("Sun, 21 Apr 2019 05:00:00 +0100", ByRef sTimeZone) Print sTimeZone ' 21 Apr 2019 is not a Wednesday Try Date.FromRFC822("Wed, 21 Apr 2019 05:00:00 +0100") If Error Then Print Error.Text End gambas-3.16.3/comp/src/gb.util/.src/MPhonetic_English.module000066400000000000000000001312651411575327000235570ustar00rootroot00000000000000' Gambas module file Public Sub Before(sStr As String) As String Return sStr End Public Sub Run((sStr) As String) As String ' //////////////////////////////////////////////////////////////////////////////// ' // Double Metaphone (c) 1998, 1999 by Lawrence Philips ' // ' // Slightly modified by Kevin Atkinson to fix several bugs and ' // to allow it to give back more than 4 characters. ' // ' // ' //////////////////////////////////////////////////////////////////////////////// ' #include "stdafx.h" ' #include "dmetaph.h" ' ' #define AND && ' #define OR || ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' MString::MString() ' { ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' MString::MString(const char* in) : CString(in) ' { ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' MString::MString(const CString& in) : CString(in) ' { ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' bool MString::SlavoGermanic() ' { ' if((Find('W') > -1) OR (Find('K') > -1) OR (Find("CZ") > -1) OR (Find("WITZ") > -1)) ' return TRUE; ' ' return FALSE; ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' inline void MString::MetaphAdd(const char* main) ' { ' if(*main) ' { ' primary += main; ' secondary += main; ' } ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' inline void MString::MetaphAdd(const char* main, const char* alt) ' { ' if(*main) ' primary += main; ' if(*alt) ' { ' alternate = TRUE; ' if(alt[0] != ' ') ' secondary += alt; ' }else ' if(*main AND (main[0] != ' ')) ' secondary += main; ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' bool MString::IsVowel(int at) ' { ' ' if((at < 0) OR (at >= length)) ' return false; ' ' char it = GetAt(at); ' ' if((it == 'A') OR (it == 'E') OR (it == 'I') OR (it == 'O') OR (it == 'U') OR (it == 'Y') ) ' return true; ' ' return false; ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // ' //////////////////////////////////////////////////////////////////////////////// ' bool MString::StringAt(int start, int length, ... ) ' { ' ' if (start < 0) return FALSE; ' ' char buffer[64]; ' char* test; ' CString target; ' ' test = buffer; ' target = Mid(start, length); ' ' va_list sstrings; ' va_start(sstrings, length); ' ' do ' { ' test = va_arg(sstrings, char*); ' if(*test AND (target == test)) ' return true; ' ' }while(strcmp(test, "")); ' ' va_end(sstrings); ' ' return false; ' } ' ' //////////////////////////////////////////////////////////////////////////////// ' // main deal ' //////////////////////////////////////////////////////////////////////////////// ' void MString::DoubleMetaphone(CString &metaph, CString &metaph2) ' { ' ' int current = 0; ' ' length = GetLength(); ' if(length < 1) ' return; ' last = length - 1;//zero based index ' ' alternate = FALSE; ' ' MakeUpper(); ' ' //pad the original string so that we can index beyond the edge of the world ' Insert(GetLength(), " "); ' ' //skip these when at start of word ' if(StringAt(0, 2, "GN", "KN", "PN", "WR", "PS", "")) ' current += 1; ' ' //Initial 'X' is pronounced 'Z' e.g. 'Xavier' ' if(GetAt(0) == 'X') ' { ' MetaphAdd("S"); //'Z' maps to 'S' ' current += 1; ' } ' ' ///////////main loop////////////////////////// ' while(TRUE OR (primary.GetLength() < 4) OR (secondary.GetLength() < 4)) ' { ' if(current >= length) ' break; ' ' switch(GetAt(current)) ' { ' case 'A': ' case 'E': ' case 'I': ' case 'O': ' case 'U': ' case 'Y': ' if(current == 0) ' //all init vowels now map to 'A' ' MetaphAdd("A"); ' current +=1; ' break; ' ' case 'B': ' ' //"-mb", e.g", "dumb", already skipped over... ' MetaphAdd("P"); ' ' if(GetAt(current + 1) == 'B') ' current +=2; ' else ' current +=1; ' break; ' ' case 'Ç': ' MetaphAdd("S"); ' current += 1; ' break; ' ' case 'C': ' //various germanic ' if((current > 1) ' AND !IsVowel(current - 2) ' AND StringAt((current - 1), 3, "ACH", "") ' AND ((GetAt(current + 2) != 'I') AND ((GetAt(current + 2) != 'E') ' OR StringAt((current - 2), 6, "BACHER", "MACHER", "")) )) ' { ' MetaphAdd("K"); ' current +=2; ' break; ' } ' ' //special case 'caesar' ' if((current == 0) AND StringAt(current, 6, "CAESAR", "")) ' { ' MetaphAdd("S"); ' current +=2; ' break; ' } ' ' //italian 'chianti' ' if(StringAt(current, 4, "CHIA", "")) ' { ' MetaphAdd("K"); ' current +=2; ' break; ' } ' ' if(StringAt(current, 2, "CH", "")) ' { ' //find 'michael' ' if((current > 0) AND StringAt(current, 4, "CHAE", "")) ' { ' MetaphAdd("K", "X"); ' current +=2; ' break; ' } ' ' //greek roots e.g. 'chemistry', 'chorus' ' if((current == 0) ' AND (StringAt((current + 1), 5, "HARAC", "HARIS", "") ' OR StringAt((current + 1), 3, "HOR", "HYM", "HIA", "HEM", "")) ' AND !StringAt(0, 5, "CHORE", "")) ' { ' MetaphAdd("K"); ' current +=2; ' break; ' } ' ' //germanic, greek, or otherwise 'ch' for 'kh' sound ' if((StringAt(0, 4, "VAN ", "VON ", "") OR StringAt(0, 3, "SCH", "")) ' // 'architect but not 'arch', 'orchestra', 'orchid' ' OR StringAt((current - 2), 6, "ORCHES", "ARCHIT", "ORCHID", "") ' OR StringAt((current + 2), 1, "T", "S", "") ' OR ((StringAt((current - 1), 1, "A", "O", "U", "E", "") OR (current == 0)) ' //e.g., 'wachtler', 'wechsler', but not 'tichner' ' AND StringAt((current + 2), 1, "L", "R", "N", "M", "B", "H", "F", "V", "W", " ", ""))) ' { ' MetaphAdd("K"); ' }else{ ' if(current > 0) ' { ' if(StringAt(0, 2, "MC", "")) ' //e.g., "McHugh" ' MetaphAdd("K"); ' else ' MetaphAdd("X", "K"); ' }else ' MetaphAdd("X"); ' } ' current +=2; ' break; ' } ' //e.g, 'czerny' ' if(StringAt(current, 2, "CZ", "") AND !StringAt((current - 2), 4, "WICZ", "")) ' { ' MetaphAdd("S", "X"); ' current += 2; ' break; ' } ' ' //e.g., 'focaccia' ' if(StringAt((current + 1), 3, "CIA", "")) ' { ' MetaphAdd("X"); ' current += 3; ' break; ' } ' ' //double 'C', but not if e.g. 'McClellan' ' if(StringAt(current, 2, "CC", "") AND !((current == 1) AND (GetAt(0) == 'M'))) ' //'bellocchio' but not 'bacchus' ' if(StringAt((current + 2), 1, "I", "E", "H", "") AND !StringAt((current + 2), 2, "HU", "")) ' { ' //'accident', 'accede' 'succeed' ' if(((current == 1) AND (GetAt(current - 1) == 'A')) ' OR StringAt((current - 1), 5, "UCCEE", "UCCES", "")) ' MetaphAdd("KS"); ' //'bacci', 'bertucci', other italian ' else ' MetaphAdd("X"); ' current += 3; ' break; ' }else{//Pierce's rule ' MetaphAdd("K"); ' current += 2; ' break; ' } ' ' if(StringAt(current, 2, "CK", "CG", "CQ", "")) ' { ' MetaphAdd("K"); ' current += 2; ' break; ' } ' ' if(StringAt(current, 2, "CI", "CE", "CY", "")) ' { ' //italian vs. english ' if(StringAt(current, 3, "CIO", "CIE", "CIA", "")) ' MetaphAdd("S", "X"); ' else ' MetaphAdd("S"); ' current += 2; ' break; ' } ' ' //else ' MetaphAdd("K"); ' ' //name sent in 'mac caffrey', 'mac gregor ' if(StringAt((current + 1), 2, " C", " Q", " G", "")) ' current += 3; ' else ' if(StringAt((current + 1), 1, "C", "K", "Q", "") ' AND !StringAt((current + 1), 2, "CE", "CI", "")) ' current += 2; ' else ' current += 1; ' break; ' ' case 'D': ' if(StringAt(current, 2, "DG", "")) ' if(StringAt((current + 2), 1, "I", "E", "Y", "")) ' { ' //e.g. 'edge' ' MetaphAdd("J"); ' current += 3; ' break; ' }else{ ' //e.g. 'edgar' ' MetaphAdd("TK"); ' current += 2; ' break; ' } ' ' if(StringAt(current, 2, "DT", "DD", "")) ' { ' MetaphAdd("T"); ' current += 2; ' break; ' } ' ' //else ' MetaphAdd("T"); ' current += 1; ' break; ' ' case 'F': ' if(GetAt(current + 1) == 'F') ' current += 2; ' else ' current += 1; ' MetaphAdd("F"); ' break; ' ' case 'G': ' if(GetAt(current + 1) == 'H') ' { ' if((current > 0) AND !IsVowel(current - 1)) ' { ' MetaphAdd("K"); ' current += 2; ' break; ' } ' ' if(current < 3) ' { ' //'ghislane', ghiradelli ' if(current == 0) ' { ' if(GetAt(current + 2) == 'I') ' MetaphAdd("J"); ' else ' MetaphAdd("K"); ' current += 2; ' break; ' } ' } ' //Parker's rule (with some further refinements) - e.g., 'hugh' ' if(((current > 1) AND StringAt((current - 2), 1, "B", "H", "D", "") ) ' //e.g., 'bough' ' OR ((current > 2) AND StringAt((current - 3), 1, "B", "H", "D", "") ) ' //e.g., 'broughton' ' OR ((current > 3) AND StringAt((current - 4), 1, "B", "H", "") ) ) ' { ' current += 2; ' break; ' }else{ ' //e.g., 'laugh', 'McLaughlin', 'cough', 'gough', 'rough', 'tough' ' if((current > 2) ' AND (GetAt(current - 1) == 'U') ' AND StringAt((current - 3), 1, "C", "G", "L", "R", "T", "") ) ' { ' MetaphAdd("F"); ' }else ' if((current > 0) AND GetAt(current - 1) != 'I') ' MetaphAdd("K"); ' ' current += 2; ' break; ' } ' } ' ' if(GetAt(current + 1) == 'N') ' { ' if((current == 1) AND IsVowel(0) AND !SlavoGermanic()) ' { ' MetaphAdd("KN", "N"); ' }else ' //not e.g. 'cagney' ' if(!StringAt((current + 2), 2, "EY", "") ' AND (GetAt(current + 1) != 'Y') AND !SlavoGermanic()) ' { ' MetaphAdd("N", "KN"); ' }else ' MetaphAdd("KN"); ' current += 2; ' break; ' } ' ' //'tagliaro' ' if(StringAt((current + 1), 2, "LI", "") AND !SlavoGermanic()) ' { ' MetaphAdd("KL", "L"); ' current += 2; ' break; ' } ' ' //-ges-,-gep-,-gel-, -gie- at beginning ' if((current == 0) ' AND ((GetAt(current + 1) == 'Y') ' OR StringAt((current + 1), 2, "ES", "EP", "EB", "EL", "EY", "IB", "IL", "IN", "IE", "EI", "ER", "")) ) ' { ' MetaphAdd("K", "J"); ' current += 2; ' break; ' } ' ' // -ger-, -gy- ' if((StringAt((current + 1), 2, "ER", "") OR (GetAt(current + 1) == 'Y')) ' AND !StringAt(0, 6, "DANGER", "RANGER", "MANGER", "") ' AND !StringAt((current - 1), 1, "E", "I", "") ' AND !StringAt((current - 1), 3, "RGY", "OGY", "") ) ' { ' MetaphAdd("K", "J"); ' current += 2; ' break; ' } ' ' // italian e.g, 'biaggi' ' if(StringAt((current + 1), 1, "E", "I", "Y", "") OR StringAt((current - 1), 4, "AGGI", "OGGI", "")) ' { ' //obvious germanic ' if((StringAt(0, 4, "VAN ", "VON ", "") OR StringAt(0, 3, "SCH", "")) ' OR StringAt((current + 1), 2, "ET", "")) ' MetaphAdd("K"); ' else ' //always soft if french ending ' if(StringAt((current + 1), 4, "IER ", "")) ' MetaphAdd("J"); ' else ' MetaphAdd("J", "K"); ' current += 2; ' break; ' } ' ' if(GetAt(current + 1) == 'G') ' current += 2; ' else ' current += 1; ' MetaphAdd("K"); ' break; ' ' case 'H': ' //only keep if first & before vowel or btw. 2 vowels ' if(((current == 0) OR IsVowel(current - 1)) ' AND IsVowel(current + 1)) ' { ' MetaphAdd("H"); ' current += 2; ' }else//also takes care of 'HH' ' current += 1; ' break; ' ' case 'J': ' //obvious spanish, 'jose', 'san jacinto' ' if(StringAt(current, 4, "JOSE", "") OR StringAt(0, 4, "SAN ", "") ) ' { ' if(((current == 0) AND (GetAt(current + 4) == ' ')) OR StringAt(0, 4, "SAN ", "") ) ' MetaphAdd("H"); ' else ' { ' MetaphAdd("J", "H"); ' } ' current +=1; ' break; ' } ' ' if((current == 0) AND !StringAt(current, 4, "JOSE", "")) ' MetaphAdd("J", "A");//Yankelovich/Jankelowicz ' else ' //spanish pron. of e.g. 'bajador' ' if(IsVowel(current - 1) ' AND !SlavoGermanic() ' AND ((GetAt(current + 1) == 'A') OR (GetAt(current + 1) == 'O'))) ' MetaphAdd("J", "H"); ' else ' if(current == last) ' MetaphAdd("J", " "); ' else ' if(!StringAt((current + 1), 1, "L", "T", "K", "S", "N", "M", "B", "Z", "") ' AND !StringAt((current - 1), 1, "S", "K", "L", "")) ' MetaphAdd("J"); ' ' if(GetAt(current + 1) == 'J')//it could happen! ' current += 2; ' else ' current += 1; ' break; ' ' case 'K': ' if(GetAt(current + 1) == 'K') ' current += 2; ' else ' current += 1; ' MetaphAdd("K"); ' break; ' ' case 'L': ' if(GetAt(current + 1) == 'L') ' { ' //spanish e.g. 'cabrillo', 'gallegos' ' if(((current == (length - 3)) ' AND StringAt((current - 1), 4, "ILLO", "ILLA", "ALLE", "")) ' OR ((StringAt((last - 1), 2, "AS", "OS", "") OR StringAt(last, 1, "A", "O", "")) ' AND StringAt((current - 1), 4, "ALLE", "")) ) ' { ' MetaphAdd("L", " "); ' current += 2; ' break; ' } ' current += 2; ' }else ' current += 1; ' MetaphAdd("L"); ' break; ' ' case 'M': ' if((StringAt((current - 1), 3, "UMB", "") ' AND (((current + 1) == last) OR StringAt((current + 2), 2, "ER", ""))) ' //'dumb','thumb' ' OR (GetAt(current + 1) == 'M') ) ' current += 2; ' else ' current += 1; ' MetaphAdd("M"); ' break; ' ' case 'N': ' if(GetAt(current + 1) == 'N') ' current += 2; ' else ' current += 1; ' MetaphAdd("N"); ' break; ' ' case 'Ñ': ' current += 1; ' MetaphAdd("N"); ' break; ' ' case 'P': ' if(GetAt(current + 1) == 'H') ' { ' MetaphAdd("F"); ' current += 2; ' break; ' } ' ' //also account for "campbell", "raspberry" ' if(StringAt((current + 1), 1, "P", "B", "")) ' current += 2; ' else ' current += 1; ' MetaphAdd("P"); ' break; ' ' case 'Q': ' if(GetAt(current + 1) == 'Q') ' current += 2; ' else ' current += 1; ' MetaphAdd("K"); ' break; ' ' case 'R': ' //french e.g. 'rogier', but exclude 'hochmeier' ' if((current == last) ' AND !SlavoGermanic() ' AND StringAt((current - 2), 2, "IE", "") ' AND !StringAt((current - 4), 2, "ME", "MA", "")) ' MetaphAdd("", "R"); ' else ' MetaphAdd("R"); ' ' if(GetAt(current + 1) == 'R') ' current += 2; ' else ' current += 1; ' break; ' ' case 'S': ' //special cases 'island', 'isle', 'carlisle', 'carlysle' ' if(StringAt((current - 1), 3, "ISL", "YSL", "")) ' { ' current += 1; ' break; ' } ' ' //special case 'sugar-' ' if((current == 0) AND StringAt(current, 5, "SUGAR", "")) ' { ' MetaphAdd("X", "S"); ' current += 1; ' break; ' } ' ' if(StringAt(current, 2, "SH", "")) ' { ' //germanic ' if(StringAt((current + 1), 4, "HEIM", "HOEK", "HOLM", "HOLZ", "")) ' MetaphAdd("S"); ' else ' MetaphAdd("X"); ' current += 2; ' break; ' } ' ' //italian & armenian ' if(StringAt(current, 3, "SIO", "SIA", "") OR StringAt(current, 4, "SIAN", "")) ' { ' if(!SlavoGermanic()) ' MetaphAdd("S", "X"); ' else ' MetaphAdd("S"); ' current += 3; ' break; ' } ' ' //german & anglicisations, e.g. 'smith' match 'schmidt', 'snider' match 'schneider' ' //also, -sz- in slavic language altho in hungarian it is pronounced 's' ' if(((current == 0) ' AND StringAt((current + 1), 1, "M", "N", "L", "W", "")) ' OR StringAt((current + 1), 1, "Z", "")) ' { ' MetaphAdd("S", "X"); ' if(StringAt((current + 1), 1, "Z", "")) ' current += 2; ' else ' current += 1; ' break; ' } ' ' if(StringAt(current, 2, "SC", "")) ' { ' //Schlesinger's rule ' if(GetAt(current + 2) == 'H') ' //dutch origin, e.g. 'school', 'schooner' ' if(StringAt((current + 3), 2, "OO", "ER", "EN", "UY", "ED", "EM", "")) ' { ' //'schermerhorn', 'schenker' ' if(StringAt((current + 3), 2, "ER", "EN", "")) ' { ' MetaphAdd("X", "SK"); ' }else ' MetaphAdd("SK"); ' current += 3; ' break; ' }else{ ' if((current == 0) AND !IsVowel(3) AND (GetAt(3) != 'W')) ' MetaphAdd("X", "S"); ' else ' MetaphAdd("X"); ' current += 3; ' break; ' } ' ' if(StringAt((current + 2), 1, "I", "E", "Y", "")) ' { ' MetaphAdd("S"); ' current += 3; ' break; ' } ' //else ' MetaphAdd("SK"); ' current += 3; ' break; ' } ' ' //french e.g. 'resnais', 'artois' ' if((current == last) AND StringAt((current - 2), 2, "AI", "OI", "")) ' MetaphAdd("", "S"); ' else ' MetaphAdd("S"); ' ' if(StringAt((current + 1), 1, "S", "Z", "")) ' current += 2; ' else ' current += 1; ' break; ' ' case 'T': ' if(StringAt(current, 4, "TION", "")) ' { ' MetaphAdd("X"); ' current += 3; ' break; ' } ' ' if(StringAt(current, 3, "TIA", "TCH", "")) ' { ' MetaphAdd("X"); ' current += 3; ' break; ' } ' ' if(StringAt(current, 2, "TH", "") ' OR StringAt(current, 3, "TTH", "")) ' { ' //special case 'thomas', 'thames' or germanic ' if(StringAt((current + 2), 2, "OM", "AM", "") ' OR StringAt(0, 4, "VAN ", "VON ", "") ' OR StringAt(0, 3, "SCH", "")) ' { ' MetaphAdd("T"); ' }else{ ' MetaphAdd("0", "T"); ' } ' current += 2; ' break; ' } ' ' if(StringAt((current + 1), 1, "T", "D", "")) ' current += 2; ' else ' current += 1; ' MetaphAdd("T"); ' break; ' ' case 'V': ' if(GetAt(current + 1) == 'V') ' current += 2; ' else ' current += 1; ' MetaphAdd("F"); ' break; ' ' case 'W': ' //can also be in middle of word ' if(StringAt(current, 2, "WR", "")) ' { ' MetaphAdd("R"); ' current += 2; ' break; ' } ' ' if((current == 0) ' AND (IsVowel(current + 1) OR StringAt(current, 2, "WH", ""))) ' { ' //Wasserman should match Vasserman ' if(IsVowel(current + 1)) ' MetaphAdd("A", "F"); ' else ' //need Uomo to match Womo ' MetaphAdd("A"); ' } ' ' //Arnow should match Arnoff ' if(((current == last) AND IsVowel(current - 1)) ' OR StringAt((current - 1), 5, "EWSKI", "EWSKY", "OWSKI", "OWSKY", "") ' OR StringAt(0, 3, "SCH", "")) ' { ' MetaphAdd("", "F"); ' current +=1; ' break; ' } ' ' //polish e.g. 'filipowicz' ' if(StringAt(current, 4, "WICZ", "WITZ", "")) ' { ' MetaphAdd("TS", "FX"); ' current +=4; ' break; ' } ' ' //else skip it ' current +=1; ' break; ' ' case 'X': ' //french e.g. breaux ' if(!((current == last) ' AND (StringAt((current - 3), 3, "IAU", "EAU", "") ' OR StringAt((current - 2), 2, "AU", "OU", ""))) ) ' MetaphAdd("KS"); ' ' if(StringAt((current + 1), 1, "C", "X", "")) ' current += 2; ' else ' current += 1; ' break; ' ' case 'Z': ' //chinese pinyin e.g. 'zhao' ' if(GetAt(current + 1) == 'H') ' { ' MetaphAdd("J"); ' current += 2; ' break; ' }else ' if(StringAt((current + 1), 2, "ZO", "ZI", "ZA", "") ' OR (SlavoGermanic() AND ((current > 0) AND GetAt(current - 1) != 'T'))) ' { ' MetaphAdd("S", "TS"); ' } ' else ' MetaphAdd("S"); ' ' if(GetAt(current + 1) == 'Z') ' current += 2; ' else ' current += 1; ' break; ' ' default: ' current += 1; ' } ' } ' ' metaph = primary; ' //only give back 4 char metaph ' //if(metaph.GetLength() > 4) ' // metaph.SetAt(4,'\0'); ' if(alternate) ' { ' metaph2 = secondary; ' //if(metaph2.GetLength() > 4) ' // metaph2.SetAt(4,'\0'); ' } ' ' } ' End gambas-3.16.3/comp/src/gb.util/.src/MPhonetic_French.module000066400000000000000000000164601411575327000233720ustar00rootroot00000000000000' Gambas module file Public Sub Before(sStr As String) As String ' R0 substitution des caractères accentués par les voyelles "simples" sStr = Replace(sStr, "ç", "ss") sStr = Replace(sStr, "Ç", "ss") Return sStr End Public Sub Run(sStr As String) As String Dim sSuff As String Dim sPref As String Dim I As Integer Dim sPat As String Dim sResult As String If IsDigit(sStr) Then Return "(" & sStr & ")" ' R1 remplacement du "y" par un "i" sStr = Replace(sStr, "y", "i") ' R2 remplacement du son "ph" par un simple "f" sStr = Replace(sStr, "ph", "f") ' R3 suppression des "h" muets, c'est à dire ceux qui ne sont ni précédés d'un "c" ni d'un "s" sStr = Replace(sStr, "ch", "cH") sStr = Replace(sStr, "sh", "sH") sStr = Replace(sStr, "h", "") sStr = Replace(sStr, "H", "h") ' R4 remplacement du "g" par "k" devant "an/am/ain/aim" gamin -> kamin sStr = Replace(sStr, "gan", "kan") sStr = Replace(sStr, "gam", "kam") sStr = Replace(sStr, "gain", "kain") sStr = Replace(sStr, "gaim", "kaim") ' R5 ' ' remplacement de aina,eina,aima,eima par yna ' remplacement de aine,eine,aime,eime par yne ' remplacement de aini,eini,aimi,eimi par yni ' remplacement de aino,eino,aimo,eimo par yno ' remplacement de ainu,einu,aimu,eimu par ynu For Each sSuff In ["na", "ne", "ni", "no", "nu"] For Each sPref In ["a", "e", "i", "o", "u"] sStr = Replace(sStr, sPref & "i" & sSuff, "y" & sSuff) Next Next ' ' R6 ' ' remplacement de eau par o ' remplacement de oua par 2 ' remplacement de ein par 4 ' remplacement de ain par 4 sStr = Replace(sStr, "eau", "o") sStr = Replace(sStr, "oua", "2") sStr = Replace(sStr, "ein", "4") sStr = Replace(sStr, "ain", "4") ' R7 ' ' remplacement de ai par y ' remplacement de ei par y ' remplacement de ee par y ' remplacement de er par yr ' remplacement de ess par yss ' remplacement de et par yt ' remplacement de ez par yz sStr = Replace(sStr, "ai", "y") sStr = Replace(sStr, "ei", "y") sStr = Replace(sStr, "ee", "y") sStr = Replace(sStr, "er", "yr") sStr = Replace(sStr, "ess", "yss") sStr = Replace(sStr, "et", "yt") sStr = Replace(sStr, "ez", "yz") ' R8 suppression des lettres doublées pelle -> pele GoSub REMOVE_DOUBLE ' R9 ' ' remplacement de "an" par "1" ' remplacement de "am" par "1" ' remplacement de "en" par "1" ' remplacement de "em" par "1" ' remplacement de "in" par "4" ' à condition que ces modèles ne soient ni suivis d'une voyelle ni d'un son "1" à "4" ' patient - > pati1t For Each sPat In ["an", "am", "en", "em", "in"] I = 0 Do I = InStr(sStr, sPat, I + 1) If I = 0 Then Break If InStr("aeiouy1234", Mid$(sStr, I + 2, 1)) Then I += 2 Else sStr = Left(sStr, I - 1) & If(sPat = "in", "4", "1") & Mid$(sStr, I + 2) Endif Loop Next ' R10 remplacement du "z" par "s" s'il est en tête de mot ou précédé et suivi d'une voyelle ou d'un son "1" à "4" ' zebu -> zebu ' azteque -> azteque ' bizarre -> bisarre I = 0 Do I = InStr(sStr, "z", I + 1) If I = 0 Then Break If I = 1 sStr = "s" & Mid$(sStr, 2) Else If InStr("aeiouy1234", Mid$(sStr, I - 1, 1)) And If InStr("aeiouy1234", Mid$(sStr, I + 1, 1)) Then sStr = Left(sStr, I - 1) & "s" & Mid(sStr, I + 1) I += 1 Endif Loop ' R11 ' ' remplacement de "oe" par "e" ' remplacement de "eu" par "e" ' remplacement de "au" par "o" ' remplacement de "oi" par "2" ' remplacement de "ou" par "3" ' ' heureux -> erex ' paul -> pol ' roue -> r3e sStr = Replace(sStr, "oe", "e") sStr = Replace(sStr, "eu", "e") sStr = Replace(sStr, "au", "o") sStr = Replace(sStr, "oi", "2") sStr = Replace(sStr, "ou", "3") ' R12 ' ' remplacement de "ch" par "5" ' remplacement de "sch" par "5" ' remplacement de "sh" par "5" ' remplacement de "ss" par "s" ' remplacement de "sc" par "s" si suivi d'un "i" ou d'un "e" ' ' chat -> 5at ' scaralatine -> scarlatine ' scie -> sie sStr = Replace(sStr, "ch", "5") sStr = Replace(sStr, "sch", "5") sStr = Replace(sStr, "sh", "5") sStr = Replace(sStr, "ss", "s") sStr = Replace(sStr, "sci", "si") sStr = Replace(sStr, "sce", "se") ' R13 remplacement du "c" par "s" s'il est suivi dun "e" ou d'un "i" ' car -> car ' innocence -> inosense sStr = Replace(sStr, "ce", "se") sStr = Replace(sStr, "ci", "si") ' R14 ' ' remplacement de "c" par "k" ' remplacement de "q" par "k" ' remplacement de "qu" par "k" ' remplacement de "gu" par "k" ' remplacement de "ga" par "ka" ' remplacement de "go" par "ko" ' ' car -> kar ' gateau -> kato sStr = Replace(sStr, "c", "k") sStr = Replace(sStr, "qu", "k") sStr = Replace(sStr, "q", "k") sStr = Replace(sStr, "ga", "ga") sStr = Replace(sStr, "ge", "je") sStr = Replace(sStr, "gi", "ji") sStr = Replace(sStr, "go", "go") sStr = Replace(sStr, "gu", "g") ' R15 ' ' remplacement de "a" par "o" ' remplacement de "d" et "p" par "t" ' remplacement de "j" par "g" ' remplacement de "b" et "v" par "f" ' remplacement de "m" par "n" ' ' depart -> tetord ' homme -> one 'sStr = Replace(sStr, "a", "o") 'sStr = Replace(sStr, "d", "t") 'sStr = Replace(sStr, "p", "t") 'sStr = Replace(sStr, "j", "g") 'sStr = Replace(sStr, "b", "f") 'sStr = Replace(sStr, "v", "f") 'sStr = Replace(sStr, "m", "n") 'sStr = Replace(sStr, "w", "v") ' R15.1 sStr = Replace(sStr, "w", "3") ' R15.2 sStr = Replace(sStr, "mpt", "nt") sStr = Replace(sStr, "mt", "nt") ' R16 (optionnelle) remplacement des "y" (les sons "é") par "e" nez -> nyz -> nez 'sStr = Replace(sStr, "y", "e") ' R17 ' ' suppression des finales "t","x","s","z" ' (optionnelle) suppression du "e" final après une consonne (fait en deux fois pour eliminer les finales "ez" par exemple) ' ' heureux -> ere ' tetard -> tetor If Len(sStr) >= 2 And If InStr("rdptxsz", Right(sStr)) Then sStr = Left(sStr, -1) ' If Len(sStr) >= 2 Then ' If Right(sStr) = "e" And InStr("aeiouy", Left(Right(sStr, 2))) = 0 Then ' sStr = Left(sStr, -1) ' Endif ' Endif ' ' If Len(sStr) >= 2 And If InStr("rtxsz", Right(sStr)) Then sStr = Left(sStr, -1) ' R18 suppression des lettres doubles (pour la 2ème fois) arrivee -> arive GoSub REMOVE_DOUBLE ' R19 retourne une chaine d'une taille maximale de 16 caractères et ne contenant que les caractères autorisés. ' Au vu des traductions décrites, les caractères obtenus font partie de l'alphabet réduit: ' 12345efghiklnorstuwxyz ' Les caractères qui n'appartiennent pas à cet ensemble sont supprimés sResult = "" For I = 1 To Len(sStr) sPat = Mid$(sStr, I, 1) If InStr("12345abdefghijklmnoprstuvxyz", sPat) Then sResult &= sPat 'If Len(sResult) = 16 Then Break Endif Next Return sResult REMOVE_DOUBLE: I = 1 While I < Len(sStr) If Mid$(sStr, I, 1) = Mid$(sStr, I + 1, 1) Then sStr = Left(sStr, I) & Mid$(sStr, I + 2) Else Inc I Endif Wend Return End gambas-3.16.3/comp/src/gb.util/.src/Process.class000066400000000000000000000005541411575327000214520ustar00rootroot00000000000000' Gambas class file Export Event Prompt(Prompt As String, Answer As String) Private $hExpect As ProcessExpect Public Sub Expect(Prompt As String, Optional Answer As String) If Not Prompt Then Return If Not $hExpect Then $hExpect = New ProcessExpect(Me) $hExpect.Expect(Prompt, Answer) End Public Sub Expect_Kill() $hExpect = Null End gambas-3.16.3/comp/src/gb.util/.src/ProcessExpect.class000066400000000000000000000021331411575327000226160ustar00rootroot00000000000000' Gambas class file Private $aExpect As String[] Private $sBuffer As String Private $hObs As Observer Private $hObsAfter As Observer Public Sub _new(hProcess As Process) $aExpect = New String[] $hObs = New Observer(hProcess) As "Expect" $hObsAfter = New Observer(hProcess, True) As "ExpectAfter" End Public Sub Expect(Prompt As String, Optional Answer As String) If Prompt Not Begins "*" Then Prompt = "*" & Prompt $aExpect.Add(Prompt) $aExpect.Add(Answer) End Public Sub Expect_Read() Dim sData As String Dim hProcess As Process = $hObs.Object sData = Peek #hProcess, Lof(hProcess) If Len(sData) >= 1024 Then $sBuffer = Right(sData, 1024) Else $sBuffer = Right($sBuffer & sData, 1024) Endif End Public Sub ExpectAfter_Read() Dim hProcess As Process = $hObsAfter.Object Dim I As Integer For I = 0 To $aExpect.Max Step 2 If RTrim($sBuffer) Like $aExpect[I] Then If $aExpect[I + 1] Then Print #hProcess, $aExpect[I + 1] Object.Raise(hProcess, "Prompt", [$aExpect[I], $aExpect[I + 1]]) $sBuffer = "" Endif Next End gambas-3.16.3/comp/src/gb.util/.src/Shell.module000066400000000000000000000023461411575327000212640ustar00rootroot00000000000000' Gambas module file Export Public Sub MkDir(Path As String) Dim sElt As String Dim sMake As String = "/" If Path Begins "~/" Then Path = User.Home &/ Mid$(Path, 3) For Each sElt In Split(Path, "/") sMake &/= sElt If IsDir(sMake) Then Continue Try Mkdir sMake Next If Not Exist(Path) Or If Not IsDir(Path) Then Error.Raise("Cannot create directory") End Public Sub RmDir(Path As String, Optional Force As Boolean) Dim sFile As String If Len(Path) > 1 And If Right(Path) = "/" Then Path = Left(Path, -1) If Not Force Then If Path = "~" Or If Path = User.Home Or If Path = "/" Then Error.Raise("Removing this directory recursively is a bad idea: " & Path) Endif For Each sFile In Dir(Path) If IsDir(Path &/ sFile) Then RmDir(Path &/ sFile) Else Kill Path &/ sFile Endif Next Rmdir Path End Public Sub Move(Source As String, Destination As String, Optional Force As Boolean) If IsDir(Destination) Then Destination &/= File.Name(Source) If Force Then Try Move Source Kill Destination Else Try Move Source To Destination Endif If Error Then If Force Then Try Kill Destination Copy Source To Destination Kill Source Endif End gambas-3.16.3/comp/src/gb.util/.src/String.class000066400000000000000000000177451411575327000213140ustar00rootroot00000000000000' Gambas class file Export Private Const REMOVE_ACC As String = "ÀÁÂÃÄÅĀĂĄǍǞǠȀȂȦȺǺẠẢẬẶḀẮẰẲẴẪẤẦẨ[A]ÈÉÊËĒĖĘĚȄȨɆĔȆḘḜẸẺỆḚẼỄḔḖẾỀỂ[E]ÌÍÎÏĨĪĬĮİƗǏȈȊḬỈỊḮ[I]ŎÒÓÔÖŌŐƠǑǬȌȎȮỌỎỘỚỜỞỢỠȪȰȬÕṌṎṐṒỐỒỔỖ[O]ǗǙǛȖŬŨŮǕÙÚÛÜŪŰŲƯǓȔɄṲṴṶỤỦỨỪỬỮỰƲṺṸ[U]ÝŶŸƳȲɎẎỲỴỶỸỾ[Y]" "ƁɃḂḄḆ[B]ÇĆĈĊČƇȻḈ[C]ĎÐĐƉḊḌḎḐḒ[D]ƑḞ[F]ĞĜĠĢƓǤǦǴɢʛḠ[G]ĤȞĦḢḤḦḪḨ[H]ĴɈɟʄʝ[J]ĶƘǨḰḲḴ[K]ĹĻĽĿʟŁȽḶḸḺḼ[L]ḾṀṂ[M]ƝÑŃŅŇŊǸṄṆṈṊ[N]ƤṔṖ[P]ŔŖŘȐȒɌṘṚṜṞ[R]ŚŜŞŠȘṠṢṨṤṦ[S]ŢŤŦƮȚȾṪṬṮṰ[T]ṼṾ[V]ŴẀẂẄẆẈ[W]ẊẌ[X]ŹŻŽƵȤẐẒẔ[Z]" "ÆǢǼ[AE]Œɶ[OE]ßẞ[ss]æǣǽ[ae]œ[oe]" "àáâãäåāăąǎǟǡǻȁȃȧắằẳẵḁẚạảấầẩậặẫ[a]èéêëēĕėęěȅȇȩɇḕḗḙḛḝẹẻẽếềểệễ[e]īĭìíïîĩįıǐȉȋɨỉḭḯị[i]òóôõöōŏőơǒǫǭȍȏȫȯȱȭṍṏṑṓọỏốồổỗộớờởỡợ[o]ùúûüũūŭůűųưǔǖǘǚǜȕȗṹṳṷṻụủứừửữựṵ[u]ýÿŷƴȳɏỵẏẙỳỷỹỿ[y]" "ɓƀḃḅḇ[b]çćĉċčƈȼɕḉ[c]ďɖɗđḋḍḏḑḓ[d]ƒḟ[f]ĝğġģǥǧǵɠɡḡ[g]ĥȟɦɧħḣḥḧḫẖḩ[h]ĵǰȷɉ[j]ķƙǩḱḳḵ[k]ĺľŀłļḽḷḹḻ[l]ɱḿṁṃ[m]ñńņňʼnŋǹṅṇṉṋ[n]ƥṕṗ[p]ʠɋ[q]ŕŗřȑȓṙṛṝṟ[r]śŝşšșʂȿṡṣṥṧṩ[s]ţťŧƫƭțṫṭṯṱẗ[t]ʋṽṿ[v]ŵẁẃẅẇẉẘ[w]ẋẍ[x]źżžƶȥɀʐʑẑẓẕ[z]" Static Public Sub RemoveDiacritics({String} As String) As String If Not {String} Then Return If IsAscii({String}) Then Return {String} Return DoRemoveAccents({String}) End Static Private Sub DoRemoveAccents(sStr As String) As String Dim sCar As String Dim iPos As Integer Dim iPosL As Integer Dim iPosR As Integer Dim sNewStr As String Dim I As Integer Dim L As Integer L = 1 For I = 1 To Len(sStr) If IsAscii(Mid$(sStr, I, 1)) Then Continue If I > L Then sNewStr &= Mid$(sStr, L, I - L) sCar = String.Left(Mid$(sStr, I)) L = I + Len(sCar) I = L - 1 iPos = InStr(REMOVE_ACC, sCar) If iPos Then iPosL = InStr(REMOVE_ACC, "[", iPos + 1) iPosR = InStr(REMOVE_ACC, "]", iPos + 1) If iPosL <> 0 And If iPosR <> 0 And If iPosL < iPosR Then sCar = Mid$(REMOVE_ACC, iPosL + 1, iPosR - iPosL - 1) Endif Endif sNewStr &= sCar Next If I > L Then sNewStr &= Mid$(sStr, L) Return sNewStr End Static Public Sub Distance(String1 As String, String2 As String) As Integer Dim L1 As Integer = String.Len(String1) Dim L2 As Integer = String.Len(String2) Dim D As New Integer[L1 + 1, L2 + 1] Dim I, J, C As Integer Dim C1, C1M, C2, C2M As String For I = 0 To L1 D[I, 0] = I Next For J = 0 To L2 D[0, J] = J Next For I = 1 To L1 C1M = C1 C1 = String.Mid$(String1, I, 1) C2 = "" For J = 1 To L2 C2M = C2 C2 = String.Mid$(String2, J, 1) If C1 = C2 Then C = 0 Else C = 1 Endif D[I, J] = Min(Min(D[I - 1, J] + 1, D[I, J - 1] + 1), D[I - 1, J - 1] + C) If I > 1 And If J > 1 Then If C1 = C2M And If C1M = C2 Then D[I, J] = Min(D[I, J], D[I - 2, J - 2] + C) Endif Endif Next Next Return D[L1, L2] End Static Public Sub FromHTML(Html As String) As String Dim P As Integer Dim iLen As Integer Dim C As String Dim sResult As String Dim C2 As String Dim sEntity As String Dim sMarkup As String Dim aMarkup As New String[] iLen = String.Len(Html) READ_TEXT: GoSub READ_CHAR If C = "<" Then Goto READ_MARKUP If C = "&" Then Goto READ_ENTITY If aMarkup.Count = 0 Then sResult &= C Goto READ_TEXT READ_MARKUP: READ_MARKUP_NAME: GoSub READ_CHAR If C = " " Then Goto READ_MARKUP_REST If C = ">" Then Goto READ_MARKUP_END sMarkup &= C Goto READ_MARKUP_NAME READ_MARKUP_REST: GoSub READ_CHAR If C = ">" Then Goto READ_MARKUP_END If C = Chr$(34) Or If C = "'" Then C2 = C Goto READ_STRING Endif Goto READ_MARKUP_REST READ_MARKUP_END: sMarkup = LCase(sMarkup) If sMarkup Begins "/" Then sMarkup = Mid$(sMarkup, 2) If sMarkup = "li" Then sResult &= "\n" Endif If aMarkup.Count Then If aMarkup[aMarkup.Max] = sMarkup Then aMarkup.Pop() Endif Else If sMarkup = "script" Or If sMarkup = "style" Then aMarkup.Push(sMarkup) Else If sMarkup = "br" Then sResult &= "\n" Else If sMarkup = "ul" Or If sMarkup = "ol" Or If sMarkup = "p" Then If Right(sResult) <> "\n" Then sResult &= "\n" Else If sMarkup = "li" Then sResult &= "- " Endif Endif sMarkup = "" Goto READ_TEXT READ_STRING: GoSub READ_CHAR If C = C2 Then Goto READ_MARKUP Goto READ_STRING READ_ENTITY: GoSub READ_CHAR If IsDigit(C) Or If IsLetter(C) Or If C = "#" Then sEntity &= C Goto READ_ENTITY Endif Select Case sEntity Case "lt" C = "<" Case "gt" C = ">" Case "amp" C = "&" Case "nbsp" C = String.Chr$(160) Case "quot" C = Chr$(34) Case "apos" C = "'" Case Else If sEntity Begins "#x" Then Try C = String.Chr(Val("&H" & Mid$(sEntity, 3))) If Error Then C = "?" Else If sEntity Begins "#" Then Try C = String.Chr(CInt(Mid$(sEntity, 2))) If Error Then C = "?" Else C = "&" & sEntity Dec P Endif End Select If aMarkup.Count = 0 Then sResult &= C sEntity = "" Goto READ_TEXT READ_CHAR: Inc P If P > iLen Then Return sResult Endif C = String.Mid$(Html, P, 1) Return End Static Public Sub ToPhonetic({String} As String, Optional Language As String = System.Language) As String Dim I As Integer Dim sStr As String Dim sCar As String Dim J As Integer Dim sWord As String Dim sResult As String sStr = Trim({String}) If Not sStr Then Return Try Language = LCase(Split(Language, "-._")[0]) Select Case Language Case "c", "en" Error.Raise("Unsupported language") Case "fr" sStr = MPhonetic_French.Before(sStr) Default Error.Raise("Unsupported language") End Select sStr = LCase(RemoveDiacritics(sStr)) & " " For I = 1 To Len(sStr) sCar = Mid$(sStr, I, 1) If IsLetter(sCar) Or IsDigit(sCar) Then If J = 0 Then J = I Continue Endif If J = 0 Then Continue sWord = Mid$(sStr, J, I - J) J = 0 If sResult And If Right(sResult) <> " " Then sResult &= " " Select Case Language Case "c", "en" Error.Raise("Unsupported language") Case "fr" sResult &= MPhonetic_French.Run(sWord) Default Error.Raise("Unsupported language") End Select Next Return sResult End Static Private Sub PadString(sStr As String, iLength As Integer, sPad As String, bRight As Boolean) As String Dim iLen As Integer If iLength < 0 Then Error.Raise("Bad argument") iLength -= String.Len(sStr) If Len(sPad) = 1 Then If bRight Then Return sStr & String$(iLength, sPad) Else Return String$(iLength, sPad) & sStr Endif Else iLen = String.Len(sPad) If bRight Then Return sStr & String.Right(sPad, iLength Mod iLen) & String$(iLength \ iLen, sPad) Else Return String$(iLength \ iLen, sPad) & String.Left(sPad, iLength Mod iLen) & sStr Endif Endif End Static Public Sub PadLeft({String} As String, Length As Integer, Optional Pad As String = " ") As String Return PadString({String}, Length, Pad, False) End Static Public Sub PadRight({String} As String, Length As Integer, Optional Pad As String = " ") As String Return PadString({String}, Length, Pad, True) End gambas-3.16.3/comp/src/gb.web.feed/000077500000000000000000000000001411575327000166365ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.feed/.component000066400000000000000000000002211411575327000206340ustar00rootroot00000000000000[Component] Key=gb.web.feed Version=3.12.90 State=1 Authors=(C) 2017-2019 Tobias Boege Needs=XML Requires=gb.xml,gb.util gambas-3.16.3/comp/src/gb.web.feed/.directory000066400000000000000000000000411411575327000206360ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.web.feed/.hidden/000077500000000000000000000000001411575327000201475ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.feed/.hidden/TODO000066400000000000000000000013051411575327000206360ustar00rootroot00000000000000 o Should I Html$() every string? Or better use CDATA? How to detect when it is necessary? ~> Adrien said gb.xml will take care of escaping in the future. o Rss.ParseDate() ignores the timezone. What should I do and what can I do? ~> Gambas Dates are always UTC. Probably make an RssDate class which saves a Date and the timezone. Give it conversion methods. Benoit said these should be provided by gb.(web.)util. o Should Rss.FormatDate() put the timezone string instead of +nnnn. How? o Support Atom. Should there be a basis class which represents the common features of Rss and Atom so that a user can offer both formats cheaply (without keeping a complete Rss and Atom object around)? gambas-3.16.3/comp/src/gb.web.feed/.icon.png000066400000000000000000000274761411575327000203720ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxw$W}?Bo^Q,!1 `16l`x9kx}`gk^[kؖLE4 h›{_b>gz^Wխ[AAAAAAAAAAAAAAAAAAAAAAAABu{?GQMyѶtE#Vhg4  ^m>ϗRPc FGXz=ϹܲC8wJAIgɶs_F릿f+tocZk*H\O7~.^Cu AhеhUC&T^pMTCmuN(PUjk1?P&O m?v֩ki52hyq 4'M4=k>'^ k4G* 7yFzg7=^噉7A&@ȠɖAoUP-2ŒROu}b3>V~#Y[zsz[C8rv0^?;;S56ZLkd2H]mQ+@J6O&ҧI9},"b~΋g'(OwCbd ́x6a<7GX,7]'4*y=枇(}abmW 0rA4-ݽZF JUK nUΠ=DVV4yA_{ 3== : %|FtF?Hi|~{ZƋOu}fߐt77RG4s{qWME5:50*N 4 e$&a BR)ش JIiKB<kD㓵D އk*>N^4gxLkS&#">W@*IDYI{DuM^R* eg3_Kag0AAނUa0"!β_EhxQ߿KR"4 Pڈ"y Faӭš?Ώ_S``4_׈/j#To0 v74" F!1~_]MFJ~8ă Tsxh<4^hnK^P+Ja ApMÏMhmF U`tdCb  C' @A>lkIya$;շVrޥ׬ ]W)o_0DöҁO By*!z5 ?]& : J^/Xd0P &@ZZ Zi+MjjoG]y5\s'tZGVڥk'rJ -@5u wqlpQtu2-]:Ei <Ju]F5 1N~F `Ղir&ZC74|BkFXKB!~?4& 65 Ck~ <AJx~WD"To1au3!)2T$)|ZP Oхs= iӕ{(\_ŢLfMy!yDkj4b^AXۇ5y,aW_Wc| OǚZN1TMwOF|'P"k5r& J ]rNԅTԵbH1K06UX5ΏB˲R}a I $g 7hPԞ#{# Irf^X#Z>.4۟/5Y@H6A{Ԝ}Z?;hLc*5DboK/ִ@@}/ OoAtcq87^Ϗh=ޓ2h)lB>qjx;= ւ HIhq=AX  2ej׈u4'qԦW:h4 >0H uFE 6'FS| k⺣myh<@um1O >O/C֕bY"(:k=\K_X; oh؏-ᷠصo'<8G#5Y@e*qE:q47|EIsK/c֭b7>?}l@c$IϠXZ/u4t s^^Ol@ 6*1A61 9,K h3!~AhdP mhtu׍N<_X_q!w5s P[6hHOX-ë]\’ `8HOX%3{#  AÈ^iD{xڬKmzuvu◉(P´V o7oPL i֙>Vatwh<ed=:fXҖ< Fm1]"`hO3}™q* W2,|WĴ, LIra!ZkFqgq5ZAP&4IBL*k*_5H|,y 5'~ i><(B۶6;)xO=xg?TPgfsP50n֝WLo ܓS?p'iF@ @=e5^0\ߌ]/~)~}܍7|ůAwzÕN z ӌsם&` z4?a(~ >7\y\Wj> ~;?K@K=(~ 67bZk U&ϒ]@?|/,@ @ ]-Z߄};(?|/6?D @݊ ey+7WU/~:@ :%&?D vWPynx)ƿ(;/̀tѭ׭0^o$ 6"] u.տ žC`7HE @ ݊}˿y/P#;ֱEHt#~o%*߇ʕaFP}+8KE 'so>q7ק[^)-@t)~a\H^89st>̑}`4% w?sC}cX;0\ļנ8w}43fu܇/u/baMX׽ z?_ώQ0_f~?`IC_[}SFnXy-– cG{~羇.GBQ^_ƺQ-Q~C*~LG @ 1 cp;܃ѕ7n IO~߿ ss}L+?JoAϞ1$F_hy/[~ 4Z3qc0?|>w8>|mJw- hA ƾc{Ա}Ai]3Oe ?j*ϭ lXmz՝@hN~)A_ ҭ?={a2/5|>kտ3G~#w57.Et4? ޙz\P{0G/} ƮkQ}#+X J0^xSajS{/beԿ/%L[/v\f`1Sjd?[0/~%j~5/C(Ws{3ɏ~ߢBy^ LO( pB3oyle<}ՑѠ*_Lw,[ }JE@+VDMw)~߼w+|1ch'Y^rބſqbX7>tQo>2}f̋_yu$0]˿7!2%^bRª?'MxO/طc% )Yf_Re*~# "(Bϟ>̉.MA٥ůeUI3dҭoXbҐ `*kKމZwEƂSZCKY>W UN.+R[#@kT,>΅yarIDAT]ů7x<<(;Oe&%h'š^4οܲ_G8Ϳ,k^BbRƚc>T{&4}ӻ:Y{⫸fbnFbRЊu 0>6=rWcmўGyJQՙ_XGgq>r2(=_={$,]j@u/V]VE?n- noӆѠ]}mcF-űobH u(~?V>ڹ#7=&|Ni*|lz(ѵP9pVcZg O|N1w\ů=?Egr7v/_j)ϭX +c˥]f18^}w?ceK (vf~-*Mۻ"aL/He9ůva^VBa(=Ig] tk xuj_e oX{}%~7S:/F Hc9oX7$^Z!K^O`__D4=uڷ}:$?hS糹w%_y$؊ ůJد7сeX?HGl6sKn\-+ݝɽ Н ^@ @YcK+1_hԑрP\r.}Y9W֖C׏DKD @ 0o0j4륿F/~ Zkcy] W-~4hϣvL]./V 1id3ο=]LEޑC!Կ F4>w2w,V{ AWaa]ӭnd HhpN<3Cn[hfdr^]Vv{Xj*-ـit)~JKtѕuB7y NAWk{G!_j)ϋ M?%ozŏw?0G6iGx]ڼ;3 ""م}ģK< xnkO{'`n\cnv[`17+w8|}GW/d07o[qw}O4]}c'g:{%?{ٮbmdGCs]/ +v[xǙvhJZ{{`m[lV,6;ZƚbNWG*I/w-~4xg_(-~4xl~BhͯQԵ'F!D u;cco;^S~]?Ds;8ulOhs](: ˌ{ATbzA:%U{_}s?U{aʟy:]WRt5&2};GUEߵa|`>_iee#~ 8}P?^xfGk \_Y@YhWV)~V* ϝd=al*5ȃkw>7c 0.O*ޅ;\C_ds."~ 0P)E.XZ3yb,xP#_$};׏_'Ln`k4cjd9FV-˫Cz Pc~sG GT(oo!EًTeGOmR?]~Aqg Q_#Gq:C;dphv'ǩVR3%?׫U&33Mis_{ 1J)vyÇc.xED~m9t- o@:WcjŁAvlCYN3`_ _+2ԓ'N2u<} ];Ebd߈?KL)OGuo-/؃aź<5A3FM i4+l? ܁ǩWxƤGt.*"a_g5aqzsG{(ؼ\Q4# "C;x[sF]'L+&^٨*GyF*@#(3jss~Xs\ Ac/E M6_7WRgFJ nH A/=57>[sGvQ`P<QxnGߌY`?'aYE"eaf*F{sq|jЌc&;(dx^%PS)Q2?>GyE=ǡ<3Cyffs0L@M\. D)Eq@q֚|\P8uОNBkR(Camb,ET gKm!b2D)E#_ʝ; d$ 0b 0B#@z1,P`a A@Aad6 0F 07uLQ 0F                         ,숎EO~IENDB`gambas-3.16.3/comp/src/gb.web.feed/.lang/000077500000000000000000000000001411575327000176355ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.feed/.lang/it.po000066400000000000000000000064371411575327000206230ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.feed 3.12.90\n" "POT-Creation-Date: 2019-04-22 15:34 UTC\n" "PO-Revision-Date: 2019-04-22 15:33 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:2 msgid "Web feed parser and generator" msgstr "Parser e generatore di feed Web" #: Rss.class:213 msgid "SkipHours may only contain up to 24 elements" msgstr "SkipHours può contenere solo fino a 24 elementi" #: Rss.class:217 msgid "SkipHour element must be in the range [0, 23]" msgstr "L'elemento SkipHour deve essere compreso nell'intervallo [0, 23]" #: Rss.class:228 msgid "SkipDays may only contain up to 7 elements" msgstr "SkipDays può contenere solo fino a 7 elementi" #: Rss.class:255 msgid "Invalid SkipDays day '&1'" msgstr "'&1' giorno SkipDays non valido" #: Rss.class:275 msgid "Invalid day '&1'" msgstr "'&1' giorno non valido" #: Rss.class:290 msgid " expected" msgstr "previsto " #: Rss.class:293 msgid "End-of-file expected" msgstr "End-of-file previsto" #: Rss.class:318 msgid " expected" msgstr "previsto " #: Rss.class:322 msgid " expected" msgstr "previsto " #: Rss.class:383 msgid "Unexpected element '&1' in " msgstr "'&1' elemento imprevisto in " #: Rss.class:404 msgid " expected" msgstr "previsto " #: Rss.class:406 msgid "SkipHours element '&1' out of range [0, 23]" msgstr "L'elemento SkipHours '&1' è fuori dall'intervallo [0, 23]" #: Rss.class:420 msgid " expected" msgstr "previsto " #: RssCloud.class:24 msgid "Domain, Port, Path, RegisterProcedure and Protocol must be set in RssCloud" msgstr "Domain, Port, Path, Procedura di registro e Protocollo devono essere impostati in RssCloud" #: RssCloud.class:40 msgid "Invalid RssCloud protocol constant '&1'" msgstr "'&1' costante del protocollo RssCloud non valida" #: RssCloud.class:52 msgid "Invalid RssCloud protocol '&1'" msgstr "'&1' protocollo RssCloud non valido" #: RssEnclosure.class:15 msgid "Url, Length and Type must be set in RssEnclosure" msgstr "Url, Lunghezza e Tipo devono essere impostati in RssEnclosure" #: RssImage.class:37 msgid "Url, Title and Link must be set in RssImage" msgstr "Url, Titolo e Link devono essere impostati in RssImage" #: RssImage.class:44 msgid "Maximum width of RssImage is 144" msgstr "La larghezza massima di RssImage è 144" #: RssImage.class:48 msgid "Maximum height of RssImage is 400" msgstr "L'altezza massima di RssImage è 400" #: RssImage.class:75 msgid "Unexpected element '&1' in " msgstr "'&1' elemento imprevisto in " #: RssItem.class:52 msgid "Title or Description must be set in RssItem" msgstr "Titolo o Descrizione devono essere impostati in RssItem" #: RssItem.class:107 msgid "Unexpected element '&1' in " msgstr "'&1' elemento imprevisto in " #: RssSource.class:16 msgid "Url must be set in RssSource" msgstr "L'url deve essere impostato in RssSource" #: RssTextInput.class:21 msgid "Title, Description, Name and Link must be set in RssTextInput" msgstr "Titolo, Descrizione, Nome e Link devono essere impostati in RssTextInput" #: RssTextInput.class:47 msgid "Unexpected element '&1' in " msgstr "'&1' elemento imprevisto in " gambas-3.16.3/comp/src/gb.web.feed/.lang/nl.po000066400000000000000000000074261411575327000206170ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2017 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.feed 3.10.90\n" "POT-Creation-Date: 2019-04-06 18:47 UTC\n" "PO-Revision-Date: 2017-08-26 19:52 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:2 msgid "Web feed parser and generator" msgstr "Web feed parser en generator" #: Rss.class:213 msgid "SkipHours may only contain up to 24 elements" msgstr "SkipHours kan maximaal 24 elementen bevatten" #: Rss.class:217 msgid "SkipHour element must be in the range [0, 23]" msgstr "SkipHour element dient in het bereik [0, 23] te vallen" #: Rss.class:228 msgid "SkipDays may only contain up to 7 elements" msgstr "SkipDays mag niet meer dat 7 elementen bevatten" #: Rss.class:255 msgid "Invalid SkipDays day '&1'" msgstr "Ongeldige SkipDays dag '&1'" #: Rss.class:275 msgid "Invalid day '&1'" msgstr "Ongeldige dag '&1'" #: Rss.class:290 msgid " expected" msgstr " verwacht" #: Rss.class:293 msgid "End-of-file expected" msgstr "End-of-file verwacht" #: Rss.class:318 msgid " expected" msgstr " verwacht" #: Rss.class:322 msgid " expected" msgstr " verwacht" #: Rss.class:383 msgid "Unexpected element '&1' in " msgstr "Onverwacht element '&1' in " #: Rss.class:404 msgid " expected" msgstr " verwacht" #: Rss.class:406 msgid "SkipHours element '&1' out of range [0, 23]" msgstr "SkipHours element '&1' buiten bereik [0, 23]" #: Rss.class:420 msgid " expected" msgstr " verwacht" #: RssCloud.class:24 msgid "Domain, Port, Path, RegisterProcedure and Protocol must be set in RssCloud" msgstr "Domain, Port, Path, RegisterProcedure en Protocol moeten ingesteld zijn in RssCloud" #: RssCloud.class:40 msgid "Invalid RssCloud protocol constant '&1'" msgstr "Ongeldige RssCloud protocol constante '&1'" #: RssCloud.class:52 msgid "Invalid RssCloud protocol '&1'" msgstr "Ongeldig RssCloud protocol '&1'" #: RssEnclosure.class:15 msgid "Url, Length and Type must be set in RssEnclosure" msgstr "Url, Length en Type dienen ingestelt in RssEnclosure" #: RssImage.class:37 msgid "Url, Title and Link must be set in RssImage" msgstr "Url, Title en Link dienen ingestelt in RssImage" #: RssImage.class:44 msgid "Maximum width of RssImage is 144" msgstr "Maximale breedte van RssImage is 144" #: RssImage.class:48 msgid "Maximum height of RssImage is 400" msgstr "Maximale hoogte van RssImage is 400" #: RssImage.class:75 msgid "Unexpected element '&1' in " msgstr "Onverwacht element '&1' in " #: RssItem.class:52 msgid "Title or Description must be set in RssItem" msgstr "Title of Description dient ingestelt in RssItem" #: RssItem.class:107 msgid "Unexpected element '&1' in " msgstr "Onverwacht element '&1' in " #: RssSource.class:16 msgid "Url must be set in RssSource" msgstr "Url dient ingestelt in RssSource" #: RssTextInput.class:21 msgid "Title, Description, Name and Link must be set in RssTextInput" msgstr "Title, Description, Name en Link dienen ingestelt in RssTextInput" #: RssTextInput.class:47 msgid "Unexpected element '&1' in " msgstr "Onverwacht element '&1' in " #~ msgid "Weekday does not match date: '&1' vs. '&2'" #~ msgstr "Weekdag komt niet overeen met datum: '&1' vs. '&2'" #~ msgid "Invalid second '&1'" #~ msgstr "Ongeldige seconde '&1'" #~ msgid "Invalid minute '&1'" #~ msgstr "Ongeldige minuut '&1'" #~ msgid "Invalid month '&1'" #~ msgstr "Ongeldige maand '&1'" #~ msgid "Invalid year '&1'" #~ msgstr "Ongeldig jaar '&1'" #~ msgid "Invalid weekday '&1'" #~ msgstr "Ongeldige weekdag '&1'" #~ msgid "Date does not conform to RFC 822" #~ msgstr "Datum conformeert niet met RFC 822" gambas-3.16.3/comp/src/gb.web.feed/.lang/ru.po000066400000000000000000000103311411575327000206210ustar00rootroot00000000000000# 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" #: comp/src/gb.web.feed/.project:16 msgid "Web feed parser and generator" msgstr "Веб анализатор каналов и генератор" #: comp/src/gb.web.feed/.src/Main.module:16 msgid "diff -u <(sort &1 | sed 's/ *$//' | sed 's/^ *//') <(sort &2 | sed 's/^ *//')" msgstr "diff -u <(sort &1 | sed 's/ *$//' | sed 's/^ *//') <(sort &2 | sed 's/^ *//')" #: comp/src/gb.web.feed/.src/Rss.class:213 comp/src/gb.web.feed/.src/Rss.class:410 msgid "SkipHours may only contain up to 24 elements" msgstr "Пропуск часов может содержать до 24 элементов" #: comp/src/gb.web.feed/.src/Rss.class:217 msgid "SkipHour element must be in the range [0, 23]" msgstr "Элемент пропуска часов должен быть в диапазоне [0, 23]" #: comp/src/gb.web.feed/.src/Rss.class:228 comp/src/gb.web.feed/.src/Rss.class:425 msgid "SkipDays may only contain up to 7 elements" msgstr "Пропуск дней может содержать до 7 элементов" #: comp/src/gb.web.feed/.src/Rss.class:255 msgid "Invalid SkipDays day '&1'" msgstr "Неверный день для пропуска дня '&1'" #: comp/src/gb.web.feed/.src/Rss.class:275 msgid "Invalid day '&1'" msgstr "Неверный день '&1'" #: comp/src/gb.web.feed/.src/Rss.class:290 msgid " expected" msgstr " ожидается" #: comp/src/gb.web.feed/.src/Rss.class:293 msgid "End-of-file expected" msgstr "Ожидается конец файла" #: comp/src/gb.web.feed/.src/Rss.class:318 msgid " expected" msgstr " ожидается" #: comp/src/gb.web.feed/.src/Rss.class:322 msgid " expected" msgstr " ожидается" #: comp/src/gb.web.feed/.src/Rss.class:383 msgid "Unexpected element '&1' in " msgstr "Неожиданный элемент '&1' в " #: comp/src/gb.web.feed/.src/Rss.class:404 msgid " expected" msgstr " ожидается" #: comp/src/gb.web.feed/.src/Rss.class:406 msgid "SkipHours element '&1' out of range [0, 23]" msgstr "Элемент пропуска часов '&1' вне диапазона [0, 23]" #: comp/src/gb.web.feed/.src/Rss.class:420 msgid " expected" msgstr " ожидается" #: comp/src/gb.web.feed/.src/RssCloud.class:24 msgid "Domain, Port, Path, RegisterProcedure and Protocol must be set in RssCloud" msgstr "Домен, порт, путь, процедура регистрации и протокол должны быть установлены в облаке Rss" #: comp/src/gb.web.feed/.src/RssCloud.class:40 msgid "Invalid RssCloud protocol constant '&1'" msgstr "Неверная константа протокола облака Rss '&1'" #: comp/src/gb.web.feed/.src/RssCloud.class:52 msgid "Invalid RssCloud protocol '&1'" msgstr "Неверный протокол облака Rss '&1'" #: comp/src/gb.web.feed/.src/RssItem.class:52 msgid "Title or Description must be set in RssItem" msgstr "Заголовок или описание должны быть установлены в пункте Rss" #: comp/src/gb.web.feed/.src/RssItem.class:107 msgid "Unexpected element '&1' in " msgstr "Неожиданный элемент '&1' в " gambas-3.16.3/comp/src/gb.web.feed/.lang/zh.po000066400000000000000000000061121411575327000206160ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.feed 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:41 UTC\n" "PO-Revision-Date: 2020-11-18 18:41 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:2 msgid "Web feed parser and generator" msgstr "Web提要解析器和生成器" #: Rss.class:213 msgid "SkipHours may only contain up to 24 elements" msgstr "SkipHours最多只能含有24个元素" #: Rss.class:217 msgid "SkipHour element must be in the range [0, 23]" msgstr "SkipHour元素必须在范围[0,23]" #: Rss.class:228 msgid "SkipDays may only contain up to 7 elements" msgstr "Skipday最多只能包含7个元素" #: Rss.class:255 msgid "Invalid SkipDays day '&1'" msgstr "无效的SkipDays日'&1'" #: Rss.class:275 msgid "Invalid day '&1'" msgstr "日期'&1'无效 " #: Rss.class:290 msgid " expected" msgstr "需要" #: Rss.class:293 msgid "End-of-file expected" msgstr "应为文件结尾" #: Rss.class:318 msgid " expected" msgstr "需要" #: Rss.class:322 msgid " expected" msgstr "需要" #: Rss.class:383 msgid "Unexpected element '&1' in " msgstr "中的意外元素'&1'" #: Rss.class:404 msgid " expected" msgstr "需要" #: Rss.class:406 msgid "SkipHours element '&1' out of range [0, 23]" msgstr "SkipHours元素'&1'超出范围[0,23]" #: Rss.class:420 msgid " expected" msgstr "需要" #: RssCloud.class:24 msgid "Domain, Port, Path, RegisterProcedure and Protocol must be set in RssCloud" msgstr "必须在RssCloud中设置Domain、Port、Path、RegisterProcedure和Protocol" #: RssCloud.class:40 msgid "Invalid RssCloud protocol constant '&1'" msgstr "RssCloud协议常量'&1'无效" #: RssCloud.class:52 msgid "Invalid RssCloud protocol '&1'" msgstr "RssCloud协议'&1'无效" #: RssEnclosure.class:15 msgid "Url, Length and Type must be set in RssEnclosure" msgstr "必须在RssEnclosure中设置Url、Length和Type" #: RssImage.class:37 msgid "Url, Title and Link must be set in RssImage" msgstr "必须在RssImage中设置Url、Title和Link" #: RssImage.class:44 msgid "Maximum width of RssImage is 144" msgstr "RssImage的最大宽度为144" #: RssImage.class:48 msgid "Maximum height of RssImage is 400" msgstr "RssImage的最大高度为100" #: RssImage.class:75 msgid "Unexpected element '&1' in " msgstr "中的意外元素'&1'" #: RssItem.class:52 msgid "Title or Description must be set in RssItem" msgstr "必须在RssItem中设置Title或Description" #: RssItem.class:107 msgid "Unexpected element '&1' in " msgstr "中的意外元素'&1'" #: RssSource.class:16 msgid "Url must be set in RssSource" msgstr "必须在RssSource中设置Url" #: RssTextInput.class:21 msgid "Title, Description, Name and Link must be set in RssTextInput" msgstr "必须在RssTextInput中设置Title、Description、Name和Link" #: RssTextInput.class:47 msgid "Unexpected element '&1' in " msgstr "中的意外元素'&1'" gambas-3.16.3/comp/src/gb.web.feed/.project000066400000000000000000000004451411575327000203100ustar00rootroot00000000000000# Gambas Project File 3.0 Startup=Main Icon=Feed-icon.svg Version=3.12.90 Component=gb.util Component=gb.xml Description="Web feed parser and generator" Authors="(C) 2017-2019 Tobias Boege " TabSize=2 Translate=1 Language=en_US Type=Component SourcePath=/tmp Packager=1 gambas-3.16.3/comp/src/gb.web.feed/.src/000077500000000000000000000000001411575327000175035ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.feed/.src/Main.module000066400000000000000000000014151411575327000215770ustar00rootroot00000000000000' Gambas module file Public Sub Main() Dim sRealInFile As String = "test.xml" Dim sInFile As String = Temp$() Dim sOutFile As String = Temp$() Dim sDiff As String Dim hRss As New Rss Dim hItem As New RssItem Copy sRealInFile To sInFile hRss.FromString(File.Load(sInFile)) File.Save(sOutFile, hRss.ToString()) System.Shell = "/bin/bash" Shell Subst$("diff -u <(sort &1 | sed 's/ *$//' | sed 's/^ *//') <(sort &2 | sed 's/^ *//')", sOutFile, sInFile) To sDiff Print sDiff Print "---" hRss = New Rss hRss.Title = "Date test" hRss.Pub = New RssDate(DateAdd(Now, gb.Hour, -11)) hRss.LastBuild = New RssDate(DateAdd(Now, gb.Hour, -11), "+0800") hRss.Add(hItem) hItem.Title = "Blank RssDate" hItem.Pub = New RssDate Print hRss.ToString() End gambas-3.16.3/comp/src/gb.web.feed/.src/Rss.class000066400000000000000000000334361411575327000213120ustar00rootroot00000000000000' Gambas class file ''' This class represents an RSS document. Its properties are those of its single element. ''' It acts like an array of [RssItem](../rssitem) objects. Add your items in order and then call the ''' ToString() method to get the XML document string. ''' ''' The Title, Link and Description are necessary. All other properties are optional. ''' ''' Conforming to the [RSS 2.0 specification](https://cyber.harvard.edu/rss/rss.html). You have to ''' know the document structure and terminology of RSS to make use of this component. Export Static Private DAY_NAME As String[] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] ' conforms to how WeekDay() works in Gambas Static Private MONTH_NAME As String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] ' Mandatory elements '' The name or title of the feed. Public Title As String '' The URL to the website corresponding to this feed. Public {Link} As String '' A description of the feed's contents. Public Description As String ' Optional elements '' The language the feed content is written in. Use one of the [defined](https://cyber.harvard.edu/rss/languages.html) values. Public Language As String '' Copyright notice for the feed content. Public Copyright As String '' EMail address of the managing editor. Public ManagingEditor As String '' EMail address of the web master. Public WebMaster As String '' Publication date/timezone of the feed. E.g. a newspaper with daily publication would change this once a day. If unset, defaults to the time the XML document is written in the local timezone. Public Pub As RssDate '' The date/timezone of the last change to the feed contents. If unset, defaults to the time the XML document is written in the local timezone. Public LastBuild As RssDate '' An array of categories for this feed. '' '' ## See also '' [../../rsscategory] Public Categories As RssCategory[] '' The program which generated the feed. Public Generator As String '' A link to the RSS specification, to inform future generations of what an RSS file is, if they find one. Public Docs As String '' Description of an associated cloud service. '' '' ## See also '' [../../rsscloud] Public Cloud As RssCloud '' "Time to live", indicates how long the feed contents may be cached. Public Ttl As Integer '' An image associated with the feed. '' '' ## See also '' [../../rssimage] Public Image As RssImage '' [PICS](http://www.w3.org/PICS/) rating of the feed. Public Rating As String '' Describes a text input box to be displayed with the feed. '' '' ## See also '' [../../rsstextinput] Public TextInput As RssTextInput '' A hint for news aggregators. It gives a number of hours in the range of 0 to 23 when no new content is to be expected in the feed. '' A client may ignore this setting, but can also use it to save traffic. You may only specify up to 24 skip hours. Public SkipHours As Integer[] '' A hint for news aggregators. It gives a number of weekdays (gb.Monday, gb.Tuesday, etc.) when no new content is to be expected in '' the feed. A client may ignore this setting, but can also use it to save traffic. You may only specify up to 7 skip days. Public SkipDays As Integer[] '' Returns the number of RssItems in this document. Property Read Count As Integer Private $aItems As New RssItem[] '' Add an RssItem to the document. If ~Index~ is given, the item is inserted at the given '' position in the array of items. By default it is inserted at the end. Public Sub Add(Item As RssItem, Optional Index As Integer) If IsMissing(Index) Then $aItems.Add(Item) Else $aItems.Add(Item, Index) Endif End Private Function Count_Read() As Integer Return $aItems.Count End '' Return the RssItem at position ~Index~. Public Sub _get(Index As Integer) As RssItem Return $aItems[Index] End '' Replace the RssItem at position ~Index~. Public Sub _put(Item As RssItem, Index As Integer) $aItems[Index] = Item End '' Iterate through all RssItems, in the order they are given in the document. Public Sub _next() As RssItem Dim iIndex As Integer Dim hItem As RssItem iIndex = 0 If Not IsNull(Enum.Index) Then iIndex = Enum.Index If iIndex > $aItems.Max Then Enum.Stop() Return Endif hItem = $aItems[iIndex] Enum.Index = iIndex + 1 Return hItem End '' Remove ~Length~-many RssItems from the item array, beginning at position ~Index~. By default ~Length~ is 1. Public Sub Remove(Index As Integer, Optional Length As Integer = 1) $aItems.Remove(Index, Length) End '' Reverse the order of RssItems. Public Sub Reverse() $aItems.Reverse() End '' Sort the items by their date. You can pick ~Mode~ as gb.Ascent or gb.Descent. '' The default is descending sort so that the newest items are first in the document. Public Sub Sort(Optional Mode As Integer = gb.Descent) $aItems.Sort(Mode) End '' Clear the Rss object. Sets all properties to Null and clears the item array. Public Sub Clear() Title = Null {Link} = Null Description = Null Language = Null Copyright = Null ManagingEditor = Null WebMaster = Null Pub = Null LastBuild = Null Categories = Null Generator = Null Docs = Null Cloud = Null Ttl = 0 Image = Null Rating = Null TextInput = Null SkipHours = Null SkipDays = Null $aItems.Clear() End '' Write this Rss object as an XML document and return its contents. Public Function ToString() As String Dim hWriter As New XmlWriter hWriter.Open(Null, True) _Write(hWriter) Return hWriter.EndDocument() End Public Sub _Write(hWriter As XmlWriter) Dim hItem As RssItem Dim hCat As RssCategory hWriter.StartElement("rss", ["version", "2.0"]) hWriter.StartElement("channel") With hWriter .Element("title", Title) .Element("link", {Link}) .Element("description", Description) If Language Then .Element("language", Language) If Copyright Then .Element("copyright", Copyright) If ManagingEditor Then .Element("managingEditor", ManagingEditor) If WebMaster Then .Element("webMaster", WebMaster) If Pub Then Pub._Write(hWriter, "pubDate") If LastBuild Then LastBuild._Write(hWriter, "lastBuildDate") If Categories Then For Each hCat In Categories hCat._Write(hWriter) Next Endif If Generator Then .Element("generator", Generator) If Docs Then .Element("docs", Docs) If Cloud Then Cloud._Write(hWriter) If Ttl Then .Element("ttl", Str$(Ttl)) If Image Then Image._Write(hWriter) ' For the Rating, see Holzner: "Secrets of RSS", chapter 4 If Rating Then .Element("rating", Rating) If TextInput Then TextInput._Write(hWriter) If SkipHours Then _WriteSkipHours(hWriter) If SkipDays Then _WriteSkipDays(hWriter) End With For Each hItem In $aItems hItem._Write(hWriter) Next hWriter.EndElement() hWriter.EndElement() End '' https://cyber.harvard.edu/rss/skipHoursDays.html Private Sub _WriteSkipHours(hWriter As XmlWriter) Dim iHour As Integer If Not SkipHours.Count Then Return If SkipHours.Count > 24 Then Error.Raise(("SkipHours may only contain up to 24 elements")) With hWriter .StartElement("skipHours") For Each iHour In SkipHours If iHour < 0 Or If iHour > 23 Then Error.Raise(("SkipHour element must be in the range [0, 23]")) .Element("hour", Str$(iHour)) Next .EndElement() End With End Private Sub _WriteSkipDays(hWriter As XmlWriter) Dim iDay As Integer If Not SkipDays.Count Then Return If SkipDays.Count > 7 Then Error.Raise(("SkipDays may only contain up to 7 elements")) With hWriter .StartElement("skipDays") For Each iDay In SkipDays .Element("day", GetSkipDay(iDay)) Next .EndElement() End With End Private Function GetSkipDay(iDay As Integer) As String Select Case iDay Case gb.Monday Return "Monday" Case gb.Tuesday Return "Tuesday" Case gb.Wednesday Return "Wednesday" Case gb.Thursday Return "Thursday" Case gb.Friday Return "Friday" Case gb.Saturday Return "Saturday" Case gb.Sunday Return "Sunday" End Select Error.Raise(Subst$(("Invalid SkipDays day '&1'"), iDay)) End Private Function GetDay(sDay As String) As Integer Select Case sDay Case "Monday" Return gb.Monday Case "Tuesday" Return gb.Tuesday Case "Wednesday" Return gb.Wednesday Case "Thursday" Return gb.Thursday Case "Friday" Return gb.Friday Case "Saturday" Return gb.Saturday Case "Sunday" Return gb.Sunday End Select Error.Raise(Subst$(("Invalid day '&1'"), sDay)) End '' Read the RSS document in XML format, given in ~Data~, and fill the properties of this Rss object '' accordingly. Public Sub FromString(Data As String) Dim hReader As New XmlReader Clear() hReader.FromString(Data) _Read(hReader) End Public Sub _Read(hReader As XmlReader) hReader.Read() If Not hReader.Node.Name = "rss" Then Error.Raise((" expected")) _ReadRss(hReader) hReader.Read() If Not hReader.Eof Then Error.Raise(("End-of-file expected")) End ' This method is to be used as a While condition. In this case, the loop will continue until ' an end tag is found on the same depth as ~iDepth~. Static Public Function _NotClosed(hReader As XmlReader, iDepth As Integer) As Boolean ' The depth of the end tag is apparently one less than that of the start tag. ' TODO: It would be nice if hReader.Node.Name contained the name of an element also when we encounter its closing tag. Return (hReader.Node.Type <> XmlReaderNodeType.EndElement) Or (hReader.Depth <> iDepth - 1) End Static Public Sub _GetText(hReader As XmlReader) As String Dim sRes As String Dim iDepth As Integer = hReader.Depth hReader.Read() While _NotClosed(hReader, iDepth) If hReader.Node.Type = XmlReaderNodeType.Text Or If hReader.Node.Type = XmlReaderNodeType.CDATA Then sRes &= hReader.Node.Value hReader.Read() Wend Return sRes End Private Sub _ReadRss(hReader As XmlReader) hReader.Read() If Not hReader.Node.Name = "channel" Then Error.Raise((" expected")) _ReadChannel(hReader) hReader.Read() ' FIXME: Here, hReader.Depth is 0, instead of -1, as it should be if it was consistent with the observation in _NotClosed() If hReader.Node.Type <> XmlReaderNodeType.EndElement Or If hReader.Depth <> 0 Then Error.Raise((" expected")) End Private Sub _ReadChannel(hReader As XmlReader) Dim hCat As RssCategory, aCategories As New RssCategory[] Dim hItem As RssItem, aItems As New RssItem[] Dim iDepth As Integer = hReader.Depth hReader.Read() While _NotClosed(hReader, iDepth) Select Case hReader.Node.Name Case "title" Title = _GetText(hReader) Case "link" {Link} = _GetText(hReader) Case "description" Description = _GetText(hReader) Case "language" Language = _GetText(hReader) Case "copyright" Copyright = _GetText(hReader) Case "managingEditor" ManagingEditor = _GetText(hReader) Case "webMaster" WebMaster = _GetText(hReader) Case "pubDate" Pub = New RssDate Pub._Read(hReader) Case "lastBuildDate" LastBuild = New RssDate LastBuild._Read(hReader) Case "category" hCat = New RssCategory hCat._Read(hReader) aCategories.Add(hCat) Case "generator" Generator = _GetText(hReader) Case "docs" Docs = _GetText(hReader) Case "cloud" Cloud = New RssCloud Cloud._Read(hReader) Case "ttl" Ttl = CInt(_GetText(hReader)) Case "image" Image = New RssImage Image._Read(hReader) Case "rating" Rating = _GetText(hReader) Case "textInput" TextInput = New RssTextInput TextInput._Read(hReader) Case "skipHours" _ReadSkipHours(hReader) Case "skipDays" _ReadSkipDays(hReader) Case "item" hItem = New RssItem hItem._Read(hReader) aItems.Add(hItem) Default Error.Raise(Subst$(("Unexpected element '&1' in "), hReader.Node.Name)) End Select ' XXX: Empty tags can be or . If the last thing we read was of the ' latter kind, we have to Read() one step further to consume its closing tag. If it was ' a self-closing element, we must not read any further. ' ' This is how I check for this currently: we have to be at the end of an element now. ' XmlReader sets hReader.Node.Type To XmlReaderNodeType.EndElement only if a real ' ending tag was encountered. A self-closing element is an XmlReaderNodeType.Element. If hReader.Node.Type = XmlReaderNodeType.EndElement Then hReader.Read() Wend If aCategories.Count Then Categories = aCategories $aItems = aItems End Private Sub _ReadSkipHours(hReader As XmlReader) Dim iDepth As Integer = hReader.Depth Dim iHour As Integer, aHours As New Integer[] hReader.Read() While _NotClosed(hReader, iDepth) If hReader.Node.Name <> "hour" Then Error.Raise((" expected")) iHour = CInt(_GetText(hReader)) If iHour < 0 Or If iHour > 23 Then Error.Raise(Subst$(("SkipHours element '&1' out of range [0, 23]"), iHour)) aHours.Add(iHour) hReader.Read() Wend If aHours.Count > 24 Then Error.Raise(("SkipHours may only contain up to 24 elements")) If aHours.Count Then SkipHours = aHours End Private Sub _ReadSkipDays(hReader As XmlReader) Dim iDepth As Integer = hReader.Depth Dim iDay As Integer, aDays As New Integer[] hReader.Read() While _NotClosed(hReader, iDepth) If hReader.Node.Name <> "day" Then Error.Raise((" expected")) iDay = GetDay(_GetText(hReader)) aDays.Add(iDay) hReader.Read() Wend If aDays.Count > 7 Then Error.Raise(("SkipDays may only contain up to 7 elements")) If aDays.Count Then SkipDays = aDays End gambas-3.16.3/comp/src/gb.web.feed/.src/RssCategory.class000066400000000000000000000013511411575327000227770ustar00rootroot00000000000000' Gambas class file ''' This class represents an RSS category. The RSS specification does not provide a standard ''' set of categories. You can invent your own (site-specific) categories. Export '' The category description string. Use forward slashes as separators to structure categories hierarchically. Public Category As String '' The category domain is an ID for, or a URL to, a category taxonomy description. Public Domain As String Public Sub _Write(hWriter As XmlWriter) With hWriter .StartElement("category", IIf(Domain, ["domain", Domain], Null)) .Text(Category) .EndElement() End With End Public Sub _Read(hReader As XmlReader) Domain = hReader.Node.Attributes["domain"] Category = Rss._GetText(hReader) End gambas-3.16.3/comp/src/gb.web.feed/.src/RssCloud.class000066400000000000000000000037731411575327000223020ustar00rootroot00000000000000' Gambas class file ''' This class can be used to specify a web application implementing the rssCloud interface. ''' An rssCloud application notifies its registrees of changes in subscribed RSS channels. ''' ''' See [https://cyber.harvard.edu/rss/soapMeetsRss.html#rsscloudInterface] for an explanation. Export Public Enum XmlRpc, Soap, HttpPost ' Protocol constants '' Domain name of the application server. Public Domain As String '' TCP port of the application. Public Port As Integer '' The script path on the server. Public Path As String '' The name of the registration procedure to be called on the server side. Public RegisterProcedure As String '' The rssCloud protocol to use. One of [../xmlrpc], [../soap] or [../httppost]. Public Protocol As Integer Public Sub _Write(hWriter As XmlWriter) If Not Domain Or If Not Port Or If Not Path Or If Not RegisterProcedure Or If Not Protocol Then Error.Raise(("Domain, Port, Path, RegisterProcedure and Protocol must be set in RssCloud")) With hWriter .StartElement("cloud", ["domain", Domain, "port", Str$(Port), "path", Path, "registerProcedure", RegisterProcedure, "protocol", GetProtocol(Protocol)]) .EndElement() End With End Private Function GetProtocol(iProto As Integer) As String Select Case iProto Case XmlRpc Return "xml-rpc" Case Soap Return "soap" Case HttpPost Return "http-post" End Select Error.Raise(Subst$(("Invalid RssCloud protocol constant '&1'"), iProto)) End Private Function GetProtocolConst(sProto As String) As Integer Select Case sProto Case "xml-rpc" Return XmlRpc Case "soap" Return Soap Case "http-post" Return HttpPost End Select Error.Raise(Subst$(("Invalid RssCloud protocol '&1'"), sProto)) End Public Sub _Read(hReader As XmlReader) With hReader.Node.Attributes Domain = .["domain"] Port = CInt(.["port"]) Path = .["path"] RegisterProcedure = .["registerProcedure"] Protocol = GetProtocolConst(.["protocol"]) End With hReader.Read() End gambas-3.16.3/comp/src/gb.web.feed/.src/RssDate.class000066400000000000000000000024231411575327000221000ustar00rootroot00000000000000' Gambas class file ''' This class represents a date in RSS. It is comprised of a Gambas Date and ''' a Zone timezone string. Since dates are absolute in Gambas, the timezone is ''' only used during reading and writing the XML document backing an RSS feed. ''' It does not have to "applied" to the Date in any way by the user of this component. Export ' We have a member named "Date", which overshadows the global class of the same name. ' Get a reference to it here. Static Private DateClass As Object = Classes["Date"].New() '' The date represented by this object. Public {Date} As Date '' The timezone relative to which the Date was or should be printed. Public Zone As String Public Sub _new(Optional {Date} As Date, Optional Zone As String) ' Now in the local timezone by default If IsMissing({Date}) Then {Date} = Now If IsMissing(Zone) Then Zone = Format$(Now, "tt") Me.Date = {Date} Me.Zone = Zone End Public Sub _Read(hReader As XmlReader) {Date} = DateClass.FromRFC822(Rss._GetText(hReader), ByRef Zone) End ' The sTag parameter avoids subclassing RssDate to RssPubDate and RssLastBuildDate. Public Sub _Write(hWriter As XmlWriter, sTag As String) With hWriter .StartElement(sTag) .Text(DateClass.ToRFC822(Me.Date, Me.Zone)) .EndElement() End With End gambas-3.16.3/comp/src/gb.web.feed/.src/RssEnclosure.class000066400000000000000000000013161411575327000231620ustar00rootroot00000000000000' Gambas class file ''' This class represents a media attachment to an RSS item. Export '' The URL of the attached file. Public Url As String '' The length of the file in bytes. Public Length As Long '' The MIME type of the file. Public Type As String Public Sub _Write(hWriter As XmlWriter) If Not Url Or If Not Length Or If Not Type Then Error.Raise(("Url, Length and Type must be set in RssEnclosure")) With hWriter .StartElement("enclosure", ["url", Url, "type", Type, "length", Str$(Length)]) .EndElement() End With End Public Sub _Read(hReader As XmlReader) With hReader.Node.Attributes Url = .["url"] Length = CLong(.["length"]) Type = .["type"] End With hReader.Read() End gambas-3.16.3/comp/src/gb.web.feed/.src/RssGuid.class000066400000000000000000000020671411575327000221170ustar00rootroot00000000000000' Gambas class file ''' This class represents a GUID (**G**lobally **U**nique **ID**entifier) of an RSS item. ''' The RSS specification does not prescribe a particular format. A news aggregator may use ''' this property, if present, to determine whether the item is new. ''' ''' By default the [IsPermaLink] property is True, meaning permalinks are the default way ''' to assign the item a GUID. Export '' The GUID string. Public Guid As String '' Returns or sets if this GUID is a [permalink](https://en.wikipedia.org/wiki/Permalink). '' The default value of this property is True. Public IsPermaLink As Boolean Public Sub _new() IsPermaLink = True End Public Sub _Write(hWriter As XmlWriter) With hWriter .StartElement("guid", IIf(IsPermaLink, ["isPermaLink", "true"], Null)) .Text(Guid) .EndElement() End With End Public Sub _Read(hReader As XmlReader) If hReader.Node.Attributes.Exist("isPermaLink") Then IsPermaLink = (hReader.Node.Attributes["isPermaLink"] = "true") Else IsPermaLink = False Endif Guid = Rss._GetText(hReader) End gambas-3.16.3/comp/src/gb.web.feed/.src/RssImage.class000066400000000000000000000047301411575327000222500ustar00rootroot00000000000000' Gambas class file ''' This class represents an image which is associated with an RSS feed. ''' The Title and Link properties should be the same as the corresponding ones of the ''' parent Rss object. Export '' The URL of the image file. The specification requires this to be a GIF, JPEG or PNG file. Public Url As String '' An image title. It is to be used as the 'alt' attribute of the '' HTML tag if the feed is rendered as HTML. '' '' ## See also '' [../link], [../description] Public Title As String '' The URL of the website the feed belongs to. When the feed is rendered as HTML the RssImage becomes a link to this website. '' '' ## See also '' [../title], [../description] Public {Link} As String '' The width of the image. The maximum width is 144, the default is 88. Public Width As Integer '' The height of the image. The maximum height is 400, the default is 31. Public Height As Integer '' If the feed is rendered as HTML this string is to be become the 'title' attribute of the link rendered around the image. '' '' ## See also '' [../title], [../link] Public Description As String Public Sub _new() Width = 88 Height = 31 End Public Sub _Write(hWriter As XmlWriter) If Not Url Or If Not Title Or If Not {Link} Then Error.Raise(("Url, Title and Link must be set in RssImage")) With hWriter .StartElement("image") .Element("url", Url) .Element("title", Title) .Element("link", {Link}) If Width Then If Width > 144 Then Error.Raise(("Maximum width of RssImage is 144")) .Element("width", Str$(Width)) Endif If Height Then If Height > 400 Then Error.Raise(("Maximum height of RssImage is 400")) .Element("height", Str$(Height)) Endif If Description Then .Element("description", Description) .EndElement() End With End Public Sub _Read(hReader As XmlReader) Dim iDepth As Integer = hReader.Depth hReader.Read() While Rss._NotClosed(hReader, iDepth) Select Case hReader.Node.Name Case "url" Url = Rss._GetText(hReader) Case "title" Title = Rss._GetText(hReader) Case "link" {Link} = Rss._GetText(hReader) Case "width" Width = CInt(Rss._GetText(hReader)) Case "height" Height = CInt(Rss._GetText(hReader)) Case "description" Description = Rss._GetText(hReader) Default Error.Raise(Subst$(("Unexpected element '&1' in "), hReader.Node.Name)) End Select hReader.Read() Wend End gambas-3.16.3/comp/src/gb.web.feed/.src/RssItem.class000066400000000000000000000071551411575327000221300ustar00rootroot00000000000000' Gambas class file ''' This class represents a single news item. Create an object of this class, fill its properties ''' and add it to an existing [Rss](../rss) object. ''' ''' All properties of this class are optional, but you have to fill at least Title *or* Description. Export '' The title of the news item. Public Title As String '' A link to the website containing the full content. Public {Link} As String '' Synopsis of the item. You can use entity-encoded HTML. Public Description As String '' EMail address of the author. Public Author As String '' An array of categories for this item. '' '' ## See also '' [../../rsscategory] Public Categories As RssCategory[] '' A URL pointing to a comment page for the item. Public Comments As String '' Describes a media attachment to this item. '' '' ## See also '' [../../rssenclosure] Public Enclosure As RssEnclosure '' A **G**lobally **U**nique **ID**entifier for this item, e.g. a [permalink](https://en.wikipedia.org/wiki/Permalink) '' to the item's full content on your website. '' '' ## See also '' [../../rssguid] Public Guid As RssGuid '' Publication date/timezone of this item. If unset, defaults to the time the XML document is written in the local timezone. Public Pub As RssDate '' If this item comes from another RSS feed, use this property to link to the original feed. '' '' ## See also '' [../../rsssource] Public Source As RssSource Public Sub _compare(Other As RssItem) As Integer ' Only up to seconds. The time formatting in RSS is not any finer anyway. Return Sgn(DateDiff(Other.Pub.Date, Pub.Date, gb.Second)) End Public Sub _Write(hWriter As XmlWriter) Dim hCat As RssCategory If Not Title And If Not Description Then Error.Raise(("Title or Description must be set in RssItem")) hWriter.StartElement("item") With hWriter If Title Then .Element("title", Title) If {Link} Then .Element("link", {Link}) If Description Then .Element("description", Description) If Author Then .Element("author", Author) If Categories Then For Each hCat In Categories hCat._Write(hWriter) Next Endif If Comments Then .Element("comments", Comments) If Enclosure Then Enclosure._Write(hWriter) If Guid Then Guid._Write(hWriter) If Pub Then Pub._Write(hWriter, "pubDate") If Source Then Source._Write(hWriter) End With hWriter.EndElement() End Public Sub _Read(hReader As XmlReader) Dim hCat As RssCategory, aCategories As New RssCategory[] Dim iDepth As Integer = hReader.Depth hReader.Read() While Rss._NotClosed(hReader, iDepth) Select Case hReader.Node.Name Case "title" Title = Rss._GetText(hReader) Case "link" {Link} = Rss._GetText(hReader) Case "description" Description = Rss._GetText(hReader) Case "author" Author = Rss._GetText(hReader) Case "category" hCat = New RssCategory hCat._Read(hReader) aCategories.Add(hCat) Case "comments" Comments = Rss._GetText(hReader) Case "enclosure" Enclosure = New RssEnclosure Enclosure._Read(hReader) Case "guid" Guid = New RssGuid Guid._Read(hReader) Case "pubDate" Pub = New RssDate Pub._Read(hReader) Case "source" Source = New RssSource Source._Read(hReader) Default Error.Raise(Subst$(("Unexpected element '&1' in "), hReader.Node.Name)) End Select ' XXX: See Rss._ReadChannel() for this construction. If hReader.Node.Type = XmlReaderNodeType.EndElement Then hReader.Read() Wend If aCategories.Count Then Categories = aCategories End gambas-3.16.3/comp/src/gb.web.feed/.src/RssSource.class000066400000000000000000000012011411575327000224540ustar00rootroot00000000000000' Gambas class file ''' This class describes a foreign source of an RSS item which you included in your RSS feed. Export '' The feed title of the source RSS feed. '' '' ## See also '' [Rss.Title](../../rss/title) Public Source As String '' Link to the foreign RSS feed's XML document. Public Url As String Public Sub _Write(hWriter As XmlWriter) If Not Url Then Error.Raise(("Url must be set in RssSource")) With hWriter .StartElement("source", ["url", Url]) .Text(Source) .EndElement() End With End Public Sub _Read(hReader As XmlReader) Url = hReader.Node.Attributes["url"] Source = Rss._GetText(hReader) End gambas-3.16.3/comp/src/gb.web.feed/.src/RssTextInput.class000066400000000000000000000033101411575327000231630ustar00rootroot00000000000000' Gambas class file ''' This class represents a text input field which the news aggregator may display ''' with your feed. The [RSS specification](https://cyber.harvard.edu/rss/rss.html#lttextinputgtSubelementOfLtchannelgt) ''' admits that this element's purpose is unclear and that it may not be widely supported. ''' It can be used as a built-in mechanism to provide feedback to the feed owner's website ''' or as a search box. Export '' The label of the submit button next to the input box. Public Title As String '' Explanation of the input box's purpose. Public Description As String '' The name of the input box, for use by the CGI script the input is sent to. Public Name As String '' Link to the CGI script which processes the input. Public {Link} As String Public Sub _Write(hWriter As XmlWriter) If Not Title Or If Not Description Or If Not Name Or If Not {Link} Then Error.Raise(("Title, Description, Name and Link must be set in RssTextInput")) With hWriter .StartElement("textInput") .Element("title", Title) .Element("description", Description) .Element("name", Name) .Element("link", {Link}) .EndElement() End With End Public Sub _Read(hReader As XmlReader) Dim iDepth As Integer = hReader.Depth hReader.Read() While Rss._NotClosed(hReader, iDepth) Select Case hReader.Node.Name Case "title" Title = Rss._GetText(hReader) Case "description" Description = Rss._GetText(hReader) Case "name" Name = Rss._GetText(hReader) Case "link" {Link} = Rss._GetText(hReader) Default Error.Raise(Subst$(("Unexpected element '&1' in "), hReader.Node.Name)) End Select hReader.Read() Wend End gambas-3.16.3/comp/src/gb.web.feed/Feed-icon.svg000066400000000000000000000021321411575327000211460ustar00rootroot00000000000000 gambas-3.16.3/comp/src/gb.web.feed/test.xml000066400000000000000000000044501411575327000203420ustar00rootroot00000000000000 Liftoff News http://liftoff.msfc.nasa.gov/ Liftoff to Space Exploration. en-us Tue, 10 Jun 2003 04:00:00 GMT Tue, 10 Jun 2003 09:41:01 GMT http://blogs.law.harvard.edu/tech/rss Weblog Editor 2.0 editor@example.com webmaster@example.com Star City http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>. Tue, 03 Jun 2003 09:39:21 GMT http://liftoff.msfc.nasa.gov/2003/06/03.html#item573 Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm">partial eclipse of the Sun</a> on Saturday, May 31st. Fri, 30 May 2003 11:06:42 GMT http://liftoff.msfc.nasa.gov/2003/05/30.html#item572 The Engine That Does More http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that. Tue, 27 May 2003 08:37:32 GMT http://liftoff.msfc.nasa.gov/2003/05/27.html#item571 Astronauts' Dirty Laundry http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options. Tue, 20 May 2003 08:56:02 GMT http://liftoff.msfc.nasa.gov/2003/05/20.html#item570 gambas-3.16.3/comp/src/gb.web.form/000077500000000000000000000000001411575327000166765ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.component000066400000000000000000000003041411575327000206760ustar00rootroot00000000000000[Component] Key=gb.web.form Version=3.15.90 State=1 Authors=Benoît Minisini Requires=gb.web,gb.util.web,gb.util Excludes=gb.gui,gb.gui.qt,gb.gtk,gb.gtk3,gb.qt4,gb.qt5,gb.sdl2,gb.sdl,gb.web.form2 gambas-3.16.3/comp/src/gb.web.form/.directory000066400000000000000000000000411411575327000206760ustar00rootroot00000000000000[Desktop Entry] Icon=./.icon.png gambas-3.16.3/comp/src/gb.web.form/.hidden/000077500000000000000000000000001411575327000202075ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/Uncompressed/000077500000000000000000000000001411575327000226565ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/Uncompressed/gw-style.css000066400000000000000000000200311411575327000251370ustar00rootroot00000000000000HTML, BODY { margin: 0; padding: 0; height: 100%; width: 100%; } HTML, BODY, DIV { box-sizing: border-box; } SELECT { min-height: 2rem; font-size: inherit; } INPUT { font: inherit; } H1,H2,H3,P { margin-top: 0.5rem; margin-bottom: 0.25rem; } /*UL, OL { padding-left: 2em; margin-bottom: 0; } P:first-child,UL:first-child,OL:first-child { margin-top: 0; }*/ .gw-button { padding: 0; font: inherit; padding: 0 0.25em; /*min-height: 1rem;*/ } .gw-button.gw-noborder { border: solid 1px transparent; background: none; padding: 0; } .gw-button.gw-noborder:hover { border: solid 1px #C0C0C0; } .gw-button-image { margin-right: 0.5em; } .gw-button > IMG { vertical-align: middle; } .gw-button > DIV { display: inline-block; vertical-align: middle; } .gw-tab-header { margin-bottom: -1px; z-index: 1; line-height: 2em; } .gw-tab-header.gw-noborder { margin-bottom: 0; } .gw-tab { color: gray; padding: 0 0.5em; cursor: pointer; border-top: solid transparent 1px; border-right: solid transparent 1px; border-left: solid transparent 1px; } .gw-tab:hover { color: black; } .gw-tab-selected { padding: 0 0.5em; border-left: solid #C0C0C0 1px; border-top: solid #C0C0C0 1px; border-right: solid #C0C0C0 1px; border-top-left-radius: 0.5em; border-top-right-radius: 0.5em; background: white; } .gw-tab-header.gw-noborder > div { border: none; } .gw-tab-contents { border: solid #C0C0C0 1px; flex-grow: 1; display: flex; flex-flow: column; } .gw-tab-contents > DIV { flex-grow: 1; } .gw-tab-contents.gw-noborder { border: none; } .gw-checkbox-label,.gw-radiobutton-label { vertical-align: middle; } .gw-checkbox-toggle,.gw-radiobutton-toggle { vertical-align: middle; margin: 0; margin-right: 0.5em; } .gw-textbox { min-height: 2rem; box-sizing: border-box; padding: 0 0.25em; } .gw-textbox.gw-noborder { border: none; } .gw-combobox { display: inline-block; position: relative; min-height: 2rem; } .gw-combobox SELECT { height: 100%; z-index: 1; opacity: 0; float: right; } .gw-combobox INPUT { width: 100%; min-height: 2rem; box-sizing: border-box; padding: 0 2.25em 0 0.25em; vertical-align: middle; } .gw-combobox.gw-noborder INPUT { border: none; } .gw-combobox-arrow { display: inline-block; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAI0lEQVQYlWNgoAZoYGBg+I8DN+BT1MCABhrwSSIrwilJHgAAbCcP9dwIQGIAAAAASUVORK5CYII='); background-position: center; background-repeat: no-repeat; height: 2rem; width: 2rem; margin-left: -2rem; /*pointer-events: none;*/ vertical-align: middle; border: none; overflow: hidden; } .gw-selectbox { display: inline-block; position: relative; min-height: 2rem; } .gw-selectbox SELECT { width: 100%; } .gw-selectbox.gw-noborder SELECT { border: none; } .gw-window { position: fixed; border: solid 1px white; box-shadow: 0 0 0.5em black; border-radius: 0.5em; background: white; z-index: 10; overflow: hidden; } .gw-window-titlebar { display: flex; flex-flow: row; background: #2980B9; font-weight: bold; height: 2em; border-top-left-radius: 0.5em; border-top-right-radius: 0.5em; } .gw-window-title { flex-grow: 1; color: white; line-height: 2em; padding-left: 0.5em; pointer-events: none; } .gw-window-button { position: absolute; padding: 0; width: 1.5em; height: 1.5em; top: 0.25em; right: 0.25em; } /*@-moz-document url-prefix() { .gw-window-button { display: inline-flex; }; }*/ .gw-window-contents { display: flex; flex-flow: column; flex-grow: 1; padding: 0.5em; } .gw-label { display: flex; align-items: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } #gw-modal { display: none; position: fixed; left: 0; right: 0; width: 100%; height: 100%; background: black; opacity: 0.05; } .gw-textarea { font-family: inherit; resize: none; } .gw-textarea.gw-noborder { border: none; } .gw-menu-title { display: inline-table; padding: 0.5em; padding-top: 0.25em; cursor: default; border-top: solid 1px transparent; border-left: solid 1px transparent; border-right: solid 1px transparent; /*margin-top: 0.25em; margin-bottom: 0.25em;*/ } .gw-menu:hover > .gw-menu-title { border-top: solid 1px #C0C0C0; border-left: solid 1px #C0C0C0; border-right: solid 1px #C0C0C0; box-shadow: 0 0 0.25em #C0C0C0; background: white; z-index: 1002; } .gw-submenu { display: none; position: absolute; border: solid 1px #C0C0C0; background: white; box-shadow: 0 0.125em 0.25em #C0C0C0; margin-top: -0.25em; z-index: 1003; } .gw-menuitem > .gw-menu > .gw-submenu { margin-top: 0; top: 0; left: 100%; } .gw-menu:hover > .gw-submenu { display: table; } .gw-menu-tape { display: none; position: relative; background: white; z-index: 1004; height: 4px; margin-top: -4px; margin-left: 1px; margin-right: 1px; top: -2px; } .gw-menu:hover > .gw-menu-tape { display: block; } .gw-submenu > div:hover { background: #E0E0E0; } .gw-menuitem { display: flex; flex-flow: column; } .gw-menuitem > div { display: table-cell !important; vertical-align: middle; } .gw-menuitem-text { flex-grow: 1; padding: 0.125em 0.25em; white-space: nowrap; } .gw-menuitem-icon { padding: 0.125em 0.25em; } .gw-menuitem-icon > IMG { vertical-align: middle; } .gw-menuitem-shortcut { text-align: right; padding: 0.125em 1em; } .gw-separator { position: relative; padding: 0 !important; pointer-events: none; } .gw-separator-hline { position: absolute; display: flex; flex-flow: row; align-items: center; height: inherit; width: 100%; } .gw-separator-hline > div { height: 1px; width: 100%; background: #C0C0C0; } .gw-separator-vline { position: absolute; display: flex; flex-flow: column; align-items: center; height: 100%; width: inherit; } .gw-separator-vline > div { width: 1px; height: 100%; background: #C0C0C0; } .gw-submenu > div { display: flex !important; cursor: default; padding: 0.25em 1em; margin: 0; } .gw-submenu > .gw-menuitem { display: table-row !important; table-layout: fixed; cursor: default; padding: 0; margin: 0; } .gw-submenu > .gw-separator { display: table-row !important; cursor: default; margin: 0; width: auto; height: 1em; } .gw-menuitem > .gw-menu { display: table-cell !important; position: relative; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAJElEQVQYlWNgQIAGBgLgPyFF/wkp+o9NERMhe0m2AqckAy5JALuADHot/KmNAAAAAElFTkSuQmCC'); background-position: center; background-repeat: no-repeat; width: 1em; } .gw-spinbox.gw-noborder { border: none; } .gw-expander-header + DIV { margin-top: 0.5em; } .gw-expander-header > IMG { vertical-align: middle; } .gw-expander-header > DIV { display: inline-table; vertical-align: middle; } .gw-expander-border { border: solid 1px #C0C0C0; padding: 0.5em; } .gw-table { position: relative; overflow: auto; min-height: 4em; border: solid 1px #C0C0C0; } .gw-table.gw-noborder { border: none; } /*.gw-table-header { height: 1.5em; background-color: yellow; }*/ .gw-table-contents { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .gw-table > DIV > TABLE { border-collapse: collapse; } .gw-table > DIV > TABLE > THEAD > TR > TH { text-align: left; background-color: #E0E0E0; padding: 0.25em 0.5em; vertical-align: top; border-bottom: solid 1px #C0C0C0; } .gw-table > DIV > TABLE > THEAD > TR > TH:last-child { border-right: none; } .gw-table > DIV > TABLE > TBODY > TR > TD { /*border-right: solid 1px #C0C0C0;*/ padding: 0.25em 0.5em; vertical-align: top; } /*.gw-table > DIV > TABLE > TBODY > TR > TD:last-child { border-right: none; } .gw-table > DIV > TABLE > TBODY > TR:last-child > TD { border-bottom: solid 1px #C0C0C0; }*/ .gw-table > DIV > TABLE > TBODY > TR:nth-child(even) { background-color: #F0F0F0; } gambas-3.16.3/comp/src/gb.web.form/.hidden/Uncompressed/lib.js000066400000000000000000000764401411575327000237750ustar00rootroot00000000000000function $(a) { return document.getElementById(a); } if (!String.prototype.endsWith) { String.prototype.endsWith = function(searchString, position) { var subjectString = this.toString(); if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) { position = subjectString.length; } position -= searchString.length; var lastIndex = subjectString.indexOf(searchString, position); return lastIndex !== -1 && lastIndex === position; }; } Element.prototype.hasClass = function(klass) { if (this.classList) return this.classList.contains(klass); else return !!this.className.match(new RegExp('(\\s|^)' + klass + '(\\s|$)')); }; Element.prototype.addClass = function(klass) { if (this.classList) this.classList.add(klass); else if (!this.hasClass(klass)) this.className += " " + klass; }; Element.prototype.removeClass = function(klass) { if (this.classList) this.classList.remove(klass); else if (this.hasClass(klass)) { var reg = new RegExp('(\\s|^)' + klass + '(\\s|$)'); this.className = this.className.replace(reg, ' '); } }; /*Element.prototype.ensureVisible = function() { var parent = this.offsetParent; while (parent && parent.clientHeight == parent.scrollHeight && parent.clientWidth == parent.scrollWidth) parent = parent.offsetParent; if (parent) gw.ensureVisible(this.offsetParent, this.offsetLeft, this.offsetTop, this.offsetWidth, this.offsetHeight); };*/ gw = { version: '0', commands: [], timers: {}, windows: [], form: '', debug: false, loaded: {}, uploads: {}, autocompletion: [], focus: false, lock: 0, log: function(msg) { if (gw.debug) { if (gw.startTime == undefined) gw.startTime = Date.now(); console.log(((Date.now() - gw.startTime) / 1000).toFixed(3) + ': ' + msg); } }, load: function(lib) { var elt, src; if (gw.loaded[lib]) return; if (lib.endsWith('.js')) { elt = document.createElement('script'); elt.setAttribute("type", "text/javascript"); src = $root + '/lib:' + lib.slice(0, -3) + ':' + gw.version + '.js'; elt.setAttribute("src", src); } else if (lib.endsWith('.css')) { elt = document.createElement('link'); elt.setAttribute("rel", "stylesheet"); elt.setAttribute("type", "text/css"); src = $root + '/style:' + lib.slice(0, -4) + ':' + gw.version + '.css'; elt.setAttribute("href", src); } else return; document.getElementsByTagName("head")[0].appendChild(elt); gw.loaded[lib] = src; console.log('load: ' + src); }, setInnerHtml : function(id, html) { var oldDiv = $(id); var newDiv = oldDiv.cloneNode(false); newDiv.innerHTML = html; oldDiv.parentNode.replaceChild(newDiv, oldDiv); }, setOuterHtml : function(id, html) { if ($(id)) $(id).outerHTML = html; else console.log('setOuterHtml: ' + id + '? ' + html); }, removeElement : function(id) { var elt = $(id); //for (i = 0; i < id_list.length; i++) //{ //elt = $(id_list[i]); if (!elt) return; //console.log(id + " removed"); elt.parentNode.removeChild(elt); //} }, insertElement : function(id, parent) { var elt = document.createElement('div'); elt.id = id; $(parent).appendChild(elt); }, setVisible : function(id, visible) { var elt = $(id); if (elt) { if (visible) elt.removeClass('gw-hidden'); else elt.addClass('gw-hidden'); } }, saveFocus: function() { var active = document.activeElement.id; var selection; if (active) selection = gw.getSelection($(active)); return [active, selection]; }, restoreFocus: function(save) { var elt; if (save[0]) { elt = $(save[0]) if (elt) { elt.focus(); gw.setSelection(elt, save[1]); } } //else // gw.active = document.activeElement.id; }, wait: function(lock) { var elt; if (lock) { if (gw.lock == 0) { elt = $('gw-lock'); elt.style.zIndex = 1000; elt.style.display = 'block'; gw.lock_id = setTimeout(function() { $('gw-lock').style.opacity = '1'; }, 500); } gw.lock++; } else { gw.lock--; if (gw.lock == 0) { if (gw.lock_id) { clearTimeout(gw.lock_id); gw.lock_id = undefined; } elt = $('gw-lock'); elt.style.display = 'none'; elt.style.opacity = '0'; } } }, answer: function(xhr, after) { if (xhr.readyState == 4) { if (xhr.status == 200 && xhr.responseText) { xhr.gw_command && gw.log('==> ' + xhr.gw_command + '...'); gw.focus = false; var save = gw.saveFocus(); /*if (gw.debug) console.log('--> ' + xhr.responseText);*/ var r = xhr.responseText.split('\n'); var i, expr; for (i = 0; i < r.length; i++) { expr = r[i].trim(); if (expr.length == 0) continue; if (gw.debug) { if (expr.length > 1024) gw.log('--> ' + expr.substr(0, 1024) + '...'); else gw.log('--> ' + expr); } eval(expr); } //eval(xhr.responseText); if (!gw.focus) gw.restoreFocus(save); } if (after) after(); xhr.gw_command && gw.log('==> ' + xhr.gw_command + ' done.'); if (xhr.gw_command && (xhr.gw_command.length < 5 || xhr.gw_command[4] == undefined || xhr.gw_command[4] == false)) gw.wait(false); gw.commands.splice(0, 2); gw.sendNewCommand(); } }, sendNewCommand: function() { var command, after, len; var xhr; for(;;) { len = gw.commands.length; if (len < 2) return; command = gw.commands[0]; after = gw.commands[1]; gw.log('[ ' + command + ' ]'); if (command) { if (command.length < 5 || command[4] == undefined || command[4] == false) gw.wait(true); xhr = new XMLHttpRequest(); xhr.gw_command = command; xhr.open('GET', $root + '/x?c=' + encodeURIComponent(JSON.stringify(command)), true); xhr.onreadystatechange = function() { gw.answer(xhr, after); }; xhr.send(null); return; } after(); gw.commands.splice(0, 2); } }, send: function(command, after) { gw.log('gw.send: ' + command + ' ' + JSON.stringify(gw.commands)); gw.commands.push(command); gw.commands.push(after); if (gw.commands.length == 2) gw.sendNewCommand(); }, raise: function(id, event, args, no_wait) { gw.send(['raise', id, event, args, no_wait]); }, update: function(id, prop, value, after) { gw.send(['update', id, prop, value, true], after); }, command: function(action) { gw.send(null, action); }, getSelection: function(o) { var start, end; try { if (o.createTextRange) { var r = document.selection.createRange().duplicate(); r.moveEnd('character', o.value.length) if (r.text == '') start = o.value.length; else start = o.value.lastIndexOf(r.text); r.moveStart('character', -o.value.length); end = r.text.length; return [start, end]; } if (o.selectionStart && o.selectionEnd) return [o.selectionStart, o.selectionEnd]; } catch(e) {}; return undefined; }, setSelection: function(o, sel) { if (sel) { if (o.setSelectionRange) try { o.setSelectionRange(sel[0], sel[1]) } catch(e) {}; } }, setFocus: function(id) { var elt = $(id + ':entry') || $(id); if (elt) { elt.focus(); gw.active = document.activeElement.id; gw.selection = undefined; gw.focus = true; } }, resizeComboBox: function(id) { $(id + '-select').onmouseover = function() { $(id + '-select').style.width = $(id).offsetWidth + 'px'; } }, highlightMandatory: function(id) { var elt = $(id); var elt_br; var div; var div_br; if (elt == undefined || elt.gw_mandatory) return; elt.gw_mandatory = div = document.createElement('div'); div.className = 'gw-mandatory'; elt.parentNode.insertBefore(div, elt); elt_br = gw.getPos(elt); div_br = gw.getPos(div); div.style.top = (elt_br.top - div_br.top) + 'px'; div.style.left = (elt_br.left - div_br.left) + 'px'; div.style.width = elt_br.width + 'px'; div.style.height = elt_br.height + 'px'; }, addTimer: function(id, delay) { gw.removeTimer(id); gw.timers[id] = setInterval(function() { gw.raise(id, 'timer', [], true); }, delay); }, removeTimer: function(id) { var t = gw.timers[id]; if (t) { clearInterval(gw.timers[id]); gw.timers[id] = undefined; } }, getTargetId: function(elt) { for(;;) { if (elt.id) return elt.id; elt = elt.parentNode; if (!elt) return; } }, getPos: function(elt) { var found, left = 0, top = 0, width = 0, height = 0; var offsetBase = gw.offsetBase; if (!offsetBase && document.body) { offsetBase = gw.offsetBase = document.createElement('div'); offsetBase.style.cssText = 'position:absolute;left:0;top:0'; document.body.appendChild(offsetBase); } if (elt && elt.ownerDocument === document && 'getBoundingClientRect' in elt && offsetBase) { var boundingRect = elt.getBoundingClientRect(); var baseRect = offsetBase.getBoundingClientRect(); found = true; left = boundingRect.left - baseRect.left; top = boundingRect.top - baseRect.top; width = boundingRect.right - boundingRect.left; height = boundingRect.bottom - boundingRect.top; } return { found: found, left: left, top: top, width: width, height: height, right: left + width, bottom: top + height }; }, /*ensureVisible: function(id, x, y, w, h) { var elt = typeof(id) == 'string' ? $(id) : id; var pw, ph,cx, cy, cw, ch; var xx, yy, ww, hh; // WW = W / 2 ww = w / 2; //HH = H / 2 hh = h / 2; // XX = X + WW xx = x + ww // YY = Y + HH yy = y + hh; // PW = Me.ClientW // PH = Me.ClientH pw = elt.clientWidth; ph = elt.clientHeight; cx = - elt.scrollLeft; cy = - elt.scrollTop; cw = elt.scrollWidth; ch = elt.scrollHeight; //If PW < (WW * 2) Then WW = PW / 2 //If PH < (HH * 2) Then HH = PH / 2 if (pw < (ww * 2)) ww = pw / 2; if (ph < (hh * 2)) hh = ph / 2; //If CW <= PW Then // WW = 0 // CX = 0 //Endif if (cw <= pw) { ww = 0; cx = 0; } //If CH <= PH Then // HH = 0 // CY = 0 //Endif if (ch <= ph) { hh = 0; cy = 0 } //If XX < (- CX + WW) Then // CX = Ceil(- XX + WW) //Else If XX >= (- CX + PW - WW) Then // CX = Floor(- XX + PW - WW) //Endif if (xx < (- cx + ww)) cx = - xx + ww; else if (xx >= (- cx + pw - ww)) cx = - xx + pw - ww; //If YY < (- CY + HH) Then // CY = Ceil(- YY + HH) //Else If YY >= (- CY + PH - HH) Then // CY = Floor(- YY + PH - HH) //Endif if (yy < (- cy + hh)) cy = - yy + hh; else if (yy >= (- cy + ph - hh)) cy = - yy + ph - hh; //If CX > 0 // CX = 0 //Else If CX < (PW - CW) And If CW > PW Then // CX = PW - CW //Endif if (cx > 0) cx = 0; else if (cx < (pw - cw) && cw > pw) cx = pw - cw; //If CY > 0 Then // CY = 0 //Else If CY < (PH - CH) And If CH > PH Then // CY = PH - CH //Endif if (cy > 0) cy = 0; else if (cy < (ph - ch) && ch > ph) cy = ph - ch; //If $hHBar.Value = - CX And If $hVBar.Value = - CY Then Return True //Scroll(- CX, - CY) elt.scrollLeft = - cx; elt.scrollTop = - cy; },*/ window: { zIndex: 0, open: function(id, resizable, modal, minw, minh) { gw.window.close(id); if (gw.windows.length == 0) { document.addEventListener('mousemove', gw.window.onMove); document.addEventListener('mouseup', gw.window.onUp); gw.log('document.addEventListener'); } gw.windows.push(id); $(id).addEventListener('mousedown', gw.window.onMouseDown); $(id).gw_resizable = resizable; $(id).gw_modal = modal; if (modal) $(id).gw_focus = gw.saveFocus(); if (minw != undefined) { $(id).gw_minw = minw; $(id).gw_minh = minh; } else { $(id).gw_minw = $(id).offsetWidth; $(id).gw_minh = $(id).offsetHeight; } //console.log('gw.window.open: minw = ' + $(id).gw_minw + ' minh = ' + $(id).gw_minh); // Touch events //pane.addEventListener('touchstart', onTouchDown); //document.addEventListener('touchmove', onTouchMove); //document.addEventListener('touchend', onTouchEnd); gw.window.refresh(); }, popup: function(id, resizable, control, alignment, minw, minh) { var pos; gw.window.close(id); if (gw.windows.length == 0) { document.addEventListener('mousemove', gw.window.onMove); document.addEventListener('mouseup', gw.window.onUp); gw.log('document.addEventListener'); } gw.windows.push(id); $(id).addEventListener('mousedown', gw.window.onMouseDown); $(id).gw_resizable = resizable; $(id).gw_modal = true; $(id).gw_popup = true; $(id).gw_focus = gw.saveFocus(); if (minw != undefined) { $(id).gw_minw = minw; $(id).gw_minh = minh; } else { $(id).gw_minw = $(id).offsetWidth; $(id).gw_minh = $(id).offsetHeight; } pos = gw.getPos($(control)); //console.log(pos); /*$(id).style.left = pos.left + 'px'; $(id).style.top = pos.bottom + 'px';*/ $(id).style.transform = 'translate(' + pos.left + 'px,' + pos.bottom + 'px)'; gw.window.refresh(); }, close: function(id) { var i; $(id).removeEventListener('mousedown', gw.window.onMouseDown); i = gw.windows.indexOf(id); if (i >= 0) { gw.windows.splice(i, 1); gw.window.refresh(); } if ($(id).gw_focus) { gw.restoreFocus($(id).gw_focus); $(id).gw_focus = undefined; } }, refresh: function() { var i = 0; var zi; while (i < gw.windows.length) { if ($(gw.windows[i])) { zi = 11 + i * 2; if ($(gw.windows[i]).style.zIndex != zi) $(gw.windows[i]).style.zIndex = zi; i++; } else gw.windows.splice(i, 1); } gw.window.updateModal(); if (gw.windows.length == 0) { gw.log('document.removeEventListener'); document.removeEventListener('mousemove', gw.window.onMove); document.removeEventListener('mouseup', gw.window.onUp); } else gw.window.updateTitleBars(); }, updateTitleBars: function() { var i, win, last; for (i = 0; i < gw.windows.length - 1; i++) { win = gw.windows[i]; if ($(win).gw_popup) continue; $(win).addClass('gw-deactivated'); $(win + '-titlebar').addClass('gw-deactivated'); last = win; } if (last && !$(last).gw_popup) { $(last).removeClass('gw-deactivated'); $(last + '-titlebar').removeClass('gw-deactivated'); } }, raise: function(id, send) { var i = gw.windows.indexOf(id); if (i < 0) return; gw.windows.splice(i, 1); gw.windows.push(id); for (i = 0; i < gw.windows.length; i++) $(gw.windows[i]).style.zIndex = 11 + i * 2; gw.window.updateTitleBars(); if (send) gw.update('', '#windows', gw.windows); }, updateModal: function() { var i, elt = $('gw-modal'); for (i = gw.windows.length - 1; i >= 0; i--) { if ($(gw.windows[i]).gw_modal) { gw.window.zIndex = 10 + i * 2; elt.style.zIndex = 10 + i * 2; elt.style.display = 'block'; /*if ($(gw.windows[i]).gw_popup) elt.style.opacity = '0'; else elt.style.opacity = '';*/ return; } } gw.window.zIndex = 0; elt.style.display = 'none'; }, center: function(id) { $(id).style.transform = 'translate(' + ((window.innerWidth - $(id).offsetWidth) / 2 | 0) + 'px,' + ((window.innerHeight - $(id).offsetHeight) / 2 | 0) + 'px)'; gw.window.updateGeometry(id); }, maximize: function(id) { var geom = $(id).gw_save_geometry; if (geom != undefined) { //$(id).style.left = geom[0]; //$(id).style.top = geom[1]; $(id).style.transform = geom[0] $(id).style.width = geom[1]; $(id).style.height = geom[2]; $(id).gw_save_geometry = undefined; } else { $(id).gw_save_geometry = [$(id).style.transform, $(id).style.width, $(id).style.height]; $(id).style.transform = ''; $(id).style.width = '100%'; $(id).style.height = '100%'; } //gw.window.updateGeometry(id); }, onMouseDown: function(e) { gw.window.onDown(e); }, onDown: function(e) { var c, win; gw.window.context = undefined; if (e.target.className == 'gw-window-button') return; gw.window.onMove(e); c = gw.window.context; if (c == undefined) return; if ($(c.id).gw_save_geometry) return; if (c.isMoving || c.isResizing) { gw.window.raise(c.id); gw.window.downEvent = e; e.preventDefault(); } }, onDownModal: function() { var win = gw.windows[gw.windows.length - 1]; if ($(win).gw_popup) gw.update(win, '#close'); }, onMove: function(e) { var i, id, elt, b, x, y, bx, by, bw, bh, th; var onTopEdge, onLeftEdge, onRightEdge, onBottomEdge, isResizing; var MARGINS = 6; if (gw.window.downEvent) { gw.window.context.cx = e.clientX; gw.window.context.cy = e.clientY; gw.window.animate(); return; } gw.window.context = undefined; for (i = 0; i < gw.windows.length; i++) { id = gw.windows[gw.windows.length - i - 1]; elt = $(id); if (elt.style.zIndex < gw.window.zIndex) continue; b = elt.getBoundingClientRect(); bx = b.left; // - MARGINS; by = b.top; // - MARGINS; bw = b.width; // + MARGINS * 2; bh = b.height; // + MARGINS * 2; x = e.clientX - bx; y = e.clientY - by; //console.log(x + ',' + y + ' : ' + bx + ',' + by + ',' + bw + ',' + bh); if (x >= 0 && x < bw && y >= 0 && y < bh) { if (elt.gw_resizable) { onTopEdge = y < MARGINS; onLeftEdge = x < MARGINS; onRightEdge = x >= (bw - MARGINS); onBottomEdge = y >= (bh - MARGINS); isResizing = onTopEdge || onLeftEdge || onRightEdge || onBottomEdge; } else onTopEdge = onLeftEdge = onRightEdge = onBottomEdge = isResizing = false; if ($(id).gw_popup) th = 0; else th = $(id + '-titlebar').offsetHeight; isMoving = !isResizing && y < (th + MARGINS); gw.window.context = { id: id, x: b.left + window.scrollX, y: b.top + window.scrollY, cx: e.clientX, cy: e.clientY, w: b.width, h: b.height, isResizing: isResizing, isMoving: isMoving, onTopEdge: onTopEdge, onLeftEdge: onLeftEdge, onRightEdge: onRightEdge, onBottomEdge: onBottomEdge }; gw.window.animate(); break; } } }, updateGeometry: function(id) { var b = $(id).getBoundingClientRect(); gw.update(id, '#geometry', [ b.left + 'px', b.top + 'px', b.width + 'px', b.height + 'px']); }, onUp: function(e) { var c = gw.window.context; gw.window.downEvent = undefined; if (c && (c.isMoving || c.isResizing)) { var id = gw.window.context.id; gw.window.context = undefined; gw.window.raise(id, true); gw.window.updateGeometry(id); } }, animate: function() { var id, elt, c, e, x, y, w, h; var minWidth; var minHeight; //requestAnimationFrame(gw.window.animate); c = gw.window.context; if (!c) return; elt = $(c.id); minWidth = elt.gw_minw; minHeight = elt.gw_minh; //$(c.id + '-titlebar').offsetHeight + 2 + elt.gw_minh; e = gw.window.downEvent; if (c && c.isResizing && e) { if (c.onRightEdge) elt.style.width = Math.max(c.w + c.cx - e.clientX, minWidth) + 'px'; if (c.onBottomEdge) elt.style.height = Math.max(c.h + c.cy - e.clientY, minHeight) + 'px'; x = c.x; y = c.y; if (c.onLeftEdge) { x = c.x + c.cx - e.clientX; w = c.x + c.w - x; if (w >= minWidth) { elt.style.width = w + 'px'; //elt.style.left = x + 'px'; elt.style.transform = 'translate(' + x + 'px,' + y + 'px)'; //c.x = x; } } if (c.onTopEdge) { y = c.y + c.cy - e.clientY; h = c.y + c.h - y; if (h >= minHeight) { elt.style.height = h + 'px'; //elt.style.top = y + 'px'; elt.style.transform = 'translate(' + x + 'px,' + y + 'px)'; } } return; } if (c && c.isMoving && e) { /*elt.style.left = (Math.max(0, c.x + c.cx - e.clientX)) + 'px'; elt.style.top = (Math.max(0, c.y + c.cy - e.clientY)) + 'px';*/ elt.style.transform = 'translate(' + (Math.max(0, c.x + c.cx - e.clientX)) + 'px,' + (Math.max(0, c.y + c.cy - e.clientY)) + 'px)'; return; } // This code executes when mouse moves without clicking if (c.onRightEdge && c.onBottomEdge || c.onLeftEdge && c.onTopEdge) elt.style.cursor = 'nwse-resize'; else if (c.onRightEdge && c.onTopEdge || c.onBottomEdge && c.onLeftEdge) elt.style.cursor = 'nesw-resize'; else if (c.onRightEdge || c.onLeftEdge) elt.style.cursor = 'ew-resize'; else if (c.onBottomEdge || c.onTopEdge) elt.style.cursor = 'ns-resize'; else elt.style.cursor = ''; } }, menu: { hide: function(elt) { elt.style.display = 'none'; setTimeout(function() { elt.style.display = ''; }, 150); }, click: function(name, event) { var id = gw.getTargetId(event.target); gw.update(name, '#click', id); event.stopPropagation(); } }, table: { select: function(id, row) { var elt = $(id); var tr = $(id + ':' + row); var current = elt.gw_current; if (tr.tagName == 'TR') { if (current !== undefined) { if (current >= 0) $(id + ':' + current) && $(id + ':' + current).removeClass('gw-table-row-selected'); tr.addClass('gw-table-row-selected'); elt.gw_current = row; } else { if (tr.hasClass('gw-table-row-selected')) tr.removeClass('gw-table-row-selected'); else tr.addClass('gw-table-row-selected'); } } gw.update(id, '$' + row, null); }, check: function(id, row) { var elt = $(id + ':' + row); if (event.target.tagName == 'TD') elt.checked = !elt.checked; gw.update(id, '!' + row, elt.checked); event.stopPropagation(); }, toggle: function(id, row) { gw.update(id, '?' + row, false); }, onScroll: function(id, more, timeout) { var elt = $(id); var sw = elt.firstChild; var last = elt.gw_last_scroll; if (last && last[0] == sw.scrollLeft && last[1] == sw.scrollTop) return; elt.gw_last_scroll = [sw.scrollLeft, sw.scrollTop]; //console.log('onScroll: ' + id + ' ' + sw.scrollLeft + ',' + sw.scrollTop); if (more) { //if ((sw.scrollHeight - sw.scrollTop) === (sw.clientHeight)) if (sw.scrollTop >= (sw.scrollHeight - sw.clientHeight - 16)) { /*var wait = document.createElement('div'); wait.className = 'gw-waiting'; elt.appendChild(wait);*/ if (elt.gw_scroll) { clearTimeout(elt.gw_scroll); elt.gw_scroll = undefined; } gw.update(id, '#more', [sw.scrollLeft, sw.scrollTop]); return; } } if (elt.gw_headerh) $(elt.gw_headerh).firstChild.scrollLeft = sw.scrollLeft; if (elt.gw_headerv) $(elt.gw_headerv).firstChild.scrollTop = sw.scrollTop; if (elt.gw_noscroll) { elt.gw_noscroll = undefined; return; } if (elt.gw_scroll) clearTimeout(elt.gw_scroll); elt.gw_scroll = setTimeout(function() { //console.log("gw.table.onScroll: " + id + ": " + sw.scrollLeft + " " + sw.scrollTop); var pos = [sw.scrollLeft, sw.scrollTop]; clearTimeout(elt.gw_scroll); gw.update(elt.id, '#scroll', pos, function() { elt.gw_scroll = undefined; if (pos[0] != sw.scrollLeft || pos[1] != sw.scrollTop) gw.table.onScroll(id, more, timeout); }); //elt.gw_scroll = undefined; }, timeout || 250); }, scroll: function(id, x, y) { var sw = $(id).firstChild //console.log("gw.table.scroll: " + id + ": " + x + " " + y); if (x != sw.scrollLeft) { $(id).gw_noscroll = true; sw.scrollLeft = x; } if (y != sw.scrollTop) { $(id).gw_noscroll = true; sw.scrollTop = y; } if (x != sw.scrollLeft || y != sw.scrollTop) gw.update(id, '#scroll', [sw.scrollLeft, sw.scrollTop]); }, ensureVisible: function(id, row) { var sw = $(id).firstChild; gw.table.scroll(id, sw.scrollLeft, $(id + ':' + row).offsetTop - sw.clientHeight / 2); } }, scrollview: { setHeaders: function(id, hid, vid) { $(id).gw_headerh = hid; $(id).gw_headerv = vid; } }, file: { select: function(id) { var elt = $(id + ':file'); if ($(id).gw_uploading) return; elt.focus(); elt.click(); }, finish: function(xhr) { if (xhr.gw_progress) { setTimeout(function() { gw.file.finish(xhr); }, 250); return; } gw.update(xhr.gw_id, '#progress', 1, function() { gw.answer(xhr); gw.uploads[xhr.gw_id] = undefined; gw.raise(xhr.gw_id, 'upload', [], true); xhr.gw_id = undefined; }); }, upload: function(id) { var elt = $(id + ':file'); var file = elt.files[0]; var xhr = new XMLHttpRequest(); var form = new FormData(); if (gw.uploads[id]) return; gw.uploads[id] = xhr; //gw.log('gw.file.upload: ' + id + ': ' + file.name); xhr.gw_progress = 0; xhr.gw_progress++; gw.update(id, '#progress', 0, function() { xhr.gw_progress--; }); form.append('file', file); form.append('name', file.name); form.append('id', id); //xhr.upload.addEventListener("loadstart", loadStartFunction, false); //xhr.upload.addEventListener("load", transferCompleteFunction, false); xhr.upload.addEventListener("progress", function(e) { //console.log('upload: progress ' + e.loaded + ' / ' + e.total); if (xhr.gw_id == undefined) return; if (e.lengthComputable) { var t = (new Date()).getTime(); if ((xhr.gw_time == undefined || (t - xhr.gw_time) > 250) && xhr.gw_progress == 0) { xhr.gw_progress++; gw.update(xhr.gw_id, '#progress', e.loaded / e.total, function() { xhr.gw_progress--; }); xhr.gw_time = t; } } }, false); xhr.gw_command = ['upload', id]; xhr.gw_id = id; xhr.open("POST", $root + '/u', true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) gw.file.finish(xhr); }; xhr.send(form); }, abort: function(id) { if (gw.uploads[id]) gw.uploads[id].abort(); } }, autocomplete: function(id) { new AutoComplete({ selector: $(id + ':entry'), cache: false, source: function(term, response) { var xhr = $(id).gw_xhr; if (xhr) { try { xhr.abort(); } catch(e) {} } $(id).gw_xhr = xhr = new XMLHttpRequest(); xhr.open('GET', $root + '/x?c=' + encodeURIComponent(JSON.stringify(['raise', id, 'completion', [term]])), true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { gw.autocompletion = []; gw.answer(xhr); response(gw.autocompletion); } }; xhr.send(); }, onSelect: function(e, term, item) { gw.textbox.setText(id, gw.textbox.getText(id)); } }); }, textbox: { onactivate: function(id, e) { gw.log('textbox.onactivate'); if (e.keyCode == 13) setTimeout(function() { gw.raise(id, 'activate', [], false); }, 50); }, getText: function(id) { return $(id + ':entry').value; }, setText: function(id, text) { gw.command(function() { $(id + ':entry').value = text; gw.setSelection($(id + ':entry'), [text.length, text.length]); gw.update(id, 'text', text); }); }, clear: function(id) { gw.textbox.setText(id, ''); gw.setFocus(id); gw.raise(id, 'activate', [], false); } } } gambas-3.16.3/comp/src/gb.web.form/.hidden/Uncompressed/style.css000066400000000000000000000270751411575327000245430ustar00rootroot00000000000000HTML, BODY { margin: 0; padding: 0; height: 100%; width: 100%; } HTML, BODY, DIV, INPUT { box-sizing: border-box; } SELECT { min-height: 2em; font-size: inherit; } INPUT { font: inherit; } H1,H2,H3,P { margin-top: 0.5rem; margin-bottom: 0.25rem; } /*UL, OL { padding-left: 2em; margin-bottom: 0; } P:first-child,UL:first-child,OL:first-child { margin-top: 0; }*/ .gw-button { padding: 0; font: inherit; padding: 0.125em 0.25em; min-height: 2em; } .gw-button.gw-noborder { border: solid 1px transparent; background: none; padding: 0; } .gw-button.gw-noborder:hover { border: solid 1px #C0C0C0; } .gw-button-image { margin-right: 0.5em; } .gw-button > DIV { vertical-align: middle; position: relative; display: inline-flex; justify-content: center; align-items: center; flex-flow: row; } .gw-button > DIV > SPAN { display: inline-block; } .gw-tab-header { margin-bottom: -1px; z-index: 1; line-height: 2em; } .gw-tab-header.gw-noborder { margin-bottom: 0; } .gw-tab { color: gray; padding: 0 0.5em; cursor: pointer; border-top: solid transparent 1px; border-right: solid transparent 1px; border-left: solid transparent 1px; } .gw-tab:hover { color: black; } .gw-tab-selected { padding: 0 0.5em; border-left: solid #C0C0C0 1px; border-top: solid #C0C0C0 1px; border-right: solid #C0C0C0 1px; border-top-left-radius: 0.5em; border-top-right-radius: 0.5em; background: white; } .gw-tab-header.gw-noborder > div { border: none; } .gw-tab-contents { border: solid #C0C0C0 1px; flex-grow: 1; display: flex; flex-flow: column; } .gw-tab-contents > DIV { flex-grow: 1; } .gw-tab-contents.gw-noborder { border: none; } .gw-checkbox,.gw-radiobutton { display: flex; flex-flow: row; min-height: 2em; } .gw-checkbox-label,.gw-radiobutton-label { display: flex; flex-flow: row; align-items: center; } .gw-checkbox.gw-disabled > .gw-checkbox-label { opacity: 0.5; } .gw-radiobutton.gw-disabled > .gw-checkbox-label { opacity: 0.5; } .gw-checkbox-toggle,.gw-radiobutton-toggle { margin: 0; margin-right: 0.5em; } .gw-textbox { min-height: 2em; /*box-sizing: border-box; firefox bug on refresh !*/ padding: 0 0.25em; } .gw-textbox.gw-noborder { border: none; } .gw-combobox { display: inline-block; position: relative; min-height: 2em; } .gw-combobox SELECT { height: 100%; z-index: 1; opacity: 0; float: right; } .gw-combobox INPUT { width: 100%; min-height: 2em; box-sizing: border-box; padding: 0 2.25em 0 0.25em; vertical-align: middle; } .gw-combobox.gw-noborder INPUT { border: none; } .gw-combobox-arrow { display: inline-block; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAI0lEQVQYlWNgoAZoYGBg+I8DN+BT1MCABhrwSSIrwilJHgAAbCcP9dwIQGIAAAAASUVORK5CYII='); background-position: center; background-repeat: no-repeat; height: 2rem; width: 2rem; margin-left: -2rem; /*pointer-events: none;*/ vertical-align: middle; border: none; overflow: hidden; } .gw-selectbox { display: inline-block; position: relative; min-height: 2em; } .gw-selectbox SELECT { width: 100%; height: 100%; } .gw-selectbox.gw-noborder SELECT { border: none; } .gw-window-container { } .gw-window { position: fixed; top: 0; left: 0; border: solid 1px white; box-shadow: 0 0 0.5em black; border-radius: 0.5em; background: white; z-index: 10; overflow: hidden; } .gw-popup { border: solid 1px #C0C0C0; border-radius: 0; box-shadow: none; } .gw-window-titlebar { display: flex; flex-flow: row; background: #2980B9; font-weight: bold; border-top-left-radius: 0.5em; border-top-right-radius: 0.5em; padding: 0.25em; } .gw-window-titlebar.gw-deactivated { background: white; } .gw-window-title { flex-grow: 1; color: white; padding: 0 1em; pointer-events: none; } .gw-window-titlebar.gw-deactivated > DIV.gw-window-title { color: gray; } .gw-window-button { width: 1.5em; height: 1.5em; padding: 0; display: inline-flex; justify-content: center; } .gw-window-button > IMG { width: 0.8em; height: 0.8em; margin: auto; } /*@-moz-document url-prefix() { .gw-window-button { display: inline-flex; }; }*/ .gw-window-contents { display: flex; flex-flow: column; flex-grow: 1; padding: 0.5em; } .gw-popup > .gw-window-contents { padding: 0; } .gw-label { display: flex; align-items: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .gw-label.gw-disabled { opacity: 0.5; } #gw-modal { display: none; position: fixed; left: 0; right: 0; width: 100%; height: 100%; background: black; opacity: 0.05; } .gw-textarea { font: inherit; resize: none; } .gw-textarea.gw-noborder { border: none; } .gw-menu-title { display: inline-table; padding: 0.5em; padding-top: 0.25em; cursor: default; border-top: solid 1px transparent; border-left: solid 1px transparent; border-right: solid 1px transparent; /*margin-top: 0.25em; margin-bottom: 0.25em;*/ } .gw-menu:hover > .gw-menu-title { border-top: solid 1px #C0C0C0; border-left: solid 1px #C0C0C0; border-right: solid 1px #C0C0C0; box-shadow: 0 0 0.25em #C0C0C0; background: white; z-index: 1002; } .gw-submenu { display: none; position: absolute; border: solid 1px #C0C0C0; background: white; box-shadow: 0 0.125em 0.25em #C0C0C0; margin-top: -0.25em; z-index: 1003; } .gw-menuitem > .gw-menu > .gw-submenu { margin-top: 0; top: 0; left: 100%; } .gw-menu:hover > .gw-submenu { display: table; } .gw-menu-tape { display: none; position: relative; background: white; z-index: 1004; height: 4px; margin-top: -4px; margin-left: 1px; margin-right: 1px; top: -2px; } .gw-menu:hover > .gw-menu-tape { display: block; } .gw-submenu > div:hover { background: #E0E0E0; } .gw-menuitem { display: flex; flex-flow: column; } .gw-menuitem > div { display: table-cell !important; vertical-align: middle; } .gw-menuitem-text { flex-grow: 1; padding: 0.125em 0.25em; white-space: nowrap; } .gw-menuitem-icon { padding: 0.125em 0.25em; } .gw-menuitem-icon > IMG { vertical-align: middle; } .gw-menuitem-shortcut { text-align: right; padding: 0.125em 1em; } .gw-separator { position: relative; padding: 0 !important; pointer-events: none; } .gw-separator-hline { position: absolute; display: flex; flex-flow: row; align-items: center; height: inherit; width: 100%; } .gw-separator-hline > div { height: 1px; width: 100%; background: #C0C0C0; } .gw-separator-vline { position: absolute; display: flex; flex-flow: column; align-items: center; height: 100%; width: inherit; } .gw-separator-vline > div { width: 1px; height: 100%; background: #C0C0C0; } .gw-submenu > div { display: flex !important; cursor: default; padding: 0.25em 1em; margin: 0; } .gw-submenu > .gw-menuitem { display: table-row !important; table-layout: fixed; cursor: default; padding: 0; margin: 0; } .gw-submenu > .gw-separator { display: table-row !important; cursor: default; margin: 0; width: auto; height: 1em; } .gw-menuitem > .gw-menu { display: table-cell !important; position: relative; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAJElEQVQYlWNgQIAGBgLgPyFF/wkp+o9NERMhe0m2AqckAy5JALuADHot/KmNAAAAAElFTkSuQmCC'); background-position: center; background-repeat: no-repeat; width: 1em; } .gw-spinbox { min-height: 2em; padding: 0 0.25em; } .gw-spinbox.gw-noborder { border: none; } .gw-expander-header + DIV { margin-top: 0.5em; } .gw-expander-header > IMG { vertical-align: middle; } .gw-expander-header > DIV { display: inline-table; vertical-align: middle; } .gw-expander-border { border: solid 1px #C0C0C0; padding: 0.5em; } .gw-table { position: relative; min-height: 4em; border: solid 1px #C0C0C0; cursor: default; } .gw-table.gw-noborder { border: none; } /*.gw-table-header { height: 1.5em; background-color: yellow; }*/ .gw-table-contents { position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: auto; } .gw-table > DIV > TABLE { border-collapse: collapse; } .gw-table > DIV > TABLE > THEAD > TR > TH { text-align: left; background-color: #E0E0E0; padding: 0.25em 0.5em; vertical-align: top; border-bottom: solid 1px #C0C0C0; } .gw-table > DIV > TABLE > THEAD > TR > TH:last-child { border-right: none; } .gw-table > DIV > TABLE > TBODY > TR > TD { /*border-right: solid 1px #C0C0C0;*/ padding: 0.1em 0.5em; vertical-align: top; } /*.gw-table > DIV > TABLE > TBODY > TR > TD:last-child { border-right: none; } .gw-table > DIV > TABLE > TBODY > TR:last-child > TD { border-bottom: solid 1px #C0C0C0; }*/ .gw-table > DIV > TABLE > TBODY > TR:nth-child(even) { background-color: #F0F0F0; } .gw-table-more { position: absolute; padding-left: 4px; } .gw-waiting { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: url('//gw-waiting.gif'); background-position: center; background-repeat: no-repeat; } .gw-scrollview { position: relative; } .gw-scrollview > DIV { position: absolute !important; overflow: auto; top: 0; left: 0; right: 0; bottom: 0; } .gw-datebox { position: relative; display: inline-block; min-height: 2em; } .gw-datebox INPUT { width: 100%; min-height: 2em; box-sizing: border-box; padding: 0 2.25em 0 0.25em; vertical-align: middle; } .gw-datebox.gw-noborder INPUT { border: none; } TABLE.gw-calendar { width: 100%; } TABLE.gw-calendar > TBODY > TR > TH { padding: 0.25em 0.5em; background: #E0E0E0; } TABLE.gw-calendar > TBODY > TR > TD { padding: 0.25em 0.5em; text-align: center; cursor: pointer; border: solid 1px transparent; } TABLE.gw-calendar > TBODY > TR > TD:hover { outline: solid 1px #C0C0C0; } TABLE.gw-calendar > TBODY > TR > TD.gw-date-disabled { color: #C0C0C0; } TABLE.gw-calendar > TBODY > TR > TD.gw-date-today { font-weight: bold; border: solid 1px black; } TABLE.gw-calendar > TBODY > TR > TD.gw-date-current { background-color: #2980B9; color: white; } .gw-file-input { position: absolute; left: -2000px; } .gw-progressbar { position: relative; border: solid 1px #C0C0C0; min-height: 0.5em; border-radius: 0.25em; } .gw-progressbar.gw-noborder { border: solid 1px transparent; } .gw-progressbar-bar { position: absolute; height: 100%; background: #C0C0C0; border: solid 1px white; border-radius: 0.25em; z-index: -1; } .gw-progressbar-label { position: absolute; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } .gw-form { flex-grow: 1; } .gw-image { border: solid 1px #C0C0C0; box-sizing: border-box; } .gw-image.gw-noborder { border: none; } .gw-table-row-selected { background-color: #2980B9 !important; color: white !important; } .gw-ac-suggestions { text-align: left; cursor: default; border: 1px solid #C0C0C0; border-top: 0; background: white; /*box-shadow: -1px 1px 3px rgba(0,0,0,.1);*/ /* core styles should not be changed */ position: absolute; display: none; z-index: 9999; max-height: 12em; overflow: hidden; overflow-y: auto; box-sizing: border-box; } .gw-ac-suggestion { position: relative; padding: 0 0.5em; line-height: 1.5em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .gw-ac-suggestion b { font-weight: normal; color: #2980B9; } .gw-ac-suggestion.selected { background: #E0E0E0; } gambas-3.16.3/comp/src/gb.web.form/.hidden/calendar.js000066400000000000000000001324471411575327000223310ustar00rootroot00000000000000 function getAbsoluteParent(obj) { for(;;) { obj = obj.offsetParent; if (obj == null) break; if (obj.style.position == 'absolute') break; } return obj; } function __getIEVersion() { var rv = -1; // Return value assumes failure. if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat(RegExp.$1); } return rv; } function __getOperaVersion() { var rv = 0; // Default value if (window.opera) { var sver = window.opera.version(); rv = parseFloat(sver); } return rv; } var __userAgent = navigator.userAgent; var __isIE = navigator.appVersion.match(/MSIE/) != null; var __IEVersion = __getIEVersion(); var __isIENew = __isIE && __IEVersion >= 8; var __isIEOld = __isIE && !__isIENew; var __isFireFox = __userAgent.match(/firefox/i) != null; var __isFireFoxOld = __isFireFox && ((__userAgent.match(/firefox\/2./i) != null) || (__userAgent.match(/firefox\/1./i) != null)); var __isFireFoxNew = __isFireFox && !__isFireFoxOld; var __isWebKit = navigator.appVersion.match(/WebKit/) != null; var __isChrome = window.chrome != null; var __isOpera = window.opera != null; var __operaVersion = __getOperaVersion(); var __isOperaOld = __isOpera && (__operaVersion < 10); function __parseBorderWidth(width) { var res = 0; if (typeof(width) == "string" && width != null && width != "" ) { var p = width.indexOf("px"); if (p >= 0) { res = parseInt(width.substring(0, p)); } else { //do not know how to calculate other values //(such as 0.5em or 0.1cm) correctly now //so just set the width to 1 pixel res = 1; } } return res; } //returns border width for some element function __getBorderWidth(element) { var res = new Object(); res.left = 0; res.top = 0; res.right = 0; res.bottom = 0; if (window.getComputedStyle) { //for Firefox var elStyle = window.getComputedStyle(element, null); res.left = parseInt(elStyle.borderLeftWidth.slice(0, -2)); res.top = parseInt(elStyle.borderTopWidth.slice(0, -2)); res.right = parseInt(elStyle.borderRightWidth.slice(0, -2)); res.bottom = parseInt(elStyle.borderBottomWidth.slice(0, -2)); } else { //for other browsers res.left = __parseBorderWidth(element.style.borderLeftWidth); res.top = __parseBorderWidth(element.style.borderTopWidth); res.right = __parseBorderWidth(element.style.borderRightWidth); res.bottom = __parseBorderWidth(element.style.borderBottomWidth); } return res; } //returns the absolute position of some element within document function getElementAbsolutePos(element) { var res = new Object(); res.x = 0; res.y = 0; if (element !== null) { if (element.getBoundingClientRect) { var viewportElement = document.documentElement; var box = element.getBoundingClientRect(); var scrollLeft = viewportElement.scrollLeft; var scrollTop = viewportElement.scrollTop; res.x = box.left + scrollLeft; res.y = box.top + scrollTop; } else { //for old browsers res.x = element.offsetLeft; res.y = element.offsetTop; var parentNode = element.parentNode; var borderWidth = null; var offsetParent = element.offsetParent; while (offsetParent != null) { res.x += offsetParent.offsetLeft; res.y += offsetParent.offsetTop; var parentTagName = offsetParent.tagName.toLowerCase(); if ((__isIEOld && parentTagName != "table") || ((__isFireFoxNew || __isChrome) && parentTagName == "td")) { borderWidth = kGetBorderWidth (offsetParent); res.x += borderWidth.left; res.y += borderWidth.top; } if (offsetParent != document.body && offsetParent != document.documentElement) { res.x -= offsetParent.scrollLeft; res.y -= offsetParent.scrollTop; } //next lines are necessary to fix the problem //with offsetParent if (!__isIE && !__isOperaOld || __isIENew) { while (offsetParent != parentNode && parentNode !== null) { res.x -= parentNode.scrollLeft; res.y -= parentNode.scrollTop; if (__isFireFoxOld || __isWebKit) { borderWidth = kGetBorderWidth(parentNode); res.x += borderWidth.left; res.y += borderWidth.top; } parentNode = parentNode.parentNode; } } if (offsetParent.style.position == 'absolute') break; parentNode = offsetParent.parentNode; offsetParent = offsetParent.offsetParent; } } } return res; } function getLeftPos(obj) { return getElementAbsolutePos(obj).x } function getTopPos(obj) { return getElementAbsolutePos(obj).y } function moveElementUnder(obj, under, dx, dy, right) { var pos, opos, x, y; var absUnder, absObj; pos = getElementAbsolutePos(under); obj.style.position = 'absolute'; obj.style.left = '0'; obj.style.top = '0'; opos = getElementAbsolutePos(obj); x = pos.x - opos.x + dx; //- getLeftPos(under.offsetParent); y = pos.y - opos.y + under.offsetHeight + dy; //- getTopPos(under.offsetParent); if (right) x -= obj.offsetWidth - under.offsetWidth; obj.style.left = x + 'px'; obj.style.top = y + 'px'; } /************************************************************************************************************ JS Calendar Copyright (C) September 2006 DTHMLGoodies.com, Alf Magne Kalleland This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Dhtmlgoodies.com., hereby disclaims all copyright interest in this script written by Alf Magne Kalleland. Alf Magne Kalleland, 2006 Owner of DHTMLgoodies.com ************************************************************************************************************/ var turnOffYearSpan = false; // true = Only show This Year and Next, false = show +/- 5 years var weekStartsOnSunday = false; // true = Start the week on Sunday, false = start the week on Monday var showWeekNumber = true; // true = show week number, false = do not show week number var calendar_display_time = true; // Format of current day at the bottom of the calendar // [todayString] = the value of todayString // [dayString] = day of week (example: mon, tue, wed...) // [UCFdayString] = day of week (example: Mon, Tue, Wed...) ( First letter in uppercase) // [day] = Day of month, 1..31 // [monthString] = Name of current month // [year] = Current year var todayStringFormat = '[todayString] [UCFdayString]. [day] [monthString] [year]'; var pathToImages = $root; // Relative to your HTML file var speedOfSelectBoxSliding = 50; // Milliseconds between changing year and hour when holding mouse over "-" and "+" - lower value = faster var intervalSelectBox_minutes = 5; // Minute select box - interval between each option (5 = default) var calendar_offsetTop = 3; // Offset - calendar placement - You probably have to modify this value if you're not using a strict doctype var calendar_offsetLeft = 4; // Offset - calendar placement - You probably have to modify this value if you're not using a strict doctype var calendarDiv; var must_submit = false; var MSIE = false; var Opera = false; //if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)MSIE=true; if(navigator.userAgent.indexOf('Opera')>=0)Opera=true; var monthArray = ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre']; var monthArrayShort = ['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc']; var dayArray = ['Lun','Mar','Mer','Jeu','Ven','Sam','Dim']; var weekString = 'Sem'; var todayString = ""; if (weekStartsOnSunday) { var tempDayName = dayArray[6]; for(var theIx = 6; theIx > 0; theIx--) { dayArray[theIx] = dayArray[theIx-1]; } dayArray[0] = tempDayName; } var daysInMonthArray = [31,28,31,30,31,30,31,31,30,31,30,31]; var currentMonth; var currentYear; var currentHour; var currentMinute; var calendarContentDiv; var returnDateTo; var returnFormat; var activeSelectBoxMonth; var activeSelectBoxYear; var activeSelectBoxHour; var activeSelectBoxMinute; var iframeObj = false; //// fix for EI frame problem on time dropdowns 09/30/2006 var iframeObj2 =false; function EIS_FIX_EI1(where2fixit) { if (!iframeObj2) return; iframeObj2.style.display = 'block'; iframeObj2.style.height = $(where2fixit).offsetHeight+1; iframeObj2.style.width= $(where2fixit).offsetWidth; iframeObj2.style.left=getLeftPos($(where2fixit))+1-calendar_offsetLeft; iframeObj2.style.top=getTopPos($(where2fixit))-$(where2fixit).offsetHeight-calendar_offsetTop; } function EIS_Hide_Frame() { if(iframeObj2) iframeObj2.style.display = 'none'; } //// fix for EI frame problem on time dropdowns 09/30/2006 var returnDateToYear; var returnDateToMonth; var returnDateToDay; var returnDateToHour; var returnDateToMinute; var inputYear; var inputMonth; var inputDay; var inputHour; var inputMinute; var calendarDisplayTime = false; var selectBoxHighlightColor = '#FF0000'; // Highlight color of select boxes var selectBoxRolloverBgColor = '#F0F0F0'; // Background color on drop down lists(rollover) var selectBoxMovementInProgress = false; var activeSelectBox = false; function cancelCalendarEvent() { return false; } function isLeapYear(inputYear) { return inputYear % 400 == 0 || (inputYear % 4 == 0 && inputYear % 100 != 0); } var activeSelectBoxMonth = false; var activeSelectBoxDirection = false; function selectElt(elt, value) { elt.style.fontWeight = value ? 'bold' : ''; } function scrollMonthYear() { activeSelectBox = this; if (this.id.indexOf('UpDiv') >= 0 || this.id.indexOf('DownDiv') >= 0) { //if (this.className=='monthYearActive') selectBoxMovementInProgress = true; //else // selectBoxMovementInProgress = false; if (this.id.indexOf('UpDiv') >=0 ) activeSelectBoxDirection = -1; else activeSelectBoxDirection = 1; setTimeout(slideCalendarSelectBox, speedOfSelectBoxSliding); } else selectBoxMovementInProgress = false; } function showMonthDropDown() { if($('monthDropDown').style.display=='block'){ $('monthDropDown').style.display='none'; //// fix for EI frame problem on time dropdowns 09/30/2006 EIS_Hide_Frame(); }else{ $('monthDropDown').style.display='block'; $('yearDropDown').style.display='none'; $('hourDropDown').style.display='none'; $('minuteDropDown').style.display='none'; if (MSIE) { EIS_FIX_EI1('monthDropDown')} //// fix for EI frame problem on time dropdowns 09/30/2006 } } function showYearDropDown() { if($('yearDropDown').style.display=='block'){ $('yearDropDown').style.display='none'; //// fix for EI frame problem on time dropdowns 09/30/2006 EIS_Hide_Frame(); }else{ $('yearDropDown').style.display='block'; $('monthDropDown').style.display='none'; $('hourDropDown').style.display='none'; $('minuteDropDown').style.display='none'; if (MSIE) { EIS_FIX_EI1('yearDropDown')} //// fix for EI frame problem on time dropdowns 09/30/2006 } } function showHourDropDown() { if($('hourDropDown').style.display=='block'){ $('hourDropDown').style.display='none'; //// fix for EI frame problem on time dropdowns 09/30/2006 EIS_Hide_Frame(); }else{ $('hourDropDown').style.display='block'; $('monthDropDown').style.display='none'; $('yearDropDown').style.display='none'; $('minuteDropDown').style.display='none'; if (MSIE) { EIS_FIX_EI1('hourDropDown')} //// fix for EI frame problem on time dropdowns 09/30/2006 } } function showMinuteDropDown() { if($('minuteDropDown').style.display=='block'){ $('minuteDropDown').style.display='none'; //// fix for EI frame problem on time dropdowns 09/30/2006 EIS_Hide_Frame(); }else{ $('minuteDropDown').style.display='block'; $('monthDropDown').style.display='none'; $('yearDropDown').style.display='none'; $('hourDropDown').style.display='none'; if (MSIE) { EIS_FIX_EI1('minuteDropDown')} //// fix for EI frame problem on time dropdowns 09/30/2006 } } function selectMonth() { var elt; $('calendar_month_txt').innerHTML = this.innerHTML currentMonth = this.id.replace(/[^\d]/g,''); $('monthDropDown').style.display='none'; //// fix for EI frame problem on time dropdowns 09/30/2006 EIS_Hide_Frame(); for(var no=0;no=0){ currentMonth=currentMonth-1;; if(currentMonth<0){ currentMonth=11; currentYear=currentYear-1; } }else{ currentMonth=currentMonth+1;; if(currentMonth>11){ currentMonth=0; currentYear=currentYear/1+1; } } updateMonthDiv(); writeCalendarContent(); } function createMonthDiv(){ var div = document.createElement('DIV'); div.className='monthYearPicker'; div.id = 'monthPicker'; for(var no=0;no=0){ var startYear = yearItems[1].innerHTML/1 -1; if(activeSelectBoxYear) selectElt(activeSelectBoxYear, false); }else{ var startYear = yearItems[1].innerHTML/1 +1; if(activeSelectBoxYear) selectElt(activeSelectBoxYear, false); } for(var no=1;no= 0) { var startHour = hourItems[1].innerHTML/1 - 1; if(startHour < 0) startHour = 0; } else { var startHour = hourItems[1].innerHTML/1 + 1; if(startHour >14 ) startHour = 14; } if(activeSelectBoxHour) selectElt(activeSelectBoxHour, false); for (var no = 1; no < (hourItems.length - 1); no++) { hourItems[no].innerHTML = padleft(startHour+no-1, '00'); hourItems[no].id = 'hourDiv' + padleft(startHour+no-1, '00'); } if (activeSelectBoxHour) { selectElt(activeSelectBoxHour, false); if ($('hourDiv'+currentHour)) { activeSelectBoxHour = $('hourDiv' + currentHour); selectElt(activeSelectBoxHour, true); } } } function updateYearDiv() { var yearSpan = 5; if (turnOffYearSpan) { yearSpan = 0; } var div = $('yearDropDown'); var yearItems = div.getElementsByTagName('DIV'); for(var no=1;no'; subDiv.onclick = changeSelectBoxYear; subDiv.onmouseover = scrollMonthYear; subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;}; subDiv.onselectstart = cancelCalendarEvent; div.appendChild(subDiv); } else { startYear = d.getFullYear()/1 - 0; yearSpan = 2; } for(var no=startYear;no<(startYear+yearSpan);no++){ var subDiv = document.createElement('DIV'); subDiv.innerHTML = no; //subDiv.onmouseover = scrollMonthYear; //subDiv.onmouseout = scrollMonthYear; subDiv.onclick = selectYear; subDiv.id = 'yearDiv' + no; subDiv.onselectstart = cancelCalendarEvent; div.appendChild(subDiv); if(currentYear && currentYear==no){ selectElt(subDiv, true); activeSelectBoxYear = subDiv; } } if (! turnOffYearSpan) { var subDiv = document.createElement('DIV'); subDiv.id = 'yearDownDiv'; subDiv.style.height = "13px"; subDiv.innerHTML = ''; subDiv.onclick = changeSelectBoxYear; subDiv.onmouseover = scrollMonthYear; subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;}; subDiv.onselectstart = cancelCalendarEvent; div.appendChild(subDiv); } return div; } /* This function creates the hour div at the bottom bar */ function slideCalendarSelectBox() { if(selectBoxMovementInProgress){ if(activeSelectBox.parentNode.id=='hourDropDown') changeSelectBoxHour(false,activeSelectBox); else if(activeSelectBox.parentNode.id=='yearDropDown') changeSelectBoxYear(false,activeSelectBox); setTimeout(slideCalendarSelectBox, speedOfSelectBoxSliding); } } function createHourDiv() { if(!$('hourDropDown')){ var div = document.createElement('DIV'); div.className='monthYearPicker'; }else{ var div = $('hourDropDown'); var subDivs = div.getElementsByTagName('DIV'); for(var no=0;no14)startHour=14; var subDiv = document.createElement('DIV'); //subDiv.innerHTML = '  - '; subDiv.style.height = '13px'; subDiv.id = 'hourUpDiv'; subDiv.innerHTML = ''; subDiv.onclick = changeSelectBoxHour; subDiv.onmouseover = scrollMonthYear; subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;}; subDiv.onselectstart = cancelCalendarEvent; div.appendChild(subDiv); for(var no=startHour;no'; //subDiv.innerHTML = '  + '; subDiv.onclick = changeSelectBoxHour; subDiv.onmouseover = scrollMonthYear; subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;}; subDiv.onselectstart = cancelCalendarEvent; div.appendChild(subDiv); return div; } /* This function creates the minute div at the bottom bar */ function createMinuteDiv() { if(!$('minuteDropDown')){ var div = document.createElement('DIV'); div.className='monthYearPicker'; }else{ var div = $('minuteDropDown'); var subDivs = div.getElementsByTagName('DIV'); for(var no=0;no0){ calendarContentDiv.removeChild(existingTable[0]); } var calTable = document.createElement('TABLE'); calTable.width = '100%'; calTable.cellSpacing = '0'; calendarContentDiv.appendChild(calTable); var calTBody = document.createElement('TBODY'); calTable.appendChild(calTBody); var row = calTBody.insertRow(-1); row.className = 'calendar_week_row'; if (showWeekNumber) { var cell = row.insertCell(-1); cell.innerHTML = weekString; cell.className = 'calendar_week_column'; cell.style.backgroundColor = selectBoxRolloverBgColor; } for(var no=0;no0 && colCounter%7==0){ var row = calTBody.insertRow(-1); if (showWeekNumber) { var cell = row.insertCell(-1); cell.className = 'calendar_week_column'; var week = getWeek(currentYear,currentMonth,no); cell.innerHTML = week; // Week cell.style.backgroundColor = selectBoxRolloverBgColor; } } var cell = row.insertCell(-1); if(currentYear==inputYear && currentMonth == inputMonth && no==inputDay) cell.className='activeDay'; else cell.className='normalDay'; cell.innerHTML = no; if (calendarDisplayTime) cell.onclick = setDate; else cell.onclick = pickDate; colCounter++; } if(!document.all){ if(calendarContentDiv.offsetHeight) $('topBar').style.top = calendarContentDiv.offsetHeight + $('timeBar').offsetHeight + $('topBar').offsetHeight -1 + 'px'; else{ $('topBar').style.top = ''; $('topBar').style.bottom = '0px'; } } if(iframeObj){ if(!calendarContentDivExists)setTimeout('resizeIframe()',350);else setTimeout('resizeIframe()',10); } } function resizeIframe() { iframeObj.style.width = calendarDiv.offsetWidth + 'px'; iframeObj.style.height = calendarDiv.offsetHeight + 'px' ; } function pickTodaysDate(n) { var d = new Date(); if (n !== undefined) d.setDate(d.getDate() + n); currentMonth = d.getMonth(); currentYear = d.getFullYear(); inputDay = d.getDate(); pickDate(null, inputDay); } function setDate(e, day) { inputDay = this.innerHTML; inputMonth = currentMonth; inputYear = currentYear; writeCalendarContent(); } function pickDate(e, day) { var month; month = currentMonth/1 + 1; if (month < 10) month = '0' + month; if (!day && this && this.innerHTML) day = this.innerHTML; else day = inputDay/1; if (day/1 < 10) day = '0' + day; if (returnFormat) { returnFormat = returnFormat.replace('dd',day); returnFormat = returnFormat.replace('mm',month); returnFormat = returnFormat.replace('yyyy',currentYear); returnFormat = returnFormat.replace('hh',currentHour); returnFormat = returnFormat.replace('nn',currentMinute); returnFormat = returnFormat.replace('d',day/1); returnFormat = returnFormat.replace('m',month/1); returnDateTo.value = returnFormat; } else { for(var no=0;no= 0 ? 1 : 0)) + 'px'; //calendarDiv.style.top = (getTopPos(inputObj), calendarDiv) + 'px'; moveElementUnder(calendarDiv, inputObj, 0, 0); if(iframeObj){ iframeObj.style.left = calendarDiv.style.left; iframeObj.style.top = calendarDiv.style.top; //// fix for EI frame problem on time dropdowns 09/30/2006 iframeObj2.style.left = calendarDiv.style.left; iframeObj2.style.top = calendarDiv.style.top; } } function initCalendar() { if(MSIE){ iframeObj = document.createElement('IFRAME'); iframeObj.style.filter = 'alpha(opacity=0)'; iframeObj.style.position = 'absolute'; iframeObj.border='0px'; iframeObj.style.border = '0px'; iframeObj.style.backgroundColor = '#FF0000'; //// fix for EI frame problem on time dropdowns 09/30/2006 iframeObj2 = document.createElement('IFRAME'); iframeObj2.style.position = 'absolute'; iframeObj2.border='0px'; iframeObj2.style.border = '0px'; iframeObj2.style.height = '1px'; iframeObj2.style.width = '1px'; //// fix for EI frame problem on time dropdowns 09/30/2006 // Added fixed for HTTPS iframeObj2.src = 'blank.html'; iframeObj.src = 'blank.html'; document.body.appendChild(iframeObj2); // gfb move this down AFTER the .src is set document.body.appendChild(iframeObj); } calendarDiv = $("calendarDiv"); if (calendarDiv == null) { calendarDiv = document.createElement('div'); calendarDiv.id = 'calendarDiv'; document.getElementsByTagName("body")[0].appendChild(calendarDiv); } writeBottomBar(); writeTopBar(); /*if(!currentYear){ var d = new Date(); currentMonth = d.getMonth(); currentYear = d.getFullYear(); }*/ writeCalendarContent(); } function setTimeProperties() { if (!calendarDisplayTime) { $('timeBar').style.display='none'; $('timeBar').style.visibility='hidden'; //$('todaysDateString').style.width = '100%'; $('dayPlus1').style.display = 'inline-table'; $('dayPlus2').style.display = 'inline-table'; } else { $('timeBar').style.display='block'; $('timeBar').style.visibility='visible'; $('hourDropDown').style.top = $('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + $('topBar').offsetHeight + 'px'; $('minuteDropDown').style.top = $('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + $('topBar').offsetHeight + 'px'; $('minuteDropDown').style.right = '50px'; $('hourDropDown').style.right = '50px'; //$('todaysDateString').style.width = ''; $('dayPlus1').style.display = 'none'; $('dayPlus2').style.display = 'none'; } } function calendarSortItems(a,b) { return a/1 - b/1; } function trim(str) { return str.replace(/^\s+|\s+$/g, ''); } function padleft(str, fmt) { str = str.toString(); return fmt.substr(0, fmt.length - str.length) + str; } function displayCalendar(inputField, format, buttonObj, displayTime, submit) { var input, pos, date, time; var items, d; calendarDisplayTime = displayTime == true; must_submit = submit; d = new Date(); d = new Date(d.getFullYear(), d.getMonth(), d.getDate()); input = trim(inputField.value); if (input != '') { pos = input.indexOf(' '); if (pos > 0) { date = input.substr(0, pos); time = trim(input.substr(pos)); } else { date = input; time = '00:00'; } try { items = date.split(/[\/]/gi); inputDay = items[0]/1; currentMonth = items[1]/1; currentYear = items[2]/1; items = time.split(/:/gi); currentHour = items[0]/1; currentMinute = items[1]/1; if (isFinite(currentYear) && isFinite(currentMonth) && isFinite(inputDay) && isFinite(currentHour) && isFinite(currentMinute)) d = new Date(currentYear, currentMonth - 1, inputDay, currentHour, currentMinute, 0); } catch(e) { } } currentMonth = padleft(d.getMonth() + 1, '00'); currentYear = padleft(d.getFullYear(), '0000'); currentHour = padleft(d.getHours(), '00'); currentMinute = padleft(d.getMinutes(), '00'); currentMonth--; inputDay = d.getDate()/1; inputYear = currentYear; inputMonth = currentMonth; if (!calendarDiv) { initCalendar(); } else { if (calendarDiv.style.display == 'block') { closeCalendar(); return false; } writeCalendarContent(); } returnFormat = format; returnDateTo = inputField; calendarDiv.style.visibility = 'visible'; calendarDiv.style.display = 'block'; positionCalendar(buttonObj); if(iframeObj){ iframeObj.style.display = ''; iframeObj.style.height = '140px'; iframeObj.style.width = '195px'; iframeObj2.style.display = ''; iframeObj2.style.height = '140px'; iframeObj2.style.width = '195px'; } setTimeProperties(); updateYearDiv(); updateMonthDiv(); updateMinuteDiv(); updateHourDiv(); var hShadow = $('gw-modal'); hShadow.style.visibility = 'visible'; hShadow.onclick = closeCalendar; } gambas-3.16.3/comp/src/gb.web.form/.hidden/control/000077500000000000000000000000001411575327000216675ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webbutton.png000077700000000000000000000000001411575327000350312../../../../../app/src/gambas3/img/control/button.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webcheckbox.png000077700000000000000000000000001411575327000355572../../../../../app/src/gambas3/img/control/checkbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webcombobox.png000077700000000000000000000000001411575327000356232../../../../../app/src/gambas3/img/control/combobox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webcontainer.png000066400000000000000000000001551411575327000250560ustar00rootroot00000000000000PNG  IHDR IPLTEĖItRNS@fIDATc 9 N<NJIENDB`gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webdatebox.png000077700000000000000000000000001411575327000340342../../../gb.form/.hidden/control/datebox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webdatechooser.png000077700000000000000000000000001411575327000355602../../../gb.form/.hidden/control/datechooser.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webexpander.png000077700000000000000000000000001411575327000343742../../../gb.form/.hidden/control/expander.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webhbox.png000077700000000000000000000000001411575327000341032../../../../../app/src/gambas3/img/control/hbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webhtml.png000066400000000000000000000006231411575327000240400ustar00rootroot00000000000000PNG  IHDR sZIDATHՔJA5%n qu TB|J'+}}K%}@"le$ !¸f2fW͜9sra)J2NsC>(d(0J@ }.o(Wy4o3CFړ@ vp-SBhOJ,y7Or'%K?AXsM>8dm`!<1@ [,]9.Zn1=;: GߌGE lQGBO<" *@"ph  f%K)O):ɠ@o9*)$G4h} ?,J,A@]^! di,IENDB`gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webimage.png000077700000000000000000000000001411575327000354512../../../../../app/src/gambas3/img/control/picturebox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/weblabel.png000077700000000000000000000000001411575327000343412../../../../../app/src/gambas3/img/control/label.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/weblistbox.png000077700000000000000000000000001411575327000353532../../../../../app/src/gambas3/img/control/listbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webmenu.png000066400000000000000000000011751411575327000240430ustar00rootroot00000000000000PNG  IHDR DPLTE~~~~~~}}}}}}zzzqqqUUU}}}裣ttthhh )))...󦦦~񧧧JJJMMMěLLLNNNOOOPPP~~~V2tRNSKA;85 W;/<50ns    "IDAT8˽R0`R袥Ev-HQQ+ OCh-U:M:O/$|IIb@Ro4)`IVT 8SIJAܐ&_L #_׷ݟ^0w4X\әut0x~El_\K q&+uATd`ea`OQ0mp2`4G`PW"dj~1} eE(Y,yIENDB`gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webuploader.png000066400000000000000000000006031411575327000247050ustar00rootroot00000000000000PNG  IHDR DxPLTEggg???dddaaa```]]]\\\䀵ŘȥtRNSQ IDAT80.RDP = C;) W~f&2*&@GJNjX+ 2ʬ$3șV`'rf938,/R -'%lT18Mj >[ӴV .+o|Љ8=(?zfOwW?^!?ϜQo\H)ccIENDB`gambas-3.16.3/comp/src/gb.web.form/.hidden/control/webvbox.png000077700000000000000000000000001411575327000341372../../../../../app/src/gambas3/img/control/vbox.pngustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.icon.png000066400000000000000000000252651411575327000204240ustar00rootroot00000000000000PNG  IHDR\rf pHYs+ IDATxo$G߿~[jI3;};.l ^l0``faڻݳFҴ~g=>DFVVHb2Ȍ;~AAAAAAAAAAAAAAAAAAAAAAA1/E/RxnL\ &^3])O}k|t)?B5K'%“toJ},ϊs+?ן$}l Z92RN_1Y:OL'_Y]_O$++%q׵𑐐R=xǿ~OJ H_Oƥ.bkN> F\X#!p[&ظ>vM1 s> U-kקz^NzBLM,3['E !cmFkt&foRߥ8~~8jr߈ F\Y[1ϜZUiCvl35YhR{Vzq|/qRb:'h8%1>y<7/=8OloIT h7 5,=צ`Ź'he椿`^6_SbcOy]HQq aұ\`yt q|!{ƽ?xqjhV[sw&?ŀfu䟌L~~3rT}:ZL][)]wt<;n=聞Wabeu \+(?Yܚsͯ-1~B+3LX/偱L?""\=Q??1igȲ5exmәYiXm)#S}}N9_,КMWXx.!2 &:PX!S,"Es@ktf-ciӹrก ȿן5Ǘ++'uxD$W~]zW~N 4Q<\-Mnr~$Νy jRf#&J\s6 N&Fϙ;  L-P4.3=J'}|N0_Z^W(t%(?P/K_3]VRj|-{#I.3?&5hs0H&8$sL3:Vc,<3)yG߽`Jу+Gp04}`D&, f!5l@jJJ1)E~r(} yBkq?<i"`f!1I5Mo?/ q#sΗYQA2113r r"Oϧ{ (@0/zSީ]דF@B@ʑYؘgәTa@ \&$JhrA$ RJ+Hs9fߧcnaB` {Ykg>e·W7abI1z$ `2_6at Oܧ^drɯ҃|# @:n2Ls>H<+E bx^ /t]{ Oy\L&>Nx __00 Amk* Iˏ)c_ky?ҁƯW\,q7 $2\i9sRs9$ÉkME*iGcbyL,(cd5 *ay(Dɏ;Vʼ =wra0-'&x &381^ZL]<xgLkH)Ǐ,Y-&rI%Q. Ϳ@ۿoIc\Ypm@J @.arGO~ ;Z5&l4؀HiJ8`"R2BS(&~1\ %SsTLalS|rYxcШH[$L[\ Le(5?+E'. RY2 e?d#Wdphm5yi:W!K^QAȒ; 4!JO5?r EMX.и0]yn|NHMhHvW?Z%XZ*FaZ,ڇ ހ4&]7J>PbŸבwȑ F22Ok~e352u!?IZ2)jߧi|cVdq_~[ gOFI׃4Q"Pӗ:_Z+!Gˏ2_\]GV!&{95~-uJ yzq'4tOYnkݝ_W]K7I8z\ @c WQDEąOd1Т\dO^դu!FBE兹?a ,I <~ud"p.Y ?5ZYP$) _XFU!11__GHd'\; @߱ c~שE|%E8kϵ4pYޤ\[`Tۯ,;b`ia&O\c1 5Ӭ\?6`sq`i npap[znPcyA 4W@Pn%'%Xcs |"Z/!ݱ:(A>#P~F?qm*g /Ovp|x=G$'n27"0 c Bvʀ Jh:'n27pF`j>i|H @SJ)|P=KH[[-]؅?Mskh8ҚlyL~rb#9s-2:/.>kxV%"Ee'K=ȦSpeK\'@dHs7?|omZ&R GY$ˊ6V[O?Av5e2f}<ڟa 0@Iz@%a?p rsy$9R9 yb/{nGT7D\ aCu| ci6rt @"S ^XlkxZG m:Ѭ /z!y@1W=4e?jo}<D2d$kڡ azrZ&찔B(ųN @ p.?k_,%"Lv!/_u푏N H )w:n74B*g^N;k` ΰ$^ʍgG`vxǫ~d_q}?0`2$S uۄm,FH N3푏aAH3 PiH,8wG? L2J$ǛM`${~xqG;=<R!sd\.$oB|b׏6 O$B,T^`s \WC|ǯ8 S$B*8iKWH .{@e S|;@*$r; pg9\qNAˆ,+@_k^Lt c؜c69C=.O_7xr0gr=?F 1ԃ* +@3lCի.qgxinH 0L.2)!: x/vzboA0` i1 4i'~692C i?UB[$~ci7g)WY Ga'b " T'g(UP,+j/kxf᪇+.n7H^B1$C&%|dBU bQ<@2а/~H >`O d@ <9~99Sp6q_Ya(g[a L(OR3X Ux#_\k~?p'`;}27'5` 5@͚ P D;y/D0C~rX !^C TKh[ MۂЏKdQ !WIg5 A0uh5 ā^`g u@6TzrT~&`$B38f>V?8x ]Wt´Lgh4|V J&gXF)󕈝0źa}_/R&_ ׽|'1Ѱ  ,_"LUwV-rdu||7nN7,o\|Wqx `^^Τ4+, Dv?_>*wh˧a$  DeǪk~op2Y7G>Q\[uWjxw+<3opp\4 [-qB"JQR,i8 b3|w@0cZкA`D@Qv$h[5a!H^Cg CR ah{~o.>b{grH  dY^ACSp$E)vw{0AəI& Stɔ|DFx vzxS,I3i0yX LgHŹMw[*^Nd\$Ae/d[*;ۃq&Ie $C:=AEU?D'LjIy8GӶt,XWԤC`d2;c >p*$zq x1L21v I%I8Sta a_Q7\0k+8$H&0SY\a3xo"np dDA0Te/n.^*Úe`  IeM¢q Mf HD4٩7@u} x]Cf;2uۦZ.k*pv5%\o8 Q^J<@=VkV\`T~& `ę~ ¡`?aם ul&<-kÍ:ܓ]Si0_G`^(_XXMKkT4wHvxQpu*9 cro`x\SmM^; ݏ;c= F6(%؜ayg=t\fjǜ5>ۺ(78ϞcQ8[ sƮ#3Ys$8 wG>wR³ in6r&$TbX_ n711oH?w0 Ngn]FH^ =ēCzx{ݦ B6a^bWnA4ˤftq6k1BP`IyN"쏧]^8B7J7݌pFT^W^5Y1UQ`;L)xrc_Ξ%x ?Nwnɒ ybqkbóh&_$;aWp/[MqL-톍k~Bs 0őgW2pˁV΁(8  YZ.ZqQ 8o*'[.5]mW~mLmeͺ͆ מg&5]50R! S7+ u;zh9&-E}J6]û(82zwéV{V ,9 Zʛdbw޽2(0Tm-'@?Nb)T?Bp|gs Ngwh޺G+rL|cC1R1!A쮹66<[ n?CG=Αw0j 4mƔ4l&<;5x q&G* uO>B&;s4m랍k!;lMNmC-tvŝ&j(8S[pLw}o{aU:uPi-\ c!LEp gXT 6=5s zU~`s3Vlg5g9-½\@۵UwpL5̛~&B"-<W39au@9Ax6J &'Q>V [IDAT5%`kZ ߿3sd*,Ctq&p$E j6]4l[&DMB0 Ily5vn&ZkXMm- 7 2&y'=;߼coӱj&fxCæ2@i04Mǜf c [F t; p9!m[Hkg4`r>gB"0n~ f*u,Z.[pE03Gg@ywY_;hQkp-w I5A\-LNw  f|Nݏa]n7`s`0^q{y 0<{ 0x5 DiVtipxEl3 ƳNvuuY--аF,8o{(oݽӏp$6y00Jne11Oy=fu7J ˸ogmx76<ˀT"{-jо#5 ^1Yʱ3pMtLS c<|wv{x նcgL++Í>l`A`XG۱hڪɥ2O90/vz0ڮu%0N8}~XuMӮǷhQ:W\vl13v&ܰT~r^C|?{}|;0I8&_]/%$hQcfg 8)uCu1|ـksk"NB{WC<EU1&ǝV?z>i/'go8yD ^BZ!xyBa ~?,$VLAg T;  b|w_w1 h:jh6xg<^WTT~& `-=ӏ.AzG!?0S1~|J zɡo}|{cg&ٹz ?jN˅cr2s28V] w.YO3$Qg&Tw$5& 6V-)%D^ $dǏ3QPɡ|ۗi阸p&~cהŲi#j;Cf[MD}˞Z vwvUwVrLxMO Q%ʒx=;8  8w>}{qmF#W6p0jArFB] {~A}?v$ܲ7%^O} -ĝl5[-|VG5~ .t{O}ͰPP4)T? \(M18gߪ'i{h,򙙊ϴpXepih8|B:\@2W, y\>5 ۼξ3 h΀^v D\m]cn:~nF^[#q Xx8 b*=f \h6qa᪇6ѭ&jcu! `0k߾{sj*ZFn4fWh/.Yw-=0ln^mOmrh:&V] WjhpjM&߈_,+Af-ªgoLnڵ{kuUۮaóUQ :2#OycX8ct8E|BK jڰMlm⛼F0P;] ]w1w5<\p`óv-l z7`+P#vMFc/@ DEcP1`PA653 ,5cóv{$NFT!D~7rWp$c" " cE{ӂz/>sM[.n7,-zY,{ո랄~{xUeK@ V] 5 \K*~?Մ5vttͿ{oXSTiOXbjBP{5N8NHAt@'Au9M}bh5 @[ LA@T~D/ATQaHD!@DL-S\0$ CA@T~& * 0DGzĜx:k7~PӧOv}C!@ӧOzK n?a ,Qm*~?S *L][W=2 C *  @ATQa%AT DՀQa(@ATs)P * QaHAAAAAAAAAAAAAAAAAAAAAAAA(ʻIENDB`gambas-3.16.3/comp/src/gb.web.form/.lang/000077500000000000000000000000001411575327000176755ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.lang/fr.po000066400000000000000000000106301411575327000206440ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.form 3.14.90\n" "POT-Creation-Date: 2020-11-18 18:42 UTC\n" "PO-Revision-Date: 2020-03-03 22:26 UTC\n" "Last-Translator: Benoît Minisini \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 "Web application development" msgstr "" #: FHello.webform:14 msgid "This is a very important message" msgstr "" #: FHello.webform:18 msgid "" "

        Welcome to the gb.web.form component!

        \n" "

        This component aims at making web application as easy as making desktop applications.

        \n" "

        This goal is difficult to achieve, but I hope to succeed!

        " msgstr "" #: FHello.webform:34 FMessage.webform:50 msgid "OK" msgstr "OK" #: Message.class:33 msgid "Information" msgstr "Information" #: Message.class:45 Webform2.webform:170 msgid "Warning" msgstr "Avertissement" #: Message.class:51 msgid "Error" msgstr "Erreur" #: Message.class:57 msgid "Question" msgstr "Question" #: WebUploader.class:36 msgid "Abort" msgstr "Annuler" #: WebUploader.class:59 msgid "Upload file..." msgstr "Envoyer un fichier..." #: Webform1.webform:39 msgid "gb.web.form test" msgstr "" #: Webform1.webform:42 msgid "WebMenu1" msgstr "" #: Webform1.webform:45 msgid "WebMenu2" msgstr "" #: Webform1.webform:49 msgid "WebMenu3" msgstr "" #: Webform1.webform:54 msgid "WebMenu4" msgstr "" #: Webform1.webform:64 msgid "Header" msgstr "" #: Webform1.webform:85 msgid "Hello world!" msgstr "" #: Webform1.webform:89 msgid "Reset text" msgstr "" #: Webform1.webform:93 msgid "Change text" msgstr "" #: Webform1.webform:97 msgid "0" msgstr "" #: Webform1.webform:101 msgid "Border" msgstr "" #: Webform1.webform:105 msgid "Toggle enabled" msgstr "" #: Webform1.webform:131 msgid "Absolute !" msgstr "" #: Webform1.webform:143 msgid "B1" msgstr "" #: Webform1.webform:148 msgid "B5" msgstr "" #: Webform1.webform:153 msgid "B7" msgstr "" #: Webform1.webform:158 msgid "B6" msgstr "" #: Webform1.webform:163 msgid "B2" msgstr "" #: Webform1.webform:168 msgid "B3" msgstr "" #: Webform1.webform:173 msgid "B4" msgstr "" #: Webform1.webform:178 msgid "B8" msgstr "" #: Webform2.webform:67 msgid "This is webform2" msgstr "" #: Webform2.webform:73 msgid "File" msgstr "" #: Webform2.webform:76 msgid "New" msgstr "" #: Webform2.webform:82 msgid "Open" msgstr "" #: Webform2.webform:88 msgid "Project" msgstr "" #: Webform2.webform:91 msgid "Compile" msgstr "" #: Webform2.webform:97 msgid "Compile all" msgstr "" #: Webform2.webform:105 msgid "Translate" msgstr "" #: Webform2.webform:113 msgid "Teleport" msgstr "" #: Webform2.webform:121 msgid "Quit" msgstr "" #: Webform2.webform:160 msgid "A button" msgstr "" #: Webform2.webform:165 msgid "Add window" msgstr "" #: Webform2.webform:175 msgid "Toggle timer" msgstr "" #: Webform2.webform:180 msgid "Hidden" msgstr "" #: Webform2.webform:203 msgid "General" msgstr "" #: Webform2.webform:206 msgid "Hello !" msgstr "" #: Webform2.webform:210 msgid "Check and uncheck me!" msgstr "" #: Webform2.webform:217 Webform6.webform:17 msgid "Élément 1" msgstr "" #: Webform2.webform:217 Webform6.webform:17 msgid "Élément 2" msgstr "" #: Webform2.webform:217 Webform6.webform:17 msgid "Élément 3" msgstr "" #: Webform2.webform:217 msgid "Élément 4" msgstr "" #: Webform2.webform:248 msgid "New element" msgstr "" #: Webform2.webform:252 msgid "Clear" msgstr "" #: Webform2.webform:269 msgid "This is an expander container" msgstr "" #: Webform2.webform:278 msgid "Alpha" msgstr "" #: Webform2.webform:282 msgid "Beta" msgstr "" #: Webform2.webform:287 msgid "Gamma" msgstr "" #: Webform2.webform:291 msgid "Gambas Almost Means Basic!" msgstr "" #: Webform2.webform:300 msgid "Please enter some text:" msgstr "" #: Webform2.webform:319 msgid "Options" msgstr "" #: Webform2.webform:322 msgid "Test" msgstr "" #: Webform2.webform:325 msgid "Application state" msgstr "" #: Webform3.webform:24 msgid "Tab 1" msgstr "" #: Webform3.webform:27 msgid "Message" msgstr "" #: Webform3.webform:36 msgid "Tab 2" msgstr "" #: Webform4.webform:28 msgid "Select file" msgstr "" #: Webform4.webform:45 msgid "Show" msgstr "" #: Webform4.webform:49 msgid "Hide" msgstr "" #: Webform6.webform:30 msgid "Copy" msgstr "" #: Webform6.webform:34 msgid "Text" msgstr "" #: Webform7.webform:13 msgid "Name" msgstr "" #: Webform8.webform:10 msgid "Load Form" msgstr "" gambas-3.16.3/comp/src/gb.web.form/.lang/it.po000066400000000000000000000013731411575327000206550ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.form 3.12.90\n" "PO-Revision-Date: 2019-01-15 14:45 UTC\n" "Last-Translator: gian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:2 msgid "Web application GUI controls" msgstr "Controlli della GUI Web" #: FMessage.webform:50 msgid "OK" msgstr "-" #: Message.class:33 msgid "Information" msgstr "Informazione" #: Message.class:45 msgid "Warning" msgstr "Attenzione" #: Message.class:51 msgid "Error" msgstr "Errore" #: Message.class:57 msgid "Question" msgstr "Domanda" #: WebUploader.class:36 msgid "Abort" msgstr "Interruzione" #: WebUploader.class:59 msgid "Upload file..." msgstr "Carica file..." gambas-3.16.3/comp/src/gb.web.form/.lang/nl.po000066400000000000000000000111121411575327000206420ustar00rootroot00000000000000# Willy Raets < gbWilly@openmailbox.org >, 2017 #, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.form 3.10.90\n" "POT-Creation-Date: 2019-04-06 18:47 UTC\n" "PO-Revision-Date: 2017-08-26 19:52 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:2 msgid "Web application GUI controls" msgstr "Web applicatie GUI controls" #: FHello.webform:14 msgid "This is a very important message" msgstr "Dit is een heel belangrijke boodschap" #: FHello.webform:18 msgid "" "

        Welcome to the gb.web.form component!

        \n" "

        This component aims at making web application as easy as making desktop applications.

        \n" "

        This goal is difficult to achieve, but I hope to succeed!

        " msgstr "-" #: FHello.webform:34 FMessage.webform:50 msgid "OK" msgstr "-" #: Message.class:33 msgid "Information" msgstr "Informatie" #: Message.class:45 Webform2.webform:169 msgid "Warning" msgstr "Waarschuwing" #: Message.class:51 msgid "Error" msgstr "-" #: Message.class:57 msgid "Question" msgstr "Vraag" #: WebUploader.class:36 msgid "Abort" msgstr "Afbreken" #: WebUploader.class:59 msgid "Upload file..." msgstr "Upload bestand..." #: Webform1.webform:35 msgid "gb.web.form test" msgstr "-" #: Webform1.webform:44 msgid "Header" msgstr "Hoofding" #: Webform1.webform:65 msgid "Hello world!" msgstr "Hallo wereld !" #: Webform1.webform:69 msgid "Reset text" msgstr "Tekst resetten" #: Webform1.webform:73 msgid "Change text" msgstr "Wijzig tekst" #: Webform1.webform:77 msgid "0" msgstr "-" #: Webform1.webform:81 msgid "Border" msgstr "Rand" #: Webform1.webform:85 msgid "Toggle enabled" msgstr "-" #: Webform1.webform:111 msgid "Absolute !" msgstr "Absoluut !" #: Webform1.webform:123 msgid "B1" msgstr "-" #: Webform1.webform:128 msgid "B5" msgstr "-" #: Webform1.webform:133 msgid "B7" msgstr "-" #: Webform1.webform:138 msgid "B6" msgstr "-" #: Webform1.webform:143 msgid "B2" msgstr "-" #: Webform1.webform:148 msgid "B3" msgstr "-" #: Webform1.webform:153 msgid "B4" msgstr "-" #: Webform1.webform:158 msgid "B8" msgstr "-" #: Webform2.webform:67 msgid "This is webform2" msgstr "Dit is webformulier2" #: Webform2.webform:73 msgid "File" msgstr "Bestand" #: Webform2.webform:76 msgid "New" msgstr "Nieuw" #: Webform2.webform:82 msgid "Open" msgstr "Openen" #: Webform2.webform:88 msgid "Project" msgstr "-" #: Webform2.webform:91 msgid "Compile" msgstr "Compileer" #: Webform2.webform:97 msgid "Compile all" msgstr "Compileer alles" #: Webform2.webform:105 msgid "Translate" msgstr "Vertaal" #: Webform2.webform:113 msgid "Teleport" msgstr "Teleporteer" #: Webform2.webform:121 msgid "Quit" msgstr "Afsluiten" #: Webform2.webform:159 msgid "A button" msgstr "Een knop" #: Webform2.webform:164 msgid "Add window" msgstr "Venster toevoegen" #: Webform2.webform:174 msgid "Toggle timer" msgstr "-" #: Webform2.webform:179 msgid "Hidden" msgstr "Verborgen" #: Webform2.webform:202 msgid "General" msgstr "Algemeen" #: Webform2.webform:205 msgid "Hello !" msgstr "Hallo !" #: Webform2.webform:209 msgid "Check and uncheck me!" msgstr "Vink me aan, vink me uit!" #: Webform2.webform:216 Webform6.webform:17 msgid "Élément 1" msgstr "-" #: Webform2.webform:216 Webform6.webform:17 msgid "Élément 2" msgstr "-" #: Webform2.webform:216 Webform6.webform:17 msgid "Élément 3" msgstr "-" #: Webform2.webform:216 msgid "Élément 4" msgstr "-" #: Webform2.webform:247 msgid "New element" msgstr "Nieuw element" #: Webform2.webform:251 msgid "Clear" msgstr "Opschonen" #: Webform2.webform:268 msgid "This is an expander container" msgstr "Dit is een expander container" #: Webform2.webform:277 msgid "Alpha" msgstr "-" #: Webform2.webform:281 msgid "Beta" msgstr "-" #: Webform2.webform:286 msgid "Gamma" msgstr "-" #: Webform2.webform:290 msgid "Gambas Almost Means Basic!" msgstr "-" #: Webform2.webform:299 msgid "Please enter some text:" msgstr "Voer wat tekst in:" #: Webform2.webform:318 msgid "Options" msgstr "Opties" #: Webform2.webform:321 msgid "Test" msgstr "-" #: Webform2.webform:324 msgid "Application state" msgstr "Applicatie status" #: Webform3.webform:24 msgid "Tab 1" msgstr "-" #: Webform3.webform:27 msgid "Message" msgstr "Bericht" #: Webform3.webform:36 msgid "Tab 2" msgstr "-" #: Webform4.webform:28 msgid "Select file" msgstr "Selecteer bestand" #: Webform4.webform:45 msgid "Show" msgstr "Weergeven" #: Webform4.webform:49 msgid "Hide" msgstr "Verberg" #: Webform6.webform:30 msgid "Copy" msgstr "" #: Webform6.webform:34 msgid "Text" msgstr "" gambas-3.16.3/comp/src/gb.web.form/.lang/pt_BR.po000066400000000000000000000014421411575327000212440ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.form 3.14.90\n" "PO-Revision-Date: 2020-06-12 00:43 UTC\n" "Last-Translator: Gen Braga \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Web application development" msgstr "Desenvolvimento de aplicação web" # gb-ignore #: FMessage.webform:50 msgid "OK" msgstr "" #: Message.class:33 msgid "Information" msgstr "Informação" #: Message.class:45 msgid "Warning" msgstr "Atenção" #: Message.class:51 msgid "Error" msgstr "Erro" #: Message.class:57 msgid "Question" msgstr "Questão" #: WebUploader.class:36 msgid "Abort" msgstr "Abortar" #: WebUploader.class:59 msgid "Upload file..." msgstr "Upload de arquivo..." gambas-3.16.3/comp/src/gb.web.form/.lang/ru.po000066400000000000000000000220041411575327000206610ustar00rootroot00000000000000# 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" #: comp/src/gb.web.form/.project:19 msgid "Web application GUI controls" msgstr "Элементы управления графическим интерфейсом веб-приложения" #: comp/src/gb.web.form/.src/WebUploader.class:36 msgid "Abort" msgstr "Прервать" #: comp/src/gb.web.form/.src/WebUploader.class:59 msgid "Upload file..." msgstr "Выгрузить файл..." #: comp/src/gb.web.form/.src/Test/FHello.webform:8 msgid "This is a very important message" msgstr "Это очень важное сообщение" #: comp/src/gb.web.form/.src/Test/FHello.webform:12 msgid "" "

        Welcome to the gb.web.form component!

        \n" "

        This component aims at making web application as easy as making desktop applications.

        \n" "

        This goal is difficult to achieve, but I hope to succeed!

        " msgstr "" "

        Добро пожаловать в компонент gb.web.form!

        \n" "

        тот компонент нацелен на то, чтобы сделать веб-приложение таким же простым, как и настольные приложения.

        \n" "

        Эту цель трудно достичь, но я надеюсь добиться успеха!

        " #: comp/src/gb.web.form/.src/Test/FHello.webform:28 comp/src/gb.web.form/.src/Message/FMessage.webform:40 msgid "OK" msgstr "ОК" #: comp/src/gb.web.form/.src/Test/Webform1.webform:9 msgid "gb.web.form test" msgstr "тест gb.web.form" #: comp/src/gb.web.form/.src/Test/Webform1.webform:18 msgid "Header" msgstr "Заголовок" #: comp/src/gb.web.form/.src/Test/Webform1.webform:39 msgid "Hello world!" msgstr "Привет, мир!" #: comp/src/gb.web.form/.src/Test/Webform1.webform:43 msgid "Reset text" msgstr "Сбросить текст" #: comp/src/gb.web.form/.src/Test/Webform1.webform:47 msgid "Change text" msgstr "Изменить текст" #: comp/src/gb.web.form/.src/Test/Webform1.webform:51 msgid "0" msgstr "0" #: comp/src/gb.web.form/.src/Test/Webform1.webform:55 msgid "Border" msgstr "Граница" #: comp/src/gb.web.form/.src/Test/Webform1.webform:59 msgid "Toggle enabled" msgstr "Переключатель включен" #: comp/src/gb.web.form/.src/Test/Webform1.webform:85 msgid "Absolute !" msgstr "Абсолютно!" #: comp/src/gb.web.form/.src/Test/Webform1.webform:97 msgid "B1" msgstr "B1" #: comp/src/gb.web.form/.src/Test/Webform1.webform:102 msgid "B5" msgstr "B5" #: comp/src/gb.web.form/.src/Test/Webform1.webform:107 msgid "B7" msgstr "B7" #: comp/src/gb.web.form/.src/Test/Webform1.webform:112 msgid "B6" msgstr "B6" #: comp/src/gb.web.form/.src/Test/Webform1.webform:117 msgid "B2" msgstr "B2" #: comp/src/gb.web.form/.src/Test/Webform1.webform:122 msgid "B3" msgstr "B3" #: comp/src/gb.web.form/.src/Test/Webform1.webform:127 msgid "B4" msgstr "B4" #: comp/src/gb.web.form/.src/Test/Webform1.webform:132 msgid "B8" msgstr "B8" #: comp/src/gb.web.form/.src/Test/Webform2.webform:7 msgid "This is webform2" msgstr "Это веб_форма_2" #: comp/src/gb.web.form/.src/Test/Webform2.webform:13 msgid "File" msgstr "Файл" #: comp/src/gb.web.form/.src/Test/Webform2.webform:16 msgid "New" msgstr "Новый" #: comp/src/gb.web.form/.src/Test/Webform2.webform:22 msgid "Open" msgstr "Открыть" #: comp/src/gb.web.form/.src/Test/Webform2.webform:28 comp/src/gb.web.form/.src/Test/Webform2.webform:66 msgid "Project" msgstr "Проект" #: comp/src/gb.web.form/.src/Test/Webform2.webform:31 comp/src/gb.web.form/.src/Test/Webform2.webform:69 msgid "Compile" msgstr "Компилировать" #: comp/src/gb.web.form/.src/Test/Webform2.webform:37 comp/src/gb.web.form/.src/Test/Webform2.webform:75 msgid "Compile all" msgstr "Компилировать все" #: comp/src/gb.web.form/.src/Test/Webform2.webform:45 comp/src/gb.web.form/.src/Test/Webform2.webform:83 msgid "Translate" msgstr "Перевести" #: comp/src/gb.web.form/.src/Test/Webform2.webform:53 comp/src/gb.web.form/.src/Test/Webform2.webform:91 msgid "Teleport" msgstr "Телепорт" #: comp/src/gb.web.form/.src/Test/Webform2.webform:61 msgid "Quit" msgstr "Выход" #: comp/src/gb.web.form/.src/Test/Webform2.webform:99 msgid "A button" msgstr "Кнопка" #: comp/src/gb.web.form/.src/Test/Webform2.webform:104 msgid "Add window" msgstr "Добавить окно" #: comp/src/gb.web.form/.src/Test/Webform2.webform:109 comp/src/gb.web.form/.src/Message/Message.class:45 msgid "Warning" msgstr "Предупреждение" #: comp/src/gb.web.form/.src/Test/Webform2.webform:114 msgid "Toggle timer" msgstr "Переключить таймер" #: comp/src/gb.web.form/.src/Test/Webform2.webform:119 msgid "Hidden" msgstr "Скрытый" #: comp/src/gb.web.form/.src/Test/Webform2.webform:142 msgid "General" msgstr "Основное" #: comp/src/gb.web.form/.src/Test/Webform2.webform:145 msgid "Hello !" msgstr "Привет!" #: comp/src/gb.web.form/.src/Test/Webform2.webform:149 msgid "Check and uncheck me!" msgstr "Отметьте флажком и снимите его с меня!" #: comp/src/gb.web.form/.src/Test/Webform2.webform:156 comp/src/gb.web.form/.src/Test/Webform2.webform:182 comp/src/gb.web.form/.src/Test/Webform6.webform:10 msgid "Élément 1" msgstr "Элемент 1" #: comp/src/gb.web.form/.src/Test/Webform2.webform:156 comp/src/gb.web.form/.src/Test/Webform2.webform:182 comp/src/gb.web.form/.src/Test/Webform6.webform:10 msgid "Élément 2" msgstr "Элемент 2" #: comp/src/gb.web.form/.src/Test/Webform2.webform:156 comp/src/gb.web.form/.src/Test/Webform2.webform:182 comp/src/gb.web.form/.src/Test/Webform6.webform:10 msgid "Élément 3" msgstr "Элемент 3" #: comp/src/gb.web.form/.src/Test/Webform2.webform:156 comp/src/gb.web.form/.src/Test/Webform2.webform:182 msgid "Élément 4" msgstr "Элемент 4" #: comp/src/gb.web.form/.src/Test/Webform2.webform:187 msgid "New element" msgstr "Новый элемент" #: comp/src/gb.web.form/.src/Test/Webform2.webform:191 msgid "Clear" msgstr "Очистить" #: comp/src/gb.web.form/.src/Test/Webform2.webform:208 msgid "This is an expander container" msgstr "Это контейнер-расширитель" #: comp/src/gb.web.form/.src/Test/Webform2.webform:217 msgid "Alpha" msgstr "Альфа" #: comp/src/gb.web.form/.src/Test/Webform2.webform:221 msgid "Beta" msgstr "Бета" #: comp/src/gb.web.form/.src/Test/Webform2.webform:226 msgid "Gamma" msgstr "Гамма" #: comp/src/gb.web.form/.src/Test/Webform2.webform:230 msgid "Gambas Almost Means Basic!" msgstr "Gambas почти что Basic!" #: comp/src/gb.web.form/.src/Test/Webform2.webform:239 msgid "Please enter some text:" msgstr "Пожалуйста, введите текст:" #: comp/src/gb.web.form/.src/Test/Webform2.webform:258 msgid "Options" msgstr "Опции" #: comp/src/gb.web.form/.src/Test/Webform2.webform:261 msgid "Test" msgstr "Тест" #: comp/src/gb.web.form/.src/Test/Webform2.webform:264 msgid "Application state" msgstr "Состояние приложения" #: comp/src/gb.web.form/.src/Test/Webform3.webform:18 msgid "Tab 1" msgstr "Вкладка 1" #: comp/src/gb.web.form/.src/Test/Webform3.webform:21 msgid "Message" msgstr "Сообщение" #: comp/src/gb.web.form/.src/Test/Webform3.webform:30 msgid "Tab 2" msgstr "Вкладка 2" #: comp/src/gb.web.form/.src/Test/Webform4.webform:17 msgid "Select file" msgstr "Выбрать файл" #: comp/src/gb.web.form/.src/Test/Webform4.webform:34 msgid "Show" msgstr "Показать" #: comp/src/gb.web.form/.src/Test/Webform4.webform:38 msgid "Hide" msgstr "Скрыть" #: comp/src/gb.web.form/.src/Test/Webform6.webform:23 msgid "Copy" msgstr "Копировать" #: comp/src/gb.web.form/.src/Test/Webform6.webform:27 msgid "Text" msgstr "Текст" #: comp/src/gb.web.form/.src/Message/Message.class:33 msgid "Information" msgstr "Информация" #: comp/src/gb.web.form/.src/Message/Message.class:51 msgid "Error" msgstr "Ошибка" #: comp/src/gb.web.form/.src/Message/Message.class:57 msgid "Question" msgstr "Вопрос" gambas-3.16.3/comp/src/gb.web.form/.lang/zh.po000066400000000000000000000106341411575327000206620ustar00rootroot00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: gb.web.form 3.15.90\n" "POT-Creation-Date: 2020-11-18 18:42 UTC\n" "PO-Revision-Date: 2020-11-18 18:43 UTC\n" "Last-Translator: Benoît Minisini \n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: .project:1 msgid "Web application development" msgstr "Web应用程序开发" #: FHello.webform:14 msgid "This is a very important message" msgstr "" #: FHello.webform:18 msgid "" "

        Welcome to the gb.web.form component!

        \n" "

        This component aims at making web application as easy as making desktop applications.

        \n" "

        This goal is difficult to achieve, but I hope to succeed!

        " msgstr "" #: FHello.webform:34 FMessage.webform:50 msgid "OK" msgstr "确定" #: Message.class:33 msgid "Information" msgstr "信息" #: Message.class:45 Webform2.webform:170 msgid "Warning" msgstr "警告" #: Message.class:51 msgid "Error" msgstr "错误" #: Message.class:57 msgid "Question" msgstr "问题" #: WebUploader.class:36 msgid "Abort" msgstr "中断" #: WebUploader.class:59 msgid "Upload file..." msgstr "上传文件..." #: Webform1.webform:39 msgid "gb.web.form test" msgstr "" #: Webform1.webform:42 msgid "WebMenu1" msgstr "" #: Webform1.webform:45 msgid "WebMenu2" msgstr "" #: Webform1.webform:49 msgid "WebMenu3" msgstr "" #: Webform1.webform:54 msgid "WebMenu4" msgstr "" #: Webform1.webform:64 msgid "Header" msgstr "" #: Webform1.webform:85 msgid "Hello world!" msgstr "" #: Webform1.webform:89 msgid "Reset text" msgstr "" #: Webform1.webform:93 msgid "Change text" msgstr "" #: Webform1.webform:97 msgid "0" msgstr "" #: Webform1.webform:101 msgid "Border" msgstr "" #: Webform1.webform:105 msgid "Toggle enabled" msgstr "" #: Webform1.webform:131 msgid "Absolute !" msgstr "" #: Webform1.webform:143 msgid "B1" msgstr "" #: Webform1.webform:148 msgid "B5" msgstr "" #: Webform1.webform:153 msgid "B7" msgstr "" #: Webform1.webform:158 msgid "B6" msgstr "" #: Webform1.webform:163 msgid "B2" msgstr "" #: Webform1.webform:168 msgid "B3" msgstr "" #: Webform1.webform:173 msgid "B4" msgstr "" #: Webform1.webform:178 msgid "B8" msgstr "" #: Webform2.webform:67 msgid "This is webform2" msgstr "" #: Webform2.webform:73 msgid "File" msgstr "" #: Webform2.webform:76 msgid "New" msgstr "" #: Webform2.webform:82 msgid "Open" msgstr "" #: Webform2.webform:88 msgid "Project" msgstr "" #: Webform2.webform:91 msgid "Compile" msgstr "" #: Webform2.webform:97 msgid "Compile all" msgstr "" #: Webform2.webform:105 msgid "Translate" msgstr "" #: Webform2.webform:113 msgid "Teleport" msgstr "" #: Webform2.webform:121 msgid "Quit" msgstr "" #: Webform2.webform:160 msgid "A button" msgstr "" #: Webform2.webform:165 msgid "Add window" msgstr "" #: Webform2.webform:175 msgid "Toggle timer" msgstr "" #: Webform2.webform:180 msgid "Hidden" msgstr "" #: Webform2.webform:203 msgid "General" msgstr "" #: Webform2.webform:206 msgid "Hello !" msgstr "" #: Webform2.webform:210 msgid "Check and uncheck me!" msgstr "" #: Webform2.webform:217 Webform6.webform:17 msgid "Élément 1" msgstr "" #: Webform2.webform:217 Webform6.webform:17 msgid "Élément 2" msgstr "" #: Webform2.webform:217 Webform6.webform:17 msgid "Élément 3" msgstr "" #: Webform2.webform:217 msgid "Élément 4" msgstr "" #: Webform2.webform:248 msgid "New element" msgstr "" #: Webform2.webform:252 msgid "Clear" msgstr "" #: Webform2.webform:269 msgid "This is an expander container" msgstr "" #: Webform2.webform:278 msgid "Alpha" msgstr "" #: Webform2.webform:282 msgid "Beta" msgstr "" #: Webform2.webform:287 msgid "Gamma" msgstr "" #: Webform2.webform:291 msgid "Gambas Almost Means Basic!" msgstr "" #: Webform2.webform:300 msgid "Please enter some text:" msgstr "" #: Webform2.webform:319 msgid "Options" msgstr "" #: Webform2.webform:322 msgid "Test" msgstr "" #: Webform2.webform:325 msgid "Application state" msgstr "" #: Webform3.webform:24 msgid "Tab 1" msgstr "" #: Webform3.webform:27 msgid "Message" msgstr "" #: Webform3.webform:36 msgid "Tab 2" msgstr "" #: Webform4.webform:28 msgid "Select file" msgstr "" #: Webform4.webform:45 msgid "Show" msgstr "" #: Webform4.webform:49 msgid "Hide" msgstr "" #: Webform6.webform:30 msgid "Copy" msgstr "" #: Webform6.webform:34 msgid "Text" msgstr "" #: Webform7.webform:13 msgid "Name" msgstr "" #: Webform8.webform:10 msgid "Load Form" msgstr "" gambas-3.16.3/comp/src/gb.web.form/.project000066400000000000000000000006011411575327000203420ustar00rootroot00000000000000# Gambas Project File 3.0 Title=Web application development Startup=Webform1 UseHttpServer=1 Version=3.15.90 VersionFile=1 Component=gb.util Component=gb.util.web Component=gb.web Authors="Benoît Minisini" Environment="GB_PCODE_VERSION=3.8" TabSize=2 Translate=1 Language=en_US RunAfter=cp $(FILE) /home/guygle/guygle/cgi-bin/test Type=Component Packager=1 DoNotTranslate=".src/Test" gambas-3.16.3/comp/src/gb.web.form/.public/000077500000000000000000000000001411575327000202325ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.public/favicon.png000066400000000000000000000375611411575327000224010ustar00rootroot00000000000000PNG  IHDR\rf?8IDATxwT?elm*D ]cL31vpKFIc v^v}g H23wΝya̹3})oX4w @3tIx4kR!E2 s!@?7mUmZ@VBTRV  h6JAw4=Wؤ;>BO .K2S"ҁt A2ӄ̗< m؜PS֡Sm}O0I m ڞ؁D+ f!MVk bHpqBr*)@j]6"RkkM.NS-7c?#SJwй@YzEHJ7V~~OjE^T_'L~|8z W.=賴wӱ Aۇ kD^L@S)Ё<7^PZPO2>>$^莫$J` M+t\"rM}rGjA=Yۑz \N O&_J~#@X췧':t nZOoD%^Iy<@@2R43{+`z,p xO_RT $,&)}Bp>ffJSɳ[˃~ȝ S} 6o= sx9=ՉGb{@tNS"|]}Wj-%(1 X7.ݹxfu3('!R|ZEOFd{qj%G{VMUkؤe Q[~ PbϜf*OHuKTk񖀝Ee+ z!H?'jja@{"eD;.T'ZcgT+3Jr>&baquM վPO(P23{ Z,,ڡH9yU q12@?Z:C"(!$Q&(%2KCC`hmQȡ, J4%뉦*IdI% 느l)آIEJDEF FA"¢ۂ!m[J޲lAoBonczm)ΪB\=ĕ0ﰟ7}(y-0a"-d,vN>4 c MdFF2~qHHLЀ!h~Ps.e;qQgnٯ:LJDNl<| 1=]JZ'ځKffi""NL ɼM3r/_ |D(_LX|Ŧvs{l*SBRњj ]Kx7wY,\Yp`]7JDq0,T5:TKӈW@NY&8xR{"mb)qFo6Vskm6¢D_Gfbln)? 8XgQW(bc8eu:[VfK#3UK9`=5u5WG6p;iqF*1a#S-M a.K *C @CYiaXtۭiVWw # B#yu2硍bhG9#\vav4o1Fk7V 7j]4GoW-}O$vƿ^Ռ~Ù}0(qe=SE.g M>P{k Tӈ=lQ^%qbV&nj?N 13&",#6^</3 \bT^2W竖1"$/}OXLs>3 A/F xӍ‡sq{+/ŷ' W&.yqua@ɬ[0&ķ3>Go٩3ӭ #0.0>^[G Dpk~`_5V'S a& :_*Fp CF|$qDDDHPAU?`Sa {)mŅS 7ێt\ _vB|z}.D4+%Fj SJ]{nUbd@qDNɌ#vT79xwun*fKaݦM6%8㺃-:k]G2OuJ_BK< \M_^g DKq\>>KkyuY>Zo8T"O_zڌ4XDջwlfs۔Ou&_ݾ= Jt1jK؀s\7i QaOK Zm?gT&agQͳ|*N*=!ant̘x ?t\6>ߟ5W@y ~&vy1ХoWS-+§34VeB2GIL(u s>N_2cr:6)4Q\/D޺$\4˛2Wf}_7?@ nJ9޽{[*q-H?3k9kv2Ӣlцb^5o '~+~goe#׾ŻN3qZFYӻӗ@N!W$8m4!q z4wm!}%cbl۝ {vSR9[ڧz3.`QSMlxQ?ʽ 1sc2 Ї'293趰&VBv7׏-NR%%,f|5$'R{5'yd$Ǩ9[4j v1?J:!6ʕSܛݿpIia\}s6;-|EJ6&̵XF腞t4ϐ]+&v:\>|&,Vpً dIm4)v? ~{z"n3JaX0OM3&}rfMNɌ3D|LϷsۛk`!˃ եpMwU# )n9M%$~hs̨eE^k/9+$J6^As; 4Mp`J`g%g5 \Y.Iҍ%{hV sXA]Ky} [ /ig;Bpl*_!U\r^[t=3pڥ!o3z`f0}BqH+* v4q-QI@} __CnD.N @$t/%'vF_W-BNid$j}33L+?⼝r qGlcuQ3ɲ{}"YU@ɂXd{1`e^%WǿA]S0}g ӳ.!G%ÒaTrNxu>?l(=`'񑜜ޑ pẼ&`O)sXLHքW/u~3%="Kt_&åsx{վN.)yk>x{N{Rd]^Z̃o؛`0{9 SHg ەos')Ȫz,8+هå;xoM!OH̸T"SO%I *ne|"}u6&.ޛ-JQbJS^S |3(= F,~Kv O @=;]K`~P;8aP QO`ե&*uWū=5sd/z?gOKh/8]`sI៼53^>‚irxՇ*ChU ?&l,fq]/^_ r\@;/kpB;NAU`&F)5^]%%`]!_oO 3x?j"&U㬕JgޖʈdT8uV͎|V_J/9k}dH֣ @4M~{,7 C Sc[+Aq|TKj{F~sקN$LXZNq|!9ϟsJzCdw?9#V[}d,Vf, 8wo'p@7Dx~JƤ#5,` :!QǐaY{*U)Qa5tp)`[wI>i6HC56;>ZBt1],!jhܫOH#:<'c0י]G @(j|}3Dq)mΫ6S,m}Ppwj80߃ 8$ 3~95>>1$Ljn'g=llOB=6G|]LoľJ#~ҏNz{m 0Cr:l.NR1Xi\j(we5 M!6|4Aڏ^ {LZIآqrҡ?6RSS+*=̚}U2Qd68 ӗ!#Ǹ]JS[tL2$H'9Ht7ʆV8Y0Ju' @>1X0M8-}0ϕSyQ4u3T] Bz/^b7WML8-lwh>jG}\sbF3㤁8i ̯dca (jb#6"p2#ڏIFz5`&` QzOBY|U"x*ѽFpH閈aіU,'r|R\Jhz&Z_ĺj2|ΚU|fFHIr.4l w9J|:E|GUkv'[z]A@cGEI|\˺MAU#>%6)ORPŢs&e"ޟu gS;yƂmeGXe|]ELz= IM57ׁvg.n*ET˰pXjGi~3q}t)y-,}@Y?jSF4?kI!4frE`w꒻]χ>٦~ކ^U>;9]E Be`ƷDtORSU).e=hYvtD}x^\b>COh#ºf'X71 PR9F}?'D9 qŋMNk*.q:U aKhzSP_]ͅc!&}yk ~%NA h'Q T 0$mlqnGyKu7W孕LpSMBPzw񖘦jp~?\91Ƨݿ!ڽ1o]C8]*3Ebk O8%+u3E.%Y[%VFld0wpf%z]ֱ`NKVH2#I_x0QaADC7mvR  _}UV̴P:3Z1<;zj%f1IB );)jGfaab2#17wi1T~`YXP.t*/ޢ-u>SLka M..sp z`.HUr$e"V,,LEcڒp[4;qzP%2$G @oTOҢ>S+ELma .t< @gn6`EO ?VkՊЄ>+?1N,,L̸裪DMgBThf+uoaWz]f4Jka !*,sGUUT@Vh'`t0fqɄ]UL*4M>I|ܸE;\1!UVQζU8əq%ˑڤSӜ5yxDSZXN>cM5HҞ+lʽihHd9,ۡT@dJy6E{0yP)e2 Жq/e'E$&"$Z7=~[XxU'||^ r,2)t"caa.mל{Hxp4 (H>sSP &4 ̿G i}kTKlNښm;n%.XXφ`⥤`j[<\p d mS:q߉j<|6B[D+8cF$u۲{jHM@t(70 8sؖ=߫j*,-`axF%}ڈ@i5`V\E6"N4W]"'ķ.5C5ÙP `5YK &g1a`tm|Zqvc[X ٝw}Z*:ciksƤMˮP HjQɏ2VzDxl ,Ȥ(~{fvkn`d?)=G:K!}pR 42#y-49\tX&2uH.ĠJk媥q2";m#h1Ǿt+g0.&gH -6@AX_ļu |TX0NIﲝhmdxiq7D&Vȯ @hP~6ۣ@SW=$PAӦOTЃh=xV2`JW=GzTW4v||CyTL= M{80Р.#%x%5^+!sKGґ,CJ:}4 \0:wV OЄ`>0(9)=Xm̫T=T.IGkV-vV XsssNH@mr'ub`7Ό"^[ozHMctr0qP4b}y|H̽gqmyժ%47;`/-BLYt -pРWʼJ-dWz$6'e&g2~`qUnb2_anAr.Ig {QC|{÷]:5Bv&IP=@6p1AəqLΌO7.z*dG2:9Q)ҏ}Zyftpn9սxUk'|;5.G\-Y 6IT`:.៧B{~]gqYl)-%|=hB006 }ҏQQL"2ĸ鼻l)Wc7̭lm&;^GCSL!oX&zY1B}U5 !^R^YL  ȫQ/bPlO%KXX6Vf&H #>H"Ɉdf[\KUy<8Ãyan*ՒĿjҥH|W2+s706=urC 4qxv0㤶[]h @= h*Zqޯam1DBbTaD/pRVZu<{9CݞY},NCJu=Y,';j3DS~rvb;lE6-T4 .\ʼn<% "FM#$H#,H#5[e5 A =_v 4L)F9|[t̾Fnxm ED=cɃj7VQTK> s ͞ 7?MS}Ċ[tΖZ*kw Ofbvs) Ws6ܳ3KGo6lR+ |na +*5T6(/.MFJt-i| ]g Rf~g<>3:z* Ѽ<>܌Ӥ0\4½RRR;GGHܞ?]*/|oI1{9.]W;xz.~~D'/V/hsm[mȮy!gps{o {4S 歕TK&r+lu_?ZqM\M75 -=+=2vq+YZNܨ7R/s&;-Z` vggȵpc#z#7p++Myw$q!ߕc qHI4D{X\y}=2F sdqjtwz S vri6Q,{؄+Ƹ)Yi޾PX<{ϧp wPBlȰa&rhWV oͤtPo%D>x::;i4.%r6k .g -Qi{ܙ ɇ) cg5]*[2ΏU7G[0Doۀ}̜.VʷoEav .vHxlOc_T~{4O .}avtf kƹ\o[̓xXno;IQd\i~O749ƭ&6!xdﺐl͛p0rY$'wI81z4GжS2m6=Fy 91wmi:iJ)MT}ͪ%wq=>pYٹ!Ytk)dEtzӔ vqym`'.)-TZR-3K: 5.|oY@ŝge: wqK+X_PZN8cHyIGU\aCMnX|%5տ?=%CRK^EuS|Ĩ0'U-T8u܍,˭ӓ}y ]V'uTu+TK| qN)tY~J41å'[xV]@_l),>[@WPN_3&3Noig vؐ ;5$o={# }Sڏ/C`z|}?_CNyj9^77o>KWUobCRI/w1,w̌Co GcU i /0b:7ҼS16"7n:N96R|)})srlD߆iG+3gzmsbQ39m8q$Zxg>+4U.oī7N5o_HG:x%IsN;ZɣОF @G{{6 UbӘ>1ۦdLmp%{"*7mjl&0q`LǍ~??j4&s ˨bx){Rk&#;iŽK Ҹ44lfbkI-_l)M%!6_=)-TGqu|y_jyx _qqi i4N͎s;oqIm/MYx×U㘒aG)ytx9yv_CɳR` ?L\FaوNΈU^w_e#s+X[ʼ^)2$^;u"~3BL %O(~"CO7TPI6|Zfwy0yv @@Ƈ .p ~=UcdGµH94y̟XZfw ivt_cB]uk$b@tb/-8&[N:wnk@h 73C<_ˁ,{nZQ%¤\:.#߯7VS4zty@)''< G-byL܂VI/O◧gN)[iX&?lS-[*S;T P~L?] m 8ťeY(&Ħ%fIPu::;W9rP4+*|ǃ/xOL, E$ +26U2K6IU 1(uD$U|"NW-Ϝӗ!:WMU%)oOoBDdV]wh|F\1Y, ?`_ōu4}M#=ɳsS-2ų2)CqjY̜1 G6rC@\3Ed>*$,.z(#*x8UK1 εq,4E2pZ+\4igV1̈g#IsrgѮ6:xf/KxčY(!I=fW#$pw\g6ų2gA[D yZOlf>2m. }U0~o@p9nc[&鍌yQkTZ&39W(uc ڢ_2>gxױD .f1H-UB.KYZ;(get0k_I$ӥ;^hOgv2qhH(d8b7E,"5y{=wj%~j\EH6bYEEdR01/ eR!}IsrP-ߘ'JItEDQ}y(agf K2E"opZH)톗d"F!_q=ŨCAПRb)!2$ZI%l4C:.+ `"D:A.QG4uSC4uRd.AR]c{rTkQI7(g%tM%sU- X 3XhU6+hŒ 4cƨc b)qG۽XS, r:a!hclT/>_`7)gN.73T"J7ߚwC{Hq5XVhR%qNfb t FK%?6MhٯZL bP<3k"~;R+`Z@|*5R=k!fB+%Ld^BZl {~jA=DlAut!8 -F4^QSX쳧%B.@s5Z$`>{{UeX'&VOAskQWhW:T MX@1fЙ"$"B7'! p'=\ތeLF==,\c@F&fXX- ~~DX A%μR #> D&t HR,kO )IA}Swg9pf ݖ#5)"^B<8q@ ȈO(ڎ'1?b=\ &@ ʅ.+@; m+{J -'chTIENDB`gambas-3.16.3/comp/src/gb.web.form/.public/gw-arrow-down.png000066400000000000000000000002041411575327000234460ustar00rootroot00000000000000PNG  IHDR7KIDAT(л DW  a5v7oDp2ztd8D:׃\J"^)UIENDB`gambas-3.16.3/comp/src/gb.web.form/.public/gw-arrow-left.png000066400000000000000000000001651411575327000234370ustar00rootroot00000000000000PNG  IHDR7 ᗾ F8 /ХHs?^+HRrE,@;IENDB`gambas-3.16.3/comp/src/gb.web.form/.public/gw-arrow-right.png000066400000000000000000000001621411575327000236170ustar00rootroot00000000000000PNG  IHDR79IDAT(c`+8pA s .S"p*J^0g `" $P41qUIENDB`gambas-3.16.3/comp/src/gb.web.form/.public/gw-arrow-up.png000066400000000000000000000002021411575327000231210ustar00rootroot00000000000000PNG  IHDR7IIDAT(͐ z  :`&NډвQ('-T*N$tЎi2ҍ`^0GOIENDB`gambas-3.16.3/comp/src/gb.web.form/.public/gw-close.png000066400000000000000000000007361411575327000224660ustar00rootroot00000000000000PNG  IHDR@@`UIDAThMr@F_\խ\,ɁBcy $[dN*FzVg͕ ,tR[3N?}siPM::!fF3RfG0wX#rlw7uA$a.ǒQbXë`d@0ScRd+B BJ\gv4A ; vr}#r~d^hy?4p3 &>bG̑s9y֋*R!! , 2 diֲXDQHbRUEɴ]:^f_Q#cJ! , 7 di$q]biمah㢶m] a.M$4_-66ˠR! , / diDQr%R 5p Ěq^-4CY! , / diDQr%R 5p Ěq^-4CY;gambas-3.16.3/comp/src/gb.web.form/.public/gw-waiting.gif000066400000000000000000000154701411575327000230050ustar00rootroot00000000000000GIF89a@@DBD$"$dbdTRT424Դtrt LJL,*,ljl\Z\<:<ܼ|z|DFD$&$dfdTVT464Դ  LNL,.,lnl\^\<><|~|! NETSCAPE2.0! =,@@pH,Ȥrl:ШtJZجvzpj4;8bxȀRb$xv {E,2m_szG `'tD/)[u|* 3]-(E6\'7+,Z,D;%:Wť4X ܊5U;"/ÞL;)V#.G0lMQ!)Mu1CR*@ڐ!%6r"oI=C#qB2QRΊGXhC wp B$C(z`hFK+6F)aH u. MP. r򎁫 5Bc% e2P-$)P(O0D"3 ݃r`1 N: XK$Rh "{ZB13fH%y`*6^Hʡn;\5z4G\s+ I1WugqqyT(fgڑ&I@,hpUpY!`!SX=p3yBXwdXĆ%W4d^PB G&Jj_PF)TViXf\ ! @,@@DBD$"$dbdTRT424trt LJL,*,ljl\Z\<:<|z|DFD$&$dfdTVT464tvt  LNL,.,lnl\^\<><|~|@?6?"5>'/(*@>4 70& ? <5ʐӑ-ּ3ُ<.% (/* 8x'#  ka( u Y @E?S/8ؓX X%YXiW9+~C^*Z.ŭB A`~RhGr>: (wPT: UJ*8E?4xZ76 `ЅHu[D5*l fD4jaM+$PlP ^ʑxC5Z)5 D:s3;11~s Rй^pvv Ҍԫ-& o+pFvU 4PYXJs=o9TҚ3kI"i |50hH5"xCy`TMWumwMx@\B*Nrt0b#z#! ' @7C/XV  yCuy1򃈼wxY r"" @FB~5Y@)I $E(  =0(!<fc= i63<#?րj#'p$1gKtJ,%/z2ÕVkm"! 7,@@DBDdbd$&$TRTtrt464LJL\Z\|z|  ljl,.,DFD줦TVTtvt<>Iy M:!$QHU2"Yƈ#A! ?,@@DBDdbd$"$TRTtrt424 LJLljl\Z\|z|<:<,*,DFDdfdTVTtvt464  LNLlnl\^\|~|<><,.,pH,Ȥrl:ШtJc;H`f rn / n5$75-)C.x+|G;<=2 %"YB '8;-,' u8>7n ra11f6/#5ZaN^*sVA`™.|T6q-uB f8 F#fT¨Q,pBv6ib>XNdSޒrAISB`&;TMTn99l8%c Ҥ4S6*0 ?h3`1^ФK Iv(F hmu VT.2A;p 1J,х1'P-(a3vD`pK?n&",6FxIax ‡Tp =Q8VaZ#TP xp #| @# ` %T`H;\VQ&Yf&*CH@T(Hx! :,@@DBD$"$dbd424trtTRT <:<|z|LJL,*,ljl\Z\䬪464tvtTVT  <><|~|LNL,.,lnl@pH,Ȥrl:ШtJZجvzH[dFN )Pc'b<54]5y +/H2Y4"v3G21W -&wY38y+ BT/1w W/%yU-9!65 ŝP( +pEeS'L4Q/ O(9O4-H@jNI5 \Pv j\Bb6&XXTұJ$4p0B(Ξ@oCѣHYʴӧPJJɅXj݊3Š1A F^+6BсhA`ɀ]i\Xa W+BaaIn`g}((gGyH̄T ¡@c O4$DOkL@qx kJeh<^a(ց/tNʞs<0! " OD%<} >_!: y%(yqgd`@,dU  #0o($h(D! ?,@@DBD$"$dbd䤢TRT424trt LJL,*,ljl쬪\Z\<:<|z|DFD$&$dfd䤦TVT464tvt  LNL,.,lnl쬮\^\<><|~|pH,Ȥrl:ШtJZجvzس>F(ZcgODe'X*L=>7Z-7" /M- F6 R=*50/ %3U ^ Z- "f U`"ρHlT `"BALt`c$8LrF 3̙E 8QJ ptb r6 3U'"4J '1hL$bb"L9HPZ8ghJn8CyVH5C~xI Q4bcFRL c0<pH,Ȥrl:ШtJZجvzȣMP9,Xqp#H;zx)q=<"+1:,z ) 3#44/1 %;+,3)E< V"KK<.3W%Y,5TyX<(zW<0QV<9BáҚ4C2,P 1b $l N$<±Ʊ$\7m ?:OlTHCNvpSR2a"ׯ r$ `B# Ҋ o(DFʕRTw C*%w5C,pxN;8&."Ȳsc󼐫8ODⰙ3\O*0y>K!T[l+*v"bfFxL0MKQ!hЁG3x]5_]=/7  ɱ!Qvbt`sy rt@ .`" A P8Bm!&a^$@-h8<|~|@?)6>% /?* "1' 342;-6  ҟ!70 7?# *&4),' $?67 !|X౎>l~<(AbNPVG?$Wы҉ F#$jYtڌI hk¤(JX AɆ2TF F=⭽L҃jP6DzBBFFD*9d?LC:i2˓`,hG5nT*& jE?::i+-^HPFX!9VI$?Oh. ICE2HհpY# \H8"8N0 (>L  P \#?#PC4# 9k |È/t}2X 1 ( А-2t0bD"ԂGvC@Cyn %W w#3 ̩72rC e 1 p j뭸뮼믢;gambas-3.16.3/comp/src/gb.web.form/.public/message/000077500000000000000000000000001411575327000216565ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.public/message/close.svg000066400000000000000000000103361411575327000235070ustar00rootroot00000000000000 image/svg+xml gambas-3.16.3/comp/src/gb.web.form/.public/message/error.png000066400000000000000000000022251411575327000235160ustar00rootroot00000000000000PNG  IHDR00` PLTEUU9U8R6PI[;NDTII@`@U9RDUOO+ACRDTDSESDSDSDSDSASDSDSDTDRFPETDSDSESGUDSDSCUDSDSESBQDSFQENDSDS@TBXDSCVESBQFQDSDSDSDSDSCRDRDSDUCQESafETDU,/DRDSCSDTDS@SESDTDUDSDSETDUDTDTETCSDTETDUDSDUETDUDTDSDTDTDUDTDTDUDRDTDSDTDRDTDTDSDSETDSFPDS@MESFTDSESBUDSDSDSDQJUCXFPCXFQDSDQESBRETDSES@RETCSDSDS2tRNS'Sxģ :I&,ݠ(+ZDY]Aeqvhmrcv^a(rZ^&Rahi^rwviwtoQ&C?')%;H&w#1IDATHǕi_@EAXj8!Tn) rˡ\EA@r*k4S&$_yvvw6U|_pŊ ǐi_R4ZE> h'PPQ6Rؓ܀US Dzy5Mx!()5;[Gl$3W{Hu%RnW57`tˇhH_& 0nE4xKGtswFM`0NDxO 9ENG8,DQ,Q%?-8!_F}~  O.#H(~L'3g\oɤVuZ]^r#OcL}k4`;~l/ ͖dQIN=j+'U-z17'CS+#kYlʆ};^=`˶{ho m2WGE6ry:<P{^gs+ș(pTeEIENDB`gambas-3.16.3/comp/src/gb.web.form/.public/message/info.png000066400000000000000000000014741411575327000233250ustar00rootroot00000000000000PNG  IHDR00 1 IDATXõMLA3-FHZFc,ҋ1i"WM`O'b-Q#Ƽ]tO'7RLBsrC?c+-Ow_>֖*-ykRMupSуlGu^0\ k]$"1Ph  pǎ|@\Z@.9|0d{zʰ0>^R 80` `ZQ<"=dṋh%=Y󠞀 7yRE7ߥpЈ^p@bYe0on]?G@G1V{m]]P^:N 04g^<ځټ܎ c|(Ȝ%Fp> ZDpI'4Dt41rOU}3Nmgɡ4N%mC~_8xdXse81EMt' שYs]z-h160;`MjV0 [} i aWX@K_'by5 IENDB`gambas-3.16.3/comp/src/gb.web.form/.public/message/question.png000066400000000000000000000022451411575327000242360ustar00rootroot00000000000000PNG  IHDR00` PLTEX3tRNS,5D+UÒT ba vu*)KQe\H 'pY6s3ք~}׻1|ƒif:һ=[&F%;-c:@r0qd$,w^{Ԕ.o  IDATHǕ[A_(EM )(j^BH-H0#-ETBTjjf/vPw|γ33 HW7g JL$'SyEBtb% *xM_DKQ2_J ׮ n7xBSDͷnߑZZڹc ?ن/u~ɛ]lȗ{5?S.ycyϞAAUyI! Qs=#4W1=N7 ;V;AɈ2xy(?EaYϡo݈HI2/7J!3>xBBLI_EA ʷĶPv/(O+_D(;YW1Zr|}BoFڑd/յ…8\aU7ؕX۪_?eZO  bxDly aJ3T-82.eGIENDB`gambas-3.16.3/comp/src/gb.web.form/.public/message/warning.png000066400000000000000000000011141411575327000240260ustar00rootroot00000000000000PNG  IHDR00` PLTE߿@׳LٵMܹQصMصMյJصOصNڴKصMصM׵OضNشMٶMصJUصMصM@ضNصNرNصMصMݻUضM׵M׷PصMصM۶IصM׶OֶMصMٷQصMطN׵M׷PٴN״KصMMضMضM׶OصMU-3tRNSyx)-IHih  #8<UYX ƪM\Ei,IDATHR0ᶂTZPOͦ4N ua.i80H;^P!W@: Pڀ{?=w`x:x)9/MfP6/j\x\{ _xk?  ӥF `4p` am0j4h!a@+  l0T4qdc7`vo[o;P` HxA #{w21 0Eџf6 IENDB`gambas-3.16.3/comp/src/gb.web.form/.public/new.png000066400000000000000000000011401411575327000215250ustar00rootroot00000000000000PNG  IHDR(-SDPLTEmaX}Nv@f˿½뾾鹹緷憨# xws lsrcpuurkdZZ^^[VPV{NuU{ECSzFm+*EmAf:b=4 tRNS*$IDATc``!&f0QV6HJIsdd@^AQ$ jj M-m À.H ML!$`h6v {Gprvquswf`o_?@ e`Ĥx>I(HMKʟ Y U*N `IENDB`gambas-3.16.3/comp/src/gb.web.form/.public/open.png000066400000000000000000000014611411575327000217030ustar00rootroot00000000000000PNG  IHDR(-SPLTEU W"S_+\%S`*{sf3rpa{QnMkLjFa~Idec/w{b.r|axwc.ɣa/kqZqe/h8T ](xVxV"oQ}|yx≝ߖΖΗΗϖϓܑ͒̇ʑˏʍɋLjƅŃńیNjƈņĄÁ~{xws~|ywrnlkjjjojfdccddYsSmQkOiLgJeHdFb~D`|B^{D`}$tRNS?CIý%*y>IDATc`F&f(ETY!|Nu M-m].n^>~= _L@([XZY[Y ]DD5@^CC@ $, H @TtLlll\|||Bb$P 9%55---=#3+;G (_PXT\RZV^Q) ohljnim wtvuAo_w,ʄ&O:m3g+00(*)Á"ϳ?:IENDB`gambas-3.16.3/comp/src/gb.web.form/.src/000077500000000000000000000000001411575327000175435ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.src/Align.class000066400000000000000000000003521411575327000216240ustar00rootroot00000000000000' Gambas class file ''' This class provides constants for alignment of text, cells... Export Public Const Normal As Integer = 0 Public Const Left As Integer = 1 Public Const Right As Integer = 2 Public Const Center As Integer = 3 gambas-3.16.3/comp/src/gb.web.form/.src/Arrange.class000066400000000000000000000011211411575327000221440ustar00rootroot00000000000000' Gambas class file ''' This class provides the constants that defined the arrangement mode of a container. Export '' This constant is used when a container does not arrange its contents. Public Const None As Integer = 0 '' This constant is used for a vertical arrangement. Public Const Vertical As Integer = 1 '' This constant is used for an horizontal arrangement. Public Const Horizontal As Integer = 2 '' This constant is used for arranging controls in rows. Public Const Row As Integer = 3 '' This constant is used for arranging controls in columns. Public Const Column As Integer = 4 gambas-3.16.3/comp/src/gb.web.form/.src/Calendar/000077500000000000000000000000001411575327000212545ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.src/Calendar/FCalendar.class000066400000000000000000000005351411575327000241250ustar00rootroot00000000000000' Gambas class file Property Value As Date Private Function Value_Read() As Date Return dchChooser.Value End Private Sub Value_Write(Value As Date) dchChooser.Value = Value End Public Sub dchChooser_Click() Dim hDateBox As WebDateBox hDateBox = Me.PopupParent hDateBox.Date = Value_Read() + Time(hDateBox.Date) Me.Close End gambas-3.16.3/comp/src/gb.web.form/.src/Calendar/FCalendar.webform000066400000000000000000000002431411575327000244550ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,58,38) Arrangement = Arrange.Vertical { dchChooser WebDateChooser #MoveScaled(1,1,56,31) } } gambas-3.16.3/comp/src/gb.web.form/.src/Calendar/WebDateBox.class000066400000000000000000000047371411575327000243020ustar00rootroot00000000000000' Gambas class file Export Inherits WebControl Public Const _Properties As String = "*,Border=True,ReadOnly=True,DateTime" Public Const _Group As String = "Chooser" Public Const _DrawWith As String = "ComboBox" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "WebTextBox" Public Const _DefaultEvent As String = "Click" Event Click Event Change Property Text As String Property Date, Value As Date Property ReadOnly As Boolean Property DateTime As Boolean Private $bReadOnly As Boolean = True Private $dDate As Date Private $bDateTime As Boolean Public Sub _new() Me._Proxy = ":entry" End Public Sub _Render() Print ""; Print "
        " 'Print "displayCalendar($("; JS(Me.Name & ":entry"); "),'dd/mm/yyyy'"; '"; If(bTime And Not bChooseDate, "dd/mm/yyyy hh:nn", "dd/mm/yyyy"); 'Print ",$("; JS(Me.Name); "),false,false);"; '; If(bTime And Not bChooseDate, "true", "false"); ","; If(bSubmit, "true", "false"); ")\""; 'Print "\">
    " 'WebForm._AddJavascript("gw.load('calendar.css');") 'WebForm._AddJavascript("gw.load('calendar.js');") End Public Sub _UpdateProperty(sProp As String, vValue As Variant) If sProp = "text" Then Try Me.Text = vValue If Error Then Me.Refresh Else If sProp = "#popup" Then FCalendar.Value = Date_Read() FCalendar.ShowPopup(Me, Align.Right) Endif End Public Sub Clear() Date_Write(Null) End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $bReadOnly = Value Me._SetProperty("ReadOnly", Value) End Private Function Date_Read() As Date Return $dDate End Private Sub Date_Write(Value As Date) $dDate = Value Me._SetProperty("Date", Value) Raise Change End Private Function Text_Read() As String If $bDateTime Then Return Format($dDate, gb.GeneralDate) Else Return Format($dDate, gb.ShortDate) Endif End Private Sub Text_Write(Value As String) If IsDate(Value) Or If IsNull(Value) Then Date_Write(Val(Value)) Else Error.Raise("Invalid date") Endif End Private Function DateTime_Read() As Boolean Return $bDateTime End Private Sub DateTime_Write(Value As Boolean) $bDateTime = Value Me._SetProperty("DateTime", Value) End gambas-3.16.3/comp/src/gb.web.form/.src/Calendar/WebDateChooser.class000066400000000000000000000113651411575327000251470ustar00rootroot00000000000000' Gambas class file ''' This class implements a calendar that allows to choose a date. Export Inherits WebContainer Public Const _IsContainer As Boolean = False Public Const _Group As String = "Chooser" Public Const _Properties As String = "*,Value,Border" Public Const _DrawWith As String = "DateChooser" '' This event is raised when the selected date has changed. Event Change '' This event is raised when a date has been selected by the user. Event Click '' Return or set the selected date. Property Value As Date Private $dDate As Date Private $dMonth As Date Private $dStart As Date Private $bLock As Boolean Private btnPrev As WebButton Private btnNext As WebButton Private cmbMonth As WebComboBox Private txtYear As WebSpinBox Private panCalendar As WebContainer Private $dOldDate As Date '' Create a new WebDateChooser control. Public Sub _new() Dim hTop As WebHBox Dim I As Integer Dim aList As String[] Me.Arrangement = Arrange.Vertical hTop = New WebHBox(Me) btnPrev = New WebButton(hTop) As "btnPrev" btnPrev.Image = "gw-arrow-left.png" btnPrev.Border = False btnNext = New WebButton(hTop) As "btnNext" btnNext.Image = "gw-arrow-right.png" btnNext.Border = False cmbMonth = New WebComboBox(hTop) As "cmbMonth" cmbMonth.ReadOnly = True cmbMonth.Expand = True txtYear = New WebSpinBox(hTop) As "txtYear" txtYear.MinValue = 1600 txtYear.MaxValue = 9999 txtYear.Width = "6em" txtYear.Border = False panCalendar = New WebContainer(Me) As "panCalendar" aList = New String[] For I = 1 To 12 aList.Add(Format(Date(1972, I, 1), "mmmm")) Next cmbMonth.List = aList $dDate = Date(Now) SetDate() End Private Sub SetDate(Optional iYear As Integer, Optional iMonth As Integer, Optional iDay As Integer) Dim dMonth As Date Dim dDate As Date If $bLock Then Return $bLock = True ' If iYear = 0 And If iMonth = 0 And If iDay = 0 Then ' $dDate = CheckDate($dDate) ' Endif If iYear <= 0 Then iYear = Year($dDate) If iMonth <= 0 Then iMonth = Month($dDate) If iDay <= 0 Then iDay = Day($dDate) Do Try dDate = Date(iYear, iMonth, iDay) If Not Error Then Break Dec iDay If iDay < 28 Then dDate = Null Break Endif Loop 'If dDate And If CheckDate(dDate) <> dDate Then dDate = Null If dDate Then $dDate = dDate dMonth = Date(Year(dDate), Month(dDate), 1) Else dMonth = $dMonth $dMonth = Null Endif If dMonth <> $dMonth Then $dMonth = dMonth cmbMonth.Index = Month($dMonth) - 1 txtYear.Value = Year($dMonth) Endif iDay = WeekDay($dMonth) - System.FirstDayOfWeek If iDay < 1 Then iDay += 7 $dStart = $dMonth - iDay ' If $dDate <> $dLast Then ' $dLast = $dDate ' 'GetParent()._Change ' Endif 'dwgMonth.SetFocus panCalendar.Refresh Me._SetProperty("Value", $dDate) $bLock = False If $dDate <> $dOldDate Then $dOldDate = $dDate Raise Change Endif End Public Sub panCalendar_Render() Dim Y As Integer Dim X As Integer Dim dDate As Date Dim sClass As String Dim dNow As Date Print "" Print "" For X = 0 To 6 Print "" Next Print "" dDate = Date($dStart) dNow = Date(Now) For Y = 1 To 5 Print "" For X = 0 To 6 Print " Month($dDate) Then sClass &= " gw-date-disabled" sClass = Trim(sClass) If sClass Then Print " class=\""; sClass; "\""; If Month(dDate) = Month($dDate) Then Print Me._GetUpdateJS("onclick", "#date", JS(CStr(dDate))); Endif Print ">"; Day(dDate); "" Inc dDate Next Print "" Next Print "
    "; Html(Format(CDate($dStart + X), "ddd")); "
    " End Public Sub cmbMonth_Click() SetDate(0, cmbMonth.Index + 1) End Public Sub txtYear_Change() SetDate(txtYear.Value, 0) End Public Sub btnPrev_Click() If Month($dDate) = 1 Then SetDate(Year($dDate) - 1, 12) Else SetDate(0, Month($dDate) - 1) Endif End Public Sub btnNext_Click() If Month($dDate) = 12 Then SetDate(Year($dDate) + 1, 1) Else SetDate(0, Month($dDate) + 1) Endif End Public Sub _UpdateProperty(sProp As String, vValue As Variant) Select Case sProp Case "#date" $dDate = CDate(vValue) SetDate() Raise Click Default Super._UpdateProperty(sProp, vValue) End Select End Private Function Value_Read() As Date Return $dDate End Private Sub Value_Write(Value As Date) SetDate(Year(Value), Month(Value), Day(Value)) End gambas-3.16.3/comp/src/gb.web.form/.src/Color.class000066400000000000000000000027031411575327000216520ustar00rootroot00000000000000' Gambas class file ''' This class provides constant for pre-defined colors and color-related methods Export Optional Public Const Default As Integer = -1 Public Const Black As Integer = &H000000& Public Const White As Integer = &HFFFFFF& Public Const Gray As Integer = &H808080& Public Const LightGray As Integer = &HC0C0C0& Public Const DarkGray As Integer = &H404040& Public Const Blue As Integer = &HFF& Public Const Green As Integer = &HFF00& Public Const Red As Integer = &HFF0000& Public Const Yellow As Integer = &HFFFF00& Public Const Magenta As Integer = &HFF00FF& Public Const Cyan As Integer = &H00FFFF& Public Const Orange As Integer = &HFF7F00& Public Const Violet As Integer = &H7F00FF& Public Const RoyalBlue As Integer = &H007FFF& Public Const Pink As Integer = &HFF80FF& '' Change the alpha component of a color and return it. Static Public Sub SetAlpha(Color As Integer, Alpha As Integer) As Integer Return Color Or Lsl(Alpha, 24) End '' Returns a color value from its red, green, blue and alpha components. '' '' If ~Alpha~ is not specified, then it is assumed to be zero, i.e. you get a fully opaque color. '' '' [[ info '' In Gambas, the alpha value of fully opaque colors is zero, and the alpha value of fully transparent colors is 255. '' ]] Static Public Sub RGB((Red) As Integer, (Green) As Integer, (Blue) As Integer, Optional Alpha As Integer) As Integer Return Blue Or Lsl(Green, 8) Or Lsl(Red, 16) Or Lsl(Alpha, 24) End gambas-3.16.3/comp/src/gb.web.form/.src/Header.class000066400000000000000000000012401411575327000217570ustar00rootroot00000000000000' Gambas class file Static Public Form As WebForm Private Sub GetTitle() As String If Form And If Form.Title Then Print Html(Form.Title); Else Print Html(Application.Title); Endif End Private Sub GetJavascript() As String Dim aFiles As String[] aFiles = Form._GetJavascriptFiles() If aFiles And If aFiles.Count Then Return ":" & aFiles.Join(":") End Private Sub PrintJavascriptExternFiles() Dim aFiles As String[] Dim sFile As String aFiles = Form._GetJavascriptExternFiles() If aFiles Then For Each sFile In aFiles Print "" Next Endif End gambas-3.16.3/comp/src/gb.web.form/.src/Header.webpage000066400000000000000000000012131411575327000222640ustar00rootroot00000000000000 "> <%PrintJavascriptExternFiles()%> <%=GetTitle()%> gambas-3.16.3/comp/src/gb.web.form/.src/Main.module000066400000000000000000000007101411575327000216340ustar00rootroot00000000000000' Gambas module file 'Public CurrentForm As WebForm Public Sub Main() 'Debug Base64(File.Load(".public/waiting.gif")) 'Debug WebForm._GetColor(Color.Gray) Debug Base64$(File.Load("shadow.png")) End Public Sub DumpSession() Dim sKey As String Debug String$(80, "-") If Session.Id Then For Each sKey In Session.Keys Error sKey; ": "; JSON.Encode(Session[sKey]) Next Endif Debug String$(80, "-") End gambas-3.16.3/comp/src/gb.web.form/.src/Message/000077500000000000000000000000001411575327000211275ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.src/Message/FMessage.class000066400000000000000000000026621411575327000236560ustar00rootroot00000000000000' Gambas class file Public Sub SetIcon(sIcon As String) imgIcon.Image = "message" &/ sIcon & ".png" End Public Sub SetText(sText As String) txtMessage.Text = sText End Public Sub SetButton(sButton1 As String, Optional sButton2 As String, sButton3 As String) If sButton1 Then btnButton1.Text = sButton1 Endif If sButton2 Then btnButton2.Text = sButton2 btnButton2.Show Endif If sButton3 Then btnButton3.Text = sButton3 btnButton3.Show Endif End Public Sub _new() Dim hCtrl As WebButton Me.Style["min-width"] = "24em" Me.Style["min-height"] = "12em" For Each hCtrl In [btnButton1, btnButton2, btnButton3] hCtrl.Style["min-width"] = "8em" Next imgIcon.Style["margin-right"] = "1em" End Private Sub HandleClick() Dim hForm As WebForm Dim sName As String Dim hCtrl As WebControl Dim sText As String sText = Last.Text sName = Me["#message"] hCtrl = WebControl.FromName(sName) If hCtrl Then If Object.CanRaise(hCtrl, "Message") Then Object.Raise(hCtrl, "Message", [hCtrl, sText]) Else hForm = WebControl.FromId(Me._Window).Form Object.Raise(hForm, "Message", [hCtrl, sText]) Endif Endif Me.Close End Public Sub btnButton1_Click() HandleClick() End Public Sub btnButton2_Click() HandleClick() End Public Sub btnButton3_Click() HandleClick() End Public Sub WebForm_Open() btnButton1.SetFocus End gambas-3.16.3/comp/src/gb.web.form/.src/Message/FMessage.webform000066400000000000000000000015141411575327000242050ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,77,36) Arrangement = Arrange.Vertical Margin = True Spacing = True { WebContainer1 WebHBox #MoveScaled(1,1,75,19) Expand = True Spacing = True { WebContainer2 WebVBox #MoveScaled(1,1,17,17) { imgIcon WebImage #MoveScaled(1,1,15,10) } } { txtMessage WebHtml #MoveScaled(19,1,33,17) Expand = True } } { panButton WebHBox #MoveScaled(1,21,75,7) Spacing = True { WebContainer3 WebContainer #MoveScaled(1,1,5,5) Expand = True } { btnButton3 WebButton #MoveScaled(7,1,17,5) Visible = False } { btnButton2 WebButton #MoveScaled(25,1,17,5) Visible = False } { btnButton1 WebButton #MoveScaled(43,1,17,5) Text = ("OK") } } } gambas-3.16.3/comp/src/gb.web.form/.src/Message/Message.class000066400000000000000000000023671411575327000235520ustar00rootroot00000000000000' Gambas class file Export Static Public Name As String Static Private Sub Open(sIcon As String, sTitle As String, sText As String, Optional sButton1 As String, sButton2 As String, sButton3 As String) Dim hMessage As FMessage Dim sName As String hMessage = New FMessage hMessage.Title = sTitle hMessage.SetIcon(sIcon) hMessage.SetText(sText) hMessage.SetButton(sButton1, sButton2, sButton3) If Name Then sName = Name Else Try sName = Last.Name Endif hMessage["#message"] = sName hMessage.ShowModal(Null) End Static Public Sub _call(Text As String, Optional Button As String) Open("info", ("Information"), Text, Button) End Static Public Sub Info(Text As String, Optional Button As String) _call(Text, Button) End Static Public Sub Warning(Text As String, Optional Button1 As String, Button2 As String, Button3 As String) Open("warning", ("Warning"), Text, Button1, Button2, Button3) End Static Public Sub Error(Text As String, Optional Button As String) Open("error", ("Error"), Text, Button) End Static Public Sub Question(Text As String, Optional Button1 As String, Button2 As String, Button3 As String) Open("question", ("Question"), Text, Button1, Button2, Button3) End gambas-3.16.3/comp/src/gb.web.form/.src/Scroll.class000066400000000000000000000006531411575327000220340ustar00rootroot00000000000000' Gambas class file ''' Constants used by the ScrollBar property of many controls. Export '' No scrollbar is visible. Public Const None As Integer = 0 '' The horizontal scrollbar is visible if needed. Public Const Horizontal As Integer = 1 '' The vertical scrollbar is visible if needed. Public Const Vertical As Integer = 2 '' Both horizontal and vertical scrollbars are visible if needed. Public Const Both As Integer = 3 gambas-3.16.3/comp/src/gb.web.form/.src/Select.class000066400000000000000000000004731411575327000220150ustar00rootroot00000000000000' Gambas class file ''' Constants used for the selection mode of WebTable control. Export '' No selection is possible. Public Const None As Integer = 0 '' Only one element can be selected. Public Const Single As Integer = 1 '' Many elements can be selected at the same time. Public Const Multiple As Integer = 2 gambas-3.16.3/comp/src/gb.web.form/.src/Test/000077500000000000000000000000001411575327000204625ustar00rootroot00000000000000gambas-3.16.3/comp/src/gb.web.form/.src/Test/Embed1.class000066400000000000000000000004101411575327000226010ustar00rootroot00000000000000' Gambas class file Export Public Sub WebButton1_Click() 'Dim hForm As Embed2 'hForm = New Embed2(WebContainer1) ', Webform1) Dim hChild As WebDateBox hChild = New WebDateBox(WebContainer1) End Public Sub WebForm_Open() WebForm.Debug = True End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Embed1.webform000066400000000000000000000003161411575327000231420ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,64,91) { WebButton1 WebButton #MoveScaled(1,2,29,3) Text = ("Load Form") } { WebContainer1 WebVBox #MoveScaled(1,7,62,43) } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Embed2.class000066400000000000000000000001301411575327000226010ustar00rootroot00000000000000' Gambas class file Export Public Sub WebForm_Open() WebDateBox1.Value = Now End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Embed2.webform000066400000000000000000000005131411575327000231420ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,64,91) { WebContainer1 WebContainer #MoveScaled(1,1,62,5) Arrangement = Arrange.Horizontal Spacing = True { WebLabel1 WebLabel #MoveScaled(1,1,12,3) Text = ("Date") } { WebDateBox1 WebDateBox #MoveScaled(14,1,30,3) } } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/FHello.class000066400000000000000000000001051411575327000226560ustar00rootroot00000000000000' Gambas class file Public Sub WebButton1_Click() Me.Close End gambas-3.16.3/comp/src/gb.web.form/.src/Test/FHello.webform000066400000000000000000000015241411575327000232200ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,82,45) Expand = True Arrangement = Arrange.Vertical Margin = True Title = ("This is a very important message") Resizable = True { WebHtml1 WebHtml #MoveScaled(1,1,80,11) Text = ("

    Welcome to the gb.web.form component!

    \n

    This component aims at making web application as easy as making desktop applications.

    \n

    This goal is difficult to achieve, but I hope to succeed!

    ") } { WebContainer1 WebContainer #MoveScaled(1,12,80,20) Expand = True } { WebContainer2 WebContainer #MoveScaled(1,32,80,8) Arrangement = Arrange.Horizontal { WebContainer3 WebContainer #MoveScaled(1,1,57,6) Expand = True } { WebButton1 WebButton #MoveScaled(58,1,16,6) Width = "8em" Text = ("OK") } } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/FTestWebUploader.class000066400000000000000000000002441411575327000246700ustar00rootroot00000000000000' Gambas class file 'Export Public Sub WebUploader1_Upload() WebImage1.Image = WebUploader1.Path End Public Sub WebForm_Open() WebForm.Debug = True End gambas-3.16.3/comp/src/gb.web.form/.src/Test/FTestWebUploader.webform000066400000000000000000000005211411575327000252220ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,64,91) Arrangement = Arrange.Vertical Margin = True Spacing = True { WebUploader1 WebUploader #MoveScaled(1,1,62,8) } { WebContainer1 WebContainer #MoveScaled(1,10,62,35) { WebImage1 WebImage #MoveScaled(0,0,25,24) Border = True } } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform1.class000066400000000000000000000024071411575327000231760ustar00rootroot00000000000000' Gambas class file Public Sub _new() WebContainer2.Style["background-color"] = "#BFDFFF" WebHTML2.Style["font-size"] = "200%" WebHTML2.Style["font-weight"] = "bold" End Public Sub WebButton3_Click() Last.Text = "Gambas rules!" End Public Sub WebForm_Open() WebForm.Print("Form is opened") End Public Sub WebButton2_Click() WebButton2.Parent.Border = Not WebButton2.Parent.Border End Public Sub WebButton1_Click() Randomize WebHTML2.Style["font-size"] = "100%" WebHTML2.Html &= "Hello world!" End Public Sub WebForm_Event() WebContainer2.Refresh End Public Sub WebButton4_Click() WebButton4.Text = CStr(CInt(WebButton4.Text) + 1) End Public Sub WebButton5_Click() WebHTML2.Style["font-size"] = "200%" WebHTML2.Html = "Header" End Public Sub WebButton6_Click() WebButton4.Enabled = Not WebButton4.Enabled End Public Sub btnClose_Click() Me.Close End Public Sub WebTextBox1_Change() Dim sText As String sText = Last.Text If sText Then WebHtml1.Text = Html("You have entered: « " & sText & " ».") WebHtml1.Visible = True Else WebHtml1.Text = Html("You have entered nothing.") WebHtml1.Visible = False Endif End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform1.webform000066400000000000000000000061531411575327000235340ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,98,109) Height = "100%" Arrangement = Arrange.Vertical Margin = True Spacing = True Title = ("gb.web.form test") { WebMenu1 WebMenu Text = ("WebMenu1") { WebMenu2 WebMenu Text = ("WebMenu2") } { WebMenu3 WebMenu Text = ("WebMenu3") } } { WebMenu4 WebMenu Text = ("WebMenu4") } { WebContainer4 WebContainer #MoveScaled(1,1,96,6) Arrangement = Arrange.Horizontal Margin = True Border = True { WebHTML2 WebHTML #MoveScaled(1,1,27,4) Expand = True Text = ("Header") } { btnClose WebButton #MoveScaled(28,1,13,4) Border = False Image = "gw-close.png" } } { WebContainer3 WebContainer #MoveScaled(1,8,96,48) Expand = True Arrangement = Arrange.Horizontal Spacing = True { WebContainer1 WebContainer #MoveScaled(1,1,23,46) Arrangement = Arrange.Vertical Margin = True Spacing = True Border = True { WebButton1 WebButton #MoveScaled(1,1,21,5) Text = ("Hello world!") } { WebButton5 WebButton #MoveScaled(1,7,21,5) Text = ("Reset text") } { WebButton3 WebButton #MoveScaled(1,13,21,5) Text = ("Change text") } { WebButton4 WebButton #MoveScaled(1,19,21,5) Text = ("0") } { WebButton2 WebButton #MoveScaled(1,25,21,5) Text = ("Border") } { WebButton6 WebButton #MoveScaled(1,31,21,5) Text = ("Toggle enabled") } } { WebContainer5 WebContainer #MoveScaled(25,1,65,46) Expand = True Arrangement = Arrange.Vertical Margin = True Spacing = True Border = True { WebTextBox1 WebTextBox #MoveScaled(1,1,63,5) Height = "2em" } { WebHtml1 WebHtml #MoveScaled(1,7,63,5) Visible = False } { WebContainer2 WebContainer #MoveScaled(1,13,63,13) Expand = True Margin = True Border = True } { WebHtml3 WebHtml #MoveScaled(1,27,63,8) Text = ("Absolute !") } } } { WebContainer6 WebContainer #MoveScaled(1,57,96,24) Arrangement = Arrange.Row Spacing = True Border = True { WebButton7 WebButton #MoveScaled(1,1,10,10) Width = "8em" Text = ("B1") } { WebButton11 WebButton #MoveScaled(12,1,10,10) Width = "8em" Text = ("B5") } { WebButton13 WebButton #MoveScaled(23,1,10,10) Width = "8em" Text = ("B7") } { WebButton12 WebButton #MoveScaled(34,1,10,10) Width = "8em" Text = ("B6") } { WebButton8 WebButton #MoveScaled(45,1,10,10) Width = "8em" Text = ("B2") } { WebButton9 WebButton #MoveScaled(56,1,10,10) Width = "8em" Text = ("B3") } { WebButton10 WebButton #MoveScaled(67,1,10,10) Width = "8em" Text = ("B4") } { WebButton14 WebButton #MoveScaled(78,1,10,10) Width = "8em" Text = ("B8") } } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform2.class000066400000000000000000000045461411575327000232050ustar00rootroot00000000000000' Gambas class file Public Sub _new() WebLabel1.Style["font-size"] = "140%" WebLabel1.Style["padding-right"] = "1em" End Public Sub WebButton1_Click() WebTabPanel1.Index = 1 End Public Sub WebContainer2_Render() Dim sKey As String Dim bTable As Boolean Dim bDark As Boolean If Session.Id Then For Each sKey In Session.Keys If Not bTable Then Print "" bTable = True Endif If bDark Then Print "" Else Print "" Endif Print ""; Print "" Print "" bDark = Not bDark Next If bTable Then Print "
    "; Html(sKey); ":"; Html(JSON.Encode(Session[sKey])); "
    " Endif End Public Sub WebForm_Event() WebContainer2.Refresh End Public Sub WebTabPanel1_Click() 'If WebTabPanel1.Index = 0 Then WebTextBox1.SetFocus End Public Sub WebButton4_Click() WebComboBox1.Add("Item #" & CStr(WebComboBox1.Count)) End Public Sub WebButton5_Click() WebComboBox1.Clear End Public Sub WebTimer1_Timer() WebLabel1.Text = Format(Now, gb.LongTime) End Public Sub WebButton2_Click() Dim hForm As WebForm Randomize hForm = New FHello hForm.Show() hForm.Move(Rand(16, 24), Rand(4, 16), 32, 32) Catch Me.Print(Error.Text & ": " & Error.Backtrace.Join(" ")) End Public Sub WebButton6_Click() WebTimer1.Enabled = Not WebTimer1.Enabled End Public Sub WebSlider1_Change() WebSpinBox1.Value = WebSlider1.Value End Public Sub WebSpinBox1_Change() WebSlider1.Value = WebSpinBox1.Value End Public Sub WebButton3_Click() Message("Hello world!") End Public Sub WebButton7_Click() Message.Warning("File has been modified.

    All changes will be lost!", "Cancel", "Delete") End Public Sub WebMenu3_Click(Target As WebControl) Message("You have clicked on '" & Target.Name & "' control.") End Public Sub WebForm_Message(Source As WebControl, Action As String) 'Debug "Action '"; Action; "' on '"; Source.Name; "'" End Public Sub WebMenu4_Click(Target As WebControl) Message("You have clicked on '" & Target.Name & "' control.") End Public Sub WebMenuItem6_Click() Message.Error("Quit !") End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform2.webform000066400000000000000000000155201411575327000235330ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,138,122) Height = "100%" Arrangement = Arrange.Vertical Title = ("This is webform2") { WebMenuBar1 WebMenuBar #MoveScaled(1,1,136,51) Spacing = True { WebMenu3 WebMenu #MoveScaled(1,1,32,49) Text = ("File") { WebMenuItem7 WebMenuItem #MoveScaled(1,1,30,4) Text = ("New") & "..." Image = "new.png" Shortcut = "CTRL+N" } { WebMenuItem8 WebMenuItem #MoveScaled(1,5,30,4) Text = ("Open") & "..." Image = "open.png" Shortcut = "CTRL+O" } { WebMenu4 WebMenu #MoveScaled(1,9,30,26) Text = ("Project") { WebMenuItem9 WebMenuItem #MoveScaled(1,1,28,4) Text = ("Compile") Image = "new.png" Shortcut = "F7" } { WebMenuItem10 WebMenuItem #MoveScaled(1,5,28,4) Text = ("Compile all") Image = "new.png" } { WebSeparator4 WebSeparator #MoveScaled(1,9,28,2) } { WebMenuItem11 WebMenuItem #MoveScaled(1,11,28,4) Text = ("Translate") Shortcut = "CTRL+T" } { WebSeparator1 WebSeparator #MoveScaled(1,15,28,2) } { WebMenuItem1 WebMenuItem #MoveScaled(1,17,28,4) Text = ("Teleport") } } { WebSeparator5 WebSeparator #MoveScaled(1,35,30,2) } { WebMenuItem6 WebMenuItem #MoveScaled(1,37,30,4) Text = ("Quit") } } { WebMenu1 WebMenu #MoveScaled(34,1,30,49) Text = ("Project") { WebMenuItem2 WebMenuItem #MoveScaled(1,1,28,4) Text = ("Compile") Image = "new.png" Shortcut = "F7" } { WebMenuItem3 WebMenuItem #MoveScaled(1,5,28,4) Text = ("Compile all") Image = "new.png" } { WebSeparator2 WebSeparator #MoveScaled(1,9,28,2) } { WebMenuItem4 WebMenuItem #MoveScaled(1,11,28,4) Text = ("Translate") Shortcut = "CTRL+T" } { WebSeparator6 WebSeparator #MoveScaled(1,15,28,2) } { WebMenuItem5 WebMenuItem #MoveScaled(1,17,28,5) Text = ("Teleport") } } } { WebContainer1 WebHBox #MoveScaled(1,52,136,6) Spacing = True { WebButton1 WebButton #MoveScaled(1,1,13,4) Text = ("A button") } { WebButton2 WebButton #MoveScaled(15,1,13,4) Border = False Text = ("Add window") } { WebButton7 WebButton #MoveScaled(29,1,13,4) Border = False Text = ("Warning") } { WebButton6 WebButton #MoveScaled(43,1,13,4) Border = False Text = ("Toggle timer") } { WebButton8 WebButton #MoveScaled(57,1,13,4) Visible = False Text = ("Hidden") } { WebContainer6 WebContainer #MoveScaled(71,1,42,4) Expand = True } { WebLabel1 WebLabel #MoveScaled(114,1,15,4) } } { WebContainer9 WebContainer #MoveScaled(1,58,136,88) Expand = True Arrangement = Arrange.Vertical Margin = True { WebTabPanel1 WebTabPanel #MoveScaled(1,1,134,82) Expand = True Arrangement = Arrange.Vertical Margin = True Spacing = True Count = 3 Index = 0 Text = ("General") { WebTextBox1 WebTextBox #MoveScaled(1,1,131.75,4) Text = ("Hello !") } { WebCheckBox1 WebCheckBox #MoveScaled(1,6,131.75,4) Text = ("Check and uncheck me!") } { WebContainer5 WebHBox #MoveScaled(1,11,131.75,6) Spacing = True { WebComboBox2 WebComboBox #MoveScaled(1,1,22,4) List = [("Élément 1"), ("Élément 2"), ("Élément 3"), ("Élément 4")] } { WebTextBox2 WebTextBox #MoveScaled(24,1,15,4) } { WebDateBox2 WebDateBox #MoveScaled(40,1,24,4) } { WebSpinBox1 WebSpinBox #MoveScaled(65,1,13,4) } { WebSlider1 WebSlider #MoveScaled(79,1,49,4) Expand = True Border = False } } { WebContainer3 WebHBox #MoveScaled(1,18,131.75,6) Spacing = True { WebDateBox1 WebDateBox #MoveScaled(1,1,24,4) } { WebComboBox1 WebComboBox #MoveScaled(26,1,65.75,4) Width = "30em" List = [("Élément 1"), ("Élément 2"), ("Élément 3"), ("Élément 4")] ReadOnly = False } { WebButton4 WebButton #MoveScaled(92.75,1,19,4) Text = ("New element") } { WebButton5 WebButton #MoveScaled(112.75,1,19,4) Text = ("Clear") } { WebSeparator3 WebSeparator #MoveScaled(132.75,1,11,4) Ignore = True } } { WebSeparator7 WebSeparator #MoveScaled(1,25,131.75,2) Height = "1em" } { WebContainer7 WebExpander #MoveScaled(1,28,131.75,32) Background = &HA0FF7F00& Arrangement = Arrange.Horizontal Spacing = True Indent = True Text = ("This is an expander container") Hidden = True { WebContainer4 WebVBox #MoveScaled(1.125,1.125,64,25.75) Expand = True Background = &H80FFFF00& Margin = True { WebRadioButton1 WebRadioButton #MoveScaled(1,1,62,4) Text = ("Alpha") } { WebRadioButton2 WebRadioButton #MoveScaled(1,5,62,4) Text = ("Beta") Value = True } { WebRadioButton3 WebRadioButton #MoveScaled(1,9,62,4) Text = ("Gamma") } { WebCheckBox2 WebCheckBox #MoveScaled(1,13,62,4) Text = ("Gambas Almost Means Basic!") } } { WebContainer8 WebVBox #MoveScaled(66.125,1.125,58.375,25.75) Expand = True Spacing = True { WebLabel2 WebLabel #MoveScaled(1,1,56.375,4) Text = ("Please enter some text:") } { WebTextArea1 WebTextArea #MoveScaled(1,6,56.375,24) Height = "20em" Expand = True Wrap = True } } } { WebHBox2 WebHBox #MoveScaled(1,61,131.75,11) { WebImage1 WebImage #MoveScaled(1,1,9,9) Width = "8em" Image = "message/close.svg" } } Index = 1 Text = ("Options") { WebButton3 WebButton #MoveScaled(1,1,131.75,8) Text = ("Test") } Index = 2 Text = ("Application state") { WebContainer2 WebContainer #MoveScaled(1,1,131.75,32) } Index = 0 } } { WebTimer1 WebTimer #MoveScaled(70,8) } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform3.class000066400000000000000000000030201411575327000231700ustar00rootroot00000000000000' Gambas class file Public Sub _new() Dim I As Integer WebForm.Debug = True WebTable1.Columns.Count = 12 For I = 0 To WebTable1.Columns.Count - 1 WebTable1.Columns[I].Text = Chr$(65 + I) WebTable1.Columns[I].Wrap = False WebTable1.Columns[I].Sortable = I Mod 3 Next 'WebTable1.Columns[3].Expand = True WebTable1.Count = 1000 'WebTable1.Select(2, 3) End Public Sub WebForm_Open() End Public Sub WebTable1_Data(Row As Integer, Column As Integer, Data As WebTableData) Data.Text = "This is the " & CStr(Row) & ":" & CStr(Column) & " cell" 'Data.Text = 1 / 0 End Public Sub WebContainer1_Render() Dim sKey As String Dim bTable As Boolean Dim bDark As Boolean If Session.Id Then For Each sKey In Session.Keys If Not bTable Then Print "" bTable = True Endif If bDark Then Print "" Else Print "" Endif Print ""; Print "" Print "" bDark = Not bDark Next If bTable Then Print "
    "; Html(sKey); ":"; Html(JSON.Encode(Session[sKey])); "
    " Endif End Public Sub WebButton1_Click() Message.Warning("Ceci est une table avec " & WebTable1.Count & " éléments !") End Public Sub WebTable1_Select() WebForm.Print("Select: " & WebTable1.Selection.Count) End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform3.webform000066400000000000000000000014601411575327000235320ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,106,85) Height = "100%" Arrangement = Arrange.Vertical Margin = True Spacing = True { WebTabPanel1 WebTabPanel #MoveScaled(1,1,104,69) Height = "32em" Expand = True Arrangement = Arrange.Vertical Margin = True Spacing = True Count = 2 Index = 0 Text = ("Tab 1") { WebButton1 WebButton #MoveScaled(1,1,101.7143,4) Text = ("Message") } { WebTable1 WebTable #MoveScaled(1,6,101.7143,32) Expand = True Mode = Select.Multiple Sortable = True } Index = 1 Text = ("Tab 2") { WebContainer1 WebContainer #MoveScaled(1,1,101.7143,32) } Index = 0 } { WebHBox1 WebHBox #MoveScaled(1,71,104,9) Height = "6em" Border = True } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform4.class000066400000000000000000000010041411575327000231710ustar00rootroot00000000000000' Gambas class file Public Sub _new() WebForm.Debug = True End Public Sub WebUploadArea1_Progress() btnSelectFile.Enabled = False WebProgressBar1.Value = WebUploadArea1.Progress End Public Sub WebUploadArea1_Upload() Dim sPath As String btnSelectFile.Enabled = True WebForm.Print("upload") For Each sPath In Request.Files Message(Request.Files.Key & ": " & sPath) Next End Public Sub WebButton1_Click() Webform5.Show End Public Sub WebButton2_Click() Webform5.Hide End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform4.webform000066400000000000000000000016671411575327000235440ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,107,26) Arrangement = Arrange.Horizontal Margin = True Spacing = True { WebContainer3 WebVBox #MoveScaled(1,1,60,24) Spacing = True { WebContainer2 WebHBox #MoveScaled(1,1,58,8) { WebUploadArea1 WebUploadArea #MoveScaled(1,1,21,6) { btnSelectFile WebButton #MoveScaled(1,1,16,4) Text = ("Select file") & "..." } } } { WebProgressBar1 WebProgressBar #MoveScaled(1,10,58,4) } } { WebContainer1 WebContainer #MoveScaled(62,1,27,24) Width = "10em" Arrangement = Arrange.Vertical { WebDateBox1 WebDateBox #MoveScaled(1,1,25,4) } { WebButton1 WebButton #MoveScaled(1,5,25,4) Text = ("Show") } { WebButton2 WebButton #MoveScaled(1,9,25,4) Text = ("Hide") } } { WebTimer1 WebTimer #MoveScaled(93,7) Delay = 500 } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform5.class000066400000000000000000000003411411575327000231750ustar00rootroot00000000000000' Gambas class file Public Sub WebForm_Open() Dim M As Integer Dim aMonth As String[] aMonth = New String[] For M = 1 To 12 aMonth.Add(Format(Date(1972, M, 1), "mmmm")) Next cmbMonth.List = aMonth End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform5.webform000066400000000000000000000007721411575327000235410ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,64,29) Arrangement = Arrange.Vertical Spacing = True Persistent = True { WebHBox1 WebHBox #MoveScaled(1,1,62,7) { WebButton1 WebButton #MoveScaled(1,1,11,5) Image = "gw-arrow-left.png" } { cmbMonth WebComboBox #MoveScaled(12,1,24,5) } { WebButton2 WebButton #MoveScaled(36,1,16,5) Image = "gw-arrow-right.png" } } { WebContainer1 WebContainer #MoveScaled(1,9,62,18) } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform6.class000066400000000000000000000004271411575327000232030ustar00rootroot00000000000000' Gambas class file Public Sub WebForm_Open() WebForm.Debug = True End Public Sub WebComboBox1_Click() Message(WebComboBox1.Text) End Public Sub WebButton2_Click() Message(Html("TextBox: " & WebTextBox1.Text) & "

    " & Html("TextArea: " & WebTextArea1.Text)) End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform6.webform000066400000000000000000000011531411575327000235340ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,74,91) Arrangement = Arrange.Vertical Margin = True Spacing = True { WebComboBox1 WebComboBox #MoveScaled(1,1,72,4) List = [(""), ("Élément 1"), ("Élément 2"), ("Élément 3")] } { WebTextBox1 WebTextBox #MoveScaled(1,6,72,4) } { WebTextArea1 WebTextArea #MoveScaled(1,11,72,16) } { WebHBox1 WebHBox #MoveScaled(1,28,72,7) Spacing = True { WebButton1 WebButton #MoveScaled(1,1,16,5) Text = ("Copy") } { WebButton2 WebButton #MoveScaled(18,1,16,5) Text = ("Text") } } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform7.class000066400000000000000000000000361411575327000232000ustar00rootroot00000000000000' Gambas class file 'Export gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform7.webform000066400000000000000000000004231411575327000235340ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,64,91) { WebContainer4 WebContainer #MoveScaled(1,1,62,5) { WebLabel1 WebLabel #MoveScaled(1,1,12,3) Text = ("Name") } { WebTextBox1 WebTextBox #MoveScaled(13,1,27,3) } } } gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform8.class000066400000000000000000000002141411575327000231770ustar00rootroot00000000000000' Gambas class file 'Export Public Sub WebButton1_Click() Dim hForm As Webform7 Debug hForm = New Webform7(WebContainer1) End gambas-3.16.3/comp/src/gb.web.form/.src/Test/Webform8.webform000066400000000000000000000003231411575327000235340ustar00rootroot00000000000000# Gambas Form File 3.0 { WebForm WebForm #MoveScaled(0,0,64,91) { WebButton1 WebButton #MoveScaled(2,1,18,4) Text = ("Load Form") } { WebContainer1 WebContainer #MoveScaled(2,6,59,43) } } gambas-3.16.3/comp/src/gb.web.form/.src/WebButton.class000066400000000000000000000053631411575327000225120ustar00rootroot00000000000000' Gambas class file ''' This class implements a push button. Export Inherits WebControl Public Const _Properties As String = "*,Border=True,Text,Image{WebImage},Immediate" 'Public Const _DrawWith As String '= "Button" Public Const _DefaultEvent As String = "Click" Public Const _DefaultSize As String = "16,4" '' This event is raised when the button is pressed. '' '' ### See also '' [../immediate] Event Click '' Return or set the button text. Property Text As String '' Return or set the button image relative path. Property Image As String '' If the Immediate property is set, the [../click] event is raised to generate javascript code that will be executed on the client side when '' the button is clicked. '' '' In that case, the Click event handler should only call methods that generate javascript on the client side: '' - [../../webform/exec](WebForm.Exec) '' - [../../webtextbox/copy](WebTextBox.Copy) '' - ... Property Immediate As Boolean Private $sText As String Private $sImage As String Private $bImmediate As Boolean Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) If $sText = Value Then Return $sText = Value Me._SetProperty("Text", Value) End Private Function Image_Read() As String Return $sImage End Private Sub Image_Write(Value As String) If $sImage = Value Then Return $sImage = Value Me._SetProperty("Image", Value) End Public Sub _BeforeRender() Dim vSave As Variant Print ""; End Public Sub _Render() If $sImage Then Print "

    "; Endif If $sText Then Print ""; Html($sText); ""; End Public Sub _AfterRender() Raise Render Print "" End '' Click on the button. Public Sub Click() Object.Raise(Me, "Click") End Private Function Immediate_Read() As Boolean Return $bImmediate End Private Sub Immediate_Write(Value As Boolean) If $bImmediate = Value Then Return $bImmediate = Value Me._SetProperty("Immediate", Value) End gambas-3.16.3/comp/src/gb.web.form/.src/WebCheckBox.class000066400000000000000000000027461411575327000227270ustar00rootroot00000000000000' Gambas class file ''' This class implements a check-box control. Export Inherits WebControl Public Const _Properties As String = "*,Text,Value" Public Const _DrawWith As String = "CheckBox" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "WebButton" Public Const _DefaultEvent As String = "Click" '' This event is raised when the check-box is toggled. Event Click '' Return or set if the control is checked. Property Value, Checked As Boolean '' Return or set the text displayed beside the check mark. Property Text As String Private $sText As String Private $bChecked As Boolean Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) If $sText = Value Then Return $sText = Value Me._SetProperty("Text", Value) End Public Sub _Render() If $sText Then Print ""; Print End Public Sub _UpdateProperty(sProp As String, vValue As Variant) If sProp = "value" Then Try Value_Write(vValue) End Private Function Value_Read() As Boolean Return $bChecked End Private Sub Value_Write(Value As Boolean) If $bChecked = Value Then Return $bChecked = Value Me._SetProperty("Value", Value) Raise Click End gambas-3.16.3/comp/src/gb.web.form/.src/WebComboBox.class000066400000000000000000000133141411575327000227420ustar00rootroot00000000000000' Gambas class file ''' This class implements a combo-box control. Export Inherits WebControl Public Const _Properties As String = "*,Border=True,List,ReadOnly=True,PlaceHolder,Text" Public Const _DrawWith As String = "ComboBox" Public Const _DefaultSize As String = "24,4" Public Const _Similar As String = "WebTextBox" Public Const _DefaultEvent As String = "Click" '' This event is raised when an item is selected in the list box. Event Click '' This event is raised when the combo-box text has changed. Works only if the combo-box is editable. Event Change '' This event is raised when the ENTER key is hit. Works only if the combo-box is editable. Event Activate '' Return or set the combo-box text. Property Text As String '' Return the number of items in the combo-box popup. Property Read Count As Integer '' Return or set the index of the current selected item. Property Index As Integer '' Return or set the contents of the combo-box popup as a string array. Property List As String[] '' Return or set if the combo-box is read-only, i.e. not editable. Property ReadOnly As Boolean '' Return or set the placeholder text displayed when the editable combo-box is empty. Property PlaceHolder As String Private $iIndex As Integer Private $sText As String Private $aList As New String[] Private $bReadOnly As Boolean = True Private $sPlaceHolder As String '' Create a new WebComboBox control. Public Sub _new() Me._Proxy = ":entry" End Public Sub _BeforeRender() Dim sClass As String If $bReadOnly Then sClass = "gw-selectbox" Else sClass = "gw-combobox" Endif Print "" End Public Sub _Render() Dim I As Integer If Not $bReadOnly Then Print ""; Print "
    "; Endif Print ""; If Not $bReadOnly Then Print "
    "; WebForm._AddJavascript("gw.resizeComboBox(" & JS(Me.Name) & ")") Endif Print End Public Sub _UpdateProperty(sProp As String, vValue As Variant) If sProp = "index" Then Try Me.Index = vValue Else If sProp = "text" Then Try Me.Text = vValue Endif End Private Function Index_Read() As Integer Return $iIndex End Private Sub Index_Write(Value As Integer) If Value < -1 Or If Value >= $aList.Count Then Error.Raise("Out of bounds") If $iIndex = Value Then Return $iIndex = Value If Not $bReadOnly Then If $iIndex < 0 Then $sText = "" Else $sText = $aList[$iIndex] Endif Me._SetProperty("Text", $sText) Endif Me._SetProperty("Index", $iIndex) Raise Click End Private Function Count_Read() As Integer Return $aList.Count End Private Function List_Read() As String[] Return $aList.Copy() End Private Sub CheckIndex() If $iIndex < 0 Or If $iIndex >= $aList.Count Then If $aList.Count = 0 Then Index_Write(-1) Else Index_Write(0) Endif Endif End Private Sub List_Write(Value As String[]) If Value Then $aList = Value.Copy() Else $aList = New String[] Endif CheckIndex Me._SetProperty("List", $aList) End '' Clear the contents of the combo-box and its popup. Public Sub Clear() $aList.Clear Index_Write(-1) Me._SetProperty("List", $aList) If Not $bReadOnly Then Text_Write("") End Private Function ReadOnly_Read() As Boolean Return $bReadOnly End Private Sub ReadOnly_Write(Value As Boolean) $bReadOnly = Value If $bReadOnly Then Me._Proxy = "" Else Me._Proxy = ":entry" Endif Me._SetProperty("ReadOnly", Value) End '' Add an item to the popup list. '' '' - ~Item~ is the text of the item to add. '' - ~Index~ is the position the item will be inserted from. If not specified, the item is added at the end of the popup list. Public Sub Add(Item As String, Optional Index As Integer = -1) $aList.Add(Item, Index) CheckIndex Me._SetProperty("List", $aList) End '' Remove an item from the popup list. '' '' - ~Index~ is the index of the item to remove, between 0 and [../count] - 1. Public Sub Remove(Index As Integer) $aList.Remove(Index) CheckIndex Me._SetProperty("List", $aList) End Private Function Text_Read() As String If $bReadOnly Then Try Return $aList[$iIndex] Return -1 Else Return $sText Endif End Private Sub Text_Write(Value As String) If $bReadOnly Then Index_Write($aList.Find(Value)) Else If $sText = Value Then Return $sText = Value Inc Me._NoRefresh Me._SetProperty("Text", Value) Dec Me._NoRefresh If Me._CanRefresh() Then WebForm._AddJavascript("$(" & JS(Me.Name & ":entry") & ").value = " & JS($sText)) Raise Change Endif End Private Function PlaceHolder_Read() As String Return $sPlaceHolder End Private Sub PlaceHolder_Write(Value As String) $sPlaceHolder = Value Me._SetProperty("PlaceHolder", Value) End gambas-3.16.3/comp/src/gb.web.form/.src/WebContainer.class000066400000000000000000000221771411575327000231630ustar00rootroot00000000000000' Gambas class file ''' This class implements a generic container for other controls. ''' ''' It is also the parent class of every other container. Export Inherits WebControl Public Const _IsContainer As Boolean = True Public Const _Group As String = "Container" Public Const _Properties As String = "*,Arrangement{Arrange.*},Margin,Spacing,Indent,Border" Public Const _DefaultArrangement As String = "F" Public Const _DefaultSize As String = "32,32" '' Return or set the how the container arrange its contents. '' '' The value of that property can be one of the value of the [../arrange] class. Property Arrangement As Integer '' Return or set if there is a margin between the container border and all its children. '' '' The margin size is 0.5em. Property Margin As Boolean '' Return or set if the children of the container are spaced out. '' '' The amount of space is 0.5em. Property Spacing As Boolean '' Return or set if the container has a border. Property Border As Boolean '' Return or set if the children controls of the container are indented. '' '' The direction of the indentation follows the direction of the container arrangement. '' '' The amount of indentation is 0.5em. Property Indent As Boolean '' Return an array of all container's children. Property Read Children As WebControl[] Public _Container As WebContainer Private $aChildren As New String[] Private $aExtraChildren As New String[][] Private $iArrangement As Integer Private $bMargin As Boolean Private $bSpacing As Boolean Private $bBorder As Boolean Private $bIndent As Boolean Public Sub _Add(hChild As WebControl) Dim aExtraChild As String[] Dim hParent As WebControl $aChildren.Add(hChild.Name) Inc Me._NoRefresh If WebForm._InExec And If Not Object.IsLocked(Me) Then 'If Not Object.IsLocked(Me) Then 'Debug "Add extra "; hChild.Name; " to "; Me.Name hChild._Extra = True aExtraChild = [hChild.Name, Object.Type(hChild)] If hChild._EventName Then aExtraChild.Add(hChild._EventName) Try hParent = Object.Parent(hChild) If Not Error Then aExtraChild.Add(hParent.Name) Endif $aExtraChildren.Add(aExtraChild) Me._SetProperty("#extra", $aExtraChildren) Endif Me._SetProperty("#children", $aChildren) Dec Me._NoRefresh If Me._CanRefresh() Then WebForm._AddJavascriptBefore("gw.insertElement(" & JS(hChild.Name) & "," & JS(Me.Name) & ")") hChild.Refresh Endif End Public Sub _Remove(hChild As WebControl) Dim iPos As Integer $aChildren.Remove($aChildren.Find(hChild.Name)) Inc Me._NoRefresh If hChild._Extra Then For iPos = 0 To $aExtraChildren.Max If $aExtraChildren[iPos][0] = hChild.Name Then 'Debug "Remove extra "; hChild.Name; " from "; Me.Name $aExtraChildren.Remove(iPos) Me._SetProperty("#extra", $aExtraChildren) Break Endif Next Endif Me._SetProperty("#children", $aChildren) Dec Me._NoRefresh If Me._CanRefresh() Then WebForm._AddJavascript("gw.removeElement(" & JS(hChild.Name) & ")") Endif End Public Sub _UpdateChildName(sOld As String, sNew As String) $aChildren[$aChildren.Find(sOld)] = sNew End Public Sub _IsFirstVisibleChild(hChild As WebControl) As Boolean Dim I As Integer Dim hCtrl As WebControl For I = 0 To $aChildren.Max If $aChildren[I] = hChild.Name Then Return True hCtrl = WebControl.FromName($aChildren[I]) If hCtrl.Visible And If Not hCtrl.Ignore Then Return Next End Public Sub _InitProperties() Dim I As Integer Super._InitProperties() For I = 0 To $aChildren.Max WebControl.FromName($aChildren[I])._InitProperties() Next End Public Sub _Render() Dim I As Integer For I = 0 To $aChildren.Max With WebControl.FromName($aChildren[I]) 'If Not .Visible Then Continue ._BeforeRender() ._Render() ._AfterRender() End With Next End Public Sub _RenderStyleSheet() 'Dim I As Integer Me._StartStyleSheet Super._RenderStyleSheet() If Not _Container And If Me.Visible Then If $iArrangement Then Me._AddStyleSheet("display:flex;") Select Case $iArrangement Case Arrange.Horizontal Me._AddStyleSheet("flex-flow:row;") Me._AddStyleSheet("overflow-x:hidden;") Case Arrange.Vertical Me._AddStyleSheet("flex-flow:column;") Case Arrange.Column Me._AddStyleSheet("flex-flow:column wrap;") 'If $bSpacing And If $aChildren.Count Then Me._AddStyleSheet("margin-right:-0.5em;margin-bottom:-0.5em;") Case Arrange.Row Me._AddStyleSheet("flex-flow:row wrap;") 'If $bSpacing And If $aChildren.Count Then Me._AddStyleSheet("margin-right:-0.5em;margin-bottom:-0.5em;") End Select Endif If $bMargin Then Me._AddStyleSheet("padding:0.5rem;") If $bIndent Then If $bMargin Then Me._AddStyleSheet("padding-left:1rem;") Else Me._AddStyleSheet("padding-left:0.5rem;") Endif Endif If $bSpacing Then If $iArrangement = Arrange.Column Or If $iArrangement = Arrange.Row Then Me._AddStyleSheet("padding-bottom: 0;") Me._AddStyleSheet("padding-right: 0;") Endif Endif Endif If $bBorder Then Me._AddStyleSheet("border:solid #C0C0C0 1px;") Me._EndStyleSheet ' For I = 0 To $aChildren.Max ' With WebControl.FromId($aChildren[I]) ' ._RenderStyleSheet() ' End With ' Next End Private Function Arrangement_Read() As Integer Return $iArrangement End Private Sub Arrangement_Write(Value As Integer) $iArrangement = Value Me._SetProperty("Arrangement", Value) UpdateContainer() End Private Function Margin_Read() As Boolean Return $bMargin End Private Sub Margin_Write(Value As Boolean) $bMargin = Value Me._SetProperty("Margin", Value) UpdateContainer() End Private Function Spacing_Read() As Boolean Return $bSpacing End Private Sub Spacing_Write(Value As Boolean) $bSpacing = Value Me._SetProperty("Spacing", Value) UpdateContainer() End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value Me._SetProperty("Border", Value) End Public Sub _RefreshReply() As Boolean Dim I As Integer If Super._RefreshReply() Then Return For I = 0 To $aChildren.Max WebControl.FromName($aChildren[I])._RefreshReply() Next End Public Sub _SetContainer(hCont As WebContainer) _Container = hCont UpdateContainer() End Private Sub UpdateContainer() If Not _Container Then Return With _Container .Arrangement = $iArrangement .Spacing = $bSpacing .Margin = $bMargin End With End Private Function Children_Read() As WebControl[] Dim aChildren As WebControl[] Dim I As Integer aChildren = New WebControl[$aChildren.Count] For I = 0 To $aChildren.Max aChildren[I] = WebControl.FromName($aChildren[I]) Next Return aChildren End Public Sub _InitSpecialProperty(sProp As String, vVal As Variant) Dim I As Integer Dim sClass As String Dim sName As String Dim hCtrl As WebControl Dim hForm As WebForm Dim sEventName As String Dim aExtraChildren As String[][] Dim aExtraChild As String[] Dim sParentName As String If sProp = "#extra" Then hForm = Me.Form aExtraChildren = vVal For I = 0 To aExtraChildren.Max aExtraChild = aExtraChildren[I] sName = aExtraChild[0] sClass = aExtraChild[1] WebControl._NextName = sName hCtrl = Object.New(sClass, [Me]) If aExtraChild.Count = 4 Then sEventName = aExtraChild[2] sParentName = aExtraChild[3] 'Debug sName;; sClass; sEventName;; WebControl.FromName(sParentName) If sEventName Then Object.Attach(hCtrl, WebControl.FromName(sParentName), sEventName) Endif hCtrl._Extra = True 'WebForm.Print(WebControl._GetNames()) ' TODO: attach to the real form 'If Left(sName) <> "$" Then Object.Attach(hCtrl, hForm, sName) Next $aExtraChildren = aExtraChildren Else If sProp = "#children" Then $aChildren = vVal Me.Refresh Endif End Public Sub _Raise(sName As String) Dim iPos As Integer iPos = $aChildren.Find(sName) If iPos < 0 Then Return $aChildren.Remove(iPos) $aChildren.Add(sName) Me._SetProperty("#children", $aChildren) End Public Sub _Lower(sName As String) Dim iPos As Integer iPos = $aChildren.Find(sName) If iPos < 0 Then Return $aChildren.Remove(iPos) $aChildren.Add(sName, 0) Me._SetProperty("#children", $aChildren) End '' Delete all container's children. Public Sub DeleteChildren() While $aChildren.Count WebControl.FromName($aChildren[0]).Delete Wend End '' Delete the container with all its children. Public Sub Delete() Inc WebForm._DisableRefresh DeleteChildren Dec WebForm._DisableRefresh Super.Delete End Private Function Indent_Read() As Boolean Return $bIndent End Private Sub Indent_Write(Value As Boolean) $bIndent = Value Me._SetProperty("Indent", Value) End gambas-3.16.3/comp/src/gb.web.form/.src/WebControl.class000066400000000000000000000547121411575327000226610ustar00rootroot00000000000000' Gambas class file ''' This class is the parent class of every web controls. Export Create Private Public Const _IsControl As Boolean = True Public Const _Properties As String = "Class,Width{WebCoord},Height{WebCoord},Visible=True,Enabled=True,Tag,Expand,Ignore,Background{Color},Foreground{Color},Tooltip,Font{WebFont}" Public Const _Family As String = "WebForm" Public Const _DefaultEvent As String = "Render" '' This event is raised just after the rendering of the control, so that you can add your own HTML contents. Event Render '' This event is raised after a message box has been closed. '' - ~Source~ is the source control, i.e. the control owning the method that opened the message box. '' - ~Action~ is the text of the message box button that has been clicked. Event Message(Source As WebControl, Action As String) Event Dialog(Dialog As WebForm, Result As Variant) '' Return the server control identifier. Property Read Id As Integer '' Return or set the name of the control, used as an identifier on the client side. Property Name As String '' Returns or sets the control tag. '' '' This property is intended for the programmer and is never used by the component. It can contain any [/lang/type/variant] value. Property Tag As Variant '' Return the parent container of the control. Property Read Parent As WebContainer '' Return or set if the control should expand its size according to its parent arrangement mode. Property Expand As Boolean '' Return or set if the control is visible. Property Visible As Boolean '' Return a virtual object that allows to define specific style sheet elements of the control. Property Read Style As WebControlStyle '' Return the web form that control belongs to. Property Read Form As WebForm '' Return or set the explicit width of the control. '' '' This property can take any valid CSS size. If not set, the control will have its default width. Property Width, W As String '' Return or set the explicit height of the control. '' '' This property can take any valid CSS size. If not set, the control will have its default height. Property Height, H As String '' Return or set if the control must be ignored by its parent container in automatic arrangement mode. Property Ignore As Boolean '' Return or set if the control is enabled. Property Enabled As Boolean '' Return or set the background color of the control. Property Background As Integer '' Return or set the foreground color of the control. Property Foreground As Integer '' Return or set if the control has a border. Property Border As Boolean '' Return or set the specific CSS classes added to the control. Property Class As String '' Return or set the tooltip displayed when the mouse cursor hovers the control. Property Tooltip As String '' Return or set the specific font of the control. Property Font As String Static Private $iLastId As Integer Static Private $iLastFormId As Integer Static Private $cFromId As New Collection Static Private $cFromName As New Collection Static Private $aStyleSheet As String[] Static Public _NextName As String Public _Refresh As Boolean Public _EventName As String Public _Extra As Boolean Public _Proxy As String Public _NoRefresh As Integer Public _Naked As Boolean Private $iId As Integer Private $iParentId As Integer Private $iFormId As Integer Private $sName As String Private $vTag As Variant Private $iStyleSheet As Integer Private $hStyle As WebControlStyle Private $iBackground As Integer = Color.Default Private $iForeground As Integer = Color.Default Private $bExpand As Boolean Private $bIgnore As Boolean Private $bDisabled As Boolean Private $bHidden As Boolean Private $bNoBorder As Boolean Private $sClass As String Private $sTooltip As String '' Create a new [@{class}](.). Public Sub _new(Optional Parent As WebContainer) Dim sName As String Inc $iLastId $iId = $iLastId If _NextName Then sName = _NextName _NextName = "" Endif If Me Is WebForm Then Object.Attach(Me, Me, "WebForm") $iFormId = $iId Inc $iLastFormId If Not sName Then sName = "@" & CStr($iLastFormId) Else _EventName = Param.EventName Try $iFormId = Parent.Form.Id If Not sName Then sName = Param.EventName If Not sName Then sName = "$" & CStr($iId) Endif SetName(sName) $cFromId[$iId] = Me Parent_Write(Parent) 'Debug Object.Type(Me);; $sName;; $iId End Private Sub SetName(Optional sName As String) Dim iSuffix As Integer Dim sNameSuffix As String Dim hParent As WebContainer If Left(sName) <> "@" Then sName = Form_Read().Name & "." & sName If sName = $sName Then Return If $sName Then $cFromName[$sName] = Null Do If iSuffix = 0 Then sNameSuffix = sName Else sNameSuffix = sName & "-" & CStr(iSuffix + 1) Endif If Not $cFromName.Exist(sNameSuffix) Then sName = sNameSuffix Break Endif Inc iSuffix Loop hParent = Parent_Read() If hParent Then hParent._UpdateChildName($sName, sName) $cFromName[sName] = $iId $sName = sName End Public Sub _SetForm(hForm As WebForm) $iFormId = hForm.Id End Private Function Id_Read() As Integer Return $iId End '' Return a WebControl from its server identifier. Static Public Sub FromId(Id As Integer) As WebControl Return $cFromId[Id] End '' Return a WebControl from its name. Static Public Sub FromName(Name As String) As WebControl Try Return $cFromId[$cFromName[Name]] End Private Function Parent_Read() As WebContainer Dim hParent As WebContainer If $iParentId = 0 Then Return hParent = $cFromId[$iParentId] ' If hParent.Parent And If hParent.Parent._Container = hParent Then hParent = hParent.Parent Return hParent End Private Sub Parent_Write(Value As WebContainer) Dim hParent As WebContainer Dim sParent As String hParent = Parent_Read() If Value = hParent Then Return If hParent Then hParent._Remove(Me) If Value Then If Value._Container Then Value = Value._Container $iParentId = Value.Id $iFormId = Value.Form.Id Value._Add(Me) sParent = Value.Name Else $iParentId = 0 Endif '_SetProperty("#parent", sParent) End Private Function Name_Read() As String Return $sName End Private Function Tag_Read() As Variant Return $vTag End Private Sub Tag_Write(Value As Variant) $vTag = Value _SetProperty("Tag", Value) End Public Sub _GetClassId(Optional sClass As String) As String Dim sResult As String If Not sClass Then sClass = "gw-" & LCase(Mid$(Object.Type(Me), 4)) If $bNoBorder Then sClass &= " gw-noborder" If Not Me.Enabled Then sClass &= " gw-disabled" If $sClass Then sClass &= " " & $sClass If $bHidden Then sClass &= " gw-hidden" sResult = " class=\"" & sClass & "\" id=\"" & $sName & "\"" If $sTooltip Then sResult &= " title=\"" & Replace($sTooltip, Chr$(34), """) & "\"" Return sResult End Public Sub _BeforeRender() Print ""; End Public Sub _Render() End Public Sub _AfterRender() Raise Render Print "
    " End Public Sub _RenderStyleSheet() Dim hParent As WebContainer _StartStyleSheet If $bIgnore Then _AddStyleSheet("position:absolute;") Else If Me Is WebContainer Then _AddStyleSheet("position:relative;") If $bExpand Then _AddStyleSheet("flex-grow:1;") Else _AddStyleSheet("flex-shrink:0;") Endif hParent = Me.Parent If hParent Then Select Case hParent.Arrangement Case Arrange.Vertical 'If bInline Then _AddStyleSheet("display:block;") If hParent.Spacing And If Not hParent._IsFirstVisibleChild(Me) Then _AddStyleSheet("margin-top:0.5rem;") Case Arrange.Horizontal '_AddStyleSheet("display: block;") If hParent.Spacing And If Not hParent._IsFirstVisibleChild(Me) Then _AddStyleSheet("margin-left:0.5rem;") Case Arrange.Column, Arrange.Row _AddStyleSheet("display:inline-block;") If hParent.Spacing Then _AddStyleSheet("margin-right:0.5rem;margin-bottom:0.5rem;") End Select Endif Endif If $iBackground <> Color.Default Then _AddStyleSheet("background-color:" & _GetColor($iBackground) & ";") If $iForeground <> Color.Default Then _AddStyleSheet("color:" & _GetColor($iForeground) & ";") If $hStyle And If Not $hStyle.IsVoid() Then $aStyleSheet.Insert($hStyle._GetStyleSheet()) _EndStyleSheet End Public Sub _StartStyleSheet() Inc $iStyleSheet If $iStyleSheet = 1 Then $aStyleSheet = New String[] End Public Sub _AddStyleSheet(sStyle As String) $aStyleSheet.Add(sStyle) End Public Sub _RemoveStyleSheet(sStyle As String) Try $aStyleSheet.Remove($aStyleSheet.Find(sStyle)) End Public Sub _EndStyleSheet() Dec $iStyleSheet If $iStyleSheet Then Return If $aStyleSheet.Count Then 'Print "#"; Me.Name; " {" 'Print " "; $aStyleSheet.Join("\n ") 'Print "}" Print " style=\""; $aStyleSheet.Join(""); "\""; $aStyleSheet.Clear Endif End Private Function Expand_Read() As Boolean Return $bExpand End Private Sub Expand_Write(Value As Boolean) If $bExpand = Value Then Return $bExpand = Value _SetProperty("Expand", Value) Try Me.Parent.Refresh End Private Function Style_Read() As WebControlStyle If Not $hStyle Then $hStyle = New WebControlStyle As "Style" Return $hStyle End Private Function Form_Read() As WebForm Try Return $cFromId[$iFormId] End Public Sub _SetProperty(sProp As String, vValue As Variant) Dim cProp As Collection If Me.Form._Loaded Then If WebForm._InExec Then Me.Refresh If TypeOf(vValue) = gb.Object And If vValue Is WebControl Then sProp = "@" & sProp vValue = vValue.Name Endif cProp = Session[$sName] If Not cProp Then cProp = New Collection cProp[sProp] = vValue Session[$sName] = cProp Endif End Public Sub _InitSpecialProperty((sProp) As String, (vVal) As Variant) End Public Sub _InitProperties() Dim cProp As Collection Dim vVal As Variant Dim sProp As String If Not Session.Id Then Return Try cProp = Session[$sName] If Not cProp Then Return Object.Lock(Me) For Each vVal In cProp sProp = cProp.Key 'WebForm.Print("set " & sProp) If Left(sProp) = "#" Then If sProp = "#style" Then $hStyle = New WebControlStyle As "Style" $hStyle._Style = vVal ' Else If sProp = "#parent" Then ' Parent_Write(FromName(vVal)) Else Me._InitSpecialProperty(sProp, vVal) Endif Else If Left(sProp) = "@" Then Object.SetProperty(Me, Mid$(sProp, 2), WebControl.FromName(vVal)) Else Try Object.SetProperty(Me, sProp, vVal) Endif Next Object.Unlock(Me) End Public Sub Style_Change() _SetProperty("#style", $hStyle._Style) End '' Return if the control or one of its parent is hidden. Public Sub IsHidden() As Boolean Dim hCtrl As WebControl hCtrl = Me While hCtrl If Not hCtrl.Visible Then Return True hCtrl = hCtrl.Parent Wend End Public Sub _CanRefresh() As Boolean If Not Me.Form._Loaded Then Return If WebForm._InExec = 0 Then Return If WebForm._DisableRefresh Then Return If _NoRefresh Then Return If IsHidden() Then Return Return True End '' Refresh the control. Public Sub Refresh() If WebForm._DisableRefresh Then Return If _NoRefresh Then Return If IsHidden() Then Return If WebForm._InExec Then _Refresh = True WebForm._HasRefresh = True Endif End Public Sub _RefreshReply() As Boolean Dim hFile As File Dim sResult As String If _Refresh Then hFile = Open String For Write Output To #hFile If Not _Naked Then Me._BeforeRender() Me._Render() If Not _Naked Then Me._AfterRender() sResult = Close #hFile Output To Default 'WebForm._AddRefresh("$(" & JS(Me.Name) & ").outerHTML = " & JS(sResult) & ";") If _Naked Then Print "gw.setInnerHtml("; JS(Me.Name); ","; JS(sResult); ");" Else Print "gw.setOuterHtml("; JS(Me.Name); ","; JS(sResult); ");" 'Print "$("; JS(Me.Name); ").outerHTML = "; JS(sResult); ";" Endif _Refresh = False Return True Endif Catch Output To Default Error.Propagate() End Public Sub _GetEventJS(sProp As String, sEvent As String, Optional sArg As String) As String Dim sStr As String If Not Object.CanRaise(Me, sEvent) Then Return sStr = " " & sProp & "=\"gw.raise(" '& JS(Me.Form.Name) & "," If Me Is WebForm Then sStr &= "null" Else sStr &= JS($sName) Endif sStr &= "," & JS(sEvent) If sArg Then sStr &= "," & sArg sStr &= ");" sStr &= "\"" Return sStr End Public Sub _GetUpdateJS(sEvent As String, sProp As String, Optional sGetValue As String = "null", Optional sMore As String) As String Dim sStr As String sStr = " " & sEvent & "=\"gw.update(" & JS($sName) & "," & JS(sProp) & "," & sGetValue & ");" If sMore Then sStr &= sMore Return sStr & "\"" End Public Sub _GetUpdateWaitJS(sEvent As String, sProp As String, Optional sGetValue As String = "null", Optional sMore As String) As String Dim sStr As String sStr = " " & sEvent & "=\"gw.updateWait(" & JS($sName) & "," & JS(sProp) & "," & sGetValue & ");" If sMore Then sStr &= sMore Return sStr & "\"" End Public Sub _UpdateProperty((sProp) As String, (vValue) As Variant) End Private Function Width_Read() As String If $hStyle Then Return $hStyle["width"] End Private Sub Width_Write(Value As String) Style_Read()["width"] = Value End Private Function Height_Read() As String If $hStyle Then Return $hStyle["height"] End Private Sub Height_Write(Value As String) Style_Read()["height"] = Value End Private Function Visible_Read() As Boolean Return Not $bHidden ' If Not $hStyle Then Return True ' Return $hStyle["display"] <> "none" End Private Sub Visible_Write(Value As Boolean) Dim bCanRefresh As Boolean If $bHidden <> Value Then Return $bHidden = False bCanRefresh = _CanRefresh() $bHidden = Not Value Inc _NoRefresh _SetProperty("Visible", Value) Dec _NoRefresh If bCanRefresh Then WebForm._AddJavascript("gw.setVisible(" & JS(Me.Name) & "," & JS(Not $bHidden) & ")") If Me.Parent Then Me.Parent.Refresh Else If Me Is WebContainer Then Refresh Endif Endif 'Me.Parent.Refresh ' If Value Then ' If $hStyle Then Style_Read()["display"] = "" ' Else ' Style_Read()["display"] = "none" ' Endif End Private Function Ignore_Read() As Boolean Return $bIgnore End Private Sub Ignore_Write(Value As Boolean) If $bIgnore = Value Then Return $bIgnore = Value _SetProperty("Ignore", Value) Me.Parent.Refresh End '' Set the focus on the control. '' '' - ~Highlight~ is an optional argument that specify if the control contents must be highlighted. It usually works only for TextBox or TextArea controls. Public Sub SetFocus(Optional Highlight As Boolean) Dim sName As String sName = $sName If _Proxy Then sName &= _Proxy WebForm._AddReply("gw.setFocus(" & JS(sName) & ")") If Highlight Then WebForm._AddReply("gw.highlightMandatory(" & JS(sName) & ")") End Private Function Enabled_Read() As Boolean If $bDisabled Then Return If $iParentId = 0 Then Return True Return Parent_Read().Enabled End Private Sub Enabled_Write(Value As Boolean) If $bDisabled <> Value Then Return $bDisabled = Not Value Me._SetProperty("Enabled", Value) End Private Function Background_Read() As Integer Return $iBackground End Private Sub Background_Write(Value As Integer) If $iBackground = Value Then Return $iBackground = Value Me._SetProperty("Background", Value) End Private Function Foreground_Read() As Integer Return $iForeground End Private Sub Foreground_Write(Value As Integer) If $iForeground = Value Then Return $iForeground = Value Me._SetProperty("Foreground", Value) End Static Public Sub _GetColor(iCol As Integer) As String Dim A As Integer Dim R As Integer Dim G As Integer Dim B As Integer A = Lsr(iCol, 24) R = Lsr(iCol, 16) And 255 G = Lsr(iCol, 8) And 255 B = iCol And 255 If A Then Return "rgba(" & CStr(R) & "," & CStr(G) & "," & CStr(B) & "," & CStr(Round(A / 255, -2)) & ")" Else Return "#" & Hex$(R, 2) & Hex$(G, 2) & Hex$(B, 2) Endif End '' Raise the control. Public Sub Raise() Dim hParent As WebContainer hParent = Parent_Read() If hParent Then hParent._Raise($sName) End '' Lower the control. Public Sub Lower() Dim hParent As WebContainer hParent = Parent_Read() If hParent Then hParent._Lower($sName) End Static Public Sub _GetNames() As String Dim aKey As New String[] For Each $cFromName aKey.Add($cFromName.Key) Next Return aKey.Join(",") End '' Delete the control Public Sub Delete() Dim hParent As WebContainer hParent = Parent_Read() If hParent Then hParent._Remove(Me) Session[$sName] = Null Session[$sName & ":data"] = Null $cFromName[$sName] = Null $cFromId[$iId] = Null 'Debug $sName;; $iId;; System.Backtrace.Join(" ") End '' Show the control. '' '' Setting the [../visible] property to TRUE has the same effect. Public Sub Show() Me.Visible = True End '' Hide the control. '' '' Setting the [../visible] property to FALSE has the same effect. Public Sub Hide() Me.Visible = False End '' Return the custom data associated with the string ~Key~. Public Sub _get(Key As String) As Variant Dim cData As Collection If Not Key Then Error.Raise("Void key") cData = Session[$sName & ":data"] If cData Then Return cData[Key] End '' Associate the some custom data with the string ~Key~. Public Sub _put(Value As Variant, Key As String) Dim cData As Collection If Not Key Then Error.Raise("Void key") cData = Session[$sName & ":data"] If Not cData Then cData = New Collection cData[Key] = Value Session[$sName & ":data"] = cData End '' Clear all custom data associated with the control Public Sub Reset() Session[$sName & ":data"] = Null End ' Public Sub _GetBaseName() As String ' ' Dim iPos As Integer ' ' iPos = InStr($sName, ".") ' If iPos Then ' Return Mid$($sName, iPos + 1) ' Else ' Return $sName ' Endif ' ' End Private Function Border_Read() As Boolean Return $bNoBorder End Private Sub Border_Write(Value As Boolean) If $bNoBorder <> Value Then Return $bNoBorder = Not Value Me._SetProperty("Border", Value) End Private Function Class_Read() As String Return $sClass End Private Sub Class_Write(Value As String) If $sClass = Value Then Return $sClass = Value Me._SetProperty("Class", Value) End Private Function Tooltip_Read() As String Return $sTooltip End Private Sub Tooltip_Write(Value As String) If $sTooltip = Value Then Return $sTooltip = Value Me._SetProperty("Tooltip", Value) End Public Sub _GetImageLink(sImage As String) As String If Left(sImage) = "/" Then Return Application.Root &/ "img:" & Me.Name & "?z=" & Base64(Format(Now, "hhnnssuuu")) Else Return Application.Root &/ sImage Endif End Private Sub Name_Write(Value As String) SetName(Value) End '' Add a specific class to the [../class] property. Public Sub AddClass((Class) As String) Dim aClass As String[] Dim sClass As String sClass = Trim(Class) If Not sClass Then Return aClass = Split($sClass, " ") For Each sClass In Split(sClass, " ", "", True) If aClass.Exist(sClass) Then Continue aClass.Add(sClass) Next Class_Write(aClass.Join(" ")) End '' Remove a specific class from the [../class] property. Public Sub RemoveClass((Class) As String) Dim aClass As String[] Dim iPos As Integer Dim sClass As String sClass = Trim(Class) If Not sClass Then Return aClass = Split($sClass, " ") For Each sClass In Split(sClass, " ", "", True) iPos = aClass.Find(sClass) If iPos < 0 Then Continue aClass.Remove(iPos) Next Class_Write(aClass.Join(" ")) End Private Function Font_Read() As String Dim aFont As New String[] Dim sFamily As String Dim sWeight As String Dim sStyle As String Dim sSize As String Dim sDecoration As String If Not $hStyle Then Return sFamily = $hStyle["font-family"] sWeight = $hStyle["font-weight"] sStyle = $hStyle["font-style"] sDecoration = $hStyle["font-decoration"] sSize = $hStyle["font-size"] If sFamily Then aFont.Add(sFamily) If sWeight = "normal" And If sStyle = "normal" And If sDecoration = "none" Then aFont.Add("normal") Else If sWeight Then If sWeight <> "bold" Then sWeight = "weight:" & sWeight aFont.Add(sWeight) Endif If sStyle Then If sStyle <> "italic" Then sStyle = "style:" & sStyle aFont.Add(sStyle) Endif If sDecoration Then If sDecoration = "underline" Then aFont.Add(sDecoration) Else If sDecoration = "line-through" Then aFont.Add("strikeout") Else aFont.Add("decoration:" & sDecoration) Endif Endif Endif If sSize Then If Not IsDigit(Left(sSize)) Then sSize = "size:" & sSize aFont.Add(sSize) Endif Return aFont.Join() End Private Sub Font_Write(Value As String) Dim sElt As String For Each sElt In Split(Value) sElt = Trim(sElt) If Not sElt Then Continue If IsDigit(Left(sElt)) Then Style_Read()["font-size"] = sElt Continue Endif If sElt Begins "weight:" Then Style_Read()["font-weight"] = Mid$(sElt, InStr(sElt, ":") + 1) Continue Endif If sElt Begins "style:" Then Style_Read()["font-style"] = Mid$(sElt, InStr(sElt, ":") + 1) Continue Endif If sElt Begins "decoration:" Then Style_Read()["text-decoration"] = Mid$(sElt, InStr(sElt, ":") + 1) Continue Endif If sElt Begins "size:" Then Style_Read()["font-size"] = Mid$(sElt, InStr(sElt, ":") + 1) Continue Endif Select Case sElt Case "normal" Style_Read()["font-weight"] = "normal" Style_Read()["font-style"] = "normal" Style_Read()["text-decoration"] = "none" Case "bold" Style_Read()["font-weight"] = sElt Case "italic" Style_Read()["font-style"] = sElt Case "italic" Style_Read()["font-style"] = sElt Case "underline" Style_Read()["text-decoration"] = sElt Case "strikeout" Style_Read()["text-decoration"] = "line-through" Case Else Style_Read()["font-family"] = sElt End Select Next End gambas-3.16.3/comp/src/gb.web.form/.src/WebControlStyle.class000066400000000000000000000012041411575327000236660ustar00rootroot00000000000000' Gambas class file Export Event Change Public _Style As New Collection Public Sub _get({Property} As String) As String Return _Style[{Property}] End Public Sub _put(Value As String, {Property} As String) _Style[{Property}] = Value Raise Change End Public Sub IsVoid() As Boolean Return _Style.Count = 0 End Public Sub Exist({Property} As String) As Boolean Return _Style.Exist({Property}) End Public Sub _GetStyleSheet() As String[] Dim aStyle As New String[] Dim sValue As String For Each sValue In _Style aStyle.Add(_Style.Key & ":" & sValue & ";") Next Return aStyle End gambas-3.16.3/comp/src/gb.web.form/.src/WebExpander.class000066400000000000000000000040421411575327000227760ustar00rootroot00000000000000' Gambas class file ''' This class implements an expander container. Export Inherits WebContainer Public Const _Properties As String = "*,Text,Hidden" Public Const _DefaultEvent As String = "Show" Public Const _Similar As String = "WebContainer" Public Const _DrawWith As String = "Expander" '' This event is raised when the expander is opened. Event Show '' This event is raised when the expander is closed. Event Hide '' Return or set if the expander contents is hidden. Property Hidden As Boolean '' Return or set the expander title. Property Text As String '' Return or set if the expander has a border. Property Border As Boolean Private $hCont As WebContainer Private $bHidden As Boolean Private $sText As String Private $bBorder As Boolean '' Create a new WebExpander Public Sub _new() $hCont = New WebContainer(Me) Me._Container = $hCont End Private Function Hidden_Read() As Boolean Return $bHidden End Private Sub Hidden_Write(Value As Boolean) $bHidden = Value Me._SetProperty("Hidden", Value) If $bHidden Then Raise Hide Else Raise Show Endif End Private Function Text_Read() As String Return $sText End Private Sub Text_Write(Value As String) $sText = Value Me._SetProperty("Text", Value) End Public Sub _Render() If $bBorder Then Print "
    " Print "
    "; Print ""; Print "
    "; $sText; "
    "; Print "
    " If Not $bHidden Then With $hCont ._BeforeRender() ._Render() ._AfterRender() End With Endif If $bBorder Then Print "
    " End Public Sub _UpdateProperty(sProp As String, vValue As Variant) If sProp = "hidden" Then Try Me.Hidden = vValue End Private Function Border_Read() As Boolean Return $bBorder End Private Sub Border_Write(Value As Boolean) $bBorder = Value Me._SetProperty("Border", Value) End gambas-3.16.3/comp/src/gb.web.form/.src/WebForm.class000066400000000000000000000541161411575327000221420ustar00rootroot00000000000000' Gambas class file ''' This class represents the different pages and dialogs of your Web application. Export Create Static Inherits WebContainer Public Const _IsForm As Boolean = True Public Const _HiddenControls As String = "WebControl,WebForm,Timer" Public Const _Properties As String = "*,Title,Resizable,Persistent" Public Const _DefaultEvent As String = "Open" '' Return or set if debugging messages are printed in the javascript console of the browser. Static Property Debug As Boolean '' Return or set the name of the startup form. '' '' By default, this is the startup class of your project. Static Property Startup As String Static Public _InExec As Integer Static Public _Current As WebForm Static Private $aJavascriptBefore As New String[] Static Private $aJavascript As New String[] Static Private $aRefresh As New String[] Static Private $cLibrary As New Collection Static Private $iDownload As Integer 'Static Private $aPreload As String[] '' This event is raised when the form is opened. Event Open '' This event is raised each time an event is handled by the form. Event Event '' This event is raised when the form is closed. Event Close '' Return or set the form title. '' '' This title is used as HTML page title if the form is the main form. Property Title As String '' Return or set if the form is resizable when used as a dialog. Property Resizable As Boolean '' Return or set the minimum width of the form. '' '' This property can take any valid CSS size. If not set, the control will have no minimum width. Property Width, W As String '' Return or set the minimum height of the form. '' '' This property can take any valid CSS size. If not set, the control will have no minimum height. Property Height, H As String '' Return if the form is a popup. Property Read Popup As Boolean '' Return the control that owns the popup. Property Read PopupParent As WebControl '' Return or set if the form is persistent. '' '' Closing a non-persistent form automatically destroys it. Property Persistent As Boolean Static Public _DisableRefresh As Integer Static Public _HasRefresh As Boolean Public _Loaded As Boolean Public _Window As Integer Private $aJavascriptFiles As String[] Private $aJavascriptExternfiles As String[] Private $sTitle As String Private $bResizable As Boolean Private $sX As String Private $sY As String Private $sWidth As String Private $sHeight As String Private $hWindowContainer As WebContainer Private $bPersistent As Boolean 'Private $bCentered As Boolean Static Public Sub _init() System.Language = Request.Language End '' This method is called when the form is used as startup class. '' '' It handles all HTTP requests received by your application. Static Public Sub Main() Dim sPath As String Dim hForm As WebForm Dim aLib As String[] Dim sFile As String Dim sKey As String Dim sErr As String Dim sVar As String 'System.Log(Format(Timer, "#0.000") & ": start request: [" & Session.Id & "] " & URL.Decode(Application.Request)) Try Object.Call(Application.Startup, "HandleRequest") If Response.Done Then Return sPath = Mid$(Request.Path, 2) If sPath Then If sPath Begins "style:" And sPath Ends ".css" Then aLib = Split(Left(sPath, -4), ":") If aLib.Count >= 3 Then sFile = aLib[1] & ".css" RenderStyleSheet(sFile) Goto END_REQUEST Else If sPath Begins "lib:" And sPath Ends ".js" Then aLib = Split(Left(sPath, -3), ":") aLib.Remove(aLib.Max) 'If aLib.Count >= 3 Then sFile = aLib[1] & ".js" RenderJavascript(aLib) Goto END_REQUEST Else If sPath Begins "img:" Then Try sPath = Session[Mid$(sPath, 5)]["Image"] If Not Error Then Response.SendFile(sPath) Goto END_REQUEST Else If sPath Begins "download:" Then If DownloadFile(Mid$(sPath, 10)) Then Goto NOT_FOUND Goto END_REQUEST Else If sPath = "~dump" Then Response.ContentType = "text/plain;charset=utf-8" Response.Begin For Each sVar In Env Print sVar; " = "; Env[sVar] Next If Session.Id Then Print For Each sKey In Session.Keys Print sKey; " : "; JSON.Encode(Session[sKey]) Next Print Print "size = "; Session.Size Endif Response.End Return Else If sPath = "~logout" Then Session.Abandon Else If Exist("../.public/" &/ sPath) Then Response.SendFile("../.public/" &/ sPath) Goto END_REQUEST Else If Exist(".public/" &/ sPath) Then Response.SendFile(".public/" &/ sPath) Goto END_REQUEST ' Else ' ' iPos = InStr(sPath, "/") ' If iPos = 0 Then ' sClass = sPath ' sPath = "" ' Else ' sClass = Left(sPath, iPos - 1) ' sPath = Mid$(sPath, iPos + 1) ' Endif ' ' Try hStat = Class.Stat(".." &/ sClass) ' If Not hStat Then ' Try hStat = Class.Stat(sClass) ' If Not hStat Then Goto NOT_FOUND ' Endif ' ' If LCase(hStat.Parent) <> "webform" Then Goto NOT_FOUND ' ' Try hClass = Class.Load(sClass) ' If Not hClass Then ' Debug "Class.Load: "; Error.Text ' Goto NOT_FOUND ' Endif ' ' 'Main.DumpSession ' hForm = hClass.AutoCreate() ' Endif Endif If Session.Id And If Session["startup"] Then Try hForm = Class.Load(Session["startup"]).AutoCreate() Endif If Not hForm Then hForm = Application.Startup.AutoCreate() Endif _Current = hForm If sPath = "x" Then hForm._Exec(JSON.Decode(Request["c"])) Else If sPath = "u" And If Request.Method = "POST" Then hForm._Upload(Request["id"]) Else hForm.Render Endif Goto END_REQUEST NOT_FOUND: Response.Status = "404 NotFound" Response.Begin Print "

    404 NotFound

    " Response.End END_REQUEST: 'System.Log(Format(Timer, "#0.000") & ": end request: [" & Session.Id & "] " & URL.Decode(Application.Request)) Return Catch sErr = Error.Text & "\n" & Error.Backtrace.Join(" ") Response.Cancel Response.Begin If sPath <> "x" Then Print "" Response.End 'System.Log("End request") End Static Public Sub _AddRefresh(sStr As String) $aRefresh.Add(sStr) End Static Public Sub _AddReplyBefore(sStr As String) $aJavascriptBefore.Add(sStr) End Static Public Sub _AddReply(sStr As String) $aJavascript.Add(sStr) End Static Public Sub _AddJavascript(sStr As String) _AddReply(sStr) End Static Public Sub _AddJavascriptBefore(sStr As String) _AddReplyBefore(sStr) End '' Create a new WebForm '' '' You can embed a webform into a container. In that case the webform acts like a WebContainer. Public Sub _new() If Not Me.Parent Then $hWindowContainer = New WebContainer(Me) $hWindowContainer.Ignore = True $hWindowContainer._Naked = True $hWindowContainer.Class = "gw-window-container" Endif End Public Sub _ready() If Not Me.Parent Then Me._InitProperties $hWindowContainer.Raise Endif _Loaded = True 'If Me.Parent And If Then Raise Open End Public Sub _BeforeRender() If Me.Parent Then Super._BeforeRender() Return Endif Print "
    " End Static Private Sub PrintJavascript() If $aJavascriptBefore.Count Then Print $aJavascriptBefore.Join(";\n"); ";" $aJavascriptBefore.Clear Endif If _HasRefresh Then _HasRefresh = False Me._RefreshReply() Endif If $aJavascript.Count Then Print $aJavascript.Join(";\n"); ";" $aJavascript.Clear Endif End Public Sub _BeginJavascript() As Variant Dim aJavascript As String[] Dim aJavascriptBefore As String[] aJavascript = $aJavascript aJavascriptBefore = $aJavascriptBefore $aJavascript = New String[] $aJavascriptBefore = New String[] Return [aJavascript, aJavascriptBefore] End Public Sub _EndJavascript(vSave As Variant) Dim aJavascript As String[] Dim aJavascriptBefore As String[] aJavascript = $aJavascript aJavascriptBefore = $aJavascriptBefore $aJavascript = vSave[0] $aJavascriptBefore = vSave[1] If aJavascriptBefore.Count Then Print aJavascriptBefore.Join(";"); ";"; If aJavascript.Count Then Print aJavascript.Join(";"); ";"; End '' Render the form contents to the standard output as HTML. Public Sub Render() Dim sImage As String Response.Buffered = True Response.Begin Header.Form = Me Header.__Render() 'Print Header.ToString(); Header.Form = Null $aJavascript.Clear Print "" Print "
    "; For Each sImage In ["error.png", "info.png", "question.png", "warning.png"] Print ""; Next Print "
    " Print "
    " Print "
    " "
    " "
    " "
    " "
    " "
    " "
    " Me._BeforeRender() Me._Render() Me._AfterRender() Print "" Print "" Print "" Response.End End Static Private Sub RenderStyleSheet(Optional sFile As String) If Not sFile Then sFile = "style.css" If Not Exist(sFile) Then Response.Status = "404 NotFound" Response.Begin Response.End Return Endif Response.Buffered = True Response.ContentType = "text/css;charset=utf-8" Response.Begin Print Replace(File.Load(sFile), "//", Application.Root); If Exist("../.public" &/ sFile) Then Print File.Load("../.public/" &/ sFile); Response.End End Static Private Sub RenderJavascript(aLib As String[]) Dim sFile As String Response.ContentType = "text/javascript;charset=utf-8" Response.Begin For Each sFile In aLib sFile &= ".js" If sFile = "lib.js" Then Print "$root = "; JS(Application.Root); ";" Print File.Load(sFile) Print File.Load("ac.js") Else If Exist(sFile) Then Print File.Load(sFile) Else If Exist(".." &/ sFile) Then Print File.Load(".." &/ sFile) Endif Endif Next Response.End End Private Function Title_Read() As String Return $sTitle End Private Sub Title_Write(Value As String) $sTitle = Value Me._SetProperty("Title", Value) End '' Print some text to the browser javascript console. Static Public Sub Print(Text As String) $aJavascript.Add("console.log(" & JS(Text) & ")") End '' Execute some javascript into the browser. Static Public Sub Exec(Javascript As String) $aJavascript.Add(Javascript) End Public Sub _Exec(aCmd As Variant[]) Dim hCtrl As WebControl Dim iOldInExec As Integer = _InExec Dim sErr As String 'Dim fTimer As Float 'fTimer = Timer Inc _InExec Raise Event Select Case aCmd[0] Case "raise" If aCmd[1] Then hCtrl = WebControl.FromName(aCmd[1]) Else hCtrl = Me Endif If Not hCtrl Then Goto VOID_RESPONSE Object.Raise(hCtrl, aCmd[2], aCmd[3]) Case "update" 'Debug aCmd[1];; aCmd[2];; aCmd[3] If aCmd[1] Then hCtrl = WebControl.FromName(aCmd[1]) If Not hCtrl Then Goto VOID_RESPONSE Else hCtrl = Me Endif hCtrl._UpdateProperty(aCmd[2], aCmd[3]) End Select _InExec = iOldInExec Response.Buffered = True Response.ContentType = "text/javascript;charset=utf-8" Response.Begin PrintJavascript 'Session.Save 'Print "// WebForm._Exec: " & Format(Timer - fTimer, "0.000 s") Response.End Return VOID_RESPONSE: Response.Begin 'Print "console.log("; JS("unknown control " & aCmd[1]); ");" Response.End Return Catch sErr = Error.Text & "\n" & Error.Backtrace.Join(" ") _InExec = iOldInExec Response.Cancel Response.Begin Print "console.log("; JS(aCmd); ");" Print "console.log("; JS(sErr); ");" Print "console.log("; JS($aJavascript.Join("\n")); ");" Print "alert("; JS(sErr); ");" Response.End End '' Close the form. '' '' If the form was a dialog, you can specify a return value with the optional ~ReturnValue~ argument. '' '' That return value will be passed as an argument to the [../control/.dialog] event of the control that owns the dialog. Public Sub Close(Optional ReturnValue As Variant) ' Dim bCancel As Boolean Dim hWindow As WebWindow Raise Close If Me._Window Then hWindow = WebControl.FromId(Me._Window) With hWindow .Close(ReturnValue) If $bPersistent Then .Hide Else .Delete Endif End With Else If $bPersistent Then Me.Hide Else Me.Delete Endif _AddReply("window.location.reload(true)") Endif End ' Public Sub Open(Child As WebForm) ' ' Dim hWindow As WebWindow ' ' If $bOpened Then Return ' ' hWindow = New WebWindow(Me) ' hWindow.Child = Child ' Child._Window = hWindow.Id ' ' $bOpened = True ' ' End '' Hide the form. Public Sub Hide() Dim hWindow As WebControl If Me.Parent Then Super.Hide() Return Endif If _Window = 0 Then Return hWindow = WebControl.FromId(_Window) If hWindow Then hWindow.Hide End Private Sub DoShow() Dim hWindow As WebWindow If _Window Then hWindow = WebControl.FromId(_Window) If hWindow Then hWindow.Show Return Endif hWindow = New WebWindow(WebForm._Current._GetWindowContainer()) hWindow.Child = Me hWindow.Resizable = $bResizable hWindow.Move($sX, $sY, $sWidth, $sHeight) _Window = hWindow.Id End '' Show the form. Public Sub Show() If Me.Parent Then Return DoShow Raise Open End '' Show the form as a modal dialog. '' '' ~Parent~ is the owner of the dialog. If not specified, then the value of [/lang/last] is used as owner. '' '' An error is raised if you try to call this method on an embedded form. Public Sub ShowModal(Optional Parent As WebControl) Dim hWindow As WebWindow If Me.Parent Then Error.Raise("Form is embedded") If _Window = 0 Then DoShow() hWindow = WebControl.FromId(_Window) If hWindow Then hWindow.Modal = True If IsMissing(Parent) Then Try Parent = Last If Parent Then hWindow.ParentControl = Parent.Name Endif Raise Open End '' Show the form as a popup. '' '' - ~Control~ is the owner of the popup. It is normally the control the popup is attached to. '' - ~Alignment~ defines the position of the popup on the screen: '' - [Align.Left](../../align/left) : the popup is aligned to the left of its owner. '' - [Align.Right](../../align/eight) : the popup is aligned to the right of its owner. '' '' By default the popup is aligned to the left of its owner. Public Sub ShowPopup(Control As WebControl, Optional Alignment As Integer = Align.Left) Dim hWindow As WebWindow If Me.Parent Then Error.Raise("Form is embedded") If _Window Then Return hWindow = New WebWindow(WebForm._Current._GetWindowContainer()) hWindow.Child = Me hWindow.Resizable = $bResizable hWindow.PopupAlignment = Alignment hWindow.PopupControl = Control.Name hWindow.Modal = True _Window = hWindow.Id Raise Open End '' Move and/or resize the form. '' [[ warning '' A main form cannot be moved nor resized. '' ]] Public Sub Move(X As String, Y As String, Optional Width As String, Optional Height As String) Dim hWindow As WebWindow = WebControl.FromId(_Window) $sX = X $sY = Y If Not IsMissing(Width) Then $sWidth = Width If Not IsMissing(Height) Then $sHeight = Height '$bCentered = False If hWindow Then hWindow.Move(X, Y, Width, Height) End '' Resize the form. '' [[ warning '' A main form cannot be resized. '' ]] Public Sub Resize(Width As String, Height As String) Dim hWindow As WebWindow = WebControl.FromId(_Window) $sWidth = Width $sHeight = Height '$bCentered = False If hWindow Then hWindow.Resize(Width, Height) End Public Sub _UpdateProperty(sProp As String, vValue As Variant) Dim aWindows As String[] Dim sName As String Select Case sProp Case "#windows" aWindows = vValue Inc _DisableRefresh For Each sName In aWindows Try WebControl.FromName(sName).Raise() Next Dec _DisableRefresh End Select End Private Function Resizable_Read() As Boolean Return $bResizable End Private Sub Resizable_Write(Value As Boolean) Dim hWindow As WebWindow = WebControl.FromId(_Window) $bResizable = Value UpdateSize If hWindow Then hWindow.Resizable = Value End ' Public Sub Center() ' ' Dim hWindow As WebWindow = WebControl.FromId(_Window) ' ' $bCentered = True ' If hWindow Then hWindow.Centered = True ' ' End Static Private Function Debug_Read() As Boolean Try Return Session["debug"] End Static Private Sub Debug_Write(Value As Boolean) Dim bDebug As Boolean Try bDebug = Session["debug"] If Value = bDebug Then Return Session["debug"] = Value _AddJavascript("gw.debug = " & JS(Value)) End Private Sub UpdateSize() If $bResizable Then Me.Style["width"] = "" Me.Style["height"] = "" Else Me.Style["width"] = Me.Style["min-width"] Me.Style["height"] = Me.Style["min-height"] Endif End Private Function Width_Read() As String Return Me.Style["min-width"] End Private Sub Width_Write(Value As String) Me.Style["min-width"] = Value UpdateSize End Private Function Height_Read() As String Return Me.Style["min-height"] End Private Sub Height_Write(Value As String) Me.Style["min-height"] = Value UpdateSize End Public Sub _GetWindowContainer() As WebContainer 'If Me.Parent Then Return Me.Form._GetWindowContainer() Return $hWindowContainer End ' Public Sub _Preload(sUrl As String) ' ' If Not $aPreload Then $aPreload = New String[] ' If $aPreload.Exist(sUrl) Then Return ' $aPreload.Add(sUrl) ' ' End ' Static Public Sub _AddLibrary(sLib As String) $cLibrary[sLib] = True End Private Function Popup_Read() As Boolean Dim hWindow As WebWindow = WebForm.FromId(Me._Window) If hWindow Then Return hWindow.IsPopup() End Private Function PopupParent_Read() As WebControl Dim hWindow As WebWindow = WebForm.FromId(Me._Window) If hWindow Then Return WebControl.FromName(hWindow.PopupControl) End Public Sub _Upload(Id As String) Dim hCtrl As WebUploadArea Dim iOldInExec As Integer = _InExec Dim sErr As String Inc _InExec Try hCtrl = WebControl.FromName(Id) If hCtrl Then hCtrl._UploadFinish _InExec = iOldInExec Response.Begin PrintJavascript Response.End Catch sErr = Error.Text & "\n" & Error.Backtrace.Join(" ") 'Debug sErr _InExec = iOldInExec Response.Begin Print "console.log("; JS(sErr); ");" Print "console.log("; JS($aJavascript.Join("\n")); ");" Response.End End '' Reload the form. '' '' It the form is not a main form, then it is refreshed. Public Sub Reload() If Me = _Current Then _AddReply("location.reload(true)") Else Me.Refresh Endif End Public Sub _GetJavascriptFiles() As String[] Return $aJavascriptFiles End Public Sub _GetJavascriptExternFiles() As String[] Return $aJavascriptExternFiles End '' Add a javascript file to the list of javascript ressources defined by the `

    yG A5t>=D>G%;;@4J%e h2hJ3y& n @E!.y3l2s-X)IGKv?/^V;aL]mW_wSNiy^jnmn8p{afzi}2e͠.΍]^gwm4pgVW{?nk]fXzl6w}1b\h>hvLn;["Jk-v*?`bh^gYWh^Nu`jgj+dU iPEfKZSc6_L]lSv[U]y~Txxw|bx~~w'+^f%TxV]K:|XI5)39T,9B*O{V ;~]O4kVG"n[])|8Oxm]8t=.[3VROg+I}R6Af=7y8wRW XB7jc:v?sVLMO%ݸ ٴ۪УVy𙓊ߎt+ ǞΒ٢ VL~Vׇ=ƷpǏ9[!iٔ[ȗcߓK ڢ5\Āvh'4dw| A}͓sb$BؽK5Y{zш]kSǍԋ\c<| 7 b+ǡ. Ԓ:68 5/>C6.05D+`/Q,{9 YY2_BhiCLgH;BZ+b4BY0ʊ#V`7CIk$.Àk_K!`b= iL:BrFW7h9ZnS0?ZoR]16D_G't,c=Ps,XVFFCS7]3IQu/dC DAJhT[iw~1>n+>~DW>x7zstand30rk||4siip s'HLHmvKrgz@jlitw_>|Vl]x}?tHk,K"fHNNsuj|F=xw|dxDX~}=Nw$y2U^sJesT]7m`RlOwfBtxmȁO {v:]G)X]*V:hr7!gMLbE^$tGZ[]=_=1nevf]Tl{GnR}k]wi%{;c+c@w#i5r)Q9jM\/iWT)_nw>C>G#;;?4K$e g2gJ3x& m ?D!-y4l2s,X)HGLu?/^V;bL]mX_xSNiz]jnmn8p{bez?k}2hϠ0Ѝ[]gwk7neVX{?qi_f^|io{{`!Np2{*}?`ah_fYXh^Ntaihi+dT iNEfJ]SfdeLalWva[d {|T{vvxb{{~z|({/Za)PxVX F6|XC0//=R,=@.L{V&7~]V3lVO nZc(}8Wymc8u=1X3UNOg,!D}R;>D?7y#4wQX ZC7ic:v?{sW+MO%ظ ӴۤНVz񘓊ߎL ǝ͑١ VL~Vӆ=ŴpÏ9[$jٔ[ȗcߒK;ڢ5]Āvh'4dw| A~̓sc$_ټK5Z{{ш]lSǍԋ]c<| <b/ȡ2 Ԓ>6;8/BE5/24G+_,N *v=Y\3@FikELhI;BY+`6@[0ˊ#Sc8CLm',Āl^K!`a= jL:BsFW7i8ZnT/?ZpQ]1G'u,b=Qs,YUFFCR7]4HQu0cD D@JhUZjw~1">P>"V>#7-xstand31ti~y4sgit u(KOImtNsgy@ikitu^?|Wk]y{FuHl,L"gHPOsuk|F=yv}dwDX~}=Nw$y2U]sJdsU]7maRlOwfBuxnȁP |v:^F*W^*W9hq7!fNLbC]$sGZY]=_=1netf]\n|NoZ~kdxp%|;j+h@x#o4t)W7kMc.kYY(`vx<[-iuk5RjW^Wmhhh w}ret2m,t+hIk,gPscUz_fi$\&{ʁÒゞ͚̞sĦ螏qBp\Drr}]gb "~M+0 %O>B>H";;>4K"e f2fJ3x& l >{B",y4l2s+X*GGLt?%_U;cL]nW`xTNi{]jmln8o{bd{X_qw8JHdtǂR \~K)<~w4s`a{T^ \ @?l}1jј2ҍZ]gvi7mcTZzFshbec~go~y#,5,AO,B>3H|V+2]]1mVVpZj(~9^zmi7v=4U3TINg,'@}R@=-GG5/52J*_")K#&v@]_3@JilGLiK;BY*^7?^1̊#Qe9CPm*)Ńm]K!a`= kK:BtEW7i7ZnT-?ZqP]1=T5R@4E`:aK1R}Ml>G'u,a=Qt,ZTGFDQ7]5FQu0bD E>JhUYjv~1>f=U>۰7`stand32ug技w4tfiv2w(MQJmtOrhyUijitt^@|Wk]yyFuHm+L"hHQOstl{F=yt}dvDX~}=Mx#z1U[sJbsV\8maRmOwfBvwpɉQ }u:_F+W_*W7hp7"fNLbA]$rGZW]=^>1nesg]co}Tp`kkzv%}>@AH ;<<4K!e e2eJ3w& k <{A"*y4l2s)X*EGMs?/_S;X^qw8JHdsƂR \~L)<x4t`bzT` ] B@l}1kҘ3ԍY\gvg7mbT[zFufddfedwG'u,_=Qt,ZRGFDO7]5DRu0`D EO=} U>7o:stand33vd犁u4tcix2x(NSJktPphwUjhiur^@zXi]zwFv}Hn+M"hHRPqtlyF=xq}drDW~~=Mx#z1UXsJ_sW[9laQmOwgBwupɉR }s:_D‡+UĐ`*W5hm7"dOLb>]#oGZT]<{^>0oepg]hp}Zrflq{{#~>AH;<:4Le c2bJ3t& h :{>"'y4l3s&X*BGMp?/`P<uLvYo\9BL_F6ScT#}=Sr>X^rw8JHdsÃS [~L)<y4t`cxTa ^ CAk}2jԘ4ՍYZgveFm`T\xFvceah bdtLe,24YI5DD3j3&sNX^D9jc:w?qsX+NO%̺ ȶۘБU}݋=' ǝˑؠ ߌU>~ULJ?«mк:[ lٓ\ȕcߐK;۠5`ŀyh'46w| @̓zd߿'_ٻK5^{҈[oUȍԋ_c< Kb;ΡA{K7FF%RL2/9,O'_' rB)vG]b3@QinHLjN BW)X:;b2Ќ$Ih:CWn/#ɃmYK!b\= lF;Bu?X7j1ZnU(?ZrK^1=P5R@/Ea5aL,R}Ng>G&v-\=Pu,ZOGFDL7]5ARu/\C F9JhUSjq1>32=T>%79 stand34vb节r4uaiy2y(OTKitQnhuUjfiup^AxXf]zuFvzHo+N"iHSPotlvF=xn~doDV}~=Ly"z0UTsI[sWX9ja}PmOvgBws qɉS }p:`Ać+SƐ`*W2hiE"aOLa;]#lGYP];x]>/odlg]mq}_sl lw|!GMm@-`M<uLvZo]9BL_G6SdU}=Ss>X]rr9JIdrS Z~L)<z4u`cvTb _ CAi}2h՘5֍ZXgwcFm^T]vFw`f^i _dqG&}v-X=Pu,[LGFEH7]5=Ru/XB F6JhTOim1;N>/Q=lFS>7\stand35w`銂p4u_iy2y(OTKgtQlisUjdivn^AvXd[{sFwyHo+N"iHSQmtmtF=wk~dkDU|+Ky!{/TQsIXsWW:h`zOnOv}gBwp rɉT }n:`?Ň,Qǐa*V/hfE"_P>`7]"jGYM[:t\>.pdih]rr{dtr l|} <}%w8|!.x,g+pNu%oYme}0l mo/ko{qbXlp |$wF1r ,l{'lWhUcA~ `օMǏw萓uB p\Dtr]ic "M,0 %O=?yI C5t??9AI;=54Le _2^J4p& d 5{9#"y5 l3 s!X*;GMj@-`J<uMvZo]9CL`G7SdV|=Rs>X]rr9JIdqT Y~M)<z4v`dtTb _ DAg}2f֘5׍ZVgwaFm\T]tFw^f]i ]do]n'qVlu\~"9vpz0z+@C1G,2Ia'<)YR.FF.j=hKU^B5mcy:y?isZ+PO섓%ǽ ùۓϋU󑓎ڊG='!Şɑ֠ ۋU>÷Uѿ?mϳ:q!mד^ǕcߐK;ڠ5bŀ|h'46w| @̓zeۿ'_ֺK5`{ӈ[rWȍ:`c< TeB rJ{R 7LN #\O/%=&S#_+r8.xK]d/@VpnGIkN1BS(P=6f1ӌ$@ƍj8>]n4΃nRL!bU> l@;Bv8X7k*ZnV"?ZrC^1>J6RA(Db-aL$R}Na?G%yv-U=Ov,[IGFEF7]5:Ru.UA F3JhSLij1>fK=PR>p8nstand36w_銂p4v^iy2z(OTKftQkirUkcivm^Au—Xb[{rFwxHo+N"iVSQltmrF=widiDU{+Jy ~{.~SOsHVsXU:g`xNnOu{gBxo sʄU1}l:`>Ƈ,Pɐb*V.hdE"^P>_5\!hGXK[9r[>-pcgh]wtvi vw l  1%z8}!.y,k)qNy#pYue/rnr/s ovzcXod ~'yF1s ,n&mWiV!eA bԇMƾƌw獕wBp\Dur]jc "M,0%O>@yI D5t??8AI;=44Le ^3]J4o& c 4{8#"y5 l3s X*9GMh@-`H<Qt?X\rr9JIdpT X~M)<}{4v`dsTb _ DAe}2d֘5؍[Ugx`Fn[T^sFw]f[i ]do4V&6$";[!{<NQ>'W.D2VB]r%rVqva"9{n}0{+D@0D/.H_'A&YV,FF-jBhIT^B5ncv:{?fs[+QO酓%ž ۑϊU򐜏؊G='!ş~ȑա ڋU>ĴUѻ?mϰ:q!m֓^ǕcߐK;ڠ5bĀ}h'4dw| @̓zf'_ԺK5a{ӈ[sWȍ:ac< WeE rN{U 4NQ #`P.%>$T"_-r4/xM]e.@XpnGIkO1BS(N>5g2:$=Ǎj7>_n6ЃnPL!cT> l>;Bv6X7k'ZnV ?ZrA^1>H6RA&Db+aL"R}N_?G$wv-T=Nv,[GHFED8]58Ru-S@} F1JhRJhh11o>+=[R>8)tstand37w^ꊂo4v^iy2y(OS~LetQjjqUlbiwm^At×Wa[|rFxwHo+O"iVSQktmqF=vgdgDT{+Iz|{-|SMsGTsXT:f_wMnOtyhBxm sʄU1}j:_<Ƈ+Oʐb*U,hbE!]QK^4[!gGWI[9pZ>-pbeh]|uwn w| l 1%~7}!.y,o(qN}#qT|f-xot%{ pw d]qd*{?1t"-o&nX kJ$g>cшMƼŊw狗xDp\Dur]jd "M,0%O>@yJ D5s??7AI;=44Le ]3\J4o& b 3{8#!y5 l3s X*8GMgA-aG<f?uMv\o_9D=aI7SfW{>Pt?X[~sr:JJdoU W~N)<{{4v`drTb _ CBd}3c֘5؍[Tgy`Fo[T^rFw]f[h\dncSmdpLhj^vleq pTivjaounr(l B>'<A1V)3(@\%{@RT< Z-G0VF]v$sVuwa"5n/|(F>0BÎ3*G^'F#YZ*FG+jGhGS ^B5pcs:}?ds]+SO熓% ڏΈވU򏜐؊G?'!ş~Ǒբ؋_>űUҹ4mή:q!m֓_ǕcߐK;ڠ5cĀ~i'?dw| @̍zg'_ӺK5b{҈[sXɍ:bc< ZeG rP{W 4PS #cQ-%?"ɍU!_.r11xN]e-@ZpmGIkP1BR'K?5h2:$;ȍj6>`n7҂nNL!cR> m=;Bv4X7k%ZnV?Zr?^1>G6RA%Db)bL!R}N^?G#uv-R=Nw,[FHFFB8]47Ru,Q?{F/JhRHgg1J> =5R>$!8o8stand38x^늃o4w]iy y,NS}LdtQijqUlbiwl^As×W`[|qFxwHo+O"iVS~QjtloF=vfdfDSz+Hzz|,{RLsGSsXS:e_uMoOtxhBxl tʄV1}i8_;LJ+Nʐc*U+h`E!]QK]2[ fGWH[8oZ>,pbdh]uwr x l !1%7~!.z'r'rN"qTf!-}ou%qw e] t6,|?1t"-pM%nX"lJ&i>dϊMƺĈw爙zDp\Dvr]kd "M,0%O>~@yJ E44Me ]3\J5o& b3{7#!y5 l3sX*7GNfA-aF<f?uNv\o_9E=aI8SfW{>Ot?X[}sr:JJdo U W~N)an8҂oML!cQ> m<;Bv3X7k$ZnV?Zs>_1>F6RA$Db'bLR}N]?G#tw-Q=Mw,[EHFFB8]46Ru+O>zF.KhQGge1,{>= NR>'8Յ;Pstand39x^늃o4w]ix y,NR}LctQhjpUmbiwl_Ar×W_[|rFxwHo,O"iVS~QiuloF=ufd~eDSz+Hzz|,{RLsFRsXR:d_uLoOtxhBxk tʉV1}h8_;Ƈ+Nʐc*T*h`E!\QK\2[ fGWH[8oY>+~pbdh]vru x l"1&7~!.z't'rN#rTg$-o v#qw f]u6.}31t"-pM%n]#mJ)j> d΋MǹÇw憛{Dp\Dvr]kd "M,0%G?~@yJ E44Me ^3\J5o& b3{8#!y6 l4s X*7GNfA-aF<f?uNv\o_9E=aI8SfXz>Ot?XZ}sr:JJdn U W~N)bn8ӂoML!cQ> m<;Bv3X7k$ZnV?Zs=_1>F6RA$Db'aLR}O]?G"tw-Q=Mw,[EHFFB8]45Ru+O>yF.KhQGge1=Z=֦R>)8|.Ystand40x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1 :>->6wN>쉹mԡrun140Q报]4Oij-j'ifRvW[UQbY^yLvM^]?aHg't^lNeVu`C},]xFgCi}~|'_xWLv{aP}=i}?{gE ~? ^fzlNkbKc uƇqkʄ e5=;,ƒm~ 0dk=s/vet;cl6^p;ilK{qw|,]UkXa^thww+~-,/u-smPmYg0|"m+qtkie&u5& 2s+(k'hQic&h@*cKaP]}ʈÜzx{Ϥŏbkˣ:Lcg` ceFRrX\lPnȉ͆H|,y2{-} HgR_GDP2t:fI X4J^DG\4Pmi_!k\#%Om 3^y >]{GCZH8]H:rIHX1Bo]]A+PT-JN:.YYHO16Ea6_{+MpCbo\m:\u;Hzq}"kv.bk+Ou:GTJ_Yd\VKLfX8`Rrbatqqq2ÃV)orOt>@q_"x=So}icHZx_vzsAAmV8|{SkuS*2ij3m`\Tp tygyQ}pNϠoiύEgP7KT\?P싑NkPo]%Cǻ2%pg [Oh㆘nnh}j]OM_sO^ɡ OaĪNsll\mcOcŠЈOؓ$Ė4ћ/ÊfZl|arz[r>c j#}tlFz+?py Httdi]ÚeHzM%|nkv:^xۄfyu0bɑA-pFiy=""'. Ñ'@ i j^2J7GMN->+ď+ք<0t;I'9͉cY&/U[0-MT$jIOi<YJ8%sLAJHAQ11q76_/'mUY=ZH{FD?jev!hN;KTG1Y^3Gsq3{ltRe8;c>s7[q.C >>٧8>yfHrun240T특d5Tbq s'ojUuY큥cUWba_vKxP]f?jHp&n_zrl[vfJs'f~?sJBj'41J}{=P}s@ieBiF < tc =rNrufKj1{΋pl؆2m3@9'Ăfs!3ew>o*xWvk@`Z3uCsz?]ML{N~zM8Vpn^e^[i`wn: e1e%3m5_3ZW#TYR8aW[6X`UE6^/2h 8W('O(MR!Pe,O@2JKJXcbrbkLЊZ˨~Ι6}ƥ2s}Ikonf\lDnVzm[\QqPsciO,0%Oy@:mLF=)wF~ M8 A"AF6OD!Q >d XQ[O!@f Xj#St+7a-$^,$q+9tp$DomU=,dF'Af(+^h?O2;Th@`u2_Piisf|xNv}w}k|1W|:PlTvh\Sql(cc/z=fqExuTɊ[7ƙY):HÆd;@8WbO":RGpqFZ\d}z$ƒ,҆C.vAG-4Ƌ}N!%hO)bC<V-^d$!B>Y9:>O>mr~,run340_銩l4^ix y'pxtupattekU`bh_`[v}Z]l?pHv&Znr{NwtweumAv's|?uA>k'.}.Xz{<^}zRijRiQfM qm 9pNufKp xɇZ{2q5G;f:ăVw$;pv?S?vFxGF^FG8P^NZuL}G6borle_s wv|;&{*),t(pmPk`k&s' q{hvjij4x0'kAjfigc]\U aӌaَ՟zzP}ۙpդj:>Jv dk{As\lyD&ezh[{ |Ng,f0G $>Ox59^xBNAn4=@BgMb"/d,+d>h]/p(Mw6j\hjka_0F^6VitTcl^rfTgmlowr4‡n}OG*F/+ֺn^&TSaml_|ˉVȎV>[h>N՜8ƝNѥ4äolcbͩ\ȑVVҝV ٝ5-֐DIR{\Wg\rÝ?^͗Mk_̨!lƈ7u+?i⃝ |HfБzpYAǛS"JsM,jzЌ^jJt0H͏B/b"Fgx%=+'"-8 )ď0_hh%j^9U$6OMY-{Md;ǎ8ׄD@6>FG>o6run440y늩4vi-({tUwi~^wxtq]FJ(wS~tC'w?AcyXv_hy}gplpiii yl `jQ`K Ɔy25];uYɀz$Pp?i_{n&W]ceem\tpulcql~a^b_~rq;t!{?w'/f/|'h'wMW#]z^ww!v(_|um&hdvs} nE{|5p!o@`rbn`swjkXkc``kύ͝䒞ѩɷgÜ>G[8_Mw9(x^l|bwt+r gi<:OK QN,_]>eTE,H0NYO< &2% =rP̉GǍqXq^^kp:o dj ^[I}I~TeTo=RD\qPajom0u1v|n{u2e/v:GIX]I%I#T-n`"obY`NC'lBK4 HB|h)W( DA]}U;qpthQ1Qf9Br~[Jza=&s)n84`T ||z}rwӘsэmgu7qUFyx xop7/U4['r\ ~ass#Bppg){O^A[[8~hX,m5_Lŋi+kh/WCuB<݄)ih']M쑏|շąѯjJ␕׋uM+ˡ}̒٦܎J+щJؔ)šnϟ1Í\ޡ{Žғ|ЗDG ܥ/yd"=Fh} H̏itÕ"JѺG*x̊]rɑ̌C؄dTZ)wu2ju;dZ6zvpA@\Tfv}\dzJokgl?YwsyZ/qEC]WgzY|yjucXof G>>5>M}~run540늢4~i-(ptovtTi^R|csFJ&UhQtsvq_b,h{Fmw_/X(!{qy{"v}W`iIbgqm2Vw Y *mN]aK~1y…`04yZ:Lbaz(hGm~vD:j~MoSaJ[)m7^^\2pt:iS{lV}a^hwv\{ljt9~$ y2{$~'wKd(qNo pRij%{(f tm'qxyriZm7<~)s>h#pmjkmq{fT_JpaWĉӏG r|ӑe0\D0r WIkJu]~` QK K0&1d%Bm4~MMM 5|M]sTb]vsow:udvp^tZEtK?0e<7`sFYD|}]Qb}zmoo:-(><,O,ZF(^; I?TB.[j$sTczq| 7omy*z>PLMNa:Ehm(D6X\8E\IԂE0zkh vR9vcw9ore3XK/ Ȅ}~_~H3( !ϙψܞ ۃf?ȸ_ѿ5jȹq"dƻ܇Q_эeK~ 0^}{i$Cew~ ǻJshྜ$UݭIҵ3k}lX}]ǎ8e^Ŀ5 /fz/w-4C=7$:xN'f@׎vBYR+zAD֔\/ji.[sJTy2d}cMo.llK^nSꆌV9IOݐ|UJ<6g8⇝SD)>wD>춃Ԉ1۽run640an5_p{ {'iykviaukflUabifVc{mZ[n?qJx(Wwo|Spuqfu{kBu({hzFhBAjy(3w'X}{5^jLi\LhvR WW hk ;kNnraJk zȆ]2j9CċOC΀`,z5mhF@J|NHz<]6P@rM]F[tM|H0_pg^c^{x } 0$-~"'|(sSt`q%' xts}pat41'w>toqZl`eJ h[ƊĘvܑȦŴiƓ:zK})dz[Bm7xsr+a3f@y6u,(.*,NЃ[9yji͟[=jgyM"eIwJ XASp\Y:]Vd9P]VD>ZqC-si25pM/ED\CLRbS[uBXzYheofx pUu~|vv2pp2Yz:bZ>pdZQzbuU/݃Vf|`x}koEo=ڠUHx:ʧ_ZPx ܩj!UVZcQ~bcamqsːc3tW{mA~zs-bftz5~_mU| |_wa`}U]ҠSyҍUg`7[Uyl?`~^{|`on1Uk``vne^w!msz-{*n?Yh]Yy^Kt`_+P KEI~|Sz6Lyjwzvy듁nTivlbn~rnq(ns/"X,s$U\$\uaY{u0) y$U{\vU}b!5(~(u1NU>e!hS{^&4m1ʈymfOD0oA0~,bi ^}ߒ۳תlt̅JTƊow[ΊNxړ(]ؔt؝W؛{q̡yɉJ{Ք(ɄJԎ,̙2cbɜ_’jeqCvΎG| {Π%n‚6=Fhހ VwˏiqU›l UG)mxΌ]tUˑ8=2L>fsattack1l]wn9nZil p(KM|I`tLgfk@h]iqg^ApRZ[umFrrJj|+P"eVQzPeuehDy=nbydr\fQrz+Ht%wv1xQGsGNsRM ;c ZpLhOmubBncoƄW1s_8U4Ç,Nd)K%h}UE%^UKR,[%hLUD[;kW~A1{j^`b] 2#2"*,}ODzy *{~%xvX zE8*>-")~ xS#rJr֚ĸ Ƌs蔠ཅCp\Dwr~]jg"G,0%G;?yK B5|A|53A>:40F@e\*XJ+k& _/{2y-l+s1)DOX;/\839I8p1N>~RH^iD[uBIirIgn{Xi8w[x:\O~t}mw9|ie5oKykKAhcZrzZN%:fT'G<5^1:%5ƍ_.CXʌ6Ӂk6!>K>f#attack2wU~f4wUbss tv'OqSkRTuUYkfUnYbvd_G]^R]zi?vmHmt,K|c{OUmV\uleCw+u_zE~cDKpz(@t(^v4b|]AhREsaGDO_hGiOpobAue iljMy {d9l5Ë=8|Ty,h%maF1BF|Ln.\/K>b?\@ZR}L3ejeYb^z"4 3?<'-|S/@xVrb^BC[QM -u#rO48z~6/A?:6,FAeR+OJ+a& T*|. y.l,s6&CRQ;/a619O6p4F>GJfz<^8MpGiZj9[x;gJ~vz}lx0ii5{LyWK@p_Zt[nF)0f6vBxLEO36IT>~1QXJr6Jm~9[Xnms3KEEbN Q~~H*}1yp}vx3r|UeeT_{ \FmIRx>OҠ:pՍcJgzX4rSV_c?wShNdqU6~dxʌVщq:@#c?4 j-.@{!IFrLpX3Zz)QGeN DiZ:jV{0j=S>EeO>*p*_attack3lrx~4mkph-l(8<:nv=w_t_cjporf6\vY\ctx?n{Jc&*xHS@Apv_rC]'ucx4xrC$vWs&}jAs{"K~}cCpV>maW :QPk&t`Ski_KjwG%R rx.zL ?9ŀ J 8ow3,:vUI?f%@}i1Ä4q@*vGkj@cn&t0h{#vtE{-}q8iC~?.tS8,ƒl<ȀNEU+t@nűĥZ@=ǟOIɪ,1Ђa;ec+v[/`DQŶ% H36nAA+}D⎀I^ qGv1u?Bn]ğ~Ӈ*eCA85|ZOai>QӍB0ƖXBz[-Q&uPIF0s-چ?EA9"33A+N3P66\2V0d-2Py=|XJyoC;G#ElS-7Edo 6G3v*5^aNs9-~4UzIpc6lV >[>'@E>m2@vqattack4qh|v4reip-s(HKGivKogrUigpto^?]vXZ\xtFtxJk&9yO~SN}Nmv`nCS'ei~FhmB#N}'sNt{U}TGiIFidS DR Lj %hN^ueKkq Wą;a2pq5uF;C;̀8U'o4pxp?1?}(TOk;^$CuXF^,Rt,XO XiXZ_ef x ! /$2+*HYf,& tG l0(-&?R]mcDXbmi;svBǁ.f<kuo_̃vv5_WAv6;vcCR sX^44FEN%l$jO=:vEllJ@)]ES/Ki1R+=kC<:FH5T>vAk^ ] i=XQ GbM@-z;65p:oEI`Et8RbSh:Q*iyA\@kosg}1dӠ0ҍ[Zgve7n`UXu?ph_f^{gozv1a[k?hvNn>` N}o-{*u?__h^cYXe]Ptaggf+cV hPEeO ]SfdeL`Vva[d{uTzqvsbzuzzvy(vx _qzp #N)_ d^8., 1)HRO/t zWCNe'+e8KJjM$wRD+tUI䇌58N14Xe{f3,hi zT w"l73b(!|TMCjT=qV|3I{$SqD5%Gi5AQI$SÅ]4YLbLZ?]nWҁsUVA{Vo2 +^UHNV°(Nڂr@> ,_attack5~4zi-(jrgvp`{i^L|{kt[FV(TtNonvBq,F~_*k'vvsz}hki[li|l Ps a 0kOi> Ň`04^‹@be,uRi}D'i|HOoX]o+li].v4vO"hW|gf } 0"+)"#HbK H zo<fNPx\miIvv[҆j9jRuoք{9ZB6;cCm sy^CBd]N'/$OϦ?:FlL ˾B.~F|nZKL1mW?MC eImHEvgIvJXTEk>~<iNCXhLHoA-_75I;d[cCJ`u_yKd|k6t8;zu|2s.{ɐSKaeP%爀}뇊 T}υbˈϊ(׈ k&G(o\O!uWx|mU#~'-N2!y\m\n$=<Jr.WEYƎb'}V_Na/?pZ (Xl"b+UD+YI㌌?:O75Wi{%jI<- R w*mˍ˗ PEa:˘ (T!ʍRoRLwv~3b$lsfdÀ3xaJK&È4ʘ"?KCmӁVx{pdBWȷUǩNƱ(܂:\U{.PȒf*uTEMySOCX[h]&rO׏O\b9j@@>жI>|z6Xattack6}ފ4|b~ ~'W\X}v\rUvb_@{Vz]?~Hv(G`O\]ugAj,z{FwB>|g|'5o.l6y}ezi\|ziZn=u†YBdOvc>riĉLȄ{ w9da2f|U{%\ZiF&pD|Iae]#|:hy]@DmL9bWqaf(37E9F$-=)x(?xA%"vQ-vq}B}D"1 xC*~k: =uZ0 tH*rN$w%s# mXsчZ܉מxSؓmՠy֬kڈF6;cCnqu^USidN'/#O=:BlJA.uB|prId1nn3fC2~YHV4;` v:cX^\kzVzTi[[Xh^B~>-r45\6dav?SD_Qom:m:{;p|q| r1{ZC|[eW-;B?wMxûY7[.@I`F7ScT:NEh?\WlsY6r*xY%zB 64l<#zB#KO>lLQkK:,;bHZ=\n/]X7͉d1۔.k`LUJz'ʀΓVuĔhwǛ۠uѥ٪sϭƨšZӬΖV١߉V'ؙ4-ՍfӡXÙTd[6ОLlѮ-X}vn$4Er| KuЍxqw [ǜy#@(5UtulYeMɍЌVfbJBuU>|XBFUKZF,lEVW,CPVL].Cw%Z4FI=[`N_V>mn`Hsl0Ps!3mI`lX:-bhUB_En=LȁvDy7"n0AdL4YMdV3\jTq1!>M>7pKfBattack7~|㊇4~zi}-~'W[W}v[rUt|i~^AVw]?~Hv(J"cO\\vhBs+y|EyBGo}(=s*r4~{_rhVu~gXjrkƉP x8aZ1c|Y*YPhF&oIK_[]$|@bp]?MwK6hWld^Cy~7{CLY$@*qSJ"r^5r_~39wY v=8~~6 suWznW^ueL%pGLmSDpNn]S h^@jNȽ֋ԝ{Nսh¢©φFo\Dr]xr O+0%ODDyNJ0~BhlI|[1gg3]C-zRHR.|1W t3ZXWRkrKrIiTQXWTDq}@-g8NMkB]\ms@KQ6^ʁX L|U/x w3{`lTh eMN|}Ay͘@͍gpg{7xvTf?~|nzm{o{gS(9GlR/z>&SMcENI[yDLxqv!*8{5Yattack8x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1B>)>TV>%Ba/ =pain101"Wy5c7Wm#p9r%v qӓ_Ơ bБDgCA[iMbEl4^]Ke;Nj=Cq%)E}H*r)dğHjFn)jf6ffDI|n)Eovj%wwATs=Y{s.S`CqNfHtshCPfHÁ+_ Wd:7BQ;k/48hoa6].s>E@^ g-@R^)oHn>/xbRcdf^otb wqjz<~%z$v=jpNuo]biy3er k*fr}d fhbynsBx!s ymqn}fS`Jnb~[ׇϘzӇi̔kϗnvBܘpٖ\B]"M, 0ް-ܴG}M~GxQS1CUPKi<1SL3l=D[i]: t<XD7k\-\+hB5X=9C\^=-oH7<\1:p;T=J[csGg?[kwOslY}saSYo|}n ot1jVi\>reaQ}j}[0yPewMr\txmnp;͓V3wpVBVteCORjH[UxnrFCWof\'GZ.x ntJr MwF6hC-{!: v```|9RaHXҋIVC$g<U U} r*T&a"Ns ^Ǡ_ז tʜ#}!mo,n Cc<.Tg+WB ZDWX,X2H C׌@~+wK,sn!0 rx uҡݞ~8cC4_:]p/b4g5`:c%3^~L9#4>F0T37-)>*(?R\4'`(L-TF[prTj wZ7um~y>V6HFC',Y'`f_*<8LkW2I pf̫5{=ݻmW&NSv ~־ ͽbŔNQesQgѢTĩm̪ Ulx[~ǨjŕNmΡ܆N ѐFޖ/І_jȡ"?oREEřIY é/@}_pc`$j4k6]s\ߒ`hAU˓WsV=[$yBwLy02tTvΈi\@.cӋ7res1P )"6"s !{+%4".!*$(.&<$00/fs4P!x1\E3B8 nFKI9X YKB9B;>F>?8**}LF!pP9 zA5B8Q4},Rof)8Z?W1MG2RR,>t.Z_)Lx\X:I lh?K6PDk'hIG4ZA5^C;Mu'Uz1wV6HmJS\k|2>sG>K>C+Kpain102$e:m7^k.C{*#MlҠsܒGiD@_hOcdq4b]Oh:Rl?Jv*+"EH1{"+lΡHoEa)[i6\jf9_)3s {o{|3Ts-Z}s3WeX13kD$lC"s.2X37DR`@-eH7lB8i?hm5n;r;lAn*:l:5"69)~U!-6Z{5EI5'M+ ?)U<\mvUk }az5s nv%~L>7OG+'']'D^N*4"8Â;hY8J0WeƔ5_=k7Iy.Taauh'kݦ ԧLȊQA{NzCšZؕL͢eԜ1Qʩt`qs˖1TNJQ_ԓlovv'tDy)wm]\͔DY=reoƇHa1uǘ)CŁ^pyo'?y6tzm~ n@\ȍaz\>]λ'u_vH}3>}_҈i[N2Ǐn::rc{0[ :d(s1}7!4/+2&$A(.;,/Ǎ5._s5ƃ1\C4@;pHMIDZ2[NBDB;?ÏG>>@(Ɍ(сtLHgQ: qA5A~5Q4u(So]&8Z{=Y1CG3RI)?m)[V$LxRYeK>j1pain103]cqp9g^mb n,:74iߖ3p~enBcaitif0s×Ka[xn4vsAj~+@"_OEBlՖcpD})ridxifHw+>w }u}DOs:VsLT)e SwFlOv{hCqm lʉI1wj8U=ŇOʐX*H.hcE ]BHQ6] h5GL]%rMH kP`gg^zz}|1.!%}$}tNu]j2tw/uu hXtd F*y%t sWoVkAgrủ|pNzz۰ֿfBչpҶ \ Dr ] " M+1- GבJMyW ߳P5LJA>V;G=4Ze`5cJ6q'c5 {8,'y=l<s'&X31E[`@-rC9Ɠ[oi`'Ḛ_. x{w5u_Yr_U Y'/+h{eϠ$ϓPSgr]8iX@Jt4ZcBcG j`njr LUz%it2n|)U 4^ o*}o4QYhO^`EbCIMcX`)IN PH6FFUV]o\=RJtTOTrpUokvkinqpv}ps+oD2"0D%U&&%C \ {CVW3]' K$UK\wU|a5n&(G4MA1 8\'M`^$48.ȂHh3URE0acrK }P4HM$bF2,2$ˍL#_s -#ʃE ]\,@SpdHIbV22WJ19ބa9:9ɏb8>Ž*ՁHItN; :6B-S4Uog9Z6[1HC4RN @y ]^Nx[X=Iro7I8PBr'jDI4W<6^<2PuR+}S,KmHN_m2=[=ڦR>)8|7Ypain104x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1z=_(>a>27g Lpain201 )o!]Ɣ_юmxi_ofPvuza=JGQvTlvzB=dwd{EfxsLXm$rt7u~gTzXV~wwzL} x]dOm`BxP-0k Gh~W'Vl47i{FKTi8eu@nShGnp=4siw^c\ q {:.'(LmP~Zf =l(tkrd8B|$}uW{Uo[zvZj{Lc_ljkNDΐ pʍ\Du]  "G,0Ԩ %ѫHs8v=ŞA ;9jW>2S}ZK#6Njfx:hviu˅5AxFpvƙK'f~ٍG3~;oy)__qpTče˃[zqFn3`y= k9-ՊbxkP͍n`!'=n\ύx"&F tY9lIvˇlyi `ȗd `y6~ʍG =6;:*]!2#)v>h#-~D![(U9Gd7#C*]G gw]z i!4"JF=QVi37hoG>%`1Du[ʆM+jxw#a?ѨQd{)ټQ>́+J(]_EuGGwo"atAjY'zvEp)uDmM*xJv*~k{]shaxKkYMnO}WYYGe4b,^b?{ZKwbhjtDQlS~Ƥ%^x&u7vm䯞L4x翈vܷͤ@eͧyȱU٠?T֖B~ՒV؜(bƒ b`ǻFtƶ/CE֧%Z׬|SogOwpS||P4r\t\'gvc(aVΔ~ScN@x=XPIЀx;ZMfC͊gJ}/bEqÓ^oi;BdĔZCOԋVU>N!>A-@B,[7"_nqGg6`1S5 ^>{7- pain202ދ3o&cΓgnxn_pfP|vrq\?V&VzTnuwB=bydsEg{vLXp$rv7tgOzXSstmJtx}^fOnbBX2<[Ņ@^Őb,Flt71cOKGg1cGmNsFlp=5ukx^d\t;/&+ #L}R\| })},{~E:$A% ~yTsJunepEhwIz8\W-vsj8kwv~:}]>ϝ p˚\D]~ "G,0Ը %ѻH}9~=yD =5sYA3S\N#8Ngj;Xkvkuȑ6AʁFdz¤N'g~֙I3;pz)_`wtWd{уVqrFďqm4z`}? z82|lcxsWzk#(?zn]Սrv"(zuFw{Y7{LԇtxxՆnҔw `yd~&C2"!2B$`%)&uDg"|F[Y5c0K%`La` i 5%KG7NL[2-bh&@[a)DkJɇLknjV4^4#b(l7Gq1`Uu Z݊|@B꜄%{Yz5n  K Hd2‹,}YCfY7k^r+Hs [kD%jL!@? .=B*Y7\npCg4^1R79RVI#cfV}gJ@H+jo>?>_zo'w:KF^2<\G/Uu5QKu](OmeLd}2c=)4>'V>U 8pain203}狪3wp-&eړkjwvn脍Uup^P{tok[?V(\Vlozv|C=f}doEg|LYv$zy7{fOsWTspb Ipw}^kOveB{ Ąa x:~LDž:Xɐo,u8mm7,bZL)|%wxXtT oKm~gtytwӌpqPpnȐې1mAз pͳ\D]} "G,0 %HАO,AY :M*4\f Q@OJBa & W *,,y?l<w&80Ie\A/|==<`"Bn9RAOLXEa@OiMkmVu8_{vUpz,S2̓o/^>w->A!ʃg]5_upQI_2Xd7ZSHC:3Iɍ@C}&ΊI+ՁEL!H? 38RTG"bcT}eT@G+rs_s'u>JF[8:]D1Tu5QL{[)MheJg1=X=R>*8zYpain204x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~xc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1%>LR/>_8>;o pain301~AkKEyEqV1\+mi"qa]VfTtYTpOq|SYPc̏\XSDYH`=^y!ouOkga[ۏobfu)huzDme_Ik+>"(}|KZq?d}cJ1OVׅ\lA|dgAz^wˈj}׆<|]6d;=It)Q5sz_D2VΐaOO@X'cN"PSX3oP{O%tT}c`%$l)r*y0vy@$v:@) ?9s*?0mL(9jM.0gQ%([G#s5&,eFc.#ft%!XC`i>rlJ*lD:6h$;2b&30b>'[VE'U@2+ȚֵϠ ʂr}|l횈Dq!eo] BGN`77&T,S,5t'/r=olEhwZK4_O|9AAB):9?FD)e]-[J.g& `>|@#1y0 l.z/9p:VEpDY^qTgz@ajoabzsi6qqvUfzknz}z:}h5iftp~FH_[wc"}N.9_=uHvUe\4G([nRsANf]fIDpCWOvrBINea |c!MY.{:rl^EdTsYS}i,|q,clUY|G_Xv^KryIeoJSpYD?lsBZ =iGiAwXUkN~fhg%tZT]yxc蒎gjnhLSH{AZIODㄚF=? V-`"PS ZN@M ;6-L+.? LS?,4kS"(p=(z6- zh<4q>&S&DJPYRLJ'?^E2y3B5QFw+Up[);q=Y#>I>nz9mApain302ilpEwhs0Ll"t]}jmyYjnhtqXJ|ǏZl|rfyxVyLX lSg"^~ْnwex)kyyermfKo+A"{(|L_qAi|r`c Gr \{ DtMheAys |ņc<|p8cPNj7bm+SChhE,mɐZVTHq$tJQYq4xR~V&pXb`C}7GjO ]9[ W,,Z!|>A%wNJv]4rb~?:{Yr)9}5pVpiY n`wfO'w'M"qMEtNlRReU?iswv˼ є~sɛ镊hBd\Dcl]XSs"nM,0%O>nl?zyOGAD%::=FF%e[-ZJ0g& `;{=#.y1 l.z+3AKSc?/cJ:9O4An3[BYIchX]wNMlqbg~ui:tuvWjzr#~x9|{l5liumP>c[y]&N*=f>Lv[d`9G=`M|:Oh[hBFys?XRsr;HIed ~Y PP)n`2lZaqXzQiAx|戌 pRl|fqpt!jkKf.I$T%@TL@/ @./,=C(@8 +=T"/F xT?qY7JmV%~>4JG;_ETf($6W=6eEG΂'1xXb _L7ac:m?yzGL=Vr},DZîޞ Ә̀UՌŃ{يM֍Lߓ ӗĘ ɃUЍLƴtUһ}=ȣpӰ9y[і thcȇK Ř5kh'Fdw~2Uz-uȽк,_H4p|lXgǍ:qc9 ]%bI-uU%|W,EV5[.,o)WF*B@S;`*4u%Pʕ15уD,X\?`Q,imRHv[>dP> 9ppain303nlxEwlh0LahV~`k}`kqhuu]FďYm[}yDy~VvLTkV_XؑmzE})pt|exmfOu+D}{*|O[sCcr\d Au ^~HqOnfAxv yƆ]1}s8aOȇ1bi+S@hiE&nŎVHXDq!tITVq6xVV)p\we]a{|T~cjlxGM4Z)Bw9[7m-_nW"EguDa1?C9RB)Jd2fO(XOX?H!{q0L>Ip(\GLFH><\6)8z@Ypain304x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1$=;u1>>m>jump14yv劁Frri{/u(IREy}P^|`brilx]6stVm\s|CmVf(6VVIG{{e}Fs+wvF{F9j(*m#q|\[hN]gYf 3hW|5yNosAq Yʆ6l y~3pS s(#$5,! r3R,v_0\i'^c`aSIWkqW-aL5vILdIbXht[Wdcmbf\bwhtdry6t:gdt0w.g^Hpumxm`$I_RyʘY\D]=KGc9UQݹe\!QQ?yW\X}~sSKc7Pf@|d%s xr?kY\Y[T;9x&vۖ(PhsppEdkTXC{wjwm2tda}?Q M4V0C%`Eaz`|i%5(I=5N:U*,Ma:[U*DVH·B!kVelS3̾tcȥ4z>k[HUR'#߶ ظ_ԒVAȜ^ȓzFћeJۣiަH٩~Ţr×Z{զgҔVlݝ&܇V'є7ߗ/ϊ^\ա>ŽcŘPDŞEx՘H` yԧ%Făhojat=q7hhd}u mJT˗`mL0L @qμIz*@xnӊ{\H,Ƒv;0ŔD{2Mh5dT4s^3}f74\@_<$oA\L,K@Дd@^<-s(Dę>2Ѓa-\wCBm1n|YHth2Eh",[̓FSuR;+N˔{MCq;ӌB<؁cYhP]HAP^?C^dDH\Te<]]JQnBP|Ae=YyllSG l|P\MPE ^\4qXK_YI`r1T1tqI\pZWfq W=P>=d>Z?$jump24xn犉v9{ki|-(KMFqtJupu_qlir^;lt_g\uFxJw(;^VROstouF~+oFsF>t(.|g}&k|eXhUZgb` 8c`t:rNyykA|v bƉ;w u(D3W,B}MLz'f͏J9VX ĥK=X7s=fCHi>8jSm+&|%8|,!k6Q,v[!4Yg+[c"\]iESgR-[D9FDe^[UTfEQquJi\z;kr;m;q_y x{ bulE{neQrۅk ݑE_̈MxW[F\=ԨGGc:OIPd ׭Y!ISGpQ\buxsLK^8X_E|^%| }4`gwUd d=:p}*oИ.ϓ]dsk7vgU\xFwn`mdlow;cek:q{Mt~=j O{2)vFbghakYYm\]ten#ml)dai]ee\eSpdr=ij]vlepvTsvsbwzvx(v-' (.^!u.h |-@!A,GG-6^5is^s m .}}K./QBW.WXH!rD$e\K̆/#f_%uL4ۗE1.i~,sH!~lǒ҃eМGGiƛgIȠa׬ EͫbѳAȰk~à^x̴mϟGjԫ G$թ9ޯ2֞BZʫAl RU]èF{Ѧ&bv˴-Szw6qg"{)y7ogl}}vKZ̗iiQ4Q"Az&/Gwz̊^N1×;4ĔD2Rp?oY|m=4cFgF'yMeN(PCϔlAc=2z)EÚ@8рf/Z>fs4nSJd/Og"1YǓMVR;/OȔHCy>ӋFBل[P`HX>JJQ?@ReB>]MZceL>>.6\5jump34b銓k7`ix2x(\|cyVh{^ltlUvbih^Igđc^[kFoV}v(O}j{S_wZjtukDx+sd}E~gf@o~+2wgyi|QOhCRslW J] ^l :lOnpeAk yĆW1j9xHË>M~],kd8Z_tz!ws~[X\,y'"oN&),N~J8vUjZ ӖM3W~CaIJS6HXCIVU s&6vG;~'$o2 T${\,Ks4Ia/K PV:Kz[M0M;7r9:bURPFmFEo`]a'>“b/s oqv4z`pnTq'mO{Jh8g٘>bZs_Ex\TjoCavb|| `plyyjm{}y kTh}gakojl(i &"#&`  u) i |*<9&B%.`0ad `fpv3q nK()GN&URG=e_>͆-jhV%rBFyC0*ii'^M|ꍗľ|źĆjcђHBǚ_ƑrHΛk٢'NԦlӫJѭ{yp[{ɪjΔHqա'ՉO۔,Ŗ6ќ0NJ^XȨ]|^_|šClК w˪%mkE =Fhۀ HzɏitR•p!JG)jx}Ȍ]uPȑɛF,ԁ^"[t2`n%pGHV0c]!=R_JC:9Gύ~j3>~(O*ExxWFI cmZLfWk&>Cojump44YneFZgr0u(jzsubc{mewjTx_gf]Do{UciDnVu(P!cNhwch{hp_j=]jqEel^9xaq+.jylzz8Vs,\wsaX2Fd Pu 3\O[xSBun;w\ ^!mbe\dWl\SqUH]U]gz|qfgxy۰iQKbZDcrr]SVy"rO(0%Ox5otDjK œ9?H~JR>T: ;GOFX:ew>nJBs ,sV SW,Az?0 l>.s(AX,.B_EA<,G'- ~Y.ZWiYXsin{4g~dnK//N5M&GZ&)XD"DN=ˇ3kQ[-bI4A@w5R)kZC$8v#ۚғktuVYهjy{cބ߃Lq ۏ pv}̏ yxV؃L_Vi=qpt9d[sՓhjǃWf}G<Ώ)f}b CezՀś2VÎhbʹ$UG3p}~nX[ʎ8b^5 y#e^%wq"k'Ci0u+'-a?(K4]2]3#w%<̔>'ӂM [^6`_#plLOzY.Y]4SWGxC90FԎh?@l+oK/݉u'>-j53%i''@sBEcCiH'XvMAqZ<:,RAzf+Z4K8Q+3a,2J _u"~z?(Ky'WGg -=P>Y$@>8|ܬ#jump54rꊏ}7oi2(\aU{{\t}`trix^FZp|FJ|LS"kS_Z}to}Dz=ltudvtfH|qv+=pr ~G^s;d{sag Du [ BcOj\B|{ {]1x8gS‹3bg+WEhpE%mĐROXJ[t@L[[,{OHeWr]]2 pv, yI|lGslSl4Zt0I'k,Gf-!n2h*\[j-.fU\*1fx-YVXbVkoXdBA$eA^9`FWSJPJ5Stvɇz˓sూdAd\D}r]nk"G,0%G8n=kLȹA5B|BL>L1;?IFP2en5jJ5y' oI {L$9z7'l6%s9X<;Dba=/qH29Z16p>Z@pKfsaWcHixbfn{jd8wntUdzsy |s;fLԌZG5NۡaѸT8MOe:]Tdr:>Kde~U$E}Q0{q{4`oTp'nPJzހ:z֘AbhsnEvjTiFrqtx op~wjl{~x }Ty}xi}{~(z 5C,/L"(:(D'6(&u.54#F!G;&U.007/&2m1trSqDF wiG jVD?N5X01Kj&B%]Y0FMGʉE#kOieW5Yf9h)gL(AOz#˴ °~ըˠxUct|{oM>|y!ђ{ф |`>pUy?nƅMua{,V8JmD_Zx2=Z=ئR>)8{5Yjump64x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1B>>X>OC8l tflip01t~}4r}is-s'JOIvOdUgiq^:Q{[vCqHi,HcVNMufF=s{{d|}eRwzLGuz-RgsFksOr2[KjOpdBp kńM v:V]ć$nÐ[ľ*ONhy6yL>ZR\EWdZ9Y>+n^xf]marX"f"j3^8k6t1=m_u6aYz*)^=Zbz|ąp% $:sJw_nw{ b6r`ĆʓރҜz߱sB p\Dqr{]f` "}M,0%G;|=yG A5q==UAG9;;R4J9e u1tJ3& y Q{U"By3.l1,s@X&VFH~@-[c<|oL]hb_qaMitgjprlo}uz^lz}y} x"Ҙ~͋r ۂ_>_̈3ǔC>7?KAH,OKDW+1N˓FF^:wY À;0[VBfF3md\Kdp2>~!#s5f[Yԋdē^NDN>ϊ(KhjL!]m> g[;CoTX9dHZnQA?Zk]^1:c5R>R^>qv8ũflip02u݊4siu-t(KQIvPdUgiq^8P\vCrHj(FbJNNteF=yuyd|EX{}uLKp#y3YczLfwJy -_NgStbBnfH~ u:TdĆ!sXȶ"*PQkz8{J¬L`RZ"~H`aZ@`>/mbpe[ v  3!'4(&D>?F4p3m4d/*I3p2$($t-$$!%<(FCE9?<B ? 6sˁ؉}{ǏnД0fJ p\Dsr}]gb "G,0%G7;yD =5x;>NAH2:=L4K3e n2nJ4~& s K{N#;y4(l2%s:%SEG|?-[a<0_/l) g }%<4.+&. lă2l 1" ><:e;fV%!WYY4 s* dž)k%Ot,Bd]B+cIo~OvJPq}{}2꧅st_QxmyxXuRtyIXyNnQ~xЏwĄhxwx_w|Ky_|LЌ;/łp[ۆYɵfłchτFpzVvԷ-t'j8~w?9{yx~Է@k۷tjf"M֪hfJ߰)T}|΅a]Fø1Kϳdڼ/eCan1Z}9bAX7=f">l(M|BhL.[ϕDSaC}[O~97gUBcEAҊb^@a~/:w2zYk1j”\QDLPׅ%_giL!]k> gYRt,U^EF>^7]1RPu0cF @LHhUZnkt|+>K\>TD\flip034i-(V[TvZr_ti^HaxZFJw(WtJ[YtvE=mydtEh{uL[p3{yD}l]z^`w[t =p_gSwbBxY ;dbƆ0ni"*aQkr8*u[>qPZ3vZs]gRwr>?|nthe[ }ۛ""(<2="&CC@ 6*a.h>E,%&?p-'.r68%J=G5Dj:=C 9ɼhuͅzݍʊ̐w/aJpٴ\ڲDr]ws "G,0%O7;yD ǭ=5eL[Y^ZMi]ipdjohx:w`yuupۈe}smx Tvb( (K(Th#+"}4.23%D.3(h$},h݀:1%>8-)cFiO5aUE w'+Ň?j7ck,Y\ V@~'\M}7xPuLwx{ڀ⪄-;~r@_x}xyctRvwG]wpU|i}ΈvB|zIt@x&̈<ل#6diwq~i?zxSĵyͅ9M=9j~µ@zǵlsծ"\uӤf̣J̮+e}΅amW2ZEɺ/rһN`n=[}EbMX8JeKj([wQfL;\ѕPSa$I} ^)S~C zScu,hXFFPW7]BMQuB]Xz RHHhhUn~l}]>A4flip04uሄ9xiw-|(LNItLo_pm}^FayZFJu+VuJTQtx7=mwdsEgysLXo/yx@|m^z^`zZu :q\eSv`BzY ;ddņ,pj"*`Skr8%v[>qRg-vYt]gOvq>;zluhd\}̚#"؜819&'D>@7, a. h<0">86c4k tQ!4%/ 5n"1 1ͼ}i{uʂwڊˇ8ˍt%^Vp\Dr]ur"O+߿0%Oȑ6;yD Ъ<5%nY;aJ[W^VLi\gpei7hv:xa~wut5rb3^yqEVi\}YG,؏5f8u̅EvP6S5:L܈V̱@2SZثM7Neh9Xp}hr4KDdyM h~~ŨH.~;{w4}_gUc dA?}1Ƞ3Ɠ^xs~7t|U]Ft_b o1czk>{N~@h Pv-)Fb|haYZ\qtdk)cvhqEdpdSnoo=gj\viމcۓlTvb(-$L/Uh*/%}7155+F,7'"!h 'x, hπ5 =810fFlO;QeZF&r%.9j:bn%T]ɅS@z'YMy7tMsIr|xt|ߦ-1|o@\ur}vy`rRqtGWtj|NzmyȄt@wwGq@t&ʅ1׀#|6`j|vqm?uuStǂ9׼M=Ҿ9j~@zòlsЫ"ZtΠfȟJɪ+g̃˅amV2YEƶ/rͷG[n6Yv=]GV8Db"Cd(RnMe+6\ΜMTaJvaP"S~??gaHcKEЈs]@tv2J-v=tff $ljSEUPׇ+_|`J!pa= |S;COW4zDYne=?aW\1HW5RMADpG`Y?QYi>G4wu5`>bs,hWEFOV7]@LPu@\Vy RHHhiVnl{17~=i1>]>8Ji flip05k}9s|mny,FDAtA~oBo}m~fEarZ4Au+TuUQNȖy~7=fwdmEfysLVo,px>snVz_Wz[o 9{q{[eSn`B}zW z;f^Ɔ+ii"*bLkl8#oX>tKg,nVvUgOnp>9qlw_d\%  !!)@-A%&O>J78b9k uKEvI e! M2G(H :.Z1s):@(wϺ|izrƀuֈɅ8ɋr%\Vp\Dr]vr"O+0%O͋7;yD դ<5<|H?AT(:G=4W(e Y9YJ;h& ] <{>*/y=l:s#.2DFVg>%oQ;VI[M^KLiSgp]h7av:zY~{wns5kb)VyjEVa[vY|G,߉5fƄ8u~EvP6S5;LVѫ@2SZަM7Ndg9Xqugr5KŌEdyM h~~ɢH.~1sw5_d_`'d<8{-Ġ1“]sg}{9uwUW4gQU w~nw Zuz4t@|7a Ck-{*4]xh\|`RRlߖ[e})Xq ^l6Uk`Viog=_ڂVt`߉[ۓa~U{vpzߐ|(:K+`,m"q } $ #*@ F4.'-mǃ7m#= &H9_Z6QY`>G2nu3X=a|s,iOEFNM6]@CPu?SUq R?HhjNnd{12L=N6>\j>8eflip06d׈xtzoXh`Yzz]s:|r~Z`Sq[BwT ;jb-jd,hPkr9%oT>zOg-mRwWgOoo>9rfxb^\VMJ$Ti%#g-|Lx9lblmSce#/[ c[0HHvGR#ou7o og w_ jb\dϼuirrxn׀~8ʃk%WV p\Dr]wr "O+0 %OΎ48y@ Ԧ:59|HCAT,:GA 4W,e \9\J:k& ` ?{B*3y=#l:!s#22GBVj;-oU80SVܨJ4Ncb6Xqwbr2KŏAdsJ gw~ȤE.x1vqm>8xflip07_։u?–:̐rBomeDcwa9>v+NpUSOx7|=jpEuEasmLRi+qq8sfvc^\[RR%[q%-o->~9obqmYcm#/` \c0OOvPZ$"v{7u om wf jjcd̼uirrwn}˂k%VV p\Dr]vq "O+0 %Oɐ58y@ Ω:58|GEAS.:FC 4V/e ^9^J9n& b B{E)6y<&l:$s"41IASl;-mX80SߚWժK5N`b6Xoxbs2KAdrJ ew~¦E*w1wp?pDYZ=LVf:G0po1]:_~m'gU@FLT3]?IJu?UyTr QEBijQxngt0{=3>\m>g8/flip08]։s6ufre^\ZOS']!r%-p-&~>|9jbmkVco#.^ \f0NNvT]$"xzEt dk wg jkabȼwisrxo܁̈́l%WJ pޯ\Dr]sn "O+0 %O58yA ƭ;58|EHAQ1:DF 4T1e b7bJ8r& f D{H(8y:(l8&s"7.LAOp;-i[88{1X9\~sz:tBS9XچAIh؊h Pz/Ŗ5Ӓ6^ 9_ p/9YzW^MEzИQ].JPyoCz_Uenb3Y˃TtZρW˜Wu_pupoӎsz+}b"KO'`VmH"q4&;x/-5+D2h+C\7'XmA#΃jmWn(2Y#y9b,eHaRE+q\FNk\4 Aj>3͐bq&dk-M@q'SMp7nIlEntxqt-1zeBWhrxky\eRohGTgQfoJl{~tmsx}iBtkIjBl&|1w#t6YtTosqnmt?sjVnţovmhubF!ic: wU7CQR4vFSob>;azXW1CX2RJA?kGZU?LRj;G.ro.`:[m,cX@FHW3]`o>8x6flip09_Ӊt<~nfjmze?t^a}9}As+EeUSMoE{=opEE[rmLMh&xp7|yd]hV`xsZ7hR_S~y[ByeC{ 3{emi]\VLQ)Y"n&-m.&z>w7eahhZcl&*^ \g.ORvW[%w yFu dm wk lpge½yhtrxp߂˂υm/YJ pն\״Dr]oi "O,0 %O57y@ :57CLAN4:AI 4Q4e f5fJ6w& j  H{L&<y8+l6)s :+P@Lt;-d_80SʡWóK5Xb6Xfar2K@dwrI _w~D)v1~o<fb_`'g'>7{/8Ysv:o_S9Z׆EN iԊk Pz1đ9Ғ7_ =b r.7WzV`LFϖR].KQoE_Uene3ZɃUt]́ZȜ\u_qtmpЎs|+_%KM+`SmG&q4+9#x/35/D6f.C[;'U!m@&xemSk) V%t9`/eGdRD.o`CM"j[8 @o>8ΐ`v&bp-O@s'TMr6nJjFnuxsu䜄-;zdBWfvjx]cTrgIWeNinMiy}~tmtw}hBvjIkBm(}1x#uoYrNlqqdhtFsiVi͡pud:niMx=x9mjl߰~uyΠB`Ҡk˫XޙBȔ[ۏMf~֏Jؙ+Mz iS̲>Ʋ2AĝE֤%Xܤ]:LrكS]r4T|TG_XvIHhɛ`ep;Q́*\:^^MmvTdgZЅ{j_q,D.rAo~2,iyaFki =npfF!dg9 qX7CyTQ4oHSo\A;at[V1@\1RED>dJYPBKNn:G,wn+e:Xl,^\@FD[3]8OJu8[wMy IKBgaUwnums<> #>n>qv8*flip10gшw9jmn-s+HI@tCe_cmqc;tXav7t@lLA`UNIth7|={rpdEYsmLLi$p3y[azMdxwT3bO`Sv|[Br`@u¨ z0edm^[WMO*X#k)%i2w!>u?fbiahfk*,f ^o*X czc\%x% |>|Etzvn~ vD~hw|}rކĈ̉u/^J pɿ\˽Dtr]id "G,0 %G47y@ 95z7?OAI5:>L 4L5e k2kJ4z& p  K{N$=y5+l3)s<&SAHx;-]`87|*2Qsp6fUTFeևRڄ[ qnt;Tz6{E~<c$Im2y)~FUzUYOLБW#^)SWdR^Tfpk?_ɂV{e͉`hv`t{iuvL^%KM)`TmH#q5'; x//5-A6c/CW<U mA$yfmTh,2U&r 9^0eBhRC.hf?M!kW8 :s<6̐X|&Yu-UB~,[G~ozJtEWot}yv-晅zffWfskx_cTyhK^eNpnUhu~~yuhwx|jD{lKpfr+ʂ }%zn[sLʟhrZhuFtjUiա#su'\x:mgMu=u9ji~r!uءB^ܠhլXAӔZĖf|ߐJ+Iùs iPز<ģzϳ2?Ϟ6%VU:EuڃKVv4MMGWQ{IBkɛYhp5R̓&_5aWOmnWd_\Ѕro_i,>*w<f2(mpeFbm 8qhgG!^h: iX8CpSR9eHTnS@ >v^>T8Dfflip11lx4lip2q(HKCtHb_cin^;T\sFpJh(C_VLJtfF=svxdES|xvLGqw.S`zGesRz 3]KgOobBpcEyù w<^eą*nPδ~̦,[Pk7!uBūLgRg$w>X^s:Z>,l^qd]zr|'-&G"I fe]-\%yn #-/O@pF3 _rƂь}ܖkÊ1lB p\Dprz]e` "|M,0 %G9};yE ?5r<-Z];LYC3S^Pz9Ol:XYjr5JDdm| O U~I)<~xs4o`\T[ Z=:},̘0S~so7fTUFl[_voxa$Np2z)~FXhXYSUrޑ\#b)\w `qe^n \Sedi>`jVvd^i wTvvaww( eMKRg EO ZEsZl;tOV~h%H]*hE]nEÊ'-"=Z$U4eAViKUgb:>\IJz![c0Խefř.mLmQGJQ| Ѱ űtf^vsx{itS{>pyGj~}֏~ỹryf>|fӁ=э0hjVײkԁTrӄe{Vtֶ2+Zunw?8{yw~}ݵ@i淔pkf"L橚gɦfJ)P}uˇa[Cз1Iݳe/eUSoELxLR|TM4L[M^'YmNb(?QϔUNc25x"O3@ҀR1ggFf[;ϊlfJd-<'n“;pck1%_ŔjVC_LՋ6QfdJ!\g= fT:CmMV9c@XnP8>ZiW\19\4R;>CYC_F;P}Iq=G$s(h)8|@Yflip12x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1=Y=ԦR>)8{+Ysalute01x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1)>i1 >06L>S<'salute02iꊕw4ei-(ckal}jrwtUzgip^Rpőhb[uCzV}(\uOdcot{rF+}nEnfT}+Iz&x{4z|]RsQXsmT Ob ix OnOz~gAoɉd1n9u@ËBL~m,h2hjE5YĒZHl;].dLbO]@p\H3}pjjh]j 3 4>;$*V-F"7#6!hf+9(@)<;M2^7J>L1Nׇǡzޟ˶sBp \վD r]so"G, 0%GBFyP ¿H5G|8DJ=8?=C=^ c-d O5s'd#9|@(*y( l#w, M.Mj\F/zB:9h%>pJPKcL]uS`~SMiXkpds8h}iZy}<{l5YuKJvn`aK)̜AfCuQvؘ_6ڨb5ѿGLΒeM=Sѫj[@NXpC[cqr@AR6oZ V|V. ?YtvTs lWWjFgޖFkYseF|_TqxChg2gdx<{[k\k}rq]| r/+vCt^hucWqgyN{}h#fLT NeL uQdK}lq}z vRqxsaw|wz&w ~)f>o`pZdfr0|' > E+Ao1 9,r+NF?`[Yz^ 4]1ʉt mUVqH0բjc9t>zWIOS燍,Ӿ˿⦼ מ܃`m퉕|ՇxO>& ̞~ɐݞ ؇`>`?lF΍\>A<>6̏;A#͌Z ىEG#}L=!:5@*NFPdq:[2VRt'wCN4h9<^S1Vw8Q@|g,Qm]Rmp2>y>.:>k{osalute03ivCci*&|}j}spYcil]^e{s[[rBvS&bxNxxm}pC~+pzEr_Mvz(@t)jv6o|fNhYRs}M `U mu HgOy`Ao;ȇj1o4;V=ˀm,z,ipCFH|ZOx9]9UIkM]DgUO5rimi`^+![$-?=JI9H+413{(m ix*n%J{Z@*F+?z$1ceFM hB]}TXVCb\dojl8lx;pY~~}x0g.\yyEJyoXYC*Gf͖KwڒZxg6j3LIoTDQscCO\dK\g~jqȱL>_da M~b/w xCWtWzqshadt_}UhaD[PwBi8i󅣏2gdy4Yk}kr{ *Lu@\ha٠eN}g%dIT-MfM1֙eHߊރ⋓1vPqӃsaw|w zGx1/R%>_c 6q5*'>7:>(8< *F$.O^0oQf&0p'Ƃm_J~C Q_+WIpYIMNCZ|k2ޥTU7ˌQÄx=ԈZGA[ >iǚ`shޘZςU_ItTz(Ȉ8܇/|bKԝn~Pnsgˌ@S؉N/b'LJELFmځ-V~ɒpsZėkٽUկOѸ+y:\b{5a͒f*} 'Fh"탛#=,.@6| ͑'^xm[Řz Ј c*_8IO`%eRT2ˏs:G0Z#{:K(9|نJ1#P.!A"V1/A!2c(874e>8y8<;jwR8O4Zkd75MlHG364fn*QsFF>s,LngT;lv->!>(>ɒ3Vrsalute04\oiCXiz*x&xv\აdꆅdRYiaXcV{uQ]g@kSs&duvyN}q~`}eAw,|hoFj@Kvpo(@h2Yj=_x}iGi^HugD fG mi HZNuvRAe;ćj}0f45:_1ŀk,~(iiCP:|[~Mz5]CGJnF]JZS|O;b\n_R^9d0[1:KHUTFHI@VQLMTYEeU?V1DXZ_YAa(j#dagkm}r{Yjs݂jd{d.uGVdї \ҕD w[|{OѰ+Э 0%OʓK:SjY dzN3R|I,@DO.H@ [, e+!IF$7 ':})i az&}p(3r[*,pL>o,^hE< b2^NIuQ2pVWod`8fm;qQtxrxl1x[0Wnq7JwfIL4*וHfNJNwӈ_xl7n.ӶLIޓt»SDR۬wͺdAH_UQLchq`g¢O3c^s_ Lne-jnuvAyWgP~ }yuzZkWthwKsWBQPh@\8Z닥}0Zek4Nm\탛cv s z*yIi@QhUјXB}Z%XIH/B^A)`\Eq%B86>$EF>68H 7Q$=Gl'%[sH-C72w na:z< 8@m,Ai6B3=,FpxLsxxި-;KvT_?&r#,:!llT!M;Ka_8JqbM/=w=_o-;hR;wEa~23omM};jmt-?>3>Y'>ɒUrsalute05^ojCXi{*wxv]e醇cYXi_XdT}vO]e@iSq&erwuNp_}bAw,|eoFh@Kwpp(@h2Wk=]y}iEi^FvgB hE mf HZNusRAc;~ćlzІ0c43:`0ƀl,'igCQ9|[~Mz3]CEJnD]JWS|O<_]n]S^7E/[08HFSRDHG@SQJKTWCeS>S;BUW\WA^(h#a\ihixpyjUfne6va.qDVdѓ \ґD w[|{Oѫ,Ш 0%OʏK:SjY ǮO3R|G+@BO-F@ Y, b,!GF#7 %:}'i az%}p'3rY*,pI>o*^hC< b2^NIuR3dUXob`8cm;qOtx~stm1v[0Top7JwdIL4*אHfDžNwӄ_xl7n.ԱLIގu¶TDRۦxεeAH`UQLchn`gÝP3c^s` Lof-jnrtAwWfW} ~{t}[nVtjvJhVBPPh@^8]ꋧ/\el4Om]쁞ew u {*yIh@QhVИYD[$YIJ/D^E'_\Eq#@64>"EE>58F 6O$;Gm&$[tF+C52wnc9{: 5@k'~?h6?/<(BlxGoqrۥ-;KwR@wQ{m=H;LŽ ;iaa] QyTNk^Rigo3vq$zdfJjŀVuggAS|Q}-[ ƋFKCmց-SzƒppZ×hU~N(~:\d{5b̒f*y/?m)삟(L.2G2t'_mn ͇c)@9BSV#gC`#đw2D/iv6K,<ֆQ#sRqGQ=J.^p& C >_>&r"+: llR!M;Ib_6JnbK/=w;_o+;hR9wE_~13omK};jju->]>n'>ɒ1Ursalute06]ojCXi{*wxv]e醇cYXi`XdT}vO]e@iSq&erwvNp_}cAw,|foFh@Kwpp(@h2Wk=]x}iEi^FugB hE mf HZNusRAc;~ćl{0c43:`0ƀl,'igCQ9|[~Mz3]CEJnD]JXS|O<_\n]S^7E/[08IGSRDHG@TQJLTWDeS>S;BVW\WA_(h#a]iijxpyjVfoڀe6wb.rDVdє \ҒD w[|{OѬ,Щ 0%OʏK:SjY ǮO3R|G+@BO-G@ Y, c,!GF#7 &:}(i az%}p'3rY*,pJ>o+^hC< b2^NIuR3dUXob`8cm;qOtxsum1v[0Top7JwdIL4*בHfdžNwӄ_xl7n.ԱLIޏu¶TDRۧxεeAH`UQLcho`gÝP3c^s_ Loe-jnrtAwWfW} ~{u}[mVtjvKhVBPPh@^8]ꋧ/\el4Om]쁝ew u {*yIh@QhVИYD[$YIJ/D^D(_\Eq#@64>#EE>58F 6O$;Gl&$[tF+C52wnb9{; 5@k'~?h6@/<(CmxHprsۦ-;KvR?wQ{m=H;LÎ ;iaa] QyTNl^Rjgp3vr%zdfJjŀVtgfAS}Q}-Z ƋFKCmց-SzƒpoZ×gU~N(~:\d{5a̒f*y/?m*삟(L.3G3t'_mn ͇c)@9CSV#gC`#đw2E/iv7K,<ֆQ#sSqGQ=J.^p& C >_>&r"+: llR!M;Jb_6JnbK/=w;_o,;hR9wE_~13omK};jju-L>\Y>'>ɒ8Vrsalute07\oiCXiz*x&xv]ბd醆dYXiaXcV{uP]f@jSr&dtvxN~q~`}dAw,|goFj@Kwpo(@h2Yj=^x}iFi^GugC gF mh HZNuuRAd;ćk|0e44:`0ŀk,~'ihCP:|[~Mz4]CFJnE]JYS|O;a\n_R^8d/[19JHTSEHH@UQKMTYEeU>U1CWY^YA`(j#c`gjkxq{Xhq܁idzc.tFVdі \ҔD w[|{OѮ,Ы 0%OʒK:SjY DZN3R|H,@CO.H@ [, d,!IF#7 &:}(i az&}p(3r[*,pK>o+^hE< b2^NIuR2dVWoc`8em;qQtxsvl1w[0Vnq7JwfIL4*דHfLjNwӇ_xl7n.ԴLIޒuºSDR۪w͸dAH`UQLchp`gàO3c^s_ Loe-jntuAxWgP~ ~yu|[lWtiwKhWBQPh@]8[닦~/[ek4Nm\큜cw t {*yIh@QhUјYC}[%XII/C^B(`\Eq$B75>#EF>68G 7Q$J/^p' D >_?&r#,:!llS!M;Kb_7JpbL/=w<_o,;hR:wEa~23omL};jlt->!>(>ɒ3Vrsalute08\oiCXiz*x&xv\აdꆅdRYiaXcV{uQ]g@kSs&duvyN}q~`}eAw,|hoFj@Kvpo(@h2Yj=_x}iGi^HugD fG mi HZNuvRAe;ćj}0f45:_1ŀk,~(iiCP:|[~Mz5]CGJnF]JZS|O;b\n_R^9d0[1:KHUTFHI@VQLMTYEeU?V1DXZ_YAa(j#dagkm}r{Yjs݂jd{d.uGVdї \ҕD w[|{OѰ+Э 0%OʓK:SjY dzN3R|I,@DO.H@ [, e+!IF$7 ':})i az&}p(3r[*,pL>o,^hE< b2^NIuQ2pVWod`8fm;qQtxrxl1x[0Wnq7JwfIL4*וHfNJNwӈ_xl7n.ӶLIޓt»SDR۬wͺdAH_UQLchq`g¢O3c^s_ Lne-jnuvAyWgP~ }yuzZkWthwKsWBQPh@\8Z닥}0Zek4Nm\탛cv s z*yIi@QhUјXB}Z%XIH/B^A)`\Eq%B86>$EF>68H 7Q$=Gl'%[sH-C72w na:z< 8@m,Ai6B3=,FpxLsxxި-;KvT_?&r#,:!llT!M;Ka_8JqbM/=w=_o-;hR;wEa~23omM};jmt->|>b:>_kmo¾salute09ivCci*&}}j}spYcil]^e{s[[rBvS&bxNxxm}pC~+pzEr_Mvz(@t)jv6o|fNhYQs}M `T mu HgOy`Ao;ȇj1o4;V=ˀm,z,ipCFH|ZOx9]9UIkM]DgUO5rimi`^Cn8\8BSO]^OHSFQQYM`CiODY+413{(m ix*n$J{Z@*F+?z$1ceFM hB]}TXVCb\dojl8lx;pY~~}x0g.\yyDJyoXYC*Gf͖KwڒZxg6j3LInSDQscCO\dK\g~jqȱL>_d` M~b/w xCWtWzqshadt_}UhaD[PwBi8i򅣏2gdy4Yk}kr| *Lu@\ha٠eN}g%dIT-MfM1֙eHߊރ⋔1vPqӃsaw|w zGw1=)P6L%_c7 qy#B67L$7PL?9O ?Z :O_- jQ&B5.s'łn\F|F P_+WIpYIMNCZ|k2ޥTU7ˌQÄx=ԈZGA[ >iǚ`shޘZςU_ItTz(Ȉ8܇/|bKԝn~Pnsgˋ@S؉N/b'LJELFmځ-V~ɒpsZėlٽUկOѷ+y:\b{5a͒f*} 'Fh"샜$=,-?6}̑(_{m]Ę} ψ c,U7KO`#dPT0ʏs8H0[!{8y8<:jxR8O4Zkd75MlHG364fn*QsFF>s,LngT;lv-->e>K>Sc'salute10a늕p4]i-(ckad}jkwlUz_ih^RhƑhY[nCsV}|(\uOd{cht{kF+}fEffT}+Iz&q|4s|]IsQOsmL OZ iq OoOzxhAhʉd1f9u6ŋBC~m,h'hbE5PŒZHl1].\LbF]@i\H3vpjbh]6j,[,6H DSS!DOH?5O6N,z1fD9@ W)PPNF^MJULEQՇĢzޚ˲sBpԽ \պD r]so"G, 0%GBFyP »I5G|8:J=8?3C=^ [-\ O5l'[#.|6(y( l# w! M#NjTF/z8:9h?pJGKZL]uJ`~JMiPlp[s8`~iRr~xzWIOS懍,ѿ⢽ יڄ`m슕|ӈxO>& ɟ~Ƒ۟ ֈ`>`?l9ύ]18Ru'w:O4h.=^S&Ww8H@vg!Rm]Imi2=Y=ԦR>)8{+Ysalute11x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1:=B=*Y>M'ftaunt01pgv4pcis-u(?D;ltAscs_eeisn^2j–S[\ysFuxJj(<_VFCptioF}+ye~EdD<q(,{ d}g|WChGGsUQ ,]Yo4pOpwhAwn gȄ@ l9d;Ʌ DʐL,]'mc7N7Kh-ZT._@Z.^tH>lr`_i]s $2(6"/(#zN!{Tq+-y)! {hp^~7;4=0~/y%x]*vV2sL#nɇNâČw~䇡eoaD_rf\E>a_O(0%O@qBjsID5Z@|N2 Ii _jRvc[h~uT|pvqb~v~{uy(u S11)V#V7 : Z\5 vZmg3 p']#Va ^!}Vb$5/(V2*6ÏC@U a`r%?J&ʈ_m=MaA0y{au:Fhx\>дSV݊+ؽ-ټ Ԟم_r툝҇H?& Ȟ~Őؠ ԉ_?ǭ_ո4lα;q}"VwӐKɓeH{ ޞ.Qti?6z| JoǔxhlHӺm BٶH.N}}ч\]=ď;E“e0j l EU sb}g3[a!sV-$E͔a _8s™:y` ^r+@morIGjV27O=̍=1߄p8;,ʏt8>qό>ւ8P!;D"(?AZ4\ozCZ(`1T,?Pa KdtWfCFG[sC/BCxu'x2R4g%A^KZw&>-meUmSAfb2= E>y\>-RvKtaunt02c]tn4d]if j,-1~(et.iVq@Xbihl_#cM[\oqFjwH^,$NV41kt_qFq,zo~FoC%a(~Y{`}bGiMIgMP UQqrNgiKns OɄ#i xrɅ:|+k$g*mo4CyIu3c JlFa,Zu7{L ct]ei^h &2(6"/%!S!_z/1 iy^*4!;7+./&]/V8|I'xŇNâ-v~Ɇjar6;qcC=qB\ /0O'/i#fOzALAj@IsE0+?{fDI*1f>)-C A9YG6c D w XYlzziV]5*HFcDsPB2h,E#J@qO`yW`u^Ob_k6lk7n|_CCL^T^)LH RBeO>KSXdZ=OjAvTKY soTqivibsm~stlp(kh,@"oJJWMscEvp z0%vJz c!Jb%0/(g.M'2R@Rw_"3J$Ɉp m8Jc@0rqqwEl}ħ]BVT܀Ӈ=׹/ ͦ|ڈ_R싕hӊcO=q& i"rȠ~lœڢ ~Ռ_?_Ƽ3l;g`"7Zӓ,ʕe|Hb1ߠ.4Ã[pcYo3m7`k\|m jJJɗXmB ͻPD Br޹I|*.xhԇ{\8ėr1”D{2Aq 7Ygexm3\a!pV,$H̗g!_Bg@yo ^}.AyouKGcV *J5ɔ6-o:;%Ɨ{;LyЌ@Ԃz\Rn[DLB>G_55`8}'EbOd JA9T]#H{z4fi$VyN\C Yx)DA7zz kJK?QA;`B,Sr*9,f]-Lp_@je2g=G>Z>沾%taunt03oc}v5tdbh o'36z7bu9gev@jhbxt_*ctRZ\|y?v~Hg',TO>~AkuepCo,wr~FoC%_(~\{c}`KiKLgUO &TSqsNeiKtq Yʉ-r }phL,s0{u5oUZuUM L%}+`x]ѠӍXXg|h4rbVLr?naU[L~c6yt1]Th*^v=c}${Q"9ug x*y?[[iY_TN`YEuZadb*`L hGEcBPS]6V+TlGwPGQ|wV|pwtb{u~z{v{'vj(DsJOYRycJws y-~#yJ~ e"Jd(01(e*N,2QDQu^ 3P&Ȉp m?Kh@0ui}ŋ8svj?`@ۅؒ.-~~ۋ_VjԍfH?v& o!rɣ~lǕڥ ֏_?_Ļ4l;qb"@[Ֆ3͗f{Hk1.>Ńcith3{7qhk} tJU̔dhM*N @zڼI*~͌Fӂ|^Ro^DPB>J_59`8},DbRd KF9T^(G{|7fj(VyO`D \y,I@7|z lNL?SE;`C1Sr)>+i]2Lp]Dhh2G=J >[>-fftaunt04wsꋀ.}rdgn'5ܓ9AiwAnj~Jssd}B,kuRb\3yHh'.UVBJpwfwCn,wt}FrC$_(|`~{f}`OiKPgWX (^TvqNegKuw [dž0t ~wUgK/zqv~Eq{dCЮ\U܈ԑ3/ե ¦ډfg퉝zՊxH?( { z̡yɓܣ ֍f?²fϽ5jķ gk"@h֒:ϖeHj .?gpyl 37uho| xJZȔhhS.мS @ݸI.=xtЊ\J'ė;-ÔD0S zEaso}u 3e)l% ~-^9$N'͏m,_D h!$Eyp\4@|o{QGn`-7WAʍA=xF<"1ɑA>(:G։bQsbCU@>N]5=^82BcUb MK8R`.F{;dn.TySdC `w/N?7y oSK?WK:`F7Rr)B*k`8Kp\Igk2== >]>|^S_ttaunt05st銀5zrphq'7ړ9?mw>tk@qsp~~f+otQf\3{Hk'-SVDItwdzCk,tw|FuC#[~(|b}{h}^SiITgU] (bRypNbgKs{ Yņ/q2|z\,.O'/d#aOx?L@jAIqD0-?{aWI?1aQ)BC T7jG4r W0w4XU5mt,t*gQ4]99FKnDu\@1j;B8(W@~SCd`rmQdim8ti5vzxtΊ\H%‘~<*D0O x(E_"sm$}r(3d2j/ |9]@'M.Ώk2_Ch!*šD΂n\}8@z"oyUHmf-7^GɍAEwM<"8ɑ~E>|/:F'׉~ePqeBX?>Q[5A\8~7AcXa LO8R_3E{?cm2SyRgB bu/Q>5x mWJ?VO:`E;Qr(E(n_"]>nP$dtaunt06om鈅z9vjiu ,BA:tt*57&#t&W D0J6~G#~XƋVɥ#vʓbp6;ocC>q@\,/O'/h#dO~?P@jBIuD0.?{eXI@1eQ)CC U8jG4s W1w5XW6mx.x,gT5]<;FNoCy^@0o>A8*X@|Qfd`rkPdjl8vi9xy1:J)׉gPugBZ?>T[5C\89AcZa OQ7Rd5E{Abr4RyThB cu1S>6x rYJ?ZP:`I=Qr+G*nd>Jp_Nio2M~=/ >\>Ctaunt07il鈂u8nghw +FE6yڑ:lw_gji|o^,qtSj\s7xAx+,TVODzБf~Dk,w}|FzC [~' |d}{k}bXiMXgXa )eS}pNcgKu Yņ-q2q?\).O'/f#cO}?P@j@IsE0-?{cYIA1cS)DC V7lH2u X2w5XV7mw.w,iS5]<=FKrCxa@0nAA8(Z@{O_d`rjOdmk8{i9|zˆwn@^jU*Ђg끻E|}_CӲWTۊ3޼/ ϱއ_a툝y׈qH=}& t"͞~|ˑޡ ڋ_?ɻ_ƕ3lͿ;gl"=¾jאP7ϔeHg .;dpvi 3}7shl| uJWƔehO+ԺP °@|Iڿ*:xrΊ\G#—~;)D0P },Ed&hq(}w,3h6o3 =aD'Q1Ώp5_Gh$-šH΂t\;@%oXHqj-9bKɍCH|P1$;ȑI>3:J+׉kPskB^?>X[3G\85x p\J?YS:`I?Qs,I*qdAJp_Qhs2h= >\>ˍkm[ taunt08hm~z9okin x,<<4vt6{~i{@hni{vf*rtQk\z7}Kq()PVGBytbCg,t|F~CW~' |f}{m}aZiL[iUb 'eQqN`gKq UƆ*k zI,}PʌśЈOˣ ʟu|̔}מal6;kcC=s=\ &,O'/c#`Oz@O@j=IoE.,?{`YIB1`T)DCV5lH/v Y2w6XT7mt/s,iP6];?FHtCtd@0lCB8&\@~N_g`ulOdpk7~j9z3:G+։|nPonBa?>[[.K\8?Acba KU8Rb:E{Hcp:SyOnB fv.W?3y m_J?UU:`GAQs+K)saDKp^Tfv2B= >R\>B—C taunt09rn銀5ynph q'46:ku:pj~@oqb}|B)nuRh\3{Hk'(POAEsud}Ci,w}|F{CY~'|c~{j}cYiNXiV^ &aR|qNbgKr~ Tlj(k |~s>\ &-O'/e#bO|@QAj=IqE.,?{cVI?1cQ)ACS6iH0s U 1w3XV5mw-v+iR4]<=GHqCvb@0nBB8&Y@}N_f`ulNdnk7{j7|zM&i G TН~Jˑi Yو^l>_ō?l‚^bcVp=k4ck^ڀv gJGǗZm:Ⱥ8}@g߶Gtڿ*9xsы~c=đx1Dx/>z)7b$so%}v*3f3l0 }9_B'P0͔o4_Gh#,Gytc;@%o~WHpg-7_IȍAFzN1#9ǗH>1:H)։~lPpkB_?>Z\.J]8>Ac`b2MS8Rd9E{Gcr9SyPkB dw.T?4y o\J?WS:`I@Rs-I*qcBKpaR:hs2׷=z>d\>\Mptaunt10ur~5zsdd j 0ܓ4=iw=mfJoudzB(nuQh\|3uHc''PO=Errc}Cj,x~}F|CZ~' |d~{k}dYiOYiU^ %aR|qNcgKr~ Sȉ&j |~IqE.,?{cVI?1dP)AC S7iH0s U 0w3XW5mx,w*iS3]<=GHqCvb@0nBB8&Y@N_g_unNdok7|j7}z‡_͏3lƚ̻>@l߸Gx*5xoҋ}\<đw1ÔD{/@x(7`"sl$}t)3d2i/ z8^A$N/̔n3_Fh",Eytc:@$o~WGng-5^Hǔ?EyM1!9ǗG>0:F(ՁlPqkB_@>Z\.J]8>Bc`b MS8Rd9E{Gcr9TyPkB dw.T?4y o]J?WS:`I@Rs-J*qcBKpbR:it2Լ=>Ň\>X߽taunt11mpy5ropbh'-ݓ16jw7p`}@gqbt}_&nuNg\w?qHa'%MO9?ru`|Ci,u}}F|CY' |d~{k}aYiLYgQ] "`P|qNbgKn} Oȉ$g x}\ '-O'/d#aOz@NAj=IoE.+?{aVI>1bP)AC R6hH0r U/w2XU4mu,u)iQ2]9=GFqCraA2jAC8$Y@N`yg_unNdoj7{j7|{HxVx|wev~u'fAoUKXPrvbH}sw(%uU|bU d&/:)Id&Q,@RuAXu ^ ?Q:ʉq l=[fP/}gȂԌE}{Һ]CûTUߊ3޼2 i_>팕W؊NO}=\&w T"eΟ~]̒wߡ lۋ_|>_ɑ3lœz/ЋB&ՁzkQmkC_@>Y].I^8=Bc`b JS8T`8F{~Gdm9TyMkC ew,T?3y l\J?SS:`F?Rs,J*r_BKp_Rgs2==m>\>?H$taunt12jj|x9mhik q,25/nt3t`w@bkiss^&mPf^yxFt}Jg(&PO<:suc{Fo,z|}F{C"_' }e~{l}eXiOXgR[ "_S{qNghKq| Rɉ%k ||ʼ?AnݺGy*2xnӇ~\:őv1ĔDz2?r$7[sf }p&3_/c+ r4Z>$K,̔k1_Ch)Byrc8B|!o}UGkd-0[FƔ:BuJ16ŗE>}-ЋB%Ձ~kQqjC^A>X].H^8Sa\>]h(taunt13`evq7abhm2q+58(rޑ/wYs_Wgijm^$lNe^rqFnvJe+%NO<3uԑazFo,y|~F{C#_(}f{l}cWiMXgOZ ^R{rNfhKo{ Pʉ#i y{qA\ -0O'/i#eO|@MAj@IsE0,?{fTI=1fO)?C Q9gH5p T .w1XY3lz*y(iU1]7OT=hL,s0|u4q`PwTS'T'&s|sӘ<]shb6Z_UEyF_eFgTnaptq;D\zs{3t~&\$:l2{)oFDazEeY=j:QJh#Re)DU HOeDMTS_pi?WjJ{aZh uqTrl{iitqvvmp+lk$CpULOruaH}s*%xU|cUp . $Im)N)>XuCX~^"3L6ɉvl:XeN/Έ}av卉7mve?[Jޔ. dž~n܉_FZ׋WO?h& a d͢~]˔|ܢ p؍_?_4l;qT"8Kו(qЕflHd1y)6ŃZiaWn)k7_h[}n hJH˗Xm>˽?AmݻIx*0xkԇ|c9Ɨs1ĔDy2>n!7Wsb}k$3[,_( m0V<$H*˔h/_Ah(?yoc8By oyTGfb ,YDƔ7?qH15ŗ~D>y,Ћ>#ԁ|jRoiC]B>X^5G_8;Db_d KQ9T_7G{}Fel7UyOjC fx+T@7z mZK?SR;`D>Sr+J,r_@Lp`Qjs2r̷=# >)\>V’itaunt14^dto7^bhk2o+47&rߑ-wVs_Sfifl^$lMe^opFkvJb+%NO:1uԑ`zFq,z|~FzC%a(~g{m}cWiMXgNY ]R{rNgiKoz Pʉ#i yzqB\ /1O'/i#fO{AMAjAItE0,?{fTI<1gN)?C Q:gG6p T -w 0XZ2l{)z'iV0]6D#Y@s{NYndatojNbljEyk6z|UjH{`Zh spTok{harptulo+jg("?$iUFI rnaD }o}-' rUv aUb. $Il,N(>WBX}^$3K4ȉum8WdM/ʅ|a|:䍆Fqx;_>VVގ)ֿ-ؽ n܉_GY׌WO?i& d!f̢~]ʕ~ۢ p؍_C_4l;qV":Lؖ'qϖfmHe1{)5ƃYibWn3l7_h\}n iJI˗Xm?˽@ AoݼIy*0xjՇ|c9Ɨs1ŔDz2?l7Vs`vj!3Y)]$ k+U:$F)˔f._?h'=ync7AxoxSGea +WCƔ5=oF;4ė}D>w*ϋ= Ӂ{jRoiD\B>W_5G`8~:Eb^d JQ9T^6H{{Efj7VyOjC gx*TA7z lZK?RQ;`C>Sr*J,s^?Lp`Qkr2=3 >\>-dߏKtaunt15lfu4meio s,05+mt1q^x@`jirs_'kTd\yxFt}Hf,(UO96rԖiyF{,{~FzC)j(~f{m}kViTWgUX ]Y{rNqiKxz Wˉ&r zr& m!qˡ~fʔڡ x،`C`Ƽ?lµ:qa"@Tו*{͕cyHn1)9Ɓ_il`y3v7ikd|x sJP˗`mE!̽G Bz޼I*4xsև\>Ǘ}1 ŔD2EtE[sgvq3_$d!t"[7$J&ɔn+_As'P@yt^6AoRIo] /TCƍ99yB;3ėB>&Ό@сiRxhD>V_5E`88Eb]d QP9Tf4H{Dfs5VyUiD fy-SA=z vYK?YP;`H=Sr.I0se>LphPtr2vx=->X>2j:taunt16yj銃|3xhbop'6=BlujsF+q~EoD8s($|k~o|^NhJRgSR %\Zv/qNthAyr dʉ8 p:f>ƇD|D,b-mm7 O/Lo7\ Y'gL\.gFLsrdji^{s}n0,"$|GuNuTm'tX'y"xmmf"z51,}(urQq^!pV)lIhDžNw~⇟}eoaDZrb\<4 ZXO(/%O?kAjkID0P?|YH Iw.<]@3x1BQ3aG7h S &v +XH$mdo`g>$ XM'Op[J-BB<{"EoCJKiVBUcXUp\p8ll5m|@V^`s!4I*ƈ\ m>PdC0yyau:FixZ>ԲQVڈ)ֺ-ع Ϟ܈`iz֋zO?&!ȡ~}ȓע ׌`C`ӷ4lί:q{!Toו@ʕcH};ݠ3Jƃni~ 37z| Jj̔uhe?ѿg @ٻI.G}}Ԋ\W3ȏ;;ƍe0d hEN s[vd4V[!mT.$@Ȕ`!_2s%3 y` ^w-@moxIImT23OAȍ72q7;0ďy9>qˌ7ЂIPMD";?A/Y4[oB\8`1^BCv'BS4u6A^U*Yr%G*us(TmXLkm2=Z=ܦR>)8|;Ytaunt17x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1@=z>X>Ce7䋒ղwave01hdju.nd6QzW~-hٔ0f|ASs=X\lJfcdkpB.ZuPScku)dwHUx'0vTxH9hύF[sae?+Y6eFP+Gt ^u,aZBhQDsMH&MYfRkOekCleRȁ-i ue!_ϒZtؒtנxkPs֟pѧ<>bş [ĝBtwmWZ(y("wM (ó .*OыC8KkVӨI3PI7>U;F44Ye V;UJ;f' Y  3 {8(%y>l<s#$X03DU[@-nC;RPWsCewDRiGnpSw6T;mHqdƉV6o^ Tw|ǡ[/ h]*W@RiV;x8|%bՎ9My0F[^̗bRbth3p`VHd+gb;VX;rsh9fs2dSn8Lz@W#a:}4c~Py\$qy=aVp\Y`SW܏hGsZ\b_$iNrL?oH@uSJw46(Ds:oz6,1iuVlph{zEhtdxuzuz}6;;31{V4#.] {-BI7$N):/~V6]p#oVlr\9w}p}*x+99.9!,KN'1&YM'DE$j4sNBb39C/(߸nbYSNZbW|ʉGЋJ'IŒs)ȍ>ޗ"Җ:ڠϜXYcLҥMϏJEۙ'H$נ< ՔD0Ɲ7{EXO\]Ț?HӔMS HҤ!Tl9OIY)\4OmP}X `KEɗTm8%P;½zAbGj%9xk~ԇ{c9&k1&{Fk29Bd4 ̟7ڑG 9=: #BG%%6 Q_(r0%vO^m%BV pt8Lf= 5C B.-~`&ҋ6p+?Yl(ƃ|HK!pL= }<:C3V4{&Woe"zM[>DD[;wave02K抬[5Ldc g N[ؓPW^Dr[HさXJNdYBMLuF^]3`Hd'OfhH`ZjLrW?q+L6WF|zq+m~t5OtHR5h8s~=C@X~tkOWjCXqƄJo W-|V$!mW4,4B{(*c4;Cy4iXLuq=QSkWFj^n mtX qr}kvk y:"v%q3mlM~jRia u|z->;t*4eJeHJfV'L ) { -Fyh le s@XK)DL@-5<<>nMD>EPR7e8Ri:lpGv7H;;bVXus6VyCDPfʐF+y5^zi.l@VUlg"kl?WԎQAx@=X+X˔@aP4JVsR3I}Bf^L8X1=mM@w^E;Uގlj"RSae%^=BiE`{Eٍ2rGI,75F0qcSc7lt+s_le_wgnZqcs[VVw[eY|^]a']D:-A"53V:- X+ A_1,`# >/V, XvmVf p[|6xyht=M7Y3#0?+,)RZ"fiy0w3 #7F%(ˌlplhTu|u vىğj7wn5ri*4uivxIdʘpM5PNK&%`jzoЋfZ={19C RSpB ϡCݏ^8UM %Um/Ot^2/-N0{g]fsh%>/ e>D>O*҇73F{ j8Ȁ:L!=> .:C%V9Xn=Z-]1o54RrA^O}F?I@QuP><^v,3FF{36]]'NuN4pQ{"Gg,nC1=2}->{Q[>v]؈wave03B爵O9Bi[ ],f]eYdFudJ〟Q@FbNfcLF^Q4UK\,eegHuZsKΡVFo+L~EVFzp~+n~vyE ֍>5>|+>;z(4e-GlEJnS'+J (' {+Ryo lmsLXT(DJ@-3<<>nVB>MNWjpGq6H};tvvo=Xts5VvCeOf͍F+x5]z^5b@QUd i W\WFvFEɠG`̓;gD7@JP4A|?|\AoN;8hRDtdF|S[f!dUZ Z*P4=hAT|B.ᖈBB*2 .E*턉`V]do=[j|]uj鉀o擉pOUKuKbN䐲SNQ,ME8/6@!.4N(;/#,$?Z-+_;6/N%!<mN-r` teDvh[nAT2p50.>+2$P\cz‚9w41"6C/(pA:yS"#sp8MD]PE5#'&wbaA@?M*=寞+]-?\L5szrWSBd%AİɄBwp5*4ixI}ΗbiOgK-|gsľƃ_x{X{–;TėÐC2ptba ҡfy6so %} *g^IuE,K{y]fm&K1 ?[>k+ҋO3F lÙ8L!;> ,;C$W9Xn=Z,]1u45RwB_P}D?IHQtY<<]u,1FF16]c&OuS5rR~!Hh.D1Җ=#>¹Y>0iԅwave04pEjO8vDiz^ _*ViSdKRٖLU~wT@sIiN^PQoJ]Q7VA_+SlrmO^dWUЖ~[Fu+P}EYD]v}+Px,Uy;X|j8h]_fO+</Hx9sq>yzD =5a>|^+>h;[(4le&HQGJSU'$L !' +?ySlQs:X?)EfMA-z4=PLz>_}CMaAhpKnoL{:w?gZ{z>RKQ|Giqm$Q`w] [.NFbCsaGTYJS5aHjF.Z8 _2dV0nfVubpyu?lbydetqqnwtvOUKtHaOSKN+I@63D;#/588., #4')j5jH)LJ82/&!!tz1 s^ys/pJH,GW9/(u@L2WOe_ Ă7wz9 }$6ƣe<Ү=h(V$ ؤLj̛R̡[mԟMx߲!a٩oַ~Wӫzéf{˼~ըL~ڳ$޸LċιEhȬZäTy^Dz5֭'mx̺qxk8|")7g}Kpϔ}ihOi!K&/_qwn̊^eLė;OƔD1igbWu]h7cc %pk!*Vn^Bu:*D}d]_nm,K61c@H>Y* ҋA2“ Cv lK΀9M!|=? ,>Y>.|]6>f;Z24je-[RYJTj'+_ '2 "7B yT lRs>X?4Eb`B-tA><^&@nBV?zaLWoM`qQMaPhp^no^{pOp{ځV)- ۶?RעI*̷t˫\?*Һ?/LjݿbcӥUv\ϳ8+q-dvl!46s{K{Гg{cÝ!A(0\tl`iVĔӋ]ǓD1vXbJ ԡPY6VU %a_)*L$_^8u5:;}U ]r_^m4K@1\PDPP6t&Ҋ8]H2Puu[11>=EZ> \2wave06moz9skpmv,NۜMLsuL{~p}Bpni{yfJz_e[~4|Ks+VnVWVxurwF+o}ElD[~+Py0|{=|bOsWUs^XDkg}UnO{gA{s vDŽ[ p:f>ć7QŐg*^+hf7/`XKh3\0kQgK\Hsb>5_>`<>h;]74le2fUeJWv '/l +8 (=E#yW lUsB"X@;FblB-rG?;])AnDa?}jLXpT`tXMi~Xipgnoh|mX|{cus|6VDesɂ~O fG+5}|5z_gUb dFEq}/6I=31:#UNE9pN +v(vcyw*.q@5QIGV!T`W=CP31cD1Ń4tbI1\-d_qNn\dP{헆D}Uͫ40؋ĠEؕSۘA۬5(ҶEԭ5㛷E0̘ĂתԏhߦqйTunͧ?}ִ2ej$7drᒏAΓsv%BL<`ґ|j]rcēӊnc;=i3Ֆ5 @d@=/FM/.;0J]%(+P()|<X[^D ho0>q>;U\#?dDD`%ӊ4Wd"DLj0.~|NP!tTA |;?D1\9t"]nfAZ{=a UJ7RS$Ek&cZS}cbAI8|uEX=_w,kEJFZE9]G8Qu=ߓZ>يgWwave07pyz5wvphq'IۓIOowMxp@sup|fI~\g[~3zKo(YpVTXvrqvF)o~Ege^+Sz0{=|aPsVWsZZAqg}XoO}hAzp zDŽ_ l:_?Ň2ZƐn*V.h`6+j^K`4[-tWfLZHud>m;`:4pe5iYhK\w '3o ,<+AH&y[lY sF&X?>F~dmC-tHA;]+ClEd?hOrvTa~VOiWkpfo9g}:mY{|L]Cy5S_Q#f?Vxs?dvw~7VEevȂP hG+5}x.u@fU[\B֍IjxAcϟ8͔jaiw5znU\3nx]qT zz8t hdmEkvMw}>Z"Ifr,?ihmfm`^neTudsls,h]oW7iT]Td8[+]VwWQUzUywdw|w'-a0(r$aSoc P_E53L=/6!XSJ7pS*u(xbzw,,rB2UIA\[\Z=IP.7a<8ƀΪ' ÊbΙ7Zcg9cl Ww(~ιYqmǓDã9fԒ{ςX|nēԊ{c;1 i)Ֆ*5d6#2.: E4527A%]2%X2Ē2XS ^:zh2>j>;O_#:j`x,lGKE[G:]G;R:VOW1KhZGre1d> =PZ>uYewave08u{|.{zdhp HݓIRmwPtp@vzp}BH^j[~3zHm'XqVSYvrsyF)pdle`+Uz.|d7[,tUeOZGxg>;qomj] r)yxxy*uo0};3-t3-#oA;q-mN+h"-pF ,o"d4p|"eaZ qm0j^%1m+!.g&-iaS ZU,_BoqgOc.AZ+4qpZe[u_[OKm oG+</H=mAy|G @5b?hC>q ;d>9u!e7l]kK_y '4r ,@+EWJ*y^l]sH*X>CG~foD-uKB;\/DlEh@gQXyUbVQiXmpfq4h~m[{~9yl3WlOO{qbbN=tL}XoZ9@L^D|6SaR#h@Xyu@eww8VFe{ȄQ jH+5~v.r@gUXXA؎KhxC`П6ϗnei}5~tU]3szboT~8w1nfmIgwQs>XJgs$=mkpjo`bomVrhtpu,p^wZFrV[Sc7W(\UwUMR|U|zdz|x'-].(n$]Sk^ KZ A15I=13;!TSF2qS %v*yb{w-(sB3QIA^V^\=CP03a=:ǀ8t]R X5ou nb̐LnfUhTjFi5~#>ՅG\NJ˙FKȣ ' \ƔES\]7X`;Qw(ѻRkhf 9hxă!,7pv Bw-N,f̽A9gג|҂[mœՊ{a; 5 i+֖-9d9$5/=G7.37D'^0#W1|6XX$_>hl8>mE;Nb#7jBD5_9s'`nf!DZ|Ae WO9TQ+Gi,fX&U}gfCI7vF`?bz,mILE\K;]E@R8ZNV5LhYJlsg1JS==wV>د~76wave09wv5|rprx'JLNquOyq@tsifCĖ[k[?~Hr(QnVTVwuq|F=odoe]+R}'6\SsQ[sX^:rfWrOkB{x v̈́W t:aEʇ+Zʐf*Y2hi6"hU½>e9\%rNbP[Byd>5tmml] u${x {y+yo1 4,w..!rC7s)oQ*j"0 sF *s%g4r|!gcZ!tm3n_'0q,#-k&,mdS" ]U,bmϛNܛ/i{[`gpZeW u\[LGm mG+</H>jBy{H B5_AfD>p";b?9t#e1mZlK]y '.s %B%FWF+x[lZsD,X7DH~dpF-tKD;X0El?iAeQXrTdzURiWopes6hj[{<~n5Wn|OVzqeeQ)=f@tN}Zo\9AL`F{7ScT#eAU|rAbzw9VGezȆS hJ+5}3y_hU^ ^@Em}9hՠ3Քg`is4{kU^?vuco] u81jbkDnvQw?a"Np-~*?igmglY_ngSuhqpq,l[ rUEnR`Sj6dLcYv`Y`Uwb~''].o$[Sj]HZ?10I=-5;SS C.sS !x+}bw-&vB.SI<]W[^=EP+5c9:˃8t\R W5oErBoFbB|xZB{TRδ{妀C.뼲{;^݈ۆV͍CIӗ 'ž ^ƐC^ёFjΎ:~rٗ'v‘ai@1Ɯ4e}k"'Foxߐ @˓z#p꾝'fٹJ5d|و[z^ɍ؋ib<0i%ږ'464%//8C7./8A'^/VN0{2XW$_;hl9>lF;Jc#2j7KY.ڊ']`+DDj"5~~RU!wWF ~>DD~5a9p(bnb"FZzBg RP:TL,He-hS'W}dgEI1yAa@_|,kJNEXL<]?AT1[IQ6NhUKlqg1x==W>oe)#wave10{lꊆ~4}iiy |'PSPmvSsq{@tli~x_B{Zg[~?~Ht(Q"mVVVsupwF=}mdleZ+Oz$|3YQsMXsXZ:nd}ToO{hB{t vɄW p:`AƇ+Vǐf*W/hf6"dT>b6[$nL^M[?va>2qiki]>r}1v? yH |lY~:VV4{%Y'v.?1qMH%oW;*g_x<>*p]k56o: cPUeaQvmetfX0t-X-m(N,mWfV_ a@L+a'_Ȉˇ㕁N咝-Wvg~PY{cb [BxuvXeg(("M (5*MɡDoMkWJ4Q~X@>b;U;4fe#iLgJOv '!n =A:(yNlL s6'X3?G]lC-nI@;T-Bn9d@aNXpPaxPOi~Ulpcp6e~fYx}<{k5~UxLVvnbbN)נ@_ÖFvӍQxYd]4FI`ODQeZ#EN_pI]fqr¶G>WovÅ_'XĿ\. 3{Uj}Uc bEFj}9gӠ7ԍe[gk7xdUa|?zjhgfjo~1k[kGjvWqEh!Vy-*?iahhfYahgLtjjqi+mS rMEpIeSodmLil_vibl ~Txv{b}~~(~)[-g" QV^L8I1$,8N,8: %KV7XD*qV9u[T6C~hT,y>.W&7TPUb+DP49f>1y3wXQ [96И&¼ ԟ!~ `C`㇌?ol}:pq(yϽRdhB 9auy!,7pvߐ @w#zN,fϻK9aؒ|ӂ[ycƓՋqc< 3a(Ԗ* 7662/;D2.02C$`+Q+{5XY%_>hl8>lA;I[#1d7CZ)Ԋ&Wb+DFk#.πyOP!qUB y=?D|3]9p%^n_BZy?b LL7RI(Fe*dQ#T}]cBI,v:[>Yx,fHKFRG:]<)8|MYwave11x^ꊃp4w^ix y'MR}LctQhjqUmbixm_Ar×W_[}rFxxHo,O"iVR}QiuloF=vfdfDSz+Hz{{,{RLsFSsWR:d_uLnOtyhBxk tɉV1}h8_;Ƈ*Nɐc*T+h`E \QK\3]gGWI[8pZ>+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1>> >V>s9Apoint01hꊊw4gi~ ,VZVktYouw@wjit_Onid\y?}Hy,ToO]\puywF+nEsDW+Kz-r{:u|fQhZVskYKakyRoOhAv uɉV u9yFŅCJ|^,t6mrF6TNL{?\4]FkOZGl_=9xpqjh^ r /-162' S"B 0,% a9#13>+&QZ`"}A}trzЈt{h~8`@ocCxr]gb"zM'/%O@AyJE5u@=?AG":==4I"e `0`J.x d:|>%,y4l1z*4BFKrA-d[;n-a@eN]TaUOiZloio7j}:rZ{}<|k3[~uLU}oaaL)?DAuOv]o_5ELbI9SfW|?TtA[e~ss;JKEpU ^O*13UnxUj h LLi}?gӠ?ԍi\gh7|cVfw?~fmclfov)Ό[#։pcKde="qT9A~MU4w>Wob5=ayU\1CT5RM6Bn>^Z4PxOk?0oz0[?Ux$`VECIS7]AAPuBNOtQ?GigLvk~0L>Ur(>EZ>wߞ'point02ggts9jeig k(?A~>it@n`q@bfpnnf=au[_^rrFnvJe}(7{SOF{Fludr?m,sj}F|tC8d~(+x_y'c}\MiNOg`W =UWp5nNjwfAnt TƆ5a uu0tKÅ>AĀ5]$v=pv3.Ft)f&{Fc+L#bLg6^{Bt+%fnWadg^ w  +%/)&I`E&(& h80%C Rs]_evi?}xCĈ'v<؋m~6aˊnx*O_V6;cCVq^^>:SNM'/w#uO>hAjeHC.R?|\FGv?2]D)wA>M?YHD?wMxZ8]5CL`Go7ScUY=6sm@[Nrssw9HIEPlSEL,t0tzp5l_YrUT S4~5g}(eϠ(ύS[gpe7g`UOsFfgSeSrfoqt1W[k4h{Cl4W C{f-r*{s?V_hUcYNeSQtWf^e+YV ^QEZOUS^d]=WjNvXRZssTrovqbrsrxsv(s|f qzp~ } &O*f pf** &K#TM8w^JOe()_>˄LQlQ$eVB'][M8KGzxz47ߧip T w%l 86b(#TMEsT=yXɃ3Iԃ$UyD5}(qKi8>!QH$TÅ_4Aݎ:МJ(K3FnFՃSOJ9tMo(&cJFOP'Ejm;pe<+vd2%iCW#/|@4p3ku<|;)nApDtUhFd3Жy;fhlJ%Ġd#Ԃ$b;B0:}TVif#CY<=ŗPHwU2D2tH>=1_0ڄ}ZMqZ?N;>IX3;Y8y2>cO^1SH6Rb0C:`n0PyY\@"\s@J4>Z>HiNpoint03qfzq4pcip~-p}(H}MzGgvLlcnUfepol^D^ua^^tpFosJgz'g(1y$[y{0_}bLiVNgfW ES\m:nNmtgKqr UƆ9~` ws0yMąH@ŀ8\ }@pv3:Dv-e&Hc6I)hKi>Z{Gu+.boWfbg^ v  '%-&M"K]d"L& h 8<"CNRs] fOud/}z1vr!ΌQ}7Iʊ L{%9aHy6;ycCSqZ^<8OKM'/q#oO>e@jbHC.Q?|XDHp?/YD)q@AK=VH9c M+/v$.M/lm.:m+pH+[I8ESaA#pS;0j:>8;O?hP_~V`u[Od\l8hn3g{:tj@[Rntsr9HIETjSK{|L,u0wvq|3l`^pTY V={>e}0cӘ/}ҍWZgrcFi_TWpCqead` {eozrG Ts%n  |22eT/tT${@Ƅ*/ͅ!AzC:)ZRb1KQCX…\3;ގ6ќD(E)AnBւLLH8uKo&"$^JAOJ Ijm;mf=0wa-)tfCR#.H4v:lyCA)rFsKt\nIm7Җ?DslV'Ɵn(׉+d?B6C1g5܄y[Kn[>~Q:>LV3?W8w6^o3OyW\?M*Xt@Jfx4>ɕ\>ƙpoint04gኆr4{di-{~&V}]{Vgv]lkoUoepwm^M^ui^^|qCwtVp{'Du]}OXyXjvnq?w,i|Ft?Go~(;y0Zy{;_}mMiaNgmWNSdnDnNvvgKwt [ņ@~f }u0NŅQ@}>b Aow3DCv5l&IcAI3sLiJZvQ}+9bnpcg^ v 2(%,%"L]d#L& h 8<"CNRs]_Lvd.}z0vrˌL~4EɊ E|%7bH}6;|cCXq_^A>TPM'/u#sO=j@jgHB.V?|\EHt?/^D)u@A!KBVH=d  M3/x+.R0lq.:q+pM+[P9DXb@#uV;0p<=8AO?mRfZ`r`Pd^l8im5h{Dto?[[nssv9HHE]oRU{K,~0w~y}?t`hqTe _K{Meڃ>cԖ<}ԎbZg{dFr`TeqCftdr fds Tg*o  |45e "T-uT"|=ń*,ʅ?zCB.ZZe2IQG`;_)<ގ8ГD'F)BoDՂLOHS#2F4|9k~B@)yFyIzZuIs7і?Dyl](şs(։*b?B6:UVtg!RYO>ė_JX2W4ȖK>B1m5ۄ~^Jr]=T9>OT3BU8}9;cT[2XK5Rj5A{@]v6Ny\]?M5XuFK=Pqv rRF?`J6`Z;NsMCLbj=GboJ:se~2[>R+1>X]>N!vpoint05}i㊇u4~gp{-~'VY}VivYnsqUvhpo^O`uj`^t?wJv}&Fw_V\{\lvpsCz,l|Fw?Kr~(>y4[x{@`}rOifPgnYOUgpHnNzxfKxv[ĆAf x0QŅSB}?c Coz3FDv7n&KbEJ6wMiN\vT(>cntef^ v 2(%-%"L]d$L& h 81#CRs]BPLwd.~z/wrɌL4Dȋ E|%7bH}6;}cCYq_^B>UQM'/v#tO=k@jhGB.W?|]FHt@/^F=uAA"MBWH=f !N51x,/qS1lq/:r,pN,[R;DXe@#uY:0q?<8BQ?sSB^`reQdbl8lm5kzwLxX6[5A(^Fp7SaS]>Gtp?[^qssw8HGE`pRY~J,0z}3|`msTh fL}Ng}Bd͠@̍i\gg7zbUes?|ilgjhou1o]kNhv]mM}l \{{-*u?m`hldYeflStngtf+qX uTEsR iSrdpLmވcvmgouTqvsbu~yvx(vf q z n }#O*fpf(* #K!``<wrJOd')pDbT~S$JZAM ;_M_5KGXyyz ڣ̨5> Tg(o |24e T-uT"|=ą*+Ʌ>{C{D,Z[e/IPGa;^)7ݒ5ϓ?'C)>oAՂGMH;rN8)*X'`K@NI Qlq qDB;wa-2uh>P0G9{9k}BA)yGxJy[vKt9і@Dz l_)ğt)Ղ+dAB6:WVviS[Q@×_KY2X5ǖM>C1m6ۄ~aJra=W8KST3FU8<;cXZ2YM4Rl8@{C\x8My]`?M:YuGM=Ssv sUE=aM6`\=NsRDQdl?FbtL:wg}2MU>.>^>R point06wk戃w5}hpu}'T՜TUjuTpxt@yjpqfPavlb^v4yKz(Gy`V^}^nuquC{,n|Fy?Ls~'?y6\x{Aa}sPigQgo[PVhrInN{zfKyx\ĆBg z0RŅTC}@d Do|3HEv8o&MbGK6yOiP]vU(?enugf^ w2)$.%#I]6%L& h90$CRs\BLwd.~z/wrˍM4Eȋ G|%7cH}6;}cCYq_^B>UQM'/v#tO=l@jhGB.X?|]GHuA/_G=vBA"NBYHwLxX6[5A(^Fq7SaS]>Huq?[_rssw8HGEaqRZJ,0|}5_ouUh jLNh}DeȠBǔm^gi9dUdu4tjbh` jo~w k_kJitTn|Ih S|r *w4mbhkf`chfUjirh*kZ pUEjTiVpok=hjavgafwUswubw␁{x{(x f qzn }"O)f of)* #KYa>wsKOd%)rEdVT%KZAQ <_Mc9LHXyy{ܤͩ9A Ts&n  |12eT.vT"|>ą*,ʆ!?{C{E*Z[e-HPIb;_=8ޒ5Г@'C)?oBՂHMHP1G9}:kBA)zGzK{[xLu9іAD{!l`+ğu)Ղ+bBB7:YHxjU]RA×aMZ2Y7ǖN>D1o6ڄ~cJrc=Y8KUS3GU8>;cYZ2ZN4Rl9@{E\x9My]b?M;ZvGO=Tuv sVE=aO6`]>NsTERemAFbvM8yi}2JD>u0>]>ʔ|point07~k劈w5hp{'WY~XiuZoxs@zipqfQ`vma^u?xJz&HxaS_{`murtC{,m|Fx?Ls~(?y5\y{A`}sOigPgqZRUipInN{ygK{w^ņDh x0Q VB}Be Co{3IEv9p&LcGJ7xNiO\vU(?dnuff^ w2)$-%#I]6%(& h90$CNRs\BLtd.|z0urˋL{4FɈ Gz%6`H~6;~cCZq`^C?VRM'/w#uO=l@jiHB.X?|^FHv@/_F=vAA#MCXH>g "O61x-0qT1ls0:s,pO,[S;DYe@#vZ:0r?<8CR?vTb``rhRdcm8mm9lzwLxY6[5A(^Fq7SbS^>Huq?[_qssx9HGEaqRZ~J,0z~3_ptUj iN}Qg}Ed̠C˔n]gh4cUgt?|jkhh jow1q^kPhv\nM~l [{z-*w?pahneYhgmTtohvh+rZ wUEsTkSs6pLmވevlfmvUrvubw~{x{(x f qzn} !O'f of)* #KYb>wsJO d#3tEfUS,JXAP <]Mb9JFXwyyܢͧ8A Th)o  |55e!!T-tT"{>ł*,ʃ!>yC{F.Z\e2IPKc;b=<ގ9ГD'G)CoFՂLPH?uQ8,,X*cJDNL Tlt1tDE=we-4uk>T4F99kB@)}F~JZzKw9і@D| la*ğw)Ղ+b@B6:WV{i#X\TAėdLY2[6ǖM>C1q6ڄbJsa=X8KST3FU8<;cXZ2ZM4Rm8@{D\y8My^a?M;ZvHN=Ttv tUE=bM6`]=NsSDRdm@FbuL:yh}2 >4>L\>p,point08i⊊u4fp-~'Y}_{[gvamqpUugp}n^O^uk^^sC|vVt|&Fv_}S\y]kvpqCx,j|FtCHp~(UQM'/v#tO=k@jhHB.W?|]EHu?/_D)v@A"KBVH>d !M30x,/S0lr/:r+pN+[Q9DYbA#vV;0q==8BP?rTf]`rdQd`m8jn5i{Eup?[\otsw9HHE^pRV{K,0w~~?x`mqTh cNzReكCaӡ?{ҍi[gfFyaTirCiwfs i6v #Y&h0|:;;e&'T,qY!w=}++">tAC4Z[d:L&QJ&a…c)Aݎ=ϜJ(L)GnIՂQSH@uR8/+-fJHOQ Qjt ufE:wg-2tmCX#6E48kA?)|E}IYyIv7і>Dzl_)şu(Ղ)b?B5:UVxf#VZQ?ŗbJW2Y5ȖK>A1p5ۄ^Js^=T9>OT3CV8~9;cT[2YK5Rk6A{A]w6Ny]^?M6XuGK=Qqv sRF?aK6`[;OsNCMck=GbpJ:te~2 >u5>Z>BiNpoint09|gጁs?wdiy-t~&O|XzQfvYkdnUieppl^E]ua]^uqCotVhz'=uV|SQwRivho?p,vh}F~rC>g(1y$Zy{0_}cLiVMgfV FS\m;nNntgKqr VƆ:~a ws0zMąH@ŀ8\ }?pu3:Cv.e&Hc7I)hJi?Z{Hu+.boWfbg^ v  '%-%M"K]d"L& h 8f@jbHC.Q?|XDHq?/ZC)r@AK=VH9c M+/v%.M/ln.:n+pI*[I8ET`A#qS;0j:>8;N?lRfY`r_Qd]l8gn5f{;tk@[Rntsr9HIETjSLz|L,v0wvr}?k`bpT] WDyGd܃8`ז4z֎\YgudFl_T_pC~g:qdm fds5k[kLe}`jJzf _x{/+sCd^hdaWackRvke#nd(qW tRDxQ `Qk~elKi}ߊ]}xkcp rRnxqbsvtv&t cqwm|!(O.fpcn(* #K&`X8siHOd.*fAUOrR$MRAR|>VMe}9EAXsysޜТ:C Y!h-|9 9e$%Y.oY"u@|+-}"@sC9}1[Sb:L&QD$WÅ]3?ݎ:ϜH(I3EnEՃPOV;uMo*#(bJEOO'Hjm;oe=0wb2)hCV#1G4v9lyCA)sFsJt\oIm7Җ?DtlW'Ɵn(׉*d?B6C1g5܄zZKn[>P:>LV3?W8x6Ur(>EZ>wߞ'point10ngxs4lein-m(CH~BivGn^qUafpkn^=au[_^prFlvVc}(7{SOG{Fltdr?m,sj}F|tC8d~(+x_y'c}\MiNOg`W =UWp5nNjwfAnt TƆ5a uu0tKÅ>AĀ5]$v=pv3.Ft)f&{Fc+L#bLg6^{Bt+%fnWadg^ w  +%/)&I`E&(& h80%C Rs]_evi?}xCĈ'v<؋m~6aˊnx*O_V6;cCVq^^>:SNM'/w#uO>hAjeHC.R?|\FGv?2]D)wA>M?YHD?wMxZ8]5CL`Go7ScUY=6sm@[Nrssw9HIEPlSEL,t0tzn3i`YrTU Q7~8g}(eӘ(ӍR[gneFe`TSsCog^e] yfoyt<\[k:g{Ml:~\ M{n/x+}sCX_hXcYReYQt]f#be+`V dQedO WSadcL]lRv_Xd vsTvoxpbwsvwsv(s |f qzp~ } &O*f pf** &K#TM8w^JOe()_>˄LQlQ$eVB'][M8KGzxz47ߧip T w%l 86b(#TMEsT=yXɃ3Iԃ$UyD5}(qKi8>!QH$TÅ_4Aݎ:МJ(K3FnFՃSOJ9tMo(&cJFOP'Ejm;pe<+vd2%iCW#/|@4p3ku<|;)nApDtUhFd3Жy;fhlJ%Ġd#Ԃ$b;B0:}TVif#CY<=ŗPHwU2D2tH>=1_0ڄ}ZMqZ?N;>IX3;Y8y2>cO^1SH6Rb0C:`n0PyY\@"\s@JaO>X>9r j]point11i芕x4hi '_d^lvcq|xUkiu^Wmse\yF~H,ZvOdcruxF+p~EvD\(Py4o{Br|qRheVsvZ T`tyXnOhAx |ȉ\ wZJwPZPje=@vp{kh^r 1-352&T"D 1'% a9%12>*%Qg` @ьӛ{Q˹hȡ;CocCr^kf~M'/#O@AyJE0{@|?AAJ%:@?4L$e `1`J/y  c<|@'/6 l3z,8DFMtA-h_;0\B>o/b@fN]VaWOp\koko7l|:}\}|5~j3]}vLVpaaL+?DAuOvȜ\6ɬ_5ÿELbI9SfW?ZsA[m}ss;JKEvU fN*14`vyTr p TTk}EiԘEՍo^gjFeTox?hyeyhdw}ugU c#3r:ɆlaXP/{eƶ0ׅ=m^(TV􄗧 伐Ł@]wԈufN(j cΟˑq ݊@LӉ@)ƛ؜1ÏaidoБhqԔD~G %qÂ6=7h܀ JvȗmnUŽmݽ@طG*ixы\oTƑ/:j(։thKgi="wZ9ASU4~DWoi;)8{+pbdh]urv w l#1'8~!0z'v(rN$qTg'-o"w#rs f\v81}31t.oM&n]%mJ+j> d͌MǸ†w慜}Dp\Dwr]le "M,0%G?~@yJ E54Me _3]J5p& c4{9$"y6 l4 s!X*7GNfA-bG<f?uNv\o_9E=aI8SfX{>Ot?X[~rr:JJdn U W~N)<{{4vUeqTa ^ BBa}3_֘3׍]Sgz`Fq[V]p?x]fZf]dobSldmLgl\vjcn pTjvlbo~vos(n G<+8F/V./.G\*{GXX; _,M.VM\~%tV~wc$5o1|(Kan8҂oNL!dR> n=;Bw3X7l%ZnW?Zs>^1>G6RA%Db(aM R}O^?G"uv-R=Mw,\EHFFB8]56Ru+P>zF/JhQGgf1>0>},>GXLcrstnd01ol}7ni2(imcyti|Usa{^P{_sFJ(X"iNli}toBo)hto6k{xfHmlm+A]_%mD`z=cqski2Sv Y HRVlRCz;{c 0}~7pU:Fah(^Fhzw|D7lTtyOXL[(t?F^Z,~JrJ*RW\nR\=fDn2wy/l2fd'5o;&Jb3A]KSbMG] >LI&j9BVM[8>Z8LZw 'k#%ag&8X=!3SA8R'PY J\2FK~}̠ttJ׭~t{}pxid\DVhh~"O, 0%O·88>mSE3F}A2>J ;>.FMe W6R@5Z(X12'y8 l6s#XA"LfB;.k$07T:iG@Ddt2PVbJYf3afcUija6qnoSdsmr{}ojv{䈀 }Txvwa|z}(x %r.#$pQ}sbp ZO-b>-Q:jQ ^LaQAj 6kb4pz Ea@-jGTgnfg>c(R\NJU{nZX*K6i3K~95V9]F/zqEJN:pk%Qu"\Zo>ʊDmd=fT1jBM$>%p-2$q+_ IE{NiY5Q9L-3MBxY]Nb95J$pUG*2HUIi2K9^9aC)Sv$dt~1lU!SjCgX{s-2>> !,>0Y9Ocrstnd02mly7lg2+knb{ԑh~U~rgx^Q{as|FJLX"iNnhtpfo)hto6k{xfHmlm+A]]%lD_z=cpslj2Tv Y HQHmRC{;{c0~7rV:Hag(`Fh{x{D8lSsxOZL[)s>E]Z,}~JrJ+QW]oQ\>eEn3uy0j3dd'6m;&K`3B[KTaM I\ ?KI'h9CTM Y8>Y9JYw (j#'_g&9V= 4QA9Q(N`!H\3EK{{͝r¢rJڪ#{tČy}nvid\DuVijO, 0%Oø98>mSF3F}B2>K ;?/FNe W7R@5[(X23(y9 l7 s$XC"KhB:.l$/7V9iI@Dew1PWdIZj2afdTij`6rnoTdrnr{}o<{T3iapnr/MkqJsNr5)ѻ6B9rΦGwWE]5C(ݧ]M9N۽g[9GUU:^_S[A=Po[uZ!FkZ2mory4`{T~$}'aY||L~ǛUmismEkTuFlxn ipx:uez[{{lz~b$p0)xDskstoRosnZݑyq-}o=u^ wXevU~Sb>jx{㈄ zTu{qay~ux+s'q.&$pN|r anYN.a>.P:iQ]M`NBi 7ia5oz F`@.iGUglhh>a*Q\PJT{p[-Z6)l,_J?INS>X,K8i5K~;5X9]H/zsEJO:rk%Su"^[q?ʊFmf=fW1jDM$=%r-1$s)_ GE}Li[4O9M-2OAzW_Md94J$pSH)1ITIj2J9`8aD)Rv%ds~1kW!RjCgY{r-Y>W>E+>[2crstnd03mlw7lg2+mob}ӑh~U}rgw^R{atzEJLX"iNo"hƑpfo)itn6k{wfHmmm+A]\%kD^s>cnsnj2Uv Y IQHnQC|;{c0~7tW:Iaf~(bFm{xzD9k~RrwS\L[)q=E\Z,|}IqJ,PW^pP\?dFm3sy 1i4bd'6k;&L_=CZKUa J[@II(g9DSM!W8?W9IWw )h#(^g%:U= 5OA:O*MY"G\4CKyzΛqĠpVܨ#ytNJw|kui6\DuVjkO,0%OŹ:8?mTG3G}C3AL ;@/FOe W7R@6[(Y2 3)y9 l8 s%XE"JiB:.n$.7W8iJ@Cfx1RXeH[k1ageSik`6rnnTdqnr|}o<|T3jaons/MlrIsNs5)һ7B:rϧHzXE^.D(ި^N9Nܾh\:GUU;^`S[A=Qo[uZ!Fk[2mory7`{T,'bY|LƛWljrl6~jTuEkvn hpw:sfzZ}ݒk|~d$q03vDrlsspRntk[ݑwq-|o3s^ uXbrVꆀSb>yz{㉇ xTs{oaw|"su+p(q.(~$pN{p amXM/a>0O:iN]N`NCi 8ga5mw G_@0hGVgkih>_,P\RJR{r[-\7)n-aK?KNU>X-K{9i7K~=5Z9]J/zuFJP:tl%Tv"`\t@ɊGmh=fY2jFN$;%t-/$t(_ FEKi]3N9N.1P@|V`Le93J%oRJ)0IRIl2I9b7aF)Qv%dq~1iY!QjDgY{q-Q >>m+>O\cmsok2Vv Y JQHpQC|1{b07vW:Kae|(dFm{yyD:j~QqvS]LZ*p<E[Z+||IqJ-OW_pP^@dGm3ry 2g5ad'7i:&L^=DYKV` LZ@HI(e9ERM"V8@V:GVw )g#)\g%;S= 6NA;N*KY#F\4BKwzϙpŝnVަ#xtʈv|iti6\DuJllO,0%Oƹ;8@mTG3G}D3AM ;A0FPe X8S@7[(Y2 3)y: l9 s%XF!JkB9.o%-7Y7iL@Bgw/RYdG]i/ahdRik`6snnTdonr|}o<}T3jannu.MmsItMu4)Լ8Bï;rШIzYE`.E(ީ`O:Nܿj]:GUU;^aS[B=Ro[u[!Fk[2mpry7`|T$'bY|LśWlkrm6kTuFlvo ipx:sfzZ~ܒk|~c$q03wDrlsspRotl\ܑxr-|o3s_ uYesVꆀSb>yz{≇ yTt{pax}"tv+q)p3*|$pN zo `kWL1`~L1N:iN\O_NDh 8fa6lwH^@1gGXg!ikh>^.O\TJQ{t\c>F+>T]2$[crstnd05olz7ng2+lnc|ґhUtgz^S{ct}FJLX"iNoitqBn)jtm6l{ufHmmn)B]Y&hD]}s>bkspk2Wv Z JQHpQC}1zb07wX:L`d{(fGm{zxD;j~PpuS^LZ+o;DZZ+{{IpJ-NW`qO^AcGm3ry 2g5`d'7h:&M]=EXKW` LZAGI)d9EQM#U8@V:GUw *f$)[g%jy{≄ {Tv{sazwy+t*p3,|$oN!yn `jWK1`}L2N:hN\P_NDh 8ea6lwH]@2gGYg!ili>]0N\VJPvu\TdJh92J&nOM)/XJPIn3H9e6bH)Ov&co~2f[!PEg} Z{n-M >>C2+>_Jv[crstnd06ql~7pi2,jmc{thUui}^S{ctFJ(X"hQnjtqBn)itm6k{tfHmmn)B]X&hD]|s>bjsql2Xv Y KQHqQC|1zb07xX:M`cz(gGm{zxDjw{∁ ~Tyvxa}{~(y+p3,{$oN"ym_jVK2`}L2N:hN[P_NDh 9dc6kw H]@2gGYg"hli>]0N\WJ Pvv]q& w ~xrm^w?֎p_ߚy3Јܖ1̃zgx&l˞sYbmvD| 0Zr,F¼bv~1§Jаw-u姜,U֗Kɡ4i|jXdϱpگ^9ռ ]0gN>ڑW5X5b^A#a;)t2eL?OOY@X1L{=i:M~A5^9]N0zyF@R:xn%Xw"d^xBȊKnl=f]3jJP$9%w--$w%_ BEHi`0K9Q.0T=SdIi91J&nOM(.XJOIo3G9f6bI)Ov&cn~2f\"OEh| Z|n-wk >{=>g*+>_&֗Rcrstnd07sފ4si ,hkdzti~Uwi^S{ctFJ(XhQmjtqBm)itm6k|tfHmmn)B]X&gC]|s>bjsql2Xv Y KQHqQC|1zb07xY:M`cz(gGm{zwD]0O\WJ P}v]q& w ~xrm^w?֎p_ߚy3Јܖ1̓zgx&k˝sYbmvD{ 0Zr,Fübv~1¦Jаw-u槜,U֗Kɠ4i|~jX~dϱoگ^9ּ ^1gN>ڑX6X6b^B#a<=t3fM?OPZ@X1L=j;M~A5^9]N1zyF@R:yo%Xwe_xBȊKnl=f]4jJP$9%w--$w%_ BEHi`0K9R.0T=SdIi91J&nNN(.XJOIo3G9f6bI)Ov&cn~2e\"OEh| Z|m-"n >`>8+>_3kcrstnd08uފ4ti ,gkezti~Uxa_S{ctFH(XiQlktqBn)itm6k|tfHmmn)B]X&hC]|s>cjsql2Xw Y KQHqQC}1zb07xY:Macz(gGm{zwD]0O\WK Q}v]p&~ w ~xrm^w?֏p_y3Љܗ1̈́zgx&l˝sYbmuD| 0Zr,Fübv~1¦Jаw-v姜,U֗Kɠ4i|jXdϱpگ^9ּ ^1gN?ۑW6X6b^B#a<=t3eM?OPY@X1L{=j;M~A6^9]N1zyF@R:yo%Xw"e_xBȊKnl>f]4jJP$9%w-.$w&_ CEHi_1L9Q.0S>TdJi92J&nNM).XJOIo3H9e6bH*Ov&dn~2e["PDh| Z|n- >Ӂ>V+>_crstnd09vߊ4ui ,fjezti~Uya_S{cuFH(XiQlkupBn)itn6k|ufHmmn)C]Y&hC^}s>ckspl2Xw Y KQHpRC|1zb0~7wY:Lad{(fGm{zxDN ;C1FQeY:T@8\(Z 4 5+!x<l: s' XG"JlB9.p%-7Y7iL@Bij-RZ]F^]/ih`Rpk`6rnnTdonr|}o<}V3janw~/OntHuLv1=Ӽ9B¯;rЧJwZEa.F(ݩaO:N۾j^;GUV<^aT[B=Ro[v[!Gk\2npsy4U}Tx w ]]x}Pw˜Pčwlgw7rVu?u{r{uo<}jh]wvl{]}!l2*?{ohzsYtuy]t}uu+b ^EZzSdL}jtvy Tvb~(*p.*|$oN yn _kWL1`~L2O:hN\O_NCh!8fc5lw!H^@2gGYh!ilj>^/O\VKQ}u]ۑW5X6b^B#`;)s2eM?NPY@X1M{f]4jIP$:%v-/$v'_ DEJi^2M9P.1R?~UbKh93J&oOL)/XJPIm3I9d7bG*Pv%do~2fZ"QDh} Y|o->`>Rl+>0N_1crstnd10w4vi ,eheyuh~Uya_S{bu?H(XiQkkupBn)htn6j|ufHnln)B^Z%iB^~s=dlsol2Wx Y JRHoRC|1zb0~7uY:Kbe{(dHmzzyD;l~QouS\MZ*q;C\Z+}|IoJ-OP_qP^?dFm3sy1h 4bd(7j<'L_=CYKUaJ[BJI(e8ESM#V8@XM ;B1FPeY9T@8\(Z 4 5*!x; l: s& XE"KjB:.n%.7W8iKAChi-WY\H]\0ig_Smka6qnoSdpms{}p<|V3iaou|0OmsItLu2=һ8B;rΦIwYE`5E(ܧ`O:Nڽj^:GUV;^`T[B=Qo[v[!Fk[2mosy3U|Uw v \\x}Pv Očwlgx7sVt?uzsyuo<|jh\wvk{\{!j2*?{ohztYtuy^t|vu+~c ^EZySdL|jsv}w Tvb~()p.)}$oNzo `lWL1a~L1O:hN\N`NCi!8ga5mz!G^@1hGXh!jjj>^.P\ULR}s^ۑU5V5b\A#_:)r1cM?MPW@X0M{;j9M~?7\;]L1zwHJR:vn%Vw"b^vBɊIoj?f[4jHPԄ$<%t-0$t)_ FE~Ki\3O9O.2P@{V`Lf94J%pPK)0XIQIl3J9b8iE*Qv$ep~1gX"RjCi~ X|p-ԓ>Ő>h+>$^q"&/crstnd11wኔ4vi 'dgdyug~Uza_R{au?H(XhNkkuoBm)gto6i|vfHnlo)B^[%kB_sM ;A1FPeY9T@8\([5 5)!x: l9 s&!XC#KhB;.l$/7U9iIADfh.WW\I[[1gf_Tmka6pnoRdqmsz|p_-P\SLR{r^7Z<]K1zuHJR:tn%Uw"a]tBɊHnh@fZ4jGOԄ#=%r-1$r*_ HE{MiZ5P9M.3NAyX]Md95J%pQI*1IRIj2K9`9iD+Rv#fq~1iV"SjBiX|q->u>S+>|]ncrstnd12w⊔4vi 'dfdyug~Uza_R{`u?H(XhNjjuoBm)gtp6i|wfHnlo)B^\%lA`zeEn3uy1j 3dd(6l<'K`=B[KTbMI\BLI'g8EUM"X8@ZL ;@1FOeY8T@7\I[5 5)!x: l8 s%!XA#LgB<.k$07T;iHAEeg/WV\JZ[2ge_Umjb6pnpQerlsz|q_,P\RLS{p^"H>N+>1\oؘcrstnd13w⊔4vi 'dgdyug}Uya_Q{`u?H(XiNjj~uoBn)ftp6i{xfHnko)B^]%mA`z;epsll2Ux X ISHlSCz;zc0|7qX:Hdg}(_Hhxy{D9n~SqwSXM[)t=B^Z*IpJ+RW\pR\>fEo2vy0k 3ed(6m;'Ja=B\KTbMI\ALI'g8EVM"X8@[;LYw(j#'^g%:V=5QA:Q+NY$H\5EK}̡ttVخ#t|}rwid\DVjj"O, 0%O98>kTF3G}C5>K ;@1FNeY8T@7[I[5 5(!x9 l8 s% X@#MfB=.j$17S;iGAEeh0WV\KZ[3gd_Vmjb6onqQeslty|q/P:iQ]MaQBj!7ja5oz!Fa@/iGTilgj>`,Q\QLT{o^[6)m+_L?IOT@X-L{8j6L~<7Y=]I1zsIJR:rl%Rv"^\rAnFng@fX3kDNՄ#@%p,3$p,_ JExPiW7S:K.4KCu[ZOb97J$qSF*3HUIg2L9];iA+Tv"fs~1k"T"TjAiW|s-A>H>\{+>[[-\вcrstnd14v⊔4vi 'dgdxug}Uya_Q{`u?H(XiNjj~unBn)ftq6i{xfHnko=B^^$mA`z;eqslk2Tx X ISHlSCz;{c0|7qW:Gcg~(^Ghxx|D8nÐSrxSXM[(u>B_Z*IpJ*RW[pS\=fEo2vy0k 3ed'6n;'Ja3A\KSbMH]ALI&h8DVM!Y8@[;LYw (j#&_g%9V=4QA:R*NY#H\5FK~~ˠuuV׭#t{rxid\DVii"O, 0%G98>kTF3F}B4>K ;?1FNe Y7T@6[IZ4 5(!x9 l7 s$ X@#MeB=.i$17R.P:iQ]LaQBj!7jb4pz!Ea@.iGTilgi>`+Q\PLT{o]Z6)l+_K?IOS@X,L7j5L~;7X<]H1zsIJQ:ql%Rv"^[qAnEmf@fW3kCM~#@%o,3$o,_ KExPiW7S:K.4KCu[ZPb97J#rTF*3HUIg2M9];aA+Tv"fs~0l"S"Tj@iW{t->D>1+>Ycrstnd15v⊔4ui 'ehdxth}Uxa_Q{_u?H(XiNjj~unBn)ftp6i{xfHnkn=A^^$mA`z;eqskk2Tx X HRHlSCz;{c 0|7pW:Gcg~(^Ghxx|D7nÐSrxSWM[(u>C_Z*IpJ*RW[oS\=fDo2vy0l 2fd'6n;'Jb3A]KSbMH]@MI&i8DVM!Z8?[:LZw (k#&_g%9W=4RA9R)OY"I\4FK~ˠvNvJ׬#~tzqyid\DVhi"O, 0%O88>kSE3F}A4>J ;?0FMe X6T@6[IZ44' x8 l7 s# X?#MeB=.i$17R-Q:iQ]LaQAk 6kb4pz Ea@-iGShmfi>a*Q\OLT{n\Y6)k*^K?HNR?X+L6j4L~:7W<]G1zrHJQ:pl%Qv"][p@nDme?fV2kBM~#@%o,3$o,_ KExPiW7S:J.4JCu[ZPa97J#qUE*3HUIg2L9\;aA+Tv"ft~0l"S"Tj@hW{t-d>[> ,>@Xcrstnd16uን4ti 'eidxth|Uwa_P{_tFH(XhNji}unBn)ftp6i{yfGnkn=A^_$nB`z;dqsjj2Sx X HRVkSCy;zc 0|7oV:Fcg(]Ghxx|D7nSsyOWM['u>C_Z+IqJ*SW[oS\=fDo2wy/l2fd'5o;&Jb3A]KSbMG]?MI&i8CWM Z8?[:LZw 'k"&`g%8X=3RA9S)OY!J\3FK~ˠvNwJ֬~tzqzid\DVhh~"O, 0%O88>kSE3F}A3>J ;>0FMe X6S@5[IZ34& x7 l6 s#X?#MeB<.i$17R;iEAEck1WU]KY^3gd`Vmjb6onpQeslsy}p-Q:iQ ^KaQAk 6kb4qz Eb@,jGShmeh>b(R\NKU{m\fT2kBM~#@%o,3$o,_ KExPiW7S:J.4JCu[ZPa97J#qUE*3GVIg2L9\:aA*Tv"ft~0lS!TjAhW{t-*>;>h,>Wcrstnd17s4si (fjdwti|Uva^P{_tFH(X"iNji}unBn)ftp6i{yfGmkm=A^_$nB`z[9M[w 'l#%ag%8X= 3SA8S(PY!J\2GKˡvNwJ֭t{}qzid\DVgh~"O, 0%O88>mSE3F}@3>I ;>/FLe W5R@5ZIY23&x7 l6 s#X?"MeB<.i$17R;iEAEcl1WU^KY_3gd`Vija6pnpRdslry}p,Q:iQ ^KbQAk 6lb4qz Db@,jGSgneh>c'R\MKV{m[<`Gb[zsq‡anwP7uC_kM}5dz-ϩ"iffjgJw?pIЁ v wÊ nfz?іxfڡ4Œҟ čs{mʦsRepsA Ƈ0`~zk,Fbw~1J͵w߷-w㮜,UԝKǥ4m|lXg̷rֶ^9 S+gD:ۑM0N2bT=-W5)i*\J?FN"P>X)L5j2L~86U:]E0zpFJO:ok%Pu"[Zn?nCmc>fT1jAM~$?%o,3$o,_ JExOiW7R9J.4KCuZZOa96J#qUE*3GVIg2L9\:aA*Tv#et~0mS!TjAgW{t-V>O>,>WDW$crstnd18r4ri (fkdwti{Uva^P{^sFH(X"iNji|tnBo)gtp6j{yfGm"km=@]_%nC`zMI%k8BWM[8=\8M[w &l#%bg&7Y= 2SA8T'QY K\1GKˢvNwJծt|}rzid\DVgg}"O, 0%O78=mRD3F}@2>I ;>.FLe W5R@4Z(X22&y7 l5s"X@"MdB<.i$17R;iFAEcn1WV_KYa3geaViia6pnpRdtlrz}o,R:jQ ^KbQ@k 5lb3qz Db@+kGSgneg>c'S\MKV{mZ<_Fb\zsraowP7vC_lM}5ȳ-ѩ"ifgjgHw?qIҁ w wĊ nfz?јwfڢ4ēҟ Ďs|mʧsRfptA LJ0`~zk,Fbw~1J̶w߸-w⯜,UԝKǦ4m|lXg˸rַ^9 R*gD:ۑL0N1bT=-V5)h*\I?FM"P>X)L5i2K~85T:]D/zpEJN:oj%Pu"[Zm>nCmb=fS1j@M~$?%o,3$o,_ JEyOiX6R9J-4KCvZ[Oa96J#qVE*3GVIg1L9\:aA*Sv#eu~1mT!SjBgW{t-|>:>,>OVUWkcrstnd19rߊ4qi2(fkdvtj{~Uua~^O{^sFH(X"iNji|tnBo)gtp6jzyfGm"kl=@]`%oD`z=drsih2Rv X GRVkRCy;{c 0|~7nTDah+\Ehyw}D5mTuzOWL['u@F_[,JrJ)TW[nS\;gCo2xy.m 1ho'5q;'Ic3 ?^KRbMF] =NI%k:AWM\8=\7M\w &m#$cg&7Y=!1TA7T&QYL\1HK~ʣvNwJկȀt}}szid\DVfg}"O, 0%O78=mRD3F}@1>I ;=.FLe V5Q@4Y(X12&y7 l5s"X@"MdB<.i$17S;iE@Eco2WV_KYb3geaViia6pnpRdtmrz}o+R;jQ ^JbQ@k 5mb3rz!Dc@+kGRgodg>d&S\LJW{lY<_Fb\zssbpxQ7wC_lM~5ɳ-ҩ"ifgjhHx?rIӂ x wŊ of{?Йwf٤4ĔjҠ Ïs|mɨsRf~ptA Ȉ0a~{k,Fbw~1J̶w߸-w⯜,UԞKǧ4m|lXgʹrշ^9 Q*gC:ۑK/M1bS<-U5)g)[I?EM"O=X(K5i1K~75T9]D/zoEJN:oj%Pu"ZZm=nClb~<*>ig>3crwalk1b슖n4`i{-|(j}oyhevni~nTcgk^Mu|PhoCsVz(^fNlxkivbqUf.]z}6QuR@a+8srdX&CjH!dPOy]]QcvEhUz\pfo~&D5 06uT,'[O!]TLfga s7Wtn\(eK5BM0W#9Fd(.-yXC2E@Dς0)zIa VN9>_}3NLti<t1w{!ط ˷¥;̸li}VQҎdwWٌu(_"wߛ ^ߣ}“rÃҚ oՀVxގ(hVt+y65k\fѝq~eƊk|ɇ@pو1}Ԛ%{le$AfzˁЈ0Ss-u$TG>ڃtn p6w]41n#cV(wi"_)Ba2 m+,)XB(E9O7W-*x&C؍9,؂=(H>YM)bXRMm[3Y_#6XUIiE72KSFU[0dG3r6K%c=<'d,5_v XEk]pMAqy(a:@>2-)>>^\Kcrwalk2l슲y4ki-'ovsyTnav^p|uqzF~H(Nsuz_.wdy{~]g{)`n?iHybnr\twr~c1qs;sf_OYCu: 9sdzSn`f=eNssfVtO^XIn"djXNiHL[PvV^Og{GmV~Zshp:i y e,f,e!bKP(^NV\PM Tnl)N^l\+O e}PTm^pi pmaD]#Z&^TOXVcQ`iJ_XJerӄ}sݐtiÅs9QJϭp ̪ZD]"G+ 0/HؖRVyĻf ݰ[5X|4JJA599KD@6_e$aX$_$h"J0|A+;&j6)n2& z"5?<[\L83X126F'HgFSJ#r.sjLwg2inYp{e4|voty~x9]=qv{6NNR|6>PfҏSuهevxo}5ZL۷bƫKS蝇uŰJHz^N–P\wcԤX4ėjn|l$bvɭq2|4`zT n}tlҘtԍcglFhTyCki kdxLqiL@;}U:ecOρD8xug2xP8@_Ѓ3P({i8-x! Թͪ1èvVr݄xvx䂞(~{ˑܖyV(hVt+|oف0m\ژ~΅ӂ@M1ߖ%leԱķ ׭AȯfѩzĪ0Ss-̵$TG>كn ϐ7]42'\r0v'{0B}8 0,)yI+fDp@WN8vLRՓY9ւ]3lGTl2i~YG_5~f#^dvQ憉J6WYwMUy6pf=߉n/;,^71(Y%.]rKeiVmGDuy"Q8A?`THa>KEN1?gFBa}I{Ys!R6\gvvo.Z>!>F>)܂scrwalk3r튫4qi 'w{vtvzyTta|_Y|et?H(gwN|{yux@z)qudo}^P|vx)Hlg)wJosCuurpf1[r;`O]OuWC}:‡u <|EqVHb}+ZNh}f:pΐgOTZX*}OMk]1S~H.YPcT^(fl2|6rHn$W&ASO9THR`PLB; INeqon{{ڄhlniρu9NJp߭ZDw[}~O+0*HܦGQj\ M3T|BEKS/CfמJw[xh6l3JIrTCQweAHc[J\gcqֳN?Ʀcg|c'KwȽg2sr3UT lls}^qИ^ҍhgsFnT?qoqoS=%86K|L9@2 IvR=/&^R&irEr63ukB(dA0SGLgUdhLD|3>cPNɁ?}ld2iM6AB.O(Ӄpa.W#QOn`v" x ׬GڀT0ҕF΅x4ڑP:V ;fΘXɊqe N؃TVGwgS~p(z7{.m\Jץ~Jȓvq^ԉUJލ/^'D"KBhց-SǒihȔ{־"TөMͯ+y8[ p|4pА_ú) w"c^,uo"߀k-Dm4 v**!jH+RCa?Y59v3SʓA8ʃJ4`IT\2awZG]5pcIdeNH6@YnOJl5pQ;Ղ6E%u=7't+1_ SEZm[Ar)[9M?:O$Nfa\fI:J&ZH<:NVInES9a2BiF@^v(y}7p"Z8^J| ax-=ye>>u'~_crwalk4gt4ei ({yjt}otUhap^_i}tdXuFyJ(\oovx@r,sovEuy~`>o}+4pvduu{LQgBXrq[2i\ `x @aGvZ>z1ċf 0z4L:bEсbx'H}FH60D?6C6^b_Hje $9\/7t:4 Xk.k$ mc*[dRBP2)@8Abj=Qui,QfYHkZ.iw^Upne4ku]\ut{x<{_)y]snvp7vwMuRp6L׌(^Ą4x܀@FEH?ݬ,IQʹ:2UG#0OMa9[T}jrś7COo_R'>R/v o~4`uU oni}_gϘ`Ѝ[gf7aUuFfdeot.eQQw)9YT|_(2^< Hb`%YrWp+~ow_j:[Wr,=4L>>pkcrwalk5b슴p4ai~-'zzxevipTdam^Xj}iaXrFvH}(^pN~{}jvyrUp*mpx6lsf=k~+3q zizyEUs;[wq{U2_] [v >bOo[Cq<ċl 5qFE8QHm,k8iqB=R~UrN^B]&]8GP]#oAtH\P^pW^a{ lokc-]45#g<'7_+#.W&5a ,YI4]."S+M3Y|I%Oi)b5Re"+M& $GO#J DY%<^>M~dq[nth؄yQjhopӁy9PKʙpǕZD u[O+0ӳ/ҶHߌQWya X5V|fCK~20gA?2D \M]HSb'&\7t#4 XQ,kq! ohJ(T!SCK0)<8p@iZ?OT4YhNPtG9muX]nmg9ykwV^ypzz- *)F(35<D 3 /_ f-"cfih#1]H&KXLCiZ( :/5^c2j-w|N0w!u;<̓L ʃVn6TjaHGI5MTNu626JB};J|p^#Ո'N#1@$ 6@ WEZpx :[b:e0;QfGfvV};BK#hWb+8XL}a(3[<|!DbQ(Zw[w|'th!^j8_Tt=" ->>Swcrwalk6m특y4li-(ovtxTnav^a{|iozF~H(oztv{{Uw.kz}6fzcGq+>srBgz9ms{c0go;^;DdOm^Cx: 9vEyST`ބL\JhwufCk~m|NNTX+wƒNFdX'L{V!cPZy]];`t1hIujLi]e6YkPI.r7>8U'HiFPPxo8[aeSld:inibmsj4vu|Smr|<~d3kj|prۍ`&EcCqʘdɇqq۝]قVe&lVx(6߄0qcRӣĀSȏzqkӉJVݍ0jݝ$nD پKĽfԸh¶ʉ/Sh#vȍϹ RȠMLقo |~4~`=2+^|.w)假1B9 2$1|I(e@r?WI0w?HٍX2ׂ\0hGRp1b{[Mc3|dR\yN煑N7MPvOV8di9߇7O%x>@$y-9_!\Eam\Cq)f:M?>QL%P{m]_gICJyaG==XHd(lB[9a2Fa?L$>87)>qncrattk1n舡w7lh2+|szܑy~{`pgu^dnzWxE}JLw!O~"x}Αf=t6}fok"jLg\FjQwpyzgy~zoj ]{džwlRVUBz:yomZlKq~.]YszeELceRCt"tzZt~>Q\~{Z\} #!("/92(*)#K(_ W3A& 0_+ # -Z!}1<+<48\5p:;?ŒݜѪ׷㷛պ}h~^d \DV M, 0%G߹3oŬ;hRB3E}iJ>q1 ;fGFt2e8j _g@^nI?l3J5KQ9y`' l_%sM8Xg>R[B.@77y.AilYJ9~sSu;av^ize6t;|y}rp(UJ6N`V7G|Tɴ6`P=?ЯLouX$liW2ny7`~T''sk{|_|Иh|iskEiTDmp jpw:gzm{|{~t$03vDkzoWs}^瑇q-n=a [bYSp>j{鉓 wTs{pgw|"tvLr NK dN H^`K}h S M !I@(M*G Iv -#8 #' cVTXu'f]a_SHhWeXnf3^Rnr]o~D댰v_>VO)2ՇՁK왘.$ﻄխ{ݝWK)ڗKۦ5Ĥiή˕^Ð堝WC'Dž2zeĠ#țFäer|Ƃ Kq %J(dz5{mY݄̍ʌ_ä: d5gRA{^8\XHYO:hpVJ_9ps%Px"batMnFoeL_^=lKRτAF%H9'63_*RE!Wp~$=q2Z:qH9r,I%b%VSJ?0>Hucrattk2x܊4wb 'UZUyvZ}߁rUuza_>U}Y?Hv(IdOYY~ujCxwLrm6xzDGe"qcL3CAGAK0 :@EFN0ec 4a@2k& fF|G%8y7' l4%s6KCLna:*yI07c7$zqo v^`zu;d |~FT;vJ8k8:x^j=F&tZV/:]~:.}Qs[];_^濠5k>ڱhKI{BNq$Ϳ ſ]UpmfHpt0Hv)iHao_:(\kYAiGAIL>$}Q2 A,_9IF0Opk.8qAQ9TM4[4C3Zo0PkY5J"ZMK4IX&vTJ4jC8aMITw(vx~1qcDRlLz`t-7-=&">^4>FI{rcrattk3nՌ}3lb-~'T[Yhv_nلrxUxmbw_Brt]o`|?~Ht'D_MY~\nul>vsLt|i6}zCDao`L9R{_&k|RikHgrzd_Bb[BISrKCxgGx ~9sS;O}Ks%mKi?,Z{:u(p[w`%j.Vk[2}JrzL(}RdnP\F8>[AHX Wb`-SvHU}4jX _h [{XlyNj>TEa*cjgpy$udmqEstMۇx;nKvwpkԇm܋xho n6|0x_mSexemL}j"a|-,~>rcipfYkgxSvujzj(}Y UDR gQrEoLnҊcxmهd׍p |Txx|b|& Nh@`QEf>;``,g\0pE(kr,x7RvIFl>5tES{>D6V F^$NqOII9pYe;lBG0\A2mH]iZ TB*_(oB8<.S!lt.u"D;诀{ z䱇TǎǂzЋޔ ݝ8ʖ-ćZ2ݘ ӂT#MnSPw'b؀7]/XscΞQPg0шJ؊g/+ݘ jnCdYn,i3ipey|gGRĖgdA2<λuƧH[شiӾ%^h:_Wӄ?u1:}Ar-K3Ft-h}.x5)s;y8"@kH c7x?_b hC0a$j+^I@38{aGnl-H]9HUG{V1@;TL>:`/=7$?, -'_)BFIpw3q2J5Z60h?!S}KoG0V$lXT41GT&|BC4r.4bX3Px/au1mn/MSj~ an->'(>M4>P%Lcrattk4j֌w3hb-'W~^{\fvakۄtsUzhbq_Fltaj`v?zHw'F`M\z^kun{>vtLwvi7{CEap`L:Rs_*zk|WckMaqzh\F^]DISu{KCz{hHx |9xQAL}Kr%rIb?1U{;u(uWx`*c0[e]5x}Ks{L,tRhiP\m{zcw}}zoOvI͆xTy]}mԇ~4ŗ #vxOxFLš,͔xVSba3iw;j!c+_k6Y|e}0SUIpװ ZحDw]oq"O+0%O֕2ok_0XdXLdS6iv_Tpn[7ri;efqwgf5wP+}fmm-SukGpDz,(._э4u@xLEQ38IT׵C4Q[P2H]I6^^JҠs_ircYmdyQvwg|f(~W SDQ kQuEsLrlfxqهi׍u wTsxwbw{y|&z `aJZWb`GNZUFbfXk3>fbPsW~do\~}ce&[o=uG}.} }YjQW=rEnZKWTdA`w,nFMz8HP~c^mOCz%dZ&8--.#R ^u gأP T媇{R w}m ƈǓ 7.a'ǒ }Rƈ3fR/pMv3?y$FjBO#[a0J_"Ɠ"n:o?ZPc,`)`p^yrbGNucd;15pHSʱM`ȼ$bk:_V҄Cu{2;z>j-E/F~*g*z3)}62"6rE!l5?@l"iL/l$k0^MJ67}aqe MS@C]@R1I7VL>:j,?4!@) 0#_->F!Ed0q5E5`6.p=$OGrF.V(eYZ3/H~TBA3x/1b_2Nz5[u4~nu/KYe} dzm->+O(>0>Z_Icrattk5h݊v4gb-']b|_gvcl߁{sUibq_Jitff]v?yH~'HcOb{cluqxAzuLzlk7~~CIctaL>S"i`.pm|[ZkPXszmZK[ azHJSxqLC}x iJx y5}NGHLr$yDp~?7P{<u(|O`0Z2^\\:nOt~L0kSk`Q\robfnak;u}|}tvn}onaRwfJvm`}rm^Ì{pylys4͌ ~t!fQ„hV~jF̊qLВp'لjT]cagm44c[L_`5av^Tbe\6ik;h]szhwg5uM)]ox(MxbHtD}.$-_҉2u>xKEQ39(RذD3N[Q3G_K4^a}IӜ;?ÊJnejR$G_ǟS2rxnsh3UutTo kR|Ue}GbšC~ōq\ghFcTns?gzduh6u<{\kWevhjT|t"fx-*wCw`hvcYpeyQtzff+~V RDO qS{dyLvllvvoݍy vTqxtbu~zvz'w Je4fIaH5d^0mcBm?*tm>yJTqR~MgHGp>rfHmo3w}p}0xoIpP]9w6wgPPCi@Sz,uE@8ONj[!V?Jw'QJr7 7/qxvADԩs-y;xTu|kńƏ 7/a*Ð zTÄM?dTk-F0F*i+x2)63":xC q3<@riR+q"j,^HJ37]Mwd TSG@c@ʄQ1O5tRL<:p+81!;' + U$:C@d+q,B5d1,s9K CwA-H-]Y^.,MvV;@4|*/cc*Lz9Qu9upy(I\Zhqp-2=j>a0>XQH(nHcrattk6qߊ4np-'V\Xpv\wuzUynbw^Brt_m]}?Vy(B^O\\tvlCvw+utk6~DDdpcL9Ur`&ym|T_kI]sze`Bc [CKVtzMCx eDu ~9vR=MGp$qEp?-V{7s(tR`&b,W`\2wJv{=)tSffQ\^sdRqaU;`kc|isou^fSgkJjmTrco_}_ynls4} kz|!qlwnOpnF}vLu'ymSovsO~{T݋}A{`̈́ppБz5g\Jd \DTopM, 0%Gפ2o9kNڿ?3CA)AL :A&CO eJ 4HJ.Y& M %|(&y7 l5s Y#DtL4*2&4q1bTB>`|67\dLXm7apfUbk]dok;bbsvjh0N3{bon)IthHzGx/).@Қ2u?xLES3;(SF4N]S4GYM5^^JѰ;?ÛJo`lS$BaŲT2oyl|hy3`o|Ti fKMm}>iȡ;ƍj`gmF}gTh|?qtnq p6xLlE(oKZj^%yN_+~X&d)E>&{5"jb츄2ꩋ#yUՃ }w ݁'& & 6ϕ/ʅg4 )}U,I_rUb{(jՈ8i/dzcכLɋMg2؅Jeĸ-+ flDdXm+i?hpdڃ{ fʽHPÖep@/;ٷtʤJ[Mhܺ%Zk:^T:/>GJcrattk7jv4fi-(\a[jvapyqU}fin^Clt]d]sFwV~(GbOa}`mvmvBxz+tkm6}xDFgrfLkBH<8J%}GzKxEt@NyIWy'LlԒҜ댜ݩsørBdھ \ۼDVopM, 0%G؟3o:kOٹ@3D}B'AL :@$FO eH 4EJ0S& J$|'%y7 l5s SGsC6*~))7j3pR;@cq5F\\LYc6ao]Uib^dfm;_[swluj0{P3xYpn~+GsbI{Iy0)/@ӕ4u@xNEU3=(UֿH5N_U5GYP6^`MѪٛzTIyLN~,-ѿ;ŸƉkAG_ၖRGp)UgLaӜ}bՋXilAp)ӊAܗ.ÜnѢ čaHR|PڌV[kCZs d%dk{Ey"=Fh}HhǏwi`D]վ"J}ҳGʼ*]xČ]dD+>(>!WnzTcrattk8m犠z4ki-(kpiovotyUmau^Pv{ekXzF~H(X"oNontvvzB}+vpr6|xfNm"xl+E]yc+}rQ]zH^vsn` Pj b MRVxySCy ~a1x7vOCV~g,gBiuD3a|SOgK](jAT\[4wSH/{VWhhU\Akv4pGOw\umSD3G}H0AR ;F-FUe P ;M@9W(R .|0,y> l< s'XP$LuD;.}*/7f9iS@Elp4Pa^Nac6as`Xigc6jr;a`w{ryp<}U3y^tn.MviLM~3)3@՟7uExTEZ3A([L8NeZ8G^U9^gS[ҳ@=ǟPofvY$LkǵZ2xx|ry4`zT} z__n}PlИPЍyagkFgT{zClj kdz'JMNZE_bI704cYAˆ0xn\0mFEە[wn꒑6vl?`J׬5 ≯~DN݈L5,!ҡёXޫݑD5һD¬:>,>QVSWcrattk9rߊ4qi2(fkdvtj{~Uua~^O{^sFH(X"iNji|tnBo)gtp6jzyfGm"kl=@]`%oD`z=drsih2Rv X GRVkRCy;{c 0|~7nTDah+\Ehyw}D5mTuzOWL['u@F_[,JrJ)TW[nS\;gCo2xy.m 1ho'5q;'Ic3 ?^KRbMF] =NI%k:AWM\8=\7M\w &m#$cg&7Y=!1TA7T&QYL\1HK~ʣvNwJկȀt}}szid\DVfg}"O, 0%O78=mRD3F}@1>I ;=.FLe V5Q@4Y(X12&y7 l5s"X@"MdB<.i$17S;iE@Ecp2WV_KYb3geaViia6pnpRdtmrz}o+R;jQ ^JbQ@k 5mb3rz!Dc@+kGRgodg>d&S\LJW{lY<_Fb\zssbpxQ7wC_lM~5ɳ-ҩ"ifgjhHx?rIӂ x wŊ of{?Йwf٤4ĔjҠ Ïs|mɨsRf~ptA Ȉ0a~{k,Fbw~1J̶w߸-w⯜,UԞKǧ4m|lXgʹrշ^9 Q*gC:ۑK/M1bS<-U5)g)[I?EM"O=X(K5i1K~75T9]D/zoEJN:oj%Pu"ZZm=nClb>*:>Dƞcrpain1l߄}:skw-=aM]VƑVwcskbM\q8B~>^qUg`oev3qfdydpb!b=jTBXKe^gzwYkiwWDjmIVzKDvxcì {Zt6r΢")R`yvo3fʗC^[g8b`fsPvqsFNLPsmL\ 2o >q3~*{${$+ -2p4%)nF=fJ2gM1[>{4e+l8g0ZQj %y~tw'!k7!fD&dSb]^q"XCʪ}ϋ~Vښ̭wӧ}pb \Dr]M, 0%Gќ)o3k½E׷43=b)>j ;`%Eme6KYGJZE,;O*.1*WKxZ lYsHXR'Tx9D.x@8`Jm]?HM>aNMB?kVZlbY:ifkgkgve;oU<}_h^7B~kDzEt5.ܜ$_͓*uۉ4x>eD4/(Fֽ;-NF,GyM.]yKϨ2?ŕApjK$ibʬJ0u~ff^d{cmcHrd:_(=PYPxlc _~t0@@HvNZ'o>;>໖̨crpain2oւ͌ps23lj[ď_t^nzz\UadB=_nTm bpevs=jxcdp~vcW`"s_=RQ-U6bKjvzEnfwh-T ` UGVoHDy1| hǦ0|8ks;Ho՗!{L\_k|{{E=^В"}iTZ[s4OȀLiw;sYpy~U9IP_sI\NpYuJCy &@un,G|1/Tl?(Ji__gORfQKcV6{6NfS0uo Rp!Ig1|? 0rzf [.7jD5XWT@XWI8[)606WGxX lW sF YJ'OoAF0r!>:[DmTDGi7\m_E}\5iqcTm}jVqqcWlgrd {~b;P?KoghS$R\U2qtpdy8]q`{++e"UM`ʳ^utpm`kdn܉bw tk}ً_vT̍_d"*h14dbvdYa VҔf/j4\ \iWyV}hFx̓tƏӁ`{̏s~ ?1{31'%yR(}"o6wC3l;'{R{XiRTs'FxiI|x)Plf7HW$+eC.mZMq"xjx<[cpቆgȏLJ鐕8te4Y@炞.ɐoE`TldA{.m(n҄wqsE}5սE˖0ʞɲhsrڊo`x[v?}՝ -j{j,7հpuԵ Қ@ͥw-,ǃ_Kؗ9lƬjX~հnxc͡:MizCrڏIpJfpQt%Rt?_rYu4GyNfŸ/w=N6{9ZQS[CXÃi^_yr;m+UZ fh͇I]XbO]̂C!O%w)@,w v>5>L0crpain3{و8z}h2=jk^ˑcx`uh\UaE@L]kSl"dofqx=gvgdl}tcOd"nd=IU%X.fGf{zAijwkz2W \ NJVkKCz1{f0|7oeJvkʡ!€L_SkyzxD>YƝvlSZTq1GIds4xQutJ2MW\qL\In StC>u&>po,Cx1-Ti3&Je@^fOQdNI\H 2t6MbM,k6MjE_)q}7z!/js">^C9]U@^1`(\q :WJĒɷNἅJĖuǍ}ߋiE\DXUwv"M,0%G8\ ;P0F_e&YKT@KZI+[5"6W; xLlK s:!XG%NkBA.o#88Y@mOCFst1XadDjg0ijeRm|jYooogThknix~f<~O5gci+VgqDyG0.˳6B8rşFwاVEص\5C(ў[L7NѴeZ8G\N8^bK[@=Mo`lV$K`W2lyliy7`u`{,|(bW|LZe}r}{duzUoEzm{ {mۋi|xWԒe~b,l03EjwkYh"as׏o-s3hv iobfozSiC|҃u˒؉ T{~g"=,.+'~Q"wr e3r>2e;"{RrVgQOq'CtiCyx'Oi_3}GYy#'gt>y,fZQ^ m|nh<_UbsgƇy{t`4RB|Mɍ5ؿ-ke`RjcAy3lIoąvԈqe{4өeַ0˶ƠhunӒoYp~otC|̥ ׄ/d|}jָ,FʳbvȺ ɞ@ئëw-{,_ݐKК4l{jXɸk٤ucä:޲WPhJ\ܒRVRPpY]%[[?lV_b?LfRTŸ1d>:g;ITE[GEymP_`:s,Waw nUʊKaIcUIʂHk"H%t+:$u5_ TEvXm]<\:T/7QQFra\Th8:>,>RVVcrpain4rߊ4qi2(fkdvtj{~Uua~^O{^sFH(X"iNji|tnBo)gtp6jzyfGm"kl=@]`%oD`z=drsih2Rv X GRVkRCy;{c 0|~7nTDah+\Ehyw}D5mTuzOWL['u@F_[,JrJ)TW[nS\;gCo2xy.m 1ho'5q;'Ic3 ?^KRbMF] =NI%k:AWM\8=\7M\w &m#$cg&7Y=!1TA7T&QYL\1HK~ʣvNwJկȀt}}szid\DVfg}"O, 0%O78=mRD3F}@1>I ;=.FLe V5Q@4Y(X12&y7 l5s"X@"MdB<.i$17S;iE@Eco2WV_KYb3geaViia6pnpRdtmrz}o+R;jQ ^JbQ@k 5mb3rz!Dc@+kGRgodg>d&S\LJW{lY<_Fb\zssbpxQ7wC_lM~5ɳ-ҩ"ifgjhHx?rIӂ x wŊ of{?Йwf٤4ĔjҠ Ïs|mɨsRf~ptA Ȉ0a~{k,Fbw~1J̶w߸-w⯜,UԞKǧ4m|lXgʹrշ^9 Q*gC:ۑK/M1bS<-U5)g)[I?EM"O=X(K5i1K~75T9]D/zoEJN:oj%Pu"ZZm=nClbA?>5>~crdeath1%y9ڋ6i+?/ ʒCC>iLe 9^L:O?E*,"IK+&K7.}vtEac"o)aS8Q}J p]FKe=|kyAi(B}<^{9bWVQxiClhAsURWqTIr@/]59K:pslE~Uew^sSm}ljyfvvy h1}zǍVDVPXMŸS$5Bܻ7rEwTE[5B(ZK7NdY8MlUŽ8`xR[>=ϼLousW!^i{V2~nyN;QD5C2#>$R1ZFÌDC%:݂ }-l,sӑ +!%42G9*s(@yȚ+0|wo u0K2n-5&x%̘%߃%yq;b'r1$! }A":?LF%G+QwSDx5/JԾMhH7اQP wƯCn޳Ln/,vQ̉kc5*į[Ѕ0ϯqEg A`n `r `Ց_9jh,m s*j'ecYwpR_}%RaBbD*VlIw>< " }3uzDkF,`h~^E#d8 V0@JNFAPpC5[PV<~`4QG@BZAMk:KAN{\2XbU(eOE>R>RJcrdeath2ك. .k$7%#G>79kCd?YMzdB;E4@%BR=/M+XR;/w|:t.aGpy\nnqlzwis;s1zc_Aw7QÐA{7MWƄCe4jBbUYkwɅ4D45 Eb` Ao'cE{KW9x, l+s;Y@cb_-PS<;UpX]d8\Xjem sl~{jq8i~`IۀHBJr[woEx5Y(vcԴHNtθIMlաJ`h[Q=ܟco˶o!{ڱo2~yD IE4F2$>,# ]'N1yg<~ɇ=zF&;܀ Ғ""}w ė*$*29;)~s'f wW'2{uΊ wԐ0C.Ɉ*0%}'$|&N1D-ڡ/m*ݔ/,1/)xC{#uQiLw;r6tJeBhF\`f5gZaK[Q[:hW:zoA2^As:w6e6nas6fq`![vo!oI3CodOnOWh1m;lcb;j4_WArAnBYp Ƚ5xv=g@,ug{s|ց3qk`~́qtnKs$jsGgark˛vyȑpgڙ~Շ3s,ݮ3#~ѶaрArǃ^Ybxі0uكIHgۓ"J[ą"ל0%26 k-ϡI3?Y;k>ήD@Jѧd5Xп+P+r=؀Yo+:X==>-=Ǝ crdeath3|),j"4%-H!Q'[?:9j@G~]Pxo= B5?%KGU37O4[S /qv;j*VH{fTwpeqfxz_z>s:vd\Cm9PFANUBf~U6RV7gjDl/]Avl1bP2DfY1?3UoKZ\W?dcwg&T2C}8>huT{qqsA|dz c>X5>-=tѢ=crdeath4|%*!0'0]J%\R+~og"h<<6;;Dzd[Jun8 <0;$K^OS48oV5zgO %n l{ NM*{=JyQEWs^Rh_yrUy:t7te^~pMFho½Ad߽[ӦTd$PΒc@[YbQ{dL]9o\0.hbڡWОѾ KBIA",Kͥy}Ļ nu5VB% <2(AK.V7! Hz;p,N:<-69'NS--fE5'Y>,5J Ag9/>E#R~L)c~Y:I(T7dU-7fM#GimKfgYhl!s1frq$[3R=BJ3czC6AHks(Q'=cU2^:7VF+]x>qH^1EXk}Њ\`0b]5ڐ4Ǔ>v>i1heLl~_er%YZw"RUl\{XhDS∗g1Zi1]_ŷkW|j˺oWaO^WfjAddEc `{$J|TYph\$Ɛ1ʃ&Ĝ 4ǖ%m1Gő/Bt`?l@hNKAHfZǣ0Nۏ%GӜ>jZFW88nKM`?~INTV;@ǡ9mTOqTWP[]$h+`#-SV0Pn2>nq:SYB*Gq6:mCJ/BBb52y-~9kaH%k*f6__T?V )N|$Sxg\V?e/[ AokB|^>ͅv=J:-0crdeath5q$|'"G/g'1"@'Y+Gg#18126 @~>ZDz}n38/8t,H.HOh47EV3\hJ r|%sxc};|*O,v@uF<[nUB]`hUy6|4z>WtnB4r2HFfC'OK6o2cBN%M`y$?X^;a#XSOm5PUnMZ\aJUgnb^UZq3@k}<KSp_NjiBhaI{gm m\p!D/k*Kh%mTbYi\y Sq$cr`|V!s*h} bhqku*P0r(x% Hvc~4C"53OR__&{yي(sZwǃŸ:0wmbn^] O>ċ'ÒjW>x0t=q 2B6H-=I3B?AZ _#RC+ 5z#1 9ʐRc^"N8}k\]]·i~ts{jd’xMxnp.eT` mz$]Yg4kN@fu2]ljo)|6EHsvhtg z}~7<|;3m<5>I>HI5U/}Br7s@p>^203<,PhHg!y'~0g)- `-,GR="Z ) +*x:'bU{i"dM&z ww2D9-M,#(:{.4s(, _#'<#s!tX%sU ,I,:/#I^<&(; QvHSh9%d|HoP(pQ3&OS7U!L"$^KRif^e Dnl#G.i_j AK4&T,]zB'Eu8jDOQF|kP:-C;l.,'h3m:V!nl&m2`;U:^ 'Q"RipQ`Re){$s U;|"@dHvpXQr@r;eq7pu\7S_,J9DψkH|cW^Plgquyڧ>3>vHN>M&death101}kڌ~yCpia|/p&Q]Pm}]rYvT^kics],o{Cd]jxBc|S_&3"LSMLq}TtB`=Tj}Eaqf3X~+(xzy{2Ts'ZsHY *b Cx-lORyeB`s Wlj9j1eq9SG‹N~Ag,I:ipnFX/fGLB\ a"7QZq9fI ~nAhf]st2& SYv ~!hv\7;$=!~M}]|JxKs֒΢ꑞ۬ sʲnȂDղ3n6߲'c27ìfQ+" I6%9 7,I]Tx_d1OhD>p* a?9u+E7e]cK]q'2g/A,GWH1z^l]sG2Y9:K\`M-pFJ;Z/Hn=XF~f_>eSgrQaibUuRdj<^d{;?Z[hr{ wsr:UW}wXf3kcQ~h \0”aE\ku~1²i)gPJvOO@jT^I|nqV=fGj /k/Y Y{hC`Y[xR[ PEFkށ4iܖ3Q^siiD^dR]xAj8whv2jey4i^kOkhpOh g *L|y@^bh_gҚ^ijS}kj#jiLqX-rSf{Q;^ҙiepKkn^ڃpߋiz1zxP|t΃vax|}y|&y Z-">-Y `A$@X Z={Xij/o) _ U_a`i5 L_0O&BOʍyf<]b-EN'zZ*}[,?R5Y4 i?KA'>0ΏS3^5z,Ę7ЂS\]6_]$o\QOWd-2^Hʍ9G^L<:ʑ^CA`1:;+؉vJ\qOM {>JCx2g9m&fnd&Har:n RI>TN+Ja(l~S%Yv^YJIrlCN?R3x,aGX9\BCc:;V W~|{N5Uh)R@k ,>->H$H>death102'pĈ2~<.rp% .,  u w,A-vp6Bw/nc746K-,5K{;}9`o)asa8\{7BWa\+>I$wI){WC`oh?a_s(dl<G@Vh{HC@|0@G{;3U Y#K%:Imay9 bY+JQ}fkpW$wB`{f-whAgay)2yAW\kGcssihs{ t}'vU} T S| Rhe ; /{Gf>)OZΨTv̯ܱ>{syuuuČ޸kvcpt9بXgߨPb׾A`ȹBWKMJLo$r h_Lvxl΀ c`,U'Y%2X%5aSq(ucB G^DkD"CpDfwF?{nH]SDMy`7f~mrpDryagohjOpiobQdc5cbp|b~tkccdsFSkAGxixhHUw6gZi|/MRnKM|DhOn}554@$J! tvtW#lg6u92qJ4$nʇkˁ/oo,{ ghru s}! # ./:4!mg pUq\p%q*`"\EWȄV#o)juȂē3~J1zuam¢tЙ)-bӡ)t:-1!3<:8*q.Ƒ$B=23g0Ͳ&ɜN8Ԫ!W?Oʮ+M2u5jLf~< QEF )C:Tp|WrV=@>KuDm}g2>%>#L:death103h+u;,hp+$ x|jvm{1vsC0kwn:sxD#jU8b\e9w~<9{y=0y%%W<^K~pooBqd*yh6:joQ9[x**]MH`GgXT>k[R+h,Yn_^IsL~jJm4Eqn2pbAuLqm9KpMV(^Pd#E>^mkn_<TF'McS+ZEOe)[0X45RVKeDf+U*MkJ)Yc]\ewhqXd |m }sk}'J xC E _p f!k :qx%PK83%%Ag`s˛Cy؜|snhl㕕~nvwi}}oiB_UoGk=-验=}||du^zUYX?,QXRGTW2LUb'+f*NR1&Z5 eV;;E;JteM[eAcQ;er^xdQ4ofjpXH[^≠jX52x}3s:xF|{Y<`9yZLIaya|x[ij}eusHn5fr}ra3Cinxn&hu moY'j~ YiW,Yx06~17xC&vxA| %p o inu h_Y`)`mi8j}:7ftAt~<f d%g!s ^hhykt}z"x #-5v5#bzh f|_gSg"g/WT8P~J.y -uA*qr2rp't*y.t1w,.sk U^BVmV7_EcT JZ]]mKIQ `Rlg%c(X$lk[7^ am 7tloj }/c&Y>*FNRTPXBTW,e^d\ l "?e{Ncx*Z]4Mp zvn<ꟺEڿH2vr瓃n9tY^|osy[Ayl,qZHlmiWNett|mgzs9vr*9̗%xy˟nfI7UTtqeD`ilz{.-kfy!,_4v(!%11q&?30|/g.~+aO8w!Yw4M*H o4|yNsf| ]P6$cQy6@%:2z7t#60?@ L%Gy'!7pP29xE# fz1SY(o}:#qpL9lF9,}GQm>1dz`lJUMu0Q>XHEq3384v|cobbYp0UH>nyZ|NLC9_wE{:lw`P*nV_JFEft'Y]N]>JiTFrOfQC[ET2|Kn2 D*>|E >+>d:*Vdeath104p{(|z )kqlw-n%VM `nXva6u^72jclze?6a%3KMJQK#SM!pUPqX s;%h;;wlD7n,%vOfV__bO:klL*h:Wc%\UVpA>n(5Sqa@b,UPfZp` GGg%GN6P^T#R7UmylR<%O>4@qDLf>Ee5T(X@)XQCeU_Wb OkD>w[^Y%drkq\_{e{i!d&y'&y">4~7Dh(NEs)x yo$dq-#T$=%0,-Cf}؊Ok̊YLb۟yaklsoݪ쩷蝡j魯ψh߉lycߕo^qKvF/껒 4{juUNnY[U,PPR G_@`j+hg&HU_,jZ.fE6x<~:489XhUapDqNKTewY{fT5kkhvXKZ^3gCvU7 6vB{L~YDbV4K&[zhsvqerikw#`jfUmaF+w_F%] 1T'MlPgB]?Q,^Zh8ik8ccCya<p~ow|so~bmznXvj Ug h{!}-3zy<#dck!hdfkcXomm" km-^tXuY|#`A#il/j`mfNt+{wC'wzr*zn#||'y'}+,$~zjvU@|n9v Zej\akqlbW`n[wq$s(_"vxr:jt}9qh!dw"-p!h?>>FTg]\PQT,r qdx/9ZZ mx8VP;Kgpjユq] 5&\b֞VڒYКyk.pRJzd\pX(frb^[pZZdrrtle[vvn.gt֕.tݚ r˜jМƓo`a>JQrb>YIemuor%9a\tDLrMcl)0"/1::(Z1Iu)9nQ@gi#`]#BMP Nk>Tw#6SUAi3@:"4r~jiMhjGbz o^rmOs~D|kahOc9;l\iKi=ksc[*NBJV7zp&\bQj+!>s*>c#¨ɲdeath105uk$q*shli+g# HOM uI[zN9\46u_l<~f8/s1>k@d9i >,K,zK[D}H9h7#wv@ ixE:rz0%~Ht^Xjg _Z5klW*k/dM#h7P{5 ?|60D~R5J|)6@RJ~T7UV$S234RF#FDKjgyR )Y#6%f>=\JC6>]]GOT[:6\g]cO_=3deh3^hZYO |Vv\Wh 'iAjCj ErDY NlEcezp_Ub%mVo=om0q -vC~ӎfoO`φ]r,Ww͞^j×]e`˝:亁Ŕl– כohmmV^ګP`THSCӇ,ӈt o?zgvRmQX^U/GdWVJe;i)JuC/=h%TH6[K)eBIz9Xy8ViCDDFDtIibL__8Qm~m$xi_8mlvpbSmAyuJoa:v:{JzS|vgJr;c(4Z's zg|stuxw%oxeTf4pngM\3Cj{3kn iyNN&v[^d(f6t8gpW>=:@ŒEdeath106~{"Z&v +0J!)Y)}Oi >31.0 AA\D}|n-1/0$DAGI|32OV1ciEis_҅{\Mx#OIs>]xyJXeokrmk5x{6{7Vn3 A;|<>@D7m9j1WDIQ!E`yXCnYL2Oa.VdWq c_.H[ojxZ^mcK`0y\E|Ӌ[djd.Qm'^_RrXbdkmv/nm5n[_l _dofns H.yZHTwoui>|١rפv̸Yǎ%ߺ귫odbeo1@%TP\)#ͧϦ)vsfHX_/QXTGr*t!o=MT0YZ%BLshHlHbO_BTnmY~Iyhw{Fo[onuቂrputsȞspz񀞌?yS#օaZބ}ŸN3›PJSYdh) uo#x߁.41.v0-M&6T&0(T.zHq7uDd:_1}j+00'\vW-x|y%x9g8'T$?$PRm"! (':$jUtbo""yxt+R5%] 4 Kv'Cg/t!#@0hXV'ZE>#PS4&W?'fNM(SDG+PI7-[@J:D8FI5g|[?`.S:~ W=5fL6:[c8fY9YLnh*V0YpR=2cxG8ev=ws"?ilJɮwK֤ Ғ9SKzS[V.NDoEVp>a[ozcVg!&\ N`7VjhqFpeZp">i/(L>W'ي }}k8b'MASl0fPRinc;q@+CdZ!BwvN"tN/h&#͇0ʈ wz+vƌ?0>_`6|y@FJ&BJG&P1LΉ*C̚.Vq1|F.SA.^1C+UH9Š6LZVlgYyXX`xMaz$i*g}#.[aJ0[5ILq1^>Z?7Ձdeath201 )ow!SɔTԎbx^_ofHviwa=J~GHiT`jzxB=`ydxE[zuLNn ov1q\OzORwjwDz kSeOjaBkH-0~h @d~M'~Ql|41f{>KOi1au9cNh?kd=/pjkZd\S8HmV ] c^V]H`S^VZhRZoY9^Cx$kfUx[WXBgVlN_^zj\tknMsdall;OD p\Dq]vs  ,0 -Oj6ls]VɊ=1SoXӁJ%6Mbhu:Vxkt~3@pDix-K(\F4~;|jy)_x_edKǍ[΃Rwq?}n3`l= t`9-؊Wx_HЍcVu!'=n~\tҍx{"&F hYq9aIj·ay^ VʗZ `y6~͍G )r&@cp&4)77>,@,FO@O3_ Y-YN-QV{#yS]Qb7>pb .;Onsl(}f<3thk(bOБҜ% ĐАdžňă8kY |{;r#v?mO'xEu#'~_}PvhXx#AmYFnOoXYtZHf7b+|`b8}Q?yuTz\uDGnRsť%Ux&h|6DKMM*[0BłL{9lڱCSحXԻLDƜ]WMάFzKx,9ăfo;н:h =¦ʵ9p#Cd7sVk{`[3tdwj}pg&fT՗Wec8jEGʠaDہ=bQfJ:lVz#L=bȔVms2BȖ`AZ;_T9N!v;A *>B&Z7]nfEg0_1K3\A,Wu0OCsV%RmZKrb~2>0>!>59Ցdeath202-63&R s{HFFO9/wMpJ-N=C&.zLz@02zX4l*ud8v9a[`+^QDoQHuZj_lkh^ahD%ZwlLV}S?]A%|S{g2W'x-s_m&dr|5"tt)ougKynn1lyr4dPh_tmKqf_eNs+WsLYkScRlLqX~[ilkiJXC[E[_oYesVl\:q ht#iWkKe8o3v,h@KzHS=MëMUҼT;ȧ?Dݛےge s g SL.ܱ %ڮVћ87j7ɵ9/1{.C*79 'f7(8+AI1&=/4)6y)m&r -.\~RZ#=]1'^EUUD^RRJGn\Yne:re ~dede2x[.ffcIAoP~PMtD):F͓9wГDxڣN:ְN/׹:(ϝQ:/TȱRüE0QfQ6\|Wh2KŞ?9s]@jd|?,f2dG#L49F,Md_NR5R^zzU(Hd25]o5_sOX]{RyX5e[ekqzg[r>@x>>= €death2038O=["FR 4RBWO@2]63rD.l90}RN=QN SX.X&~mc64O\$QZLMRMP7tXLxKI9XL6l_J,zd\Jb)z_{*m=TTSMm0Mz bxxg7v:(nZ0TjDw|y+K`?PK]QIR{E;u{JhwaVd3] wDLlSrkv,vf#a sL?geuh99nub\<^Y@}9x)pklH^Pxma&Za/XEsvyxYOtF/vbMrzSy};'y`~Dz:3+egP7\EaQNlS;_EKt^V;UYP[aF's-ʍ l9Ό +ON7@ g>sXT`ÊNv pU6 g>t A/ h\*aJ1cS g[|k w6.+)l'|6%|FnS}> (q QcavY:+_$3M0=~+@9W 4XAA>%j11x:(9G~R/2/P5[Db$JB HA4C;[?>j1G|3CyZ)Iz@[?>Y:g2:Yw=ZX7e{9hO3iFX.bJ)382I ,jE|O|PUQM)M2z)y }{|GECli8q#UQ/S`!~Faa1pQā{!R[V1Y3poMki @W>[>)|=(Vq?KRTAaZjDnP\>`Gw?NE`>WBtEA[APuSYrL8FzMUtBKIyBM\DKQDWRNM`M.HaHDNlwVeJeXPk8T{M,OuBV@goEwKOSwRkq-" k"(Z!;֗#_ϝ3(!G'l083{)a$$[3*ޒK*VJ"yW* Q$G$Q6/~Y'Nbad+.o lee s'_>A>VW.iZPdeath204^eaggm^YhaYoNbgLknXgStiLqmqp,ap.nnqlKqdT}VgaftWit] oM\mRa{IvIAtPlY5wAJl/_2|v|ef5aMq@ss`tRsa|vkuKw}YmW#}`lj}Gz]i`*ZBiu/YNgdmT=Q4ɨDZ zbTæ=ƠmĘSxȜT2ң ɡIae1¡4ŝ>prC34m45bj9M;d<)Y\5C{iK6I0}Z"O;@MLwpB}^sk:"-<ņ~Ăŗřys:qK;z4V{3kl+gvfZqblYdNk,K\YOvuK`sAVRq$Gn11s8 s4j0_Yr>T#jX)Be8Y+uQ/f@noc8+Xy/^'Se:'ߊ"l%IӐep epOmze\Vx]}͊~+ {:}%L~Bxvwgglltt{utՇHxwԐÓ\ĠI"Ţ-Ί4Ė|LJJQoυ5S`ȓ$ UEs^\i>m`m>Z>pl¸@Fydeath205bYfYk_!bLlR`pAphAyoM hHwYLt^!u_(V a*s^Mu\AtT`GhMEuImuP ZGDoYUI]yK1v=s](hAńEd%[-|i{]T-dF{B]yIxB{Dp^Nug{6x:gX{ boO^6x>e_v*W 3ki%P;mIk`=:N3|}tXkd@)'Û0|^ {f~~Ƙ{z|{SF)'{Gǎ.o%2Eh7ii!W:_%,W[Q|i175j0L5i3i5m;9":%O>!V@3$@&)G7FC3J3O9j&Q0,d1&f*,\,)*y)9i@-*5{IysVNwTLsT=qF\xG\s?krKyJnNM^X^Q_Aa^_Uh[lHbHmkOD|Au>Q 7OH/ EN1^CC* CRm;u_!["c "B %)CY`9Z "J+ KdkcmVkzycyaXsvucx|z+{x;u$LzvF{ew]hgΈrk{vs}pӆJuq|Ď~ps|ugljrHtNœ$u}4Ì|sBMx5G\{Nʃ({ XBz\R->{>q=Љn¨:}death206ce|ebImff$_XRiX4YkJ|hdLnU gTu\I>tb]$tb9L|Y `_*qa1Ms^+@qW4]}HkIM6qNjhsU V:HB-\Z@HX!K:xAEc6lVUj| g$xePu_Tb=8PQBU {B4wAu: VS|p9wl|4gx1ZyPYV|f87duL*b:km*Z?lBbS1\p)}o }m/sCK]. _Z$.qf$YDR-K\"^85Cf4MCo4vB`@%$)[R$W+MK "CAy(;t>60: #׉$8PmIqz:7>Fm.|(l?}Re%RKY#A}̅qdnmxۆ /fHN$t/}cspNȀqnƂZ?.f\cP&c=`V](egK9vSRP(]e7ON7ZYFEBU^3"_=;$>-"3#R+:#Ri90&57-S't> J Be(QG675L_6}.Ib*|m0Eq?PoYNrV>qX]CkMKqJ5[nGzrRxO:t@lxb-sgLwfZClVyO`e_`[P{cim _b\kdkS aVhGydML_O}\X[_\@Pid3Oqb#o`?m\zjhh_lb{Rghil&clĎkPRDhTN`J9TdRbhNg ^KM`FKmXIKgbECfdS bi<,cbQe_Dz`g?~af2Y]i=>ZWeS&d30#?`bwU&#G&~ruRwyz3QDJmz6xt >uQ>-]5xNdeath301Lgy`pTjgZ~ e.A;32~|[~BUsgdv_>~Uo\hw6i}>c.LfJH@i{6s=qedqE`je+V`/bCb ;6wFGce0J/ ,y {}iz1X l0VsjX0b4S40`o)9KY)b24s>LiiMir>ZzgSbsYEkd8kbhgyc9R4_dn;WyrLQA),f-8vCdG93LH9+OMDu3Z_0XdYr,H6e{l D fo<)jRsYj:W]p7nޖ9qT6x$l7r2>J>"OEoNdeath302Nx^;ZvmO ^,;48|3|_}C]xmiDAnVqqaj9j>a*MmfoAG}E}fs7W)aOolf6xG"K)t>Qm?XrHpQXzmRNsIm{3ztj|e|8Vi>Fk~xby~KrwyrzwQY}+eq[on%VEskkm:+lhUfd=kDia;kZ]XMoQ`g[mSwR^3an9WX>c-<&(?-Hx2C}DDoEI M,A.I"=>:3:H;'9S5 3NLD+27PQ=*1 ;{74qQ?nFFP >7B%7&F5H?5L6_T3DC 0OƃIKW˵HN̬\րQs͈YYAD \n_tunkq"~$+9. èe!h0 Ͼ"?-'H-w8- A,x^-G8%# }xomnw KX jm{ 5krDV\\Sr' j-.U:]-ZT@b_FE[PSPzOjOBFp1EwH'@D?SQI9iu")XSWen3,FIY;=Tb4Ox%BVtPa| OIu=cxh,F>>O Odeath303b}yuwkwqsrz }q.bm\sSkRsugfnyhh{yhcTZiyZ\~{ko~iC}j)_[ v[Jih _gx]EF)w>o{NE8";)0^1e8|jGzyj=s_rcI}`yQ+V|0F~ate]bf`hccAn[k_\%kWXhyT8@vTdXR=}[NcL{HiK{jMchBAL=m,Wo0cTDLCPMWLfLeNnE)mE7_>Ua@]XHa>n >_v }?51?i@n#bp-1'? Stx֩_ݰC(ӡb߬28P/Kc? %%?3:82hiqkkW~zXmy}dkp댝)}Bh6GntX}z~po'=/u}o󂓁 vl~|dꔃ&`錋?}{霈 q[yvxkty$t=}pjo|o kXm=`m0lc2_v_ YA>,LQ^B5B_@^QDwdLTKjE7ZDCJPoXEIClhU?J6@[V8JnKa`~A=J{dp`d[`8^kT@4gOr6)1IOT/ӛkhycxa}LAOJP(V3W%Z[TLPYMAſU4٧GAߦN9̗MhלR͞F]W#ycMMsUPcP>fY:h^}[s~"u$9vo|~wvv jCi~msiu^Sd$aDe=k0^ktxlc\jod`pladdp {nFKvn@Mlu?LvLKm8HUoCSw%EUS^h*GWbXQcc;IYu9`VQ9N_{TA[ZmMZeXCblu``>lpl N{j!As\Dijc^l.k>w>N 1death304bye~ocwro1py3 |yu}|upmUinqik]rxh|p]Wineml@sp={k!aG}v!vtx]fB=2e~B_r@7+j9"Q9[@|srAsjw9reg omo~Sk/M#Au^mti;uZ6Z_dcj~q ^*wXQgyED]mf}lNLybCYYyXs^xnHYdHyI"IKW0u#Y| RwOv\~|\^ `T*V:J@Oa~ HN[0|L T*zQIqVn ]V7MKHK L_ ID EOمNQ֔\Ћbc څmyT|\toXhMBfYx m] Wx_IKL,R.g--a$~)}9q.j&}^rq":Kw#H 8 A^+G&"%/"#xm w4kL4F B7 ]<'e'>h.]*r(X'U06xx67 0?~*Kw0ai,\{0v0HNyvwU> 'cy 0x"r>tj/G`@;#%v@?36*giqinyx|jzvfsmd})}Jie|moޚw玂 2nyy{$}=|5md~hkrqur}k| Qd>}} |mWzo}a{p#n=d-`e` q{Pt~Lmu{9sxpo}Fh0Mo/U3O3{3X|.Fco+JqNc{Qw]z[U78KAmcVMq9GP`Y3w)JZ|2Wf[dl3R{xjb!yZi B_X]o~L7XUJ3D(hn1y~`rjaovͩa>dŨ]²g,ϣn<îp-ȟrsc\QĖm̤a>͠k5Z>c:Ղ\gۃdlىU`l-p_G^NÖ`c͞d?rėmfbq -|Ec|jt>|x {2dAt=v8w|js`Tw~rm{d_wI~e~GwzHHsCPxO'T~Xl(sNk~Me]g?gz]QglDnx=^ZLS`Aco^VOkf/vnr"bcjv^v\j9aYkTW@JhrLtV 1L2GOW@P]7] E64R l? wH WB6!n:*MJ:=tYu9ypB?it,cw,7s>>&>4>Xdeath305I$[T"SO-T%A\-'SK2MB:IKFBpZ?T;\6WYY?]0_6_:(aa2fIWM2PM_:S1L{{`rS{N +(rP[zNgwNuf+rjm,K?8L[oj?nk?pO]3d`Om]ghEE_-fI,bzGVig xD)uO$nUvP`ln 7(q^o_^wl |`.qnK~O3&[Agy %xr '|5/%5'$I`uY{ ~{!ji 7%0>z~ P} g ` @P&Q^/&^Ad=IZS K8SD@FO+ec*Rl^Z.iMQBQD]^_auU1j\s(*t&Cp74k>!n]d0r?!BnH(G ^,J Q] <,K%aJW:w%q%t96;kL<4FB8X>Ld5If,_9ixN}z fspk"<>uGxs ]j?Rh},w?o Nh|m}|Y@(z Z(q3"n9qDxPg-j3q. sS?86/{;k'LBx[:m:~G~BџA֠QSX,^UɞQ BG~JjE7M?CfA;=dO/X'Q(QS?XLV=c8g9jN2MOQT K]IsP^OQCCӎ@ԅ:zC.F$=3>:D<搰>$7 p;jN2Zx^kApAg{p*^׀-Gs(}/>oA6|?3qLG-mBn/PmMn.^m@6U,fTvTGU-{E%t`v1OqAk7as7?ggoK:kVaOsHVTZ5HO@TMTHVQU8OpcJIb^\Rbgnujf9q8GkI=dCD[d\@rl6XejisYA\itl7S]Bc[fl09`0?z.@33J7? 4B$4CoA;'9@<-u/>zq;Q~0Dly2#yBP4"cOS3=PU{HYBP;F.Cy@VGS9'e5IT1K#2EGS JL Y7YD845"Nm>wJ6$cwQ=Gs=.G O:1=1{]j8zup<8;$cn]q{BRj>0҉>a=mMDdeath306JDqV|y2knQ݁Q{ڀ`fӏ^G҂V׍f=܁9ٍ.ւՐ#z{`R|~ff~8ehfebwccc[ʊ#|ʄaOwgRzqbքu=o;pigR]qoH`'@hBGWz4ezu@6pl}74|HP:3cU-[R)W}NJ;NJC{FN'S@>i= bBdeath307JBqV7TSEUDC_E(Y|2Qt;O{JtnaX[SbGa~cWbASeGeR(k-qg_v2XvjOVAL~`~$S~n 8(vqbolnxq8rox9UV8UouWnpXtOgEdjomhs`Ej;fR9b}P{t _)yX,zUzYw K(uhsj ky%G{]oWRm:zWdKbXxe9woQwHtQ$oY{amЂ{e~B4qȎvepoStmr"lNM7e/HmyV(JvXd8Ui<]Wb^+k\,^1UZeW^tY9Y[CWdTDKaAdmMc6H;XK䋜2{`с`{ӓfCǟaM̑Z̞i+ғ<˟%̓ǠÆzȉaYȊяjCѐ9xpCy:p~ztsh\đ`O{XṘqdϓw)tȍ qrtnviXd0XtAesTV}`}}Eoosn&qiws:|}0SGs+vgCb{eUqxKblseZcuzOSmbejn>R^;\z<]>IJDZ B_ F`8LRB\D>~4\kxBw8d71~GP;.cW$`B+]x~QOs;R=C}I|O SB4D?kH10AK295H ODR1.NA7j6@lI d=&gDei}t=zq^%D?M7\CMvhrDiyP9=>j}`p%>Ÿ>z>0=ԝ)0wdeath308CO[OJSJbPRAYc'O2H:B@pVOWtQSXj[u[~(\2bS2K[Sl+|4UpCV d(ycymuydUplYD8Dofnsw-GXrd\mYފfE[dfB]b?f w)HHk4U|Hƀi }(zX6uYu ]Xwk~oIcn, LNtmcO/S"#-) Y +a%= 6{"F&i)4M0&> P g]@ `QoChfup$_|U3XXtRMloB?T8JP#>J*PLN&G,DnvJqxTڡBޏJMNK,Rk-Gi/Cy-c~Žk*sgz +Q.c7]&c!'$I"l-lUkWo;yG)C;c4zEsAd0_"'d'Z nY}U|fxp=hN1%C|K}t\foy?m<(&M q2KP)e!0D~uY^{ rhty2Q{>X}Q @K tzs/9Ee^ZSbdS}Z+b,R1FjIW JvP[ROmMQ=S\8oiGnDADFC_>vw@q%%SzI|h'FFEJj4rxBd?odNu%=w7l%Ccڇt:g|_qFDžS0F@S`EėO€3nbIbZd狼pm5qGn+eDUܒVri|TjgU\ijS\e[䊤%z`%z")mJ-)$)o8}'02^P|$}zy2%l(F:.Q*FcHBMp3H@9>dF8~@9O/Re*H{=@ (8}PHj]Df*s0t8tOle6F5x[Jf==nVC*k=brDKA~&Y6=B{rim{uq9;xSviaehpk1e`?>]?b>;?>;?>_?> ~?>~?>]?b>`?>;?>]?b>~?>~?>_?>;?>;?>]?(=~?=]?=~?>]?>~?Z> ]?Z>~?(=]?(=]?;~?;_?> A?> ;?> A??]?? ~?? ~?>A?>;?> ;?>_?>;?> ;?> _?>~??]??A??;?> A?> _?> ;?>]?b>;?>;?b>~?>~?b>]?b>v?? v??w??v? ? ~?>]?b>~?b>~?=]?(=~?(=~??_?>~?>w??v? ?v? ? ;>*>>;>*>>*>>6F>f>3;^>/F>f>2*>>9*>>>>>f>>>>>>>#>>$f>?>?> ?b> ?>>>>>f>>R>7>V>6>*>3>>>>>>>>:*>>*>>;>X=>;v? ? w??!v??"w??%v? ?%v??"w??&v? ?&v??"w??'v? ?'v??"w??!*>;%=;& <x=(6><) <x=*=; >;!>; ><*><+V>>'>>!>>+6>>,>;&>;'><(><,>=->=1> >5;=)J><(~>=-;^>/~>=.J><*><+><*>=.>=0 6>>,>>+Z>>1>>0Z>>5>>4b>>8>>7f>?>?;^>/~>=-F>f>2;^>/F>f>3~>=.> >4>=.>*>3>R>7>=0>=.> >4>=-> >5>*>2>R>8>V>9>f>>>>f>>R>8;>*>>X=>$;>;>>:>>>>;b> ?> ?>?:b>?#;>*>>*>>b>?#>?:>?;j>?$ >~?=>~?>>u?<>u??>o?J>o?M>_?Lj>_?I>U?S>~?>j>u?@>u??j>o?G>o?Mj>_?Ij>~?Aj>u?@>~?>>~?A>~?B>u?@>u?C>o?G>o?O>u?E>u?C>~?D>~?=>u?<>o?H>u?C>~?B>~?D>u?Cv? ?Aw??>v??=w??Bv? ?Dw??Bv??== ?G; ?H<?F=?I>o?H>o?J>_?F>_?K>U?T>U?S>_?K>o?J>_?L>U?S>~?G>~?O>u?N>u?P>j?R>u?Q>~?H>u?Q>u?P>~?O>j?N>u?R>u?Q>o?O>u?C>o?H<?T=?S=?I<?F>o?J>o?H>u?<>~?H>~?G>u?N>u?Q ">?U.>>V>>W">>Y=>[=>\>?Z=?]">?UZ>?X.>>V">>Yv? ?Yw??Xv??]w??\>>W=>[>?Z">?U+?)?^&?1?_-?7?`8?7?c8?)?b8?>m+?>l?>o?)?j&?1?_-?7?`&?1?_(???a?1?i???h?)?j?7?k ?7?g>)?b>7?c>7?d>)?e>>p>>m ?)?f>)?e>7?d ?7?g?)?j ?>n>)?ev? ?lw??mv??nw??o.?D?a?P?k/?P?`?`?g3?`?c'?f?d?P?k.?D?a ?D?h&?1?_?)?j?1?i?)?j?>o ?>n ?>n>>p>)?ew??mv? ?pv??n+?)?s-?7?q&?1?r?)?{?>+?>8?>8?)?w8?7?v-?7?q-?7?q(???t&?1?r?1?|?)?{???}?7?~>7?v>)?w>7?u>)?x ?)?y ?>?)?{?> ?7?z>7?u ?)?y?)?{?7?~???}?1?|(???tv??w??v? ?w???P?~.?D?t/?P?q?`?z ?D?}.?D?t?P?~>> ?>>)?x>)?w>>3?`?v'?f?u?`?z/?P?qv??v? ?w??>>>>>>>>>>?>?> ?> ?>?>?>?>>>>>?>>r>?r> ?> ?>?>>>>>>r> ?> ?>?r>?>?>?r>>>>r>>>>>?>?r>?>2?>8?>8?>)?>?>?>"?>8?>)?>8?>-?r>?>8?>"?>2?>8?>v? ?w??v??w???>-?r>?r>w??v??v? ?v??8?>2?>)?>-?r>v??v? ?w?? ;~?X=~?X=P?=w?=P?>~?>P?:>~?:>P?b>P?;~?X=P?;P?w??v? ?v??v? ?w??v? ?v??v? ?v??v? ?b>P?:>~?b>~?v??w??v? ?v??w??v? ?w??v? ?v? ?v??w??v??w??G?*>C?Z>\?J>[?H=G?=/?=/?">C?Z>>?>g? ?? ?h????h?)?}?)?k?0?~?0?i?8?~?:?s?>??M?s?C?Z>(?N>/?">G?*>\?J>W?Z>v? ?w??v??w??v??w??v??w??G?=P?<[?H=G?*>/?=8?<C?;P?<G?=C?;8?</?=P?<C?;G?=[?H=>?i?M?s?:?s?7?i?\?J>G?*>[?H=G?*>/?">/?=:?s?0?i?7?i?/?">(?N>C?Z>C?Z>W?Z>\?J>v??w??v? ?w??v??v? ?w??v? ?w??v??>S?>S?>9?>9?>S?v>9?n>S?>S?>9?>"?>S?>S?>9?>9?w??v??v? ?v??>"?>9?>9?>!?>9?>9?>S?>S?>9?>9?>S?>9?>S?>S?>9?>"?>S?n>S?v>9?>9?v? ?v??w??v??>"?>9?v>9?>!?>9?>9?>S?>S?>9?>9?>S?>9?>S?>S?v>9?n>S?>S?w??v? ?v??v? ?>9?>"?>9?>S?v>9?>"?>9?>S?>!?>9?>9? >&?=$?>?>?6>&?6>,? >,?=,?=$?2>?6>&?>?>?2>?Z>$?6>&?v? ?w??v??v? ?w??v??v? ?6>,?6>&?b>,?6>O? >O? >,?b>,?6>&?Z>$?;,?8=,?8=O?=,?=O? >O?;,?8=O?;O?b>,?b>O?6>O? >O?=,? >,?v? ?v??w??v??w???e??:??e?>:?>e?>e??:??:??e?w??v? ?v??v? ?v??v? ?v??v? ?v??w??>e?>:?>:?>:?>e?w??w??v??v??w??v? ?:?Q??????Q?y?Q?\?y?~?V?a?~?:?????:?Q?:?V???Q?\?y?W?~?~?Q?y?Q?y?????\??\? ?y??~??~??~?Q?y??:??\? ????v? ?v??w??v??v? ?v??w??v?? >?=$? >&?=,? >,? >O?6>,?6>O?b>,?b>O?>? >&?>? 6>&? 2>? Z>$? 2>? v? ?w?? v?? w??>?>? 2>? 2>? v? ?w??v??w??v??  >&? >,?6>,?6>&? 6>&? 6>,?b>,?Z>$? 8=O?8=,?;,?;O?=O? >O?=,?8=O?8=O?=,?8=,?v? ?w??v??w??v? ?w??v???:??e??e?>:??e??:??:?w??v??v? ?v???e?>e?>:?>e?>:?!>:?v? ? w??v??w??!v??w??>:?>e?>e?v? ?w??v??w??>4?">E?#>4?$>!?(>E?%>4?$>E?#>S?)>4?&>E?'>4?">"?(w??)v??*v? ?+>E?%>S?)n>S?+v>E?'z>4?&>4?$>S?)>E?#>S?*z>4?&>"?(>4?$>E?#>4?">E?'>S?*>E?'>S?+>S?*>6>,>6>->f>.'?6>1'?>:>>;>>8>6>-w??-v??/v? ?0v??.>f>0>6>/>6>1>>9>>:>h=7v??2v? ?3w??4v? ?6>h=5>;2>h=6>>8>>;'?h=7'?;3>;2>h=4>;3>h=7>>9v??/w??-v? ?9v??8w??4v? ?6>>;'?>:'?h=7>f>.'?f>0'?6>1>E?=>4?>>4?<>E??>S?E>S?D>E?@>4?A>4?>>E?=>S?D>S?C>4?<>4?>>!?Bv??Cw??Dv? ?En>S?C>S?E>E??v>E?@>4?<>"?Bz>4?A>E??>4?A>"?B>4?>>E??z>4?Av>E?@>6>H>f>F>6>G>>R>>U'?>T'?6>K>f>Fv??Iv? ?Jw??Gv??Sv? ?Rw??Lv??Ov? ?N>6>J>f>I>6>K>>Sw??Lv??Mv? ?N>h=P>h=O>;N'?;M'?h=Q>>U>>R>h=O>;M>h=L>h=Q>>S>>T>6>Kw??Gv? ?Fv??I'?h=Q'?>T>>U'?6>K'?f>I>f>F2?>X8?>V8?>W"?>]?>[?>Z)?>Y8?>V-?r>\8?>V)?>Y?>Z?r>_"?>]8?>^2?>[8?>`)?>Z-?r>_v? ?Vw??\v??_w??`v??^w??Ww??Wv??^v? ?]X=P?bX=~?c;~?a;P?dv? ?ev??aw??fv??j=w?gX=P?b=P?h>~?jX=~?cX=P?b=w?gv? ?hw??bv??i>~?j=P?h>P?k:>~?e:>~?e:>P?lb>P?db>~?av? ?lw??kv??hv? ?lw??iv??dv??dv? ?iw??bw??fv??cv? ?gv??jv? ?cw??fv??a:>P?l:>~?e>P?kv? ?hw??iv??lgambas-3.16.3/app/examples/OpenGL/Md2Model/ogro.jpg000066400000000000000000000566221411575327000216530ustar00rootroot00000000000000JFIFHHC     C   " I!1A"Qaq2#BRb$r%3C4c DTd5!1A"Qq2a#R3BCc ?tUT&[ImN#:Ǖ:8OA)A1Yrp$F@xc,h_T-`%!loT.۱8bw+XJ/blGox,`R*$\41RM"Skr3ZRvXko4T܍ KzL7lu<m)e\\|NSƜHZJn ^Ԟy#ul0 Wbu)y2PZ{uj bIJ aG2*ئ:8LPtԍ HɆ,KVu$/Y\^B%(Sɲ\&nz,R̀ry h!$QA#as-n^kXp !:Mm!u!Tl6-Jl>j8@{,M71,Ҥ2K {_w8DuoO\j:Iy¥ [n;m)A^vT} I\Z-=1eU}iֵ$,6Po0ERe_) ډ_~ q[U%gATH73Z<%E'^s,9.4փm '|ru %V ہ ^fRI\bnkVjΩVTuV_5R2K,*Rbe8R)[T@ny}qMfٵ$'S]қ9uf% H ~gLʨ-l$,=7ؐTڦk.JÓ${*uJQ$ix8Ey'n0!PeGr6)Q:ک"HqE$]\+ZC*rOP,v ;cO6K̙E}m]6I&k.L^\ĉhźH TIBRWbʒ7{JP})FRN< lQ/!ǬweJDT]-\srnl8bQdT#IK:Ŭ 6(S93u5{cśt-TaȤJrώߕ$;[ڄD Qy )HA'*MÀ)G\ GNvŗ#˧V[K LRPғذe'R_[.7$7)Jm )Rno[;6$vc6VBS2ܩw7.Dt)Vْ;mRy=ȝ:j#6bu|ҩH]QnR=&&,šЖ`ln\+C.bˡHTN寱~sf}1[LGBǽ8Zgər*L)+i %VInrP+*;yZ}qˑqX2ĊrH pX2Hi1ת-4Focp1_Zs>6j3M/ UaǛ|v朳Xb\-obSr=2DjDҝ+aIR'S<,.AbZSxŠAAEvӊ6cJ+0 J5iZBb-'Pd!)*LmňJP?;YWs*WV$5YA m8:0* -ZS{ofz=ĵG+;%!^k|qUJRq@b}6qJrZ{{[-/\v|yU(QXpb|/Tu[ӒgKi l,VˆV[RBゲQ RN5 >{ yO{_r/^&d>.,S#hu$PRRj{B@YHUӵеW-)N0@瑄*.5yؘvMϕAm&ﳽ 'Oz/ Ґd߲,Oo1f8PEi-P,q[Q[nEmy&JY$pAv#)Tm"6nުIbÅQIGĨ~Ԑ*<@Ņs$ TP\7Q#;oWUzr$U?*Hiv]n넩Xclg庚X܏Tz?ݛtU\i _B2̴m4kbvLܞ%32AVݯ%ȵGJ̍6lTX;}| V{#V5;'EiѹiDw* 9FeD!&kʢzU>S+f+CϷʶW4ϥC{ D[+l Fs~p68R4W,$Ge |9eD =zgO0*){jSI ;-1Ir;q[#W{qF|R3dRQCL6ПPgLJ䬅(sí"d8OBSgVNBBRRBU`\N]JR/B[:]!*sp7HEZ"ɧq$R4{[ye@ۚhzà}B d̴͍ڤd3 _Fa<$eGucZЖ@U:{XAr9 2mƹ!u"l@rd"VJ|ҥ!X##5e'k hi6|6hGTJpjQKMmMS`1NiF@*pVw lAJ)6mQA*6NzYGw*F1 "1iw/oG>Vʺj&p9(N:CgO}{o') }AƵi [l;z?,~⺊>P 3'ӋMY.-Jl}10}rtS]- GR7 {|{c+æ0p8T[W\i]MQҎV(5LeʼnʔGS줕yNA76[bk.CECpUM:Ô˕*$HB^t( ¾{13tEZu5QNHEش, L[v{ڼ*G\#Q+dTa5Kϙ.&mŎ8@.Ee{S!ɿ_ 1Cꭉ%mi7b>xejRỶiLM Y A$& IP< `L<4JB[&IClod]_fYK1Eb@N?H4" Fx?,S*eTl1p<,~-$UNVC&K ]}JNlvk4] +bZ(lw[3鑥/*9 ?Mo,+h:mYDĂ!n=.=_I TdCUVCK.(>~SnYKR㹡+a}&] TWqL$687@w㑶ݼm^J&访oJk>_\_&}*F~"E:(:wLDx/USs&U'>)dSe Gӿ,vpAg`u"nZ!yj[ x.uso^xP:S|olIΝΙ:[nxX-{\(&:JdH.~J; 6^}fK 7FYʳ!-AtK J,BtR\IQ7?#ĝ6BH93BCJM8J渍0_+6Rn|jF^yn[f|0G[]JT}p^bDFStt*P%H{skSF fM={%scV߃'u uPA!o/LjJ- iZa99shmEf -G/~(a ӧIbJ;p lAf 'a1L$+`jpCkeiґ,dbb&z3V)7a[w;`[d'_-7'q_f!@%!I&<犪vPnbw||2Rnݏ;"7Qء 3'"=+$9&Z,6)f ߸تIrQzӫZѨ\Qs[9gW:SKb- >TqaێyzMJ%\\wRQl^v*̓ $j mN9!M<_}?LTpԆjf{8zbT!d mm"Q|8mư2>yݙ`,m* k{xF9,^j# o8rKP]nx%c)Ps0u.$q8t_ҿc:7bxN[/})!Skmba;XmU#cu4_q1ә/5SAe3YU,TO3Tv5W^Y*زfw y:gg%h,T^JRӤ)fqqӜQ.Evg\%Xqs8nf;S CE5O E'bdE@e=l,qR6M:"+]%\[O%r;,&S;Y+Y&ApO~y$$Ƌ,M V[w2RR(G _i4uT VGRfM1,VqÔiDE$u+ރ%zY!Mz,DEo}l-lޡOH gN$QVva.N~lK wǹN~:~Q$u,!ۅZg6ꐆsv&cCS*N)1p_Roar,mVu,˞j)gt|˓Co+0%IN3o ,{>%)nMc\::TM:orE9EVR[=TeҰFm“tGx X ~r%MQ,pvA+mkIe2o7YόTAخLb ::6+V|=pPP U]]MIo,s ~Dw8+# ܡlxLȒHiO* ?Zs BH1dYQW#p.:b8b̋-=3j]Ak/;52!ԃ -fa"<.mP>l/&c~SoK#b凛RbZGs ZRR)RS!B:eR.xPC^%E-)H&dKbzjai mײSǗI{⏭'_ 5%[O J, |U5L[QDtU$D}qJ5MV"*d&u&)Gl+_ hñZ:]G\rJ kPe:/oucݎAJ .e*HJҫ=5YJMtM}?)@ȶŷNH|5w[}:MI0NluBȱcܙ2۔H4%}.m~m(u:Bb9]"LeSI:G(} X;Z)%nittST!m4"ؕL: '(VUqr[.HieIt,5M4d''aJU˖H} ,G1:O2v}Am(uioJfzP\y)%6 `q,i֐u:J@vv` 3Tyud+CwKu +RT#7# 7-}<Գ56Rh;p>cnRԅ`Be! BӶMFcr(8YoF%a\{o-mfߞ>:)Wie U8{䩴[vTI#F5,Uݼ@꽾Xķ$Lmw/,\rbcjzLvdB iqiL%P[rvwn fcUNgˋqʐr3j򫑺^ΥKI=ϩSIU x|pg݂q;8C΂p|2Qh P AP;_f!'R-<c qs2⺖WL#3\S<^:ǩQVU$ :I-1čAb=lBc }iR}p1AԽtzc]n*ʹ*RIV o3j&mž 8 -:Sbm޻ IQ!Rѿ{Ǟ8Cz$0V;`ҋlD!6]@MT Sغ &w1Ńv[H!Tx*p(y;d4 @O'RˈE\ܧքAl @y&*RR|4AnNH l%JPN"Hk}IAC+-}ŕ%N0˥O$@V;dhɐ*9mW6qm :x !)m+SeXkL&($k}\)v+}Iqk'TN(Stȡ?%GROmѣ;b])m)Yp{pd9@/p)7#S:Lx7Pl8ӆ[А%gH;~wś:DqAoSq$y)8 i+)PPO֠H|,2b.{$ ֔t));bsR6I7OM !^|(M@Oq\ЙFrs,sqGdDԲ)+P v^4 7|~d^!ed+\$msmQ5m;5'p;&&+RU8J>upp+J[$|o4F꭛m`G>UK 7!\ DTҿ*R .Z)DL_2 '1ΧRqXq _BIUB&ua ˂ct)1[ ,Q}>Mdw9 *)D]i#(.9aut$#ȨFׇ;bzF ]a?@a>nHA[[<)G@瑇]!yR bZ"2 ̲-2j!N,$n-qBwzUA_68%c8Hòr-4H-<֝B iqsG$3%X\y >lPXV.JueO}+*Rş iFQO&?F1&֓oT}0VϐHAU5 [eS1St̔Tb̚6#bD )–r$Dx SDq,b[0 .R54>ExeNH0^ [B9=[Pֺ$ߜXd~tɕ &_pOJJU^YESpRXj5]I|l =D2{Uk8s'|0lJI$qT>_ kű55b)ILe(U-B5$9k_nFP!%*G.`G'w M]!E 9JҟxRjRCZIB.H1iǤ0)kȱ-ZSg>ϙ E)N-/*F'b3˙ġUd玒JȍVRV$Bom@]GRc_ عmu|0]5~{&>\[ly܇z*S?=%J3+ 2Yq$*_"Y24ʒͶSJכP9s-m G&S}&EAWZL:Oh mGc{anJERܝBrv<`bg]3P&Lbc) :ǟ%u?ũn4›)A")t`ר6Ԅu`q-\*qKlRrU2 < N=9E,ibvc0ug7iD_۴1c.1Bؠ3+=P^;k%"azreD$ iRom[ i[ᷦ=q4Tscӥ) ,ip'A_c^L/邅%fS̙a+nXLejԤŒ$Aw΄^nIs)HV뇦hWԄS^qC[i 7''oKێXΑǮ;[ M`Fȵ50F^M*N}c0tm/:Ju)] ŸNau!en}kƅ5tu&{y[hCzknlS9[3Ji(m6 O'e磠O*3JP$iY`U=j,!Kߦ?WIPcIy+QP-U<޼q|GA~F ]*L;vc*Zq=VUYL fFK6Ȫ_5mCn9po3dmGXB+Byv.ݜvQ0* P SZ)xw:mPKx)N`87_ef9,!AJ<#|1'1=Y]D; I'#=ZHjJϻ:ڕeBDl6NoC!  4tfT#m))܋8kKJNLkҲNm E6tR4Q)ɮm-nVS`~<_M«q6HFIK k9|M}nɕ㻹rs%b@vFWvwZ.,j%G͈Rt)I7*N׹q~}|掝PsUkw̑No6oRqO}rfK `5b.@`ϒGB}E<^ Z06+2y4#.RǔN-S4HDI r*IyŧrHBZCNi!CV\ ^xٯ/BNmE+VH(ҒNV~<7R78=dMY)kkkYb|b3c+uZzWXTBğb;mOm3Yٿ毿_T/EI;o*<a>:uTL-mj( ߛb;dӡloȦ c`l?nM$toSrͯ$ѨXB[)I6|Iq ;0XQwOi-J0Ww )iX csb.HxhHDFu MEpҙHr[MR1iP@֔;Xn;}/ldK}g1Q*#KsQҔj'bv#RS3l;߯(y!̅<"l<3hZ*CXB%p-Q2jOٱD<*3/Ⲧi$mԥnŻ\ Fk E8&+FK J^d43 d&5*e]J6睐OݼKDHw`\s(eVu2k{$arM1?3;,BB {u*HIV-1n`N`2S<)䰂TiO6nɯLl U:L6 {[㈔<\XHkJPsB~;{q|'UJtz+$! vſB^I yvVd:VԿcMxUՈd9S8\l;b>˻n-ɱ"÷ iV5 qDe-ibnt۹hdDS#$?3m܍ /0W-B,&f|x5!l3WD֤{LG`` ąI ňzcVh[>u%7|(%ˮU o܅! (/3̌6lma6x} P~cJ rr"֦CXRu |(ԩii@Ro5Z/ Muk-.J}q j}`n~XFOf=uD@jJCN_rlTHm];?Fǀ$4%Zuk2,t2ôZS[n)N9Vl o1S*\xWdRUlwVOCO?Bcmp8}MSVIW? Vy=T*xm@5U\t)MR\. [~eR]%YRւ,mźܪlfn1yRJoIT\i iiPͼco蘓,kq8՟fmZ܀ZmHQ*Wl hx9-ΡeϞ满GBnAđn3/F6=" CҘ2u)$2p.xSf0"T 1LCm:j{,#n' ea 2D\:Oeke(K\BATK-:-< rqHuE~hNjRZTY lUIdU-@O+}Vۍ)#%^gJ@ rA¤CDtRt`Q? ~ɏ hr"ZOU8Jb_4I) $)6*Ld)ö$(XoU^z9 }B| *)aȲlZӸwu^Ԓ??L{Wl,/$twDqQ} %!#P-9Hh (&%Jl,3ĺ ^XG3 #\w!KlP6~1n Ѻo(r|))V2n '7 C+MqTstFw2U*p*;Mņh)#Eヵl,ڼڭC'uD{wĎxW;MߴfDGC zX r ͧ7#Xq?6|+OJVi.8fhEE!iJ@r{s=EDeeq}%hi ?N^j ̖FV>{H9W^.Ew:t s.}:o6aD_\nH睸m:-0–l#nq~dE69ىn hO;=H#kQ5--+S2i-EP(vBFLkUIn>'YMS,Ty_Ro~>XrCy3Q&-*'jNj|+rJZ]҄&s]2HJѩ~:Nu2c5ll|NWOilOe-C.IqלԊ䙈uÍZJLv#nSߎx }iYJeBMenO#qKq:a`s iTHY;^M< vgܹ@y%yĐ@BV}myh\ 9aqPopW7ml¯ctڽMTp+U$qF;7ln)TҐ{l7ü>_FM_ u(m ?,v¶@ vKI4[%?|,Mm›Z^NLuũ.epG{yԒ.$z%qCWF_nVx˯"De*:R$!^_hjI! ;JYJJQF>G3Q*EC3S!M;v?\y'tMn: +שQ5dPJfTl6 pnmk+Hق e<|E}VѲyS4jS)P"m˜/:p?+V64‡G+K}T8.j)$LjcئOMLKa lP=c1>kYII*=6?1 .4),{Z;HY@steH#]\:U`&eKjyrQuԶ`,=9#8 1Ҩc.u-t8Ԃ;a;*3^W6HJ<΋b$p6<9)eEiAI$ 7֞ꈨ("GSU:Y0[#$JΥ-d$Tm}Y24pG-a>9y͸ߌ O۾,re J"mmU~^ŇWs0 GU;/RGpiNU5D.kl6`xㄌ1yT-]BSk_0ILCZNt*J8D9ګ?3-N}=;okUN3 X{ȿ܋RO8䮃&dC }$m{[iB+l?RNf5 EF 3*e%1&*:|)wԔ|:T9N2oܷQ% RӨCo256O9&Qj3ILlilsb-밞CqJ`!dy.ׇ]Cr/}ɢT:w*It(8lMn6-96ψSs{(=cAXRpK#=Y!oOVrٕ2h8%ƣl4|e4EVd]=5=]-)zR ;׭UA6zjVzbQ +Añy/!4%i˽xNIW[mt 1PT9,@VOs2xw $\ 9Q<-@3A:uUXza95*v ?&m-eڃscJ^qT[*'|%=ьAܛUcsW:ccsW~{~:b60s -ao$ՑPNXB= 8r&MVL}k&gZmJ-! ~HQXg~' 'Fs>uD"U:6*?~[a:[䕶]R4jY: M`f:wSjMQ!6%(&}ZF";=7ĔTV6(- >~RR5yI6`M|dv;%^ߞ鹂NCB !V 6!``%uYj]HQYZ 569LZ?x5y@;{~,ZuT 'L Km)"#{[PqDd9!\-JËդ6XlfʜFG')yjq!@isZ8 ER9՚?!\̺=uH[o>Cko,ḷ*.C" OG6jޤԛ[1J=ڔ4z:RmA0MVEUmV3`%2mPdԩc%0b=J%i !j.a/%Do ),#ZBEkES1$f!$Xl=HdozLgQ뽄.MAQ08_ ëQ\+0~48ғofzs:h mXHQFY.pfA!n-l]AV]8#B&"EB)ҧ <\Sj* "3 sy 4\y! ||%Up!ikwAXB BT Dz`T ص&b,Rt[nsJk0hq ̝^\|.h_mtIF?ZG ́)6۾6 /6v@6J騍Ρ0rVԑMpc -j̳+/VTAYY"q ZK@)_ƗR@saux(-klVuzFHqu)*v3 E~L3J䔵R~BK"],#ї RgG);cxed&jGSn c2nkn|QC000#-JCJrXBKֲߐ>xVQ6Nq]l]"2Yz.]\|0^6fnT0G =?( ԹV1"}8VT 5m)eFV'煸YTAX5. 0[sJֻmp,ommWgambas-3.16.3/app/examples/OpenGL/Md2Model/ogro.md2000066400000000000000000011535341411575327000215560ustar00rootroot00000000000000IDP2 f7 D @*\players/ogro/igdosh.pcxAll Files (*.*)*.*f_b.pcxxplayers/ogro/arboshak.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/darkam.pcxxl Files (*.*)*.*f_b.pcxxplayers/ogro/freedom.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/gib.pcxpcxl Files (*.*)*.*f_b.pcxxplayers/ogro/gorash.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/gordogh.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/grok.pcxcxl Files (*.*)*.*f_b.pcxxplayers/ogro/khorne.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/nabogro.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/slaanesh.pcxl Files (*.*)*.*f_b.pcxxplayers/ogro/ctf_r.pcxcxl Files (*.*)*.*f_b.pcxxplayers/ogro/ctf_b.pcxcxl Files (*.*)*.*f_b.pcxx %%2222}tyyDDyyQQQQDDDPPPPmm~^G L GNEO MM OQ R BC* , * @**1TVVSS11.* 252LQ 9 <9 5>TIL2, .. 1E61< ? <@ @6 :C   MLYYNYYE8YYBCBB@535097'+- ))#`ogOWO ^~~mm^@22:GNN^V^NVOv~  Y>YEYYCCY&%645%41I7YDCB]Bu<XhXulu6o&p2R)gX95W((  gl6~ll\zohueRe{zc WW]lhlWHUOX]LJXOq PC>E@A[[dd[ o {{[tg[o\T \ddpppu}A,@ !jhs!#"3BO@!--##'89& #)+)+J-.66Y7G6j-kJx@k3AL^@1@Kv{JLKJKMKLNOLJOPLQSR MUT MRU QRM MNQNMKVWS XVS XYV XZY[U\ U[T  ][^]T[]^Z[_^_[VPZXPOZLQNLSQXLPLXSZ^_O]ZJMT J]O]JT[`Va`[ ab` !bac! "RSW #UR\ RWd #$Re\ %Rde $%V`W  [\a&d`b$'(`dW'$#\ca)&c\e)%cdb)$(dce$)%*+,*-+?E=./0E,6/126=E20/C?=345<C=436>@?786?C>6372=690229=9:0792;<=6522>9ED,?@ABDEBCDIF,EF1IGHGHIIHFGIJD'FKLMDFH@JIF',FN1,GI1OEG,DHA@DHG@IH73+PQR+DCRKS+C7RSP56*>2TA>CU73A@>U87@AB8UB?@B.VWCDASKXDBACBUE?B/.W8:9YZ<978<;Y;87[Y;;:8[ZY:;<Z[\9:<:].7C;PS^C<;_\[=9<0:.0/1`ab42/cda/04a`c340ec`301e`b153bfe251dfb1/2bad247dcg374egc hij  kihlhm.nmo. pqr sts.uqv.-quw.- qwr-wux- wxk-  wkr$%*yz{($*|y{&'%}~('&|~}*6(T2*)+TR%)*z{'D)LK,'(1N)D+KR)%'z+3*RQT*35TQ>(6,21%#"z%"!z!&%}&! } (&|} $y $(y|#%z%$zy   ! !"##!""   vxuuvx  i  jmhjomjojj  ji    lrk khl kxxx   ik  i-**,,**-                     !!" #  $# % %$ &$(''#$&))%)($$%)    #    # // /      !#  " "!"687#$%796%&#L'()KL*')!+"!,+,!/4-45-.5./01/234567899:765;<=>=?@=A?~=<B~=BA4CDDEFF4D46C/1G/H2/GH0?11?IIG1|2J3|HKJ|HJ2HGIIKH?0@?AI|J<>|>3J~IAB~IBK|~JKB~|B<J9L:}MNO}PNMMLP9PL}N8O98P}NP852.QR,zyxSTUxy{UTVx{zUVSOnXWXYXNOYYWOmnZ[\jwO]^_Nlk`abSmOcdekONbe`kSObceNXlfghiNuijkabjlm]ajOl]_vwjn^]wvs^nohvjpn]vhqnpqvrsnroqrvqrn`Nisji`i]sittiuuikustkouhitpiutqhuqptsruorqtrqurXnVvwxlXWhgyonmz\[noV\z{pVo|{zSTp}~|Spm}|[mpo[|zjbY]mjYh]pY]itiihYipacblmOda_leOM_Oed_dfgfdegadlgcalLgf'[Lf[eM[fecgZcZYcYbmKgL*'gKZ*`]\stN`_js^MNjN_^j_)(^_(_`)s`\)s[L([M^[^(\Z)\]Yt\YZZK)*XVWg{yUWVy{pUV|{TUp~|kTS~}klUhkUT~lWUhy<RD.&R#R<B#RB.#*+)J&%Q&J^PNDkjR&Q^QPR^kJOQ_^OJM_+MJDRPkNMDj+DMJ)+JC)J%CI@GIGFIFHIH1I13I3@H>1H1G@=FG=E>HEHF=EF97=&%;>EE=7%7;E%+?:+*?:D+D:8D86D6<(?*>(1?(>C%$C)C$30@B=@B<=$A$.BAA@0@AB:?>:>;69=#&6=<#8:;$;78%$-/-"/,A0",0(21Q2('Q'!2Q435-.4/"-125Q.04"-034-153.!#2!Q%&..A%-"-"-",A,,")(*()(R'(R'!R$%A$+,+",R++,!R#!                       O=]>Q>?Fstand001_i@%sf%[ru$q1>z,'>!K*EdY=}M>I-tlEvHiJ/fakFY8I"r9hz,acqDVEsirC[d4ZzlThQdo8MmQJz&_{mU.rRi]̌n6~&}‘G]ڃ7}yR}߄??9++-$e {$L"y L[j?,;%Ԏ'~჏IC5aQke >J"r%RĞpaۈ {y|pk%sd5ч5ɐ>HRўӔ͐>̏0z~%""wiwb8ommzpjzÍ.zbǚ/!uolqp\łBʏ0Ǐ>J,{Epiy;},yvp:9:;xM 'ˌ*犔T2b&mxNH[Kk,;F9aDS:D.f|ap`2YW'ȟlZs.c[fM QFh[tf$hXu'r>uKIV[0??dGP8XM3Y>]w^<^-/zVE R>``'1stand002bzi@%of#Xrt)q1>~,(>!J*Dd\=}P>K-tpEvGgM/laoFX8I!u8h},a\pDTAshxrCSd1VxjNhJdf8~FmNEz%\{ylU|.|rKiǓf6{&yCYـ7yxQw߄w4wFw9++1(l %T" T`u#B3;%&{IzF5]Lki FU"~-ZMmZjx vyuꐏ"fy(gc4q9{?ćKyRӓ{Czb*3Bݒ7^CP4D'fwazi]/YP$şbZl(cU_U NAzTsf-'h_u$r?uKMVZ0:?pAP8QM3W9]w;MUSKB}WXArF)f`/8kP5(gL:L/F>A\<$W. ?0}wX@'p6BzYc4 Z]'&Wb-#N00R+0dQJ}9-6+]:%<=_8^-,zXB >VIS>4stand003eti@&lf"Urt-q0>,(=!I*Cd_=}S>M-tsEvGgO/qa"rEW6H!x8h,aVpDR=shpqCMd.TxhIhDb^8}AmLBz$YqlUy5yrEiǑ_6x&v?V؀5uڃPsބoFnFo9++5-s %[" [d~#C9;%"$y}IrF5ZHkm M_ &4bMjVjk oyqꐕ!_y~(^^9_8iFvKlRӜiCi<~qw/ɀ( } ZhUi]nZzav_]j9{'Zgr<˂%RmYӡSq^fi9iCl@|)'Xp]gUY3ZSh,:.̋d>~ʊn䈇D1Mx`v:>~M>[*,@ۏ6\BO/E"fsari[.TJ#ßZZe%cPZ] L>zNtfz-~*heu$r?uKQVY06@pAX<$S.`I!)rP j5v>tK.XGYY #\"[=RN \XYOp.fzM=q-{M27.gL'RDb.ts m<++#@&ei."=-y+;$:.A@*+F.L:!+'87%yVs>*ej*h-s"um.9=*6Fu1;Eғ`gQ߆؍1xpml[\pv ymR{ooiv2job`:,HwP@OWRZ(\X]^!e2WFPN'IBQ[UD[)HWM(JfRZTETWX[_9bxYBVX\mz1k4~3f53K:N<L;l laqea #KA5_[ kKwAARH]AE.?=] >bU>CL6stand004fsi@%lg Vrt0q0>+(=!H*Bd_=}S>L-tsDvFgN/ta"sEV6G!x8h+aUqDP=shmqCMd*VxfJhCb[8{@mICz"[nmUz}5zrEiOn_6y$x:X׀2w}Mt݄nFkFn8++6/v'%_" ^d-B:;%# |}LpF5VIkm Pc &8eMfWjgovt~!`x{(]cxʊe䈁D1DxYv2@~M>Z*%Cۏ3^?QP0E#fmajiW0TD%ßRZ^'cK[a I>zLt^u-~+hit$rCuKRVX06Ap @RK?_I (rQ j5v>tK-WGZX #["Z=PN \XXOq-f{L=s-}L275cM'NF]0tm!m<++"@&ei-";,y)9":,A>*(F.>:!+(:8'&{Us@+ei-f/q$um.9=*6<~D,i*w&l@o?r 8]  ]:B=iZOy.Ȩ.z͓-_IJ~73} O_q^gXҦx6ppwdCL:FQҒjg^߆֍1pyk[hpv lRzooiv1job`80JwR@PPT [,]X]`f2WGPP,JBR[VD\)HRN(KfRZUETWX[`9awXBUX[my0k33f53K:N<>;l kape` #I?3^[ jIw@?RH]AE.=,>RX>stand005crj@"khUtt.q/>|*(<$F)AdX<}M=E-tmCvEgG.p_ lDT6F!q7zy+aSsDN^*Hݏ,c7TP1E~%ccabiN2Y;(ǟIZV*cEa_ G>zKvc|-(igs'rCtKMVV04Dp>*CA>X>#R0;3}uSC'k1FzX]6 ZV*IX\/%K+4K00fIA|226)Y<!9@`0c-&k[;;?OK>\I#rOj1v9tI*SOXT #X V8PK\UTOm(fwG>r)|H0x:5\Q'FIÓU2td#m<*L"@'ch.<.y+;#:,@?*)F-K: ,(z~87'#Th?*d\+[.f#v{m.9>*8Hu7CMԏggZي1ptj[cnt jRxolis0hl`\8)EwM@LOV(YU][!a/TCPK(EfN[QDX)EWI(GfOZQEQU[[4_xUBSYms0k3x2f43D9G;>;e daieY #C8,W[ kBw98RH]AE.8=>=[>{osV stand006_tk@ ljUvt*q.>q*({;$E)AdN;}C<<,tbCvDh>-h^aCS6E!g6zo*a|VuDM=xhpuCUd!^x^QkEpc8vEmEGx`po_ ~5 {t{Nmy]ьn8+f؀!};x4qF~:+=*'j',V"o GLj#-%;%}L{F5ITyY ;"P }&'VMVg݂~ ya sqx(lci*R$k/Zš8Ew.c[a\"iE7Y5/͟D"ZP3aAmZ FAzNyc-$jbr'rCuKEVU.6Gp>W8NT3P7cw3K[LIH{QVFo?1fZ+AkL/0gGA>)DC!:C^.c-#kZ8o%8yE0qB3UY'?OǓM9t\*m5-L%U, %ch3B5j3 B*80UD+.D-K< 0+mo8u9'r"T[A,nL+N0Y%vpl29}B+v>5jI,V/vq,`]Ciw 6| "~ { [8_>hIЄ8"aɰ)eԢ*[Ԍ%Eѭ!e4p̾3k17ŭKgGg<۠\7`naE/6u"&2֎Oi6q߀0a}dEh[5mXm"LfPpndsbivg.VbtbcM[M7:zVB`GEOFhH&QRUL`O!Q*WLM;b=`9^]EqtBf~GLa:p:Gr8^lDq@fbHoKJFwTy}I_oIyMpi/j2m1D33;8>:>;\ [a`eP #:0$N[x k:w10RHx]AE.=~>H]>5kstand007qyl@=ol:YxtCr/>|)(:!E)Ad^;}U;P+toCvDhQ,u]nCS6D!s6zz*a[wDdAyhwxC]d>dxqXkKpk8Km]Mz;evp_+.-uUmfӌx866Enـ<}Q4y4:++CBx,h"y V\sC;;%-ȍ,}LF5_\jh M"^ &=e¾Mhqނ o鎉 |x(wcs*8[?r̞I`Ě@E6co%iq+m[=YO5џ\)Zf;bXxk ^EzS{c-@krr'sCuKWVT.:JpBY8SV3g:ewNO]cLJ{gYHB4fo-Ckd03iKC>FFFV\BBT5>=9}YH'{5Lyka: mY/Ij_3$a,;N5/wIA596F]@@$8D.J3ha&VVʓc@tp0m40K)`2 *"a h8G;92H!074TIL3D.J? 5/|t|:<'~"RmD/_,c3l'v"l89H+E5zO(j4x1#YtB|x E&{ !7 ` Kh";[ЄG"dӯ+cޠ+S܋,L٭"fʢ4tټ=v1BͯUgMi@YʎFnodE@Bv-{'Æ{3ۑLi-Wz)P{e+nq u4n"*jKjeC^pFb),d}3b!b|=HC2’MzJWPvOJMXSrR"4L(S{Ht C A]LsC`,DOCt><]#Hh*?^Mv-Ls;D@=S6GY.Lw:Mbu/j3x1D33N8P9L;k kaoea #OG=`[ kOwGGRH]AE.J>h>]>jg@:stand008|l@NtlM\xtRr/>)(:!E)Adi;}`;]+twC}Eh^,}]vCS6D"{7z+aawDsE{myCcdQgx}]kPds8PmlQzNi{~q_?.@uZmlӌ8HIWrـMփ`44:++RQ,q" ahzRJ;%>ɍ@}LF5n`js Zg"&KoMuw߂ z鎐 x(}c<:FATGӜF<|/( '~zwi~zv<(}i•0,rlwסqZ{ez+L^Rv͞[dŚDE;c~'i.ml?Yb7ӟn,gu?bg~tÈ mIzY{c-Pkzr'sCvKbVT.=MoG[8XX3v=gzaQ]tNK{w\IC6D.Fkx05iOFL\FGh^BYT5W<:}\I'8Ny{c; }Z0I{a4$u,=Q7/IA7<8[^@W"8D.O3vfgZ˔rCv4m!43H,Y6 /&a#h<K@"?2N!578TNL8B0VB 92tcd@f++k/h"i3NCA|YkU]}ZSa\sY")Q&\|V}NN[VhK]!KOOvIH[Rh!G^Wx)Uz/JU9Y0OX+Ux5Td}0j31D43[8\9L;u uaxel #\UMk[ k]wVURH]AE.Up>`a >q]>zfstand009|m@RwlQ^xuTs/>)(:!E)Bdi<}a;^+tvC}Eh_,{]vCT6E"{7h+afwDvI{mzCgdVix_kUdx8TnpSzRk{q_C.Dv^poӌ8LM\tڀRփdۄ44<++TSÖ,qƜ" aiyUL;%A̍E}÷LF5rajt Zf"&LnMyz߂ }鐐"y(c9:FKTGԜF<~/( h}izv<&i0$wl{rvZe+R_Wv͞`dƚGE>e(i0ps@Yi7ԟt-a{@bjsɈ pLz^{f-Rlyr't>vKcVT.@OoK]:]Z)|?hzgR^{OL{}]JE7D/Hk07iRHLdFGo^CbS6`:;}_J':Pye< [1Ib5$},?S9/I!A8>8b^A`;G.%em!k7>!8C.Q3zhl[̔xDv5n$?6H0Y: 3*a'm@PE'E2S!;75N+L0T(8x6Š)Y_yEr,}:)r F$Y%J!m) >}\>)wSjstand010{m@RxkR_wuRs/>~)&:!E+Bdg<}_<\+ttCvEh],x]sDT6E"x7h+aiwDwJ{mzChdWgx_mXd{8VnpSzRj{p@B.Cu^poҌ7KM^qڀS׃dۄ44<++SQ}Ɨ$nȜ" _hvVJ;%@΍FxƸIF5t`js Xb"IkMzy߈ }ꐏ"y(c9:FKTGӜF<%' h~i􌗁hv<&i0$zm{rxZfl2p9|-xa`l>,V\YtΞbbƚGF=e'i/pu>Ym5ԟy+a~?bl~oˉ qMha{f#Qlvr't>vK`VU.BOoN^:`Z)}@hzhR]}OL}~^IF8D/Hj07iTHLgEGq^BeR6d9;}`J;Qye< [1Ib5$,?U9/J!A:>8e]@d:G/&ds!k7>!8D.Q){gnY̔{Cv4n'?9H3Y< 5-\*mCSI*I0W!?F@RWIAB3VF=5v>A $WG5;x,|4)x%l?5O,L0T'7x6*X_yEr:-}:+ rF&Y(J"m,; >>'[>Pir@stand011yl@PrkQYvuMs/>z*';!E+Add<}[<X,vrCvEiX-t_pDS6E"u7h{+afuDwEymyCcdX_zYmTdw9QnpMzQctp@?.AuXphь|7IL_hڀRxe܄449++PNy—$i"~ ]hsUH;#=ЍFx(F5vXjr U^"}EhM|qވ ~ꐎ"}y(|c5:?KTMӜ?<%' ~hzpzhw5&i0$unursZfx,XQYlϞb\ƚBF6f!a&pw8Yo-ҟ|"a6bntkƊ qGh^yf#Nkqs's>vK]WU.AMoL\:^Y)}%8I/J)}`oR˔}{Whbqif \kgk b Ygf\\ZcnW\TQ^yVVZ#^n!S^b,`k+SU9c:2Z[0`j8_Ew0l3w1D4.W9W:L;m maqee #VPGd[ kWwPPRH]KE.> >ZX>`M=}"stand012t|k@JiiLPuuFs/>s*'zuKWWV.>IoGY:ZV)z5bscHYxIGvxXEF1D+@k..iRCLa>A~jY>\N0]43v\F5Ik{b8 [,&|a1!~)7U42NA977\W<]2@2epk<?!(R~C2:u*y.t$xm84G,@5L',w,n&Y#@zD:)}:& F+T1H"i+:\ډC[׼,U,E$Eؼ\Ӯ?h+p1@ȻUaJa7Nך?m6^ĭCECw/v(Ɠv,ߠF̕b$F*IֈD/|Z!ق){'w@wD:kE8o('r'o"q2VA9{Shaqie [ifm a!Xfe[ [ZbnU\RQ]yTTa$]n"R^ay-_k,RU;b:4Y[2_j:^Eq/l2p2D43P9O<L~;d eaie\~ #MF>[]y kNwFFR|Hx]Ke. >/C >eV>+NJstand013nwj@BchEItuj,'r=!G*BeU=}J?E.vdDv{EiE0db"bET7yHg7hl+aZsDo7ui~vCUdOLz|JmHdl9Cni=zFPt|nU0p.1psKpY8l7:rAsZTڀKvy_w݄?49((C>m}$Z"w S`iM<;z#/Ҏ>uxI?5rGlk IQ"q7[Şy]݈ |{|"mk'mf5|9?HRMғ?0}~%'"qmmbxkmmxou5rb0$jnerfZwf0C@,q6kio;r+pkp193:>͌芙K2uy}xd8~XKg,U:R[\MĚ5C%fabr-Rlʟ|\#cm\Z"i7hRvf#?iav r>uHMXW/>F6EV:XT)t2`s[DWqGDvqVCG/D*1nQIj_&dq lS'wL0uC>aTM[ !RUKRL/R^\O.BSL.:S2;)yO jCǔz-vp,3>G9T834^-iEWF*lI1YBFIS`(IA;HG 60t?>!*~RyB1:o*t-t"wm64E,<5I'~(w(n%|Y%@zD(x:$ F-T4I#i*:Tډ<Yм,U%H$BӺ\ͮ3e+j1<ùRaKa6Qԙ?h6^F@@r.v)Őu,ݞIʓb%I*KԅD0yZ"؀+x(uCuD_:6V[4\j=[Eh0l3g4{B53F:E=zLv;Z![a_eRu#B:2P]p kBw;:RsHo]Ke.Z> >eS> stand014exjJ7di:Jtu0tw0>`,'i>!H*BeJ>?@9/vZEvtFi91Zc"YGT7qH^8hb,a\sCf9uitCWdINzvLmJdm9Epa>z~uHCYX/@F6GV:ZT)m3`sSEWjHEvjWDI.D~,~YX=IN.K3/x\E6Fklc7"q]*&lb/!r*3X12SK<37IU:M1=7fa"m|@;bRI^`&Xq~ lF)w?3u4?UVMu] EV>T?2R|^u^O1BV=0:U2<)wQ fDǍw.v p,3>G9T834^,iEWF+lI1YBFIS`(IA:HF 60~t~>>!){RrB1g)m-{y"wm64E,=5J'z)z)n%yY%@zD(x:$ F-T4I#i*:Oډ8Xϼ,W%K$Aӹ]̭3d)g1:ĸPaKa6SҘFdo^F<>r-u)ōt-ޛKȑb&M*N҃D1vZ"}-v)rFrD?ed>i+*l+i#k7OA,ɑIh[qc_ Uc`k Z&Q`_TUZ[nN\ LQUMMZ'Vn$K^![y1Xk1KU@\:8S[5Yy?XE^1l3]4qB53:<9?pLk1M OaScEj#4,#D[e k4w-,RhHd]AE.=w) >VN>Jstand015[}k@*ji-Puu"to/>V+&`=!G*Ae??3@,/vQFvlFi,1Pc"PFT7jHT8hX+ayasC]>viqC\dBUzpRmOds7}KpWDz1W{nUv)vtSpa8t7#x3z{V]߁F~y]㆑??9v(}(4'`m$Fy1OagL6hYvf#&jKw ps>tuH8YX/EF6LW:^U)f8asJIXcLFvc[DL.Dx0=ml4+bX@LH@@~Q[>>P/A61x}`E:Gkdf7"h`*&df0!j.3\02wVK@27?X<C4>z:fV%hrC WUISc&L!qt l:+w16u'AIYMk` 8X1V14Rs ^jaO4BX+3:W2C)tVbIȍu3v&p,3>G9T: 55^.iFXH-lL2[DFIT`(JB8OF 81tu=> w&{RkB28_(f-{r#xn94H,A.|L'v,z-o&zY~#@zD:*}:' F,T3H#i,IL>Z=)Pstand016QkJmi$Tuuth/>M,&X>!H*Be6?)A!0vIFvfFi!1Fd"GGU7bHL9hP,ashsCWDvioAdE:YzkYmVd{7yRpQJk'[vnU y) xtZpi8}9{(~{Qb=yV䆋??4k(s('Ta$8n AV YA'w fs>juH.Y~Y/KF6SW:eT)a>ahCNX]RFv\`D}R-Ds6=mf:+b_@L@E@~I`>4T/8:1xxfE}@Gk\k7"ae*&\k/!e33b0-p[KF276]<;8?t?fM)mkH NYIIg&C&qm$ l/0w&:uE?]Mcd -\%[&9Rk%^beO9B]+8:\2J=p\]Mʏr9x,p/=?G;Y? ;9c2iJ\O4U2aLFLRd&O@6OF;3|vm:z= o!~Wc@28W%`,{n"x!nɑ:hQqYUL\XkR.L&X TI KZSnF\*ESKxC!C\.Om/Cf&Sy8Sh=F@HXBN]=SyHT6L1lt2J4^Bs33$="?]KW 6 8a<c,V #+[P jwRTHO]oAoEo.p==>Q>~.\astand017NkJmi&Uuw sb2KC0NA!xJ,|DE4A"C3vGGxdHi5=dBIW7[KK:hN.cuosC[Iupq>mE8Ykl_m_E4}ZoUNk([v}nUv*vtddr99y{{Hdށ.yGቄ=?5a(e(DUØ$+S $=:-o1I!ؒ }yfĶ&>.e[lJ <+ǝkqߊ1l~vlx-8x04AOW͞lԍ>.u~$rmb8mz􌫤3b* o|sZ_.AU'rEi<(pR4LbvH'Yy[/WD6^U9pS*bF`hAUWZ[ExXiC{]-DrA3l0-oeKQ272e;9B=tJfL3mkQ MbIHp&A0qm. l-:w$DuO=fMbm +e#d$BRk/^bnOBBfLA:e2R+j`ZOʏs>x3o5>AO@YGD ?c:pP`Y?a/j!X?Q~Wi}GW@4SFA7xm7z= rWb>5Κ5?8E4q"swrє;“dކ@-IΈ7;tc#u/s4nXMx4Sk8Jn%8iw8h5evcV3t+m&L\!SxO4KQ+Z0Vm,PKS'5Xv,Px.F6Hc=TnEHfPKVDKwFDSOFcQSnZJDEVzWZhbQ>`cdX^][zf^8K3lq4@8ZBk7)!?CTIP<)!5c7fH #]L ls PEGI]bKhDf.l=g >8X>D dstand018`kJ8niCXtwsl5LM4VEM,FDGBy4F~35wXIzrIb+:IfQKY7cN^;i^0cztCtQspt>z7MYk}gpmE5fonUmB\wnU t{*!tto6{94*w{.vvScڂ5|kJ݉)=0iɂ'f'"!GZʙ!4F6,.b1: Б)ukb˸=*r_nF 0ϓ*ĝovފ k}mnqEr23LOWvќgԗL/q!itpE9pk:*e%"6gc@/KV lFd0'6_5U0o @:J;z%=툎0yi^xK'XP{GbϕVTơRCMf,b:dy9Xz2g0bDee{6ŒpPmuwBs+jWAw ktLlwG8Z]/eD6lT9~R*vO^gU]WhgDxfvCj.CN;mvQ*bx?(PY=~Uu<Fi,KP.x}C XEkg6"n|)&i.!tJ2z1-sK_37Fp9MMBSBXO#M B|a?pTca H:i*o"_~CRvWirOZt_1RGH <6>v>85tvy+}$y*G=Q&Q*Q5j<:5 ` lDs5;&24E-s(C,X6vS+pB3ׁ*ͻ!(ݭ!-ݗ"Ƴ9ͯ*)$18d8d Υ:ϛ0;9A3&Z'gs)qʐ<Õo؃BLΑ:S}d=xYFwQv^[i >]>c-%Vstand019mkJNmiZZts.sr7IS6\GO$GFUBy@FB5wbHzzJb7;RfZ4hPi;ih0ftCXsdxL4_VmmoxF5q8[mY\woJ7pt%8qtx6<5?tt=nu\]ՂjXLwsuLsxGE[^-nD6tS9R+V]geaWtnCxr|Br.CU;mX*b@(__<~cz;Xo,]V-xC`Eks6"{)&u.!R22-{Kh39Vv8]S;`DtGmf1rv(n&iCqB lYMwPWuHbfyM !WyPwPVRA^OUByLT8x2^(|d̞uOȑCy=86K=Q>}P#N >wa>oQ]yaH:gw,jv"\sCJq`jNSl`,WDK? 3=;:.v)}$j-K)QT*P5j?:81 "^fz#5> *64I-z&}B(/tR+oC3҉""ϫ%ӕ0ĭ%!*7E6E 2Ț/8<;)*\)a!g+Z68̀9DȒ;Rd?y]DxQx^T߇1dX}VusTtYqru2r5pkYea\sbXQo]V\ddcmc^rj'fgrp]svWV|[Erfla7gLbg^Jb6lli9ujs|smq.w}wFwh|;h4n8:P> m Au=*H@j8Ga%(a0:"VfSB(M)#('{? ]dp=g+ rE\Y_GoCj*z9 >\~>_>!Okwstand020rkJZmig\ts6rs7(W5]GO$GFW@zDEG3scGzyIb<8Se\JY4hOj:ik/ft>^sd{L4jUmqo4.{8amf\soJDmv¢%Ent~71}0KqvGgraVyAdmNpԉ*)t2mτ^ 39G[ɚ">3ڐ/4jډo{H #lu:ZmSû*h-~^͌?ϒˍƜ})nnڋqpok^璁8^4` |#rdОqTV֛XաrrojbY_tZ]4=/4o:1q!_蓃?fV5eC~IrqpO^]ڔ*? ߂5i.[0sG81J7P7{M$J27ta9oJ}Tu[~D|9`p(apTmBAnTfQIg^&W@J? 0<8:.v'x#j.:K)PS,N5j@<80r%]fk$3> +5?H%z!|B#'tR)o@= ͈Ŕ #%!&1F+F"/550*)^%cg Z(8 #ݍ3<@{6.u]+v;u_<ڄ1I|<{>rg8qBmsdp-wq5dNTDHVgFTQOZO@aI_pC[Og LbqYVgYRSaUFX`n`]?_c&j[aiYOq\Fefnmd5Zegbnpem*]xkqCgpigv;k3n8:S> q Av=*K>j>9a>Np)vӅstand021xjJdmjr_ts>ss6(X3\E}M$FFX>zEBJ0rcEzwGb?5Td[HW4fMj8il.et>bsd}L5tTpt8408fpq]soHPkvģ#Plt9~1|2VowRaqiQyJ[nShЉ**r2mτ ] ;zBI\ǚC4sԒ4q݉א<^Ո!`vF#(_rEPmQ*d\ˌBӆ pʑƏ Üo.ri؋iotzk_{9]|5^mcYѝiTP֚X՟desylXQc|wYV{3}+u-36:x2fWx=XMޏ~.D>q&ddjOT]ٗw,=z wy~.j.[/rGXD2dC85]1i5dGEmsGdpyCZ`}QjXSvvu(uyGJY[%sD7zR4P+\]iudWr~oCx|}Bv/CY;m[*b@(n_Ra8QNCR?=]o>\=NlbNru=*M;j>Bg$(j0G`f]D:Y6/ 4 tM]n pHg;. PT Mi`mG{Cs/9>>b>7x[kstand022|jJklky^uhEtq5(X1 ZCxL$EFV;zD?|J-r`CzsFb?2TcYFU4bKh6ik,et>cs6~L5|Spu84.9hpy]soHWiwĤ#Xjt9}1~2^lwZ^qqNkRVnZcω%*t n̈́ _"CuIM^ĚH9&iҒ;iۉ#֐DWӈ*WvH'2XrNKpS%d\ˌHx҆(gȑzď%œ$f5vf؋grywmdv4`|5`g^UҜfTPט[q`axvlWQhvw]tWty3x+q-37k`aiNS`ٗs$=u qux*k.[/rHYD2dD84]1i6dGEsqLfoyC[~d|X~kXVvyuIvyGJY{Y%pD7xR4P([^izaXrkCxyBs0CU-949.v$x"j/:K+NR,J3l?<7.r( \fj#3;2)0?D%yyBrrW%o9=0pNJo{ "#/~r6?,?{%>./,4w^,e!a~\$4 ƍ%.*sCqYvqUЁ/w<zob qha(k-)agAuERKRc R Z _r[D]h]\McOOL Y7Z(a)S_ U*UL+^F(_*#]c-eD%i$.p4gL5ee6k0j/n~7S9 t>si#,k0Jcf`D@ \:4 7tS^q nKgA4 PZ Mn`rHCv/:9#>9>c><@stand023iJrnk`uhMtr4+[/ ZAuK$~EFW8zE;|M)r_AzqDdC.UaXDS3aIi4im*et>et6}(.Tpy84/9kp^hoH`jwʣ#akt912fmwd]qyNk\Uncbω%Ǔ,y rфd"MsRTcǚOA0e{Efۉ-~ՐNU҈6SvN/=UrXIpX%h^ˌPv҆3cǑ&vÏ-œ/b=~h؋kwymjv4e.f i_WӕgTTؘ_qcd~wn\Vovsct\t{)z+s-.7]D4dG85]3i9dJE{sRioyC`|j|`l[u}uIzyLXxW%pE7xR4P([_haYujCxxBr0CTq= l{FwtRul[tM{ !yrsrtQR=^{OPBsLN8q2b(_ȜHtByB8$zU)|(vwD'?z/%mi,wo;uAnMq6o4K`ILe?__,hw;`P1_[8G$@-:u5:)x%x#1:M+PU,K5lB<7.r+ \fj#?;2( -?B,jwfrrW$o6>9nƊi{&{+%8)yq??7?t'%F.8,?tf6~e-~b)|cu-3 +/.pCoY uoU~/u5xme otfa!h-5]gKs7PH PfQY ]q YC]gZ\J^ NLIWFY(`P_TS(#Z?],Zf'aCg!*l,cI/af0g0l-n~7T7x?rt[^w nRgI=PaMu`yHF{/:V">F >b>T6۩stand024hJtnk`uhOuo5+X. U@oJ$yEFT7zB9{L'r[@zmCdA+QaSB{R?[Hg3bl)et>et6|(.Up{84/9mo_hoHajwϢ!bkt912imwg]q}Ok_Tnfcω%ϑ,z qӃe"OsTtUcəPC3c{Geۉ.}ՐRTӈ9QvO0ARr\HpX%i`̌Sw҆5aȑ(tď-•2_?i؋lx{mlv5f.h i_WӕhTUؘ`qceyn\Wqxset]t|){(t#.7aC6dK76]4i;dMF~vSjoy>a|l~al[t~tIzxMIXrU,nE7wR4P(Z_h_YuhCxvBp0CQm^1n(z&:q9 l~CwwNuoXqMy !|owowMR8^yOLBpLJ8o2e(aɜItDjD9yU%|#uwA~';w*ki'uo6s;mHn!0k4D\IEb7[_%gw3_(][7G$A#,;u5<)x%$2:O+QW,M6lD<7.w- Z c"?:2( *~?@, j ufwr#62|>;lLJ f{)"}{/!'9.uqC?$m]r!kU {/ q5tie ktba d9YiNq7LG KfMV Yq UCYcV\F^KHIR?U'\K_PO("V?Y,Vf'\Cb!+g+_&.\D0b.j-n{8Q6x?n=-K3y;8l#,q1QjegFJdB@>]^y nSgLq?WcGx^|HF}/:S><>Ub>f/stand025hJtml_uhNun5+W. S?mJ$wE4R6s?8{K&qY?zkCd?*O`QByQ?XHe3bk)Ds>ct6z(.Tp|8?/9mo^hoHaiwҡ!bjt922ilwh\qOjaSngcЉ$ӏ,{ pӃd"OqStUbəOC3b{He܉.|֐SSԈ:OxO.APr^GpW%ha͌Svӆ5_t'rė,•2]>jًmy|mlv5h.h lbZѕkTWטcqdf{n]Wrzset^t~)}(u#.7<{2h]y+ZRߒ}*CKnefpNZiٖx$+z vzވ}*w*d/| P<_1!I뇸9ԈaHH}uO˛Er^>dC86M77[5i=dNFwRjoy>a|lalZt~tIyxMFXpU,kF7tR4P(W_h]YueCxsAl1CM=nO,d}A(|S<||o:yb)H,z~CYFm4z)~-"H3~4sLc79si6}F:XF9m[1j(w&5q4 l>wxJuqTmMu !~lxkxHR4^vOHBmLF8l2g(bʜJtEjE9w`!{tw>{7s*ji"s62r5lCj!*g4`/X_gw+` \[5F$A# ,;u5=)x%$4:Q+RX,M6lE<6)w/-Z; c"?9/& &zC=~, js^w r!6.y>;kȇ c{)$y{0!&70pqE?@?xt/#G/>,Flf>ve:qb5zc|u73{3*6j>(j]n$hU"v%!l.oeegt ^a ^#;UiPo7HG GfIQ TgPCT]Q\A^FCIM?P&VFUJI&!P?S,Pf'WC]!,a8+YG/VD0\.i,nz8O5x?m=-I2y97k#%q1QkegFJdB?>^^z nSgLq?WdGy^}HF~/:3c>QO>WMb> Listand026hJukl\vhNun5+V. R?mJ$xE4Q6s>8{J&qX?zkCd>*O`PBzQ?XHe3bk)Ds>at6y(.Sp{8?¢/9ko[hoHagwӠ!bhu922ijwiYgNjbQniaщ$Ԏ,| pӃdOoStTbəOC~3`{Hc݆-zאTQՈ:LxO-AMr_DpW,h`͌Tu5]{&oŗ+Õ1Z>jًnz|mmv5j5hp!h`ϝrT[Ԡfqgh|l^Xr{wet_햁)+x-.7;}2j_}+]Uܒ*F>vGhisN\kٖ{$)~ {߈*x*e/| Q<`1!I뇽9ӈ`HGxvM͛Dr_>eC8EN76[4i=dNFvQhoy>bla~mZttIzxMEXpU,hF7rR4P(T`hZZuaCxpBi1?J=nK,dzA(|O<||l:y^)D,z{CVFl|4w){-"D3{4pL`79sf6}B:TF5mW1g(u&1q0 l:wyFuqQjMs !~ixhyER/^sODBjLB8i2h&b˜ItEjF9u`{sx+x%$4:R+SY,M6F<6)w0-Z;c!?8/& #wC;{(r^wq 6,vA:jɇ_{)%t{1!%61lqG~?C3rt1$G/?,Hhf@qE=jb9vzb!tu:3}zu5*9hC+i]k'e`#r%#g.jaecv"Zb W#<^^{ nSgKq>WdGz^~HF%:>q>A1b>eystand027iJthlYvhLuo5+V/ R@oJ$zEFP7s<9{H'rX@zlCd;+NaPB|R?XHe3bk)et>^u6y(.Ppz8?/9ioYhoH_ewҠ!`fu92/igwiVgKjbNoi_҉$ҍ,| p҃cNlR}tSașMA{0\{G`݆*wؐSNֈ8HxM*@Iq_AoU$g_ΌRs3Yt#lƗ'Õ/V<~hڋnyzmm{9k5ht!me͝xU^Қhqhizl^Xpzwdt^햃3+z-.7;~2l_+_Wڏ/F>|GjkuO]lٗ~$) ߂*x*d/{ P5_1!H8ӈ^HDxwKΛBq_>eC8EM75[3iaj}`|mYutIzxMDXrU,eF7oR4P(Q`hWZu_CxnBg1?G=nH,dxA({L<|{j:w\*~A,zyCSFmz5u)y-"A3y4nL^79qc7|?:RF2mU1e(r&.q- l7wxCuoNhMp !}gwfxBR-^qOABhL@8f2g&`˜GtDjE9t`zrx:v1n+gin6+o.k+x$y$59S(SY,M6F<6)w1-q;c!>8/% !sC:x(p^zq6*sA7fɇ[{'#p{0!"30gqFz?C3mt1$E~/>,Hdf@lE>eb;n{b!nw;3szu}5},;fC-{h\h(b`#m,#a.e ^d^v#Wb O!r>za>r} stand028iJqglWvhFul4+Q/ O@nJ$yDFK7z6:|A'rU@zjCd5,KaLC|R?VHa3bg)et>]t6z(.Opy84/9hoWhpH[dwѡ!\du52/efwfUgJj_Loe]҇$Ύ,y n҃^HjL|tM]ǙG:x)Y{A]݆"tאNKՈ2ExF!:Fq[?oO$b^ΌMp,VtiƗÕ(S5|gڋisxmht9h4cslc͝wUZҚeqee|xlYTjyw^Y얁3+w-58;{2i[~+]Tڏ/F>|IhitOYhؗ}$) .x*e/y Q5_1!G8҈\HBtIϛAq`>eB8EM75[2i;eMDrKcoyC[d}[{mUu}tIyxM?XrU,eE7oR4P(P_hVZu_DxnBg1CF=nH,dxA(xK<|xj:t[*{@-zyCSFmy5t)y-"A3y4mL]79mc7y>;QF0mT1d(q&,q, l|6wsBujMgMo !yfsesAR+^pO@Bg+>8e2g&_̜FtCjF9r`ypy:t1k+fil6+m-j;d$!_C0SO3]"S]ex`Zqu3F'D#!,<v4?+x%y%69T(TY,M6F57=x3/q<c">9/&1"pC:u(m^xp 6*qA0dɇX!m+!+~+dgBw?@3jt-$?|/:$Daedw=? ~JkDFEHEiz7b 43J?4:H?#4c42K'>?;&!Be+FFD-P;/EH4FE4J*e,nz7I6u?l>h`>&_C*stand029hJlgk~Xuh=uh3+J. I?lH$wCFD6z.:|8'rO?zfBd++E`FBzQ?QH\2ia(es>]t6y(.Opz8‘4/9ioXhoHTdwѡ!Uet52/_fw`Ug~JlXKo_\ш$̎,s jԃW@iE|tEVș?0wX{8\݆rאGJՈ(Dx=1FqU>oF$Z^ΌEo"Utgŗ•R+{gڋblyxmat9b4[og]ΝrUSҚ^q`_uxlRLcywVR}3~+r-58;v2dTy+VLڏ/F>y&bdoORbؗz,)} {~ႃ.y*f/z R5`1!H9ъ\HBoHЗAqa>gB:EO75[3i=eND~rCdoyCS\}U{lOtztIuxM8XoT,fD7qQ4O(Q_h}XYu`CxoAg/CG8e2i&`̜GvDjG9pYxoy;q1i+dij6+l,i:b !]C.QO2\ Q]dx`Yqu4H'F##.>v6A+x&y&89V(U['N7H59=x6/q< c$>:*(1#mA;r(k^xo!6*nA&bȇ Wt l"! }#cg;w3:3 it&$6{/2$=ae6iE7ep5i|pjw2) hyvs,w(7veC'giaxbt"t`cd'W*YwZo|WvoVnA.IiEe9^;_XAo Y?un4!6I#vBo,D7=+M10AJ5D64G*_+nw6B5p?i;/83y%9a!,e2>\eXD5V*'%tM^o n?g7q'WUGo^tHFt%:O=S=p`>QY{stand030iJjkk|\uh9tg2+H- H?mG$xBFA7z*:|3'rM?zfAb&,C_DB{P?QGZ2i_'et>`u6z(.Sp~8ĕ4/9mo[hoHQgwա!Rht52/]iw^Wg}LlVNo\_ш$ю,p h؃S=lAt@S̙;*yY{3^܆t֐CLՈ#Ex7-HqR@oB$Va:@qVt iė •T&}jڋ_iv{m]t9^4WlcYϝoUNӚZq\\r{lNH_|wRNz5|+p-58};s2aPw+RGۏ/F>v&_amON^ؗx,3{ y|₁.}*i/~ U5c1!K<ъ`HEmKЗCqeKkB=ER78[6i@eQD}u?goyCOX}QlMtxtItxM5XpS,jD7uR5ĈP(U`h^ZrfFxvDj/CK>nK.b}>(|SB~r>ob1wG4xCYFm7"y+0!E6|1-oK`44ok={FAQD2mU_eL>8f/l&c̓IvGjJ9pYxoy;q2i+eij6+k,i:a \C-PO2[Q]ex`Yqu5I'H$%0@v8D+x(y(:9Y(X]'P:K5:=x8/q!< c&><*)1#lAX VMUI9SDto?ZJ/GFG<-L=C&[E5^9Aj9R5XZ|}]stand031iJnqkcth=tm1LN- P>tF,AFG7z1;|8(rT@zlAb,,J_KBP4YG_2id'eu>cvoz(.Wo8Ǜ4Ǣ/9ro`hoHUmwܡ!Vnu52/`owb\gPlYQo_cш$َ,s kނV²AqEtDVә?-}\{6b܆x֐FPԈ'Ix:1KqVDoEǿ$Xf:Dv Zt m×W*nڋbkyl`t9a?Zof\ΝrUQӚ\q`_tlQKawUQ}5+s-58;v2dSz+UKۏ/F>yIbdpOQaؗ{,3~ |ႄ.ǂ*n/ Y5i1!P@ъeHJpOїGrhAoB@EV7;[:iDeVD{DlozCRZ}UlRs|tIwxGxE^Hk<"05!K:1/sJb3F{xEQIU f9"m[5nH{|Gh0w/eC(PI}Y^/flNu$ds"PlPH+[qQ=^dKB7j*q&g̓MvKjN9qYxpy=**1#lA=q( k^xp#6+nJ$idžZtm" !eg:{383iv" 4/0$AW;Yh5q%WVGo^uHFu%;:=3=wi`>Wjey4stand032iJrtkfthCtu0LV, Y=}E,@FP8z;;|@(r]@zuAb5,S^UBP4cFg2ik'et>fuoz(.Zo8ɟ4̢/˜9uochoHYpw![qt52/erwf^gRl^SoceЈ$ގ,v p[ƲFsJtI[טD3"^{|IgisOVdؗ,3 .Ʌ*p/ [5k1!SBъhHLtQЗIrjAqBAEX7<[;iFeXD~IƉooyCW_}ZlXrtI|xGEWR,p@E{O9ՏM(]`hj[rsJHq/_T@mT3a˄:IcKFts?zWADaFm="16$O;/*vVe1F|}HVLW fv<&m]4vq!HrM[4w0_G.FN#}Vd6Zpw$^x(GrFM#z,[us Q=]eJB6j)s&i˓OvMjO9qYxoy=q3i+emk6,l.i=**1$lA>q( k^xo#6,nJ+ldž[{ m{""$%eg=|?:= hv$ 9/3'@ee8lE8ep5c|oex0= ]{xo'q&2gfC%Wli^cv\aby_&pT,mVZ\:ZX}S[ c@M3NiIm9!-NE!2U;+Qz6GZ@S?P5 6KtOBEQ56S;),Hg54JC(FM.%?AAI=];BG:1;@Z:D@C0SG.-P=K(NL;-^I5]b=g`> Q_?pstand033iJurkduhIs|0L_- b>F,@FY9zE<|I)rf@z}Bp>-\^_CP4lFo3ir(et>csdz(.Xp8ȝ4ˢ/–9soahoH^nw!_ot52/ipwj\gPlbQogbЈ$ݏ,y t_ŲKrPtN`טJ9})\{Aaۉ!xԐPOӈ3HxE =Kq_CoO»ʿ$af:Mv-Ztm—*X6nًks~lg{9h?bw!nd͝x`ZҚdqih{l\Uiw^[둃3+z-58;}2l\䛁=^Tڏ/E>IklvOZߓhٗ,3 .ȃ*n/ Y5h1!P?ъeHIwOЗFrhAoB?EV7:[9iCeUD|OʼnmoyC\c}_l^stIxGNWS,i?duM7ÉK+[^hlZuuF}Dm-fR>kT/i}:LsjD|?g{4g_8}A ^Ek6 +G/$O7~-/sJ_17m?n]ETck@k]5ttKsGX8w0SO"}EU{Ko&arOw $[Kw ESz+ZqS9^_A@8f.q&g˜LvJjM9pYxoy>q4i+emj6-k.i=a "]C/PO4[ Q]ex_Yqu6K'I#%/Av8D+x(y(;9[(Za'S;M5;=x8/q < c&>=**1%mA>r(k^zn"6-nA2jƆY{k{&"+*cgAz?<=fv& ?/6'Dde;jE:dd7b{odx1=[|x~o'q&1cfC&TmiYevWbbt`&jU(hXU]:TY}O\\AM8LiMk9 'PE!,W1%Tz/IZ:U9R5 /MvGC?R31T;(&Jg3/KC'@N*#8BAB?X8=I:.5AZ7>AC-NH.*I>K%HM;*XJ5U=V"iL#-_DB1^J<,hH(q,n2Y4 ~C7*L6<;r(r2L"geeDCc853tY^z nLhDq5WbGy^HF/:z >=^>E'q.stand034gJvnk_uhLr/Ld, h=F,@F_9zK<~O*wk@zBbD-`^dCQ4qFt3iw(er>_qdz(.Sp8Ƙ4Ţ/9no]hnH`kwۡ!alt52/klwlXgKldMoi^Ј$؏,z w߂bNnSRcӘNImoxO\iؗ,3 ߂.~*i/ T5c1!J:Њ_HDxJϗBqd>jB;EQ76[4i>ePDvShoxC_e}akbssIwGSWS%h>EtKFILX\hzg[uzpE}zBk,BN=d/l&c˜HvFjI9o`vny?q6h+cii6/j0h?` $\C2OO6Z#P]cx!^Wqu5K'G#"->v6B+x%y%89X(W]'O8I5;=x5-q< c%>=/)1'mA@r(j^zl"6.nA6fƇV{"j{)"0-bgBx?==fv( C/8'Fae=iE;dd7b{odx2=[|x}p'p&0ceC&SmiXevVbbs`&iU(fXT]:SZ}N\Z@M;JiOh7&PD+W1$Tz-IZ9U8R5 -NvFD>R10S;%%Jg0-JC$?N* 6BA@?X5<9t_^} nQhJq<WfG}^HF%;q>L=V]>a3*Xstand035fJtjjZuzMr/Lg, j=F$AFc9zO<~S*woAzBbH.b_gCR4tGw4iy(eqA\ody(.Pp|8Ó4/9joYhmH_hwס!`is52/jiwjUgHkbJoh[Ј$ӏ,z wہcNlSRdϗN=x-X{D\ۉ&tԐQIӈ6DxI'?Fq_InowO\hؗ,3 ߂.y*f/y Q5^1E7ЊZH@xwGΛ?qb>gC8EM74]1i:eLDrSdowC_d}ajbsrIwGVWU%g@ErK?JLS[ho_\tkjEjzCj-CK;mvL+b|<(WY@~[x=Ni-QL0x~AXDkj5"o})k.!uF3}0-qK^37Os;TK?RDa6k|U;fkLez&U3ry* jHAvAOt<]]pGzr #NsHsANQv)\{rO:fb=9a2i&`ʜFtCjF9n`!umzCq;h+bi$i64j5gE` +[C9OOw5A+x$y$79V(V[,N6G5<)w4-Z: c&>?/+1+mCDs( i^zj$63mA6dƇW{#l{*!1,dgBy?==iv( C~/9$EbfR54MvMDDR.5R;"+Ig-3IC"EM*=AAG>X2BG:(:@Z0C?C(RG.$N=]>ʍstand036hJoei|UtzJp6Lz3 EN%GFu?ybB~e1wFzIb\6pc{IZ9N:i.erARodyL3Jpr84.9_pSsmHYdv̠#[er9~1.dewcSq~Ej\Knc[щ%Ǝ,{ y҂eIlNRfɗN<})`Ӓ@a݉%|֐KMՈ/JvK(7JrX>pV,hW̌Nr,\ɑrď%'Z8cًqu{ukh撊9iFf~#ujNz`]Қdrrpyxjd\h|vaa둇5)%58;2sb䔇=h[ٍ.ECIstyO`hؗ,3ށ.o*_/oI]C2ED70]+a2eEDkTYpvCbe|\|iXets(wGcX]-]=EfJFzILKZhn[ZtneC}nuBe+B~F8mtJ(ir:LWY>~_v<Nl,OO.xz@ PAkn4 r{(&n-#rD0u.2oKW/7Qt:SLfe==d2a&[ʜBt>k?9#m`'s&kzIrBi+ `i,h6;i>fMa!3[?DOOGY6N`%`x2['Tq:N$F#!.>u5@+x#y"l39S+SV,L2lC<<)w12[: ^&>@/, 0nCGt, jg^|wg&69nA2iȇb{"v*!0(kq@}?;?ut)'B/9,@ff8pe4np1n}ptx1= n}}p)sI/pgD"cnile{gcbaI{U+{Xf]:hZ}_\nAM2PiJi79Ne=V;8Rx DHq NULR5EMt_CQR)?R;7Hs(>IC PN.JABV>X/KH:%FAZ/M@C']H.$Z=AYL:&gI9h=V!yL-)nDB-kI:*vH(2n8u< C<*h<[B#(0f}f{DY{SK O!{k]mcsWK Pv M`HC/: >>@[> /stand037iJefgqUssEn$wؐUB.e<70])a,e@D{kRRp}vCjh|U~hXeut(wGgZe2W;d^I7rHLGYsoZWtcA}urAb(BD6mtK&ak7LZY>du<Pn-OR.xv> M?ku4 vz'&s,#sD.q+2nJS,7Ut;TM<QfY?hxZ cqIa&N=rq4 jAKv;Xt6fWwGvx #Iz"Az:WQo4\uxODfi=Ch2\([ʜCt\FTPGVZFO`4^wCZ8S#~@O$E-!2?u8?)x%x#l08O+RS,M1l?<<.u-2[^j&?A2-4pCJw,}je_zrd)6?o>-}̉ |"-$"0 !~r=F9F +,A.:+8sc2~b,{i*{mv24~{ q.vL/}kEuphe{eacLW) X}^Yt]$BI&chDt6SLeUTTPv aFjTeQ9eJ}BiR!QSPGr"QIEeN5bABp>Y-\K$ZA[/]CF+oJ<)m?A!mM,xL8!>V+O22~Gf4yM4L)8n>A %CC*pAfG)("+>Z>\@nstand038ziJWogb\rw^x<Gq.FU/xx> P>ko4 o|'&m-#lG.s*2xqJV+EMw;LQ.v)x%j/N)TT*Q4l?:;5 ' ]fk$?A1+4w?J*|z h_%yr(dP+dBu>'ЉŽ#"ã".,# 2 u9E5E++@5;).a*i hh 07~t 3|?-odqs efZ(g=)[5Z_Y^4FLsT-zK&~AX2}CE1L:2AC%N4O0AJ8T >KfX>.O8stand039siJIzfQdrw3o8>4'F!R*KEoBx_D~`4uJwMi\7md{K_8P">h2bqCUppu>7\]kmpsE5mo\mSdwmJ1*2qv6<5;{Wz;=s.;X/xy> R?kj3 j~&&h,#eJ.t)/rrJW*EDz;BT9A~A:5z!v-}&y+I=S&S)T6j=:6; ` lfz 9= &14E2s'sB,{X5kS,pC3*ԉ*ϵ "ܦ!׎"Ű5ͨ*.'; t8e2Eʣ/˓)F9??(Z%gss06ɀ({$9Ă4.qbrh$h[7n4;a9/a'%ay ]#_xKL=w8pDaKy FBRP|MnF/F"PxKy?W'Cb+M1Ae7AV6Iy4@W>Cd>NECD2OyCRmIFAJZ PPfJTkQV96l;~< !C>._?YC$LT>((}stand040ch@2f7gru#p5>x0'~B!N*HE^@xPAO0uoHvKiL2aclH\8M"v;h}/b|pCgTqit>xEDbzyimkE9eofYk9hvlJ*qmdy89%*tOi׃5yL݉335{ԁ(vɮ(%#TDzk֘$@͞Y +BC1x1U! Џ&yvԷ&?.mbmQ݅"&J 9Þqwۊ v}tny 81.(MY}ӜoԗL/{!pydE5dm:*E-7gfA/IV s4d1$6U4Nci}CՊ"fThttfy*gWQu ys=|vHJW_2SGv;+o.)S/}xt>'uL?z[3 [x&&Y~+#UD/n)/dkJP+E3v:0P=aN^3>zYX AoI?~&'=rQ3 jKvWt e2uGWv #!y"xVRO3\WwOmCfvh=nBvg2U=qf`Uďv@x4o5=DGBYF CAc9pQcY?c2mZ?TRn&[@8VIA7~vm;z@r }WcC68Y$tb.}p$y%nB?P(N)vSv4y7-|Y}"@kFq:2":5q"F.`:H'p8<.ׄ 1$*$!!ܴ9۩);,F ˴5b+b.ڕ3J8?ͪ? qsw rۓ*͐p烓2%8և7,sbs"n(kX@u9Gi>j%-fx.d*bv[T3 v1m"E\KxH0GS#T(Ph&KDP'-Sv&Ix+@Q2Bc6OlAEeJHH>JwABRIEbIQlTHE=SzNWh[O>Ua\VfSXz[\8x4l8s8 D:.M>hJ>5`Аrun001~h`\ys\bx{jzS+SC3W9 q.Im,^PKKO>G\HhGrX"[I9ff;!S?mH5Z\ld{DthulBWd{fvTkHwbf6GmKxug|wd`f‹3[Nm]όqoryq~؀|FwF8oLL}',!ㅬ#/ß֊ɼ.x~ªK~E̘9[y؄!$ǿIGm݉ˋ 萴"vyIubE~:܇?הKɆRʢМۉC؊<Ҙ%ѡ' ʝ vhqi{shxvxzՉ5ϛ&viܓ0Ӣ$nmorlZzfى<وCLJ@ӝ+totgr;u)uom4o6ΌQ)l.툮O<6}.}\RBa3yc|}kƕ5c*\%q$h|DPv<ј}*ܟ8Zs# EzRm^ɚ-`sk'e@eV`\:LIXnLd^e2B_sqZS[CiEYD8>BhG3p]W/U3m9i'O&iP$DMsu>!q8,v:@6eLg3.JJn1K/uL2AhZ- n *|,? Z:"jHrS^t Iy"trNRU=e{IPFs!*N/q0 AF^(\Bʒ/h9&B]7#.hy19<52>'(8!]3A!e%_?(@6|%?GA'z&WM1cn9v?x1{%k2ED=?7O+9}/l/[u.ct} oyu2/ uo[ B!y& Є%ˬ?ם4ߎ-ެ%ŞdŹF:ٮrǔr#ϋihaȳΧސy"Άq" ̓mm]pO~$rUۂm{h rwjPyvZDXYMf+dcaf t-dWVX\L[dcgh6o.aXc>fpkspniXk[z;svnFhXokL9p[(7J9*:!]Z(KIOHN 8 O*@!/''.q)-[9'$?I.H:v i(>jHI~" %}O^V>%>d?> o(run002xpk`PjvSZt\yX+QN:f8$'Iy#]aK^S PPmCkx3gOQwU"lE/fv6!a=hR8qSpbs?vgka`Qb^xOkCxb^EDmHys`|ldWX|~?MyJiWogdn}ǐe⁧~qDksDv7lK•L{'( ُ˫-Ɣݦ0 ߍo.ϜKtDߊ7Rj܉#̼$۵( cވ| |{ӊ!kj؈Gj\҅Do7wB惷VxPݐ͎zC{<|*'͊ݎ iheinhhmvmmz5&ji3,amduaql^zM5dpsChV?}Wf|Rhg1xL(wPqL liZwcau\mv~M k"c|c`PM^O^B}L^8|2=CU&Q;Ҁ+h7'JY,$ak-92/2;$%7%Y8K$f(U:'3-sr::e$PxD,[b2r6u+ k.D>K:FGI3ƒ+m$wYm_n x dr&|  r6]@z;Ʈم$KȭKͧ%$_ĻJΪ4wsռ#cži\|ŀn~aɧ{ճ|q~Ӧ;b̅X{ڏ!܇QҐbڄi0სyr9y\U^_f&lg\l"t-hUXUfba`Dh+ZXHYefZdDggXq3qze@cipX;p`%DW>*:*X_&H\R:[T 9,N,,U(A .>r.=N1&.R^eT>ˉlrun003vdU^jj_Twv`n1J4&A!߰E+ݞ>eHK{@}JxǔGgzA_KT6ĶI!?h3a[m_Bnavh@YdpYzSmJ|bi7ImGzk]{vhTNy3NwsRpaьq a{c}x`׀hՃ~}4x{FƁ7;9R )o/X..邓$΃Q[Jk+{OogrWǗ9f0^g#i6-r!q3al AhSq^ړ-_iWq'm?oHXV0nXAexZKDyjL>_F]s>Za:cI}gY47t@S?}W[f2MhRg17xL2&(KqRH lTw ]uh&|MK | z \PQI^JOj[Bj{LkZ8kz2C>XM8}*m5.I'U+ $!ci3"C57 E093UH(4C-H; .*z78v Ru?+^c)o.|y$xm2FB(>?H&.x,oUsA~w E ~ {[7 ` >iɅ$>u͛>UՐ+nϭ$nfA9bdzcwHs]ܦ#Q’cig\YS|.ħ~˕<ܝAs3]3Iǂc)u 9x"+sLseFgbHl+/mw3m%hvBN>fjƒQRVsWS^XZ[,Y$WvJrJ E`OaHU*L!GwB'A^0Ma3D_(Qr1Oq?LKBTn8IR2Lw>Me8lƙ18;-_Ų2=JK H3t! }#Z"cX$])EW6`qld,yK"vEyNTc=8O>>jPR>fHrun004lVouxz\}pȯA44(D ƾX/ƫVo?t;,JtRh+i IdP"Az8iikUHtiʊj@`eYzWmWtewFRpLz`}hTuߜ=jVpb̌r7\׃~x݄?ڊ~C܄9y(Ӯ( $ǯ 놿焔ڪ;%Ѝ܃ض(ꋰF5Qk "Mej ׀āԒ!oyۓ(p^ז5v8CKRՙC<ǀ/'̑ݖ mhiiqnkhpvop9'na0$gmjҡfZufqO]e1pN>cSGfeFKzCdzfWk|Y[YZiXO]IDqlb=HGS`Lm\ 6hX6OXfkLdFKkOwO$CtEGxJ,EBIoYj934m2OWO9fDl`2CI_2Q1]C>i'^.Ap=M~>ACx>+iJNjUS_YvE|0,uNtSSS@,~0SvNQ^sKBKWK5Ń'i42I*T+$%^i6"G6l81H178SN(8B4O@ /,t<<&PC/]~,0$i5CEI?>K&-y,dT JwD  }  F$T%Kg:ԅ$Ȳ>դ>ߖL׷$fŸA9ϼw}s!ʙfi\Ē|mˮ~`ϡ|tvǘggtLpЉ^Q·rPۓTL⇑_}_PvcSz&IzHAj5fH˃ ܁h|,邉(}[#/w +zkvhxr&s\oP$m%jhj dX/ia%dT.qz3ks/fNAhd2c4hz:d^;yʢI9Ԟ.6ͽH08|7׹-3֯(  ÎpŜo!ǔ cؑywTKގc>6&2*(>> ?> lMrun005~mS]xvgcv[2A*&; J+HdwFmBj4}M}Nmi1fK^8H"Bk3irg@NsieJeeVzXiaofǀFYbOh_}fSa}|¤=WXb_6qDu}|x{Y߂t悮xȌ>v>Ԅ4~&(y $΢;ƺ-أ8%w÷&ҐA٥?Nm䋩!"`ly y|~֎!lkې&n^ѓ?v7A菻HفPЖ|C{FdRd.>0i6NPJ.`Sg]0PE^-O6XBLg&\7@&nI&{K BVx>9i"H]jTg/[g uXz>,(r]#sgSgA> ~BU/w/Q*]r*K?KSH2ă$i43I,T-&'^ i7"H8l;1J47:SP(:B3~H? /,t;;%zPA.]~*.#yp4CC(=?I&+y*d vTJwD} ! }  F%T'Kg:臙,߹*$˶?+0ɎZaңCdDʡwzvuŜuyۭʞbq%ؑF}\uӆv{{X?qFx {viuvzok|V(|h_WYf\p^]{^Yhei_f]bian^mmPi^OhJUqVDhMVkR{LppGyF@~SEwJJwXiVbvS\9PYSiTC:9;1#D5)jCh>K;y |bes #f`Ys[jgza`RH]KE.& >>O>ƮH]run006eU_wiPbapuUyR.A:*&C; c@Ld=e+CD1v:IPDi1Wa"8IoJDLD"<:h?,aonFKriiAcEp[zXi]{e7VpNzi_vjTMĤ)MsVp]όt1\c}‘wdۀn{܃?Ŕ{?9((g_ ™${ -um:%[`ჳIȑ?ǧ5Sk}"&hMeމ݂;Ă ~!qk r օzFƅ@OśA9ޒ*֛' ї ohkatomhrxqrnل4Җqgя3ǟ'jilviqw]ބ4ل@TԘ+oepgm9qLqki184:G#n$lL1'烂"v}KUAc)kPons^ś5D'^Zi|9Ru.̡[.\hxŎ"Khgq_ؓ-Ylts'pKsHLUOmKwhFuNFhH'CHzuB$q6&u<%?=d1.h!VI2emN }JOM!^nA%h[!9wn&Gt}(YBr<m[I/xGU#}U]<[vz#^t2It&GT#v? Xu~T`vIPEr.>3X'~Q8{'m4-K$`0 'ah4B862D!+8-`CL,D/JB'81!AA'){RJ1ds4z8+v!m37E+=9M,2v,n&]fx d(~{! 6`Ah;vտ%/#۸в5. εa¡aל9n7~rǘ̈䕓ϖp-ُ9ybwWur]9r:s$nhlizY*i×sI_PmLKQXxT6QWWhJmCPDBR8H>MMPmGTKFW8N?WiZpU(dX@Zi^5<2l]282KB[2)ABIKD;' *a.cD #[? kwPBH>]XAYEY.Z9>'>>[>`g8 attack000kh@eVgeEtuVl0>,'=!H*BEs9xi;h*uAvCih-|^~CS7G4h)aXxF6upx3_8TGk}QnK8pq,RLSaȞ_SBF:e%b+pt7Ym/qz'a~8bfkb9kREqY^mfWur u=zLiUV/8@d=N6LL=v2_w_E[cGD|fSC}B-Dn-:kg2*iHщ8GdB24z62tUp5{%h*fV$g#i4m+t{/n\-sDz3n-]0a5\@9gcBgAIn'B\WDaK]AIecQf??hXLk\Up)RtmWjJPh[Wm6-k34 D6.f6f:=1~!aew #haYv[ khwbaRH]AE.b=>[>ikd'4attack001th@aagbMsuTo1>-'?!ɫJ*ʚDd9vtha;OZ,KC/v]@';Bzg4 `'If,#u40V-2TA=/6Ua9O@<;c[/zE;kYLifIO-r{% j>:v7Dt0QZ^G_ #Ib"?a7CRy%\`O3fS=3S2~6BzS(\VU?~T-zheY$`kt2*~$ |suyy*4- 50,dW-J\*,Y?AGZB#E;3IM3H(7/T87]HI=2,zS2cWB>e:eTNK<=K0hM5 &?!%Z *9p}C(:X6 P(:}//@}rp>a ]B(s!8`؁dƽ5ֲ52mֽ~ŮE4|ҋ[л\\ɡlyӞpjircFQȱCޞU捙e"kӘq{ ϗmՁ[O$Tהm֋h 儚"}с=Huo_nq'x={wX|#2wfPl(hcrque}3jTq)nesqxptWxXՁ8́vzfvW|h.kĘ45 Dű8.o6p;=;!ae#wnc] kwwnnRH]ѿAҟe.ӟ%/>>4[>f}dattack002xi_SfJuqbp3?-(>$K.Fd{:{x;w*CtFhy-` DWoI!6s+acrE`Pthy{Eq[mC\gw~Mi`nmOkRavF}pBH9JpfXzhijuu׆ORIVҐ`v6v7~Ҋ3?oѶ&cƚ+*ʛ$鉐21oވ\bS7u&iXZF\kKEL"WKH9Es8Fۡ[Б-X{-sQ+zՔ(k7fuk.ψ$WVwXxc1ZhPs,rFw>tUZ<@JpIX[V5cI_wXeUj[CoiBJ2er6?yp8-hTD=XU;em9[b)VG-tfE(w@Ixvp5'{e)Lxm-$k55W52PC<9[n5RI:|4dg)k@;sYLshIa&r|jV5vR@tMPh`G` #]dWbR?R|\aO-fS=-S2DRbRnCC|5l+[}6p2"\:D:)F,Ax=F$HR"OT+$Ic<`=] nI [ fVh0[+A@9M')I RSV$QAJ(fI Fr ikaM|,?h6Le:Om:\D&d'Nƒ-L-8ti'7s ]2jE"L 3J$)JA3;GC),4͊(u/ g#>>-;0dëoҙ׸w=\>hĺoattack003xj_QfGsq`p3?-(>$K.Edx:{t;s*C{Fhv-` DWoI!7z+a_rE]Mthv}EmZmqVY5;JpDXWU4`E_wTbUfWCkfAF2en1?yl3-hOD?SR;aj9W_)QC-t~bD(s;Hxsm4'xb)Luj-$g05S52LC69Vk5NE:|}/dc#k~<;pULoeI] ryjR0vM;tHMd\G\ #YaR_M:Ry\~]O(fO=(O2@PpMnC?{/i&W};n9aAH8)J,IxBM!JZ OY-$Mi0h +d NJTg D`m !Z15A(>i^>$I)Edw:}q;p*C{Fhs,_ DVoH!6z+a`tE_KthyFp]m1tUdzJpcmLkJZv8|tB<~͐L~8w7~Ӌ)3\ҰT—+*z˚ 冁-o2Zp܈<_5͐?|6Ɍ@v}p~%*=x(пKO l_x$f}?rnnsߊ}ECTIE_0*m,,|zwpzzjjw\c|y:+us;/jzlӘ|p՟tc鋗Ef5(omlrl䇋q9ulz>Hj9GֈHt$Iփ'[V^q\:]KclV72KI>N9>g/AqJuPv#eRnΛ`ܖ&`rZ/}Έ$SOwVzb2uVgPt,u?{>oVX5;lVLkfIV#rw jI3vD=t>N_^G~^ #QbI`D<Rw\}_O+fQ=*P2?OoJo?9w)c P}FGcOqR7*S,XzMÀ\"Kl$Oe0 Xx!2z'+t͊g [}Ftm-a?0ADD 4:7):J2>>)0SI+2qLUH8}51m?B7:Gn?RF!T'@3> rR hD'"<;@"*=C2 MC%$=Ї/rDi,.~J) 0̵oΩoٖ:0ȧhp͈$׮ߚ/ԕsxuɦq|벜%ݎ*ɐφrpPw&~.sV}srzqv/j߰bz"p޼[U\_*aFg!aQg0j`QU3P]YZ\`6NST7P[VYgZNؿ[PbmͺcֳY^ҽX͵\u/k63 D85k6o9=;$ae #unf\ kvwonRH]AE.eg=q] >"h_>_aattack005iBIf>jqSo2?,(=!I)Ddr:}j;i*CvEhl,_ DU6G!6z+acvEaKth~Fudn|vRezNpltOkFXw)wwB,}56lg^k_vԊk؅."ѐ |39}9zӋ)3AʭM@y(%nǘ rf#V29Mۇ0:ɐ>6:4sσ]a$|,LX&vռI@| \Mk ]x}>no{Ԍጥ7>TIzԞ7;K/,[t''zzkbzMtVu:(h1%zkgԡ}qc;Ef.u'nfs~懐5|z:Jl9H׈5tDՃTOd;eRΎdTerc9:I2N=Ai,@ZBrHw_Rc̚T١ZqH-vɈ RNzY|e-dOgt,w?}>hVW5AEpHSoYQ3^E_wI_V]YC{cgAL/ei758Bl68H:|z9eQ-kyD;b[LajIG+rq! j69v/Dt(SRbGyb #Af7d/BRp"\xcO2fV=2U2>Q8Dq=/t ]ʍJx[^eg[e5%g)szb}u$I(O}/"m!2*,ϊ\F pBcT3>TC C:29?:rJ ,h9((4H<"25N) [=%/MΈBq[b9*[& l/ղ8٦8c"^b/g:]MP=L]VV^\FJQO?L\TUaWZ^pcٽX^Wμ\w/k63 D85c7g9=;$ae #neZ\ kowfeRH]AȪE.ȫq=0>^>}P8Uattack006jBWwgMbrZoí2?,(=!ԴI)ӢDd~:}r;q*tCvEgt,`DϝU6G!6h+abxExHuh~4fo"owebkPpp:PlYSx1k~yC1|Ó0>l~alow֋v0||*9~9;*)4M=y'%nhNDr#/ۇ/׻|=7TG|Ӟ71E/,Ur''zmgzLtV{<(h1%kpաZe;FB)w&nmh腟.kSKVHه:o:?ׂ&L_f WFϑ}\El5ݓ:&:{Q`CbJ?a,:q%?z0VTU̠Gq*QgH#} hJzZe#_ZhWu,y?~>rWЭW.BDpHRoYO?oC_wT[XgXC{mdAM.eu9?!t9"H.h>KnB+R'XZR&i5o9B>I>B"`i,0Yl,U,z6a, 3-bʊxqbk%Å\r%Ӯ4ڡ9ߎ0y%̡pͽ7vɅaUʩ[єr#Ҏm]zmġiB٬QۣJ鎍\{w oӇr$ۊ;̀hjXnMv,kSxhmsu;jo!d^n@<˸S`VW'YLb\`%e<\MN(J]US^Z?IQM=I^SRbWY\dc}X_W\h/k͟53 äDи85l7n:ž=;$ae #vl_\ kwwmlRH]AE.|= )>b]>KPN.attack007iBVsgQ`suNn0>,'=!H*Cdq:}f;d*tBvDie-_CT6G!5h*aiyEyMviÅ4n80gzkflZo{:ZncVz:ftyC2~{/>~kinp{Ջm1)r}x&55s1,+"3]$VG "(B׀ gۅ^-}~L40Pij<Մ0"\&̽AĻGI~ۄoM>X"VylIjh :4>TGgҝ41;񎀩-$F_ w ukm]kEvMn<'i2$le՟Ze1F|B*cobh腎.mtRuOمPmbB؈OKrl 3N}FA{-qhCx.#qލ:BqP~LdpEbW9gR?hLPY8LΟ=AgMNiLg oOzbEo#OSgW|t'x?}LeVV.LBdQP6_M?lI_wQ]Y]]C|ahBU-DjB;kbF*i\==>W>Ok;;e+6O.v~gA'uHDzgp4 lj(Iho-#]B2`02|]AI26>l96Nc*`>I>=n0|EGH,q.WkS=U@YF_;{p4kC9R)yQx>o>ppaina001}_CtVQ~f_x^ޛ3?˦,'˩=!K*F66v7(u@uϑFi)X@W8ͤG"Œ6h̐,bmq7\ii}4iCdsqcmcou;aly^s^jrC]zf2nzYP}bn]i\sTzx5y&i{yw*y}~<~zÛ=K$$Ğ1 ? ArhLpn=uމ2ph$rrsv-t܃P}M,Nsmc_!_njWn\cmbvu8V}]}d+DW8kZ)ai;Lc:p7m+`-vo?'[@zt2 p(&t-#W/k-2jA^.6p5^7\fUza mLtITrOj[vatwhoGp#rp`RO\pHWfi=Wi2T^)JZB;Q:T{>W~m|ޟ嗜4/ |JO+8 Cl\wi ء)_03;,_7n1]v9C[)ۡb9]s?2Q3ӖQ:ЖR;ؒZFrM/oI>]T*cGAGHϐWO11G.r=#c%w_:_%J1u.--}* 5a wjkp qs(鄒# BQɌTЇ3ŁPDF:8h'5HEH4VF4_FC#./1ĕ8|RJ7ڀ\:Y>;M/ύ?:W=SKS;nj/k8Ʃ2 D901}3 = ȭ!ȍb̔eǯŒ\kwT I ^ > 62F>>B>Wkpaina002΂}CyrQl|{=?ҩ5'ҬI!X*T6BvD0uĖNvؕTi2oOg7ԨV"̑AhՔ5bs7cmリ5nҋjkqihjz΅glesq䃚?~ qRgl\nفXwۄ|d~YBnB}uE} ̃1_݄ʜ%-c{ !*Ӏ%w!.r"A߁3;Q?~w# mOex<}&)B 4M'Csv~~͛8~W76uqK#KuU5yC}L2U}9H%NL#~~&~R*!*G( & &th)rkw}'sh*v\vΟvv*~.!-ul5:"9qzMrbGqnLw+~2~J} 3I$2tIth/s}9t9tQ;rzAcFW5z4T%fGs eӏ(Rϗ)yfb8hl0,mNgAM]]MO݊?Wl/Jx%X=N\*UrXw.\yLy'bho6ΞqY$ג3Ԗ)bj/eLdi_8r]3bksmdnO{uNk5f_Ekb2ioGLkIwEt5g7vuN'cPz{? w1Iz7#_;r82qAd:6wBfDc^]zisLzI[qWjcvgtouHv#yvfRW cvH^ fo =^o2O[1Rb>H[S;Uț6OԀlbrUtP<~wt }+&-~́:3i P B[c!Tr*>s'2d. I-b3Jd63Q(R\>J[5ΆH6PI Cȉ,EBID$Hï9J6J47R8Y3W0ΗQ*ĪHǦ>!˳{=LJJѱ35ߪ&&ګ&|+߹?3:=4х)S&v#R31*@^ʝ|ʠ Ճ݆ə͞ $&# Ξ$#I%%N.G/ 9@74<3ё:jCͬ= %FE0=?&= ;Я!ґb՘dͱ˖\kwRI] A d0&!>o>;>@"paina003焁CyyNj<>׳3'طH!W,RE›DvF1u̜PvTi3̭sɥQe7۲U"ԖAhۚ4bs7_i5mފiqfkfzڅdlbso4͐ wReluk܁ov߄Ydkfre ݅1uᣳ%-G ƥ!F}@Ev@QrIY߀PdSeq# obwZvKM` \o'`pv(Ԕ5ÚVYQPuq_#^ulBz|NX cP%K!\Eu^CX?0J.h5Y*V\PbGoa<_Y2wtMv?%y6”J.=nI/l#χ.zM:Ҍ05ތ3+ؓ)ـU!ًt&y`, Nsed~vS} ~}H||R uS  |I$zS'#K#|V,K& 7D2!3I85ؖ9lBӷ< "FC.?A#+;Թ!֖bٟeμ#̜]kwRH]Ae.=.P>Y>7paina004~kArharuq2>α,'Ҷ=!I*EE:}<+uDvۖHi,aEV7ְI"ɏ8hҔ,bi|FSwi4bw^s\h]os:ZnVsfCy{卯0{k[nbӇp׋yixWatMxwWw}<5} ⡏*%lM ȣ$T9A}L;}2x߆i@@xr,Ł< vXz\?Kr Dm&igЃmU|~[wݗjspzqی ~ 5+@GQ5Ow~'Ufztmsnyrom^os^pxtv up !qllZmb{7 5?%}uomtv/u鎡rlEތ>ȋzZ v5ʈr>䉏Y1WB[6{Z^UCb)G\ՍSjW[:e9ce.sl3h[BWP>šX6qh?irl!RhdElUhWx |=蚃LXY.SAdXP6dM=Q_w`Z`E|jD[-fJ\jOHf`=Ia2G4vY&aRdBm6ko_"pNk{5tcnz!m$*e"m2 jn^F%_+[^](VOVWp(vQ3&&0'1h#~o7{6+[(iA,8R3Z7^-{q&j27?=?9zFLc8}y2lO x k~Wim[T{dyd9rz{i^xvcSzwdX„AZ,V,H-D]4f+m29PaGb4NFj6ZF=u=w&vz+B}^(Sdž0FuB#oRy3Ճ(wFvB@p^Ez.+w4~!uv:f>9|Nz wx |x"|wW~ 7w/tlr jNlXlO,m$bg"`S!cX)bHj+cW9gL9da4^M,]7^B͐1j7˶3D8.68L<Ƹ!ȏa̙e #[ kwRHݒ]Ae.=Tx(>6> qa8painb001?ruUcuMu D3z7,oK!`/[oQmuCTcVNkrLmqJdfFlFpLBz/T}ruuUm=mNb[EhfmLn|QvqjquCu?wFf({IK)g a,A<#;%v 9,WlrMz@>Km;~~!]oќ[n| xuņ"ik҆j]Ct9|CHxRېMÊǓ~?~1v%&͌"jhhbofhiwjn}5&mb.$enbrbZof}0}?z@,ʇm6gii l+jep8D3FH<#d(oN3'爎ςG SSaIFw]oNՒ2`*Xqir1Ǘ(vr,Z`#5"B@5vy]T'v>Vzdd@ k_3&gc8#e5=X=2T>A@8?]?=>B}~= eV/kyD;aVL`aII.rr&j:9v4Bt-MUZGw[#D]<]4ARp&\w[O2fP=1O2=KO~F2ʁ%iC*O"P(2!}[g/"<0n.5=#(D-yP?xI,w`Z)Sg7 +o&M{B3U32N:e'\5&L*R li-Bwt˹>]ձ2m/jfA8]Wǡ?ra-Qʫ\{ga\MӒK|(п'FA˩Wyд[̠Z`R\-wG֞a۔Xޠ햝Վi_[}J#0SܥI DTeܛLݛٔeUԔaIVғmڈA߁Yq9yKp>+7N2K5{K9..";!bd#mfZ~\kmrffRH]Ad.:=Δ(>5>?HVpainb002DqlUciNvu v>?7,M!^/Wd\BvSEU2kOuWgW5WljQmZ!tAs5arYvCJ=yhuxCSeJLzjKmyIde9oFpHAz'S}ztkTl.mzMb\Eg^l>l|Nupjp싈t?u4uCn+wI?!_ b$;"5#;* y7(UkrOx@CKp:! \j̜[n}5{1u…!glfcoCvUNs{U}?x(ގͅՋ"ߋ"hheZnEfmjقk؊nozAڈjZׁ=ʍ'ab_x^qj]zCyUuR؈Gicdge7hKgbi9D2FH9#d'oN='߈ ɂH SSaIGx^kOΒ1`*Xsgn2—(vr,q`#8 D;htRv^,߈zjWC mzkxO?[p >JpC_:S\.Z9cs@LXdKJvfWIH/fs2Aka7.aNCLBFENZA6U44?6}XJ'9Lzfa; h\-&f`3#a27S10rQJ<36=[?9=Bo:^@/zhB NUIMa&4-r_% j#8vBtM?ZGe[ #-]"&\AR\&\e[Oz2fO=|1N2=JOzF2Á%iC'H R&2\h,":-l+0:#$E*~R;~I(_P(S\6 r*b&>{43H3 C:W&[''@+G aiu,_n;I7AiAi*y&pj:W>IU>xa f=d sn 8 k DiWxHdg9هw-o>dʴ>IҮ2b%\_A7SMr-rR#;Ǫ\yaU]Dѐ?|~ 1ݺ+ǩCẖDɟZGREo-bMkӛazّ۝s딜 xՇiXWxJ#0SܞG2BTeܒI;݇fT։aGOӋmك|K~|Wy:kC}@ #DF5P=RA&=;z$ya}ep#\SHm[k[wRSRH]Ae.A= +>7y8>G*painb003KrlUdjNwuv;>5(J!Z*Sd^B}SER3uqNuTgU5^koOiW"w@h3aYt4R>yivzCTeCMzmLmJdf9wGpMBz(T{um@m.nyMbZEg_m4m|wOepj}pt?v4uFw,}(6 a j$>"<#;%zf9,BWqGx@?Jmru MeОZn5z s焿hlǕhĠcvC}JNwJ3u,ݑǃы"ߍ"lijasEhmiykq8~>ۋna܇=̑ gbawcqp`>~VyR؍&nffgk4nIlgb6E17E<#p&oK3'ꂄ!σGQV]LHo^fPϏ0^)]sgk3ěw*tr,Z^#<"K=h~SwD%ۇ{jWH~ rw=vyHC[l1@EdFY:UV)^;bsBLWcLHvfXF~I+fs4>k_8,aP>L?FDMZ@0T4/?6}YF';Ikeb8 e\+&ca0$a45T-/mQJ=/E8[>6=Bk;^:.zbBGTIF_&+-rY& j8vAt L7XG_Y #&["[@RV&\_YOv2fN=w1M2_³>Cɪ/Y%WfA9GDr&rG#6argN\8ђ4|Ѥ'Ӵ$q6bɪ?a6ԈW3b#RދNc˔aqшqy֓b≕ubypMKك{V}!*P ;nx*o_vWzf9kMt.m_pYtcvNtQ|d{ytnJzp{q{9k?= DB.O>RA"=;v$uazej#VK@g[kVwKKRH]Ae.s=N%>cA>& =painb004YwkU#hj&Swuv7>1'E!T*Ndb@}VBS1tuKvPiU2fgsLc8R"{>z1a^sF]Axi{{?XeBQzuOmMdj9JnWEz2Xvzo@ r. swOb\6jDr0r{iTStyot톝y?{4z4+(4*g v$H1n#bM<,/DtG~C3~Lm[c":_Ϟ]1| tlmԝo[D4ۊKǒOšΜ֍K.v$Ԛѕuiuc}7lijzmx8=ӕxcߔ*ɜ!sdgsl\}_3JVӘ'xDkbw5y(vsb5628D"n%J5&}!}GRJ^+kIcbbT˔1f(^qin5Pm*ӡq+Z`H"W@hWxfߒ#ÉkWU| v=zIJZf2@BdEU8UR)b=asFNXbMF}eZD~I*fq4;k]8*iQ?j;^7.zbCFVIDb&*-rY% j9vBtM6[G_\ ##^"]ARV%\_\Hw3fO=w2O2+84D(u-}'n{`]Bew Ew ~ { X8`>ggZ#c=^ò=Cȣ/O%Wez>~<<@r(s<ѻ!;bkiNc/ʑ.{|ƙ Щ*q+ޟaΟ;Bb/ȀX'ֆU!D؀Qaˉbj}gqۅLqU>D>WCLpainc001zm_hNywuq.Aؖ,(>$G)|AbAB3{G}zGz4ڜ_҉HzXnH$w:z{,Z^vp^|zdzeUZxt_UgYmYwitin^i8uRKsKiudՐs㑏e\ebdPi熆4q4$"/↣5͕%f| kw n򀑃]lw1un3VcVoy[j邠 Ԃ*#,Sv-j;QK0FߒN.IXUk0h6\?BIOF=Q$,\)mJ/o6FK/B5953ۗ0Ә,w<䗓E<|.v1i9?3Ҙ2p<94tKʓ?Ù;Y/i2^EU7EP32̟KЗ0y4d95Ɩ;pm:oS9e7ΊAيGEyMXAc-~C]I_pg`nMUb_5gq7rN7҃o;yGKǔUNԐeC}lExf+О%du[yZ2:A1iPОt+ՀrE߂wCVNZ9O/nB^kTOYW"XIY=̈JeA`LU%*\ W zSWG^j #e|4rLw pZg_j Z"X11HD1#5.-9N%7O+%DM,.z ?"B#93.ˆC.aC:UVV>>GaKNupainc002}k_nh]vwpޕ*Aɦ*&ۨ;$B)YcZdqb{pꈻӒ%+#ˋ(Z}2?VR.I|W.MѠ[m7g>\HUPNQL[$2^/pN87??Q%I3A37ޑ3֖0w>鑨H>1x9iB>8ՖsWEf@l`2hO7}cG(KNyj8 c+Ih0$C:[1/W@H76qh>jOEEct<kL;[KeIi:r4j[EvTKtOVs_O` #eb[aTIP3\`O>fW=>W2kHel^HT`OONByQdM!UXW`&/fc r\xg &t%{ o 9+ plW@~ \)+T>9IL3;32BG.?I3*M35k FH>~/3L5bNCAZCEJMA9F~F;;+ &3 %] %$i* D*4W ]1*Nb3N `2$yZŇӟ/ϖFաFDZ4ɥ/ÙcދDߌʖɲ-\}s[֍ˎȱ ׻EXΔҡԚ/֔ƌ]ущEڐڏ n^{/+0zF{,v|rSqKpm(hQriYztl_vvlNqo0k+ʩ3 ˏ`-?@BϡHƜ!acŶ#}[ kwR¶H]ۨKېeܨ0ݐx ={->WF>-<painc003rc_2bQ%xoLj&A'&7$ٷ>)Ԩ7e}g`2Z AףMoA!3h&ZhldN\rh{rEr^gH|Yiv[idpa\z;l}/~f_%|7&miZw\k`i=in|݄lez7hp{3Cf"()$܋ȭ-ŗ/脦 Ɍ3|ҌAhcrd`n}Շ#˻$尺I mۂR܌^酼ns*\׃v_xulOb[^iViv&|"R`Odh\?hLr#n,g,MvHrJhRv\|UJkWeg(Nr^Em=Jz^ƒRXXUeX`gRh>x(MZ`uInODRMwhDmeHӊq`GEyILS:3[-RЎVuQfZ7J~h&Y~ŞfEaVA[1Hš9Fw=`R,aћ)RݡEVܟz/$=cwcqc`5j2?bPn,iFmAwPرP0I>pNQ\N3XQ]wCdS_[C{egBxW'ffC8zSJ(gX8>7Z@Ml=*j1$V2}d?(yFAzfq5$bl(Ibq-%QE0`)0gcJJ*d6n= +R?^M^,FzXW?jI>v& ErM< jOvXtd,qGXq #s"rWRL>\VqOoJfyg=pIze2gQ6qj=WoG\>Mxheq*JuQ} ;~{}qu *$ 0axSwA x]V?}VlD)k3 Y:/DPUIYN33LNQ`(SAl+^7\1Q9@xa?pkNFeMh[?>VKFyS.$C~Q)><8Y3|6&Z68&k\*C!\mn<$XaQ-Qjt@J-uom (@Bn4(c_Ƞ7}}Wxͪ,_gk{gzȐp~Dų3Р`Х#Iulٚ-oPFՁTߊف.c|qzsmurdpvt2kuwU\Ѐbwjg%^Im ~hf.]FxhabzZ(iYla{UPTJYZkS&^Rb[lPWkac]}R`ga`VQX\\[r,l'0 _»)=eHm!lZqc` #LB7_[ kKwBBRH]Ae0Ҷ=">H>6painc004lf@-~e(irt9n,A+&<$ŹF*§?eo>b@U0vDvEgV2_ E£UoF!7h*agmEVQshvFYi`E'*t!;솴-}sϙ:ļ*Y\}KrfЇ7cay܇ &jMjވu'zBAybn4$_h'&_n,%T>0\(0e]JE*E4i< ,K?^E^,<zVP=cI_:~VD,3~4U2fL&qI*U<}Q_Ut9>JJJL={`/z:6K3}E9vU+UC{l9k(U/{RN+o,`GvtcGp'{|n ~e'RzJ~%s ,~AsâCTŖ.j˴,jeB9\ż\wQOKGGJOUu[K]R[TYpP_^`XSRLWUYg0l/3 _03X<[?K j japc_ #J@4^[ jJw@@RH]AE."=2>U b> ljump001Gx@yovK?nA&pQ b*_6NU}DQGFt\\vwbiIDMr[[r:u]"eTknHiix}D@]iC~se4nzckmtid7nfpGbz!r{xz@)~kpu8E&{KsE6SHk6W7iYnO= fHyGs7_9u@wP'XrB So(?T\D8yD ]F|OY)d*MkO`<7rL7}ILrDDlW v`{k( v MKw$zy_;D [BwNSP`[kK`O6gk.S5ufIb]˕gKӑp>j9$>^.'ik.7N5؁1 ;$(:%^5=%E B4&3,/G4(]~>M+l)n3s){&Â69C=GBj>AByjump002PtJsn}u|I?y@&|N ^*\6WT}LOPEtfZv^mPBTndYn:Z"pRkzGiswxDK^{iCn6+hzefmid7zdpO`z$otv@.~fpyo:||80mڀx6ہ4?"L]h{q}f#nuWC l|=sK?en2|cNd~f]8s\3I\gs,laCoN{FyMkm;DUYDhO_4aqK=)jG6|G+y8'f:vdzO'_^NzOB U6(Q;#JZ2iw%>tb>8)}D%bE}ec%e9Ykaj9G{LGIYuSQmb"v k}s**MZ%*"" jESXNN^^`gwKo\dyu.vQ3`aILWΕTH{_=܈5%A"^1,i j09N9#ށ8 > /:)^8=+EB1&2+ow)O|/&w]g8M)U#W.^&{p%ʈ49?={E5tFL[8}s5Ї% \\Ed } 8yr̆'Вㅡ) q :cCj$ +}< _:u: Tgd`7G܈C@WQкX_ qԼb9ZZc+ɝ<ŕA伓YefصX#ھ~ձgY-O٭gܣୋ룝ךk"ʘBN%5Y 夅N*_Wf9N3^WݒcNߐRכnڒ֐e܌V׎qtLOtE6EL.JPJL3=+e>6@qjump003\pJ#m'muuxB>}8&H W*U6]M}QIS>tlTvXiU;]hkRf8S"vLk?ivsF\^ui{Cj63cwpbige|7ap\]z0ltqJ.y`pxjԋzu:"!-i|}x3}Ӂ4?;++$(` {$NL .y=xpX Ώ ~x,4ӟ;BwOAhXKpIz"J"Y\hpwf#^!pWO{ yw=|IG_f2fLdh[:u[.g]bsKm[iqMvl{Nq7By]Chkd3atHLKlH~X~IG{<Di;v|N'aLzpC!q7&n<#j^:z:2}|$>g9EI~GEeGzi#eK`htp9Y LX &.au`Ym1g&xq}-x0:i%<&"#pQ[XZ ifYsK~c E| 3qP?R^Gigd3QDPKϺ`رcvȺZy!;ɵi֟Y⦞$OӰpצqޯ;㣙朝؞nғ-XAQ!.Y Q%fXD0S*fXeQܓYڟ՗ՔF؏TҒgyEHx>.ED.OJOF+=$K>]*>0Bjump0044pV wmfyv }f;>T7'\M!v\*vSd>J}6L18tLSvbWg3;AqLTqmbZ!ODhT5aLolF4VyhetCog^V`ke_iZ`~eowFZ\bEWk,d}WhU|l=~w`ajDwD{~Oz݀~ft|l}tJo?CS(iGN&]"R'<9 :/yF,^m{juM}U>\p9}|dknҌƅ1 uk&v^C4†AHṖAφ5Ɛ%""whub{oshuxvyĆ3xaƎ.$spqrqZ|_Ɇ5ƆAU(wdtgvP]Hz8X(hI'r&Gr1Aj QvXtb%lG7m #o"nXP0A\6mOFLfMd=HKNc2JC[M{TE~9͊F UX+#%ik)10./5 %7!X.J!c}`-.'l|e(Nr,M]g6}%iV$c.j%~".D9K>?~AHz60!m [iy^m dmw;$~:$ w6[@jSA `BoA31F4Kb!L\;E!DaGc=]#/(! <]Wk/w((R\HV]nAnen0o>FJ1>h#>3[?,Vjump005?~zVpx\v A>i:'nR!d*\dKM}AN@9t[Xvt]iA<LyZYut`"aIhi9a]gxF@Km|C`^xYk|WilWeqDjRbSMk8]ȀjtUw}LyXadft_%w~uxbየ|l}:U?@d(yMp1s"_'HϤ4-˚9ö*: ãC({lTJVp7!io?5Άϐum)tcCσ@S⍗SKЅ뗥(ٝ!"zixZfuiujxo~E܋J՘{Z˓Kĝ tcnxpr}WڌKыSΙ"z^rgxCzGy1ta@E;7Y<.o8یX?:扩-ʁ\VTdK[k[7^3[%s+i;7v-s:go$7"AJhe`}f,- |P9 W~.^I5iy ILdOb:^_.NEms7VbSVPvVaOhS/f^>DkNC1aYDL4PNAdJ&_<%J>}pbM'mDOzUj@ Rf0&Pj7#N>;t]10V\JsH3E.dJ ,GMUF^*;zLN7_I5j&:rF2jDv MtW%)dGKe#g"f LQC2\JeO^>ffZ=_=fY2CAXQ>/m4&H Y+$ah-82/0:$&7'Y8}K&f$sV5/({{t1~3fty=(\b)u0~|&m.D=KDid?kFeD |#DH.2b>-7>Oiπjump006mrJAwpD[}u>}:>3'H!X*QdqE}hFe3tOvSig5sn~PhU"Ah3ajtFlE}m}C`c{XkUiUdx7NprHzU^}qU6)3UadEyDHu`ꉘjꋧA?ÍCŒ(IsO"Ţ$hñǻ5;% ʹ4,|j²M@>Rm:i܌51ЅО|mdž~há8䙭CբHǫòV=,ٚިi\D}izknE頽>߯ꋼ\ޮ+Ҹ!ㄯevw|[ΑY飸>㢵VȕQ۳狵fza슴?&߈ b6E77I;"o"oS3 邩yG_Vo(I~k[я9_)]Za5&uq*\j`ʛ"jDhayf% ?sWeʂ x3}I_`k1CFdLY:_V)uL[KGgfCO^6NB9}dF';Ikwo: vg,&un2$r27]-/zZJ>0EVfCS?Gx;^U+zrF _^I^m&I)rlj>8v7Dt3T!RdGoe #Eh">g7CPi\oeO/fV=/V2B>ZO5}$i45I,T-%#^g8"K7l4 I,79VP+5B9~HF!2/DC|,wQJ2`u14|'xi7CJ(A?P'.x,p!tT#~AwE{ " {7'T&Kg:녇L+e,zԸCL5r~qiĵgil٨BbĹfrtmvQ̿}Cа}R_ϧiC\LZјc6ɓs1ۜ81܌Jc>xp@yL.㄃2~%߄/_Bu~zlvrgxszn")cIsqefmh_X]S g} ^ ]gkZ]l$hz,[U3m*aX%gx/gb9j><D@.cAdD!L;~!~aev#g`Wu]kgw``RH]KE.=>8q[>S6Z7flip001{g@GhGvru>t2>,'=!I*Edd:}ZzEJismird9mppchAttq@).0onbs8913Ueσ=zW؂3ĭ?<܇,˲,13j̶"ܝ$Wסn>SZ ;#:pӏ+zԿ'?0w_maވ3;d M{olx~p 6:Ȳ0+Tל~՛+2~xudƛF9dyi}l:/E-Ο8aĖfů>-(H!Ƣ4E̡ ƥ$݀˞6?8<:P솒)n+lW1p.كr(vkTdAr*TXَZx^gdaM6tJ=jZ]wMpW[mB}^|A{f*fhM9k[S(in:L:g=H90x,-^.}}|@'uUBya3 c'Ia,#ZM0t,2qqAX.6771[:nUc=Gzg_ MvKKI1Er^; j Sv^tm=|Ge} #*"!]R[<\d~O{Kfo=}Jo2J3b'mZx@{/mh@2jO%f.x."p]hh5j!Ed5k2dn2[?E_%(V_2YHUO/RY9nQH{'714 }'|JH,n4wxR78`=j@q1v&m:7N+E9V,w9v3n&g"y $sY yu\n to&sd}<ptb^$m[S {hrEF߉>,6,'$$Dڴ=P+]2>a*a0ء4^6HȴC'r#svÖu'ʞp 드C/=Η84iʃ6~7|[N݇9Z{P{$@ws@u@rwpd*{>h4U`1Ys+Y>ZN9e}>`b4`Qc FawGSg@PMOBS\dUUA][cSg]ONkPBj]omW>Z_hmbbm`(tmza@wbi}g91j63D8.U7W8=<{${aeq #[QGn[ k[wQQRH]Ae.ܿ= >^>\Taflip002f@wfvpumt0>,'=!F)Bd:}~<z+tCvEh{-_DS6G"6h+aێqDjrix?Ղ7rjsri}d9vpkhjyurAQ}á/[luds8Á9VOy]xVwsoyyѨ33<,˸,GSɹ"ޡ#wףHejeO{y.|:{ "ϏBss$ݮ3ǻ0]ivl>Bo"$ZhltrwypքЍ6׌߫2ն,úȧV؜ӚǦ, lw|闍ӊ64Б:P+n,ҊZ0*у%xNhKu*{Oђvn_>D5^"Z!i=P/ Z3co"ihvDshv'v=|LYU._>dfL6xI>b]xnyXusB|zAk+fS9kwX)ir:>Qm=b9H~+Cd-v?'[Cy~3 'I,#uS0x-2uA\06O7Hb9ZcYMzd;k{LjIKKr~A j8Yv0ct'rYG #D:/bR{B\OQft=Pt2L=_Tُ'D98p'~/ZJ4Mw9>x7ym.uZba9YVT^XbeZ=/k43 D6.w6z9=<$ae #}qe[ k{wqqRH]Ae.)=Z >n`^>s flip003h@osux{6?.'?!J)Gd{9vnf`xs}[wuE||Cl/DU>Vp>h;T,Of.vB']Fy5 )I.#yU3y22vA^48X8Od;ZehNke;y|LxI[LrB jIZvAet8shG #UJAcRC\ORfu=Qt2E=XN6{'mQT/W$P-Y=#O7DrLh3O$CL7H.Ab86KG@,/4Y1DG@193cDj5l.2x1#|DwC},-oI3746*x!m7FH+?4N'0x-n$o6u; gj g[y}oe%j:kSe[4b}J]!^JihTDd0|=(!ҷ,|B#Ed 8r^CIBƒ6͸*x.V,U^Fc"qs 7¯6˨8ߞ$Dĥ73prΌ(ZB̑4Ĕ06ԃ.j+5nu(NZqDBzp?7|Gs[;~F}8tQnSL[Uxqd|6]1dsEeo`wtwZz7r~1yt?bqnqAnɃ ~|D|}Ă.1k;5 E=0o5}o8");!bd#}q[ǿ kw}}RHĿ]Ae.u= >2^>3jflip004g@jquww2?,'=!H)Dd9v|<})uCvFi,`DT6H"6h+aqDksi?߁7fgqi~69wpkhvwuuA\/fpudo8}9a]Wzdns|qj٦.3ǐ<,ǻ%R^ü"ܥ#ӦSowlm\pk:|: .ϑQjs$㬼3̵0YinHJt0abniiwro׉؈6ٌߦ2հ$ijΡVٝҚŞ$bwq藓덠؄64щ;r6cbenzĚ ڏ4¯ 9cC=Ǡ ˣ,ʝ(ד0Հ7}9?7;8K(o'ΊU0%y"xIeKq,IВj^xvyY|rC|Bk-DR:kX)iq<>Ym>k:S~,Nd.vA'ZDy4 (I-#|S1w02uA\26Y7Qb:ZeeNze;w{LuIWLrB jDZv=et4seG #QG\nln^cHnt vj_yoozo)/k64 D9.z5{8=<$ae #{n]ſ kw{{RHĿ]Ae.(=V >_>!] Ǒflip005f@}e|}purs0>+'An"'\hlvqw{oՆԏ6׋ܯ2Ը,˧VםҚª, lw|闍덜Ԏ64Ε1|6mpqlÇי49مcFLū ȭ,ǤI"֜ݠ5І7!ܛ}9E7@9P,o,n[0)y&xMjKw,L||l]AB7^#Z"b=P. Z3cn"fhvDzgv'u=|LXT.[>pbL6tI?_]xwvWoB|~Ai+fP9kV(in:>Zk=m:Q|,Lb.}}@'WBy4 (I-#}Q0u-2tAZ/6Y8P`:Xc_Lzd;rzLqIQKrA j?Yv6dt.r^G #K"@6cRB\OQft=Ps2N=_S=}.pXY0^$V2\='T4KwSh5T DQ:K.Fe7:JGD'-9Y/KEF/?4kHodlDYp,T?R_H]7:TJ@XVPbBMRLAZYFORIO^pa^dM[jf_>3wqLnZflip006h@~osuwy3?,'=!H+Dd9vx;|)uCvFh|+aDSEH"6h+bߍrDisiw>}E}egni{d9tphhuvusAZ/eupdk8x9b^Uxdns|py٢33Ȍ<ތ,ź%Ua¼"ڤ#ҧXrwjs^pk?|:3БRks$㨻3ϲ0VilNR{5h_l}hgwnp։؃d،2ܫ,˰ҝVٞӚ͚,Ő`wq闗~64Ԅ;m6_iblvʖ-݉Fʫ 9zcD=Ϝ џ,͘I"5z7 }89778D݅$n"nO0!y xDaKl*GѐiZ8B-^Za9P*q+\e"ghwDt{qy'x=L{[U)\@pcM6uJ>`^xyxYpC|Bi,fP:kW*go;>_k>p:W|,Rb.v~A'XCy4 )I-#Q1v/2tAZ16^8V`:XegLhc;xzLwIYKrA jGXv@ct8rfG #T"I@bRA\OQft=Os2E=Y O7}(iST0Y$R.Y=$P7GuNh4P$DM7H.Bb66KF@'-5Y1FGB0;5gFl8m35z<&H{F,z1tM6E{79|-x$m9FK+A4P'2x.p'q6r{;#l l[re(l:mTc[4g}M]#cN lhUfd/|B.#.ΐF%Ki 6ǡ^BGŶBƒ7ݷ*z3Y+Q]C\qw ҵ7Үdߨ8$Bԥ70—iǗ⋓%ΌZAސ4C߅15,҆j)~1ʆpv(GqmeEvp@}9wJp]={|F{:qToOK~YVyqd~8[1hs7ip`quza~9oɀ |w4_~qrq>oۅ~}D{˂|Ճ./k73 D90w5w8=;$ae #{o[ſ kw{{RH¾]Ae.= >_>oS;] flip007f@|j}~qutv1>+'8M*o)nW0'y%xKgKt,MՒn_?B3^"Z a>P/[2cm"ehuDylw'u=|LYU.[?pbM6uI?_]xyvWoB|~Ah+fO9kU(io:L`j=q9W{+Ra-v}@'WBy3 (I,#P0u.2sAY/6_7V_9WcgKzb;yyLwIZIr? jHWv?bt8qfG #S"I?aR@\OOfs=Nr2K=_TB^>Fgt^flip008f@vgv{qumt1>+'ᐵ;3ϏN~z'筶?0_m܇PX 8nnlÚvˁm6;2+&T֞қ+ت |v°딣o7<Ӂovi{lՏݫ-ŴE8ae> +ܧK˺"9و6 $|8F7D:T/o/֊_0,y)xPmK{,PؒxqbEB8^&Z%iAP1#Z6cr"chvDshv'u={LXV.Z?daM6tJ?\]zvsWnB|}Ag+fM9kT(in:>]h=o9Tz,P_-v|@'UBy3 'I,#N0t-2rAX/6\7T]9VcdIza;vxLuIVGr= jCUv<`t3od~G #P"E<_R>\OMfq=Lp2P=cX@v1p\Y2a&Z3`='X7PwWh6W ES9O.Kd5=JFF'+=Y/NEG.B7oKs?t)=0+MN'4|S?F;?{2x,mD4U,L3Y':x8n.y7~!(<%tu[ ze.s<v]e"c?pW]%kW$th ]fg݇0I!5!&"0Nݶ+V t 5v]fF©eչ9ڣ=4]Ѵ>LZ@gzw ӥ7˞oؖ<,Eʕ75pz(~qÈ4Hv;8r/wj-o9wpf'@wlbK[fKblA^J[RChOeo<_S_VfkgYpUShTCfa8bXKd]NYppSPU>zb9wZLmdnzimb&wr gAkon./k52 D7.}5~7=;$ae #zm]ƽ kwzzRHŽ]Ae.#9=`> s[>iE flip009jJjslxwuc|5?-'>!K*G6w9vk;r)uDvHir+d"DV7I"7h-bʆsDatiz>tEp`sfisd쑝9kpahfqu׫tJJᶤ.Rzgea8n7TW~Oxcjs~jjҚ3搜3Ƀ9َ,,UW"֦#{ϫh|tjdnyJ~ꌜ :ےRgs$ޟ?֩5Oi\d!ArVml^bv|_i#qB9<)'VȞו){ [vӆΓ"oƉgblEl:ZbTgSka0я"qE ԟs6h\qf>1)ވLؖ#v7jes {-u|td.8/:7nnB1xv8XKc*{=Β|cV2D$_\a5R#[#c[ޖ"_h~wf|ogu{'y>Ij\X.Z@daN6tL=Z^wmrY{mC||Bg,fM:k|S*inh:Py-M^.v|A'UDz5 )&.#{M1t/2rAX16W8P\:UfaHz`;qwLpISFr< jATv:_t2n_~G~ #M"C:^R=\OLfq=Kp2=3R I1t!iQT1V%O.X=#O8DuLh4N$EI6G.Ab45AF>,,3Y2BH<077cGj7m54z1&|IxF,3oL5788+v!m64H*<5M,.w*n&p6 v;$h ji[z}pe'k:kRcZ4c}J]$^I ihSfp;O:(ܻ7P*^!{ 6yuAp]2}}>|;1r>oND}Z|Rp[atFU|1\p?WoUmlu\vy4d1mt=U~bǀ]rKZօ m~DlɃkӃ*1j:4 E<0k5}j7!)1!be #~uh[ kwuuRH]Ae.,=[>r4Z>EUiCnflip010iJZp\vvuS{4?-'>!K*G6p:vc1+ӍKО#|7oez;%{݀zd/81:9冶nlE1xw:~Z>f*jAϒnfxY4D%_\a6R%[$c^wޕ"]h|vfyUr{ w=}I`[Z.X@d`O8sL=X^wboYqkC}uzBe+fK:krQ)im;LOe>^~;Ew-A\/}zA'SDzx5 {~(&x-#pK1s.2pAV06L9FZ;TfTFz_ cvLbIFDru9 j4Rv,^t%mS|G}} #?"6,]Rr:\|}OJfo=Jn2>3U M3t#iVU2[&T._3#W8IrSh5T$FN6O0Ip2<>FD,):`1FH@/;9eJn8s561'L{I,4rO77::-v#m84K*=5P,0w,n'v8"x %k jl[ }}ud(q;qZec4f}O]%bM!nh[Di6O;#(4P*_$x 4tZ_Aɺf9=F\=FX=[sȭw ݼ4ٲd쯍7,?ݩ7)̚iқ!ۑ[=4><0 'y!)وy_x,=wec4qd/x)r9lY)y{4x)o>pM;zyIwjEkXSoEJyTnFSmU`|`q]lv7^}is?O|j_ည_s>\l~Di߃lj01j94 E:.c6b8=;$ae #qg[\ kqwggRH]Ae.=?>DV>>VPflip011rh@B{iCdsu:w3>,'>!K*Fd_;}U=U+uoEvIiU-lbnEX6J"x8h-bqqCoRsirAeEJWsYiad|9ZpkSz@ctpJ(.,rYb[8i728vXQЃDlz^lۂ3?{9,,95l"$X|N_kIx3:}-$ێ6jz'?5uMhkCLr ,W}Wlw if}}dm#pE5х5ɏ+&SהLJ+Ń2d}"t򎐃mbqDu8bb[s^lk0teÕ2t6g[pf̅Aƈ0ʼnLH$w7ibv1z%v~td+o,5ꆍml<;g}o vb<M>V.TEՎ_ddX.D!^|[go9Ra,k[{&\}W]"nPhjtfw=khy u=zIPY[.M>dSN8cK=hK]wM`W^\B}aiA{W*fkA9k]F(i^9L?W>Ll:3f-0P/}}i@'xGBzbs3 dl'&br,#[A0c,2oaJJ.6:m86M;lHc?<zeQMeILrI2:r]2 j"GvQt^=jGdk #,o"$mPR[2\bkOy@f`={?_285O$qKx4$ha_0dO$_(q5iVas/c$=],d ]m&U49X* P^.R?NG(KY9iNDw'211 +|H~D*|8rM3ol?s>y1t$h27C*89J,{2u+m$o(t!)mWo\r{{~p$~|ldv<jZ^'g US"uskEU/F%9%%ݷ#.F=X,i1&ΒC^.^/ϳ?hEJ>/ǟ)qw§ӹ&ȭb9/6Ϧ6%˔\Ӗ"%ݏX?7D鍌<%,w.+߅wd}.&vIa0jc)pz(l T>pO>zflip012f|g@9ni{,'>!K*Fd^;}T=Q,tmEvIiR-falFY8J"s9h{-adpDfHsirC\EDSzvRiUdp9QpbKz:ZtoU#w.&xqRbX8f7-v4pTRՃCmz[m݉|??w9+(72g {$RwM^f G|3;x-#؎4lx(?5mJmgCKm,TwXl| oh}}fm#n6<ń5LGRՔL0h}#~w󎋄qprex9fp`hdlq.ve-"t6fZncA/LJ$x7hbw z,vsd*o+Ì6} mwj;;[%}b#t^?H>Q.OH܎^d_V,e"^m [qge;SV/^[o)\zVV"cGh^tf{6j_w s=wKMX[0D>dIO8YL=bC]wHTV[RB}^^AtN)fg99kX=(iS9L=M>J`:2[./F0}x^@'t?By_g3 _b'&^f,#X90Y+2iVJA-69b86D;f?^<4z_H HZIGf&/3rV+ j!>vGtS:^G^_ #+b""`FRU+\\_Oq7fxT=q7zT274~M,iKm5t&h|F/~I%}S" y]q*7#k:1 E,zS:+&|@;vH?%*+v*E'?%w:sNwI 0n`?f=j1t{%h/6?)69G*m3t*m {/nSp+t@muufsqn{otsD)wS#pK"ZoT߈:M*E˽*0Ӯ-7H?`=i<+ɐ:[(\#2ĩD_eEB(Ė%utĠг%aDި19Şd(̌]֐4"/ދRHڕ6QpN27u@4ゖix9#|u4fu@cMCb^DohRhf_oKHhuOcOTdcTqh`jeKsuXvqjt?_ځjeu_[urczow2j7w4D8.O8Q9LR&>i!^>(O<,߈osalute_alt1irjB;th1asMn+>t((~8$A)x܀}w cQh$\m}r fglx~ԈbߌjEuA{oTGpԞnEq:S~.(^r''vdz|^hflchzSr{]puio:({bgt<*~Yk`cסrZq`cm:mDxq_)l(_p`hs\慂_3za}Zk5U6Uԋ2x $K׈#WDo< _ N|KcDUr3™7Pb-LZCsJz\W]ҡ OrZg-#r'?NwqM{c-hEgtq,tCwA\TP5DIpJXXV3VE`rF]Y[\GagE"tN2e_?AyYC0gSD?B[ATl>Eh0;T3{wbG,jDJxhm8'je-Lik1%U@8W52sUCxA8oHo<:S@~h@bC<zhH:[^>^jK5; uV,1K{*T /cLdOm] %El 9k*S PQ+[i]Vk1^|KCq2nL01[4,v(s^͒MyDf>,VGU&0[Q|OzV($\3"j& c l|4q.~*u{cV"wd1rHfsY#7S5D(E5167 4L(K+ :Z+>K P C|9y7D84U=2V9+_LP{%G7*//+XZ)n?(2PpV<"@c)&;yT,%zPo_~g#5ƶ5ȥ v̼#89uۅiǹjqsqyױ!pjk~pXdcǘzӉNyנ"Zñbّ@ޮIɧbЧ\ѱN߰碞ҬmLƓUu>N2UܻO-C`F;G2CU߭EOݣJ԰ҡW֣4ܟHӟcm.k/r/ ~f/3N9R:K{;a _accW| #H@9V[t kHwA@PyHs]Ae.6->=*]>{SYFsalute_alt2o}gBIeN>noYl}'Al&&x5$;=6e]:W<L-{j?}}=hN.xY k@Id>!i3zj&asUtdQErsd}EUQh*A`wjAizTnXFz=\t4ltf;zy:AjINwC`jOlш?7'0ȑ:ϐplob8^wϊ34M̰RƖq*/qɜ$RD>~W1|7jq29)ɑ3vgo{ϋ${KDW$y+G'aI1|U C;P$@{{[ KpւcՉg`nh6qwC`tTkI[go6ct9e0k=F V,b,PiwU_sWjjBtw7<|Nqcsg+Vesqu;q*YWzElԘR[ןe]cgohnE\yfm5W+Z_mEsrZZ]]9WcXYz(Un-[Š${NlT܂4s;_| U{ @oDF5&0Ye$M\JqHsoRiQɟ`Z$v͈$EOwqJzc]2LSdyo,tFyCbSJ3t6Biw?Df=Vy;H{,"^{L7GL* 3]3k5}RxHih /J'D2jQK+[hhHb-^uLFc,nvL<*e9&+lUz&dYEf3`,,gF& `o&V_w!8],#JV#/-W9Th,'EB,@K=""DXy73F:K!m+f= ^ z,RokkZ{Gz4S61k3,e9*z)b{#Tk*5pW%; Hz.2~<'i+1z"~jg,kE2yc Bq6_8{x faIϏ_uӆԆxlg݇Qtpξ]ӷ[kQs}miVwRNV$Һ[%z\ٷ>-CzʱqU$Kژ}ZYӺWeT,1^#ݶK@/p[n C m\kBcܙ߁ךWnfݏrh,l)m.-r_*3P:S;tKn X WaZcQn #D>8P[h kDw>>RmHh]~K~e~0~>>b>\j[nlsalute_alt3sf_psmj`xs+>'(7$?+;e{;}r<j+vA}@gl,\ BKEA!5z(aQpf@ssktDGpn_tGz?bVo=hDwqcml_d{4dt?hNψ_Շrp_nĒbtq|j7iFoԋ֠=Ғ3,Ӧ*!nn܀^|_ቪ-cVtҘ)k8΄;jSvp ,qƼIrd}zwp}⍊ gx`ق׆`f7rCh`Iўq7t k펧-+y''bz[mfdzpntun}iq;(`ht1,SjZסRgYeo;m7nD.(\nahX놮Z5\Tk36u=oGf,pr'nLTFq- OXOdPsypHb /mz'f}NcQo.[bH0^JF/nJ4965WHS(D<\"QCE(K2J7=}N1hfBF^T+fI4T\(E?xY9pH-xd7R-92Cr' <aF+s7=y1dZBbB~ h.w#j/*zk-c\|؅po׿1ȅĵ\bzжNQ ۳JW˰`߽"K Q0зٺYıD<歸^ѳđաŔ梽T3智UͅϽv킻~AqdKĚy4 UgYc6awuěl}uӇc[cόbvtɘp|zY}ȠҀŎȝ}̓|XɎ-l//f/3k9n:K; acw #f^Tu[ jew^^RH]AE.5>>c>}jsalute_alt4}~f_Y}nUgxeu->q((w8$A)=e]<}W<S+tiB}zAhT,y]"hCLE|B!k6zo)aXpffDsgtuDIpWitwMzCb[o?hmIvZkvm_Q4QuBhsTψyfֈ[ZMzÏP‘Zːo7qFvՇ=3ji,*!ob]~t QѐW≋-XͺH3n8;T\vkd"t!+eݾ'IZn}q_Ym$aqvyng؂؄_⋍e6rC}jYHuОr7wV/+aq'~'qgwx^hxjcmwWzt[x|mot;+xcht<*|SyfaסtTqXbq;oE~sf.t(}^lhis~YZ5y_{Uyb66ZAoeNN0pX+lmR9F1ԃ<1}NVkZAqk3:bِ:8uVD^Z.]<-qM%g4N4??)şI:[YvƊ kDwNucw-f_mr,pCtKbZN3nKFisNQdz_PFXM_uMp\UqD\}CmY2eVKj9hGiMHxkPeo?j|>FKZ0 B_BlC}`yHvj /X'RAkQY1[vjHo2^PFo2nOqC?A4+;*`8[LL0f">He!T)S+D};5hMGDIZ+OOFBd(6F}D>m50yb?=0992#u%+a2.s6+z fZ.cB#k5x*l#.{kd\lϒŌËǹinw͂"гWY ذgrŸƲaM崝H#ߩX%ͳwì\٬>/ǶfxѸu`+߸_ۢtqҷg𪾚K4Hǟ+U]4kuj \y;e dage^z #RLE][u kRwLLRyHt]AE.,H>W=hc>KHmsalute_alt5ng_NnJmxXvp/>c)(g9${B)y?dP<}K<H+tZC}iChI,i^"YC|MEkC!\6za*ay]pfZIsgyuDzLpKqtgRz|Gb_owCh^MvNq|m_F4FvpFheXΈkiֈOOCŎHđQ͐q7vFvyՇ=3`\,*xƞ!i`Y~pLԐUz≃2TڽAđ3o8ՋIcvb`!p$+a'vIOt}hXRd$Vx{m_k؃vلw[{`d}nBmkYyKkMxm6trPu0{)\i,s,dhwh]zjijXrwNR~|aptpx+ibsn<)jSyXfזbVrrVaxlykEotf}5j(m[mZnwmXnY4i_iUyV>NP3 :c:q;U~Hin /N'I:pQO4[inHc5^sTFc5ntSm .f%/dA#_E"\tbz8`'K\ 4V3Ui2F@GO(*GW8ZPR5NN{#Yv3@rC8D4&>%c1^LO*k"6KeX#W%H}39hDKD@_+ETF:j(/K}l;Z Ya\eTm #HC=S\h kHwDCRlHh]{A{E{.{>=Ԃ >c>vXdyeuIsalute_alt6}g@l{nefw|w0>*(:$D)Adm<}d<b+t|D}Dhd,_ {DOED!7z+aYpfFrgpuDLpkcvLzDb[6AhHwmgtm_`速4`vEhTЈeׇnm]oŒ_to|p7nFuՋզ=Ԙ3'ӫ*!qo~]|_ᆯ-aRtԞ)q8ъ;nUxԄq" (q̼Itf}s~v,xp{~c}؄P㊱Td_D`YwKM_dess0x) ,{*_vUz_jyjvm{rw|gc닰u=Yw`;r)Kxy`טPrLa^닭]dhfr5+Rk~guP醚P9VMx86|B6Jp/p*nR5f)yV*xiI焏\Kl)IPې?r@evE_0^X([r#aCCH4]"şg5\pk DwOuc2#tns,ĖqA͝uKr\P3IEiMQd]PFpL^u`lZnlCxwBW1eoI;xqM+sZB?Um;n:"b{)Re+nD,xNEv}5,r*Lz.%hK2_51]FH7nb7Ke9Fi_GxNk?w>UIr1 O\OhPw{tHf /n~'gNgSq1[fH3^NF2nNd` KXUA}a2ij3o%h8-dK/ _E_vcz1a'A]#./U3Vb+GU>O(#I/\DT+P?}.OxM?r>UB3;50VEU(@8[RFD&G2G|9x^>ȣc>adqsalute_alt7rh@LnGmwXxs2?d+(f<$|E)zCdK=}E=E+tUD}gEhG,h` UE}PEjE!Z8zb,a_pf\JrgxuDOpKltmRzHb`o~DhaMwMo|n@C4CwyHhlYЈrk׈NNAzƒE{Pΐu7uF~{Ջ=3^\,*|ß!gWS~kE~JↃ-Jλ;t)t8;M]xaՄW"i +W߾tIRo}kw^Wl*T{s!Zlx|لqPlxTb}afkgTzKrw^btfWzs=MR3 8a9o:X{Hpl /O'J8nQQ4[omHh5^{SFi4n|RGi 5`AG3,9%]4\(E*c=LDM%M|*Ax=7iMNFE_+LS?;e'4DxEAp84ye6A4938r"1c62s72z;+d\5bBi.y l&,{k$c\`͒v ŋË ɹpόl΂"}вYߨXگhgqDzatN岝V!ߩ[,ϳx«\٪Aܽ*ɴexϿuź]L߻^ִhfҵmX>-> Qc>Xlisalute_alt8dh@Am=nvLxc2?W+(X<$kF)jCd?<}:<;+tHD}XEh<,Y` HElPEZE!M8zU,apapeQKrhytDqNp@pt^SzsIb`onDhSNvBp~n@949wgHh\ZψbkֈCC7~ƒ<{Eΐs7wFnzՇ=3TPw,*nş!^RM~d?ӐFry-Eּ3ő3q8ԋB`vXR"c$+R'kIFr}_zRK_%Kz{gRm׃nلiUlo\dskBboTsKfmbdiiKmx=H4*:$^1](F'd9MFN"O|'Bx88iFOF>a+CV45g,.Ex=Bp54we7<494~3r .~c31q7.x;(ba1aB}g/w!i$-yk#`\Vˏe~ ˊqڅ`Ԁ{|ʼ\׹\lbhptٶV޸TQRܽs& ÂrѬTڴIİ\}Ѿ-²ͳHӷXc칞gǷXm쩬uU?꼰Rz±IͿ%걵[qCx.g4NJxˆ꫾qz ٰȑ͋hݧP1jh7S2eEj8.799:f=e;R$QaSeLg#?:3K\a k?w::RfHa]uAuEu.u:=>c>O8P{ osalute_alt9h@ZlRjtkx2?+(;$F)CdW<}N<P*teD}EhR+_eDPEE!o7z|,i_oewKqhtsDQp\fvQzIb`6Fm}Lw\jym@L焝4LvJhYψjև\\NnƒNv_|t7rFzԋЩ=ќ3qr'ή*!~__~K~J-M>tѢ)u8Ϗ;fWxwӄ_"w (^˹Ijh҃}uj䍊$vq} iׂׄa݌jExAsTIn6s;f/+y,,gw^hizlwfymw|nq;+cst<*Wk{gԘ[ԟ`cn셶mErf.(]mksZ㇦^4aYzB7J9Pz662Ҍ[0h+j_+y[H焌fKu,:J|*i3^}MB:_e,\}*bE@PK1f%\j8^Zj xIwUsc-cns(qAơuK[\Q?GCiLQo\P4qL\u^iWtgBsA"U.etF;xpL*sW??Ui;p{:\x*Kc-{kB,JDxy4,p(Lw-%iI2]11]BF3o`7Ib:FaSHxO{k>wLFJh2 @\@hCwqtHg %d~'Z?gQf3[fH5^OF4nO(Qa,ET>M& #I -]BW)T!;y7Nu^DnLgI~3M69TNV'*;;XaKF0A{9C}F:zd7puP?b\,mR3Q^'P>zjAo^6uD,,l550,}te 8rEY {c[4o4Yu:R^cZ#^A2|)e((v~iD+xmA^^mƒևpp ˇɸ^b|s ׺MNц޻KuPҴ` "L S<ҾݽRķD:ꬻ^ѱǑӡƔ顾T4発Uąy׾krtQpEnnAzšu9 }`gYapatu›k}t҈iYcletyƛp|{RǚȞxWt0j7x2E8.I8K9=;w$wa{en#YPDl\ kXwPPRH]AE.=z!>d>Wn+zsalute_alt10lyl@'tm!]ut6y}4?b,(f=!H)Ed7>}+>+-tIF}jGh,._aHFTElG"R:z`.aYrDUDthnuCMd-YvoKhFb\6BmSEw*^qpU~3wFm|Qϊa֋&}'{&^| {v9wӀn7mFpӋ+);:',o"^2:Wـ߆- ~v+p74rF9aH q38u/ٌqT2V$jU&z7;r_Ikk,9{SLpIA}8_`(ct(e55P:([\ \Z2f.Yo PBzPv^-h.oou'uAxK4\U3?HpFWUU3ZAar@YZ_XHhdG"K3ec;AyVA2gOC>8XDSjA:g5+R8{_G'v@Jxpk:'pd/Ioi3%Q=9T40xTB>7o@m@,PD~h>!b,<zeE:S^AYiK>tC*yM {Xe&:f Ol\*6m pX7+ b]O]/]zICk.pH5eG+;S'FE8w_1d<gX))m.e|X0bIT$\F']xBam7-_ %8[G/S+ESe.&EV%6N%H#\~4UQt 0{4EydBtLiF.N0/HEM&0+K]E?'5{.8vA2zc4dmK)SS$]K*=R E5hb<8h5{F)"|r404%uo CqKg ff3t3j y;p bcp'c>=}Be[.!w|hM'{nVb^E}h ~6ǹ7۵2y c~E]mcRe۪P ٪YFl]@ɼUѸgG|P2ϫtƣ]թ>Ľ2fuƵTε*ͰU~:0gT?飹I相X0؝ޚU鈮`8遵sؐއzՍƇҁ`~{słx͒YXǁzYW2j8[4~D9.%:';={;U$TaYeI}#1&G\uk1w'&R|Ht]AE.6=;>[[\>Xlj=qSsalute_alt11mk@&ti$Zsu+u1>|,(=!H)DdT>}F>A.tjEvGhB/nahFV6G"q9h{-a_qD^Bsh|tCTd3WxyNhJdh8Fm[Ez*]{}pUǎ3tJiUΌg8 &};Z},|xJzف{4{Fz:++2.{ $`"s >Md0݅%ˍ}xL~Fƕ<]Kkaۆ3G"&ZMi\j {pu|"ikjnՋ{9Ԅ>ÎH|YMӕև?І0tv|%v"omlpwgmhzjrʅ0qbҐ/ inarcatfӆ0҆>@,p6gin;q+nin"o)Ōn/mmck6;>vH!t@;H>R.,HގAkD^-f^X[]ZK=S8-BXX&\eV a YAzUuf(liu't>wKGYX.k[9.gO>>8PBQf?2a3(I5}^D'9Fzmj8$mc+Ili0%W46T00vSA:36:h>-FBl9c.1zfB:L[KOiI0 uM!jA}L { \"4bOh] %(i j K D![b]Ol*^J>v*oJ054nP,QOV6`$gj_7nO+h*z5 r"^js4m#Di-o em*^F>c*%Y^6]IZG1URyCsNL,414c1|qRK*XC|gV 9oEIPFV8to(h37F.99{P*Y6tv,m'nE4|r%m2wR^qw]Dp'tb~:wsb^/p'^O'~stdOԄX-dŵ?j֪4X-Sظ-XĨeyFjʌ;Թ2&͠M#G֚gNgE\û&̱ 坎Q9!4֗rV sYћktӊ\mV'_٠lלzWߋPΟ""teG=슝q'-R~X߃>ӃbՊs؏oܘ5ƇXϊ?ċpȑsɕnҎXȕqџȝtdѿ[˿yt2j6v3D6.?;@<L;g galeZ#A5(X[kAw65RH]AE.k >q/)>E?>aЩpbumflop001dcU.'A!N*Gdp?}hBa1vHwLib3u`I^M!;h.agjDhKphnCbeZ]zZmX{du7UpjQzNd{cU-|),|pZbe8uE<}N}{qcbyw≢??4|((PHy $_;u 􇋸 l\:%HWy&C3WlhpPpjވ֊1 ~"ujs\9}7ʄAVǞوA݉5ӕ,ʛ Ɨwhsi|otmwxy{ч?Ɩwiя3ě'opmwlqx^ԇ4φ@Tȗ(udrhs5uLuopF9@<] 1֌:`08,փZ]Am+mVjhϞpWŘoB^H7zgKS]IRi&;6r_. j0Ax(Jt$VEcGdc #9e"0e(IR].\ddOw;f~X=y:W2H=Z~Pʍ=}0l5-L&U) #!ci1"@2j2 @,92UD+1C+K7 +'24~R;)bz&-"}l34A(@5F(1x.UAw 7[ | v[ 7U!Li;tޅ^ZIK̹L1Ͳ#K#MBoH3CJs-g60eubM^A}7˃ƀͼ$gܲDد16d"ƔXњ4"+ْPD՚dIیiJ02t<,TsFOXy'oYut#t7r..zr5z!O{*0zlt+h)e]1rsK;u uaycl #]TMk[ k\wTTRH]Ae._->8>M>筠bumflop002Vph@.bcQ.Qnu'mD37'I"^/[8v>um<|/yKuUiy/`dxJjU"Ah9pvVsFX@uhtw?Vd=QzjNmLdf9vInRFz6WtskUl.lpNpY8h7$n1o‘OW݁@qyUqމu?u4v9v+y(4/_ k$G"t;O\g G6:v%&ڎ2qxIyC3fLlcDMk/Qo^݈y1y xv~"hj'ec9l7sB|VqPMГvBx5x*& ghcilofkjxklv4gg}3'`p`w^qh^u4uBs`(edehcVoBfPe0f3rP&bGʓn5v{)lC#VW&- Zh)"4, (55$ E$W3{H"~^#S2* &{/1'Pv7':i%m*u vl.9;+95@(t+x)W^yeu  8 uDW}Vi9RۆHN=H=4Ʃ2?-Df`>c914rq1-cUa<^&ɒ${|ơ̰ q#ڪJ˧;4a$̋YגC#5ڌNJ͒bRԇgXܐ<@ߊN;ᆏbrE15xAtR8y?y"Rv&FD|Q#g}.D|2nDm?iYCtrRl`_pKK>A>ϭB+bumflop003Vk^B0^RR/N]u([I.7'Fa-_}:r4-HrVm*bZFlRyCh}>ptSn7U@nhor?rUd+QzZNmyK}dc9lInHFz+UtndUhr~.h^pNpmX̌qe:jk4Vր&my9nفzq4p4tr9pz+i+!&Nb$<S0z`+,K3XĞ=K|7Eu3eb#i`+mQ2YE.qO(iW5bFb"@|K@hyRof%q.rQYNj onvrlHXGSl=`nBnNm2i:_s_HLXGJQKGD74Hh:5iJ]/zD:U>R.A,RW'8Us[C"X:,[>5;PMQ/3=KV7|=5>-o6zA$T3\+:,zBOT[ IT-] aNS.]V I2fG ?.nD1o@3XO&IEŔV6vb,lCVW$- gk%.) %./$ExW,rHw^T-) % r|q*My.'mc3&:W!Z'cxtl/5z:,t90l=(^+xr*m x^xerw :82ueXyUm97ӂ3 @3A33ʫ21 ;DN?K:!#[( +e{_>r->x8eIbumflop004UjKA7^8T3MEr.?M08,C ``{2r*([?Qm$N_L=~fMw@h{@nmX`PE`hng4`V6RzIPmlNqotd:^Ln>Hz%VtymWBgXp|.#gC[PpUZ:Wf;iwk!Xʀmx%ḿfp4|o5Zq;p0e";hDCphoTbff#O~4p6YIX iV!j]L^4V|gBfHnSk e?VsbH<]ICRDHL:7Iz;:mNc/D/T5P'@%TU'7<}QVO=0?VT,>+><6s?2P(0W**<X,wANPX(P.X ^MH0 fR#L2DD(5-(l?8 UD)BOG5F?9vI1͈FVX%-gk$+)&..$E~X)wJfvTv)(t$^{^%Nc*'^WP/Nj$;FG%N}\l/5b8([;0V;(H-}Z,| _ X_r^a|dawz;~ : wEXU}l<$y$35850ɳ ' 2D=?7WY#)Ħf)^'_ Ŭ آиơY'۹Dʶ4Ȟc3ڒT.KCGNѢcZ؛Z^ڨN➕YL癓sdƐbVW^l,[^Wi w<\Vh$cV_oUw=^~k(hzTc鄠r_`쌕bPwDbٌui߁J`cۃZw@yX9ǂE;T {+u&œA-Ԏ;ǚ! v1~0Е Oߡ%"vb{5jv#srq`Kx)c#>/:4-@ U>Ll>)>5zuA[>GND? 29y45LE#5EN? V0gM-'8:zNL'$N!03{NBJ?2?KC/:H).z<{H5ɈFU[&#!ij$++)// "7](wKeww`u'{(p$Z{]!|Oa'&]xXN,Nh# EF$L}Y!k/5b6LZ<.U:IF.}X.wa[Xq c\ {daww;~}~; w7[@zl<%y#2565.ǧ % 1C=38WY '—f,^'@ ԓ̬ĐY"ׯAɪ2Ǎc/ـT(ߎEޢ >ߎJђcVً[XښI␕TG拓o{d|^HSYh%VXPc qv,Ґ>E ̠EמB~ڱ,'n* 'Eۮ MؠT6=ha f >B%;7U0UXXn< >Ik>AI(>\CQ}6bumflop006xlCb``SPrNOOLOGn%`*¥-J*`4e5t7.~9lF/cŕH}@*H=5+?.&-LJF;M2AU4N'/1[L},Y.B22A* Asa{5r-X%'`$@4/U$-3I$.A-e ^m(X4n"o o,oUK.NMABBW@@A@9eg''$j聜O R+ )%(I";aDo} b{Jw(l$Xȑh_hKcZ\Uf! MMLR&g12h1?[>/`1>G0S4n!bgPppN~q ߋWvhu#m王 )!y w : g es؁ 2.h.6595-ij,1KC)>dQQ&$ťJ/T'HҸÿɤS%ʄAóp-΢U*'޽EĆ<ߺ!GԬURݭRV׸dGὍSÄEif}b'W^j0X~Zf҇p8XWi2d&[lIq3\j/fG]lHZ[oCX禘`(XZTÓ5aLrLҘXX ].Ģbͦb}ʻTMޣNNkһ?:Mخ/VN9bm>e37>>t >H bumflop007t.C^uUQ_%rNM1BOf\n!X$Y1XDb"qF6ZT-a2diSg]J`5mh62dzX`m|aao}y};j]qnLYmz6idK>:*{|2IPk`plm:o{7-U&=l̀1yB˄t5zGR 5ށ*m:_-%xiI|F{5R_lNЅ5=Wǽ%CWtЈ p[i"k|yo&q{cl99CHxRzMhC5`~%'cr |hyiuyhe}xo}󊍋5}i.$vmkvr}tZf5C{U+j{dlzhy;|){vmyR9nIf:q<`mCeqBaV1hb],:6+?3E)W&li6F`CLdF4VJIM9^5k!EhQWh]O b qcI{vg:r"n82h kudegbOTfxmw9BɆ6<Ţ=6ӑ=%#.ͧ#5ŽDJū>P<$Ĭ*qZ ڞ#{dFb1fv‹{lقxgs5 -to(R\SQ3]2QT?goIXmG`2:N@T9DbF:%,xN'_D&H*U6(Cv4>c= >z-bumflop008v'C`t`R^%rOQ KTcXn!Y'T.Y?c*rF6PlU,\4dhI(lbDj[5lg61czW_m~`Zo~xz;l\knNXfz9h\EC="{y2K Pi_pfjiy;0M&7i,x<Ɓr5uMPoɉ1kT`"byydfye7CyHkPnM]C5Z~*}&]k x {yhvi~omwh_{xi{~}4{}zi.{$~sp`suqqZ{}^5AoU}+_xdbwhw:~y=xy|tmqM9gG:bc _9bBoe/NAL4HambAor+6\ݐ0m4]fCfj?cQ.g]5m@AW@BoW1l:1.i95y|@+zS(lb:FXH}(]G3NM&G8X6e(nCGL}SI`L sy_PeH Xuck8l*mjlf8'q2eKuEDd#EW|!2Vb![i&^9;/Dz8‘=3~+$i#)ʔ#3|DEÜ>I<'qtg։"ed@b.fvt{S kag[4g +Zo%7\9Q0C.6T=>>»k&{bumflop009z~$Cdo`W["rTP IScXnX%T-Y?b(vD4PlT*a3dgH'p_BX5mdo2azX]m]Xot{;oZjnRUbz>eWB>Bz}y2Pz Ph]p`fat5{G'|1e}&}x4~r5s&.K&>W?8rN2gQAcBoWF^UMidGfp-\cUg>":bD+{\JZWR [C*{NHxC%q:2uB)R?G1.Q(EPL,+%:Q/T!%sL6I:QE"G@((D#&H|LE<;/=X7#(-M5})F .'/5#) s K|r% R$?/8$/G%JfBm'4FRnO0])Y\P=G]:RGB}T9n2L3t>CH:GYwAf=e8Gc6UmGSSKMf8bPb2YW!IZ4G?YX>IIEB[62VWDJb?g[8_J%PvB:@I>OC&/W;BZV6X83-O94c{B,cxT,mn_@k?TJj(XI3IMp&F8yW9~b1dQ0]I fZ'8@P\yiDFU@qd `:g4fj#d}&m:}5uo!Bq$LFk/<`46Jd+Pp6b<6*4)0r)"\#&Ç1nDA=D<$}qbZ|!WE߸+61*T#RD?h\ `KK,8CY/S:e^q/>[C>j>A bumflop010{|$Cfl`ZYrWL BNcXnX!`,Y?b!x@2SR)a/ddMoZEX5nho4dzZam^\ov{;p\mlTWez?fYB>Dxw2Rw Wiapbkcy7{G)3j}(x6t5s&ȁ]˅O#xg(z4s0Iak@†'/"L=MJnr \JW"Y{y^`y` 9|CuKgRiMWC~p@DWB>rR9aTGcCtXC_TPhdJ8o#ZeUi;"9\B+G^H_UZ \L%|JG}E"q=2uE*S=H1.O(BOR*/">N2T$!rN:I:Q}G$GA*+E%'E|JI"9<0;Y;'%*L1}'D .&04!)s G}&R#?.5$/I%Jf=m%/FNnJ0Y(U]WLHb;WJH}V@o>W=tGLHEQ`tKoHoEScA`p~Q]]UXpEo]o-db"Vh4RJTcIIVRB]=8VVKO_GmZ@cM,TvB@DIDSE-2W[d52St;9g|D2gyV3pn`Gm?TQm&YP)ISt&H>yY@a:jV&5]J(j]/>@Sbkl(MFZGqe*g;f=mj-l}3yE<%qhZ![E>d,yfvh{H `VaP0] )Oo%*\,Q,8,*T9BoB2i>< 3'814[*%zN>G RH"P$%?F`F(Q5HQTTX$]CQ^\ F[)/^Tb%fFZ\d7QTU^^-5>>Eo\bumflop011s/Cs`_iM"rd V ITld%X&`5]Jb'?9`X4a;pdbtLRyc5rju5By5{0o̴"XЦ,IMTzɉy dUސc"cykIk;j19FKtRuMeC]F+GgO\fw#EYzH6aIPuRIOA]:6i-UjXt*:=K6N;-S+9u[](DpxS@&I@LO>-[~O`9G5>o F-0@(U:&I1.):(LqE%u )-K31$5/O `3b.#A :d%53Q+K e[>RiMF\RM}]Cn.l?}8_V5d]A=3eb3snDkO_M|7Ow/Vi Gq4@XYQQHD]ff-QUb@dl@e7|V"t}N5]U;kOSXHAt`5v8@)pF4|M,^.iA?^LIbP3TPGQ>a>l1[W[T!e\f[yrkE_ lsn;p4s#'<8 xhspFt']]+UJn'rm50D 4Σ!8łL/mL]$+ˇ!2pDEʈKO.$‘-hri{"^EId0zc#{v|S c^i N*X (T8$.a.P$1'(Y3@8:/p55 ,".).WO*;)3y?>9T8A$4;_8!B0 >RITI!O ?GfN4L&-W UV$\4QcW"9I`MfQ-1I!sU?Q`Qp6s[xJ֩Ne(мW ڹP;-oܰ3(R"ȼRD?hد\^KH,6CW*P:c]G> 9(> (>U¦[eO[bumflop012m7C{Rfs@/snNZ E!Mlk)[" ^8\Qp#48NhR}IL_qqU'YK^ FMՄW@6ǽp;e۲$/5t}KF5ZqVA͹Hܫ`ݘ6ΜQǏN]І m_ܐl"mytGuEq59FK}R~MoFmjQnRMPPw\Oha[pY"e3lEmj]l8#lzh fu/AYF+Hh~[gs#EkkIHbT`z^WMMZ9@t7Xnew+BRVEE=3JvihIO`GMU@K[A7d[Z#D7?Il;P?7T|1H/j.6 <&=F#I q&j'v' t2-@ G@#B%B & R \A O f7 =(6)2ma?]rOPeZU|cJЊC'rU"vX5#-ui l3zgG)DUEo@hcD֨W;e!νY ڷU;4oݪ:(S"̵RDEhۧa ^KJ,;DZ.U:gboI>s'>b>m"LXZbumflop013`;C@&fz1>hqc RT-8 ?`iz1s!"Z@gXlN(G9SgHzFkG[c2:lg.}k8LcmbW;y2~UgHSOvvwV?]H/k%lD [{iw|{PCP~3z/w5zD(ngIHzYsŞg>/f~$}̼dnznd9|noyv扆.}Ǻdè*}˦ owsaf.>|Uȱ'i7vp1(nn9{]nmANeP^kZVKR7=n4Sncn+>SRFA=/J}fcGKy\EMS3_YR#B/>Fc G>#?$@ % Q \? O f4 =$2%2vc?ftOZhcY~lMՊC!xT{/%& ygl+}3l4-|.7o'#yEi-[JhcnuYr45v0b|^.Nf6&ZZ@o/_&>b>/HZCbumflop014VI>3:_'QhrQ PT1>,I gky0'w#AqZl#O4M>NmRrBzsBlWl/3v|l*g9WYy\TėR~N.HQp -|n~lmMFu=)K|OzXnfɲK*rϿ zϲkюpyɻoE5o}lۇ<ð+{ɰEȜ,v˞7hb_ū*¥K}U|˧j?d0&6o9\92Q݋i;)xhrNts_KbXŝ[oSeYavBkUnfRɡiWvvTh{`iw ]z;3Wx5~qB(fr{/MzFQH(u+@fZt;anz!:pn>TeN]kYVMJF=f5Moed(FyKKT?pSHkFÁzA' c l! p\l |bhv:(9&/we w`~m9I :ȓ!vJ^ t&$ӍI2DҖ-"e(nq.ן>ǎЎzPuDj1hkqu]ЏJ3,p$B>)y78OqHq.>!>% > N[bumflop015[U>9E`*Zgf\4PV0B,T sr|=7~-Ndn/KL|`tJzvEm[{.0w~{*b7`WXQ_7R~+n8C[a8}53JF|tIo}myXщf>A3rd'n|H@DfyZbjJmp2Rb _κ!W B|.dΣ'5NىoOC=lЋg HGǯXȔ5M 2~ȊND>3KOxK*$ʹpd9pj߇:)ķd,ǧ6ha_)KTƯ|Fp0(og7W90Jڌ_:)aI愒 n`Kzj՜ipϑNcQa=hMmrRҡzSxNzZi TU/lW4!yJ8fkIY\(|UcKYzVTI@F6Zl1Cp^Z(:R~PIA?-FaZDel\CT7GY< /NX@#E"JCJ4KF/R0+E$l.&;>LHG r j#x( t3*A GB#C!C ' R \B O f7 = 6 2^AsMuiWInB&S./% gk.9}3-3:}'#~e$u5kV"q^k$Rt95|/ d ~\5i:T_Fu08R1^;d0w,&>J">rdebumflop016ha>JOT5ascqMΘM3ũ;'P ¦o#ɕl@u;/Qrcp/[O}_}Ihƃ@p^|.6xn.^DSlSnO:nfH:llAx}{=_F_VmJNXZdt4FSN{ipҀr醅臔 @{?} O]čPoon W.1# s3ϼ'_~󇄩N@>c֌0wpz̲^n<۫1Ǧ "lc>؞4ΤAíOݪA3ַ,ͼ"˸Ԗmٓbݝ6ɑmyǖڛڌը3˶ԖiӰ)Ƽ ӍpwʼnZɖ^٩3էAT̸(ՔEiٓ9ҔL͓юpYDMFu5?oO8u=P>w hT{HskݒG\EZ4h>iKٖHx@zMgċ$Yt1mY4Ӹ#w^H`rco-u(IS|MU8Uk;de%8fiCS]KPzXLH3D4Ll17p[JL=LSDE90>aOAWl^<V.G\4 .BW3%HJA:7OB1K1fk2CINGrj!x.t7$GGH#HJ-Q\IOf==;2U@lcNڄ?mB)O +/!qh/ <1 n,3<$#}f)xGӏ(_ϵ$_f|ƱJ4VǾYsDsPޮ!G’c{i]\Q|K2~ ǟ~6١:s-Aw>5a{u҄"q r-kc#^h)a?h|c c&@E]c΃ =RD D"@&QHJ$'G)H63 /Y >r4`":K /+G)]:r1^@@*Ai}DyҍXA58ѥW28{74*( Ӱ!xbևdγ#̓]|ksRH|]Ke.l>S>(>(%#bumflop017upATwdRR]qrGwG?;'R!i%d6HvG5uWuai7{qVza"Jh=bk?wN|i3d^XkYiZowYTpsLz]]}A:{NAn[ajD{_Gw|y〴cᇫl:S|A,M}S"x$bЬ4-ʠ8/􌰫ȯF,~lTKWp7n8;ނŋך{k٠ԁ]J6CHޓQ秭ԥC9̇~.,Җ!$usrawptsyvuytl9'xZ5%ti|w[셙`9A㏧U)ԡ$wbqt8{3{vg@f9EW9,p4oX>8ᇳ-Љ\ YRhH^saΎ6]0%s(h@Ǘ8}+w9qr%Z"lIhfD2ޓ QgRg .Lo_N| NRoUhed.Igsy[XXYPvfNU3D?GkB3i_JL{RJhEr`9rI;}iP'GTkp? i1&n6$>=b4/]JI8EwhDuGHD^{6kL_Ik&q5r,jf@vaKt[V"yeGe#mg"fg`JQ-\fO:fZ=9X2DU\V?DŽ.mC*S$6%- g m5@=":.E /E,z=qV,x^}&R;9 /w|k7{9]zC+g.z6})!m0_AH=BIG5-p) r{{`} eyw:,9+2 wD~Tm&9;#KӸKlװ(%^J4sms{#lƲ^a\|wԀ^J``sT]ߚAUĥZ5Ȭw7ֵ> 3ڤEՕ\7،i>K/4#&ߝ&tfy "v$*yI~zwsO݀|vu~zpXᅀՀv$p`(ςlx}!}aBjOC+EO0B}C+)";$bd#[kwRH]A̢e.ͣ=Q>Pv>uGwavealt001o_@Pi_K]gtLi.>|*':!B*rLSRN.D^wavealt002N@VuJQbQuRT'>&'3!ѷ9*Ѫ4ex0xj3f%u5v5af(K"6ѢA69,h#afVFOSh{e4Y60U~stR~hVcoj{:QpmhOos:bl}ZC1|\}0;~POp~T^84{ju*Q}lv-jv4yu9k:h**)9ro!w%dx"anl:;oya sxwn ov*w4:UGkMuy2K|# !V TXyv^Q`~LfhrgXwu'[f}v8]h4tLmV}'}|_4^Cdj s%Qpmr!p!RgObTljRsMWTUxxSja;o,Tal y#Si|ZXV]bDa;b4gCp/zv$ToyZaSY0XTikSlL!5dUE0Wcb$IB6PQ5[+*;^.^c*hD fKU3:Jb'm=/y->CDRPSui uNcs_Zezk VnUMPY$Y?_LoDϯD0I/pM:oZ83~HDwbZ?xX0{}c0UfA(kxHaW,=QU-gg,Id!CQ!vb0'F0zl'$h(l"#tC#]"0_AI"6Ph+GM,KcVC zTkeLho&LB|: j6L v1Ut%^ZjGj #Cl":l0TQ|;^kHGfa=E_2vE*p@Bc0[Z5tY9 nz,+/|&ގD^-I1//"?+z끴l7*(' e>h^"#r'4-/=;$)>o'|}2) |w(M ˁm%cė)+-̝:9,Җ$xl-PgZ]3c4M9OPKt=fD9-$õK‡?λIKS>G$ Ǒ0Ȃ,ӽ.y]49'|6jF(BL7(9z g>'}!? -7Q5:"Hkbd;5LI#C^%f:M_ _,Qj+GOm?O]-OTI&kƨ)- BƼ,.d.d3L:!cet aR Kq] kawRR Q GYKűe.ʮa=S>D>ZvE׻wavealt003zH@UmFQPUMuTL >,+#ֳ0)Ѣ+ex(}p+gt,v-gl!C .Θ761!#s\\RF>Qm|\4W}o-U}wqO}kJ_oku:GmnhDmz:[h{SB1{Vt0;zKNn|b}q83|d{'a|-~4}l5;^*|)+}:gq| l$hl"a>-(Ni ~ohkpudnzJuuLv}mv1(pi #gm|kgatD 4~C*}'mnxnhjo/ohmhj#j`!3}SY.o`|']>Ecc5n=%HW4^\0h|V1c_QB7_\0l9;y*P?VNaSy_ u?`hTVerQTFP,R?U>q;ҩ:52.p:98K634BwgI;E.{S-=f&)k~,gD*>X?+mW)PP K7"}R-'./y\% UI[ #|'#J 2HA0"6WX(O5+-c]" z8 pN Lm\ IPr j;. v56t+F]RGT#HW >U55R\TO%fF=%G 2rU+jLB]9UB{UI1 Պ)x?+D1~:0D'^BHJI*6?E&z"1鄰 lE7I2G e>z^+#u}~2A%9>I,1>j1|y@7 xx1Ḿi1$_ǖ9!;M>˝TP($ӑ:xኞ*A#KY.x[Y¸Gk;yaв4j:mb1ȫN٦&G&+øvT4h>aڭ)1ע5ڪ!" tL(ʑDpW5B$#"{/J9H=7g1 %3!Tc@ҚM %%+0-r6@-/BD.B@zd-Wg8]=[dN-]/Oia(hi2mFkţ!% B̼$5d&l+=1 ! \ c #h ]O}\kg w]]RH]AгE 0д K=>NJ>?S fvwavealt004vN@PiMMTWuPR$? ,.#̩5)ʘ1dt)vk,k/v1gm"E1Ƒ<65!&sa\YE@[m|`Fd+exp^kNhor|:NxleLzz8`stxXB-z^Ôy.7wRan{~;}:1}l'~~,5ׁp51a+~+-~9ls}o$hneC˦?hɧ #ϟˠ2̎|L4> s:^J-*u8=ÒQ_%Y>i,T>kR||_N!t&wR+ՃmP̓9_:ϗOORٞ[ [,7ܗ?,w'l?K MƔY%vWǬlOƷm@z7ͭvaԳ8`nkc4ڪ[,T+$ѷtW7pϘ?iް5A"A05 T)̏7h\7Y*;(ݒAL8LF5r@%-E-D]$ޛT&! {+,:!7 ; |1n=9-m-uT;=}MdP4CcG1T<9[]=Xk`;cD"kƗ&' Dȯ)5c'g,=;! a e #q eY]kp weePI]Kڢe 0۠ έ=ո7>l>?vwavealt005pM@UfMQRSuTU$>"'/!֞5*ԏ1es-xe/]#t2v3g_%H4։=65)h!aWVD?Vipa?Po0Ow{JkHcd_z:CsmoAtz=TppXA0o^}{09pRInZf84nlp,Z|s}2rn9pp5r;ȕd**0=p} s%ps"pJGt"%n2v}+r4<[NYA],/ g[ey\zUvv"qgx~&dc8j:q4{>rT&t4w Ky-(\} fzamktfzUku\l}lt1(fiz1$]ma]Zhes1r4pD*'dndh`d.d^mxa-sW!KsTS9ixo'\9E,`V9`=,J_6c_2sN lWKA:[V3k4>(PDSe[Vg }>ghPZecT{NW'‡X?ˍ[LlA֖?.91d?;6M:?z9FwVKAiI2|oT1B"Dz0,km4 iI-=AD.VW,;Q"4=$vS1'63yv[' zUIvZ"#g1%M#2JA7%6@W+7<-5eK,k=<`OL_YI9)rs" j&5v<tIGRO}S#4V%T;Po!\zSO.fI>. I 0}O)vHBb:UATFꅴ mw$)$ |D ^ I#0?wn hE)(*&w͛c?s^'-opmĒs1:/4?B,/Cc2t<)!_ wz0 ؃[.qJӗ,*-ݜ2 2*xᗏ wl$ X]*x\R=ʂ9xe9lxb3[(Nʷ(!vR9z>j3>=#з)ÑN>ˏ6؈Y9V+3#ڎ> M:NF6x>(*E'Jg#UO#|),1#u7$=-!4A522}\/DVX4JpK/[0@sf>bi2md#kȍ&) Bɢ).],_/L:!cfmXG@l] kXwHGQGYưKƕḙ.͒ ĥ=*_>:Y>ɡ1 wavealt006sK@EkLG[UtIS>'*#Ԙ/)΍*ed*}Y.E!{/v.gK#E"0Ԉ760!&zZ_SDLUit\F\dD[zWhT`djx8RqnyPtzC_stsS@+t`w.,sSVpb:l88un0vOa5vQvv4ul4v<̔_++CCr p$ys"xs HOnÖ0/y}ǔ+xF܈9Xjk,P jzz}x"lx&kc7p:w4>xTډ&w4x tyς-ڇ( Dž khhmojznuo}ow<׃(ki}1ꈨ#fmif\oDv;v4uC惮*'jojhhk.kghg \#up]oqo,OjOVqkNW:^4_XBcw@wT ^UQ]gaCzMP{G`~h^^Je MghZWfE|LS'SCʌVKe?ד;.H-dL88W7=}FDwWT?mS0}s\0Qf}@(khDgT)L@O.U^-/["+K#}\.'D/zsd' s`&pd!#g@#Y0YJH E;_+3I.yH^;? zpN M\ IKf &)?rd8jFv NtV8`Gm` # a"bNQa9^laOCfY=A X 2V5Pe{FXlOiTiu$3!%|B `+< Frpyuse/+4(\/Ԝ!c,FXr*c5-S&Ř_/›[3ɍh@B2<4K/9FeAyI1#;աg<'_xE:S"+,۔i2 /$u1,./Xoouy hu&# rFζF8A?cǴ˸KSHi|ǾŏǃҼMЃ8LҎރ)I⌨{6d|_ |'}l/(0 3K4&8O1 C} k $ _"3I*S.K e !` ag cU #;-Q]j8 w--RH]AE 0 hj=Q6>~>-.Hnwavealt007pN_LdOIQWtLR A'+$ب/+ԕ,ee-U/E$v0}0gG%D1ܐ961!(haTZE9[mxc4ao1cxZkGgoo|:JwnqHzz9^ttsXB&v_ߒw.-rT^nz;:0zm4{~9Ȇ4~r5<ҥ_+}=19m|m,tmX̥U˥ *.Р͝/̐|Lٌ4ѪFx89|E82(f3kt#'g44>J36eJ5CF,;.-vC7&!8yO0$J'(O+%p-=)0?A$+6LK5 ?*6&cGh19aGLaTI'rml"(v3{?!9N M}N#4P"Q2_]oON#`CK 6A.o.fDeWUdSk#hu230$|'f`(L-0F wn vh!e<+A&U5ѕ!c1FWrz.c?-L'ĘU4˜Q;ȍ^NT/K4`*FFUPl\?#4 uaL\ۃ'qBAB*T'm&mu{ks02 bƓT*uaūlQķl;z9ͬulҳ8oc8کj,Z*ѴX߿9ϙ?wݰ5MI-0忏U) ɏ0h_7_*8 ێBL8MF1w>,'G,Fg-ߙi&# -%~+20t>%S/1JM4<2o.UfoaFQmT.a52>ZGwavealt008N@TMPStQV)>$&1!8*6d3}q3m't7}8im'J7C67"/k&a͏VDsWhd4~d9zsv~h{bdߕz:vpmwsps@oYA.`ݹ|05Srpy67m$bqAzn {w GdC}ZKjUr~I k-`vltwNG #>")kQwK]OZ_{>X ox 0j)[EqKq_[Xf$燞iu5.2$|(B`*L+0F rp s*eD+L'b@˕,aa\EGPy[ W#mK>{pӡwavealt009N@RMQuUtRV)>'&3!9*6e3{6q*v8vϿ9gr+K"9C6:!0h'a|SD]Si]?i~dDesahf_dv8_nm~\psGtotVA2`w06S]pgu80b/Gy+(q!#X%}u/'~R2yf~& juIf|!$YH'j"/}eAQ&6/z*&X/vJe8>kqU^_>@8b /Z.IE{;qiLbY#쇘mu4.2$|'B`)L. 0F wn }h!E>+C(^7͕ b/Far%b@#Z!ġe*]5”fKQ%B4R*87eBvR"A#?ugLc!كDKU+߄,4ՔjC@'vCCD*Z'o&su~ kw24 y]^j̷:~:cm^Ǻj~3&ܐGw>k.k,geGNDC7WѢNUFGuikNW Yrz\^enyy1q#'>4owavealt010L@GKGlStET&>%'1!׾7*ְ2ev/}g1`%t4v5ga(J"5֩?67+h#arQD|YSi׌TCf}dDaw^~hb\dyp8\mptYpzAkptnjQJ)_ܘr.,S]per65n/Pb8}xT}Æ4b4:`++>4\.Jn+)h"#U$}j.'}N0yfr& flIcq $WH%c 0sa@N"62o*)S-mLc4BzfT;Ge KEp I @rZ9 jLvSt`/iOcj#mkRPU8\`iO|Df_>E ` 2P5JDw>XjFgK;pz*++ ဵ!_])G,(.C$ z o㉎mD*&&M`” cCdwc"-U`[ i/42.4@/+Ff4y;) TxZ*s ̂D'm>͑p)+|,М67,v֑ x n)-o[Zj:ý:gȊ^j}̵3&kȮ(+ B*3`.a1L:!cco XJAl] kXwJJ Q G]Kƴe.ʲ =>>1_>ewgwavealt011rvd@6md6`ou1o/>*';!F*Ad^;}Q;M,tqBvEiM-o]pBS6E"w6h*aemDgSoiwpC_d=[z{YmZ{dk8WpcTz5`twl@s.tnYp_8h7)r-pN]Ѐ:oxToՁu4w4r9++4/p $X"Wax B|5:-ώ&px(wF5pVkl؈IY/_xaӈw q}m|zhk}kp|͌w5}=ÂIxR͔͞|={0~m|#~w~mpmdr:hmfzhjnz0obς/!mogqjcuB{0{>wJ$|p7ibo;q*o~mpQ;E jwAmVa/OUY?ސZiOEY?M[ʔgSTeH<܌Emf5gHd9qQBvRGyiJjg[ eSh`pfy4|gfr'o>sKOUV0N jKvPtY.`GXa #b"aPPN>\WaOpFfyY=qF{Y2G5NAmFÙkAҏp<݄<Cb*!'l&G+S0$2#2&+; c*?$8D I(!֓wЖ@A\#VЈgj"Ĕk̒y"ڄ)<.?902Cm1А0b` 6c } |w"菦( s;bF݃"^yq1s?~Fu8k1i_CpdUEśAÚm `UUXUT7Aώ3ѐ<[QQlۆdkϾViǞf "URdքf@5̖'0ڞއo2IНK5/HŝJÞC还LT{/l3{2D4.K8K:L;l marba LB6`\ kLwBBRH]AE.+=-$>ֹS>R|Dsniffsniff1\i@'g&ptt(p0>q,'z=!I*CdT=}I>D-teDvFgE/cadEV6H!i7hp+axurDQ[titC{md*sx\ih~dd~8pamFbz#w{pU5rueizno}6$:uڀ3xK449++/(d x%Nß"t LWi=/;|%%}IF5Ogk` @M"r*RM`uۈ;v퐌!yIc48CKRËCÊ9~*( {hwi~nzhv~}􊸋9'|g5,um{uv[^9BU+zbgx:|3|whsLtGڅHkc9؈KGnh 3H{L7t+nbFs.)iՔCxMJgPB6o?b^.hR8kXD`?BɟA8gOFiJ"ONJ I]z}mvf-'hWt'zr?uKGVY0X?d^O8mM=QU^w7hWJgC}MsBdb)fUM9kGR)gh:L*b?9w< q/[0}is@'cSBzN}4 Ow(&M|-#EM1rm+0XlJoV-6&w;!Y>TU^(JzM^ 6qI5}IHrE@ j Tv]ti'vGLw #y"x\RC@\KwOaMfik=aMjk2sO0cf(R]WHɖ_9j<'L_'ch,9.΂*9!:(U:+%E(A8$-)5&7,T}B+p-m4r)t}$y5:D)F1M+f9ty4ˆ_vDw 6  t͇ [8_>hŅOڄI#[͸3]ت3Oݙ-H۷#UǪEm?g;8Թ;r0ás@!GΘpVmKb(½-Ȳԝڈ/"8ʓg?"i QˎpOy]F|Nm bzTtوp~h1oy}"lsko%Ύ1v\`s_|_bI}l~gh$o.}hqWVGT]ar\cc>WVHU\bw]cehhEsg^glmk0k3n4D53C:D<L~;^!^abeT~#A9/S]w kAw99R}Hv]Ke0t=82&>{U> sniffsniff2^h@*h&}ut1p->n+'xB-tdBv~CgD/f`"dDS6F!f5hl)at}sDLfthwDlup!vNuzulp8ekmvz^߅HX!|&6ZPۂ} y%v}Itp8rp{c@QIvcvo4=$++vvorrk~vvvj|oLur~83ozl֏xwҡx]xoz^`?+qgpun܊sFw qw[m2bf 0TY9sT-$i~@M|utFq+pϗ-lT8_n[:\`SCD^IFa1Pz4Vl?al/Yщ Cizwuwc5-.h^s'}r?uKKUV0td@dyiOo}yM3Ja^w2uXCuC}FB]p*fMZ9kA`)gvu:L%p?4<.j0}`A'Y`BzH5 J(&G-#?[1jz-0SzAfc.6#;g=Nbc&XzIl 4L2IVrBN j bvktx%GH #" jR@O\GO\\fcz=\\dy2_d)MmH?^ƚGU{PP9fq.,( j OQ.'*&I: qDp c$J6 2"yԒ T.Iqo1T/2cĖa)Ǒg&|r1݄D0}HLmU/oIKY?}lD,{ss, mp r{ .#!12$v se܄#1Tۄ]%kջ4s߮4k-_%fѭdwFiՋMH˷Eաr^#_ڛiVhXɭa8ռ@ڲ3뛍DT!Rڕqj k֕hyރ]vH$Uܘmڒz䚅銙!ꄕЄn78tr`tu'z>|%<}knLk\vvc~Flo>m\wwbz}҂oχ{}^{Ɂzg.k0l3 |f33B9E<~Lx;Z!Ya]cPx #?6-O[q k>w66RwHp]Ae0==%> -W>HWi/wlsniffsniff3eh@.i(ut:o,>v*(;$D)=eX;}P=F,tkAvAgJ/q_ lCP6E!l4zq(ay{sDNgthwDkui vLxzwkp~dlk:tx"p_5q`oheumvЌ'*-|6}Jށ77̌==CȽ<ŝx,ė*hϝ bb FE܋/4*{LE9:{xiޅWl!(H kOقn􊠃)|~IrpҌihpZ{`NK'h[fm p6wC*?{?r|ltix񒃍noiyCqnp{Fqn}ji{՗wuǠkmn]YxD>{nwrݑzjjzoeyu qq{Zt0^l-7!Pf < W*"}6\~qoEp~= yϏ gY)]rh^:YjGPAp9Kh%\x.i:n.Mgш Blzzsxcv904gjr,qCtATUS0vf@p{kPozN3Jc^w2xYCxC{GB`r+fM]9kBc)gyw;=$t>5<-m/vbA'ZcCzJ5 L(IJ-#?^1n}.2W|Aie/6#;k=Rec'[zMo 6L5IZrEQ j fvnt{'GL #"mRCR\KO`_fh}=a_i}2Yg=ElU3_ʘ<\|G[7cs0(,!눿 SP0% ++&H":sfnaU40bhYn&JfsV*Yu,/FؑH)ؒP(~a6wB5nB>cU)^CAIC~_I-ez^-~n_  a }$2/(+27$ }: hbꆶ(0bu-Ծ7ݲ9-{/Ѱd6v֋h"]Ϸaڡ#~ܞgbsoˮaNۼZ߳VoN{!sޗ$֛hލ^K%A֦hҢr۬㛝#啞ŗlMHƑ_,?W/ؠ;䑞思=߁^݊׍cҔ7ՀQԆ?͂\ϊȌa؍Q̎WƗpȗfNjP‘wm-k.u2 f13G9L<K~1`$]abcU #B9/S[v kAw99R}Hv]AE.=>&>,)Y> fsniffsniff4Yg_"jwt3n,>u*(;#D)=eU:}N=D,thAvAgH/m^ iBP6E!h4zn(al{qeCithoDnui-}Qzzlki}o_mk9xx$l`4sdosstm~nj*UɽBǜ,Ð*mϙ ⋃鉟2feь.PI}Ke7J|xًv$(c eՉh{싵=IinjizpxYJ(eПahŽ2hep_ˍ+ɀCsCqmܒgx~~~k灢lhs@qْjitDq|zҍ|wØihmʠPrcAovؐljqaw1t|pq5of/\%ae2\2u)?Eb7|fesC%Ѝ)lW/auqW8jgnQSYs=Ow3d}DpOqHMf҄';oznsu^mEр4*gdp,lCnJOTS0rgBpulRoz{P3Be_w*zY?zD{CC]s-fI_;k?e*gux>= v?2=.o0v^C'UeDzH6$J)(H/#<`2k~02V}Aeg16 ;m=Pfc']zLq;6L5I[rDS j hvpt}'GL #" oRCT\KO`afh=aai2ec?Qj`;a̛G^ܐS\7cz/&.!퉯!RԚ/+,+"V%<zensit`~1q+RR]\UNwG'Wh%/4<*ݎE)\4s94h:BgO3Y=_IEaE x-!WyM.knQ&z:Ts)//"}-4/;': kbz+.~؄.ѷE۪F,.Ҫaeϊ~!jӶh⡖/qswvϫqbᾓkdwO#u喡$ڟxړ\A%ޝB׭xάwٵݣQ$ܝNܺjm\ǒړ^+ӝFߟڛWۡ/ˬ;כMՊQё?ˌ\Εřa8ÍSFZ츚gʘQW幥mҷc̽PǺwi-k.s2 f13D8J<>|1_$[a`cT~ #A8.R[u j@w88R|Ht]AE.W=U,>Y>(S5Fsniffsniff5If_hut%l.>o+(x<#F.?eO:}H<A,t`AvyBgE.`^ aCRoF!a4sh)a]}nD7lrh~ifgwi/}M|z_n}ioVok3yxsh`4 s`qssvmo#=LY}l։E|EdtL>TǺ;ƚ}'Š+cΔ ً-ᇣ2on ƌ.VQ߀KfEM}x:|$Լ&h ͽjЈin|;>IioizpyYV&eƟcmŽ2jer@ʎ+ȂAuAq~l{gy}~~k܂mhu@pϒlivDpʀ|}Ɏ}vihms^Aovϐklp\v0rʀtnBXv,DEc:k=x=-<-r.vXB'PhDzC5 F)(C.#8d1e/2RA`j169pe B}^!2k/h%)07$m 8m hcd속)0҄/ԲFޥF$/ӤbʽEɌynϯiݙ%ߔq}s{̤Zaٷi߭_sMu㍟۬|ؒs_L >ңsͣѮߡNݬœhf`{@N%ޣ5"R ΫM._ݗWԛc̠8؍Oԕ5Џ^ВWȖaחN͔SžpǘĒfʏSđc-k0m3 zf33?8E;>x;\$Xa\cQz #?6-N[p k>w66PwHp]Ae.>[ >Z>DrBnsniffsniff6tkAKaF~lKkO5E%T!f2aoBuB4NXi8~j Om]"Es@bwFhjoi4_tpFvsmpijkFow/|C2z<:jRmhEulKd2{{!~q99WҊŌ*t.5ɰ<–`$|ǟ%\Н"RK=` (9a߉r0- Ȓv=w6u:)xwCH#]%u+C(YI,xU}?:R$B{va/Qv`X׈piߊwpEy}CezTqI^ns6gu6i2q)EX$f,Smr[fg[ljCtw59|{Nqjwm+\lg{z;y*`azGrҘWeԟlicotqtEe~Bt5[,chmJwqbdeg9]k_cz;w-?p#!2j 5% z \ېRr7P=p^]!WsIc<:n֋/S#s )IhYyi݉!nӇOcՋ Visy{e] ILcRoy${4>qXNp n>dsO8M3mgZsX{Ri}A}k@x)fsb7khh'a9LOw<\:H-Fp.}?'}hAzm3 n'&l,#fb/+2vJl-6M9Im;sjcP_znt [IZIF]rhU j:iv4rt0OGm #B":4qPfU\lO}bf=~b2?i)2i@%Z([|/]7cs0(* jꄝSP.!')$H: sfpp aq"Uy7 h6P!X`\+KVqI+`]3-=Ӗ<)ё@+ڐI<[J.VG>IX*KDA6E~EM p0QsO1h mO"n N }k%2y1t('16$u } :z sbr憖&0Kѐe y:Ի:ޮ#y ˴psΌZЉl"cϱWz۠XפZPruȭaX޲Nh஝L!ܜX}ջΧrȰe۴57ľsXD-FԏNJϸye13aEoxZvdw[teaْTxbɠAzTI=8X ;vAA/:.!)b,o4$!^+k qXV)L!f-=*6<29)> #>7X>=m#wsniffsniff7mC\aQV}j]mY5O%^p2koJJCCy1LiQhh?pjA{pB,!|l::Mъ/r0?ĭ&Kb%-fȡ!DB4~R%Ր7Qc13p3oČhԋ,vw<ԀDW%l)F,XL(}v3v'0D%1uܖU/Ck^L׈TY_]oehFViUb|LTJfBk'Hy U|.5 C%K%7er=\g8dy,o%~"z.l}KjRy.@aq`gdw/EUx9hΚBZӟVWaPfTeoTnEYukNɂ;Le#LaHmXlnΐ!`fstE> 4]dRz$4=]Ny m?drO8N3xfYsgzRv|A{y@y)fb7kvi'g~:L`x=k;Z-Wr/}@'hAzz4 {'&z-#tc/,0Jl-6_9Zo;l^aaz{u kLjIX_ruW jNkvIttD`Gz #U"NHsPtX\yOef=d25b 4s,4fU/U-KÃ7(JX/-% qk. 81ъ(56,e#W3J^)U>&; p:c'Ƒr=HlC%s&TcIKd=`1YX:XW3rO6̃TLXW%DZ VZ,CErDGʀ},ֆgYb(}ca}~db uzՋ,| $ádX@ k:GӐ_ sɋƋѺ-t |miԌSӂk dƶW}ЩX˰ZMrta\շNkֵ릞LШ]yĔe5 8r[؎D%DPMȺp2?h#6n }h{pxg{di~ꎆ`トiݡJz^SH8c BvHL/F8!3d6o'A-)#f8k)qXU7(/f==;8J H4>+K>O>[5Ssniffsniff8rCeeN^smhu`5V%fy2roPQB\gaH{"_|oTgüOboFx[riz7a^m5PdsYphrUhW_rH|CN;WnSZsAcyBmnM8"(|nwŌx:Mxֈ.u0J'Vh%-o!@? 2|M(ِ8O_ :q5ot͌gއ1kr=ۀCT-i.I,[+,rt%h~#}5Cy-.kݗQi0>\fL݈AByNCmYKEOT@[`?Up(5Pl.W*8b Fa<7$>x2?i2)X-Nq'Uv&g%yt a9TD`<1QOJYX15Et5_Q6LXGBZf/cj0vC'^Cz7$*(/#}Z1{.0|Jb/6j<ef=c^lYzn vLuIdXrO jZdvUntRzkG #a"[UmP~P\O]f|=]|26L4i;iI9PT9>sF5(*N ƅ%YZ.>(ņi-<< +C7I'7V?IB#'̈́w*q.{H$rB>GkS$k4ÂpGOfISf;Y[-qW6ɁXIFGWU OFYL9wju7Ol}/Jlu fo mătpŇ!D/N-I$ZoIސb pnn2u xafpPymcQzдR ĹXK͠o[]k>̲Y yc7 dѡכK1K~ԒV"NǕw[V|9vn=R~;{≜Aq@jniɟ|RpҡsytUkplğ}QpuVSwv}}qVzʔPzʻd[M8j ItQS0K?8b;6-F4"0&f)>U>n@sniffsniff9oChbNalimrZ5S%ct2ȷloNQAZcaGx"]wlPgźJbgzF{Tnis7cTm6yQ[sPp^uLhYWrJu|CQz~;ZjTPs@ZyAdnO:x"'|pmo:MoΈ.x0K'Yj%-s!<9-|G$ϒ2M[ 7s5qjnjh{ׇ1cr:Ӏ=Of/E%Y++jtaw5{Ao2-fӛP^0=UfL~Ո;9yI8mU@dMJ@XT4Te(-Gk&N)0X?U;5~%:n29^2$Qݚ&G۟ Nt"aؚ$tQpܕ[2J>T<+JܟI>TK;0>Җ4YQ3FWC9Z4D9BmGNdBNNerKA9.0pB/a$.gHLC2H_&6c'Abu}$iQs]~e+e-zlgR#4=d} \?d`QopP3TYrtkRnB{{Aj)fR7kZ'gn;=nj=z<i}.fe/vzA'WAz5$((.#T/u,0wJ\-6n:ia;^^oTzi z~LyIgSrJ j]`vXitTvoG #d"^XhRK\OXfx=Xx29E5b:cG9JR:7sF5(+Q! &YZ/?*p15? .B8K'9V?GB#(~)u-I'xB >GmR$q2pFSgGSh9W`*s^3^FJB[R PAXQ5wjw6Nq/Jpufrp{p D/N-I$ZoDג[o΋̋-pymenOփi bY{įY ZJʟqaZȼMhɻ߭ܭLï]u̍b5 8rXD-ErNK}x{b 4g |6np}~svzZztwlpytvnu|y[q|햄}b}ap|Ut~v{zawؚKzи^XF7d1HvQL0D;Կ2b6d(?20!^4k,qX T3()_4>16D2A)>j>O>Խ !sniffsniff10rCteNlkmtuQ3K,^n/ڼedNuP?Yŵ`aCx"\αuohMs˽DbjFSsi}4mVm7rYYsSpdMhbUrNqCW{1ck^OhFXjFdnR7p$|ys:x:RqՈ/}0F&Yl%-u"8/&|Aђ&NX+ǿw.zq͌n݇4]r7׀3Fd*:$U(,ev c~v2{Cw-.cܘWh/DUfO܇I>X@ndJ7XN@c`3Zn(8Ml.S$7`Gb12$Zԟ8@B@=G0dG$i,&mF?B.7^&'b+8pr!uPs`e.k+~viR†#4=ez Y?d]PonO3R[r|hUkC{xBg)fO8kW'gl:Lrg>}=kz/gb0}xA'UAz6$(&.#Q/s,0uJY,6q< k^=[^pQzf |{I{&hOrF j\\vWftRspG #d"]WeRG\OUfu=Tu2EE :_$9XN1n25@#*D.PCG.`1V@'0.{"A&@#,SoI&~2m5Pf9j-i$zp7kH-WC cP%S6r[1y!~Ry _zxez"} E RJh?ؐ^ knoʼ2p raapHyfYźQqխP ɰX@Ǡg]SbվLӪW2w^4 dơ˚J0K{ϒLAÕxZU~9yӌ+Y1݄Aq_l͌iq{WorsjpUhngyPluUYv}Ȝ{qT}×ķGkݽUR :E[0H}P@.8 .!,b-d/'*\+y(rT!I!^$>&6627=q>W>?zbsniffsniff11mAybqklrn@?;,M!Z/SdEvG6NuӺSa9k"Pe8WBs̽7aqzFTqiӌ4~^n0lrb\h[osTmjUsKo͎CRv1bfPnUmR]LjRlьJ)jtu|<ˉ9^}҇*/7Ok$#qà"6ۀ: |UX Ŷt*:~;6Zz1"7!a,#ս L&.fx1r|.ٔG!8hud%VafW֋mY}_:k4sd_wLdGXh:IkM{ ^//B$P$A]sLUhA_y0cr"olt0cxYj]}*O[gxl x~%]NyLZXZOZwSd`ggg8il7h{2],YWlMbgYSbU1YX]PzN6̋T8$M݄F(l-*΂CP -v/&uRѐgY?`g/Us'cQ`8EQ,eA!a6 i6=T!3X$"Z03b!nʏ RsgE<+xeR|$3=]i2V;d\K6mJ3PZw}gTiA}w@e'fK6kS&gj7Lld=||;aw-]^.}v>'R?z3$}&&,#M.q)0rJV+6j}: cZ;W^hLzb wxIv&]JrA jNWvHbtAph~G #X"OGaRA\OPfr=Oq2RC5=\'/U6ږEЫ&̣ߡ3ו;ƢNŖQ؎Dʊq̉sΈpQńerwQkq|Ÿ;kCB )DG5AF,=' !þae   \kw RI^A6$0%=#>[>O/'@!L*Gd=}~?{.uEv´Hi{0aFݶY8K"9h.aqrFRniӑx?co*ewn\h]dz:WmeTz9kǑsA1wğ0>gYmvbɊzs61#f}x,Ѐ9׏4:**(7l ™#bÚ"T)0M؀ z݅m-v+4`G{Н4 G풎#'OishqpzrohVqw]rw1'vp2$mliqhawE1?C%wu~oir u*snlz68s8UI_'lT'lvO11*}>'v)NZ>h*Sя#r,cy9Ds+^N"ZSi;?R,29![I2cEkoʈ uQhivDyVVbWs$u?zLzU\0P:dVJ8hH=LXwiaR}b?}p>]&fD5kwK%gc5LU\<it9Ho,CU.}p<'K=z{1 u%&z*#uE-i(0iJO)ERu8KR;N^PBz}Y aoI_}&A@rs7 j/Nv'XtfOtG{u #;x"0w&WRq7\zvOFfh=Fh2nC3S\':UE=tS,h44L)T)!!^g3D1l01B*75VJ(2BJ1vb%h77uI)oB9cR,K7vf0l#q)nTM~)xAV w}Egr|#t}X6)~U%>"g<Y/cDZ7wҥ7u<]ܱ/^ƣbmERȊFޱ"4ƫ;՘g-^Ւi8sIZ%Ա4٨1B_#Nیx%؎e҅sfrWmvM{*qS{hqww:nq$i^m'ºQYUT&VKa\\*a4]MKKJXWtQ[VBOKJKXtQZZ][bh\]]az2kں77 ˾D9.y:x=L;!ae|te]k}wttRI]KE0>k>`*>&AScstand001}rOBNcKWHU\uJKk Q]w!(`{+r6 g2"6ab6 |5'"D!}ikZZd7o>jk}l4opaʃqjQou9Xc\Cs|w]B2{c.:sPlm86:Z2D57b+JcƢDq(exȨ5(ٱ2ғ= 'ʶ:Ay{TcEԇĮ2&އG{TNȌQ;1ٷ Ƞ‚̹OȘae8D筒JңWݾMD9·)Ikmƌ֝kŦ}Ӧفъ4&ꙹh5(莬l”v׍s䕗\9B֦`LǼ핲pęh<ꕪ?◮揬kgncٌ̍ _ሬo؀9~jr^CMŕ\a\q\wbyvɚyᑈnurwǤ,ecaLyUnd%N}DPpP'TCWKo0*';m2N?H34VryJHXI@}S:-6#\*>yz2/s5/AuME\8#g\6"]H>I6+,CxY+(Q HX$,|/:;4A T'(bwa<hFIu-T/zv=gSgbIL.rl!j@;}:Dt6R(X_Gx[Kb Aa9CQm$\x_O3fS=0Q kEKvcyow]s2wNs!q!4{tezuw&q,3ip1kmZF+_)V]z%^4UOSWcFLK59>;eIs\GX>VQ}kGJn^fmhkZzLMd`Cc6nAg~XĈ0GLr> Z=\3U,D;l'm,r!zh8V*]y`3^#lQm0xiҜ ,pC]CO0q,cbzDĎ9x}zvhawd$xPikigu؅svT`SCrV!gLrL#R|Ag-W4M<%/O:g-w6-/%&m~ʒ &U! =EG|_O  Z]xsdvCf#,J WpOu2:l9 C7V1( @~q?[8=9.GQ> )4x+bG3l6C.G yx N`5>{>H,>?.,Rcstand002pOBPcIWIT[uMJl Q]x!(`|+s6 h1j"6ab5~5&"D!~ikZYd7p=ikzm4np_ǃqjOos:V`]Auu^D3{a.ǹ&厰pz狰:>ڐ ۉkhndًǏ bႥsԁ9~nߐq^~CG•]i^q|`vgxxƚ}}ޗquvwƥ*gb`LyTnd*#Q|CPrO'T?W>q0*(9i2L@E33TrzIGXI>}S8-6!\) *3x+~bG3l6B/F xx N `l>O>/>5dekcstand003tOBRhIWJYZuQJm Q^y!&`~*t5 i0!6ad44%"D!im[[d7pAhk{n4op^ĀsjQos:Yl_aAzw_D5_3?xMnlo7<\ E57c+Al͜KGp(nuª<+ղ1͖= ,ѱӽC`c¢Eчî (݈I}VOɊQ;< Ի'ƞÁͲVZd犥oᐗcܝUƚܱOʺf7η=L"漽&(y䈼znԘyɦ|أׄ͊6I፸z4Lׁk{Ɔuш[8픨^ΝY>˷&mxⅲ:ۇC֌Մygncڋ b߂s9yoݐn^{FG\g]qw`vgx}yĚx~ۗ{suwwĤ*mb_OyUnd)#TCPwO'UCX>t0*):m2LAE36TrzKGXJ>}T8#7!\*<{2.s7-AuNC]7#g\4"]H<J4(-@xZ*(SHY#,}08<4B T('bwb:hGFv-U0zw=hTgcGM/rm#j@<}:Dt6S&X`Gy\Kb"Ab9CRn$\y`H3fT=1Q k6Kxf׃ft]o3uOk$o7xkcorv%p*1h#o1~ikZE&_)U]u&]3UHRPcI~NJL1:<;bKw\GU?XUlGIn`hmih]tNMp]FbolC{iY‚z/lFSm=WAT6N1?Bb)h~*h"jhoO/P t\7W(iQg2vx}iӛ ,pC^CP.q+ebzfÎ8y"{vrdve,Sgkkgچw`d]H~W$pPuL#PCg/W6M9*.O8g+v2o++*%m͓ IU!=EO|`N [[xudxCh",L WrOx1:o7 E8 U2' Bq@[6>7/DS< *2x,bH2n7A/D zx N `=>3>1ˋvcstand004yOBUnIRK^ZuWJo Q`{!&`)w4 k/!6ae34%"D!ioZ^d8qFhko4pp\~vjTnu:\l^eBz`D8^5BMoko7?_ E96d+AsӜQGq+wu:ߥ+Ӹ ̝3 ,װݽC"UcȢdЉò (ߏIƃVOΎS ; öٷ,ŝǁӮVƭb胭o剟c▗UʖP䫞OѶc8з3L ((xzlҗxȦ|֡ۄӈ8Iw7=|yŃuԃ[8cљ]CѳI߁mx:ۃFևydnbي bނq{:somcxFGZg\qq`ufxzyPsؗttuvw*ub_TyYnd)%YDP}O'VCY>w0*(;m2LAF38Ur{OGJ>}U8#7"\+={3.s7.AvOB^6#h^3"]I;J5(-AxZ*(SHY$*}08<4B T'(bxd9hHFx-U0zx>iTidIN.rn"j@<}:Ft6S%Y`G{]Ld Bc:DRp%\{`O3fT=2R2i6>xeՃbr]m4sOi%m7~vhakpv~%n*1g#n;xgzYE%^3 T]s'\2TH}QPcJ}NI>0:;;`Jw\IT?XUjIHn`hlif]pMJn\F`ojCxiXv-lEUi eM`NqxdzCi!,M WtOz0:q6 F9 V3& CqA[5?60CT; +1x-bJ0l8?0C |x N!`*=`>c6>S1*ucstand005|OBXtIRMdY[Jq Qa}!&`)y3 m/ 8ag23$D!ipZbd8qIhkp7rpZ}|yyW~nw:_l\j}C|`D;]5ELpkn7Ba E96e)AzםW~‰Ir+~v༶:ݭ)о ʥ3 ,ڭ仗F"Uc͢dω¶ +LLjJGВOυ;¶۴,›ʀةVȬb|n遨b鍟_ЏP룥Hׯc8ͷ4>ڽ ((݊}ހzl͕}çؐТۉoK݄w9=yyu{Z8cԔ]F֮I~kv{Ë|FՃzbl`ه a܂qy:ylpjcuFGXg[qjauxgxvyPm՗kt喂uw*{c^Xx\md.%]DPO'WCZ>{0*)}W9$8#\-=|4.s70AvRB`6#i`2"^K:~L6(/Bx\*(S H[$*~28=4BT()bzf9iKEy.V1zz?kVMkfIO/rp#jA=};Ft7U$[bG}_Mf Be;DRq%\|bO4fV=3S2h6>wxf}]p]k5rOe'k}6ytc_ent{%m)1e#l;rez XE#]3 S]q(Z2SHzPPbL{NI>-~8\Kv[ISFWWjI{Gl^hijb]jM}InZF`ŒhFsj|Wq-lCWc:RCI7F46FW(ht']"[~sw oG3EmW:{R-dS_3vmxgե ){ehEU4y)oiLJe Ӄ{k{j+[hxus}hO[$WtL%IFr493).N4s'v(p(#)$hך GT$ >eM ~Y N  yd|Ck!,N WuO}/:s5 G: V3% DqB[4?51BV: ,0x.bK0n9>1B ~x N!`>='>G8>~scstand006{OB[tIROcY`Jt Qd!&`(|3 p. 8ai23$D!isZae8tJgkp7qmW}zwyW~nv:^l\j}C|aD=\5HKokncD~` E9™6e)A|֝Z}Ir+vṹ۰) Ʃ4%ܫ蹛F"UeѠd΂ +ݙLČJGΔOφ ۬۰,ۣ̀Hʪbvnzb텧_ӈWHܨb֌ȵ4=غL+؈}|xjǔ}َɡގƌ>؀x:=uÃzuuZŌ큿cՎ]F٨Lzkvwʅy7vx_l^ه w_ۃpv:pdoՎfcq7IWgXqb_unfvqwPf~ӛbtztr*b_Xx\md.%aDPN'W?[>0*({U8$7#\,=4.s60AyRA_6#k_2"`J:K5(.Bx\*(S HY$*18<4AT()b}f8kJE|-[Y0z}>nUMndIQ.rs"jC<}=Et8T$]aG]Od Dczuqd}Ym]h6pOb'i|{6trl_]akty$k..d#j;lcz Ve![3 R]n(X0RHwNR`KzM~H>+y6WJtYI~PFTU}gIvEl[gfh^\dK}FnWF]ŒfFngvUl+k?X]9OCB6A51FQ(hp&W!T{sq nB4?iT;xO.bOZ2vhvgӨ)~ekEV7{)ribо ҅ll*\sxws~hQ\,WtM*HGr6:2)/N3r&v'p(")$hך &S#>cMR   |dCn!,P WxO/:v5 I; V4% FqD[4A42AX: -0x/bM/n;>2A |x N"`N:=>9>;~zcstand007yOB]rHRPaXbJw Qf!&`(3 s. 8al23$ƳD!ivZ_d8vHgk~p7omU}zuyU~ns:\l\h}DyaD?\5JKmknaF~_E9Õoe)A}ԜM]|Ir+v㷺;ر) ĩ3,ި붜F"ĮUeԝd΂¼ ީ+ٚLJH˕OІ ڨݪ+~ݝJ̥bpÊsb}f҂RJޣM}bڌɲ4?ڶ'LLԃ}xxjđ}ێǞۋʌ>|v|:3oƃwuoq|ɋzbՈ]FۣLtkvs͇s6zrŃ\l[؇ r\ڃ{mr:j_mԎbcm7ISgVq]]uhbvmtPa|қ]pupr*baWxZmd5%cCPN'WCZ>0*'{U8$5#\*=y1.s50A|PA]6#n]2"cH9~I6(,BxZ*(Q HX$,/8:4?T&)bd8nHD+[/z=qSMpbIS,rv!jE:}>Ct:R$__G[Qb Fa>BRw"\_O1fS=0Q bo~>vsla}Tk]d5nO^&gwy6oplZ[\itu#i.-b#h;faz TeZ5} O]k'W/PHsLQ]JyM{D>}(u4SHrVI{MFQUzdIrBlXebeZZ_I}CnU7ZŒdFjerSg(k;WX6KB=4<5,DL&hk#Q Nxsl n=2~:gP:wK/`OV1tctgϩ)EldV7|)siݿbѺ ΅km*\sxws~hQ]%WN*GoGr6;2)/3r&v'p(")%hԚ&S%>fMR   dCq ,R W{O/:y5 K= V6% GqFX4C43AZ9 .0x0bO/n<>3A zx N#` =&s>28> rSzcstand008xNB]pHRP`XbIx Qh!&`(3 t. 8an23$ȳD!iwZ^d8xGgk}o7nmS}ztyT}ns:[l]f}Cy`D>\5IKlk~nbF~]E9Õ6d=>{ҝM\|Ir+v㷻;ر) Ī3,ި굝F"|Į@eԜd΂ ݪ+ؚLJHɖOц ٦ܩ+ЀܜJ˥dpnsb~_σRJܣ|bیǰ4>ٴ'LLӂ}wxjĐ}܎Ɯڊˌ>|v|:=oŃwuoq|ʌzbԇ]F٣Ltkvṙs7yrxZlY؇ pZڃzio:i}]jԎbclFIQgRq[Zug`vksP_yқ[nsnr*bbUxYmd.%cCPN'WCZ>0*({T9$6$\+=y2.s60A~OA^6#p\2"dI:J6(-BxZ*(Q HX$*08;4@T')bc9pGE+].z<rRrcIT,rx!jF;}?Dt;Q$a_G[Rb"Gb?BRy"\_O2fR=0P2`o}>tpj_}PjY`5mOY'ftw6lnlVZWhtq$h.~.a#f;b_z Re!X3y M]f)U1OHnJQXJxMwE>z(r3OGnUIxLFMTwdIpAlTd_dWX]G}BnR7XbFgcpQd(k7VU5GA9285(DH&sh#NJvsi }n92}5fK:vF0_OR1t_rgΩ)ȀEmEV9})siܾbϹ ̈́kn*\hxwsߋ}hP]%WN%HFr6;3)/3r&v'd)#)%hҚ&S#>fMR   xdCr ,S W}O/:{5 K= V7% HqG[4D44A[: /0x1bP/n=>4A zx N#`=W>v5>cTh؊cstand009xNBYnHRN^Xu[Iw Qf!&`)3 s/ 8al3 3$"ƲD!ivZ^c8vFgk~n7npT}|ryU}nt:[l_cxBy_D:]5EKkk~cAYE9˜6c+>sΞU~&r+~vݺ;۰+ ȩ3,ڬ㹜?"vUeѡE΂ ߩ(ۚIÍJGɖOц ة׮,ЀפVȨbxn~c挣_ˍP硪HӬe:ı3>Ը ((چx|zڈȏ}ݒɜ8L܁w9=ty{uy[8cՎ]?ԩIymvwŊyF~ wyYlW׊~ wWۂfn:qxbfbcmFGPgQq`Xuo\xlqPcv՗bizkr*|bbSyYld.#]BPN'VCY>/*(=m3NBH3:UrNGXK?}U9#6$\+>2/s71A}PB^7#o]3"dH;K6(/Cx[+(R HX$,09<4@T'*bc9oHF,[\/z<rSMqbIT-rw!jF;}?Ct;R%`^G[Rb Ga?BQy$\^O2fS=0Q `6|>xno\}NjY\5mOV'esv6jmlRYVgtm%f)y0_#d;a^zOe$U3uK]`*Ty3MHh IQTJyMtF>z*8s3OFkVIvMFJSucIpAmRb^cWW_F}BnSFWbCiasPe(k5SX5DA<172(AJ%hh$OKvsj }o713gH:wA/`NQ0v_rgϩ)ElEV9|)rieɼ ̓jtm*[hxvsދ}fN\$UN%IEr4:4)/N3q&v(d(#)%hҙ &S#>fM T M xdCq!,S W|O/:y5 K= V6& HqF[5C54BZ: /0x0bO0n=?3B {x N#`?=Ki>i1>cstand010yNBTlGWK\XuSIu Qe!&`*|4 q0!7ak4 3%"ðD!iuZ`c7tEhkm4npU}qjU}ow:Zl`aAz{]B4^3?}Lkmocʰ&mzှڂCԇyYnV׊} U܂bo9|tkbڐc^oFGPgPqhUu{YxpnPjrٗleuhr*qbbQyZld*ۺ#VBP|N'U?X>z/*+?m6PCI39VrOGXM@}V:#7%\,@30s82A}PD_7#n]4"dI<~K7+0Dx[+(S!HY%,1:= 4AT)+bc:oIG-[\0z=qSpbIS/rv"jE<}?Dt;Q&``G[Qb"Fb>CRw$\_G3fT=1Q _6{>}lxZӃNk][5nOU(fuuEmmQZWhvl&f*v2^#cB/90,=O$hl$TQxgn |o9/6iH7y@,aNT/varaЩ*EkEU9|)qiče"̂thtm*Yhxus܊|dK[$SuN%KDq285*.N4s'v*d)%*% hϙ &S#>fM T M Xx~dCo!,Q WzO0:w7 I<V5' GqE[6B73DY< .2x0bN1n<@3D zx N"`l=T>.>$ILzcstand011xNBRjGYJ[WuNHv Qe!&`+|5 q1"7aj5 3& ïD!puZab7tFgkl4ppVojW|ox9Zlc_y@u{|\B1_3֐ ׉m[nW֊| S܂aq9pq`ېg^tCG•QaPqoRuWxtlPonڗsaufr%jccQy[kd%ӿRAPwN'T?W>x/*,?m8QEJ3:VsPGXMA}W:#9%\/@51s:2A~RD`8#o^5"eJ=M8(1Ex\,(T!HZ%,2;> 4CT++be;pJH/[\1z>qTMqcIT0rw$jF=}?Ft;S'``G\Rc Gb?EQx'\`G5fT=2R2`E|K~jXyUjY_5mN['e|t7uknWY_gvr(d*y3\#`r^Nq*l8Lf5I=K,@.39X#ht%^]wgy{6@+>jL6yD*aNZ/vjqaЫ*̀ElEV5}*qiƎe"̂tgtn,Yhzugۊ{zcJ[$RuN%LDq186*.N5q(w,o*&*% hΙ&V#> DM TNXx~dCo",R WzO2:v8 J<U5' GqE[7B83EY= .3x0bN3l;B3E {x N"`=\>/>i1a(cstand012yLBWjDYOZUuPG| Qj!(`*5 w1"7cp42& ͰD!i{Zba7{Gekk4qdU}xnlXzo{9[nh]yAr{~\B3\.>yInm878J|nF54b+KYC&r,ixĿ;, ѭ)$̷ş?m]JDȯE{ψ'&̐VMɘNӅ1Ѳ"ŝjOřceFᨢ@ӲVC5,&hiԌ֜kxТߊ4i굫3­'䔳pwАqל^5BҩU(di<䚱Lݚᔳm]nWԋ} Rj_u9m~u]ؐjfx?QaPZuOwSzwjPqjחv^ues%kbiPz]jd#V@P{M'S?W>~.Qǿ*/=m9NFH3;TsPEXO?}X9#:#\0>7/s;0ARC`6#u_4"jK<O6+3Cx]*(V H[$,59@4ET-)bf:wKG1a3zAwVMweIX2r}'jJ?}CGt>U&eaG^Ve JcBFR~(\aO7fV=5S2aE}L~h͎Wydg]l3iNi%a pFggUocw(a,5Y]< XhGD-M)C]o*O8FGy"BP^FvH|L098;bAuWP>SM}c&CnZ]h^fQvBFoX?Y8e>x]Nj*n@Hs3T:X*L*<6f"i'mptgw6L)~N fX3uQ(]Nh.x{maЭ*΃7p7W5*spƒE"ʃgup%Zizvgى{}bJ\$SO%MDq287*/N5g(w,o*'*& hΘ&VL DMTN [XxdCu!,V WO1:|7 M? V8' JqI[ 6F75E]= 02x2bR2n>A5E {x N$`6N=?>0>e[Zcstand013{KBakBYX\RuWE Qs!(^*4 0"7ay4 2%߱D!iZd`9HckЅl4sdUyxolYyo}9\no\yCp{Ɂ\C7Y.EzGop899}Dxلe|FȌ54b+LSB}r,kw;,Բ) !ͺȤ=bQJșDͳ7{͈'&ΔHMəOӅ ͵~ȠlO̠eE4붨AؾOȮWȰ>.~$mb8ڡmyѤ3bò)ʹ oĘwߚZ娥_.AӲU(Eƞi0臨(褻p_⌲Xҋ} Qj^xPL'T?W>.*0:m:KHE3-ATBa5#a3"tM;O3+5@x_)(WH]",68B4F T/'bg9LE3i6zCXMgI_3r(jOA}HItCW&ndG`]g QfHHR*\dO9fX=7V b7}L|gˎUyzd]~3fN}%^"mFe~R`w)^,6V"Z< UmDD/K)A])L9CO#@PnDrJxI299;q@WR=aKeDoe[r]qOByHoY?[8g>[|Mj,nLE5d9|i)](J2z"i(qiu6]'{e ci2qd%ZQz-xjbѯ*·7u7[5*wpǘ6ʃhut%]izxgى|cL_$UR#NFq4:9*1N7g*w.6+)*'m~ΘV!L DO`N [XxdC~!,] WO1:6 T D U<& QqN[#6 K6:Df< 32x6bX2nCA9D  }x N'`p=A>$j1>fP]cstand014|KBcmAYZ\QuWD Qt!(^*4 0"7cz32% ߲D!pZe`7IakІm4u6PvynlZyo9]no[yBntɂ]C7W.GzEqn:97{=oYp?ƍ55c+LJ?|s'gv;,ֵ*{!¼ʧ=UޭCJÝFĶ7z̈'&їHsMʚOӅ ~lOŦeE3î>ɩOöWϵú>/$pe9ѦpkȨ:)eι*պ"oÝsݤaᴩB.KȹU'Fb<겺(௿꫻ob⌱Yы} Pj\z<|f~xW|rBނ?zUbRa~LrPz{fWpdјvXrbg#pasP{z`iEa=RL'T?X>-Q*18m;JIC3>PsRBXP<}Z6-> \3;y:-s?,AUAc4#b2"uO;Q2+5?y`((XH_",76C4I T/%bg8ME5i7zDZMhI`5r*jPB}HKtCX&ndGb]h PfHJP,\dO:fY=9X d7~(|fɒUyb]3dN$]#l4dQ_w*],7U#Z0 TmDF0J+@])K9BO"?PuCpKwI59;;w@WT=gJeEohYt[uN|ByJ6[?\8h=Z|Nj-nQC5k7zq*g&Q0"i*pit8h%ysbs0oo#XQ-xibҰ%ϊ7y9^5/zpȜ6ʄiuw%`izzg}ډ}dNa!WrT#PIZ5<:*2N8g+w06-*,(mvΗV!LDO|`N  Z [ydC~ ,] WO1:6 T D V=& PqO["5!L6:Df< 42x6bY1nC@:D  ~x N'`=x>0>2g9cstand015}KBbmAYY\QuWE Qs!(^+5 1"7ay42& ߳D!pZf`7HbkΈm4w6RuyolZyo9^np\yBmtȃ]C6~X.FzErp946|.Q*18m;JID3=PrRBXQ \2;:-s?,AUAc5#c3"tN;R2+5?ya((YH_",87D4I T0%bi8ME5i8xEZiI`5r+jPB}HKtCX&meGb]i QhGJR,\eH;fY=9X eF(|eʒTkd]1eN"^$n4fRaz)^,6V$\0 WmFC1K+B]&L8CO!@WxApJwI65=1{>WT=hHdFohXtZwM|AyJ6]=]9iLY|Nj.nU@6 q5{w(m$W-!p+siv7n"z~d[x.pw YQ,xkbӲ%Ѝ7|9`<*4N:g-w16.,,(m|rΘV! LDO|`S  Z!~[ydC~!,] WO1:7 UE U=& QqN["6!L7:Df< 32x6bX2lCA:D  ~x N'`n=J>I->n?cstand016~LBbmBYZ\RuUE Qs!(^+5 2#7cy5 3& ߴD!pZga7Ickωn4x6Xtyql\{o9_nr\yEn{Ȅ^C5Y.FzFuo947~?y܄^s?Ə54d+LF<|t'by1$۷*wz!ѩ=MݴFJCF|ΊĄ'&יHhM͞Nօ ڀƪnŽN̯fD.ԶLװG®YֺǽL/!䎪dE9ծohʭ:*E%8Ψg泺cůA/L¹V 4Ȫd2'6fo\:ˁ Ql^5gW|vB=WbUZLsQhf~d֖Xrcg#lbuQ}kbjE_>RM'U?Y>.Q*29m=KJE3>QsRCXR=x\7-?!\4<;.s@,AVBd5#d4"uO<R3+6@xb((ZHa",88D4J T1&bi9NF5k7zE[iG`6r*jPC}HKtCY'neGc^i QhHJR,\fO;fZ=:Y fFI}g̒Ukh]0hN!b&r4k:Vez)b'5Y%`0 \nJF1O,G^$O5EODWy?rKyI85>1z>WULgGeGogXu[yN|ByL6]>^7iLZ|Ol/U=7 q3}y)r"qY+"p+yp|9s}h[|,s\Q+ypbյ%ѐ9~9b<*4N;g-w28.,%)m{qϚ V! LDO`N   Z![ydC!,^ YO2:7 TE U=' QqO["7!L8:Ee= 43x7bY3lCB9E  x N'``*>z^cstand017~MBamCYY[TuTG Qs!(^,6 2#7cy6 3' ޴D!pZgb7IekΉo4x6^uyql\|o9^nu\yGn{Ȅ^C6~[.DzHup9Ģ77F߄hۄ}?Ə54e+LK=u'c{<$ݶ*!ûӧ=T޸QJģCľF}Њ'&ؘHlMΟN׋ ĺڀϪnȽNְfD.շLٰGĮYغɼL/!䎳dE9ޯoƦhҭ:*e-8שgcȰA/LùV 4ҫd1$6fo\:ڂ Rl_5hX|v_>ĔWcVZLsQhgÚeږXrcgʜ$kduPkbkE^?RN'V?Y>/Q*1;mx[8->!\3=:/s?-AVCd6#c4"uO=Q4+5Axa)(YH_#,79C4I T0'bh:NG4j6zDZiI_5r)jPB}HJtDY'meGb]h"QgHIP+\eO:fY=8X gFI~gΐVkl^.kSf&w3p:[rjz(f'4\%e2 anPF0S,L^"S3IOHWx>uQJ|I:5>1y>WMULcDeGodXu[xN|BjLE]>^7iLZ|Ol0U;8 p2x)t!qY)|"p, p9vmZ}*v`P*yud׶%ӏ7}9a5%~p͡6Ų͈luz%ciz~g|܌݀fOc!YrV$R:Kg6=<*3N:g-w18-+,(m}tМ GT!LDM`N   Z [ydC~",^ WO3:8 TDU=' PqO[#7!K8:Ff> 44x6bY3nCC9F  x N'`U=>L*>였7cstand018{NBXkFYQZWuNI{ Qj! (`-7 w3$7co7 5( ̳D!i{Zdb7~Ggkm4vd`yyplY}o9]no\yFo{]B3~`.>yLrp7Ğ79Ms܄ C54d+KS?u'b|<, ܮ+ П>``VBF}ъ '&֒VtM͜NՋ ̸~ѨlƸM׫cDż5ͱLӪGY״ʸL/$ߎpe9ߪpȥkժ:.e/ݽ"oץqcB.KJ'żFҨb0,6do\ьڃ Sla}5kZ~ u_>ƔWaUZMwSkiƚhݖZwds̝$genPk_kEUBPxO'U?XK}0Q*/=m:OGH3P6+3Dy_+(W H^$,5;A4FT.)bh;yLI2a4zBwXwhGX3r~'jJ@ }BIt?W(ecG`Wf"KeBHR)\cO8fX=6V2fFIiАWjp^.oSj%{4t:^nz'j'4a$i2 enTF0W,P^"W3MOLWn>yQJI95>1q?yWMTL[GfFo_Yq]rP~BjKE]>^7jK\Pl/N<9 g3n)j!qR+"p, p9lqZs,zxdP,xydײ*Շ7t7[5*wpΘEū"Άuius%]izygx݌~rd{J^!UrQ#RGg2W9;%1N9g,w28,+%&m~uЛ{ GU!=EO|`N Z[ydCt#,U WO4:{9 M?U8) J qH[ 9E95G^? /5x2bR4l>D5G }x N$`q=S>*>;[ocstand019yOBPjIWK[[uKKq Qa}! (`,w7 m3$7cg7 5("D!ipZac7tEjkkFsdaȃplX~o|9\ni]yDr{~\B2d.:yPpp8E9U~ F5Fc+K\éBt,c|̶<(2٣+ ʽ8ʕ>moVfFӊź 'GЈV~N̗QӋ ѷΣjïOԣaD9>ơHܶRЫǯ>0~%"mb8ۣmƣzԦ݋5bȵ/ӳ oҝr韮af5A۶UϺ,ô6Ρi;*喝pdo]ӌՄ V܈d}4p_~ s_ށ>ǔXaVqRwXzmȚm`uisɟ%dfgPy\le#ODPqP'T?WKt1*-?m7QEJ3:WrOHXNB}X;#:%\/A71s:1A{RF`9#m`6"bL?N8(1Ex],(U!H[&,3Gt:U)]bG^Pf Ee=GQt(\bG7fV=5T gDIlӐ[ys]}1sN!m%4w:aqz(n,6e$m0 gmWF0[+S^%Z6QOOWgC}QMI85>1iCsZU>UL|iHo\^mamT~FLd^C_7kK_~R0IBx; _7c-_%qI0w$p- i9a#pt[i/~lgQv.x|bժ*}FiFU0{*nbЋDş:"΁tsful,Wizrgu܊x{abfGZ!xQrO#RDg/W7<%0O:g-w48,-%&myϙ| &U! =EG|`O Z[xzd}Ck#,O WvO{3:q9 G:V4) D qC[9@:1GU? +5x-bK4n9D1H }x N!^>|>1>F5cwalk000@Y@KRfaucE:@-Q];Rpj0j7{"Pi=tFZ~,TekCpSn{Xy2q/abmr7YnzpcFXhi?ˀJpyV]wpgq8I]m.geVUqo3 \WektqpxiHqw̄}ƅjet|4b`jLoJ\ʩ(iI^zLH„5dž9̆/mFܹ!s~Tp{\bh։.¦=JڭIG̋ !yyGuqZv8DJPƂDĄ<*( 'tznixnuz}v|ҁyψ9&sgÊ5,imqujqs^Â9D_=&ppuhmp?rkkVpqXoz]i/OX6mX,mTbx~p?(a7>j9,_IHTJ2G+E}DR^v7"J_Aw63m_1 x~>)wR=y`L`+ru yQ=tSCJVoZHV#`b\_RBRz\W H+fI3,%K$2lafn~H]"[mZ[j&[#-Q%B"?@8#t.y5#(3/!F58m@{B<'L6 |[#'.N%C+LHA958A0I]M-XKP.k3Jpf)g(Z7I҂JJbK[@[\eJiJDbLRl54E+E1:7ڄ(r7'*n9/1-%7mE9$q/P#09p® Γ+Ew7d.=md;{s{m(ikkzdK\'avQ'i [z>>VšL+@`Vk~MwʊS Š@W͑G'Dž9RpUӖ}7p~1X3KB3:N;q@,P ~wvInyO0h@^qI.gJniFslRrBXhKgrW iLeT`MabQ.sGF16Sg(tl7<05&bo2 e&zq]@'+D230?=i)> >*>{'I dcwalk0011XUSRihtd~I:C-rRl^lSm^-_3r"RY:`DZs- Cd[@XRlfWi0{1aHki-Roy_]CTqmBJ}M]up^w8E`l/mRQTzb|?dUrjonymIʺp uy;befv4xpOd(e~UXޞ%ƐaGQuI?˲59 /lE!qs|ThZzbfԉש)Ә=JIΌO}ȋ1 $O~rgx6fVMf9)I"''{zrh}nz}ˁň7Ixs4+lk{torv\9f`=&spzp:tCw nkdpnfo\>%5A:`S+3p0k5$PF8&Z&y73,LH,[H#r-j 5}>O! XG:Q #^ ]<Q-\9UHE#fMF=E"ND2joclV][Yl[5Q"4#F.{'%('1$55%m/ zf.#|>%{!-xN|O*SH;<47G5!V #iM1bA _3yM5Spw.w,i:VԂJSbLf_ZheKvUEsL`ӈ18Y/M<GB܄4u I$0m22;') &m66 0 r:"8)iգ)8o8T>0>hk>cwalk002F\V+oZP+Zqv)mR.?$wR"|pm:q>ri8{.[pMry`mv/N\lLqzq_GhAoaXo-ECxjqZCrom_ЁizfRydxr7cYnPf=~dOTxz?nuqlnp3`˼ Ƚ |fzt?d`cKz{Uk=u‚OdrIS}ۯ.ɽƤ4 %lF!xTabӇ+L}JGׇO:ǚ; $Nrgez`xSʏf͓9ɣ)ūI"''zzhņnz}ȉÑ7IhC(vm}yu~XƏ7Ž_`¥>&{pzx6}A xhbpdo9c犞oyEvs-pX{_Mt}^s\wme}fyiݏvu}xxLBnGGQyaYe^ƪ*#)WWEwWT[WOJGSlzkAmv!Ny-A?L.awABRS:FVB;(J/qNO:Dyh0_?DR IM<$2OD .VC%8>[/0r;y1$*&=&N&N$O (u%*l)A0-|DJLN.D%S6 Q'/-'HN2 ]88K<6B8.ncVy"x~wj.18.$I%DC8*{4;(I;2$H5:lD yfB$zL:{+"1-vN-{+SBVHR=4QG9?W ?lMLdJ+cO{MPTp=yLyKjWV׈dSaeg_uheewUcsh_ԊJ9n%\ML<+J>B+6u*J?1mK3:A) =hLE)2#r*=&::>i+}8k8O5n+rlÐọ mM{t`{Z(WjȠvyvjM6E&Mv4(˕B:?zN˟ +RĆ,k~w҉#;Ƒѕ'ʎQj|ъ oA %1Gc JwB2t nwaxw dfn0bnfqgr`f Zmh ^]\]xBk\|C<9\ n4th6=-/ ! d$o~]ksR I]K÷E .÷2=v>+>M!q{lcwalk003G}cU!n^WSrvn=*s?zT_/OFp4sY?}[,?qHaQ7\d vF_\1c*Bt]sGF~j}dCdpXЁnmjpNpj6iQlJ]/{~szYT ?odkznp%^ ~e|FdsjK@u֪8Gw{I]Ň֭Ɋ0ƿӆ5-Ҟl鸫F"U{cdֈ*+ǚK&ӠOҋ њ˪$ńyͦOǁqa샠E䎕BڝVŒԯD<*(īٮ zxinzv̇ځ֊9&~g4笡,tm}turց]9BڑU+ǩ{phw8|>}vhOpRop:OlUfFhr^2dYo@xPqHreRvNxdrٔrp\{bw“+IyMALkjUm^-ѫ!ZWS{c[k^HOLMi,Xn?f;M[=[9nzMG_[oI\ysTS'o.Car&_V(Sz7I@SJb `ZR!JSSG=^LMH-anWD&bJ=VfS?(]'\~5:?P2.`y IbT]UO@fK.#7+a߶ IҿFҶ}Fj)͇IǫoȜE̳0̍}u&un¸mŞzbhqxVԢ]5bmCrDƩ@&56̢5 ,&:Ű~ڦ f̥Wԭ &Lƥ͟[׭$".˘ӐIeԎsd?܀Kb~sd҈|q"9y,}v"Dsq&l+bK/^0zOB0%$2e r^ue`NH?a\jRsHGRG]Kd.[>x > p->-R%tcwalk004xmeܔ{`L{Ru})FǏ ?RhZcqX-ќpWO Vk^nH;aNsUpni{ sq/OWtgDca[ilY{sqQyFPpdNgXDRyYaFNiRerFSdAEVMkZ(uXnxzjCIvY<@xb=(VJ[KN.r94Dz?]XrC"D`Va-Bm?)3ye2,8ZG)>\V&H((!tK k147@-|2KA:[ MbO%B[3 *_-?-?SXV+YcMKi$evD3O^nHu"]{JyX :*=#D3ox-,+0;#?!9' ~h:iB;2q=,hX0z&?nM(kQ;QHK47I;90I7bGXA[MkIFi2iEeAWNB͂d@aiT@}OclcJbYhGj=/nT?;:E(2҉2?+'h>*.!$g=d0<.'4,aۣIհFڥ4ǔu?ɽ(̝縮61}}Ǻ&nɸljltsaɄ^7{pk|_{\JGQvTmoEjzBFI@ He*Dתs.rr8r1(:7x-%K}9kp8ny)mm-rq5js%qt"Rre4~sk'ta+rd3jb%Zo6a2xg$^`:Z,XX2vW4pf?iB6_\ e,JP)HOyEba;,Z,3;@E%`G+_8E1-*G<+J}%"Kb24s/u=3'9AGUY+_F>K>+)>0bپcwalk005AgY\ResuqU)|T!~jz-lEmNr\V{gCyZqea_OTm's`}pLaCfoqt>Xzzz]A}di\Ёmhkh^ubrEfYmH_y.y~gST ~?t_kppzb%c ӄͅfuCdixIJvȲ7&tIZď ןĊ0Ȭ҉糾9׆ җm毧FV}^evՈ*е+K&ȣЋ ͎ɠ!~yРGZa7C띕HאPݪƦC<Ԑ/'Ԥ |hxǐzhv~ׂՊ9'~a5$vmyuuq샕^aHg#!w )`91}Q9|UR1kP SV'f^ UTQ8ZOR$\AA-!8J)W^uHz"|dxRyX 5$@"F8o#x0((15#C5-m=jB<,qL0jX'{&6mNmK8NHK57H=9,I1_BWJVFjFGp+g?e0n O=>;A'4Ԅ.u =,'i@+:0" +hC6, 7&'21aзחIЯFѤFo=Iǜo丠E߿0x}n̷ljlzYъa5yllpQwNEGzFvSnnCj{B3x?t:r9d)9У~s\puyzV{$ts}"+o"_ul S` aekleoK[f H\ c\zaed!v\'sg#F]6Y(fT(sV/EiUv]6?a0bHxXYB%/5m9 _(BS+}.Z;H,Y;{dXbi(qSrG,o!WM@*F]>H= 7>vƂ9lpHcrattack000~KBPoDWKWRuLIj QZs! &^w-l5 c2%8a\3w4'"D!{piZ_\7o7`kg4bpAvjbkKuou:{LlUQx8tYB2^.;KZmsd7~BbasF~56d+=]ݠDŀ˒'w,f{ Ëִ3 ƶ4 ,ze W@ebpqςޫLӞ>UHȚHӇƬ "yOa\ٖ9֢CαKRŷMקCթ<ͺ*' k̈mΘ݌kv–Ϧ<ȿ'ȍiٲ0ƿ$͂mrZΏfզ<ԥC@+͈ohЈ;Ό)Ō˃mG6L8f;{9n:lj5qBb<}}qp@=c|]W˔M^:]c4qz/gW[WMՖf5rtI[-fe ]BzzVee¿-OBPlO'T?X>l1*5m"F5A3(NryHAXE:}R5-,\7yy')s))AvL>`3#hb1!^F8D0+;x\'(SH[!*{"334> T"bxh7iBBt"U'zw:iXimIN%rljA7v;Dt8W#ZhGyd Mm Bl;BQo\yhO,fX=)U2W?z}'cxhW|m?h"F?H0R<2.&\"hB"WClB0W#7E?{R\|I>}_cIxVl_'yLkHI:Md[`'=GyPOocJb4XDZHH}]7hxKDscL{YFjp([P}mDmo8G/xWG4X3}`D}feBdw8o|( meq0}Y"uJk/h%8ܲ.ĠƝ}/0yl̋&s.wv{w҉Qāa̞UUжn+kv*yvizgwF菓/td}pۄrc쀞)gefԖUyS\Y:e kCcqr/zaeA^H?wUR}aD_B=rSLv\^Tsd~X[X~MkSqdwFb ,K XoOq3:f6 B N6 U0$ =q=[3:4+AM; $1x)bB1l0?+A~ }  N^= j=l!>kW_crattack001ZN_%qAR%NSw'FzSd),!!+fz=mE e?7<)b_Ar?:(17,.mu%ZwaVVFkhZFabL}lck~Oqpt8oNmJTy*x|K_iz3QXhpob#M Du4E]+Kc4ˊ~̏(zr,Z} ϧϡ>ȸ1կF2+ğyǝc v UfapՈٛL͋JTOƑO҇ Ǯ"yǴOɅZ\9CJؘYMûC<*' km،͋kxŕ5&h.´'}n~uygf߁l hT{K|oJ]4˟e6w,s``ՔoP{5uGr*Oe GGk}X^c%%?RUP'wL?~PKc7S42<`mRnad0vBdghUI\cJkC$7:i:Ty8=zDPFngDs9 ml0]V;^K(A^wh4IW*Ab-+w;H;854^)Fnxx6`]G!)g_$x2 yOKzdKZrzjL3}F=tBS gcGZZg MgE<R~\aO%fR="N2S@{&wzvYu@ht#Df@Vw1WyB22#[#hD WE l>5U%1E;PWI7_9MSMe'_T MO(C(l;h Q;w CPc4c3QG@3* B$qB#[9 '<=+JOE$7x,bD9l1H+J~ } N!^ =8=88>p;crattack002iSC=pCT3VQr5FSg&* #(f{947,!/mv&Z}df9Z=dmt4Xepv9dktQ}oyx:VOl*Sx seCX~0$GO]mXvnjeo x1o7`GrŝF1G鎆%'Qh ~ |kmekOvWt1&m2$lprae1FB*nlhㅔ.l^KoOOˌTk=}0ubq@m=~ǕLNfN=\&5q83g[PNҡ#8q2KZC#Gf;Ezz~[nEv#Y<@RYR'}^3b>l9S5/-Jm<[NV.z7WqoTF]YBve=#8,a/D{41z=>Cn^?o7!il.[R6~X@,4Kxi/([$Ke(*y3;?*5@`&4pvv6aTA'Z]*z<tYHtmIV'rxjG:vBDt=YbhGc Tn IlACPz\hO-fY=,V2IY?:~'"x'X{/Ahf"7]>Kl0TV: d,%cl!gl@"vTr?|j: Q08=VX+9Db=BZ42o(O}4Dm45$.u`1/2B v;d~+:5~3[P%Dm6I0`s#A9-s]$]غ Ȫɤҕ mnh ЕWՂ-Ȋs^rgwN呝{tK#X#Ǧr뫐cǒ3ì-ﱠ7ͬw۝[֮D鳵%Fȇn`ܛke13aաFve~ rz[xՈsDr΅jg{]swfziƅ|}^x|pmt}+oFo+%]]Hq?i@ UOB@7$ C!qE [2%'?5.AP>&1x.bE4l1@.A~}  O#^-P=p=g:>kzcrattack003vUCHrET=XRr?HVs', &(!f=xAo;9:/bj;A:67.!1m'Zfi9f@emx4Zfn}v8ckSy:]Ql.SwriCX0-HPN]mOvɊ\͌w ~ "r9}Eo$q̂Xx*ܶ=AhIiͧH6։o N<ߎW"QxhLcpgp:F>|TGdȞF;</'G_ w qz|m|YzBvLl<'{h1$m]ˡwZe;FvB*`'o[h.{mOJoFM͌:j2;l/>Vm<F}>{t]pAe)}  ™HMeC<\5q(3g[RN̡8q#KZ.PiDFzz]q6q-QGCRdU'b3f>wZPU.:Wq{XFX\B{g=#<+a2C80s@=Cya?r6!so.eV5~Z@,7Jxk/(_$Kh(*7:B)5D`*3px6kWA,Zf/z@]IqI_,rjP?vJItE]llGg ]r RpIGP\lO2f]=1Z2AX40}'wX{&Ahu!7m-1x6bM3l9@5A~} &O+^==2;>} crattack004WCUtFTKYSMKV~(- ((#f>Bz<;0bv<C<870!2m(agj9sAfmy4een zuBbzSoyjPl7o(o˃Xu*)ǵ>hIoѭI7քr R=W"Pxf,^ỉ:F>vT{GaʜF;>񐂱/,Ja w pzzh|nYzCvNn<'xh0%~mXˡqZfS9/4ImAZSU.Cd?u7!r.rY5~]@,:Kwn/(a$Kk(*::E*5G`-3p{6wZA/Zs2zC_HsIl.r j]AvWKtS`yoGj kt _rWJR"\nO5f_=4]2DW43{'u#Vő-?h 7~ClS5?,sY&1P0|f(vYd3}KZ5~S}t&a6j.`!AX,s$W-ɵȯʠ -kŊayʠȍ-sWuhrSܚ炞}K$[$ñwbß3Ÿﲯ7̫w۟ZӲ﮹D$7őїiZפje2=iή7E k\ܔxϚE |h߇\ӄxeՆi’|مcȂ|{l|̟-o7-%u`HA~B nOY@N$ X"q[![31;'T5BAf>:1xCbZ4lE@BA~$,}  4O9^ ==:>Ǧ{crattack005WCYuGTPZTRLV(- ((#f>C<;ø1by<D<870!2m(agi9yBfmx4jdnxuIazRoxrOlDRw%qhC/]0?L\[mUs͊` 'z͐Ɛ&978+m˃Yr%*̺>gIr԰I9քs R=X"Qxg,`kΉ:F>xT}Gb̜F;>򐂮/,Ia x rz|i~nZzDvOo;'yh<%}mZ̡s~Zf;Cs@*_'pYsߋ3yhPHMKϋ1e:8l.:jPj1@}9v nbnCf.wSKeH:c-2Z./i VRIǠ3['Ga(en ZF{z^qEt-UXFRvY'c3i=>S:/6ImCZUU.=Wq[GX`B{l=#A+a7C=0sF>Ce?v7!s."wZ5~_@,"R>j; Q18;UV+8DgEyJfY,gG[C<5F]M[$ABrR7hSF#Q'T.CtA4k[H7S_)MV9Ek,-KvDAl^3F,rY1/Z/{f2vbd;}Ug4_%kds-`!Ab+h#X-Ʒñáް-kNJa˄wǣ%sV½usqޟS؛ނ}A$ݠ$w垡b꺠3ڿ#窱7ťwҚqͬ觻D$FÇՏjY֧kf0 =aУF~f1xh[yӍtDxnh|[xxf{iÈ|}^yԀqmt͡-o7.%y`HAB rO]@Q$ ]"q_![81>'Y5FAi>>1xGb^4lJ@FA~(0} 8O=^=3=:>(|ׁkcrattack006VCUuGRMZTPMV', &(!f=B{;9/bw;C;67.!1m'afg9yAemv4lcnwuK_zQ}ow:uNlEQw%pfC-_078,l˃Z~r%*ͺ>gIsԱI:քu S?Y"Txi%dτn΂:F>}T&d͜F;?򐄯/,Jb y uhmn]hFvQq<'~i1%}m_̡x~Zf;Fw@*a'o\g.~kQFNJϋ2d<7l/9jQh1?} 8vldmCg.uTJeJ9c.1Z/-i!URGǠ2[(Ea(fn ZF{z]oEu-TUFRvX'b3g>>Q7/5HmCXUS.=Vq[FX`A{k<#A*a6B=0sE,;Ixp.(c#Kl'*;9G(5I`/2p|6zZA1Zu3zEaHuIn0r!j_CvXMtSazpGk ku `sXLR#\pO7fa=5^2JT56x'!qÓ(Rđ3"R>j; Q17;VV+9DiExJiY$lF_C>5H]NZ%BBrR9hUF$P(S/BtC3k]H7U^)NU9Fj*.JvEAlb3F,rY5.[/z_6vde=|Zk3d|$ndv-Y"}Ag+h"Y/¶-د2jNJb˄ݧ&sãݥ%wT¾vso۟SӛՀzAג$ӝ$wޕb䯞4Է#ᡯ7wʒqƥ៹f۩%떻D|ӏkWըhf<=\-ЕCq_r~Sycrattack007|RBHtER@YRBKSm$' (^8x>m84(bg9?5.7(!+m~#Zec9o?bmq4kco yvG`zPzow:mNl=QwqbC^0.K]Zm[rʊi΋z~~+95u:n*)1ן)~e˛'~Ё%T؁~ه/l7o/m˂a}*+ʲ>lIvӫI@ք _Hc"_yr,ȯun:FKTlɜFw:Q//0Bm=SON.9SqXDX\?vg9#=&a2?9.s@7C}a>s4!rp-"eW5~Z:,6Exl+(` Ki$*78C$5G`+.py5mW@.Zc1zC|`G{tIZ.rjKA}CKt@_goGj Yt LrCJR!\oO5f_=3]2NU4;y'#s*Tő4=h F[-Ѝ~Db^d:\spƠixsZf[ҋTsfX_xr^ggs|l]gǀ^hd'oFw)%aYH| YOE@9# F qH[1$'B4/@U<&0x/bI2l4>/@~ }  N#^=O!=[9>uUcrattack008}OBMqDREXRGJySe  !(^3s9i5,8ac69."!E !%mtZb_9o;aml4ybp(|vZakNwou:uMlIQx*r]B)^05KoZmysnjɌ*|)>=S758i+=I٠6tʖ'|%_~ χ.5z%k7l2AEdQo΂+ܮ=AHͣHf։ q"yIdb:FKRÜCYP7KСD4ٟTH\bah VDyzYhE-KBRlR'Y?]>s5Q$*$ k3#nk."bQ6~P5+,Axe((YHb"*/6;4A `!)is5lPA~([[-z?r\MrpIS*rujE=}>Ht<\!`lGg Qq Go>FPw\kO1f\=/Y2mV?]{'EuKV{S>h!F=H/R: ,%\!h@"T@l>1T47=TZL4-@Q; &0x,bE1l2>-@~ }  N ^s>><'>qNcrpain001}wFCYg1`PS>O8x Qj!(`+u5 v2!4cg5/&'D#pyZ^\9mBXk~p5ddfwI^kPuq;jOlENz)au{^C3wD0Ct3PX_lJv˅Q2'|f|p5x9r<(lŃ<=Ե!Qٰ'kʫL4ڜ&OH-d I8J"KzU*V`T {8y?qI_SbM{?v;9o-n'?S e fho~bonS~h@wIcs9l'ma{0p#piMb[q_y]OBkW<2;&\1B92s;6CTD a8#xb5"nO>M;+3Hw]-(U"H\&*6GI)?TTDeMgIw+o0;`6?=TU&YO.CJpI`'TAn6V7W6J;;wRBRT0BRK`..R:Ey^*l-DsE0G9jR3&}?'k[%0|K me&S|fgiutC&fV O]Q2a[)IOS,twpebBƴ[-qĞ:ɔ;y1p֗-ynlSb֏Zpt#vmHsniM͈Q^΂lk~[u!ik!n^a@YKW%FOUiGqTEOTK O:M*O:.0f4Y;bB:%S.4)a07i3S2`Dn74b-T2udCs"%Z W{O2:q7 SIUD) R qQ[190O:BHb@ >5x?bY5nIEBH !/}x ,N4`L>v>e#>pKݮUcrpain002VDC4r0`,]>r+7[ QNe!(^i,a7 Y4s"4cT8 _-Mo&(Ev-lp\ZgiYTʇ-u,Kj!UGn;`|SYlD^y5(&&QDPb9Ka"GqIs#dTaR̟![Z4#8Y5RpzhccEoW2.RJE'gP?iU>X'S%;UmGfT_0eEWZ`YB\{[JydD-D1av>LhC8wGGC_aFulznIc_HcmIJ;re0j>Hv9Qt6_#TkGrgIn @m9PRg2\qjO@f`=>\2?_9:z+*y&b'PzWP^U3SOZ$Lk$f9n\c@aPsj*S%o8M}%X u Km"D44I/>'>&oZcrpain003bGB:y7Y4eGr3fy|{VBQ~~.%=ixms~4w#@:NzF59t^+oL.Л xWʉ&cn,@r2n'n +R S в;ݙ=5-xȊJD7Nǂi׸ a&lG~VGN]ؐSa҉; {!yøKWŴ4E@HͯͺB9)& 'zgpz}悪nF&q4ǰ,hwtr]7_TLƾb}so?hgan]^χ]GXyEfu{;2w3eȒF|sD4=S&K_XbWVZ8Wr<[w?tR0uƘ.f֡Bnqg%E[CYwzxjdd/94RUG'vO?yS>`)Q*;QmIaVZ.rIXqk^D\`HyiB-F/a?KrE7wHBCkfGrrl1jCM}=Ut;e&YqGzlOu Dt=TPm2\xqOBfe=Ab2_i8`LMErB^x_W^b9[Oe(Sv$l9wcmGiWrv-Z%~;V$_ } QmL73R/D^u.E@DI'=TOMaOeQr+m6;_>=IS`{&[X3h;YCIx`Loe_4^a`o?BfMUy[0l*OpB:A@iR//};.j[!:zG%}ma,}O {`gips>,dP O]L8_V+HON2rwkdbar%~9l9R2xv%}noڒ8sӣht_wudZr}e$~SmbʜypoiQy\lYNi5xN tHrC!Q>iX'M8%&V9i-q:'Q3!O2OL׊.E&V.%71.,_: =(GV.0&e%]0p6;V%5a"X+i$V$^6!Qھ&n_ rkdlC]",D WeOm2:d8 =2V-) < q:[98:*HL@ &5x(bB5n1E*H~ x N^=>++>tcrpain004{LBJrCYE`SuDFp Qa }! (`,y7 o3#4ci8 ~3' D#iqZi_9mKgkh4xpNywj^zo9an\cy8y{YB)]~.3Jum84/Gwm F57`+KQΡ9zƋp,\wٱ0(2+ ȩ:Ց>__UfFΈҴ &G؄VqNԐQх;ҵ !yïHWF飩6⮝BټV²P̧˯B9)ǻ& ޝh䘾go͞z}ˤނՊꮺ4&g츨4ɪ,ڕmtǖqբ^4ꭰBʱT²Lƴ✵bs䘳8ܝ>֞ؗhfnaӌ \jj9vw~ifאvfƄ?yw\aYqjXw|]zkuPduחjhu~os%^a]Uychd/I>PlM'Q?UKq.Q*2Jm>[LT.@YqVH[VFx`@-?,a6H=7z?qUL5 a9"zGw]MwmIX7 rz+jKF"}DN tB^*dj GfXn Kl DM P{, \iO<f^=;\2kEL}xt͎w`yui^v5jOy$d&y9pXgw+g,9`$i1 `mTF3Y*N^*Slf|{Vjz2g#Y+M9%(V8i,r7(0#jqoԐ{ ^ ,?W/&;>[ Z7A ZWpbYv{d|Cl$,N WuO}3:t: F:V4+ E"qD![:@;1IWA -6x/bL6n:E1I "x N"`>5>j,>d?F,crdeath001f^[N^;QXu4Yi0MoTR>bSpwj-xYJQ{ZmDlDdaFf\>(au?Jd9mr|WN`0zz V2frr?{)(t:yHkSЊR׊a &y&,YviZ^J}lx]~Sg2j vxn\z.|"Vc{K݈y&,`9~ b\jOv͔im<x}o˜J,ϣ*Ħ(MYǕʗƣ(Ğ-wx폠ʍ6ӑF̔<6uiyNJ:Ÿ-ΒF#ו7aϋfʛAţ-ţ(H"Җ3Eי2Й ͓Ԕ7hAPCx)CEWF{ISԋ>ȋt2lR|Mgm[ҀI]Q]4iDbCvDyBhNZڃ!EfCiEhRHGA\PHjYwhrX}oFsgt;Ob\?dGG2qpO2\o^#4ib(jBa}H+dA-lQT_\4Zc"MX.UM<y^ P j\]TPPUWMlE2ZSeWJćAd'}J/-{9%700n\-}b;DG 8v7Sr,QyLjJ:mKmDdY"67 .+2~9+\".&'d8UDNJJI98E(< Wl_z4,  F1/zu_#qPp.?p҈Zk*e*Q%Vh?|+6[9c?a/,a2\S8jFc10X,H:R$8HJ5PXBP@IU),F5F3@Y:JgDEU7QCHTRP?V\RbZ!z]y :"+f zEavFs[M' 7 S"<'*%AP>>9\> chTcrdeath002gV4DBBBl,/p0i@s} 5jHCvZNUQ5{X9`9-r,X>R] o1,V_{VYx__\:gTiYT>go1VPUeT*Kb`4'i-9[Y)OuJADkHMI;O#SG2'a45([P^%?/M>IR->R0)FkNY;R<)aP5Y?# r2c"7h%;k+PL=b,-EM?L%; 3b* N jNJi+[WF@h>^nEGnUuIqd2xX9>TuHf}Y_bȆHFY-bM&GUENY]ctau Vr9kzM}S~e`lCq/W[TU_Z_Af`Vn3\Xa3YOZeR_B^y7AIn,U Hh^a>d{x@>n.+9NH9\I~~,Ą'{p,lw"OP6LB/U]Tq!|)D&e+FG7m%-h>">=4Gg5,crdeath003qEol_}s;qzj^-NXnnw o+TpYKasDP]mYgwHAt}r@ȉZewws(bfڂ[VW&raEn< Qg"w8M.@^]2Ug"M@bV?^9aurmahn!xjww4H|Y(Ѐs,am"ri?`E/EC9iY Ȅ,et.lZ^ ;~.gb9Á D:KʉL.̂dp YGAc7\mEڐbal?)~Fgpp؁Vxɉ~ ү$˩ȚЄɁrzફ駣*jc꙱1ilx匴ߠNک姑&zNxtYuUꝄIݢ#ߑ٣֥/ג έMLjǠçۧ%צˏەrԪ˅Nծ+Ϫ СEͪM:,ۉ>+aH?م$Iv Kz[/]_p`A E.`W(8D^&(;5$,;J/OB,Ymt )* K+k7WW Tc`Vst{Rs`ںG߆,`úS«hø!ٱ[a}aF*޳nL״֫k$$:BO@d"1IɾN¿A·IޮeǯۺeĬLçRX@gFOwU,b1Lm\G]yP O9 >=3E+_5?crdeath004w@pq}wM[c SzԄ]c΂rn s{,VsRO_qG|`mYkvHEnvs?]dw|n+f_Ă^HZ&vZZt85Sux"lEM(F^S7vtxk x{'\ l*lSW 7u)c \4{-A7IԅLʇ-Ɉdwx O@@\7Xh~D\Wa?g>qgC\}nq;mmYzw|u'ӠzΟ"͘Ʌ|ٌvx"o(_qb/間 g{ 썋 ߉cPڒbbOw_Wdd[n[`[V|'咐ڐj٣,ݘ2ϓkSquʅpƖޞ}'ڜ҅☖-s Օmqx֗hGЖs!Ӎr6ϒmRx+({1=J8FvK_AhH.J^d]13b߀Xwh .9s7_EO؅5 | vNj Oc-R\_>\/5)Yz^M|.r~9wt5W[f:t{e0McBO\eHG\l[$a;=X\)_wK@jiKIw9[UB@C]3?NWJlV"D*mnD@636)dgM\l LIF]@U 4Xx9W298JB=j]*$ae=[BOA5:A$bb$RJN>MT[e'J{F 3MXWHV,T]]\& hi,S1!*j\vRO Iem`ogl-v8-\QRDxa,XqO4!HB@<>CF8OPczV6ALj0qe![vgCQ=756 [HF 2|J6Lz/rw1q%]VƘ8,ŌJ с=*|Os)YɅ(K*C"e+`L.D\I,44>(S3+\8o {' vzH&m=g[[c[{ zT\_lVOv[z_xzzzrYxp`N _RoócNւHgѽL׿ ù5ſɷľćƱoʰձ.ڤJΥNȦJʾ7۞֤0ژI̕ɓAɠÍMȶD»CăY[JkCTlnY%gz;No]KZzV T4DDH&9O9-4u4J`7P*-IBȷROI[5YúBZ>>͕=@GJr^Ce恊-cr\ևi~,z(ć[Nqz͖Ն ֐NߎEOgy8X'ޝl!y1y-k-rPquK~DYe[q^mhcZcuD`֋ZOۗnxTǚl͟$rWX_|zhiwzrҏVOΏ^́֜p ڃzTdrzOVz]ua4r[Xy(z,LK&CtH^Ji<.I]`X0'b߁Xxf-+7s4kB[{Ӆ5|riN_6NX^=W345`vbVZ(r.nur7y[}_Z4til Ky:S[}CIYY$`IBEA5uY,\b9e:ODA(m5!qMvMm,u!cT|NpLgOhIgxZ`[cS]O胫S∓J}O逍k Ng|~3[^qhrrt~|^}Z=u{| m|yYDbJngsdtgrpom}t#}p)ky^ci_!eURjht[Tx]+hRrR,nGSlVuK`lfpX{UCrdwvNJoNrSaTjfb6DQz(Y2D`qg;bI#K{98=OV@bJ/ΊFʔ ,"|&{,LQDHZ,^X V"}Bل >9QO`'N7@Wr5UIe(E>97>Xn6deatha001wC_YUrpzE.2'@W%Y:{=w4})rHwRn&}dEe5LxCk|N0x(Z`j=Tv$*Mۖ4XNALXfG9^I7[+nP9P6^E3gG2pJ@o3nmUjo9֕uΚzrz[}=LuYc*0l=d<,yUf=^,]m-?s5UHS0QW*:+Y(:g7;H1CFZD'OT QO"[AG1M3.@ZK@8ATI.2FoFW ZT)JYHIʚO>vY7ኦC"T/%( gl,440)8''E"0V"cY24/ v|s,Nv3've5N{.1ba(tg"xp&̈w<0nD(cG/dE&\1xg5Ӈ% s {\} Ȃ exx:(9'/ wETl!9'12?u,>(+2XC7J9,wG| 7;F/>c@bElaPbcO569J-y5}02*.  p p|"o ȥ$w cs"yusxXUФLrfޔ!=y 8Ӕ12y0[>X>)>"lYಖdeatha002u.wof~pkz9`P%07[ g Cz+3iMz`!R=OAWpDNTƝP{2|j#H|Z`8QpqMbbt_m|b.jq]ZC|r\aGq7^+\Yt_aMf[fKMpAS]p7Rih6S$e~ad.{;wHOOG]1dI`EIQ]xx gUX`skm!VLqi?e u)p3TAQLb -zKY `mhnO yW sz; a:Pl?u8s)HeRyT"Kd"]e` k qn,j}Ge{KTK#=bNX}NEt@LtS R}SJ OHD#?:l ?V YNRdfQ\%\<` lY^e!` `}N W$X Uv ^Ya\CIӆV=2W̐O28>}=V4@K2.\Y\nAi"[ANl{w2E|@s]~TdwDuk,nh(9^d!$ypixs~`ỳyτ'kxYq^ikHƒHɈ(ƇOuΒԏ$rRfwΆn؇,兴+cjw~dz`sg\w?GuUl__dr?1%މTL UU,YNOT?T5x; 3B#Аbs# +$})B(.6#?0$~*|({1|(2#!m@z<&})z-hRr2wPq)}m$xs0t<2d> qC/b4e0||qfo6r n u]{} |Љ~ ]Šf4hDŽo_k {AXP=AX hys=Y)S5+D51"H yp %[ *CC(?D*%f/f#P*?:QD.D ?)75U*'8%>0A 8=.;8'e0)= ^BE w8^,{T6@)A f< N:!8Y=F445@_MDDK.F#8C,/?5"Q$DK(Q-5K16J;2F)DJ7FAD F@mLC/O;FLC˜Sa-׬M2O;x!Ҹ;$ݲ=ղ@:ݞ91߭SУQڙP˔#6Cِ,kiڙ^K5d$=<<5!MN>d>v!>>]&cdeatha003\2fdo|ekym5cc$ӪYLƪFJHZczɐPZΑjj\y]֖Wf/@QfOB@n¢uxk-my}~v^#Luj`WCUhbmxShatclcfaCp`0y`@gQL_OmJkn:Zd.W\hf)aW["ePGFmGK%iU\^(`T}/<6GmOeq^?&c&_SY@x d%V*w g;"Trg_LpH-kTHJa,=4ZtPOS]$[4hkv&~; v (y*=KTQOGL&9AbJ?T:N#A5@H4S N:SG\ LbEW@Z%3vya5cEQ5]aA1fmE|@>UˏN,"nXov~L}?tpျf}hsp7χUo^dbfn ف7Α1ܐ)!ИGQK} XQj,`F`JW:jXR3ux;?f"iz!'(G%} (!هf%.6F*,(|%~}(zL,#uB2pL{'!f`y(iYv!ql!xm1r9-a=s=z%f.ob.}~ sfp6s uz[~Ƅ[f 4zj*h x., /;q=Y+%4+5  %'s9;'/ +A(B'_*_(9(+";9 4-V 0 K*# 1!:%".B$2U7-!w `0y E* ,-A&&( Y, ?!%#/ U8@-6*641//%@A8?.=F:'28A>?5.>"bA'%D>D%:u|jЧMRβ~VËduϒI^طk'۶zfHءۥmCjOf_u^ni웒ݮ|ޔ폋lt8s3鬡È/뽢 |ܿ:>f>,3>Edeatha004u0ieF]jiFU|p"es{ǭ_cûSTչdE`cn^GPNZVwcūom˵zu{yaf FZghY.(XX&:]4H"QDHa9OZMF!UbV1,iJ:?U.\C,S_ EmD$>kk1@9].3eL%1pJ/;l;W6oJm]ujpx WN$VHwW7T}tvt#J@py~z"bkdoogv@|ixkʁ!d\t@pCch&mzI,MeĖxqT_Zua}x{#؂%Xhb}_s^qi^u=ބwKpJ^E^?l:~/qۅK9TSGG#bB?K\2A`X(Gz/F~dh ( w&?'2:!x5,z!y"{!s^Y-e,-hc?5Y,~$j}(N@+NU"Q]tYsk(jo3e^3Zr9\n+J]f'Ww}x{_F|]q8 \ v\^ s| z~u {fF0yh!x(h-+#*"41}8}+U40<8,<P+0&~;,9:#?7#F>DDB,S6-.%=99Q59I(I89I9):FCNn7KF?C;DM>JJe3B:,8FQ2JH>CK?VBFVFL3:N9\JMKVP>HXR\2PT7Ha DcZ\>PcXe1U]7Pi PU>U\4GhSXeVd [^?Y_ʰvkvgzί\ZQSчϑ~y鼇ÆqjMcNcUy7Öksbicc>,Ȓ7/ѣ;̩I'_>_>G=R deatha005e0S^CG`awDOxrT^IR¯WB[^sWM`YQ rjpyW >jxhTBx\E)aY?\hyH[Sl@yl=`gnK;^n1X;`WjXDfO;mk9?Yx0DWn_4UV^@C@]?[\6VKWba/OauIq|Pu+(gt5HKw_"caWjC"}- l({H,k/c_{"{cAG@^]=r} CW/`~G9Bh+f9-+,B.h<&$=}N%5A9sP.LP%K)_ Y8B>s'[V$D\)Z\|NuT}$\y +Qo<%ba%-]N>TVSFJ_[A aL"V I\1]A' EHh CVyIFvA:zA'aB$qF5u SV^O! GVj[pdd Box(?Xp @ll!KT\ TcRe`Y(ZM$ Fa}%CUkEiGoFeSCnz2'iD&h|4BF\x-Mv&8\33LD[(3 D>s 9Hm;2TOD(W:+CO&o@jTUm<Rk[#A4N4eA>n@ G0F2s_x=vhQZ/WOdQDj"| -DVEˁHT:iE|fI\ROL9z>jQBYSOOK?aV >h[Y#\9uVU D~RN<]D߁7zJU^#5b4xm0vB76)?H*N-}U|>%TH>9P497I=:{UFK I)CI)DRfY@EQR4HHNWBi07`!HU>c8LZRdWoYZbA@ZMf;Vpn=^H~96bV*cGJ^O`b^KQbO>ZZ_lfNOoKKg^oZ.lTFki0inwVKqfxd5t[Dtny^8rhwoDz~K[IQ~ڳ:ӹpڜcVɿTTnFຖm׸deVfVK$?ڭ%ȭ;дܾi>Y>$'=Qqdeatha006X5JLK\/PǙ<_P\xo=hNQ~yÇbpʐwD̅/kS M6jPA6[O6g{5Ј_Ch1kb2mgbD7][1|Q#T_[Q*_D2z.>v(E}}dY0TO]1U42=912D*6R=I'G>&AH"8JPp3_mM%5F?(c5ҋ l<h#I\CB|!l2p-5S59E.{g=I`?`XIf:+}s-ymA ;:PJPMEAG5:[I!1sOu I-N|"*ptC@ 2K:42.%es5B{ Ky- Paw-:[0,]>&SB`)E!HJ'D8I/,CoB3#9 &==*=;\$D5:OC%GXD[k+C!*G$Pe2X]7g%>"/3%ZBn$C0/=#/D%Q3I#_"$O*S yqQtu)Oq'ly(Si.M&m{l .Re"8YfC[`gz^ ],}M({Z1f#T G[TlyvoQt },Utaz (fq.]t `U8t #D#PHJiQ8)\X>Q ڗ+deathb001q]U}pbt^lm$A%&4$ɬ6+ŝ2eu;i>T-}>}:gW/Y"@ԗAD]q2cu)\@&qT#g7?Q17<)ŸP3Zp_ EwMqcgQcn,m>s>VեD)76i;DpG@Cz=ZxcQVaMA|iW?uF%^a45zO<&gF1>;M@S]<.]0%I2}R:(u7=yh`2$c[%Id`+%N7.N&0dRJ}:(d>`< /F?X>]):zUI>[IDyL?*'6l7}T/m`"'*iP/#B'l`%}LncqOnl"[~}o Tlgc_$jP^JY xs{o͆ͧ3eeF5Zcn#.qvǤ}Ζ˙%tَ%yDdtچv,ryp[zgsgBur~l%ht\V^ĐGhHp~Nl!WacmXk}df,nYKUj2j~?`3aGfvJZWWO1a:Y2YD_vDUXKd~Oa{[STaalLZHa}S^g*l&--_'=_;`=Hd daicX #C:.W[ jCw::RH~]AE0)>'/>p&I>; W deathb002sVTxby_nmr%Vf0}7%*I']hFiM RDuB6sXFQ!xD 2^8#i7h`-qP\eBhh_bD@iZvDzYegoDxw~/*=ܭ(ᐹIOтehdٍr SxmLLbidPX9c?X_sIrN_9b gov,tw s'PzJmUPzX䡻XvV_ o,Ohd s$DkGҟBaKd^ ]9[Fo/o'KNhIJ0KEkjъ0;+ۉ0oF @K/[cV QVLwuw6א2怀BĕIB㐗8};?|$AwGb\svcb(ă\@͈`AX3>3&a73dG/>7RxLPG=T;|E!Y-2kj7-qE!HpEI zZ@-aYD_BFQ/&13k_2's]*x`.,p13nO?dUQ7^o]H2j=L`<XI5,z_I;R]'MRj(55$wR,m>?8+I.}>TD;d!We%De6!/e,+I.H-XNgX<Y][Hh:EkY.&i6_B;2ӄ!((O# ( a j !!B#?p q ^ # {S87G#@@ iMnI0 S0HZ#cB?f5VXyWD a?![8_(kktc"mz)^s8s'Ʉ;y?I INJ26=('38? /v6* t h#3&*2 3M1$~uˇ%٪>Խ>ѝLҷ/˫_젱A튻7ǰšuu˶-`ށgš]Ò|~ĬҰ q Lɑ]ɗuӤ~ܚ`\Iy xߗjm{HˡƋxRWzV[h뛉aqai a瓃JvMJZqXQ`NvPN~P][[|R_whqi{Ow}dixi|sox`b2mx"dn7.WY}$K_KfO ]HVFH+$>$C$X2'"P%;8%28B*!Ch43x .{%2C6IND]\>V d7>2N>H>|deathb003g]RJzJ|g{"DNO&&_=^JOJFYI:ESP6OvTL0s:&X4%`Zc+@6x80p|Zf`qyhO_lZz҃lz|loZvtchhxppIYZnBNcsdilcqtᄱ偻ۇ~_ffwe]KH (zL$|m5؇7Ւ1hFαșHu`ԅcfyԈʼn.)ꝓI޲(ե&lΈu {|ބ$mxIhZցcdkDuApRGᅫoEq;~{/+Ԇ''fzahhjzqtpkp:|(dgr<*]kf^qcco;mEqB|.⁲(bnjs_Ņb3c^kEpCo^9F슿PPE_S q%J[O_tuMk>sAwIKXۏ]UTkL'ipxtu_[-چTx\IQ_QV^Lk B^gaok!dowKZjXzLy[Pt>Q~;!=rWI_/m4f3sXt ODqV GH-6T6mWY~#Wc)kF2'9,>0,$~QBh]BU/AjZ#kXc>hu @69bHx^"ijWjq` yfG$,T!^p`_$'m  Nk ^KKc\SaUJ9ơ?'7OcFo-:„@J;ID F73Z7_+t+*$D9W4Vb!ej)7`; ]CNi<`LCmKNn4m`OlNkF w:䉂4i?^CbI`M@܇_#nJEl08F5֎`.D,{O: V"k[8T1BzQ b?) ,t?-*#•O(ԁEs曺鱤>˪`µ`@й>֝]ܒbͺ%~|Ƒ=rғxuȴͲ ئ Ԕ*Ę}+f^Ʌum(zlrdv^fnb*g>i޵ ̥˄.R64(4AH>>)?7= ">X1,[3D CX~/*Z5y<9byM~y9YsZY&F, MTJTl^K<<O4 \E7="C*==D%A?ER/4_2>e N-w*Z!d5_:0+ 7 U![n`>'j>S>f”deathb004nairHjSFy&W{,aeKXe[GɞMؤ ;ԜPǕTwDpѠ$Tϕfq\_|,CÊz;}xYthT[jh[`gk~PuVgqDŽcю^ćǚ͙ߌTTϙ_GM! '­&$睮b3nF0ݡg屒A ȟMRʪ`~hڣ)鿳+ܿ&'ѿχn9 ܘ⡹!ጻl١،Xգ`揁DݕyTמ|Nϖ٦ԥUF+&줻 hgd뉽hЃшnCg最>㦉'⅌iӈ}؅r֎}XFUޖRI٣c؋s鈏6⊊Kኔ ᇎipEe?ێ)b9w5܂>{ cˑp]{U•sɒ[bfiXli匸_vijjnmÏ z}X*e׎ɴ&VN`͵mqAUzpccyf`tVc{kUIH<~uYGpm5qgOlO@} >03wMQvl< 26'6+6 :?S/ВJ[m> =@uC0Hdeathb005cDgru8}>&Mۅ+I[MAbE³PϹ:=ɉJDwE/hm%OǛ0JRPx+;z1ɞto'WtvZg}R~9\y{[h{![^w4gwekq~ JmwGg}vdևe-UTِtEM8H" \'0&a$◫n0ٝň륪9ɢЉԳ ⚇i짆4ĀϭAIɕ'_ߟNDxkҝڲ/⹧*t(³'ҷƁ ߞ Җ'ىxGZښd{8}qe__߀ifOܕpE<ӛ*Kڡ矤&&yjˇ߉ƃԐ|ړ׆S2*Jܢ=|Ǯ ƺ~:p*_7.K2L3\I-P.B0fL1Ah1[KyK1cH@z.XFx,_']ߡGڥ!Qݛ,k^۟!5Ģs5r\Gߗ>#ؐ>lVGnSջ5,M$`1(t ڹ)#)L5/*06|ڬs%y* " ߼蜗VXEʃ>$<>~=]Y_{deathb006gfn{o;FR4SMCT&O7VKAZ>?Ȟ 1FIoz4͉!aʃ GWL\LX'T"T]f~LMJO! z'Z&$ԃiۘ9ӈlܓ7ˑ֤1΋bg؛ZCƴ ;G&Y,^gkǎhף.ڬ)ӮVIй,Ʋn㌏/Օ#ćχ^Mwt=erōh\bd:bBeh(_d4z)V~1toe}5ɒe>HJ͒oՍaO݄XOumy;{˅~Ҋ sl4{OVnjnJ5z8L]vdk{[kzYGiph5kabgTavDAzBVgizb<`l?dr]tO7I9n1=N:g3OmCFv?sJh} ș khp{[o(ԗth~qōn`QrUWZDUL{8`X}D_VKG]jhVtFwlF8ORAiWa2l][HD?j?1v2ekHq"IpXi<2~"6%9gaebn'w>ReX\!MK^_sm(^_h^m#e|w-y q^| m,  ( S!VK,O>bM[I<5?&J"%]0T#+V)iBl00:8M!W7G/>+ .?7)Y9K*fU33T+E?{,N1'M:5(6b&80R'W%c3IF?BKDi?GJH9|4q$W [df ` 3E3w_;'[d~v:(u -w >7[ @=k#U<Ңڽ0ԿfCTCQ-̂0L^۰lB՞pˎ ¾pT݀2=X˟~MỲm?n ;f l/rT+LT1)A>q4Q-OH/H=|ǽ{$\V'5?1(*YG1X%JU,8qP5sCU"nrP/vUYE޵!s`ݭ6}l>Dd;Y='?[A3@;?З-)-V3^JItwere I#v$ט%'Ț|Vkח-g~!;u T %Zl=>Vc>C ,$Adeathc001qCtky`tuurǩ:30'@!ɵO*̢L6R%-[65a=aLhbE$}kXy'==}YŰ\.IMoOY6_X?Fdwv[\ZG{gFS9E>@zC0iZJ)rU6_> ]$?G?uj8nJ:{D%d7zM a=m(6q-yCuLuXfGg!ihJR. cg H< D[3;Z2^::WS*MVG?I-s!rB4y&+r ;~l#jWs-{:{"qhs82y2lf4l@o(,gV?|>%$$v+E'<0>|L',niEgCh6k%w);6"2">CD>rLW>5Ddeathc002}xCroNbxvϜ?33'D!ΦU*ЗS6?v<,JvPi,hJ˕a7O"?h6pfEPm}5`ŒB`siZhYnpUltSsZc}?d||2u|oRrYmQaԉJnڇW{5{"btzr y{}1}H,@G!y x{P%#  kh&hmmihn[ mޡ lx'y(#*kmGBJhkIm^Qje`t8+y2y H{<0 >$1jBmi@iJmDmJim:9jD4ǂO~51x8}2I D×+9]aH7[Q1bœDm(I`VR1p>0b:0[!1sEE@+DY9[(?a1e Ph`6 pX$3)]ɢb.OQoS^6`\?Lgw}^^]HhHXe+S,ufL'LMzn= j2(n6#G7aB ^'3MCk8zR9{K'oBzS! c)m(Aq:jKuS]hGh#jjRR: ci HE f^ 3E^2M?ƋJT/GU=C;6wuB*}&"v;jmWw#-, uhx8$~0qf(p0sL kV4G4%!m(;'41z6MtC,y)lf=b?`4\'wn*p81Z9mC0P;U0xkf2~m)~Vbv~y`\ ~i}zb vg_(y&jId{"M `¸ uͦ C`D14ʄ=I\aaMͬt5m_o6YEWRdNJ\Ӝuaiߖ۟ Ŕd}^u؁"S؍oރp1~ys9/qfUhil&upsz/p_`]^igffmL_^G]^iseDmn[pFxym_mrp9jԒF9ݓ+7ӦF09}9ܦ+)ܝ& Dz Džbʏd˳ʌ\އyrTL^>6'2'p>c>N>]œRdeathc003zCrsNd{|җF3Ƥ:,K П^*ғ[oEvB1PtWi1oP̐j8W"EhƈN4vke0Mc}'VZtw^Y#vi~{i}} of%N rIp%t%L Znɲ C^C 7΁?McbcIŵo;m_8=TIYUWdƓPX̦sba٣װ š6ы_r؏ސSٟ6p 䑠拘9$8[}@}&\-򆘍txs@Z~B+tv&tfa}D킠\3kAXd?y׎M?17֟M0>}>1), Ϊ ̈́ bЍ!dҫ !Љ \!yrTL^>6,2.8Y*> w>HH> V@deathc004wCswNe~ՓP3ˠC,äU!њh/ӏeoLtI8Xt`i9xXˌu8a"NzʇDpc6Tht9q`͊Jerb\hXni·WkpXs`gu4m{ }{vRdZkFb؂Am߉a{D{W,g){r+xttu;s;Ivᄬ/s-Jcd$#u܀{t4/*Q#|e%rw;[?\w+|%>$+A(/gvz{הzR"!nr86mB+p8v ?~2Dw47,9Iw x{Q#  mhjk pmsp[p֡pvw#mm+}-,hz8jc6gp?ow$w 7w;%4$"l3mm#i|-l+m-hz*G؃4@ɀ`+?vL{%WT+EjLMیFU )hMMi+O^J@:m/?i4:qCrFIB1M`I['Lg3j Ts_6 yY$3)iʗw0SXpWfo`f4SmwbcaMiM6NFzR4i_V._?lBh.Y.gS,RRwnB$j8,n;P:bIb,3SIm<X;{S+oMzZ% g)o+LqFyTuZbjIjmlYTF cl HPDc3P!c"2?GʇEW0HWI;KQ4@uD!LM R-s1cM=U+I+/~k!_)u3*n0 q0Gj>*c*c9M]_B1I?PF7trya0MYu%URto^T#jhzpit xf"M{Lvp'v%HTeƼ@Y‹@ 7с>Mf_cEh:=p[8?TIYRW`ƛRRɯleYծuԿ zƬ6zӘ_kכNrxޟOد8d }X}|圠<';\JzX{'|^ 򙚄XBcC,X&BaFX]3h>]dÄGy؋WäH:7؜W0E}F;)5 Ӧ& у(bԋ*dצ*Ś Ԉc*yrĉ Ŝ TLc%?'o527~;> =>}@>-{deathc005wFuzOgՖ^3͡P,ťb!Мx/ґtoWtTCduniDdȎ8 o"Zz̊Qpe6Whq:f`ϊGhq[_hYnhՇXkiZr]jWt4n}} ~ySZ[k?cׂ;m߁`}D~R+j*~*|iuۅq;Bvㄡ/j2I&b^$#q|t/,-N%]-gvR;`s){%:$,?(,iv{}֔|R pr20n߂<$o0u8|1qFr@Kf.P]KZ$Pg/o! {Xs_6 ~Y$5.rǘ2U]pXmam5UrrcgbRiS^DEQJzT7i`[3`DmHj2\1uhY,TWwoG$l;+o@R>eLe-?UKnAZ@{U,dQz\'i)q+PqJyXu^emInoo\TK cnHSDg3S%f' 9LɆ@Z0BYI6MQ/DuD LOY-!z1cO=@w*Ix+/q`#V)j5+d21g/Ga>+Y,[9OVTFYOR\ȟRMɳeeSմjrǵ6tԡBfأNkrީHz׻8߷d{ vXuv娚:(:\}JwXv v{^z }򧚀WAc?%W'CcFX^5h>]dƇTy׎eƦVH7םf2O{PI.D ק2 Շ5p׎6oݨ8Ȥ(͝)ڊ c8yNj*r̋͞T,L-c5?7oE2GW>i>:>PVUœdeathc0069hK~zeYzMΰ0̿n$" ªd_PXtiSu"oh̤lptihȅTml9zJmszglivɉggzYlqQ~qW9ocSiaJKih4mj0vЂUsQ4R yU̅tц5׉} T28'SMK!i["݀t('L/TًC/ms|"2#! 3,"twy|ȝy͟, (ul0ۄ,m6s;}<8{C2*-&stϕ} ##nqjinysq |Wy՘qwu -ma.y. )is(t`-lc8no!s&t:.{9%(#"km$vZ"i}*l &n)jg#]ʄ+Wy"N^|r ^ Kw;f:9t2oR7rL:f_4P‡&Sm(CzPx4Me#RZOhXk% o!kign q@#10uOblfq ctqr`Yo_waj_8\^z_Iim~0mF{Pw5i4vs$`nw}Y!zP*}S]MqjqG4`h|Cg@`Do[%zg@u..~,*XZS2xbgryLy5|zGf@S&ey)L[86q<0\HqL 2[ 5i*5`V,T(L}pepJuRv1y{ uw},  ~ :/bRA ^d'Vg1+f) W/J*Z8IW;/V*SRDLO6J6RG=PC6=6}EAJK2;PJO/8F8D|\"H&SH'Y ]A{Ua@Ulc [nnqZmbcRr@]wru5<Mڻ2ǶC * %~4Q@dN­d7ӭQϻ.͊G;9_?^Kɓ]Yӓ`H۠W̯pRZ`ѺqئeiJjrAmƊylrv]tzY͆&W5aE]+a"Y](Eg8/]+dg8]c;w7߽\lơkzͧqo:̸Xt\߻q/jR!ߢOpߪSo<&c>)˴6P:e\zר|XM>Q=Sº•deathc007m;/=^A&ܮˆ~]zQх_È^pІ"̉MҫľbŪnvzFhqT|el:[M|Cgsxgj`gwQh_}!ZZY;V]KMu_m4wtj-\S1R58QR`1k M 39TMDo!]UU" { _k$(F+F2P>1vCs}|}Ǒ2-b$2z,"}^w tȀ }* %}n*4pl=z8?37K4%)#nŒnʂy$2 "n[iZkzu[Wx mw$s%2m\7|5 -mg"oR,uw`;xD'p,s8.F+ %-%ki ~}\*kk/p;)t-oZ$mx*h|I"[v~lb jdF!Q\}#;w1:v-nY>r>?h*c3a%b}(Kpy\m7PQd&UAgVXkbZj),h_!rz'a~t~ka$usɌ,Ά-͊ h| vЃkOmg]kˀYvnv ~-NgT{\qYk_m3y vLlAYeMls4Xm2bv3ho8rL+9d<_.[U)Vj|ros@xYw&2{~ rwx(#  <* nYC ag&q`k8Lg7 W=K1^=uKYD*Y*m`UHf>OCN7bYJ>bXF:q=A|ER KW%<^zLYk*:Le8O]/J$gYH4\ aA&|WmAU c-[m ʇq [npfXu ~_^$xsz |8͛BڦV8؆G͜*Ʃ"|:tMCyeTyd@Xٗ+mJő=a@El_U]TfgJU}^؆ic ae՛k{،byLy$Csټks|T Vق+TS6d\E`'.M\!VT*d߶[o1׭Uڿ.ԹbԼ[nۺ`ѿ^ފš6̹`zgw⬍χtX}N؀αն߂TޡFmՓcޅ_K$F/;7_l>8>p=qUdeathc00898K5]GGԲ1#" ؊qjVXǎ[³i_ Ґ߉߽"gƊpdh߅QU8ZS~hfځlzffqf4]<} Te!UHk3{},z{i-TT+UC%YF]<+WNx.|Q͹ UG,fAORԐ!lعf}#Y/C+4'h8P=+M$˂t)N*IH]Cҽ Eф0û~BRq3Q9F8i 6IH%E}%4E7 +HR"4] w&Yx,x $ ,5$u,lXO`x4 Q dCaOiGr+a_Y0 k{ vUi|kg,LD(bd( t{{ y  maz'Mbhutf jg.|Bݏƶ 2pKx{y ~G[&T:YFzznLrmShƅSɕ9؊4Iy$]i#vS̕^$Ջm-ґgkEƄy q{͕+|Rf|y]Eri~|n v2Z0\Mfuk(YqY%O~\.yM';(pCL_du5Ooe RhAxs HO)I~0V@o>W;dQvy'ez( K~ S~!Y1PX}3w!7%'- SBy D::/4bS!>^p4Vs?>+q2l c;nX8;hI5LdLP/c9VaX4L\F`ZIRWQ%RSH1LGTvSTvY_d2KihZfO/I\9HY\|g+aW6 SU3cf+`O&M{aaN'`Nlm'aeSuSmyieuan&R{Jh&;wzKn8_GCV{dxy![YaI ;ZLVXkmlgmhMt}?؂`܅UIc_QZs8]E^{HGwozYL{ڊɂhlD+ӐdݮԾv֠\Iџ^~J+YJXsΌӼaL/ܻUh'fe/퇰h e0sci֟b}†zȿї:\ug2ޒj_ohGE#2P:evh=Z]#Jz,dD.׊:ӣ_>Ă>ɐ> t¡Aboom}W@cw\dldtdd*>r#(s1 :+8dX1}P1R#ub9}w:hR#rN`9CEv:"j.hr%bp_Dc`i}gFld_lwihkmdu8fmezfpt}^@S}p.U}bhpmu8\}V}`n}W}}f}}4}x4}:m++_f $" ss]]%PI}L4"%e,A]3Z*R^#d x k$ƅgf |s$Ɓ}{9k bfhldec\`'_>dLYMD=j:dkDEsC=rcNsYmM`o9{cu9o*Fsc1hrf#ir8+Pk1|Xw1Rt#Ri#uwv: vf:zj{. ry%(\)D)V. V=J.8W-G-}JEChO1W(]&Bq@ lF wJuPYM\ !Y XJRA^\OIBYLI8X2RYF?^T.Yݔ7UAR *s''EDA9$ ~14V.MC ?; =b6_4z ! ֠"{%5(TN%FN/333.2P=5@..=PG69 9'>-<A> S@7JCALM4>GU3IGG I':3I4.#'{=4 &>'I#5B#-DP7##&y"!4%>n>zB L4U4H5CJBY?Po31P.PA?@A`>U&*34R5L?7Vߕ7&;V4`>3)w5 !x#K*|(ݖ x +,vvܚܟQwڡ M(aԕw `ҟ)j.ҷ)E..--=;ҷ$ҝa֣e˹ #ʡ[ k wRH]AE. Y?(=Lv?=K?(=Jv?>M?J>Tv?J>U?>[y?>\?>aq?>cv?=KY?(=La?=Na?>Qv?>Mh?J>Rv?J>Uy?>\Y?(=L?(=J?;OY?;Ph?J>Ra?>QY?J>SY?>Wb?>dq?>ey?>\a?=Nv?>Mv?=K^?>W^?>Sg??Vg?>Xn??Yn?>Zv?>]??[v??^n?>Zv?>O?>J?>T??[^??_??^? ?[^? ?Ve?>Pn?>Zg?>X^?>Le?>Pv?>On?>ZY?(=LY?J>Sa?>Q^?>Lg?>X^?>Sn?>Zv??^n??_^? ?V? ?[^??`??a^??b??cg??V^??`^?>WY?>`b?>bb?>dq?>cq?>ey?>\Y?>`b?>dY?>W ]?>]?>T?>T?>P?>T??L??P?????]?>T?>]?>T?>]?>U?>(=>=x=>?(=>E<>68=>2x=>9x=><<>6(=>E<>,;>(;z>*=>58=>2=>C=>?=>==><=>C=>==>?h=>>=>@=>A=>B=>D=>Eh=>>=>?=>C=>A=*>2=*>7=2>9x=2>8=:>:=:>;=F><=F>C;F>,;*>E`<*>D`<F>G<>,<>I;>F;>';>(<:>H=F>I`<F>G`<*>D=*>F=F>I;V>';J>F(=J>D;b>)<>,=>G<>I<f>+8=f>7(=r>3;z>*;b>)(=J>D8=V>C8=f>7x=>?=>@x=>B(=>E8=V>C(=J>D=J>A=:>;x=2>8=*>7x=>9=>:x=><8=f>78=V>C=Z>;X=r>1=r>0X=~>/(=>28=j>5=Z>3=r>0=>4(=>2X=~>/=r>0=Z>3=>7(=>2=E?h=>?=;? H=3? =3?=+?&>1?.>%?N>/?f>%?>2?>%?#>%?%> ?">?!^>?;E?;;?h=>?=E?=M?;M?.;-? ;?(=?.8=+?-H=3? ;;?8=t?8=s? 8=t?=%?(=?.=?>%?=+?8=+?-(=?.8=+?-=+?H=3? >%?%>2?*>2?$>D?&>M?!>M?%>E?'>M?%>D?&>%?)>2?*>%?%>?';z>*(=r>3=>5>2?$>2?V>;? N>/?&>1?>2?>%?%>2?$B>F?>M?!V>M?>M?=E?>@?&>;? V>;? >M?!> ?">%?#f>%?^>?^>?f>%?.>%?6>?6>?.>%?>%?=?>%?.>%?=+?&>;? >@?=;? =3?&>1?V>;? =E?>M?=M?=E?=;? >@?H=3? h=>?;;?>;>x=>x=>;l??l?!?e??b?!?]??X?!?X??>x=>=>;>;>x=?????>L?>L?>P?>L?>T?>U?>??>??>L?>??>L?>??>U?>X?!?b?!?^?(?X?(?>x=J>x=J>;j>;>;>;>x=>x=>x=>=L????????L?>P?>]??]??T??T?>]?>]??P??T??P?>T?>T?>X=r?=?;?;q?8=a?=d?=m?>y?=?;q?;\?8=a? ?0?l?0??(?l?(?t?$?l?!?y?!?t????^?0?^?(?d?0?e?(?l?0?l?(?>?z>z?>u?>s?>k?>j?>a?>a?>W?R>_?R>V?>V?V>N?=N?z>z?>?>?Z>?>y?=m?>s?>N?>N?>Z?>W?R>V?V>N?>Z?>a?>W?=N?;\?;N?l??t??l?!?e?(?b?!?l?!?l?(?y?!????!??(?t?$?^?0?X?0?X?(?^?(?X?!?^?(?X?(?>?=?>y?Z>?=m?=d?=N?>b?F>g?^>m?>s?>b?>V?R>_?F>g?>b?=N?>V?>j?^>m?F>g?>a?>s?^>m?>j?R>_?>a?F>g?>>>>r>>Z>>J>>>>>>>>>>>>&r>>>>>>>>>>>> ?>?>?>?>/?>?>4-?>5)?f>3A?b>1#?6>I>?>H)?>F:?=E?=='?=7?=9>;6?==?=<>>B>;R>=.>=&>=%>=J>>CN>=):>Z>=F>(2>>=>'=>! J>>Z>>>>&>>=>"> ?= ?=?;?;?=>J>>>>=>X=>X=>X=>=>#J>>V> ?>?f>?">?"> ?&>>Z>>r>>>?>>>?r>>>>>>> ?>?>?=?"> ?">?Z>>&>>Z>>r>>>>>>>>=>= ?;?X=> ?(=v?=Y?(=a?=a?>v?>h?J>v?J>y?>?>?>v?=?(=v?>?J>v?J>?>?;?(=Y?(=Y?;a?>h?J>Y?J>Y?(=a?=v?=v?>^?>g??^?>g?>^?>e?>g??n??g?>n?>e?>v?>v?>v?????>?>v?>n?>v??? ???^??^? ?^????n?>n??v????^??^????Y?J>h?J>Y?>b?>Y?>b?>q?>h?J>y?>q?>b?>h?J>g??^?>^??y?>?>q?>q?>b?>b?>?>?>?>?>?>? ????>?>?>?>?>?>?>>>>> (?>)?>?>?>?>-?>5@?>2W?>!>?>#6?>)?> ?>)?>'?>2?> '? ? 3?? 7?? >? ?>??2?> )?>6?>>?> >? ?3?? >>?>>> >>>>>>-?>/?>>>>> >>>;6)?;8'?=7B?x=;:?=EG?>>>?>HA?b>1]?1?V?9?H?1?LH?9?K:?9?gH?A?Z>?C?cH?M?Y5?M?b.?S?j.?F?a?X?O?F?d?A?e1?1?f?:?[?1?L >>>>>>z>>>Z>:>Z>>6>$>>C>=%z>>>>J>>2>>:>Z>>]?>Q??Q?>A??A??3?~?;??%???>%?|>?>%?>3?>A?>A?>Q?H=>H=>;>;>;>H=>>q?>_?>_?>q?>?>?>_?;>H=><??Q??]??;??A?;><>H=>>Q?>A?>3?>%?|>3?>A??3?~>%?|>3?>%?|>%??Q?>]??]??3?~?%?>%?|?l?}?_???>q?>_??_???>?>q?h=Y?x=N?z=b?y<[?{=N?z(=z?O=t?n(=t?X(=t?N ?n?O$?n?m??n$?x?oD??V6?x?pV?x?UF?s?TV?n?k6?n?S ?X?O.?S?j.?g?w2?Z?vH?g?sH?_?r]?[?tH?X?qH?S?h2?Z?v.?S?jV??NV?/?lD?/?k??O&?/?S?/?m??OD?/?ki?n?l?n?N??Xi?x?WV?x?UV?n?kb?S?iq?X?Nb?g?u]?[?tH?S?hH?M?Y]?M?]b?G?`q?X?NH?X?qH?_?r2?Z?vb?g?uH?g?s]?[?tC??XD?~?nF??V6?n?SF?s?T6?x?p$?n?m$?n?m6?x?p$?x?o.?S?jH?M?YH?S?h>?C?c5?M?b.?F?a:?9?g?X?M?A?e?X?O?m?J?m?+?F?d1?1?f:?9?g.?F?aH?1?L:?9?g1?1?f?:?[?A?e?X?M ]?M?]R?D?\b?G?`V?9?q?G?_]?1?w?C?^?:?[?X?Mq?X?Nb?G?`q?G?_w?C?^?X?Mq?m?Db?g?P?:?[]?1??1?LH?A?ZV?9?R?D?\H?M?YR?D?\]?M?]H?M?YV?9?H?A?ZH?9?Ki?x?W??XD??VV?x?UJ>;<J>x=R>x=D.>;6=>* >=+N>=)=F>(.?g?Q.?m?&?m?J?X?Ob?m?R.?m?&.?g?Qb?g?Pq?m?D?m?+q?m?D?X?M>=JN>=) >=+?6>@?>G#?6>I)?f>3>Z>0>6>A>>B?==?>G)?>F#?6>I?>G?==8=v?H(=w?1=w?;=?;;:=>+=&>*;&>(>x=D=>+;;:=;8.>;6A?b>1G?>>W?.>(@?>2-?>5W?;?W?.>(G?>>L?;: >Z>>6>$>^>>6>A>N>,>Z>0>>"?>4?>/>=.>>B>6>A>=%L?;:G?>>B?x=;)?;8?>/>>->>">>>N>,>^>@?>2W?.>(W?>'W?>!>Z>0)?f>3?>4>>->>>>>>>^>>Z>>6>$>=%>6>A=>!2>>J>>=>#????? ?'??7?? '??'? ? ? ?'?>?>?>6?>>?>>?> >> ?>?>> ?>?> ??>??gambas-3.16.3/app/examples/OpenGL/Md2Model/rat.jpg000066400000000000000000000535601411575327000214710ustar00rootroot00000000000000JFIFddDucky<Adobed       !1AQa"q2B#3Rb$rCS%4D!1AQa"B2R# ?sEA,R>GR+9H,pquq%(9+LLk`B DNFBZjqvc\ UL_1̠dџR |FX97ؗluc 3ωtvʂHgC $~Ǫr񼆆`GC _˥L{;WR蕭tVtomb{&B75P3 ?*Lj6׎7̵ ijV&GC'hPXN_Vr^kVG:GӠǫVa=S:0Ug=gtc[i~Dk8V4jzOBXmVx.Mf VM=I @I2E\swtL[0kpq=:Ǔ:p"ߋa2;jhN}zV``mJRTi{M*wwrOA$QhkǗns,zNEcX."wd]kݝ[[GQ^D*WpeTǪ^zsۼ+;qoƵ<ʣrTj ZZX֝q孥ݥCᣝgA\MzⰇ}miۑ^̒YӭCkLV:ǐ[۩,ҒBV) .K-Msy4hI+5Bɪ*?Qo`%8 ۙ4-,B\lx*>!6.nf@%!sƸ.m?iup䚼 I<yLqM2҄bhjhA~4O_yw?3:p^AFބ3^|kkl#9yLZ+I(zr ph'Г1z㮝uV1ȡJ ^fu/)O8֒]\ K5 U -[9"OʒQ֌?2j|p2<եtNV6Il9߸y~4r+h#>6dc&_ۻ.2n-62u˦:ku\R5>1oO){?dlmrf\G 2_"7T9 y|pcNV<ĆQ3~}e2JO!*mT:HO>$_vZF@_@:d|qϯhexot<ߑc}?'nv imHs_?fSnph">,Kb䷔xH[;4һ(?gV|oYIΝ@ tSL5 Nձ-)FTAxo3U9+XmAd@41pr' KHQ3$fg@:Vr(PNw w9X*(ǯMh{Nȓ;8w H _OjY4q[Mw/Q\1ǥ4CEUΌUTtǁ6_ yfP $+Nj%>"4I\zO+0: H˖StǹLPЅP%M0@(E y5K;_m@:M1iHhGu*Ia>~XBlQiV,Rn$#<ĸexɑ=Gmf2gxTH eqb"*3MJT _QXNCQꦻ|'<+(?:x?_j*7#2Rs{Hy:ATkiJ<0+SeTATSIc)vf ?+dGL ǪRRH54R5uPgy:+Th13XDI T鯆1U?/4SSB:זA1sw<[x4 }GN'̕8Soi_q@.d ~qNQRU +LFU珅~]%: ׭iZS;l{j .>I +;*u$ݫ6 34]EUHnE=bI+i~5s<M s֝b9,^ Wk##l)OMv$`+^I.MA`PcSN v`H+scZ<F쌔ҥAt<N䰷I#dNԥu=_0ʻ۲Q㎺*X,#кAATc0Yp2@-Hy\eD(RQ]pRfE^cF};EhG=jɚU"#,j(A Zxp`ܩєx1yF )m?bR2!ǼDhm/XZ V$0Ɉ9pg}}ZH+R:kc#itGw5C7>Xt{6f=խEk<Uy\ EZ>jU {PUCLd]uL6Z~' n[#JZx/;!Ϲ;׵l:)U FZVZʬo17"v6|B,맄%­ܠ5 $,nO8Sk9.&t2vhCP*|}3nPA%@ȁJP\5sB}ǵK{e3CKr>ࡷ j`+]rߧvklnՎP"+B#nQrk+(+89)'Z 57i6yןb(ZfT.g\+CrKAp$Xw5 #4d *GSXߣ<hܷ |EJĻC0 6{w$;KZuIWr35ΠE\:tC?W%L}T"' L?ɐ`=oJ)[2 Tu/JCW,vӷG/![~:lzn [.$g^QVj'4@ yS&pv$T*[L]u GV* BB {]pk8un g{eba҈y12Na#6q>\m4?%p$ n}ʃiPթ:S_w5%F]ʋ% uoo+K&@VPN?1C#Æ49%<08\ < VI*)0IxՁYdZj>b-.X8o&Fzmu=oy(q4=XsRxwO#e=Kd.P+fchxoC%MQB!ygET6 4h Hε%\C(x/f/qu6HwLQ̴i#s .(YvFW'bn񤷁 VrQ4Ws=?N!Ꮟ14b)*Z;߮bLbMs'M@1\c:fq-[m%-Y(w8Rh|)SǏn_/:"V"V@T) "c"`v񵬥H]: gk>?5'5rjH׮5f! !XT疕KJ ބR|=\HӅ}n^r!P Nu%@(N%5U?<]:ɔD!ur-b9֡:֝zb;Y/ڸQ=i_1 RoSPaLʖlJfAbʒ\SBIF.SBXtťNiוq,DEv` V*夎WIW*W_*40G{̨@J@>;8cqa˯nF((FfL6m`fpe  b~M0ߟ\Z`;/mƿ\j\&..׈^FF`^Du _2sK ^_\Kx=*nb6'AJv7nl9OCաXT bN?o{3ۂUP!ԃȻӎ棶y!;EG++nUՕص/{㙽h`E w**a(3 Jeuw-Յ'"Zsݠ?uL8 |q->IԂۖ$ʓZχ _O]N:8LfƇ u97y w[wuQ3D<;ܐC"|n@ȥ#m8dSP ,| 5Ǘr10RcmO,6Q@b#I*EIM+tܵW B"RIkfb_۳"B􏚤yL/[|,xYtYb5h'j|0:Gr7aH9-z:)܇> /XÑ:'$h2IA֔=p/I;FVD4d:{٩Sœhy(-G=Diҙ?qFq Fw5aQ+J t(2[+Џo1\틶&^>X?QLM<$DA w0~TǛ GKcp碴jd+srrսsrdYf-!K)sMd墘4EvO0p noSCᒜ< e1-YKs42h3vn7n-)Z j™u陗n߭T 5i\g Am)kR0 %Ez 1m/P 8m|3s$jZo=:a}={0$*FvoW=gԂCJXOwo+P,ҙq5&_a3X}Ac;ŵB q(gSP,jO..< -x,ȑF.4u uNsIkf$G>rve|i SyŃ"X$3S3 wԨ5 WtR",jwUб$40 [As<т˵; S .uE*ƙ1rǮ֚iKv Mq Ce \Dm$L\eIRċ5SM;b;9/iS܍#0$D_:a>ıq^\HLF@Pwg\rˤk3~|;q #x]Xn!CᎳ>ms>;o`\.&Vۊ]+EXĨX+_Q8ESP@5|@UhH*7W<YعxvT)cGn='pr*)_3|n[^}=˽"Sn_FMnք'r(.DWSqל~[wʖȌۉ(䷖I*wu1a<,*mUJTP=ry}7#X |h59~G8{ib_Fu+@Hι}Z5UUna08d'p Z:S:}SuocȤ^Ҁ#taθ!vU5$:c8֖!C§ㅩ䪐Z@)SLfQgsr#l θhTqq Lcn }c|?4\@3-jEG >fTz+ֿ,o]I{d-ѱ:S,g&ZB8E](eᏡ(,v:]h@+u5HA24.֗۱YOR(-N\ +~cWYYm=0~~a6μ|_Y0_,%?/w! A (OT;n59Ș.t MPLt0=n:% |7Q:opCˍ[YP 6nULg}}h59k&eO}"a,SJy㍌3a`E@] j>$akVZ s}­@v nXeF"CYY6y$ҕ>:py+h+Hq^Șq܄+\'v HaQiqXe-y ovVmխ~ewiGzXZ^YFfYH}"J%`ya;r˄*&\xI+95WFg z5lm[6bC3:GSTۯNN6*3咵9#<,UO߷B qȱHPj RAL[q kEw1QޠPSMq,䫕$iE  (T{?,M;l ߛI9m ;f,??ȹc[˕q\jɫ:㷶hgid-i#C;WEkZSL\Hn]uߢQQR(x ߷ȕ (~kk[yLqDTAzF]|pB˼cnM1íHڍи\siS %J`uK * ='c:bQe^bh"-. 7Pk]㎚o5&H@MEO,c}ΙSa\+RIwpHM6չ_?[;awIb43Ͽ{RJ̥N y1>B5L@lXT QA!s-B#$eֿ:xMSv FAΧ4Ơ1ߕ-Mk3ب$ :|]qzݐP/L{yƪ9$1Vu:}D5وcٱ]rlő5U\m<}|Ugwlen"wWiS|_ZI Φ~I;[fЕR\ nd1J/8 ?,{I%Y%Iqrҹ5i]scc߻wXq t3^55+np-CeR8$3,. ..)"t"W,o]16C@SWU\Dd(2?1\o]8[NIb1jk:=P\!kf^39yd0; SП\r;y[.n,yDE19ҴCyw:Uv 7W#֕=m|y>cXn-TQ17u-z鵸L29#R#Jx5Ǫi5S>S/;IlcGe$E(ZcUWwvvٔhf@%u]O<5C 7܁ц\&9X PR\pcotєmɐ>ȭv3h: A*kGwOE=uguu 'FWFyڥ*ioHbsϩ渄? s)ycɿ&\t3\; [q"pQ .Uh帛0nP n9AǮm/9>K'hY(Ai;&ynJ#s,ՙ%5bkQ@x/. $f7.Kט:0 9EԀ e*ԡ`֘*RljRdTRJ?L,3IZu:xh?|22?3f1A4 S8I$ղgq-5xu"*H\ьj@4: w=num5cneIB hziz뜄|y6Ղ14FЃ_ q[+`&W&A+RB?qY7wsݳo2$r+͐sMڏͭ4ŗS~sV\crIPʲ1@͸)k< 7s(T)IH. ʌ90Lr=W!܅!)ژB0Ϧt{}m;yE&{-+F1T H36Ĭu8ٌW!ncjl!dOLfLӸ9OmaFA^]}I B`(31|BD|1ym+x1{m{cn2svFA}6{!#Bܥ}),F@c,Fl$; 8:jN;kKH3XMqG QL\@A%yk jD15zcͶ+^gkI5 uidzެqv%yrfCbz+Ǧ| y+E .:` }(AFl]Ev_kj]Z N2 J+&bRYzP _mÖA+x4mF>#c]^ʱwc@BIca^׷KssxdRV{Ay\0;R s+D%%Db)S c;)?;/ߏ8Y\G"n†*G9ߒfelԪeE 3-,9y8~.V塖W((e_\_z;[KZ㒸hLV4fXQq%}tp\_!c9RG\L-AMHǏ+WSnFL]2;)M}kfMkx>uFv=T,quu|e89-(7Cm,*h\?+.k堻&iUE*Đkքk:3d{۝ 0#F:5cu>c\yQ_sdq7疘va#W2Fj Yd n ye.UR,mI:$xk/y{Bۊ1h= cQ]rVDnt̒Xa@LP䳇4-cЭr\wVl6cZ!>=Ico,Vdfx .cx712Mԭ>}?ןP`nQ JNSƧ!/pImr\t9Mኌrbc: s&,Ï㠂k[!h7PҨ49hcg~wt pKGs;XG},Yp+ wZ&6FN`JgAJ`SZ cfXtSB@POj콹86#GL5,%G{60ARsO3-w0wGrF9R+si+fb9&- z 20gyCU1=OR CW%tm]2z?v3}www@0@ )48>E{JM+^ aRǣ:!Iymgo#Gw SBrqUuy}$n"R+p@Kx;m֒m+]E+cLrqmk&`„ AG?mˍdS^$&7 z>)Cldrk..ʸ8~:ދM`JSZLMLx%Z;ơ#ST]m㢻9>{PBc#LMO #uݾbvcP(:g݄$%j[[̎I,4k#Dk%@n*mfn&V@RF$2A.qpn"_J^r+1OqH/BkR=9E92F@p3_1\="S)4Z? wO#m] 0\x|D_c{qcuݳ#ZSO&P;v=r* >#XŜVf#RŔ6 +Lqx@{%ͣYl.i@kt$E6+LLg+i7ssDR $RN~x޿"Eܷ [p#&_.vnp; Ҵ$gNrr^k#yXJb!4p$ sm|:my}z;o$ЃZ *cZI-krը-hm}Đ\y!]{v/qN+m@` :ҧLM6 ~6!38^q> 6ݹ.FfhmN3ZqjԸy_M)&Ҡ>c׾b]7(EEH43j e|7LChrտXE}ˊ΃iD?;c7Hq'LǤ])O&k2щO5ѻQUIESKUnlXi*p3v;2KhvdlLJb04mbJTPo<1p/KaBAV@ $zUIsSv瀾љKMS^Ͱ&ڀcmimL" mpI:т> my[ v1iSՋJsdȠ6$cYm=kGAKY}Q֞r+ ᎜On9x>.6Seƍ ܕ$Pf1ZoY lNR] $15mg'Xc9pI:dUNx~ssXVAO $d@k7;b˽8{n=`TL՘T5@:LjL/q[quc2&5m~4,Snm#:GPMMC2\)1pSeBT Mk8YIdb^I/PpV(Tq'rRx*kJ~z6>BȜu%jc:_rdx/Ub%hjӒ+xkg nwW$8܎\8EB z8JU7͏ gb=^vBYF*pF?JyX9^jY-x˶+g L,&Ũ*RIL}Im^q{j-#'DT4Q(نZo_𜍵Hy"xH+C.:J)hU&\y&D,ԼNu8n@@cvVjȝYnS"1Ѽ[[Y[+0 f[fI'jat7'-dҿ` A|kBkL=|UJېddibًBm <7,ۻJGViJ0:۸8f&--l9#Bxꛙ$Qeޟqxدn4"0yZ5N+ ݝ\KB1i$pVgy-"0̏,Hy㱌Em$2AƢ/w{ukxA#!/uQ-Q -!)-   3RQ3:/6 Q<;H,93)Q3[-S(X hh, | |FL KRK/V:]<YRh<t,qGx8pQghVhhOfzfzuOwwYTY]QoQ2-n_3_0nT3TuuffM|<tMnF>awxkt bzyOzwTnZM4**<4**<**<**<<  (?EWJWJWWJeeeWWeeWe|gUg|UTggUAJKJJJAsn}jvj|xr}|io{i|||{rgS^SggSS^^ppp{|ttS\Y('1=ERR==RREG444((3/ RF K!?! ?8DVLNM LN L iO@ ihO  POh Ph?P7QPPQRRSLRQSSUTUSQTLSTUTVUBRM RBPLT UVDVDVMRL VVTUVTCBM  NCM P !U "NW #PW #WCN# W?C# P?W#O @ "O  $"O %$OP% U@ "UD@RGH&'(RH&()R*&)0@A+,0A&+,-I&A.-, &I/0 I?07PF1PQF21QRT2&3QTF231TSE345EFT513STR43&NS678SNO879BGQ'2QPB2SR*4&NDO798OD9GRQ'&28SO89ES8:8CGB 'HGC(' I)0;N76<HJ(=)JI)=0JHC=( JC?= IJ?0=A@,<A,<>A,>?IA?.,N@7<N@D7=AF@ABC=FC@BFAIBC@CFIAB@?@H@ABD?HC@BH@KBC@DHKAB@>BG@ABE>GC@BGBJBC@EGJAB@DEFFGDHEDDIHHIJJKH{14LMN4{NOL35PQR3RSP43NPS4SON6TUR56RQT)VWX6)XYV$)ZWVv%[\]^_\v\[^`abcdexcfd[^gghigi[`bh`hgedjVklYVlm[i$ZnWmkVbkoboilkbmokmio$#Zpn#%p]n%\n]bihRUjRjdRdSx{fLdSdO{OdL,`ba,2qrs2+qstvg^[vwg[iw-ihg-`gh-,`hb,*2rus)*(Vlk6*)YlV"wvmi[$)"ZVm")(mVk,z(bok,wzbio*,(lbk"(zmko"zwmoi$"#Zmp#"%pm]v%"[]m,-wbhi5*6QuT52*Qsu532QPs+21tsM342PNs412NMsvwGGFvvxyywvz{yyxz!/|}~a`xfc~g^g~`gy~yx!y|~.a`.+qt/~^g./~g.g`'/.~.+'!/'|~/~}_/_^~01{+{i0 +onnoWnpnopqrLqrrnWnrrWLqssqLqWpY[po[YptuZ[tZ[otsL]s]uZu]uusstuott0i@+ VM8LWKXKW:KX:X7WYXUZVU[ZVZ\[UQ7XQXYQQY[]M\Z]\V\MLM]K:;E8>E><89><FE7F::F;F<;=9M>9=8M9L=MdmgdcmdgeKjmmjgkLlklclKmmcllLKkbaaLkcbkK;j<gj<j;f>`<>f<fga=La`=>=`^`_`a_b_af`^gfeef^hyy!xyhhix i{x '&/' !+&'/&+0-+0+1+!  !"#%$$%"&' & %&% "(*)*')+,'+,+--.,#.--/#%#/%/&021320423430+'*-+*/-52460()16(6*(65*456/5426101(5-*&4)'&)/4&0)4d7cde7_8^_98:9_89.9:._b:.#8:;,;,!;$8#:,.$^8!;ce<7bc;b;:c"!c7"^$"<^"<"7e^<|~}~}|~|~~|||}|}}                                             !  "  !  "#  !!$%  %&'%$'(%&%()**+, $)$ &,,&*-)*.-+,/$)'')-&(/,&/      012132456576382029 8:2 ;<9 9=; 8>? ?:82=909@34810@431A75AB7CBADCAD5EDA5E54E4146>>84FDE<G@@9<@F1GH@1FEDFCI2J2KJLIJLJMKMJ NO=  ;=O PQ?2I=N=I :K2 ?Q:  QK:  ONR ORS  PTQILN LRNKTM QTK==\G>egb stand001aʓldܗ;Lٝ4V-n҃ht/^yḦ́q9˘s5߇(ݗ@;VxSǥe`θCS+L 3H/C Hås0ڮMXO>bׅd2],p.cloh.lyB)~5~5}?M cG(0l#X"r'z'`|V=JY"SKb x y5UK5~;y \waix91ڐCwx7tx95f r.~?}5c1t16gyRN.8r~4x>qIHj(i]hXe{z+{4r5dWz~[:MkWhyj_kgP^firt } Bb؈7si[ri|li*Yl+WhzaoZ(It|TU*{Z7IhB%J;9DQ4yg%*cw$AmN/F;J$_@I*T^=/+EEN4&1 C/:|2"zo/ <[ bo.@] J,tI YWX3RL?aO&IZ8KS|_/HÄ|D}Xc.Se(\)^ jf9!j4Jl)8r/3l%'k ~f~~+~+{K"20$t]}y|"vrK|0&x'#`!54K'18#6v&~|arvGu!,~ ]{cyHJ?3H0E>4:='b,&w!(vCQɎ)#rCH')'t(C @eݧ2 stand002Zʒn]ܖ;Eٝ4N-fӂhl/Ty@̈́q2ʘs,߇!ۘ74MxLƥeY͸?L+E -A); B¥s)خGXI7\ׅ]2V,j.`mod.ixB)z5zty4qy92`"m.y?w.^1n1}6dyRK)3o4s>kICe&i^hWe|}z+}}4}t5cXz}]:KjtUhyi^kgW]eirs }~ @a؈4ri[ri{pi*^l+Sgz^oZ~(Es|SX*y^7&hG%J@8DR"3zh)*cx)@mN2F;L$_CI+W^@/+GDQ4&3 D1:|2%zp2 <[bo1@] K/tIY\X.XL?fO&NZ9OS|`3H@UmU>JVWF\Qa]@"IN6y%zO>0gMg2dfdXfdceknem^eqUhys7s_vDlowgiyj\yjzo^hil|p:kptru8~qb]tOw~Gx^l|?Qoq|qvr(mr\y8knIbrkm}yj7mf\jxjgF`dyns0~mfknfigdYZf}ebc\aRf[iFeI{~r|ֆ |LƂzD|Xd-Sf(\)^ jf8j3Jl)9r/3l%'k ~f~+~*{K"20$t]~y}!vrK|0&x'#`!44K&18#6v&{brvGv , ^{cyHJ?3I0E?3:>'p.%s"&vANɎ*"rBG'*&t(A ='v 7Ě'8ِ\݋3(i&1kF'cYEclR6hI64_لSZҋuc8saEdXaBY[_2``L:8=T=dH>yeR$stand003SʑnUܖ;>؝4F-]ԁmb%Ix8̄q+ɘs$ވژ.,CwEŦeS̸?D+> &Í:"ю4 ;g"֯@XB1U W2O,c.]mo`.exB{.v9veI=_&h`hUeuyz+z4zu5bYz{`:HitSiyh!]zj}gW\epq;s2|~ =`؈1p}i[qi{ti*al~)Ogz[nZ{+AsR[*xb7&gK%JE8BS%3zh.*cy-@mN5F;O$_FI+Y^B/*ICS4&6 D49|3(zp5 <[bo3@] K1tIYaX.]L=jP&SZ9RS|`6HEUmUAJTYF_Q_`A"ON6w%wO~|C~|0dMd2aacXac^ckicmYeqOfx}p7}p_rE|ioreiuh\uhvm^bglvl:|gpnoq8ynbXrIv~BwSlzz>Goi{glq(dq\xw7`mIXq`l}nh7aeQjx^f?Scplq0sl\lcfi\eWNg}XbcOaR|d[gF}cGs|rt؄ |zK}ɀxBxzXd,Sg(](_ jg7k2Jm(9s.3m$'l }f*}*{K!2/$t]y}!vrK|0%x'#` 43K&17#6w& {bsuGv , _{dyHJ?=I1E@2:@&p/#s#$v>Kɒ, sBG'+$t(> :o]+2Q8X5+?4|O4½0a:7°JpW<9"S?/$9hauu-2! :_+ 0-Ok:HB>Aqn2,5#?B1J2)720): )*͖?'v 5Ú(4ؐ^݋4'p&/kG(cXFckS7gK62]؄QZҋse8qc7cYbAX[\1^^M:ܺ==H> c˭stand004KːnMܕ<7ם4=-UՀmY%>x/̈́q$Șsؙ݉%$9w>ĥeK˸?=ߨ+6 Í2ю, 4gԯ9X;*O P2G,].Zno\.bxB{x.s9{s Y&z+s0a#N"h$r,Yu~J/?N"E~>~T j~ p5H?t5r;j NxR_z9&}ِ3n|4k|9,zV"c*o?l.S c1u8]zPE~(h3h>_I7Y&fahTeuuz+w4ww0`Zzya:FitPiyg\ujxfW[dpq;r2{}1;_؈-ny~i[qi{vi*dl<~r~0ll`{wdh_`SmnoJdr|w>z)KgwWn\w~+=rP^*ve7&fN%JI8CS(3zh1*cx0@pM8F9Q$^HI)[]D/)KBT4%8 |C69|2*zo7 F*I>_\}^stand005CˏnEܓYI2T&ebmRfusz+t4ux.^Zzxb:CjtNiyg\qjufW[dpq;r2{}18_׈*mv|h[qizwi*fl<|s~/jm`yxdf``TmnmLcrxu?w)GgwTn\s|+9rN_*tg7&dP%JK8CQ)2zf3)cw2?pK9F6R$\II'\[F/&L?U4"9 |A79|/+zm8 1oXxgVn&Qn\et7IkHDpqLjWf7Jc:jFdC9b]iqkm0]iHlNgmEf7h@bc6aWh`[rb?g_Gbysdށ kvIm|ptBgvXh+Sk(a&djj6o1Jq'9w-3q#'q ~f*~*{K!2/$t]y vrK|0%x'#` 33K&17#6|& |bxvG{,d{[iyHK?)L2FC1*ӈ=pV@8a*2U<\3(C1|S80a;9JpX08"R?/$<hauu,1! :_+ 0-Ok:G@=@qm2-3#;C2L4*810)7 +(uB'x!0à,,|c݋6&p(,mJ)fXHciW7fN8-ZׄN[ҋph9ng7a\b?W[W.[]O:yA=R>0UI>Rstand006<̍n>ݒ<(֛4+#D}mF%(v˂qŗsوԘ&u0äe=ʷ?,ݧ+%޹!! ώ"%g Э+X+A A27,P*VpoU/]yAuw.xqSI/Q&dbmQfusz+t4uw5]Zzwb:BjtLiyh\sjvfW[dpq;r2|}18^׈(kw|i[qi{vi*dl<|r~0hm`xwdd_`SlnkKcrvu?u.EgwRo\p|+6r{K^*rf7&aO%JI8BM(2zb2)ct1?pG9F2R$YHI"\WE/"L;U49 |=69|++zj8 'nQwgLl&Il\\r4>iH;oqBiNdF?b0i;cC.aTgqak0Sg?lEgm0a;7JpW08"R?/$9hauu-1! :_+ 0-Ok:GA=Aqm2/1%9F2O5*;0/,5/&uF'x$-à0&|hދ;%d+*lO*f[IckY7hP8,YׄN\҅ph9ni7b]b?W[T-Z^Q;x(==I>hsT[ stand007<ˋo=܏<(Ԛ4)#C{pC}%%tȀq•hֆЖ$t0e<ɶ?+ܥ+$ܷ" ͎"&g ͬ,X*@ ?25,P*\r8X/a{Axy.|tS47 >59|+)zj6 Y[MZus[| arIfwfoB_q}*S&u%|j~50J&9-.#' f*+}K# 0 w^| xuK2&{'%`!44K)19!88bxO'}}[{HZ?+\34V. M*ԇQpbC8u(2jR p1(W,}SN¾/a:7ıJpW59"S?*#9hauu-3! :_+ 0-Ok:IC?Aqm2;/05R3Z6,G0/72 <$uS'z1*à=!|u#;H$d8'l\+eeJes\4qS84WׄU]҅ug9tj4i]bFV[ O4XgS; = =#zI>S] stand008<ˉo<܎<(Ә3'#CypA{$"rZh҅̕ $r1e<ɵ?*ۤ,"۶" ̎"'g ʪ,X(@ > 3,O*at8[/eA|.z<}yJA}<}Ogy5QI5~;w Yx_c5(t|,s3o51u`n*h)b*M Y26fyQM)o3i=T&7Y&n`h[eu}z+~4s5eYz]:LktViyj_kgP]eirs2}~ E]ׇ3h؁i[qi{og*\k~0`` \`dX`d\ehfdmZgZIez~u7}u_~vE{moqhiuk^ukyr^]flqm:yjpgn|t8wqdOpAs|eI`F:^,f5_C(^PbZ[f/LbVXMYssYz _oGetel@^o)S&$j50J'9..#' f*,K% 1 z^~ {wK2'}'&_"56I+ ;!8:b{O'[}He?+h34c,0f#6VhHz7-(9{Wh[BTvJ.@)Z< M@NC(ԁ38Y> X+և^okE:(-xa}/(e)S\ļ/a97ɯIbV5:"T#?*#9hauu/5! :_+ 0-OƬk:KEABqún2F.;3\3e8,Q0-B1 H#r^(z='ğI|(;S$6D%ng,DnKe{_4yU9;Vׄ\^҅ze7zkFo]bMUZ)L:WnU;}Z=)=%xH>P. stand009=ʈo;܌0(ї3&#Cxp?y$!p~ghτɔ #p1e;ɵ=)ڣ, ڵ"  ̒"(gȩ,X'? < 1,O%dw8]%gA*<IRUE~XP^[?"CM6u%uO>0`` \fiXfjbimmjm_kZQhz~4}_Fv6wopzs^ys|z^dllwv:sdmu~8|ydVtFu|@vt'cZmK#iOqiEfGfcVk?6cO8iZ>cI^4:\,d5]>'\P`ZZe/K`TWMYqsYy ^nGfsdj@^m*T&%j6"1J(9/.$ f,-K' 3 |^!| yK2( (_$78I- =! 8:b}O '[Hl?,p54l,0p$6_mQz?+.7tahbB^vS,I'b; T@NJ)ց:7`@ `-ׇgorH:(-k/(n(Sg Ļ/a87̬IbV5;"T#>*"9hauu/6! :_+ 0-Oͨj:LGBCq˶m2M/B2c5l:,Y1-I1 P#rf*zE'şR$|-;\&6L%no/DuMea4X9@V؄`` }e8}l?s^bQUZ/J>WtX1=:=mG>XtM0 stand010=ˇo<݋0(Җ3&#Dwp@x$!o|ghЂʒ $o1e:ɴ=)ڣ,ڵ"  ˒"'gȨ+X$= : 0$M%dx9\%fA|*0~038 Yw'q/[Jb m UvH->GC>~Qh ~5WP5 awge5*s|+v3r03vgt.g)a*L W26kyQR+r3k=R&9[&q`h^fu{z={4q5fYz[OmYkyk`kgP^›eiģr±t1~ J_؇7iفi[qi{njg)Wj9j|0rg_nb&lZ_FlnnDdu~Lx,Umh_ycv'CsvNU)wX5IbA$J97DH4y_$*cq#@mE0F2K$WBI VV?/!G>P33 ;1:~'$zh1 IRUEWP^Z?"AMdq#qO|L|/[[ Xho]hodomnrpaoaSkk4@F8xwpz{fz{{_erlw:}6m~9{dVxFw}Awt'a[lK$hPpiFeHecWj?7bO9hZ?bJ]4;[-c5\>'[Q_Z[c/K_>fFbnUUMYpsZx _mGgrei@_l*T&%6"1J(9/.$ f,-K'-3 }^!} zK2(')_$78I. =! 8:b}O!'[Hn@,q63n-0r%6amSzA+/7tdhcBavV,K'd< U@NL*ց;8`B a/؇iorJ:)-m0(q(Si Ż/Z7EΫHbU5<"U#>*"9hauu07! :_+ 0-OѦj:MHCCqϴm2O0C3e7m<,Z2-K2 R$wh,zG'ƟS&|0;]'6N&np0DvOec4Z9@W؄aa }e8~m?s_bQUZ/J>WtZ1=j=QG>HQ stand011>ͅo=ߊ0(Օ5'#FvpBw$$n {ZhӀ͐ &n0ŸE8ʳ?)ܢ,ܳ"ɒ"&g˦(X 9 6 -$J%`y9X%bAr%y0u0{)4 Tk'd-ODV"c MݞoH):<:8}F[ {5TM5~ _ve"a5&t|'r3n0/wdq.d)^*H T2~oiwQO'n3h=O&5W&nah[gu{x)|4r}5cYz\LnVkwj`kfP^šeiâr°t1}~ F`և2jׁh[qi{nkf)XjYTU3OI?_M&FW8}KQ|X1G:SmN>IQVDWO][?"ALdh!hOtLt-QQNeu\euatnixo_saNnkz5yBy?z9sovfv;xf_xnZ/b8[>+YT_Z^c/O^AdI`n?^/a7Zc+YW_V\eX>YUM\os\w blGiqhi@al*T&&j6"1J(9/.$ f+,K&-2 {^ {xK2'~'(_#67K- *"9hauu07! :_+ 0-Oѥj8MHCCqϳm2J1>4`8i=,U3-F3 M%wd-zB(ğO |1;Y(6I'nl1DqOe}d4{[9Bݨ stand012Aτo@<*ד5*#JupGv$)l"yZčh ~э*l0ĞE6̲?)ޠ,ݱ"÷Ǝ"&gΣ#X 4 0 *$F/Zy9S%\>c#k2f2n)/ MZ R><GTDܞfI#4.-~|/z6Hw5OH}5~y [s`\5v|"m3i0)w_l.`)Y*C P2}oeuRJ !i3b=J&/Q&iahVgu~{w)|4}r|5^Zz{\Go}Rltj`ieR^eiqs |} ?`ԇ,kՁg[pizke*Xi"BKd[![Oh+h-DDA^z^^z[xn`~\xbEoko.oAm3p9jomDmqDT{_1l8S j1XZ^Zec/V^FbO]pE\4^=Xc1WWfV\mX>`UMaosaw hlInqni@fl*T&&j6"1J(9/.$' f*+~K%-1 y^}yvK2&{''_#56K+ ;! 8:byO '~[|HcB,f84b/0f'6UmFz4-#:tXhXDTvJ.>)Y='IBN?+ҁ.:UC V0ԇ] ohJ:)-w` ~0(e)|S\û/Z7E̫HbU5<"U#>*"9hauu07! :_+ 0-Oϥj:MHBCqγm2B275Y8b=,N4->4 F&r\-z:)G|~0;Q)6B(ne1DkOewc4uZ95YԄVb uf8uo?j`bGWZ#M4YjZ;X=8=ɐF> G stand013HхnH<0ړ53#SvpRw$5l+xZ Ȍg|Ջ5l4ƞE9Ͳ3.*߱"ƵĎ"+g ѡ$X 3 / ,%F/Xx9Q%Y>W#^ Y a*. JL D29;I>۞^&"2ޏ%&z{,w+:t5LG{}~5{v YqQ^Z5w|!j3g5'x\i/_)Y*B O2~{odsRH} f3_=J&-O&fbhThu||u)||~9{sz5\[zx]Ep{Qlrj`hdR^eirt |} YUT3PH?`K&GV8LP|Y3G;QmO@IRWDXM^\>"BKdPQO],^;N<9Y}fY}V{nXZ|d@nmf/f>b.f_onL8dbpi[e\eclk4MaGMfZTay`\4RYA_yLZ>?Xf`Zqe/c_Sa\\pSZXA\JVc>VRsX\zZ=nVMkqsky snIxsykBpm*T&|&j6"1@(9/.$' f*}+{K$ 1 v^zvsK}2&x'&_"55K+ :!8:~bvO '{[yH]C+`84\00`(6O h@z/0<{QhSEMvD18+S?'EDN:-ρ*<QD P1чW!ocK:{*-pX w1(_+ySU~û/Z8E̫HbV5<"U#?*"9hauu07! :_+ 0-OΦj:MHBCq̳n2=327T9]=,I5-95 @(rW.z5+B|y0;L*6<*n_2DfPesc4qZ91Z҄Sbͅsg8qp4gabDXZO2ZfZ; =p=D>KV stand014QӆnP18ܔ5<^xm^z#Bm5xZ'ˌg|ڊ$"AmX9Ȟd<γ34*#" ɴÎ!"0Ügՠ%Y 2 . .%E/Tx8O%U=MT O W%, GA":*52@9۞V& 0ܗ "u{)u$0p5IDyz}5x~s WpQ[W5z| g5c5$zXe/]=X*A N2{zobrRE{ b3\=I&+L&cdhQiuz}t)y}}9xty5Y\zu^CpyOmpk`hcR^firt |} 8cч&nҁe]oizle*Zi<my0rhYp^&k\YJjlG^uS$J!JtpQEG"8twOY(y[4IbE#J<6DH$3y^))cr'?mD5F1P$VGIZUD/ L@T49!<6:~&*zh7 Y.]<[8^F^d?EzJ X9>T1U90u)nw/pqMa{q>Eemsiig'hhcxn4[cGZgZabyo_4a[O`y[\?NYtcZh/qbaak\bbYYO\xYWfNVR[\^?}Zvtsv| rIvoB{p|+TIs'yj|7"2@(9/.$' |f*{*xK# 0} s^wspKz2%u'%`"55K* :$8~:{bsO '{y[vHVD+Y94T20X)6G"h9z(3?HhLGDt<41.LA'>EN4/΁$>KD J2χO#o]K:s+2gOo2~(V-vSL{ü/Z87ˬIbW5<"V#@*#9hauu07 ! :_+ 0-O˦k:NHBCqʳo275,9N:V>,C6-37 9)rP.z..; "|r.;E+65,nY2D`Pfnb4lY9-\фOc̅pi8mp4ccb@ZZS.\aY;T=> B>;Nv¯ stand015XӉnX;>ݕʟd>ε3:*(! ̳Î("4Ŝg؟&Y 2 - 0%E/Qx8M%Q>JQ L T%+ D>"8(2/<5۝Q&-ܗ!u{(u$/l5EAwv{5t}o TnQW}T5|Аd5`5 {Ta/\=W*@ N2wyo_pSBy^3Y=I&'I&`ehMjuw~s)v~{9utyU.[R1R90u)nz-pq\cv=Rgxwiwl'tlcs9jfIgjZofz}d4p_^axk_?^\gZn2gqax|]es[T_\wjYf_WS`\d?_Gyq wL{tBuWq,StIi(m js8"x2@z)9/3{%'z yf}*x)uK" /z p^upmKw2%s'$`"44K)19$8|&xbqH , ov[tsHNE+Q:4J45N+6=$h/"z6C>hDI9!t27'2CD'7GN,1́ADE B2·F$oVJ8h,2\C}e3|(L0tSAyü0a97ɬJbX5="W#A*#9hauu07 ! :_+ 0-Oȧl:NHBDqƴp2/6$<F:O>,;7/+9 1+uH/z&12 '|j-;<,d-.nP3DYPfha9eY8(^ЄJc˅lj8hq4^db<\[V)^[Y;=|>]@>Y stand016bӌlb;Hޗ7]qXFʡdE϶4D*1!г!Î3!=ǝg۠,Y6ц2 7%I/Pw:N/Q?MT P W%. DB"=-4܍3?4ٕPG /ݏ"&v{+u*5k5DAvu{L&)J&_fhMkuv~s)u{9tux0U^}zo`@rvMommagbR_hitv |~ 2eЇ"rҁze]oi{nf*\j<{ny2tjXNq^&n^WPLklnI\rR'I"HupMEG"6uwT\)}]5IgI$J?6DN(4yc,*cw*@mI9F7S$[KI%^ZH/&OEV5!X)]<\9^C^ _CJ}N Z9D U0V96w.pz1qsng}=ci|iq'qcy9{kIvnZjwj5epdw}d3r`mZt2mdwae^Vr^w}\DsZVg\k3f&~q }Lׁl{C{Wi-SkIa)c jk8!p3@q)9x/3r%'p vfz)u)rK!~2.w$m]rmjJt0$p'#`!43~K'17$}8|y&ubynH{ , dsjqHIG+L;4C75G-67'h)%w:G6!s?K2%{,;}"6=G'3JN(3́DAF =3͇@%pSJ8a-2T;}]5z+E3rS8wý0a:7ɭJbY5>"XB*$9hauu07 ! :_+ 0-OƧm:NHBDqĴq2+9 ?B;J>,79/(< ,.uB0x!4.!+|d+;7.d(1lK3eUPcd`9bX8'`ЄHcʅjk8gq7\db:][Z)`XX;~y>>>>o;kRstand017mҐlm▅Sޘ<^܅m-qw[}ZDэsF}P4㉔NEmtXPʡdOη4P*=! Ӵ-čA!GȞZ,ޠ5Y&?҆; B%Q0Sw:S/SFPW T Z%5 GIF"A 28܎8C5؛OO'5ݗ(,u{1u/~:l5GDtvzSI.N&`fhOkuwr*vz9uvx0W_|zpaCrtQokmagbR_hiuw |~ 5gχ'tҁze]oi{og*]k;|oy2xjWNr^&r^VPMkrJ\rU$LKtmO|dK";vwZ]*^6IlJ$J@7DT)5yh.*c{,@mO:F>U$aLI-_`I/.P LX6)>"H:<~4/ zq< <]bq:@_ M9tKYYW5TJ?cN&KY:OQ|e8I@Tm\EL_\G[Oj`A"FM6I"IOU,U#786YBY[)a<_9aC`1^BN}R ^9I X0Y9"XB/%9hauu07!! :_+ 0-OŨn:NHBDqôr2+; C@<I?+5;/'? *0u@1x 8,#1|a)֋50d&4lH4fSQcd_7`W8*bЄIcɋlk8gq7\eb<_[_+cXX: !>>>>Jzstand018yїjxᝆ_ޙ:kڏk-nւZRӎq\~RF扔bV}]]ʢb^͸4`.O$1׵@ S!TȞq=ᡔBôW7*M҆K T/^0Xv8[0XEY` \ b%@ NՌO"J ;AܐAL<חSS1>ݏ15u{9v8~Cm5IGsxy^I6V&aghPlyr*wy9wvw0Y_{zqbFssTpjmafaR_hiuw |~ 9jψ.yӁ{d]oizog/^l;}py2|kWNr^&v_VPNkuK[r^$URtmTzbS"Cww_^*_6IpK$JA8DX+5ym/*c-AmU<FDV$eMI3`dJ/4R QY6/?"M;<~91 zu> c.iqqw3vX׏g,مb;~L~Z|s1zMsrw0qڄZ MuZx7tImqpFlHځa5(דqޛݕ)ΘjדFґYX/}SX LQ,M\9!_4}U`*8f.4_&(] {n^nsp(ny&kA}v2{+p,xd]kjlfubJzl0x"h,~x`p}s1{}/wK"13~%nuoer&o ~ima_gHf z,o K mSkHBL=D>F8>9:3d,/s"/wGU(+s:R'#1{"H|C5O,1QM%<ˁN@I 97ˊ6+pPKoR02D$*}N9uL5"YC/%9hauu/7!! :_+ 0-OŨn:NHBDqõr2*@ I>?F@+4>0&E '6t<4x?*(<~]'Ӌ24p$:kD6cPRcc^7_U6.gЄLdȋlk8ip7]eb=c[g-gXW: >|(>=>stand019Πyޥkۙu֞kӉaaҎquTZ投vgފ]kǡbnɷ7rߥ3d$DڷV!2h$bǞqO㣓QõWL=^҆_ i.m5]sod0aE`g c j%N X8V"P BKېITFכ_O>Iܔ9;s{At>}Hn5KIrxxjI?^&`ehOlz~q*x~x9wuv1Z_zwqaGsrUoimafaR_hiuw {~ >kψ6||d]nizmh/\l;~ny }iWNq^&w^VPLlvI[rf$]Zrh\xb["Lvwb]+^7IrJ%J?8DZ*5yn.+c+AmW;FGU$hMI6_gJ/7Q SX62?"O:<~<0 zw= UmcELf[HZPq`B"EN6Z"[Gf,f%IJHhCi}k.p@E.C907b#5s6vO]Î2w4V'9Q~L,U,.UM#AT?IɅ69ˈ..iMIoE116'%@=tL(CoO0tǽ0a;7ʭKbZ5>"YC/%9hauu/7!! :_+ 0-Oŧn:NHBCqôr2(EP;@ C@)2A0%J $;ő76xF'+F~W#ь-7i @k>6cLQ\`Z6]Rd3jфOcNjki8jlE[ca[/>a=>)stand020ɥyڪuךp~Цz&ϏalАqTh動uْ^u¢byĸEڦ4q%Qڹd!>v$lğ\⥓[PYIiӆk v.u5`noi5hDlr o u*V _Ib"] MS܎S_PٕkGENޏBDq{HqI{~Uo5MKryyv.zWQ(X+-VM"BV>HɅ38ˈ)/hKFp=0<.()7>s= HpO6uǼ0a;7ʬKbZ5>"YC/%9hauu/7!! :_+ 0-Oƥo:OHBDqIJr2&FR 8> ?>=/A5#K !<Ƒ35}I$+LQЊ*7iBk:5\IO\_VdZNd6i҄P_Ȋje8jgE[`av==>oKstand021ťy֫}՛pʦz߫&ˏasΑTp䍕~Ӓ^{bEק4y޸%Yٺl!D$r d⦓aP_OmԆp }.z9akok5lCp#w2s y*Y dIg"b QVWbVܜr&HP~ޏEHo{JpMyZq9QNs|z<{|w ajQcz"iv8;Rpv7ou86a l.C4k;{:~wojnTNu<;kFuCwLJi(``zQh}xs){yz9zox1[Z{wsZJpsXkjnafbR_hiuw |~ Bhш<{ցd]nizei/Sm;hz cXOi`&yWWPCmwB\u,l!amifvej"RqueV+U8ItA&@4:fZ"6xn%,a"CmY4FJP$jGI8ZhD/:L VR649"P4=~>* zy7 MhUHQQsYB":PohhMt,t VVTrw_rwpuosy8qxe_em|/|>y)}0yS9 yL9,+|yF7%F2xUD&~oL)|7B#{+>Sd]IkO$gV bJYm"YC/%9hauu08!! :_+ 0-Oɣn:OHBDqǰr2%FS 7= ><3.@5#L =Ǒ14}J",PMЊ(7iCz83\IM\_SdZKp7iӄQ]Ȋlb8kdE[^a=dt0mVN>=e>>J stand022ѫӝn¤zש&ƏZz݈̒Tw㎜"͐]a6թ4ݹ%_ٻr!J,xl᧓fPdTqՆu .~9binn3p|C}%22.\ hIv$p ][d"p _~IKRMLt|LsU|gt}9VSu{<}| elQh|"ks8=UssEqr89f q.D4n;:yom~oTQwA@n~FyC|LOn(a]zRgtt)~u{9|ky1]W}wtVMouZilmagbR_gitv |~ Ch҈>{d]niz_j.Mn;c{ ^YOda(yRXQ=nu=^,z#aihhrbw$RpteQ+&N8It;&@-:fX6xm,a|CmY/FJL$iDI8Wh@/:IVN636!N0<=& zy3 ȏ/3{L,SIҊ&7gDz62\JK\`Pd[Ip8iԄQ\ʊm_8l`d\[a>cu2mWKh> =@@>1nstand023̩џnzΥ ڒ&ŽZ˔rڈT}␜"ƍ]a6ӫ4ܻ%eڼx!N,}rᨓkPiXuֆy 59dgnp}5svB/<~<3_ lI,|2ha"q!|$gIMTWQwNw]|rxz9[Xw|~< ioQn"mq8?Xvp6to8=l w5D4q;:}zop{qTUyFEr{7~CLUs(cZzTeov3p~9f{<^UwvROmw\goµl`hcR^ĐeiĖråu }~ DgԈ@{e]nazXk.Eo;^}1Y[O^b(xMZQ6ojs8`=%_fshma,Rq{eK+&G9Ir4&@$z+9N b]EiL"fSbATk;Wg*G XR?`"D^IXJM `:O_)UmTIsT#t[nAY w_v.<hi=i(Aqm4`[3^IAq)D} f-'eH7I?59d'@o%6i9u<{Yf9u3T+ B\V+V)/UOD Yp8)<("*|5?u=NtM >xȷ/Z8EϣHbݺW9?"X-A.#9halu09!! :_+ 0-OњkPJCCrѧo1$GU 4: ;8?,?9#M >ʏ-2{M-XEԊ%7gDz40\KI\aMd\Fp9iՄRZ̊o[n\d^Wg@b v4mWIÌ7>!=A>@|̝ stand024yƧΠwƠ2ԍ&[ɕهR⑜!ˆYi6Ҭ4ܼ%i۽}#R,wpPn\y؆} 59efmr}5tqBr5l:l:mFb2o~I|*w1r#f!z%,o|KOW`VzR|cyyv|v9a]zx: nqQt"op8A[ym6wm8@r }5D4t;:y|osysTY|JIux7CLZy(dWzVdkx3l8b}<_RvwNRmz]eqDZk#`idR]njdiɒqɠt }}EhւA|eXngynQl.?p;Y~1T]MXc(vI]Q0pjp4br?|.\ewhjZx*RtcF+&@9Lp-'@=eO7xe.as EkU%EGD$f;I4Pe8/6BSF5/.!G)<8 zv* SpIB Tp/Hu?uΥ̭ڤ4ΘxܝdѝT<+zO4x=5&#xxE/-D+zJ@}pH }E=z)7M bYDi"L!g"SbAR k;Wh.G XR>`"D_IYJL `:O_)T mTHs"T u[oAWw_v09gi<jL>pi2_[3^I@r3B| f-)fH8GF58b'>n$5h9u>{[h9t4R+ B]X-U)0THF [!W-?.#9halu0:!! :_+ 0-O֕iPKCCr֣m1$HW 3: :74+@9#N @̏+2{OÛ0]A׊#8gFx2/\MG\cKd]Dp:jׄSZΊpWopYd_UgAb"w5nXHŌlt>=D>]+sHۚY stand025y£͠ w2ц&ɖنQ⒜!Wi6Ҭ4ݻ%mܽ!V,ztPr_}؆ 59ghmt~5toBb9[錇]쌍[Ed2q}Ll3i:v{-k${*u*u(oAQZg#Y|Ufvzk t9fb|t: rtz"qq8B]{m6ym8Bx$5F9w;:v}ovwvS]~NNyv7C>_~LeVzXdgz3i8_<`RvyKTm|_et˰j#_jeQ]ʊba͏oΞr1|-}FjׂBfXngxnLl.:q:U1}R_MUe(sH_,qjm3daFk5Yhufj[i3RyaB*&:9Lm((B>eJ7x` .am FkQ!EDA$c9I0Nb5/3@"PD4+, B'<4xs' <_bs%@a O#tNY.]9'QF;TL!`/V[KZyV0L`FG;TmFA Upr0qHeDf:{&{ x,fZWfZkc\wkUsabܟTcv[d[_[eTmvTszV]zWl]]eZzyVn}PgqZYpXg^hTsQ{~(ޣ7}Wʢr޲)ͥZߦڼ?ʯԫ㪄ߴ~GͶyܷ}8w٠蠏;檇Oա{{bޤw@үrޯueڹrK⑄풇oꚁAОѥܝ4БxޕeҗR<,zG4x=5&"xxF.2E+{J?~pH}E={)5LbYCj"M"h"TcAR k:Xi.GYR>a"E"`JZAKaP`.S mTGs Tu"[o>Vw_w08ga<j+<oi1^X3_I@r3?{ !f.-gI8FF48b')if stand026y˞ߜ-z˾0~&Ǖu؄Qᑜ#}Wi6Ҫ4߹,o޼$Y,rzwPw c؆ 59hkmv9sofW8Qn~SnPdf r}L_4}_vu2o%r.j3x+eAS]k#ZXevud s8lgs:~ vv st8C_~n6|o8E~$5E9y;:uoywxS`QþS|v7D>dLfWwZff|4g8]:aSvzKVp`gwϭg#^jeQ[̇`gьlқo1{-{;FnׂCfXmgwnIm58q:S<{RaMSf(pIa*rjh4fWE_9VnemX^4S^A*&8:Li%(B?eC7}[ /af GkM EA@$`8I,M_5//?"LD3"&,=(;/xp' <\bp%@^ Lj#tJY+^9$SF8TLa}/WU K[yP1L\FF:UiEA'VphVw_x07fa=j+<oi1 ^X5$`I@r3>{(g/3hI9GF3:b(=n"8h@tHcp?t7S+Fa^0U)2XHP!d;Hӆ)=Ԃ5zI@m8':&"j /{8E{=$X| I}ƴ,Z޻3EҜCaP4=!S-<)!9halu0: ! :_+ 0-O܏coOJCBrޝh0"P _'1? 8;4)G:"V IΏ(8ʒXř<l9܈ @sOx/3ZPHZgKo`Ep;qU_чsVnsWdaUgDf$|8tZKʊ==9J>(^e stand027jʛޔ/z.v|ŕuւvޑ$wi6Ӧ4,m߻$[,uuxûW| f׆139jnmx9rqfvRosLlqOluLbh s=}X7s[rq1q*{m5c4y=~`BT`!l/Z["bxlbr8qkr:}1yx uwЌDao6~qH$5E9|;;tp{xyScSžWv6D>iGLgYw\id}4g8]:bUvzKXrajyҫf-]kfZ̆^gӋjՙme#)B}@e=7}T 0g_ HyJE>@,]8I'M\5/,@"HD3""-7*:*xm' #|34NdYEk"Q)k"X$fASl["l.J[SA!bI+bN%\ANbT$c.TnVHt!W"x^r>V way08 ga>"k+< og1_X7*aLA s5={.g19jI:HF3=p(>m":zDtM’guCt8T=Ida2V)3[JU!i;LԆ'BՂ9zIBm9):&$j 2{:H}=%[& MĴ,[޺1eћAaM74(K:"[ Oύ&=̒]ƙCs6ވEsTx-7ZRJZiMoaHp;vVbӇtVntXdcVgEh%9w[Oˊ =H=L>U0'&stand028l:Ș8%|z{.p~rrwqтhّ$ri÷Eң?,j߻$\,zwmަyĻ i 039kqmz9ptDjRngMkePjiLii s?sU8i[nq;r*uj9w`9y}3w^DUb!l/Z ]!^{ccq8uoq8}1|z!vyьEbq6sŒJ,9E9~ ;sp~x{SfVǽZv6F>mGLhZw]jc4f8\:bW{{JZtbl{ԫd-\lgZ̆]gԊhטka"*BwBb77}O 1gY HyFE;?,Z9I$MY5/(@"EE2".2,:&xk' xjÜp^s@3~G7)z=6," xvI22I1~JB%iJ$d?%}35QeTGl"S+l"Z&hAUn^$m0L\SC$dL.dQ)^APdW'd5VoVIu!Y$y`s>W xbz<9ga@%m)< pg3`X9.bLC"t5>{3i3=kL:I72?p(>m"pN$S)stand029nˊ<ȗ7%wkv*ntskzaɄ\ѓmt!{piĶEѡ?(g߻ ]'tweܧyŻk 0=5ltl{:ovDeTnaPk_SjbNgj s?nWoe]ls;s.rk9s`7x}4s_DVc#m0\ _!^ `fq8xrp8|1~|!x|ьFcr6tÌK,9E9 ;spy|ShWɽ]w6F>oGLi[w^lcFfo\8cX{{K[vcm|Ԫc-\lgYˆ\gՉgؗj<Ģy2ďx:HyفDgmq}tnEn45sP:uVeGRiLhPfz+tj]*Iv4;>^!*fsCb28}K 2gS IyC68?,X9I MV5/&@"BF1"...9#xi' W_F@'Zms`r^BjUalWlvs?vtuv4JrQKr{KuHjP|ܕF`Ws^U]_SqUVuO`T]WU_}`_YGrO]xOVMf[TwWYNQXajC|ansd(c\hEbIc]v[7YZr[3Y_b0^Z}UaTRUwR_ROXrWDUHnwu kKpg_kB5G9*z=8-$"xvK32K3JC&iL%dA&~36SfTI!nV-n"](iAWo`%o0O ]SE&eN1fT+_AReY(f5XpVKv![%zc u>Y yld|<;haB'n)>qg5aX<0cLE$u5? |!5j5?lL;J72@p)>m"=zIt TÒm{G:U=Kfe4W35^J]!o;Rֆ&Iׁ?zJFm;+(&k 5{=L3(_&R+[ܸ/eϛ@aK7:!O/837halu09$ :_+ 0-Oތ^oMICAbJK"*stand030Љ5}ȗ7~$tmt,tnosgzYņV͕al!qp|iŵEѠ?(e޼ ]z'pwaڧyŻl 0=5mul|:oxDfVnbQk`UjcPgk s?pX6h_lot;t.um9ub7x?qafVd#p0_a a dhq8zsp8|1}!x}ҌFds6uÌL,979 ;spz}SiWʽ^w6F>qGLj\w_lcFfo\8cY{|Kl\wdn}ԫc-\mhYˆ[gԊgؘj<Ţx/ŏx:HzفEhmq}tnFo46sP:tXfSiLgQgx,ty[>lgUbpXoSb{[k[6WT>)Iu5;>\"*fqCb07}I 2gQ IyB67?,V9IMU5/$@"@F1".+/9!xh' 9INJC"r@W]G@'Zmtas_BjWakYlwt?xuvx4KsQKt{KwIlO}ݕH_Xs^V]_UqUWuOaT^WU`}^`RJsR^xPXuPh\UwX[QTZya"hAp_kgc(`\fEaI`[ZrZ4YY\5~[\X`0]UwQfPN~SrR@~SMUqUCSGkwr1gHld@hD5G;+{=9-&"yvM32M3JE'iN&dC'38VgTL"nX-o"`(jAYpc&p0R!^SH'fQ1gW,aAUf\)g5[qVNw!]&{e!v>[ zg}<=iaD(o)Aqg8aX>1dLG$v5A |#6j8@mLm">zJt UÏm{G;U=K fe5W.5_J^!p;Sֆ%J؁@zJGl=,*&k5{?M3*_&Q+qܸ/eΛ@aJ7:!N/737hal09$ :_+ 0-Oތ^oLIB@bK1fstand031҉5{ȗ7{$umt,rnmsezWņS͕^i!op{iƵEҠ?(c޼~ \x'oz_ڨxƻk 0=5mul|qGLk\w`mdFgo]8dY{|Ll]wdo~Ԭc-\mhYˇ[gԋgؙj<ţx/Őx:HzفDhmq~tnGn47sQ:tXfTiLgRgx-tj[?ljVbsYoSb{Xo\6VT?)It6;>\"*fqCb07}I 2gQIyB67?,V8IMU5/$@"@F1".+/9!xg' 9INKC"rAW\H@'Zmvcua@mXamYlzv>zwyz?MrQMs}MvMkO}ޕKaXs`W]bUqXWwRaV^V`^`WNsW^yTWuWh`Vw[[uVY[wa"hAn`lgc(a\fEbIa[[w[4Y|Zr[3{Z]`0]VxQcQS{UwR@zSMVqUCSGlss1hHme@hG5G=*|=<-( zvO32P3JH&iQ&6F&.;YhTO!o"[-p"b(kA]qf&p0U _SK&gS0gZ+aAXg_)h5^rVQx!`&|h!w>_ {j~nL=I73@p,>m#=zItTÏm{FL,!~)stand032ӊ5xɗ7y$vmv,qolsczUƆQΕ\f!npyiǵEӡ?~'a޽| [u'nz\ڨwƻi /=5mul{pGLk[w`leFgo]8eY{~L]vdn~ӭc-\mhZˈ\gԌhךj<ĥy/đx:IyځDhmqtnHn47rR:uYfUiLhRgz-tj]?llUbuYoSazXq\EVT@)Iu7;>]#*BrCb17}J 2gSIyC67?,W9I MV5/$@"@G1".,/9"xh' {wzz?NqNq}NtPiN{NaWhaVXdTqZVwS_tW]W_]_WRq|\]yXVu\gcUz^Zu[\]wbj>mbmgd(d\h7bIcq]w[FZz\wZ3yY_r`.]ZxTcTRwXxS^wTSXsVDTOmsu1jHogBjI3GA'}=?+,{wR32R2JK%bT%6I$.?]j`Sp"^+q"f'lAari%r0Y`SO#hW.h](bK\hb'i.btVUy!c%}l!x>c }n0FlaK$p+I ti@dXD,fLN!x5J)/l<;nI?H75?p.S=G"cb8U.7]J["n=Q׆'G؁=zLFlC*:0#j/{BJ3,[&K+qܹ0eΜ@aK7:!O/837halu08$ :_+ 0-Oݎ_oLIBAc<#[!#h'1H 8B4)Q:$` Tє'AϒbǙL{4JsYx.;ZWLZoPogKn<|YhՇxXnxZdfXgHl'={_Tϋ/Q=,>=O>1P!N)stand033ԋ5v˘7w$wmw%qojsazTȆOϕ[d!mqwiȵE~ԡ=z'^ݽx Xr'lzZکtŻ}g /=5mtl{wWEt^ys9s)|l7xaFv~>l`_Tc$y.k f o1sgs8xpt81}}!x|ҌD`s6uÌK,579} ;vp{}ShSǽ[w6F>nGLl[wakfFi8^8fXvL\udn~Үd-\mhZʉ]gӍh֜k<¦y-Óy:IwفDhnqunJn49rS:uYfMViLiRg}.tj_>ljSbsWdS`yޟpZEVUA)Iv9;>_$*BuBe47}M 1gVHyDE8?,X9I!MW5/&@"AG1"-..9$xi' menge(g\i7bHfqax\FZx_x[?wYbra3]_YaXWu]}W\sWP\wYeWSnsv kHqhBkL1GE$~=C)1|wU12V0JO#bX#6M".Dbk`Wq"a)q"j%mAfsm$r.]aSSi"Z+ia%cKaif$j.guVZz"g$~p y>i ~r0K maO!q+OuiEeXH'gIRy5P-)l?6oIAF77=p0:m(8zCtNÒgu@t?Q=D#`_:S)7ZJX"k>Oֆ)Dׂ:zNDlF(:4!j+vEG=-XF+qܺ0eΝAaL7:!O/837halu08$ :_+ 0-Oݏ_oLIBArc<$X!#e'2E :?4*N:$] Qє)>Β^ǙHv7 FsVx08ZXKZoPogJnJTT"(stand034Ռ0s̘7u#xmx%qpis^zRʅLЕZamquiɵD{֡=w'[ܽt Tn'izW۩qŻyc /=5lrlyvUEu[n{p9q){iFw_Ft{>g]`Rb${)n-h$s|1udt8vmu81{|!w{ҌC^s6uÌJ$579{ ;wp}{}SfQŽYw6F>kGLmZw`jhFj8_8fWvL[tcm}аe-]mhZʊ^gҏiԞla&)ByAe87}Q1iZHyF E:@,Z9I#MX5/'@"BF1"-1,9&xj' UL%bno8XH&J~z \yD7JQKDwCV_I@'Xpq^6r\UhS\hUnyqAyryu>NnMnNrQf{LxT\Ts\RX`PqWSxR\SZS[U\ךVn|_YyXRvcbaQx]Vtc{da"ycm>nhpqfIjZk8cHiqd^E\xc]Cv[fwc3_d_i^sc{]aq\Wax]eZTpsx mIskBnP.GI =G&7~wX0 Y.JT!p]"7R )Jgl`\s"e'rn#nAlu;q"t/ccRXj^'je!dKgkk"k.mwT_|"k$t z>o v0RoaTs+UwiLg[L"hIWz.W 2"mC0oIBD4::p38n+5h?tIÑcq&XRkstand035Ì׎h\`P`$|)o-g v{1zc;u8rjw91x|"vz:A[s6u8H$5F9y ;yo|||SdMþUx7F>hLmZw`ij~?l8a9gVvMZrcl}βf#]mh[ʌ_gёkҠm:Lc()B|@e<7}U0a_GkH!E;@$[8I%MZ5/(?"DF2,4+9(xl' PjOjPnUb{LtV~^Qh_PXdNs[PxUY{VVVXVXךZjdVj\Ovg`eOzaSvfxe`zdp>oirqhIlZm8eHkqgaE_xf_Dw]iwf3bhchbsgzagq_ex`e^Trsz pIvmBpXS,ON=K%=x\0-\-JX pa"7V*Pmn`ati%sr!oAqw;v"u/ieR]kb#kjfKml:o l*syTe~"o$y {>u {/YqbYt+]ziSi[QiI\|.^ 7nG+pIDB4<7p66n.2h;uC‘^m8tBN+;%XW >:4-F<&T GД.6ΒUƙ<i?%>hLx62ZZHZpNoiHn\;:$stand036ŎnؐUfTfTi|[_}OnWzgPhhPXmOgdNz]Vv^T]U]Vך_glVjfNwn`nOkiSwhwd^{er>pktqjLnZp:gHlqicEaxhaDx_kwi4djehcshzbgqafxbe`Tur} sKypBsXW,OSLO$C x^1-`.J] de#7[*Vsp`gvn%uw"qKwy;z#v*ogYcmg"logKso:tn*y{Tjs&}"}>{"/atb^v(d}pZk[WjIa~)e=pL&qIFB4?6d86n10h!7u?‘Zi4tCM+8&US=O*:SH!J~#^BGՆ09ׂ&.zR?nR&=3IM4Ķ-Zݾ3EϡCaO4;!R-;) 9halu08! :_+ 0-Oٗd8MIBBrۥg0'K!%Y'8< A84/B<'Q CЏ03{Pƙ7bD':hHx90Z[GZqNoiHo[`&şrstand037}Ǐnڒht|Xe`FSs{`qޟaCQXK)&|G8Lg2'B%=eD6x\.aiEkK'EVT)J)YkM8JVOD~JTcP@ +Tp~g4gV{Zcz[8||H||:{LZcZcYf}b^xSkXw|qTirTXwTgnQzfVwgUfVfW֠dgtZlpQztcxTkrWwixbZ{gu>olvqlLpZs:iHnke6bxicDy`mwl4fk~fhdsh{cgraWgwdeaTwrЀ uK|tDuXZ-OWLS'I ya4c0Ja#oi'4` ,[ys^myr'v{$sK}|1~'x%uiYiol"ntiKyq:y!o*~}Tpw*'>(/hwpdx(kpbn\]lIf*lDrQ%rHGC4A6d:7n30h#5u<We3uCM+ 6'SQ=P*:RH"G~#[CFՆ28ւ),hT@nU(+5GM#0Ÿ-Z4EϤEbQ4;!S-<)!9halu08! :_+ 0-Oלe8MIBBrتi0(I%V :; C831A<(N !@ϗ32{Mƙ3\H߈)8h Ex;/\[H\pP6jIo;nYaԇz\oy\dhWgGc%r:pbO͋=g=?J> bstand038xȐnz۔ٕSRiufåbuͷFiߤ=c'I_"C[ \sFܬaüXd Qu y2t+5ipnriXpgzn_k)Ln:bmmxqoLrZu:kK~ol}g6dwidFyanwo5ik~fhdWrh{basaWgwfebVzrт xK~wDxX].O[LV(O yc7#e2Je&6l*4d#,`u^r{u)x'uK~1*z%|lYorp#pzkK~t<}#q,Ttz.+>;-%ozdiz(rojqZbnGk*r KtU#tHHC4C5d;86/i&3u8tTbʎ!0uDM+"4'Q N=O,:QH#C~#XDEՆ45ւ,*hU@nX+1I-}Q=+8C~M',Ź.Z5EϦFb߾S9;!S-=.!9halu07! :_+ 0-Oԟg8MHBBrխk0)F%S <9 E732><)K #<ϗ50{Jř.VLߊ+5h"Bz>.\[H\pQ6jIo:kY`ԇy]ox]dgWaGb$o9nbN̋F=^J=!I>{d@ޢ2 stand039sɒnuܕ;]؛9f#~Ёh/mwYɄqJɗsE܆9ܖOMfvbťbpηFd=] DY">U W¥s@ܬ\üX_ Lpׅs2n+}5honp5oufo4h8j8gEX kGz=z5{%d +LmrUFSk `Vp ~2~9bX9 hyp"pz89O~w7{w8>t .F5m N|WP)&}Q7Ii:&@0;DK5xb,aqCmM+F=H$_?I*S^</+EFM3%1 @/:0!zo. <[ bo,@] J*tI YKZ5EN?VP(=\8~DU[,I2WkR;JWREQRdV@ 7Qdz)zVnBn9xGx0u&fbfbdeyoaz]fr[p}cdc]eb^mw^hx^[x_xaXmijf^i|meodiiy\Syk{?kn{qq+sZx8mK{qm}i6fuj}fFycorr5l}k|fgdWrg}|bataRgrhEdH|r҅ {LyD{X`/S_(X*T yd8g4Jg(8n-4g$,dx^v}y*z)wK1-|$oYttu#r~mKw<%t,`x|1/K;2%v}dm|&w oquahqGo,vQ vZ uHIB3E4d<78-i(/w4tP]ʎ#-uDL,$1{'M K=N,:NH$?~#TDBԆ62Ղ/'hU?nY,1K0}S<+:@}O+(Ź.Z6EͨGbT9<"T#>."9hau/7! :_+ 0-Oѡh8MHBCrѯl0*B%O >7 F533;<)G $8Η7-{EŚ)OPފ-2i#>z@,\ZG\oQ6jIo9hX^Ӈx_ow]EgWaF`"l7kbM̋#===%H>& e stand040mʓlpܗ;Wٜ9a-yуh/jxT̄qD˗sA߆4ݖLGbw]ƥbkϸC_=X >T9O Sås;ܭW½XZ Hl؅n2i+y5fmom5owf{3u9v9tFU hG+5v%`"{,(hM|VCPc"[Rk29]T9 dxk"ny96K|w7yw9;o {.F5j1|)XjwdoZLLx|VR)|T7Ii=%@3:DN5yd+ctBmN,F|D}Xa/Sb(Z*Y ye:h5Ji)8p/5i%'g {^z{+|*yK 2/~$r]xwx"tpKy1&v,!`{ }42K$16#{oq&| owxalsGr ,zW xX^wHIA3F2E=6:+i),w/tKXʎ%)uCJ,&-t(J G=M,9LO%:#OE@Ԇ7/Ո1#hV=nZ-2M 3}U;+<<}O.#Ź/Z7E̩HbU5;"U#>*"9hauu/7! :_+ 0-Oͣj:MGBCq̱m2+=%J ?4 H3348<)C %4Η9*v@Ě!$HِT݊/.i$9zB)cZF\oP6iHo8eلW\Ӈw_8v]EfVaD^!h6hbLˋ#>/=y'>l܌U-ſrun001IŨcKܥUbJM&3ʥb.M!=z\mBU҄BU!'ϻyػ^Hr〔iuοgmفС213*IucHՆT)49C+ғM(.#ў $'ڠH1˒סӏɍ 2z|4eY59/`m"@ 0U@~p"w=VJ?>dr}W[~USƶsRkg]|yv lnKzPYdkbW}T nXemfmpXxSiY7Y)q$r3d6w;9mmr~oiq6oW giHs'YTB=[>+pkyZ(~߀y` ts'gXKNnC4\sAUf/oi`:A|zG$V,TVn,(unOjhsTNBf{yGEifyJRHXVzbM^iC,bQMVQB,Y1Z5h,GKx8xy:mE}c[m{H6*OA52l۟lnmkmmnspy~F~`Dvdpis\sЌz\qly8sb|6{b~҂~Ʉ{ܳ"̓P˻-mП"h ˓_֨íklȝT Χòl ϩSԲlÑVǛykéȲk W-m1ԕL$ɒ1ȌA#ŌW,h5P$0 D>T34<=."1'r^&{6v8pV1{/@u h]r(n'gV%p.2m4|Y.EF|H:0M$|E!}7tcrN*'" ~q{NC&4A/=!fik&{:gF}q,$A = 釰7 ;5%8e@D2/;7|)~u>1gL&^c;ao5A94"^>'I'H2F"k<a< r&}3?'0@#"O:O_I+I/:-9OKDLLERGPPIkKL(-17'+*+0x#ku $4fp)`;qN`Ef_<\FyV7\`NqQwT|Z|KC!>N=?>{OKe[run002^ěidՖfsߦ@hIM˓mNH?NϬhϲkSbY"i$?ۡ~Ҭ\߳VG z ̱hx–214)&ȴJwcH҈`)49C+ϕM(.#С $'أ떺H0˘֣Ҕɒ܎ޗ 2|4qg44.ky"_ 0y`{_| =WV>Aey}i|{UP}Vkr`{zv7o zOzTgfseu]$gagwgvh`xyYa_F`=u,s3p6<4mtw{sgrE{-f m u}~ fyPSlN|q>+xk~Z(̆ӀʐC ˈ_%~I.ed9SĐzBǀf3܍9̖0ǐ2̅`,֌+җ+ٍT'8;~U3ʄ%%Ņ"ˉ"̕"Ќ ْ-/|X*KjQͅ>FĀRCF|WLz5P%M5C"/&0\!.-V**5[~V)',X+>=V5.E' EM7aQ'&#rSKI?@9>-^&h$y:|QhO~ u75ʐIK6酸N1J486&bJD8%'18G}-~v=:gL1_]CajAAy{$׿run003N͢eQ>[KJ':՘p6&4sRƽi1}D́3G!Ѧxrۼ_Ggv} [nξa`փW 5% LneŽL~U=44C*ϋM(.#̖"''ԘO ĉ֚ӈDž 2|4na5:2kx"}C1|@}C|~Ӑ} )JK3?p{|Wc|u͍~BVĵM}~Qhn[{ytElyHzNabpa~U,WdaVwRgX7Y3q%r<\oo셛cigpox-` iqmM|x ajQJlEl[K+hkqZ(uꀛ= Q,4LgICQ2s`/fHFa!3#!&n-t$Crx"{]<{js 0`dJf `jmw[]gu0jh3xm$Us:YfvNNxIhiYS}wXigWXe6,NA3ߛ/ݛeefmgmfsiyxFx`|fpdiim\m׌s]klu8nbw:{Evbx{|| 4߃SΡx9ώi"߉+ʏg1ނCᐜ ˕hȍl؄JٌʔkڍH۔&Ȇk,}H؂z~Y ̈́ÎzψRЏzh"tTy>҇mA+7݂Gނ=:|TAҁg@Q/7~nNJV?4I+:-1@s_:{JwOrHH}-Vx"7h]2q>n@hO>q/In JT@V[GN0`!${F3{+7rc(oN: 1x[)vN>(-C*5eiz!Α3~ gBxw* >"7͍ꉛ/2<匰 d9E8-!;j?, rYEsg7`DZ=UaL!J'k;GD1_5?hr/%bF/KTT1LYX8B -fO,K/%+FID}\ubq`vWyK> '(/,"/$2wkڡ9ep!_7[J_@eW;U7T6X`KZ}Nw}OuWΑDF>t=(>'\JYЦrun004LҲfPA\KK$8ܩb55sRi4}Gށ7K"׺xrUGi y~^n\b烉ޚ ;5/ IsfIӀT)}4~5}C*ϋ(.#Δ"$'֕H1dž֖҅ǂ 2~4fZ nQq"Av󆴠ut}Q\~tێ@VĞyvUhg_{v+w4j5oMzOZeaeʹ$¤ G`”p͇pЕЧ2Z6h틋^hho)Qp9a5sjipk'k\h>pmlAjuK+ghr[(sGu/nl8IS^$JvD4_:55zL:'\a,=h6[?#x!!@~& {@y-n%:m=V&|3H@~G#zUs0OAdUqJPG:?@ Gw?;]RV4PHCcP'AW6xMU|P)3蔕B=5S=ݒZBQ29~nOKVA4K+=11Cr_=yMuRpHK|-Xv";g`5oAlCfOBp/Lm M~TCX]~GQ2b!)yF6y07pe+mN= 6v[,uN@&2>-)!Di h{,ꀒ gBxs(|>"7ˍ䇨*녽65!8e@D:-$ j?, rgh]fviærCf"v']KDBrQmH8rb8bGblZq}lZqsQ'Z(_I'I+OZ+Kb8(HbI8ڕ7yڦ)!$,4'%*#2w kס%9Dd'_@XWTLfR;YFXEaRR[|PwF|wW{MC~>=F8>έ9Orun005^ǿca޽@pJa&KιpIG9NzimQbSe!=˃^H~vgy큘u2;3*I^IԏT)44C+њ(.#Ң"$'٤H”<Βڤב͏ 24rg5-rzJ~8|QiUO\ksg{x>9l4xUxQogmlot n~qu|l;/$0cEp:qmY|?B6[4ni}}h{&f^|2mbC{K+shҀ[(~BM:&aKHKN/7@h!Ne5JxG @aTXk7#)D)E+$-LT7D*?25LE'5~.)O!1zA: 30 c9:V8 6/nv$@lF;aFyQcI~1oobDlD%^n(lk>8_DSXfSiNUR |+ep*NA5ڞ/p۟pڌpmqmqgryF`D|duiy\yЌ]ul8zb:Ebׄ΅{*AѧR1ȃGIJm4֯=öh>Ц_.ܷ7ǽk.·l.έU(Ե(ȿl'շS"ھ7j8ȣV/ͫ$z"¬WƱ yʵϼ-z-Y'JĪmM٫LBΦỌ>CʠWJsAP1:~PKVA4K+=12?}_:JN{HI-V"5t]0|sO>|/HyK`BX\GQ2b!$F3-9~e%zN; 5 ['NE&9K0(%Ba h}-灚gEx}&|?"<̎ދ.;>5)7fJB;-$ j>*reFk~K9wbСd5ƨ9ĹU'עD+x.sRZw@VĞz»r]keh{)9s0kVxWWpbnn krqWmwrp{+rh~\(~VgJ~_KI_L=V3F_M TzZ&B\uThR,7NHV=4G)8+ 6t_3|DvGqH@~-Ow +j](r6n6hH4s/An C`:RUHI2\!~7,|$9ueoN5'- y[$vOG&7A2+$Bi h!{0끐gHxr,!|C"=ˍ㇫/녾;5%8eFD9-" >&-Q r?m6DSpMC7L'2K#7wz$ktay`vrg&}|F}e$tBr!:_+0-^OȻm4UZ][yk+$(19')*'2w#k֡*4fd+`F_TS_Z:bF{a7jRZ[~WwM|z_{UC=6=^G>=Khɜ attack001`Ȕlcۘ;Iٝ4T-nЄhu/_zF̅q5ʘs2$ݗ>8VxPƥe^θCQ=J /E*@ E¥s,ۮJXL :`؅b2\+n.]iԌd<_u؊)~55~?I Y(|.g!Qm'v'QcR7DSNE~^ u u}9QF}5{;w Ww^"eu:*?st7pt9.c p.|?{5_1q<~oc}yRH~)2nz4vCoLDh(bYhPb{wz)}w9{m5]SzyVFhPeyj`kgP^eirt1} :`؈/ri[ri{nei*Rl+PezWlr}(Cq|MN)uR6Ia:%J19DF4y]+coAmD'F2D$W:IOU7/ ?~DXT.SX &M)W T:"Z5J],9c3.^''_ !~fs q.}|/zK)-|6 u^tzq#v}!rJ|2|*x'*`s&p:{;K02{@!z 8ky:y}bivOi#'tS|ZRxO44L>,F(!9.d$zx3 K̒z*: x $ )4+BN&1؄E?> <.և4pO=oG,-D 07,& Q#r¸/Z87ȨIbV5;"U#?*#9hauu/6! :_+ 0-Oǣk:LGBCqƱn2)6<?4F5+54.$82')v='̃/ɡ4#1~f!:3'p",lD(cQ@\fK6aCo-^لNV҇o\8nZE]Ra:Xa*bYFˋ>=-<>©>!attack002ƌؐ {ڑ<#k-oMwqpɈssuWbف{{o"mX{˝6yֲ3x*g SҭZI˿j tŚg[ؘgð^VPkg k%y5Tt̊`;Yb`-d _ h_ i.~E~9c tȋwvogmTNtHįFm|7wC{>Tn(_ahRjxs*vx9vux2^\ywq`Mpr[mii\c_RZXeirt y{ 8z͂5yb\lixoo/]s |o} i[Ord&]YRLr~G_f.d%GxwO|g^%AۗsX-]=IF*A>@Dn#8z)/c(Hmo3F`N$}EIRX|B/RIfR8N6!c4>|W' z4 p.n: x^jj&t%Kt$ q.'p0fc,a?k?Lk6 hE!k:a!&gm pdJ])'_#QiPV26C4=6%#:'"n2D|Qsx,8ìKp[<;"VD/'<hau,2!! :_+ 0-OmIA<@qp "`aM2W!9R>*\.`-U{.KʀV!doIJ &QlUƉ4FiFOZXRnPNm.}Diɉid8h_d[[gBg"7rPIVÈ)=E>߱G>bU=_attack003u•lyҚ]֟H"=:Kcc9@9}n5m;g JtN_9$א1l4i9(R ^.k3i.Q1`ŊE[G*SK&A%M G5L1JP(9U/)R$'T t"fe b-l/}Ks(-l4 uw^f|b#xm#uHt!~2m*z t*`e%a6l8Is.2k),C/.6{A0́;˖@9 Hk*:83p(8lF.aXNcj\7gT6/aքPaЋ]g8jeDX]a5`]%g^V:j7=HY={T>KB|attack004i}m5D2),$7!ze' [39Q?KS(/]6i8WG G}$Xk=.H~CGDlEVRL@ +Sd^.^VQCQ9mGm0n'vBvBlsDz@kmErgM}E6E^He?p>h@[@⊌D]zGjF>iLGoEitWf_^bc=>bd~IJ7I>jVFPGBN(T{P~ZyG<5?H@|7|g?x@MwFwaQt@+&p/B@I :e71i8B4SJ&&=*IlB>H=D!"8&bz}1CҎw*8' x0-: 18M.!ڄ&9I)ԅB֊2 iV(pA/-=;'j+7* ,a67DbR<7"OZDI!YÕ7Td/ˌJ=t=ZS>)K|attack005ghly4POF^Vnxz{H=qaxmdCL"C/ օţ:ÜE9VmjF[`HFBdC6Bc5iIQ>O7b.u,b=[Lr&YVuq%h o`2RhMG+&oCw@۠BlJϚEy=n8sB@i@sR`ixHT0imT>|6fy<}/>^sCv6|)nu1SnEr7mk?N~/!o(o8j,g2fFd9a@v'zyr 6?0-\1 &h/66Q7%I53.j>A#>;TA/6H4??+(A;R]GG.O+JY!0T1,JX@>$FVQ5L'(["YO#R8Z4Jb&<`9,Gd>GNo>Z2OC%(S $$O9@BF1c!;p%/g)3}19/VCd4}6KI6|TSS(GNNO@QVg:[/='zj3i<4.2&$CID*-Z76EbͽS9:"Q#=."9halu-4! :_+ 0-Oe8IC=?qh0QB#FQ'\32^/CX9FMH]zsLattack006RNlZ7;~6EKVyh|{mKz?wRulydCMªL"C}- مƣ<ȕE8Sme7Z_>E8d8p:fY;\6g8r)+K !.O9HBB7a!Gp#:s%>}-B|/_CjC{7TLH| d`$_(FTOIDOY`rg0LF#DW'T52V2CP<7HM:A@I/~9QP,7_bnE6s=GyK,؟Y@r=bo7ilazKي|LoLbtKgZYFy֓Reėt:n=y3=P>PF#attack007bj˃5P|X5gHrQI*ayn9=(z+tڅ14:Xpm9d^p.kq9T5kWg~[i&bLg/rl_5kto=y*Vw\qu,wd|QG*&tD;La/(B{ ?e<5xU.a_EkF#76B$X:I!NW6/$@=F2,1(8&zi( r3.S]SoSiSmUsTzeDe_gD]oWi[^[8a]Vl^:Zd_e8ab`~c|we{Q{J8dV@v?D|[W X(9PO4@9UQ:ڋA.ވ))zX4m:30,' $*CLJN2,Zտ5EâDbӹQ9:!Q-<.!9halu-5! :_+ 0-OÚd8ID>?règ08B#1R'E3 J/C?976I<.:ݎ;+|&K֔8(XVn51s+Ay?([R?[k@bg9iVakNՊvPo~ObjLgLY2t͓Aei~XF_ӡ attack008yХ-ƝxԱ/̼GruRɖ֔؞!Xm8ʲ.׽$cμs J۬'svΫlWbUvۆt /3vMs*r}d]ycoydpgmlbgjeytCw_{Fq6jpmcj8~n]}jlt:pduz8udps`tYr{ݱ(旟7ͥWғs堓*ِg痜᧋=ڗZ뜊q󡑅爫ߡ뤆;魀M鐒q OdAߚ}b{Aq8>؏r؝撡?ۊ芢o܇[E2SE!I?.;jJօ3/؈$%hN9pA104#7=L@N'-Z6EEbξS9:"R-=.!9halu.5! :_+ 0-Of8KE?@rj0'?M 94 @2?089$E16ԏ1+}D̛#&NN ܊(/g.pain001ʵԭǰwű ўIqɠrՓT◝& ʽ]ĵm:0%`Nj >ē,Űqy멝eսWPA^ڄ^x0r1czni0hCsh:tapcwa6O b+vr5jp_2Z$j/t}.f,zw>=GR#AAL_s ;3zC <bA@ i?tY]i0X^3j_(Lk:R^9N?ckIO~dLa]jH"G_ovz1wzKxmFymi(i e,PfRPgyNiuS_sPpڠs;&q/_T}e%e `Kh:"g/uUy'|$x>#2ykbwn,{tpub\raIxv.yYeWg)hIVH4J6dL=nC3i/6u ;'[e07RT*5@>_/XRX*CTK#C~#YCD͆22ʂ0)hW@nc';R8${fBy)PQsG;Yo=b@>oo4pain002hQq $]We!u{;ukrxXjmyf:.okhpԃgׄ ~*nUrLEʸ.prU[VDQRn \[lna<]mFXJWDlSFjZCpIZ{)[O:ORMh T%Xd1_[<^w.hWF8DG|-6|<":nEXx 04}0^ p;sTgx9Fx}9}?x(Vt(v\hgf{y*z(O)A=>D(4z.,c&DmAFt_$UIbkR/cZ {\8^E!u:<|h5zC <bA@! !R?tYRb0NU3_Y(Cc:HX{4K7\mBN~\LVWbG"?V6bYbX>`MdaMۈ[m)[nYp/=\S>\v<_ט;SݡCfP,lXHiXI_WGaOEsFL؟ML]MMx[P`4Yt@IzFCq8PxQEhLIq0g|/x7hs HkfhPS QtuH]z\osTp^JxTp_g]Wpai:FvqAJPe^FdM`Z]^Q`{[]8sr5hWn$X0aESW#M^/Nd+HKdLi(O0iYV\_!h!dp^>jbnrf1P OaS"V*SWaKFYN,K(V^5Sc7+PH6ULF@4#O$2. :*4*4:$E7+'H$W7j#.g>w3#\[CclM8eEo0cNZLJ^t\6hUaJ][%h=PD>>L)͞Jpain003wĔ #tјt4qq|cV?+ha{jqч;{*cOi'?œ+xrzS[PNAUT o2b Wcn^z0_pCrl0ug:rf:wi4I X{(qt*ilnqU.RW|s,L.[kl9NqPKKV{UF!4Udm{2m{Gsr?sr<]] Z!XYYXYmUZg]UgSaXFVwrg7rg@sgDo^dgZaj_^j_nnj`VThgXmXb_Wqbol`bL[@b|=j푢e0xo儝_aziןh^s{l吖eⅎ`q[YY~X9XWYW4Yq{d`9QRJuJpNYKxLn}MqzURsk[u{tnipޔninfgH(tMBq=A~4owO*| P(uJLwbSw7Kt*E w\[`SbZ$ba!]K`d;d c/XQROYT$YZ SK\Y^ Z.afVVl"_ pgj>c pir0K]aLb+NgiFUXEWIOk.Ps1\?)_I>=47.d25n,-g1u4PX2~#SEBц61т/'hW@nY,1I -}T>|+;EwO).y̾7Z>E׮Pb\5C"\#E*(9!hZlu!t8#?&!f=0-Oޫr:VQLLrܹv2+A&O >6 G534:<*G %8ʗ8-{F'NQي.1i#>zA+\^KcrV6lMo7iWaч~f8yd6j\aHc"l9lcQʋL==G>|Ub pain005eycN ]ɮs ß&j\Kq^TAPaМF̞"`M890B%% Ė2ȨIi)#[АЀ!2hz0U!VL9==>4KN/32@z{/19~ܡ=Q3lGnw7rvEoLih=}~5o%EAs,m ZNwWGb/8[}({m*j/A[HS$N(E$? @-u4czQso(og,P&6,?~oomgsyx'{)}*|bmv5^bwdgzg^hisgX^qjou1tx| ^X IWۉr}j\tp~:b'}c)x*ks_u`me_kd8~U`h<4ay9]?6UkmA])fr3ZW!O^0A[).mh:#f?7dF3?0G Z>I$SY;2">:M4#+ |I070 kk- \:*[~58^+R&&83J+53)' &f#03H.-9 z^${%xH$--} 0_)<>I52C!99e|O$'ZO5=*F$<drhfxY/U3{ps;pvf)_)x7 t=Hg(؁`5A }&؇|pI9)- .(#S~6p>5Q8X/2M"<$$0marw/q-" :_+ 0-Op1C>@rFiok-`5-/+w,/h1 j!u!x_)Ƞl>&~v pf%l#e[Cs)k.YLڄpe {.)nFkRcO6q[H[f2`= =p I>d @~pain006``F2Vɣ|z\Z?sLY0Sˑ:ǘw]H8;.=,# ˑ+ǥBi#&!$9-k{0Z$\LCH"G"H7 PM8;8D{58=ݡER4tJuv:{I}OskB=n*A0?&E Q<IPP92=1J5) |>,7&kc+ I52D!7M9e}O%'ZO5=)Fw$9zdkh`xR/N4{fsv;ev[*U)n7 n?rDing-[4~,.+s+/c0 f!u} xZ(ˠj:%~qpa$l"cVBn)f3WP݄qe1t3|=hEeOcG8rTH[d0]==H>{M3f\pain007[] @0OК#rky%jMJg2z6WẢ/̕"aXH6H3?Ȩ+-η Ӓ+Х>h/!@ 87,R/qv9g%lCjp'p$pIC^H_c UPSXLߗ`R:Q}|MZW~]cq.B9t)n1aH{Ho.7o~6w=v.5jN[,fLb*U2]/t7\|}PEsƗ$m=dKN/Os`p^_wv{(y3{x.lVkc9L_uSa~j"_llsiW_hpt;u ~ Y\ދFev|l\up~xf,fh5s|.chbrvdaYcTiomEewkM`nvom~ed\ry:V*cc5&SI#H}H5CF1kZ+'cp,-J5) |4)9z_* zq~v:xM}wvx9qNq1O{{ziv`}stsbnUZ9~Lr?7[*R&%l72J(90)$ !f-/~H(-5 x]~#z"vH/*{ *`$8:I.1>! 78b{O!' [Oj5=o&F\'9`bRsIx=2:9|Js`<'Fv?1=.U< Z:OQ%݁J6p9 h ܊`p=7~(2u\s0(X(NR 3b<9NoY06Q>%$<karu/1" :_+ 0-OoE8XOpain008\l^њ CӜ5P#nňkuڊ/c{Gq1•s3Ճ Ԓ>3"ZyXI¥dQ̹?Gݦ+9 ̾0ώ4 ?g!ҩ:X3%L J G,]._q8_/dBx,~.{/=? XGqm%W"I\fNݜnV0@EF@~Rfs5IAy5v;n RwUd~9'}ڐ3r4o9+|Y"g*p?m.U d1z8`yPF(l3l>^I8[&hahTfuzy+{4|x~5cZz~a:HktRjyk!`~khW_hpt;u2~ ?aه0o~j[si}tg*aj5q|0jk_{ubf]_OknlHcwyIr'Vmh^vbqDs}GX)p`5&]H$JB6BI!3y^*)cr*?mB1F-K$TBIUS>/E8P42 |919|%#ze1